commit 1a14c5a7c9968a929fe00be01a66f10eccb0af95 Author: root Date: Mon Feb 11 00:05:48 2019 +0100 initial commit diff --git a/riot/bundles/f5c70ee9a294f6e4590e/7.js b/riot/bundles/f5c70ee9a294f6e4590e/7.js new file mode 100644 index 0000000..626355d --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/7.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{741:function(e,t,n){"use strict";var l=c(n(65)),r=c(n(1)),i=n(2);function c(e){return e&&e.__esModule?e:{default:e}}var a=n(0),o=n(3),d=n(8);e.exports=a.createClass({displayName:"EncryptedEventDialog",propTypes:{event:r.default.object.isRequired,onFinished:r.default.func.isRequired},getInitialState:function(){return{device:null}},componentWillMount:function(){var e=this;this._unmounted=!1;var t=d.get();this.refreshDevice().then(function(n){return n||t.downloadKeys([e.props.event.getSender()],!0).then(function(){return e.refreshDevice()})}).then(function(n){e._unmounted||(e.setState({device:n}),t.on("deviceVerificationChanged",e.onDeviceVerificationChanged))},function(e){console.log("Error downloading devices",e)})},componentWillUnmount:function(){this._unmounted=!0;var e=d.get();e&&e.removeListener("deviceVerificationChanged",this.onDeviceVerificationChanged)},refreshDevice:function(){return l.default.resolve(d.get().getEventSenderDeviceInfo(this.props.event))},onDeviceVerificationChanged:function(e,t){var n=this;e==this.props.event.getSender()&&this.refreshDevice().then(function(e){n.setState({device:e})})},onKeyDown:function(e){27===e.keyCode&&(e.stopPropagation(),e.preventDefault(),this.props.onFinished(!1))},_renderDeviceInfo:function(){var e=this.state.device;if(!e)return a.createElement("i",null,(0,i._t)("unknown device"));var t=a.createElement("b",null,(0,i._t)("NOT verified"));return e.isBlocked()?t=a.createElement("b",null,(0,i._t)("Blacklisted")):e.isVerified()&&(t=(0,i._t)("verified")),a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Name")),a.createElement("td",null,e.getDisplayName())),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Device ID")),a.createElement("td",null,a.createElement("code",null,e.deviceId))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Verification")),a.createElement("td",null,t)),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Ed25519 fingerprint")),a.createElement("td",null,a.createElement("code",null,e.getFingerprint())))))},_renderEventInfo:function(){var e=this.props.event;return a.createElement("table",null,a.createElement("tbody",null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("User ID")),a.createElement("td",null,e.getSender())),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Curve25519 identity key")),a.createElement("td",null,a.createElement("code",null,e.getSenderKey()||a.createElement("i",null,(0,i._t)("none"))))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Claimed Ed25519 fingerprint key")),a.createElement("td",null,a.createElement("code",null,e.getKeysClaimed().ed25519||a.createElement("i",null,(0,i._t)("none"))))),a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Algorithm")),a.createElement("td",null,e.getWireContent().algorithm||a.createElement("i",null,(0,i._t)("unencrypted")))),"m.bad.encrypted"===e.getContent().msgtype?a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Decryption error")),a.createElement("td",null,e.getContent().body)):null,a.createElement("tr",null,a.createElement("td",null,(0,i._t)("Session ID")),a.createElement("td",null,a.createElement("code",null,e.getWireContent().session_id||a.createElement("i",null,(0,i._t)("none")))))))},render:function(){var e=o.getComponent("elements.DeviceVerifyButtons"),t=null;return this.state.device&&(t=a.createElement(e,{device:this.state.device,userId:this.props.event.getSender()})),a.createElement("div",{className:"mx_EncryptedEventDialog",onKeyDown:this.onKeyDown},a.createElement("div",{className:"mx_Dialog_title"},(0,i._t)("End-to-end encryption information")),a.createElement("div",{className:"mx_Dialog_content"},a.createElement("h4",null,(0,i._t)("Event information")),this._renderEventInfo(),a.createElement("h4",null,(0,i._t)("Sender device information")),this._renderDeviceInfo()),a.createElement("div",{className:"mx_Dialog_buttons"},a.createElement("button",{className:"mx_Dialog_primary",onClick:this.props.onFinished,autoFocus:!0},(0,i._t)("OK")),t))}})}}]); +//# sourceMappingURL=7.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/7.js.map b/riot/bundles/f5c70ee9a294f6e4590e/7.js.map new file mode 100644 index 0000000..3447097 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/7.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/matrix-react-sdk/lib/async-components/views/dialogs/EncryptedEventDialog.js"],"names":["_promise2","_interopRequireDefault","__webpack_require__","_propTypes2","_languageHandler","obj","__esModule","default","React","sdk","MatrixClientPeg","module","exports","createClass","displayName","propTypes","event","object","isRequired","onFinished","func","getInitialState","device","componentWillMount","_this","this","_unmounted","client","get","refreshDevice","then","dev","downloadKeys","props","getSender","setState","on","onDeviceVerificationChanged","err","console","log","componentWillUnmount","removeListener","resolve","getEventSenderDeviceInfo","userId","_this2","onKeyDown","e","keyCode","stopPropagation","preventDefault","_renderDeviceInfo","state","createElement","_t","verificationStatus","isBlocked","isVerified","getDisplayName","deviceId","getFingerprint","_renderEventInfo","getSenderKey","getKeysClaimed","ed25519","getWireContent","algorithm","getContent","msgtype","body","session_id","render","DeviceVerifyButtons","getComponent","buttons","className","onClick","autoFocus"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/7.js","sourcesContent":["'use strict';\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nmodule.exports = React.createClass({\n displayName: 'EncryptedEventDialog',\n\n propTypes: {\n event: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return { device: null };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n var client = MatrixClientPeg.get();\n\n // first try to load the device from our store.\n //\n this.refreshDevice().then(function (dev) {\n if (dev) {\n return dev;\n }\n\n // tell the client to try to refresh the device list for this user\n return client.downloadKeys([_this.props.event.getSender()], true).then(function () {\n return _this.refreshDevice();\n });\n }).then(function (dev) {\n if (_this._unmounted) {\n return;\n }\n\n _this.setState({ device: dev });\n client.on(\"deviceVerificationChanged\", _this.onDeviceVerificationChanged);\n }, function (err) {\n console.log(\"Error downloading devices\", err);\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n var client = MatrixClientPeg.get();\n if (client) {\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n }\n },\n\n refreshDevice: function refreshDevice() {\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n return _promise2.default.resolve(MatrixClientPeg.get().getEventSenderDeviceInfo(this.props.event));\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n var _this2 = this;\n\n if (userId == this.props.event.getSender()) {\n this.refreshDevice().then(function (dev) {\n _this2.setState({ device: dev });\n });\n }\n },\n\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 27) {\n // escape\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n }\n },\n\n _renderDeviceInfo: function _renderDeviceInfo() {\n var device = this.state.device;\n if (!device) {\n return React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('unknown device')\n );\n }\n\n var verificationStatus = React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('NOT verified')\n );\n if (device.isBlocked()) {\n verificationStatus = React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('Blacklisted')\n );\n } else if (device.isVerified()) {\n verificationStatus = (0, _languageHandler._t)('verified');\n }\n\n return React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Name')\n ),\n React.createElement(\n 'td',\n null,\n device.getDisplayName()\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Device ID')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n device.deviceId\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Verification')\n ),\n React.createElement(\n 'td',\n null,\n verificationStatus\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Ed25519 fingerprint')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n device.getFingerprint()\n )\n )\n )\n )\n );\n },\n\n _renderEventInfo: function _renderEventInfo() {\n var event = this.props.event;\n\n return React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('User ID')\n ),\n React.createElement(\n 'td',\n null,\n event.getSender()\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Curve25519 identity key')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getSenderKey() || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Claimed Ed25519 fingerprint key')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getKeysClaimed().ed25519 || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n ),\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Algorithm')\n ),\n React.createElement(\n 'td',\n null,\n event.getWireContent().algorithm || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('unencrypted')\n )\n )\n ),\n event.getContent().msgtype === 'm.bad.encrypted' ? React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Decryption error')\n ),\n React.createElement(\n 'td',\n null,\n event.getContent().body\n )\n ) : null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n (0, _languageHandler._t)('Session ID')\n ),\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'code',\n null,\n event.getWireContent().session_id || React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('none')\n )\n )\n )\n )\n )\n );\n },\n\n render: function render() {\n var DeviceVerifyButtons = sdk.getComponent('elements.DeviceVerifyButtons');\n\n var buttons = null;\n if (this.state.device) {\n buttons = React.createElement(DeviceVerifyButtons, { device: this.state.device,\n userId: this.props.event.getSender()\n });\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_EncryptedEventDialog', onKeyDown: this.onKeyDown },\n React.createElement(\n 'div',\n { className: 'mx_Dialog_title' },\n (0, _languageHandler._t)('End-to-end encryption information')\n ),\n React.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Event information')\n ),\n this._renderEventInfo(),\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Sender device information')\n ),\n this._renderDeviceInfo()\n ),\n React.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n React.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this.props.onFinished, autoFocus: true },\n (0, _languageHandler._t)('OK')\n ),\n buttons\n )\n );\n }\n});\n//# sourceMappingURL=EncryptedEventDialog.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/8.js b/riot/bundles/f5c70ee9a294f6e4590e/8.js new file mode 100644 index 0000000..1e19ecf --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/8.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{132:function(t,e,n){"use strict";var a="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var n=e.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(var a in n)i(n,a)&&(t[a]=n[a])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var r={arraySet:function(t,e,n,a,i){if(e.subarray&&t.subarray)t.set(e.subarray(n,n+a),i);else for(var r=0;r>10),56320+(1023&a)))}return e}(f)}},f.prototype={encode:function(t,e){t=t?String(t):"",e=i(e),this._streaming||(this._encoder=new function(t){t.fatal;this.handler=function(t,e){if(e===r)return o;if(a(e,0,127))return e;var n,i;a(e,128,2047)?(n=1,i=192):a(e,2048,65535)?(n=2,i=224):a(e,65536,1114111)&&(n=3,i=240);for(var s=[(e>>6*n)+i];n>0;){var h=e>>6*(n-1);s.push(128|63&h),n-=1}return s}}(this._options)),this._streaming=Boolean(e.stream);for(var n,h=[],l=new s(function(t){for(var e=String(t),n=e.length,a=0,i=[];a57343)i.push(r);else if(56320<=r&&r<=57343)i.push(65533);else if(55296<=r&&r<=56319)if(a===n-1)i.push(65533);else{var s=t.charCodeAt(a+1);if(56320<=s&&s<=57343){var o=1023&r,h=1023&s;i.push(65536+(o<<10)+h),a+=1}else i.push(65533)}a+=1}return i}(t));!l.endOfStream()&&(n=this._encoder.handler(l,l.read()))!==o;)Array.isArray(n)?h.push.apply(h,n):h.push(n);if(!this._streaming){for(;(n=this._encoder.handler(l,l.read()))!==o;)Array.isArray(n)?h.push.apply(h,n):h.push(n);this._encoder=null}return new Uint8Array(h)}}},487:function(t,e,n){"use strict";t.exports=function(t,e,n,a){for(var i=65535&t|0,r=t>>>16&65535|0,s=0;0!==n;){n-=s=n>2e3?2e3:n;do{r=r+(i=i+e[a++]|0)|0}while(--s);i%=65521,r%=65521}return i|r<<16|0}},488:function(t,e,n){"use strict";var a=function(){for(var t,e=[],n=0;n<256;n++){t=n;for(var a=0;a<8;a++)t=1&t?3988292384^t>>>1:t>>>1;e[n]=t}return e}();t.exports=function(t,e,n,i){var r=a,s=i+n;t^=-1;for(var o=i;o>>8^r[255&(t^e[o])];return-1^t}},489:function(t,e,n){"use strict";var a=n(132),i=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch(t){i=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){r=!1}for(var s=new a.Buf8(256),o=0;o<256;o++)s[o]=o>=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function h(t,e){if(e<65537&&(t.subarray&&r||!t.subarray&&i))return String.fromCharCode.apply(null,a.shrinkBuf(t,e));for(var n="",s=0;s>>6,e[s++]=128|63&n):n<65536?(e[s++]=224|n>>>12,e[s++]=128|n>>>6&63,e[s++]=128|63&n):(e[s++]=240|n>>>18,e[s++]=128|n>>>12&63,e[s++]=128|n>>>6&63,e[s++]=128|63&n);return e},e.buf2binstring=function(t){return h(t,t.length)},e.binstring2buf=function(t){for(var e=new a.Buf8(t.length),n=0,i=e.length;n4)l[a++]=65533,n+=r-1;else{for(i&=2===r?31:3===r?15:7;r>1&&n1?l[a++]=65533:i<65536?l[a++]=i:(i-=65536,l[a++]=55296|i>>10&1023,l[a++]=56320|1023&i)}return h(l,a)},e.utf8border=function(t,e){var n;for((e=e||t.length)>t.length&&(e=t.length),n=e-1;n>=0&&128==(192&t[n]);)n--;return n<0?e:0===n?e:n+s[t[n]]>e?n:e}},490:function(t,e,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},491:function(t,e,n){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},731:function(t,e,n){"use strict";var a={};(0,n(132).assign)(a,n(732),n(735),n(491)),t.exports=a},732:function(t,e,n){"use strict";var a=n(733),i=n(132),r=n(489),s=n(324),o=n(490),h=Object.prototype.toString,l=0,d=-1,f=0,u=8;function _(t){if(!(this instanceof _))return new _(t);this.options=i.assign({level:d,method:u,chunkSize:16384,windowBits:15,memLevel:8,strategy:f,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var n=a.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(n!==l)throw new Error(s[n]);if(e.header&&a.deflateSetHeader(this.strm,e.header),e.dictionary){var c;if(c="string"==typeof e.dictionary?r.string2buf(e.dictionary):"[object ArrayBuffer]"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(n=a.deflateSetDictionary(this.strm,c))!==l)throw new Error(s[n]);this._dict_set=!0}}function c(t,e){var n=new _(e);if(n.push(t,!0),n.err)throw n.msg||s[n.err];return n.result}_.prototype.push=function(t,e){var n,s,o=this.strm,d=this.options.chunkSize;if(this.ended)return!1;s=e===~~e?e:!0===e?4:0,"string"==typeof t?o.input=r.string2buf(t):"[object ArrayBuffer]"===h.call(t)?o.input=new Uint8Array(t):o.input=t,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new i.Buf8(d),o.next_out=0,o.avail_out=d),1!==(n=a.deflate(o,s))&&n!==l)return this.onEnd(n),this.ended=!0,!1;0!==o.avail_out&&(0!==o.avail_in||4!==s&&2!==s)||("string"===this.options.to?this.onData(r.buf2binstring(i.shrinkBuf(o.output,o.next_out))):this.onData(i.shrinkBuf(o.output,o.next_out)))}while((o.avail_in>0||0===o.avail_out)&&1!==n);return 4===s?(n=a.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===l):2!==s||(this.onEnd(l),o.avail_out=0,!0)},_.prototype.onData=function(t){this.chunks.push(t)},_.prototype.onEnd=function(t){t===l&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Deflate=_,e.deflate=c,e.deflateRaw=function(t,e){return(e=e||{}).raw=!0,c(t,e)},e.gzip=function(t,e){return(e=e||{}).gzip=!0,c(t,e)}},733:function(t,e,n){"use strict";var a,i=n(132),r=n(734),s=n(487),o=n(488),h=n(324),l=0,d=1,f=3,u=4,_=5,c=0,p=1,g=-2,w=-3,b=-5,m=-1,v=1,k=2,y=3,x=4,z=0,B=2,A=8,S=9,E=15,O=8,Z=286,C=30,N=19,R=2*Z+1,T=15,D=3,I=258,U=I+D+1,L=32,M=42,F=69,j=73,H=91,P=103,K=113,Y=666,X=1,G=2,W=3,q=4,J=3;function V(t,e){return t.msg=h[e],e}function Q(t){return(t<<1)-(t>4?9:0)}function $(t){for(var e=t.length;--e>=0;)t[e]=0}function tt(t){var e=t.state,n=e.pending;n>t.avail_out&&(n=t.avail_out),0!==n&&(i.arraySet(t.output,e.pending_buf,e.pending_out,n,t.next_out),t.next_out+=n,e.pending_out+=n,t.total_out+=n,t.avail_out-=n,e.pending-=n,0===e.pending&&(e.pending_out=0))}function et(t,e){r._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,tt(t.strm)}function nt(t,e){t.pending_buf[t.pending++]=e}function at(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function it(t,e,n,a){var r=t.avail_in;return r>a&&(r=a),0===r?0:(t.avail_in-=r,i.arraySet(e,t.input,t.next_in,r,n),1===t.state.wrap?t.adler=s(t.adler,e,r,n):2===t.state.wrap&&(t.adler=o(t.adler,e,r,n)),t.next_in+=r,t.total_in+=r,r)}function rt(t,e){var n,a,i=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-U?t.strstart-(t.w_size-U):0,l=t.window,d=t.w_mask,f=t.prev,u=t.strstart+I,_=l[r+s-1],c=l[r+s];t.prev_length>=t.good_match&&(i>>=2),o>t.lookahead&&(o=t.lookahead);do{if(l[(n=e)+s]===c&&l[n+s-1]===_&&l[n]===l[r]&&l[++n]===l[r+1]){r+=2,n++;do{}while(l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&l[++r]===l[++n]&&rs){if(t.match_start=e,s=a,a>=o)break;_=l[r+s-1],c=l[r+s]}}}while((e=f[e&d])>h&&0!=--i);return s<=t.lookahead?s:t.lookahead}function st(t){var e,n,a,r,s,o=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=o+(o-U)){i.arraySet(t.window,t.window,o,o,0),t.match_start-=o,t.strstart-=o,t.block_start-=o,e=n=t.hash_size;do{a=t.head[--e],t.head[e]=a>=o?a-o:0}while(--n);e=n=o;do{a=t.prev[--e],t.prev[e]=a>=o?a-o:0}while(--n);r+=o}if(0===t.strm.avail_in)break;if(n=it(t.strm,t.window,t.strstart+t.lookahead,r),t.lookahead+=n,t.lookahead+t.insert>=D)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<=D&&(t.ins_h=(t.ins_h<=D)if(a=r._tr_tally(t,t.strstart-t.match_start,t.match_length-D),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=D){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=D&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=D-1)),t.prev_length>=D&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-D,a=r._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-D),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=(t.ins_h<15&&(o=2,a-=16),r<1||r>S||n!==A||a<8||a>15||e<0||e>9||s<0||s>x)return V(t,g);8===a&&(a=9);var h=new function(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=A,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new i.Buf16(2*R),this.dyn_dtree=new i.Buf16(2*(2*C+1)),this.bl_tree=new i.Buf16(2*(2*N+1)),$(this.dyn_ltree),$(this.dyn_dtree),$(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new i.Buf16(T+1),this.heap=new i.Buf16(2*Z+1),$(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new i.Buf16(2*Z+1),$(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0};return t.state=h,h.strm=t,h.wrap=o,h.gzhead=null,h.w_bits=a,h.w_size=1<t.pending_buf_size-5&&(n=t.pending_buf_size-5);;){if(t.lookahead<=1){if(st(t),0===t.lookahead&&e===l)return X;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var a=t.block_start+n;if((0===t.strstart||t.strstart>=a)&&(t.lookahead=t.strstart-a,t.strstart=a,et(t,!1),0===t.strm.avail_out))return X;if(t.strstart-t.block_start>=t.w_size-U&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):(t.strstart>t.block_start&&(et(t,!1),t.strm.avail_out),X)}),new lt(4,4,8,4,ot),new lt(4,5,16,8,ot),new lt(4,6,32,32,ot),new lt(4,4,16,16,ht),new lt(8,16,32,32,ht),new lt(8,16,128,128,ht),new lt(8,32,128,256,ht),new lt(32,128,258,1024,ht),new lt(32,258,258,4096,ht)],e.deflateInit=function(t,e){return ut(t,e,A,E,O,z)},e.deflateInit2=ut,e.deflateReset=ft,e.deflateResetKeep=dt,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=e,c):g},e.deflate=function(t,e){var n,i,s,h;if(!t||!t.state||e>_||e<0)return t?V(t,g):g;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||i.status===Y&&e!==u)return V(t,0===t.avail_out?b:g);if(i.strm=t,n=i.last_flush,i.last_flush=e,i.status===M)if(2===i.wrap)t.adler=0,nt(i,31),nt(i,139),nt(i,8),i.gzhead?(nt(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),nt(i,255&i.gzhead.time),nt(i,i.gzhead.time>>8&255),nt(i,i.gzhead.time>>16&255),nt(i,i.gzhead.time>>24&255),nt(i,9===i.level?2:i.strategy>=k||i.level<2?4:0),nt(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(nt(i,255&i.gzhead.extra.length),nt(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=o(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=F):(nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,0),nt(i,9===i.level?2:i.strategy>=k||i.level<2?4:0),nt(i,J),i.status=K);else{var w=A+(i.w_bits-8<<4)<<8;w|=(i.strategy>=k||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(w|=L),w+=31-w%31,i.status=K,at(i,w),0!==i.strstart&&(at(i,t.adler>>>16),at(i,65535&t.adler)),t.adler=1}if(i.status===F)if(i.gzhead.extra){for(s=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending!==i.pending_buf_size));)nt(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=j)}else i.status=j;if(i.status===j)if(i.gzhead.name){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindexs&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),0===h&&(i.gzindex=0,i.status=H)}else i.status=H;if(i.status===H)if(i.gzhead.comment){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),tt(t),s=i.pending,i.pending===i.pending_buf_size)){h=1;break}h=i.gzindexs&&(t.adler=o(t.adler,i.pending_buf,i.pending-s,s)),0===h&&(i.status=P)}else i.status=P;if(i.status===P&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&tt(t),i.pending+2<=i.pending_buf_size&&(nt(i,255&t.adler),nt(i,t.adler>>8&255),t.adler=0,i.status=K)):i.status=K),0!==i.pending){if(tt(t),0===t.avail_out)return i.last_flush=-1,c}else if(0===t.avail_in&&Q(e)<=Q(n)&&e!==u)return V(t,b);if(i.status===Y&&0!==t.avail_in)return V(t,b);if(0!==t.avail_in||0!==i.lookahead||e!==l&&i.status!==Y){var m=i.strategy===k?function(t,e){for(var n;;){if(0===t.lookahead&&(st(t),0===t.lookahead)){if(e===l)return X;break}if(t.match_length=0,n=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,n&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}(i,e):i.strategy===y?function(t,e){for(var n,a,i,s,o=t.window;;){if(t.lookahead<=I){if(st(t),t.lookahead<=I&&e===l)return X;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=D&&t.strstart>0&&(a=o[i=t.strstart-1])===o[++i]&&a===o[++i]&&a===o[++i]){s=t.strstart+I;do{}while(a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&a===o[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=D?(n=r._tr_tally(t,1,t.match_length-D),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(n=r._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),n&&(et(t,!1),0===t.strm.avail_out))return X}return t.insert=0,e===u?(et(t,!0),0===t.strm.avail_out?W:q):t.last_lit&&(et(t,!1),0===t.strm.avail_out)?X:G}(i,e):a[i.level].func(i,e);if(m!==W&&m!==q||(i.status=Y),m===X||m===W)return 0===t.avail_out&&(i.last_flush=-1),c;if(m===G&&(e===d?r._tr_align(i):e!==_&&(r._tr_stored_block(i,0,0,!1),e===f&&($(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),tt(t),0===t.avail_out))return i.last_flush=-1,c}return e!==u?c:i.wrap<=0?p:(2===i.wrap?(nt(i,255&t.adler),nt(i,t.adler>>8&255),nt(i,t.adler>>16&255),nt(i,t.adler>>24&255),nt(i,255&t.total_in),nt(i,t.total_in>>8&255),nt(i,t.total_in>>16&255),nt(i,t.total_in>>24&255)):(at(i,t.adler>>>16),at(i,65535&t.adler)),tt(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?c:p)},e.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==M&&e!==F&&e!==j&&e!==H&&e!==P&&e!==K&&e!==Y?V(t,g):(t.state=null,e===K?V(t,w):c):g},e.deflateSetDictionary=function(t,e){var n,a,r,o,h,l,d,f,u=e.length;if(!t||!t.state)return g;if(2===(o=(n=t.state).wrap)||1===o&&n.status!==M||n.lookahead)return g;for(1===o&&(t.adler=s(t.adler,e,u,0)),n.wrap=0,u>=n.w_size&&(0===o&&($(n.head),n.strstart=0,n.block_start=0,n.insert=0),f=new i.Buf8(n.w_size),i.arraySet(f,e,u-n.w_size,n.w_size,0),e=f,u=n.w_size),h=t.avail_in,l=t.next_in,d=t.input,t.avail_in=u,t.next_in=0,t.input=e,st(n);n.lookahead>=D;){a=n.strstart,r=n.lookahead-(D-1);do{n.ins_h=(n.ins_h<=0;)t[e]=0}var l=0,d=1,f=2,u=29,_=256,c=_+1+u,p=30,g=19,w=2*c+1,b=15,m=16,v=7,k=256,y=16,x=17,z=18,B=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],A=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],S=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],E=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],O=new Array(2*(c+2));h(O);var Z=new Array(2*p);h(Z);var C=new Array(512);h(C);var N=new Array(256);h(N);var R=new Array(u);h(R);var T,D,I,U=new Array(p);function L(t,e,n,a,i){this.static_tree=t,this.extra_bits=e,this.extra_base=n,this.elems=a,this.max_length=i,this.has_stree=t&&t.length}function M(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function F(t){return t<256?C[t]:C[256+(t>>>7)]}function j(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function H(t,e,n){t.bi_valid>m-n?(t.bi_buf|=e<>m-t.bi_valid,t.bi_valid+=n-m):(t.bi_buf|=e<>>=1,n<<=1}while(--e>0);return n>>>1}function Y(t,e,n){var a,i,r=new Array(b+1),s=0;for(a=1;a<=b;a++)r[a]=s=s+n[a-1]<<1;for(i=0;i<=e;i++){var o=t[2*i+1];0!==o&&(t[2*i]=K(r[o]++,o))}}function X(t){var e;for(e=0;e8?j(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function W(t,e,n,a){var i=2*e,r=2*n;return t[i]>1;n>=1;n--)q(t,r,n);i=h;do{n=t.heap[1],t.heap[1]=t.heap[t.heap_len--],q(t,r,1),a=t.heap[1],t.heap[--t.heap_max]=n,t.heap[--t.heap_max]=a,r[2*i]=r[2*n]+r[2*a],t.depth[i]=(t.depth[n]>=t.depth[a]?t.depth[n]:t.depth[a])+1,r[2*n+1]=r[2*a+1]=i,t.heap[1]=i++,q(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var n,a,i,r,s,o,h=e.dyn_tree,l=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,u=e.stat_desc.extra_bits,_=e.stat_desc.extra_base,c=e.stat_desc.max_length,p=0;for(r=0;r<=b;r++)t.bl_count[r]=0;for(h[2*t.heap[t.heap_max]+1]=0,n=t.heap_max+1;nc&&(r=c,p++),h[2*a+1]=r,a>l||(t.bl_count[r]++,s=0,a>=_&&(s=u[a-_]),o=h[2*a],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*a+1]+s)));if(0!==p){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,p-=2}while(p>0);for(r=c;0!==r;r--)for(a=t.bl_count[r];0!==a;)(i=t.heap[--n])>l||(h[2*i+1]!==r&&(t.opt_len+=(r-h[2*i+1])*h[2*i],h[2*i+1]=r),a--)}}(t,e),Y(r,l,t.bl_count)}function Q(t,e,n){var a,i,r=-1,s=e[1],o=0,h=7,l=4;for(0===s&&(h=138,l=3),e[2*(n+1)+1]=65535,a=0;a<=n;a++)i=s,s=e[2*(a+1)+1],++o>=7;a0?(t.strm.data_type===o&&(t.strm.data_type=function(t){var e,n=4093624447;for(e=0;e<=31;e++,n>>>=1)if(1&n&&0!==t.dyn_ltree[2*e])return r;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return s;for(e=32;e<_;e++)if(0!==t.dyn_ltree[2*e])return s;return r}(t)),V(t,t.l_desc),V(t,t.d_desc),u=function(t){var e;for(Q(t,t.dyn_ltree,t.l_desc.max_code),Q(t,t.dyn_dtree,t.d_desc.max_code),V(t,t.bl_desc),e=g-1;e>=3&&0===t.bl_tree[2*E[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),h=t.opt_len+3+7>>>3,(l=t.static_len+3+7>>>3)<=h&&(h=l)):h=l=n+5,n+4<=h&&-1!==e?et(t,e,n,a):t.strategy===i||l===h?(H(t,(d<<1)+(a?1:0),3),J(t,O,Z)):(H(t,(f<<1)+(a?1:0),3),function(t,e,n,a){var i;for(H(t,e-257,5),H(t,n-1,5),H(t,a-4,4),i=0;i>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&n,t.last_lit++,0===e?t.dyn_ltree[2*n]++:(t.matches++,e--,t.dyn_ltree[2*(N[n]+_+1)]++,t.dyn_dtree[2*F(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){H(t,d<<1,3),P(t,k,O),function(t){16===t.bi_valid?(j(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},735:function(t,e,n){"use strict";var a=n(736),i=n(132),r=n(489),s=n(491),o=n(324),h=n(490),l=n(739),d=Object.prototype.toString;function f(t){if(!(this instanceof f))return new f(t);this.options=i.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var n=a.inflateInit2(this.strm,e.windowBits);if(n!==s.Z_OK)throw new Error(o[n]);this.header=new l,a.inflateGetHeader(this.strm,this.header)}function u(t,e){var n=new f(e);if(n.push(t,!0),n.err)throw n.msg||o[n.err];return n.result}f.prototype.push=function(t,e){var n,o,h,l,f,u,_=this.strm,c=this.options.chunkSize,p=this.options.dictionary,g=!1;if(this.ended)return!1;o=e===~~e?e:!0===e?s.Z_FINISH:s.Z_NO_FLUSH,"string"==typeof t?_.input=r.binstring2buf(t):"[object ArrayBuffer]"===d.call(t)?_.input=new Uint8Array(t):_.input=t,_.next_in=0,_.avail_in=_.input.length;do{if(0===_.avail_out&&(_.output=new i.Buf8(c),_.next_out=0,_.avail_out=c),(n=a.inflate(_,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&p&&(u="string"==typeof p?r.string2buf(p):"[object ArrayBuffer]"===d.call(p)?new Uint8Array(p):p,n=a.inflateSetDictionary(this.strm,u)),n===s.Z_BUF_ERROR&&!0===g&&(n=s.Z_OK,g=!1),n!==s.Z_STREAM_END&&n!==s.Z_OK)return this.onEnd(n),this.ended=!0,!1;_.next_out&&(0!==_.avail_out&&n!==s.Z_STREAM_END&&(0!==_.avail_in||o!==s.Z_FINISH&&o!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(h=r.utf8border(_.output,_.next_out),l=_.next_out-h,f=r.buf2string(_.output,h),_.next_out=l,_.avail_out=c-l,l&&i.arraySet(_.output,_.output,h,l,0),this.onData(f)):this.onData(i.shrinkBuf(_.output,_.next_out)))),0===_.avail_in&&0===_.avail_out&&(g=!0)}while((_.avail_in>0||0===_.avail_out)&&n!==s.Z_STREAM_END);return n===s.Z_STREAM_END&&(o=s.Z_FINISH),o===s.Z_FINISH?(n=a.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===s.Z_OK):o!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),_.avail_out=0,!0)},f.prototype.onData=function(t){this.chunks.push(t)},f.prototype.onEnd=function(t){t===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=i.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},e.Inflate=f,e.inflate=u,e.inflateRaw=function(t,e){return(e=e||{}).raw=!0,u(t,e)},e.ungzip=u},736:function(t,e,n){"use strict";var a=n(132),i=n(487),r=n(488),s=n(737),o=n(738),h=0,l=1,d=2,f=4,u=5,_=6,c=0,p=1,g=2,w=-2,b=-3,m=-4,v=-5,k=8,y=1,x=2,z=3,B=4,A=5,S=6,E=7,O=8,Z=9,C=10,N=11,R=12,T=13,D=14,I=15,U=16,L=17,M=18,F=19,j=20,H=21,P=22,K=23,Y=24,X=25,G=26,W=27,q=28,J=29,V=30,Q=31,$=32,tt=852,et=592,nt=15;function at(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function it(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=y,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new a.Buf32(tt),e.distcode=e.distdyn=new a.Buf32(et),e.sane=1,e.back=-1,c):w}function rt(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,it(t)):w}function st(t,e){var n,a;return t&&t.state?(a=t.state,e<0?(n=0,e=-e):(n=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?w:(null!==a.window&&a.wbits!==e&&(a.window=null),a.wrap=n,a.wbits=e,rt(t))):w}function ot(t,e){var n,i;return t?(i=new function(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0},t.state=i,i.window=null,(n=st(t,e))!==c&&(t.state=null),n):w}var ht,lt,dt=!0;function ft(t){if(dt){var e;for(ht=new a.Buf32(512),lt=new a.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(o(l,t.lens,0,288,ht,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;o(d,t.lens,0,32,lt,0,t.work,{bits:5}),dt=!1}t.lencode=ht,t.lenbits=9,t.distcode=lt,t.distbits=5}function ut(t,e,n,i){var r,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(a.arraySet(s.window,e,n-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((r=s.wsize-s.wnext)>i&&(r=i),a.arraySet(s.window,e,n-i,r,s.wnext),(i-=r)?(a.arraySet(s.window,e,n-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=r,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,n.check=r(n.check,St,2,0),ot=0,ht=0,n.mode=x;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&ot)<<8)+(ot>>8))%31){t.msg="incorrect header check",n.mode=V;break}if((15&ot)!==k){t.msg="unknown compression method",n.mode=V;break}if(ht-=4,yt=8+(15&(ot>>>=4)),0===n.wbits)n.wbits=yt;else if(yt>n.wbits){t.msg="invalid window size",n.mode=V;break}n.dmax=1<>8&1),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0,n.mode=z;case z:for(;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>8&255,St[2]=ot>>>16&255,St[3]=ot>>>24&255,n.check=r(n.check,St,4,0)),ot=0,ht=0,n.mode=B;case B:for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<>8),512&n.flags&&(St[0]=255&ot,St[1]=ot>>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0,n.mode=A;case A:if(1024&n.flags){for(;ht<16;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>8&255,n.check=r(n.check,St,2,0)),ot=0,ht=0}else n.head&&(n.head.extra=null);n.mode=S;case S:if(1024&n.flags&&((_t=n.length)>rt&&(_t=rt),_t&&(n.head&&(yt=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),a.arraySet(n.head.extra,tt,nt,_t,yt)),512&n.flags&&(n.check=r(n.check,tt,_t,nt)),rt-=_t,nt+=_t,n.length-=_t),n.length))break t;n.length=0,n.mode=E;case E:if(2048&n.flags){if(0===rt)break t;_t=0;do{yt=tt[nt+_t++],n.head&&yt&&n.length<65536&&(n.head.name+=String.fromCharCode(yt))}while(yt&&_t>9&1,n.head.done=!0),t.adler=n.check=0,n.mode=R;break;case C:for(;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=7&ht,ht-=7&ht,n.mode=W;break}for(;ht<3;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=1)){case 0:n.mode=D;break;case 1:if(ft(n),n.mode=j,e===_){ot>>>=2,ht-=2;break t}break;case 2:n.mode=L;break;case 3:t.msg="invalid block type",n.mode=V}ot>>>=2,ht-=2;break;case D:for(ot>>>=7&ht,ht-=7&ht;ht<32;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>16^65535)){t.msg="invalid stored block lengths",n.mode=V;break}if(n.length=65535&ot,ot=0,ht=0,n.mode=I,e===_)break t;case I:n.mode=U;case U:if(_t=n.length){if(_t>rt&&(_t=rt),_t>st&&(_t=st),0===_t)break t;a.arraySet(et,tt,nt,_t,it),rt-=_t,nt+=_t,st-=_t,it+=_t,n.length-=_t;break}n.mode=R;break;case L:for(;ht<14;){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=5,ht-=5,n.ndist=1+(31&ot),ot>>>=5,ht-=5,n.ncode=4+(15&ot),ot>>>=4,ht-=4,n.nlen>286||n.ndist>30){t.msg="too many length or distance symbols",n.mode=V;break}n.have=0,n.mode=M;case M:for(;n.have>>=3,ht-=3}for(;n.have<19;)n.lens[Et[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,zt={bits:n.lenbits},xt=o(h,n.lens,0,19,n.lencode,0,n.work,zt),n.lenbits=zt.bits,xt){t.msg="invalid code lengths set",n.mode=V;break}n.have=0,n.mode=F;case F:for(;n.have>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=gt,ht-=gt,n.lens[n.have++]=bt;else{if(16===bt){for(Bt=gt+2;ht>>=gt,ht-=gt,0===n.have){t.msg="invalid bit length repeat",n.mode=V;break}yt=n.lens[n.have-1],_t=3+(3&ot),ot>>>=2,ht-=2}else if(17===bt){for(Bt=gt+3;ht>>=gt)),ot>>>=3,ht-=3}else{for(Bt=gt+7;ht>>=gt)),ot>>>=7,ht-=7}if(n.have+_t>n.nlen+n.ndist){t.msg="invalid bit length repeat",n.mode=V;break}for(;_t--;)n.lens[n.have++]=yt}}if(n.mode===V)break;if(0===n.lens[256]){t.msg="invalid code -- missing end-of-block",n.mode=V;break}if(n.lenbits=9,zt={bits:n.lenbits},xt=o(l,n.lens,0,n.nlen,n.lencode,0,n.work,zt),n.lenbits=zt.bits,xt){t.msg="invalid literal/lengths set",n.mode=V;break}if(n.distbits=6,n.distcode=n.distdyn,zt={bits:n.distbits},xt=o(d,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,zt),n.distbits=zt.bits,xt){t.msg="invalid distances set",n.mode=V;break}if(n.mode=j,e===_)break t;case j:n.mode=H;case H:if(rt>=6&&st>=258){t.next_out=it,t.avail_out=st,t.next_in=nt,t.avail_in=rt,n.hold=ot,n.bits=ht,s(t,dt),it=t.next_out,et=t.output,st=t.avail_out,nt=t.next_in,tt=t.input,rt=t.avail_in,ot=n.hold,ht=n.bits,n.mode===R&&(n.back=-1);break}for(n.back=0;wt=(At=n.lencode[ot&(1<>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>mt)])>>>16&255,bt=65535&At,!(mt+(gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=mt,ht-=mt,n.back+=mt}if(ot>>>=gt,ht-=gt,n.back+=gt,n.length=bt,0===wt){n.mode=G;break}if(32&wt){n.back=-1,n.mode=R;break}if(64&wt){t.msg="invalid literal/length code",n.mode=V;break}n.extra=15&wt,n.mode=P;case P:if(n.extra){for(Bt=n.extra;ht>>=n.extra,ht-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=K;case K:for(;wt=(At=n.distcode[ot&(1<>>16&255,bt=65535&At,!((gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>mt)])>>>16&255,bt=65535&At,!(mt+(gt=At>>>24)<=ht);){if(0===rt)break t;rt--,ot+=tt[nt++]<>>=mt,ht-=mt,n.back+=mt}if(ot>>>=gt,ht-=gt,n.back+=gt,64&wt){t.msg="invalid distance code",n.mode=V;break}n.offset=bt,n.extra=15&wt,n.mode=Y;case Y:if(n.extra){for(Bt=n.extra;ht>>=n.extra,ht-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){t.msg="invalid distance too far back",n.mode=V;break}n.mode=X;case X:if(0===st)break t;if(_t=dt-st,n.offset>_t){if((_t=n.offset-_t)>n.whave&&n.sane){t.msg="invalid distance too far back",n.mode=V;break}_t>n.wnext?(_t-=n.wnext,ct=n.wsize-_t):ct=n.wnext-_t,_t>n.length&&(_t=n.length),pt=n.window}else pt=et,ct=it-n.offset,_t=n.length;_t>st&&(_t=st),st-=_t,n.length-=_t;do{et[it++]=pt[ct++]}while(--_t);0===n.length&&(n.mode=H);break;case G:if(0===st)break t;et[it++]=n.length,st--,n.mode=H;break;case W:if(n.wrap){for(;ht<32;){if(0===rt)break t;rt--,ot|=tt[nt++]<>>=v=m>>>24,c-=v,0===(v=m>>>16&255))A[r++]=65535&m;else{if(!(16&v)){if(0==(64&v)){m=p[(65535&m)+(_&(1<>>=v,c-=v),c<15&&(_+=B[a++]<>>=v=m>>>24,c-=v,!(16&(v=m>>>16&255))){if(0==(64&v)){m=g[(65535&m)+(_&(1<h){t.msg="invalid distance too far back",n.mode=30;break t}if(_>>>=v,c-=v,y>(v=r-s)){if((v=y-v)>d&&n.sane){t.msg="invalid distance too far back",n.mode=30;break t}if(x=0,z=u,0===f){if(x+=l-v,v2;)A[r++]=z[x++],A[r++]=z[x++],A[r++]=z[x++],k-=3;k&&(A[r++]=z[x++],k>1&&(A[r++]=z[x++]))}else{x=r-y;do{A[r++]=A[x++],A[r++]=A[x++],A[r++]=A[x++],k-=3}while(k>2);k&&(A[r++]=A[x++],k>1&&(A[r++]=A[x++]))}break}}break}}while(a>3,_&=(1<<(c-=k<<3))-1,t.next_in=a,t.next_out=r,t.avail_in=a=1&&0===D[A];A--);if(S>A&&(S=A),0===A)return l[d++]=20971520,l[d++]=20971520,u.bits=1,0;for(B=1;B0&&(0===t||1!==A))return-1;for(I[1]=0,x=1;x<15;x++)I[x+1]=I[x]+D[x];for(z=0;z852||2===t&&C>592)return 1;for(;;){m=x-O,f[z]b?(v=U[L+f[z]],k=R[T+f[z]]):(v=96,k=0),_=1<>O)+(c-=_)]=m<<24|v<<16|k|0}while(0!==c);for(_=1<>=1;if(0!==_?(N&=_-1,N+=_):N=0,z++,0==--D[x]){if(x===A)break;x=e[n+f[z]]}if(x>S&&(N&g)!==p){for(0===O&&(O=S),w+=B,Z=1<<(E=x-O);E+O852||2===t&&C>592)return 1;l[p=N&g]=S<<24|E<<16|w-d|0}}return 0!==N&&(l[w+N]=x-O<<24|64<<16|0),u.bits=S,0}},739:function(t,e,n){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},740:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=_(n(19)),i=_(n(20)),r=n(9),s=_(r),o=_(n(731)),h=_(n(8)),l=_(n(71)),d=n(2),f=_(n(325)),u=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(n(485));function _(t){return t&&t.__esModule?t:{default:t}}var c=window.TextEncoder;function p(t,e,n){var a=s.default.defer(),i=new XMLHttpRequest;return i.open("POST",t),i.timeout=3e5,i.onreadystatechange=function(){i.readyState===XMLHttpRequest.LOADING?n((0,d._t)("Waiting for response from server")):i.readyState===XMLHttpRequest.DONE&&function(){if(i.status<200||i.status>=400)return void a.reject(new Error("HTTP "+i.status));a.resolve()}()},i.send(e),a.promise}c||(c=u.TextEncoder),e.default=function(){var t=(0,r.coroutine)(a.default.mark(function t(e,n){var s,u,_,g,w,b,m,v,k,y,x,z,B,A;return a.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(e){t.next=2;break}throw new Error("No bug report endpoint has been set.");case 2:return(s=(n=n||{}).progressCallback||function(){})((0,d._t)("Collecting app version information")),u="UNKNOWN",t.prev=6,t.next=9,(0,r.resolve)(l.default.get().getAppVersion());case 9:u=t.sent,t.next=14;break;case 12:t.prev=12,t.t0=t.catch(6);case 14:if(_="UNKNOWN",window.navigator&&window.navigator.userAgent&&(_=window.navigator.userAgent),g=h.default.get(),console.log("Sending bug report."),(w=new FormData).append("text",n.userText||"User did not supply any additional text."),w.append("app","riot-web"),w.append("version",u),w.append("user_agent",_),g&&(w.append("user_id",g.credentials.userId),w.append("device_id",g.deviceId)),!n.sendLogs){t.next=48;break}return s((0,d._t)("Collecting logs")),t.next=28,(0,r.resolve)(f.default.getLogsForReport());case 28:for(b=t.sent,m=!0,v=!1,k=void 0,t.prev=32,y=(0,i.default)(b);!(m=(x=y.next()).done);m=!0)z=x.value,B=(new c).encode(z.lines),A=o.default.gzip(B),w.append("compressed-log",new Blob([A]),z.id);t.next=40;break;case 36:t.prev=36,t.t1=t.catch(32),v=!0,k=t.t1;case 40:t.prev=40,t.prev=41,!m&&y.return&&y.return();case 43:if(t.prev=43,!v){t.next=46;break}throw k;case 46:return t.finish(43);case 47:return t.finish(40);case 48:return s((0,d._t)("Uploading report")),t.next=51,(0,r.resolve)(p(e,w,s));case 51:case"end":return t.stop()}},t,this,[[6,12],[32,36,40,48],[41,,43,47]])}));return function(e,n){return t.apply(this,arguments)}}(),t.exports=e.default}}]); +//# sourceMappingURL=8.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/8.js.map b/riot/bundles/f5c70ee9a294f6e4590e/8.js.map new file mode 100644 index 0000000..294b8ca --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/8.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/pako/lib/utils/common.js","node_modules/pako/lib/zlib/messages.js","node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","node_modules/pako/lib/zlib/adler32.js","node_modules/pako/lib/zlib/crc32.js","node_modules/pako/lib/utils/strings.js","node_modules/pako/lib/zlib/zstream.js","node_modules/pako/lib/zlib/constants.js","node_modules/pako/index.js","node_modules/pako/lib/deflate.js","node_modules/pako/lib/zlib/deflate.js","node_modules/pako/lib/zlib/trees.js","node_modules/pako/lib/inflate.js","node_modules/pako/lib/zlib/inflate.js","node_modules/pako/lib/zlib/inffast.js","node_modules/pako/lib/zlib/inftrees.js","node_modules/pako/lib/zlib/gzheader.js","node_modules/matrix-react-sdk/lib/rageshake/submit-rageshake.js"],"names":["TYPED_OK","Uint8Array","Uint16Array","Int32Array","_has","obj","key","Object","prototype","hasOwnProperty","call","exports","assign","sources","Array","slice","arguments","length","source","shift","TypeError","p","shrinkBuf","buf","size","subarray","fnTyped","arraySet","dest","src","src_offs","len","dest_offs","set","i","flattenChunks","chunks","l","pos","chunk","result","fnUntyped","concat","apply","setTyped","on","Buf8","Buf16","Buf32","module","2","1","0","-1","-2","-3","-4","-5","-6","inRange","a","min","max","ToDictionary","o","undefined","__webpack_require__","r","__webpack_exports__","d","TextEncoder","TextDecoder","end_of_stream","Stream","tokens","this","endOfStream","read","prepend","token","isArray","unshift","pop","push","finished","decoderError","fatal","opt_code_point","DEFAULT_ENCODING","encoding","options","String","toLowerCase","Error","_streaming","_BOMseen","_decoder","_fatal","Boolean","_ignoreBOM","defineProperty","value","_encoder","_options","decode","input","bytes","ArrayBuffer","buffer","byteOffset","byteLength","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","handler","stream","bite","code_point","input_stream","code_points","indexOf","s","cp","fromCharCode","codePointsToString","encode","opt_string","count","offset","temp","string","n","u","c","charCodeAt","b","stringToCodePoints","adler","s1","s2","crcTable","table","k","makeTable","crc","t","end","utils","STR_APPLY_OK","STR_APPLY_UIA_OK","__","_utf8len","q","buf2binstring","string2buf","str","c2","m_pos","str_len","buf_len","binstring2buf","buf2string","out","c_len","utf16buf","utf8border","next_in","avail_in","total_in","output","next_out","avail_out","total_out","msg","state","data_type","Z_NO_FLUSH","Z_PARTIAL_FLUSH","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_BUF_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pako","zlib_deflate","strings","ZStream","toString","Deflate","level","method","chunkSize","windowBits","memLevel","strategy","to","opt","raw","gzip","err","ended","strm","status","deflateInit2","header","deflateSetHeader","dictionary","dict","deflateSetDictionary","_dict_set","deflate","deflator","data","mode","_mode","onEnd","onData","deflateEnd","join","deflateRaw","configuration_table","trees","adler32","crc32","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","f","zero","flush_pending","pending","pending_buf","pending_out","flush_block_only","last","_tr_flush_block","block_start","strstart","put_byte","putShortMSB","read_buf","start","wrap","longest_match","cur_match","match","chain_length","max_chain_length","scan","best_len","prev_length","nice_match","limit","w_size","_win","window","wmask","w_mask","prev","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","m","more","_w_size","window_size","hash_size","head","insert","ins_h","hash_shift","hash_mask","deflate_fast","flush","hash_head","bflush","match_length","_tr_tally","max_lazy_match","last_lit","deflate_slow","max_insert","prev_match","match_available","Config","good_length","max_lazy","nice_length","max_chain","func","deflateResetKeep","last_flush","_tr_init","deflateReset","ret","lm_init","pending_buf_size","gzhead","gzindex","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","max_block_size","max_start","deflateInit","old_flush","beg","val","text","hcrc","extra","name","comment","time","os","bstate","deflate_huff","deflate_rle","_tr_align","_tr_stored_block","avail","next","tmpDict","dictLength","deflateInfo","STORED_BLOCK","STATIC_TREES","DYN_TREES","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","TreeDesc","dyn_tree","stat_desc","max_code","d_code","dist","put_short","w","send_bits","send_code","tree","bi_reverse","code","res","gen_codes","bits","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","v","j","compress_block","ltree","dtree","lc","lx","build_tree","desc","node","stree","h","xbits","base","overflow","gen_bitlen","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","black_mask","detect_data_type","build_bl_tree","lcodes","dcodes","blcodes","send_all_trees","bi_flush","zlib_inflate","GZheader","Inflate","inflateInit2","inflateGetHeader","inflate","inflator","next_out_utf8","tail","utf8str","allowBufError","inflateSetDictionary","inflateEnd","inflateRaw","ungzip","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPE","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","BAD","MEM","SYNC","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","inflateResetKeep","total","havedict","dmax","hold","lencode","lendyn","distcode","distdyn","sane","back","inflateReset","wsize","whave","wnext","inflateReset2","wbits","flags","check","lenbits","distbits","ncode","nlen","ndist","have","lens","work","was","lenfix","distfix","virgin","fixedtables","sym","updatewindow","copy","inflateInit","put","left","_in","_out","from","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","opts","here","hbuf","order","inf_leave","done","xflags","extra_len","inflateInfo","s_window","lcode","dcode","lmask","dmask","op","top","dolen","dodist","lbase","lext","dbase","dext","type","lens_index","codes","table_index","incr","fill","low","mask","root","curr","drop","used","huff","base_index","MAXBITS","offs","extra_index","_regenerator2","_interopRequireDefault","_getIterator3","_bluebird","_bluebird2","_pako2","_MatrixClientPeg2","_PlatformPeg2","_languageHandler","_rageshake2","TextEncodingUtf8","__esModule","newObj","default","_interopRequireWildcard","_submitReport","endpoint","body","progressCallback","deferred","defer","req","XMLHttpRequest","open","timeout","onreadystatechange","readyState","LOADING","_t","reject","resolve","on_done","send","promise","_ref","coroutine","mark","_callee","bugReportEndpoint","version","userAgent","client","logs","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","_step","entry","compressed","_context","get","getAppVersion","sent","t0","navigator","console","log","FormData","append","userText","credentials","userId","deviceId","sendLogs","getLogsForReport","lines","Blob","id","t1","return","finish","stop","_x","_x2"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/8.js","sourcesContent":["'use strict';\n\n\nvar TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\nfunction _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// reduce buffer size, avoiding mem copy\nexports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n};\n\n\nvar fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n};\n\nvar fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n};\n\n\n// Enable/Disable typed arrays use, for testing\n//\nexports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n};\n\nexports.setTyped(TYPED_OK);\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n}\n\n\nmodule.exports = adler32;\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n\nmodule.exports = crc32;\n","// String encode/decode helpers\n'use strict';\n\n\nvar utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nvar STR_APPLY_OK = true;\nvar STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new utils.Buf8(256);\nfor (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nexports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper (used in 2 places)\nfunction buf2binstring(buf, len) {\n // use fallback for big arrays to avoid stack overflow\n if (len < 65537) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n}\n\n\n// Convert byte array to binary string\nexports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n};\n\n\n// Convert binary string (typed, when possible)\nexports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n};\n\n\n// convert array to string\nexports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nexports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nvar assign = require('./lib/utils/common').assign;\n\nvar deflate = require('./lib/deflate');\nvar inflate = require('./lib/inflate');\nvar constants = require('./lib/zlib/constants');\n\nvar pako = {};\n\nassign(pako, deflate, inflate, constants);\n\nmodule.exports = pako;\n","'use strict';\n\n\nvar zlib_deflate = require('./zlib/deflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\n\nvar toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nvar Z_NO_FLUSH = 0;\nvar Z_FINISH = 4;\n\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_SYNC_FLUSH = 2;\n\nvar Z_DEFAULT_COMPRESSION = -1;\n\nvar Z_DEFAULT_STRATEGY = 0;\n\nvar Z_DEFLATED = 8;\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nexports.Deflate = Deflate;\nexports.deflate = deflate;\nexports.deflateRaw = deflateRaw;\nexports.gzip = gzip;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar trees = require('./trees');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\nvar Z_NO_FLUSH = 0;\nvar Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\nvar Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n/* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\nvar Z_DEFAULT_COMPRESSION = -1;\n\n\nvar Z_FILTERED = 1;\nvar Z_HUFFMAN_ONLY = 2;\nvar Z_RLE = 3;\nvar Z_FIXED = 4;\nvar Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n/*============================================================================*/\n\n\nvar MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_MEM_LEVEL = 8;\n\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nvar D_CODES = 30;\n/* number of distance codes */\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\nvar MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nvar PRESET_DICT = 0x20;\n\nvar INIT_STATE = 42;\nvar EXTRA_STATE = 69;\nvar NAME_STATE = 73;\nvar COMMENT_STATE = 91;\nvar HCRC_STATE = 103;\nvar BUSY_STATE = 113;\nvar FINISH_STATE = 666;\n\nvar BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nvar BS_BLOCK_DONE = 2; /* block flush performed */\nvar BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nvar BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nvar OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nfunction err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n}\n\nfunction rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n}\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\nfunction flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n}\n\n\nfunction flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n}\n\n\nfunction put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n}\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nfunction putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n}\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nfunction read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n}\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nfunction longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n}\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nfunction fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n}\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\nfunction deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n}\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nfunction deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nfunction deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n}\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nfunction deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nfunction deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n}\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nvar configuration_table;\n\nconfiguration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nfunction lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n}\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\nfunction deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n}\n\n\nfunction deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n}\n\n\nfunction deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n}\n\n\nfunction deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n}\n\nfunction deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n}\n\n\nfunction deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n}\n\nfunction deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n}\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nfunction deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n}\n\n\nexports.deflateInit = deflateInit;\nexports.deflateInit2 = deflateInit2;\nexports.deflateReset = deflateReset;\nexports.deflateResetKeep = deflateResetKeep;\nexports.deflateSetHeader = deflateSetHeader;\nexports.deflate = deflate;\nexports.deflateEnd = deflateEnd;\nexports.deflateSetDictionary = deflateSetDictionary;\nexports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\nvar Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nvar Z_BINARY = 0;\nvar Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\nvar Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nvar STORED_BLOCK = 0;\nvar STATIC_TREES = 1;\nvar DYN_TREES = 2;\n/* The three kinds of block type */\n\nvar MIN_MATCH = 3;\nvar MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nvar LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nvar LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nvar L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nvar D_CODES = 30;\n/* number of distance codes */\n\nvar BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nvar HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nvar MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nvar Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nvar MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nvar END_BLOCK = 256;\n/* end of block literal code */\n\nvar REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nvar REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nvar REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nvar extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\nvar extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\nvar extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\nvar bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nvar DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nvar static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nvar static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nvar _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nvar _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nvar base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nvar base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nvar static_l_desc;\nvar static_d_desc;\nvar static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nfunction d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n}\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nfunction put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n}\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nfunction send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n}\n\n\nfunction send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n}\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nfunction bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nfunction bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n}\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nfunction gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n}\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nfunction gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n{\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n}\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nfunction init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n}\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nfunction bi_windup(s)\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n}\n\n/* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\nfunction copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n{\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n}\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nfunction smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n}\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nfunction pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n{\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n}\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nfunction compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n{\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n}\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nfunction build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n{\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n}\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nfunction scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nfunction send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n{\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n}\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nfunction build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n}\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nfunction send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n{\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n}\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nfunction detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n}\n\n\nvar static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nfunction _tr_init(s)\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n}\n\n\n/* ===========================================================================\n * Send a stored block\n */\nfunction _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n}\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nfunction _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n}\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\nfunction _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n{\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n}\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nfunction _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n{\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n}\n\nexports._tr_init = _tr_init;\nexports._tr_stored_block = _tr_stored_block;\nexports._tr_flush_block = _tr_flush_block;\nexports._tr_tally = _tr_tally;\nexports._tr_align = _tr_align;\n","'use strict';\n\n\nvar zlib_inflate = require('./zlib/inflate');\nvar utils = require('./utils/common');\nvar strings = require('./utils/strings');\nvar c = require('./zlib/constants');\nvar msg = require('./zlib/messages');\nvar ZStream = require('./zlib/zstream');\nvar GZheader = require('./zlib/gzheader');\n\nvar toString = Object.prototype.toString;\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n}\n\n/**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n var dict;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n // Convert data if needed\n if (typeof dictionary === 'string') {\n dict = strings.string2buf(dictionary);\n } else if (toString.call(dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(dictionary);\n } else {\n dict = dictionary;\n }\n\n status = zlib_inflate.inflateSetDictionary(this.strm, dict);\n\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nexports.Inflate = Inflate;\nexports.inflate = inflate;\nexports.inflateRaw = inflateRaw;\nexports.ungzip = inflate;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\nvar adler32 = require('./adler32');\nvar crc32 = require('./crc32');\nvar inflate_fast = require('./inffast');\nvar inflate_table = require('./inftrees');\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n/* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\nvar Z_FINISH = 4;\nvar Z_BLOCK = 5;\nvar Z_TREES = 6;\n\n\n/* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\nvar Z_OK = 0;\nvar Z_STREAM_END = 1;\nvar Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\nvar Z_STREAM_ERROR = -2;\nvar Z_DATA_ERROR = -3;\nvar Z_MEM_ERROR = -4;\nvar Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n/* The deflate compression method */\nvar Z_DEFLATED = 8;\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nvar HEAD = 1; /* i: waiting for magic header */\nvar FLAGS = 2; /* i: waiting for method and flags (gzip) */\nvar TIME = 3; /* i: waiting for modification time (gzip) */\nvar OS = 4; /* i: waiting for extra flags and operating system (gzip) */\nvar EXLEN = 5; /* i: waiting for extra length (gzip) */\nvar EXTRA = 6; /* i: waiting for extra bytes (gzip) */\nvar NAME = 7; /* i: waiting for end of file name (gzip) */\nvar COMMENT = 8; /* i: waiting for end of comment (gzip) */\nvar HCRC = 9; /* i: waiting for header crc (gzip) */\nvar DICTID = 10; /* i: waiting for dictionary check value */\nvar DICT = 11; /* waiting for inflateSetDictionary() call */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\nvar TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\nvar STORED = 14; /* i: waiting for stored size (length and complement) */\nvar COPY_ = 15; /* i/o: same as COPY below, but only first time in */\nvar COPY = 16; /* i/o: waiting for input or output to copy stored block */\nvar TABLE = 17; /* i: waiting for dynamic block table lengths */\nvar LENLENS = 18; /* i: waiting for code length code lengths */\nvar CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\nvar LEN_ = 20; /* i: same as LEN below, but only first time in */\nvar LEN = 21; /* i: waiting for length/lit/eob code */\nvar LENEXT = 22; /* i: waiting for length extra bits */\nvar DIST = 23; /* i: waiting for distance code */\nvar DISTEXT = 24; /* i: waiting for distance extra bits */\nvar MATCH = 25; /* o: waiting for output space to copy string */\nvar LIT = 26; /* o: waiting for output space to write literal */\nvar CHECK = 27; /* i: waiting for 32-bit check value */\nvar LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\nvar DONE = 29; /* finished check, done -- remain here until reset */\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar MEM = 31; /* got an inflate() memory error -- remain here until reset */\nvar SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar MAX_WBITS = 15;\n/* 32K LZ77 window */\nvar DEF_WBITS = MAX_WBITS;\n\n\nfunction zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n}\n\n\nfunction InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\nfunction inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n}\n\nfunction inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n}\n\nfunction inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n}\n\nfunction inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n}\n\nfunction inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n}\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nvar virgin = true;\n\nvar lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\nfunction fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n}\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nfunction updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n}\n\nfunction inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n}\n\nfunction inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n}\n\nfunction inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n}\n\nfunction inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n}\n\nexports.inflateReset = inflateReset;\nexports.inflateReset2 = inflateReset2;\nexports.inflateResetKeep = inflateResetKeep;\nexports.inflateInit = inflateInit;\nexports.inflateInit2 = inflateInit2;\nexports.inflate = inflate;\nexports.inflateEnd = inflateEnd;\nexports.inflateGetHeader = inflateGetHeader;\nexports.inflateSetDictionary = inflateSetDictionary;\nexports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nvar BAD = 30; /* got a data error -- remain here until reset */\nvar TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nvar utils = require('../utils/common');\n\nvar MAXBITS = 15;\nvar ENOUGH_LENS = 852;\nvar ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nvar CODES = 0;\nvar LENS = 1;\nvar DISTS = 2;\n\nvar lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n];\n\nvar lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n];\n\nvar dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n];\n\nvar dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n];\n\nmodule.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n{\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _pako = require('pako');\n\nvar _pako2 = _interopRequireDefault(_pako);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _rageshake = require('./rageshake');\n\nvar _rageshake2 = _interopRequireDefault(_rageshake);\n\nvar _textEncodingUtf = require('text-encoding-utf-8');\n\nvar TextEncodingUtf8 = _interopRequireWildcard(_textEncodingUtf);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TextEncoder = window.TextEncoder;\n\n// polyfill textencoder if necessary\n/*\nCopyright 2017 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nif (!TextEncoder) {\n TextEncoder = TextEncodingUtf8.TextEncoder;\n}\n\n/**\n * Send a bug report.\n *\n * @param {string} bugReportEndpoint HTTP url to send the report to\n *\n * @param {object} opts optional dictionary of options\n *\n * @param {string} opts.userText Any additional user input.\n *\n * @param {boolean} opts.sendLogs True to send logs\n *\n * @param {function(string)} opts.progressCallback Callback to call with progress updates\n *\n * @return {Promise} Resolved when the bug report is sent.\n */\n\nexports.default = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(bugReportEndpoint, opts) {\n var progressCallback, version, userAgent, client, body, logs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry, buf, compressed;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (bugReportEndpoint) {\n _context.next = 2;\n break;\n }\n\n throw new Error(\"No bug report endpoint has been set.\");\n\n case 2:\n\n opts = opts || {};\n\n progressCallback = opts.progressCallback || function () {};\n\n progressCallback((0, _languageHandler._t)(\"Collecting app version information\"));\n version = \"UNKNOWN\";\n _context.prev = 6;\n _context.next = 9;\n return (0, _bluebird.resolve)(_PlatformPeg2.default.get().getAppVersion());\n\n case 9:\n version = _context.sent;\n _context.next = 14;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](6);\n\n case 14:\n // PlatformPeg already logs this.\n\n userAgent = \"UNKNOWN\";\n\n if (window.navigator && window.navigator.userAgent) {\n userAgent = window.navigator.userAgent;\n }\n\n client = _MatrixClientPeg2.default.get();\n\n\n console.log(\"Sending bug report.\");\n\n body = new FormData();\n\n body.append('text', opts.userText || \"User did not supply any additional text.\");\n body.append('app', 'riot-web');\n body.append('version', version);\n body.append('user_agent', userAgent);\n\n if (client) {\n body.append('user_id', client.credentials.userId);\n body.append('device_id', client.deviceId);\n }\n\n if (!opts.sendLogs) {\n _context.next = 48;\n break;\n }\n\n progressCallback((0, _languageHandler._t)(\"Collecting logs\"));\n _context.next = 28;\n return (0, _bluebird.resolve)(_rageshake2.default.getLogsForReport());\n\n case 28:\n logs = _context.sent;\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 32;\n\n for (_iterator = (0, _getIterator3.default)(logs); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n entry = _step.value;\n\n // encode as UTF-8\n buf = new TextEncoder().encode(entry.lines);\n\n // compress\n\n compressed = _pako2.default.gzip(buf);\n\n\n body.append('compressed-log', new Blob([compressed]), entry.id);\n }\n _context.next = 40;\n break;\n\n case 36:\n _context.prev = 36;\n _context.t1 = _context['catch'](32);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 40:\n _context.prev = 40;\n _context.prev = 41;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 43:\n _context.prev = 43;\n\n if (!_didIteratorError) {\n _context.next = 46;\n break;\n }\n\n throw _iteratorError;\n\n case 46:\n return _context.finish(43);\n\n case 47:\n return _context.finish(40);\n\n case 48:\n\n progressCallback((0, _languageHandler._t)(\"Uploading report\"));\n _context.next = 51;\n return (0, _bluebird.resolve)(_submitReport(bugReportEndpoint, body, progressCallback));\n\n case 51:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[6, 12], [32, 36, 40, 48], [41,, 43, 47]]);\n }));\n\n function sendBugReport(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return sendBugReport;\n}();\n\nfunction _submitReport(endpoint, body, progressCallback) {\n var deferred = _bluebird2.default.defer();\n\n var req = new XMLHttpRequest();\n req.open(\"POST\", endpoint);\n req.timeout = 5 * 60 * 1000;\n req.onreadystatechange = function () {\n if (req.readyState === XMLHttpRequest.LOADING) {\n progressCallback((0, _languageHandler._t)(\"Waiting for response from server\"));\n } else if (req.readyState === XMLHttpRequest.DONE) {\n on_done();\n }\n };\n req.send(body);\n return deferred.promise;\n\n function on_done() {\n if (req.status < 200 || req.status >= 400) {\n deferred.reject(new Error('HTTP ' + req.status));\n return;\n }\n deferred.resolve();\n }\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=submit-rageshake.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/bundle.css b/riot/bundles/f5c70ee9a294f6e4590e/bundle.css new file mode 100644 index 0000000..36ed2ac --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/bundle.css @@ -0,0 +1,217 @@ +/** + * gemini-scrollbar + * @version 1.4.3 + * @link http://noeldelgado.github.io/gemini-scrollbar/ + * @license MIT + */ + +/* disable selection while dragging */ +.gm-scrollbar-disable-selection { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +/* fallback for native floating scrollbars */ +.gm-prevented { + -webkit-overflow-scrolling: touch; +} +.gm-prevented .gm-scrollbar { + display: none; +} + +/* actual gemini-scrollbar styles */ +.gm-scrollbar-container { + position: relative; + overflow: hidden!important; + width: 100%; + height: 100%; +} + +.gm-scrollbar { + position: absolute; + right: 2px; + bottom: 2px; + z-index: 1; + border-radius: 3px; +} + +.gm-scrollbar.-vertical { + width: 6px; + top: 2px; +} + +.gm-scrollbar.-horizontal { + height: 6px; + left: 2px; +} + +.gm-scrollbar .thumb { + position: relative; + display: block; + width: 0; + height: 0; + cursor: pointer; + border-radius: inherit; + background-color: rgba(0,0,0,.2); +} + +.gm-scrollbar .thumb:hover, +.gm-scrollbar .thumb:active { + background-color: rgba(0,0,0,.3); +} + +.gm-scrollbar.-vertical .thumb { + width: 100%; +} + +.gm-scrollbar.-horizontal .thumb { + height: 100%; +} + +.gm-scrollbar-container .gm-scroll-view { + width: 100%; + height: 100%; + overflow: scroll; + -webkit-overflow-scrolling: touch; +} + +/* @option: autoshow */ +.gm-scrollbar-container.gm-autoshow .gm-scrollbar { + opacity: 0; + transition: opacity 120ms ease-out; +} +.gm-scrollbar-container.gm-autoshow:hover .gm-scrollbar, +.gm-scrollbar-container.gm-autoshow:active .gm-scrollbar, +.gm-scrollbar-container.gm-autoshow:focus .gm-scrollbar { + opacity: 1; + transition: opacity 340ms ease-out; +} + +.gm-resize-trigger { + position: absolute; + display: block; + top: 0; + left: 0; + height: 100%; + width: 100%; + overflow: hidden; + pointer-events: none; + z-index: -1; + opacity: 0; +} +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} +/** + * Draft v0.11.0-alpha + * + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ +.DraftEditor-editorContainer,.DraftEditor-root,.public-DraftEditor-content{height:inherit;text-align:initial}.public-DraftEditor-content[contenteditable=true]{-webkit-user-modify:read-write-plaintext-only}.DraftEditor-root{position:relative}.DraftEditor-editorContainer{background-color:rgba(255,255,255,0);border-left:.1px solid transparent;position:relative;z-index:1}.public-DraftEditor-block{position:relative}.DraftEditor-alignLeft .public-DraftStyleDefault-block{text-align:left}.DraftEditor-alignLeft .public-DraftEditorPlaceholder-root{left:0;text-align:left}.DraftEditor-alignCenter .public-DraftStyleDefault-block{text-align:center}.DraftEditor-alignCenter .public-DraftEditorPlaceholder-root{margin:0 auto;text-align:center;width:100%}.DraftEditor-alignRight .public-DraftStyleDefault-block{text-align:right}.DraftEditor-alignRight .public-DraftEditorPlaceholder-root{right:0;text-align:right}.public-DraftEditorPlaceholder-root{color:#9197a3;position:absolute;z-index:1}.public-DraftEditorPlaceholder-hasFocus{color:#bdc1c9}.DraftEditorPlaceholder-hidden{display:none}.public-DraftStyleDefault-block{position:relative;white-space:pre-wrap}.public-DraftStyleDefault-ltr{direction:ltr;text-align:left}.public-DraftStyleDefault-rtl{direction:rtl;text-align:right}.public-DraftStyleDefault-listLTR{direction:ltr}.public-DraftStyleDefault-listRTL{direction:rtl}.public-DraftStyleDefault-ol,.public-DraftStyleDefault-ul{margin:16px 0;padding:0}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listLTR{margin-left:1.5em}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-listRTL{margin-right:1.5em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listLTR{margin-left:3em}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-listRTL{margin-right:3em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listLTR{margin-left:4.5em}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-listRTL{margin-right:4.5em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listLTR{margin-left:6em}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-listRTL{margin-right:6em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listLTR{margin-left:7.5em}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-listRTL{margin-right:7.5em}.public-DraftStyleDefault-unorderedListItem{list-style-type:square;position:relative}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth0{list-style-type:disc}.public-DraftStyleDefault-unorderedListItem.public-DraftStyleDefault-depth1{list-style-type:circle}.public-DraftStyleDefault-orderedListItem{list-style-type:none;position:relative}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listLTR:before{left:-36px;position:absolute;text-align:right;width:30px}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-listRTL:before{position:absolute;right:-36px;text-align:left;width:30px}.public-DraftStyleDefault-orderedListItem:before{content:counter(ol0) ". ";counter-increment:ol0}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth1:before{content:counter(ol1) ". ";counter-increment:ol1}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth2:before{content:counter(ol2) ". ";counter-increment:ol2}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth3:before{content:counter(ol3) ". ";counter-increment:ol3}.public-DraftStyleDefault-orderedListItem.public-DraftStyleDefault-depth4:before{content:counter(ol4) ". ";counter-increment:ol4}.public-DraftStyleDefault-depth0.public-DraftStyleDefault-reset{counter-reset:ol0}.public-DraftStyleDefault-depth1.public-DraftStyleDefault-reset{counter-reset:ol1}.public-DraftStyleDefault-depth2.public-DraftStyleDefault-reset{counter-reset:ol2}.public-DraftStyleDefault-depth3.public-DraftStyleDefault-reset{counter-reset:ol3}.public-DraftStyleDefault-depth4.public-DraftStyleDefault-reset{counter-reset:ol4}/* gfm.css v1.1.0 - 07/10/15 - http://ngoldman.github.io/gfm.css/ */ +.markdown-body{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;color:#333;overflow:hidden;font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;font-size:16px;line-height:1.6;word-wrap:break-word}.markdown-body *{-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a{background:0 0;color:#4183c4;text-decoration:none}.markdown-body a:active,.markdown-body a:hover{outline:0}.markdown-body a:active,.markdown-body a:focus,.markdown-body a:hover{text-decoration:underline}.markdown-body strong{font-weight:700}.markdown-body em{font-style:italic}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif;position:relative;margin-top:1em;margin-bottom:16px;font-weight:700;line-height:1.4}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h1{font-size:2.25em;line-height:1.2}.markdown-body h2{font-size:1.75em;line-height:1.225}.markdown-body h3{font-size:1.5em}.markdown-body h4{font-size:1.25em}.markdown-body h5{font-size:1em}.markdown-body h6{font-size:1em;color:#777}.markdown-body code,.markdown-body kbd,.markdown-body pre{font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace}.markdown-body code{padding:.2em 0;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before{letter-spacing:-.2em;content:'\00a0'}.markdown-body pre{word-wrap:normal;padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code{display:inline;max-width:initial;padding:0;margin:0;overflow:initial;line-height:inherit;word-wrap:normal;background:0 0}.markdown-body pre code:after,.markdown-body pre code:before{content:normal}.markdown-body pre>code{font-size:1em;word-break:normal;white-space:pre;border:0}.markdown-body kbd{background-color:#e7e7e7;background-image:-webkit-linear-gradient(#fefefe,#e7e7e7);background-image:linear-gradient(#fefefe,#e7e7e7);background-repeat:repeat-x;display:inline-block;padding:5px 5px 1px;margin:0 1px;font-size:11px;line-height:10px;color:#000;border:1px solid #cfcfcf;border-radius:2px;box-shadow:0 1px 0 #ccc}.markdown-body hr:after,.markdown-body hr:before{display:table;content:''}.markdown-body input{color:inherit;font:inherit;margin:0;font-size:13px;line-height:1.4;font-family:Helvetica,Arial,freesans,clean,sans-serif,'Segoe UI Emoji','Segoe UI Symbol'}.markdown-body input[disabled]{cursor:default}.markdown-body input[type=checkbox]{-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.markdown-body blockquote{margin:0 0 16px;padding:0 15px;color:#777;border-left:4px solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body img{border:0;max-width:100%;-moz-box-sizing:border-box;box-sizing:border-box}.markdown-body hr{-moz-box-sizing:content-box;box-sizing:content-box;overflow:hidden;background:#e7e7e7;height:4px;padding:0;margin:16px 0;border:0}.markdown-body hr:after{clear:both}.markdown-body td,.markdown-body th{padding:0}.markdown-body table{border-collapse:collapse;border-spacing:0;display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table th{font-weight:700}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body ol,.markdown-body ul{padding:0 0 0 2em}.markdown-body ol ol,.markdown-body ul ol{list-style-type:lower-roman}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body ol ol ol,.markdown-body ol ul ol,.markdown-body ul ol ol,.markdown-body ul ul ol{list-style-type:lower-alpha}.markdown-body li>p{margin-top:16px}.markdown-body dd{margin-left:0}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px} +/*# sourceMappingURL=bundle.css.map*/ \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/bundle.css.map b/riot/bundles/f5c70ee9a294f6e4590e/bundle.css.map new file mode 100644 index 0000000..42070b0 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/bundle.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/bundle.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/bundle.js b/riot/bundles/f5c70ee9a294f6e4590e/bundle.js new file mode 100644 index 0000000..79ea887 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/bundle.js @@ -0,0 +1,115 @@ +!function(e){function t(t){for(var n,o,i=t[0],a=t[1],s=0,u=[];s(.*?)<\\/"+i+">|<"+i+">|<"+i+"\\s*\\/>)"]=n[i];return g(e,r)}function g(e,t){var n=[e],r=!1;for(var o in t){var i=new RegExp(o),s=!1;for(var l in n){var u=n[l];if("string"==typeof u){var f=u.match(i);if(f){s=!0;var d=f.slice(2),p=u.substr(0,f.index),m=u.substr(f.index+f[0].length),h=void 0;"object"===(void 0===(h=t[o]instanceof Function?t[o].apply(null,d):t[o])?"undefined":(0,a.default)(h))&&(r=!0),n.splice(l,1),""!==m&&n.splice(l,0,m),"string"==typeof h&&""===h||n.splice(l,0,h),""!==p&&n.splice(l,0,p)}}}s||"%\\(count\\)s"!==o&&console.log("Could not find "+i+" in "+e)}return r?c.default.createElement.apply(c.default,["span",null].concat(n)):n.join("")}function v(){return new u.default(function(e,t){(0,s.default)({method:"GET",url:m+"languages.json"},function(n,r,o){n||r.status<200||r.status>=300?t({err:n,response:r}):e(JSON.parse(o))})})}function y(e){return new u.default(function(t,n){(0,s.default)({method:"GET",url:e},function(e,o,a){e||o.status<200||o.status>=300?n({err:e,response:o}):t(function(e){var t={},n=!0,o=!1,a=void 0;try{for(var s,l=(0,r.default)((0,i.default)(e));!(n=(s=l.next()).done);n=!0){var u=s.value,c=u.split("|",2);if(2===c.length){var f=t[c[0]];void 0===f&&(f={},t[c[0]]=f),f[c[1]]=e[u]}else t[u]=e[u]}}catch(e){o=!0,a=e}finally{try{!n&&l.return&&l.return()}finally{if(o)throw a}}return t}(JSON.parse(a)))})})}l.default.setSeparator("|"),l.default.setFallbackLocale("en")},function(e,t,n){"use strict";var r=i(n(1058)),o=i(n(389));function i(e){return e&&e.__esModule?e:{default:e}}e.exports.loadSkin=function(e){r.default.load(e)},e.exports.resetSkin=function(){r.default.reset()},e.exports.getComponent=function(e){return r.default.getComponent(e)},e.exports.setFetch=function(e){o.default.setFetch(e)}},function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(223));t.default=function(){function e(e,t){for(var n=0;n>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?w(e)+t:t}function x(){return!0}function R(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function k(e,t){return I(e,t,0)}function N(e,t){return I(e,t,t)}function I(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var O=0,A=1,M=2,P="function"==typeof Symbol&&Symbol.iterator,L="@@iterator",F=P||L;function U(e){this.next=e}function j(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function B(){return{value:void 0,done:!0}}function G(e){return!!H(e)}function q(e){return e&&"function"==typeof e.next}function V(e){var t=H(e);return t&&t.call(e)}function H(e){var t=e&&(P&&e[P]||e[L]);if("function"==typeof t)return t}function Y(e){return e&&"number"==typeof e.length}function z(e){return null===e||void 0===e?ie():a(e)?e.toSeq():function(e){var t=le(e)||"object"==typeof e&&new te(e);if(!t)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+e);return t}(e)}function W(e){return null===e||void 0===e?ie().toKeyedSeq():a(e)?s(e)?e.toSeq():e.fromEntrySeq():ae(e)}function K(e){return null===e||void 0===e?ie():a(e)?s(e)?e.entrySeq():e.toIndexedSeq():se(e)}function $(e){return(null===e||void 0===e?ie():a(e)?s(e)?e.entrySeq():e:se(e)).toSetSeq()}U.prototype.toString=function(){return"[Iterator]"},U.KEYS=O,U.VALUES=A,U.ENTRIES=M,U.prototype.inspect=U.prototype.toSource=function(){return this.toString()},U.prototype[F]=function(){return this},t(z,n),z.of=function(){return z(arguments)},z.prototype.toSeq=function(){return this},z.prototype.toString=function(){return this.__toString("Seq {","}")},z.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},z.prototype.__iterate=function(e,t){return ue(this,e,t,!0)},z.prototype.__iterator=function(e,t){return ce(this,e,t,!0)},t(W,z),W.prototype.toKeyedSeq=function(){return this},t(K,z),K.of=function(){return K(arguments)},K.prototype.toIndexedSeq=function(){return this},K.prototype.toString=function(){return this.__toString("Seq [","]")},K.prototype.__iterate=function(e,t){return ue(this,e,t,!1)},K.prototype.__iterator=function(e,t){return ce(this,e,t,!1)},t($,z),$.of=function(){return $(arguments)},$.prototype.toSetSeq=function(){return this},z.isSeq=oe,z.Keyed=W,z.Set=$,z.Indexed=K;var Q,X,J,Z="@@__IMMUTABLE_SEQ__@@";function ee(e){this._array=e,this.size=e.length}function te(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function ne(e){this._iterable=e,this.size=e.length||e.size}function re(e){this._iterator=e,this._iteratorCache=[]}function oe(e){return!(!e||!e[Z])}function ie(){return Q||(Q=new ee([]))}function ae(e){var t=Array.isArray(e)?new ee(e).fromEntrySeq():q(e)?new re(e).fromEntrySeq():G(e)?new ne(e).fromEntrySeq():"object"==typeof e?new te(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function se(e){var t=le(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return t}function le(e){return Y(e)?new ee(e):q(e)?new re(e):G(e)?new ne(e):void 0}function ue(e,t,n,r){var o=e._cache;if(o){for(var i=o.length-1,a=0;a<=i;a++){var s=o[n?i-a:a];if(!1===t(s[1],r?s[0]:a,e))return a+1}return a}return e.__iterateUncached(t,n)}function ce(e,t,n,r){var o=e._cache;if(o){var i=o.length-1,a=0;return new U(function(){var e=o[n?i-a:a];return a++>i?{value:void 0,done:!0}:j(t,r?e[0]:a-1,e[1])})}return e.__iteratorUncached(t,n)}function fe(e,t){return t?function e(t,n,r,o){return Array.isArray(n)?t.call(o,r,K(n).map(function(r,o){return e(t,r,o,n)})):pe(n)?t.call(o,r,W(n).map(function(r,o){return e(t,r,o,n)})):n}(t,e,"",{"":e}):de(e)}function de(e){return Array.isArray(e)?K(e).map(de).toList():pe(e)?W(e).map(de).toMap():e}function pe(e){return e&&(e.constructor===Object||void 0===e.constructor)}function me(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if(e=e.valueOf(),t=t.valueOf(),e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!("function"!=typeof e.equals||"function"!=typeof t.equals||!e.equals(t))}function he(e,t){if(e===t)return!0;if(!a(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||s(e)!==s(t)||l(e)!==l(t)||c(e)!==c(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!u(e);if(c(e)){var r=e.entries();return t.every(function(e,t){var o=r.next().value;return o&&me(o[1],e)&&(n||me(o[0],t))})&&r.next().done}var o=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{o=!0;var i=e;e=t,t=i}var f=!0,d=t.__iterate(function(t,r){if(n?!e.has(t):o?!me(t,e.get(r,v)):!me(e.get(r,v),t))return f=!1,!1});return f&&e.size===d}function _e(e,t){if(!(this instanceof _e))return new _e(e,t);if(this._value=e,this.size=void 0===t?1/0:Math.max(0,t),0===this.size){if(X)return X;X=this}}function ge(e,t){if(!e)throw new Error(t)}function ve(e,t,n){if(!(this instanceof ve))return new ve(e,t,n);if(ge(0!==n,"Cannot step a Range by 0"),e=e||0,void 0===t&&(t=1/0),n=void 0===n?1:Math.abs(n),tr?{value:void 0,done:!0}:j(e,o,n[t?r-o++:o++])})},t(te,W),te.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},te.prototype.has=function(e){return this._object.hasOwnProperty(e)},te.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length-1,i=0;i<=o;i++){var a=r[t?o-i:i];if(!1===e(n[a],a,this))return i+1}return i},te.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length-1,i=0;return new U(function(){var a=r[t?o-i:i];return i++>o?{value:void 0,done:!0}:j(e,a,n[a])})},te.prototype[m]=!0,t(ne,K),ne.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=this._iterable,r=V(n),o=0;if(q(r))for(var i;!(i=r.next()).done&&!1!==e(i.value,o++,this););return o},ne.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=this._iterable,r=V(n);if(!q(r))return new U(B);var o=0;return new U(function(){var t=r.next();return t.done?t:j(e,o++,t.value)})},t(re,K),re.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);for(var n,r=this._iterator,o=this._iteratorCache,i=0;i=r.length){var t=n.next();if(t.done)return t;r[o]=t.value}return j(e,o,r[o++])})},t(_e,K),_e.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},_e.prototype.get=function(e,t){return this.has(e)?this._value:t},_e.prototype.includes=function(e){return me(this._value,e)},_e.prototype.slice=function(e,t){var n=this.size;return R(e,t,n)?this:new _e(this._value,N(t,n)-k(e,n))},_e.prototype.reverse=function(){return this},_e.prototype.indexOf=function(e){return me(this._value,e)?0:-1},_e.prototype.lastIndexOf=function(e){return me(this._value,e)?this.size:-1},_e.prototype.__iterate=function(e,t){for(var n=0;n1?" by "+this._step:"")+" ]"},ve.prototype.get=function(e,t){return this.has(e)?this._start+T(this,e)*this._step:t},ve.prototype.includes=function(e){var t=(e-this._start)/this._step;return t>=0&&t=0&&nn?{value:void 0,done:!0}:j(e,i++,a)})},ve.prototype.equals=function(e){return e instanceof ve?this._start===e._start&&this._end===e._end&&this._step===e._step:he(this,e)},t(ye,n),t(be,ye),t(Ee,ye),t(Ce,ye),ye.Keyed=be,ye.Indexed=Ee,ye.Set=Ce;var Se="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function De(e){return e>>>1&1073741824|3221225471&e}function we(e){if(!1===e||null===e||void 0===e)return 0;if("function"==typeof e.valueOf&&(!1===(e=e.valueOf())||null===e||void 0===e))return 0;if(!0===e)return 1;var t=typeof e;if("number"===t){var n=0|e;for(n!==e&&(n^=4294967295*e);e>4294967295;)n^=e/=4294967295;return De(n)}if("string"===t)return e.length>Ae?function(e){var t=Le[e];return void 0===t&&(t=Te(e),Pe===Me&&(Pe=0,Le={}),Pe++,Le[e]=t),t}(e):Te(e);if("function"==typeof e.hashCode)return e.hashCode();if("object"===t)return function(e){var t;if(Ne&&void 0!==(t=xe.get(e)))return t;if(void 0!==(t=e[Oe]))return t;if(!ke){if(void 0!==(t=e.propertyIsEnumerable&&e.propertyIsEnumerable[Oe]))return t;if(void 0!==(t=function(e){if(e&&e.nodeType>0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}(e)))return t}if(t=++Ie,1073741824&Ie&&(Ie=0),Ne)xe.set(e,t);else{if(void 0!==Re&&!1===Re(e))throw new Error("Non-extensible objects are not allowed as keys.");if(ke)Object.defineProperty(e,Oe,{enumerable:!1,configurable:!1,writable:!1,value:t});else if(void 0!==e.propertyIsEnumerable&&e.propertyIsEnumerable===e.constructor.prototype.propertyIsEnumerable)e.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},e.propertyIsEnumerable[Oe]=t;else{if(void 0===e.nodeType)throw new Error("Unable to set a non-enumerable property on object.");e[Oe]=t}}return t}(e);if("function"==typeof e.toString)return Te(e.toString());throw new Error("Value type "+t+" cannot be hashed.")}function Te(e){for(var t=0,n=0;n>>n)&g,s=(0===n?r:r>>>n)&g,l=a===s?[nt(e,t,n+h,r,o)]:(i=new We(t,r,o),a>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function lt(e,t,n,r){var o=r?e:D(e);return o[t]=n,o}qe[Ge]=!0,qe.delete=qe.remove,qe.removeIn=qe.deleteIn,Ve.prototype.get=function(e,t,n,r){for(var o=this.entries,i=0,a=o.length;i=ut)return function(e,t,n,r){e||(e=new S);for(var o=new We(e,we(n),[n,r]),i=0;i>>e)&g),i=this.bitmap;return 0==(i&o)?r:this.nodes[st(i&o-1)].get(e+h,t,n,r)},He.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=we(r));var s=(0===t?n:n>>>t)&g,l=1<=ct)return function(e,t,n,r,o){for(var i=0,a=new Array(_),s=0;0!==n;s++,n>>>=1)a[s]=1&n?t[i++]:void 0;return a[r]=o,new Ye(e,i+1,a)}(e,d,u,s,m);if(c&&!m&&2===d.length&&tt(d[1^f]))return d[1^f];if(c&&m&&1===d.length&&tt(m))return m;var y=e&&e===this.ownerID,b=c?m?u:u^l:u|l,E=c?m?lt(d,f,m,y):function(e,t,n){var r=e.length-1;if(n&&t===r)return e.pop(),e;for(var o=new Array(r),i=0,a=0;a>>e)&g,i=this.nodes[o];return i?i.get(e+h,t,n,r):r},Ye.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=we(r));var s=(0===t?n:n>>>t)&g,l=o===v,u=this.nodes,c=u[s];if(l&&!c)return this;var f=et(c,e,t+h,n,r,o,i,a);if(f===c)return this;var d=this.count;if(c){if(!f&&--d0&&r<_?Et(0,r,h,null,new _t(n.toArray())):t.withMutations(function(e){e.setSize(r),n.forEach(function(t,n){return e.set(n,t)})}))}function pt(e){return!(!e||!e[mt])}t(dt,Ee),dt.of=function(){return this(arguments)},dt.prototype.toString=function(){return this.__toString("List [","]")},dt.prototype.get=function(e,t){if((e=T(this,e))>=0&&e=e.size||t<0)return e.withMutations(function(e){t<0?Tt(e,t).set(0,n):Tt(e,0,t+1).set(t,n)});t+=e._origin;var r=e._tail,o=e._root,i=E(b);return t>=Rt(e._capacity)?r=St(r,e.__ownerID,0,t,n,i):o=St(o,e.__ownerID,e._level,t,n,i),i.value?e.__ownerID?(e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e):Et(e._origin,e._capacity,e._level,o,r):e}(this,e,t)},dt.prototype.remove=function(e){return this.has(e)?0===e?this.shift():e===this.size-1?this.pop():this.splice(e,1):this},dt.prototype.insert=function(e,t){return this.splice(e,0,t)},dt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=h,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):Ct()},dt.prototype.push=function(){var e=arguments,t=this.size;return this.withMutations(function(n){Tt(n,0,t+e.length);for(var r=0;r>>t&g;if(r>=this.array.length)return new _t([],e);var o,i=0===r;if(t>0){var a=this.array[r];if((o=a&&a.removeBefore(e,t-h,n))===a&&i)return this}if(i&&!o)return this;var s=Dt(this,e);if(!i)for(var l=0;l>>t&g;if(o>=this.array.length)return this;if(t>0){var i=this.array[o];if((r=i&&i.removeAfter(e,t-h,n))===i&&o===this.array.length-1)return this}var a=Dt(this,e);return a.array.splice(o+1),r&&(a.array[o]=r),a};var gt,vt,yt={};function bt(e,t){var n=e._origin,r=e._capacity,o=Rt(r),i=e._tail;return a(e._root,e._level,0);function a(e,s,l){return 0===s?function(e,a){var s=a===o?i&&i.array:e&&e.array,l=a>n?0:n-a,u=r-a;return u>_&&(u=_),function(){if(l===u)return yt;var e=t?--u:l++;return s&&s[e]}}(e,l):function(e,o,i){var s,l=e&&e.array,u=i>n?0:n-i>>o,c=1+(r-i>>o);return c>_&&(c=_),function(){for(;;){if(s){var e=s();if(e!==yt)return e;s=null}if(u===c)return yt;var n=t?--c:u++;s=a(l&&l[n],o-h,i+(n<>>n&g,l=e&&s0){var u=e&&e.array[s],c=St(u,t,n-h,r,o,i);return c===u?e:((a=Dt(e,t)).array[s]=c,a)}return l&&e.array[s]===o?e:(C(i),a=Dt(e,t),void 0===o&&s===a.array.length-1?a.array.pop():a.array[s]=o,a)}function Dt(e,t){return t&&e&&t===e.ownerID?e:new _t(e?e.array.slice():[],t)}function wt(e,t){if(t>=Rt(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&g],r-=h;return n}}function Tt(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new S,o=e._origin,i=e._capacity,a=o+t,s=void 0===n?i:n<0?i+n:o+n;if(a===o&&s===i)return e;if(a>=s)return e.clear();for(var l=e._level,u=e._root,c=0;a+c<0;)u=new _t(u&&u.array.length?[void 0,u]:[],r),c+=1<<(l+=h);c&&(a+=c,o+=c,s+=c,i+=c);for(var f=Rt(i),d=Rt(s);d>=1<f?new _t([],r):p;if(p&&d>f&&ah;v-=h){var y=f>>>v&g;_=_.array[y]=Dt(_.array[y],r)}_.array[f>>>h&g]=p}if(s=d)a-=d,s-=d,l=h,u=null,m=m&&m.removeBefore(r,0,a);else if(a>o||d>>l&g;if(b!==d>>>l&g)break;b&&(c+=(1<o&&(u=u.removeBefore(r,l,a-c)),u&&di&&(i=u.size),a(l)||(u=u.map(function(e){return fe(e)})),r.push(u)}return i>e.size&&(e=e.setSize(i)),at(e,t,r)}function Rt(e){return e<_?0:e-1>>>h<=_&&a.size>=2*i.size?(o=a.filter(function(e,t){return void 0!==e&&s!==t}),r=o.toKeyedSeq().map(function(e){return e[0]}).flip().toMap(),e.__ownerID&&(r.__ownerID=o.__ownerID=e.__ownerID)):(r=i.remove(t),o=s===a.size-1?a.pop():a.set(s,void 0))}else if(l){if(n===a.get(s)[1])return e;r=i,o=a.set(s,[t,n])}else r=i.set(t,a.size),o=a.set(a.size,[t,n]);return e.__ownerID?(e.size=r.size,e._map=r,e._list=o,e.__hash=void 0,e):It(r,o)}function Mt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}function Pt(e){this._iter=e,this.size=e.size}function Lt(e){this._iter=e,this.size=e.size}function Ft(e){this._iter=e,this.size=e.size}function Ut(e){var t=Zt(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var t=e.reverse.apply(this);return t.flip=function(){return e.reverse()},t},t.has=function(t){return e.includes(t)},t.includes=function(t){return e.has(t)},t.cacheResult=en,t.__iterateUncached=function(t,n){var r=this;return e.__iterate(function(e,n){return!1!==t(n,e,r)},n)},t.__iteratorUncached=function(t,n){if(t===M){var r=e.__iterator(t,n);return new U(function(){var e=r.next();if(!e.done){var t=e.value[0];e.value[0]=e.value[1],e.value[1]=t}return e})}return e.__iterator(t===A?O:A,n)},t}function jt(e,t,n){var r=Zt(e);return r.size=e.size,r.has=function(t){return e.has(t)},r.get=function(r,o){var i=e.get(r,v);return i===v?o:t.call(n,i,r,e)},r.__iterateUncached=function(r,o){var i=this;return e.__iterate(function(e,o,a){return!1!==r(t.call(n,e,o,a),o,i)},o)},r.__iteratorUncached=function(r,o){var i=e.__iterator(M,o);return new U(function(){var o=i.next();if(o.done)return o;var a=o.value,s=a[0];return j(r,s,t.call(n,a[1],s,e),o)})},r}function Bt(e,t){var n=Zt(e);return n._iter=e,n.size=e.size,n.reverse=function(){return e},e.flip&&(n.flip=function(){var t=Ut(e);return t.reverse=function(){return e.flip()},t}),n.get=function(n,r){return e.get(t?n:-1-n,r)},n.has=function(n){return e.has(t?n:-1-n)},n.includes=function(t){return e.includes(t)},n.cacheResult=en,n.__iterate=function(t,n){var r=this;return e.__iterate(function(e,n){return t(e,n,r)},!n)},n.__iterator=function(t,n){return e.__iterator(t,!n)},n}function Gt(e,t,n,r){var o=Zt(e);return r&&(o.has=function(r){var o=e.get(r,v);return o!==v&&!!t.call(n,o,r,e)},o.get=function(r,o){var i=e.get(r,v);return i!==v&&t.call(n,i,r,e)?i:o}),o.__iterateUncached=function(o,i){var a=this,s=0;return e.__iterate(function(e,i,l){if(t.call(n,e,i,l))return s++,o(e,r?i:s-1,a)},i),s},o.__iteratorUncached=function(o,i){var a=e.__iterator(M,i),s=0;return new U(function(){for(;;){var i=a.next();if(i.done)return i;var l=i.value,u=l[0],c=l[1];if(t.call(n,c,u,e))return j(o,r?u:s++,c,i)}})},o}function qt(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n|=0),R(t,n,o))return e;var i=k(t,o),a=N(n,o);if(i!=i||a!=a)return qt(e.toSeq().cacheResult(),t,n,r);var s,l=a-i;l==l&&(s=l<0?0:l);var u=Zt(e);return u.size=0===s?s:e.size&&s||void 0,!r&&oe(e)&&s>=0&&(u.get=function(t,n){return(t=T(this,t))>=0&&ts)return{value:void 0,done:!0};var e=o.next();return r||t===A?e:j(t,l-1,t===O?void 0:e.value[1],e)})},u}function Vt(e,t,n,r){var o=Zt(e);return o.__iterateUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterate(o,i);var s=!0,l=0;return e.__iterate(function(e,i,u){if(!s||!(s=t.call(n,e,i,u)))return l++,o(e,r?i:l-1,a)}),l},o.__iteratorUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterator(o,i);var s=e.__iterator(M,i),l=!0,u=0;return new U(function(){var e,i,c;do{if((e=s.next()).done)return r||o===A?e:j(o,u++,o===O?void 0:e.value[1],e);var f=e.value;i=f[0],c=f[1],l&&(l=t.call(n,c,i,a))}while(l);return o===M?e:j(o,i,c,e)})},o}function Ht(e,t,n){var r=Zt(e);return r.__iterateUncached=function(r,o){var i=0,s=!1;return function e(l,u){var c=this;l.__iterate(function(o,l){return(!t||u0}function Kt(e,t,r){var o=Zt(e);return o.size=new ee(r).map(function(e){return e.size}).min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(A,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var i=r.map(function(e){return e=n(e),V(o?e.reverse():e)}),a=0,s=!1;return new U(function(){var n;return s||(n=i.map(function(e){return e.next()}),s=n.some(function(e){return e.done})),s?{value:void 0,done:!0}:j(e,a++,t.apply(null,n.map(function(e){return e.value})))})},o}function $t(e,t){return oe(e)?t:e.constructor(t)}function Qt(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Xt(e){return Fe(e.size),w(e)}function Jt(e){return s(e)?r:l(e)?o:i}function Zt(e){return Object.create((s(e)?W:l(e)?K:$).prototype)}function en(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):z.prototype.cacheResult.call(this)}function tn(e,t){return e>t?1:e=0;n--)t={value:arguments[n],next:t};return this.__ownerID?(this.size=e,this._head=t,this.__hash=void 0,this.__altered=!0,this):xn(e,t)},Cn.prototype.pushAll=function(e){if(0===(e=o(e)).size)return this;Fe(e.size);var t=this.size,n=this._head;return e.reverse().forEach(function(e){t++,n={value:e,next:n}}),this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):xn(t,n)},Cn.prototype.pop=function(){return this.slice(1)},Cn.prototype.unshift=function(){return this.push.apply(this,arguments)},Cn.prototype.unshiftAll=function(e){return this.pushAll(e)},Cn.prototype.shift=function(){return this.pop.apply(this,arguments)},Cn.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Rn()},Cn.prototype.slice=function(e,t){if(R(e,t,this.size))return this;var n=k(e,this.size),r=N(t,this.size);if(r!==this.size)return Ee.prototype.slice.call(this,e,t);for(var o=this.size-n,i=this._head;n--;)i=i.next;return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):xn(o,i)},Cn.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?xn(this.size,this._head,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},Cn.prototype.__iterate=function(e,t){if(t)return this.reverse().__iterate(e);for(var n=0,r=this._head;r&&!1!==e(r.value,n++,this);)r=r.next;return n},Cn.prototype.__iterator=function(e,t){if(t)return this.reverse().__iterator(e);var n=0,r=this._head;return new U(function(){if(r){var t=r.value;return r=r.next,j(e,n++,t)}return{value:void 0,done:!0}})},Cn.isStack=Sn;var Dn,wn="@@__IMMUTABLE_STACK__@@",Tn=Cn.prototype;function xn(e,t,n,r){var o=Object.create(Tn);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Rn(){return Dn||(Dn=xn(0))}function kn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}Tn[wn]=!0,Tn.withMutations=qe.withMutations,Tn.asMutable=qe.asMutable,Tn.asImmutable=qe.asImmutable,Tn.wasAltered=qe.wasAltered,n.Iterator=U,kn(n,{toArray:function(){Fe(this.size);var e=new Array(this.size||0);return this.valueSeq().__iterate(function(t,n){e[n]=t}),e},toIndexedSeq:function(){return new Pt(this)},toJS:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJS?e.toJS():e}).__toJS()},toJSON:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJSON?e.toJSON():e}).__toJS()},toKeyedSeq:function(){return new Mt(this,!0)},toMap:function(){return Ue(this.toKeyedSeq())},toObject:function(){Fe(this.size);var e={};return this.__iterate(function(t,n){e[n]=t}),e},toOrderedMap:function(){return kt(this.toKeyedSeq())},toOrderedSet:function(){return _n(s(this)?this.valueSeq():this)},toSet:function(){return ln(s(this)?this.valueSeq():this)},toSetSeq:function(){return new Lt(this)},toSeq:function(){return l(this)?this.toIndexedSeq():s(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Cn(s(this)?this.valueSeq():this)},toList:function(){return dt(s(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(e,t){return 0===this.size?e+t:e+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+t},concat:function(){var t=e.call(arguments,0);return $t(this,function(e,t){var n=s(e),o=[e].concat(t).map(function(e){return a(e)?n&&(e=r(e)):e=n?ae(e):se(Array.isArray(e)?e:[e]),e}).filter(function(e){return 0!==e.size});if(0===o.length)return e;if(1===o.length){var i=o[0];if(i===e||n&&s(i)||l(e)&&l(i))return i}var u=new ee(o);return n?u=u.toKeyedSeq():l(e)||(u=u.toSetSeq()),(u=u.flatten(!0)).size=o.reduce(function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}},0),u}(this,t))},includes:function(e){return this.some(function(t){return me(t,e)})},entries:function(){return this.__iterator(M)},every:function(e,t){Fe(this.size);var n=!0;return this.__iterate(function(r,o,i){if(!e.call(t,r,o,i))return n=!1,!1}),n},filter:function(e,t){return $t(this,Gt(this,e,t,!0))},find:function(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},findEntry:function(e,t){var n;return this.__iterate(function(r,o,i){if(e.call(t,r,o,i))return n=[o,r],!1}),n},findLastEntry:function(e,t){return this.toSeq().reverse().findEntry(e,t)},forEach:function(e,t){return Fe(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){Fe(this.size),e=void 0!==e?""+e:",";var t="",n=!0;return this.__iterate(function(r){n?n=!1:t+=e,t+=null!==r&&void 0!==r?r.toString():""}),t},keys:function(){return this.__iterator(O)},map:function(e,t){return $t(this,jt(this,e,t))},reduce:function(e,t,n){var r,o;return Fe(this.size),arguments.length<2?o=!0:r=t,this.__iterate(function(t,i,a){o?(o=!1,r=t):r=e.call(n,r,t,i,a)}),r},reduceRight:function(e,t,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return $t(this,Bt(this,!0))},slice:function(e,t){return $t(this,qt(this,e,t,!0))},some:function(e,t){return!this.every(Mn(e),t)},sort:function(e){return $t(this,Yt(this,e))},values:function(){return this.__iterator(A)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(e,t){return w(e?this.toSeq().filter(e,t):this)},countBy:function(e,t){return function(e,t,n){var r=Ue().asMutable();return e.__iterate(function(o,i){r.update(t.call(n,o,i,e),0,function(e){return e+1})}),r.asImmutable()}(this,e,t)},equals:function(e){return he(this,e)},entrySeq:function(){var e=this;if(e._cache)return new ee(e._cache);var t=e.toSeq().map(An).toIndexedSeq();return t.fromEntrySeq=function(){return e.toSeq()},t},filterNot:function(e,t){return this.filter(Mn(e),t)},findLast:function(e,t,n){return this.toKeyedSeq().reverse().find(e,t,n)},first:function(){return this.find(x)},flatMap:function(e,t){return $t(this,function(e,t,n){var r=Jt(e);return e.toSeq().map(function(o,i){return r(t.call(n,o,i,e))}).flatten(!0)}(this,e,t))},flatten:function(e){return $t(this,Ht(this,e,!0))},fromEntrySeq:function(){return new Ft(this)},get:function(e,t){return this.find(function(t,n){return me(n,e)},void 0,t)},getIn:function(e,t){for(var n,r=this,o=nn(e);!(n=o.next()).done;){var i=n.value;if((r=r&&r.get?r.get(i,v):v)===v)return t}return r},groupBy:function(e,t){return function(e,t,n){var r=s(e),o=(c(e)?kt():Ue()).asMutable();e.__iterate(function(i,a){o.update(t.call(n,i,a,e),function(e){return(e=e||[]).push(r?[a,i]:i),e})});var i=Jt(e);return o.map(function(t){return $t(e,i(t))})}(this,e,t)},has:function(e){return this.get(e,v)!==v},hasIn:function(e){return this.getIn(e,v)!==v},isSubset:function(e){return e="function"==typeof e.includes?e:n(e),this.every(function(t){return e.includes(t)})},isSuperset:function(e){return(e="function"==typeof e.isSubset?e:n(e)).isSubset(this)},keySeq:function(){return this.toSeq().map(On).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},max:function(e){return zt(this,e)},maxBy:function(e,t){return zt(this,t,e)},min:function(e){return zt(this,e?Pn(e):Un)},minBy:function(e,t){return zt(this,t?Pn(t):Un,e)},rest:function(){return this.slice(1)},skip:function(e){return this.slice(Math.max(0,e))},skipLast:function(e){return $t(this,this.toSeq().reverse().skip(e).reverse())},skipWhile:function(e,t){return $t(this,Vt(this,e,t,!0))},skipUntil:function(e,t){return this.skipWhile(Mn(e),t)},sortBy:function(e,t){return $t(this,Yt(this,t,e))},take:function(e){return this.slice(0,Math.max(0,e))},takeLast:function(e){return $t(this,this.toSeq().reverse().take(e).reverse())},takeWhile:function(e,t){return $t(this,function(e,t,n){var r=Zt(e);return r.__iterateUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterate(r,o);var a=0;return e.__iterate(function(e,o,s){return t.call(n,e,o,s)&&++a&&r(e,o,i)}),a},r.__iteratorUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterator(r,o);var a=e.__iterator(M,o),s=!0;return new U(function(){if(!s)return{value:void 0,done:!0};var e=a.next();if(e.done)return e;var o=e.value,l=o[0],u=o[1];return t.call(n,u,l,i)?r===M?e:j(r,l,u,e):(s=!1,{value:void 0,done:!0})})},r}(this,e,t))},takeUntil:function(e,t){return this.takeWhile(Mn(e),t)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=function(e){if(e.size===1/0)return 0;var t=c(e),n=s(e),r=t?1:0;return function(e,t){return t=Se(t,3432918353),t=Se(t<<15|t>>>-15,461845907),t=Se(t<<13|t>>>-13,5),t=Se((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=De((t=Se(t^t>>>13,3266489909))^t>>>16)}(e.__iterate(n?t?function(e,t){r=31*r+jn(we(e),we(t))|0}:function(e,t){r=r+jn(we(e),we(t))|0}:t?function(e){r=31*r+we(e)|0}:function(e){r=r+we(e)|0}),r)}(this))}});var Nn=n.prototype;Nn[f]=!0,Nn[F]=Nn.values,Nn.__toJS=Nn.toArray,Nn.__toStringMapper=Ln,Nn.inspect=Nn.toSource=function(){return this.toString()},Nn.chain=Nn.flatMap,Nn.contains=Nn.includes,function(){try{Object.defineProperty(Nn,"length",{get:function(){if(!n.noLengthWarning){var e;try{throw new Error}catch(t){e=t.stack}if(-1===e.indexOf("_wrapObject"))return console&&console.warn&&console.warn("iterable.length has been deprecated, use iterable.size or iterable.count(). This warning will become a silent error in a future version. "+e),this.size}}})}catch(e){}}(),kn(r,{flip:function(){return $t(this,Ut(this))},findKey:function(e,t){var n=this.findEntry(e,t);return n&&n[0]},findLastKey:function(e,t){return this.toSeq().reverse().findKey(e,t)},keyOf:function(e){return this.findKey(function(t){return me(t,e)})},lastKeyOf:function(e){return this.findLastKey(function(t){return me(t,e)})},mapEntries:function(e,t){var n=this,r=0;return $t(this,this.toSeq().map(function(o,i){return e.call(t,[i,o],r++,n)}).fromEntrySeq())},mapKeys:function(e,t){var n=this;return $t(this,this.toSeq().flip().map(function(r,o){return e.call(t,r,o,n)}).flip())}});var In=r.prototype;function On(e,t){return t}function An(e,t){return[t,e]}function Mn(e){return function(){return!e.apply(this,arguments)}}function Pn(e){return function(){return-e.apply(this,arguments)}}function Ln(e){return"string"==typeof e?JSON.stringify(e):e}function Fn(){return D(arguments)}function Un(e,t){return et?-1:0}function jn(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}return In[d]=!0,In[F]=Nn.entries,In.__toJS=Nn.toObject,In.__toStringMapper=function(e,t){return JSON.stringify(t)+": "+Ln(e)},kn(o,{toKeyedSeq:function(){return new Mt(this,!1)},filter:function(e,t){return $t(this,Gt(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.toKeyedSeq().keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.toKeyedSeq().reverse().keyOf(e);return void 0===t?-1:t},reverse:function(){return $t(this,Bt(this,!1))},slice:function(e,t){return $t(this,qt(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(0|t,0),0===n||2===n&&!t)return this;e=k(e,e<0?this.count():this.size);var r=this.slice(0,e);return $t(this,1===n?r:r.concat(D(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.toKeyedSeq().findLastKey(e,t);return void 0===n?-1:n},first:function(){return this.get(0)},flatten:function(e){return $t(this,Ht(this,e,!1))},get:function(e,t){return(e=T(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find(function(t,n){return n===e},void 0,t)},has:function(e){return(e=T(this,e))>=0&&(void 0!==this.size?this.size===1/0||e0;)p(e)}function p(e){var t=e.shift();if("function"!=typeof t)t._settlePromises();else{var n=e.shift(),r=e.shift();t.call(n,r)}}l.prototype.setScheduler=function(e){var t=this._schedule;return this._schedule=e,this._customScheduler=!0,t},l.prototype.hasCustomScheduler=function(){return this._customScheduler},l.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},l.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},l.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},l.prototype.fatalError=function(e,n){n?(t.stderr.write("Fatal "+(e instanceof Error?e.stack:e)+"\n"),t.exit(2)):this.throwLater(e)},l.prototype.throwLater=function(e,t){if(1===arguments.length&&(t=e,e=function(){throw t}),"undefined"!=typeof setTimeout)setTimeout(function(){e(t)},0);else try{this._schedule(function(){e(t)})}catch(e){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(l.prototype.invokeLater=function(e,t,n){this._trampolineEnabled?u.call(this,e,t,n):this._schedule(function(){setTimeout(function(){e.call(t,n)},100)})},l.prototype.invoke=function(e,t,n){this._trampolineEnabled?c.call(this,e,t,n):this._schedule(function(){e.call(t,n)})},l.prototype.settlePromises=function(e){this._trampolineEnabled?f.call(this,e):this._schedule(function(){e._settlePromises()})}):(l.prototype.invokeLater=u,l.prototype.invoke=c,l.prototype.settlePromises=f),l.prototype._drainQueues=function(){d(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,d(this._lateQueue)},l.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},l.prototype._reset=function(){this._isTickUsed=!1},n.exports=l,n.exports.firstLineError=o},{"./queue":26,"./schedule":29,"./util":36}],3:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){var o=!1,i=function(e,t){this._reject(t)},a=function(e,t){t.promiseRejectionQueued=!0,t.bindingPromise._then(i,i,null,this,e)},s=function(e,t){0==(50397184&this._bitField)&&this._resolveCallback(t.target)},l=function(e,t){t.promiseRejectionQueued||this._reject(e)};e.prototype.bind=function(i){o||(o=!0,e.prototype._propagateFrom=r.propagateFromFunction(),e.prototype._boundValue=r.boundValueFunction());var u=n(i),c=new e(t);c._propagateFrom(this,1);var f=this._target();if(c._setBoundTo(u),u instanceof e){var d={promiseRejectionQueued:!1,promise:c,target:f,bindingPromise:u};f._then(t,a,void 0,c,d),u._then(s,l,void 0,c,d),c._setOnCancel(u)}else c._resolveCallback(f);return c},e.prototype._setBoundTo=function(e){void 0!==e?(this._bitField=2097152|this._bitField,this._boundTo=e):this._bitField=-2097153&this._bitField},e.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},e.bind=function(t,n){return e.resolve(n).bind(t)}}},{}],4:[function(e,t,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var o=e("./promise")();o.noConflict=function(){try{Promise===o&&(Promise=r)}catch(e){}return o},t.exports=o},{"./promise":22}],5:[function(e,t,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}t.exports=function(t){var n=e("./util"),r=n.canEvaluate;function o(e){var r=this.pop(),o=function(e,r){var o;if(null!=e&&(o=e[r]),"function"!=typeof o){var i="Object "+n.classString(e)+" has no method '"+n.toString(r)+"'";throw new t.TypeError(i)}return o}(e,r);return o.apply(e,this)}function i(e){return e[this]}function a(e){var t=+this;return t<0&&(t=Math.max(0,t+e.length)),e[t]}n.isIdentifier,t.prototype.call=function(e){var t=[].slice.call(arguments,1);return t.push(e),this._then(o,void 0,void 0,t,void 0)},t.prototype.get=function(e){var t,n="number"==typeof e;if(n)t=a;else if(r){var o=(void 0)(e);t=null!==o?o:i}else t=i;return this._then(t,void 0,void 0,e,void 0)}}},{"./util":36}],6:[function(e,t,n){"use strict";t.exports=function(t,n,r,o){var i=e("./util"),a=i.tryCatch,s=i.errorObj,l=t._async;t.prototype.break=t.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var e=this,t=e;e._isCancellable();){if(!e._cancelBy(t)){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}var n=e._cancellationParent;if(null==n||!n._isCancellable()){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}e._isFollowing()&&e._followee().cancel(),e._setWillBeCancelled(),t=e,e=n}},t.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},t.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},t.prototype._cancelBy=function(e){return e===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},t.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},t.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),l.invoke(this._cancelPromises,this,void 0))},t.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},t.prototype._unsetOnCancel=function(){this._onCancelField=void 0},t.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},t.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},t.prototype._doInvokeOnCancel=function(e,t){if(i.isArray(e))for(var n=0;n=0)return n[e]}return e.prototype._promiseCreated=function(){},e.prototype._pushContext=function(){},e.prototype._popContext=function(){return null},e._peekContext=e.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var e=n.pop(),t=e._promiseCreated;return e._promiseCreated=null,t}return null},r.CapturedTrace=null,r.create=function(){if(t)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=e.prototype._pushContext,i=e.prototype._popContext,a=e._peekContext,s=e.prototype._peekContext,l=e.prototype._promiseCreated;r.deactivateLongStackTraces=function(){e.prototype._pushContext=n,e.prototype._popContext=i,e._peekContext=a,e.prototype._peekContext=s,e.prototype._promiseCreated=l,t=!1},t=!0,e.prototype._pushContext=r.prototype._pushContext,e.prototype._popContext=r.prototype._popContext,e._peekContext=e.prototype._peekContext=o,e.prototype._promiseCreated=function(){var e=this._peekContext();e&&null==e._promiseCreated&&(e._promiseCreated=this)}},r}},{}],9:[function(e,n,r){"use strict";n.exports=function(n,r){var o,i,a,s=n._getDomain,l=n._async,u=e("./errors").Warning,c=e("./util"),f=e("./es5"),d=c.canAttachTrace,p=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,m=/\((?:timers\.js):\d+:\d+\)/,h=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,_=null,g=null,v=!1,y=!(0==c.env("BLUEBIRD_DEBUG")),b=!(0==c.env("BLUEBIRD_WARNINGS")||!y&&!c.env("BLUEBIRD_WARNINGS")),E=!(0==c.env("BLUEBIRD_LONG_STACK_TRACES")||!y&&!c.env("BLUEBIRD_LONG_STACK_TRACES")),C=0!=c.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!c.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var e=this._target();e._bitField=-1048577&e._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var e=this;setTimeout(function(){e._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){Y("rejectionHandled",o,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var e=this._settledValue();this._setUnhandledRejectionIsNotified(),Y("unhandledRejection",i,e,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(e,t,n){return G(e,t,n||this)},n.onPossiblyUnhandledRejection=function(e){var t=s();i="function"==typeof e?null===t?e:c.domainBind(t,e):void 0},n.onUnhandledRejectionHandled=function(e){var t=s();o="function"==typeof e?null===t?e:c.domainBind(t,e):void 0};var S=function(){};n.longStackTraces=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&W()){var e=n.prototype._captureStackTrace,t=n.prototype._attachExtraTrace,o=n.prototype._dereferenceTrace;Z.longStackTraces=!0,S=function(){if(l.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=e,n.prototype._attachExtraTrace=t,n.prototype._dereferenceTrace=o,r.deactivateLongStackTraces(),l.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=U,n.prototype._attachExtraTrace=j,n.prototype._dereferenceTrace=B,r.activateLongStackTraces(),l.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&W()};var D=function(){try{if("function"==typeof CustomEvent){var e=new CustomEvent("CustomEvent");return c.global.dispatchEvent(e),function(e,t){var n={detail:t,cancelable:!0};f.defineProperty(n,"promise",{value:t.promise}),f.defineProperty(n,"reason",{value:t.reason});var r=new CustomEvent(e.toLowerCase(),n);return!c.global.dispatchEvent(r)}}if("function"==typeof Event){var e=new Event("CustomEvent");return c.global.dispatchEvent(e),function(e,t){var n=new Event(e.toLowerCase(),{cancelable:!0});return n.detail=t,f.defineProperty(n,"promise",{value:t.promise}),f.defineProperty(n,"reason",{value:t.reason}),!c.global.dispatchEvent(n)}}var e=document.createEvent("CustomEvent");return e.initCustomEvent("testingtheevent",!1,!0,{}),c.global.dispatchEvent(e),function(e,t){var n=document.createEvent("CustomEvent");return n.initCustomEvent(e.toLowerCase(),!1,!0,t),!c.global.dispatchEvent(n)}}catch(e){}return function(){return!1}}(),w=c.isNode?function(){return t.emit.apply(t,arguments)}:c.global?function(e){var t="on"+e.toLowerCase(),n=c.global[t];return!!n&&(n.apply(c.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function T(e,t){return{promise:t}}var x={promiseCreated:T,promiseFulfilled:T,promiseRejected:T,promiseResolved:T,promiseCancelled:T,promiseChained:function(e,t,n){return{promise:t,child:n}},warning:function(e,t){return{warning:t}},unhandledRejection:function(e,t,n){return{reason:t,promise:n}},rejectionHandled:T},R=function(e){var t=!1;try{t=w.apply(null,arguments)}catch(e){l.throwLater(e),t=!0}var n=!1;try{n=D(e,x[e].apply(null,arguments))}catch(e){l.throwLater(e),n=!0}return n||t};function k(){return!1}function N(e,t,n){var r=this;try{e(t,n,function(e){if("function"!=typeof e)throw new TypeError("onCancel must be a function, got: "+c.toString(e));r._attachCancellationCallback(e)})}catch(e){return e}}function I(e){if(!this._isCancellable())return this;var t=this._onCancel();void 0!==t?c.isArray(t)?t.push(e):this._setOnCancel([t,e]):this._setOnCancel(e)}function O(){return this._onCancelField}function A(e){this._onCancelField=e}function M(){this._cancellationParent=void 0,this._onCancelField=void 0}function P(e,t){if(0!=(1&t)){this._cancellationParent=e;var n=e._branchesRemainingToCancel;void 0===n&&(n=0),e._branchesRemainingToCancel=n+1}0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)}n.config=function(e){if("longStackTraces"in(e=Object(e))&&(e.longStackTraces?n.longStackTraces():!e.longStackTraces&&n.hasLongStackTraces()&&S()),"warnings"in e){var t=e.warnings;Z.warnings=!!t,C=Z.warnings,c.isObject(t)&&"wForgottenReturn"in t&&(C=!!t.wForgottenReturn)}if("cancellation"in e&&e.cancellation&&!Z.cancellation){if(l.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=M,n.prototype._propagateFrom=P,n.prototype._onCancel=O,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=I,n.prototype._execute=N,L=P,Z.cancellation=!0}return"monitoring"in e&&(e.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=R):!e.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=k)),n},n.prototype._fireEvent=k,n.prototype._execute=function(e,t,n){try{e(t,n)}catch(e){return e}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(e){},n.prototype._attachCancellationCallback=function(e){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(e,t){};var L=function(e,t){0!=(2&t)&&e._isBound()&&this._setBoundTo(e._boundTo)};function F(){var e=this._boundTo;return void 0!==e&&e instanceof n?e.isFulfilled()?e.value():void 0:e}function U(){this._trace=new X(this._peekContext())}function j(e,t){if(d(e)){var n=this._trace;if(void 0!==n&&t&&(n=n._parent),void 0!==n)n.attachExtraTrace(e);else if(!e.__stackCleaned__){var r=V(e);c.notEnumerableProp(e,"stack",r.message+"\n"+r.stack.join("\n")),c.notEnumerableProp(e,"__stackCleaned__",!0)}}}function B(){this._trace=void 0}function G(e,t,r){if(Z.warnings){var o,i=new u(e);if(t)r._attachExtraTrace(i);else if(Z.longStackTraces&&(o=n._peekContext()))o.attachExtraTrace(i);else{var a=V(i);i.stack=a.message+"\n"+a.stack.join("\n")}R("warning",i)||H(i,"",!0)}}function q(e){for(var t=[],n=0;n0?function(e){for(var t=e.stack.replace(/\s+$/g,"").split("\n"),n=0;n0&&"SyntaxError"!=e.name&&(t=t.slice(n)),t}(e):[" (No stack trace)"],{message:n,stack:"SyntaxError"==e.name?t:q(t)}}function H(e,t,n){if("undefined"!=typeof console){var r;if(c.isObject(e)){var o=e.stack;r=t+g(o,e)}else r=t+String(e);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function Y(e,t,n,r){var o=!1;try{"function"==typeof t&&(o=!0,"rejectionHandled"===e?t(r):t(n,r))}catch(e){l.throwLater(e)}"unhandledRejection"===e?R(e,n,r)||o||H(n,"Unhandled rejection "):R(e,r)}function z(e){var t;if("function"==typeof e)t="[function "+(e.name||"anonymous")+"]";else{if(t=e&&"function"==typeof e.toString?e.toString():c.toString(e),/\[object [a-zA-Z0-9$_]+\]/.test(t))try{var n=JSON.stringify(e);t=n}catch(e){}0===t.length&&(t="(empty array)")}return"(<"+function(e){return e.length<41?e:e.substr(0,38)+"..."}(t)+">, no stack trace)"}function W(){return"function"==typeof J}var K=function(){return!1},$=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function Q(e){var t=e.match($);if(t)return{fileName:t[1],line:parseInt(t[2],10)}}function X(e){this._parent=e,this._promisesCreated=0;var t=this._length=1+(void 0===e?0:e._length);J(this,X),t>32&&this.uncycle()}c.inherits(X,Error),r.CapturedTrace=X,X.prototype.uncycle=function(){var e=this._length;if(!(e<2)){for(var t=[],n={},r=0,o=this;void 0!==o;++r)t.push(o),o=o._parent;for(var r=(e=this._length=r)-1;r>=0;--r){var i=t[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r0&&(t[s-1]._parent=void 0,t[s-1]._length=1),t[r]._parent=void 0,t[r]._length=1;var l=r>0?t[r-1]:this;s=0;--c)t[c]._length=u,u++;return}}}},X.prototype.attachExtraTrace=function(e){if(!e.__stackCleaned__){this.uncycle();for(var t=V(e),n=t.message,r=[t.stack],o=this;void 0!==o;)r.push(q(o.stack.split("\n"))),o=o._parent;!function(e){for(var t=e[0],n=1;n=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var l=r[s];if(t[o]!==l)break;t.pop(),o--}t=r}}(r),function(e){for(var t=0;t=0)return _=/@/,g=t,v=!0,function(e){e.stack=(new Error).stack};try{throw new Error}catch(e){r="stack"in e}return"stack"in o||!r||"number"!=typeof Error.stackTraceLimit?(g=function(e,t){return"string"==typeof e?e:"object"!=typeof t&&"function"!=typeof t||void 0===t.name||void 0===t.message?z(t):t.toString()},null):(_=e,g=t,function(e){Error.stackTraceLimit+=6;try{throw new Error}catch(t){e.stack=t.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(e){console.warn(e)},c.isNode&&t.stderr.isTTY?a=function(e,t){var n=t?"":"";console.warn(n+e+"\n")}:c.isNode||"string"!=typeof(new Error).stack||(a=function(e,t){console.warn("%c"+e,t?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return E&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return L},boundValueFunction:function(){return F},checkForgottenReturns:function(e,t,n,r,o){if(void 0===e&&null!==t&&C){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var i="",a="";if(t._trace){for(var s=t._trace.stack.split("\n"),l=q(s),u=l.length-1;u>=0;--u){var c=l[u];if(!m.test(c)){var f=c.match(h);f&&(i="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(l.length>0)for(var d=l[0],u=0;u0&&(a="\n"+s[u-1]);break}}var p="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(p,!0,t)}},setBounds:function(e,t){if(W()){for(var n,r,o=e.stack.split("\n"),i=t.stack.split("\n"),a=-1,s=-1,l=0;l=s||(K=function(e){if(p.test(e))return!0;var t=Q(e);return!!(t&&t.fileName===n&&a<=t.line&&t.line<=s)})}},warn:G,deprecated:function(e,t){var n=e+" is deprecated and will be removed in a future version.";return t&&(n+=" Use "+t+" instead."),G(n)},CapturedTrace:X,fireDomEvent:D,fireGlobalEvent:w}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(e,t,n){"use strict";t.exports=function(e){function t(){return this.value}function n(){throw this.reason}e.prototype.return=e.prototype.thenReturn=function(n){return n instanceof e&&n.suppressUnhandledRejections(),this._then(t,void 0,void 0,{value:n},void 0)},e.prototype.throw=e.prototype.thenThrow=function(e){return this._then(n,void 0,void 0,{reason:e},void 0)},e.prototype.catchThrow=function(e){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:e},void 0);var t=arguments[1];return this.caught(e,function(){throw t})},e.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof e&&n.suppressUnhandledRejections(),this._then(void 0,t,void 0,{value:n},void 0);var r=arguments[1];return r instanceof e&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(e,t,n){"use strict";t.exports=function(e,t){var n=e.reduce,r=e.all;function o(){return r(this)}e.prototype.each=function(e){return n(this,e,t,0)._then(o,void 0,void 0,this,void 0)},e.prototype.mapSeries=function(e){return n(this,e,t,t)},e.each=function(e,r){return n(e,r,t,0)._then(o,void 0,void 0,e,void 0)},e.mapSeries=function(e,r){return n(e,r,t,t)}}},{}],12:[function(e,t,n){"use strict";var r,o,i=e("./es5"),a=i.freeze,s=e("./util"),l=s.inherits,u=s.notEnumerableProp;function c(e,t){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:t),u(this,"name",e),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return l(n,Error),n}var f=c("Warning","warning"),d=c("CancellationError","cancellation error"),p=c("TimeoutError","timeout error"),m=c("AggregateError","aggregate error");try{r=TypeError,o=RangeError}catch(e){r=c("TypeError","type error"),o=c("RangeError","range error")}for(var h="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),_=0;_1?e.cancelPromise._reject(t):e.cancelPromise._cancel(),e.cancelPromise=null,!0)}function f(){return p.call(this,this.promise._target()._settledValue())}function d(e){if(!c(this,e))return a.e=e,a}function p(e){var o=this.promise,s=this.handler;if(!this.called){this.called=!0;var l=this.isFinallyHandler()?s.call(o._boundValue()):s.call(o._boundValue(),e);if(l===r)return l;if(void 0!==l){o._setReturnedNonUndefined();var p=n(l,o);if(p instanceof t){if(null!=this.cancelPromise){if(p._isCancelled()){var m=new i("late cancellation observer");return o._attachExtraTrace(m),a.e=m,a}p.isPending()&&p._attachCancellationCallback(new u(this))}return p._then(f,d,void 0,this,void 0)}}}return o.isRejected()?(c(this),a.e=e,a):(c(this),e)}return l.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){c(this.finallyHandler)},t.prototype._passThrough=function(e,t,n,r){return"function"!=typeof e?this.then():this._then(n,r,void 0,new l(this,t,e),void 0)},t.prototype.lastly=t.prototype.finally=function(e){return this._passThrough(e,0,p,p)},t.prototype.tap=function(e){return this._passThrough(e,1,p)},t.prototype.tapCatch=function(e){var n=arguments.length;if(1===n)return this._passThrough(e,1,void 0,p);var r,i=new Array(n-1),a=0;for(r=0;r0&&"function"==typeof arguments[t]&&(e=arguments[t]);var r=[].slice.call(arguments);e&&r.pop();var o=new n(r).promise();return void 0!==e?o.spread(e):o}}},{"./util":36}],18:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=t._getDomain,l=e("./util"),u=l.tryCatch,c=l.errorObj,f=t._async;function d(e,t,n,r){this.constructor$(e),this._promise._captureStackTrace();var o=s();this._callback=null===o?t:l.domainBind(o,t),this._preservedValues=r===i?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function p(e,n,o,i){if("function"!=typeof n)return r("expecting a function but got "+l.classString(n));var a=0;if(void 0!==o){if("object"!=typeof o||null===o)return t.reject(new TypeError("options argument must be an object but it is "+l.classString(o)));if("number"!=typeof o.concurrency)return t.reject(new TypeError("'concurrency' must be a number but it is "+l.classString(o.concurrency)));a=o.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new d(e,n,a,i).promise()}l.inherits(d,n),d.prototype._asyncInit=function(){this._init$(void 0,-2)},d.prototype._init=function(){},d.prototype._promiseFulfilled=function(e,n){var r=this._values,i=this.length(),s=this._preservedValues,l=this._limit;if(n<0){if(r[n=-1*n-1]=e,l>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(l>=1&&this._inFlight>=l)return r[n]=e,this._queue.push(n),!1;null!==s&&(s[n]=e);var f=this._promise,d=this._callback,p=f._boundValue();f._pushContext();var m=u(d).call(p,e,n,i),h=f._popContext();if(a.checkForgottenReturns(m,h,null!==s?"Promise.filter":"Promise.map",f),m===c)return this._reject(m.e),!0;var _=o(m,this._promise);if(_ instanceof t){var g=(_=_._target())._bitField;if(0==(50397184&g))return l>=1&&this._inFlight++,r[n]=_,_._proxy(this,-1*(n+1)),!1;if(0==(33554432&g))return 0!=(16777216&g)?(this._reject(_._reason()),!0):(this._cancel(),!0);m=_._value()}r[n]=m}var v=++this._totalResolved;return v>=i&&(null!==s?this._filter(r,s):this._resolve(r),!0)},d.prototype._drainQueue=function(){for(var e=this._queue,t=this._limit,n=this._values;e.length>0&&this._inFlight1){i.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],c=arguments[2];r=a.isArray(u)?s(e).apply(c,u):s(e).call(c,u)}else r=s(e)();var f=l._popContext();return i.checkForgottenReturns(r,f,"Promise.try",l),l._resolveFromSyncValue(r),l},t.prototype._resolveFromSyncValue=function(e){e===a.errorObj?this._rejectCallback(e.e,!1):this._resolveCallback(e,!0)}}},{"./util":36}],20:[function(e,t,n){"use strict";var r=e("./util"),o=r.maybeWrapAsError,i=e("./errors"),a=i.OperationalError,s=e("./es5"),l=/^(?:name|message|stack|cause)$/;function u(e){var t;if(function(e){return e instanceof Error&&s.getPrototypeOf(e)===Error.prototype}(e)){(t=new a(e)).name=e.name,t.message=e.message,t.stack=e.stack;for(var n=s.keys(e),o=0;o1){var n,r=new Array(t-1),o=0;for(n=0;n0&&"function"!=typeof e&&"function"!=typeof t){var n=".then() only accepts functions but was passed: "+u.classString(e);arguments.length>1&&(n+=", "+u.classString(t)),this._warn(n)}return this._then(e,t,void 0,void 0,void 0)},k.prototype.done=function(e,t){var n=this._then(e,t,void 0,void 0,void 0);n._setIsFinal()},k.prototype.spread=function(e){return"function"!=typeof e?i("expecting a function but got "+u.classString(e)):this.all()._then(e,void 0,void 0,g,void 0)},k.prototype.toJSON=function(){var e={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(e.fulfillmentValue=this.value(),e.isFulfilled=!0):this.isRejected()&&(e.rejectionReason=this.reason(),e.isRejected=!0),e},k.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},k.prototype.error=function(e){return this.caught(u.originatesFromRejection,e)},k.getNewLibraryCopy=n.exports,k.is=function(e){return e instanceof k},k.fromNode=k.fromCallback=function(e){var t=new k(_);t._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=R(e)(T(t,n));return r===x&&t._rejectCallback(r.e,!0),t._isFateSealed()||t._setAsyncGuaranteed(),t},k.all=function(e){return new b(e).promise()},k.cast=function(e){var t=y(e);return t instanceof k||((t=new k(_))._captureStackTrace(),t._setFulfilled(),t._rejectionHandler0=e),t},k.resolve=k.fulfilled=k.cast,k.reject=k.rejected=function(e){var t=new k(_);return t._captureStackTrace(),t._rejectCallback(e,!0),t},k.setScheduler=function(e){if("function"!=typeof e)throw new m("expecting a function but got "+u.classString(e));return d.setScheduler(e)},k.prototype._then=function(e,t,n,r,o){var i=void 0!==o,a=i?o:new k(_),l=this._target(),c=l._bitField;i||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&c)?this._boundValue():l===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&c)){var p,m,g=l._settlePromiseCtx;0!=(33554432&c)?(m=l._rejectionHandler0,p=e):0!=(16777216&c)?(m=l._fulfillmentHandler0,p=t,l._unsetRejectionIsUnhandled()):(g=l._settlePromiseLateCancellationObserver,m=new h("late cancellation observer"),l._attachExtraTrace(m),p=t),d.invoke(g,l,{handler:null===f?p:"function"==typeof p&&u.domainBind(f,p),promise:a,receiver:r,value:m})}else l._addCallbacks(e,t,a,r,f);return a},k.prototype._length=function(){return 65535&this._bitField},k.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},k.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},k.prototype._setLength=function(e){this._bitField=-65536&this._bitField|65535&e},k.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},k.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},k.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},k.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},k.prototype._isFinal=function(){return(4194304&this._bitField)>0},k.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},k.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},k.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},k.prototype._setAsyncGuaranteed=function(){d.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},k.prototype._receiverAt=function(e){var t=0===e?this._receiver0:this[4*e-4+3];if(t!==l)return void 0===t&&this._isBound()?this._boundValue():t},k.prototype._promiseAt=function(e){return this[4*e-4+2]},k.prototype._fulfillmentHandlerAt=function(e){return this[4*e-4+0]},k.prototype._rejectionHandlerAt=function(e){return this[4*e-4+1]},k.prototype._boundValue=function(){},k.prototype._migrateCallback0=function(e){e._bitField;var t=e._fulfillmentHandler0,n=e._rejectionHandler0,r=e._promise0,o=e._receiverAt(0);void 0===o&&(o=l),this._addCallbacks(t,n,r,o,null)},k.prototype._migrateCallbackAt=function(e,t){var n=e._fulfillmentHandlerAt(t),r=e._rejectionHandlerAt(t),o=e._promiseAt(t),i=e._receiverAt(t);void 0===i&&(i=l),this._addCallbacks(n,r,o,i,null)},k.prototype._addCallbacks=function(e,t,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof e&&(this._fulfillmentHandler0=null===o?e:u.domainBind(o,e)),"function"==typeof t&&(this._rejectionHandler0=null===o?t:u.domainBind(o,t));else{var a=4*i-4;this[a+2]=n,this[a+3]=r,"function"==typeof e&&(this[a+0]=null===o?e:u.domainBind(o,e)),"function"==typeof t&&(this[a+1]=null===o?t:u.domainBind(o,t))}return this._setLength(i+1),i},k.prototype._proxy=function(e,t){this._addCallbacks(void 0,void 0,t,e,null)},k.prototype._resolveCallback=function(e,t){if(0==(117506048&this._bitField)){if(e===this)return this._rejectCallback(r(),!1);var n=y(e,this);if(!(n instanceof k))return this._fulfill(e);t&&this._propagateFrom(n,2);var o=n._target();if(o!==this){var i=o._bitField;if(0==(50397184&i)){var a=this._length();a>0&&o._migrateCallback0(this);for(var s=1;s>>16)){if(e===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=e,(65535&t)>0&&(0!=(134217728&t)?this._settlePromises():d.settlePromises(this),this._dereferenceTrace())}},k.prototype._reject=function(e){var t=this._bitField;if(!((117506048&t)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=e,this._isFinal())return d.fatalError(e,u.isNode);(65535&t)>0?d.settlePromises(this):this._ensurePossibleRejectionHandled()}},k.prototype._fulfillPromises=function(e,t){for(var n=1;n0){if(0!=(16842752&e)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,e),this._rejectPromises(t,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,e),this._fulfillPromises(t,r)}this._setLength(0)}this._clearCancellationData()},k.prototype._settledValue=function(){var e=this._bitField;return 0!=(33554432&e)?this._rejectionHandler0:0!=(16777216&e)?this._fulfillmentHandler0:void 0},k.defer=k.pending=function(){S.deprecated("Promise.defer","new Promise");var e=new k(_);return{promise:e,resolve:N,reject:I}},u.notEnumerableProp(k,"_makeSelfResolutionError",r),e("./method")(k,_,y,i,S),e("./bind")(k,_,y,S),e("./cancel")(k,b,i,S),e("./direct_resolve")(k),e("./synchronous_inspection")(k),e("./join")(k,b,y,_,d,s),k.Promise=k,k.version="3.5.2",e("./map.js")(k,b,i,y,_,S),e("./call_get.js")(k),e("./using.js")(k,i,y,C,_,S),e("./timers.js")(k,_,S),e("./generators.js")(k,i,_,y,a,S),e("./nodeify.js")(k),e("./promisify.js")(k,_),e("./props.js")(k,b,y,i),e("./race.js")(k,_,y,i),e("./reduce.js")(k,b,i,y,_,S),e("./settle.js")(k,b,S),e("./some.js")(k,b,i),e("./filter.js")(k,_),e("./each.js")(k,_),e("./any.js")(k),u.toFastProperties(k),u.toFastProperties(k.prototype),O({a:1}),O({b:2}),O({c:3}),O(1),O(function(){}),O(void 0),O(!1),O(new k(_)),S.setBounds(f.firstLineError,u.lastLineError),k}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i){var a=e("./util");function s(e){var r=this._promise=new t(n);e instanceof t&&r._propagateFrom(e,3),r._setOnCancel(this),this._values=e,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,i),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function e(n,i){var s=r(this._values,this._promise);if(s instanceof t){var l=(s=s._target())._bitField;if(this._values=s,0==(50397184&l))return this._promise._setAsyncGuaranteed(),s._then(e,this._reject,void 0,this,i);if(0==(33554432&l))return 0!=(16777216&l)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===i?this._resolveEmptyArray():this._resolve(function(e){switch(e){case-2:return[];case-3:return{};case-6:return new Map}}(i));else{var u=o("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(e){var n=this.getActualLength(e.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,a=null,s=0;s=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(e){return this._totalResolved++,this._reject(e),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var e=this._values;if(this._cancel(),e instanceof t)e.cancel();else for(var n=0;n=this._length){var r;if(this._isMap)r=function(e){for(var t=new i,n=e.length/2|0,r=0;r>1},t.prototype.props=function(){return f(this)},t.props=function(e){return f(e)}}},{"./es5":13,"./util":36}],26:[function(e,t,n){"use strict";function r(e){this._capacity=e,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(e){return this._capacity=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(e,t){var n=new o;return n._bitField=33554432,n._settledValueField=e,this._promiseResolved(t,n)},a.prototype._promiseRejected=function(e,t){var n=new o;return n._bitField=16777216,n._settledValueField=e,this._promiseResolved(t,n)},t.settle=function(e){return r.deprecated(".settle()",".reflect()"),new a(e).promise()},t.prototype.settle=function(){return t.settle(this)}}},{"./util":36}],31:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=e("./util"),i=e("./errors").RangeError,a=e("./errors").AggregateError,s=o.isArray,l={};function u(e){this.constructor$(e),this._howMany=0,this._unwrap=!1,this._initialized=!1}function c(e,t){if((0|t)!==t||t<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(e),o=n.promise();return n.setHowMany(t),n.init(),o}o.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var e=s(this._values);!this._isResolved()&&e&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(e){this._howMany=e},u.prototype._promiseFulfilled=function(e){return this._addFulfilled(e),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(e){return this._addRejected(e),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof t||null==this._values?this._cancel():(this._addRejected(l),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var e=new a,t=this.length();t0?this._reject(e):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(e){this._values.push(e)},u.prototype._addFulfilled=function(e){this._values[this._totalResolved++]=e},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(e){var t="Input array must contain at least "+this._howMany+" items but contains only "+e+" items";return new i(t)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},t.some=function(e,t){return c(e,t)},t.prototype.some=function(e){return c(this,e)},t._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(e,t,n){"use strict";t.exports=function(e){function t(e){void 0!==e?(e=e._target(),this._bitField=e._bitField,this._settledValueField=e._isFateSealed()?e._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}t.prototype._settledValue=function(){return this._settledValueField};var n=t.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=t.prototype.error=t.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=t.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=t.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=t.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=t.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};t.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},e.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},e.prototype._isCancelled=function(){return this._target().__isCancelled()},e.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},e.prototype.isPending=function(){return a.call(this._target())},e.prototype.isRejected=function(){return i.call(this._target())},e.prototype.isFulfilled=function(){return o.call(this._target())},e.prototype.isResolved=function(){return s.call(this._target())},e.prototype.value=function(){return n.call(this._target())},e.prototype.reason=function(){var e=this._target();return e._unsetRejectionIsUnhandled(),r.call(e)},e.prototype._value=function(){return this._settledValue()},e.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},e.PromiseInspection=t}},{}],33:[function(e,t,n){"use strict";t.exports=function(t,n){var r=e("./util"),o=r.errorObj,i=r.isObject,a={}.hasOwnProperty;return function(e,s){if(i(e)){if(e instanceof t)return e;var l=function(e){try{return function(e){return e.then}(e)}catch(e){return o.e=e,o}}(e);if(l===o){s&&s._pushContext();var u=t.reject(l.e);return s&&s._popContext(),u}if("function"==typeof l){if(function(e){try{return a.call(e,"_promise0")}catch(e){return!1}}(e)){var u=new t(n);return e._then(u._fulfill,u._reject,void 0,u,null),u}return function(e,i,a){var s=new t(n),l=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,c=r.tryCatch(i).call(e,function(e){s&&(s._resolveCallback(e),s=null)},function(e){s&&(s._rejectCallback(e,u,!0),s=null)});return u=!1,s&&c===o&&(s._rejectCallback(c.e,!0,!0),s=null),l}(e,l,s)}}return e}}},{"./util":36}],34:[function(e,t,n){"use strict";t.exports=function(t,n,r){var o=e("./util"),i=t.TimeoutError;function a(e){this.handle=e}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(e){return l(+this).thenReturn(e)},l=t.delay=function(e,o){var i,l;return void 0!==o?(i=t.resolve(o)._then(s,null,null,e,void 0),r.cancellation()&&o instanceof t&&i._setOnCancel(o)):(i=new t(n),l=setTimeout(function(){i._fulfill()},+e),r.cancellation()&&i._setOnCancel(new a(l)),i._captureStackTrace()),i._setAsyncGuaranteed(),i};function u(e){return clearTimeout(this.handle),e}function c(e){throw clearTimeout(this.handle),e}t.prototype.delay=function(e){return l(e,this)},t.prototype.timeout=function(e,t){var n,s;e=+e;var l=new a(setTimeout(function(){n.isPending()&&function(e,t,n){var r;r="string"!=typeof t?t instanceof Error?t:new i("operation timed out"):new i(t),o.markAsOriginatingFromRejection(r),e._attachExtraTrace(r),e._reject(r),null!=n&&n.cancel()}(n,t,s)},e));return r.cancellation()?(s=this.then(),(n=s._then(u,c,void 0,l,void 0))._setOnCancel(l)):n=this._then(u,c,void 0,l,void 0),n}}},{"./util":36}],35:[function(e,t,n){"use strict";t.exports=function(t,n,r,o,i,a){var s=e("./util"),l=e("./errors").TypeError,u=e("./util").inherits,c=s.errorObj,f=s.tryCatch,d={};function p(e){setTimeout(function(){throw e},0)}function m(e,n){var o=0,a=e.length,s=new t(i);return function i(){if(o>=a)return s._fulfill();var l=function(e){var t=r(e);return t!==e&&"function"==typeof e._isDisposable&&"function"==typeof e._getDisposer&&e._isDisposable()&&t._setDisposable(e._getDisposer()),t}(e[o++]);if(l instanceof t&&l._isDisposable()){try{l=r(l._getDisposer().tryDispose(n),e.promise)}catch(e){return p(e)}if(l instanceof t)return l._then(i,p,null,null,null)}i()}(),s}function h(e,t,n){this._data=e,this._promise=t,this._context=n}function _(e,t,n){this.constructor$(e,t,n)}function g(e){return h.isDisposer(e)?(this.resources[this.index]._setDisposable(e),e.promise()):e}function v(e){this.length=e,this.promise=null,this[e-1]=null}h.prototype.data=function(){return this._data},h.prototype.promise=function(){return this._promise},h.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():d},h.prototype.tryDispose=function(e){var t=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=t!==d?this.doDispose(t,e):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},h.isDisposer=function(e){return null!=e&&"function"==typeof e.resource&&"function"==typeof e.tryDispose},u(_,h),_.prototype.doDispose=function(e,t){var n=this.data();return n.call(e,e,t)},v.prototype._resultCancelled=function(){for(var e=this.length,n=0;n0},t.prototype._getDisposer=function(){return this._disposer},t.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},t.prototype.disposer=function(e){if("function"==typeof e)return new _(e,this,o());throw new l}}},{"./errors":12,"./util":36}],36:[function(e,r,o){"use strict";var i=e("./es5"),a="undefined"==typeof navigator,s={e:{}},l,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function c(){try{var e=l;return l=null,e.apply(this,arguments)}catch(e){return s.e=e,s}}function f(e){return l=e,c}var d=function(e,t){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=e,this.constructor$=t,t.prototype)n.call(t.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=t.prototype[r])}return r.prototype=t.prototype,e.prototype=new r,e.prototype};function p(e){return null==e||!0===e||!1===e||"string"==typeof e||"number"==typeof e}function m(e){return"function"==typeof e||"object"==typeof e&&null!==e}function h(e){return p(e)?new Error(x(e)):e}function _(e,t){var n,r=e.length,o=new Array(r+1);for(n=0;n1,r=t.length>0&&!(1===t.length&&"constructor"===t[0]),o=E.test(e+"")&&i.names(e).length>0;if(n||r||o)return!0}return!1}catch(e){return!1}}function S(e){function t(){}t.prototype=e;var n=new t;function r(){return typeof n.foo}return r(),r(),e}var D=/^[a-z$_][a-z$_0-9]*$/i;function w(e){return D.test(e)}function T(e,t,n){for(var r=new Array(e),o=0;o10||e[0]>0}(),q.isNode&&q.toFastProperties(t);try{throw new Error}catch(e){q.lastLineError=e}r.exports=q},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(54),n(15),n(187).setImmediate)},function(e,t,n){"use strict";(function(t){var r=u(n(11)),o=u(n(4)),i=u(n(5)),a=u(n(12)),s=u(n(233)),l=u(n(13));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(e){function t(){return(0,o.default)(this,t),(0,a.default)(this,(t.__proto__||(0,r.default)(t)).apply(this,arguments))}return(0,l.default)(t,e),(0,i.default)(t,[{key:"dispatch",value:function(e,n){var o=this;"function"!=typeof e?n?(0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"dispatch",this).call(this,e):setTimeout((0,s.default)(t.prototype.__proto__||(0,r.default)(t.prototype),"dispatch",this).bind(this,e),0):e(function(e){o.dispatch(e,n)})}}]),t}(n(1149).Dispatcher);void 0===t.mxDispatcher&&(t.mxDispatcher=new c),e.exports=t.mxDispatcher}).call(this,n(15))},function(e,t,n){e.exports={default:n(986),__esModule:!0}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(64));t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,r.default)(t))&&"function"!=typeof t?e:t}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(1091)),o=a(n(67)),i=a(n(64));function a(e){return e&&e.__esModule?e:{default:e}}t.default=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":(0,i.default)(t)));e.prototype=(0,o.default)(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(r.default?(0,r.default)(e,t):e.__proto__=t)}},function(e,t,n){e.exports={default:n(219),__esModule:!0}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=d(n(37)),i=d(n(4)),a=d(n(5)),s=d(n(128)),l=d(n(1)),u=d(n(90)),c=d(n(3)),f=d(n(10));function d(e){return e&&e.__esModule?e:{default:e}}var p=n(0),m=n(41),h=p.createClass({displayName:"AsyncWrapper",propTypes:{loader:l.default.func.isRequired},getInitialState:function(){return{component:null}},componentWillMount:function(){var e=this;this._unmounted=!1,console.log("Starting load of AsyncWrapper for modal"),this.props.loader(function(t){console.log("AsyncWrapper load completed with "+t.displayName),e._unmounted||e.setState({component:t})})},componentWillUnmount:function(){this._unmounted=!0},render:function(){var e=this.props,t=(e.loader,(0,s.default)(e,["loader"]));if(this.state.component){var n=this.state.component;return p.createElement(n,t)}var r=c.default.getComponent("elements.Spinner");return p.createElement(r,null)}}),_=function(){function e(){(0,i.default)(this,e),this._counter=0,this._priorityModal=null,this._modals=[],this.closeAll=this.closeAll.bind(this)}return(0,a.default)(e,[{key:"getOrCreateContainer",value:function(){var e=document.getElementById("mx_Dialog_Container");return e||((e=document.createElement("div")).id="mx_Dialog_Container",document.body.appendChild(e)),e}},{key:"createTrackedDialog",value:function(e,t){u.default.trackEvent("Modal",e,t);for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o1?t-1:0),r=1;r2?n-2:0),o=2;o=0&&i._modals.splice(e,1),i._priorityModal===a&&(i._priorityModal=null,i._modals=[]),i._reRender()},l=this._counter++;return a.elem=p.createElement(h,(0,o.default)({key:l,loader:e},t,{onFinished:s})),a.onFinished=t?t.onFinished:null,a.className=n,r?this._priorityModal=a:this._modals.unshift(a),this._reRender(),{close:s}}},{key:"closeAll",value:function(){var e=this._modals;this._modals=[];for(var t=0;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},T=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},x=function(){return function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),R=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:{};if(i.Map.isMap(t))return t;if(o()(t))return e.fromJSON(t);throw new Error("`Data.create` only accepts objects or maps, but you passed it: "+t)}},{key:"fromJSON",value:function(e){return new i.Map(e)}}]),e}();k.fromJS=k.fromJSON;var N={data:void 0,key:void 0,nodes:void 0},I=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDocument(e))return e;if((i.List.isList(e)||Array.isArray(e))&&(e={nodes:e}),o()(e))return t.fromJSON(e);throw new Error("`Document.create` only accepts objects, arrays, lists or documents, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isDocument(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s;return new t({key:a,data:new i.Map(r),nodes:K.createList(l)})}}]),t}(Object(i.Record)(N)),O={data:void 0,key:void 0,nodes:void 0,type:void 0},A=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,type:this.type,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isInline(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Inline.create` only accepts objects, strings or inlines, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Inline.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isInline(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s,u=e.type;if("string"!=typeof u)throw new Error("`Inline.fromJS` requires a `type` string.");return new t({key:a,type:u,data:new i.Map(r),nodes:K.createList(l)})}},{key:"isInlineList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isInline(e)})}}]),t}(Object(i.Record)(O)),M={data:void 0,type:void 0},P=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){return{object:this.object,type:this.type,data:this.data.toJSON()}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isMark(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Mark.create` only accepts objects, strings or marks, but you passed it: "+e)}},{key:"createSet",value:function(e){if(i.Set.isSet(e)||Array.isArray(e))return new i.Set(e.map(t.create));if(null==e)return Object(i.Set)();throw new Error("`Mark.createSet` only accepts sets, arrays or null, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isMark(e))return{data:e.data,type:e.type};if("string"==typeof e)return{type:e};if(o()(e)){var n={};return"type"in e&&(n.type=e.type),"data"in e&&(n.data=k.create(e.data)),n}throw new Error("`Mark.createProperties` only accepts objects, strings or marks, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.data,r=void 0===n?{}:n,o=e.type;if("string"!=typeof o)throw new Error("`Mark.fromJS` requires a `type` string.");return new t({type:o,data:new i.Map(r)})}},{key:"isMarkSet",value:function(e){return i.Set.isSet(e)&&e.every(function(e){return t.isMark(e)})}}]),t}(Object(i.Record)(M)),L={marks:void 0,text:void 0},F=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"updateMark",value:function(e,t){var n=this.marks;if(t.equals(e))return this;if(!n.has(e))return this;var r=n.withMutations(function(n){n.remove(e).add(t)});return this.set("marks",r)}},{key:"addMark",value:function(e){var t=this.marks;return this.set("marks",t.add(e))}},{key:"addMarks",value:function(e){var t=this.marks;return this.set("marks",t.union(e))}},{key:"removeMark",value:function(e){var t=this.marks;return this.set("marks",t.remove(e))}},{key:"toJSON",value:function(){return{object:this.object,text:this.text,marks:this.marks.toArray().map(function(e){return e.toJSON()})}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isLeaf(e))return e;if("string"==typeof e&&(e={text:e}),o()(e))return t.fromJSON(e);throw new Error("`Leaf.create` only accepts objects, strings or leaves, but you passed it: "+e)}},{key:"createLeaves",value:function(e){if(e.size<=1)return e;var t=!1,n=Object(i.List)().withMutations(function(n){e.findLast(function(e,r){var o=n.first();if(o){if(o.marks.equals(e.marks))return t=!0,void n.set(0,o.set("text",""+e.text+o.text));if(""===o.text)return t=!0,void n.set(0,e);if(""===e.text)return void(t=!0)}n.unshift(e)})});return t?n:e}},{key:"splitLeaves",value:function(e,t){if(t<0)return[Object(i.List)(),e];if(0===e.size)return[Object(i.List)(),Object(i.List)()];var n=0,r=-1,o=void 0,a=void 0;return e.find(function(e){r++;var i=n,s=e.text;if((n+=s.length)t)return!1;var l=t-i;return o=e.set("text",s.slice(0,l)),a=e.set("text",s.slice(l)),!0}),o?""===o.text?0===r?[i.List.of(o),e]:[e.take(r),e.skip(r)]:""===a.text?r===e.size-1?[e,i.List.of(a)]:[e.take(r+1),e.skip(r+1)]:[e.take(r).push(o),e.skip(r+1).unshift(a)]:[e,Object(i.List)()]}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Leaf.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.text,r=void 0===n?"":n,o=e.marks,a=void 0===o?[]:o;return new t({text:r,marks:Object(i.Set)(a.map(P.fromJSON))})}},{key:"isLeafList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isLeaf(e)})}}]),t}(Object(i.Record)(L)),U=!0,j=0,B={},G={},q=void 0;function V(e,t){var n=function(t){var n=e[t];if(!n)throw new Error('Object does not have a property named "'+t+'".');e[t]=function(){for(var e=arguments.length,r=Array(e),o=0;o=Number.MAX_SAFE_INTEGER&&(j=0)}function Y(e){U=e}var z={leaves:void 0,key:void 0},W=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"searchLeafAtOffset",value:function(e){var t=0,n=0,r=-1;return{leaf:this.leaves.find(function(o){return r++,(t=(n=t)+o.text.length)>=e}),endOffset:t,index:r,startOffset:n}}},{key:"addMark",value:function(e,t,n){var r=i.Set.of(n);return this.addMarks(e,t,r)}},{key:"addMarks",value:function(e,t,n){if(""===this.text&&0===t&&0===e){var r=this.leaves.first();if(!r)return this.set("leaves",i.List.of(F.fromJSON({text:"",marks:n})));var o=r.addMarks(n);return o===r?this:this.set("leaves",i.List.of(o))}if(""===this.text)return this;if(0===t)return this;if(e>=this.text.length)return this;var a=F.splitLeaves(this.leaves,e),s=x(a,2),l=s[0],u=s[1],c=F.splitLeaves(u,t),f=x(c,2),d=f[0],p=f[1],m=l.concat(d.map(function(e){return e.addMarks(n)}),p);return this.setLeaves(m)}},{key:"getLeaves",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=this.leaves;if(0===n.size)return i.List.of(F.create({}));if(!t||0===t.length)return n;if(0===this.text.length)return n;var r=this.key;return t.forEach(function(t){var o=t.start,i=t.end,a=t.mark,s=o.key==r,l=i.key==r;if(s&&l){var u=s?o.offset:0,c=l?i.offset-u:e.text.length-u;if(c<1)return;if(u>=e.text.length)return;if(0!==u||c=this.text.length)return this.getActiveMarks();if(e>=t)return Object(i.Set)();if(""===this.text)return this.getActiveMarks();var n=null,r=0;return this.leaves.forEach(function(o){var i=r;if(!((r=i+o.text.length)<=e)){if(i>=t)return!1;if(n)return(n=n.intersect(o.marks))&&n.size,!1;n=o.marks}}),n||Object(i.Set)()}},{key:"getActiveMarks",value:function(){var e=this;if(0===this.leaves.size)return Object(i.Set)();var t=this.leaves.first().marks;return 0===t.size?t:t.toOrderedSet().withMutations(function(t){e.leaves.forEach(function(e){if(t.intersect(e.marks),0===t.size)return!1})})}},{key:"getMarksBetweenOffsets",value:function(e,t){if(e<=0&&t>=this.text.length)return this.getMarks();if(e>=t)return Object(i.Set)();if(""===this.text)return this.getActiveMarks();var n=null,r=0;return this.leaves.forEach(function(o){var i=r;if(!((r=i+o.text.length)<=e))return!(i>=t)&&void(n=n?n.union(o.marks):o.marks)}),n||Object(i.Set)()}},{key:"getMarks",value:function(){var e=this.getMarksAsArray();return new i.OrderedSet(e)}},{key:"getMarksAsArray",value:function(){if(0===this.leaves.size)return[];var e=this.leaves.first().marks;if(1===this.leaves.size)return e.toArray();var t=[];return this.leaves.forEach(function(e){t.push(e.marks.toArray())}),Array.prototype.concat.apply(e.toArray(),t)}},{key:"getMarksAtIndex",value:function(e){var t=this.searchLeafAtOffset(e).leaf;return t?t.marks:Object(i.Set)()}},{key:"insertText",value:function(e,t,n){if(""===this.text)return this.set("leaves",i.List.of(F.create({text:t,marks:n})));if(0===t.length)return this;n||(n=Object(i.Set)());var r=this.searchLeafAtOffset(e),o=r.startOffset,a=r.leaf,s=r.index,l=e-o,u=a.text.slice(0,l),c=a.text.slice(l),f=this.leaves;if(a.marks.equals(n))return this.set("leaves",f.set(s,a.set("text",u+t+c)));var d=f.splice(s,1,a.set("text",u),F.create({text:t,marks:n}),a.set("text",c));return this.setLeaves(d)}},{key:"removeMark",value:function(e,t,n){if(""===this.text&&0===e&&0===t){var r=this.leaves.first();if(!r)return this;var o=r.removeMark(n);return o===r?this:this.set("leaves",i.List.of(o))}if(t<=0)return this;if(e>=this.text.length)return this;var a=F.splitLeaves(this.leaves,e),s=x(a,2),l=s[0],u=s[1],c=F.splitLeaves(u,t),f=x(c,2),d=f[0],p=f[1],m=l.concat(d.map(function(e){return e.removeMark(n)}),p);return this.setLeaves(m)}},{key:"removeText",value:function(e,t){if(t<=0)return this;if(e>=this.text.length)return this;if(1===t){var n=this.searchLeafAtOffset(e+1),r=n.leaf,o=n.index,a=e-n.startOffset;if(r){if(1===r.text.length){var s=this.leaves.remove(o);return this.setLeaves(s)}var l=r.text.slice(0,a)+r.text.slice(a+t);if(l.length>0)return this.set("leaves",this.leaves.set(o,r.set("text",l)))}}var u=F.splitLeaves(this.leaves,e),c=x(u,2),f=c[0],d=c[1],p=F.splitLeaves(d,t)[1],m=F.createLeaves(f.concat(p));if(1===m.size){var h=m.first();if(""===h.text)return this.set("leaves",i.List.of(h.set("marks",this.getActiveMarks())))}return this.set("leaves",m)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,leaves:this.getLeaves().toArray().map(function(e){return e.toJSON()})};return e.preserveKeys&&(t.key=this.key),t}},{key:"updateMark",value:function(e,t,n,r){var o=n.merge(r);if(""===this.text&&0===t&&0===e){var a=this.leaves.first();if(!a)return this;var s=a.updateMark(n,o);return s===a?this:this.set("leaves",i.List.of(s))}if(t<=0)return this;if(e>=this.text.length)return this;var l=F.splitLeaves(this.leaves,e),u=x(l,2),c=u[0],f=u[1],d=F.splitLeaves(f,t),p=x(d,2),m=p[0],h=p[1],_=c.concat(m.map(function(e){return e.updateMark(n,o)}),h);return this.setLeaves(_)}},{key:"splitText",value:function(e){var t=F.splitLeaves(this.leaves,e);return[this.set("leaves",t[0]),this.set("leaves",t[1]).regenerateKey()]}},{key:"mergeText",value:function(e){var t=this.leaves.concat(e.leaves);return this.setLeaves(t)}},{key:"setLeaves",value:function(e){var t=F.createLeaves(e);if(1===t.size){var n=t.first();if((!n.marks||0===n.marks.size)&&""===n.text)return this.set("leaves",Object(i.List)())}return this.set("leaves",F.createLeaves(e))}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(t.isText(e))return e;if("string"==typeof e&&(e={leaves:[{text:e}]}),o()(e)){if(e.text){var n=e,r=n.text,i=n.marks;e={key:n.key,leaves:[{text:r,marks:i}]}}return t.fromJSON(e)}throw new Error("`Text.create` only accepts objects, arrays, strings or texts, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Text.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isText(e))return e;var n=e.key,r=void 0===n?y.create():n,o=e.leaves;if(o||(e.ranges?(Object(a.a)(!1,"As of slate@0.27.0, the `ranges` property of Slate objects has been renamed to `leaves`."),o=e.ranges):o=Object(i.List)()),Array.isArray(o))o=Object(i.List)(o.map(function(e){return F.create(e)}));else{if(!i.List.isList(o))throw new Error("leaves must be either Array or Immutable.List");o=o.map(function(e){return F.create(e)})}return new t({leaves:F.createLeaves(o),key:r})}},{key:"isTextList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isText(e)})}}]),t}(Object(i.Record)(z));V(W.prototype,["getActiveMarks","getMarks","getMarksAsArray"]);var K=function(){function e(){E(this,e)}return C(e,null,[{key:"create",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.isNode(t))return t;if(o()(t)){var n=t.object;switch(!n&&t.kind&&(Object(a.a)(!1,"As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`."),n=t.kind),n){case"block":return Q.create(t);case"document":return I.create(t);case"inline":return A.create(t);case"text":return W.create(t);default:throw new Error("`Node.create` requires a `object` string.")}}throw new Error("`Node.create` only accepts objects or nodes but you passed it: "+t)}},{key:"createList",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(t)||Array.isArray(t))return Object(i.List)(t.map(e.create));throw new Error("`Node.createList` only accepts lists or arrays, but you passed it: "+t)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(Q.isBlock(e)||A.isInline(e))return{data:e.data,type:e.type};if("string"==typeof e)return{type:e};if(o()(e)){var t={};return"type"in e&&(t.type=e.type),"data"in e&&(t.data=k.create(e.data)),t}throw new Error("`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var t=e.object;switch(!t&&e.kind&&(Object(a.a)(!1,"As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`."),t=e.kind),t){case"block":return Q.fromJSON(e);case"document":return I.fromJSON(e);case"inline":return A.fromJSON(e);case"text":return W.fromJSON(e);default:throw new Error("`Node.fromJSON` requires an `object` of either 'block', 'document', 'inline' or 'text', but you passed: "+e)}}},{key:"isNode",value:function(e){return Q.isBlock(e)||I.isDocument(e)||A.isInline(e)||W.isText(e)}},{key:"isNodeList",value:function(t){return i.List.isList(t)&&t.every(function(t){return e.isNode(t)})}}]),e}(),$={data:void 0,key:void 0,nodes:void 0,type:void 0},Q=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,type:this.type,data:this.data.toJSON(),nodes:this.nodes.toArray().map(function(t){return t.toJSON(e)})};return e.preserveKeys&&(t.key=this.key),t}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isBlock(e))return e;if("string"==typeof e&&(e={type:e}),o()(e))return t.fromJSON(e);throw new Error("`Block.create` only accepts objects, strings or blocks, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Block.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isBlock(e))return e;var n=e.data,r=void 0===n?{}:n,o=e.key,a=void 0===o?y.create():o,s=e.nodes,l=void 0===s?[]:s,u=e.type;if("string"!=typeof u)throw new Error("`Block.fromJSON` requires a `type` string.");return new t({key:a,type:u,data:Object(i.Map)(r),nodes:K.createList(l)})}},{key:"isBlockList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isBlock(e)})}}]),t}(Object(i.Record)($)),X={};["deleteBackward","deleteCharBackward","deleteLineBackward","deleteWordBackward","deleteForward","deleteCharForward","deleteWordForward","deleteLineForward","setBlocks","setInlines","splitInline","unwrapBlock","unwrapInline","wrapBlock","wrapInline"].forEach(function(e){X[e]=function(t){for(var n=arguments.length,r=Array(n>1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:1,n=e.value,r=n.selection,o=n.document,i=r.marks||o.getInsertMarksAtRange(r);e.splitBlockAtRange(r,t).moveToEnd(),i&&0!==i.size&&e.select({marks:i})},X.toggleMark=function(e,t){t=P.create(t),e.value.activeMarks.has(t)?e.removeMark(t):e.addMark(t)},X.wrapText=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,r=e.value.selection;e.wrapTextAtRange(r,t,n),r.isCollapsed&&e.moveStartBackward(t.length),e.moveEndBackward(n.length),r.isForward!=e.value.selection.isForward&&e.flip()};var J=55296,Z=57343,ee=/\s/,te=/['\u2018\u2019]/,ne=/[\u0021-\u0023\u0025-\u002A\u002C-\u002F\u003A\u003B\u003F\u0040\u005B-\u005D\u005F\u007B\u007D\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E3B\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/;function re(e){return J<=e&&e<=Z}function oe(e,t){if(ee.test(e))return!1;if(te.test(e)){var n=t.charAt(0),r=ie(n);if(oe(n=t.slice(0,r),t.slice(r)))return!0}return!ne.test(e)}function ie(e){return re(e.charCodeAt(0))?2:1}function ae(e){return ie(e.charAt(0))}function se(e){for(var t=0,n=0,r=!1,o=void 0;o=e.charAt(n);){var i=ie(o);if(oe(o=e.slice(n,n+i),e.slice(n+i)))r=!0,t+=i;else{if(r)break;t+=i}n+=i}return t}var le={getCharLength:ie,getCharOffset:ae,getCharOffsetBackward:function(e,t){return e=e.slice(0,t),ae(e=Object(s.reverse)(e))},getCharOffsetForward:function(e,t){return ae(e=e.slice(t))},getWordOffset:se,getWordOffsetBackward:function(e,t){return e=e.slice(0,t),se(e=Object(s.reverse)(e))},getWordOffsetForward:function(e,t){return se(e=e.slice(t))},isSurrogate:re,isWord:oe},ue={};function ce(e,t){if(e.size!==t.size)return null;for(var n=0;no)return 1}return 0}function fe(e){if(null==e)return null;if(i.List.isList(e))return e;if(Array.isArray(e))return Object(i.List)(e);throw new Error("Paths can only be created from arrays or lists, but you passed: "+e)}function de(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ve(e,t);return[e.slice(0,n),t.slice(0,n)]}function pe(e){return me(e,0-(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1),arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.size-1)}function me(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.size-1,r=e.get(n)+t;return e.set(n,r)}function he(e,t){var n=de(e,t),r=x(n,2),o=r[0],i=r[1];return e.size2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){var r=e.value,o=r.document,i=r.schema,a=t,s=a.start,l=a.focus;if(t.isExpanded)e.deleteAtRange(t);else{var u=o.getClosestVoid(s.key,i);if(u)e.removeNodeByKey(u.key);else{var c=o.getClosestBlock(s.key);if(!c||i.isVoid(c)||""!==c.text||1===o.nodes.size){if(!s.isAtStartOfNode(o)){var f=o.getDescendant(s.key);if(s.isAtStartOfNode(f)){var d=o.getPreviousText(f.key),p=o.getClosestBlock(d.key),m=o.getClosestVoid(d.key,i);if(m)return void e.removeNodeByKey(m.key);if(1==n&&p!=c)return t=t.moveAnchorTo(d.key,d.text.length),void e.deleteAtRange(t)}if(ng;){var v=g+(h=o.getPreviousText(h.key)).text.length;if(n<=v){_=v-n;break}g=v}t=t.moveAnchorTo(h.key,_),e.deleteAtRange(t)}}else e.removeNodeByKey(c.key)}}}},ue.deleteCharForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=le.getCharOffsetForward(a,i);e.deleteForwardAtRange(t,s)},ue.deleteLineForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset;e.deleteForwardAtRange(t,o.text.length-i)},ue.deleteWordForwardAtRange=function(e,t){var n=e.value.document,r=t.start,o=n.getClosestBlock(r.key),i=o.getOffset(r.key)+r.offset,a=o.text,s=le.getWordOffsetForward(a,i);e.deleteForwardAtRange(t,s)},ue.deleteForwardAtRange=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){var r=e.value,o=r.document,i=r.schema,a=t,s=a.start,l=a.focus;if(t.isExpanded)e.deleteAtRange(t);else{var u=o.getClosestVoid(s.key,i);if(u)e.removeNodeByKey(u.key);else{var c=o.getClosestBlock(s.key);if(c&&!i.isVoid(c)&&""===c.text&&1!==o.nodes.size){var f=o.getNextBlock(c.key);return e.removeNodeByKey(c.key),void(f&&f.key&&e.moveToStartOfNode(f))}if(!s.isAtEndOfNode(o)){var d=o.getDescendant(s.key);if(s.isAtEndOfNode(d)){var p=o.getNextText(d.key),m=o.getClosestBlock(p.key),h=o.getClosestVoid(p.key,i);if(h)return void e.removeNodeByKey(h.key);if(1==n&&m!=c)return t=t.moveFocusTo(p.key,0),void e.deleteAtRange(t)}if(n<=d.text.length-l.offset)return t=t.moveFocusForward(n),void e.deleteAtRange(t);for(var _=d,g=l.offset,v=d.text.length-l.offset;n>v;){var y=v+(_=o.getNextText(_.key)).text.length;if(n<=y){g=n-v;break}v=y}t=t.moveFocusTo(_.key,g),e.deleteAtRange(t)}}}}},ue.insertBlockAtRange=function(e,t,n){n=Q.create(n),t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());var r=e.value,o=r.document,i=r.schema,a=t.start,s=a.key,l=a.offset,u=o.getClosestBlock(s),c=o.getClosestInline(s),f=o.getParent(u.key),d=f.nodes.indexOf(u);if(i.isVoid(u)){var p=a.isAtEndOfNode(u)?1:0;e.insertNodeByKey(f.key,d+p,n)}else if(c||""!==u.text)if(a.isAtStartOfNode(u))e.insertNodeByKey(f.key,d,n);else if(a.isAtEndOfNode(u))e.insertNodeByKey(f.key,d+1,n);else{if(c&&i.isVoid(c)){var m=a.isAtEndOfNode(c),h=m?o.getNextText(s):o.getPreviousText(s),_=m?t.moveToStartOfNode(h):t.moveToEndOfNode(h);s=_.start.key,l=_.start.offset}e.withoutNormalizing(function(){e.splitDescendantsByKey(u.key,s,l),e.insertNodeByKey(f.key,d+1,n)})}else e.insertNodeByKey(f.key,d+1,n)},ue.insertFragmentAtRange=function(e,t,n){e.withoutNormalizing(function(){if(t.isExpanded&&(e.deleteAtRange(t),t=e.value.document.getDescendant(t.start.key)?t.moveToStart():t.moveTo(t.end.key,0).normalize(e.value.document)),n.nodes.size){n=n.mapDescendants(function(e){return e.regenerateKey()});var r=t.start,o=e.value,a=o.schema,s=o.document,l=s.getDescendant(r.key),u=s.getClosestBlock(l.key),c=u.getFurthestAncestor(l.key),f=r.isAtStartOfNode(u),d=s.getParent(u.key),p=d.nodes.indexOf(u),m=n.getBlocks(),h=n.nodes.first(),_=n.nodes.last(),g=m.first(),v=m.last();if(g===v&&a.isVoid(g))e.insertBlockAtRange(t,g);else if(h.hasBlockChildren()||_.hasBlockChildren())n.nodes.reverse().forEach(function(n){e.insertBlockAtRange(t,n)});else{if(g!=v){var y=n.getFurthest(g.key,function(e){return 1==e.nodes.size})||g,b=d.nodes.indexOf(u);(n=n.removeNode(y.key)).nodes.forEach(function(t,n){var r=b+n+1;e.insertNodeByKey(d.key,r,t)})}if(0!=r.offset&&e.splitDescendantsByKey(c.key,r.key,r.offset),l=(s=e.value.document).getDescendant(r.key),c=(u=s.getClosestBlock(r.key)).getFurthestAncestor(l.key),g!=v){var E=f?c:u.getNextSibling(c.key),C=E?u.nodes.skipUntil(function(e){return e.key==E.key}):Object(i.List)(),S=v.nodes.size;C.forEach(function(t,n){var r=S+n;e.moveNodeByKey(t.key,v.key,r)})}if(a.isVoid(u)||""!==u.text){var D=u.getFurthestAncestor(l.key),w=u.nodes.indexOf(D);g.nodes.forEach(function(t,n){var o=0==r.offset?0:1,i=w+n+o;e.insertNodeByKey(u.key,i,t)})}else e.removeNodeByKey(u.key),e.insertNodeByKey(d.key,p,g)}}})},ue.insertInlineAtRange=function(e,t,n){n=A.create(n),e.withoutNormalizing(function(){t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());var r=e.value,o=r.document,i=r.schema,a=t.start,s=o.getParent(a.key),l=o.assertDescendant(a.key),u=s.nodes.indexOf(l);i.isVoid(s)||(e.splitNodeByKey(a.key,a.offset),e.insertNodeByKey(s.key,u+1,n))})},ue.insertTextAtRange=function(e,t,n,r){var o=e.value,i=o.document,a=o.schema,s=t.start,l=s.key,u=s.offset,c=i.getParent(s.key);a.isVoid(c)||e.withoutNormalizing(function(){t.isExpanded&&(e.deleteAtRange(t),e.value.selection.start.key!==l&&(l=e.value.selection.start.key,u=e.value.selection.start.offset)),e.insertTextByKey(l,u,n,r)})},ue.removeMarkAtRange=function(e,t,n){if(!t.isCollapsed){var r=e.value.document.getTextsAtRange(t),o=t.start,i=t.end;e.withoutNormalizing(function(){r.forEach(function(t){var r=t.key,a=0,s=t.text.length;r==o.key&&(a=o.offset),r==i.key&&(s=i.offset),r==o.key&&r==i.key&&(s=i.offset-o.offset),e.removeMarkByKey(r,a,s,n)})})}},ue.setBlocksAtRange=function(e,t,n){var r=e.value,o=r.document,i=r.schema,a=o.getBlocksAtRange(t),s=t.start,l=t.end,u=t.isCollapsed,c=o.hasVoidParent(s.key,i),f=o.getClosestBlock(s.key),d=o.getClosestBlock(l.key),p=0==u&&0==s.offset&&0==l.offset&&0==c&&s.key==f.getFirstText().key&&l.key==d.getFirstText().key?a.slice(0,-1):a;e.withoutNormalizing(function(){p.forEach(function(t){e.setNodeByKey(t.key,n)})})},ue.setInlinesAtRange=function(e,t,n){var r=e.value.document.getInlinesAtRange(t);e.withoutNormalizing(function(){r.forEach(function(t){e.setNodeByKey(t.key,n)})})},ue.splitBlockAtRange=function(e,t){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,r=t,o=r.start,i=r.end,a=e.value,s=a.document,l=s.assertDescendant(o.key),u=s.getClosestBlock(l.key),c=0;u&&"block"==u.object&&c2&&void 0!==arguments[2]?arguments[2]:1/0;t.isExpanded&&(e.deleteAtRange(t),t=t.moveToStart());for(var r=t.start,o=e.value.document,i=o.assertDescendant(r.key),a=o.getClosestInline(i.key),s=0;a&&"inline"==a.object&&s3&&void 0!==arguments[3]?arguments[3]:n,o=t.start,i=t.end,a=t.moveToStart(),s=t.moveToEnd();o.key==i.key&&(s=s.moveForward(n.length)),e.withoutNormalizing(function(){e.insertTextAtRange(a,n,[]),e.insertTextAtRange(s,r,[])})};var ye={compare:ce,create:fe,crop:de,decrement:pe,increment:me,isAbove:he,isAfter:function(e,t){var n=de(e,t),r=x(n,2);return 1===ce(r[0],r[1])},isBefore:function(e,t){var n=de(e,t),r=x(n,2);return-1===ce(r[0],r[1])},isEqual:_e,isOlder:function(e,t){var n=e.size-1,r=de(e,t,n),o=x(r,2),i=o[0],a=o[1],s=e.get(n),l=t.get(n);return _e(i,a)&&s>l},isSibling:function(e,t){if(e.size!==t.size)return!1;var n=e.butLast(),r=t.butLast();return n.equals(r)},isYounger:ge,lift:function(e){return e.slice(0,-1)},max:function(e,t){return Math.max(e.size,t.size)},min:ve,relate:function(e,t){for(var n=[],r=0;r=r&&(e=pe(e=me(e,1,a),r,a+1))),"move_node"===n){var c=t.newPath,f=c.size-1,d=_e(c,e),p=ge(c,e),m=he(c,e);u?e=c.concat(e.slice(o.size)):(s?e=c:l&&(e=pe(e,1,a)),(d||p||m)&&(e=me(e,1,f)))}var h=Array.isArray(e)?e:[e];return Object(i.List)(h)}},be={addMarkByPath:function(e,t,n,r,o){o=P.create(o);var i=e.value,a=[],s=n,l=n+r,u=0;i.document.assertNode(t).getLeaves().forEach(function(e){var n=u,r=n+e.text.length;if(u+=e.text.length,!(rs.text.length&&(r=s.text.length-n);var l=a.createRange({anchor:{path:t,offset:n},focus:{path:t,offset:n+r}}),u=a.getActiveMarksAtRange(l);e.withoutNormalizing(function(){e.removeTextByPath(t,n,r),i?u&&(u=u.filter(function(e){return!i.find(function(t){return e.type===t.type})}),i=u.merge(i)):i=u||[],e.insertTextByPath(t,n,o,i)})},setMarkByPath:function(e,t,n,r,o,i){o=P.create(o),i=P.createProperties(i);var a=e.value;e.applyOperation({type:"set_mark",value:a,path:t,offset:n,length:r,mark:o,properties:i})},setNodeByPath:function(e,t,n){n=K.createProperties(n);var r=e.value,o=r.document.assertNode(t);e.applyOperation({type:"set_node",value:r,path:t,node:o,properties:n})},setTextByPath:function(e,t,n,r){var o=e.value.document.assertNode(t).text.length;e.replaceTextByPath(t,0,o,n,r)},splitNodeByPath:function(e,t,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).target,o=void 0===r?null:r,i=e.value,a=i.document.getDescendant(t);e.applyOperation({type:"split_node",value:i,path:t,position:n,target:o,properties:{type:a.type,data:a.data}})},splitDescendantsByPath:function(e,t,n,r){if(t.equals(n))e.splitNodeByPath(n,r);else{var o=e.value.document,i=o.assertNode(t),a=o.assertNode(n),s=o.getAncestors(n).skipUntil(function(e){return e.key==i.key}).reverse().unshift(a),l=void 0,u=void 0;e.withoutNormalizing(function(){s.forEach(function(t){var n=null==u?null:u;u=l?t.nodes.indexOf(l)+1:r,l=t,e.splitNodeByKey(t.key,u,{target:n})})})}},unwrapInlineByPath:function(e,t,n){var r=e.value,o=r.document,i=r.selection,a=o.assertNode(t),s=a.getFirstText(),l=a.getLastText(),u=i.moveToRangeOfNode(s,l);e.unwrapInlineAtRange(u,n)},unwrapBlockByPath:function(e,t,n){var r=e.value,o=r.document,i=r.selection,a=o.assertNode(t),s=a.getFirstText(),l=a.getLastText(),u=i.moveToRangeOfNode(s,l);e.unwrapBlockAtRange(u,n)},unwrapNodeByPath:function(e,t){var n=e.value.document;n.assertNode(t);var r=ye.lift(t),o=n.assertNode(r),i=t.last(),a=r.last(),s=ye.lift(r),l=0===i,u=i===o.nodes.size-1;e.withoutNormalizing(function(){if(1===o.nodes.size)e.moveNodeByPath(t,s,a+1),e.removeNodeByPath(r);else if(l)e.moveNodeByPath(t,s,a);else if(u)e.moveNodeByPath(t,s,a+1);else{var n=ye.increment(t,1,r.size-1);n=n.set(n.size-1,0),e.splitNodeByPath(r,i),e.moveNodeByPath(n,s,a+1)}})},wrapBlockByPath:function(e,t,n){n=(n=Q.create(n)).set("nodes",n.nodes.clear());var r=ye.lift(t),o=t.last(),i=ye.increment(t);e.withoutNormalizing(function(){e.insertNodeByPath(r,o,n),e.moveNodeByPath(i,t,0)})},wrapInlineByPath:function(e,t,n){n=(n=A.create(n)).set("nodes",n.nodes.clear());var r=ye.lift(t),o=t.last(),i=ye.increment(t);e.withoutNormalizing(function(){e.insertNodeByPath(r,o,n),e.moveNodeByPath(i,t,0)})},wrapNodeByPath:function(e,t,n){"block"===(n=K.create(n)).object?e.wrapBlockByPath(t,n):"inline"===n.object&&e.wrapInlineByPath(t,n)}},Ee=function(e){be[e+"ByKey"]=function(t,n){for(var r=arguments.length,o=Array(r>2?r-2:0),i=2;i3?r-3:0),i=3;i3?r-3:0),i=3;i0&&void 0!==arguments[0]?arguments[0]:1;return 0===e?this:e<0?this.moveForward(-e):this.setOffset(this.offset-e)}},{key:"moveForward",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return 0===e?this:e<0?this.moveBackward(-e):this.setOffset(this.offset+e)}},{key:"moveTo",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=this.key;return"number"==typeof e?(t=e,e=this.path):"string"==typeof e?e=(n=e)===this.key?this.path:null:n=e.equals(this.path)?this.key:null,this.merge({key:n,path:e,offset:t})}},{key:"moveToStartOfNode",value:function(e){var t=e.getFirstText();return this.moveTo(t.key,0)}},{key:"moveToEndOfNode",value:function(e){var t=e.getLastText();return this.moveTo(t.key,t.text.length)}},{key:"normalize",value:function(e){if(null==this.key&&null==this.path)return this.setOffset(null);var n=this.key,r=this.offset,o=this.path,i=e.getNode(n||o);if(!i){Object(a.a)(!1,"A point's `path` or `key` invalid and was reset!");var s=e.getFirstText();return s?this.merge({key:s.key,offset:0,path:e.getPath(s.key)}):t.create()}if("text"!==i.object){Object(a.a)(!1,"A point should not reference a non-text node!");var l=i.getTextAtOffset(r),u=i.getOffset(l.key);return this.merge({offset:r-u,key:l.key,path:e.getPath(l.key)})}return i&&o&&n&&n!==i.key&&Object(a.a)(!1,"A point's `key` did not match its `path`!"),this.merge({key:i.key,path:null==o?e.getPath(i.key):o,offset:null==r?0:Math.min(r,i.text.length)})}},{key:"setKey",value:function(e){return null!==e&&(e=y.create(e)),this.set("key",e)}},{key:"setOffset",value:function(e){return this.set("offset",e)}},{key:"setPath",value:function(e){return null!==e&&(e=ye.create(e)),this.set("path",e)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,key:this.key,offset:this.offset,path:this.path&&this.path.toArray()};return e.preserveKeys||delete t.key,t}},{key:"unset",value:function(){return this.merge({key:null,offset:null,path:null})}},{key:"isSet",get:function(){return null!=this.key&&null!=this.offset&&null!=this.path}},{key:"isUnset",get:function(){return!this.isSet}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isPoint(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Point.create` only accepts objects or points, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isPoint(e))return{key:e.key,offset:e.offset,path:e.path};if(o()(e)){var n={};return"key"in e&&(n.key=e.key),"offset"in e&&(n.offset=e.offset),"path"in e&&(n.path=ye.create(e.path)),"path"in e&&!("key"in e)&&(n.key=null),"key"in e&&!("path"in e)&&(n.path=null),n}throw new Error("`Point.createProperties` only accepts objects or points, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.key,r=void 0===n?null:n,o=e.offset,i=void 0===o?null:o,a=e.path,s=void 0===a?null:a;return new t({key:r,offset:i,path:ye.create(s)})}}]),t}(Object(i.Record)(Re)),Ne={anchor:void 0,focus:void 0,mark:void 0},Ie=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"setProperties",value:function(e){var n=e=t.createProperties(e),r=n.anchor,o=n.focus,i=n.mark,a={};return r&&(a.anchor=ke.create(r)),o&&(a.focus=ke.create(o)),i&&(a.mark=P.create(i)),this.merge(a)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e),mark:this.mark.toJSON(e)}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDecoration(e))return e;if(Pe.isRange(e))return t.fromJSON(Pe.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Decoration.create` only accepts objects or decorations, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Decoration.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isDecoration(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus),mark:P.create(e.mark)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=ke.create(e.anchor)),"focus"in e&&(n.focus=ke.create(e.focus)),"mark"in e&&(n.mark=P.create(e.mark)),n}throw new Error("`Decoration.createProperties` only accepts objects or decorations, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus,o=e.mark;if(!o)throw new Error("Decorations must be created with a `mark`, but you passed: "+JSON.stringify(e));return new t({anchor:ke.fromJSON(n||{}),focus:ke.fromJSON(r||{}),mark:P.fromJSON(o)})}}]),t}(Object(i.Record)(Ne)),Oe={block:"@@__SLATE_BLOCK__@@",change:"@@__SLATE_CHANGE__@@",decoration:"@@__SLATE_DECORATION__@@",document:"@@__SLATE_DOCUMENT__@@",history:"@@__SLATE_HISTORY__@@",inline:"@@__SLATE_INLINE__@@",leaf:"@@__SLATE_LEAF__@@",mark:"@@__SLATE_MARK__@@",operation:"@@__SLATE_OPERATION__@@",point:"@@__SLATE_POINT__@@",range:"@@__SLATE_RANGE__@@",schema:"@@__SLATE_SCHEMA__@@",selection:"@@__SLATE_SELECTION__@@",stack:"@@__SLATE_STACK__@@",text:"@@__SLATE_TEXT__@@",value:"@@__SLATE_VALUE__@@"};function Ae(e,t){return!(!t||!t[Oe[e]])}var Me={anchor:void 0,focus:void 0},Pe=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e)}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isRange(e))return"range"===e.object?e:t.fromJSON(t.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Range.create` only accepts objects or ranges, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Range.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isRange(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=ke.create(e.anchor)),"focus"in e&&(n.focus=ke.create(e.focus)),n}throw new Error("`Range.createProperties` only accepts objects, decorations, ranges or selections, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus;return new t({anchor:ke.fromJSON(n||{}),focus:ke.fromJSON(r||{})})}},{key:"isRange",value:function(e){return Ae("range",e)||Ie.isDecoration(e)||Fe.isSelection(e)}}]),t}(Object(i.Record)(Me)),Le={anchor:void 0,focus:void 0,isFocused:void 0,marks:void 0},Fe=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"setIsFocused",value:function(e){return this.set("isFocused",e)}},{key:"setMarks",value:function(e){return this.set("marks",e)}},{key:"setProperties",value:function(e){var n=e=t.createProperties(e),r=n.anchor,o=n.focus,i=w(n,["anchor","focus"]);return r&&(i.anchor=ke.create(r)),o&&(i.focus=ke.create(o)),this.merge(i)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e),isFocused:this.isFocused,marks:null==this.marks?null:this.marks.toArray().map(function(e){return e.toJSON()})}}},{key:"isBlurred",get:function(){return!this.isFocused}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSelection(e))return e;if(Pe.isRange(e))return t.fromJSON(Pe.createProperties(e));if(o()(e))return t.fromJSON(e);throw new Error("`Selection.create` only accepts objects, ranges or selections, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSelection(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus),isFocused:e.isFocused,marks:e.marks};if(Pe.isRange(e))return{anchor:ke.createProperties(e.anchor),focus:ke.createProperties(e.focus)};if(o()(e)){var n={};return"anchor"in e&&(n.anchor=ke.create(e.anchor)),"focus"in e&&(n.focus=ke.create(e.focus)),"isFocused"in e&&(n.isFocused=e.isFocused),"marks"in e&&(n.marks=null==e.marks?null:P.createSet(e.marks)),n}throw new Error("`Selection.createProperties` only accepts objects, ranges or selections, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.anchor,r=e.focus,o=e.isFocused,a=void 0!==o&&o,s=e.marks,l=void 0===s?null:s;return new t({anchor:ke.fromJSON(n||{}),focus:ke.fromJSON(r||{}),isFocused:a,marks:null==l?null:new i.Set(l.map(P.fromJSON))})}}]),t}(Object(i.Record)(Le)),Ue={};function je(e,t){for(var n,r=arguments.length,o=Array(r>2?r-2:0),i=2;i2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){if(n<0)return Ve(e,t,-n);var r=t.slice(0,1).toUpperCase()+t.slice(1),o=e.value,i=o.document,a=o.selection,s=o.schema,l=a[t],u=i.hasVoidParent(l.path,s);if(!u&&l.offset-n>=0){var c=a["move"+r+"Backward"](n);e.select(c)}else{var f=i.getPreviousText(l.path);if(f){var d=i.getClosestBlock(l.path).hasNode(f.key),p=f&&i.hasVoidParent(f.key,s);if(e["move"+r+"ToEndOfNode"](f),!u&&!p&&d){var m=e.value.selection["move"+r+"Backward"](n);e.select(m)}}}}}function Ve(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(0!==n){if(n<0)return qe(e,t,-n);var r=t.slice(0,1).toUpperCase()+t.slice(1),o=e.value,i=o.document,a=o.selection,s=o.schema,l=a[t],u=i.getNode(l.path),c=i.hasVoidParent(l.path,s);if(!c&&l.offset+n<=u.text.length){var f=a["move"+r+"Forward"](n);e.select(f)}else{var d=i.getNextText(l.path);if(d){var p=i.getClosestBlock(l.path).hasNode(d.key),m=i.hasVoidParent(d.key,s);if(e["move"+r+"ToStartOfNode"](d),!c&&!m&&p){var h=e.value.selection["move"+r+"Forward"](n);e.select(h)}}}}}Ue.blur=function(e){e.select({isFocused:!1})},Ue.deselect=function(e){var t=Fe.create();e.select(t)},Ue.focus=function(e){e.select({isFocused:!0})},Ue.flip=function(e){e.call(je,"flip")},Ue.moveAnchorBackward=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?n-1:0),o=1;o1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?n-1:0),o=1;o1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r2&&void 0!==arguments[2]?arguments[2]:{};t=Fe.createProperties(t);var r=n.snapshot,o=void 0!==r&&r,a=e.value,s=a.document,l=a.selection,u={},c=l.setProperties(t);for(var d in c=s.resolveSelection(c),t=f()(c,Object.keys(t)))!0!==o&&Object(i.is)(t[d],l[d])||(u[d]=t[d]);l.marks&&!u.marks&&(u.anchor||u.focus)&&(u.marks=null),0!==Object.keys(u).length&&e.applyOperation({type:"set_selection",value:a,properties:u,selection:l.toJSON()},o?{skip:!1,merge:!1}:{})},Ue.setAnchor=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{},n=this,r=n,o=r.undos,a=r.redos,s=t.merge;if(t.skip)return n;var l=o.peek(),u=l&&l.last();if(null==s&&(s=function(e,t){return!!t&&("set_selection"==e.type&&"set_selection"==t.type||"insert_text"==e.type&&"insert_text"==t.type&&e.offset==t.offset+t.text.length&&e.path.equals(t.path)||"remove_text"==e.type&&"remove_text"==t.type&&e.offset+e.text.length==t.offset&&e.path.equals(t.path))}(e,u)),He("save",{operation:e,merge:s}),s&&l){var c=l.push(e);o=(o=o.pop()).push(c)}else{var f=new i.List([e]);o=o.push(f)}return o.size>100&&(o=o.take(100)),a=a.clear(),n=n.set("undos",o).set("redos",a)}},{key:"toJSON",value:function(){return{object:this.object,redos:this.redos.toJSON(),undos:this.undos.toJSON()}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isHistory(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`History.create` only accepts objects or histories, but you passed it: "+e)}},{key:"createOperationsList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e))return e;if(Array.isArray(e))return new i.List(e);throw new Error("`History.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=e.redos,r=void 0===n?[]:n,o=e.undos,a=void 0===o?[]:o;return new t({redos:new i.Stack(r.map(this.createOperationsList)),undos:new i.Stack(a.map(this.createOperationsList))})}}]),t}(Object(i.Record)(Ye));var We={plugins:void 0},Ke=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"getPluginsWith",value:function(e){return this.plugins.filter(function(t){return null!=t[e]})}},{key:"find",value:function(e){for(var t=this.getPluginsWith(e),n=arguments.length,r=Array(n>1?n-1:0),o=1;o1?r-1:0),i=1;i1?n-1:0),o=1;o2?n-2:0),o=2;o0&&void 0!==arguments[0]?arguments[0]:{}).plugins;return new t({plugins:void 0===e?[]:e})}}]),t}(Object(i.Record)(We));V(Ke.prototype,["getPluginsWith"]);var $e=function(e){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};E(this,t);var r=T(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));for(var o in r.code=e,n)r[o]=n[o];return Error.captureStackTrace?Error.captureStackTrace(r,r.constructor):r.stack=(new Error).stack,r}return D(t,e),t}(Error),Qe=p()("slate:schema"),Xe=[{match:{object:"document"},nodes:[{match:{object:"block"}}]},{match:{object:"block",first:{object:"block"}},nodes:[{match:{object:"block"}}]},{match:{object:"block",first:[{object:"inline"},{object:"text"}]},nodes:[{match:[{object:"inline"},{object:"text"}]}]},{match:{object:"inline"},nodes:[{match:[{object:"inline"},{object:"text"}]}]},{match:[{object:"block"},{object:"inline"}],nodes:[{min:1}],normalize:function(e,t){var n=t.code,r=t.node;"child_required"===n&&e.insertNodeByKey(r.key,0,W.create(),{normalize:!1})}},{match:{object:"block"},first:[{object:"block"},{object:"text"}],last:[{object:"block"},{object:"text"}],normalize:function(e,t){var n=t.code,r=t.node,o=W.create(),i=void 0;if("first_child_object_invalid"===n)i=0;else{if("last_child_object_invalid"!==n)return;i=r.nodes.size}e.insertNodeByKey(r.key,i,o,{normalize:!1})}},{match:{object:"inline"},first:[{object:"block"},{object:"text"}],last:[{object:"block"},{object:"text"}],previous:[{object:"block"},{object:"text"}],next:[{object:"block"},{object:"text"}],normalize:function(e,t){var n=t.code,r=t.node,o=t.index,i=W.create(),a=void 0;if("first_child_object_invalid"===n)a=0;else if("last_child_object_invalid"===n)a=r.nodes.size;else if("previous_sibling_object_invalid"===n)a=o;else{if("next_sibling_object_invalid"!==n)return;a=o+1}e.insertNodeByKey(r.key,a,i,{normalize:!1})}},{match:{object:"text"},next:[{object:"block"},{object:"inline"}],normalize:function(e,t){var n=t.code,r=t.next;"next_sibling_object_invalid"===n&&e.mergeNodeByKey(r.key,{normalize:!1})}}],Je={stack:void 0,rules:void 0},Ze=function(e){function t(){return E(this,t),T(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return D(t,e),C(t,[{key:"getNodeRules",value:function(e){return this.rules.filter(function(t){return et(e,t.match)})}},{key:"validateNode",value:function(e){var t=tt(e,this.getNodeRules(e),this.rules,{every:!0});if(t)return new $e(t.code,t)}},{key:"testNode",value:function(e){return!this.validateNode(e)}},{key:"assertNode",value:function(e){var t=this.validateNode(e);if(t)throw t}},{key:"normalizeNode",value:function(e){var t=this.stack.find("normalizeNode",e);if(t)return t;if("text"!=e.object){var n=this.validateNode(e);if(n)return function(e){Qe("normalizing",{error:n});var t=n.rule,r=e.operations.size;t.normalize&&t.normalize(e,n),e.operations.size===r&&function(e,t){var n=t.code,r=t.node,o=t.child,i=t.next,a=t.previous,s=t.key,l=t.mark;switch(n){case"child_object_invalid":case"child_type_invalid":case"child_unknown":case"first_child_object_invalid":case"first_child_type_invalid":case"last_child_object_invalid":case"last_child_type_invalid":return"text"===o.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(o.key,{normalize:!1});case"previous_sibling_object_invalid":case"previous_sibling_type_invalid":return"text"===a.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(a.key,{normalize:!1});case"next_sibling_object_invalid":case"next_sibling_type_invalid":return"text"===i.object&&"block"===r.object&&1===r.nodes.size?e.removeNodeByKey(r.key,{normalize:!1}):e.removeNodeByKey(i.key,{normalize:!1});case"child_required":case"node_text_invalid":case"parent_object_invalid":case"parent_type_invalid":return"document"===r.object?r.nodes.forEach(function(t){return e.removeNodeByKey(t.key,{normalize:!1})}):e.removeNodeByKey(r.key,{normalize:!1});case"node_data_invalid":return void 0===r.data.get(s)&&"document"!==r.object?e.removeNodeByKey(r.key,{normalize:!1}):e.setNodeByKey(r.key,{data:r.data.delete(s)},{normalize:!1});case"node_mark_invalid":return r.getTexts().forEach(function(t){return e.removeMarkByKey(t.key,0,t.text.length,l,{normalize:!1})});default:e.removeNodeByKey(r.key,{normalize:!1})}}(e,n)}}}},{key:"isAtomic",value:function(e){var t=this.rules.find(function(t){return"isAtomic"in t&&et(e,t.match)});return!!t&&t.isAtomic}},{key:"isVoid",value:function(e){var t=this.rules.find(function(t){return"isVoid"in t&&et(e,t.match)});return!!t&&t.isVoid}},{key:"toJSON",value:function(){return{object:this.object,rules:this.rules}}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isSchema(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Schema.create` only accepts objects or schemas, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isSchema(e))return e;var n=e.plugins?e.plugins:[{schema:e}],r=[].concat(Xe),o=!0,i=!1,a=void 0;try{for(var s,l=n[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var u=s.value.schema,c=void 0===u?{}:u,f=c.blocks,d=void 0===f?{}:f,p=c.inlines,m=void 0===p?{}:p,h=c.marks,_=void 0===h?{}:h;for(var g in c.rules&&(r=r.concat(c.rules)),c.document&&r.push(S({match:[{object:"document"}]},c.document)),d)r.push(S({match:[{object:"block",type:g}]},d[g]));for(var v in m)r.push(S({match:[{object:"inline",type:v}]},m[v]));for(var y in _)r.push(S({match:[{object:"mark",type:y}]},_[y]))}}catch(e){i=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}return new t({stack:Ke.create({plugins:n}),rules:r})}}]),t}(Object(i.Record)(Je));function et(e,t){return!tt(e,t)}function tt(e,t,n){var r=(arguments.length>3&&void 0!==arguments[3]?arguments[3]:{}).every,o=void 0!==r&&r;if(Array.isArray(t)){var i=t.length?t:[{}],a=void 0,s=!0,l=!1,u=void 0;try{for(var c,f=i[Symbol.iterator]();!(s=(c=f.next()).done);s=!0){var d=tt(e,c.value,n);if(a=a||d,o&&d)return d;if(!o&&!d)return}}catch(e){l=!0,u=e}finally{try{!s&&f.return&&f.return()}finally{if(l)throw u}}return a}return function(e,t){if(null==t.object)return;if(t.object===e.object)return;if("function"==typeof t.object&&t.object(e.object))return;return it("node_object_invalid",{rule:t,node:e})}(e,t)||function(e,t){if(null==t.type)return;if(t.type===e.type)return;if("function"==typeof t.type&&t.type(e.type))return;return it("node_type_invalid",{rule:t,node:e})}(e,t)||function(e,t){if(null==t.data)return;if(null==e.data)return;if("function"==typeof t.data){if(t.data(e.data))return;return it("node_data_invalid",{rule:t,node:e})}for(var n in t.data){var r=t.data[n],o=e.data&&e.data.get(n),i="function"==typeof r?r(o):r===o;if(!i)return it("node_data_invalid",{rule:t,node:e,key:n,value:o})}}(e,t)||function(e,t){if(null==t.marks)return;var n=e.getMarks().toArray(),r=function(n){var r=t.marks.some(function(e){return"function"==typeof e.type?e.type(n.type):e.type===n.type});return r?"continue":{v:it("node_mark_invalid",{rule:t,node:e,mark:n})}},o=!0,i=!1,a=void 0;try{for(var s,l=n[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var u=s.value,c=r(u);switch(c){case"continue":continue;default:if("object"===(void 0===c?"undefined":b(c)))return c.v}}}catch(e){i=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(i)throw a}}}(e,t)||function(e,t){if(null==t.text)return;var n=e.text;if("function"==typeof t.text?t.text(n):t.text.test(n))return;return it("node_text_invalid",{rule:t,node:e,text:n})}(e,t)||function(e,t){if(null==t.first)return;var n=e.nodes.first();if(!n)return;var r=tt(n,t.first);if(!r)return;return r.rule=t,r.node=e,r.child=n,r.code=r.code.replace("node_","first_child_"),r}(e,t)||function(e,t){if(null==t.last)return;var n=e.nodes.last();if(!n)return;var r=tt(n,t.last);if(!r)return;return r.rule=t,r.node=e,r.child=n,r.code=r.code.replace("node_","last_child_"),r}(e,t)||function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(null==e.nodes)return;var r=e.nodes.toArray(),o=null!=t.nodes?t.nodes.slice():[],i=void 0,a=void 0,s=void 0,l=void 0,u=void 0,c=void 0,f=void 0,d=void 0;function p(){return i=null==i?null:0,l=o.shift(),a=l&&l.min,u=l&&l.max,!!l}function m(){return s=null==s?0:s+1,i=null==i?0:i+1,f=c,c=r[s],d=r[s+1],null!=u&&i==u&&p(),!!c}function h(){i-=1,s-=1}null!=t.nodes&&p();for(;m();){var _=nt(e,c,n)||rt(e,c,f,s,n)||ot(e,c,d,s,n);if(_)return _;if(null!=t.nodes){if(!l)return it("child_unknown",{rule:t,node:e,child:c,index:s});if(l.match){var g=tt(c,l.match);if(g&&i>=a&&p()){h();continue}if(g)return g.rule=t,g.node=e,g.child=c,g.index=s,g.code=g.code.replace("node_","child_"),g}}}if(null!=t.nodes)for(;null!=a;){if(i0&&void 0!==arguments[0]?arguments[0]:{};return new vt(S({},e,{value:this}))}},{key:"addMark",value:function(e,t,n,r){var o=this,i=o.document;return i=i.addMark(e,t,n,r),o=this.set("document",i)}},{key:"insertNode",value:function(e,t){var n=this,r=n.document;return r=r.insertNode(e,t),n=(n=n.set("document",r)).mapRanges(function(e){return e.updatePoints(function(e){return e.setPath(null)})})}},{key:"insertText",value:function(e,t,n,r){var o=this,i=o,a=i.document,s=i.schema;a=a.insertText(e,t,n,r),o=o.set("document",a);var l=a.assertNode(e);return o=(o=o.mapRanges(function(e){var r=e,o=r.anchor,i=r.focus,a=r.isBackward,u=Ie.isDecoration(e)&&s.isAtomic(e.mark);return o.key!==l.key||!(o.offset>t)&&(o.offset!==t||u&&a)||(e=e.moveAnchorForward(n.length)),i.key===l.key&&(i.offset>t||i.offset==t&&(!u||a))&&(e=e.moveFocusForward(n.length)),e})).clearAtomicRanges(l.key,t)}},{key:"mergeNode",value:function(e){var t=this,n=t.document,r=n.mergeNode(e);e=n.resolvePath(e);var o=ye.decrement(e),i=n.getNode(o),a=n.getNode(e);return t=(t=t.set("document",r)).mapRanges(function(e){if("text"===a.object){var t=i.text.length;e.anchor.key===a.key&&(e=e.moveAnchorTo(i.key,t+e.anchor.offset)),e.focus.key===a.key&&(e=e.moveFocusTo(i.key,t+e.focus.offset))}return e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"moveNode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this,o=r.document;return o=o.moveNode(e,t,n),r=(r=r.set("document",o)).mapRanges(function(e){return e.updatePoints(function(e){return e.setPath(null)})})}},{key:"removeMark",value:function(e,t,n,r){var o=this,i=o.document;return i=i.removeMark(e,t,n,r),o=this.set("document",i)}},{key:"removeNode",value:function(e){var t=this,n=t.document,r=n.assertNode(e),o="text"==r.object?r:r.getFirstText()||r,i="text"==r.object?r:r.getLastText()||r,a=n.getPreviousText(o.key),s=n.getNextText(i.key);return n=n.removeNode(e),t=(t=t.set("document",n)).mapRanges(function(e){var t=e,n=t.start,o=t.end;return r.hasNode(n.key)&&(e=a?e.moveStartTo(a.key,a.text.length):s?e.moveStartTo(s.key,0):e.unset()),r.hasNode(o.key)&&(e=a?e.moveEndTo(a.key,a.text.length):s?e.moveEndTo(s.key,0):e.unset()),e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"removeText",value:function(e,t,n){var r=this,o=r.document;o=o.removeText(e,t,n),r=r.set("document",o);var i=o.assertNode(e),a=n.length,s=t+a;return r=(r=r.clearAtomicRanges(i.key,t,t+a)).mapRanges(function(e){var n=e,r=n.anchor,o=n.focus;return r.key===i.key&&(e=r.offset>=s?e.moveAnchorBackward(a):r.offset>t?e.moveAnchorTo(r.key,t):e),o.key===i.key&&(e=o.offset>=s?e.moveFocusBackward(a):o.offset>t?e.moveFocusTo(o.key,t):e),e})}},{key:"setNode",value:function(e,t){var n=this,r=n.document;return r=r.setNode(e,t),n=n.set("document",r)}},{key:"setMark",value:function(e,t,n,r,o){var i=this,a=i.document;return a=a.setMark(e,t,n,r,o),i=i.set("document",a)}},{key:"setProperties",value:function(e){var t=this,n=t.document,r=e.data,o=e.decorations,i=e.history,a=e.schema,s={};return r&&(s.data=r),i&&(s.history=i),a&&(s.schema=a),o&&(s.decorations=o.map(function(e){return e.isSet?e:n.resolveDecoration(e)})),t=t.merge(s)}},{key:"setSelection",value:function(e){var t=this,n=t,r=n.document,o=n.selection,i=o.setProperties(e);return o=r.resolveSelection(i),t=t.set("selection",o)}},{key:"splitNode",value:function(e,t,n){var r=this,o=r.document,i=o.splitNode(e,t,n),a=o.assertNode(e);return r=(r=r.set("document",i)).mapRanges(function(e){var n=i.getNextText(a.key),r=e,o=r.start,s=r.end;return a.key===o.key&&t<=o.offset&&(e=e.moveStartTo(n.key,o.offset-t)),a.key===s.key&&t<=s.offset&&(e=e.moveEndTo(n.key,s.offset-t)),e=e.updatePoints(function(e){return e.setPath(null)})})}},{key:"mapRanges",value:function(e){var t=this,n=t,r=n.document,o=n.selection,i=n.decorations,a=o.isSet?e(o):o;a||(a=o.unset()),a!==o&&(a=r.createSelection(a)),t=t.set("selection",a);var s=i.map(function(t){var n=t.isSet?e(t):t;return n&&n!==t&&(n=r.createDecoration(n)),n});return s=s.filter(function(e){return!!e}),t=t.set("decorations",s)}},{key:"clearAtomicRanges",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=this,o=r.schema;return r=this.mapRanges(function(r){if(!Ie.isDecoration(r))return r;var i=r.start,a=r.end,s=r.mark;return o.isAtomic(s)?i.key!==e?r:i.offsett)?null:null!=n&&i.offsetn)?null:r:r})}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={object:this.object,document:this.document.toJSON(e)};return e.preserveData&&(t.data=this.data.toJSON(e)),e.preserveDecorations&&(t.decorations=this.decorations.toArray().map(function(t){return t.toJSON(e)})),e.preserveHistory&&(t.history=this.history.toJSON(e)),e.preserveSelection&&(t.selection=this.selection.toJSON(e)),e.preserveSchema&&(t.schema=this.schema.toJSON(e)),t}},{key:"startBlock",get:function(){return this.selection.start.key&&this.document.getClosestBlock(this.selection.start.key)}},{key:"endBlock",get:function(){return this.selection.end.key&&this.document.getClosestBlock(this.selection.end.key)}},{key:"anchorBlock",get:function(){return this.selection.anchor.key&&this.document.getClosestBlock(this.selection.anchor.key)}},{key:"focusBlock",get:function(){return this.selection.focus.key&&this.document.getClosestBlock(this.selection.focus.key)}},{key:"startInline",get:function(){return this.selection.start.key&&this.document.getClosestInline(this.selection.start.key)}},{key:"endInline",get:function(){return this.selection.end.key&&this.document.getClosestInline(this.selection.end.key)}},{key:"anchorInline",get:function(){return this.selection.anchor.key&&this.document.getClosestInline(this.selection.anchor.key)}},{key:"focusInline",get:function(){return this.selection.focus.key&&this.document.getClosestInline(this.selection.focus.key)}},{key:"startText",get:function(){return this.selection.start.key&&this.document.getDescendant(this.selection.start.key)}},{key:"endText",get:function(){return this.selection.end.key&&this.document.getDescendant(this.selection.end.key)}},{key:"anchorText",get:function(){return this.selection.anchor.key&&this.document.getDescendant(this.selection.anchor.key)}},{key:"focusText",get:function(){return this.selection.focus.key&&this.document.getDescendant(this.selection.focus.key)}},{key:"nextBlock",get:function(){return this.selection.end.key&&this.document.getNextBlock(this.selection.end.key)}},{key:"previousBlock",get:function(){return this.selection.start.key&&this.document.getPreviousBlock(this.selection.start.key)}},{key:"nextInline",get:function(){return this.selection.end.key&&this.document.getNextInline(this.selection.end.key)}},{key:"previousInline",get:function(){return this.selection.start.key&&this.document.getPreviousInline(this.selection.start.key)}},{key:"nextText",get:function(){return this.selection.end.key&&this.document.getNextText(this.selection.end.key)}},{key:"previousText",get:function(){return this.selection.start.key&&this.document.getPreviousText(this.selection.start.key)}},{key:"marks",get:function(){return this.selection.isUnset?new i.Set:this.selection.marks||this.document.getMarksAtRange(this.selection)}},{key:"activeMarks",get:function(){return this.selection.isUnset?new i.Set:this.selection.marks||this.document.getActiveMarksAtRange(this.selection)}},{key:"blocks",get:function(){return this.selection.isUnset?new i.List:this.document.getBlocksAtRange(this.selection)}},{key:"fragment",get:function(){return this.selection.isUnset?I.create():this.document.getFragmentAtRange(this.selection)}},{key:"inlines",get:function(){return this.selection.isUnset?new i.List:this.document.getInlinesAtRange(this.selection)}},{key:"texts",get:function(){return this.selection.isUnset?new i.List:this.document.getTextsAtRange(this.selection)}}],[{key:"create",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t.isValue(e))return e;if(o()(e))return t.fromJSON(e,n);throw new Error("`Value.create` only accepts objects or values, but you passed it: "+e)}},{key:"createProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(t.isValue(e))return{data:e.data,decorations:e.decorations,schema:e.schema};if(o()(e)){var n={};return"data"in e&&(n.data=k.create(e.data)),"decorations"in e&&(n.decorations=Ie.createList(e.decorations)),"schema"in e&&(n.schema=Ze.create(e.schema)),n}throw new Error("`Value.createProperties` only accepts objects or values, but you passed it: "+e)}},{key:"fromJSON",value:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.data,o=void 0===r?{}:r,a=e.decorations,s=void 0===a?[]:a,l=e.document,u=void 0===l?{}:l,c=e.selection,f=void 0===c?{}:c,d=e.schema,p=void 0===d?{}:d,m=e.history,h=void 0===m?{}:m;if(o=k.fromJSON(o),p=Ze.fromJSON(p),h=ze.fromJSON(h),f=(u=I.fromJSON(u)).createSelection(f),s=Object(i.List)(s.map(function(e){return Ie.fromJSON(e)})),f.isUnset){var _=u.getFirstText();_&&(f=f.moveToStartOfNode(_)),f=u.createSelection(f)}var g=new t({data:o,decorations:s,document:u,selection:f,schema:p,history:h});if(!1!==n.normalize){var v=g.change();v.withoutSaving(function(){return v.normalize()}),g=v.value}return g}}]),t}(Object(i.Record)(at)),lt={setValue:function(e,t){t=st.createProperties(t);var n=e.value;e.applyOperation({type:"set_value",properties:t,value:n})}},ut=S({},X,ue,be,xe,Ue,lt),ct=p()("slate:operation:apply");function ft(e,t){var n=(t=_t.create(t)).type;switch(ct(n,t),n){case"add_mark":var r=t,o=r.path,i=r.offset,a=r.length,s=r.mark;return e.addMark(o,i,a,s);case"insert_node":var l=t,u=l.path,c=l.node;return e.insertNode(u,c);case"insert_text":var f=t,d=f.path,p=f.offset,m=f.text,h=f.marks;return e.insertText(d,p,m,h);case"merge_node":var _=t.path;return e.mergeNode(_);case"move_node":var g=t,v=g.path,y=g.newPath;return e.moveNode(v,y);case"remove_mark":var b=t,E=b.path,C=b.offset,S=b.length,D=b.mark;return e.removeMark(E,C,S,D);case"remove_node":var w=t.path;return e.removeNode(w);case"remove_text":var T=t,x=T.path,R=T.offset,k=T.text;return e.removeText(x,R,k);case"set_mark":var N=t,I=N.path,O=N.offset,A=N.length,M=N.mark,P=N.properties;return e.setMark(I,O,A,M,P);case"set_node":var L=t,F=L.path,U=L.properties;return e.setNode(F,U);case"set_selection":var j=t.properties;return e.setSelection(j);case"set_value":var B=t.properties;return e.setProperties(B);case"split_node":var G=t,q=G.path,V=G.position,H=G.properties;return e.splitNode(q,V,H);default:throw new Error('Unknown operation type: "'+n+'".')}}var dt=p()("slate:operation:invert");function pt(e){var t=(e=_t.create(e)).type;switch(dt(t,e),t){case"insert_node":return e.set("type","remove_node");case"remove_node":return e.set("type","insert_node");case"move_node":var n=e,r=n.newPath,o=n.path,i=r,a=o,s=o.size-1,l=r.size-1;return o.size0&&void 0!==arguments[0]?arguments[0]:{};if(t.isOperation(e))return e;if(o()(e))return t.fromJSON(e);throw new Error("`Operation.create` only accepts objects or operations, but you passed it: "+e)}},{key:"createList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(i.List.isList(e)||Array.isArray(e))return new i.List(e.map(t.create));throw new Error("`Operation.createList` only accepts arrays or lists, but you passed it: "+e)}},{key:"fromJSON",value:function(e){if(t.isOperation(e))return e;var n=e.type,r=mt[n],o={type:n};if(!r)throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: "'+n+'"');var i=!0,a=!1,s=void 0;try{for(var l,u=r[Symbol.iterator]();!(i=(l=u.next()).done);i=!0){var c=l.value,f=e[c];if(void 0===f){if("document"==c)continue;if("selection"==c)continue;if("value"==c)continue;if("node"==c&&"insert_node"!=n)continue;throw new Error('`Operation.fromJSON` was passed a "'+n+'" operation without the required "'+c+'" attribute.')}"path"!==c&&"newPath"!==c||(f=ye.create(f)),"mark"===c&&(f=P.create(f)),"marks"===c&&null!=f&&(f=P.createSet(f)),"node"===c&&(f=K.create(f)),"selection"===c&&(f=Fe.create(f)),"value"===c&&(f=st.create(f)),"properties"===c&&"merge_node"===n&&(f=K.createProperties(f)),"properties"===c&&"set_mark"===n&&(f=P.createProperties(f)),"properties"===c&&"set_node"===n&&(f=K.createProperties(f)),"properties"===c&&"set_selection"===n&&(f=Fe.createProperties(f)),"properties"===c&&"set_value"===n&&(f=st.createProperties(f)),"properties"===c&&"split_node"===n&&(f=K.createProperties(f)),o[c]=f}}catch(e){a=!0,s=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return new t(o)}},{key:"isOperationList",value:function(e){return i.List.isList(e)&&e.every(function(e){return t.isOperation(e)})}}]),t}(Object(i.Record)(ht)),gt=p()("slate:change"),vt=function(){function e(t){E(this,e);var n=t.value;this.value=n,this.operations=new i.List,this.tmp={dirty:[],merge:null,normalize:!0,save:!0}}return C(e,[{key:"applyOperation",value:function(e){var t=this.operations,n=this.value,r=n.history;o()(e)&&(e=S({},e,{value:n})),e=_t.create(e);var i=this.tmp,a=i.merge,s=i.save;null==a&&0!==t.size&&(a=!0),gt("apply",{operation:e,save:s,merge:a}),n=e.apply(n),r&&s&&(r=r.save(e,{merge:a}),n=n.set("history",r));var l=function(e){var t=e.type,n=e.node,r=e.path,o=e.newPath;switch(t){case"add_mark":case"insert_text":case"remove_mark":case"remove_text":case"set_mark":case"set_node":return[r];case"insert_node":var i=n.getKeysToPathsTable(),a=Object.values(i).map(function(e){return r.concat(e)}),s=ye.lift(r);return[s,r].concat(R(a));case"split_node":var l=ye.lift(r),u=ye.increment(r);return[l,r,u];case"merge_node":var c=ye.lift(r),f=ye.decrement(r);return[c,f];case"move_node":var d=ye.lift(r),p=ye.lift(o);return ye.isSibling(r,o)||(p.size&&ye.isYounger(r,o)&&(p=ye.decrement(p,1,r.size-1)),d.size&&ye.isYounger(o,r)&&(d=ye.increment(d,1,o.size-1))),[d,p];case"remove_node":var m=ye.lift(r);return[m];default:return[]}}(e),u=this.tmp.dirty.reduce(function(t,n){n=ye.create(n);var r=ye.transform(n,e);return t=t.concat(r.toArray())},l);return this.tmp.dirty=u,this.value=n,this.operations=t.push(e),this}},{key:"applyOperations",value:function(e,t){var n=this;return e.forEach(function(e){return n.applyOperation(e,t)}),this}},{key:"call",value:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;rs)throw new Error("A schema rule could not be normalized after sufficient iterations. This is usually due to a `rule.normalize` or `plugin.normalizeNode` function of a schema being incorrectly written, causing an infinite loop.");n()}}()}),this}},{key:"withoutNormalizing",value:function(e){var t=this.tmp.normalize;return this.tmp.normalize=!1,e(this),this.tmp.normalize=t,this.normalizeDirtyPaths(),this}},{key:"withoutMerging",value:function(e){var t=this.tmp.merge;return this.tmp.merge=!1,e(this),this.tmp.merge=t,this}},{key:"withoutSaving",value:function(e){var t=this.tmp.save;return this.tmp.save=!1,e(this),this.tmp.save=t,this}},{key:"setOperationFlag",value:function(e,t){return Object(a.a)(!1,"As of slate@0.41.0 the `change.setOperationFlag` method has been deprecated."),this.tmp[e]=t,this}},{key:"getFlag",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object(a.a)(!1,"As of slate@0.41.0 the `change.getFlag` method has been deprecated."),void 0!==t[e]?t[e]:this.tmp[e]}},{key:"unsetOperationFlag",value:function(e){return Object(a.a)(!1,"As of slate@0.41.0 the `change.unsetOperationFlag` method has been deprecated."),delete this.tmp[e],this}},{key:"withoutNormalization",value:function(e){return Object(a.a)(!1,"As of slate@0.41.0 the `change.withoutNormalization` helper has been renamed to `change.withoutNormalizing`."),this.withoutNormalizing(e)}}]),e}();function yt(e,t){var n=!0,r=!1,o=void 0;try{for(var i,a=t[Symbol.iterator]();!(n=(i=a.next()).done);n=!0){var s=i.value,l=!0,u=!1,c=void 0;try{for(var f,d=Object.getOwnPropertyNames(e)[Symbol.iterator]();!(l=(f=d.next()).done);l=!0){var p=f.value;if(!s.hasOwnProperty(p)){var m=Object.getOwnPropertyDescriptor(e,p);Object.defineProperty(s,p,m)}}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}var h=!0,_=!1,g=void 0;try{for(var v,y=Object.getOwnPropertyNames(e.prototype)[Symbol.iterator]();!(h=(v=y.next()).done);h=!0){var b=v.value;if(!s.prototype.hasOwnProperty(b)){m=Object.getOwnPropertyDescriptor(e.prototype,b);Object.defineProperty(s.prototype,b,m)}}}catch(e){_=!0,g=e}finally{try{!h&&y.return&&y.return()}finally{if(_)throw g}}}}catch(e){r=!0,o=e}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}}function bt(e){var t=Oe[e],n="is"+(""+e.charAt(0).toUpperCase()+e.slice(1)),r=function(){function t(){E(this,t)}return C(t,[{key:"object",get:function(){return e}}]),t}();return r[n]=Ae.bind(null,e),r.prototype[t]=!0,r}Object.keys(ut).forEach(function(e){vt.prototype[e]=function(){for(var t=arguments.length,n=Array(t),r=0;r1?r-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:1;return(e=this.resolvePath(e))&&this.getNode(e)?e.size-1+t:null}},{key:"getDescendant",value:function(e){if(!(e=this.resolvePath(e)))return null;var t=e.flatMap(function(e){return["nodes",e]});return this.getIn(t)}},{key:"getFragmentAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)return I.create();for(var t=e,n=t.start,r=t.end,o=this,i=r.path,a=r.offset,s="end";i.size;){var l=i.last();o=o.splitNode(i,a),a=l+1,(i=ye.lift(i)).size||"end"!==s||(i=n.path,a=n.offset,s="start")}var u=n.path.first()+1,c=r.path.first()+2,f=o.nodes.slice(u,c);return I.create({nodes:f})}},{key:"getFurthest",value:function(e,t){var n=this,r=this.getAncestors(e);return r&&r.find(function(e){for(var r=arguments.length,o=Array(r>1?r-1:0),i=1;i1}).last()||null}},{key:"getInlines",value:function(){var e=this.getInlinesAsArray();return Object(i.List)(e)}},{key:"getInlinesAsArray",value:function(){var e=[];return this.nodes.forEach(function(t){"text"!=t.object&&(t.isLeafInline()?e.push(t):e=e.concat(t.getInlinesAsArray()))}),e}},{key:"getInlinesAtRange",value:function(e){var t=this.getInlinesAtRangeAsArray(e);return Object(i.List)(Object(i.OrderedSet)(t))}},{key:"getInlinesAtRangeAsArray",value:function(e){var t=this;return(e=this.resolveRange(e)).isUnset?[]:this.getTextsAtRangeAsArray(e).map(function(e){return t.getClosestInline(e.key)}).filter(function(e){return e})}},{key:"getInlinesByType",value:function(e){var t=this.getInlinesByTypeAsArray(e);return Object(i.List)(t)}},{key:"getInlinesByTypeAsArray",value:function(e){return this.nodes.reduce(function(t,n){return"text"==n.object?t:n.isLeafInline()&&n.type==e?(t.push(n),t):t.concat(n.getInlinesByTypeAsArray(e))},[])}},{key:"getInsertMarksAtRange",value:function(e){var t=(e=this.resolveRange(e)).start;return e.isUnset?Object(i.Set)():e.isCollapsed?this.getMarksAtPosition(t.key,t.offset):this.getDescendant(t.key).getMarksAtIndex(t.offset+1)}},{key:"getMarks",value:function(){var e=this.getMarksAsArray();return Object(i.Set)(e)}},{key:"getMarksAsArray",value:function(){var e,t=[];return this.nodes.forEach(function(e){t.push(e.getMarksAsArray())}),(e=[]).concat.apply(e,t)}},{key:"getMarksAtPosition",value:function(e,t){var n=this.getDescendant(e).getMarksAtIndex(t);if(0!==t)return n;var r=this.getClosestBlock(e);if(""===r.text)return n;var o=this.getPreviousText(e);return o?r.hasDescendant(o.key)?o.getMarksAtIndex(o.text.length):n:Object(i.Set)()}},{key:"getMarksAtRange",value:function(e){return Object(i.Set)(this.getOrderedMarksAtRange(e))}},{key:"getMarksByType",value:function(e){var t=this.getMarksByTypeAsArray(e);return Object(i.Set)(t)}},{key:"getMarksByTypeAsArray",value:function(e){return this.nodes.reduce(function(t,n){return"text"==n.object?t.concat(n.getMarksAsArray().filter(function(t){return t.type==e})):t.concat(n.getMarksByTypeAsArray(e))},[])}},{key:"getNextBlock",value:function(e){var t=this.assertDescendant(e),n=void 0;"block"==t.object?n=t.getLastText():n=this.getClosestBlock(e).getLastText();var r=this.getNextText(n.key);return r?this.getClosestBlock(r.key):null}},{key:"getNextNode",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;for(var t=e.size;t>0;t--){var n=e.slice(0,t),r=ye.increment(n),o=this.getNode(r);if(o)return o}return null}},{key:"getNextSibling",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=ye.increment(e);return this.getNode(t)}},{key:"getNextText",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=this.getNextNode(e);return t?t.getFirstText():null}},{key:"getOffset",value:function(e){this.assertDescendant(e);var t=this.getFurthestAncestor(e),n=this.nodes.takeUntil(function(e){return e==t}).reduce(function(e,t){return e+t.text.length},0);return this.hasChild(e)?n:n+t.getOffset(e)}},{key:"getOffsetAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)throw new Error("The range cannot be unset to calculcate its offset.");if(e.isExpanded)throw new Error("The range must be collapsed to calculcate its offset.");var t=e.start;return this.getOffset(t.key)+t.offset}},{key:"getOrderedMarks",value:function(){var e=this.getMarksAsArray();return Object(i.OrderedSet)(e)}},{key:"getOrderedMarksAtRange",value:function(e){var t=e=this.resolveRange(e),n=t.start,r=t.end;return e.isUnset?Object(i.OrderedSet)():e.isCollapsed?this.getMarksAtPosition(n.key,n.offset):this.getOrderedMarksBetweenPositions(n.key,n.offset,r.key,r.offset)}},{key:"getOrderedMarksBetweenPositions",value:function(e,t,n,r){if(e===n)return this.getDescendant(e).getMarksBetweenOffsets(t,r);var o=this.getTextsBetweenPositionsAsArray(e,n);return Object(i.OrderedSet)().withMutations(function(i){o.forEach(function(o){o.key===e?i.union(o.getMarksBetweenOffsets(t,o.text.length)):o.key===n?i.union(o.getMarksBetweenOffsets(0,r)):i.union(o.getMarks())})})}},{key:"getOrderedMarksByType",value:function(e){var t=this.getMarksByTypeAsArray(e);return Object(i.OrderedSet)(t)}},{key:"getParent",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=ye.lift(e);return this.getNode(t)}},{key:"getPreviousBlock",value:function(e){var t=this.assertDescendant(e),n=void 0;"block"==t.object?n=t.getFirstText():n=this.getClosestBlock(e).getFirstText();var r=this.getPreviousText(n.key);return r?this.getClosestBlock(r.key):null}},{key:"getPreviousNode",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;for(var t=e.size;t>0;t--){var n=e.slice(0,t);if(0!==n.last()){var r=ye.decrement(n),o=this.getNode(r);if(o)return o}}return null}},{key:"getPreviousSibling",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;if(0===e.last())return null;var t=ye.decrement(e);return this.getNode(t)}},{key:"getPreviousText",value:function(e){if(!(e=this.resolvePath(e)))return null;if(!e.size)return null;var t=this.getPreviousNode(e);return t?t.getLastText():null}},{key:"getSelectionIndexes",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e.start,r=e.end;if(!t)return null;if(e.isUnset)return null;if(n.key==r.key){var o=this.getFurthestAncestor(n.key),i=o?this.nodes.indexOf(o):null;return{start:i,end:i+1}}var a=null,s=null;return this.nodes.forEach(function(e,t){return"text"==e.object?(null==a&&e.key==n.key&&(a=t),null==s&&e.key==r.key&&(s=t+1)):(null==a&&e.hasDescendant(n.key)&&(a=t),null==s&&e.hasDescendant(r.key)&&(s=t+1)),null==a||null==s}),t&&null==a&&(a=0),t&&null==s&&(s=this.nodes.size),null==a?null:{start:a,end:s}}},{key:"getTextAtOffset",value:function(e){if(0===e)return this.getFirstText();if(e===this.text.length)return this.getLastText();if(e<0||e>this.text.length)return null;var t=0;return this.getTexts().find(function(n,r,o){return(t+=n.text.length)>e})}},{key:"getTextDirection",value:function(){var e=h()(this.text);return"neutral"===e?null:e}},{key:"getTexts",value:function(){var e=this.getTextsAsArray();return Object(i.List)(e)}},{key:"getTextsAsArray",value:function(){var e=[];return this.nodes.forEach(function(t){"text"==t.object?e.push(t):e=e.concat(t.getTextsAsArray())}),e}},{key:"getTextsAtRange",value:function(e){if((e=this.resolveRange(e)).isUnset)return Object(i.List)();var t=e,n=t.start,r=t.end;return Object(i.List)(this.getTextsBetweenPositionsAsArray(n.key,r.key))}},{key:"getTextsAtRangeAsArray",value:function(e){if((e=this.resolveRange(e)).isUnset)return[];var t=e,n=t.start,r=t.end;return this.getTextsBetweenPositionsAsArray(n.key,r.key)}},{key:"getTextsBetweenPositionsAsArray",value:function(e,t){var n=this.getDescendant(e);if(e==t)return[n];var r=this.getDescendant(t),o=this.getTextsAsArray(),i=o.indexOf(n),a=o.indexOf(r,i);return o.slice(i,a+1)}},{key:"hasBlockChildren",value:function(){return!(!this.nodes||!this.nodes.find(function(e){return"block"===e.object}))}},{key:"hasChild",value:function(e){return!!this.getChild(e)}},{key:"hasInlineChildren",value:function(){return!(!this.nodes||!this.nodes.find(function(e){return"inline"===e.object||"text"===e.object}))}},{key:"hasDescendant",value:function(e){return!!this.getDescendant(e)}},{key:"hasVoidParent",value:function(e,t){return!!this.getClosestVoid(e,t)}},{key:"insertNode",value:function(e,t){var n=(e=this.resolvePath(e)).last(),r=ye.lift(e),o=this.assertNode(r),i=o.nodes.splice(n,0,t);return o=o.set("nodes",i),this.replaceNode(r,o)}},{key:"insertText",value:function(e,t,n,r){var o=this.assertDescendant(e);return e=this.resolvePath(e),o=o.insertText(t,n,r),this.replaceNode(e,o)}},{key:"isLeafBlock",value:function(){var e=this.object,t=this.nodes.first();return"block"===e&&"block"!==t.object}},{key:"isLeafInline",value:function(){var e=this.object,t=this.nodes.first();return"inline"===e&&"inline"!==t.object}},{key:"mapChildren",value:function(e){var t=this,n=this.nodes;return n.forEach(function(r,o){var i=e(r,o,t.nodes);i!==r&&(n=n.set(i.key,i))}),this.set("nodes",n)}},{key:"mapDescendants",value:function(e){var t=this,n=this.nodes;return n.forEach(function(r,o){var i=r;"text"!==i.object&&(i=i.mapDescendants(e)),(i=e(i,o,t.nodes))!==r&&(n=n.set(o,i))}),this.set("nodes",n)}},{key:"mergeNode",value:function(e){var t=this.assertNode(e);if(0===(e=this.resolvePath(e)).last())throw new Error("Unable to merge node because it has no previous sibling: "+t);var n=ye.decrement(e),r=this.assertNode(n);if(r.object!==t.object)throw new Error("Unable to merge two different kinds of nodes: "+r+" and "+t);var o="text"===r.object?r.mergeText(t):r.set("nodes",r.nodes.concat(t.nodes)),i=this;return i=(i=(i=i.removeNode(e)).removeNode(n)).insertNode(n,o)}},{key:"moveNode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=this.assertNode(e);e=this.resolvePath(e),t=this.resolvePath(t,n);var o=ye.lift(t);this.assertNode(o);var i=ye.crop(e,t),a=x(i,2),s=a[0],l=a[1],u=ye.compare(s,l);e.size1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:e;return this.setPoints([this.anchor.moveToStartOfNode(e),this.focus.moveToEndOfNode(t)])}},{key:"moveToStart",value:function(){return this.setEnd(this.start)}},{key:"moveToStartOfNode",value:function(e){return this.updatePoints(function(t){return t.moveToStartOfNode(e)})}},{key:"normalize",value:function(e){return this.updatePoints(function(t){return t.normalize(e)})}},{key:"setAnchor",value:function(e){return this.set("anchor",e)}},{key:"setEnd",value:function(e){return this.isBackward?this.setAnchor(e):this.setFocus(e)}},{key:"setFocus",value:function(e){return this.set("focus",e)}},{key:"setPoints",value:function(e){var t=x(e,2),n=t[0],r=t[1];return this.set("anchor",n).set("focus",r)}},{key:"updatePoints",value:function(e){var t=this.anchor,n=this.focus;return t=e(t),n=e(n),this.merge({anchor:t,focus:n})}},{key:"setStart",value:function(e){return this.isBackward?this.setFocus(e):this.setAnchor(e)}},{key:"setProperties",value:function(e){var t=e=Pe.createProperties(e),n=t.anchor,r=t.focus,o=w(t,["anchor","focus"]);return n&&(o.anchor=ke.create(n)),r&&(o.focus=ke.create(r)),this.merge(o)}},{key:"toJSON",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{object:this.object,anchor:this.anchor.toJSON(e),focus:this.focus.toJSON(e)}}},{key:"toRange",value:function(){var e=Pe.createProperties(this);return Pe.create(e)}},{key:"unset",value:function(){return this.updatePoints(function(e){return e.unset()})}},{key:"isCollapsed",get:function(){return this.anchor===this.focus||this.anchor.key===this.focus.key&&this.anchor.offset===this.focus.offset}},{key:"isExpanded",get:function(){return!this.isCollapsed}},{key:"isBackward",get:function(){var e=this.isUnset,t=this.anchor,n=this.focus;return e?null:t.key===n.key?t.offset>n.offset:ye.isBefore(n.path,t.path)}},{key:"isForward",get:function(){var e=this.isBackward;return null==e?null:!e}},{key:"isUnset",get:function(){var e=this.anchor,t=this.focus;return e.isUnset||t.isUnset}},{key:"isSet",get:function(){return!this.isUnset}},{key:"start",get:function(){return this.isBackward?this.focus:this.anchor}},{key:"end",get:function(){return this.isBackward?this.anchor:this.focus}}]),e}(),[Ie,Pe,Fe]);var kt={apply:ft,invert:pt},Nt={Block:Q,Changes:ut,Data:k,Decoration:Ie,Document:I,History:ze,Inline:A,KeyUtils:y,Leaf:F,Mark:P,Node:K,Operation:_t,Operations:kt,PathUtils:ye,Point:ke,Range:Pe,resetMemoization:H,Schema:Ze,Selection:Fe,Stack:Ke,Text:W,TextUtils:le,useMemoization:Y,Value:st};t.default=Nt},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SettingLevel=void 0;var r=b(n(20)),o=b(n(19)),i=n(9),a=b(n(14)),s=b(n(4)),l=b(n(5)),u=b(n(1129)),c=b(n(1130)),f=b(n(1131)),d=b(n(1132)),p=b(n(1133)),m=b(n(1134)),h=b(n(1135)),_=n(2),g=b(n(39)),v=n(1146),y=b(n(1152));function b(e){return e&&e.__esModule?e:{default:e}}t.SettingLevel={DEVICE:"device",ROOM_DEVICE:"room-device",ROOM_ACCOUNT:"room-account",ACCOUNT:"account",ROOM:"room",CONFIG:"config",DEFAULT:"default"};var E={},C=[],S=!0,D=!1,w=void 0;try{for(var T,x=(0,r.default)((0,a.default)(v.SETTINGS));!(S=(T=x.next()).done);S=!0){var R=T.value;E[R]=v.SETTINGS[R].default,v.SETTINGS[R].isFeature&&C.push(R)}}catch(e){D=!0,w=e}finally{try{!S&&x.return&&x.return()}finally{if(D)throw w}}var k={device:new u.default(C),"room-device":new c.default,"room-account":new d.default,account:new p.default,room:new m.default,config:new h.default,default:new f.default(E)},N=!0,I=!1,O=void 0;try{for(var A,M=(0,r.default)((0,a.default)(k));!(N=(A=M.next()).done);N=!0){var P=A.value;k[P]=new y.default(k[P])}}catch(e){I=!0,O=e}finally{try{!N&&M.return&&M.return()}finally{if(I)throw O}}var L=["device","room-device","room-account","account","room","config","default"],F=function(){function e(){(0,s.default)(this,e)}return(0,l.default)(e,null,[{key:"getDisplayName",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"default";if(!v.SETTINGS[e]||!v.SETTINGS[e].displayName)return null;var n=v.SETTINGS[e].displayName;return n instanceof Object&&(n=n[t]?n[t]:n.default),(0,_._t)(n)}},{key:"getLabsFeatures",value:function(){var t=(0,a.default)(v.SETTINGS).filter(function(t){return e.isFeature(t)});return g.default.get().enableLabs?t:t.filter(function(t){return"labs"===e._getFeatureState(t)})}},{key:"isFeature",value:function(e){return!!v.SETTINGS[e]&&v.SETTINGS[e].isFeature}},{key:"isFeatureEnabled",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e.isFeature(t))throw new Error("Setting "+t+" is not a feature");return e.getValue(t,n)}},{key:"setFeatureEnabled",value:function(t,n){if(!v.SETTINGS[t])throw new Error("Setting '"+t+"' does not appear to be a setting.");if(!e.isFeature(t))throw new Error("Setting "+t+" is not a feature");return e.setValue(t,null,"device",n)}},{key:"getValue",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!v.SETTINGS[t])throw new Error("Setting '"+t+"' does not appear to be a setting.");var o=v.SETTINGS[t],i=o.supportedLevelsAreOrdered?o.supportedLevels:L;return e.getValueAt(i[0],t,n,!1,r)}},{key:"getValueAt",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(!v.SETTINGS[n])throw new Error("Setting '"+n+"' does not appear to be a setting.");var a=v.SETTINGS[n],s=a.supportedLevelsAreOrdered?a.supportedLevels:L;s.includes("default")||s.push("default");var l=s.indexOf(t);if(-1===l)throw new Error("Level "+t+" is not prioritized");if(e.isFeature(n)){var u=e._getFeatureState(n);if("enable"===u)return!0;if("disable"===u)return!1}var c=e._getHandlers(n);if(o){var f=c[t];if(!f)return e._tryControllerOverride(n,t,r,null,null);var d=f.getValue(n,r);return e._tryControllerOverride(n,t,r,d,t)}for(var p=l;p>>0;if("function"!=typeof e)throw new TypeError;for(var r=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");arguments.length>1&&(n=t);var a=new Array(i);for(r=0;r>>0;if("function"!=typeof e)throw new TypeError(e+" is not a function");for(arguments.length>1&&(n=t),r=0;r1){var i=Object(arguments[1]);for(var a in i)t.call(i,a)&&(r[a]=i[a])}return r}}()),e.super_=t,e.prototype=(0,r.default)(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},e.exports.isNumber=function(e){return"number"==typeof e&&isFinite(e)},e.exports.removeHiddenChars=function(e){return e.normalize("NFD").replace(l,"")};var l=/[\u200B-\u200D\u0300-\u036f\uFEFF\s]/g},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){e.exports={default:n(390),__esModule:!0}},function(e,t,n){"use strict";e.exports=function(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;r + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */var r=n(1778);function o(e){return!0===r(e)&&"[object Object]"===Object.prototype.toString.call(e)}e.exports=function(e){var t,n;return!1!==o(e)&&("function"==typeof(t=e.constructor)&&(!1!==o(n=t.prototype)&&!1!==n.hasOwnProperty("isPrototypeOf")))}},function(e,t,n){e.exports=!n(58)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,s=function(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),l=1;l0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(211));t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1)for(var n=1;n0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function o(){this.removeListener(e,o),n||(n=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},n.prototype.removeListener=function(e,t){var n,i,a,s;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(s=a;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){i=s;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},n.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},n.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},n.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},n.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,n){var r=n(1812);e.exports=function(e){if(function(e){return e&&e.window===e}(e))return e;var t=r(e);if(o){t.parentWindow.execScript("document._parentWindow = window;","Javascript");var n=t._parentWindow;return t._parentWindow=null,n}return t.defaultView||t.parentWindow};var o=n(1813)},function(e,t,n){var r=n(107);e.exports=function(e){return Object(r(e))}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(163),o=n(112);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(46),o=n(76);e.exports=n(44)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){"use strict";t.a=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!e){var n=console.warn||console.log;n("Warning: "+t)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){"use strict";t.__esModule=!0;var r=a(n(361)),o=a(n(365)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};function a(e){return e&&e.__esModule?e:{default:e}}t.default="function"==typeof o.default&&"symbol"===i(r.default)?function(e){return void 0===e?"undefined":i(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":void 0===e?"undefined":i(e)}},function(e,t,n){e.exports={default:n(1111),__esModule:!0}},function(e,t,n){var r=n(94);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){e.exports={default:n(357),__esModule:!0}},function(e,t,n){var r=n(26),o=n(18),i=n(58);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){"use strict";var r=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:r,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:r&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:r&&!!window.screen,isInWorker:!r};e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.closest=t.distance=t.patch=t.absolute=t.negate=t.isEqual=t.subtract=t.add=void 0;var r=i(n(51)),o=i(n(47));function i(e){return e&&e.__esModule?e:{default:e}}t.add=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},t.subtract=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},t.isEqual=function(e,t){return e.x===t.x&&e.y===t.y},t.negate=function(e){return{x:0!==e.x?-e.x:0,y:0!==e.y?-e.y:0}},t.absolute=function(e){return{x:Math.abs(e.x),y:Math.abs(e.y)}},t.patch=function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return n={},(0,o.default)(n,e,t),(0,o.default)(n,"x"===e?"y":"x",r),n};var a=t.distance=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))};t.closest=function(e,t){return Math.min.apply(Math,(0,r.default)(t.map(function(t){return a(e,t)})))}},function(e,t,n){"use strict";(function(t){var r=i(n(4)),o=i(n(5));function i(e){return e&&e.__esModule?e:{default:e}}var a=function(){function e(){(0,r.default)(this,e),this.platform=null}return(0,o.default)(e,[{key:"get",value:function(){return this.platform}},{key:"set",value:function(e){this.platform=e}}]),e}();t.mxPlatformPeg||(t.mxPlatformPeg=new a),e.exports=t.mxPlatformPeg}).call(this,n(15))},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(49),o=n(150);e.exports=n(48)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(28),o=n(73),i=n(72),a=n(151)("src"),s=Function.toString,l=(""+s).split("toString");n(105).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var u="function"==typeof n;u&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(u&&(i(n,a)||o(n,a,e[t]?""+e[t]:l.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(e,t,n){var r=n(7),o=n(30),i=n(107),a=/"/g,s=function(e,t,n,r){var o=String(i(e)),s="<"+t;return""!==n&&(s+=" "+n+'="'+String(r).replace(a,""")+'"'),s+">"+o+""};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*o(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){e.exports={}},function(e,t,n){var r=n(162),o=n(121);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeEventPermalink=function(e,t){return o+"/#/"+e+"/"+t},t.makeUserPermalink=function(e){return o+"/#/"+e},t.makeRoomPermalink=function(e){return o+"/#/"+e},t.makeGroupPermalink=function(e){return o+"/#/"+e};var r=t.host="matrix.to",o=t.baseUrl="https://"+r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isOnlyCtrlOrCmdKeyEvent=function(e){return navigator.platform.toUpperCase().indexOf("MAC")>=0?e.metaKey&&!e.altKey&&!e.ctrlKey&&!e.shiftKey:e.ctrlKey&&!e.altKey&&!e.metaKey&&!e.shiftKey},t.isOnlyCtrlOrCmdIgnoreShiftKeyEvent=function(e){return navigator.platform.toUpperCase().indexOf("MAC")>=0?e.metaKey&&!e.altKey&&!e.ctrlKey:e.ctrlKey&&!e.altKey&&!e.metaKey};t.KeyCode={BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,ESCAPE:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,KEY_A:65,KEY_B:66,KEY_C:67,KEY_D:68,KEY_E:69,KEY_F:70,KEY_G:71,KEY_H:72,KEY_I:73,KEY_J:74,KEY_K:75,KEY_L:76,KEY_M:77,KEY_N:78,KEY_O:79,KEY_P:80,KEY_Q:81,KEY_R:82,KEY_S:83,KEY_T:84,KEY_U:85,KEY_V:86,KEY_W:87,KEY_X:88,KEY_Y:89,KEY_Z:90}},function(e,t,n){"use strict";var r=g(n(47)),o=g(n(11)),i=g(n(4)),a=g(n(5)),s=g(n(12)),l=g(n(13)),u=g(n(19)),c=g(n(65)),f=n(9),d=function(){var e=(0,f.coroutine)(u.default.mark(function e(t){return u.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(b>=E)){e.next=3;break}return e.next=3,(0,f.resolve)(new c.default(function(e,t){C.push(e)}));case 3:return b++,e.prev=4,e.next=7,(0,f.resolve)(t());case 7:return e.abrupt("return",e.sent);case 10:throw e.prev=10,e.t0=e.catch(4),e.t0;case 13:return e.prev=13,b--,S(),e.finish(13);case 17:case"end":return e.stop()}},e,this,[[4,10,13,17]])}));return function(t){return e.apply(this,arguments)}}(),p=g(n(55)),m=n(243),h=g(n(145)),_=g(n(8));function g(e){return e&&e.__esModule?e:{default:e}}function v(e){return e.chunk.map(function(e){return(0,m.groupMemberFromApiObject)(e)})}function y(e){return e.chunk.map(function(e){return(0,m.groupRoomFromApiObject)(e)})}var b=0,E=3,C=[];function S(){var e=C.shift();"function"==typeof e&&e()}var D=function(e){function t(){var e,n;(0,i.default)(this,t);var a=(0,s.default)(this,(t.__proto__||(0,o.default)(t)).call(this));return a.STATE_KEY={GroupMembers:"GroupMembers",GroupInvitedMembers:"GroupInvitedMembers",Summary:"Summary",GroupRooms:"GroupRooms"},a._state={},a._state[a.STATE_KEY.Summary]={},a._state[a.STATE_KEY.GroupRooms]={},a._state[a.STATE_KEY.GroupMembers]={},a._state[a.STATE_KEY.GroupInvitedMembers]={},a._ready={},a._ready[a.STATE_KEY.Summary]={},a._ready[a.STATE_KEY.GroupRooms]={},a._ready[a.STATE_KEY.GroupMembers]={},a._ready[a.STATE_KEY.GroupInvitedMembers]={},a._fetchResourcePromise=(e={},(0,r.default)(e,a.STATE_KEY.Summary,{}),(0,r.default)(e,a.STATE_KEY.GroupRooms,{}),(0,r.default)(e,a.STATE_KEY.GroupMembers,{}),(0,r.default)(e,a.STATE_KEY.GroupInvitedMembers,{}),e),a._resourceFetcher=(n={},(0,r.default)(n,a.STATE_KEY.Summary,function(e){return d(function(){return _.default.get().getGroupSummary(e)})}),(0,r.default)(n,a.STATE_KEY.GroupRooms,function(e){return d(function(){return _.default.get().getGroupRooms(e).then(y)})}),(0,r.default)(n,a.STATE_KEY.GroupMembers,function(e){return d(function(){return _.default.get().getGroupUsers(e).then(v)})}),(0,r.default)(n,a.STATE_KEY.GroupInvitedMembers,function(e){return d(function(){return _.default.get().getGroupInvitedUsers(e).then(v)})}),n),a.on("error",function(e,t){console.error("GroupStore encountered error whilst fetching data for "+t,e)}),a}return(0,l.default)(t,e),(0,a.default)(t,[{key:"_fetchResource",value:function(e,t){var n=this;if(!this._fetchResourcePromise[e][t]){var r=this._resourceFetcher[e](t);return this._fetchResourcePromise[e][t]=r,r.then(function(r){n._state[e][t]=r,n._ready[e][t]=!0,n._notifyListeners()}).catch(function(r){e===n.STATE_KEY.GroupInvitedMembers&&403===r.httpStatus||(console.error("Failed to get resource "+e+" for "+t,r),n.emit("error",r,t))}).finally(function(){delete n._fetchResourcePromise[e][t]}),r}}},{key:"_notifyListeners",value:function(){this.emit("update")}},{key:"registerListener",value:function(e,t){var n=this;return this.on("update",t),this.emit("update"),e&&(this._fetchResource(this.STATE_KEY.Summary,e),this._fetchResource(this.STATE_KEY.GroupRooms,e),this._fetchResource(this.STATE_KEY.GroupMembers,e),this._fetchResource(this.STATE_KEY.GroupInvitedMembers,e)),{unregister:function(){n.unregisterListener(t)}}}},{key:"unregisterListener",value:function(e){this.removeListener("update",e)}},{key:"isStateReady",value:function(e,t){return this._ready[t][e]}},{key:"getSummary",value:function(e){return this._state[this.STATE_KEY.Summary][e]||{}}},{key:"getGroupRooms",value:function(e){return this._state[this.STATE_KEY.GroupRooms][e]||[]}},{key:"getGroupMembers",value:function(e){return this._state[this.STATE_KEY.GroupMembers][e]||[]}},{key:"getGroupInvitedMembers",value:function(e){return this._state[this.STATE_KEY.GroupInvitedMembers][e]||[]}},{key:"getGroupPublicity",value:function(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_publicised:null}},{key:"isUserPrivileged",value:function(e){return(this._state[this.STATE_KEY.Summary][e]||{}).user?(this._state[this.STATE_KEY.Summary][e]||{}).user.is_privileged:null}},{key:"refreshGroupRooms",value:function(e){return this._fetchResource(this.STATE_KEY.GroupRooms,e)}},{key:"refreshGroupMembers",value:function(e){return this._fetchResource(this.STATE_KEY.GroupMembers,e)}},{key:"addRoomToGroup",value:function(e,t,n){return _.default.get().addRoomToGroup(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"updateGroupRoomVisibility",value:function(e,t,n){return _.default.get().updateGroupRoomVisibility(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"removeRoomFromGroup",value:function(e,t){return _.default.get().removeRoomFromGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e))}},{key:"inviteUserToGroup",value:function(e,t){return _.default.get().inviteUserToGroup(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"acceptGroupInvite",value:function(e){return _.default.get().acceptGroupInvite(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"joinGroup",value:function(e){return _.default.get().joinGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupInvitedMembers,e))}},{key:"leaveGroup",value:function(e){return _.default.get().leaveGroup(e).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupRooms,e)).then(this._fetchResource.bind(this,this.STATE_KEY.GroupMembers,e))}},{key:"addRoomToGroupSummary",value:function(e,t,n){return _.default.get().addRoomToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"addUserToGroupSummary",value:function(e,t,n){return _.default.get().addUserToGroupSummary(e,t,n).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"removeRoomFromGroupSummary",value:function(e,t){return _.default.get().removeRoomFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"removeUserFromGroupSummary",value:function(e,t){return _.default.get().removeUserFromGroupSummary(e,t).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}},{key:"setGroupPublicity",value:function(e,t){return _.default.get().setGroupPublicity(e,t).then(function(){h.default.invalidatePublicisedGroups(_.default.get().credentials.userId)}).then(this._fetchResource.bind(this,this.STATE_KEY.Summary,e))}}]),t}(p.default),w=null;w||(w=new D),e.exports=w},function(e,t,n){"use strict";n.r(t);var r=function(e,t){return e===t};t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r,n=void 0,o=[],i=void 0,a=!1,s=function(e,n){return t(e,o[n])};return function(){for(var t=arguments.length,r=Array(t),l=0;l=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(112);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";e.exports={debugTool:null}},function(e,t,n){"use strict";var r=n(1095),o=n(1096);function i(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=y,t.resolve=function(e,t){return y(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?y(e,!1,!0).resolveObject(t):t},t.format=function(e){o.isString(e)&&(e=y(e));return e instanceof i?e.format():i.prototype.format.call(e)},t.Url=i;var a=/^([a-z0-9.+-]+:)/i,s=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(u),f=["%","/","?",";","#"].concat(c),d=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,m=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,h={javascript:!0,"javascript:":!0},_={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(401);function y(e,t,n){if(e&&o.isObject(e)&&e instanceof i)return e;var r=new i;return r.parse(e,t,n),r}i.prototype.parse=function(e,t,n){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var i=e.indexOf("?"),s=-1!==i&&i127?A+="x":A+=O[M];if(!A.match(p)){var L=N.slice(0,x),F=N.slice(x+1),U=O.match(m);U&&(L.push(U[1]),F.unshift(U[2])),F.length&&(y="/"+F.join(".")+y),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),k||(this.hostname=r.toASCII(this.hostname));var j=this.port?":"+this.port:"",B=this.hostname||"";this.host=B+j,this.href+=this.host,k&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==y[0]&&(y="/"+y))}if(!h[C])for(x=0,I=c.length;x0)&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift());return n.search=e.search,n.query=e.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!S.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var w=S.slice(-1)[0],T=(n.host||e.host||S.length>1)&&("."===w||".."===w)||""===w,x=0,R=S.length;R>=0;R--)"."===(w=S[R])?S.splice(R,1):".."===w?(S.splice(R,1),x++):x&&(S.splice(R,1),x--);if(!E&&!C)for(;x--;x)S.unshift("..");!E||""===S[0]||S[0]&&"/"===S[0].charAt(0)||S.unshift(""),T&&"/"!==S.join("/").substr(-1)&&S.push("");var k,N=""===S[0]||S[0]&&"/"===S[0].charAt(0);D&&(n.hostname=n.host=N?"":S.length?S.shift():"",(k=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=k.shift(),n.host=n.hostname=k.shift()));return(E=E||n.host&&S.length)&&!N&&S.unshift(""),S.length?n.pathname=S.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},i.prototype.parseHost=function(){var e=this.host,t=s.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){"use strict";(function(t){var r=d(n(14)),o=d(n(126)),i=d(n(4)),a=d(n(5)),s=n(2),l=d(n(71)),u=d(n(39)),c=d(n(16)),f=d(n(3));function d(e){return e&&e.__esModule?e:{default:e}}var p=/#\/(groups?|room|user|settings|register|login|forgot_password|home|directory)/,m=/#\/(group|room|user)\/.*$/;function h(){var e=window.location,t=e.origin,n=e.hash,r=window.location.pathname;return t.startsWith("file://")&&(r="//"),t+r+function(e){return p.exec(e)?m.test(e)?e.replace(m,"#/$1/"):e.replace(p,"#/$1"):(console.warn('Unexpected hash location "'+e+'"'),"#/")}(n)}var _={"App Platform":{id:1,expl:(0,s._td)("The platform you're on"),example:"Electron Platform"},"App Version":{id:2,expl:(0,s._td)("The version of Riot.im"),example:"15.0.0"},"User Type":{id:3,expl:(0,s._td)("Whether or not you're logged in (we don't record your user name)"),example:"Logged In"},"Chosen Language":{id:4,expl:(0,s._td)("Your language of choice"),example:"en"},Instance:{id:5,expl:(0,s._td)("Which officially provided instance you are using, if any"),example:"app"},"RTE: Uses Richtext Mode":{id:6,expl:(0,s._td)("Whether or not you're using the Richtext mode of the Rich Text Editor"),example:"off"},"Homeserver URL":{id:7,expl:(0,s._td)("Your homeserver's URL"),example:"https://matrix.org"},"Identity Server URL":{id:8,expl:(0,s._td)("Your identity server's URL"),example:"https://vector.im"}};function g(e,t){return e.includes(t)?t:""}var v=function(){function e(){(0,i.default)(this,e),this._paq=null,this.disabled=!0,this.firstPage=!0}return(0,a.default)(e,[{key:"enable",value:function(){(this._paq||this._init())&&(this.disabled=!1)}},{key:"disable",value:function(){this.trackEvent("Analytics","opt-out"),this._paq.push(["disableHeartBeatTimer"]),this.disabled=!0}},{key:"_init",value:function(){var e=this,t=u.default.get();if(t&&t.piwik&&t.piwik.url&&t.piwik.siteId){var n=t.piwik.url,r=t.piwik.siteId,o=this;window._paq=this._paq=window._paq||[],this._paq.push(["setTrackerUrl",n+"piwik.php"]),this._paq.push(["setSiteId",r]),this._paq.push(["trackAllContentImpressions"]),this._paq.push(["discardHashTag",!1]),this._paq.push(["enableHeartBeatTimer"]);var i=l.default.get();return this._setVisitVariable("App Platform",i.getHumanReadableName()),i.getAppVersion().then(function(t){e._setVisitVariable("App Version",t)}).catch(function(){e._setVisitVariable("App Version","unknown")}),this._setVisitVariable("Chosen Language",(0,s.getCurrentLanguage)()),"riot.im"===window.location.hostname&&this._setVisitVariable("Instance",window.location.pathname),function(){var e=document.createElement("script"),t=document.getElementsByTagName("script")[0];e.type="text/javascript",e.async=!0,e.defer=!0,e.src=n+"piwik.js",e.onload=function(){console.log("Initialised anonymous analytics"),o._paq=window._paq},t.parentNode.insertBefore(e,t)}(),!0}}},{key:"trackPageChange",value:function(e){this.disabled||(this.firstPage?this.firstPage=!1:("number"==typeof e?this._paq.push(["setGenerationTimeMs",e]):console.warn("Analytics.trackPageChange: expected generationTimeMs to be a number"),this._paq.push(["setCustomUrl",h()]),this._paq.push(["trackPageView"])))}},{key:"trackEvent",value:function(e,t,n,r){this.disabled||this._paq.push(["trackEvent",e,t,n,r])}},{key:"logout",value:function(){this.disabled||this._paq.push(["deleteCookies"])}},{key:"_setVisitVariable",value:function(e,t){this.disabled||this._paq.push(["setCustomVariable",_[e].id,e,t,"visit"])}},{key:"setLoggedIn",value:function(e,t,n){if(!this.disabled){var r=u.default.get();if(r.piwik){var o=r.piwik.whitelistedHSUrls||[],i=r.piwik.whitelistedISUrls||[];this._setVisitVariable("User Type",e?"Guest":"Logged In"),this._setVisitVariable("Homeserver URL",g(o,t)),this._setVisitVariable("Identity Server URL",g(i,n))}}}},{key:"setRichtextMode",value:function(e){this.disabled||this._setVisitVariable("RTE: Uses Richtext Mode",e?"on":"off")}},{key:"showDetailsModal",value:function(){var e=[];if(window.Piwik){var t=window.Piwik.getAsyncTracker();e=(0,o.default)(_).map(function(e){return t.getCustomVariable(e.id)}).filter(Boolean)}else e=(0,r.default)(_).map(function(e){return[e,(0,s._t)("e.g. %(exampleValue)s",{exampleValue:_[e].example})]});var n=window.screen.width+"x"+window.screen.height,i=[{expl:(0,s._td)("Every page you use in the app"),value:(0,s._t)("e.g. ",{},{CurrentPageURL:h()})},{expl:(0,s._td)("Your User Agent"),value:navigator.userAgent},{expl:(0,s._td)("Your device resolution"),value:n}],a=f.default.getComponent("dialogs.ErrorDialog");c.default.createTrackedDialog("Analytics Details","",a,{title:(0,s._t)("Analytics"),description:React.createElement("div",{className:"mx_UserSettings_analyticsModal"},React.createElement("div",null,(0,s._t)("The information being sent to us to help make Riot.im better includes:")),React.createElement("table",null,e.map(function(e){return React.createElement("tr",{key:e[0]},React.createElement("td",null,(0,s._t)(_[e[0]].expl)),void 0!==e[1]&&React.createElement("td",null,React.createElement("code",null,e[1])))}),i.map(function(e,t){return React.createElement("tr",{key:t},React.createElement("td",null,(0,s._t)(e.expl)),React.createElement("td",null,React.createElement("code",null,e.value)))})),React.createElement("div",null,(0,s._t)("Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.")))})}}]),e}();t.mxAnalytics||(t.mxAnalytics=new v),e.exports=t.mxAnalytics}).call(this,n(15))},function(e,t,n){var r=n(63);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=n(30);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){"use strict";function r(e){return function(){return e}}var o=function(){};o.thatReturns=r,o.thatReturnsFalse=r(!1),o.thatReturnsTrue=r(!0),o.thatReturnsNull=r(null),o.thatReturnsThis=function(){return this},o.thatReturnsArgument=function(e){return e},e.exports=o},function(e,t,n){"use strict";var r=n(32),o=n(45),i=n(541),a=n(168),s=n(542),l=n(169),u=n(279),c=n(23),f=[],d=0,p=i.getPooled(),m=!1,h=null;function _(){C.ReactReconcileTransaction&&h||r("123")}var g=[{initialize:function(){this.dirtyComponentsLength=f.length},close:function(){this.dirtyComponentsLength!==f.length?(f.splice(0,this.dirtyComponentsLength),E()):f.length=0}},{initialize:function(){this.callbackQueue.reset()},close:function(){this.callbackQueue.notifyAll()}}];function v(){this.reinitializeTransaction(),this.dirtyComponentsLength=null,this.callbackQueue=i.getPooled(),this.reconcileTransaction=C.ReactReconcileTransaction.getPooled(!0)}function y(e,t){return e._mountOrder-t._mountOrder}function b(e){var t=e.dirtyComponentsLength;t!==f.length&&r("124",t,f.length),f.sort(y),d++;for(var n=0;n>18&63,i=l>>12&63,a=l>>6&63,s=63&l,p[f++]=u.charAt(o)+u.charAt(i)+u.charAt(a)+u.charAt(s)}while(c299)&&r.error){for(var o in e=new Error("CouchDB error: "+(r.error.reason||r.error.error)),r)e[o]=r[o];return n(e,t,r)}return n(e,t,r)})},t})?r.apply(t,o):r)||(e.exports=i)},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},function(e,t,n){var r=n(628),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t){var n=Array.isArray;e.exports=n},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";var r=_(n(31)),o=_(n(40)),i=_(n(11)),a=_(n(4)),s=_(n(5)),l=_(n(12)),u=_(n(13)),c=_(n(10)),f=n(246),d=_(n(8)),p=_(n(3)),m=_(n(16)),h=n(2);function _(e){return e&&e.__esModule?e:{default:e}}var g={joining:!1,joinError:null,roomId:null,initialEventId:null,isInitialEventHighlighted:!1,roomAlias:null,roomLoading:!1,roomLoadError:null,forwardingEvent:null,quotingEvent:null,isEditingSettings:!1},v=function(e){function t(){(0,a.default)(this,t);var e=(0,l.default)(this,(t.__proto__||(0,i.default)(t)).call(this,c.default));return e._state=g,e}return(0,u.default)(t,e),(0,s.default)(t,[{key:"_setState",value:function(e){this._state=(0,o.default)(this._state,e),this.__emitChange()}},{key:"__onDispatch",value:function(e){switch(e.action){case"view_room":this._viewRoom(e);break;case"view_my_groups":case"view_group":this._setState({roomId:null,roomAlias:null});break;case"view_room_error":this._viewRoomError(e);break;case"will_join":this._setState({joining:!0});break;case"cancel_join":this._setState({joining:!1});break;case"join_room":this._joinRoom(e);break;case"join_room_error":this._joinRoomError(e);break;case"on_logged_out":this.reset();break;case"forward_event":this._setState({forwardingEvent:e.event});break;case"reply_to_event":this._setState({replyingToEvent:e.event});break;case"open_room_settings":this._setState({isEditingSettings:!0});break;case"close_settings":this._setState({isEditingSettings:!1})}}},{key:"_viewRoom",value:function(e){if(e.room_id){var t={roomId:e.room_id,roomAlias:e.room_alias,initialEventId:e.event_id,isInitialEventHighlighted:e.highlighted,forwardingEvent:null,roomLoading:!1,roomLoadError:null,shouldPeek:void 0===e.should_peek||e.should_peek,joining:e.joining||!1,replyingToEvent:null,isEditingSettings:!1};this._state.forwardingEvent&&c.default.dispatch({action:"send_event",room_id:t.roomId,event:this._state.forwardingEvent}),this._setState(t),e.auto_join&&this._joinRoom(e)}else e.room_alias&&(this._setState({roomId:null,initialEventId:null,initialEventPixelOffset:null,isInitialEventHighlighted:null,roomAlias:e.room_alias,roomLoading:!0,roomLoadError:null}),d.default.get().getRoomIdForAlias(e.room_alias).done(function(t){c.default.dispatch({action:"view_room",room_id:t.room_id,event_id:e.event_id,highlighted:e.highlighted,room_alias:e.room_alias,auto_join:e.auto_join,oob_data:e.oob_data})},function(t){c.default.dispatch({action:"view_room_error",room_id:null,room_alias:e.room_alias,err:t})}))}},{key:"_viewRoomError",value:function(e){this._setState({roomId:e.room_id,roomAlias:e.room_alias,roomLoading:!1,roomLoadError:e.err})}},{key:"_joinRoom",value:function(e){this._setState({joining:!0}),d.default.get().joinRoom(this._state.roomAlias||this._state.roomId,e.opts).done(function(){},function(e){c.default.dispatch({action:"join_room_error",err:e});var t=e.message?e.message:(0,r.default)(e);"M_INCOMPATIBLE_ROOM_VERSION"===e.errcode&&(t=React.createElement("div",null,(0,h._t)("Sorry, your homeserver is too old to participate in this room."),React.createElement("br",null),(0,h._t)("Please contact your homeserver administrator.")));var n=p.default.getComponent("dialogs.ErrorDialog");m.default.createTrackedDialog("Failed to join room","",n,{title:(0,h._t)("Failed to join room"),description:t})})}},{key:"_joinRoomError",value:function(e){this._setState({joining:!1,joinError:e.err})}},{key:"reset",value:function(){this._state=(0,o.default)({},g)}},{key:"getRoomId",value:function(){return this._state.roomId}},{key:"getInitialEventId",value:function(){return this._state.initialEventId}},{key:"isInitialEventHighlighted",value:function(){return this._state.isInitialEventHighlighted}},{key:"getRoomAlias",value:function(){return this._state.roomAlias}},{key:"isRoomLoading",value:function(){return this._state.roomLoading}},{key:"getRoomLoadError",value:function(){return this._state.roomLoadError}},{key:"isJoining",value:function(){return this._state.joining}},{key:"getJoinError",value:function(){return this._state.joinError}},{key:"getForwardingEvent",value:function(){return this._state.forwardingEvent}},{key:"getQuotingEvent",value:function(){return this._state.replyingToEvent}},{key:"isEditingSettings",value:function(){return this._state.isEditingSettings}},{key:"shouldPeek",value:function(){return this._state.shouldPeek}}]),t}(f.Store),y=null;y||(y=new v),e.exports=y},function(e,t){var n=e.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(33);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(7),o=n(105),i=n(30);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t,n){var r=n(91),o=n(208),i=n(57),a=n(50),s=n(345);e.exports=function(e,t){var n=1==e,l=2==e,u=3==e,c=4==e,f=6==e,d=5==e||f,p=t||s;return function(t,s,m){for(var h,_,g=i(t),v=o(g),y=r(s,m,3),b=a(v.length),E=0,C=n?p(t,b):l?p(t,0):void 0;b>E;E++)if((d||E in v)&&(_=y(h=v[E],E,g),e))if(n)C[E]=_;else if(_)switch(e){case 3:return!0;case 5:return h;case 6:return E;case 2:C.push(h)}else if(c)return!1;return f?-1:u||c?c:C}}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){n(363);for(var r=n(34),o=n(60),i=n(77),a=n(38)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;ln;)o[n]=t[n++];return o},ke=function(e,t,n){G(e,t,{get:function(){return this._d[n]}})},Ne=function(e){var t,n,r,o,i,a,s=C(e),l=arguments.length,c=l>1?arguments[1]:void 0,f=void 0!==c,d=x(s);if(void 0!=d&&!S(d)){for(a=d.call(s),r=[],t=0;!(i=a.next()).done;t++)r.push(i.value);s=r}for(f&&l>2&&(c=u(c,arguments[2],2)),t=0,n=h(s.length),o=Te(this,n);n>t;t++)o[t]=f?c(s[t],t):s[t];return o},Ie=function(){for(var e=0,t=arguments.length,n=Te(this,t);t>e;)n[e]=arguments[e++];return n},Oe=!!Y&&i(function(){pe.call(new Y(1))}),Ae=function(){return pe.apply(Oe?fe.call(we(this)):we(this),arguments)},Me={copyWithin:function(e,t){return U.call(we(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return J(we(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return F.apply(we(this),arguments)},filter:function(e){return xe(this,Q(we(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return Z(we(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(we(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){$(we(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return ne(we(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return te(we(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return ue.apply(we(this),arguments)},lastIndexOf:function(e){return ae.apply(we(this),arguments)},map:function(e){return Ee(we(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return se.apply(we(this),arguments)},reduceRight:function(e){return le.apply(we(this),arguments)},reverse:function(){for(var e,t=we(this).length,n=Math.floor(t/2),r=0;r1?arguments[1]:void 0)},sort:function(e){return ce.call(we(this),e)},subarray:function(e,t){var n=we(this),r=n.length,o=g(e,r);return new(O(n,n[ge]))(n.buffer,n.byteOffset+o*n.BYTES_PER_ELEMENT,h((void 0===t?r:g(t,r))-o))}},Pe=function(e,t){return xe(this,fe.call(we(this),e,t))},Le=function(e){we(this);var t=De(arguments[1],1),n=this.length,r=C(e),o=h(r.length),i=0;if(o+t>n)throw V("Wrong length!");for(;i255?255:255&r),o.v[p](n*t+o.o,r,Ce)}(this,n,e)},enumerable:!0})};y?(m=n(function(e,n,r,o){c(e,m,u,"_d");var i,a,s,l,f=0,p=0;if(E(n)){if(!(n instanceof W||"ArrayBuffer"==(l=b(n))||"SharedArrayBuffer"==l))return ye in n?Re(m,n):Ne.call(m,n);i=n,p=De(r,t);var g=n.byteLength;if(void 0===o){if(g%t)throw V("Wrong length!");if((a=g-p)<0)throw V("Wrong length!")}else if((a=h(o)*t)+p>g)throw V("Wrong length!");s=a/t}else s=_(n),i=new W(a=s*t);for(d(e,"_d",{b:i,o:p,l:a,e:s,v:new K(i)});fdocument.F=Object<\/script>"),e.close(),l=e.F;r--;)delete l.prototype[i[r]];return l()};e.exports=Object.create||function(e,t){var n;return null!==e?(s.prototype=r(e),n=new s,s.prototype=null,n[a]=e):n=l(),void 0===t?n:o(n,t)}},function(e,t,n){var r=n(111),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(120)("keys"),o=n(96);e.exports=function(e){return r[e]||(r[e]=o(e))}},function(e,t,n){var r=n(34),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(46).f,o=n(61),i=n(38)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";e.exports={current:null}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";var r=n(45),o=n(168),i=n(97),a=(n(36),["dispatchConfig","_targetInst","nativeEvent","isDefaultPrevented","isPropagationStopped","_dispatchListeners","_dispatchInstances"]),s={type:null,target:null,currentTarget:i.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};function l(e,t,n,r){this.dispatchConfig=e,this._targetInst=t,this.nativeEvent=n;var o=this.constructor.Interface;for(var a in o)if(o.hasOwnProperty(a)){0;var s=o[a];s?this[a]=s(n):"target"===a?this.target=r:this[a]=n[a]}var l=null!=n.defaultPrevented?n.defaultPrevented:!1===n.returnValue;return this.isDefaultPrevented=l?i.thatReturnsTrue:i.thatReturnsFalse,this.isPropagationStopped=i.thatReturnsFalse,this}r(l.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=i.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=i.thatReturnsTrue)},persist:function(){this.isPersistent=i.thatReturnsTrue},isPersistent:i.thatReturnsFalse,destructor:function(){var e=this.constructor.Interface;for(var t in e)this[t]=null;for(var n=0;n0)){e.next=27;break}return console.warn("Refusing to start conference call widget in "+t+" a conference call widget is already present"),b=c.default.getComponent("dialogs.ErrorDialog"),u.default.createTrackedDialog("Already have Jitsi Widget","",b,{title:(0,f._t)("Call in Progress"),description:(0,f._t)("A call is already in progress!")}),e.abrupt("return");case 27:E=Math.random().toString(36).substring(2),C=d.roomId.replace(/[^A-Za-z0-9]/g,"")+E,S=["confId="+encodeURIComponent(C),"isAudioConf="+("voice"===n?"true":"false"),"displayName=$matrix_display_name","avatarUrl=$matrix_avatar_url","email=$matrix_user_id"].join("&"),D=void 0,D=m.default.get().integrations_jitsi_widget_url?m.default.get().integrations_jitsi_widget_url+"?"+S:m.default.get().integrations_rest_url+"/widgets/jitsi.html?"+S,w={widgetSessionId:E},T="jitsi_"+s.default.get().credentials.userId+"_"+Date.now(),_.default.setRoomWidget(t,T,"jitsi",D,"Jitsi",w).then(function(){console.log("Jitsi widget added")}).catch(function(e){if("M_FORBIDDEN"===e.errcode){var t=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Failed","",t,{title:(0,f._t)("Permission Required"),description:(0,f._t)("You do not have permission to start a conference call in this room")})}console.error(e)});case 35:case"end":return e.stop()}},e,this,[[2,8]])}));return function(t,n){return e.apply(this,arguments)}}(),s=y(n(8)),l=y(n(71)),u=y(n(16)),c=y(n(3)),f=n(2),d=y(n(17)),p=y(n(10)),m=y(n(39)),h=n(410),_=y(n(142)),g=y(n(292)),v=y(n(173));function y(e){return e&&e.__esModule?e:{default:e}}t.mxCalls={};var b=t.mxCalls,E=null,C={};function S(e){var t=document.getElementById(e);t&&(C[e]?C[e]=C[e].then(function(){return t.load(),t.play()}):C[e]=t.play())}function D(e){var t=document.getElementById(e);t&&(C[e]?C[e]=C[e].then(function(){return t.pause()}):C[e]=t.pause())}function w(e){e.on("error",function(t){if(console.error("Call error: %s",t),console.error(t.stack),"unknown_devices"===t.code){var n=c.default.getComponent("dialogs.QuestionDialog");u.default.createTrackedDialog("Call Failed","",n,{title:(0,f._t)("Call Failed"),description:(0,f._t)("There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call."),button:(0,f._t)("Review Devices"),onFinished:function(t){if(t){var n=s.default.get().getRoom(e.roomId);(0,h.showUnknownDeviceDialogForCalls)(s.default.get(),n,function(){!function(e){"outbound"===e.direction?p.default.dispatch({action:"place_call",room_id:e.roomId,type:e.type}):e.answer()}(e)},"outbound"===e.direction?(0,f._t)("Call Anyway"):(0,f._t)("Answer Anyway"),"outbound"===e.direction?(0,f._t)("Call"):(0,f._t)("Answer"))}}})}else{var r=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Failed","",r,{title:(0,f._t)("Call Failed"),description:t.message})}}),e.on("hangup",function(){T(void 0,e.roomId,"ended")}),e.on("state",function(t,n){if("ringing"===t)T(e,e.roomId,"ringing"),D("ringbackAudio");else if("invite_sent"===t)T(e,e.roomId,"ringback"),S("ringbackAudio");else if("ended"===t&&"connected"===n)T(void 0,e.roomId,"ended"),D("ringbackAudio"),S("callendAudio");else if("ended"===t&&"invite_sent"===n&&("remote"===e.hangupParty||"local"===e.hangupParty&&"invite_timeout"===e.hangupReason)){T(e,e.roomId,"busy"),D("ringbackAudio"),S("busyAudio");var r=c.default.getComponent("dialogs.ErrorDialog");u.default.createTrackedDialog("Call Handler","Call Timeout",r,{title:(0,f._t)("Call Timeout"),description:(0,f._t)("The remote side failed to pick up")+"."})}else"invite_sent"===n?(T(e,e.roomId,"stop_ringback"),D("ringbackAudio")):"ringing"===n?(T(e,e.roomId,"stop_ringing"),D("ringbackAudio")):"connected"===t&&(T(e,e.roomId,"connected"),D("ringbackAudio"))})}function T(e,t,n){console.log("Call state in %s changed to %s (%s)",t,n,e?e.call_state:"-"),b[t]=e,"ringing"===n?S("ringAudio"):e&&"ringing"===e.call_state&&D("ringAudio"),e&&(e.call_state=n),p.default.dispatch({action:"call_state",room_id:t,state:n})}t.mxCallHandler||p.default.register(function(t){switch(t.action){case"place_call":if(e.exports.getAnyActiveCall()){var n=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Existing Call",n,{title:(0,f._t)("Existing Call"),description:(0,f._t)("You are already in a call.")})}if(!s.default.get().supportsVoip()){var r=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","VoIP is unsupported",r,{title:(0,f._t)("VoIP is unsupported"),description:(0,f._t)("You cannot place VoIP calls in this browser.")})}var o=s.default.get().getRoom(t.room_id);if(!o)return void console.error("Room %s does not exist.",t.room_id);var i=o.getJoinedMembers();if(i.length<=1){var m=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Cannot place call with self",m,{description:(0,f._t)("You cannot place a call with yourself.")})}2===i.length?(console.log("Place %s call in %s",t.type,t.room_id),function(e){if(w(e),"voice"===t.type)e.placeVoiceCall();else if("video"===t.type)e.placeVideoCall(t.remote_element,t.local_element);else if("screensharing"===t.type){var n=l.default.get().screenCaptureErrorString();if(n){T(void 0,e.roomId,"ended"),console.log("Can't capture screen: "+n);var r=c.default.getComponent("dialogs.ErrorDialog");return void u.default.createTrackedDialog("Call Handler","Unable to capture screen",r,{title:(0,f._t)("Unable to capture screen"),description:n})}e.placeScreenSharingCall(t.remote_element,t.local_element)}else console.error("Unknown conf call type: %s",t.type)}(d.default.createNewMatrixCall(s.default.get(),t.room_id))):p.default.dispatch({action:"place_conference_call",room_id:t.room_id,type:t.type,remote_element:t.remote_element,local_element:t.local_element});break;case"place_conference_call":console.log("Place conference call in %s",t.room_id),a(t.room_id,t.type);break;case"incoming_call":if(e.exports.getAnyActiveCall())return;if(!s.default.get().supportsVoip())return;var h=t.call;w(h),T(h,h.roomId,"ringing");break;case"hangup":if(!b[t.room_id])return;b[t.room_id].hangup(),T(null,t.room_id,"ended");break;case"answer":if(!b[t.room_id])return;b[t.room_id].answer(),T(b[t.room_id],t.room_id,"connected"),p.default.dispatch({action:"view_room",room_id:t.room_id})}});var x={getCallForRoom:function(t){var n=e.exports.getCall(t);return n||(E&&(n=E.getConferenceCallForRoom(t)),n||null)},getCall:function(e){return b[e]||null},getAnyActiveCall:function(){for(var e=(0,r.default)(b),t=0;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},function(e,t,n){"use strict";var r=n(79);function o(e){var t=e.scanner.TOKENS,n=e.parser.TOKENS.Base,r=e.parser.start;if(void 0===t.UNDERSCORE)throw new Error("linkify-matrix requires linkifyjs 2.1.1: this version is too old.");var o=function(e){n.call(this,e),this.type="roomalias",this.isLink=!0};o.prototype=new n;var i=r.jump(t.POUND),a=new e.parser.State,s=new e.parser.State,l=new e.parser.State,u=new e.parser.State,c=new e.parser.State(o),f=new e.parser.State,d=new e.parser.State(o),p=[t.DOT,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.UNDERSCORE,t.POUND,t.LOCALHOST];i.on(p,a),a.on(p,a),a.on(t.DOMAIN,a),a.on(t.COLON,s),s.on(t.DOMAIN,l),s.on(t.LOCALHOST,c),s.on(t.TLD,c),l.on(t.DOT,u),u.on(t.DOMAIN,l),u.on(t.TLD,c),c.on(t.DOT,u),c.on(t.COLON,f),f.on(t.NUM,d);var m=function(e){n.call(this,e),this.type="userid",this.isLink=!0};m.prototype=new n;var h=r.jump(t.AT),_=new e.parser.State,g=new e.parser.State,v=new e.parser.State,y=new e.parser.State,b=new e.parser.State(m),E=new e.parser.State,C=new e.parser.State(m),S=[t.DOT,t.UNDERSCORE,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.LOCALHOST];h.on(S,_),_.on(S,_),_.on(t.DOMAIN,_),_.on(t.COLON,g),g.on(t.DOMAIN,v),g.on(t.LOCALHOST,b),g.on(t.TLD,b),v.on(t.DOT,y),y.on(t.DOMAIN,v),y.on(t.TLD,b),b.on(t.DOT,y),b.on(t.COLON,E),E.on(t.NUM,C);var D=function(e){n.call(this,e),this.type="groupid",this.isLink=!0};D.prototype=new n;var w=r.jump(t.PLUS),T=new e.parser.State,x=new e.parser.State,R=new e.parser.State,k=new e.parser.State,N=new e.parser.State(D),I=new e.parser.State,O=new e.parser.State(D),A=[t.DOT,t.UNDERSCORE,t.PLUS,t.NUM,t.DOMAIN,t.TLD,t.LOCALHOST];w.on(A,T),T.on(A,T),T.on(t.DOMAIN,T),T.on(t.COLON,x),x.on(t.DOMAIN,R),x.on(t.LOCALHOST,N),x.on(t.TLD,N),R.on(t.DOT,k),k.on(t.DOMAIN,R),k.on(t.TLD,N),N.on(t.DOT,k),N.on(t.COLON,I),I.on(t.NUM,O)}o.onUserClick=function(e,t){e.preventDefault()},o.onAliasClick=function(e,t){e.preventDefault()},o.onGroupClick=function(e,t){e.preventDefault()};o.VECTOR_URL_PATTERN="^(?:https?://)?(?:"+function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(window.location.host+window.location.pathname)+"|(?:www\\.)?(?:riot|vector)\\.im/(?:app|beta|staging|develop)/)(#.*)",o.MATRIXTO_URL_PATTERN="^(?:https?://)?(?:www\\.)?matrix\\.to/#/(([#@!+]).*)",o.MATRIXTO_MD_LINK_PATTERN="\\[([^\\]]*)\\]\\((?:https?://)?(?:www\\.)?matrix\\.to/#/([#@!+][^\\)]*)\\)",o.MATRIXTO_BASE_URL=r.baseUrl;var i={"@":"#/user/","#":"#/room/","!":"#/room/","+":"#/group/"};o.options={events:function(e,t){switch(t){case"userid":return{click:function(t){o.onUserClick(t,e)}};case"roomalias":return{click:function(t){o.onAliasClick(t,e)}};case"groupid":return{click:function(t){o.onGroupClick(t,e)}}}},formatHref:function(e,t){switch(t){case"roomalias":case"userid":case"groupid":return o.MATRIXTO_BASE_URL+"/#/"+e;default:var n=e.match(o.VECTOR_URL_PATTERN);if(n)return n[1];if(n=e.match(o.MATRIXTO_URL_PATTERN)){var r=n[1];if(i[r[0]])return i[r[0]]+r}return e}},linkAttributes:{rel:"noopener"},target:function(e,t){return"url"===t?e.match(o.VECTOR_URL_PATTERN)||e.match(o.MATRIXTO_URL_PATTERN)?null:"_blank":null}},e.exports=o},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=u(n(14)),o=u(n(20)),i=u(n(4)),a=u(n(5)),s=u(n(8)),l=u(n(428));function u(e){return e&&e.__esModule?e:{default:e}}var c=function(){function e(t){(0,i.default)(this,e),this.matrixClient=t,this.roomToUser=null,this._hasSentOutPatchDirectAccountDataPatch=!1,this._onAccountData=this._onAccountData.bind(this);var n=t.getAccountData("m.direct");this.mDirectEvent=n?n.getContent():{},this.userToRooms=null}return(0,a.default)(e,[{key:"start",value:function(){this._populateRoomToUser(),this.matrixClient.on("accountData",this._onAccountData)}},{key:"stop",value:function(){this.matrixClient.removeListener("accountData",this._onAccountData)}},{key:"_onAccountData",value:function(e){"m.direct"==e.getType()&&(this.mDirectEvent=this.matrixClient.getAccountData("m.direct").getContent()||{},this.userToRooms=null,this.roomToUser=null)}},{key:"_patchUpSelfDMs",value:function(e){var t=this,n=this.matrixClient.getUserId(),r=e[n];if(r){var o=r.map(function(e){var r=t.matrixClient.getRoom(e);if(r){var o=r.guessDMUserId();if(o&&o!==n)return{userId:o,roomId:e}}}).filter(function(e){return!!e});return!!o.length&&(e[n]=r.filter(function(e){return!o.some(function(t){return t.roomId===e})}),o.forEach(function(t){var n=t.userId,r=t.roomId,o=e[n];o?(o.push(r),e[n]=(0,l.default)(o)):e[n]=[r]}),!0)}}},{key:"getDMRoomsForUserId",value:function(e){return this._getUserToRooms()[e]||[]}},{key:"getUserIdForRoomId",value:function(e){if(null==this.roomToUser&&this._populateRoomToUser(),void 0===this.roomToUser[e]){var t=this.matrixClient.getRoom(e);if(t)return t.getDMInviter()}return this.roomToUser[e]}},{key:"_getUserToRooms",value:function(){if(!this.userToRooms){var e=this.mDirectEvent,t=e[this.matrixClient.getUserId()];if(t&&t.length){var n=this._patchUpSelfDMs(e);console.warn("Invalid m.direct account data detected (self-chats that shouldn't be), patching it up."),n&&!this._hasSentOutPatchDirectAccountDataPatch&&(this._hasSentOutPatchDirectAccountDataPatch=!0,this.matrixClient.setAccountData("m.direct",e))}this.userToRooms=e}return this.userToRooms}},{key:"_populateRoomToUser",value:function(){this.roomToUser={};var e=!0,t=!1,n=void 0;try{for(var i,a=(0,o.default)((0,r.default)(this._getUserToRooms()));!(e=(i=a.next()).done);e=!0){var s=i.value,l=!0,u=!1,c=void 0;try{for(var f,d=(0,o.default)(this.userToRooms[s]);!(l=(f=d.next()).done);l=!0){var p=f.value;this.roomToUser[p]=s}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}}}catch(e){t=!0,n=e}finally{try{!e&&a.return&&a.return()}finally{if(t)throw n}}}}],[{key:"makeShared",value:function(){return e._sharedInstance=new e(s.default.get()),e._sharedInstance}},{key:"shared",value:function(){return e._sharedInstance}}]),e}();t.default=c,e.exports=t.default},function(e,t,n){"use strict";(function(r){function o(e){return(o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.log=function(){var e;return"object"===("undefined"==typeof console?"undefined":o(console))&&console.log&&(e=console).log.apply(e,arguments)},t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;var n="color: "+this.color;t.splice(1,0,n,"color: inherit");var r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&"%c"===e&&(o=++r)}),t.splice(o,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){var e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==r&&"env"in r&&(e=Object({NODE_ENV:"production"}).DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=n(1776)(t),e.exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}).call(this,n(54))},,function(e,t,n){var r=n(151)("meta"),o=n(33),i=n(72),a=n(49).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(30)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return u&&f.NEED&&l(e)&&!i(e,r)&&c(e),e}}},function(e,t,n){var r=n(42)("unscopables"),o=Array.prototype;void 0==o[r]&&n(73)(o,r,{}),e.exports=function(e){o[r][e]=!0}},function(e,t){e.exports=!0},function(e,t,n){var r=n(35),o=n(34).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(96)("meta"),o=n(35),i=n(61),a=n(46).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(58)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!i(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return u&&f.NEED&&l(e)&&!i(e,r)&&c(e),e}}},function(e,t,n){e.exports={default:n(1080),__esModule:!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(4)),o=a(n(5)),i=a(n(9));function a(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(){(0,r.default)(this,e)}return(0,o.default)(e,[{key:"getValue",value:function(e,t){return console.error("Invalid operation: getValue was not overridden"),null}},{key:"setValue",value:function(e,t,n){return console.error("Invalid operation: setValue was not overridden"),i.default.reject()}},{key:"canSetValue",value:function(e,t){return!1}},{key:"isSupported",value:function(){return!1}}]),e}();t.default=s,e.exports=t.default},function(e,t,n){"use strict";(function(t){var r=h(n(20)),o=h(n(8)),i=h(n(71)),a=h(n(409)),s=h(n(90)),l=h(n(290)),u=h(n(10)),c=h(n(3)),f=n(2),d=h(n(16)),p=n(22),m=h(p);function h(e){return e&&e.__esModule?e:{default:e}}var _={notifsByRoom:{},pendingEncryptedEventIds:[],notificationMessageForEvent:function(e){return a.default.textForEvent(e)},_displayPopupNotification:function(e,n){var r=i.default.get();if(r&&r.supportsNotifications()&&r.maySendNotifications()&&!t.document.hasFocus()){var o=this.notificationMessageForEvent(e);if(o){var a=void 0;e.sender&&n.name!==e.sender.name?"m.room.member"===e.getType()?a=n.name:e.sender&&(a=e.sender.name+" ("+n.name+")",e.getContent().body&&(o=e.getContent().body)):(a=n.name,e.getContent().body&&(o=e.getContent().body)),this.isBodyEnabled()||(o="");var s=e.sender?l.default.avatarUrlForMember(e.sender,40,40,"crop"):null,u=r.displayNotification(a,o,s,n);u&&(void 0===this.notifsByRoom[e.getRoomId()]&&(this.notifsByRoom[e.getRoomId()]=[]),this.notifsByRoom[e.getRoomId()].push(u))}}},_playAudioNotification:function(e,t){var n=document.getElementById("messageAudio");n&&n.play()},start:function(){this.boundOnEvent=this.onEvent.bind(this),this.boundOnSyncStateChange=this.onSyncStateChange.bind(this),this.boundOnRoomReceipt=this.onRoomReceipt.bind(this),this.boundOnEventDecrypted=this.onEventDecrypted.bind(this),o.default.get().on("event",this.boundOnEvent),o.default.get().on("Room.receipt",this.boundOnRoomReceipt),o.default.get().on("Event.decrypted",this.boundOnEventDecrypted),o.default.get().on("sync",this.boundOnSyncStateChange),this.toolbarHidden=!1,this.isSyncing=!1},stop:function(){o.default.get()&&this.boundOnRoomTimeline&&(o.default.get().removeListener("Event",this.boundOnEvent),o.default.get().removeListener("Room.receipt",this.boundOnRoomReceipt),o.default.get().removeListener("Event.decrypted",this.boundOnEventDecrypted),o.default.get().removeListener("sync",this.boundOnSyncStateChange)),this.isSyncing=!1},supportsDesktopNotifications:function(){var e=i.default.get();return e&&e.supportsNotifications()},setEnabled:function(e,t){var n=i.default.get();n&&(s.default.trackEvent("Notifier","Set Enabled",e),m.default.isLevelSupported(p.SettingLevel.DEVICE)&&m.default.setValue("audioNotificationsEnabled",null,p.SettingLevel.DEVICE,this.isEnabled()),e?n.requestNotificationPermission().done(function(e){if("granted"===e)t&&t(),u.default.dispatch({action:"notifier_enabled",value:!0});else{var n="denied"===e?(0,f._t)("Riot does not have permission to send you notifications - please check your browser settings"):(0,f._t)("Riot was not given permission to send notifications - please try again"),r=c.default.getComponent("dialogs.ErrorDialog");d.default.createTrackedDialog("Unable to enable Notifications",e,r,{title:(0,f._t)("Unable to enable Notifications"),description:n})}}):u.default.dispatch({action:"notifier_enabled",value:!1}),this.setToolbarHidden(!0))},isEnabled:function(){return this.isPossible()&&m.default.getValue("notificationsEnabled")},isPossible:function(){var e=i.default.get();return!!e&&(!!e.supportsNotifications()&&!!e.maySendNotifications())},isBodyEnabled:function(){return this.isEnabled()&&m.default.getValue("notificationBodyEnabled")},isAudioEnabled:function(){return this.isEnabled()&&m.default.getValue("audioNotificationsEnabled")},setToolbarHidden:function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.toolbarHidden=e,s.default.trackEvent("Notifier","Set Toolbar Hidden",e),u.default.dispatch({action:"notifier_enabled",value:this.isEnabled()}),n&&t.localStorage&&t.localStorage.setItem("notifications_hidden",e)},isToolbarHidden:function(){return t.localStorage?"true"===t.localStorage.getItem("notifications_hidden"):this.toolbarHidden},onSyncStateChange:function(e){"SYNCING"===e?this.isSyncing=!0:"STOPPED"!==e&&"ERROR"!==e||(this.isSyncing=!1)},onEvent:function(e){if(this.isSyncing&&(!e.sender||e.sender.userId!==o.default.get().credentials.userId))if(e.isBeingDecrypted()||e.isDecryptionFailure())for(this.pendingEncryptedEventIds.push(e.getId());this.pendingEncryptedEventIds.length>20;)this.pendingEncryptedEventIds.shift();else this._evaluateEvent(e)},onEventDecrypted:function(e){if(!e.isDecryptionFailure()){var t=this.pendingEncryptedEventIds.indexOf(e.getId());-1!==t&&(this.pendingEncryptedEventIds.splice(t,1),this._evaluateEvent(e))}},onRoomReceipt:function(e,t){if(0===t.getUnreadNotificationCount()){var n=i.default.get();if(!n)return;if(void 0===this.notifsByRoom[t.roomId])return;var o=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(this.notifsByRoom[t.roomId]);!(o=(l=u.next()).done);o=!0){var c=l.value;n.clearNotification(c)}}catch(e){a=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(a)throw s}}delete this.notifsByRoom[t.roomId]}},_evaluateEvent:function(e){var t=o.default.get().getRoom(e.getRoomId()),n=o.default.get().getPushActionsForEvent(e);n&&n.notify&&(this.isEnabled()&&this._displayPopupNotification(e,t),n.tweaks.sound&&this.isAudioEnabled()&&(i.default.get().loudNotification(e,t),this._playAudioNotification(e,t)))}};t.mxNotifier||(t.mxNotifier=_),e.exports=t.mxNotifier}).call(this,n(15))},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o,i,a,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,o,i,a,s],c=0;l=new Error("Invariant Violation: "+t.replace(/%s/g,function(){return u[c++]}))}throw l.framesToPop=1,l}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=_(n(14)),o=_(n(149)),i=_(n(576)),a=_(n(126)),s=_(n(65)),l=_(n(4)),u=_(n(5)),c=_(n(8)),f=_(n(39)),d=_(n(10)),p=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(89)),m=_(n(292)),h=_(n(22));function _(e){return e&&e.__esModule?e:{default:e}}var g=function(){function e(){(0,l.default)(this,e)}return(0,u.default)(e,null,[{key:"canUserModifyWidgets",value:function(e){if(!e)return console.warn("No room ID specified"),!1;var t=c.default.get();if(!t)return console.warn("User must be be logged in"),!1;var n=t.getRoom(e);if(!n)return console.warn("Room ID "+e+" is not recognised"),!1;var r=t.credentials.userId;return r?"join"!==n.getMyMembership()?(console.warn("User "+r+" is not in room "+e),!1):n.currentState.maySendStateEvent("im.vector.modular.widgets",r):(console.warn("Failed to get user ID"),!1)}},{key:"isScalarUrl",value:function(e){if(!e)return console.error("Scalar URL check failed. No URL specified"),!1;var t=p.parse(e),n=f.default.get().integrations_widgets_urls;n&&0!==n.length||(n=[f.default.get().integrations_rest_url]);for(var r=0;r1&&void 0!==arguments[1]&&arguments[1],n=new Date,a=o(),s=i();if(e.toDateString()===n.toDateString())return c(e,t);if(n.getTime()-e.getTime()<5184e5)return(0,r._t)("%(weekDayName)s %(time)s",{weekDayName:a[e.getDay()],time:c(e,t)});if(n.getFullYear()===e.getFullYear())return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(time)s",{weekDayName:a[e.getDay()],monthName:s[e.getMonth()],day:e.getDate(),time:c(e,t)});return l(e,t)},t.formatFullDateNoTime=function(e){var t=o(),n=i();return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s",{weekDayName:t[e.getDay()],monthName:n[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear()})},t.formatFullDate=l,t.formatFullTime=u,t.formatTime=c,t.wantsDateSeparator=function(e,t){if(!t||!e)return!1;if(Math.abs(e.getTime()-t.getTime())>f)return!0;return e.getDay()!==t.getDay()};var r=n(2);function o(){return[(0,r._t)("Sun"),(0,r._t)("Mon"),(0,r._t)("Tue"),(0,r._t)("Wed"),(0,r._t)("Thu"),(0,r._t)("Fri"),(0,r._t)("Sat")]}function i(){return[(0,r._t)("Jan"),(0,r._t)("Feb"),(0,r._t)("Mar"),(0,r._t)("Apr"),(0,r._t)("May"),(0,r._t)("Jun"),(0,r._t)("Jul"),(0,r._t)("Aug"),(0,r._t)("Sep"),(0,r._t)("Oct"),(0,r._t)("Nov"),(0,r._t)("Dec")]}function a(e){return(e<10?"0":"")+e}function s(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.getHours()%12,o=a(e.getMinutes()),i=e.getHours()>=12?(0,r._t)("PM"):(0,r._t)("AM");return n=n||12,t?n+":"+o+":"+a(e.getSeconds())+i:n+":"+o+i}function l(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=o(),a=i();return(0,r._t)("%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",{weekDayName:n[e.getDay()],monthName:a[e.getMonth()],day:e.getDate(),fullYear:e.getFullYear(),time:u(e,t)})}function u(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?s(e,!0):a(e.getHours())+":"+a(e.getMinutes())+":"+a(e.getSeconds())}function c(e){return arguments.length>1&&void 0!==arguments[1]&&arguments[1]?s(e):a(e.getHours())+":"+a(e.getMinutes())}var f=864e5},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(r){Object.defineProperty(t,"__esModule",{value:!0});var o=p(n(19)),i=p(n(14)),a=n(9),s=p(a),l=p(n(11)),u=p(n(4)),c=p(n(5)),f=p(n(12)),d=p(n(13));function p(e){return e&&e.__esModule?e:{default:e}}var m=!0,h=function(e){function t(e){(0,u.default)(this,t);var n=(0,f.default)(this,(t.__proto__||(0,l.default)(t)).call(this));return n._matrixClient=e,n._userGroups={},n._groupProfiles={},n._groupProfilesPromise={},n._usersPending={},n._usersInFlight={},n._debounceTimeoutID=null,n}return(0,d.default)(t,e),(0,c.default)(t,[{key:"groupSupport",value:function(){return m}},{key:"invalidatePublicisedGroups",value:function(e){delete this._userGroups[e]}},{key:"getPublicisedGroupsCached",value:function(e,t){var n=this;return this._userGroups[t]?s.default.resolve(this._userGroups[t]):this._usersPending[t]?this._usersPending[t].prom:this._usersInFlight[t]?this._usersInFlight[t].prom:(this._usersPending[t]={},this._usersPending[t].prom=new s.default(function(e,r){n._usersPending[t].resolve=e,n._usersPending[t].reject=r}).then(function(e){return n._userGroups[t]=e,setTimeout(function(){delete n._userGroups[t]},18e5),n._userGroups[t]}).catch(function(e){if("M_UNRECOGNIZED"===e.errcode)return console.warn("Cannot display flair, server does not support groups"),void(m=!1);throw console.error("Could not get groups for user",t,e),e}).finally(function(){delete n._usersInFlight[t]}),this._debounceTimeoutID&&clearTimeout(this._debounceTimeoutID),this._debounceTimeoutID=setTimeout(function(){n._batchedGetPublicGroups(e)},200),this._usersPending[t].prom)}},{key:"_batchedGetPublicGroups",value:function(){var e=(0,a.coroutine)(o.default.mark(function e(t){var n,r,s=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._usersInFlight=this._usersPending,this._usersPending={},n={users:[]},e.prev=3,e.next=6,(0,a.resolve)(t.getPublicisedGroups((0,i.default)(this._usersInFlight)));case 6:n=e.sent,e.next=13;break;case 9:return e.prev=9,e.t0=e.catch(3),(0,i.default)(this._usersInFlight).forEach(function(t){s._usersInFlight[t]&&s._usersInFlight[t].reject(e.t0)}),e.abrupt("return");case 13:r=n.users,(0,i.default)(this._usersInFlight).forEach(function(e){s._usersInFlight[e]&&s._usersInFlight[e].resolve(r[e]||[])});case 15:case"end":return e.stop()}},e,this,[[3,9]])}));return function(t){return e.apply(this,arguments)}}()},{key:"getGroupProfileCached",value:function(){var e=(0,a.coroutine)(o.default.mark(function e(t,n){var r,i=this;return o.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._groupProfiles[n]){e.next=2;break}return e.abrupt("return",this._groupProfiles[n]);case 2:if(!this._groupProfilesPromise[n]){e.next=12;break}return e.prev=3,e.next=6,(0,a.resolve)(this._groupProfilesPromise[n]);case 6:e.next=11;break;case 8:return e.prev=8,e.t0=e.catch(3),e.abrupt("return",null);case 11:return e.abrupt("return",this._groupProfiles[n]);case 12:return console.log("FlairStore: Request group profile of "+n),this._groupProfilesPromise[n]=t.getGroupProfile(n),r=void 0,e.prev=15,e.next=18,(0,a.resolve)(this._groupProfilesPromise[n]);case 18:r=e.sent,e.next=26;break;case 21:return e.prev=21,e.t1=e.catch(15),console.log("FlairStore: Failed to get group profile for "+n,e.t1),delete this._groupProfilesPromise[n],e.abrupt("return",null);case 26:return this._groupProfiles[n]={groupId:n,avatarUrl:r.avatar_url,name:r.name,shortDescription:r.short_description},delete this._groupProfilesPromise[n],console.log("FlairStore: Emit updateGroupProfile for "+n),this.emit("updateGroupProfile"),setTimeout(function(){i.refreshGroupProfile(t,n)},18e5),e.abrupt("return",this._groupProfiles[n]);case 32:case"end":return e.stop()}},e,this,[[3,8],[15,21]])}));return function(t,n){return e.apply(this,arguments)}}()},{key:"refreshGroupProfile",value:function(e,t){return delete this._groupProfiles[t],this.getGroupProfileCached(e,t)}}]),t}(p(n(55)).default);void 0===r.singletonFlairStore&&(r.singletonFlairStore=new h),t.default=r.singletonFlairStore,e.exports=t.default}).call(this,n(15))},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(20)),o=s(n(14));t.getDisplayAliasForRoom=function(e){return e.getCanonicalAlias()||e.getAliases()[0]},t.getOnlyOtherMember=l,t.isConfCallRoom=function(e,t,n){if(void 0!==u[e.roomId])return u[e.roomId];var r=function(e,t,n){if(!n)return!1;if("join"!=e.getMyMembership())return!1;var r=l(e,t);if(!r)return!1;if(n.isConferenceUser(r.userId))return!0;return!1}(e,t,n);return u[e.roomId]=r,r},t.looksLikeDirectMessageRoom=function(e,t){var n=e.getMyMembership(),r=e.getMember(t);if("join"==n||"ban"===n||r&&r.isKicked()){var i=(0,o.default)(e.tags),a=e.currentState.getJoinedMemberCount()+e.currentState.getInvitedMemberCount();if(2===a&&!i.length)return!0}return!1},t.guessAndSetDMRoom=function(e,t){var n=void 0;if(t){var o=function(e,t){var n=void 0,o=void 0,i=!0,a=!1,s=void 0;try{for(var l,u=(0,r.default)(e.getJoinedMembers());!(i=(l=u.next()).done);i=!0){var c=l.value;c.userId!=t&&((void 0===n||c.events.member&&c.events.member.getTs()-1&&m.splice(h,1)}}}catch(e){u=!0,c=e}finally{try{!l&&d.return&&d.return()}finally{if(u)throw c}}if(t){var _=s[t]||[];-1==_.indexOf(e)&&_.push(e),s[t]=_}return i.default.get().setAccountData("m.direct",s)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(198));t.default=function(){var e=window.pageYOffset,t=window.pageXOffset,n=t+window.innerWidth,o=e+window.innerHeight;return(0,r.default)({top:e,left:t,right:n,bottom:o})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return"private-react-beautiful-dnd-key-do-not-use-"+e};t.storeKey=r("store"),t.droppableIdKey=r("droppable-id"),t.dimensionMarshalKey=r("dimension-marshal"),t.styleContextKey=r("style-context"),t.canLiftContextKey=r("can-lift")},function(e,t,n){"use strict";t.__esModule=!0;var r=i(n(393)),o=i(n(20));function i(e){return e&&e.__esModule?e:{default:e}}t.default=function(){return function(e,t){if(Array.isArray(e))return e;if((0,r.default)(Object(e)))return function(e,t){var n=[],r=!0,i=!1,a=void 0;try{for(var s,l=(0,o.default)(e);!(r=(s=l.next()).done)&&(n.push(s.value),!t||n.length!==t);r=!0);}catch(e){i=!0,a=e}finally{try{!r&&l.return&&l.return()}finally{if(i)throw a}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports=!1},function(e,t,n){var r=n(496),o=n(329);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){var r=n(108),o=Math.max,i=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):i(e,t)}},function(e,t,n){var r=n(25),o=n(497),i=n(329),a=n(328)("IE_PROTO"),s=function(){},l=function(){var e,t=n(326)("iframe"),r=i.length;for(t.style.display="none",n(330).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("\n//\n// This waits to receive a message event sent using the window.postMessage API.\n// When it receives the event it evals a javascript function in data.code and\n// runs the function passing the event as an argument. This version adds\n// support for a query parameter controlling the origin from which messages\n// will be processed as an extra layer of security (note that the default URL\n// is still 'v1' since it is backwards compatible).\n//\n// In particular it means that the rendering function can be written as a\n// ordinary javascript function which then is turned into a string using\n// toString().\n//\nvar DEFAULT_CROSS_ORIGIN_RENDERER = \"https://usercontent.riot.im/v1.html\";\n\n/**\n * Render the attachment inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteRender(event) {\n var data = event.data;\n\n var img = document.createElement(\"img\");\n img.id = \"img\";\n img.src = data.imgSrc;\n\n var a = document.createElement(\"a\");\n a.id = \"a\";\n a.rel = data.rel;\n a.target = data.target;\n a.download = data.download;\n a.style = data.style;\n a.href = window.URL.createObjectURL(data.blob);\n a.appendChild(img);\n a.appendChild(document.createTextNode(data.textContent));\n\n var body = document.body;\n // Don't display scrollbars if the link takes more than one line\n // to display.\n body.style = \"margin: 0px; overflow: hidden\";\n body.appendChild(a);\n}\n\n/**\n * Update the tint inside the iframe.\n * We can't use imported libraries here so this has to be vanilla JS.\n */\nfunction remoteSetTint(event) {\n var data = event.data;\n\n var img = document.getElementById(\"img\");\n img.src = data.imgSrc;\n img.style = data.imgStyle;\n\n var a = document.getElementById(\"a\");\n a.style = data.style;\n}\n\n/**\n * Get the current CSS style for a DOMElement.\n * @param {HTMLElement} element The element to get the current style of.\n * @return {string} The CSS style encoded as a string.\n */\nfunction computedStyle(element) {\n if (!element) {\n return \"\";\n }\n var style = window.getComputedStyle(element, null);\n var cssText = style.cssText;\n if (cssText == \"\") {\n // Firefox doesn't implement \".cssText\" for computed styles.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n for (var i = 0; i < style.length; i++) {\n cssText += style[i] + \":\";\n cssText += style.getPropertyValue(style[i]) + \";\";\n }\n }\n return cssText;\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MFileBody',\n\n getInitialState: function getInitialState() {\n return {\n decryptedBlob: this.props.decryptedBlob ? this.props.decryptedBlob : null\n };\n },\n\n contextTypes: {\n appConfig: _propTypes2.default.object\n },\n\n /**\n * Extracts a human readable label for the file attachment to use as\n * link text.\n *\n * @params {Object} content The \"content\" key of the matrix event.\n * @return {string} the human readable link text for the attachment.\n */\n presentableTextForFile: function presentableTextForFile(content) {\n var linkText = (0, _languageHandler._t)(\"Attachment\");\n if (content.body && content.body.length > 0) {\n // The content body should be the name of the file including a\n // file extension.\n linkText = content.body;\n }\n\n if (content.info && content.info.size) {\n // If we know the size of the file then add it as human readable\n // string to the end of the link text so that the user knows how\n // big a file they are downloading.\n // The content.info also contains a MIME-type but we don't display\n // it since it is \"ugly\", users generally aren't aware what it\n // means and the type of the attachment can usually be inferrered\n // from the file extension.\n linkText += ' (' + (0, _filesize2.default)(content.info.size) + ')';\n }\n return linkText;\n },\n\n _getContentUrl: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n },\n\n componentDidMount: function componentDidMount() {\n // Add this to the list of mounted components to receive notifications\n // when the tint changes.\n this.id = nextMountId++;\n mounts[this.id] = this;\n this.tint();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // Remove this from the list of mounted components\n delete mounts[this.id];\n },\n\n tint: function tint() {\n // Update our tinted copy of \"img/download.svg\"\n if (this.refs.downloadImage) {\n this.refs.downloadImage.src = tintedDownloadImageURL;\n }\n if (this.refs.iframe) {\n // If the attachment is encrypted then the download image\n // will be inside the iframe so we wont be able to update\n // it directly.\n this.refs.iframe.contentWindow.postMessage({\n code: remoteSetTint.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(this.refs.dummyLink)\n }, \"*\");\n }\n },\n\n render: function render() {\n var _this = this;\n\n var content = this.props.mxEvent.getContent();\n var text = this.presentableTextForFile(content);\n var isEncrypted = content.file !== undefined;\n var fileName = content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)(\"Attachment\");\n var contentUrl = this._getContentUrl();\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n if (isEncrypted) {\n if (this.state.decryptedBlob === null) {\n // Need to decrypt the attachment\n // Wait for the user to click on the link before downloading\n // and decrypting the attachment.\n var decrypting = false;\n var decrypt = function decrypt() {\n if (decrypting) {\n return false;\n }\n decrypting = true;\n (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n _this.setState({\n decryptedBlob: blob\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n _Modal2.default.createTrackedDialog('Error decrypting attachment', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Error decrypting attachment\")\n });\n }).finally(function () {\n decrypting = false;\n return;\n });\n };\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody', ref: 'body' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { href: 'javascript:void(0)', onClick: decrypt },\n (0, _languageHandler._t)(\"Decrypt %(text)s\", { text: text })\n )\n )\n );\n }\n\n // When the iframe loads we tell it to render a download link\n var onIframeLoad = function onIframeLoad(ev) {\n ev.target.contentWindow.postMessage({\n code: remoteRender.toString(),\n imgSrc: tintedDownloadImageURL,\n style: computedStyle(_this.refs.dummyLink),\n blob: _this.state.decryptedBlob,\n // Set a download attribute for encrypted files so that the file\n // will have the correct name when the user tries to download it.\n // We can't provide a Content-Disposition header like we would for HTTP.\n download: fileName,\n rel: \"noopener\",\n target: \"_blank\",\n textContent: (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n }, \"*\");\n };\n\n // If the attachment is encryped then put the link inside an iframe.\n var renderer_url = DEFAULT_CROSS_ORIGIN_RENDERER;\n if (this.context.appConfig && this.context.appConfig.cross_origin_renderer_url) {\n renderer_url = this.context.appConfig.cross_origin_renderer_url;\n }\n renderer_url += \"?origin=\" + encodeURIComponent(window.location.origin);\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'div',\n { style: { display: \"none\" } },\n _react2.default.createElement('a', { ref: 'dummyLink' })\n ),\n _react2.default.createElement('iframe', { src: renderer_url, onLoad: onIframeLoad, ref: 'iframe' })\n )\n );\n } else if (contentUrl) {\n // If the attachment is not encrypted then we check whether we\n // are being displayed in the room timeline or in a list of\n // files in the right hand side of the screen.\n if (this.props.tileShape === \"file_grid\") {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { className: 'mx_MFileBody_downloadLink', href: contentUrl, download: fileName, target: '_blank' },\n fileName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_size' },\n content.info && content.info.size ? (0, _filesize2.default)(content.info.size) : \"\"\n )\n )\n );\n } else {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MFileBody_download' },\n _react2.default.createElement(\n 'a',\n { href: contentUrl, download: fileName, target: '_blank', rel: 'noopener' },\n _react2.default.createElement('img', { src: tintedDownloadImageURL, width: '12', height: '14', ref: 'downloadImage' }),\n (0, _languageHandler._t)(\"Download %(text)s\", { text: text })\n )\n )\n );\n }\n } else {\n var extra = text ? ': ' + text : '';\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MFileBody' },\n (0, _languageHandler._t)(\"Invalid file%(extra)s\", { extra: extra })\n );\n }\n }\n});\n//# sourceMappingURL=MFileBody.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.decryptFile = decryptFile;\n\nvar _browserEncryptAttachment = require('browser-encrypt-attachment');\n\nvar _browserEncryptAttachment2 = _interopRequireDefault(_browserEncryptAttachment);\n\nrequire('isomorphic-fetch');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// WARNING: We have to be very careful about what mime-types we allow into blobs,\n// as for performance reasons these are now rendered via URL.createObjectURL()\n// rather than by converting into data: URIs.\n//\n// This means that the content is rendered using the origin of the script which\n// called createObjectURL(), and so if the content contains any scripting then it\n// will pose a XSS vulnerability when the browser renders it. This is particularly\n// bad if the user right-clicks the URI and pastes it into a new window or tab,\n// as the blob will then execute with access to Riot's full JS environment(!)\n//\n// See https://github.com/matrix-org/matrix-react-sdk/pull/1820#issuecomment-385210647\n// for details.\n//\n// We mitigate this by only allowing mime-types into blobs which we know don't\n// contain any scripting, and instantiate all others as application/octet-stream\n// regardless of what mime-type the event claimed. Even if the payload itself\n// is some malicious HTML, the fact we instantiate it with a media mimetype or\n// application/octet-stream means the browser doesn't try to render it as such.\n//\n// One interesting edge case is image/svg+xml, which empirically *is* rendered\n// correctly if the blob is set to the src attribute of an img tag (for thumbnails)\n// *even if the mimetype is application/octet-stream*. However, empirically JS\n// in the SVG isn't executed in this scenario, so we seem to be okay.\n//\n// Tested on Chrome 65 and Firefox 60\n//\n// The list below is taken mainly from\n// https://developer.mozilla.org/en-US/docs/Web/HTML/Supported_media_formats\n// N.B. Matrix doesn't currently specify which mimetypes are valid in given\n// events, so we pick the ones which HTML5 browsers should be able to display\n//\n// For the record, mime-types which must NEVER enter this list below include:\n// text/html, text/xhtml, image/svg, image/svg+xml, image/pdf, and similar.\n\n// Grab the client so that we can turn mxc:// URLs into https:// URLS.\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Pull in the encryption lib so that we can decrypt attachments.\nvar ALLOWED_BLOB_MIMETYPES = {\n 'image/jpeg': true,\n 'image/gif': true,\n 'image/png': true,\n\n 'video/mp4': true,\n 'video/webm': true,\n 'video/ogg': true,\n\n 'audio/mp4': true,\n 'audio/webm': true,\n 'audio/aac': true,\n 'audio/mpeg': true,\n 'audio/ogg': true,\n 'audio/wave': true,\n 'audio/wav': true,\n 'audio/x-wav': true,\n 'audio/x-pn-wav': true,\n 'audio/flac': true,\n 'audio/x-flac': true\n\n /**\n * Decrypt a file attached to a matrix event.\n * @param file {Object} The json taken from the matrix event.\n * This passed to [link]{@link https://github.com/matrix-org/browser-encrypt-attachments}\n * as the encryption info object, so will also have the those keys in addition to\n * the keys below.\n * @param file.url {string} An mxc:// URL for the encrypted file.\n * @param file.mimetype {string} The MIME-type of the plaintext file.\n */\n};\n// Pull in a fetch polyfill so we can download encrypted attachments.\nfunction decryptFile(file) {\n var url = _MatrixClientPeg2.default.get().mxcUrlToHttp(file.url);\n // Download the encrypted file as an array buffer.\n return _bluebird2.default.resolve(fetch(url)).then(function (response) {\n return response.arrayBuffer();\n }).then(function (responseData) {\n // Decrypt the array buffer using the information taken from\n // the event content.\n return _browserEncryptAttachment2.default.decryptAttachment(responseData, file);\n }).then(function (dataArray) {\n // Turn the array into a Blob and give it the correct MIME-type.\n\n // IMPORTANT: we must not allow scriptable mime-types into Blobs otherwise\n // they introduce XSS attacks if the Blob URI is viewed directly in the\n // browser (e.g. by copying the URI into a new tab or window.)\n // See warning at top of file.\n var mimetype = file.mimetype ? file.mimetype.split(\";\")[0].trim() : '';\n if (!ALLOWED_BLOB_MIMETYPES[mimetype]) {\n mimetype = 'application/octet-stream';\n }\n\n var blob = new Blob([dataArray], { type: mimetype });\n return blob;\n });\n}\n//# sourceMappingURL=DecryptFile.js.map","module.exports = require('./lib/linkify-element').default;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","import { Block, Mark, Node, Value } from 'slate';\nimport { Set } from 'immutable';\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n/**\n * Deserialize a plain text `string` to a Slate value.\n *\n * @param {String} string\n * @param {Object} options\n * @property {Boolean} toJSON\n * @property {String|Object|Block} defaultBlock\n * @property {Array|Set} defaultMarks\n * @return {Value}\n */\n\nfunction deserialize(string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'line' : _options$defaultBlock,\n _options$defaultMarks = options.defaultMarks,\n defaultMarks = _options$defaultMarks === undefined ? [] : _options$defaultMarks,\n _options$delimiter = options.delimiter,\n delimiter = _options$delimiter === undefined ? '\\n' : _options$delimiter,\n _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n\n\n if (Set.isSet(defaultMarks)) {\n defaultMarks = defaultMarks.toArray();\n }\n\n defaultBlock = Node.createProperties(defaultBlock);\n defaultMarks = defaultMarks.map(Mark.createProperties);\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: string.split(delimiter).map(function (line) {\n return _extends({}, defaultBlock, {\n object: 'block',\n data: {},\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: line,\n marks: defaultMarks\n }]\n }]\n });\n })\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n}\n\n/**\n * Serialize a Slate `value` to a plain text string.\n *\n * @param {Value} value\n * @return {String}\n */\n\nfunction serialize(value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return serializeNode(value.document, options);\n}\n\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n\nfunction serializeNode(node) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$delimiter2 = options.delimiter,\n delimiter = _options$delimiter2 === undefined ? '\\n' : _options$delimiter2;\n\n\n if (node.object == 'document' || node.object == 'block' && Block.isBlockList(node.nodes)) {\n return node.nodes.map(serializeNode).join(delimiter);\n } else {\n return node.text;\n }\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar index = {\n deserialize: deserialize,\n serialize: serialize\n};\n\nexport default index;\n//# sourceMappingURL=slate-plain-serializer.es.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?');\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key') {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","var toString = Object.prototype.toString\r\n\r\nmodule.exports = function(val){\r\n switch (toString.call(val)) {\r\n case '[object Function]': return 'function'\r\n case '[object Date]': return 'date'\r\n case '[object RegExp]': return 'regexp'\r\n case '[object Arguments]': return 'arguments'\r\n case '[object Array]': return 'array'\r\n case '[object String]': return 'string'\r\n }\r\n\r\n if (typeof val == 'object' && val && typeof val.length == 'number') {\r\n try {\r\n if (typeof val.callee == 'function') return 'arguments';\r\n } catch (ex) {\r\n if (ex instanceof TypeError) {\r\n return 'arguments';\r\n }\r\n }\r\n }\r\n\r\n if (val === null) return 'null'\r\n if (val === undefined) return 'undefined'\r\n if (val && val.nodeType === 1) return 'element'\r\n if (val === Object(val)) return 'object'\r\n\r\n return typeof val\r\n}\r\n","\"use strict\";\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// This module contains all the code needed to log the console, persist it to\n// disk and submit bug reports. Rationale is as follows:\n// - Monkey-patching the console is preferable to having a log library because\n// we can catch logs by other libraries more easily, without having to all\n// depend on the same log framework / pass the logger around.\n// - We use IndexedDB to persists logs because it has generous disk space\n// limits compared to local storage. IndexedDB does not work in incognito\n// mode, in which case this module will not be able to write logs to disk.\n// However, the logs will still be stored in-memory, so can still be\n// submitted in a bug report should the user wish to: we can also store more\n// logs in-memory than in local storage, which does work in incognito mode.\n// We also need to handle the case where there are 2+ tabs. Each JS runtime\n// generates a random string which serves as the \"ID\" for that tab/session.\n// These IDs are stored along with the log lines.\n// - Bug reports are sent as a POST over HTTPS: it purposefully does not use\n// Matrix as bug reports may be made when Matrix is not responsive (which may\n// be the cause of the bug). We send the most recent N MB of UTF-8 log data,\n// starting with the most recent, which we know because the \"ID\"s are\n// actually timestamps. We then purge the remaining logs. We also do this\n// purge on startup to prevent logs from accumulating.\n\n// the frequency with which we flush to indexeddb\nvar FLUSH_RATE_MS = 30 * 1000;\n\n// the length of log data we keep in indexeddb (and include in the reports)\n/*\nCopyright 2017 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_LOG_SIZE = 1024 * 1024 * 1; // 1 MB\n\n// A class which monkey-patches the global console and stores log lines.\n\nvar ConsoleLogger = function () {\n function ConsoleLogger() {\n (0, _classCallCheck3.default)(this, ConsoleLogger);\n\n this.logs = \"\";\n }\n\n (0, _createClass3.default)(ConsoleLogger, [{\n key: \"monkeyPatch\",\n value: function monkeyPatch(consoleObj) {\n var _this = this;\n\n // Monkey-patch console logging\n var consoleFunctionsToLevels = {\n log: \"I\",\n info: \"I\",\n warn: \"W\",\n error: \"E\"\n };\n (0, _keys2.default)(consoleFunctionsToLevels).forEach(function (fnName) {\n var level = consoleFunctionsToLevels[fnName];\n var originalFn = consoleObj[fnName].bind(consoleObj);\n consoleObj[fnName] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.log.apply(_this, [level].concat(args));\n originalFn.apply(undefined, args);\n };\n });\n }\n }, {\n key: \"log\",\n value: function log(level) {\n // We don't know what locale the user may be running so use ISO strings\n var ts = new Date().toISOString();\n // Some browsers support string formatting which we're not doing here\n // so the lines are a little more ugly but easy to implement / quick to\n // run.\n // Example line:\n // 2017-01-18T11:23:53.214Z W Failed to set badge count\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var line = ts + \" \" + level + \" \" + args.join(' ') + \"\\n\";\n // Using + really is the quickest way in JS\n // http://jsperf.com/concat-vs-plus-vs-join\n this.logs += line;\n }\n\n /**\n * Retrieve log lines to flush to disk.\n * @param {boolean} keepLogs True to not delete logs after flushing.\n * @return {string} \\n delimited log lines to flush.\n */\n\n }, {\n key: \"flush\",\n value: function flush(keepLogs) {\n // The ConsoleLogger doesn't care how these end up on disk, it just\n // flushes them to the caller.\n if (keepLogs) {\n return this.logs;\n }\n var logsToFlush = this.logs;\n this.logs = \"\";\n return logsToFlush;\n }\n }]);\n return ConsoleLogger;\n}();\n\n// A class which stores log lines in an IndexedDB instance.\n\n\nvar IndexedDBLogStore = function () {\n function IndexedDBLogStore(indexedDB, logger) {\n (0, _classCallCheck3.default)(this, IndexedDBLogStore);\n\n this.indexedDB = indexedDB;\n this.logger = logger;\n this.id = \"instance-\" + Math.random() + Date.now();\n this.index = 0;\n this.db = null;\n this.flushPromise = null;\n // set if flush() is called whilst one is ongoing\n this.flushAgainPromise = null;\n }\n\n /**\n * @return {Promise} Resolves when the store is ready.\n */\n\n\n (0, _createClass3.default)(IndexedDBLogStore, [{\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var req = this.indexedDB.open(\"logs\");\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n _this2.db = event.target.result;\n // Periodically flush logs to local storage / indexeddb\n setInterval(_this2.flush.bind(_this2), FLUSH_RATE_MS);\n resolve();\n };\n\n req.onerror = function (event) {\n var err = \"Failed to open log database: \" + event.target.error.name;\n console.error(err);\n reject(new Error(err));\n };\n\n // First time: Setup the object store\n req.onupgradeneeded = function (event) {\n var db = event.target.result;\n var logObjStore = db.createObjectStore(\"logs\", {\n keyPath: [\"id\", \"index\"]\n });\n // Keys in the database look like: [ \"instance-148938490\", 0 ]\n // Later on we need to query everything based on an instance id.\n // In order to do this, we need to set up indexes \"id\".\n logObjStore.createIndex(\"id\", \"id\", { unique: false });\n\n logObjStore.add(_this2._generateLogEntry(new Date() + \" ::: Log database was created.\"));\n\n var lastModifiedStore = db.createObjectStore(\"logslastmod\", {\n keyPath: \"id\"\n });\n lastModifiedStore.add(_this2._generateLastModifiedTime());\n };\n });\n }\n\n /**\n * Flush logs to disk.\n *\n * There are guards to protect against race conditions in order to ensure\n * that all previous flushes have completed before the most recent flush.\n * Consider without guards:\n * - A calls flush() periodically.\n * - B calls flush() and wants to send logs immediately afterwards.\n * - If B doesn't wait for A's flush to complete, B will be missing the\n * contents of A's flush.\n * To protect against this, we set 'flushPromise' when a flush is ongoing.\n * Subsequent calls to flush() during this period will chain another flush,\n * then keep returning that same chained flush.\n *\n * This guarantees that we will always eventually do a flush when flush() is\n * called.\n *\n * @return {Promise} Resolved when the logs have been flushed.\n */\n\n }, {\n key: \"flush\",\n value: function flush() {\n var _this3 = this;\n\n // check if a flush() operation is ongoing\n if (this.flushPromise && this.flushPromise.isPending()) {\n if (this.flushAgainPromise && this.flushAgainPromise.isPending()) {\n // this is the 3rd+ time we've called flush() : return the same\n // promise.\n return this.flushAgainPromise;\n }\n // queue up a flush to occur immediately after the pending one\n // completes.\n this.flushAgainPromise = this.flushPromise.then(function () {\n return _this3.flush();\n });\n return this.flushAgainPromise;\n }\n // there is no flush promise or there was but it has finished, so do\n // a brand new one, destroying the chain which may have been built up.\n this.flushPromise = new _bluebird2.default(function (resolve, reject) {\n if (!_this3.db) {\n // not connected yet or user rejected access for us to r/w to\n // the db.\n reject(new Error(\"No connected database\"));\n return;\n }\n var lines = _this3.logger.flush();\n if (lines.length === 0) {\n resolve();\n return;\n }\n var txn = _this3.db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var objStore = txn.objectStore(\"logs\");\n txn.oncomplete = function (event) {\n resolve();\n };\n txn.onerror = function (event) {\n console.error(\"Failed to flush logs : \", event);\n reject(new Error(\"Failed to write logs: \" + event.target.errorCode));\n };\n objStore.add(_this3._generateLogEntry(lines));\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.put(_this3._generateLastModifiedTime());\n });\n return this.flushPromise;\n }\n\n /**\n * Consume the most recent logs and return them. Older logs which are not\n * returned are deleted at the same time, so this can be called at startup\n * to do house-keeping to keep the logs from growing too large.\n *\n * @return {Promise} Resolves to an array of objects. The array is\n * sorted in time (oldest first) based on when the log file was created (the\n * log ID). The objects have said log ID in an \"id\" field and \"lines\" which\n * is a big string with all the new-line delimited logs.\n */\n\n }, {\n key: \"consume\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var db, fetchLogs, fetchLogIds, deleteLogs, allLogIds, removeLogIds, logs, size, i, lines;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n deleteLogs = function deleteLogs(id) {\n return new _bluebird2.default(function (resolve, reject) {\n var txn = db.transaction([\"logs\", \"logslastmod\"], \"readwrite\");\n var o = txn.objectStore(\"logs\");\n // only load the key path, not the data which may be huge\n var query = o.index(\"id\").openKeyCursor(IDBKeyRange.only(id));\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n return;\n }\n o.delete(cursor.primaryKey);\n cursor.continue();\n };\n txn.oncomplete = function () {\n resolve();\n };\n txn.onerror = function (event) {\n reject(new Error(\"Failed to delete logs for \" + (\"'\" + id + \"' : \" + event.target.errorCode)));\n };\n // delete last modified entries\n var lastModStore = txn.objectStore(\"logslastmod\");\n lastModStore.delete(id);\n });\n };\n\n fetchLogIds = function fetchLogIds() {\n // To gather all the log IDs, query for all records in logslastmod.\n var o = db.transaction(\"logslastmod\", \"readonly\").objectStore(\"logslastmod\");\n return selectQuery(o, undefined, function (cursor) {\n return {\n id: cursor.value.id,\n ts: cursor.value.ts\n };\n }).then(function (res) {\n // Sort IDs by timestamp (newest first)\n return res.sort(function (a, b) {\n return b.ts - a.ts;\n }).map(function (a) {\n return a.id;\n });\n });\n };\n\n fetchLogs = function fetchLogs(id) {\n var objectStore = db.transaction(\"logs\", \"readonly\").objectStore(\"logs\");\n\n return new _bluebird2.default(function (resolve, reject) {\n var query = objectStore.index(\"id\").openCursor(IDBKeyRange.only(id), 'next');\n var lines = '';\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(lines);\n return; // end of results\n }\n lines += cursor.value.lines;\n if (lines.length >= MAX_LOG_SIZE) {\n resolve(lines);\n } else {\n cursor.continue();\n }\n };\n });\n };\n\n db = this.db;\n\n // Returns: a string representing the concatenated logs for this ID.\n\n\n // Returns: A sorted array of log IDs. (newest first)\n\n _context.next = 6;\n return (0, _bluebird.resolve)(fetchLogIds());\n\n case 6:\n allLogIds = _context.sent;\n removeLogIds = [];\n logs = [];\n size = 0;\n i = 0;\n\n case 11:\n if (!(i < allLogIds.length)) {\n _context.next = 23;\n break;\n }\n\n _context.next = 14;\n return (0, _bluebird.resolve)(fetchLogs(allLogIds[i]));\n\n case 14:\n lines = _context.sent;\n\n if (!(i > 0 && size + lines.length > MAX_LOG_SIZE)) {\n _context.next = 18;\n break;\n }\n\n // the remaining log IDs should be removed. If we go out of\n // bounds this is just []\n removeLogIds = allLogIds.slice(i + 1);\n return _context.abrupt(\"break\", 23);\n\n case 18:\n\n logs.push({\n lines: lines,\n id: allLogIds[i]\n });\n size += lines.length;\n\n case 20:\n i++;\n _context.next = 11;\n break;\n\n case 23:\n if (removeLogIds.length > 0) {\n console.log(\"Removing logs: \", removeLogIds);\n // Don't await this because it's non-fatal if we can't clean up\n // logs.\n _bluebird2.default.all(removeLogIds.map(function (id) {\n return deleteLogs(id);\n })).then(function () {\n console.log(\"Removed \" + removeLogIds.length + \" old logs.\");\n }, function (err) {\n console.error(err);\n });\n }\n return _context.abrupt(\"return\", logs);\n\n case 25:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function consume() {\n return _ref.apply(this, arguments);\n }\n\n return consume;\n }()\n }, {\n key: \"_generateLogEntry\",\n value: function _generateLogEntry(lines) {\n return {\n id: this.id,\n lines: lines,\n index: this.index++\n };\n }\n }, {\n key: \"_generateLastModifiedTime\",\n value: function _generateLastModifiedTime() {\n return {\n id: this.id,\n ts: Date.now()\n };\n }\n }]);\n return IndexedDBLogStore;\n}();\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise} Resolves to an array of whatever you returned from\n * resultMapper.\n */\n\n\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nmodule.exports = {\n\n /**\n * Configure rage shaking support for sending bug reports.\n * Modifies globals.\n * @return {Promise} Resolves when set up.\n */\n init: function init() {\n if (global.mx_rage_initPromise) {\n return global.mx_rage_initPromise;\n }\n global.mx_rage_logger = new ConsoleLogger();\n global.mx_rage_logger.monkeyPatch(window.console);\n\n // just *accessing* indexedDB throws an exception in firefox with\n // indexeddb disabled.\n var indexedDB = void 0;\n try {\n indexedDB = window.indexedDB;\n } catch (e) {}\n\n if (indexedDB) {\n global.mx_rage_store = new IndexedDBLogStore(indexedDB, global.mx_rage_logger);\n global.mx_rage_initPromise = global.mx_rage_store.connect();\n return global.mx_rage_initPromise;\n }\n global.mx_rage_initPromise = _bluebird2.default.resolve();\n return global.mx_rage_initPromise;\n },\n\n flush: function flush() {\n if (!global.mx_rage_store) {\n return;\n }\n global.mx_rage_store.flush();\n },\n\n /**\n * Clean up old logs.\n * @return Promise Resolves if cleaned logs.\n */\n cleanup: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (global.mx_rage_store) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function cleanup() {\n return _ref2.apply(this, arguments);\n }\n\n return cleanup;\n }(),\n\n /**\n * Get a recent snapshot of the logs, ready for attaching to a bug report\n *\n * @return {Array<{lines: string, id, string}>} list of log data\n */\n getLogsForReport: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (global.mx_rage_logger) {\n _context3.next = 2;\n break;\n }\n\n throw new Error(\"No console logger, did you forget to call init()?\");\n\n case 2:\n if (!global.mx_rage_store) {\n _context3.next = 10;\n break;\n }\n\n _context3.next = 5;\n return (0, _bluebird.resolve)(global.mx_rage_store.flush());\n\n case 5:\n _context3.next = 7;\n return (0, _bluebird.resolve)(global.mx_rage_store.consume());\n\n case 7:\n return _context3.abrupt(\"return\", _context3.sent);\n\n case 10:\n return _context3.abrupt(\"return\", [{\n lines: global.mx_rage_logger.flush(true),\n id: \"-\"\n }]);\n\n case 11:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getLogsForReport() {\n return _ref3.apply(this, arguments);\n }\n\n return getLogsForReport;\n }()\n};\n//# sourceMappingURL=rageshake.js.map","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if (Observer) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n};\n\nmodule.exports = EventPluginRegistry;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = function () {\n func(a);\n };\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n Alt: 'altKey',\n Control: 'ctrlKey',\n Meta: 'metaKey',\n Shift: 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: {\n toIndex: update.toIndex,\n content: update.content.toString()\n }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n};\n\nmodule.exports = DOMChildrenOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\nvar propTypesFactory = require('prop-types/factory');\n\nvar React = require('react/lib/React');\nvar PropTypes = propTypesFactory(React.isValidElement);\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n button: true,\n checkbox: true,\n image: true,\n hidden: true,\n radio: true,\n reset: true,\n submit: true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n },\n onChange: PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n};\n\nmodule.exports = ReactComponentEnvironment;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('react/lib/getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n var type = element.type;\n if (typeof type !== 'function' && typeof type !== 'string') {\n var info = '';\n if (process.env.NODE_ENV !== 'production') {\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in.\";\n }\n }\n info += getDeclarationErrorAddendum(element._owner);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info) : _prodInvariant('130', type == null ? type : typeof type, info) : void 0;\n }\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nmodule.exports = instantiateReactComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + \"within `render` or another component's constructor). Render methods \" + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n // Future-proof 15.5\n if (callback !== undefined && callback !== null) {\n ReactUpdateQueue.validateCallback(callback, 'replaceState');\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n }\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n};\n\nmodule.exports = ReactUpdateQueue;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example,
is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n //

tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for , including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n case 'pre':\n case 'listing':\n case 'table':\n case 'hr':\n case 'xmp':\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nrequire('whatwg-fetch');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fetchFunction = fetch;\n\nfunction checkStatus(response) {\n if (!response.ok) {\n return response.text().then(function (text) {\n throw new Error(text);\n });\n }\n return response;\n}\n\nfunction parseJson(response) {\n return response.json();\n}\n\nfunction encodeQueryParams(params) {\n return '?' + (0, _keys2.default)(params).map(function (k) {\n return k + '=' + encodeURIComponent(params[k]);\n }).join('&');\n}\n\nvar request = function request(url, opts) {\n if (opts && opts.qs) {\n url += encodeQueryParams(opts.qs);\n delete opts.qs;\n }\n if (opts && opts.body) {\n if (!opts.headers) {\n opts.headers = {};\n }\n opts.body = (0, _stringify2.default)(opts.body);\n opts.headers['Content-Type'] = 'application/json';\n }\n return fetchFunction(url, opts).then(checkStatus).then(parseJson);\n};\n\nvar RtsClient = function () {\n function RtsClient(url) {\n (0, _classCallCheck3.default)(this, RtsClient);\n\n this._url = url;\n }\n\n (0, _createClass3.default)(RtsClient, [{\n key: 'getTeamsConfig',\n value: function getTeamsConfig() {\n return request(this._url + '/teams');\n }\n\n /**\n * Track a referral with the Riot Team Server. This should be called once a referred\n * user has been successfully registered.\n * @param {string} referrer the user ID of one who referred the user to Riot.\n * @param {string} sid the sign-up identity server session ID .\n * @param {string} clientSecret the sign-up client secret.\n * @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon\n * success.\n */\n\n }, {\n key: 'trackReferral',\n value: function trackReferral(referrer, sid, clientSecret) {\n return request(this._url + '/register', {\n body: {\n referrer: referrer,\n session_id: sid,\n client_secret: clientSecret\n },\n method: 'POST'\n });\n }\n }, {\n key: 'getTeam',\n value: function getTeam(teamToken) {\n return request(this._url + '/teamConfiguration', {\n qs: {\n team_token: teamToken\n }\n });\n }\n\n /**\n * Signal to the RTS that a login has occurred and that a user requires their team's\n * token.\n * @param {string} userId the user ID of the user who is a member of a team.\n * @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon\n * success.\n */\n\n }, {\n key: 'login',\n value: function login(userId) {\n return request(this._url + '/login', {\n qs: {\n user_id: userId\n }\n });\n }\n\n // allow fetch to be replaced, for testing.\n\n }], [{\n key: 'setFetch',\n value: function setFetch(fn) {\n fetchFunction = fn;\n }\n }]);\n return RtsClient;\n}();\n\nexports.default = RtsClient;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RtsClient.js.map","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _syncAccumulator = require(\"../sync-accumulator\");\n\nvar _syncAccumulator2 = _interopRequireDefault(_syncAccumulator);\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = 3; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction createDatabase(db) {\n // Make user store, clobber based on user ID. (userId property of User objects)\n db.createObjectStore(\"users\", { keyPath: [\"userId\"] });\n\n // Make account data store, clobber based on event type.\n // (event.type property of MatrixEvent objects)\n db.createObjectStore(\"accountData\", { keyPath: [\"type\"] });\n\n // Make /sync store (sync tokens, room data, etc), always clobber (const key).\n db.createObjectStore(\"sync\", { keyPath: [\"clobber\"] });\n}\n\nfunction upgradeSchemaV2(db) {\n var oobMembersStore = db.createObjectStore(\"oob_membership_events\", {\n keyPath: [\"room_id\", \"state_key\"]\n });\n oobMembersStore.createIndex(\"room\", \"room_id\");\n}\n\nfunction upgradeSchemaV3(db) {\n db.createObjectStore(\"client_options\", { keyPath: [\"clobber\"] });\n}\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise<T[]>} Resolves to an array of whatever you returned from\n * resultMapper.\n */\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nfunction txnAsPromise(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function (event) {\n resolve(event);\n };\n txn.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsEventPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n resolve(event);\n };\n req.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function () {\n return resolve(req);\n };\n req.onerror = function (err) {\n return reject(err);\n };\n });\n}\n\nfunction reqAsCursorPromise(req) {\n return reqAsEventPromise(req).then(function (event) {\n return event.target.result;\n });\n}\n\n/**\n * Does the actual reading from and writing to the indexeddb\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {Object} indexedDBInterface The Indexed DB interface e.g\n * <code>window.indexedDB</code>\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n */\nvar LocalIndexedDBStoreBackend = function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) {\n this.indexedDB = indexedDBInterface;\n this._dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n this.db = null;\n this._disconnected = true;\n this._syncAccumulator = new _syncAccumulator2.default();\n this._isNewlyCreated = false;\n};\n\nLocalIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n if (!this._disconnected) {\n console.log(\"LocalIndexedDBStoreBackend.connect: already connected or connecting\");\n return _bluebird2.default.resolve();\n }\n\n this._disconnected = false;\n\n console.log(\"LocalIndexedDBStoreBackend.connect: connecting...\");\n var req = this.indexedDB.open(this._dbName, VERSION);\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n console.log(\"LocalIndexedDBStoreBackend.connect: upgrading from \" + oldVersion);\n if (oldVersion < 1) {\n // The database did not previously exist.\n _this._isNewlyCreated = true;\n createDatabase(db);\n }\n if (oldVersion < 2) {\n upgradeSchemaV2(db);\n }\n if (oldVersion < 3) {\n upgradeSchemaV3(db);\n }\n // Expand as needed.\n };\n\n req.onblocked = function () {\n console.log(\"can't yet open LocalIndexedDBStoreBackend because it is open elsewhere\");\n };\n\n console.log(\"LocalIndexedDBStoreBackend.connect: awaiting connection...\");\n return reqAsEventPromise(req).then(function (ev) {\n console.log(\"LocalIndexedDBStoreBackend.connect: connected\");\n _this.db = ev.target.result;\n\n // add a poorly-named listener for when deleteDatabase is called\n // so we can close our db connections.\n _this.db.onversionchange = function () {\n _this.db.close();\n };\n\n return _this._init();\n });\n },\n /** @return {bool} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(this._isNewlyCreated);\n },\n\n /**\n * Having connected, load initial data from the database and prepare for use\n * @return {Promise} Resolves on success\n */\n _init: function _init() {\n var _this2 = this;\n\n return _bluebird2.default.all([this._loadAccountData(), this._loadSyncData()]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n accountData = _ref2[0],\n syncData = _ref2[1];\n\n console.log(\"LocalIndexedDBStoreBackend: loaded initial data\");\n _this2._syncAccumulator.accumulate({\n next_batch: syncData.nextBatch,\n rooms: syncData.roomsData,\n groups: syncData.groupsData,\n account_data: {\n events: accountData\n }\n });\n });\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {Promise<event[]>} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n var _this3 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var tx = _this3.db.transaction([\"oob_membership_events\"], \"readonly\");\n var store = tx.objectStore(\"oob_membership_events\");\n var roomIndex = store.index(\"room\");\n var range = IDBKeyRange.only(roomId);\n var request = roomIndex.openCursor(range);\n\n var membershipEvents = [];\n // did we encounter the oob_written marker object\n // amongst the results? That means OOB member\n // loading already happened for this room\n // but there were no members to persist as they\n // were all known already\n var oobWritten = false;\n\n request.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n // Unknown room\n if (!membershipEvents.length && !oobWritten) {\n return resolve(null);\n }\n return resolve(membershipEvents);\n }\n var record = cursor.value;\n if (record.oob_written) {\n oobWritten = true;\n } else {\n membershipEvents.push(record);\n }\n cursor.continue();\n };\n request.onerror = function (err) {\n reject(err);\n };\n }).then(function (events) {\n console.log(\"LL: got \" + (events && events.length) + (\" membershipEvents from storage for room \" + roomId + \" ...\"));\n return events;\n });\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n */\n setOutOfBandMembers: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, membershipEvents) {\n var tx, store, markerObject;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.log(\"LL: backend about to store \" + membershipEvents.length + (\" members for \" + roomId));\n tx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n store = tx.objectStore(\"oob_membership_events\");\n\n membershipEvents.forEach(function (e) {\n store.put(e);\n });\n // aside from all the events, we also write a marker object to the store\n // to mark the fact that OOB members have been written for this room.\n // It's possible that 0 members need to be written as all where previously know\n // but we still need to know whether to return null or [] from getOutOfBandMembers\n // where null means out of band members haven't been stored yet for this room\n markerObject = {\n room_id: roomId,\n oob_written: true,\n state_key: 0\n };\n\n store.put(markerObject);\n _context.next = 8;\n return (0, _bluebird.resolve)(txnAsPromise(tx));\n\n case 8:\n console.log(\"LL: backend done storing for \" + roomId + \"!\");\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setOutOfBandMembers(_x, _x2) {\n return _ref3.apply(this, arguments);\n }\n\n return setOutOfBandMembers;\n }(),\n\n clearOutOfBandMembers: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId) {\n var readTx, store, roomIndex, roomRange, minStateKeyProm, maxStateKeyProm, _ref5, _ref6, minStateKey, maxStateKey, writeTx, writeStore, membersKeyRange;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // the approach to delete all members for a room\n // is to get the min and max state key from the index\n // for that room, and then delete between those\n // keys in the store.\n // this should be way faster than deleting every member\n // individually for a large room.\n readTx = this.db.transaction([\"oob_membership_events\"], \"readonly\");\n store = readTx.objectStore(\"oob_membership_events\");\n roomIndex = store.index(\"room\");\n roomRange = IDBKeyRange.only(roomId);\n minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"next\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"prev\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([minStateKeyProm, maxStateKeyProm]));\n\n case 8:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n minStateKey = _ref6[0];\n maxStateKey = _ref6[1];\n writeTx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n writeStore = writeTx.objectStore(\"oob_membership_events\");\n membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);\n\n\n console.log(\"LL: Deleting all users + marker in storage for \" + (\"room \" + roomId + \", with key range:\"), [roomId, minStateKey], [roomId, maxStateKey]);\n _context2.next = 18;\n return (0, _bluebird.resolve)(reqAsPromise(writeStore.delete(membersKeyRange)));\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function clearOutOfBandMembers(_x3) {\n return _ref4.apply(this, arguments);\n }\n\n return clearOutOfBandMembers;\n }(),\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this4 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n console.log(\"Removing indexeddb instance: \" + _this4._dbName);\n var req = _this4.indexedDB.deleteDatabase(_this4._dbName);\n\n req.onblocked = function () {\n console.log(\"can't yet delete indexeddb \" + _this4._dbName + \" because it is open elsewhere\");\n };\n\n req.onerror = function (ev) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that we can still\n // use the app.\n console.warn(\"unable to delete js-sdk store indexeddb: \" + ev.target.error);\n resolve();\n };\n\n req.onsuccess = function () {\n console.log(\"Removed indexeddb instance: \" + _this4._dbName);\n resolve();\n };\n });\n },\n\n /**\n * @param {boolean=} copy If false, the data returned is from internal\n * buffers and must not be mutated. Otherwise, a copy is made before\n * returning such that the data can be safely mutated. Default: true.\n *\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync(copy) {\n if (copy === undefined) copy = true;\n\n var data = this._syncAccumulator.getJSON();\n if (!data.nextBatch) return _bluebird2.default.resolve(null);\n if (copy) {\n // We must deep copy the stored data so that the /sync processing code doesn't\n // corrupt the internal state of the sync accumulator (it adds non-clonable keys)\n return _bluebird2.default.resolve(_utils2.default.deepCopy(data));\n } else {\n return _bluebird2.default.resolve(data);\n }\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return _bluebird2.default.resolve(this._syncAccumulator.getNextBatchToken());\n },\n\n setSyncData: function setSyncData(syncData) {\n var _this5 = this;\n\n return _bluebird2.default.resolve().then(function () {\n _this5._syncAccumulator.accumulate(syncData);\n });\n },\n\n syncToDatabase: function syncToDatabase(userTuples) {\n var syncData = this._syncAccumulator.getJSON();\n\n return _bluebird2.default.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]);\n },\n\n /**\n * Persist rooms /sync data along with the next batch token.\n * @param {string} nextBatch The next_batch /sync value.\n * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator\n * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator\n * @return {Promise} Resolves if the data was persisted.\n */\n _persistSyncData: function _persistSyncData(nextBatch, roomsData, groupsData) {\n var _this6 = this;\n\n console.log(\"Persisting sync data up to \", nextBatch);\n return _bluebird2.default.try(function () {\n var txn = _this6.db.transaction([\"sync\"], \"readwrite\");\n var store = txn.objectStore(\"sync\");\n store.put({\n clobber: \"-\", // constant key so will always clobber\n nextBatch: nextBatch,\n roomsData: roomsData,\n groupsData: groupsData\n }); // put == UPSERT\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of account data events. Events with the same 'type' will\n * be replaced.\n * @param {Object[]} accountData An array of raw user-scoped account data events\n * @return {Promise} Resolves if the events were persisted.\n */\n _persistAccountData: function _persistAccountData(accountData) {\n var _this7 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this7.db.transaction([\"accountData\"], \"readwrite\");\n var store = txn.objectStore(\"accountData\");\n for (var i = 0; i < accountData.length; i++) {\n store.put(accountData[i]); // put == UPSERT\n }\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of [user id, presence event] they are for.\n * Users with the same 'userId' will be replaced.\n * Presence events should be the event in its raw form (not the Event\n * object)\n * @param {Object[]} tuples An array of [userid, event] tuples\n * @return {Promise} Resolves if the users were persisted.\n */\n _persistUserPresenceEvents: function _persistUserPresenceEvents(tuples) {\n var _this8 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this8.db.transaction([\"users\"], \"readwrite\");\n var store = txn.objectStore(\"users\");\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(tuples), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tuple = _step.value;\n\n store.put({\n userId: tuple[0],\n event: tuple[1]\n }); // put == UPSERT\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * FIXME: It would probably be more sensible to store the events in the\n * sync.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n var _this9 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this9.db.transaction([\"users\"], \"readonly\");\n var store = txn.objectStore(\"users\");\n return selectQuery(store, undefined, function (cursor) {\n return [cursor.value.userId, cursor.value.event];\n });\n });\n },\n\n /**\n * Load all the account data events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of raw global account events.\n */\n _loadAccountData: function _loadAccountData() {\n var _this10 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading account data...\");\n return _bluebird2.default.try(function () {\n var txn = _this10.db.transaction([\"accountData\"], \"readonly\");\n var store = txn.objectStore(\"accountData\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (result) {\n console.log(\"LocalIndexedDBStoreBackend: loaded account data\");\n return result;\n });\n });\n },\n\n /**\n * Load the sync data from the database.\n * @return {Promise<Object>} An object with \"roomsData\" and \"nextBatch\" keys.\n */\n _loadSyncData: function _loadSyncData() {\n var _this11 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading sync data...\");\n return _bluebird2.default.try(function () {\n var txn = _this11.db.transaction([\"sync\"], \"readonly\");\n var store = txn.objectStore(\"sync\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (results) {\n console.log(\"LocalIndexedDBStoreBackend: loaded sync data\");\n if (results.length > 1) {\n console.warn(\"loadSyncData: More than 1 sync row found.\");\n }\n return results.length > 0 ? results[0] : {};\n });\n });\n },\n\n getClientOptions: function getClientOptions() {\n var _this12 = this;\n\n return _bluebird2.default.resolve().then(function () {\n var txn = _this12.db.transaction([\"client_options\"], \"readonly\");\n var store = txn.objectStore(\"client_options\");\n return selectQuery(store, undefined, function (cursor) {\n if (cursor.value && cursor.value && cursor.value.options) {\n return cursor.value.options;\n }\n }).then(function (results) {\n return results[0];\n });\n });\n },\n\n storeClientOptions: function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) {\n var txn, store;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n txn = this.db.transaction([\"client_options\"], \"readwrite\");\n store = txn.objectStore(\"client_options\");\n\n store.put({\n clobber: \"-\", // constant key so will always clobber\n options: options\n }); // put == UPSERT\n _context3.next = 5;\n return (0, _bluebird.resolve)(txnAsPromise(txn));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function storeClientOptions(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return storeClientOptions;\n }()\n};\n\nexports.default = LocalIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-local-backend.js.map","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. in-memory storage for e2e.\n *\n * @module\n */\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MemoryCryptoStore = function () {\n function MemoryCryptoStore() {\n (0, _classCallCheck3.default)(this, MemoryCryptoStore);\n\n this._outgoingRoomKeyRequests = [];\n this._account = null;\n\n // Map of {devicekey -> {sessionId -> session pickle}}\n this._sessions = {};\n // Map of {senderCurve25519Key+'/'+sessionId -> session data object}\n this._inboundGroupSessions = {};\n // Opaque device data object\n this._deviceData = null;\n // roomId -> Opaque roomInfo object\n this._rooms = {};\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n\n (0, _createClass3.default)(MemoryCryptoStore, [{\n key: 'deleteAllData',\n value: function deleteAllData() {\n return _bluebird2.default.resolve();\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n }, {\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var _this = this;\n\n var requestBody = request.requestBody;\n\n return _bluebird2.default.try(function () {\n // first see if we already have an entry for this request.\n var existing = _this._getOutgoingRoomKeyRequest(requestBody);\n\n if (existing) {\n // this entry matches the request - return it.\n console.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n return existing;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n console.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n _this._outgoingRoomKeyRequests.push(request);\n return request;\n });\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n return _bluebird2.default.resolve(this._getOutgoingRoomKeyRequest(requestBody));\n }\n\n /**\n * Looks for existing room key request, and returns the result synchronously.\n *\n * @internal\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {module:crypto/store/base~OutgoingRoomKeyRequest?}\n * the matching request, or null if not found\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(requestBody) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var existing = _step.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n return existing;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var req = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(wantedStates), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var state = _step3.value;\n\n if (req.state === state) {\n return _bluebird2.default.resolve(req);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(this._outgoingRoomKeyRequests), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var req = _step4.value;\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n console.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + req.state));\n return _bluebird2.default.resolve(null);\n }\n (0, _assign2.default)(req, updates);\n return _bluebird2.default.resolve(req);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n for (var i = 0; i < this._outgoingRoomKeyRequests.length; i++) {\n var req = this._outgoingRoomKeyRequests[i];\n\n if (req.requestId !== requestId) {\n continue;\n }\n\n if (req.state != expectedState) {\n console.warn('Cannot delete room key request in state ' + req.state + ' ' + ('(expected ' + expectedState + ')'));\n return _bluebird2.default.resolve(null);\n }\n\n this._outgoingRoomKeyRequests.splice(i, 1);\n return _bluebird2.default.resolve(req);\n }\n\n return _bluebird2.default.resolve(null);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n func(this._account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n this._account = newData;\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n return (0, _keys2.default)(this._sessions).length;\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var deviceSessions = this._sessions[deviceKey] || {};\n func(deviceSessions[sessionId] || null);\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._sessions[deviceKey] || {});\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, session, txn) {\n var deviceSessions = this._sessions[deviceKey];\n if (deviceSessions === undefined) {\n deviceSessions = {};\n this._sessions[deviceKey] = deviceSessions;\n }\n deviceSessions[sessionId] = session;\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] || null);\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = (0, _getIterator3.default)((0, _keys2.default)(this._inboundGroupSessions)), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var key = _step5.value;\n\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(0, 43),\n sessionId: key.substr(44),\n sessionData: this._inboundGroupSessions[key]\n });\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var k = senderCurve25519Key + '/' + sessionId;\n if (this._inboundGroupSessions[k] === undefined) {\n this._inboundGroupSessions[k] = sessionData;\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n this._inboundGroupSessions[senderCurve25519Key + '/' + sessionId] = sessionData;\n }\n\n // Device Data\n\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(this._deviceData);\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n this._deviceData = deviceData;\n }\n\n // E2E rooms\n\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n this._rooms[roomId] = roomInfo;\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n func(this._rooms);\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }]);\n return MemoryCryptoStore;\n}();\n\nexports.default = MemoryCryptoStore;\n//# sourceMappingURL=memory-crypto-store.js.map","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-member\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar ContentRepo = require(\"../content-repo\");\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new room member.\n *\n * @constructor\n * @alias module:models/room-member\n *\n * @param {string} roomId The room ID of the member.\n * @param {string} userId The user ID of the member.\n * @prop {string} roomId The room ID for this member.\n * @prop {string} userId The user ID of this member.\n * @prop {boolean} typing True if the room member is currently typing.\n * @prop {string} name The human-readable name for this room member. This will be\n * disambiguated with a suffix of \" (@user_id:matrix.org)\" if another member shares the\n * same displayname.\n * @prop {string} rawDisplayName The ambiguous displayname of this room member.\n * @prop {Number} powerLevel The power level for this room member.\n * @prop {Number} powerLevelNorm The normalised power level (0-100) for this\n * room member.\n * @prop {User} user The User object for this room member, if one exists.\n * @prop {string} membership The membership state for this room member e.g. 'join'.\n * @prop {Object} events The events describing this RoomMember.\n * @prop {MatrixEvent} events.member The m.room.member event for this RoomMember.\n */\nfunction RoomMember(roomId, userId) {\n this.roomId = roomId;\n this.userId = userId;\n this.typing = false;\n this.name = userId;\n this.rawDisplayName = userId;\n this.powerLevel = 0;\n this.powerLevelNorm = 0;\n this.user = null;\n this.membership = null;\n this.events = {\n member: null\n };\n this._isOutOfBand = false;\n this._updateModifiedTime();\n}\nutils.inherits(RoomMember, EventEmitter);\n\n/**\n * Mark the member as coming from a channel that is not sync\n */\nRoomMember.prototype.markOutOfBand = function () {\n this._isOutOfBand = true;\n};\n\n/**\n * @return {bool} does the member come from a channel that is not sync?\n * This is used to store the member seperately\n * from the sync state so it available across browser sessions.\n */\nRoomMember.prototype.isOutOfBand = function () {\n return this._isOutOfBand;\n};\n\n/**\n * Update this room member's membership event. May fire \"RoomMember.name\" if\n * this event updates this member's name.\n * @param {MatrixEvent} event The <code>m.room.member</code> event\n * @param {RoomState} roomState Optional. The room state to take into account\n * when calculating (e.g. for disambiguating users with the same name).\n * @fires module:client~MatrixClient#event:\"RoomMember.name\"\n * @fires module:client~MatrixClient#event:\"RoomMember.membership\"\n */\nRoomMember.prototype.setMembershipEvent = function (event, roomState) {\n if (event.getType() !== \"m.room.member\") {\n return;\n }\n\n this._isOutOfBand = false;\n\n this.events.member = event;\n\n var oldMembership = this.membership;\n this.membership = event.getDirectionalContent().membership;\n\n var oldName = this.name;\n this.name = calculateDisplayName(this.userId, event.getDirectionalContent().displayname, roomState);\n\n this.rawDisplayName = event.getDirectionalContent().displayname || this.userId;\n if (oldMembership !== this.membership) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.membership\", event, this, oldMembership);\n }\n if (oldName !== this.name) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.name\", event, this, oldName);\n }\n};\n\n/**\n * Update this room member's power level event. May fire\n * \"RoomMember.powerLevel\" if this event updates this member's power levels.\n * @param {MatrixEvent} powerLevelEvent The <code>m.room.power_levels</code>\n * event\n * @fires module:client~MatrixClient#event:\"RoomMember.powerLevel\"\n */\nRoomMember.prototype.setPowerLevelEvent = function (powerLevelEvent) {\n if (powerLevelEvent.getType() !== \"m.room.power_levels\") {\n return;\n }\n\n var evContent = powerLevelEvent.getDirectionalContent();\n\n var maxLevel = evContent.users_default || 0;\n utils.forEach(utils.values(evContent.users), function (lvl) {\n maxLevel = Math.max(maxLevel, lvl);\n });\n var oldPowerLevel = this.powerLevel;\n var oldPowerLevelNorm = this.powerLevelNorm;\n\n if (evContent.users && evContent.users[this.userId] !== undefined) {\n this.powerLevel = evContent.users[this.userId];\n } else if (evContent.users_default !== undefined) {\n this.powerLevel = evContent.users_default;\n } else {\n this.powerLevel = 0;\n }\n this.powerLevelNorm = 0;\n if (maxLevel > 0) {\n this.powerLevelNorm = this.powerLevel * 100 / maxLevel;\n }\n\n // emit for changes in powerLevelNorm as well (since the app will need to\n // redraw everyone's level if the max has changed)\n if (oldPowerLevel !== this.powerLevel || oldPowerLevelNorm !== this.powerLevelNorm) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.powerLevel\", powerLevelEvent, this);\n }\n};\n\n/**\n * Update this room member's typing event. May fire \"RoomMember.typing\" if\n * this event changes this member's typing state.\n * @param {MatrixEvent} event The typing event\n * @fires module:client~MatrixClient#event:\"RoomMember.typing\"\n */\nRoomMember.prototype.setTypingEvent = function (event) {\n if (event.getType() !== \"m.typing\") {\n return;\n }\n var oldTyping = this.typing;\n this.typing = false;\n var typingList = event.getContent().user_ids;\n if (!utils.isArray(typingList)) {\n // malformed event :/ bail early. TODO: whine?\n return;\n }\n if (typingList.indexOf(this.userId) !== -1) {\n this.typing = true;\n }\n if (oldTyping !== this.typing) {\n this._updateModifiedTime();\n this.emit(\"RoomMember.typing\", event, this);\n }\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomMember.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this RoomMember was last updated. This timestamp is\n * updated when properties on this RoomMember are updated.\n * It is updated <i>before</i> firing events.\n * @return {number} The timestamp\n */\nRoomMember.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\nRoomMember.prototype.isKicked = function () {\n return this.membership === \"leave\" && this.events.member.getSender() !== this.events.member.getStateKey();\n};\n\n/**\n * If this member was invited with the is_direct flag set, return\n * the user that invited this member\n * @return {string} user id of the inviter\n */\nRoomMember.prototype.getDMInviter = function () {\n // when not available because that room state hasn't been loaded in,\n // we don't really know, but more likely to not be a direct chat\n if (this.events.member) {\n // TODO: persist the is_direct flag on the member as more member events\n // come in caused by displayName changes.\n\n // the is_direct flag is set on the invite member event.\n // This is copied on the prev_content section of the join member event\n // when the invite is accepted.\n\n var memberEvent = this.events.member;\n var memberContent = memberEvent.getContent();\n var inviteSender = memberEvent.getSender();\n\n if (memberContent.membership === \"join\") {\n memberContent = memberEvent.getPrevContent();\n inviteSender = memberEvent.getUnsigned().prev_sender;\n }\n\n if (memberContent.membership === \"invite\" && memberContent.is_direct) {\n return inviteSender;\n }\n }\n};\n\n/**\n * Get the avatar URL for a room member.\n * @param {string} baseUrl The base homeserver URL See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDefault (optional) Passing false causes this method to\n * return null if the user has no avatar image. Otherwise, a default image URL\n * will be returned. Default: true.\n * @param {Boolean} allowDirectLinks (optional) If true, the avatar URL will be\n * returned even if it is a direct hyperlink rather than a matrix content URL.\n * If false, any non-matrix content URLs will be ignored. Setting this option to\n * true will expose URLs that, if fetched, will leak information about the user\n * to anyone who they share a room with.\n * @return {?string} the avatar URL or null.\n */\nRoomMember.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault, allowDirectLinks) {\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n\n var rawUrl = this.getMxcAvatarUrl();\n\n if (!rawUrl && !allowDefault) {\n return null;\n }\n var httpUrl = ContentRepo.getHttpUriForMxc(baseUrl, rawUrl, width, height, resizeMethod, allowDirectLinks);\n if (httpUrl) {\n return httpUrl;\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.userId, width, height);\n }\n return null;\n};\n/**\n * get the mxc avatar url, either from a state event, or from a lazily loaded member\n * @return {string} the mxc avatar url\n */\nRoomMember.prototype.getMxcAvatarUrl = function () {\n if (this.events.member) {\n return this.events.member.getDirectionalContent().avatar_url;\n } else if (this.user) {\n return this.user.avatarUrl;\n }\n return null;\n};\n\nfunction calculateDisplayName(selfUserId, displayName, roomState) {\n if (!displayName || displayName === selfUserId) {\n return selfUserId;\n }\n\n if (!roomState) {\n return displayName;\n }\n\n // First check if the displayname is something we consider truthy\n // after stripping it of zero width characters and padding spaces\n var strippedDisplayName = utils.removeHiddenChars(displayName);\n if (!strippedDisplayName) {\n return selfUserId;\n }\n\n // Next check if the name contains something that look like a mxid\n // If it does, it may be someone trying to impersonate someone else\n // Show full mxid in this case\n // Also show mxid if there are other people with the same displayname\n // ignoring any zero width chars (unicode 200B-200D)\n // if their displayname is made up of just zero width chars, show full mxid\n var disambiguate = /@.+:.+/.test(displayName);\n if (!disambiguate) {\n var userIds = roomState.getUserIdsWithDisplayName(strippedDisplayName);\n disambiguate = userIds.some(function (u) {\n return u !== selfUserId;\n });\n }\n\n if (disambiguate) {\n return displayName + \" (\" + selfUserId + \")\";\n }\n return displayName;\n}\n\n/**\n * The RoomMember class.\n */\nmodule.exports = RoomMember;\n\n/**\n * Fires whenever any room member's name changes.\n * @event module:client~MatrixClient#\"RoomMember.name\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.name changed.\n * @param {string?} oldName The previous name. Null if the member didn't have a\n * name previously.\n * @example\n * matrixClient.on(\"RoomMember.name\", function(event, member){\n * var newName = member.name;\n * });\n */\n\n/**\n * Fires whenever any room member's membership state changes.\n * @event module:client~MatrixClient#\"RoomMember.membership\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.membership changed.\n * @param {string?} oldMembership The previous membership state. Null if it's a\n * new member.\n * @example\n * matrixClient.on(\"RoomMember.membership\", function(event, member, oldMembership){\n * var newState = member.membership;\n * });\n */\n\n/**\n * Fires whenever any room member's typing state changes.\n * @event module:client~MatrixClient#\"RoomMember.typing\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.typing changed.\n * @example\n * matrixClient.on(\"RoomMember.typing\", function(event, member){\n * var isTyping = member.typing;\n * });\n */\n\n/**\n * Fires whenever any room member's power level changes.\n * @event module:client~MatrixClient#\"RoomMember.powerLevel\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomMember} member The member whose RoomMember.powerLevel changed.\n * @example\n * matrixClient.on(\"RoomMember.powerLevel\", function(event, member){\n * var newPowerLevel = member.powerLevel;\n * var newNormPowerLevel = member.powerLevelNorm;\n * });\n */\n//# sourceMappingURL=room-member.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter\n */\n\nvar FilterComponent = require(\"./filter-component\");\n\n/**\n * @param {Object} obj\n * @param {string} keyNesting\n * @param {*} val\n */\nfunction setProp(obj, keyNesting, val) {\n var nestedKeys = keyNesting.split(\".\");\n var currentObj = obj;\n for (var i = 0; i < nestedKeys.length - 1; i++) {\n if (!currentObj[nestedKeys[i]]) {\n currentObj[nestedKeys[i]] = {};\n }\n currentObj = currentObj[nestedKeys[i]];\n }\n currentObj[nestedKeys[nestedKeys.length - 1]] = val;\n}\n\n/**\n * Construct a new Filter.\n * @constructor\n * @param {string} userId The user ID for this filter.\n * @param {string=} filterId The filter ID if known.\n * @prop {string} userId The user ID of the filter\n * @prop {?string} filterId The filter ID\n */\nfunction Filter(userId, filterId) {\n this.userId = userId;\n this.filterId = filterId;\n this.definition = {};\n}\n\nFilter.LAZY_LOADING_MESSAGES_FILTER = {\n lazy_load_members: true\n};\n\nFilter.LAZY_LOADING_SYNC_FILTER = {\n room: {\n state: Filter.LAZY_LOADING_MESSAGES_FILTER\n }\n};\n\n/**\n * Get the ID of this filter on your homeserver (if known)\n * @return {?Number} The filter ID\n */\nFilter.prototype.getFilterId = function () {\n return this.filterId;\n};\n\n/**\n * Get the JSON body of the filter.\n * @return {Object} The filter definition\n */\nFilter.prototype.getDefinition = function () {\n return this.definition;\n};\n\n/**\n * Set the JSON body of the filter\n * @param {Object} definition The filter definition\n */\nFilter.prototype.setDefinition = function (definition) {\n this.definition = definition;\n\n // This is all ported from synapse's FilterCollection()\n\n // definitions look something like:\n // {\n // \"room\": {\n // \"rooms\": [\"!abcde:example.com\"],\n // \"not_rooms\": [\"!123456:example.com\"],\n // \"state\": {\n // \"types\": [\"m.room.*\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // },\n // \"timeline\": {\n // \"limit\": 10,\n // \"types\": [\"m.room.message\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // \"contains_url\": true\n // },\n // \"ephemeral\": {\n // \"types\": [\"m.receipt\", \"m.typing\"],\n // \"not_rooms\": [\"!726s6s6q:example.com\"],\n // \"not_senders\": [\"@spam:example.com\"]\n // }\n // },\n // \"presence\": {\n // \"types\": [\"m.presence\"],\n // \"not_senders\": [\"@alice:example.com\"]\n // },\n // \"event_format\": \"client\",\n // \"event_fields\": [\"type\", \"content\", \"sender\"]\n // }\n\n var room_filter_json = definition.room;\n\n // consider the top level rooms/not_rooms filter\n var room_filter_fields = {};\n if (room_filter_json) {\n if (room_filter_json.rooms) {\n room_filter_fields.rooms = room_filter_json.rooms;\n }\n if (room_filter_json.rooms) {\n room_filter_fields.not_rooms = room_filter_json.not_rooms;\n }\n\n this._include_leave = room_filter_json.include_leave || false;\n }\n\n this._room_filter = new FilterComponent(room_filter_fields);\n this._room_timeline_filter = new FilterComponent(room_filter_json ? room_filter_json.timeline || {} : {});\n\n // don't bother porting this from synapse yet:\n // this._room_state_filter =\n // new FilterComponent(room_filter_json.state || {});\n // this._room_ephemeral_filter =\n // new FilterComponent(room_filter_json.ephemeral || {});\n // this._room_account_data_filter =\n // new FilterComponent(room_filter_json.account_data || {});\n // this._presence_filter =\n // new FilterComponent(definition.presence || {});\n // this._account_data_filter =\n // new FilterComponent(definition.account_data || {});\n};\n\n/**\n * Get the room.timeline filter component of the filter\n * @return {FilterComponent} room timeline filter component\n */\nFilter.prototype.getRoomTimelineFilterComponent = function () {\n return this._room_timeline_filter;\n};\n\n/**\n * Filter the list of events based on whether they are allowed in a timeline\n * based on this filter\n * @param {MatrixEvent[]} events the list of events being filtered\n * @return {MatrixEvent[]} the list of events which match the filter\n */\nFilter.prototype.filterRoomTimeline = function (events) {\n return this._room_timeline_filter.filter(this._room_filter.filter(events));\n};\n\n/**\n * Set the max number of events to return for each room's timeline.\n * @param {Number} limit The max number of events to return for each room.\n */\nFilter.prototype.setTimelineLimit = function (limit) {\n setProp(this.definition, \"room.timeline.limit\", limit);\n};\n\n/**\n * Control whether left rooms should be included in responses.\n * @param {boolean} includeLeave True to make rooms the user has left appear\n * in responses.\n */\nFilter.prototype.setIncludeLeaveRooms = function (includeLeave) {\n setProp(this.definition, \"room.include_leave\", includeLeave);\n};\n\n/**\n * Create a filter from existing data.\n * @static\n * @param {string} userId\n * @param {string} filterId\n * @param {Object} jsonObj\n * @return {Filter}\n */\nFilter.fromJson = function (userId, filterId, jsonObj) {\n var filter = new Filter(userId, filterId);\n filter.setDefinition(jsonObj);\n return filter;\n};\n\n/** The Filter class */\nmodule.exports = Filter;\n//# sourceMappingURL=filter.js.map","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/event-timeline-set\n */\n\nvar EventEmitter = require(\"events\").EventEmitter;\nvar utils = require(\"../utils\");\nvar EventTimeline = require(\"./event-timeline\");\n\n// var DEBUG = false;\nvar DEBUG = true;\n\nvar debuglog = void 0;\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = console.log.bind(console);\n} else {\n debuglog = function debuglog() {};\n}\n\n/**\n * Construct a set of EventTimeline objects, typically on behalf of a given\n * room. A room may have multiple EventTimelineSets for different levels\n * of filtering. The global notification list is also an EventTimelineSet, but\n * lacks a room.\n *\n * <p>This is an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline (if appropriate).\n * It also tracks forward and backward pagination tokens, as well as containing\n * links to the next timeline in the sequence.\n *\n * <p>There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n * <p>In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @param {?Room} room the optional room for this timelineSet\n * @param {Object} opts hash of options inherited from Room.\n * opts.timelineSupport gives whether timeline support is enabled\n * opts.filter is the filter object, if any, for this timelineSet.\n */\nfunction EventTimelineSet(room, opts) {\n this.room = room;\n\n this._timelineSupport = Boolean(opts.timelineSupport);\n this._liveTimeline = new EventTimeline(this);\n\n // just a list - *not* ordered.\n this._timelines = [this._liveTimeline];\n this._eventIdToTimeline = {};\n\n this._filter = opts.filter || null;\n}\nutils.inherits(EventTimelineSet, EventEmitter);\n\n/**\n * Get the filter object this timeline set is filtered on, if any\n * @return {?Filter} the optional filter for this timelineSet\n */\nEventTimelineSet.prototype.getFilter = function () {\n return this._filter;\n};\n\n/**\n * Set the filter object this timeline set is filtered on\n * (passed to the server when paginating via /messages).\n * @param {Filter} filter the filter for this timelineSet\n */\nEventTimelineSet.prototype.setFilter = function (filter) {\n this._filter = filter;\n};\n\n/**\n * Get the list of pending sent events for this timelineSet's room, filtered\n * by the timelineSet's filter if appropriate.\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If <code>opts.pendingEventOrdering</code> was not 'detached'\n */\nEventTimelineSet.prototype.getPendingEvents = function () {\n if (!this.room) {\n return [];\n }\n\n if (this._filter) {\n return this._filter.filterRoomTimeline(this.room.getPendingEvents());\n } else {\n return this.room.getPendingEvents();\n }\n};\n\n/**\n * Get the live timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nEventTimelineSet.prototype.getLiveTimeline = function () {\n return this._liveTimeline;\n};\n\n/**\n * Return the timeline (if any) this event is in.\n * @param {String} eventId the eventId being sought\n * @return {module:models/event-timeline~EventTimeline} timeline\n */\nEventTimelineSet.prototype.eventIdToTimeline = function (eventId) {\n return this._eventIdToTimeline[eventId];\n};\n\n/**\n * Track a new event as if it were in the same timeline as an old event,\n * replacing it.\n * @param {String} oldEventId event ID of the original event\n * @param {String} newEventId event ID of the replacement event\n */\nEventTimelineSet.prototype.replaceEventId = function (oldEventId, newEventId) {\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n }\n};\n\n/**\n * Reset the live timeline, and start a new one.\n *\n * <p>This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset.\n *\n * @fires module:client~MatrixClient#event:\"Room.timelineReset\"\n */\nEventTimelineSet.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n // Each EventTimeline has RoomState objects tracking the state at the start\n // and end of that timeline. The copies at the end of the live timeline are\n // special because they will have listeners attached to monitor changes to\n // the current room state, so we move this RoomState from the end of the\n // current live timeline to the end of the new one and, if necessary,\n // replace it with a newly created one. We also make a copy for the start\n // of the new timeline.\n\n // if timeline support is disabled, forget about the old timelines\n var resetAllTimelines = !this._timelineSupport || !forwardPaginationToken;\n\n var oldTimeline = this._liveTimeline;\n var newTimeline = resetAllTimelines ? oldTimeline.forkLive(EventTimeline.FORWARDS) : oldTimeline.fork(EventTimeline.FORWARDS);\n\n if (resetAllTimelines) {\n this._timelines = [newTimeline];\n this._eventIdToTimeline = {};\n } else {\n this._timelines.push(newTimeline);\n }\n\n if (forwardPaginationToken) {\n // Now set the forward pagination token on the old live timeline\n // so it can be forward-paginated.\n oldTimeline.setPaginationToken(forwardPaginationToken, EventTimeline.FORWARDS);\n }\n\n // make sure we set the pagination token before firing timelineReset,\n // otherwise clients which start back-paginating will fail, and then get\n // stuck without realising that they *can* back-paginate.\n newTimeline.setPaginationToken(backPaginationToken, EventTimeline.BACKWARDS);\n\n // Now we can swap the live timeline to the new one.\n this._liveTimeline = newTimeline;\n this.emit(\"Room.timelineReset\", this.room, this, resetAllTimelines);\n};\n\n/**\n * Get the timeline which contains the given event, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nEventTimelineSet.prototype.getTimelineForEvent = function (eventId) {\n var res = this._eventIdToTimeline[eventId];\n return res === undefined ? null : res;\n};\n\n/**\n * Get an event which is stored in our timelines\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event~MatrixEvent} the given event, or undefined if unknown\n */\nEventTimelineSet.prototype.findEventById = function (eventId) {\n var tl = this.getTimelineForEvent(eventId);\n if (!tl) {\n return undefined;\n }\n return utils.findElement(tl.getEvents(), function (ev) {\n return ev.getId() == eventId;\n });\n};\n\n/**\n * Add a new timeline to this timeline list\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nEventTimelineSet.prototype.addTimeline = function () {\n if (!this._timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n var timeline = new EventTimeline(this);\n this._timelines.push(timeline);\n return timeline;\n};\n\n/**\n * Add events to a timeline\n *\n * <p>Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the <b>last</b> element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nEventTimelineSet.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n if (!timeline) {\n throw new Error(\"'timeline' not specified for EventTimelineSet.addEventsToTimeline\");\n }\n\n if (!toStartOfTimeline && timeline == this._liveTimeline) {\n throw new Error(\"EventTimelineSet.addEventsToTimeline cannot be used for adding events to \" + \"the live timeline - use Room.addLiveEvents instead\");\n }\n\n if (this._filter) {\n events = this._filter.filterRoomTimeline(events);\n if (!events.length) {\n return;\n }\n }\n\n var direction = toStartOfTimeline ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n var inverseDirection = toStartOfTimeline ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;\n\n // Adding events to timelines can be quite complicated. The following\n // illustrates some of the corner-cases.\n //\n // Let's say we start by knowing about four timelines. timeline3 and\n // timeline4 are neighbours:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M] [P] [S] <------> [T]\n //\n // Now we paginate timeline1, and get the following events from the server:\n // [M, N, P, R, S, T, U].\n //\n // 1. First, we ignore event M, since we already know about it.\n //\n // 2. Next, we append N to timeline 1.\n //\n // 3. Next, we don't add event P, since we already know about it,\n // but we do link together the timelines. We now have:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P] [S] <------> [T]\n //\n // 4. Now we add event R to timeline2:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] [S] <------> [T]\n //\n // Note that we have switched the timeline we are working on from\n // timeline1 to timeline2.\n //\n // 5. We ignore event S, but again join the timelines:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T]\n //\n // 6. We ignore event T, and the timelines are already joined, so there\n // is nothing to do.\n //\n // 7. Finally, we add event U to timeline4:\n //\n // timeline1 timeline2 timeline3 timeline4\n // [M, N] <---> [P, R] <---> [S] <------> [T, U]\n //\n // The important thing to note in the above is what happened when we\n // already knew about a given event:\n //\n // - if it was appropriate, we joined up the timelines (steps 3, 5).\n // - in any case, we started adding further events to the timeline which\n // contained the event we knew about (steps 3, 5, 6).\n //\n //\n // So much for adding events to the timeline. But what do we want to do\n // with the pagination token?\n //\n // In the case above, we will be given a pagination token which tells us how to\n // get events beyond 'U' - in this case, it makes sense to store this\n // against timeline4. But what if timeline4 already had 'U' and beyond? in\n // that case, our best bet is to throw away the pagination token we were\n // given and stick with whatever token timeline4 had previously. In short,\n // we want to only store the pagination token if the last event we receive\n // is one we didn't previously know about.\n //\n // We make an exception for this if it turns out that we already knew about\n // *all* of the events, and we weren't able to join up any timelines. When\n // that happens, it means our existing pagination token is faulty, since it\n // is only telling us what we already know. Rather than repeatedly\n // paginating with the same token, we might as well use the new pagination\n // token in the hope that we eventually work our way out of the mess.\n\n var didUpdate = false;\n var lastEventWasNew = false;\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n var eventId = event.getId();\n\n var existingTimeline = this._eventIdToTimeline[eventId];\n\n if (!existingTimeline) {\n // we don't know about this event yet. Just add it to the timeline.\n this.addEventToTimeline(event, timeline, toStartOfTimeline);\n lastEventWasNew = true;\n didUpdate = true;\n continue;\n }\n\n lastEventWasNew = false;\n\n if (existingTimeline == timeline) {\n debuglog(\"Event \" + eventId + \" already in timeline \" + timeline);\n continue;\n }\n\n var neighbour = timeline.getNeighbouringTimeline(direction);\n if (neighbour) {\n // this timeline already has a neighbour in the relevant direction;\n // let's assume the timelines are already correctly linked up, and\n // skip over to it.\n //\n // there's probably some edge-case here where we end up with an\n // event which is in a timeline a way down the chain, and there is\n // a break in the chain somewhere. But I can't really imagine how\n // that would happen, so I'm going to ignore it for now.\n //\n if (existingTimeline == neighbour) {\n debuglog(\"Event \" + eventId + \" in neighbouring timeline - \" + \"switching to \" + existingTimeline);\n } else {\n debuglog(\"Event \" + eventId + \" already in a different \" + \"timeline \" + existingTimeline);\n }\n timeline = existingTimeline;\n continue;\n }\n\n // time to join the timelines.\n console.info(\"Already have timeline for \" + eventId + \" - joining timeline \" + timeline + \" to \" + existingTimeline);\n timeline.setNeighbouringTimeline(existingTimeline, direction);\n existingTimeline.setNeighbouringTimeline(timeline, inverseDirection);\n timeline = existingTimeline;\n didUpdate = true;\n }\n\n // see above - if the last event was new to us, or if we didn't find any\n // new information, we update the pagination token for whatever\n // timeline we ended up on.\n if (lastEventWasNew || !didUpdate) {\n timeline.setPaginationToken(paginationToken, direction);\n }\n};\n\n/**\n * Add an event to the end of this live timeline.\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n */\nEventTimelineSet.prototype.addLiveEvent = function (event, duplicateStrategy) {\n if (this._filter) {\n var events = this._filter.filterRoomTimeline([event]);\n if (!events.length) {\n return;\n }\n }\n\n var timeline = this._eventIdToTimeline[event.getId()];\n if (timeline) {\n if (duplicateStrategy === \"replace\") {\n debuglog(\"EventTimelineSet.addLiveEvent: replacing duplicate event \" + event.getId());\n var tlEvents = timeline.getEvents();\n for (var j = 0; j < tlEvents.length; j++) {\n if (tlEvents[j].getId() === event.getId()) {\n // still need to set the right metadata on this event\n EventTimeline.setEventMetadata(event, timeline.getState(EventTimeline.FORWARDS), false);\n\n if (!tlEvents[j].encryptedType) {\n tlEvents[j] = event;\n }\n\n // XXX: we need to fire an event when this happens.\n break;\n }\n }\n } else {\n debuglog(\"EventTimelineSet.addLiveEvent: ignoring duplicate event \" + event.getId());\n }\n return;\n }\n\n this.addEventToTimeline(event, this._liveTimeline, false);\n};\n\n/**\n * Add event to the given timeline, and emit Room.timeline. Assumes\n * we have already checked we don't know about this event.\n *\n * Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent} event\n * @param {EventTimeline} timeline\n * @param {boolean} toStartOfTimeline\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.addEventToTimeline = function (event, timeline, toStartOfTimeline) {\n var eventId = event.getId();\n timeline.addEvent(event, toStartOfTimeline);\n this._eventIdToTimeline[eventId] = timeline;\n\n var data = {\n timeline: timeline,\n liveEvent: !toStartOfTimeline && timeline == this._liveTimeline\n };\n this.emit(\"Room.timeline\", event, this.room, Boolean(toStartOfTimeline), false, data);\n};\n\n/**\n * Replaces event with ID oldEventId with one with newEventId, if oldEventId is\n * recognised. Otherwise, add to the live timeline. Used to handle remote echos.\n *\n * @param {MatrixEvent} localEvent the new event to be added to the timeline\n * @param {String} oldEventId the ID of the original event\n * @param {boolean} newEventId the ID of the replacement event\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n */\nEventTimelineSet.prototype.handleRemoteEcho = function (localEvent, oldEventId, newEventId) {\n // XXX: why don't we infer newEventId from localEvent?\n var existingTimeline = this._eventIdToTimeline[oldEventId];\n if (existingTimeline) {\n delete this._eventIdToTimeline[oldEventId];\n this._eventIdToTimeline[newEventId] = existingTimeline;\n } else {\n if (this._filter) {\n if (this._filter.filterRoomTimeline([localEvent]).length) {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n } else {\n this.addEventToTimeline(localEvent, this._liveTimeline, false);\n }\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {?MatrixEvent} the removed event, or null if the event was not found\n * in this room.\n */\nEventTimelineSet.prototype.removeEvent = function (eventId) {\n var timeline = this._eventIdToTimeline[eventId];\n if (!timeline) {\n return null;\n }\n\n var removed = timeline.removeEvent(eventId);\n if (removed) {\n delete this._eventIdToTimeline[eventId];\n var data = {\n timeline: timeline\n };\n this.emit(\"Room.timeline\", removed, this.room, undefined, true, data);\n }\n return removed;\n};\n\n/**\n * Determine where two events appear in the timeline relative to one another\n *\n * @param {string} eventId1 The id of the first event\n * @param {string} eventId2 The id of the second event\n\n * @return {?number} a number less than zero if eventId1 precedes eventId2, and\n * greater than zero if eventId1 succeeds eventId2. zero if they are the\n * same event; null if we can't tell (either because we don't know about one\n * of the events, or because they are in separate timelines which don't join\n * up).\n */\nEventTimelineSet.prototype.compareEventOrdering = function (eventId1, eventId2) {\n if (eventId1 == eventId2) {\n // optimise this case\n return 0;\n }\n\n var timeline1 = this._eventIdToTimeline[eventId1];\n var timeline2 = this._eventIdToTimeline[eventId2];\n\n if (timeline1 === undefined) {\n return null;\n }\n if (timeline2 === undefined) {\n return null;\n }\n\n if (timeline1 === timeline2) {\n // both events are in the same timeline - figure out their\n // relative indices\n var idx1 = void 0,\n idx2 = void 0;\n var events = timeline1.getEvents();\n for (var idx = 0; idx < events.length && (idx1 === undefined || idx2 === undefined); idx++) {\n var evId = events[idx].getId();\n if (evId == eventId1) {\n idx1 = idx;\n }\n if (evId == eventId2) {\n idx2 = idx;\n }\n }\n return idx1 - idx2;\n }\n\n // the events are in different timelines. Iterate through the\n // linkedlist to see which comes first.\n\n // first work forwards from timeline1\n var tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline1 is before timeline2\n return -1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n\n // now try backwards from timeline1\n tl = timeline1;\n while (tl) {\n if (tl === timeline2) {\n // timeline2 is before timeline1\n return 1;\n }\n tl = tl.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n // the timelines are not contiguous.\n return null;\n};\n\n/**\n * The EventTimelineSet class.\n */\nmodule.exports = EventTimelineSet;\n\n/**\n * Fires whenever the timeline in a room is updated.\n * @event module:client~MatrixClient#\"Room.timeline\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {?Room} room The room, if any, whose timeline was updated.\n * @param {boolean} toStartOfTimeline True if this event was added to the start\n * @param {boolean} removed True if this event has just been removed from the timeline\n * (beginning; oldest) of the timeline e.g. due to pagination.\n *\n * @param {object} data more data about the event\n *\n * @param {module:event-timeline.EventTimeline} data.timeline the timeline the\n * event was added to/removed from\n *\n * @param {boolean} data.liveEvent true if the event was a real-time event\n * added to the end of the live timeline\n *\n * @example\n * matrixClient.on(\"Room.timeline\",\n * function(event, room, toStartOfTimeline, removed, data) {\n * if (!toStartOfTimeline && data.liveEvent) {\n * var messageToAppend = room.timeline.[room.timeline.length - 1];\n * }\n * });\n */\n\n/**\n * Fires whenever the live timeline in a room is reset.\n *\n * When we get a 'limited' sync (for example, after a network outage), we reset\n * the live timeline to be empty before adding the recent events to the new\n * timeline. This event is fired after the timeline is reset, and before the\n * new events are added.\n *\n * @event module:client~MatrixClient#\"Room.timelineReset\"\n * @param {Room} room The room whose live timeline was reset, if any\n * @param {EventTimelineSet} timelineSet timelineSet room whose live timeline was reset\n * @param {boolean} resetAllTimelines True if all timelines were reset.\n */\n//# sourceMappingURL=event-timeline-set.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UnknownDeviceError = exports.DecryptionError = exports.DecryptionAlgorithm = exports.EncryptionAlgorithm = exports.DECRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.registerAlgorithm = registerAlgorithm;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * map of registered encryption algorithm classes. A map from string to {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm} class\n *\n * @type {Object.<string, function(new: module:crypto/algorithms/base.EncryptionAlgorithm)>}\n */\nvar ENCRYPTION_CLASSES = exports.ENCRYPTION_CLASSES = {};\n\n/**\n * map of registered encryption algorithm classes. Map from string to {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm} class\n *\n * @type {Object.<string, function(new: module:crypto/algorithms/base.DecryptionAlgorithm)>}\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Internal module. Defines the base classes of the encryption implementations\n *\n * @module\n */\n\nvar DECRYPTION_CLASSES = exports.DECRYPTION_CLASSES = {};\n\n/**\n * base type for encryption implementations\n *\n * @alias module:crypto/algorithms/base.EncryptionAlgorithm\n *\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {string} params.deviceId The identifier for this device.\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string} params.roomId The ID of the room we will be sending to\n * @param {object} params.config The body of the m.room.encryption event\n */\n\nvar EncryptionAlgorithm = function () {\n function EncryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, EncryptionAlgorithm);\n\n this._userId = params.userId;\n this._deviceId = params.deviceId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Encrypt a message event\n *\n * @method module:crypto/algorithms/base.EncryptionAlgorithm.encryptMessage\n * @abstract\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\n\n /**\n * Called when the membership of a member of the room changes.\n *\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n * @public\n */\n\n\n (0, _createClass3.default)(EncryptionAlgorithm, [{\n key: 'onRoomMembership',\n value: function onRoomMembership(event, member, oldMembership) {}\n }]);\n return EncryptionAlgorithm;\n}();\n\nexports.EncryptionAlgorithm = EncryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * base type for decryption implementations\n *\n * @alias module:crypto/algorithms/base.DecryptionAlgorithm\n * @param {object} params parameters\n * @param {string} params.userId The UserID for the local user\n * @param {module:crypto} params.crypto crypto core\n * @param {module:crypto/OlmDevice} params.olmDevice olm.js wrapper\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n * @param {string=} params.roomId The ID of the room we will be receiving\n * from. Null for to-device events.\n */\n\nvar DecryptionAlgorithm = function () {\n function DecryptionAlgorithm(params) {\n (0, _classCallCheck3.default)(this, DecryptionAlgorithm);\n\n this._userId = params.userId;\n this._crypto = params.crypto;\n this._olmDevice = params.olmDevice;\n this._baseApis = params.baseApis;\n this._roomId = params.roomId;\n }\n\n /**\n * Decrypt an event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#decryptEvent\n * @abstract\n *\n * @param {MatrixEvent} event undecrypted event\n *\n * @return {Promise<module:crypto~EventDecryptionResult>} promise which\n * resolves once we have finished decrypting. Rejects with an\n * `algorithms.DecryptionError` if there is a problem decrypting the event.\n */\n\n /**\n * Handle a key event\n *\n * @method module:crypto/algorithms/base.DecryptionAlgorithm#onRoomKeyEvent\n *\n * @param {module:models/event.MatrixEvent} params event key event\n */\n\n\n (0, _createClass3.default)(DecryptionAlgorithm, [{\n key: 'onRoomKeyEvent',\n value: function onRoomKeyEvent(params) {}\n // ignore by default\n\n\n /**\n * Import a room key\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\n\n }, {\n key: 'importRoomKey',\n value: function importRoomKey(session) {}\n // ignore by default\n\n\n /**\n * Determine if we have the keys necessary to respond to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n * @return {Promise<boolean>} true if we have the keys and could (theoretically) share\n * them; else false.\n */\n\n }, {\n key: 'hasKeysForKeyRequest',\n value: function hasKeysForKeyRequest(keyRequest) {\n return _bluebird2.default.resolve(false);\n }\n\n /**\n * Send the response to a room key request\n *\n * @param {module:crypto~IncomingRoomKeyRequest} keyRequest\n */\n\n }, {\n key: 'shareKeysWithDevice',\n value: function shareKeysWithDevice(keyRequest) {\n throw new Error(\"shareKeysWithDevice not supported for this DecryptionAlgorithm\");\n }\n }]);\n return DecryptionAlgorithm;\n}();\n\nexports.DecryptionAlgorithm = DecryptionAlgorithm; // https://github.com/jsdoc3/jsdoc/issues/1272\n\n/**\n * Exception thrown when decryption fails\n *\n * @alias module:crypto/algorithms/base.DecryptionError\n * @param {string} msg user-visible message describing the problem\n *\n * @param {Object=} details key/value pairs reported in the logs but not shown\n * to the user.\n *\n * @extends Error\n */\n\nvar DecryptionError = function (_Error) {\n (0, _inherits3.default)(DecryptionError, _Error);\n\n function DecryptionError(code, msg, details) {\n (0, _classCallCheck3.default)(this, DecryptionError);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DecryptionError.__proto__ || (0, _getPrototypeOf2.default)(DecryptionError)).call(this, msg));\n\n _this.code = code;\n _this.name = 'DecryptionError';\n _this.detailedString = _detailedStringForDecryptionError(_this, details);\n return _this;\n }\n\n return DecryptionError;\n}(Error);\n\nexports.DecryptionError = DecryptionError; // https://github.com/jsdoc3/jsdoc/issues/1272\n\nfunction _detailedStringForDecryptionError(err, details) {\n var result = err.name + '[msg: ' + err.message;\n\n if (details) {\n result += ', ' + (0, _keys2.default)(details).map(function (k) {\n return k + ': ' + details[k];\n }).join(', ');\n }\n\n result += ']';\n\n return result;\n}\n\n/**\n * Exception thrown specifically when we want to warn the user to consider\n * the security of their conversation before continuing\n *\n * @param {string} msg message describing the problem\n * @param {Object} devices userId -> {deviceId -> object}\n * set of unknown devices per user we're warning about\n * @extends Error\n */\n\nvar UnknownDeviceError = exports.UnknownDeviceError = function (_Error2) {\n (0, _inherits3.default)(UnknownDeviceError, _Error2);\n\n function UnknownDeviceError(msg, devices) {\n (0, _classCallCheck3.default)(this, UnknownDeviceError);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (UnknownDeviceError.__proto__ || (0, _getPrototypeOf2.default)(UnknownDeviceError)).call(this, msg));\n\n _this2.name = \"UnknownDeviceError\";\n _this2.devices = devices;\n return _this2;\n }\n\n return UnknownDeviceError;\n}(Error);\n\n/**\n * Registers an encryption/decryption class for a particular algorithm\n *\n * @param {string} algorithm algorithm tag to register for\n *\n * @param {class} encryptor {@link\n * module:crypto/algorithms/base.EncryptionAlgorithm|EncryptionAlgorithm}\n * implementation\n *\n * @param {class} decryptor {@link\n * module:crypto/algorithms/base.DecryptionAlgorithm|DecryptionAlgorithm}\n * implementation\n */\n\n\nfunction registerAlgorithm(algorithm, encryptor, decryptor) {\n ENCRYPTION_CLASSES[algorithm] = encryptor;\n DECRYPTION_CLASSES[algorithm] = decryptor;\n}\n//# sourceMappingURL=base.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/deviceinfo\n */\n\n/**\n * Information about a user's device\n *\n * @constructor\n * @alias module:crypto/deviceinfo\n *\n * @property {string} deviceId the ID of this device\n *\n * @property {string[]} algorithms list of algorithms supported by this device\n *\n * @property {Object.<string,string>} keys a map from\n * <key type>:<id> -> <base64-encoded key>>\n *\n * @property {module:crypto/deviceinfo.DeviceVerification} verified\n * whether the device has been verified/blocked by the user\n *\n * @property {boolean} known\n * whether the user knows of this device's existence (useful when warning\n * the user that a user has added new devices)\n *\n * @property {Object} unsigned additional data from the homeserver\n *\n * @param {string} deviceId id of the device\n */\n\nfunction DeviceInfo(deviceId) {\n // you can't change the deviceId\n Object.defineProperty(this, 'deviceId', {\n enumerable: true,\n value: deviceId\n });\n\n this.algorithms = [];\n this.keys = {};\n this.verified = DeviceVerification.UNVERIFIED;\n this.known = false;\n this.unsigned = {};\n}\n\n/**\n * rehydrate a DeviceInfo from the session store\n *\n * @param {object} obj raw object from session store\n * @param {string} deviceId id of the device\n *\n * @return {module:crypto~DeviceInfo} new DeviceInfo\n */\nDeviceInfo.fromStorage = function (obj, deviceId) {\n var res = new DeviceInfo(deviceId);\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n res[prop] = obj[prop];\n }\n }\n return res;\n};\n\n/**\n * Prepare a DeviceInfo for JSON serialisation in the session store\n *\n * @return {object} deviceinfo with non-serialised members removed\n */\nDeviceInfo.prototype.toStorage = function () {\n return {\n algorithms: this.algorithms,\n keys: this.keys,\n verified: this.verified,\n known: this.known,\n unsigned: this.unsigned\n };\n};\n\n/**\n * Get the fingerprint for this device (ie, the Ed25519 key)\n *\n * @return {string} base64-encoded fingerprint of this device\n */\nDeviceInfo.prototype.getFingerprint = function () {\n return this.keys[\"ed25519:\" + this.deviceId];\n};\n\n/**\n * Get the identity key for this device (ie, the Curve25519 key)\n *\n * @return {string} base64-encoded identity key of this device\n */\nDeviceInfo.prototype.getIdentityKey = function () {\n return this.keys[\"curve25519:\" + this.deviceId];\n};\n\n/**\n * Get the configured display name for this device, if any\n *\n * @return {string?} displayname\n */\nDeviceInfo.prototype.getDisplayName = function () {\n return this.unsigned.device_display_name || null;\n};\n\n/**\n * Returns true if this device is blocked\n *\n * @return {Boolean} true if blocked\n */\nDeviceInfo.prototype.isBlocked = function () {\n return this.verified == DeviceVerification.BLOCKED;\n};\n\n/**\n * Returns true if this device is verified\n *\n * @return {Boolean} true if verified\n */\nDeviceInfo.prototype.isVerified = function () {\n return this.verified == DeviceVerification.VERIFIED;\n};\n\n/**\n * Returns true if this device is unverified\n *\n * @return {Boolean} true if unverified\n */\nDeviceInfo.prototype.isUnverified = function () {\n return this.verified == DeviceVerification.UNVERIFIED;\n};\n\n/**\n * Returns true if the user knows about this device's existence\n *\n * @return {Boolean} true if known\n */\nDeviceInfo.prototype.isKnown = function () {\n return this.known == true;\n};\n\n/**\n * @enum\n */\nDeviceInfo.DeviceVerification = {\n VERIFIED: 1,\n UNVERIFIED: 0,\n BLOCKED: -1\n};\n\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\n/** */\nmodule.exports = DeviceInfo;\n//# sourceMappingURL=deviceinfo.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _CallHandler = require('./CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Roles = require('./Roles');\n\nvar Roles = _interopRequireWildcard(_Roles);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nfunction textForMemberEvent(ev) {\n // XXX: SYJS-16 \"sender is sometimes null for join messages\"\n var senderName = ev.sender ? ev.sender.name : ev.getSender();\n var targetName = ev.target ? ev.target.name : ev.getStateKey();\n var prevContent = ev.getPrevContent();\n var content = ev.getContent();\n\n var ConferenceHandler = _CallHandler2.default.getConferenceHandler();\n var reason = content.reason ? (0, _languageHandler._t)('Reason') + ': ' + content.reason : '';\n switch (content.membership) {\n case 'invite':\n {\n var threePidContent = content.third_party_invite;\n if (threePidContent) {\n if (threePidContent.display_name) {\n return (0, _languageHandler._t)('%(targetName)s accepted the invitation for %(displayName)s.', {\n targetName: targetName,\n displayName: threePidContent.display_name\n });\n } else {\n return (0, _languageHandler._t)('%(targetName)s accepted an invitation.', { targetName: targetName });\n }\n } else {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('%(senderName)s requested a VoIP conference.', { senderName: senderName });\n } else {\n return (0, _languageHandler._t)('%(senderName)s invited %(targetName)s.', { senderName: senderName, targetName: targetName });\n }\n }\n }\n case 'ban':\n return (0, _languageHandler._t)('%(senderName)s banned %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n case 'join':\n if (prevContent && prevContent.membership === 'join') {\n if (prevContent.displayname && content.displayname && prevContent.displayname !== content.displayname) {\n return (0, _languageHandler._t)('%(oldDisplayName)s changed their display name to %(displayName)s.', {\n oldDisplayName: prevContent.displayname,\n displayName: content.displayname\n });\n } else if (!prevContent.displayname && content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s set their display name to %(displayName)s.', {\n senderName: ev.getSender(),\n displayName: content.displayname\n });\n } else if (prevContent.displayname && !content.displayname) {\n return (0, _languageHandler._t)('%(senderName)s removed their display name (%(oldDisplayName)s).', {\n senderName: senderName,\n oldDisplayName: prevContent.displayname\n });\n } else if (prevContent.avatar_url && !content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s removed their profile picture.', { senderName: senderName });\n } else if (prevContent.avatar_url && content.avatar_url && prevContent.avatar_url !== content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s changed their profile picture.', { senderName: senderName });\n } else if (!prevContent.avatar_url && content.avatar_url) {\n return (0, _languageHandler._t)('%(senderName)s set a profile picture.', { senderName: senderName });\n } else {\n // suppress null rejoins\n return '';\n }\n } else {\n if (!ev.target) console.warn(\"Join message has no target! -- \" + ev.getContent().state_key);\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference started.');\n } else {\n return (0, _languageHandler._t)('%(targetName)s joined the room.', { targetName: targetName });\n }\n }\n case 'leave':\n if (ev.getSender() === ev.getStateKey()) {\n if (ConferenceHandler && ConferenceHandler.isConferenceUser(ev.getStateKey())) {\n return (0, _languageHandler._t)('VoIP conference finished.');\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(targetName)s rejected the invitation.', { targetName: targetName });\n } else {\n return (0, _languageHandler._t)('%(targetName)s left the room.', { targetName: targetName });\n }\n } else if (prevContent.membership === \"ban\") {\n return (0, _languageHandler._t)('%(senderName)s unbanned %(targetName)s.', { senderName: senderName, targetName: targetName });\n } else if (prevContent.membership === \"join\") {\n return (0, _languageHandler._t)('%(senderName)s kicked %(targetName)s.', { senderName: senderName, targetName: targetName }) + ' ' + reason;\n } else if (prevContent.membership === \"invite\") {\n return (0, _languageHandler._t)('%(senderName)s withdrew %(targetName)s\\'s invitation.', {\n senderName: senderName,\n targetName: targetName\n }) + ' ' + reason;\n } else {\n return (0, _languageHandler._t)('%(targetName)s left the room.', { targetName: targetName });\n }\n }\n}\n\nfunction textForTopicEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the topic to \"%(topic)s\".', {\n senderDisplayName: senderDisplayName,\n topic: ev.getContent().topic\n });\n}\n\nfunction textForRoomNameEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n\n if (!ev.getContent().name || ev.getContent().name.trim().length === 0) {\n return (0, _languageHandler._t)('%(senderDisplayName)s removed the room name.', { senderDisplayName: senderDisplayName });\n }\n return (0, _languageHandler._t)('%(senderDisplayName)s changed the room name to %(roomName)s.', {\n senderDisplayName: senderDisplayName,\n roomName: ev.getContent().name\n });\n}\n\nfunction textForServerACLEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var prevContent = ev.getPrevContent();\n var changes = [];\n var current = ev.getContent();\n var prev = {\n deny: Array.isArray(prevContent.deny) ? prevContent.deny : [],\n allow: Array.isArray(prevContent.allow) ? prevContent.allow : [],\n allow_ip_literals: !(prevContent.allow_ip_literals === false)\n };\n var text = \"\";\n if (prev.deny.length === 0 && prev.allow.length === 0) {\n text = senderDisplayName + ' set server ACLs for this room: ';\n } else {\n text = senderDisplayName + ' changed the server ACLs for this room: ';\n }\n\n if (!Array.isArray(current.allow)) {\n current.allow = [];\n }\n /* If we know for sure everyone is banned, don't bother showing the diff view */\n if (current.allow.length === 0) {\n return text + \"🎉 All servers are banned from participating! This room can no longer be used.\";\n }\n\n if (!Array.isArray(current.deny)) {\n current.deny = [];\n }\n\n var bannedServers = current.deny.filter(function (srv) {\n return typeof srv === 'string' && !prev.deny.includes(srv);\n });\n var unbannedServers = prev.deny.filter(function (srv) {\n return typeof srv === 'string' && !current.deny.includes(srv);\n });\n var allowedServers = current.allow.filter(function (srv) {\n return typeof srv === 'string' && !prev.allow.includes(srv);\n });\n var unallowedServers = prev.allow.filter(function (srv) {\n return typeof srv === 'string' && !current.allow.includes(srv);\n });\n\n if (bannedServers.length > 0) {\n changes.push('Servers matching ' + bannedServers.join(\", \") + ' are now banned.');\n }\n\n if (unbannedServers.length > 0) {\n changes.push('Servers matching ' + unbannedServers.join(\", \") + ' were removed from the ban list.');\n }\n\n if (allowedServers.length > 0) {\n changes.push('Servers matching ' + allowedServers.join(\", \") + ' are now allowed.');\n }\n\n if (unallowedServers.length > 0) {\n changes.push('Servers matching ' + unallowedServers.join(\", \") + ' were removed from the allowed list.');\n }\n\n if (prev.allow_ip_literals !== current.allow_ip_literals) {\n var allowban = current.allow_ip_literals ? \"allowed\" : \"banned\";\n changes.push('Participating from a server using an IP literal hostname is now ' + allowban + '.');\n }\n\n return text + changes.join(\" \");\n}\n\nfunction textForMessageEvent(ev) {\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var message = senderDisplayName + ': ' + ev.getContent().body;\n if (ev.getContent().msgtype === \"m.emote\") {\n message = \"* \" + senderDisplayName + \" \" + message;\n } else if (ev.getContent().msgtype === \"m.image\") {\n message = (0, _languageHandler._t)('%(senderDisplayName)s sent an image.', { senderDisplayName: senderDisplayName });\n }\n return message;\n}\n\nfunction textForRoomAliasesEvent(ev) {\n // An alternative implementation of this as a first-class event can be found at\n // https://github.com/matrix-org/matrix-react-sdk/blob/dc7212ec2bd12e1917233ed7153b3e0ef529a135/src/components/views/messages/RoomAliasesEvent.js\n // This feels a bit overkill though, and it's not clear the i18n really needs it\n // so instead it's landing as a simple textual event.\n\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAliases = ev.getPrevContent().aliases || [];\n var newAliases = ev.getContent().aliases || [];\n\n var addedAliases = newAliases.filter(function (x) {\n return !oldAliases.includes(x);\n });\n var removedAliases = oldAliases.filter(function (x) {\n return !newAliases.includes(x);\n });\n\n if (!addedAliases.length && !removedAliases.length) {\n return '';\n }\n\n if (addedAliases.length && !removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: addedAliases.length,\n addedAddresses: addedAliases.join(', ')\n });\n } else if (!addedAliases.length && removedAliases.length) {\n return (0, _languageHandler._t)('%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n count: removedAliases.length,\n removedAddresses: removedAliases.join(', ')\n });\n } else {\n return (0, _languageHandler._t)('%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.', {\n senderName: senderName,\n addedAddresses: addedAliases.join(', '),\n removedAddresses: removedAliases.join(', ')\n });\n }\n}\n\nfunction textForCanonicalAliasEvent(ev) {\n var senderName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var oldAlias = ev.getPrevContent().alias;\n var newAlias = ev.getContent().alias;\n\n if (newAlias) {\n return (0, _languageHandler._t)('%(senderName)s set the main address for this room to %(address)s.', {\n senderName: senderName,\n address: ev.getContent().alias\n });\n } else if (oldAlias) {\n return (0, _languageHandler._t)('%(senderName)s removed the main address for this room.', {\n senderName: senderName\n });\n }\n}\n\nfunction textForCallAnswerEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? '' : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s answered the call.', { senderName: senderName }) + ' ' + supported;\n}\n\nfunction textForCallHangupEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n var eventContent = event.getContent();\n var reason = \"\";\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n reason = (0, _languageHandler._t)('(not supported by this browser)');\n } else if (eventContent.reason) {\n if (eventContent.reason === \"ice_failed\") {\n reason = (0, _languageHandler._t)('(could not connect media)');\n } else if (eventContent.reason === \"invite_timeout\") {\n reason = (0, _languageHandler._t)('(no answer)');\n } else if (eventContent.reason === \"user hangup\") {\n // workaround for https://github.com/vector-im/riot-web/issues/5178\n // it seems Android randomly sets a reason of \"user hangup\" which is\n // interpreted as an error code :(\n // https://github.com/vector-im/riot-android/issues/2623\n reason = '';\n } else {\n reason = (0, _languageHandler._t)('(unknown failure: %(reason)s)', { reason: eventContent.reason });\n }\n }\n return (0, _languageHandler._t)('%(senderName)s ended the call.', { senderName: senderName }) + ' ' + reason;\n}\n\nfunction textForCallInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : (0, _languageHandler._t)('Someone');\n // FIXME: Find a better way to determine this from the event?\n var callType = \"voice\";\n if (event.getContent().offer && event.getContent().offer.sdp && event.getContent().offer.sdp.indexOf('m=video') !== -1) {\n callType = \"video\";\n }\n var supported = _MatrixClientPeg2.default.get().supportsVoip() ? \"\" : (0, _languageHandler._t)('(not supported by this browser)');\n return (0, _languageHandler._t)('%(senderName)s placed a %(callType)s call.', { senderName: senderName, callType: callType }) + ' ' + supported;\n}\n\nfunction textForThreePidInviteEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n return (0, _languageHandler._t)('%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.', {\n senderName: senderName,\n targetDisplayName: event.getContent().display_name\n });\n}\n\nfunction textForHistoryVisibilityEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n switch (event.getContent().history_visibility) {\n case 'invited':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they are invited.', { senderName: senderName });\n case 'joined':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members, ' + 'from the point they joined.', { senderName: senderName });\n case 'shared':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to all room members.', { senderName: senderName });\n case 'world_readable':\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to anyone.', { senderName: senderName });\n default:\n return (0, _languageHandler._t)('%(senderName)s made future room history visible to unknown (%(visibility)s).', {\n senderName: senderName,\n visibility: event.getContent().history_visibility\n });\n }\n}\n\nfunction textForEncryptionEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n return (0, _languageHandler._t)('%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).', {\n senderName: senderName,\n algorithm: event.getContent().algorithm\n });\n}\n\n// Currently will only display a change if a user's power level is changed\nfunction textForPowerEvent(event) {\n var senderName = event.sender ? event.sender.name : event.getSender();\n if (!event.getPrevContent() || !event.getPrevContent().users) {\n return '';\n }\n var userDefault = event.getContent().users_default || 0;\n // Construct set of userIds\n var users = [];\n (0, _keys2.default)(event.getContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n (0, _keys2.default)(event.getPrevContent().users).forEach(function (userId) {\n if (users.indexOf(userId) === -1) users.push(userId);\n });\n var diff = [];\n // XXX: This is also surely broken for i18n\n users.forEach(function (userId) {\n // Previous power level\n var from = event.getPrevContent().users[userId];\n // Current power level\n var to = event.getContent().users[userId];\n if (to !== from) {\n diff.push((0, _languageHandler._t)('%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s', {\n userId: userId,\n fromPowerLevel: Roles.textualPowerLevel(from, userDefault),\n toPowerLevel: Roles.textualPowerLevel(to, userDefault)\n }));\n }\n });\n if (!diff.length) {\n return '';\n }\n return (0, _languageHandler._t)('%(senderName)s changed the power level of %(powerLevelDiffText)s.', {\n senderName: senderName,\n powerLevelDiffText: diff.join(\", \")\n });\n}\n\nfunction textForPinnedEvent(event) {\n var senderName = event.getSender();\n return (0, _languageHandler._t)(\"%(senderName)s changed the pinned messages for the room.\", { senderName: senderName });\n}\n\nfunction textForWidgetEvent(event) {\n var senderName = event.getSender();\n\n var _event$getPrevContent = event.getPrevContent(),\n prevName = _event$getPrevContent.name,\n prevType = _event$getPrevContent.type,\n prevUrl = _event$getPrevContent.url;\n\n var _ref = event.getContent() || {},\n name = _ref.name,\n type = _ref.type,\n url = _ref.url;\n\n var widgetName = name || prevName || type || prevType || '';\n // Apply sentence case to widget name\n if (widgetName && widgetName.length > 0) {\n widgetName = widgetName[0].toUpperCase() + widgetName.slice(1) + ' ';\n }\n\n // If the widget was removed, its content should be {}, but this is sufficiently\n // equivalent to that condition.\n if (url) {\n if (prevUrl) {\n return (0, _languageHandler._t)('%(widgetName)s widget modified by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget added by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n } else {\n return (0, _languageHandler._t)('%(widgetName)s widget removed by %(senderName)s', {\n widgetName: widgetName, senderName: senderName\n });\n }\n}\n\nvar handlers = {\n 'm.room.message': textForMessageEvent,\n 'm.call.invite': textForCallInviteEvent,\n 'm.call.answer': textForCallAnswerEvent,\n 'm.call.hangup': textForCallHangupEvent\n};\n\nvar stateHandlers = {\n 'm.room.aliases': textForRoomAliasesEvent,\n 'm.room.canonical_alias': textForCanonicalAliasEvent,\n 'm.room.name': textForRoomNameEvent,\n 'm.room.topic': textForTopicEvent,\n 'm.room.member': textForMemberEvent,\n 'm.room.third_party_invite': textForThreePidInviteEvent,\n 'm.room.history_visibility': textForHistoryVisibilityEvent,\n 'm.room.encryption': textForEncryptionEvent,\n 'm.room.power_levels': textForPowerEvent,\n 'm.room.pinned_events': textForPinnedEvent,\n 'm.room.server_acl': textForServerACLEvent,\n\n 'im.vector.modular.widgets': textForWidgetEvent\n};\n\nmodule.exports = {\n textForEvent: function textForEvent(ev) {\n var handler = (ev.isState() ? stateHandlers : handlers)[ev.getType()];\n if (handler) return handler(ev);\n return '';\n }\n};\n//# sourceMappingURL=TextForEvent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getUnknownDevicesForRoom = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\n/**\n * Gets all crypto devices in a room that are marked neither known\n * nor verified.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nvar getUnknownDevicesForRoom = exports.getUnknownDevicesForRoom = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(matrixClient, room) {\n var roomMembers, devices, unknownDevices;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers().map(function (m) {\n return m.userId;\n }));\n\n case 2:\n roomMembers = _context.sent;\n _context.next = 5;\n return (0, _bluebird.resolve)(matrixClient.downloadKeys(roomMembers, false));\n\n case 5:\n devices = _context.sent;\n unknownDevices = {};\n // This is all devices in this room, so find the unknown ones.\n\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n var device = devices[userId][deviceId];\n\n if (device.isUnverified() && !device.isKnown()) {\n if (unknownDevices[userId] === undefined) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n return _context.abrupt('return', unknownDevices);\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getUnknownDevicesForRoom(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nexports.markAllDevicesKnown = markAllDevicesKnown;\nexports.showUnknownDeviceDialogForMessages = showUnknownDeviceDialogForMessages;\nexports.showUnknownDeviceDialogForCalls = showUnknownDeviceDialogForCalls;\n\nvar _Resend = require('./Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Mark all given devices as 'known'\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Object} devices Map from userid -> deviceid -> deviceinfo\n */\nfunction markAllDevicesKnown(matrixClient, devices) {\n (0, _keys2.default)(devices).forEach(function (userId) {\n (0, _keys2.default)(devices[userId]).map(function (deviceId) {\n matrixClient.setDeviceKnown(userId, deviceId, true);\n });\n });\n} /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction focusComposer() {\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that messages they sent to this room have not been sent due to unknown devices\n * being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n */\nfunction showUnknownDeviceDialogForMessages(matrixClient, room) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var onSendClicked = function onSendClicked() {\n _Resend2.default.resendUnsentEvents(room);\n };\n\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: (0, _languageHandler._t)(\"Send anyway\"),\n sendLabel: (0, _languageHandler._t)(\"Send\"),\n onSend: onSendClicked,\n onFinished: focusComposer\n }, 'mx_Dialog_unknownDevice');\n });\n}\n\n/**\n * Show the UnknownDeviceDialog for a given room. The dialog will inform the user\n * that a call they tried to place or answer in the room couldn't be placed or\n * answered due to unknown devices being present.\n *\n * @param {MatrixClient} matrixClient A MatrixClient\n * @param {Room} room js-sdk room object representing the room\n * @param {func} sendAnyway Function called when the 'call anyway' or 'call'\n * button is pressed. This should attempt to place or answer the call again.\n * @param {string} sendAnywayLabel Label for the button displayed to retry the call\n * when unknown devices are still present (eg. \"Call Anyway\")\n * @param {string} sendLabel Label for the button displayed to retry the call\n * after all devices have been verified (eg. \"Call\")\n */\nfunction showUnknownDeviceDialogForCalls(matrixClient, room, sendAnyway, sendAnywayLabel, sendLabel) {\n getUnknownDevicesForRoom(matrixClient, room).then(function (unknownDevices) {\n var UnknownDeviceDialog = _index2.default.getComponent('dialogs.UnknownDeviceDialog');\n _Modal2.default.createTrackedDialog('Unknown Device Dialog', '', UnknownDeviceDialog, {\n room: room,\n devices: unknownDevices,\n sendAnywayLabel: sendAnywayLabel,\n sendLabel: sendLabel,\n onSend: sendAnyway\n }, 'mx_Dialog_unknownDevice');\n });\n}\n//# sourceMappingURL=cryptodevices.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport Promise from 'bluebird';\nimport request from 'browser-request';\n\nexport async function getVectorConfig(relativeLocation) {\n if (relativeLocation === undefined) relativeLocation = '';\n if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';\n try {\n const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);\n // 404s succeed with an empty json config, so check that there are keys\n if (Object.keys(configJson).length === 0) {\n throw new Error(); // throw to enter the catch\n }\n return configJson;\n } catch (e) {\n return await getConfig(relativeLocation + \"config.json\");\n }\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n processNextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = _isUint8Array(chunk) && !state.objectMode;\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n processNextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n processNextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n processNextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return -1;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// UTF-8 replacement characters ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd'.repeat(p);\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd'.repeat(p + 1);\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd'.repeat(p + 2);\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character for each buffered byte of a (partial)\n// character needs to be added to the output.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd'.repeat(this.lastTotal - this.lastNeed);\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}","var encode = require(\"./lib/encode.js\"),\n decode = require(\"./lib/decode.js\");\n\nexports.decode = function(data, level){\n\treturn (!level || level <= 0 ? decode.XML : decode.HTML)(data);\n};\n\nexports.decodeStrict = function(data, level){\n\treturn (!level || level <= 0 ? decode.XML : decode.HTMLStrict)(data);\n};\n\nexports.encode = function(data, level){\n\treturn (!level || level <= 0 ? encode.XML : encode.HTML)(data);\n};\n\nexports.encodeXML = encode.XML;\n\nexports.encodeHTML4 =\nexports.encodeHTML5 =\nexports.encodeHTML = encode.HTML;\n\nexports.decodeXML =\nexports.decodeXMLStrict = decode.XML;\n\nexports.decodeHTML4 =\nexports.decodeHTML5 =\nexports.decodeHTML = decode.HTML;\n\nexports.decodeHTML4Strict =\nexports.decodeHTML5Strict =\nexports.decodeHTMLStrict = decode.HTMLStrict;\n\nexports.escape = encode.escape;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS declaration.\n *\n * @extends Node\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.type //=> 'decl'\n * decl.toString() //=> ' color: black'\n */\nvar Declaration = function (_Node) {\n _inherits(Declaration, _Node);\n\n function Declaration(defaults) {\n _classCallCheck(this, Declaration);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'decl';\n return _this;\n }\n\n /**\n * @memberof Declaration#\n * @member {string} prop - the declaration’s property name\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.prop //=> 'color'\n */\n\n /**\n * @memberof Declaration#\n * @member {string} value - the declaration’s value\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * const decl = root.first.first;\n * decl.value //=> 'black'\n */\n\n /**\n * @memberof Declaration#\n * @member {boolean} important - `true` if the declaration\n * has an !important annotation.\n *\n * @example\n * const root = postcss.parse('a { color: black !important; color: red }');\n * root.first.first.important //=> true\n * root.first.last.important //=> undefined\n */\n\n /**\n * @memberof Declaration#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `between`: the symbols between the property and value\n * for declarations.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans declaration from comments and extra spaces,\n * but it stores origin content in raws properties.\n * As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n return Declaration;\n}(_node2.default);\n\nexports.default = Declaration;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlY2xhcmF0aW9uLmVzNiJdLCJuYW1lcyI6WyJEZWNsYXJhdGlvbiIsImRlZmF1bHRzIiwidHlwZSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7O0lBV01BLFc7OztBQUVGLHVCQUFZQyxRQUFaLEVBQXNCO0FBQUE7O0FBQUEsaURBQ2xCLGlCQUFNQSxRQUFOLENBRGtCOztBQUVsQixVQUFLQyxJQUFMLEdBQVksTUFBWjtBQUZrQjtBQUdyQjs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7Ozs7Ozs7O0FBV0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdENzQkMsYzs7a0JBaUVYSCxXIiwiZmlsZSI6ImRlY2xhcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE5vZGUgZnJvbSAnLi9ub2RlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgQ1NTIGRlY2xhcmF0aW9uLlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2EgeyBjb2xvcjogYmxhY2sgfScpO1xuICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3Q7XG4gKiBkZWNsLnR5cGUgICAgICAgLy89PiAnZGVjbCdcbiAqIGRlY2wudG9TdHJpbmcoKSAvLz0+ICcgY29sb3I6IGJsYWNrJ1xuICovXG5jbGFzcyBEZWNsYXJhdGlvbiBleHRlbmRzIE5vZGUge1xuXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdHMpIHtcbiAgICAgICAgc3VwZXIoZGVmYXVsdHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGVjbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gcHJvcCAtIHRoZSBkZWNsYXJhdGlvbuKAmXMgcHJvcGVydHkgbmFtZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9Jyk7XG4gICAgICogY29uc3QgZGVjbCA9IHJvb3QuZmlyc3QuZmlyc3Q7XG4gICAgICogZGVjbC5wcm9wIC8vPT4gJ2NvbG9yJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gdmFsdWUgLSB0aGUgZGVjbGFyYXRpb27igJlzIHZhbHVlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrIH0nKTtcbiAgICAgKiBjb25zdCBkZWNsID0gcm9vdC5maXJzdC5maXJzdDtcbiAgICAgKiBkZWNsLnZhbHVlIC8vPT4gJ2JsYWNrJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge2Jvb2xlYW59IGltcG9ydGFudCAtIGB0cnVlYCBpZiB0aGUgZGVjbGFyYXRpb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gIWltcG9ydGFudCBhbm5vdGF0aW9uLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayAhaW1wb3J0YW50OyBjb2xvcjogcmVkIH0nKTtcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LmltcG9ydGFudCAvLz0+IHRydWVcbiAgICAgKiByb290LmZpcnN0Lmxhc3QuaW1wb3J0YW50ICAvLz0+IHVuZGVmaW5lZFxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIERlY2xhcmF0aW9uI1xuICAgICAqIEBtZW1iZXIge29iamVjdH0gcmF3cyAtIEluZm9ybWF0aW9uIHRvIGdlbmVyYXRlIGJ5dGUtdG8tYnl0ZSBlcXVhbFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUgc3RyaW5nIGFzIGl0IHdhcyBpbiB0aGUgb3JpZ2luIGlucHV0LlxuICAgICAqXG4gICAgICogRXZlcnkgcGFyc2VyIHNhdmVzIGl0cyBvd24gcHJvcGVydGllcyxcbiAgICAgKiBidXQgdGhlIGRlZmF1bHQgQ1NTIHBhcnNlciB1c2VzOlxuICAgICAqXG4gICAgICogKiBgYmVmb3JlYDogdGhlIHNwYWNlIHN5bWJvbHMgYmVmb3JlIHRoZSBub2RlLiBJdCBhbHNvIHN0b3JlcyBgKmBcbiAgICAgKiAgIGFuZCBgX2Agc3ltYm9scyBiZWZvcmUgdGhlIGRlY2xhcmF0aW9uIChJRSBoYWNrKS5cbiAgICAgKiAqIGBiZXR3ZWVuYDogdGhlIHN5bWJvbHMgYmV0d2VlbiB0aGUgcHJvcGVydHkgYW5kIHZhbHVlXG4gICAgICogICBmb3IgZGVjbGFyYXRpb25zLlxuICAgICAqICogYGltcG9ydGFudGA6IHRoZSBjb250ZW50IG9mIHRoZSBpbXBvcnRhbnQgc3RhdGVtZW50LFxuICAgICAqICAgaWYgaXQgaXMgbm90IGp1c3QgYCFpbXBvcnRhbnRgLlxuICAgICAqXG4gICAgICogUG9zdENTUyBjbGVhbnMgZGVjbGFyYXRpb24gZnJvbSBjb21tZW50cyBhbmQgZXh0cmEgc3BhY2VzLFxuICAgICAqIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3cyBwcm9wZXJ0aWVzLlxuICAgICAqIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBEZWNsYXJhdGlvbjtcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _warnOnce = require('./warn-once');\n\nvar _warnOnce2 = _interopRequireDefault(_warnOnce);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar cloneNode = function cloneNode(obj, parent) {\n var cloned = new obj.constructor();\n\n for (var i in obj) {\n if (!obj.hasOwnProperty(i)) continue;\n var value = obj[i];\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n if (i === 'parent' && type === 'object') {\n if (parent) cloned[i] = parent;\n } else if (i === 'source') {\n cloned[i] = value;\n } else if (value instanceof Array) {\n cloned[i] = value.map(function (j) {\n return cloneNode(j, cloned);\n });\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value);\n cloned[i] = value;\n }\n }\n\n return cloned;\n};\n\n/**\n * All node classes inherit the following common methods.\n *\n * @abstract\n */\n\nvar Node = function () {\n\n /**\n * @param {object} [defaults] - value for node properties\n */\n function Node() {\n var defaults = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Node);\n\n this.raws = {};\n if ((typeof defaults === 'undefined' ? 'undefined' : _typeof(defaults)) !== 'object' && typeof defaults !== 'undefined') {\n throw new Error('PostCSS nodes constructor accepts object, not ' + JSON.stringify(defaults));\n }\n for (var name in defaults) {\n this[name] = defaults[name];\n }\n }\n\n /**\n * Returns a CssSyntaxError instance containing the original position\n * of the node in the source, showing line and column numbers and also\n * a small excerpt to facilitate debugging.\n *\n * If present, an input source map will be used to get the original position\n * of the source, even from a previous compilation step\n * (e.g., from Sass compilation).\n *\n * This method produces very useful error messages.\n *\n * @param {string} message - error description\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this error.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the error\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the error\n *\n * @return {CssSyntaxError} error object to throw it\n *\n * @example\n * if ( !variables[name] ) {\n * throw decl.error('Unknown variable ' + name, { word: name });\n * // CssSyntaxError: postcss-vars:a.sass:4:3: Unknown variable $black\n * // color: $black\n * // a\n * // ^\n * // background: white\n * }\n */\n\n\n Node.prototype.error = function error(message) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.source) {\n var pos = this.positionBy(opts);\n return this.source.input.error(message, pos.line, pos.column, opts);\n } else {\n return new _cssSyntaxError2.default(message);\n }\n };\n\n /**\n * This method is provided as a convenience wrapper for {@link Result#warn}.\n *\n * @param {Result} result - the {@link Result} instance\n * that will receive the warning\n * @param {string} text - warning message\n * @param {object} [opts] - options\n * @param {string} opts.plugin - plugin name that created this warning.\n * PostCSS will set it automatically.\n * @param {string} opts.word - a word inside a node’s string that should\n * be highlighted as the source of the warning\n * @param {number} opts.index - an index inside a node’s string that should\n * be highlighted as the source of the warning\n *\n * @return {Warning} created warning object\n *\n * @example\n * const plugin = postcss.plugin('postcss-deprecated', () => {\n * return (root, result) => {\n * root.walkDecls('bad', decl => {\n * decl.warn(result, 'Deprecated property bad');\n * });\n * };\n * });\n */\n\n\n Node.prototype.warn = function warn(result, text, opts) {\n var data = { node: this };\n for (var i in opts) {\n data[i] = opts[i];\n }return result.warn(text, data);\n };\n\n /**\n * Removes the node from its parent and cleans the parent properties\n * from the node and its children.\n *\n * @example\n * if ( decl.prop.match(/^-webkit-/) ) {\n * decl.remove();\n * }\n *\n * @return {Node} node to make calls chain\n */\n\n\n Node.prototype.remove = function remove() {\n if (this.parent) {\n this.parent.removeChild(this);\n }\n this.parent = undefined;\n return this;\n };\n\n /**\n * Returns a CSS string representing the node.\n *\n * @param {stringifier|syntax} [stringifier] - a syntax to use\n * in string generation\n *\n * @return {string} CSS string of this node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {}\"\n */\n\n\n Node.prototype.toString = function toString() {\n var stringifier = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _stringify2.default;\n\n if (stringifier.stringify) stringifier = stringifier.stringify;\n var result = '';\n stringifier(this, function (i) {\n result += i;\n });\n return result;\n };\n\n /**\n * Returns a clone of the node.\n *\n * The resulting cloned node and its (cloned) children will have\n * a clean parent and code style properties.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * const cloned = decl.clone({ prop: '-moz-' + decl.prop });\n * cloned.raws.before //=> undefined\n * cloned.parent //=> undefined\n * cloned.toString() //=> -moz-transform: scale(0)\n *\n * @return {Node} clone of the node\n */\n\n\n Node.prototype.clone = function clone() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = cloneNode(this);\n for (var name in overrides) {\n cloned[name] = overrides[name];\n }\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * before the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @example\n * decl.cloneBefore({ prop: '-moz-' + decl.prop });\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneBefore = function cloneBefore() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertBefore(this, cloned);\n return cloned;\n };\n\n /**\n * Shortcut to clone the node and insert the resulting cloned node\n * after the current node.\n *\n * @param {object} [overrides] - new properties to override in the clone.\n *\n * @return {Node} - new node\n */\n\n\n Node.prototype.cloneAfter = function cloneAfter() {\n var overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var cloned = this.clone(overrides);\n this.parent.insertAfter(this, cloned);\n return cloned;\n };\n\n /**\n * Inserts node(s) before the current node and removes the current node.\n *\n * @param {...Node} nodes - node(s) to replace current one\n *\n * @example\n * if ( atrule.name == 'mixin' ) {\n * atrule.replaceWith(mixinRules[atrule.params]);\n * }\n *\n * @return {Node} current node to methods chain\n */\n\n\n Node.prototype.replaceWith = function replaceWith() {\n if (this.parent) {\n for (var _len = arguments.length, nodes = Array(_len), _key = 0; _key < _len; _key++) {\n nodes[_key] = arguments[_key];\n }\n\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n this.parent.insertBefore(this, node);\n }\n\n this.remove();\n }\n\n return this;\n };\n\n Node.prototype.moveTo = function moveTo(newParent) {\n (0, _warnOnce2.default)('Node#moveTo was deprecated. Use Container#append.');\n this.cleanRaws(this.root() === newParent.root());\n this.remove();\n newParent.append(this);\n return this;\n };\n\n Node.prototype.moveBefore = function moveBefore(otherNode) {\n (0, _warnOnce2.default)('Node#moveBefore was deprecated. Use Node#before.');\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertBefore(otherNode, this);\n return this;\n };\n\n Node.prototype.moveAfter = function moveAfter(otherNode) {\n (0, _warnOnce2.default)('Node#moveAfter was deprecated. Use Node#after.');\n this.cleanRaws(this.root() === otherNode.root());\n this.remove();\n otherNode.parent.insertAfter(otherNode, this);\n return this;\n };\n\n /**\n * Returns the next child of the node’s parent.\n * Returns `undefined` if the current node is the last child.\n *\n * @return {Node|undefined} next node\n *\n * @example\n * if ( comment.text === 'delete next' ) {\n * const next = comment.next();\n * if ( next ) {\n * next.remove();\n * }\n * }\n */\n\n\n Node.prototype.next = function next() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index + 1];\n };\n\n /**\n * Returns the previous child of the node’s parent.\n * Returns `undefined` if the current node is the first child.\n *\n * @return {Node|undefined} previous node\n *\n * @example\n * const annotation = decl.prev();\n * if ( annotation.type == 'comment' ) {\n * readAnnotation(annotation.text);\n * }\n */\n\n\n Node.prototype.prev = function prev() {\n if (!this.parent) return undefined;\n var index = this.parent.index(this);\n return this.parent.nodes[index - 1];\n };\n\n /**\n * Insert new node before current node to current node’s parent.\n *\n * Just alias for `node.parent.insertBefore(node, add)`.\n *\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain.\n *\n * @example\n * decl.before('content: \"\"');\n */\n\n\n Node.prototype.before = function before(add) {\n this.parent.insertBefore(this, add);\n return this;\n };\n\n /**\n * Insert new node after current node to current node’s parent.\n *\n * Just alias for `node.parent.insertAfter(node, add)`.\n *\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain.\n *\n * @example\n * decl.after('color: black');\n */\n\n\n Node.prototype.after = function after(add) {\n this.parent.insertAfter(this, add);\n return this;\n };\n\n Node.prototype.toJSON = function toJSON() {\n var fixed = {};\n\n for (var name in this) {\n if (!this.hasOwnProperty(name)) continue;\n if (name === 'parent') continue;\n var value = this[name];\n\n if (value instanceof Array) {\n fixed[name] = value.map(function (i) {\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && i.toJSON) {\n return i.toJSON();\n } else {\n return i;\n }\n });\n } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.toJSON) {\n fixed[name] = value.toJSON();\n } else {\n fixed[name] = value;\n }\n }\n\n return fixed;\n };\n\n /**\n * Returns a {@link Node#raws} value. If the node is missing\n * the code style property (because the node was manually built or cloned),\n * PostCSS will try to autodetect the code style property by looking\n * at other nodes in the tree.\n *\n * @param {string} prop - name of code style property\n * @param {string} [defaultType] - name of default value, it can be missed\n * if the value is the same as prop\n *\n * @example\n * const root = postcss.parse('a { background: white }');\n * root.nodes[0].append({ prop: 'color', value: 'black' });\n * root.nodes[0].nodes[1].raws.before //=> undefined\n * root.nodes[0].nodes[1].raw('before') //=> ' '\n *\n * @return {string} code style value\n */\n\n\n Node.prototype.raw = function raw(prop, defaultType) {\n var str = new _stringifier2.default();\n return str.raw(this, prop, defaultType);\n };\n\n /**\n * Finds the Root instance of the node’s tree.\n *\n * @example\n * root.nodes[0].nodes[0].root() === root\n *\n * @return {Root} root parent\n */\n\n\n Node.prototype.root = function root() {\n var result = this;\n while (result.parent) {\n result = result.parent;\n }return result;\n };\n\n Node.prototype.cleanRaws = function cleanRaws(keepBetween) {\n delete this.raws.before;\n delete this.raws.after;\n if (!keepBetween) delete this.raws.between;\n };\n\n Node.prototype.positionInside = function positionInside(index) {\n var string = this.toString();\n var column = this.source.start.column;\n var line = this.source.start.line;\n\n for (var i = 0; i < index; i++) {\n if (string[i] === '\\n') {\n column = 1;\n line += 1;\n } else {\n column += 1;\n }\n }\n\n return { line: line, column: column };\n };\n\n Node.prototype.positionBy = function positionBy(opts) {\n var pos = this.source.start;\n if (opts.index) {\n pos = this.positionInside(opts.index);\n } else if (opts.word) {\n var index = this.toString().indexOf(opts.word);\n if (index !== -1) pos = this.positionInside(index);\n }\n return pos;\n };\n\n /**\n * @memberof Node#\n * @member {string} type - String representing the node’s type.\n * Possible values are `root`, `atrule`, `rule`,\n * `decl`, or `comment`.\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'black' }).type //=> 'decl'\n */\n\n /**\n * @memberof Node#\n * @member {Container} parent - the node’s parent node.\n *\n * @example\n * root.nodes[0].parent == root;\n */\n\n /**\n * @memberof Node#\n * @member {source} source - the input source of the node\n *\n * The property is used in source map generation.\n *\n * If you create a node manually (e.g., with `postcss.decl()`),\n * that node will not have a `source` property and will be absent\n * from the source map. For this reason, the plugin developer should\n * consider cloning nodes to create new ones (in which case the new node’s\n * source will reference the original, cloned node) or setting\n * the `source` property manually.\n *\n * ```js\n * // Bad\n * const prefixed = postcss.decl({\n * prop: '-moz-' + decl.prop,\n * value: decl.value\n * });\n *\n * // Good\n * const prefixed = decl.clone({ prop: '-moz-' + decl.prop });\n * ```\n *\n * ```js\n * if ( atrule.name == 'add-link' ) {\n * const rule = postcss.rule({ selector: 'a', source: atrule.source });\n * atrule.parent.insertBefore(atrule, rule);\n * }\n * ```\n *\n * @example\n * decl.source.input.from //=> '/home/ai/a.sass'\n * decl.source.start //=> { line: 10, column: 2 }\n * decl.source.end //=> { line: 10, column: 12 }\n */\n\n /**\n * @memberof Node#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node. It also stores `*`\n * and `_` symbols before the declaration (IE hack).\n * * `after`: the space symbols after the last child of the node\n * to the end of the node.\n * * `between`: the symbols between the property and value\n * for declarations, selector and `{` for rules, or last parameter\n * and `{` for at-rules.\n * * `semicolon`: contains true if the last child has\n * an (optional) semicolon.\n * * `afterName`: the space between the at-rule name and its parameters.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text\n * and <code>*/</code>.\n * * `important`: the content of the important statement,\n * if it is not just `!important`.\n *\n * PostCSS cleans selectors, declaration values and at-rule parameters\n * from comments and extra spaces, but it stores origin content in raws\n * properties. As such, if you don’t change a declaration’s value,\n * PostCSS will use the raw value with comments.\n *\n * @example\n * const root = postcss.parse('a {\\n color:black\\n}')\n * root.first.first.raws //=> { before: '\\n ', between: ':' }\n */\n\n return Node;\n}();\n\nexports.default = Node;\n\n/**\n * @typedef {object} position\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\n/**\n * @typedef {object} source\n * @property {Input} input - {@link Input} with input file\n * @property {position} start - The starting position of the node’s source\n * @property {position} end - The ending position of the node’s source\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGUuZXM2Il0sIm5hbWVzIjpbImNsb25lTm9kZSIsIm9iaiIsInBhcmVudCIsImNsb25lZCIsImNvbnN0cnVjdG9yIiwiaSIsImhhc093blByb3BlcnR5IiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJtYXAiLCJqIiwiTm9kZSIsImRlZmF1bHRzIiwicmF3cyIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsIm5hbWUiLCJlcnJvciIsIm1lc3NhZ2UiLCJvcHRzIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImlucHV0IiwibGluZSIsImNvbHVtbiIsIkNzc1N5bnRheEVycm9yIiwid2FybiIsInJlc3VsdCIsInRleHQiLCJkYXRhIiwibm9kZSIsInJlbW92ZSIsInJlbW92ZUNoaWxkIiwidW5kZWZpbmVkIiwidG9TdHJpbmciLCJzdHJpbmdpZmllciIsImNsb25lIiwib3ZlcnJpZGVzIiwiY2xvbmVCZWZvcmUiLCJpbnNlcnRCZWZvcmUiLCJjbG9uZUFmdGVyIiwiaW5zZXJ0QWZ0ZXIiLCJyZXBsYWNlV2l0aCIsIm5vZGVzIiwibW92ZVRvIiwibmV3UGFyZW50IiwiY2xlYW5SYXdzIiwicm9vdCIsImFwcGVuZCIsIm1vdmVCZWZvcmUiLCJvdGhlck5vZGUiLCJtb3ZlQWZ0ZXIiLCJuZXh0IiwiaW5kZXgiLCJwcmV2IiwiYmVmb3JlIiwiYWRkIiwiYWZ0ZXIiLCJ0b0pTT04iLCJmaXhlZCIsInJhdyIsInByb3AiLCJkZWZhdWx0VHlwZSIsInN0ciIsIlN0cmluZ2lmaWVyIiwia2VlcEJldHdlZW4iLCJiZXR3ZWVuIiwicG9zaXRpb25JbnNpZGUiLCJzdHJpbmciLCJzdGFydCIsIndvcmQiLCJpbmRleE9mIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxJQUFJQSxZQUFZLFNBQVpBLFNBQVksQ0FBVUMsR0FBVixFQUFlQyxNQUFmLEVBQXVCO0FBQ25DLFFBQUlDLFNBQVMsSUFBSUYs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LElBQW5CLEVBQTBCO0FBQ3RCc0IseUJBQVMsQ0FBVDtBQUNBRCx3QkFBUyxDQUFUO0FBQ0gsYUFIRCxNQUdPO0FBQ0hDLDBCQUFVLENBQVY7QUFDSDtBQUNKOztBQUVELGVBQU8sRUFBRUQsVUFBRixFQUFRQyxjQUFSLEVBQVA7QUFDSCxLOzttQkFFREgsVSx1QkFBV0gsSSxFQUFNO0FBQ2IsWUFBSUUsTUFBTSxLQUFLRCxNQUFMLENBQVlrRCxLQUF0QjtBQUNBLFlBQUtuRCxLQUFLbUMsS0FBVixFQUFrQjtBQUNkakMsa0JBQU0sS0FBSytDLGNBQUwsQ0FBb0JqRCxLQUFLbUMsS0FBekIsQ0FBTjtBQUNILFNBRkQsTUFFTyxJQUFLbkMsS0FBS29ELElBQVYsRUFBaUI7QUFDcEIsZ0JBQUlqQixRQUFRLEtBQUtuQixRQUFMLEdBQWdCcUMsT0FBaEIsQ0FBd0JyRCxLQUFLb0QsSUFBN0IsQ0FBWjtBQUNBLGdCQUFLakIsVUFBVSxDQUFDLENBQWhCLEVBQW9CakMsTUFBTSxLQUFLK0MsY0FBTCxDQUFvQmQsS0FBcEIsQ0FBTjtBQUN2QjtBQUNELGVBQU9qQyxHQUFQO0FBQ0gsSzs7QUFFRDs7Ozs7Ozs7OztBQVVBOzs7Ozs7OztBQVFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQW9DV1gsSTs7QUFFZjs7Ozs7O0FBTUEiLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InO1xuaW1wb3J0IFN0cmluZ2lmaWVyICAgIGZyb20gJy4vc3RyaW5naWZpZXInO1xuaW1wb3J0IHN0cmluZ2lmeSAgICAgIGZyb20gJy4vc3RyaW5naWZ5JztcbmltcG9ydCB3YXJuT25jZSAgICAgICBmcm9tICcuL3dhcm4tb25jZSc7XG5cbmxldCBjbG9uZU5vZGUgPSBmdW5jdGlvbiAob2JqLCBwYXJlbnQpIHtcbiAgICBsZXQgY2xvbmVkID0gbmV3IG9iai5jb25zdHJ1Y3RvcigpO1xuXG4gICAgZm9yICggbGV0IGkgaW4gb2JqICkge1xuICAgICAgICBpZiAoICFvYmouaGFzT3duUHJvcGVydHkoaSkgKSBjb250aW51ZTtcbiAgICAgICAgbGV0IHZhbHVlID0gb2JqW2ldO1xuICAgICAgICBsZXQgdHlwZSAgPSB0eXBlb2YgdmFsdWU7XG5cbiAgICAgICAgaWYgKCBpID09PSAncGFyZW50JyAmJiB0eXBlID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIGNsb25lZFtpXSA9IHBhcmVudDtcbiAgICAgICAgfSBlbHNlIGlmICggaSA9PT0gJ3NvdXJjZScgKSB7XG4gICAgICAgICAgICBjbG9uZWRbaV0gPSB2YWx1ZTtcbiAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgaW5zdGFuY2VvZiBBcnJheSApIHtcbiAgICAgICAgICAgIGNsb25lZFtpXSA9IHZhbHVlLm1hcCggaiA9PiBjbG9uZU5vZGUoaiwgY2xvbmVkKSApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCApIHZhbHVlID0gY2xvbmVOb2RlKHZhbHVlKTtcbiAgICAgICAgICAgIGNsb25lZFtpXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNsb25lZDtcbn07XG5cbi8qKlxuICogQWxsIG5vZGUgY2xhc3NlcyBpbmhlcml0IHRoZSBmb2xsb3dpbmcgY29tbW9uIG1ldGhvZHMuXG4gKlxuICogQGFic3RyYWN0XG4gKi9cbmNsYXNzIE5vZGUge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gLSB2YWx1ZSBmb3Igbm9kZSBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoZGVmYXVsdHMgPSB7IH0pIHtcbiAgICAgICAgdGhpcy5yYXdzID0geyB9O1xuICAgICAgICBpZiAoIHR5cGVvZiBkZWZhdWx0cyAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGRlZmF1bHRzICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAnUG9zdENTUyBub2RlcyBjb25zdHJ1Y3RvciBhY2NlcHRzIG9iamVjdCwgbm90ICcgK1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRzKSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yICggbGV0IG5hbWUgaW4gZGVmYXVsdHMgKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gZGVmYXVsdHNbbmFtZV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQ3NzU3ludGF4RXJyb3IgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgb3JpZ2luYWwgcG9zaXRpb25cbiAgICAgKiBvZiB0aGUgbm9kZSBpbiB0aGUgc291cmNlLCBzaG93aW5nIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGFuZCBhbHNvXG4gICAgICogYSBzbWFsbCBleGNlcnB0IHRvIGZhY2lsaXRhdGUgZGVidWdnaW5nLlxuICAgICAqXG4gICAgICogSWYgcHJlc2VudCwgYW4gaW5wdXQgc291cmNlIG1hcCB3aWxsIGJlIHVzZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBwb3NpdGlvblxuICAgICAqIG9mIHRoZSBzb3VyY2UsIGV2ZW4gZnJvbSBhIHByZXZpb3VzIGNvbXBpbGF0aW9uIHN0ZXBcbiAgICAgKiAoZS5nLiwgZnJvbSBTYXNzIGNvbXBpbGF0aW9uKS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIHByb2R1Y2VzIHZlcnkgdXNlZnVsIGVycm9yIG1lc3NhZ2VzLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgICAgIC0gZXJyb3IgZGVzY3JpcHRpb25cbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdICAgICAgLSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gcGx1Z2luIG5hbWUgdGhhdCBjcmVhdGVkIHRoaXMgZXJyb3IuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zdENTUyB3aWxsIHNldCBpdCBhdXRvbWF0aWNhbGx5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIGEgd29yZCBpbnNpZGUgYSBub2Rl4oCZcyBzdHJpbmcgdGhhdCBzaG91bGRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBoaWdobGlnaHRlZCBhcyB0aGUgc291cmNlIG9mIHRoZSBlcnJvclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIGVycm9yXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtDc3NTeW50YXhFcnJvcn0gZXJyb3Igb2JqZWN0IHRvIHRocm93IGl0XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGlmICggIXZhcmlhYmxlc1tuYW1lXSApIHtcbiAgICAgKiAgIHRocm93IGRlY2wuZXJyb3IoJ1Vua25vd24gdmFyaWFibGUgJyArIG5hbWUsIHsgd29yZDogbmFtZSB9KTtcbiAgICAgKiAgIC8vIENzc1N5bnRheEVycm9yOiBwb3N0Y3NzLXZhcnM6YS5zYXNzOjQ6MzogVW5rbm93biB2YXJpYWJsZSAkYmxhY2tcbiAgICAgKiAgIC8vICAgY29sb3I6ICRibGFja1xuICAgICAqICAgLy8gYVxuICAgICAqICAgLy8gICAgICAgICAgXlxuICAgICAqICAgLy8gICBiYWNrZ3JvdW5kOiB3aGl0ZVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBlcnJvcihtZXNzYWdlLCBvcHRzID0geyB9KSB7XG4gICAgICAgIGlmICggdGhpcy5zb3VyY2UgKSB7XG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5wb3NpdGlvbkJ5KG9wdHMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlLmlucHV0LmVycm9yKG1lc3NhZ2UsIHBvcy5saW5lLCBwb3MuY29sdW1uLCBvcHRzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIHdyYXBwZXIgZm9yIHtAbGluayBSZXN1bHQjd2Fybn0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Jlc3VsdH0gcmVzdWx0ICAgICAgLSB0aGUge0BsaW5rIFJlc3VsdH0gaW5zdGFuY2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICAtIHdhcm5pbmcgbWVzc2FnZVxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3B0c10gICAgICAtIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy5wbHVnaW4gLSBwbHVnaW4gbmFtZSB0aGF0IGNyZWF0ZWQgdGhpcyB3YXJuaW5nLlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3RDU1Mgd2lsbCBzZXQgaXQgYXV0b21hdGljYWxseS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0cy53b3JkICAgLSBhIHdvcmQgaW5zaWRlIGEgbm9kZeKAmXMgc3RyaW5nIHRoYXQgc2hvdWxkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaGlnaGxpZ2h0ZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGFuIGluZGV4IGluc2lkZSBhIG5vZGXigJlzIHN0cmluZyB0aGF0IHNob3VsZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGhpZ2hsaWdodGVkIGFzIHRoZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmd9IGNyZWF0ZWQgd2FybmluZyBvYmplY3RcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgcGx1Z2luID0gcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtZGVwcmVjYXRlZCcsICgpID0+IHtcbiAgICAgKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gICAgICogICAgIHJvb3Qud2Fsa0RlY2xzKCdiYWQnLCBkZWNsID0+IHtcbiAgICAgKiAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnRGVwcmVjYXRlZCBwcm9wZXJ0eSBiYWQnKTtcbiAgICAgKiAgICAgfSk7XG4gICAgICogICB9O1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHdhcm4ocmVzdWx0LCB0ZXh0LCBvcHRzKSB7XG4gICAgICAgIGxldCBkYXRhID0geyBub2RlOiB0aGlzIH07XG4gICAgICAgIGZvciAoIGxldCBpIGluIG9wdHMgKSBkYXRhW2ldID0gb3B0c1tpXTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC53YXJuKHRleHQsIGRhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgdGhlIG5vZGUgZnJvbSBpdHMgcGFyZW50IGFuZCBjbGVhbnMgdGhlIHBhcmVudCBwcm9wZXJ0aWVzXG4gICAgICogZnJvbSB0aGUgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoIGRlY2wucHJvcC5tYXRjaCgvXi13ZWJraXQtLykgKSB7XG4gICAgICogICBkZWNsLnJlbW92ZSgpO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IG5vZGUgdG8gbWFrZSBjYWxscyBjaGFpblxuICAgICAqL1xuICAgIHJlbW92ZSgpIHtcbiAgICAgICAgaWYgKCB0aGlzLnBhcmVudCApIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFyZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgQ1NTIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG5vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ2lmaWVyfHN5bnRheH0gW3N0cmluZ2lmaWVyXSAtIGEgc3ludGF4IHRvIHVzZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc3RyaW5nIGdlbmVyYXRpb25cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gQ1NTIHN0cmluZyBvZiB0aGlzIG5vZGVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5ydWxlKHsgc2VsZWN0b3I6ICdhJyB9KS50b1N0cmluZygpIC8vPT4gXCJhIHt9XCJcbiAgICAgKi9cbiAgICB0b1N0cmluZyhzdHJpbmdpZmllciA9IHN0cmluZ2lmeSkge1xuICAgICAgICBpZiAoIHN0cmluZ2lmaWVyLnN0cmluZ2lmeSApIHN0cmluZ2lmaWVyID0gc3RyaW5naWZpZXIuc3RyaW5naWZ5O1xuICAgICAgICBsZXQgcmVzdWx0ICA9ICcnO1xuICAgICAgICBzdHJpbmdpZmllcih0aGlzLCBpID0+IHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICpcbiAgICAgKiBUaGUgcmVzdWx0aW5nIGNsb25lZCBub2RlIGFuZCBpdHMgKGNsb25lZCkgY2hpbGRyZW4gd2lsbCBoYXZlXG4gICAgICogYSBjbGVhbiBwYXJlbnQgYW5kIGNvZGUgc3R5bGUgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSAtIG5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgY2xvbmVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICogY2xvbmVkLnJhd3MuYmVmb3JlICAvLz0+IHVuZGVmaW5lZFxuICAgICAqIGNsb25lZC5wYXJlbnQgICAgICAgLy89PiB1bmRlZmluZWRcbiAgICAgKiBjbG9uZWQudG9TdHJpbmcoKSAgIC8vPT4gLW1vei10cmFuc2Zvcm06IHNjYWxlKDApXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSBjbG9uZSBvZiB0aGUgbm9kZVxuICAgICAqL1xuICAgIGNsb25lKG92ZXJyaWRlcyA9IHsgfSkge1xuICAgICAgICBsZXQgY2xvbmVkID0gY2xvbmVOb2RlKHRoaXMpO1xuICAgICAgICBmb3IgKCBsZXQgbmFtZSBpbiBvdmVycmlkZXMgKSB7XG4gICAgICAgICAgICBjbG9uZWRbbmFtZV0gPSBvdmVycmlkZXNbbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG9ydGN1dCB0byBjbG9uZSB0aGUgbm9kZSBhbmQgaW5zZXJ0IHRoZSByZXN1bHRpbmcgY2xvbmVkIG5vZGVcbiAgICAgKiBiZWZvcmUgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbb3ZlcnJpZGVzXSAtIG5ldyBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIGluIHRoZSBjbG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZGVjbC5jbG9uZUJlZm9yZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSAtIG5ldyBub2RlXG4gICAgICovXG4gICAgY2xvbmVCZWZvcmUob3ZlcnJpZGVzID0geyB9KSB7XG4gICAgICAgIGxldCBjbG9uZWQgPSB0aGlzLmNsb25lKG92ZXJyaWRlcyk7XG4gICAgICAgIHRoaXMucGFyZW50Lmluc2VydEJlZm9yZSh0aGlzLCBjbG9uZWQpO1xuICAgICAgICByZXR1cm4gY2xvbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3J0Y3V0IHRvIGNsb25lIHRoZSBub2RlIGFuZCBpbnNlcnQgdGhlIHJlc3VsdGluZyBjbG9uZWQgbm9kZVxuICAgICAqIGFmdGVyIHRoZSBjdXJyZW50IG5vZGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW292ZXJyaWRlc10gLSBuZXcgcHJvcGVydGllcyB0byBvdmVycmlkZSBpbiB0aGUgY2xvbmUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSAtIG5ldyBub2RlXG4gICAgICovXG4gICAgY2xvbmVBZnRlcihvdmVycmlkZXMgPSB7IH0pIHtcbiAgICAgICAgbGV0IGNsb25lZCA9IHRoaXMuY2xvbmUob3ZlcnJpZGVzKTtcbiAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QWZ0ZXIodGhpcywgY2xvbmVkKTtcbiAgICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIG5vZGUocykgYmVmb3JlIHRoZSBjdXJyZW50IG5vZGUgYW5kIHJlbW92ZXMgdGhlIGN1cnJlbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uTm9kZX0gbm9kZXMgLSBub2RlKHMpIHRvIHJlcGxhY2UgY3VycmVudCBvbmVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogaWYgKCBhdHJ1bGUubmFtZSA9PSAnbWl4aW4nICkge1xuICAgICAqICAgYXRydWxlLnJlcGxhY2VXaXRoKG1peGluUnVsZXNbYXRydWxlLnBhcmFtc10pO1xuICAgICAqIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IGN1cnJlbnQgbm9kZSB0byBtZXRob2RzIGNoYWluXG4gICAgICovXG4gICAgcmVwbGFjZVdpdGgoLi4ubm9kZXMpIHtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgICAgICBmb3IgKGxldCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIG5vZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgbW92ZVRvKG5ld1BhcmVudCkge1xuICAgICAgICB3YXJuT25jZSgnTm9kZSNtb3ZlVG8gd2FzIGRlcHJlY2F0ZWQuIFVzZSBDb250YWluZXIjYXBwZW5kLicpO1xuICAgICAgICB0aGlzLmNsZWFuUmF3cyh0aGlzLnJvb3QoKSA9PT0gbmV3UGFyZW50LnJvb3QoKSk7XG4gICAgICAgIHRoaXMucmVtb3ZlKCk7XG4gICAgICAgIG5ld1BhcmVudC5hcHBlbmQodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIG1vdmVCZWZvcmUob3RoZXJOb2RlKSB7XG4gICAgICAgIHdhcm5PbmNlKCdOb2RlI21vdmVCZWZvcmUgd2FzIGRlcHJlY2F0ZWQuIFVzZSBOb2RlI2JlZm9yZS4nKTtcbiAgICAgICAgdGhpcy5jbGVhblJhd3ModGhpcy5yb290KCkgPT09IG90aGVyTm9kZS5yb290KCkpO1xuICAgICAgICB0aGlzLnJlbW92ZSgpO1xuICAgICAgICBvdGhlck5vZGUucGFyZW50Lmluc2VydEJlZm9yZShvdGhlck5vZGUsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBtb3ZlQWZ0ZXIob3RoZXJOb2RlKSB7XG4gICAgICAgIHdhcm5PbmNlKCdOb2RlI21vdmVBZnRlciB3YXMgZGVwcmVjYXRlZC4gVXNlIE5vZGUjYWZ0ZXIuJyk7XG4gICAgICAgIHRoaXMuY2xlYW5SYXdzKHRoaXMucm9vdCgpID09PSBvdGhlck5vZGUucm9vdCgpKTtcbiAgICAgICAgdGhpcy5yZW1vdmUoKTtcbiAgICAgICAgb3RoZXJOb2RlLnBhcmVudC5pbnNlcnRBZnRlcihvdGhlck5vZGUsIHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGNoaWxkIG9mIHRoZSBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgY3VycmVudCBub2RlIGlzIHRoZSBsYXN0IGNoaWxkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IG5leHQgbm9kZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBpZiAoIGNvbW1lbnQudGV4dCA9PT0gJ2RlbGV0ZSBuZXh0JyApIHtcbiAgICAgKiAgIGNvbnN0IG5leHQgPSBjb21tZW50Lm5leHQoKTtcbiAgICAgKiAgIGlmICggbmV4dCApIHtcbiAgICAgKiAgICAgbmV4dC5yZW1vdmUoKTtcbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICovXG4gICAgbmV4dCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5wYXJlbnQgKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnBhcmVudC5pbmRleCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4ICsgMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcHJldmlvdXMgY2hpbGQgb2YgdGhlIG5vZGXigJlzIHBhcmVudC5cbiAgICAgKiBSZXR1cm5zIGB1bmRlZmluZWRgIGlmIHRoZSBjdXJyZW50IG5vZGUgaXMgdGhlIGZpcnN0IGNoaWxkLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZXx1bmRlZmluZWR9IHByZXZpb3VzIG5vZGVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3QgYW5ub3RhdGlvbiA9IGRlY2wucHJldigpO1xuICAgICAqIGlmICggYW5ub3RhdGlvbi50eXBlID09ICdjb21tZW50JyApIHtcbiAgICAgKiAgcmVhZEFubm90YXRpb24oYW5ub3RhdGlvbi50ZXh0KTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgcHJldigpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5wYXJlbnQgKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLnBhcmVudC5pbmRleCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lm5vZGVzW2luZGV4IC0gMV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBjdXJyZW50IG5vZGUgdG8gY3VycmVudCBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICpcbiAgICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGFkZClgLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOb2RlfG9iamVjdHxzdHJpbmd8Tm9kZVtdfSBhZGQgLSBuZXcgbm9kZVxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBkZWNsLmJlZm9yZSgnY29udGVudDogXCJcIicpO1xuICAgICAqL1xuICAgIGJlZm9yZShhZGQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMsIGFkZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydCBuZXcgbm9kZSBhZnRlciBjdXJyZW50IG5vZGUgdG8gY3VycmVudCBub2Rl4oCZcyBwYXJlbnQuXG4gICAgICpcbiAgICAgKiBKdXN0IGFsaWFzIGZvciBgbm9kZS5wYXJlbnQuaW5zZXJ0QWZ0ZXIobm9kZSwgYWRkKWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCAtIG5ldyBub2RlXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSB0aGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW4uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGRlY2wuYWZ0ZXIoJ2NvbG9yOiBibGFjaycpO1xuICAgICAqL1xuICAgIGFmdGVyKGFkZCkge1xuICAgICAgICB0aGlzLnBhcmVudC5pbnNlcnRBZnRlcih0aGlzLCBhZGQpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIGxldCBmaXhlZCA9IHsgfTtcblxuICAgICAgICBmb3IgKCBsZXQgbmFtZSBpbiB0aGlzICkge1xuICAgICAgICAgICAgaWYgKCAhdGhpcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSApIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCBuYW1lID09PSAncGFyZW50JyApIGNvbnRpbnVlO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gdGhpc1tuYW1lXTtcblxuICAgICAgICAgICAgaWYgKCB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5ICkge1xuICAgICAgICAgICAgICAgIGZpeGVkW25hbWVdID0gdmFsdWUubWFwKCBpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaSA9PT0gJ29iamVjdCcgJiYgaS50b0pTT04gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS50b0pTT04oKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLnRvSlNPTiApIHtcbiAgICAgICAgICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlLnRvSlNPTigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaXhlZFtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpeGVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB7QGxpbmsgTm9kZSNyYXdzfSB2YWx1ZS4gSWYgdGhlIG5vZGUgaXMgbWlzc2luZ1xuICAgICAqIHRoZSBjb2RlIHN0eWxlIHByb3BlcnR5IChiZWNhdXNlIHRoZSBub2RlIHdhcyBtYW51YWxseSBidWlsdCBvciBjbG9uZWQpLFxuICAgICAqIFBvc3RDU1Mgd2lsbCB0cnkgdG8gYXV0b2RldGVjdCB0aGUgY29kZSBzdHlsZSBwcm9wZXJ0eSBieSBsb29raW5nXG4gICAgICogYXQgb3RoZXIgbm9kZXMgaW4gdGhlIHRyZWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcCAgICAgICAgICAtIG5hbWUgb2YgY29kZSBzdHlsZSBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbZGVmYXVsdFR5cGVdIC0gbmFtZSBvZiBkZWZhdWx0IHZhbHVlLCBpdCBjYW4gYmUgbWlzc2VkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgdmFsdWUgaXMgdGhlIHNhbWUgYXMgcHJvcFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGJhY2tncm91bmQ6IHdoaXRlIH0nKTtcbiAgICAgKiByb290Lm5vZGVzWzBdLmFwcGVuZCh7IHByb3A6ICdjb2xvcicsIHZhbHVlOiAnYmxhY2snIH0pO1xuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3cy5iZWZvcmUgICAvLz0+IHVuZGVmaW5lZFxuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMV0ucmF3KCdiZWZvcmUnKSAvLz0+ICcgJ1xuICAgICAqXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBjb2RlIHN0eWxlIHZhbHVlXG4gICAgICovXG4gICAgcmF3KHByb3AsIGRlZmF1bHRUeXBlKSB7XG4gICAgICAgIGxldCBzdHIgPSBuZXcgU3RyaW5naWZpZXIoKTtcbiAgICAgICAgcmV0dXJuIHN0ci5yYXcodGhpcywgcHJvcCwgZGVmYXVsdFR5cGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmRzIHRoZSBSb290IGluc3RhbmNlIG9mIHRoZSBub2Rl4oCZcyB0cmVlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290Lm5vZGVzWzBdLm5vZGVzWzBdLnJvb3QoKSA9PT0gcm9vdFxuICAgICAqXG4gICAgICogQHJldHVybiB7Um9vdH0gcm9vdCBwYXJlbnRcbiAgICAgKi9cbiAgICByb290KCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcztcbiAgICAgICAgd2hpbGUgKCByZXN1bHQucGFyZW50ICkgcmVzdWx0ID0gcmVzdWx0LnBhcmVudDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjbGVhblJhd3Moa2VlcEJldHdlZW4pIHtcbiAgICAgICAgZGVsZXRlIHRoaXMucmF3cy5iZWZvcmU7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnJhd3MuYWZ0ZXI7XG4gICAgICAgIGlmICggIWtlZXBCZXR3ZWVuICkgZGVsZXRlIHRoaXMucmF3cy5iZXR3ZWVuO1xuICAgIH1cblxuICAgIHBvc2l0aW9uSW5zaWRlKGluZGV4KSB7XG4gICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLnNvdXJjZS5zdGFydC5jb2x1bW47XG4gICAgICAgIGxldCBsaW5lICAgPSB0aGlzLnNvdXJjZS5zdGFydC5saW5lO1xuXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGluZGV4OyBpKysgKSB7XG4gICAgICAgICAgICBpZiAoIHN0cmluZ1tpXSA9PT0gJ1xcbicgKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uID0gMTtcbiAgICAgICAgICAgICAgICBsaW5lICArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGxpbmUsIGNvbHVtbiB9O1xuICAgIH1cblxuICAgIHBvc2l0aW9uQnkob3B0cykge1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5zb3VyY2Uuc3RhcnQ7XG4gICAgICAgIGlmICggb3B0cy5pbmRleCApIHtcbiAgICAgICAgICAgIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUob3B0cy5pbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIG9wdHMud29yZCApIHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMudG9TdHJpbmcoKS5pbmRleE9mKG9wdHMud29yZCk7XG4gICAgICAgICAgICBpZiAoIGluZGV4ICE9PSAtMSApIHBvcyA9IHRoaXMucG9zaXRpb25JbnNpZGUoaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7c3RyaW5nfSB0eXBlIC0gU3RyaW5nIHJlcHJlc2VudGluZyB0aGUgbm9kZeKAmXMgdHlwZS5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZSB2YWx1ZXMgYXJlIGByb290YCwgYGF0cnVsZWAsIGBydWxlYCxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBgZGVjbGAsIG9yIGBjb21tZW50YC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSkudHlwZSAvLz0+ICdkZWNsJ1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7Q29udGFpbmVyfSBwYXJlbnQgLSB0aGUgbm9kZeKAmXMgcGFyZW50IG5vZGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3Qubm9kZXNbMF0ucGFyZW50ID09IHJvb3Q7XG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgTm9kZSNcbiAgICAgKiBAbWVtYmVyIHtzb3VyY2V9IHNvdXJjZSAtIHRoZSBpbnB1dCBzb3VyY2Ugb2YgdGhlIG5vZGVcbiAgICAgKlxuICAgICAqIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGluIHNvdXJjZSBtYXAgZ2VuZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIElmIHlvdSBjcmVhdGUgYSBub2RlIG1hbnVhbGx5IChlLmcuLCB3aXRoIGBwb3N0Y3NzLmRlY2woKWApLFxuICAgICAqIHRoYXQgbm9kZSB3aWxsIG5vdCBoYXZlIGEgYHNvdXJjZWAgcHJvcGVydHkgYW5kIHdpbGwgYmUgYWJzZW50XG4gICAgICogZnJvbSB0aGUgc291cmNlIG1hcC4gRm9yIHRoaXMgcmVhc29uLCB0aGUgcGx1Z2luIGRldmVsb3BlciBzaG91bGRcbiAgICAgKiBjb25zaWRlciBjbG9uaW5nIG5vZGVzIHRvIGNyZWF0ZSBuZXcgb25lcyAoaW4gd2hpY2ggY2FzZSB0aGUgbmV3IG5vZGXigJlzXG4gICAgICogc291cmNlIHdpbGwgcmVmZXJlbmNlIHRoZSBvcmlnaW5hbCwgY2xvbmVkIG5vZGUpIG9yIHNldHRpbmdcbiAgICAgKiB0aGUgYHNvdXJjZWAgcHJvcGVydHkgbWFudWFsbHkuXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIC8vIEJhZFxuICAgICAqIGNvbnN0IHByZWZpeGVkID0gcG9zdGNzcy5kZWNsKHtcbiAgICAgKiAgIHByb3A6ICctbW96LScgKyBkZWNsLnByb3AsXG4gICAgICogICB2YWx1ZTogZGVjbC52YWx1ZVxuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogLy8gR29vZFxuICAgICAqIGNvbnN0IHByZWZpeGVkID0gZGVjbC5jbG9uZSh7IHByb3A6ICctbW96LScgKyBkZWNsLnByb3AgfSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBqc1xuICAgICAqIGlmICggYXRydWxlLm5hbWUgPT0gJ2FkZC1saW5rJyApIHtcbiAgICAgKiAgIGNvbnN0IHJ1bGUgPSBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnLCBzb3VyY2U6IGF0cnVsZS5zb3VyY2UgfSk7XG4gICAgICogICBhdHJ1bGUucGFyZW50Lmluc2VydEJlZm9yZShhdHJ1bGUsIHJ1bGUpO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZGVjbC5zb3VyY2UuaW5wdXQuZnJvbSAvLz0+ICcvaG9tZS9haS9hLnNhc3MnXG4gICAgICogZGVjbC5zb3VyY2Uuc3RhcnQgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMiB9XG4gICAgICogZGVjbC5zb3VyY2UuZW5kICAgICAgICAvLz0+IHsgbGluZTogMTAsIGNvbHVtbjogMTIgfVxuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIE5vZGUjXG4gICAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIC0gSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAgICpcbiAgICAgKiAqIGBiZWZvcmVgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZWZvcmUgdGhlIG5vZGUuIEl0IGFsc28gc3RvcmVzIGAqYFxuICAgICAqICAgYW5kIGBfYCBzeW1ib2xzIGJlZm9yZSB0aGUgZGVjbGFyYXRpb24gKElFIGhhY2spLlxuICAgICAqICogYGFmdGVyYDogdGhlIHNwYWNlIHN5bWJvbHMgYWZ0ZXIgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIG5vZGVcbiAgICAgKiAgIHRvIHRoZSBlbmQgb2YgdGhlIG5vZGUuXG4gICAgICogKiBgYmV0d2VlbmA6IHRoZSBzeW1ib2xzIGJldHdlZW4gdGhlIHByb3BlcnR5IGFuZCB2YWx1ZVxuICAgICAqICAgZm9yIGRlY2xhcmF0aW9ucywgc2VsZWN0b3IgYW5kIGB7YCBmb3IgcnVsZXMsIG9yIGxhc3QgcGFyYW1ldGVyXG4gICAgICogICBhbmQgYHtgIGZvciBhdC1ydWxlcy5cbiAgICAgKiAqIGBzZW1pY29sb25gOiBjb250YWlucyB0cnVlIGlmIHRoZSBsYXN0IGNoaWxkIGhhc1xuICAgICAqICAgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAgICogKiBgYWZ0ZXJOYW1lYDogdGhlIHNwYWNlIGJldHdlZW4gdGhlIGF0LXJ1bGUgbmFtZSBhbmQgaXRzIHBhcmFtZXRlcnMuXG4gICAgICogKiBgbGVmdGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gYC8qYCBhbmQgdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAgICogKiBgcmlnaHRgOiB0aGUgc3BhY2Ugc3ltYm9scyBiZXR3ZWVuIHRoZSBjb21tZW504oCZcyB0ZXh0XG4gICAgICogICBhbmQgPGNvZGU+KiYjNDc7PC9jb2RlPi5cbiAgICAgKiAqIGBpbXBvcnRhbnRgOiB0aGUgY29udGVudCBvZiB0aGUgaW1wb3J0YW50IHN0YXRlbWVudCxcbiAgICAgKiAgIGlmIGl0IGlzIG5vdCBqdXN0IGAhaW1wb3J0YW50YC5cbiAgICAgKlxuICAgICAqIFBvc3RDU1MgY2xlYW5zIHNlbGVjdG9ycywgZGVjbGFyYXRpb24gdmFsdWVzIGFuZCBhdC1ydWxlIHBhcmFtZXRlcnNcbiAgICAgKiBmcm9tIGNvbW1lbnRzIGFuZCBleHRyYSBzcGFjZXMsIGJ1dCBpdCBzdG9yZXMgb3JpZ2luIGNvbnRlbnQgaW4gcmF3c1xuICAgICAqIHByb3BlcnRpZXMuIEFzIHN1Y2gsIGlmIHlvdSBkb27igJl0IGNoYW5nZSBhIGRlY2xhcmF0aW9u4oCZcyB2YWx1ZSxcbiAgICAgKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSByYXcgdmFsdWUgd2l0aCBjb21tZW50cy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2Ege1xcbiAgY29sb3I6YmxhY2tcXG59JylcbiAgICAgKiByb290LmZpcnN0LmZpcnN0LnJhd3MgLy89PiB7IGJlZm9yZTogJ1xcbiAgJywgYmV0d2VlbjogJzonIH1cbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBOb2RlO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHBvc2l0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gbGluZSAgIC0gc291cmNlIGxpbmUgaW4gZmlsZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbHVtbiAtIHNvdXJjZSBjb2x1bW4gaW4gZmlsZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gc291cmNlXG4gKiBAcHJvcGVydHkge0lucHV0fSBpbnB1dCAgICAtIHtAbGluayBJbnB1dH0gd2l0aCBpbnB1dCBmaWxlXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBzdGFydCAtIFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgbm9kZeKAmXMgc291cmNlXG4gKiBAcHJvcGVydHkge3Bvc2l0aW9ufSBlbmQgICAtIFRoZSBlbmRpbmcgcG9zaXRpb24gb2YgdGhlIG5vZGXigJlzIHNvdXJjZVxuICovXG4iXX0=\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar splitPath = function(filename) {\n return splitPathRe.exec(filename).slice(1);\n};\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function(path) {\n var result = splitPath(path),\n root = result[0],\n dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.substr(0, dir.length - 1);\n }\n\n return root + dir;\n};\n\n\nexports.basename = function(path, ext) {\n var f = splitPath(path)[2];\n // TODO: make this comparison case-insensitive on windows?\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\n\nexports.extname = function(path) {\n return splitPath(path)[3];\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","'use strict';\n\nexports.__esModule = true;\nexports.default = stringify;\n\nvar _stringifier = require('./stringifier');\n\nvar _stringifier2 = _interopRequireDefault(_stringifier);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringify(node, builder) {\n var str = new _stringifier2.default(builder);\n str.stringify(node);\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmeS5lczYiXSwibmFtZXMiOlsic3RyaW5naWZ5Iiwibm9kZSIsImJ1aWxkZXIiLCJzdHIiLCJTdHJpbmdpZmllciJdLCJtYXBwaW5ncyI6Ijs7O2tCQUV3QkEsUzs7QUFGeEI7Ozs7OztBQUVlLFNBQVNBLFNBQVQsQ0FBbUJDLElBQW5CLEVBQXlCQyxPQUF6QixFQUFrQztBQUM3QyxRQUFJQyxNQUFNLElBQUlDLHFCQUFKLENBQWdCRixPQUFoQixDQUFWO0FBQ0FDLFFBQUlILFNBQUosQ0FBY0MsSUFBZDtBQUNIIiwiZmlsZSI6InN0cmluZ2lmeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJpbmdpZmllciBmcm9tICcuL3N0cmluZ2lmaWVyJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc3RyaW5naWZ5KG5vZGUsIGJ1aWxkZXIpIHtcbiAgICBsZXQgc3RyID0gbmV3IFN0cmluZ2lmaWVyKGJ1aWxkZXIpO1xuICAgIHN0ci5zdHJpbmdpZnkobm9kZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.default = parse;\n\nvar _parser = require('./parser');\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _input = require('./input');\n\nvar _input2 = _interopRequireDefault(_input);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(css, opts) {\n if (opts && opts.safe) {\n throw new Error('Option safe was removed. ' + 'Use parser: require(\"postcss-safe-parser\")');\n }\n\n var input = new _input2.default(css, opts);\n var parser = new _parser2.default(input);\n try {\n parser.parse();\n } catch (e) {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse SCSS with ' + 'the standard CSS parser; ' + 'try again with the postcss-scss parser';\n } else if (/\\.sass/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Sass with ' + 'the standard CSS parser; ' + 'try again with the postcss-sass parser';\n } else if (/\\.less$/i.test(opts.from)) {\n e.message += '\\nYou tried to parse Less with ' + 'the standard CSS parser; ' + 'try again with the postcss-less parser';\n }\n }\n throw e;\n }\n\n return parser.root;\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlLmVzNiJdLCJuYW1lcyI6WyJwYXJzZSIsImNzcyIsIm9wdHMiLCJzYWZlIiwiRXJyb3IiLCJpbnB1dCIsIklucHV0IiwicGFyc2VyIiwiUGFyc2VyIiwiZSIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIm1lc3NhZ2UiLCJyb290Il0sIm1hcHBpbmdzIjoiOzs7a0JBR3dCQSxLOztBQUh4Qjs7OztBQUNBOzs7Ozs7QUFFZSxTQUFTQSxLQUFULENBQWVDLEdBQWYsRUFBb0JDLElBQXBCLEVBQTBCO0FBQ3JDLFFBQUtBLFFBQVFBLEtBQUtDLElBQWxCLEVBQXlCO0FBQ3JCLGNBQU0sSUFBSUMsS0FBSixDQUFVLDhCQUNBLDRDQURWLENBQU47QUFFSDs7QUFFRCxRQUFJQyxRQUFRLElBQUlDLGVBQUosQ0FBVUwsR0FBVixFQUFlQyxJQUFmLENBQVo7QUFDQSxRQUFJSyxTQUFTLElBQUlDLGdCQUFKLENBQVdILEtBQVgsQ0FBYjtBQUNBLFFBQUk7QUFDQUUsZUFBT1AsS0FBUDtBQUNILEtBRkQsQ0FFRSxPQUFPUyxDQUFQLEVBQVU7QUFDUixZQUFLQSxFQUFFQyxJQUFGLEtBQVcsZ0JBQVgsSUFBK0JSLElBQS9CLElBQXVDQSxLQUFLUyxJQUFqRCxFQUF3RDtBQUNwRCxnQkFBSyxXQUFXQyxJQUFYLENBQWdCVixLQUFLUyxJQUFyQixDQUFMLEVBQWtDO0FBQzlCRixrQkFBRUksT0FBRixJQUFhLG9DQUNBLDJCQURBLEdBRUEsd0NBRmI7QUFHSCxhQUpELE1BSU8sSUFBSyxVQUFVRCxJQUFWLENBQWVWLEtBQUtTLElBQXBCLENBQUwsRUFBaUM7QUFDcENGLGtCQUFFSSxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdILGFBSk0sTUFJQSxJQUFLLFdBQVdELElBQVgsQ0FBZ0JWLEtBQUtTLElBQXJCLENBQUwsRUFBa0M7QUFDckNGLGtCQUFFSSxPQUFGLElBQWEsb0NBQ0EsMkJBREEsR0FFQSx3Q0FGYjtBQUdIO0FBQ0o7QUFDRCxjQUFNSixDQUFOO0FBQ0g7O0FBRUQsV0FBT0YsT0FBT08sSUFBZDtBQUNIIiwiZmlsZSI6InBhcnNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBhcnNlciBmcm9tICcuL3BhcnNlcic7XG5pbXBvcnQgSW5wdXQgIGZyb20gJy4vaW5wdXQnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZShjc3MsIG9wdHMpIHtcbiAgICBpZiAoIG9wdHMgJiYgb3B0cy5zYWZlICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09wdGlvbiBzYWZlIHdhcyByZW1vdmVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdVc2UgcGFyc2VyOiByZXF1aXJlKFwicG9zdGNzcy1zYWZlLXBhcnNlclwiKScpO1xuICAgIH1cblxuICAgIGxldCBpbnB1dCA9IG5ldyBJbnB1dChjc3MsIG9wdHMpO1xuICAgIGxldCBwYXJzZXIgPSBuZXcgUGFyc2VyKGlucHV0KTtcbiAgICB0cnkge1xuICAgICAgICBwYXJzZXIucGFyc2UoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmICggZS5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmIG9wdHMgJiYgb3B0cy5mcm9tICkge1xuICAgICAgICAgICAgaWYgKCAvXFwuc2NzcyQvaS50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU0NTUyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2NzcyBwYXJzZXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggL1xcLnNhc3MvaS50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgZS5tZXNzYWdlICs9ICdcXG5Zb3UgdHJpZWQgdG8gcGFyc2UgU2FzcyB3aXRoICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHN0YW5kYXJkIENTUyBwYXJzZXI7ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJ5IGFnYWluIHdpdGggdGhlIHBvc3Rjc3Mtc2FzcyBwYXJzZXInO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggL1xcLmxlc3MkL2kudGVzdChvcHRzLmZyb20pICkge1xuICAgICAgICAgICAgICAgIGUubWVzc2FnZSArPSAnXFxuWW91IHRyaWVkIHRvIHBhcnNlIExlc3Mgd2l0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzdGFuZGFyZCBDU1MgcGFyc2VyOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyeSBhZ2FpbiB3aXRoIHRoZSBwb3N0Y3NzLWxlc3MgcGFyc2VyJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZXIucm9vdDtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a comment between declarations or statements (rule and at-rules).\n *\n * Comments inside selectors, at-rule parameters, or declaration values\n * will be stored in the `raws` properties explained above.\n *\n * @extends Node\n */\nvar Comment = function (_Node) {\n _inherits(Comment, _Node);\n\n function Comment(defaults) {\n _classCallCheck(this, Comment);\n\n var _this = _possibleConstructorReturn(this, _Node.call(this, defaults));\n\n _this.type = 'comment';\n return _this;\n }\n\n /**\n * @memberof Comment#\n * @member {string} text - the comment’s text\n */\n\n /**\n * @memberof Comment#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `before`: the space symbols before the node.\n * * `left`: the space symbols between `/*` and the comment’s text.\n * * `right`: the space symbols between the comment’s text.\n */\n\n\n return Comment;\n}(_node2.default);\n\nexports.default = Comment;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbW1lbnQuZXM2Il0sIm5hbWVzIjpbIkNvbW1lbnQiLCJkZWZhdWx0cyIsInR5cGUiLCJOb2RlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7Ozs7OztBQUVBOzs7Ozs7OztJQVFNQSxPOzs7QUFFRixtQkFBWUMsUUFBWixFQUFzQjtBQUFBOztBQUFBLGlEQUNsQixpQkFBTUEsUUFBTixDQURrQjs7QUFFbEIsVUFBS0MsSUFBTCxHQUFZLFNBQVo7QUFGa0I7QUFHckI7O0FBRUQ7Ozs7O0FBS0E7Ozs7Ozs7Ozs7Ozs7OztFQVprQkMsYzs7a0JBMEJQSCxPIiwiZmlsZSI6ImNvbW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSBmcm9tICcuL25vZGUnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjb21tZW50IGJldHdlZW4gZGVjbGFyYXRpb25zIG9yIHN0YXRlbWVudHMgKHJ1bGUgYW5kIGF0LXJ1bGVzKS5cbiAqXG4gKiBDb21tZW50cyBpbnNpZGUgc2VsZWN0b3JzLCBhdC1ydWxlIHBhcmFtZXRlcnMsIG9yIGRlY2xhcmF0aW9uIHZhbHVlc1xuICogd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGByYXdzYCBwcm9wZXJ0aWVzIGV4cGxhaW5lZCBhYm92ZS5cbiAqXG4gKiBAZXh0ZW5kcyBOb2RlXG4gKi9cbmNsYXNzIENvbW1lbnQgZXh0ZW5kcyBOb2RlIHtcblxuICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRzKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ2NvbW1lbnQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBtZW1iZXJvZiBDb21tZW50I1xuICAgICAqIEBtZW1iZXIge3N0cmluZ30gdGV4dCAtIHRoZSBjb21tZW504oCZcyB0ZXh0XG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQ29tbWVudCNcbiAgICAgKiBAbWVtYmVyIHtvYmplY3R9IHJhd3MgLSBJbmZvcm1hdGlvbiB0byBnZW5lcmF0ZSBieXRlLXRvLWJ5dGUgZXF1YWxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlIHN0cmluZyBhcyBpdCB3YXMgaW4gdGhlIG9yaWdpbiBpbnB1dC5cbiAgICAgKlxuICAgICAqIEV2ZXJ5IHBhcnNlciBzYXZlcyBpdHMgb3duIHByb3BlcnRpZXMsXG4gICAgICogYnV0IHRoZSBkZWZhdWx0IENTUyBwYXJzZXIgdXNlczpcbiAgICAgKlxuICAgICAqICogYGJlZm9yZWA6IHRoZSBzcGFjZSBzeW1ib2xzIGJlZm9yZSB0aGUgbm9kZS5cbiAgICAgKiAqIGBsZWZ0YDogdGhlIHNwYWNlIHN5bWJvbHMgYmV0d2VlbiBgLypgIGFuZCB0aGUgY29tbWVudOKAmXMgdGV4dC5cbiAgICAgKiAqIGByaWdodGA6IHRoZSBzcGFjZSBzeW1ib2xzIGJldHdlZW4gdGhlIGNvbW1lbnTigJlzIHRleHQuXG4gICAgICovXG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1lbnQ7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _node = require('./node');\n\nvar _node2 = _interopRequireDefault(_node);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction cleanSource(nodes) {\n return nodes.map(function (i) {\n if (i.nodes) i.nodes = cleanSource(i.nodes);\n delete i.source;\n return i;\n });\n}\n\n/**\n * The {@link Root}, {@link AtRule}, and {@link Rule} container nodes\n * inherit some common methods to help work with their children.\n *\n * Note that all containers can store any content. If you write a rule inside\n * a rule, PostCSS will parse it.\n *\n * @extends Node\n * @abstract\n */\n\nvar Container = function (_Node) {\n _inherits(Container, _Node);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, _Node.apply(this, arguments));\n }\n\n Container.prototype.push = function push(child) {\n child.parent = this;\n this.nodes.push(child);\n return this;\n };\n\n /**\n * Iterates through the container’s immediate children,\n * calling `callback` for each child.\n *\n * Returning `false` in the callback will break iteration.\n *\n * This method only iterates through the container’s immediate children.\n * If you need to recursively iterate through all the container’s descendant\n * nodes, use {@link Container#walk}.\n *\n * Unlike the for `{}`-cycle or `Array#forEach` this iterator is safe\n * if you are mutating the array of child nodes during iteration.\n * PostCSS will adjust the current index to match the mutations.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const root = postcss.parse('a { color: black; z-index: 1 }');\n * const rule = root.first;\n *\n * for ( let decl of rule.nodes ) {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Cycle will be infinite, because cloneBefore moves the current node\n * // to the next index\n * }\n *\n * rule.each(decl => {\n * decl.cloneBefore({ prop: '-webkit-' + decl.prop });\n * // Will be executed only for color and z-index\n * });\n */\n\n\n Container.prototype.each = function each(callback) {\n if (!this.lastEach) this.lastEach = 0;\n if (!this.indexes) this.indexes = {};\n\n this.lastEach += 1;\n var id = this.lastEach;\n this.indexes[id] = 0;\n\n if (!this.nodes) return undefined;\n\n var index = void 0,\n result = void 0;\n while (this.indexes[id] < this.nodes.length) {\n index = this.indexes[id];\n result = callback(this.nodes[index], index);\n if (result === false) break;\n\n this.indexes[id] += 1;\n }\n\n delete this.indexes[id];\n\n return result;\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each node.\n *\n * Like container.each(), this method is safe to use\n * if you are mutating arrays during iteration.\n *\n * If you only need to iterate through the container’s immediate children,\n * use {@link Container#each}.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walk(node => {\n * // Traverses all descendant nodes.\n * });\n */\n\n\n Container.prototype.walk = function walk(callback) {\n return this.each(function (child, i) {\n var result = callback(child, i);\n if (result !== false && child.walk) {\n result = child.walk(callback);\n }\n return result;\n });\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each declaration node.\n *\n * If you pass a filter, iteration will only happen over declarations\n * with matching properties.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [prop] - string or regular expression\n * to filter declarations by property name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkDecls(decl => {\n * checkPropertySupport(decl.prop);\n * });\n *\n * root.walkDecls('border-radius', decl => {\n * decl.remove();\n * });\n *\n * root.walkDecls(/^background/, decl => {\n * decl.value = takeFirstColorFromGradient(decl.value);\n * });\n */\n\n\n Container.prototype.walkDecls = function walkDecls(prop, callback) {\n if (!callback) {\n callback = prop;\n return this.walk(function (child, i) {\n if (child.type === 'decl') {\n return callback(child, i);\n }\n });\n } else if (prop instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each rule node.\n *\n * If you pass a filter, iteration will only happen over rules\n * with matching selectors.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [selector] - string or regular expression\n * to filter rules by selector\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * const selectors = [];\n * root.walkRules(rule => {\n * selectors.push(rule.selector);\n * });\n * console.log(`Your CSS uses ${selectors.length} selectors`);\n */\n\n\n Container.prototype.walkRules = function walkRules(selector, callback) {\n if (!callback) {\n callback = selector;\n\n return this.walk(function (child, i) {\n if (child.type === 'rule') {\n return callback(child, i);\n }\n });\n } else if (selector instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each at-rule node.\n *\n * If you pass a filter, iteration will only happen over at-rules\n * that have matching names.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {string|RegExp} [name] - string or regular expression\n * to filter at-rules by name\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkAtRules(rule => {\n * if ( isOld(rule.name) ) rule.remove();\n * });\n *\n * let first = false;\n * root.walkAtRules('charset', rule => {\n * if ( !first ) {\n * first = true;\n * } else {\n * rule.remove();\n * }\n * });\n */\n\n\n Container.prototype.walkAtRules = function walkAtRules(name, callback) {\n if (!callback) {\n callback = name;\n return this.walk(function (child, i) {\n if (child.type === 'atrule') {\n return callback(child, i);\n }\n });\n } else if (name instanceof RegExp) {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i);\n }\n });\n } else {\n return this.walk(function (child, i) {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i);\n }\n });\n }\n };\n\n /**\n * Traverses the container’s descendant nodes, calling callback\n * for each comment node.\n *\n * Like {@link Container#each}, this method is safe\n * to use if you are mutating arrays during iteration.\n *\n * @param {childIterator} callback - iterator receives each node and index\n *\n * @return {false|undefined} returns `false` if iteration was broke\n *\n * @example\n * root.walkComments(comment => {\n * comment.remove();\n * });\n */\n\n\n Container.prototype.walkComments = function walkComments(callback) {\n return this.walk(function (child, i) {\n if (child.type === 'comment') {\n return callback(child, i);\n }\n });\n };\n\n /**\n * Inserts new nodes to the end of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.append(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.append = function append() {\n for (var _len = arguments.length, children = Array(_len), _key = 0; _key < _len; _key++) {\n children[_key] = arguments[_key];\n }\n\n for (var _iterator = children, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var child = _ref;\n\n var nodes = this.normalize(child, this.last);\n for (var _iterator2 = nodes, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var node = _ref2;\n this.nodes.push(node);\n }\n }\n return this;\n };\n\n /**\n * Inserts new nodes to the start of the container.\n *\n * @param {...(Node|object|string|Node[])} children - new nodes\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * const decl1 = postcss.decl({ prop: 'color', value: 'black' });\n * const decl2 = postcss.decl({ prop: 'background-color', value: 'white' });\n * rule.prepend(decl1, decl2);\n *\n * root.append({ name: 'charset', params: '\"UTF-8\"' }); // at-rule\n * root.append({ selector: 'a' }); // rule\n * rule.append({ prop: 'color', value: 'black' }); // declaration\n * rule.append({ text: 'Comment' }) // comment\n *\n * root.append('a {}');\n * root.first.append('color: black; z-index: 1');\n */\n\n\n Container.prototype.prepend = function prepend() {\n for (var _len2 = arguments.length, children = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n children[_key2] = arguments[_key2];\n }\n\n children = children.reverse();\n for (var _iterator3 = children, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) {\n var _ref3;\n\n if (_isArray3) {\n if (_i3 >= _iterator3.length) break;\n _ref3 = _iterator3[_i3++];\n } else {\n _i3 = _iterator3.next();\n if (_i3.done) break;\n _ref3 = _i3.value;\n }\n\n var child = _ref3;\n\n var nodes = this.normalize(child, this.first, 'prepend').reverse();\n for (var _iterator4 = nodes, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) {\n var _ref4;\n\n if (_isArray4) {\n if (_i4 >= _iterator4.length) break;\n _ref4 = _iterator4[_i4++];\n } else {\n _i4 = _iterator4.next();\n if (_i4.done) break;\n _ref4 = _i4.value;\n }\n\n var node = _ref4;\n this.nodes.unshift(node);\n }for (var id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length;\n }\n }\n return this;\n };\n\n Container.prototype.cleanRaws = function cleanRaws(keepBetween) {\n _Node.prototype.cleanRaws.call(this, keepBetween);\n if (this.nodes) {\n for (var _iterator5 = this.nodes, _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray5) {\n if (_i5 >= _iterator5.length) break;\n _ref5 = _iterator5[_i5++];\n } else {\n _i5 = _iterator5.next();\n if (_i5.done) break;\n _ref5 = _i5.value;\n }\n\n var node = _ref5;\n node.cleanRaws(keepBetween);\n }\n }\n };\n\n /**\n * Insert new node before old node within the container.\n *\n * @param {Node|number} exist - child or child’s index.\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.insertBefore(decl, decl.clone({ prop: '-webkit-' + decl.prop }));\n */\n\n\n Container.prototype.insertBefore = function insertBefore(exist, add) {\n exist = this.index(exist);\n\n var type = exist === 0 ? 'prepend' : false;\n var nodes = this.normalize(add, this.nodes[exist], type).reverse();\n for (var _iterator6 = nodes, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) {\n var _ref6;\n\n if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n _ref6 = _iterator6[_i6++];\n } else {\n _i6 = _iterator6.next();\n if (_i6.done) break;\n _ref6 = _i6.value;\n }\n\n var node = _ref6;\n this.nodes.splice(exist, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist <= index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Insert new node after old node within the container.\n *\n * @param {Node|number} exist - child or child’s index\n * @param {Node|object|string|Node[]} add - new node\n *\n * @return {Node} this node for methods chain\n */\n\n\n Container.prototype.insertAfter = function insertAfter(exist, add) {\n exist = this.index(exist);\n\n var nodes = this.normalize(add, this.nodes[exist]).reverse();\n for (var _iterator7 = nodes, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) {\n var _ref7;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length) break;\n _ref7 = _iterator7[_i7++];\n } else {\n _i7 = _iterator7.next();\n if (_i7.done) break;\n _ref7 = _i7.value;\n }\n\n var node = _ref7;\n this.nodes.splice(exist + 1, 0, node);\n }var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (exist < index) {\n this.indexes[id] = index + nodes.length;\n }\n }\n\n return this;\n };\n\n /**\n * Removes node from the container and cleans the parent properties\n * from the node and its children.\n *\n * @param {Node|number} child - child or child’s index\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.nodes.length //=> 5\n * rule.removeChild(decl);\n * rule.nodes.length //=> 4\n * decl.parent //=> undefined\n */\n\n\n Container.prototype.removeChild = function removeChild(child) {\n child = this.index(child);\n this.nodes[child].parent = undefined;\n this.nodes.splice(child, 1);\n\n var index = void 0;\n for (var id in this.indexes) {\n index = this.indexes[id];\n if (index >= child) {\n this.indexes[id] = index - 1;\n }\n }\n\n return this;\n };\n\n /**\n * Removes all children from the container\n * and cleans their parent properties.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * rule.removeAll();\n * rule.nodes.length //=> 0\n */\n\n\n Container.prototype.removeAll = function removeAll() {\n for (var _iterator8 = this.nodes, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref8;\n\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n _ref8 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n if (_i8.done) break;\n _ref8 = _i8.value;\n }\n\n var node = _ref8;\n node.parent = undefined;\n }this.nodes = [];\n return this;\n };\n\n /**\n * Passes all declaration values within the container that match pattern\n * through callback, replacing those values with the returned result\n * of callback.\n *\n * This method is useful if you are using a custom unit or function\n * and need to iterate through all values.\n *\n * @param {string|RegExp} pattern - replace pattern\n * @param {object} opts - options to speed up the search\n * @param {string|string[]} opts.props - an array of property names\n * @param {string} opts.fast - string that’s used\n * to narrow down values and speed up\n the regexp search\n * @param {function|string} callback - string to replace pattern\n * or callback that returns a new\n * value.\n * The callback will receive\n * the same arguments as those\n * passed to a function parameter\n * of `String#replace`.\n *\n * @return {Node} this node for methods chain\n *\n * @example\n * root.replaceValues(/\\d+rem/, { fast: 'rem' }, string => {\n * return 15 * parseInt(string) + 'px';\n * });\n */\n\n\n Container.prototype.replaceValues = function replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts;\n opts = {};\n }\n\n this.walkDecls(function (decl) {\n if (opts.props && opts.props.indexOf(decl.prop) === -1) return;\n if (opts.fast && decl.value.indexOf(opts.fast) === -1) return;\n\n decl.value = decl.value.replace(pattern, callback);\n });\n\n return this;\n };\n\n /**\n * Returns `true` if callback returns `true`\n * for all of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is every child pass condition\n *\n * @example\n * const noPrefixes = rule.every(i => i.prop[0] !== '-');\n */\n\n\n Container.prototype.every = function every(condition) {\n return this.nodes.every(condition);\n };\n\n /**\n * Returns `true` if callback returns `true` for (at least) one\n * of the container’s children.\n *\n * @param {childCondition} condition - iterator returns true or false.\n *\n * @return {boolean} is some child pass condition\n *\n * @example\n * const hasPrefix = rule.some(i => i.prop[0] === '-');\n */\n\n\n Container.prototype.some = function some(condition) {\n return this.nodes.some(condition);\n };\n\n /**\n * Returns a `child`’s index within the {@link Container#nodes} array.\n *\n * @param {Node} child - child of the current container.\n *\n * @return {number} child index\n *\n * @example\n * rule.index( rule.nodes[2] ) //=> 2\n */\n\n\n Container.prototype.index = function index(child) {\n if (typeof child === 'number') {\n return child;\n } else {\n return this.nodes.indexOf(child);\n }\n };\n\n /**\n * The container’s first child.\n *\n * @type {Node}\n *\n * @example\n * rule.first == rules.nodes[0];\n */\n\n\n Container.prototype.normalize = function normalize(nodes, sample) {\n var _this2 = this;\n\n if (typeof nodes === 'string') {\n var parse = require('./parse');\n nodes = cleanSource(parse(nodes).nodes);\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0);\n for (var _iterator9 = nodes, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) {\n var _ref9;\n\n if (_isArray9) {\n if (_i9 >= _iterator9.length) break;\n _ref9 = _iterator9[_i9++];\n } else {\n _i9 = _iterator9.next();\n if (_i9.done) break;\n _ref9 = _i9.value;\n }\n\n var i = _ref9;\n\n if (i.parent) i.parent.removeChild(i, 'ignore');\n }\n } else if (nodes.type === 'root') {\n nodes = nodes.nodes.slice(0);\n for (var _iterator10 = nodes, _isArray10 = Array.isArray(_iterator10), _i11 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) {\n var _ref10;\n\n if (_isArray10) {\n if (_i11 >= _iterator10.length) break;\n _ref10 = _iterator10[_i11++];\n } else {\n _i11 = _iterator10.next();\n if (_i11.done) break;\n _ref10 = _i11.value;\n }\n\n var _i10 = _ref10;\n\n if (_i10.parent) _i10.parent.removeChild(_i10, 'ignore');\n }\n } else if (nodes.type) {\n nodes = [nodes];\n } else if (nodes.prop) {\n if (typeof nodes.value === 'undefined') {\n throw new Error('Value field is missed in node creation');\n } else if (typeof nodes.value !== 'string') {\n nodes.value = String(nodes.value);\n }\n nodes = [new _declaration2.default(nodes)];\n } else if (nodes.selector) {\n var Rule = require('./rule');\n nodes = [new Rule(nodes)];\n } else if (nodes.name) {\n var AtRule = require('./at-rule');\n nodes = [new AtRule(nodes)];\n } else if (nodes.text) {\n nodes = [new _comment2.default(nodes)];\n } else {\n throw new Error('Unknown node type in node creation');\n }\n\n var processed = nodes.map(function (i) {\n if (typeof i.before !== 'function') i = _this2.rebuild(i);\n\n if (i.parent) i.parent.removeChild(i);\n if (typeof i.raws.before === 'undefined') {\n if (sample && typeof sample.raws.before !== 'undefined') {\n i.raws.before = sample.raws.before.replace(/[^\\s]/g, '');\n }\n }\n i.parent = _this2;\n return i;\n });\n\n return processed;\n };\n\n Container.prototype.rebuild = function rebuild(node, parent) {\n var _this3 = this;\n\n var fix = void 0;\n if (node.type === 'root') {\n var Root = require('./root');\n fix = new Root();\n } else if (node.type === 'atrule') {\n var AtRule = require('./at-rule');\n fix = new AtRule();\n } else if (node.type === 'rule') {\n var Rule = require('./rule');\n fix = new Rule();\n } else if (node.type === 'decl') {\n fix = new _declaration2.default();\n } else if (node.type === 'comment') {\n fix = new _comment2.default();\n }\n\n for (var i in node) {\n if (i === 'nodes') {\n fix.nodes = node.nodes.map(function (j) {\n return _this3.rebuild(j, fix);\n });\n } else if (i === 'parent' && parent) {\n fix.parent = parent;\n } else if (node.hasOwnProperty(i)) {\n fix[i] = node[i];\n }\n }\n\n return fix;\n };\n\n /**\n * @memberof Container#\n * @member {Node[]} nodes - an array containing the container’s children\n *\n * @example\n * const root = postcss.parse('a { color: black }');\n * root.nodes.length //=> 1\n * root.nodes[0].selector //=> 'a'\n * root.nodes[0].nodes[0].prop //=> 'color'\n */\n\n _createClass(Container, [{\n key: 'first',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[0];\n }\n\n /**\n * The container’s last child.\n *\n * @type {Node}\n *\n * @example\n * rule.last == rule.nodes[rule.nodes.length - 1];\n */\n\n }, {\n key: 'last',\n get: function get() {\n if (!this.nodes) return undefined;\n return this.nodes[this.nodes.length - 1];\n }\n }]);\n\n return Container;\n}(_node2.default);\n\nexports.default = Container;\n\n/**\n * @callback childCondition\n * @param {Node} node - container child\n * @param {number} index - child index\n * @param {Node[]} nodes - all container children\n * @return {boolean}\n */\n\n/**\n * @callback childIterator\n * @param {Node} node - container child\n * @param {number} index - child index\n * @return {false|undefined} returning `false` will break iteration\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbnRhaW5lci5lczYiXSwibmFtZXMiOlsiY2xlYW5Tb3VyY2UiLCJub2RlcyIsIm1hcCIsImkiLCJzb3VyY2UiLCJDb250YWluZXIiLCJwdXNoIiwiY2hpbGQiLCJwYXJlbnQiLCJlYWNoIiwiY2FsbGJhY2siLCJsYXN0RWFjaCIsImluZGV4ZXMiLCJpZCIsInVuZGVmaW5lZCIsImluZGV4IiwicmVzdWx0IiwibGVuZ3RoIiwid2FsayIsIndhbGtEZWNscyIsInByb3AiLCJ0eXBlIiwiUmVnRXhwIiwidGVzdCIsIndhbGtSdWxlcyIsInNlbGVjdG9yIiwid2Fsa0F0UnVsZXMiLCJuYW1lIiwid2Fsa0NvbW1lbnRzIiwiYXBwZW5kIiwiY2hpbGRyZW4iLCJub3JtYWxpemUiLCJsYXN0Iiwibm9kZSIsInByZXBlbmQiLCJyZXZlcnNlIiwiZmlyc3QiLCJ1bnNoaWZ0IiwiY2xlYW5SYXdzIiwia2VlcEJldHdlZW4iLCJpbnNlcnRCZWZvcmUiLCJleGlzdCIsImFkZCIsInNwbGljZSIsImluc2VydEFmdGVyIiwicmVtb3ZlQ2hpbGQiLCJyZW1vdmVBbGwiLCJyZXBsYWNlVmFsdWVzIiwicGF0dGVybiIsIm9wdHMiLCJwcm9wcyIsImluZGV4T2YiLCJkZWNsIiwiZmFzdCIsInZhbHVlIiwicmVwbGFjZSIsImV2ZXJ5IiwiY29uZGl0aW9uIiwic29tZSIsInNhbXBsZSIsInBhcnNlIiwicmVxdWlyZSIsIkFycmF5IiwiaXNBcnJheSIsInNsaWNlIiwiRXJyb3IiLCJTdHJpbmciLCJEZWNsYXJhdGlvbiIsIlJ1bGUiLCJBdFJ1bGUiLCJ0ZXh0IiwiQ29tbWVudCIsInByb2Nlc3NlZCIsImJlZm9yZSIsInJlYnVpbGQiLCJyYXdzIiwiZml4IiwiUm9vdCIsImoiLCJoYXNPd25Qcm9wZXJ0eSIsIk5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0EsV0FBVCxDQUFxQkMsS0FBckIsRUFBNEI7QUFD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Zjs7Ozs7Ozs7QUFRQSIsImZpbGUiOiJjb250YWluZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBOb2RlICAgICAgICBmcm9tICcuL25vZGUnO1xuXG5mdW5jdGlvbiBjbGVhblNvdXJjZShub2Rlcykge1xuICAgIHJldHVybiBub2Rlcy5tYXAoIGkgPT4ge1xuICAgICAgICBpZiAoIGkubm9kZXMgKSBpLm5vZGVzID0gY2xlYW5Tb3VyY2UoaS5ub2Rlcyk7XG4gICAgICAgIGRlbGV0ZSBpLnNvdXJjZTtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogVGhlIHtAbGluayBSb290fSwge0BsaW5rIEF0UnVsZX0sIGFuZCB7QGxpbmsgUnVsZX0gY29udGFpbmVyIG5vZGVzXG4gKiBpbmhlcml0IHNvbWUgY29tbW9uIG1ldGhvZHMgdG8gaGVscCB3b3JrIHdpdGggdGhlaXIgY2hpbGRyZW4uXG4gKlxuICogTm90ZSB0aGF0IGFsbCBjb250YWluZXJzIGNhbiBzdG9yZSBhbnkgY29udGVudC4gSWYgeW91IHdyaXRlIGEgcnVsZSBpbnNpZGVcbiAqIGEgcnVsZSwgUG9zdENTUyB3aWxsIHBhcnNlIGl0LlxuICpcbiAqIEBleHRlbmRzIE5vZGVcbiAqIEBhYnN0cmFjdFxuICovXG5jbGFzcyBDb250YWluZXIgZXh0ZW5kcyBOb2RlIHtcblxuICAgIHB1c2goY2hpbGQpIHtcbiAgICAgICAgY2hpbGQucGFyZW50ID0gdGhpcztcbiAgICAgICAgdGhpcy5ub2Rlcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZXMgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAgICogY2FsbGluZyBgY2FsbGJhY2tgIGZvciBlYWNoIGNoaWxkLlxuICAgICAqXG4gICAgICogUmV0dXJuaW5nIGBmYWxzZWAgaW4gdGhlIGNhbGxiYWNrIHdpbGwgYnJlYWsgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2Qgb25seSBpdGVyYXRlcyB0aHJvdWdoIHRoZSBjb250YWluZXLigJlzIGltbWVkaWF0ZSBjaGlsZHJlbi5cbiAgICAgKiBJZiB5b3UgbmVlZCB0byByZWN1cnNpdmVseSBpdGVyYXRlIHRocm91Z2ggYWxsIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnRcbiAgICAgKiBub2RlcywgdXNlIHtAbGluayBDb250YWluZXIjd2Fsa30uXG4gICAgICpcbiAgICAgKiBVbmxpa2UgdGhlIGZvciBge31gLWN5Y2xlIG9yIGBBcnJheSNmb3JFYWNoYCB0aGlzIGl0ZXJhdG9yIGlzIHNhZmVcbiAgICAgKiBpZiB5b3UgYXJlIG11dGF0aW5nIHRoZSBhcnJheSBvZiBjaGlsZCBub2RlcyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqIFBvc3RDU1Mgd2lsbCBhZGp1c3QgdGhlIGN1cnJlbnQgaW5kZXggdG8gbWF0Y2ggdGhlIG11dGF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHJvb3QgPSBwb3N0Y3NzLnBhcnNlKCdhIHsgY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxIH0nKTtcbiAgICAgKiBjb25zdCBydWxlID0gcm9vdC5maXJzdDtcbiAgICAgKlxuICAgICAqIGZvciAoIGxldCBkZWNsIG9mIHJ1bGUubm9kZXMgKSB7XG4gICAgICogICAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pO1xuICAgICAqICAgICAvLyBDeWNsZSB3aWxsIGJlIGluZmluaXRlLCBiZWNhdXNlIGNsb25lQmVmb3JlIG1vdmVzIHRoZSBjdXJyZW50IG5vZGVcbiAgICAgKiAgICAgLy8gdG8gdGhlIG5leHQgaW5kZXhcbiAgICAgKiB9XG4gICAgICpcbiAgICAgKiBydWxlLmVhY2goZGVjbCA9PiB7XG4gICAgICogICAgIGRlY2wuY2xvbmVCZWZvcmUoeyBwcm9wOiAnLXdlYmtpdC0nICsgZGVjbC5wcm9wIH0pO1xuICAgICAqICAgICAvLyBXaWxsIGJlIGV4ZWN1dGVkIG9ubHkgZm9yIGNvbG9yIGFuZCB6LWluZGV4XG4gICAgICogfSk7XG4gICAgICovXG4gICAgZWFjaChjYWxsYmFjaykge1xuICAgICAgICBpZiAoICF0aGlzLmxhc3RFYWNoICkgdGhpcy5sYXN0RWFjaCA9IDA7XG4gICAgICAgIGlmICggIXRoaXMuaW5kZXhlcyApIHRoaXMuaW5kZXhlcyA9IHsgfTtcblxuICAgICAgICB0aGlzLmxhc3RFYWNoICs9IDE7XG4gICAgICAgIGxldCBpZCA9IHRoaXMubGFzdEVhY2g7XG4gICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSAwO1xuXG4gICAgICAgIGlmICggIXRoaXMubm9kZXMgKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgICAgIGxldCBpbmRleCwgcmVzdWx0O1xuICAgICAgICB3aGlsZSAoIHRoaXMuaW5kZXhlc1tpZF0gPCB0aGlzLm5vZGVzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGluZGV4ICA9IHRoaXMuaW5kZXhlc1tpZF07XG4gICAgICAgICAgICByZXN1bHQgPSBjYWxsYmFjayh0aGlzLm5vZGVzW2luZGV4XSwgaW5kZXgpO1xuICAgICAgICAgICAgaWYgKCByZXN1bHQgPT09IGZhbHNlICkgYnJlYWs7XG5cbiAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSB0aGlzLmluZGV4ZXNbaWRdO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhdmVyc2VzIHRoZSBjb250YWluZXLigJlzIGRlc2NlbmRhbnQgbm9kZXMsIGNhbGxpbmcgY2FsbGJhY2tcbiAgICAgKiBmb3IgZWFjaCBub2RlLlxuICAgICAqXG4gICAgICogTGlrZSBjb250YWluZXIuZWFjaCgpLCB0aGlzIG1ldGhvZCBpcyBzYWZlIHRvIHVzZVxuICAgICAqIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBJZiB5b3Ugb25seSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY29udGFpbmVy4oCZcyBpbW1lZGlhdGUgY2hpbGRyZW4sXG4gICAgICogdXNlIHtAbGluayBDb250YWluZXIjZWFjaH0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrIC0gaXRlcmF0b3IgcmVjZWl2ZXMgZWFjaCBub2RlIGFuZCBpbmRleFxuICAgICAqXG4gICAgICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5zIGBmYWxzZWAgaWYgaXRlcmF0aW9uIHdhcyBicm9rZVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290LndhbGsobm9kZSA9PiB7XG4gICAgICogICAvLyBUcmF2ZXJzZXMgYWxsIGRlc2NlbmRhbnQgbm9kZXMuXG4gICAgICogfSk7XG4gICAgICovXG4gICAgd2FsayhjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy5lYWNoKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGxldCByZXN1bHQgPSBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICBpZiAoIHJlc3VsdCAhPT0gZmFsc2UgJiYgY2hpbGQud2FsayApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBjaGlsZC53YWxrKGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYXZlcnNlcyB0aGUgY29udGFpbmVy4oCZcyBkZXNjZW5kYW50IG5vZGVzLCBjYWxsaW5nIGNhbGxiYWNrXG4gICAgICogZm9yIGVhY2ggZGVjbGFyYXRpb24gbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGRlY2xhcmF0aW9uc1xuICAgICAqIHdpdGggbWF0Y2hpbmcgcHJvcGVydGllcy5cbiAgICAgKlxuICAgICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd8UmVnRXhwfSBbcHJvcF0gICAtIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZmlsdGVyIGRlY2xhcmF0aW9ucyBieSBwcm9wZXJ0eSBuYW1lXG4gICAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAtIGl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC53YWxrRGVjbHMoZGVjbCA9PiB7XG4gICAgICogICBjaGVja1Byb3BlcnR5U3VwcG9ydChkZWNsLnByb3ApO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogcm9vdC53YWxrRGVjbHMoJ2JvcmRlci1yYWRpdXMnLCBkZWNsID0+IHtcbiAgICAgKiAgIGRlY2wucmVtb3ZlKCk7XG4gICAgICogfSk7XG4gICAgICpcbiAgICAgKiByb290LndhbGtEZWNscygvXmJhY2tncm91bmQvLCBkZWNsID0+IHtcbiAgICAgKiAgIGRlY2wudmFsdWUgPSB0YWtlRmlyc3RDb2xvckZyb21HcmFkaWVudChkZWNsLnZhbHVlKTtcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICB3YWxrRGVjbHMocHJvcCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCAhY2FsbGJhY2sgKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IHByb3A7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICggcHJvcCBpbnN0YW5jZW9mIFJlZ0V4cCApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhbGsoIChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIHByb3AudGVzdChjaGlsZC5wcm9wKSApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNoaWxkLCBpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhbGsoIChjaGlsZCwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2RlY2wnICYmIGNoaWxkLnByb3AgPT09IHByb3AgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIHJ1bGUgbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIHJ1bGVzXG4gICAgICogd2l0aCBtYXRjaGluZyBzZWxlY3RvcnMuXG4gICAgICpcbiAgICAgKiBMaWtlIHtAbGluayBDb250YWluZXIjZWFjaH0sIHRoaXMgbWV0aG9kIGlzIHNhZmVcbiAgICAgKiB0byB1c2UgaWYgeW91IGFyZSBtdXRhdGluZyBhcnJheXMgZHVyaW5nIGl0ZXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gW3NlbGVjdG9yXSAtIHN0cmluZyBvciByZWd1bGFyIGV4cHJlc3Npb25cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgcnVsZXMgYnkgc2VsZWN0b3JcbiAgICAgKiBAcGFyYW0ge2NoaWxkSXRlcmF0b3J9IGNhbGxiYWNrICAgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IHNlbGVjdG9ycyA9IFtdO1xuICAgICAqIHJvb3Qud2Fsa1J1bGVzKHJ1bGUgPT4ge1xuICAgICAqICAgc2VsZWN0b3JzLnB1c2gocnVsZS5zZWxlY3Rvcik7XG4gICAgICogfSk7XG4gICAgICogY29uc29sZS5sb2coYFlvdXIgQ1NTIHVzZXMgJHtzZWxlY3RvcnMubGVuZ3RofSBzZWxlY3RvcnNgKTtcbiAgICAgKi9cbiAgICB3YWxrUnVsZXMoc2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICggIWNhbGxiYWNrICkge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBzZWxlY3RvcjtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAncnVsZScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIHNlbGVjdG9yIGluc3RhbmNlb2YgUmVnRXhwICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAncnVsZScgJiYgc2VsZWN0b3IudGVzdChjaGlsZC5zZWxlY3RvcikgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdydWxlJyAmJiBjaGlsZC5zZWxlY3RvciA9PT0gc2VsZWN0b3IgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIGF0LXJ1bGUgbm9kZS5cbiAgICAgKlxuICAgICAqIElmIHlvdSBwYXNzIGEgZmlsdGVyLCBpdGVyYXRpb24gd2lsbCBvbmx5IGhhcHBlbiBvdmVyIGF0LXJ1bGVzXG4gICAgICogdGhhdCBoYXZlIG1hdGNoaW5nIG5hbWVzLlxuICAgICAqXG4gICAgICogTGlrZSB7QGxpbmsgQ29udGFpbmVyI2VhY2h9LCB0aGlzIG1ldGhvZCBpcyBzYWZlXG4gICAgICogdG8gdXNlIGlmIHlvdSBhcmUgbXV0YXRpbmcgYXJyYXlzIGR1cmluZyBpdGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xSZWdFeHB9IFtuYW1lXSAgIC0gc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBmaWx0ZXIgYXQtcnVsZXMgYnkgbmFtZVxuICAgICAqIEBwYXJhbSB7Y2hpbGRJdGVyYXRvcn0gY2FsbGJhY2sgLSBpdGVyYXRvciByZWNlaXZlcyBlYWNoIG5vZGUgYW5kIGluZGV4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtmYWxzZXx1bmRlZmluZWR9IHJldHVybnMgYGZhbHNlYCBpZiBpdGVyYXRpb24gd2FzIGJyb2tlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJvb3Qud2Fsa0F0UnVsZXMocnVsZSA9PiB7XG4gICAgICogICBpZiAoIGlzT2xkKHJ1bGUubmFtZSkgKSBydWxlLnJlbW92ZSgpO1xuICAgICAqIH0pO1xuICAgICAqXG4gICAgICogbGV0IGZpcnN0ID0gZmFsc2U7XG4gICAgICogcm9vdC53YWxrQXRSdWxlcygnY2hhcnNldCcsIHJ1bGUgPT4ge1xuICAgICAqICAgaWYgKCAhZmlyc3QgKSB7XG4gICAgICogICAgIGZpcnN0ID0gdHJ1ZTtcbiAgICAgKiAgIH0gZWxzZSB7XG4gICAgICogICAgIHJ1bGUucmVtb3ZlKCk7XG4gICAgICogICB9XG4gICAgICogfSk7XG4gICAgICovXG4gICAgd2Fsa0F0UnVsZXMobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCAhY2FsbGJhY2sgKSB7XG4gICAgICAgICAgICBjYWxsYmFjayA9IG5hbWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soY2hpbGQsIGkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKCBuYW1lIGluc3RhbmNlb2YgUmVnRXhwICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud2FsayggKGNoaWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCBjaGlsZC50eXBlID09PSAnYXRydWxlJyAmJiBuYW1lLnRlc3QoY2hpbGQubmFtZSkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIGNoaWxkLnR5cGUgPT09ICdhdHJ1bGUnICYmIGNoaWxkLm5hbWUgPT09IG5hbWUgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmF2ZXJzZXMgdGhlIGNvbnRhaW5lcuKAmXMgZGVzY2VuZGFudCBub2RlcywgY2FsbGluZyBjYWxsYmFja1xuICAgICAqIGZvciBlYWNoIGNvbW1lbnQgbm9kZS5cbiAgICAgKlxuICAgICAqIExpa2Uge0BsaW5rIENvbnRhaW5lciNlYWNofSwgdGhpcyBtZXRob2QgaXMgc2FmZVxuICAgICAqIHRvIHVzZSBpZiB5b3UgYXJlIG11dGF0aW5nIGFycmF5cyBkdXJpbmcgaXRlcmF0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtjaGlsZEl0ZXJhdG9yfSBjYWxsYmFjayAtIGl0ZXJhdG9yIHJlY2VpdmVzIGVhY2ggbm9kZSBhbmQgaW5kZXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge2ZhbHNlfHVuZGVmaW5lZH0gcmV0dXJucyBgZmFsc2VgIGlmIGl0ZXJhdGlvbiB3YXMgYnJva2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC53YWxrQ29tbWVudHMoY29tbWVudCA9PiB7XG4gICAgICogICBjb21tZW50LnJlbW92ZSgpO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHdhbGtDb21tZW50cyhjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gdGhpcy53YWxrKCAoY2hpbGQsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICggY2hpbGQudHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhjaGlsZCwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluc2VydHMgbmV3IG5vZGVzIHRvIHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiAtIG5ldyBub2Rlc1xuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7XG4gICAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pO1xuICAgICAqIHJ1bGUuYXBwZW5kKGRlY2wxLCBkZWNsMik7XG4gICAgICpcbiAgICAgKiByb290LmFwcGVuZCh7IG5hbWU6ICdjaGFyc2V0JywgcGFyYW1zOiAnXCJVVEYtOFwiJyB9KTsgIC8vIGF0LXJ1bGVcbiAgICAgKiByb290LmFwcGVuZCh7IHNlbGVjdG9yOiAnYScgfSk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBydWxlXG4gICAgICogcnVsZS5hcHBlbmQoeyBwcm9wOiAnY29sb3InLCB2YWx1ZTogJ2JsYWNrJyB9KTsgICAgICAgLy8gZGVjbGFyYXRpb25cbiAgICAgKiBydWxlLmFwcGVuZCh7IHRleHQ6ICdDb21tZW50JyB9KSAgICAgICAgICAgICAgICAgICAgICAvLyBjb21tZW50XG4gICAgICpcbiAgICAgKiByb290LmFwcGVuZCgnYSB7fScpO1xuICAgICAqIHJvb3QuZmlyc3QuYXBwZW5kKCdjb2xvcjogYmxhY2s7IHotaW5kZXg6IDEnKTtcbiAgICAgKi9cbiAgICBhcHBlbmQoLi4uY2hpbGRyZW4pIHtcbiAgICAgICAgZm9yICggbGV0IGNoaWxkIG9mIGNoaWxkcmVuICkge1xuICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMubGFzdCk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiBub2RlcyApIHRoaXMubm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnNlcnRzIG5ldyBub2RlcyB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Li4uKE5vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW10pfSBjaGlsZHJlbiAtIG5ldyBub2Rlc1xuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGRlY2wxID0gcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7XG4gICAgICogY29uc3QgZGVjbDIgPSBwb3N0Y3NzLmRlY2woeyBwcm9wOiAnYmFja2dyb3VuZC1jb2xvcicsIHZhbHVlOiAnd2hpdGUnIH0pO1xuICAgICAqIHJ1bGUucHJlcGVuZChkZWNsMSwgZGVjbDIpO1xuICAgICAqXG4gICAgICogcm9vdC5hcHBlbmQoeyBuYW1lOiAnY2hhcnNldCcsIHBhcmFtczogJ1wiVVRGLThcIicgfSk7ICAvLyBhdC1ydWxlXG4gICAgICogcm9vdC5hcHBlbmQoeyBzZWxlY3RvcjogJ2EnIH0pOyAgICAgICAgICAgICAgICAgICAgICAgLy8gcnVsZVxuICAgICAqIHJ1bGUuYXBwZW5kKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdibGFjaycgfSk7ICAgICAgIC8vIGRlY2xhcmF0aW9uXG4gICAgICogcnVsZS5hcHBlbmQoeyB0ZXh0OiAnQ29tbWVudCcgfSkgICAgICAgICAgICAgICAgICAgICAgLy8gY29tbWVudFxuICAgICAqXG4gICAgICogcm9vdC5hcHBlbmQoJ2Ege30nKTtcbiAgICAgKiByb290LmZpcnN0LmFwcGVuZCgnY29sb3I6IGJsYWNrOyB6LWluZGV4OiAxJyk7XG4gICAgICovXG4gICAgcHJlcGVuZCguLi5jaGlsZHJlbikge1xuICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuLnJldmVyc2UoKTtcbiAgICAgICAgZm9yICggbGV0IGNoaWxkIG9mIGNoaWxkcmVuICkge1xuICAgICAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoY2hpbGQsIHRoaXMuZmlyc3QsICdwcmVwZW5kJykucmV2ZXJzZSgpO1xuICAgICAgICAgICAgZm9yICggbGV0IG5vZGUgb2Ygbm9kZXMgKSB0aGlzLm5vZGVzLnVuc2hpZnQobm9kZSk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgaWQgaW4gdGhpcy5pbmRleGVzICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSB0aGlzLmluZGV4ZXNbaWRdICsgbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNsZWFuUmF3cyhrZWVwQmV0d2Vlbikge1xuICAgICAgICBzdXBlci5jbGVhblJhd3Moa2VlcEJldHdlZW4pO1xuICAgICAgICBpZiAoIHRoaXMubm9kZXMgKSB7XG4gICAgICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiB0aGlzLm5vZGVzICkgbm9kZS5jbGVhblJhd3Moa2VlcEJldHdlZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGJlZm9yZSBvbGQgbm9kZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tm9kZXxudW1iZXJ9IGV4aXN0ICAgICAgICAgICAgIC0gY2hpbGQgb3IgY2hpbGTigJlzIGluZGV4LlxuICAgICAqIEBwYXJhbSB7Tm9kZXxvYmplY3R8c3RyaW5nfE5vZGVbXX0gYWRkIC0gbmV3IG5vZGVcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IHRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmluc2VydEJlZm9yZShkZWNsLCBkZWNsLmNsb25lKHsgcHJvcDogJy13ZWJraXQtJyArIGRlY2wucHJvcCB9KSk7XG4gICAgICovXG4gICAgaW5zZXJ0QmVmb3JlKGV4aXN0LCBhZGQpIHtcbiAgICAgICAgZXhpc3QgPSB0aGlzLmluZGV4KGV4aXN0KTtcblxuICAgICAgICBsZXQgdHlwZSAgPSBleGlzdCA9PT0gMCA/ICdwcmVwZW5kJyA6IGZhbHNlO1xuICAgICAgICBsZXQgbm9kZXMgPSB0aGlzLm5vcm1hbGl6ZShhZGQsIHRoaXMubm9kZXNbZXhpc3RdLCB0eXBlKS5yZXZlcnNlKCk7XG4gICAgICAgIGZvciAoIGxldCBub2RlIG9mIG5vZGVzICkgdGhpcy5ub2Rlcy5zcGxpY2UoZXhpc3QsIDAsIG5vZGUpO1xuXG4gICAgICAgIGxldCBpbmRleDtcbiAgICAgICAgZm9yICggbGV0IGlkIGluIHRoaXMuaW5kZXhlcyApIHtcbiAgICAgICAgICAgIGluZGV4ID0gdGhpcy5pbmRleGVzW2lkXTtcbiAgICAgICAgICAgIGlmICggZXhpc3QgPD0gaW5kZXggKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbmRleGVzW2lkXSA9IGluZGV4ICsgbm9kZXMubGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5zZXJ0IG5ldyBub2RlIGFmdGVyIG9sZCBub2RlIHdpdGhpbiB0aGUgY29udGFpbmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtOb2RlfG51bWJlcn0gZXhpc3QgICAgICAgICAgICAgLSBjaGlsZCBvciBjaGlsZOKAmXMgaW5kZXhcbiAgICAgKiBAcGFyYW0ge05vZGV8b2JqZWN0fHN0cmluZ3xOb2RlW119IGFkZCAtIG5ldyBub2RlXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtOb2RlfSB0aGlzIG5vZGUgZm9yIG1ldGhvZHMgY2hhaW5cbiAgICAgKi9cbiAgICBpbnNlcnRBZnRlcihleGlzdCwgYWRkKSB7XG4gICAgICAgIGV4aXN0ID0gdGhpcy5pbmRleChleGlzdCk7XG5cbiAgICAgICAgbGV0IG5vZGVzID0gdGhpcy5ub3JtYWxpemUoYWRkLCB0aGlzLm5vZGVzW2V4aXN0XSkucmV2ZXJzZSgpO1xuICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiBub2RlcyApIHRoaXMubm9kZXMuc3BsaWNlKGV4aXN0ICsgMSwgMCwgbm9kZSk7XG5cbiAgICAgICAgbGV0IGluZGV4O1xuICAgICAgICBmb3IgKCBsZXQgaWQgaW4gdGhpcy5pbmRleGVzICkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLmluZGV4ZXNbaWRdO1xuICAgICAgICAgICAgaWYgKCBleGlzdCA8IGluZGV4ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCArIG5vZGVzLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZXMgbm9kZSBmcm9tIHRoZSBjb250YWluZXIgYW5kIGNsZWFucyB0aGUgcGFyZW50IHByb3BlcnRpZXNcbiAgICAgKiBmcm9tIHRoZSBub2RlIGFuZCBpdHMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV8bnVtYmVyfSBjaGlsZCAtIGNoaWxkIG9yIGNoaWxk4oCZcyBpbmRleFxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDVcbiAgICAgKiBydWxlLnJlbW92ZUNoaWxkKGRlY2wpO1xuICAgICAqIHJ1bGUubm9kZXMubGVuZ3RoICAvLz0+IDRcbiAgICAgKiBkZWNsLnBhcmVudCAgICAgICAgLy89PiB1bmRlZmluZWRcbiAgICAgKi9cbiAgICByZW1vdmVDaGlsZChjaGlsZCkge1xuICAgICAgICBjaGlsZCA9IHRoaXMuaW5kZXgoY2hpbGQpO1xuICAgICAgICB0aGlzLm5vZGVzW2NoaWxkXS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubm9kZXMuc3BsaWNlKGNoaWxkLCAxKTtcblxuICAgICAgICBsZXQgaW5kZXg7XG4gICAgICAgIGZvciAoIGxldCBpZCBpbiB0aGlzLmluZGV4ZXMgKSB7XG4gICAgICAgICAgICBpbmRleCA9IHRoaXMuaW5kZXhlc1tpZF07XG4gICAgICAgICAgICBpZiAoIGluZGV4ID49IGNoaWxkICkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5kZXhlc1tpZF0gPSBpbmRleCAtIDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGFsbCBjaGlsZHJlbiBmcm9tIHRoZSBjb250YWluZXJcbiAgICAgKiBhbmQgY2xlYW5zIHRoZWlyIHBhcmVudCBwcm9wZXJ0aWVzLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Tm9kZX0gdGhpcyBub2RlIGZvciBtZXRob2RzIGNoYWluXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJ1bGUucmVtb3ZlQWxsKCk7XG4gICAgICogcnVsZS5ub2Rlcy5sZW5ndGggLy89PiAwXG4gICAgICovXG4gICAgcmVtb3ZlQWxsKCkge1xuICAgICAgICBmb3IgKCBsZXQgbm9kZSBvZiB0aGlzLm5vZGVzICkgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFzc2VzIGFsbCBkZWNsYXJhdGlvbiB2YWx1ZXMgd2l0aGluIHRoZSBjb250YWluZXIgdGhhdCBtYXRjaCBwYXR0ZXJuXG4gICAgICogdGhyb3VnaCBjYWxsYmFjaywgcmVwbGFjaW5nIHRob3NlIHZhbHVlcyB3aXRoIHRoZSByZXR1cm5lZCByZXN1bHRcbiAgICAgKiBvZiBjYWxsYmFjay5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBpZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIHVuaXQgb3IgZnVuY3Rpb25cbiAgICAgKiBhbmQgbmVlZCB0byBpdGVyYXRlIHRocm91Z2ggYWxsIHZhbHVlcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfFJlZ0V4cH0gcGF0dGVybiAgICAgIC0gcmVwbGFjZSBwYXR0ZXJuXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG9wdHMgICAgICAgICAgICAgICAgLSBvcHRpb25zIHRvIHNwZWVkIHVwIHRoZSBzZWFyY2hcbiAgICAgKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXX0gb3B0cy5wcm9wcyAtIGFuIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMuZmFzdCAgICAgICAgICAgLSBzdHJpbmcgdGhhdOKAmXMgdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gbmFycm93IGRvd24gdmFsdWVzIGFuZCBzcGVlZCB1cFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHJlZ2V4cCBzZWFyY2hcbiAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufHN0cmluZ30gY2FsbGJhY2sgICAtIHN0cmluZyB0byByZXBsYWNlIHBhdHRlcm5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGNhbGxiYWNrIHRoYXQgcmV0dXJucyBhIG5ld1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY2FsbGJhY2sgd2lsbCByZWNlaXZlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhvc2VcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NlZCB0byBhIGZ1bmN0aW9uIHBhcmFtZXRlclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgYFN0cmluZyNyZXBsYWNlYC5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge05vZGV9IHRoaXMgbm9kZSBmb3IgbWV0aG9kcyBjaGFpblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByb290LnJlcGxhY2VWYWx1ZXMoL1xcZCtyZW0vLCB7IGZhc3Q6ICdyZW0nIH0sIHN0cmluZyA9PiB7XG4gICAgICogICByZXR1cm4gMTUgKiBwYXJzZUludChzdHJpbmcpICsgJ3B4JztcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICByZXBsYWNlVmFsdWVzKHBhdHRlcm4sIG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICggIWNhbGxiYWNrICkge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgICAgICAgICAgb3B0cyA9IHsgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMud2Fsa0RlY2xzKCBkZWNsID0+IHtcbiAgICAgICAgICAgIGlmICggb3B0cy5wcm9wcyAmJiBvcHRzLnByb3BzLmluZGV4T2YoZGVjbC5wcm9wKSA9PT0gLTEgKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoIG9wdHMuZmFzdCAgJiYgZGVjbC52YWx1ZS5pbmRleE9mKG9wdHMuZmFzdCkgPT09IC0xICkgcmV0dXJuO1xuXG4gICAgICAgICAgICBkZWNsLnZhbHVlID0gZGVjbC52YWx1ZS5yZXBsYWNlKHBhdHRlcm4sIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWBcbiAgICAgKiBmb3IgYWxsIG9mIHRoZSBjb250YWluZXLigJlzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtjaGlsZENvbmRpdGlvbn0gY29uZGl0aW9uIC0gaXRlcmF0b3IgcmV0dXJucyB0cnVlIG9yIGZhbHNlLlxuICAgICAqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gaXMgZXZlcnkgY2hpbGQgcGFzcyBjb25kaXRpb25cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgbm9QcmVmaXhlcyA9IHJ1bGUuZXZlcnkoaSA9PiBpLnByb3BbMF0gIT09ICctJyk7XG4gICAgICovXG4gICAgZXZlcnkoY29uZGl0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzLmV2ZXJ5KGNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBgdHJ1ZWAgaWYgY2FsbGJhY2sgcmV0dXJucyBgdHJ1ZWAgZm9yIChhdCBsZWFzdCkgb25lXG4gICAgICogb2YgdGhlIGNvbnRhaW5lcuKAmXMgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge2NoaWxkQ29uZGl0aW9ufSBjb25kaXRpb24gLSBpdGVyYXRvciByZXR1cm5zIHRydWUgb3IgZmFsc2UuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBpcyBzb21lIGNoaWxkIHBhc3MgY29uZGl0aW9uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGNvbnN0IGhhc1ByZWZpeCA9IHJ1bGUuc29tZShpID0+IGkucHJvcFswXSA9PT0gJy0nKTtcbiAgICAgKi9cbiAgICBzb21lKGNvbmRpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5ub2Rlcy5zb21lKGNvbmRpdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIGBjaGlsZGDigJlzIGluZGV4IHdpdGhpbiB0aGUge0BsaW5rIENvbnRhaW5lciNub2Rlc30gYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkIC0gY2hpbGQgb2YgdGhlIGN1cnJlbnQgY29udGFpbmVyLlxuICAgICAqXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBjaGlsZCBpbmRleFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmluZGV4KCBydWxlLm5vZGVzWzJdICkgLy89PiAyXG4gICAgICovXG4gICAgaW5kZXgoY2hpbGQpIHtcbiAgICAgICAgaWYgKCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInICkge1xuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubm9kZXMuaW5kZXhPZihjaGlsZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29udGFpbmVy4oCZcyBmaXJzdCBjaGlsZC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtOb2RlfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBydWxlLmZpcnN0ID09IHJ1bGVzLm5vZGVzWzBdO1xuICAgICAqL1xuICAgIGdldCBmaXJzdCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5ub2RlcyApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250YWluZXLigJlzIGxhc3QgY2hpbGQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Tm9kZX1cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcnVsZS5sYXN0ID09IHJ1bGUubm9kZXNbcnVsZS5ub2Rlcy5sZW5ndGggLSAxXTtcbiAgICAgKi9cbiAgICBnZXQgbGFzdCgpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5ub2RlcyApIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB0aGlzLm5vZGVzW3RoaXMubm9kZXMubGVuZ3RoIC0gMV07XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKG5vZGVzLCBzYW1wbGUpIHtcbiAgICAgICAgaWYgKCB0eXBlb2Ygbm9kZXMgPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgbGV0IHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xuICAgICAgICAgICAgbm9kZXMgPSBjbGVhblNvdXJjZShwYXJzZShub2Rlcykubm9kZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCBBcnJheS5pc0FycmF5KG5vZGVzKSApIHtcbiAgICAgICAgICAgIG5vZGVzID0gbm9kZXMuc2xpY2UoMCk7XG4gICAgICAgICAgICBmb3IgKCBsZXQgaSBvZiBub2RlcyApIHtcbiAgICAgICAgICAgICAgICBpZiAoIGkucGFyZW50ICkgaS5wYXJlbnQucmVtb3ZlQ2hpbGQoaSwgJ2lnbm9yZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy50eXBlID09PSAncm9vdCcgKSB7XG4gICAgICAgICAgICBub2RlcyA9IG5vZGVzLm5vZGVzLnNsaWNlKDApO1xuICAgICAgICAgICAgZm9yICggbGV0IGkgb2Ygbm9kZXMgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBpLnBhcmVudCApIGkucGFyZW50LnJlbW92ZUNoaWxkKGksICdpZ25vcmUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICggbm9kZXMudHlwZSApIHtcbiAgICAgICAgICAgIG5vZGVzID0gW25vZGVzXTtcbiAgICAgICAgfSBlbHNlIGlmICggbm9kZXMucHJvcCApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIG5vZGVzLnZhbHVlID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1ZhbHVlIGZpZWxkIGlzIG1pc3NlZCBpbiBub2RlIGNyZWF0aW9uJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2Ygbm9kZXMudmFsdWUgIT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgICAgIG5vZGVzLnZhbHVlID0gU3RyaW5nKG5vZGVzLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzID0gW25ldyBEZWNsYXJhdGlvbihub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy5zZWxlY3RvciApIHtcbiAgICAgICAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJyk7XG4gICAgICAgICAgICBub2RlcyA9IFtuZXcgUnVsZShub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy5uYW1lICkge1xuICAgICAgICAgICAgbGV0IEF0UnVsZSA9IHJlcXVpcmUoJy4vYXQtcnVsZScpO1xuICAgICAgICAgICAgbm9kZXMgPSBbbmV3IEF0UnVsZShub2RlcyldO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2Rlcy50ZXh0ICkge1xuICAgICAgICAgICAgbm9kZXMgPSBbbmV3IENvbW1lbnQobm9kZXMpXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBub2RlIHR5cGUgaW4gbm9kZSBjcmVhdGlvbicpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2Nlc3NlZCA9IG5vZGVzLm1hcCggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBpLmJlZm9yZSAhPT0gJ2Z1bmN0aW9uJyApIGkgPSB0aGlzLnJlYnVpbGQoaSk7XG5cbiAgICAgICAgICAgIGlmICggaS5wYXJlbnQgKSBpLnBhcmVudC5yZW1vdmVDaGlsZChpKTtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5iZWZvcmUgPT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIGlmICggc2FtcGxlICYmIHR5cGVvZiBzYW1wbGUucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgICAgICBpLnJhd3MuYmVmb3JlID0gc2FtcGxlLnJhd3MuYmVmb3JlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaS5wYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gICAgfVxuXG4gICAgcmVidWlsZChub2RlLCBwYXJlbnQpIHtcbiAgICAgICAgbGV0IGZpeDtcbiAgICAgICAgaWYgKCBub2RlLnR5cGUgPT09ICdyb290JyApIHtcbiAgICAgICAgICAgIGxldCBSb290ID0gcmVxdWlyZSgnLi9yb290Jyk7XG4gICAgICAgICAgICBmaXggPSBuZXcgUm9vdCgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdhdHJ1bGUnICkge1xuICAgICAgICAgICAgbGV0IEF0UnVsZSA9IHJlcXVpcmUoJy4vYXQtcnVsZScpO1xuICAgICAgICAgICAgZml4ID0gbmV3IEF0UnVsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdydWxlJyApIHtcbiAgICAgICAgICAgIGxldCBSdWxlID0gcmVxdWlyZSgnLi9ydWxlJyk7XG4gICAgICAgICAgICBmaXggPSBuZXcgUnVsZSgpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgIGZpeCA9IG5ldyBEZWNsYXJhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKCBub2RlLnR5cGUgPT09ICdjb21tZW50JyApIHtcbiAgICAgICAgICAgIGZpeCA9IG5ldyBDb21tZW50KCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKCBsZXQgaSBpbiBub2RlICkge1xuICAgICAgICAgICAgaWYgKCBpID09PSAnbm9kZXMnICkge1xuICAgICAgICAgICAgICAgIGZpeC5ub2RlcyA9IG5vZGUubm9kZXMubWFwKCBqID0+IHRoaXMucmVidWlsZChqLCBmaXgpICk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBpID09PSAncGFyZW50JyAmJiBwYXJlbnQgKSB7XG4gICAgICAgICAgICAgICAgZml4LnBhcmVudCA9IHBhcmVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIG5vZGUuaGFzT3duUHJvcGVydHkoaSkgKSB7XG4gICAgICAgICAgICAgICAgZml4W2ldID0gbm9kZVtpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaXg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIENvbnRhaW5lciNcbiAgICAgKiBAbWVtYmVyIHtOb2RlW119IG5vZGVzIC0gYW4gYXJyYXkgY29udGFpbmluZyB0aGUgY29udGFpbmVy4oCZcyBjaGlsZHJlblxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZSgnYSB7IGNvbG9yOiBibGFjayB9Jyk7XG4gICAgICogcm9vdC5ub2Rlcy5sZW5ndGggICAgICAgICAgIC8vPT4gMVxuICAgICAqIHJvb3Qubm9kZXNbMF0uc2VsZWN0b3IgICAgICAvLz0+ICdhJ1xuICAgICAqIHJvb3Qubm9kZXNbMF0ubm9kZXNbMF0ucHJvcCAvLz0+ICdjb2xvcidcbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBDb250YWluZXI7XG5cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRDb25kaXRpb25cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgICAtIGNvbnRhaW5lciBjaGlsZFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IC0gY2hpbGQgaW5kZXhcbiAqIEBwYXJhbSB7Tm9kZVtdfSBub2RlcyAtIGFsbCBjb250YWluZXIgY2hpbGRyZW5cbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cblxuLyoqXG4gKiBAY2FsbGJhY2sgY2hpbGRJdGVyYXRvclxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgIC0gY29udGFpbmVyIGNoaWxkXG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXggLSBjaGlsZCBpbmRleFxuICogQHJldHVybiB7ZmFsc2V8dW5kZWZpbmVkfSByZXR1cm5pbmcgYGZhbHNlYCB3aWxsIGJyZWFrIGl0ZXJhdGlvblxuICovXG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _container = require('./container');\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Represents a CSS file and contains all its parsed nodes.\n *\n * @extends Container\n *\n * @example\n * const root = postcss.parse('a{color:black} b{z-index:2}');\n * root.type //=> 'root'\n * root.nodes.length //=> 2\n */\nvar Root = function (_Container) {\n _inherits(Root, _Container);\n\n function Root(defaults) {\n _classCallCheck(this, Root);\n\n var _this = _possibleConstructorReturn(this, _Container.call(this, defaults));\n\n _this.type = 'root';\n if (!_this.nodes) _this.nodes = [];\n return _this;\n }\n\n Root.prototype.removeChild = function removeChild(child, ignore) {\n var index = this.index(child);\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before;\n }\n\n return _Container.prototype.removeChild.call(this, child);\n };\n\n Root.prototype.normalize = function normalize(child, sample, type) {\n var nodes = _Container.prototype.normalize.call(this, child);\n\n if (sample) {\n if (type === 'prepend') {\n if (this.nodes.length > 1) {\n sample.raws.before = this.nodes[1].raws.before;\n } else {\n delete sample.raws.before;\n }\n } else if (this.first !== sample) {\n for (var _iterator = nodes, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var node = _ref;\n\n node.raws.before = sample.raws.before;\n }\n }\n }\n\n return nodes;\n };\n\n /**\n * Returns a {@link Result} instance representing the root’s CSS.\n *\n * @param {processOptions} [opts] - options with only `to` and `map` keys\n *\n * @return {Result} result with current root’s CSS\n *\n * @example\n * const root1 = postcss.parse(css1, { from: 'a.css' });\n * const root2 = postcss.parse(css2, { from: 'b.css' });\n * root1.append(root2);\n * const result = root1.toResult({ to: 'all.css', map: true });\n */\n\n\n Root.prototype.toResult = function toResult() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var LazyResult = require('./lazy-result');\n var Processor = require('./processor');\n\n var lazy = new LazyResult(new Processor(), this, opts);\n return lazy.stringify();\n };\n\n /**\n * @memberof Root#\n * @member {object} raws - Information to generate byte-to-byte equal\n * node string as it was in the origin input.\n *\n * Every parser saves its own properties,\n * but the default CSS parser uses:\n *\n * * `after`: the space symbols after the last child to the end of file.\n * * `semicolon`: is the last child has an (optional) semicolon.\n *\n * @example\n * postcss.parse('a {}\\n').raws //=> { after: '\\n' }\n * postcss.parse('a {}').raws //=> { after: '' }\n */\n\n return Root;\n}(_container2.default);\n\nexports.default = Root;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvb3QuZXM2Il0sIm5hbWVzIjpbIlJvb3QiLCJkZWZhdWx0cyIsInR5cGUiLCJub2RlcyIsInJlbW92ZUNoaWxkIiwiY2hpbGQiLCJpZ25vcmUiLCJpbmRleCIsImxlbmd0aCIsInJhd3MiLCJiZWZvcmUiLCJub3JtYWxpemUiLCJzYW1wbGUiLCJmaXJzdCIsIm5vZGUiLCJ0b1Jlc3VsdCIsIm9wdHMiLCJMYXp5UmVzdWx0IiwicmVxdWlyZSIsIlByb2Nlc3NvciIsImxhenkiLCJzdHJpbmdpZnkiLCJDb250YWluZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7Ozs7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7SUFVTUEsSTs7O0FBRUYsa0JBQVlDLFFBQVosRUFBc0I7QUFBQTs7QUFBQSxxREFDbEIsc0JBQU1BLFFBQU4sQ0FEa0I7O0FBRWxCLGNBQUtDLElBQUwsR0FBWSxNQUFaO0FBQ0EsWUFBSyxDQUFDLE1BQUtDLEtBQVgsRUFBbUIsTUFBS0EsS0FBTCxHQUFhLEVBQWI7QUFIRDtBQUlyQjs7bUJBRURDLFcsd0JBQVlDLEssRUFBT0MsTSxFQUFRO0FBQ3ZCLFlBQU1DLFFBQVEsS0FBS0EsS0FBTCxDQUFXRixLQUFYLENBQWQ7O0FBRUEsWUFBSyxDQUFDQyxNQUFELElBQVdDLFVBQVUsQ0FBckIsSUFBMEIsS0FBS0osS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQW5ELEVBQXVEO0FBQ25ELGlCQUFLTCxLQUFMLENBQVcsQ0FBWCxFQUFjTSxJQUFkLENBQW1CQyxNQUFuQixHQUE0QixLQUFLUCxLQUFMLENBQVdJLEtBQVgsRUFBa0JFLElBQWxCLENBQXVCQyxNQUFuRDtBQUNIOztBQUVELGVBQU8scUJBQU1OLFdBQU4sWUFBa0JDLEtBQWxCLENBQVA7QUFDSCxLOzttQkFFRE0sUyxzQkFBVU4sSyxFQUFPTyxNLEVBQVFWLEksRUFBTTtBQUMzQixZQUFJQyxRQUFRLHFCQUFNUSxTQUFOLFlBQWdCTixLQUFoQixDQUFaOztBQUVBLFlBQUtPLE1BQUwsRUFBYztBQUNWLGdCQUFLVixTQUFTLFNBQWQsRUFBMEI7QUFDdEIsb0JBQUssS0FBS0MsS0FBTCxDQUFXSyxNQUFYLEdBQW9CLENBQXpCLEVBQTZCO0FBQ3pCSSwyQkFBT0gsSUFBUCxDQUFZQyxNQUFaLEdBQXFCLEtBQUtQLEtBQUwsQ0FBVyxDQUFYLEVBQWNNLElBQWQsQ0FBbUJDLE1BQXhDO0FBQ0gsaUJBRkQsTUFFTztBQUNILDJCQUFPRSxPQUFPSCxJQUFQLENBQVlDLE1BQW5CO0FBQ0g7QUFDSixhQU5ELE1BTU8sSUFBSyxLQUFLRyxLQUFMLEtBQWVELE1BQXBCLEVBQTZCO0FBQ2hDLHFDQUFrQlQsS0FBbEIsa0hBQTBCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSx3QkFBaEJXLElBQWdCOztBQUN0QkEseUJBQUtMLElBQUwsQ0FBVUMsTUFBVixHQUFtQkUsT0FBT0gsSUFBUCxDQUFZQyxNQUEvQjtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxlQUFPUCxLQUFQO0FBQ0gsSzs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7O21CQWFBWSxRLHVCQUFxQjtBQUFBLFlBQVpDLElBQVksdUVBQUwsRUFBSzs7QUFDakIsWUFBSUMsYUFBYUMsUUFBUSxlQUFSLENBQWpCO0FBQ0EsWUFBSUMsWUFBYUQsUUFBUSxhQUFSLENBQWpCOztBQUVBLFlBQUlFLE9BQU8sSUFBSUgsVUFBSixDQUFlLElBQUlFLFNBQUosRUFBZixFQUFnQyxJQUFoQyxFQUFzQ0gsSUFBdEMsQ0FBWDtBQUNBLGVBQU9JLEtBQUtDLFNBQUwsRUFBUDtBQUNILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBM0RlQyxtQjs7a0JBNkVKdEIsSSIsImZpbGUiOiJyb290LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRhaW5lciBmcm9tICcuL2NvbnRhaW5lcic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIENTUyBmaWxlIGFuZCBjb250YWlucyBhbGwgaXRzIHBhcnNlZCBub2Rlcy5cbiAqXG4gKiBAZXh0ZW5kcyBDb250YWluZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCA9IHBvc3Rjc3MucGFyc2UoJ2F7Y29sb3I6YmxhY2t9IGJ7ei1pbmRleDoyfScpO1xuICogcm9vdC50eXBlICAgICAgICAgLy89PiAncm9vdCdcbiAqIHJvb3Qubm9kZXMubGVuZ3RoIC8vPT4gMlxuICovXG5jbGFzcyBSb290IGV4dGVuZHMgQ29udGFpbmVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRzKSB7XG4gICAgICAgIHN1cGVyKGRlZmF1bHRzKTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3Jvb3QnO1xuICAgICAgICBpZiAoICF0aGlzLm5vZGVzICkgdGhpcy5ub2RlcyA9IFtdO1xuICAgIH1cblxuICAgIHJlbW92ZUNoaWxkKGNoaWxkLCBpZ25vcmUpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmluZGV4KGNoaWxkKTtcblxuICAgICAgICBpZiAoICFpZ25vcmUgJiYgaW5kZXggPT09IDAgJiYgdGhpcy5ub2Rlcy5sZW5ndGggPiAxICkge1xuICAgICAgICAgICAgdGhpcy5ub2Rlc1sxXS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbaW5kZXhdLnJhd3MuYmVmb3JlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICB9XG5cbiAgICBub3JtYWxpemUoY2hpbGQsIHNhbXBsZSwgdHlwZSkge1xuICAgICAgICBsZXQgbm9kZXMgPSBzdXBlci5ub3JtYWxpemUoY2hpbGQpO1xuXG4gICAgICAgIGlmICggc2FtcGxlICkge1xuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAncHJlcGVuZCcgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLm5vZGVzLmxlbmd0aCA+IDEgKSB7XG4gICAgICAgICAgICAgICAgICAgIHNhbXBsZS5yYXdzLmJlZm9yZSA9IHRoaXMubm9kZXNbMV0ucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNhbXBsZS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmZpcnN0ICE9PSBzYW1wbGUgKSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IG5vZGUgb2Ygbm9kZXMgKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmF3cy5iZWZvcmUgPSBzYW1wbGUucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vZGVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhlIHJvb3TigJlzIENTUy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7cHJvY2Vzc09wdGlvbnN9IFtvcHRzXSAtIG9wdGlvbnMgd2l0aCBvbmx5IGB0b2AgYW5kIGBtYXBgIGtleXNcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Jlc3VsdH0gcmVzdWx0IHdpdGggY3VycmVudCByb2904oCZcyBDU1NcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogY29uc3Qgcm9vdDEgPSBwb3N0Y3NzLnBhcnNlKGNzczEsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgKiBjb25zdCByb290MiA9IHBvc3Rjc3MucGFyc2UoY3NzMiwgeyBmcm9tOiAnYi5jc3MnIH0pO1xuICAgICAqIHJvb3QxLmFwcGVuZChyb290Mik7XG4gICAgICogY29uc3QgcmVzdWx0ID0gcm9vdDEudG9SZXN1bHQoeyB0bzogJ2FsbC5jc3MnLCBtYXA6IHRydWUgfSk7XG4gICAgICovXG4gICAgdG9SZXN1bHQob3B0cyA9IHsgfSkge1xuICAgICAgICBsZXQgTGF6eVJlc3VsdCA9IHJlcXVpcmUoJy4vbGF6eS1yZXN1bHQnKTtcbiAgICAgICAgbGV0IFByb2Nlc3NvciAgPSByZXF1aXJlKCcuL3Byb2Nlc3NvcicpO1xuXG4gICAgICAgIGxldCBsYXp5ID0gbmV3IExhenlSZXN1bHQobmV3IFByb2Nlc3NvcigpLCB0aGlzLCBvcHRzKTtcbiAgICAgICAgcmV0dXJuIGxhenkuc3RyaW5naWZ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIFJvb3QjXG4gICAgICogQG1lbWJlciB7b2JqZWN0fSByYXdzIC0gSW5mb3JtYXRpb24gdG8gZ2VuZXJhdGUgYnl0ZS10by1ieXRlIGVxdWFsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSBzdHJpbmcgYXMgaXQgd2FzIGluIHRoZSBvcmlnaW4gaW5wdXQuXG4gICAgICpcbiAgICAgKiBFdmVyeSBwYXJzZXIgc2F2ZXMgaXRzIG93biBwcm9wZXJ0aWVzLFxuICAgICAqIGJ1dCB0aGUgZGVmYXVsdCBDU1MgcGFyc2VyIHVzZXM6XG4gICAgICpcbiAgICAgKiAqIGBhZnRlcmA6IHRoZSBzcGFjZSBzeW1ib2xzIGFmdGVyIHRoZSBsYXN0IGNoaWxkIHRvIHRoZSBlbmQgb2YgZmlsZS5cbiAgICAgKiAqIGBzZW1pY29sb25gOiBpcyB0aGUgbGFzdCBjaGlsZCBoYXMgYW4gKG9wdGlvbmFsKSBzZW1pY29sb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2Ege31cXG4nKS5yYXdzIC8vPT4geyBhZnRlcjogJ1xcbicgfVxuICAgICAqIHBvc3Rjc3MucGFyc2UoJ2Ege30nKS5yYXdzICAgLy89PiB7IGFmdGVyOiAnJyB9XG4gICAgICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUm9vdDtcbiJdfQ==\n","var hljs = require('./highlight');\n\nhljs.registerLanguage('1c', require('./languages/1c'));\nhljs.registerLanguage('abnf', require('./languages/abnf'));\nhljs.registerLanguage('accesslog', require('./languages/accesslog'));\nhljs.registerLanguage('actionscript', require('./languages/actionscript'));\nhljs.registerLanguage('ada', require('./languages/ada'));\nhljs.registerLanguage('angelscript', require('./languages/angelscript'));\nhljs.registerLanguage('apache', require('./languages/apache'));\nhljs.registerLanguage('applescript', require('./languages/applescript'));\nhljs.registerLanguage('arcade', require('./languages/arcade'));\nhljs.registerLanguage('cpp', require('./languages/cpp'));\nhljs.registerLanguage('arduino', require('./languages/arduino'));\nhljs.registerLanguage('armasm', require('./languages/armasm'));\nhljs.registerLanguage('xml', require('./languages/xml'));\nhljs.registerLanguage('asciidoc', require('./languages/asciidoc'));\nhljs.registerLanguage('aspectj', require('./languages/aspectj'));\nhljs.registerLanguage('autohotkey', require('./languages/autohotkey'));\nhljs.registerLanguage('autoit', require('./languages/autoit'));\nhljs.registerLanguage('avrasm', require('./languages/avrasm'));\nhljs.registerLanguage('awk', require('./languages/awk'));\nhljs.registerLanguage('axapta', require('./languages/axapta'));\nhljs.registerLanguage('bash', require('./languages/bash'));\nhljs.registerLanguage('basic', require('./languages/basic'));\nhljs.registerLanguage('bnf', require('./languages/bnf'));\nhljs.registerLanguage('brainfuck', require('./languages/brainfuck'));\nhljs.registerLanguage('cal', require('./languages/cal'));\nhljs.registerLanguage('capnproto', require('./languages/capnproto'));\nhljs.registerLanguage('ceylon', require('./languages/ceylon'));\nhljs.registerLanguage('clean', require('./languages/clean'));\nhljs.registerLanguage('clojure', require('./languages/clojure'));\nhljs.registerLanguage('clojure-repl', require('./languages/clojure-repl'));\nhljs.registerLanguage('cmake', require('./languages/cmake'));\nhljs.registerLanguage('coffeescript', require('./languages/coffeescript'));\nhljs.registerLanguage('coq', require('./languages/coq'));\nhljs.registerLanguage('cos', require('./languages/cos'));\nhljs.registerLanguage('crmsh', require('./languages/crmsh'));\nhljs.registerLanguage('crystal', require('./languages/crystal'));\nhljs.registerLanguage('cs', require('./languages/cs'));\nhljs.registerLanguage('csp', require('./languages/csp'));\nhljs.registerLanguage('css', require('./languages/css'));\nhljs.registerLanguage('d', require('./languages/d'));\nhljs.registerLanguage('markdown', require('./languages/markdown'));\nhljs.registerLanguage('dart', require('./languages/dart'));\nhljs.registerLanguage('delphi', require('./languages/delphi'));\nhljs.registerLanguage('diff', require('./languages/diff'));\nhljs.registerLanguage('django', require('./languages/django'));\nhljs.registerLanguage('dns', require('./languages/dns'));\nhljs.registerLanguage('dockerfile', require('./languages/dockerfile'));\nhljs.registerLanguage('dos', require('./languages/dos'));\nhljs.registerLanguage('dsconfig', require('./languages/dsconfig'));\nhljs.registerLanguage('dts', require('./languages/dts'));\nhljs.registerLanguage('dust', require('./languages/dust'));\nhljs.registerLanguage('ebnf', require('./languages/ebnf'));\nhljs.registerLanguage('elixir', require('./languages/elixir'));\nhljs.registerLanguage('elm', require('./languages/elm'));\nhljs.registerLanguage('ruby', require('./languages/ruby'));\nhljs.registerLanguage('erb', require('./languages/erb'));\nhljs.registerLanguage('erlang-repl', require('./languages/erlang-repl'));\nhljs.registerLanguage('erlang', require('./languages/erlang'));\nhljs.registerLanguage('excel', require('./languages/excel'));\nhljs.registerLanguage('fix', require('./languages/fix'));\nhljs.registerLanguage('flix', require('./languages/flix'));\nhljs.registerLanguage('fortran', require('./languages/fortran'));\nhljs.registerLanguage('fsharp', require('./languages/fsharp'));\nhljs.registerLanguage('gams', require('./languages/gams'));\nhljs.registerLanguage('gauss', require('./languages/gauss'));\nhljs.registerLanguage('gcode', require('./languages/gcode'));\nhljs.registerLanguage('gherkin', require('./languages/gherkin'));\nhljs.registerLanguage('glsl', require('./languages/glsl'));\nhljs.registerLanguage('gml', require('./languages/gml'));\nhljs.registerLanguage('go', require('./languages/go'));\nhljs.registerLanguage('golo', require('./languages/golo'));\nhljs.registerLanguage('gradle', require('./languages/gradle'));\nhljs.registerLanguage('groovy', require('./languages/groovy'));\nhljs.registerLanguage('haml', require('./languages/haml'));\nhljs.registerLanguage('handlebars', require('./languages/handlebars'));\nhljs.registerLanguage('haskell', require('./languages/haskell'));\nhljs.registerLanguage('haxe', require('./languages/haxe'));\nhljs.registerLanguage('hsp', require('./languages/hsp'));\nhljs.registerLanguage('htmlbars', require('./languages/htmlbars'));\nhljs.registerLanguage('http', require('./languages/http'));\nhljs.registerLanguage('hy', require('./languages/hy'));\nhljs.registerLanguage('inform7', require('./languages/inform7'));\nhljs.registerLanguage('ini', require('./languages/ini'));\nhljs.registerLanguage('irpf90', require('./languages/irpf90'));\nhljs.registerLanguage('isbl', require('./languages/isbl'));\nhljs.registerLanguage('java', require('./languages/java'));\nhljs.registerLanguage('javascript', require('./languages/javascript'));\nhljs.registerLanguage('jboss-cli', require('./languages/jboss-cli'));\nhljs.registerLanguage('json', require('./languages/json'));\nhljs.registerLanguage('julia', require('./languages/julia'));\nhljs.registerLanguage('julia-repl', require('./languages/julia-repl'));\nhljs.registerLanguage('kotlin', require('./languages/kotlin'));\nhljs.registerLanguage('lasso', require('./languages/lasso'));\nhljs.registerLanguage('ldif', require('./languages/ldif'));\nhljs.registerLanguage('leaf', require('./languages/leaf'));\nhljs.registerLanguage('less', require('./languages/less'));\nhljs.registerLanguage('lisp', require('./languages/lisp'));\nhljs.registerLanguage('livecodeserver', require('./languages/livecodeserver'));\nhljs.registerLanguage('livescript', require('./languages/livescript'));\nhljs.registerLanguage('llvm', require('./languages/llvm'));\nhljs.registerLanguage('lsl', require('./languages/lsl'));\nhljs.registerLanguage('lua', require('./languages/lua'));\nhljs.registerLanguage('makefile', require('./languages/makefile'));\nhljs.registerLanguage('mathematica', require('./languages/mathematica'));\nhljs.registerLanguage('matlab', require('./languages/matlab'));\nhljs.registerLanguage('maxima', require('./languages/maxima'));\nhljs.registerLanguage('mel', require('./languages/mel'));\nhljs.registerLanguage('mercury', require('./languages/mercury'));\nhljs.registerLanguage('mipsasm', require('./languages/mipsasm'));\nhljs.registerLanguage('mizar', require('./languages/mizar'));\nhljs.registerLanguage('perl', require('./languages/perl'));\nhljs.registerLanguage('mojolicious', require('./languages/mojolicious'));\nhljs.registerLanguage('monkey', require('./languages/monkey'));\nhljs.registerLanguage('moonscript', require('./languages/moonscript'));\nhljs.registerLanguage('n1ql', require('./languages/n1ql'));\nhljs.registerLanguage('nginx', require('./languages/nginx'));\nhljs.registerLanguage('nimrod', require('./languages/nimrod'));\nhljs.registerLanguage('nix', require('./languages/nix'));\nhljs.registerLanguage('nsis', require('./languages/nsis'));\nhljs.registerLanguage('objectivec', require('./languages/objectivec'));\nhljs.registerLanguage('ocaml', require('./languages/ocaml'));\nhljs.registerLanguage('openscad', require('./languages/openscad'));\nhljs.registerLanguage('oxygene', require('./languages/oxygene'));\nhljs.registerLanguage('parser3', require('./languages/parser3'));\nhljs.registerLanguage('pf', require('./languages/pf'));\nhljs.registerLanguage('pgsql', require('./languages/pgsql'));\nhljs.registerLanguage('php', require('./languages/php'));\nhljs.registerLanguage('plaintext', require('./languages/plaintext'));\nhljs.registerLanguage('pony', require('./languages/pony'));\nhljs.registerLanguage('powershell', require('./languages/powershell'));\nhljs.registerLanguage('processing', require('./languages/processing'));\nhljs.registerLanguage('profile', require('./languages/profile'));\nhljs.registerLanguage('prolog', require('./languages/prolog'));\nhljs.registerLanguage('properties', require('./languages/properties'));\nhljs.registerLanguage('protobuf', require('./languages/protobuf'));\nhljs.registerLanguage('puppet', require('./languages/puppet'));\nhljs.registerLanguage('purebasic', require('./languages/purebasic'));\nhljs.registerLanguage('python', require('./languages/python'));\nhljs.registerLanguage('q', require('./languages/q'));\nhljs.registerLanguage('qml', require('./languages/qml'));\nhljs.registerLanguage('r', require('./languages/r'));\nhljs.registerLanguage('reasonml', require('./languages/reasonml'));\nhljs.registerLanguage('rib', require('./languages/rib'));\nhljs.registerLanguage('roboconf', require('./languages/roboconf'));\nhljs.registerLanguage('routeros', require('./languages/routeros'));\nhljs.registerLanguage('rsl', require('./languages/rsl'));\nhljs.registerLanguage('ruleslanguage', require('./languages/ruleslanguage'));\nhljs.registerLanguage('rust', require('./languages/rust'));\nhljs.registerLanguage('sas', require('./languages/sas'));\nhljs.registerLanguage('scala', require('./languages/scala'));\nhljs.registerLanguage('scheme', require('./languages/scheme'));\nhljs.registerLanguage('scilab', require('./languages/scilab'));\nhljs.registerLanguage('scss', require('./languages/scss'));\nhljs.registerLanguage('shell', require('./languages/shell'));\nhljs.registerLanguage('smali', require('./languages/smali'));\nhljs.registerLanguage('smalltalk', require('./languages/smalltalk'));\nhljs.registerLanguage('sml', require('./languages/sml'));\nhljs.registerLanguage('sqf', require('./languages/sqf'));\nhljs.registerLanguage('sql', require('./languages/sql'));\nhljs.registerLanguage('stan', require('./languages/stan'));\nhljs.registerLanguage('stata', require('./languages/stata'));\nhljs.registerLanguage('step21', require('./languages/step21'));\nhljs.registerLanguage('stylus', require('./languages/stylus'));\nhljs.registerLanguage('subunit', require('./languages/subunit'));\nhljs.registerLanguage('swift', require('./languages/swift'));\nhljs.registerLanguage('taggerscript', require('./languages/taggerscript'));\nhljs.registerLanguage('yaml', require('./languages/yaml'));\nhljs.registerLanguage('tap', require('./languages/tap'));\nhljs.registerLanguage('tcl', require('./languages/tcl'));\nhljs.registerLanguage('tex', require('./languages/tex'));\nhljs.registerLanguage('thrift', require('./languages/thrift'));\nhljs.registerLanguage('tp', require('./languages/tp'));\nhljs.registerLanguage('twig', require('./languages/twig'));\nhljs.registerLanguage('typescript', require('./languages/typescript'));\nhljs.registerLanguage('vala', require('./languages/vala'));\nhljs.registerLanguage('vbnet', require('./languages/vbnet'));\nhljs.registerLanguage('vbscript', require('./languages/vbscript'));\nhljs.registerLanguage('vbscript-html', require('./languages/vbscript-html'));\nhljs.registerLanguage('verilog', require('./languages/verilog'));\nhljs.registerLanguage('vhdl', require('./languages/vhdl'));\nhljs.registerLanguage('vim', require('./languages/vim'));\nhljs.registerLanguage('x86asm', require('./languages/x86asm'));\nhljs.registerLanguage('xl', require('./languages/xl'));\nhljs.registerLanguage('xquery', require('./languages/xquery'));\nhljs.registerLanguage('zephir', require('./languages/zephir'));\n\nmodule.exports = hljs;","'use strict';\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Rooms = require('./Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _UserAddress = require('./UserAddress');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new room, and switch to it.\n *\n * @param {object=} opts parameters for creating the room\n * @param {string=} opts.dmUserId If specified, make this a DM room for this user and invite them\n * @param {object=} opts.createOpts set of options to pass to createRoom call.\n *\n * @returns {Promise} which resolves to the room id, or null if the\n * action was aborted or failed.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction createRoom(opts) {\n opts = opts || {};\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n\n var client = _MatrixClientPeg2.default.get();\n if (client.isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return _bluebird2.default.resolve(null);\n }\n\n var defaultPreset = opts.dmUserId ? 'trusted_private_chat' : 'private_chat';\n\n // set some defaults for the creation\n var createOpts = opts.createOpts || {};\n createOpts.preset = createOpts.preset || defaultPreset;\n createOpts.visibility = createOpts.visibility || 'private';\n if (opts.dmUserId && createOpts.invite === undefined) {\n switch ((0, _UserAddress.getAddressType)(opts.dmUserId)) {\n case 'mx-user-id':\n createOpts.invite = [opts.dmUserId];\n break;\n case 'email':\n createOpts.invite_3pid = [{\n id_server: _MatrixClientPeg2.default.get().getIdentityServerUrl(true),\n medium: 'email',\n address: opts.dmUserId\n }];\n }\n }\n if (opts.dmUserId && createOpts.is_direct === undefined) {\n createOpts.is_direct = true;\n }\n\n // By default, view the room after creating it\n if (opts.andView === undefined) {\n opts.andView = true;\n }\n\n // Allow guests by default since the room is private and they'd\n // need an invite. This means clicking on a 3pid invite email can\n // actually drop you right in to a chat.\n createOpts.initial_state = createOpts.initial_state || [{\n content: {\n guest_access: 'can_join'\n },\n type: 'm.room.guest_access',\n state_key: ''\n }];\n\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n var roomId = void 0;\n return client.createRoom(createOpts).finally(function () {\n modal.close();\n }).then(function (res) {\n roomId = res.room_id;\n if (opts.dmUserId) {\n return Rooms.setDMRoom(roomId, opts.dmUserId);\n } else {\n return _bluebird2.default.resolve();\n }\n }).then(function () {\n // NB createRoom doesn't block on the client seeing the echo that the\n // room has been created, so we race here with the client knowing that\n // the room exists, causing things like\n // https://github.com/vector-im/vector-web/issues/1813\n if (opts.andView) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId,\n should_peek: false,\n // Creating a room will have joined us to the room,\n // so we are expecting the room to come down the sync\n // stream, if it hasn't already.\n joining: true\n });\n }\n return roomId;\n }, function (err) {\n // We also failed to join the room (this sets joining to false in RoomViewStore)\n _dispatcher2.default.dispatch({\n action: 'join_room_error'\n });\n console.error(\"Failed to create room \" + roomId + \" \" + err);\n _Modal2.default.createTrackedDialog('Failure to create room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failure to create room\"),\n description: (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or you hit a bug.\")\n });\n return null;\n });\n}\n\nmodule.exports = createRoom;\n//# sourceMappingURL=createRoom.js.map","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (lowerBound, upperBound) {\n return function (value) {\n return value <= upperBound && value >= lowerBound;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isVisibleThroughFrame = require('./is-visible-through-frame');\n\nvar _isVisibleThroughFrame2 = _interopRequireDefault(_isVisibleThroughFrame);\n\nvar _spacing = require('../spacing');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var target = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport;\n\n var displacement = destination.viewport.frameScroll.diff.displacement;\n var withScroll = (0, _spacing.offset)(target, displacement);\n\n if (!destination.viewport.clipped) {\n return false;\n }\n\n var isVisibleInDroppable = (0, _isVisibleThroughFrame2.default)(destination.viewport.clipped)(withScroll);\n\n var isVisibleInViewport = (0, _isVisibleThroughFrame2.default)(viewport)(withScroll);\n\n return isVisibleInDroppable && isVisibleInViewport;\n};","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};","\n\n// currently used to initiate the velocity style object to 0\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mapToZero;\n\nfunction mapToZero(obj) {\n var ret = {};\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n ret[key] = 0;\n }\n }\n return ret;\n}\n\nmodule.exports = exports['default'];","\n\n// stepper is used a lot. Saves allocation to return the same array wrapper.\n// This is fine and danger-free against mutations because the callsite\n// immediately destructures it and gets the numbers inside without passing the\n\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stepper;\n\nvar reusedTuple = [0, 0];\n\nfunction stepper(secondPerFrame, x, v, destX, k, b, precision) {\n // Spring stiffness, in kg / s^2\n\n // for animations, destX is really spring length (spring at rest). initial\n // position is considered as the stretched/compressed position of a spring\n var Fspring = -k * (x - destX);\n\n // Damping, in kg / s\n var Fdamper = -b * v;\n\n // usually we put mass here, but for animation purposes, specifying mass is a\n // bit redundant. you could simply adjust k and b accordingly\n // let a = (Fspring + Fdamper) / mass;\n var a = Fspring + Fdamper;\n\n var newV = v + a * secondPerFrame;\n var newX = x + newV * secondPerFrame;\n\n if (Math.abs(newV) < precision && Math.abs(newX - destX) < precision) {\n reusedTuple[0] = destX;\n reusedTuple[1] = 0;\n return reusedTuple;\n }\n\n reusedTuple[0] = newX;\n reusedTuple[1] = newV;\n return reusedTuple;\n}\n\nmodule.exports = exports[\"default\"];\n// array reference around.","// Generated by CoffeeScript 1.7.1\n(function() {\n var getNanoSeconds, hrtime, loadTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - loadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n loadTime = getNanoSeconds();\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","\n\n// usage assumption: currentStyle values have already been rendered but it says\n// nothing of whether currentStyle is stale (see unreadPropStyle)\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = shouldStopAnimation;\n\nfunction shouldStopAnimation(currentStyle, style, currentVelocity) {\n for (var key in style) {\n if (!Object.prototype.hasOwnProperty.call(style, key)) {\n continue;\n }\n\n if (currentVelocity[key] !== 0) {\n return false;\n }\n\n var styleValue = typeof style[key] === 'number' ? style[key] : style[key].val;\n // stepper will have already taken care of rounding precision errors, so\n // won't have such thing as 0.9999 !=== 1\n if (currentStyle[key] !== styleValue) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _rafSchd = require('raf-schd');\n\nvar _rafSchd2 = _interopRequireDefault(_rafSchd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (callbacks, isDraggingFn) {\n var ifDragging = function ifDragging(fn) {\n if (isDraggingFn()) {\n fn();\n }\n };\n\n var memoizedMove = (0, _memoizeOne2.default)(function (x, y) {\n var point = { x: x, y: y };\n callbacks.onMove(point);\n });\n\n var move = (0, _rafSchd2.default)(function (point) {\n ifDragging(function () {\n return memoizedMove(point.x, point.y);\n });\n });\n\n var moveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveForward);\n });\n\n var moveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onMoveBackward);\n });\n\n var crossAxisMoveForward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveForward);\n });\n\n var crossAxisMoveBackward = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onCrossAxisMoveBackward);\n });\n\n var windowScrollMove = (0, _rafSchd2.default)(function () {\n ifDragging(callbacks.onWindowScroll);\n });\n\n return {\n move: move,\n moveForward: moveForward,\n moveBackward: moveBackward,\n crossAxisMoveForward: crossAxisMoveForward,\n crossAxisMoveBackward: crossAxisMoveBackward,\n windowScrollMove: windowScrollMove\n };\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (ref) {\n return ref ? ref.ownerDocument.defaultView : window;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar tab = exports.tab = 9;\nvar enter = exports.enter = 13;\nvar escape = exports.escape = 27;\nvar space = exports.space = 32;\nvar arrowLeft = exports.arrowLeft = 37;\nvar arrowUp = exports.arrowUp = 38;\nvar arrowRight = exports.arrowRight = 39;\nvar arrowDown = exports.arrowDown = 40;","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n cachedPassword: localStorage.getItem('mx_pass')\n};\n\n/**\n * A class for storing application state to do with the session. This is a simple flux\n * store that listens for actions and updates its state accordingly, informing any\n * listeners (views) of state changes.\n *\n * Usage:\n * ```\n * sessionStore.addListener(() => {\n * this.setState({ cachedPassword: sessionStore.getCachedPassword() })\n * })\n * ```\n */\n\nvar SessionStore = function (_Store) {\n (0, _inherits3.default)(SessionStore, _Store);\n\n function SessionStore() {\n (0, _classCallCheck3.default)(this, SessionStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (SessionStore.__proto__ || (0, _getPrototypeOf2.default)(SessionStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(SessionStore, [{\n key: '_update',\n value: function _update() {\n // Persist state to localStorage\n if (this._state.cachedPassword) {\n localStorage.setItem('mx_pass', this._state.cachedPassword);\n } else {\n localStorage.removeItem('mx_pass', this._state.cachedPassword);\n }\n\n this.__emitChange();\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this._update();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n case 'cached_password':\n this._setState({\n cachedPassword: payload.cachedPassword\n });\n break;\n case 'password_changed':\n this._setState({\n cachedPassword: null\n });\n break;\n case 'on_logged_out':\n this._setState({\n cachedPassword: null\n });\n break;\n }\n }\n }, {\n key: 'getCachedPassword',\n value: function getCachedPassword() {\n return this._state.cachedPassword;\n }\n }]);\n return SessionStore;\n}(_utils.Store);\n\nvar singletonSessionStore = null;\nif (!singletonSessionStore) {\n singletonSessionStore = new SessionStore();\n}\nmodule.exports = singletonSessionStore;\n//# sourceMappingURL=SessionStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _maxSafeInteger = require('babel-runtime/core-js/number/max-safe-integer');\n\nvar _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = require('flux/utils');\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Unread = require('../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A class for storing application state for categorising rooms in\n * the RoomList.\n */\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar RoomListStore = function (_Store) {\n (0, _inherits3.default)(RoomListStore, _Store);\n\n function RoomListStore() {\n (0, _classCallCheck3.default)(this, RoomListStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomListStore.__proto__ || (0, _getPrototypeOf2.default)(RoomListStore)).call(this, _dispatcher2.default));\n\n _this._init();\n _this._getManualComparator = _this._getManualComparator.bind(_this);\n _this._recentsComparator = _this._recentsComparator.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(RoomListStore, [{\n key: '_init',\n value: function _init() {\n // Initialise state\n this._state = {\n lists: {\n \"m.server_notice\": [],\n \"im.vector.fake.invite\": [],\n \"m.favourite\": [],\n \"im.vector.fake.recent\": [],\n \"im.vector.fake.direct\": [],\n \"m.lowpriority\": [],\n \"im.vector.fake.archived\": []\n },\n ready: false\n };\n }\n }, {\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // Initialise state after initial sync\n case 'MatrixActions.sync':\n {\n if (!(payload.prevState !== 'PREPARED' && payload.state === 'PREPARED')) {\n break;\n }\n\n this._matrixClient = payload.matrixClient;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.tags':\n {\n if (!this._state.ready) break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.timeline':\n {\n if (!this._state.ready || !payload.isLiveEvent || !payload.isLiveUnfilteredRoomTimelineEvent || !this._eventTriggersRecentReorder(payload.event)) break;\n this._generateRoomLists();\n }\n break;\n // When an event is decrypted, it could mean we need to reorder the room\n // list because we now know the type of the event.\n case 'MatrixActions.Event.decrypted':\n {\n // We may not have synced or done an initial generation of the lists\n if (!this._matrixClient || !this._state.ready) break;\n\n var roomId = payload.event.getRoomId();\n\n // We may have decrypted an event without a roomId (e.g to_device)\n if (!roomId) break;\n\n var room = this._matrixClient.getRoom(roomId);\n\n // We somehow decrypted an event for a room our client is unaware of\n if (!room) break;\n\n var liveTimeline = room.getLiveTimeline();\n var eventTimeline = room.getTimelineForEvent(payload.event.getId());\n\n // Either this event was not added to the live timeline (e.g. pagination)\n // or it doesn't affect the ordering of the room list.\n if (liveTimeline !== eventTimeline || !this._eventTriggersRecentReorder(payload.event)) break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.accountData':\n {\n if (payload.event_type !== 'm.direct') break;\n this._generateRoomLists();\n }\n break;\n case 'MatrixActions.Room.myMembership':\n {\n this._generateRoomLists();\n }\n break;\n // This could be a new room that we've been invited to, joined or created\n // we won't get a RoomMember.membership for these cases if we're not already\n // a member.\n case 'MatrixActions.Room':\n {\n if (!this._state.ready || !this._matrixClient.credentials.userId) break;\n this._generateRoomLists();\n }\n break;\n case 'RoomListActions.tagRoom.pending':\n {\n // XXX: we only show one optimistic update at any one time.\n // Ideally we should be making a list of in-flight requests\n // that are backed by transaction IDs. Until the js-sdk\n // supports this, we're stuck with only being able to use\n // the most recent optimistic update.\n this._generateRoomLists(payload.request);\n }\n break;\n case 'RoomListActions.tagRoom.failure':\n {\n // Reset state according to js-sdk\n this._generateRoomLists();\n }\n break;\n case 'on_logged_out':\n {\n // Reset state without pushing an update to the view, which generally assumes that\n // the matrix client isn't `null` and so causing a re-render will cause NPEs.\n this._init();\n this._matrixClient = null;\n }\n break;\n }\n }\n }, {\n key: '_generateRoomLists',\n value: function _generateRoomLists(optimisticRequest) {\n var _this2 = this;\n\n var lists = {\n \"m.server_notice\": [],\n \"im.vector.fake.invite\": [],\n \"m.favourite\": [],\n \"im.vector.fake.recent\": [],\n \"im.vector.fake.direct\": [],\n \"m.lowpriority\": [],\n \"im.vector.fake.archived\": []\n };\n\n var dmRoomMap = _DMRoomMap2.default.shared();\n\n // If somehow we dispatched a RoomListActions.tagRoom.failure before a MatrixActions.sync\n if (!this._matrixClient) return;\n\n this._matrixClient.getRooms().forEach(function (room, index) {\n var myUserId = _this2._matrixClient.getUserId();\n var membership = room.getMyMembership();\n var me = room.getMember(myUserId);\n\n if (membership == \"invite\") {\n lists[\"im.vector.fake.invite\"].push(room);\n } else if (membership == \"join\" || membership === \"ban\" || me && me.isKicked()) {\n // Used to split rooms via tags\n var tagNames = (0, _keys2.default)(room.tags);\n\n if (optimisticRequest && optimisticRequest.room === room) {\n // Remove old tag\n tagNames = tagNames.filter(function (tagName) {\n return tagName !== optimisticRequest.oldTag;\n });\n // Add new tag\n if (optimisticRequest.newTag && !tagNames.includes(optimisticRequest.newTag)) {\n tagNames.push(optimisticRequest.newTag);\n }\n }\n\n // ignore any m. tag names we don't know about\n tagNames = tagNames.filter(function (t) {\n return !t.startsWith('m.') || lists[t] !== undefined;\n });\n\n if (tagNames.length) {\n for (var i = 0; i < tagNames.length; i++) {\n var tagName = tagNames[i];\n lists[tagName] = lists[tagName] || [];\n lists[tagName].push(room);\n }\n } else if (dmRoomMap.getUserIdForRoomId(room.roomId)) {\n // \"Direct Message\" rooms (that we're still in and that aren't otherwise tagged)\n lists[\"im.vector.fake.direct\"].push(room);\n } else {\n lists[\"im.vector.fake.recent\"].push(room);\n }\n } else if (membership === \"leave\") {\n lists[\"im.vector.fake.archived\"].push(room);\n }\n });\n\n (0, _keys2.default)(lists).forEach(function (listKey) {\n var comparator = void 0;\n switch (RoomListStore._listOrders[listKey]) {\n case \"recent\":\n comparator = _this2._recentsComparator;\n break;\n case \"manual\":\n default:\n comparator = _this2._getManualComparator(listKey, optimisticRequest);\n break;\n }\n lists[listKey].sort(comparator);\n });\n\n this._setState({\n lists: lists,\n ready: true // Ready to receive updates via Room.tags events\n });\n }\n }, {\n key: '_eventTriggersRecentReorder',\n value: function _eventTriggersRecentReorder(ev) {\n return ev.getTs() && (_Unread2.default.eventTriggersUnreadCount(ev) || ev.getSender() === this._matrixClient.credentials.userId);\n }\n }, {\n key: '_tsOfNewestEvent',\n value: function _tsOfNewestEvent(room) {\n for (var i = room.timeline.length - 1; i >= 0; --i) {\n var ev = room.timeline[i];\n if (this._eventTriggersRecentReorder(ev)) {\n return ev.getTs();\n }\n }\n\n // we might only have events that don't trigger the unread indicator,\n // in which case use the oldest event even if normally it wouldn't count.\n // This is better than just assuming the last event was forever ago.\n if (room.timeline.length && room.timeline[0].getTs()) {\n return room.timeline[0].getTs();\n } else {\n return _maxSafeInteger2.default;\n }\n }\n }, {\n key: '_recentsComparator',\n value: function _recentsComparator(roomA, roomB) {\n // XXX: We could use a cache here and update it when we see new\n // events that trigger a reorder\n return this._tsOfNewestEvent(roomB) - this._tsOfNewestEvent(roomA);\n }\n }, {\n key: '_lexicographicalComparator',\n value: function _lexicographicalComparator(roomA, roomB) {\n return roomA.name > roomB.name ? 1 : -1;\n }\n }, {\n key: '_getManualComparator',\n value: function _getManualComparator(tagName, optimisticRequest) {\n var _this3 = this;\n\n return function (roomA, roomB) {\n var metaA = roomA.tags[tagName];\n var metaB = roomB.tags[tagName];\n\n if (optimisticRequest && roomA === optimisticRequest.room) metaA = optimisticRequest.metaData;\n if (optimisticRequest && roomB === optimisticRequest.room) metaB = optimisticRequest.metaData;\n\n // Make sure the room tag has an order element, if not set it to be the bottom\n var a = metaA ? metaA.order : undefined;\n var b = metaB ? metaB.order : undefined;\n\n // Order undefined room tag orders to the bottom\n if (a === undefined && b !== undefined) {\n return 1;\n } else if (a !== undefined && b === undefined) {\n return -1;\n }\n\n return a == b ? _this3._lexicographicalComparator(roomA, roomB) : a > b ? 1 : -1;\n };\n }\n }, {\n key: 'getRoomLists',\n value: function getRoomLists() {\n return this._state.lists;\n }\n }]);\n return RoomListStore;\n}(_utils.Store);\n\nRoomListStore._listOrders = {\n \"m.favourite\": \"manual\",\n \"im.vector.fake.invite\": \"recent\",\n \"im.vector.fake.recent\": \"recent\",\n \"im.vector.fake.direct\": \"recent\",\n \"m.lowpriority\": \"recent\",\n \"im.vector.fake.archived\": \"recent\"\n};\n\n\nif (global.singletonRoomListStore === undefined) {\n global.singletonRoomListStore = new RoomListStore();\n}\nexports.default = global.singletonRoomListStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomListStore.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = shouldHideEvent;\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction memberEventDiff(ev) {\n var diff = {\n isMemberEvent: ev.getType() === 'm.room.member'\n };\n\n // If is not a Member Event then the other checks do not apply, so bail early.\n if (!diff.isMemberEvent) return diff;\n\n var content = ev.getContent();\n var prevContent = ev.getPrevContent();\n\n var isMembershipChanged = content.membership !== prevContent.membership;\n diff.isJoin = isMembershipChanged && content.membership === 'join';\n diff.isPart = isMembershipChanged && content.membership === 'leave' && ev.getStateKey() === ev.getSender();\n\n var isJoinToJoin = !isMembershipChanged && content.membership === 'join';\n diff.isDisplaynameChange = isJoinToJoin && content.displayname !== prevContent.displayname;\n diff.isAvatarChange = isJoinToJoin && content.avatar_url !== prevContent.avatar_url;\n return diff;\n} /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction shouldHideEvent(ev) {\n // Wrap getValue() for readability\n var isEnabled = function isEnabled(name) {\n return _SettingsStore2.default.getValue(name, ev.getRoomId());\n };\n\n // Hide redacted events\n if (isEnabled('hideRedactions') && ev.isRedacted()) return true;\n\n var eventDiff = memberEventDiff(ev);\n\n if (eventDiff.isMemberEvent) {\n if (isEnabled('hideJoinLeaves') && (eventDiff.isJoin || eventDiff.isPart)) return true;\n if (isEnabled('hideAvatarChanges') && eventDiff.isAvatarChange) return true;\n if (isEnabled('hideDisplaynameChanges') && eventDiff.isDisplaynameChange) return true;\n }\n\n return false;\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=shouldHideEvent.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.asyncAction = asyncAction;\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Create an action thunk that will dispatch actions indicating the current\n * status of the Promise returned by fn.\n *\n * @param {string} id the id to give the dispatched actions. This is given a\n * suffix determining whether it is pending, successful or\n * a failure.\n * @param {function} fn a function that returns a Promise.\n * @param {function?} pendingFn a function that returns an object to assign\n * to the `request` key of the ${id}.pending\n * payload.\n * @returns {function} an action thunk - a function that uses its single\n * argument as a dispatch function to dispatch the\n * following actions:\n * `${id}.pending` and either\n * `${id}.success` or\n * `${id}.failure`.\n *\n * The shape of each are:\n * { action: '${id}.pending', request }\n * { action: '${id}.success', result }\n * { action: '${id}.failure', err }\n *\n * where `request` is returned by `pendingFn` and\n * result is the result of the promise returned by\n * `fn`.\n */\nfunction asyncAction(id, fn, pendingFn) {\n return function (dispatch) {\n dispatch({\n action: id + '.pending',\n request: typeof pendingFn === 'function' ? pendingFn() : undefined\n });\n fn().then(function (result) {\n dispatch({ action: id + '.success', result: result });\n }).catch(function (err) {\n dispatch({ action: id + '.failure', err: err });\n });\n };\n}\n//# sourceMappingURL=actionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _utils = require('flux/utils');\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_STATE = {\n orderedTags: null,\n orderedTagsAccountData: null,\n hasSynced: false,\n joinedGroupIds: null,\n\n selectedTags: [],\n // Last selected tag when shift was not being pressed\n anchorTag: null\n};\n\n/**\n * A class for storing application state for ordering tags in the TagPanel.\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TagOrderStore = function (_Store) {\n (0, _inherits3.default)(TagOrderStore, _Store);\n\n function TagOrderStore() {\n (0, _classCallCheck3.default)(this, TagOrderStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (TagOrderStore.__proto__ || (0, _getPrototypeOf2.default)(TagOrderStore)).call(this, _dispatcher2.default));\n\n _this._state = (0, _assign2.default)({}, INITIAL_STATE);\n return _this;\n }\n\n (0, _createClass3.default)(TagOrderStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n // Initialise state after initial sync\n case 'MatrixActions.sync':\n {\n if (!(payload.prevState !== 'PREPARED' && payload.state === 'PREPARED')) {\n break;\n }\n var tagOrderingEvent = payload.matrixClient.getAccountData('im.vector.web.tag_ordering');\n var tagOrderingEventContent = tagOrderingEvent ? tagOrderingEvent.getContent() : {};\n this._setState({\n orderedTagsAccountData: tagOrderingEventContent.tags || null,\n removedTagsAccountData: tagOrderingEventContent.removedTags || null,\n hasSynced: true\n });\n this._updateOrderedTags();\n break;\n }\n // Get ordering from account data\n case 'MatrixActions.accountData':\n {\n if (payload.event_type !== 'im.vector.web.tag_ordering') break;\n\n // Ignore remote echos caused by this store so as to avoid setting\n // state back to old state.\n if (payload.event_content._storeId === this.getStoreId()) break;\n\n this._setState({\n orderedTagsAccountData: payload.event_content ? payload.event_content.tags : null,\n removedTagsAccountData: payload.event_content ? payload.event_content.removedTags : null\n });\n this._updateOrderedTags();\n break;\n }\n // Initialise the state such that if account data is unset, default to joined groups\n case 'GroupActions.fetchJoinedGroups.success':\n {\n this._setState({\n joinedGroupIds: payload.result.groups.sort(), // Sort lexically\n hasFetchedJoinedGroups: true\n });\n this._updateOrderedTags();\n break;\n }\n case 'TagOrderActions.moveTag.pending':\n {\n // Optimistic update of a moved tag\n this._setState({\n orderedTags: payload.request.tags,\n removedTagsAccountData: payload.request.removedTags\n });\n break;\n }\n case 'TagOrderActions.removeTag.pending':\n {\n // Optimistic update of a removed tag\n this._setState({\n removedTagsAccountData: payload.request.removedTags\n });\n this._updateOrderedTags();\n break;\n }\n case 'select_tag':\n {\n var newTags = [];\n // Shift-click semantics\n if (payload.shiftKey) {\n // Select range of tags\n var start = this._state.orderedTags.indexOf(this._state.anchorTag);\n var end = this._state.orderedTags.indexOf(payload.tag);\n\n if (start === -1) {\n start = end;\n }\n if (start > end) {\n var temp = start;\n start = end;\n end = temp;\n }\n newTags = payload.ctrlOrCmdKey ? this._state.selectedTags : [];\n newTags = [].concat((0, _toConsumableArray3.default)(new _set2.default(this._state.orderedTags.slice(start, end + 1).concat(newTags))));\n } else {\n if (payload.ctrlOrCmdKey) {\n // Toggle individual tag\n if (this._state.selectedTags.includes(payload.tag)) {\n newTags = this._state.selectedTags.filter(function (t) {\n return t !== payload.tag;\n });\n } else {\n newTags = [].concat((0, _toConsumableArray3.default)(this._state.selectedTags), [payload.tag]);\n }\n } else {\n // Select individual tag\n newTags = [payload.tag];\n }\n // Only set the anchor tag if the tag was previously unselected, otherwise\n // the next range starts with an unselected tag.\n if (!this._state.selectedTags.includes(payload.tag)) {\n this._setState({\n anchorTag: payload.tag\n });\n }\n }\n\n this._setState({\n selectedTags: newTags\n });\n\n _Analytics2.default.trackEvent('FilterStore', 'select_tag');\n }\n break;\n case 'deselect_tags':\n this._setState({\n selectedTags: []\n });\n _Analytics2.default.trackEvent('FilterStore', 'deselect_tags');\n break;\n case 'on_logged_out':\n {\n // Reset state without pushing an update to the view, which generally assumes that\n // the matrix client isn't `null` and so causing a re-render will cause NPEs.\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n break;\n }\n }\n }\n }, {\n key: '_updateOrderedTags',\n value: function _updateOrderedTags() {\n this._setState({\n orderedTags: this._state.hasSynced && this._state.hasFetchedJoinedGroups ? this._mergeGroupsAndTags() : null\n });\n }\n }, {\n key: '_mergeGroupsAndTags',\n value: function _mergeGroupsAndTags() {\n var groupIds = this._state.joinedGroupIds || [];\n var tags = this._state.orderedTagsAccountData || [];\n var removedTags = new _set2.default(this._state.removedTagsAccountData || []);\n\n var tagsToKeep = tags.filter(function (t) {\n return (t[0] !== '+' || groupIds.includes(t)) && !removedTags.has(t);\n });\n\n var groupIdsToAdd = groupIds.filter(function (groupId) {\n return !tags.includes(groupId) && !removedTags.has(groupId);\n });\n\n return tagsToKeep.concat(groupIdsToAdd);\n }\n }, {\n key: 'getOrderedTags',\n value: function getOrderedTags() {\n return this._state.orderedTags;\n }\n }, {\n key: 'getRemovedTagsAccountData',\n value: function getRemovedTagsAccountData() {\n return this._state.removedTagsAccountData;\n }\n }, {\n key: 'getStoreId',\n value: function getStoreId() {\n // Generate a random ID to prevent this store from clobbering its\n // state with redundant remote echos.\n if (!this._id) this._id = Math.random().toString(16).slice(2, 10);\n return this._id;\n }\n }, {\n key: 'getSelectedTags',\n value: function getSelectedTags() {\n return this._state.selectedTags;\n }\n }]);\n return TagOrderStore;\n}(_utils.Store);\n\nif (global.singletonTagOrderStore === undefined) {\n global.singletonTagOrderStore = new TagOrderStore();\n}\nexports.default = global.singletonTagOrderStore;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagOrderStore.js.map","'use strict';\n\nexports.__esModule = true;\nexports.tokenize = exports.test = exports.scanner = exports.parser = exports.options = exports.inherits = exports.find = undefined;\n\nvar _class = require('./linkify/utils/class');\n\nvar _options = require('./linkify/utils/options');\n\nvar options = _interopRequireWildcard(_options);\n\nvar _scanner = require('./linkify/core/scanner');\n\nvar scanner = _interopRequireWildcard(_scanner);\n\nvar _parser = require('./linkify/core/parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nif (!Array.isArray) {\n\tArray.isArray = function (arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n}\n\n/**\n\tConverts a string into tokens that represent linkable and non-linkable bits\n\t@method tokenize\n\t@param {String} str\n\t@return {Array} tokens\n*/\nvar tokenize = function tokenize(str) {\n\treturn parser.run(scanner.run(str));\n};\n\n/**\n\tReturns a list of linkable items in the given string.\n*/\nvar find = function find(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\tvar filtered = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\t\tif (token.isLink && (!type || token.type === type)) {\n\t\t\tfiltered.push(token.toObject());\n\t\t}\n\t}\n\n\treturn filtered;\n};\n\n/**\n\tIs the given string valid linkable text of some sort\n\tNote that this does not trim the text for you.\n\n\tOptionally pass in a second `type` param, which is the type of link to test\n\tfor.\n\n\tFor example,\n\n\t\ttest(str, 'email');\n\n\tWill return `true` if str is a valid email.\n*/\nvar test = function test(str) {\n\tvar type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\tvar tokens = tokenize(str);\n\treturn tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].type === type);\n};\n\n// Scanner and parser provide states and tokens for the lexicographic stage\n// (will be used to add additional link types)\nexports.find = find;\nexports.inherits = _class.inherits;\nexports.options = options;\nexports.parser = parser;\nexports.scanner = scanner;\nexports.test = test;\nexports.tokenize = tokenize;","'use strict';\n\nexports.__esModule = true;\nexports.AMPERSAND = exports.CLOSEPAREN = exports.CLOSEANGLEBRACKET = exports.CLOSEBRACKET = exports.CLOSEBRACE = exports.OPENPAREN = exports.OPENANGLEBRACKET = exports.OPENBRACKET = exports.OPENBRACE = exports.WS = exports.TLD = exports.SYM = exports.UNDERSCORE = exports.SLASH = exports.MAILTO = exports.PROTOCOL = exports.QUERY = exports.POUND = exports.PLUS = exports.NUM = exports.NL = exports.LOCALHOST = exports.PUNCTUATION = exports.DOT = exports.COLON = exports.AT = exports.DOMAIN = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\n/******************************************************************************\n\tText Tokens\n\tTokens composed of strings\n******************************************************************************/\n\n/**\n\tAbstract class used for manufacturing text tokens.\n\tPass in the value this token represents\n\n\t@class TextToken\n\t@abstract\n*/\nvar TextToken = (0, _createTokenClass.createTokenClass)();\nTextToken.prototype = {\n\ttoString: function toString() {\n\t\treturn this.v + '';\n\t}\n};\n\nfunction inheritsToken(value) {\n\tvar props = value ? { v: value } : {};\n\treturn (0, _class.inherits)(TextToken, (0, _createTokenClass.createTokenClass)(), props);\n}\n\n/**\n\tA valid domain token\n\t@class DOMAIN\n\t@extends TextToken\n*/\nvar DOMAIN = inheritsToken();\n\n/**\n\t@class AT\n\t@extends TextToken\n*/\nvar AT = inheritsToken('@');\n\n/**\n\tRepresents a single colon `:` character\n\n\t@class COLON\n\t@extends TextToken\n*/\nvar COLON = inheritsToken(':');\n\n/**\n\t@class DOT\n\t@extends TextToken\n*/\nvar DOT = inheritsToken('.');\n\n/**\n\tA character class that can surround the URL, but which the URL cannot begin\n\tor end with. Does not include certain English punctuation like parentheses.\n\n\t@class PUNCTUATION\n\t@extends TextToken\n*/\nvar PUNCTUATION = inheritsToken();\n\n/**\n\tThe word localhost (by itself)\n\t@class LOCALHOST\n\t@extends TextToken\n*/\nvar LOCALHOST = inheritsToken();\n\n/**\n\tNewline token\n\t@class NL\n\t@extends TextToken\n*/\nvar NL = inheritsToken('\\n');\n\n/**\n\t@class NUM\n\t@extends TextToken\n*/\nvar NUM = inheritsToken();\n\n/**\n\t@class PLUS\n\t@extends TextToken\n*/\nvar PLUS = inheritsToken('+');\n\n/**\n\t@class POUND\n\t@extends TextToken\n*/\nvar POUND = inheritsToken('#');\n\n/**\n\tRepresents a web URL protocol. Supported types include\n\n\t* `http:`\n\t* `https:`\n\t* `ftp:`\n\t* `ftps:`\n\n\t@class PROTOCOL\n\t@extends TextToken\n*/\nvar PROTOCOL = inheritsToken();\n\n/**\n\tRepresents the start of the email URI protocol\n\n\t@class MAILTO\n\t@extends TextToken\n*/\nvar MAILTO = inheritsToken('mailto:');\n\n/**\n\t@class QUERY\n\t@extends TextToken\n*/\nvar QUERY = inheritsToken('?');\n\n/**\n\t@class SLASH\n\t@extends TextToken\n*/\nvar SLASH = inheritsToken('/');\n\n/**\n\t@class UNDERSCORE\n\t@extends TextToken\n*/\nvar UNDERSCORE = inheritsToken('_');\n\n/**\n\tOne ore more non-whitespace symbol.\n\t@class SYM\n\t@extends TextToken\n*/\nvar SYM = inheritsToken();\n\n/**\n\t@class TLD\n\t@extends TextToken\n*/\nvar TLD = inheritsToken();\n\n/**\n\tRepresents a string of consecutive whitespace characters\n\n\t@class WS\n\t@extends TextToken\n*/\nvar WS = inheritsToken();\n\n/**\n\tOpening/closing bracket classes\n*/\n\nvar OPENBRACE = inheritsToken('{');\nvar OPENBRACKET = inheritsToken('[');\nvar OPENANGLEBRACKET = inheritsToken('<');\nvar OPENPAREN = inheritsToken('(');\nvar CLOSEBRACE = inheritsToken('}');\nvar CLOSEBRACKET = inheritsToken(']');\nvar CLOSEANGLEBRACKET = inheritsToken('>');\nvar CLOSEPAREN = inheritsToken(')');\n\nvar AMPERSAND = inheritsToken('&');\n\nexports.Base = TextToken;\nexports.DOMAIN = DOMAIN;\nexports.AT = AT;\nexports.COLON = COLON;\nexports.DOT = DOT;\nexports.PUNCTUATION = PUNCTUATION;\nexports.LOCALHOST = LOCALHOST;\nexports.NL = NL;\nexports.NUM = NUM;\nexports.PLUS = PLUS;\nexports.POUND = POUND;\nexports.QUERY = QUERY;\nexports.PROTOCOL = PROTOCOL;\nexports.MAILTO = MAILTO;\nexports.SLASH = SLASH;\nexports.UNDERSCORE = UNDERSCORE;\nexports.SYM = SYM;\nexports.TLD = TLD;\nexports.WS = WS;\nexports.OPENBRACE = OPENBRACE;\nexports.OPENBRACKET = OPENBRACKET;\nexports.OPENANGLEBRACKET = OPENANGLEBRACKET;\nexports.OPENPAREN = OPENPAREN;\nexports.CLOSEBRACE = CLOSEBRACE;\nexports.CLOSEBRACKET = CLOSEBRACKET;\nexports.CLOSEANGLEBRACKET = CLOSEANGLEBRACKET;\nexports.CLOSEPAREN = CLOSEPAREN;\nexports.AMPERSAND = AMPERSAND;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MUTE = exports.MENTIONS_ONLY = exports.ALL_MESSAGES = exports.ALL_MESSAGES_LOUD = undefined;\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.getRoomNotifsState = getRoomNotifsState;\nexports.setRoomNotifsState = setRoomNotifsState;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALL_MESSAGES_LOUD = exports.ALL_MESSAGES_LOUD = 'all_messages_loud'; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ALL_MESSAGES = exports.ALL_MESSAGES = 'all_messages';\nvar MENTIONS_ONLY = exports.MENTIONS_ONLY = 'mentions_only';\nvar MUTE = exports.MUTE = 'mute';\n\nfunction getRoomNotifsState(roomId) {\n if (_MatrixClientPeg2.default.get().isGuest()) return ALL_MESSAGES;\n\n // look through the override rules for a rule affecting this room:\n // if one exists, it will take precedence.\n var muteRule = findOverrideMuteRule(roomId);\n if (muteRule) {\n return MUTE;\n }\n\n // for everything else, look at the room rule.\n var roomRule = null;\n try {\n roomRule = _MatrixClientPeg2.default.get().getRoomPushRule('global', roomId);\n } catch (err) {\n // Possible that the client doesn't have pushRules yet. If so, it\n // hasn't started eiher, so indicate that this room is not notifying.\n return null;\n }\n\n // XXX: We have to assume the default is to notify for all messages\n // (in particular this will be 'wrong' for one to one rooms because\n // they will notify loudly for all messages)\n if (!roomRule || !roomRule.enabled) return ALL_MESSAGES;\n\n // a mute at the room level will still allow mentions\n // to notify\n if (isMuteRule(roomRule)) return MENTIONS_ONLY;\n\n var actionsObject = _pushprocessor2.default.actionListToActionsObject(roomRule.actions);\n if (actionsObject.tweaks.sound) return ALL_MESSAGES_LOUD;\n\n return null;\n}\n\nfunction setRoomNotifsState(roomId, newState) {\n if (newState === MUTE) {\n return setRoomNotifsStateMuted(roomId);\n } else {\n return setRoomNotifsStateUnmuted(roomId, newState);\n }\n}\n\nfunction setRoomNotifsStateMuted(roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n // delete the room rule\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n\n // add/replace an override rule to squelch everything in this room\n // NB. We use the room ID as the name of this rule too, although this\n // is an override rule, not a room rule: it still pertains to this room\n // though, so using the room ID as the rule ID is logical and prevents\n // duplicate copies of the rule.\n promises.push(cli.addPushRule('global', 'override', roomId, {\n conditions: [{\n kind: 'event_match',\n key: 'room_id',\n pattern: roomId\n }],\n actions: ['dont_notify']\n }));\n\n return _bluebird2.default.all(promises);\n}\n\nfunction setRoomNotifsStateUnmuted(roomId, newState) {\n var cli = _MatrixClientPeg2.default.get();\n var promises = [];\n\n var overrideMuteRule = findOverrideMuteRule(roomId);\n if (overrideMuteRule) {\n promises.push(cli.deletePushRule('global', 'override', overrideMuteRule.rule_id));\n }\n\n if (newState === 'all_messages') {\n var roomRule = cli.getRoomPushRule('global', roomId);\n if (roomRule) {\n promises.push(cli.deletePushRule('global', 'room', roomRule.rule_id));\n }\n } else if (newState === 'mentions_only') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['dont_notify']\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n } else if ('all_messages_loud') {\n promises.push(cli.addPushRule('global', 'room', roomId, {\n actions: ['notify', {\n set_tweak: 'sound',\n value: 'default'\n }]\n }));\n // https://matrix.org/jira/browse/SPEC-400\n promises.push(cli.setPushRuleEnabled('global', 'room', roomId, true));\n }\n\n return _bluebird2.default.all(promises);\n}\n\nfunction findOverrideMuteRule(roomId) {\n if (!_MatrixClientPeg2.default.get().pushRules || !_MatrixClientPeg2.default.get().pushRules['global'] || !_MatrixClientPeg2.default.get().pushRules['global'].override) {\n return null;\n }\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_MatrixClientPeg2.default.get().pushRules['global'].override), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (isRuleForRoom(roomId, rule)) {\n if (isMuteRule(rule) && rule.enabled) {\n return rule;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n}\n\nfunction isRuleForRoom(roomId, rule) {\n if (rule.conditions.length !== 1) {\n return false;\n }\n var cond = rule.conditions[0];\n return cond.kind === 'event_match' && cond.key === 'room_id' && cond.pattern === roomId;\n}\n\nfunction isMuteRule(rule) {\n return rule.actions.length === 1 && rule.actions[0] === 'dont_notify';\n}\n//# sourceMappingURL=RoomNotifs.js.map","\"use strict\";\n\n/**\r\n * filesize\r\n *\r\n * @copyright 2017 Jason Mulligan <jason.mulligan@avoidwork.com>\r\n * @license BSD-3-Clause\r\n * @version 3.5.6\r\n */\n(function (global) {\n\tvar b = /^(b|B)$/,\n\t symbol = {\n\t\tiec: {\n\t\t\tbits: [\"b\", \"Kib\", \"Mib\", \"Gib\", \"Tib\", \"Pib\", \"Eib\", \"Zib\", \"Yib\"],\n\t\t\tbytes: [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"]\n\t\t},\n\t\tjedec: {\n\t\t\tbits: [\"b\", \"Kb\", \"Mb\", \"Gb\", \"Tb\", \"Pb\", \"Eb\", \"Zb\", \"Yb\"],\n\t\t\tbytes: [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"]\n\t\t}\n\t},\n\t fullform = {\n\t\tiec: [\"\", \"kibi\", \"mebi\", \"gibi\", \"tebi\", \"pebi\", \"exbi\", \"zebi\", \"yobi\"],\n\t\tjedec: [\"\", \"kilo\", \"mega\", \"giga\", \"tera\", \"peta\", \"exa\", \"zetta\", \"yotta\"]\n\t};\n\n\t/**\r\n * filesize\r\n *\r\n * @method filesize\r\n * @param {Mixed} arg String, Int or Float to transform\r\n * @param {Object} descriptor [Optional] Flags\r\n * @return {String} Readable file size String\r\n */\n\tfunction filesize(arg) {\n\t\tvar descriptor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tvar result = [],\n\t\t val = 0,\n\t\t e = void 0,\n\t\t base = void 0,\n\t\t bits = void 0,\n\t\t ceil = void 0,\n\t\t full = void 0,\n\t\t fullforms = void 0,\n\t\t neg = void 0,\n\t\t num = void 0,\n\t\t output = void 0,\n\t\t round = void 0,\n\t\t unix = void 0,\n\t\t spacer = void 0,\n\t\t standard = void 0,\n\t\t symbols = void 0;\n\n\t\tif (isNaN(arg)) {\n\t\t\tthrow new Error(\"Invalid arguments\");\n\t\t}\n\n\t\tbits = descriptor.bits === true;\n\t\tunix = descriptor.unix === true;\n\t\tbase = descriptor.base || 2;\n\t\tround = descriptor.round !== undefined ? descriptor.round : unix ? 1 : 2;\n\t\tspacer = descriptor.spacer !== undefined ? descriptor.spacer : unix ? \"\" : \" \";\n\t\tsymbols = descriptor.symbols || descriptor.suffixes || {};\n\t\tstandard = base === 2 ? descriptor.standard || \"jedec\" : \"jedec\";\n\t\toutput = descriptor.output || \"string\";\n\t\tfull = descriptor.fullform === true;\n\t\tfullforms = descriptor.fullforms instanceof Array ? descriptor.fullforms : [];\n\t\te = descriptor.exponent !== undefined ? descriptor.exponent : -1;\n\t\tnum = Number(arg);\n\t\tneg = num < 0;\n\t\tceil = base > 2 ? 1000 : 1024;\n\n\t\t// Flipping a negative number to determine the size\n\t\tif (neg) {\n\t\t\tnum = -num;\n\t\t}\n\n\t\t// Determining the exponent\n\t\tif (e === -1 || isNaN(e)) {\n\t\t\te = Math.floor(Math.log(num) / Math.log(ceil));\n\n\t\t\tif (e < 0) {\n\t\t\t\te = 0;\n\t\t\t}\n\t\t}\n\n\t\t// Exceeding supported length, time to reduce & multiply\n\t\tif (e > 8) {\n\t\t\te = 8;\n\t\t}\n\n\t\t// Zero is now a special case because bytes divide by 1\n\t\tif (num === 0) {\n\t\t\tresult[0] = 0;\n\t\t\tresult[1] = unix ? \"\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\t\t} else {\n\t\t\tval = num / (base === 2 ? Math.pow(2, e * 10) : Math.pow(1000, e));\n\n\t\t\tif (bits) {\n\t\t\t\tval = val * 8;\n\n\t\t\t\tif (val >= ceil && e < 8) {\n\t\t\t\t\tval = val / ceil;\n\t\t\t\t\te++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult[0] = Number(val.toFixed(e > 0 ? round : 0));\n\t\t\tresult[1] = base === 10 && e === 1 ? bits ? \"kb\" : \"kB\" : symbol[standard][bits ? \"bits\" : \"bytes\"][e];\n\n\t\t\tif (unix) {\n\t\t\t\tresult[1] = standard === \"jedec\" ? result[1].charAt(0) : e > 0 ? result[1].replace(/B$/, \"\") : result[1];\n\n\t\t\t\tif (b.test(result[1])) {\n\t\t\t\t\tresult[0] = Math.floor(result[0]);\n\t\t\t\t\tresult[1] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Decorating a 'diff'\n\t\tif (neg) {\n\t\t\tresult[0] = -result[0];\n\t\t}\n\n\t\t// Applying custom symbol\n\t\tresult[1] = symbols[result[1]] || result[1];\n\n\t\t// Returning Array, Object, or String (default)\n\t\tif (output === \"array\") {\n\t\t\treturn result;\n\t\t}\n\n\t\tif (output === \"exponent\") {\n\t\t\treturn e;\n\t\t}\n\n\t\tif (output === \"object\") {\n\t\t\treturn { value: result[0], suffix: result[1], symbol: result[1] };\n\t\t}\n\n\t\tif (full) {\n\t\t\tresult[1] = fullforms[e] ? fullforms[e] : fullform[standard][e] + (bits ? \"bit\" : \"byte\") + (result[0] === 1 ? \"\" : \"s\");\n\t\t}\n\n\t\treturn result.join(spacer);\n\t}\n\n\t// Partial application for functional programming\n\tfilesize.partial = function (opt) {\n\t\treturn function (arg) {\n\t\t\treturn filesize(arg, opt);\n\t\t};\n\t};\n\n\t// CommonJS, AMD, script tag\n\tif (typeof exports !== \"undefined\") {\n\t\tmodule.exports = filesize;\n\t} else if (typeof define === \"function\" && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn filesize;\n\t\t});\n\t} else {\n\t\tglobal.filesize = filesize;\n\t}\n})(typeof window !== \"undefined\" ? window : global);\n","\"use strict\";\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EMAIL_ADDRESS_REGEX = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$/i;\n\nmodule.exports = {\n looksValid: function looksValid(email) {\n return EMAIL_ADDRESS_REGEX.test(email);\n }\n};\n//# sourceMappingURL=email.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Allows a user to add a third party identifier to their Home Server and,\n * optionally, the identity servers.\n *\n * This involves getting an email token from the identity server to \"prove\" that\n * the client owns the given email address, which is then passed to the\n * add threepid API on the homeserver.\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AddThreepid = function () {\n function AddThreepid() {\n (0, _classCallCheck3.default)(this, AddThreepid);\n\n this.clientSecret = _MatrixClientPeg2.default.get().generateClientSecret();\n }\n\n /**\n * Attempt to add an email threepid. This will trigger a side-effect of\n * sending an email to the provided email address.\n * @param {string} emailAddress The email address to add\n * @param {boolean} bind If True, bind this email to this mxid on the Identity Server\n * @return {Promise} Resolves when the email has been sent. Then call checkEmailLinkClicked().\n */\n\n\n (0, _createClass3.default)(AddThreepid, [{\n key: 'addEmailAddress',\n value: function addEmailAddress(emailAddress, bind) {\n var _this = this;\n\n this.bind = bind;\n return _MatrixClientPeg2.default.get().requestAdd3pidEmailToken(emailAddress, this.clientSecret, 1).then(function (res) {\n _this.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_IN_USE') {\n err.message = (0, _languageHandler._t)('This email address is already in use');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Attempt to add a msisdn threepid. This will trigger a side-effect of\n * sending a test message to the provided phone number.\n * @param {string} phoneCountry The ISO 2 letter code of the country to resolve phoneNumber in\n * @param {string} phoneNumber The national or international formatted phone number to add\n * @param {boolean} bind If True, bind this phone number to this mxid on the Identity Server\n * @return {Promise} Resolves when the text message has been sent. Then call haveMsisdnToken().\n */\n\n }, {\n key: 'addMsisdn',\n value: function addMsisdn(phoneCountry, phoneNumber, bind) {\n var _this2 = this;\n\n this.bind = bind;\n return _MatrixClientPeg2.default.get().requestAdd3pidMsisdnToken(phoneCountry, phoneNumber, this.clientSecret, 1).then(function (res) {\n _this2.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_IN_USE') {\n err.message = (0, _languageHandler._t)('This phone number is already in use');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Checks if the email link has been clicked by attempting to add the threepid\n * @return {Promise} Resolves if the email address was added. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the request failed.\n */\n\n }, {\n key: 'checkEmailLinkClicked',\n value: function checkEmailLinkClicked() {\n var identityServerDomain = _MatrixClientPeg2.default.get().idBaseUrl.split(\"://\")[1];\n return _MatrixClientPeg2.default.get().addThreePid({\n sid: this.sessionId,\n client_secret: this.clientSecret,\n id_server: identityServerDomain\n }, this.bind).catch(function (err) {\n if (err.httpStatus === 401) {\n err.message = (0, _languageHandler._t)('Failed to verify email address: make sure you clicked the link in the email');\n } else if (err.httpStatus) {\n err.message += ' (Status ' + err.httpStatus + ')';\n }\n throw err;\n });\n }\n\n /**\n * Takes a phone number verification code as entered by the user and validates\n * it with the ID server, then if successful, adds the phone number.\n * @param {string} token phone number verification code as entered by the user\n * @return {Promise} Resolves if the phone number was added. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the request failed.\n */\n\n }, {\n key: 'haveMsisdnToken',\n value: function haveMsisdnToken(token) {\n var _this3 = this;\n\n return _MatrixClientPeg2.default.get().submitMsisdnToken(this.sessionId, this.clientSecret, token).then(function (result) {\n if (result.errcode) {\n throw result;\n }\n var identityServerDomain = _MatrixClientPeg2.default.get().idBaseUrl.split(\"://\")[1];\n return _MatrixClientPeg2.default.get().addThreePid({\n sid: _this3.sessionId,\n client_secret: _this3.clientSecret,\n id_server: identityServerDomain\n }, _this3.bind);\n });\n }\n }]);\n return AddThreepid;\n}();\n\nmodule.exports = AddThreepid;\n//# sourceMappingURL=AddThreepid.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _highlight = require('highlight.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SyntaxHighlight = function (_React$Component) {\n (0, _inherits3.default)(SyntaxHighlight, _React$Component);\n\n function SyntaxHighlight(props, context) {\n (0, _classCallCheck3.default)(this, SyntaxHighlight);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (SyntaxHighlight.__proto__ || (0, _getPrototypeOf2.default)(SyntaxHighlight)).call(this, props, context));\n\n _this._ref = _this._ref.bind(_this);\n return _this;\n }\n\n // componentDidUpdate used here for reusability\n // componentWillReceiveProps fires too early to call highlightBlock on.\n\n\n (0, _createClass3.default)(SyntaxHighlight, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this._el) (0, _highlight.highlightBlock)(this._el);\n }\n\n // call componentDidUpdate because _ref is fired on initial render\n // which does not fire componentDidUpdate\n\n }, {\n key: '_ref',\n value: function _ref(el) {\n this._el = el;\n this.componentDidUpdate();\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n children = _props.children;\n\n\n return _react2.default.createElement(\n 'pre',\n { className: className + ' mx_SyntaxHighlight', ref: this._ref },\n _react2.default.createElement(\n 'code',\n null,\n children\n )\n );\n }\n }]);\n return SyntaxHighlight;\n}(_react2.default.Component); /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nSyntaxHighlight.propTypes = {\n className: _propTypes2.default.string,\n children: _propTypes2.default.node\n};\nexports.default = SyntaxHighlight;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SyntaxHighlight.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'QuestionDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.node,\n extraButtons: _propTypes2.default.node,\n button: _propTypes2.default.string,\n danger: _propTypes2.default.bool,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n title: \"\",\n description: \"\",\n extraButtons: null,\n focus: true,\n hasCancelButton: true,\n danger: false\n };\n },\n\n onOk: function onOk() {\n this.props.onFinished(true);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var primaryButtonClass = \"\";\n if (this.props.danger) {\n primaryButtonClass = \"danger\";\n }\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_QuestionDialog', onFinished: this.props.onFinished,\n title: this.props.title,\n contentId: 'mx_Dialog_content',\n hasCancel: this.props.hasCancelButton\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description\n ),\n _react2.default.createElement(\n DialogButtons,\n { primaryButton: this.props.button || (0, _languageHandler._t)('OK'),\n primaryButtonClass: primaryButtonClass,\n cancelButton: this.props.cancelButton,\n hasCancel: this.props.hasCancelButton,\n onPrimaryButtonClick: this.onOk,\n focus: this.props.focus,\n onCancel: this.onCancel\n },\n this.props.extraButtons\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=QuestionDialog.js.map","/**\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _querystring = require('querystring');\n\nvar _querystring2 = _interopRequireDefault(_querystring);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _WidgetMessaging = require('../../../WidgetMessaging');\n\nvar _WidgetMessaging2 = _interopRequireDefault(_WidgetMessaging);\n\nvar _TintableSvgButton = require('./TintableSvgButton');\n\nvar _TintableSvgButton2 = _interopRequireDefault(_TintableSvgButton);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AppPermission = require('./AppPermission');\n\nvar _AppPermission2 = _interopRequireDefault(_AppPermission);\n\nvar _AppWarning = require('./AppWarning');\n\nvar _AppWarning2 = _interopRequireDefault(_AppWarning);\n\nvar _MessageSpinner = require('./MessageSpinner');\n\nvar _MessageSpinner2 = _interopRequireDefault(_MessageSpinner);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ALLOWED_APP_URL_SCHEMES = ['https:', 'http:'];\nvar ENABLE_REACT_PERF = false;\n\nvar AppTile = function (_React$Component) {\n (0, _inherits3.default)(AppTile, _React$Component);\n\n function AppTile(props) {\n (0, _classCallCheck3.default)(this, AppTile);\n\n // The key used for PersistedElement\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppTile.__proto__ || (0, _getPrototypeOf2.default)(AppTile)).call(this, props));\n\n _this._persistKey = 'widget_' + _this.props.id;\n\n _this.state = _this._getNewState(props);\n\n _this._onAction = _this._onAction.bind(_this);\n _this._onMessage = _this._onMessage.bind(_this);\n _this._onLoaded = _this._onLoaded.bind(_this);\n _this._onEditClick = _this._onEditClick.bind(_this);\n _this._onDeleteClick = _this._onDeleteClick.bind(_this);\n _this._onSnapshotClick = _this._onSnapshotClick.bind(_this);\n _this.onClickMenuBar = _this.onClickMenuBar.bind(_this);\n _this._onMinimiseClick = _this._onMinimiseClick.bind(_this);\n _this._grantWidgetPermission = _this._grantWidgetPermission.bind(_this);\n _this._revokeWidgetPermission = _this._revokeWidgetPermission.bind(_this);\n _this._onPopoutWidgetClick = _this._onPopoutWidgetClick.bind(_this);\n _this._onReloadWidgetClick = _this._onReloadWidgetClick.bind(_this);\n return _this;\n }\n\n /**\n * Set initial component state when the App wUrl (widget URL) is being updated.\n * Component props *must* be passed (rather than relying on this.props).\n * @param {Object} newProps The new properties of the component\n * @return {Object} Updated component state to be set with setState\n */\n\n\n (0, _createClass3.default)(AppTile, [{\n key: '_getNewState',\n value: function _getNewState(newProps) {\n var widgetPermissionId = [newProps.room.roomId, encodeURIComponent(newProps.url)].join('_');\n var hasPermissionToLoad = localStorage.getItem(widgetPermissionId);\n\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n return {\n initialising: true, // True while we are mangling the widget URL\n // True while the iframe content is loading\n loading: this.props.waitForIframeLoad && !PersistedElement.isMounted(this._persistKey),\n widgetUrl: this._addWurlParams(newProps.url),\n widgetPermissionId: widgetPermissionId,\n // Assume that widget has permission to load if we are the user who\n // added it to the room, or if explicitly granted by the user\n hasPermissionToLoad: hasPermissionToLoad === 'true' || newProps.userId === newProps.creatorUserId,\n error: null,\n deleting: false,\n widgetPageTitle: newProps.widgetPageTitle\n };\n }\n\n /**\n * Does the widget support a given capability\n * @param {string} capability Capability to check for\n * @return {Boolean} True if capability supported\n */\n\n }, {\n key: '_hasCapability',\n value: function _hasCapability(capability) {\n return _ActiveWidgetStore2.default.widgetHasCapability(this.props.id, capability);\n }\n\n /**\n * Add widget instance specific parameters to pass in wUrl\n * Properties passed to widget instance:\n * - widgetId\n * - origin / parent URL\n * @param {string} urlString Url string to modify\n * @return {string}\n * Url string with parameters appended.\n * If url can not be parsed, it is returned unmodified.\n */\n\n }, {\n key: '_addWurlParams',\n value: function _addWurlParams(urlString) {\n var u = _url2.default.parse(urlString);\n if (!u) {\n console.error(\"_addWurlParams\", \"Invalid URL\", urlString);\n return _url2.default;\n }\n\n var params = _querystring2.default.parse(u.query);\n // Append widget ID to query parameters\n params.widgetId = this.props.id;\n // Append current / parent URL, minus the hash because that will change when\n // we view a different room (ie. may change for persistent widgets)\n params.parentUrl = window.location.href.split('#', 2)[0];\n u.search = undefined;\n u.query = params;\n\n return u.format();\n }\n }, {\n key: 'isMixedContent',\n value: function isMixedContent() {\n var parentContentProtocol = window.location.protocol;\n var u = _url2.default.parse(this.props.url);\n var childContentProtocol = u.protocol;\n if (parentContentProtocol === 'https:' && childContentProtocol !== 'https:') {\n console.warn(\"Refusing to load mixed-content app:\", parentContentProtocol, childContentProtocol, window.location, this.props.url);\n return true;\n }\n return false;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.setScalarToken();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Legacy Jitsi widget messaging -- TODO replace this with standard widget\n // postMessaging API\n window.addEventListener('message', this._onMessage, false);\n\n // Widget action listeners\n this.dispatcherRef = _dispatcher2.default.register(this._onAction);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Widget action listeners\n _dispatcher2.default.unregister(this.dispatcherRef);\n\n // Jitsi listener\n window.removeEventListener('message', this._onMessage);\n\n // if it's not remaining on screen, get rid of the PersistedElement container\n if (!_ActiveWidgetStore2.default.getWidgetPersistence(this.props.id)) {\n _ActiveWidgetStore2.default.destroyPersistentWidget();\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }\n\n /**\n * Adds a scalar token to the widget URL, if required\n * Component initialisation is only complete when this function has resolved\n */\n\n }, {\n key: 'setScalarToken',\n value: function setScalarToken() {\n var _this2 = this;\n\n this.setState({ initialising: true });\n\n if (!_WidgetUtils2.default.isScalarUrl(this.props.url)) {\n console.warn('Non-scalar widget, not setting scalar token!', _url2.default);\n this.setState({\n error: null,\n widgetUrl: this._addWurlParams(this.props.url),\n initialising: false\n });\n return;\n }\n\n // Fetch the token before loading the iframe as we need it to mangle the URL\n if (!this._scalarClient) {\n this._scalarClient = new _ScalarAuthClient2.default();\n }\n this._scalarClient.getScalarToken().done(function (token) {\n // Append scalar_token as a query param if not already present\n _this2._scalarClient.scalarToken = token;\n var u = _url2.default.parse(_this2._addWurlParams(_this2.props.url));\n var params = _querystring2.default.parse(u.query);\n if (!params.scalar_token) {\n params.scalar_token = encodeURIComponent(token);\n // u.search must be set to undefined, so that u.format() uses query paramerters - https://nodejs.org/docs/latest/api/url.html#url_url_format_url_options\n u.search = undefined;\n u.query = params;\n }\n\n _this2.setState({\n error: null,\n widgetUrl: u.format(),\n initialising: false\n });\n\n // Fetch page title from remote content if not already set\n if (!_this2.state.widgetPageTitle && params.url) {\n _this2._fetchWidgetTitle(params.url);\n }\n }, function (err) {\n console.error(\"Failed to get scalar_token\", err);\n _this2.setState({\n error: err.message,\n initialising: false\n });\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.url !== this.props.url) {\n this._getNewState(nextProps);\n this.setScalarToken();\n } else if (nextProps.show && !this.props.show && this.props.waitForIframeLoad) {\n this.setState({\n loading: true\n });\n } else if (nextProps.widgetPageTitle !== this.props.widgetPageTitle) {\n this.setState({\n widgetPageTitle: nextProps.widgetPageTitle\n });\n }\n }\n\n // Legacy Jitsi widget messaging\n // TODO -- This should be replaced with the new widget postMessaging API\n\n }, {\n key: '_onMessage',\n value: function _onMessage(event) {\n if (this.props.type !== 'jitsi') {\n return;\n }\n if (!event.origin) {\n event.origin = event.originalEvent.origin;\n }\n\n var widgetUrlObj = _url2.default.parse(this.state.widgetUrl);\n var eventOrigin = _url2.default.parse(event.origin);\n if (eventOrigin.protocol !== widgetUrlObj.protocol || eventOrigin.host !== widgetUrlObj.host) {\n return;\n }\n\n if (event.data.widgetAction === 'jitsi_iframe_loaded') {\n var iframe = this.refs.appFrame.contentWindow.document.querySelector('iframe[id^=\"jitsiConferenceFrame\"]');\n _PlatformPeg2.default.get().setupScreenSharingForIframe(iframe);\n }\n }\n }, {\n key: '_canUserModify',\n value: function _canUserModify() {\n // User widgets should always be modifiable by their creator\n if (this.props.userWidget && _MatrixClientPeg2.default.get().credentials.userId === this.props.creatorUserId) {\n return true;\n }\n // Check if the current user can modify widgets in the current room\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n }\n }, {\n key: '_onEditClick',\n value: function _onEditClick(e) {\n console.log(\"Edit widget ID \", this.props.id);\n if (this.props.onEditClick) {\n this.props.onEditClick();\n } else {\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n var src = this._scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'type_' + this.props.type, this.props.id);\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, \"mx_IntegrationsManager\");\n }\n }\n }, {\n key: '_onSnapshotClick',\n value: function _onSnapshotClick(e) {\n console.warn(\"Requesting widget snapshot\");\n _ActiveWidgetStore2.default.getWidgetMessaging(this.props.id).getScreenshot().catch(function (err) {\n console.error(\"Failed to get screenshot\", err);\n }).then(function (screenshot) {\n _dispatcher2.default.dispatch({\n action: 'picture_snapshot',\n file: screenshot\n }, true);\n });\n }\n\n /* If user has permission to modify widgets, delete the widget,\n * otherwise revoke access for the widget to load in the user's browser\n */\n\n }, {\n key: '_onDeleteClick',\n value: function _onDeleteClick() {\n var _this3 = this;\n\n if (this.props.onDeleteClick) {\n this.props.onDeleteClick();\n } else {\n if (this._canUserModify()) {\n // Show delete confirmation dialog\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Delete Widget', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Delete Widget\"),\n description: (0, _languageHandler._t)(\"Deleting a widget removes it for all users in this room.\" + \" Are you sure you want to delete this widget?\"),\n button: (0, _languageHandler._t)(\"Delete widget\"),\n onFinished: function onFinished(confirmed) {\n if (!confirmed) {\n return;\n }\n _this3.setState({ deleting: true });\n\n _WidgetUtils2.default.setRoomWidget(_this3.props.room.roomId, _this3.props.id).catch(function (e) {\n console.error('Failed to delete widget', e);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Failed to remove widget', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove widget'),\n description: (0, _languageHandler._t)('An error ocurred whilst trying to remove the widget from the room')\n });\n }).finally(function () {\n _this3.setState({ deleting: false });\n });\n }\n });\n } else {\n console.log(\"Revoke widget permissions - %s\", this.props.id);\n this._revokeWidgetPermission();\n }\n }\n }\n\n /**\n * Called when widget iframe has finished loading\n */\n\n }, {\n key: '_onLoaded',\n value: function _onLoaded() {\n if (!_ActiveWidgetStore2.default.getWidgetMessaging(this.props.id)) {\n this._setupWidgetMessaging();\n }\n _ActiveWidgetStore2.default.setRoomId(this.props.id, this.props.room.roomId);\n this.setState({ loading: false });\n }\n }, {\n key: '_setupWidgetMessaging',\n value: function _setupWidgetMessaging() {\n var _this4 = this;\n\n // FIXME: There's probably no reason to do this here: it should probably be done entirely\n // in ActiveWidgetStore.\n var widgetMessaging = new _WidgetMessaging2.default(this.props.id, this.props.url, this.refs.appFrame.contentWindow);\n _ActiveWidgetStore2.default.setWidgetMessaging(this.props.id, widgetMessaging);\n widgetMessaging.getCapabilities().then(function (requestedCapabilities) {\n console.log('Widget ' + _this4.props.id + ' requested capabilities: ' + requestedCapabilities);\n requestedCapabilities = requestedCapabilities || [];\n\n // Allow whitelisted capabilities\n var requestedWhitelistCapabilies = [];\n\n if (_this4.props.whitelistCapabilities && _this4.props.whitelistCapabilities.length > 0) {\n requestedWhitelistCapabilies = requestedCapabilities.filter(function (e) {\n return this.indexOf(e) >= 0;\n }, _this4.props.whitelistCapabilities);\n\n if (requestedWhitelistCapabilies.length > 0) {\n console.warn('Widget ' + _this4.props.id + ' allowing requested, whitelisted properties: ' + requestedWhitelistCapabilies);\n }\n }\n\n // TODO -- Add UI to warn about and optionally allow requested capabilities\n\n _ActiveWidgetStore2.default.setWidgetCapabilities(_this4.props.id, requestedWhitelistCapabilies);\n\n if (_this4.props.onCapabilityRequest) {\n _this4.props.onCapabilityRequest(requestedCapabilities);\n }\n }).catch(function (err) {\n console.log('Failed to get capabilities for widget type ' + _this4.props.type, _this4.props.id, err);\n });\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.widgetId === this.props.id) {\n switch (payload.action) {\n case 'm.sticker':\n if (this._hasCapability('m.sticker')) {\n _dispatcher2.default.dispatch({ action: 'post_sticker_message', data: payload.data });\n } else {\n console.warn('Ignoring sticker message. Invalid capability');\n }\n break;\n }\n }\n }\n\n /**\n * Set remote content title on AppTile\n * @param {string} url Url to check for title\n */\n\n }, {\n key: '_fetchWidgetTitle',\n value: function _fetchWidgetTitle(url) {\n var _this5 = this;\n\n this._scalarClient.getScalarPageTitle(url).then(function (widgetPageTitle) {\n if (widgetPageTitle) {\n _this5.setState({ widgetPageTitle: widgetPageTitle });\n }\n }, function (err) {\n console.error(\"Failed to get page title\", err);\n });\n }\n\n // Widget labels to render, depending upon user permissions\n // These strings are translated at the point that they are inserted in to the DOM, in the render method\n\n }, {\n key: '_deleteWidgetLabel',\n value: function _deleteWidgetLabel() {\n if (this._canUserModify()) {\n return (0, _languageHandler._td)('Delete widget');\n }\n return (0, _languageHandler._td)('Revoke widget access');\n }\n\n /* TODO -- Store permission in account data so that it is persisted across multiple devices */\n\n }, {\n key: '_grantWidgetPermission',\n value: function _grantWidgetPermission() {\n console.warn('Granting permission to load widget - ', this.state.widgetUrl);\n localStorage.setItem(this.state.widgetPermissionId, true);\n this.setState({ hasPermissionToLoad: true });\n }\n }, {\n key: '_revokeWidgetPermission',\n value: function _revokeWidgetPermission() {\n console.warn('Revoking permission to load widget - ', this.state.widgetUrl);\n localStorage.removeItem(this.state.widgetPermissionId);\n this.setState({ hasPermissionToLoad: false });\n\n // Force the widget to be non-persistent\n _ActiveWidgetStore2.default.destroyPersistentWidget();\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n PersistedElement.destroyElement(this._persistKey);\n }\n }, {\n key: 'formatAppTileName',\n value: function formatAppTileName() {\n var appTileName = \"No name\";\n if (this.props.name && this.props.name.trim()) {\n appTileName = this.props.name.trim();\n }\n return appTileName;\n }\n }, {\n key: 'onClickMenuBar',\n value: function onClickMenuBar(ev) {\n ev.preventDefault();\n\n // Ignore clicks on menu bar children\n if (ev.target !== this.refs.menu_bar) {\n return;\n }\n\n // Toggle the view state of the apps drawer\n _dispatcher2.default.dispatch({\n action: 'appsDrawer',\n show: !this.props.show\n });\n }\n }, {\n key: '_getSafeUrl',\n value: function _getSafeUrl() {\n var parsedWidgetUrl = _url2.default.parse(this.state.widgetUrl, true);\n if (ENABLE_REACT_PERF) {\n parsedWidgetUrl.search = null;\n parsedWidgetUrl.query.react_perf = true;\n }\n var safeWidgetUrl = '';\n if (ALLOWED_APP_URL_SCHEMES.indexOf(parsedWidgetUrl.protocol) !== -1) {\n safeWidgetUrl = _url2.default.format(parsedWidgetUrl);\n }\n return safeWidgetUrl;\n }\n }, {\n key: '_getTileTitle',\n value: function _getTileTitle() {\n var name = this.formatAppTileName();\n var titleSpacer = _react2.default.createElement(\n 'span',\n null,\n '\\xA0-\\xA0'\n );\n var title = '';\n if (this.state.widgetPageTitle && this.state.widgetPageTitle != this.formatAppTileName()) {\n title = this.state.widgetPageTitle;\n }\n\n return _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'b',\n null,\n name\n ),\n _react2.default.createElement(\n 'span',\n null,\n title ? titleSpacer : '',\n title\n )\n );\n }\n }, {\n key: '_onMinimiseClick',\n value: function _onMinimiseClick(e) {\n if (this.props.onMinimiseClick) {\n this.props.onMinimiseClick();\n }\n }\n }, {\n key: '_onPopoutWidgetClick',\n value: function _onPopoutWidgetClick(e) {\n // Using Object.assign workaround as the following opens in a new window instead of a new tab.\n // window.open(this._getSafeUrl(), '_blank', 'noopener=yes,noreferrer=yes');\n (0, _assign2.default)(document.createElement('a'), { target: '_blank', href: this._getSafeUrl(), rel: 'noopener noreferrer' }).click();\n }\n }, {\n key: '_onReloadWidgetClick',\n value: function _onReloadWidgetClick(e) {\n // Reload iframe in this way to avoid cross-origin restrictions\n this.refs.appFrame.src = this.refs.appFrame.src;\n }\n }, {\n key: 'render',\n value: function render() {\n var appTileBody = void 0;\n\n // Don't render widget if it is in the process of being deleted\n if (this.state.deleting) {\n return _react2.default.createElement('div', null);\n }\n\n // Note that there is advice saying allow-scripts shouldn't be used with allow-same-origin\n // because that would allow the iframe to prgramatically remove the sandbox attribute, but\n // this would only be for content hosted on the same origin as the riot client: anything\n // hosted on the same origin as the client will get the same access as if you clicked\n // a link to it.\n var sandboxFlags = \"allow-forms allow-popups allow-popups-to-escape-sandbox \" + \"allow-same-origin allow-scripts allow-presentation\";\n\n // Additional iframe feature pemissions\n // (see - https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-permissions-in-cross-origin-iframes and https://wicg.github.io/feature-policy/)\n var iframeFeatures = \"microphone; camera; encrypted-media;\";\n\n var appTileBodyClass = 'mx_AppTileBody' + (this.props.miniMode ? '_mini ' : ' ');\n\n if (this.props.show) {\n var loadingElement = _react2.default.createElement(\n 'div',\n { className: 'mx_AppLoading_spinner_fadeIn' },\n _react2.default.createElement(_MessageSpinner2.default, { msg: 'Loading...' })\n );\n if (this.state.initialising) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n loadingElement\n );\n } else if (this.state.hasPermissionToLoad == true) {\n if (this.isMixedContent()) {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppWarning2.default, { errorMsg: 'Error - Mixed content' })\n );\n } else {\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass + (this.state.loading ? 'mx_AppLoading' : '') },\n this.state.loading && loadingElement,\n _react2.default.createElement('iframe', {\n is: true,\n allow: iframeFeatures,\n ref: 'appFrame',\n src: this._getSafeUrl(),\n allowFullScreen: 'true',\n sandbox: sandboxFlags,\n onLoad: this._onLoaded\n })\n );\n // if the widget would be allowed to remian on screen, we must put it in\n // a PersistedElement from the get-go, otherwise the iframe will be\n // re-mounted later when we do.\n if (this.props.whitelistCapabilities.includes('m.always_on_screen')) {\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n // Also wrap the PersistedElement in a div to fix the height, otherwise\n // AppTile's border is in the wrong place\n appTileBody = _react2.default.createElement(\n 'div',\n { className: 'mx_AppTile_persistedWrapper' },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: this._persistKey },\n appTileBody\n )\n );\n }\n }\n } else {\n var isRoomEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.room.roomId);\n appTileBody = _react2.default.createElement(\n 'div',\n { className: appTileBodyClass },\n _react2.default.createElement(_AppPermission2.default, {\n isRoomEncrypted: isRoomEncrypted,\n url: this.state.widgetUrl,\n onPermissionGranted: this._grantWidgetPermission\n })\n );\n }\n }\n\n // editing is done in scalar\n var showEditButton = Boolean(this._scalarClient && this._canUserModify());\n var deleteWidgetLabel = this._deleteWidgetLabel();\n var deleteIcon = 'img/cancel_green.svg';\n var deleteClasses = 'mx_AppTileMenuBarWidget';\n if (this._canUserModify()) {\n deleteIcon = 'img/icon-delete-pink.svg';\n deleteClasses += ' mx_AppTileMenuBarWidgetDelete';\n }\n\n // Picture snapshot - only show button when apps are maximised.\n var showPictureSnapshotButton = this._hasCapability('m.capability.screenshot') && this.props.show;\n var showPictureSnapshotIcon = 'img/camera_green.svg';\n var popoutWidgetIcon = 'img/button-new-window.svg';\n var reloadWidgetIcon = 'img/button-refresh.svg';\n var windowStateIcon = this.props.show ? 'img/minimize.svg' : 'img/maximize.svg';\n\n var appTileClass = void 0;\n if (this.props.miniMode) {\n appTileClass = 'mx_AppTile_mini';\n } else if (this.props.fullWidth) {\n appTileClass = 'mx_AppTileFullWidth';\n } else {\n appTileClass = 'mx_AppTile';\n }\n\n return _react2.default.createElement(\n 'div',\n { className: appTileClass, id: this.props.id },\n this.props.showMenubar && _react2.default.createElement(\n 'div',\n { ref: 'menu_bar', className: 'mx_AppTileMenuBar', onClick: this.onClickMenuBar },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarTitle', style: { pointerEvents: this.props.handleMinimisePointerEvents ? 'all' : false } },\n this.props.showMinimise && _react2.default.createElement(_TintableSvgButton2.default, {\n src: windowStateIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Minimize apps'),\n width: '10',\n height: '10',\n onClick: this._onMinimiseClick\n }),\n this.props.showTitle && this._getTileTitle()\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppTileMenuBarWidgets' },\n this.props.showReload && _react2.default.createElement(_TintableSvgButton2.default, {\n src: reloadWidgetIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Reload widget'),\n onClick: this._onReloadWidgetClick,\n width: '10',\n height: '10'\n }),\n this.props.showPopout && _react2.default.createElement(_TintableSvgButton2.default, {\n src: popoutWidgetIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Popout widget'),\n onClick: this._onPopoutWidgetClick,\n width: '10',\n height: '10'\n }),\n showPictureSnapshotButton && _react2.default.createElement(_TintableSvgButton2.default, {\n src: showPictureSnapshotIcon,\n className: 'mx_AppTileMenuBarWidget mx_AppTileMenuBarWidgetPadding',\n title: (0, _languageHandler._t)('Picture'),\n onClick: this._onSnapshotClick,\n width: '10',\n height: '10'\n }),\n showEditButton && _react2.default.createElement(_TintableSvgButton2.default, {\n src: 'img/edit_green.svg',\n className: \"mx_AppTileMenuBarWidget \" + (this.props.showDelete ? \"mx_AppTileMenuBarWidgetPadding\" : \"\"),\n title: (0, _languageHandler._t)('Edit'),\n onClick: this._onEditClick,\n width: '10',\n height: '10'\n }),\n this.props.showDelete && _react2.default.createElement(_TintableSvgButton2.default, {\n src: deleteIcon,\n className: deleteClasses,\n title: (0, _languageHandler._t)(deleteWidgetLabel),\n onClick: this._onDeleteClick,\n width: '10',\n height: '10'\n })\n )\n ),\n appTileBody\n );\n }\n }]);\n return AppTile;\n}(_react2.default.Component);\n\nexports.default = AppTile;\n\n\nAppTile.displayName = 'AppTile';\n\nAppTile.propTypes = {\n id: _propTypes2.default.string.isRequired,\n url: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n type: _propTypes2.default.string.isRequired,\n // Specifying 'fullWidth' as true will render the app tile to fill the width of the app drawer continer.\n // This should be set to true when there is only one widget in the app drawer, otherwise it should be false.\n fullWidth: _propTypes2.default.bool,\n // Optional. If set, renders a smaller view of the widget\n miniMode: _propTypes2.default.bool,\n // UserId of the current user\n userId: _propTypes2.default.string.isRequired,\n // UserId of the entity that added / modified the widget\n creatorUserId: _propTypes2.default.string,\n waitForIframeLoad: _propTypes2.default.bool,\n showMenubar: _propTypes2.default.bool,\n // Should the AppTile render itself\n show: _propTypes2.default.bool,\n // Optional onEditClickHandler (overrides default behaviour)\n onEditClick: _propTypes2.default.func,\n // Optional onDeleteClickHandler (overrides default behaviour)\n onDeleteClick: _propTypes2.default.func,\n // Optional onMinimiseClickHandler\n onMinimiseClick: _propTypes2.default.func,\n // Optionally hide the tile title\n showTitle: _propTypes2.default.bool,\n // Optionally hide the tile minimise icon\n showMinimise: _propTypes2.default.bool,\n // Optionally handle minimise button pointer events (default false)\n handleMinimisePointerEvents: _propTypes2.default.bool,\n // Optionally hide the delete icon\n showDelete: _propTypes2.default.bool,\n // Optionally hide the popout widget icon\n showPopout: _propTypes2.default.bool,\n // Optionally show the reload widget icon\n // This is not currently intended for use with production widgets. However\n // it can be useful when developing persistent widgets in order to avoid\n // having to reload all of riot to get new widget content.\n showReload: _propTypes2.default.bool,\n // Widget capabilities to allow by default (without user confirmation)\n // NOTE -- Use with caution. This is intended to aid better integration / UX\n // basic widget capabilities, e.g. injecting sticker message events.\n whitelistCapabilities: _propTypes2.default.array,\n // Optional function to be called on widget capability request\n // Called with an array of the requested capabilities\n onCapabilityRequest: _propTypes2.default.func,\n // Is this an instance of a user widget\n userWidget: _propTypes2.default.bool\n};\n\nAppTile.defaultProps = {\n url: \"\",\n waitForIframeLoad: true,\n showMenubar: true,\n showTitle: true,\n showMinimise: true,\n showDelete: true,\n showPopout: true,\n showReload: false,\n handleMinimisePointerEvents: false,\n whitelistCapabilities: [],\n userWidget: false,\n miniMode: false\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppTile.js.map","'use strict';\n\nvar _isInteger = require('babel-runtime/core-js/number/is-integer');\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _WidgetUtils = require('./utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sendResponse(event, res) {\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = res;\n event.source.postMessage(data, event.origin);\n} /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\nListens for incoming postMessage requests from the integrations UI URL. The following API is exposed:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\" | etc... ,\n room_id: $ROOM_ID,\n user_id: $USER_ID\n // additional request fields\n}\n\nThe complete request object is returned to the caller with an additional \"response\" key like so:\n{\n action: \"invite\" | \"membership_state\" | \"bot_options\" | \"set_bot_options\",\n room_id: $ROOM_ID,\n user_id: $USER_ID,\n // additional request fields\n response: { ... }\n}\n\nThe \"action\" determines the format of the request and response. All actions can return an error response.\nAn error response is a \"response\" object which consists of a sole \"error\" key to indicate an error.\nThey look like:\n{\n error: {\n message: \"Unable to invite user into room.\",\n _error: <Original Error Object>\n }\n}\nThe \"message\" key should be a human-friendly string.\n\nACTIONS\n=======\nAll actions can return an error response instead of the response outlined below.\n\ninvite\n------\nInvites a user into a room.\n\nRequest:\n - room_id is the room to invite the user into.\n - user_id is the user ID to invite.\n - No additional fields.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"invite\",\n room_id: \"!foo:bar\",\n user_id: \"@invitee:bar\",\n response: {\n success: true\n }\n}\n\nset_bot_options\n---------------\nSet the m.room.bot.options state event for a bot user.\n\nRequest:\n - room_id is the room to send the state event into.\n - user_id is the user ID of the bot who you're setting options for.\n - \"content\" is an object consisting of the content you wish to set.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_bot_options\",\n room_id: \"!foo:bar\",\n user_id: \"@bot:bar\",\n content: {\n default_option: \"alpha\"\n },\n response: {\n success: true\n }\n}\n\nget_membership_count\n--------------------\nGet the number of joined users in the room.\n\nRequest:\n - room_id is the room to get the count in.\nResponse:\n78\nExample:\n{\n action: \"get_membership_count\",\n room_id: \"!foo:bar\",\n response: 78\n}\n\ncan_send_event\n--------------\nCheck if the client can send the given event into the given room. If the client\nis unable to do this, an error response is returned instead of 'response: false'.\n\nRequest:\n - room_id is the room to do the check in.\n - event_type is the event type which will be sent.\n - is_state is true if the event to be sent is a state event.\nResponse:\ntrue\nExample:\n{\n action: \"can_send_event\",\n is_state: false,\n event_type: \"m.room.message\",\n room_id: \"!foo:bar\",\n response: true\n}\n\nset_widget\n----------\nSet a new widget in the room. Clobbers based on the ID.\n\nRequest:\n - `room_id` (String) is the room to set the widget in.\n - `widget_id` (String) is the ID of the widget to add (or replace if it already exists).\n It can be an arbitrary UTF8 string and is purely for distinguishing between widgets.\n - `url` (String) is the URL that clients should load in an iframe to run the widget.\n All widgets must have a valid URL. If the URL is `null` (not `undefined`), the\n widget will be removed from the room.\n - `type` (String) is the type of widget, which is provided as a hint for matrix clients so they\n can configure/lay out the widget in different ways. All widgets must have a type.\n - `name` (String) is an optional human-readable string about the widget.\n - `data` (Object) is some optional data about the widget, and can contain arbitrary key/value pairs.\nResponse:\n{\n success: true\n}\nExample:\n{\n action: \"set_widget\",\n room_id: \"!foo:bar\",\n widget_id: \"abc123\",\n url: \"http://widget.url\",\n type: \"example\",\n response: {\n success: true\n }\n}\n\nget_widgets\n-----------\nGet a list of all widgets in the room. The response is an array\nof state events.\n\nRequest:\n - `room_id` (String) is the room to get the widgets in.\nResponse:\n[\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n]\nExample:\n{\n action: \"get_widgets\",\n room_id: \"!foo:bar\",\n response: [\n {\n type: \"im.vector.modular.widgets\",\n state_key: \"wid1\",\n content: {\n type: \"grafana\",\n url: \"https://grafanaurl\",\n name: \"dashboard\",\n data: {key: \"val\"}\n }\n room_id: “!foo:bar”,\n sender: \"@alice:localhost\"\n }\n ]\n}\n\n\nmembership_state AND bot_options\n--------------------------------\nGet the content of the \"m.room.member\" or \"m.room.bot.options\" state event respectively.\n\nNB: Whilst this API is basically equivalent to getStateEvent, we specifically do not\n want external entities to be able to query any state event for any room, hence the\n restrictive API outlined here.\n\nRequest:\n - room_id is the room which has the state event.\n - user_id is the state_key parameter which in both cases is a user ID (the member or the bot).\n - No additional fields.\nResponse:\n - The event content. If there is no state event, the \"response\" key should be null.\nExample:\n{\n action: \"membership_state\",\n room_id: \"!foo:bar\",\n user_id: \"@somemember:bar\",\n response: {\n membership: \"join\",\n displayname: \"Bob\",\n avatar_url: null\n }\n}\n*/\n\nfunction sendError(event, msg, nestedError) {\n console.error(\"Action:\" + event.data.action + \" failed with message: \" + msg);\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = {\n error: {\n message: msg\n }\n };\n if (nestedError) {\n data.response.error._error = nestedError;\n }\n event.source.postMessage(data, event.origin);\n}\n\nfunction inviteUser(event, roomId, userId) {\n console.log('Received request to invite ' + userId + ' into room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (room) {\n // if they are already invited we can resolve immediately.\n var member = room.getMember(userId);\n if (member && member.membership === \"invite\") {\n sendResponse(event, {\n success: true\n });\n return;\n }\n }\n\n client.invite(roomId, userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('You need to be able to invite users to do that.'), err);\n });\n}\n\nfunction setWidget(event, roomId) {\n var widgetId = event.data.widget_id;\n var widgetType = event.data.type;\n var widgetUrl = event.data.url;\n var widgetName = event.data.name; // optional\n var widgetData = event.data.data; // optional\n var userWidget = event.data.userWidget;\n\n // both adding/removing widgets need these checks\n if (!widgetId || widgetUrl === undefined) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Missing required widget fields.\"));\n return;\n }\n\n if (widgetUrl !== null) {\n // if url is null it is being deleted, don't need to check name/type/etc\n // check types of fields\n if (widgetName !== undefined && typeof widgetName !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'name' must be a string.\"));\n return;\n }\n if (widgetData !== undefined && !(widgetData instanceof Object)) {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Optional field 'data' must be an Object.\"));\n return;\n }\n if (typeof widgetType !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'type' must be a string.\"));\n return;\n }\n if (typeof widgetUrl !== 'string') {\n sendError(event, (0, _languageHandler._t)(\"Unable to create widget.\"), new Error(\"Field 'url' must be a string or null.\"));\n return;\n }\n }\n\n if (userWidget) {\n _WidgetUtils2.default.setUserWidget(widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n\n _dispatcher2.default.dispatch({ action: \"user_widget_updated\" });\n }).catch(function (e) {\n sendError(event, (0, _languageHandler._t)('Unable to create widget.'), e);\n });\n } else {\n // Room widget\n if (!roomId) {\n sendError(event, (0, _languageHandler._t)('Missing roomId.'), null);\n }\n _WidgetUtils2.default.setRoomWidget(roomId, widgetId, widgetType, widgetUrl, widgetName, widgetData).then(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, (0, _languageHandler._t)('Failed to send request.'), err);\n });\n }\n}\n\nfunction getWidgets(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var widgetStateEvents = [];\n\n if (roomId) {\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n // XXX: This gets the raw event object (I think because we can't\n // send the MatrixEvent over postMessage?)\n widgetStateEvents = _WidgetUtils2.default.getRoomWidgets(room).map(function (ev) {\n return ev.event;\n });\n }\n\n // Add user widgets (not linked to a specific room)\n var userWidgets = _WidgetUtils2.default.getUserWidgetsArray();\n widgetStateEvents = widgetStateEvents.concat(userWidgets);\n\n sendResponse(event, widgetStateEvents);\n}\n\nfunction getRoomEncState(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var roomIsEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(roomId);\n\n sendResponse(event, roomIsEncrypted);\n}\n\nfunction setPlumbingState(event, roomId, status) {\n if (typeof status !== 'string') {\n throw new Error('Plumbing state status should be a string');\n }\n console.log('Received request to set plumbing state to status \"' + status + '\" in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.plumbing\", { status: status }).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotOptions(event, roomId, userId) {\n console.log('Received request to set options for bot ' + userId + ' in room ' + roomId);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n client.sendStateEvent(roomId, \"m.room.bot.options\", event.data.content, \"_\" + userId).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n}\n\nfunction setBotPower(event, roomId, userId, level) {\n if (!((0, _isInteger2.default)(level) && level >= 0)) {\n sendError(event, (0, _languageHandler._t)('Power level must be positive integer.'));\n return;\n }\n\n console.log('Received request to set power level to ' + level + ' for bot ' + userId + ' in room ' + roomId + '.');\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n\n client.getStateEvent(roomId, \"m.room.power_levels\", \"\").then(function (powerLevels) {\n var powerEvent = new _matrixJsSdk.MatrixEvent({\n type: \"m.room.power_levels\",\n content: powerLevels\n });\n\n client.setPowerLevel(roomId, userId, level, powerEvent).done(function () {\n sendResponse(event, {\n success: true\n });\n }, function (err) {\n sendError(event, err.message ? err.message : (0, _languageHandler._t)('Failed to send request.'), err);\n });\n });\n}\n\nfunction getMembershipState(event, roomId, userId) {\n console.log('membership_state of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.member\", userId);\n}\n\nfunction getJoinRules(event, roomId) {\n console.log('join_rules of ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.join_rules\", \"\");\n}\n\nfunction botOptions(event, roomId, userId) {\n console.log('bot_options of ' + userId + ' in room ' + roomId + ' requested.');\n returnStateEvent(event, roomId, \"m.room.bot.options\", \"_\" + userId);\n}\n\nfunction getMembershipCount(event, roomId) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var count = room.getJoinedMemberCount();\n sendResponse(event, count);\n}\n\nfunction canSendEvent(event, roomId) {\n var evType = \"\" + event.data.event_type; // force stringify\n var isState = Boolean(event.data.is_state);\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n if (room.getMyMembership() !== \"join\") {\n sendError(event, (0, _languageHandler._t)('You are not in this room.'));\n return;\n }\n var me = client.credentials.userId;\n\n var canSend = false;\n if (isState) {\n canSend = room.currentState.maySendStateEvent(evType, me);\n } else {\n canSend = room.currentState.maySendEvent(evType, me);\n }\n\n if (!canSend) {\n sendError(event, (0, _languageHandler._t)('You do not have permission to do that in this room.'));\n return;\n }\n\n sendResponse(event, true);\n}\n\nfunction returnStateEvent(event, roomId, eventType, stateKey) {\n var client = _MatrixClientPeg2.default.get();\n if (!client) {\n sendError(event, (0, _languageHandler._t)('You need to be logged in.'));\n return;\n }\n var room = client.getRoom(roomId);\n if (!room) {\n sendError(event, (0, _languageHandler._t)('This room is not recognised.'));\n return;\n }\n var stateEvent = room.currentState.getStateEvents(eventType, stateKey);\n if (!stateEvent) {\n sendResponse(event, null);\n return;\n }\n sendResponse(event, stateEvent.getContent());\n}\n\nvar onMessage = function onMessage(event) {\n if (!event.origin) {\n // stupid chrome\n event.origin = event.originalEvent.origin;\n }\n\n // Check that the integrations UI URL starts with the origin of the event\n // This means the URL could contain a path (like /develop) and still be used\n // to validate event origins, which do not specify paths.\n // (See https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage)\n //\n // All strings start with the empty string, so for sanity return if the length\n // of the event origin is 0.\n //\n // TODO -- Scalar postMessage API should be namespaced with event.data.api field\n // Fix following \"if\" statement to respond only to specific API messages.\n var url = _SdkConfig2.default.get().integrations_ui_url;\n if (event.origin.length === 0 || !url.startsWith(event.origin + '/') || !event.data.action || event.data.api // Ignore messages with specific API set\n ) {\n return; // don't log this - debugging APIs like to spam postMessage which floods the log otherwise\n }\n\n if (event.data.action === \"close_scalar\") {\n _dispatcher2.default.dispatch({ action: \"close_scalar\" });\n sendResponse(event, null);\n return;\n }\n\n var roomId = event.data.room_id;\n var userId = event.data.user_id;\n\n if (!roomId) {\n // These APIs don't require roomId\n // Get and set user widgets (not associated with a specific room)\n // If roomId is specified, it must be validated, so room-based widgets agreed\n // handled further down.\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, null);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, null);\n return;\n } else {\n sendError(event, (0, _languageHandler._t)('Missing room_id in request'));\n return;\n }\n }\n\n if (roomId !== _RoomViewStore2.default.getRoomId()) {\n sendError(event, (0, _languageHandler._t)('Room %(roomId)s not visible', { roomId: roomId }));\n return;\n }\n\n // Get and set room-based widgets\n if (event.data.action === \"get_widgets\") {\n getWidgets(event, roomId);\n return;\n } else if (event.data.action === \"set_widget\") {\n setWidget(event, roomId);\n return;\n }\n\n // These APIs don't require userId\n if (event.data.action === \"join_rules_state\") {\n getJoinRules(event, roomId);\n return;\n } else if (event.data.action === \"set_plumbing_state\") {\n setPlumbingState(event, roomId, event.data.status);\n return;\n } else if (event.data.action === \"get_membership_count\") {\n getMembershipCount(event, roomId);\n return;\n } else if (event.data.action === \"get_room_enc_state\") {\n getRoomEncState(event, roomId);\n return;\n } else if (event.data.action === \"can_send_event\") {\n canSendEvent(event, roomId);\n return;\n }\n\n if (!userId) {\n sendError(event, (0, _languageHandler._t)('Missing user_id in request'));\n return;\n }\n switch (event.data.action) {\n case \"membership_state\":\n getMembershipState(event, roomId, userId);\n break;\n case \"invite\":\n inviteUser(event, roomId, userId);\n break;\n case \"bot_options\":\n botOptions(event, roomId, userId);\n break;\n case \"set_bot_options\":\n setBotOptions(event, roomId, userId);\n break;\n case \"set_bot_power\":\n setBotPower(event, roomId, userId, event.data.level);\n break;\n default:\n console.warn(\"Unhandled postMessage event with action '\" + event.data.action + \"'\");\n break;\n }\n};\n\nvar listenerCount = 0;\nmodule.exports = {\n startListening: function startListening() {\n if (listenerCount === 0) {\n window.addEventListener(\"message\", onMessage, false);\n }\n listenerCount += 1;\n },\n\n stopListening: function stopListening() {\n listenerCount -= 1;\n if (listenerCount === 0) {\n window.removeEventListener(\"message\", onMessage);\n }\n if (listenerCount < 0) {\n // Make an error so we get a stack trace\n var e = new Error(\"ScalarMessaging: mismatched startListening / stopListening detected.\" + \" Negative count\");\n console.error(e);\n }\n }\n};\n//# sourceMappingURL=ScalarMessaging.js.map","/*\nCopyright 2015 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDOM = require(\"react-dom\");\n\nvar Tinter = require(\"../../../Tinter\");\n\nvar TintableSvg = React.createClass({\n displayName: 'TintableSvg',\n\n propTypes: {\n src: _propTypes2.default.string.isRequired,\n width: _propTypes2.default.string.isRequired,\n height: _propTypes2.default.string.isRequired,\n className: _propTypes2.default.string\n },\n\n statics: {\n // list of currently mounted TintableSvgs\n mounts: {},\n idSequence: 0\n },\n\n componentWillMount: function componentWillMount() {\n this.fixups = [];\n },\n\n componentDidMount: function componentDidMount() {\n this.id = TintableSvg.idSequence++;\n TintableSvg.mounts[this.id] = this;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n delete TintableSvg.mounts[this.id];\n },\n\n tint: function tint() {\n // TODO: only bother running this if the global tint settings have changed\n // since we loaded!\n Tinter.applySvgFixups(this.fixups);\n },\n\n onLoad: function onLoad(event) {\n // console.log(\"TintableSvg.onLoad for \" + this.props.src);\n this.fixups = Tinter.calcSvgFixups([event.target]);\n Tinter.applySvgFixups(this.fixups);\n },\n\n render: function render() {\n return React.createElement('object', { className: \"mx_TintableSvg \" + (this.props.className ? this.props.className : \"\"),\n type: 'image/svg+xml',\n data: this.props.src,\n width: this.props.width,\n height: this.props.height,\n onLoad: this.onLoad,\n tabIndex: '-1'\n });\n }\n});\n\n// Register with the Tinter so that we will be told if the tint changes\nTinter.registerTintable(function () {\n if (TintableSvg.mounts) {\n (0, _keys2.default)(TintableSvg.mounts).forEach(function (id) {\n TintableSvg.mounts[id].tint();\n });\n }\n});\n\nmodule.exports = TintableSvg;\n//# sourceMappingURL=TintableSvg.js.map","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","\"use strict\";\n\nfunction isContainer(node) {\n switch (node._type) {\n case 'document':\n case 'block_quote':\n case 'list':\n case 'item':\n case 'paragraph':\n case 'heading':\n case 'emph':\n case 'strong':\n case 'link':\n case 'image':\n case 'custom_inline':\n case 'custom_block':\n return true;\n default:\n return false;\n }\n}\n\nvar resumeAt = function(node, entering) {\n this.current = node;\n this.entering = (entering === true);\n};\n\nvar next = function(){\n var cur = this.current;\n var entering = this.entering;\n\n if (cur === null) {\n return null;\n }\n\n var container = isContainer(cur);\n\n if (entering && container) {\n if (cur._firstChild) {\n this.current = cur._firstChild;\n this.entering = true;\n } else {\n // stay on node but exit\n this.entering = false;\n }\n\n } else if (cur === this.root) {\n this.current = null;\n\n } else if (cur._next === null) {\n this.current = cur._parent;\n this.entering = false;\n\n } else {\n this.current = cur._next;\n this.entering = true;\n }\n\n return {entering: entering, node: cur};\n};\n\nvar NodeWalker = function(root) {\n return { current: root,\n root: root,\n entering: true,\n next: next,\n resumeAt: resumeAt };\n};\n\nvar Node = function(nodeType, sourcepos) {\n this._type = nodeType;\n this._parent = null;\n this._firstChild = null;\n this._lastChild = null;\n this._prev = null;\n this._next = null;\n this._sourcepos = sourcepos;\n this._lastLineBlank = false;\n this._open = true;\n this._string_content = null;\n this._literal = null;\n this._listData = {};\n this._info = null;\n this._destination = null;\n this._title = null;\n this._isFenced = false;\n this._fenceChar = null;\n this._fenceLength = 0;\n this._fenceOffset = null;\n this._level = null;\n this._onEnter = null;\n this._onExit = null;\n};\n\nvar proto = Node.prototype;\n\nObject.defineProperty(proto, 'isContainer', {\n get: function () { return isContainer(this); }\n});\n\nObject.defineProperty(proto, 'type', {\n get: function() { return this._type; }\n});\n\nObject.defineProperty(proto, 'firstChild', {\n get: function() { return this._firstChild; }\n});\n\nObject.defineProperty(proto, 'lastChild', {\n get: function() { return this._lastChild; }\n});\n\nObject.defineProperty(proto, 'next', {\n get: function() { return this._next; }\n});\n\nObject.defineProperty(proto, 'prev', {\n get: function() { return this._prev; }\n});\n\nObject.defineProperty(proto, 'parent', {\n get: function() { return this._parent; }\n});\n\nObject.defineProperty(proto, 'sourcepos', {\n get: function() { return this._sourcepos; }\n});\n\nObject.defineProperty(proto, 'literal', {\n get: function() { return this._literal; },\n set: function(s) { this._literal = s; }\n});\n\nObject.defineProperty(proto, 'destination', {\n get: function() { return this._destination; },\n set: function(s) { this._destination = s; }\n});\n\nObject.defineProperty(proto, 'title', {\n get: function() { return this._title; },\n set: function(s) { this._title = s; }\n});\n\nObject.defineProperty(proto, 'info', {\n get: function() { return this._info; },\n set: function(s) { this._info = s; }\n});\n\nObject.defineProperty(proto, 'level', {\n get: function() { return this._level; },\n set: function(s) { this._level = s; }\n});\n\nObject.defineProperty(proto, 'listType', {\n get: function() { return this._listData.type; },\n set: function(t) { this._listData.type = t; }\n});\n\nObject.defineProperty(proto, 'listTight', {\n get: function() { return this._listData.tight; },\n set: function(t) { this._listData.tight = t; }\n});\n\nObject.defineProperty(proto, 'listStart', {\n get: function() { return this._listData.start; },\n set: function(n) { this._listData.start = n; }\n});\n\nObject.defineProperty(proto, 'listDelimiter', {\n get: function() { return this._listData.delimiter; },\n set: function(delim) { this._listData.delimiter = delim; }\n});\n\nObject.defineProperty(proto, 'onEnter', {\n get: function() { return this._onEnter; },\n set: function(s) { this._onEnter = s; }\n});\n\nObject.defineProperty(proto, 'onExit', {\n get: function() { return this._onExit; },\n set: function(s) { this._onExit = s; }\n});\n\nNode.prototype.appendChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._lastChild) {\n this._lastChild._next = child;\n child._prev = this._lastChild;\n this._lastChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.prependChild = function(child) {\n child.unlink();\n child._parent = this;\n if (this._firstChild) {\n this._firstChild._prev = child;\n child._next = this._firstChild;\n this._firstChild = child;\n } else {\n this._firstChild = child;\n this._lastChild = child;\n }\n};\n\nNode.prototype.unlink = function() {\n if (this._prev) {\n this._prev._next = this._next;\n } else if (this._parent) {\n this._parent._firstChild = this._next;\n }\n if (this._next) {\n this._next._prev = this._prev;\n } else if (this._parent) {\n this._parent._lastChild = this._prev;\n }\n this._parent = null;\n this._next = null;\n this._prev = null;\n};\n\nNode.prototype.insertAfter = function(sibling) {\n sibling.unlink();\n sibling._next = this._next;\n if (sibling._next) {\n sibling._next._prev = sibling;\n }\n sibling._prev = this;\n this._next = sibling;\n sibling._parent = this._parent;\n if (!sibling._next) {\n sibling._parent._lastChild = sibling;\n }\n};\n\nNode.prototype.insertBefore = function(sibling) {\n sibling.unlink();\n sibling._prev = this._prev;\n if (sibling._prev) {\n sibling._prev._next = sibling;\n }\n sibling._next = this;\n this._prev = sibling;\n sibling._parent = this._parent;\n if (!sibling._prev) {\n sibling._parent._firstChild = sibling;\n }\n};\n\nNode.prototype.walker = function() {\n var walker = new NodeWalker(this);\n return walker;\n};\n\nmodule.exports = Node;\n\n\n/* Example of use of walker:\n\n var walker = w.walker();\n var event;\n\n while (event = walker.next()) {\n console.log(event.entering, event.node.type);\n }\n\n */\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n // Encodes a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // to a list of push actions.\n encodeActions: function encodeActions(action) {\n var notify = action.notify;\n var sound = action.sound;\n var highlight = action.highlight;\n if (notify) {\n var actions = [\"notify\"];\n if (sound) {\n actions.push({ \"set_tweak\": \"sound\", \"value\": sound });\n }\n if (highlight) {\n actions.push({ \"set_tweak\": \"highlight\" });\n } else {\n actions.push({ \"set_tweak\": \"highlight\", \"value\": false });\n }\n return actions;\n } else {\n return [\"dont_notify\"];\n }\n },\n\n // Decode a list of actions to a dictionary of {\n // \"notify\": true/false,\n // \"sound\": string or undefined,\n // \"highlight: true/false,\n // }\n // If the actions couldn't be decoded then returns null.\n decodeActions: function decodeActions(actions) {\n var notify = false;\n var sound = null;\n var highlight = false;\n\n for (var i = 0; i < actions.length; ++i) {\n var action = actions[i];\n if (action === \"notify\") {\n notify = true;\n } else if (action === \"dont_notify\") {\n notify = false;\n } else if ((typeof action === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(action)) === 'object') {\n if (action.set_tweak === \"sound\") {\n sound = action.value;\n } else if (action.set_tweak === \"highlight\") {\n highlight = action.value;\n } else {\n // We don't understand this kind of tweak, so give up.\n return null;\n }\n } else {\n // We don't understand this kind of action, so give up.\n return null;\n }\n }\n\n if (highlight === undefined) {\n // If a highlight tweak is missing a value then it defaults to true.\n highlight = true;\n }\n\n var result = { notify: notify, highlight: highlight };\n if (sound !== null) {\n result.sound = sound;\n }\n return result;\n }\n};\n//# sourceMappingURL=NotificationUtils.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar StandardActions = require('./StandardActions');\nvar NotificationUtils = require('./NotificationUtils');\n\nvar states = {\n /** The push rule is disabled */\n OFF: \"off\",\n\n /** The user will receive push notification for this rule */\n ON: \"on\",\n\n /** The user will receive push notification for this rule with sound and\n highlight if this is legitimate */\n LOUD: \"loud\"\n};\n\nmodule.exports = {\n /**\n * Enum for state of a push rule as defined by the Vector UI.\n * @readonly\n * @enum {string}\n */\n states: states,\n\n /**\n * Convert a PushRuleVectorState to a list of actions\n *\n * @return [object] list of push-rule actions\n */\n actionsFor: function actionsFor(pushRuleVectorState) {\n if (pushRuleVectorState === this.ON) {\n return StandardActions.ACTION_NOTIFY;\n } else if (pushRuleVectorState === this.LOUD) {\n return StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND;\n }\n },\n\n /**\n * Convert a pushrule's actions to a PushRuleVectorState.\n *\n * Determines whether a content rule is in the PushRuleVectorState.ON\n * category or in PushRuleVectorState.LOUD, regardless of its enabled\n * state. Returns null if it does not match these categories.\n */\n contentRuleVectorStateKind: function contentRuleVectorStateKind(rule) {\n var decoded = NotificationUtils.decodeActions(rule.actions);\n\n if (!decoded) {\n return null;\n }\n\n // Count tweaks to determine if it is a ON or LOUD rule\n var tweaks = 0;\n if (decoded.sound) {\n tweaks++;\n }\n if (decoded.highlight) {\n tweaks++;\n }\n var stateKind = null;\n switch (tweaks) {\n case 0:\n stateKind = this.ON;\n break;\n case 2:\n stateKind = this.LOUD;\n break;\n }\n return stateKind;\n }\n};\n\nfor (var k in states) {\n module.exports[k] = states[k];\n}\n//# sourceMappingURL=PushRuleVectorState.js.map","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import isPlainObject from 'lodash-es/isPlainObject';\nimport $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nexport var ActionTypes = {\n INIT: '@@redux/INIT'\n\n /**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n};export default function createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}","import { ActionTypes } from './createStore';\nimport isPlainObject from 'lodash-es/isPlainObject';\nimport warning from './utils/warning';\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nexport default function combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n var unexpectedKeyCache = void 0;\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError = void 0;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}","function bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nexport default function bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}","/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nexport default function compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(undefined, arguments));\n };\n });\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport compose from './compose';\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nexport default function applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}","import createStore from './createStore';\nimport combineReducers from './combineReducers';\nimport bindActionCreators from './bindActionCreators';\nimport applyMiddleware from './applyMiddleware';\nimport compose from './compose';\nimport warning from './utils/warning';\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { createStore, combineReducers, bindActionCreators, applyMiddleware, compose };","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","/*! https://mths.be/esrever v0.2.0 by @mathias */\n;(function(root) {\n\n\t// Detect free variables `exports`\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code,\n\t// and use it as `root`\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar regexSymbolWithCombiningMarks = /([\\0-\\u02FF\\u0370-\\u1AAF\\u1B00-\\u1DBF\\u1E00-\\u20CF\\u2100-\\uD7FF\\uE000-\\uFE1F\\uFE30-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])([\\u0300-\\u036F\\u1AB0-\\u1AFF\\u1DC0-\\u1DFF\\u20D0-\\u20FF\\uFE20-\\uFE2F]+)/g;\n\tvar regexSurrogatePair = /([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g;\n\n\tvar reverse = function(string) {\n\t\t// Step 1: deal with combining marks and astral symbols (surrogate pairs)\n\t\tstring = string\n\t\t\t// Swap symbols with their combining marks so the combining marks go first\n\t\t\t.replace(regexSymbolWithCombiningMarks, function($0, $1, $2) {\n\t\t\t\t// Reverse the combining marks so they will end up in the same order\n\t\t\t\t// later on (after another round of reversing)\n\t\t\t\treturn reverse($2) + $1;\n\t\t\t})\n\t\t\t// Swap high and low surrogates so the low surrogates go first\n\t\t\t.replace(regexSurrogatePair, '$2$1');\n\t\t// Step 2: reverse the code units in the string\n\t\tvar result = '';\n\t\tvar index = string.length;\n\t\twhile (index--) {\n\t\t\tresult += string.charAt(index);\n\t\t}\n\t\treturn result;\n\t};\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar esrever = {\n\t\t'version': '0.2.0',\n\t\t'reverse': reverse\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn esrever;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = esrever;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in esrever) {\n\t\t\t\tesrever.hasOwnProperty(key) && (freeExports[key] = esrever[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.esrever = esrever;\n\t}\n\n}(this));\n","var arrayMap = require('./_arrayMap'),\n baseClone = require('./_baseClone'),\n baseUnset = require('./_baseUnset'),\n castPath = require('./_castPath'),\n copyObject = require('./_copyObject'),\n customOmitClone = require('./_customOmitClone'),\n flatRest = require('./_flatRest'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n});\n\nmodule.exports = omit;\n","/**\n * This is a straight rip-off of the React.js ReactPropTypes.js proptype validators,\n * modified to make it possible to validate Immutable.js data.\n * ImmutableTypes.listOf is patterned after React.PropTypes.arrayOf, but for Immutable.List\n * ImmutableTypes.shape is based on React.PropTypes.shape, but for any Immutable.Iterable\n */\n\"use strict\";\n\nvar Immutable = require(\"immutable\");\n\nvar ANONYMOUS = \"<<anonymous>>\";\n\nvar ImmutablePropTypes = {\n listOf: createListOfTypeChecker,\n mapOf: createMapOfTypeChecker,\n orderedMapOf: createOrderedMapOfTypeChecker,\n setOf: createSetOfTypeChecker,\n orderedSetOf: createOrderedSetOfTypeChecker,\n stackOf: createStackOfTypeChecker,\n iterableOf: createIterableOfTypeChecker,\n recordOf: createRecordOfTypeChecker,\n shape: createShapeChecker,\n contains: createShapeChecker,\n mapContains: createMapContainsChecker,\n // Primitive Types\n list: createImmutableTypeChecker(\"List\", Immutable.List.isList),\n map: createImmutableTypeChecker(\"Map\", Immutable.Map.isMap),\n orderedMap: createImmutableTypeChecker(\"OrderedMap\", Immutable.OrderedMap.isOrderedMap),\n set: createImmutableTypeChecker(\"Set\", Immutable.Set.isSet),\n orderedSet: createImmutableTypeChecker(\"OrderedSet\", Immutable.OrderedSet.isOrderedSet),\n stack: createImmutableTypeChecker(\"Stack\", Immutable.Stack.isStack),\n seq: createImmutableTypeChecker(\"Seq\", Immutable.Seq.isSeq),\n record: createImmutableTypeChecker(\"Record\", function (isRecord) {\n return isRecord instanceof Immutable.Record;\n }),\n iterable: createImmutableTypeChecker(\"Iterable\", Immutable.Iterable.isIterable)\n};\n\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return \"array\";\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\";\n }\n if (propValue instanceof Immutable.Iterable) {\n return \"Immutable.\" + propValue.toSource().split(\" \")[0];\n }\n return propType;\n}\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n rest[_key - 6] = arguments[_key];\n }\n\n propFullName = propFullName || propName;\n componentName = componentName || ANONYMOUS;\n if (props[propName] == null) {\n var locationName = location;\n if (isRequired) {\n return new Error(\"Required \" + locationName + \" `\" + propFullName + \"` was not specified in \" + (\"`\" + componentName + \"`.\"));\n }\n } else {\n return validate.apply(undefined, [props, propName, componentName, location, propFullName].concat(rest));\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createImmutableTypeChecker(immutableClassName, immutableClassTypeValidator) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + location + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected `\" + immutableClassName + \"`.\"));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createIterableTypeChecker(typeChecker, immutableClassName, immutableClassTypeValidator) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var locationName = location;\n var propType = getPropType(propValue);\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type \" + (\"`\" + propType + \"` supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid typeChecker supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var propValues = propValue.toArray();\n for (var i = 0, len = propValues.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [propValues, i, componentName, location, \"\" + propFullName + \"[\" + i + \"]\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createKeysTypeChecker(typeChecker) {\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (typeof typeChecker !== \"function\") {\n return new Error(\"Invalid keysTypeChecker (optional second argument) supplied to `\" + componentName + \"` \" + (\"for propType `\" + propFullName + \"`, expected a function.\"));\n }\n\n var keys = propValue.keySeq().toArray();\n for (var i = 0, len = keys.length; i < len; i++) {\n var error = typeChecker.apply(undefined, [keys, i, componentName, location, \"\" + propFullName + \" -> key(\" + keys[i] + \")\"].concat(rest));\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createListOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"List\", Immutable.List.isList);\n}\n\nfunction createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, immutableClassName, immutableClassTypeValidator) {\n function validate() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return createIterableTypeChecker(valuesTypeChecker, immutableClassName, immutableClassTypeValidator).apply(undefined, args) || keysTypeChecker && createKeysTypeChecker(keysTypeChecker).apply(undefined, args);\n }\n\n return createChainableTypeChecker(validate);\n}\n\nfunction createMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"Map\", Immutable.Map.isMap);\n}\n\nfunction createOrderedMapOfTypeChecker(valuesTypeChecker, keysTypeChecker) {\n return createMapOfTypeCheckerFactory(valuesTypeChecker, keysTypeChecker, \"OrderedMap\", Immutable.OrderedMap.isOrderedMap);\n}\n\nfunction createSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Set\", Immutable.Set.isSet);\n}\n\nfunction createOrderedSetOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"OrderedSet\", Immutable.OrderedSet.isOrderedSet);\n}\n\nfunction createStackOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Stack\", Immutable.Stack.isStack);\n}\n\nfunction createIterableOfTypeChecker(typeChecker) {\n return createIterableTypeChecker(typeChecker, \"Iterable\", Immutable.Iterable.isIterable);\n}\n\nfunction createRecordOfTypeChecker(recordKeys) {\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!(propValue instanceof Immutable.Record)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js Record.\"));\n }\n for (var key in recordKeys) {\n var checker = recordKeys[key];\n if (!checker) {\n continue;\n }\n var mutablePropValue = propValue.toObject();\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\n// there is some irony in the fact that shapeTypes is a standard hash and not an immutable collection\nfunction createShapeTypeChecker(shapeTypes) {\n var immutableClassName = arguments[1] === undefined ? \"Iterable\" : arguments[1];\n var immutableClassTypeValidator = arguments[2] === undefined ? Immutable.Iterable.isIterable : arguments[2];\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var _len = arguments.length, rest = Array(_len > 5 ? _len - 5 : 0), _key = 5; _key < _len; _key++) {\n rest[_key - 5] = arguments[_key];\n }\n\n var propValue = props[propName];\n if (!immutableClassTypeValidator(propValue)) {\n var propType = getPropType(propValue);\n var locationName = location;\n return new Error(\"Invalid \" + locationName + \" `\" + propFullName + \"` of type `\" + propType + \"` \" + (\"supplied to `\" + componentName + \"`, expected an Immutable.js \" + immutableClassName + \".\"));\n }\n var mutablePropValue = propValue.toObject();\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker.apply(undefined, [mutablePropValue, key, componentName, location, \"\" + propFullName + \".\" + key].concat(rest));\n if (error) {\n return error;\n }\n }\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes);\n}\n\nfunction createMapContainsChecker(shapeTypes) {\n return createShapeTypeChecker(shapeTypes, \"Map\", Immutable.Map.isMap);\n}\n\nmodule.exports = ImmutablePropTypes;","'use strict';\n\nexports.atob = self.atob.bind(self);\nexports.btoa = self.btoa.bind(self);\n","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","exports.f = require('./_wks');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://rwaldron.github.io/proposal-math-extensions/\nmodule.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {\n if (\n arguments.length === 0\n // eslint-disable-next-line no-self-compare\n || x != x\n // eslint-disable-next-line no-self-compare\n || inLow != inLow\n // eslint-disable-next-line no-self-compare\n || inHigh != inHigh\n // eslint-disable-next-line no-self-compare\n || outLow != outLow\n // eslint-disable-next-line no-self-compare\n || outHigh != outHigh\n ) return NaN;\n if (x === Infinity || x === -Infinity) return x;\n return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar lowPriorityWarning = require('./lowPriorityWarning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n lowPriorityWarning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = {\n Component: ReactComponent,\n PureComponent: ReactPureComponent\n};","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n// React 15.5 references this module, and assumes PropTypes are still callable in production.\n// Therefore we re-export development-only version with all the PropTypes checks here.\n// However if one is migrating to the `prop-types` npm library, they will go through the\n// `index.js` entry point, and it will branch depending on the environment.\nvar factory = require('./factoryWithTypeCheckers');\nmodule.exports = function(isValidElement) {\n // It is still allowed in 15.5.\n var throwOnDirectAccess = false;\n return factory(isValidElement, throwOnDirectAccess);\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = { \"default\": require(\"core-js/library/fn/object/freeze\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nfunction isCheckable(elem) {\n var type = elem.type;\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(inst) {\n return inst._wrapperState.valueTracker;\n}\n\nfunction attachTracker(inst, tracker) {\n inst._wrapperState.valueTracker = tracker;\n}\n\nfunction detachTracker(inst) {\n inst._wrapperState.valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n var value;\n if (node) {\n value = isCheckable(node) ? '' + node.checked : node.value;\n }\n return value;\n}\n\nvar inputValueTracking = {\n // exposed for testing\n _getTrackerFromNode: function (node) {\n return getTracker(ReactDOMComponentTree.getInstanceFromNode(node));\n },\n\n\n track: function (inst) {\n if (getTracker(inst)) {\n return;\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var valueField = isCheckable(node) ? 'checked' : 'value';\n var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n var currentValue = '' + node[valueField];\n\n // if someone has already defined a value or Safari, then bail\n // and don't track value will cause over reporting of changes,\n // but it's better then a hard failure\n // (needed for certain tests that spyOn input values and Safari)\n if (node.hasOwnProperty(valueField) || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n return;\n }\n\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable,\n configurable: true,\n get: function () {\n return descriptor.get.call(this);\n },\n set: function (value) {\n currentValue = '' + value;\n descriptor.set.call(this, value);\n }\n });\n\n attachTracker(inst, {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = '' + value;\n },\n stopTracking: function () {\n detachTracker(inst);\n delete node[valueField];\n }\n });\n },\n\n updateValueIfChanged: function (inst) {\n if (!inst) {\n return false;\n }\n var tracker = getTracker(inst);\n\n if (!tracker) {\n inputValueTracking.track(inst);\n return true;\n }\n\n var lastValue = tracker.getValue();\n var nextValue = getValueFromNode(ReactDOMComponentTree.getNodeFromInstance(inst));\n\n if (nextValue !== lastValue) {\n tracker.setValue(nextValue);\n return true;\n }\n\n return false;\n },\n stopTracking: function (inst) {\n var tracker = getTracker(inst);\n if (tracker) {\n tracker.stopTracking();\n }\n }\n};\n\nmodule.exports = inputValueTracking;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n color: true,\n date: true,\n datetime: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n password: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n};\n\nmodule.exports = ViewportMetrics;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n columns: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridRowEnd: true,\n gridRowSpan: true,\n gridRowStart: true,\n gridColumn: true,\n gridColumnEnd: true,\n gridColumnSpan: true,\n gridColumnStart: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n};\n\nmodule.exports = DOMPropertyOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;","/**\n * Copyright (c) 2016-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty\n // Strip regex characters so we can use it for regex\n ).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&'\n // Remove hasOwnProperty from the template to make it generic\n ).replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs,\n\n pushNonStandardWarningStack: function (isCreatingElement, currentSource) {\n if (typeof console.reactStack !== 'function') {\n return;\n }\n\n var stack = [];\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n try {\n if (isCreatingElement) {\n stack.push({\n name: id ? ReactComponentTreeHook.getDisplayName(id) : null,\n fileName: currentSource ? currentSource.fileName : null,\n lineNumber: currentSource ? currentSource.lineNumber : null\n });\n }\n\n while (id) {\n var element = ReactComponentTreeHook.getElement(id);\n var parentID = ReactComponentTreeHook.getParentID(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName = ownerID ? ReactComponentTreeHook.getDisplayName(ownerID) : null;\n var source = element && element._source;\n stack.push({\n name: ownerName,\n fileName: source ? source.fileName : null,\n lineNumber: source ? source.lineNumber : null\n });\n id = parentID;\n }\n } catch (err) {\n // Internal state is messed up.\n // Stop building the stack (it's just a nice to have).\n }\n\n console.reactStack(stack);\n },\n popNonStandardWarningStack: function () {\n if (typeof console.reactStackEnd !== 'function') {\n return;\n }\n console.reactStackEnd();\n }\n};\n\nmodule.exports = ReactComponentTreeHook;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc) /*?DOMElement*/{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n if (typeof doc === 'undefined') {\n return null;\n }\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? \" Instead of passing a string like 'div', pass \" + \"React.createElement('div') or <div />.\" : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, {\n child: nextElement\n });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, \"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var list = this.map[name]\n if (!list) {\n list = []\n this.map[name] = list\n }\n list.push(value)\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n var values = this.map[normalizeName(name)]\n return values ? values[0] : null\n }\n\n Headers.prototype.getAll = function(name) {\n return this.map[normalizeName(name)] || []\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = [normalizeValue(value)]\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n Object.getOwnPropertyNames(this.map).forEach(function(name) {\n this.map[name].forEach(function(value) {\n callback.call(thisArg, value, name, this)\n }, this)\n }, this)\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (typeof input === 'string') {\n this.url = input\n } else {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split('\\r\\n').forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\"use strict\";\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar Room = Matrix.Room;\nvar CallHandler = require('./CallHandler');\n\n// FIXME: this is Riot (Vector) specific code, but will be removed shortly when\n// we switch over to jitsi entirely for video conferencing.\n\n// FIXME: This currently forces Vector to try to hit the matrix.org AS for conferencing.\n// This is bad because it prevents people running their own ASes from being used.\n// This isn't permanent and will be customisable in the future: see the proposal\n// at docs/conferencing.md for more info.\nvar USER_PREFIX = \"fs_\";\nvar DOMAIN = \"matrix.org\";\n\nfunction ConferenceCall(matrixClient, groupChatRoomId) {\n this.client = matrixClient;\n this.groupRoomId = groupChatRoomId;\n this.confUserId = module.exports.getConferenceUserIdForRoom(this.groupRoomId);\n}\n\nConferenceCall.prototype.setup = function () {\n var self = this;\n return this._joinConferenceUser().then(function () {\n return self._getConferenceUserRoom();\n }).then(function (room) {\n // return a call for *this* room to be placed. We also tack on\n // confUserId to speed up lookups (else we'd need to loop every room\n // looking for a 1:1 room with this conf user ID!)\n var call = Matrix.createNewMatrixCall(self.client, room.roomId);\n call.confUserId = self.confUserId;\n call.groupRoomId = self.groupRoomId;\n return call;\n });\n};\n\nConferenceCall.prototype._joinConferenceUser = function () {\n // Make sure the conference user is in the group chat room\n var groupRoom = this.client.getRoom(this.groupRoomId);\n if (!groupRoom) {\n return _bluebird2.default.reject(\"Bad group room ID\");\n }\n var member = groupRoom.getMember(this.confUserId);\n if (member && member.membership === \"join\") {\n return _bluebird2.default.resolve();\n }\n return this.client.invite(this.groupRoomId, this.confUserId);\n};\n\nConferenceCall.prototype._getConferenceUserRoom = function () {\n // Use an existing 1:1 with the conference user; else make one\n var rooms = this.client.getRooms();\n var confRoom = null;\n for (var i = 0; i < rooms.length; i++) {\n var confUser = rooms[i].getMember(this.confUserId);\n if (confUser && confUser.membership === \"join\" && rooms[i].getJoinedMemberCount() === 2) {\n confRoom = rooms[i];\n break;\n }\n }\n if (confRoom) {\n return _bluebird2.default.resolve(confRoom);\n }\n return this.client.createRoom({\n preset: \"private_chat\",\n invite: [this.confUserId]\n }).then(function (res) {\n return new Room(res.room_id, null, client.getUserId());\n });\n};\n\n/**\n * Check if this user ID is in fact a conference bot.\n * @param {string} userId The user ID to check.\n * @return {boolean} True if it is a conference bot.\n */\nmodule.exports.isConferenceUser = function (userId) {\n if (userId.indexOf(\"@\" + USER_PREFIX) !== 0) {\n return false;\n }\n var base64part = userId.split(\":\")[0].substring(1 + USER_PREFIX.length);\n if (base64part) {\n var decoded = new Buffer(base64part, \"base64\").toString();\n // ! $STUFF : $STUFF\n return (/^!.+:.+/.test(decoded)\n );\n }\n return false;\n};\n\nmodule.exports.getConferenceUserIdForRoom = function (roomId) {\n // abuse browserify's core node Buffer support (strip padding ='s)\n var base64RoomId = new Buffer(roomId).toString(\"base64\").replace(/=/g, \"\");\n return \"@\" + USER_PREFIX + base64RoomId + \":\" + DOMAIN;\n};\n\nmodule.exports.createNewMatrixCall = function (client, roomId) {\n var confCall = new ConferenceCall(client, roomId);\n return confCall.setup();\n};\n\nmodule.exports.getConferenceCallForRoom = function (roomId) {\n // search for a conference 1:1 call for this group chat room ID\n var activeCall = CallHandler.getAnyActiveCall();\n if (activeCall && activeCall.confUserId) {\n var thisRoomConfUserId = module.exports.getConferenceUserIdForRoom(roomId);\n if (thisRoomConfUserId === activeCall.confUserId) {\n return activeCall;\n }\n }\n return null;\n};\n\nmodule.exports.ConferenceCall = ConferenceCall;\n\nmodule.exports.slot = 'conference';\n//# sourceMappingURL=VectorConferenceHandler.js.map","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module ContentHelpers */\n\nmodule.exports = {\n /**\n * Generates the content for a HTML Message event\n * @param {string} body the plaintext body of the message\n * @param {string} htmlBody the HTML representation of the message\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlMessage: function makeHtmlMessage(body, htmlBody) {\n return {\n msgtype: \"m.text\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Notice event\n * @param {string} body the plaintext body of the notice\n * @param {string} htmlBody the HTML representation of the notice\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlNotice: function makeHtmlNotice(body, htmlBody) {\n return {\n msgtype: \"m.notice\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a HTML Emote event\n * @param {string} body the plaintext body of the emote\n * @param {string} htmlBody the HTML representation of the emote\n * @returns {{msgtype: string, format: string, body: string, formatted_body: string}}\n */\n makeHtmlEmote: function makeHtmlEmote(body, htmlBody) {\n return {\n msgtype: \"m.emote\",\n format: \"org.matrix.custom.html\",\n body: body,\n formatted_body: htmlBody\n };\n },\n\n /**\n * Generates the content for a Plaintext Message event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeTextMessage: function makeTextMessage(body) {\n return {\n msgtype: \"m.text\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Notice event\n * @param {string} body the plaintext body of the notice\n * @returns {{msgtype: string, body: string}}\n */\n makeNotice: function makeNotice(body) {\n return {\n msgtype: \"m.notice\",\n body: body\n };\n },\n\n /**\n * Generates the content for a Plaintext Emote event\n * @param {string} body the plaintext body of the emote\n * @returns {{msgtype: string, body: string}}\n */\n makeEmoteMessage: function makeEmoteMessage(body) {\n return {\n msgtype: \"m.emote\",\n body: body\n };\n }\n};\n//# sourceMappingURL=content-helpers.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module. See {@link MatrixInMemoryStore} for the public class.\n * @module store/memory\n */\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../utils\");\nvar User = require(\"../models/user\");\n\n\n/**\n * Construct a new in-memory data store for the Matrix Client.\n * @constructor\n * @param {Object=} opts Config options\n * @param {LocalStorage} opts.localStorage The local storage instance to persist\n * some forms of data such as tokens. Rooms will NOT be stored.\n */\nmodule.exports.MatrixInMemoryStore = function MatrixInMemoryStore(opts) {\n opts = opts || {};\n this.rooms = {\n // roomId: Room\n };\n this.groups = {\n // groupId: Group\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n this.localStorage = opts.localStorage;\n this._oobMembers = {\n // roomId: [member events]\n };\n this._clientOptions = {};\n};\n\nmodule.exports.MatrixInMemoryStore.prototype = {\n\n /**\n * Retrieve the token to stream from.\n * @return {string} The token or null.\n */\n getSyncToken: function getSyncToken() {\n return this.syncToken;\n },\n\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Set the token to stream from.\n * @param {string} token The token to stream from.\n */\n setSyncToken: function setSyncToken(token) {\n this.syncToken = token;\n },\n\n /**\n * Store the given room.\n * @param {Group} group The group to be stored\n */\n storeGroup: function storeGroup(group) {\n this.groups[group.groupId] = group;\n },\n\n /**\n * Retrieve a group by its group ID.\n * @param {string} groupId The group ID.\n * @return {Group} The group or null.\n */\n getGroup: function getGroup(groupId) {\n return this.groups[groupId] || null;\n },\n\n /**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, which may be empty.\n */\n getGroups: function getGroups() {\n return utils.values(this.groups);\n },\n\n /**\n * Store the given room.\n * @param {Room} room The room to be stored. All properties must be stored.\n */\n storeRoom: function storeRoom(room) {\n this.rooms[room.roomId] = room;\n // add listeners for room member changes so we can keep the room member\n // map up-to-date.\n room.currentState.on(\"RoomState.members\", this._onRoomMember.bind(this));\n // add existing members\n var self = this;\n room.currentState.getMembers().forEach(function (m) {\n self._onRoomMember(null, room.currentState, m);\n });\n },\n\n /**\n * Called when a room member in a room being tracked by this store has been\n * updated.\n * @param {MatrixEvent} event\n * @param {RoomState} state\n * @param {RoomMember} member\n */\n _onRoomMember: function _onRoomMember(event, state, member) {\n if (member.membership === \"invite\") {\n // We do NOT add invited members because people love to typo user IDs\n // which would then show up in these lists (!)\n return;\n }\n\n var user = this.users[member.userId] || new User(member.userId);\n if (member.name) {\n user.setDisplayName(member.name);\n if (member.events.member) {\n user.setRawDisplayName(member.events.member.getDirectionalContent().displayname);\n }\n }\n if (member.events.member && member.events.member.getContent().avatar_url) {\n user.setAvatarUrl(member.events.member.getContent().avatar_url);\n }\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a room by its' room ID.\n * @param {string} roomId The room ID.\n * @return {Room} The room or null.\n */\n getRoom: function getRoom(roomId) {\n return this.rooms[roomId] || null;\n },\n\n /**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, which may be empty.\n */\n getRooms: function getRooms() {\n return utils.values(this.rooms);\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n if (this.rooms[roomId]) {\n this.rooms[roomId].removeListener(\"RoomState.members\", this._onRoomMember);\n }\n delete this.rooms[roomId];\n },\n\n /**\n * Retrieve a summary of all the rooms.\n * @return {RoomSummary[]} A summary of each room.\n */\n getRoomSummaries: function getRoomSummaries() {\n return utils.map(utils.values(this.rooms), function (room) {\n return room.summary;\n });\n },\n\n /**\n * Store a User.\n * @param {User} user The user to store.\n */\n storeUser: function storeUser(user) {\n this.users[user.userId] = user;\n },\n\n /**\n * Retrieve a User by its' user ID.\n * @param {string} userId The user ID.\n * @return {User} The user or null.\n */\n getUser: function getUser(userId) {\n return this.users[userId] || null;\n },\n\n /**\n * Retrieve all known users.\n * @return {User[]} A list of users, which may be empty.\n */\n getUsers: function getUsers() {\n return utils.values(this.users);\n },\n\n /**\n * Retrieve scrollback for this room.\n * @param {Room} room The matrix room\n * @param {integer} limit The max number of old events to retrieve.\n * @return {Array<Object>} An array of objects which will be at most 'limit'\n * length and at least 0. The objects are the raw event JSON.\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room. The events have already been added to the timeline\n * @param {Room} room The room to store events for.\n * @param {Array<MatrixEvent>} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {\n // no-op because they've already been added to the room instance.\n },\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {\n if (!filter) {\n return;\n }\n if (!this.filters[filter.userId]) {\n this.filters[filter.userId] = {};\n }\n this.filters[filter.userId][filter.filterId] = filter;\n },\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n if (!this.filters[userId] || !this.filters[userId][filterId]) {\n return null;\n }\n return this.filters[userId][filterId];\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n if (!this.localStorage) {\n return null;\n }\n try {\n return this.localStorage.getItem(\"mxjssdk_memory_filter_\" + filterName);\n } catch (e) {}\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {\n if (!this.localStorage) {\n return;\n }\n try {\n this.localStorage.setItem(\"mxjssdk_memory_filter_\" + filterName, filterId);\n } catch (e) {}\n },\n\n /**\n * Store user-scoped account data events.\n * N.B. that account data only allows a single event per type, so multiple\n * events with the same type will replace each other.\n * @param {Array<MatrixEvent>} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {\n var self = this;\n events.forEach(function (event) {\n self.accountData[event.getType()] = event;\n });\n },\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n * @return {?MatrixEvent} the user account_data event of given type, if any\n */\n getAccountData: function getAccountData(eventType) {\n return this.accountData[eventType];\n },\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n */\n save: function save() {},\n\n /**\n * Startup does nothing as this store doesn't require starting up.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n this.rooms = {\n // roomId: Room\n };\n this.users = {\n // userId: User\n };\n this.syncToken = null;\n this.filters = {\n // userId: {\n // filterId: Filter\n // }\n };\n this.accountData = {\n // type : content\n };\n return _bluebird2.default.resolve();\n },\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return _bluebird2.default.resolve(this._oobMembers[roomId] || null);\n },\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n this._oobMembers[roomId] = membershipEvents;\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve(this._clientOptions);\n },\n\n storeClientOptions: function storeClientOptions(options) {\n this._clientOptions = (0, _assign2.default)({}, options);\n return _bluebird2.default.resolve();\n }\n};\n//# sourceMappingURL=memory.js.map","\"use strict\";\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _memory = require(\"./memory\");\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nvar _indexeddbLocalBackend = require(\"./indexeddb-local-backend.js\");\n\nvar _indexeddbLocalBackend2 = _interopRequireDefault(_indexeddbLocalBackend);\n\nvar _indexeddbRemoteBackend = require(\"./indexeddb-remote-backend.js\");\n\nvar _indexeddbRemoteBackend2 = _interopRequireDefault(_indexeddbRemoteBackend);\n\nvar _user = require(\"../models/user\");\n\nvar _user2 = _interopRequireDefault(_user);\n\nvar _event = require(\"../models/event\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module. See {@link IndexedDBStore} for the public class.\n * @module store/indexeddb\n */\n\n// If this value is too small we'll be writing very often which will cause\n// noticable stop-the-world pauses. If this value is too big we'll be writing\n// so infrequently that the /sync size gets bigger on reload. Writing more\n// often does not affect the length of the pause since the entire /sync\n// response is persisted each time.\nvar WRITE_DELAY_MS = 1000 * 60 * 5; // once every 5 minutes\n\n\n/**\n * Construct a new Indexed Database store, which extends MatrixInMemoryStore.\n *\n * This store functions like a MatrixInMemoryStore except it periodically persists\n * the contents of the store to an IndexedDB backend.\n *\n * All data is still kept in-memory but can be loaded from disk by calling\n * <code>startup()</code>. This can make startup times quicker as a complete\n * sync from the server is not required. This does not reduce memory usage as all\n * the data is eagerly fetched when <code>startup()</code> is called.\n * <pre>\n * let opts = { localStorage: window.localStorage };\n * let store = new IndexedDBStore();\n * await store.startup(); // load from indexed db\n * let client = sdk.createClient({\n * store: store,\n * });\n * client.startClient();\n * client.on(\"sync\", function(state, prevState, data) {\n * if (state === \"PREPARED\") {\n * console.log(\"Started up, now with go faster stripes!\");\n * }\n * });\n * </pre>\n *\n * @constructor\n * @extends MatrixInMemoryStore\n * @param {Object} opts Options object.\n * @param {Object} opts.indexedDB The Indexed DB interface e.g.\n * <code>window.indexedDB</code>\n * @param {string=} opts.dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {string=} opts.workerScript Optional URL to a script to invoke a web\n * worker with to run IndexedDB queries on the web worker. The IndexedDbStoreWorker\n * class is provided for this purpose and requires the application to provide a\n * trivial wrapper script around it.\n * @param {Object=} opts.workerApi The webWorker API object. If omitted, the global Worker\n * object will be used if it exists.\n * @prop {IndexedDBStoreBackend} backend The backend instance. Call through to\n * this API if you need to perform specific indexeddb actions like deleting the\n * database.\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar IndexedDBStore = function IndexedDBStore(opts) {\n _memory.MatrixInMemoryStore.call(this, opts);\n\n if (!opts.indexedDB) {\n throw new Error('Missing required option: indexedDB');\n }\n\n if (opts.workerScript) {\n // try & find a webworker-compatible API\n var workerApi = opts.workerApi;\n if (!workerApi) {\n // default to the global Worker object (which is where it in a browser)\n workerApi = global.Worker;\n }\n this.backend = new _indexeddbRemoteBackend2.default(opts.workerScript, opts.dbName, workerApi);\n } else {\n this.backend = new _indexeddbLocalBackend2.default(opts.indexedDB, opts.dbName);\n }\n\n this.startedUp = false;\n this._syncTs = 0;\n\n // Records the last-modified-time of each user at the last point we saved\n // the database, such that we can derive the set if users that have been\n // modified since we last saved.\n this._userModifiedMap = {\n // user_id : timestamp\n };\n};\n_utils2.default.inherits(IndexedDBStore, _memory.MatrixInMemoryStore);\n\n/**\n * @return {Promise} Resolved when loaded from indexed db.\n */\nIndexedDBStore.prototype.startup = function () {\n var _this = this;\n\n if (this.startedUp) {\n console.log(\"IndexedDBStore.startup: already started\");\n return _bluebird2.default.resolve();\n }\n\n console.log(\"IndexedDBStore.startup: connecting to backend\");\n return this.backend.connect().then(function () {\n console.log(\"IndexedDBStore.startup: loading presence events\");\n return _this.backend.getUserPresenceEvents();\n }).then(function (userPresenceEvents) {\n console.log(\"IndexedDBStore.startup: processing presence events\");\n userPresenceEvents.forEach(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n userId = _ref2[0],\n rawEvent = _ref2[1];\n\n var u = new _user2.default(userId);\n if (rawEvent) {\n u.setPresenceEvent(new _event.MatrixEvent(rawEvent));\n }\n _this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n _this.storeUser(u);\n });\n });\n};\n\n/**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\nIndexedDBStore.prototype.getSavedSync = function () {\n return this.backend.getSavedSync();\n};\n\n/** @return {Promise<bool>} whether or not the database was newly created in this session. */\nIndexedDBStore.prototype.isNewlyCreated = function () {\n return this.backend.isNewlyCreated();\n};\n\n/**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\nIndexedDBStore.prototype.getSavedSyncToken = function () {\n return this.backend.getNextBatchToken();\n},\n\n/**\n * Delete all data from this store.\n * @return {Promise} Resolves if the data was deleted from the database.\n */\nIndexedDBStore.prototype.deleteAllData = function () {\n _memory.MatrixInMemoryStore.prototype.deleteAllData.call(this);\n return this.backend.clearDatabase().then(function () {\n console.log(\"Deleted indexeddb data.\");\n }, function (err) {\n console.error(\"Failed to delete indexeddb data: \" + err);\n throw err;\n });\n};\n\n/**\n * Whether this store would like to save its data\n * Note that obviously whether the store wants to save or\n * not could change between calling this function and calling\n * save().\n *\n * @return {boolean} True if calling save() will actually save\n * (at the time this function is called).\n */\nIndexedDBStore.prototype.wantsSave = function () {\n var now = Date.now();\n return now - this._syncTs > WRITE_DELAY_MS;\n};\n\n/**\n * Possibly write data to the database.\n * @return {Promise} Promise resolves after the write completes\n * (or immediately if no write is performed)\n */\nIndexedDBStore.prototype.save = function () {\n if (this.wantsSave()) {\n return this._reallySave();\n }\n return _bluebird2.default.resolve();\n};\n\nIndexedDBStore.prototype._reallySave = function () {\n this._syncTs = Date.now(); // set now to guard against multi-writes\n\n // work out changed users (this doesn't handle deletions but you\n // can't 'delete' users as they are just presence events).\n var userTuples = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.getUsers()), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var u = _step.value;\n\n if (this._userModifiedMap[u.userId] === u.getLastModifiedTime()) continue;\n if (!u.events.presence) continue;\n\n userTuples.push([u.userId, u.events.presence.event]);\n\n // note that we've saved this version of the user\n this._userModifiedMap[u.userId] = u.getLastModifiedTime();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this.backend.syncToDatabase(userTuples).catch(function (err) {\n console.error(\"sync fail:\", err);\n });\n};\n\nIndexedDBStore.prototype.setSyncData = function (syncData) {\n return this.backend.setSyncData(syncData);\n};\n\n/**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\nIndexedDBStore.prototype.getOutOfBandMembers = function (roomId) {\n return this.backend.getOutOfBandMembers(roomId);\n};\n\n/**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\nIndexedDBStore.prototype.setOutOfBandMembers = function (roomId, membershipEvents) {\n return this.backend.setOutOfBandMembers(roomId, membershipEvents);\n};\n\nIndexedDBStore.prototype.clearOutOfBandMembers = function (roomId) {\n return this.backend.clearOutOfBandMembers(roomId);\n};\n\nIndexedDBStore.prototype.getClientOptions = function () {\n return this.backend.getClientOptions();\n};\n\nIndexedDBStore.prototype.storeClientOptions = function (options) {\n return this.backend.storeClientOptions(options);\n};\n\nmodule.exports.IndexedDBStore = IndexedDBStore;\n//# sourceMappingURL=indexeddb.js.map","\"use strict\";\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/reflect/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _setPrototypeOf = require(\"babel-runtime/core-js/reflect/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _construct = require(\"babel-runtime/core-js/reflect/construct\");\n\nvar _construct2 = _interopRequireDefault(_construct);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// can't just do InvalidStoreError extends Error\n// because of http://babeljs.io/docs/usage/caveats/#classes\nfunction InvalidStoreError(reason, value) {\n var message = \"Store is invalid because \" + reason + \", \" + \"please stop the client, delete all data and start the client again\";\n var instance = (0, _construct2.default)(Error, [message]);\n (0, _setPrototypeOf2.default)(instance, (0, _getPrototypeOf2.default)(this));\n instance.reason = reason;\n instance.value = value;\n return instance;\n}\n\nInvalidStoreError.TOGGLED_LAZY_LOADING = \"TOGGLED_LAZY_LOADING\";\n\nInvalidStoreError.prototype = (0, _create2.default)(Error.prototype, {\n constructor: {\n value: Error,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\n(0, _setPrototypeOf2.default)(InvalidStoreError, Error);\n\nmodule.exports.InvalidStoreError = InvalidStoreError;\n//# sourceMappingURL=errors.js.map","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _entries = require(\"babel-runtime/core-js/object/entries\");\n\nvar _entries2 = _interopRequireDefault(_entries);\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _setDeviceVerification = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(client, userId, deviceId, verified, blocked, known) {\n var dev;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (client._crypto) {\n _context2.next = 2;\n break;\n }\n\n throw new Error(\"End-to-End encryption disabled\");\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(client._crypto.setDeviceVerification(userId, deviceId, verified, blocked, known));\n\n case 4:\n dev = _context2.sent;\n\n client.emit(\"deviceVerificationChanged\", userId, deviceId, dev);\n\n case 6:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _setDeviceVerification(_x4, _x5, _x6, _x7, _x8, _x9) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\n\n\nvar _ReEmitter = require(\"./ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nvar _RoomList = require(\"./crypto/RoomList\");\n\nvar _RoomList2 = _interopRequireDefault(_RoomList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PushProcessor = require('./pushprocessor');\n\n/**\n * This is an internal module. See {@link MatrixClient} for the public class.\n * @module client\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar url = require('url');\n\nvar httpApi = require(\"./http-api\");\nvar MatrixEvent = require(\"./models/event\").MatrixEvent;\nvar EventStatus = require(\"./models/event\").EventStatus;\nvar EventTimeline = require(\"./models/event-timeline\");\nvar SearchResult = require(\"./models/search-result\");\nvar StubStore = require(\"./store/stub\");\nvar webRtcCall = require(\"./webrtc/call\");\nvar utils = require(\"./utils\");\nvar contentRepo = require(\"./content-repo\");\nvar Filter = require(\"./filter\");\nvar SyncApi = require(\"./sync\");\nvar MatrixBaseApis = require(\"./base-apis\");\nvar MatrixError = httpApi.MatrixError;\nvar ContentHelpers = require(\"./content-helpers\");\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\n_bluebird2.default.config({ warnings: false });\n\nvar SCROLLBACK_DELAY_MS = 3000;\nvar CRYPTO_ENABLED = false;\n\ntry {\n var Crypto = require(\"./crypto\");\n CRYPTO_ENABLED = true;\n} catch (e) {\n console.warn(\"Unable to load crypto module: crypto will be disabled: \" + e);\n}\n\n/**\n * Construct a Matrix Client. Only directly construct this if you want to use\n * custom modules. Normally, {@link createClient} should be used\n * as it specifies 'sensible' defaults for these modules.\n * @constructor\n * @extends {external:EventEmitter}\n * @extends {module:base-apis~MatrixBaseApis}\n *\n * @param {Object} opts The configuration options for this client.\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically <code>require(\"request\")\n * </code> as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {string} opts.userId The user ID for this user.\n *\n * @param {Object=} opts.store The data store to use. If not specified,\n * this client will not store any HTTP responses.\n *\n * @param {string=} opts.deviceId A unique identifier for this device; used for\n * tracking things like crypto keys and access tokens. If not specified,\n * end-to-end crypto will be disabled.\n *\n * @param {Object=} opts.sessionStore A store to be used for end-to-end crypto\n * session data. This should be a {@link\n * module:store/session/webstorage~WebStorageSessionStore|WebStorageSessionStore},\n * or an object implementing the same interface. If not specified,\n * end-to-end crypto will be disabled.\n *\n * @param {Object} opts.scheduler Optional. The scheduler to use. If not\n * specified, this client will not retry requests on failure. This client\n * will supply its own processing function to\n * {@link module:scheduler~MatrixScheduler#setProcessFunction}.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * <code>?user_id=</code>.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no timeout.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n *\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable\n * improved timeline support ({@link\n * module:client~MatrixClient#getEventTimeline getEventTimeline}). It is\n * disabled by default for compatibility with older clients - in particular to\n * maintain support for back-paginating the live timeline after a '/sync'\n * result with a gap.\n *\n * @param {module:crypto.store.base~CryptoStore} opts.cryptoStore\n * crypto store implementation.\n */\nfunction MatrixClient(opts) {\n // Allow trailing slash in HS url\n if (opts.baseUrl && opts.baseUrl.endsWith(\"/\")) {\n opts.baseUrl = opts.baseUrl.substr(0, opts.baseUrl.length - 1);\n }\n\n // Allow trailing slash in IS url\n if (opts.idBaseUrl && opts.idBaseUrl.endsWith(\"/\")) {\n opts.idBaseUrl = opts.idBaseUrl.substr(0, opts.idBaseUrl.length - 1);\n }\n\n MatrixBaseApis.call(this, opts);\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n this.store = opts.store || new StubStore();\n\n this.deviceId = opts.deviceId || null;\n\n var userId = opts.userId || null;\n this.credentials = {\n userId: userId\n };\n\n this.scheduler = opts.scheduler;\n if (this.scheduler) {\n var self = this;\n this.scheduler.setProcessFunction(function (eventToSend) {\n var room = self.getRoom(eventToSend.getRoomId());\n if (eventToSend.status !== EventStatus.SENDING) {\n _updatePendingEventStatus(room, eventToSend, EventStatus.SENDING);\n }\n return _sendEventHttpRequest(self, eventToSend);\n });\n }\n this.clientRunning = false;\n\n this.callList = {\n // callId: MatrixCall\n };\n\n // try constructing a MatrixCall to see if we are running in an environment\n // which has WebRTC. If we are, listen for and handle m.call.* events.\n var call = webRtcCall.createNewMatrixCall(this);\n this._supportsVoip = false;\n if (call) {\n setupCallEventHandler(this);\n this._supportsVoip = true;\n }\n this._syncingRetry = null;\n this._syncApi = null;\n this._peekSync = null;\n this._isGuest = false;\n this._ongoingScrollbacks = {};\n this.timelineSupport = Boolean(opts.timelineSupport);\n this.urlPreviewCache = {};\n this._notifTimelineSet = null;\n\n this._crypto = null;\n this._cryptoStore = opts.cryptoStore;\n this._sessionStore = opts.sessionStore;\n\n this._forceTURN = opts.forceTURN || false;\n\n if (CRYPTO_ENABLED) {\n this.olmVersion = Crypto.getOlmVersion();\n }\n\n // List of which rooms have encryption enabled: separate from crypto because\n // we still want to know which rooms are encrypted even if crypto is disabled:\n // we don't want to start sending unencrypted events to them.\n this._roomList = new _RoomList2.default(this._cryptoStore, this._sessionStore);\n\n // The pushprocessor caches useful things, so keep one and re-use it\n this._pushProcessor = new PushProcessor(this);\n\n this._serverSupportsLazyLoading = null;\n}\nutils.inherits(MatrixClient, EventEmitter);\nutils.extend(MatrixClient.prototype, MatrixBaseApis.prototype);\n\n/**\n * Clear any data out of the persistent stores used by the client.\n *\n * @returns {Promise} Promise which resolves when the stores have been cleared.\n */\nMatrixClient.prototype.clearStores = function () {\n if (this._clientRunning) {\n throw new Error(\"Cannot clear stores while client is running\");\n }\n\n var promises = [];\n\n promises.push(this.store.deleteAllData());\n if (this._cryptoStore) {\n promises.push(this._cryptoStore.deleteAllData());\n }\n return _bluebird2.default.all(promises);\n};\n\n/**\n * Get the user-id of the logged-in user\n *\n * @return {?string} MXID for the logged-in user, or null if not logged in\n */\nMatrixClient.prototype.getUserId = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId;\n }\n return null;\n};\n\n/**\n * Get the domain for this client's MXID\n * @return {?string} Domain of this MXID\n */\nMatrixClient.prototype.getDomain = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.replace(/^.*?:/, '');\n }\n return null;\n};\n\n/**\n * Get the local part of the current user ID e.g. \"foo\" in \"@foo:bar\".\n * @return {?string} The user ID localpart or null.\n */\nMatrixClient.prototype.getUserIdLocalpart = function () {\n if (this.credentials && this.credentials.userId) {\n return this.credentials.userId.split(\":\")[0].substring(1);\n }\n return null;\n};\n\n/**\n * Get the device ID of this client\n * @return {?string} device ID\n */\nMatrixClient.prototype.getDeviceId = function () {\n return this.deviceId;\n};\n\n/**\n * Check if the runtime environment supports VoIP calling.\n * @return {boolean} True if VoIP is supported.\n */\nMatrixClient.prototype.supportsVoip = function () {\n return this._supportsVoip;\n};\n\n/**\n * Set whether VoIP calls are forced to use only TURN\n * candidates. This is the same as the forceTURN option\n * when creating the client.\n * @param {bool} forceTURN True to force use of TURN servers\n */\nMatrixClient.prototype.setForceTURN = function (forceTURN) {\n this._forceTURN = forceTURN;\n};\n\n/**\n * Get the current sync state.\n * @return {?string} the sync state, which may be null.\n * @see module:client~MatrixClient#event:\"sync\"\n */\nMatrixClient.prototype.getSyncState = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncState();\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nMatrixClient.prototype.getSyncStateData = function () {\n if (!this._syncApi) {\n return null;\n }\n return this._syncApi.getSyncStateData();\n};\n\n/**\n * Return whether the client is configured for a guest account.\n * @return {boolean} True if this is a guest access_token (or no token is supplied).\n */\nMatrixClient.prototype.isGuest = function () {\n return this._isGuest;\n};\n\n/**\n * Return the provided scheduler, if any.\n * @return {?module:scheduler~MatrixScheduler} The scheduler or null\n */\nMatrixClient.prototype.getScheduler = function () {\n return this.scheduler;\n};\n\n/**\n * Set whether this client is a guest account. <b>This method is experimental\n * and may change without warning.</b>\n * @param {boolean} isGuest True if this is a guest account.\n */\nMatrixClient.prototype.setGuest = function (isGuest) {\n // EXPERIMENTAL:\n // If the token is a macaroon, it should be encoded in it that it is a 'guest'\n // access token, which means that the SDK can determine this entirely without\n // the dev manually flipping this flag.\n this._isGuest = isGuest;\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user <b>explicitly</b> attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nMatrixClient.prototype.retryImmediately = function () {\n return this._syncApi.retryImmediately();\n};\n\n/**\n * Return the global notification EventTimelineSet, if any\n *\n * @return {EventTimelineSet} the globl notification EventTimelineSet\n */\nMatrixClient.prototype.getNotifTimelineSet = function () {\n return this._notifTimelineSet;\n};\n\n/**\n * Set the global notification EventTimelineSet\n *\n * @param {EventTimelineSet} notifTimelineSet\n */\nMatrixClient.prototype.setNotifTimelineSet = function (notifTimelineSet) {\n this._notifTimelineSet = notifTimelineSet;\n};\n\n// Crypto bits\n// ===========\n\n/**\n * Initialise support for end-to-end encryption in this client\n *\n * You should call this method after creating the matrixclient, but *before*\n * calling `startClient`, if you want to support end-to-end encryption.\n *\n * It will return a Promise which will resolve when the crypto layer has been\n * successfully initialised.\n */\nMatrixClient.prototype.initCrypto = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var userId, crypto;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this._crypto) {\n _context.next = 3;\n break;\n }\n\n console.warn(\"Attempt to re-initialise e2e encryption on MatrixClient\");\n return _context.abrupt(\"return\");\n\n case 3:\n if (this._sessionStore) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no sessionStore provided\");\n\n case 5:\n if (this._cryptoStore) {\n _context.next = 7;\n break;\n }\n\n throw new Error(\"Cannot enable encryption: no cryptoStore provided\");\n\n case 7:\n _context.next = 9;\n return (0, _bluebird.resolve)(this._roomList.init());\n\n case 9:\n if (CRYPTO_ENABLED) {\n _context.next = 11;\n break;\n }\n\n throw new Error(\"End-to-end encryption not supported in this js-sdk build: did \" + \"you remember to load the olm library?\");\n\n case 11:\n userId = this.getUserId();\n\n if (!(userId === null)) {\n _context.next = 14;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown userId: \" + \"ensure userId is passed in createClient().\");\n\n case 14:\n if (!(this.deviceId === null)) {\n _context.next = 16;\n break;\n }\n\n throw new Error(\"Cannot enable encryption on MatrixClient with unknown deviceId: \" + \"ensure deviceId is passed in createClient().\");\n\n case 16:\n crypto = new Crypto(this, this._sessionStore, userId, this.deviceId, this.store, this._cryptoStore, this._roomList);\n\n\n this.reEmitter.reEmit(crypto, [\"crypto.roomKeyRequest\", \"crypto.roomKeyRequestCancellation\", \"crypto.warning\"]);\n\n _context.next = 20;\n return (0, _bluebird.resolve)(crypto.init());\n\n case 20:\n\n // if crypto initialisation was successful, tell it to attach its event\n // handlers.\n crypto.registerEventHandlers(this);\n this._crypto = crypto;\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n * Is end-to-end crypto enabled for this client.\n * @return {boolean} True if end-to-end is enabled.\n */\nMatrixClient.prototype.isCryptoEnabled = function () {\n return this._crypto !== null;\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {?string} base64-encoded ed25519 key. Null if crypto is\n * disabled.\n */\nMatrixClient.prototype.getDeviceEd25519Key = function () {\n if (!this._crypto) {\n return null;\n }\n return this._crypto.getDeviceEd25519Key();\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nMatrixClient.prototype.uploadKeys = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n\n return this._crypto.uploadDeviceKeys();\n};\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto~DeviceInfo|DeviceInfo}.\n */\nMatrixClient.prototype.downloadKeys = function (userIds, forceDownload) {\n if (this._crypto === null) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {Promise<module:crypto-deviceinfo[]>} list of devices\n */\nMatrixClient.prototype.getStoredDevicesForUser = function () {\n var _ref2 = (0, _bluebird.method)(function (userId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevicesForUser(userId) || [];\n });\n\n return function (_x) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Get the stored device key for a user id and device id\n *\n * @param {string} userId the user to list keys for.\n * @param {string} deviceId unique identifier for the device\n *\n * @return {Promise<?module:crypto-deviceinfo>} device or null\n */\nMatrixClient.prototype.getStoredDevice = function () {\n var _ref3 = (0, _bluebird.method)(function (userId, deviceId) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getStoredDevice(userId, deviceId) || null;\n });\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Mark the given device as verified\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} verified whether to mark the device as verified. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceVerified = function (userId, deviceId, verified) {\n if (verified === undefined) {\n verified = true;\n }\n return _setDeviceVerification(this, userId, deviceId, verified, null);\n};\n\n/**\n * Mark the given device as blocked/unblocked\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} blocked whether to mark the device as blocked. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceBlocked = function (userId, deviceId, blocked) {\n if (blocked === undefined) {\n blocked = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, blocked);\n};\n\n/**\n * Mark the given device as known/unknown\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {boolean=} known whether to mark the device as known. defaults\n * to 'true'.\n *\n * @returns {Promise}\n *\n * @fires module:client~event:MatrixClient\"deviceVerificationChanged\"\n */\nMatrixClient.prototype.setDeviceKnown = function (userId, deviceId, known) {\n if (known === undefined) {\n known = true;\n }\n return _setDeviceVerification(this, userId, deviceId, null, null, known);\n};\n\nMatrixClient.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n this._crypto.setGlobalBlacklistUnverifiedDevices(value);\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nMatrixClient.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n if (this._crypto === null) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.getGlobalBlacklistUnverifiedDevices();\n};\n\n/**\n * Get e2e information on the device that sent an event\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {Promise<module:crypto/deviceinfo?>}\n */\nMatrixClient.prototype.getEventSenderDeviceInfo = function () {\n var _ref5 = (0, _bluebird.method)(function (event) {\n if (!this._crypto) {\n return null;\n }\n\n return this._crypto.getEventSenderDeviceInfo(event);\n });\n\n return function (_x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Check if the sender of an event is verified\n *\n * @param {MatrixEvent} event event to be checked\n *\n * @return {boolean} true if the sender of this event has been verified using\n * {@link module:client~MatrixClient#setDeviceVerified|setDeviceVerified}.\n */\nMatrixClient.prototype.isEventSenderVerified = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(event) {\n var device;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this.getEventSenderDeviceInfo(event));\n\n case 2:\n device = _context3.sent;\n\n if (device) {\n _context3.next = 5;\n break;\n }\n\n return _context3.abrupt(\"return\", false);\n\n case 5:\n return _context3.abrupt(\"return\", device.isVerified());\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x11) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Cancel a room key request for this event if one is ongoing and resend the\n * request.\n * @param {MatrixEvent} event event of which to cancel and resend the room\n * key request.\n */\nMatrixClient.prototype.cancelAndResendEventRoomKeyRequest = function (event) {\n event.cancelAndResendKeyRequest(this._crypto);\n};\n\n/**\n * Enable end-to-end encryption for a room.\n * @param {string} roomId The room ID to enable encryption in.\n * @param {object} config The encryption config for the room.\n * @return {Promise} A promise that will resolve when encryption is set up.\n */\nMatrixClient.prototype.setRoomEncryption = function (roomId, config) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n return this._crypto.setRoomEncryption(roomId, config);\n};\n\n/**\n * Whether encryption is enabled for a room.\n * @param {string} roomId the room id to query.\n * @return {bool} whether encryption is enabled.\n */\nMatrixClient.prototype.isRoomEncrypted = function (roomId) {\n var room = this.getRoom(roomId);\n if (!room) {\n // we don't know about this room, so can't determine if it should be\n // encrypted. Let's assume not.\n return false;\n }\n\n // if there is an 'm.room.encryption' event in this room, it should be\n // encrypted (independently of whether we actually support encryption)\n var ev = room.currentState.getStateEvents(\"m.room.encryption\", \"\");\n if (ev) {\n return true;\n }\n\n // we don't have an m.room.encrypted event, but that might be because\n // the server is hiding it from us. Check the store to see if it was\n // previously encrypted.\n return this._roomList.isRoomEncrypted(roomId);\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nMatrixClient.prototype.forceDiscardSession = function (roomId) {\n if (!this._crypto) {\n throw new Error(\"End-to-End encryption disabled\");\n }\n this._crypto.forceDiscardSession(roomId);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * This should be encrypted before returning it to the user.\n *\n * @return {module:client.Promise} a promise which resolves to a list of\n * session export objects\n */\nMatrixClient.prototype.exportRoomKeys = function () {\n if (!this._crypto) {\n return _bluebird2.default.reject(new Error(\"End-to-end encryption disabled\"));\n }\n return this._crypto.exportRoomKeys();\n};\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n *\n * @return {module:client.Promise} a promise which resolves when the keys\n * have been imported\n */\nMatrixClient.prototype.importRoomKeys = function (keys) {\n if (!this._crypto) {\n throw new Error(\"End-to-end encryption disabled\");\n }\n return this._crypto.importRoomKeys(keys);\n};\n\n// Group ops\n// =========\n// Operations on groups that come down the sync stream (ie. ones the\n// user is a member of or invited to)\n\n/**\n * Get the group for the given group ID.\n * This function will return a valid group for any group for which a Group event\n * has been emitted.\n * @param {string} groupId The group ID\n * @return {Group} The Group or null if the group is not known or there is no data store.\n */\nMatrixClient.prototype.getGroup = function (groupId) {\n return this.store.getGroup(groupId);\n};\n\n/**\n * Retrieve all known groups.\n * @return {Group[]} A list of groups, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getGroups = function () {\n return this.store.getGroups();\n};\n\n/**\n * Get the config for the media repository.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves with an object containing the config.\n */\nMatrixClient.prototype.getMediaConfig = function (callback) {\n return this._http.requestWithPrefix(callback, \"GET\", \"/config\", undefined, undefined, httpApi.PREFIX_MEDIA_R0);\n};\n\n// Room ops\n// ========\n\n/**\n * Get the room for the given room ID.\n * This function will return a valid room for any room for which a Room event\n * has been emitted. Note in particular that other events, eg. RoomState.members\n * will be emitted for a room before this function will return the given room.\n * @param {string} roomId The room ID\n * @return {Room} The Room or null if it doesn't exist or there is no data store.\n */\nMatrixClient.prototype.getRoom = function (roomId) {\n return this.store.getRoom(roomId);\n};\n\n/**\n * Retrieve all known rooms.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getRooms = function () {\n return this.store.getRooms();\n};\n\n/**\n * Retrieve all rooms that should be displayed to the user\n * This is essentially getRooms() with some rooms filtered out, eg. old versions\n * of rooms that have been replaced or (in future) other rooms that have been\n * marked at the protocol level as not to be displayed to the user.\n * @return {Room[]} A list of rooms, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getVisibleRooms = function () {\n var allRooms = this.store.getRooms();\n\n var replacedRooms = new _set2.default();\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(allRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var r = _step.value;\n\n var createEvent = r.currentState.getStateEvents('m.room.create', '');\n // invites are included in this list and we don't know their create events yet\n if (createEvent) {\n var predecessor = createEvent.getContent()['predecessor'];\n if (predecessor && predecessor['room_id']) {\n replacedRooms.add(predecessor['room_id']);\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return allRooms.filter(function (r) {\n var tombstone = r.currentState.getStateEvents('m.room.tombstone', '');\n if (tombstone && replacedRooms.has(r.roomId)) {\n return false;\n }\n return true;\n });\n};\n\n/**\n * Retrieve a user.\n * @param {string} userId The user ID to retrieve.\n * @return {?User} A user or null if there is no data store or the user does\n * not exist.\n */\nMatrixClient.prototype.getUser = function (userId) {\n return this.store.getUser(userId);\n};\n\n/**\n * Retrieve all known users.\n * @return {User[]} A list of users, or an empty list if there is no data store.\n */\nMatrixClient.prototype.getUsers = function () {\n return this.store.getUsers();\n};\n\n// User Account Data operations\n// ============================\n\n/**\n * Set account data event for the current user.\n * @param {string} eventType The event type\n * @param {Object} contents the contents object for the event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAccountData = function (eventType, contents, callback) {\n var path = utils.encodeUri(\"/user/$userId/account_data/$type\", {\n $userId: this.credentials.userId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, contents);\n};\n\n/**\n * Get account data event of given type for the current user.\n * @param {string} eventType The event type\n * @return {?object} The contents of the given account data event\n */\nMatrixClient.prototype.getAccountData = function (eventType) {\n return this.store.getAccountData(eventType);\n};\n\n/**\n * Gets the users that are ignored by this client\n * @returns {string[]} The array of users that are ignored (empty if none)\n */\nMatrixClient.prototype.getIgnoredUsers = function () {\n var event = this.getAccountData(\"m.ignored_user_list\");\n if (!event || !event.getContent() || !event.getContent()[\"ignored_users\"]) return [];\n return (0, _keys2.default)(event.getContent()[\"ignored_users\"]);\n};\n\n/**\n * Sets the users that the current user should ignore.\n * @param {string[]} userIds the user IDs to ignore\n * @param {module:client.callback} [callback] Optional.\n * @return {module:client.Promise} Resolves: Account data event\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setIgnoredUsers = function (userIds, callback) {\n var content = { ignored_users: {} };\n userIds.map(function (u) {\n return content.ignored_users[u] = {};\n });\n return this.setAccountData(\"m.ignored_user_list\", content, callback);\n};\n\n/**\n * Gets whether or not a specific user is being ignored by this client.\n * @param {string} userId the user ID to check\n * @returns {boolean} true if the user is ignored, false otherwise\n */\nMatrixClient.prototype.isUserIgnored = function (userId) {\n return this.getIgnoredUsers().indexOf(userId) !== -1;\n};\n\n// Room operations\n// ===============\n\n/**\n * Join a room. If you have already joined the room, this will no-op.\n * @param {string} roomIdOrAlias The room ID or room alias to join.\n * @param {Object} opts Options when joining the room.\n * @param {boolean} opts.syncRoom True to do a room initial sync on the resulting\n * room. If false, the <strong>returned Room object will have no current state.\n * </strong> Default: true.\n * @param {boolean} opts.inviteSignUrl If the caller has a keypair 3pid invite,\n * the signing URL is passed in this parameter.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.joinRoom = function (roomIdOrAlias, opts, callback) {\n // to help people when upgrading..\n if (utils.isFunction(opts)) {\n throw new Error(\"Expected 'opts' object, got function.\");\n }\n opts = opts || {};\n if (opts.syncRoom === undefined) {\n opts.syncRoom = true;\n }\n\n var room = this.getRoom(roomIdOrAlias);\n if (room && room.hasMembershipState(this.credentials.userId, \"join\")) {\n return _bluebird2.default.resolve(room);\n }\n\n var sign_promise = _bluebird2.default.resolve();\n\n if (opts.inviteSignUrl) {\n sign_promise = this._http.requestOtherUrl(undefined, 'POST', opts.inviteSignUrl, { mxid: this.credentials.userId });\n }\n\n var defer = _bluebird2.default.defer();\n\n var self = this;\n sign_promise.then(function (signed_invite_object) {\n var data = {};\n if (signed_invite_object) {\n data.third_party_signed = signed_invite_object;\n }\n\n var path = utils.encodeUri(\"/join/$roomid\", { $roomid: roomIdOrAlias });\n return self._http.authedRequest(undefined, \"POST\", path, undefined, data);\n }).then(function (res) {\n var roomId = res.room_id;\n var syncApi = new SyncApi(self, self._clientOpts);\n var room = syncApi.createRoom(roomId);\n if (opts.syncRoom) {\n // v2 will do this for us\n // return syncApi.syncRoom(room);\n }\n return _bluebird2.default.resolve(room);\n }).done(function (room) {\n _resolve(callback, defer, room);\n }, function (err) {\n _reject(callback, defer, err);\n });\n return defer.promise;\n};\n\n/**\n * Resend an event.\n * @param {MatrixEvent} event The event to resend.\n * @param {Room} room Optional. The room the event is in. Will update the\n * timeline entry if provided.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.resendEvent = function (event, room) {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n return _sendEvent(this, room, event);\n};\n\n/**\n * Cancel a queued or unsent event.\n *\n * @param {MatrixEvent} event Event to cancel\n * @throws Error if the event is not in QUEUED or NOT_SENT state\n */\nMatrixClient.prototype.cancelPendingEvent = function (event) {\n if ([EventStatus.QUEUED, EventStatus.NOT_SENT].indexOf(event.status) < 0) {\n throw new Error(\"cannot cancel an event with status \" + event.status);\n }\n\n // first tell the scheduler to forget about it, if it's queued\n if (this.scheduler) {\n this.scheduler.removeEventFromQueue(event);\n }\n\n // then tell the room about the change of state, which will remove it\n // from the room's list of pending events.\n var room = this.getRoom(event.getRoomId());\n _updatePendingEventStatus(room, event, EventStatus.CANCELLED);\n};\n\n/**\n * @param {string} roomId\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomName = function (roomId, name, callback) {\n return this.sendStateEvent(roomId, \"m.room.name\", { name: name }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} topic\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTopic = function (roomId, topic, callback) {\n return this.sendStateEvent(roomId, \"m.room.topic\", { topic: topic }, undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getRoomTags = function (roomId, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/\", {\n $userId: this.credentials.userId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be set\n * @param {object} metadata associated with that tag to be stored\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomTag = function (roomId, tagName, metadata, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, metadata);\n};\n\n/**\n * @param {string} roomId\n * @param {string} tagName name of room tag to be removed\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.deleteRoomTag = function (roomId, tagName, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/tags/$tag\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $tag: tagName\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType event type to be set\n * @param {object} content event content\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomAccountData = function (roomId, eventType, content, callback) {\n var path = utils.encodeUri(\"/user/$userId/rooms/$roomId/account_data/$type\", {\n $userId: this.credentials.userId,\n $roomId: roomId,\n $type: eventType\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * Set a user's power level.\n * @param {string} roomId\n * @param {string} userId\n * @param {Number} powerLevel\n * @param {MatrixEvent} event\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setPowerLevel = function (roomId, userId, powerLevel, event, callback) {\n var content = {\n users: {}\n };\n if (event && event.getType() === \"m.room.power_levels\") {\n // take a copy of the content to ensure we don't corrupt\n // existing client state with a failed power level change\n content = utils.deepCopy(event.getContent());\n }\n content.users[userId] = powerLevel;\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.power_levels\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEvent = function (roomId, eventType, content, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n\n if (!txnId) {\n txnId = this.makeTxnId();\n }\n\n console.log(\"sendEvent of type \" + eventType + \" in \" + roomId + \" with txnId \" + txnId);\n\n // we always construct a MatrixEvent when sending because the store and\n // scheduler use them. We'll extract the params back out if it turns out\n // the client has no scheduler or store.\n var room = this.getRoom(roomId);\n var localEvent = new MatrixEvent({\n event_id: \"~\" + roomId + \":\" + txnId,\n user_id: this.credentials.userId,\n room_id: roomId,\n type: eventType,\n origin_server_ts: new Date().getTime(),\n content: content\n });\n localEvent._txnId = txnId;\n localEvent.status = EventStatus.SENDING;\n\n // add this event immediately to the local store as 'sending'.\n if (room) {\n room.addPendingEvent(localEvent, txnId);\n }\n\n return _sendEvent(this, room, localEvent, callback);\n};\n\n// encrypts the event if necessary\n// adds the event to the queue, or sends it\n// marks the event as sent/unsent\n// returns a promise which resolves with the result of the send request\nfunction _sendEvent(client, room, event, callback) {\n // Add an extra Promise.resolve() to turn synchronous exceptions into promise rejections,\n // so that we can handle synchronous and asynchronous exceptions with the\n // same code path.\n return _bluebird2.default.resolve().then(function () {\n var encryptionPromise = _encryptEventIfNeeded(client, event, room);\n\n if (!encryptionPromise) {\n return null;\n }\n\n _updatePendingEventStatus(room, event, EventStatus.ENCRYPTING);\n return encryptionPromise.then(function () {\n _updatePendingEventStatus(room, event, EventStatus.SENDING);\n });\n }).then(function () {\n var promise = void 0;\n // this event may be queued\n if (client.scheduler) {\n // if this returns a promsie then the scheduler has control now and will\n // resolve/reject when it is done. Internally, the scheduler will invoke\n // processFn which is set to this._sendEventHttpRequest so the same code\n // path is executed regardless.\n promise = client.scheduler.queueEvent(event);\n if (promise && client.scheduler.getQueueForEvent(event).length > 1) {\n // event is processed FIFO so if the length is 2 or more we know\n // this event is stuck behind an earlier event.\n _updatePendingEventStatus(room, event, EventStatus.QUEUED);\n }\n }\n\n if (!promise) {\n promise = _sendEventHttpRequest(client, event);\n }\n return promise;\n }).then(function (res) {\n // the request was sent OK\n if (room) {\n room.updatePendingEvent(event, EventStatus.SENT, res.event_id);\n }\n if (callback) {\n callback(null, res);\n }\n return res;\n }, function (err) {\n // the request failed to send.\n console.error(\"Error sending event\", err.stack || err);\n\n try {\n // set the error on the event before we update the status:\n // updating the status emits the event, so the state should be\n // consistent at that point.\n event.error = err;\n _updatePendingEventStatus(room, event, EventStatus.NOT_SENT);\n // also put the event object on the error: the caller will need this\n // to resend or cancel the event\n err.event = event;\n\n if (callback) {\n callback(err);\n }\n } catch (err2) {\n console.error(\"Exception in error handler!\", err2.stack || err);\n }\n throw err;\n });\n}\n\n/**\n * Encrypt an event according to the configuration of the room, if necessary.\n *\n * @param {MatrixClient} client\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room?} room destination room. Null if the destination\n * is not a room we have seen over the sync pipe.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n\nfunction _encryptEventIfNeeded(client, event, room) {\n if (event.isEncrypted()) {\n // this event has already been encrypted; this happens if the\n // encryption step succeeded, but the send step failed on the first\n // attempt.\n return null;\n }\n\n if (!client.isRoomEncrypted(event.getRoomId())) {\n // looks like this room isn't encrypted.\n return null;\n }\n\n if (!client._crypto) {\n throw new Error(\"This room is configured to use encryption, but your client does \" + \"not support encryption.\");\n }\n\n return client._crypto.encryptEvent(event, room);\n}\n\nfunction _updatePendingEventStatus(room, event, newStatus) {\n if (room) {\n room.updatePendingEvent(event, newStatus);\n } else {\n event.status = newStatus;\n }\n}\n\nfunction _sendEventHttpRequest(client, event) {\n var txnId = event._txnId ? event._txnId : client.makeTxnId();\n\n var pathParams = {\n $roomId: event.getRoomId(),\n $eventType: event.getWireType(),\n $stateKey: event.getStateKey(),\n $txnId: txnId\n };\n\n var path = void 0;\n\n if (event.isState()) {\n var pathTemplate = \"/rooms/$roomId/state/$eventType\";\n if (event.getStateKey() && event.getStateKey().length > 0) {\n pathTemplate = \"/rooms/$roomId/state/$eventType/$stateKey\";\n }\n path = utils.encodeUri(pathTemplate, pathParams);\n } else {\n path = utils.encodeUri(\"/rooms/$roomId/send/$eventType/$txnId\", pathParams);\n }\n\n return client._http.authedRequest(undefined, \"PUT\", path, undefined, event.getWireContent()).then(function (res) {\n console.log(\"Event sent to \" + event.getRoomId() + \" with event id \" + res.event_id);\n return res;\n });\n}\n\n/**\n * @param {string} roomId\n * @param {Object} content\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendMessage = function (roomId, content, txnId, callback) {\n if (utils.isFunction(txnId)) {\n callback = txnId;txnId = undefined;\n }\n return this.sendEvent(roomId, \"m.room.message\", content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTextMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeTextMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendNotice = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeNotice(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} txnId Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendEmoteMessage = function (roomId, body, txnId, callback) {\n var content = ContentHelpers.makeEmoteMessage(body);\n return this.sendMessage(roomId, content, txnId, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendImageMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Image\";\n }\n var content = {\n msgtype: \"m.image\",\n url: url,\n info: info,\n body: text\n };\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} url\n * @param {Object} info\n * @param {string} text\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendStickerMessage = function (roomId, url, info, text, callback) {\n if (utils.isFunction(text)) {\n callback = text;text = undefined;\n }\n if (!text) {\n text = \"Sticker\";\n }\n var content = {\n url: url,\n info: info,\n body: text\n };\n return this.sendEvent(roomId, \"m.sticker\", content, callback, undefined);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlMessage = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlMessage(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlNotice = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlNotice(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} body\n * @param {string} htmlBody\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendHtmlEmote = function (roomId, body, htmlBody, callback) {\n var content = ContentHelpers.makeHtmlEmote(body, htmlBody);\n return this.sendMessage(roomId, content, callback);\n};\n\n/**\n * Send a receipt.\n * @param {Event} event The event being acknowledged\n * @param {string} receiptType The kind of receipt e.g. \"m.read\"\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReceipt = function (event, receiptType, callback) {\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send receipts so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/receipt/$receiptType/$eventId\", {\n $roomId: event.getRoomId(),\n $receiptType: receiptType,\n $eventId: event.getId()\n });\n var promise = this._http.authedRequest(callback, \"POST\", path, undefined, {});\n\n var room = this.getRoom(event.getRoomId());\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, event, receiptType);\n }\n return promise;\n};\n\n/**\n * Send a read receipt.\n * @param {Event} event The event that has been read.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendReadReceipt = function (event, callback) {\n return this.sendReceipt(event, \"m.read\", callback);\n};\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} eventId ID of the event that has been read\n * @param {string} rrEvent the event tracked by the read receipt. This is here for\n * convenience because the RR and the RM are commonly updated at the same time as each\n * other. The local echo of this receipt will be done if set. Optional.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixClient.prototype.setRoomReadMarkers = function (roomId, eventId, rrEvent) {\n var rmEventId = eventId;\n var rrEventId = void 0;\n\n // Add the optional RR update, do local echo like `sendReceipt`\n if (rrEvent) {\n rrEventId = rrEvent.getId();\n var room = this.getRoom(roomId);\n if (room) {\n room._addLocalEchoReceipt(this.credentials.userId, rrEvent, \"m.read\");\n }\n }\n\n return this.setRoomReadMarkersHttpRequest(roomId, rmEventId, rrEventId);\n};\n\n/**\n * Get a preview of the given URL as of (roughly) the given point in time,\n * described as an object with OpenGraph keys and associated values.\n * Attributes may be synthesized where actual OG metadata is lacking.\n * Caches results to prevent hammering the server.\n * @param {string} url The URL to get preview data for\n * @param {Number} ts The preferred point in time that the preview should\n * describe (ms since epoch). The preview returned will either be the most\n * recent one preceding this timestamp if available, or failing that the next\n * most recent available preview.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object of OG metadata.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * May return synthesized attributes if the URL lacked OG meta.\n */\nMatrixClient.prototype.getUrlPreview = function (url, ts, callback) {\n var key = ts + \"_\" + url;\n var og = this.urlPreviewCache[key];\n if (og) {\n return _bluebird2.default.resolve(og);\n }\n\n var self = this;\n return this._http.authedRequestWithPrefix(callback, \"GET\", \"/preview_url\", {\n url: url,\n ts: ts\n }, undefined, httpApi.PREFIX_MEDIA_R0).then(function (response) {\n // TODO: expire cache occasionally\n self.urlPreviewCache[key] = response;\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} isTyping\n * @param {Number} timeoutMs\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.sendTyping = function (roomId, isTyping, timeoutMs, callback) {\n if (this.isGuest()) {\n return _bluebird2.default.resolve({}); // guests cannot send typing notifications so don't bother.\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/typing/$userId\", {\n $roomId: roomId,\n $userId: this.credentials.userId\n });\n var data = {\n typing: isTyping\n };\n if (isTyping) {\n data.timeout = timeoutMs ? timeoutMs : 20000;\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.invite = function (roomId, userId, callback) {\n return _membershipChange(this, roomId, userId, \"invite\", undefined, callback);\n};\n\n/**\n * Invite a user to a room based on their email address.\n * @param {string} roomId The room to invite the user to.\n * @param {string} email The email address to invite.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByEmail = function (roomId, email, callback) {\n return this.inviteByThreePid(roomId, \"email\", email, callback);\n};\n\n/**\n * Invite a user to a room based on a third-party identifier.\n * @param {string} roomId The room to invite the user to.\n * @param {string} medium The medium to invite the user e.g. \"email\".\n * @param {string} address The address for the specified medium.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.inviteByThreePid = function (roomId, medium, address, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/invite\", { $roomId: roomId });\n\n var identityServerUrl = this.getIdentityServerUrl(true);\n if (!identityServerUrl) {\n return _bluebird2.default.reject(new MatrixError({\n error: \"No supplied identity server URL\",\n errcode: \"ORG.MATRIX.JSSDK_MISSING_PARAM\"\n }));\n }\n\n return this._http.authedRequest(callback, \"POST\", path, undefined, {\n id_server: identityServerUrl,\n medium: medium,\n address: address\n });\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.leave = function (roomId, callback) {\n return _membershipChange(this, roomId, undefined, \"leave\", undefined, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.ban = function (roomId, userId, reason, callback) {\n return _membershipChange(this, roomId, userId, \"ban\", reason, callback);\n};\n\n/**\n * @param {string} roomId\n * @param {boolean} deleteRoom True to delete the room from the store on success.\n * Default: true.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.forget = function (roomId, deleteRoom, callback) {\n if (deleteRoom === undefined) {\n deleteRoom = true;\n }\n var promise = _membershipChange(this, roomId, undefined, \"forget\", undefined, callback);\n if (!deleteRoom) {\n return promise;\n }\n var self = this;\n return promise.then(function (response) {\n self.store.removeRoom(roomId);\n self.emit(\"deleteRoom\", roomId);\n return response;\n });\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object (currently empty)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.unban = function (roomId, userId, callback) {\n // unbanning != set their state to leave: this used to be\n // the case, but was then changed so that leaving was always\n // a revoking of priviledge, otherwise two people racing to\n // kick / ban someone could end up banning and then un-banning\n // them.\n var path = utils.encodeUri(\"/rooms/$roomId/unban\", {\n $roomId: roomId\n });\n var data = {\n user_id: userId\n };\n return this._http.authedRequest(callback, \"POST\", path, undefined, data);\n};\n\n/**\n * @param {string} roomId\n * @param {string} userId\n * @param {string} reason Optional.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.kick = function (roomId, userId, reason, callback) {\n return _setMembershipState(this, roomId, userId, \"leave\", reason, callback);\n};\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membershipValue\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _setMembershipState(client, roomId, userId, membershipValue, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/state/m.room.member/$userId\", { $roomId: roomId, $userId: userId });\n\n return client._http.authedRequest(callback, \"PUT\", path, undefined, {\n membership: membershipValue,\n reason: reason\n });\n}\n\n/**\n * This is an internal method.\n * @param {MatrixClient} client\n * @param {string} roomId\n * @param {string} userId\n * @param {string} membership\n * @param {string} reason\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nfunction _membershipChange(client, roomId, userId, membership, reason, callback) {\n if (utils.isFunction(reason)) {\n callback = reason;reason = undefined;\n }\n\n var path = utils.encodeUri(\"/rooms/$room_id/$membership\", {\n $room_id: roomId,\n $membership: membership\n });\n return client._http.authedRequest(callback, \"POST\", path, undefined, {\n user_id: userId, // may be undefined e.g. on leave\n reason: reason\n });\n}\n\n/**\n * Obtain a dict of actions which should be performed for this event according\n * to the push rules for this user. Caches the dict on the event.\n * @param {MatrixEvent} event The event to get push actions for.\n * @return {module:pushprocessor~PushAction} A dict of actions to perform.\n */\nMatrixClient.prototype.getPushActionsForEvent = function (event) {\n if (!event.getPushActions()) {\n event.setPushActions(this._pushProcessor.actionsForEvent(event));\n }\n return event.getPushActions();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} info The kind of info to set (e.g. 'avatar_url')\n * @param {Object} data The JSON object to set.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setProfileInfo = function (info, data, callback) {\n var path = utils.encodeUri(\"/profile/$userId/$info\", {\n $userId: this.credentials.userId,\n $info: info\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * @param {string} name\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setDisplayName = function (name, callback) {\n return this.setProfileInfo(\"displayname\", { displayname: name }, callback);\n};\n\n/**\n * @param {string} url\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setAvatarUrl = function (url, callback) {\n return this.setProfileInfo(\"avatar_url\", { avatar_url: url }, callback);\n};\n\n/**\n * Turn an MXC URL into an HTTP one. <strong>This method is experimental and\n * may change.</strong>\n * @param {string} mxcUrl The MXC URL\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {Boolean} allowDirectLinks If true, return any non-mxc URLs\n * directly. Fetching such URLs will leak information about the user to\n * anyone they share a room with. If false, will return null for such URLs.\n * @return {?string} the avatar URL or null.\n */\nMatrixClient.prototype.mxcUrlToHttp = function (mxcUrl, width, height, resizeMethod, allowDirectLinks) {\n return contentRepo.getHttpUriForMxc(this.baseUrl, mxcUrl, width, height, resizeMethod, allowDirectLinks);\n};\n\n/**\n * @param {Object} opts Options to apply\n * @param {string} opts.presence One of \"online\", \"offline\" or \"unavailable\"\n * @param {string} opts.status_msg The status message to attach.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws If 'presence' isn't a valid presence enum value.\n */\nMatrixClient.prototype.setPresence = function (opts, callback) {\n var path = utils.encodeUri(\"/presence/$userId/status\", {\n $userId: this.credentials.userId\n });\n\n if (typeof opts === \"string\") {\n opts = { presence: opts };\n }\n\n var validStates = [\"offline\", \"online\", \"unavailable\"];\n if (validStates.indexOf(opts.presence) == -1) {\n throw new Error(\"Bad presence value: \" + opts.presence);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, opts);\n};\n\nfunction _presenceList(callback, client, opts, method) {\n var path = utils.encodeUri(\"/presence/list/$userId\", {\n $userId: client.credentials.userId\n });\n return client._http.authedRequest(callback, method, path, undefined, opts);\n}\n\n/**\n* Retrieve current user presence list.\n* @param {module:client.callback} callback Optional.\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.getPresenceList = function (callback) {\n return _presenceList(callback, this, undefined, \"GET\");\n};\n\n/**\n* Add users to the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n*/\nMatrixClient.prototype.inviteToPresenceList = function (callback, userIds) {\n var opts = { \"invite\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n* Drop users from the current user presence list.\n* @param {module:client.callback} callback Optional.\n* @param {string[]} userIds\n* @return {module:client.Promise} Resolves: TODO\n* @return {module:http-api.MatrixError} Rejects: with an error response.\n**/\nMatrixClient.prototype.dropFromPresenceList = function (callback, userIds) {\n var opts = { \"drop\": userIds };\n return _presenceList(callback, this, opts, \"POST\");\n};\n\n/**\n * Retrieve older messages from the given room and put them in the timeline.\n *\n * If this is called multiple times whilst a request is ongoing, the <i>same</i>\n * Promise will be returned. If there was a problem requesting scrollback, there\n * will be a small delay before another request can be made (to prevent tight-looping\n * when there is no connection).\n *\n * @param {Room} room The room to get older messages in.\n * @param {Integer} limit Optional. The maximum number of previous events to\n * pull in. Default: 30.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Room. If you are at the beginning\n * of the timeline, <code>Room.oldState.paginationToken</code> will be\n * <code>null</code>.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.scrollback = function (room, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n limit = limit || 30;\n var timeToWaitMs = 0;\n\n var info = this._ongoingScrollbacks[room.roomId] || {};\n if (info.promise) {\n return info.promise;\n } else if (info.errorTs) {\n var timeWaitedMs = Date.now() - info.errorTs;\n timeToWaitMs = Math.max(SCROLLBACK_DELAY_MS - timeWaitedMs, 0);\n }\n\n if (room.oldState.paginationToken === null) {\n return _bluebird2.default.resolve(room); // already at the start.\n }\n // attempt to grab more events from the store first\n var numAdded = this.store.scrollback(room, limit).length;\n if (numAdded === limit) {\n // store contained everything we needed.\n return _bluebird2.default.resolve(room);\n }\n // reduce the required number of events appropriately\n limit = limit - numAdded;\n\n var defer = _bluebird2.default.defer();\n info = {\n promise: defer.promise,\n errorTs: null\n };\n var self = this;\n // wait for a time before doing this request\n // (which may be 0 in order not to special case the code paths)\n _bluebird2.default.delay(timeToWaitMs).then(function () {\n return self._createMessagesRequest(room.roomId, room.oldState.paginationToken, limit, 'b');\n }).done(function (res) {\n var matrixEvents = utils.map(res.chunk, _PojoToMatrixEventMapper(self));\n if (res.state) {\n var stateEvents = utils.map(res.state, _PojoToMatrixEventMapper(self));\n room.currentState.setUnknownStateEvents(stateEvents);\n }\n room.addEventsToTimeline(matrixEvents, true, room.getLiveTimeline());\n room.oldState.paginationToken = res.end;\n if (res.chunk.length === 0) {\n room.oldState.paginationToken = null;\n }\n self.store.storeEvents(room, matrixEvents, res.end, true);\n self._ongoingScrollbacks[room.roomId] = null;\n _resolve(callback, defer, room);\n }, function (err) {\n self._ongoingScrollbacks[room.roomId] = {\n errorTs: Date.now()\n };\n _reject(callback, defer, err);\n });\n this._ongoingScrollbacks[room.roomId] = info;\n return defer.promise;\n};\n\n/**\n * Get an EventTimeline for the given event\n *\n * <p>If the EventTimelineSet object already has the given event in its store, the\n * corresponding timeline will be returned. Otherwise, a /context request is\n * made, and used to construct an EventTimeline.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to look for the event in\n * @param {string} eventId The ID of the event to look for\n *\n * @return {module:client.Promise} Resolves:\n * {@link module:models/event-timeline~EventTimeline} including the given\n * event\n */\nMatrixClient.prototype.getEventTimeline = function (timelineSet, eventId) {\n // don't allow any timeline support unless it's been enabled.\n if (!this.timelineSupport) {\n throw new Error(\"timeline support is disabled. Set the 'timelineSupport'\" + \" parameter to true when creating MatrixClient to enable\" + \" it.\");\n }\n\n if (timelineSet.getTimelineForEvent(eventId)) {\n return _bluebird2.default.resolve(timelineSet.getTimelineForEvent(eventId));\n }\n\n var path = utils.encodeUri(\"/rooms/$roomId/context/$eventId\", {\n $roomId: timelineSet.room.roomId,\n $eventId: eventId\n });\n\n var params = undefined;\n if (this._clientOpts.lazyLoadMembers) {\n params = { filter: (0, _stringify2.default)(Filter.LAZY_LOADING_MESSAGES_FILTER) };\n }\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n var self = this;\n var promise = self._http.authedRequest(undefined, \"GET\", path, params).then(function (res) {\n if (!res.event) {\n throw new Error(\"'event' not in '/context' result - homeserver too old?\");\n }\n\n // by the time the request completes, the event might have ended up in\n // the timeline.\n if (timelineSet.getTimelineForEvent(eventId)) {\n return timelineSet.getTimelineForEvent(eventId);\n }\n\n // we start with the last event, since that's the point at which we\n // have known state.\n // events_after is already backwards; events_before is forwards.\n res.events_after.reverse();\n var events = res.events_after.concat([res.event]).concat(res.events_before);\n var matrixEvents = utils.map(events, self.getEventMapper());\n\n var timeline = timelineSet.getTimelineForEvent(matrixEvents[0].getId());\n if (!timeline) {\n timeline = timelineSet.addTimeline();\n timeline.initialiseState(utils.map(res.state, self.getEventMapper()));\n timeline.getState(EventTimeline.FORWARDS).paginationToken = res.end;\n } else {\n var stateEvents = utils.map(res.state, self.getEventMapper());\n timeline.getState(EventTimeline.BACKWARDS).setUnknownStateEvents(stateEvents);\n }\n timelineSet.addEventsToTimeline(matrixEvents, true, timeline, res.start);\n\n // there is no guarantee that the event ended up in \"timeline\" (we\n // might have switched to a neighbouring timeline) - so check the\n // room's index again. On the other hand, there's no guarantee the\n // event ended up anywhere, if it was later redacted, so we just\n // return the timeline we first thought of.\n var tl = timelineSet.getTimelineForEvent(eventId) || timeline;\n return tl;\n });\n return promise;\n};\n\n/**\n * Makes a request to /messages with the appropriate lazy loading filter set.\n * XXX: if we do get rid of scrollback (as it's not used at the moment),\n * we could inline this method again in paginateEventTimeline as that would\n * then be the only call-site\n * @param {string} roomId\n * @param {string} fromToken\n * @param {number} limit the maximum amount of events the retrieve\n * @param {string} dir 'f' or 'b'\n * @param {Filter} timelineFilter the timeline filter to pass\n * @return {Promise}\n */\nMatrixClient.prototype._createMessagesRequest = function (roomId, fromToken, limit, dir) {\n var timelineFilter = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : undefined;\n\n var path = utils.encodeUri(\"/rooms/$roomId/messages\", { $roomId: roomId });\n if (limit === undefined) {\n limit = 30;\n }\n var params = {\n from: fromToken,\n limit: limit,\n dir: dir\n };\n\n var filter = null;\n if (this._clientOpts.lazyLoadMembers) {\n // create a shallow copy of LAZY_LOADING_MESSAGES_FILTER,\n // so the timelineFilter doesn't get written into it below\n filter = (0, _assign2.default)({}, Filter.LAZY_LOADING_MESSAGES_FILTER);\n }\n if (timelineFilter) {\n // XXX: it's horrific that /messages' filter parameter doesn't match\n // /sync's one - see https://matrix.org/jira/browse/SPEC-451\n filter = filter || {};\n (0, _assign2.default)(filter, timelineFilter.getRoomTimelineFilterComponent());\n }\n if (filter) {\n params.filter = (0, _stringify2.default)(filter);\n }\n return this._http.authedRequest(undefined, \"GET\", path, params);\n};\n\n/**\n * Take an EventTimeline, and back/forward-fill results.\n *\n * @param {module:models/event-timeline~EventTimeline} eventTimeline timeline\n * object to be updated\n * @param {Object} [opts]\n * @param {bool} [opts.backwards = false] true to fill backwards,\n * false to go forwards\n * @param {number} [opts.limit = 30] number of events to request\n *\n * @return {module:client.Promise} Resolves to a boolean: false if there are no\n * events and we reached either end of the timeline; else true.\n */\nMatrixClient.prototype.paginateEventTimeline = function (eventTimeline, opts) {\n var isNotifTimeline = eventTimeline.getTimelineSet() === this._notifTimelineSet;\n\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n opts = opts || {};\n var backwards = opts.backwards || false;\n\n if (isNotifTimeline) {\n if (!backwards) {\n throw new Error(\"paginateNotifTimeline can only paginate backwards\");\n }\n }\n\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n\n var token = eventTimeline.getPaginationToken(dir);\n if (!token) {\n // no token - no results.\n return _bluebird2.default.resolve(false);\n }\n\n var pendingRequest = eventTimeline._paginationRequests[dir];\n\n if (pendingRequest) {\n // already a request in progress - return the existing promise\n return pendingRequest;\n }\n\n var path = void 0,\n params = void 0,\n promise = void 0;\n var self = this;\n\n if (isNotifTimeline) {\n path = \"/notifications\";\n params = {\n limit: 'limit' in opts ? opts.limit : 30,\n only: 'highlight'\n };\n\n if (token && token !== \"end\") {\n params.from = token;\n }\n\n promise = this._http.authedRequestWithPrefix(undefined, \"GET\", path, params, undefined, httpApi.PREFIX_UNSTABLE).then(function (res) {\n var token = res.next_token;\n var matrixEvents = [];\n\n for (var i = 0; i < res.notifications.length; i++) {\n var notification = res.notifications[i];\n var event = self.getEventMapper()(notification.event);\n event.setPushActions(PushProcessor.actionListToActionsObject(notification.actions));\n event.event.room_id = notification.room_id; // XXX: gutwrenching\n matrixEvents[i] = event;\n }\n\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && !res.next_token) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.next_token ? true : false;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n } else {\n var room = this.getRoom(eventTimeline.getRoomId());\n if (!room) {\n throw new Error(\"Unknown room \" + eventTimeline.getRoomId());\n }\n\n promise = this._createMessagesRequest(eventTimeline.getRoomId(), token, opts.limit, dir, eventTimeline.getFilter());\n promise.then(function (res) {\n if (res.state) {\n var roomState = eventTimeline.getState(dir);\n var stateEvents = utils.map(res.state, self.getEventMapper());\n roomState.setUnknownStateEvents(stateEvents);\n }\n var token = res.end;\n var matrixEvents = utils.map(res.chunk, self.getEventMapper());\n eventTimeline.getTimelineSet().addEventsToTimeline(matrixEvents, backwards, eventTimeline, token);\n\n // if we've hit the end of the timeline, we need to stop trying to\n // paginate. We need to keep the 'forwards' token though, to make sure\n // we can recover from gappy syncs.\n if (backwards && res.end == res.start) {\n eventTimeline.setPaginationToken(null, dir);\n }\n return res.end != res.start;\n }).finally(function () {\n eventTimeline._paginationRequests[dir] = null;\n });\n eventTimeline._paginationRequests[dir] = promise;\n }\n\n return promise;\n};\n\n/**\n * Reset the notifTimelineSet entirely, paginating in some historical notifs as\n * a starting point for subsequent pagination.\n */\nMatrixClient.prototype.resetNotifTimelineSet = function () {\n if (!this._notifTimelineSet) {\n return;\n }\n\n // FIXME: This thing is a total hack, and results in duplicate events being\n // added to the timeline both from /sync and /notifications, and lots of\n // slow and wasteful processing and pagination. The correct solution is to\n // extend /messages or /search or something to filter on notifications.\n\n // use the fictitious token 'end'. in practice we would ideally give it\n // the oldest backwards pagination token from /sync, but /sync doesn't\n // know about /notifications, so we have no choice but to start paginating\n // from the current point in time. This may well overlap with historical\n // notifs which are then inserted into the timeline by /sync responses.\n this._notifTimelineSet.resetLiveTimeline('end', null);\n\n // we could try to paginate a single event at this point in order to get\n // a more valid pagination token, but it just ends up with an out of order\n // timeline. given what a mess this is and given we're going to have duplicate\n // events anyway, just leave it with the dummy token for now.\n /*\n this.paginateNotifTimeline(this._notifTimelineSet.getLiveTimeline(), {\n backwards: true,\n limit: 1\n });\n */\n};\n\n/**\n * Peek into a room and receive updates about the room. This only works if the\n * history visibility for the room is world_readable.\n * @param {String} roomId The room to attempt to peek into.\n * @return {module:client.Promise} Resolves: Room object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.peekInRoom = function (roomId) {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n this._peekSync = new SyncApi(this, this._clientOpts);\n return this._peekSync.peek(roomId);\n};\n\n/**\n * Stop any ongoing room peeking.\n */\nMatrixClient.prototype.stopPeeking = function () {\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n this._peekSync = null;\n }\n};\n\n/**\n * Set r/w flags for guest access in a room.\n * @param {string} roomId The room to configure guest access in.\n * @param {Object} opts Options\n * @param {boolean} opts.allowJoin True to allow guests to join this room. This\n * implicitly gives guests write access. If false or not given, guests are\n * explicitly forbidden from joining the room.\n * @param {boolean} opts.allowRead True to set history visibility to\n * be world_readable. This gives guests read access *from this point forward*.\n * If false or not given, history visibility is not modified.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setGuestAccess = function (roomId, opts) {\n var writePromise = this.sendStateEvent(roomId, \"m.room.guest_access\", {\n guest_access: opts.allowJoin ? \"can_join\" : \"forbidden\"\n });\n\n var readPromise = _bluebird2.default.resolve();\n if (opts.allowRead) {\n readPromise = this.sendStateEvent(roomId, \"m.room.history_visibility\", {\n history_visibility: \"world_readable\"\n });\n }\n\n return _bluebird2.default.all([readPromise, writePromise]);\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Requests an email verification token for the purposes of registration.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding registration-specific behaviour. Specifically, if an account with\n * the given email address already exists, it will either send an email\n * to the address informing them of this or return M_THREEPID_IN_USE\n * (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the registration-specific logic.\n *\n * Parameters and return value are as for requestEmailToken\n\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of registration.\n * This API proxies the Identity Server /validate/msisdn/requestToken API,\n * adding registration-specific behaviour, as with requestRegisterEmailToken.\n *\n * @param {string} phoneCountry The ISO 3166-1 alpha-2 code for the country in which\n * phoneNumber should be parsed relative to.\n * @param {string} phoneNumber The phone number, in national or international format\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestRegisterMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/register/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of adding a\n * third party identifier to an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the addition of email addresses to an\n * account. Specifically, if an account with\n * the given email address already exists, it will either send an email\n * to the address informing them of this or return M_THREEPID_IN_USE\n * (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the email addition specific logic.\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of adding a\n * third party identifier to an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the addition of phone numbers to an\n * account, as requestAdd3pidEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestAdd3pidMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/3pid/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests an email verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting. Specifically,\n * if no account with the given email address exists, it may either\n * return M_THREEPID_NOT_FOUND or send an email\n * to the address informing them of this (which one is up to the Home Server).\n *\n * requestEmailToken calls the equivalent API directly on the ID server,\n * therefore bypassing the password reset specific logic.\n *\n * @param {string} email As requestEmailToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @param {module:client.callback} callback Optional. As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordEmailToken = function (email, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/email/requestToken\", {\n email: email,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Requests a text message verification token for the purposes of resetting\n * the password on an account.\n * This API proxies the Identity Server /validate/email/requestToken API,\n * adding specific behaviour for the password resetting, as requestPasswordEmailToken.\n *\n * @param {string} phoneCountry As requestRegisterMsisdnToken\n * @param {string} phoneNumber As requestRegisterMsisdnToken\n * @param {string} clientSecret As requestEmailToken\n * @param {number} sendAttempt As requestEmailToken\n * @param {string} nextLink As requestEmailToken\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype.requestPasswordMsisdnToken = function (phoneCountry, phoneNumber, clientSecret, sendAttempt, nextLink) {\n return this._requestTokenFromEndpoint(\"/account/password/msisdn/requestToken\", {\n country: phoneCountry,\n phone_number: phoneNumber,\n client_secret: clientSecret,\n send_attempt: sendAttempt,\n next_link: nextLink\n });\n};\n\n/**\n * Internal utility function for requesting validation tokens from usage-specific\n * requestToken endpoints.\n *\n * @param {string} endpoint The endpoint to send the request to\n * @param {object} params Parameters for the POST request\n * @return {module:client.Promise} Resolves: As requestEmailToken\n */\nMatrixClient.prototype._requestTokenFromEndpoint = function (endpoint, params) {\n var id_server_url = url.parse(this.idBaseUrl);\n if (id_server_url.host === null) {\n throw new Error(\"Invalid ID server URL: \" + this.idBaseUrl);\n }\n\n var postParams = (0, _assign2.default)({}, params, {\n id_server: id_server_url.host\n });\n return this._http.request(undefined, \"POST\", endpoint, undefined, postParams);\n};\n\n// Push operations\n// ===============\n\n/**\n * Get the room-kind push rule associated with a room.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @return {object} the rule or undefined.\n */\nMatrixClient.prototype.getRoomPushRule = function (scope, roomId) {\n // There can be only room-kind push rule per room\n // and its id is the room id.\n if (this.pushRules) {\n for (var i = 0; i < this.pushRules[scope].room.length; i++) {\n var rule = this.pushRules[scope].room[i];\n if (rule.rule_id === roomId) {\n return rule;\n }\n }\n } else {\n throw new Error(\"SyncApi.sync() must be done before accessing to push rules.\");\n }\n};\n\n/**\n * Set a room-kind muting push rule in a room.\n * The operation also updates MatrixClient.pushRules at the end.\n * @param {string} scope \"global\" or device-specific.\n * @param {string} roomId the id of the room.\n * @param {string} mute the mute state.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.setRoomMutePushRule = function (scope, roomId, mute) {\n var self = this;\n var deferred = void 0,\n hasDontNotifyRule = void 0;\n\n // Get the existing room-kind push rule if any\n var roomPushRule = this.getRoomPushRule(scope, roomId);\n if (roomPushRule) {\n if (0 <= roomPushRule.actions.indexOf(\"dont_notify\")) {\n hasDontNotifyRule = true;\n }\n }\n\n if (!mute) {\n // Remove the rule only if it is a muting rule\n if (hasDontNotifyRule) {\n deferred = this.deletePushRule(scope, \"room\", roomPushRule.rule_id);\n }\n } else {\n if (!roomPushRule) {\n deferred = this.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n });\n } else if (!hasDontNotifyRule) {\n // Remove the existing one before setting the mute push rule\n // This is a workaround to SYN-590 (Push rule update fails)\n deferred = _bluebird2.default.defer();\n this.deletePushRule(scope, \"room\", roomPushRule.rule_id).done(function () {\n self.addPushRule(scope, \"room\", roomId, {\n actions: [\"dont_notify\"]\n }).done(function () {\n deferred.resolve();\n }, function (err) {\n deferred.reject(err);\n });\n }, function (err) {\n deferred.reject(err);\n });\n\n deferred = deferred.promise;\n }\n }\n\n if (deferred) {\n // Update this.pushRules when the operation completes\n var ruleRefreshDeferred = _bluebird2.default.defer();\n deferred.done(function () {\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.resolve();\n }, function (err) {\n ruleRefreshDeferred.reject(err);\n });\n }, function (err) {\n // Update it even if the previous operation fails. This can help the\n // app to recover when push settings has been modifed from another client\n self.getPushRules().done(function (result) {\n self.pushRules = result;\n ruleRefreshDeferred.reject(err);\n }, function (err2) {\n ruleRefreshDeferred.reject(err);\n });\n });\n return ruleRefreshDeferred.promise;\n }\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search for messages containing the given text.\n * @param {Object} opts Options for the search.\n * @param {string} opts.query The text to query.\n * @param {string=} opts.keys The keys to search on. Defaults to all keys. One\n * of \"content.body\", \"content.name\", \"content.topic\".\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchMessageText = function (opts, callback) {\n var roomEvents = {\n search_term: opts.query\n };\n\n if ('keys' in opts) {\n roomEvents.keys = opts.keys;\n }\n\n return this.search({\n body: {\n search_categories: {\n room_events: roomEvents\n }\n }\n }, callback);\n};\n\n/**\n * Perform a server-side search for room events.\n *\n * The returned promise resolves to an object containing the fields:\n *\n * * {number} count: estimate of the number of results\n * * {string} next_batch: token for back-pagination; if undefined, there are\n * no more results\n * * {Array} highlights: a list of words to highlight from the stemming\n * algorithm\n * * {Array} results: a list of results\n *\n * Each entry in the results list is a {module:models/search-result.SearchResult}.\n *\n * @param {Object} opts\n * @param {string} opts.term the term to search for\n * @param {Object} opts.filter a JSON filter object to pass in the request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.searchRoomEvents = function (opts) {\n // TODO: support groups\n\n var body = {\n search_categories: {\n room_events: {\n search_term: opts.term,\n filter: opts.filter,\n order_by: \"recent\",\n event_context: {\n before_limit: 1,\n after_limit: 1,\n include_profile: true\n }\n }\n }\n };\n\n var searchResults = {\n _query: body,\n results: [],\n highlights: []\n };\n\n return this.search({ body: body }).then(this._processRoomEventsSearch.bind(this, searchResults));\n};\n\n/**\n * Take a result from an earlier searchRoomEvents call, and backfill results.\n *\n * @param {object} searchResults the results object to be updated\n * @return {module:client.Promise} Resolves: updated result object\n * @return {Error} Rejects: with an error response.\n */\nMatrixClient.prototype.backPaginateRoomEventsSearch = function (searchResults) {\n // TODO: we should implement a backoff (as per scrollback()) to deal more\n // nicely with HTTP errors.\n\n if (!searchResults.next_batch) {\n return _bluebird2.default.reject(new Error(\"Cannot backpaginate event search any further\"));\n }\n\n if (searchResults.pendingRequest) {\n // already a request in progress - return the existing promise\n return searchResults.pendingRequest;\n }\n\n var searchOpts = {\n body: searchResults._query,\n next_batch: searchResults.next_batch\n };\n\n var promise = this.search(searchOpts).then(this._processRoomEventsSearch.bind(this, searchResults)).finally(function () {\n searchResults.pendingRequest = null;\n });\n searchResults.pendingRequest = promise;\n\n return promise;\n};\n\n/**\n * helper for searchRoomEvents and backPaginateRoomEventsSearch. Processes the\n * response from the API call and updates the searchResults\n *\n * @param {Object} searchResults\n * @param {Object} response\n * @return {Object} searchResults\n * @private\n */\nMatrixClient.prototype._processRoomEventsSearch = function (searchResults, response) {\n var room_events = response.search_categories.room_events;\n\n searchResults.count = room_events.count;\n searchResults.next_batch = room_events.next_batch;\n\n // combine the highlight list with our existing list; build an object\n // to avoid O(N^2) fail\n var highlights = {};\n room_events.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n searchResults.highlights.forEach(function (hl) {\n highlights[hl] = 1;\n });\n\n // turn it back into a list.\n searchResults.highlights = (0, _keys2.default)(highlights);\n\n // append the new results to our existing results\n for (var i = 0; i < room_events.results.length; i++) {\n var sr = SearchResult.fromJson(room_events.results[i], this.getEventMapper());\n searchResults.results.push(sr);\n }\n return searchResults;\n};\n\n/**\n * Populate the store with rooms the user has left.\n * @return {module:client.Promise} Resolves: TODO - Resolved when the rooms have\n * been added to the data store.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.syncLeftRooms = function () {\n // Guard against multiple calls whilst ongoing and multiple calls post success\n if (this._syncedLeftRooms) {\n return _bluebird2.default.resolve([]); // don't call syncRooms again if it succeeded.\n }\n if (this._syncLeftRoomsPromise) {\n return this._syncLeftRoomsPromise; // return the ongoing request\n }\n var self = this;\n var syncApi = new SyncApi(this, this._clientOpts);\n this._syncLeftRoomsPromise = syncApi.syncLeftRooms();\n\n // cleanup locks\n this._syncLeftRoomsPromise.then(function (res) {\n console.log(\"Marking success of sync left room request\");\n self._syncedLeftRooms = true; // flip the bit on success\n }).finally(function () {\n self._syncLeftRoomsPromise = null; // cleanup ongoing request state\n });\n\n return this._syncLeftRoomsPromise;\n};\n\n// Filters\n// =======\n\n/**\n * Create a new filter.\n * @param {Object} content The HTTP body for the request\n * @return {Filter} Resolves to a Filter object.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.createFilter = function (content) {\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter\", {\n $userId: this.credentials.userId\n });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(self.credentials.userId, response.filter_id, content);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * Retrieve a filter.\n * @param {string} userId The user ID of the filter owner\n * @param {string} filterId The filter ID to retrieve\n * @param {boolean} allowCached True to allow cached filters to be returned.\n * Default: True.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getFilter = function (userId, filterId, allowCached) {\n if (allowCached) {\n var filter = this.store.getFilter(userId, filterId);\n if (filter) {\n return _bluebird2.default.resolve(filter);\n }\n }\n\n var self = this;\n var path = utils.encodeUri(\"/user/$userId/filter/$filterId\", {\n $userId: userId,\n $filterId: filterId\n });\n\n return this._http.authedRequest(undefined, \"GET\", path, undefined, undefined).then(function (response) {\n // persist the filter\n var filter = Filter.fromJson(userId, filterId, response);\n self.store.storeFilter(filter);\n return filter;\n });\n};\n\n/**\n * @param {string} filterName\n * @param {Filter} filter\n * @return {Promise<String>} Filter ID\n */\nMatrixClient.prototype.getOrCreateFilter = function (filterName, filter) {\n var filterId = this.store.getFilterIdByName(filterName);\n var promise = _bluebird2.default.resolve();\n var self = this;\n\n if (filterId) {\n // check that the existing filter matches our expectations\n promise = self.getFilter(self.credentials.userId, filterId, true).then(function (existingFilter) {\n var oldDef = existingFilter.getDefinition();\n var newDef = filter.getDefinition();\n\n if (utils.deepCompare(oldDef, newDef)) {\n // super, just use that.\n // debuglog(\"Using existing filter ID %s: %s\", filterId,\n // JSON.stringify(oldDef));\n return _bluebird2.default.resolve(filterId);\n }\n // debuglog(\"Existing filter ID %s: %s; new filter: %s\",\n // filterId, JSON.stringify(oldDef), JSON.stringify(newDef));\n self.store.setFilterIdByName(filterName, undefined);\n return undefined;\n }, function (error) {\n // Synapse currently returns the following when the filter cannot be found:\n // {\n // errcode: \"M_UNKNOWN\",\n // name: \"M_UNKNOWN\",\n // message: \"No row found\",\n // data: Object, httpStatus: 404\n // }\n if (error.httpStatus === 404 && (error.errcode === \"M_UNKNOWN\" || error.errcode === \"M_NOT_FOUND\")) {\n // Clear existing filterId from localStorage\n // if it no longer exists on the server\n self.store.setFilterIdByName(filterName, undefined);\n // Return a undefined value for existingId further down the promise chain\n return undefined;\n } else {\n throw error;\n }\n });\n }\n\n return promise.then(function (existingId) {\n if (existingId) {\n return existingId;\n }\n\n // create a new filter\n return self.createFilter(filter.getDefinition()).then(function (createdFilter) {\n // debuglog(\"Created new filter ID %s: %s\", createdFilter.filterId,\n // JSON.stringify(createdFilter.getDefinition()));\n self.store.setFilterIdByName(filterName, createdFilter.filterId);\n return createdFilter.filterId;\n });\n });\n};\n\n/**\n * Gets a bearer token from the Home Server that the user can\n * present to a third party in order to prove their ownership\n * of the Matrix account they are logged into.\n * @return {module:client.Promise} Resolves: Token object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.getOpenIdToken = function () {\n var path = utils.encodeUri(\"/user/$userId/openid/request_token\", {\n $userId: this.credentials.userId\n });\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, {});\n};\n\n// VoIP operations\n// ===============\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixClient.prototype.turnServer = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/voip/turnServer\");\n};\n\n/**\n * Get the TURN servers for this home server.\n * @return {Array<Object>} The servers or an empty list.\n */\nMatrixClient.prototype.getTurnServers = function () {\n return this._turnServers || [];\n};\n\n// Higher level APIs\n// =================\n\n// TODO: stuff to handle:\n// local echo\n// event dup suppression? - apparently we should still be doing this\n// tracking current display name / avatar per-message\n// pagination\n// re-sending (including persisting pending messages to be sent)\n// - Need a nice way to callback the app for arbitrary events like\n// displayname changes\n// due to ambiguity (or should this be on a chat-specific layer)?\n// reconnect after connectivity outages\n\n\n/**\n * High level helper method to begin syncing and poll for new events. To listen for these\n * events, add a listener for {@link module:client~MatrixClient#event:\"event\"}\n * via {@link module:client~MatrixClient#on}. Alternatively, listen for specific\n * state change events.\n * @param {Object=} opts Options to apply when syncing.\n * @param {Number=} opts.initialSyncLimit The event <code>limit=</code> to apply\n * to initial sync. Default: 8.\n * @param {Boolean=} opts.includeArchivedRooms True to put <code>archived=true</code>\n * on the <code>/initialSync</code> request. Default: false.\n * @param {Boolean=} opts.resolveInvitesToProfiles True to do /profile requests\n * on every invite event if the displayname/avatar_url is not known for this user ID.\n * Default: false.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"<b>chronological</b>\", messages will appear\n * in the timeline when the call to <code>sendEvent</code> was made. If\n * \"<b>detached</b>\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n *\n * @param {Number=} opts.pollTimeout The number of milliseconds to wait on /sync.\n * Default: 30000 (30 seconds).\n *\n * @param {Filter=} opts.filter The filter to apply to /sync calls. This will override\n * the opts.initialSyncLimit, which would normally result in a timeline limit filter.\n *\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n * @param {Boolean=} opts.lazyLoadMembers True to not load all membership events during\n * initial sync but fetch them when needed by calling `loadOutOfBandMembers`\n * This will override the filter option at this moment.\n */\nMatrixClient.prototype.startClient = function () {\n var _ref7 = (0, _bluebird.method)(function (opts) {\n var _this = this;\n\n if (this.clientRunning) {\n // client is already running.\n return;\n }\n this.clientRunning = true;\n // backwards compat for when 'opts' was 'historyLen'.\n if (typeof opts === \"number\") {\n opts = {\n initialSyncLimit: opts\n };\n }\n\n if (this._crypto) {\n this._crypto.uploadDeviceKeys().done();\n this._crypto.start();\n }\n\n // periodically poll for turn servers if we support voip\n checkTurnServers(this);\n\n if (this._syncApi) {\n // This shouldn't happen since we thought the client was not running\n console.error(\"Still have sync object whilst not running: stopping old one\");\n this._syncApi.stop();\n }\n\n // shallow-copy the opts dict before modifying and storing it\n opts = (0, _assign2.default)({}, opts);\n\n opts.crypto = this._crypto;\n opts.canResetEntireTimeline = function (roomId) {\n if (!_this._canResetTimelineCallback) {\n return false;\n }\n return _this._canResetTimelineCallback(roomId);\n };\n this._clientOpts = opts;\n this._syncApi = new SyncApi(this, opts);\n this._syncApi.sync();\n });\n\n return function (_x13) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * store client options with boolean/string/numeric values\n * to know in the next session what flags the sync data was\n * created with (e.g. lazy loading)\n * @param {object} opts the complete set of client options\n * @return {Promise} for store operation */\nMatrixClient.prototype._storeClientOptions = function () {\n var primTypes = [\"boolean\", \"string\", \"number\"];\n var serializableOpts = (0, _entries2.default)(this._clientOpts).filter(function (_ref8) {\n var _ref9 = (0, _slicedToArray3.default)(_ref8, 2),\n key = _ref9[0],\n value = _ref9[1];\n\n return primTypes.includes(typeof value === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(value));\n }).reduce(function (obj, _ref10) {\n var _ref11 = (0, _slicedToArray3.default)(_ref10, 2),\n key = _ref11[0],\n value = _ref11[1];\n\n obj[key] = value;\n return obj;\n }, {});\n return this.store.storeClientOptions(serializableOpts);\n};\n\n/**\n * High level helper method to stop the client from polling and allow a\n * clean shutdown.\n */\nMatrixClient.prototype.stopClient = function () {\n console.log('stopping MatrixClient');\n\n this.clientRunning = false;\n // TODO: f.e. Room => self.store.storeRoom(room) ?\n if (this._syncApi) {\n this._syncApi.stop();\n this._syncApi = null;\n }\n if (this._crypto) {\n this._crypto.stop();\n }\n if (this._peekSync) {\n this._peekSync.stopPeeking();\n }\n global.clearTimeout(this._checkTurnServersTimeoutID);\n};\n\n/*\n * Query the server to see if it support members lazy loading\n * @return {Promise<boolean>} true if server supports lazy loading\n */\nMatrixClient.prototype.doesServerSupportLazyLoading = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var response, unstableFeatures;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(this._serverSupportsLazyLoading === null)) {\n _context4.next = 6;\n break;\n }\n\n _context4.next = 3;\n return (0, _bluebird.resolve)(this._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: ''\n }));\n\n case 3:\n response = _context4.sent;\n unstableFeatures = response[\"unstable_features\"];\n\n this._serverSupportsLazyLoading = unstableFeatures && unstableFeatures[\"m.lazy_load_members\"];\n\n case 6:\n return _context4.abrupt(\"return\", this._serverSupportsLazyLoading);\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/*\n * Get if lazy loading members is being used.\n * @return {boolean} Whether or not members are lazy loaded by this client\n */\nMatrixClient.prototype.hasLazyLoadMembersEnabled = function () {\n return !!this._clientOpts.lazyLoadMembers;\n};\n\n/*\n * Set a function which is called when /sync returns a 'limited' response.\n * It is called with a room ID and returns a boolean. It should return 'true' if the SDK\n * can SAFELY remove events from this room. It may not be safe to remove events if there\n * are other references to the timelines for this room, e.g because the client is\n * actively viewing events in this room.\n * Default: returns false.\n * @param {Function} cb The callback which will be invoked.\n */\nMatrixClient.prototype.setCanResetTimelineCallback = function (cb) {\n this._canResetTimelineCallback = cb;\n};\n\n/**\n * Get the callback set via `setCanResetTimelineCallback`.\n * @return {?Function} The callback or null\n */\nMatrixClient.prototype.getCanResetTimelineCallback = function () {\n return this._canResetTimelineCallback;\n};\n\nfunction setupCallEventHandler(client) {\n var candidatesByCall = {\n // callId: [Candidate]\n };\n\n // Maintain a buffer of events before the client has synced for the first time.\n // This buffer will be inspected to see if we should send incoming call\n // notifications. It needs to be buffered to correctly determine if an\n // incoming call has had a matching answer/hangup.\n var callEventBuffer = [];\n var isClientPrepared = false;\n client.on(\"sync\", function (state) {\n if (state === \"PREPARED\") {\n isClientPrepared = true;\n var ignoreCallIds = {}; // Set<String>\n // inspect the buffer and mark all calls which have been answered\n // or hung up before passing them to the call event handler.\n for (var i = callEventBuffer.length - 1; i >= 0; i--) {\n var ev = callEventBuffer[i];\n if (ev.getType() === \"m.call.answer\" || ev.getType() === \"m.call.hangup\") {\n ignoreCallIds[ev.getContent().call_id] = \"yep\";\n }\n }\n // now loop through the buffer chronologically and inject them\n callEventBuffer.forEach(function (e) {\n if (ignoreCallIds[e.getContent().call_id]) {\n // This call has previously been ansered or hung up: ignore it\n return;\n }\n callEventHandler(e);\n });\n callEventBuffer = [];\n }\n });\n\n client.on(\"event\", onEvent);\n\n function onEvent(event) {\n if (event.getType().indexOf(\"m.call.\") !== 0) {\n // not a call event\n if (event.isBeingDecrypted() || event.isDecryptionFailure()) {\n // not *yet* a call event, but might become one...\n event.once(\"Event.decrypted\", onEvent);\n }\n return;\n }\n if (!isClientPrepared) {\n callEventBuffer.push(event);\n return;\n }\n callEventHandler(event);\n }\n\n function callEventHandler(event) {\n var content = event.getContent();\n var call = content.call_id ? client.callList[content.call_id] : undefined;\n var i = void 0;\n //console.log(\"RECV %s content=%s\", event.getType(), JSON.stringify(content));\n\n if (event.getType() === \"m.call.invite\") {\n if (event.getSender() === client.credentials.userId) {\n return; // ignore invites you send\n }\n\n if (event.getAge() > content.lifetime) {\n return; // expired call\n }\n\n if (call && call.state === \"ended\") {\n return; // stale/old invite event\n }\n if (call) {\n console.log(\"WARN: Already have a MatrixCall with id %s but got an \" + \"invite. Clobbering.\", content.call_id);\n }\n\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId(), {\n forceTURN: client._forceTURN\n });\n if (!call) {\n console.log(\"Incoming call ID \" + content.call_id + \" but this client \" + \"doesn't support WebRTC\");\n // don't hang up the call: there could be other clients\n // connected that do support WebRTC and declining the\n // the call on their behalf would be really annoying.\n return;\n }\n\n call.callId = content.call_id;\n call._initWithInvite(event);\n client.callList[call.callId] = call;\n\n // if we stashed candidate events for that call ID, play them back now\n if (candidatesByCall[call.callId]) {\n for (i = 0; i < candidatesByCall[call.callId].length; i++) {\n call._gotRemoteIceCandidate(candidatesByCall[call.callId][i]);\n }\n }\n\n // Were we trying to call that user (room)?\n var existingCall = void 0;\n var existingCalls = utils.values(client.callList);\n for (i = 0; i < existingCalls.length; ++i) {\n var thisCall = existingCalls[i];\n if (call.roomId === thisCall.roomId && thisCall.direction === 'outbound' && [\"wait_local_media\", \"create_offer\", \"invite_sent\"].indexOf(thisCall.state) !== -1) {\n existingCall = thisCall;\n break;\n }\n }\n\n if (existingCall) {\n // If we've only got to wait_local_media or create_offer and\n // we've got an invite, pick the incoming call because we know\n // we haven't sent our invite yet otherwise, pick whichever\n // call has the lowest call ID (by string comparison)\n if (existingCall.state === 'wait_local_media' || existingCall.state === 'create_offer' || existingCall.callId > call.callId) {\n console.log(\"Glare detected: answering incoming call \" + call.callId + \" and canceling outgoing call \" + existingCall.callId);\n existingCall._replacedBy(call);\n call.answer();\n } else {\n console.log(\"Glare detected: rejecting incoming call \" + call.callId + \" and keeping outgoing call \" + existingCall.callId);\n call.hangup();\n }\n } else {\n client.emit(\"Call.incoming\", call);\n }\n } else if (event.getType() === 'm.call.answer') {\n if (!call) {\n return;\n }\n if (event.getSender() === client.credentials.userId) {\n if (call.state === 'ringing') {\n call._onAnsweredElsewhere(content);\n }\n } else {\n call._receivedAnswer(content);\n }\n } else if (event.getType() === 'm.call.candidates') {\n if (event.getSender() === client.credentials.userId) {\n return;\n }\n if (!call) {\n // store the candidates; we may get a call eventually.\n if (!candidatesByCall[content.call_id]) {\n candidatesByCall[content.call_id] = [];\n }\n candidatesByCall[content.call_id] = candidatesByCall[content.call_id].concat(content.candidates);\n } else {\n for (i = 0; i < content.candidates.length; i++) {\n call._gotRemoteIceCandidate(content.candidates[i]);\n }\n }\n } else if (event.getType() === 'm.call.hangup') {\n // Note that we also observe our own hangups here so we can see\n // if we've already rejected a call that would otherwise be valid\n if (!call) {\n // if not live, store the fact that the call has ended because\n // we're probably getting events backwards so\n // the hangup will come before the invite\n call = webRtcCall.createNewMatrixCall(client, event.getRoomId());\n if (call) {\n call.callId = content.call_id;\n call._initWithHangup(event);\n client.callList[content.call_id] = call;\n }\n } else {\n if (call.state !== 'ended') {\n call._onHangupReceived(content);\n delete client.callList[content.call_id];\n }\n }\n }\n }\n}\n\nfunction checkTurnServers(client) {\n if (!client._supportsVoip) {\n return;\n }\n if (client.isGuest()) {\n return; // guests can't access TURN servers\n }\n\n client.turnServer().done(function (res) {\n if (res.uris) {\n console.log(\"Got TURN URIs: \" + res.uris + \" refresh in \" + res.ttl + \" secs\");\n // map the response to a format that can be fed to\n // RTCPeerConnection\n var servers = {\n urls: res.uris,\n username: res.username,\n credential: res.password\n };\n client._turnServers = [servers];\n // re-fetch when we're about to reach the TTL\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, (res.ttl || 60 * 60) * 1000 * 0.9);\n }\n }, function (err) {\n console.error(\"Failed to get TURN URIs\");\n client._checkTurnServersTimeoutID = setTimeout(function () {\n checkTurnServers(client);\n }, 60000);\n });\n}\n\nfunction _reject(callback, defer, err) {\n if (callback) {\n callback(err);\n }\n defer.reject(err);\n}\n\nfunction _resolve(callback, defer, res) {\n if (callback) {\n callback(null, res);\n }\n defer.resolve(res);\n}\n\nfunction _PojoToMatrixEventMapper(client) {\n function mapper(plainOldJsObject) {\n var event = new MatrixEvent(plainOldJsObject);\n if (event.isEncrypted()) {\n client.reEmitter.reEmit(event, [\"Event.decrypted\"]);\n event.attemptDecryption(client._crypto);\n }\n return event;\n }\n return mapper;\n}\n\n/**\n * @return {Function}\n */\nMatrixClient.prototype.getEventMapper = function () {\n return _PojoToMatrixEventMapper(this);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Generates a random string suitable for use as a client secret. <strong>This\n * method is experimental and may change.</strong>\n * @return {string} A new client secret\n */\nMatrixClient.prototype.generateClientSecret = function () {\n var ret = \"\";\n var chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n\n for (var i = 0; i < 32; i++) {\n ret += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n\n return ret;\n};\n\n/** */\nmodule.exports.MatrixClient = MatrixClient;\n/** */\nmodule.exports.CRYPTO_ENABLED = CRYPTO_ENABLED;\n\n// MatrixClient Event JSDocs\n\n/**\n * Fires whenever the SDK receives a new event.\n * <p>\n * This is only fired for live events received via /sync - it is not fired for\n * events received over context, search, or pagination APIs.\n *\n * @event module:client~MatrixClient#\"event\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"event\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK receives a new to-device event.\n * @event module:client~MatrixClient#\"toDeviceEvent\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @example\n * matrixClient.on(\"toDeviceEvent\", function(event){\n * var sender = event.getSender();\n * });\n */\n\n/**\n * Fires whenever the SDK's syncing state is updated. The state can be one of:\n * <ul>\n *\n * <li>PREPARED: The client has synced with the server at least once and is\n * ready for methods to be called on it. This will be immediately followed by\n * a state of SYNCING. <i>This is the equivalent of \"syncComplete\" in the\n * previous API.</i></li>\n *\n * <li>CATCHUP: The client has detected the connection to the server might be\n * available again and will now try to do a sync again. As this sync might take\n * a long time (depending how long ago was last synced, and general server\n * performance) the client is put in this mode so the UI can reflect trying\n * to catch up with the server after losing connection.</li>\n *\n * <li>SYNCING : The client is currently polling for new events from the server.\n * This will be called <i>after</i> processing latest events from a sync.</li>\n *\n * <li>ERROR : The client has had a problem syncing with the server. If this is\n * called <i>before</i> PREPARED then there was a problem performing the initial\n * sync. If this is called <i>after</i> PREPARED then there was a problem polling\n * the server for updates. This may be called multiple times even if the state is\n * already ERROR. <i>This is the equivalent of \"syncError\" in the previous\n * API.</i></li>\n *\n * <li>RECONNECTING: The sync connection has dropped, but not (yet) in a way that\n * should be considered erroneous.\n * </li>\n *\n * <li>STOPPED: The client has stopped syncing with server due to stopClient\n * being called.\n * </li>\n * </ul>\n * State transition diagram:\n * <pre>\n * +---->STOPPED\n * |\n * +----->PREPARED -------> SYNCING <--+\n * | ^ | ^ |\n * | CATCHUP ----------+ | | |\n * | ^ V | |\n * null ------+ | +------- RECONNECTING |\n * | V V |\n * +------->ERROR ---------------------+\n *\n * NB: 'null' will never be emitted by this event.\n *\n * </pre>\n * Transitions:\n * <ul>\n *\n * <li><code>null -> PREPARED</code> : Occurs when the initial sync is completed\n * first time. This involves setting up filters and obtaining push rules.\n *\n * <li><code>null -> ERROR</code> : Occurs when the initial sync failed first time.\n *\n * <li><code>ERROR -> PREPARED</code> : Occurs when the initial sync succeeds\n * after previously failing.\n *\n * <li><code>PREPARED -> SYNCING</code> : Occurs immediately after transitioning\n * to PREPARED. Starts listening for live updates rather than catching up.\n *\n * <li><code>SYNCING -> RECONNECTING</code> : Occurs when the live update fails.\n *\n * <li><code>RECONNECTING -> RECONNECTING</code> : Can occur if the update calls\n * continue to fail, but the keepalive calls (to /versions) succeed.\n *\n * <li><code>RECONNECTING -> ERROR</code> : Occurs when the keepalive call also fails\n *\n * <li><code>ERROR -> SYNCING</code> : Occurs when the client has performed a\n * live update after having previously failed.\n *\n * <li><code>ERROR -> ERROR</code> : Occurs when the client has failed to keepalive\n * for a second time or more.</li>\n *\n * <li><code>SYNCING -> SYNCING</code> : Occurs when the client has performed a live\n * update. This is called <i>after</i> processing.</li>\n *\n * <li><code>* -> STOPPED</code> : Occurs once the client has stopped syncing or\n * trying to sync after stopClient has been called.</li>\n * </ul>\n *\n * @event module:client~MatrixClient#\"sync\"\n *\n * @param {string} state An enum representing the syncing state. One of \"PREPARED\",\n * \"SYNCING\", \"ERROR\", \"STOPPED\".\n *\n * @param {?string} prevState An enum representing the previous syncing state.\n * One of \"PREPARED\", \"SYNCING\", \"ERROR\", \"STOPPED\" <b>or null</b>.\n *\n * @param {?Object} data Data about this transition.\n *\n * @param {MatrixError} data.error The matrix error if <code>state=ERROR</code>.\n *\n * @param {String} data.oldSyncToken The 'since' token passed to /sync.\n * <code>null</code> for the first successful sync since this client was\n * started. Only present if <code>state=PREPARED</code> or\n * <code>state=SYNCING</code>.\n *\n * @param {String} data.nextSyncToken The 'next_batch' result from /sync, which\n * will become the 'since' token for the next call to /sync. Only present if\n * <code>state=PREPARED</code> or <code>state=SYNCING</code>.\n *\n * @param {boolean} data.catchingUp True if we are working our way through a\n * backlog of events after connecting. Only present if <code>state=SYNCING</code>.\n *\n * @example\n * matrixClient.on(\"sync\", function(state, prevState, data) {\n * switch (state) {\n * case \"ERROR\":\n * // update UI to say \"Connection Lost\"\n * break;\n * case \"SYNCING\":\n * // update UI to remove any \"Connection Lost\" message\n * break;\n * case \"PREPARED\":\n * // the client instance is ready to be queried.\n * var rooms = matrixClient.getRooms();\n * break;\n * }\n * });\n */\n\n/**\n* Fires whenever the sdk learns about a new group. <strong>This event\n* is experimental and may change.</strong>\n* @event module:client~MatrixClient#\"Group\"\n* @param {Group} group The newly created, fully populated group.\n* @example\n* matrixClient.on(\"Group\", function(group){\n* var groupId = group.groupId;\n* });\n*/\n\n/**\n* Fires whenever a new Room is added. This will fire when you are invited to a\n* room, as well as when you join a room. <strong>This event is experimental and\n* may change.</strong>\n* @event module:client~MatrixClient#\"Room\"\n* @param {Room} room The newly created, fully populated room.\n* @example\n* matrixClient.on(\"Room\", function(room){\n* var roomId = room.roomId;\n* });\n*/\n\n/**\n* Fires whenever a Room is removed. This will fire when you forget a room.\n* <strong>This event is experimental and may change.</strong>\n* @event module:client~MatrixClient#\"deleteRoom\"\n* @param {string} roomId The deleted room ID.\n* @example\n* matrixClient.on(\"deleteRoom\", function(roomId){\n* // update UI from getRooms()\n* });\n*/\n\n/**\n * Fires whenever an incoming call arrives.\n * @event module:client~MatrixClient#\"Call.incoming\"\n * @param {module:webrtc/call~MatrixCall} call The incoming call.\n * @example\n * matrixClient.on(\"Call.incoming\", function(call){\n * call.answer(); // auto-answer\n * });\n */\n\n/**\n * Fires whenever the login session the JS SDK is using is no\n * longer valid and the user must log in again.\n * NB. This only fires when action is required from the user, not\n * when then login session can be renewed by using a refresh token.\n * @event module:client~MatrixClient#\"Session.logged_out\"\n * @example\n * matrixClient.on(\"Session.logged_out\", function(call){\n * // show the login screen\n * });\n */\n\n/**\n * Fires when the JS SDK receives a M_CONSENT_NOT_GIVEN error in response\n * to a HTTP request.\n * @event module:client~MatrixClient#\"no_consent\"\n * @example\n * matrixClient.on(\"no_consent\", function(message, contentUri) {\n * console.info(message + ' Go to ' + contentUri);\n * });\n */\n\n/**\n * Fires when a device is marked as verified/unverified/blocked/unblocked by\n * {@link module:client~MatrixClient#setDeviceVerified|MatrixClient.setDeviceVerified} or\n * {@link module:client~MatrixClient#setDeviceBlocked|MatrixClient.setDeviceBlocked}.\n *\n * @event module:client~MatrixClient#\"deviceVerificationChanged\"\n * @param {string} userId the owner of the verified device\n * @param {string} deviceId the id of the verified device\n * @param {module:crypto/deviceinfo} deviceInfo updated device information\n */\n\n/**\n * Fires whenever new user-scoped account_data is added.\n * @event module:client~MatrixClient#\"accountData\"\n * @param {MatrixEvent} event The event describing the account_data just added\n * @example\n * matrixClient.on(\"accountData\", function(event){\n * myAccountData[event.type] = event.content;\n * });\n */\n\n// EventEmitter JSDocs\n\n/**\n * The {@link https://nodejs.org/api/events.html|EventEmitter} class.\n * @external EventEmitter\n * @see {@link https://nodejs.org/api/events.html}\n */\n\n/**\n * Adds a listener to the end of the listeners array for the specified event.\n * No checks are made to see if the listener has already been added. Multiple\n * calls passing the same combination of event and listener will result in the\n * listener being added multiple times.\n * @function external:EventEmitter#on\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Alias for {@link external:EventEmitter#on}.\n * @function external:EventEmitter#addListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Adds a <b>one time</b> listener for the event. This listener is invoked only\n * the next time the event is fired, after which it is removed.\n * @function external:EventEmitter#once\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Remove a listener from the listener array for the specified event.\n * <b>Caution:</b> changes array indices in the listener array behind the\n * listener.\n * @function external:EventEmitter#removeListener\n * @param {string} event The event to listen for.\n * @param {Function} listener The function to invoke.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Removes all listeners, or those of the specified event. It's not a good idea\n * to remove listeners that were added elsewhere in the code, especially when\n * it's on an emitter that you didn't create (e.g. sockets or file streams).\n * @function external:EventEmitter#removeAllListeners\n * @param {string} event Optional. The event to remove listeners for.\n * @return {EventEmitter} for call chaining.\n */\n\n/**\n * Execute each of the listeners in order with the supplied arguments.\n * @function external:EventEmitter#emit\n * @param {string} event The event to emit.\n * @param {Function} listener The function to invoke.\n * @return {boolean} true if event had listeners, false otherwise.\n */\n\n/**\n * By default EventEmitters will print a warning if more than 10 listeners are\n * added for a particular event. This is a useful default which helps finding\n * memory leaks. Obviously not all Emitters should be limited to 10. This\n * function allows that to be increased. Set to zero for unlimited.\n * @function external:EventEmitter#setMaxListeners\n * @param {Number} n The max number of listeners.\n * @return {EventEmitter} for call chaining.\n */\n\n// MatrixClient Callback JSDocs\n\n/**\n * The standard MatrixClient callback interface. Functions which accept this\n * will specify 2 return arguments. These arguments map to the 2 parameters\n * specified in this callback.\n * @callback module:client.callback\n * @param {Object} err The error value, the \"rejected\" value or null.\n * @param {Object} data The data returned, the \"resolved\" value.\n */\n\n/**\n * {@link https://github.com/kriskowal/q|A promise implementation (Q)}. Functions\n * which return this will specify 2 return arguments. These arguments map to the\n * \"onFulfilled\" and \"onRejected\" values of the Promise.\n * @typedef {Object} Promise\n * @static\n * @property {Function} then promise.then(onFulfilled, onRejected, onProgress)\n * @property {Function} catch promise.catch(onRejected)\n * @property {Function} finally promise.finally(callback)\n * @property {Function} done promise.done(onFulfilled, onRejected, onProgress)\n */\n//# sourceMappingURL=client.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/entries\"), __esModule: true };","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module\n */\n\nvar Reemitter = function () {\n function Reemitter(target) {\n (0, _classCallCheck3.default)(this, Reemitter);\n\n this.target = target;\n\n // We keep one bound event handler for each event name so we know\n // what event is arriving\n this.boundHandlers = {};\n }\n\n (0, _createClass3.default)(Reemitter, [{\n key: \"_handleEvent\",\n value: function _handleEvent(eventName) {\n var _target;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_target = this.target).emit.apply(_target, [eventName].concat(args));\n }\n }, {\n key: \"reEmit\",\n value: function reEmit(source, eventNames) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(eventNames), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var eventName = _step.value;\n\n if (this.boundHandlers[eventName] === undefined) {\n this.boundHandlers[eventName] = this._handleEvent.bind(this, eventName);\n }\n var boundHandler = this.boundHandlers[eventName];\n\n source.on(eventName, boundHandler);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }]);\n return Reemitter;\n}();\n\nexports.default = Reemitter;\n//# sourceMappingURL=ReEmitter.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-state\n */\n\nvar _isFinite = require(\"babel-runtime/core-js/number/is-finite\");\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\nvar RoomMember = require(\"./room-member\");\n\n// possible statuses for out-of-band member loading\nvar OOB_STATUS_NOTSTARTED = 1;\nvar OOB_STATUS_INPROGRESS = 2;\nvar OOB_STATUS_FINISHED = 3;\n\n/**\n * Construct room state.\n *\n * Room State represents the state of the room at a given point.\n * It can be mutated by adding state events to it.\n * There are two types of room member associated with a state event:\n * normal member objects (accessed via getMember/getMembers) which mutate\n * with the state to represent the current state of that room/user, eg.\n * the object returned by getMember('@bob:example.com') will mutate to\n * get a different display name if Bob later changes his display name\n * in the room.\n * There are also 'sentinel' members (accessed via getSentinelMember).\n * These also represent the state of room members at the point in time\n * represented by the RoomState object, but unlike objects from getMember,\n * sentinel objects will always represent the room state as at the time\n * getSentinelMember was called, so if Bob subsequently changes his display\n * name, a room member object previously acquired with getSentinelMember\n * will still have his old display name. Calling getSentinelMember again\n * after the display name change will return a new RoomMember object\n * with Bob's new display name.\n *\n * @constructor\n * @param {?string} roomId Optional. The ID of the room which has this state.\n * If none is specified it just tracks paginationTokens, useful for notifTimelineSet\n * @param {?object} oobMemberFlags Optional. The state of loading out of bound members.\n * As the timeline might get reset while they are loading, this state needs to be inherited\n * and shared when the room state is cloned for the new timeline.\n * This should only be passed from clone.\n * @prop {Object.<string, RoomMember>} members The room member dictionary, keyed\n * on the user's ID.\n * @prop {Object.<string, Object.<string, MatrixEvent>>} events The state\n * events dictionary, keyed on the event type and then the state_key value.\n * @prop {string} paginationToken The pagination token for this state.\n */\nfunction RoomState(roomId) {\n var oobMemberFlags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n this.roomId = roomId;\n this.members = {\n // userId: RoomMember\n };\n this.events = {\n // eventType: { stateKey: MatrixEvent }\n };\n this.paginationToken = null;\n\n this._sentinels = {\n // userId: RoomMember\n };\n this._updateModifiedTime();\n this._displayNameToUserIds = {};\n this._userIdsToDisplayNames = {};\n this._tokenToInvite = {}; // 3pid invite state_key to m.room.member invite\n this._joinedMemberCount = null; // cache of the number of joined members\n // joined members count from summary api\n // once set, we know the server supports the summary api\n // and we should only trust that\n // we could also only trust that before OOB members\n // are loaded but doesn't seem worth the hassle atm\n this._summaryJoinedMemberCount = null;\n // same for invited member count\n this._invitedMemberCount = null;\n this._summaryInvitedMemberCount = null;\n\n if (!oobMemberFlags) {\n oobMemberFlags = {\n status: OOB_STATUS_NOTSTARTED\n };\n }\n this._oobMemberFlags = oobMemberFlags;\n}\nutils.inherits(RoomState, EventEmitter);\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoomState.prototype.getJoinedMemberCount = function () {\n if (this._summaryJoinedMemberCount !== null) {\n return this._summaryJoinedMemberCount;\n }\n if (this._joinedMemberCount === null) {\n this._joinedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'join' ? count + 1 : count;\n }, 0);\n }\n return this._joinedMemberCount;\n};\n\n/**\n * Set the joined member count explicitly (like from summary part of the sync response)\n * @param {number} count the amount of joined members\n */\nRoomState.prototype.setJoinedMemberCount = function (count) {\n this._summaryJoinedMemberCount = count;\n};\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoomState.prototype.getInvitedMemberCount = function () {\n if (this._summaryInvitedMemberCount !== null) {\n return this._summaryInvitedMemberCount;\n }\n if (this._invitedMemberCount === null) {\n this._invitedMemberCount = this.getMembers().reduce(function (count, m) {\n return m.membership === 'invite' ? count + 1 : count;\n }, 0);\n }\n return this._invitedMemberCount;\n};\n\n/**\n * Set the amount of invited members in this room\n * @param {number} count the amount of invited members\n */\nRoomState.prototype.setInvitedMemberCount = function (count) {\n this._summaryInvitedMemberCount = count;\n};\n\n/**\n * Get all RoomMembers in this room.\n * @return {Array<RoomMember>} A list of RoomMembers.\n */\nRoomState.prototype.getMembers = function () {\n return utils.values(this.members);\n};\n\n/**\n * Get a room member by their user ID.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getMember = function (userId) {\n return this.members[userId] || null;\n};\n\n/**\n * Get a room member whose properties will not change with this room state. You\n * typically want this if you want to attach a RoomMember to a MatrixEvent which\n * may no longer be represented correctly by Room.currentState or Room.oldState.\n * The term 'sentinel' refers to the fact that this RoomMember is an unchanging\n * guardian for state at this particular point in time.\n * @param {string} userId The room member's user ID.\n * @return {RoomMember} The member or null if they do not exist.\n */\nRoomState.prototype.getSentinelMember = function (userId) {\n if (!userId) return null;\n var sentinel = this._sentinels[userId];\n\n if (sentinel === undefined) {\n sentinel = new RoomMember(this.roomId, userId);\n var member = this.members[userId];\n if (member) {\n sentinel.setMembershipEvent(member.events.member, this);\n }\n this._sentinels[userId] = sentinel;\n }\n return sentinel;\n};\n\n/**\n * Get state events from the state of the room.\n * @param {string} eventType The event type of the state event.\n * @param {string} stateKey Optional. The state_key of the state event. If\n * this is <code>undefined</code> then all matching state events will be\n * returned.\n * @return {MatrixEvent[]|MatrixEvent} A list of events if state_key was\n * <code>undefined</code>, else a single event (or null if no match found).\n */\nRoomState.prototype.getStateEvents = function (eventType, stateKey) {\n if (!this.events[eventType]) {\n // no match\n return stateKey === undefined ? [] : null;\n }\n if (stateKey === undefined) {\n // return all values\n return utils.values(this.events[eventType]);\n }\n var event = this.events[eventType][stateKey];\n return event ? event : null;\n};\n\n/**\n * Creates a copy of this room state so that mutations to either won't affect the other.\n * @return {RoomState} the copy of the room state\n */\nRoomState.prototype.clone = function () {\n var copy = new RoomState(this.roomId, this._oobMemberFlags);\n\n // Ugly hack: because setStateEvents will mark\n // members as susperseding future out of bound members\n // if loading is in progress (through _oobMemberFlags)\n // since these are not new members, we're merely copying them\n // set the status to not started\n // after copying, we set back the status\n var status = this._oobMemberFlags.status;\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n\n (0, _values2.default)(this.events).forEach(function (eventsByStateKey) {\n var eventsForType = (0, _values2.default)(eventsByStateKey);\n copy.setStateEvents(eventsForType);\n });\n\n // Ugly hack: see above\n this._oobMemberFlags.status = status;\n\n if (this._summaryInvitedMemberCount !== null) {\n copy.setInvitedMemberCount(this.getInvitedMemberCount());\n }\n if (this._summaryJoinedMemberCount !== null) {\n copy.setJoinedMemberCount(this.getJoinedMemberCount());\n }\n\n // copy out of band flags if needed\n if (this._oobMemberFlags.status == OOB_STATUS_FINISHED) {\n // copy markOutOfBand flags\n this.getMembers().forEach(function (member) {\n if (member.isOutOfBand()) {\n var copyMember = copy.getMember(member.userId);\n copyMember.markOutOfBand();\n }\n });\n }\n\n return copy;\n};\n\n/**\n * Add previously unknown state events.\n * When lazy loading members while back-paginating,\n * the relevant room state for the timeline chunk at the end\n * of the chunk can be set with this method.\n * @param {MatrixEvent[]} events state events to prepend\n */\nRoomState.prototype.setUnknownStateEvents = function (events) {\n var _this = this;\n\n var unknownStateEvents = events.filter(function (event) {\n return _this.events[event.getType()] === undefined || _this.events[event.getType()][event.getStateKey()] === undefined;\n });\n\n this.setStateEvents(unknownStateEvents);\n};\n\n/**\n * Add an array of one or more state MatrixEvents, overwriting\n * any existing state with the same {type, stateKey} tuple. Will fire\n * \"RoomState.events\" for every event added. May fire \"RoomState.members\"\n * if there are <code>m.room.member</code> events.\n * @param {MatrixEvent[]} stateEvents a list of state events for this room.\n * @fires module:client~MatrixClient#event:\"RoomState.members\"\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @fires module:client~MatrixClient#event:\"RoomState.events\"\n */\nRoomState.prototype.setStateEvents = function (stateEvents) {\n var self = this;\n this._updateModifiedTime();\n\n // update the core event dict\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n self._setStateEvent(event);\n if (event.getType() === \"m.room.member\") {\n _updateDisplayNameCache(self, event.getStateKey(), event.getContent().displayname);\n _updateThirdPartyTokenCache(self, event);\n }\n self.emit(\"RoomState.events\", event, self);\n });\n\n // update higher level data structures. This needs to be done AFTER the\n // core event dict as these structures may depend on other state events in\n // the given array (e.g. disambiguating display names in one go to do both\n // clashing names rather than progressively which only catches 1 of them).\n utils.forEach(stateEvents, function (event) {\n if (event.getRoomId() !== self.roomId) {\n return;\n }\n if (!event.isState()) {\n return;\n }\n\n if (event.getType() === \"m.room.member\") {\n var userId = event.getStateKey();\n\n // leave events apparently elide the displayname or avatar_url,\n // so let's fake one up so that we don't leak user ids\n // into the timeline\n if (event.getContent().membership === \"leave\" || event.getContent().membership === \"ban\") {\n event.getContent().avatar_url = event.getContent().avatar_url || event.getPrevContent().avatar_url;\n event.getContent().displayname = event.getContent().displayname || event.getPrevContent().displayname;\n }\n\n var member = self._getOrCreateMember(userId, event);\n member.setMembershipEvent(event, self);\n\n self._updateMember(member);\n self.emit(\"RoomState.members\", event, self, member);\n } else if (event.getType() === \"m.room.power_levels\") {\n var members = utils.values(self.members);\n utils.forEach(members, function (member) {\n member.setPowerLevelEvent(event);\n self.emit(\"RoomState.members\", event, self, member);\n });\n\n // assume all our sentinels are now out-of-date\n self._sentinels = {};\n }\n });\n};\n\n/**\n * Looks up a member by the given userId, and if it doesn't exist,\n * create it and emit the `RoomState.newMember` event.\n * This method makes sure the member is added to the members dictionary\n * before emitting, as this is done from setStateEvents and _setOutOfBandMember.\n * @param {string} userId the id of the user to look up\n * @param {MatrixEvent} event the membership event for the (new) member. Used to emit.\n * @fires module:client~MatrixClient#event:\"RoomState.newMember\"\n * @returns {RoomMember} the member, existing or newly created.\n */\nRoomState.prototype._getOrCreateMember = function (userId, event) {\n var member = this.members[userId];\n if (!member) {\n member = new RoomMember(this.roomId, userId);\n // add member to members before emitting any events,\n // as event handlers often lookup the member\n this.members[userId] = member;\n this.emit(\"RoomState.newMember\", event, this, member);\n }\n return member;\n};\n\nRoomState.prototype._setStateEvent = function (event) {\n if (this.events[event.getType()] === undefined) {\n this.events[event.getType()] = {};\n }\n this.events[event.getType()][event.getStateKey()] = event;\n};\n\nRoomState.prototype._updateMember = function (member) {\n // this member may have a power level already, so set it.\n var pwrLvlEvent = this.getStateEvents(\"m.room.power_levels\", \"\");\n if (pwrLvlEvent) {\n member.setPowerLevelEvent(pwrLvlEvent);\n }\n\n // blow away the sentinel which is now outdated\n delete this._sentinels[member.userId];\n\n this.members[member.userId] = member;\n this._joinedMemberCount = null;\n this._invitedMemberCount = null;\n};\n\n/**\n * Get the out-of-band members loading state, whether loading is needed or not.\n * Note that loading might be in progress and hence isn't needed.\n * @return {bool} whether or not the members of this room need to be loaded\n */\nRoomState.prototype.needsOutOfBandMembers = function () {\n return this._oobMemberFlags.status === OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Mark this room state as waiting for out-of-band members,\n * ensuring it doesn't ask for them to be requested again\n * through needsOutOfBandMembers\n */\nRoomState.prototype.markOutOfBandMembersStarted = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_NOTSTARTED) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_INPROGRESS;\n};\n\n/**\n * Mark this room state as having failed to fetch out-of-band members\n */\nRoomState.prototype.markOutOfBandMembersFailed = function () {\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Clears the loaded out-of-band members\n */\nRoomState.prototype.clearOutOfBandMembers = function () {\n var _this2 = this;\n\n var count = 0;\n (0, _keys2.default)(this.members).forEach(function (userId) {\n var member = _this2.members[userId];\n if (member.isOutOfBand()) {\n ++count;\n delete _this2.members[userId];\n }\n });\n console.log(\"LL: RoomState removed \" + count + \" members...\");\n this._oobMemberFlags.status = OOB_STATUS_NOTSTARTED;\n};\n\n/**\n * Sets the loaded out-of-band members.\n * @param {MatrixEvent[]} stateEvents array of membership state events\n */\nRoomState.prototype.setOutOfBandMembers = function (stateEvents) {\n var _this3 = this;\n\n console.log(\"LL: RoomState about to set \" + stateEvents.length + \" OOB members ...\");\n if (this._oobMemberFlags.status !== OOB_STATUS_INPROGRESS) {\n return;\n }\n console.log(\"LL: RoomState put in OOB_STATUS_FINISHED state ...\");\n this._oobMemberFlags.status = OOB_STATUS_FINISHED;\n stateEvents.forEach(function (e) {\n return _this3._setOutOfBandMember(e);\n });\n};\n\n/**\n * Sets a single out of band member, used by both setOutOfBandMembers and clone\n * @param {MatrixEvent} stateEvent membership state event\n */\nRoomState.prototype._setOutOfBandMember = function (stateEvent) {\n if (stateEvent.getType() !== 'm.room.member') {\n return;\n }\n var userId = stateEvent.getStateKey();\n var existingMember = this.getMember(userId);\n // never replace members received as part of the sync\n if (existingMember && !existingMember.isOutOfBand()) {\n return;\n }\n\n var member = this._getOrCreateMember(userId, stateEvent);\n member.setMembershipEvent(stateEvent, this);\n // needed to know which members need to be stored seperately\n // as they are not part of the sync accumulator\n // this is cleared by setMembershipEvent so when it's updated through /sync\n member.markOutOfBand();\n\n _updateDisplayNameCache(this, member.userId, member.name);\n\n this._setStateEvent(stateEvent);\n this._updateMember(member);\n this.emit(\"RoomState.members\", stateEvent, this, member);\n};\n\n/**\n * Set the current typing event for this room.\n * @param {MatrixEvent} event The typing event\n */\nRoomState.prototype.setTypingEvent = function (event) {\n utils.forEach(utils.values(this.members), function (member) {\n member.setTypingEvent(event);\n });\n};\n\n/**\n * Get the m.room.member event which has the given third party invite token.\n *\n * @param {string} token The token\n * @return {?MatrixEvent} The m.room.member event or null\n */\nRoomState.prototype.getInviteForThreePidToken = function (token) {\n return this._tokenToInvite[token] || null;\n};\n\n/**\n * Update the last modified time to the current time.\n */\nRoomState.prototype._updateModifiedTime = function () {\n this._modified = Date.now();\n};\n\n/**\n * Get the timestamp when this room state was last updated. This timestamp is\n * updated when this object has received new state events.\n * @return {number} The timestamp\n */\nRoomState.prototype.getLastModifiedTime = function () {\n return this._modified;\n};\n\n/**\n * Get user IDs with the specified display name.\n * @param {string} displayName The display name to get user IDs from.\n * @return {string[]} An array of user IDs or an empty array.\n */\nRoomState.prototype.getUserIdsWithDisplayName = function (displayName) {\n return this._displayNameToUserIds[displayName] || [];\n};\n\n/**\n * Returns true if userId is in room, event is not redacted and either sender of\n * mxEvent or has power level sufficient to redact events other than their own.\n * @param {MatrixEvent} mxEvent The event to test permission for\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given used ID can redact given event\n */\nRoomState.prototype.maySendRedactionForEvent = function (mxEvent, userId) {\n var member = this.getMember(userId);\n if (!member || member.membership === 'leave') return false;\n\n if (mxEvent.status || mxEvent.isRedacted()) return false;\n\n // The user may have been the sender, but they can't redact their own message\n // if redactions are blocked.\n var canRedact = this.maySendEvent(\"m.room.redaction\", userId);\n if (mxEvent.getSender() === userId) return canRedact;\n\n return this._hasSufficientPowerLevelFor('redact', member.powerLevel);\n};\n\n/**\n * Returns true if the given power level is sufficient for action\n * @param {string} action The type of power level to check\n * @param {number} powerLevel The power level of the member\n * @return {boolean} true if the given power level is sufficient\n */\nRoomState.prototype._hasSufficientPowerLevelFor = function (action, powerLevel) {\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var powerLevels = {};\n if (powerLevelsEvent) {\n powerLevels = powerLevelsEvent.getContent();\n }\n\n var requiredLevel = 50;\n if (utils.isNumber(powerLevels[action])) {\n requiredLevel = powerLevels[action];\n }\n\n return powerLevel >= requiredLevel;\n};\n\n/**\n * Short-form for maySendEvent('m.room.message', userId)\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * message events into the given room.\n */\nRoomState.prototype.maySendMessage = function (userId) {\n return this._maySendEventOfType('m.room.message', userId, false);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendEvent = function (eventType, userId) {\n return this._maySendEventOfType(eventType, userId, false);\n};\n\n/**\n * Returns true if the given MatrixClient has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {MatrixClient} cli The client to test permission for\n * @return {boolean} true if the given client should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.mayClientSendStateEvent = function (stateEventType, cli) {\n if (cli.isGuest()) {\n return false;\n }\n return this.maySendStateEvent(stateEventType, cli.credentials.userId);\n};\n\n/**\n * Returns true if the given user ID has permission to send a state\n * event of type `stateEventType` into this room.\n * @param {string} stateEventType The type of state events to test\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of state event into this room,\n * according to the room's state.\n */\nRoomState.prototype.maySendStateEvent = function (stateEventType, userId) {\n return this._maySendEventOfType(stateEventType, userId, true);\n};\n\n/**\n * Returns true if the given user ID has permission to send a normal or state\n * event of type `eventType` into this room.\n * @param {string} eventType The type of event to test\n * @param {string} userId The user ID of the user to test permission for\n * @param {boolean} state If true, tests if the user may send a state\n event of this type. Otherwise tests whether\n they may send a regular event.\n * @return {boolean} true if the given user ID should be permitted to send\n * the given type of event into this room,\n * according to the room's state.\n */\nRoomState.prototype._maySendEventOfType = function (eventType, userId, state) {\n var power_levels_event = this.getStateEvents('m.room.power_levels', '');\n\n var power_levels = void 0;\n var events_levels = {};\n\n var state_default = 0;\n var events_default = 0;\n var powerLevel = 0;\n if (power_levels_event) {\n power_levels = power_levels_event.getContent();\n events_levels = power_levels.events || {};\n\n if ((0, _isFinite2.default)(power_levels.state_default)) {\n state_default = power_levels.state_default;\n } else {\n state_default = 50;\n }\n\n var userPowerLevel = power_levels.users && power_levels.users[userId];\n if ((0, _isFinite2.default)(userPowerLevel)) {\n powerLevel = userPowerLevel;\n } else if ((0, _isFinite2.default)(power_levels.users_default)) {\n powerLevel = power_levels.users_default;\n }\n\n if ((0, _isFinite2.default)(power_levels.events_default)) {\n events_default = power_levels.events_default;\n }\n }\n\n var required_level = state ? state_default : events_default;\n if ((0, _isFinite2.default)(events_levels[eventType])) {\n required_level = events_levels[eventType];\n }\n return powerLevel >= required_level;\n};\n\n/**\n * Returns true if the given user ID has permission to trigger notification\n * of type `notifLevelKey`\n * @param {string} notifLevelKey The level of notification to test (eg. 'room')\n * @param {string} userId The user ID of the user to test permission for\n * @return {boolean} true if the given user ID has permission to trigger a\n * notification of this type.\n */\nRoomState.prototype.mayTriggerNotifOfType = function (notifLevelKey, userId) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n\n var powerLevelsEvent = this.getStateEvents('m.room.power_levels', '');\n\n var notifLevel = 50;\n if (powerLevelsEvent && powerLevelsEvent.getContent() && powerLevelsEvent.getContent().notifications && utils.isNumber(powerLevelsEvent.getContent().notifications[notifLevelKey])) {\n notifLevel = powerLevelsEvent.getContent().notifications[notifLevelKey];\n }\n\n return member.powerLevel >= notifLevel;\n};\n\n/**\n * The RoomState class.\n */\nmodule.exports = RoomState;\n\nfunction _updateThirdPartyTokenCache(roomState, memberEvent) {\n if (!memberEvent.getContent().third_party_invite) {\n return;\n }\n var token = (memberEvent.getContent().third_party_invite.signed || {}).token;\n if (!token) {\n return;\n }\n var threePidInvite = roomState.getStateEvents(\"m.room.third_party_invite\", token);\n if (!threePidInvite) {\n return;\n }\n roomState._tokenToInvite[token] = memberEvent;\n}\n\nfunction _updateDisplayNameCache(roomState, userId, displayName) {\n var oldName = roomState._userIdsToDisplayNames[userId];\n delete roomState._userIdsToDisplayNames[userId];\n if (oldName) {\n // Remove the old name from the cache.\n // We clobber the user_id > name lookup but the name -> [user_id] lookup\n // means we need to remove that user ID from that array rather than nuking\n // the lot.\n var strippedOldName = utils.removeHiddenChars(oldName);\n\n var existingUserIds = roomState._displayNameToUserIds[strippedOldName];\n if (existingUserIds) {\n // remove this user ID from this array\n var filteredUserIDs = existingUserIds.filter(function (id) {\n return id !== userId;\n });\n roomState._displayNameToUserIds[strippedOldName] = filteredUserIDs;\n }\n }\n\n roomState._userIdsToDisplayNames[userId] = displayName;\n\n var strippedDisplayname = displayName && utils.removeHiddenChars(displayName);\n // an empty stripped displayname (undefined/'') will be set to MXID in room-member.js\n if (strippedDisplayname) {\n if (!roomState._displayNameToUserIds[strippedDisplayname]) {\n roomState._displayNameToUserIds[strippedDisplayname] = [];\n }\n roomState._displayNameToUserIds[strippedDisplayname].push(userId);\n }\n}\n\n/**\n * Fires whenever the event dictionary in room state is updated.\n * @event module:client~MatrixClient#\"RoomState.events\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.events dictionary\n * was updated.\n * @example\n * matrixClient.on(\"RoomState.events\", function(event, state){\n * var newStateEvent = event;\n * });\n */\n\n/**\n * Fires whenever a member in the members dictionary is updated in any way.\n * @event module:client~MatrixClient#\"RoomState.members\"\n * @param {MatrixEvent} event The matrix event which caused this event to fire.\n * @param {RoomState} state The room state whose RoomState.members dictionary\n * was updated.\n * @param {RoomMember} member The room member that was updated.\n * @example\n * matrixClient.on(\"RoomState.members\", function(event, state, member){\n * var newMembershipState = member.membership;\n * });\n */\n\n/**\n* Fires whenever a member is added to the members dictionary. The RoomMember\n* will not be fully populated yet (e.g. no membership state) but will already\n* be available in the members dictionary.\n* @event module:client~MatrixClient#\"RoomState.newMember\"\n* @param {MatrixEvent} event The matrix event which caused this event to fire.\n* @param {RoomState} state The room state whose RoomState.members dictionary\n* was updated with a new entry.\n* @param {RoomMember} member The room member that was added.\n* @example\n* matrixClient.on(\"RoomState.newMember\", function(event, state, member){\n* // add event listeners on 'member'\n* });\n*/\n//# sourceMappingURL=room-state.js.map","module.exports = { \"default\": require(\"core-js/library/fn/number/is-finite\"), __esModule: true };","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room\n */\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _isInteger = require(\"babel-runtime/core-js/number/is-integer\");\n\nvar _isInteger2 = _interopRequireDefault(_isInteger);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _ReEmitter = require(\"../ReEmitter\");\n\nvar _ReEmitter2 = _interopRequireDefault(_ReEmitter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar EventStatus = require(\"./event\").EventStatus;\nvar RoomSummary = require(\"./room-summary\");\nvar RoomMember = require(\"./room-member\");\nvar MatrixEvent = require(\"./event\").MatrixEvent;\nvar utils = require(\"../utils\");\nvar ContentRepo = require(\"../content-repo\");\nvar EventTimeline = require(\"./event-timeline\");\nvar EventTimelineSet = require(\"./event-timeline-set\");\n\nvar LATEST_ROOM_VERSION = '1';\n\nfunction synthesizeReceipt(userId, event, receiptType) {\n // console.log(\"synthesizing receipt for \"+event.getId());\n // This is really ugly because JS has no way to express an object literal\n // where the name of a key comes from an expression\n var fakeReceipt = {\n content: {},\n type: \"m.receipt\",\n room_id: event.getRoomId()\n };\n fakeReceipt.content[event.getId()] = {};\n fakeReceipt.content[event.getId()][receiptType] = {};\n fakeReceipt.content[event.getId()][receiptType][userId] = {\n ts: event.getTs()\n };\n return new MatrixEvent(fakeReceipt);\n}\n\n/**\n * Construct a new Room.\n *\n * <p>For a room, we store an ordered sequence of timelines, which may or may not\n * be continuous. Each timeline lists a series of events, as well as tracking\n * the room state at the start and the end of the timeline. It also tracks\n * forward and backward pagination tokens, as well as containing links to the\n * next timeline in the sequence.\n *\n * <p>There is one special timeline - the 'live' timeline, which represents the\n * timeline to which events are being added in real-time as they are received\n * from the /sync API. Note that you should not retain references to this\n * timeline - even if it is the current timeline right now, it may not remain\n * so if the server gives us a timeline gap in /sync.\n *\n * <p>In order that we can find events from their ids later, we also maintain a\n * map from event_id to timeline and index.\n *\n * @constructor\n * @alias module:models/room\n * @param {string} roomId Required. The ID of this room.\n * @param {MatrixClient} client Required. The client, used to lazy load members.\n * @param {string} myUserId Required. The ID of the syncing user.\n * @param {Object=} opts Configuration options\n * @param {*} opts.storageToken Optional. The token which a data store can use\n * to remember the state of the room. What this means is dependent on the store\n * implementation.\n *\n * @param {String=} opts.pendingEventOrdering Controls where pending messages\n * appear in a room's timeline. If \"<b>chronological</b>\", messages will appear\n * in the timeline when the call to <code>sendEvent</code> was made. If\n * \"<b>detached</b>\", pending messages will appear in a separate list,\n * accessbile via {@link module:models/room#getPendingEvents}. Default:\n * \"chronological\".\n *\n * @param {boolean} [opts.timelineSupport = false] Set to true to enable improved\n * timeline support.\n *\n * @prop {string} roomId The ID of this room.\n * @prop {string} name The human-readable display name for this room.\n * @prop {Array<MatrixEvent>} timeline The live event timeline for this room,\n * with the oldest event at index 0. Present for backwards compatibility -\n * prefer getLiveTimeline().getEvents().\n * @prop {object} tags Dict of room tags; the keys are the tag name and the values\n * are any metadata associated with the tag - e.g. { \"fav\" : { order: 1 } }\n * @prop {object} accountData Dict of per-room account_data events; the keys are the\n * event type and the values are the events.\n * @prop {RoomState} oldState The state of the room at the time of the oldest\n * event in the live timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.BACKWARDS).\n * @prop {RoomState} currentState The state of the room at the time of the\n * newest event in the timeline. Present for backwards compatibility -\n * prefer getLiveTimeline().getState(EventTimeline.FORWARDS).\n * @prop {RoomSummary} summary The room summary.\n * @prop {*} storageToken A token which a data store can use to remember\n * the state of the room.\n */\nfunction Room(roomId, client, myUserId, opts) {\n opts = opts || {};\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n\n this.reEmitter = new _ReEmitter2.default(this);\n\n if ([\"chronological\", \"detached\"].indexOf(opts.pendingEventOrdering) === -1) {\n throw new Error(\"opts.pendingEventOrdering MUST be either 'chronological' or \" + \"'detached'. Got: '\" + opts.pendingEventOrdering + \"'\");\n }\n\n this.myUserId = myUserId;\n this.roomId = roomId;\n this.name = roomId;\n this.tags = {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n };\n this.accountData = {\n // $eventType: $event\n };\n this.summary = null;\n this.storageToken = opts.storageToken;\n this._opts = opts;\n this._txnToEvent = {}; // Pending in-flight requests { string: MatrixEvent }\n // receipts should clobber based on receipt_type and user_id pairs hence\n // the form of this structure. This is sub-optimal for the exposed APIs\n // which pass in an event ID and get back some receipts, so we also store\n // a pre-cached list for this purpose.\n this._receipts = {\n // receipt_type: {\n // user_id: {\n // eventId: <event_id>,\n // data: <receipt_data>\n // }\n // }\n };\n this._receiptCacheByEventId = {\n // $event_id: [{\n // type: $type,\n // userId: $user_id,\n // data: <receipt data>\n // }]\n };\n // only receipts that came from the server, not synthesized ones\n this._realReceipts = {};\n\n this._notificationCounts = {};\n\n // all our per-room timeline sets. the first one is the unfiltered ones;\n // the subsequent ones are the filtered ones in no particular order.\n this._timelineSets = [new EventTimelineSet(this, opts)];\n this.reEmitter.reEmit(this.getUnfilteredTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n\n this._fixUpLegacyTimelineFields();\n\n // any filtered timeline sets we're maintaining for this room\n this._filteredTimelineSets = {\n // filter_id: timelineSet\n };\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n this._pendingEventList = [];\n }\n\n // read by megolm; boolean value - null indicates \"use global value\"\n this._blacklistUnverifiedDevices = null;\n this._selfMembership = null;\n this._summaryHeroes = null;\n // awaited by getEncryptionTargetMembers while room members are loading\n\n this._client = client;\n if (!this._opts.lazyLoadMembers) {\n this._membersPromise = _promise2.default.resolve();\n } else {\n this._membersPromise = null;\n }\n}\n\nutils.inherits(Room, EventEmitter);\n\n/**\n * Gets the version of the room\n * @returns {string} The version of the room, or null if it could not be determined\n */\nRoom.prototype.getVersion = function () {\n var createEvent = this.currentState.getStateEvents(\"m.room.create\", \"\");\n if (!createEvent) {\n console.warn(\"Room \" + this.room_id + \" does not have an m.room.create event\");\n return '1';\n }\n var ver = createEvent.getContent()['room_version'];\n if (ver === undefined) return '1';\n return ver;\n};\n\n/**\n * Determines whether this room needs to be upgraded to a new version\n * @returns {string?} What version the room should be upgraded to, or null if\n * the room does not require upgrading at this time.\n */\nRoom.prototype.shouldUpgradeToVersion = function () {\n // This almost certainly won't be the way this actually works - this\n // is essentially a stub method.\n if (this.getVersion() === LATEST_ROOM_VERSION) return null;\n return LATEST_ROOM_VERSION;\n};\n\n/**\n * Determines whether the given user is permitted to perform a room upgrade\n * @param {String} userId The ID of the user to test against\n * @returns {bool} True if the given user is permitted to upgrade the room\n */\nRoom.prototype.userMayUpgradeRoom = function (userId) {\n return this.currentState.maySendStateEvent(\"m.room.tombstone\", userId);\n};\n\n/**\n * Get the list of pending sent events for this room\n *\n * @return {module:models/event.MatrixEvent[]} A list of the sent events\n * waiting for remote echo.\n *\n * @throws If <code>opts.pendingEventOrdering</code> was not 'detached'\n */\nRoom.prototype.getPendingEvents = function () {\n if (this._opts.pendingEventOrdering !== \"detached\") {\n throw new Error(\"Cannot call getPendingEventList with pendingEventOrdering == \" + this._opts.pendingEventOrdering);\n }\n\n return this._pendingEventList;\n};\n\n/**\n * Get the live unfiltered timeline for this room.\n *\n * @return {module:models/event-timeline~EventTimeline} live timeline\n */\nRoom.prototype.getLiveTimeline = function () {\n return this.getUnfilteredTimelineSet().getLiveTimeline();\n};\n\n/**\n * @param {string} myUserId the user id for the logged in member\n * @return {string} the membership type (join | leave | invite) for the logged in user\n */\nRoom.prototype.getMyMembership = function () {\n return this._selfMembership;\n};\n\n/**\n * If this room is a DM we're invited to,\n * try to find out who invited us\n * @return {string} user id of the inviter\n */\nRoom.prototype.getDMInviter = function () {\n if (this.myUserId) {\n var me = this.getMember(this.myUserId);\n if (me) {\n return me.getDMInviter();\n }\n }\n if (this._selfMembership === \"invite\") {\n // fall back to summary information\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount == 2 && this._summaryHeroes.length) {\n return this._summaryHeroes[0];\n }\n }\n};\n\n/**\n * Assuming this room is a DM room, tries to guess with which user.\n * @return {string} user id of the other member (could be syncing user)\n */\nRoom.prototype.guessDMUserId = function () {\n var _this = this;\n\n var me = this.getMember(this.myUserId);\n if (me) {\n var inviterId = me.getDMInviter();\n if (inviterId) {\n return inviterId;\n }\n }\n // remember, we're assuming this room is a DM,\n // so returning the first member we find should be fine\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n return this._summaryHeroes[0];\n }\n var members = this.currentState.getMembers();\n var anyMember = members.find(function (m) {\n return m.userId !== _this.myUserId;\n });\n if (anyMember) {\n return anyMember.userId;\n }\n // it really seems like I'm the only user in the room\n // so I probably created a room with just me in it\n // and marked it as a DM. Ok then\n return this.myUserId;\n};\n\nRoom.prototype.getAvatarFallbackMember = function () {\n var _this2 = this;\n\n var memberCount = this.getInvitedAndJoinedMemberCount();\n if (memberCount > 2) {\n return;\n }\n var hasHeroes = Array.isArray(this._summaryHeroes) && this._summaryHeroes.length;\n if (hasHeroes) {\n var availableMember = this._summaryHeroes.map(function (userId) {\n return _this2.getMember(userId);\n }).find(function (member) {\n return !!member;\n });\n if (availableMember) {\n return availableMember;\n }\n }\n var members = this.currentState.getMembers();\n // could be different than memberCount\n // as this includes left members\n if (members.length <= 2) {\n var _availableMember = members.find(function (m) {\n return m.userId !== _this2.myUserId;\n });\n if (_availableMember) {\n return _availableMember;\n }\n }\n // if all else fails, try falling back to a user,\n // and create a one-off member for it\n if (hasHeroes) {\n var availableUser = this._summaryHeroes.map(function (userId) {\n return _this2._client.getUser(userId);\n }).find(function (user) {\n return !!user;\n });\n if (availableUser) {\n var member = new RoomMember(this.roomId, availableUser.userId);\n member.user = availableUser;\n return member;\n }\n }\n};\n\n/**\n * Sets the membership this room was received as during sync\n * @param {string} membership join | leave | invite\n */\nRoom.prototype.updateMyMembership = function (membership) {\n var prevMembership = this._selfMembership;\n this._selfMembership = membership;\n if (prevMembership !== membership) {\n if (membership === \"leave\") {\n this._cleanupAfterLeaving();\n }\n this.emit(\"Room.myMembership\", this, membership, prevMembership);\n }\n};\n\nRoom.prototype._loadMembersFromServer = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var lastSyncToken, queryString, path, http, response;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n lastSyncToken = this._client.store.getSyncToken();\n queryString = utils.encodeParams({\n not_membership: \"leave\",\n at: lastSyncToken\n });\n path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: this.roomId });\n http = this._client._http;\n _context.next = 6;\n return (0, _bluebird.resolve)(http.authedRequest(undefined, \"GET\", path));\n\n case 6:\n response = _context.sent;\n return _context.abrupt(\"return\", response.chunk);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\nRoom.prototype._loadMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var fromServer, rawMembersEvents, memberEvents;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // were the members loaded from the server?\n fromServer = false;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._client.store.getOutOfBandMembers(this.roomId));\n\n case 3:\n rawMembersEvents = _context2.sent;\n\n if (!(rawMembersEvents === null)) {\n _context2.next = 10;\n break;\n }\n\n fromServer = true;\n _context2.next = 8;\n return (0, _bluebird.resolve)(this._loadMembersFromServer());\n\n case 8:\n rawMembersEvents = _context2.sent;\n\n console.log(\"LL: got \" + rawMembersEvents.length + \" \" + (\"members from server for room \" + this.roomId));\n\n case 10:\n memberEvents = rawMembersEvents.map(this._client.getEventMapper());\n return _context2.abrupt(\"return\", { memberEvents: memberEvents, fromServer: fromServer });\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\n/**\n * Preloads the member list in case lazy loading\n * of memberships is in use. Can be called multiple times,\n * it will only preload once.\n * @return {Promise} when preloading is done and\n * accessing the members on the room will take\n * all members in the room into account\n */\nRoom.prototype.loadMembersIfNeeded = function () {\n var _this3 = this;\n\n if (this._membersPromise) {\n return this._membersPromise;\n }\n\n // mark the state so that incoming messages while\n // the request is in flight get marked as superseding\n // the OOB members\n this.currentState.markOutOfBandMembersStarted();\n\n var inMemoryUpdate = this._loadMembers().then(function (result) {\n _this3.currentState.setOutOfBandMembers(result.memberEvents);\n // now the members are loaded, start to track the e2e devices if needed\n if (_this3._client.isRoomEncrypted(_this3.roomId)) {\n _this3._client._crypto.trackRoomDevices(_this3.roomId);\n }\n return result.fromServer;\n }).catch(function (err) {\n // allow retries on fail\n _this3._membersPromise = null;\n _this3.currentState.markOutOfBandMembersFailed();\n throw err;\n });\n // update members in storage, but don't wait for it\n inMemoryUpdate.then(function (fromServer) {\n if (fromServer) {\n var oobMembers = _this3.currentState.getMembers().filter(function (m) {\n return m.isOutOfBand();\n }).map(function (m) {\n return m.events.member.event;\n });\n console.log(\"LL: telling store to write \" + oobMembers.length + (\" members for room \" + _this3.roomId));\n var store = _this3._client.store;\n return store.setOutOfBandMembers(_this3.roomId, oobMembers)\n // swallow any IDB error as we don't want to fail\n // because of this\n .catch(function (err) {\n console.log(\"LL: storing OOB room members failed, oh well\", err);\n });\n }\n }).catch(function (err) {\n // as this is not awaited anywhere,\n // at least show the error in the console\n console.error(err);\n });\n\n this._membersPromise = inMemoryUpdate;\n\n return this._membersPromise;\n};\n\n/**\n * Removes the lazily loaded members from storage if needed\n */\nRoom.prototype.clearLoadedMembersIfNeeded = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(this._opts.lazyLoadMembers && this._membersPromise)) {\n _context3.next = 7;\n break;\n }\n\n _context3.next = 3;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 3:\n _context3.next = 5;\n return (0, _bluebird.resolve)(this._client.store.clearOutOfBandMembers(this.roomId));\n\n case 5:\n this.currentState.clearOutOfBandMembers();\n this._membersPromise = null;\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n}));\n\n/**\n * called when sync receives this room in the leave section\n * to do cleanup after leaving a room. Possibly called multiple times.\n */\nRoom.prototype._cleanupAfterLeaving = function () {\n var _this4 = this;\n\n this.clearLoadedMembersIfNeeded().catch(function (err) {\n console.error(\"error after clearing loaded members from \" + (\"room \" + _this4.roomId + \" after leaving\"));\n console.dir(err);\n });\n};\n\n/**\n * Reset the live timeline of all timelineSets, and start new ones.\n *\n * <p>This is used when /sync returns a 'limited' timeline.\n *\n * @param {string=} backPaginationToken token for back-paginating the new timeline\n * @param {string=} forwardPaginationToken token for forward-paginating the old live timeline,\n * if absent or null, all timelines are reset, removing old ones (including the previous live\n * timeline which would otherwise be unable to paginate forwards without this token).\n * Removing just the old live timeline whilst preserving previous ones is not supported.\n */\nRoom.prototype.resetLiveTimeline = function (backPaginationToken, forwardPaginationToken) {\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].resetLiveTimeline(backPaginationToken, forwardPaginationToken);\n }\n\n this._fixUpLegacyTimelineFields();\n};\n\n/**\n * Fix up this.timeline, this.oldState and this.currentState\n *\n * @private\n */\nRoom.prototype._fixUpLegacyTimelineFields = function () {\n // maintain this.timeline as a reference to the live timeline,\n // and this.oldState and this.currentState as references to the\n // state at the start and end of that timeline. These are more\n // for backwards-compatibility than anything else.\n this.timeline = this.getLiveTimeline().getEvents();\n this.oldState = this.getLiveTimeline().getState(EventTimeline.BACKWARDS);\n this.currentState = this.getLiveTimeline().getState(EventTimeline.FORWARDS);\n};\n\n/**\n * Return the timeline sets for this room.\n * @return {EventTimelineSet[]} array of timeline sets for this room\n */\nRoom.prototype.getTimelineSets = function () {\n return this._timelineSets;\n};\n\n/**\n * Helper to return the main unfiltered timeline set for this room\n * @return {EventTimelineSet} room's unfiltered timeline set\n */\nRoom.prototype.getUnfilteredTimelineSet = function () {\n return this._timelineSets[0];\n};\n\n/**\n * Get the timeline which contains the given event from the unfiltered set, if any\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event-timeline~EventTimeline} timeline containing\n * the given event, or null if unknown\n */\nRoom.prototype.getTimelineForEvent = function (eventId) {\n return this.getUnfilteredTimelineSet().getTimelineForEvent(eventId);\n};\n\n/**\n * Add a new timeline to this room's unfiltered timeline set\n *\n * @return {module:models/event-timeline~EventTimeline} newly-created timeline\n */\nRoom.prototype.addTimeline = function () {\n return this.getUnfilteredTimelineSet().addTimeline();\n};\n\n/**\n * Get an event which is stored in our unfiltered timeline set\n *\n * @param {string} eventId event ID to look for\n * @return {?module:models/event.MatrixEvent} the given event, or undefined if unknown\n */\nRoom.prototype.findEventById = function (eventId) {\n return this.getUnfilteredTimelineSet().findEventById(eventId);\n};\n\n/**\n * Get one of the notification counts for this room\n * @param {String} type The type of notification count to get. default: 'total'\n * @return {Number} The notification count, or undefined if there is no count\n * for this type.\n */\nRoom.prototype.getUnreadNotificationCount = function (type) {\n type = type || 'total';\n return this._notificationCounts[type];\n};\n\n/**\n * Set one of the notification counts for this room\n * @param {String} type The type of notification count to set.\n * @param {Number} count The new count\n */\nRoom.prototype.setUnreadNotificationCount = function (type, count) {\n this._notificationCounts[type] = count;\n};\n\nRoom.prototype.setSummary = function (summary) {\n var _this5 = this;\n\n var heroes = summary[\"m.heroes\"];\n var joinedCount = summary[\"m.joined_member_count\"];\n var invitedCount = summary[\"m.invited_member_count\"];\n if ((0, _isInteger2.default)(joinedCount)) {\n this.currentState.setJoinedMemberCount(joinedCount);\n }\n if ((0, _isInteger2.default)(invitedCount)) {\n this.currentState.setInvitedMemberCount(invitedCount);\n }\n if (Array.isArray(heroes)) {\n // be cautious about trusting server values,\n // and make sure heroes doesn't contain our own id\n // just to be sure\n this._summaryHeroes = heroes.filter(function (userId) {\n return userId !== _this5.myUserId;\n });\n }\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @param {Boolean} value true to blacklist unverified devices, null\n * to use the global value for this room.\n */\nRoom.prototype.setBlacklistUnverifiedDevices = function (value) {\n this._blacklistUnverifiedDevices = value;\n};\n\n/**\n * Whether to send encrypted messages to devices within this room.\n * @return {Boolean} true if blacklisting unverified devices, null\n * if the global value should be used for this room.\n */\nRoom.prototype.getBlacklistUnverifiedDevices = function () {\n return this._blacklistUnverifiedDevices;\n};\n\n/**\n * Get the avatar URL for a room if one was set.\n * @param {String} baseUrl The homeserver base URL. See\n * {@link module:client~MatrixClient#getHomeserverUrl}.\n * @param {Number} width The desired width of the thumbnail.\n * @param {Number} height The desired height of the thumbnail.\n * @param {string} resizeMethod The thumbnail resize method to use, either\n * \"crop\" or \"scale\".\n * @param {boolean} allowDefault True to allow an identicon for this room if an\n * avatar URL wasn't explicitly set. Default: true.\n * @return {?string} the avatar URL or null.\n */\nRoom.prototype.getAvatarUrl = function (baseUrl, width, height, resizeMethod, allowDefault) {\n var roomAvatarEvent = this.currentState.getStateEvents(\"m.room.avatar\", \"\");\n if (allowDefault === undefined) {\n allowDefault = true;\n }\n if (!roomAvatarEvent && !allowDefault) {\n return null;\n }\n\n var mainUrl = roomAvatarEvent ? roomAvatarEvent.getContent().url : null;\n if (mainUrl) {\n return ContentRepo.getHttpUriForMxc(baseUrl, mainUrl, width, height, resizeMethod);\n } else if (allowDefault) {\n return ContentRepo.getIdenticonUri(baseUrl, this.roomId, width, height);\n }\n\n return null;\n};\n\n/**\n * Get the aliases this room has according to the room's state\n * The aliases returned by this function may not necessarily\n * still point to this room.\n * @return {array} The room's alias as an array of strings\n */\nRoom.prototype.getAliases = function () {\n var alias_strings = [];\n\n var alias_events = this.currentState.getStateEvents(\"m.room.aliases\");\n if (alias_events) {\n for (var i = 0; i < alias_events.length; ++i) {\n var alias_event = alias_events[i];\n if (utils.isArray(alias_event.getContent().aliases)) {\n Array.prototype.push.apply(alias_strings, alias_event.getContent().aliases);\n }\n }\n }\n return alias_strings;\n};\n\n/**\n * Get this room's canonical alias\n * The alias returned by this function may not necessarily\n * still point to this room.\n * @return {?string} The room's canonical alias, or null if there is none\n */\nRoom.prototype.getCanonicalAlias = function () {\n var canonicalAlias = this.currentState.getStateEvents(\"m.room.canonical_alias\", \"\");\n if (canonicalAlias) {\n return canonicalAlias.getContent().alias;\n }\n return null;\n};\n\n/**\n * Add events to a timeline\n *\n * <p>Will fire \"Room.timeline\" for each event added.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {boolean} toStartOfTimeline True to add these events to the start\n * (oldest) instead of the end (newest) of the timeline. If true, the oldest\n * event will be the <b>last</b> element of 'events'.\n *\n * @param {module:models/event-timeline~EventTimeline} timeline timeline to\n * add events to.\n *\n * @param {string=} paginationToken token for the next batch of events\n *\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n *\n */\nRoom.prototype.addEventsToTimeline = function (events, toStartOfTimeline, timeline, paginationToken) {\n timeline.getTimelineSet().addEventsToTimeline(events, toStartOfTimeline, timeline, paginationToken);\n};\n\n/**\n * Get a member from the current room state.\n * @param {string} userId The user ID of the member.\n * @return {RoomMember} The member or <code>null</code>.\n */\nRoom.prototype.getMember = function (userId) {\n return this.currentState.getMember(userId);\n};\n\n/**\n * Get a list of members whose membership state is \"join\".\n * @return {RoomMember[]} A list of currently joined members.\n */\nRoom.prototype.getJoinedMembers = function () {\n return this.getMembersWithMembership(\"join\");\n};\n\n/**\n * Returns the number of joined members in this room\n * This method caches the result.\n * This is a wrapper around the method of the same name in roomState, returning\n * its result for the room's current state.\n * @return {integer} The number of members in this room whose membership is 'join'\n */\nRoom.prototype.getJoinedMemberCount = function () {\n return this.currentState.getJoinedMemberCount();\n};\n\n/**\n * Returns the number of invited members in this room\n * @return {integer} The number of members in this room whose membership is 'invite'\n */\nRoom.prototype.getInvitedMemberCount = function () {\n return this.currentState.getInvitedMemberCount();\n};\n\n/**\n * Returns the number of invited + joined members in this room\n * @return {integer} The number of members in this room whose membership is 'invite' or 'join'\n */\nRoom.prototype.getInvitedAndJoinedMemberCount = function () {\n return this.getInvitedMemberCount() + this.getJoinedMemberCount();\n};\n\n/**\n * Get a list of members with given membership state.\n * @param {string} membership The membership state.\n * @return {RoomMember[]} A list of members with the given membership state.\n */\nRoom.prototype.getMembersWithMembership = function (membership) {\n return utils.filter(this.currentState.getMembers(), function (m) {\n return m.membership === membership;\n });\n};\n\n/**\n * Get a list of members we should be encrypting for in this room\n * @return {Promise<RoomMember[]>} A list of members who\n * we should encrypt messages for in this room.\n */\nRoom.prototype.getEncryptionTargetMembers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var members;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _bluebird.resolve)(this.loadMembersIfNeeded());\n\n case 2:\n members = this.getMembersWithMembership(\"join\");\n\n if (this.shouldEncryptForInvitedMembers()) {\n members = members.concat(this.getMembersWithMembership(\"invite\"));\n }\n return _context4.abrupt(\"return\", members);\n\n case 5:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n}));\n\n/**\n * Determine whether we should encrypt messages for invited users in this room\n * @return {boolean} if we should encrypt messages for invited users\n */\nRoom.prototype.shouldEncryptForInvitedMembers = function () {\n var ev = this.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n return ev && ev.getContent() && ev.getContent().history_visibility !== \"joined\";\n};\n\n/**\n * Get the default room name (i.e. what a given user would see if the\n * room had no m.room.name)\n * @param {string} userId The userId from whose perspective we want\n * to calculate the default name\n * @return {string} The default room name\n */\nRoom.prototype.getDefaultRoomName = function (userId) {\n return calculateRoomName(this, userId, true);\n};\n\n/**\n* Check if the given user_id has the given membership state.\n* @param {string} userId The user ID to check.\n* @param {string} membership The membership e.g. <code>'join'</code>\n* @return {boolean} True if this user_id has the given membership state.\n*/\nRoom.prototype.hasMembershipState = function (userId, membership) {\n var member = this.getMember(userId);\n if (!member) {\n return false;\n }\n return member.membership === membership;\n};\n\n/**\n * Add a timelineSet for this room with the given filter\n * @param {Filter} filter The filter to be applied to this timelineSet\n * @return {EventTimelineSet} The timelineSet\n */\nRoom.prototype.getOrCreateFilteredTimelineSet = function (filter) {\n if (this._filteredTimelineSets[filter.filterId]) {\n return this._filteredTimelineSets[filter.filterId];\n }\n var opts = (0, _assign2.default)({ filter: filter }, this._opts);\n var timelineSet = new EventTimelineSet(this, opts);\n this.reEmitter.reEmit(timelineSet, [\"Room.timeline\", \"Room.timelineReset\"]);\n this._filteredTimelineSets[filter.filterId] = timelineSet;\n this._timelineSets.push(timelineSet);\n\n // populate up the new timelineSet with filtered events from our live\n // unfiltered timeline.\n //\n // XXX: This is risky as our timeline\n // may have grown huge and so take a long time to filter.\n // see https://github.com/vector-im/vector-web/issues/2109\n\n var unfilteredLiveTimeline = this.getLiveTimeline();\n\n unfilteredLiveTimeline.getEvents().forEach(function (event) {\n timelineSet.addLiveEvent(event);\n });\n\n // find the earliest unfiltered timeline\n var timeline = unfilteredLiveTimeline;\n while (timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS)) {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.BACKWARDS);\n }\n\n timelineSet.getLiveTimeline().setPaginationToken(timeline.getPaginationToken(EventTimeline.BACKWARDS), EventTimeline.BACKWARDS);\n\n // alternatively, we could try to do something like this to try and re-paginate\n // in the filtered events from nothing, but Mark says it's an abuse of the API\n // to do so:\n //\n // timelineSet.resetLiveTimeline(\n // unfilteredLiveTimeline.getPaginationToken(EventTimeline.FORWARDS)\n // );\n\n return timelineSet;\n};\n\n/**\n * Forget the timelineSet for this room with the given filter\n *\n * @param {Filter} filter the filter whose timelineSet is to be forgotten\n */\nRoom.prototype.removeFilteredTimelineSet = function (filter) {\n var timelineSet = this._filteredTimelineSets[filter.filterId];\n delete this._filteredTimelineSets[filter.filterId];\n var i = this._timelineSets.indexOf(timelineSet);\n if (i > -1) {\n this._timelineSets.splice(i, 1);\n }\n};\n\n/**\n * Add an event to the end of this room's live timelines. Will fire\n * \"Room.timeline\".\n *\n * @param {MatrixEvent} event Event to be added\n * @param {string?} duplicateStrategy 'ignore' or 'replace'\n * @fires module:client~MatrixClient#event:\"Room.timeline\"\n * @private\n */\nRoom.prototype._addLiveEvent = function (event, duplicateStrategy) {\n var i = void 0;\n if (event.getType() === \"m.room.redaction\") {\n var redactId = event.event.redacts;\n\n // if we know about this event, redact its contents now.\n var redactedEvent = this.getUnfilteredTimelineSet().findEventById(redactId);\n if (redactedEvent) {\n redactedEvent.makeRedacted(event);\n this.emit(\"Room.redaction\", event, this);\n\n // TODO: we stash user displaynames (among other things) in\n // RoomMember objects which are then attached to other events\n // (in the sender and target fields). We should get those\n // RoomMember objects to update themselves when the events that\n // they are based on are changed.\n }\n\n // FIXME: apply redactions to notification list\n\n // NB: We continue to add the redaction event to the timeline so\n // clients can say \"so and so redacted an event\" if they wish to. Also\n // this may be needed to trigger an update.\n }\n\n if (event.getUnsigned().transaction_id) {\n var existingEvent = this._txnToEvent[event.getUnsigned().transaction_id];\n if (existingEvent) {\n // remote echo of an event we sent earlier\n this._handleRemoteEcho(event, existingEvent);\n return;\n }\n }\n\n // add to our timeline sets\n for (i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].addLiveEvent(event, duplicateStrategy);\n }\n\n // synthesize and inject implicit read receipts\n // Done after adding the event because otherwise the app would get a read receipt\n // pointing to an event that wasn't yet in the timeline\n // Don't synthesize RR for m.room.redaction as this causes the RR to go missing.\n if (event.sender && event.getType() !== \"m.room.redaction\") {\n this.addReceipt(synthesizeReceipt(event.sender.userId, event, \"m.read\"), true);\n\n // Any live events from a user could be taken as implicit\n // presence information: evidence that they are currently active.\n // ...except in a world where we use 'user.currentlyActive' to reduce\n // presence spam, this isn't very useful - we'll get a transition when\n // they are no longer currently active anyway. So don't bother to\n // reset the lastActiveAgo and lastPresenceTs from the RoomState's user.\n }\n};\n\n/**\n * Add a pending outgoing event to this room.\n *\n * <p>The event is added to either the pendingEventList, or the live timeline,\n * depending on the setting of opts.pendingEventOrdering.\n *\n * <p>This is an internal method, intended for use by MatrixClient.\n *\n * @param {module:models/event.MatrixEvent} event The event to add.\n *\n * @param {string} txnId Transaction id for this outgoing event\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n *\n * @throws if the event doesn't have status SENDING, or we aren't given a\n * unique transaction id.\n */\nRoom.prototype.addPendingEvent = function (event, txnId) {\n if (event.status !== EventStatus.SENDING) {\n throw new Error(\"addPendingEvent called on an event with status \" + event.status);\n }\n\n if (this._txnToEvent[txnId]) {\n throw new Error(\"addPendingEvent called on an event with known txnId \" + txnId);\n }\n\n // call setEventMetadata to set up event.sender etc\n // as event is shared over all timelineSets, we set up its metadata based\n // on the unfiltered timelineSet.\n EventTimeline.setEventMetadata(event, this.getLiveTimeline().getState(EventTimeline.FORWARDS), false);\n\n this._txnToEvent[txnId] = event;\n\n if (this._opts.pendingEventOrdering == \"detached\") {\n this._pendingEventList.push(event);\n } else {\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n if (timelineSet.getFilter()) {\n if (this._filter.filterRoomTimeline([event]).length) {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n } else {\n timelineSet.addEventToTimeline(event, timelineSet.getLiveTimeline(), false);\n }\n }\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, null, null);\n};\n\n/**\n * Deal with the echo of a message we sent.\n *\n * <p>We move the event to the live timeline if it isn't there already, and\n * update it.\n *\n * @param {module:models/event.MatrixEvent} remoteEvent The event received from\n * /sync\n * @param {module:models/event.MatrixEvent} localEvent The local echo, which\n * should be either in the _pendingEventList or the timeline.\n *\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n * @private\n */\nRoom.prototype._handleRemoteEcho = function (remoteEvent, localEvent) {\n var oldEventId = localEvent.getId();\n var newEventId = remoteEvent.getId();\n var oldStatus = localEvent.status;\n\n // no longer pending\n delete this._txnToEvent[remoteEvent.transaction_id];\n\n // if it's in the pending list, remove it\n if (this._pendingEventList) {\n utils.removeElement(this._pendingEventList, function (ev) {\n return ev.getId() == oldEventId;\n }, false);\n }\n\n // replace the event source (this will preserve the plaintext payload if\n // any, which is good, because we don't want to try decoding it again).\n localEvent.handleRemoteEcho(remoteEvent.event);\n\n for (var i = 0; i < this._timelineSets.length; i++) {\n var timelineSet = this._timelineSets[i];\n\n // if it's already in the timeline, update the timeline map. If it's not, add it.\n timelineSet.handleRemoteEcho(localEvent, oldEventId, newEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", localEvent, this, oldEventId, oldStatus);\n};\n\n/* a map from current event status to a list of allowed next statuses\n */\nvar ALLOWED_TRANSITIONS = {};\n\nALLOWED_TRANSITIONS[EventStatus.ENCRYPTING] = [EventStatus.SENDING, EventStatus.NOT_SENT];\n\nALLOWED_TRANSITIONS[EventStatus.SENDING] = [EventStatus.ENCRYPTING, EventStatus.QUEUED, EventStatus.NOT_SENT, EventStatus.SENT];\n\nALLOWED_TRANSITIONS[EventStatus.QUEUED] = [EventStatus.SENDING, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.SENT] = [];\n\nALLOWED_TRANSITIONS[EventStatus.NOT_SENT] = [EventStatus.SENDING, EventStatus.QUEUED, EventStatus.CANCELLED];\n\nALLOWED_TRANSITIONS[EventStatus.CANCELLED] = [];\n\n/**\n * Update the status / event id on a pending event, to reflect its transmission\n * progress.\n *\n * <p>This is an internal method.\n *\n * @param {MatrixEvent} event local echo event\n * @param {EventStatus} newStatus status to assign\n * @param {string} newEventId new event id to assign. Ignored unless\n * newStatus == EventStatus.SENT.\n * @fires module:client~MatrixClient#event:\"Room.localEchoUpdated\"\n */\nRoom.prototype.updatePendingEvent = function (event, newStatus, newEventId) {\n console.log(\"setting pendingEvent status to \" + newStatus + \" in \" + event.getRoomId());\n\n // if the message was sent, we expect an event id\n if (newStatus == EventStatus.SENT && !newEventId) {\n throw new Error(\"updatePendingEvent called with status=SENT, \" + \"but no new event id\");\n }\n\n // SENT races against /sync, so we have to special-case it.\n if (newStatus == EventStatus.SENT) {\n var timeline = this.getUnfilteredTimelineSet().eventIdToTimeline(newEventId);\n if (timeline) {\n // we've already received the event via the event stream.\n // nothing more to do here.\n return;\n }\n }\n\n var oldStatus = event.status;\n var oldEventId = event.getId();\n\n if (!oldStatus) {\n throw new Error(\"updatePendingEventStatus called on an event which is \" + \"not a local echo.\");\n }\n\n var allowed = ALLOWED_TRANSITIONS[oldStatus];\n if (!allowed || allowed.indexOf(newStatus) < 0) {\n throw new Error(\"Invalid EventStatus transition \" + oldStatus + \"->\" + newStatus);\n }\n\n event.status = newStatus;\n\n if (newStatus == EventStatus.SENT) {\n // update the event id\n event.event.event_id = newEventId;\n\n // if the event was already in the timeline (which will be the case if\n // opts.pendingEventOrdering==chronological), we need to update the\n // timeline map.\n for (var i = 0; i < this._timelineSets.length; i++) {\n this._timelineSets[i].replaceEventId(oldEventId, newEventId);\n }\n } else if (newStatus == EventStatus.CANCELLED) {\n // remove it from the pending event list, or the timeline.\n if (this._pendingEventList) {\n utils.removeElement(this._pendingEventList, function (ev) {\n return ev.getId() == oldEventId;\n }, false);\n }\n this.removeEvent(oldEventId);\n }\n\n this.emit(\"Room.localEchoUpdated\", event, this, event.getId(), oldStatus);\n};\n\n/**\n * Add some events to this room. This can include state events, message\n * events and typing notifications. These events are treated as \"live\" so\n * they will go to the end of the timeline.\n *\n * @param {MatrixEvent[]} events A list of events to add.\n *\n * @param {string} duplicateStrategy Optional. Applies to events in the\n * timeline only. If this is 'replace' then if a duplicate is encountered, the\n * event passed to this function will replace the existing event in the\n * timeline. If this is not specified, or is 'ignore', then the event passed to\n * this function will be ignored entirely, preserving the existing event in the\n * timeline. Events are identical based on their event ID <b>only</b>.\n *\n * @throws If <code>duplicateStrategy</code> is not falsey, 'replace' or 'ignore'.\n */\nRoom.prototype.addLiveEvents = function (events, duplicateStrategy) {\n var i = void 0;\n if (duplicateStrategy && [\"replace\", \"ignore\"].indexOf(duplicateStrategy) === -1) {\n throw new Error(\"duplicateStrategy MUST be either 'replace' or 'ignore'\");\n }\n\n // sanity check that the live timeline is still live\n for (i = 0; i < this._timelineSets.length; i++) {\n var liveTimeline = this._timelineSets[i].getLiveTimeline();\n if (liveTimeline.getPaginationToken(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - it has a pagination token \" + \"(\" + liveTimeline.getPaginationToken(EventTimeline.FORWARDS) + \")\");\n }\n if (liveTimeline.getNeighbouringTimeline(EventTimeline.FORWARDS)) {\n throw new Error(\"live timeline \" + i + \" is no longer live - \" + \"it has a neighbouring timeline\");\n }\n }\n\n for (i = 0; i < events.length; i++) {\n if (events[i].getType() === \"m.typing\") {\n this.currentState.setTypingEvent(events[i]);\n } else if (events[i].getType() === \"m.receipt\") {\n this.addReceipt(events[i]);\n }\n // N.B. account_data is added directly by /sync to avoid\n // having to maintain an event.isAccountData() here\n else {\n // TODO: We should have a filter to say \"only add state event\n // types X Y Z to the timeline\".\n this._addLiveEvent(events[i], duplicateStrategy);\n }\n }\n};\n\n/**\n * Removes events from this room.\n * @param {String[]} event_ids A list of event_ids to remove.\n */\nRoom.prototype.removeEvents = function (event_ids) {\n for (var i = 0; i < event_ids.length; ++i) {\n this.removeEvent(event_ids[i]);\n }\n};\n\n/**\n * Removes a single event from this room.\n *\n * @param {String} eventId The id of the event to remove\n *\n * @return {bool} true if the event was removed from any of the room's timeline sets\n */\nRoom.prototype.removeEvent = function (eventId) {\n var removedAny = false;\n for (var i = 0; i < this._timelineSets.length; i++) {\n var removed = this._timelineSets[i].removeEvent(eventId);\n if (removed) {\n removedAny = true;\n }\n }\n return removedAny;\n};\n\n/**\n * Recalculate various aspects of the room, including the room name and\n * room summary. Call this any time the room's current state is modified.\n * May fire \"Room.name\" if the room name is updated.\n * @fires module:client~MatrixClient#event:\"Room.name\"\n */\nRoom.prototype.recalculate = function () {\n // set fake stripped state events if this is an invite room so logic remains\n // consistent elsewhere.\n var self = this;\n var membershipEvent = this.currentState.getStateEvents(\"m.room.member\", this.myUserId);\n if (membershipEvent && membershipEvent.getContent().membership === \"invite\") {\n var strippedStateEvents = membershipEvent.event.invite_room_state || [];\n utils.forEach(strippedStateEvents, function (strippedEvent) {\n var existingEvent = self.currentState.getStateEvents(strippedEvent.type, strippedEvent.state_key);\n if (!existingEvent) {\n // set the fake stripped event instead\n self.currentState.setStateEvents([new MatrixEvent({\n type: strippedEvent.type,\n state_key: strippedEvent.state_key,\n content: strippedEvent.content,\n event_id: \"$fake\" + Date.now(),\n room_id: self.roomId,\n user_id: self.myUserId // technically a lie\n })]);\n }\n });\n }\n\n var oldName = this.name;\n this.name = calculateRoomName(this, this.myUserId);\n this.summary = new RoomSummary(this.roomId, {\n title: this.name\n });\n\n if (oldName !== this.name) {\n this.emit(\"Room.name\", this);\n }\n};\n\n/**\n * Get a list of user IDs who have <b>read up to</b> the given event.\n * @param {MatrixEvent} event the event to get read receipts for.\n * @return {String[]} A list of user IDs.\n */\nRoom.prototype.getUsersReadUpTo = function (event) {\n return this.getReceiptsForEvent(event).filter(function (receipt) {\n return receipt.type === \"m.read\";\n }).map(function (receipt) {\n return receipt.userId;\n });\n};\n\n/**\n * Get the ID of the event that a given user has read up to, or null if we\n * have received no read receipts from them.\n * @param {String} userId The user ID to get read receipt event ID for\n * @param {Boolean} ignoreSynthesized If true, return only receipts that have been\n * sent by the server, not implicit ones generated\n * by the JS SDK.\n * @return {String} ID of the latest event that the given user has read, or null.\n */\nRoom.prototype.getEventReadUpTo = function (userId, ignoreSynthesized) {\n var receipts = this._receipts;\n if (ignoreSynthesized) {\n receipts = this._realReceipts;\n }\n\n if (receipts[\"m.read\"] === undefined || receipts[\"m.read\"][userId] === undefined) {\n return null;\n }\n\n return receipts[\"m.read\"][userId].eventId;\n};\n\n/**\n * Get a list of receipts for the given event.\n * @param {MatrixEvent} event the event to get receipts for\n * @return {Object[]} A list of receipts with a userId, type and data keys or\n * an empty list.\n */\nRoom.prototype.getReceiptsForEvent = function (event) {\n return this._receiptCacheByEventId[event.getId()] || [];\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Boolean} fake True if this event is implicit\n */\nRoom.prototype.addReceipt = function (event, fake) {\n // event content looks like:\n // content: {\n // $event_id: {\n // $receipt_type: {\n // $user_id: {\n // ts: $timestamp\n // }\n // }\n // }\n // }\n if (fake === undefined) {\n fake = false;\n }\n if (!fake) {\n this._addReceiptsToStructure(event, this._realReceipts);\n // we don't bother caching real receipts by event ID\n // as there's nothing that would read it.\n }\n this._addReceiptsToStructure(event, this._receipts);\n this._receiptCacheByEventId = this._buildReceiptCache(this._receipts);\n\n // send events after we've regenerated the cache, otherwise things that\n // listened for the event would read from a stale cache\n this.emit(\"Room.receipt\", event, this);\n};\n\n/**\n * Add a receipt event to the room.\n * @param {MatrixEvent} event The m.receipt event.\n * @param {Object} receipts The object to add receipts to\n */\nRoom.prototype._addReceiptsToStructure = function (event, receipts) {\n var self = this;\n utils.keys(event.getContent()).forEach(function (eventId) {\n utils.keys(event.getContent()[eventId]).forEach(function (receiptType) {\n utils.keys(event.getContent()[eventId][receiptType]).forEach(function (userId) {\n var receipt = event.getContent()[eventId][receiptType][userId];\n\n if (!receipts[receiptType]) {\n receipts[receiptType] = {};\n }\n\n var existingReceipt = receipts[receiptType][userId];\n\n if (!existingReceipt) {\n receipts[receiptType][userId] = {};\n } else {\n // we only want to add this receipt if we think it is later\n // than the one we already have. (This is managed\n // server-side, but because we synthesize RRs locally we\n // have to do it here too.)\n var ordering = self.getUnfilteredTimelineSet().compareEventOrdering(existingReceipt.eventId, eventId);\n if (ordering !== null && ordering >= 0) {\n return;\n }\n }\n\n receipts[receiptType][userId] = {\n eventId: eventId,\n data: receipt\n };\n });\n });\n });\n};\n\n/**\n * Build and return a map of receipts by event ID\n * @param {Object} receipts A map of receipts\n * @return {Object} Map of receipts by event ID\n */\nRoom.prototype._buildReceiptCache = function (receipts) {\n var receiptCacheByEventId = {};\n utils.keys(receipts).forEach(function (receiptType) {\n utils.keys(receipts[receiptType]).forEach(function (userId) {\n var receipt = receipts[receiptType][userId];\n if (!receiptCacheByEventId[receipt.eventId]) {\n receiptCacheByEventId[receipt.eventId] = [];\n }\n receiptCacheByEventId[receipt.eventId].push({\n userId: userId,\n type: receiptType,\n data: receipt.data\n });\n });\n });\n return receiptCacheByEventId;\n};\n\n/**\n * Add a temporary local-echo receipt to the room to reflect in the\n * client the fact that we've sent one.\n * @param {string} userId The user ID if the receipt sender\n * @param {MatrixEvent} e The event that is to be acknowledged\n * @param {string} receiptType The type of receipt\n */\nRoom.prototype._addLocalEchoReceipt = function (userId, e, receiptType) {\n this.addReceipt(synthesizeReceipt(userId, e, receiptType), true);\n};\n\n/**\n * Update the room-tag event for the room. The previous one is overwritten.\n * @param {MatrixEvent} event the m.tag event\n */\nRoom.prototype.addTags = function (event) {\n // event content looks like:\n // content: {\n // tags: {\n // $tagName: { $metadata: $value },\n // $tagName: { $metadata: $value },\n // }\n // }\n\n // XXX: do we need to deep copy here?\n this.tags = event.getContent().tags || {};\n\n // XXX: we could do a deep-comparison to see if the tags have really\n // changed - but do we want to bother?\n this.emit(\"Room.tags\", event, this);\n};\n\n/**\n * Update the account_data events for this room, overwriting events of the same type.\n * @param {Array<MatrixEvent>} events an array of account_data events to add\n */\nRoom.prototype.addAccountData = function (events) {\n for (var i = 0; i < events.length; i++) {\n var event = events[i];\n if (event.getType() === \"m.tag\") {\n this.addTags(event);\n }\n this.accountData[event.getType()] = event;\n this.emit(\"Room.accountData\", event, this);\n }\n};\n\n/**\n * Access account_data event of given event type for this room\n * @param {string} type the type of account_data event to be accessed\n * @return {?MatrixEvent} the account_data event in question\n */\nRoom.prototype.getAccountData = function (type) {\n return this.accountData[type];\n};\n\n/**\n * Returns wheter the syncing user has permission to send a message in the room\n * @return {boolean} true if the user should be permitted to send\n * message events into the room.\n */\nRoom.prototype.maySendMessage = function () {\n return this.getMyMembership() === 'join' && this.currentState.maySendEvent('m.room.message', this.myUserId);\n};\n\n/**\n * This is an internal method. Calculates the name of the room from the current\n * room state.\n * @param {Room} room The matrix room.\n * @param {string} userId The client's user ID. Used to filter room members\n * correctly.\n * @param {bool} ignoreRoomNameEvent Return the implicit room name that we'd see if there\n * was no m.room.name event.\n * @return {string} The calculated room name.\n */\nfunction calculateRoomName(room, userId, ignoreRoomNameEvent) {\n if (!ignoreRoomNameEvent) {\n // check for an alias, if any. for now, assume first alias is the\n // official one.\n var mRoomName = room.currentState.getStateEvents(\"m.room.name\", \"\");\n if (mRoomName && mRoomName.getContent() && mRoomName.getContent().name) {\n return mRoomName.getContent().name;\n }\n }\n\n var alias = room.getCanonicalAlias();\n\n if (!alias) {\n var aliases = room.getAliases();\n\n if (aliases.length) {\n alias = aliases[0];\n }\n }\n if (alias) {\n return alias;\n }\n\n var joinedMemberCount = room.currentState.getJoinedMemberCount();\n var invitedMemberCount = room.currentState.getInvitedMemberCount();\n // -1 because these numbers include the syncing user\n var inviteJoinCount = joinedMemberCount + invitedMemberCount - 1;\n\n // get members that are NOT ourselves and are actually in the room.\n var otherNames = null;\n if (room._summaryHeroes) {\n // if we have a summary, the member state events\n // should be in the room state\n otherNames = room._summaryHeroes.map(function (userId) {\n var member = room.getMember(userId);\n return member ? member.name : userId;\n });\n } else {\n var otherMembers = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && (m.membership === \"invite\" || m.membership === \"join\");\n });\n // make sure members have stable order\n otherMembers.sort(function (a, b) {\n return a.userId.localeCompare(b.userId);\n });\n // only 5 first members, immitate _summaryHeroes\n otherMembers = otherMembers.slice(0, 5);\n otherNames = otherMembers.map(function (m) {\n return m.name;\n });\n }\n\n if (inviteJoinCount) {\n return memberNamesToRoomName(otherNames, inviteJoinCount);\n }\n\n var myMembership = room.getMyMembership();\n // if I have created a room and invited people throuh\n // 3rd party invites\n if (myMembership == 'join') {\n var thirdPartyInvites = room.currentState.getStateEvents(\"m.room.third_party_invite\");\n\n if (thirdPartyInvites && thirdPartyInvites.length) {\n var thirdPartyNames = thirdPartyInvites.map(function (i) {\n return i.getContent().display_name;\n });\n\n return \"Inviting \" + memberNamesToRoomName(thirdPartyNames);\n }\n }\n // let's try to figure out who was here before\n var leftNames = otherNames;\n // if we didn't have heroes, try finding them in the room state\n if (!leftNames.length) {\n leftNames = room.currentState.getMembers().filter(function (m) {\n return m.userId !== userId && m.membership !== \"invite\" && m.membership !== \"join\";\n }).map(function (m) {\n return m.name;\n });\n }\n if (leftNames.length) {\n return \"Empty room (was \" + memberNamesToRoomName(leftNames) + \")\";\n } else {\n return \"Empty room\";\n }\n}\n\nfunction memberNamesToRoomName(names) {\n var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : names.length + 1;\n\n var countWithoutMe = count - 1;\n if (!names.length) {\n return count <= 1 ? \"Empty room\" : null;\n } else if (names.length === 1 && countWithoutMe <= 1) {\n return names[0];\n } else if (names.length === 2 && countWithoutMe <= 2) {\n return names[0] + \" and \" + names[1];\n } else {\n var plural = countWithoutMe > 1;\n if (plural) {\n return names[0] + \" and \" + countWithoutMe + \" others\";\n } else {\n return names[0] + \" and 1 other\";\n }\n }\n}\n\n/**\n * The Room class.\n */\nmodule.exports = Room;\n\n/**\n * Fires when an event we had previously received is redacted.\n *\n * (Note this is *not* fired when the redaction happens before we receive the\n * event).\n *\n * @event module:client~MatrixClient#\"Room.redaction\"\n * @param {MatrixEvent} event The matrix event which was redacted\n * @param {Room} room The room containing the redacted event\n */\n\n/**\n * Fires whenever the name of a room is updated.\n * @event module:client~MatrixClient#\"Room.name\"\n * @param {Room} room The room whose Room.name was updated.\n * @example\n * matrixClient.on(\"Room.name\", function(room){\n * var newName = room.name;\n * });\n */\n\n/**\n * Fires whenever a receipt is received for a room\n * @event module:client~MatrixClient#\"Room.receipt\"\n * @param {event} event The receipt event\n * @param {Room} room The room whose receipts was updated.\n * @example\n * matrixClient.on(\"Room.receipt\", function(event, room){\n * var receiptContent = event.getContent();\n * });\n */\n\n/**\n * Fires whenever a room's tags are updated.\n * @event module:client~MatrixClient#\"Room.tags\"\n * @param {event} event The tags event\n * @param {Room} room The room whose Room.tags was updated.\n * @example\n * matrixClient.on(\"Room.tags\", function(event, room){\n * var newTags = event.getContent().tags;\n * if (newTags[\"favourite\"]) showStar(room);\n * });\n */\n\n/**\n * Fires whenever a room's account_data is updated.\n * @event module:client~MatrixClient#\"Room.accountData\"\n * @param {event} event The account_data event\n * @param {Room} room The room whose account_data was updated.\n * @example\n * matrixClient.on(\"Room.accountData\", function(event, room){\n * if (event.getType() === \"m.room.colorscheme\") {\n * applyColorScheme(event.getContents());\n * }\n * });\n */\n\n/**\n * Fires when the status of a transmitted event is updated.\n *\n * <p>When an event is first transmitted, a temporary copy of the event is\n * inserted into the timeline, with a temporary event id, and a status of\n * 'SENDING'.\n *\n * <p>Once the echo comes back from the server, the content of the event\n * (MatrixEvent.event) is replaced by the complete event from the homeserver,\n * thus updating its event id, as well as server-generated fields such as the\n * timestamp. Its status is set to null.\n *\n * <p>Once the /send request completes, if the remote echo has not already\n * arrived, the event is updated with a new event id and the status is set to\n * 'SENT'. The server-generated fields are of course not updated yet.\n *\n * <p>If the /send fails, In this case, the event's status is set to\n * 'NOT_SENT'. If it is later resent, the process starts again, setting the\n * status to 'SENDING'. Alternatively, the message may be cancelled, which\n * removes the event from the room, and sets the status to 'CANCELLED'.\n *\n * <p>This event is raised to reflect each of the transitions above.\n *\n * @event module:client~MatrixClient#\"Room.localEchoUpdated\"\n *\n * @param {MatrixEvent} event The matrix event which has been updated\n *\n * @param {Room} room The room containing the redacted event\n *\n * @param {string} oldEventId The previous event id (the temporary event id,\n * except when updating a successfully-sent event when its echo arrives)\n *\n * @param {EventStatus} oldStatus The previous event status.\n */\n//# sourceMappingURL=room.js.map","module.exports = { \"default\": require(\"core-js/library/fn/number/is-integer\"), __esModule: true };","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","\"use strict\";\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * @module models/group\n */\nvar EventEmitter = require(\"events\").EventEmitter;\n\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new Group.\n *\n * @param {string} groupId The ID of this group.\n *\n * @prop {string} groupId The ID of this group.\n * @prop {string} name The human-readable display name for this group.\n * @prop {string} avatarUrl The mxc URL for this group's avatar.\n * @prop {string} myMembership The logged in user's membership of this group\n * @prop {Object} inviter Infomation about the user who invited the logged in user\n * to the group, if myMembership is 'invite'.\n * @prop {string} inviter.userId The user ID of the inviter\n */\nfunction Group(groupId) {\n this.groupId = groupId;\n this.name = null;\n this.avatarUrl = null;\n this.myMembership = null;\n this.inviter = null;\n}\nutils.inherits(Group, EventEmitter);\n\nGroup.prototype.setProfile = function (name, avatarUrl) {\n if (this.name === name && this.avatarUrl === avatarUrl) return;\n\n this.name = name || this.groupId;\n this.avatarUrl = avatarUrl;\n\n this.emit(\"Group.profile\", this);\n};\n\nGroup.prototype.setMyMembership = function (membership) {\n if (this.myMembership === membership) return;\n\n this.myMembership = membership;\n\n this.emit(\"Group.myMembership\", this);\n};\n\n/**\n * Sets the 'inviter' property. This does not emit an event (the inviter\n * will only change when the user is revited / reinvited to a room),\n * so set this before setting myMembership.\n * @param {Object} inviter Infomation about who invited us to the room\n */\nGroup.prototype.setInviter = function (inviter) {\n this.inviter = inviter;\n};\n\nmodule.exports = Group;\n\n/**\n * Fires whenever a group's profile information is updated.\n * This means the 'name' and 'avatarUrl' properties.\n * @event module:client~MatrixClient#\"Group.profile\"\n * @param {Group} group The group whose profile was updated.\n * @example\n * matrixClient.on(\"Group.profile\", function(group){\n * var name = group.name;\n * });\n */\n\n/**\n * Fires whenever the logged in user's membership status of\n * the group is updated.\n * @event module:client~MatrixClient#\"Group.myMembership\"\n * @param {Group} group The group in which the user's membership changed\n * @example\n * matrixClient.on(\"Group.myMembership\", function(group){\n * var myMembership = group.myMembership;\n * });\n */\n//# sourceMappingURL=group.js.map","/* Copyright 2015 Mark Haines\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use strict';\n\nvar escaped = /[\\\\\\\"\\x00-\\x1F]/g;\nvar escapes = {};\nfor (var i = 0; i < 0x20; ++i) {\n escapes[String.fromCharCode(i)] = (\n '\\\\U' + ('0000' + i.toString(16)).slice(-4).toUpperCase()\n );\n}\nescapes['\\b'] = '\\\\b';\nescapes['\\t'] = '\\\\t';\nescapes['\\n'] = '\\\\n';\nescapes['\\f'] = '\\\\f';\nescapes['\\r'] = '\\\\r';\nescapes['\\\"'] = '\\\\\\\"';\nescapes['\\\\'] = '\\\\\\\\';\n\nfunction escapeString(value) {\n escaped.lastIndex = 0;\n return value.replace(escaped, function(c) { return escapes[c]; });\n}\n\nfunction stringify(value) {\n switch (typeof value) {\n case 'string':\n return '\"' + escapeString(value) + '\"';\n case 'number':\n return isFinite(value) ? value : 'null';\n case 'boolean':\n return value;\n case 'object':\n if (value === null) {\n return 'null';\n }\n if (Array.isArray(value)) {\n return stringifyArray(value);\n }\n return stringifyObject(value);\n default:\n throw new Error('Cannot stringify: ' + typeof value);\n }\n}\n\nfunction stringifyArray(array) {\n var sep = '[';\n var result = '';\n for (var i = 0; i < array.length; ++i) {\n result += sep;\n sep = ',';\n result += stringify(array[i]);\n }\n if (sep != ',') {\n return '[]';\n } else {\n return result + ']';\n }\n}\n\nfunction stringifyObject(object) {\n var sep = '{';\n var result = '';\n var keys = Object.keys(object);\n keys.sort();\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n result += sep + '\"' + escapeString(key) + '\":';\n sep = ',';\n result += stringify(object[key]);\n }\n if (sep != ',') {\n return '{}';\n } else {\n return result + '}';\n }\n}\n\n/** */\nmodule.exports = {stringify: stringify};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nexports.default = createMatrixClient;\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStorage = window.localStorage;\n\n// just *accessing* indexedDB throws an exception in firefox with\n// indexeddb disabled.\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar indexedDB = void 0;\ntry {\n indexedDB = window.indexedDB;\n} catch (e) {}\n\n/**\n * Create a new matrix client, with the persistent stores set up appropriately\n * (using localstorage/indexeddb, etc)\n *\n * @param {Object} opts options to pass to Matrix.createClient. This will be\n * extended with `sessionStore` and `store` members.\n *\n * @param {bool} useIndexedDb True to attempt to use indexeddb, or false to force\n * use of the memory store. Default: true.\n *\n * @property {string} indexedDbWorkerScript Optional URL for a web worker script\n * for IndexedDB store operations. By default, indexeddb ops are done on\n * the main thread.\n *\n * @returns {MatrixClient} the newly-created MatrixClient\n */\nfunction createMatrixClient(opts, useIndexedDb) {\n if (useIndexedDb === undefined) useIndexedDb = true;\n\n var storeOpts = {\n useAuthorizationHeader: true\n };\n\n if (localStorage) {\n storeOpts.sessionStore = new _matrixJsSdk2.default.WebStorageSessionStore(localStorage);\n }\n\n if (indexedDB && localStorage && useIndexedDb) {\n storeOpts.store = new _matrixJsSdk2.default.IndexedDBStore({\n indexedDB: indexedDB,\n dbName: \"riot-web-sync\",\n localStorage: localStorage,\n workerScript: createMatrixClient.indexedDbWorkerScript\n });\n }\n\n opts = (0, _assign2.default)(storeOpts, opts);\n\n return _matrixJsSdk2.default.createClient(opts);\n}\n\ncreateMatrixClient.indexedDbWorkerScript = null;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=createMatrixClient.js.map","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","\"use strict\";\n\nmodule.exports = {\n __locale: \"en\",\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n abbreviated_days: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n abbreviated_months: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n am: 'AM',\n pm: 'PM'\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Represents a controller for individual settings to alter the reading behaviour\n * based upon environmental conditions, or to react to changes and therefore update\n * the working environment.\n *\n * This is not intended to replace the functionality of a SettingsHandler, it is only\n * intended to handle environmental factors for specific settings.\n */\nvar SettingController = function () {\n function SettingController() {\n (0, _classCallCheck3.default)(this, SettingController);\n }\n\n (0, _createClass3.default)(SettingController, [{\n key: \"getValueOverride\",\n\n\n /**\n * Gets the overridden value for the setting, if any. This must return null if the\n * value is not to be overridden, otherwise it must return the new value.\n * @param {string} level The level at which the value was requested at.\n * @param {String} roomId The room ID, may be null.\n * @param {*} calculatedValue The value that the handlers think the setting should be,\n * may be null.\n * @param {string} calculatedAtLevel The level for which the calculated value was\n * calculated at. May be null.\n * @return {*} The value that should be used, or null if no override is applicable.\n */\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n return null; // no override\n }\n\n /**\n * Called when the setting value has been changed.\n * @param {string} level The level at which the setting has been modified.\n * @param {String} roomId The room ID, may be null.\n * @param {*} newValue The new value for the setting, may be null.\n */\n\n }, {\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n // do nothing by default\n }\n }]);\n return SettingController;\n}();\n\nexports.default = SettingController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=SettingController.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nexports.levelRoleMap = levelRoleMap;\nexports.textualPowerLevel = textualPowerLevel;\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction levelRoleMap(usersDefault) {\n var _ref;\n\n return _ref = {\n undefined: (0, _languageHandler._t)('Default'),\n 0: (0, _languageHandler._t)('Restricted')\n }, (0, _defineProperty3.default)(_ref, usersDefault, (0, _languageHandler._t)('Default')), (0, _defineProperty3.default)(_ref, 50, (0, _languageHandler._t)('Moderator')), (0, _defineProperty3.default)(_ref, 100, (0, _languageHandler._t)('Admin')), _ref;\n} /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nfunction textualPowerLevel(level, usersDefault) {\n var LEVEL_ROLE_MAP = this.levelRoleMap(usersDefault);\n if (LEVEL_ROLE_MAP[level]) {\n return LEVEL_ROLE_MAP[level] + (level !== undefined ? ' (' + level + ')' : ' (' + usersDefault + ')');\n } else {\n return level;\n }\n}\n//# sourceMappingURL=Roles.js.map","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport BasePlatform from 'matrix-react-sdk/lib/BasePlatform';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\n\nimport Favico from 'favico.js';\n\nexport const updateCheckStatusEnum = {\n CHECKING: 'CHECKING',\n ERROR: 'ERROR',\n NOTAVAILABLE: 'NOTAVAILABLE',\n DOWNLOADING: 'DOWNLOADING',\n READY: 'READY',\n};\n\n/**\n * Vector-specific extensions to the BasePlatform template\n */\nexport default class VectorBasePlatform extends BasePlatform {\n constructor() {\n super();\n\n // The 'animations' are really low framerate and look terrible.\n // Also it re-starts the animation every time you set the badge,\n // and we set the state each time, even if the value hasn't changed,\n // so we'd need to fix that if enabling the animation.\n this.favicon = new Favico({animation: 'none'});\n this.showUpdateCheck = false;\n this._updateFavicon();\n this.updatable = true;\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Vector Base Platform'; // no translation required: only used for analytics\n }\n\n _updateFavicon() {\n try {\n // This needs to be in in a try block as it will throw\n // if there are more than 100 badge count changes in\n // its internal queue\n let bgColor = \"#d00\",\n notif = this.notificationCount;\n\n if (this.errorDidOccur) {\n notif = notif || \"×\";\n bgColor = \"#f00\";\n }\n\n this.favicon.badge(notif, {\n bgColor: bgColor,\n });\n } catch (e) {\n console.warn(`Failed to set badge count: ${e.message}`);\n }\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n this._updateFavicon();\n }\n\n setErrorStatus(errorDidOccur: boolean) {\n if (this.errorDidOccur === errorDidOccur) return;\n super.setErrorStatus(errorDidOccur);\n this._updateFavicon();\n }\n\n /**\n * Begin update polling, if applicable\n */\n startUpdater() {\n }\n\n /**\n * Whether we can call checkForUpdate on this platform build\n */\n canSelfUpdate(): boolean {\n return this.updatable;\n }\n\n startUpdateCheck() {\n this.showUpdateCheck = true;\n dis.dispatch({\n action: 'check_updates',\n value: { status: updateCheckStatusEnum.CHECKING },\n });\n }\n\n stopUpdateCheck() {\n this.showUpdateCheck = false;\n dis.dispatch({\n action: 'check_updates',\n value: false,\n })\n }\n\n getUpdateCheckStatusEnum() {\n return updateCheckStatusEnum;\n }\n\n /**\n * Update the currently running app to the latest available\n * version and replace this instance of the app with the\n * new version.\n */\n installUpdate() {\n }\n\n /**\n * Get a sensible default display name for the\n * device Vector is running on\n */\n getDefaultDeviceDisplayName(): string {\n return _t(\"Unknown device\");\n }\n}\n","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _sanitizeHtml = require('sanitize-html');\n\nvar _sanitizeHtml2 = _interopRequireDefault(_sanitizeHtml);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HomePage = function (_React$Component) {\n (0, _inherits3.default)(HomePage, _React$Component);\n\n function HomePage() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, HomePage);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = HomePage.__proto__ || (0, _getPrototypeOf2.default)(HomePage)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n iframeSrc: '',\n page: ''\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(HomePage, [{\n key: 'translate',\n value: function translate(s) {\n // default implementation - skins may wish to extend this\n return (0, _sanitizeHtml2.default)((0, _languageHandler._t)(s));\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this._unmounted = false;\n\n if (this.props.teamToken && this.props.teamServerUrl) {\n this.setState({\n iframeSrc: this.props.teamServerUrl + '/static/' + this.props.teamToken + '/home.html'\n });\n } else {\n // we use request() to inline the homepage into the react component\n // so that it can inherit CSS and theming easily rather than mess around\n // with iframes and trying to synchronise document.stylesheets.\n\n var src = this.props.homePageUrl || 'home.html';\n\n (0, _browserRequest2.default)({ method: \"GET\", url: src }, function (err, response, body) {\n if (_this2._unmounted) {\n return;\n }\n\n if (err || response.status < 200 || response.status >= 300) {\n console.warn('Error loading home page: ' + err);\n _this2.setState({ page: (0, _languageHandler._t)(\"Couldn't load home page\") });\n return;\n }\n\n body = body.replace(/_t\\(['\"]([\\s\\S]*?)['\"]\\)/mg, function (match, g1) {\n return _this2.translate(g1);\n });\n _this2.setState({ page: body });\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'onLoginClick',\n value: function onLoginClick() {\n _dispatcher2.default.dispatch({ action: 'start_login' });\n }\n }, {\n key: 'onRegisterClick',\n value: function onRegisterClick() {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var guestWarning = \"\";\n if (this.context.matrixClient.isGuest()) {\n guestWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_HomePage_guest_warning' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You are currently using Riot anonymously as a guest.\")\n ),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('If you would like to create a Matrix account you can <a>register</a> now.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.onRegisterClick },\n sub\n );\n } })\n ),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('If you already have a Matrix account you can <a>log in</a> instead.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.onLoginClick },\n sub\n );\n } })\n )\n )\n );\n }\n\n if (this.state.iframeSrc) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_HomePage' },\n guestWarning,\n _react2.default.createElement('iframe', { src: this.state.iframeSrc })\n );\n } else {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n return _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_HomePage' },\n guestWarning,\n _react2.default.createElement('div', { className: 'mx_HomePage_body', dangerouslySetInnerHTML: { __html: this.state.page } })\n );\n }\n }\n }]);\n return HomePage;\n}(_react2.default.Component);\n\nHomePage.displayName = 'HomePage';\nHomePage.propTypes = {\n // URL base of the team server. Optional.\n teamServerUrl: _propTypes2.default.string,\n // Team token. Optional. If set, used to get the static homepage of the team\n // associated. If unset, homePageUrl will be used.\n teamToken: _propTypes2.default.string,\n // URL to use as the iFrame src. Defaults to /home.html.\n homePageUrl: _propTypes2.default.string\n};\nHomePage.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\n\n\nmodule.exports = HomePage;\n//# sourceMappingURL=HomePage.js.map","var Tokenizer = require(\"./Tokenizer.js\");\n\n/*\n\tOptions:\n\n\txmlMode: Disables the special behavior for script/style tags (false by default)\n\tlowerCaseAttributeNames: call .toLowerCase for each attribute name (true if xmlMode is `false`)\n\tlowerCaseTags: call .toLowerCase for each tag name (true if xmlMode is `false`)\n*/\n\n/*\n\tCallbacks:\n\n\toncdataend,\n\toncdatastart,\n\tonclosetag,\n\toncomment,\n\toncommentend,\n\tonerror,\n\tonopentag,\n\tonprocessinginstruction,\n\tonreset,\n\tontext\n*/\n\nvar formTags = {\n\tinput: true,\n\toption: true,\n\toptgroup: true,\n\tselect: true,\n\tbutton: true,\n\tdatalist: true,\n\ttextarea: true\n};\n\nvar openImpliesClose = {\n\ttr : { tr:true, th:true, td:true },\n\tth : { th:true },\n\ttd : { thead:true, th:true, td:true },\n\tbody : { head:true, link:true, script:true },\n\tli : { li:true },\n\tp : { p:true },\n\th1 : { p:true },\n\th2 : { p:true },\n\th3 : { p:true },\n\th4 : { p:true },\n\th5 : { p:true },\n\th6 : { p:true },\n\tselect : formTags,\n\tinput : formTags,\n\toutput : formTags,\n\tbutton : formTags,\n\tdatalist: formTags,\n\ttextarea: formTags,\n\toption : { option:true },\n\toptgroup: { optgroup:true }\n};\n\nvar voidElements = {\n\t__proto__: null,\n\tarea: true,\n\tbase: true,\n\tbasefont: true,\n\tbr: true,\n\tcol: true,\n\tcommand: true,\n\tembed: true,\n\tframe: true,\n\thr: true,\n\timg: true,\n\tinput: true,\n\tisindex: true,\n\tkeygen: true,\n\tlink: true,\n\tmeta: true,\n\tparam: true,\n\tsource: true,\n\ttrack: true,\n\twbr: true,\n\n\t//common self closing svg elements\n\tpath: true,\n\tcircle: true,\n\tellipse: true,\n\tline: true,\n\trect: true,\n\tuse: true,\n\tstop: true,\n\tpolyline: true,\n\tpolygon: true\n};\n\nvar re_nameEnd = /\\s|\\//;\n\nfunction Parser(cbs, options){\n\tthis._options = options || {};\n\tthis._cbs = cbs || {};\n\n\tthis._tagname = \"\";\n\tthis._attribname = \"\";\n\tthis._attribvalue = \"\";\n\tthis._attribs = null;\n\tthis._stack = [];\n\n\tthis.startIndex = 0;\n\tthis.endIndex = null;\n\n\tthis._lowerCaseTagNames = \"lowerCaseTags\" in this._options ?\n\t\t\t\t\t\t\t\t\t!!this._options.lowerCaseTags :\n\t\t\t\t\t\t\t\t\t!this._options.xmlMode;\n\tthis._lowerCaseAttributeNames = \"lowerCaseAttributeNames\" in this._options ?\n\t\t\t\t\t\t\t\t\t!!this._options.lowerCaseAttributeNames :\n\t\t\t\t\t\t\t\t\t!this._options.xmlMode;\n\n\tif(this._options.Tokenizer) {\n\t\tTokenizer = this._options.Tokenizer;\n\t}\n\tthis._tokenizer = new Tokenizer(this._options, this);\n\n\tif(this._cbs.onparserinit) this._cbs.onparserinit(this);\n}\n\nrequire(\"inherits\")(Parser, require(\"events\").EventEmitter);\n\nParser.prototype._updatePosition = function(initialOffset){\n\tif(this.endIndex === null){\n\t\tif(this._tokenizer._sectionStart <= initialOffset){\n\t\t\tthis.startIndex = 0;\n\t\t} else {\n\t\t\tthis.startIndex = this._tokenizer._sectionStart - initialOffset;\n\t\t}\n\t}\n\telse this.startIndex = this.endIndex + 1;\n\tthis.endIndex = this._tokenizer.getAbsoluteIndex();\n};\n\n//Tokenizer event handlers\nParser.prototype.ontext = function(data){\n\tthis._updatePosition(1);\n\tthis.endIndex--;\n\n\tif(this._cbs.ontext) this._cbs.ontext(data);\n};\n\nParser.prototype.onopentagname = function(name){\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\tthis._tagname = name;\n\n\tif(!this._options.xmlMode && name in openImpliesClose) {\n\t\tfor(\n\t\t\tvar el;\n\t\t\t(el = this._stack[this._stack.length - 1]) in openImpliesClose[name];\n\t\t\tthis.onclosetag(el)\n\t\t);\n\t}\n\n\tif(this._options.xmlMode || !(name in voidElements)){\n\t\tthis._stack.push(name);\n\t}\n\n\tif(this._cbs.onopentagname) this._cbs.onopentagname(name);\n\tif(this._cbs.onopentag) this._attribs = {};\n};\n\nParser.prototype.onopentagend = function(){\n\tthis._updatePosition(1);\n\n\tif(this._attribs){\n\t\tif(this._cbs.onopentag) this._cbs.onopentag(this._tagname, this._attribs);\n\t\tthis._attribs = null;\n\t}\n\n\tif(!this._options.xmlMode && this._cbs.onclosetag && this._tagname in voidElements){\n\t\tthis._cbs.onclosetag(this._tagname);\n\t}\n\n\tthis._tagname = \"\";\n};\n\nParser.prototype.onclosetag = function(name){\n\tthis._updatePosition(1);\n\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\tif(this._stack.length && (!(name in voidElements) || this._options.xmlMode)){\n\t\tvar pos = this._stack.lastIndexOf(name);\n\t\tif(pos !== -1){\n\t\t\tif(this._cbs.onclosetag){\n\t\t\t\tpos = this._stack.length - pos;\n\t\t\t\twhile(pos--) this._cbs.onclosetag(this._stack.pop());\n\t\t\t}\n\t\t\telse this._stack.length = pos;\n\t\t} else if(name === \"p\" && !this._options.xmlMode){\n\t\t\tthis.onopentagname(name);\n\t\t\tthis._closeCurrentTag();\n\t\t}\n\t} else if(!this._options.xmlMode && (name === \"br\" || name === \"p\")){\n\t\tthis.onopentagname(name);\n\t\tthis._closeCurrentTag();\n\t}\n};\n\nParser.prototype.onselfclosingtag = function(){\n\tif(this._options.xmlMode || this._options.recognizeSelfClosing){\n\t\tthis._closeCurrentTag();\n\t} else {\n\t\tthis.onopentagend();\n\t}\n};\n\nParser.prototype._closeCurrentTag = function(){\n\tvar name = this._tagname;\n\n\tthis.onopentagend();\n\n\t//self-closing tags will be on the top of the stack\n\t//(cheaper check than in onclosetag)\n\tif(this._stack[this._stack.length - 1] === name){\n\t\tif(this._cbs.onclosetag){\n\t\t\tthis._cbs.onclosetag(name);\n\t\t}\n\t\tthis._stack.pop();\n\t}\n};\n\nParser.prototype.onattribname = function(name){\n\tif(this._lowerCaseAttributeNames){\n\t\tname = name.toLowerCase();\n\t}\n\tthis._attribname = name;\n};\n\nParser.prototype.onattribdata = function(value){\n\tthis._attribvalue += value;\n};\n\nParser.prototype.onattribend = function(){\n\tif(this._cbs.onattribute) this._cbs.onattribute(this._attribname, this._attribvalue);\n\tif(\n\t\tthis._attribs &&\n\t\t!Object.prototype.hasOwnProperty.call(this._attribs, this._attribname)\n\t){\n\t\tthis._attribs[this._attribname] = this._attribvalue;\n\t}\n\tthis._attribname = \"\";\n\tthis._attribvalue = \"\";\n};\n\nParser.prototype._getInstructionName = function(value){\n\tvar idx = value.search(re_nameEnd),\n\t name = idx < 0 ? value : value.substr(0, idx);\n\n\tif(this._lowerCaseTagNames){\n\t\tname = name.toLowerCase();\n\t}\n\n\treturn name;\n};\n\nParser.prototype.ondeclaration = function(value){\n\tif(this._cbs.onprocessinginstruction){\n\t\tvar name = this._getInstructionName(value);\n\t\tthis._cbs.onprocessinginstruction(\"!\" + name, \"!\" + value);\n\t}\n};\n\nParser.prototype.onprocessinginstruction = function(value){\n\tif(this._cbs.onprocessinginstruction){\n\t\tvar name = this._getInstructionName(value);\n\t\tthis._cbs.onprocessinginstruction(\"?\" + name, \"?\" + value);\n\t}\n};\n\nParser.prototype.oncomment = function(value){\n\tthis._updatePosition(4);\n\n\tif(this._cbs.oncomment) this._cbs.oncomment(value);\n\tif(this._cbs.oncommentend) this._cbs.oncommentend();\n};\n\nParser.prototype.oncdata = function(value){\n\tthis._updatePosition(1);\n\n\tif(this._options.xmlMode || this._options.recognizeCDATA){\n\t\tif(this._cbs.oncdatastart) this._cbs.oncdatastart();\n\t\tif(this._cbs.ontext) this._cbs.ontext(value);\n\t\tif(this._cbs.oncdataend) this._cbs.oncdataend();\n\t} else {\n\t\tthis.oncomment(\"[CDATA[\" + value + \"]]\");\n\t}\n};\n\nParser.prototype.onerror = function(err){\n\tif(this._cbs.onerror) this._cbs.onerror(err);\n};\n\nParser.prototype.onend = function(){\n\tif(this._cbs.onclosetag){\n\t\tfor(\n\t\t\tvar i = this._stack.length;\n\t\t\ti > 0;\n\t\t\tthis._cbs.onclosetag(this._stack[--i])\n\t\t);\n\t}\n\tif(this._cbs.onend) this._cbs.onend();\n};\n\n\n//Resets the parser to a blank state, ready to parse a new HTML document\nParser.prototype.reset = function(){\n\tif(this._cbs.onreset) this._cbs.onreset();\n\tthis._tokenizer.reset();\n\n\tthis._tagname = \"\";\n\tthis._attribname = \"\";\n\tthis._attribs = null;\n\tthis._stack = [];\n\n\tif(this._cbs.onparserinit) this._cbs.onparserinit(this);\n};\n\n//Parses a complete HTML document and pushes it to the handler\nParser.prototype.parseComplete = function(data){\n\tthis.reset();\n\tthis.end(data);\n};\n\nParser.prototype.write = function(chunk){\n\tthis._tokenizer.write(chunk);\n};\n\nParser.prototype.end = function(chunk){\n\tthis._tokenizer.end(chunk);\n};\n\nParser.prototype.pause = function(){\n\tthis._tokenizer.pause();\n};\n\nParser.prototype.resume = function(){\n\tthis._tokenizer.resume();\n};\n\n//alias for backwards compat\nParser.prototype.parseChunk = Parser.prototype.write;\nParser.prototype.done = Parser.prototype.end;\n\nmodule.exports = Parser;\n","module.exports = Tokenizer;\n\nvar decodeCodePoint = require(\"entities/lib/decode_codepoint.js\"),\n entityMap = require(\"entities/maps/entities.json\"),\n legacyMap = require(\"entities/maps/legacy.json\"),\n xmlMap = require(\"entities/maps/xml.json\"),\n\n i = 0,\n\n TEXT = i++,\n BEFORE_TAG_NAME = i++, //after <\n IN_TAG_NAME = i++,\n IN_SELF_CLOSING_TAG = i++,\n BEFORE_CLOSING_TAG_NAME = i++,\n IN_CLOSING_TAG_NAME = i++,\n AFTER_CLOSING_TAG_NAME = i++,\n\n //attributes\n BEFORE_ATTRIBUTE_NAME = i++,\n IN_ATTRIBUTE_NAME = i++,\n AFTER_ATTRIBUTE_NAME = i++,\n BEFORE_ATTRIBUTE_VALUE = i++,\n IN_ATTRIBUTE_VALUE_DQ = i++, // \"\n IN_ATTRIBUTE_VALUE_SQ = i++, // '\n IN_ATTRIBUTE_VALUE_NQ = i++,\n\n //declarations\n BEFORE_DECLARATION = i++, // !\n IN_DECLARATION = i++,\n\n //processing instructions\n IN_PROCESSING_INSTRUCTION = i++, // ?\n\n //comments\n BEFORE_COMMENT = i++,\n IN_COMMENT = i++,\n AFTER_COMMENT_1 = i++,\n AFTER_COMMENT_2 = i++,\n\n //cdata\n BEFORE_CDATA_1 = i++, // [\n BEFORE_CDATA_2 = i++, // C\n BEFORE_CDATA_3 = i++, // D\n BEFORE_CDATA_4 = i++, // A\n BEFORE_CDATA_5 = i++, // T\n BEFORE_CDATA_6 = i++, // A\n IN_CDATA = i++, // [\n AFTER_CDATA_1 = i++, // ]\n AFTER_CDATA_2 = i++, // ]\n\n //special tags\n BEFORE_SPECIAL = i++, //S\n BEFORE_SPECIAL_END = i++, //S\n\n BEFORE_SCRIPT_1 = i++, //C\n BEFORE_SCRIPT_2 = i++, //R\n BEFORE_SCRIPT_3 = i++, //I\n BEFORE_SCRIPT_4 = i++, //P\n BEFORE_SCRIPT_5 = i++, //T\n AFTER_SCRIPT_1 = i++, //C\n AFTER_SCRIPT_2 = i++, //R\n AFTER_SCRIPT_3 = i++, //I\n AFTER_SCRIPT_4 = i++, //P\n AFTER_SCRIPT_5 = i++, //T\n\n BEFORE_STYLE_1 = i++, //T\n BEFORE_STYLE_2 = i++, //Y\n BEFORE_STYLE_3 = i++, //L\n BEFORE_STYLE_4 = i++, //E\n AFTER_STYLE_1 = i++, //T\n AFTER_STYLE_2 = i++, //Y\n AFTER_STYLE_3 = i++, //L\n AFTER_STYLE_4 = i++, //E\n\n BEFORE_ENTITY = i++, //&\n BEFORE_NUMERIC_ENTITY = i++, //#\n IN_NAMED_ENTITY = i++,\n IN_NUMERIC_ENTITY = i++,\n IN_HEX_ENTITY = i++, //X\n\n j = 0,\n\n SPECIAL_NONE = j++,\n SPECIAL_SCRIPT = j++,\n SPECIAL_STYLE = j++;\n\nfunction whitespace(c){\n\treturn c === \" \" || c === \"\\n\" || c === \"\\t\" || c === \"\\f\" || c === \"\\r\";\n}\n\nfunction characterState(char, SUCCESS){\n\treturn function(c){\n\t\tif(c === char) this._state = SUCCESS;\n\t};\n}\n\nfunction ifElseState(upper, SUCCESS, FAILURE){\n\tvar lower = upper.toLowerCase();\n\n\tif(upper === lower){\n\t\treturn function(c){\n\t\t\tif(c === lower){\n\t\t\t\tthis._state = SUCCESS;\n\t\t\t} else {\n\t\t\t\tthis._state = FAILURE;\n\t\t\t\tthis._index--;\n\t\t\t}\n\t\t};\n\t} else {\n\t\treturn function(c){\n\t\t\tif(c === lower || c === upper){\n\t\t\t\tthis._state = SUCCESS;\n\t\t\t} else {\n\t\t\t\tthis._state = FAILURE;\n\t\t\t\tthis._index--;\n\t\t\t}\n\t\t};\n\t}\n}\n\nfunction consumeSpecialNameChar(upper, NEXT_STATE){\n\tvar lower = upper.toLowerCase();\n\n\treturn function(c){\n\t\tif(c === lower || c === upper){\n\t\t\tthis._state = NEXT_STATE;\n\t\t} else {\n\t\t\tthis._state = IN_TAG_NAME;\n\t\t\tthis._index--; //consume the token again\n\t\t}\n\t};\n}\n\nfunction Tokenizer(options, cbs){\n\tthis._state = TEXT;\n\tthis._buffer = \"\";\n\tthis._sectionStart = 0;\n\tthis._index = 0;\n\tthis._bufferOffset = 0; //chars removed from _buffer\n\tthis._baseState = TEXT;\n\tthis._special = SPECIAL_NONE;\n\tthis._cbs = cbs;\n\tthis._running = true;\n\tthis._ended = false;\n\tthis._xmlMode = !!(options && options.xmlMode);\n\tthis._decodeEntities = !!(options && options.decodeEntities);\n}\n\nTokenizer.prototype._stateText = function(c){\n\tif(c === \"<\"){\n\t\tif(this._index > this._sectionStart){\n\t\t\tthis._cbs.ontext(this._getSection());\n\t\t}\n\t\tthis._state = BEFORE_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t} else if(this._decodeEntities && this._special === SPECIAL_NONE && c === \"&\"){\n\t\tif(this._index > this._sectionStart){\n\t\t\tthis._cbs.ontext(this._getSection());\n\t\t}\n\t\tthis._baseState = TEXT;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeTagName = function(c){\n\tif(c === \"/\"){\n\t\tthis._state = BEFORE_CLOSING_TAG_NAME;\n\t} else if(c === \"<\"){\n\t\tthis._cbs.ontext(this._getSection());\n\t\tthis._sectionStart = this._index;\n\t} else if(c === \">\" || this._special !== SPECIAL_NONE || whitespace(c)) {\n\t\tthis._state = TEXT;\n\t} else if(c === \"!\"){\n\t\tthis._state = BEFORE_DECLARATION;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"?\"){\n\t\tthis._state = IN_PROCESSING_INSTRUCTION;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = (!this._xmlMode && (c === \"s\" || c === \"S\")) ?\n\t\t\t\t\t\tBEFORE_SPECIAL : IN_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInTagName = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._emitToken(\"onopentagname\");\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateBeforeCloseingTagName = function(c){\n\tif(whitespace(c));\n\telse if(c === \">\"){\n\t\tthis._state = TEXT;\n\t} else if(this._special !== SPECIAL_NONE){\n\t\tif(c === \"s\" || c === \"S\"){\n\t\t\tthis._state = BEFORE_SPECIAL_END;\n\t\t} else {\n\t\t\tthis._state = TEXT;\n\t\t\tthis._index--;\n\t\t}\n\t} else {\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInCloseingTagName = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._emitToken(\"onclosetag\");\n\t\tthis._state = AFTER_CLOSING_TAG_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateAfterCloseingTagName = function(c){\n\t//skip everything until \">\"\n\tif(c === \">\"){\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateBeforeAttributeName = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onopentagend();\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"/\"){\n\t\tthis._state = IN_SELF_CLOSING_TAG;\n\t} else if(!whitespace(c)){\n\t\tthis._state = IN_ATTRIBUTE_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInSelfClosingTag = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onselfclosingtag();\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(!whitespace(c)){\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeName = function(c){\n\tif(c === \"=\" || c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._cbs.onattribname(this._getSection());\n\t\tthis._sectionStart = -1;\n\t\tthis._state = AFTER_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateAfterAttributeName = function(c){\n\tif(c === \"=\"){\n\t\tthis._state = BEFORE_ATTRIBUTE_VALUE;\n\t} else if(c === \"/\" || c === \">\"){\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t} else if(!whitespace(c)){\n\t\tthis._cbs.onattribend();\n\t\tthis._state = IN_ATTRIBUTE_NAME;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeAttributeValue = function(c){\n\tif(c === \"\\\"\"){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_DQ;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c === \"'\"){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_SQ;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(!whitespace(c)){\n\t\tthis._state = IN_ATTRIBUTE_VALUE_NQ;\n\t\tthis._sectionStart = this._index;\n\t\tthis._index--; //reconsume token\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueDoubleQuotes = function(c){\n\tif(c === \"\\\"\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueSingleQuotes = function(c){\n\tif(c === \"'\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateInAttributeValueNoQuotes = function(c){\n\tif(whitespace(c) || c === \">\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._cbs.onattribend();\n\t\tthis._state = BEFORE_ATTRIBUTE_NAME;\n\t\tthis._index--;\n\t} else if(this._decodeEntities && c === \"&\"){\n\t\tthis._emitToken(\"onattribdata\");\n\t\tthis._baseState = this._state;\n\t\tthis._state = BEFORE_ENTITY;\n\t\tthis._sectionStart = this._index;\n\t}\n};\n\nTokenizer.prototype._stateBeforeDeclaration = function(c){\n\tthis._state = c === \"[\" ? BEFORE_CDATA_1 :\n\t\t\t\t\tc === \"-\" ? BEFORE_COMMENT :\n\t\t\t\t\t\tIN_DECLARATION;\n};\n\nTokenizer.prototype._stateInDeclaration = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.ondeclaration(this._getSection());\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateInProcessingInstruction = function(c){\n\tif(c === \">\"){\n\t\tthis._cbs.onprocessinginstruction(this._getSection());\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t}\n};\n\nTokenizer.prototype._stateBeforeComment = function(c){\n\tif(c === \"-\"){\n\t\tthis._state = IN_COMMENT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = IN_DECLARATION;\n\t}\n};\n\nTokenizer.prototype._stateInComment = function(c){\n\tif(c === \"-\") this._state = AFTER_COMMENT_1;\n};\n\nTokenizer.prototype._stateAfterComment1 = function(c){\n\tif(c === \"-\"){\n\t\tthis._state = AFTER_COMMENT_2;\n\t} else {\n\t\tthis._state = IN_COMMENT;\n\t}\n};\n\nTokenizer.prototype._stateAfterComment2 = function(c){\n\tif(c === \">\"){\n\t\t//remove 2 trailing chars\n\t\tthis._cbs.oncomment(this._buffer.substring(this._sectionStart, this._index - 2));\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c !== \"-\"){\n\t\tthis._state = IN_COMMENT;\n\t}\n\t// else: stay in AFTER_COMMENT_2 (`--->`)\n};\n\nTokenizer.prototype._stateBeforeCdata1 = ifElseState(\"C\", BEFORE_CDATA_2, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata2 = ifElseState(\"D\", BEFORE_CDATA_3, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata3 = ifElseState(\"A\", BEFORE_CDATA_4, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata4 = ifElseState(\"T\", BEFORE_CDATA_5, IN_DECLARATION);\nTokenizer.prototype._stateBeforeCdata5 = ifElseState(\"A\", BEFORE_CDATA_6, IN_DECLARATION);\n\nTokenizer.prototype._stateBeforeCdata6 = function(c){\n\tif(c === \"[\"){\n\t\tthis._state = IN_CDATA;\n\t\tthis._sectionStart = this._index + 1;\n\t} else {\n\t\tthis._state = IN_DECLARATION;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInCdata = function(c){\n\tif(c === \"]\") this._state = AFTER_CDATA_1;\n};\n\nTokenizer.prototype._stateAfterCdata1 = characterState(\"]\", AFTER_CDATA_2);\n\nTokenizer.prototype._stateAfterCdata2 = function(c){\n\tif(c === \">\"){\n\t\t//remove 2 trailing chars\n\t\tthis._cbs.oncdata(this._buffer.substring(this._sectionStart, this._index - 2));\n\t\tthis._state = TEXT;\n\t\tthis._sectionStart = this._index + 1;\n\t} else if(c !== \"]\") {\n\t\tthis._state = IN_CDATA;\n\t}\n\t//else: stay in AFTER_CDATA_2 (`]]]>`)\n};\n\nTokenizer.prototype._stateBeforeSpecial = function(c){\n\tif(c === \"c\" || c === \"C\"){\n\t\tthis._state = BEFORE_SCRIPT_1;\n\t} else if(c === \"t\" || c === \"T\"){\n\t\tthis._state = BEFORE_STYLE_1;\n\t} else {\n\t\tthis._state = IN_TAG_NAME;\n\t\tthis._index--; //consume the token again\n\t}\n};\n\nTokenizer.prototype._stateBeforeSpecialEnd = function(c){\n\tif(this._special === SPECIAL_SCRIPT && (c === \"c\" || c === \"C\")){\n\t\tthis._state = AFTER_SCRIPT_1;\n\t} else if(this._special === SPECIAL_STYLE && (c === \"t\" || c === \"T\")){\n\t\tthis._state = AFTER_STYLE_1;\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeScript1 = consumeSpecialNameChar(\"R\", BEFORE_SCRIPT_2);\nTokenizer.prototype._stateBeforeScript2 = consumeSpecialNameChar(\"I\", BEFORE_SCRIPT_3);\nTokenizer.prototype._stateBeforeScript3 = consumeSpecialNameChar(\"P\", BEFORE_SCRIPT_4);\nTokenizer.prototype._stateBeforeScript4 = consumeSpecialNameChar(\"T\", BEFORE_SCRIPT_5);\n\nTokenizer.prototype._stateBeforeScript5 = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_SCRIPT;\n\t}\n\tthis._state = IN_TAG_NAME;\n\tthis._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterScript1 = ifElseState(\"R\", AFTER_SCRIPT_2, TEXT);\nTokenizer.prototype._stateAfterScript2 = ifElseState(\"I\", AFTER_SCRIPT_3, TEXT);\nTokenizer.prototype._stateAfterScript3 = ifElseState(\"P\", AFTER_SCRIPT_4, TEXT);\nTokenizer.prototype._stateAfterScript4 = ifElseState(\"T\", AFTER_SCRIPT_5, TEXT);\n\nTokenizer.prototype._stateAfterScript5 = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_NONE;\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index - 6;\n\t\tthis._index--; //reconsume the token\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeStyle1 = consumeSpecialNameChar(\"Y\", BEFORE_STYLE_2);\nTokenizer.prototype._stateBeforeStyle2 = consumeSpecialNameChar(\"L\", BEFORE_STYLE_3);\nTokenizer.prototype._stateBeforeStyle3 = consumeSpecialNameChar(\"E\", BEFORE_STYLE_4);\n\nTokenizer.prototype._stateBeforeStyle4 = function(c){\n\tif(c === \"/\" || c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_STYLE;\n\t}\n\tthis._state = IN_TAG_NAME;\n\tthis._index--; //consume the token again\n};\n\nTokenizer.prototype._stateAfterStyle1 = ifElseState(\"Y\", AFTER_STYLE_2, TEXT);\nTokenizer.prototype._stateAfterStyle2 = ifElseState(\"L\", AFTER_STYLE_3, TEXT);\nTokenizer.prototype._stateAfterStyle3 = ifElseState(\"E\", AFTER_STYLE_4, TEXT);\n\nTokenizer.prototype._stateAfterStyle4 = function(c){\n\tif(c === \">\" || whitespace(c)){\n\t\tthis._special = SPECIAL_NONE;\n\t\tthis._state = IN_CLOSING_TAG_NAME;\n\t\tthis._sectionStart = this._index - 5;\n\t\tthis._index--; //reconsume the token\n\t}\n\telse this._state = TEXT;\n};\n\nTokenizer.prototype._stateBeforeEntity = ifElseState(\"#\", BEFORE_NUMERIC_ENTITY, IN_NAMED_ENTITY);\nTokenizer.prototype._stateBeforeNumericEntity = ifElseState(\"X\", IN_HEX_ENTITY, IN_NUMERIC_ENTITY);\n\n//for entities terminated with a semicolon\nTokenizer.prototype._parseNamedEntityStrict = function(){\n\t//offset = 1\n\tif(this._sectionStart + 1 < this._index){\n\t\tvar entity = this._buffer.substring(this._sectionStart + 1, this._index),\n\t\t map = this._xmlMode ? xmlMap : entityMap;\n\n\t\tif(map.hasOwnProperty(entity)){\n\t\t\tthis._emitPartial(map[entity]);\n\t\t\tthis._sectionStart = this._index + 1;\n\t\t}\n\t}\n};\n\n\n//parses legacy entities (without trailing semicolon)\nTokenizer.prototype._parseLegacyEntity = function(){\n\tvar start = this._sectionStart + 1,\n\t limit = this._index - start;\n\n\tif(limit > 6) limit = 6; //the max length of legacy entities is 6\n\n\twhile(limit >= 2){ //the min length of legacy entities is 2\n\t\tvar entity = this._buffer.substr(start, limit);\n\n\t\tif(legacyMap.hasOwnProperty(entity)){\n\t\t\tthis._emitPartial(legacyMap[entity]);\n\t\t\tthis._sectionStart += limit + 1;\n\t\t\treturn;\n\t\t} else {\n\t\t\tlimit--;\n\t\t}\n\t}\n};\n\nTokenizer.prototype._stateInNamedEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._parseNamedEntityStrict();\n\t\tif(this._sectionStart + 1 < this._index && !this._xmlMode){\n\t\t\tthis._parseLegacyEntity();\n\t\t}\n\t\tthis._state = this._baseState;\n\t} else if((c < \"a\" || c > \"z\") && (c < \"A\" || c > \"Z\") && (c < \"0\" || c > \"9\")){\n\t\tif(this._xmlMode);\n\t\telse if(this._sectionStart + 1 === this._index);\n\t\telse if(this._baseState !== TEXT){\n\t\t\tif(c !== \"=\"){\n\t\t\t\tthis._parseNamedEntityStrict();\n\t\t\t}\n\t\t} else {\n\t\t\tthis._parseLegacyEntity();\n\t\t}\n\n\t\tthis._state = this._baseState;\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._decodeNumericEntity = function(offset, base){\n\tvar sectionStart = this._sectionStart + offset;\n\n\tif(sectionStart !== this._index){\n\t\t//parse entity\n\t\tvar entity = this._buffer.substring(sectionStart, this._index);\n\t\tvar parsed = parseInt(entity, base);\n\n\t\tthis._emitPartial(decodeCodePoint(parsed));\n\t\tthis._sectionStart = this._index;\n\t} else {\n\t\tthis._sectionStart--;\n\t}\n\n\tthis._state = this._baseState;\n};\n\nTokenizer.prototype._stateInNumericEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._decodeNumericEntity(2, 10);\n\t\tthis._sectionStart++;\n\t} else if(c < \"0\" || c > \"9\"){\n\t\tif(!this._xmlMode){\n\t\t\tthis._decodeNumericEntity(2, 10);\n\t\t} else {\n\t\t\tthis._state = this._baseState;\n\t\t}\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._stateInHexEntity = function(c){\n\tif(c === \";\"){\n\t\tthis._decodeNumericEntity(3, 16);\n\t\tthis._sectionStart++;\n\t} else if((c < \"a\" || c > \"f\") && (c < \"A\" || c > \"F\") && (c < \"0\" || c > \"9\")){\n\t\tif(!this._xmlMode){\n\t\t\tthis._decodeNumericEntity(3, 16);\n\t\t} else {\n\t\t\tthis._state = this._baseState;\n\t\t}\n\t\tthis._index--;\n\t}\n};\n\nTokenizer.prototype._cleanup = function (){\n\tif(this._sectionStart < 0){\n\t\tthis._buffer = \"\";\n\t\tthis._bufferOffset += this._index;\n\t\tthis._index = 0;\n\t} else if(this._running){\n\t\tif(this._state === TEXT){\n\t\t\tif(this._sectionStart !== this._index){\n\t\t\t\tthis._cbs.ontext(this._buffer.substr(this._sectionStart));\n\t\t\t}\n\t\t\tthis._buffer = \"\";\n\t\t\tthis._bufferOffset += this._index;\n\t\t\tthis._index = 0;\n\t\t} else if(this._sectionStart === this._index){\n\t\t\t//the section just started\n\t\t\tthis._buffer = \"\";\n\t\t\tthis._bufferOffset += this._index;\n\t\t\tthis._index = 0;\n\t\t} else {\n\t\t\t//remove everything unnecessary\n\t\t\tthis._buffer = this._buffer.substr(this._sectionStart);\n\t\t\tthis._index -= this._sectionStart;\n\t\t\tthis._bufferOffset += this._sectionStart;\n\t\t}\n\n\t\tthis._sectionStart = 0;\n\t}\n};\n\n//TODO make events conditional\nTokenizer.prototype.write = function(chunk){\n\tif(this._ended) this._cbs.onerror(Error(\".write() after done!\"));\n\n\tthis._buffer += chunk;\n\tthis._parse();\n};\n\nTokenizer.prototype._parse = function(){\n\twhile(this._index < this._buffer.length && this._running){\n\t\tvar c = this._buffer.charAt(this._index);\n\t\tif(this._state === TEXT) {\n\t\t\tthis._stateText(c);\n\t\t} else if(this._state === BEFORE_TAG_NAME){\n\t\t\tthis._stateBeforeTagName(c);\n\t\t} else if(this._state === IN_TAG_NAME) {\n\t\t\tthis._stateInTagName(c);\n\t\t} else if(this._state === BEFORE_CLOSING_TAG_NAME){\n\t\t\tthis._stateBeforeCloseingTagName(c);\n\t\t} else if(this._state === IN_CLOSING_TAG_NAME){\n\t\t\tthis._stateInCloseingTagName(c);\n\t\t} else if(this._state === AFTER_CLOSING_TAG_NAME){\n\t\t\tthis._stateAfterCloseingTagName(c);\n\t\t} else if(this._state === IN_SELF_CLOSING_TAG){\n\t\t\tthis._stateInSelfClosingTag(c);\n\t\t}\n\n\t\t/*\n\t\t*\tattributes\n\t\t*/\n\t\telse if(this._state === BEFORE_ATTRIBUTE_NAME){\n\t\t\tthis._stateBeforeAttributeName(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_NAME){\n\t\t\tthis._stateInAttributeName(c);\n\t\t} else if(this._state === AFTER_ATTRIBUTE_NAME){\n\t\t\tthis._stateAfterAttributeName(c);\n\t\t} else if(this._state === BEFORE_ATTRIBUTE_VALUE){\n\t\t\tthis._stateBeforeAttributeValue(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_DQ){\n\t\t\tthis._stateInAttributeValueDoubleQuotes(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_SQ){\n\t\t\tthis._stateInAttributeValueSingleQuotes(c);\n\t\t} else if(this._state === IN_ATTRIBUTE_VALUE_NQ){\n\t\t\tthis._stateInAttributeValueNoQuotes(c);\n\t\t}\n\n\t\t/*\n\t\t*\tdeclarations\n\t\t*/\n\t\telse if(this._state === BEFORE_DECLARATION){\n\t\t\tthis._stateBeforeDeclaration(c);\n\t\t} else if(this._state === IN_DECLARATION){\n\t\t\tthis._stateInDeclaration(c);\n\t\t}\n\n\t\t/*\n\t\t*\tprocessing instructions\n\t\t*/\n\t\telse if(this._state === IN_PROCESSING_INSTRUCTION){\n\t\t\tthis._stateInProcessingInstruction(c);\n\t\t}\n\n\t\t/*\n\t\t*\tcomments\n\t\t*/\n\t\telse if(this._state === BEFORE_COMMENT){\n\t\t\tthis._stateBeforeComment(c);\n\t\t} else if(this._state === IN_COMMENT){\n\t\t\tthis._stateInComment(c);\n\t\t} else if(this._state === AFTER_COMMENT_1){\n\t\t\tthis._stateAfterComment1(c);\n\t\t} else if(this._state === AFTER_COMMENT_2){\n\t\t\tthis._stateAfterComment2(c);\n\t\t}\n\n\t\t/*\n\t\t*\tcdata\n\t\t*/\n\t\telse if(this._state === BEFORE_CDATA_1){\n\t\t\tthis._stateBeforeCdata1(c);\n\t\t} else if(this._state === BEFORE_CDATA_2){\n\t\t\tthis._stateBeforeCdata2(c);\n\t\t} else if(this._state === BEFORE_CDATA_3){\n\t\t\tthis._stateBeforeCdata3(c);\n\t\t} else if(this._state === BEFORE_CDATA_4){\n\t\t\tthis._stateBeforeCdata4(c);\n\t\t} else if(this._state === BEFORE_CDATA_5){\n\t\t\tthis._stateBeforeCdata5(c);\n\t\t} else if(this._state === BEFORE_CDATA_6){\n\t\t\tthis._stateBeforeCdata6(c);\n\t\t} else if(this._state === IN_CDATA){\n\t\t\tthis._stateInCdata(c);\n\t\t} else if(this._state === AFTER_CDATA_1){\n\t\t\tthis._stateAfterCdata1(c);\n\t\t} else if(this._state === AFTER_CDATA_2){\n\t\t\tthis._stateAfterCdata2(c);\n\t\t}\n\n\t\t/*\n\t\t* special tags\n\t\t*/\n\t\telse if(this._state === BEFORE_SPECIAL){\n\t\t\tthis._stateBeforeSpecial(c);\n\t\t} else if(this._state === BEFORE_SPECIAL_END){\n\t\t\tthis._stateBeforeSpecialEnd(c);\n\t\t}\n\n\t\t/*\n\t\t* script\n\t\t*/\n\t\telse if(this._state === BEFORE_SCRIPT_1){\n\t\t\tthis._stateBeforeScript1(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_2){\n\t\t\tthis._stateBeforeScript2(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_3){\n\t\t\tthis._stateBeforeScript3(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_4){\n\t\t\tthis._stateBeforeScript4(c);\n\t\t} else if(this._state === BEFORE_SCRIPT_5){\n\t\t\tthis._stateBeforeScript5(c);\n\t\t}\n\n\t\telse if(this._state === AFTER_SCRIPT_1){\n\t\t\tthis._stateAfterScript1(c);\n\t\t} else if(this._state === AFTER_SCRIPT_2){\n\t\t\tthis._stateAfterScript2(c);\n\t\t} else if(this._state === AFTER_SCRIPT_3){\n\t\t\tthis._stateAfterScript3(c);\n\t\t} else if(this._state === AFTER_SCRIPT_4){\n\t\t\tthis._stateAfterScript4(c);\n\t\t} else if(this._state === AFTER_SCRIPT_5){\n\t\t\tthis._stateAfterScript5(c);\n\t\t}\n\n\t\t/*\n\t\t* style\n\t\t*/\n\t\telse if(this._state === BEFORE_STYLE_1){\n\t\t\tthis._stateBeforeStyle1(c);\n\t\t} else if(this._state === BEFORE_STYLE_2){\n\t\t\tthis._stateBeforeStyle2(c);\n\t\t} else if(this._state === BEFORE_STYLE_3){\n\t\t\tthis._stateBeforeStyle3(c);\n\t\t} else if(this._state === BEFORE_STYLE_4){\n\t\t\tthis._stateBeforeStyle4(c);\n\t\t}\n\n\t\telse if(this._state === AFTER_STYLE_1){\n\t\t\tthis._stateAfterStyle1(c);\n\t\t} else if(this._state === AFTER_STYLE_2){\n\t\t\tthis._stateAfterStyle2(c);\n\t\t} else if(this._state === AFTER_STYLE_3){\n\t\t\tthis._stateAfterStyle3(c);\n\t\t} else if(this._state === AFTER_STYLE_4){\n\t\t\tthis._stateAfterStyle4(c);\n\t\t}\n\n\t\t/*\n\t\t* entities\n\t\t*/\n\t\telse if(this._state === BEFORE_ENTITY){\n\t\t\tthis._stateBeforeEntity(c);\n\t\t} else if(this._state === BEFORE_NUMERIC_ENTITY){\n\t\t\tthis._stateBeforeNumericEntity(c);\n\t\t} else if(this._state === IN_NAMED_ENTITY){\n\t\t\tthis._stateInNamedEntity(c);\n\t\t} else if(this._state === IN_NUMERIC_ENTITY){\n\t\t\tthis._stateInNumericEntity(c);\n\t\t} else if(this._state === IN_HEX_ENTITY){\n\t\t\tthis._stateInHexEntity(c);\n\t\t}\n\n\t\telse {\n\t\t\tthis._cbs.onerror(Error(\"unknown _state\"), this._state);\n\t\t}\n\n\t\tthis._index++;\n\t}\n\n\tthis._cleanup();\n};\n\nTokenizer.prototype.pause = function(){\n\tthis._running = false;\n};\nTokenizer.prototype.resume = function(){\n\tthis._running = true;\n\n\tif(this._index < this._buffer.length){\n\t\tthis._parse();\n\t}\n\tif(this._ended){\n\t\tthis._finish();\n\t}\n};\n\nTokenizer.prototype.end = function(chunk){\n\tif(this._ended) this._cbs.onerror(Error(\".end() after done!\"));\n\tif(chunk) this.write(chunk);\n\n\tthis._ended = true;\n\n\tif(this._running) this._finish();\n};\n\nTokenizer.prototype._finish = function(){\n\t//if there is remaining data, emit it in a reasonable way\n\tif(this._sectionStart < this._index){\n\t\tthis._handleTrailingData();\n\t}\n\n\tthis._cbs.onend();\n};\n\nTokenizer.prototype._handleTrailingData = function(){\n\tvar data = this._buffer.substr(this._sectionStart);\n\n\tif(this._state === IN_CDATA || this._state === AFTER_CDATA_1 || this._state === AFTER_CDATA_2){\n\t\tthis._cbs.oncdata(data);\n\t} else if(this._state === IN_COMMENT || this._state === AFTER_COMMENT_1 || this._state === AFTER_COMMENT_2){\n\t\tthis._cbs.oncomment(data);\n\t} else if(this._state === IN_NAMED_ENTITY && !this._xmlMode){\n\t\tthis._parseLegacyEntity();\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(this._state === IN_NUMERIC_ENTITY && !this._xmlMode){\n\t\tthis._decodeNumericEntity(2, 10);\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(this._state === IN_HEX_ENTITY && !this._xmlMode){\n\t\tthis._decodeNumericEntity(3, 16);\n\t\tif(this._sectionStart < this._index){\n\t\t\tthis._state = this._baseState;\n\t\t\tthis._handleTrailingData();\n\t\t}\n\t} else if(\n\t\tthis._state !== IN_TAG_NAME &&\n\t\tthis._state !== BEFORE_ATTRIBUTE_NAME &&\n\t\tthis._state !== BEFORE_ATTRIBUTE_VALUE &&\n\t\tthis._state !== AFTER_ATTRIBUTE_NAME &&\n\t\tthis._state !== IN_ATTRIBUTE_NAME &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_SQ &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_DQ &&\n\t\tthis._state !== IN_ATTRIBUTE_VALUE_NQ &&\n\t\tthis._state !== IN_CLOSING_TAG_NAME\n\t){\n\t\tthis._cbs.ontext(data);\n\t}\n\t//else, ignore remaining data\n\t//TODO add a way to remove current tag\n};\n\nTokenizer.prototype.reset = function(){\n\tTokenizer.call(this, {xmlMode: this._xmlMode, decodeEntities: this._decodeEntities}, this._cbs);\n};\n\nTokenizer.prototype.getAbsoluteIndex = function(){\n\treturn this._bufferOffset + this._index;\n};\n\nTokenizer.prototype._getSection = function(){\n\treturn this._buffer.substring(this._sectionStart, this._index);\n};\n\nTokenizer.prototype._emitToken = function(name){\n\tthis._cbs[name](this._getSection());\n\tthis._sectionStart = -1;\n};\n\nTokenizer.prototype._emitPartial = function(value){\n\tif(this._baseState !== TEXT){\n\t\tthis._cbs.onattribdata(value); //TODO implement the new event\n\t} else {\n\t\tthis._cbs.ontext(value);\n\t}\n};\n","var decodeMap = require(\"../maps/decode.json\");\n\nmodule.exports = decodeCodePoint;\n\n// modified version of https://github.com/mathiasbynens/he/blob/master/src/he.js#L94-L119\nfunction decodeCodePoint(codePoint){\n\n\tif((codePoint >= 0xD800 && codePoint <= 0xDFFF) || codePoint > 0x10FFFF){\n\t\treturn \"\\uFFFD\";\n\t}\n\n\tif(codePoint in decodeMap){\n\t\tcodePoint = decodeMap[codePoint];\n\t}\n\n\tvar output = \"\";\n\n\tif(codePoint > 0xFFFF){\n\t\tcodePoint -= 0x10000;\n\t\toutput += String.fromCharCode(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\tcodePoint = 0xDC00 | codePoint & 0x3FF;\n\t}\n\n\toutput += String.fromCharCode(codePoint);\n\treturn output;\n}\n","// This object will be used as the prototype for Nodes when creating a\n// DOM-Level-1-compliant structure.\nvar NodePrototype = module.exports = {\n\tget firstChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[0] || null;\n\t},\n\tget lastChild() {\n\t\tvar children = this.children;\n\t\treturn children && children[children.length - 1] || null;\n\t},\n\tget nodeType() {\n\t\treturn nodeTypes[this.type] || nodeTypes.element;\n\t}\n};\n\nvar domLvl1 = {\n\ttagName: \"name\",\n\tchildNodes: \"children\",\n\tparentNode: \"parent\",\n\tpreviousSibling: \"prev\",\n\tnextSibling: \"next\",\n\tnodeValue: \"data\"\n};\n\nvar nodeTypes = {\n\telement: 1,\n\ttext: 3,\n\tcdata: 4,\n\tcomment: 8\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(NodePrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","module.exports = Stream;\n\nvar Parser = require(\"./Parser.js\"),\n WritableStream = require(\"stream\").Writable || require(\"readable-stream\").Writable,\n StringDecoder = require(\"string_decoder\").StringDecoder,\n Buffer = require(\"buffer\").Buffer;\n\nfunction Stream(cbs, options){\n\tvar parser = this._parser = new Parser(cbs, options);\n\tvar decoder = this._decoder = new StringDecoder();\n\n\tWritableStream.call(this, {decodeStrings: false});\n\n\tthis.once(\"finish\", function(){\n\t\tparser.end(decoder.end());\n\t});\n}\n\nrequire(\"inherits\")(Stream, WritableStream);\n\nWritableStream.prototype._write = function(chunk, encoding, cb){\n\tif(chunk instanceof Buffer) chunk = this._decoder.write(chunk);\n\tthis._parser.write(chunk);\n\tcb();\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n// TODO(bmeurer): Change this back to const once hole checks are\n// properly optimized away early in Ignition+TurboFan.\n/*<replacement>*/\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar processNextTick = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n processNextTick(emitErrorNT, this, err);\n }\n return;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n processNextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return stream.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er, data) {\n done(stream, er, data);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data !== null && data !== undefined) stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","'use strict';\n\nexports.__esModule = true;\n\nvar _supportsColor = require('supports-color');\n\nvar _supportsColor2 = _interopRequireDefault(_supportsColor);\n\nvar _chalk = require('chalk');\n\nvar _chalk2 = _interopRequireDefault(_chalk);\n\nvar _terminalHighlight = require('./terminal-highlight');\n\nvar _terminalHighlight2 = _interopRequireDefault(_terminalHighlight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * The CSS parser throws this error for broken CSS.\n *\n * Custom parsers can throw this error for broken custom syntax using\n * the {@link Node#error} method.\n *\n * PostCSS will use the input source map to detect the original error location.\n * If you wrote a Sass file, compiled it to CSS and then parsed it with PostCSS,\n * PostCSS will show the original position in the Sass file.\n *\n * If you need the position in the PostCSS input\n * (e.g., to debug the previous compiler), use `error.input.file`.\n *\n * @example\n * // Catching and checking syntax error\n * try {\n * postcss.parse('a{')\n * } catch (error) {\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n * }\n *\n * @example\n * // Raising error from plugin\n * throw node.error('Unknown variable', { plugin: 'postcss-vars' });\n */\nvar CssSyntaxError = function () {\n\n /**\n * @param {string} message - error message\n * @param {number} [line] - source line of the error\n * @param {number} [column] - source column of the error\n * @param {string} [source] - source code of the broken file\n * @param {string} [file] - absolute path to the broken file\n * @param {string} [plugin] - PostCSS plugin name, if error came from plugin\n */\n function CssSyntaxError(message, line, column, source, file, plugin) {\n _classCallCheck(this, CssSyntaxError);\n\n /**\n * @member {string} - Always equal to `'CssSyntaxError'`. You should\n * always check error type\n * by `error.name === 'CssSyntaxError'` instead of\n * `error instanceof CssSyntaxError`, because\n * npm could have several PostCSS versions.\n *\n * @example\n * if ( error.name === 'CssSyntaxError' ) {\n * error //=> CssSyntaxError\n * }\n */\n this.name = 'CssSyntaxError';\n /**\n * @member {string} - Error message.\n *\n * @example\n * error.message //=> 'Unclosed block'\n */\n this.reason = message;\n\n if (file) {\n /**\n * @member {string} - Absolute path to the broken file.\n *\n * @example\n * error.file //=> 'a.sass'\n * error.input.file //=> 'a.css'\n */\n this.file = file;\n }\n if (source) {\n /**\n * @member {string} - Source code of the broken file.\n *\n * @example\n * error.source //=> 'a { b {} }'\n * error.input.column //=> 'a b { }'\n */\n this.source = source;\n }\n if (plugin) {\n /**\n * @member {string} - Plugin name, if error came from plugin.\n *\n * @example\n * error.plugin //=> 'postcss-vars'\n */\n this.plugin = plugin;\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n /**\n * @member {number} - Source line of the error.\n *\n * @example\n * error.line //=> 2\n * error.input.line //=> 4\n */\n this.line = line;\n /**\n * @member {number} - Source column of the error.\n *\n * @example\n * error.column //=> 1\n * error.input.column //=> 4\n */\n this.column = column;\n }\n\n this.setMessage();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError);\n }\n }\n\n CssSyntaxError.prototype.setMessage = function setMessage() {\n /**\n * @member {string} - Full error text in the GNU error format\n * with plugin, file, line and column.\n *\n * @example\n * error.message //=> 'a.css:1:1: Unclosed block'\n */\n this.message = this.plugin ? this.plugin + ': ' : '';\n this.message += this.file ? this.file : '<css input>';\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column;\n }\n this.message += ': ' + this.reason;\n };\n\n /**\n * Returns a few lines of CSS source that caused the error.\n *\n * If the CSS has an input source map without `sourceContent`,\n * this method will return an empty string.\n *\n * @param {boolean} [color] whether arrow will be colored red by terminal\n * color codes. By default, PostCSS will detect\n * color support by `process.stdout.isTTY`\n * and `process.env.NODE_DISABLE_COLORS`.\n *\n * @example\n * error.showSourceCode() //=> \" 4 | }\n * // 5 | a {\n * // > 6 | bad\n * // | ^\n * // 7 | }\n * // 8 | b {\"\n *\n * @return {string} few lines of CSS source that caused the error\n */\n\n\n CssSyntaxError.prototype.showSourceCode = function showSourceCode(color) {\n var _this = this;\n\n if (!this.source) return '';\n\n var css = this.source;\n if (typeof color === 'undefined') color = _supportsColor2.default.stdout;\n if (color) css = (0, _terminalHighlight2.default)(css);\n\n var lines = css.split(/\\r?\\n/);\n var start = Math.max(this.line - 3, 0);\n var end = Math.min(this.line + 2, lines.length);\n\n var maxWidth = String(end).length;\n\n function mark(text) {\n if (color && _chalk2.default.red) {\n return _chalk2.default.red.bold(text);\n } else {\n return text;\n }\n }\n function aside(text) {\n if (color && _chalk2.default.gray) {\n return _chalk2.default.gray(text);\n } else {\n return text;\n }\n }\n\n return lines.slice(start, end).map(function (line, index) {\n var number = start + 1 + index;\n var gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';\n if (number === _this.line) {\n var spacing = aside(gutter.replace(/\\d/g, ' ')) + line.slice(0, _this.column - 1).replace(/[^\\t]/g, ' ');\n return mark('>') + aside(gutter) + line + '\\n ' + spacing + mark('^');\n } else {\n return ' ' + aside(gutter) + line;\n }\n }).join('\\n');\n };\n\n /**\n * Returns error position, message and source code of the broken part.\n *\n * @example\n * error.toString() //=> \"CssSyntaxError: app.css:1:1: Unclosed block\n * // > 1 | a {\n * // | ^\"\n *\n * @return {string} error position, message and source code\n */\n\n\n CssSyntaxError.prototype.toString = function toString() {\n var code = this.showSourceCode();\n if (code) {\n code = '\\n\\n' + code + '\\n';\n }\n return this.name + ': ' + this.message + code;\n };\n\n /**\n * @memberof CssSyntaxError#\n * @member {Input} input - Input object with PostCSS internal information\n * about input file. If input has source map\n * from previous tool, PostCSS will use origin\n * (for example, Sass) source. You can use this\n * object to get PostCSS input source.\n *\n * @example\n * error.input.file //=> 'a.css'\n * error.file //=> 'a.sass'\n */\n\n return CssSyntaxError;\n}();\n\nexports.default = CssSyntaxError;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNzcy1zeW50YXgtZXJyb3IuZXM2Il0sIm5hbWVzIjpbIkNzc1N5bnRheEVycm9yIiwibWVzc2FnZSIsImxpbmUiLCJjb2x1bW4iLCJzb3VyY2UiLCJmaWxlIiwicGx1Z2luIiwibmFtZSIsInJlYXNvbiIsInNldE1lc3NhZ2UiLCJFcnJvciIsImNhcHR1cmVTdGFja1RyYWNlIiwic2hvd1NvdXJjZUNvZGUiLCJjb2xvciIsImNzcyIsInN1cHBvcnRzQ29sb3IiLCJzdGRvdXQiLCJsaW5lcyIsInNwbGl0Iiwic3RhcnQiLCJNYXRoIiwibWF4IiwiZW5kIiwibWluIiwibGVuZ3RoIiwibWF4V2lkdGgiLCJTdHJpbmciLCJtYXJrIiwidGV4dCIsImNoYWxrIiwicmVkIiwiYm9sZCIsImFzaWRlIiwiZ3JheSIsInNsaWNlIiwibWFwIiwiaW5kZXgiLCJudW1iZXIiLCJndXR0ZXIiLCJzcGFjaW5nIiwicmVwbGFjZSIsImpvaW4iLCJ0b1N0cmluZyIsImNvZGUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTJCTUEsYzs7QUFFRjs7Ozs7Ozs7QUFRQSw0QkFBWUMsT0FBWixFQUFxQkMsSUFBckIsRUFBMkJDLE1BQTNCLEVBQW1DQyxNQUFuQyxFQUEyQ0MsSUFBM0MsRUFBaURDLE1BQWpELEVBQXlEO0FBQUE7O0FBQ3JEOzs7Ozs7Ozs7Ozs7QUFZQSxhQUFLQyxJQUFMLEdBQVksZ0JBQVo7QUFDQTs7Ozs7O0FBTUEsYUFBS0MsTUFBTCxHQUFjUCxPQUFkOztBQUVBLFlBQUtJLElBQUwsRUFBWTtBQUNSOzs7Ozs7O0FBT0EsaUJBQUtBLElBQUwsR0FBWUEsSUFBWjtBQUNIO0FBQ0QsWUFBS0QsTUFBTCxFQUFjO0FBQ1Y7Ozs7Ozs7QUFPQSxpQkFBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0g7QUFDRCxZQUFLRSxNQUFMLEVBQWM7QUFDVjs7Ozs7O0FBTUEsaUJBQUtBLE1B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QUF2QyxFQUFpRCxHQUFqRCxDQUZKO0FBR0EsdUJBQU9iLEtBQUssR0FBTCxJQUFZSyxNQUFNTSxNQUFOLENBQVosR0FBNEJwQyxJQUE1QixHQUFtQyxLQUFuQyxHQUNBcUMsT0FEQSxHQUNVWixLQUFLLEdBQUwsQ0FEakI7QUFFSCxhQU5ELE1BTU87QUFDSCx1QkFBTyxNQUFNSyxNQUFNTSxNQUFOLENBQU4sR0FBc0JwQyxJQUE3QjtBQUNIO0FBQ0osU0FaTSxFQVlKdUMsSUFaSSxDQVlDLElBWkQsQ0FBUDtBQWFILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs2QkFVQUMsUSx1QkFBVztBQUNQLFlBQUlDLE9BQU8sS0FBSy9CLGNBQUwsRUFBWDtBQUNBLFlBQUsrQixJQUFMLEVBQVk7QUFDUkEsbUJBQU8sU0FBU0EsSUFBVCxHQUFnQixJQUF2QjtBQUNIO0FBQ0QsZUFBTyxLQUFLcEMsSUFBTCxHQUFZLElBQVosR0FBbUIsS0FBS04sT0FBeEIsR0FBa0MwQyxJQUF6QztBQUNILEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7a0JBZVczQyxjIiwiZmlsZSI6ImNzcy1zeW50YXgtZXJyb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc3VwcG9ydHNDb2xvciBmcm9tICdzdXBwb3J0cy1jb2xvcic7XG5pbXBvcnQgY2hhbGsgICAgICAgICBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB0ZXJtaW5hbEhpZ2hsaWdodCBmcm9tICcuL3Rlcm1pbmFsLWhpZ2hsaWdodCc7XG5cbi8qKlxuICogVGhlIENTUyBwYXJzZXIgdGhyb3dzIHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBDU1MuXG4gKlxuICogQ3VzdG9tIHBhcnNlcnMgY2FuIHRocm93IHRoaXMgZXJyb3IgZm9yIGJyb2tlbiBjdXN0b20gc3ludGF4IHVzaW5nXG4gKiB0aGUge0BsaW5rIE5vZGUjZXJyb3J9IG1ldGhvZC5cbiAqXG4gKiBQb3N0Q1NTIHdpbGwgdXNlIHRoZSBpbnB1dCBzb3VyY2UgbWFwIHRvIGRldGVjdCB0aGUgb3JpZ2luYWwgZXJyb3IgbG9jYXRpb24uXG4gKiBJZiB5b3Ugd3JvdGUgYSBTYXNzIGZpbGUsIGNvbXBpbGVkIGl0IHRvIENTUyBhbmQgdGhlbiBwYXJzZWQgaXQgd2l0aCBQb3N0Q1NTLFxuICogUG9zdENTUyB3aWxsIHNob3cgdGhlIG9yaWdpbmFsIHBvc2l0aW9uIGluIHRoZSBTYXNzIGZpbGUuXG4gKlxuICogSWYgeW91IG5lZWQgdGhlIHBvc2l0aW9uIGluIHRoZSBQb3N0Q1NTIGlucHV0XG4gKiAoZS5nLiwgdG8gZGVidWcgdGhlIHByZXZpb3VzIGNvbXBpbGVyKSwgdXNlIGBlcnJvci5pbnB1dC5maWxlYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2F0Y2hpbmcgYW5kIGNoZWNraW5nIHN5bnRheCBlcnJvclxuICogdHJ5IHtcbiAqICAgcG9zdGNzcy5wYXJzZSgnYXsnKVxuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICkge1xuICogICAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAqICAgfVxuICogfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSYWlzaW5nIGVycm9yIGZyb20gcGx1Z2luXG4gKiB0aHJvdyBub2RlLmVycm9yKCdVbmtub3duIHZhcmlhYmxlJywgeyBwbHVnaW46ICdwb3N0Y3NzLXZhcnMnIH0pO1xuICovXG5jbGFzcyBDc3NTeW50YXhFcnJvciB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAgLSBlcnJvciBtZXNzYWdlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtsaW5lXSAgIC0gc291cmNlIGxpbmUgb2YgdGhlIGVycm9yXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IFtjb2x1bW5dIC0gc291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3JcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NvdXJjZV0gLSBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGVcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2ZpbGVdICAgLSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBicm9rZW4gZmlsZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbcGx1Z2luXSAtIFBvc3RDU1MgcGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIHNvdXJjZSwgZmlsZSwgcGx1Z2luKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQWx3YXlzIGVxdWFsIHRvIGAnQ3NzU3ludGF4RXJyb3InYC4gWW91IHNob3VsZFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgYWx3YXlzIGNoZWNrIGVycm9yIHR5cGVcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIGJ5IGBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InYCBpbnN0ZWFkIG9mXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICBgZXJyb3IgaW5zdGFuY2VvZiBDc3NTeW50YXhFcnJvcmAsIGJlY2F1c2VcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIG5wbSBjb3VsZCBoYXZlIHNldmVyYWwgUG9zdENTUyB2ZXJzaW9ucy5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICkge1xuICAgICAgICAgKiAgIGVycm9yIC8vPT4gQ3NzU3ludGF4RXJyb3JcbiAgICAgICAgICogfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5uYW1lID0gJ0Nzc1N5bnRheEVycm9yJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBFcnJvciBtZXNzYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiBlcnJvci5tZXNzYWdlIC8vPT4gJ1VuY2xvc2VkIGJsb2NrJ1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yZWFzb24gPSBtZXNzYWdlO1xuXG4gICAgICAgIGlmICggZmlsZSApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIEFic29sdXRlIHBhdGggdG8gdGhlIGJyb2tlbiBmaWxlLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgICAgICAgICAqIGVycm9yLmlucHV0LmZpbGUgLy89PiAnYS5jc3MnXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBzb3VyY2UgKSB7XG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBTb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIGZpbGUuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLnNvdXJjZSAgICAgICAvLz0+ICdhIHsgYiB7fSB9J1xuICAgICAgICAgICAgICogZXJyb3IuaW5wdXQuY29sdW1uIC8vPT4gJ2EgYiB7IH0nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICggcGx1Z2luICkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gUGx1Z2luIG5hbWUsIGlmIGVycm9yIGNhbWUgZnJvbSBwbHVnaW4uXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLnBsdWdpbiAvLz0+ICdwb3N0Y3NzLXZhcnMnXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB9XG4gICAgICAgIGlmICggdHlwZW9mIGxpbmUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb2x1bW4gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gU291cmNlIGxpbmUgb2YgdGhlIGVycm9yLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBlcnJvci5saW5lICAgICAgIC8vPT4gMlxuICAgICAgICAgICAgICogZXJyb3IuaW5wdXQubGluZSAvLz0+IDRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5saW5lICAgPSBsaW5lO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gU291cmNlIGNvbHVtbiBvZiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgKlxuICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAqIGVycm9yLmNvbHVtbiAgICAgICAvLz0+IDFcbiAgICAgICAgICAgICAqIGVycm9yLmlucHV0LmNvbHVtbiAvLz0+IDRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldE1lc3NhZ2UoKTtcblxuICAgICAgICBpZiAoIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlICkge1xuICAgICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgQ3NzU3ludGF4RXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TWVzc2FnZSgpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBGdWxsIGVycm9yIHRleHQgaW4gdGhlIEdOVSBlcnJvciBmb3JtYXRcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHdpdGggcGx1Z2luLCBmaWxlLCBsaW5lIGFuZCBjb2x1bW4uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGVycm9yLm1lc3NhZ2UgLy89PiAnYS5jc3M6MToxOiBVbmNsb3NlZCBibG9jaydcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWVzc2FnZSAgPSB0aGlzLnBsdWdpbiA/IHRoaXMucGx1Z2luICsgJzogJyA6ICcnO1xuICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gdGhpcy5maWxlID8gdGhpcy5maWxlIDogJzxjc3MgaW5wdXQ+JztcbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5saW5lICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSArPSAnOicgKyB0aGlzLmxpbmUgKyAnOicgKyB0aGlzLmNvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lc3NhZ2UgKz0gJzogJyArIHRoaXMucmVhc29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBmZXcgbGluZXMgb2YgQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgZXJyb3IuXG4gICAgICpcbiAgICAgKiBJZiB0aGUgQ1NTIGhhcyBhbiBpbnB1dCBzb3VyY2UgbWFwIHdpdGhvdXQgYHNvdXJjZUNvbnRlbnRgLFxuICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbG9yXSB3aGV0aGVyIGFycm93IHdpbGwgYmUgY29sb3JlZCByZWQgYnkgdGVybWluYWxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgY29kZXMuIEJ5IGRlZmF1bHQsIFBvc3RDU1Mgd2lsbCBkZXRlY3RcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3Igc3VwcG9ydCBieSBgcHJvY2Vzcy5zdGRvdXQuaXNUVFlgXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBgcHJvY2Vzcy5lbnYuTk9ERV9ESVNBQkxFX0NPTE9SU2AuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLnNob3dTb3VyY2VDb2RlKCkgLy89PiBcIiAgNCB8IH1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgNSB8IGEge1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgPiA2IHwgICBiYWRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICB8ICAgXlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA3IHwgfVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICA4IHwgYiB7XCJcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gZmV3IGxpbmVzIG9mIENTUyBzb3VyY2UgdGhhdCBjYXVzZWQgdGhlIGVycm9yXG4gICAgICovXG4gICAgc2hvd1NvdXJjZUNvZGUoY29sb3IpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5zb3VyY2UgKSByZXR1cm4gJyc7XG5cbiAgICAgICAgbGV0IGNzcyA9IHRoaXMuc291cmNlO1xuICAgICAgICBpZiAoIHR5cGVvZiBjb2xvciA9PT0gJ3VuZGVmaW5lZCcgKSBjb2xvciA9IHN1cHBvcnRzQ29sb3Iuc3Rkb3V0O1xuICAgICAgICBpZiAoIGNvbG9yICkgY3NzID0gdGVybWluYWxIaWdobGlnaHQoY3NzKTtcblxuICAgICAgICBsZXQgbGluZXMgPSBjc3Muc3BsaXQoL1xccj9cXG4vKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gTWF0aC5tYXgodGhpcy5saW5lIC0gMywgMCk7XG4gICAgICAgIGxldCBlbmQgICA9IE1hdGgubWluKHRoaXMubGluZSArIDIsIGxpbmVzLmxlbmd0aCk7XG5cbiAgICAgICAgbGV0IG1heFdpZHRoID0gU3RyaW5nKGVuZCkubGVuZ3RoO1xuXG4gICAgICAgIGZ1bmN0aW9uIG1hcmsodGV4dCkge1xuICAgICAgICAgICAgaWYgKCBjb2xvciAmJiBjaGFsay5yZWQgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYWxrLnJlZC5ib2xkKHRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhc2lkZSh0ZXh0KSB7XG4gICAgICAgICAgICBpZiAoIGNvbG9yICYmIGNoYWxrLmdyYXkgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNoYWxrLmdyYXkodGV4dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbmVzLnNsaWNlKHN0YXJ0LCBlbmQpLm1hcCggKGxpbmUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBsZXQgbnVtYmVyID0gc3RhcnQgKyAxICsgaW5kZXg7XG4gICAgICAgICAgICBsZXQgZ3V0dGVyID0gJyAnICsgKCcgJyArIG51bWJlcikuc2xpY2UoLW1heFdpZHRoKSArICcgfCAnO1xuICAgICAgICAgICAgaWYgKCBudW1iZXIgPT09IHRoaXMubGluZSApIHtcbiAgICAgICAgICAgICAgICBsZXQgc3BhY2luZyA9XG4gICAgICAgICAgICAgICAgICAgIGFzaWRlKGd1dHRlci5yZXBsYWNlKC9cXGQvZywgJyAnKSkgK1xuICAgICAgICAgICAgICAgICAgICBsaW5lLnNsaWNlKDAsIHRoaXMuY29sdW1uIC0gMSkucmVwbGFjZSgvW15cXHRdL2csICcgJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hcmsoJz4nKSArIGFzaWRlKGd1dHRlcikgKyBsaW5lICsgJ1xcbiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZyArIG1hcmsoJ14nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcgJyArIGFzaWRlKGd1dHRlcikgKyBsaW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZSBvZiB0aGUgYnJva2VuIHBhcnQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGVycm9yLnRvU3RyaW5nKCkgLy89PiBcIkNzc1N5bnRheEVycm9yOiBhcHAuY3NzOjE6MTogVW5jbG9zZWQgYmxvY2tcbiAgICAgKiAgICAgICAgICAgICAgICAgIC8vICAgID4gMSB8IGEge1xuICAgICAqICAgICAgICAgICAgICAgICAgLy8gICAgICAgIHwgXlwiXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IGVycm9yIHBvc2l0aW9uLCBtZXNzYWdlIGFuZCBzb3VyY2UgY29kZVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBsZXQgY29kZSA9IHRoaXMuc2hvd1NvdXJjZUNvZGUoKTtcbiAgICAgICAgaWYgKCBjb2RlICkge1xuICAgICAgICAgICAgY29kZSA9ICdcXG5cXG4nICsgY29kZSArICdcXG4nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWUgKyAnOiAnICsgdGhpcy5tZXNzYWdlICsgY29kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgQ3NzU3ludGF4RXJyb3IjXG4gICAgICogQG1lbWJlciB7SW5wdXR9IGlucHV0IC0gSW5wdXQgb2JqZWN0IHdpdGggUG9zdENTUyBpbnRlcm5hbCBpbmZvcm1hdGlvblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFib3V0IGlucHV0IGZpbGUuIElmIGlucHV0IGhhcyBzb3VyY2UgbWFwXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBwcmV2aW91cyB0b29sLCBQb3N0Q1NTIHdpbGwgdXNlIG9yaWdpblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2Fzcykgc291cmNlLiBZb3UgY2FuIHVzZSB0aGlzXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0IHRvIGdldCBQb3N0Q1NTIGlucHV0IHNvdXJjZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogZXJyb3IuaW5wdXQuZmlsZSAvLz0+ICdhLmNzcydcbiAgICAgKiBlcnJvci5maWxlICAgICAgIC8vPT4gJ2Euc2FzcydcbiAgICAgKi9cblxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NTeW50YXhFcnJvcjtcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.default = tokenizer;\nvar SINGLE_QUOTE = 39;\nvar DOUBLE_QUOTE = 34;\nvar BACKSLASH = 92;\nvar SLASH = 47;\nvar NEWLINE = 10;\nvar SPACE = 32;\nvar FEED = 12;\nvar TAB = 9;\nvar CR = 13;\nvar OPEN_SQUARE = 91;\nvar CLOSE_SQUARE = 93;\nvar OPEN_PARENTHESES = 40;\nvar CLOSE_PARENTHESES = 41;\nvar OPEN_CURLY = 123;\nvar CLOSE_CURLY = 125;\nvar SEMICOLON = 59;\nvar ASTERISK = 42;\nvar COLON = 58;\nvar AT = 64;\n\nvar RE_AT_END = /[ \\n\\t\\r\\f\\{\\}\\(\\)'\"\\\\;/\\[\\]#]/g;\nvar RE_WORD_END = /[ \\n\\t\\r\\f\\(\\)\\{\\}:;@!'\"\\\\\\]\\[#]|\\/(?=\\*)/g;\nvar RE_BAD_BRACKET = /.[\\\\\\/\\(\"'\\n]/;\nvar RE_HEX_ESCAPE = /[a-f0-9]/i;\n\nfunction tokenizer(input) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var css = input.css.valueOf();\n var ignore = options.ignoreErrors;\n\n var code = void 0,\n next = void 0,\n quote = void 0,\n lines = void 0,\n last = void 0,\n content = void 0,\n escape = void 0,\n nextLine = void 0,\n nextOffset = void 0,\n escaped = void 0,\n escapePos = void 0,\n prev = void 0,\n n = void 0,\n currentToken = void 0;\n\n var length = css.length;\n var offset = -1;\n var line = 1;\n var pos = 0;\n var buffer = [];\n var returned = [];\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, line, pos - offset);\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length;\n }\n\n function nextToken() {\n if (returned.length) return returned.pop();\n if (pos >= length) return;\n\n code = css.charCodeAt(pos);\n if (code === NEWLINE || code === FEED || code === CR && css.charCodeAt(pos + 1) !== NEWLINE) {\n offset = pos;\n line += 1;\n }\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED:\n next = pos;\n do {\n next += 1;\n code = css.charCodeAt(next);\n if (code === NEWLINE) {\n offset = next;\n line += 1;\n }\n } while (code === SPACE || code === NEWLINE || code === TAB || code === CR || code === FEED);\n\n currentToken = ['space', css.slice(pos, next)];\n pos = next - 1;\n break;\n\n case OPEN_SQUARE:\n currentToken = ['[', '[', line, pos - offset];\n break;\n\n case CLOSE_SQUARE:\n currentToken = [']', ']', line, pos - offset];\n break;\n\n case OPEN_CURLY:\n currentToken = ['{', '{', line, pos - offset];\n break;\n\n case CLOSE_CURLY:\n currentToken = ['}', '}', line, pos - offset];\n break;\n\n case COLON:\n currentToken = [':', ':', line, pos - offset];\n break;\n\n case SEMICOLON:\n currentToken = [';', ';', line, pos - offset];\n break;\n\n case OPEN_PARENTHESES:\n prev = buffer.length ? buffer.pop()[1] : '';\n n = css.charCodeAt(pos + 1);\n if (prev === 'url' && n !== SINGLE_QUOTE && n !== DOUBLE_QUOTE && n !== SPACE && n !== NEWLINE && n !== TAB && n !== FEED && n !== CR) {\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(')', next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos;\n break;\n } else {\n unclosed('bracket');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n currentToken = ['brackets', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n } else {\n next = css.indexOf(')', pos + 1);\n content = css.slice(pos, next + 1);\n\n if (next === -1 || RE_BAD_BRACKET.test(content)) {\n currentToken = ['(', '(', line, pos - offset];\n } else {\n currentToken = ['brackets', content, line, pos - offset, line, next - offset];\n pos = next;\n }\n }\n\n break;\n\n case CLOSE_PARENTHESES:\n currentToken = [')', ')', line, pos - offset];\n break;\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE:\n quote = code === SINGLE_QUOTE ? '\\'' : '\"';\n next = pos;\n do {\n escaped = false;\n next = css.indexOf(quote, next + 1);\n if (next === -1) {\n if (ignore) {\n next = pos + 1;\n break;\n } else {\n unclosed('string');\n }\n }\n escapePos = next;\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1;\n escaped = !escaped;\n }\n } while (escaped);\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['string', css.slice(pos, next + 1), line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n break;\n\n case AT:\n RE_AT_END.lastIndex = pos + 1;\n RE_AT_END.test(css);\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_AT_END.lastIndex - 2;\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n case BACKSLASH:\n next = pos;\n escape = true;\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1;\n escape = !escape;\n }\n code = css.charCodeAt(next + 1);\n if (escape && code !== SLASH && code !== SPACE && code !== NEWLINE && code !== TAB && code !== CR && code !== FEED) {\n next += 1;\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1;\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1;\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n pos = next;\n break;\n\n default:\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1;\n if (next === 0) {\n if (ignore) {\n next = css.length;\n } else {\n unclosed('comment');\n }\n }\n\n content = css.slice(pos, next + 1);\n lines = content.split('\\n');\n last = lines.length - 1;\n\n if (last > 0) {\n nextLine = line + last;\n nextOffset = next - lines[last].length;\n } else {\n nextLine = line;\n nextOffset = offset;\n }\n\n currentToken = ['comment', content, line, pos - offset, nextLine, next - nextOffset];\n\n offset = nextOffset;\n line = nextLine;\n pos = next;\n } else {\n RE_WORD_END.lastIndex = pos + 1;\n RE_WORD_END.test(css);\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1;\n } else {\n next = RE_WORD_END.lastIndex - 2;\n }\n\n currentToken = ['word', css.slice(pos, next + 1), line, pos - offset, line, next - offset];\n\n buffer.push(currentToken);\n\n pos = next;\n }\n\n break;\n }\n\n pos++;\n return currentToken;\n }\n\n function back(token) {\n returned.push(token);\n }\n\n return {\n back: back,\n nextToken: nextToken,\n endOfFile: endOfFile\n };\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRva2VuaXplLmVzNiJdLCJuYW1lcyI6WyJ0b2tlbml6ZXIiLCJTSU5HTEVfUVVPVEUiLCJET1VCTEVfUVVPVEUiLCJCQUNLU0xBU0giLCJTTEFTSCIsIk5FV0xJTkUiLCJTUEFDRSIsIkZFRUQiLCJUQUIiLCJDUiIsIk9QRU5fU1FVQVJFIiwiQ0xPU0VfU1FVQVJFIiwiT1BFTl9QQVJFTlRIRVNFUyIsIkNMT1NFX1BBUkVOVEhFU0VTIiwiT1BFTl9DVVJMWSIsIkNMT1NFX0NVUkxZIiwiU0VNSUNPTE9OIiwiQVNURVJJU0siLCJDT0xPTiIsIkFUIiwiUkVfQVRfRU5EIiwiUkVfV09SRF9FTkQiLCJSRV9CQURfQlJBQ0tFVCIsIlJFX0hFWF9FU0NBUEUiLCJpbnB1dCIsIm9wdGlvbnMiLCJjc3MiLCJ2YWx1ZU9mIiwiaWdub3JlIiwiaWdub3JlRXJyb3JzIiwiY29kZSIsIm5leHQiLCJxdW90ZSIsImxpbmVzIiwibGFzdCIsImNvbnRlbnQiLCJlc2NhcGUiLCJuZXh0TGluZSIsIm5leHRPZmZzZXQiLCJlc2NhcGVkIiwiZXNjYXBlUG9zIiwicHJldiIsIm4iLCJjdXJyZW50VG9rZW4iLCJsZW5ndGgiLCJvZmZzZXQiLCJsaW5lIiwicG9zIiwiYnVmZmVyIiwicmV0dXJuZWQiLCJ1bmNsb3NlZCIsIndoYXQiLCJlcnJvciIsImVuZE9mRmlsZSIsIm5leHRUb2tlbiIsInBvcCIsImNoYXJDb2RlQXQiLCJzbGljZSIsImluZGV4T2YiLCJ0ZXN0Iiwic3BsaXQiLCJsYXN0SW5kZXgiLCJjaGFyQXQiLCJwdXNoIiwiYmFjayIsInRva2VuIl0sIm1hcHBpbmdzIjoiOzs7a0JBeUJ3QkEsUztBQXpCeEIsSUFBTUMsaUJBQU47QUFDQSxJQUFNQyxpQkFBTjtBQUNBLElBQU1DLGNBQU47QUFDQSxJQUFNQyxVQUFOO0FBQ0EsSUFBTUMsWUFBTjtBQUNBLElBQU1DLFVBQU47QUFDQSxJQUFNQyxTQUFOO0FBQ0EsSUFBTUMsT0FBTjtBQUNBLElBQU1DLE9BQU47QUFDQSxJQUFNQyxnQkFBTjtBQUNBLElBQU1DLGlCQUFOO0FBQ0EsSUFBTUMscUJBQU47QUFDQSxJQUFNQyxzQkFBTjtBQUNBLElBQU1DLGdCQUFOO0FBQ0EsSUFBTUMsaUJBQU47QUFDQSxJQUFNQyxjQUFOO0FBQ0EsSUFBTUMsYUFBTjtBQUNBLElBQU1DLFVBQU47QUFDQSxJQUFNQyxPQUFOOztBQUVBLElBQU1DLFlBQWlCLGlDQUF2QjtBQUNBLElBQU1DLGNBQWlCLDRDQUF2QjtBQUNBLElBQU1DLGlCQUFpQixlQUF2QjtBQUNBLElBQU1DLGdCQUFpQixXQUF2Qjs7QUFFZSxTQUFTdkIsU0FBVCxDQUFtQndCLEtBQW5CLEVBQXdDO0FBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUNuRCxRQUFJQyxNQUFNRixNQUFNRSxHQUFOLENBQVVDLE9BQVYsRUFBVjtBQUNBLFFBQUlDLFNBQVNILFFBQVFJLFlBQXJCOztBQUVBLFFBQUlDLGFBQUo7QUFBQSxRQUFVQyxhQUFWO0FBQUEsUUFBZ0JDLGNBQWhCO0FBQUEsUUFBdUJDLGNBQXZCO0FBQUEsUUFBOEJDLGFBQTlCO0FBQUEsUUFBb0NDLGdCQUFwQztBQUFBLFFBQTZDQyxlQUE3QztBQUFBLFFBQ0lDLGlCQURKO0FBQUEsUUFDY0MsbUJBRGQ7QUFBQSxRQUMwQkMsZ0JBRDFCO0FBQUEsUUFDbUNDLGtCQURuQztBQUFBLFFBQzhDQyxhQUQ5QztBQUFBLFFBQ29EQyxVQURwRDtBQUFBLFFBQ3VEQyxxQkFEdkQ7O0FBR0EsUUFBSUMsU0FBU2xCLElBQUlrQixNQUFqQjtBQUNBLFFBQUlDLFNBQVMsQ0FBQyxDQUFkO0FBQ0EsUUFBSUMsT0FBTyxDQUFYO0FBQ0EsUUFBSUMsTUFBTSxDQUFWO0FBQ0EsUUFBSUMsU0FBUyxFQUFiO0FBQ0EsUUFBSUMsV0FBVyxFQUFmOztBQUVBLGFBQVNDLFFBQVQsQ0FBa0JDLElBQWxCLEVBQXdCO0FBQ3BCLGNBQU0zQixNQUFNNEIsS0FBTixDQUFZLGNBQWNELElBQTFCLEVBQWdDTCxJQUFoQyxFQUFzQ0MsTUFBTUYsTUFBNUMsQ0FBTjtBQUNIOztBQUVELGFBQVNRLFNBQVQsR0FBcUI7QUFDakIsZUFBT0osU0FBU0wsTUFBVCxLQUFvQixDQUFwQixJQUF5QkcsT0FBT0gsTUFBdkM7QUFDSDs7QUFFRCxhQUFTVSxTQUFULEdBQXFCO0FBQ2pCLFlBQUtMLFNBQVNMLE1BQWQsRUFBdUIsT0FBT0ssU0FBU00sR0FBVCxFQUFQO0FBQ3ZCLFlBQUtSLE9BQU9ILE1BQVosRUFBcUI7O0FBRXJCZCxlQUFPSixJQUFJOEIsVUFBSixDQUFlVCxHQUFmLENBQVA7QUFDQSxZQUFLakIsU0FBU3pCLE9BQVQsSUFBb0J5QixTQUFTdkIsSUFBN0IsSUFDQXVCLFNBQVNyQixFQUFULElBQWVpQixJQUFJOEIsVUFBSixDQUFlVCxNQUFNLENBQXJCLE1BQTRCMUMsT0FEaEQsRUFDMEQ7QUFDdER3QyxxQkFBU0UsR0FBVDtBQUNBRCxvQkFBUSxDQUFSO0FBQ0g7O0FBRUQsZ0JBQVNoQixJQUFUO0FBQ0EsaUJBQUt6QixPQUFMO0FBQ0EsaUJBQUtDLEtBQUw7QUFDQSxpQkFBS0UsR0FBTDtBQUNBLGlCQUFLQyxFQUFMO0FBQ0EsaUJBQUtGLElBQUw7QUFDSXdCLHVCQUFPZ0IsR0FBUDtBQUNBLG1CQUFHO0FBQ0NoQiw0QkFBUSxDQUFSO0FBQ0FELDJCQUFPSixJQUFJOEIsVUFBSixDQUFlekIsSUFBZixDQUFQO0FBQ0Esd0JBQUtELFNBQVN6QixPQUFkLEVBQXdCO0FBQ3BCd0MsaUNBQVNkLElBQVQ7QUFDQWUsZ0NBQVEsQ0FBUjtBQUNIO0FBQ0osaUJBUEQsUUFPVWhCLFNBQVN4QixLQUFULElBQ0F3QixTQUFTekIsT0FEVCxJQUVBeUIsU0FBU3RCLEdBRlQsSUFHQXNCLFNBQVNyQixFQUhULElBSUFxQixTQUFTdkIsSUFYbkI7O0FBYUFvQywrQkFBZSxDQUFDLE9BQUQsRUFBVWpCLElBQUkrQixLQUFKLENBQVVWLEdBQVYsRUFBZWhCLElBQWYsQ0FBVixDQUFmO0FBQ0FnQixzQkFBTWhCLE9BQU8sQ0FBYjtBQUNBOztBQUVKLGlCQUFLckIsV0FBTDtBQUNJaUMsK0JBQWUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXRyxJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFmO0FBQ0E7O0FBRUosaUJBQUtsQyxZQUFMO0FBQ0lnQywrQkFBZSxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVdHLElBQVgsRUFBaUJDLE1BQU1GLE1BQXZCLENBQWY7QUFDQTs7QUFFSixpQkFBSy9CLFVBQUw7QUFDSTZCLCtCQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV0csSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBZjtBQUNBOztBQUVKLGlCQUFLOUIsV0FBTDtBQUNJNEIsK0JBQWUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXRyxJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFmO0FBQ0E7O0FBRUosaUJBQUszQixLQUFMO0FBQ0l5QiwrQkFBZSxDQUFDLEdBQUQsRUFBTSxHQUFOLEVBQVdHLElBQVgsRUFBaUJDLE1BQU1GLE1BQXZCLENBQWY7QUFDQTs7QUFFSixpQkFBSzdCLFNBQUw7QUFDSTJCLCtCQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV0csSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBZjtBQUNBOztBQUVKLGlCQUFLakMsZ0JBQUw7QUFDSTZCLHVCQUFPTyxPQUFPSixNQUFQLEdBQWdCSSxPQUFPTyxHQUFQLEdBQWEsQ0FBYixDQUFoQixHQUFrQyxFQUF6QztBQUNBYixvQkFBT2hCLElBQUk4QixVQUFKLENBQWVULE1BQU0sQ0FBckIsQ0FBUDtBQUNBLG9CQUFLTixTQUFTLEtBQVQsSUFDQUMsTUFBTXpDLFlBRE4sSUFDc0J5QyxNQUFNeEMsWUFENUIsSUFFQXdDLE1BQU1wQyxLQUZOLElBRWVvQyxNQUFNckMsT0FGckIsSUFFZ0NxQyxNQUFNbEMsR0FGdEMsSUFHQWtDLE1BQU1uQyxJQUhOLElBR2NtQyxNQUFNakMsRUFIekIsRUFHOEI7QUFDMUJzQiwyQkFBT2dCLEdBQVA7QUFDQSx1QkFBRztBQUNDUixrQ0FBVSxLQUFWO0FBQ0FSLCtCQUFVTCxJQUFJZ0MsT0FBSixDQUFZLEdBQVosRUFBaUIzQixPQUFPLENBQXhCLENBQVY7QUFDQSw0QkFBS0EsU0FBUyxDQUFDLENBQWYsRUFBbUI7QUFDZixnQ0FBS0gsTUFBTCxFQUFjO0FBQ1ZHLHVDQUFPZ0IsR0FBUDtBQUNBO0FBQ0gsNkJBSEQsTUFHTztBQUNIRyx5Q0FBUyxTQUFUO0FBQ0g7QUFDSjtBQUNEVixvQ0FBWVQsSUFBWjtBQUNBLCtCQUFRTCxJQUFJOEIsVUFBSixDQUFlaEIsWUFBWSxDQUEzQixNQUFrQ3JDLFNBQTFDLEVBQXNEO0FBQ2xEcUMseUNBQWEsQ0FBYjtBQUNBRCxzQ0FBVSxDQUFDQSxPQUFYO0FBQ0g7QUFDSixxQkFoQkQsUUFnQlVBLE9BaEJWOztBQWtCQUksbUNBQWUsQ0FBQyxVQUFELEVBQWFqQixJQUFJK0IsS0FBSixDQUFVVixHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQWIsRUFDWGUsSUFEVyxFQUNMQyxNQUFPRixNQURGLEVBRVhDLElBRlcsRUFFTGYsT0FBT2MsTUFGRixDQUFmOztBQUtBRSwwQkFBTWhCLElBQU47QUFFSCxpQkE5QkQsTUE4Qk87QUFDSEEsMkJBQVVMLElBQUlnQyxPQUFKLENBQVksR0FBWixFQUFpQlgsTUFBTSxDQUF2QixDQUFWO0FBQ0FaLDhCQUFVVCxJQUFJK0IsS0FBSixDQUFVVixHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVY7O0FBRUEsd0JBQUtBLFNBQVMsQ0FBQyxDQUFWLElBQWVULGVBQWVxQyxJQUFmLENBQW9CeEIsT0FBcEIsQ0FBcEIsRUFBbUQ7QUFDL0NRLHVDQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sRUFBV0csSUFBWCxFQUFpQkMsTUFBTUYsTUFBdkIsQ0FBZjtBQUNILHFCQUZELE1BRU87QUFDSEYsdUNBQWUsQ0FBQyxVQUFELEVBQWFSLE9BQWIsRUFDWFcsSUFEVyxFQUNMQyxNQUFPRixNQURGLEVBRVhDLElBRlcsRUFFTGYsT0FBT2MsTUFGRixDQUFmO0FBSUFFLDhCQUFNaEIsSUFBTjtBQUNIO0FBQ0o7O0FBRUQ7O0FBRUosaUJBQUtsQixpQkFBTDtBQUNJOEIsK0JBQWUsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXRyxJQUFYLEVBQWlCQyxNQUFNRixNQUF2QixDQUFmO0FBQ0E7O0FBRUosaUJBQUs1QyxZQUFMO0FBQ0EsaUJBQUtDLFlBQUw7QUFDSThCLHdCQUFRRixTQUFTN0IsWUFBVCxHQUF3QixJQUF4QixHQUErQixHQUF2QztBQUNBOEIsdUJBQVFnQixHQUFSO0FBQ0EsbUJBQUc7QUFDQ1IsOEJBQVUsS0FBVjtBQUNBUiwyQkFBVUwsSUFBSWdDLE9BQUosQ0FBWTFCLEtBQVosRUFBbUJELE9BQU8sQ0FBMUIsQ0FBVjtBQUNBLHdCQUFLQSxTQUFTLENBQUMsQ0FBZixFQUFtQjtBQUNmLDRCQUFLSCxNQUFMLEVBQWM7QUFDVkcsbUNBQU9nQixNQUFNLENBQWI7QUFDQTtBQUNILHlCQUhELE1BR087QUFDSEcscUNBQVMsUUFBVDtBQUNIO0FBQ0o7QUFDRFYsZ0NBQVlULElBQVo7QUFDQSwyQkFBUUwsSUFBSThCLFVBQUosQ0FBZWhCLFlBQVksQ0FBM0IsTUFBa0NyQyxTQUExQyxFQUFzRDtBQUNsRHFDLHFDQUFhLENBQWI7QUFDQUQsa0NBQVUsQ0FBQ0EsT0FBWDtBQUNIO0FBQ0osaUJBaEJELFFBZ0JVQSxPQWhCVjs7QUFrQkFKLDBCQUFVVCxJQUFJK0IsS0FBSixDQUFVVixHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVY7QUFDQUUsd0JBQVVFLFFBQVF5QixLQUFSLENBQWMsSUFBZCxDQUFWO0FBQ0ExQix1QkFBVUQsTUFBTVcsTUFBTixHQUFlLENBQXpCOztBQUVBLG9CQUFLVixPQUFPLENBQVosRUFBZ0I7QUFDWkcsK0JBQWFTLE9BQU9aLElBQXBCO0FBQ0FJLGlDQUFhUCxPQUFPRSxNQUFNQyxJQUFOLEVBQVlVLE1BQWhDO0FBQ0gsaUJBSEQsTUFHTztBQUNIUCwrQkFBYVMsSUFBYjtBQUNBUixpQ0FBYU8sTUFBYjtBQUNIOztBQUVERiwrQkFBZSxDQUFDLFFBQUQsRUFBV2pCLElBQUkrQixLQUFKLENBQVVWLEdBQVYsRUFBZWhCLE9BQU8sQ0FBdEIsQ0FBWCxFQUNYZSxJQURXLEVBQ0xDLE1BQU9GLE1BREYsRUFFWFIsUUFGVyxFQUVETixPQUFPTyxVQUZOLENBQWY7O0FBS0FPLHlCQUFTUCxVQUFUO0FBQ0FRLHVCQUFTVCxRQUFUO0FBQ0FVLHNCQUFTaEIsSUFBVDtBQUNBOztBQUVKLGlCQUFLWixFQUFMO0FBQ0lDLDBCQUFVeUMsU0FBVixHQUFzQmQsTUFBTSxDQUE1QjtBQUNBM0IsMEJBQVV1QyxJQUFWLENBQWVqQyxHQUFmO0FBQ0Esb0JBQUtOLFVBQVV5QyxTQUFWLEtBQXdCLENBQTdCLEVBQWlDO0FBQzdCOUIsMkJBQU9MLElBQUlrQixNQUFKLEdBQWEsQ0FBcEI7QUFDSCxpQkFGRCxNQUVPO0FBQ0hiLDJCQUFPWCxVQUFVeUMsU0FBVixHQUFzQixDQUE3QjtBQUNIOztBQUVEbEIsK0JBQWUsQ0FBQyxTQUFELEVBQVlqQixJQUFJK0IsS0FBSixDQUFVVixHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVosRUFDWGUsSUFEVyxFQUNMQyxNQUFPRixNQURGLEVBRVhDLElBRlcsRUFFTGYsT0FBT2MsTUFGRixDQUFmOztBQUtBRSxzQkFBTWhCLElBQU47QUFDQTs7QUFFSixpQkFBSzVCLFNBQUw7QUFDSTRCLHVCQUFTZ0IsR0FBVDtBQUNBWCx5QkFBUyxJQUFUO0FBQ0EsdUJBQVFWLElBQUk4QixVQUFKLENBQWV6QixPQUFPLENBQXRCLE1BQTZCNUIsU0FBckMsRUFBaUQ7QUFDN0M0Qiw0QkFBUyxDQUFUO0FBQ0FLLDZCQUFTLENBQUNBLE1BQVY7QUFDSDtBQUNETix1QkFBT0osSUFBSThCLFVBQUosQ0FBZXpCLE9BQU8sQ0FBdEIsQ0FBUDtBQUNBLG9CQUFLSyxVQUFXTixTQUFTMUIsS0FBVCxJQUNBMEIsU0FBU3hCLEtBRFQsSUFFQXdCLFNBQVN6QixPQUZULElBR0F5QixTQUFTdEIsR0FIVCxJQUlBc0IsU0FBU3JCLEVBSlQsSUFLQXFCLFNBQVN2QixJQUx6QixFQUtrQztBQUM5QndCLDRCQUFRLENBQVI7QUFDQSx3QkFBS1IsY0FBY29DLElBQWQsQ0FBbUJqQyxJQUFJb0MsTUFBSixDQUFXL0IsSUFBWCxDQUFuQixDQUFMLEVBQTRDO0FBQ3hDLCtCQUFRUixjQUFjb0MsSUFBZCxDQUFtQmpDLElBQUlvQyxNQUFKLENBQVcvQixPQUFPLENBQWxCLENBQW5CLENBQVIsRUFBbUQ7QUFDL0NBLG9DQUFRLENBQVI7QUFDSDtBQUNELDRCQUFLTCxJQUFJOEIsVUFBSixDQUFlekIsT0FBTyxDQUF0QixNQUE2QnpCLEtBQWxDLEVBQTBDO0FBQ3RDeUIsb0NBQVEsQ0FBUjtBQUNIO0FBQ0o7QUFDSjs7QUFFRFksK0JBQWUsQ0FBQyxNQUFELEVBQVNqQixJQUFJK0IsS0FBSixDQUFVVixHQUFWLEVBQWVoQixPQUFPLENBQXRCLENBQVQsRUFDWGUsSUFEVyxFQUNMQyxNQUFPRixNQURGLEVBRVhDLElBRlcsRUFFTGYsT0FBT2MsTUFGRixDQUFmOztBQUtBRSxzQkFBTWhCLElBQU47QUFDQTs7QUFFSjtBQUNJLG9CQUFLRCxTQUFTMUIsS0FBVCxJQUFrQnNCLElBQUk4QixVQUFKLENBQWVULE1BQU0sQ0FBckIsTUFBNEI5QixRQUFuRCxFQUE4RDtBQUMxRGMsMkJBQU9MLElBQUlnQyxPQUFKLENBQVksSUFBWixFQUFrQlgsTUFBTSxDQUF4QixJQUE2QixDQUFwQztBQUNBLHdCQUFLaEIsU0FBUyxDQUFkLEVBQWtCO0FBQ2QsNEJBQUtILE1BQUwsRUFBYztBQUNWRyxtQ0FBT0wsSUFBSWtCLE1BQVg7QUFDSCx5QkFGRCxNQUVPO0FBQ0hNLHFDQUFTLFNBQVQ7QUFDSDtBQUNKOztBQUVEZiw4QkFBVVQsSUFBSStCLEtBQUosQ0FBVVYsR0FBVixFQUFlaEIsT0FBTyxDQUF0QixDQUFWO0FBQ0FFLDRCQUFVRSxRQUFReUIsS0FBUixDQUFjLElBQWQsQ0FBVjtBQUNBMUIsMkJBQVVELE1BQU1XLE1BQU4sR0FBZSxDQUF6Qjs7QUFFQSx3QkFBS1YsT0FBTyxDQUFaLEVBQWdCO0FBQ1pHLG1DQUFhUyxPQUFPWixJQUFwQjtBQUNBSSxxQ0FBYVAsT0FBT0UsTUFBTUMsSUFBTixFQUFZVSxNQUFoQztBQUNILHFCQUhELE1BR087QUFDSFAsbUNBQWFTLElBQWI7QUFDQVIscUNBQWFPLE1BQWI7QUFDSDs7QUFFREYsbUNBQWUsQ0FBQyxTQUFELEVBQVlSLE9BQVosRUFDWFcsSUFEVyxFQUNEQyxNQUFPRixNQUROLEVBRVhSLFFBRlcsRUFFRE4sT0FBT08sVUFGTixDQUFmOztBQUtBTyw2QkFBU1AsVUFBVDtBQUNBUSwyQkFBU1QsUUFBVDtBQUNBVSwwQkFBU2hCLElBQVQ7QUFFSCxpQkEvQkQsTUErQk87QUFDSFYsZ0NBQVl3QyxTQUFaLEdBQXdCZCxNQUFNLENBQTlCO0FBQ0ExQixnQ0FBWXNDLElBQVosQ0FBaUJqQyxHQUFqQjtBQUNBLHdCQUFLTCxZQUFZd0MsU0FBWixLQUEwQixDQUEvQixFQUFtQztBQUMvQjlCLCtCQUFPTCxJQUFJa0IsTUFBSixHQUFhLENBQXBCO0FBQ0gscUJBRkQsTUFFTztBQUNIYiwrQkFBT1YsWUFBWXdDLFNBQVosR0FBd0IsQ0FBL0I7QUFDSDs7QUFFRGxCLG1DQUFlLENBQUMsTUFBRCxFQUFTakIsSUFBSStCLEtBQUosQ0FBVVYsR0FBVixFQUFlaEIsT0FBTyxDQUF0QixDQUFULEVBQ1hlLElBRFcsRUFDTEMsTUFBT0YsTUFERixFQUVYQyxJQUZXLEVBRUxmLE9BQU9jLE1BRkYsQ0FBZjs7QUFLQUcsMkJBQU9lLElBQVAsQ0FBWXBCLFlBQVo7O0FBRUFJLDBCQUFNaEIsSUFBTjtBQUNIOztBQUVEO0FBdlBKOztBQTBQQWdCO0FBQ0EsZUFBT0osWUFBUDtBQUNIOztBQUVELGFBQVNxQixJQUFULENBQWNDLEtBQWQsRUFBcUI7QUFDakJoQixpQkFBU2MsSUFBVCxDQUFjRSxLQUFkO0FBQ0g7O0FBRUQsV0FBTztBQUNIRCxrQkFERztBQUVIViw0QkFGRztBQUdIRDtBQUhHLEtBQVA7QUFLSCIsImZpbGUiOiJ0b2tlbml6ZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNJTkdMRV9RVU9URSAgICAgID0gJ1xcJycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IERPVUJMRV9RVU9URSAgICAgID0gICdcIicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IEJBQ0tTTEFTSCAgICAgICAgID0gJ1xcXFwnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBTTEFTSCAgICAgICAgICAgICA9ICAnLycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IE5FV0xJTkUgICAgICAgICAgID0gJ1xcbicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IFNQQUNFICAgICAgICAgICAgID0gICcgJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgRkVFRCAgICAgICAgICAgICAgPSAnXFxmJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgVEFCICAgICAgICAgICAgICAgPSAnXFx0Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ1IgICAgICAgICAgICAgICAgPSAnXFxyJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgT1BFTl9TUVVBUkUgICAgICAgPSAgJ1snLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBDTE9TRV9TUVVBUkUgICAgICA9ICAnXScuY2hhckNvZGVBdCgwKTtcbmNvbnN0IE9QRU5fUEFSRU5USEVTRVMgID0gICcoJy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQ0xPU0VfUEFSRU5USEVTRVMgPSAgJyknLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBPUEVOX0NVUkxZICAgICAgICA9ICAneycuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENMT1NFX0NVUkxZICAgICAgID0gICd9Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgU0VNSUNPTE9OICAgICAgICAgPSAgJzsnLmNoYXJDb2RlQXQoMCk7XG5jb25zdCBBU1RFUklTSyAgICAgICAgICA9ICAnKicuY2hhckNvZGVBdCgwKTtcbmNvbnN0IENPTE9OICAgICAgICAgICAgID0gICc6Jy5jaGFyQ29kZUF0KDApO1xuY29uc3QgQVQgICAgICAgICAgICAgICAgPSAgJ0AnLmNoYXJDb2RlQXQoMCk7XG5cbmNvbnN0IFJFX0FUX0VORCAgICAgID0gL1sgXFxuXFx0XFxyXFxmXFx7XFx9XFwoXFwpJ1wiXFxcXDsvXFxbXFxdI10vZztcbmNvbnN0IFJFX1dPUkRfRU5EICAgID0gL1sgXFxuXFx0XFxyXFxmXFwoXFwpXFx7XFx9OjtAISdcIlxcXFxcXF1cXFsjXXxcXC8oPz1cXCopL2c7XG5jb25zdCBSRV9CQURfQlJBQ0tFVCA9IC8uW1xcXFxcXC9cXChcIidcXG5dLztcbmNvbnN0IFJFX0hFWF9FU0NBUEUgID0gL1thLWYwLTldL2k7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRva2VuaXplcihpbnB1dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNzcyA9IGlucHV0LmNzcy52YWx1ZU9mKCk7XG4gICAgbGV0IGlnbm9yZSA9IG9wdGlvbnMuaWdub3JlRXJyb3JzO1xuXG4gICAgbGV0IGNvZGUsIG5leHQsIHF1b3RlLCBsaW5lcywgbGFzdCwgY29udGVudCwgZXNjYXBlLFxuICAgICAgICBuZXh0TGluZSwgbmV4dE9mZnNldCwgZXNjYXBlZCwgZXNjYXBlUG9zLCBwcmV2LCBuLCBjdXJyZW50VG9rZW47XG5cbiAgICBsZXQgbGVuZ3RoID0gY3NzLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gLTE7XG4gICAgbGV0IGxpbmUgPSAxO1xuICAgIGxldCBwb3MgPSAwO1xuICAgIGxldCBidWZmZXIgPSBbXTtcbiAgICBsZXQgcmV0dXJuZWQgPSBbXTtcblxuICAgIGZ1bmN0aW9uIHVuY2xvc2VkKHdoYXQpIHtcbiAgICAgICAgdGhyb3cgaW5wdXQuZXJyb3IoJ1VuY2xvc2VkICcgKyB3aGF0LCBsaW5lLCBwb3MgLSBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGVuZE9mRmlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHJldHVybmVkLmxlbmd0aCA9PT0gMCAmJiBwb3MgPj0gbGVuZ3RoO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG5leHRUb2tlbigpIHtcbiAgICAgICAgaWYgKCByZXR1cm5lZC5sZW5ndGggKSByZXR1cm4gcmV0dXJuZWQucG9wKCk7XG4gICAgICAgIGlmICggcG9zID49IGxlbmd0aCApIHJldHVybjtcblxuICAgICAgICBjb2RlID0gY3NzLmNoYXJDb2RlQXQocG9zKTtcbiAgICAgICAgaWYgKCBjb2RlID09PSBORVdMSU5FIHx8IGNvZGUgPT09IEZFRUQgfHxcbiAgICAgICAgICAgICBjb2RlID09PSBDUiAmJiBjc3MuY2hhckNvZGVBdChwb3MgKyAxKSAhPT0gTkVXTElORSApIHtcbiAgICAgICAgICAgIG9mZnNldCA9IHBvcztcbiAgICAgICAgICAgIGxpbmUgKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoIGNvZGUgKSB7XG4gICAgICAgIGNhc2UgTkVXTElORTpcbiAgICAgICAgY2FzZSBTUEFDRTpcbiAgICAgICAgY2FzZSBUQUI6XG4gICAgICAgIGNhc2UgQ1I6XG4gICAgICAgIGNhc2UgRkVFRDpcbiAgICAgICAgICAgIG5leHQgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIGNvZGUgPT09IE5FV0xJTkUgKSB7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggY29kZSA9PT0gU1BBQ0UgICB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IE5FV0xJTkUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjb2RlID09PSBUQUIgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgY29kZSA9PT0gQ1IgICAgICB8fFxuICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IEZFRUQgKTtcblxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWydzcGFjZScsIGNzcy5zbGljZShwb3MsIG5leHQpXTtcbiAgICAgICAgICAgIHBvcyA9IG5leHQgLSAxO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX1NRVUFSRTpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnWycsICdbJywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ0xPU0VfU1FVQVJFOlxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWyddJywgJ10nLCBsaW5lLCBwb3MgLSBvZmZzZXRdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBPUEVOX0NVUkxZOlxuICAgICAgICAgICAgY3VycmVudFRva2VuID0gWyd7JywgJ3snLCBsaW5lLCBwb3MgLSBvZmZzZXRdO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9DVVJMWTpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnfScsICd9JywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQ09MT046XG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJzonLCAnOicsIGxpbmUsIHBvcyAtIG9mZnNldF07XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNFTUlDT0xPTjpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnOycsICc7JywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgT1BFTl9QQVJFTlRIRVNFUzpcbiAgICAgICAgICAgIHByZXYgPSBidWZmZXIubGVuZ3RoID8gYnVmZmVyLnBvcCgpWzFdIDogJyc7XG4gICAgICAgICAgICBuICAgID0gY3NzLmNoYXJDb2RlQXQocG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoIHByZXYgPT09ICd1cmwnICYmXG4gICAgICAgICAgICAgICAgIG4gIT09IFNJTkdMRV9RVU9URSAmJiBuICE9PSBET1VCTEVfUVVPVEUgJiZcbiAgICAgICAgICAgICAgICAgbiAhPT0gU1BBQ0UgJiYgbiAhPT0gTkVXTElORSAmJiBuICE9PSBUQUIgJiZcbiAgICAgICAgICAgICAgICAgbiAhPT0gRkVFRCAmJiBuICE9PSBDUiApIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGlnbm9yZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0ID0gcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmNsb3NlZCgnYnJhY2tldCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZVBvcyA9IG5leHQ7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZVBvcyAtPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXNjYXBlZCA9ICFlc2NhcGVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAoIGVzY2FwZWQgKTtcblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYnJhY2tldHMnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgICAgICAgICAgIGxpbmUsIHBvcyAgLSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ICAgID0gY3NzLmluZGV4T2YoJyknLCBwb3MgKyAxKTtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAtMSB8fCBSRV9CQURfQlJBQ0tFVC50ZXN0KGNvbnRlbnQpICkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJygnLCAnKCcsIGxpbmUsIHBvcyAtIG9mZnNldF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gWydicmFja2V0cycsIGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBDTE9TRV9QQVJFTlRIRVNFUzpcbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnKScsICcpJywgbGluZSwgcG9zIC0gb2Zmc2V0XTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU0lOR0xFX1FVT1RFOlxuICAgICAgICBjYXNlIERPVUJMRV9RVU9URTpcbiAgICAgICAgICAgIHF1b3RlID0gY29kZSA9PT0gU0lOR0xFX1FVT1RFID8gJ1xcJycgOiAnXCInO1xuICAgICAgICAgICAgbmV4dCAgPSBwb3M7XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG5leHQgICAgPSBjc3MuaW5kZXhPZihxdW90ZSwgbmV4dCArIDEpO1xuICAgICAgICAgICAgICAgIGlmICggbmV4dCA9PT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggaWdub3JlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHBvcyArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuY2xvc2VkKCdzdHJpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlc2NhcGVQb3MgPSBuZXh0O1xuICAgICAgICAgICAgICAgIHdoaWxlICggY3NzLmNoYXJDb2RlQXQoZXNjYXBlUG9zIC0gMSkgPT09IEJBQ0tTTEFTSCApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlUG9zIC09IDE7XG4gICAgICAgICAgICAgICAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlICggZXNjYXBlZCApO1xuXG4gICAgICAgICAgICBjb250ZW50ID0gY3NzLnNsaWNlKHBvcywgbmV4dCArIDEpO1xuICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgbGFzdCAgICA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgICAgICAgIGlmICggbGFzdCA+IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgIG5leHRPZmZzZXQgPSBuZXh0IC0gbGluZXNbbGFzdF0ubGVuZ3RoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3N0cmluZycsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIG5leHRMaW5lLCBuZXh0IC0gbmV4dE9mZnNldFxuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgb2Zmc2V0ID0gbmV4dE9mZnNldDtcbiAgICAgICAgICAgIGxpbmUgICA9IG5leHRMaW5lO1xuICAgICAgICAgICAgcG9zICAgID0gbmV4dDtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQVQ6XG4gICAgICAgICAgICBSRV9BVF9FTkQubGFzdEluZGV4ID0gcG9zICsgMTtcbiAgICAgICAgICAgIFJFX0FUX0VORC50ZXN0KGNzcyk7XG4gICAgICAgICAgICBpZiAoIFJFX0FUX0VORC5sYXN0SW5kZXggPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXh0ID0gUkVfQVRfRU5ELmxhc3RJbmRleCAtIDI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnYXQtd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICBsaW5lLCBwb3MgIC0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIGxpbmUsIG5leHQgLSBvZmZzZXRcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIHBvcyA9IG5leHQ7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEJBQ0tTTEFTSDpcbiAgICAgICAgICAgIG5leHQgICA9IHBvcztcbiAgICAgICAgICAgIGVzY2FwZSA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoIGNzcy5jaGFyQ29kZUF0KG5leHQgKyAxKSA9PT0gQkFDS1NMQVNIICkge1xuICAgICAgICAgICAgICAgIG5leHQgICs9IDE7XG4gICAgICAgICAgICAgICAgZXNjYXBlID0gIWVzY2FwZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvZGUgPSBjc3MuY2hhckNvZGVBdChuZXh0ICsgMSk7XG4gICAgICAgICAgICBpZiAoIGVzY2FwZSAmJiAoY29kZSAhPT0gU0xBU0ggICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IFNQQUNFICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlICE9PSBORVdMSU5FICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSAhPT0gVEFCICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgIT09IENSICAgICAgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlICE9PSBGRUVEICkgKSB7XG4gICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgIGlmICggUkVfSEVYX0VTQ0FQRS50ZXN0KGNzcy5jaGFyQXQobmV4dCkpICkge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIFJFX0hFWF9FU0NBUEUudGVzdChjc3MuY2hhckF0KG5leHQgKyAxKSkgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCBjc3MuY2hhckNvZGVBdChuZXh0ICsgMSkgPT09IFNQQUNFICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCArPSAxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ3dvcmQnLCBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSksXG4gICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICBsaW5lLCBuZXh0IC0gb2Zmc2V0XG4gICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICBwb3MgPSBuZXh0O1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmICggY29kZSA9PT0gU0xBU0ggJiYgY3NzLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IEFTVEVSSVNLICkge1xuICAgICAgICAgICAgICAgIG5leHQgPSBjc3MuaW5kZXhPZignKi8nLCBwb3MgKyAyKSArIDE7XG4gICAgICAgICAgICAgICAgaWYgKCBuZXh0ID09PSAwICkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIGlnbm9yZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBjc3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdW5jbG9zZWQoJ2NvbW1lbnQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjc3Muc2xpY2UocG9zLCBuZXh0ICsgMSk7XG4gICAgICAgICAgICAgICAgbGluZXMgICA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgICAgICAgICAgICAgIGxhc3QgICAgPSBsaW5lcy5sZW5ndGggLSAxO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBsYXN0ID4gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUgICA9IGxpbmUgKyBsYXN0O1xuICAgICAgICAgICAgICAgICAgICBuZXh0T2Zmc2V0ID0gbmV4dCAtIGxpbmVzW2xhc3RdLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuZXh0TGluZSAgID0gbGluZTtcbiAgICAgICAgICAgICAgICAgICAgbmV4dE9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjdXJyZW50VG9rZW4gPSBbJ2NvbW1lbnQnLCBjb250ZW50LFxuICAgICAgICAgICAgICAgICAgICBsaW5lLCAgICAgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dExpbmUsIG5leHQgLSBuZXh0T2Zmc2V0XG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIG9mZnNldCA9IG5leHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgbGluZSAgID0gbmV4dExpbmU7XG4gICAgICAgICAgICAgICAgcG9zICAgID0gbmV4dDtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBSRV9XT1JEX0VORC5sYXN0SW5kZXggPSBwb3MgKyAxO1xuICAgICAgICAgICAgICAgIFJFX1dPUkRfRU5ELnRlc3QoY3NzKTtcbiAgICAgICAgICAgICAgICBpZiAoIFJFX1dPUkRfRU5ELmxhc3RJbmRleCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbmV4dCA9IGNzcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQgPSBSRV9XT1JEX0VORC5sYXN0SW5kZXggLSAyO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IFsnd29yZCcsIGNzcy5zbGljZShwb3MsIG5leHQgKyAxKSxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgcG9zICAtIG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbGluZSwgbmV4dCAtIG9mZnNldFxuICAgICAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChjdXJyZW50VG9rZW4pO1xuXG4gICAgICAgICAgICAgICAgcG9zID0gbmV4dDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBwb3MrKztcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRUb2tlbjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiYWNrKHRva2VuKSB7XG4gICAgICAgIHJldHVybmVkLnB1c2godG9rZW4pO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGJhY2ssXG4gICAgICAgIG5leHRUb2tlbixcbiAgICAgICAgZW5kT2ZGaWxlXG4gICAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _cssSyntaxError = require('./css-syntax-error');\n\nvar _cssSyntaxError2 = _interopRequireDefault(_cssSyntaxError);\n\nvar _previousMap = require('./previous-map');\n\nvar _previousMap2 = _interopRequireDefault(_previousMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar sequence = 0;\n\n/**\n * Represents the source CSS.\n *\n * @example\n * const root = postcss.parse(css, { from: file });\n * const input = root.source.input;\n */\n\nvar Input = function () {\n\n /**\n * @param {string} css - input CSS source\n * @param {object} [opts] - {@link Processor#process} options\n */\n function Input(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Input);\n\n if (css === null || (typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && !css.toString) {\n throw new Error('PostCSS received ' + css + ' instead of CSS string');\n }\n\n /**\n * @member {string} - input CSS source\n *\n * @example\n * const input = postcss.parse('a{}', { from: file }).input;\n * input.css //=> \"a{}\";\n */\n this.css = css.toString();\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.css = this.css.slice(1);\n }\n\n if (opts.from) {\n if (/^\\w+:\\/\\//.test(opts.from)) {\n /**\n * @member {string} - The absolute path to the CSS source file\n * defined with the `from` option.\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.file //=> '/home/ai/a.css'\n */\n this.file = opts.from;\n } else {\n this.file = _path2.default.resolve(opts.from);\n }\n }\n\n var map = new _previousMap2.default(this.css, opts);\n if (map.text) {\n /**\n * @member {PreviousMap} - The input source map passed from\n * a compilation step before PostCSS\n * (for example, from Sass compiler).\n *\n * @example\n * root.source.input.map.consumer().sources //=> ['a.sass']\n */\n this.map = map;\n var file = map.consumer().file;\n if (!this.file && file) this.file = this.mapResolve(file);\n }\n\n if (!this.file) {\n sequence += 1;\n /**\n * @member {string} - The unique ID of the CSS source. It will be\n * created if `from` option is not provided\n * (because PostCSS does not know the file path).\n *\n * @example\n * const root = postcss.parse(css);\n * root.source.input.file //=> undefined\n * root.source.input.id //=> \"<input css 1>\"\n */\n this.id = '<input css ' + sequence + '>';\n }\n if (this.map) this.map.file = this.from;\n }\n\n Input.prototype.error = function error(message, line, column) {\n var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var result = void 0;\n var origin = this.origin(line, column);\n if (origin) {\n result = new _cssSyntaxError2.default(message, origin.line, origin.column, origin.source, origin.file, opts.plugin);\n } else {\n result = new _cssSyntaxError2.default(message, line, column, this.css, this.file, opts.plugin);\n }\n\n result.input = { line: line, column: column, source: this.css };\n if (this.file) result.input.file = this.file;\n\n return result;\n };\n\n /**\n * Reads the input source map and returns a symbol position\n * in the input source (e.g., in a Sass file that was compiled\n * to CSS before being passed to PostCSS).\n *\n * @param {number} line - line in input CSS\n * @param {number} column - column in input CSS\n *\n * @return {filePosition} position in input source\n *\n * @example\n * root.source.input.origin(1, 1) //=> { file: 'a.css', line: 3, column: 1 }\n */\n\n\n Input.prototype.origin = function origin(line, column) {\n if (!this.map) return false;\n var consumer = this.map.consumer();\n\n var from = consumer.originalPositionFor({ line: line, column: column });\n if (!from.source) return false;\n\n var result = {\n file: this.mapResolve(from.source),\n line: from.line,\n column: from.column\n };\n\n var source = consumer.sourceContentFor(from.source);\n if (source) result.source = source;\n\n return result;\n };\n\n Input.prototype.mapResolve = function mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file;\n } else {\n return _path2.default.resolve(this.map.consumer().sourceRoot || '.', file);\n }\n };\n\n /**\n * The CSS source identifier. Contains {@link Input#file} if the user\n * set the `from` option, or {@link Input#id} if they did not.\n * @type {string}\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.css' });\n * root.source.input.from //=> \"/home/ai/a.css\"\n *\n * const root = postcss.parse(css);\n * root.source.input.from //=> \"<input css 1>\"\n */\n\n\n _createClass(Input, [{\n key: 'from',\n get: function get() {\n return this.file || this.id;\n }\n }]);\n\n return Input;\n}();\n\nexports.default = Input;\n\n/**\n * @typedef {object} filePosition\n * @property {string} file - path to file\n * @property {number} line - source line in file\n * @property {number} column - source column in file\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmVzNiJdLCJuYW1lcyI6WyJzZXF1ZW5jZSIsIklucHV0IiwiY3NzIiwib3B0cyIsInRvU3RyaW5nIiwiRXJyb3IiLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwibWFwIiwiUHJldmlvdXNNYXAiLCJ0ZXh0IiwiY29uc3VtZXIiLCJtYXBSZXNvbHZlIiwiaWQiLCJlcnJvciIsIm1lc3NhZ2UiLCJsaW5lIiwiY29sdW1uIiwicmVzdWx0Iiwib3JpZ2luIiwiQ3NzU3ludGF4RXJyb3IiLCJzb3VyY2UiLCJwbHVnaW4iLCJpbnB1dCIsIm9yaWdpbmFsUG9zaXRpb25Gb3IiLCJzb3VyY2VDb250ZW50Rm9yIiwic291cmNlUm9vdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7Ozs7O0FBRUEsSUFBSUEsV0FBVyxDQUFmOztBQUVBOzs7Ozs7OztJQU9NQyxLOztBQUVGOzs7O0FBSUEsbUJBQVlDLEdBQVosRUFBNkI7QUFBQSxZQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQUE7O0FBQ3pCLFlBQUtELFFBQVEsSUFBUixJQUFnQixRQUFPQSxHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBZixJQUEyQixDQUFDQSxJQUFJRSxRQUFyRCxFQUFnRTtBQUM1RCxrQkFBTSxJQUFJQyxLQUFKLHVCQUErQkgsR0FBL0IsNEJBQU47QUFDSDs7QUFFRDs7Ozs7OztBQU9BLGFBQUtBLEdBQUwsR0FBV0EsSUFBSUUsUUFBSixFQUFYOztBQUVBLFlBQUssS0FBS0YsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBaEIsSUFBNEIsS0FBS0EsR0FBTCxDQUFTLENBQVQsTUFBZ0IsUUFBakQsRUFBNEQ7QUFDeEQsaUJBQUtBLEdBQUwsR0FBVyxLQUFLQSxHQUFMLENBQVNJLEtBQVQsQ0FBZSxDQUFmLENBQVg7QUFDSDs7QUFFRCxZQUFLSCxLQUFLSSxJQUFWLEVBQWlCO0FBQ2IsZ0JBQUssWUFBWUMsSUFBWixD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QixtQkFBT0EsSUFBUDtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPQyxlQUFLQyxPQUFMLENBQWEsS0FBS0MsR0FBTCxDQUFTRyxRQUFULEdBQW9CZSxVQUFwQixJQUFrQyxHQUEvQyxFQUFvRHJCLElBQXBELENBQVA7QUFDSDtBQUNKLEs7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBWVc7QUFDUCxtQkFBTyxLQUFLQSxJQUFMLElBQWEsS0FBS1EsRUFBekI7QUFDSDs7Ozs7O2tCQUlVaEIsSzs7QUFFZiIsImZpbGUiOiJpbnB1dC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDc3NTeW50YXhFcnJvciBmcm9tICcuL2Nzcy1zeW50YXgtZXJyb3InO1xuaW1wb3J0IFByZXZpb3VzTWFwICAgIGZyb20gJy4vcHJldmlvdXMtbWFwJztcblxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmxldCBzZXF1ZW5jZSA9IDA7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgc291cmNlIENTUy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgcm9vdCAgPSBwb3N0Y3NzLnBhcnNlKGNzcywgeyBmcm9tOiBmaWxlIH0pO1xuICogY29uc3QgaW5wdXQgPSByb290LnNvdXJjZS5pbnB1dDtcbiAqL1xuY2xhc3MgSW5wdXQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGNzcyAgICAtIGlucHV0IENTUyBzb3VyY2VcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gW29wdHNdIC0ge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvcHRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY3NzLCBvcHRzID0geyB9KSB7XG4gICAgICAgIGlmICggY3NzID09PSBudWxsIHx8IHR5cGVvZiBjc3MgPT09ICdvYmplY3QnICYmICFjc3MudG9TdHJpbmcgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBvc3RDU1MgcmVjZWl2ZWQgJHsgY3NzIH0gaW5zdGVhZCBvZiBDU1Mgc3RyaW5nYCk7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIGlucHV0IENTUyBzb3VyY2VcbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3QgaW5wdXQgPSBwb3N0Y3NzLnBhcnNlKCdhe30nLCB7IGZyb206IGZpbGUgfSkuaW5wdXQ7XG4gICAgICAgICAqIGlucHV0LmNzcyAvLz0+IFwiYXt9XCI7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmNzcyA9IGNzcy50b1N0cmluZygpO1xuXG4gICAgICAgIGlmICggdGhpcy5jc3NbMF0gPT09ICdcXHVGRUZGJyB8fCB0aGlzLmNzc1swXSA9PT0gJ1xcdUZGRkUnICkge1xuICAgICAgICAgICAgdGhpcy5jc3MgPSB0aGlzLmNzcy5zbGljZSgxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggb3B0cy5mcm9tICkge1xuICAgICAgICAgICAgaWYgKCAvXlxcdys6XFwvXFwvLy50ZXN0KG9wdHMuZnJvbSkgKSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBDU1Mgc291cmNlIGZpbGVcbiAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCB3aXRoIHRoZSBgZnJvbWAgb3B0aW9uLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICAgICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgICAgICAgICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5maWxlIC8vPT4gJy9ob21lL2FpL2EuY3NzJ1xuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsZSA9IG9wdHMuZnJvbTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlID0gcGF0aC5yZXNvbHZlKG9wdHMuZnJvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWFwID0gbmV3IFByZXZpb3VzTWFwKHRoaXMuY3NzLCBvcHRzKTtcbiAgICAgICAgaWYgKCBtYXAudGV4dCApIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7UHJldmlvdXNNYXB9IC0gVGhlIGlucHV0IHNvdXJjZSBtYXAgcGFzc2VkIGZyb21cbiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGlsYXRpb24gc3RlcCBiZWZvcmUgUG9zdENTU1xuICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgKGZvciBleGFtcGxlLCBmcm9tIFNhc3MgY29tcGlsZXIpLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiByb290LnNvdXJjZS5pbnB1dC5tYXAuY29uc3VtZXIoKS5zb3VyY2VzIC8vPT4gWydhLnNhc3MnXVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLm1hcCA9IG1hcDtcbiAgICAgICAgICAgIGxldCBmaWxlID0gbWFwLmNvbnN1bWVyKCkuZmlsZTtcbiAgICAgICAgICAgIGlmICggIXRoaXMuZmlsZSAmJiBmaWxlICkgdGhpcy5maWxlID0gdGhpcy5tYXBSZXNvbHZlKGZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCAhdGhpcy5maWxlICkge1xuICAgICAgICAgICAgc2VxdWVuY2UgKz0gMTtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQG1lbWJlciB7c3RyaW5nfSAtIFRoZSB1bmlxdWUgSUQgb2YgdGhlIENTUyBzb3VyY2UuIEl0IHdpbGwgYmVcbiAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGlmIGBmcm9tYCBvcHRpb24gaXMgbm90IHByb3ZpZGVkXG4gICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgKGJlY2F1c2UgUG9zdENTUyBkb2VzIG5vdCBrbm93IHRoZSBmaWxlIHBhdGgpLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpO1xuICAgICAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuZmlsZSAvLz0+IHVuZGVmaW5lZFxuICAgICAgICAgICAgICogcm9vdC5zb3VyY2UuaW5wdXQuaWQgICAvLz0+IFwiPGlucHV0IGNzcyAxPlwiXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuaWQgICA9ICc8aW5wdXQgY3NzICcgKyBzZXF1ZW5jZSArICc+JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIHRoaXMubWFwICkgdGhpcy5tYXAuZmlsZSA9IHRoaXMuZnJvbTtcbiAgICB9XG5cbiAgICBlcnJvcihtZXNzYWdlLCBsaW5lLCBjb2x1bW4sIG9wdHMgPSB7IH0pIHtcbiAgICAgICAgbGV0IHJlc3VsdDtcbiAgICAgICAgbGV0IG9yaWdpbiA9IHRoaXMub3JpZ2luKGxpbmUsIGNvbHVtbik7XG4gICAgICAgIGlmICggb3JpZ2luICkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbmV3IENzc1N5bnRheEVycm9yKG1lc3NhZ2UsIG9yaWdpbi5saW5lLCBvcmlnaW4uY29sdW1uLFxuICAgICAgICAgICAgICAgIG9yaWdpbi5zb3VyY2UsIG9yaWdpbi5maWxlLCBvcHRzLnBsdWdpbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgQ3NzU3ludGF4RXJyb3IobWVzc2FnZSwgbGluZSwgY29sdW1uLFxuICAgICAgICAgICAgICAgIHRoaXMuY3NzLCB0aGlzLmZpbGUsIG9wdHMucGx1Z2luKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdC5pbnB1dCA9IHsgbGluZSwgY29sdW1uLCBzb3VyY2U6IHRoaXMuY3NzIH07XG4gICAgICAgIGlmICggdGhpcy5maWxlICkgcmVzdWx0LmlucHV0LmZpbGUgPSB0aGlzLmZpbGU7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWFkcyB0aGUgaW5wdXQgc291cmNlIG1hcCBhbmQgcmV0dXJucyBhIHN5bWJvbCBwb3NpdGlvblxuICAgICAqIGluIHRoZSBpbnB1dCBzb3VyY2UgKGUuZy4sIGluIGEgU2FzcyBmaWxlIHRoYXQgd2FzIGNvbXBpbGVkXG4gICAgICogdG8gQ1NTIGJlZm9yZSBiZWluZyBwYXNzZWQgdG8gUG9zdENTUykuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZSAgIC0gbGluZSBpbiBpbnB1dCBDU1NcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uIC0gY29sdW1uIGluIGlucHV0IENTU1xuICAgICAqXG4gICAgICogQHJldHVybiB7ZmlsZVBvc2l0aW9ufSBwb3NpdGlvbiBpbiBpbnB1dCBzb3VyY2VcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcm9vdC5zb3VyY2UuaW5wdXQub3JpZ2luKDEsIDEpIC8vPT4geyBmaWxlOiAnYS5jc3MnLCBsaW5lOiAzLCBjb2x1bW46IDEgfVxuICAgICAqL1xuICAgIG9yaWdpbihsaW5lLCBjb2x1bW4pIHtcbiAgICAgICAgaWYgKCAhdGhpcy5tYXAgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBjb25zdW1lciA9IHRoaXMubWFwLmNvbnN1bWVyKCk7XG5cbiAgICAgICAgbGV0IGZyb20gPSBjb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHsgbGluZSwgY29sdW1uIH0pO1xuICAgICAgICBpZiAoICFmcm9tLnNvdXJjZSApIHJldHVybiBmYWxzZTtcblxuICAgICAgICBsZXQgcmVzdWx0ID0ge1xuICAgICAgICAgICAgZmlsZTogICB0aGlzLm1hcFJlc29sdmUoZnJvbS5zb3VyY2UpLFxuICAgICAgICAgICAgbGluZTogICBmcm9tLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGZyb20uY29sdW1uXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IHNvdXJjZSA9IGNvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3IoZnJvbS5zb3VyY2UpO1xuICAgICAgICBpZiAoIHNvdXJjZSApIHJlc3VsdC5zb3VyY2UgPSBzb3VyY2U7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBtYXBSZXNvbHZlKGZpbGUpIHtcbiAgICAgICAgaWYgKCAvXlxcdys6XFwvXFwvLy50ZXN0KGZpbGUpICkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMubWFwLmNvbnN1bWVyKCkuc291cmNlUm9vdCB8fCAnLicsIGZpbGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIENTUyBzb3VyY2UgaWRlbnRpZmllci4gQ29udGFpbnMge0BsaW5rIElucHV0I2ZpbGV9IGlmIHRoZSB1c2VyXG4gICAgICogc2V0IHRoZSBgZnJvbWAgb3B0aW9uLCBvciB7QGxpbmsgSW5wdXQjaWR9IGlmIHRoZXkgZGlkIG5vdC5cbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2EuY3NzJyB9KTtcbiAgICAgKiByb290LnNvdXJjZS5pbnB1dC5mcm9tIC8vPT4gXCIvaG9tZS9haS9hLmNzc1wiXG4gICAgICpcbiAgICAgKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MpO1xuICAgICAqIHJvb3Quc291cmNlLmlucHV0LmZyb20gLy89PiBcIjxpbnB1dCBjc3MgMT5cIlxuICAgICAqL1xuICAgIGdldCBmcm9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlIHx8IHRoaXMuaWQ7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IElucHV0O1xuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBmaWxlUG9zaXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBmaWxlICAgLSBwYXRoIHRvIGZpbGVcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsaW5lICAgLSBzb3VyY2UgbGluZSBpbiBmaWxlXG4gKiBAcHJvcGVydHkge251bWJlcn0gY29sdW1uIC0gc291cmNlIGNvbHVtbiBpbiBmaWxlXG4gKi9cbiJdfQ==\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar defaultRaw = {\n colon: ': ',\n indent: ' ',\n beforeDecl: '\\n',\n beforeRule: '\\n',\n beforeOpen: ' ',\n beforeClose: '\\n',\n beforeComment: '\\n',\n after: '\\n',\n emptyBody: '',\n commentLeft: ' ',\n commentRight: ' '\n};\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1);\n}\n\nvar Stringifier = function () {\n function Stringifier(builder) {\n _classCallCheck(this, Stringifier);\n\n this.builder = builder;\n }\n\n Stringifier.prototype.stringify = function stringify(node, semicolon) {\n this[node.type](node, semicolon);\n };\n\n Stringifier.prototype.root = function root(node) {\n this.body(node);\n if (node.raws.after) this.builder(node.raws.after);\n };\n\n Stringifier.prototype.comment = function comment(node) {\n var left = this.raw(node, 'left', 'commentLeft');\n var right = this.raw(node, 'right', 'commentRight');\n this.builder('/*' + left + node.text + right + '*/', node);\n };\n\n Stringifier.prototype.decl = function decl(node, semicolon) {\n var between = this.raw(node, 'between', 'colon');\n var string = node.prop + between + this.rawValue(node, 'value');\n\n if (node.important) {\n string += node.raws.important || ' !important';\n }\n\n if (semicolon) string += ';';\n this.builder(string, node);\n };\n\n Stringifier.prototype.rule = function rule(node) {\n this.block(node, this.rawValue(node, 'selector'));\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end');\n }\n };\n\n Stringifier.prototype.atrule = function atrule(node, semicolon) {\n var name = '@' + node.name;\n var params = node.params ? this.rawValue(node, 'params') : '';\n\n if (typeof node.raws.afterName !== 'undefined') {\n name += node.raws.afterName;\n } else if (params) {\n name += ' ';\n }\n\n if (node.nodes) {\n this.block(node, name + params);\n } else {\n var end = (node.raws.between || '') + (semicolon ? ';' : '');\n this.builder(name + params + end, node);\n }\n };\n\n Stringifier.prototype.body = function body(node) {\n var last = node.nodes.length - 1;\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break;\n last -= 1;\n }\n\n var semicolon = this.raw(node, 'semicolon');\n for (var i = 0; i < node.nodes.length; i++) {\n var child = node.nodes[i];\n var before = this.raw(child, 'before');\n if (before) this.builder(before);\n this.stringify(child, last !== i || semicolon);\n }\n };\n\n Stringifier.prototype.block = function block(node, start) {\n var between = this.raw(node, 'between', 'beforeOpen');\n this.builder(start + between + '{', node, 'start');\n\n var after = void 0;\n if (node.nodes && node.nodes.length) {\n this.body(node);\n after = this.raw(node, 'after');\n } else {\n after = this.raw(node, 'after', 'emptyBody');\n }\n\n if (after) this.builder(after);\n this.builder('}', node, 'end');\n };\n\n Stringifier.prototype.raw = function raw(node, own, detect) {\n var value = void 0;\n if (!detect) detect = own;\n\n // Already had\n if (own) {\n value = node.raws[own];\n if (typeof value !== 'undefined') return value;\n }\n\n var parent = node.parent;\n\n // Hack for first rule in CSS\n if (detect === 'before') {\n if (!parent || parent.type === 'root' && parent.first === node) {\n return '';\n }\n }\n\n // Floating child without parent\n if (!parent) return defaultRaw[detect];\n\n // Detect style by other nodes\n var root = node.root();\n if (!root.rawCache) root.rawCache = {};\n if (typeof root.rawCache[detect] !== 'undefined') {\n return root.rawCache[detect];\n }\n\n if (detect === 'before' || detect === 'after') {\n return this.beforeAfter(node, detect);\n } else {\n var method = 'raw' + capitalize(detect);\n if (this[method]) {\n value = this[method](root, node);\n } else {\n root.walk(function (i) {\n value = i.raws[own];\n if (typeof value !== 'undefined') return false;\n });\n }\n }\n\n if (typeof value === 'undefined') value = defaultRaw[detect];\n\n root.rawCache[detect] = value;\n return value;\n };\n\n Stringifier.prototype.rawSemicolon = function rawSemicolon(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length && i.last.type === 'decl') {\n value = i.raws.semicolon;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawEmptyBody = function rawEmptyBody(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length === 0) {\n value = i.raws.after;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawIndent = function rawIndent(root) {\n if (root.raws.indent) return root.raws.indent;\n var value = void 0;\n root.walk(function (i) {\n var p = i.parent;\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n var parts = i.raws.before.split('\\n');\n value = parts[parts.length - 1];\n value = value.replace(/[^\\s]/g, '');\n return false;\n }\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawBeforeComment = function rawBeforeComment(root, node) {\n var value = void 0;\n root.walkComments(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeDecl = function rawBeforeDecl(root, node) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n });\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule');\n } else if (value) {\n value = value.replace(/[^\\s]/g, '');\n }\n return value;\n };\n\n Stringifier.prototype.rawBeforeRule = function rawBeforeRule(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeClose = function rawBeforeClose(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after;\n if (value.indexOf('\\n') !== -1) {\n value = value.replace(/[^\\n]+$/, '');\n }\n return false;\n }\n }\n });\n if (value) value = value.replace(/[^\\s]/g, '');\n return value;\n };\n\n Stringifier.prototype.rawBeforeOpen = function rawBeforeOpen(root) {\n var value = void 0;\n root.walk(function (i) {\n if (i.type !== 'decl') {\n value = i.raws.between;\n if (typeof value !== 'undefined') return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.rawColon = function rawColon(root) {\n var value = void 0;\n root.walkDecls(function (i) {\n if (typeof i.raws.between !== 'undefined') {\n value = i.raws.between.replace(/[^\\s:]/g, '');\n return false;\n }\n });\n return value;\n };\n\n Stringifier.prototype.beforeAfter = function beforeAfter(node, detect) {\n var value = void 0;\n if (node.type === 'decl') {\n value = this.raw(node, null, 'beforeDecl');\n } else if (node.type === 'comment') {\n value = this.raw(node, null, 'beforeComment');\n } else if (detect === 'before') {\n value = this.raw(node, null, 'beforeRule');\n } else {\n value = this.raw(node, null, 'beforeClose');\n }\n\n var buf = node.parent;\n var depth = 0;\n while (buf && buf.type !== 'root') {\n depth += 1;\n buf = buf.parent;\n }\n\n if (value.indexOf('\\n') !== -1) {\n var indent = this.raw(node, null, 'indent');\n if (indent.length) {\n for (var step = 0; step < depth; step++) {\n value += indent;\n }\n }\n }\n\n return value;\n };\n\n Stringifier.prototype.rawValue = function rawValue(node, prop) {\n var value = node[prop];\n var raw = node.raws[prop];\n if (raw && raw.value === value) {\n return raw.raw;\n } else {\n return value;\n }\n };\n\n return Stringifier;\n}();\n\nexports.default = Stringifier;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0cmluZ2lmaWVyLmVzNiJdLCJuYW1lcyI6WyJkZWZhdWx0UmF3IiwiY29sb24iLCJpbmRlbnQiLCJiZWZvcmVEZWNsIiwiYmVmb3JlUnVsZSIsImJlZm9yZU9wZW4iLCJiZWZvcmVDbG9zZSIsImJlZm9yZUNvbW1lbnQiLCJhZnRlciIsImVtcHR5Qm9keSIsImNvbW1lbnRMZWZ0IiwiY29tbWVudFJpZ2h0IiwiY2FwaXRhbGl6ZSIsInN0ciIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJTdHJpbmdpZmllciIsImJ1aWxkZXIiLCJzdHJpbmdpZnkiLCJub2RlIiwic2VtaWNvbG9uIiwidHlwZSIsInJvb3QiLCJib2R5IiwicmF3cyIsImNvbW1lbnQiLCJsZWZ0IiwicmF3IiwicmlnaHQiLCJ0ZXh0IiwiZGVjbCIsImJldHdlZW4iLCJzdHJpbmciLCJwcm9wIiwicmF3VmFsdWUiLCJpbXBvcnRhbnQiLCJydWxlIiwiYmxvY2siLCJvd25TZW1pY29sb24iLCJhdHJ1bGUiLCJuYW1lIiwicGFyYW1zIiwiYWZ0ZXJOYW1lIiwibm9kZXMiLCJlbmQiLCJsYXN0IiwibGVuZ3RoIiwiaSIsImNoaWxkIiwiYmVmb3JlIiwic3RhcnQiLCJvd24iLCJkZXRlY3QiLCJ2YWx1ZSIsInBhcmVudCIsImZpcnN0IiwicmF3Q2FjaGUiLCJiZWZvcmVBZnRlciIsIm1ldGhvZCIsIndhbGsiLCJyYXdTZW1pY29sb24iLCJyYXdFbXB0eUJvZHkiLCJyYXdJbmRlbnQiLCJwIiwicGFydHMiLCJzcGxpdCIsInJlcGxhY2UiLCJyYXdCZWZvcmVDb21tZW50Iiwid2Fsa0NvbW1lbnRzIiwiaW5kZXhPZiIsInJhd0JlZm9yZURlY2wiLCJ3YWxrRGVjbHMiLCJyYXdCZWZvcmVSdWxlIiwicmF3QmVmb3JlQ2xvc2UiLCJyYXdCZWZvcmVPcGVuIiwicmF3Q29sb24iLCJidWYiLCJkZXB0aCIsInN0ZXAiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQU1BLGFBQWE7QUFDZkMsV0FBZSxJQURB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QWtDO0FBQzlCLG1CQUFPMUIsSUFBSUEsR0FBWDtBQUNILFNBRkQsTUFFTztBQUNILG1CQUFPMEIsS0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBSVVyQyxXIiwiZmlsZSI6InN0cmluZ2lmaWVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVmYXVsdFJhdyA9IHtcbiAgICBjb2xvbjogICAgICAgICAnOiAnLFxuICAgIGluZGVudDogICAgICAgICcgICAgJyxcbiAgICBiZWZvcmVEZWNsOiAgICAnXFxuJyxcbiAgICBiZWZvcmVSdWxlOiAgICAnXFxuJyxcbiAgICBiZWZvcmVPcGVuOiAgICAnICcsXG4gICAgYmVmb3JlQ2xvc2U6ICAgJ1xcbicsXG4gICAgYmVmb3JlQ29tbWVudDogJ1xcbicsXG4gICAgYWZ0ZXI6ICAgICAgICAgJ1xcbicsXG4gICAgZW1wdHlCb2R5OiAgICAgJycsXG4gICAgY29tbWVudExlZnQ6ICAgJyAnLFxuICAgIGNvbW1lbnRSaWdodDogICcgJ1xufTtcblxuZnVuY3Rpb24gY2FwaXRhbGl6ZShzdHIpIHtcbiAgICByZXR1cm4gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG59XG5cbmNsYXNzIFN0cmluZ2lmaWVyIHtcblxuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXIpIHtcbiAgICAgICAgdGhpcy5idWlsZGVyID0gYnVpbGRlcjtcbiAgICB9XG5cbiAgICBzdHJpbmdpZnkobm9kZSwgc2VtaWNvbG9uKSB7XG4gICAgICAgIHRoaXNbbm9kZS50eXBlXShub2RlLCBzZW1pY29sb24pO1xuICAgIH1cblxuICAgIHJvb3Qobm9kZSkge1xuICAgICAgICB0aGlzLmJvZHkobm9kZSk7XG4gICAgICAgIGlmICggbm9kZS5yYXdzLmFmdGVyICkgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5hZnRlcik7XG4gICAgfVxuXG4gICAgY29tbWVudChub2RlKSB7XG4gICAgICAgIGxldCBsZWZ0ICA9IHRoaXMucmF3KG5vZGUsICdsZWZ0JywgICdjb21tZW50TGVmdCcpO1xuICAgICAgICBsZXQgcmlnaHQgPSB0aGlzLnJhdyhub2RlLCAncmlnaHQnLCAnY29tbWVudFJpZ2h0Jyk7XG4gICAgICAgIHRoaXMuYnVpbGRlcignLyonICsgbGVmdCArIG5vZGUudGV4dCArIHJpZ2h0ICsgJyovJywgbm9kZSk7XG4gICAgfVxuXG4gICAgZGVjbChub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgbGV0IGJldHdlZW4gPSB0aGlzLnJhdyhub2RlLCAnYmV0d2VlbicsICdjb2xvbicpO1xuICAgICAgICBsZXQgc3RyaW5nICA9IG5vZGUucHJvcCArIGJldHdlZW4gKyB0aGlzLnJhd1ZhbHVlKG5vZGUsICd2YWx1ZScpO1xuXG4gICAgICAgIGlmICggbm9kZS5pbXBvcnRhbnQgKSB7XG4gICAgICAgICAgICBzdHJpbmcgKz0gbm9kZS5yYXdzLmltcG9ydGFudCB8fCAnICFpbXBvcnRhbnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBzZW1pY29sb24gKSBzdHJpbmcgKz0gJzsnO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoc3RyaW5nLCBub2RlKTtcbiAgICB9XG5cbiAgICBydWxlKG5vZGUpIHtcbiAgICAgICAgdGhpcy5ibG9jayhub2RlLCB0aGlzLnJhd1ZhbHVlKG5vZGUsICdzZWxlY3RvcicpKTtcbiAgICAgICAgaWYgKCBub2RlLnJhd3Mub3duU2VtaWNvbG9uICkge1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyKG5vZGUucmF3cy5vd25TZW1pY29sb24sIG5vZGUsICdlbmQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGF0cnVsZShub2RlLCBzZW1pY29sb24pIHtcbiAgICAgICAgbGV0IG5hbWUgICA9ICdAJyArIG5vZGUubmFtZTtcbiAgICAgICAgbGV0IHBhcmFtcyA9IG5vZGUucGFyYW1zID8gdGhpcy5yYXdWYWx1ZShub2RlLCAncGFyYW1zJykgOiAnJztcblxuICAgICAgICBpZiAoIHR5cGVvZiBub2RlLnJhd3MuYWZ0ZXJOYW1lICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIG5hbWUgKz0gbm9kZS5yYXdzLmFmdGVyTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmICggcGFyYW1zICkge1xuICAgICAgICAgICAgbmFtZSArPSAnICc7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIG5vZGUubm9kZXMgKSB7XG4gICAgICAgICAgICB0aGlzLmJsb2NrKG5vZGUsIG5hbWUgKyBwYXJhbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGVuZCA9IChub2RlLnJhd3MuYmV0d2VlbiB8fCAnJykgKyAoc2VtaWNvbG9uID8gJzsnIDogJycpO1xuICAgICAgICAgICAgdGhpcy5idWlsZGVyKG5hbWUgKyBwYXJhbXMgKyBlbmQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYm9keShub2RlKSB7XG4gICAgICAgIGxldCBsYXN0ID0gbm9kZS5ub2Rlcy5sZW5ndGggLSAxO1xuICAgICAgICB3aGlsZSAoIGxhc3QgPiAwICkge1xuICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVzW2xhc3RdLnR5cGUgIT09ICdjb21tZW50JyApIGJyZWFrO1xuICAgICAgICAgICAgbGFzdCAtPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlbWljb2xvbiA9IHRoaXMucmF3KG5vZGUsICdzZW1pY29sb24nKTtcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbm9kZS5ub2Rlcy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIGxldCBjaGlsZCAgPSBub2RlLm5vZGVzW2ldO1xuICAgICAgICAgICAgbGV0IGJlZm9yZSA9IHRoaXMucmF3KGNoaWxkLCAnYmVmb3JlJyk7XG4gICAgICAgICAgICBpZiAoIGJlZm9yZSApIHRoaXMuYnVpbGRlcihiZWZvcmUpO1xuICAgICAgICAgICAgdGhpcy5zdHJpbmdpZnkoY2hpbGQsIGxhc3QgIT09IGkgfHwgc2VtaWNvbG9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKG5vZGUsIHN0YXJ0KSB7XG4gICAgICAgIGxldCBiZXR3ZWVuID0gdGhpcy5yYXcobm9kZSwgJ2JldHdlZW4nLCAnYmVmb3JlT3BlbicpO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoc3RhcnQgKyBiZXR3ZWVuICsgJ3snLCBub2RlLCAnc3RhcnQnKTtcblxuICAgICAgICBsZXQgYWZ0ZXI7XG4gICAgICAgIGlmICggbm9kZS5ub2RlcyAmJiBub2RlLm5vZGVzLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHRoaXMuYm9keShub2RlKTtcbiAgICAgICAgICAgIGFmdGVyID0gdGhpcy5yYXcobm9kZSwgJ2FmdGVyJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhZnRlciA9IHRoaXMucmF3KG5vZGUsICdhZnRlcicsICdlbXB0eUJvZHknKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggYWZ0ZXIgKSB0aGlzLmJ1aWxkZXIoYWZ0ZXIpO1xuICAgICAgICB0aGlzLmJ1aWxkZXIoJ30nLCBub2RlLCAnZW5kJyk7XG4gICAgfVxuXG4gICAgcmF3KG5vZGUsIG93biwgZGV0ZWN0KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgaWYgKCAhZGV0ZWN0ICkgZGV0ZWN0ID0gb3duO1xuXG4gICAgICAgIC8vIEFscmVhZHkgaGFkXG4gICAgICAgIGlmICggb3duICkge1xuICAgICAgICAgICAgdmFsdWUgPSBub2RlLnJhd3Nbb3duXTtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyApIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwYXJlbnQgPSBub2RlLnBhcmVudDtcblxuICAgICAgICAvLyBIYWNrIGZvciBmaXJzdCBydWxlIGluIENTU1xuICAgICAgICBpZiAoIGRldGVjdCA9PT0gJ2JlZm9yZScgKSB7XG4gICAgICAgICAgICBpZiAoICFwYXJlbnQgfHwgcGFyZW50LnR5cGUgPT09ICdyb290JyAmJiBwYXJlbnQuZmlyc3QgPT09IG5vZGUgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmxvYXRpbmcgY2hpbGQgd2l0aG91dCBwYXJlbnRcbiAgICAgICAgaWYgKCAhcGFyZW50ICkgcmV0dXJuIGRlZmF1bHRSYXdbZGV0ZWN0XTtcblxuICAgICAgICAvLyBEZXRlY3Qgc3R5bGUgYnkgb3RoZXIgbm9kZXNcbiAgICAgICAgbGV0IHJvb3QgPSBub2RlLnJvb3QoKTtcbiAgICAgICAgaWYgKCAhcm9vdC5yYXdDYWNoZSApIHJvb3QucmF3Q2FjaGUgPSB7IH07XG4gICAgICAgIGlmICggdHlwZW9mIHJvb3QucmF3Q2FjaGVbZGV0ZWN0XSAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gcm9vdC5yYXdDYWNoZVtkZXRlY3RdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBkZXRlY3QgPT09ICdiZWZvcmUnIHx8IGRldGVjdCA9PT0gJ2FmdGVyJyApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJlZm9yZUFmdGVyKG5vZGUsIGRldGVjdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgbWV0aG9kID0gJ3JhdycgKyBjYXBpdGFsaXplKGRldGVjdCk7XG4gICAgICAgICAgICBpZiAoIHRoaXNbbWV0aG9kXSApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXNbbWV0aG9kXShyb290LCBub2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpLnJhd3Nbb3duXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICkgdmFsdWUgPSBkZWZhdWx0UmF3W2RldGVjdF07XG5cbiAgICAgICAgcm9vdC5yYXdDYWNoZVtkZXRlY3RdID0gdmFsdWU7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdTZW1pY29sb24ocm9vdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2FsayggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggJiYgaS5sYXN0LnR5cGUgPT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5zZW1pY29sb247XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnICkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJhd0VtcHR5Qm9keShyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggaS5ub2RlcyAmJiBpLm5vZGVzLmxlbmd0aCA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5hZnRlcjtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3SW5kZW50KHJvb3QpIHtcbiAgICAgICAgaWYgKCByb290LnJhd3MuaW5kZW50ICkgcmV0dXJuIHJvb3QucmF3cy5pbmRlbnQ7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGxldCBwID0gaS5wYXJlbnQ7XG4gICAgICAgICAgICBpZiAoIHAgJiYgcCAhPT0gcm9vdCAmJiBwLnBhcmVudCAmJiBwLnBhcmVudCA9PT0gcm9vdCApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcnRzID0gaS5yYXdzLmJlZm9yZS5zcGxpdCgnXFxuJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdCZWZvcmVDb21tZW50KHJvb3QsIG5vZGUpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICByb290LndhbGtDb21tZW50cyggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIHR5cGVvZiBpLnJhd3MuYmVmb3JlICE9PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZWZvcmU7XG4gICAgICAgICAgICAgICAgaWYgKCB2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICggdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy5yYXcobm9kZSwgbnVsbCwgJ2JlZm9yZURlY2wnKTtcbiAgICAgICAgfSBlbHNlIGlmICggdmFsdWUgKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJhd0JlZm9yZURlY2wocm9vdCwgbm9kZSkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2Fsa0RlY2xzKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5iZWZvcmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcbl0rJC8sICcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpO1xuICAgICAgICB9IGVsc2UgaWYgKCB2YWx1ZSApIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXHNdL2csICcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3QmVmb3JlUnVsZShyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrKCBpID0+IHtcbiAgICAgICAgICAgIGlmICggaS5ub2RlcyAmJiAoaS5wYXJlbnQgIT09IHJvb3QgfHwgcm9vdC5maXJzdCAhPT0gaSkgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaS5yYXdzLmJlZm9yZSAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJlZm9yZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZS5pbmRleE9mKCdcXG4nKSAhPT0gLTEgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxuXSskLywgJycpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIHZhbHVlICkgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXlxcc10vZywgJycpO1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmF3QmVmb3JlQ2xvc2Uocm9vdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIHJvb3Qud2FsayggaSA9PiB7XG4gICAgICAgICAgICBpZiAoIGkubm9kZXMgJiYgaS5ub2Rlcy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIGkucmF3cy5hZnRlciAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmFmdGVyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvW15cXG5dKyQvLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmICggdmFsdWUgKSB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teXFxzXS9nLCAnJyk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdCZWZvcmVPcGVuKHJvb3QpIHtcbiAgICAgICAgbGV0IHZhbHVlO1xuICAgICAgICByb290LndhbGsoIGkgPT4ge1xuICAgICAgICAgICAgaWYgKCBpLnR5cGUgIT09ICdkZWNsJyApIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGkucmF3cy5iZXR3ZWVuO1xuICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyApIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdDb2xvbihyb290KSB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgcm9vdC53YWxrRGVjbHMoIGkgPT4ge1xuICAgICAgICAgICAgaWYgKCB0eXBlb2YgaS5yYXdzLmJldHdlZW4gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gaS5yYXdzLmJldHdlZW4ucmVwbGFjZSgvW15cXHM6XS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGJlZm9yZUFmdGVyKG5vZGUsIGRldGVjdCkge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGlmICggbm9kZS50eXBlID09PSAnZGVjbCcgKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHRoaXMucmF3KG5vZGUsIG51bGwsICdiZWZvcmVEZWNsJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIG5vZGUudHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ29tbWVudCcpO1xuICAgICAgICB9IGVsc2UgaWYgKCBkZXRlY3QgPT09ICdiZWZvcmUnICkge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlUnVsZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnYmVmb3JlQ2xvc2UnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWYgICA9IG5vZGUucGFyZW50O1xuICAgICAgICBsZXQgZGVwdGggPSAwO1xuICAgICAgICB3aGlsZSAoIGJ1ZiAmJiBidWYudHlwZSAhPT0gJ3Jvb3QnICkge1xuICAgICAgICAgICAgZGVwdGggKz0gMTtcbiAgICAgICAgICAgIGJ1ZiA9IGJ1Zi5wYXJlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHZhbHVlLmluZGV4T2YoJ1xcbicpICE9PSAtMSApIHtcbiAgICAgICAgICAgIGxldCBpbmRlbnQgPSB0aGlzLnJhdyhub2RlLCBudWxsLCAnaW5kZW50Jyk7XG4gICAgICAgICAgICBpZiAoIGluZGVudC5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IHN0ZXAgPSAwOyBzdGVwIDwgZGVwdGg7IHN0ZXArKyApIHZhbHVlICs9IGluZGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByYXdWYWx1ZShub2RlLCBwcm9wKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5vZGVbcHJvcF07XG4gICAgICAgIGxldCByYXcgICA9IG5vZGUucmF3c1twcm9wXTtcbiAgICAgICAgaWYgKCByYXcgJiYgcmF3LnZhbHVlID09PSB2YWx1ZSApIHtcbiAgICAgICAgICAgIHJldHVybiByYXcucmF3O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IFN0cmluZ2lmaWVyO1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.default = warnOnce;\nvar printed = {};\n\nfunction warnOnce(message) {\n if (printed[message]) return;\n printed[message] = true;\n\n if (typeof console !== 'undefined' && console.warn) console.warn(message);\n}\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm4tb25jZS5lczYiXSwibmFtZXMiOlsid2Fybk9uY2UiLCJwcmludGVkIiwibWVzc2FnZSIsImNvbnNvbGUiLCJ3YXJuIl0sIm1hcHBpbmdzIjoiOzs7a0JBRXdCQSxRO0FBRnhCLElBQUlDLFVBQVUsRUFBZDs7QUFFZSxTQUFTRCxRQUFULENBQWtCRSxPQUFsQixFQUEyQjtBQUN0QyxRQUFLRCxRQUFRQyxPQUFSLENBQUwsRUFBd0I7QUFDeEJELFlBQVFDLE9BQVIsSUFBbUIsSUFBbkI7O0FBRUEsUUFBSyxPQUFPQyxPQUFQLEtBQW1CLFdBQW5CLElBQWtDQSxRQUFRQyxJQUEvQyxFQUFzREQsUUFBUUMsSUFBUixDQUFhRixPQUFiO0FBQ3pEIiwiZmlsZSI6Indhcm4tb25jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImxldCBwcmludGVkID0geyB9O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3YXJuT25jZShtZXNzYWdlKSB7XG4gICAgaWYgKCBwcmludGVkW21lc3NhZ2VdICkgcmV0dXJuO1xuICAgIHByaW50ZWRbbWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgaWYgKCB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuICkgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _lazyResult = require('./lazy-result');\n\nvar _lazyResult2 = _interopRequireDefault(_lazyResult);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Contains plugins to process CSS. Create one `Processor` instance,\n * initialize its plugins, and then use that instance on numerous CSS files.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.process(css1).then(result => console.log(result.css));\n * processor.process(css2).then(result => console.log(result.css));\n */\nvar Processor = function () {\n\n /**\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n */\n function Processor() {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n _classCallCheck(this, Processor);\n\n /**\n * @member {string} - Current PostCSS version.\n *\n * @example\n * if ( result.processor.version.split('.')[0] !== '6' ) {\n * throw new Error('This plugin works only with PostCSS 6');\n * }\n */\n this.version = '6.0.23';\n /**\n * @member {pluginFunction[]} - Plugins added to this processor.\n *\n * @example\n * const processor = postcss([autoprefixer, precss]);\n * processor.plugins.length //=> 2\n */\n this.plugins = this.normalize(plugins);\n }\n\n /**\n * Adds a plugin to be used as a CSS processor.\n *\n * PostCSS plugin can be in 4 formats:\n * * A plugin created by {@link postcss.plugin} method.\n * * A function. PostCSS will pass the function a @{link Root}\n * as the first argument and current {@link Result} instance\n * as the second.\n * * An object with a `postcss` method. PostCSS will use that method\n * as described in #2.\n * * Another {@link Processor} instance. PostCSS will copy plugins\n * from that instance into this one.\n *\n * Plugins can also be added by passing them as arguments when creating\n * a `postcss` instance (see [`postcss(plugins)`]).\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * @param {Plugin|pluginFunction|Processor} plugin - PostCSS plugin\n * or {@link Processor}\n * with plugins\n *\n * @example\n * const processor = postcss()\n * .use(autoprefixer)\n * .use(precss);\n *\n * @return {Processes} current processor to make methods chain\n */\n\n\n Processor.prototype.use = function use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]));\n return this;\n };\n\n /**\n * Parses source CSS and returns a {@link LazyResult} Promise proxy.\n * Because some plugins can be asynchronous it doesn’t make\n * any transformations. Transformations will be applied\n * in the {@link LazyResult} methods.\n *\n * @param {string|toString|Result} css - String with input CSS or\n * any object with a `toString()`\n * method, like a Buffer.\n * Optionally, send a {@link Result}\n * instance and the processor will\n * take the {@link Root} from it.\n * @param {processOptions} [opts] - options\n *\n * @return {LazyResult} Promise proxy\n *\n * @example\n * processor.process(css, { from: 'a.css', to: 'a.out.css' })\n * .then(result => {\n * console.log(result.css);\n * });\n */\n\n\n Processor.prototype.process = function process(css) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return new _lazyResult2.default(this, css, opts);\n };\n\n Processor.prototype.normalize = function normalize(plugins) {\n var normalized = [];\n for (var _iterator = plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var i = _ref;\n\n if (i.postcss) i = i.postcss;\n\n if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins);\n } else if (typeof i === 'function') {\n normalized.push(i);\n } else if ((typeof i === 'undefined' ? 'undefined' : _typeof(i)) === 'object' && (i.parse || i.stringify)) {\n throw new Error('PostCSS syntaxes cannot be used as plugins. ' + 'Instead, please use one of the ' + 'syntax/parser/stringifier options as ' + 'outlined in your PostCSS ' + 'runner documentation.');\n } else {\n throw new Error(i + ' is not a PostCSS plugin');\n }\n }\n return normalized;\n };\n\n return Processor;\n}();\n\nexports.default = Processor;\n\n/**\n * @callback builder\n * @param {string} part - part of generated CSS connected to this node\n * @param {Node} node - AST node\n * @param {\"start\"|\"end\"} [type] - node’s part type\n */\n\n/**\n * @callback parser\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n */\n\n/**\n * @callback stringifier\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n */\n\n/**\n * @typedef {object} syntax\n * @property {parser} parse - function to generate AST by string\n * @property {stringifier} stringify - function to generate string by AST\n */\n\n/**\n * @typedef {object} toString\n * @property {function} toString\n */\n\n/**\n * @callback pluginFunction\n * @param {Root} root - parsed input CSS\n * @param {Result} result - result to set warnings or check other plugins\n */\n\n/**\n * @typedef {object} Plugin\n * @property {function} postcss - PostCSS plugin function\n */\n\n/**\n * @typedef {object} processOptions\n * @property {string} from - the path of the CSS source file.\n * You should always set `from`,\n * because it is used in source map\n * generation and syntax error messages.\n * @property {string} to - the path where you’ll put the output\n * CSS file. You should always set `to`\n * to generate correct source maps.\n * @property {parser} parser - function to generate AST by string\n * @property {stringifier} stringifier - class to generate string by AST\n * @property {syntax} syntax - object with `parse` and `stringify`\n * @property {object} map - source map options\n * @property {boolean} map.inline - does source map should\n * be embedded in the output\n * CSS as a base64-encoded\n * comment\n * @property {string|object|false|function} map.prev - source map content\n * from a previous\n * processing step\n * (for example, Sass).\n * PostCSS will try to find\n * previous map\n * automatically, so you\n * could disable it by\n * `false` value.\n * @property {boolean} map.sourcesContent - does PostCSS should set\n * the origin content to map\n * @property {string|false} map.annotation - does PostCSS should set\n * annotation comment to map\n * @property {string} map.from - override `from` in map’s\n * `sources`\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb2Nlc3Nvci5lczYiXSwibmFtZXMiOlsiUHJvY2Vzc29yIiwicGx1Z2lucyIsInZlcnNpb24iLCJub3JtYWxpemUiLCJ1c2UiLCJwbHVnaW4iLCJjb25jYXQiLCJwcm9jZXNzIiwiY3NzIiwib3B0cyIsIkxhenlSZXN1bHQiLCJub3JtYWxpemVkIiwiaSIsInBvc3Rjc3MiLCJBcnJheSIsImlzQXJyYXkiLCJwdXNoIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0FBRUE7Ozs7Ozs7OztJQVNNQSxTOztBQUVGOzs7O0FBSUEsdUJBQTBCO0FBQUEsUUFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUFBOztBQUN0Qjs7Ozs7Ozs7QUFRQSxTQUFLQyxPQUFMLEdBQWUsUUFBZjtBQUNBOzs7Ozs7O0FBT0EsU0FBS0QsT0FBTCxHQUFlLEtBQUtFLFNBQUwsQ0FBZUYsT0FBZixDQUFmO0FBQ0g7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBNkJBRyxHLGdCQUFJQyxNLEVBQVE7QUFDUixTQUFLSixPQUFMLEdBQWUsS0FBS0EsT0FBTCxDQUFhSyxNQUFiLENBQW9CLEtBQUtILFNBQUwsQ0FBZSxDQUFDRSxNQUFELENBQWYsQ0FBcEIsQ0FBZjtBQUNBLFdBQU8sSUFBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztzQkFzQkFFLE8sb0JBQVFDLEcsRUFBaUI7QUFBQSxRQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQ3JCLFdBQU8sSUFBSUMsb0JBQUosQ0FBZSxJQUFmLEVBQXFCRixHQUFyQixFQUEwQkMsSUFBMUIsQ0FBUDtBQUNILEc7O3NCQUVETixTLHNCQUFVRixPLEVBQVM7QUFDZixRQUFJVSxhQUFhLEVBQWpCO0FBQ0EseUJBQWVWLE9BQWYsa0hBQXlCO0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQSxVQUFmVyxDQUFlOztBQUNyQixVQUFLQSxFQUFFQyxPQUFQLEVBQWlCRCxJQUFJQSxFQUFFQyxPQUFOOztBQUVqQixVQUFLLFFBQU9ELENBQVAseUNBQU9BLENBQVAsT0FBYSxRQUFiLElBQXlCRSxNQUFNQyxPQUFOLENBQWNILEVBQUVYLE9BQWhCLENBQTlCLEVBQXlEO0FBQ3JEVSxxQkFBYUEsV0FBV0wsTUFBWCxDQUFrQk0sRUFBRVgsT0FBcEIsQ0FBYjtBQUNILE9BRkQsTUFFTyxJQUFLLE9BQU9XLENBQVAsS0FBYSxVQUFsQixFQUErQjtBQUNsQ0QsbUJBQVdLLElBQVgsQ0FBZ0JKLENBQWhCO0FBQ0gsT0FGTSxNQUVBLElBQUssUUFBT0EsQ0FBUCx5Q0FBT0EsQ0FBUCxPQUFhLFFBQWIsS0FBMEJBLEVBQUVLLEtBQUYsSUFBV0wsRUFBRU0sU0FBdkMsQ0FBTCxFQUF5RDtBQUM1RCxjQUFNLElBQUlDLEtBQUosQ0FBVSxpREFDQSxpQ0FEQSxHQUVBLHVDQUZBLEdBR0EsMkJBSEEsR0FJQSx1QkFKVixDQUFOO0FBS0gsT0FOTSxNQU1BO0FBQ0gsY0FBTSxJQUFJQSxLQUFKLENBQVVQLElBQUksMEJBQWQsQ0FBTjtBQUNIO0FBQ0o7QUFDRCxXQUFPRCxVQUFQO0FBQ0gsRzs7Ozs7a0JBSVVYLFM7O0FBRWY7Ozs7Ozs7QUFPQTs7Ozs7Ozs7OztBQVVBOzs7Ozs7Ozs7O0FBVUE7Ozs7OztBQU1BOzs7OztBQUtBOzs7Ozs7QUFNQTs7Ozs7QUFLQSIsImZpbGUiOiJwcm9jZXNzb3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGF6eVJlc3VsdCBmcm9tICcuL2xhenktcmVzdWx0JztcblxuLyoqXG4gKiBDb250YWlucyBwbHVnaW5zIHRvIHByb2Nlc3MgQ1NTLiBDcmVhdGUgb25lIGBQcm9jZXNzb3JgIGluc3RhbmNlLFxuICogaW5pdGlhbGl6ZSBpdHMgcGx1Z2lucywgYW5kIHRoZW4gdXNlIHRoYXQgaW5zdGFuY2Ugb24gbnVtZXJvdXMgQ1NTIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKFthdXRvcHJlZml4ZXIsIHByZWNzc10pO1xuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMSkudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpO1xuICogcHJvY2Vzc29yLnByb2Nlc3MoY3NzMikudGhlbihyZXN1bHQgPT4gY29uc29sZS5sb2cocmVzdWx0LmNzcykpO1xuICovXG5jbGFzcyBQcm9jZXNzb3Ige1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgLSBQb3N0Q1NTXG4gICAgICogICAgICAgIHBsdWdpbnMuIFNlZSB7QGxpbmsgUHJvY2Vzc29yI3VzZX0gZm9yIHBsdWdpbiBmb3JtYXQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocGx1Z2lucyA9IFtdKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQ3VycmVudCBQb3N0Q1NTIHZlcnNpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGlmICggcmVzdWx0LnByb2Nlc3Nvci52ZXJzaW9uLnNwbGl0KCcuJylbMF0gIT09ICc2JyApIHtcbiAgICAgICAgICogICB0aHJvdyBuZXcgRXJyb3IoJ1RoaXMgcGx1Z2luIHdvcmtzIG9ubHkgd2l0aCBQb3N0Q1NTIDYnKTtcbiAgICAgICAgICogfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gJzYuMC4yMyc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtwbHVnaW5GdW5jdGlvbltdfSAtIFBsdWdpbnMgYWRkZWQgdG8gdGhpcyBwcm9jZXNzb3IuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW2F1dG9wcmVmaXhlciwgcHJlY3NzXSk7XG4gICAgICAgICAqIHByb2Nlc3Nvci5wbHVnaW5zLmxlbmd0aCAvLz0+IDJcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMucGx1Z2lucyA9IHRoaXMubm9ybWFsaXplKHBsdWdpbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBwbHVnaW4gdG8gYmUgdXNlZCBhcyBhIENTUyBwcm9jZXNzb3IuXG4gICAgICpcbiAgICAgKiBQb3N0Q1NTIHBsdWdpbiBjYW4gYmUgaW4gNCBmb3JtYXRzOlxuICAgICAqICogQSBwbHVnaW4gY3JlYXRlZCBieSB7QGxpbmsgcG9zdGNzcy5wbHVnaW59IG1ldGhvZC5cbiAgICAgKiAqIEEgZnVuY3Rpb24uIFBvc3RDU1Mgd2lsbCBwYXNzIHRoZSBmdW5jdGlvbiBhIEB7bGluayBSb290fVxuICAgICAqICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFuZCBjdXJyZW50IHtAbGluayBSZXN1bHR9IGluc3RhbmNlXG4gICAgICogICBhcyB0aGUgc2Vjb25kLlxuICAgICAqICogQW4gb2JqZWN0IHdpdGggYSBgcG9zdGNzc2AgbWV0aG9kLiBQb3N0Q1NTIHdpbGwgdXNlIHRoYXQgbWV0aG9kXG4gICAgICogICBhcyBkZXNjcmliZWQgaW4gIzIuXG4gICAgICogKiBBbm90aGVyIHtAbGluayBQcm9jZXNzb3J9IGluc3RhbmNlLiBQb3N0Q1NTIHdpbGwgY29weSBwbHVnaW5zXG4gICAgICogICBmcm9tIHRoYXQgaW5zdGFuY2UgaW50byB0aGlzIG9uZS5cbiAgICAgKlxuICAgICAqIFBsdWdpbnMgY2FuIGFsc28gYmUgYWRkZWQgYnkgcGFzc2luZyB0aGVtIGFzIGFyZ3VtZW50cyB3aGVuIGNyZWF0aW5nXG4gICAgICogYSBgcG9zdGNzc2AgaW5zdGFuY2UgKHNlZSBbYHBvc3Rjc3MocGx1Z2lucylgXSkuXG4gICAgICpcbiAgICAgKiBBc3luY2hyb25vdXMgcGx1Z2lucyBzaG91bGQgcmV0dXJuIGEgYFByb21pc2VgIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQbHVnaW58cGx1Z2luRnVuY3Rpb258UHJvY2Vzc29yfSBwbHVnaW4gLSBQb3N0Q1NTIHBsdWdpblxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Ige0BsaW5rIFByb2Nlc3Nvcn1cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggcGx1Z2luc1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBjb25zdCBwcm9jZXNzb3IgPSBwb3N0Y3NzKClcbiAgICAgKiAgIC51c2UoYXV0b3ByZWZpeGVyKVxuICAgICAqICAgLnVzZShwcmVjc3MpO1xuICAgICAqXG4gICAgICogQHJldHVybiB7UHJvY2Vzc2VzfSBjdXJyZW50IHByb2Nlc3NvciB0byBtYWtlIG1ldGhvZHMgY2hhaW5cbiAgICAgKi9cbiAgICB1c2UocGx1Z2luKSB7XG4gICAgICAgIHRoaXMucGx1Z2lucyA9IHRoaXMucGx1Z2lucy5jb25jYXQodGhpcy5ub3JtYWxpemUoW3BsdWdpbl0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHNvdXJjZSBDU1MgYW5kIHJldHVybnMgYSB7QGxpbmsgTGF6eVJlc3VsdH0gUHJvbWlzZSBwcm94eS5cbiAgICAgKiBCZWNhdXNlIHNvbWUgcGx1Z2lucyBjYW4gYmUgYXN5bmNocm9ub3VzIGl0IGRvZXNu4oCZdCBtYWtlXG4gICAgICogYW55IHRyYW5zZm9ybWF0aW9ucy4gVHJhbnNmb3JtYXRpb25zIHdpbGwgYmUgYXBwbGllZFxuICAgICAqIGluIHRoZSB7QGxpbmsgTGF6eVJlc3VsdH0gbWV0aG9kcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfFJlc3VsdH0gY3NzIC0gU3RyaW5nIHdpdGggaW5wdXQgQ1NTIG9yXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgb2JqZWN0IHdpdGggYSBgdG9TdHJpbmcoKWBcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlci5cbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbmFsbHksIHNlbmQgYSB7QGxpbmsgUmVzdWx0fVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgYW5kIHRoZSBwcm9jZXNzb3Igd2lsbFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZSB0aGUge0BsaW5rIFJvb3R9IGZyb20gaXQuXG4gICAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdICAgICAgLSBvcHRpb25zXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtMYXp5UmVzdWx0fSBQcm9taXNlIHByb3h5XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHByb2Nlc3Nvci5wcm9jZXNzKGNzcywgeyBmcm9tOiAnYS5jc3MnLCB0bzogJ2Eub3V0LmNzcycgfSlcbiAgICAgKiAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICogICAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAgICAgKiAgIH0pO1xuICAgICAqL1xuICAgIHByb2Nlc3MoY3NzLCBvcHRzID0geyB9KSB7XG4gICAgICAgIHJldHVybiBuZXcgTGF6eVJlc3VsdCh0aGlzLCBjc3MsIG9wdHMpO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShwbHVnaW5zKSB7XG4gICAgICAgIGxldCBub3JtYWxpemVkID0gW107XG4gICAgICAgIGZvciAoIGxldCBpIG9mIHBsdWdpbnMgKSB7XG4gICAgICAgICAgICBpZiAoIGkucG9zdGNzcyApIGkgPSBpLnBvc3Rjc3M7XG5cbiAgICAgICAgICAgIGlmICggdHlwZW9mIGkgPT09ICdvYmplY3QnICYmIEFycmF5LmlzQXJyYXkoaS5wbHVnaW5zKSApIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5jb25jYXQoaS5wbHVnaW5zKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBpID09PSAnZnVuY3Rpb24nICkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQucHVzaChpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBpID09PSAnb2JqZWN0JyAmJiAoaS5wYXJzZSB8fCBpLnN0cmluZ2lmeSkgKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3N0Q1NTIHN5bnRheGVzIGNhbm5vdCBiZSB1c2VkIGFzIHBsdWdpbnMuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW5zdGVhZCwgcGxlYXNlIHVzZSBvbmUgb2YgdGhlICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3ludGF4L3BhcnNlci9zdHJpbmdpZmllciBvcHRpb25zIGFzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0bGluZWQgaW4geW91ciBQb3N0Q1NTICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVubmVyIGRvY3VtZW50YXRpb24uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihpICsgJyBpcyBub3QgYSBQb3N0Q1NTIHBsdWdpbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBub3JtYWxpemVkO1xuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBQcm9jZXNzb3I7XG5cbi8qKlxuICogQGNhbGxiYWNrIGJ1aWxkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJ0ICAgICAgICAgIC0gcGFydCBvZiBnZW5lcmF0ZWQgQ1NTIGNvbm5lY3RlZCB0byB0aGlzIG5vZGVcbiAqIEBwYXJhbSB7Tm9kZX0gICBub2RlICAgICAgICAgIC0gQVNUIG5vZGVcbiAqIEBwYXJhbSB7XCJzdGFydFwifFwiZW5kXCJ9IFt0eXBlXSAtIG5vZGXigJlzIHBhcnQgdHlwZVxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBhcnNlclxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfHRvU3RyaW5nfSBjc3MgICAtIHN0cmluZyB3aXRoIGlucHV0IENTUyBvciBhbnkgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRvU3RyaW5nKCkgbWV0aG9kLCBsaWtlIGEgQnVmZmVyXG4gKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBbb3B0c10gLSBvcHRpb25zIHdpdGggb25seSBgZnJvbWAgYW5kIGBtYXBgIGtleXNcbiAqXG4gKiBAcmV0dXJuIHtSb290fSBQb3N0Q1NTIEFTVFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHN0cmluZ2lmaWVyXG4gKlxuICogQHBhcmFtIHtOb2RlfSBub2RlICAgICAgIC0gc3RhcnQgbm9kZSBmb3Igc3RyaW5naWZpbmcuIFVzdWFsbHkge0BsaW5rIFJvb3R9LlxuICogQHBhcmFtIHtidWlsZGVyfSBidWlsZGVyIC0gZnVuY3Rpb24gdG8gY29uY2F0ZW5hdGUgQ1NTIGZyb20gbm9kZeKAmXMgcGFydHNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGdlbmVyYXRlIHN0cmluZyBhbmQgc291cmNlIG1hcFxuICpcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBzeW50YXhcbiAqIEBwcm9wZXJ0eSB7cGFyc2VyfSBwYXJzZSAgICAgICAgICAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmeSAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIHN0cmluZyBieSBBU1RcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHRvU3RyaW5nXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSB0b1N0cmluZ1xuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIHBsdWdpbkZ1bmN0aW9uXG4gKiBAcGFyYW0ge1Jvb3R9IHJvb3QgICAgIC0gcGFyc2VkIGlucHV0IENTU1xuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdCAtIHJlc3VsdCB0byBzZXQgd2FybmluZ3Mgb3IgY2hlY2sgb3RoZXIgcGx1Z2luc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUGx1Z2luXG4gKiBAcHJvcGVydHkge2Z1bmN0aW9ufSBwb3N0Y3NzIC0gUG9zdENTUyBwbHVnaW4gZnVuY3Rpb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IHByb2Nlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZnJvbSAgICAgICAgICAgICAtIHRoZSBwYXRoIG9mIHRoZSBDU1Mgc291cmNlIGZpbGUuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgZnJvbWAsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBpbiBzb3VyY2UgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRpb24gYW5kIHN5bnRheCBlcnJvciBtZXNzYWdlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0byAgICAgICAgICAgICAgIC0gdGhlIHBhdGggd2hlcmUgeW914oCZbGwgcHV0IHRoZSBvdXRwdXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTIGZpbGUuIFlvdSBzaG91bGQgYWx3YXlzIHNldCBgdG9gXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdlbmVyYXRlIGNvcnJlY3Qgc291cmNlIG1hcHMuXG4gKiBAcHJvcGVydHkge3BhcnNlcn0gcGFyc2VyICAgICAgICAgICAtIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIEFTVCBieSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5naWZpZXJ9IHN0cmluZ2lmaWVyIC0gY2xhc3MgdG8gZ2VuZXJhdGUgc3RyaW5nIGJ5IEFTVFxuICogQHByb3BlcnR5IHtzeW50YXh9IHN5bnRheCAgICAgICAgICAgLSBvYmplY3Qgd2l0aCBgcGFyc2VgIGFuZCBgc3RyaW5naWZ5YFxuICogQHByb3BlcnR5IHtvYmplY3R9IG1hcCAgICAgICAgICAgICAgLSBzb3VyY2UgbWFwIG9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gbWFwLmlubGluZSAgICAgICAgICAgICAgICAgICAgLSBkb2VzIHNvdXJjZSBtYXAgc2hvdWxkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgZW1iZWRkZWQgaW4gdGhlIG91dHB1dFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyBhcyBhIGJhc2U2NC1lbmNvZGVkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudFxuICogQHByb3BlcnR5IHtzdHJpbmd8b2JqZWN0fGZhbHNlfGZ1bmN0aW9ufSBtYXAucHJldiAtIHNvdXJjZSBtYXAgY29udGVudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gYSBwcmV2aW91c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Npbmcgc3RlcFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgZXhhbXBsZSwgU2FzcykuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zdENTUyB3aWxsIHRyeSB0byBmaW5kXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXMgbWFwXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSwgc28geW91XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bGQgZGlzYWJsZSBpdCBieVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBmYWxzZWAgdmFsdWUuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IG1hcC5zb3VyY2VzQ29udGVudCAgICAgICAgICAgIC0gZG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgb3JpZ2luIGNvbnRlbnQgdG8gbWFwXG4gKiBAcHJvcGVydHkge3N0cmluZ3xmYWxzZX0gbWFwLmFubm90YXRpb24gICAgICAgICAgIC0gZG9lcyBQb3N0Q1NTIHNob3VsZCBzZXRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5vdGF0aW9uIGNvbW1lbnQgdG8gbWFwXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbWFwLmZyb20gICAgICAgICAgICAgICAgICAgICAgIC0gb3ZlcnJpZGUgYGZyb21gIGluIG1hcOKAmXNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc291cmNlc2BcbiAqL1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _mapGenerator = require('./map-generator');\n\nvar _mapGenerator2 = _interopRequireDefault(_mapGenerator);\n\nvar _stringify2 = require('./stringify');\n\nvar _stringify3 = _interopRequireDefault(_stringify2);\n\nvar _warnOnce = require('./warn-once');\n\nvar _warnOnce2 = _interopRequireDefault(_warnOnce);\n\nvar _result = require('./result');\n\nvar _result2 = _interopRequireDefault(_result);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction isPromise(obj) {\n return (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && typeof obj.then === 'function';\n}\n\n/**\n * A Promise proxy for the result of PostCSS transformations.\n *\n * A `LazyResult` instance is returned by {@link Processor#process}.\n *\n * @example\n * const lazy = postcss([cssnext]).process(css);\n */\n\nvar LazyResult = function () {\n function LazyResult(processor, css, opts) {\n _classCallCheck(this, LazyResult);\n\n this.stringified = false;\n this.processed = false;\n\n var root = void 0;\n if ((typeof css === 'undefined' ? 'undefined' : _typeof(css)) === 'object' && css !== null && css.type === 'root') {\n root = css;\n } else if (css instanceof LazyResult || css instanceof _result2.default) {\n root = css.root;\n if (css.map) {\n if (typeof opts.map === 'undefined') opts.map = {};\n if (!opts.map.inline) opts.map.inline = false;\n opts.map.prev = css.map;\n }\n } else {\n var parser = _parse2.default;\n if (opts.syntax) parser = opts.syntax.parse;\n if (opts.parser) parser = opts.parser;\n if (parser.parse) parser = parser.parse;\n\n try {\n root = parser(css, opts);\n } catch (error) {\n this.error = error;\n }\n }\n\n this.result = new _result2.default(processor, root, opts);\n }\n\n /**\n * Returns a {@link Processor} instance, which will be used\n * for CSS transformations.\n * @type {Processor}\n */\n\n\n /**\n * Processes input CSS through synchronous plugins\n * and calls {@link Result#warnings()}.\n *\n * @return {Warning[]} warnings from plugins\n */\n LazyResult.prototype.warnings = function warnings() {\n return this.sync().warnings();\n };\n\n /**\n * Alias for the {@link LazyResult#css} property.\n *\n * @example\n * lazy + '' === lazy.css;\n *\n * @return {string} output CSS\n */\n\n\n LazyResult.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls `onFulfilled` with a Result instance. If a plugin throws\n * an error, the `onRejected` callback will be executed.\n *\n * It implements standard Promise API.\n *\n * @param {onFulfilled} onFulfilled - callback will be executed\n * when all plugins will finish work\n * @param {onRejected} onRejected - callback will be executed on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css, { from: cssPath }).then(result => {\n * console.log(result.css);\n * });\n */\n\n\n LazyResult.prototype.then = function then(onFulfilled, onRejected) {\n if (!('from' in this.opts)) {\n (0, _warnOnce2.default)('Without `from` option PostCSS could generate wrong ' + 'source map and will not find Browserslist config. ' + 'Set it to CSS file path or to `undefined` to prevent ' + 'this warning.');\n }\n return this.async().then(onFulfilled, onRejected);\n };\n\n /**\n * Processes input CSS through synchronous and asynchronous plugins\n * and calls onRejected for each error thrown in any plugin.\n *\n * It implements standard Promise API.\n *\n * @param {onRejected} onRejected - callback will be executed on any error\n *\n * @return {Promise} Promise API to make queue\n *\n * @example\n * postcss([cssnext]).process(css).then(result => {\n * console.log(result.css);\n * }).catch(error => {\n * console.error(error);\n * });\n */\n\n\n LazyResult.prototype.catch = function _catch(onRejected) {\n return this.async().catch(onRejected);\n };\n\n LazyResult.prototype.handleError = function handleError(error, plugin) {\n try {\n this.error = error;\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin;\n error.setMessage();\n } else if (plugin.postcssVersion) {\n var pluginName = plugin.postcssPlugin;\n var pluginVer = plugin.postcssVersion;\n var runtimeVer = this.result.processor.version;\n var a = pluginVer.split('.');\n var b = runtimeVer.split('.');\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n console.error('Unknown error from PostCSS plugin. ' + 'Your current PostCSS version ' + 'is ' + runtimeVer + ', but ' + pluginName + ' ' + 'uses ' + pluginVer + '. Perhaps this is ' + 'the source of the error below.');\n }\n }\n } catch (err) {\n if (console && console.error) console.error(err);\n }\n };\n\n LazyResult.prototype.asyncTick = function asyncTick(resolve, reject) {\n var _this = this;\n\n if (this.plugin >= this.processor.plugins.length) {\n this.processed = true;\n return resolve();\n }\n\n try {\n var plugin = this.processor.plugins[this.plugin];\n var promise = this.run(plugin);\n this.plugin += 1;\n\n if (isPromise(promise)) {\n promise.then(function () {\n _this.asyncTick(resolve, reject);\n }).catch(function (error) {\n _this.handleError(error, plugin);\n _this.processed = true;\n reject(error);\n });\n } else {\n this.asyncTick(resolve, reject);\n }\n } catch (error) {\n this.processed = true;\n reject(error);\n }\n };\n\n LazyResult.prototype.async = function async() {\n var _this2 = this;\n\n if (this.processed) {\n return new Promise(function (resolve, reject) {\n if (_this2.error) {\n reject(_this2.error);\n } else {\n resolve(_this2.stringify());\n }\n });\n }\n if (this.processing) {\n return this.processing;\n }\n\n this.processing = new Promise(function (resolve, reject) {\n if (_this2.error) return reject(_this2.error);\n _this2.plugin = 0;\n _this2.asyncTick(resolve, reject);\n }).then(function () {\n _this2.processed = true;\n return _this2.stringify();\n });\n\n return this.processing;\n };\n\n LazyResult.prototype.sync = function sync() {\n if (this.processed) return this.result;\n this.processed = true;\n\n if (this.processing) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n\n if (this.error) throw this.error;\n\n for (var _iterator = this.result.processor.plugins, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var plugin = _ref;\n\n var promise = this.run(plugin);\n if (isPromise(promise)) {\n throw new Error('Use process(css).then(cb) to work with async plugins');\n }\n }\n\n return this.result;\n };\n\n LazyResult.prototype.run = function run(plugin) {\n this.result.lastPlugin = plugin;\n\n try {\n return plugin(this.result.root, this.result);\n } catch (error) {\n this.handleError(error, plugin);\n throw error;\n }\n };\n\n LazyResult.prototype.stringify = function stringify() {\n if (this.stringified) return this.result;\n this.stringified = true;\n\n this.sync();\n\n var opts = this.result.opts;\n var str = _stringify3.default;\n if (opts.syntax) str = opts.syntax.stringify;\n if (opts.stringifier) str = opts.stringifier;\n if (str.stringify) str = str.stringify;\n\n var map = new _mapGenerator2.default(str, this.result.root, this.result.opts);\n var data = map.generate();\n this.result.css = data[0];\n this.result.map = data[1];\n\n return this.result;\n };\n\n _createClass(LazyResult, [{\n key: 'processor',\n get: function get() {\n return this.result.processor;\n }\n\n /**\n * Options from the {@link Processor#process} call.\n * @type {processOptions}\n */\n\n }, {\n key: 'opts',\n get: function get() {\n return this.result.opts;\n }\n\n /**\n * Processes input CSS through synchronous plugins, converts `Root`\n * to a CSS string and returns {@link Result#css}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#css\n */\n\n }, {\n key: 'css',\n get: function get() {\n return this.stringify().css;\n }\n\n /**\n * An alias for the `css` property. Use it with syntaxes\n * that generate non-CSS output.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {string}\n * @see Result#content\n */\n\n }, {\n key: 'content',\n get: function get() {\n return this.stringify().content;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#map}.\n *\n * This property will only work with synchronous plugins.\n * If the processor contains any asynchronous plugins\n * it will throw an error. This is why this method is only\n * for debug purpose, you should always use {@link LazyResult#then}.\n *\n * @type {SourceMapGenerator}\n * @see Result#map\n */\n\n }, {\n key: 'map',\n get: function get() {\n return this.stringify().map;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#root}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Root}\n * @see Result#root\n */\n\n }, {\n key: 'root',\n get: function get() {\n return this.sync().root;\n }\n\n /**\n * Processes input CSS through synchronous plugins\n * and returns {@link Result#messages}.\n *\n * This property will only work with synchronous plugins. If the processor\n * contains any asynchronous plugins it will throw an error.\n *\n * This is why this method is only for debug purpose,\n * you should always use {@link LazyResult#then}.\n *\n * @type {Message[]}\n * @see Result#messages\n */\n\n }, {\n key: 'messages',\n get: function get() {\n return this.sync().messages;\n }\n }]);\n\n return LazyResult;\n}();\n\nexports.default = LazyResult;\n\n/**\n * @callback onFulfilled\n * @param {Result} result\n */\n\n/**\n * @callback onRejected\n * @param {Error} error\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxhenktcmVzdWx0LmVzNiJdLCJuYW1lcyI6WyJpc1Byb21pc2UiLCJvYmoiLCJ0aGVuIiwiTGF6eVJlc3VsdCIsInByb2Nlc3NvciIsImNzcyIsIm9wdHMiLCJzdHJpbmdpZmllZCIsInByb2Nlc3NlZCIsInJvb3QiLCJ0eXBlIiwiUmVzdWx0IiwibWFwIiwiaW5saW5lIiwicHJldiIsInBhcnNlciIsInBhcnNlIiwic3ludGF4IiwiZXJyb3IiLCJyZXN1bHQiLCJ3YXJuaW5ncyIsInN5bmMiLCJ0b1N0cmluZyIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsImFzeW5jIiwiY2F0Y2giLCJoYW5kbGVFcnJvciIsInBsdWdpbiIsIm5hbWUiLCJwb3N0Y3NzUGx1Z2luIiwic2V0TWVzc2FnZSIsInBvc3Rjc3NWZXJzaW9uIiwicGx1Z2luTmFtZSIsInBsdWdpblZlciIsInJ1bnRpbWVWZXIiLCJ2ZXJzaW9uIiwiYSIsInNwbGl0IiwiYiIsInBhcnNlSW50IiwiY29uc29sZSIsImVyciIsImFzeW5jVGljayIsInJlc29sdmUiLCJyZWplY3QiLCJwbHVnaW5zIiwibGVuZ3RoIiwicHJvbWlzZSIsInJ1biIsIlByb21pc2UiLCJzdHJpbmdpZnkiLCJwcm9jZXNzaW5nIiwiRXJyb3IiLCJsYXN0UGx1Z2luIiwic3RyIiwic3RyaW5naWZpZXIiLCJNYXBHZW5lcmF0b3IiLCJkYXRhIiwiZ2VuZXJhdGUiLCJjb250ZW50IiwibWVzc2FnZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW1CQyxHQUFuQixFQUF3QjtBQUNwQixXQUFPLFFBQU9BLEdBQVAseUNBQU9BLEdBQVAsT0FBZSxRQUFmLElBQTJCLE9BQU9BLElBQUlDLElBQVgsS0FBb0IsVUFBdEQ7QUFDSDs7QUFFRDs7Ozs7Ozs7O0lBUU1DLFU7QUFFRix3QkFBWUMsU0FBWixFQUF1QkMsR0FBdkIs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dCI6WyJpbXBvcnQgTWFwR2VuZXJhdG9yIGZyb20gJy4vbWFwLWdlbmVyYXRvcic7XG5pbXBvcnQgc3RyaW5naWZ5ICAgIGZyb20gJy4vc3RyaW5naWZ5JztcbmltcG9ydCB3YXJuT25jZSAgICAgZnJvbSAnLi93YXJuLW9uY2UnO1xuaW1wb3J0IFJlc3VsdCAgICAgICBmcm9tICcuL3Jlc3VsdCc7XG5pbXBvcnQgcGFyc2UgICAgICAgIGZyb20gJy4vcGFyc2UnO1xuXG5mdW5jdGlvbiBpc1Byb21pc2Uob2JqKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmoudGhlbiA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuLyoqXG4gKiBBIFByb21pc2UgcHJveHkgZm9yIHRoZSByZXN1bHQgb2YgUG9zdENTUyB0cmFuc2Zvcm1hdGlvbnMuXG4gKlxuICogQSBgTGF6eVJlc3VsdGAgaW5zdGFuY2UgaXMgcmV0dXJuZWQgYnkge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfS5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgbGF6eSA9IHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcyk7XG4gKi9cbmNsYXNzIExhenlSZXN1bHQge1xuXG4gICAgY29uc3RydWN0b3IocHJvY2Vzc29yLCBjc3MsIG9wdHMpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdpZmllZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByb2Nlc3NlZCAgID0gZmFsc2U7XG5cbiAgICAgICAgbGV0IHJvb3Q7XG4gICAgICAgIGlmICggdHlwZW9mIGNzcyA9PT0gJ29iamVjdCcgJiYgY3NzICE9PSBudWxsICYmIGNzcy50eXBlID09PSAncm9vdCcgKSB7XG4gICAgICAgICAgICByb290ID0gY3NzO1xuICAgICAgICB9IGVsc2UgaWYgKCBjc3MgaW5zdGFuY2VvZiBMYXp5UmVzdWx0IHx8IGNzcyBpbnN0YW5jZW9mIFJlc3VsdCApIHtcbiAgICAgICAgICAgIHJvb3QgPSBjc3Mucm9vdDtcbiAgICAgICAgICAgIGlmICggY3NzLm1hcCApIHtcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvcHRzLm1hcCA9PT0gJ3VuZGVmaW5lZCcgKSBvcHRzLm1hcCA9IHsgfTtcbiAgICAgICAgICAgICAgICBpZiAoICFvcHRzLm1hcC5pbmxpbmUgKSBvcHRzLm1hcC5pbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBvcHRzLm1hcC5wcmV2ID0gY3NzLm1hcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBwYXJzZXIgPSBwYXJzZTtcbiAgICAgICAgICAgIGlmICggb3B0cy5zeW50YXggKSAgcGFyc2VyID0gb3B0cy5zeW50YXgucGFyc2U7XG4gICAgICAgICAgICBpZiAoIG9wdHMucGFyc2VyICkgIHBhcnNlciA9IG9wdHMucGFyc2VyO1xuICAgICAgICAgICAgaWYgKCBwYXJzZXIucGFyc2UgKSBwYXJzZXIgPSBwYXJzZXIucGFyc2U7XG5cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgcm9vdCA9IHBhcnNlcihjc3MsIG9wdHMpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yID0gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlc3VsdCA9IG5ldyBSZXN1bHQocHJvY2Vzc29yLCByb290LCBvcHRzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UsIHdoaWNoIHdpbGwgYmUgdXNlZFxuICAgICAqIGZvciBDU1MgdHJhbnNmb3JtYXRpb25zLlxuICAgICAqIEB0eXBlIHtQcm9jZXNzb3J9XG4gICAgICovXG4gICAgZ2V0IHByb2Nlc3NvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0LnByb2Nlc3NvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcHRpb25zIGZyb20gdGhlIHtAbGluayBQcm9jZXNzb3IjcHJvY2Vzc30gY2FsbC5cbiAgICAgKiBAdHlwZSB7cHJvY2Vzc09wdGlvbnN9XG4gICAgICovXG4gICAgZ2V0IG9wdHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdC5vcHRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zLCBjb252ZXJ0cyBgUm9vdGBcbiAgICAgKiB0byBhIENTUyBzdHJpbmcgYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNjc3N9LlxuICAgICAqXG4gICAgICogVGhpcyBwcm9wZXJ0eSB3aWxsIG9ubHkgd29yayB3aXRoIHN5bmNocm9ub3VzIHBsdWdpbnMuXG4gICAgICogSWYgdGhlIHByb2Nlc3NvciBjb250YWlucyBhbnkgYXN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICAgKiBpdCB3aWxsIHRocm93IGFuIGVycm9yLiBUaGlzIGlzIHdoeSB0aGlzIG1ldGhvZCBpcyBvbmx5XG4gICAgICogZm9yIGRlYnVnIHB1cnBvc2UsIHlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufS5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICogQHNlZSBSZXN1bHQjY3NzXG4gICAgICovXG4gICAgZ2V0IGNzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY3NzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFsaWFzIGZvciB0aGUgYGNzc2AgcHJvcGVydHkuIFVzZSBpdCB3aXRoIHN5bnRheGVzXG4gICAgICogdGhhdCBnZW5lcmF0ZSBub24tQ1NTIG91dHB1dC5cbiAgICAgKlxuICAgICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAqIEBzZWUgUmVzdWx0I2NvbnRlbnRcbiAgICAgKi9cbiAgICBnZXQgY29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCkuY29udGVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjbWFwfS5cbiAgICAgKlxuICAgICAqIFRoaXMgcHJvcGVydHkgd2lsbCBvbmx5IHdvcmsgd2l0aCBzeW5jaHJvbm91cyBwbHVnaW5zLlxuICAgICAqIElmIHRoZSBwcm9jZXNzb3IgY29udGFpbnMgYW55IGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogaXQgd2lsbCB0aHJvdyBhbiBlcnJvci4gVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seVxuICAgICAqIGZvciBkZWJ1ZyBwdXJwb3NlLCB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7U291cmNlTWFwR2VuZXJhdG9yfVxuICAgICAqIEBzZWUgUmVzdWx0I21hcFxuICAgICAqL1xuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0cmluZ2lmeSgpLm1hcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCByZXR1cm5zIHtAbGluayBSZXN1bHQjcm9vdH0uXG4gICAgICpcbiAgICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7Um9vdH1cbiAgICAgKiBAc2VlIFJlc3VsdCNyb290XG4gICAgICovXG4gICAgZ2V0IHJvb3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKS5yb290O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb2Nlc3NlcyBpbnB1dCBDU1MgdGhyb3VnaCBzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogYW5kIHJldHVybnMge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBUaGlzIHByb3BlcnR5IHdpbGwgb25seSB3b3JrIHdpdGggc3luY2hyb25vdXMgcGx1Z2lucy4gSWYgdGhlIHByb2Nlc3NvclxuICAgICAqIGNvbnRhaW5zIGFueSBhc3luY2hyb25vdXMgcGx1Z2lucyBpdCB3aWxsIHRocm93IGFuIGVycm9yLlxuICAgICAqXG4gICAgICogVGhpcyBpcyB3aHkgdGhpcyBtZXRob2QgaXMgb25seSBmb3IgZGVidWcgcHVycG9zZSxcbiAgICAgKiB5b3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rIExhenlSZXN1bHQjdGhlbn0uXG4gICAgICpcbiAgICAgKiBAdHlwZSB7TWVzc2FnZVtdfVxuICAgICAqIEBzZWUgUmVzdWx0I21lc3NhZ2VzXG4gICAgICovXG4gICAgZ2V0IG1lc3NhZ2VzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zeW5jKCkubWVzc2FnZXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIHBsdWdpbnNcbiAgICAgKiBhbmQgY2FsbHMge0BsaW5rIFJlc3VsdCN3YXJuaW5ncygpfS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gd2FybmluZ3MgZnJvbSBwbHVnaW5zXG4gICAgICovXG4gICAgd2FybmluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN5bmMoKS53YXJuaW5ncygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsaWFzIGZvciB0aGUge0BsaW5rIExhenlSZXN1bHQjY3NzfSBwcm9wZXJ0eS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogbGF6eSArICcnID09PSBsYXp5LmNzcztcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gb3V0cHV0IENTU1xuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jc3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGlucHV0IENTUyB0aHJvdWdoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcGx1Z2luc1xuICAgICAqIGFuZCBjYWxscyBgb25GdWxmaWxsZWRgIHdpdGggYSBSZXN1bHQgaW5zdGFuY2UuIElmIGEgcGx1Z2luIHRocm93c1xuICAgICAqIGFuIGVycm9yLCB0aGUgYG9uUmVqZWN0ZWRgIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQuXG4gICAgICpcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvbkZ1bGZpbGxlZH0gb25GdWxmaWxsZWQgLSBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGFsbCBwbHVnaW5zIHdpbGwgZmluaXNoIHdvcmtcbiAgICAgKiBAcGFyYW0ge29uUmVqZWN0ZWR9ICBvblJlamVjdGVkICAtIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQgb24gYW55IGVycm9yXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtQcm9taXNlfSBQcm9taXNlIEFQSSB0byBtYWtlIHF1ZXVlXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcywgeyBmcm9tOiBjc3NQYXRoIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5jc3MpO1xuICAgICAqIH0pO1xuICAgICAqL1xuICAgIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgaWYgKCEoJ2Zyb20nIGluIHRoaXMub3B0cykpIHtcbiAgICAgICAgICAgIHdhcm5PbmNlKFxuICAgICAgICAgICAgICAgICdXaXRob3V0IGBmcm9tYCBvcHRpb24gUG9zdENTUyBjb3VsZCBnZW5lcmF0ZSB3cm9uZyAnICtcbiAgICAgICAgICAgICAgICAnc291cmNlIG1hcCBhbmQgd2lsbCBub3QgZmluZCBCcm93c2Vyc2xpc3QgY29uZmlnLiAnICtcbiAgICAgICAgICAgICAgICAnU2V0IGl0IHRvIENTUyBmaWxlIHBhdGggb3IgdG8gYHVuZGVmaW5lZGAgdG8gcHJldmVudCAnICtcbiAgICAgICAgICAgICAgICAndGhpcyB3YXJuaW5nLidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXN5bmMoKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzZXMgaW5wdXQgQ1NTIHRocm91Z2ggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyBwbHVnaW5zXG4gICAgICogYW5kIGNhbGxzIG9uUmVqZWN0ZWQgZm9yIGVhY2ggZXJyb3IgdGhyb3duIGluIGFueSBwbHVnaW4uXG4gICAgICpcbiAgICAgKiBJdCBpbXBsZW1lbnRzIHN0YW5kYXJkIFByb21pc2UgQVBJLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvblJlamVjdGVkfSBvblJlamVjdGVkIC0gY2FsbGJhY2sgd2lsbCBiZSBleGVjdXRlZCBvbiBhbnkgZXJyb3JcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1Byb21pc2V9IFByb21pc2UgQVBJIHRvIG1ha2UgcXVldWVcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcyhbY3NzbmV4dF0pLnByb2Nlc3MoY3NzKS50aGVuKHJlc3VsdCA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAgICAgKiB9KS5jYXRjaChlcnJvciA9PiB7XG4gICAgICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgKiB9KTtcbiAgICAgKi9cbiAgICBjYXRjaChvblJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzeW5jKCkuY2F0Y2gob25SZWplY3RlZCk7XG4gICAgfVxuXG4gICAgaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgaWYgKCBlcnJvci5uYW1lID09PSAnQ3NzU3ludGF4RXJyb3InICYmICFlcnJvci5wbHVnaW4gKSB7XG4gICAgICAgICAgICAgICAgZXJyb3IucGx1Z2luID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICAgICAgZXJyb3Iuc2V0TWVzc2FnZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcGx1Z2luLnBvc3Rjc3NWZXJzaW9uICkge1xuICAgICAgICAgICAgICAgIGxldCBwbHVnaW5OYW1lID0gcGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICAgICAgbGV0IHBsdWdpblZlciAgPSBwbHVnaW4ucG9zdGNzc1ZlcnNpb247XG4gICAgICAgICAgICAgICAgbGV0IHJ1bnRpbWVWZXIgPSB0aGlzLnJlc3VsdC5wcm9jZXNzb3IudmVyc2lvbjtcbiAgICAgICAgICAgICAgICBsZXQgYSA9IHBsdWdpblZlci5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGxldCBiID0gcnVudGltZVZlci5zcGxpdCgnLicpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBhWzBdICE9PSBiWzBdIHx8IHBhcnNlSW50KGFbMV0pID4gcGFyc2VJbnQoYlsxXSkgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnVW5rbm93biBlcnJvciBmcm9tIFBvc3RDU1MgcGx1Z2luLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICdZb3VyIGN1cnJlbnQgUG9zdENTUyB2ZXJzaW9uICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2lzICcgKyBydW50aW1lVmVyICsgJywgYnV0ICcgKyBwbHVnaW5OYW1lICsgJyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICd1c2VzICcgKyBwbHVnaW5WZXIgKyAnLiBQZXJoYXBzIHRoaXMgaXMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNvdXJjZSBvZiB0aGUgZXJyb3IgYmVsb3cuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICggY29uc29sZSAmJiBjb25zb2xlLmVycm9yICkgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBpZiAoIHRoaXMucGx1Z2luID49IHRoaXMucHJvY2Vzc29yLnBsdWdpbnMubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcGx1Z2luICA9IHRoaXMucHJvY2Vzc29yLnBsdWdpbnNbdGhpcy5wbHVnaW5dO1xuICAgICAgICAgICAgbGV0IHByb21pc2UgPSB0aGlzLnJ1bihwbHVnaW4pO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4gKz0gMTtcblxuICAgICAgICAgICAgaWYgKCBpc1Byb21pc2UocHJvbWlzZSkgKSB7XG4gICAgICAgICAgICAgICAgcHJvbWlzZS50aGVuKCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXN5bmNUaWNrKHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvciwgcGx1Z2luKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFzeW5jVGljayhyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NlZCA9IHRydWU7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMoKSB7XG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzZWQgKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdCh0aGlzLmVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuc3RyaW5naWZ5KCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzaW5nICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc2luZztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJvY2Vzc2luZyA9IG5ldyBQcm9taXNlKCAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSByZXR1cm4gcmVqZWN0KHRoaXMuZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5wbHVnaW4gPSAwO1xuICAgICAgICAgICAgdGhpcy5hc3luY1RpY2socmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSkudGhlbiggKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5naWZ5KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3Npbmc7XG4gICAgfVxuXG4gICAgc3luYygpIHtcbiAgICAgICAgaWYgKCB0aGlzLnByb2Nlc3NlZCApIHJldHVybiB0aGlzLnJlc3VsdDtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWQgPSB0cnVlO1xuXG4gICAgICAgIGlmICggdGhpcy5wcm9jZXNzaW5nICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuZXJyb3IgKSB0aHJvdyB0aGlzLmVycm9yO1xuXG4gICAgICAgIGZvciAoIGxldCBwbHVnaW4gb2YgdGhpcy5yZXN1bHQucHJvY2Vzc29yLnBsdWdpbnMgKSB7XG4gICAgICAgICAgICBsZXQgcHJvbWlzZSA9IHRoaXMucnVuKHBsdWdpbik7XG4gICAgICAgICAgICBpZiAoIGlzUHJvbWlzZShwcm9taXNlKSApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICdVc2UgcHJvY2Vzcyhjc3MpLnRoZW4oY2IpIHRvIHdvcmsgd2l0aCBhc3luYyBwbHVnaW5zJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHQ7XG4gICAgfVxuXG4gICAgcnVuKHBsdWdpbikge1xuICAgICAgICB0aGlzLnJlc3VsdC5sYXN0UGx1Z2luID0gcGx1Z2luO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gcGx1Z2luKHRoaXMucmVzdWx0LnJvb3QsIHRoaXMucmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIHBsdWdpbik7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0cmluZ2lmeSgpIHtcbiAgICAgICAgaWYgKCB0aGlzLnN0cmluZ2lmaWVkICkgcmV0dXJuIHRoaXMucmVzdWx0O1xuICAgICAgICB0aGlzLnN0cmluZ2lmaWVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLnN5bmMoKTtcblxuICAgICAgICBsZXQgb3B0cyA9IHRoaXMucmVzdWx0Lm9wdHM7XG4gICAgICAgIGxldCBzdHIgID0gc3RyaW5naWZ5O1xuICAgICAgICBpZiAoIG9wdHMuc3ludGF4ICkgICAgICBzdHIgPSBvcHRzLnN5bnRheC5zdHJpbmdpZnk7XG4gICAgICAgIGlmICggb3B0cy5zdHJpbmdpZmllciApIHN0ciA9IG9wdHMuc3RyaW5naWZpZXI7XG4gICAgICAgIGlmICggc3RyLnN0cmluZ2lmeSApICAgIHN0ciA9IHN0ci5zdHJpbmdpZnk7XG5cbiAgICAgICAgbGV0IG1hcCAgPSBuZXcgTWFwR2VuZXJhdG9yKHN0ciwgdGhpcy5yZXN1bHQucm9vdCwgdGhpcy5yZXN1bHQub3B0cyk7XG4gICAgICAgIGxldCBkYXRhID0gbWFwLmdlbmVyYXRlKCk7XG4gICAgICAgIHRoaXMucmVzdWx0LmNzcyA9IGRhdGFbMF07XG4gICAgICAgIHRoaXMucmVzdWx0Lm1hcCA9IGRhdGFbMV07XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0O1xuICAgIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBMYXp5UmVzdWx0O1xuXG4vKipcbiAqIEBjYWxsYmFjayBvbkZ1bGZpbGxlZFxuICogQHBhcmFtIHtSZXN1bHR9IHJlc3VsdFxuICovXG5cbi8qKlxuICogQGNhbGxiYWNrIG9uUmVqZWN0ZWRcbiAqIEBwYXJhbSB7RXJyb3J9IGVycm9yXG4gKi9cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for safely splitting lists of CSS values,\n * preserving parentheses and quotes.\n *\n * @example\n * const list = postcss.list;\n *\n * @namespace list\n */\nvar list = {\n split: function split(string, separators, last) {\n var array = [];\n var current = '';\n var split = false;\n\n var func = 0;\n var quote = false;\n var escape = false;\n\n for (var i = 0; i < string.length; i++) {\n var letter = string[i];\n\n if (quote) {\n if (escape) {\n escape = false;\n } else if (letter === '\\\\') {\n escape = true;\n } else if (letter === quote) {\n quote = false;\n }\n } else if (letter === '\"' || letter === '\\'') {\n quote = letter;\n } else if (letter === '(') {\n func += 1;\n } else if (letter === ')') {\n if (func > 0) func -= 1;\n } else if (func === 0) {\n if (separators.indexOf(letter) !== -1) split = true;\n }\n\n if (split) {\n if (current !== '') array.push(current.trim());\n current = '';\n split = false;\n } else {\n current += letter;\n }\n }\n\n if (last || current !== '') array.push(current.trim());\n return array;\n },\n\n\n /**\n * Safely splits space-separated values (such as those for `background`,\n * `border-radius`, and other shorthand properties).\n *\n * @param {string} string - space-separated values\n *\n * @return {string[]} split values\n *\n * @example\n * postcss.list.space('1px calc(10% + 1px)') //=> ['1px', 'calc(10% + 1px)']\n */\n space: function space(string) {\n var spaces = [' ', '\\n', '\\t'];\n return list.split(string, spaces);\n },\n\n\n /**\n * Safely splits comma-separated values (such as those for `transition-*`\n * and `background` properties).\n *\n * @param {string} string - comma-separated values\n *\n * @return {string[]} split values\n *\n * @example\n * postcss.list.comma('black, linear-gradient(white, black)')\n * //=> ['black', 'linear-gradient(white, black)']\n */\n comma: function comma(string) {\n var comma = ',';\n return list.split(string, [comma], true);\n }\n};\n\nexports.default = list;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3QuZXM2Il0sIm5hbWVzIjpbImxpc3QiLCJzcGxpdCIsInN0cmluZyIsInNlcGFyYXRvcnMiLCJsYXN0IiwiYXJyYXkiLCJjdXJyZW50IiwiZnVuYyIsInF1b3RlIiwiZXNjYXBlIiwiaSIsImxlbmd0aCIsImxldHRlciIsImluZGV4T2YiLCJwdXNoIiwidHJpbSIsInNwYWNlIiwic3BhY2VzIiwiY29tbWEiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7QUFTQSxJQUFJQSxPQUFPO0FBRVBDLFNBRk8saUJBRURDLE1BRkMsRUFFT0MsVUFGUCxFQUVtQkMsSUFGbkIsRUFFeUI7QUFDNUIsWUFBSUMsUUFBVSxFQUFkO0FBQ0EsWUFBSUMsVUFBVSxFQUFkO0FBQ0EsWUFBSUwsUUFBVSxLQUFkOztBQUVBLFlBQUlNLE9BQVUsQ0FBZDtBQUNBLFlBQUlDLFFBQVUsS0FBZDtBQUNBLFlBQUlDLFNBQVUsS0FBZDs7QUFFQSxhQUFNLElBQUlDLElBQUksQ0FBZCxFQUFpQkEsSUFBSVIsT0FBT1MsTUFBNUIsRUFBb0NELEdBQXBDLEVBQTBDO0FBQ3RDLGdCQUFJRSxTQUFTVixPQUFPUSxDQUFQLENBQWI7O0FBRUEsZ0JBQUtGLEtBQUwsRUFBYTtBQUNULG9CQUFLQyxNQUFMLEVBQWM7QUFDVkEsNkJBQVMsS0FBVDtBQUNILGlCQUZELE1BRU8sSUFBS0csV0FBVyxJQUFoQixFQUF1QjtBQUMxQkgsNkJBQVMsSUFBVDtBQUNILGlCQUZNLE1BRUEsSUFBS0csV0FBV0osS0FBaEIsRUFBd0I7QUFDM0JBLDRCQUFRLEtBQVI7QUFDSDtBQUNKLGFBUkQsTUFRTyxJQUFLSSxXQUFXLEdBQVgsSUFBa0JBLFdBQVcsSUFBbEMsRUFBeUM7QUFDNUNKLHdCQUFRSSxNQUFSO0FBQ0gsYUFGTSxNQUVBLElBQUtBLFdBQVcsR0FBaEIsRUFBc0I7QUFDekJMLHdCQUFRLENBQVI7QUFDSCxhQUZNLE1BRUEsSUFBS0ssV0FBVyxHQUFoQixFQUFzQjtBQUN6QixvQkFBS0wsT0FBTyxDQUFaLEVBQWdCQSxRQUFRLENBQVI7QUFDbkIsYUFGTSxNQUVBLElBQUtBLFNBQVMsQ0FBZCxFQUFrQjtBQUNyQixvQkFBS0osV0FBV1UsT0FBWCxDQUFtQkQsTUFBbkIsTUFBK0IsQ0FBQyxDQUFyQyxFQUF5Q1gsUUFBUSxJQUFSO0FBQzVDOztBQUVELGdCQUFLQSxLQUFMLEVBQWE7QUFDVCxvQkFBS0ssWUFBWSxFQUFqQixFQUFzQkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDdEJULDBCQUFVLEVBQVY7QUFDQUwsd0JBQVUsS0FBVjtBQUNILGFBSkQsTUFJTztBQUNISywyQkFBV00sTUFBWDtBQUNIO0FBQ0o7O0FBRUQsWUFBS1IsUUFBUUUsWUFBWSxFQUF6QixFQUE4QkQsTUFBTVMsSUFBTixDQUFXUixRQUFRUyxJQUFSLEVBQVg7QUFDOUIsZUFBT1YsS0FBUDtBQUNILEtBM0NNOzs7QUE2Q1A7Ozs7Ozs7Ozs7O0FBV0FXLFNBeERPLGlCQXdERGQsTUF4REMsRUF3RE87QUFDVixZQUFJZSxTQUFTLENBQUMsR0FBRCxFQUFNLElBQU4sRUFBWSxJQUFaLENBQWI7QUFDQSxlQUFPakIsS0FBS0MsS0FBTCxDQUFXQyxNQUFYLEVBQW1CZSxNQUFuQixDQUFQO0FBQ0gsS0EzRE07OztBQTZEUDs7Ozs7Ozs7Ozs7O0FBWUFDLFNBekVPLGlCQXlFRGhCLE1BekVDLEVBeUVPO0FBQ1YsWUFBSWdCLFFBQVEsR0FBWjtBQUNBLGVBQU9sQixLQUFLQyxLQUFMLENBQVdDLE1BQVgsRUFBbUIsQ0FBQ2dCLEtBQUQsQ0FBbkIsRUFBNEIsSUFBNUIsQ0FBUDtBQUNIO0FBNUVNLENBQVg7O2tCQWdGZWxCLEkiLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGFpbnMgaGVscGVycyBmb3Igc2FmZWx5IHNwbGl0dGluZyBsaXN0cyBvZiBDU1MgdmFsdWVzLFxuICogcHJlc2VydmluZyBwYXJlbnRoZXNlcyBhbmQgcXVvdGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBsaXN0ID0gcG9zdGNzcy5saXN0O1xuICpcbiAqIEBuYW1lc3BhY2UgbGlzdFxuICovXG5sZXQgbGlzdCA9IHtcblxuICAgIHNwbGl0KHN0cmluZywgc2VwYXJhdG9ycywgbGFzdCkge1xuICAgICAgICBsZXQgYXJyYXkgICA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudCA9ICcnO1xuICAgICAgICBsZXQgc3BsaXQgICA9IGZhbHNlO1xuXG4gICAgICAgIGxldCBmdW5jICAgID0gMDtcbiAgICAgICAgbGV0IHF1b3RlICAgPSBmYWxzZTtcbiAgICAgICAgbGV0IGVzY2FwZSAgPSBmYWxzZTtcblxuICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoOyBpKysgKSB7XG4gICAgICAgICAgICBsZXQgbGV0dGVyID0gc3RyaW5nW2ldO1xuXG4gICAgICAgICAgICBpZiAoIHF1b3RlICkge1xuICAgICAgICAgICAgICAgIGlmICggZXNjYXBlICkge1xuICAgICAgICAgICAgICAgICAgICBlc2NhcGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBsZXR0ZXIgPT09ICdcXFxcJyApIHtcbiAgICAgICAgICAgICAgICAgICAgZXNjYXBlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCBsZXR0ZXIgPT09IHF1b3RlICkge1xuICAgICAgICAgICAgICAgICAgICBxdW90ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGxldHRlciA9PT0gJ1wiJyB8fCBsZXR0ZXIgPT09ICdcXCcnICkge1xuICAgICAgICAgICAgICAgIHF1b3RlID0gbGV0dGVyO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggbGV0dGVyID09PSAnKCcgKSB7XG4gICAgICAgICAgICAgICAgZnVuYyArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggbGV0dGVyID09PSAnKScgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBmdW5jID4gMCApIGZ1bmMgLT0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIGZ1bmMgPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBzZXBhcmF0b3JzLmluZGV4T2YobGV0dGVyKSAhPT0gLTEgKSBzcGxpdCA9IHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggc3BsaXQgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBjdXJyZW50ICE9PSAnJyApIGFycmF5LnB1c2goY3VycmVudC50cmltKCkpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgPSAnJztcbiAgICAgICAgICAgICAgICBzcGxpdCAgID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGN1cnJlbnQgKz0gbGV0dGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBsYXN0IHx8IGN1cnJlbnQgIT09ICcnICkgYXJyYXkucHVzaChjdXJyZW50LnRyaW0oKSk7XG4gICAgICAgIHJldHVybiBhcnJheTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogU2FmZWx5IHNwbGl0cyBzcGFjZS1zZXBhcmF0ZWQgdmFsdWVzIChzdWNoIGFzIHRob3NlIGZvciBgYmFja2dyb3VuZGAsXG4gICAgICogYGJvcmRlci1yYWRpdXNgLCBhbmQgb3RoZXIgc2hvcnRoYW5kIHByb3BlcnRpZXMpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyAtIHNwYWNlLXNlcGFyYXRlZCB2YWx1ZXNcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBzcGxpdCB2YWx1ZXNcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy5saXN0LnNwYWNlKCcxcHggY2FsYygxMCUgKyAxcHgpJykgLy89PiBbJzFweCcsICdjYWxjKDEwJSArIDFweCknXVxuICAgICAqL1xuICAgIHNwYWNlKHN0cmluZykge1xuICAgICAgICBsZXQgc3BhY2VzID0gWycgJywgJ1xcbicsICdcXHQnXTtcbiAgICAgICAgcmV0dXJuIGxpc3Quc3BsaXQoc3RyaW5nLCBzcGFjZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBTYWZlbHkgc3BsaXRzIGNvbW1hLXNlcGFyYXRlZCB2YWx1ZXMgKHN1Y2ggYXMgdGhvc2UgZm9yIGB0cmFuc2l0aW9uLSpgXG4gICAgICogYW5kIGBiYWNrZ3JvdW5kYCBwcm9wZXJ0aWVzKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgLSBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gc3BsaXQgdmFsdWVzXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MubGlzdC5jb21tYSgnYmxhY2ssIGxpbmVhci1ncmFkaWVudCh3aGl0ZSwgYmxhY2spJylcbiAgICAgKiAvLz0+IFsnYmxhY2snLCAnbGluZWFyLWdyYWRpZW50KHdoaXRlLCBibGFjayknXVxuICAgICAqL1xuICAgIGNvbW1hKHN0cmluZykge1xuICAgICAgICBsZXQgY29tbWEgPSAnLCc7XG4gICAgICAgIHJldHVybiBsaXN0LnNwbGl0KHN0cmluZywgW2NvbW1hXSwgdHJ1ZSk7XG4gICAgfVxuXG59O1xuXG5leHBvcnQgZGVmYXVsdCBsaXN0O1xuIl19\n","/**********************\n Velocity UI Pack\n**********************/\n\n/* VelocityJS.org UI Pack (5.0.4). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License. Portions copyright Daniel Eden, Christian Pucci. */\n\n;(function (factory) {\n /* CommonJS module. */\n if (typeof require === \"function\" && typeof exports === \"object\" ) {\n module.exports = factory();\n /* AMD module. */\n } else if (typeof define === \"function\" && define.amd) {\n define([ \"velocity\" ], factory);\n /* Browser globals. */\n } else {\n factory();\n }\n}(function() {\nreturn function (global, window, document, undefined) {\n\n /*************\n Checks\n *************/\n\n if (!global.Velocity || !global.Velocity.Utilities) {\n window.console && console.log(\"Velocity UI Pack: Velocity must be loaded first. Aborting.\");\n return;\n } else {\n var Velocity = global.Velocity,\n $ = Velocity.Utilities;\n }\n\n var velocityVersion = Velocity.version,\n requiredVersion = { major: 1, minor: 1, patch: 0 };\n\n function greaterSemver (primary, secondary) {\n var versionInts = [];\n\n if (!primary || !secondary) { return false; }\n\n $.each([ primary, secondary ], function(i, versionObject) {\n var versionIntsComponents = [];\n\n $.each(versionObject, function(component, value) {\n while (value.toString().length < 5) {\n value = \"0\" + value;\n }\n versionIntsComponents.push(value);\n });\n\n versionInts.push(versionIntsComponents.join(\"\"))\n });\n\n return (parseFloat(versionInts[0]) > parseFloat(versionInts[1]));\n }\n\n if (greaterSemver(requiredVersion, velocityVersion)){\n var abortError = \"Velocity UI Pack: You need to update Velocity (jquery.velocity.js) to a newer version. Visit http://github.com/julianshapiro/velocity.\";\n alert(abortError);\n throw new Error(abortError);\n }\n\n /************************\n Effect Registration\n ************************/\n\n /* Note: RegisterUI is a legacy name. */\n Velocity.RegisterEffect = Velocity.RegisterUI = function (effectName, properties) {\n /* Animate the expansion/contraction of the elements' parent's height for In/Out effects. */\n function animateParentHeight (elements, direction, totalDuration, stagger) {\n var totalHeightDelta = 0,\n parentNode;\n\n /* Sum the total height (including padding and margin) of all targeted elements. */\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n if (stagger) {\n /* Increase the totalDuration by the successive delay amounts produced by the stagger option. */\n totalDuration += i * stagger;\n }\n\n parentNode = element.parentNode;\n\n $.each([ \"height\", \"paddingTop\", \"paddingBottom\", \"marginTop\", \"marginBottom\"], function(i, property) {\n totalHeightDelta += parseFloat(Velocity.CSS.getPropertyValue(element, property));\n });\n });\n\n /* Animate the parent element's height adjustment (with a varying duration multiplier for aesthetic benefits). */\n Velocity.animate(\n parentNode,\n { height: (direction === \"In\" ? \"+\" : \"-\") + \"=\" + totalHeightDelta },\n { queue: false, easing: \"ease-in-out\", duration: totalDuration * (direction === \"In\" ? 0.6 : 1) }\n );\n }\n\n /* Register a custom redirect for each effect. */\n Velocity.Redirects[effectName] = function (element, redirectOptions, elementsIndex, elementsSize, elements, promiseData) {\n var finalElement = (elementsIndex === elementsSize - 1);\n\n if (typeof properties.defaultDuration === \"function\") {\n properties.defaultDuration = properties.defaultDuration.call(elements, elements);\n } else {\n properties.defaultDuration = parseFloat(properties.defaultDuration);\n }\n\n /* Iterate through each effect's call array. */\n for (var callIndex = 0; callIndex < properties.calls.length; callIndex++) {\n var call = properties.calls[callIndex],\n propertyMap = call[0],\n redirectDuration = (redirectOptions.duration || properties.defaultDuration || 1000),\n durationPercentage = call[1],\n callOptions = call[2] || {},\n opts = {};\n\n /* Assign the whitelisted per-call options. */\n opts.duration = redirectDuration * (durationPercentage || 1);\n opts.queue = redirectOptions.queue || \"\";\n opts.easing = callOptions.easing || \"ease\";\n opts.delay = parseFloat(callOptions.delay) || 0;\n opts._cacheValues = callOptions._cacheValues || true;\n\n /* Special processing for the first effect call. */\n if (callIndex === 0) {\n /* If a delay was passed into the redirect, combine it with the first call's delay. */\n opts.delay += (parseFloat(redirectOptions.delay) || 0);\n\n if (elementsIndex === 0) {\n opts.begin = function() {\n /* Only trigger a begin callback on the first effect call with the first element in the set. */\n redirectOptions.begin && redirectOptions.begin.call(elements, elements);\n\n var direction = effectName.match(/(In|Out)$/);\n\n /* Make \"in\" transitioning elements invisible immediately so that there's no FOUC between now\n and the first RAF tick. */\n if ((direction && direction[0] === \"In\") && propertyMap.opacity !== undefined) {\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n Velocity.CSS.setPropertyValue(element, \"opacity\", 0);\n });\n }\n\n /* Only trigger animateParentHeight() if we're using an In/Out transition. */\n if (redirectOptions.animateParentHeight && direction) {\n animateParentHeight(elements, direction[0], redirectDuration + opts.delay, redirectOptions.stagger);\n }\n }\n }\n\n /* If the user isn't overriding the display option, default to \"auto\" for \"In\"-suffixed transitions. */\n if (redirectOptions.display !== null) {\n if (redirectOptions.display !== undefined && redirectOptions.display !== \"none\") {\n opts.display = redirectOptions.display;\n } else if (/In$/.test(effectName)) {\n /* Inline elements cannot be subjected to transforms, so we switch them to inline-block. */\n var defaultDisplay = Velocity.CSS.Values.getDisplayType(element);\n opts.display = (defaultDisplay === \"inline\") ? \"inline-block\" : defaultDisplay;\n }\n }\n\n if (redirectOptions.visibility && redirectOptions.visibility !== \"hidden\") {\n opts.visibility = redirectOptions.visibility;\n }\n }\n\n /* Special processing for the last effect call. */\n if (callIndex === properties.calls.length - 1) {\n /* Append promise resolving onto the user's redirect callback. */\n function injectFinalCallbacks () {\n if ((redirectOptions.display === undefined || redirectOptions.display === \"none\") && /Out$/.test(effectName)) {\n $.each(elements.nodeType ? [ elements ] : elements, function(i, element) {\n Velocity.CSS.setPropertyValue(element, \"display\", \"none\");\n });\n }\n\n redirectOptions.complete && redirectOptions.complete.call(elements, elements);\n\n if (promiseData) {\n promiseData.resolver(elements || element);\n }\n }\n\n opts.complete = function() {\n if (properties.reset) {\n for (var resetProperty in properties.reset) {\n var resetValue = properties.reset[resetProperty];\n\n /* Format each non-array value in the reset property map to [ value, value ] so that changes apply\n immediately and DOM querying is avoided (via forcefeeding). */\n /* Note: Don't forcefeed hooks, otherwise their hook roots will be defaulted to their null values. */\n if (Velocity.CSS.Hooks.registered[resetProperty] === undefined && (typeof resetValue === \"string\" || typeof resetValue === \"number\")) {\n properties.reset[resetProperty] = [ properties.reset[resetProperty], properties.reset[resetProperty] ];\n }\n }\n\n /* So that the reset values are applied instantly upon the next rAF tick, use a zero duration and parallel queueing. */\n var resetOptions = { duration: 0, queue: false };\n\n /* Since the reset option uses up the complete callback, we trigger the user's complete callback at the end of ours. */\n if (finalElement) {\n resetOptions.complete = injectFinalCallbacks;\n }\n\n Velocity.animate(element, properties.reset, resetOptions);\n /* Only trigger the user's complete callback on the last effect call with the last element in the set. */\n } else if (finalElement) {\n injectFinalCallbacks();\n }\n };\n\n if (redirectOptions.visibility === \"hidden\") {\n opts.visibility = redirectOptions.visibility;\n }\n }\n\n Velocity.animate(element, propertyMap, opts);\n }\n };\n\n /* Return the Velocity object so that RegisterUI calls can be chained. */\n return Velocity;\n };\n\n /*********************\n Packaged Effects\n *********************/\n\n /* Externalize the packagedEffects data so that they can optionally be modified and re-registered. */\n /* Support: <=IE8: Callouts will have no effect, and transitions will simply fade in/out. IE9/Android 2.3: Most effects are fully supported, the rest fade in/out. All other browsers: full support. */\n Velocity.RegisterEffect.packagedEffects =\n {\n /* Animate.css */\n \"callout.bounce\": {\n defaultDuration: 550,\n calls: [\n [ { translateY: -30 }, 0.25 ],\n [ { translateY: 0 }, 0.125 ],\n [ { translateY: -15 }, 0.125 ],\n [ { translateY: 0 }, 0.25 ]\n ]\n },\n /* Animate.css */\n \"callout.shake\": {\n defaultDuration: 800,\n calls: [\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 11 }, 0.125 ],\n [ { translateX: -11 }, 0.125 ],\n [ { translateX: 0 }, 0.125 ]\n ]\n },\n /* Animate.css */\n \"callout.flash\": {\n defaultDuration: 1100,\n calls: [\n [ { opacity: [ 0, \"easeInOutQuad\", 1 ] }, 0.25 ],\n [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ],\n [ { opacity: [ 0, \"easeInOutQuad\" ] }, 0.25 ],\n [ { opacity: [ 1, \"easeInOutQuad\" ] }, 0.25 ]\n ]\n },\n /* Animate.css */\n \"callout.pulse\": {\n defaultDuration: 825,\n calls: [\n [ { scaleX: 1.1, scaleY: 1.1 }, 0.50, { easing: \"easeInExpo\" } ],\n [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n ]\n },\n /* Animate.css */\n \"callout.swing\": {\n defaultDuration: 950,\n calls: [\n [ { rotateZ: 15 }, 0.20 ],\n [ { rotateZ: -10 }, 0.20 ],\n [ { rotateZ: 5 }, 0.20 ],\n [ { rotateZ: -5 }, 0.20 ],\n [ { rotateZ: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"callout.tada\": {\n defaultDuration: 1000,\n calls: [\n [ { scaleX: 0.9, scaleY: 0.9, rotateZ: -3 }, 0.10 ],\n [ { scaleX: 1.1, scaleY: 1.1, rotateZ: 3 }, 0.10 ],\n [ { scaleX: 1.1, scaleY: 1.1, rotateZ: -3 }, 0.10 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ \"reverse\", 0.125 ],\n [ { scaleX: 1, scaleY: 1, rotateZ: 0 }, 0.20 ]\n ]\n },\n \"transition.fadeIn\": {\n defaultDuration: 500,\n calls: [\n [ { opacity: [ 1, 0 ] } ]\n ]\n },\n \"transition.fadeOut\": {\n defaultDuration: 500,\n calls: [\n [ { opacity: [ 0, 1 ] } ]\n ]\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipXIn\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateY: [ 0, -55 ] } ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipXOut\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateY: 55 } ]\n ],\n reset: { transformPerspective: 0, rotateY: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipYIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], rotateX: [ 0, -45 ] } ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipYOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], rotateX: 25 } ]\n ],\n reset: { transformPerspective: 0, rotateX: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceXIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateY: [ -10, 90 ] }, 0.50 ],\n [ { opacity: 0.80, rotateY: 10 }, 0.25 ],\n [ { opacity: 1, rotateY: 0 }, 0.25 ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceXOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateY: -10 }, 0.50 ],\n [ { opacity: 0, rotateY: 90 }, 0.50 ]\n ],\n reset: { transformPerspective: 0, rotateY: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceYIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0.725, 0 ], transformPerspective: [ 400, 400 ], rotateX: [ -10, 90 ] }, 0.50 ],\n [ { opacity: 0.80, rotateX: 10 }, 0.25 ],\n [ { opacity: 1, rotateX: 0 }, 0.25 ]\n ],\n reset: { transformPerspective: 0 }\n },\n /* Animate.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.flipBounceYOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0.9, 1 ], transformPerspective: [ 400, 400 ], rotateX: -15 }, 0.50 ],\n [ { opacity: 0, rotateX: 90 }, 0.50 ]\n ],\n reset: { transformPerspective: 0, rotateX: 0 }\n },\n /* Magic.css */\n \"transition.swoopIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"100%\", \"50%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], translateX: [ 0, -700 ], translateZ: 0 } ]\n ],\n reset: { transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n \"transition.swoopOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"100%\" ], transformOriginY: [ \"100%\", \"100%\" ], scaleX: 0, scaleY: 0, translateX: -700, translateZ: 0 } ]\n ],\n reset: { transformOriginX: \"50%\", transformOriginY: \"50%\", scaleX: 1, scaleY: 1, translateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n \"transition.whirlIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0 ], scaleY: [ 1, 0 ], rotateY: [ 0, 160 ] }, 1, { easing: \"easeInOutSine\" } ]\n ]\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3. (Fades and scales only.) */\n \"transition.whirlOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, \"easeInOutQuint\", 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0, scaleY: 0, rotateY: 160 }, 1, { easing: \"swing\" } ]\n ],\n reset: { scaleX: 1, scaleY: 1, rotateY: 0 }\n },\n \"transition.shrinkIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 1.5 ], scaleY: [ 1, 1.5 ], translateZ: 0 } ]\n ]\n },\n \"transition.shrinkOut\": {\n defaultDuration: 600,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 1.3, scaleY: 1.3, translateZ: 0 } ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n \"transition.expandIn\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 1, 0 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: [ 1, 0.625 ], scaleY: [ 1, 0.625 ], translateZ: 0 } ]\n ]\n },\n \"transition.expandOut\": {\n defaultDuration: 700,\n calls: [\n [ { opacity: [ 0, 1 ], transformOriginX: [ \"50%\", \"50%\" ], transformOriginY: [ \"50%\", \"50%\" ], scaleX: 0.5, scaleY: 0.5, translateZ: 0 } ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n /* Animate.css */\n \"transition.bounceIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], scaleX: [ 1.05, 0.3 ], scaleY: [ 1.05, 0.3 ] }, 0.40 ],\n [ { scaleX: 0.9, scaleY: 0.9, translateZ: 0 }, 0.20 ],\n [ { scaleX: 1, scaleY: 1 }, 0.50 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceOut\": {\n defaultDuration: 800,\n calls: [\n [ { scaleX: 0.95, scaleY: 0.95 }, 0.35 ],\n [ { scaleX: 1.1, scaleY: 1.1, translateZ: 0 }, 0.35 ],\n [ { opacity: [ 0, 1 ], scaleX: 0.3, scaleY: 0.3 }, 0.30 ]\n ],\n reset: { scaleX: 1, scaleY: 1 }\n },\n /* Animate.css */\n \"transition.bounceUpIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ -30, 1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateY: 10 }, 0.20 ],\n [ { translateY: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceUpOut\": {\n defaultDuration: 1000,\n calls: [\n [ { translateY: 20 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: -1000 }, 0.80 ]\n ],\n reset: { translateY: 0 }\n },\n /* Animate.css */\n \"transition.bounceDownIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 30, -1000 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateY: -10 }, 0.20 ],\n [ { translateY: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceDownOut\": {\n defaultDuration: 1000,\n calls: [\n [ { translateY: -20 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateY: 1000 }, 0.80 ]\n ],\n reset: { translateY: 0 }\n },\n /* Animate.css */\n \"transition.bounceLeftIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 30, -1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateX: -10 }, 0.20 ],\n [ { translateX: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceLeftOut\": {\n defaultDuration: 750,\n calls: [\n [ { translateX: 30 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: -1250 }, 0.80 ]\n ],\n reset: { translateX: 0 }\n },\n /* Animate.css */\n \"transition.bounceRightIn\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ -30, 1250 ] }, 0.60, { easing: \"easeOutCirc\" } ],\n [ { translateX: 10 }, 0.20 ],\n [ { translateX: 0 }, 0.20 ]\n ]\n },\n /* Animate.css */\n \"transition.bounceRightOut\": {\n defaultDuration: 750,\n calls: [\n [ { translateX: -30 }, 0.20 ],\n [ { opacity: [ 0, \"easeInCirc\", 1 ], translateX: 1250 }, 0.80 ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideUpIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, 20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideUpOut\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: -20, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideDownIn\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, -20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideDownOut\": {\n defaultDuration: 900,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: 20, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideLeftIn\": {\n defaultDuration: 1000,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, -20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideLeftOut\": {\n defaultDuration: 1050,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: -20, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideRightIn\": {\n defaultDuration: 1000,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, 20 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideRightOut\": {\n defaultDuration: 1050,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: 20, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideUpBigIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, 75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideUpBigOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: -75, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideDownBigIn\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 1, 0 ], translateY: [ 0, -75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideDownBigOut\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 0, 1 ], translateY: 75, translateZ: 0 } ]\n ],\n reset: { translateY: 0 }\n },\n \"transition.slideLeftBigIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, -75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideLeftBigOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: -75, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n \"transition.slideRightBigIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], translateX: [ 0, 75 ], translateZ: 0 } ]\n ]\n },\n \"transition.slideRightBigOut\": {\n defaultDuration: 750,\n calls: [\n [ { opacity: [ 0, 1 ], translateX: 75, translateZ: 0 } ]\n ],\n reset: { translateX: 0 }\n },\n /* Magic.css */\n \"transition.perspectiveUpIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: [ 0, -180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveUpOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ \"100%\", \"100%\" ], rotateX: -180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveDownIn\": {\n defaultDuration: 800,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: [ 0, 180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveDownOut\": {\n defaultDuration: 850,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 800, 800 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateX: 180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateX: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveLeftIn\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: [ 0, -180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveLeftOut\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ 0, 0 ], transformOriginY: [ 0, 0 ], rotateY: -180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveRightIn\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 1, 0 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: [ 0, 180 ] } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\" }\n },\n /* Magic.css */\n /* Support: Loses rotation in IE9/Android 2.3 (fades only). */\n \"transition.perspectiveRightOut\": {\n defaultDuration: 950,\n calls: [\n [ { opacity: [ 0, 1 ], transformPerspective: [ 2000, 2000 ], transformOriginX: [ \"100%\", \"100%\" ], transformOriginY: [ 0, 0 ], rotateY: 180 } ]\n ],\n reset: { transformPerspective: 0, transformOriginX: \"50%\", transformOriginY: \"50%\", rotateY: 0 }\n }\n };\n\n /* Register the packaged effects. */\n for (var effectName in Velocity.RegisterEffect.packagedEffects) {\n Velocity.RegisterEffect(effectName, Velocity.RegisterEffect.packagedEffects[effectName]);\n }\n\n /*********************\n Sequence Running\n **********************/\n\n /* Note: Sequence calls must use Velocity's single-object arguments syntax. */\n Velocity.RunSequence = function (originalSequence) {\n var sequence = $.extend(true, [], originalSequence);\n\n if (sequence.length > 1) {\n $.each(sequence.reverse(), function(i, currentCall) {\n var nextCall = sequence[i + 1];\n\n if (nextCall) {\n /* Parallel sequence calls (indicated via sequenceQueue:false) are triggered\n in the previous call's begin callback. Otherwise, chained calls are normally triggered\n in the previous call's complete callback. */\n var currentCallOptions = currentCall.o || currentCall.options,\n nextCallOptions = nextCall.o || nextCall.options;\n\n var timing = (currentCallOptions && currentCallOptions.sequenceQueue === false) ? \"begin\" : \"complete\",\n callbackOriginal = nextCallOptions && nextCallOptions[timing],\n options = {};\n\n options[timing] = function() {\n var nextCallElements = nextCall.e || nextCall.elements;\n var elements = nextCallElements.nodeType ? [ nextCallElements ] : nextCallElements;\n\n callbackOriginal && callbackOriginal.call(elements, elements);\n Velocity(currentCall);\n }\n\n if (nextCall.o) {\n nextCall.o = $.extend({}, nextCallOptions, options);\n } else {\n nextCall.options = $.extend({}, nextCallOptions, options);\n }\n }\n });\n\n sequence.reverse();\n }\n\n Velocity(sequence[0]);\n };\n}((window.jQuery || window.Zepto || window), window, document);\n}));","module.exports = { \"default\": require(\"core-js/library/fn/set-immediate\"), __esModule: true };","var escapeHtmlChar = require('./_escapeHtmlChar'),\n toString = require('./toString');\n\n/** Used to match HTML entities and HTML characters. */\nvar reUnescapedHtml = /[&<>\"']/g,\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\nfunction escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n}\n\nmodule.exports = escape;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nexports.showGroupInviteDialog = showGroupInviteDialog;\nexports.showGroupAddRoomDialog = showGroupAddRoomDialog;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _ = require('./');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _MultiInviter = require('./utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _GroupStore = require('./stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction showGroupInviteDialog(groupId) {\n return new _promise2.default(function (resolve, reject) {\n var description = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Who would you like to add to this community?\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'warning' },\n (0, _languageHandler._t)(\"Warning: any person you add to a community will be publicly \" + \"visible to anyone who knows the community ID\")\n )\n );\n\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Group Invite', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)(\"Invite new community members\"),\n description: description,\n placeholder: (0, _languageHandler._t)(\"Name or matrix ID\"),\n button: (0, _languageHandler._t)(\"Invite to Community\"),\n validAddressTypes: ['mx-user-id'],\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n\n _onGroupInviteFinished(groupId, addrs).then(resolve, reject);\n }\n });\n });\n} /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction showGroupAddRoomDialog(groupId) {\n return new _promise2.default(function (resolve, reject) {\n var addRoomsPublicly = false;\n var onCheckboxClicked = function onCheckboxClicked(e) {\n addRoomsPublicly = e.target.checked;\n };\n var description = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Which rooms would you like to add to this community?\")\n )\n );\n\n var checkboxContainer = _react2.default.createElement(\n 'label',\n { className: 'mx_GroupAddressPicker_checkboxContainer' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: onCheckboxClicked }),\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Show these rooms to non-members on the community page and room list?\")\n )\n );\n\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Rooms to Group', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)(\"Add rooms to the community\"),\n description: description,\n extraNode: checkboxContainer,\n placeholder: (0, _languageHandler._t)(\"Room name or alias\"),\n button: (0, _languageHandler._t)(\"Add to community\"),\n pickerType: 'room',\n validAddressTypes: ['mx-room-id'],\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n\n _onGroupAddRoomFinished(groupId, addrs, addRoomsPublicly).then(resolve, reject);\n }\n });\n });\n}\n\nfunction _onGroupInviteFinished(groupId, addrs) {\n var multiInviter = new _MultiInviter2.default(groupId);\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n return multiInviter.invite(addrTexts).then(function (completionStates) {\n // Show user any errors\n var errorList = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(completionStates)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if (addrs[addr] === \"error\") {\n errorList.push(addr);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (errorList.length > 0) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite the following users to the group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite the following users to %(groupId)s:\", { groupId: groupId }),\n description: errorList.join(\", \")\n });\n }\n }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite users to group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite users to community\"),\n description: (0, _languageHandler._t)(\"Failed to invite users to %(groupId)s\", { groupId: groupId })\n });\n });\n}\n\nfunction _onGroupAddRoomFinished(groupId, addrs, addRoomsPublicly) {\n var matrixClient = _MatrixClientPeg2.default.get();\n var errorList = [];\n return _promise2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addRoomToGroup(groupId, addr.address, addRoomsPublicly).catch(function () {\n errorList.push(addr.address);\n }).then(function () {\n var roomId = addr.address;\n var room = matrixClient.getRoom(roomId);\n // Can the user change related groups?\n if (!room || !room.currentState.mayClientSendStateEvent(\"m.room.related_groups\", matrixClient)) {\n return;\n }\n // Get the related groups\n var relatedGroupsEvent = room.currentState.getStateEvents('m.room.related_groups', '');\n var groups = relatedGroupsEvent ? relatedGroupsEvent.getContent().groups || [] : [];\n\n // Add this group as related\n if (!groups.includes(groupId)) {\n groups.push(groupId);\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, 'm.room.related_groups', { groups: groups }, '');\n }\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following room to the group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following rooms to %(groupId)s:\", { groupId: groupId }),\n description: errorList.join(\", \")\n });\n });\n}\n//# sourceMappingURL=GroupAddressPicker.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _UserAddress = require('../UserAddress');\n\nvar _RoomInvite = require('../RoomInvite');\n\nvar _GroupStore = require('../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Invites multiple addresses to a room or group, handling rate limiting from the server\n */\nvar MultiInviter = function () {\n /**\n * @param {string} targetId The ID of the room or group to invite to\n */\n function MultiInviter(targetId) {\n (0, _classCallCheck3.default)(this, MultiInviter);\n\n if (targetId[0] === '+') {\n this.roomId = null;\n this.groupId = targetId;\n } else {\n this.roomId = targetId;\n this.groupId = null;\n }\n\n this.canceled = false;\n this.addrs = [];\n this.busy = false;\n this.completionStates = {}; // State of each address (invited or error)\n this.errorTexts = {}; // Textual error per address\n this.deferred = null;\n }\n\n /**\n * Invite users to this room. This may only be called once per\n * instance of the class.\n *\n * @param {array} addresses Array of addresses to invite\n * @returns {Promise} Resolved when all invitations in the queue are complete\n */\n\n\n (0, _createClass3.default)(MultiInviter, [{\n key: 'invite',\n value: function invite(addrs) {\n var _addrs;\n\n if (this.addrs.length > 0) {\n throw new Error(\"Already inviting/invited\");\n }\n (_addrs = this.addrs).push.apply(_addrs, (0, _toConsumableArray3.default)(addrs));\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.addrs), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if ((0, _UserAddress.getAddressType)(addr) === null) {\n this.completionStates[addr] = 'error';\n this.errorTexts[addr] = 'Unrecognised address';\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.deferred = _bluebird2.default.defer();\n this._inviteMore(0);\n\n return this.deferred.promise;\n }\n\n /**\n * Stops inviting. Causes promises returned by invite() to be rejected.\n */\n\n }, {\n key: 'cancel',\n value: function cancel() {\n if (!this.busy) return;\n\n this._canceled = true;\n this.deferred.reject(new Error('canceled'));\n }\n }, {\n key: 'getCompletionState',\n value: function getCompletionState(addr) {\n return this.completionStates[addr];\n }\n }, {\n key: 'getErrorText',\n value: function getErrorText(addr) {\n return this.errorTexts[addr];\n }\n }, {\n key: '_inviteMore',\n value: function _inviteMore(nextIndex) {\n var _this = this;\n\n if (this._canceled) {\n return;\n }\n\n if (nextIndex == this.addrs.length) {\n this.busy = false;\n this.deferred.resolve(this.completionStates);\n return;\n }\n\n var addr = this.addrs[nextIndex];\n\n // don't try to invite it if it's an invalid address\n // (it will already be marked as an error though,\n // so no need to do so again)\n if ((0, _UserAddress.getAddressType)(addr) === null) {\n this._inviteMore(nextIndex + 1);\n return;\n }\n\n // don't re-invite (there's no way in the UI to do this, but\n // for sanity's sake)\n if (this.completionStates[addr] == 'invited') {\n this._inviteMore(nextIndex + 1);\n return;\n }\n\n var doInvite = void 0;\n if (this.groupId !== null) {\n doInvite = _GroupStore2.default.inviteUserToGroup(this.groupId, addr);\n } else {\n doInvite = (0, _RoomInvite.inviteToRoom)(this.roomId, addr);\n }\n\n doInvite.then(function () {\n if (_this._canceled) {\n return;\n }\n\n _this.completionStates[addr] = 'invited';\n\n _this._inviteMore(nextIndex + 1);\n }, function (err) {\n if (_this._canceled) {\n return;\n }\n\n var errorText = void 0;\n var fatal = false;\n if (err.errcode == 'M_FORBIDDEN') {\n fatal = true;\n errorText = 'You do not have permission to invite people to this room.';\n } else if (err.errcode == 'M_LIMIT_EXCEEDED') {\n // we're being throttled so wait a bit & try again\n setTimeout(function () {\n _this._inviteMore(nextIndex);\n }, 5000);\n return;\n } else {\n errorText = 'Unknown server error';\n }\n _this.completionStates[addr] = 'error';\n _this.errorTexts[addr] = errorText;\n _this.busy = !fatal;\n\n if (!fatal) {\n _this._inviteMore(nextIndex + 1);\n }\n });\n }\n }]);\n return MultiInviter;\n}(); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = MultiInviter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MultiInviter.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.inviteToRoom = inviteToRoom;\nexports.inviteMultipleToRoom = inviteMultipleToRoom;\nexports.showStartChatInviteDialog = showStartChatInviteDialog;\nexports.showRoomInviteDialog = showRoomInviteDialog;\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MultiInviter = require('./utils/MultiInviter');\n\nvar _MultiInviter2 = _interopRequireDefault(_MultiInviter);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _UserAddress = require('./UserAddress');\n\nvar _createRoom = require('./createRoom');\n\nvar _createRoom2 = _interopRequireDefault(_createRoom);\n\nvar _ = require('./');\n\nvar _2 = _interopRequireDefault(_);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('./utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction inviteToRoom(roomId, addr) {\n var addrType = (0, _UserAddress.getAddressType)(addr);\n\n if (addrType == 'email') {\n return _MatrixClientPeg2.default.get().inviteByEmail(roomId, addr);\n } else if (addrType == 'mx-user-id') {\n return _MatrixClientPeg2.default.get().invite(roomId, addr);\n } else {\n throw new Error('Unsupported address');\n }\n}\n\n/**\n * Invites multiple addresses to a room\n * Simpler interface to utils/MultiInviter but with\n * no option to cancel.\n *\n * @param {string} roomId The ID of the room to invite to\n * @param {string[]} addrs Array of strings of addresses to invite. May be matrix IDs or 3pids.\n * @returns {Promise} Promise\n */\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction inviteMultipleToRoom(roomId, addrs) {\n var inviter = new _MultiInviter2.default(roomId);\n return inviter.invite(addrs);\n}\n\nfunction showStartChatInviteDialog() {\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Start a chat', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Start a chat'),\n description: (0, _languageHandler._t)(\"Who would you like to communicate with?\"),\n placeholder: (0, _languageHandler._t)(\"Email, name or matrix ID\"),\n validAddressTypes: ['mx-user-id', 'email'],\n button: (0, _languageHandler._t)(\"Start Chat\"),\n onFinished: _onStartChatFinished\n });\n}\n\nfunction showRoomInviteDialog(roomId) {\n var AddressPickerDialog = _2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Chat Invite', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Invite new room members'),\n description: (0, _languageHandler._t)('Who would you like to add to this room?'),\n button: (0, _languageHandler._t)('Send Invites'),\n placeholder: (0, _languageHandler._t)(\"Email, name or matrix ID\"),\n onFinished: function onFinished(shouldInvite, addrs) {\n _onRoomInviteFinished(roomId, shouldInvite, addrs);\n }\n });\n}\n\nfunction _onStartChatFinished(shouldInvite, addrs) {\n if (!shouldInvite) return;\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n if (_isDmChat(addrTexts)) {\n var rooms = _getDirectMessageRooms(addrTexts[0]);\n if (rooms.length > 0) {\n // A Direct Message room already exists for this user, so select a\n // room from a list that is similar to the one in MemberInfo panel\n var ChatCreateOrReuseDialog = _2.default.getComponent(\"views.dialogs.ChatCreateOrReuseDialog\");\n var close = _Modal2.default.createTrackedDialog('Create or Reuse', '', ChatCreateOrReuseDialog, {\n userId: addrTexts[0],\n onNewDMClick: function onNewDMClick() {\n _dispatcher2.default.dispatch({\n action: 'start_chat',\n user_id: addrTexts[0]\n });\n close(true);\n },\n onExistingRoomSelected: function onExistingRoomSelected(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n close(true);\n }\n }).close;\n } else {\n // Start a new DM chat\n (0, _createRoom2.default)({ dmUserId: addrTexts[0] }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite user\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n }\n } else if (addrTexts.length === 1) {\n // Start a new DM chat\n (0, _createRoom2.default)({ dmUserId: addrTexts[0] }).catch(function (err) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite user\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n } else {\n // Start multi user chat\n var room = void 0;\n (0, _createRoom2.default)().then(function (roomId) {\n room = _MatrixClientPeg2.default.get().getRoom(roomId);\n return inviteMultipleToRoom(roomId, addrTexts);\n }).then(function (addrs) {\n return _showAnyInviteErrors(addrs, room);\n }).catch(function (err) {\n console.error(err.stack);\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n }\n}\n\nfunction _onRoomInviteFinished(roomId, shouldInvite, addrs) {\n if (!shouldInvite) return;\n\n var addrTexts = addrs.map(function (addr) {\n return addr.address;\n });\n\n // Invite new users to a room\n inviteMultipleToRoom(roomId, addrTexts).then(function (addrs) {\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n return _showAnyInviteErrors(addrs, room);\n }).catch(function (err) {\n console.error(err.stack);\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n}\n\nfunction _isDmChat(addrTexts) {\n if (addrTexts.length === 1 && (0, _UserAddress.getAddressType)(addrTexts[0]) === 'mx-user-id') {\n return true;\n } else {\n return false;\n }\n}\n\nfunction _showAnyInviteErrors(addrs, room) {\n // Show user any errors\n var errorList = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(addrs)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var addr = _step.value;\n\n if (addrs[addr] === \"error\") {\n errorList.push(addr);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (errorList.length > 0) {\n var ErrorDialog = _2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to invite the following users to the room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to invite the following users to the %(roomName)s room:\", { roomName: room.name }),\n description: errorList.join(\", \")\n });\n }\n return addrs;\n}\n\nfunction _getDirectMessageRooms(addr) {\n var dmRoomMap = new _DMRoomMap2.default(_MatrixClientPeg2.default.get());\n var dmRooms = dmRoomMap.getDMRoomsForUserId(addr);\n var rooms = dmRooms.filter(function (dmRoom) {\n var room = _MatrixClientPeg2.default.get().getRoom(dmRoom);\n if (room) {\n return room.getMyMembership() === 'join';\n }\n });\n return rooms;\n}\n//# sourceMappingURL=RoomInvite.js.map","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FallbackAuthEntry = exports.MsisdnAuthEntry = exports.EmailIdentityAuthEntry = exports.TermsAuthEntry = exports.RecaptchaAuthEntry = exports.PasswordAuthEntry = undefined;\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.getEntryComponentForLoginType = getEntryComponentForLoginType;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes2 = require('prop-types');\n\nvar _propTypes3 = _interopRequireDefault(_propTypes2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* This file contains a collection of components which are used by the\n * InteractiveAuth to prompt the user to enter the information needed\n * for an auth stage. (The intention is that they could also be used for other\n * components, such as the registration flow).\n *\n * Call getEntryComponentForLoginType() to get a component suitable for a\n * particular login type. Each component requires the same properties:\n *\n * matrixClient: A matrix client. May be a different one to the one\n * currently being used generally (eg. to register with\n * one HS whilst beign a guest on another).\n * loginType: the login type of the auth stage being attempted\n * authSessionId: session id from the server\n * clientSecret: The client secret in use for ID server auth sessions\n * stageParams: params from the server for the stage being attempted\n * errorText: error message from a previous attempt to authenticate\n * submitAuthDict: a function which will be called with the new auth dict\n * busy: a boolean indicating whether the auth logic is doing something\n * the user needs to wait for.\n * inputs: Object of inputs provided by the user, as in js-sdk\n * interactive-auth\n * stageState: Stage-specific object used for communicating state information\n * to the UI from the state-specific auth logic.\n * Defined keys for stages are:\n * m.login.email.identity:\n * * emailSid: string representing the sid of the active\n * verification session from the ID server, or\n * null if no session is active.\n * fail: a function which should be called with an error object if an\n * error occurred during the auth stage. This will cause the auth\n * session to be failed and the process to go back to the start.\n * setEmailSid: m.login.email.identity only: a function to be called with the\n * email sid after a token is requested.\n * makeRegistrationUrl A function that makes a registration URL\n *\n * Each component may also provide the following functions (beyond the standard React ones):\n * focus: set the input focus appropriately in the form.\n */\n\nvar PasswordAuthEntry = exports.PasswordAuthEntry = _react2.default.createClass({\n displayName: 'PasswordAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.password\"\n },\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n errorText: _propTypes3.default.string,\n // is the auth logic currently waiting for something to\n // happen?\n busy: _propTypes3.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n passwordValid: false\n };\n },\n\n focus: function focus() {\n if (this.refs.passwordField) {\n this.refs.passwordField.focus();\n }\n },\n\n _onSubmit: function _onSubmit(e) {\n e.preventDefault();\n if (this.props.busy) return;\n\n this.props.submitAuthDict({\n type: PasswordAuthEntry.LOGIN_TYPE,\n user: this.props.matrixClient.credentials.userId,\n password: this.refs.passwordField.value\n });\n },\n\n _onPasswordFieldChange: function _onPasswordFieldChange(ev) {\n // enable the submit button iff the password is non-empty\n this.setState({\n passwordValid: Boolean(this.refs.passwordField.value)\n });\n },\n\n render: function render() {\n var passwordBoxClass = null;\n\n if (this.props.errorText) {\n passwordBoxClass = 'error';\n }\n\n var submitButtonOrSpinner = void 0;\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n submitButtonOrSpinner = _react2.default.createElement(Loader, null);\n } else {\n submitButtonOrSpinner = _react2.default.createElement('input', { type: 'submit',\n className: 'mx_Dialog_primary',\n disabled: !this.state.passwordValid\n });\n }\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password.\")\n ),\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onSubmit },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passwordField' },\n (0, _languageHandler._t)(\"Password:\")\n ),\n _react2.default.createElement('input', {\n name: 'passwordField',\n ref: 'passwordField',\n className: passwordBoxClass,\n onChange: this._onPasswordFieldChange,\n type: 'password'\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_button_row' },\n submitButtonOrSpinner\n )\n ),\n errorSection\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RecaptchaAuthEntry = exports.RecaptchaAuthEntry = _react2.default.createClass({\n displayName: 'RecaptchaAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.recaptcha\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes3.default.func.isRequired,\n stageParams: _propTypes3.default.object.isRequired,\n errorText: _propTypes3.default.string,\n busy: _propTypes3.default.bool\n },\n\n _onCaptchaResponse: function _onCaptchaResponse(response) {\n this.props.submitAuthDict({\n type: RecaptchaAuthEntry.LOGIN_TYPE,\n response: response\n });\n },\n\n render: function render() {\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var CaptchaForm = _index2.default.getComponent(\"views.login.CaptchaForm\");\n var sitePublicKey = this.props.stageParams.public_key;\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(CaptchaForm, { sitePublicKey: sitePublicKey,\n onCaptchaResponse: this._onCaptchaResponse\n }),\n errorSection\n );\n }\n});\n\nvar TermsAuthEntry = exports.TermsAuthEntry = _react2.default.createClass({\n displayName: 'TermsAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.terms\"\n },\n\n propTypes: {\n submitAuthDict: _propTypes3.default.func.isRequired,\n stageParams: _propTypes3.default.object.isRequired,\n errorText: _propTypes3.default.string,\n busy: _propTypes3.default.bool\n },\n\n componentWillMount: function componentWillMount() {\n // example stageParams:\n //\n // {\n // \"policies\": {\n // \"privacy_policy\": {\n // \"version\": \"1.0\",\n // \"en\": {\n // \"name\": \"Privacy Policy\",\n // \"url\": \"https://example.org/privacy-1.0-en.html\",\n // },\n // \"fr\": {\n // \"name\": \"Politique de confidentialité\",\n // \"url\": \"https://example.org/privacy-1.0-fr.html\",\n // },\n // },\n // \"other_policy\": { ... },\n // }\n // }\n\n var allPolicies = this.props.stageParams.policies || {};\n var prefLang = _SettingsStore2.default.getValue(\"language\");\n var initToggles = {};\n var pickedPolicies = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(allPolicies)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var policyId = _step.value;\n\n var policy = allPolicies[policyId];\n\n // Pick a language based on the user's language, falling back to english,\n // and finally to the first language available. If there's still no policy\n // available then the homeserver isn't respecting the spec.\n var langPolicy = policy[prefLang];\n if (!langPolicy) langPolicy = policy[\"en\"];\n if (!langPolicy) {\n // last resort\n var firstLang = (0, _keys2.default)(policy).find(function (e) {\n return e !== \"version\";\n });\n langPolicy = policy[firstLang];\n }\n if (!langPolicy) throw new Error(\"Failed to find a policy to show the user\");\n\n initToggles[policyId] = false;\n\n langPolicy.id = policyId;\n pickedPolicies.push(langPolicy);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n \"toggledPolicies\": initToggles,\n \"policies\": pickedPolicies\n });\n },\n\n _trySubmit: function _trySubmit(policyId) {\n var newToggles = {};\n var allChecked = true;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(this.state.policies), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var policy = _step2.value;\n\n var checked = this.state.toggledPolicies[policy.id];\n if (policy.id === policyId) checked = !checked;\n\n newToggles[policy.id] = checked;\n allChecked = allChecked && checked;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n this.setState({ \"toggledPolicies\": newToggles });\n if (allChecked) this.props.submitAuthDict({ type: TermsAuthEntry.LOGIN_TYPE });\n },\n\n render: function render() {\n var _this = this;\n\n if (this.props.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n }\n\n var checkboxes = [];\n var allChecked = true;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n var _loop = function _loop() {\n var policy = _step3.value;\n\n var checked = _this.state.toggledPolicies[policy.id];\n allChecked = allChecked && checked;\n\n checkboxes.push(_react2.default.createElement(\n 'label',\n { key: \"policy_checkbox_\" + policy.id },\n _react2.default.createElement('input', { type: 'checkbox', onClick: function onClick() {\n return _this._trySubmit(policy.id);\n }, checked: checked }),\n _react2.default.createElement(\n 'a',\n { href: policy.url, target: '_blank', rel: 'noopener' },\n policy.name\n )\n ));\n };\n\n for (var _iterator3 = (0, _getIterator3.default)(this.state.policies), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please review and accept the policies of this homeserver:\")\n ),\n checkboxes,\n errorSection\n );\n }\n});\n\nvar EmailIdentityAuthEntry = exports.EmailIdentityAuthEntry = _react2.default.createClass({\n displayName: 'EmailIdentityAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.email.identity\"\n },\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n authSessionId: _propTypes3.default.string.isRequired,\n clientSecret: _propTypes3.default.string.isRequired,\n inputs: _propTypes3.default.object.isRequired,\n stageState: _propTypes3.default.object.isRequired,\n fail: _propTypes3.default.func.isRequired,\n setEmailSid: _propTypes3.default.func.isRequired,\n makeRegistrationUrl: _propTypes3.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n requestingToken: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n if (this.props.stageState.emailSid === null) {\n this.setState({ requestingToken: true });\n this._requestEmailToken().catch(function (e) {\n _this2.props.fail(e);\n }).finally(function () {\n _this2.setState({ requestingToken: false });\n }).done();\n }\n },\n\n /*\n * Requests a verification token by email.\n */\n _requestEmailToken: function _requestEmailToken() {\n var _this3 = this;\n\n var nextLink = this.props.makeRegistrationUrl({\n client_secret: this.props.clientSecret,\n hs_url: this.props.matrixClient.getHomeserverUrl(),\n is_url: this.props.matrixClient.getIdentityServerUrl(),\n session_id: this.props.authSessionId\n });\n\n return this.props.matrixClient.requestRegisterEmailToken(this.props.inputs.emailAddress, this.props.clientSecret, 1, // TODO: Multiple send attempts?\n nextLink).then(function (result) {\n _this3.props.setEmailSid(result.sid);\n });\n },\n\n render: function render() {\n var _this4 = this;\n\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"An email has been sent to %(emailAddress)s\", { emailAddress: function emailAddress(sub) {\n return _react2.default.createElement(\n 'i',\n null,\n _this4.props.inputs.emailAddress\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please check your email to continue registration.\")\n )\n );\n }\n }\n});\n\nvar MsisdnAuthEntry = exports.MsisdnAuthEntry = _react2.default.createClass({\n displayName: 'MsisdnAuthEntry',\n\n statics: {\n LOGIN_TYPE: \"m.login.msisdn\"\n },\n\n propTypes: (0, _defineProperty3.default)({\n inputs: _propTypes3.default.shape({\n phoneCountry: _propTypes3.default.string,\n phoneNumber: _propTypes3.default.string\n }),\n fail: _propTypes3.default.func,\n clientSecret: _propTypes3.default.func,\n submitAuthDict: _propTypes3.default.func.isRequired,\n matrixClient: _propTypes3.default.object\n }, 'submitAuthDict', _propTypes3.default.func),\n\n getInitialState: function getInitialState() {\n return {\n token: '',\n requestingToken: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this5 = this;\n\n this._sid = null;\n this._msisdn = null;\n this._tokenBox = null;\n\n this.setState({ requestingToken: true });\n this._requestMsisdnToken().catch(function (e) {\n _this5.props.fail(e);\n }).finally(function () {\n _this5.setState({ requestingToken: false });\n }).done();\n },\n\n /*\n * Requests a verification token by SMS.\n */\n _requestMsisdnToken: function _requestMsisdnToken() {\n var _this6 = this;\n\n return this.props.matrixClient.requestRegisterMsisdnToken(this.props.inputs.phoneCountry, this.props.inputs.phoneNumber, this.props.clientSecret, 1 // TODO: Multiple send attempts?\n ).then(function (result) {\n _this6._sid = result.sid;\n _this6._msisdn = result.msisdn;\n });\n },\n\n _onTokenChange: function _onTokenChange(e) {\n this.setState({\n token: e.target.value\n });\n },\n\n _onFormSubmit: function _onFormSubmit(e) {\n var _this7 = this;\n\n e.preventDefault();\n if (this.state.token == '') return;\n\n this.setState({\n errorText: null\n });\n\n this.props.matrixClient.submitMsisdnToken(this._sid, this.props.clientSecret, this.state.token).then(function (result) {\n if (result.success) {\n var idServerParsedUrl = _url2.default.parse(_this7.props.matrixClient.getIdentityServerUrl());\n _this7.props.submitAuthDict({\n type: MsisdnAuthEntry.LOGIN_TYPE,\n threepid_creds: {\n sid: _this7._sid,\n client_secret: _this7.props.clientSecret,\n id_server: idServerParsedUrl.host\n }\n });\n } else {\n _this7.setState({\n errorText: (0, _languageHandler._t)(\"Token incorrect\")\n });\n }\n }).catch(function (e) {\n _this7.props.fail(e);\n console.log(\"Failed to submit msisdn token\");\n }).done();\n },\n\n render: function render() {\n if (this.state.requestingToken) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n var enableSubmit = Boolean(this.state.token);\n var submitClasses = (0, _classnames2.default)({\n mx_InteractiveAuthEntryComponents_msisdnSubmit: true,\n mx_UserSettings_button: true // XXX button classes\n });\n var errorSection = void 0;\n if (this.state.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.state.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"A text message has been sent to %(msisdn)s\", { msisdn: _react2.default.createElement(\n 'i',\n null,\n this._msisdn\n ) })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Please enter the code it contains:\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_InteractiveAuthEntryComponents_msisdnWrapper' },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement('input', { type: 'text',\n className: 'mx_InteractiveAuthEntryComponents_msisdnEntry',\n value: this.state.token,\n onChange: this._onTokenChange,\n 'aria-label': (0, _languageHandler._t)(\"Code\")\n }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'submit', value: (0, _languageHandler._t)(\"Submit\"),\n className: submitClasses,\n disabled: !enableSubmit\n })\n ),\n errorSection\n )\n );\n }\n }\n});\n\nvar FallbackAuthEntry = exports.FallbackAuthEntry = _react2.default.createClass({\n displayName: 'FallbackAuthEntry',\n\n propTypes: {\n matrixClient: _propTypes3.default.object.isRequired,\n authSessionId: _propTypes3.default.string.isRequired,\n loginType: _propTypes3.default.string.isRequired,\n submitAuthDict: _propTypes3.default.func.isRequired,\n errorText: _propTypes3.default.string\n },\n\n componentWillMount: function componentWillMount() {\n // we have to make the user click a button, as browsers will block\n // the popup if we open it immediately.\n this._popupWindow = null;\n window.addEventListener(\"message\", this._onReceiveMessage);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n window.removeEventListener(\"message\", this._onReceiveMessage);\n if (this._popupWindow) {\n this._popupWindow.close();\n }\n },\n\n focus: function focus() {\n if (this.refs.fallbackButton) {\n this.refs.fallbackButton.focus();\n }\n },\n\n _onShowFallbackClick: function _onShowFallbackClick() {\n var url = this.props.matrixClient.getFallbackAuthUrl(this.props.loginType, this.props.authSessionId);\n this._popupWindow = window.open(url);\n },\n\n _onReceiveMessage: function _onReceiveMessage(event) {\n if (event.data === \"authDone\" && event.origin === this.props.matrixClient.getHomeserverUrl()) {\n this.props.submitAuthDict({});\n }\n },\n\n render: function render() {\n var errorSection = void 0;\n if (this.props.errorText) {\n errorSection = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.props.errorText\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'a',\n { ref: 'fallbackButton', onClick: this._onShowFallbackClick },\n (0, _languageHandler._t)(\"Start authentication\")\n ),\n errorSection\n );\n }\n});\n\nvar AuthEntryComponents = [PasswordAuthEntry, RecaptchaAuthEntry, EmailIdentityAuthEntry, MsisdnAuthEntry, TermsAuthEntry];\n\nfunction getEntryComponentForLoginType(loginType) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(AuthEntryComponents), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var c = _step4.value;\n\n if (c.LOGIN_TYPE == loginType) {\n return c;\n }\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return FallbackAuthEntry;\n}\n//# sourceMappingURL=InteractiveAuthEntryComponents.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _memoizeOne2.default)(function (displaced) {\n return displaced.reduce(function (map, displacement) {\n map[displacement.draggableId] = displacement;\n return map;\n }, {});\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (frame) {\n var isWithinVertical = (0, _isWithin2.default)(frame.top, frame.bottom);\n var isWithinHorizontal = (0, _isWithin2.default)(frame.left, frame.right);\n\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n\n return isTargetBiggerOnOneAxis;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _spacing = require('../spacing');\n\nvar _isPartiallyVisible = require('../visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newCenter = _ref.newCenter,\n viewport = _ref.viewport;\n\n var diff = (0, _position.subtract)(newCenter, draggable.page.withMargin.center);\n var shifted = (0, _spacing.offset)(draggable.page.withMargin, diff);\n\n return (0, _isPartiallyVisible2.default)({\n target: shifted,\n destination: destination,\n viewport: viewport\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.css = exports.physics = undefined;\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar physics = exports.physics = function () {\n var base = {\n stiffness: 1000,\n damping: 60,\n\n precision: 0.99\n };\n\n var standard = (0, _extends3.default)({}, base);\n\n var fast = (0, _extends3.default)({}, base, {\n stiffness: base.stiffness * 2\n });\n\n return { standard: standard, fast: fast };\n}();\n\nvar css = exports.css = {\n outOfTheWay: 'transform 0.2s cubic-bezier(0.2, 0, 0, 1)'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.lift = exports.dropAnimationFinished = exports.cancel = exports.drop = exports.completeDrop = exports.prepare = exports.clean = exports.crossAxisMoveBackward = exports.crossAxisMoveForward = exports.moveForward = exports.moveBackward = exports.moveByWindowScroll = exports.move = exports.updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionScroll = exports.publishDroppableDimensions = exports.publishDraggableDimensions = exports.completeLift = exports.requestDimensions = undefined;\n\nvar _noImpact = require('./no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _getNewHomeClientCenter = require('./get-new-home-client-center');\n\nvar _getNewHomeClientCenter2 = _interopRequireDefault(_getNewHomeClientCenter);\n\nvar _position = require('./position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar getScrollDiff = function getScrollDiff(_ref) {\n var initial = _ref.initial,\n current = _ref.current,\n droppable = _ref.droppable;\n\n var windowScrollDiff = (0, _position.subtract)(initial.windowScroll, current.windowScroll);\n\n var droppableScrollDiff = droppable ? droppable.viewport.frameScroll.diff.displacement : origin;\n\n return (0, _position.add)(windowScrollDiff, droppableScrollDiff);\n};\n\nvar requestDimensions = exports.requestDimensions = function requestDimensions(id) {\n return {\n type: 'REQUEST_DIMENSIONS',\n payload: id\n };\n};\n\nvar completeLift = exports.completeLift = function completeLift(id, client, windowScroll, isScrollAllowed) {\n return {\n type: 'COMPLETE_LIFT',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll,\n isScrollAllowed: isScrollAllowed\n }\n };\n};\n\nvar publishDraggableDimensions = exports.publishDraggableDimensions = function publishDraggableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DRAGGABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar publishDroppableDimensions = exports.publishDroppableDimensions = function publishDroppableDimensions(dimensions) {\n return {\n type: 'PUBLISH_DROPPABLE_DIMENSIONS',\n payload: dimensions\n };\n};\n\nvar updateDroppableDimensionScroll = exports.updateDroppableDimensionScroll = function updateDroppableDimensionScroll(id, offset) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_SCROLL',\n payload: {\n id: id,\n offset: offset\n }\n };\n};\n\nvar updateDroppableDimensionIsEnabled = exports.updateDroppableDimensionIsEnabled = function updateDroppableDimensionIsEnabled(id, isEnabled) {\n return {\n type: 'UPDATE_DROPPABLE_DIMENSION_IS_ENABLED',\n payload: {\n id: id,\n isEnabled: isEnabled\n }\n };\n};\n\nvar move = exports.move = function move(id, client, windowScroll) {\n return {\n type: 'MOVE',\n payload: {\n id: id,\n client: client,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveByWindowScroll = exports.moveByWindowScroll = function moveByWindowScroll(id, windowScroll) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: {\n id: id,\n windowScroll: windowScroll\n }\n };\n};\n\nvar moveBackward = exports.moveBackward = function moveBackward(id) {\n return {\n type: 'MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar moveForward = exports.moveForward = function moveForward(id) {\n return {\n type: 'MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveForward = exports.crossAxisMoveForward = function crossAxisMoveForward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_FORWARD',\n payload: id\n };\n};\n\nvar crossAxisMoveBackward = exports.crossAxisMoveBackward = function crossAxisMoveBackward(id) {\n return {\n type: 'CROSS_AXIS_MOVE_BACKWARD',\n payload: id\n };\n};\n\nvar clean = exports.clean = function clean() {\n return {\n type: 'CLEAN',\n payload: null\n };\n};\n\nvar prepare = exports.prepare = function prepare() {\n return {\n type: 'PREPARE',\n payload: null\n };\n};\n\nvar animateDrop = function animateDrop(_ref2) {\n var trigger = _ref2.trigger,\n newHomeOffset = _ref2.newHomeOffset,\n impact = _ref2.impact,\n result = _ref2.result;\n return {\n type: 'DROP_ANIMATE',\n payload: {\n trigger: trigger,\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }\n };\n};\n\nvar completeDrop = exports.completeDrop = function completeDrop(result) {\n return {\n type: 'DROP_COMPLETE',\n payload: result\n };\n};\n\nvar drop = exports.drop = function drop() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase === 'PREPARING' || state.phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n dispatch(clean());\n return;\n }\n\n if (state.phase !== 'DRAGGING') {\n console.error('not able to drop in phase: \\'' + state.phase + '\\'');\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('not able to drop when there is invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag = state.drag,\n impact = _state$drag.impact,\n initial = _state$drag.initial,\n current = _state$drag.current;\n\n var descriptor = initial.descriptor;\n var draggable = state.dimension.draggable[initial.descriptor.id];\n var home = state.dimension.droppable[draggable.descriptor.droppableId];\n var destination = impact.destination ? state.dimension.droppable[impact.destination.droppableId] : null;\n\n var source = {\n droppableId: descriptor.droppableId,\n index: descriptor.index\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n destination: impact.destination\n };\n\n var newCenter = (0, _getNewHomeClientCenter2.default)({\n movement: impact.movement,\n draggable: draggable,\n draggables: state.dimension.draggable,\n destination: destination\n });\n\n var clientOffset = (0, _position.subtract)(newCenter, draggable.client.withMargin.center);\n var scrollDiff = getScrollDiff({\n initial: initial,\n current: current,\n droppable: destination || home\n });\n var newHomeOffset = (0, _position.add)(clientOffset, scrollDiff);\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, newHomeOffset);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n dispatch(animateDrop({\n trigger: 'DROP',\n newHomeOffset: newHomeOffset,\n impact: impact,\n result: result\n }));\n };\n};\n\nvar cancel = exports.cancel = function cancel() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DRAGGING') {\n dispatch(clean());\n return;\n }\n\n if (!state.drag) {\n console.error('invalid drag state', state);\n dispatch(clean());\n return;\n }\n\n var _state$drag2 = state.drag,\n initial = _state$drag2.initial,\n current = _state$drag2.current;\n\n var descriptor = initial.descriptor;\n var home = state.dimension.droppable[descriptor.droppableId];\n\n var source = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var result = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source,\n\n destination: null\n };\n\n var isAnimationRequired = !(0, _position.isEqual)(current.client.offset, origin);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop(result));\n return;\n }\n\n var scrollDiff = getScrollDiff({ initial: initial, current: current, droppable: home });\n\n dispatch(animateDrop({\n trigger: 'CANCEL',\n newHomeOffset: scrollDiff,\n impact: _noImpact2.default,\n result: result\n }));\n };\n};\n\nvar dropAnimationFinished = exports.dropAnimationFinished = function dropAnimationFinished() {\n return function (dispatch, getState) {\n var state = getState();\n\n if (state.phase !== 'DROP_ANIMATING') {\n console.error('cannot end drop that is no longer animating', state);\n dispatch(clean());\n return;\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot end drop that has no pending state', state);\n dispatch(clean());\n return;\n }\n\n dispatch(completeDrop(state.drop.pending.result));\n };\n};\n\nvar lift = exports.lift = function lift(id, client, windowScroll, isScrollAllowed) {\n return function (dispatch, getState) {\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n if (!initial.drop || !initial.drop.pending) {\n console.error('cannot flush drop animation if there is no pending');\n dispatch(clean());\n } else {\n dispatch(completeDrop(initial.drop.pending.result));\n }\n }\n\n dispatch(prepare());\n\n setTimeout(function () {\n var state = getState();\n\n if (state.phase !== 'PREPARING') {\n return;\n }\n\n dispatch(requestDimensions(id));\n\n setTimeout(function () {\n var newState = getState();\n\n if (newState.phase !== 'COLLECTING_INITIAL_DIMENSIONS') {\n return;\n }\n\n dispatch(completeLift(id, client, windowScroll, isScrollAllowed));\n });\n });\n };\n};","\n\nexport default (function (fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return frameId;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(undefined, lastArgs);\n });\n\n return frameId;\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n var resultFn = wrapperFn;\n\n return resultFn;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _placeholder = require('./placeholder');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_placeholder).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = {\n noWobble: { stiffness: 170, damping: 26 }, // the default, if nothing provided\n gentle: { stiffness: 120, damping: 14 },\n wobbly: { stiffness: 180, damping: 12 },\n stiff: { stiffness: 210, damping: 20 }\n};\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _stopEvent = require('./stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar blocked = [keyCodes.enter, keyCodes.tab];\n\nexports.default = function (event) {\n if (blocked.indexOf(event.keyCode) >= 0) {\n (0, _stopEvent2.default)(event);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getArea = require('../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (el) {\n return (0, _getArea2.default)(el.getBoundingClientRect()).center;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/** The types of page which can be shown by the LoggedInView */\nexports.default = {\n HomePage: \"home_page\",\n RoomView: \"room_view\",\n UserSettings: \"user_settings\",\n CreateRoom: \"create_room\",\n RoomDirectory: \"room_directory\",\n UserView: \"user_view\",\n GroupView: \"group_view\",\n MyGroups: \"my_groups\"\n};\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PageTypes.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\nexports.default = {\n getDevices: function getDevices() {\n // Only needed for Electron atm, though should work in modern browsers\n // once permission has been granted to the webapp\n return navigator.mediaDevices.enumerateDevices().then(function (devices) {\n var audiooutput = [];\n var audioinput = [];\n var videoinput = [];\n\n if (devices.some(function (device) {\n return !device.label;\n })) return false;\n\n devices.forEach(function (device) {\n switch (device.kind) {\n case 'audiooutput':\n audiooutput.push(device);break;\n case 'audioinput':\n audioinput.push(device);break;\n case 'videoinput':\n videoinput.push(device);break;\n }\n });\n\n // console.log(\"Loaded WebRTC Devices\", mediaDevices);\n return {\n audiooutput: audiooutput,\n audioinput: audioinput,\n videoinput: videoinput\n };\n }, function (error) {\n console.log('Unable to refresh WebRTC Devices: ', error);\n });\n },\n\n loadDevices: function loadDevices() {\n var audioOutDeviceId = _SettingsStore2.default.getValue(\"webrtc_audiooutput\");\n var audioDeviceId = _SettingsStore2.default.getValue(\"webrtc_audioinput\");\n var videoDeviceId = _SettingsStore2.default.getValue(\"webrtc_videoinput\");\n\n Matrix.setMatrixCallAudioOutput(audioOutDeviceId);\n Matrix.setMatrixCallAudioInput(audioDeviceId);\n Matrix.setMatrixCallVideoInput(videoDeviceId);\n },\n\n setAudioOutput: function setAudioOutput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audiooutput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioOutput(deviceId);\n },\n\n setAudioInput: function setAudioInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_audioinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallAudioInput(deviceId);\n },\n\n setVideoInput: function setVideoInput(deviceId) {\n _SettingsStore2.default.setValue(\"webrtc_videoinput\", null, _SettingsStore.SettingLevel.DEVICE, deviceId);\n Matrix.setMatrixCallVideoInput(deviceId);\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CallMediaHandler.js.map","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStoreGroup\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * FluxStoreGroup allows you to execute a callback on every dispatch after\n * waiting for each of the given stores.\n */\n\nvar FluxStoreGroup = (function () {\n function FluxStoreGroup(stores, callback) {\n var _this = this;\n\n _classCallCheck(this, FluxStoreGroup);\n\n this._dispatcher = _getUniformDispatcher(stores);\n\n // precompute store tokens\n var storeTokens = stores.map(function (store) {\n return store.getDispatchToken();\n });\n\n // register with the dispatcher\n this._dispatchToken = this._dispatcher.register(function (payload) {\n _this._dispatcher.waitFor(storeTokens);\n callback();\n });\n }\n\n FluxStoreGroup.prototype.release = function release() {\n this._dispatcher.unregister(this._dispatchToken);\n };\n\n return FluxStoreGroup;\n})();\n\nfunction _getUniformDispatcher(stores) {\n !(stores && stores.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must provide at least one store to FluxStoreGroup') : invariant(false) : undefined;\n var dispatcher = stores[0].getDispatcher();\n if (process.env.NODE_ENV !== 'production') {\n for (var _iterator = stores, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var store = _ref;\n\n !(store.getDispatcher() === dispatcher) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'All stores in a FluxStoreGroup must use the same dispatcher') : invariant(false) : undefined;\n }\n }\n return dispatcher;\n}\n\nmodule.exports = FluxStoreGroup;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxReduceStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxStore = require('./FluxStore');\n\nvar abstractMethod = require('./abstractMethod');\nvar invariant = require('fbjs/lib/invariant');\n\nvar FluxReduceStore = (function (_FluxStore) {\n _inherits(FluxReduceStore, _FluxStore);\n\n function FluxReduceStore(dispatcher) {\n _classCallCheck(this, FluxReduceStore);\n\n _FluxStore.call(this, dispatcher);\n this._state = this.getInitialState();\n }\n\n /**\n * Getter that exposes the entire state of this store. If your state is not\n * immutable you should override this and not expose _state directly.\n */\n\n FluxReduceStore.prototype.getState = function getState() {\n return this._state;\n };\n\n /**\n * Constructs the initial state for this store. This is called once during\n * construction of the store.\n */\n\n FluxReduceStore.prototype.getInitialState = function getInitialState() {\n return abstractMethod('FluxReduceStore', 'getInitialState');\n };\n\n /**\n * Used to reduce a stream of actions coming from the dispatcher into a\n * single state object\n */\n\n FluxReduceStore.prototype.reduce = function reduce(state, action) {\n return abstractMethod('FluxReduceStore', 'reduce');\n };\n\n /**\n * Checks if two versions of state are the same. You do not need to override\n * this if your state is immutable.\n */\n\n FluxReduceStore.prototype.areEqual = function areEqual(one, two) {\n return one === two;\n };\n\n /**\n * Use reduce and track _state instead of using __onDispatch\n */\n\n FluxReduceStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(action) {\n this.__changed = false;\n\n // reduce the stream of incoming actions to state, update when necessary\n var startingState = this._state;\n var endingState = this.reduce(startingState, action);\n\n // This means your ending state should never be undefined\n !(endingState !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s returned undefined from reduce(...), did you forget to return ' + 'state in the default case? (use null if this was intentional)', this.constructor.name) : invariant(false) : undefined;\n\n if (!this.areEqual(startingState, endingState)) {\n this._state = endingState;\n\n // `__emitChange()` sets `this.__changed` to true and then the actual\n // change will be fired from the emitter at the end of the dispatch, this\n // is required in order to support methods like `hasChanged()`\n this.__emitChange();\n }\n\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n return FluxReduceStore;\n})(FluxStore);\n\nmodule.exports = FluxReduceStore;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar _require = require('fbemitter');\n\nvar EventEmitter = _require.EventEmitter;\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * This class should be extended by the stores in your application, like so:\n *\n * var FluxStore = require('FluxStore');\n * var MyDispatcher = require('MyDispatcher');\n *\n * var _foo;\n *\n * class MyStore extends FluxStore {\n *\n * getFoo() {\n * return _foo;\n * }\n *\n * __onDispatch = function(action) {\n * switch(action.type) {\n *\n * case 'an-action':\n * changeState(action.someData);\n * this.__emitChange();\n * break;\n *\n * case 'another-action':\n * changeStateAnotherWay(action.otherData);\n * this.__emitChange();\n * break;\n *\n * default:\n * // no op\n * }\n * }\n *\n * }\n *\n * module.exports = new MyStore(MyDispatcher);\n */\n\nvar FluxStore = (function () {\n\n /**\n * @public\n * @param {Dispatcher} dispatcher\n */\n\n function FluxStore(dispatcher) {\n var _this = this;\n\n _classCallCheck(this, FluxStore);\n\n this.__className = this.constructor.name;\n\n this.__changed = false;\n this.__changeEvent = 'change';\n this.__dispatcher = dispatcher;\n this.__emitter = new EventEmitter();\n this._dispatchToken = dispatcher.register(function (payload) {\n _this.__invokeOnDispatch(payload);\n });\n }\n\n /**\n * @public\n * @param {function} callback\n * @return {object} EmitterSubscription that can be used with\n * SubscriptionsHandler or directly used to release the subscription.\n */\n\n FluxStore.prototype.addListener = function addListener(callback) {\n return this.__emitter.addListener(this.__changeEvent, callback);\n };\n\n /**\n * @public\n * @return {Dispatcher} The dispatcher that this store is registered with.\n */\n\n FluxStore.prototype.getDispatcher = function getDispatcher() {\n return this.__dispatcher;\n };\n\n /**\n * @public\n * @return {string} A string the dispatcher uses to identify each store's\n * registered callback. This is used with the dispatcher's waitFor method\n * to declaratively depend on other stores updating themselves first.\n */\n\n FluxStore.prototype.getDispatchToken = function getDispatchToken() {\n return this._dispatchToken;\n };\n\n /**\n * @public\n * @return {boolean} Whether the store has changed during the most recent\n * dispatch.\n */\n\n FluxStore.prototype.hasChanged = function hasChanged() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.hasChanged(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n return this.__changed;\n };\n\n /**\n * @protected\n * Emit an event notifying listeners that the state of the store has changed.\n */\n\n FluxStore.prototype.__emitChange = function __emitChange() {\n !this.__dispatcher.isDispatching() ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.__emitChange(): Must be invoked while dispatching.', this.__className) : invariant(false) : undefined;\n this.__changed = true;\n };\n\n /**\n * This method encapsulates all logic for invoking __onDispatch. It should\n * be used for things like catching changes and emitting them after the\n * subclass has handled a payload.\n *\n * @protected\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__invokeOnDispatch = function __invokeOnDispatch(payload) {\n this.__changed = false;\n this.__onDispatch(payload);\n if (this.__changed) {\n this.__emitter.emit(this.__changeEvent);\n }\n };\n\n /**\n * The callback that will be registered with the dispatcher during\n * instantiation. Subclasses must override this method. This callback is the\n * only way the store receives new data.\n *\n * @protected\n * @override\n * @param {object} payload The data dispatched by the dispatcher, describing\n * something that has happened in the real world: the user clicked, the\n * server responded, time passed, etc.\n */\n\n FluxStore.prototype.__onDispatch = function __onDispatch(payload) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s has not overridden FluxStore.__onDispatch(), which is required', this.__className) : invariant(false) : undefined;\n };\n\n return FluxStore;\n})();\n\nmodule.exports = FluxStore;\n\n// private\n\n// protected, available to subclasses","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n * \n * @providesModule EmitterSubscription\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar EventSubscription = require('./EventSubscription');\n\n/**\n * EmitterSubscription represents a subscription with listener and context data.\n */\n\nvar EmitterSubscription = (function (_EventSubscription) {\n _inherits(EmitterSubscription, _EventSubscription);\n\n /**\n * @param {EventSubscriptionVendor} subscriber - The subscriber that controls\n * this subscription\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n function EmitterSubscription(subscriber, listener, context) {\n _classCallCheck(this, EmitterSubscription);\n\n _EventSubscription.call(this, subscriber);\n this.listener = listener;\n this.context = context;\n }\n\n return EmitterSubscription;\n})(EventSubscription);\n\nmodule.exports = EmitterSubscription;","module.exports = { \"default\": require(\"core-js/library/fn/number/max-safe-integer\"), __esModule: true };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _Analytics = require('../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _TagOrderStore = require('../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagOrderActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * move a tag in TagOrderStore to destinationIx.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to move.\n * @param {number} destinationIx the new position of the tag.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nTagOrderActions.moveTag = function (matrixClient, tag, destinationIx) {\n // Only commit tags if the state is ready, i.e. not null\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n if (!tags) {\n return;\n }\n\n tags = tags.filter(function (t) {\n return t !== tag;\n });\n tags = [].concat((0, _toConsumableArray3.default)(tags.slice(0, destinationIx)), [tag], (0, _toConsumableArray3.default)(tags.slice(destinationIx)));\n\n removedTags = removedTags.filter(function (t) {\n return t !== tag;\n });\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.moveTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'commitTagOrdering');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { tags: tags, removedTags: removedTags };\n });\n};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * label a tag as removed in im.vector.web.tag_ordering account data.\n *\n * The reason this is implemented with new state `removedTags` is that\n * we incrementally and initially populate `tags` with groups that\n * have been joined. If we remove a group from `tags`, it will just\n * get added (as it looks like a group we've recently joined).\n *\n * NB: If we ever support adding of tags (which is planned), we should\n * take special care to remove the tag from `removedTags` when we add\n * it.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {string} tag the tag to remove.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\nTagOrderActions.removeTag = function (matrixClient, tag) {\n // Don't change tags, just removedTags\n var tags = _TagOrderStore2.default.getOrderedTags();\n var removedTags = _TagOrderStore2.default.getRemovedTagsAccountData() || [];\n\n if (removedTags.includes(tag)) {\n // Return a thunk that doesn't do anything, we don't even need\n // an asynchronous action here, the tag is already removed.\n return function () {};\n }\n\n removedTags.push(tag);\n\n var storeId = _TagOrderStore2.default.getStoreId();\n\n return (0, _actionCreators.asyncAction)('TagOrderActions.removeTag', function () {\n _Analytics2.default.trackEvent('TagOrderActions', 'removeTag');\n return matrixClient.setAccountData('im.vector.web.tag_ordering', { tags: tags, removedTags: removedTags, _storeId: storeId });\n }, function () {\n // For an optimistic update\n return { removedTags: removedTags };\n });\n};\n\nexports.default = TagOrderActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagOrderActions.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _actionCreators = require('./actionCreators');\n\nvar _RoomListStore = require('../stores/RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _Modal = require('../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Rooms = require('../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomListActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to\n * tag room.\n *\n * @param {MatrixClient} matrixClient the matrix client to set the\n * account data on.\n * @param {Room} room the room to tag.\n * @param {string} oldTag the tag to remove (unless oldTag ==== newTag)\n * @param {string} newTag the tag with which to tag the room.\n * @param {?number} oldIndex the previous position of the room in the\n * list of rooms.\n * @param {?number} newIndex the new position of the room in the list\n * of rooms.\n * @returns {function} an action thunk.\n * @see asyncAction\n */\nRoomListActions.tagRoom = function (matrixClient, room, oldTag, newTag, oldIndex, newIndex) {\n var metaData = null;\n\n // Is the tag ordered manually?\n if (newTag && !newTag.match(/^(m\\.lowpriority|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/)) {\n var lists = _RoomListStore2.default.getRoomLists();\n var newList = [].concat((0, _toConsumableArray3.default)(lists[newTag]));\n\n newList.sort(function (a, b) {\n return a.tags[newTag].order - b.tags[newTag].order;\n });\n\n // If the room was moved \"down\" (increasing index) in the same list we\n // need to use the orders of the tiles with indices shifted by +1\n var offset = newTag === oldTag && oldIndex < newIndex ? 1 : 0;\n\n var indexBefore = offset + newIndex - 1;\n var indexAfter = offset + newIndex;\n\n var prevOrder = indexBefore <= 0 ? 0 : newList[indexBefore].tags[newTag].order;\n var nextOrder = indexAfter >= newList.length ? 1 : newList[indexAfter].tags[newTag].order;\n\n metaData = {\n order: (prevOrder + nextOrder) / 2.0\n };\n }\n\n return (0, _actionCreators.asyncAction)('RoomListActions.tagRoom', function () {\n var promises = [];\n var roomId = room.roomId;\n\n // Evil hack to get DMs behaving\n if (oldTag === undefined && newTag === 'im.vector.fake.direct' || oldTag === 'im.vector.fake.direct' && newTag === undefined) {\n return Rooms.guessAndSetDMRoom(room, newTag === 'im.vector.fake.direct').catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to set direct chat tag \" + err);\n _Modal2.default.createTrackedDialog('Failed to set direct chat tag', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to set direct chat tag'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n }\n\n var hasChangedSubLists = oldTag !== newTag;\n\n // More evilness: We will still be dealing with moving to favourites/low prio,\n // but we avoid ever doing a request with 'im.vector.fake.direct`.\n //\n // if we moved lists, remove the old tag\n if (oldTag && oldTag !== 'im.vector.fake.direct' && hasChangedSubLists) {\n var promiseToDelete = matrixClient.deleteRoomTag(roomId, oldTag).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to remove tag \" + oldTag + \" from room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to remove tag from room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to remove tag %(tagName)s from room', { tagName: oldTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n\n promises.push(promiseToDelete);\n }\n\n // if we moved lists or the ordering changed, add the new tag\n if (newTag && newTag !== 'im.vector.fake.direct' && (hasChangedSubLists || metaData)) {\n // metaData is the body of the PUT to set the tag, so it must\n // at least be an empty object.\n metaData = metaData || {};\n\n var promiseToAdd = matrixClient.setRoomTag(roomId, newTag, metaData).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to add tag \" + newTag + \" to room: \" + err);\n _Modal2.default.createTrackedDialog('Failed to add tag to room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to add tag %(tagName)s to room', { tagName: newTag }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n\n throw err;\n });\n\n promises.push(promiseToAdd);\n }\n\n return _promise2.default.all(promises);\n }, function () {\n // For an optimistic update\n return {\n room: room, oldTag: oldTag, newTag: newTag, metaData: metaData\n };\n });\n};\n\nexports.default = RoomListActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomListActions.js.map","module.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.loadSession = undefined;\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\n/**\n * Called at startup, to attempt to build a logged-in Matrix session. It tries\n * a number of things:\n *\n *\n * 1. if we have a guest access token in the fragment query params, it uses\n * that.\n *\n * 2. if an access token is stored in local storage (from a previous session),\n * it uses that.\n *\n * 3. it attempts to auto-register as a guest user.\n *\n * If any of steps 1-4 are successful, it will call {_doSetLoggedIn}, which in\n * turn will raise on_logged_in and will_start_client events.\n *\n * @param {object} opts\n *\n * @param {object} opts.fragmentQueryParams: string->string map of the\n * query-parameters extracted from the #-fragment of the starting URI.\n *\n * @param {boolean} opts.enableGuest: set to true to enable guest access tokens\n * and auto-guest registrations.\n *\n * @params {string} opts.guestHsUrl: homeserver URL. Only used if enableGuest is\n * true; defines the HS to register against.\n *\n * @params {string} opts.guestIsUrl: homeserver URL. Only used if enableGuest is\n * true; defines the IS to use.\n *\n * @returns {Promise} a promise which resolves when the above process completes.\n * Resolves to `true` if we ended up starting a session, or `false` if we\n * failed.\n */\nvar loadSession = exports.loadSession = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(opts) {\n var enableGuest, guestHsUrl, guestIsUrl, fragmentQueryParams, defaultDeviceDisplayName, success;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n enableGuest = opts.enableGuest || false;\n guestHsUrl = opts.guestHsUrl;\n guestIsUrl = opts.guestIsUrl;\n fragmentQueryParams = opts.fragmentQueryParams || {};\n defaultDeviceDisplayName = opts.defaultDeviceDisplayName;\n\n\n if (!guestHsUrl) {\n console.warn(\"Cannot enable guest access: can't determine HS URL to use\");\n enableGuest = false;\n }\n\n if (!(enableGuest && fragmentQueryParams.guest_user_id && fragmentQueryParams.guest_access_token)) {\n _context.next = 10;\n break;\n }\n\n console.log(\"Using guest access credentials\");\n return _context.abrupt('return', _doSetLoggedIn({\n userId: fragmentQueryParams.guest_user_id,\n accessToken: fragmentQueryParams.guest_access_token,\n homeserverUrl: guestHsUrl,\n identityServerUrl: guestIsUrl,\n guest: true\n }, true).then(function () {\n return true;\n }));\n\n case 10:\n _context.next = 12;\n return (0, _bluebird.resolve)(_restoreFromLocalStorage());\n\n case 12:\n success = _context.sent;\n\n if (!success) {\n _context.next = 15;\n break;\n }\n\n return _context.abrupt('return', true);\n\n case 15:\n if (!enableGuest) {\n _context.next = 17;\n break;\n }\n\n return _context.abrupt('return', _registerAsGuest(guestHsUrl, guestIsUrl, defaultDeviceDisplayName));\n\n case 17:\n return _context.abrupt('return', false);\n\n case 20:\n _context.prev = 20;\n _context.t0 = _context['catch'](0);\n return _context.abrupt('return', _handleLoadSessionFailure(_context.t0));\n\n case 23:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 20]]);\n }));\n\n return function loadSession(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @param {Object} queryParams string->string map of the\n * query-parameters extracted from the real query-string of the starting\n * URI.\n *\n * @param {String} defaultDeviceDisplayName\n *\n * @returns {Promise} promise which resolves to true if we completed the token\n * login, else false\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// returns a promise which resolves to true if a session is found in\n// localstorage\n//\n// N.B. Lifecycle.js should not maintain any further localStorage state, we\n// are moving towards using SessionStore to keep track of state related\n// to the current session (which is typically backed by localStorage).\n//\n// The plan is to gradually move the localStorage access done here into\n// SessionStore to avoid bugs where the view becomes out-of-sync with\n// localStorage (e.g. teamToken, isGuest etc.)\nvar _restoreFromLocalStorage = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var hsUrl, isUrl, accessToken, userId, deviceId, isGuest;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (localStorage) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return', false);\n\n case 2:\n hsUrl = localStorage.getItem(\"mx_hs_url\");\n isUrl = localStorage.getItem(\"mx_is_url\") || 'https://matrix.org';\n accessToken = localStorage.getItem(\"mx_access_token\");\n userId = localStorage.getItem(\"mx_user_id\");\n deviceId = localStorage.getItem(\"mx_device_id\");\n isGuest = void 0;\n\n if (localStorage.getItem(\"mx_is_guest\") !== null) {\n isGuest = localStorage.getItem(\"mx_is_guest\") === \"true\";\n } else {\n // legacy key name\n isGuest = localStorage.getItem(\"matrix-is-guest\") === \"true\";\n }\n\n if (!(accessToken && userId && hsUrl)) {\n _context2.next = 16;\n break;\n }\n\n console.log('Restoring session for ' + userId);\n _context2.next = 13;\n return (0, _bluebird.resolve)(_doSetLoggedIn({\n userId: userId,\n deviceId: deviceId,\n accessToken: accessToken,\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n guest: isGuest\n }, false));\n\n case 13:\n return _context2.abrupt('return', true);\n\n case 16:\n console.log(\"No previous session found.\");\n return _context2.abrupt('return', false);\n\n case 18:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _restoreFromLocalStorage() {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * fires on_logging_in, optionally clears localstorage, persists new credentials\n * to localstorage, starts the new client.\n *\n * @param {MatrixClientCreds} credentials\n * @param {Boolean} clearStorage\n *\n * @returns {Promise} promise which resolves to the new MatrixClient once it has been started\n */\nvar _doSetLoggedIn = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(credentials, clearStorage) {\n var teamPromise;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n credentials.guest = Boolean(credentials.guest);\n\n console.log(\"setLoggedIn: mxid: \" + credentials.userId + \" deviceId: \" + credentials.deviceId + \" guest: \" + credentials.guest + \" hs: \" + credentials.homeserverUrl);\n\n // This is dispatched to indicate that the user is still in the process of logging in\n // because `teamPromise` may take some time to resolve, breaking the assumption that\n // `setLoggedIn` takes an \"instant\" to complete, and dispatch `on_logged_in` a few ms\n // later than MatrixChat might assume.\n //\n // we fire it *synchronously* to make sure it fires before on_logged_in.\n // (dis.dispatch uses `setTimeout`, which does not guarantee ordering.)\n _dispatcher2.default.dispatch({ action: 'on_logging_in' }, true);\n\n if (!clearStorage) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 6;\n return (0, _bluebird.resolve)(_clearStorage());\n\n case 6:\n\n _Analytics2.default.setLoggedIn(credentials.guest, credentials.homeserverUrl, credentials.identityServerUrl);\n\n // Resolves by default\n teamPromise = _bluebird2.default.resolve(null);\n\n\n if (localStorage) {\n try {\n _persistCredentialsToLocalStorage(credentials);\n\n // The user registered as a PWLU (PassWord-Less User), the generated password\n // is cached here such that the user can change it at a later time.\n if (credentials.password) {\n // Update SessionStore\n _dispatcher2.default.dispatch({\n action: 'cached_password',\n cachedPassword: credentials.password\n });\n }\n } catch (e) {\n console.warn(\"Error using local storage: can't persist session!\", e);\n }\n\n if (rtsClient && !credentials.guest) {\n teamPromise = rtsClient.login(credentials.userId).then(function (body) {\n if (body.team_token) {\n localStorage.setItem(\"mx_team_token\", body.team_token);\n }\n return body.team_token;\n }, function (err) {\n console.warn('Failed to get team token on login: ' + err);\n return null;\n });\n }\n } else {\n console.warn(\"No local storage available: can't persist session!\");\n }\n\n _MatrixClientPeg2.default.replaceUsingCreds(credentials);\n\n teamPromise.then(function (teamToken) {\n _dispatcher2.default.dispatch({ action: 'on_logged_in', teamToken: teamToken });\n });\n\n _context3.next = 13;\n return (0, _bluebird.resolve)(startMatrixClient());\n\n case 13:\n return _context3.abrupt('return', _MatrixClientPeg2.default.get());\n\n case 14:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function _doSetLoggedIn(_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Starts the matrix client and all other react-sdk services that\n * listen for events while a session is logged in.\n */\nvar startMatrixClient = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n console.log('Lifecycle: Starting MatrixClient');\n\n // dispatch this before starting the matrix client: it's used\n // to add listeners for the 'sync' event so otherwise we'd have\n // a race condition (and we need to dispatch synchronously for this\n // to work).\n _dispatcher2.default.dispatch({ action: 'will_start_client' }, true);\n\n _Notifier2.default.start();\n _UserActivity2.default.start();\n _Presence2.default.start();\n _DMRoomMap2.default.makeShared().start();\n _ActiveWidgetStore2.default.start();\n\n _context4.next = 9;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.start());\n\n case 9:\n\n // dispatch that we finished starting up to wire up any other bits\n // of the matrix client that cannot be set prior to starting up.\n _dispatcher2.default.dispatch({ action: 'client_started' });\n\n case 10:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function startMatrixClient() {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/*\n * Stops a running client and all related services, and clears persistent\n * storage. Used after a session has been logged out.\n */\n\n\nexports.attemptTokenLogin = attemptTokenLogin;\nexports.handleInvalidStoreError = handleInvalidStoreError;\nexports.initRtsClient = initRtsClient;\nexports.setLoggedIn = setLoggedIn;\nexports.logout = logout;\nexports.isLoggingOut = isLoggingOut;\nexports.onLoggedOut = onLoggedOut;\nexports.stopMatrixClient = stopMatrixClient;\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _createMatrixClient = require('./utils/createMatrixClient');\n\nvar _createMatrixClient2 = _interopRequireDefault(_createMatrixClient);\n\nvar _Analytics = require('./Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _Notifier = require('./Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _UserActivity = require('./UserActivity');\n\nvar _UserActivity2 = _interopRequireDefault(_UserActivity);\n\nvar _Presence = require('./Presence');\n\nvar _Presence2 = _interopRequireDefault(_Presence);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('./utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _RtsClient = require('./RtsClient');\n\nvar _RtsClient2 = _interopRequireDefault(_RtsClient);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ActiveWidgetStore = require('./stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _PlatformPeg = require('./PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction attemptTokenLogin(queryParams, defaultDeviceDisplayName) {\n if (!queryParams.loginToken) {\n return _bluebird2.default.resolve(false);\n }\n\n if (!queryParams.homeserver) {\n console.warn(\"Cannot log in with token: can't determine HS URL to use\");\n return _bluebird2.default.resolve(false);\n }\n\n // create a temporary MatrixClient to do the login\n var client = _matrixJsSdk2.default.createClient({\n baseUrl: queryParams.homeserver\n });\n\n return client.login(\"m.login.token\", {\n token: queryParams.loginToken,\n initial_device_display_name: defaultDeviceDisplayName\n }).then(function (data) {\n console.log(\"Logged in with token\");\n return _clearStorage().then(function () {\n _persistCredentialsToLocalStorage({\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token,\n homeserverUrl: queryParams.homeserver,\n identityServerUrl: queryParams.identityServer,\n guest: false\n });\n return true;\n });\n }).catch(function (err) {\n console.error(\"Failed to log in with login token: \" + err + \" \" + err.data);\n return false;\n });\n}\n\nfunction handleInvalidStoreError(e) {\n if (e.reason === _matrixJsSdk2.default.InvalidStoreError.TOGGLED_LAZY_LOADING) {\n return _bluebird2.default.resolve().then(function () {\n var lazyLoadEnabled = e.value;\n if (lazyLoadEnabled) {\n var LazyLoadingResyncDialog = _index2.default.getComponent(\"views.dialogs.LazyLoadingResyncDialog\");\n return new _bluebird2.default(function (resolve) {\n _Modal2.default.createDialog(LazyLoadingResyncDialog, {\n onFinished: resolve\n });\n });\n } else {\n // show warning about simultaneous use\n // between LL/non-LL version on same host.\n // as disabling LL when previously enabled\n // is a strong indicator of this (/develop & /app)\n var LazyLoadingDisabledDialog = _index2.default.getComponent(\"views.dialogs.LazyLoadingDisabledDialog\");\n return new _bluebird2.default(function (resolve) {\n _Modal2.default.createDialog(LazyLoadingDisabledDialog, {\n onFinished: resolve,\n host: window.location.host\n });\n });\n }\n }).then(function () {\n return _MatrixClientPeg2.default.get().store.deleteAllData();\n }).then(function () {\n _PlatformPeg2.default.get().reload();\n });\n }\n}\n\nfunction _registerAsGuest(hsUrl, isUrl, defaultDeviceDisplayName) {\n console.log('Doing guest login on ' + hsUrl);\n\n // TODO: we should probably de-duplicate this and Login.loginAsGuest.\n // Not really sure where the right home for it is.\n\n // create a temporary MatrixClient to do the login\n var client = _matrixJsSdk2.default.createClient({\n baseUrl: hsUrl\n });\n\n return client.registerGuest({\n body: {\n initial_device_display_name: defaultDeviceDisplayName\n }\n }).then(function (creds) {\n console.log('Registered as guest: ' + creds.user_id);\n return _doSetLoggedIn({\n userId: creds.user_id,\n deviceId: creds.device_id,\n accessToken: creds.access_token,\n homeserverUrl: hsUrl,\n identityServerUrl: isUrl,\n guest: true\n }, true).then(function () {\n return true;\n });\n }, function (err) {\n console.error(\"Failed to register as guest: \" + err + \" \" + err.data);\n return false;\n });\n}\n\nfunction _handleLoadSessionFailure(e) {\n console.log(\"Unable to load session\", e);\n\n var def = _bluebird2.default.defer();\n var SessionRestoreErrorDialog = _index2.default.getComponent('views.dialogs.SessionRestoreErrorDialog');\n\n _Modal2.default.createTrackedDialog('Session Restore Error', '', SessionRestoreErrorDialog, {\n error: e.message,\n onFinished: function onFinished(success) {\n def.resolve(success);\n }\n });\n\n return def.promise.then(function (success) {\n if (success) {\n // user clicked continue.\n _clearStorage();\n return false;\n }\n\n // try, try again\n return loadSession();\n });\n}\n\nvar rtsClient = null;\nfunction initRtsClient(url) {\n if (url) {\n rtsClient = new _RtsClient2.default(url);\n } else {\n rtsClient = null;\n }\n}\n\n/**\n * Transitions to a logged-in state using the given credentials.\n *\n * Starts the matrix client and all other react-sdk services that\n * listen for events while a session is logged in.\n *\n * Also stops the old MatrixClient and clears old credentials/etc out of\n * storage before starting the new client.\n *\n * @param {MatrixClientCreds} credentials The credentials to use\n *\n * @returns {Promise} promise which resolves to the new MatrixClient once it has been started\n */\nfunction setLoggedIn(credentials) {\n stopMatrixClient();\n return _doSetLoggedIn(credentials, true);\n}\n\nfunction _persistCredentialsToLocalStorage(credentials) {\n localStorage.setItem(\"mx_hs_url\", credentials.homeserverUrl);\n localStorage.setItem(\"mx_is_url\", credentials.identityServerUrl);\n localStorage.setItem(\"mx_user_id\", credentials.userId);\n localStorage.setItem(\"mx_access_token\", credentials.accessToken);\n localStorage.setItem(\"mx_is_guest\", (0, _stringify2.default)(credentials.guest));\n\n // if we didn't get a deviceId from the login, leave mx_device_id unset,\n // rather than setting it to \"undefined\".\n //\n // (in this case MatrixClient doesn't bother with the crypto stuff\n // - that's fine for us).\n if (credentials.deviceId) {\n localStorage.setItem(\"mx_device_id\", credentials.deviceId);\n }\n\n console.log('Session persisted for ' + credentials.userId);\n}\n\nvar _isLoggingOut = false;\n\n/**\n * Logs the current session out and transitions to the logged-out state\n */\nfunction logout() {\n if (!_MatrixClientPeg2.default.get()) return;\n\n if (_MatrixClientPeg2.default.get().isGuest()) {\n // logout doesn't work for guest sessions\n // Also we sometimes want to re-log in a guest session\n // if we abort the login\n\n // use settimeout to avoid racing with react unmounting components\n // which need a valid matrixclientpeg\n setTimeout(function () {\n onLoggedOut();\n }, 0);\n return;\n }\n\n _isLoggingOut = true;\n _MatrixClientPeg2.default.get().logout().then(onLoggedOut, function (err) {\n // Just throwing an error here is going to be very unhelpful\n // if you're trying to log out because your server's down and\n // you want to log into a different server, so just forget the\n // access token. It's annoying that this will leave the access\n // token still valid, but we should fix this by having access\n // tokens expire (and if you really think you've been compromised,\n // change your password).\n console.log(\"Failed to call logout API: token will not be invalidated\");\n onLoggedOut();\n }).done();\n}\n\nfunction isLoggingOut() {\n return _isLoggingOut;\n}function onLoggedOut() {\n _isLoggingOut = false;\n stopMatrixClient();\n _clearStorage().done();\n _dispatcher2.default.dispatch({ action: 'on_logged_out' });\n}\n\n/**\n * @returns {Promise} promise which resolves once the stores have been cleared\n */\nfunction _clearStorage() {\n _Analytics2.default.logout();\n\n if (window.localStorage) {\n var hsUrl = window.localStorage.getItem(\"mx_hs_url\");\n var isUrl = window.localStorage.getItem(\"mx_is_url\");\n window.localStorage.clear();\n\n // preserve our HS & IS URLs for convenience\n // N.B. we cache them in hsUrl/isUrl and can't really inline them\n // as getCurrentHsUrl() may call through to localStorage.\n // NB. We do clear the device ID (as well as all the settings)\n if (hsUrl) window.localStorage.setItem(\"mx_hs_url\", hsUrl);\n if (isUrl) window.localStorage.setItem(\"mx_is_url\", isUrl);\n }\n\n // create a temporary client to clear out the persistent stores.\n var cli = (0, _createMatrixClient2.default)({\n // we'll never make any requests, so can pass a bogus HS URL\n baseUrl: \"\"\n });\n return cli.clearStores();\n}\n\n/**\n * Stop all the background processes related to the current client.\n */\nfunction stopMatrixClient() {\n _Notifier2.default.stop();\n _UserActivity2.default.stop();\n _Presence2.default.stop();\n _ActiveWidgetStore2.default.stop();\n if (_DMRoomMap2.default.shared()) _DMRoomMap2.default.shared().stop();\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.stopClient();\n cli.removeAllListeners();\n _MatrixClientPeg2.default.unset();\n }\n}\n//# sourceMappingURL=Lifecycle.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MIN_DISPATCH_INTERVAL_MS = 500; /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar CURRENTLY_ACTIVE_THRESHOLD_MS = 2000;\n\n/**\n * This class watches for user activity (moving the mouse or pressing a key)\n * and dispatches the user_activity action at times when the user is interacting\n * with the app (but at a much lower frequency than mouse move events)\n */\n\nvar UserActivity = function () {\n function UserActivity() {\n (0, _classCallCheck3.default)(this, UserActivity);\n }\n\n (0, _createClass3.default)(UserActivity, [{\n key: 'start',\n\n\n /**\n * Start listening to user activity\n */\n value: function start() {\n document.onmousedown = this._onUserActivity.bind(this);\n document.onmousemove = this._onUserActivity.bind(this);\n document.onkeydown = this._onUserActivity.bind(this);\n // can't use document.scroll here because that's only the document\n // itself being scrolled. Need to use addEventListener's useCapture.\n // also this needs to be the wheel event, not scroll, as scroll is\n // fired when the view scrolls down for a new message.\n window.addEventListener('wheel', this._onUserActivity.bind(this), { passive: true, capture: true });\n this.lastActivityAtTs = new Date().getTime();\n this.lastDispatchAtTs = 0;\n this.activityEndTimer = undefined;\n }\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n document.onmousedown = undefined;\n document.onmousemove = undefined;\n document.onkeydown = undefined;\n window.removeEventListener('wheel', this._onUserActivity.bind(this), { passive: true, capture: true });\n }\n\n /**\n * Return true if there has been user activity very recently\n * (ie. within a few seconds)\n * @returns {boolean} true if user is currently/very recently active\n */\n\n }, {\n key: 'userCurrentlyActive',\n value: function userCurrentlyActive() {\n return this.lastActivityAtTs > new Date().getTime() - CURRENTLY_ACTIVE_THRESHOLD_MS;\n }\n }, {\n key: '_onUserActivity',\n value: function _onUserActivity(event) {\n if (event.screenX && event.type === \"mousemove\") {\n if (event.screenX === this.lastScreenX && event.screenY === this.lastScreenY) {\n // mouse hasn't actually moved\n return;\n }\n this.lastScreenX = event.screenX;\n this.lastScreenY = event.screenY;\n }\n\n this.lastActivityAtTs = new Date().getTime();\n if (this.lastDispatchAtTs < this.lastActivityAtTs - MIN_DISPATCH_INTERVAL_MS) {\n this.lastDispatchAtTs = this.lastActivityAtTs;\n _dispatcher2.default.dispatch({\n action: 'user_activity'\n });\n if (!this.activityEndTimer) {\n this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), MIN_DISPATCH_INTERVAL_MS);\n }\n }\n }\n }, {\n key: '_onActivityEndTimer',\n value: function _onActivityEndTimer() {\n var now = new Date().getTime();\n var targetTime = this.lastActivityAtTs + MIN_DISPATCH_INTERVAL_MS;\n if (now >= targetTime) {\n _dispatcher2.default.dispatch({\n action: 'user_activity_end'\n });\n this.activityEndTimer = undefined;\n } else {\n this.activityEndTimer = setTimeout(this._onActivityEndTimer.bind(this), targetTime - now);\n }\n }\n }]);\n return UserActivity;\n}();\n\nmodule.exports = new UserActivity();\n//# sourceMappingURL=UserActivity.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nexports.instanceForInstanceId = instanceForInstanceId;\nexports.protocolNameForInstanceId = protocolNameForInstanceId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Find a protocol 'instance' with a given instance_id\n// in the supplied protocols dict\nfunction instanceForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var proto = _step.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(protocols[proto].instances), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var instance = _step2.value;\n\n if (instance.instance_id == instance_id) return instance;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n// given an instance_id, return the name of the protocol for\n// that instance ID in the supplied protocols dict\nfunction protocolNameForInstanceId(protocols, instance_id) {\n if (!instance_id) return null;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(protocols)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var proto = _step3.value;\n\n if (!protocols[proto].instances && protocols[proto].instances instanceof Array) continue;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(protocols[proto].instances), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var instance = _step4.value;\n\n if (instance.instance_id == instance_id) return proto;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n//# sourceMappingURL=DirectoryUtils.js.map","'use strict';\n\nexports.__esModule = true;\nexports.stateify = exports.TokenState = exports.CharacterState = undefined;\n\nvar _class = require('../utils/class');\n\nfunction createStateClass() {\n\treturn function (tClass) {\n\t\tthis.j = [];\n\t\tthis.T = tClass || null;\n\t};\n}\n\n/**\n\tA simple state machine that can emit token classes\n\n\tThe `j` property in this class refers to state jumps. It's a\n\tmultidimensional array where for each element:\n\n\t* index [0] is a symbol or class of symbols to transition to.\n\t* index [1] is a State instance which matches\n\n\tThe type of symbol will depend on the target implementation for this class.\n\tIn Linkify, we have a two-stage scanner. Each stage uses this state machine\n\tbut with a slighly different (polymorphic) implementation.\n\n\tThe `T` property refers to the token class.\n\n\tTODO: Can the `on` and `next` methods be combined?\n\n\t@class BaseState\n*/\nvar BaseState = createStateClass();\nBaseState.prototype = {\n\tdefaultTransition: false,\n\n\t/**\n \t@method constructor\n \t@param {Class} tClass Pass in the kind of token to emit if there are\n \t\tno jumps after this state and the state is accepting.\n */\n\n\t/**\n \tOn the given symbol(s), this machine should go to the given state\n \t\t@method on\n \t@param {Array|Mixed} symbol\n \t@param {BaseState} state Note that the type of this state should be the\n \t\tsame as the current instance (i.e., don't pass in a different\n \t\tsubclass)\n */\n\ton: function on(symbol, state) {\n\t\tif (symbol instanceof Array) {\n\t\t\tfor (var i = 0; i < symbol.length; i++) {\n\t\t\t\tthis.j.push([symbol[i], state]);\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tthis.j.push([symbol, state]);\n\t\treturn this;\n\t},\n\n\n\t/**\n \tGiven the next item, returns next state for that item\n \t@method next\n \t@param {Mixed} item Should be an instance of the symbols handled by\n \t\tthis particular machine.\n \t@return {State} state Returns false if no jumps are available\n */\n\tnext: function next(item) {\n\t\tfor (var i = 0; i < this.j.length; i++) {\n\t\t\tvar jump = this.j[i];\n\t\t\tvar symbol = jump[0]; // Next item to check for\n\t\t\tvar state = jump[1]; // State to jump to if items match\n\n\t\t\t// compare item with symbol\n\t\t\tif (this.test(item, symbol)) {\n\t\t\t\treturn state;\n\t\t\t}\n\t\t}\n\n\t\t// Nowhere left to jump!\n\t\treturn this.defaultTransition;\n\t},\n\n\n\t/**\n \tDoes this state accept?\n \t`true` only of `this.T` exists\n \t\t@method accepts\n \t@return {Boolean}\n */\n\taccepts: function accepts() {\n\t\treturn !!this.T;\n\t},\n\n\n\t/**\n \tDetermine whether a given item \"symbolizes\" the symbol, where symbol is\n \ta class of items handled by this state machine.\n \t\tThis method should be overriden in extended classes.\n \t\t@method test\n \t@param {Mixed} item Does this item match the given symbol?\n \t@param {Mixed} symbol\n \t@return {Boolean}\n */\n\ttest: function test(item, symbol) {\n\t\treturn item === symbol;\n\t},\n\n\n\t/**\n \tEmit the token for this State (just return it in this case)\n \tIf this emits a token, this instance is an accepting state\n \t@method emit\n \t@return {Class} T\n */\n\temit: function emit() {\n\t\treturn this.T;\n\t}\n};\n\n/**\n\tState machine for string-based input\n\n\t@class CharacterState\n\t@extends BaseState\n*/\nvar CharacterState = (0, _class.inherits)(BaseState, createStateClass(), {\n\t/**\n \tDoes the given character match the given character or regular\n \texpression?\n \t\t@method test\n \t@param {String} char\n \t@param {String|RegExp} charOrRegExp\n \t@return {Boolean}\n */\n\ttest: function test(character, charOrRegExp) {\n\t\treturn character === charOrRegExp || charOrRegExp instanceof RegExp && charOrRegExp.test(character);\n\t}\n});\n\n/**\n\tState machine for input in the form of TextTokens\n\n\t@class TokenState\n\t@extends BaseState\n*/\nvar TokenState = (0, _class.inherits)(BaseState, createStateClass(), {\n\n\t/**\n * Similar to `on`, but returns the state the results in the transition from\n * the given item\n * @method jump\n * @param {Mixed} item\n * @param {Token} [token]\n * @return state\n */\n\tjump: function jump(token) {\n\t\tvar tClass = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n\t\tvar state = this.next(new token('')); // dummy temp token\n\t\tif (state === this.defaultTransition) {\n\t\t\t// Make a new state!\n\t\t\tstate = new this.constructor(tClass);\n\t\t\tthis.on(token, state);\n\t\t} else if (tClass) {\n\t\t\tstate.T = tClass;\n\t\t}\n\t\treturn state;\n\t},\n\n\n\t/**\n \tIs the given token an instance of the given token class?\n \t\t@method test\n \t@param {TextToken} token\n \t@param {Class} tokenClass\n \t@return {Boolean}\n */\n\ttest: function test(token, tokenClass) {\n\t\treturn token instanceof tokenClass;\n\t}\n});\n\n/**\n\tGiven a non-empty target string, generates states (if required) for each\n\tconsecutive substring of characters in str starting from the beginning of\n\tthe string. The final state will have a special value, as specified in\n\toptions. All other \"in between\" substrings will have a default end state.\n\n\tThis turns the state machine into a Trie-like data structure (rather than a\n\tintelligently-designed DFA).\n\n\tNote that I haven't really tried these with any strings other than\n\tDOMAIN.\n\n\t@param {String} str\n\t@param {CharacterState} start State to jump from the first character\n\t@param {Class} endToken Token class to emit when the given string has been\n\t\tmatched and no more jumps exist.\n\t@param {Class} defaultToken \"Filler token\", or which token type to emit when\n\t\twe don't have a full match\n\t@return {Array} list of newly-created states\n*/\nfunction stateify(str, start, endToken, defaultToken) {\n\tvar i = 0,\n\t len = str.length,\n\t state = start,\n\t newStates = [],\n\t nextState = void 0;\n\n\t// Find the next state without a jump to the next character\n\twhile (i < len && (nextState = state.next(str[i]))) {\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tif (i >= len) {\n\t\treturn [];\n\t} // no new tokens were added\n\n\twhile (i < len - 1) {\n\t\tnextState = new CharacterState(defaultToken);\n\t\tnewStates.push(nextState);\n\t\tstate.on(str[i], nextState);\n\t\tstate = nextState;\n\t\ti++;\n\t}\n\n\tnextState = new CharacterState(endToken);\n\tnewStates.push(nextState);\n\tstate.on(str[len - 1], nextState);\n\n\treturn newStates;\n}\n\nexports.CharacterState = CharacterState;\nexports.TokenState = TokenState;\nexports.stateify = stateify;","\"use strict\";\n\nexports.__esModule = true;\nfunction createTokenClass() {\n\treturn function (value) {\n\t\tif (value) {\n\t\t\tthis.v = value;\n\t\t}\n\t};\n}\n\nexports.createTokenClass = createTokenClass;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar extend = require('./extend');\nvar dis = require('./dispatcher');\nvar MatrixClientPeg = require('./MatrixClientPeg');\nvar sdk = require('./index');\n\nvar Modal = require('./Modal');\n\nvar encrypt = require(\"browser-encrypt-attachment\");\n\n// Polyfill for Canvas.toBlob API using Canvas.toDataURL\nrequire(\"blueimp-canvas-to-blob\");\n\nvar MAX_WIDTH = 800;\nvar MAX_HEIGHT = 600;\n\n/**\n * Create a thumbnail for a image DOM element.\n * The image will be smaller than MAX_WIDTH and MAX_HEIGHT.\n * The thumbnail will have the same aspect ratio as the original.\n * Draws the element into a canvas using CanvasRenderingContext2D.drawImage\n * Then calls Canvas.toBlob to get a blob object for the image data.\n *\n * Since it needs to calculate the dimensions of the source image and the\n * thumbnailed image it returns an info object filled out with information\n * about the original image and the thumbnail.\n *\n * @param {HTMLElement} element The element to thumbnail.\n * @param {integer} inputWidth The width of the image in the input element.\n * @param {integer} inputHeight the width of the image in the input element.\n * @param {String} mimeType The mimeType to save the blob as.\n * @return {Promise} A promise that resolves with an object with an info key\n * and a thumbnail key.\n */\nfunction createThumbnail(element, inputWidth, inputHeight, mimeType) {\n var deferred = _bluebird2.default.defer();\n\n var targetWidth = inputWidth;\n var targetHeight = inputHeight;\n if (targetHeight > MAX_HEIGHT) {\n targetWidth = Math.floor(targetWidth * (MAX_HEIGHT / targetHeight));\n targetHeight = MAX_HEIGHT;\n }\n if (targetWidth > MAX_WIDTH) {\n targetHeight = Math.floor(targetHeight * (MAX_WIDTH / targetWidth));\n targetWidth = MAX_WIDTH;\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n canvas.getContext(\"2d\").drawImage(element, 0, 0, targetWidth, targetHeight);\n canvas.toBlob(function (thumbnail) {\n deferred.resolve({\n info: {\n thumbnail_info: {\n w: targetWidth,\n h: targetHeight,\n mimetype: thumbnail.type,\n size: thumbnail.size\n },\n w: inputWidth,\n h: inputHeight\n },\n thumbnail: thumbnail\n });\n }, mimeType);\n\n return deferred.promise;\n}\n\n/**\n * Load a file into a newly created image element.\n *\n * @param {File} file The file to load in an image element.\n * @return {Promise} A promise that resolves with the html image element.\n */\nfunction loadImageElement(imageFile) {\n var deferred = _bluebird2.default.defer();\n\n // Load the file into an html element\n var img = document.createElement(\"img\");\n var objectUrl = URL.createObjectURL(imageFile);\n img.src = objectUrl;\n\n // Once ready, create a thumbnail\n img.onload = function () {\n URL.revokeObjectURL(objectUrl);\n deferred.resolve(img);\n };\n img.onerror = function (e) {\n deferred.reject(e);\n };\n\n return deferred.promise;\n}\n\n/**\n * Read the metadata for an image file and create and upload a thumbnail of the image.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the image will be uploaded in.\n * @param {File} The image to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\nfunction infoForImageFile(matrixClient, roomId, imageFile) {\n var thumbnailType = \"image/png\";\n if (imageFile.type == \"image/jpeg\") {\n thumbnailType = \"image/jpeg\";\n }\n\n var imageInfo = void 0;\n return loadImageElement(imageFile).then(function (img) {\n return createThumbnail(img, img.width, img.height, thumbnailType);\n }).then(function (result) {\n imageInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n imageInfo.thumbnail_url = result.url;\n imageInfo.thumbnail_file = result.file;\n return imageInfo;\n });\n}\n\n/**\n * Load a file into a newly created video element.\n *\n * @param {File} file The file to load in an video element.\n * @return {Promise} A promise that resolves with the video image element.\n */\nfunction loadVideoElement(videoFile) {\n var deferred = _bluebird2.default.defer();\n\n // Load the file into an html element\n var video = document.createElement(\"video\");\n\n var reader = new FileReader();\n reader.onload = function (e) {\n video.src = e.target.result;\n\n // Once ready, returns its size\n // Wait until we have enough data to thumbnail the first frame.\n video.onloadeddata = function () {\n deferred.resolve(video);\n };\n video.onerror = function (e) {\n deferred.reject(e);\n };\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsDataURL(videoFile);\n\n return deferred.promise;\n}\n\n/**\n * Read the metadata for a video file and create and upload a thumbnail of the video.\n *\n * @param {MatrixClient} matrixClient A matrixClient to upload the thumbnail with.\n * @param {String} roomId The ID of the room the video will be uploaded to.\n * @param {File} The video to read and thumbnail.\n * @return {Promise} A promise that resolves with the attachment info.\n */\nfunction infoForVideoFile(matrixClient, roomId, videoFile) {\n var thumbnailType = \"image/jpeg\";\n\n var videoInfo = void 0;\n return loadVideoElement(videoFile).then(function (video) {\n return createThumbnail(video, video.videoWidth, video.videoHeight, thumbnailType);\n }).then(function (result) {\n videoInfo = result.info;\n return uploadFile(matrixClient, roomId, result.thumbnail);\n }).then(function (result) {\n videoInfo.thumbnail_url = result.url;\n videoInfo.thumbnail_file = result.file;\n return videoInfo;\n });\n}\n\n/**\n * Read the file as an ArrayBuffer.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the file\n * is read.\n */\nfunction readFileAsArrayBuffer(file) {\n var deferred = _bluebird2.default.defer();\n var reader = new FileReader();\n reader.onload = function (e) {\n deferred.resolve(e.target.result);\n };\n reader.onerror = function (e) {\n deferred.reject(e);\n };\n reader.readAsArrayBuffer(file);\n return deferred.promise;\n}\n\n/**\n * Upload the file to the content repository.\n * If the room is encrypted then encrypt the file before uploading.\n *\n * @param {MatrixClient} matrixClient The matrix client to upload the file with.\n * @param {String} roomId The ID of the room being uploaded to.\n * @param {File} file The file to upload.\n * @param {Function?} progressHandler optional callback to be called when a chunk of\n * data is uploaded.\n * @return {Promise} A promise that resolves with an object.\n * If the file is unencrypted then the object will have a \"url\" key.\n * If the file is encrypted then the object will have a \"file\" key.\n */\nfunction uploadFile(matrixClient, roomId, file, progressHandler) {\n if (matrixClient.isRoomEncrypted(roomId)) {\n // If the room is encrypted then encrypt the file before uploading it.\n // First read the file into memory.\n return readFileAsArrayBuffer(file).then(function (data) {\n // Then encrypt the file.\n return encrypt.encryptAttachment(data);\n }).then(function (encryptResult) {\n // Record the information needed to decrypt the attachment.\n var encryptInfo = encryptResult.info;\n // Pass the encrypted data as a Blob to the uploader.\n var blob = new Blob([encryptResult.data]);\n return matrixClient.uploadContent(blob, {\n progressHandler: progressHandler,\n includeFilename: false\n }).then(function (url) {\n // If the attachment is encrypted then bundle the URL along\n // with the information needed to decrypt the attachment and\n // add it under a file key.\n encryptInfo.url = url;\n if (file.type) {\n encryptInfo.mimetype = file.type;\n }\n return { \"file\": encryptInfo };\n });\n });\n } else {\n var basePromise = matrixClient.uploadContent(file, {\n progressHandler: progressHandler\n });\n var promise1 = basePromise.then(function (url) {\n // If the attachment isn't encrypted then include the URL directly.\n return { \"url\": url };\n });\n // XXX: copy over the abort method to the new promise\n promise1.abort = basePromise.abort;\n return promise1;\n }\n}\n\nvar ContentMessages = function () {\n function ContentMessages() {\n (0, _classCallCheck3.default)(this, ContentMessages);\n\n this.inprogress = [];\n this.nextId = 0;\n }\n\n (0, _createClass3.default)(ContentMessages, [{\n key: 'sendStickerContentToRoom',\n value: function sendStickerContentToRoom(url, roomId, info, text, matrixClient) {\n return MatrixClientPeg.get().sendStickerMessage(roomId, url, info, text).catch(function (e) {\n console.warn('Failed to send content with URL ' + url + ' to room ' + roomId, e);\n throw e;\n });\n }\n }, {\n key: 'sendContentToRoom',\n value: function sendContentToRoom(file, roomId, matrixClient) {\n var _this = this;\n\n var content = {\n body: file.name || 'Attachment',\n info: {\n size: file.size\n }\n };\n\n // if we have a mime type for the file, add it to the message metadata\n if (file.type) {\n content.info.mimetype = file.type;\n }\n\n var def = _bluebird2.default.defer();\n if (file.type.indexOf('image/') == 0) {\n content.msgtype = 'm.image';\n infoForImageFile(matrixClient, roomId, file).then(function (imageInfo) {\n extend(content.info, imageInfo);\n def.resolve();\n }, function (error) {\n console.error(error);\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else if (file.type.indexOf('audio/') == 0) {\n content.msgtype = 'm.audio';\n def.resolve();\n } else if (file.type.indexOf('video/') == 0) {\n content.msgtype = 'm.video';\n infoForVideoFile(matrixClient, roomId, file).then(function (videoInfo) {\n extend(content.info, videoInfo);\n def.resolve();\n }, function (error) {\n content.msgtype = 'm.file';\n def.resolve();\n });\n } else {\n content.msgtype = 'm.file';\n def.resolve();\n }\n\n var upload = {\n fileName: file.name || 'Attachment',\n roomId: roomId,\n total: 0,\n loaded: 0\n };\n this.inprogress.push(upload);\n dis.dispatch({ action: 'upload_started' });\n\n var error = void 0;\n\n function onProgress(ev) {\n upload.total = ev.total;\n upload.loaded = ev.loaded;\n dis.dispatch({ action: 'upload_progress', upload: upload });\n }\n\n return def.promise.then(function () {\n // XXX: upload.promise must be the promise that\n // is returned by uploadFile as it has an abort()\n // method hacked onto it.\n upload.promise = uploadFile(matrixClient, roomId, file, onProgress);\n return upload.promise.then(function (result) {\n content.file = result.file;\n content.url = result.url;\n });\n }).then(function (url) {\n return matrixClient.sendMessage(roomId, content);\n }, function (err) {\n error = err;\n if (!upload.canceled) {\n var desc = (0, _languageHandler._t)('The file \\'%(fileName)s\\' failed to upload', { fileName: upload.fileName }) + '.';\n if (err.http_status == 413) {\n desc = (0, _languageHandler._t)('The file \\'%(fileName)s\\' exceeds this home server\\'s size limit for uploads', { fileName: upload.fileName });\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Upload failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Upload Failed'),\n description: desc\n });\n }\n }).finally(function () {\n var inprogressKeys = (0, _keys2.default)(_this.inprogress);\n for (var i = 0; i < _this.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (_this.inprogress[k].promise === upload.promise) {\n _this.inprogress.splice(k, 1);\n break;\n }\n }\n if (error) {\n dis.dispatch({ action: 'upload_failed', upload: upload });\n } else {\n dis.dispatch({ action: 'upload_finished', upload: upload });\n }\n });\n }\n }, {\n key: 'getCurrentUploads',\n value: function getCurrentUploads() {\n return this.inprogress;\n }\n }, {\n key: 'cancelUpload',\n value: function cancelUpload(promise) {\n var inprogressKeys = (0, _keys2.default)(this.inprogress);\n var upload = void 0;\n for (var i = 0; i < this.inprogress.length; ++i) {\n var k = inprogressKeys[i];\n if (this.inprogress[k].promise === promise) {\n upload = this.inprogress[k];\n break;\n }\n }\n if (upload) {\n upload.canceled = true;\n MatrixClientPeg.get().cancelUpload(upload.promise);\n }\n }\n }]);\n return ContentMessages;\n}();\n\nif (global.mx_ContentMessage === undefined) {\n global.mx_ContentMessage = new ContentMessages();\n}\n\nmodule.exports = global.mx_ContentMessage;\n//# sourceMappingURL=ContentMessages.js.map","/**\n * Encrypt an attachment.\n * @param {ArrayBuffer} plaintextBuffer The attachment data buffer.\n * @return {Promise} A promise that resolves with an object when the attachment is encrypted.\n * The object has a \"data\" key with an ArrayBuffer of encrypted data and an \"info\" key\n * with an object containing the info needed to decrypt the data.\n */\nfunction encryptAttachment(plaintextBuffer) {\n var cryptoKey; // The AES key object.\n var exportedKey; // The AES key exported as JWK.\n var ciphertextBuffer; // ArrayBuffer of encrypted data.\n var sha256Buffer; // ArrayBuffer of digest.\n var ivArray; // Uint8Array of AES IV\n // Generate an IV where the first 8 bytes are random and the high 8 bytes\n // are zero. We set the counter low bits to 0 since it makes it unlikely\n // that the 64 bit counter will overflow.\n ivArray = new Uint8Array(16);\n window.crypto.getRandomValues(ivArray.subarray(0,8));\n // Load the encryption key.\n return window.crypto.subtle.generateKey(\n {\"name\": \"AES-CTR\", length: 256}, true, [\"encrypt\", \"decrypt\"]\n ).then(function(generateKeyResult) {\n cryptoKey = generateKeyResult;\n // Export the Key as JWK.\n return window.crypto.subtle.exportKey(\"jwk\", cryptoKey);\n }).then(function(exportKeyResult) {\n exportedKey = exportKeyResult;\n // Encrypt the input ArrayBuffer.\n // Use half of the iv as the counter by setting the \"length\" to 64.\n return window.crypto.subtle.encrypt(\n {name: \"AES-CTR\", counter: ivArray, length: 64}, cryptoKey, plaintextBuffer\n );\n }).then(function(encryptResult) {\n ciphertextBuffer = encryptResult;\n // SHA-256 the encrypted data.\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n sha256Buffer = digestResult;\n\n return {\n data: ciphertextBuffer,\n info: {\n v: \"v2\",\n key: exportedKey,\n iv: encodeBase64(ivArray),\n hashes: {\n sha256: encodeBase64(new Uint8Array(sha256Buffer)),\n },\n },\n };\n });\n}\n\n/**\n * Decrypt an attachment.\n * @param {ArrayBuffer} ciphertextBuffer The encrypted attachment data buffer.\n * @param {Object} info The information needed to decrypt the attachment.\n * @param {Object} info.key AES-CTR JWK key object.\n * @param {string} info.iv Base64 encoded 16 byte AES-CTR IV.\n * @param {string} info.hashes.sha256 Base64 encoded SHA-256 hash of the ciphertext.\n * @return {Promise} A promise that resolves with an ArrayBuffer when the attachment is decrypted.\n */\nfunction decryptAttachment(ciphertextBuffer, info) {\n\n if (info === undefined || info.key === undefined || info.iv === undefined\n || info.hashes === undefined || info.hashes.sha256 === undefined) {\n throw new Error(\"Invalid info. Missing info.key, info.iv or info.hashes.sha256 key\");\n }\n\n var cryptoKey; // The AES key object.\n var ivArray = decodeBase64(info.iv);\n var expectedSha256base64 = info.hashes.sha256;\n // Load the AES from the \"key\" key of the info object.\n return window.crypto.subtle.importKey(\n \"jwk\", info.key, {\"name\": \"AES-CTR\"}, false, [\"encrypt\", \"decrypt\"]\n ).then(function (importKeyResult) {\n cryptoKey = importKeyResult;\n // Check the sha256 hash\n return window.crypto.subtle.digest(\"SHA-256\", ciphertextBuffer);\n }).then(function (digestResult) {\n if (encodeBase64(new Uint8Array(digestResult)) != expectedSha256base64) {\n throw new Error(\"Mismatched SHA-256 digest\");\n }\n var counterLength;\n if (info.v == \"v1\" || info.v == \"v2\") {\n // Version 1 and 2 use a 64 bit counter.\n counterLength = 64;\n } else {\n // Version 0 uses a 128 bit counter.\n counterLength = 128;\n }\n return window.crypto.subtle.decrypt(\n {name: \"AES-CTR\", counter: ivArray, length: counterLength}, cryptoKey, ciphertextBuffer\n );\n });\n}\n\n/**\n * Encode a typed array of uint8 as base64.\n * @param {Uint8Array} uint8Array The data to encode.\n * @return {string} The base64 without padding.\n */\nfunction encodeBase64(uint8Array) {\n // Misinterpt the Uint8Array as Latin-1.\n // window.btoa expects a unicode string with codepoints in the range 0-255.\n var latin1String = String.fromCharCode.apply(null, uint8Array);\n // Use the builtin base64 encoder.\n var paddedBase64 = window.btoa(latin1String);\n // Calculate the unpadded length.\n var inputLength = uint8Array.length;\n var outputLength = 4 * Math.floor((inputLength + 2) / 3) + (inputLength + 2) % 3 - 2;\n // Return the unpadded base64.\n return paddedBase64.slice(0, outputLength);\n}\n\n/**\n * Decode a base64 string to a typed array of uint8.\n * This will decode unpadded base64, but will also accept base64 with padding.\n * @param {string} base64 The unpadded base64 to decode.\n * @return {Uint8Array} The decoded data.\n */\nfunction decodeBase64(base64) {\n // Pad the base64 up to the next multiple of 4.\n var paddedBase64 = base64 + \"===\".slice(0, (4 - base64.length % 4) % 4);\n // Decode the base64 as a misinterpreted Latin-1 string.\n // window.atob returns a unicode string with codepoints in the range 0-255.\n var latin1String = window.atob(paddedBase64);\n // Encode the string as a Uint8Array as Latin-1.\n var uint8Array = new Uint8Array(latin1String.length);\n for (var i = 0; i < latin1String.length; i++) {\n uint8Array[i] = latin1String.charCodeAt(i);\n }\n return uint8Array;\n}\n\ntry {\n exports.encryptAttachment = encryptAttachment;\n exports.decryptAttachment = decryptAttachment;\n}\ncatch (e) {\n // Ignore unknown variable \"exports\" errors when this is loaded directly into a browser\n // This means that we can test it without having to use browserify.\n // The intention is that the library is used using browserify.\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * TODO: Make things use this. This is all WIP - see UserSettings.js for usage.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = {\n loadProfileInfo: function loadProfileInfo() {\n var cli = _MatrixClientPeg2.default.get();\n return cli.getProfileInfo(cli.credentials.userId);\n },\n\n saveDisplayName: function saveDisplayName(newDisplayname) {\n return _MatrixClientPeg2.default.get().setDisplayName(newDisplayname);\n },\n\n loadThreePids: function loadThreePids() {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _bluebird2.default.resolve({\n threepids: []\n }); // guests can't poke 3pid endpoint\n }\n return _MatrixClientPeg2.default.get().getThreePids();\n },\n\n saveThreePids: function saveThreePids(threePids) {\n // TODO\n },\n\n changePassword: function changePassword(oldPassword, newPassword) {\n var cli = _MatrixClientPeg2.default.get();\n\n var authDict = {\n type: 'm.login.password',\n user: cli.credentials.userId,\n password: oldPassword\n };\n\n return cli.setPassword(authDict, newPassword);\n },\n\n /*\n * Returns the email pusher (pusher of type 'email') for a given\n * email address. Email pushers all have the same app ID, so since\n * pushers are unique over (app ID, pushkey), there will be at most\n * one such pusher.\n */\n getEmailPusher: function getEmailPusher(pushers, address) {\n if (pushers === undefined) {\n return undefined;\n }\n for (var i = 0; i < pushers.length; ++i) {\n if (pushers[i].kind === 'email' && pushers[i].pushkey === address) {\n return pushers[i];\n }\n }\n return undefined;\n },\n\n hasEmailPusher: function hasEmailPusher(pushers, address) {\n return this.getEmailPusher(pushers, address) !== undefined;\n },\n\n addEmailPusher: function addEmailPusher(address, data) {\n return _MatrixClientPeg2.default.get().setPusher({\n kind: 'email',\n app_id: 'm.email',\n pushkey: address,\n app_display_name: 'Email Notifications',\n device_display_name: address,\n lang: navigator.language,\n data: data,\n append: true // We always append for email pushers since we don't want to stop other accounts notifying to the same email address\n });\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=UserSettingsStore.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _UiEffects = require('../../../UiEffects');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _email = require('../../../email');\n\nvar _email2 = _interopRequireDefault(_email);\n\nvar _phonenumber = require('../../../phonenumber');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FIELD_EMAIL = 'field_email';\nvar FIELD_PHONE_COUNTRY = 'field_phone_country';\nvar FIELD_PHONE_NUMBER = 'field_phone_number';\nvar FIELD_USERNAME = 'field_username';\nvar FIELD_PASSWORD = 'field_password';\nvar FIELD_PASSWORD_CONFIRM = 'field_password_confirm';\n\n/**\n * A pure UI component which displays a registration form.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'RegistrationForm',\n\n propTypes: {\n // Values pre-filled in the input boxes when the component loads\n defaultEmail: _propTypes2.default.string,\n defaultPhoneCountry: _propTypes2.default.string,\n defaultPhoneNumber: _propTypes2.default.string,\n defaultUsername: _propTypes2.default.string,\n defaultPassword: _propTypes2.default.string,\n teamsConfig: _propTypes2.default.shape({\n // Email address to request new teams\n supportEmail: _propTypes2.default.string,\n teams: _propTypes2.default.arrayOf(_propTypes2.default.shape({\n // The displayed name of the team\n \"name\": _propTypes2.default.string,\n // The domain of team email addresses\n \"domain\": _propTypes2.default.string\n })).required\n }),\n\n minPasswordLength: _propTypes2.default.number,\n onError: _propTypes2.default.func,\n onRegisterClick: _propTypes2.default.func.isRequired, // onRegisterClick(Object) => ?Promise\n flows: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n minPasswordLength: 6,\n onError: function onError(e) {\n console.error(e);\n }\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n fieldValid: {},\n selectedTeam: null,\n // The ISO2 country code selected in the phone number entry\n phoneCountry: this.props.defaultPhoneCountry\n };\n },\n\n onSubmit: function onSubmit(ev) {\n ev.preventDefault();\n\n // validate everything, in reverse order so\n // the error that ends up being displayed\n // is the one from the first invalid field.\n // It's not super ideal that this just calls\n // onError once for each invalid field.\n this.validateField(FIELD_PASSWORD_CONFIRM);\n this.validateField(FIELD_PASSWORD);\n this.validateField(FIELD_USERNAME);\n this.validateField(FIELD_PHONE_NUMBER);\n this.validateField(FIELD_EMAIL);\n\n var self = this;\n if (this.allFieldsValid()) {\n if (this.refs.email.value == '') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('If you don\\'t specify an email address...', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"If you don't specify an email address, you won't be able to reset your password. \" + \"Are you sure?\")\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n self._doSubmit(ev);\n }\n }\n });\n } else {\n self._doSubmit(ev);\n }\n }\n },\n\n _doSubmit: function _doSubmit(ev) {\n var email = this.refs.email.value.trim();\n var promise = this.props.onRegisterClick({\n username: this.refs.username.value.trim(),\n password: this.refs.password.value.trim(),\n email: email,\n phoneCountry: this.state.phoneCountry,\n phoneNumber: this.refs.phoneNumber ? this.refs.phoneNumber.value.trim() : ''\n });\n\n if (promise) {\n ev.target.disabled = true;\n promise.finally(function () {\n ev.target.disabled = false;\n });\n }\n },\n\n /**\n * Returns true if all fields were valid last time\n * they were validated.\n */\n allFieldsValid: function allFieldsValid() {\n var keys = (0, _keys2.default)(this.state.fieldValid);\n for (var i = 0; i < keys.length; ++i) {\n if (this.state.fieldValid[keys[i]] == false) {\n return false;\n }\n }\n return true;\n },\n\n _isUniEmail: function _isUniEmail(email) {\n return email.endsWith('.ac.uk') || email.endsWith('.edu') || email.endsWith('matrix.org');\n },\n\n validateField: function validateField(field_id) {\n var pwd1 = this.refs.password.value.trim();\n var pwd2 = this.refs.passwordConfirm.value.trim();\n\n switch (field_id) {\n case FIELD_EMAIL:\n var email = this.refs.email.value;\n if (this.props.teamsConfig && this._isUniEmail(email)) {\n var matchingTeam = this.props.teamsConfig.teams.find(function (team) {\n return email.split('@').pop() === team.domain;\n }) || null;\n this.setState({\n selectedTeam: matchingTeam,\n showSupportEmail: !matchingTeam\n });\n this.props.onTeamSelected(matchingTeam);\n } else {\n this.props.onTeamSelected(null);\n this.setState({\n selectedTeam: null,\n showSupportEmail: false\n });\n }\n var emailValid = email === '' || _email2.default.looksValid(email);\n if (this._authStepIsRequired('m.login.email.identity') && (!emailValid || email === '')) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_MISSING_EMAIL\");\n } else this.markFieldValid(field_id, emailValid, \"RegistrationForm.ERR_EMAIL_INVALID\");\n break;\n case FIELD_PHONE_NUMBER:\n var phoneNumber = this.refs.phoneNumber ? this.refs.phoneNumber.value : '';\n var phoneNumberValid = phoneNumber === '' || (0, _phonenumber.looksValid)(phoneNumber);\n if (this._authStepIsRequired('m.login.msisdn') && (!phoneNumberValid || phoneNumber === '')) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_MISSING_PHONE_NUMBER\");\n } else this.markFieldValid(field_id, phoneNumberValid, \"RegistrationForm.ERR_PHONE_NUMBER_INVALID\");\n break;\n case FIELD_USERNAME:\n // XXX: SPEC-1\n var username = this.refs.username.value.trim();\n if (encodeURIComponent(username) != username) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_USERNAME_INVALID\");\n } else if (username == '') {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_USERNAME_BLANK\");\n } else {\n this.markFieldValid(field_id, true);\n }\n break;\n case FIELD_PASSWORD:\n if (pwd1 == '') {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_PASSWORD_MISSING\");\n } else if (pwd1.length < this.props.minPasswordLength) {\n this.markFieldValid(field_id, false, \"RegistrationForm.ERR_PASSWORD_LENGTH\");\n } else {\n this.markFieldValid(field_id, true);\n }\n break;\n case FIELD_PASSWORD_CONFIRM:\n this.markFieldValid(field_id, pwd1 == pwd2, \"RegistrationForm.ERR_PASSWORD_MISMATCH\");\n break;\n }\n },\n\n markFieldValid: function markFieldValid(field_id, val, error_code) {\n var fieldValid = this.state.fieldValid;\n fieldValid[field_id] = val;\n this.setState({ fieldValid: fieldValid });\n if (!val) {\n (0, _UiEffects.field_input_incorrect)(this.fieldElementById(field_id));\n this.props.onError(error_code);\n }\n },\n\n fieldElementById: function fieldElementById(field_id) {\n switch (field_id) {\n case FIELD_EMAIL:\n return this.refs.email;\n case FIELD_PHONE_NUMBER:\n return this.refs.phoneNumber;\n case FIELD_USERNAME:\n return this.refs.username;\n case FIELD_PASSWORD:\n return this.refs.password;\n case FIELD_PASSWORD_CONFIRM:\n return this.refs.passwordConfirm;\n }\n },\n\n\n _classForField: function _classForField(field_id) {\n for (var _len = arguments.length, baseClasses = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n baseClasses[_key - 1] = arguments[_key];\n }\n\n var cls = baseClasses.join(' ');\n if (this.state.fieldValid[field_id] === false) {\n if (cls) cls += ' ';\n cls += 'error';\n }\n return cls;\n },\n\n _onPhoneCountryChange: function _onPhoneCountryChange(newVal) {\n this.setState({\n phoneCountry: newVal.iso2,\n phonePrefix: newVal.prefix\n });\n },\n _authStepIsRequired: function _authStepIsRequired(step) {\n // A step is required if no flow exists which does not include that step\n // (Notwithstanding setups like either email or msisdn being required)\n return !this.props.flows.some(function (flow) {\n return !flow.stages.includes(step);\n });\n },\n\n\n render: function render() {\n var self = this;\n\n var emailPlaceholder = this._authStepIsRequired('m.login.email.identity') ? (0, _languageHandler._t)(\"Email address\") : (0, _languageHandler._t)(\"Email address (optional)\");\n\n var emailSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'text', ref: 'email',\n autoFocus: true, placeholder: emailPlaceholder,\n defaultValue: this.props.defaultEmail,\n className: this._classForField(FIELD_EMAIL, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_EMAIL);\n },\n value: self.state.email })\n );\n var belowEmailSection = void 0;\n if (this.props.teamsConfig) {\n if (this.props.teamsConfig.supportEmail && this.state.showSupportEmail) {\n belowEmailSection = _react2.default.createElement(\n 'p',\n { className: 'mx_Login_support' },\n 'Sorry, but your university is not registered with us just yet.\\xA0 Email us on\\xA0',\n _react2.default.createElement(\n 'a',\n { href: \"mailto:\" + this.props.teamsConfig.supportEmail },\n this.props.teamsConfig.supportEmail\n ),\n '\\xA0 to get your university signed up. Or continue to register with Riot to enjoy our open source platform.'\n );\n } else if (this.state.selectedTeam) {\n belowEmailSection = _react2.default.createElement(\n 'p',\n { className: 'mx_Login_support' },\n (0, _languageHandler._t)(\"You are registering with %(SelectedTeamName)s\", { SelectedTeamName: this.state.selectedTeam.name })\n );\n }\n }\n\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n var phoneSection = void 0;\n if (!_SdkConfig2.default.get().disable_3pid_login) {\n var phonePlaceholder = this._authStepIsRequired('m.login.msisdn') ? (0, _languageHandler._t)(\"Mobile phone number\") : (0, _languageHandler._t)(\"Mobile phone number (optional)\");\n phoneSection = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_phoneSection' },\n _react2.default.createElement(CountryDropdown, { ref: 'phone_country', onOptionChange: this._onPhoneCountryChange,\n className: 'mx_Login_phoneCountry mx_Login_field_prefix',\n value: this.state.phoneCountry,\n isSmall: true,\n showPrefix: true\n }),\n _react2.default.createElement('input', { type: 'text', ref: 'phoneNumber',\n placeholder: phonePlaceholder,\n defaultValue: this.props.defaultPhoneNumber,\n className: this._classForField(FIELD_PHONE_NUMBER, 'mx_Login_phoneNumberField', 'mx_Login_field', 'mx_Login_field_has_prefix'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PHONE_NUMBER);\n },\n value: self.state.phoneNumber\n })\n );\n }\n\n var registerButton = _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)(\"Register\") });\n\n var placeholderUserName = (0, _languageHandler._t)(\"User name\");\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmit },\n emailSection,\n belowEmailSection,\n phoneSection,\n _react2.default.createElement('input', { type: 'text', ref: 'username',\n placeholder: placeholderUserName, defaultValue: this.props.defaultUsername,\n className: this._classForField(FIELD_USERNAME, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_USERNAME);\n } }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'password', ref: 'password',\n className: this._classForField(FIELD_PASSWORD, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PASSWORD);\n },\n placeholder: (0, _languageHandler._t)(\"Password\"), defaultValue: this.props.defaultPassword }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { type: 'password', ref: 'passwordConfirm',\n placeholder: (0, _languageHandler._t)(\"Confirm password\"),\n className: this._classForField(FIELD_PASSWORD_CONFIRM, 'mx_Login_field'),\n onBlur: function onBlur() {\n self.validateField(FIELD_PASSWORD_CONFIRM);\n },\n defaultValue: this.props.defaultPassword }),\n _react2.default.createElement('br', null),\n registerButton\n )\n );\n }\n});\n//# sourceMappingURL=RegistrationForm.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.field_input_incorrect = field_input_incorrect;\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nrequire('velocity-vector/velocity.ui');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Functions for applying common thematic effects to UI elements.\n * Ideally this would be themeable.\n */\n\nfunction field_input_incorrect(element) {\n (0, _velocityVector2.default)(element, \"callout.shake\", 300);\n}\n//# sourceMappingURL=UiEffects.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.looksValid = looksValid;\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PHONE_NUMBER_REGEXP = /^[0-9 -\\.]+$/;\n\n/*\n * Do basic validation to determine if the given input could be\n * a valid phone number.\n *\n * @param {String} phoneNumber The string to validate. This could be\n * either an international format number (MSISDN or e.164) or\n * a national-format number.\n * @return True if the number could be a valid phone number, otherwise false.\n */\nfunction looksValid(phoneNumber) {\n return PHONE_NUMBER_REGEXP.test(phoneNumber);\n}\n\nvar COUNTRIES = exports.COUNTRIES = [{\n \"iso2\": \"GB\",\n \"name\": \"United Kingdom\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"US\",\n \"name\": \"United States\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AF\",\n \"name\": \"Afghanistan\",\n \"prefix\": \"93\"\n}, {\n \"iso2\": \"AX\",\n \"name\": \"\\xC5land Islands\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"AL\",\n \"name\": \"Albania\",\n \"prefix\": \"355\"\n}, {\n \"iso2\": \"DZ\",\n \"name\": \"Algeria\",\n \"prefix\": \"213\"\n}, {\n \"iso2\": \"AS\",\n \"name\": \"American Samoa\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AD\",\n \"name\": \"Andorra\",\n \"prefix\": \"376\"\n}, {\n \"iso2\": \"AO\",\n \"name\": \"Angola\",\n \"prefix\": \"244\"\n}, {\n \"iso2\": \"AI\",\n \"name\": \"Anguilla\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AQ\",\n \"name\": \"Antarctica\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"AG\",\n \"name\": \"Antigua & Barbuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"AR\",\n \"name\": \"Argentina\",\n \"prefix\": \"54\"\n}, {\n \"iso2\": \"AM\",\n \"name\": \"Armenia\",\n \"prefix\": \"374\"\n}, {\n \"iso2\": \"AW\",\n \"name\": \"Aruba\",\n \"prefix\": \"297\"\n}, {\n \"iso2\": \"AU\",\n \"name\": \"Australia\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"AT\",\n \"name\": \"Austria\",\n \"prefix\": \"43\"\n}, {\n \"iso2\": \"AZ\",\n \"name\": \"Azerbaijan\",\n \"prefix\": \"994\"\n}, {\n \"iso2\": \"BS\",\n \"name\": \"Bahamas\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BH\",\n \"name\": \"Bahrain\",\n \"prefix\": \"973\"\n}, {\n \"iso2\": \"BD\",\n \"name\": \"Bangladesh\",\n \"prefix\": \"880\"\n}, {\n \"iso2\": \"BB\",\n \"name\": \"Barbados\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BY\",\n \"name\": \"Belarus\",\n \"prefix\": \"375\"\n}, {\n \"iso2\": \"BE\",\n \"name\": \"Belgium\",\n \"prefix\": \"32\"\n}, {\n \"iso2\": \"BZ\",\n \"name\": \"Belize\",\n \"prefix\": \"501\"\n}, {\n \"iso2\": \"BJ\",\n \"name\": \"Benin\",\n \"prefix\": \"229\"\n}, {\n \"iso2\": \"BM\",\n \"name\": \"Bermuda\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BT\",\n \"name\": \"Bhutan\",\n \"prefix\": \"975\"\n}, {\n \"iso2\": \"BO\",\n \"name\": \"Bolivia\",\n \"prefix\": \"591\"\n}, {\n \"iso2\": \"BA\",\n \"name\": \"Bosnia\",\n \"prefix\": \"387\"\n}, {\n \"iso2\": \"BW\",\n \"name\": \"Botswana\",\n \"prefix\": \"267\"\n}, {\n \"iso2\": \"BV\",\n \"name\": \"Bouvet Island\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"BR\",\n \"name\": \"Brazil\",\n \"prefix\": \"55\"\n}, {\n \"iso2\": \"IO\",\n \"name\": \"British Indian Ocean Territory\",\n \"prefix\": \"246\"\n}, {\n \"iso2\": \"VG\",\n \"name\": \"British Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"BN\",\n \"name\": \"Brunei\",\n \"prefix\": \"673\"\n}, {\n \"iso2\": \"BG\",\n \"name\": \"Bulgaria\",\n \"prefix\": \"359\"\n}, {\n \"iso2\": \"BF\",\n \"name\": \"Burkina Faso\",\n \"prefix\": \"226\"\n}, {\n \"iso2\": \"BI\",\n \"name\": \"Burundi\",\n \"prefix\": \"257\"\n}, {\n \"iso2\": \"KH\",\n \"name\": \"Cambodia\",\n \"prefix\": \"855\"\n}, {\n \"iso2\": \"CM\",\n \"name\": \"Cameroon\",\n \"prefix\": \"237\"\n}, {\n \"iso2\": \"CA\",\n \"name\": \"Canada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CV\",\n \"name\": \"Cape Verde\",\n \"prefix\": \"238\"\n}, {\n \"iso2\": \"BQ\",\n \"name\": \"Caribbean Netherlands\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"KY\",\n \"name\": \"Cayman Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"CF\",\n \"name\": \"Central African Republic\",\n \"prefix\": \"236\"\n}, {\n \"iso2\": \"TD\",\n \"name\": \"Chad\",\n \"prefix\": \"235\"\n}, {\n \"iso2\": \"CL\",\n \"name\": \"Chile\",\n \"prefix\": \"56\"\n}, {\n \"iso2\": \"CN\",\n \"name\": \"China\",\n \"prefix\": \"86\"\n}, {\n \"iso2\": \"CX\",\n \"name\": \"Christmas Island\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CC\",\n \"name\": \"Cocos (Keeling) Islands\",\n \"prefix\": \"61\"\n}, {\n \"iso2\": \"CO\",\n \"name\": \"Colombia\",\n \"prefix\": \"57\"\n}, {\n \"iso2\": \"KM\",\n \"name\": \"Comoros\",\n \"prefix\": \"269\"\n}, {\n \"iso2\": \"CG\",\n \"name\": \"Congo - Brazzaville\",\n \"prefix\": \"242\"\n}, {\n \"iso2\": \"CD\",\n \"name\": \"Congo - Kinshasa\",\n \"prefix\": \"243\"\n}, {\n \"iso2\": \"CK\",\n \"name\": \"Cook Islands\",\n \"prefix\": \"682\"\n}, {\n \"iso2\": \"CR\",\n \"name\": \"Costa Rica\",\n \"prefix\": \"506\"\n}, {\n \"iso2\": \"HR\",\n \"name\": \"Croatia\",\n \"prefix\": \"385\"\n}, {\n \"iso2\": \"CU\",\n \"name\": \"Cuba\",\n \"prefix\": \"53\"\n}, {\n \"iso2\": \"CW\",\n \"name\": \"Cura\\xE7ao\",\n \"prefix\": \"599\"\n}, {\n \"iso2\": \"CY\",\n \"name\": \"Cyprus\",\n \"prefix\": \"357\"\n}, {\n \"iso2\": \"CZ\",\n \"name\": \"Czech Republic\",\n \"prefix\": \"420\"\n}, {\n \"iso2\": \"CI\",\n \"name\": \"C\\xF4te d\\u2019Ivoire\",\n \"prefix\": \"225\"\n}, {\n \"iso2\": \"DK\",\n \"name\": \"Denmark\",\n \"prefix\": \"45\"\n}, {\n \"iso2\": \"DJ\",\n \"name\": \"Djibouti\",\n \"prefix\": \"253\"\n}, {\n \"iso2\": \"DM\",\n \"name\": \"Dominica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"DO\",\n \"name\": \"Dominican Republic\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"EC\",\n \"name\": \"Ecuador\",\n \"prefix\": \"593\"\n}, {\n \"iso2\": \"EG\",\n \"name\": \"Egypt\",\n \"prefix\": \"20\"\n}, {\n \"iso2\": \"SV\",\n \"name\": \"El Salvador\",\n \"prefix\": \"503\"\n}, {\n \"iso2\": \"GQ\",\n \"name\": \"Equatorial Guinea\",\n \"prefix\": \"240\"\n}, {\n \"iso2\": \"ER\",\n \"name\": \"Eritrea\",\n \"prefix\": \"291\"\n}, {\n \"iso2\": \"EE\",\n \"name\": \"Estonia\",\n \"prefix\": \"372\"\n}, {\n \"iso2\": \"ET\",\n \"name\": \"Ethiopia\",\n \"prefix\": \"251\"\n}, {\n \"iso2\": \"FK\",\n \"name\": \"Falkland Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"FO\",\n \"name\": \"Faroe Islands\",\n \"prefix\": \"298\"\n}, {\n \"iso2\": \"FJ\",\n \"name\": \"Fiji\",\n \"prefix\": \"679\"\n}, {\n \"iso2\": \"FI\",\n \"name\": \"Finland\",\n \"prefix\": \"358\"\n}, {\n \"iso2\": \"FR\",\n \"name\": \"France\",\n \"prefix\": \"33\"\n}, {\n \"iso2\": \"GF\",\n \"name\": \"French Guiana\",\n \"prefix\": \"594\"\n}, {\n \"iso2\": \"PF\",\n \"name\": \"French Polynesia\",\n \"prefix\": \"689\"\n}, {\n \"iso2\": \"TF\",\n \"name\": \"French Southern Territories\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"GA\",\n \"name\": \"Gabon\",\n \"prefix\": \"241\"\n}, {\n \"iso2\": \"GM\",\n \"name\": \"Gambia\",\n \"prefix\": \"220\"\n}, {\n \"iso2\": \"GE\",\n \"name\": \"Georgia\",\n \"prefix\": \"995\"\n}, {\n \"iso2\": \"DE\",\n \"name\": \"Germany\",\n \"prefix\": \"49\"\n}, {\n \"iso2\": \"GH\",\n \"name\": \"Ghana\",\n \"prefix\": \"233\"\n}, {\n \"iso2\": \"GI\",\n \"name\": \"Gibraltar\",\n \"prefix\": \"350\"\n}, {\n \"iso2\": \"GR\",\n \"name\": \"Greece\",\n \"prefix\": \"30\"\n}, {\n \"iso2\": \"GL\",\n \"name\": \"Greenland\",\n \"prefix\": \"299\"\n}, {\n \"iso2\": \"GD\",\n \"name\": \"Grenada\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GP\",\n \"name\": \"Guadeloupe\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"GU\",\n \"name\": \"Guam\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"GT\",\n \"name\": \"Guatemala\",\n \"prefix\": \"502\"\n}, {\n \"iso2\": \"GG\",\n \"name\": \"Guernsey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"GN\",\n \"name\": \"Guinea\",\n \"prefix\": \"224\"\n}, {\n \"iso2\": \"GW\",\n \"name\": \"Guinea-Bissau\",\n \"prefix\": \"245\"\n}, {\n \"iso2\": \"GY\",\n \"name\": \"Guyana\",\n \"prefix\": \"592\"\n}, {\n \"iso2\": \"HT\",\n \"name\": \"Haiti\",\n \"prefix\": \"509\"\n}, {\n \"iso2\": \"HM\",\n \"name\": \"Heard & McDonald Islands\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"HN\",\n \"name\": \"Honduras\",\n \"prefix\": \"504\"\n}, {\n \"iso2\": \"HK\",\n \"name\": \"Hong Kong\",\n \"prefix\": \"852\"\n}, {\n \"iso2\": \"HU\",\n \"name\": \"Hungary\",\n \"prefix\": \"36\"\n}, {\n \"iso2\": \"IS\",\n \"name\": \"Iceland\",\n \"prefix\": \"354\"\n}, {\n \"iso2\": \"IN\",\n \"name\": \"India\",\n \"prefix\": \"91\"\n}, {\n \"iso2\": \"ID\",\n \"name\": \"Indonesia\",\n \"prefix\": \"62\"\n}, {\n \"iso2\": \"IR\",\n \"name\": \"Iran\",\n \"prefix\": \"98\"\n}, {\n \"iso2\": \"IQ\",\n \"name\": \"Iraq\",\n \"prefix\": \"964\"\n}, {\n \"iso2\": \"IE\",\n \"name\": \"Ireland\",\n \"prefix\": \"353\"\n}, {\n \"iso2\": \"IM\",\n \"name\": \"Isle of Man\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"IL\",\n \"name\": \"Israel\",\n \"prefix\": \"972\"\n}, {\n \"iso2\": \"IT\",\n \"name\": \"Italy\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"JM\",\n \"name\": \"Jamaica\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"JP\",\n \"name\": \"Japan\",\n \"prefix\": \"81\"\n}, {\n \"iso2\": \"JE\",\n \"name\": \"Jersey\",\n \"prefix\": \"44\"\n}, {\n \"iso2\": \"JO\",\n \"name\": \"Jordan\",\n \"prefix\": \"962\"\n}, {\n \"iso2\": \"KZ\",\n \"name\": \"Kazakhstan\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"KE\",\n \"name\": \"Kenya\",\n \"prefix\": \"254\"\n}, {\n \"iso2\": \"KI\",\n \"name\": \"Kiribati\",\n \"prefix\": \"686\"\n}, {\n \"iso2\": \"KW\",\n \"name\": \"Kuwait\",\n \"prefix\": \"965\"\n}, {\n \"iso2\": \"KG\",\n \"name\": \"Kyrgyzstan\",\n \"prefix\": \"996\"\n}, {\n \"iso2\": \"LA\",\n \"name\": \"Laos\",\n \"prefix\": \"856\"\n}, {\n \"iso2\": \"LV\",\n \"name\": \"Latvia\",\n \"prefix\": \"371\"\n}, {\n \"iso2\": \"LB\",\n \"name\": \"Lebanon\",\n \"prefix\": \"961\"\n}, {\n \"iso2\": \"LS\",\n \"name\": \"Lesotho\",\n \"prefix\": \"266\"\n}, {\n \"iso2\": \"LR\",\n \"name\": \"Liberia\",\n \"prefix\": \"231\"\n}, {\n \"iso2\": \"LY\",\n \"name\": \"Libya\",\n \"prefix\": \"218\"\n}, {\n \"iso2\": \"LI\",\n \"name\": \"Liechtenstein\",\n \"prefix\": \"423\"\n}, {\n \"iso2\": \"LT\",\n \"name\": \"Lithuania\",\n \"prefix\": \"370\"\n}, {\n \"iso2\": \"LU\",\n \"name\": \"Luxembourg\",\n \"prefix\": \"352\"\n}, {\n \"iso2\": \"MO\",\n \"name\": \"Macau\",\n \"prefix\": \"853\"\n}, {\n \"iso2\": \"MK\",\n \"name\": \"Macedonia\",\n \"prefix\": \"389\"\n}, {\n \"iso2\": \"MG\",\n \"name\": \"Madagascar\",\n \"prefix\": \"261\"\n}, {\n \"iso2\": \"MW\",\n \"name\": \"Malawi\",\n \"prefix\": \"265\"\n}, {\n \"iso2\": \"MY\",\n \"name\": \"Malaysia\",\n \"prefix\": \"60\"\n}, {\n \"iso2\": \"MV\",\n \"name\": \"Maldives\",\n \"prefix\": \"960\"\n}, {\n \"iso2\": \"ML\",\n \"name\": \"Mali\",\n \"prefix\": \"223\"\n}, {\n \"iso2\": \"MT\",\n \"name\": \"Malta\",\n \"prefix\": \"356\"\n}, {\n \"iso2\": \"MH\",\n \"name\": \"Marshall Islands\",\n \"prefix\": \"692\"\n}, {\n \"iso2\": \"MQ\",\n \"name\": \"Martinique\",\n \"prefix\": \"596\"\n}, {\n \"iso2\": \"MR\",\n \"name\": \"Mauritania\",\n \"prefix\": \"222\"\n}, {\n \"iso2\": \"MU\",\n \"name\": \"Mauritius\",\n \"prefix\": \"230\"\n}, {\n \"iso2\": \"YT\",\n \"name\": \"Mayotte\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"MX\",\n \"name\": \"Mexico\",\n \"prefix\": \"52\"\n}, {\n \"iso2\": \"FM\",\n \"name\": \"Micronesia\",\n \"prefix\": \"691\"\n}, {\n \"iso2\": \"MD\",\n \"name\": \"Moldova\",\n \"prefix\": \"373\"\n}, {\n \"iso2\": \"MC\",\n \"name\": \"Monaco\",\n \"prefix\": \"377\"\n}, {\n \"iso2\": \"MN\",\n \"name\": \"Mongolia\",\n \"prefix\": \"976\"\n}, {\n \"iso2\": \"ME\",\n \"name\": \"Montenegro\",\n \"prefix\": \"382\"\n}, {\n \"iso2\": \"MS\",\n \"name\": \"Montserrat\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MA\",\n \"name\": \"Morocco\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"MZ\",\n \"name\": \"Mozambique\",\n \"prefix\": \"258\"\n}, {\n \"iso2\": \"MM\",\n \"name\": \"Myanmar\",\n \"prefix\": \"95\"\n}, {\n \"iso2\": \"NA\",\n \"name\": \"Namibia\",\n \"prefix\": \"264\"\n}, {\n \"iso2\": \"NR\",\n \"name\": \"Nauru\",\n \"prefix\": \"674\"\n}, {\n \"iso2\": \"NP\",\n \"name\": \"Nepal\",\n \"prefix\": \"977\"\n}, {\n \"iso2\": \"NL\",\n \"name\": \"Netherlands\",\n \"prefix\": \"31\"\n}, {\n \"iso2\": \"NC\",\n \"name\": \"New Caledonia\",\n \"prefix\": \"687\"\n}, {\n \"iso2\": \"NZ\",\n \"name\": \"New Zealand\",\n \"prefix\": \"64\"\n}, {\n \"iso2\": \"NI\",\n \"name\": \"Nicaragua\",\n \"prefix\": \"505\"\n}, {\n \"iso2\": \"NE\",\n \"name\": \"Niger\",\n \"prefix\": \"227\"\n}, {\n \"iso2\": \"NG\",\n \"name\": \"Nigeria\",\n \"prefix\": \"234\"\n}, {\n \"iso2\": \"NU\",\n \"name\": \"Niue\",\n \"prefix\": \"683\"\n}, {\n \"iso2\": \"NF\",\n \"name\": \"Norfolk Island\",\n \"prefix\": \"672\"\n}, {\n \"iso2\": \"KP\",\n \"name\": \"North Korea\",\n \"prefix\": \"850\"\n}, {\n \"iso2\": \"MP\",\n \"name\": \"Northern Mariana Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"NO\",\n \"name\": \"Norway\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"OM\",\n \"name\": \"Oman\",\n \"prefix\": \"968\"\n}, {\n \"iso2\": \"PK\",\n \"name\": \"Pakistan\",\n \"prefix\": \"92\"\n}, {\n \"iso2\": \"PW\",\n \"name\": \"Palau\",\n \"prefix\": \"680\"\n}, {\n \"iso2\": \"PS\",\n \"name\": \"Palestine\",\n \"prefix\": \"970\"\n}, {\n \"iso2\": \"PA\",\n \"name\": \"Panama\",\n \"prefix\": \"507\"\n}, {\n \"iso2\": \"PG\",\n \"name\": \"Papua New Guinea\",\n \"prefix\": \"675\"\n}, {\n \"iso2\": \"PY\",\n \"name\": \"Paraguay\",\n \"prefix\": \"595\"\n}, {\n \"iso2\": \"PE\",\n \"name\": \"Peru\",\n \"prefix\": \"51\"\n}, {\n \"iso2\": \"PH\",\n \"name\": \"Philippines\",\n \"prefix\": \"63\"\n}, {\n \"iso2\": \"PN\",\n \"name\": \"Pitcairn Islands\",\n \"prefix\": \"870\"\n}, {\n \"iso2\": \"PL\",\n \"name\": \"Poland\",\n \"prefix\": \"48\"\n}, {\n \"iso2\": \"PT\",\n \"name\": \"Portugal\",\n \"prefix\": \"351\"\n}, {\n \"iso2\": \"PR\",\n \"name\": \"Puerto Rico\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"QA\",\n \"name\": \"Qatar\",\n \"prefix\": \"974\"\n}, {\n \"iso2\": \"RO\",\n \"name\": \"Romania\",\n \"prefix\": \"40\"\n}, {\n \"iso2\": \"RU\",\n \"name\": \"Russia\",\n \"prefix\": \"7\"\n}, {\n \"iso2\": \"RW\",\n \"name\": \"Rwanda\",\n \"prefix\": \"250\"\n}, {\n \"iso2\": \"RE\",\n \"name\": \"R\\xE9union\",\n \"prefix\": \"262\"\n}, {\n \"iso2\": \"WS\",\n \"name\": \"Samoa\",\n \"prefix\": \"685\"\n}, {\n \"iso2\": \"SM\",\n \"name\": \"San Marino\",\n \"prefix\": \"378\"\n}, {\n \"iso2\": \"SA\",\n \"name\": \"Saudi Arabia\",\n \"prefix\": \"966\"\n}, {\n \"iso2\": \"SN\",\n \"name\": \"Senegal\",\n \"prefix\": \"221\"\n}, {\n \"iso2\": \"RS\",\n \"name\": \"Serbia\",\n \"prefix\": \"381 p\"\n}, {\n \"iso2\": \"SC\",\n \"name\": \"Seychelles\",\n \"prefix\": \"248\"\n}, {\n \"iso2\": \"SL\",\n \"name\": \"Sierra Leone\",\n \"prefix\": \"232\"\n}, {\n \"iso2\": \"SG\",\n \"name\": \"Singapore\",\n \"prefix\": \"65\"\n}, {\n \"iso2\": \"SX\",\n \"name\": \"Sint Maarten\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SK\",\n \"name\": \"Slovakia\",\n \"prefix\": \"421\"\n}, {\n \"iso2\": \"SI\",\n \"name\": \"Slovenia\",\n \"prefix\": \"386\"\n}, {\n \"iso2\": \"SB\",\n \"name\": \"Solomon Islands\",\n \"prefix\": \"677\"\n}, {\n \"iso2\": \"SO\",\n \"name\": \"Somalia\",\n \"prefix\": \"252\"\n}, {\n \"iso2\": \"ZA\",\n \"name\": \"South Africa\",\n \"prefix\": \"27\"\n}, {\n \"iso2\": \"GS\",\n \"name\": \"South Georgia & South Sandwich Islands\",\n \"prefix\": \"500\"\n}, {\n \"iso2\": \"KR\",\n \"name\": \"South Korea\",\n \"prefix\": \"82\"\n}, {\n \"iso2\": \"SS\",\n \"name\": \"South Sudan\",\n \"prefix\": \"211\"\n}, {\n \"iso2\": \"ES\",\n \"name\": \"Spain\",\n \"prefix\": \"34\"\n}, {\n \"iso2\": \"LK\",\n \"name\": \"Sri Lanka\",\n \"prefix\": \"94\"\n}, {\n \"iso2\": \"BL\",\n \"name\": \"St. Barth\\xE9lemy\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"SH\",\n \"name\": \"St. Helena\",\n \"prefix\": \"290 n\"\n}, {\n \"iso2\": \"KN\",\n \"name\": \"St. Kitts & Nevis\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"LC\",\n \"name\": \"St. Lucia\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"MF\",\n \"name\": \"St. Martin\",\n \"prefix\": \"590\"\n}, {\n \"iso2\": \"PM\",\n \"name\": \"St. Pierre & Miquelon\",\n \"prefix\": \"508\"\n}, {\n \"iso2\": \"VC\",\n \"name\": \"St. Vincent & Grenadines\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"SD\",\n \"name\": \"Sudan\",\n \"prefix\": \"249\"\n}, {\n \"iso2\": \"SR\",\n \"name\": \"Suriname\",\n \"prefix\": \"597\"\n}, {\n \"iso2\": \"SJ\",\n \"name\": \"Svalbard & Jan Mayen\",\n \"prefix\": \"47\"\n}, {\n \"iso2\": \"SZ\",\n \"name\": \"Swaziland\",\n \"prefix\": \"268\"\n}, {\n \"iso2\": \"SE\",\n \"name\": \"Sweden\",\n \"prefix\": \"46\"\n}, {\n \"iso2\": \"CH\",\n \"name\": \"Switzerland\",\n \"prefix\": \"41\"\n}, {\n \"iso2\": \"SY\",\n \"name\": \"Syria\",\n \"prefix\": \"963\"\n}, {\n \"iso2\": \"ST\",\n \"name\": \"S\\xE3o Tom\\xE9 & Pr\\xEDncipe\",\n \"prefix\": \"239\"\n}, {\n \"iso2\": \"TW\",\n \"name\": \"Taiwan\",\n \"prefix\": \"886\"\n}, {\n \"iso2\": \"TJ\",\n \"name\": \"Tajikistan\",\n \"prefix\": \"992\"\n}, {\n \"iso2\": \"TZ\",\n \"name\": \"Tanzania\",\n \"prefix\": \"255\"\n}, {\n \"iso2\": \"TH\",\n \"name\": \"Thailand\",\n \"prefix\": \"66\"\n}, {\n \"iso2\": \"TL\",\n \"name\": \"Timor-Leste\",\n \"prefix\": \"670\"\n}, {\n \"iso2\": \"TG\",\n \"name\": \"Togo\",\n \"prefix\": \"228\"\n}, {\n \"iso2\": \"TK\",\n \"name\": \"Tokelau\",\n \"prefix\": \"690\"\n}, {\n \"iso2\": \"TO\",\n \"name\": \"Tonga\",\n \"prefix\": \"676\"\n}, {\n \"iso2\": \"TT\",\n \"name\": \"Trinidad & Tobago\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TN\",\n \"name\": \"Tunisia\",\n \"prefix\": \"216\"\n}, {\n \"iso2\": \"TR\",\n \"name\": \"Turkey\",\n \"prefix\": \"90\"\n}, {\n \"iso2\": \"TM\",\n \"name\": \"Turkmenistan\",\n \"prefix\": \"993\"\n}, {\n \"iso2\": \"TC\",\n \"name\": \"Turks & Caicos Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"TV\",\n \"name\": \"Tuvalu\",\n \"prefix\": \"688\"\n}, {\n \"iso2\": \"VI\",\n \"name\": \"U.S. Virgin Islands\",\n \"prefix\": \"1\"\n}, {\n \"iso2\": \"UG\",\n \"name\": \"Uganda\",\n \"prefix\": \"256\"\n}, {\n \"iso2\": \"UA\",\n \"name\": \"Ukraine\",\n \"prefix\": \"380\"\n}, {\n \"iso2\": \"AE\",\n \"name\": \"United Arab Emirates\",\n \"prefix\": \"971\"\n}, {\n \"iso2\": \"UY\",\n \"name\": \"Uruguay\",\n \"prefix\": \"598\"\n}, {\n \"iso2\": \"UZ\",\n \"name\": \"Uzbekistan\",\n \"prefix\": \"998\"\n}, {\n \"iso2\": \"VU\",\n \"name\": \"Vanuatu\",\n \"prefix\": \"678\"\n}, {\n \"iso2\": \"VA\",\n \"name\": \"Vatican City\",\n \"prefix\": \"39\"\n}, {\n \"iso2\": \"VE\",\n \"name\": \"Venezuela\",\n \"prefix\": \"58\"\n}, {\n \"iso2\": \"VN\",\n \"name\": \"Vietnam\",\n \"prefix\": \"84\"\n}, {\n \"iso2\": \"WF\",\n \"name\": \"Wallis & Futuna\",\n \"prefix\": \"681\"\n}, {\n \"iso2\": \"EH\",\n \"name\": \"Western Sahara\",\n \"prefix\": \"212\"\n}, {\n \"iso2\": \"YE\",\n \"name\": \"Yemen\",\n \"prefix\": \"967\"\n}, {\n \"iso2\": \"ZM\",\n \"name\": \"Zambia\",\n \"prefix\": \"260\"\n}, {\n \"iso2\": \"ZW\",\n \"name\": \"Zimbabwe\",\n \"prefix\": \"263\"\n}];\n//# sourceMappingURL=phonenumber.js.map","module.exports = {\n\tMODE_NUMBER :\t\t1 << 0,\n\tMODE_ALPHA_NUM : \t1 << 1,\n\tMODE_8BIT_BYTE : \t1 << 2,\n\tMODE_KANJI :\t\t1 << 3\n};\n","module.exports = {\n\tL : 1,\n\tM : 0,\n\tQ : 3,\n\tH : 2\n};\n\n","var math = require('./math');\n\nfunction QRPolynomial(num, shift) {\n\n\tif (num.length == undefined) {\n\t\tthrow new Error(num.length + \"/\" + shift);\n\t}\n\n\tvar offset = 0;\n\n\twhile (offset < num.length && num[offset] == 0) {\n\t\toffset++;\n\t}\n\n\tthis.num = new Array(num.length - offset + shift);\n\tfor (var i = 0; i < num.length - offset; i++) {\n\t\tthis.num[i] = num[i + offset];\n\t}\n}\n\nQRPolynomial.prototype = {\n\n\tget : function(index) {\n\t\treturn this.num[index];\n\t},\n\t\n\tgetLength : function() {\n\t\treturn this.num.length;\n\t},\n\t\n\tmultiply : function(e) {\n\t\n\t\tvar num = new Array(this.getLength() + e.getLength() - 1);\n\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tfor (var j = 0; j < e.getLength(); j++) {\n\t\t\t\tnum[i + j] ^= math.gexp(math.glog(this.get(i) ) + math.glog(e.get(j) ) );\n\t\t\t}\n\t\t}\n\t\n\t\treturn new QRPolynomial(num, 0);\n\t},\n\t\n\tmod : function(e) {\n\t\n\t\tif (this.getLength() - e.getLength() < 0) {\n\t\t\treturn this;\n\t\t}\n\t\n\t\tvar ratio = math.glog(this.get(0) ) - math.glog(e.get(0) );\n\t\n\t\tvar num = new Array(this.getLength() );\n\t\t\n\t\tfor (var i = 0; i < this.getLength(); i++) {\n\t\t\tnum[i] = this.get(i);\n\t\t}\n\t\t\n\t\tfor (var i = 0; i < e.getLength(); i++) {\n\t\t\tnum[i] ^= math.gexp(math.glog(e.get(i) ) + ratio);\n\t\t}\n\t\n\t\t// recursive call\n\t\treturn new QRPolynomial(num, 0).mod(e);\n\t}\n};\n\nmodule.exports = QRPolynomial;\n","var QRMath = {\n\n\tglog : function(n) {\n\t\n\t\tif (n < 1) {\n\t\t\tthrow new Error(\"glog(\" + n + \")\");\n\t\t}\n\t\t\n\t\treturn QRMath.LOG_TABLE[n];\n\t},\n\t\n\tgexp : function(n) {\n\t\n\t\twhile (n < 0) {\n\t\t\tn += 255;\n\t\t}\n\t\n\t\twhile (n >= 256) {\n\t\t\tn -= 255;\n\t\t}\n\t\n\t\treturn QRMath.EXP_TABLE[n];\n\t},\n\t\n\tEXP_TABLE : new Array(256),\n\t\n\tLOG_TABLE : new Array(256)\n\n};\n\t\nfor (var i = 0; i < 8; i++) {\n\tQRMath.EXP_TABLE[i] = 1 << i;\n}\nfor (var i = 8; i < 256; i++) {\n\tQRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4]\n\t\t^ QRMath.EXP_TABLE[i - 5]\n\t\t^ QRMath.EXP_TABLE[i - 6]\n\t\t^ QRMath.EXP_TABLE[i - 8];\n}\nfor (var i = 0; i < 255; i++) {\n\tQRMath.LOG_TABLE[QRMath.EXP_TABLE[i] ] = i;\n}\n\nmodule.exports = QRMath;\n","'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\nvar GeminiScrollbar = require('gemini-scrollbar');\n\nmodule.exports = React.createClass({\n displayName: 'GeminiScrollbar',\n\n propTypes: {\n autoshow: React.PropTypes.bool,\n forceGemini: React.PropTypes.bool,\n onResize: React.PropTypes.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n autoshow: false,\n forceGemini: false\n };\n },\n\n\n /**\n * Holds the reference to the GeminiScrollbar instance.\n * @property scrollbar <public> [Object]\n */\n scrollbar: null,\n\n componentDidMount: function componentDidMount() {\n this.scrollbar = new GeminiScrollbar({\n element: ReactDOM.findDOMNode(this),\n autoshow: this.props.autoshow,\n forceGemini: this.props.forceGemini,\n createElements: false,\n onResize: this.props.onResize\n }).create();\n },\n componentDidUpdate: function componentDidUpdate() {\n this.scrollbar.update();\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this.scrollbar) {\n this.scrollbar.destroy();\n }\n this.scrollbar = null;\n },\n render: function render() {\n var _props = this.props;\n var className = _props.className;\n var children = _props.children;\n var autoshow = _props.autoshow;\n var forceGemini = _props.forceGemini;\n var onResize = _props.onResize;\n var other = _objectWithoutProperties(_props, ['className', 'children', 'autoshow', 'forceGemini', 'onResize']);\n var classes = '';\n\n if (className) {\n classes += ' ' + className;\n }\n\n return React.createElement(\n 'div',\n _extends({}, other, { className: classes }),\n React.createElement(\n 'div',\n { className: 'gm-scrollbar -vertical' },\n React.createElement('div', { className: 'thumb' })\n ),\n React.createElement(\n 'div',\n { className: 'gm-scrollbar -horizontal' },\n React.createElement('div', { className: 'thumb' })\n ),\n React.createElement(\n 'div',\n { className: 'gm-scroll-view', ref: 'scroll-view' },\n children\n )\n );\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppPermission = function (_React$Component) {\n (0, _inherits3.default)(AppPermission, _React$Component);\n\n function AppPermission(props) {\n (0, _classCallCheck3.default)(this, AppPermission);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (AppPermission.__proto__ || (0, _getPrototypeOf2.default)(AppPermission)).call(this, props));\n\n var curlBase = _this.getCurlBase();\n _this.state = { curlBase: curlBase };\n return _this;\n }\n\n // Return string representation of content URL without query parameters\n\n\n (0, _createClass3.default)(AppPermission, [{\n key: 'getCurlBase',\n value: function getCurlBase() {\n var wurl = _url2.default.parse(this.props.url);\n var curl = void 0;\n var curlString = void 0;\n\n var searchParams = new URLSearchParams(wurl.search);\n\n if (_WidgetUtils2.default.isScalarUrl(wurl) && searchParams && searchParams.get('url')) {\n curl = _url2.default.parse(searchParams.get('url'));\n if (curl) {\n curl.search = curl.query = \"\";\n curlString = curl.format();\n }\n }\n if (!curl && wurl) {\n wurl.search = wurl.query = \"\";\n curlString = wurl.format();\n }\n return curlString;\n }\n }, {\n key: 'render',\n value: function render() {\n var e2eWarningText = void 0;\n if (this.props.isRoomEncrypted) {\n e2eWarningText = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('NOTE: Apps are not end-to-end encrypted')\n );\n }\n var cookieWarning = _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Warning: This widget might use cookies.')\n );\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: 'img/warning.svg', alt: (0, _languageHandler._t)('Warning!') })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n (0, _languageHandler._t)('Do you want to load widget from URL:')\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextURL' },\n this.state.curlBase\n ),\n e2eWarningText,\n cookieWarning\n ),\n _react2.default.createElement('input', {\n className: 'mx_AppPermissionButton',\n type: 'button',\n value: (0, _languageHandler._t)('Allow'),\n onClick: this.props.onPermissionGranted\n })\n );\n }\n }]);\n return AppPermission;\n}(_react2.default.Component);\n\nexports.default = AppPermission;\n\n\nAppPermission.propTypes = {\n isRoomEncrypted: _propTypes2.default.bool,\n url: _propTypes2.default.string.isRequired,\n onPermissionGranted: _propTypes2.default.func.isRequired\n};\nAppPermission.defaultProps = {\n isRoomEncrypted: false,\n onPermissionGranted: function onPermissionGranted() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppPermission.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _TintableSvg = require('./TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TintableSvgButton = function (_React$Component) {\n (0, _inherits3.default)(TintableSvgButton, _React$Component);\n\n function TintableSvgButton(props) {\n (0, _classCallCheck3.default)(this, TintableSvgButton);\n return (0, _possibleConstructorReturn3.default)(this, (TintableSvgButton.__proto__ || (0, _getPrototypeOf2.default)(TintableSvgButton)).call(this, props));\n }\n\n (0, _createClass3.default)(TintableSvgButton, [{\n key: 'render',\n value: function render() {\n var classes = \"mx_TintableSvgButton\";\n if (this.props.className) {\n classes += \" \" + this.props.className;\n }\n return _react2.default.createElement(\n 'span',\n {\n width: this.props.width,\n height: this.props.height,\n className: classes },\n _react2.default.createElement(_TintableSvg2.default, {\n src: this.props.src,\n width: this.props.width,\n height: this.props.height\n }),\n _react2.default.createElement(_AccessibleButton2.default, {\n onClick: this.props.onClick,\n element: 'span',\n title: this.props.title\n })\n );\n }\n }]);\n return TintableSvgButton;\n}(_react2.default.Component);\n\nexports.default = TintableSvgButton;\n\n\nTintableSvgButton.propTypes = {\n src: _propTypes2.default.string,\n title: _propTypes2.default.string,\n className: _propTypes2.default.string,\n width: _propTypes2.default.string.isRequired,\n height: _propTypes2.default.string.isRequired,\n onClick: _propTypes2.default.func\n};\n\nTintableSvgButton.defaultProps = {\n onClick: function onClick() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=TintableSvgButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar AppWarning = function AppWarning(props) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarning' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningImage' },\n _react2.default.createElement('img', { src: 'img/warning.svg', alt: '' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_AppPermissionWarningText' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_AppPermissionWarningTextLabel' },\n props.errorMsg\n )\n )\n );\n}; // eslint-disable-line no-unused-vars\n\n\nAppWarning.propTypes = {\n errorMsg: _propTypes2.default.string\n};\nAppWarning.defaultProps = {\n errorMsg: 'Error'\n};\n\nexports.default = AppWarning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=AppWarning.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MessageSpinner',\n\n render: function render() {\n var w = this.props.w || 32;\n var h = this.props.h || 32;\n var imgClass = this.props.imgClassName || \"\";\n var msg = this.props.msg || \"Loading...\";\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Spinner_Msg' },\n msg\n ),\n '\\xA0',\n _react2.default.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=MessageSpinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// A class for a child of TagPanel (possibly wrapped in a DNDTagTile) that represents\n// a thing to click on for the user to filter the visible rooms in the RoomList to:\n// - Rooms that are part of the group\n// - Direct messages with members of the group\n// with the intention that this could be expanded to arbitrary tags in future.\n/*\nCopyright 2017 New Vector Ltd.\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'TagTile',\n\n propTypes: {\n // A string tag such as \"m.favourite\" or a group ID such as \"+groupid:domain.bla\"\n // For now, only group IDs are handled.\n tag: _propTypes2.default.string\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n // Whether the mouse is over the tile\n hover: false,\n // The profile data of the group if this.props.tag is a group ID\n profile: null\n };\n },\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.addListener('updateGroupProfile', this._onFlairStoreUpdated);\n this._onFlairStoreUpdated();\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n if (this.props.tag[0] === '+') {\n _FlairStore2.default.removeListener('updateGroupProfile', this._onFlairStoreUpdated);\n }\n },\n _onFlairStoreUpdated: function _onFlairStoreUpdated() {\n var _this = this;\n\n if (this.unmounted) return;\n _FlairStore2.default.getGroupProfileCached(this.context.matrixClient, this.props.tag).then(function (profile) {\n if (_this.unmounted) return;\n _this.setState({ profile: profile });\n }).catch(function (err) {\n console.warn('Could not fetch group profile for ' + _this.props.tag, err);\n });\n },\n _refreshGroup: function _refreshGroup(groupId) {\n _GroupStore2.default.refreshGroupRooms(groupId);\n _GroupStore2.default.refreshGroupMembers(groupId);\n },\n\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'select_tag',\n tag: this.props.tag,\n ctrlOrCmdKey: (0, _Keyboard.isOnlyCtrlOrCmdIgnoreShiftKeyEvent)(e),\n shiftKey: e.shiftKey\n });\n if (this.props.tag[0] === '+') {\n // New rooms or members may have been added to the group, fetch async\n this._refreshGroup(this.props.tag);\n }\n },\n\n _openContextMenu: function _openContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n // Hide the (...) immediately\n this.setState({ hover: false });\n\n var TagTileContextMenu = _index2.default.getComponent('context_menus.TagTileContextMenu');\n ContextualMenu.createMenu(TagTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n tag: this.props.tag,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextButtonClick: function onContextButtonClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._openContextMenu(x, y, chevronOffset);\n },\n\n onContextMenu: function onContextMenu(e) {\n e.preventDefault();\n\n var chevronOffset = 12;\n this._openContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n onMouseOver: function onMouseOver() {\n this.setState({ hover: true });\n },\n\n onMouseOut: function onMouseOut() {\n this.setState({ hover: false });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var RoomTooltip = _index2.default.getComponent('rooms.RoomTooltip');\n var profile = this.state.profile || {};\n var name = profile.name || this.props.tag;\n var avatarHeight = 35;\n\n var httpUrl = profile.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(profile.avatarUrl, avatarHeight, avatarHeight, \"crop\") : null;\n\n var className = (0, _classnames2.default)({\n mx_TagTile: true,\n mx_TagTile_selected: this.props.selected\n });\n\n var tip = this.state.hover ? _react2.default.createElement(RoomTooltip, { className: 'mx_TagTile_tooltip', label: name }) : _react2.default.createElement('div', null);\n var contextButton = this.state.hover || this.state.menuDisplayed ? _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_context_button', onClick: this.onContextButtonClick },\n '\\xB7\\xB7\\xB7'\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n AccessibleButton,\n { className: className, onClick: this.onClick, onContextMenu: this.onContextMenu },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTile_avatar', onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: this.props.tag,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight\n }),\n tip,\n contextButton\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagTile.js.map","/*\n Copyright 2017 New Vector Ltd.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar FlairAvatar = function (_React$Component) {\n (0, _inherits3.default)(FlairAvatar, _React$Component);\n\n function FlairAvatar() {\n (0, _classCallCheck3.default)(this, FlairAvatar);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (FlairAvatar.__proto__ || (0, _getPrototypeOf2.default)(FlairAvatar)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(FlairAvatar, [{\n key: 'onClick',\n value: function onClick(ev) {\n ev.preventDefault();\n // Don't trigger onClick of parent element\n ev.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.groupProfile.groupId\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var httpUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupProfile.avatarUrl, 16, 16, 'scale', false);\n var tooltip = this.props.groupProfile.name ? this.props.groupProfile.name + ' (' + this.props.groupProfile.groupId + ')' : this.props.groupProfile.groupId;\n return _react2.default.createElement('img', {\n src: httpUrl,\n width: '16',\n height: '16',\n onClick: this.onClick,\n title: tooltip });\n }\n }]);\n return FlairAvatar;\n}(_react2.default.Component);\n\nFlairAvatar.propTypes = {\n groupProfile: _propTypes2.default.shape({\n groupId: _propTypes2.default.string.isRequired,\n name: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string.isRequired\n })\n};\n\nFlairAvatar.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\n\nvar Flair = function (_React$Component2) {\n (0, _inherits3.default)(Flair, _React$Component2);\n\n function Flair() {\n (0, _classCallCheck3.default)(this, Flair);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Flair.__proto__ || (0, _getPrototypeOf2.default)(Flair)).call(this));\n\n _this2.state = {\n profiles: []\n };\n return _this2;\n }\n\n (0, _createClass3.default)(Flair, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._unmounted = false;\n this._generateAvatars(this.props.groups);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps) {\n this._generateAvatars(newProps.groups);\n }\n }, {\n key: '_getGroupProfiles',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(groups) {\n var profiles, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, groupId, groupProfile;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n profiles = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 4;\n _iterator = (0, _getIterator3.default)(groups);\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context.next = 22;\n break;\n }\n\n groupId = _step.value;\n groupProfile = null;\n _context.prev = 9;\n _context.next = 12;\n return (0, _bluebird.resolve)(_FlairStore2.default.getGroupProfileCached(this.context.matrixClient, groupId));\n\n case 12:\n groupProfile = _context.sent;\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context['catch'](9);\n\n console.error('Could not get profile for group', groupId, _context.t0);\n\n case 18:\n profiles.push(groupProfile);\n\n case 19:\n _iteratorNormalCompletion = true;\n _context.next = 6;\n break;\n\n case 22:\n _context.next = 28;\n break;\n\n case 24:\n _context.prev = 24;\n _context.t1 = _context['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context.t1;\n\n case 28:\n _context.prev = 28;\n _context.prev = 29;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 31:\n _context.prev = 31;\n\n if (!_didIteratorError) {\n _context.next = 34;\n break;\n }\n\n throw _iteratorError;\n\n case 34:\n return _context.finish(31);\n\n case 35:\n return _context.finish(28);\n\n case 36:\n return _context.abrupt('return', profiles.filter(function (p) {\n return p !== null;\n }));\n\n case 37:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 24, 28, 36], [9, 15], [29,, 31, 35]]);\n }));\n\n function _getGroupProfiles(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _getGroupProfiles;\n }()\n }, {\n key: '_generateAvatars',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(groups) {\n var profiles;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(!groups || groups.length === 0)) {\n _context2.next = 2;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 2:\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._getGroupProfiles(groups));\n\n case 4:\n profiles = _context2.sent;\n\n if (!this.unmounted) {\n this.setState({\n profiles: profiles.filter(function (profile) {\n return profile ? profile.avatarUrl : false;\n })\n });\n }\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _generateAvatars(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return _generateAvatars;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.profiles.length === 0) {\n return _react2.default.createElement('div', null);\n }\n var avatars = this.state.profiles.map(function (profile, index) {\n return _react2.default.createElement(FlairAvatar, { key: index, groupProfile: profile });\n });\n return _react2.default.createElement(\n 'span',\n { className: 'mx_Flair' },\n avatars\n );\n }\n }]);\n return Flair;\n}(_react2.default.Component);\n\nexports.default = Flair;\n\n\nFlair.propTypes = {\n groups: _propTypes2.default.arrayOf(_propTypes2.default.string)\n};\n\n// TODO: We've decided that all components should follow this pattern, which means removing withMatrixClient and using\n// this.context.matrixClient everywhere instead of this.props.matrixClient.\n// See https://github.com/vector-im/riot-web/issues/4951.\nFlair.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Flair.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _ScalarMessaging = require('../../../ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _TintableSvg = require('./TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ManageIntegsButton = function (_React$Component) {\n (0, _inherits3.default)(ManageIntegsButton, _React$Component);\n\n function ManageIntegsButton(props) {\n (0, _classCallCheck3.default)(this, ManageIntegsButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ManageIntegsButton.__proto__ || (0, _getPrototypeOf2.default)(ManageIntegsButton)).call(this, props));\n\n _this.state = {\n scalarError: null\n };\n\n _this.onManageIntegrations = _this.onManageIntegrations.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(ManageIntegsButton, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n _ScalarMessaging2.default.startListening();\n this.scalarClient = null;\n\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().done(function () {\n _this2.forceUpdate();\n }, function (err) {\n _this2.setState({ scalarError: err });\n console.error('Error whilst initialising scalarClient for ManageIntegsButton', err);\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _ScalarMessaging2.default.stopListening();\n }\n }, {\n key: 'onManageIntegrations',\n value: function onManageIntegrations(ev) {\n ev.preventDefault();\n if (this.state.scalarError && !this.scalarClient.hasCredentials()) {\n return;\n }\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n _Modal2.default.createDialog(IntegrationsManager, {\n src: this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room) : null\n }, \"mx_IntegrationsManager\");\n }\n }, {\n key: 'render',\n value: function render() {\n var integrationsButton = _react2.default.createElement('div', null);\n var integrationsWarningTriangle = _react2.default.createElement('div', null);\n var integrationsErrorPopup = _react2.default.createElement('div', null);\n if (this.scalarClient !== null) {\n var integrationsButtonClasses = (0, _classnames2.default)({\n mx_RoomHeader_button: true,\n mx_RoomSettings_integrationsButton_error: !!this.state.scalarError\n });\n\n if (this.state.scalarError && !this.scalarClient.hasCredentials()) {\n integrationsWarningTriangle = _react2.default.createElement('img', { src: 'img/warning.svg', title: (0, _languageHandler._t)('Integrations Error'), width: '17' });\n // Popup shown when hovering over integrationsButton_error (via CSS)\n integrationsErrorPopup = _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_integrationsButton_errorPopup' },\n (0, _languageHandler._t)('Could not connect to the integration server')\n );\n }\n\n integrationsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: integrationsButtonClasses, onClick: this.onManageIntegrations, title: (0, _languageHandler._t)('Manage Integrations') },\n _react2.default.createElement(_TintableSvg2.default, { src: 'img/icons-apps.svg', width: '35', height: '35' }),\n integrationsWarningTriangle,\n integrationsErrorPopup\n );\n }\n\n return integrationsButton;\n }\n }]);\n return ManageIntegsButton;\n}(_react2.default.Component); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ManageIntegsButton;\n\n\nManageIntegsButton.propTypes = {\n room: _propTypes2.default.object.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ManageIntegsButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MImageBody = function (_React$Component) {\n (0, _inherits3.default)(MImageBody, _React$Component);\n\n function MImageBody(props) {\n (0, _classCallCheck3.default)(this, MImageBody);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MImageBody.__proto__ || (0, _getPrototypeOf2.default)(MImageBody)).call(this, props));\n\n _this.onImageError = _this.onImageError.bind(_this);\n _this.onImageLoad = _this.onImageLoad.bind(_this);\n _this.onImageEnter = _this.onImageEnter.bind(_this);\n _this.onImageLeave = _this.onImageLeave.bind(_this);\n _this.onClientSync = _this.onClientSync.bind(_this);\n _this.onClick = _this.onClick.bind(_this);\n _this._isGif = _this._isGif.bind(_this);\n\n _this.state = {\n decryptedUrl: null,\n decryptedThumbnailUrl: null,\n decryptedBlob: null,\n error: null,\n imgError: false,\n imgLoaded: false,\n loadedImageDimensions: null,\n hover: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(MImageBody, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n }\n\n // FIXME: factor this out and aplpy it to MVideoBody and MAudioBody too!\n\n }, {\n key: 'onClientSync',\n value: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected && this.state.imgError) {\n // Load the image again\n this.setState({\n imgError: false\n });\n }\n }\n }, {\n key: 'onClick',\n value: function onClick(ev) {\n if (ev.button === 0 && !ev.metaKey) {\n ev.preventDefault();\n var content = this.props.mxEvent.getContent();\n var httpUrl = this._getContentUrl();\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: content.body && content.body.length > 0 ? content.body : (0, _languageHandler._t)('Attachment'),\n mxEvent: this.props.mxEvent\n };\n\n if (content.info) {\n params.width = content.info.w;\n params.height = content.info.h;\n params.fileSize = content.info.size;\n }\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n }\n }\n }, {\n key: '_isGif',\n value: function _isGif() {\n var content = this.props.mxEvent.getContent();\n return content && content.info && content.info.mimetype === \"image/gif\";\n }\n }, {\n key: 'onImageEnter',\n value: function onImageEnter(e) {\n this.setState({ hover: true });\n\n if (!this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getContentUrl();\n }\n }, {\n key: 'onImageLeave',\n value: function onImageLeave(e) {\n this.setState({ hover: false });\n\n if (!this._isGif() || _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n return;\n }\n var imgElement = e.target;\n imgElement.src = this._getThumbUrl();\n }\n }, {\n key: 'onImageError',\n value: function onImageError() {\n this.setState({\n imgError: true\n });\n }\n }, {\n key: 'onImageLoad',\n value: function onImageLoad() {\n this.props.onWidgetLoad();\n\n var loadedImageDimensions = void 0;\n\n if (this.refs.image) {\n var _refs$image = this.refs.image,\n naturalWidth = _refs$image.naturalWidth,\n naturalHeight = _refs$image.naturalHeight;\n\n\n loadedImageDimensions = { naturalWidth: naturalWidth, naturalHeight: naturalHeight };\n }\n\n this.setState({ imgLoaded: true, loadedImageDimensions: loadedImageDimensions });\n }\n }, {\n key: '_getContentUrl',\n value: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return this.context.matrixClient.mxcUrlToHttp(content.url);\n }\n }\n }, {\n key: '_getThumbUrl',\n value: function _getThumbUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n // Don't use the thumbnail for clients wishing to autoplay gifs.\n if (this.state.decryptedThumbnailUrl) {\n return this.state.decryptedThumbnailUrl;\n }\n return this.state.decryptedUrl;\n } else if (content.info && content.info.mimetype === \"image/svg+xml\" && content.info.thumbnail_url) {\n // special case to return client-generated thumbnails for SVGs, if any,\n // given we deliberately don't thumbnail them serverside to prevent\n // billion lol attacks and similar\n return this.context.matrixClient.mxcUrlToHttp(content.info.thumbnail_url, 800, 600);\n } else {\n return this.context.matrixClient.mxcUrlToHttp(content.url, 800, 600);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var thumbnailPromise = _bluebird2.default.resolve(null);\n if (content.info && content.info.thumbnail_file) {\n thumbnailPromise = (0, _DecryptFile.decryptFile)(content.info.thumbnail_file).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n var decryptedBlob = void 0;\n thumbnailPromise.then(function (thumbnailUrl) {\n return (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(blob);\n }).then(function (contentUrl) {\n _this2.setState({\n decryptedUrl: contentUrl,\n decryptedThumbnailUrl: thumbnailUrl,\n decryptedBlob: decryptedBlob\n });\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n // Set a placeholder image when we can't decrypt the image.\n _this2.setState({\n error: err\n });\n }).done();\n }\n this._afterComponentDidMount();\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // initialisation after componentDidMount\n\n }, {\n key: '_afterComponentDidMount',\n value: function _afterComponentDidMount() {}\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n this._afterComponentWillUnmount();\n\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n if (this.state.decryptedThumbnailUrl) {\n URL.revokeObjectURL(this.state.decryptedThumbnailUrl);\n }\n }\n\n // To be overridden by subclasses (e.g. MStickerBody) for further\n // cleanup after componentWillUnmount\n\n }, {\n key: '_afterComponentWillUnmount',\n value: function _afterComponentWillUnmount() {}\n }, {\n key: '_messageContent',\n value: function _messageContent(contentUrl, thumbUrl, content) {\n var infoWidth = void 0;\n var infoHeight = void 0;\n\n if (content && content.info && content.info.w && content.info.h) {\n infoWidth = content.info.w;\n infoHeight = content.info.h;\n } else {\n // Whilst the image loads, display nothing.\n //\n // Once loaded, use the loaded image dimensions stored in `loadedImageDimensions`.\n //\n // By doing this, the image \"pops\" into the timeline, but is still restricted\n // by the same width and height logic below.\n if (!this.state.loadedImageDimensions) {\n return this.wrapImage(contentUrl, _react2.default.createElement('img', { style: { display: 'none' }, src: thumbUrl, ref: 'image',\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad\n }));\n }\n infoWidth = this.state.loadedImageDimensions.naturalWidth;\n infoHeight = this.state.loadedImageDimensions.naturalHeight;\n }\n\n // The maximum height of the thumbnail as it is rendered as an <img>\n var maxHeight = Math.min(this.props.maxImageHeight || 600, infoHeight);\n // The maximum width of the thumbnail, as dictated by its natural\n // maximum height.\n var maxWidth = infoWidth * maxHeight / infoHeight;\n\n var img = null;\n var placeholder = null;\n\n // e2e image hasn't been decrypted yet\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n placeholder = _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '32', height: '32' });\n } else if (!this.state.imgLoaded) {\n // Deliberately, getSpinner is left unimplemented here, MStickerBody overides\n placeholder = this.getPlaceholder();\n }\n\n var showPlaceholder = Boolean(placeholder);\n\n if (thumbUrl && !this.state.imgError) {\n // Restrict the width of the thumbnail here, otherwise it will fill the container\n // which has the same width as the timeline\n // mx_MImageBody_thumbnail resizes img to exactly container size\n img = _react2.default.createElement('img', { className: 'mx_MImageBody_thumbnail', src: thumbUrl, ref: 'image',\n style: { maxWidth: maxWidth + \"px\" },\n alt: content.body,\n onError: this.onImageError,\n onLoad: this.onImageLoad,\n onMouseEnter: this.onImageEnter,\n onMouseLeave: this.onImageLeave });\n }\n\n var thumbnail = _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_container', style: { maxHeight: maxHeight + \"px\" } },\n _react2.default.createElement('div', { style: { paddingBottom: 100 * infoHeight / infoWidth + '%' } }),\n showPlaceholder && _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail', style: {\n // Constrain width here so that spinner appears central to the loaded thumbnail\n maxWidth: infoWidth + \"px\"\n } },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail_spinner' },\n placeholder\n )\n ),\n _react2.default.createElement(\n 'div',\n { style: { display: !showPlaceholder ? undefined : 'none' } },\n img\n ),\n this.state.hover && this.getTooltip()\n );\n\n return this.wrapImage(contentUrl, thumbnail);\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'wrapImage',\n value: function wrapImage(contentUrl, children) {\n return _react2.default.createElement(\n 'a',\n { href: contentUrl, onClick: this.onClick },\n children\n );\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n // MImageBody doesn't show a placeholder whilst the image loads, (but it could do)\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getTooltip',\n value: function getTooltip() {\n return null;\n }\n\n // Overidden by MStickerBody\n\n }, {\n key: 'getFileBody',\n value: function getFileBody() {\n return _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }));\n }\n }, {\n key: 'render',\n value: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting image\")\n );\n }\n\n var contentUrl = this._getContentUrl();\n var thumbUrl = void 0;\n if (this._isGif() && _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\")) {\n thumbUrl = contentUrl;\n } else {\n thumbUrl = this._getThumbUrl();\n }\n\n var thumbnail = this._messageContent(contentUrl, thumbUrl, content);\n var fileBody = this.getFileBody();\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MImageBody', ref: 'body' },\n thumbnail,\n fileBody\n );\n }\n }]);\n return MImageBody;\n}(_react2.default.Component);\n\nMImageBody.propTypes = {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* called when the image has loaded */\n onWidgetLoad: _propTypes2.default.func.isRequired,\n\n /* the maximum image height to use */\n maxImageHeight: _propTypes2.default.number\n};\nMImageBody.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n};\nexports.default = MImageBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MImageBody.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'MessageEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* a list of words to highlight */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* callback called when dynamic content in events are loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string,\n\n /* the maximum image height to use, if the event is an image */\n maxImageHeight: _propTypes2.default.number\n },\n\n getEventTileOps: function getEventTileOps() {\n return this.refs.body && this.refs.body.getEventTileOps ? this.refs.body.getEventTileOps() : null;\n },\n\n render: function render() {\n var UnknownBody = sdk.getComponent('messages.UnknownBody');\n\n var bodyTypes = {\n 'm.text': sdk.getComponent('messages.TextualBody'),\n 'm.notice': sdk.getComponent('messages.TextualBody'),\n 'm.emote': sdk.getComponent('messages.TextualBody'),\n 'm.image': sdk.getComponent('messages.MImageBody'),\n 'm.file': sdk.getComponent('messages.MFileBody'),\n 'm.audio': sdk.getComponent('messages.MAudioBody'),\n 'm.video': sdk.getComponent('messages.MVideoBody')\n };\n var evTypes = {\n 'm.sticker': sdk.getComponent('messages.MStickerBody')\n };\n\n var content = this.props.mxEvent.getContent();\n var type = this.props.mxEvent.getType();\n var msgtype = content.msgtype;\n var BodyType = UnknownBody;\n if (!this.props.mxEvent.isRedacted()) {\n // only resolve BodyType if event is not redacted\n if (type && evTypes[type]) {\n BodyType = evTypes[type];\n } else if (msgtype && bodyTypes[msgtype]) {\n BodyType = bodyTypes[msgtype];\n } else if (content.url) {\n // Fallback to MFileBody if there's a content URL\n BodyType = bodyTypes['m.file'];\n }\n }\n\n return React.createElement(BodyType, {\n ref: 'body', mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n tileShape: this.props.tileShape,\n maxImageHeight: this.props.maxImageHeight,\n onWidgetLoad: this.props.onWidgetLoad });\n }\n});\n//# sourceMappingURL=MessageEvent.js.map","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _ScalarMessaging = require('../../../ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _WidgetEchoStore = require('../../../stores/WidgetEchoStore');\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The maximum number of widgets that can be added in a room\nvar MAX_WIDGETS = 2;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'AppsDrawer',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n room: _propTypes2.default.object.isRequired,\n showApps: _propTypes2.default.bool, // Should apps be rendered\n hide: _propTypes2.default.bool // If rendered, should apps drawer be visible\n },\n\n defaultProps: {\n showApps: true,\n hide: false\n },\n\n getInitialState: function getInitialState() {\n return {\n apps: this._getApps()\n };\n },\n\n componentWillMount: function componentWillMount() {\n _ScalarMessaging2.default.startListening();\n _MatrixClientPeg2.default.get().on('RoomState.events', this.onRoomStateEvents);\n _WidgetEchoStore2.default.on('update', this._updateApps);\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.scalarClient = null;\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().then(function () {\n _this.forceUpdate();\n }).catch(function (e) {\n console.log('Failed to connect to integrations server');\n // TODO -- Handle Scalar errors\n // this.setState({\n // scalar_error: err,\n // });\n });\n }\n\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _ScalarMessaging2.default.stopListening();\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener('RoomState.events', this.onRoomStateEvents);\n }\n _WidgetEchoStore2.default.removeListener('update', this._updateApps);\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // Room has changed probably, update apps\n this._updateApps();\n },\n\n\n onAction: function onAction(action) {\n var hideWidgetKey = this.props.room.roomId + '_hide_widget_drawer';\n switch (action.action) {\n case 'appsDrawer':\n if (action.show) {\n localStorage.removeItem(hideWidgetKey);\n } else {\n // Store hidden state of widget\n // Don't show if previously hidden\n localStorage.setItem(hideWidgetKey, true);\n }\n\n break;\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'im.vector.modular.widgets') {\n return;\n }\n this._updateApps();\n },\n\n _getApps: function _getApps() {\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room));\n return widgets.map(function (ev) {\n return _WidgetUtils2.default.makeAppConfig(ev.getStateKey(), ev.getContent(), ev.sender);\n });\n },\n\n _updateApps: function _updateApps() {\n var apps = this._getApps();\n this.setState({\n apps: apps\n });\n },\n\n _canUserModify: function _canUserModify() {\n try {\n return _WidgetUtils2.default.canUserModifyWidgets(this.props.room.roomId);\n } catch (err) {\n console.error(err);\n return false;\n }\n },\n\n _launchManageIntegrations: function _launchManageIntegrations() {\n var IntegrationsManager = _index2.default.getComponent('views.settings.IntegrationsManager');\n var src = this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'add_integ') : null;\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, 'mx_IntegrationsManager');\n },\n\n onClickAddWidget: function onClickAddWidget(e) {\n e.preventDefault();\n // Display a warning dialog if the max number of widgets have already been added to the room\n var apps = this._getApps();\n if (apps && apps.length >= MAX_WIDGETS) {\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n var errorMsg = 'The maximum number of ' + MAX_WIDGETS + ' widgets have already been added to this room.';\n console.error(errorMsg);\n _Modal2.default.createDialog(ErrorDialog, {\n title: (0, _languageHandler._t)('Cannot add any more widgets'),\n description: (0, _languageHandler._t)('The maximum permitted number of widgets have already been added to this room.')\n });\n return;\n }\n this._launchManageIntegrations();\n },\n\n render: function render() {\n var _this2 = this;\n\n var apps = this.state.apps.map(function (app, index, arr) {\n var capWhitelist = _WidgetUtils2.default.getCapWhitelistForAppTypeInRoomId(app.type, _this2.props.room.roomId);\n\n return _react2.default.createElement(_AppTile2.default, {\n key: app.id,\n id: app.id,\n url: app.url,\n name: app.name,\n type: app.type,\n fullWidth: arr.length < 2 ? true : false,\n room: _this2.props.room,\n userId: _this2.props.userId,\n show: _this2.props.showApps,\n creatorUserId: app.creatorUserId,\n widgetPageTitle: app.data && app.data.title ? app.data.title : '',\n waitForIframeLoad: app.waitForIframeLoad,\n whitelistCapabilities: capWhitelist\n });\n });\n\n var addWidget = void 0;\n if (this.props.showApps && this._canUserModify()) {\n addWidget = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n onClick: this.onClickAddWidget,\n className: this.state.apps.length < 2 ? 'mx_AddWidget_button mx_AddWidget_button_full_width' : 'mx_AddWidget_button',\n title: (0, _languageHandler._t)('Add a widget') },\n '[+] ',\n (0, _languageHandler._t)('Add a widget')\n );\n }\n\n var spinner = void 0;\n if (apps.length === 0 && _WidgetEchoStore2.default.roomHasPendingWidgets(this.props.room.roomId, _WidgetUtils2.default.getRoomWidgets(this.props.room))) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_AppsDrawer' + (this.props.hide ? ' mx_AppsDrawer_hidden' : '') },\n _react2.default.createElement(\n 'div',\n { id: 'apps', className: 'mx_AppsContainer' },\n apps,\n spinner\n ),\n this._canUserModify() && addWidget\n );\n }\n});\n//# sourceMappingURL=AppsDrawer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _flatMap = require('lodash/flatMap');\n\nvar _flatMap2 = _interopRequireDefault(_flatMap);\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Autocompleter = require('../../../autocomplete/Autocompleter');\n\nvar _Autocompleter2 = _interopRequireDefault(_Autocompleter);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMPOSER_SELECTED = 0;\n\nvar Autocomplete = function (_React$Component) {\n (0, _inherits3.default)(Autocomplete, _React$Component);\n\n function Autocomplete(props) {\n (0, _classCallCheck3.default)(this, Autocomplete);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Autocomplete.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete)).call(this, props));\n\n _this.autocompleter = new _Autocompleter2.default(props.room);\n _this.completionPromise = null;\n _this.hide = _this.hide.bind(_this);\n _this.onCompletionClicked = _this.onCompletionClicked.bind(_this);\n\n _this.state = {\n // list of completionResults, each containing completions\n completions: [],\n\n // array of completions, so we can look up current selection by offset quickly\n completionList: [],\n\n // how far down the completion list we are (THIS IS 1-INDEXED!)\n selectionOffset: COMPOSER_SELECTED,\n\n // whether we should show completions if they're available\n shouldShowCompletions: true,\n\n hide: false,\n\n forceComplete: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(Autocomplete, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps, state) {\n if (this.props.room.roomId !== newProps.room.roomId) {\n this.autocompleter.destroy();\n this.autocompleter = new _Autocompleter2.default(newProps.room);\n }\n\n // Query hasn't changed so don't try to complete it\n if (newProps.query === this.props.query) {\n return;\n }\n\n this.complete(newProps.query, newProps.selection);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.autocompleter.destroy();\n }\n }, {\n key: 'complete',\n value: function complete(query, selection) {\n var _this2 = this;\n\n this.queryRequested = query;\n if (this.debounceCompletionsRequest) {\n clearTimeout(this.debounceCompletionsRequest);\n }\n if (query === \"\") {\n this.setState({\n // Clear displayed completions\n completions: [],\n completionList: [],\n // Reset selected completion\n selectionOffset: COMPOSER_SELECTED,\n // Hide the autocomplete box\n hide: true\n });\n return _bluebird2.default.resolve(null);\n }\n var autocompleteDelay = _SettingsStore2.default.getValue(\"autocompleteDelay\");\n\n // Don't debounce if we are already showing completions\n if (this.state.completions.length > 0 || this.state.forceComplete) {\n autocompleteDelay = 0;\n }\n\n var deferred = _bluebird2.default.defer();\n this.debounceCompletionsRequest = setTimeout(function () {\n _this2.processQuery(query, selection).then(function () {\n deferred.resolve();\n });\n }, autocompleteDelay);\n return deferred.promise;\n }\n }, {\n key: 'processQuery',\n value: function processQuery(query, selection) {\n var _this3 = this;\n\n return this.autocompleter.getCompletions(query, selection, this.state.forceComplete).then(function (completions) {\n // Only ever process the completions for the most recent query being processed\n if (query !== _this3.queryRequested) {\n return;\n }\n _this3.processCompletions(completions);\n });\n }\n }, {\n key: 'processCompletions',\n value: function processCompletions(completions) {\n var completionList = (0, _flatMap2.default)(completions, function (provider) {\n return provider.completions;\n });\n\n // Reset selection when completion list becomes empty.\n var selectionOffset = COMPOSER_SELECTED;\n if (completionList.length > 0) {\n /* If the currently selected completion is still in the completion list,\n try to find it and jump to it. If not, select composer.\n */\n var currentSelection = this.state.selectionOffset === 0 ? null : this.state.completionList[this.state.selectionOffset - 1].completion;\n selectionOffset = completionList.findIndex(function (completion) {\n return completion.completion === currentSelection;\n });\n if (selectionOffset === -1) {\n selectionOffset = COMPOSER_SELECTED;\n } else {\n selectionOffset++; // selectionOffset is 1-indexed!\n }\n }\n\n var hide = this.state.hide;\n // If `completion.command.command` is truthy, then a provider has matched with the query\n var anyMatches = completions.some(function (completion) {\n return !!completion.command.command;\n });\n hide = !anyMatches;\n\n this.setState({\n completions: completions,\n completionList: completionList,\n selectionOffset: selectionOffset,\n hide: hide,\n // Force complete is turned off each time since we can't edit the query in that case\n forceComplete: false\n });\n }\n }, {\n key: 'countCompletions',\n value: function countCompletions() {\n return this.state.completionList.length;\n }\n\n // called from MessageComposerInput\n\n }, {\n key: 'onUpArrow',\n value: function onUpArrow() {\n var completionCount = this.countCompletions();\n // completionCount + 1, since 0 means composer is selected\n var selectionOffset = (completionCount + 1 + this.state.selectionOffset - 1) % (completionCount + 1);\n if (!completionCount) {\n return null;\n }\n this.setSelection(selectionOffset);\n }\n\n // called from MessageComposerInput\n\n }, {\n key: 'onDownArrow',\n value: function onDownArrow() {\n var completionCount = this.countCompletions();\n // completionCount + 1, since 0 means composer is selected\n var selectionOffset = (this.state.selectionOffset + 1) % (completionCount + 1);\n if (!completionCount) {\n return null;\n }\n this.setSelection(selectionOffset);\n }\n }, {\n key: 'onEscape',\n value: function onEscape(e) {\n var completionCount = this.countCompletions();\n if (completionCount === 0) {\n // autocomplete is already empty, so don't preventDefault\n return;\n }\n\n e.preventDefault();\n\n // selectionOffset = 0, so we don't end up completing when autocomplete is hidden\n this.hide();\n }\n }, {\n key: 'hide',\n value: function hide() {\n this.setState({ hide: true, selectionOffset: 0, completions: [], completionList: [] });\n }\n }, {\n key: 'forceComplete',\n value: function forceComplete() {\n var _this4 = this;\n\n var done = _bluebird2.default.defer();\n this.setState({\n forceComplete: true,\n hide: false\n }, function () {\n _this4.complete(_this4.props.query, _this4.props.selection).then(function () {\n done.resolve(_this4.countCompletions());\n });\n });\n return done.promise;\n }\n }, {\n key: 'onCompletionClicked',\n value: function onCompletionClicked(selectionOffset) {\n if (this.countCompletions() === 0 || selectionOffset === COMPOSER_SELECTED) {\n return false;\n }\n\n this.props.onConfirm(this.state.completionList[selectionOffset - 1]);\n this.hide();\n\n return true;\n }\n }, {\n key: 'setSelection',\n value: function setSelection(selectionOffset) {\n this.setState({ selectionOffset: selectionOffset, hide: false });\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(this.state.completionList[selectionOffset - 1]);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n // this is the selected completion, so scroll it into view if needed\n var selectedCompletion = this.refs['completion' + this.state.selectionOffset];\n if (selectedCompletion && this.container) {\n var domNode = _reactDom2.default.findDOMNode(selectedCompletion);\n var offsetTop = domNode && domNode.offsetTop;\n if (offsetTop > this.container.scrollTop + this.container.offsetHeight || offsetTop < this.container.scrollTop) {\n this.container.scrollTop = offsetTop - this.container.offsetTop;\n }\n }\n }\n }, {\n key: 'setState',\n value: function setState(state, func) {\n (0, _get3.default)(Autocomplete.prototype.__proto__ || (0, _getPrototypeOf2.default)(Autocomplete.prototype), 'setState', this).call(this, state, func);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this5 = this;\n\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n var position = 1;\n var renderedCompletions = this.state.completions.map(function (completionResult, i) {\n var completions = completionResult.completions.map(function (completion, i) {\n var className = (0, _classnames2.default)('mx_Autocomplete_Completion', {\n 'selected': position === _this5.state.selectionOffset\n });\n var componentPosition = position;\n position++;\n\n var onClick = function onClick() {\n _this5.onCompletionClicked(componentPosition);\n };\n\n return _react2.default.cloneElement(completion.component, {\n key: i,\n ref: 'completion' + (position - 1),\n className: className,\n onClick: onClick\n });\n });\n\n return completions.length > 0 ? _react2.default.createElement(\n 'div',\n { key: i, className: 'mx_Autocomplete_ProviderSection' },\n _react2.default.createElement(\n EmojiText,\n { element: 'div', className: 'mx_Autocomplete_provider_name' },\n completionResult.provider.getName()\n ),\n completionResult.provider.renderCompletions(completions)\n ) : null;\n }).filter(function (completion) {\n return !!completion;\n });\n\n return !this.state.hide && renderedCompletions.length > 0 ? _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete', ref: function ref(e) {\n return _this5.container = e;\n } },\n renderedCompletions\n ) : null;\n }\n }]);\n return Autocomplete;\n}(_react2.default.Component);\n\nexports.default = Autocomplete;\n\n\nAutocomplete.propTypes = {\n // the query string for which to show autocomplete suggestions\n query: _propTypes2.default.string.isRequired,\n\n // method invoked with range and text content when completion is confirmed\n onConfirm: _propTypes2.default.func.isRequired,\n\n // The room in which we're autocompleting\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room)\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Autocomplete.js.map","var baseFlatten = require('./_baseFlatten'),\n map = require('./map');\n\n/**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\nfunction flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n}\n\nmodule.exports = flatMap;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _CommandProvider = require('./CommandProvider');\n\nvar _CommandProvider2 = _interopRequireDefault(_CommandProvider);\n\nvar _CommunityProvider = require('./CommunityProvider');\n\nvar _CommunityProvider2 = _interopRequireDefault(_CommunityProvider);\n\nvar _DuckDuckGoProvider = require('./DuckDuckGoProvider');\n\nvar _DuckDuckGoProvider2 = _interopRequireDefault(_DuckDuckGoProvider);\n\nvar _RoomProvider = require('./RoomProvider');\n\nvar _RoomProvider2 = _interopRequireDefault(_RoomProvider);\n\nvar _UserProvider = require('./UserProvider');\n\nvar _UserProvider2 = _interopRequireDefault(_UserProvider);\n\nvar _EmojiProvider = require('./EmojiProvider');\n\nvar _EmojiProvider2 = _interopRequireDefault(_EmojiProvider);\n\nvar _NotifProvider = require('./NotifProvider');\n\nvar _NotifProvider2 = _interopRequireDefault(_NotifProvider);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PROVIDERS = [_UserProvider2.default, _RoomProvider2.default, _EmojiProvider2.default, _NotifProvider2.default, _CommandProvider2.default, _CommunityProvider2.default, _DuckDuckGoProvider2.default];\n\n// Providers will get rejected if they take longer than this.\nvar PROVIDER_COMPLETION_TIMEOUT = 3000;\n\nvar Autocompleter = function () {\n function Autocompleter(room) {\n (0, _classCallCheck3.default)(this, Autocompleter);\n\n this.room = room;\n this.providers = PROVIDERS.map(function (p) {\n return new p(room);\n });\n }\n\n (0, _createClass3.default)(Autocompleter, [{\n key: 'destroy',\n value: function destroy() {\n this.providers.forEach(function (p) {\n p.destroy();\n });\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var _this = this;\n\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var completionsList;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(_bluebird2.default.all(\n // Array of inspections of promises that might timeout. Instead of allowing a\n // single timeout to reject the Promise.all, reflect each one and once they've all\n // settled, filter for the fulfilled ones\n this.providers.map(function (provider) {\n return provider.getCompletions(query, selection, force).timeout(PROVIDER_COMPLETION_TIMEOUT).reflect();\n })));\n\n case 2:\n completionsList = _context.sent;\n return _context.abrupt('return', completionsList.filter(function (inspection) {\n return inspection.isFulfilled();\n }).map(function (completionsState, i) {\n return {\n completions: completionsState.value(),\n provider: _this.providers[i],\n\n /* the currently matched \"command\" the completer tried to complete\n * we pass this through so that Autocomplete can figure out when to\n * re-show itself once hidden.\n */\n command: _this.providers[i].getCurrentCommand(query, selection, force)\n };\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }]);\n return Autocompleter;\n}();\n\nexports.default = Autocompleter;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Autocompleter.js.map","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CommandMap = undefined;\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.processCommandInput = processCommandInput;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Tinter = require('./Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('./languageHandler');\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SettingsStore = require('./settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Command = function () {\n function Command(_ref) {\n var name = _ref.name,\n _ref$args = _ref.args,\n args = _ref$args === undefined ? '' : _ref$args,\n description = _ref.description,\n runFn = _ref.runFn,\n _ref$hideCompletionAf = _ref.hideCompletionAfterSpace,\n hideCompletionAfterSpace = _ref$hideCompletionAf === undefined ? false : _ref$hideCompletionAf;\n (0, _classCallCheck3.default)(this, Command);\n\n this.command = '/' + name;\n this.args = args;\n this.description = description;\n this.runFn = runFn;\n this.hideCompletionAfterSpace = hideCompletionAfterSpace;\n }\n\n (0, _createClass3.default)(Command, [{\n key: 'getCommand',\n value: function getCommand() {\n return this.command;\n }\n }, {\n key: 'getCommandWithArgs',\n value: function getCommandWithArgs() {\n return this.getCommand() + \" \" + this.args;\n }\n }, {\n key: 'run',\n value: function run(roomId, args) {\n return this.runFn.bind(this)(roomId, args);\n }\n }, {\n key: 'getUsage',\n value: function getUsage() {\n return (0, _languageHandler._t)('Usage') + ': ' + this.getCommandWithArgs();\n }\n }]);\n return Command;\n}();\n\nfunction reject(error) {\n return { error: error };\n}\n\nfunction success(promise) {\n return { promise: promise };\n}\n\n/* Disable the \"unexpected this\" error for these commands - all of the run\n * functions are called with `this` bound to the Command instance.\n */\n\n/* eslint-disable babel/no-invalid-this */\n\nvar CommandMap = exports.CommandMap = {\n ddg: new Command({\n name: 'ddg',\n args: '<query>',\n description: (0, _languageHandler._td)('Searches DuckDuckGo for results'),\n runFn: function runFn(roomId, args) {\n var ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n // TODO Don't explain this away, actually show a search UI here.\n _Modal2.default.createTrackedDialog('Slash Commands', '/ddg is not a command', ErrorDialog, {\n title: (0, _languageHandler._t)('/ddg is not a command'),\n description: (0, _languageHandler._t)('To use it, just wait for autocomplete results to load and tab through them.')\n });\n return success();\n },\n hideCompletionAfterSpace: true\n }),\n\n nick: new Command({\n name: 'nick',\n args: '<display_name>',\n description: (0, _languageHandler._td)('Changes your display nickname'),\n runFn: function runFn(roomId, args) {\n if (args) {\n return success(_MatrixClientPeg2.default.get().setDisplayName(args));\n }\n return reject(this.getUsage());\n }\n }),\n\n tint: new Command({\n name: 'tint',\n args: '<color1> [<color2>]',\n description: (0, _languageHandler._td)('Changes colour scheme of current room'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(#([\\da-fA-F]{3}|[\\da-fA-F]{6}))( +(#([\\da-fA-F]{3}|[\\da-fA-F]{6})))?$/);\n if (matches) {\n _Tinter2.default.tint(matches[1], matches[4]);\n var colorScheme = {};\n colorScheme.primary_color = matches[1];\n if (matches[4]) {\n colorScheme.secondary_color = matches[4];\n } else {\n colorScheme.secondary_color = colorScheme.primary_color;\n }\n return success(_SettingsStore2.default.setValue('roomColor', roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, colorScheme));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n topic: new Command({\n name: 'topic',\n args: '<topic>',\n description: (0, _languageHandler._td)('Sets the room topic'),\n runFn: function runFn(roomId, args) {\n if (args) {\n return success(_MatrixClientPeg2.default.get().setRoomTopic(roomId, args));\n }\n return reject(this.getUsage());\n }\n }),\n\n invite: new Command({\n name: 'invite',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Invites user with given id to current room'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().invite(roomId, matches[1]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n join: new Command({\n name: 'join',\n args: '<room-alias>',\n description: (0, _languageHandler._td)('Joins room with given alias'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var roomAlias = matches[1];\n if (roomAlias[0] !== '#') return reject(this.getUsage());\n\n if (!roomAlias.includes(':')) {\n roomAlias += ':' + _MatrixClientPeg2.default.get().getDomain();\n }\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_alias: roomAlias,\n auto_join: true\n });\n\n return success();\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n part: new Command({\n name: 'part',\n args: '[<room-alias>]',\n description: (0, _languageHandler._td)('Leave room'),\n runFn: function runFn(roomId, args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var targetRoomId = void 0;\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var roomAlias = matches[1];\n if (roomAlias[0] !== '#') return reject(this.getUsage());\n\n if (!roomAlias.includes(':')) {\n roomAlias += ':' + cli.getDomain();\n }\n\n // Try to find a room with this alias\n var rooms = cli.getRooms();\n for (var i = 0; i < rooms.length; i++) {\n var aliasEvents = rooms[i].currentState.getStateEvents('m.room.aliases');\n for (var j = 0; j < aliasEvents.length; j++) {\n var _aliases = aliasEvents[j].getContent().aliases || [];\n for (var k = 0; k < _aliases.length; k++) {\n if (_aliases[k] === roomAlias) {\n targetRoomId = rooms[i].roomId;\n break;\n }\n }\n if (targetRoomId) break;\n }\n if (targetRoomId) break;\n }\n if (!targetRoomId) return reject((0, _languageHandler._t)('Unrecognised room alias:') + ' ' + roomAlias);\n }\n }\n\n if (!targetRoomId) targetRoomId = roomId;\n return success(cli.leave(targetRoomId).then(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }));\n }\n }),\n\n kick: new Command({\n name: 'kick',\n args: '<user-id> [reason]',\n description: (0, _languageHandler._td)('Kicks user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(.*))?$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().kick(roomId, matches[1], matches[3]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Ban a user from the room with an optional reason\n ban: new Command({\n name: 'ban',\n args: '<user-id> [reason]',\n description: (0, _languageHandler._td)('Bans user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(.*))?$/);\n if (matches) {\n return success(_MatrixClientPeg2.default.get().ban(roomId, matches[1], matches[3]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Unban a user from ythe room\n unban: new Command({\n name: 'unban',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Unbans user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n // Reset the user membership to \"leave\" to unban him\n return success(_MatrixClientPeg2.default.get().unban(roomId, matches[1]));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n ignore: new Command({\n name: 'ignore',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Ignores a user, hiding their messages from you'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var userId = matches[1];\n var ignoredUsers = cli.getIgnoredUsers();\n ignoredUsers.push(userId); // de-duped internally in the js-sdk\n return success(cli.setIgnoredUsers(ignoredUsers).then(function () {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'User ignored', QuestionDialog, {\n title: (0, _languageHandler._t)('Ignored user'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You are now ignoring %(userId)s', { userId: userId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n unignore: new Command({\n name: 'unignore',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Stops ignoring a user, showing their messages going forward'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var cli = _MatrixClientPeg2.default.get();\n\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var userId = matches[1];\n var ignoredUsers = cli.getIgnoredUsers();\n var index = ignoredUsers.indexOf(userId);\n if (index !== -1) ignoredUsers.splice(index, 1);\n return success(cli.setIgnoredUsers(ignoredUsers).then(function () {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'User unignored', QuestionDialog, {\n title: (0, _languageHandler._t)('Unignored user'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You are no longer ignoring %(userId)s', { userId: userId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Define the power level of a user\n op: new Command({\n name: 'op',\n args: '<user-id> [<power-level>]',\n description: (0, _languageHandler._td)('Define the power level of a user'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+?)( +(-?\\d+))?$/);\n var powerLevel = 50; // default power level for op\n if (matches) {\n var userId = matches[1];\n if (matches.length === 4 && undefined !== matches[3]) {\n powerLevel = parseInt(matches[3]);\n }\n if (!isNaN(powerLevel)) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n if (!room) return reject('Bad room ID: ' + roomId);\n\n var powerLevelEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n return success(cli.setPowerLevel(roomId, userId, powerLevel, powerLevelEvent));\n }\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Reset the power level of a user\n deop: new Command({\n name: 'deop',\n args: '<user-id>',\n description: (0, _languageHandler._td)('Deops user with given id'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+)$/);\n if (matches) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n if (!room) return reject('Bad room ID: ' + roomId);\n\n var powerLevelEvent = room.currentState.getStateEvents('m.room.power_levels', '');\n return success(cli.setPowerLevel(roomId, args, undefined, powerLevelEvent));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n devtools: new Command({\n name: 'devtools',\n description: (0, _languageHandler._td)('Opens the Developer Tools dialog'),\n runFn: function runFn(roomId) {\n var DevtoolsDialog = _index2.default.getComponent('dialogs.DevtoolsDialog');\n _Modal2.default.createDialog(DevtoolsDialog, { roomId: roomId });\n return success();\n }\n }),\n\n // Verify a user, device, and pubkey tuple\n verify: new Command({\n name: 'verify',\n args: '<user-id> <device-id> <device-signing-key>',\n description: (0, _languageHandler._td)('Verifies a user, device, and pubkey tuple'),\n runFn: function runFn(roomId, args) {\n if (args) {\n var matches = args.match(/^(\\S+) +(\\S+) +(\\S+)$/);\n if (matches) {\n var cli = _MatrixClientPeg2.default.get();\n\n var userId = matches[1];\n var deviceId = matches[2];\n var fingerprint = matches[3];\n\n return success(\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n _promise2.default.resolve(cli.getStoredDevice(userId, deviceId)).then(function (device) {\n if (!device) {\n throw new Error((0, _languageHandler._t)('Unknown (user, device) pair:') + (' (' + userId + ', ' + deviceId + ')'));\n }\n\n if (device.isVerified()) {\n if (device.getFingerprint() === fingerprint) {\n throw new Error((0, _languageHandler._t)('Device already verified!'));\n } else {\n throw new Error((0, _languageHandler._t)('WARNING: Device already verified, but keys do NOT MATCH!'));\n }\n }\n\n if (device.getFingerprint() !== fingerprint) {\n var fprint = device.getFingerprint();\n throw new Error((0, _languageHandler._t)('WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device' + ' %(deviceId)s is \"%(fprint)s\" which does not match the provided key ' + '\"%(fingerprint)s\". This could mean your communications are being intercepted!', {\n fprint: fprint,\n userId: userId,\n deviceId: deviceId,\n fingerprint: fingerprint\n }));\n }\n\n return cli.setDeviceVerified(userId, deviceId, true);\n }).then(function () {\n // Tell the user we verified everything\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Slash Commands', 'Verified key', QuestionDialog, {\n title: (0, _languageHandler._t)('Verified key'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The signing key you provided matches the signing key you received ' + 'from %(userId)s\\'s device %(deviceId)s. Device marked as verified.', { userId: userId, deviceId: deviceId })\n )\n ),\n hasCancelButton: false\n });\n }));\n }\n }\n return reject(this.getUsage());\n }\n }),\n\n // Command definitions for autocompletion ONLY:\n\n // /me is special because its not handled by SlashCommands.js and is instead done inside the Composer classes\n me: new Command({\n name: 'me',\n args: '<message>',\n description: (0, _languageHandler._td)('Displays action'),\n hideCompletionAfterSpace: true\n }),\n\n discardsession: new Command({\n name: 'discardsession',\n description: (0, _languageHandler._td)('Forces the current outbound group session in an encrypted room to be discarded'),\n runFn: function runFn(roomId) {\n try {\n _MatrixClientPeg2.default.get().forceDiscardSession(roomId);\n } catch (e) {\n return reject(e.message);\n }\n return success();\n }\n })\n};\n/* eslint-enable babel/no-invalid-this */\n\n// helpful aliases\nvar aliases = {\n j: \"join\",\n newballsplease: \"discardsession\"\n};\n\n/**\n * Process the given text for /commands and perform them.\n * @param {string} roomId The room in which the command was performed.\n * @param {string} input The raw text input by the user.\n * @return {Object|null} An object with the property 'error' if there was an error\n * processing the command, or 'promise' if a request was sent out.\n * Returns null if the input didn't match a command.\n */\nfunction processCommandInput(roomId, input) {\n // trim any trailing whitespace, as it can confuse the parser for\n // IRC-style commands\n input = input.replace(/\\s+$/, '');\n if (input[0] !== '/') return null; // not a command\n\n var bits = input.match(/^(\\S+?)( +((.|\\n)*))?$/);\n var cmd = void 0;\n var args = void 0;\n if (bits) {\n cmd = bits[1].substring(1).toLowerCase();\n args = bits[3];\n } else {\n cmd = input;\n }\n\n if (aliases[cmd]) {\n cmd = aliases[cmd];\n }\n if (CommandMap[cmd]) {\n // if it has no runFn then its an ignored/nop command (autocomplete only) e.g `/me`\n if (!CommandMap[cmd].runFn) return null;\n\n return CommandMap[cmd].run(roomId, args);\n } else {\n return reject((0, _languageHandler._t)('Unrecognised command:') + ' ' + input);\n }\n}\n//# sourceMappingURL=SlashCommands.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar _RoomNotifs = require('../../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ActiveRoomObserver = require('../../../ActiveRoomObserver');\n\nvar _ActiveRoomObserver2 = _interopRequireDefault(_ActiveRoomObserver);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTile',\n\n propTypes: {\n onClick: _propTypes2.default.func,\n\n room: _propTypes2.default.object.isRequired,\n collapsed: _propTypes2.default.bool.isRequired,\n unread: _propTypes2.default.bool.isRequired,\n highlight: _propTypes2.default.bool.isRequired,\n // If true, apply mx_RoomTile_transparent class\n transparent: _propTypes2.default.bool,\n isInvite: _propTypes2.default.bool.isRequired,\n incomingCall: _propTypes2.default.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n isDragging: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false,\n badgeHover: false,\n menuDisplayed: false,\n roomName: this.props.room.name,\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),\n notificationCount: this.props.room.getUnreadNotificationCount(),\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId()\n };\n },\n\n _shouldShowNotifBadge: function _shouldShowNotifBadge() {\n var showBadgeInStates = [RoomNotifs.ALL_MESSAGES, RoomNotifs.ALL_MESSAGES_LOUD];\n return showBadgeInStates.indexOf(this.state.notifState) > -1;\n },\n\n _shouldShowMentionBadge: function _shouldShowMentionBadge() {\n return this.state.notifState !== RoomNotifs.MUTE;\n },\n\n _isDirectMessageRoom: function _isDirectMessageRoom(roomId) {\n var dmRooms = _DMRoomMap2.default.shared().getUserIdForRoomId(roomId);\n return Boolean(dmRooms);\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room) {\n if (room !== this.props.room) return;\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n },\n\n onRoomName: function onRoomName(room) {\n if (room !== this.props.room) return;\n this.setState({\n roomName: this.props.room.name\n });\n },\n\n onAccountData: function onAccountData(accountDataEvent) {\n if (accountDataEvent.getType() === 'm.push_rules') {\n this.setState({\n notifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId)\n });\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n // XXX: slight hack in order to zero the notification count when a room\n // is read. Ideally this state would be given to this via props (as we\n // do with `unread`). This is still better than forceUpdating the entire\n // RoomList when a room is read.\n case 'on_room_read':\n if (payload.roomId !== this.props.room.roomId) break;\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n break;\n }\n },\n\n _onActiveRoomChange: function _onActiveRoomChange() {\n this.setState({\n selected: this.props.room.roomId === _RoomViewStore2.default.getRoomId()\n });\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().on(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().on(\"Room.name\", this.onRoomName);\n _ActiveRoomObserver2.default.addListener(this.props.room.roomId, this._onActiveRoomChange);\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n _MatrixClientPeg2.default.get().removeListener(\"accountData\", this.onAccountData);\n _MatrixClientPeg2.default.get().removeListener(\"Room.timeline\", this.onRoomTimeline);\n _MatrixClientPeg2.default.get().removeListener(\"Room.name\", this.onRoomName);\n }\n _ActiveRoomObserver2.default.removeListener(this.props.room.roomId, this._onActiveRoomChange);\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(props) {\n // XXX: This could be a lot better - this makes the assumption that\n // the notification count may have changed when the properties of\n // the room tile change.\n this.setState({\n notificationCount: this.props.room.getUnreadNotificationCount()\n });\n },\n\n // Do a simple shallow comparison of props and state to avoid unnecessary\n // renders. The assumption made here is that only state and props are used\n // in rendering this component and children.\n //\n // RoomList is frequently made to forceUpdate, so this decreases number of\n // RoomTile renderings.\n shouldComponentUpdate: function shouldComponentUpdate(newProps, newState) {\n var _this = this;\n\n if ((0, _keys2.default)(newProps).some(function (k) {\n return newProps[k] !== _this.props[k];\n })) {\n return true;\n }\n if ((0, _keys2.default)(newState).some(function (k) {\n return newState[k] !== _this.state[k];\n })) {\n return true;\n }\n return false;\n },\n\n onClick: function onClick(ev) {\n if (this.props.onClick) {\n this.props.onClick(this.props.room.roomId, ev);\n }\n },\n\n onMouseEnter: function onMouseEnter() {\n this.setState({ hover: true });\n this.badgeOnMouseEnter();\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({ hover: false });\n this.badgeOnMouseLeave();\n },\n\n _showContextMenu: function _showContextMenu(x, y, chevronOffset) {\n var _this2 = this;\n\n var RoomTileContextMenu = _index2.default.getComponent('context_menus.RoomTileContextMenu');\n\n (0, _ContextualMenu.createMenu)(RoomTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n room: this.props.room,\n onFinished: function onFinished() {\n _this2.setState({ menuDisplayed: false });\n _this2.props.refreshSubList();\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextMenu: function onContextMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.preventDefault();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var chevronOffset = 12;\n this._showContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n badgeOnMouseEnter: function badgeOnMouseEnter() {\n // Only allow non-guests to access the context menu\n // and only change it if it needs to change\n if (!_MatrixClientPeg2.default.get().isGuest() && !this.state.badgeHover) {\n this.setState({ badgeHover: true });\n }\n },\n\n badgeOnMouseLeave: function badgeOnMouseLeave() {\n this.setState({ badgeHover: false });\n },\n\n onBadgeClicked: function onBadgeClicked(e) {\n // Prevent the RoomTile onClick event firing as well\n e.stopPropagation();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n // If the badge is clicked, then no longer show tooltip\n if (this.props.collapsed) {\n this.setState({ hover: false });\n }\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._showContextMenu(x, y, chevronOffset);\n },\n\n render: function render() {\n var isInvite = this.props.room.getMyMembership() === \"invite\";\n var notificationCount = this.state.notificationCount;\n // var highlightCount = this.props.room.getUnreadNotificationCount(\"highlight\");\n\n var notifBadges = notificationCount > 0 && this._shouldShowNotifBadge();\n var mentionBadges = this.props.highlight && this._shouldShowMentionBadge();\n var badges = notifBadges || mentionBadges;\n\n var classes = (0, _classnames2.default)({\n 'mx_RoomTile': true,\n 'mx_RoomTile_selected': this.state.selected,\n 'mx_RoomTile_unread': this.props.unread,\n 'mx_RoomTile_unreadNotify': notifBadges,\n 'mx_RoomTile_highlight': mentionBadges,\n 'mx_RoomTile_invited': isInvite,\n 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,\n 'mx_RoomTile_noBadges': !badges,\n 'mx_RoomTile_transparent': this.props.transparent\n });\n\n var avatarClasses = (0, _classnames2.default)({\n 'mx_RoomTile_avatar': true\n });\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomTile_badge': true,\n 'mx_RoomTile_badgeButton': this.state.badgeHover || this.state.menuDisplayed\n });\n\n var name = this.state.roomName;\n if (name == undefined || name == null) name = '';\n name = name.replace(\":\", ':\\u200B'); // add a zero-width space to allow linewrapping after the colon\n\n var badgeContent = void 0;\n\n if (this.state.badgeHover || this.state.menuDisplayed) {\n badgeContent = '\\xB7\\xB7\\xB7';\n } else if (badges) {\n var limitedCount = FormattingUtils.formatCount(notificationCount);\n badgeContent = notificationCount ? limitedCount : '!';\n } else {\n badgeContent = '\\u200B';\n }\n\n var badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this.onBadgeClicked },\n badgeContent\n );\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var label = void 0;\n var tooltip = void 0;\n if (!this.props.collapsed) {\n var nameClasses = (0, _classnames2.default)({\n 'mx_RoomTile_name': true,\n 'mx_RoomTile_invite': this.props.isInvite,\n 'mx_RoomTile_badgeShown': badges || this.state.badgeHover || this.state.menuDisplayed\n });\n\n if (this.state.selected) {\n var nameSelected = _react2.default.createElement(\n EmojiText,\n null,\n name\n );\n\n label = _react2.default.createElement(\n 'div',\n { title: name, className: nameClasses, dir: 'auto' },\n nameSelected\n );\n } else {\n label = _react2.default.createElement(\n EmojiText,\n { element: 'div', title: name, className: nameClasses, dir: 'auto' },\n name\n );\n }\n } else if (this.state.hover) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoomTile_tooltip', label: this.props.room.name, dir: 'auto' });\n }\n\n //var incomingCallBox;\n //if (this.props.incomingCall) {\n // var IncomingCallBox = sdk.getComponent(\"voip.IncomingCallBox\");\n // incomingCallBox = <IncomingCallBox incomingCall={ this.props.incomingCall }/>;\n //}\n\n var RoomAvatar = _index2.default.getComponent('avatars.RoomAvatar');\n\n var dmIndicator = void 0;\n if (this._isDirectMessageRoom(this.props.room.roomId)) {\n dmIndicator = _react2.default.createElement('img', { src: 'img/icon_person.svg', className: 'mx_RoomTile_dm', width: '11', height: '13', alt: 'dm' });\n }\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { tabIndex: '0',\n className: classes,\n onClick: this.onClick,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onContextMenu: this.onContextMenu\n },\n _react2.default.createElement(\n 'div',\n { className: avatarClasses },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar_container' },\n _react2.default.createElement(RoomAvatar, { room: this.props.room, width: 24, height: 24 }),\n dmIndicator\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_nameContainer' },\n label,\n badge\n ),\n tooltip\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nexports.findReadReceiptFromUserId = findReadReceiptFromUserId;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Given MatrixEvent containing receipts, return the first\n * read receipt from the given user ID, or null if no such\n * receipt exists.\n */\nfunction findReadReceiptFromUserId(receiptEvent, userId) {\n var receiptKeys = (0, _keys2.default)(receiptEvent.getContent());\n for (var i = 0; i < receiptKeys.length; ++i) {\n var rcpt = receiptEvent.getContent()[receiptKeys[i]];\n if (rcpt['m.read'] && rcpt['m.read'][userId]) {\n return rcpt;\n }\n }\n\n return null;\n}\n//# sourceMappingURL=Receipt.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AppTile = require('../elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar widgetType = 'm.stickerpicker';\n\n// We sit in a context menu, so the persisted element container needs to float\n// above it, so it needs a greater z-index than the ContextMenu\nvar STICKERPICKER_Z_INDEX = 5000;\n\nvar Stickerpicker = function (_React$Component) {\n (0, _inherits3.default)(Stickerpicker, _React$Component);\n\n function Stickerpicker(props) {\n (0, _classCallCheck3.default)(this, Stickerpicker);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Stickerpicker.__proto__ || (0, _getPrototypeOf2.default)(Stickerpicker)).call(this, props));\n\n _this._onShowStickersClick = _this._onShowStickersClick.bind(_this);\n _this._onHideStickersClick = _this._onHideStickersClick.bind(_this);\n _this._launchManageIntegrations = _this._launchManageIntegrations.bind(_this);\n _this._removeStickerpickerWidgets = _this._removeStickerpickerWidgets.bind(_this);\n _this._updateWidget = _this._updateWidget.bind(_this);\n _this._onWidgetAction = _this._onWidgetAction.bind(_this);\n _this._onResize = _this._onResize.bind(_this);\n _this._onFinished = _this._onFinished.bind(_this);\n\n _this.popoverWidth = 300;\n _this.popoverHeight = 300;\n\n _this.state = {\n showStickers: false,\n imError: null,\n stickerpickerX: null,\n stickerpickerY: null,\n stickerpickerWidget: null,\n widgetId: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(Stickerpicker, [{\n key: '_removeStickerpickerWidgets',\n value: function _removeStickerpickerWidgets() {\n var _this2 = this;\n\n console.warn('Removing Stickerpicker widgets');\n if (this.state.widgetId) {\n this.scalarClient.disableWidgetAssets(widgetType, this.state.widgetId).then(function () {\n console.warn('Assets disabled');\n }).catch(function (err) {\n console.error('Failed to disable assets');\n });\n } else {\n console.warn('No widget ID specified, not disabling assets');\n }\n\n this.setState({ showStickers: false });\n _WidgetUtils2.default.removeStickerpickerWidgets().then(function () {\n _this2.forceUpdate();\n }).catch(function (e) {\n console.error('Failed to remove sticker picker widget', e);\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this3 = this;\n\n // Close the sticker picker when the window resizes\n window.addEventListener('resize', this._onResize);\n\n this.scalarClient = null;\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n this.scalarClient = new _ScalarAuthClient2.default();\n this.scalarClient.connect().then(function () {\n _this3.forceUpdate();\n }).catch(function (e) {\n _this3._imError(\"Failed to connect to integrations server\", e);\n });\n }\n\n if (!this.state.imError) {\n this.dispatcherRef = _dispatcher2.default.register(this._onWidgetAction);\n }\n\n // Track updates to widget state in account data\n _MatrixClientPeg2.default.get().on('accountData', this._updateWidget);\n\n // Initialise widget state from current account data\n this._updateWidget();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('resize', this._onResize);\n if (this.dispatcherRef) {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n this._sendVisibilityToWidget(this.state.showStickers);\n }\n }, {\n key: '_imError',\n value: function _imError(errorMsg, e) {\n console.error(errorMsg, e);\n this.setState({\n showStickers: false,\n imError: errorMsg\n });\n }\n }, {\n key: '_updateWidget',\n value: function _updateWidget() {\n var stickerpickerWidget = _WidgetUtils2.default.getStickerpickerWidgets()[0];\n this.setState({\n stickerpickerWidget: stickerpickerWidget,\n widgetId: stickerpickerWidget ? stickerpickerWidget.id : null\n });\n }\n }, {\n key: '_onWidgetAction',\n value: function _onWidgetAction(payload) {\n switch (payload.action) {\n case \"user_widget_updated\":\n this.forceUpdate();\n break;\n case \"stickerpicker_close\":\n this.setState({ showStickers: false });\n break;\n case \"show_right_panel\":\n case \"hide_right_panel\":\n case \"show_left_panel\":\n case \"hide_left_panel\":\n this.setState({ showStickers: false });\n break;\n }\n }\n }, {\n key: '_defaultStickerpickerContent',\n value: function _defaultStickerpickerContent() {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._launchManageIntegrations,\n className: 'mx_Stickers_contentPlaceholder' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"You don't currently have any stickerpacks enabled\")\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_Stickers_addLink' },\n (0, _languageHandler._t)(\"Add some now\")\n ),\n _react2.default.createElement('img', { src: 'img/stickerpack-placeholder.png', alt: '' })\n );\n }\n }, {\n key: '_errorStickerpickerContent',\n value: function _errorStickerpickerContent() {\n return _react2.default.createElement(\n 'div',\n { style: { \"text-align\": \"center\" }, className: 'error' },\n _react2.default.createElement(\n 'p',\n null,\n ' ',\n this.state.imError,\n ' '\n )\n );\n }\n }, {\n key: '_sendVisibilityToWidget',\n value: function _sendVisibilityToWidget(visible) {\n if (!this.state.stickerpickerWidget) return;\n var widgetMessaging = _ActiveWidgetStore2.default.getWidgetMessaging(this.state.stickerpickerWidget.id);\n if (widgetMessaging && visible !== this._prevSentVisibility) {\n widgetMessaging.sendVisibility(visible);\n this._prevSentVisibility = visible;\n }\n }\n }, {\n key: '_getStickerpickerContent',\n value: function _getStickerpickerContent() {\n // Handle Integration Manager errors\n if (this.state._imError) {\n return this._errorStickerpickerContent();\n }\n\n // Stickers\n // TODO - Add support for Stickerpickers from multiple app stores.\n // Render content from multiple stickerpack sources, each within their\n // own iframe, within the stickerpicker UI element.\n var stickerpickerWidget = this.state.stickerpickerWidget;\n var stickersContent = void 0;\n\n // Use a separate ReactDOM tree to render the AppTile separately so that it persists and does\n // not unmount when we (a) close the sticker picker (b) switch rooms. It's properties are still\n // updated.\n var PersistedElement = _index2.default.getComponent(\"elements.PersistedElement\");\n\n // Load stickerpack content\n if (stickerpickerWidget && stickerpickerWidget.content && stickerpickerWidget.content.url) {\n // Set default name\n stickerpickerWidget.content.name = stickerpickerWidget.name || (0, _languageHandler._t)(\"Stickerpack\");\n\n stickersContent = _react2.default.createElement(\n 'div',\n { className: 'mx_Stickers_content_container' },\n _react2.default.createElement(\n 'div',\n {\n id: 'stickersContent',\n className: 'mx_Stickers_content',\n style: {\n border: 'none',\n height: this.popoverHeight,\n width: this.popoverWidth\n }\n },\n _react2.default.createElement(\n PersistedElement,\n { persistKey: 'stickerPicker', style: { zIndex: STICKERPICKER_Z_INDEX } },\n _react2.default.createElement(_AppTile2.default, {\n id: stickerpickerWidget.id,\n url: stickerpickerWidget.content.url,\n name: stickerpickerWidget.content.name,\n room: this.props.room,\n type: stickerpickerWidget.content.type,\n fullWidth: true,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n creatorUserId: stickerpickerWidget.sender || _MatrixClientPeg2.default.get().credentials.userId,\n waitForIframeLoad: true,\n show: true,\n showMenubar: true,\n onEditClick: this._launchManageIntegrations,\n onDeleteClick: this._removeStickerpickerWidgets,\n showTitle: false,\n showMinimise: true,\n showDelete: false,\n showPopout: false,\n onMinimiseClick: this._onHideStickersClick,\n handleMinimisePointerEvents: true,\n whitelistCapabilities: ['m.sticker', 'visibility'],\n userWidget: true\n })\n )\n )\n );\n } else {\n // Default content to show if stickerpicker widget not added\n stickersContent = this._defaultStickerpickerContent();\n }\n return stickersContent;\n }\n\n /**\n * Show the sticker picker overlay\n * If no stickerpacks have been added, show a link to the integration manager add sticker packs page.\n * @param {Event} e Event that triggered the function\n */\n\n }, {\n key: '_onShowStickersClick',\n value: function _onShowStickersClick(e) {\n // XXX: Simplify by using a context menu that is positioned relative to the sticker picker button\n\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset - 41;\n\n // Amount of horizontal space between the right of menu and the right of the viewport\n // (10 = amount needed to make chevron centrally aligned)\n var rightPad = 10;\n\n // When the sticker picker would be displayed off of the viewport, adjust x\n // (302 = width of context menu, including borders)\n x = Math.min(x, document.body.clientWidth - (302 + rightPad));\n\n // Offset the chevron location, which is relative to the left of the context menu\n // (10 = offset when context menu would not be displayed off viewport)\n // (8 = value required in practice (possibly 10 - 2 where the 2 = context menu borders)\n var stickerPickerChevronOffset = Math.max(10, 8 + window.pageXOffset + buttonRect.left - x);\n\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n this.setState({\n showStickers: true,\n stickerPickerX: x,\n stickerPickerY: y,\n stickerPickerChevronOffset: stickerPickerChevronOffset\n });\n }\n\n /**\n * Trigger hiding of the sticker picker overlay\n * @param {Event} ev Event that triggered the function call\n */\n\n }, {\n key: '_onHideStickersClick',\n value: function _onHideStickersClick(ev) {\n this.setState({ showStickers: false });\n }\n\n /**\n * Called when the window is resized\n */\n\n }, {\n key: '_onResize',\n value: function _onResize() {\n this.setState({ showStickers: false });\n }\n\n /**\n * The stickers picker was hidden\n */\n\n }, {\n key: '_onFinished',\n value: function _onFinished() {\n this.setState({ showStickers: false });\n }\n\n /**\n * Launch the integrations manager on the stickers integration page\n */\n\n }, {\n key: '_launchManageIntegrations',\n value: function _launchManageIntegrations() {\n var IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n var src = this.scalarClient !== null && this.scalarClient.hasCredentials() ? this.scalarClient.getScalarInterfaceUrlForRoom(this.props.room, 'type_' + widgetType, this.state.widgetId) : null;\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src\n }, \"mx_IntegrationsManager\");\n\n this.setState({ showStickers: false });\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var ContextualMenu = _index2.default.getComponent('structures.ContextualMenu');\n var GenericElementContextMenu = _index2.default.getComponent('context_menus.GenericElementContextMenu');\n var stickersButton = void 0;\n\n var stickerPicker = _react2.default.createElement(ContextualMenu, {\n elementClass: GenericElementContextMenu,\n chevronOffset: this.state.stickerPickerChevronOffset,\n chevronFace: 'bottom',\n left: this.state.stickerPickerX,\n top: this.state.stickerPickerY,\n menuWidth: this.popoverWidth,\n menuHeight: this.popoverHeight,\n element: this._getStickerpickerContent(),\n onFinished: this._onFinished,\n menuPaddingTop: 0,\n menuPaddingLeft: 0,\n menuPaddingRight: 0\n });\n\n if (this.state.showStickers) {\n // Show hide-stickers button\n stickersButton = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n id: 'stickersButton',\n key: 'controls_hide_stickers',\n className: 'mx_MessageComposer_stickers mx_Stickers_hideStickers',\n onClick: this._onHideStickersClick,\n ref: 'target',\n title: (0, _languageHandler._t)(\"Hide Stickers\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-hide-stickers.svg', width: '35', height: '35' })\n );\n } else {\n // Show show-stickers button\n stickersButton = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n id: 'stickersButton',\n key: 'controls_show_stickers',\n className: 'mx_MessageComposer_stickers',\n onClick: this._onShowStickersClick,\n title: (0, _languageHandler._t)(\"Show Stickers\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-show-stickers.svg', width: '35', height: '35' })\n );\n }\n return _react2.default.createElement(\n 'div',\n null,\n stickersButton,\n this.state.showStickers && stickerPicker\n );\n }\n }]);\n return Stickerpicker;\n}(_react2.default.Component);\n\nexports.default = Stickerpicker;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Stickerpicker.js.map","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encode = encode;\nexports.decode = decode;\n// to ensure markdown compatability we need to specifically encode some characters\nfunction encode(href) {\n return decodeSafe(href).trim().replace(/ /g, \"%20\").replace(/'/g, \"%27\").replace(/\\(/g, \"%28\").replace(/\\)/g, \"%29\");\n}\n\nfunction decode(href) {\n try {\n return decodeURI(href);\n } catch (e) {\n return decodeSafe(href);\n }\n}\n\n// convert hanging % characters into percentage encoded %25 as decodeURI cannot\n// handle this scenario but users may input 'invalid' urls.\nfunction decodeSafe(uri) {\n var components = uri.split(/(%(?:d0|d1)%.{2})/);\n return components.map(function (component) {\n try {\n return decodeURIComponent(component);\n } catch (e) {\n return component.replace(/%(?!\\d+)/g, \"%25\");\n }\n }).join(\"\");\n}","\"use strict\";\n\nfunction Renderer() {}\n\n/**\n * Walks the AST and calls member methods for each Node type.\n *\n * @param ast {Node} The root of the abstract syntax tree.\n */\nfunction render(ast) {\n var walker = ast.walker()\n , event\n , type;\n\n this.buffer = '';\n this.lastOut = '\\n';\n\n while((event = walker.next())) {\n type = event.node.type;\n if (this[type]) {\n this[type](event.node, event.entering);\n }\n }\n return this.buffer;\n}\n\n/**\n * Concatenate a literal string to the buffer.\n *\n * @param str {String} The string to concatenate.\n */\nfunction lit(str) {\n this.buffer += str;\n this.lastOut = str;\n}\n\n/**\n * Output a newline to the buffer.\n */\nfunction cr() {\n if (this.lastOut !== '\\n') {\n this.lit('\\n');\n }\n}\n\n/**\n * Concatenate a string to the buffer possibly escaping the content.\n *\n * Concrete renderer implementations should override this method.\n *\n * @param str {String} The string to concatenate.\n */\nfunction out(str) {\n this.lit(str);\n}\n\n/**\n * Escape a string for the target renderer.\n *\n * Abstract function that should be implemented by concrete \n * renderer implementations.\n *\n * @param str {String} The string to escape.\n */\nfunction esc(str) {\n return str;\n}\n\nRenderer.prototype.render = render;\nRenderer.prototype.out = out;\nRenderer.prototype.lit = lit;\nRenderer.prototype.cr = cr;\nRenderer.prototype.esc = esc;\n\nmodule.exports = Renderer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction cancelQuoting() {\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: null\n });\n}\n\nvar ReplyPreview = function (_React$Component) {\n (0, _inherits3.default)(ReplyPreview, _React$Component);\n\n function ReplyPreview(props, context) {\n (0, _classCallCheck3.default)(this, ReplyPreview);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ReplyPreview.__proto__ || (0, _getPrototypeOf2.default)(ReplyPreview)).call(this, props, context));\n\n _this.state = {\n event: null\n };\n\n _this._onRoomViewStoreUpdate = _this._onRoomViewStoreUpdate.bind(_this);\n\n _this._roomStoreToken = _RoomViewStore2.default.addListener(_this._onRoomViewStoreUpdate);\n _this._onRoomViewStoreUpdate();\n return _this;\n }\n\n (0, _createClass3.default)(ReplyPreview, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n }\n }, {\n key: '_onRoomViewStoreUpdate',\n value: function _onRoomViewStoreUpdate() {\n var event = _RoomViewStore2.default.getQuotingEvent();\n if (this.state.event !== event) {\n this.setState({ event: event });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.state.event) return null;\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_section' },\n _react2.default.createElement(\n EmojiText,\n { element: 'div', className: 'mx_ReplyPreview_header mx_ReplyPreview_title' },\n '💬 ' + (0, _languageHandler._t)('Replying')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ReplyPreview_header mx_ReplyPreview_cancel' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor', src: 'img/cancel.svg', width: '18', height: '18',\n onClick: cancelQuoting })\n ),\n _react2.default.createElement('div', { className: 'mx_ReplyPreview_clear' }),\n _react2.default.createElement(EventTile, { last: true,\n tileShape: 'reply_preview',\n mxEvent: this.state.event,\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\") })\n )\n );\n }\n }]);\n return ReplyPreview;\n}(_react2.default.Component);\n\nexports.default = ReplyPreview;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ReplyPreview.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require(\"../../../dispatcher\");\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require(\"../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _MessageEvent = require(\"../messages/MessageEvent\");\n\nvar _MessageEvent2 = _interopRequireDefault(_MessageEvent);\n\nvar _MemberAvatar = require(\"../avatars/MemberAvatar\");\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _DateUtils = require(\"../../../DateUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PinnedEventTile',\n propTypes: {\n mxRoom: _propTypes2.default.object.isRequired,\n mxEvent: _propTypes2.default.object.isRequired,\n onUnpinned: _propTypes2.default.func\n },\n onTileClicked: function onTileClicked() {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: this.props.mxEvent.getId(),\n highlighted: true,\n room_id: this.props.mxEvent.getRoomId()\n });\n },\n onUnpinClicked: function onUnpinClicked() {\n var _this = this;\n\n var pinnedEvents = this.props.mxRoom.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents || !pinnedEvents.getContent().pinned) {\n // Nothing to do: already unpinned\n if (this.props.onUnpinned) this.props.onUnpinned();\n } else {\n var pinned = pinnedEvents.getContent().pinned;\n var index = pinned.indexOf(this.props.mxEvent.getId());\n if (index !== -1) {\n pinned.splice(index, 1);\n _MatrixClientPeg2.default.get().sendStateEvent(this.props.mxRoom.roomId, 'm.room.pinned_events', { pinned: pinned }, '').then(function () {\n if (_this.props.onUnpinned) _this.props.onUnpinned();\n });\n } else if (this.props.onUnpinned) this.props.onUnpinned();\n }\n },\n _canUnpin: function _canUnpin() {\n return this.props.mxRoom.currentState.mayClientSendStateEvent('m.room.pinned_events', _MatrixClientPeg2.default.get());\n },\n render: function render() {\n var sender = this.props.mxRoom.getMember(this.props.mxEvent.getSender());\n var avatarSize = 40;\n\n var unpinButton = null;\n if (this._canUnpin()) {\n unpinButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onUnpinClicked, className: \"mx_PinnedEventTile_unpinButton\" },\n _react2.default.createElement(\"img\", { src: \"img/cancel-red.svg\", width: \"8\", height: \"8\", alt: (0, _languageHandler._t)('Unpin Message'), title: (0, _languageHandler._t)('Unpin Message') })\n );\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile_actions\" },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: \"mx_PinnedEventTile_gotoButton mx_textButton\", onClick: this.onTileClicked },\n (0, _languageHandler._t)(\"Jump to message\")\n ),\n unpinButton\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_senderAvatar\" },\n _react2.default.createElement(_MemberAvatar2.default, { member: sender, width: avatarSize, height: avatarSize })\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_sender\" },\n sender.name\n ),\n _react2.default.createElement(\n \"span\",\n { className: \"mx_PinnedEventTile_timestamp\" },\n (0, _DateUtils.formatFullDate)(new Date(this.props.mxEvent.getTs()))\n ),\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventTile_message\" },\n _react2.default.createElement(_MessageEvent2.default, { mxEvent: this.props.mxEvent, className: \"mx_PinnedEventTile_body\", maxImageHeight: 150,\n onWidgetLoad: function onWidgetLoad() {} // we need to give this, apparently\n })\n )\n );\n }\n}); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=PinnedEventTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.roomShape = undefined;\nexports.getDisplayAliasForRoom = getDisplayAliasForRoom;\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify); /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getDisplayAliasForRoom(room) {\n return room.canonicalAlias || (room.aliases ? room.aliases[0] : \"\");\n}\n\nvar roomShape = exports.roomShape = _propTypes2.default.shape({\n name: _propTypes2.default.string,\n topic: _propTypes2.default.string,\n roomId: _propTypes2.default.string,\n avatarUrl: _propTypes2.default.string,\n numJoinedMembers: _propTypes2.default.number,\n canonicalAlias: _propTypes2.default.string,\n aliases: _propTypes2.default.arrayOf(_propTypes2.default.string),\n\n worldReadable: _propTypes2.default.bool,\n guestCanJoin: _propTypes2.default.bool\n});\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomDetailRow',\n\n propTypes: {\n room: roomShape,\n // passes ev, room as args\n onClick: _propTypes2.default.func,\n onMouseDown: _propTypes2.default.func\n },\n\n _linkifyTopic: function _linkifyTopic() {\n if (this.refs.topic) {\n (0, _element2.default)(this.refs.topic, _linkifyMatrix2.default.options);\n }\n },\n\n componentDidMount: function componentDidMount() {\n this._linkifyTopic();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._linkifyTopic();\n },\n\n onClick: function onClick(ev) {\n ev.preventDefault();\n if (this.props.onClick) {\n this.props.onClick(ev, this.props.room);\n }\n },\n\n onTopicClick: function onTopicClick(ev) {\n // When clicking a link in the topic, prevent the event being propagated\n // to `onClick`.\n ev.stopPropagation();\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n\n var room = this.props.room;\n var name = room.name || getDisplayAliasForRoom(room) || (0, _languageHandler._t)('Unnamed room');\n\n var guestRead = room.worldReadable ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('World readable')\n ) : _react2.default.createElement('div', null);\n var guestJoin = room.guestCanJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('Guests can join')\n ) : _react2.default.createElement('div', null);\n\n var perms = guestRead || guestJoin ? _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perms' },\n guestRead,\n '\\xA0',\n guestJoin\n ) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n 'tr',\n { key: room.roomId, onClick: this.onClick, onMouseDown: this.props.onMouseDown },\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomAvatar' },\n _react2.default.createElement(BaseAvatar, { width: 24, height: 24, resizeMethod: 'crop',\n name: name, idName: name,\n url: _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), room.avatarUrl, 24, 24, \"crop\") })\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomDescription' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_name' },\n name\n ),\n '\\xA0',\n perms,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_topic', ref: 'topic', onClick: this.onTopicClick },\n room.topic\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomDirectory_alias' },\n getDisplayAliasForRoom(room)\n )\n ),\n _react2.default.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomMemberCount' },\n room.numJoinedMembers\n )\n );\n }\n});\n//# sourceMappingURL=RoomDetailRow.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CancelButton = CancelButton;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// cancel button which is shared between room header and simple room header\nfunction CancelButton(props) {\n var onClick = props.onClick;\n\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_cancelButton', onClick: onClick },\n _react2.default.createElement('img', { src: 'img/cancel.svg', className: 'mx_filterFlipColor',\n width: '18', height: '18', alt: (0, _languageHandler._t)(\"Cancel\") })\n );\n}\n\n/*\n * A stripped-down room header used for things like the user settings\n * and room directory.\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'SimpleRoomHeader',\n\n propTypes: {\n title: _propTypes2.default.string,\n onCancelClick: _propTypes2.default.func,\n\n // `src` to a TintableSvg. Optional.\n icon: _propTypes2.default.string\n },\n\n render: function render() {\n var cancelButton = void 0;\n var icon = void 0;\n if (this.props.onCancelClick) {\n cancelButton = _react2.default.createElement(CancelButton, { onClick: this.props.onCancelClick });\n }\n if (this.props.icon) {\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n icon = _react2.default.createElement(TintableSvg, {\n className: 'mx_RoomHeader_icon', src: this.props.icon,\n width: '25', height: '25'\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_simpleHeader' },\n icon,\n this.props.title,\n cancelButton\n )\n )\n );\n }\n});\n//# sourceMappingURL=SimpleRoomHeader.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar NotificationUtils = require('./NotificationUtils');\n\nvar encodeActions = NotificationUtils.encodeActions;\n\nmodule.exports = {\n ACTION_NOTIFY: encodeActions({ notify: true }),\n ACTION_NOTIFY_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\" }),\n ACTION_NOTIFY_RING_SOUND: encodeActions({ notify: true, sound: \"ring\" }),\n ACTION_HIGHLIGHT_DEFAULT_SOUND: encodeActions({ notify: true, sound: \"default\", highlight: true }),\n ACTION_DONT_NOTIFY: encodeActions({ notify: false }),\n ACTION_DISABLED: null\n};\n//# sourceMappingURL=StandardActions.js.map","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import PropTypes from 'prop-types';\nexport var subscriptionShape = PropTypes.shape({\n trySubscribe: PropTypes.func.isRequired,\n tryUnsubscribe: PropTypes.func.isRequired,\n notifyNestedSubs: PropTypes.func.isRequired,\n isSubscribed: PropTypes.func.isRequired\n});\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Component, Children } from 'react';\nimport PropTypes from 'prop-types';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nimport warning from '../utils/warning';\nvar didWarnAboutReceivingStore = false;\n\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n\n didWarnAboutReceivingStore = true;\n warning('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reduxjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nexport function createProvider(storeKey) {\n var _Provider$childContex;\n\n if (storeKey === void 0) {\n storeKey = 'store';\n }\n\n var subscriptionKey = storeKey + \"Subscription\";\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[storeKey] = this[storeKey], _ref[subscriptionKey] = null, _ref;\n };\n\n function Provider(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this[storeKey] = props.store;\n return _this;\n }\n\n _proto.render = function render() {\n return Children.only(this.props.children);\n };\n\n return Provider;\n }(Component);\n\n if (process.env.NODE_ENV !== 'production') {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n if (this[storeKey] !== nextProps.store) {\n warnAboutReceivingStore();\n }\n };\n }\n\n Provider.propTypes = {\n store: storeShape.isRequired,\n children: PropTypes.element.isRequired\n };\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[storeKey] = storeShape.isRequired, _Provider$childContex[subscriptionKey] = subscriptionShape, _Provider$childContex);\n return Provider;\n}\nexport default createProvider();","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\nvar CLEARED = null;\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n // the current/next pattern is copied from redux's createStore code.\n // TODO: refactor+expose that code to be reusable here?\n var current = [];\n var next = [];\n return {\n clear: function clear() {\n next = CLEARED;\n current = CLEARED;\n },\n notify: function notify() {\n var listeners = current = next;\n\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n },\n get: function get() {\n return next;\n },\n subscribe: function subscribe(listener) {\n var isSubscribed = true;\n if (next === current) next = current.slice();\n next.push(listener);\n return function unsubscribe() {\n if (!isSubscribed || current === CLEARED) return;\n isSubscribed = false;\n if (next === current) next = current.slice();\n next.splice(next.indexOf(listener), 1);\n };\n }\n };\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(store, parentSub, onStateChange) {\n this.store = store;\n this.parentSub = parentSub;\n this.onStateChange = onStateChange;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.onStateChange) : this.store.subscribe(this.onStateChange);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport invariant from 'invariant';\nimport { Component, createElement } from 'react';\nimport { isValidElementType } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { storeShape, subscriptionShape } from '../utils/PropTypes';\nvar hotReloadingVersion = 0;\nvar dummyState = {};\n\nfunction noop() {}\n\nfunction makeSelectorStateful(sourceSelector, store) {\n // wrap the selector in an object that tracks its results between runs.\n var selector = {\n run: function runComponentSelector(props) {\n try {\n var nextProps = sourceSelector(store.getState(), props);\n\n if (nextProps !== selector.props || selector.error) {\n selector.shouldComponentUpdate = true;\n selector.props = nextProps;\n selector.error = null;\n }\n } catch (error) {\n selector.shouldComponentUpdate = true;\n selector.error = error;\n }\n }\n };\n return selector;\n}\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n var _contextTypes, _childContextTypes;\n\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\"]);\n\n var subscriptionKey = storeKey + 'Subscription';\n var version = hotReloadingVersion++;\n var contextTypes = (_contextTypes = {}, _contextTypes[storeKey] = storeShape, _contextTypes[subscriptionKey] = subscriptionShape, _contextTypes);\n var childContextTypes = (_childContextTypes = {}, _childContextTypes[subscriptionKey] = subscriptionShape, _childContextTypes);\n return function wrapWithConnect(WrappedComponent) {\n invariant(isValidElementType(WrappedComponent), \"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + JSON.stringify(WrappedComponent)));\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n withRef: withRef,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent // TODO Actually fix our use of componentWillReceiveProps\n\n /* eslint-disable react/no-deprecated */\n\n });\n\n var Connect =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Connect, _Component);\n\n function Connect(props, context) {\n var _this;\n\n _this = _Component.call(this, props, context) || this;\n _this.version = version;\n _this.state = {};\n _this.renderCount = 0;\n _this.store = props[storeKey] || context[storeKey];\n _this.propsMode = Boolean(props[storeKey]);\n _this.setWrappedInstance = _this.setWrappedInstance.bind(_assertThisInitialized(_assertThisInitialized(_this)));\n invariant(_this.store, \"Could not find \\\"\" + storeKey + \"\\\" in either the context or props of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + (\"or explicitly pass \\\"\" + storeKey + \"\\\" as a prop to \\\"\" + displayName + \"\\\".\"));\n\n _this.initSelector();\n\n _this.initSubscription();\n\n return _this;\n }\n\n var _proto = Connect.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref3;\n\n // If this component received store from props, its subscription should be transparent\n // to any descendants receiving store+subscription from context; it passes along\n // subscription passed to it. Otherwise, it shadows the parent subscription, which allows\n // Connect to control ordering of notifications to flow top-down.\n var subscription = this.propsMode ? null : this.subscription;\n return _ref3 = {}, _ref3[subscriptionKey] = subscription || this.context[subscriptionKey], _ref3;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n if (!shouldHandleStateChanges) return; // componentWillMount fires during server side rendering, but componentDidMount and\n // componentWillUnmount do not. Because of this, trySubscribe happens during ...didMount.\n // Otherwise, unsubscription would never take place during SSR, causing a memory leak.\n // To handle the case where a child component may have triggered a state change by\n // dispatching an action in its componentWillMount, we have to re-run the select and maybe\n // re-render.\n\n this.subscription.trySubscribe();\n this.selector.run(this.props);\n if (this.selector.shouldComponentUpdate) this.forceUpdate();\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n this.selector.run(nextProps);\n };\n\n _proto.shouldComponentUpdate = function shouldComponentUpdate() {\n return this.selector.shouldComponentUpdate;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.subscription) this.subscription.tryUnsubscribe();\n this.subscription = null;\n this.notifyNestedSubs = noop;\n this.store = null;\n this.selector.run = noop;\n this.selector.shouldComponentUpdate = false;\n };\n\n _proto.getWrappedInstance = function getWrappedInstance() {\n invariant(withRef, \"To access the wrapped instance, you need to specify \" + (\"{ withRef: true } in the options argument of the \" + methodName + \"() call.\"));\n return this.wrappedInstance;\n };\n\n _proto.setWrappedInstance = function setWrappedInstance(ref) {\n this.wrappedInstance = ref;\n };\n\n _proto.initSelector = function initSelector() {\n var sourceSelector = selectorFactory(this.store.dispatch, selectorFactoryOptions);\n this.selector = makeSelectorStateful(sourceSelector, this.store);\n this.selector.run(this.props);\n };\n\n _proto.initSubscription = function initSubscription() {\n if (!shouldHandleStateChanges) return; // parentSub's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var parentSub = (this.propsMode ? this.props : this.context)[subscriptionKey];\n this.subscription = new Subscription(this.store, parentSub, this.onStateChange.bind(this)); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `this.subscription` will then be null. An\n // extra null check every change can be avoided by copying the method onto `this` and then\n // replacing it with a no-op on unmount. This can probably be avoided if Subscription's\n // listeners logic is changed to not call listeners that have been unsubscribed in the\n // middle of the notification loop.\n\n this.notifyNestedSubs = this.subscription.notifyNestedSubs.bind(this.subscription);\n };\n\n _proto.onStateChange = function onStateChange() {\n this.selector.run(this.props);\n\n if (!this.selector.shouldComponentUpdate) {\n this.notifyNestedSubs();\n } else {\n this.componentDidUpdate = this.notifyNestedSubsOnComponentDidUpdate;\n this.setState(dummyState);\n }\n };\n\n _proto.notifyNestedSubsOnComponentDidUpdate = function notifyNestedSubsOnComponentDidUpdate() {\n // `componentDidUpdate` is conditionally implemented when `onStateChange` determines it\n // needs to notify nested subs. Once called, it unimplements itself until further state\n // changes occur. Doing it this way vs having a permanent `componentDidUpdate` that does\n // a boolean check every time avoids an extra method call most of the time, resulting\n // in some perf boost.\n this.componentDidUpdate = undefined;\n this.notifyNestedSubs();\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.subscription) && this.subscription.isSubscribed();\n };\n\n _proto.addExtraProps = function addExtraProps(props) {\n if (!withRef && !renderCountProp && !(this.propsMode && this.subscription)) return props; // make a shallow copy so that fields added don't leak to the original selector.\n // this is especially important for 'ref' since that's a reference back to the component\n // instance. a singleton memoized selector would then be holding a reference to the\n // instance, preventing the instance from being garbage collected, and that would be bad\n\n var withExtras = _extends({}, props);\n\n if (withRef) withExtras.ref = this.setWrappedInstance;\n if (renderCountProp) withExtras[renderCountProp] = this.renderCount++;\n if (this.propsMode && this.subscription) withExtras[subscriptionKey] = this.subscription;\n return withExtras;\n };\n\n _proto.render = function render() {\n var selector = this.selector;\n selector.shouldComponentUpdate = false;\n\n if (selector.error) {\n throw selector.error;\n } else {\n return createElement(WrappedComponent, this.addExtraProps(selector.props));\n }\n };\n\n return Connect;\n }(Component);\n /* eslint-enable react/no-deprecated */\n\n\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n Connect.childContextTypes = childContextTypes;\n Connect.contextTypes = contextTypes;\n Connect.propTypes = contextTypes;\n\n if (process.env.NODE_ENV !== 'production') {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n var _this2 = this;\n\n // We are hot reloading!\n if (this.version !== version) {\n this.version = version;\n this.initSelector(); // If any connected descendants don't hot reload (and resubscribe in the process), their\n // listeners will be lost when we unsubscribe. Unfortunately, by copying over all\n // listeners, this does mean that the old versions of connected descendants will still be\n // notified of state changes; however, their onStateChange function is a no-op so this\n // isn't a huge deal.\n\n var oldListeners = [];\n\n if (this.subscription) {\n oldListeners = this.subscription.listeners.get();\n this.subscription.tryUnsubscribe();\n }\n\n this.initSubscription();\n\n if (shouldHandleStateChanges) {\n this.subscription.trySubscribe();\n oldListeners.forEach(function (listener) {\n return _this2.subscription.listeners.subscribe(listener);\n });\n }\n }\n };\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","var hasOwn = Object.prototype.hasOwnProperty;\n\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n// \n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n// \n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n// \n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n// \n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n// \n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default createConnect();","import Provider, { createProvider } from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport connect from './connect/connect';\nexport { Provider, createProvider, connectAdvanced, connect };","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar React = require('react');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = TYPE_STATICS[targetComponent['$$typeof']] || REACT_STATICS;\n var sourceStatics = TYPE_STATICS[sourceComponent['$$typeof']] || REACT_STATICS;\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nvar GROUP_LEFT_TO_RIGHT,\n GROUP_RIGHT_TO_LEFT,\n EXPRESSION_LEFT_TO_RIGHT,\n EXPRESSION_RIGHT_TO_LEFT;\n\n/*\n * Character ranges of left-to-right characters.\n */\n\nGROUP_LEFT_TO_RIGHT = 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF';\n\n/*\n * Character ranges of right-to-left characters.\n */\n\nGROUP_RIGHT_TO_LEFT = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC';\n\n/*\n * Expression to match a left-to-right string.\n *\n * Matches the start of a string, followed by zero or\n * more non-right-to-left characters, followed by a\n * left-to-right character.\n */\n\nEXPRESSION_LEFT_TO_RIGHT = new RegExp(\n '^[^' + GROUP_RIGHT_TO_LEFT + ']*[' + GROUP_LEFT_TO_RIGHT + ']'\n);\n\n/*\n * Expression to match a right-to-left string.\n *\n * Matches the start of a string, followed by zero or\n * more non-left-to-right characters, followed by a\n * right-to-left character.\n */\n\nEXPRESSION_RIGHT_TO_LEFT = new RegExp(\n '^[^' + GROUP_LEFT_TO_RIGHT + ']*[' + GROUP_RIGHT_TO_LEFT + ']'\n);\n\n/**\n * Detect the direction of text.\n *\n * @param {string} value - value to stringify and check.\n * @return {string} - One of `\"rtl\"`, `\"ltr\"`, or\n * `\"neutral\"`.\n */\nfunction direction(value) {\n value = value.toString();\n\n if (EXPRESSION_RIGHT_TO_LEFT.test(value)) {\n return 'rtl';\n }\n\n if (EXPRESSION_LEFT_TO_RIGHT.test(value)) {\n return 'ltr';\n }\n\n return 'neutral';\n}\n\n/*\n * Expose `direction`.\n */\n\nmodule.exports = direction;\n","function isBackward(selection) {\n var startNode = selection.anchorNode;\n var startOffset = selection.anchorOffset;\n var endNode = selection.focusNode;\n var endOffset = selection.focusOffset;\n\n var position = startNode.compareDocumentPosition(endNode);\n\n return !(position === 4 || (position === 0 && startOffset < endOffset));\n}\n\nmodule.exports = isBackward;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","'use strict';\n\nmodule.exports = require('./lib/ReactDOMServer');\n","\"use strict\";\n\nrequire(\"core-js/shim\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nrequire(\"core-js/fn/regexp/escape\");\n\nif (global._babelPolyfill) {\n throw new Error(\"only one instance of babel-polyfill is allowed\");\n}\nglobal._babelPolyfill = true;\n\nvar DEFINE_PROPERTY = \"defineProperty\";\nfunction define(O, key, value) {\n O[key] || Object[DEFINE_PROPERTY](O, key, {\n writable: true,\n configurable: true,\n value: value\n });\n}\n\ndefine(String.prototype, \"padLeft\", \"\".padStart);\ndefine(String.prototype, \"padRight\", \"\".padEnd);\n\n\"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill\".split(\",\").forEach(function (key) {\n [][key] && define(Array, key, Function.call.bind([][key]));\n});","require('./modules/es6.symbol');\nrequire('./modules/es6.object.create');\nrequire('./modules/es6.object.define-property');\nrequire('./modules/es6.object.define-properties');\nrequire('./modules/es6.object.get-own-property-descriptor');\nrequire('./modules/es6.object.get-prototype-of');\nrequire('./modules/es6.object.keys');\nrequire('./modules/es6.object.get-own-property-names');\nrequire('./modules/es6.object.freeze');\nrequire('./modules/es6.object.seal');\nrequire('./modules/es6.object.prevent-extensions');\nrequire('./modules/es6.object.is-frozen');\nrequire('./modules/es6.object.is-sealed');\nrequire('./modules/es6.object.is-extensible');\nrequire('./modules/es6.object.assign');\nrequire('./modules/es6.object.is');\nrequire('./modules/es6.object.set-prototype-of');\nrequire('./modules/es6.object.to-string');\nrequire('./modules/es6.function.bind');\nrequire('./modules/es6.function.name');\nrequire('./modules/es6.function.has-instance');\nrequire('./modules/es6.parse-int');\nrequire('./modules/es6.parse-float');\nrequire('./modules/es6.number.constructor');\nrequire('./modules/es6.number.to-fixed');\nrequire('./modules/es6.number.to-precision');\nrequire('./modules/es6.number.epsilon');\nrequire('./modules/es6.number.is-finite');\nrequire('./modules/es6.number.is-integer');\nrequire('./modules/es6.number.is-nan');\nrequire('./modules/es6.number.is-safe-integer');\nrequire('./modules/es6.number.max-safe-integer');\nrequire('./modules/es6.number.min-safe-integer');\nrequire('./modules/es6.number.parse-float');\nrequire('./modules/es6.number.parse-int');\nrequire('./modules/es6.math.acosh');\nrequire('./modules/es6.math.asinh');\nrequire('./modules/es6.math.atanh');\nrequire('./modules/es6.math.cbrt');\nrequire('./modules/es6.math.clz32');\nrequire('./modules/es6.math.cosh');\nrequire('./modules/es6.math.expm1');\nrequire('./modules/es6.math.fround');\nrequire('./modules/es6.math.hypot');\nrequire('./modules/es6.math.imul');\nrequire('./modules/es6.math.log10');\nrequire('./modules/es6.math.log1p');\nrequire('./modules/es6.math.log2');\nrequire('./modules/es6.math.sign');\nrequire('./modules/es6.math.sinh');\nrequire('./modules/es6.math.tanh');\nrequire('./modules/es6.math.trunc');\nrequire('./modules/es6.string.from-code-point');\nrequire('./modules/es6.string.raw');\nrequire('./modules/es6.string.trim');\nrequire('./modules/es6.string.iterator');\nrequire('./modules/es6.string.code-point-at');\nrequire('./modules/es6.string.ends-with');\nrequire('./modules/es6.string.includes');\nrequire('./modules/es6.string.repeat');\nrequire('./modules/es6.string.starts-with');\nrequire('./modules/es6.string.anchor');\nrequire('./modules/es6.string.big');\nrequire('./modules/es6.string.blink');\nrequire('./modules/es6.string.bold');\nrequire('./modules/es6.string.fixed');\nrequire('./modules/es6.string.fontcolor');\nrequire('./modules/es6.string.fontsize');\nrequire('./modules/es6.string.italics');\nrequire('./modules/es6.string.link');\nrequire('./modules/es6.string.small');\nrequire('./modules/es6.string.strike');\nrequire('./modules/es6.string.sub');\nrequire('./modules/es6.string.sup');\nrequire('./modules/es6.date.now');\nrequire('./modules/es6.date.to-json');\nrequire('./modules/es6.date.to-iso-string');\nrequire('./modules/es6.date.to-string');\nrequire('./modules/es6.date.to-primitive');\nrequire('./modules/es6.array.is-array');\nrequire('./modules/es6.array.from');\nrequire('./modules/es6.array.of');\nrequire('./modules/es6.array.join');\nrequire('./modules/es6.array.slice');\nrequire('./modules/es6.array.sort');\nrequire('./modules/es6.array.for-each');\nrequire('./modules/es6.array.map');\nrequire('./modules/es6.array.filter');\nrequire('./modules/es6.array.some');\nrequire('./modules/es6.array.every');\nrequire('./modules/es6.array.reduce');\nrequire('./modules/es6.array.reduce-right');\nrequire('./modules/es6.array.index-of');\nrequire('./modules/es6.array.last-index-of');\nrequire('./modules/es6.array.copy-within');\nrequire('./modules/es6.array.fill');\nrequire('./modules/es6.array.find');\nrequire('./modules/es6.array.find-index');\nrequire('./modules/es6.array.species');\nrequire('./modules/es6.array.iterator');\nrequire('./modules/es6.regexp.constructor');\nrequire('./modules/es6.regexp.to-string');\nrequire('./modules/es6.regexp.flags');\nrequire('./modules/es6.regexp.match');\nrequire('./modules/es6.regexp.replace');\nrequire('./modules/es6.regexp.search');\nrequire('./modules/es6.regexp.split');\nrequire('./modules/es6.promise');\nrequire('./modules/es6.map');\nrequire('./modules/es6.set');\nrequire('./modules/es6.weak-map');\nrequire('./modules/es6.weak-set');\nrequire('./modules/es6.typed.array-buffer');\nrequire('./modules/es6.typed.data-view');\nrequire('./modules/es6.typed.int8-array');\nrequire('./modules/es6.typed.uint8-array');\nrequire('./modules/es6.typed.uint8-clamped-array');\nrequire('./modules/es6.typed.int16-array');\nrequire('./modules/es6.typed.uint16-array');\nrequire('./modules/es6.typed.int32-array');\nrequire('./modules/es6.typed.uint32-array');\nrequire('./modules/es6.typed.float32-array');\nrequire('./modules/es6.typed.float64-array');\nrequire('./modules/es6.reflect.apply');\nrequire('./modules/es6.reflect.construct');\nrequire('./modules/es6.reflect.define-property');\nrequire('./modules/es6.reflect.delete-property');\nrequire('./modules/es6.reflect.enumerate');\nrequire('./modules/es6.reflect.get');\nrequire('./modules/es6.reflect.get-own-property-descriptor');\nrequire('./modules/es6.reflect.get-prototype-of');\nrequire('./modules/es6.reflect.has');\nrequire('./modules/es6.reflect.is-extensible');\nrequire('./modules/es6.reflect.own-keys');\nrequire('./modules/es6.reflect.prevent-extensions');\nrequire('./modules/es6.reflect.set');\nrequire('./modules/es6.reflect.set-prototype-of');\nrequire('./modules/es7.array.includes');\nrequire('./modules/es7.array.flat-map');\nrequire('./modules/es7.array.flatten');\nrequire('./modules/es7.string.at');\nrequire('./modules/es7.string.pad-start');\nrequire('./modules/es7.string.pad-end');\nrequire('./modules/es7.string.trim-left');\nrequire('./modules/es7.string.trim-right');\nrequire('./modules/es7.string.match-all');\nrequire('./modules/es7.symbol.async-iterator');\nrequire('./modules/es7.symbol.observable');\nrequire('./modules/es7.object.get-own-property-descriptors');\nrequire('./modules/es7.object.values');\nrequire('./modules/es7.object.entries');\nrequire('./modules/es7.object.define-getter');\nrequire('./modules/es7.object.define-setter');\nrequire('./modules/es7.object.lookup-getter');\nrequire('./modules/es7.object.lookup-setter');\nrequire('./modules/es7.map.to-json');\nrequire('./modules/es7.set.to-json');\nrequire('./modules/es7.map.of');\nrequire('./modules/es7.set.of');\nrequire('./modules/es7.weak-map.of');\nrequire('./modules/es7.weak-set.of');\nrequire('./modules/es7.map.from');\nrequire('./modules/es7.set.from');\nrequire('./modules/es7.weak-map.from');\nrequire('./modules/es7.weak-set.from');\nrequire('./modules/es7.global');\nrequire('./modules/es7.system.global');\nrequire('./modules/es7.error.is-error');\nrequire('./modules/es7.math.clamp');\nrequire('./modules/es7.math.deg-per-rad');\nrequire('./modules/es7.math.degrees');\nrequire('./modules/es7.math.fscale');\nrequire('./modules/es7.math.iaddh');\nrequire('./modules/es7.math.isubh');\nrequire('./modules/es7.math.imulh');\nrequire('./modules/es7.math.rad-per-deg');\nrequire('./modules/es7.math.radians');\nrequire('./modules/es7.math.scale');\nrequire('./modules/es7.math.umulh');\nrequire('./modules/es7.math.signbit');\nrequire('./modules/es7.promise.finally');\nrequire('./modules/es7.promise.try');\nrequire('./modules/es7.reflect.define-metadata');\nrequire('./modules/es7.reflect.delete-metadata');\nrequire('./modules/es7.reflect.get-metadata');\nrequire('./modules/es7.reflect.get-metadata-keys');\nrequire('./modules/es7.reflect.get-own-metadata');\nrequire('./modules/es7.reflect.get-own-metadata-keys');\nrequire('./modules/es7.reflect.has-metadata');\nrequire('./modules/es7.reflect.has-own-metadata');\nrequire('./modules/es7.reflect.metadata');\nrequire('./modules/es7.asap');\nrequire('./modules/es7.observable');\nrequire('./modules/web.timers');\nrequire('./modules/web.immediate');\nrequire('./modules/web.dom.iterable');\nmodule.exports = require('./modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n if (promise._h == 1) return false;\n var chain = promise._a || promise._c;\n var i = 0;\n var reaction;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise)) return false;\n } return true;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var final = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < final) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatten\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatten: function flatten(/* depthArg = 1 */) {\n var depthArg = arguments[0];\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg));\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatten');\n","'use strict';\n// https://github.com/mathiasbynens/String.prototype.at\nvar $export = require('./_export');\nvar $at = require('./_string-at')(true);\n\n$export($export.P, 'String', {\n at: function at(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\n\n$export($export.P, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\n\n$export($export.P, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","'use strict';\n// https://tc39.github.io/String.prototype.matchAll/\nvar $export = require('./_export');\nvar defined = require('./_defined');\nvar toLength = require('./_to-length');\nvar isRegExp = require('./_is-regexp');\nvar getFlags = require('./_flags');\nvar RegExpProto = RegExp.prototype;\n\nvar $RegExpStringIterator = function (regexp, string) {\n this._r = regexp;\n this._s = string;\n};\n\nrequire('./_iter-create')($RegExpStringIterator, 'RegExp String', function next() {\n var match = this._r.exec(this._s);\n return { value: match, done: match === null };\n});\n\n$export($export.P, 'String', {\n matchAll: function matchAll(regexp) {\n defined(this);\n if (!isRegExp(regexp)) throw TypeError(regexp + ' is not a regexp!');\n var S = String(this);\n var flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp);\n var rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);\n rx.lastIndex = toLength(regexp.lastIndex);\n return new $RegExpStringIterator(rx, S);\n }\n});\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.2 Object.prototype.__defineGetter__(P, getter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineGetter__: function __defineGetter__(P, getter) {\n $defineProperty.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar aFunction = require('./_a-function');\nvar $defineProperty = require('./_object-dp');\n\n// B.2.2.3 Object.prototype.__defineSetter__(P, setter)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __defineSetter__: function __defineSetter__(P, setter) {\n $defineProperty.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true });\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.4 Object.prototype.__lookupGetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupGetter__: function __lookupGetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.get;\n } while (O = getPrototypeOf(O));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\nvar getPrototypeOf = require('./_object-gpo');\nvar getOwnPropertyDescriptor = require('./_object-gopd').f;\n\n// B.2.2.5 Object.prototype.__lookupSetter__(P)\nrequire('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {\n __lookupSetter__: function __lookupSetter__(P) {\n var O = toObject(this);\n var K = toPrimitive(P, true);\n var D;\n do {\n if (D = getOwnPropertyDescriptor(O, K)) return D.set;\n } while (O = getPrototypeOf(O));\n }\n});\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of\nrequire('./_set-collection-of')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of\nrequire('./_set-collection-of')('WeakSet');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from\nrequire('./_set-collection-from')('WeakMap');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from\nrequire('./_set-collection-from')('WeakSet');\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.S, 'System', { global: require('./_global') });\n","// https://github.com/ljharb/proposal-is-error\nvar $export = require('./_export');\nvar cof = require('./_cof');\n\n$export($export.S, 'Error', {\n isError: function isError(it) {\n return cof(it) === 'Error';\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clamp: function clamp(x, lower, upper) {\n return Math.min(upper, Math.max(lower, x));\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { DEG_PER_RAD: Math.PI / 180 });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar RAD_PER_DEG = 180 / Math.PI;\n\n$export($export.S, 'Math', {\n degrees: function degrees(radians) {\n return radians * RAD_PER_DEG;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar scale = require('./_math-scale');\nvar fround = require('./_math-fround');\n\n$export($export.S, 'Math', {\n fscale: function fscale(x, inLow, inHigh, outLow, outHigh) {\n return fround(scale(x, inLow, inHigh, outLow, outHigh));\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n iaddh: function iaddh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n isubh: function isubh(x0, x1, y0, y1) {\n var $x0 = x0 >>> 0;\n var $x1 = x1 >>> 0;\n var $y0 = y0 >>> 0;\n return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;\n }\n});\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n imulh: function imulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >> 16;\n var v1 = $v >> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { RAD_PER_DEG: 180 / Math.PI });\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\nvar DEG_PER_RAD = Math.PI / 180;\n\n$export($export.S, 'Math', {\n radians: function radians(degrees) {\n return degrees * DEG_PER_RAD;\n }\n});\n","// https://rwaldron.github.io/proposal-math-extensions/\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { scale: require('./_math-scale') });\n","// https://gist.github.com/BrendanEich/4294d5c212a6d2254703\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n umulh: function umulh(u, v) {\n var UINT16 = 0xffff;\n var $u = +u;\n var $v = +v;\n var u0 = $u & UINT16;\n var v0 = $v & UINT16;\n var u1 = $u >>> 16;\n var v1 = $v >>> 16;\n var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);\n return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);\n }\n});\n","// http://jfbastien.github.io/papers/Math.signbit.html\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { signbit: function signbit(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;\n} });\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar ordinaryDefineOwnMetadata = metadata.set;\n\nmetadata.exp({ defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey) {\n ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar toMetaKey = metadata.key;\nvar getOrCreateMetadataMap = metadata.map;\nvar store = metadata.store;\n\nmetadata.exp({ deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) {\n var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]);\n var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);\n if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false;\n if (metadataMap.size) return true;\n var targetMetadata = store.get(target);\n targetMetadata['delete'](targetKey);\n return !!targetMetadata.size || store['delete'](target);\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nvar ordinaryGetMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;\n};\n\nmetadata.exp({ getMetadata: function getMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var Set = require('./es6.set');\nvar from = require('./_array-from-iterable');\nvar metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nvar ordinaryMetadataKeys = function (O, P) {\n var oKeys = ordinaryOwnMetadataKeys(O, P);\n var parent = getPrototypeOf(O);\n if (parent === null) return oKeys;\n var pKeys = ordinaryMetadataKeys(parent, P);\n return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;\n};\n\nmetadata.exp({ getMetadataKeys: function getMetadataKeys(target /* , targetKey */) {\n return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryGetOwnMetadata = metadata.get;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryGetOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryOwnMetadataKeys = metadata.keys;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) {\n return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nvar ordinaryHasMetadata = function (MetadataKey, O, P) {\n var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn) return true;\n var parent = getPrototypeOf(O);\n return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;\n};\n\nmetadata.exp({ hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar ordinaryHasOwnMetadata = metadata.has;\nvar toMetaKey = metadata.key;\n\nmetadata.exp({ hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) {\n return ordinaryHasOwnMetadata(metadataKey, anObject(target)\n , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));\n} });\n","var $metadata = require('./_metadata');\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar toMetaKey = $metadata.key;\nvar ordinaryDefineOwnMetadata = $metadata.set;\n\n$metadata.exp({ metadata: function metadata(metadataKey, metadataValue) {\n return function decorator(target, targetKey) {\n ordinaryDefineOwnMetadata(\n metadataKey, metadataValue,\n (targetKey !== undefined ? anObject : aFunction)(target),\n toMetaKey(targetKey)\n );\n };\n} });\n","// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask\nvar $export = require('./_export');\nvar microtask = require('./_microtask')();\nvar process = require('./_global').process;\nvar isNode = require('./_cof')(process) == 'process';\n\n$export($export.G, {\n asap: function asap(fn) {\n var domain = isNode && process.domain;\n microtask(domain ? domain.bind(fn) : fn);\n }\n});\n","'use strict';\n// https://github.com/zenparsing/es-observable\nvar $export = require('./_export');\nvar global = require('./_global');\nvar core = require('./_core');\nvar microtask = require('./_microtask')();\nvar OBSERVABLE = require('./_wks')('observable');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar anInstance = require('./_an-instance');\nvar redefineAll = require('./_redefine-all');\nvar hide = require('./_hide');\nvar forOf = require('./_for-of');\nvar RETURN = forOf.RETURN;\n\nvar getMethod = function (fn) {\n return fn == null ? undefined : aFunction(fn);\n};\n\nvar cleanupSubscription = function (subscription) {\n var cleanup = subscription._c;\n if (cleanup) {\n subscription._c = undefined;\n cleanup();\n }\n};\n\nvar subscriptionClosed = function (subscription) {\n return subscription._o === undefined;\n};\n\nvar closeSubscription = function (subscription) {\n if (!subscriptionClosed(subscription)) {\n subscription._o = undefined;\n cleanupSubscription(subscription);\n }\n};\n\nvar Subscription = function (observer, subscriber) {\n anObject(observer);\n this._c = undefined;\n this._o = observer;\n observer = new SubscriptionObserver(this);\n try {\n var cleanup = subscriber(observer);\n var subscription = cleanup;\n if (cleanup != null) {\n if (typeof cleanup.unsubscribe === 'function') cleanup = function () { subscription.unsubscribe(); };\n else aFunction(cleanup);\n this._c = cleanup;\n }\n } catch (e) {\n observer.error(e);\n return;\n } if (subscriptionClosed(this)) cleanupSubscription(this);\n};\n\nSubscription.prototype = redefineAll({}, {\n unsubscribe: function unsubscribe() { closeSubscription(this); }\n});\n\nvar SubscriptionObserver = function (subscription) {\n this._s = subscription;\n};\n\nSubscriptionObserver.prototype = redefineAll({}, {\n next: function next(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n try {\n var m = getMethod(observer.next);\n if (m) return m.call(observer, value);\n } catch (e) {\n try {\n closeSubscription(subscription);\n } finally {\n throw e;\n }\n }\n }\n },\n error: function error(value) {\n var subscription = this._s;\n if (subscriptionClosed(subscription)) throw value;\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.error);\n if (!m) throw value;\n value = m.call(observer, value);\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n },\n complete: function complete(value) {\n var subscription = this._s;\n if (!subscriptionClosed(subscription)) {\n var observer = subscription._o;\n subscription._o = undefined;\n try {\n var m = getMethod(observer.complete);\n value = m ? m.call(observer, value) : undefined;\n } catch (e) {\n try {\n cleanupSubscription(subscription);\n } finally {\n throw e;\n }\n } cleanupSubscription(subscription);\n return value;\n }\n }\n});\n\nvar $Observable = function Observable(subscriber) {\n anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber);\n};\n\nredefineAll($Observable.prototype, {\n subscribe: function subscribe(observer) {\n return new Subscription(observer, this._f);\n },\n forEach: function forEach(fn) {\n var that = this;\n return new (core.Promise || global.Promise)(function (resolve, reject) {\n aFunction(fn);\n var subscription = that.subscribe({\n next: function (value) {\n try {\n return fn(value);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n});\n\nredefineAll($Observable, {\n from: function from(x) {\n var C = typeof this === 'function' ? this : $Observable;\n var method = getMethod(anObject(x)[OBSERVABLE]);\n if (method) {\n var observable = anObject(method.call(x));\n return observable.constructor === C ? observable : new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n return new C(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n try {\n if (forOf(x, false, function (it) {\n observer.next(it);\n if (done) return RETURN;\n }) === RETURN) return;\n } catch (e) {\n if (done) throw e;\n observer.error(e);\n return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n },\n of: function of() {\n for (var i = 0, l = arguments.length, items = Array(l); i < l;) items[i] = arguments[i++];\n return new (typeof this === 'function' ? this : $Observable)(function (observer) {\n var done = false;\n microtask(function () {\n if (!done) {\n for (var j = 0; j < items.length; ++j) {\n observer.next(items[j]);\n if (done) return;\n } observer.complete();\n }\n });\n return function () { done = true; };\n });\n }\n});\n\nhide($Observable.prototype, OBSERVABLE, function () { return this; });\n\n$export($export.G, { Observable: $Observable });\n\nrequire('./_set-species')('Observable');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar navigator = global.navigator;\nvar slice = [].slice;\nvar MSIE = !!navigator && /MSIE .\\./.test(navigator.userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","require('../../modules/core.regexp.escape');\nmodule.exports = require('../../modules/_core').RegExp.escape;\n","// https://github.com/benjamingr/RexExp.escape\nvar $export = require('./_export');\nvar $re = require('./_replacer')(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\n$export($export.S, 'RegExp', { escape: function escape(it) { return $re(it); } });\n","module.exports = function (regExp, replace) {\n var replacer = replace === Object(replace) ? function (part) {\n return replace[part];\n } : replace;\n return function (it) {\n return String(it).replace(regExp, replacer);\n };\n};\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Require common CSS here; this will make webpack process it into bundle.css.\n// Our own CSS (which is themed) is imported via separate webpack entry points\n// in webpack.config.js\nrequire('gemini-scrollbar/gemini-scrollbar.css');\nrequire('gfm.css/gfm.css');\nrequire('highlight.js/styles/github.css');\nrequire('draft-js/dist/Draft.css');\n\nimport React from 'react';\n// add React and ReactPerf to the global namespace, to make them easier to\n// access via the console\nglobal.React = React;\nif (process.env.NODE_ENV !== 'production') {\n global.Perf = require('react-addons-perf');\n}\n\nimport RunModernizrTests from './modernizr'; // this side-effects a global\nimport ReactDOM from 'react-dom';\nimport sdk from 'matrix-react-sdk';\nimport PlatformPeg from 'matrix-react-sdk/lib/PlatformPeg';\nsdk.loadSkin(require('../component-index'));\nimport VectorConferenceHandler from 'matrix-react-sdk/lib/VectorConferenceHandler';\nimport Promise from 'bluebird';\nimport request from 'browser-request';\nimport * as languageHandler from 'matrix-react-sdk/lib/languageHandler';\n// Also import _t directly so we can call it just `_t` as this is what gen-i18n.js expects\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nimport url from 'url';\n\nimport {parseQs, parseQsFromFragment} from './url_utils';\nimport Platform from './platform';\n\nimport MatrixClientPeg from 'matrix-react-sdk/lib/MatrixClientPeg';\nimport SettingsStore, {SettingLevel} from \"matrix-react-sdk/lib/settings/SettingsStore\";\nimport Tinter from 'matrix-react-sdk/lib/Tinter';\nimport SdkConfig from \"matrix-react-sdk/lib/SdkConfig\";\n\nimport rageshake from \"matrix-react-sdk/lib/rageshake/rageshake\";\n\nimport CallHandler from 'matrix-react-sdk/lib/CallHandler';\n\nimport {getVectorConfig} from './getconfig';\n\nlet lastLocationHashSet = null;\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\nPromise.config({warnings: false});\n\nfunction initRageshake() {\n rageshake.init().then(() => {\n console.log(\"Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.\");\n\n window.addEventListener('beforeunload', (e) => {\n console.log('riot-web closing');\n // try to flush the logs to indexeddb\n rageshake.flush();\n });\n\n rageshake.cleanup();\n }, (err) => {\n console.error(\"Failed to initialise rageshake: \" + err);\n });\n}\n\nfunction checkBrowserFeatures(featureList) {\n if (!window.Modernizr) {\n console.error(\"Cannot check features - Modernizr global is missing.\");\n return false;\n }\n var featureComplete = true;\n for (var i = 0; i < featureList.length; i++) {\n if (window.Modernizr[featureList[i]] === undefined) {\n console.error(\n \"Looked for feature '%s' but Modernizr has no results for this. \" +\n \"Has it been configured correctly?\", featureList[i]\n );\n return false;\n }\n if (window.Modernizr[featureList[i]] === false) {\n console.error(\"Browser missing feature: '%s'\", featureList[i]);\n // toggle flag rather than return early so we log all missing features\n // rather than just the first.\n featureComplete = false;\n }\n }\n return featureComplete;\n}\n\n// Parse the given window.location and return parameters that can be used when calling\n// MatrixChat.showScreen(screen, params)\nfunction getScreenFromLocation(location) {\n const fragparts = parseQsFromFragment(location);\n return {\n screen: fragparts.location.substring(1),\n params: fragparts.params,\n }\n}\n\n// Here, we do some crude URL analysis to allow\n// deep-linking.\nfunction routeUrl(location) {\n if (!window.matrixChat) return;\n\n console.log(\"Routing URL \", location.href);\n const s = getScreenFromLocation(location);\n window.matrixChat.showScreen(s.screen, s.params);\n}\n\nfunction onHashChange(ev) {\n if (decodeURIComponent(window.location.hash) == lastLocationHashSet) {\n // we just set this: no need to route it!\n return;\n }\n routeUrl(window.location);\n}\n\n// This will be called whenever the SDK changes screens,\n// so a web page can update the URL bar appropriately.\nfunction onNewScreen(screen) {\n console.log(\"newscreen \"+screen);\n var hash = '#/' + screen;\n lastLocationHashSet = hash;\n window.location.hash = hash;\n};\n\n// We use this to work out what URL the SDK should\n// pass through when registering to allow the user to\n// click back to the client having registered.\n// It's up to us to recognise if we're loaded with\n// this URL and tell MatrixClient to resume registration.\n//\n// If we're in electron, we should never pass through a file:// URL otherwise\n// the identity server will try to 302 the browser to it, which breaks horribly.\n// so in that instance, hardcode to use riot.im/app for now instead.\nfunction makeRegistrationUrl(params) {\n let url;\n if (window.location.protocol === \"file:\") {\n url = 'https://riot.im/app/#/register';\n } else {\n url = (\n window.location.protocol + '//' +\n window.location.host +\n window.location.pathname +\n '#/register'\n );\n }\n\n const keys = Object.keys(params);\n for (let i = 0; i < keys.length; ++i) {\n if (i == 0) {\n url += '?';\n } else {\n url += '&';\n }\n const k = keys[i];\n url += k + '=' + encodeURIComponent(params[k]);\n }\n return url;\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n\nfunction onTokenLoginCompleted() {\n // if we did a token login, we're now left with the token, hs and is\n // url as query params in the url; a little nasty but let's redirect to\n // clear them.\n var parsedUrl = url.parse(window.location.href);\n parsedUrl.search = \"\";\n var formatted = url.format(parsedUrl);\n console.log(\"Redirecting to \" + formatted + \" to drop loginToken \" +\n \"from queryparams\");\n window.location.href = formatted;\n}\n\nasync function loadApp() {\n initRageshake();\n MatrixClientPeg.setIndexedDbWorkerScript(window.vector_indexeddb_worker_script);\n CallHandler.setConferenceHandler(VectorConferenceHandler);\n\n window.addEventListener('hashchange', onHashChange);\n\n await loadLanguage();\n\n const fragparts = parseQsFromFragment(window.location);\n const params = parseQs(window.location);\n\n // set the platform for react sdk (our Platform object automatically picks the right one)\n PlatformPeg.set(new Platform());\n\n // Load the config file. First try to load up a domain-specific config of the\n // form \"config.$domain.json\" and if that fails, fall back to config.json.\n let configJson;\n let configError;\n try {\n configJson = await getVectorConfig();\n } catch (e) {\n configError = e;\n }\n\n // XXX: We call this twice, once here and once in MatrixChat as a prop. We call it here to ensure\n // granular settings are loaded correctly and to avoid duplicating the override logic for the theme.\n SdkConfig.put(configJson);\n\n // don't try to redirect to the native apps if we're\n // verifying a 3pid (but after we've loaded the config)\n // or if the user is following a deep link\n // (https://github.com/vector-im/riot-web/issues/7378)\n const preventRedirect = fragparts.params.client_secret || fragparts.location.length > 0;\n\n if (!preventRedirect) {\n const isIos = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n const isAndroid = /Android/.test(navigator.userAgent);\n if (isIos || isAndroid) {\n if (!document.cookie.split(';').some((c) => c.startsWith('mobile_redirect_to_guide'))) {\n window.location = \"mobile_guide/\";\n return;\n }\n }\n }\n\n // as quickly as we possibly can, set a default theme...\n const styleElements = Object.create(null);\n let a;\n const theme = SettingsStore.getValue(\"theme\");\n for (let i = 0; (a = document.getElementsByTagName(\"link\")[i]); i++) {\n const href = a.getAttribute(\"href\");\n if (!href) continue;\n // shouldn't we be using the 'title' tag rather than the href?\n const match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n if (match[1] === theme) {\n // remove the disabled flag off the stylesheet\n\n // Firefox requires setting the attribute to false, so do\n // that instead of removing it. Related:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = false;\n\n // in case the Tinter.tint() in MatrixChat fires before the\n // CSS has actually loaded (which in practice happens)...\n\n // This if fixes Tinter.setTheme to not fire on Firefox\n // in case it is the first time loading Riot.\n // `InstallTrigger` is a Object which only exists on Firefox\n // (it is used for their Plugins) and can be used as a\n // feature check. \n // Firefox loads css always before js. This is why we dont use\n // onload or it's EventListener as thoose will never trigger.\n if (typeof InstallTrigger !== 'undefined') {\n Tinter.setTheme(theme);\n } else {\n // FIXME: we should probably block loading the app or even\n // showing a spinner until the theme is loaded, to avoid\n // flashes of unstyled content.\n a.onload = () => {\n Tinter.setTheme(theme);\n };\n }\n } else {\n // Firefox requires this to not be done via `setAttribute`\n // or via HTML.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1281135\n a.disabled = true;\n }\n }\n }\n\n const validBrowser = checkBrowserFeatures([\n \"displaytable\", \"flexbox\", \"es5object\", \"es5function\", \"localstorage\",\n \"objectfit\", \"indexeddb\", \"webworkers\",\n ]);\n\n const acceptInvalidBrowser = window.localStorage && window.localStorage.getItem('mx_accepts_unsupported_browser');\n\n console.log(\"Vector starting at \"+window.location);\n if (configError) {\n window.matrixChat = ReactDOM.render(<div className=\"error\">\n Unable to load config file: please refresh the page to try again.\n </div>, document.getElementById('matrixchat'));\n } else if (validBrowser || acceptInvalidBrowser) {\n const platform = PlatformPeg.get();\n platform.startUpdater();\n\n const MatrixChat = sdk.getComponent('structures.MatrixChat');\n window.matrixChat = ReactDOM.render(\n <MatrixChat\n onNewScreen={onNewScreen}\n makeRegistrationUrl={makeRegistrationUrl}\n ConferenceHandler={VectorConferenceHandler}\n config={configJson}\n realQueryParams={params}\n startingFragmentQueryParams={fragparts.params}\n enableGuest={!configJson.disable_guests}\n onTokenLoginCompleted={onTokenLoginCompleted}\n initialScreenAfterLogin={getScreenFromLocation(window.location)}\n defaultDeviceDisplayName={platform.getDefaultDeviceDisplayName()}\n />,\n document.getElementById('matrixchat')\n );\n } else {\n console.error(\"Browser is missing required features.\");\n // take to a different landing page to AWOOOOOGA at the user\n var CompatibilityPage = sdk.getComponent(\"structures.CompatibilityPage\");\n window.matrixChat = ReactDOM.render(\n <CompatibilityPage onAccept={function() {\n if (window.localStorage) window.localStorage.setItem('mx_accepts_unsupported_browser', true);\n console.log(\"User accepts the compatibility risks.\");\n loadApp();\n }} />,\n document.getElementById('matrixchat')\n );\n }\n}\n\nasync function loadLanguage() {\n const prefLang = SettingsStore.getValue(\"language\", null, /*excludeDefault=*/true);\n let langs = [];\n\n if (!prefLang) {\n languageHandler.getLanguagesFromBrowser().forEach((l) => {\n langs.push(...languageHandler.getNormalizedLanguageKeys(l));\n });\n } else {\n langs = [prefLang];\n }\n try {\n await languageHandler.setLanguage(langs);\n document.documentElement.setAttribute(\"lang\", languageHandler.getCurrentLanguage());\n } catch (e) {\n console.error(\"Unable to set language\", e);\n }\n}\n\nloadApp();\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Forked from fbjs/warning:\n * https://github.com/facebook/fbjs/blob/e66ba20ad5be433eb54423f2b097d829324d9de6/packages/fbjs/src/__forks__/warning.js\n *\n * Only change is we use console.warn instead of console.error,\n * and do nothing when 'console' is not supported.\n * This really simplifies the code.\n * ---\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar lowPriorityWarning = function () {};\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function (format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.warn(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n lowPriorityWarning = function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = lowPriorityWarning;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler\n};\n\nmodule.exports = PooledClass;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = \" It looks like you're using an element created by a different \" + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactElement'),\n isValidElement = _require.isValidElement;\n\nvar factory = require('prop-types/factory');\n\nmodule.exports = factory(isValidElement);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.6.2';","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _require = require('./ReactBaseClasses'),\n Component = _require.Component;\n\nvar _require2 = require('./ReactElement'),\n isValidElement = _require2.isValidElement;\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\nvar factory = require('create-react-class/factory');\n\nmodule.exports = factory(Component, isValidElement, ReactNoopUpdateQueue);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar _invariant = require('fbjs/lib/invariant');\n\nif (process.env.NODE_ENV !== 'production') {\n var warning = require('fbjs/lib/warning');\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {\n ReactPropTypeLocationNames = {};\n}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (process.env.NODE_ENV !== 'production') {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n _invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (process.env.NODE_ENV !== 'production') {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;","/*! modernizr 3.3.1 (Custom Build) | MIT *\n * http://modernizr.com/download/?-displaytable-es5-flexbox-indexeddb-localstorage-objectfit-webworkers-setclasses-cssclassprefix:modernizr_ !*/\n!function(window,document,undefined){function is(e,t){return typeof e===t}function testRunner(){var e,t,r,n,o,i,s;for(var d in tests)if(tests.hasOwnProperty(d)){if(e=[],t=tests[d],t.name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(r=0;r<t.options.aliases.length;r++)e.push(t.options.aliases[r].toLowerCase());for(n=is(t.fn,\"function\")?t.fn():t.fn,o=0;o<e.length;o++)i=e[o],s=i.split(\".\"),1===s.length?Modernizr[s[0]]=n:(!Modernizr[s[0]]||Modernizr[s[0]]instanceof Boolean||(Modernizr[s[0]]=new Boolean(Modernizr[s[0]])),Modernizr[s[0]][s[1]]=n),classes.push((n?\"\":\"no-\")+s.join(\"-\"))}}function setClasses(e){var t=docElement.className,r=Modernizr._config.classPrefix||\"\";if(isSVG&&(t=t.baseVal),Modernizr._config.enableJSClass){var n=new RegExp(\"(^|\\\\s)\"+r+\"no-js(\\\\s|$)\");t=t.replace(n,\"$1\"+r+\"js$2\")}Modernizr._config.enableClasses&&(t+=\" \"+r+e.join(\" \"+r),isSVG?docElement.className.baseVal=t:docElement.className=t)}function createElement(){return\"function\"!=typeof document.createElement?document.createElement(arguments[0]):isSVG?document.createElementNS.call(document,\"http://www.w3.org/2000/svg\",arguments[0]):document.createElement.apply(document,arguments)}function getBody(){var e=document.body;return e||(e=createElement(isSVG?\"svg\":\"body\"),e.fake=!0),e}function injectElementWithStyles(e,t,r,n){var o,i,s,d,a=\"modernizr\",l=createElement(\"div\"),c=getBody();if(parseInt(r,10))for(;r--;)s=createElement(\"div\"),s.id=n?n[r]:a+(r+1),l.appendChild(s);return o=createElement(\"style\"),o.type=\"text/css\",o.id=\"s\"+a,(c.fake?c:l).appendChild(o),c.appendChild(l),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),l.id=a,c.fake&&(c.style.background=\"\",c.style.overflow=\"hidden\",d=docElement.style.overflow,docElement.style.overflow=\"hidden\",docElement.appendChild(c)),i=t(l,e),c.fake?(c.parentNode.removeChild(c),docElement.style.overflow=d,docElement.offsetHeight):l.parentNode.removeChild(l),!!i}function contains(e,t){return!!~(\"\"+e).indexOf(t)}function domToCSS(e){return e.replace(/([A-Z])/g,function(e,t){return\"-\"+t.toLowerCase()}).replace(/^ms-/,\"-ms-\")}function nativeTestProps(e,t){var r=e.length;if(\"CSS\"in window&&\"supports\"in window.CSS){for(;r--;)if(window.CSS.supports(domToCSS(e[r]),t))return!0;return!1}if(\"CSSSupportsRule\"in window){for(var n=[];r--;)n.push(\"(\"+domToCSS(e[r])+\":\"+t+\")\");return n=n.join(\" or \"),injectElementWithStyles(\"@supports (\"+n+\") { #modernizr { position: absolute; } }\",function(e){return\"absolute\"==getComputedStyle(e,null).position})}return undefined}function cssToDOM(e){return e.replace(/([a-z])-([a-z])/g,function(e,t,r){return t+r.toUpperCase()}).replace(/^-/,\"\")}function testProps(e,t,r,n){function o(){s&&(delete mStyle.style,delete mStyle.modElem)}if(n=is(n,\"undefined\")?!1:n,!is(r,\"undefined\")){var i=nativeTestProps(e,r);if(!is(i,\"undefined\"))return i}for(var s,d,a,l,c,f=[\"modernizr\",\"tspan\"];!mStyle.style;)s=!0,mStyle.modElem=createElement(f.shift()),mStyle.style=mStyle.modElem.style;for(a=e.length,d=0;a>d;d++)if(l=e[d],c=mStyle.style[l],contains(l,\"-\")&&(l=cssToDOM(l)),mStyle.style[l]!==undefined){if(n||is(r,\"undefined\"))return o(),\"pfx\"==t?l:!0;try{mStyle.style[l]=r}catch(u){}if(mStyle.style[l]!=c)return o(),\"pfx\"==t?l:!0}return o(),!1}function fnBind(e,t){return function(){return e.apply(t,arguments)}}function testDOMProps(e,t,r){var n;for(var o in e)if(e[o]in t)return r===!1?e[o]:(n=t[e[o]],is(n,\"function\")?fnBind(n,r||t):n);return!1}function testPropsAll(e,t,r,n,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+\" \"+cssomPrefixes.join(i+\" \")+i).split(\" \");return is(t,\"string\")||is(t,\"undefined\")?testProps(s,t,n,o):(s=(e+\" \"+domPrefixes.join(i+\" \")+i).split(\" \"),testDOMProps(s,t,r))}function testAllProps(e,t,r){return testPropsAll(e,undefined,undefined,t,r)}var tests=[],ModernizrProto={_version:\"3.3.1\",_config:{classPrefix:\"modernizr_\",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var r=this;setTimeout(function(){t(r[e])},0)},addTest:function(e,t,r){tests.push({name:e,fn:t,options:r})},addAsyncTest:function(e){tests.push({name:null,fn:e})}},Modernizr=function(){};Modernizr.prototype=ModernizrProto,Modernizr=new Modernizr;var classes=[],docElement=document.documentElement,isSVG=\"svg\"===docElement.nodeName.toLowerCase(),testStyles=ModernizrProto.testStyles=injectElementWithStyles;testStyles(\"#modernizr{display: table; direction: ltr}#modernizr div{display: table-cell; padding: 10px}\",function(e){var t,r=e.childNodes;t=r[0].offsetLeft<r[1].offsetLeft,Modernizr.addTest(\"displaytable\",t,{aliases:[\"display-table\"]})},2);var omPrefixes=\"Moz O ms Webkit\",cssomPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.split(\" \"):[];ModernizrProto._cssomPrefixes=cssomPrefixes;var modElem={elem:createElement(\"modernizr\")};Modernizr._q.push(function(){delete modElem.elem});var mStyle={style:modElem.elem.style};Modernizr._q.unshift(function(){delete mStyle.style});var domPrefixes=ModernizrProto._config.usePrefixes?omPrefixes.toLowerCase().split(\" \"):[];ModernizrProto._domPrefixes=domPrefixes,ModernizrProto.testAllProps=testPropsAll,ModernizrProto.testAllProps=testAllProps,Modernizr.addTest(\"flexbox\",testAllProps(\"flexBasis\",\"1px\",!0)),Modernizr.addTest(\"es5array\",function(){return!!(Array.prototype&&Array.prototype.every&&Array.prototype.filter&&Array.prototype.forEach&&Array.prototype.indexOf&&Array.prototype.lastIndexOf&&Array.prototype.map&&Array.prototype.some&&Array.prototype.reduce&&Array.prototype.reduceRight&&Array.isArray)}),Modernizr.addTest(\"es5date\",function(){var e=\"2013-04-12T06:06:37.307Z\",t=!1;try{t=!!Date.parse(e)}catch(r){}return!!(Date.now&&Date.prototype&&Date.prototype.toISOString&&Date.prototype.toJSON&&t)}),Modernizr.addTest(\"es5function\",function(){return!(!Function.prototype||!Function.prototype.bind)}),Modernizr.addTest(\"es5object\",function(){return!!(Object.keys&&Object.create&&Object.getPrototypeOf&&Object.getOwnPropertyNames&&Object.isSealed&&Object.isFrozen&&Object.isExtensible&&Object.getOwnPropertyDescriptor&&Object.defineProperty&&Object.defineProperties&&Object.seal&&Object.freeze&&Object.preventExtensions)}),Modernizr.addTest(\"strictmode\",function(){\"use strict\";return!this}()),Modernizr.addTest(\"es5string\",function(){return!(!String.prototype||!String.prototype.trim)}),Modernizr.addTest(\"json\",\"JSON\"in window&&\"parse\"in JSON&&\"stringify\"in JSON),Modernizr.addTest(\"es5syntax\",function(){var value,obj,stringAccess,getter,setter,reservedWords,zeroWidthChars;try{return stringAccess=eval('\"foobar\"[3] === \"b\"'),getter=eval(\"({ get x(){ return 1 } }).x === 1\"),eval(\"({ set x(v){ value = v; } }).x = 1\"),setter=1===value,eval(\"obj = ({ if: 1 })\"),reservedWords=1===obj[\"if\"],zeroWidthChars=eval(\"_‌‍ = true\"),stringAccess&&getter&&setter&&reservedWords&&zeroWidthChars}catch(ignore){return!1}}),Modernizr.addTest(\"es5undefined\",function(){var e,t;try{t=window.undefined,window.undefined=12345,e=\"undefined\"==typeof window.undefined,window.undefined=t}catch(r){return!1}return e}),Modernizr.addTest(\"es5\",function(){return!!(Modernizr.es5array&&Modernizr.es5date&&Modernizr.es5function&&Modernizr.es5object&&Modernizr.strictmode&&Modernizr.es5string&&Modernizr.json&&Modernizr.es5syntax&&Modernizr.es5undefined)});var atRule=function(e){var t,r=prefixes.length,n=window.CSSRule;if(\"undefined\"==typeof n)return undefined;if(!e)return!1;if(e=e.replace(/^@/,\"\"),t=e.replace(/-/g,\"_\").toUpperCase()+\"_RULE\",t in n)return\"@\"+e;for(var o=0;r>o;o++){var i=prefixes[o],s=i.toUpperCase()+\"_\"+t;if(s in n)return\"@-\"+i.toLowerCase()+\"-\"+e}return!1};ModernizrProto.atRule=atRule;var prefixed=ModernizrProto.prefixed=function(e,t,r){return 0===e.indexOf(\"@\")?atRule(e):(-1!=e.indexOf(\"-\")&&(e=cssToDOM(e)),t?testPropsAll(e,t,r):testPropsAll(e,\"pfx\"))};Modernizr.addTest(\"objectfit\",!!prefixed(\"objectFit\"),{aliases:[\"object-fit\"]}),Modernizr.addTest(\"localstorage\",function(){var e=\"modernizr\";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(t){return!1}}),Modernizr.addTest(\"webworkers\",\"Worker\"in window);var indexeddb;try{indexeddb=prefixed(\"indexedDB\",window)}catch(e){}Modernizr.addTest(\"indexeddb\",!!indexeddb),indexeddb&&Modernizr.addTest(\"indexeddb.deletedatabase\",\"deleteDatabase\"in indexeddb),testRunner(),setClasses(classes),delete ModernizrProto.addTest,delete ModernizrProto.addAsyncTest;for(var i=0;i<Modernizr._q.length;i++)Modernizr._q[i]();window.Modernizr=Modernizr}(window,document);","module.exports = { \"default\": require(\"core-js/library/fn/object/prevent-extensions\"), __esModule: true };","require('../../modules/es6.object.prevent-extensions');\nmodule.exports = require('../../modules/_core').Object.preventExtensions;\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","require('../../modules/es6.object.freeze');\nmodule.exports = require('../../modules/_core').Object.freeze;\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/seal\"), __esModule: true };","require('../../modules/es6.object.seal');\nmodule.exports = require('../../modules/_core').Object.seal;\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-properties\"), __esModule: true };","require('../../modules/es6.object.define-properties');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperties(T, D) {\n return $Object.defineProperties(T, D);\n};\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-extensible\"), __esModule: true };","require('../../modules/es6.object.is-extensible');\nmodule.exports = require('../../modules/_core').Object.isExtensible;\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-frozen\"), __esModule: true };","require('../../modules/es6.object.is-frozen');\nmodule.exports = require('../../modules/_core').Object.isFrozen;\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/is-sealed\"), __esModule: true };","require('../../modules/es6.object.is-sealed');\nmodule.exports = require('../../modules/_core').Object.isSealed;\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-names\"), __esModule: true };","require('../../modules/es6.object.get-own-property-names');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyNames(it) {\n return $Object.getOwnPropertyNames(it);\n};\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n /* eslint-enable camelcase */\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, \"It looks like you're using a minified copy of the development build \" + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar inputValueTracking = require('./inputValueTracking');\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\nfunction createAndAccumulateChangeEvent(inst, nativeEvent, target) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, target);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getInstIfValueChanged(targetInst, nativeEvent) {\n var updated = inputValueTracking.updateValueIfChanged(targetInst);\n var simulated = nativeEvent.simulated === true && ChangeEventPlugin._allowSimulatedPassThrough;\n\n if (updated || simulated) {\n return targetInst;\n }\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\n\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\n activeElement = null;\n activeElementInst = null;\n}\n\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n if (getInstIfValueChanged(activeElementInst, nativeEvent)) {\n manualDispatchChangeEvent(nativeEvent);\n }\n}\n\nfunction handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventPolyfill(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n return getInstIfValueChanged(activeElementInst, nativeEvent);\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n var nodeName = elem.nodeName;\n return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topClick') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction getTargetInstForInputOrChangeEvent(topLevelType, targetInst, nativeEvent) {\n if (topLevelType === 'topInput' || topLevelType === 'topChange') {\n return getInstIfValueChanged(targetInst, nativeEvent);\n }\n}\n\nfunction handleControlledInputBlur(inst, node) {\n // TODO: In IE, inst is occasionally null. Why?\n if (inst == null) {\n return;\n }\n\n // Fiber and ReactDOM keep wrapper state in separate places\n var state = inst._wrapperState || node._wrapperState;\n\n if (!state || !state.controlled || node.type !== 'number') {\n return;\n }\n\n // If controlled, assign the value attribute to the current value on blur\n var value = '' + node.value;\n if (node.getAttribute('value') !== value) {\n node.setAttribute('value', value);\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n eventTypes: eventTypes,\n\n _allowSimulatedPassThrough: true,\n _isInputEventSupported: isInputEventSupported,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventPolyfill;\n handleEventFunc = handleEventsForInputEventPolyfill;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst, nativeEvent);\n if (inst) {\n var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n\n // When blurring, set the value attribute for number inputs\n if (topLevelType === 'topBlur') {\n handleControlledInputBlur(targetInst, targetNode);\n }\n }\n};\n\nmodule.exports = ChangeEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n};\n\nmodule.exports = ReactOwner;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n};\n\nmodule.exports = EnterLeaveEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n controlsList: 0,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {},\n DOMMutationMethods: {\n value: function (node, value) {\n if (value == null) {\n return node.removeAttribute('value');\n }\n\n // Number inputs get special treatment due to some edge cases in\n // Chrome. Let everything else assign the value attribute as normal.\n // https://github.com/facebook/react/issues/7253#issuecomment-236074326\n if (node.type !== 'number' || node.hasAttribute('value') === false) {\n node.setAttribute('value', '' + value);\n } else if (node.validity && !node.validity.badInput && node.ownerDocument.activeElement !== node) {\n // Don't assign an attribute if validation reports bad\n // input. Chrome will clear the value. Additionally, don't\n // operate on inputs that have focus, otherwise Chrome might\n // strip off trailing decimal places and cause the user's\n // cursor position to jump to the beginning of the input.\n //\n // In ReactDOMInput, we have an onBlur event that will trigger\n // this function again when focus is lost.\n node.setAttribute('value', '' + value);\n }\n }\n }\n};\n\nmodule.exports = HTMLDOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n};\n\nmodule.exports = Danger;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar inputValueTracking = require('./inputValueTracking');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { string: true, number: true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), \"This browser doesn't support the `onScroll` event\") : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trackInputValue() {\n inputValueTracking.track(this);\n}\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n // NOTE: menuitem's close tag should be omitted, but that causes problems.\n};\n\nvar newlineEatingTags = {\n listing: true,\n pre: true,\n textarea: true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n menuitem: true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trackInputValue, this);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n // TODO: Validate that text is allowed as a child of this node\n if (contentToUse != null) {\n // Avoid setting textContent when the text is empty. In IE11 setting\n // textContent on a text area will cause the placeholder to not\n // show within the textarea until it has been focused and blurred again.\n // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n if (contentToUse !== '') {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n\n // We also check that we haven't missed a value update, such as a\n // Radio group shifting the checked value to another named radio input.\n inputValueTracking.updateValueIfChanged(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'input':\n case 'textarea':\n inputValueTracking.stopTracking(this);\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, \"Style property values shouldn't contain a semicolon.%s \" + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styleValue, component);\n }\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component, isCustomProperty) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var isCustomProperty = styleName.indexOf('--') === 0;\n if (process.env.NODE_ENV !== 'production') {\n if (!isCustomProperty) {\n warnValidStyle(styleName, styles[styleName], component);\n }\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component, isCustomProperty);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (isCustomProperty) {\n style.setProperty(styleName, styleValue);\n } else if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n};\n\nmodule.exports = CSSPropertyOperations;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component, isCustomProperty) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isCustomProperty || isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n controlled: isControlled(props)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n if (value === 0 && node.value === '') {\n node.value = '0';\n // Note: IE9 reports a number inputs as 'text', so check props instead.\n } else if (props.type === 'number') {\n // Simulate `input.valueAsNumber`. IE9 does not support it\n var valueAsNumber = parseFloat(node.value, 10) || 0;\n\n if (\n // eslint-disable-next-line\n value != valueAsNumber ||\n // eslint-disable-next-line\n value == valueAsNumber && node.value != value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else if (node.value !== '' + value) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n node.value = '' + value;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n // In Chrome, assigning defaultValue to certain input types triggers input validation.\n // For number inputs, the display value loses trailing decimal points. For email inputs,\n // Chrome raises \"The specified value <x> is not a valid email address\".\n //\n // Here we check to see if the defaultValue has actually changed, avoiding these problems\n // when the user is inputting text\n //\n // https://github.com/facebook/react/issues/7253\n if (node.defaultValue !== '' + props.defaultValue) {\n node.defaultValue = '' + props.defaultValue;\n }\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n};\n\nmodule.exports = ReactDOMOption;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var textContent = node.textContent;\n\n // Only set node.value if textContent is equal to the expected\n // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n // will populate textContent as well.\n // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n if (textContent === inst._wrapperState.initialValue) {\n node.value = textContent;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n }\n};\n\nmodule.exports = ReactMultiChild;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID) // 0 in production and for roots\n {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID) // 0 in production and for roots\n {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n};\n\nmodule.exports = ReactChildReconciler;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved || inst.state, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production' && !doConstruct) {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'child context');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n};\n\nmodule.exports = ReactCompositeComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMTextComponent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['abort', 'animationEnd', 'animationIteration', 'animationStart', 'blur', 'canPlay', 'canPlayThrough', 'click', 'contextMenu', 'copy', 'cut', 'doubleClick', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'focus', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'progress', 'rateChange', 'reset', 'scroll', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchMove', 'touchStart', 'transitionEnd', 'volumeChange', 'waiting', 'wheel'].forEach(function (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n};\n\nmodule.exports = SimpleEventPlugin;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n Esc: 'Escape',\n Spacebar: ' ',\n Left: 'ArrowLeft',\n Up: 'ArrowUp',\n Right: 'ArrowRight',\n Down: 'ArrowDown',\n Del: 'Delete',\n Win: 'OS',\n Menu: 'ContextMenu',\n Apps: 'ContextMenu',\n Scroll: 'ScrollLock',\n MozPrintableKey: 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1',\n 113: 'F2',\n 114: 'F3',\n 115: 'F4',\n 116: 'F5',\n 117: 'F6',\n 118: 'F7',\n 119: 'F8',\n 120: 'F9',\n 121: 'F10',\n 122: 'F11',\n 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;","\"use strict\";\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Skinner = function () {\n function Skinner() {\n (0, _classCallCheck3.default)(this, Skinner);\n\n this.components = null;\n }\n\n (0, _createClass3.default)(Skinner, [{\n key: \"getComponent\",\n value: function getComponent(name) {\n if (this.components === null) {\n throw new Error(\"Attempted to get a component before a skin has been loaded.\" + \" This is probably because either:\" + \" a) Your app has not called sdk.loadSkin(), or\" + \" b) A component has called getComponent at the root level\");\n }\n var comp = this.components[name];\n // XXX: Temporarily also try 'views.' as we're currently\n // leaving the 'views.' off views.\n if (!comp) {\n comp = this.components['views.' + name];\n }\n\n if (!comp) {\n throw new Error(\"No such component: \" + name);\n }\n\n // components have to be functions.\n var validType = typeof comp === 'function';\n if (!validType) {\n throw new Error(\"Not a valid component: \" + name + \".\");\n }\n return comp;\n }\n }, {\n key: \"load\",\n value: function load(skinObject) {\n if (this.components !== null) {\n throw new Error(\"Attempted to load a skin while a skin is already loaded\" + \"If you want to change the active skin, call resetSkin first\");\n }\n this.components = {};\n var compKeys = (0, _keys2.default)(skinObject.components);\n for (var i = 0; i < compKeys.length; ++i) {\n var comp = skinObject.components[compKeys[i]];\n this.addComponent(compKeys[i], comp);\n }\n }\n }, {\n key: \"addComponent\",\n value: function addComponent(name, comp) {\n var slot = name;\n if (comp.replaces !== undefined) {\n if (comp.replaces.indexOf('.') > -1) {\n slot = comp.replaces;\n } else {\n slot = name.substr(0, name.lastIndexOf('.') + 1) + comp.replaces.split('.').pop();\n }\n }\n this.components[slot] = comp;\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.components = null;\n }\n }]);\n return Skinner;\n}();\n\n// We define one Skinner globally, because the intention is\n// very much that it is a singleton. Relying on there only being one\n// copy of the module can be dicey and not work as browserify's\n// behaviour with multiple copies of files etc. is erratic at best.\n// XXX: We can still end up with the same file twice in the resulting\n// JS bundle which is nonideal.\n// See https://derickbailey.com/2016/03/09/creating-a-true-singleton-in-node-js-with-es6-symbols/\n// or https://nodejs.org/api/modules.html#modules_module_caching_caveats\n// (\"Modules are cached based on their resolved filename\")\n\n\nif (global.mxSkinner === undefined) {\n global.mxSkinner = new Skinner();\n}\nmodule.exports = global.mxSkinner;\n//# sourceMappingURL=Skinner.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction placeHoldersCount (b64) {\n var len = b64.length\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n}\n\nfunction byteLength (b64) {\n // base64 is 4/3 + up to two characters of the original data\n return b64.length * 3 / 4 - placeHoldersCount(b64)\n}\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n placeHolders = placeHoldersCount(b64)\n\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** The {@link module:ContentHelpers} object */\n\nmodule.exports.ContentHelpers = require(\"./content-helpers\");\n/** The {@link module:models/event.MatrixEvent|MatrixEvent} class. */\nmodule.exports.MatrixEvent = require(\"./models/event\").MatrixEvent;\n/** The {@link module:models/event.EventStatus|EventStatus} enum. */\nmodule.exports.EventStatus = require(\"./models/event\").EventStatus;\n/** The {@link module:store/memory.MatrixInMemoryStore|MatrixInMemoryStore} class. */\nmodule.exports.MatrixInMemoryStore = require(\"./store/memory\").MatrixInMemoryStore;\n/** The {@link module:store/indexeddb.IndexedDBStore|IndexedDBStore} class. */\nmodule.exports.IndexedDBStore = require(\"./store/indexeddb\").IndexedDBStore;\n/** The {@link module:store/indexeddb.IndexedDBStoreBackend|IndexedDBStoreBackend} class. */\nmodule.exports.IndexedDBStoreBackend = require(\"./store/indexeddb\").IndexedDBStoreBackend;\n/** The {@link module:sync-accumulator.SyncAccumulator|SyncAccumulator} class. */\nmodule.exports.SyncAccumulator = require(\"./sync-accumulator\");\n/** The {@link module:http-api.MatrixHttpApi|MatrixHttpApi} class. */\nmodule.exports.MatrixHttpApi = require(\"./http-api\").MatrixHttpApi;\n/** The {@link module:http-api.MatrixError|MatrixError} class. */\nmodule.exports.MatrixError = require(\"./http-api\").MatrixError;\n/** The {@link module:errors.InvalidStoreError|InvalidStoreError} class. */\nmodule.exports.InvalidStoreError = require(\"./errors\").InvalidStoreError;\n/** The {@link module:client.MatrixClient|MatrixClient} class. */\nmodule.exports.MatrixClient = require(\"./client\").MatrixClient;\n/** The {@link module:models/room|Room} class. */\nmodule.exports.Room = require(\"./models/room\");\n/** The {@link module:models/group|Group} class. */\nmodule.exports.Group = require(\"./models/group\");\n/** The {@link module:models/event-timeline~EventTimeline} class. */\nmodule.exports.EventTimeline = require(\"./models/event-timeline\");\n/** The {@link module:models/event-timeline-set~EventTimelineSet} class. */\nmodule.exports.EventTimelineSet = require(\"./models/event-timeline-set\");\n/** The {@link module:models/room-member|RoomMember} class. */\nmodule.exports.RoomMember = require(\"./models/room-member\");\n/** The {@link module:models/room-state~RoomState|RoomState} class. */\nmodule.exports.RoomState = require(\"./models/room-state\");\n/** The {@link module:models/user~User|User} class. */\nmodule.exports.User = require(\"./models/user\");\n/** The {@link module:scheduler~MatrixScheduler|MatrixScheduler} class. */\nmodule.exports.MatrixScheduler = require(\"./scheduler\");\n/** The {@link module:store/session/webstorage~WebStorageSessionStore|\n * WebStorageSessionStore} class. <strong>Work in progress; unstable.</strong> */\nmodule.exports.WebStorageSessionStore = require(\"./store/session/webstorage\");\n/** True if crypto libraries are being used on this client. */\nmodule.exports.CRYPTO_ENABLED = require(\"./client\").CRYPTO_ENABLED;\n/** {@link module:content-repo|ContentRepo} utility functions. */\nmodule.exports.ContentRepo = require(\"./content-repo\");\n/** The {@link module:filter~Filter|Filter} class. */\nmodule.exports.Filter = require(\"./filter\");\n/** The {@link module:timeline-window~TimelineWindow} class. */\nmodule.exports.TimelineWindow = require(\"./timeline-window\").TimelineWindow;\n/** The {@link module:interactive-auth} class. */\nmodule.exports.InteractiveAuth = require(\"./interactive-auth\");\n\nmodule.exports.MemoryCryptoStore = require(\"./crypto/store/memory-crypto-store\").default;\nmodule.exports.IndexedDBCryptoStore = require(\"./crypto/store/indexeddb-crypto-store\").default;\n\n/**\n * Create a new Matrix Call.\n * @function\n * @param {module:client.MatrixClient} client The MatrixClient instance to use.\n * @param {string} roomId The room the call is in.\n * @return {module:webrtc/call~MatrixCall} The Matrix call or null if the browser\n * does not support WebRTC.\n */\nmodule.exports.createNewMatrixCall = require(\"./webrtc/call\").createNewMatrixCall;\n\n/**\n * Set an audio output device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioOutput = require('./webrtc/call').setAudioOutput;\n/**\n * Set an audio input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallAudioInput = require('./webrtc/call').setAudioInput;\n/**\n * Set a video input device to use for MatrixCalls\n * @function\n * @param {string=} deviceId the identifier for the device\n * undefined treated as unset\n */\nmodule.exports.setMatrixCallVideoInput = require('./webrtc/call').setVideoInput;\n\n// expose the underlying request object so different environments can use\n// different request libs (e.g. request or browser-request)\nvar request = void 0;\n/**\n * The function used to perform HTTP requests. Only use this if you want to\n * use a different HTTP library, e.g. Angular's <code>$http</code>. This should\n * be set prior to calling {@link createClient}.\n * @param {requestFunction} r The request function to use.\n */\nmodule.exports.request = function (r) {\n request = r;\n};\n\n/**\n * Return the currently-set request function.\n * @return {requestFunction} The current request function.\n */\nmodule.exports.getRequest = function () {\n return request;\n};\n\n/**\n * Apply wrapping code around the request function. The wrapper function is\n * installed as the new request handler, and when invoked it is passed the\n * previous value, along with the options and callback arguments.\n * @param {requestWrapperFunction} wrapper The wrapping function.\n */\nmodule.exports.wrapRequest = function (wrapper) {\n var origRequest = request;\n request = function request(options, callback) {\n return wrapper(origRequest, options, callback);\n };\n};\n\nvar cryptoStoreFactory = function cryptoStoreFactory() {\n return new module.exports.MemoryCryptoStore();\n};\n\n/**\n * Configure a different factory to be used for creating crypto stores\n *\n * @param {Function} fac a function which will return a new\n * {@link module:crypto.store.base~CryptoStore}.\n */\nmodule.exports.setCryptoStoreFactory = function (fac) {\n cryptoStoreFactory = fac;\n};\n\n/**\n * Construct a Matrix Client. Similar to {@link module:client~MatrixClient}\n * except that the 'request', 'store' and 'scheduler' dependencies are satisfied.\n * @param {(Object|string)} opts The configuration options for this client. If\n * this is a string, it is assumed to be the base URL. These configuration\n * options will be passed directly to {@link module:client~MatrixClient}.\n * @param {Object} opts.store If not set, defaults to\n * {@link module:store/memory.MatrixInMemoryStore}.\n * @param {Object} opts.scheduler If not set, defaults to\n * {@link module:scheduler~MatrixScheduler}.\n * @param {requestFunction} opts.request If not set, defaults to the function\n * supplied to {@link request} which defaults to the request module from NPM.\n *\n * @param {module:crypto.store.base~CryptoStore=} opts.cryptoStore\n * crypto store implementation. Calls the factory supplied to\n * {@link setCryptoStoreFactory} if unspecified; or if no factory has been\n * specified, uses a default implementation (indexeddb in the browser,\n * in-memory otherwise).\n *\n * @return {MatrixClient} A new matrix client.\n * @see {@link module:client~MatrixClient} for the full list of options for\n * <code>opts</code>.\n */\nmodule.exports.createClient = function (opts) {\n if (typeof opts === \"string\") {\n opts = {\n \"baseUrl\": opts\n };\n }\n opts.request = opts.request || request;\n opts.store = opts.store || new module.exports.MatrixInMemoryStore({\n localStorage: global.localStorage\n });\n opts.scheduler = opts.scheduler || new module.exports.MatrixScheduler();\n opts.cryptoStore = opts.cryptoStore || cryptoStoreFactory();\n return new module.exports.MatrixClient(opts);\n};\n\n/**\n * The request function interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will attempt to call this function in order to\n * perform an HTTP request.\n * @callback requestFunction\n * @param {Object} opts The options for this HTTP request.\n * @param {string} opts.uri The complete URI.\n * @param {string} opts.method The HTTP method.\n * @param {Object} opts.qs The query parameters to append to the URI.\n * @param {Object} opts.body The JSON-serializable object.\n * @param {boolean} opts.json True if this is a JSON request.\n * @param {Object} opts._matrix_opts The underlying options set for\n * {@link MatrixHttpApi}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * A wrapper for the request function interface.\n * @callback requestWrapperFunction\n * @param {requestFunction} origRequest The underlying request function being\n * wrapped\n * @param {Object} opts The options for this HTTP request, given in the same\n * form as {@link requestFunction}.\n * @param {requestCallback} callback The request callback.\n */\n\n/**\n * The request callback interface for performing HTTP requests. This matches the\n * API for the {@link https://github.com/request/request#requestoptions-callback|\n * request NPM module}. The SDK will implement a callback which meets this\n * interface in order to handle the HTTP response.\n * @callback requestCallback\n * @param {Error} err The error if one occurred, else falsey.\n * @param {Object} response The HTTP response which consists of\n * <code>{statusCode: {Number}, headers: {Object}}</code>\n * @param {Object} body The parsed HTTP response body.\n */\n//# sourceMappingURL=matrix.js.map","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An IndexedDB store backend where the actual backend sits in a web\n * worker.\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {string} workerScript URL to the worker script\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n * @param {Object} workerApi The web worker compatible interface object\n */\nvar RemoteIndexedDBStoreBackend = function RemoteIndexedDBStoreBackend(workerScript, dbName, workerApi) {\n this._workerScript = workerScript;\n this._dbName = dbName;\n this._workerApi = workerApi;\n this._worker = null;\n this._nextSeq = 0;\n // The currently in-flight requests to the actual backend\n this._inFlight = {\n // seq: promise,\n };\n // Once we start connecting, we keep the promise and re-use it\n // if we try to connect again\n this._startPromise = null;\n}; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nRemoteIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n return this._ensureStarted().then(function () {\n return _this._doCmd('connect');\n });\n },\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this2 = this;\n\n return this._ensureStarted().then(function () {\n return _this2._doCmd('clearDatabase');\n });\n },\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return this._doCmd('isNewlyCreated');\n },\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return this._doCmd('getSavedSync');\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return this._doCmd('getNextBatchToken');\n },\n\n setSyncData: function setSyncData(syncData) {\n return this._doCmd('setSyncData', [syncData]);\n },\n\n syncToDatabase: function syncToDatabase(users) {\n return this._doCmd('syncToDatabase', [users]);\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n return this._doCmd('getOutOfBandMembers', [roomId]);\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n * @returns {Promise} when all members have been stored\n */\n setOutOfBandMembers: function setOutOfBandMembers(roomId, membershipEvents) {\n return this._doCmd('setOutOfBandMembers', [roomId, membershipEvents]);\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers(roomId) {\n return this._doCmd('clearOutOfBandMembers', [roomId]);\n },\n\n getClientOptions: function getClientOptions() {\n return this._doCmd('getClientOptions');\n },\n\n storeClientOptions: function storeClientOptions(options) {\n return this._doCmd('storeClientOptions', [options]);\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n return this._doCmd('getUserPresenceEvents');\n },\n\n _ensureStarted: function _ensureStarted() {\n if (this._startPromise === null) {\n this._worker = new this._workerApi(this._workerScript);\n this._worker.onmessage = this._onWorkerMessage.bind(this);\n\n // tell the worker the db name.\n this._startPromise = this._doCmd('_setupWorker', [this._dbName]).then(function () {\n console.log(\"IndexedDB worker is ready\");\n });\n }\n return this._startPromise;\n },\n\n _doCmd: function _doCmd(cmd, args) {\n var _this3 = this;\n\n // wrap in a q so if the postMessage throws,\n // the promise automatically gets rejected\n return _bluebird2.default.resolve().then(function () {\n var seq = _this3._nextSeq++;\n var def = _bluebird2.default.defer();\n\n _this3._inFlight[seq] = def;\n\n _this3._worker.postMessage({\n command: cmd,\n seq: seq,\n args: args\n });\n\n return def.promise;\n });\n },\n\n _onWorkerMessage: function _onWorkerMessage(ev) {\n var msg = ev.data;\n\n if (msg.command == 'cmd_success' || msg.command == 'cmd_fail') {\n if (msg.seq === undefined) {\n console.error(\"Got reply from worker with no seq\");\n return;\n }\n\n var def = this._inFlight[msg.seq];\n if (def === undefined) {\n console.error(\"Got reply for unknown seq \" + msg.seq);\n return;\n }\n delete this._inFlight[msg.seq];\n\n if (msg.command == 'cmd_success') {\n def.resolve(msg.result);\n } else {\n var error = new Error(msg.error.message);\n error.name = msg.error.name;\n def.reject(error);\n }\n } else {\n console.warn(\"Unrecognised message from worker: \" + msg);\n }\n }\n};\n\nexports.default = RemoteIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-remote-backend.js.map","/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter = token \"=\" ( token / quoted-string )\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n * / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * / DIGIT / ALPHA\n * ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text = %x80-FF\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type = token\n * subtype = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var type = obj.type\n\n if (!type || !TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid type')\n }\n\n var string = type\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!TOKEN_REGEXP.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n var header = typeof string === 'object'\n ? getcontenttype(string)\n : string\n\n if (typeof header !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = header.indexOf(';')\n var type = index !== -1\n ? header.substr(0, index).trim()\n : header.trim()\n\n if (!TYPE_REGEXP.test(type)) {\n throw new TypeError('invalid media type')\n }\n\n var obj = new ContentType(type.toLowerCase())\n\n // parse parameters\n if (index !== -1) {\n var key\n var match\n var value\n\n PARAM_REGEXP.lastIndex = index\n\n while ((match = PARAM_REGEXP.exec(header))) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(QESC_REGEXP, '$1')\n }\n\n obj.parameters[key] = value\n }\n\n if (index !== header.length) {\n throw new TypeError('invalid parameter format')\n }\n }\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n var header\n\n if (typeof obj.getHeader === 'function') {\n // res-like\n header = obj.getHeader('content-type')\n } else if (typeof obj.headers === 'object') {\n // req-like\n header = obj.headers && obj.headers['content-type']\n }\n\n if (typeof header !== 'string') {\n throw new TypeError('content-type header is missing from object')\n }\n\n return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n var str = String(val)\n\n // no need to quote tokens\n if (TOKEN_REGEXP.test(str)) {\n return str\n }\n\n if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n this.parameters = Object.create(null)\n this.type = type\n}\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* A re-implementation of the javascript callback functions (setTimeout,\n * clearTimeout; setInterval and clearInterval are not yet implemented) which\n * try to improve handling of large clock jumps (as seen when\n * suspending/resuming the system).\n *\n * In particular, if a timeout would have fired while the system was suspended,\n * it will instead fire as soon as possible after resume.\n */\n\n\"use strict\";\n\n// we schedule a callback at least this often, to check if we've missed out on\n// some wall-clock time due to being suspended.\n\nvar TIMER_CHECK_PERIOD_MS = 1000;\n\n// counter, for making up ids to return from setTimeout\nvar _count = 0;\n\n// the key for our callback with the real global.setTimeout\nvar _realCallbackKey = void 0;\n\n// a sorted list of the callbacks to be run.\n// each is an object with keys [runAt, func, params, key].\nvar _callbackList = [];\n\n// var debuglog = console.log.bind(console);\nvar debuglog = function debuglog() {};\n\n/**\n * Replace the function used by this module to get the current time.\n *\n * Intended for use by the unit tests.\n *\n * @param {function} f function which should return a millisecond counter\n *\n * @internal\n */\nmodule.exports.setNow = function (f) {\n _now = f || Date.now;\n};\nvar _now = Date.now;\n\n/**\n * reimplementation of window.setTimeout, which will call the callback if\n * the wallclock time goes past the deadline.\n *\n * @param {function} func callback to be called after a delay\n * @param {Number} delayMs number of milliseconds to delay by\n *\n * @return {Number} an identifier for this callback, which may be passed into\n * clearTimeout later.\n */\nmodule.exports.setTimeout = function (func, delayMs) {\n delayMs = delayMs || 0;\n if (delayMs < 0) {\n delayMs = 0;\n }\n\n var params = Array.prototype.slice.call(arguments, 2);\n var runAt = _now() + delayMs;\n var key = _count++;\n debuglog(\"setTimeout: scheduling cb\", key, \"at\", runAt, \"(delay\", delayMs, \")\");\n var data = {\n runAt: runAt,\n func: func,\n params: params,\n key: key\n };\n\n // figure out where it goes in the list\n var idx = binarySearch(_callbackList, function (el) {\n return el.runAt - runAt;\n });\n\n _callbackList.splice(idx, 0, data);\n _scheduleRealCallback();\n\n return key;\n};\n\n/**\n * reimplementation of window.clearTimeout, which mirrors setTimeout\n *\n * @param {Number} key result from an earlier setTimeout call\n */\nmodule.exports.clearTimeout = function (key) {\n if (_callbackList.length === 0) {\n return;\n }\n\n // remove the element from the list\n var i = void 0;\n for (i = 0; i < _callbackList.length; i++) {\n var cb = _callbackList[i];\n if (cb.key == key) {\n _callbackList.splice(i, 1);\n break;\n }\n }\n\n // iff it was the first one in the list, reschedule our callback.\n if (i === 0) {\n _scheduleRealCallback();\n }\n};\n\n// use the real global.setTimeout to schedule a callback to _runCallbacks.\nfunction _scheduleRealCallback() {\n if (_realCallbackKey) {\n global.clearTimeout(_realCallbackKey);\n }\n\n var first = _callbackList[0];\n\n if (!first) {\n debuglog(\"_scheduleRealCallback: no more callbacks, not rescheduling\");\n return;\n }\n\n var now = _now();\n var delayMs = Math.min(first.runAt - now, TIMER_CHECK_PERIOD_MS);\n\n debuglog(\"_scheduleRealCallback: now:\", now, \"delay:\", delayMs);\n _realCallbackKey = global.setTimeout(_runCallbacks, delayMs);\n}\n\nfunction _runCallbacks() {\n var cb = void 0;\n var now = _now();\n debuglog(\"_runCallbacks: now:\", now);\n\n // get the list of things to call\n var callbacksToRun = [];\n while (true) {\n var first = _callbackList[0];\n if (!first || first.runAt > now) {\n break;\n }\n cb = _callbackList.shift();\n debuglog(\"_runCallbacks: popping\", cb.key);\n callbacksToRun.push(cb);\n }\n\n // reschedule the real callback before running our functions, to\n // keep the codepaths the same whether or not our functions\n // register their own setTimeouts.\n _scheduleRealCallback();\n\n for (var i = 0; i < callbacksToRun.length; i++) {\n cb = callbacksToRun[i];\n try {\n cb.func.apply(global, cb.params);\n } catch (e) {\n console.error(\"Uncaught exception in callback function\", e.stack || e);\n }\n }\n}\n\n/* search in a sorted array.\n *\n * returns the index of the last element for which func returns\n * greater than zero, or array.length if no such element exists.\n */\nfunction binarySearch(array, func) {\n // min is inclusive, max exclusive.\n var min = 0,\n max = array.length;\n\n while (min < max) {\n var mid = min + max >> 1;\n var res = func(array[mid]);\n if (res > 0) {\n // the element at 'mid' is too big; set it as the new max.\n max = mid;\n } else {\n // the element at 'mid' is too small. 'min' is inclusive, so +1.\n min = mid + 1;\n }\n }\n // presumably, min==max now.\n return min;\n}\n//# sourceMappingURL=realtime-callbacks.js.map","module.exports = { \"default\": require(\"core-js/library/fn/reflect/get-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.get-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.getPrototypeOf;\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/reflect/set-prototype-of\"), __esModule: true };","require('../../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../../modules/_core').Reflect.setPrototypeOf;\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/reflect/construct\"), __esModule: true };","require('../../modules/es6.reflect.construct');\nmodule.exports = require('../../modules/_core').Reflect.construct;\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @alias module:crypto/RoomList\n */\nvar RoomList = function () {\n function RoomList(cryptoStore, sessionStore) {\n (0, _classCallCheck3.default)(this, RoomList);\n\n this._cryptoStore = cryptoStore;\n this._sessionStore = sessionStore;\n\n // Object of roomId -> room e2e info object (body of the m.room.encryption event)\n this._roomEncryption = {};\n }\n\n (0, _createClass3.default)(RoomList, [{\n key: 'init',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var removeSessionStoreRooms;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n removeSessionStoreRooms = false;\n _context.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this._cryptoStore.getEndToEndRooms(txn, function (result) {\n if (result === null || (0, _keys2.default)(result).length === 0) {\n // migrate from session store, if there's data there\n var sessStoreRooms = _this._sessionStore.getAllEndToEndRooms();\n if (sessStoreRooms !== null) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(sessStoreRooms)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n _this._cryptoStore.storeEndToEndRoom(roomId, sessStoreRooms[roomId], txn);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n _this._roomEncryption = sessStoreRooms;\n removeSessionStoreRooms = true;\n } else {\n _this._roomEncryption = result;\n }\n });\n }));\n\n case 3:\n if (removeSessionStoreRooms) {\n this._sessionStore.removeAllEndToEndRooms();\n }\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function init() {\n return _ref.apply(this, arguments);\n }\n\n return init;\n }()\n }, {\n key: 'getRoomEncryption',\n value: function getRoomEncryption(roomId) {\n return this._roomEncryption[roomId] || null;\n }\n }, {\n key: 'isRoomEncrypted',\n value: function isRoomEncrypted(roomId) {\n return Boolean(this.getRoomEncryption(roomId));\n }\n }, {\n key: 'setRoomEncryption',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId, roomInfo) {\n var _this2 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // important that this happens before calling into the store\n // as it prevents the Crypto::setRoomEncryption from calling\n // this twice for consecutive m.room.encryption events\n this._roomEncryption[roomId] = roomInfo;\n _context2.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ROOMS], function (txn) {\n _this2._cryptoStore.storeEndToEndRoom(roomId, roomInfo, txn);\n }));\n\n case 3:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function setRoomEncryption(_x, _x2) {\n return _ref2.apply(this, arguments);\n }\n\n return setRoomEncryption;\n }()\n }]);\n return RoomList;\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * @module crypto/RoomList\n *\n * Manages the list of encrypted rooms\n */\n\nexports.default = RoomList;\n//# sourceMappingURL=RoomList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _memoryCryptoStore = require('./memory-crypto-store.js');\n\nvar _memoryCryptoStore2 = _interopRequireDefault(_memoryCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Partial localStorage backed storage for e2e.\n * This is not a full crypto store, just the in-memory store with\n * some things backed by localStorage. It exists because indexedDB\n * is broken in Firefox private mode or set to, \"will not remember\n * history\".\n *\n * @module\n */\n\n/*\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar E2E_PREFIX = \"crypto.\";\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_DEVICE_DATA = E2E_PREFIX + \"device_data\";\nvar KEY_INBOUND_SESSION_PREFIX = E2E_PREFIX + \"inboundgroupsessions/\";\nvar KEY_ROOMS_PREFIX = E2E_PREFIX + \"rooms/\";\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return KEY_INBOUND_SESSION_PREFIX + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoomsPrefix(roomId) {\n return KEY_ROOMS_PREFIX + roomId;\n}\n\n/**\n * @implements {module:crypto/store/base~CryptoStore}\n */\n\nvar LocalStorageCryptoStore = function (_MemoryCryptoStore) {\n (0, _inherits3.default)(LocalStorageCryptoStore, _MemoryCryptoStore);\n\n function LocalStorageCryptoStore(webStore) {\n (0, _classCallCheck3.default)(this, LocalStorageCryptoStore);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalStorageCryptoStore.__proto__ || (0, _getPrototypeOf2.default)(LocalStorageCryptoStore)).call(this));\n\n _this.store = webStore;\n return _this;\n }\n\n // Olm Sessions\n\n (0, _createClass3.default)(LocalStorageCryptoStore, [{\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n var count = 0;\n for (var i = 0; i < this.store.length; ++i) {\n if (this.store.key(i).startsWith(keyEndToEndSessions(''))) ++count;\n }\n func(count);\n }\n }, {\n key: '_getEndToEndSessions',\n value: function _getEndToEndSessions(deviceKey, txn, func) {\n return getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var sessions = this._getEndToEndSessions(deviceKey);\n func(sessions[sessionId] || {});\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n func(this._getEndToEndSessions(deviceKey) || {});\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, session, txn) {\n var sessions = this._getEndToEndSessions(deviceKey) || {};\n sessions[sessionId] = session;\n setJsonItem(this.store, keyEndToEndSessions(deviceKey), sessions);\n }\n\n // Inbound Group Sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n func(getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId)));\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(KEY_INBOUND_SESSION_PREFIX)) {\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n func({\n senderKey: key.substr(KEY_INBOUND_SESSION_PREFIX.length, 43),\n sessionId: key.substr(KEY_INBOUND_SESSION_PREFIX.length + 44),\n sessionData: getJsonItem(this.store, key)\n });\n }\n }\n func(null);\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var existing = getJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId));\n if (!existing) {\n this.storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn);\n }\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n setJsonItem(this.store, keyEndToEndInboundGroupSession(senderCurve25519Key, sessionId), sessionData);\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n func(getJsonItem(this.store, KEY_DEVICE_DATA));\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n setJsonItem(this.store, KEY_DEVICE_DATA, deviceData);\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n setJsonItem(this.store, keyEndToEndRoomsPrefix(roomId), roomInfo);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var result = {};\n var prefix = keyEndToEndRoomsPrefix('');\n\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n if (key.startsWith(prefix)) {\n var roomId = key.substr(prefix.length);\n result[roomId] = getJsonItem(this.store, key);\n }\n }\n func(result);\n }\n\n /**\n * Delete all data from this store.\n *\n * @returns {Promise} Promise which resolves when the store has been cleared.\n */\n\n }, {\n key: 'deleteAllData',\n value: function deleteAllData() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n return _bluebird2.default.resolve();\n }\n\n // Olm account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var account = getJsonItem(this.store, KEY_END_TO_END_ACCOUNT);\n func(account);\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n setJsonItem(this.store, KEY_END_TO_END_ACCOUNT, newData);\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n return _bluebird2.default.resolve(func(null));\n }\n }]);\n return LocalStorageCryptoStore;\n}(_memoryCryptoStore2.default);\n\nexports.default = LocalStorageCryptoStore;\n\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n console.log(\"Error: Failed to get key %s: %s\", key, e.stack || e);\n console.log(e.stack);\n }\n return null;\n}\n\nfunction setJsonItem(store, key, val) {\n store.setItem(key, (0, _stringify2.default)(val));\n}\n//# sourceMappingURL=localStorage-crypto-store.js.map","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Backend = exports.VERSION = undefined;\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.upgradeDatabase = upgradeDatabase;\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _utils = require('../../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar VERSION = exports.VERSION = 6;\n\n/**\n * Implementation of a CryptoStore which is backed by an existing\n * IndexedDB connection. Generally you want IndexedDBCryptoStore\n * which connects to the database and defers to one of these.\n *\n * @implements {module:crypto/store/base~CryptoStore}\n */\n\nvar Backend = exports.Backend = function () {\n /**\n * @param {IDBDatabase} db\n */\n function Backend(db) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, Backend);\n\n this._db = db;\n\n // make sure we close the db on `onversionchange` - otherwise\n // attempts to delete the database will block (and subsequent\n // attempts to re-create it will also block).\n db.onversionchange = function (ev) {\n console.log('versionchange for indexeddb ' + _this._dbName + ': closing');\n db.close();\n };\n }\n\n /**\n * Look for an existing outgoing room key request, and if none is found,\n * add a new one\n *\n * @param {module:crypto/store/base~OutgoingRoomKeyRequest} request\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}: either the\n * same instance as passed in, or the existing one.\n */\n\n\n (0, _createClass3.default)(Backend, [{\n key: 'getOrAddOutgoingRoomKeyRequest',\n value: function getOrAddOutgoingRoomKeyRequest(request) {\n var requestBody = request.requestBody;\n\n var deferred = _bluebird2.default.defer();\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n txn.onerror = deferred.reject;\n\n // first see if we already have an entry for this request.\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n if (existing) {\n // this entry matches the request - return it.\n console.log('already have key request outstanding for ' + (requestBody.room_id + ' / ' + requestBody.session_id + ': ') + 'not sending another');\n deferred.resolve(existing);\n return;\n }\n\n // we got to the end of the list without finding a match\n // - add the new request.\n console.log('enqueueing key request for ' + requestBody.room_id + ' / ' + requestBody.session_id);\n txn.oncomplete = function () {\n deferred.resolve(request);\n };\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n store.add(request);\n });\n\n return deferred.promise;\n }\n\n /**\n * Look for an existing room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n *\n * @return {Promise} resolves to the matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequest',\n value: function getOutgoingRoomKeyRequest(requestBody) {\n var deferred = _bluebird2.default.defer();\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n txn.onerror = deferred.reject;\n\n this._getOutgoingRoomKeyRequest(txn, requestBody, function (existing) {\n deferred.resolve(existing);\n });\n return deferred.promise;\n }\n\n /**\n * look for an existing room key request in the db\n *\n * @private\n * @param {IDBTransaction} txn database transaction\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * existing request to look for\n * @param {Function} callback function to call with the results of the\n * search. Either passed a matching\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * not found.\n */\n\n }, {\n key: '_getOutgoingRoomKeyRequest',\n value: function _getOutgoingRoomKeyRequest(txn, requestBody, callback) {\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var idx = store.index(\"session\");\n var cursorReq = idx.openCursor([requestBody.room_id, requestBody.session_id]);\n\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n // no match found\n callback(null);\n return;\n }\n\n var existing = cursor.value;\n\n if (_utils2.default.deepCompare(existing.requestBody, requestBody)) {\n // got a match\n callback(existing);\n return;\n }\n\n // look at the next entry in the index\n cursor.continue();\n };\n }\n\n /**\n * Look for room key requests by state\n *\n * @param {Array<Number>} wantedStates list of acceptable states\n *\n * @return {Promise} resolves to the a\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}, or null if\n * there are no pending requests in those states. If there are multiple\n * requests in those states, an arbitrary one is chosen.\n */\n\n }, {\n key: 'getOutgoingRoomKeyRequestByState',\n value: function getOutgoingRoomKeyRequestByState(wantedStates) {\n if (wantedStates.length === 0) {\n return _bluebird2.default.resolve(null);\n }\n\n // this is a bit tortuous because we need to make sure we do the lookup\n // in a single transaction, to avoid having a race with the insertion\n // code.\n\n // index into the wantedStates array\n var stateIndex = 0;\n var result = void 0;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (cursor) {\n // got a match\n result = cursor.value;\n return;\n }\n\n // try the next state in the list\n stateIndex++;\n if (stateIndex >= wantedStates.length) {\n // no matches\n return;\n }\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = ev.target.source.openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readonly\");\n var store = txn.objectStore(\"outgoingRoomKeyRequests\");\n\n var wantedState = wantedStates[stateIndex];\n var cursorReq = store.index(\"state\").openCursor(wantedState);\n cursorReq.onsuccess = onsuccess;\n\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and update it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n * @param {Object} updates name/value map of updates to apply\n *\n * @returns {Promise} resolves to\n * {@link module:crypto/store/base~OutgoingRoomKeyRequest}\n * updated request, or null if no matching row was found\n */\n\n }, {\n key: 'updateOutgoingRoomKeyRequest',\n value: function updateOutgoingRoomKeyRequest(requestId, expectedState, updates) {\n var result = null;\n\n function onsuccess(ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n console.warn('Cannot update room key request from ' + expectedState + ' ' + ('as it was already updated to ' + data.state));\n return;\n }\n (0, _assign2.default)(data, updates);\n cursor.update(data);\n result = data;\n }\n\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = onsuccess;\n return promiseifyTxn(txn).then(function () {\n return result;\n });\n }\n\n /**\n * Look for an existing room key request by id and state, and delete it if\n * found\n *\n * @param {string} requestId ID of request to update\n * @param {number} expectedState state we expect to find the request in\n *\n * @returns {Promise} resolves once the operation is completed\n */\n\n }, {\n key: 'deleteOutgoingRoomKeyRequest',\n value: function deleteOutgoingRoomKeyRequest(requestId, expectedState) {\n var txn = this._db.transaction(\"outgoingRoomKeyRequests\", \"readwrite\");\n var cursorReq = txn.objectStore(\"outgoingRoomKeyRequests\").openCursor(requestId);\n cursorReq.onsuccess = function (ev) {\n var cursor = ev.target.result;\n if (!cursor) {\n return;\n }\n var data = cursor.value;\n if (data.state != expectedState) {\n console.warn('Cannot delete room key request in state ' + data.state + ' ' + ('(expected ' + expectedState + ')'));\n return;\n }\n cursor.delete();\n };\n return promiseifyTxn(txn);\n }\n\n // Olm Account\n\n }, {\n key: 'getAccount',\n value: function getAccount(txn, func) {\n var objectStore = txn.objectStore(\"account\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeAccount',\n value: function storeAccount(txn, newData) {\n var objectStore = txn.objectStore(\"account\");\n objectStore.put(newData, \"-\");\n }\n\n // Olm Sessions\n\n }, {\n key: 'countEndToEndSessions',\n value: function countEndToEndSessions(txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var countReq = objectStore.count();\n countReq.onsuccess = function () {\n func(countReq.result);\n };\n }\n }, {\n key: 'getEndToEndSessions',\n value: function getEndToEndSessions(deviceKey, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var idx = objectStore.index(\"deviceKey\");\n var getReq = idx.openCursor(deviceKey);\n var results = {};\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n results[cursor.value.sessionId] = cursor.value.session;\n cursor.continue();\n } else {\n try {\n func(results);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'getEndToEndSession',\n value: function getEndToEndSession(deviceKey, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"sessions\");\n var getReq = objectStore.get([deviceKey, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func(getReq.result.session);\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeEndToEndSession',\n value: function storeEndToEndSession(deviceKey, sessionId, session, txn) {\n var objectStore = txn.objectStore(\"sessions\");\n objectStore.put({ deviceKey: deviceKey, sessionId: sessionId, session: session });\n }\n\n // Inbound group sessions\n\n }, {\n key: 'getEndToEndInboundGroupSession',\n value: function getEndToEndInboundGroupSession(senderCurve25519Key, sessionId, txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.get([senderCurve25519Key, sessionId]);\n getReq.onsuccess = function () {\n try {\n if (getReq.result) {\n func(getReq.result.session);\n } else {\n func(null);\n }\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'getAllEndToEndInboundGroupSessions',\n value: function getAllEndToEndInboundGroupSessions(txn, func) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n try {\n func({\n senderKey: cursor.value.senderCurve25519Key,\n sessionId: cursor.value.sessionId,\n sessionData: cursor.value.session\n });\n } catch (e) {\n abortWithException(txn, e);\n }\n cursor.continue();\n } else {\n try {\n func(null);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'addEndToEndInboundGroupSession',\n value: function addEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n var addReq = objectStore.add({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n addReq.onerror = function (ev) {\n if (addReq.error.name === 'ConstraintError') {\n // This stops the error from triggering the txn's onerror\n ev.stopPropagation();\n // ...and this stops it from aborting the transaction\n ev.preventDefault();\n console.log(\"Ignoring duplicate inbound group session: \" + senderCurve25519Key + \" / \" + sessionId);\n } else {\n abortWithException(txn, new Error(\"Failed to add inbound group session: \" + addReq.error));\n }\n };\n }\n }, {\n key: 'storeEndToEndInboundGroupSession',\n value: function storeEndToEndInboundGroupSession(senderCurve25519Key, sessionId, sessionData, txn) {\n var objectStore = txn.objectStore(\"inbound_group_sessions\");\n objectStore.put({\n senderCurve25519Key: senderCurve25519Key, sessionId: sessionId, session: sessionData\n });\n }\n }, {\n key: 'getEndToEndDeviceData',\n value: function getEndToEndDeviceData(txn, func) {\n var objectStore = txn.objectStore(\"device_data\");\n var getReq = objectStore.get(\"-\");\n getReq.onsuccess = function () {\n try {\n func(getReq.result || null);\n } catch (e) {\n abortWithException(txn, e);\n }\n };\n }\n }, {\n key: 'storeEndToEndDeviceData',\n value: function storeEndToEndDeviceData(deviceData, txn) {\n var objectStore = txn.objectStore(\"device_data\");\n objectStore.put(deviceData, \"-\");\n }\n }, {\n key: 'storeEndToEndRoom',\n value: function storeEndToEndRoom(roomId, roomInfo, txn) {\n var objectStore = txn.objectStore(\"rooms\");\n objectStore.put(roomInfo, roomId);\n }\n }, {\n key: 'getEndToEndRooms',\n value: function getEndToEndRooms(txn, func) {\n var rooms = {};\n var objectStore = txn.objectStore(\"rooms\");\n var getReq = objectStore.openCursor();\n getReq.onsuccess = function () {\n var cursor = getReq.result;\n if (cursor) {\n rooms[cursor.key] = cursor.value;\n cursor.continue();\n } else {\n try {\n func(rooms);\n } catch (e) {\n abortWithException(txn, e);\n }\n }\n };\n }\n }, {\n key: 'doTxn',\n value: function doTxn(mode, stores, func) {\n var txn = this._db.transaction(stores, mode);\n var promise = promiseifyTxn(txn);\n var result = func(txn);\n return promise.then(function () {\n return result;\n });\n }\n }]);\n return Backend;\n}();\n\nfunction upgradeDatabase(db, oldVersion) {\n console.log('Upgrading IndexedDBCryptoStore from version ' + oldVersion + (' to ' + VERSION));\n if (oldVersion < 1) {\n // The database did not previously exist.\n createDatabase(db);\n }\n if (oldVersion < 2) {\n db.createObjectStore(\"account\");\n }\n if (oldVersion < 3) {\n var sessionsStore = db.createObjectStore(\"sessions\", {\n keyPath: [\"deviceKey\", \"sessionId\"]\n });\n sessionsStore.createIndex(\"deviceKey\", \"deviceKey\");\n }\n if (oldVersion < 4) {\n db.createObjectStore(\"inbound_group_sessions\", {\n keyPath: [\"senderCurve25519Key\", \"sessionId\"]\n });\n }\n if (oldVersion < 5) {\n db.createObjectStore(\"device_data\");\n }\n if (oldVersion < 6) {\n db.createObjectStore(\"rooms\");\n }\n // Expand as needed.\n}\n\nfunction createDatabase(db) {\n var outgoingRoomKeyRequestsStore = db.createObjectStore(\"outgoingRoomKeyRequests\", { keyPath: \"requestId\" });\n\n // we assume that the RoomKeyRequestBody will have room_id and session_id\n // properties, to make the index efficient.\n outgoingRoomKeyRequestsStore.createIndex(\"session\", [\"requestBody.room_id\", \"requestBody.session_id\"]);\n\n outgoingRoomKeyRequestsStore.createIndex(\"state\", \"state\");\n}\n\n/*\n * Aborts a transaction with a given exception\n * The transaction promise will be rejected with this exception.\n */\nfunction abortWithException(txn, e) {\n // We cheekily stick our exception onto the transaction object here\n // We could alternatively make the thing we pass back to the app\n // an object containing the transaction and exception.\n txn._mx_abortexception = e;\n try {\n txn.abort();\n } catch (e) {\n // sometimes we won't be able to abort the transaction\n // (ie. if it's aborted or completed)\n }\n}\n\nfunction promiseifyTxn(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function () {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n }\n resolve();\n };\n txn.onerror = function () {\n if (txn._mx_abortexception !== undefined) {\n reject(txn._mx_abortexception);\n }\n reject();\n };\n txn.onabort = function () {\n return reject(txn._mx_abortexception);\n };\n });\n}\n//# sourceMappingURL=indexeddb-crypto-store-backend.js.map","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","require('../../modules/es6.number.is-finite');\nmodule.exports = require('../../modules/_core').Number.isFinite;\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/search-result\n */\n\nvar EventContext = require(\"./event-context\");\nvar utils = require(\"../utils\");\n\n/**\n * Construct a new SearchResult\n *\n * @param {number} rank where this SearchResult ranks in the results\n * @param {event-context.EventContext} eventContext the matching event and its\n * context\n *\n * @constructor\n */\nfunction SearchResult(rank, eventContext) {\n this.rank = rank;\n this.context = eventContext;\n}\n\n/**\n * Create a SearchResponse from the response to /search\n * @static\n * @param {Object} jsonObj\n * @param {function} eventMapper\n * @return {SearchResult}\n */\n\nSearchResult.fromJson = function (jsonObj, eventMapper) {\n var jsonContext = jsonObj.context || {};\n var events_before = jsonContext.events_before || [];\n var events_after = jsonContext.events_after || [];\n\n var context = new EventContext(eventMapper(jsonObj.result));\n\n context.setPaginateToken(jsonContext.start, true);\n context.addEvents(utils.map(events_before, eventMapper), true);\n context.addEvents(utils.map(events_after, eventMapper), false);\n context.setPaginateToken(jsonContext.end, false);\n\n return new SearchResult(jsonObj.rank, context);\n};\n\n/**\n * The SearchResult class\n */\nmodule.exports = SearchResult;\n//# sourceMappingURL=search-result.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module models/event-context\n */\n\n/**\n * Construct a new EventContext\n *\n * An eventcontext is used for circumstances such as search results, when we\n * have a particular event of interest, and a bunch of events before and after\n * it.\n *\n * It also stores pagination tokens for going backwards and forwards in the\n * timeline.\n *\n * @param {MatrixEvent} ourEvent the event at the centre of this context\n *\n * @constructor\n */\n\nfunction EventContext(ourEvent) {\n this._timeline = [ourEvent];\n this._ourEventIndex = 0;\n this._paginateTokens = { b: null, f: null };\n\n // this is used by MatrixClient to keep track of active requests\n this._paginateRequests = { b: null, f: null };\n}\n\n/**\n * Get the main event of interest\n *\n * This is a convenience function for getTimeline()[getOurEventIndex()].\n *\n * @return {MatrixEvent} The event at the centre of this context.\n */\nEventContext.prototype.getEvent = function () {\n return this._timeline[this._ourEventIndex];\n};\n\n/**\n * Get the list of events in this context\n *\n * @return {Array} An array of MatrixEvents\n */\nEventContext.prototype.getTimeline = function () {\n return this._timeline;\n};\n\n/**\n * Get the index in the timeline of our event\n *\n * @return {Number}\n */\nEventContext.prototype.getOurEventIndex = function () {\n return this._ourEventIndex;\n};\n\n/**\n * Get a pagination token.\n *\n * @param {boolean} backwards true to get the pagination token for going\n * backwards in time\n * @return {string}\n */\nEventContext.prototype.getPaginateToken = function (backwards) {\n return this._paginateTokens[backwards ? 'b' : 'f'];\n};\n\n/**\n * Set a pagination token.\n *\n * Generally this will be used only by the matrix js sdk.\n *\n * @param {string} token pagination token\n * @param {boolean} backwards true to set the pagination token for going\n * backwards in time\n */\nEventContext.prototype.setPaginateToken = function (token, backwards) {\n this._paginateTokens[backwards ? 'b' : 'f'] = token;\n};\n\n/**\n * Add more events to the timeline\n *\n * @param {Array} events new events, in timeline order\n * @param {boolean} atStart true to insert new events at the start\n */\nEventContext.prototype.addEvents = function (events, atStart) {\n // TODO: should we share logic with Room.addEventsToTimeline?\n // Should Room even use EventContext?\n\n if (atStart) {\n this._timeline = events.concat(this._timeline);\n this._ourEventIndex += events.length;\n } else {\n this._timeline = this._timeline.concat(events);\n }\n};\n\n/**\n * The EventContext class\n */\nmodule.exports = EventContext;\n//# sourceMappingURL=event-context.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This is an internal module.\n * @module store/stub\n */\n\n/**\n * Construct a stub store. This does no-ops on most store methods.\n * @constructor\n */\nfunction StubStore() {\n this.fromToken = null;\n}\n\nStubStore.prototype = {\n\n /** @return {Promise<bool>} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(true);\n },\n\n /**\n * Get the sync token.\n * @return {string}\n */\n getSyncToken: function getSyncToken() {\n return this.fromToken;\n },\n\n /**\n * Set the sync token.\n * @param {string} token\n */\n setSyncToken: function setSyncToken(token) {\n this.fromToken = token;\n },\n\n /**\n * No-op.\n * @param {Group} group\n */\n storeGroup: function storeGroup(group) {},\n\n /**\n * No-op.\n * @param {string} groupId\n * @return {null}\n */\n getGroup: function getGroup(groupId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getGroups: function getGroups() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n */\n storeRoom: function storeRoom(room) {},\n\n /**\n * No-op.\n * @param {string} roomId\n * @return {null}\n */\n getRoom: function getRoom(roomId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRooms: function getRooms() {\n return [];\n },\n\n /**\n * Permanently delete a room.\n * @param {string} roomId\n */\n removeRoom: function removeRoom(roomId) {\n return;\n },\n\n /**\n * No-op.\n * @return {Array} An empty array.\n */\n getRoomSummaries: function getRoomSummaries() {\n return [];\n },\n\n /**\n * No-op.\n * @param {User} user\n */\n storeUser: function storeUser(user) {},\n\n /**\n * No-op.\n * @param {string} userId\n * @return {null}\n */\n getUser: function getUser(userId) {\n return null;\n },\n\n /**\n * No-op.\n * @return {User[]}\n */\n getUsers: function getUsers() {\n return [];\n },\n\n /**\n * No-op.\n * @param {Room} room\n * @param {integer} limit\n * @return {Array}\n */\n scrollback: function scrollback(room, limit) {\n return [];\n },\n\n /**\n * Store events for a room.\n * @param {Room} room The room to store events for.\n * @param {Array<MatrixEvent>} events The events to store.\n * @param {string} token The token associated with these events.\n * @param {boolean} toStart True if these are paginated results.\n */\n storeEvents: function storeEvents(room, events, token, toStart) {},\n\n /**\n * Store a filter.\n * @param {Filter} filter\n */\n storeFilter: function storeFilter(filter) {},\n\n /**\n * Retrieve a filter.\n * @param {string} userId\n * @param {string} filterId\n * @return {?Filter} A filter or null.\n */\n getFilter: function getFilter(userId, filterId) {\n return null;\n },\n\n /**\n * Retrieve a filter ID with the given name.\n * @param {string} filterName The filter name.\n * @return {?string} The filter ID or null.\n */\n getFilterIdByName: function getFilterIdByName(filterName) {\n return null;\n },\n\n /**\n * Set a filter name to ID mapping.\n * @param {string} filterName\n * @param {string} filterId\n */\n setFilterIdByName: function setFilterIdByName(filterName, filterId) {},\n\n /**\n * Store user-scoped account data events\n * @param {Array<MatrixEvent>} events The events to store.\n */\n storeAccountDataEvents: function storeAccountDataEvents(events) {},\n\n /**\n * Get account data event by event type\n * @param {string} eventType The event type being queried\n */\n getAccountData: function getAccountData(eventType) {},\n\n /**\n * setSyncData does nothing as there is no backing data store.\n *\n * @param {Object} syncData The sync data\n * @return {Promise} An immediately resolved promise.\n */\n setSyncData: function setSyncData(syncData) {\n return _bluebird2.default.resolve();\n },\n\n /**\n * We never want to save becase we have nothing to save to.\n *\n * @return {boolean} If the store wants to save\n */\n wantsSave: function wantsSave() {\n return false;\n },\n\n /**\n * Save does nothing as there is no backing data store.\n */\n save: function save() {},\n\n /**\n * Startup does nothing.\n * @return {Promise} An immediately resolved promise.\n */\n startup: function startup() {\n return _bluebird2.default.resolve();\n },\n\n /**\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * @return {Promise} If there is a saved sync, the nextBatch token\n * for this sync, otherwise null.\n */\n getSavedSyncToken: function getSavedSyncToken() {\n return _bluebird2.default.resolve(null);\n },\n\n /**\n * Delete all data from this store. Does nothing since this store\n * doesn't store anything.\n * @return {Promise} An immediately resolved promise.\n */\n deleteAllData: function deleteAllData() {\n return _bluebird2.default.resolve();\n },\n\n getOutOfBandMembers: function getOutOfBandMembers() {\n return _bluebird2.default.resolve(null);\n },\n\n setOutOfBandMembers: function setOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n clearOutOfBandMembers: function clearOutOfBandMembers() {\n return _bluebird2.default.resolve();\n },\n\n getClientOptions: function getClientOptions() {\n return _bluebird2.default.resolve();\n },\n\n storeClientOptions: function storeClientOptions() {\n return _bluebird2.default.resolve();\n }\n};\n\n/** Stub Store class. */\nmodule.exports = StubStore;\n//# sourceMappingURL=stub.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module filter-component\n */\n\n/**\n * Checks if a value matches a given field value, which may be a * terminated\n * wildcard pattern.\n * @param {String} actual_value The value to be compared\n * @param {String} filter_value The filter pattern to be compared\n * @return {bool} true if the actual_value matches the filter_value\n */\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _matches_wildcard(actual_value, filter_value) {\n if (filter_value.endsWith(\"*\")) {\n var type_prefix = filter_value.slice(0, -1);\n return actual_value.substr(0, type_prefix.length) === type_prefix;\n } else {\n return actual_value === filter_value;\n }\n}\n\n/**\n * FilterComponent is a section of a Filter definition which defines the\n * types, rooms, senders filters etc to be applied to a particular type of resource.\n * This is all ported over from synapse's Filter object.\n *\n * N.B. that synapse refers to these as 'Filters', and what js-sdk refers to as\n * 'Filters' are referred to as 'FilterCollections'.\n *\n * @constructor\n * @param {Object} filter_json the definition of this filter JSON, e.g. { 'contains_url': true }\n */\nfunction FilterComponent(filter_json) {\n this.filter_json = filter_json;\n\n this.types = filter_json.types || null;\n this.not_types = filter_json.not_types || [];\n\n this.rooms = filter_json.rooms || null;\n this.not_rooms = filter_json.not_rooms || [];\n\n this.senders = filter_json.senders || null;\n this.not_senders = filter_json.not_senders || [];\n\n this.contains_url = filter_json.contains_url || null;\n}\n\n/**\n * Checks with the filter component matches the given event\n * @param {MatrixEvent} event event to be checked against the filter\n * @return {bool} true if the event matches the filter\n */\nFilterComponent.prototype.check = function (event) {\n return this._checkFields(event.getRoomId(), event.getSender(), event.getType(), event.getContent() ? event.getContent().url !== undefined : false);\n};\n\n/**\n * Checks whether the filter component matches the given event fields.\n * @param {String} room_id the room_id for the event being checked\n * @param {String} sender the sender of the event being checked\n * @param {String} event_type the type of the event being checked\n * @param {String} contains_url whether the event contains a content.url field\n * @return {bool} true if the event fields match the filter\n */\nFilterComponent.prototype._checkFields = function (room_id, sender, event_type, contains_url) {\n var literal_keys = {\n \"rooms\": function rooms(v) {\n return room_id === v;\n },\n \"senders\": function senders(v) {\n return sender === v;\n },\n \"types\": function types(v) {\n return _matches_wildcard(event_type, v);\n }\n };\n\n var self = this;\n for (var n = 0; n < (0, _keys2.default)(literal_keys).length; n++) {\n var name = (0, _keys2.default)(literal_keys)[n];\n var match_func = literal_keys[name];\n var not_name = \"not_\" + name;\n var disallowed_values = self[not_name];\n if (disallowed_values.filter(match_func).length > 0) {\n return false;\n }\n\n var allowed_values = self[name];\n if (allowed_values) {\n if (!allowed_values.map(match_func)) {\n return false;\n }\n }\n }\n\n var contains_url_filter = this.filter_json.contains_url;\n if (contains_url_filter !== undefined) {\n if (contains_url_filter !== contains_url) {\n return false;\n }\n }\n\n return true;\n};\n\n/**\n * Filters a list of events down to those which match this filter component\n * @param {MatrixEvent[]} events Events to be checked againt the filter component\n * @return {MatrixEvent[]} events which matched the filter component\n */\nFilterComponent.prototype.filter = function (events) {\n return events.filter(this.check, this);\n};\n\n/**\n * Returns the limit field for a given filter component, providing a default of\n * 10 if none is otherwise specified. Cargo-culted from Synapse.\n * @return {Number} the limit for this filter component.\n */\nFilterComponent.prototype.limit = function () {\n return this.filter_json.limit !== undefined ? this.filter_json.limit : 10;\n};\n\n/** The FilterComponent class */\nmodule.exports = FilterComponent;\n//# sourceMappingURL=filter-component.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/*\n * TODO:\n * This class mainly serves to take all the syncing logic out of client.js and\n * into a separate file. It's all very fluid, and this class gut wrenches a lot\n * of MatrixClient props (e.g. _http). Given we want to support WebSockets as\n * an alternative syncing API, we may want to have a proper syncing interface\n * for HTTP and WS at some point.\n */\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _errors = require(\"./errors\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar User = require(\"./models/user\");\nvar Room = require(\"./models/room\");\nvar Group = require('./models/group');\nvar utils = require(\"./utils\");\nvar Filter = require(\"./filter\");\nvar EventTimeline = require(\"./models/event-timeline\");\n\nvar DEBUG = true;\n\n// /sync requests allow you to set a timeout= but the request may continue\n// beyond that and wedge forever, so we need to track how long we are willing\n// to keep open the connection. This constant is *ADDED* to the timeout= value\n// to determine the max time we're willing to wait.\nvar BUFFER_PERIOD_MS = 80 * 1000;\n\n// Number of consecutive failed syncs that will lead to a syncState of ERROR as opposed\n// to RECONNECTING. This is needed to inform the client of server issues when the\n// keepAlive is successful but the server /sync fails.\nvar FAILED_SYNC_ERROR_THRESHOLD = 3;\n\nfunction getFilterName(userId, suffix) {\n // scope this on the user ID because people may login on many accounts\n // and they all need to be stored!\n return \"FILTER_SYNC_\" + userId + (suffix ? \"_\" + suffix : \"\");\n}\n\nfunction debuglog() {\n var _console;\n\n if (!DEBUG) {\n return;\n }\n (_console = console).log.apply(_console, arguments);\n}\n\n/**\n * <b>Internal class - unstable.</b>\n * Construct an entity which is able to sync with a homeserver.\n * @constructor\n * @param {MatrixClient} client The matrix client instance to use.\n * @param {Object} opts Config options\n * @param {module:crypto=} opts.crypto Crypto manager\n * @param {Function=} opts.canResetEntireTimeline A function which is called\n * with a room ID and returns a boolean. It should return 'true' if the SDK can\n * SAFELY remove events from this room. It may not be safe to remove events if\n * there are other references to the timelines for this room.\n * Default: returns false.\n * @param {Boolean=} opts.disablePresence True to perform syncing without automatically\n * updating presence.\n */\nfunction SyncApi(client, opts) {\n this.client = client;\n opts = opts || {};\n opts.initialSyncLimit = opts.initialSyncLimit === undefined ? 8 : opts.initialSyncLimit;\n opts.resolveInvitesToProfiles = opts.resolveInvitesToProfiles || false;\n opts.pollTimeout = opts.pollTimeout || 30 * 1000;\n opts.pendingEventOrdering = opts.pendingEventOrdering || \"chronological\";\n if (!opts.canResetEntireTimeline) {\n opts.canResetEntireTimeline = function (roomId) {\n return false;\n };\n }\n this.opts = opts;\n this._peekRoomId = null;\n this._currentSyncRequest = null;\n this._syncState = null;\n this._syncStateData = null; // additional data (eg. error object for failed sync)\n this._catchingUp = false;\n this._running = false;\n this._keepAliveTimer = null;\n this._connectionReturnedDefer = null;\n this._notifEvents = []; // accumulator of sync events in the current sync response\n this._failedSyncCount = 0; // Number of consecutive failed /sync requests\n this._storeIsInvalid = false; // flag set if the store needs to be cleared before we can start\n\n if (client.getNotifTimelineSet()) {\n client.reEmitter.reEmit(client.getNotifTimelineSet(), [\"Room.timeline\", \"Room.timelineReset\"]);\n }\n}\n\n/**\n * @param {string} roomId\n * @return {Room}\n */\nSyncApi.prototype.createRoom = function (roomId) {\n var client = this.client;\n var room = new Room(roomId, client, client.getUserId(), {\n lazyLoadMembers: this.opts.lazyLoadMembers,\n pendingEventOrdering: this.opts.pendingEventOrdering,\n timelineSupport: client.timelineSupport\n });\n client.reEmitter.reEmit(room, [\"Room.name\", \"Room.timeline\", \"Room.redaction\", \"Room.receipt\", \"Room.tags\", \"Room.timelineReset\", \"Room.localEchoUpdated\", \"Room.accountData\", \"Room.myMembership\"]);\n this._registerStateListeners(room);\n return room;\n};\n\n/**\n * @param {string} groupId\n * @return {Group}\n */\nSyncApi.prototype.createGroup = function (groupId) {\n var client = this.client;\n var group = new Group(groupId);\n client.reEmitter.reEmit(group, [\"Group.profile\", \"Group.myMembership\"]);\n client.store.storeGroup(group);\n return group;\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._registerStateListeners = function (room) {\n var client = this.client;\n // we need to also re-emit room state and room member events, so hook it up\n // to the client now. We need to add a listener for RoomState.members in\n // order to hook them correctly. (TODO: find a better way?)\n client.reEmitter.reEmit(room.currentState, [\"RoomState.events\", \"RoomState.members\", \"RoomState.newMember\"]);\n room.currentState.on(\"RoomState.newMember\", function (event, state, member) {\n member.user = client.getUser(member.userId);\n client.reEmitter.reEmit(member, [\"RoomMember.name\", \"RoomMember.typing\", \"RoomMember.powerLevel\", \"RoomMember.membership\"]);\n });\n};\n\n/**\n * @param {Room} room\n * @private\n */\nSyncApi.prototype._deregisterStateListeners = function (room) {\n // could do with a better way of achieving this.\n room.currentState.removeAllListeners(\"RoomState.events\");\n room.currentState.removeAllListeners(\"RoomState.members\");\n room.currentState.removeAllListeners(\"RoomState.newMember\");\n};\n\n/**\n * Sync rooms the user has left.\n * @return {Promise} Resolved when they've been added to the store.\n */\nSyncApi.prototype.syncLeftRooms = function () {\n var client = this.client;\n var self = this;\n\n // grab a filter with limit=1 and include_leave=true\n var filter = new Filter(this.client.credentials.userId);\n filter.setTimelineLimit(1);\n filter.setIncludeLeaveRooms(true);\n\n var localTimeoutMs = this.opts.pollTimeout + BUFFER_PERIOD_MS;\n var qps = {\n timeout: 0 // don't want to block since this is a single isolated req\n };\n\n return client.getOrCreateFilter(getFilterName(client.credentials.userId, \"LEFT_ROOMS\"), filter).then(function (filterId) {\n qps.filter = filterId;\n return client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, localTimeoutMs);\n }).then(function (data) {\n var leaveRooms = [];\n if (data.rooms && data.rooms.leave) {\n leaveRooms = self._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n var rooms = [];\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n rooms.push(room);\n if (!leaveObj.isBrandNewRoom) {\n // the intention behind syncLeftRooms is to add in rooms which were\n // *omitted* from the initial /sync. Rooms the user were joined to\n // but then left whilst the app is running will appear in this list\n // and we do not want to bother with them since they will have the\n // current state already (and may get dupe messages if we add\n // yet more timeline events!), so skip them.\n // NB: When we persist rooms to localStorage this will be more\n // complicated...\n return;\n }\n leaveObj.timeline = leaveObj.timeline || {};\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(leaveObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n\n self._processEventsForNotifs(room, timelineEvents);\n });\n return rooms;\n });\n};\n\n/**\n * Peek into a room. This will result in the room in question being synced so it\n * is accessible via getRooms(). Live updates for the room will be provided.\n * @param {string} roomId The room ID to peek into.\n * @return {Promise} A promise which resolves once the room has been added to the\n * store.\n */\nSyncApi.prototype.peek = function (roomId) {\n var self = this;\n var client = this.client;\n this._peekRoomId = roomId;\n return this.client.roomInitialSync(roomId, 20).then(function (response) {\n // make sure things are init'd\n response.messages = response.messages || {};\n response.messages.chunk = response.messages.chunk || [];\n response.state = response.state || [];\n\n var peekRoom = self.createRoom(roomId);\n\n // FIXME: Mostly duplicated from _processRoomEvents but not entirely\n // because \"state\" in this API is at the BEGINNING of the chunk\n var oldStateEvents = utils.map(utils.deepCopy(response.state), client.getEventMapper());\n var stateEvents = utils.map(response.state, client.getEventMapper());\n var messages = utils.map(response.messages.chunk, client.getEventMapper());\n\n // XXX: copypasted from /sync until we kill off this\n // minging v1 API stuff)\n // handle presence events (User objects)\n if (response.presence && utils.isArray(response.presence)) {\n response.presence.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // set the pagination token before adding the events in case people\n // fire off pagination requests in response to the Room.timeline\n // events.\n if (response.messages.start) {\n peekRoom.oldState.paginationToken = response.messages.start;\n }\n\n // set the state of the room to as it was after the timeline executes\n peekRoom.oldState.setStateEvents(oldStateEvents);\n peekRoom.currentState.setStateEvents(stateEvents);\n\n self._resolveInvites(peekRoom);\n peekRoom.recalculate();\n\n // roll backwards to diverge old state. addEventsToTimeline\n // will overwrite the pagination token, so make sure it overwrites\n // it with the right thing.\n peekRoom.addEventsToTimeline(messages.reverse(), true, peekRoom.getLiveTimeline(), response.messages.start);\n\n client.store.storeRoom(peekRoom);\n client.emit(\"Room\", peekRoom);\n\n self._peekPoll(peekRoom);\n return peekRoom;\n });\n};\n\n/**\n * Stop polling for updates in the peeked room. NOPs if there is no room being\n * peeked.\n */\nSyncApi.prototype.stopPeeking = function () {\n this._peekRoomId = null;\n};\n\n/**\n * Do a peek room poll.\n * @param {Room} peekRoom\n * @param {string} token from= token\n */\nSyncApi.prototype._peekPoll = function (peekRoom, token) {\n if (this._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n\n var self = this;\n // FIXME: gut wrenching; hard-coded timeout values\n this.client._http.authedRequest(undefined, \"GET\", \"/events\", {\n room_id: peekRoom.roomId,\n timeout: 30 * 1000,\n from: token\n }, undefined, 50 * 1000).done(function (res) {\n if (self._peekRoomId !== peekRoom.roomId) {\n debuglog(\"Stopped peeking in room %s\", peekRoom.roomId);\n return;\n }\n // We have a problem that we get presence both from /events and /sync\n // however, /sync only returns presence for users in rooms\n // you're actually joined to.\n // in order to be sure to get presence for all of the users in the\n // peeked room, we handle presence explicitly here. This may result\n // in duplicate presence events firing for some users, which is a\n // performance drain, but such is life.\n // XXX: copypasted from /sync until we can kill this minging v1 stuff.\n\n res.chunk.filter(function (e) {\n return e.type === \"m.presence\";\n }).map(self.client.getEventMapper()).forEach(function (presenceEvent) {\n var user = self.client.store.getUser(presenceEvent.getContent().user_id);\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(self.client, presenceEvent.getContent().user_id);\n user.setPresenceEvent(presenceEvent);\n self.client.store.storeUser(user);\n }\n self.client.emit(\"event\", presenceEvent);\n });\n\n // strip out events which aren't for the given room_id (e.g presence)\n var events = res.chunk.filter(function (e) {\n return e.room_id === peekRoom.roomId;\n }).map(self.client.getEventMapper());\n\n peekRoom.addLiveEvents(events);\n self._peekPoll(peekRoom, res.end);\n }, function (err) {\n console.error(\"[%s] Peek poll failed: %s\", peekRoom.roomId, err);\n setTimeout(function () {\n self._peekPoll(peekRoom, token);\n }, 30 * 1000);\n });\n};\n\n/**\n * Returns the current state of this sync object\n * @see module:client~MatrixClient#event:\"sync\"\n * @return {?String}\n */\nSyncApi.prototype.getSyncState = function () {\n return this._syncState;\n};\n\n/**\n * Returns the additional data object associated with\n * the current sync state, or null if there is no\n * such data.\n * Sync errors, if available, are put in the 'error' key of\n * this object.\n * @return {?Object}\n */\nSyncApi.prototype.getSyncStateData = function () {\n return this._syncStateData;\n};\n\nSyncApi.prototype.recoverFromSyncStartupError = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(savedSyncPromise, err) {\n var keepaliveProm;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 2:\n keepaliveProm = this._startKeepAlives();\n\n this._updateSyncState(\"ERROR\", { error: err });\n _context.next = 6;\n return (0, _bluebird.resolve)(keepaliveProm);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Is the lazy loading option different than in previous session?\n * @param {bool} lazyLoadMembers current options for lazy loading\n * @return {bool} whether or not the option has changed compared to the previous session */\nSyncApi.prototype._wasLazyLoadingToggled = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(lazyLoadMembers) {\n var lazyLoadMembersBefore, isStoreNewlyCreated, prevClientOptions;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n lazyLoadMembers = !!lazyLoadMembers;\n // assume it was turned off before\n // if we don't know any better\n lazyLoadMembersBefore = false;\n _context2.next = 4;\n return (0, _bluebird.resolve)(this.client.store.isNewlyCreated());\n\n case 4:\n isStoreNewlyCreated = _context2.sent;\n\n if (isStoreNewlyCreated) {\n _context2.next = 11;\n break;\n }\n\n _context2.next = 8;\n return (0, _bluebird.resolve)(this.client.store.getClientOptions());\n\n case 8:\n prevClientOptions = _context2.sent;\n\n if (prevClientOptions) {\n lazyLoadMembersBefore = !!prevClientOptions.lazyLoadMembers;\n }\n return _context2.abrupt(\"return\", lazyLoadMembersBefore !== lazyLoadMembers);\n\n case 11:\n return _context2.abrupt(\"return\", false);\n\n case 12:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Main entry point\n */\nSyncApi.prototype.sync = function () {\n var _this = this;\n\n // We need to do one-off checks before we can begin the /sync loop.\n // These are:\n // 1) We need to get push rules so we can check if events should bing as we get\n // them from /sync.\n // 2) We need to get/create a filter which we can use for /sync.\n // 3) We need to check the lazy loading option matches what was used in the\n // stored sync. If it doesn't, we can't use the stored sync.\n\n var getPushRules = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(client.getPushRules());\n\n case 3:\n result = _context3.sent;\n\n debuglog(\"Got push rules\");\n\n client.pushRules = result;\n _context3.next = 14;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3[\"catch\"](0);\n _context3.next = 12;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context3.t0));\n\n case 12:\n getPushRules();\n return _context3.abrupt(\"return\");\n\n case 14:\n checkLazyLoadStatus(); // advance to the next stage\n\n case 15:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[0, 8]]);\n }));\n\n return function getPushRules() {\n return _ref3.apply(this, arguments);\n };\n }();\n\n var getFilter = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var filter, filterId;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n filter = void 0;\n\n if (self.opts.filter) {\n filter = self.opts.filter;\n } else {\n filter = new Filter(client.credentials.userId);\n filter.setTimelineLimit(self.opts.initialSyncLimit);\n }\n\n filterId = void 0;\n _context5.prev = 3;\n _context5.next = 6;\n return (0, _bluebird.resolve)(client.getOrCreateFilter(getFilterName(client.credentials.userId), filter));\n\n case 6:\n filterId = _context5.sent;\n _context5.next = 15;\n break;\n\n case 9:\n _context5.prev = 9;\n _context5.t0 = _context5[\"catch\"](3);\n _context5.next = 13;\n return (0, _bluebird.resolve)(self.recoverFromSyncStartupError(savedSyncPromise, _context5.t0));\n\n case 13:\n getFilter();\n return _context5.abrupt(\"return\");\n\n case 15:\n // reset the notifications timeline to prepare it to paginate from\n // the current point in time.\n // The right solution would be to tie /sync pagination tokens into\n // /notifications API somehow.\n client.resetNotifTimelineSet();\n\n if (self._currentSyncRequest === null) {\n // Send this first sync request here so we can then wait for the saved\n // sync data to finish processing before we process the results of this one.\n console.log(\"Sending first sync request...\");\n self._currentSyncRequest = self._doSyncRequest({ filterId: filterId }, savedSyncToken);\n }\n\n // Now wait for the saved sync to finish...\n _context5.next = 19;\n return (0, _bluebird.resolve)(savedSyncPromise);\n\n case 19:\n self._sync({ filterId: filterId });\n\n case 20:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[3, 9]]);\n }));\n\n return function getFilter() {\n return _ref5.apply(this, arguments);\n };\n }();\n\n var client = this.client;\n var self = this;\n\n this._running = true;\n\n if (global.document) {\n this._onOnlineBound = this._onOnline.bind(this);\n global.document.addEventListener(\"online\", this._onOnlineBound, false);\n }\n\n var savedSyncPromise = _bluebird2.default.resolve();\n var savedSyncToken = null;\n\n var checkLazyLoadStatus = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var supported, shouldClear, reason, error;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (_this.opts.lazyLoadMembers && client.isGuest()) {\n _this.opts.lazyLoadMembers = false;\n }\n\n if (!_this.opts.lazyLoadMembers) {\n _context4.next = 13;\n break;\n }\n\n _context4.next = 4;\n return (0, _bluebird.resolve)(client.doesServerSupportLazyLoading());\n\n case 4:\n supported = _context4.sent;\n\n if (!supported) {\n _context4.next = 11;\n break;\n }\n\n _context4.next = 8;\n return (0, _bluebird.resolve)(client.createFilter(Filter.LAZY_LOADING_SYNC_FILTER));\n\n case 8:\n _this.opts.filter = _context4.sent;\n _context4.next = 13;\n break;\n\n case 11:\n console.log(\"LL: lazy loading requested but not supported \" + \"by server, so disabling\");\n _this.opts.lazyLoadMembers = false;\n\n case 13:\n _context4.next = 15;\n return (0, _bluebird.resolve)(_this._wasLazyLoadingToggled(_this.opts.lazyLoadMembers));\n\n case 15:\n shouldClear = _context4.sent;\n\n if (!shouldClear) {\n _context4.next = 23;\n break;\n }\n\n _this._storeIsInvalid = true;\n reason = _errors.InvalidStoreError.TOGGLED_LAZY_LOADING;\n error = new _errors.InvalidStoreError(reason, !!_this.opts.lazyLoadMembers);\n\n _this._updateSyncState(\"ERROR\", { error: error });\n // bail out of the sync loop now: the app needs to respond to this error.\n // we leave the state as 'ERROR' which isn't great since this normally means\n // we're retrying. The client must be stopped before clearing the stores anyway\n // so the app should stop the client, clear the store and start it again.\n console.warn(\"InvalidStoreError: store is not usable: stopping sync.\");\n return _context4.abrupt(\"return\");\n\n case 23:\n if (_this.opts.lazyLoadMembers && _this._crypto) {\n _this.opts.crypto.enableLazyLoading();\n }\n _context4.next = 26;\n return (0, _bluebird.resolve)(_this.client._storeClientOptions());\n\n case 26:\n\n getFilter(); // Now get the filter and start syncing\n\n case 27:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, _this);\n }));\n\n return function checkLazyLoadStatus() {\n return _ref4.apply(this, arguments);\n };\n }();\n\n if (client.isGuest()) {\n // no push rules for guests, no access to POST filter for guests.\n self._sync({});\n } else {\n // Pull the saved sync token out first, before the worker starts sending\n // all the sync data which could take a while. This will let us send our\n // first incremental sync request before we've processed our saved data.\n savedSyncPromise = client.store.getSavedSyncToken().then(function (tok) {\n savedSyncToken = tok;\n return client.store.getSavedSync();\n }).then(function (savedSync) {\n if (savedSync) {\n return self._syncFromCache(savedSync);\n }\n });\n // Now start the first incremental sync request: this can also\n // take a while so if we set it going now, we can wait for it\n // to finish while we process our saved sync data.\n getPushRules();\n }\n};\n\n/**\n * Stops the sync object from syncing.\n */\nSyncApi.prototype.stop = function () {\n debuglog(\"SyncApi.stop\");\n if (global.document) {\n global.document.removeEventListener(\"online\", this._onOnlineBound, false);\n this._onOnlineBound = undefined;\n }\n this._running = false;\n if (this._currentSyncRequest) {\n this._currentSyncRequest.abort();\n }\n if (this._keepAliveTimer) {\n clearTimeout(this._keepAliveTimer);\n this._keepAliveTimer = null;\n }\n};\n\n/**\n * Retry a backed off syncing request immediately. This should only be used when\n * the user <b>explicitly</b> attempts to retry their lost connection.\n * @return {boolean} True if this resulted in a request being retried.\n */\nSyncApi.prototype.retryImmediately = function () {\n if (!this._connectionReturnedDefer) {\n return false;\n }\n this._startKeepAlives(0);\n return true;\n};\n/**\n * Process a single set of cached sync data.\n * @param {Object} savedSync a saved sync that was persisted by a store. This\n * should have been acquired via client.store.getSavedSync().\n */\nSyncApi.prototype._syncFromCache = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(savedSync) {\n var nextSyncToken, syncEventData, data;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n debuglog(\"sync(): not doing HTTP hit, instead returning stored /sync data\");\n\n nextSyncToken = savedSync.nextBatch;\n\n // Set sync token for future incremental syncing\n\n this.client.store.setSyncToken(nextSyncToken);\n\n // No previous sync, set old token to null\n syncEventData = {\n oldSyncToken: null,\n nextSyncToken: nextSyncToken,\n catchingUp: false\n };\n data = {\n next_batch: nextSyncToken,\n rooms: savedSync.roomsData,\n groups: savedSync.groupsData,\n account_data: {\n events: savedSync.accountData\n }\n };\n _context6.prev = 5;\n _context6.next = 8;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 8:\n _context6.next = 13;\n break;\n\n case 10:\n _context6.prev = 10;\n _context6.t0 = _context6[\"catch\"](5);\n\n console.error(\"Error processing cached sync\", _context6.t0.stack || _context6.t0);\n\n case 13:\n\n // Don't emit a prepared if we've bailed because the store is invalid:\n // in this case the client will not be usable until stopped & restarted\n // so this would be useless and misleading.\n if (!this._storeIsInvalid) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n }\n\n case 14:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this, [[5, 10]]);\n }));\n\n return function (_x4) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * Invoke me to do /sync calls\n * @param {Object} syncOptions\n * @param {string} syncOptions.filterId\n * @param {boolean} syncOptions.hasSyncedBefore\n */\nSyncApi.prototype._sync = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(syncOptions) {\n var client, syncToken, data, syncEventData;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n client = this.client;\n\n if (this._running) {\n _context7.next = 6;\n break;\n }\n\n debuglog(\"Sync no longer running: exiting.\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return _context7.abrupt(\"return\");\n\n case 6:\n syncToken = client.store.getSyncToken();\n data = void 0;\n _context7.prev = 8;\n\n //debuglog('Starting sync since=' + syncToken);\n if (this._currentSyncRequest === null) {\n this._currentSyncRequest = this._doSyncRequest(syncOptions, syncToken);\n }\n _context7.next = 12;\n return (0, _bluebird.resolve)(this._currentSyncRequest);\n\n case 12:\n data = _context7.sent;\n _context7.next = 19;\n break;\n\n case 15:\n _context7.prev = 15;\n _context7.t0 = _context7[\"catch\"](8);\n\n this._onSyncError(_context7.t0, syncOptions);\n return _context7.abrupt(\"return\");\n\n case 19:\n _context7.prev = 19;\n\n this._currentSyncRequest = null;\n return _context7.finish(19);\n\n case 22:\n\n //debuglog('Completed sync, next_batch=' + data.next_batch);\n\n // set the sync token NOW *before* processing the events. We do this so\n // if something barfs on an event we can skip it rather than constantly\n // polling with the same token.\n client.store.setSyncToken(data.next_batch);\n\n // Reset after a successful sync\n this._failedSyncCount = 0;\n\n _context7.next = 26;\n return (0, _bluebird.resolve)(client.store.setSyncData(data));\n\n case 26:\n syncEventData = {\n oldSyncToken: syncToken,\n nextSyncToken: data.next_batch,\n catchingUp: this._catchingUp\n };\n\n if (!this.opts.crypto) {\n _context7.next = 30;\n break;\n }\n\n _context7.next = 30;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncWillProcess(syncEventData));\n\n case 30:\n _context7.prev = 30;\n _context7.next = 33;\n return (0, _bluebird.resolve)(this._processSyncResponse(syncEventData, data));\n\n case 33:\n _context7.next = 38;\n break;\n\n case 35:\n _context7.prev = 35;\n _context7.t1 = _context7[\"catch\"](30);\n\n // log the exception with stack if we have it, else fall back\n // to the plain description\n console.error(\"Caught /sync error\", _context7.t1.stack || _context7.t1);\n\n case 38:\n\n // update this as it may have changed\n syncEventData.catchingUp = this._catchingUp;\n\n // emit synced events\n if (!syncOptions.hasSyncedBefore) {\n this._updateSyncState(\"PREPARED\", syncEventData);\n syncOptions.hasSyncedBefore = true;\n }\n\n // tell the crypto module to do its processing. It may block (to do a\n // /keys/changes request).\n\n if (!this.opts.crypto) {\n _context7.next = 43;\n break;\n }\n\n _context7.next = 43;\n return (0, _bluebird.resolve)(this.opts.crypto.onSyncCompleted(syncEventData));\n\n case 43:\n\n // keep emitting SYNCING -> SYNCING for clients who want to do bulk updates\n this._updateSyncState(\"SYNCING\", syncEventData);\n\n if (!client.store.wantsSave()) {\n _context7.next = 49;\n break;\n }\n\n if (!this.opts.crypto) {\n _context7.next = 48;\n break;\n }\n\n _context7.next = 48;\n return (0, _bluebird.resolve)(this.opts.crypto.saveDeviceList(0));\n\n case 48:\n\n // tell databases that everything is now in a consistent state and can be saved.\n client.store.save();\n\n case 49:\n\n // Begin next sync\n this._sync(syncOptions);\n\n case 50:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this, [[8, 15, 19, 22], [30, 35]]);\n }));\n\n return function (_x5) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nSyncApi.prototype._doSyncRequest = function (syncOptions, syncToken) {\n var qps = this._getSyncParams(syncOptions, syncToken);\n return this.client._http.authedRequest(undefined, \"GET\", \"/sync\", qps, undefined, qps.timeout + BUFFER_PERIOD_MS);\n};\n\nSyncApi.prototype._getSyncParams = function (syncOptions, syncToken) {\n var pollTimeout = this.opts.pollTimeout;\n\n if (this.getSyncState() !== 'SYNCING' || this._catchingUp) {\n // unless we are happily syncing already, we want the server to return\n // as quickly as possible, even if there are no events queued. This\n // serves two purposes:\n //\n // * When the connection dies, we want to know asap when it comes back,\n // so that we can hide the error from the user. (We don't want to\n // have to wait for an event or a timeout).\n //\n // * We want to know if the server has any to_device messages queued up\n // for us. We do that by calling it with a zero timeout until it\n // doesn't give us any more to_device messages.\n this._catchingUp = true;\n pollTimeout = 0;\n }\n\n var filterId = syncOptions.filterId;\n if (this.client.isGuest() && !filterId) {\n filterId = this._getGuestFilter();\n }\n\n var qps = {\n filter: filterId,\n timeout: pollTimeout\n };\n\n if (this.opts.disablePresence) {\n qps.set_presence = \"offline\";\n }\n\n if (syncToken) {\n qps.since = syncToken;\n } else {\n // use a cachebuster for initialsyncs, to make sure that\n // we don't get a stale sync\n // (https://github.com/vector-im/vector-web/issues/1354)\n qps._cacheBuster = Date.now();\n }\n\n if (this.getSyncState() == 'ERROR' || this.getSyncState() == 'RECONNECTING') {\n // we think the connection is dead. If it comes back up, we won't know\n // about it till /sync returns. If the timeout= is high, this could\n // be a long time. Set it to 0 when doing retries so we don't have to wait\n // for an event or a timeout before emiting the SYNCING event.\n qps.timeout = 0;\n }\n\n return qps;\n};\n\nSyncApi.prototype._onSyncError = function (err, syncOptions) {\n var _this2 = this;\n\n if (!this._running) {\n debuglog(\"Sync no longer running: exiting\");\n if (this._connectionReturnedDefer) {\n this._connectionReturnedDefer.reject();\n this._connectionReturnedDefer = null;\n }\n this._updateSyncState(\"STOPPED\");\n return;\n }\n\n console.error(\"/sync error %s\", err);\n console.error(err);\n\n this._failedSyncCount++;\n console.log('Number of consecutive failed sync requests:', this._failedSyncCount);\n\n debuglog(\"Starting keep-alive\");\n // Note that we do *not* mark the sync connection as\n // lost yet: we only do this if a keepalive poke\n // fails, since long lived HTTP connections will\n // go away sometimes and we shouldn't treat this as\n // erroneous. We set the state to 'reconnecting'\n // instead, so that clients can observe this state\n // if they wish.\n this._startKeepAlives().then(function (connDidFail) {\n // Only emit CATCHUP if we detected a connectivity error: if we didn't,\n // it's quite likely the sync will fail again for the same reason and we\n // want to stay in ERROR rather than keep flip-flopping between ERROR\n // and CATCHUP.\n if (connDidFail && _this2.getSyncState() === 'ERROR') {\n _this2._updateSyncState(\"CATCHUP\", {\n oldSyncToken: null,\n nextSyncToken: null,\n catchingUp: true\n });\n }\n _this2._sync(syncOptions);\n });\n\n this._currentSyncRequest = null;\n // Transition from RECONNECTING to ERROR after a given number of failed syncs\n this._updateSyncState(this._failedSyncCount >= FAILED_SYNC_ERROR_THRESHOLD ? \"ERROR\" : \"RECONNECTING\", { error: err });\n};\n\n/**\n * Process data returned from a sync response and propagate it\n * into the model objects\n *\n * @param {Object} syncEventData Object containing sync tokens associated with this sync\n * @param {Object} data The response from /sync\n */\nSyncApi.prototype._processSyncResponse = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(syncEventData, data) {\n var client, self, events, inviteRooms, joinRooms, leaveRooms, currentCount;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n client = this.client;\n self = this;\n\n // data looks like:\n // {\n // next_batch: $token,\n // presence: { events: [] },\n // account_data: { events: [] },\n // device_lists: { changed: [\"@user:server\", ... ]},\n // to_device: { events: [] },\n // device_one_time_keys_count: { signed_curve25519: 42 },\n // rooms: {\n // invite: {\n // $roomid: {\n // invite_state: { events: [] }\n // }\n // },\n // join: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token, limited: true },\n // ephemeral: { events: [] },\n // summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // account_data: { events: [] },\n // unread_notifications: {\n // highlight_count: 0,\n // notification_count: 0,\n // }\n // }\n // },\n // leave: {\n // $roomid: {\n // state: { events: [] },\n // timeline: { events: [], prev_batch: $token }\n // }\n // }\n // },\n // groups: {\n // invite: {\n // $groupId: {\n // inviter: $inviter,\n // profile: {\n // avatar_url: $avatarUrl,\n // name: $groupName,\n // },\n // },\n // },\n // join: {},\n // leave: {},\n // },\n // }\n\n // TODO-arch:\n // - Each event we pass through needs to be emitted via 'event', can we\n // do this in one place?\n // - The isBrandNewRoom boilerplate is boilerplatey.\n\n // handle presence events (User objects)\n\n if (data.presence && utils.isArray(data.presence.events)) {\n data.presence.events.map(client.getEventMapper()).forEach(function (presenceEvent) {\n var user = client.store.getUser(presenceEvent.getSender());\n if (user) {\n user.setPresenceEvent(presenceEvent);\n } else {\n user = createNewUser(client, presenceEvent.getSender());\n user.setPresenceEvent(presenceEvent);\n client.store.storeUser(user);\n }\n client.emit(\"event\", presenceEvent);\n });\n }\n\n // handle non-room account_data\n if (data.account_data && utils.isArray(data.account_data.events)) {\n events = data.account_data.events.map(client.getEventMapper());\n\n client.store.storeAccountDataEvents(events);\n events.forEach(function (accountDataEvent) {\n // Honour push rules that come down the sync stream but also\n // honour push rules that were previously cached. Base rules\n // will be updated when we recieve push rules via getPushRules\n // (see SyncApi.prototype.sync) before syncing over the network.\n if (accountDataEvent.getType() == 'm.push_rules') {\n client.pushRules = accountDataEvent.getContent();\n }\n client.emit(\"accountData\", accountDataEvent);\n return accountDataEvent;\n });\n }\n\n // handle to-device events\n if (data.to_device && utils.isArray(data.to_device.events) && data.to_device.events.length > 0) {\n data.to_device.events.map(client.getEventMapper()).forEach(function (toDeviceEvent) {\n var content = toDeviceEvent.getContent();\n if (toDeviceEvent.getType() == \"m.room.message\" && content.msgtype == \"m.bad.encrypted\") {\n // the mapper already logged a warning.\n console.log('Ignoring undecryptable to-device event from ' + toDeviceEvent.getSender());\n return;\n }\n\n client.emit(\"toDeviceEvent\", toDeviceEvent);\n });\n } else {\n // no more to-device events: we can stop polling with a short timeout.\n this._catchingUp = false;\n }\n\n if (data.groups) {\n if (data.groups.invite) {\n this._processGroupSyncEntry(data.groups.invite, 'invite');\n }\n\n if (data.groups.join) {\n this._processGroupSyncEntry(data.groups.join, 'join');\n }\n\n if (data.groups.leave) {\n this._processGroupSyncEntry(data.groups.leave, 'leave');\n }\n }\n\n // the returned json structure is a bit crap, so make it into a\n // nicer form (array) after applying sanity to make sure we don't fail\n // on missing keys (on the off chance)\n inviteRooms = [];\n joinRooms = [];\n leaveRooms = [];\n\n\n if (data.rooms) {\n if (data.rooms.invite) {\n inviteRooms = this._mapSyncResponseToRoomArray(data.rooms.invite);\n }\n if (data.rooms.join) {\n joinRooms = this._mapSyncResponseToRoomArray(data.rooms.join);\n }\n if (data.rooms.leave) {\n leaveRooms = this._mapSyncResponseToRoomArray(data.rooms.leave);\n }\n }\n\n this._notifEvents = [];\n\n // Handle invites\n inviteRooms.forEach(function (inviteObj) {\n var room = inviteObj.room;\n var stateEvents = self._mapSyncEventsFormat(inviteObj.invite_state, room);\n\n room.updateMyMembership(\"invite\");\n self._processRoomEvents(room, stateEvents);\n if (inviteObj.isBrandNewRoom) {\n room.recalculate();\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n });\n\n // Handle joins\n _context10.next = 14;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(joinRooms, function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(joinObj) {\n var processRoomEvent = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(e) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n client.emit(\"event\", e);\n\n if (!(e.isState() && e.getType() == \"m.room.encryption\" && self.opts.crypto)) {\n _context8.next = 4;\n break;\n }\n\n _context8.next = 4;\n return (0, _bluebird.resolve)(self.opts.crypto.onCryptoEvent(e));\n\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function processRoomEvent(_x9) {\n return _ref10.apply(this, arguments);\n };\n }();\n\n var room, stateEvents, timelineEvents, ephemeralEvents, accountDataEvents, limited, i, eventId;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n room = joinObj.room;\n stateEvents = self._mapSyncEventsFormat(joinObj.state, room);\n timelineEvents = self._mapSyncEventsFormat(joinObj.timeline, room);\n ephemeralEvents = self._mapSyncEventsFormat(joinObj.ephemeral);\n accountDataEvents = self._mapSyncEventsFormat(joinObj.account_data);\n\n // we do this first so it's correct when any of the events fire\n\n if (joinObj.unread_notifications) {\n room.setUnreadNotificationCount('total', joinObj.unread_notifications.notification_count);\n room.setUnreadNotificationCount('highlight', joinObj.unread_notifications.highlight_count);\n }\n\n room.updateMyMembership(\"join\");\n\n joinObj.timeline = joinObj.timeline || {};\n\n if (!joinObj.isBrandNewRoom) {\n _context9.next = 12;\n break;\n }\n\n // set the back-pagination token. Do this *before* adding any\n // events so that clients can start back-paginating.\n room.getLiveTimeline().setPaginationToken(joinObj.timeline.prev_batch, EventTimeline.BACKWARDS);\n _context9.next = 26;\n break;\n\n case 12:\n if (!joinObj.timeline.limited) {\n _context9.next = 26;\n break;\n }\n\n limited = true;\n\n // we've got a limited sync, so we *probably* have a gap in the\n // timeline, so should reset. But we might have been peeking or\n // paginating and already have some of the events, in which\n // case we just want to append any subsequent events to the end\n // of the existing timeline.\n //\n // This is particularly important in the case that we already have\n // *all* of the events in the timeline - in that case, if we reset\n // the timeline, we'll end up with an entirely empty timeline,\n // which we'll try to paginate but not get any new events (which\n // will stop us linking the empty timeline into the chain).\n //\n\n i = timelineEvents.length - 1;\n\n case 15:\n if (!(i >= 0)) {\n _context9.next = 25;\n break;\n }\n\n eventId = timelineEvents[i].getId();\n\n if (!room.getTimelineForEvent(eventId)) {\n _context9.next = 22;\n break;\n }\n\n debuglog(\"Already have event \" + eventId + \" in limited \" + \"sync - not resetting\");\n limited = false;\n\n // we might still be missing some of the events before i;\n // we don't want to be adding them to the end of the\n // timeline because that would put them out of order.\n timelineEvents.splice(0, i);\n\n // XXX: there's a problem here if the skipped part of the\n // timeline modifies the state set in stateEvents, because\n // we'll end up using the state from stateEvents rather\n // than the later state from timelineEvents. We probably\n // need to wind stateEvents forward over the events we're\n // skipping.\n\n return _context9.abrupt(\"break\", 25);\n\n case 22:\n i--;\n _context9.next = 15;\n break;\n\n case 25:\n\n if (limited) {\n self._deregisterStateListeners(room);\n room.resetLiveTimeline(joinObj.timeline.prev_batch, self.opts.canResetEntireTimeline(room.roomId) ? null : syncEventData.oldSyncToken);\n\n // We have to assume any gap in any timeline is\n // reason to stop incrementally tracking notifications and\n // reset the timeline.\n client.resetNotifTimelineSet();\n\n self._registerStateListeners(room);\n }\n\n case 26:\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n\n // set summary after processing events,\n // because it will trigger a name calculation\n // which needs the room state to be up to date\n if (joinObj.summary) {\n room.setSummary(joinObj.summary);\n }\n\n // XXX: should we be adding ephemeralEvents to the timeline?\n // It feels like that for symmetry with room.addAccountData()\n // there should be a room.addEphemeralEvents() or similar.\n room.addLiveEvents(ephemeralEvents);\n\n // we deliberately don't add accountData to the timeline\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (joinObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n _context9.next = 35;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(stateEvents, processRoomEvent));\n\n case 35:\n _context9.next = 37;\n return (0, _bluebird.resolve)(_bluebird2.default.mapSeries(timelineEvents, processRoomEvent));\n\n case 37:\n ephemeralEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n\n case 39:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x8) {\n return _ref9.apply(this, arguments);\n };\n }()));\n\n case 14:\n\n // Handle leaves (e.g. kicked rooms)\n leaveRooms.forEach(function (leaveObj) {\n var room = leaveObj.room;\n var stateEvents = self._mapSyncEventsFormat(leaveObj.state, room);\n var timelineEvents = self._mapSyncEventsFormat(leaveObj.timeline, room);\n var accountDataEvents = self._mapSyncEventsFormat(leaveObj.account_data);\n\n room.updateMyMembership(\"leave\");\n\n self._processRoomEvents(room, stateEvents, timelineEvents);\n room.addAccountData(accountDataEvents);\n\n room.recalculate();\n if (leaveObj.isBrandNewRoom) {\n client.store.storeRoom(room);\n client.emit(\"Room\", room);\n }\n\n self._processEventsForNotifs(room, timelineEvents);\n\n stateEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n timelineEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n accountDataEvents.forEach(function (e) {\n client.emit(\"event\", e);\n });\n });\n\n // update the notification timeline, if appropriate.\n // we only do this for live events, as otherwise we can't order them sanely\n // in the timeline relative to ones paginated in by /notifications.\n // XXX: we could fix this by making EventTimeline support chronological\n // ordering... but it doesn't, right now.\n if (syncEventData.oldSyncToken && this._notifEvents.length) {\n this._notifEvents.sort(function (a, b) {\n return a.getTs() - b.getTs();\n });\n this._notifEvents.forEach(function (event) {\n client.getNotifTimelineSet().addLiveEvent(event);\n });\n }\n\n // Handle device list updates\n\n if (!data.device_lists) {\n _context10.next = 22;\n break;\n }\n\n if (!this.opts.crypto) {\n _context10.next = 22;\n break;\n }\n\n _context10.next = 20;\n return (0, _bluebird.resolve)(this.opts.crypto.handleDeviceListChanges(syncEventData, data.device_lists));\n\n case 20:\n _context10.next = 22;\n break;\n\n case 22:\n\n // Handle one_time_keys_count\n if (this.opts.crypto && data.device_one_time_keys_count) {\n currentCount = data.device_one_time_keys_count.signed_curve25519 || 0;\n\n this.opts.crypto.updateOneTimeKeyCount(currentCount);\n }\n\n case 23:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x6, _x7) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Starts polling the connectivity check endpoint\n * @param {number} delay How long to delay until the first poll.\n * defaults to a short, randomised interval (to prevent\n * tightlooping if /versions succeeds but /sync etc. fail).\n * @return {promise} which resolves once the connection returns\n */\nSyncApi.prototype._startKeepAlives = function (delay) {\n if (delay === undefined) {\n delay = 2000 + Math.floor(Math.random() * 5000);\n }\n\n if (this._keepAliveTimer !== null) {\n clearTimeout(this._keepAliveTimer);\n }\n var self = this;\n if (delay > 0) {\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self), delay);\n } else {\n self._pokeKeepAlive();\n }\n if (!this._connectionReturnedDefer) {\n this._connectionReturnedDefer = _bluebird2.default.defer();\n }\n return this._connectionReturnedDefer.promise;\n};\n\n/**\n * Make a dummy call to /_matrix/client/versions, to see if the HS is\n * reachable.\n *\n * On failure, schedules a call back to itself. On success, resolves\n * this._connectionReturnedDefer.\n *\n * @param {bool} connDidFail True if a connectivity failure has been detected. Optional.\n */\nSyncApi.prototype._pokeKeepAlive = function (connDidFail) {\n if (connDidFail === undefined) connDidFail = false;\n var self = this;\n function success() {\n clearTimeout(self._keepAliveTimer);\n if (self._connectionReturnedDefer) {\n self._connectionReturnedDefer.resolve(connDidFail);\n self._connectionReturnedDefer = null;\n }\n }\n\n this.client._http.request(undefined, // callback\n \"GET\", \"/_matrix/client/versions\", undefined, // queryParams\n undefined, // data\n {\n prefix: '',\n localTimeoutMs: 15 * 1000\n }).done(function () {\n success();\n }, function (err) {\n if (err.httpStatus == 400 || err.httpStatus == 404) {\n // treat this as a success because the server probably just doesn't\n // support /versions: point is, we're getting a response.\n // We wait a short time though, just in case somehow the server\n // is in a mode where it 400s /versions responses and sync etc.\n // responses fail, this will mean we don't hammer in a loop.\n self._keepAliveTimer = setTimeout(success, 2000);\n } else {\n connDidFail = true;\n self._keepAliveTimer = setTimeout(self._pokeKeepAlive.bind(self, connDidFail), 5000 + Math.floor(Math.random() * 5000));\n // A keepalive has failed, so we emit the\n // error state (whether or not this is the\n // first failure).\n // Note we do this after setting the timer:\n // this lets the unit tests advance the mock\n // clock when they get the error.\n self._updateSyncState(\"ERROR\", { error: err });\n }\n });\n};\n\n/**\n * @param {Object} groupsSection Groups section object, eg. response.groups.invite\n * @param {string} sectionName Which section this is ('invite', 'join' or 'leave')\n */\nSyncApi.prototype._processGroupSyncEntry = function (groupsSection, sectionName) {\n // Processes entries from 'groups' section of the sync stream\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(groupsSection)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var groupId = _step.value;\n\n var groupInfo = groupsSection[groupId];\n var group = this.client.store.getGroup(groupId);\n var isBrandNew = group === null;\n if (group === null) {\n group = this.createGroup(groupId);\n }\n if (groupInfo.profile) {\n group.setProfile(groupInfo.profile.name, groupInfo.profile.avatar_url);\n }\n if (groupInfo.inviter) {\n group.setInviter({ userId: groupInfo.inviter });\n }\n group.setMyMembership(sectionName);\n if (isBrandNew) {\n // Now we've filled in all the fields, emit the Group event\n this.client.emit(\"Group\", group);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n};\n\n/**\n * @param {Object} obj\n * @return {Object[]}\n */\nSyncApi.prototype._mapSyncResponseToRoomArray = function (obj) {\n // Maps { roomid: {stuff}, roomid: {stuff} }\n // to\n // [{stuff+Room+isBrandNewRoom}, {stuff+Room+isBrandNewRoom}]\n var client = this.client;\n var self = this;\n return utils.keys(obj).map(function (roomId) {\n var arrObj = obj[roomId];\n var room = client.store.getRoom(roomId);\n var isBrandNewRoom = false;\n if (!room) {\n room = self.createRoom(roomId);\n isBrandNewRoom = true;\n }\n arrObj.room = room;\n arrObj.isBrandNewRoom = isBrandNewRoom;\n return arrObj;\n });\n};\n\n/**\n * @param {Object} obj\n * @param {Room} room\n * @return {MatrixEvent[]}\n */\nSyncApi.prototype._mapSyncEventsFormat = function (obj, room) {\n if (!obj || !utils.isArray(obj.events)) {\n return [];\n }\n var mapper = this.client.getEventMapper();\n return obj.events.map(function (e) {\n if (room) {\n e.room_id = room.roomId;\n }\n return mapper(e);\n });\n};\n\n/**\n * @param {Room} room\n */\nSyncApi.prototype._resolveInvites = function (room) {\n if (!room || !this.opts.resolveInvitesToProfiles) {\n return;\n }\n var client = this.client;\n // For each invited room member we want to give them a displayname/avatar url\n // if they have one (the m.room.member invites don't contain this).\n room.getMembersWithMembership(\"invite\").forEach(function (member) {\n if (member._requestedProfileInfo) {\n return;\n }\n member._requestedProfileInfo = true;\n // try to get a cached copy first.\n var user = client.getUser(member.userId);\n var promise = void 0;\n if (user) {\n promise = _bluebird2.default.resolve({\n avatar_url: user.avatarUrl,\n displayname: user.displayName\n });\n } else {\n promise = client.getProfileInfo(member.userId);\n }\n promise.done(function (info) {\n // slightly naughty by doctoring the invite event but this means all\n // the code paths remain the same between invite/join display name stuff\n // which is a worthy trade-off for some minor pollution.\n var inviteEvent = member.events.member;\n if (inviteEvent.getContent().membership !== \"invite\") {\n // between resolving and now they have since joined, so don't clobber\n return;\n }\n inviteEvent.getContent().avatar_url = info.avatar_url;\n inviteEvent.getContent().displayname = info.displayname;\n // fire listeners\n member.setMembershipEvent(inviteEvent, room.currentState);\n }, function (err) {\n // OH WELL.\n });\n });\n};\n\n/**\n * @param {Room} room\n * @param {MatrixEvent[]} stateEventList A list of state events. This is the state\n * at the *START* of the timeline list if it is supplied.\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processRoomEvents = function (room, stateEventList, timelineEventList) {\n // If there are no events in the timeline yet, initialise it with\n // the given state events\n var liveTimeline = room.getLiveTimeline();\n var timelineWasEmpty = liveTimeline.getEvents().length == 0;\n if (timelineWasEmpty) {\n // Passing these events into initialiseState will freeze them, so we need\n // to compute and cache the push actions for them now, otherwise sync dies\n // with an attempt to assign to read only property.\n // XXX: This is pretty horrible and is assuming all sorts of behaviour from\n // these functions that it shouldn't be. We should probably either store the\n // push actions cache elsewhere so we can freeze MatrixEvents, or otherwise\n // find some solution where MatrixEvents are immutable but allow for a cache\n // field.\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(stateEventList), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var ev = _step2.value;\n\n this.client.getPushActionsForEvent(ev);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n liveTimeline.initialiseState(stateEventList);\n }\n\n this._resolveInvites(room);\n\n // recalculate the room name at this point as adding events to the timeline\n // may make notifications appear which should have the right name.\n // XXX: This looks suspect: we'll end up recalculating the room once here\n // and then again after adding events (_processSyncResponse calls it after\n // calling us) even if no state events were added. It also means that if\n // one of the room events in timelineEventList is something that needs\n // a recalculation (like m.room.name) we won't recalculate until we've\n // finished adding all the events, which will cause the notification to have\n // the old room name rather than the new one.\n room.recalculate();\n\n // If the timeline wasn't empty, we process the state events here: they're\n // defined as updates to the state before the start of the timeline, so this\n // starts to roll the state forward.\n // XXX: That's what we *should* do, but this can happen if we were previously\n // peeking in a room, in which case we obviously do *not* want to add the\n // state events here onto the end of the timeline. Historically, the js-sdk\n // has just set these new state events on the old and new state. This seems\n // very wrong because there could be events in the timeline that diverge the\n // state, in which case this is going to leave things out of sync. However,\n // for now I think it;s best to behave the same as the code has done previously.\n if (!timelineWasEmpty) {\n // XXX: As above, don't do this...\n //room.addLiveEvents(stateEventList || []);\n // Do this instead...\n room.oldState.setStateEvents(stateEventList || []);\n room.currentState.setStateEvents(stateEventList || []);\n }\n // execute the timeline events. This will continue to diverge the current state\n // if the timeline has any state events in it.\n // This also needs to be done before running push rules on the events as they need\n // to be decorated with sender etc.\n room.addLiveEvents(timelineEventList || []);\n};\n\n/**\n * Takes a list of timelineEvents and adds and adds to _notifEvents\n * as appropriate.\n * This must be called after the room the events belong to has been stored.\n *\n * @param {Room} room\n * @param {MatrixEvent[]} [timelineEventList] A list of timeline events. Lower index\n * is earlier in time. Higher index is later.\n */\nSyncApi.prototype._processEventsForNotifs = function (room, timelineEventList) {\n // gather our notifications into this._notifEvents\n if (this.client.getNotifTimelineSet()) {\n for (var i = 0; i < timelineEventList.length; i++) {\n var pushActions = this.client.getPushActionsForEvent(timelineEventList[i]);\n if (pushActions && pushActions.notify && pushActions.tweaks && pushActions.tweaks.highlight) {\n this._notifEvents.push(timelineEventList[i]);\n }\n }\n }\n};\n\n/**\n * @return {string}\n */\nSyncApi.prototype._getGuestFilter = function () {\n var guestRooms = this.client._guestRooms; // FIXME: horrible gut-wrenching\n if (!guestRooms) {\n return \"{}\";\n }\n // we just need to specify the filter inline if we're a guest because guests\n // can't create filters.\n return (0, _stringify2.default)({\n room: {\n timeline: {\n limit: 20\n }\n }\n });\n};\n\n/**\n * Sets the sync state and emits an event to say so\n * @param {String} newState The new state string\n * @param {Object} data Object of additional data to emit in the event\n */\nSyncApi.prototype._updateSyncState = function (newState, data) {\n var old = this._syncState;\n this._syncState = newState;\n this._syncStateData = data;\n this.client.emit(\"sync\", this._syncState, old, data);\n};\n\n/**\n * Event handler for the 'online' event\n * This event is generally unreliable and precise behaviour\n * varies between browsers, so we poll for connectivity too,\n * but this might help us reconnect a little faster.\n */\nSyncApi.prototype._onOnline = function () {\n debuglog(\"Browser thinks we are back online\");\n this._startKeepAlives(0);\n};\n\nfunction createNewUser(client, userId) {\n var user = new User(userId);\n client.reEmitter.reEmit(user, [\"User.avatarUrl\", \"User.displayName\", \"User.presence\", \"User.currentlyActive\", \"User.lastPresenceTs\"]);\n return user;\n}\n\n/** */\nmodule.exports = SyncApi;\n//# sourceMappingURL=sync.js.map","require('../../modules/es6.number.is-integer');\nmodule.exports = require('../../modules/_core').Number.isInteger;\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n if (promise._h == 1) return false;\n var chain = promise._a || promise._c;\n var i = 0;\n var reaction;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise)) return false;\n } return true;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if (Observer) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * @module models/room-summary\n */\n\n/**\n * Construct a new Room Summary. A summary can be used for display on a recent\n * list, without having to load the entire room list into memory.\n * @constructor\n * @param {string} roomId Required. The ID of this room.\n * @param {Object} info Optional. The summary info. Additional keys are supported.\n * @param {string} info.title The title of the room (e.g. <code>m.room.name</code>)\n * @param {string} info.desc The description of the room (e.g.\n * <code>m.room.topic</code>)\n * @param {Number} info.numMembers The number of joined users.\n * @param {string[]} info.aliases The list of aliases for this room.\n * @param {Number} info.timestamp The timestamp for this room.\n */\n\nfunction RoomSummary(roomId, info) {\n this.roomId = roomId;\n this.info = info;\n}\n\n/**\n * The RoomSummary class.\n */\nmodule.exports = RoomSummary;\n//# sourceMappingURL=room-summary.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * This is an internal module. MatrixBaseApis is currently only meant to be used\n * by {@link client~MatrixClient}.\n *\n * @module base-apis\n */\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar httpApi = require(\"./http-api\");\nvar utils = require(\"./utils\");\n\n/**\n * Low-level wrappers for the Matrix APIs\n *\n * @constructor\n *\n * @param {Object} opts Configuration options\n *\n * @param {string} opts.baseUrl Required. The base URL to the client-server\n * HTTP API.\n *\n * @param {string} opts.idBaseUrl Optional. The base identity server URL for\n * identity server requests.\n *\n * @param {Function} opts.request Required. The function to invoke for HTTP\n * requests. The value of this property is typically <code>require(\"request\")\n * </code> as it returns a function which meets the required interface. See\n * {@link requestFunction} for more information.\n *\n * @param {string} opts.accessToken The access_token for this user.\n *\n * @param {Number=} opts.localTimeoutMs Optional. The default maximum amount of\n * time to wait before timing out HTTP requests. If not specified, there is no\n * timeout.\n *\n * @param {Object} opts.queryParams Optional. Extra query parameters to append\n * to all requests with this client. Useful for application services which require\n * <code>?user_id=</code>.\n *\n * @param {boolean} [opts.useAuthorizationHeader = false] Set to true to use\n * Authorization header instead of query param to send the access token to the server.\n */\nfunction MatrixBaseApis(opts) {\n utils.checkObjectHasKeys(opts, [\"baseUrl\", \"request\"]);\n\n this.baseUrl = opts.baseUrl;\n this.idBaseUrl = opts.idBaseUrl;\n\n var httpOpts = {\n baseUrl: opts.baseUrl,\n idBaseUrl: opts.idBaseUrl,\n accessToken: opts.accessToken,\n request: opts.request,\n prefix: httpApi.PREFIX_R0,\n onlyData: true,\n extraParams: opts.queryParams,\n localTimeoutMs: opts.localTimeoutMs,\n useAuthorizationHeader: opts.useAuthorizationHeader\n };\n this._http = new httpApi.MatrixHttpApi(this, httpOpts);\n\n this._txnCtr = 0;\n}\n\n/**\n * Get the Homeserver URL of this client\n * @return {string} Homeserver URL of this client\n */\nMatrixBaseApis.prototype.getHomeserverUrl = function () {\n return this.baseUrl;\n};\n\n/**\n * Get the Identity Server URL of this client\n * @param {boolean} stripProto whether or not to strip the protocol from the URL\n * @return {string} Identity Server URL of this client\n */\nMatrixBaseApis.prototype.getIdentityServerUrl = function () {\n var stripProto = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (stripProto && (this.idBaseUrl.startsWith(\"http://\") || this.idBaseUrl.startsWith(\"https://\"))) {\n return this.idBaseUrl.split(\"://\")[1];\n }\n return this.idBaseUrl;\n};\n\n/**\n * Get the access token associated with this account.\n * @return {?String} The access_token or null\n */\nMatrixBaseApis.prototype.getAccessToken = function () {\n return this._http.opts.accessToken || null;\n};\n\n/**\n * @return {boolean} true if there is a valid access_token for this client.\n */\nMatrixBaseApis.prototype.isLoggedIn = function () {\n return this._http.opts.accessToken !== undefined;\n};\n\n/**\n * Make up a new transaction id\n *\n * @return {string} a new, unique, transaction id\n */\nMatrixBaseApis.prototype.makeTxnId = function () {\n return \"m\" + new Date().getTime() + \".\" + this._txnCtr++;\n};\n\n// Registration/Login operations\n// =============================\n\n/**\n * Check whether a username is available prior to registration. An error response\n * indicates an invalid/unavailable username.\n * @param {string} username The username to check the availability of.\n * @return {module:client.Promise} Resolves: to `true`.\n */\nMatrixBaseApis.prototype.isUsernameAvailable = function (username) {\n return this._http.authedRequest(undefined, \"GET\", '/register/available', { username: username }).then(function (response) {\n return response.available;\n });\n};\n\n/**\n * @param {string} username\n * @param {string} password\n * @param {string} sessionId\n * @param {Object} auth\n * @param {Object} bindThreepids Set key 'email' to true to bind any email\n * threepid uses during registration in the ID server. Set 'msisdn' to\n * true to bind msisdn.\n * @param {string} guestAccessToken\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.register = function (username, password, sessionId, auth, bindThreepids, guestAccessToken, callback) {\n // backwards compat\n if (bindThreepids === true) {\n bindThreepids = { email: true };\n } else if (bindThreepids === null || bindThreepids === undefined) {\n bindThreepids = {};\n }\n\n if (auth === undefined || auth === null) {\n auth = {};\n }\n if (sessionId) {\n auth.session = sessionId;\n }\n\n var params = {\n auth: auth\n };\n if (username !== undefined && username !== null) {\n params.username = username;\n }\n if (password !== undefined && password !== null) {\n params.password = password;\n }\n if (bindThreepids.email) {\n params.bind_email = true;\n }\n if (bindThreepids.msisdn) {\n params.bind_msisdn = true;\n }\n if (guestAccessToken !== undefined && guestAccessToken !== null) {\n params.guest_access_token = guestAccessToken;\n }\n // Temporary parameter added to make the register endpoint advertise\n // msisdn flows. This exists because there are clients that break\n // when given stages they don't recognise. This parameter will cease\n // to be necessary once these old clients are gone.\n // Only send it if we send any params at all (the password param is\n // mandatory, so if we send any params, we'll send the password param)\n if (password !== undefined && password !== null) {\n params.x_show_msisdn = true;\n }\n\n return this.registerRequest(params, undefined, callback);\n};\n\n/**\n * Register a guest account.\n * @param {Object=} opts Registration options\n * @param {Object} opts.body JSON HTTP body to provide.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerGuest = function (opts, callback) {\n opts = opts || {};\n opts.body = opts.body || {};\n return this.registerRequest(opts.body, \"guest\", callback);\n};\n\n/**\n * @param {Object} data parameters for registration request\n * @param {string=} kind type of user to register. may be \"guest\"\n * @param {module:client.callback=} callback\n * @return {module:client.Promise} Resolves: to the /register response\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.registerRequest = function (data, kind, callback) {\n var params = {};\n if (kind) {\n params.kind = kind;\n }\n\n return this._http.request(callback, \"POST\", \"/register\", params, data);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginFlows = function (callback) {\n return this._http.request(callback, \"GET\", \"/login\");\n};\n\n/**\n * @param {string} loginType\n * @param {Object} data\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.login = function (loginType, data, callback) {\n var login_data = {\n type: loginType\n };\n\n // merge data into login_data\n utils.extend(login_data, data);\n\n return this._http.authedRequest(callback, \"POST\", \"/login\", undefined, login_data);\n};\n\n/**\n * @param {string} user\n * @param {string} password\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithPassword = function (user, password, callback) {\n return this.login(\"m.login.password\", {\n user: user,\n password: password\n }, callback);\n};\n\n/**\n * @param {string} relayState URL Callback after SAML2 Authentication\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithSAML2 = function (relayState, callback) {\n return this.login(\"m.login.saml2\", {\n relay_state: relayState\n }, callback);\n};\n\n/**\n * @param {string} redirectUrl The URL to redirect to after the HS\n * authenticates with CAS.\n * @return {string} The HS URL to hit to begin the CAS login process.\n */\nMatrixBaseApis.prototype.getCasLoginUrl = function (redirectUrl) {\n return this._http.getUrl(\"/login/cas/redirect\", {\n \"redirectUrl\": redirectUrl\n }, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * @param {string} token Login token previously received from homeserver\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.loginWithToken = function (token, callback) {\n return this.login(\"m.login.token\", {\n token: token\n }, callback);\n};\n\n/**\n * Logs out the current session.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.logout = function (callback) {\n return this._http.authedRequest(callback, \"POST\", '/logout');\n};\n\n/**\n * Deactivates the logged-in account.\n * Obviously, further calls that require authorisation should fail after this\n * method is called. The state of the MatrixClient object is not affected:\n * it is up to the caller to either reset or destroy the MatrixClient after\n * this method succeeds.\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @param {boolean} erase Optional. If set, send as `erase` attribute in the\n * JSON request body, indicating whether the account should be erased. Defaults\n * to false.\n * @return {module:client.Promise} Resolves: On success, the empty object\n */\nMatrixBaseApis.prototype.deactivateAccount = function (auth, erase) {\n if (typeof erase === 'function') {\n throw new Error('deactivateAccount no longer accepts a callback parameter');\n }\n\n var body = {};\n if (auth) {\n body.auth = auth;\n }\n if (erase !== undefined) {\n body.erase = erase;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", '/account/deactivate', undefined, body, httpApi.PREFIX_R0);\n};\n\n/**\n * Get the fallback URL to use for unknown interactive-auth stages.\n *\n * @param {string} loginType the type of stage being attempted\n * @param {string} authSessionId the auth session ID provided by the homeserver\n *\n * @return {string} HS URL to hit to for the fallback interface\n */\nMatrixBaseApis.prototype.getFallbackAuthUrl = function (loginType, authSessionId) {\n var path = utils.encodeUri(\"/auth/$loginType/fallback/web\", {\n $loginType: loginType\n });\n\n return this._http.getUrl(path, {\n session: authSessionId\n }, httpApi.PREFIX_R0);\n};\n\n// Room operations\n// ===============\n\n/**\n * Create a new room.\n * @param {Object} options a list of options to pass to the /createRoom API.\n * @param {string} options.room_alias_name The alias localpart to assign to\n * this room.\n * @param {string} options.visibility Either 'public' or 'private'.\n * @param {string[]} options.invite A list of user IDs to invite to this room.\n * @param {string} options.name The name to give this room.\n * @param {string} options.topic The topic to give this room.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: <code>{room_id: {string},\n * room_alias: {string(opt)}}</code>\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createRoom = function (options, callback) {\n // valid options include: room_alias_name, visibility, invite\n return this._http.authedRequest(callback, \"POST\", \"/createRoom\", undefined, options);\n};\n\n/**\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomState = function (roomId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/state\", { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Get an event in a room by its event id.\n * @param {string} roomId\n * @param {string} eventId\n * @param {module:client.callback} callback Optional.\n *\n * @return {Promise} Resolves to an object containing the event.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.fetchRoomEvent = function (roomId, eventId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/event/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} includeMembership the membership type to include in the response\n * @param {string} excludeMembership the membership type to exclude from the response\n * @param {string} atEventId the id of the event for which moment in the timeline the members should be returned for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: dictionary of userid to profile information\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.members = function (roomId, includeMembership, excludeMembership, atEventId, callback) {\n var queryParams = {};\n if (includeMembership) {\n queryParams.membership = includeMembership;\n }\n if (excludeMembership) {\n queryParams.not_membership = excludeMembership;\n }\n if (atEventId) {\n queryParams.at = atEventId;\n }\n\n var queryString = utils.encodeParams(queryParams);\n\n var path = utils.encodeUri(\"/rooms/$roomId/members?\" + queryString, { $roomId: roomId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Upgrades a room to a new protocol version\n * @param {string} roomId\n * @param {string} newVersion The target version to upgrade to\n * @return {module:client.Promise} Resolves: Object with key 'replacement_room'\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.upgradeRoom = function (roomId, newVersion) {\n var path = utils.encodeUri(\"/rooms/$roomId/upgrade\", { $roomId: roomId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { new_version: newVersion });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group summary object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupSummary = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group profile object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupProfile = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {Object} profile The group profile object\n * @param {string=} profile.name Name of the group\n * @param {string=} profile.avatar_url MXC avatar URL\n * @param {string=} profile.short_description A short description of the room\n * @param {string=} profile.long_description A longer HTML description of the room\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupProfile = function (groupId, profile) {\n var path = utils.encodeUri(\"/groups/$groupId/profile\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"POST\", path, undefined, profile);\n};\n\n/**\n * @param {string} groupId\n * @param {object} policy The join policy for the group. Must include at\n * least a 'type' field which is 'open' if anyone can join the group\n * the group without prior approval, or 'invite' if an invite is\n * required to join.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupJoinPolicy = function (groupId, policy) {\n var path = utils.encodeUri(\"/groups/$groupId/settings/m.join_policy\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n 'm.join_policy': policy\n });\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group users list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupInvitedUsers = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/invited_users\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Group rooms list object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getGroupRooms = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/rooms\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.inviteUserToGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/invite/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroup = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/users/remove/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @param {string} roleId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addUserToGroupSummary = function (groupId, userId, roleId) {\n var path = utils.encodeUri(roleId ? \"/groups/$groupId/summary/$roleId/users/$userId\" : \"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $roleId: roleId, $userId: userId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} userId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeUserFromGroupSummary = function (groupId, userId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/users/$userId\", { $groupId: groupId, $userId: userId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {string} categoryId Optional.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroupSummary = function (groupId, roomId, categoryId) {\n var path = utils.encodeUri(categoryId ? \"/groups/$groupId/summary/$categoryId/rooms/$roomId\" : \"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $categoryId: categoryId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroupSummary = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/summary/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addRoomToGroup = function (groupId, roomId, isPublic) {\n if (isPublic === undefined) {\n isPublic = true;\n }\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { \"m.visibility\": { type: isPublic ? \"public\" : \"private\" } });\n};\n\n/**\n * Configure the visibility of a room-group association.\n * @param {string} groupId\n * @param {string} roomId\n * @param {bool} isPublic Whether the room-group association is visible to non-members\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.updateGroupRoomVisibility = function (groupId, roomId, isPublic) {\n // NB: The /config API is generic but there's not much point in exposing this yet as synapse\n // is the only server to implement this. In future we should consider an API that allows\n // arbitrary configuration, i.e. \"config/$configKey\".\n\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId/config/m.visibility\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, { type: isPublic ? \"public\" : \"private\" });\n};\n\n/**\n * @param {string} groupId\n * @param {string} roomId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.removeRoomFromGroup = function (groupId, roomId) {\n var path = utils.encodeUri(\"/groups/$groupId/admin/rooms/$roomId\", { $groupId: groupId, $roomId: roomId });\n return this._http.authedRequest(undefined, \"DELETE\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @param {Object} opts Additional options to send alongside the acceptance.\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.acceptGroupInvite = function (groupId) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n var path = utils.encodeUri(\"/groups/$groupId/self/accept_invite\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, opts || {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.joinGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/join\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @param {string} groupId\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.leaveGroup = function (groupId) {\n var path = utils.encodeUri(\"/groups/$groupId/self/leave\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {});\n};\n\n/**\n * @return {module:client.Promise} Resolves: The groups to which the user is joined\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getJoinedGroups = function () {\n var path = utils.encodeUri(\"/joined_groups\");\n return this._http.authedRequest(undefined, \"GET\", path);\n};\n\n/**\n * @param {Object} content Request content\n * @param {string} content.localpart The local part of the desired group ID\n * @param {Object} content.profile Group profile object\n * @return {module:client.Promise} Resolves: Object with key group_id: id of the created group\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createGroup = function (content) {\n var path = utils.encodeUri(\"/create_group\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n/**\n * @param {string[]} userIds List of user IDs\n * @return {module:client.Promise} Resolves: Object as exmaple below\n *\n * {\n * \"users\": {\n * \"@bob:example.com\": {\n * \"+example:example.com\"\n * }\n * }\n * }\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPublicisedGroups = function (userIds) {\n var path = utils.encodeUri(\"/publicised_groups\");\n return this._http.authedRequest(undefined, \"POST\", path, undefined, { user_ids: userIds });\n};\n\n/**\n * @param {string} groupId\n * @param {bool} isPublic Whether the user's membership of this group is made public\n * @return {module:client.Promise} Resolves: Empty object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setGroupPublicity = function (groupId, isPublic) {\n var path = utils.encodeUri(\"/groups/$groupId/self/update_publicity\", { $groupId: groupId });\n return this._http.authedRequest(undefined, \"PUT\", path, undefined, {\n publicise: isPublic\n });\n};\n\n/**\n * Retrieve a state event.\n * @param {string} roomId\n * @param {string} eventType\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getStateEvent = function (roomId, eventType, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventType\n * @param {Object} content\n * @param {string} stateKey\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.sendStateEvent = function (roomId, eventType, content, stateKey, callback) {\n var pathParams = {\n $roomId: roomId,\n $eventType: eventType,\n $stateKey: stateKey\n };\n var path = utils.encodeUri(\"/rooms/$roomId/state/$eventType\", pathParams);\n if (stateKey !== undefined) {\n path = utils.encodeUri(path + \"/$stateKey\", pathParams);\n }\n return this._http.authedRequest(callback, \"PUT\", path, undefined, content);\n};\n\n/**\n * @param {string} roomId\n * @param {string} eventId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.redactEvent = function (roomId, eventId, callback) {\n var path = utils.encodeUri(\"/rooms/$roomId/redact/$eventId\", {\n $roomId: roomId,\n $eventId: eventId\n });\n return this._http.authedRequest(callback, \"POST\", path, undefined, {});\n};\n\n/**\n * @param {string} roomId\n * @param {Number} limit\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.roomInitialSync = function (roomId, limit, callback) {\n if (utils.isFunction(limit)) {\n callback = limit;limit = undefined;\n }\n var path = utils.encodeUri(\"/rooms/$roomId/initialSync\", { $roomId: roomId });\n if (!limit) {\n limit = 30;\n }\n return this._http.authedRequest(callback, \"GET\", path, { limit: limit });\n};\n\n/**\n * Set a marker to indicate the point in a room before which the user has read every\n * event. This can be retrieved from room account data (the event type is `m.fully_read`)\n * and displayed as a horizontal line in the timeline that is visually distinct to the\n * position of the user's own read receipt.\n * @param {string} roomId ID of the room that has been read\n * @param {string} rmEventId ID of the event that has been read\n * @param {string} rrEventId ID of the event tracked by the read receipt. This is here\n * for convenience because the RR and the RM are commonly updated at the same time as\n * each other. Optional.\n * @return {module:client.Promise} Resolves: the empty object, {}.\n */\nMatrixBaseApis.prototype.setRoomReadMarkersHttpRequest = function (roomId, rmEventId, rrEventId) {\n var path = utils.encodeUri(\"/rooms/$roomId/read_markers\", {\n $roomId: roomId\n });\n\n var content = {\n \"m.fully_read\": rmEventId,\n \"m.read\": rrEventId\n };\n\n return this._http.authedRequest(undefined, \"POST\", path, undefined, content);\n};\n\n// Room Directory operations\n// =========================\n\n/**\n * @param {Object} options Options for this request\n * @param {string} options.server The remote server to query for the room list.\n * Optional. If unspecified, get the local home\n * server's public room list.\n * @param {number} options.limit Maximum number of entries to return\n * @param {string} options.since Token to paginate from\n * @param {object} options.filter Filter parameters\n * @param {string} options.filter.generic_search_term String to search for\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.publicRooms = function (options, callback) {\n if (typeof options == 'function') {\n callback = options;\n options = {};\n }\n if (options === undefined) {\n options = {};\n }\n\n var query_params = {};\n if (options.server) {\n query_params.server = options.server;\n delete options.server;\n }\n\n if ((0, _keys2.default)(options).length === 0 && (0, _keys2.default)(query_params).length === 0) {\n return this._http.authedRequest(callback, \"GET\", \"/publicRooms\");\n } else {\n return this._http.authedRequest(callback, \"POST\", \"/publicRooms\", query_params, options);\n }\n};\n\n/**\n * Create an alias to room ID mapping.\n * @param {string} alias The room alias to create.\n * @param {string} roomId The room ID to link the alias to.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.createAlias = function (alias, roomId, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n var data = {\n room_id: roomId\n };\n return this._http.authedRequest(callback, \"PUT\", path, undefined, data);\n};\n\n/**\n * Delete an alias to room ID mapping. This alias must be on your local server\n * and you must have sufficient access to do this operation.\n * @param {string} alias The room alias to delete.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteAlias = function (alias, callback) {\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"DELETE\", path, undefined, undefined);\n};\n\n/**\n * Get room info for the given alias.\n * @param {string} alias The room alias to resolve.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Object with room_id and servers.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomIdForAlias = function (alias, callback) {\n // TODO: deprecate this or resolveRoomAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", {\n $alias: alias\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * @param {string} roomAlias\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.resolveRoomAlias = function (roomAlias, callback) {\n // TODO: deprecate this or getRoomIdForAlias\n var path = utils.encodeUri(\"/directory/room/$alias\", { $alias: roomAlias });\n return this._http.request(callback, \"GET\", path);\n};\n\n/**\n * Get the visibility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getRoomDirectoryVisibility = function (roomId, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n/**\n * Set the visbility of a room in the current HS's room directory\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibility = function (roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/room/$roomId\", {\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n/**\n * Set the visbility of a room bridged to a 3rd party network in\n * the current HS's room directory.\n * @param {string} networkId the network ID of the 3rd party\n * instance under which this room is published under.\n * @param {string} roomId\n * @param {string} visibility \"public\" to make the room visible\n * in the public directory, or \"private\" to make\n * it invisible.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setRoomDirectoryVisibilityAppService = function (networkId, roomId, visibility, callback) {\n var path = utils.encodeUri(\"/directory/list/appservice/$networkId/$roomId\", {\n $networkId: networkId,\n $roomId: roomId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"visibility\": visibility });\n};\n\n// User Directory Operations\n// =========================\n\n/**\n * Query the user directory with a term matching user IDs, display names and domains.\n * @param {object} opts options\n * @param {string} opts.term the term with which to search.\n * @param {number} opts.limit the maximum number of results to return. The server will\n * apply a limit if unspecified.\n * @return {module:client.Promise} Resolves: an array of results.\n */\nMatrixBaseApis.prototype.searchUserDirectory = function (opts) {\n var body = {\n search_term: opts.term\n };\n\n if (opts.limit !== undefined) {\n body.limit = opts.limit;\n }\n\n return this._http.authedRequest(undefined, \"POST\", \"/user_directory/search\", undefined, body);\n};\n\n// Media operations\n// ================\n\n/**\n * Upload a file to the media repository on the home server.\n *\n * @param {object} file The object to upload. On a browser, something that\n * can be sent to XMLHttpRequest.send (typically a File). Under node.js,\n * a a Buffer, String or ReadStream.\n *\n * @param {object} opts options object\n *\n * @param {string=} opts.name Name to give the file on the server. Defaults\n * to <tt>file.name</tt>.\n *\n * @param {boolean=} opts.includeFilename if false will not send the filename,\n * e.g for encrypted file uploads where filename leaks are undesirable.\n * Defaults to true.\n *\n * @param {string=} opts.type Content-type for the upload. Defaults to\n * <tt>file.type</tt>, or <tt>applicaton/octet-stream</tt>.\n *\n * @param {boolean=} opts.rawResponse Return the raw body, rather than\n * parsing the JSON. Defaults to false (except on node.js, where it\n * defaults to true for backwards compatibility).\n *\n * @param {boolean=} opts.onlyContentUri Just return the content URI,\n * rather than the whole body. Defaults to false (except on browsers,\n * where it defaults to true for backwards compatibility). Ignored if\n * opts.rawResponse is true.\n *\n * @param {Function=} opts.callback Deprecated. Optional. The callback to\n * invoke on success/failure. See the promise return values for more\n * information.\n *\n * @param {Function=} opts.progressHandler Optional. Called when a chunk of\n * data has been uploaded, with an object containing the fields `loaded`\n * (number of bytes transferred) and `total` (total size, if known).\n *\n * @return {module:client.Promise} Resolves to response object, as\n * determined by this.opts.onlyData, opts.rawResponse, and\n * opts.onlyContentUri. Rejects with an error (usually a MatrixError).\n */\nMatrixBaseApis.prototype.uploadContent = function (file, opts) {\n return this._http.uploadContent(file, opts);\n};\n\n/**\n * Cancel a file upload in progress\n * @param {module:client.Promise} promise The promise returned from uploadContent\n * @return {boolean} true if canceled, otherwise false\n */\nMatrixBaseApis.prototype.cancelUpload = function (promise) {\n return this._http.cancelUpload(promise);\n};\n\n/**\n * Get a list of all file uploads in progress\n * @return {array} Array of objects representing current uploads.\n * Currently in progress is element 0. Keys:\n * - promise: The promise associated with the upload\n * - loaded: Number of bytes uploaded\n * - total: Total number of bytes to upload\n */\nMatrixBaseApis.prototype.getCurrentUploads = function () {\n return this._http.getCurrentUploads();\n};\n\n// Profile operations\n// ==================\n\n/**\n * @param {string} userId\n * @param {string} info The kind of info to retrieve (e.g. 'displayname',\n * 'avatar_url').\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getProfileInfo = function (userId, info, callback) {\n if (utils.isFunction(info)) {\n callback = info;info = undefined;\n }\n\n var path = info ? utils.encodeUri(\"/profile/$userId/$info\", { $userId: userId, $info: info }) : utils.encodeUri(\"/profile/$userId\", { $userId: userId });\n return this._http.authedRequest(callback, \"GET\", path);\n};\n\n// Account operations\n// ==================\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getThreePids = function (callback) {\n var path = \"/account/3pid\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * @param {Object} creds\n * @param {boolean} bind\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addThreePid = function (creds, bind, callback) {\n var path = \"/account/3pid\";\n var data = {\n 'threePidCreds': creds,\n 'bind': bind\n };\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n/**\n * @param {string} medium The threepid medium (eg. 'email')\n * @param {string} address The threepid address (eg. 'bob@example.com')\n * this must be as returned by getThreePids.\n * @return {module:client.Promise} Resolves: The server response on success\n * (generally the empty JSON object)\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteThreePid = function (medium, address) {\n var path = \"/account/3pid/delete\";\n var data = {\n 'medium': medium,\n 'address': address\n };\n return this._http.authedRequestWithPrefix(undefined, \"POST\", path, null, data, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Make a request to change your password.\n * @param {Object} authDict\n * @param {string} newPassword The new desired password.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPassword = function (authDict, newPassword, callback) {\n var path = \"/account/password\";\n var data = {\n 'auth': authDict,\n 'new_password': newPassword\n };\n\n return this._http.authedRequest(callback, \"POST\", path, null, data);\n};\n\n// Device operations\n// =================\n\n/**\n * Gets all devices recorded for the logged-in user\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getDevices = function () {\n var path = \"/devices\";\n return this._http.authedRequestWithPrefix(undefined, \"GET\", path, undefined, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Update the given device\n *\n * @param {string} device_id device to update\n * @param {Object} body body of request\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setDeviceDetails = function (device_id, body) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"PUT\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Delete the given device\n *\n * @param {string} device_id device to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteDevice = function (device_id, auth) {\n var path = utils.encodeUri(\"/devices/$device_id\", {\n $device_id: device_id\n });\n\n var body = {};\n\n if (auth) {\n body.auth = auth;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"DELETE\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Delete multiple device\n *\n * @param {string[]} devices IDs of the devices to delete\n * @param {object} auth Optional. Auth data to supply for User-Interactive auth.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deleteMultipleDevices = function (devices, auth) {\n var body = { devices: devices };\n\n if (auth) {\n body.auth = auth;\n }\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/delete_devices\", undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n// Push operations\n// ===============\n\n/**\n * Gets all pushers registered for the logged-in user\n *\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Array of objects representing pushers\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushers = function (callback) {\n var path = \"/pushers\";\n return this._http.authedRequest(callback, \"GET\", path, undefined, undefined);\n};\n\n/**\n * Adds a new pusher or updates an existing pusher\n *\n * @param {Object} pusher Object representing a pusher\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: Empty json object on success\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPusher = function (pusher, callback) {\n var path = \"/pushers/set\";\n return this._http.authedRequest(callback, \"POST\", path, null, pusher);\n};\n\n/**\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.getPushRules = function (callback) {\n return this._http.authedRequest(callback, \"GET\", \"/pushrules/\");\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {Object} body\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.addPushRule = function (scope, kind, ruleId, body, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, body);\n};\n\n/**\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.deletePushRule = function (scope, kind, ruleId, callback) {\n // NB. Scope not uri encoded because devices need the '/'\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"DELETE\", path);\n};\n\n/**\n * Enable or disable a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {boolean} enabled\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleEnabled = function (scope, kind, ruleId, enabled, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/enabled\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"enabled\": enabled });\n};\n\n/**\n * Set the actions for a push notification rule.\n * @param {string} scope\n * @param {string} kind\n * @param {string} ruleId\n * @param {array} actions\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: result object\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.setPushRuleActions = function (scope, kind, ruleId, actions, callback) {\n var path = utils.encodeUri(\"/pushrules/\" + scope + \"/$kind/$ruleId/actions\", {\n $kind: kind,\n $ruleId: ruleId\n });\n return this._http.authedRequest(callback, \"PUT\", path, undefined, { \"actions\": actions });\n};\n\n// Search\n// ======\n\n/**\n * Perform a server-side search.\n * @param {Object} opts\n * @param {string} opts.next_batch the batch token to pass in the query string\n * @param {Object} opts.body the JSON object to pass to the request body.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.search = function (opts, callback) {\n var queryparams = {};\n if (opts.next_batch) {\n queryparams.next_batch = opts.next_batch;\n }\n return this._http.authedRequest(callback, \"POST\", \"/search\", queryparams, opts.body);\n};\n\n// Crypto\n// ======\n\n/**\n * Upload keys\n *\n * @param {Object} content body of upload request\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.device_id explicit device_id to use for upload\n * (default is to use the same as that used during auth).\n *\n * @param {module:client.callback=} callback\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.uploadKeysRequest = function (content, opts, callback) {\n opts = opts || {};\n var deviceId = opts.device_id;\n var path = void 0;\n if (deviceId) {\n path = utils.encodeUri(\"/keys/upload/$deviceId\", {\n $deviceId: deviceId\n });\n } else {\n path = \"/keys/upload\";\n }\n return this._http.authedRequestWithPrefix(callback, \"POST\", path, undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Download device keys\n *\n * @param {string[]} userIds list of users to get keys for\n *\n * @param {Object=} opts\n *\n * @param {string=} opts.token sync token to pass in the query request, to help\n * the HS give the most recent results\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.downloadKeysForUsers = function (userIds, opts) {\n if (utils.isFunction(opts)) {\n // opts used to be 'callback'.\n throw new Error('downloadKeysForUsers no longer accepts a callback parameter');\n }\n opts = opts || {};\n\n var content = {\n device_keys: {}\n };\n if ('token' in opts) {\n content.token = opts.token;\n }\n userIds.forEach(function (u) {\n content.device_keys[u] = {};\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/keys/query\", undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Claim one-time keys\n *\n * @param {string[]} devices a list of [userId, deviceId] pairs\n *\n * @param {string} [key_algorithm = signed_curve25519] desired key type\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.claimOneTimeKeys = function (devices, key_algorithm) {\n var queries = {};\n\n if (key_algorithm === undefined) {\n key_algorithm = \"signed_curve25519\";\n }\n\n for (var i = 0; i < devices.length; ++i) {\n var userId = devices[i][0];\n var deviceId = devices[i][1];\n var query = queries[userId] || {};\n queries[userId] = query;\n query[deviceId] = key_algorithm;\n }\n var content = { one_time_keys: queries };\n return this._http.authedRequestWithPrefix(undefined, \"POST\", \"/keys/claim\", undefined, content, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * Ask the server for a list of users who have changed their device lists\n * between a pair of sync tokens\n *\n * @param {string} oldToken\n * @param {string} newToken\n *\n * @return {module:client.Promise} Resolves: result object. Rejects: with\n * an error response ({@link module:http-api.MatrixError}).\n */\nMatrixBaseApis.prototype.getKeyChanges = function (oldToken, newToken) {\n var qps = {\n from: oldToken,\n to: newToken\n };\n\n return this._http.authedRequestWithPrefix(undefined, \"GET\", \"/keys/changes\", qps, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n// Identity Server Operations\n// ==========================\n\n/**\n * Requests an email verification token directly from an Identity Server.\n *\n * Note that the Home Server offers APIs to proxy this API for specific\n * situations, allowing for better feedback to the user.\n *\n * @param {string} email The email address to request a token for\n * @param {string} clientSecret A secret binary string generated by the client.\n * It is recommended this be around 16 ASCII characters.\n * @param {number} sendAttempt If an identity server sees a duplicate request\n * with the same sendAttempt, it will not send another email.\n * To request another email to be sent, use a larger value for\n * the sendAttempt param as was used in the previous request.\n * @param {string} nextLink Optional If specified, the client will be redirected\n * to this link after validation.\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: TODO\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if No ID server is set\n */\nMatrixBaseApis.prototype.requestEmailToken = function (email, clientSecret, sendAttempt, nextLink, callback) {\n var params = {\n client_secret: clientSecret,\n email: email,\n send_attempt: sendAttempt,\n next_link: nextLink\n };\n return this._http.idServerRequest(callback, \"POST\", \"/validate/email/requestToken\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n/**\n * Submits an MSISDN token to the identity server\n *\n * This is used when submitting the code sent by SMS to a phone number.\n * The ID server has an equivalent API for email but the js-sdk does\n * not expose this, since email is normally validated by the user clicking\n * a link rather than entering a code.\n *\n * @param {string} sid The sid given in the response to requestToken\n * @param {string} clientSecret A secret binary string generated by the client.\n * This must be the same value submitted in the requestToken call.\n * @param {string} token The token, as enetered by the user.\n *\n * @return {module:client.Promise} Resolves: Object, currently with no parameters.\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n * @throws Error if No ID server is set\n */\nMatrixBaseApis.prototype.submitMsisdnToken = function (sid, clientSecret, token) {\n var params = {\n sid: sid,\n client_secret: clientSecret,\n token: token\n };\n return this._http.idServerRequest(undefined, \"POST\", \"/validate/msisdn/submitToken\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n/**\n * Looks up the public Matrix ID mapping for a given 3rd party\n * identifier from the Identity Server\n * @param {string} medium The medium of the threepid, eg. 'email'\n * @param {string} address The textual address of the threepid\n * @param {module:client.callback} callback Optional.\n * @return {module:client.Promise} Resolves: A threepid mapping\n * object or the empty object if no mapping\n * exists\n * @return {module:http-api.MatrixError} Rejects: with an error response.\n */\nMatrixBaseApis.prototype.lookupThreePid = function (medium, address, callback) {\n var params = {\n medium: medium,\n address: address\n };\n return this._http.idServerRequest(callback, \"GET\", \"/lookup\", params, httpApi.PREFIX_IDENTITY_V1);\n};\n\n// Direct-to-device messaging\n// ==========================\n\n/**\n * Send an event to a specific list of devices\n *\n * @param {string} eventType type of event to send\n * @param {Object.<string, Object<string, Object>>} contentMap\n * content to send. Map from user_id to device_id to content object.\n * @param {string=} txnId transaction id. One will be made up if not\n * supplied.\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.sendToDevice = function (eventType, contentMap, txnId) {\n var path = utils.encodeUri(\"/sendToDevice/$eventType/$txnId\", {\n $eventType: eventType,\n $txnId: txnId ? txnId : this.makeTxnId()\n });\n\n var body = {\n messages: contentMap\n };\n\n return this._http.authedRequestWithPrefix(undefined, \"PUT\", path, undefined, body, httpApi.PREFIX_UNSTABLE);\n};\n\n// Third party Lookup API\n// ======================\n\n/**\n * Get the third party protocols that can be reached using\n * this HS\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyProtocols = function () {\n return this._http.authedRequestWithPrefix(undefined, \"GET\", \"/thirdparty/protocols\", undefined, undefined, httpApi.PREFIX_UNSTABLE).then(function (response) {\n // sanity check\n if (!response || (typeof response === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(response)) !== 'object') {\n throw new Error(\"/thirdparty/protocols did not return an object: \" + response);\n }\n return response;\n });\n};\n\n/**\n * Get information on how a specific place on a third party protocol\n * may be reached.\n * @param {string} protocol The protocol given in getThirdpartyProtocols()\n * @param {object} params Protocol-specific parameters, as given in th\n * response to getThirdpartyProtocols()\n * @return {module:client.Promise} Resolves to the result object\n */\nMatrixBaseApis.prototype.getThirdpartyLocation = function (protocol, params) {\n var path = utils.encodeUri(\"/thirdparty/location/$protocol\", {\n $protocol: protocol\n });\n\n return this._http.authedRequestWithPrefix(undefined, \"GET\", path, params, undefined, httpApi.PREFIX_UNSTABLE);\n};\n\n/**\n * MatrixBaseApis object\n */\nmodule.exports = MatrixBaseApis;\n//# sourceMappingURL=base-apis.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto\n */\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\n// returns a promise which resolves to the response\nvar _uploadOneTimeKeys = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(crypto) {\n var oneTimeKeys, oneTimeJson, promises, keyId, k, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(crypto._olmDevice.getOneTimeKeys());\n\n case 2:\n oneTimeKeys = _context2.sent;\n oneTimeJson = {};\n promises = [];\n\n\n for (keyId in oneTimeKeys.curve25519) {\n if (oneTimeKeys.curve25519.hasOwnProperty(keyId)) {\n k = {\n key: oneTimeKeys.curve25519[keyId]\n };\n\n oneTimeJson[\"signed_curve25519:\" + keyId] = k;\n promises.push(crypto._signObject(k));\n }\n }\n\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises));\n\n case 8:\n _context2.next = 10;\n return (0, _bluebird.resolve)(crypto._baseApis.uploadKeysRequest({\n one_time_keys: oneTimeJson\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: crypto._deviceId\n }));\n\n case 10:\n res = _context2.sent;\n _context2.next = 13;\n return (0, _bluebird.resolve)(crypto._olmDevice.markKeysAsPublished());\n\n case 13:\n return _context2.abrupt('return', res);\n\n case 14:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _uploadOneTimeKeys(_x) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Download the keys for a list of users and stores the keys in the session\n * store.\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n\nvar _events = require('events');\n\nvar _OutgoingRoomKeyRequestManager = require('./OutgoingRoomKeyRequestManager');\n\nvar _OutgoingRoomKeyRequestManager2 = _interopRequireDefault(_OutgoingRoomKeyRequestManager);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar anotherjson = require('another-json');\n\n\nvar utils = require(\"../utils\");\nvar OlmDevice = require(\"./OlmDevice\");\nvar olmlib = require(\"./olmlib\");\nvar algorithms = require(\"./algorithms\");\nvar DeviceInfo = require(\"./deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\nvar DeviceList = require('./DeviceList').default;\n\n/**\n * Cryptography bits\n *\n * This module is internal to the js-sdk; the public API is via MatrixClient.\n *\n * @constructor\n * @alias module:crypto\n *\n * @internal\n *\n * @param {module:base-apis~MatrixBaseApis} baseApis base matrix api interface\n *\n * @param {module:store/session/webstorage~WebStorageSessionStore} sessionStore\n * Store to be used for end-to-end crypto session data\n *\n * @param {string} userId The user ID for the local user\n *\n * @param {string} deviceId The identifier for this device.\n *\n * @param {Object} clientStore the MatrixClient data store.\n *\n * @param {module:crypto/store/base~CryptoStore} cryptoStore\n * storage for the crypto layer.\n *\n * @param {RoomList} roomList An initialised RoomList object\n */\nfunction Crypto(baseApis, sessionStore, userId, deviceId, clientStore, cryptoStore, roomList) {\n this._baseApis = baseApis;\n this._sessionStore = sessionStore;\n this._userId = userId;\n this._deviceId = deviceId;\n this._clientStore = clientStore;\n this._cryptoStore = cryptoStore;\n this._roomList = roomList;\n\n this._olmDevice = new OlmDevice(sessionStore, cryptoStore);\n this._deviceList = new DeviceList(baseApis, cryptoStore, sessionStore, this._olmDevice);\n\n // the last time we did a check for the number of one-time-keys on the\n // server.\n this._lastOneTimeKeyCheck = null;\n this._oneTimeKeyCheckInProgress = false;\n\n // EncryptionAlgorithm instance for each room\n this._roomEncryptors = {};\n\n // map from algorithm to DecryptionAlgorithm instance, for each room\n this._roomDecryptors = {};\n\n this._supportedAlgorithms = utils.keys(algorithms.DECRYPTION_CLASSES);\n\n this._deviceKeys = {};\n\n this._globalBlacklistUnverifiedDevices = false;\n\n this._outgoingRoomKeyRequestManager = new _OutgoingRoomKeyRequestManager2.default(baseApis, this._deviceId, this._cryptoStore);\n\n // list of IncomingRoomKeyRequests/IncomingRoomKeyRequestCancellations\n // we received in the current sync.\n this._receivedRoomKeyRequests = [];\n this._receivedRoomKeyRequestCancellations = [];\n // true if we are currently processing received room key requests\n this._processingRoomKeyRequests = false;\n // controls whether device tracking is delayed\n // until calling encryptEvent or trackRoomDevices,\n // or done immediately upon enabling room encryption.\n this._lazyLoadMembers = false;\n // in case _lazyLoadMembers is true,\n // track if an initial tracking of all the room members\n // has happened for a given room. This is delayed\n // to avoid loading room members as long as possible.\n this._roomDeviceTrackingState = {};\n}\nutils.inherits(Crypto, _events.EventEmitter);\n\n/**\n * Initialise the crypto module so that it is ready for use\n *\n * Returns a promise which resolves once the crypto module is ready for use.\n */\nCrypto.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var sessionStoreHasAccount, cryptoStoreHasAccount, myDevices, deviceInfo;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n sessionStoreHasAccount = Boolean(this._sessionStore.getEndToEndAccount());\n cryptoStoreHasAccount = void 0;\n _context.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this._cryptoStore.getAccount(txn, function (pickledAccount) {\n cryptoStoreHasAccount = Boolean(pickledAccount);\n });\n }));\n\n case 4:\n if (sessionStoreHasAccount && !cryptoStoreHasAccount) {\n // we're about to migrate to the crypto store\n this.emit(\"crypto.warning\", 'CRYPTO_WARNING_ACCOUNT_MIGRATED');\n } else if (sessionStoreHasAccount && cryptoStoreHasAccount) {\n // There's an account in both stores: an old version of\n // the code has been run against this store.\n this.emit(\"crypto.warning\", 'CRYPTO_WARNING_OLD_VERSION_DETECTED');\n }\n\n _context.next = 7;\n return (0, _bluebird.resolve)(this._olmDevice.init());\n\n case 7:\n _context.next = 9;\n return (0, _bluebird.resolve)(this._deviceList.load());\n\n case 9:\n\n // build our device keys: these will later be uploaded\n this._deviceKeys[\"ed25519:\" + this._deviceId] = this._olmDevice.deviceEd25519Key;\n this._deviceKeys[\"curve25519:\" + this._deviceId] = this._olmDevice.deviceCurve25519Key;\n\n myDevices = this._deviceList.getRawStoredDevicesForUser(this._userId);\n\n\n if (!myDevices) {\n myDevices = {};\n }\n\n if (!myDevices[this._deviceId]) {\n // add our own deviceinfo to the sessionstore\n deviceInfo = {\n keys: this._deviceKeys,\n algorithms: this._supportedAlgorithms,\n verified: DeviceVerification.VERIFIED,\n known: true\n };\n\n\n myDevices[this._deviceId] = deviceInfo;\n this._deviceList.storeDevicesForUser(this._userId, myDevices);\n this._deviceList.saveIfDirty();\n }\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n}));\n\n/**\n */\nCrypto.prototype.enableLazyLoading = function () {\n this._lazyLoadMembers = true;\n};\n\n/**\n * Tell the crypto module to register for MatrixClient events which it needs to\n * listen for\n *\n * @param {external:EventEmitter} eventEmitter event source where we can register\n * for event notifications\n */\nCrypto.prototype.registerEventHandlers = function (eventEmitter) {\n var crypto = this;\n\n eventEmitter.on(\"RoomMember.membership\", function (event, member, oldMembership) {\n try {\n crypto._onRoomMembership(event, member, oldMembership);\n } catch (e) {\n console.error(\"Error handling membership change:\", e);\n }\n });\n\n eventEmitter.on(\"toDeviceEvent\", function (event) {\n crypto._onToDeviceEvent(event);\n });\n};\n\n/** Start background processes related to crypto */\nCrypto.prototype.start = function () {\n this._outgoingRoomKeyRequestManager.start();\n};\n\n/** Stop background processes related to crypto */\nCrypto.prototype.stop = function () {\n this._outgoingRoomKeyRequestManager.stop();\n};\n\n/**\n * @return {string} The version of Olm.\n */\nCrypto.getOlmVersion = function () {\n return OlmDevice.getOlmVersion();\n};\n\n/**\n * Get the Ed25519 key for this device\n *\n * @return {string} base64-encoded ed25519 key.\n */\nCrypto.prototype.getDeviceEd25519Key = function () {\n return this._olmDevice.deviceEd25519Key;\n};\n\n/**\n * Set the global override for whether the client should ever send encrypted\n * messages to unverified devices. This provides the default for rooms which\n * do not specify a value.\n *\n * @param {boolean} value whether to blacklist all unverified devices by default\n */\nCrypto.prototype.setGlobalBlacklistUnverifiedDevices = function (value) {\n this._globalBlacklistUnverifiedDevices = value;\n};\n\n/**\n * @return {boolean} whether to blacklist all unverified devices by default\n */\nCrypto.prototype.getGlobalBlacklistUnverifiedDevices = function () {\n return this._globalBlacklistUnverifiedDevices;\n};\n\n/**\n * Upload the device keys to the homeserver.\n * @return {object} A promise that will resolve when the keys are uploaded.\n */\nCrypto.prototype.uploadDeviceKeys = function () {\n var crypto = this;\n var userId = crypto._userId;\n var deviceId = crypto._deviceId;\n\n var deviceKeys = {\n algorithms: crypto._supportedAlgorithms,\n device_id: deviceId,\n keys: crypto._deviceKeys,\n user_id: userId\n };\n\n return crypto._signObject(deviceKeys).then(function () {\n crypto._baseApis.uploadKeysRequest({\n device_keys: deviceKeys\n }, {\n // for now, we set the device id explicitly, as we may not be using the\n // same one as used in login.\n device_id: deviceId\n });\n });\n};\n\n/**\n * Stores the current one_time_key count which will be handled later (in a call of\n * onSyncCompleted). The count is e.g. coming from a /sync response.\n *\n * @param {Number} currentCount The current count of one_time_keys to be stored\n */\nCrypto.prototype.updateOneTimeKeyCount = function (currentCount) {\n if (isFinite(currentCount)) {\n this._oneTimeKeyCount = currentCount;\n } else {\n throw new TypeError(\"Parameter for updateOneTimeKeyCount has to be a number\");\n }\n};\n\n// check if it's time to upload one-time keys, and do so if so.\nfunction _maybeUploadOneTimeKeys(crypto) {\n // frequency with which to check & upload one-time keys\n var uploadPeriod = 1000 * 60; // one minute\n\n // max number of keys to upload at once\n // Creating keys can be an expensive operation so we limit the\n // number we generate in one go to avoid blocking the application\n // for too long.\n var maxKeysPerCycle = 5;\n\n if (crypto._oneTimeKeyCheckInProgress) {\n return;\n }\n\n var now = Date.now();\n if (crypto._lastOneTimeKeyCheck !== null && now - crypto._lastOneTimeKeyCheck < uploadPeriod) {\n // we've done a key upload recently.\n return;\n }\n\n crypto._lastOneTimeKeyCheck = now;\n\n // We need to keep a pool of one time public keys on the server so that\n // other devices can start conversations with us. But we can only store\n // a finite number of private keys in the olm Account object.\n // To complicate things further then can be a delay between a device\n // claiming a public one time key from the server and it sending us a\n // message. We need to keep the corresponding private key locally until\n // we receive the message.\n // But that message might never arrive leaving us stuck with duff\n // private keys clogging up our local storage.\n // So we need some kind of enginering compromise to balance all of\n // these factors.\n\n // Check how many keys we can store in the Account object.\n var maxOneTimeKeys = crypto._olmDevice.maxNumberOfOneTimeKeys();\n // Try to keep at most half that number on the server. This leaves the\n // rest of the slots free to hold keys that have been claimed from the\n // server but we haven't recevied a message for.\n // If we run out of slots when generating new keys then olm will\n // discard the oldest private keys first. This will eventually clean\n // out stale private keys that won't receive a message.\n var keyLimit = Math.floor(maxOneTimeKeys / 2);\n\n function uploadLoop(keyCount) {\n if (keyLimit <= keyCount) {\n // If we don't need to generate any more keys then we are done.\n return _bluebird2.default.resolve();\n }\n\n var keysThisLoop = Math.min(keyLimit - keyCount, maxKeysPerCycle);\n\n // Ask olm to generate new one time keys, then upload them to synapse.\n return crypto._olmDevice.generateOneTimeKeys(keysThisLoop).then(function () {\n return _uploadOneTimeKeys(crypto);\n }).then(function (res) {\n if (res.one_time_key_counts && res.one_time_key_counts.signed_curve25519) {\n // if the response contains a more up to date value use this\n // for the next loop\n return uploadLoop(res.one_time_key_counts.signed_curve25519);\n } else {\n throw new Error(\"response for uploading keys does not contain \" + \"one_time_key_counts.signed_curve25519\");\n }\n });\n }\n\n crypto._oneTimeKeyCheckInProgress = true;\n _bluebird2.default.resolve().then(function () {\n if (crypto._oneTimeKeyCount !== undefined) {\n // We already have the current one_time_key count from a /sync response.\n // Use this value instead of asking the server for the current key count.\n return _bluebird2.default.resolve(crypto._oneTimeKeyCount);\n }\n // ask the server how many keys we have\n return crypto._baseApis.uploadKeysRequest({}, {\n device_id: crypto._deviceId\n }).then(function (res) {\n return res.one_time_key_counts.signed_curve25519 || 0;\n });\n }).then(function (keyCount) {\n // Start the uploadLoop with the current keyCount. The function checks if\n // we need to upload new keys or not.\n // If there are too many keys on the server then we don't need to\n // create any more keys.\n return uploadLoop(keyCount);\n }).catch(function (e) {\n console.error(\"Error uploading one-time keys\", e.stack || e);\n }).finally(function () {\n // reset _oneTimeKeyCount to prevent start uploading based on old data.\n // it will be set again on the next /sync-response\n crypto._oneTimeKeyCount = undefined;\n crypto._oneTimeKeyCheckInProgress = false;\n }).done();\n}Crypto.prototype.downloadKeys = function (userIds, forceDownload) {\n return this._deviceList.downloadKeys(userIds, forceDownload);\n};\n\n/**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\nCrypto.prototype.getStoredDevicesForUser = function (userId) {\n return this._deviceList.getStoredDevicesForUser(userId);\n};\n\n/**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\nCrypto.prototype.getStoredDevice = function (userId, deviceId) {\n return this._deviceList.getStoredDevice(userId, deviceId);\n};\n\n/**\n * Save the device list, if necessary\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise<bool>} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\nCrypto.prototype.saveDeviceList = function (delay) {\n return this._deviceList.saveIfDirty(delay);\n};\n\n/**\n * Update the blocked/verified state of the given device\n *\n * @param {string} userId owner of the device\n * @param {string} deviceId unique identifier for the device\n *\n * @param {?boolean} verified whether to mark the device as verified. Null to\n * leave unchanged.\n *\n * @param {?boolean} blocked whether to mark the device as blocked. Null to\n * leave unchanged.\n *\n * @param {?boolean} known whether to mark that the user has been made aware of\n * the existence of this device. Null to leave unchanged\n *\n * @return {Promise<module:crypto/deviceinfo>} updated DeviceInfo\n */\nCrypto.prototype.setDeviceVerification = function () {\n var _ref3 = (0, _bluebird.method)(function (userId, deviceId, verified, blocked, known) {\n var devices = this._deviceList.getRawStoredDevicesForUser(userId);\n if (!devices || !devices[deviceId]) {\n throw new Error(\"Unknown device \" + userId + \":\" + deviceId);\n }\n\n var dev = devices[deviceId];\n var verificationStatus = dev.verified;\n\n if (verified) {\n verificationStatus = DeviceVerification.VERIFIED;\n } else if (verified !== null && verificationStatus == DeviceVerification.VERIFIED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n if (blocked) {\n verificationStatus = DeviceVerification.BLOCKED;\n } else if (blocked !== null && verificationStatus == DeviceVerification.BLOCKED) {\n verificationStatus = DeviceVerification.UNVERIFIED;\n }\n\n var knownStatus = dev.known;\n if (known !== null && known !== undefined) {\n knownStatus = known;\n }\n\n if (dev.verified !== verificationStatus || dev.known !== knownStatus) {\n dev.verified = verificationStatus;\n dev.known = knownStatus;\n this._deviceList.storeDevicesForUser(userId, devices);\n this._deviceList.saveIfDirty();\n }\n return DeviceInfo.fromStorage(dev, deviceId);\n });\n\n return function (_x2, _x3, _x4, _x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Get information on the active olm sessions with a user\n * <p>\n * Returns a map from device id to an object with keys 'deviceIdKey' (the\n * device's curve25519 identity key) and 'sessions' (an array of objects in the\n * same format as that returned by\n * {@link module:crypto/OlmDevice#getSessionInfoForDevice}).\n * <p>\n * This method is provided for debugging purposes.\n *\n * @param {string} userId id of user to inspect\n *\n * @return {Promise<Object.<string, {deviceIdKey: string, sessions: object[]}>>}\n */\nCrypto.prototype.getOlmSessionsForUser = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(userId) {\n var devices, result, j, device, deviceKey, sessions;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n devices = this.getStoredDevicesForUser(userId) || [];\n result = {};\n j = 0;\n\n case 3:\n if (!(j < devices.length)) {\n _context3.next = 13;\n break;\n }\n\n device = devices[j];\n deviceKey = device.getIdentityKey();\n _context3.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionInfoForDevice(deviceKey));\n\n case 8:\n sessions = _context3.sent;\n\n\n result[device.deviceId] = {\n deviceIdKey: deviceKey,\n sessions: sessions\n };\n\n case 10:\n ++j;\n _context3.next = 3;\n break;\n\n case 13:\n return _context3.abrupt('return', result);\n\n case 14:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function (_x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Get the device which sent an event\n *\n * @param {module:models/event.MatrixEvent} event event to be checked\n *\n * @return {module:crypto/deviceinfo?}\n */\nCrypto.prototype.getEventSenderDeviceInfo = function (event) {\n var senderKey = event.getSenderKey();\n var algorithm = event.getWireContent().algorithm;\n\n if (!senderKey || !algorithm) {\n return null;\n }\n\n var forwardingChain = event.getForwardingCurve25519KeyChain();\n if (forwardingChain.length > 0) {\n // we got this event from somewhere else\n // TODO: check if we can trust the forwarders.\n return null;\n }\n\n // senderKey is the Curve25519 identity key of the device which the event\n // was sent from. In the case of Megolm, it's actually the Curve25519\n // identity key of the device which set up the Megolm session.\n\n var device = this._deviceList.getDeviceByIdentityKey(event.getSender(), algorithm, senderKey);\n\n if (device === null) {\n // we haven't downloaded the details of this device yet.\n return null;\n }\n\n // so far so good, but now we need to check that the sender of this event\n // hadn't advertised someone else's Curve25519 key as their own. We do that\n // by checking the Ed25519 claimed by the event (or, in the case of megolm,\n // the event which set up the megolm session), to check that it matches the\n // fingerprint of the purported sending device.\n //\n // (see https://github.com/vector-im/vector-web/issues/2215)\n\n var claimedKey = event.getClaimedEd25519Key();\n if (!claimedKey) {\n console.warn(\"Event \" + event.getId() + \" claims no ed25519 key: \" + \"cannot verify sending device\");\n return null;\n }\n\n if (claimedKey !== device.getFingerprint()) {\n console.warn(\"Event \" + event.getId() + \" claims ed25519 key \" + claimedKey + \"but sender device has key \" + device.getFingerprint());\n return null;\n }\n\n return device;\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * @param {string} roomId The ID of the room to discard the session for\n *\n * This should not normally be necessary.\n */\nCrypto.prototype.forceDiscardSession = function (roomId) {\n var alg = this._roomEncryptors[roomId];\n if (alg === undefined) throw new Error(\"Room not encrypted\");\n if (alg.forceDiscardSession === undefined) {\n throw new Error(\"Room encryption algorithm doesn't support session discarding\");\n }\n alg.forceDiscardSession();\n};\n\n/**\n * Configure a room to use encryption (ie, save a flag in the sessionstore).\n *\n * @param {string} roomId The room ID to enable encryption in.\n *\n * @param {object} config The encryption config for the room.\n *\n * @param {boolean=} inhibitDeviceQuery true to suppress device list query for\n * users in the room (for now). In case lazy loading is enabled,\n * the device query is always inhibited as the members are not tracked.\n */\nCrypto.prototype.setRoomEncryption = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(roomId, config, inhibitDeviceQuery) {\n var existingConfig, existingAlg, storeConfigPromise, AlgClass, alg;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n // if state is being replayed from storage, we might already have a configuration\n // for this room as they are persisted as well.\n // We just need to make sure the algorithm is initialized in this case.\n // However, if the new config is different,\n // we should bail out as room encryption can't be changed once set.\n existingConfig = this._roomList.getRoomEncryption(roomId);\n\n if (!existingConfig) {\n _context4.next = 5;\n break;\n }\n\n if (!((0, _stringify2.default)(existingConfig) != (0, _stringify2.default)(config))) {\n _context4.next = 5;\n break;\n }\n\n console.error(\"Ignoring m.room.encryption event which requests \" + \"a change of config in \" + roomId);\n return _context4.abrupt('return');\n\n case 5:\n // if we already have encryption in this room, we should ignore this event,\n // as it would reset the encryption algorithm.\n // This is at least expected to be called twice, as sync calls onCryptoEvent\n // for both the timeline and state sections in the /sync response,\n // the encryption event would appear in both.\n // If it's called more than twice though,\n // it signals a bug on client or server.\n existingAlg = this._roomEncryptors[roomId];\n\n if (!existingAlg) {\n _context4.next = 8;\n break;\n }\n\n return _context4.abrupt('return');\n\n case 8:\n\n // _roomList.getRoomEncryption will not race with _roomList.setRoomEncryption\n // because it first stores in memory. We should await the promise only\n // after all the in-memory state (_roomEncryptors and _roomList) has been updated\n // to avoid races when calling this method multiple times. Hence keep a hold of the promise.\n storeConfigPromise = null;\n\n if (!existingConfig) {\n storeConfigPromise = this._roomList.setRoomEncryption(roomId, config);\n }\n\n AlgClass = algorithms.ENCRYPTION_CLASSES[config.algorithm];\n\n if (AlgClass) {\n _context4.next = 13;\n break;\n }\n\n throw new Error(\"Unable to encrypt with \" + config.algorithm);\n\n case 13:\n alg = new AlgClass({\n userId: this._userId,\n deviceId: this._deviceId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId,\n config: config\n });\n\n this._roomEncryptors[roomId] = alg;\n\n if (!storeConfigPromise) {\n _context4.next = 18;\n break;\n }\n\n _context4.next = 18;\n return (0, _bluebird.resolve)(storeConfigPromise);\n\n case 18:\n if (this._lazyLoadMembers) {\n _context4.next = 25;\n break;\n }\n\n console.log(\"Enabling encryption in \" + roomId + \"; \" + \"starting to track device lists for all users therein\");\n\n _context4.next = 22;\n return (0, _bluebird.resolve)(this.trackRoomDevices(roomId));\n\n case 22:\n // TODO: this flag is only not used from MatrixClient::setRoomEncryption\n // which is never used (inside riot at least)\n // but didn't want to remove it as it technically would\n // be a breaking change.\n if (!this.inhibitDeviceQuery) {\n this._deviceList.refreshOutdatedDeviceLists();\n }\n _context4.next = 26;\n break;\n\n case 25:\n console.log(\"Enabling encryption in \" + roomId);\n\n case 26:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function (_x8, _x9, _x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * Make sure we are tracking the device lists for all users in this room.\n *\n * @param {string} roomId The room ID to start tracking devices in.\n * @returns {Promise} when all devices for the room have been fetched and marked to track\n */\nCrypto.prototype.trackRoomDevices = function (roomId) {\n var _this2 = this;\n\n var trackMembers = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var room, members;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (_this2._roomEncryptors[roomId]) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt('return');\n\n case 2:\n room = _this2._clientStore.getRoom(roomId);\n\n if (room) {\n _context5.next = 5;\n break;\n }\n\n throw new Error('Unable to start tracking devices in unknown room ' + roomId);\n\n case 5:\n console.log('Starting to track devices for room ' + roomId + ' ...');\n _context5.next = 8;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 8:\n members = _context5.sent;\n\n members.forEach(function (m) {\n _this2._deviceList.startTrackingDeviceList(m.userId);\n });\n\n case 10:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this2);\n }));\n\n return function trackMembers() {\n return _ref6.apply(this, arguments);\n };\n }();\n\n var promise = this._roomDeviceTrackingState[roomId];\n if (!promise) {\n promise = trackMembers();\n this._roomDeviceTrackingState[roomId] = promise;\n }\n return promise;\n};\n\n/**\n * @typedef {Object} module:crypto~OlmSessionResult\n * @property {module:crypto/deviceinfo} device device info\n * @property {string?} sessionId base64 olm session id; null if no session\n * could be established\n */\n\n/**\n * Try to make sure we have established olm sessions for all known devices for\n * the given users.\n *\n * @param {string[]} users list of user ids\n *\n * @return {module:client.Promise} resolves once the sessions are complete, to\n * an Object mapping from userId to deviceId to\n * {@link module:crypto~OlmSessionResult}\n */\nCrypto.prototype.ensureOlmSessionsForUsers = function (users) {\n var devicesByUser = {};\n\n for (var i = 0; i < users.length; ++i) {\n var userId = users[i];\n devicesByUser[userId] = [];\n\n var devices = this.getStoredDevicesForUser(userId) || [];\n for (var j = 0; j < devices.length; ++j) {\n var deviceInfo = devices[j];\n\n var key = deviceInfo.getIdentityKey();\n if (key == this._olmDevice.deviceCurve25519Key) {\n // don't bother setting up session to ourself\n continue;\n }\n if (deviceInfo.verified == DeviceVerification.BLOCKED) {\n // don't bother setting up sessions with blocked users\n continue;\n }\n\n devicesByUser[userId].push(deviceInfo);\n }\n }\n\n return olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser);\n};\n\n/**\n * Get a list containing all of the room keys\n *\n * @return {module:crypto/OlmDevice.MegolmSessionData[]} a list of session export objects\n */\nCrypto.prototype.exportRoomKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var _this3 = this;\n\n var exportedSessions;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n exportedSessions = [];\n _context6.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this3._cryptoStore.getAllEndToEndInboundGroupSessions(txn, function (s) {\n if (s === null) return;\n\n var sess = _this3._olmDevice.exportInboundGroupSession(s.senderKey, s.sessionId, s.sessionData);\n sess.algorithm = olmlib.MEGOLM_ALGORITHM;\n exportedSessions.push(sess);\n });\n }));\n\n case 3:\n return _context6.abrupt('return', exportedSessions);\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n}));\n\n/**\n * Import a list of room keys previously exported by exportRoomKeys\n *\n * @param {Object[]} keys a list of session export objects\n * @return {module:client.Promise} a promise which resolves once the keys have been imported\n */\nCrypto.prototype.importRoomKeys = function (keys) {\n var _this4 = this;\n\n return _bluebird2.default.map(keys, function (key) {\n if (!key.room_id || !key.algorithm) {\n console.warn(\"ignoring room key entry with missing fields\", key);\n return null;\n }\n\n var alg = _this4._getRoomDecryptor(key.room_id, key.algorithm);\n return alg.importRoomKey(key);\n });\n};\n/* eslint-disable valid-jsdoc */ //https://github.com/eslint/eslint/issues/7307\n/**\n * Encrypt an event according to the configuration of the room.\n *\n * @param {module:models/event.MatrixEvent} event event to be sent\n *\n * @param {module:models/room} room destination room.\n *\n * @return {module:client.Promise?} Promise which resolves when the event has been\n * encrypted, or null if nothing was needed\n */\n/* eslint-enable valid-jsdoc */\nCrypto.prototype.encryptEvent = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(event, room) {\n var roomId, alg, content, mRelatesTo, encryptedContent;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n if (room) {\n _context7.next = 2;\n break;\n }\n\n throw new Error(\"Cannot send encrypted messages in unknown rooms\");\n\n case 2:\n roomId = event.getRoomId();\n alg = this._roomEncryptors[roomId];\n\n if (alg) {\n _context7.next = 6;\n break;\n }\n\n throw new Error(\"Room was previously configured to use encryption, but is \" + \"no longer. Perhaps the homeserver is hiding the \" + \"configuration event.\");\n\n case 6:\n\n if (!this._roomDeviceTrackingState[roomId]) {\n this.trackRoomDevices(roomId);\n }\n // wait for all the room devices to be loaded\n _context7.next = 9;\n return (0, _bluebird.resolve)(this._roomDeviceTrackingState[roomId]);\n\n case 9:\n content = event.getContent();\n // If event has an m.relates_to then we need\n // to put this on the wrapping event instead\n\n mRelatesTo = content['m.relates_to'];\n\n if (mRelatesTo) {\n // Clone content here so we don't remove `m.relates_to` from the local-echo\n content = (0, _assign2.default)({}, content);\n delete content['m.relates_to'];\n }\n\n _context7.next = 14;\n return (0, _bluebird.resolve)(alg.encryptMessage(room, event.getType(), content));\n\n case 14:\n encryptedContent = _context7.sent;\n\n\n if (mRelatesTo) {\n encryptedContent['m.relates_to'] = mRelatesTo;\n }\n\n event.makeEncrypted(\"m.room.encrypted\", encryptedContent, this._olmDevice.deviceCurve25519Key, this._olmDevice.deviceEd25519Key);\n\n case 17:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x11, _x12) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received event\n *\n * @param {MatrixEvent} event\n *\n * @return {Promise<module:crypto~EventDecryptionResult>} resolves once we have\n * finished decrypting. Rejects with an `algorithms.DecryptionError` if there\n * is a problem decrypting the event.\n */\nCrypto.prototype.decryptEvent = function (event) {\n if (event.isRedacted()) {\n return _bluebird2.default.resolve({\n clearEvent: {\n room_id: event.getRoomId(),\n type: \"m.room.message\",\n content: {}\n }\n });\n }\n var content = event.getWireContent();\n var alg = this._getRoomDecryptor(event.getRoomId(), content.algorithm);\n return alg.decryptEvent(event);\n};\n\n/**\n * Handle the notification from /sync or /keys/changes that device lists have\n * been changed.\n *\n * @param {Object} syncData Object containing sync tokens associated with this sync\n * @param {Object} syncDeviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype.handleDeviceListChanges = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(syncData, syncDeviceLists) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (syncData.oldSyncToken) {\n _context8.next = 2;\n break;\n }\n\n return _context8.abrupt('return');\n\n case 2:\n _context8.next = 4;\n return (0, _bluebird.resolve)(this._evalDeviceListChanges(syncDeviceLists));\n\n case 4:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function (_x13, _x14) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * Send a request for some room keys, if we have not already done so\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n */\nCrypto.prototype.requestRoomKey = function (requestBody, recipients) {\n this._outgoingRoomKeyRequestManager.sendRoomKeyRequest(requestBody, recipients).catch(function (e) {\n // this normally means we couldn't talk to the store\n console.error('Error requesting key for event', e);\n }).done();\n};\n\n/**\n * Cancel any earlier room key request\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * parameters to match for cancellation\n * @param {boolean} andResend\n * if true, resend the key request after cancelling.\n */\nCrypto.prototype.cancelRoomKeyRequest = function (requestBody, andResend) {\n this._outgoingRoomKeyRequestManager.cancelRoomKeyRequest(requestBody, andResend).catch(function (e) {\n console.warn(\"Error clearing pending room key requests\", e);\n }).done();\n};\n\n/**\n * handle an m.room.encryption event\n *\n * @param {module:models/event.MatrixEvent} event encryption event\n */\nCrypto.prototype.onCryptoEvent = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(event) {\n var roomId, content;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n roomId = event.getRoomId();\n content = event.getContent();\n _context9.prev = 2;\n _context9.next = 5;\n return (0, _bluebird.resolve)(this.setRoomEncryption(roomId, content, true));\n\n case 5:\n _context9.next = 10;\n break;\n\n case 7:\n _context9.prev = 7;\n _context9.t0 = _context9['catch'](2);\n\n console.error(\"Error configuring encryption in room \" + roomId + \":\", _context9.t0);\n\n case 10:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this, [[2, 7]]);\n }));\n\n return function (_x15) {\n return _ref10.apply(this, arguments);\n };\n}();\n\n/**\n * Called before the result of a sync is procesed\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncWillProcess = function () {\n var _ref11 = (0, _bluebird.method)(function (syncData) {\n if (!syncData.oldSyncToken) {\n // If there is no old sync token, we start all our tracking from\n // scratch, so mark everything as untracked. onCryptoEvent will\n // be called for all e2e rooms during the processing of the sync,\n // at which point we'll start tracking all the users of that room.\n console.log(\"Initial sync performed - resetting device tracking state\");\n this._deviceList.stopTrackingAllDeviceLists();\n this._roomDeviceTrackingState = {};\n }\n });\n\n return function (_x16) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * handle the completion of a /sync\n *\n * This is called after the processing of each successful /sync response.\n * It is an opportunity to do a batch process on the information received.\n *\n * @param {Object} syncData the data from the 'MatrixClient.sync' event\n */\nCrypto.prototype.onSyncCompleted = function () {\n var _ref12 = (0, _bluebird.method)(function (syncData) {\n var nextSyncToken = syncData.nextSyncToken;\n\n this._deviceList.setSyncToken(syncData.nextSyncToken);\n this._deviceList.saveIfDirty();\n\n // catch up on any new devices we got told about during the sync.\n this._deviceList.lastKnownSyncToken = nextSyncToken;\n this._deviceList.refreshOutdatedDeviceLists();\n\n // we don't start uploading one-time keys until we've caught up with\n // to-device messages, to help us avoid throwing away one-time-keys that we\n // are about to receive messages for\n // (https://github.com/vector-im/riot-web/issues/2782).\n if (!syncData.catchingUp) {\n _maybeUploadOneTimeKeys(this);\n this._processReceivedRoomKeyRequests();\n }\n });\n\n return function (_x17) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * Trigger the appropriate invalidations and removes for a given\n * device list\n *\n * @param {Object} deviceLists device_lists field from /sync, or response from\n * /keys/changes\n */\nCrypto.prototype._evalDeviceListChanges = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(deviceLists) {\n var _this5 = this;\n\n var e2eUserIds;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n if (deviceLists.changed && Array.isArray(deviceLists.changed)) {\n deviceLists.changed.forEach(function (u) {\n _this5._deviceList.invalidateUserDeviceList(u);\n });\n }\n\n if (!(deviceLists.left && Array.isArray(deviceLists.left) && deviceLists.left.length)) {\n _context10.next = 8;\n break;\n }\n\n _context10.t0 = _set2.default;\n _context10.next = 5;\n return (0, _bluebird.resolve)(this._getTrackedE2eUsers());\n\n case 5:\n _context10.t1 = _context10.sent;\n e2eUserIds = new _context10.t0(_context10.t1);\n\n\n deviceLists.left.forEach(function (u) {\n if (!e2eUserIds.has(u)) {\n _this5._deviceList.stopTrackingDeviceList(u);\n }\n });\n\n case 8:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x18) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of all the IDs of users we share an e2e room with\n * for which we are tracking devices already\n *\n * @returns {string[]} List of user IDs\n */\nCrypto.prototype._getTrackedE2eUsers = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11() {\n var e2eUserIds, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, room, members, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, member;\n\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n e2eUserIds = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context11.prev = 4;\n _iterator = (0, _getIterator3.default)(this._getTrackedE2eRooms());\n\n case 6:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context11.next = 33;\n break;\n }\n\n room = _step.value;\n _context11.next = 10;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 10:\n members = _context11.sent;\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context11.prev = 14;\n\n for (_iterator2 = (0, _getIterator3.default)(members); !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n member = _step2.value;\n\n e2eUserIds.push(member.userId);\n }\n _context11.next = 22;\n break;\n\n case 18:\n _context11.prev = 18;\n _context11.t0 = _context11['catch'](14);\n _didIteratorError2 = true;\n _iteratorError2 = _context11.t0;\n\n case 22:\n _context11.prev = 22;\n _context11.prev = 23;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 25:\n _context11.prev = 25;\n\n if (!_didIteratorError2) {\n _context11.next = 28;\n break;\n }\n\n throw _iteratorError2;\n\n case 28:\n return _context11.finish(25);\n\n case 29:\n return _context11.finish(22);\n\n case 30:\n _iteratorNormalCompletion = true;\n _context11.next = 6;\n break;\n\n case 33:\n _context11.next = 39;\n break;\n\n case 35:\n _context11.prev = 35;\n _context11.t1 = _context11['catch'](4);\n _didIteratorError = true;\n _iteratorError = _context11.t1;\n\n case 39:\n _context11.prev = 39;\n _context11.prev = 40;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 42:\n _context11.prev = 42;\n\n if (!_didIteratorError) {\n _context11.next = 45;\n break;\n }\n\n throw _iteratorError;\n\n case 45:\n return _context11.finish(42);\n\n case 46:\n return _context11.finish(39);\n\n case 47:\n return _context11.abrupt('return', e2eUserIds);\n\n case 48:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this, [[4, 35, 39, 47], [14, 18, 22, 30], [23,, 25, 29], [40,, 42, 46]]);\n}));\n\n/**\n * Get a list of the e2e-enabled rooms we are members of,\n * and for which we are already tracking the devices\n *\n * @returns {module:models.Room[]}\n */\nCrypto.prototype._getTrackedE2eRooms = function () {\n var _this6 = this;\n\n return this._clientStore.getRooms().filter(function (room) {\n // check for rooms with encryption enabled\n var alg = _this6._roomEncryptors[room.roomId];\n if (!alg) {\n return false;\n }\n if (!_this6._roomDeviceTrackingState[room.roomId]) {\n return false;\n }\n\n // ignore any rooms which we have left\n var myMembership = room.getMyMembership();\n return myMembership === \"join\" || myMembership === \"invite\";\n });\n};\n\nCrypto.prototype._onToDeviceEvent = function (event) {\n var _this7 = this;\n\n try {\n if (event.getType() == \"m.room_key\" || event.getType() == \"m.forwarded_room_key\") {\n this._onRoomKeyEvent(event);\n } else if (event.getType() == \"m.room_key_request\") {\n this._onRoomKeyRequestEvent(event);\n } else if (event.isBeingDecrypted()) {\n // once the event has been decrypted, try again\n event.once('Event.decrypted', function (ev) {\n _this7._onToDeviceEvent(ev);\n });\n }\n } catch (e) {\n console.error(\"Error handling toDeviceEvent:\", e);\n }\n};\n\n/**\n * Handle a key event\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key event\n */\nCrypto.prototype._onRoomKeyEvent = function (event) {\n var content = event.getContent();\n\n if (!content.room_id || !content.algorithm) {\n console.error(\"key event is missing fields\");\n return;\n }\n\n var alg = this._getRoomDecryptor(content.room_id, content.algorithm);\n alg.onRoomKeyEvent(event);\n};\n\n/**\n * Handle a change in the membership state of a member of a room\n *\n * @private\n * @param {module:models/event.MatrixEvent} event event causing the change\n * @param {module:models/room-member} member user whose membership changed\n * @param {string=} oldMembership previous membership\n */\nCrypto.prototype._onRoomMembership = function (event, member, oldMembership) {\n // this event handler is registered on the *client* (as opposed to the room\n // member itself), which means it is only called on changes to the *live*\n // membership state (ie, it is not called when we back-paginate, nor when\n // we load the state in the initialsync).\n //\n // Further, it is automatically registered and called when new members\n // arrive in the room.\n\n var roomId = member.roomId;\n\n var alg = this._roomEncryptors[roomId];\n if (!alg) {\n // not encrypting in this room\n return;\n }\n // only mark users in this room as tracked if we already started tracking in this room\n // this way we don't start device queries after sync on behalf of this room which we won't use\n // the result of anyway, as we'll need to do a query again once all the members are fetched\n // by calling _trackRoomDevices\n if (this._roomDeviceTrackingState[roomId]) {\n if (member.membership == 'join') {\n console.log('Join event for ' + member.userId + ' in ' + roomId);\n // make sure we are tracking the deviceList for this user\n this._deviceList.startTrackingDeviceList(member.userId);\n } else if (member.membership == 'invite' && this._clientStore.getRoom(roomId).shouldEncryptForInvitedMembers()) {\n console.log('Invite event for ' + member.userId + ' in ' + roomId);\n this._deviceList.startTrackingDeviceList(member.userId);\n }\n }\n\n alg.onRoomMembership(event, member, oldMembership);\n};\n\n/**\n * Called when we get an m.room_key_request event.\n *\n * @private\n * @param {module:models/event.MatrixEvent} event key request event\n */\nCrypto.prototype._onRoomKeyRequestEvent = function (event) {\n var content = event.getContent();\n if (content.action === \"request\") {\n // Queue it up for now, because they tend to arrive before the room state\n // events at initial sync, and we want to see if we know anything about the\n // room before passing them on to the app.\n var req = new IncomingRoomKeyRequest(event);\n this._receivedRoomKeyRequests.push(req);\n } else if (content.action === \"request_cancellation\") {\n var _req = new IncomingRoomKeyRequestCancellation(event);\n this._receivedRoomKeyRequestCancellations.push(_req);\n }\n};\n\n/**\n * Process any m.room_key_request events which were queued up during the\n * current sync.\n *\n * @private\n */\nCrypto.prototype._processReceivedRoomKeyRequests = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12() {\n var _this8 = this;\n\n var requests, cancellations;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n if (!this._processingRoomKeyRequests) {\n _context12.next = 2;\n break;\n }\n\n return _context12.abrupt('return');\n\n case 2:\n this._processingRoomKeyRequests = true;\n\n _context12.prev = 3;\n\n // we need to grab and clear the queues in the synchronous bit of this method,\n // so that we don't end up racing with the next /sync.\n requests = this._receivedRoomKeyRequests;\n\n this._receivedRoomKeyRequests = [];\n cancellations = this._receivedRoomKeyRequestCancellations;\n\n this._receivedRoomKeyRequestCancellations = [];\n\n // Process all of the requests, *then* all of the cancellations.\n //\n // This makes sure that if we get a request and its cancellation in the\n // same /sync result, then we process the request before the\n // cancellation (and end up with a cancelled request), rather than the\n // cancellation before the request (and end up with an outstanding\n // request which should have been cancelled.)\n _context12.next = 10;\n return (0, _bluebird.resolve)(_bluebird2.default.map(requests, function (req) {\n return _this8._processReceivedRoomKeyRequest(req);\n }));\n\n case 10:\n _context12.next = 12;\n return (0, _bluebird.resolve)(_bluebird2.default.map(cancellations, function (cancellation) {\n return _this8._processReceivedRoomKeyRequestCancellation(cancellation);\n }));\n\n case 12:\n _context12.next = 17;\n break;\n\n case 14:\n _context12.prev = 14;\n _context12.t0 = _context12['catch'](3);\n\n console.error('Error processing room key requsts: ' + _context12.t0);\n\n case 17:\n _context12.prev = 17;\n\n this._processingRoomKeyRequests = false;\n return _context12.finish(17);\n\n case 20:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this, [[3, 14, 17, 20]]);\n}));\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequest} req\n */\nCrypto.prototype._processReceivedRoomKeyRequest = function () {\n var _ref16 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(req) {\n var userId, deviceId, body, roomId, alg, decryptor, device;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n userId = req.userId;\n deviceId = req.deviceId;\n body = req.requestBody;\n roomId = body.room_id;\n alg = body.algorithm;\n\n\n console.log('m.room_key_request from ' + userId + ':' + deviceId + (' for ' + roomId + ' / ' + body.session_id + ' (id ' + req.requestId + ')'));\n\n if (!(userId !== this._userId)) {\n _context13.next = 9;\n break;\n }\n\n // TODO: determine if we sent this device the keys already: in\n // which case we can do so again.\n console.log(\"Ignoring room key request from other user for now\");\n return _context13.abrupt('return');\n\n case 9:\n if (this._roomDecryptors[roomId]) {\n _context13.next = 12;\n break;\n }\n\n console.log('room key request for unencrypted room ' + roomId);\n return _context13.abrupt('return');\n\n case 12:\n decryptor = this._roomDecryptors[roomId][alg];\n\n if (decryptor) {\n _context13.next = 16;\n break;\n }\n\n console.log('room key request for unknown alg ' + alg + ' in room ' + roomId);\n return _context13.abrupt('return');\n\n case 16:\n _context13.next = 18;\n return (0, _bluebird.resolve)(decryptor.hasKeysForKeyRequest(req));\n\n case 18:\n if (_context13.sent) {\n _context13.next = 21;\n break;\n }\n\n console.log('room key request for unknown session ' + roomId + ' / ' + body.session_id);\n return _context13.abrupt('return');\n\n case 21:\n\n req.share = function () {\n decryptor.shareKeysWithDevice(req);\n };\n\n // if the device is is verified already, share the keys\n device = this._deviceList.getStoredDevice(userId, deviceId);\n\n if (!(device && device.isVerified())) {\n _context13.next = 27;\n break;\n }\n\n console.log('device is already verified: sharing keys');\n req.share();\n return _context13.abrupt('return');\n\n case 27:\n\n this.emit(\"crypto.roomKeyRequest\", req);\n\n case 28:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x19) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * Helper for processReceivedRoomKeyRequests\n *\n * @param {IncomingRoomKeyRequestCancellation} cancellation\n */\nCrypto.prototype._processReceivedRoomKeyRequestCancellation = function () {\n var _ref17 = (0, _bluebird.method)(function (cancellation) {\n console.log('m.room_key_request cancellation for ' + cancellation.userId + ':' + (cancellation.deviceId + ' (id ' + cancellation.requestId + ')'));\n\n // we should probably only notify the app of cancellations we told it\n // about, but we don't currently have a record of that, so we just pass\n // everything through.\n this.emit(\"crypto.roomKeyRequestCancellation\", cancellation);\n });\n\n return function (_x20) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Get a decryptor for a given room and algorithm.\n *\n * If we already have a decryptor for the given room and algorithm, return\n * it. Otherwise try to instantiate it.\n *\n * @private\n *\n * @param {string?} roomId room id for decryptor. If undefined, a temporary\n * decryptor is instantiated.\n *\n * @param {string} algorithm crypto algorithm\n *\n * @return {module:crypto.algorithms.base.DecryptionAlgorithm}\n *\n * @raises {module:crypto.algorithms.DecryptionError} if the algorithm is\n * unknown\n */\nCrypto.prototype._getRoomDecryptor = function (roomId, algorithm) {\n var decryptors = void 0;\n var alg = void 0;\n\n roomId = roomId || null;\n if (roomId) {\n decryptors = this._roomDecryptors[roomId];\n if (!decryptors) {\n this._roomDecryptors[roomId] = decryptors = {};\n }\n\n alg = decryptors[algorithm];\n if (alg) {\n return alg;\n }\n }\n\n var AlgClass = algorithms.DECRYPTION_CLASSES[algorithm];\n if (!AlgClass) {\n throw new algorithms.DecryptionError('UNKNOWN_ENCRYPTION_ALGORITHM', 'Unknown encryption algorithm \"' + algorithm + '\".');\n }\n alg = new AlgClass({\n userId: this._userId,\n crypto: this,\n olmDevice: this._olmDevice,\n baseApis: this._baseApis,\n roomId: roomId\n });\n\n if (decryptors) {\n decryptors[algorithm] = alg;\n }\n return alg;\n};\n\n/**\n * sign the given object with our ed25519 key\n *\n * @param {Object} obj Object to which we will add a 'signatures' property\n */\nCrypto.prototype._signObject = function () {\n var _ref18 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(obj) {\n var sigs;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n sigs = {};\n\n sigs[this._userId] = {};\n _context14.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.sign(anotherjson.stringify(obj)));\n\n case 4:\n sigs[this._userId][\"ed25519:\" + this._deviceId] = _context14.sent;\n\n obj.signatures = sigs;\n\n case 6:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x21) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * The parameters of a room key request. The details of the request may\n * vary with the crypto algorithm, but the management and storage layers for\n * outgoing requests expect it to have 'room_id' and 'session_id' properties.\n *\n * @typedef {Object} RoomKeyRequestBody\n */\n\n/**\n * Represents a received m.room_key_request event\n *\n * @property {string} userId user requesting the key\n * @property {string} deviceId device requesting the key\n * @property {string} requestId unique id for the request\n * @property {module:crypto~RoomKeyRequestBody} requestBody\n * @property {function()} share callback which, when called, will ask\n * the relevant crypto algorithm implementation to share the keys for\n * this request.\n */\n\nvar IncomingRoomKeyRequest = function IncomingRoomKeyRequest(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequest);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n this.requestBody = content.body || {};\n this.share = function () {\n throw new Error(\"don't know how to share keys for this request yet\");\n };\n};\n\n/**\n * Represents a received m.room_key_request cancellation\n *\n * @property {string} userId user requesting the cancellation\n * @property {string} deviceId device requesting the cancellation\n * @property {string} requestId unique id for the request to be cancelled\n */\n\n\nvar IncomingRoomKeyRequestCancellation = function IncomingRoomKeyRequestCancellation(event) {\n (0, _classCallCheck3.default)(this, IncomingRoomKeyRequestCancellation);\n\n var content = event.getContent();\n\n this.userId = event.getSender();\n this.deviceId = content.requesting_device_id;\n this.requestId = content.request_id;\n};\n\n/**\n * The result of a (successful) call to decryptEvent.\n *\n * @typedef {Object} EventDecryptionResult\n *\n * @property {Object} clearEvent The plaintext payload for the event\n * (typically containing <tt>type</tt> and <tt>content</tt> fields).\n *\n * @property {?string} senderCurve25519Key Key owned by the sender of this\n * event. See {@link module:models/event.MatrixEvent#getSenderKey}.\n *\n * @property {?string} claimedEd25519Key ed25519 key claimed by the sender of\n * this event. See\n * {@link module:models/event.MatrixEvent#getClaimedEd25519Key}.\n *\n * @property {?Array<string>} forwardingCurve25519KeyChain list of curve25519\n * keys involved in telling us about the senderCurve25519Key and\n * claimedEd25519Key. See\n * {@link module:models/event.MatrixEvent#getForwardingCurve25519KeyChain}.\n */\n\n/**\n * Fires when we receive a room key request\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequest\"\n * @param {module:crypto~IncomingRoomKeyRequest} req request details\n */\n\n/**\n * Fires when we receive a room key request cancellation\n *\n * @event module:client~MatrixClient#\"crypto.roomKeyRequestCancellation\"\n * @param {module:crypto~IncomingRoomKeyRequestCancellation} req\n */\n\n/**\n * Fires when the app may wish to warn the user about something related\n * the end-to-end crypto.\n *\n * Comes with a type which is one of:\n * * CRYPTO_WARNING_ACCOUNT_MIGRATED: Account data has been migrated from an older\n * version of the store in such a way that older clients will no longer be\n * able to read it. The app may wish to warn the user against going back to\n * an older version of the app.\n * * CRYPTO_WARNING_OLD_VERSION_DETECTED: js-sdk has detected that an older version\n * of js-sdk has been run against the same store after a migration has been\n * performed. This is likely have caused unexpected behaviour in the old\n * version. For example, the old version and the new version may have two\n * different identity keys.\n *\n * @event module:client~MatrixClient#\"crypto.warning\"\n * @param {string} type One of the strings listed above\n */\n\n/** */\n\n\nmodule.exports = Crypto;\n//# sourceMappingURL=index.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _utils = require('../utils');\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Internal module. Management of outgoing room key requests.\n *\n * See https://docs.google.com/document/d/1m4gQkcnJkxNuBmb5NoFCIadIY-DyqqNAS3lloE73BlQ\n * for draft documentation on what we're supposed to be implementing here.\n *\n * @module\n */\n\n// delay between deciding we want some keys, and sending out the request, to\n// allow for (a) it turning up anyway, (b) grouping requests together\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SEND_KEY_REQUESTS_DELAY_MS = 500;\n\n/** possible states for a room key request\n *\n * The state machine looks like:\n *\n * | (cancellation sent)\n * | .-------------------------------------------------.\n * | | |\n * V V (cancellation requested) |\n * UNSENT -----------------------------+ |\n * | | |\n * | | |\n * | (send successful) | CANCELLATION_PENDING_AND_WILL_RESEND\n * V | Λ\n * SENT | |\n * |-------------------------------- | --------------'\n * | | (cancellation requested with intent\n * | | to resend the original request)\n * | |\n * | (cancellation requested) |\n * V |\n * CANCELLATION_PENDING |\n * | |\n * | (cancellation sent) |\n * V |\n * (deleted) <---------------------------+\n *\n * @enum {number}\n */\nvar ROOM_KEY_REQUEST_STATES = {\n /** request not yet sent */\n UNSENT: 0,\n\n /** request sent, awaiting reply */\n SENT: 1,\n\n /** reply received, cancellation not yet sent */\n CANCELLATION_PENDING: 2,\n\n /**\n * Cancellation not yet sent and will transition to UNSENT instead of\n * being deleted once the cancellation has been sent.\n */\n CANCELLATION_PENDING_AND_WILL_RESEND: 3\n};\n\nvar OutgoingRoomKeyRequestManager = function () {\n function OutgoingRoomKeyRequestManager(baseApis, deviceId, cryptoStore) {\n (0, _classCallCheck3.default)(this, OutgoingRoomKeyRequestManager);\n\n this._baseApis = baseApis;\n this._deviceId = deviceId;\n this._cryptoStore = cryptoStore;\n\n // handle for the delayed call to _sendOutgoingRoomKeyRequests. Non-null\n // if the callback has been set, or if it is still running.\n this._sendOutgoingRoomKeyRequestsTimer = null;\n\n // sanity check to ensure that we don't end up with two concurrent runs\n // of _sendOutgoingRoomKeyRequests\n this._sendOutgoingRoomKeyRequestsRunning = false;\n\n this._clientRunning = false;\n }\n\n /**\n * Called when the client is started. Sets background processes running.\n */\n\n\n (0, _createClass3.default)(OutgoingRoomKeyRequestManager, [{\n key: 'start',\n value: function start() {\n this._clientRunning = true;\n\n // set the timer going, to handle any requests which didn't get sent\n // on the previous run of the client.\n this._startTimer();\n }\n\n /**\n * Called when the client is stopped. Stops any running background processes.\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n console.log('stopping OutgoingRoomKeyRequestManager');\n // stop the timer on the next run\n this._clientRunning = false;\n }\n\n /**\n * Send off a room key request, if we haven't already done so.\n *\n * The `requestBody` is compared (with a deep-equality check) against\n * previous queued or sent requests and if it matches, no change is made.\n * Otherwise, a request is added to the pending list, and a job is started\n * in the background to send it.\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {Array<{userId: string, deviceId: string}>} recipients\n *\n * @returns {Promise} resolves when the request has been added to the\n * pending list (or we have established that a similar request already\n * exists)\n */\n\n }, {\n key: 'sendRoomKeyRequest',\n value: function sendRoomKeyRequest(requestBody, recipients) {\n var _this = this;\n\n return this._cryptoStore.getOrAddOutgoingRoomKeyRequest({\n requestBody: requestBody,\n recipients: recipients,\n requestId: this._baseApis.makeTxnId(),\n state: ROOM_KEY_REQUEST_STATES.UNSENT\n }).then(function (req) {\n if (req.state === ROOM_KEY_REQUEST_STATES.UNSENT) {\n _this._startTimer();\n }\n });\n }\n\n /**\n * Cancel room key requests, if any match the given requestBody\n *\n * @param {module:crypto~RoomKeyRequestBody} requestBody\n * @param {boolean} andResend if true, transition to UNSENT instead of\n * deleting after sending cancellation.\n *\n * @returns {Promise} resolves when the request has been updated in our\n * pending list.\n */\n\n }, {\n key: 'cancelRoomKeyRequest',\n value: function cancelRoomKeyRequest(requestBody) {\n var _this2 = this;\n\n var andResend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return this._cryptoStore.getOutgoingRoomKeyRequest(requestBody).then(function (req) {\n if (!req) {\n // no request was made for this key\n return;\n }\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n // nothing to do here\n return;\n\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n // just delete it\n\n // FIXME: ghahah we may have attempted to send it, and\n // not yet got a successful response. So the server\n // may have seen it, so we still need to send a cancellation\n // in that case :/\n\n console.log('deleting unnecessary room key request for ' + stringifyRequestBody(requestBody));\n return _this2._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT);\n\n case ROOM_KEY_REQUEST_STATES.SENT:\n {\n // If `andResend` is set, transition to UNSENT once the\n // cancellation has successfully been sent.\n var state = andResend ? ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND : ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING;\n // send a cancellation.\n return _this2._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.SENT, {\n state: state,\n cancellationTxnId: _this2._baseApis.makeTxnId()\n }).then(function (updatedReq) {\n if (!updatedReq) {\n // updateOutgoingRoomKeyRequest couldn't find the\n // request in state ROOM_KEY_REQUEST_STATES.SENT,\n // so we must have raced with another tab to mark\n // the request cancelled. There is no point in\n // sending another cancellation since the other tab\n // will do it.\n console.log('Tried to cancel room key request for ' + stringifyRequestBody(requestBody) + ' but it was already cancelled in another tab');\n return;\n }\n\n // We don't want to wait for the timer, so we send it\n // immediately. (We might actually end up racing with the timer,\n // but that's ok: even if we make the request twice, we'll do it\n // with the same transaction_id, so only one message will get\n // sent).\n //\n // (We also don't want to wait for the response from the server\n // here, as it will slow down processing of received keys if we\n // do.)\n _this2._sendOutgoingRoomKeyRequestCancellation(updatedReq, andResend).catch(function (e) {\n console.error(\"Error sending room key request cancellation;\" + \" will retry later.\", e);\n _this2._startTimer();\n }).then(function () {\n if (!andResend) return;\n // The request has transitioned from\n // CANCELLATION_PENDING_AND_WILL_RESEND to UNSENT. We\n // still need to resend the request which is now UNSENT, so\n // start the timer if it isn't already started.\n _this2._startTimer();\n });\n });\n }\n default:\n throw new Error('unhandled state: ' + req.state);\n }\n });\n }\n\n // start the background timer to send queued requests, if the timer isn't\n // already running\n\n }, {\n key: '_startTimer',\n value: function _startTimer() {\n var _this3 = this;\n\n if (this._sendOutgoingRoomKeyRequestsTimer) {\n return;\n }\n\n var startSendingOutgoingRoomKeyRequests = function startSendingOutgoingRoomKeyRequests() {\n if (_this3._sendOutgoingRoomKeyRequestsRunning) {\n throw new Error(\"RoomKeyRequestSend already in progress!\");\n }\n _this3._sendOutgoingRoomKeyRequestsRunning = true;\n\n _this3._sendOutgoingRoomKeyRequests().finally(function () {\n _this3._sendOutgoingRoomKeyRequestsRunning = false;\n }).catch(function (e) {\n // this should only happen if there is an indexeddb error,\n // in which case we're a bit stuffed anyway.\n console.warn('error in OutgoingRoomKeyRequestManager: ' + e);\n }).done();\n };\n\n this._sendOutgoingRoomKeyRequestsTimer = global.setTimeout(startSendingOutgoingRoomKeyRequests, SEND_KEY_REQUESTS_DELAY_MS);\n }\n\n // look for and send any queued requests. Runs itself recursively until\n // there are no more requests, or there is an error (in which case, the\n // timer will be restarted before the promise resolves).\n\n }, {\n key: '_sendOutgoingRoomKeyRequests',\n value: function _sendOutgoingRoomKeyRequests() {\n var _this4 = this;\n\n if (!this._clientRunning) {\n this._sendOutgoingRoomKeyRequestsTimer = null;\n return _bluebird2.default.resolve();\n }\n\n console.log(\"Looking for queued outgoing room key requests\");\n\n return this._cryptoStore.getOutgoingRoomKeyRequestByState([ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, ROOM_KEY_REQUEST_STATES.UNSENT]).then(function (req) {\n if (!req) {\n console.log(\"No more outgoing room key requests\");\n _this4._sendOutgoingRoomKeyRequestsTimer = null;\n return;\n }\n\n var prom = void 0;\n switch (req.state) {\n case ROOM_KEY_REQUEST_STATES.UNSENT:\n prom = _this4._sendOutgoingRoomKeyRequest(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING:\n prom = _this4._sendOutgoingRoomKeyRequestCancellation(req);\n break;\n case ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND:\n prom = _this4._sendOutgoingRoomKeyRequestCancellation(req, true);\n break;\n }\n\n return prom.then(function () {\n // go around the loop again\n return _this4._sendOutgoingRoomKeyRequests();\n }).catch(function (e) {\n console.error(\"Error sending room key request; will retry later.\", e);\n _this4._sendOutgoingRoomKeyRequestsTimer = null;\n _this4._startTimer();\n }).done();\n });\n }\n\n // given a RoomKeyRequest, send it and update the request record\n\n }, {\n key: '_sendOutgoingRoomKeyRequest',\n value: function _sendOutgoingRoomKeyRequest(req) {\n var _this5 = this;\n\n console.log('Requesting keys for ' + stringifyRequestBody(req.requestBody) + (' from ' + stringifyRecipientList(req.recipients)) + ('(id ' + req.requestId + ')'));\n\n var requestMessage = {\n action: \"request\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId,\n body: req.requestBody\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.requestId).then(function () {\n return _this5._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.UNSENT, { state: ROOM_KEY_REQUEST_STATES.SENT });\n });\n }\n\n // Given a RoomKeyRequest, cancel it and delete the request record unless\n // andResend is set, in which case transition to UNSENT.\n\n }, {\n key: '_sendOutgoingRoomKeyRequestCancellation',\n value: function _sendOutgoingRoomKeyRequestCancellation(req, andResend) {\n var _this6 = this;\n\n console.log('Sending cancellation for key request for ' + (stringifyRequestBody(req.requestBody) + ' to ') + (stringifyRecipientList(req.recipients) + ' ') + ('(cancellation id ' + req.cancellationTxnId + ')'));\n\n var requestMessage = {\n action: \"request_cancellation\",\n requesting_device_id: this._deviceId,\n request_id: req.requestId\n };\n\n return this._sendMessageToDevices(requestMessage, req.recipients, req.cancellationTxnId).then(function () {\n if (andResend) {\n // We want to resend, so transition to UNSENT\n return _this6._cryptoStore.updateOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING_AND_WILL_RESEND, { state: ROOM_KEY_REQUEST_STATES.UNSENT });\n }\n return _this6._cryptoStore.deleteOutgoingRoomKeyRequest(req.requestId, ROOM_KEY_REQUEST_STATES.CANCELLATION_PENDING);\n });\n }\n\n // send a RoomKeyRequest to a list of recipients\n\n }, {\n key: '_sendMessageToDevices',\n value: function _sendMessageToDevices(message, recipients, txnId) {\n var contentMap = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(recipients), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var recip = _step.value;\n\n if (!contentMap[recip.userId]) {\n contentMap[recip.userId] = {};\n }\n contentMap[recip.userId][recip.deviceId] = message;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return this._baseApis.sendToDevice('m.room_key_request', contentMap, txnId);\n }\n }]);\n return OutgoingRoomKeyRequestManager;\n}();\n\nexports.default = OutgoingRoomKeyRequestManager;\n\n\nfunction stringifyRequestBody(requestBody) {\n // we assume that the request is for megolm keys, which are identified by\n // room id and session id\n return requestBody.room_id + \" / \" + requestBody.session_id;\n}\n\nfunction stringifyRecipientList(recipients) {\n return '[' + _utils2.default.map(recipients, function (r) {\n return r.userId + ':' + r.deviceId;\n }).join(\",\") + ']';\n}\n//# sourceMappingURL=OutgoingRoomKeyRequestManager.js.map","\"use strict\";\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _initialiseAccount = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(sessionStore, cryptoStore, pickleKey, account) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _bluebird.resolve)(cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n cryptoStore.getAccount(txn, function (pickledAccount) {\n if (pickledAccount !== null) {\n account.unpickle(pickleKey, pickledAccount);\n } else {\n account.create();\n pickledAccount = account.pickle(pickleKey);\n cryptoStore.storeAccount(txn, pickledAccount);\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function _initialiseAccount(_x, _x2, _x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @return {array} The version of Olm.\n */\n\n\nvar _indexeddbCryptoStore = require(\"./store/indexeddb-crypto-store\");\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * olm.js wrapper\n *\n * @module crypto/OlmDevice\n */\nvar Olm = global.Olm; /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nif (!Olm) {\n throw new Error(\"global.Olm is not defined\");\n}\n\n// The maximum size of an event is 65K, and we base64 the content, so this is a\n// reasonable approximation to the biggest plaintext we can encrypt.\nvar MAX_PLAINTEXT_LENGTH = 65536 * 3 / 4;\n\nfunction checkPayloadLength(payloadString) {\n if (payloadString === undefined) {\n throw new Error(\"payloadString undefined\");\n }\n\n if (payloadString.length > MAX_PLAINTEXT_LENGTH) {\n // might as well fail early here rather than letting the olm library throw\n // a cryptic memory allocation error.\n //\n // Note that even if we manage to do the encryption, the message send may fail,\n // because by the time we've wrapped the ciphertext in the event object, it may\n // exceed 65K. But at least we won't just fail with \"abort()\" in that case.\n throw new Error(\"Message too long (\" + payloadString.length + \" bytes). \" + \"The maximum for an encrypted message is \" + MAX_PLAINTEXT_LENGTH + \" bytes.\");\n }\n}\n\n/**\n * The type of object we use for importing and exporting megolm session data.\n *\n * @typedef {Object} module:crypto/OlmDevice.MegolmSessionData\n * @property {String} sender_key Sender's Curve25519 device key\n * @property {String[]} forwarding_curve25519_key_chain Devices which forwarded\n * this session to us (normally empty).\n * @property {Object<string, string>} sender_claimed_keys Other keys the sender claims.\n * @property {String} room_id Room this session is used in\n * @property {String} session_id Unique id for the session\n * @property {String} session_key Base64'ed key data\n */\n\n/**\n * Manages the olm cryptography functions. Each OlmDevice has a single\n * OlmAccount and a number of OlmSessions.\n *\n * Accounts and sessions are kept pickled in a sessionStore.\n *\n * @constructor\n * @alias module:crypto/OlmDevice\n *\n * @param {Object} sessionStore A store to be used for data in end-to-end\n * crypto. This is deprecated and being replaced by cryptoStore.\n * @param {Object} cryptoStore A store for crypto data\n *\n * @property {string} deviceCurve25519Key Curve25519 key for the account\n * @property {string} deviceEd25519Key Ed25519 key for the account\n */\nfunction OlmDevice(sessionStore, cryptoStore) {\n this._sessionStore = sessionStore;\n this._cryptoStore = cryptoStore;\n this._pickleKey = \"DEFAULT_KEY\";\n\n // don't know these until we load the account from storage in init()\n this.deviceCurve25519Key = null;\n this.deviceEd25519Key = null;\n this._maxOneTimeKeys = null;\n\n // we don't bother stashing outboundgroupsessions in the sessionstore -\n // instead we keep them here.\n this._outboundGroupSessionStore = {};\n\n // Store a set of decrypted message indexes for each group session.\n // This partially mitigates a replay attack where a MITM resends a group\n // message into the room.\n //\n // When we decrypt a message and the message index matches a previously\n // decrypted message, one possible cause of that is that we are decrypting\n // the same event, and may not indicate an actual replay attack. For\n // example, this could happen if we receive events, forget about them, and\n // then re-fetch them when we backfill. So we store the event ID and\n // timestamp corresponding to each message index when we first decrypt it,\n // and compare these against the event ID and timestamp every time we use\n // that same index. If they match, then we're probably decrypting the same\n // event and we don't consider it a replay attack.\n //\n // Keys are strings of form \"<senderKey>|<session_id>|<message_index>\"\n // Values are objects of the form \"{id: <event id>, timestamp: <ts>}\"\n this._inboundGroupSessionMessageIndexes = {};\n}\n\n/**\n * Initialise the OlmAccount. This must be called before any other operations\n * on the OlmDevice.\n *\n * Attempts to load the OlmAccount from the crypto store, or creates one if none is\n * found.\n *\n * Reads the device keys from the OlmAccount object.\n */\nOlmDevice.prototype.init = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var e2eKeys, account;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._migrateFromSessionStore());\n\n case 2:\n e2eKeys = void 0;\n account = new Olm.Account();\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(_initialiseAccount(this._sessionStore, this._cryptoStore, this._pickleKey, account));\n\n case 7:\n e2eKeys = JSON.parse(account.identity_keys());\n\n this._maxOneTimeKeys = account.max_number_of_one_time_keys();\n\n case 9:\n _context.prev = 9;\n\n account.free();\n return _context.finish(9);\n\n case 12:\n\n this.deviceCurve25519Key = e2eKeys.curve25519;\n this.deviceEd25519Key = e2eKeys.ed25519;\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[4,, 9, 12]]);\n}));\n\nOlmDevice.getOlmVersion = function () {\n return Olm.get_library_version();\n};\n\nOlmDevice.prototype._migrateFromSessionStore = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this = this;\n\n var sessions, ibGroupSessions, numIbSessions;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this._cryptoStore.getAccount(txn, function (pickledAccount) {\n if (pickledAccount === null) {\n // Migrate from sessionStore\n pickledAccount = _this._sessionStore.getEndToEndAccount();\n if (pickledAccount !== null) {\n console.log(\"Migrating account from session store\");\n _this._cryptoStore.storeAccount(txn, pickledAccount);\n }\n }\n });\n }));\n\n case 2:\n\n // remove the old account now the transaction has completed. Either we've\n // migrated it or decided not to, either way we want to blow away the old data.\n this._sessionStore.removeEndToEndAccount();\n\n // sessions\n sessions = this._sessionStore.getAllEndToEndSessions();\n\n if (!((0, _keys2.default)(sessions).length > 0)) {\n _context3.next = 8;\n break;\n }\n\n _context3.next = 7;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n // Don't migrate sessions from localstorage if we already have sessions\n // in indexeddb, since this means we've already migrated and an old version\n // has run against the same localstorage and created some spurious sessions.\n _this._cryptoStore.countEndToEndSessions(txn, function (count) {\n if (count) {\n console.log(\"Crypto store already has sessions: not migrating\");\n return;\n }\n var numSessions = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(sessions)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var deviceKey = _step.value;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(sessions[deviceKey])), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var sessionId = _step2.value;\n\n numSessions++;\n _this._cryptoStore.storeEndToEndSession(deviceKey, sessionId, sessions[deviceKey][sessionId], txn);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n console.log(\"Migrating \" + numSessions + \" sessions from session store\");\n });\n }));\n\n case 7:\n\n this._sessionStore.removeAllEndToEndSessions();\n\n case 8:\n\n // inbound group sessions\n ibGroupSessions = this._sessionStore.getAllEndToEndInboundGroupSessionKeys();\n\n if (!((0, _keys2.default)(ibGroupSessions).length > 0)) {\n _context3.next = 14;\n break;\n }\n\n numIbSessions = 0;\n _context3.next = 13;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n // We always migrate inbound group sessions, even if we already have some\n // in the new store. They should be be safe to migrate.\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(ibGroupSessions), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var s = _step3.value;\n\n try {\n _this._cryptoStore.addEndToEndInboundGroupSession(s.senderKey, s.sessionId, JSON.parse(_this._sessionStore.getEndToEndInboundGroupSession(s.senderKey, s.sessionId)), txn);\n } catch (e) {\n console.warn(\"Failed to migrate session \" + s.senderKey + \"/\" + s.sessionId + \": \" + e.stack || e);\n }\n ++numIbSessions;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n console.log(\"Migrated \" + numIbSessions + \" inbound group sessions from session store\");\n }));\n\n case 13:\n this._sessionStore.removeAllEndToEndInboundGroupSessions();\n\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n}));\n\n/**\n * extract our OlmAccount from the crypto store and call the given function\n * with the account object\n * The `account` object is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getAccount = function (txn, func) {\n var _this2 = this;\n\n this._cryptoStore.getAccount(txn, function (pickledAccount) {\n var account = new Olm.Account();\n try {\n account.unpickle(_this2._pickleKey, pickledAccount);\n func(account);\n } finally {\n account.free();\n }\n });\n};\n\n/*\n * Saves an account to the crypto store.\n * This function requires a live transaction object from cryptoStore.doTxn()\n * and therefore may only be called in a doTxn() callback.\n *\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {object} Olm.Account object\n * @private\n */\nOlmDevice.prototype._storeAccount = function (txn, account) {\n this._cryptoStore.storeAccount(txn, account.pickle(this._pickleKey));\n};\n\n/**\n * extract an OlmSession from the session store and call the given function\n * The session is useable only within the callback passed to this\n * function and will be freed as soon the callback returns. It is *not*\n * useable for the rest of the lifetime of the transaction.\n *\n * @param {string} deviceKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._getSession = function (deviceKey, sessionId, txn, func) {\n var _this3 = this;\n\n this._cryptoStore.getEndToEndSession(deviceKey, sessionId, txn, function (pickledSession) {\n _this3._unpickleSession(pickledSession, func);\n });\n};\n\n/**\n * Creates a session object from a session pickle and executes the given\n * function with it. The session object is destroyed once the function\n * returns.\n *\n * @param {string} pickledSession\n * @param {function} func\n * @private\n */\nOlmDevice.prototype._unpickleSession = function (pickledSession, func) {\n var session = new Olm.Session();\n try {\n session.unpickle(this._pickleKey, pickledSession);\n func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * store our OlmSession in the session store\n *\n * @param {string} deviceKey\n * @param {OlmSession} session\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @private\n */\nOlmDevice.prototype._saveSession = function (deviceKey, session, txn) {\n var pickledSession = session.pickle(this._pickleKey);\n this._cryptoStore.storeEndToEndSession(deviceKey, session.session_id(), pickledSession, txn);\n};\n\n/**\n * get an OlmUtility and call the given function\n *\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getUtility = function (func) {\n var utility = new Olm.Utility();\n try {\n return func(utility);\n } finally {\n utility.free();\n }\n};\n\n/**\n * Signs a message with the ed25519 key for this account.\n *\n * @param {string} message message to be signed\n * @return {Promise<string>} base64-encoded signature\n */\nOlmDevice.prototype.sign = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(message) {\n var _this4 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n result = void 0;\n _context4.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this4._getAccount(txn, function (account) {\n result = account.sign(message);\n });\n }));\n\n case 3:\n return _context4.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function (_x5) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Get the current (unused, unpublished) one-time keys for this account.\n *\n * @return {object} one time keys; an object with the single property\n * <tt>curve25519</tt>, which is itself an object mapping key id to Curve25519\n * key.\n */\nOlmDevice.prototype.getOneTimeKeys = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5() {\n var _this5 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n result = void 0;\n _context5.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this5._getAccount(txn, function (account) {\n result = JSON.parse(account.one_time_keys());\n });\n }));\n\n case 3:\n return _context5.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this);\n}));\n\n/**\n * Get the maximum number of one-time keys we can store.\n *\n * @return {number} number of keys\n */\nOlmDevice.prototype.maxNumberOfOneTimeKeys = function () {\n return this._maxOneTimeKeys;\n};\n\n/**\n * Marks all of the one-time keys as published.\n */\nOlmDevice.prototype.markKeysAsPublished = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {\n var _this6 = this;\n\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this6._getAccount(txn, function (account) {\n account.mark_keys_as_published();\n _this6._storeAccount(txn, account);\n });\n }));\n\n case 2:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n}));\n\n/**\n * Generate some new one-time keys\n *\n * @param {number} numKeys number of keys to generate\n * @return {Promise} Resolved once the account is saved back having generated the keys\n */\nOlmDevice.prototype.generateOneTimeKeys = function (numKeys) {\n var _this7 = this;\n\n return this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT], function (txn) {\n _this7._getAccount(txn, function (account) {\n account.generate_one_time_keys(numKeys);\n _this7._storeAccount(txn, account);\n });\n });\n};\n\n/**\n * Generate a new outbound session\n *\n * The new session will be stored in the cryptoStore.\n *\n * @param {string} theirIdentityKey remote user's Curve25519 identity key\n * @param {string} theirOneTimeKey remote user's one-time Curve25519 key\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundSession = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(theirIdentityKey, theirOneTimeKey) {\n var _this8 = this;\n\n var newSessionId;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n newSessionId = void 0;\n _context7.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this8._getAccount(txn, function (account) {\n var session = new Olm.Session();\n try {\n session.create_outbound(account, theirIdentityKey, theirOneTimeKey);\n newSessionId = session.session_id();\n _this8._storeAccount(txn, account);\n _this8._saveSession(theirIdentityKey, session, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 3:\n return _context7.abrupt(\"return\", newSessionId);\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function (_x6, _x7) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * Generate a new inbound session, given an incoming message\n *\n * @param {string} theirDeviceIdentityKey remote user's Curve25519 identity key\n * @param {number} messageType messageType field from the received message (must be 0)\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {{payload: string, session_id: string}} decrypted payload, and\n * session id of new session\n *\n * @raises {Error} if the received message was not valid (for instance, it\n * didn't use a valid one-time key).\n */\nOlmDevice.prototype.createInboundSession = function () {\n var _ref8 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(theirDeviceIdentityKey, messageType, ciphertext) {\n var _this9 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context8.next = 2;\n break;\n }\n\n throw new Error(\"Need messageType == 0 to create inbound session\");\n\n case 2:\n result = void 0;\n _context8.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_ACCOUNT, _indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this9._getAccount(txn, function (account) {\n var session = new Olm.Session();\n try {\n session.create_inbound_from(account, theirDeviceIdentityKey, ciphertext);\n account.remove_one_time_keys(session);\n _this9._storeAccount(txn, account);\n\n var payloadString = session.decrypt(messageType, ciphertext);\n\n _this9._saveSession(theirDeviceIdentityKey, session, txn);\n\n result = {\n payload: payloadString,\n session_id: session.session_id()\n };\n } finally {\n session.free();\n }\n });\n }));\n\n case 5:\n return _context8.abrupt(\"return\", result);\n\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function (_x8, _x9, _x10) {\n return _ref8.apply(this, arguments);\n };\n}();\n\n/**\n * Get a list of known session IDs for the given device\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @return {Promise<string[]>} a list of known session ids for the device\n */\nOlmDevice.prototype.getSessionIdsForDevice = function () {\n var _ref9 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(theirDeviceIdentityKey) {\n var _this10 = this;\n\n var sessionIds;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n sessionIds = void 0;\n _context9.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this10._cryptoStore.getEndToEndSessions(theirDeviceIdentityKey, txn, function (sessions) {\n sessionIds = (0, _keys2.default)(sessions);\n });\n }));\n\n case 3:\n return _context9.abrupt(\"return\", sessionIds);\n\n case 4:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function (_x11) {\n return _ref9.apply(this, arguments);\n };\n}();\n\n/**\n * Get the right olm session id for encrypting messages to the given identity key\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @return {Promise<?string>} session id, or null if no established session\n */\nOlmDevice.prototype.getSessionIdForDevice = function () {\n var _ref10 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(theirDeviceIdentityKey) {\n var sessionIds;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return (0, _bluebird.resolve)(this.getSessionIdsForDevice(theirDeviceIdentityKey));\n\n case 2:\n sessionIds = _context10.sent;\n\n if (!(sessionIds.length === 0)) {\n _context10.next = 5;\n break;\n }\n\n return _context10.abrupt(\"return\", null);\n\n case 5:\n // Use the session with the lowest ID.\n sessionIds.sort();\n return _context10.abrupt(\"return\", sessionIds[0]);\n\n case 7:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function (_x12) {\n return _ref10.apply(this, arguments);\n };\n}();\n\n/**\n * Get information on the active Olm sessions for a device.\n * <p>\n * Returns an array, with an entry for each active session. The first entry in\n * the result will be the one used for outgoing messages. Each entry contains\n * the keys 'hasReceivedMessage' (true if the session has received an incoming\n * message and is therefore past the pre-key stage), and 'sessionId'.\n *\n * @param {string} deviceIdentityKey Curve25519 identity key for the device\n * @return {Array.<{sessionId: string, hasReceivedMessage: Boolean}>}\n */\nOlmDevice.prototype.getSessionInfoForDevice = function () {\n var _ref11 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(deviceIdentityKey) {\n var _this11 = this;\n\n var info;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n info = [];\n _context11.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this11._cryptoStore.getEndToEndSessions(deviceIdentityKey, txn, function (sessions) {\n var sessionIds = (0, _keys2.default)(sessions).sort();\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop = function _loop() {\n var sessionId = _step4.value;\n\n _this11._unpickleSession(sessions[sessionId], function (session) {\n info.push({\n hasReceivedMessage: session.has_received_message(),\n sessionId: sessionId\n });\n });\n };\n\n for (var _iterator4 = (0, _getIterator3.default)(sessionIds), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n });\n }));\n\n case 3:\n return _context11.abrupt(\"return\", info);\n\n case 4:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n return function (_x13) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * Encrypt an outgoing message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {Promise<string>} ciphertext\n */\nOlmDevice.prototype.encryptMessage = function () {\n var _ref12 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(theirDeviceIdentityKey, sessionId, payloadString) {\n var _this12 = this;\n\n var res;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n checkPayloadLength(payloadString);\n\n res = void 0;\n _context12.next = 4;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this12._getSession(theirDeviceIdentityKey, sessionId, txn, function (session) {\n res = session.encrypt(payloadString);\n _this12._saveSession(theirDeviceIdentityKey, session, txn);\n });\n }));\n\n case 4:\n return _context12.abrupt(\"return\", res);\n\n case 5:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n return function (_x14, _x15, _x16) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt an incoming message using an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise<string>} decrypted payload.\n */\nOlmDevice.prototype.decryptMessage = function () {\n var _ref13 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this13 = this;\n\n var payloadString;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n payloadString = void 0;\n _context13.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this13._getSession(theirDeviceIdentityKey, sessionId, txn, function (session) {\n payloadString = session.decrypt(messageType, ciphertext);\n _this13._saveSession(theirDeviceIdentityKey, session, txn);\n });\n }));\n\n case 3:\n return _context13.abrupt(\"return\", payloadString);\n\n case 4:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function (_x17, _x18, _x19, _x20) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if an incoming messages is a prekey message matching an existing session\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key for the\n * remote device\n * @param {string} sessionId the id of the active session\n * @param {number} messageType messageType field from the received message\n * @param {string} ciphertext base64-encoded body from the received message\n *\n * @return {Promise<boolean>} true if the received message is a prekey message which matches\n * the given session.\n */\nOlmDevice.prototype.matchesSession = function () {\n var _ref14 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(theirDeviceIdentityKey, sessionId, messageType, ciphertext) {\n var _this14 = this;\n\n var matches;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n if (!(messageType !== 0)) {\n _context14.next = 2;\n break;\n }\n\n return _context14.abrupt(\"return\", false);\n\n case 2:\n matches = void 0;\n _context14.next = 5;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_SESSIONS], function (txn) {\n _this14._getSession(theirDeviceIdentityKey, sessionId, txn, function (session) {\n matches = session.matches_inbound(ciphertext);\n });\n }));\n\n case 5:\n return _context14.abrupt(\"return\", matches);\n\n case 6:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function (_x21, _x22, _x23, _x24) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n// Outbound group session\n// ======================\n\n/**\n * store an OutboundGroupSession in _outboundGroupSessionStore\n *\n * @param {Olm.OutboundGroupSession} session\n * @private\n */\nOlmDevice.prototype._saveOutboundGroupSession = function (session) {\n var pickledSession = session.pickle(this._pickleKey);\n this._outboundGroupSessionStore[session.session_id()] = pickledSession;\n};\n\n/**\n * extract an OutboundGroupSession from _outboundGroupSessionStore and call the\n * given function\n *\n * @param {string} sessionId\n * @param {function} func\n * @return {object} result of func\n * @private\n */\nOlmDevice.prototype._getOutboundGroupSession = function (sessionId, func) {\n var pickled = this._outboundGroupSessionStore[sessionId];\n if (pickled === null) {\n throw new Error(\"Unknown outbound group session \" + sessionId);\n }\n\n var session = new Olm.OutboundGroupSession();\n try {\n session.unpickle(this._pickleKey, pickled);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * Generate a new outbound group session\n *\n * @return {string} sessionId for the outbound session.\n */\nOlmDevice.prototype.createOutboundGroupSession = function () {\n var session = new Olm.OutboundGroupSession();\n try {\n session.create();\n this._saveOutboundGroupSession(session);\n return session.session_id();\n } finally {\n session.free();\n }\n};\n\n/**\n * Encrypt an outgoing message with an outbound group session\n *\n * @param {string} sessionId the id of the outboundgroupsession\n * @param {string} payloadString payload to be encrypted and sent\n *\n * @return {string} ciphertext\n */\nOlmDevice.prototype.encryptGroupMessage = function (sessionId, payloadString) {\n var self = this;\n\n checkPayloadLength(payloadString);\n\n return this._getOutboundGroupSession(sessionId, function (session) {\n var res = session.encrypt(payloadString);\n self._saveOutboundGroupSession(session);\n return res;\n });\n};\n\n/**\n * Get the session keys for an outbound group session\n *\n * @param {string} sessionId the id of the outbound group session\n *\n * @return {{chain_index: number, key: string}} current chain index, and\n * base64-encoded secret key.\n */\nOlmDevice.prototype.getOutboundGroupSessionKey = function (sessionId) {\n return this._getOutboundGroupSession(sessionId, function (session) {\n return {\n chain_index: session.message_index(),\n key: session.session_key()\n };\n });\n};\n\n// Inbound group session\n// =====================\n\n/**\n * data stored in the session store about an inbound group session\n *\n * @typedef {Object} InboundGroupSessionData\n * @property {string} room_Id\n * @property {string} session pickled Olm.InboundGroupSession\n * @property {Object<string, string>} keysClaimed\n * @property {Array<string>} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us (normally empty).\n */\n\n/**\n * Unpickle a session from a sessionData object and invoke the given function.\n * The session is valid only until func returns.\n *\n * @param {Object} sessionData Object describing the session.\n * @param {function(Olm.InboundGroupSession)} func Invoked with the unpickled session\n * @return {*} result of func\n */\nOlmDevice.prototype._unpickleInboundGroupSession = function (sessionData, func) {\n var session = new Olm.InboundGroupSession();\n try {\n session.unpickle(this._pickleKey, sessionData.session);\n return func(session);\n } finally {\n session.free();\n }\n};\n\n/**\n * extract an InboundGroupSession from the crypto store and call the given function\n *\n * @param {string} roomId The room ID to extract the session for, or null to fetch\n * sessions for any room.\n * @param {string} senderKey\n * @param {string} sessionId\n * @param {*} txn Opaque transaction object from cryptoStore.doTxn()\n * @param {function(Olm.InboundGroupSession, InboundGroupSessionData)} func\n * function to call.\n *\n * @private\n */\nOlmDevice.prototype._getInboundGroupSession = function (roomId, senderKey, sessionId, txn, func) {\n var _this15 = this;\n\n this._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n func(null);\n return;\n }\n\n // if we were given a room ID, check that the it matches the original one for the session. This stops\n // the HS pretending a message was targeting a different room.\n if (roomId !== null && roomId !== sessionData.room_id) {\n throw new Error(\"Mismatched room_id for inbound group session (expected \" + sessionData.room_id + \", was \" + roomId + \")\");\n }\n\n _this15._unpickleInboundGroupSession(sessionData, function (session) {\n func(session, sessionData);\n });\n });\n};\n\n/**\n * Add an inbound group session to the session store\n *\n * @param {string} roomId room in which this session will be used\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {Array<string>} forwardingCurve25519KeyChain Devices involved in forwarding\n * this session to us.\n * @param {string} sessionId session identifier\n * @param {string} sessionKey base64-encoded secret key\n * @param {Object<string, string>} keysClaimed Other keys the sender claims.\n * @param {boolean} exportFormat true if the megolm keys are in export format\n * (ie, they lack an ed25519 signature)\n */\nOlmDevice.prototype.addInboundGroupSession = function () {\n var _ref15 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(roomId, senderKey, forwardingCurve25519KeyChain, sessionId, sessionKey, keysClaimed, exportFormat) {\n var _this16 = this;\n\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n /* if we already have this session, consider updating it */\n _this16._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (existingSession, existingSessionData) {\n if (existingSession) {\n console.log(\"Update for megolm session \" + senderKey + \"/\" + sessionId);\n // for now we just ignore updates. TODO: implement something here\n return;\n }\n\n // new session.\n var session = new Olm.InboundGroupSession();\n try {\n if (exportFormat) {\n session.import_session(sessionKey);\n } else {\n session.create(sessionKey);\n }\n if (sessionId != session.session_id()) {\n throw new Error(\"Mismatched group session ID from senderKey: \" + senderKey);\n }\n\n var sessionData = {\n room_id: roomId,\n session: session.pickle(_this16._pickleKey),\n keysClaimed: keysClaimed,\n forwardingCurve25519KeyChain: forwardingCurve25519KeyChain\n };\n\n _this16._cryptoStore.addEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n } finally {\n session.free();\n }\n });\n }));\n\n case 2:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n return function (_x25, _x26, _x27, _x28, _x29, _x30, _x31) {\n return _ref15.apply(this, arguments);\n };\n}();\n\n/**\n * Decrypt a received message with an inbound group session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} body base64-encoded body of the encrypted message\n * @param {string} eventId ID of the event being decrypted\n * @param {Number} timestamp timestamp of the event being decrypted\n *\n * @return {null} the sessionId is unknown\n *\n * @return {Promise<{result: string, senderKey: string,\n * forwardingCurve25519KeyChain: Array<string>,\n * keysClaimed: Object<string, string>}>}\n */\nOlmDevice.prototype.decryptGroupMessage = function () {\n var _ref16 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(roomId, senderKey, sessionId, body, eventId, timestamp) {\n var _this17 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n result = void 0;\n _context16.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this17._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n var res = session.decrypt(body);\n\n var plaintext = res.plaintext;\n if (plaintext === undefined) {\n // Compatibility for older olm versions.\n plaintext = res;\n } else {\n // Check if we have seen this message index before to detect replay attacks.\n // If the event ID and timestamp are specified, and the match the event ID\n // and timestamp from the last time we used this message index, then we\n // don't consider it a replay attack.\n var messageIndexKey = senderKey + \"|\" + sessionId + \"|\" + res.message_index;\n if (messageIndexKey in _this17._inboundGroupSessionMessageIndexes) {\n var msgInfo = _this17._inboundGroupSessionMessageIndexes[messageIndexKey];\n if (msgInfo.id !== eventId || msgInfo.timestamp !== timestamp) {\n throw new Error(\"Duplicate message index, possible replay attack: \" + messageIndexKey);\n }\n }\n _this17._inboundGroupSessionMessageIndexes[messageIndexKey] = {\n id: eventId,\n timestamp: timestamp\n };\n }\n\n sessionData.session = session.pickle(_this17._pickleKey);\n _this17._cryptoStore.storeEndToEndInboundGroupSession(senderKey, sessionId, sessionData, txn);\n result = {\n result: plaintext,\n keysClaimed: sessionData.keysClaimed || {},\n senderKey: senderKey,\n forwardingCurve25519KeyChain: sessionData.forwardingCurve25519KeyChain || []\n };\n });\n }));\n\n case 3:\n return _context16.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n return function (_x32, _x33, _x34, _x35, _x36, _x37) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * Determine if we have the keys for a given megolm session\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {sring} sessionId session identifier\n *\n * @returns {Promise<boolean>} true if we have the keys to this session\n */\nOlmDevice.prototype.hasInboundSessionKeys = function () {\n var _ref17 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(roomId, senderKey, sessionId) {\n var _this18 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n result = void 0;\n _context17.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this18._cryptoStore.getEndToEndInboundGroupSession(senderKey, sessionId, txn, function (sessionData) {\n if (sessionData === null) {\n result = false;\n return;\n }\n\n if (roomId !== sessionData.room_id) {\n console.warn(\"requested keys for inbound group session \" + senderKey + \"|\" + (sessionId + \", with incorrect room_id \") + (\"(expected \" + sessionData.room_id + \", \") + (\"was \" + roomId + \")\"));\n result = false;\n } else {\n result = true;\n }\n });\n }));\n\n case 3:\n return _context17.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function (_x38, _x39, _x40) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * Extract the keys to a given megolm session, for sharing\n *\n * @param {string} roomId room in which the message was received\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n *\n * @returns {Promise<{chain_index: number, key: string,\n * forwarding_curve25519_key_chain: Array<string>,\n * sender_claimed_ed25519_key: string\n * }>}\n * details of the session key. The key is a base64-encoded megolm key in\n * export format.\n */\nOlmDevice.prototype.getInboundGroupSessionKey = function () {\n var _ref18 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(roomId, senderKey, sessionId) {\n var _this19 = this;\n\n var result;\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n result = void 0;\n _context18.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn('readonly', [_indexeddbCryptoStore2.default.STORE_INBOUND_GROUP_SESSIONS], function (txn) {\n _this19._getInboundGroupSession(roomId, senderKey, sessionId, txn, function (session, sessionData) {\n if (session === null) {\n result = null;\n return;\n }\n var messageIndex = session.first_known_index();\n\n var claimedKeys = sessionData.keysClaimed || {};\n var senderEd25519Key = claimedKeys.ed25519 || null;\n\n result = {\n \"chain_index\": messageIndex,\n \"key\": session.export_session(messageIndex),\n \"forwarding_curve25519_key_chain\": sessionData.forwardingCurve25519KeyChain || [],\n \"sender_claimed_ed25519_key\": senderEd25519Key\n };\n });\n }));\n\n case 3:\n return _context18.abrupt(\"return\", result);\n\n case 4:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n return function (_x41, _x42, _x43) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * Export an inbound group session\n *\n * @param {string} senderKey base64-encoded curve25519 key of the sender\n * @param {string} sessionId session identifier\n * @param {string} sessionData The session object from the store\n * @return {module:crypto/OlmDevice.MegolmSessionData} exported session data\n */\nOlmDevice.prototype.exportInboundGroupSession = function (senderKey, sessionId, sessionData) {\n return this._unpickleInboundGroupSession(sessionData, function (session) {\n var messageIndex = session.first_known_index();\n\n return {\n \"sender_key\": senderKey,\n \"sender_claimed_keys\": sessionData.keysClaimed,\n \"room_id\": sessionData.room_id,\n \"session_id\": sessionId,\n \"session_key\": session.export_session(messageIndex),\n \"forwarding_curve25519_key_chain\": session.forwardingCurve25519KeyChain || []\n };\n });\n};\n\n// Utilities\n// =========\n\n/**\n * Verify an ed25519 signature.\n *\n * @param {string} key ed25519 key\n * @param {string} message message which was signed\n * @param {string} signature base64-encoded signature to be checked\n *\n * @raises {Error} if there is a problem with the verification. If the key was\n * too small then the message will be \"OLM.INVALID_BASE64\". If the signature\n * was invalid then the message will be \"OLM.BAD_MESSAGE_MAC\".\n */\nOlmDevice.prototype.verifySignature = function (key, message, signature) {\n this._getUtility(function (util) {\n util.ed25519_verify(key, message, signature);\n });\n};\n\n/** */\nmodule.exports = OlmDevice;\n//# sourceMappingURL=OlmDevice.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/algorithms\n */\n\nvar base = require(\"./base\");\n\nrequire(\"./olm\");\nrequire(\"./megolm\");\n\n/**\n * @see module:crypto/algorithms/base.ENCRYPTION_CLASSES\n */\nmodule.exports.ENCRYPTION_CLASSES = base.ENCRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DECRYPTION_CLASSES\n */\nmodule.exports.DECRYPTION_CLASSES = base.DECRYPTION_CLASSES;\n\n/**\n * @see module:crypto/algorithms/base.DecryptionError\n */\nmodule.exports.DecryptionError = base.DecryptionError;\n//# sourceMappingURL=index.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/olm\n */\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar DeviceInfo = require(\"../deviceinfo\");\nvar DeviceVerification = DeviceInfo.DeviceVerification;\n\nvar base = require(\"./base\");\n\n/**\n * Olm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction OlmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n this._sessionPrepared = false;\n this._prepPromise = null;\n}\nutils.inherits(OlmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n\n * @param {string[]} roomMembers list of currently-joined users in the room\n * @return {module:client.Promise} Promise which resolves when setup is complete\n */\nOlmEncryption.prototype._ensureSession = function (roomMembers) {\n if (this._prepPromise) {\n // prep already in progress\n return this._prepPromise;\n }\n\n if (this._sessionPrepared) {\n // prep already done\n return _bluebird2.default.resolve();\n }\n\n var self = this;\n this._prepPromise = self._crypto.downloadKeys(roomMembers).then(function (res) {\n return self._crypto.ensureOlmSessionsForUsers(roomMembers);\n }).then(function () {\n self._sessionPrepared = true;\n }).finally(function () {\n self._prepPromise = null;\n });\n return this._prepPromise;\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nOlmEncryption.prototype.encryptMessage = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(room, eventType, content) {\n var members, users, self, payloadFields, encryptedContent, promises, i, userId, devices, j, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context.sent;\n users = utils.map(members, function (u) {\n return u.userId;\n });\n self = this;\n _context.next = 7;\n return (0, _bluebird.resolve)(this._ensureSession(users));\n\n case 7:\n payloadFields = {\n room_id: room.roomId,\n type: eventType,\n content: content\n };\n encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n promises = [];\n i = 0;\n\n case 11:\n if (!(i < users.length)) {\n _context.next = 29;\n break;\n }\n\n userId = users[i];\n devices = self._crypto.getStoredDevicesForUser(userId);\n j = 0;\n\n case 15:\n if (!(j < devices.length)) {\n _context.next = 26;\n break;\n }\n\n deviceInfo = devices[j];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 20;\n break;\n }\n\n return _context.abrupt(\"continue\", 23);\n\n case 20:\n if (!(deviceInfo.verified == DeviceVerification.BLOCKED)) {\n _context.next = 22;\n break;\n }\n\n return _context.abrupt(\"continue\", 23);\n\n case 22:\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, self._userId, self._deviceId, self._olmDevice, userId, deviceInfo, payloadFields));\n\n case 23:\n ++j;\n _context.next = 15;\n break;\n\n case 26:\n ++i;\n _context.next = 11;\n break;\n\n case 29:\n _context.next = 31;\n return (0, _bluebird.resolve)(_bluebird2.default.all(promises).return(encryptedContent));\n\n case 31:\n return _context.abrupt(\"return\", _context.sent);\n\n case 32:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function (_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Olm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction OlmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n}\nutils.inherits(OlmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting. Rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nOlmDecryption.prototype.decryptEvent = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(event) {\n var content, deviceKey, ciphertext, message, payloadString, payload, claimedKeys;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n content = event.getWireContent();\n deviceKey = content.sender_key;\n ciphertext = content.ciphertext;\n\n if (ciphertext) {\n _context2.next = 5;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_MISSING_CIPHERTEXT\", \"Missing ciphertext\");\n\n case 5:\n if (this._olmDevice.deviceCurve25519Key in ciphertext) {\n _context2.next = 7;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_NOT_INCLUDED_IN_RECIPIENTS\", \"Not included in recipients\");\n\n case 7:\n message = ciphertext[this._olmDevice.deviceCurve25519Key];\n payloadString = void 0;\n _context2.prev = 9;\n _context2.next = 12;\n return (0, _bluebird.resolve)(this._decryptMessage(deviceKey, message));\n\n case 12:\n payloadString = _context2.sent;\n _context2.next = 18;\n break;\n\n case 15:\n _context2.prev = 15;\n _context2.t0 = _context2[\"catch\"](9);\n throw new base.DecryptionError(\"OLM_BAD_ENCRYPTED_MESSAGE\", \"Bad Encrypted Message\", {\n sender: deviceKey,\n err: _context2.t0\n });\n\n case 18:\n payload = JSON.parse(payloadString);\n\n // check that we were the intended recipient, to avoid unknown-key attack\n // https://github.com/vector-im/vector-web/issues/2483\n\n if (!(payload.recipient != this._userId)) {\n _context2.next = 21;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT\", \"Message was intented for \" + payload.recipient);\n\n case 21:\n if (!(payload.recipient_keys.ed25519 != this._olmDevice.deviceEd25519Key)) {\n _context2.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_RECIPIENT_KEY\", \"Message not intended for this device\", {\n intended: payload.recipient_keys.ed25519,\n our_key: this._olmDevice.deviceEd25519Key\n });\n\n case 23:\n if (!(payload.sender != event.getSender())) {\n _context2.next = 25;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_FORWARDED_MESSAGE\", \"Message forwarded from \" + payload.sender, {\n reported_sender: event.getSender()\n });\n\n case 25:\n if (!(payload.room_id !== event.getRoomId())) {\n _context2.next = 27;\n break;\n }\n\n throw new base.DecryptionError(\"OLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id, {\n reported_room: event.room_id\n });\n\n case 27:\n claimedKeys = payload.keys || {};\n return _context2.abrupt(\"return\", {\n clearEvent: payload,\n senderCurve25519Key: deviceKey,\n claimedEd25519Key: claimedKeys.ed25519 || null\n });\n\n case 29:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[9, 15]]);\n }));\n\n return function (_x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * Attempt to decrypt an Olm message\n *\n * @param {string} theirDeviceIdentityKey Curve25519 identity key of the sender\n * @param {object} message message object, with 'type' and 'body' fields\n *\n * @return {string} payload, if decrypted successfully.\n */\nOlmDecryption.prototype._decryptMessage = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(theirDeviceIdentityKey, message) {\n var sessionIds, decryptionErrors, i, sessionId, payload, foundSession, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getSessionIdsForDevice(theirDeviceIdentityKey));\n\n case 2:\n sessionIds = _context3.sent;\n\n\n // try each session in turn.\n decryptionErrors = {};\n i = 0;\n\n case 5:\n if (!(i < sessionIds.length)) {\n _context3.next = 26;\n break;\n }\n\n sessionId = sessionIds[i];\n _context3.prev = 7;\n _context3.next = 10;\n return (0, _bluebird.resolve)(this._olmDevice.decryptMessage(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 10:\n payload = _context3.sent;\n\n console.log(\"Decrypted Olm message from \" + theirDeviceIdentityKey + \" with session \" + sessionId);\n return _context3.abrupt(\"return\", payload);\n\n case 15:\n _context3.prev = 15;\n _context3.t0 = _context3[\"catch\"](7);\n _context3.next = 19;\n return (0, _bluebird.resolve)(this._olmDevice.matchesSession(theirDeviceIdentityKey, sessionId, message.type, message.body));\n\n case 19:\n foundSession = _context3.sent;\n\n if (!foundSession) {\n _context3.next = 22;\n break;\n }\n\n throw new Error(\"Error decrypting prekey message with existing session id \" + sessionId + \": \" + _context3.t0.message);\n\n case 22:\n\n // otherwise it's probably a message for another session; carry on, but\n // keep a record of the error\n decryptionErrors[sessionId] = _context3.t0.message;\n\n case 23:\n i++;\n _context3.next = 5;\n break;\n\n case 26:\n if (!(message.type !== 0)) {\n _context3.next = 30;\n break;\n }\n\n if (!(sessionIds.length === 0)) {\n _context3.next = 29;\n break;\n }\n\n throw new Error(\"No existing sessions\");\n\n case 29:\n throw new Error(\"Error decrypting non-prekey message with existing sessions: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 30:\n\n // prekey message which doesn't match any existing sessions: make a new\n // session.\n\n res = void 0;\n _context3.prev = 31;\n _context3.next = 34;\n return (0, _bluebird.resolve)(this._olmDevice.createInboundSession(theirDeviceIdentityKey, message.type, message.body));\n\n case 34:\n res = _context3.sent;\n _context3.next = 41;\n break;\n\n case 37:\n _context3.prev = 37;\n _context3.t1 = _context3[\"catch\"](31);\n\n decryptionErrors[\"(new)\"] = _context3.t1.message;\n throw new Error(\"Error decrypting prekey message: \" + (0, _stringify2.default)(decryptionErrors));\n\n case 41:\n\n console.log(\"created new inbound Olm session ID \" + res.session_id + \" with \" + theirDeviceIdentityKey);\n return _context3.abrupt(\"return\", res.payload);\n\n case 43:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[7, 15], [31, 37]]);\n }));\n\n return function (_x5, _x6) {\n return _ref3.apply(this, arguments);\n };\n}();\n\nbase.registerAlgorithm(olmlib.OLM_ALGORITHM, OlmEncryption, OlmDecryption);\n//# sourceMappingURL=olm.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * Defines m.olm encryption/decryption\n *\n * @module crypto/algorithms/megolm\n */\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\nvar olmlib = require(\"../olmlib\");\nvar base = require(\"./base\");\n\n/**\n * @private\n * @constructor\n *\n * @param {string} sessionId\n *\n * @property {string} sessionId\n * @property {Number} useCount number of times this session has been used\n * @property {Number} creationTime when the session was created (ms since the epoch)\n *\n * @property {object} sharedWithDevices\n * devices with which we have shared the session key\n * userId -> {deviceId -> msgindex}\n */\nfunction OutboundSessionInfo(sessionId) {\n this.sessionId = sessionId;\n this.useCount = 0;\n this.creationTime = new Date().getTime();\n this.sharedWithDevices = {};\n}\n\n/**\n * Check if it's time to rotate the session\n *\n * @param {Number} rotationPeriodMsgs\n * @param {Number} rotationPeriodMs\n * @return {Boolean}\n */\nOutboundSessionInfo.prototype.needsRotation = function (rotationPeriodMsgs, rotationPeriodMs) {\n var sessionLifetime = new Date().getTime() - this.creationTime;\n\n if (this.useCount >= rotationPeriodMsgs || sessionLifetime >= rotationPeriodMs) {\n console.log(\"Rotating megolm session after \" + this.useCount + \" messages, \" + sessionLifetime + \"ms\");\n return true;\n }\n\n return false;\n};\n\nOutboundSessionInfo.prototype.markSharedWithDevice = function (userId, deviceId, chainIndex) {\n if (!this.sharedWithDevices[userId]) {\n this.sharedWithDevices[userId] = {};\n }\n this.sharedWithDevices[userId][deviceId] = chainIndex;\n};\n\n/**\n * Determine if this session has been shared with devices which it shouldn't\n * have been.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n *\n * @return {Boolean} true if we have shared the session with devices which aren't\n * in devicesInRoom.\n */\nOutboundSessionInfo.prototype.sharedWithTooManyDevices = function (devicesInRoom) {\n for (var userId in this.sharedWithDevices) {\n if (!this.sharedWithDevices.hasOwnProperty(userId)) {\n continue;\n }\n\n if (!devicesInRoom.hasOwnProperty(userId)) {\n console.log(\"Starting new session because we shared with \" + userId);\n return true;\n }\n\n for (var deviceId in this.sharedWithDevices[userId]) {\n if (!this.sharedWithDevices[userId].hasOwnProperty(deviceId)) {\n continue;\n }\n\n if (!devicesInRoom[userId].hasOwnProperty(deviceId)) {\n console.log(\"Starting new session because we shared with \" + userId + \":\" + deviceId);\n return true;\n }\n }\n }\n};\n\n/**\n * Megolm encryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.EncryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.EncryptionAlgorithm}\n */\nfunction MegolmEncryption(params) {\n base.EncryptionAlgorithm.call(this, params);\n\n // the most recent attempt to set up a session. This is used to serialise\n // the session setups, so that we have a race-free view of which session we\n // are using, and which devices we have shared the keys with. It resolves\n // with an OutboundSessionInfo (or undefined, for the first message in the\n // room).\n this._setupPromise = _bluebird2.default.resolve();\n\n // default rotation periods\n this._sessionRotationPeriodMsgs = 100;\n this._sessionRotationPeriodMs = 7 * 24 * 3600 * 1000;\n\n if (params.config.rotation_period_ms !== undefined) {\n this._sessionRotationPeriodMs = params.config.rotation_period_ms;\n }\n\n if (params.config.rotation_period_msgs !== undefined) {\n this._sessionRotationPeriodMsgs = params.config.rotation_period_msgs;\n }\n}\nutils.inherits(MegolmEncryption, base.EncryptionAlgorithm);\n\n/**\n * @private\n *\n * @param {Object} devicesInRoom The devices in this room, indexed by user ID\n *\n * @return {module:client.Promise} Promise which resolves to the\n * OutboundSessionInfo when setup is complete.\n */\nMegolmEncryption.prototype._ensureOutboundSession = function (devicesInRoom) {\n\n // takes the previous OutboundSessionInfo, and considers whether to create\n // a new one. Also shares the key with any (new) devices in the room.\n // Updates `session` to hold the final OutboundSessionInfo.\n //\n // returns a promise which resolves once the keyshare is successful.\n var prepareSession = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(oldSession) {\n var shareMap, userId, userDevices, deviceId, deviceInfo, key;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n session = oldSession;\n\n // need to make a brand new session?\n if (session && session.needsRotation(self._sessionRotationPeriodMsgs, self._sessionRotationPeriodMs)) {\n console.log(\"Starting new megolm session because we need to rotate.\");\n session = null;\n }\n\n // determine if we have shared with anyone we shouldn't have\n if (session && session.sharedWithTooManyDevices(devicesInRoom)) {\n session = null;\n }\n\n if (session) {\n _context.next = 8;\n break;\n }\n\n console.log(\"Starting new megolm session for room \" + self._roomId);\n _context.next = 7;\n return (0, _bluebird.resolve)(self._prepareNewSession());\n\n case 7:\n session = _context.sent;\n\n case 8:\n\n // now check if we need to share with any devices\n shareMap = {};\n _context.t0 = _regenerator2.default.keys(devicesInRoom);\n\n case 10:\n if ((_context.t1 = _context.t0()).done) {\n _context.next = 29;\n break;\n }\n\n userId = _context.t1.value;\n\n if (devicesInRoom.hasOwnProperty(userId)) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt(\"continue\", 10);\n\n case 14:\n userDevices = devicesInRoom[userId];\n _context.t2 = _regenerator2.default.keys(userDevices);\n\n case 16:\n if ((_context.t3 = _context.t2()).done) {\n _context.next = 27;\n break;\n }\n\n deviceId = _context.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context.next = 20;\n break;\n }\n\n return _context.abrupt(\"continue\", 16);\n\n case 20:\n deviceInfo = userDevices[deviceId];\n key = deviceInfo.getIdentityKey();\n\n if (!(key == self._olmDevice.deviceCurve25519Key)) {\n _context.next = 24;\n break;\n }\n\n return _context.abrupt(\"continue\", 16);\n\n case 24:\n\n if (!session.sharedWithDevices[userId] || session.sharedWithDevices[userId][deviceId] === undefined) {\n shareMap[userId] = shareMap[userId] || [];\n shareMap[userId].push(deviceInfo);\n }\n _context.next = 16;\n break;\n\n case 27:\n _context.next = 10;\n break;\n\n case 29:\n return _context.abrupt(\"return\", self._shareKeyWithDevices(session, shareMap));\n\n case 30:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function prepareSession(_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n // helper which returns the session prepared by prepareSession\n\n\n var self = this;\n\n var session = void 0;function returnSession() {\n return session;\n }\n\n // first wait for the previous share to complete\n var prom = this._setupPromise.then(prepareSession);\n\n // _setupPromise resolves to `session` whether or not the share succeeds\n this._setupPromise = prom.then(returnSession, returnSession);\n\n // but we return a promise which only resolves if the share was successful.\n return prom.then(returnSession);\n};\n\n/**\n * @private\n *\n * @return {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n */\nMegolmEncryption.prototype._prepareNewSession = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var sessionId, key;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n sessionId = this._olmDevice.createOutboundGroupSession();\n key = this._olmDevice.getOutboundGroupSessionKey(sessionId);\n _context2.next = 4;\n return (0, _bluebird.resolve)(this._olmDevice.addInboundGroupSession(this._roomId, this._olmDevice.deviceCurve25519Key, [], sessionId, key.key, { ed25519: this._olmDevice.deviceEd25519Key }));\n\n case 4:\n return _context2.abrupt(\"return\", new OutboundSessionInfo(sessionId));\n\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n}));\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object<userId, deviceId>} devicemap\n * mapping from userId to deviceId to {@link module:crypto~OlmSessionResult}\n *\n * @param {object<string, module:crypto/deviceinfo[]>} devicesByUser\n * map from userid to list of devices\n *\n * @return {array<object<userid, deviceInfo>>}\n */\nMegolmEncryption.prototype._splitUserDeviceMap = function (session, chainIndex, devicemap, devicesByUser) {\n var maxToDeviceMessagesPerRequest = 20;\n\n // use an array where the slices of a content map gets stored\n var mapSlices = [];\n var currentSliceId = 0; // start inserting in the first slice\n var entriesInCurrentSlice = 0;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _keys2.default)(devicesByUser)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var userId = _step.value;\n\n var devicesToShareWith = devicesByUser[userId];\n var sessionResults = devicemap[userId];\n\n for (var i = 0; i < devicesToShareWith.length; i++) {\n var deviceInfo = devicesToShareWith[i];\n var deviceId = deviceInfo.deviceId;\n\n var sessionResult = sessionResults[deviceId];\n if (!sessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // we could send them a to_device message anyway, as a\n // signal that they have missed out on the key sharing\n // message because of the lack of keys, but there's not\n // much point in that really; it will mostly serve to clog\n // up to_device inboxes.\n\n // mark this device as \"handled\" because we don't want to try\n // to claim a one-time-key for dead devices on every message.\n session.markSharedWithDevice(userId, deviceId, chainIndex);\n\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n continue;\n }\n\n console.log(\"share keys with device \" + userId + \":\" + deviceId);\n\n if (entriesInCurrentSlice > maxToDeviceMessagesPerRequest) {\n // the current slice is filled up. Start inserting into the next slice\n entriesInCurrentSlice = 0;\n currentSliceId++;\n }\n if (!mapSlices[currentSliceId]) {\n mapSlices[currentSliceId] = [];\n }\n\n mapSlices[currentSliceId].push({\n userId: userId,\n deviceInfo: deviceInfo\n });\n\n entriesInCurrentSlice++;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return mapSlices;\n};\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {number} chainIndex current chain index\n *\n * @param {object<userId, deviceInfo>} userDeviceMap\n * mapping from userId to deviceInfo\n *\n * @param {object} payload fields to include in the encrypted payload\n *\n * @return {module:client.Promise} Promise which resolves once the key sharing\n * for the given userDeviceMap is generated and has been sent.\n */\nMegolmEncryption.prototype._encryptAndSendKeysToDevices = function (session, chainIndex, userDeviceMap, payload) {\n var _this = this;\n\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: this._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n var contentMap = {};\n\n var promises = [];\n for (var i = 0; i < userDeviceMap.length; i++) {\n var val = userDeviceMap[i];\n var userId = val.userId;\n var deviceInfo = val.deviceInfo;\n var deviceId = deviceInfo.deviceId;\n\n if (!contentMap[userId]) {\n contentMap[userId] = {};\n }\n contentMap[userId][deviceId] = encryptedContent;\n\n promises.push(olmlib.encryptMessageForDevice(encryptedContent.ciphertext, this._userId, this._deviceId, this._olmDevice, userId, deviceInfo, payload));\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this._baseApis.sendToDevice(\"m.room.encrypted\", contentMap).then(function () {\n // store that we successfully uploaded the keys of the current slice\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(contentMap)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _userId = _step2.value;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(contentMap[_userId])), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _deviceId = _step3.value;\n\n session.markSharedWithDevice(_userId, _deviceId, chainIndex);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n });\n });\n};\n\n/**\n * @private\n *\n * @param {module:crypto/algorithms/megolm.OutboundSessionInfo} session\n *\n * @param {object<string, module:crypto/deviceinfo[]>} devicesByUser\n * map from userid to list of devices\n */\nMegolmEncryption.prototype._shareKeyWithDevices = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(session, devicesByUser) {\n var key, payload, devicemap, userDeviceMaps, i;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n key = this._olmDevice.getOutboundGroupSessionKey(session.sessionId);\n payload = {\n type: \"m.room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: this._roomId,\n session_id: session.sessionId,\n session_key: key.key,\n chain_index: key.chain_index\n }\n };\n _context3.next = 4;\n return (0, _bluebird.resolve)(olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, devicesByUser));\n\n case 4:\n devicemap = _context3.sent;\n userDeviceMaps = this._splitUserDeviceMap(session, key.chain_index, devicemap, devicesByUser);\n i = 0;\n\n case 7:\n if (!(i < userDeviceMaps.length)) {\n _context3.next = 21;\n break;\n }\n\n _context3.prev = 8;\n _context3.next = 11;\n return (0, _bluebird.resolve)(this._encryptAndSendKeysToDevices(session, key.chain_index, userDeviceMaps[i], payload));\n\n case 11:\n console.log(\"Completed megolm keyshare in \" + this._roomId + \" \" + (\"(slice \" + (i + 1) + \"/\" + userDeviceMaps.length + \")\"));\n _context3.next = 18;\n break;\n\n case 14:\n _context3.prev = 14;\n _context3.t0 = _context3[\"catch\"](8);\n\n console.log(\"megolm keyshare in \" + this._roomId + \" \" + (\"(slice \" + (i + 1) + \"/\" + userDeviceMaps.length + \") failed\"));\n\n throw _context3.t0;\n\n case 18:\n i++;\n _context3.next = 7;\n break;\n\n case 21:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this, [[8, 14]]);\n }));\n\n return function (_x2, _x3) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:models/room} room\n * @param {string} eventType\n * @param {object} content plaintext event content\n *\n * @return {module:client.Promise} Promise which resolves to the new event body\n */\nMegolmEncryption.prototype.encryptMessage = function (room, eventType, content) {\n var self = this;\n console.log(\"Starting to encrypt event for \" + this._roomId);\n\n return this._getDevicesInRoom(room).then(function (devicesInRoom) {\n // check if any of these devices are not yet known to the user.\n // if so, warn the user so they can verify or ignore.\n self._checkForUnknownDevices(devicesInRoom);\n\n return self._ensureOutboundSession(devicesInRoom);\n }).then(function (session) {\n var payloadJson = {\n room_id: self._roomId,\n type: eventType,\n content: content\n };\n\n var ciphertext = self._olmDevice.encryptGroupMessage(session.sessionId, (0, _stringify2.default)(payloadJson));\n\n var encryptedContent = {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n sender_key: self._olmDevice.deviceCurve25519Key,\n ciphertext: ciphertext,\n session_id: session.sessionId,\n // Include our device ID so that recipients can send us a\n // m.new_device message if they don't have our session key.\n // XXX: Do we still need this now that m.new_device messages\n // no longer exist since #483?\n device_id: self._deviceId\n };\n\n session.useCount++;\n return encryptedContent;\n });\n};\n\n/**\n * Forces the current outbound group session to be discarded such\n * that another one will be created next time an event is sent.\n *\n * This should not normally be necessary.\n */\nMegolmEncryption.prototype.forceDiscardSession = function () {\n this._setupPromise = this._setupPromise.then(function () {\n return null;\n });\n};\n\n/**\n * Checks the devices we're about to send to and see if any are entirely\n * unknown to the user. If so, warn the user, and mark them as known to\n * give the user a chance to go verify them before re-sending this message.\n *\n * @param {Object} devicesInRoom userId -> {deviceId -> object}\n * devices we should shared the session with.\n */\nMegolmEncryption.prototype._checkForUnknownDevices = function (devicesInRoom) {\n var unknownDevices = {};\n\n (0, _keys2.default)(devicesInRoom).forEach(function (userId) {\n (0, _keys2.default)(devicesInRoom[userId]).forEach(function (deviceId) {\n var device = devicesInRoom[userId][deviceId];\n if (device.isUnverified() && !device.isKnown()) {\n if (!unknownDevices[userId]) {\n unknownDevices[userId] = {};\n }\n unknownDevices[userId][deviceId] = device;\n }\n });\n });\n\n if ((0, _keys2.default)(unknownDevices).length) {\n // it'd be kind to pass unknownDevices up to the user in this error\n throw new base.UnknownDeviceError(\"This room contains unknown devices which have not been verified. \" + \"We strongly recommend you verify them before continuing.\", unknownDevices);\n }\n};\n\n/**\n * Get the list of unblocked devices for all users in the room\n *\n * @param {module:models/room} room\n *\n * @return {module:client.Promise} Promise which resolves to a map\n * from userId to deviceId to deviceInfo\n */\nMegolmEncryption.prototype._getDevicesInRoom = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(room) {\n var members, roomMembers, isBlacklisting, devices, userId, userDevices, deviceId;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _bluebird.resolve)(room.getEncryptionTargetMembers());\n\n case 2:\n members = _context4.sent;\n roomMembers = utils.map(members, function (u) {\n return u.userId;\n });\n\n // The global value is treated as a default for when rooms don't specify a value.\n\n isBlacklisting = this._crypto.getGlobalBlacklistUnverifiedDevices();\n\n if (typeof room.getBlacklistUnverifiedDevices() === 'boolean') {\n isBlacklisting = room.getBlacklistUnverifiedDevices();\n }\n\n // We are happy to use a cached version here: we assume that if we already\n // have a list of the user's devices, then we already share an e2e room\n // with them, which means that they will have announced any new devices via\n // device_lists in their /sync response. This cache should then be maintained\n // using all the device_lists changes and left fields.\n // See https://github.com/vector-im/riot-web/issues/2305 for details.\n _context4.next = 8;\n return (0, _bluebird.resolve)(this._crypto.downloadKeys(roomMembers, false));\n\n case 8:\n devices = _context4.sent;\n _context4.t0 = _regenerator2.default.keys(devices);\n\n case 10:\n if ((_context4.t1 = _context4.t0()).done) {\n _context4.next = 25;\n break;\n }\n\n userId = _context4.t1.value;\n\n if (devices.hasOwnProperty(userId)) {\n _context4.next = 14;\n break;\n }\n\n return _context4.abrupt(\"continue\", 10);\n\n case 14:\n userDevices = devices[userId];\n _context4.t2 = _regenerator2.default.keys(userDevices);\n\n case 16:\n if ((_context4.t3 = _context4.t2()).done) {\n _context4.next = 23;\n break;\n }\n\n deviceId = _context4.t3.value;\n\n if (userDevices.hasOwnProperty(deviceId)) {\n _context4.next = 20;\n break;\n }\n\n return _context4.abrupt(\"continue\", 16);\n\n case 20:\n\n if (userDevices[deviceId].isBlocked() || userDevices[deviceId].isUnverified() && isBlacklisting) {\n delete userDevices[deviceId];\n }\n _context4.next = 16;\n break;\n\n case 23:\n _context4.next = 10;\n break;\n\n case 25:\n return _context4.abrupt(\"return\", devices);\n\n case 26:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Megolm decryption implementation\n *\n * @constructor\n * @extends {module:crypto/algorithms/base.DecryptionAlgorithm}\n *\n * @param {object} params parameters, as per\n * {@link module:crypto/algorithms/base.DecryptionAlgorithm}\n */\nfunction MegolmDecryption(params) {\n base.DecryptionAlgorithm.call(this, params);\n\n // events which we couldn't decrypt due to unknown sessions / indexes: map from\n // senderKey|sessionId to Set of MatrixEvents\n this._pendingEvents = {};\n\n // this gets stubbed out by the unit tests.\n this.olmlib = olmlib;\n}\nutils.inherits(MegolmDecryption, base.DecryptionAlgorithm);\n\n/**\n * @inheritdoc\n *\n * @param {MatrixEvent} event\n *\n * returns a promise which resolves to a\n * {@link module:crypto~EventDecryptionResult} once we have finished\n * decrypting, or rejects with an `algorithms.DecryptionError` if there is a\n * problem decrypting the event.\n */\nMegolmDecryption.prototype.decryptEvent = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(event) {\n var content, res, errorCode, payload;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n content = event.getWireContent();\n\n if (!(!content.sender_key || !content.session_id || !content.ciphertext)) {\n _context5.next = 3;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_MISSING_FIELDS\", \"Missing fields in input\");\n\n case 3:\n\n // we add the event to the pending list *before* we start decryption.\n //\n // then, if the key turns up while decryption is in progress (and\n // decryption fails), we will schedule a retry.\n // (fixes https://github.com/vector-im/riot-web/issues/5001)\n this._addEventToPendingList(event);\n\n res = void 0;\n _context5.prev = 5;\n _context5.next = 8;\n return (0, _bluebird.resolve)(this._olmDevice.decryptGroupMessage(event.getRoomId(), content.sender_key, content.session_id, content.ciphertext, event.getId(), event.getTs()));\n\n case 8:\n res = _context5.sent;\n _context5.next = 16;\n break;\n\n case 11:\n _context5.prev = 11;\n _context5.t0 = _context5[\"catch\"](5);\n errorCode = \"OLM_DECRYPT_GROUP_MESSAGE_ERROR\";\n\n\n if (_context5.t0.message === 'OLM.UNKNOWN_MESSAGE_INDEX') {\n this._requestKeysForEvent(event);\n\n errorCode = 'OLM_UNKNOWN_MESSAGE_INDEX';\n }\n\n throw new base.DecryptionError(errorCode, _context5.t0.toString(), {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 16:\n if (!(res === null)) {\n _context5.next = 19;\n break;\n }\n\n // We've got a message for a session we don't have.\n //\n // (XXX: We might actually have received this key since we started\n // decrypting, in which case we'll have scheduled a retry, and this\n // request will be redundant. We could probably check to see if the\n // event is still in the pending list; if not, a retry will have been\n // scheduled, so we needn't send out the request here.)\n this._requestKeysForEvent(event);\n throw new base.DecryptionError(\"MEGOLM_UNKNOWN_INBOUND_SESSION_ID\", \"The sender's device has not sent us the keys for this message.\", {\n session: content.sender_key + '|' + content.session_id\n });\n\n case 19:\n\n // success. We can remove the event from the pending list, if that hasn't\n // already happened.\n this._removeEventFromPendingList(event);\n\n payload = JSON.parse(res.result);\n\n // belt-and-braces check that the room id matches that indicated by the HS\n // (this is somewhat redundant, since the megolm session is scoped to the\n // room, so neither the sender nor a MITM can lie about the room_id).\n\n if (!(payload.room_id !== event.getRoomId())) {\n _context5.next = 23;\n break;\n }\n\n throw new base.DecryptionError(\"MEGOLM_BAD_ROOM\", \"Message intended for room \" + payload.room_id);\n\n case 23:\n return _context5.abrupt(\"return\", {\n clearEvent: payload,\n senderCurve25519Key: res.senderKey,\n claimedEd25519Key: res.keysClaimed.ed25519,\n forwardingCurve25519KeyChain: res.forwardingCurve25519KeyChain\n });\n\n case 24:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, this, [[5, 11]]);\n }));\n\n return function (_x5) {\n return _ref5.apply(this, arguments);\n };\n}();\n\nMegolmDecryption.prototype._requestKeysForEvent = function (event) {\n var sender = event.getSender();\n var wireContent = event.getWireContent();\n\n // send the request to all of our own devices, and the\n // original sending device if it wasn't us.\n var recipients = [{\n userId: this._userId, deviceId: '*'\n }];\n if (sender != this._userId) {\n recipients.push({\n userId: sender, deviceId: wireContent.device_id\n });\n }\n\n this._crypto.requestRoomKey({\n room_id: event.getRoomId(),\n algorithm: wireContent.algorithm,\n sender_key: wireContent.sender_key,\n session_id: wireContent.session_id\n }, recipients);\n};\n\n/**\n * Add an event to the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._addEventToPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n this._pendingEvents[k] = new _set2.default();\n }\n this._pendingEvents[k].add(event);\n};\n\n/**\n * Remove an event from the list of those awaiting their session keys.\n *\n * @private\n *\n * @param {module:models/event.MatrixEvent} event\n */\nMegolmDecryption.prototype._removeEventFromPendingList = function (event) {\n var content = event.getWireContent();\n var k = content.sender_key + \"|\" + content.session_id;\n if (!this._pendingEvents[k]) {\n return;\n }\n\n this._pendingEvents[k].delete(event);\n if (this._pendingEvents[k].size === 0) {\n delete this._pendingEvents[k];\n }\n};\n\n/**\n * @inheritdoc\n *\n * @param {module:models/event.MatrixEvent} event key event\n */\nMegolmDecryption.prototype.onRoomKeyEvent = function (event) {\n var _this2 = this;\n\n var content = event.getContent();\n var sessionId = content.session_id;\n var senderKey = event.getSenderKey();\n var forwardingKeyChain = [];\n var exportFormat = false;\n var keysClaimed = void 0;\n\n if (!content.room_id || !sessionId || !content.session_key) {\n console.error(\"key event is missing fields\");\n return;\n }\n\n if (!senderKey) {\n console.error(\"key event has no sender key (not encrypted?)\");\n return;\n }\n\n if (event.getType() == \"m.forwarded_room_key\") {\n exportFormat = true;\n forwardingKeyChain = content.forwarding_curve25519_key_chain;\n if (!utils.isArray(forwardingKeyChain)) {\n forwardingKeyChain = [];\n }\n\n // copy content before we modify it\n forwardingKeyChain = forwardingKeyChain.slice();\n forwardingKeyChain.push(senderKey);\n\n senderKey = content.sender_key;\n if (!senderKey) {\n console.error(\"forwarded_room_key event is missing sender_key field\");\n return;\n }\n\n var ed25519Key = content.sender_claimed_ed25519_key;\n if (!ed25519Key) {\n console.error(\"forwarded_room_key_event is missing sender_claimed_ed25519_key field\");\n return;\n }\n\n keysClaimed = {\n ed25519: ed25519Key\n };\n } else {\n keysClaimed = event.getKeysClaimed();\n }\n\n console.log(\"Adding key for megolm session \" + senderKey + \"|\" + sessionId);\n this._olmDevice.addInboundGroupSession(content.room_id, senderKey, forwardingKeyChain, sessionId, content.session_key, keysClaimed, exportFormat).then(function () {\n // cancel any outstanding room key requests for this session\n _this2._crypto.cancelRoomKeyRequest({\n algorithm: content.algorithm,\n room_id: content.room_id,\n session_id: content.session_id,\n sender_key: senderKey\n });\n\n // have another go at decrypting events sent with this session.\n _this2._retryDecryption(senderKey, sessionId);\n }).catch(function (e) {\n console.error(\"Error handling m.room_key_event: \" + e);\n });\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.hasKeysForKeyRequest = function (keyRequest) {\n var body = keyRequest.requestBody;\n\n return this._olmDevice.hasInboundSessionKeys(body.room_id, body.sender_key, body.session_id\n // TODO: ratchet index\n );\n};\n\n/**\n * @inheritdoc\n */\nMegolmDecryption.prototype.shareKeysWithDevice = function (keyRequest) {\n var _this3 = this;\n\n var userId = keyRequest.userId;\n var deviceId = keyRequest.deviceId;\n var deviceInfo = this._crypto.getStoredDevice(userId, deviceId);\n var body = keyRequest.requestBody;\n\n this.olmlib.ensureOlmSessionsForDevices(this._olmDevice, this._baseApis, (0, _defineProperty3.default)({}, userId, [deviceInfo])).then(function (devicemap) {\n var olmSessionResult = devicemap[userId][deviceId];\n if (!olmSessionResult.sessionId) {\n // no session with this device, probably because there\n // were no one-time keys.\n //\n // ensureOlmSessionsForUsers has already done the logging,\n // so just skip it.\n return null;\n }\n\n console.log(\"sharing keys for session \" + body.sender_key + \"|\" + body.session_id + \" with device \" + userId + \":\" + deviceId);\n\n return _this3._buildKeyForwardingMessage(body.room_id, body.sender_key, body.session_id);\n }).then(function (payload) {\n var encryptedContent = {\n algorithm: olmlib.OLM_ALGORITHM,\n sender_key: _this3._olmDevice.deviceCurve25519Key,\n ciphertext: {}\n };\n\n return _this3.olmlib.encryptMessageForDevice(encryptedContent.ciphertext, _this3._userId, _this3._deviceId, _this3._olmDevice, userId, deviceInfo, payload).then(function () {\n var contentMap = (0, _defineProperty3.default)({}, userId, (0, _defineProperty3.default)({}, deviceId, encryptedContent));\n\n // TODO: retries\n return _this3._baseApis.sendToDevice(\"m.room.encrypted\", contentMap);\n });\n }).done();\n};\n\nMegolmDecryption.prototype._buildKeyForwardingMessage = function () {\n var _ref6 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(roomId, senderKey, sessionId) {\n var key;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return (0, _bluebird.resolve)(this._olmDevice.getInboundGroupSessionKey(roomId, senderKey, sessionId));\n\n case 2:\n key = _context6.sent;\n return _context6.abrupt(\"return\", {\n type: \"m.forwarded_room_key\",\n content: {\n algorithm: olmlib.MEGOLM_ALGORITHM,\n room_id: roomId,\n sender_key: senderKey,\n sender_claimed_ed25519_key: key.sender_claimed_ed25519_key,\n session_id: sessionId,\n session_key: key.key,\n chain_index: key.chain_index,\n forwarding_curve25519_key_chain: key.forwarding_curve25519_key_chain\n }\n });\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function (_x6, _x7, _x8) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * @inheritdoc\n *\n * @param {module:crypto/OlmDevice.MegolmSessionData} session\n */\nMegolmDecryption.prototype.importRoomKey = function (session) {\n var _this4 = this;\n\n return this._olmDevice.addInboundGroupSession(session.room_id, session.sender_key, session.forwarding_curve25519_key_chain, session.session_id, session.session_key, session.sender_claimed_keys, true).then(function () {\n // have another go at decrypting events sent with this session.\n _this4._retryDecryption(session.sender_key, session.session_id);\n });\n};\n\n/**\n * Have another go at decrypting events after we receive a key\n *\n * @private\n * @param {String} senderKey\n * @param {String} sessionId\n */\nMegolmDecryption.prototype._retryDecryption = function (senderKey, sessionId) {\n var k = senderKey + \"|\" + sessionId;\n var pending = this._pendingEvents[k];\n if (!pending) {\n return;\n }\n\n delete this._pendingEvents[k];\n\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = (0, _getIterator3.default)(pending), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var ev = _step4.value;\n\n ev.attemptDecryption(this._crypto);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n};\n\nbase.registerAlgorithm(olmlib.MEGOLM_ALGORITHM, MegolmEncryption, MegolmDecryption);\n//# sourceMappingURL=megolm.js.map","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module crypto/DeviceList\n *\n * Manages the list of other users' devices\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _updateStoredDeviceKeysForUser = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(_olmDevice, userId, userStore, userResult) {\n var updated, deviceId, _deviceId, deviceResult;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n updated = false;\n\n // remove any devices in the store which aren't in the response\n\n _context3.t0 = _regenerator2.default.keys(userStore);\n\n case 2:\n if ((_context3.t1 = _context3.t0()).done) {\n _context3.next = 9;\n break;\n }\n\n deviceId = _context3.t1.value;\n\n if (userStore.hasOwnProperty(deviceId)) {\n _context3.next = 6;\n break;\n }\n\n return _context3.abrupt('continue', 2);\n\n case 6:\n\n if (!(deviceId in userResult)) {\n console.log(\"Device \" + userId + \":\" + deviceId + \" has been removed\");\n delete userStore[deviceId];\n updated = true;\n }\n _context3.next = 2;\n break;\n\n case 9:\n _context3.t2 = _regenerator2.default.keys(userResult);\n\n case 10:\n if ((_context3.t3 = _context3.t2()).done) {\n _context3.next = 27;\n break;\n }\n\n _deviceId = _context3.t3.value;\n\n if (userResult.hasOwnProperty(_deviceId)) {\n _context3.next = 14;\n break;\n }\n\n return _context3.abrupt('continue', 10);\n\n case 14:\n deviceResult = userResult[_deviceId];\n\n // check that the user_id and device_id in the response object are\n // correct\n\n if (!(deviceResult.user_id !== userId)) {\n _context3.next = 18;\n break;\n }\n\n console.warn(\"Mismatched user_id \" + deviceResult.user_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 18:\n if (!(deviceResult.device_id !== _deviceId)) {\n _context3.next = 21;\n break;\n }\n\n console.warn(\"Mismatched device_id \" + deviceResult.device_id + \" in keys from \" + userId + \":\" + _deviceId);\n return _context3.abrupt('continue', 10);\n\n case 21:\n _context3.next = 23;\n return (0, _bluebird.resolve)(_storeDeviceKeys(_olmDevice, userStore, deviceResult));\n\n case 23:\n if (!_context3.sent) {\n _context3.next = 25;\n break;\n }\n\n updated = true;\n\n case 25:\n _context3.next = 10;\n break;\n\n case 27:\n return _context3.abrupt('return', updated);\n\n case 28:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function _updateStoredDeviceKeysForUser(_x4, _x5, _x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/*\n * Process a device in a /query response, and add it to the userStore\n *\n * returns (a promise for) true if a change was made, else false\n */\n\n\nvar _storeDeviceKeys = function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(_olmDevice, userStore, deviceResult) {\n var deviceId, userId, signKeyId, signKey, unsigned, deviceStore;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (deviceResult.keys) {\n _context4.next = 2;\n break;\n }\n\n return _context4.abrupt('return', false);\n\n case 2:\n deviceId = deviceResult.device_id;\n userId = deviceResult.user_id;\n signKeyId = \"ed25519:\" + deviceId;\n signKey = deviceResult.keys[signKeyId];\n\n if (signKey) {\n _context4.next = 9;\n break;\n }\n\n console.warn(\"Device \" + userId + \":\" + deviceId + \" has no ed25519 key\");\n return _context4.abrupt('return', false);\n\n case 9:\n unsigned = deviceResult.unsigned || {};\n _context4.prev = 10;\n _context4.next = 13;\n return (0, _bluebird.resolve)(_olmlib2.default.verifySignature(_olmDevice, deviceResult, userId, deviceId, signKey));\n\n case 13:\n _context4.next = 19;\n break;\n\n case 15:\n _context4.prev = 15;\n _context4.t0 = _context4['catch'](10);\n\n console.warn(\"Unable to verify signature on device \" + userId + \":\" + deviceId + \":\" + _context4.t0);\n return _context4.abrupt('return', false);\n\n case 19:\n\n // DeviceInfo\n deviceStore = void 0;\n\n if (!(deviceId in userStore)) {\n _context4.next = 27;\n break;\n }\n\n // already have this device.\n deviceStore = userStore[deviceId];\n\n if (!(deviceStore.getFingerprint() != signKey)) {\n _context4.next = 25;\n break;\n }\n\n // this should only happen if the list has been MITMed; we are\n // best off sticking with the original keys.\n //\n // Should we warn the user about it somehow?\n console.warn(\"Ed25519 key for device \" + userId + \":\" + deviceId + \" has changed\");\n return _context4.abrupt('return', false);\n\n case 25:\n _context4.next = 28;\n break;\n\n case 27:\n userStore[deviceId] = deviceStore = new _deviceinfo2.default(deviceId);\n\n case 28:\n\n deviceStore.keys = deviceResult.keys || {};\n deviceStore.algorithms = deviceResult.algorithms || [];\n deviceStore.unsigned = unsigned;\n return _context4.abrupt('return', true);\n\n case 32:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this, [[10, 15]]);\n }));\n\n return function _storeDeviceKeys(_x8, _x9, _x10) {\n return _ref5.apply(this, arguments);\n };\n}();\n\nvar _deviceinfo = require('./deviceinfo');\n\nvar _deviceinfo2 = _interopRequireDefault(_deviceinfo);\n\nvar _olmlib = require('./olmlib');\n\nvar _olmlib2 = _interopRequireDefault(_olmlib);\n\nvar _indexeddbCryptoStore = require('./store/indexeddb-crypto-store');\n\nvar _indexeddbCryptoStore2 = _interopRequireDefault(_indexeddbCryptoStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* State transition diagram for DeviceList._deviceTrackingStatus\n *\n * |\n * stopTrackingDeviceList V\n * +---------------------> NOT_TRACKED\n * | |\n * +<--------------------+ | startTrackingDeviceList\n * | | V\n * | +-------------> PENDING_DOWNLOAD <--------------------+-+\n * | | ^ | | |\n * | | restart download | | start download | | invalidateUserDeviceList\n * | | client failed | | | |\n * | | | V | |\n * | +------------ DOWNLOAD_IN_PROGRESS -------------------+ |\n * | | | |\n * +<-------------------+ | download successful |\n * ^ V |\n * +----------------------- UP_TO_DATE ------------------------+\n */\n\n// constants for DeviceList._deviceTrackingStatus\nvar TRACKING_STATUS_NOT_TRACKED = 0;\nvar TRACKING_STATUS_PENDING_DOWNLOAD = 1;\nvar TRACKING_STATUS_DOWNLOAD_IN_PROGRESS = 2;\nvar TRACKING_STATUS_UP_TO_DATE = 3;\n\n/**\n * @alias module:crypto/DeviceList\n */\n\nvar DeviceList = function () {\n function DeviceList(baseApis, cryptoStore, sessionStore, olmDevice) {\n (0, _classCallCheck3.default)(this, DeviceList);\n\n this._cryptoStore = cryptoStore;\n this._sessionStore = sessionStore;\n\n // userId -> {\n // deviceId -> {\n // [device info]\n // }\n // }\n this._devices = {};\n\n // which users we are tracking device status for.\n // userId -> TRACKING_STATUS_*\n this._deviceTrackingStatus = {}; // loaded from storage in load()\n\n // The 'next_batch' sync token at the point the data was writen,\n // ie. a token representing the point immediately after the\n // moment represented by the snapshot in the db.\n this._syncToken = null;\n\n this._serialiser = new DeviceListUpdateSerialiser(baseApis, olmDevice, this);\n\n // userId -> promise\n this._keyDownloadsInProgressByUser = {};\n\n // Set whenever changes are made other than setting the sync token\n this._dirty = false;\n\n // Promise resolved when device data is saved\n this._savePromise = null;\n // Function that resolves the save promise\n this._resolveSavePromise = null;\n // The time the save is scheduled for\n this._savePromiseTime = null;\n // The timer used to delay the save\n this._saveTimer = null;\n }\n\n /**\n * Load the device tracking state from storage\n */\n\n\n (0, _createClass3.default)(DeviceList, [{\n key: 'load',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var shouldDeleteSessionStore, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, u;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n shouldDeleteSessionStore = false;\n _context.next = 3;\n return (0, _bluebird.resolve)(this._cryptoStore.doTxn(\n // migrate from session store if there's data there and not here\n 'readwrite', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this._cryptoStore.getEndToEndDeviceData(txn, function (deviceData) {\n if (deviceData === null) {\n console.log(\"Migrating e2e device data...\");\n _this._devices = _this._sessionStore.getAllEndToEndDevices() || {};\n _this._deviceTrackingStatus = _this._sessionStore.getEndToEndDeviceTrackingStatus() || {};\n _this._syncToken = _this._sessionStore.getEndToEndDeviceSyncToken();\n _this._cryptoStore.storeEndToEndDeviceData({\n devices: _this._devices,\n trackingStatus: _this._deviceTrackingStatus,\n syncToken: _this._syncToken\n }, txn);\n shouldDeleteSessionStore = true;\n } else {\n _this._devices = deviceData ? deviceData.devices : {}, _this._deviceTrackingStatus = deviceData ? deviceData.trackingStatus : {};\n _this._syncToken = deviceData ? deviceData.syncToken : null;\n }\n });\n }));\n\n case 3:\n\n if (shouldDeleteSessionStore) {\n // migrated data is now safely persisted: remove from old store\n this._sessionStore.removeEndToEndDeviceData();\n }\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context.prev = 7;\n for (_iterator = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n u = _step.value;\n\n // if a download was in progress when we got shut down, it isn't any more.\n if (this._deviceTrackingStatus[u] == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n this._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n _context.next = 15;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context['catch'](7);\n _didIteratorError = true;\n _iteratorError = _context.t0;\n\n case 15:\n _context.prev = 15;\n _context.prev = 16;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 18:\n _context.prev = 18;\n\n if (!_didIteratorError) {\n _context.next = 21;\n break;\n }\n\n throw _iteratorError;\n\n case 21:\n return _context.finish(18);\n\n case 22:\n return _context.finish(15);\n\n case 23:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 11, 15, 23], [16,, 18, 22]]);\n }));\n\n function load() {\n return _ref.apply(this, arguments);\n }\n\n return load;\n }()\n\n /**\n * Save the device tracking state to storage, if any changes are\n * pending other than updating the sync token\n *\n * The actual save will be delayed by a short amount of time to\n * aggregate multiple writes to the database.\n *\n * @param {integer} delay Time in ms before which the save actually happens.\n * By default, the save is delayed for a short period in order to batch\n * multiple writes, but this behaviour can be disabled by passing 0.\n *\n * @return {Promise<bool>} true if the data was saved, false if\n * it was not (eg. because no changes were pending). The promise\n * will only resolve once the data is saved, so may take some time\n * to resolve.\n */\n\n }, {\n key: 'saveIfDirty',\n value: function () {\n var _ref2 = (0, _bluebird.method)(function (delay) {\n var _this2 = this;\n\n if (!this._dirty) return _bluebird2.default.resolve(false);\n // Delay saves for a bit so we can aggregate multiple saves that happen\n // in quick succession (eg. when a whole room's devices are marked as known)\n if (delay === undefined) delay = 500;\n\n var targetTime = Date.now + delay;\n if (this._savePromiseTime && targetTime < this._savePromiseTime) {\n // There's a save scheduled but for after we would like: cancel\n // it & schedule one for the time we want\n clearTimeout(this._saveTimer);\n this._saveTimer = null;\n this._savePromiseTime = null;\n // (but keep the save promise since whatever called save before\n // will still want to know when the save is done)\n }\n\n var savePromise = this._savePromise;\n if (savePromise === null) {\n savePromise = new _bluebird2.default(function (resolve, reject) {\n _this2._resolveSavePromise = resolve;\n });\n this._savePromise = savePromise;\n }\n\n if (this._saveTimer === null) {\n var resolveSavePromise = this._resolveSavePromise;\n this._savePromiseTime = targetTime;\n this._saveTimer = setTimeout(function () {\n console.log('Saving device tracking data at token ' + _this2._syncToken);\n // null out savePromise now (after the delay but before the write),\n // otherwise we could return the existing promise when the save has\n // actually already happened. Likewise for the dirty flag.\n _this2._savePromiseTime = null;\n _this2._saveTimer = null;\n _this2._savePromise = null;\n _this2._resolveSavePromise = null;\n\n _this2._dirty = false;\n _this2._cryptoStore.doTxn('readwrite', [_indexeddbCryptoStore2.default.STORE_DEVICE_DATA], function (txn) {\n _this2._cryptoStore.storeEndToEndDeviceData({\n devices: _this2._devices,\n trackingStatus: _this2._deviceTrackingStatus,\n syncToken: _this2._syncToken\n }, txn);\n }).then(function () {\n resolveSavePromise();\n });\n }, delay);\n }\n return savePromise;\n });\n\n function saveIfDirty(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return saveIfDirty;\n }()\n\n /**\n * Gets the sync token last set with setSyncToken\n *\n * @return {string} The sync token\n */\n\n }, {\n key: 'getSyncToken',\n value: function getSyncToken() {\n return this._syncToken;\n }\n\n /**\n * Sets the sync token that the app will pass as the 'since' to the /sync\n * endpoint next time it syncs.\n * The sync token must always be set after any changes made as a result of\n * data in that sync since setting the sync token to a newer one will mean\n * those changed will not be synced from the server if a new client starts\n * up with that data.\n *\n * @param {string} st The sync token\n */\n\n }, {\n key: 'setSyncToken',\n value: function setSyncToken(st) {\n this._syncToken = st;\n }\n\n /**\n * Ensures up to date keys for a list of users are stored in the session store,\n * downloading and storing them if they're not (or if forceDownload is\n * true).\n * @param {Array} userIds The users to fetch.\n * @param {bool} forceDownload Always download the keys even if cached.\n *\n * @return {Promise} A promise which resolves to a map userId->deviceId->{@link\n * module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: 'downloadKeys',\n value: function downloadKeys(userIds, forceDownload) {\n var _this3 = this;\n\n var usersToDownload = [];\n var promises = [];\n\n userIds.forEach(function (u) {\n var trackingStatus = _this3._deviceTrackingStatus[u];\n if (_this3._keyDownloadsInProgressByUser[u]) {\n // already a key download in progress/queued for this user; its results\n // will be good enough for us.\n console.log('downloadKeys: already have a download in progress for ' + (u + ': awaiting its result'));\n promises.push(_this3._keyDownloadsInProgressByUser[u]);\n } else if (forceDownload || trackingStatus != TRACKING_STATUS_UP_TO_DATE) {\n usersToDownload.push(u);\n }\n });\n\n if (usersToDownload.length != 0) {\n console.log(\"downloadKeys: downloading for\", usersToDownload);\n var downloadPromise = this._doKeyDownload(usersToDownload);\n promises.push(downloadPromise);\n }\n\n if (promises.length === 0) {\n console.log(\"downloadKeys: already have all necessary keys\");\n }\n\n return _bluebird2.default.all(promises).then(function () {\n return _this3._getDevicesFromStore(userIds);\n });\n }\n\n /**\n * Get the stored device keys for a list of user ids\n *\n * @param {string[]} userIds the list of users to list keys for.\n *\n * @return {Object} userId->deviceId->{@link module:crypto/deviceinfo|DeviceInfo}.\n */\n\n }, {\n key: '_getDevicesFromStore',\n value: function _getDevicesFromStore(userIds) {\n var stored = {};\n var self = this;\n userIds.map(function (u) {\n stored[u] = {};\n var devices = self.getStoredDevicesForUser(u) || [];\n devices.map(function (dev) {\n stored[u][dev.deviceId] = dev;\n });\n });\n return stored;\n }\n\n /**\n * Get the stored device keys for a user id\n *\n * @param {string} userId the user to list keys for.\n *\n * @return {module:crypto/deviceinfo[]|null} list of devices, or null if we haven't\n * managed to get a list of devices for this user yet.\n */\n\n }, {\n key: 'getStoredDevicesForUser',\n value: function getStoredDevicesForUser(userId) {\n var devs = this._devices[userId];\n if (!devs) {\n return null;\n }\n var res = [];\n for (var deviceId in devs) {\n if (devs.hasOwnProperty(deviceId)) {\n res.push(_deviceinfo2.default.fromStorage(devs[deviceId], deviceId));\n }\n }\n return res;\n }\n\n /**\n * Get the stored device data for a user, in raw object form\n *\n * @param {string} userId the user to get data for\n *\n * @return {Object} deviceId->{object} devices, or undefined if\n * there is no data for this user.\n */\n\n }, {\n key: 'getRawStoredDevicesForUser',\n value: function getRawStoredDevicesForUser(userId) {\n return this._devices[userId];\n }\n\n /**\n * Get the stored keys for a single device\n *\n * @param {string} userId\n * @param {string} deviceId\n *\n * @return {module:crypto/deviceinfo?} device, or undefined\n * if we don't know about this device\n */\n\n }, {\n key: 'getStoredDevice',\n value: function getStoredDevice(userId, deviceId) {\n var devs = this._devices[userId];\n if (!devs || !devs[deviceId]) {\n return undefined;\n }\n return _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n }\n\n /**\n * Find a device by curve25519 identity key\n *\n * @param {string} userId owner of the device\n * @param {string} algorithm encryption algorithm\n * @param {string} senderKey curve25519 key to match\n *\n * @return {module:crypto/deviceinfo?}\n */\n\n }, {\n key: 'getDeviceByIdentityKey',\n value: function getDeviceByIdentityKey(userId, algorithm, senderKey) {\n if (algorithm !== _olmlib2.default.OLM_ALGORITHM && algorithm !== _olmlib2.default.MEGOLM_ALGORITHM) {\n // we only deal in olm keys\n return null;\n }\n\n var devices = this._devices[userId];\n if (!devices) {\n return null;\n }\n\n for (var deviceId in devices) {\n if (!devices.hasOwnProperty(deviceId)) {\n continue;\n }\n\n var device = devices[deviceId];\n for (var keyId in device.keys) {\n if (!device.keys.hasOwnProperty(keyId)) {\n continue;\n }\n if (keyId.indexOf(\"curve25519:\") !== 0) {\n continue;\n }\n var deviceKey = device.keys[keyId];\n if (deviceKey == senderKey) {\n return _deviceinfo2.default.fromStorage(device, deviceId);\n }\n }\n }\n\n // doesn't match a known device\n return null;\n }\n\n /**\n * Replaces the list of devices for a user with the given device list\n *\n * @param {string} u The user ID\n * @param {Object} devs New device info for user\n */\n\n }, {\n key: 'storeDevicesForUser',\n value: function storeDevicesForUser(u, devs) {\n this._devices[u] = devs;\n this._dirty = true;\n }\n\n /**\n * flag the given user for device-list tracking, if they are not already.\n *\n * This will mean that a subsequent call to refreshOutdatedDeviceLists()\n * will download the device list for the user, and that subsequent calls to\n * invalidateUserDeviceList will trigger more updates.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'startTrackingDeviceList',\n value: function startTrackingDeviceList(userId) {\n // sanity-check the userId. This is mostly paranoia, but if synapse\n // can't parse the userId we give it as an mxid, it 500s the whole\n // request and we can never update the device lists again (because\n // the broken userId is always 'invalid' and always included in any\n // refresh request).\n // By checking it is at least a string, we can eliminate a class of\n // silly errors.\n if (typeof userId !== 'string') {\n throw new Error('userId must be a string; was ' + userId);\n }\n if (!this._deviceTrackingStatus[userId]) {\n console.log('Now tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n\n /**\n * Mark the given user as no longer being tracked for device-list updates.\n *\n * This won't affect any in-progress downloads, which will still go on to\n * complete; it will just mean that we don't think that we have an up-to-date\n * list for future calls to downloadKeys.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'stopTrackingDeviceList',\n value: function stopTrackingDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n console.log('No longer tracking device list for ' + userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * Set all users we're currently tracking to untracked\n *\n * This will flag each user whose devices we are tracking as in need of an\n * update.\n */\n\n }, {\n key: 'stopTrackingAllDeviceLists',\n value: function stopTrackingAllDeviceLists() {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var userId = _step2.value;\n\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_NOT_TRACKED;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n this._dirty = true;\n }\n\n /**\n * Mark the cached device list for the given user outdated.\n *\n * If we are not tracking this user's devices, we'll do nothing. Otherwise\n * we flag the user as needing an update.\n *\n * This doesn't actually set off an update, so that several users can be\n * batched together. Call refreshOutdatedDeviceLists() for that.\n *\n * @param {String} userId\n */\n\n }, {\n key: 'invalidateUserDeviceList',\n value: function invalidateUserDeviceList(userId) {\n if (this._deviceTrackingStatus[userId]) {\n console.log(\"Marking device list outdated for\", userId);\n this._deviceTrackingStatus[userId] = TRACKING_STATUS_PENDING_DOWNLOAD;\n\n // we don't yet persist the tracking status, since there may be a lot\n // of calls; we save all data together once the sync is done\n this._dirty = true;\n }\n }\n\n /**\n * If we have users who have outdated device lists, start key downloads for them\n *\n * @returns {Promise} which completes when the download completes; normally there\n * is no need to wait for this (it's mostly for the unit tests).\n */\n\n }, {\n key: 'refreshOutdatedDeviceLists',\n value: function refreshOutdatedDeviceLists() {\n this.saveIfDirty();\n\n var usersToDownload = [];\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)((0, _keys2.default)(this._deviceTrackingStatus)), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var userId = _step3.value;\n\n var stat = this._deviceTrackingStatus[userId];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n usersToDownload.push(userId);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return this._doKeyDownload(usersToDownload);\n }\n\n /**\n * Set the stored device data for a user, in raw object form\n * Used only by internal class DeviceListUpdateSerialiser\n *\n * @param {string} userId the user to get data for\n *\n * @param {Object} devices deviceId->{object} the new devices\n */\n\n }, {\n key: '_setRawStoredDevicesForUser',\n value: function _setRawStoredDevicesForUser(userId, devices) {\n this._devices[userId] = devices;\n }\n\n /**\n * Fire off download update requests for the given users, and update the\n * device list tracking status for them, and the\n * _keyDownloadsInProgressByUser map for them.\n *\n * @param {String[]} users list of userIds\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n }, {\n key: '_doKeyDownload',\n value: function _doKeyDownload(users) {\n var _this4 = this;\n\n if (users.length === 0) {\n // nothing to do\n return _bluebird2.default.resolve();\n }\n\n var prom = this._serialiser.updateDevicesForUsers(users, this._syncToken).then(function () {\n finished(true);\n }, function (e) {\n console.error('Error downloading keys for ' + users + \":\", e);\n finished(false);\n throw e;\n });\n\n users.forEach(function (u) {\n _this4._keyDownloadsInProgressByUser[u] = prom;\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_PENDING_DOWNLOAD) {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_DOWNLOAD_IN_PROGRESS;\n }\n });\n\n var finished = function finished(success) {\n users.forEach(function (u) {\n _this4._dirty = true;\n\n // we may have queued up another download request for this user\n // since we started this request. If that happens, we should\n // ignore the completion of the first one.\n if (_this4._keyDownloadsInProgressByUser[u] !== prom) {\n console.log('Another update in the queue for', u, '- not marking up-to-date');\n return;\n }\n delete _this4._keyDownloadsInProgressByUser[u];\n var stat = _this4._deviceTrackingStatus[u];\n if (stat == TRACKING_STATUS_DOWNLOAD_IN_PROGRESS) {\n if (success) {\n // we didn't get any new invalidations since this download started:\n // this user's device list is now up to date.\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_UP_TO_DATE;\n console.log(\"Device list for\", u, \"now up to date\");\n } else {\n _this4._deviceTrackingStatus[u] = TRACKING_STATUS_PENDING_DOWNLOAD;\n }\n }\n });\n _this4.saveIfDirty();\n };\n\n return prom;\n }\n }]);\n return DeviceList;\n}();\n\n/**\n * Serialises updates to device lists\n *\n * Ensures that results from /keys/query are not overwritten if a second call\n * completes *before* an earlier one.\n *\n * It currently does this by ensuring only one call to /keys/query happens at a\n * time (and queuing other requests up).\n */\n\n\nexports.default = DeviceList;\n\nvar DeviceListUpdateSerialiser = function () {\n /*\n * @param {object} baseApis Base API object\n * @param {object} olmDevice The Olm Device\n * @param {object} deviceList The device list object\n */\n function DeviceListUpdateSerialiser(baseApis, olmDevice, deviceList) {\n (0, _classCallCheck3.default)(this, DeviceListUpdateSerialiser);\n\n this._baseApis = baseApis;\n this._olmDevice = olmDevice;\n this._deviceList = deviceList; // the device list to be updated\n\n this._downloadInProgress = false;\n\n // users which are queued for download\n // userId -> true\n this._keyDownloadsQueuedByUser = {};\n\n // deferred which is resolved when the queued users are downloaded.\n //\n // non-null indicates that we have users queued for download.\n this._queuedQueryDeferred = null;\n\n this._syncToken = null; // The sync token we send with the requests\n }\n\n /**\n * Make a key query request for the given users\n *\n * @param {String[]} users list of user ids\n *\n * @param {String} syncToken sync token to pass in the query request, to\n * help the HS give the most recent results\n *\n * @return {module:client.Promise} resolves when all the users listed have\n * been updated. rejects if there was a problem updating any of the\n * users.\n */\n\n\n (0, _createClass3.default)(DeviceListUpdateSerialiser, [{\n key: 'updateDevicesForUsers',\n value: function updateDevicesForUsers(users, syncToken) {\n var _this5 = this;\n\n users.forEach(function (u) {\n _this5._keyDownloadsQueuedByUser[u] = true;\n });\n\n if (!this._queuedQueryDeferred) {\n this._queuedQueryDeferred = _bluebird2.default.defer();\n }\n\n // We always take the new sync token and just use the latest one we've\n // been given, since it just needs to be at least as recent as the\n // sync response the device invalidation message arrived in\n this._syncToken = syncToken;\n\n if (this._downloadInProgress) {\n // just queue up these users\n console.log('Queued key download for', users);\n return this._queuedQueryDeferred.promise;\n }\n\n // start a new download.\n return this._doQueuedQueries();\n }\n }, {\n key: '_doQueuedQueries',\n value: function _doQueuedQueries() {\n var _this6 = this;\n\n if (this._downloadInProgress) {\n throw new Error(\"DeviceListUpdateSerialiser._doQueuedQueries called with request active\");\n }\n\n var downloadUsers = (0, _keys2.default)(this._keyDownloadsQueuedByUser);\n this._keyDownloadsQueuedByUser = {};\n var deferred = this._queuedQueryDeferred;\n this._queuedQueryDeferred = null;\n\n console.log('Starting key download for', downloadUsers);\n this._downloadInProgress = true;\n\n var opts = {};\n if (this._syncToken) {\n opts.token = this._syncToken;\n }\n\n this._baseApis.downloadKeysForUsers(downloadUsers, opts).then(function (res) {\n var dk = res.device_keys || {};\n\n // do each user in a separate promise, to avoid wedging the CPU\n // (https://github.com/vector-im/riot-web/issues/3158)\n //\n // of course we ought to do this in a web worker or similar, but\n // this serves as an easy solution for now.\n var prom = _bluebird2.default.resolve();\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n var _loop = function _loop() {\n var userId = _step4.value;\n\n prom = prom.delay(5).then(function () {\n return _this6._processQueryResponseForUser(userId, dk[userId]);\n });\n };\n\n for (var _iterator4 = (0, _getIterator3.default)(downloadUsers), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n _loop();\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n return prom;\n }).done(function () {\n console.log('Completed key download for ' + downloadUsers);\n\n _this6._downloadInProgress = false;\n deferred.resolve();\n\n // if we have queued users, fire off another request.\n if (_this6._queuedQueryDeferred) {\n _this6._doQueuedQueries();\n }\n }, function (e) {\n console.warn('Error downloading keys for ' + downloadUsers + ':', e);\n _this6._downloadInProgress = false;\n deferred.reject(e);\n });\n\n return deferred.promise;\n }\n }, {\n key: '_processQueryResponseForUser',\n value: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(userId, response) {\n var userStore, devs, storage;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n console.log('got keys for ' + userId + ':', response);\n\n // map from deviceid -> deviceinfo for this user\n userStore = {};\n devs = this._deviceList.getRawStoredDevicesForUser(userId);\n\n if (devs) {\n (0, _keys2.default)(devs).forEach(function (deviceId) {\n var d = _deviceinfo2.default.fromStorage(devs[deviceId], deviceId);\n userStore[deviceId] = d;\n });\n }\n\n _context2.next = 6;\n return (0, _bluebird.resolve)(_updateStoredDeviceKeysForUser(this._olmDevice, userId, userStore, response || {}));\n\n case 6:\n\n // put the updates into thr object that will be returned as our results\n storage = {};\n\n (0, _keys2.default)(userStore).forEach(function (deviceId) {\n storage[deviceId] = userStore[deviceId].toStorage();\n });\n\n this._deviceList._setRawStoredDevicesForUser(userId, storage);\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _processQueryResponseForUser(_x2, _x3) {\n return _ref3.apply(this, arguments);\n }\n\n return _processQueryResponseForUser;\n }()\n }]);\n return DeviceListUpdateSerialiser;\n}();\n//# sourceMappingURL=DeviceList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module which manages queuing, scheduling and retrying\n * of requests.\n * @module scheduler\n */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"./utils\");\n\n\nvar DEBUG = false; // set true to enable console logging.\n\n/**\n * Construct a scheduler for Matrix. Requires\n * {@link module:scheduler~MatrixScheduler#setProcessFunction} to be provided\n * with a way of processing events.\n * @constructor\n * @param {module:scheduler~retryAlgorithm} retryAlgorithm Optional. The retry\n * algorithm to apply when determining when to try to send an event again.\n * Defaults to {@link module:scheduler~MatrixScheduler.RETRY_BACKOFF_RATELIMIT}.\n * @param {module:scheduler~queueAlgorithm} queueAlgorithm Optional. The queuing\n * algorithm to apply when determining which events should be sent before the\n * given event. Defaults to {@link module:scheduler~MatrixScheduler.QUEUE_MESSAGES}.\n */\nfunction MatrixScheduler(retryAlgorithm, queueAlgorithm) {\n this.retryAlgorithm = retryAlgorithm || MatrixScheduler.RETRY_BACKOFF_RATELIMIT;\n this.queueAlgorithm = queueAlgorithm || MatrixScheduler.QUEUE_MESSAGES;\n this._queues = {\n // queueName: [{\n // event: MatrixEvent, // event to send\n // defer: Deferred, // defer to resolve/reject at the END of the retries\n // attempts: Number // number of times we've called processFn\n // }, ...]\n };\n this._activeQueues = [];\n this._procFn = null;\n}\n\n/**\n * Retrieve a queue based on an event. The event provided does not need to be in\n * the queue.\n * @param {MatrixEvent} event An event to get the queue for.\n * @return {?Array<MatrixEvent>} A shallow copy of events in the queue or null.\n * Modifying this array will not modify the list itself. Modifying events in\n * this array <i>will</i> modify the underlying event in the queue.\n * @see MatrixScheduler.removeEventFromQueue To remove an event from the queue.\n */\nMatrixScheduler.prototype.getQueueForEvent = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return null;\n }\n return utils.map(this._queues[name], function (obj) {\n return obj.event;\n });\n};\n\n/**\n * Remove this event from the queue. The event is equal to another event if they\n * have the same ID returned from event.getId().\n * @param {MatrixEvent} event The event to remove.\n * @return {boolean} True if this event was removed.\n */\nMatrixScheduler.prototype.removeEventFromQueue = function (event) {\n var name = this.queueAlgorithm(event);\n if (!name || !this._queues[name]) {\n return false;\n }\n var removed = false;\n utils.removeElement(this._queues[name], function (element) {\n if (element.event.getId() === event.getId()) {\n // XXX we should probably reject the promise?\n // https://github.com/matrix-org/matrix-js-sdk/issues/496\n removed = true;\n return true;\n }\n });\n return removed;\n};\n\n/**\n * Set the process function. Required for events in the queue to be processed.\n * If set after events have been added to the queue, this will immediately start\n * processing them.\n * @param {module:scheduler~processFn} fn The function that can process events\n * in the queue.\n */\nMatrixScheduler.prototype.setProcessFunction = function (fn) {\n this._procFn = fn;\n _startProcessingQueues(this);\n};\n\n/**\n * Queue an event if it is required and start processing queues.\n * @param {MatrixEvent} event The event that may be queued.\n * @return {?Promise} A promise if the event was queued, which will be\n * resolved or rejected in due time, else null.\n */\nMatrixScheduler.prototype.queueEvent = function (event) {\n var queueName = this.queueAlgorithm(event);\n if (!queueName) {\n return null;\n }\n // add the event to the queue and make a deferred for it.\n if (!this._queues[queueName]) {\n this._queues[queueName] = [];\n }\n var defer = _bluebird2.default.defer();\n this._queues[queueName].push({\n event: event,\n defer: defer,\n attempts: 0\n });\n debuglog(\"Queue algorithm dumped event %s into queue '%s'\", event.getId(), queueName);\n _startProcessingQueues(this);\n return defer.promise;\n};\n\n/**\n * Retries events up to 4 times using exponential backoff. This produces wait\n * times of 2, 4, 8, and 16 seconds (30s total) after which we give up. If the\n * failure was due to a rate limited request, the time specified in the error is\n * waited before being retried.\n * @param {MatrixEvent} event\n * @param {Number} attempts\n * @param {MatrixError} err\n * @return {Number}\n * @see module:scheduler~retryAlgorithm\n */\nMatrixScheduler.RETRY_BACKOFF_RATELIMIT = function (event, attempts, err) {\n if (err.httpStatus === 400 || err.httpStatus === 403 || err.httpStatus === 401) {\n // client error; no amount of retrying with save you now.\n return -1;\n }\n // we ship with browser-request which returns { cors: rejected } when trying\n // with no connection, so if we match that, give up since they have no conn.\n if (err.cors === \"rejected\") {\n return -1;\n }\n\n if (err.name === \"M_LIMIT_EXCEEDED\") {\n var waitTime = err.data.retry_after_ms;\n if (waitTime) {\n return waitTime;\n }\n }\n if (attempts > 4) {\n return -1; // give up\n }\n return 1000 * Math.pow(2, attempts);\n};\n\n/**\n * Queues <code>m.room.message</code> events and lets other events continue\n * concurrently.\n * @param {MatrixEvent} event\n * @return {string}\n * @see module:scheduler~queueAlgorithm\n */\nMatrixScheduler.QUEUE_MESSAGES = function (event) {\n if (event.getType() === \"m.room.message\") {\n // put these events in the 'message' queue.\n return \"message\";\n }\n // allow all other events continue concurrently.\n return null;\n};\n\nfunction _startProcessingQueues(scheduler) {\n if (!scheduler._procFn) {\n return;\n }\n // for each inactive queue with events in them\n utils.forEach(utils.filter(utils.keys(scheduler._queues), function (queueName) {\n return scheduler._activeQueues.indexOf(queueName) === -1 && scheduler._queues[queueName].length > 0;\n }), function (queueName) {\n // mark the queue as active\n scheduler._activeQueues.push(queueName);\n // begin processing the head of the queue\n debuglog(\"Spinning up queue: '%s'\", queueName);\n _processQueue(scheduler, queueName);\n });\n}\n\nfunction _processQueue(scheduler, queueName) {\n // get head of queue\n var obj = _peekNextEvent(scheduler, queueName);\n if (!obj) {\n // queue is empty. Mark as inactive and stop recursing.\n var index = scheduler._activeQueues.indexOf(queueName);\n if (index >= 0) {\n scheduler._activeQueues.splice(index, 1);\n }\n debuglog(\"Stopping queue '%s' as it is now empty\", queueName);\n return;\n }\n debuglog(\"Queue '%s' has %s pending events\", queueName, scheduler._queues[queueName].length);\n // fire the process function and if it resolves, resolve the deferred. Else\n // invoke the retry algorithm.\n scheduler._procFn(obj.event).done(function (res) {\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n debuglog(\"Queue '%s' sent event %s\", queueName, obj.event.getId());\n obj.defer.resolve(res);\n // keep processing\n _processQueue(scheduler, queueName);\n }, function (err) {\n obj.attempts += 1;\n // ask the retry algorithm when/if we should try again\n var waitTimeMs = scheduler.retryAlgorithm(obj.event, obj.attempts, err);\n debuglog(\"retry(%s) err=%s event_id=%s waitTime=%s\", obj.attempts, err, obj.event.getId(), waitTimeMs);\n if (waitTimeMs === -1) {\n // give up (you quitter!)\n debuglog(\"Queue '%s' giving up on event %s\", queueName, obj.event.getId());\n // remove this from the queue\n _removeNextEvent(scheduler, queueName);\n obj.defer.reject(err);\n // process next event\n _processQueue(scheduler, queueName);\n } else {\n setTimeout(function () {\n _processQueue(scheduler, queueName);\n }, waitTimeMs);\n }\n });\n}\n\nfunction _peekNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue[0];\n}\n\nfunction _removeNextEvent(scheduler, queueName) {\n var queue = scheduler._queues[queueName];\n if (!utils.isArray(queue)) {\n return null;\n }\n return queue.shift();\n}\n\nfunction debuglog() {\n if (DEBUG) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\n/**\n * The retry algorithm to apply when retrying events. To stop retrying, return\n * <code>-1</code>. If this event was part of a queue, it will be removed from\n * the queue.\n * @callback retryAlgorithm\n * @param {MatrixEvent} event The event being retried.\n * @param {Number} attempts The number of failed attempts. This will always be\n * >= 1.\n * @param {MatrixError} err The most recent error message received when trying\n * to send this event.\n * @return {Number} The number of milliseconds to wait before trying again. If\n * this is 0, the request will be immediately retried. If this is\n * <code>-1</code>, the event will be marked as\n * {@link module:models/event.EventStatus.NOT_SENT} and will not be retried.\n */\n\n/**\n * The queuing algorithm to apply to events. This function must be idempotent as\n * it may be called multiple times with the same event. All queues created are\n * serviced in a FIFO manner. To send the event ASAP, return <code>null</code>\n * which will not put this event in a queue. Events that fail to send that form\n * part of a queue will be removed from the queue and the next event in the\n * queue will be sent.\n * @callback queueAlgorithm\n * @param {MatrixEvent} event The event to be sent.\n * @return {string} The name of the queue to put the event into. If a queue with\n * this name does not exist, it will be created. If this is <code>null</code>,\n * the event is not put into a queue and will be sent concurrently.\n */\n\n/**\n* The function to invoke to process (send) events in the queue.\n* @callback processFn\n* @param {MatrixEvent} event The event to send.\n* @return {Promise} Resolved/rejected depending on the outcome of the request.\n*/\n\n/**\n * The MatrixScheduler class.\n */\nmodule.exports = MatrixScheduler;\n//# sourceMappingURL=scheduler.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/**\n * @module store/session/webstorage\n */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar utils = require(\"../../utils\");\n\nvar DEBUG = false; // set true to enable console logging.\nvar E2E_PREFIX = \"session.e2e.\";\n\n/**\n * Construct a web storage session store, capable of storing account keys,\n * session keys and access tokens.\n * @constructor\n * @param {WebStorage} webStore A web storage implementation, e.g.\n * 'window.localStorage' or 'window.sessionStorage' or a custom implementation.\n * @throws if the supplied 'store' does not meet the Storage interface of the\n * WebStorage API.\n */\nfunction WebStorageSessionStore(webStore) {\n this.store = webStore;\n if (!utils.isFunction(webStore.getItem) || !utils.isFunction(webStore.setItem) || !utils.isFunction(webStore.removeItem) || !utils.isFunction(webStore.key) || typeof webStore.length !== 'number') {\n throw new Error(\"Supplied webStore does not meet the WebStorage API interface\");\n }\n}\n\nWebStorageSessionStore.prototype = {\n /**\n * Remove the stored end to end account for the logged-in user.\n */\n removeEndToEndAccount: function removeEndToEndAccount() {\n this.store.removeItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Load the end to end account for the logged-in user.\n * Note that the end-to-end account is now stored in the\n * crypto store rather than here: this remains here so\n * old sessions can be migrated out of the session store.\n * @return {?string} Base64 encoded account.\n */\n getEndToEndAccount: function getEndToEndAccount() {\n return this.store.getItem(KEY_END_TO_END_ACCOUNT);\n },\n\n /**\n * Retrieves the known devices for all users.\n * @return {object} A map from user ID to map of device ID to keys for the device.\n */\n getAllEndToEndDevices: function getAllEndToEndDevices() {\n var prefix = keyEndToEndDevicesForUser('');\n var devices = {};\n for (var i = 0; i < this.store.length; ++i) {\n var key = this.store.key(i);\n var userId = key.substr(prefix.length);\n if (key.startsWith(prefix)) devices[userId] = getJsonItem(this.store, key);\n }\n return devices;\n },\n\n getEndToEndDeviceTrackingStatus: function getEndToEndDeviceTrackingStatus() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n },\n\n /**\n * Get the sync token corresponding to the device list.\n *\n * @return {String?} token\n */\n getEndToEndDeviceSyncToken: function getEndToEndDeviceSyncToken() {\n return getJsonItem(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Removes all end to end device data from the store\n */\n removeEndToEndDeviceData: function removeEndToEndDeviceData() {\n removeByPrefix(this.store, keyEndToEndDevicesForUser(''));\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS);\n removeByPrefix(this.store, KEY_END_TO_END_DEVICE_SYNC_TOKEN);\n },\n\n /**\n * Retrieve the end-to-end sessions between the logged-in user and another\n * device.\n * @param {string} deviceKey The public key of the other device.\n * @return {object} A map from sessionId to Base64 end-to-end session.\n */\n getEndToEndSessions: function getEndToEndSessions(deviceKey) {\n return getJsonItem(this.store, keyEndToEndSessions(deviceKey));\n },\n\n /**\n * Retrieve all end-to-end sessions between the logged-in user and other\n * devices.\n * @return {object} A map of {deviceKey -> {sessionId -> session pickle}}\n */\n getAllEndToEndSessions: function getAllEndToEndSessions() {\n var deviceKeys = getKeysWithPrefix(this.store, keyEndToEndSessions(''));\n var results = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(deviceKeys), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var k = _step.value;\n\n var unprefixedKey = k.substr(keyEndToEndSessions('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return results;\n },\n\n /**\n * Remove all end-to-end sessions from the store\n * This is used after migrating sessions awat from the sessions store.\n */\n removeAllEndToEndSessions: function removeAllEndToEndSessions() {\n removeByPrefix(this.store, keyEndToEndSessions(''));\n },\n\n /**\n * Retrieve a list of all known inbound group sessions\n *\n * @return {{senderKey: string, sessionId: string}}\n */\n getAllEndToEndInboundGroupSessionKeys: function getAllEndToEndInboundGroupSessionKeys() {\n var prefix = E2E_PREFIX + 'inboundgroupsessions/';\n var result = [];\n for (var i = 0; i < this.store.length; i++) {\n var key = this.store.key(i);\n if (!key.startsWith(prefix)) {\n continue;\n }\n // we can't use split, as the components we are trying to split out\n // might themselves contain '/' characters. We rely on the\n // senderKey being a (32-byte) curve25519 key, base64-encoded\n // (hence 43 characters long).\n\n result.push({\n senderKey: key.substr(prefix.length, 43),\n sessionId: key.substr(prefix.length + 44)\n });\n }\n return result;\n },\n\n getEndToEndInboundGroupSession: function getEndToEndInboundGroupSession(senderKey, sessionId) {\n var key = keyEndToEndInboundGroupSession(senderKey, sessionId);\n return this.store.getItem(key);\n },\n\n removeAllEndToEndInboundGroupSessions: function removeAllEndToEndInboundGroupSessions() {\n removeByPrefix(this.store, E2E_PREFIX + 'inboundgroupsessions/');\n },\n\n /**\n * Get the end-to-end state for all rooms\n * @return {object} roomId -> object with the end-to-end info for the room.\n */\n getAllEndToEndRooms: function getAllEndToEndRooms() {\n var roomKeys = getKeysWithPrefix(this.store, keyEndToEndRoom(''));\n var results = {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(roomKeys), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var k = _step2.value;\n\n var unprefixedKey = k.substr(keyEndToEndRoom('').length);\n results[unprefixedKey] = getJsonItem(this.store, k);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return results;\n },\n\n removeAllEndToEndRooms: function removeAllEndToEndRooms() {\n removeByPrefix(this.store, keyEndToEndRoom(''));\n }\n};\n\nvar KEY_END_TO_END_ACCOUNT = E2E_PREFIX + \"account\";\nvar KEY_END_TO_END_DEVICE_SYNC_TOKEN = E2E_PREFIX + \"device_sync_token\";\nvar KEY_END_TO_END_DEVICE_LIST_TRACKING_STATUS = E2E_PREFIX + \"device_tracking\";\n\nfunction keyEndToEndDevicesForUser(userId) {\n return E2E_PREFIX + \"devices/\" + userId;\n}\n\nfunction keyEndToEndSessions(deviceKey) {\n return E2E_PREFIX + \"sessions/\" + deviceKey;\n}\n\nfunction keyEndToEndInboundGroupSession(senderKey, sessionId) {\n return E2E_PREFIX + \"inboundgroupsessions/\" + senderKey + \"/\" + sessionId;\n}\n\nfunction keyEndToEndRoom(roomId) {\n return E2E_PREFIX + \"rooms/\" + roomId;\n}\n\nfunction getJsonItem(store, key) {\n try {\n // if the key is absent, store.getItem() returns null, and\n // JSON.parse(null) === null, so this returns null.\n return JSON.parse(store.getItem(key));\n } catch (e) {\n debuglog(\"Failed to get key %s: %s\", key, e);\n debuglog(e.stack);\n }\n return null;\n}\n\nfunction getKeysWithPrefix(store, prefix) {\n var results = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) results.push(key);\n }\n return results;\n}\n\nfunction removeByPrefix(store, prefix) {\n var toRemove = [];\n for (var i = 0; i < store.length; ++i) {\n var key = store.key(i);\n if (key.startsWith(prefix)) toRemove.push(key);\n }\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(toRemove), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _key = _step3.value;\n\n store.removeItem(_key);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction debuglog() {\n if (DEBUG) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\n/** */\nmodule.exports = WebStorageSessionStore;\n//# sourceMappingURL=webstorage.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module timeline-window */\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EventTimeline = require(\"./models/event-timeline\");\n\n/**\n * @private\n */\nvar DEBUG = false;\n\n/**\n * @private\n */\nvar debuglog = DEBUG ? console.log.bind(console) : function () {};\n\n/**\n * the number of times we ask the server for more events before giving up\n *\n * @private\n */\nvar DEFAULT_PAGINATE_LOOP_LIMIT = 5;\n\n/**\n * Construct a TimelineWindow.\n *\n * <p>This abstracts the separate timelines in a Matrix {@link\n * module:models/room|Room} into a single iterable thing. It keeps track of\n * the start and endpoints of the window, which can be advanced with the help\n * of pagination requests.\n *\n * <p>Before the window is useful, it must be initialised by calling {@link\n * module:timeline-window~TimelineWindow#load|load}.\n *\n * <p>Note that the window will not automatically extend itself when new events\n * are received from /sync; you should arrange to call {@link\n * module:timeline-window~TimelineWindow#paginate|paginate} on {@link\n * module:client~MatrixClient.event:\"Room.timeline\"|Room.timeline} events.\n *\n * @param {MatrixClient} client MatrixClient to be used for context/pagination\n * requests.\n *\n * @param {EventTimelineSet} timelineSet The timelineSet to track\n *\n * @param {Object} [opts] Configuration options for this window\n *\n * @param {number} [opts.windowLimit = 1000] maximum number of events to keep\n * in the window. If more events are retrieved via pagination requests,\n * excess events will be dropped from the other end of the window.\n *\n * @constructor\n */\nfunction TimelineWindow(client, timelineSet, opts) {\n opts = opts || {};\n this._client = client;\n this._timelineSet = timelineSet;\n\n // these will be TimelineIndex objects; they delineate the 'start' and\n // 'end' of the window.\n //\n // _start.index is inclusive; _end.index is exclusive.\n this._start = null;\n this._end = null;\n\n this._eventCount = 0;\n this._windowLimit = opts.windowLimit || 1000;\n}\n\n/**\n * Initialise the window to point at a given event, or the live timeline\n *\n * @param {string} [initialEventId] If given, the window will contain the\n * given event\n * @param {number} [initialWindowSize = 20] Size of the initial window\n *\n * @return {module:client.Promise}\n */\nTimelineWindow.prototype.load = function (initialEventId, initialWindowSize) {\n var self = this;\n initialWindowSize = initialWindowSize || 20;\n\n // given an EventTimeline, find the event we were looking for, and initialise our\n // fields so that the event in question is in the middle of the window.\n var initFields = function initFields(timeline) {\n var eventIndex = void 0;\n\n var events = timeline.getEvents();\n\n if (!initialEventId) {\n // we were looking for the live timeline: initialise to the end\n eventIndex = events.length;\n } else {\n for (var i = 0; i < events.length; i++) {\n if (events[i].getId() == initialEventId) {\n eventIndex = i;\n break;\n }\n }\n\n if (eventIndex === undefined) {\n throw new Error(\"getEventTimeline result didn't include requested event\");\n }\n }\n\n var endIndex = Math.min(events.length, eventIndex + Math.ceil(initialWindowSize / 2));\n var startIndex = Math.max(0, endIndex - initialWindowSize);\n self._start = new TimelineIndex(timeline, startIndex - timeline.getBaseIndex());\n self._end = new TimelineIndex(timeline, endIndex - timeline.getBaseIndex());\n self._eventCount = endIndex - startIndex;\n };\n\n // We avoid delaying the resolution of the promise by a reactor tick if\n // we already have the data we need, which is important to keep room-switching\n // feeling snappy.\n //\n if (initialEventId) {\n var prom = this._client.getEventTimeline(this._timelineSet, initialEventId);\n\n if (prom.isFulfilled()) {\n initFields(prom.value());\n return _bluebird2.default.resolve();\n } else {\n return prom.then(initFields);\n }\n } else {\n var tl = this._timelineSet.getLiveTimeline();\n initFields(tl);\n return _bluebird2.default.resolve();\n }\n};\n\n/**\n * Check if this window can be extended\n *\n * <p>This returns true if we either have more events, or if we have a\n * pagination token which means we can paginate in that direction. It does not\n * necessarily mean that there are more events available in that direction at\n * this time.\n *\n * @param {string} direction EventTimeline.BACKWARDS to check if we can\n * paginate backwards; EventTimeline.FORWARDS to check if we can go forwards\n *\n * @return {boolean} true if we can paginate in the given direction\n */\nTimelineWindow.prototype.canPaginate = function (direction) {\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return false;\n }\n\n if (direction == EventTimeline.BACKWARDS) {\n if (tl.index > tl.minIndex()) {\n return true;\n }\n } else {\n if (tl.index < tl.maxIndex()) {\n return true;\n }\n }\n\n return Boolean(tl.timeline.getNeighbouringTimeline(direction) || tl.timeline.getPaginationToken(direction));\n};\n\n/**\n * Attempt to extend the window\n *\n * @param {string} direction EventTimeline.BACKWARDS to extend the window\n * backwards (towards older events); EventTimeline.FORWARDS to go forwards.\n *\n * @param {number} size number of events to try to extend by. If fewer than this\n * number are immediately available, then we return immediately rather than\n * making an API call.\n *\n * @param {boolean} [makeRequest = true] whether we should make API calls to\n * fetch further events if we don't have any at all. (This has no effect if\n * the room already knows about additional events in the relevant direction,\n * even if there are fewer than 'size' of them, as we will just return those\n * we already know about.)\n *\n * @param {number} [requestLimit = 5] limit for the number of API requests we\n * should make.\n *\n * @return {module:client.Promise} Resolves to a boolean which is true if more events\n * were successfully retrieved.\n */\nTimelineWindow.prototype.paginate = function (direction, size, makeRequest, requestLimit) {\n // Either wind back the message cap (if there are enough events in the\n // timeline to do so), or fire off a pagination request.\n\n if (makeRequest === undefined) {\n makeRequest = true;\n }\n\n if (requestLimit === undefined) {\n requestLimit = DEFAULT_PAGINATE_LOOP_LIMIT;\n }\n\n var tl = void 0;\n if (direction == EventTimeline.BACKWARDS) {\n tl = this._start;\n } else if (direction == EventTimeline.FORWARDS) {\n tl = this._end;\n } else {\n throw new Error(\"Invalid direction '\" + direction + \"'\");\n }\n\n if (!tl) {\n debuglog(\"TimelineWindow: no timeline yet\");\n return _bluebird2.default.resolve(false);\n }\n\n if (tl.pendingPaginate) {\n return tl.pendingPaginate;\n }\n\n // try moving the cap\n var count = direction == EventTimeline.BACKWARDS ? tl.retreat(size) : tl.advance(size);\n\n if (count) {\n this._eventCount += count;\n debuglog(\"TimelineWindow: increased cap by \" + count + \" (now \" + this._eventCount + \")\");\n // remove some events from the other end, if necessary\n var excess = this._eventCount - this._windowLimit;\n if (excess > 0) {\n this.unpaginate(excess, direction != EventTimeline.BACKWARDS);\n }\n return _bluebird2.default.resolve(true);\n }\n\n if (!makeRequest || requestLimit === 0) {\n // todo: should we return something different to indicate that there\n // might be more events out there, but we haven't found them yet?\n return _bluebird2.default.resolve(false);\n }\n\n // try making a pagination request\n var token = tl.timeline.getPaginationToken(direction);\n if (!token) {\n debuglog(\"TimelineWindow: no token\");\n return _bluebird2.default.resolve(false);\n }\n\n debuglog(\"TimelineWindow: starting request\");\n var self = this;\n\n var prom = this._client.paginateEventTimeline(tl.timeline, {\n backwards: direction == EventTimeline.BACKWARDS,\n limit: size\n }).finally(function () {\n tl.pendingPaginate = null;\n }).then(function (r) {\n debuglog(\"TimelineWindow: request completed with result \" + r);\n if (!r) {\n // end of timeline\n return false;\n }\n\n // recurse to advance the index into the results.\n //\n // If we don't get any new events, we want to make sure we keep asking\n // the server for events for as long as we have a valid pagination\n // token. In particular, we want to know if we've actually hit the\n // start of the timeline, or if we just happened to know about all of\n // the events thanks to https://matrix.org/jira/browse/SYN-645.\n //\n // On the other hand, we necessarily want to wait forever for the\n // server to make its mind up about whether there are other events,\n // because it gives a bad user experience\n // (https://github.com/vector-im/vector-web/issues/1204).\n return self.paginate(direction, size, true, requestLimit - 1);\n });\n tl.pendingPaginate = prom;\n return prom;\n};\n\n/**\n * Remove `delta` events from the start or end of the timeline.\n *\n * @param {number} delta number of events to remove from the timeline\n * @param {boolean} startOfTimeline if events should be removed from the start\n * of the timeline.\n */\nTimelineWindow.prototype.unpaginate = function (delta, startOfTimeline) {\n var tl = startOfTimeline ? this._start : this._end;\n\n // sanity-check the delta\n if (delta > this._eventCount || delta < 0) {\n throw new Error(\"Attemting to unpaginate \" + delta + \" events, but \" + \"only have \" + this._eventCount + \" in the timeline\");\n }\n\n while (delta > 0) {\n var count = startOfTimeline ? tl.advance(delta) : tl.retreat(delta);\n if (count <= 0) {\n // sadness. This shouldn't be possible.\n throw new Error(\"Unable to unpaginate any further, but still have \" + this._eventCount + \" events\");\n }\n\n delta -= count;\n this._eventCount -= count;\n debuglog(\"TimelineWindow.unpaginate: dropped \" + count + \" (now \" + this._eventCount + \")\");\n }\n};\n\n/**\n * Get a list of the events currently in the window\n *\n * @return {MatrixEvent[]} the events in the window\n */\nTimelineWindow.prototype.getEvents = function () {\n if (!this._start) {\n // not yet loaded\n return [];\n }\n\n var result = [];\n\n // iterate through each timeline between this._start and this._end\n // (inclusive).\n var timeline = this._start.timeline;\n while (true) {\n var events = timeline.getEvents();\n\n // For the first timeline in the chain, we want to start at\n // this._start.index. For the last timeline in the chain, we want to\n // stop before this._end.index. Otherwise, we want to copy all of the\n // events in the timeline.\n //\n // (Note that both this._start.index and this._end.index are relative\n // to their respective timelines' BaseIndex).\n //\n var startIndex = 0,\n endIndex = events.length;\n if (timeline === this._start.timeline) {\n startIndex = this._start.index + timeline.getBaseIndex();\n }\n if (timeline === this._end.timeline) {\n endIndex = this._end.index + timeline.getBaseIndex();\n }\n\n for (var i = startIndex; i < endIndex; i++) {\n result.push(events[i]);\n }\n\n // if we're not done, iterate to the next timeline.\n if (timeline === this._end.timeline) {\n break;\n } else {\n timeline = timeline.getNeighbouringTimeline(EventTimeline.FORWARDS);\n }\n }\n\n return result;\n};\n\n/**\n * a thing which contains a timeline reference, and an index into it.\n *\n * @constructor\n * @param {EventTimeline} timeline\n * @param {number} index\n * @private\n */\nfunction TimelineIndex(timeline, index) {\n this.timeline = timeline;\n\n // the indexes are relative to BaseIndex, so could well be negative.\n this.index = index;\n}\n\n/**\n * @return {number} the minimum possible value for the index in the current\n * timeline\n */\nTimelineIndex.prototype.minIndex = function () {\n return this.timeline.getBaseIndex() * -1;\n};\n\n/**\n * @return {number} the maximum possible value for the index in the current\n * timeline (exclusive - ie, it actually returns one more than the index\n * of the last element).\n */\nTimelineIndex.prototype.maxIndex = function () {\n return this.timeline.getEvents().length - this.timeline.getBaseIndex();\n};\n\n/**\n * Try move the index forward, or into the neighbouring timeline\n *\n * @param {number} delta number of events to advance by\n * @return {number} number of events successfully advanced by\n */\nTimelineIndex.prototype.advance = function (delta) {\n if (!delta) {\n return 0;\n }\n\n // first try moving the index in the current timeline. See if there is room\n // to do so.\n var cappedDelta = void 0;\n if (delta < 0) {\n // we want to wind the index backwards.\n //\n // (this.minIndex() - this.index) is a negative number whose magnitude\n // is the amount of room we have to wind back the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.max(delta, this.minIndex() - this.index);\n if (cappedDelta < 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n } else {\n // we want to wind the index forwards.\n //\n // (this.maxIndex() - this.index) is a (positive) number whose magnitude\n // is the amount of room we have to wind forward the index in the current\n // timeline. We cap delta to this quantity.\n cappedDelta = Math.min(delta, this.maxIndex() - this.index);\n if (cappedDelta > 0) {\n this.index += cappedDelta;\n return cappedDelta;\n }\n }\n\n // the index is already at the start/end of the current timeline.\n //\n // next see if there is a neighbouring timeline to switch to.\n var neighbour = this.timeline.getNeighbouringTimeline(delta < 0 ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS);\n if (neighbour) {\n this.timeline = neighbour;\n if (delta < 0) {\n this.index = this.maxIndex();\n } else {\n this.index = this.minIndex();\n }\n\n debuglog(\"paginate: switched to new neighbour\");\n\n // recurse, using the next timeline\n return this.advance(delta);\n }\n\n return 0;\n};\n\n/**\n * Try move the index backwards, or into the neighbouring timeline\n *\n * @param {number} delta number of events to retreat by\n * @return {number} number of events successfully retreated by\n */\nTimelineIndex.prototype.retreat = function (delta) {\n return this.advance(delta * -1) * -1;\n};\n\n/**\n * The TimelineWindow class.\n */\nmodule.exports.TimelineWindow = TimelineWindow;\n\n/**\n * The TimelineIndex class. exported here for unit testing.\n */\nmodule.exports.TimelineIndex = TimelineIndex;\n//# sourceMappingURL=timeline-window.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n\n/** @module interactive-auth */\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar url = require(\"url\");\n\nvar utils = require(\"./utils\");\n\nvar EMAIL_STAGE_TYPE = \"m.login.email.identity\";\nvar MSISDN_STAGE_TYPE = \"m.login.msisdn\";\n\n/**\n * Abstracts the logic used to drive the interactive auth process.\n *\n * <p>Components implementing an interactive auth flow should instantiate one of\n * these, passing in the necessary callbacks to the constructor. They should\n * then call attemptAuth, which will return a promise which will resolve or\n * reject when the interactive-auth process completes.\n *\n * <p>Meanwhile, calls will be made to the startAuthStage and doRequest\n * callbacks, and information gathered from the user can be submitted with\n * submitAuthDict.\n *\n * @constructor\n * @alias module:interactive-auth\n *\n * @param {object} opts options object\n *\n * @param {object} opts.matrixClient A matrix client to use for the auth process\n *\n * @param {object?} opts.authData error response from the last request. If\n * null, a request will be made with no auth before starting.\n *\n * @param {function(object?, bool?): module:client.Promise} opts.doRequest\n * called with the new auth dict to submit the request and a flag set\n * to true if this request is a background request. Should return a\n * promise which resolves to the successful response or rejects with a\n * MatrixError.\n *\n * @param {function(string, object?)} opts.stateUpdated\n * called when the status of the UI auth changes, ie. when the state of\n * an auth stage changes of when the auth flow moves to a new stage.\n * The arguments are: the login type (eg m.login.password); and an object\n * which is either an error or an informational object specific to the\n * login type. If the 'errcode' key is defined, the object is an error,\n * and has keys:\n * errcode: string, the textual error code, eg. M_UNKNOWN\n * error: string, human readable string describing the error\n *\n * The login type specific objects are as follows:\n * m.login.email.identity:\n * * emailSid: string, the sid of the active email auth session\n *\n * @param {object?} opts.inputs Inputs provided by the user and used by different\n * stages of the auto process. The inputs provided will affect what flow is chosen.\n *\n * @param {string?} opts.inputs.emailAddress An email address. If supplied, a flow\n * using email verification will be chosen.\n *\n * @param {string?} opts.inputs.phoneCountry An ISO two letter country code. Gives\n * the country that opts.phoneNumber should be resolved relative to.\n *\n * @param {string?} opts.inputs.phoneNumber A phone number. If supplied, a flow\n * using phone number validation will be chosen.\n *\n * @param {string?} opts.sessionId If resuming an existing interactive auth session,\n * the sessionId of that session.\n *\n * @param {string?} opts.clientSecret If resuming an existing interactive auth session,\n * the client secret for that session\n *\n * @param {string?} opts.emailSid If returning from having completed m.login.email.identity\n * auth, the sid for the email verification session.\n *\n */\nfunction InteractiveAuth(opts) {\n this._matrixClient = opts.matrixClient;\n this._data = opts.authData || {};\n this._requestCallback = opts.doRequest;\n // startAuthStage included for backwards compat\n this._stateUpdatedCallback = opts.stateUpdated || opts.startAuthStage;\n this._completionDeferred = null;\n this._inputs = opts.inputs || {};\n\n if (opts.sessionId) this._data.session = opts.sessionId;\n this._clientSecret = opts.clientSecret || this._matrixClient.generateClientSecret();\n this._emailSid = opts.emailSid;\n if (this._emailSid === undefined) this._emailSid = null;\n\n this._currentStage = null;\n}\n\nInteractiveAuth.prototype = {\n /**\n * begin the authentication process.\n *\n * @return {module:client.Promise} which resolves to the response on success,\n * or rejects with the error on failure. Rejects with NoAuthFlowFoundError if\n * no suitable authentication flow can be found\n */\n attemptAuth: function attemptAuth() {\n var _this = this;\n\n this._completionDeferred = _bluebird2.default.defer();\n\n // wrap in a promise so that if _startNextAuthStage\n // throws, it rejects the promise in a consistent way\n return _bluebird2.default.resolve().then(function () {\n // if we have no flows, try a request (we'll have\n // just a session ID in _data if resuming)\n if (!_this._data.flows) {\n _this._doRequest(_this._data);\n } else {\n _this._startNextAuthStage();\n }\n return _this._completionDeferred.promise;\n });\n },\n\n /**\n * Poll to check if the auth session or current stage has been\n * completed out-of-band. If so, the attemptAuth promise will\n * be resolved.\n */\n poll: function poll() {\n if (!this._data.session) return;\n\n var authDict = {};\n if (this._currentStage == EMAIL_STAGE_TYPE) {\n // The email can be validated out-of-band, but we need to provide the\n // creds so the HS can go & check it.\n if (this._emailSid) {\n var idServerParsedUrl = url.parse(this._matrixClient.getIdentityServerUrl());\n authDict = {\n type: EMAIL_STAGE_TYPE,\n threepid_creds: {\n sid: this._emailSid,\n client_secret: this._clientSecret,\n id_server: idServerParsedUrl.host\n }\n };\n }\n }\n\n this.submitAuthDict(authDict, true);\n },\n\n /**\n * get the auth session ID\n *\n * @return {string} session id\n */\n getSessionId: function getSessionId() {\n return this._data ? this._data.session : undefined;\n },\n\n /**\n * get the client secret used for validation sessions\n * with the ID server.\n *\n * @return {string} client secret\n */\n getClientSecret: function getClientSecret() {\n return this._clientSecret;\n },\n\n /**\n * get the server params for a given stage\n *\n * @param {string} loginType login type for the stage\n * @return {object?} any parameters from the server for this stage\n */\n getStageParams: function getStageParams(loginType) {\n var params = {};\n if (this._data && this._data.params) {\n params = this._data.params;\n }\n return params[loginType];\n },\n\n /**\n * submit a new auth dict and fire off the request. This will either\n * make attemptAuth resolve/reject, or cause the startAuthStage callback\n * to be called for a new stage.\n *\n * @param {object} authData new auth dict to send to the server. Should\n * include a `type` propterty denoting the login type, as well as any\n * other params for that stage.\n * @param {bool} background If true, this request failing will not result\n * in the attemptAuth promise being rejected. This can be set to true\n * for requests that just poll to see if auth has been completed elsewhere.\n */\n submitAuthDict: function submitAuthDict(authData, background) {\n if (!this._completionDeferred) {\n throw new Error(\"submitAuthDict() called before attemptAuth()\");\n }\n\n // use the sessionid from the last request.\n var auth = {\n session: this._data.session\n };\n utils.extend(auth, authData);\n\n this._doRequest(auth, background);\n },\n\n /**\n * Gets the sid for the email validation session\n * Specific to m.login.email.identity\n *\n * @returns {string} The sid of the email auth session\n */\n getEmailSid: function getEmailSid() {\n return this._emailSid;\n },\n\n /**\n * Sets the sid for the email validation session\n * This must be set in order to successfully poll for completion\n * of the email validation.\n * Specific to m.login.email.identity\n *\n * @param {string} sid The sid for the email validation session\n */\n setEmailSid: function setEmailSid(sid) {\n this._emailSid = sid;\n },\n\n /**\n * Fire off a request, and either resolve the promise, or call\n * startAuthStage.\n *\n * @private\n * @param {object?} auth new auth dict, including session id\n * @param {bool?} background If true, this request is a background poll, so it\n * failing will not result in the attemptAuth promise being rejected.\n * This can be set to true for requests that just poll to see if auth has\n * been completed elsewhere.\n */\n _doRequest: function _doRequest(auth, background) {\n var _this2 = this;\n\n var self = this;\n\n // hackery to make sure that synchronous exceptions end up in the catch\n // handler (without the additional event loop entailed by q.fcall or an\n // extra Promise.resolve().then)\n var prom = void 0;\n try {\n prom = this._requestCallback(auth, background);\n } catch (e) {\n prom = _bluebird2.default.reject(e);\n }\n\n prom = prom.then(function (result) {\n console.log(\"result from request: \", result);\n self._completionDeferred.resolve(result);\n }, function (error) {\n // sometimes UI auth errors don't come with flows\n var errorFlows = error.data ? error.data.flows : null;\n var haveFlows = Boolean(self._data.flows) || Boolean(errorFlows);\n if (error.httpStatus !== 401 || !error.data || !haveFlows) {\n // doesn't look like an interactive-auth failure. fail the whole lot.\n throw error;\n }\n // if the error didn't come with flows, completed flows or session ID,\n // copy over the ones we have. Synapse sometimes sends responses without\n // any UI auth data (eg. when polling for email validation, if the email\n // has not yet been validated). This appears to be a Synapse bug, which\n // we workaround here.\n if (!error.data.flows && !error.data.completed && !error.data.session) {\n error.data.flows = self._data.flows;\n error.data.completed = self._data.completed;\n error.data.session = self._data.session;\n }\n self._data = error.data;\n self._startNextAuthStage();\n });\n if (!background) {\n prom = prom.catch(function (e) {\n _this2._completionDeferred.reject(e);\n });\n } else {\n // We ignore all failures here (even non-UI auth related ones)\n // since we don't want to suddenly fail if the internet connection\n // had a blip whilst we were polling\n prom = prom.catch(function (error) {\n console.log(\"Ignoring error from UI auth: \" + error);\n });\n }\n prom.done();\n },\n\n /**\n * Pick the next stage and call the callback\n *\n * @private\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _startNextAuthStage: function _startNextAuthStage() {\n var nextStage = this._chooseStage();\n if (!nextStage) {\n throw new Error(\"No incomplete flows from the server\");\n }\n this._currentStage = nextStage;\n\n if (nextStage == 'm.login.dummy') {\n this.submitAuthDict({\n type: 'm.login.dummy'\n });\n return;\n }\n\n if (this._data.errcode || this._data.error) {\n this._stateUpdatedCallback(nextStage, {\n errcode: this._data.errcode || \"\",\n error: this._data.error || \"\"\n });\n return;\n }\n\n var stageStatus = {};\n if (nextStage == EMAIL_STAGE_TYPE) {\n stageStatus.emailSid = this._emailSid;\n }\n this._stateUpdatedCallback(nextStage, stageStatus);\n },\n\n /**\n * Pick the next auth stage\n *\n * @private\n * @return {string?} login type\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseStage: function _chooseStage() {\n var flow = this._chooseFlow();\n console.log(\"Active flow => %s\", (0, _stringify2.default)(flow));\n var nextStage = this._firstUncompletedStage(flow);\n console.log(\"Next stage: %s\", nextStage);\n return nextStage;\n },\n\n /**\n * Pick one of the flows from the returned list\n * If a flow using all of the inputs is found, it will\n * be returned, otherwise, null will be returned.\n *\n * Only flows using all given inputs are chosen because it\n * is likley to be surprising if the user provides a\n * credential and it is not used. For example, for registration,\n * this could result in the email not being used which would leave\n * the account with no means to reset a password.\n *\n * @private\n * @return {object} flow\n * @throws {NoAuthFlowFoundError} If no suitable authentication flow can be found\n */\n _chooseFlow: function _chooseFlow() {\n var flows = this._data.flows || [];\n\n // we've been given an email or we've already done an email part\n var haveEmail = Boolean(this._inputs.emailAddress) || Boolean(this._emailSid);\n var haveMsisdn = Boolean(this._inputs.phoneCountry) && Boolean(this._inputs.phoneNumber);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(flows), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var flow = _step.value;\n\n var flowHasEmail = false;\n var flowHasMsisdn = false;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(flow.stages), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var stage = _step2.value;\n\n if (stage === EMAIL_STAGE_TYPE) {\n flowHasEmail = true;\n } else if (stage == MSISDN_STAGE_TYPE) {\n flowHasMsisdn = true;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n if (flowHasEmail == haveEmail && flowHasMsisdn == haveMsisdn) {\n return flow;\n }\n }\n // Throw an error with a fairly generic description, but with more\n // information such that the app can give a better one if so desired.\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var err = new Error(\"No appropriate authentication flow found\");\n err.name = 'NoAuthFlowFoundError';\n err.required_stages = [];\n if (haveEmail) err.required_stages.push(EMAIL_STAGE_TYPE);\n if (haveMsisdn) err.required_stages.push(MSISDN_STAGE_TYPE);\n err.available_flows = flows;\n throw err;\n },\n\n /**\n * Get the first uncompleted stage in the given flow\n *\n * @private\n * @param {object} flow\n * @return {string} login type\n */\n _firstUncompletedStage: function _firstUncompletedStage(flow) {\n var completed = (this._data || {}).completed || [];\n for (var i = 0; i < flow.stages.length; ++i) {\n var stageType = flow.stages[i];\n if (completed.indexOf(stageType) === -1) {\n return stageType;\n }\n }\n }\n};\n\n/** */\nmodule.exports = InteractiveAuth;\n//# sourceMappingURL=interactive-auth.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"device\" level for the current device.\n * This handler does not make use of the roomId parameter. This handler\n * will special-case features to support legacy settings.\n */\nvar DeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DeviceSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new device settings handler\n * @param {string[]} featureNames The names of known features.\n */\n function DeviceSettingsHandler(featureNames) {\n (0, _classCallCheck3.default)(this, DeviceSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DeviceSettingsHandler)).call(this));\n\n _this._featureNames = featureNames;\n return _this;\n }\n\n (0, _createClass3.default)(DeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n if (this._featureNames.includes(settingName)) {\n return this._readFeature(settingName);\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n var value = localStorage.getItem(\"notifications_enabled\");\n if (typeof value === \"string\") return value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"notificationBodyEnabled\") {\n var _value = localStorage.getItem(\"notifications_body_enabled\");\n if (typeof _value === \"string\") return _value === \"true\";\n return null; // wrong type or otherwise not set\n } else if (settingName === \"audioNotificationsEnabled\") {\n var _value2 = localStorage.getItem(\"audio_notifications_enabled\");\n if (typeof _value2 === \"string\") return _value2 === \"true\";\n return null; // wrong type or otherwise not set\n }\n\n var settings = this._getSettings() || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (this._featureNames.includes(settingName)) {\n this._writeFeature(settingName, newValue);\n return _bluebird2.default.resolve();\n }\n\n // Special case notifications\n if (settingName === \"notificationsEnabled\") {\n localStorage.setItem(\"notifications_enabled\", newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"notificationBodyEnabled\") {\n localStorage.setItem(\"notifications_body_enabled\", newValue);\n return _bluebird2.default.resolve();\n } else if (settingName === \"audioNotificationsEnabled\") {\n localStorage.setItem(\"audio_notifications_enabled\", newValue);\n return _bluebird2.default.resolve();\n }\n\n var settings = this._getSettings() || {};\n settings[settingName] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(settings));\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var value = localStorage.getItem(\"mx_local_settings\");\n if (!value) return null;\n return JSON.parse(value);\n }\n\n // Note: features intentionally don't use the same key as settings to avoid conflicts\n // and to be backwards compatible.\n\n }, {\n key: \"_readFeature\",\n value: function _readFeature(featureName) {\n if (_MatrixClientPeg2.default.get() && _MatrixClientPeg2.default.get().isGuest()) {\n // Guests should not have any labs features enabled.\n return false;\n }\n\n var value = localStorage.getItem(\"mx_labs_feature_\" + featureName);\n return value === \"true\";\n }\n }, {\n key: \"_writeFeature\",\n value: function _writeFeature(featureName, enabled) {\n localStorage.setItem(\"mx_labs_feature_\" + featureName, enabled);\n }\n }]);\n return DeviceSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-device\" level for the current device in a particular\n * room.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomDeviceSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomDeviceSettingsHandler, _SettingsHandler);\n\n function RoomDeviceSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomDeviceSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomDeviceSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomDeviceSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomDeviceSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case blacklist setting to use legacy values\n if (settingName === \"blacklistUnverifiedDevices\") {\n var _value = this._read(\"mx_local_settings\");\n if (_value && _value['blacklistUnverifiedDevicesPerRoom']) {\n return _value['blacklistUnverifiedDevicesPerRoom'][roomId];\n }\n }\n\n var value = this._read(this._getKey(settingName, roomId));\n if (value) return value.value;\n return null;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case blacklist setting for legacy structure\n if (settingName === \"blacklistUnverifiedDevices\") {\n var value = this._read(\"mx_local_settings\");\n if (!value) value = {};\n if (!value[\"blacklistUnverifiedDevicesPerRoom\"]) value[\"blacklistUnverifiedDevicesPerRoom\"] = {};\n value[\"blacklistUnverifiedDevicesPerRoom\"][roomId] = newValue;\n localStorage.setItem(\"mx_local_settings\", (0, _stringify2.default)(value));\n return _bluebird2.default.resolve();\n }\n\n if (newValue === null) {\n localStorage.removeItem(this._getKey(settingName, roomId));\n } else {\n newValue = (0, _stringify2.default)({ value: newValue });\n localStorage.setItem(this._getKey(settingName, roomId), newValue);\n }\n\n return _bluebird2.default.resolve();\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their device, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return localStorage !== undefined && localStorage !== null;\n }\n }, {\n key: \"_read\",\n value: function _read(key) {\n var rawValue = localStorage.getItem(key);\n if (!rawValue) return null;\n return JSON.parse(rawValue);\n }\n }, {\n key: \"_getKey\",\n value: function _getKey(settingName, roomId) {\n return \"mx_setting_\" + settingName + \"_\" + roomId;\n }\n }]);\n return RoomDeviceSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomDeviceSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomDeviceSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets settings at the \"default\" level. This handler does not support setting values.\n * This handler does not make use of the roomId parameter.\n */\nvar DefaultSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(DefaultSettingsHandler, _SettingsHandler);\n\n /**\n * Creates a new default settings handler with the given defaults\n * @param {object} defaults The default setting values, keyed by setting name.\n */\n function DefaultSettingsHandler(defaults) {\n (0, _classCallCheck3.default)(this, DefaultSettingsHandler);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DefaultSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(DefaultSettingsHandler)).call(this));\n\n _this._defaults = defaults;\n return _this;\n }\n\n (0, _createClass3.default)(DefaultSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n return this._defaults[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot set values on the default level handler\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true;\n }\n }]);\n return DefaultSettingsHandler;\n}(_SettingsHandler3.default); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DefaultSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=DefaultSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room-account\" level for the current user.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomAccountSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomAccountSettingsHandler, _SettingsHandler);\n\n function RoomAccountSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomAccountSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomAccountSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomAccountSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomAccountSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The event content should already be in an appropriate format, we just need\n // to get the right value.\n // don't fallback to {} because thats truthy and would imply there is an event specifying tint\n return this._getSettings(roomId, \"org.matrix.room.color_scheme\");\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n // Special case room color\n if (settingName === \"roomColor\") {\n // The new value should match our requirements, we just need to store it in the right place.\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"org.matrix.room.color_scheme\", newValue);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setRoomAccountData(roomId, \"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n\n // If they have the room, they can set their own account data\n return room !== undefined && room !== null;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomAccountSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomAccountSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomAccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"account\" level for the current user.\n * This handler does not make use of the roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AccountSettingHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(AccountSettingHandler, _SettingsHandler);\n\n function AccountSettingHandler() {\n (0, _classCallCheck3.default)(this, AccountSettingHandler);\n return (0, _possibleConstructorReturn3.default)(this, (AccountSettingHandler.__proto__ || (0, _getPrototypeOf2.default)(AccountSettingHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AccountSettingHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(\"org.matrix.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n var settings = this._getSettings() || {};\n var preferredValue = settings[settingName];\n\n if (preferredValue === null || preferredValue === undefined) {\n // Honour the old setting on read only\n if (settingName === \"hideAvatarChanges\" || settingName === \"hideDisplaynameChanges\") {\n preferredValue = settings[\"hideAvatarDisplaynameChanges\"];\n }\n }\n\n return preferredValue;\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(\"org.matrix.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"org.matrix.preview_urls\", _content);\n }\n\n var content = this._getSettings() || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().setAccountData(\"im.vector.web.settings\", content);\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return true; // It's their account, so they should be able to\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings() {\n var eventType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"im.vector.web.settings\";\n\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) return null;\n\n var event = cli.getAccountData(eventType);\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return AccountSettingHandler;\n}(_SettingsHandler3.default);\n\nexports.default = AccountSettingHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=AccountSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"room\" level.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(RoomSettingsHandler, _SettingsHandler);\n\n function RoomSettingsHandler() {\n (0, _classCallCheck3.default)(this, RoomSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (RoomSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(RoomSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(RoomSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n\n // Check to make sure that we actually got a boolean\n if (typeof content['disable'] !== \"boolean\") return null;\n return !content['disable'];\n }\n\n var settings = this._getSettings(roomId) || {};\n return settings[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n // Special case URL previews\n if (settingName === \"urlPreviewsEnabled\") {\n var _content = this._getSettings(roomId, \"org.matrix.room.preview_urls\") || {};\n _content['disable'] = !newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"org.matrix.room.preview_urls\", _content);\n }\n\n var content = this._getSettings(roomId) || {};\n content[settingName] = newValue;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"im.vector.web.settings\", content, \"\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(roomId);\n\n var eventType = \"im.vector.web.settings\";\n if (settingName === \"urlPreviewsEnabled\") eventType = \"org.matrix.room.preview_urls\";\n\n if (!room) return false;\n return room.currentState.maySendStateEvent(eventType, cli.getUserId());\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n var cli = _MatrixClientPeg2.default.get();\n return cli !== undefined && cli !== null;\n }\n }, {\n key: \"_getSettings\",\n value: function _getSettings(roomId) {\n var eventType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"im.vector.web.settings\";\n\n var room = _MatrixClientPeg2.default.get().getRoom(roomId);\n if (!room) return null;\n\n var event = room.currentState.getStateEvents(eventType, \"\");\n if (!event || !event.getContent()) return null;\n return event.getContent();\n }\n }]);\n return RoomSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = RoomSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomSettingsHandler.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nvar _SdkConfig = require(\"../../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Gets and sets settings at the \"config\" level. This handler does not make use of the\n * roomId parameter.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ConfigSettingsHandler = function (_SettingsHandler) {\n (0, _inherits3.default)(ConfigSettingsHandler, _SettingsHandler);\n\n function ConfigSettingsHandler() {\n (0, _classCallCheck3.default)(this, ConfigSettingsHandler);\n return (0, _possibleConstructorReturn3.default)(this, (ConfigSettingsHandler.__proto__ || (0, _getPrototypeOf2.default)(ConfigSettingsHandler)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(ConfigSettingsHandler, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var config = _SdkConfig2.default.get() || {};\n\n // Special case themes\n if (settingName === \"theme\") {\n return config[\"default_theme\"];\n }\n\n var settingsConfig = config[\"settingDefaults\"];\n if (!settingsConfig || !settingsConfig[settingName]) return null;\n return settingsConfig[settingName];\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n throw new Error(\"Cannot change settings at the config level\");\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return false;\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return true; // SdkConfig is always there\n }\n }]);\n return ConfigSettingsHandler;\n}(_SettingsHandler3.default);\n\nexports.default = ConfigSettingsHandler;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ConfigSettingsHandler.js.map","'use strict';\n\nvar extend = require('extend');\nvar isArray = require('util').isArray;\nvar isDate = require('util').isDate;\nvar sprintf = require(\"sprintf-js\").sprintf;\nvar events = require('events');\nvar except = require('except');\n\nvar strftime = require('./strftime');\n\nvar translationScope = 'counterpart';\n\nfunction isString(val) {\n return typeof val === 'string' || Object.prototype.toString.call(val) === '[object String]';\n}\n\nfunction isFunction(val) {\n return typeof val === 'function' || Object.prototype.toString.call(val) === '[object Function]';\n}\n\nfunction isPlainObject(val) {\n //Deal with older browsers (IE8) that don't return [object Null] in this case.\n if (val === null) {\n return false;\n }\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\nfunction isSymbol(key) {\n return isString(key) && key[0] === ':';\n}\n\nfunction hasOwnProp(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getEntry(translations, keys) {\n return keys.reduce(function(result, key) {\n if (isPlainObject(result) && hasOwnProp(result, key)) {\n return result[key];\n } else {\n return null;\n }\n }, translations);\n}\n\nfunction Counterpart() {\n events.EventEmitter.apply(this);\n\n this._registry = {\n locale: 'en',\n interpolate: true,\n fallbackLocales: [],\n scope: null,\n translations: {},\n interpolations: {},\n normalizedKeys: {},\n separator: '.',\n keepTrailingDot: false,\n keyTransformer: function(key) { return key; },\n generateMissingEntry: function(key) { return 'missing translation: ' + key; }\n };\n\n this.registerTranslations('en', require('./locales/en'));\n this.setMaxListeners(0);\n}\n\nCounterpart.prototype = events.EventEmitter.prototype;\nCounterpart.prototype.constructor = events.EventEmitter;\n\nCounterpart.prototype.getLocale = function() {\n return this._registry.locale;\n};\n\nCounterpart.prototype.setLocale = function(value) {\n var previous = this._registry.locale;\n\n if (previous != value) {\n this._registry.locale = value;\n this.emit('localechange', value, previous);\n }\n\n return previous;\n};\n\nCounterpart.prototype.getFallbackLocale = function() {\n return this._registry.fallbackLocales;\n};\n\nCounterpart.prototype.setFallbackLocale = function(value) {\n var previous = this._registry.fallbackLocales;\n this._registry.fallbackLocales = [].concat(value || []);\n return previous;\n};\n\nCounterpart.prototype.getAvailableLocales = function() {\n return this._registry.availableLocales || Object.keys(this._registry.translations);\n};\n\nCounterpart.prototype.setAvailableLocales = function(value) {\n var previous = this.getAvailableLocales();\n this._registry.availableLocales = value;\n return previous;\n};\n\nCounterpart.prototype.getSeparator = function() {\n return this._registry.separator;\n};\n\nCounterpart.prototype.setSeparator = function(value) {\n var previous = this._registry.separator;\n this._registry.separator = value;\n return previous;\n};\n\nCounterpart.prototype.setInterpolate = function(value) {\n var previous = this._registry.interpolate;\n this._registry.interpolate = value;\n return previous;\n};\n\nCounterpart.prototype.getInterpolate = function() {\n return this._registry.interpolate;\n};\n\nCounterpart.prototype.setKeyTransformer = function(value) {\n var previous = this._registry.keyTransformer;\n this._registry.keyTransformer = value;\n return previous;\n};\n\nCounterpart.prototype.getKeyTransformer = function() {\n return this._registry.keyTransformer;\n};\n\nCounterpart.prototype.setMissingEntryGenerator = function(value) {\n var previous = this._registry.generateMissingEntry;\n this._registry.generateMissingEntry = value;\n return previous;\n};\n\nCounterpart.prototype.getMissingEntryGenerator = function() {\n return this._registry.generateMissingEntry;\n};\n\nCounterpart.prototype.registerTranslations = function(locale, data) {\n var translations = {};\n translations[locale] = data;\n extend(true, this._registry.translations, translations);\n return translations;\n};\n\nCounterpart.prototype.registerInterpolations = function(data) {\n return extend(true, this._registry.interpolations, data);\n};\n\nCounterpart.prototype.onLocaleChange =\nCounterpart.prototype.addLocaleChangeListener = function(callback) {\n this.addListener('localechange', callback);\n};\n\nCounterpart.prototype.offLocaleChange =\nCounterpart.prototype.removeLocaleChangeListener = function(callback) {\n this.removeListener('localechange', callback);\n};\n\nCounterpart.prototype.onTranslationNotFound =\nCounterpart.prototype.addTranslationNotFoundListener = function(callback) {\n this.addListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.offTranslationNotFound =\nCounterpart.prototype.removeTranslationNotFoundListener = function(callback) {\n this.removeListener('translationnotfound', callback);\n};\n\nCounterpart.prototype.onError =\nCounterpart.prototype.addErrorListener = function(callback) {\n this.addListener('error', callback);\n};\n\nCounterpart.prototype.offError =\nCounterpart.prototype.removeErrorListener = function(callback) {\n this.removeListener('error', callback);\n};\n\nCounterpart.prototype.translate = function(key, options) {\n if (!isArray(key) && !isString(key) || !key.length) {\n throw new Error('invalid argument: key');\n }\n\n if (isSymbol(key)) {\n key = key.substr(1);\n }\n\n key = this._registry.keyTransformer(key, options);\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n delete options.locale;\n\n var scope = options.scope || this._registry.scope;\n delete options.scope;\n\n var separator = options.separator || this._registry.separator;\n delete options.separator;\n\n var fallbackLocales = [].concat(options.fallbackLocale || this._registry.fallbackLocales);\n delete options.fallbackLocale;\n\n var keys = this._normalizeKeys(locale, scope, key, separator);\n\n var entry = getEntry(this._registry.translations, keys);\n\n if (entry === null) {\n this.emit('translationnotfound', locale, key, options.fallback, scope);\n\n if (options.fallback) {\n entry = this._fallback(locale, scope, key, options.fallback, options);\n }\n }\n\n if (entry === null && fallbackLocales.length > 0 && fallbackLocales.indexOf(locale) === -1) {\n for (var i = 0, ii = fallbackLocales.length; i < ii; i++) {\n var fallbackLocale = fallbackLocales[i];\n var fallbackKeys = this._normalizeKeys(fallbackLocale, scope, key, separator);\n entry = getEntry(this._registry.translations, fallbackKeys);\n\n if (entry) {\n locale = fallbackLocale;\n break;\n }\n }\n }\n\n if (entry === null) {\n entry = this._registry.generateMissingEntry(keys.join(separator));\n }\n\n entry = this._pluralize(locale, entry, options.count);\n\n if (this._registry.interpolate !== false && options.interpolate !== false) {\n entry = this._interpolate(entry, options);\n }\n\n return entry;\n};\n\nCounterpart.prototype.localize = function(object, options) {\n if (!isDate(object)) {\n throw new Error('invalid argument: object must be a date');\n }\n\n options = extend(true, {}, options);\n\n var locale = options.locale || this._registry.locale;\n var scope = options.scope || translationScope;\n var type = options.type || 'datetime';\n var format = options.format || 'default';\n\n options = { locale: locale, scope: scope, interpolate: false };\n format = this.translate(['formats', type, format], extend(true, {}, options));\n\n return strftime(object, format, this.translate('names', options));\n};\n\nCounterpart.prototype._pluralize = function(locale, entry, count) {\n if (typeof entry !== 'object' || entry === null || typeof count !== 'number') {\n return entry;\n }\n\n var pluralizeFunc = this.translate('pluralize', { locale: locale, scope: translationScope });\n\n if (Object.prototype.toString.call(pluralizeFunc) !== '[object Function]') {\n return pluralizeFunc;\n }\n\n return pluralizeFunc(entry, count);\n};\n\nCounterpart.prototype.withLocale = function(locale, callback, context) {\n var previous = this._registry.locale;\n this._registry.locale = locale;\n var result = callback.call(context);\n this._registry.locale = previous;\n return result;\n};\n\nCounterpart.prototype.withScope = function(scope, callback, context) {\n var previous = this._registry.scope;\n this._registry.scope = scope;\n var result = callback.call(context);\n this._registry.scope = previous;\n return result;\n};\n\nCounterpart.prototype.withSeparator = function(separator, callback, context) {\n var previous = this.setSeparator(separator);\n var result = callback.call(context);\n this.setSeparator(previous);\n return result;\n};\n\nCounterpart.prototype._normalizeKeys = function(locale, scope, key, separator) {\n var keys = [];\n\n keys = keys.concat(this._normalizeKey(locale, separator));\n keys = keys.concat(this._normalizeKey(scope, separator));\n keys = keys.concat(this._normalizeKey(key, separator));\n\n return keys;\n};\n\nCounterpart.prototype._normalizeKey = function(key, separator) {\n this._registry.normalizedKeys[separator] = this._registry.normalizedKeys[separator] || {};\n\n this._registry.normalizedKeys[separator][key] = this._registry.normalizedKeys[separator][key] || (function(key) {\n if (isArray(key)) {\n var normalizedKeyArray = key.map(function(k) { return this._normalizeKey(k, separator); }.bind(this));\n\n return [].concat.apply([], normalizedKeyArray);\n } else {\n if (typeof key === 'undefined' || key === null) {\n return [];\n }\n\n var keys = key.split(separator);\n\n for (var i = keys.length - 1; i >= 0; i--) {\n if (keys[i] === '') {\n keys.splice(i, 1);\n\n if (this._registry.keepTrailingDot === true && i == keys.length) {\n keys[keys.length - 1] += '' + separator;\n }\n }\n }\n\n return keys;\n }\n }.bind(this))(key);\n\n return this._registry.normalizedKeys[separator][key];\n};\n\nCounterpart.prototype._interpolate = function(entry, values) {\n if (typeof entry !== 'string') {\n return entry;\n }\n\n try {\n return sprintf(entry, extend({}, this._registry.interpolations, values));\n } catch (err) {\n if (this.listenerCount('error') > 0) {\n this.emit('error', err, entry, values);\n } else {\n throw err;\n }\n return null;\n }\n};\n\nCounterpart.prototype._resolve = function(locale, scope, object, subject, options) {\n options = options || {};\n\n if (options.resolve === false) {\n return subject;\n }\n\n var result;\n\n if (isSymbol(subject)) {\n result = this.translate(subject, extend({}, options, { locale: locale, scope: scope }));\n } else if (isFunction(subject)) {\n var dateOrTime;\n\n if (options.object) {\n dateOrTime = options.object;\n delete options.object;\n } else {\n dateOrTime = object;\n }\n\n result = this._resolve(locale, scope, object, subject(dateOrTime, options));\n } else {\n result = subject;\n }\n\n return /^missing translation:/.test(result) ? null : result;\n};\n\nCounterpart.prototype._fallback = function(locale, scope, object, subject, options) {\n options = except(options, 'fallback');\n\n if (isArray(subject)) {\n for (var i = 0, ii = subject.length; i < ii; i++) {\n var result = this._resolve(locale, scope, object, subject[i], options);\n\n if (result) {\n return result;\n }\n }\n\n return null;\n } else {\n return this._resolve(locale, scope, object, subject, options);\n }\n};\n\nvar instance = new Counterpart();\n\nfunction translate() {\n return instance.translate.apply(instance, arguments);\n}\n\nextend(translate, instance, {\n Instance: Counterpart,\n Translator: Counterpart\n});\n\nmodule.exports = translate;\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^\\)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[\\+\\-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, match, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (Array.isArray(parse_tree[i])) {\n match = parse_tree[i] // convenience purposes only\n if (match[2]) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < match[2].length; k++) {\n if (!arg.hasOwnProperty(match[2][k])) {\n throw new Error(sprintf('[sprintf] property \"%s\" does not exist', match[2][k]))\n }\n arg = arg[match[2][k]]\n }\n }\n else if (match[1]) { // positional argument (explicit)\n arg = argv[match[1]]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(match[8]) && re.not_primitive.test(match[8]) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(match[8]) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(match[8])) {\n is_positive = arg >= 0\n }\n\n switch (match[8]) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, match[6] ? parseInt(match[6]) : 0)\n break\n case 'e':\n arg = match[7] ? parseFloat(arg).toExponential(match[7]) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg)\n break\n case 'g':\n arg = match[7] ? String(Number(arg.toPrecision(match[7]))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (match[7] ? arg.substring(0, match[7]) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(match[8])) {\n output += arg\n }\n else {\n if (re.number.test(match[8]) && (!is_positive || match[3])) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = match[4] ? match[4] === '0' ? '0' : match[4].charAt(1) : ' '\n pad_length = match[6] - (sign + arg).length\n pad = match[6] ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += match[5] ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n parse_tree.push(match)\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}()\n","'use strict';\n\nvar ap = Array.prototype;\nvar concat = ap.concat;\nvar slice = ap.slice;\nvar indexOf = require('indexof');\n\nfunction except(object) {\n var result = {};\n var keys = concat.apply(ap, slice.call(arguments, 1));\n\n for (var key in object) {\n if (indexOf(keys, key) === -1) {\n result[key] = object[key];\n }\n }\n\n return result;\n}\n\nmodule.exports = except;\n","\nvar indexOf = [].indexOf;\n\nmodule.exports = function(arr, obj){\n if (indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","'use strict';\n\nvar dateNames = require('date-names');\n\nfunction strftime(date, format, names) {\n var timestamp = date.getTime();\n\n names = names || dateNames;\n\n return format.replace(/%([-_0]?.)/g, function(_, c) {\n var padding = null;\n\n if (c.length == 2) {\n switch (c[0]) {\n case '-': padding = ''; break;\n case '_': padding = ' '; break;\n case '0': padding = '0'; break;\n default: return _; // should never reach this one\n }\n\n c = c[1];\n }\n\n switch (c) {\n case 'A': return names.days[date.getDay()];\n case 'a': return names.abbreviated_days[date.getDay()];\n case 'B': return names.months[date.getMonth()];\n case 'b': return names.abbreviated_months[date.getMonth()];\n case 'C': return pad(Math.floor(date.getFullYear() / 100), padding);\n case 'D': return strftime(date, '%m/%d/%y');\n case 'd': return pad(date.getDate(), padding);\n case 'e': return date.getDate();\n case 'F': return strftime(date, '%Y-%m-%d');\n case 'H': return pad(date.getHours(), padding);\n case 'h': return names.abbreviated_months[date.getMonth()];\n case 'I': return pad(hours12(date), padding);\n case 'j': return pad(Math.ceil((date.getTime() - (new Date(date.getFullYear(), 0, 1)).getTime()) / (1000 * 60 * 60 * 24)), 3);\n case 'k': return pad(date.getHours(), padding === null ? ' ' : padding);\n case 'L': return pad(Math.floor(timestamp % 1000), 3);\n case 'l': return pad(hours12(date), padding === null ? ' ' : padding);\n case 'M': return pad(date.getMinutes(), padding);\n case 'm': return pad(date.getMonth() + 1, padding);\n case 'n': return '\\n';\n case 'o': return String(date.getDate()) + ordinal(date.getDate());\n case 'P': return date.getHours() < 12 ? names.am.toLowerCase() : names.pm.toLowerCase();\n case 'p': return date.getHours() < 12 ? names.am.toUpperCase() : names.pm.toUpperCase();\n case 'R': return strftime(date, '%H:%M');\n case 'r': return strftime(date, '%I:%M:%S %p');\n case 'S': return pad(date.getSeconds(), padding);\n case 's': return Math.floor(timestamp / 1000);\n case 'T': return strftime(date, '%H:%M:%S');\n case 't': return '\\t';\n case 'U': return pad(weekNumber(date, 'sunday'), padding);\n case 'u': return date.getDay() === 0 ? 7 : date.getDay();\n case 'v': return strftime(date, '%e-%b-%Y');\n case 'W': return pad(weekNumber(date, 'monday'), padding);\n case 'w': return date.getDay();\n case 'Y': return date.getFullYear();\n case 'y': var y = String(date.getFullYear()); return y.slice(y.length - 2);\n case 'Z': var tzString = date.toString().match(/\\((\\w+)\\)/); return tzString && tzString[1] || '';\n case 'z': var off = date.getTimezoneOffset(); return (off > 0 ? '-' : '+') + pad(Math.round(Math.abs(off / 60)), 2) + ':' + pad(off % 60, 2);\n default: return c;\n }\n });\n}\n\nfunction pad(n, padding, length) {\n if (typeof padding === 'number') {\n length = padding;\n padding = '0';\n }\n\n if (padding === null) {\n padding = '0';\n }\n\n length = length || 2;\n\n var s = String(n);\n\n if (padding) {\n while (s.length < length) {\n s = padding + s;\n }\n }\n\n return s;\n}\n\nfunction hours12(date) {\n var hour = date.getHours();\n\n if (hour === 0) {\n hour = 12;\n } else if (hour > 12) {\n hour -= 12;\n }\n\n return hour;\n}\n\nfunction ordinal(n) {\n var i = n % 10, ii = n % 100;\n\n if ((ii >= 11 && ii <= 13) || i === 0 || i >= 4) {\n return 'th';\n }\n\n switch (i) {\n case 1: return 'st';\n case 2: return 'nd';\n case 3: return 'rd';\n }\n}\n\nfunction weekNumber(date, firstWeekday) {\n firstWeekday = firstWeekday || 'sunday';\n\n var wday = date.getDay();\n\n if (firstWeekday == 'monday') {\n if (wday === 0) { // Sunday\n wday = 6;\n } else {\n wday--;\n }\n }\n\n var\n firstDayOfYear = new Date(date.getFullYear(), 0, 1),\n yday = (date - firstDayOfYear) / 86400000,\n weekNum = (yday + 7 - wday) / 7;\n\n return Math.floor(weekNum);\n}\n\nmodule.exports = strftime;\n","\"use strict\";\nmodule.exports = require('./en');\n","// The translations in this file are added by default.\n\n'use strict';\n\nmodule.exports = {\n counterpart: {\n names: require('date-names/en'),\n pluralize: require('pluralizers/en'),\n\n formats: {\n date: {\n 'default': '%a, %e %b %Y',\n long: '%A, %B %o, %Y',\n short: '%b %e'\n },\n\n time: {\n 'default': '%H:%M',\n long: '%H:%M:%S %z',\n short: '%H:%M'\n },\n\n datetime: {\n 'default': '%a, %e %b %Y %H:%M',\n long: '%A, %B %o, %Y %H:%M:%S %z',\n short: '%e %b %H:%M'\n }\n }\n }\n};\n","'use strict';\n\nmodule.exports = function(entry, count) {\n var key;\n\n if (count === 0 && 'zero' in entry) {\n key = 'zero';\n }\n\n key = key || (count === 1 ? 'one' : 'other');\n\n return entry[key];\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SETTINGS = undefined;\n\nvar _languageHandler = require(\"../languageHandler\");\n\nvar _NotificationControllers = require(\"./controllers/NotificationControllers\");\n\nvar _LazyLoadingController = require(\"./controllers/LazyLoadingController\");\n\nvar _LazyLoadingController2 = _interopRequireDefault(_LazyLoadingController);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// These are just a bunch of helper arrays to avoid copy/pasting a bunch of times\nvar LEVELS_ROOM_SETTINGS = ['device', 'room-device', 'room-account', 'account', 'config']; /*\n Copyright 2017 Travis Ralston\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LEVELS_ROOM_SETTINGS_WITH_ROOM = ['device', 'room-device', 'room-account', 'account', 'config', 'room'];\nvar LEVELS_ACCOUNT_SETTINGS = ['device', 'account', 'config'];\nvar LEVELS_FEATURE = ['device', 'config'];\nvar LEVELS_DEVICE_ONLY_SETTINGS = ['device'];\nvar LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG = ['device', 'config'];\n\nvar SETTINGS = exports.SETTINGS = {\n // EXAMPLE SETTING:\n // \"my-setting\": {\n // // Must be set to true for features. Default is 'false'.\n // isFeature: false,\n //\n // // Display names are strongly recommended for clarity.\n // displayName: _td(\"Cool Name\"),\n //\n // // Display name can also be an object for different levels.\n // //displayName: {\n // // \"device\": _td(\"Name for when the setting is used at 'device'\"),\n // // \"room\": _td(\"Name for when the setting is used at 'room'\"),\n // // \"default\": _td(\"The name for all other levels\"),\n // //}\n //\n // // The supported levels are required. Preferably, use the preset arrays\n // // at the top of this file to define this rather than a custom array.\n // supportedLevels: [\n // // The order does not matter.\n //\n // \"device\", // Affects the current device only\n // \"room-device\", // Affects the current room on the current device\n // \"room-account\", // Affects the current room for the current account\n // \"account\", // Affects the current account\n // \"room\", // Affects the current room (controlled by room admins)\n // \"config\", // Affects the current application\n //\n // // \"default\" is always supported and does not get listed here.\n // ],\n //\n // // Required. Can be any data type. The value specified here should match\n // // the data being stored (ie: if a boolean is used, the setting should\n // // represent a boolean).\n // default: {\n // your: \"value\",\n // },\n //\n // // Optional settings controller. See SettingsController for more information.\n // controller: new MySettingController(),\n //\n // // Optional flag to make supportedLevels be respected as the order to handle\n // // settings. The first element is treated as \"most preferred\". The \"default\"\n // // level is always appended to the end.\n // supportedLevelsAreOrdered: false,\n // },\n \"feature_pinning\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Message Pinning\"),\n supportedLevels: LEVELS_FEATURE,\n default: false\n },\n \"feature_lazyloading\": {\n isFeature: true,\n displayName: (0, _languageHandler._td)(\"Increase performance by only loading room members on first view\"),\n supportedLevels: LEVELS_FEATURE,\n controller: new _LazyLoadingController2.default(),\n default: true\n },\n \"MessageComposerInput.dontSuggestEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable Emoji suggestions while typing'),\n default: false\n },\n \"useCompactLayout\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Use compact timeline layout'),\n default: false\n },\n \"hideRedactions\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide removed messages'),\n default: false\n },\n \"hideJoinLeaves\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide join/leave messages (invites/kicks/bans unaffected)'),\n default: false\n },\n \"hideAvatarChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide avatar changes'),\n default: false\n },\n \"hideDisplaynameChanges\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)('Hide display name changes'),\n default: false\n },\n \"hideReadReceipts\": {\n supportedLevels: LEVELS_ROOM_SETTINGS,\n displayName: (0, _languageHandler._td)('Hide read receipts'),\n default: false\n },\n \"showTwelveHourTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show timestamps in 12 hour format (e.g. 2:30pm)'),\n default: false\n },\n \"alwaysShowTimestamps\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show message timestamps'),\n default: false\n },\n \"autoplayGifsAndVideos\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Autoplay GIFs and videos'),\n default: false\n },\n \"alwaysShowEncryptionIcons\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Always show encryption icons'),\n default: true\n },\n \"enableSyntaxHighlightLanguageDetection\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable automatic language detection for syntax highlighting'),\n default: false\n },\n \"Pill.shouldHidePillAvatar\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Hide avatars in user and room mentions'),\n default: false\n },\n \"TextualBody.disableBigEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable big emoji in chat'),\n default: false\n },\n \"MessageComposerInput.isRichTextEnabled\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"MessageComposer.showFormatting\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: false\n },\n \"dontSendTypingNotifications\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)(\"Don't send typing notifications\"),\n default: false\n },\n \"MessageComposerInput.autoReplaceEmoji\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Automatically replace plain text Emoji'),\n default: false\n },\n \"VideoView.flipVideoHorizontally\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Mirror local video feed'),\n default: false\n },\n \"TagPanel.disableTagPanel\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Disable Community Filter Panel'),\n default: false\n },\n \"theme\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n default: \"light\"\n },\n \"webRtcForceTURN\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Disable Peer-to-Peer for 1:1 calls'),\n default: false\n },\n \"webrtc_audiooutput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_audioinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"webrtc_videoinput\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: null\n },\n \"language\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: \"en\"\n },\n \"analyticsOptIn\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n displayName: (0, _languageHandler._td)('Send analytics data'),\n default: false\n },\n \"showCookieBar\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: true\n },\n \"autocompleteDelay\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS_WITH_CONFIG,\n default: 200\n },\n \"blacklistUnverifiedDevices\": {\n // We specifically want to have room-device > device so that users may set a device default\n // with a per-room override.\n supportedLevels: ['room-device', 'device'],\n supportedLevelsAreOrdered: true,\n displayName: {\n \"default\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices from this device'),\n \"room-device\": (0, _languageHandler._td)('Never send encrypted messages to unverified devices in this room from this device')\n },\n default: false\n },\n \"urlPreviewsEnabled\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: {\n \"default\": (0, _languageHandler._td)('Enable inline URL previews by default'),\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\"),\n \"room\": (0, _languageHandler._td)(\"Enable URL previews by default for participants in this room\")\n },\n default: true\n },\n \"urlPreviewsEnabled_e2ee\": {\n supportedLevels: ['room-device', 'room-account'],\n displayName: {\n \"room-account\": (0, _languageHandler._td)(\"Enable URL previews for this room (only affects you)\")\n },\n default: false\n },\n \"roomColor\": {\n supportedLevels: LEVELS_ROOM_SETTINGS_WITH_ROOM,\n displayName: (0, _languageHandler._td)(\"Room Colour\"),\n default: {\n primary_color: null, // Hex string, eg: #000000\n secondary_color: null // Hex string, eg: #000000\n }\n },\n \"notificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: false,\n controller: new _NotificationControllers.NotificationsEnabledController()\n },\n \"notificationBodyEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.NotificationBodyEnabledController()\n },\n \"audioNotificationsEnabled\": {\n supportedLevels: LEVELS_DEVICE_ONLY_SETTINGS,\n default: true,\n controller: new _NotificationControllers.AudioNotificationsEnabledController()\n },\n \"enableWidgetScreenshots\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Enable widget screenshots on supported widgets'),\n default: false\n },\n \"PinnedEvents.isOpen\": {\n supportedLevels: ['room-device'],\n default: false\n },\n \"RoomSubList.showEmpty\": {\n supportedLevels: LEVELS_ACCOUNT_SETTINGS,\n displayName: (0, _languageHandler._td)('Show empty room list headings'),\n default: true\n }\n};\n//# sourceMappingURL=Settings.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AudioNotificationsEnabledController = exports.NotificationBodyEnabledController = exports.NotificationsEnabledController = undefined;\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController4 = require(\"./SettingController\");\n\nvar _SettingController5 = _interopRequireDefault(_SettingController4);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _pushprocessor = require(\"matrix-js-sdk/lib/pushprocessor\");\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isMasterRuleEnabled() {\n // Return the value of the master push rule as a default\n var processor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var masterRule = processor.getPushRuleById(\".m.rule.master\");\n\n if (!masterRule) {\n console.warn(\"No master push rule! Notifications are disabled for this user.\");\n return false;\n }\n\n // Why enabled == false means \"enabled\" is beyond me.\n return !masterRule.enabled;\n}\n\n// XXX: This feels wrong.\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar NotificationsEnabledController = exports.NotificationsEnabledController = function (_SettingController) {\n (0, _inherits3.default)(NotificationsEnabledController, _SettingController);\n\n function NotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue, calculatedAtLevel) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null || calculatedAtLevel === \"default\") {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }, {\n key: \"onChange\",\n value: function onChange(level, roomId, newValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n\n if (Notifier.supportsDesktopNotifications()) {\n Notifier.setEnabled(newValue);\n }\n }\n }]);\n return NotificationsEnabledController;\n}(_SettingController5.default);\n\nvar NotificationBodyEnabledController = exports.NotificationBodyEnabledController = function (_SettingController2) {\n (0, _inherits3.default)(NotificationBodyEnabledController, _SettingController2);\n\n function NotificationBodyEnabledController() {\n (0, _classCallCheck3.default)(this, NotificationBodyEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (NotificationBodyEnabledController.__proto__ || (0, _getPrototypeOf2.default)(NotificationBodyEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(NotificationBodyEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n if (calculatedValue === null) {\n return isMasterRuleEnabled();\n }\n\n return calculatedValue;\n }\n }]);\n return NotificationBodyEnabledController;\n}(_SettingController5.default);\n\nvar AudioNotificationsEnabledController = exports.AudioNotificationsEnabledController = function (_SettingController3) {\n (0, _inherits3.default)(AudioNotificationsEnabledController, _SettingController3);\n\n function AudioNotificationsEnabledController() {\n (0, _classCallCheck3.default)(this, AudioNotificationsEnabledController);\n return (0, _possibleConstructorReturn3.default)(this, (AudioNotificationsEnabledController.__proto__ || (0, _getPrototypeOf2.default)(AudioNotificationsEnabledController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(AudioNotificationsEnabledController, [{\n key: \"getValueOverride\",\n value: function getValueOverride(level, roomId, calculatedValue) {\n var Notifier = require('../../Notifier'); // avoids cyclical references\n if (!Notifier.isPossible()) return false;\n\n // Note: Audio notifications are *not* enabled by default.\n return calculatedValue;\n }\n }]);\n return AudioNotificationsEnabledController;\n}(_SettingController5.default);\n//# sourceMappingURL=NotificationControllers.js.map","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher');\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * \n * @preventMunge\n */\n\n'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * case 'city-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\nvar Dispatcher = (function () {\n function Dispatcher() {\n _classCallCheck(this, Dispatcher);\n\n this._callbacks = {};\n this._isDispatching = false;\n this._isHandled = {};\n this._isPending = {};\n this._lastID = 1;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n */\n\n Dispatcher.prototype.register = function register(callback) {\n var id = _prefix + this._lastID++;\n this._callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n */\n\n Dispatcher.prototype.unregister = function unregister(id) {\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n delete this._callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n */\n\n Dispatcher.prototype.waitFor = function waitFor(ids) {\n !this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : undefined;\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this._isPending[id]) {\n !this._isHandled[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : undefined;\n continue;\n }\n !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined;\n this._invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n */\n\n Dispatcher.prototype.dispatch = function dispatch(payload) {\n !!this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : undefined;\n this._startDispatching(payload);\n try {\n for (var id in this._callbacks) {\n if (this._isPending[id]) {\n continue;\n }\n this._invokeCallback(id);\n }\n } finally {\n this._stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n */\n\n Dispatcher.prototype.isDispatching = function isDispatching() {\n return this._isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @internal\n */\n\n Dispatcher.prototype._invokeCallback = function _invokeCallback(id) {\n this._isPending[id] = true;\n this._callbacks[id](this._pendingPayload);\n this._isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._startDispatching = function _startDispatching(payload) {\n for (var id in this._callbacks) {\n this._isPending[id] = false;\n this._isHandled[id] = false;\n }\n this._pendingPayload = payload;\n this._isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n\n Dispatcher.prototype._stopDispatching = function _stopDispatching() {\n delete this._pendingPayload;\n this._isDispatching = false;\n };\n\n return Dispatcher;\n})();\n\nmodule.exports = Dispatcher;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _SettingController2 = require(\"./SettingController\");\n\nvar _SettingController3 = _interopRequireDefault(_SettingController2);\n\nvar _MatrixClientPeg = require(\"../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require(\"../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LazyLoadingController = function (_SettingController) {\n (0, _inherits3.default)(LazyLoadingController, _SettingController);\n\n function LazyLoadingController() {\n (0, _classCallCheck3.default)(this, LazyLoadingController);\n return (0, _possibleConstructorReturn3.default)(this, (LazyLoadingController.__proto__ || (0, _getPrototypeOf2.default)(LazyLoadingController)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(LazyLoadingController, [{\n key: \"onChange\",\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(level, roomId, newValue) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (_PlatformPeg2.default.get()) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 2:\n\n _MatrixClientPeg2.default.get().stopClient();\n _context.next = 5;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().store.deleteAllData());\n\n case 5:\n _PlatformPeg2.default.get().reload();\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function onChange(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return onChange;\n }()\n }]);\n return LazyLoadingController;\n}(_SettingController3.default); /*\n Copyright 2018 New Vector\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = LazyLoadingController;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LazyLoadingController.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require(\"babel-runtime/core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require(\"babel-runtime/helpers/possibleConstructorReturn\");\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require(\"babel-runtime/helpers/inherits\");\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsHandler2 = require(\"./SettingsHandler\");\n\nvar _SettingsHandler3 = _interopRequireDefault(_SettingsHandler2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A wrapper for a SettingsHandler that performs local echo on\n * changes to settings. This wrapper will use the underlying\n * handler as much as possible to ensure values are not stale.\n */\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar LocalEchoWrapper = function (_SettingsHandler) {\n (0, _inherits3.default)(LocalEchoWrapper, _SettingsHandler);\n\n /**\n * Creates a new local echo wrapper\n * @param {SettingsHandler} handler The handler to wrap\n */\n function LocalEchoWrapper(handler) {\n (0, _classCallCheck3.default)(this, LocalEchoWrapper);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LocalEchoWrapper.__proto__ || (0, _getPrototypeOf2.default)(LocalEchoWrapper)).call(this));\n\n _this._handler = handler;\n _this._cache = {\n // settingName: { roomId: value }\n };\n return _this;\n }\n\n (0, _createClass3.default)(LocalEchoWrapper, [{\n key: \"getValue\",\n value: function getValue(settingName, roomId) {\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n var bySetting = this._cache[settingName];\n if (bySetting && bySetting.hasOwnProperty(cacheRoomId)) {\n return bySetting[roomId];\n }\n\n return this._handler.getValue(settingName, roomId);\n }\n }, {\n key: \"setValue\",\n value: function setValue(settingName, roomId, newValue) {\n if (!this._cache[settingName]) this._cache[settingName] = {};\n var bySetting = this._cache[settingName];\n\n var cacheRoomId = roomId ? roomId : \"UNDEFINED\"; // avoid weird keys\n bySetting[cacheRoomId] = newValue;\n\n var handlerPromise = this._handler.setValue(settingName, roomId, newValue);\n return _bluebird2.default.resolve(handlerPromise).finally(function () {\n delete bySetting[cacheRoomId];\n });\n }\n }, {\n key: \"canSetValue\",\n value: function canSetValue(settingName, roomId) {\n return this._handler.canSetValue(settingName, roomId);\n }\n }, {\n key: \"isSupported\",\n value: function isSupported() {\n return this._handler.isSupported();\n }\n }]);\n return LocalEchoWrapper;\n}(_SettingsHandler3.default);\n\nexports.default = LocalEchoWrapper;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LocalEchoWrapper.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: migrate from sync_state to MatrixActions.sync so that more js-sdk events\n// become dispatches in the same place.\n/**\n * Create a MatrixActions.sync action that represents a MatrixClient `sync` event,\n * each parameter mapping to a key-value in the action.\n *\n * @param {MatrixClient} matrixClient the matrix client\n * @param {string} state the current sync state.\n * @param {string} prevState the previous sync state.\n * @returns {Object} an action of type MatrixActions.sync.\n */\nfunction createSyncAction(matrixClient, state, prevState) {\n return {\n action: 'MatrixActions.sync',\n state: state,\n prevState: prevState,\n matrixClient: matrixClient\n };\n}\n\n/**\n * @typedef AccountDataAction\n * @type {Object}\n * @property {string} action 'MatrixActions.accountData'.\n * @property {MatrixEvent} event the MatrixEvent that triggered the dispatch.\n * @property {string} event_type the type of the MatrixEvent, e.g. \"m.direct\".\n * @property {Object} event_content the content of the MatrixEvent.\n */\n\n/**\n * Create a MatrixActions.accountData action that represents a MatrixClient `accountData`\n * matrix event.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} accountDataEvent the account data event.\n * @returns {AccountDataAction} an action of type MatrixActions.accountData.\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction createAccountDataAction(matrixClient, accountDataEvent) {\n return {\n action: 'MatrixActions.accountData',\n event: accountDataEvent,\n event_type: accountDataEvent.getType(),\n event_content: accountDataEvent.getContent()\n };\n}\n\n/**\n * @typedef RoomAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room'.\n * @property {Room} room the Room that was stored.\n */\n\n/**\n * Create a MatrixActions.Room action that represents a MatrixClient `Room`\n * matrix event, emitted when a Room is stored in the client.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room the Room that was stored.\n * @returns {RoomAction} an action of type `MatrixActions.Room`.\n */\nfunction createRoomAction(matrixClient, room) {\n return { action: 'MatrixActions.Room', room: room };\n}\n\n/**\n * @typedef RoomTagsAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.tags'.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.tags action that represents a MatrixClient\n * `Room.tags` matrix event, emitted when the m.tag room account data\n * event is updated.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} roomTagsEvent the m.tag event.\n * @param {Room} room the Room whose tags were changed.\n * @returns {RoomTagsAction} an action of type `MatrixActions.Room.tags`.\n */\nfunction createRoomTagsAction(matrixClient, roomTagsEvent, room) {\n return { action: 'MatrixActions.Room.tags', room: room };\n}\n\n/**\n * @typedef RoomTimelineAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.timeline'.\n * @property {boolean} isLiveEvent whether the event was attached to a\n * live timeline.\n * @property {boolean} isLiveUnfilteredRoomTimelineEvent whether the\n * event was attached to a timeline in the set of unfiltered timelines.\n * @property {Room} room the Room whose tags changed.\n */\n\n/**\n * Create a MatrixActions.Room.timeline action that represents a\n * MatrixClient `Room.timeline` matrix event, emitted when an event\n * is added to or removed from a timeline of a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} timelineEvent the event that was added/removed.\n * @param {Room} room the Room that was stored.\n * @param {boolean} toStartOfTimeline whether the event is being added\n * to the start (and not the end) of the timeline.\n * @param {boolean} removed whether the event was removed from the\n * timeline.\n * @param {Object} data\n * @param {boolean} data.liveEvent whether the event is a live event,\n * belonging to a live timeline.\n * @param {EventTimeline} data.timeline the timeline being altered.\n * @returns {RoomTimelineAction} an action of type `MatrixActions.Room.timeline`.\n */\nfunction createRoomTimelineAction(matrixClient, timelineEvent, room, toStartOfTimeline, removed, data) {\n return {\n action: 'MatrixActions.Room.timeline',\n event: timelineEvent,\n isLiveEvent: data.liveEvent,\n isLiveUnfilteredRoomTimelineEvent: room && data.timeline.getTimelineSet() === room.getUnfilteredTimelineSet()\n };\n}\n\n/**\n * @typedef RoomMembershipAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Room.myMembership'.\n * @property {Room} room to room for which the self-membership changed.\n * @property {string} membership the new membership\n * @property {string} oldMembership the previous membership, can be null.\n */\n\n/**\n * Create a MatrixActions.Room.myMembership action that represents\n * a MatrixClient `Room.myMembership` event for the syncing user,\n * emitted when the syncing user's membership is updated for a room.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {Room} room to room for which the self-membership changed.\n * @param {string} membership the new membership\n * @param {string} oldMembership the previous membership, can be null.\n * @returns {RoomMembershipAction} an action of type `MatrixActions.Room.myMembership`.\n */\nfunction createSelfMembershipAction(matrixClient, room, membership, oldMembership) {\n return { action: 'MatrixActions.Room.myMembership', room: room, membership: membership, oldMembership: oldMembership };\n}\n\n/**\n * @typedef EventDecryptedAction\n * @type {Object}\n * @property {string} action 'MatrixActions.Event.decrypted'.\n * @property {MatrixEvent} event the matrix event that was decrypted.\n */\n\n/**\n * Create a MatrixActions.Event.decrypted action that represents\n * a MatrixClient `Event.decrypted` matrix event, emitted when a\n * matrix event is decrypted.\n *\n * @param {MatrixClient} matrixClient the matrix client.\n * @param {MatrixEvent} event the matrix event that was decrypted.\n * @returns {EventDecryptedAction} an action of type `MatrixActions.Event.decrypted`.\n */\nfunction createEventDecryptedAction(matrixClient, event) {\n return { action: 'MatrixActions.Event.decrypted', event: event };\n}\n\n/**\n * This object is responsible for dispatching actions when certain events are emitted by\n * the given MatrixClient.\n */\nexports.default = {\n // A list of callbacks to call to unregister all listeners added\n _matrixClientListenersStop: [],\n\n /**\n * Start listening to certain events from the MatrixClient and dispatch actions when\n * they are emitted.\n * @param {MatrixClient} matrixClient the MatrixClient to listen to events from\n */\n start: function start(matrixClient) {\n this._addMatrixClientListener(matrixClient, 'sync', createSyncAction);\n this._addMatrixClientListener(matrixClient, 'accountData', createAccountDataAction);\n this._addMatrixClientListener(matrixClient, 'Room', createRoomAction);\n this._addMatrixClientListener(matrixClient, 'Room.tags', createRoomTagsAction);\n this._addMatrixClientListener(matrixClient, 'Room.timeline', createRoomTimelineAction);\n this._addMatrixClientListener(matrixClient, 'Room.myMembership', createSelfMembershipAction);\n this._addMatrixClientListener(matrixClient, 'Event.decrypted', createEventDecryptedAction);\n },\n\n\n /**\n * Start listening to events of type eventName on matrixClient and when they are emitted,\n * dispatch an action created by the actionCreator function.\n * @param {MatrixClient} matrixClient a MatrixClient to register a listener with.\n * @param {string} eventName the event to listen to on MatrixClient.\n * @param {function} actionCreator a function that should return an action to dispatch\n * when given the MatrixClient as an argument as well as\n * arguments emitted in the MatrixClient event.\n */\n _addMatrixClientListener: function _addMatrixClientListener(matrixClient, eventName, actionCreator) {\n var listener = function listener() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var payload = actionCreator.apply(undefined, [matrixClient].concat(args));\n if (payload) {\n _dispatcher2.default.dispatch(payload, true);\n }\n };\n matrixClient.on(eventName, listener);\n this._matrixClientListenersStop.push(function () {\n matrixClient.removeListener(eventName, listener);\n });\n },\n\n\n /**\n * Stop listening to events.\n */\n stop: function stop() {\n this._matrixClientListenersStop.forEach(function (stopListener) {\n return stopListener();\n });\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixActionCreators.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isFinite = require('babel-runtime/core-js/number/is-finite');\n\nvar _isFinite2 = _interopRequireDefault(_isFinite);\n\nexports.phasedRollOutExpiredForUser = phasedRollOutExpiredForUser;\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hashCode(str) {\n var hash = 0;\n var i = void 0;\n var chr = void 0;\n if (str.length === 0) {\n return hash;\n }\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n return Math.abs(hash);\n} /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction phasedRollOutExpiredForUser(username, feature, now) {\n var rollOutConfig = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _SdkConfig2.default.get().phasedRollOut;\n\n if (!rollOutConfig) {\n console.log('no phased rollout configuration, so enabling ' + feature);\n return true;\n }\n var featureConfig = rollOutConfig[feature];\n if (!featureConfig) {\n console.log(feature + ' doesn\\'t have phased rollout configured, so enabling');\n return true;\n }\n if (!(0, _isFinite2.default)(featureConfig.offset) || !(0, _isFinite2.default)(featureConfig.period)) {\n console.error('phased rollout of ' + feature + ' is misconfigured, ' + 'offset and/or period are not numbers, so disabling', featureConfig);\n return false;\n }\n\n var hash = hashCode(username);\n //ms -> min, enable users at minute granularity\n var bucketRatio = 1000 * 60;\n var bucketCount = featureConfig.period / bucketRatio;\n var userBucket = hash % bucketCount;\n var userMs = userBucket * bucketRatio;\n var enableAt = featureConfig.offset + userMs;\n var result = now >= enableAt;\n var bucketStr = '(bucket ' + userBucket + '/' + bucketCount + ')';\n if (result) {\n console.log(feature + ' enabled for ' + username + ' ' + bucketStr);\n } else {\n console.log(feature + ' will be enabled for ' + username + ' in ' + Math.ceil((enableAt - now) / 1000) + 's ' + bucketStr);\n }\n return result;\n}\n//# sourceMappingURL=PhasedRollOut.js.map","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport qs from 'querystring';\n\n// We want to support some name / value pairs in the fragment\n// so we're re-using query string like format\n//\n// returns {location, params}\nexport function parseQsFromFragment(location) {\n // if we have a fragment, it will start with '#', which we need to drop.\n // (if we don't, this will return '').\n var fragment = location.hash.substring(1);\n\n // our fragment may contain a query-param-like section. we need to fish\n // this out *before* URI-decoding because the params may contain ? and &\n // characters which are only URI-encoded once.\n var hashparts = fragment.split('?');\n\n var result = {\n location: decodeURIComponent(hashparts[0]),\n params: {}\n };\n\n if (hashparts.length > 1) {\n result.params = qs.parse(hashparts[1]);\n }\n return result;\n}\n\nexport function parseQs(location) {\n return qs.parse(location.search.substring(1));\n}\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nlet Platform = null;\n\nif (window && window.process && window.process && window.process.type === 'renderer') {\n // we're running inside electron\n Platform = require('./ElectronPlatform');\n} else {\n Platform = require('./WebPlatform');\n}\n\nexport default Platform;\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';\nimport dis from 'matrix-react-sdk/lib/dispatcher';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport Promise from 'bluebird';\nimport {remote, ipcRenderer, desktopCapturer} from 'electron';\nimport rageshake from 'matrix-react-sdk/lib/rageshake/rageshake';\n\nremote.autoUpdater.on('update-downloaded', onUpdateDownloaded);\n\n// try to flush the rageshake logs to indexeddb before quit.\nipcRenderer.on('before-quit', function () {\n console.log('riot-desktop closing');\n rageshake.flush();\n});\n\nfunction onUpdateDownloaded(ev: Event, releaseNotes: string, ver: string, date: Date, updateURL: string) {\n dis.dispatch({\n action: 'new_version',\n currentVersion: remote.app.getVersion(),\n newVersion: ver,\n releaseNotes: releaseNotes,\n });\n}\n\nfunction platformFriendlyName(): string {\n console.log(window.process);\n switch (window.process.platform) {\n case 'darwin':\n return 'macOS';\n case 'freebsd':\n return 'FreeBSD';\n case 'openbsd':\n return 'OpenBSD';\n case 'sunos':\n return 'SunOS';\n case 'win32':\n return 'Windows';\n default:\n // Sorry, Linux users: you get lumped into here,\n // but only because Linux's capitalisation is\n // normal. We do care about you.\n return window.process.platform[0].toUpperCase() + window.process.platform.slice(1);\n }\n}\n\nfunction _onAction(payload: Object) {\n // Whitelist payload actions, no point sending most across\n if (['call_state'].includes(payload.action)) {\n ipcRenderer.send('app_onAction', payload);\n }\n}\n\nfunction getUpdateCheckStatus(status) {\n if (status === true) {\n return { status: updateCheckStatusEnum.DOWNLOADING };\n } else if (status === false) {\n return { status: updateCheckStatusEnum.NOTAVAILABLE };\n } else {\n return {\n status: updateCheckStatusEnum.ERROR,\n detail: status,\n };\n }\n}\n\nexport default class ElectronPlatform extends VectorBasePlatform {\n constructor() {\n super();\n dis.register(_onAction);\n this.updatable = Boolean(remote.autoUpdater.getFeedURL());\n\n /*\n IPC Call `check_updates` returns:\n true if there is an update available\n false if there is not\n or the error if one is encountered\n */\n ipcRenderer.on('check_updates', (event, status) => {\n if (!this.showUpdateCheck) return;\n dis.dispatch({\n action: 'check_updates',\n value: getUpdateCheckStatus(status),\n });\n this.showUpdateCheck = false;\n });\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Electron Platform'; // no translation required: only used for analytics\n }\n\n setNotificationCount(count: number) {\n if (this.notificationCount === count) return;\n super.setNotificationCount(count);\n\n ipcRenderer.send('setBadgeCount', count);\n }\n\n supportsNotifications(): boolean {\n return true;\n }\n\n maySendNotifications(): boolean {\n return true;\n }\n\n displayNotification(title: string, msg: string, avatarUrl: string, room: Object): Notification {\n // GNOME notification spec parses HTML tags for styling...\n // Electron Docs state all supported linux notification systems follow this markup spec\n // https://github.com/electron/electron/blob/master/docs/tutorial/desktop-environment-integration.md#linux\n // maybe we should pass basic styling (italics, bold, underline) through from MD\n // we only have to strip out < and > as the spec doesn't include anything about things like &\n // so we shouldn't assume that all implementations will treat those properly. Very basic tag parsing is done.\n if (window.process.platform === 'linux') {\n msg = msg.replace(/</g, '<').replace(/>/g, '>');\n }\n\n // Notifications in Electron use the HTML5 notification API\n const notification = new global.Notification(\n title,\n {\n body: msg,\n icon: avatarUrl,\n silent: true, // we play our own sounds\n },\n );\n\n notification.onclick = function() {\n dis.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n });\n global.focus();\n const win = remote.getCurrentWindow();\n\n if (win.isMinimized()) win.restore();\n else if (!win.isVisible()) win.show();\n else win.focus();\n };\n\n return notification;\n }\n\n loudNotification(ev: Event, room: Object) {\n ipcRenderer.send('loudNotification');\n }\n\n clearNotification(notif: Notification) {\n notif.close();\n }\n\n getAppVersion(): Promise<string> {\n return Promise.resolve(remote.app.getVersion());\n }\n\n startUpdateCheck() {\n if (this.showUpdateCheck) return;\n super.startUpdateCheck();\n\n ipcRenderer.send('check_updates');\n }\n\n installUpdate() {\n // IPC to the main process to install the update, since quitAndInstall\n // doesn't fire the before-quit event so the main process needs to know\n // it should exit.\n ipcRenderer.send('install_update');\n }\n\n getDefaultDeviceDisplayName(): string {\n return _t('Riot Desktop on %(platformName)s', { platformName: platformFriendlyName() });\n }\n\n screenCaptureErrorString(): ?string {\n return null;\n }\n\n isElectron(): boolean { return true; }\n\n requestNotificationPermission(): Promise<string> {\n return Promise.resolve('granted');\n }\n\n reload() {\n remote.getCurrentWebContents().reload();\n }\n\n /* BEGIN copied and slightly-modified code\n * setupScreenSharingForIframe function from:\n * https://github.com/jitsi/jitsi-meet-electron-utils\n * Copied directly here to avoid the need for a native electron module for\n * 'just a bit of JavaScript'\n * NOTE: Apache v2.0 licensed\n */\n setupScreenSharingForIframe(iframe: Object) {\n iframe.contentWindow.JitsiMeetElectron = {\n /**\n * Get sources available for screensharing. The callback is invoked\n * with an array of DesktopCapturerSources.\n *\n * @param {Function} callback - The success callback.\n * @param {Function} errorCallback - The callback for errors.\n * @param {Object} options - Configuration for getting sources.\n * @param {Array} options.types - Specify the desktop source types\n * to get, with valid sources being \"window\" and \"screen\".\n * @param {Object} options.thumbnailSize - Specify how big the\n * preview images for the sources should be. The valid keys are\n * height and width, e.g. { height: number, width: number}. By\n * default electron will return images with height and width of\n * 150px.\n */\n obtainDesktopStreams(callback, errorCallback, options = {}) {\n desktopCapturer.getSources(options,\n (error, sources) => {\n if (error) {\n errorCallback(error);\n return;\n }\n\n callback(sources);\n });\n },\n };\n }\n /* END of copied and slightly-modified code */\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Base class for classes that provide platform-specific functionality\n * eg. Setting an application badge or displaying notifications\n *\n * Instances of this class are provided by the application.\n */\nvar BasePlatform = function () {\n function BasePlatform() {\n (0, _classCallCheck3.default)(this, BasePlatform);\n\n this.notificationCount = 0;\n this.errorDidOccur = false;\n\n _dispatcher2.default.register(this._onAction.bind(this));\n }\n\n (0, _createClass3.default)(BasePlatform, [{\n key: '_onAction',\n value: function _onAction(payload) {\n switch (payload.action) {\n case 'on_logged_out':\n this.setNotificationCount(0);\n break;\n }\n }\n\n // Used primarily for Analytics\n\n }, {\n key: 'getHumanReadableName',\n value: function getHumanReadableName() {\n return 'Base Platform';\n }\n }, {\n key: 'setNotificationCount',\n value: function setNotificationCount(count) {\n this.notificationCount = count;\n }\n }, {\n key: 'setErrorStatus',\n value: function setErrorStatus(errorDidOccur) {\n this.errorDidOccur = errorDidOccur;\n }\n\n /**\n * Returns true if the platform supports displaying\n * notifications, otherwise false.\n * @returns {boolean} whether the platform supports displaying notifications\n */\n\n }, {\n key: 'supportsNotifications',\n value: function supportsNotifications() {\n return false;\n }\n\n /**\n * Returns true if the application currently has permission\n * to display notifications. Otherwise false.\n * @returns {boolean} whether the application has permission to display notifications\n */\n\n }, {\n key: 'maySendNotifications',\n value: function maySendNotifications() {\n return false;\n }\n\n /**\n * Requests permission to send notifications. Returns\n * a promise that is resolved when the user has responded\n * to the request. The promise has a single string argument\n * that is 'granted' if the user allowed the request or\n * 'denied' otherwise.\n */\n\n }, {\n key: 'requestNotificationPermission',\n value: function requestNotificationPermission() {}\n }, {\n key: 'displayNotification',\n value: function displayNotification(title, msg, avatarUrl, room) {}\n }, {\n key: 'loudNotification',\n value: function loudNotification(ev, room) {}\n\n /**\n * Returns a promise that resolves to a string representing\n * the current version of the application.\n */\n\n }, {\n key: 'getAppVersion',\n value: function getAppVersion() {\n throw new Error(\"getAppVersion not implemented!\");\n }\n\n /*\n * If it's not expected that capturing the screen will work\n * with getUserMedia, return a string explaining why not.\n * Otherwise, return null.\n */\n\n }, {\n key: 'screenCaptureErrorString',\n value: function screenCaptureErrorString() {\n return \"Not implemented\";\n }\n }, {\n key: 'isElectron',\n value: function isElectron() {\n return false;\n }\n }, {\n key: 'setupScreenSharingForIframe',\n value: function setupScreenSharingForIframe() {}\n\n /**\n * Restarts the application, without neccessarily reloading\n * any application code\n */\n\n }, {\n key: 'reload',\n value: function reload() {\n throw new Error(\"reload not implemented!\");\n }\n }]);\n return BasePlatform;\n}();\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = BasePlatform;\nmodule.exports = exports['default'];\n//# sourceMappingURL=BasePlatform.js.map","/**\n * @license MIT\n * @fileOverview Favico animations\n * @author Miroslav Magda, http://blog.ejci.net\n * @version 0.3.10\n */\n\n/**\n * Create new favico instance\n * @param {Object} Options\n * @return {Object} Favico object\n * @example\n * var favico = new Favico({\n * bgColor : '#d00',\n * textColor : '#fff',\n * fontFamily : 'sans-serif',\n * fontStyle : 'bold',\n * position : 'down',\n * type : 'circle',\n * animation : 'slide',\n * dataUrl: function(url){},\n * win: top\n * });\n */\n(function () {\n\n\tvar Favico = (function (opt) {\n\t\t'use strict';\n\t\topt = (opt) ? opt : {};\n\t\tvar _def = {\n\t\t\tbgColor: '#d00',\n\t\t\ttextColor: '#fff',\n\t\t\tfontFamily: 'sans-serif', //Arial,Verdana,Times New Roman,serif,sans-serif,...\n\t\t\tfontStyle: 'bold', //normal,italic,oblique,bold,bolder,lighter,100,200,300,400,500,600,700,800,900\n\t\t\ttype: 'circle',\n\t\t\tposition: 'down', // down, up, left, leftup (upleft)\n\t\t\tanimation: 'slide',\n\t\t\telementId: false,\n\t\t\tdataUrl: false,\n\t\t\twin: window\n\t\t};\n\t\tvar _opt, _orig, _h, _w, _canvas, _context, _img, _ready, _lastBadge, _running, _readyCb, _stop, _browser, _animTimeout, _drawTimeout, _doc;\n\n\t\t_browser = {};\n\t\t_browser.ff = typeof InstallTrigger != 'undefined';\n\t\t_browser.chrome = !!window.chrome;\n\t\t_browser.opera = !!window.opera || navigator.userAgent.indexOf('Opera') >= 0;\n\t\t_browser.ie = /*@cc_on!@*/false;\n\t\t_browser.safari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;\n\t\t_browser.supported = (_browser.chrome || _browser.ff || _browser.opera);\n\n\t\tvar _queue = [];\n\t\t_readyCb = function () {\n\t\t};\n\t\t_ready = _stop = false;\n\t\t/**\n\t\t * Initialize favico\n\t\t */\n\t\tvar init = function () {\n\t\t\t//merge initial options\n\t\t\t_opt = merge(_def, opt);\n\t\t\t_opt.bgColor = hexToRgb(_opt.bgColor);\n\t\t\t_opt.textColor = hexToRgb(_opt.textColor);\n\t\t\t_opt.position = _opt.position.toLowerCase();\n\t\t\t_opt.animation = (animation.types['' + _opt.animation]) ? _opt.animation : _def.animation;\n\n\t\t\t_doc = _opt.win.document;\n\n\t\t\tvar isUp = _opt.position.indexOf('up') > -1;\n\t\t\tvar isLeft = _opt.position.indexOf('left') > -1;\n\n\t\t\t//transform animation\n\t\t\tif (isUp || isLeft) {\n\t\t\t\tfor (var i = 0; i < animation.types['' + _opt.animation].length; i++) {\n\t\t\t\t\tvar step = animation.types['' + _opt.animation][i];\n\n\t\t\t\t\tif (isUp) {\n\t\t\t\t\t\tif (step.y < 0.6) {\n\t\t\t\t\t\t\tstep.y = step.y - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.y = step.y - 2 * step.y + (1 - step.w);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (isLeft) {\n\t\t\t\t\t\tif (step.x < 0.6) {\n\t\t\t\t\t\t\tstep.x = step.x - 0.4;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstep.x = step.x - 2 * step.x + (1 - step.h);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tanimation.types['' + _opt.animation][i] = step;\n\t\t\t\t}\n\t\t\t}\n\t\t\t_opt.type = (type['' + _opt.type]) ? _opt.type : _def.type;\n\n\t\t\t_orig = link.getIcon();\n\t\t\t//create temp canvas\n\t\t\t_canvas = document.createElement('canvas');\n\t\t\t//create temp image\n\t\t\t_img = document.createElement('img');\n\t\t\tif (_orig.hasAttribute('href')) {\n\t\t\t\t_img.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t//get width/height\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = (_img.height > 0) ? _img.height : 32;\n\t\t\t\t\t_w = (_img.width > 0) ? _img.width : 32;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', _orig.getAttribute('href'));\n\t\t\t} else {\n\t\t\t\t_img.onload = function () {\n\t\t\t\t\t_h = 32;\n\t\t\t\t\t_w = 32;\n\t\t\t\t\t_img.height = _h;\n\t\t\t\t\t_img.width = _w;\n\t\t\t\t\t_canvas.height = _h;\n\t\t\t\t\t_canvas.width = _w;\n\t\t\t\t\t_context = _canvas.getContext('2d');\n\t\t\t\t\ticon.ready();\n\t\t\t\t};\n\t\t\t\t_img.setAttribute('src', '');\n\t\t\t}\n\n\t\t};\n\t\t/**\n\t\t * Icon namespace\n\t\t */\n\t\tvar icon = {};\n\t\t/**\n\t\t * Icon is ready (reset icon) and start animation (if ther is any)\n\t\t */\n\t\ticon.ready = function () {\n\t\t\t_ready = true;\n\t\t\ticon.reset();\n\t\t\t_readyCb();\n\t\t};\n\t\t/**\n\t\t * Reset icon to default state\n\t\t */\n\t\ticon.reset = function () {\n\t\t\t//reset\n\t\t\tif (!_ready) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_queue = [];\n\t\t\t_lastBadge = false;\n\t\t\t_running = false;\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t//_stop=true;\n\t\t\tlink.setIcon(_canvas);\n\t\t\t//webcam('stop');\n\t\t\t//video('stop');\n\t\t\twindow.clearTimeout(_animTimeout);\n\t\t\twindow.clearTimeout(_drawTimeout);\n\t\t};\n\t\t/**\n\t\t * Start animation\n\t\t */\n\t\ticon.start = function () {\n\t\t\tif (!_ready || _running) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar finished = function () {\n\t\t\t\t_lastBadge = _queue[0];\n\t\t\t\t_running = false;\n\t\t\t\tif (_queue.length > 0) {\n\t\t\t\t\t_queue.shift();\n\t\t\t\t\ticon.start();\n\t\t\t\t} else {\n\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_queue.length > 0) {\n\t\t\t\t_running = true;\n\t\t\t\tvar run = function () {\n\t\t\t\t\t// apply options for this animation\n\t\t\t\t\t['type', 'animation', 'bgColor', 'textColor', 'fontFamily', 'fontStyle'].forEach(function (a) {\n\t\t\t\t\t\tif (a in _queue[0].options) {\n\t\t\t\t\t\t\t_opt[a] = _queue[0].options[a];\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tanimation.run(_queue[0].options, function () {\n\t\t\t\t\t\tfinished();\n\t\t\t\t\t}, false);\n\t\t\t\t};\n\t\t\t\tif (_lastBadge) {\n\t\t\t\t\tanimation.run(_lastBadge.options, function () {\n\t\t\t\t\t\trun();\n\t\t\t\t\t}, true);\n\t\t\t\t} else {\n\t\t\t\t\trun();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Badge types\n\t\t */\n\t\tvar type = {};\n\t\tvar options = function (opt) {\n\t\t\topt.n = ((typeof opt.n) === 'number') ? Math.abs(opt.n | 0) : opt.n;\n\t\t\topt.x = _w * opt.x;\n\t\t\topt.y = _h * opt.y;\n\t\t\topt.w = _w * opt.w;\n\t\t\topt.h = _h * opt.h;\n\t\t\topt.len = (\"\" + opt.n).length;\n\t\t\treturn opt;\n\t\t};\n\t\t/**\n\t\t * Generate circle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.circle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.85 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\tif (more) {\n\t\t\t\t_context.moveTo(opt.x + opt.w / 2, opt.y);\n\t\t\t\t_context.lineTo(opt.x + opt.w - opt.h / 2, opt.y);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y, opt.x + opt.w, opt.y + opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x + opt.w, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x + opt.w, opt.y + opt.h, opt.x + opt.w - opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.lineTo(opt.x + opt.h / 2, opt.y + opt.h);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y + opt.h, opt.x, opt.y + opt.h - opt.h / 2);\n\t\t\t\t_context.lineTo(opt.x, opt.y + opt.h / 2);\n\t\t\t\t_context.quadraticCurveTo(opt.x, opt.y, opt.x + opt.h / 2, opt.y);\n\t\t\t} else {\n\t\t\t\t_context.arc(opt.x + opt.w / 2, opt.y + opt.h / 2, opt.h / 2, 0, 2 * Math.PI);\n\t\t\t}\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fill();\n\t\t\t_context.closePath();\n\t\t\t_context.beginPath();\n\t\t\t_context.stroke();\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\t\t/**\n\t\t * Generate rectangle\n\t\t * @param {Object} opt Badge options\n\t\t */\n\t\ttype.rectangle = function (opt) {\n\t\t\topt = options(opt);\n\t\t\tvar more = false;\n\t\t\tif (opt.len === 2) {\n\t\t\t\topt.x = opt.x - opt.w * 0.4;\n\t\t\t\topt.w = opt.w * 1.4;\n\t\t\t\tmore = true;\n\t\t\t} else if (opt.len >= 3) {\n\t\t\t\topt.x = opt.x - opt.w * 0.65;\n\t\t\t\topt.w = opt.w * 1.65;\n\t\t\t\tmore = true;\n\t\t\t}\n\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t_context.drawImage(_img, 0, 0, _w, _h);\n\t\t\t_context.beginPath();\n\t\t\t_context.font = _opt.fontStyle + \" \" + Math.floor(opt.h * (opt.n > 99 ? 0.9 : 1)) + \"px \" + _opt.fontFamily;\n\t\t\t_context.textAlign = 'center';\n\t\t\t_context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')';\n\t\t\t_context.fillRect(opt.x, opt.y, opt.w, opt.h);\n\t\t\t_context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')';\n\t\t\t//_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\tif ((typeof opt.n) === 'number' && opt.n > 999) {\n\t\t\t\t_context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2));\n\t\t\t} else {\n\t\t\t\t_context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15));\n\t\t\t}\n\t\t\t_context.closePath();\n\t\t};\n\n\t\t/**\n\t\t * Set badge\n\t\t */\n\t\tvar badge = function (number, opts) {\n\t\t\topts = ((typeof opts) === 'string' ? {\n\t\t\t\tanimation: opts\n\t\t\t} : opts) || {};\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (typeof (number) === 'number' ? (number > 0) : (number !== '')) {\n\t\t\t\t\t\tvar q = {\n\t\t\t\t\t\t\ttype: 'badge',\n\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\tn: number\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif ('animation' in opts && animation.types['' + opts.animation]) {\n\t\t\t\t\t\t\tq.options.animation = '' + opts.animation;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ('type' in opts && type['' + opts.type]) {\n\t\t\t\t\t\t\tq.options.type = '' + opts.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t['bgColor', 'textColor'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = hexToRgb(opts[o]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t['fontStyle', 'fontFamily'].forEach(function (o) {\n\t\t\t\t\t\t\tif (o in opts) {\n\t\t\t\t\t\t\t\tq.options[o] = opts[o];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_queue.push(q);\n\t\t\t\t\t\tif (_queue.length > 100) {\n\t\t\t\t\t\t\tthrow new Error('Too many badges requests in queue.');\n\t\t\t\t\t\t}\n\t\t\t\t\t\ticon.start();\n\t\t\t\t\t} else {\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting badge. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t\t * Set image as icon\n\t\t */\n\t\tvar image = function (imageElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tvar w = imageElement.width;\n\t\t\t\t\tvar h = imageElement.height;\n\t\t\t\t\tvar newImg = document.createElement('img');\n\t\t\t\t\tvar ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tnewImg.setAttribute('crossOrigin', 'anonymous');\n\t\t\t\t\tnewImg.onload=function(){\n\t\t\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t\t\t_context.drawImage(newImg, 0, 0, _w, _h);\n\t\t\t\t\t\tlink.setIcon(_canvas);\n\t\t\t\t\t};\n\t\t\t\t\tnewImg.setAttribute('src', imageElement.getAttribute('src'));\n\t\t\t\t\tnewImg.height = (h / ratio);\n\t\t\t\t\tnewImg.width = (w / ratio);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting image. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar video = function (videoElement) {\n\t\t\t_readyCb = function () {\n\t\t\t\ttry {\n\t\t\t\t\tif (videoElement === 'stop') {\n\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t//var w = videoElement.width;\n\t\t\t\t\t//var h = videoElement.height;\n\t\t\t\t\t//var ratio = (w / _w < h / _h) ? (w / _w) : (h / _h);\n\t\t\t\t\tvideoElement.addEventListener('play', function () {\n\t\t\t\t\t\tdrawVideo(this);\n\t\t\t\t\t}, false);\n\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow new Error('Error setting video. Message: ' + e.message);\n\t\t\t\t}\n\t\t\t};\n\t\t\tif (_ready) {\n\t\t\t\t_readyCb();\n\t\t\t}\n\t\t};\n\t\t/**\n\t\t * Set video as icon\n\t\t */\n\t\tvar webcam = function (action) {\n\t\t\t//UR\n\t\t\tif (!window.URL || !window.URL.createObjectURL) {\n\t\t\t\twindow.URL = window.URL || {};\n\t\t\t\twindow.URL.createObjectURL = function (obj) {\n\t\t\t\t\treturn obj;\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (_browser.supported) {\n\t\t\t\tvar newVideo = false;\n\t\t\t\tnavigator.getUserMedia = navigator.getUserMedia || navigator.oGetUserMedia || navigator.msGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;\n\t\t\t\t_readyCb = function () {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (action === 'stop') {\n\t\t\t\t\t\t\t_stop = true;\n\t\t\t\t\t\t\ticon.reset();\n\t\t\t\t\t\t\t_stop = false;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewVideo = document.createElement('video');\n\t\t\t\t\t\tnewVideo.width = _w;\n\t\t\t\t\t\tnewVideo.height = _h;\n\t\t\t\t\t\tnavigator.getUserMedia({\n\t\t\t\t\t\t\tvideo: true,\n\t\t\t\t\t\t\taudio: false\n\t\t\t\t\t\t}, function (stream) {\n\t\t\t\t\t\t\tnewVideo.src = URL.createObjectURL(stream);\n\t\t\t\t\t\t\tnewVideo.play();\n\t\t\t\t\t\t\tdrawVideo(newVideo);\n\t\t\t\t\t\t}, function () {\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthrow new Error('Error setting webcam. Message: ' + e.message);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (_ready) {\n\t\t\t\t\t_readyCb();\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t\t/**\n\t\t * Draw video to context and repeat :)\n\t\t */\n\t\tfunction drawVideo(video) {\n\t\t\tif (video.paused || video.ended || _stop) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t//nasty hack for FF webcam (Thanks to Julian Ćwirko, kontakt@redsunmedia.pl)\n\t\t\ttry {\n\t\t\t\t_context.clearRect(0, 0, _w, _h);\n\t\t\t\t_context.drawImage(video, 0, 0, _w, _h);\n\t\t\t} catch (e) {\n\n\t\t\t}\n\t\t\t_drawTimeout = setTimeout(function () {\n\t\t\t\tdrawVideo(video);\n\t\t\t}, animation.duration);\n\t\t\tlink.setIcon(_canvas);\n\t\t}\n\n\t\tvar link = {};\n\t\t/**\n\t\t * Get icon from HEAD tag or create a new <link> element\n\t\t */\n\t\tlink.getIcon = function () {\n\t\t\tvar elm = false;\n\t\t\t//get link element\n\t\t\tvar getLink = function () {\n\t\t\t\tvar link = _doc.getElementsByTagName('head')[0].getElementsByTagName('link');\n\t\t\t\tfor (var l = link.length, i = (l - 1); i >= 0; i--) {\n\t\t\t\t\tif ((/(^|\\s)icon(\\s|$)/i).test(link[i].getAttribute('rel'))) {\n\t\t\t\t\t\treturn link[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t\tif (_opt.element) {\n\t\t\t\telm = _opt.element;\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if img element identified by elementId\n\t\t\t\telm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', elm.getAttribute('src'));\n\t\t\t} else {\n\t\t\t\t//if link element\n\t\t\t\telm = getLink();\n\t\t\t\tif (elm === false) {\n\t\t\t\t\telm = _doc.createElement('link');\n\t\t\t\t\telm.setAttribute('rel', 'icon');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(elm);\n\t\t\t\t}\n\t\t\t}\n\t\t\telm.setAttribute('type', 'image/png');\n\t\t\treturn elm;\n\t\t};\n\t\tlink.setIcon = function (canvas) {\n\t\t\tvar url = canvas.toDataURL('image/png');\n\t\t\tif (_opt.dataUrl) {\n\t\t\t\t//if using custom exporter\n\t\t\t\t_opt.dataUrl(url);\n\t\t\t}\n\t\t\tif (_opt.element) {\n\t\t\t\t_opt.element.setAttribute('href', url);\n\t\t\t\t_opt.element.setAttribute('src', url);\n\t\t\t} else if (_opt.elementId) {\n\t\t\t\t//if is attached to element (image)\n\t\t\t\tvar elm = _doc.getElementById(_opt.elementId);\n\t\t\t\telm.setAttribute('href', url);\n\t\t\t\telm.setAttribute('src', url);\n\t\t\t} else {\n\t\t\t\t//if is attached to fav icon\n\t\t\t\tif (_browser.ff || _browser.opera) {\n\t\t\t\t\t//for FF we need to \"recreate\" element, atach to dom and remove old <link>\n\t\t\t\t\t//var originalType = _orig.getAttribute('rel');\n\t\t\t\t\tvar old = _orig;\n\t\t\t\t\t_orig = _doc.createElement('link');\n\t\t\t\t\t//_orig.setAttribute('rel', originalType);\n\t\t\t\t\tif (_browser.opera) {\n\t\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t}\n\t\t\t\t\t_orig.setAttribute('rel', 'icon');\n\t\t\t\t\t_orig.setAttribute('type', 'image/png');\n\t\t\t\t\t_doc.getElementsByTagName('head')[0].appendChild(_orig);\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t\tif (old.parentNode) {\n\t\t\t\t\t\told.parentNode.removeChild(old);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t_orig.setAttribute('href', url);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t//http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-5624139\n\t\t//HEX to RGB convertor\n\t\tfunction hexToRgb(hex) {\n\t\t\tvar shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\t\t\thex = hex.replace(shorthandRegex, function (m, r, g, b) {\n\t\t\t\treturn r + r + g + g + b + b;\n\t\t\t});\n\t\t\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t\t\treturn result ? {\n\t\t\t\tr: parseInt(result[1], 16),\n\t\t\t\tg: parseInt(result[2], 16),\n\t\t\t\tb: parseInt(result[3], 16)\n\t\t\t} : false;\n\t\t}\n\n\t\t/**\n\t\t * Merge options\n\t\t */\n\t\tfunction merge(def, opt) {\n\t\t\tvar mergedOpt = {};\n\t\t\tvar attrname;\n\t\t\tfor (attrname in def) {\n\t\t\t\tmergedOpt[attrname] = def[attrname];\n\t\t\t}\n\t\t\tfor (attrname in opt) {\n\t\t\t\tmergedOpt[attrname] = opt[attrname];\n\t\t\t}\n\t\t\treturn mergedOpt;\n\t\t}\n\n\t\t/**\n\t\t * Cross-browser page visibility shim\n\t\t * http://stackoverflow.com/questions/12536562/detect-whether-a-window-is-visible\n\t\t */\n\t\tfunction isPageHidden() {\n\t\t\treturn _doc.hidden || _doc.msHidden || _doc.webkitHidden || _doc.mozHidden;\n\t\t}\n\n\t\t/**\n\t\t * @namespace animation\n\t\t */\n\t\tvar animation = {};\n\t\t/**\n\t\t * Animation \"frame\" duration\n\t\t */\n\t\tanimation.duration = 40;\n\t\t/**\n\t\t * Animation types (none,fade,pop,slide)\n\t\t */\n\t\tanimation.types = {};\n\t\tanimation.types.fade = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 0.0\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.3\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.5\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.7\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1.0\n\t\t\t}];\n\t\tanimation.types.none = [{\n\t\t\tx: 0.4,\n\t\t\ty: 0.4,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}];\n\t\tanimation.types.pop = [{\n\t\t\tx: 1,\n\t\t\ty: 1,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.9,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.8,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.7,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.5,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.popFade = [{\n\t\t\tx: 0.75,\n\t\t\ty: 0.75,\n\t\t\tw: 0,\n\t\t\th: 0,\n\t\t\to: 0\n\t\t}, {\n\t\t\t\tx: 0.65,\n\t\t\t\ty: 0.65,\n\t\t\t\tw: 0.1,\n\t\t\t\th: 0.1,\n\t\t\t\to: 0.2\n\t\t\t}, {\n\t\t\t\tx: 0.6,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.2,\n\t\t\t\th: 0.2,\n\t\t\t\to: 0.4\n\t\t\t}, {\n\t\t\t\tx: 0.55,\n\t\t\t\ty: 0.55,\n\t\t\t\tw: 0.3,\n\t\t\t\th: 0.3,\n\t\t\t\to: 0.6\n\t\t\t}, {\n\t\t\t\tx: 0.50,\n\t\t\t\ty: 0.50,\n\t\t\t\tw: 0.4,\n\t\t\t\th: 0.4,\n\t\t\t\to: 0.8\n\t\t\t}, {\n\t\t\t\tx: 0.45,\n\t\t\t\ty: 0.45,\n\t\t\t\tw: 0.5,\n\t\t\t\th: 0.5,\n\t\t\t\to: 0.9\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\tanimation.types.slide = [{\n\t\t\tx: 0.4,\n\t\t\ty: 1,\n\t\t\tw: 0.6,\n\t\t\th: 0.6,\n\t\t\to: 1\n\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.9,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.8,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.7,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.6,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.5,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}, {\n\t\t\t\tx: 0.4,\n\t\t\t\ty: 0.4,\n\t\t\t\tw: 0.6,\n\t\t\t\th: 0.6,\n\t\t\t\to: 1\n\t\t\t}];\n\t\t/**\n\t\t * Run animation\n\t\t * @param {Object} opt Animation options\n\t\t * @param {Object} cb Callabak after all steps are done\n\t\t * @param {Object} revert Reverse order? true|false\n\t\t * @param {Object} step Optional step number (frame bumber)\n\t\t */\n\t\tanimation.run = function (opt, cb, revert, step) {\n\t\t\tvar animationType = animation.types[isPageHidden() ? 'none' : _opt.animation];\n\t\t\tif (revert === true) {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : animationType.length - 1;\n\t\t\t} else {\n\t\t\t\tstep = (typeof step !== 'undefined') ? step : 0;\n\t\t\t}\n\t\t\tcb = (cb) ? cb : function () {\n\t\t\t};\n\t\t\tif ((step < animationType.length) && (step >= 0)) {\n\t\t\t\ttype[_opt.type](merge(opt, animationType[step]));\n\t\t\t\t_animTimeout = setTimeout(function () {\n\t\t\t\t\tif (revert) {\n\t\t\t\t\t\tstep = step - 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstep = step + 1;\n\t\t\t\t\t}\n\t\t\t\t\tanimation.run(opt, cb, revert, step);\n\t\t\t\t}, animation.duration);\n\n\t\t\t\tlink.setIcon(_canvas);\n\t\t\t} else {\n\t\t\t\tcb();\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t\t//auto init\n\t\tinit();\n\t\treturn {\n\t\t\tbadge: badge,\n\t\t\tvideo: video,\n\t\t\timage: image,\n\t\t\twebcam: webcam,\n\t\t\treset: icon.reset,\n\t\t\tbrowser: {\n\t\t\t\tsupported: _browser.supported\n\t\t\t}\n\t\t};\n\t});\n\n\t// AMD / RequireJS\n\tif (typeof define !== 'undefined' && define.amd) {\n\t\tdefine([], function () {\n\t\t\treturn Favico;\n\t\t});\n\t}\n\t// CommonJS\n\telse if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = Favico;\n\t}\n\t// included directly via <script> tag\n\telse {\n\t\tthis.Favico = Favico;\n\t}\n\n})();\n","// @flow\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport VectorBasePlatform, {updateCheckStatusEnum} from './VectorBasePlatform';\nimport request from 'browser-request';\nimport dis from 'matrix-react-sdk/lib/dispatcher.js';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport Promise from 'bluebird';\n\nimport url from 'url';\nimport UAParser from 'ua-parser-js';\n\nvar POKE_RATE_MS = 10 * 60 * 1000; // 10 min\n\nexport default class WebPlatform extends VectorBasePlatform {\n constructor() {\n super();\n this.runningVersion = null;\n\n this.startUpdateCheck = this.startUpdateCheck.bind(this);\n this.stopUpdateCheck = this.stopUpdateCheck.bind(this);\n }\n\n getHumanReadableName(): string {\n return 'Web Platform'; // no translation required: only used for analytics\n }\n\n /**\n * Returns true if the platform supports displaying\n * notifications, otherwise false.\n */\n supportsNotifications(): boolean {\n return Boolean(global.Notification);\n }\n\n /**\n * Returns true if the application currently has permission\n * to display notifications. Otherwise false.\n */\n maySendNotifications(): boolean {\n return global.Notification.permission === 'granted';\n }\n\n /**\n * Requests permission to send notifications. Returns\n * a promise that is resolved when the user has responded\n * to the request. The promise has a single string argument\n * that is 'granted' if the user allowed the request or\n * 'denied' otherwise.\n */\n requestNotificationPermission(): Promise<string> {\n // annoyingly, the latest spec says this returns a\n // promise, but this is only supported in Chrome 46\n // and Firefox 47, so adapt the callback API.\n return new Promise(function(resolve, reject) {\n global.Notification.requestPermission((result) => {\n resolve(result);\n });\n });\n }\n\n displayNotification(title: string, msg: string, avatarUrl: string, room: Object) {\n const notification = new global.Notification(\n title,\n {\n body: msg,\n icon: avatarUrl,\n tag: \"vector\",\n silent: true, // we play our own sounds\n },\n );\n\n notification.onclick = function() {\n dis.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n });\n global.focus();\n notification.close();\n };\n\n // Chrome only dismisses notifications after 20s, which\n // is waaaaay too long\n global.setTimeout(function() {\n notification.close();\n }, 5 * 1000);\n }\n\n _getVersion(): Promise<string> {\n // We add a cachebuster to the request to make sure that we know about\n // the most recent version on the origin server. That might not\n // actually be the version we'd get on a reload (particularly in the\n // presence of intermediate caching proxies), but still: we're trying\n // to tell the user that there is a new version.\n\n return new Promise(function(resolve, reject) {\n request(\n {\n method: \"GET\",\n url: \"version\",\n qs: { cachebuster: Date.now() },\n },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n if (err === null) err = { status: response.status };\n reject(err);\n return;\n }\n\n const ver = body.trim();\n resolve(ver);\n },\n );\n });\n }\n\n getAppVersion(): Promise<string> {\n if (this.runningVersion !== null) {\n return Promise.resolve(this.runningVersion);\n }\n return this._getVersion();\n }\n\n startUpdater() {\n this.pollForUpdate();\n setInterval(this.pollForUpdate.bind(this), POKE_RATE_MS);\n }\n\n pollForUpdate() {\n return this._getVersion().then((ver) => {\n if (this.runningVersion === null) {\n this.runningVersion = ver;\n } else if (this.runningVersion !== ver) {\n dis.dispatch({\n action: 'new_version',\n currentVersion: this.runningVersion,\n newVersion: ver,\n });\n // Return to skip a MatrixChat state update\n return;\n }\n return { status: updateCheckStatusEnum.NOTAVAILABLE };\n }, (err) => {\n console.error(\"Failed to poll for update\", err);\n return {\n status: updateCheckStatusEnum.ERROR,\n detail: err.message || err.status ? err.status.toString() : 'Unknown Error',\n };\n });\n }\n\n startUpdateCheck() {\n if (this.showUpdateCheck) return;\n super.startUpdateCheck();\n this.pollForUpdate().then((updateState) => {\n if (!this.showUpdateCheck) return;\n if (!updateState) return;\n dis.dispatch({\n action: 'check_updates',\n value: updateState,\n });\n });\n }\n\n installUpdate() {\n window.location.reload(true);\n }\n\n getDefaultDeviceDisplayName(): string {\n // strip query-string and fragment from uri\n const u = url.parse(window.location.href);\n u.search = \"\";\n u.hash = \"\";\n const appName = u.format();\n\n const ua = new UAParser();\n const browserName = ua.getBrowser().name || \"unknown browser\";\n const osName = ua.getOS().name || \"unknown os\";\n return _t('%(appName)s via %(browserName)s on %(osName)s', {appName: appName, browserName: browserName, osName: osName});\n }\n\n screenCaptureErrorString(): ?string {\n // it won't work at all if you're not on HTTPS so whine whine whine\n if (!global.window || global.window.location.protocol !== \"https:\") {\n return _t(\"You need to be using HTTPS to place a screen-sharing call.\");\n }\n return null;\n }\n\n reload() {\n // forceReload=false since we don't really need new HTML/JS files\n // we just need to restart the JS runtime.\n window.location.reload(false);\n }\n}\n","/*!\n * UAParser.js v0.7.18\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman <fyzlman@gmail.com>\n * Dual licensed under GPLv2 or MIT\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.18',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var margedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n margedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n margedRegexes[i] = regexes[i];\n }\n }\n return margedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n //var result = {},\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\n\n /*// construct object barebones\n for (p = 0; p < args[1].length; p++) {\n q = args[1][p];\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\n }*/\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n // console.log(this);\n //return this;\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]*)/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n\n // Trident based\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser/Baidu\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]*)/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\n ], [NAME, VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge|edgios|edgea)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [[NAME, 'Edge'], VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\n // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(qqbrowserlite)\\/([\\w\\.]+)/i // QQBrowserLite\n ], [NAME, VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /(BIDUBrowser)[\\/\\s]?([\\w\\.]+)/i // Baidu Browser\n ], [NAME, VERSION], [\n\n /(2345Explorer)[\\/\\s]?([\\w\\.]+)/i // 2345 Browser\n ], [NAME, VERSION], [\n\n /(MetaSr)[\\/\\s]?([\\w\\.]+)/i // SouGouBrowser\n ], [NAME], [\n\n /(LBBROWSER)/i // LieBao Browser\n ], [NAME], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([\\w\\.-]+)$/i,\n\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]*)/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n\n /* /////////////////////\n // Media players BEGIN\n ////////////////////////\n\n , [\n\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\n /(coremedia) v((\\d+)[\\w\\._]+)/i\n ], [NAME, VERSION], [\n\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\n ], [NAME, VERSION], [\n\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\n ], [NAME, VERSION], [\n\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\n // NSPlayer/PSP-InternetRadioPlayer/Videos\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\n ], [NAME, VERSION], [\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\n ], [NAME, VERSION], [\n\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\n ], [[NAME, 'Flip Player'], VERSION], [\n\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\n ], [NAME], [\n\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\n // Gstreamer\n ], [NAME, VERSION], [\n\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\n // Java/urllib/requests/wget/cURL\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\n ], [NAME, VERSION], [\n\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\n // MPlayer SVN\n ], [NAME, VERSION], [\n\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\n ], [NAME, VERSION], [\n\n /(mplayer)/i, // MPlayer (no other info)\n /(yourmuze)/i, // YourMuze\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\n ], [NAME], [\n\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\n ], [NAME, VERSION], [\n\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\n ], [NAME, VERSION], [\n\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\n ], [NAME, VERSION], [\n\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\n ], [NAME, VERSION], [\n\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\n // inlight radio\n ], [NAME], [\n\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\n // SoundTap/Totem/Stagefright/Streamium\n ], [NAME, VERSION], [\n\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\n ], [NAME, VERSION], [\n\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\n ], [NAME, VERSION], [\n\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\n ], [[NAME, /-/g, ' '], VERSION], [\n\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\n // Windows Media Server\n ], [VERSION, [NAME, 'Windows']], [\n\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\n ], [NAME, VERSION], [\n\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\n ], [[NAME, 'rad.io'], VERSION]\n\n //////////////////////\n // Media players END\n ////////////////////*/\n\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/.+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/.+silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]*)/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\n /(zte)-(\\w*)/i, // ZTE\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]*)/i\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?:?(\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w*)/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]*)/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w*)/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel xl|pixel)\\s/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+;\\s(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d?\\w?)[\\s_]*(?:plus)?)\\s+build/i, // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+))\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)(?:[\\s_]*[\\w\\s]+))\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\n\n /android.+a000(1)\\s+build/i, // OnePlus\n /android.+oneplus\\s(a\\d{4})\\s+build/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/\\s]+(Venue[\\d\\s]{2,7})\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+;\\s(k88)\\sbuild/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2})\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(\\w{5})\\sbuild/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?\\w{0,9})\\sbuild/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?\\w{0,9})\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(\\w{1,9})\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q\\w{1,9})\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /(android[\\w\\.\\s\\-]{0,9});.+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n\n\n /*//////////////////////////\n // TODO: move to string map\n ////////////////////////////\n\n /(C6603)/i // Sony Xperia Z C6603\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /(C6903)/i // Sony Xperia Z 1\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /(SM-G900[F|H])/i // Samsung Galaxy S5\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G7102)/i // Samsung Galaxy Grand 2\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G313HZ)/i // Samsung Galaxy V\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n\n /(T3C)/i // Advan Vandroid T3C\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN S4A)/i // Advan Vandroid S4A\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\n\n /(V972M)/i // ZTE V972M\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\n\n /////////////\n // END TODO\n ///////////*/\n\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9}).+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s\\w]*)/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]*)/i, // Blackberry\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]*)/i,\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\n /linux;.+(sailfish);/i // Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]*)/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]*)/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]*)/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]{2,4}(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]*)/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]*)/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.])*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\n /(unix)\\s?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n /*\n var Browser = function (name, version) {\n this[NAME] = name;\n this[VERSION] = version;\n };\n var CPU = function (arch) {\n this[ARCHITECTURE] = arch;\n };\n var Device = function (vendor, model, type) {\n this[VENDOR] = vendor;\n this[MODEL] = model;\n this[TYPE] = type;\n };\n var Engine = Browser;\n var OS = Browser;\n */\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n //var browser = new Browser();\n //var cpu = new CPU();\n //var device = new Device();\n //var engine = new Engine();\n //var os = new OS();\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n //browser = new Browser();\n //cpu = new CPU();\n //device = new Device();\n //engine = new Engine();\n //os = new OS();\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n //UAParser.Utils = util;\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n // TODO: test!!!!!!!!\n /*\n if (require && require.main === module && process) {\n // cli\n var jsonize = function (arr) {\n var res = [];\n for (var i in arr) {\n res.push(new UAParser(arr[i]).getResult());\n }\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\n };\n if (process.stdin.isTTY) {\n // via args\n jsonize(process.argv.slice(2));\n } else {\n // via pipe\n var str = '';\n process.stdin.on('readable', function() {\n var read = process.stdin.read();\n if (read !== null) {\n str += read;\n }\n });\n process.stdin.on('end', function () {\n jsonize(str.replace(/\\n$/, '').split('\\n'));\n });\n }\n }\n */\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if (typeof $ !== UNDEF_TYPE) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * THIS FILE IS AUTO-GENERATED\n * You can edit it you like, but your changes will be overwritten,\n * so you'd just be trying to swim upstream like a salmon.\n * You are not a salmon.\n */\n\nlet components = require('matrix-react-sdk/lib/component-index').components;\nif (!components) {\n throw new Error(\"'matrix-react-sdk/lib/component-index' didn't export components\");\n}\nimport structures$VectorHomePage from './components/structures/VectorHomePage';\nstructures$VectorHomePage && (components['structures.VectorHomePage'] = structures$VectorHomePage);\nimport views$login$VectorCustomServerDialog from './components/views/login/VectorCustomServerDialog';\nviews$login$VectorCustomServerDialog && (components['views.login.VectorCustomServerDialog'] = views$login$VectorCustomServerDialog);\nimport views$login$VectorLoginFooter from './components/views/login/VectorLoginFooter';\nviews$login$VectorLoginFooter && (components['views.login.VectorLoginFooter'] = views$login$VectorLoginFooter);\nimport views$login$VectorLoginHeader from './components/views/login/VectorLoginHeader';\nviews$login$VectorLoginHeader && (components['views.login.VectorLoginHeader'] = views$login$VectorLoginHeader);\nexport {components};\n","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nimport React from 'react';\nimport HomePage from 'matrix-react-sdk/lib/components/structures/HomePage';\nimport sanitizeHtml from 'sanitize-html';\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nclass VectorHomePage extends HomePage {\n static displayName = 'VectorHomePage';\n static replaces = 'HomePage';\n\n // we're overriding the base component here, for Riot-specific tweaks\n translate(s) {\n s = sanitizeHtml(_t(s));\n // ugly fix for https://github.com/vector-im/riot-web/issues/4243\n s = s.replace(/Riot\\.im/, '<a href=\"https://riot.im\" target=\"_blank\" rel=\"noopener\">Riot.im</a>');\n s = s.replace(/\\[matrix\\]/, '<a href=\"https://matrix.org\" target=\"_blank\" rel=\"noopener\"><img width=\"79\" height=\"34\" alt=\"[matrix]\" style=\"padding-left: 1px;vertical-align: middle\" src=\"home/images/matrix.svg\"/></a>');\n return s;\n }\n}\n\nmodule.exports = VectorHomePage;\n","var ElementType = require(\"domelementtype\");\n\nvar re_whitespace = /\\s+/g;\nvar NodePrototype = require(\"./lib/node\");\nvar ElementPrototype = require(\"./lib/element\");\n\nfunction DomHandler(callback, options, elementCB){\n\tif(typeof callback === \"object\"){\n\t\telementCB = options;\n\t\toptions = callback;\n\t\tcallback = null;\n\t} else if(typeof options === \"function\"){\n\t\telementCB = options;\n\t\toptions = defaultOpts;\n\t}\n\tthis._callback = callback;\n\tthis._options = options || defaultOpts;\n\tthis._elementCB = elementCB;\n\tthis.dom = [];\n\tthis._done = false;\n\tthis._tagStack = [];\n\tthis._parser = this._parser || null;\n}\n\n//default options\nvar defaultOpts = {\n\tnormalizeWhitespace: false, //Replace all whitespace with single spaces\n\twithStartIndices: false, //Add startIndex properties to nodes\n\twithEndIndices: false, //Add endIndex properties to nodes\n};\n\nDomHandler.prototype.onparserinit = function(parser){\n\tthis._parser = parser;\n};\n\n//Resets the handler back to starting state\nDomHandler.prototype.onreset = function(){\n\tDomHandler.call(this, this._callback, this._options, this._elementCB);\n};\n\n//Signals the handler that parsing is done\nDomHandler.prototype.onend = function(){\n\tif(this._done) return;\n\tthis._done = true;\n\tthis._parser = null;\n\tthis._handleCallback(null);\n};\n\nDomHandler.prototype._handleCallback =\nDomHandler.prototype.onerror = function(error){\n\tif(typeof this._callback === \"function\"){\n\t\tthis._callback(error, this.dom);\n\t} else {\n\t\tif(error) throw error;\n\t}\n};\n\nDomHandler.prototype.onclosetag = function(){\n\t//if(this._tagStack.pop().name !== name) this._handleCallback(Error(\"Tagname didn't match!\"));\n\t\n\tvar elem = this._tagStack.pop();\n\n\tif(this._options.withEndIndices && elem){\n\t\telem.endIndex = this._parser.endIndex;\n\t}\n\n\tif(this._elementCB) this._elementCB(elem);\n};\n\nDomHandler.prototype._createDomElement = function(properties){\n\tif (!this._options.withDomLvl1) return properties;\n\n\tvar element;\n\tif (properties.type === \"tag\") {\n\t\telement = Object.create(ElementPrototype);\n\t} else {\n\t\telement = Object.create(NodePrototype);\n\t}\n\n\tfor (var key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\telement[key] = properties[key];\n\t\t}\n\t}\n\n\treturn element;\n};\n\nDomHandler.prototype._addDomElement = function(element){\n\tvar parent = this._tagStack[this._tagStack.length - 1];\n\tvar siblings = parent ? parent.children : this.dom;\n\tvar previousSibling = siblings[siblings.length - 1];\n\n\telement.next = null;\n\n\tif(this._options.withStartIndices){\n\t\telement.startIndex = this._parser.startIndex;\n\t}\n\tif(this._options.withEndIndices){\n\t\telement.endIndex = this._parser.endIndex;\n\t}\n\n\tif(previousSibling){\n\t\telement.prev = previousSibling;\n\t\tpreviousSibling.next = element;\n\t} else {\n\t\telement.prev = null;\n\t}\n\n\tsiblings.push(element);\n\telement.parent = parent || null;\n};\n\nDomHandler.prototype.onopentag = function(name, attribs){\n\tvar properties = {\n\t\ttype: name === \"script\" ? ElementType.Script : name === \"style\" ? ElementType.Style : ElementType.Tag,\n\t\tname: name,\n\t\tattribs: attribs,\n\t\tchildren: []\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.ontext = function(data){\n\t//the ignoreWhitespace is officially dropped, but for now,\n\t//it's an alias for normalizeWhitespace\n\tvar normalize = this._options.normalizeWhitespace || this._options.ignoreWhitespace;\n\n\tvar lastTag;\n\n\tif(!this._tagStack.length && this.dom.length && (lastTag = this.dom[this.dom.length-1]).type === ElementType.Text){\n\t\tif(normalize){\n\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t} else {\n\t\t\tlastTag.data += data;\n\t\t}\n\t} else {\n\t\tif(\n\t\t\tthis._tagStack.length &&\n\t\t\t(lastTag = this._tagStack[this._tagStack.length - 1]) &&\n\t\t\t(lastTag = lastTag.children[lastTag.children.length - 1]) &&\n\t\t\tlastTag.type === ElementType.Text\n\t\t){\n\t\t\tif(normalize){\n\t\t\t\tlastTag.data = (lastTag.data + data).replace(re_whitespace, \" \");\n\t\t\t} else {\n\t\t\t\tlastTag.data += data;\n\t\t\t}\n\t\t} else {\n\t\t\tif(normalize){\n\t\t\t\tdata = data.replace(re_whitespace, \" \");\n\t\t\t}\n\n\t\t\tvar element = this._createDomElement({\n\t\t\t\tdata: data,\n\t\t\t\ttype: ElementType.Text\n\t\t\t});\n\n\t\t\tthis._addDomElement(element);\n\t\t}\n\t}\n};\n\nDomHandler.prototype.oncomment = function(data){\n\tvar lastTag = this._tagStack[this._tagStack.length - 1];\n\n\tif(lastTag && lastTag.type === ElementType.Comment){\n\t\tlastTag.data += data;\n\t\treturn;\n\t}\n\n\tvar properties = {\n\t\tdata: data,\n\t\ttype: ElementType.Comment\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncdatastart = function(){\n\tvar properties = {\n\t\tchildren: [{\n\t\t\tdata: \"\",\n\t\t\ttype: ElementType.Text\n\t\t}],\n\t\ttype: ElementType.CDATA\n\t};\n\n\tvar element = this._createDomElement(properties);\n\n\tthis._addDomElement(element);\n\tthis._tagStack.push(element);\n};\n\nDomHandler.prototype.oncommentend = DomHandler.prototype.oncdataend = function(){\n\tthis._tagStack.pop();\n};\n\nDomHandler.prototype.onprocessinginstruction = function(name, data){\n\tvar element = this._createDomElement({\n\t\tname: name,\n\t\tdata: data,\n\t\ttype: ElementType.Directive\n\t});\n\n\tthis._addDomElement(element);\n};\n\nmodule.exports = DomHandler;\n","// DOM-Level-1-compliant structure\nvar NodePrototype = require('./node');\nvar ElementPrototype = module.exports = Object.create(NodePrototype);\n\nvar domLvl1 = {\n\ttagName: \"name\"\n};\n\nObject.keys(domLvl1).forEach(function(key) {\n\tvar shorthand = domLvl1[key];\n\tObject.defineProperty(ElementPrototype, key, {\n\t\tget: function() {\n\t\t\treturn this[shorthand] || null;\n\t\t},\n\t\tset: function(val) {\n\t\t\tthis[shorthand] = val;\n\t\t\treturn val;\n\t\t}\n\t});\n});\n","var index = require(\"./index.js\"),\n DomHandler = index.DomHandler,\n DomUtils = index.DomUtils;\n\n//TODO: make this a streamable handler\nfunction FeedHandler(callback, options){\n\tthis.init(callback, options);\n}\n\nrequire(\"inherits\")(FeedHandler, DomHandler);\n\nFeedHandler.prototype.init = DomHandler;\n\nfunction getElements(what, where){\n\treturn DomUtils.getElementsByTagName(what, where, true);\n}\nfunction getOneElement(what, where){\n\treturn DomUtils.getElementsByTagName(what, where, true, 1)[0];\n}\nfunction fetch(what, where, recurse){\n\treturn DomUtils.getText(\n\t\tDomUtils.getElementsByTagName(what, where, recurse, 1)\n\t).trim();\n}\n\nfunction addConditionally(obj, prop, what, where, recurse){\n\tvar tmp = fetch(what, where, recurse);\n\tif(tmp) obj[prop] = tmp;\n}\n\nvar isValidFeed = function(value){\n\treturn value === \"rss\" || value === \"feed\" || value === \"rdf:RDF\";\n};\n\nFeedHandler.prototype.onend = function(){\n\tvar feed = {},\n\t feedRoot = getOneElement(isValidFeed, this.dom),\n\t tmp, childs;\n\n\tif(feedRoot){\n\t\tif(feedRoot.name === \"feed\"){\n\t\t\tchilds = feedRoot.children;\n\n\t\t\tfeed.type = \"atom\";\n\t\t\taddConditionally(feed, \"id\", \"id\", childs);\n\t\t\taddConditionally(feed, \"title\", \"title\", childs);\n\t\t\tif((tmp = getOneElement(\"link\", childs)) && (tmp = tmp.attribs) && (tmp = tmp.href)) feed.link = tmp;\n\t\t\taddConditionally(feed, \"description\", \"subtitle\", childs);\n\t\t\tif((tmp = fetch(\"updated\", childs))) feed.updated = new Date(tmp);\n\t\t\taddConditionally(feed, \"author\", \"email\", childs, true);\n\n\t\t\tfeed.items = getElements(\"entry\", childs).map(function(item){\n\t\t\t\tvar entry = {}, tmp;\n\n\t\t\t\titem = item.children;\n\n\t\t\t\taddConditionally(entry, \"id\", \"id\", item);\n\t\t\t\taddConditionally(entry, \"title\", \"title\", item);\n\t\t\t\tif((tmp = getOneElement(\"link\", item)) && (tmp = tmp.attribs) && (tmp = tmp.href)) entry.link = tmp;\n\t\t\t\tif((tmp = fetch(\"summary\", item) || fetch(\"content\", item))) entry.description = tmp;\n\t\t\t\tif((tmp = fetch(\"updated\", item))) entry.pubDate = new Date(tmp);\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t} else {\n\t\t\tchilds = getOneElement(\"channel\", feedRoot.children).children;\n\n\t\t\tfeed.type = feedRoot.name.substr(0, 3);\n\t\t\tfeed.id = \"\";\n\t\t\taddConditionally(feed, \"title\", \"title\", childs);\n\t\t\taddConditionally(feed, \"link\", \"link\", childs);\n\t\t\taddConditionally(feed, \"description\", \"description\", childs);\n\t\t\tif((tmp = fetch(\"lastBuildDate\", childs))) feed.updated = new Date(tmp);\n\t\t\taddConditionally(feed, \"author\", \"managingEditor\", childs, true);\n\n\t\t\tfeed.items = getElements(\"item\", feedRoot.children).map(function(item){\n\t\t\t\tvar entry = {}, tmp;\n\n\t\t\t\titem = item.children;\n\n\t\t\t\taddConditionally(entry, \"id\", \"guid\", item);\n\t\t\t\taddConditionally(entry, \"title\", \"title\", item);\n\t\t\t\taddConditionally(entry, \"link\", \"link\", item);\n\t\t\t\taddConditionally(entry, \"description\", \"description\", item);\n\t\t\t\tif((tmp = fetch(\"pubDate\", item))) entry.pubDate = new Date(tmp);\n\t\t\t\treturn entry;\n\t\t\t});\n\t\t}\n\t}\n\tthis.dom = feed;\n\tDomHandler.prototype._handleCallback.call(\n\t\tthis, feedRoot ? null : Error(\"couldn't find root of feed\")\n\t);\n};\n\nmodule.exports = FeedHandler;\n","module.exports = Stream;\n\nvar Parser = require(\"./WritableStream.js\");\n\nfunction Stream(options){\n\tParser.call(this, new Cbs(this), options);\n}\n\nrequire(\"inherits\")(Stream, Parser);\n\nStream.prototype.readable = true;\n\nfunction Cbs(scope){\n\tthis.scope = scope;\n}\n\nvar EVENTS = require(\"../\").EVENTS;\n\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tCbs.prototype[\"on\" + name] = function(){\n\t\t\tthis.scope.emit(name);\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tCbs.prototype[\"on\" + name] = function(a){\n\t\t\tthis.scope.emit(name, a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tCbs.prototype[\"on\" + name] = function(a, b){\n\t\t\tthis.scope.emit(name, a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments!\");\n\t}\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n","'use strict';\n\n/*<replacement>*/\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","module.exports = ProxyHandler;\n\nfunction ProxyHandler(cbs){\n\tthis._cbs = cbs || {};\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(){\n\t\t\tif(this._cbs[name]) this._cbs[name]();\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(a){\n\t\t\tif(this._cbs[name]) this._cbs[name](a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tname = \"on\" + name;\n\t\tProxyHandler.prototype[name] = function(a, b){\n\t\t\tif(this._cbs[name]) this._cbs[name](a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments\");\n\t}\n});","var DomUtils = module.exports;\n\n[\n\trequire(\"./lib/stringify\"),\n\trequire(\"./lib/traversal\"),\n\trequire(\"./lib/manipulation\"),\n\trequire(\"./lib/querying\"),\n\trequire(\"./lib/legacy\"),\n\trequire(\"./lib/helpers\")\n].forEach(function(ext){\n\tObject.keys(ext).forEach(function(key){\n\t\tDomUtils[key] = ext[key].bind(DomUtils);\n\t});\n});\n","var ElementType = require(\"domelementtype\"),\n getOuterHTML = require(\"dom-serializer\"),\n isTag = ElementType.isTag;\n\nmodule.exports = {\n\tgetInnerHTML: getInnerHTML,\n\tgetOuterHTML: getOuterHTML,\n\tgetText: getText\n};\n\nfunction getInnerHTML(elem, opts){\n\treturn elem.children ? elem.children.map(function(elem){\n\t\treturn getOuterHTML(elem, opts);\n\t}).join(\"\") : \"\";\n}\n\nfunction getText(elem){\n\tif(Array.isArray(elem)) return elem.map(getText).join(\"\");\n\tif(isTag(elem)) return elem.name === \"br\" ? \"\\n\" : getText(elem.children);\n\tif(elem.type === ElementType.CDATA) return getText(elem.children);\n\tif(elem.type === ElementType.Text) return elem.data;\n\treturn \"\";\n}\n","/*\n Module dependencies\n*/\nvar ElementType = require('domelementtype');\nvar entities = require('entities');\n\n/*\n Boolean Attributes\n*/\nvar booleanAttributes = {\n __proto__: null,\n allowfullscreen: true,\n async: true,\n autofocus: true,\n autoplay: true,\n checked: true,\n controls: true,\n default: true,\n defer: true,\n disabled: true,\n hidden: true,\n ismap: true,\n loop: true,\n multiple: true,\n muted: true,\n open: true,\n readonly: true,\n required: true,\n reversed: true,\n scoped: true,\n seamless: true,\n selected: true,\n typemustmatch: true\n};\n\nvar unencodedElements = {\n __proto__: null,\n style: true,\n script: true,\n xmp: true,\n iframe: true,\n noembed: true,\n noframes: true,\n plaintext: true,\n noscript: true\n};\n\n/*\n Format attributes\n*/\nfunction formatAttrs(attributes, opts) {\n if (!attributes) return;\n\n var output = '',\n value;\n\n // Loop through the attributes\n for (var key in attributes) {\n value = attributes[key];\n if (output) {\n output += ' ';\n }\n\n if (!value && booleanAttributes[key]) {\n output += key;\n } else {\n output += key + '=\"' + (opts.decodeEntities ? entities.encodeXML(value) : value) + '\"';\n }\n }\n\n return output;\n}\n\n/*\n Self-enclosing tags (stolen from node-htmlparser)\n*/\nvar singleTag = {\n __proto__: null,\n area: true,\n base: true,\n basefont: true,\n br: true,\n col: true,\n command: true,\n embed: true,\n frame: true,\n hr: true,\n img: true,\n input: true,\n isindex: true,\n keygen: true,\n link: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true,\n};\n\n\nvar render = module.exports = function(dom, opts) {\n if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];\n opts = opts || {};\n\n var output = '';\n\n for(var i = 0; i < dom.length; i++){\n var elem = dom[i];\n\n if (elem.type === 'root')\n output += render(elem.children, opts);\n else if (ElementType.isTag(elem))\n output += renderTag(elem, opts);\n else if (elem.type === ElementType.Directive)\n output += renderDirective(elem);\n else if (elem.type === ElementType.Comment)\n output += renderComment(elem);\n else if (elem.type === ElementType.CDATA)\n output += renderCdata(elem);\n else\n output += renderText(elem, opts);\n }\n\n return output;\n};\n\nfunction renderTag(elem, opts) {\n // Handle SVG\n if (elem.name === \"svg\") opts = {decodeEntities: opts.decodeEntities, xmlMode: true};\n\n var tag = '<' + elem.name,\n attribs = formatAttrs(elem.attribs, opts);\n\n if (attribs) {\n tag += ' ' + attribs;\n }\n\n if (\n opts.xmlMode\n && (!elem.children || elem.children.length === 0)\n ) {\n tag += '/>';\n } else {\n tag += '>';\n if (elem.children) {\n tag += render(elem.children, opts);\n }\n\n if (!singleTag[elem.name] || opts.xmlMode) {\n tag += '</' + elem.name + '>';\n }\n }\n\n return tag;\n}\n\nfunction renderDirective(elem) {\n return '<' + elem.data + '>';\n}\n\nfunction renderText(elem, opts) {\n var data = elem.data || '';\n\n // if entities weren't decoded, no need to encode them back\n if (opts.decodeEntities && !(elem.parent && elem.parent.name in unencodedElements)) {\n data = entities.encodeXML(data);\n }\n\n return data;\n}\n\nfunction renderCdata(elem) {\n return '<![CDATA[' + elem.children[0].data + ']]>';\n}\n\nfunction renderComment(elem) {\n return '<!--' + elem.data + '-->';\n}\n","//Types of elements found in the DOM\nmodule.exports = {\n\tText: \"text\", //Text\n\tDirective: \"directive\", //<? ... ?>\n\tComment: \"comment\", //<!-- ... -->\n\tScript: \"script\", //<script> tags\n\tStyle: \"style\", //<style> tags\n\tTag: \"tag\", //Any tag\n\tCDATA: \"cdata\", //<![CDATA[ ... ]]>\n\n\tisTag: function(elem){\n\t\treturn elem.type === \"tag\" || elem.type === \"script\" || elem.type === \"style\";\n\t}\n};","var inverseXML = getInverseObj(require(\"../maps/xml.json\")),\n xmlReplacer = getInverseReplacer(inverseXML);\n\nexports.XML = getInverse(inverseXML, xmlReplacer);\n\nvar inverseHTML = getInverseObj(require(\"../maps/entities.json\")),\n htmlReplacer = getInverseReplacer(inverseHTML);\n\nexports.HTML = getInverse(inverseHTML, htmlReplacer);\n\nfunction getInverseObj(obj){\n\treturn Object.keys(obj).sort().reduce(function(inverse, name){\n\t\tinverse[obj[name]] = \"&\" + name + \";\";\n\t\treturn inverse;\n\t}, {});\n}\n\nfunction getInverseReplacer(inverse){\n\tvar single = [],\n\t multiple = [];\n\n\tObject.keys(inverse).forEach(function(k){\n\t\tif(k.length === 1){\n\t\t\tsingle.push(\"\\\\\" + k);\n\t\t} else {\n\t\t\tmultiple.push(k);\n\t\t}\n\t});\n\n\t//TODO add ranges\n\tmultiple.unshift(\"[\" + single.join(\"\") + \"]\");\n\n\treturn new RegExp(multiple.join(\"|\"), \"g\");\n}\n\nvar re_nonASCII = /[^\\0-\\x7F]/g,\n re_astralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction singleCharReplacer(c){\n\treturn \"&#x\" + c.charCodeAt(0).toString(16).toUpperCase() + \";\";\n}\n\nfunction astralReplacer(c){\n\t// http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\tvar high = c.charCodeAt(0);\n\tvar low = c.charCodeAt(1);\n\tvar codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000;\n\treturn \"&#x\" + codePoint.toString(16).toUpperCase() + \";\";\n}\n\nfunction getInverse(inverse, re){\n\tfunction func(name){\n\t\treturn inverse[name];\n\t}\n\n\treturn function(data){\n\t\treturn data\n\t\t\t\t.replace(re, func)\n\t\t\t\t.replace(re_astralSymbols, astralReplacer)\n\t\t\t\t.replace(re_nonASCII, singleCharReplacer);\n\t};\n}\n\nvar re_xmlChars = getInverseReplacer(inverseXML);\n\nfunction escapeXML(data){\n\treturn data\n\t\t\t.replace(re_xmlChars, singleCharReplacer)\n\t\t\t.replace(re_astralSymbols, astralReplacer)\n\t\t\t.replace(re_nonASCII, singleCharReplacer);\n}\n\nexports.escape = escapeXML;\n","var entityMap = require(\"../maps/entities.json\"),\n legacyMap = require(\"../maps/legacy.json\"),\n xmlMap = require(\"../maps/xml.json\"),\n decodeCodePoint = require(\"./decode_codepoint.js\");\n\nvar decodeXMLStrict = getStrictDecoder(xmlMap),\n decodeHTMLStrict = getStrictDecoder(entityMap);\n\nfunction getStrictDecoder(map){\n\tvar keys = Object.keys(map).join(\"|\"),\n\t replace = getReplacer(map);\n\n\tkeys += \"|#[xX][\\\\da-fA-F]+|#\\\\d+\";\n\n\tvar re = new RegExp(\"&(?:\" + keys + \");\", \"g\");\n\n\treturn function(str){\n\t\treturn String(str).replace(re, replace);\n\t};\n}\n\nvar decodeHTML = (function(){\n\tvar legacy = Object.keys(legacyMap)\n\t\t.sort(sorter);\n\n\tvar keys = Object.keys(entityMap)\n\t\t.sort(sorter);\n\n\tfor(var i = 0, j = 0; i < keys.length; i++){\n\t\tif(legacy[j] === keys[i]){\n\t\t\tkeys[i] += \";?\";\n\t\t\tj++;\n\t\t} else {\n\t\t\tkeys[i] += \";\";\n\t\t}\n\t}\n\n\tvar re = new RegExp(\"&(?:\" + keys.join(\"|\") + \"|#[xX][\\\\da-fA-F]+;?|#\\\\d+;?)\", \"g\"),\n\t replace = getReplacer(entityMap);\n\n\tfunction replacer(str){\n\t\tif(str.substr(-1) !== \";\") str += \";\";\n\t\treturn replace(str);\n\t}\n\n\t//TODO consider creating a merged map\n\treturn function(str){\n\t\treturn String(str).replace(re, replacer);\n\t};\n}());\n\nfunction sorter(a, b){\n\treturn a < b ? 1 : -1;\n}\n\nfunction getReplacer(map){\n\treturn function replace(str){\n\t\tif(str.charAt(1) === \"#\"){\n\t\t\tif(str.charAt(2) === \"X\" || str.charAt(2) === \"x\"){\n\t\t\t\treturn decodeCodePoint(parseInt(str.substr(3), 16));\n\t\t\t}\n\t\t\treturn decodeCodePoint(parseInt(str.substr(2), 10));\n\t\t}\n\t\treturn map[str.slice(1, -1)];\n\t};\n}\n\nmodule.exports = {\n\tXML: decodeXMLStrict,\n\tHTML: decodeHTML,\n\tHTMLStrict: decodeHTMLStrict\n};","var getChildren = exports.getChildren = function(elem){\n\treturn elem.children;\n};\n\nvar getParent = exports.getParent = function(elem){\n\treturn elem.parent;\n};\n\nexports.getSiblings = function(elem){\n\tvar parent = getParent(elem);\n\treturn parent ? getChildren(parent) : [elem];\n};\n\nexports.getAttributeValue = function(elem, name){\n\treturn elem.attribs && elem.attribs[name];\n};\n\nexports.hasAttrib = function(elem, name){\n\treturn !!elem.attribs && hasOwnProperty.call(elem.attribs, name);\n};\n\nexports.getName = function(elem){\n\treturn elem.name;\n};\n","exports.removeElement = function(elem){\n\tif(elem.prev) elem.prev.next = elem.next;\n\tif(elem.next) elem.next.prev = elem.prev;\n\n\tif(elem.parent){\n\t\tvar childs = elem.parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 1);\n\t}\n};\n\nexports.replaceElement = function(elem, replacement){\n\tvar prev = replacement.prev = elem.prev;\n\tif(prev){\n\t\tprev.next = replacement;\n\t}\n\n\tvar next = replacement.next = elem.next;\n\tif(next){\n\t\tnext.prev = replacement;\n\t}\n\n\tvar parent = replacement.parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds[childs.lastIndexOf(elem)] = replacement;\n\t}\n};\n\nexports.appendChild = function(elem, child){\n\tchild.parent = elem;\n\n\tif(elem.children.push(child) !== 1){\n\t\tvar sibling = elem.children[elem.children.length - 2];\n\t\tsibling.next = child;\n\t\tchild.prev = sibling;\n\t\tchild.next = null;\n\t}\n};\n\nexports.append = function(elem, next){\n\tvar parent = elem.parent,\n\t\tcurrNext = elem.next;\n\n\tnext.next = currNext;\n\tnext.prev = elem;\n\telem.next = next;\n\tnext.parent = parent;\n\n\tif(currNext){\n\t\tcurrNext.prev = next;\n\t\tif(parent){\n\t\t\tvar childs = parent.children;\n\t\t\tchilds.splice(childs.lastIndexOf(currNext), 0, next);\n\t\t}\n\t} else if(parent){\n\t\tparent.children.push(next);\n\t}\n};\n\nexports.prepend = function(elem, prev){\n\tvar parent = elem.parent;\n\tif(parent){\n\t\tvar childs = parent.children;\n\t\tchilds.splice(childs.lastIndexOf(elem), 0, prev);\n\t}\n\n\tif(elem.prev){\n\t\telem.prev.next = prev;\n\t}\n\t\n\tprev.parent = parent;\n\tprev.prev = elem.prev;\n\tprev.next = elem;\n\telem.prev = prev;\n};\n\n\n","var isTag = require(\"domelementtype\").isTag;\n\nmodule.exports = {\n\tfilter: filter,\n\tfind: find,\n\tfindOneChild: findOneChild,\n\tfindOne: findOne,\n\texistsOne: existsOne,\n\tfindAll: findAll\n};\n\nfunction filter(test, element, recurse, limit){\n\tif(!Array.isArray(element)) element = [element];\n\n\tif(typeof limit !== \"number\" || !isFinite(limit)){\n\t\tlimit = Infinity;\n\t}\n\treturn find(test, element, recurse !== false, limit);\n}\n\nfunction find(test, elems, recurse, limit){\n\tvar result = [], childs;\n\n\tfor(var i = 0, j = elems.length; i < j; i++){\n\t\tif(test(elems[i])){\n\t\t\tresult.push(elems[i]);\n\t\t\tif(--limit <= 0) break;\n\t\t}\n\n\t\tchilds = elems[i].children;\n\t\tif(recurse && childs && childs.length > 0){\n\t\t\tchilds = find(test, childs, recurse, limit);\n\t\t\tresult = result.concat(childs);\n\t\t\tlimit -= childs.length;\n\t\t\tif(limit <= 0) break;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction findOneChild(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(test(elems[i])) return elems[i];\n\t}\n\n\treturn null;\n}\n\nfunction findOne(test, elems){\n\tvar elem = null;\n\n\tfor(var i = 0, l = elems.length; i < l && !elem; i++){\n\t\tif(!isTag(elems[i])){\n\t\t\tcontinue;\n\t\t} else if(test(elems[i])){\n\t\t\telem = elems[i];\n\t\t} else if(elems[i].children.length > 0){\n\t\t\telem = findOne(test, elems[i].children);\n\t\t}\n\t}\n\n\treturn elem;\n}\n\nfunction existsOne(test, elems){\n\tfor(var i = 0, l = elems.length; i < l; i++){\n\t\tif(\n\t\t\tisTag(elems[i]) && (\n\t\t\t\ttest(elems[i]) || (\n\t\t\t\t\telems[i].children.length > 0 &&\n\t\t\t\t\texistsOne(test, elems[i].children)\n\t\t\t\t)\n\t\t\t)\n\t\t){\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nfunction findAll(test, rootElems){\n\tvar result = [];\n\tvar stack = rootElems.slice();\n\twhile(stack.length){\n\t\tvar elem = stack.shift();\n\t\tif(!isTag(elem)) continue;\n\t\tif (elem.children && elem.children.length > 0) {\n\t\t\tstack.unshift.apply(stack, elem.children);\n\t\t}\n\t\tif(test(elem)) result.push(elem);\n\t}\n\treturn result;\n}\n","var ElementType = require(\"domelementtype\");\nvar isTag = exports.isTag = ElementType.isTag;\n\nexports.testElement = function(options, element){\n\tfor(var key in options){\n\t\tif(!options.hasOwnProperty(key));\n\t\telse if(key === \"tag_name\"){\n\t\t\tif(!isTag(element) || !options.tag_name(element.name)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(key === \"tag_type\"){\n\t\t\tif(!options.tag_type(element.type)) return false;\n\t\t} else if(key === \"tag_contains\"){\n\t\t\tif(isTag(element) || !options.tag_contains(element.data)){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if(!element.attribs || !options[key](element.attribs[key])){\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n};\n\nvar Checks = {\n\ttag_name: function(name){\n\t\tif(typeof name === \"function\"){\n\t\t\treturn function(elem){ return isTag(elem) && name(elem.name); };\n\t\t} else if(name === \"*\"){\n\t\t\treturn isTag;\n\t\t} else {\n\t\t\treturn function(elem){ return isTag(elem) && elem.name === name; };\n\t\t}\n\t},\n\ttag_type: function(type){\n\t\tif(typeof type === \"function\"){\n\t\t\treturn function(elem){ return type(elem.type); };\n\t\t} else {\n\t\t\treturn function(elem){ return elem.type === type; };\n\t\t}\n\t},\n\ttag_contains: function(data){\n\t\tif(typeof data === \"function\"){\n\t\t\treturn function(elem){ return !isTag(elem) && data(elem.data); };\n\t\t} else {\n\t\t\treturn function(elem){ return !isTag(elem) && elem.data === data; };\n\t\t}\n\t}\n};\n\nfunction getAttribCheck(attrib, value){\n\tif(typeof value === \"function\"){\n\t\treturn function(elem){ return elem.attribs && value(elem.attribs[attrib]); };\n\t} else {\n\t\treturn function(elem){ return elem.attribs && elem.attribs[attrib] === value; };\n\t}\n}\n\nfunction combineFuncs(a, b){\n\treturn function(elem){\n\t\treturn a(elem) || b(elem);\n\t};\n}\n\nexports.getElements = function(options, element, recurse, limit){\n\tvar funcs = Object.keys(options).map(function(key){\n\t\tvar value = options[key];\n\t\treturn key in Checks ? Checks[key](value) : getAttribCheck(key, value);\n\t});\n\n\treturn funcs.length === 0 ? [] : this.filter(\n\t\tfuncs.reduce(combineFuncs),\n\t\telement, recurse, limit\n\t);\n};\n\nexports.getElementById = function(id, element, recurse){\n\tif(!Array.isArray(element)) element = [element];\n\treturn this.findOne(getAttribCheck(\"id\", id), element, recurse !== false);\n};\n\nexports.getElementsByTagName = function(name, element, recurse, limit){\n\treturn this.filter(Checks.tag_name(name), element, recurse, limit);\n};\n\nexports.getElementsByTagType = function(type, element, recurse, limit){\n\treturn this.filter(Checks.tag_type(type), element, recurse, limit);\n};\n","// removeSubsets\n// Given an array of nodes, remove any member that is contained by another.\nexports.removeSubsets = function(nodes) {\n\tvar idx = nodes.length, node, ancestor, replace;\n\n\t// Check if each node (or one of its ancestors) is already contained in the\n\t// array.\n\twhile (--idx > -1) {\n\t\tnode = ancestor = nodes[idx];\n\n\t\t// Temporarily remove the node under consideration\n\t\tnodes[idx] = null;\n\t\treplace = true;\n\n\t\twhile (ancestor) {\n\t\t\tif (nodes.indexOf(ancestor) > -1) {\n\t\t\t\treplace = false;\n\t\t\t\tnodes.splice(idx, 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tancestor = ancestor.parent;\n\t\t}\n\n\t\t// If the node has been found to be unique, re-insert it.\n\t\tif (replace) {\n\t\t\tnodes[idx] = node;\n\t\t}\n\t}\n\n\treturn nodes;\n};\n\n// Source: http://dom.spec.whatwg.org/#dom-node-comparedocumentposition\nvar POSITION = {\n\tDISCONNECTED: 1,\n\tPRECEDING: 2,\n\tFOLLOWING: 4,\n\tCONTAINS: 8,\n\tCONTAINED_BY: 16\n};\n\n// Compare the position of one node against another node in any other document.\n// The return value is a bitmask with the following values:\n//\n// document order:\n// > There is an ordering, document order, defined on all the nodes in the\n// > document corresponding to the order in which the first character of the\n// > XML representation of each node occurs in the XML representation of the\n// > document after expansion of general entities. Thus, the document element\n// > node will be the first node. Element nodes occur before their children.\n// > Thus, document order orders element nodes in order of the occurrence of\n// > their start-tag in the XML (after expansion of entities). The attribute\n// > nodes of an element occur after the element and before its children. The\n// > relative order of attribute nodes is implementation-dependent./\n// Source:\n// http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order\n//\n// @argument {Node} nodaA The first node to use in the comparison\n// @argument {Node} nodeB The second node to use in the comparison\n//\n// @return {Number} A bitmask describing the input nodes' relative position.\n// See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for\n// a description of these values.\nvar comparePos = exports.compareDocumentPosition = function(nodeA, nodeB) {\n\tvar aParents = [];\n\tvar bParents = [];\n\tvar current, sharedParent, siblings, aSibling, bSibling, idx;\n\n\tif (nodeA === nodeB) {\n\t\treturn 0;\n\t}\n\n\tcurrent = nodeA;\n\twhile (current) {\n\t\taParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\tcurrent = nodeB;\n\twhile (current) {\n\t\tbParents.unshift(current);\n\t\tcurrent = current.parent;\n\t}\n\n\tidx = 0;\n\twhile (aParents[idx] === bParents[idx]) {\n\t\tidx++;\n\t}\n\n\tif (idx === 0) {\n\t\treturn POSITION.DISCONNECTED;\n\t}\n\n\tsharedParent = aParents[idx - 1];\n\tsiblings = sharedParent.children;\n\taSibling = aParents[idx];\n\tbSibling = bParents[idx];\n\n\tif (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) {\n\t\tif (sharedParent === nodeB) {\n\t\t\treturn POSITION.FOLLOWING | POSITION.CONTAINED_BY;\n\t\t}\n\t\treturn POSITION.FOLLOWING;\n\t} else {\n\t\tif (sharedParent === nodeA) {\n\t\t\treturn POSITION.PRECEDING | POSITION.CONTAINS;\n\t\t}\n\t\treturn POSITION.PRECEDING;\n\t}\n};\n\n// Sort an array of nodes based on their relative position in the document and\n// remove any duplicate nodes. If the array contains nodes that do not belong\n// to the same document, sort order is unspecified.\n//\n// @argument {Array} nodes Array of DOM nodes\n//\n// @returns {Array} collection of unique nodes, sorted in document order\nexports.uniqueSort = function(nodes) {\n\tvar idx = nodes.length, node, position;\n\n\tnodes = nodes.slice();\n\n\twhile (--idx > -1) {\n\t\tnode = nodes[idx];\n\t\tposition = nodes.indexOf(node);\n\t\tif (position > -1 && position < idx) {\n\t\t\tnodes.splice(idx, 1);\n\t\t}\n\t}\n\tnodes.sort(function(a, b) {\n\t\tvar relative = comparePos(a, b);\n\t\tif (relative & POSITION.PRECEDING) {\n\t\t\treturn -1;\n\t\t} else if (relative & POSITION.FOLLOWING) {\n\t\t\treturn 1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\treturn nodes;\n};\n","module.exports = CollectingHandler;\n\nfunction CollectingHandler(cbs){\n\tthis._cbs = cbs || {};\n\tthis.events = [];\n}\n\nvar EVENTS = require(\"./\").EVENTS;\nObject.keys(EVENTS).forEach(function(name){\n\tif(EVENTS[name] === 0){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(){\n\t\t\tthis.events.push([name]);\n\t\t\tif(this._cbs[name]) this._cbs[name]();\n\t\t};\n\t} else if(EVENTS[name] === 1){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(a){\n\t\t\tthis.events.push([name, a]);\n\t\t\tif(this._cbs[name]) this._cbs[name](a);\n\t\t};\n\t} else if(EVENTS[name] === 2){\n\t\tname = \"on\" + name;\n\t\tCollectingHandler.prototype[name] = function(a, b){\n\t\t\tthis.events.push([name, a, b]);\n\t\t\tif(this._cbs[name]) this._cbs[name](a, b);\n\t\t};\n\t} else {\n\t\tthrow Error(\"wrong number of arguments\");\n\t}\n});\n\nCollectingHandler.prototype.onreset = function(){\n\tthis.events = [];\n\tif(this._cbs.onreset) this._cbs.onreset();\n};\n\nCollectingHandler.prototype.restart = function(){\n\tif(this._cbs.onreset) this._cbs.onreset();\n\n\tfor(var i = 0, len = this.events.length; i < len; i++){\n\t\tif(this._cbs[this.events[i][0]]){\n\n\t\t\tvar num = this.events[i].length;\n\n\t\t\tif(num === 1){\n\t\t\t\tthis._cbs[this.events[i][0]]();\n\t\t\t} else if(num === 2){\n\t\t\t\tthis._cbs[this.events[i][0]](this.events[i][1]);\n\t\t\t} else {\n\t\t\t\tthis._cbs[this.events[i][0]](this.events[i][1], this.events[i][2]);\n\t\t\t}\n\t\t}\n\t}\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\nfunction escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n}\n\nmodule.exports = escapeRegExp;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/**\n * Adds the key-value `pair` to `map`.\n *\n * @private\n * @param {Object} map The map to modify.\n * @param {Array} pair The key-value pair to add.\n * @returns {Object} Returns `map`.\n */\nfunction addMapEntry(map, pair) {\n // Don't return `map.set` because it's not chainable in IE 11.\n map.set(pair[0], pair[1]);\n return map;\n}\n\n/**\n * Adds `value` to `set`.\n *\n * @private\n * @param {Object} set The set to modify.\n * @param {*} value The value to add.\n * @returns {Object} Returns `set`.\n */\nfunction addSetEntry(set, value) {\n // Don't return `set.add` because it's not chainable in IE 11.\n set.add(value);\n return set;\n}\n\n/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @param {boolean} [isFull] Specify a clone including symbols.\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, isDeep, isFull, customizer, key, object, stack) {\n var result;\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n if (isHostObject(value)) {\n return object ? value : {};\n }\n result = initCloneObject(isFunc ? {} : value);\n if (!isDeep) {\n return copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, baseClone, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (!isArr) {\n var props = isFull ? getAllKeys(value) : keys(value);\n }\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, isDeep, isFull, customizer, key, value, stack));\n });\n return result;\n}\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} prototype The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nfunction baseCreate(proto) {\n return isObject(proto) ? objectCreate(proto) : {};\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var result = new buffer.constructor(buffer.length);\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\n/**\n * Creates a clone of `map`.\n *\n * @private\n * @param {Object} map The map to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned map.\n */\nfunction cloneMap(map, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(mapToArray(map), true) : mapToArray(map);\n return arrayReduce(array, addMapEntry, new map.constructor);\n}\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\n/**\n * Creates a clone of `set`.\n *\n * @private\n * @param {Object} set The set to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned set.\n */\nfunction cloneSet(set, isDeep, cloneFunc) {\n var array = isDeep ? cloneFunc(setToArray(set), true) : setToArray(set);\n return arrayReduce(array, addSetEntry, new set.constructor);\n}\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Copies own symbol properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {Function} cloneFunc The function to clone values.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, cloneFunc, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return cloneMap(object, isDeep, cloneFunc);\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return cloneSet(object, isDeep, cloneFunc);\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, true, true);\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = cloneDeep;\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n return key == '__proto__'\n ? undefined\n : object[key];\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n if (isObject(srcValue)) {\n stack || (stack = new Stack);\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = mergeWith;\n","/**\n * lodash 4.0.1 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","'use strict';\nvar numberIsNan = require('number-is-nan');\nvar arrayUniq = require('array-uniq');\nvar reInt = /^\\d+$/;\n\nfunction deepUnique(arr) {\n\treturn arr.sort().filter(function (el, i) {\n\t\treturn JSON.stringify(el) !== JSON.stringify(arr[i - 1]);\n\t});\n}\n\nexports.parse = function (str) {\n\treturn deepUnique(str.split(',').map(function (el) {\n\t\tvar ret = {};\n\n\t\tel.trim().split(/\\s+/).forEach(function (el, i) {\n\t\t\tif (i === 0) {\n\t\t\t\treturn ret.url = el;\n\t\t\t}\n\n\t\t\tvar value = el.substring(0, el.length - 1);\n\t\t\tvar postfix = el[el.length - 1];\n\t\t\tvar intVal = parseInt(value, 10);\n\t\t\tvar floatVal = parseFloat(value);\n\n\t\t\tif (postfix === 'w' && reInt.test(value)) {\n\t\t\t\tret.width = intVal;\n\t\t\t} else if (postfix === 'h' && reInt.test(value)) {\n\t\t\t\tret.height = intVal;\n\t\t\t} else if (postfix === 'x' && !numberIsNan(floatVal)) {\n\t\t\t\tret.density = floatVal;\n\t\t\t} else {\n\t\t\t\tthrow new Error('Invalid srcset descriptor: ' + el + '.');\n\t\t\t}\n\t\t});\n\n\t\treturn ret;\n\t}));\n}\n\nexports.stringify = function (arr) {\n\treturn arrayUniq(arr.map(function (el) {\n\t\tif (!el.url) {\n\t\t\tthrow new Error('URL is required.');\n\t\t}\n\n\t\tvar ret = [el.url];\n\n\t\tif (el.width) {\n\t\t\tret.push(el.width + 'w');\n\t\t}\n\n\t\tif (el.height) {\n\t\t\tret.push(el.height + 'h');\n\t\t}\n\n\t\tif (el.density) {\n\t\t\tret.push(el.density + 'x');\n\t\t}\n\n\t\treturn ret.join(' ');\n\t})).join(', ');\n}\n","'use strict';\nmodule.exports = Number.isNaN || function (x) {\n\treturn x !== x;\n};\n","'use strict';\n\n// there's 3 implementations written in increasing order of efficiency\n\n// 1 - no Set type is defined\nfunction uniqNoSet(arr) {\n\tvar ret = [];\n\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (ret.indexOf(arr[i]) === -1) {\n\t\t\tret.push(arr[i]);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\n// 2 - a simple Set type is defined\nfunction uniqSet(arr) {\n\tvar seen = new Set();\n\treturn arr.filter(function (el) {\n\t\tif (!seen.has(el)) {\n\t\t\tseen.add(el);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t});\n}\n\n// 3 - a standard Set type is defined and it has a forEach method\nfunction uniqSetWithForEach(arr) {\n\tvar ret = [];\n\n\t(new Set(arr)).forEach(function (el) {\n\t\tret.push(el);\n\t});\n\n\treturn ret;\n}\n\n// V8 currently has a broken implementation\n// https://github.com/joyent/node/issues/8449\nfunction doesForEachActuallyWork() {\n\tvar ret = false;\n\n\t(new Set([true])).forEach(function (el) {\n\t\tret = el;\n\t});\n\n\treturn ret === true;\n}\n\nif ('Set' in global) {\n\tif (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {\n\t\tmodule.exports = uniqSetWithForEach;\n\t} else {\n\t\tmodule.exports = uniqSet;\n\t}\n} else {\n\tmodule.exports = uniqNoSet;\n}\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _processor = require('./processor');\n\nvar _processor2 = _interopRequireDefault(_processor);\n\nvar _stringify = require('./stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _vendor = require('./vendor');\n\nvar _vendor2 = _interopRequireDefault(_vendor);\n\nvar _parse = require('./parse');\n\nvar _parse2 = _interopRequireDefault(_parse);\n\nvar _list = require('./list');\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create a new {@link Processor} instance that will apply `plugins`\n * as CSS processors.\n *\n * @param {Array.<Plugin|pluginFunction>|Processor} plugins - PostCSS\n * plugins. See {@link Processor#use} for plugin format.\n *\n * @return {Processor} Processor to process multiple CSS\n *\n * @example\n * import postcss from 'postcss';\n *\n * postcss(plugins).process(css, { from, to }).then(result => {\n * console.log(result.css);\n * });\n *\n * @namespace postcss\n */\nfunction postcss() {\n for (var _len = arguments.length, plugins = Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0];\n }\n return new _processor2.default(plugins);\n}\n\n/**\n * Creates a PostCSS plugin with a standard API.\n *\n * The newly-wrapped function will provide both the name and PostCSS\n * version of the plugin.\n *\n * ```js\n * const processor = postcss([replace]);\n * processor.plugins[0].postcssPlugin //=> 'postcss-replace'\n * processor.plugins[0].postcssVersion //=> '5.1.0'\n * ```\n *\n * The plugin function receives 2 arguments: {@link Root}\n * and {@link Result} instance. The function should mutate the provided\n * `Root` node. Alternatively, you can create a new `Root` node\n * and override the `result.root` property.\n *\n * ```js\n * const cleaner = postcss.plugin('postcss-cleaner', () => {\n * return (root, result) => {\n * result.root = postcss.root();\n * };\n * });\n * ```\n *\n * As a convenience, plugins also expose a `process` method so that you can use\n * them as standalone tools.\n *\n * ```js\n * cleaner.process(css, processOpts, pluginOpts);\n * // This is equivalent to:\n * postcss([ cleaner(pluginOpts) ]).process(css, processOpts);\n * ```\n *\n * Asynchronous plugins should return a `Promise` instance.\n *\n * ```js\n * postcss.plugin('postcss-import', () => {\n * return (root, result) => {\n * return new Promise( (resolve, reject) => {\n * fs.readFile('base.css', (base) => {\n * root.prepend(base);\n * resolve();\n * });\n * });\n * };\n * });\n * ```\n *\n * Add warnings using the {@link Node#warn} method.\n * Send data to other plugins using the {@link Result#messages} array.\n *\n * ```js\n * postcss.plugin('postcss-caniuse-test', () => {\n * return (root, result) => {\n * root.walkDecls(decl => {\n * if ( !caniuse.support(decl.prop) ) {\n * decl.warn(result, 'Some browsers do not support ' + decl.prop);\n * }\n * });\n * };\n * });\n * ```\n *\n * @param {string} name - PostCSS plugin name. Same as in `name`\n * property in `package.json`. It will be saved\n * in `plugin.postcssPlugin` property.\n * @param {function} initializer - will receive plugin options\n * and should return {@link pluginFunction}\n *\n * @return {Plugin} PostCSS plugin\n */\npostcss.plugin = function plugin(name, initializer) {\n var creator = function creator() {\n var transformer = initializer.apply(undefined, arguments);\n transformer.postcssPlugin = name;\n transformer.postcssVersion = new _processor2.default().version;\n return transformer;\n };\n\n var cache = void 0;\n Object.defineProperty(creator, 'postcss', {\n get: function get() {\n if (!cache) cache = creator();\n return cache;\n }\n });\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts);\n };\n\n return creator;\n};\n\n/**\n * Default function to convert a node tree into a CSS string.\n *\n * @param {Node} node - start node for stringifing. Usually {@link Root}.\n * @param {builder} builder - function to concatenate CSS from node’s parts\n * or generate string and source map\n *\n * @return {void}\n *\n * @function\n */\npostcss.stringify = _stringify2.default;\n\n/**\n * Parses source css and returns a new {@link Root} node,\n * which contains the source CSS nodes.\n *\n * @param {string|toString} css - string with input CSS or any object\n * with toString() method, like a Buffer\n * @param {processOptions} [opts] - options with only `from` and `map` keys\n *\n * @return {Root} PostCSS AST\n *\n * @example\n * // Simple CSS concatenation with source map support\n * const root1 = postcss.parse(css1, { from: file1 });\n * const root2 = postcss.parse(css2, { from: file2 });\n * root1.append(root2).toResult().css;\n *\n * @function\n */\npostcss.parse = _parse2.default;\n\n/**\n * @member {vendor} - Contains the {@link vendor} module.\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab') //=> ['tab']\n */\npostcss.vendor = _vendor2.default;\n\n/**\n * @member {list} - Contains the {@link list} module.\n *\n * @example\n * postcss.list.space('5px calc(10% + 5px)') //=> ['5px', 'calc(10% + 5px)']\n */\npostcss.list = _list2.default;\n\n/**\n * Creates a new {@link Comment} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Comment} new Comment node\n *\n * @example\n * postcss.comment({ text: 'test' })\n */\npostcss.comment = function (defaults) {\n return new _comment2.default(defaults);\n};\n\n/**\n * Creates a new {@link AtRule} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {AtRule} new AtRule node\n *\n * @example\n * postcss.atRule({ name: 'charset' }).toString() //=> \"@charset\"\n */\npostcss.atRule = function (defaults) {\n return new _atRule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Declaration} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Declaration} new Declaration node\n *\n * @example\n * postcss.decl({ prop: 'color', value: 'red' }).toString() //=> \"color: red\"\n */\npostcss.decl = function (defaults) {\n return new _declaration2.default(defaults);\n};\n\n/**\n * Creates a new {@link Rule} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Rule} new Rule node\n *\n * @example\n * postcss.rule({ selector: 'a' }).toString() //=> \"a {\\n}\"\n */\npostcss.rule = function (defaults) {\n return new _rule2.default(defaults);\n};\n\n/**\n * Creates a new {@link Root} node.\n *\n * @param {object} [defaults] - properties for the new node.\n *\n * @return {Root} new Root node\n *\n * @example\n * postcss.root({ after: '\\n' }).toString() //=> \"\\n\"\n */\npostcss.root = function (defaults) {\n return new _root2.default(defaults);\n};\n\nexports.default = postcss;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3Rjc3MuZXM2Il0sIm5hbWVzIjpbInBvc3Rjc3MiLCJwbHVnaW5zIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwiUHJvY2Vzc29yIiwicGx1Z2luIiwibmFtZSIsImluaXRpYWxpemVyIiwiY3JlYXRvciIsInRyYW5zZm9ybWVyIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3NWZXJzaW9uIiwidmVyc2lvbiIsImNhY2hlIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJwcm9jZXNzIiwiY3NzIiwicHJvY2Vzc09wdHMiLCJwbHVnaW5PcHRzIiwic3RyaW5naWZ5IiwicGFyc2UiLCJ2ZW5kb3IiLCJsaXN0IiwiY29tbWVudCIsIkNvbW1lbnQiLCJkZWZhdWx0cyIsImF0UnVsZSIsIkF0UnVsZSIsImRlY2wiLCJEZWNsYXJhdGlvbiIsInJ1bGUiLCJSdWxlIiwicm9vdCIsIlJvb3QiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFTQSxPQUFULEdBQTZCO0FBQUEsb0NBQVRDLE9BQVM7QUFBVEEsV0FBUztBQUFBOztBQUN6QixNQUFLQSxRQUFRQyxNQUFSLEtBQW1CLENBQW5CLElBQXdCQyxNQUFNQyxPQUFOLENBQWNILFFBQVEsQ0FBUixDQUFkLENBQTdCLEVBQXlEO0FBQ3JEQSxjQUFVQSxRQUFRLENBQVIsQ0FBVjtBQUNIO0FBQ0QsU0FBTyxJQUFJSSxtQkFBSixDQUFjSixPQUFkLENBQVA7QUFDSDs7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0VBRCxRQUFRTSxNQUFSLEdBQWlCLFNBQVNBLE1BQVQsQ0FBZ0JDLElBQWhCLEVBQXNCQyxXQUF0QixFQUFtQztBQUNoRCxNQUFJQyxVQUFVLFNBQVZBLE9BQVUsR0FBbUI7QUFDN0IsUUFBSUMsY0FBY0YsdUNBQWxCO0FBQ0FFLGdCQUFZQyxhQUFaLEdBQTZCSixJQUE3QjtBQUNBRyxnQkFBWUUsY0FBWixHQUE4QixJQUFJUCxtQkFBSixFQUFELENBQWtCUSxPQUEvQztBQUNBLFdBQU9ILFdBQVA7QUFDSCxHQUxEOztBQU9BLE1BQUlJLGNBQUo7QUFDQUMsU0FBT0MsY0FBUCxDQUFzQlAsT0FBdEIsRUFBK0IsU0FBL0IsRUFBMEM7QUFDdENRLE9BRHNDLGlCQUNoQztBQUNGLFVBQUssQ0FBQ0gsS0FBTixFQUFjQSxRQUFRTCxTQUFSO0FBQ2QsYUFBT0ssS0FBUDtBQUNIO0FBSnFDLEdBQTFDOztBQU9BTCxVQUFRUyxPQUFSLEdBQWtCLFVBQVVDLEdBQVYsRUFBZUMsV0FBZixFQUE0QkMsVUFBNUIsRUFBd0M7QUFDdEQsV0FBT3JCLFFBQVEsQ0FBRVMsUUFBUVksVUFBUixDQUFGLENBQVIsRUFBaUNILE9BQWpDLENBQXlDQyxHQUF6QyxFQUE4Q0MsV0FBOUMsQ0FBUDtBQUNILEdBRkQ7O0FBSUEsU0FBT1gsT0FBUDtBQUNILENBckJEOztBQXVCQTs7Ozs7Ozs7Ozs7QUFXQVQsUUFBUXNCLFNBQVIsR0FBb0JBLG1CQUFwQjs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBdEIsUUFBUXVCLEtBQVIsR0FBZ0JBLGVBQWhCOztBQUVBOzs7Ozs7QUFNQXZCLFFBQVF3QixNQUFSLEdBQWlCQSxnQkFBakI7O0FBRUE7Ozs7OztBQU1BeEIsUUFBUXlCLElBQVIsR0FBZUEsY0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBekIsUUFBUTBCLE9BQVIsR0FBa0I7QUFBQSxTQUFZLElBQUlDLGlCQUFKLENBQVlDLFFBQVosQ0FBWjtBQUFBLENBQWxCOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRNkIsTUFBUixHQUFpQjtBQUFBLFNBQVksSUFBSUMsZ0JBQUosQ0FBV0YsUUFBWCxDQUFaO0FBQUEsQ0FBakI7O0FBRUE7Ozs7Ozs7Ozs7QUFVQTVCLFFBQVErQixJQUFSLEdBQWU7QUFBQSxTQUFZLElBQUlDLHFCQUFKLENBQWdCSixRQUFoQixDQUFaO0FBQUEsQ0FBZjs7QUFFQTs7Ozs7Ozs7OztBQVVBNUIsUUFBUWlDLElBQVIsR0FBZTtBQUFBLFNBQVksSUFBSUMsY0FBSixDQUFTTixRQUFULENBQVo7QUFBQSxDQUFmOztBQUVBOzs7Ozs7Ozs7O0FBVUE1QixRQUFRbUMsSUFBUixHQUFlO0FBQUEsU0FBWSxJQUFJQyxjQUFKLENBQVNSLFFBQVQsQ0FBWjtBQUFBLENBQWY7O2tCQUVlNUIsTyIsImZpbGUiOiJwb3N0Y3NzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlY2xhcmF0aW9uIGZyb20gJy4vZGVjbGFyYXRpb24nO1xuaW1wb3J0IFByb2Nlc3NvciAgIGZyb20gJy4vcHJvY2Vzc29yJztcbmltcG9ydCBzdHJpbmdpZnkgICBmcm9tICcuL3N0cmluZ2lmeSc7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBBdFJ1bGUgICAgICBmcm9tICcuL2F0LXJ1bGUnO1xuaW1wb3J0IHZlbmRvciAgICAgIGZyb20gJy4vdmVuZG9yJztcbmltcG9ydCBwYXJzZSAgICAgICBmcm9tICcuL3BhcnNlJztcbmltcG9ydCBsaXN0ICAgICAgICBmcm9tICcuL2xpc3QnO1xuaW1wb3J0IFJ1bGUgICAgICAgIGZyb20gJy4vcnVsZSc7XG5pbXBvcnQgUm9vdCAgICAgICAgZnJvbSAnLi9yb290JztcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcge0BsaW5rIFByb2Nlc3Nvcn0gaW5zdGFuY2UgdGhhdCB3aWxsIGFwcGx5IGBwbHVnaW5zYFxuICogYXMgQ1NTIHByb2Nlc3NvcnMuXG4gKlxuICogQHBhcmFtIHtBcnJheS48UGx1Z2lufHBsdWdpbkZ1bmN0aW9uPnxQcm9jZXNzb3J9IHBsdWdpbnMgLSBQb3N0Q1NTXG4gKiAgICAgICAgcGx1Z2lucy4gU2VlIHtAbGluayBQcm9jZXNzb3IjdXNlfSBmb3IgcGx1Z2luIGZvcm1hdC5cbiAqXG4gKiBAcmV0dXJuIHtQcm9jZXNzb3J9IFByb2Nlc3NvciB0byBwcm9jZXNzIG11bHRpcGxlIENTU1xuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgcG9zdGNzcyBmcm9tICdwb3N0Y3NzJztcbiAqXG4gKiBwb3N0Y3NzKHBsdWdpbnMpLnByb2Nlc3MoY3NzLCB7IGZyb20sIHRvIH0pLnRoZW4ocmVzdWx0ID0+IHtcbiAqICAgY29uc29sZS5sb2cocmVzdWx0LmNzcyk7XG4gKiB9KTtcbiAqXG4gKiBAbmFtZXNwYWNlIHBvc3Rjc3NcbiAqL1xuZnVuY3Rpb24gcG9zdGNzcyguLi5wbHVnaW5zKSB7XG4gICAgaWYgKCBwbHVnaW5zLmxlbmd0aCA9PT0gMSAmJiBBcnJheS5pc0FycmF5KHBsdWdpbnNbMF0pICkge1xuICAgICAgICBwbHVnaW5zID0gcGx1Z2luc1swXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBQcm9jZXNzb3IocGx1Z2lucyk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFBvc3RDU1MgcGx1Z2luIHdpdGggYSBzdGFuZGFyZCBBUEkuXG4gKlxuICogVGhlIG5ld2x5LXdyYXBwZWQgZnVuY3Rpb24gd2lsbCBwcm92aWRlIGJvdGggdGhlIG5hbWUgYW5kIFBvc3RDU1NcbiAqIHZlcnNpb24gb2YgdGhlIHBsdWdpbi5cbiAqXG4gKiBgYGBqc1xuICogIGNvbnN0IHByb2Nlc3NvciA9IHBvc3Rjc3MoW3JlcGxhY2VdKTtcbiAqICBwcm9jZXNzb3IucGx1Z2luc1swXS5wb3N0Y3NzUGx1Z2luICAvLz0+ICdwb3N0Y3NzLXJlcGxhY2UnXG4gKiAgcHJvY2Vzc29yLnBsdWdpbnNbMF0ucG9zdGNzc1ZlcnNpb24gLy89PiAnNS4xLjAnXG4gKiBgYGBcbiAqXG4gKiBUaGUgcGx1Z2luIGZ1bmN0aW9uIHJlY2VpdmVzIDIgYXJndW1lbnRzOiB7QGxpbmsgUm9vdH1cbiAqIGFuZCB7QGxpbmsgUmVzdWx0fSBpbnN0YW5jZS4gVGhlIGZ1bmN0aW9uIHNob3VsZCBtdXRhdGUgdGhlIHByb3ZpZGVkXG4gKiBgUm9vdGAgbm9kZS4gQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjcmVhdGUgYSBuZXcgYFJvb3RgIG5vZGVcbiAqIGFuZCBvdmVycmlkZSB0aGUgYHJlc3VsdC5yb290YCBwcm9wZXJ0eS5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgY2xlYW5lciA9IHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWNsZWFuZXInLCAoKSA9PiB7XG4gKiAgIHJldHVybiAocm9vdCwgcmVzdWx0KSA9PiB7XG4gKiAgICAgcmVzdWx0LnJvb3QgPSBwb3N0Y3NzLnJvb3QoKTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQXMgYSBjb252ZW5pZW5jZSwgcGx1Z2lucyBhbHNvIGV4cG9zZSBhIGBwcm9jZXNzYCBtZXRob2Qgc28gdGhhdCB5b3UgY2FuIHVzZVxuICogdGhlbSBhcyBzdGFuZGFsb25lIHRvb2xzLlxuICpcbiAqIGBgYGpzXG4gKiBjbGVhbmVyLnByb2Nlc3MoY3NzLCBwcm9jZXNzT3B0cywgcGx1Z2luT3B0cyk7XG4gKiAvLyBUaGlzIGlzIGVxdWl2YWxlbnQgdG86XG4gKiBwb3N0Y3NzKFsgY2xlYW5lcihwbHVnaW5PcHRzKSBdKS5wcm9jZXNzKGNzcywgcHJvY2Vzc09wdHMpO1xuICogYGBgXG4gKlxuICogQXN5bmNocm9ub3VzIHBsdWdpbnMgc2hvdWxkIHJldHVybiBhIGBQcm9taXNlYCBpbnN0YW5jZS5cbiAqXG4gKiBgYGBqc1xuICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtaW1wb3J0JywgKCkgPT4ge1xuICogICByZXR1cm4gKHJvb3QsIHJlc3VsdCkgPT4ge1xuICogICAgIHJldHVybiBuZXcgUHJvbWlzZSggKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICogICAgICAgZnMucmVhZEZpbGUoJ2Jhc2UuY3NzJywgKGJhc2UpID0+IHtcbiAqICAgICAgICAgcm9vdC5wcmVwZW5kKGJhc2UpO1xuICogICAgICAgICByZXNvbHZlKCk7XG4gKiAgICAgICB9KTtcbiAqICAgICB9KTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQWRkIHdhcm5pbmdzIHVzaW5nIHRoZSB7QGxpbmsgTm9kZSN3YXJufSBtZXRob2QuXG4gKiBTZW5kIGRhdGEgdG8gb3RoZXIgcGx1Z2lucyB1c2luZyB0aGUge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30gYXJyYXkuXG4gKlxuICogYGBganNcbiAqIHBvc3Rjc3MucGx1Z2luKCdwb3N0Y3NzLWNhbml1c2UtdGVzdCcsICgpID0+IHtcbiAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAqICAgICByb290LndhbGtEZWNscyhkZWNsID0+IHtcbiAqICAgICAgIGlmICggIWNhbml1c2Uuc3VwcG9ydChkZWNsLnByb3ApICkge1xuICogICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCAnU29tZSBicm93c2VycyBkbyBub3Qgc3VwcG9ydCAnICsgZGVjbC5wcm9wKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICAgLSBQb3N0Q1NTIHBsdWdpbiBuYW1lLiBTYW1lIGFzIGluIGBuYW1lYFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eSBpbiBgcGFja2FnZS5qc29uYC4gSXQgd2lsbCBiZSBzYXZlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBgcGx1Z2luLnBvc3Rjc3NQbHVnaW5gIHByb3BlcnR5LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gaW5pdGlhbGl6ZXIgLSB3aWxsIHJlY2VpdmUgcGx1Z2luIG9wdGlvbnNcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNob3VsZCByZXR1cm4ge0BsaW5rIHBsdWdpbkZ1bmN0aW9ufVxuICpcbiAqIEByZXR1cm4ge1BsdWdpbn0gUG9zdENTUyBwbHVnaW5cbiAqL1xucG9zdGNzcy5wbHVnaW4gPSBmdW5jdGlvbiBwbHVnaW4obmFtZSwgaW5pdGlhbGl6ZXIpIHtcbiAgICBsZXQgY3JlYXRvciA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIGxldCB0cmFuc2Zvcm1lciA9IGluaXRpYWxpemVyKC4uLmFyZ3MpO1xuICAgICAgICB0cmFuc2Zvcm1lci5wb3N0Y3NzUGx1Z2luICA9IG5hbWU7XG4gICAgICAgIHRyYW5zZm9ybWVyLnBvc3Rjc3NWZXJzaW9uID0gKG5ldyBQcm9jZXNzb3IoKSkudmVyc2lvbjtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVyO1xuICAgIH07XG5cbiAgICBsZXQgY2FjaGU7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0b3IsICdwb3N0Y3NzJywge1xuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICBpZiAoICFjYWNoZSApIGNhY2hlID0gY3JlYXRvcigpO1xuICAgICAgICAgICAgcmV0dXJuIGNhY2hlO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjcmVhdG9yLnByb2Nlc3MgPSBmdW5jdGlvbiAoY3NzLCBwcm9jZXNzT3B0cywgcGx1Z2luT3B0cykge1xuICAgICAgICByZXR1cm4gcG9zdGNzcyhbIGNyZWF0b3IocGx1Z2luT3B0cykgXSkucHJvY2Vzcyhjc3MsIHByb2Nlc3NPcHRzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNyZWF0b3I7XG59O1xuXG4vKipcbiAqIERlZmF1bHQgZnVuY3Rpb24gdG8gY29udmVydCBhIG5vZGUgdHJlZSBpbnRvIGEgQ1NTIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgICAgLSBzdGFydCBub2RlIGZvciBzdHJpbmdpZmluZy4gVXN1YWxseSB7QGxpbmsgUm9vdH0uXG4gKiBAcGFyYW0ge2J1aWxkZXJ9IGJ1aWxkZXIgLSBmdW5jdGlvbiB0byBjb25jYXRlbmF0ZSBDU1MgZnJvbSBub2Rl4oCZcyBwYXJ0c1xuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZ2VuZXJhdGUgc3RyaW5nIGFuZCBzb3VyY2UgbWFwXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG5cbi8qKlxuICogUGFyc2VzIHNvdXJjZSBjc3MgYW5kIHJldHVybnMgYSBuZXcge0BsaW5rIFJvb3R9IG5vZGUsXG4gKiB3aGljaCBjb250YWlucyB0aGUgc291cmNlIENTUyBub2Rlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3x0b1N0cmluZ30gY3NzICAgLSBzdHJpbmcgd2l0aCBpbnB1dCBDU1Mgb3IgYW55IG9iamVjdFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0b1N0cmluZygpIG1ldGhvZCwgbGlrZSBhIEJ1ZmZlclxuICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdIC0gb3B0aW9ucyB3aXRoIG9ubHkgYGZyb21gIGFuZCBgbWFwYCBrZXlzXG4gKlxuICogQHJldHVybiB7Um9vdH0gUG9zdENTUyBBU1RcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2ltcGxlIENTUyBjb25jYXRlbmF0aW9uIHdpdGggc291cmNlIG1hcCBzdXBwb3J0XG4gKiBjb25zdCByb290MSA9IHBvc3Rjc3MucGFyc2UoY3NzMSwgeyBmcm9tOiBmaWxlMSB9KTtcbiAqIGNvbnN0IHJvb3QyID0gcG9zdGNzcy5wYXJzZShjc3MyLCB7IGZyb206IGZpbGUyIH0pO1xuICogcm9vdDEuYXBwZW5kKHJvb3QyKS50b1Jlc3VsdCgpLmNzcztcbiAqXG4gKiBAZnVuY3Rpb25cbiAqL1xucG9zdGNzcy5wYXJzZSA9IHBhcnNlO1xuXG4vKipcbiAqIEBtZW1iZXIge3ZlbmRvcn0gLSBDb250YWlucyB0aGUge0BsaW5rIHZlbmRvcn0gbW9kdWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLnZlbmRvci51bnByZWZpeGVkKCctbW96LXRhYicpIC8vPT4gWyd0YWInXVxuICovXG5wb3N0Y3NzLnZlbmRvciA9IHZlbmRvcjtcblxuLyoqXG4gKiBAbWVtYmVyIHtsaXN0fSAtIENvbnRhaW5zIHRoZSB7QGxpbmsgbGlzdH0gbW9kdWxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLmxpc3Quc3BhY2UoJzVweCBjYWxjKDEwJSArIDVweCknKSAvLz0+IFsnNXB4JywgJ2NhbGMoMTAlICsgNXB4KSddXG4gKi9cbnBvc3Rjc3MubGlzdCA9IGxpc3Q7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQ29tbWVudH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtDb21tZW50fSBuZXcgQ29tbWVudCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuY29tbWVudCh7IHRleHQ6ICd0ZXN0JyB9KVxuICovXG5wb3N0Y3NzLmNvbW1lbnQgPSBkZWZhdWx0cyA9PiBuZXcgQ29tbWVudChkZWZhdWx0cyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQXRSdWxlfSBub2RlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBbZGVmYXVsdHNdIC0gcHJvcGVydGllcyBmb3IgdGhlIG5ldyBub2RlLlxuICpcbiAqIEByZXR1cm4ge0F0UnVsZX0gbmV3IEF0UnVsZSBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MuYXRSdWxlKHsgbmFtZTogJ2NoYXJzZXQnIH0pLnRvU3RyaW5nKCkgLy89PiBcIkBjaGFyc2V0XCJcbiAqL1xucG9zdGNzcy5hdFJ1bGUgPSBkZWZhdWx0cyA9PiBuZXcgQXRSdWxlKGRlZmF1bHRzKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEZWNsYXJhdGlvbn0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtEZWNsYXJhdGlvbn0gbmV3IERlY2xhcmF0aW9uIG5vZGVcbiAqXG4gKiBAZXhhbXBsZVxuICogcG9zdGNzcy5kZWNsKHsgcHJvcDogJ2NvbG9yJywgdmFsdWU6ICdyZWQnIH0pLnRvU3RyaW5nKCkgLy89PiBcImNvbG9yOiByZWRcIlxuICovXG5wb3N0Y3NzLmRlY2wgPSBkZWZhdWx0cyA9PiBuZXcgRGVjbGFyYXRpb24oZGVmYXVsdHMpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIFJ1bGV9IG5vZGUuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IFtkZWZhdWx0c10gLSBwcm9wZXJ0aWVzIGZvciB0aGUgbmV3IG5vZGUuXG4gKlxuICogQHJldHVybiB7UnVsZX0gbmV3IFJ1bGUgbm9kZVxuICpcbiAqIEBleGFtcGxlXG4gKiBwb3N0Y3NzLnJ1bGUoeyBzZWxlY3RvcjogJ2EnIH0pLnRvU3RyaW5nKCkgLy89PiBcImEge1xcbn1cIlxuICovXG5wb3N0Y3NzLnJ1bGUgPSBkZWZhdWx0cyA9PiBuZXcgUnVsZShkZWZhdWx0cyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgUm9vdH0gbm9kZS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gW2RlZmF1bHRzXSAtIHByb3BlcnRpZXMgZm9yIHRoZSBuZXcgbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHtSb290fSBuZXcgUm9vdCBub2RlXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3Mucm9vdCh7IGFmdGVyOiAnXFxuJyB9KS50b1N0cmluZygpIC8vPT4gXCJcXG5cIlxuICovXG5wb3N0Y3NzLnJvb3QgPSBkZWZhdWx0cyA9PiBuZXcgUm9vdChkZWZhdWx0cyk7XG5cbmV4cG9ydCBkZWZhdWx0IHBvc3Rjc3M7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _chalk = require('chalk');\n\nvar _chalk2 = _interopRequireDefault(_chalk);\n\nvar _tokenize = require('./tokenize');\n\nvar _tokenize2 = _interopRequireDefault(_tokenize);\n\nvar _input = require('./input');\n\nvar _input2 = _interopRequireDefault(_input);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HIGHLIGHT_THEME = {\n 'brackets': _chalk2.default.cyan,\n 'at-word': _chalk2.default.cyan,\n 'call': _chalk2.default.cyan,\n 'comment': _chalk2.default.gray,\n 'string': _chalk2.default.green,\n 'class': _chalk2.default.yellow,\n 'hash': _chalk2.default.magenta,\n '(': _chalk2.default.cyan,\n ')': _chalk2.default.cyan,\n '{': _chalk2.default.yellow,\n '}': _chalk2.default.yellow,\n '[': _chalk2.default.yellow,\n ']': _chalk2.default.yellow,\n ':': _chalk2.default.yellow,\n ';': _chalk2.default.yellow\n};\n\nfunction getTokenType(_ref, processor) {\n var type = _ref[0],\n value = _ref[1];\n\n if (type === 'word') {\n if (value[0] === '.') {\n return 'class';\n }\n if (value[0] === '#') {\n return 'hash';\n }\n }\n\n if (!processor.endOfFile()) {\n var next = processor.nextToken();\n processor.back(next);\n if (next[0] === 'brackets' || next[0] === '(') return 'call';\n }\n\n return type;\n}\n\nfunction terminalHighlight(css) {\n var processor = (0, _tokenize2.default)(new _input2.default(css), { ignoreErrors: true });\n var result = '';\n\n var _loop = function _loop() {\n var token = processor.nextToken();\n var color = HIGHLIGHT_THEME[getTokenType(token, processor)];\n if (color) {\n result += token[1].split(/\\r?\\n/).map(function (i) {\n return color(i);\n }).join('\\n');\n } else {\n result += token[1];\n }\n };\n\n while (!processor.endOfFile()) {\n _loop();\n }\n return result;\n}\n\nexports.default = terminalHighlight;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlcm1pbmFsLWhpZ2hsaWdodC5lczYiXSwibmFtZXMiOlsiSElHSExJR0hUX1RIRU1FIiwiY2hhbGsiLCJjeWFuIiwiZ3JheSIsImdyZWVuIiwieWVsbG93IiwibWFnZW50YSIsImdldFRva2VuVHlwZSIsInByb2Nlc3NvciIsInR5cGUiLCJ2YWx1ZSIsImVuZE9mRmlsZSIsIm5leHQiLCJuZXh0VG9rZW4iLCJiYWNrIiwidGVybWluYWxIaWdobGlnaHQiLCJjc3MiLCJJbnB1dCIsImlnbm9yZUVycm9ycyIsInJlc3VsdCIsInRva2VuIiwiY29sb3IiLCJzcGxpdCIsIm1hcCIsImkiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFFQTs7OztBQUNBOzs7Ozs7QUFFQSxJQUFNQSxrQkFBa0I7QUFDcEIsZ0JBQVlDLGdCQUFNQyxJQURFO0FBRXBCLGVBQVlELGdCQUFNQyxJQUZFO0FBR3BCLFlBQVlELGdCQUFNQyxJQUhFO0FBSXBCLGVBQVlELGdCQUFNRSxJQUpFO0FBS3BCLGNBQVlGLGdCQUFNRyxLQUxFO0FBTXBCLGFBQVlILGdCQUFNSSxNQU5FO0FBT3BCLFlBQVlKLGdCQUFNSyxPQVBFO0FBUXBCLFNBQVlMLGdCQUFNQyxJQVJFO0FBU3BCLFNBQVlELGdCQUFNQyxJQVRFO0FBVXBCLFNBQVlELGdCQUFNSSxNQVZFO0FBV3BCLFNBQVlKLGdCQUFNSSxNQVhFO0FBWXBCLFNBQVlKLGdCQUFNSSxNQVpFO0FBYXBCLFNBQVlKLGdCQUFNSSxNQWJFO0FBY3BCLFNBQVlKLGdCQUFNSSxNQWRFO0FBZXBCLFNBQVlKLGdCQUFNSTtBQWZFLENBQXhCOztBQWtCQSxTQUFTRSxZQUFULE9BQXFDQyxTQUFyQyxFQUFnRDtBQUFBLFFBQXpCQyxJQUF5QjtBQUFBLFFBQW5CQyxLQUFtQjs7QUFDNUMsUUFBS0QsU0FBUyxNQUFkLEVBQXVCO0FBQ25CLFlBQUtDLE1BQU0sQ0FBTixNQUFhLEdBQWxCLEVBQXdCO0FBQ3BCLG1CQUFPLE9BQVA7QUFDSDtBQUNELFlBQUtBLE1BQU0sQ0FBTixNQUFhLEdBQWxCLEVBQXdCO0FBQ3BCLG1CQUFPLE1BQVA7QUFDSDtBQUNKOztBQUVELFFBQUssQ0FBQ0YsVUFBVUcsU0FBVixFQUFOLEVBQThCO0FBQzFCLFlBQUlDLE9BQU9KLFVBQVVLLFNBQVYsRUFBWDtBQUNBTCxrQkFBVU0sSUFBVixDQUFlRixJQUFmO0FBQ0EsWUFBS0EsS0FBSyxDQUFMLE1BQVksVUFBWixJQUEwQkEsS0FBSyxDQUFMLE1BQVksR0FBM0MsRUFBaUQsT0FBTyxNQUFQO0FBQ3BEOztBQUVELFdBQU9ILElBQVA7QUFDSDs7QUFFRCxTQUFTTSxpQkFBVCxDQUEyQkMsR0FBM0IsRUFBZ0M7QUFDNUIsUUFBSVIsWUFBWSx3QkFBVSxJQUFJUyxlQUFKLENBQVVELEdBQVYsQ0FBVixFQUEwQixFQUFFRSxjQUFjLElBQWhCLEVBQTFCLENBQWhCO0FBQ0EsUUFBSUMsU0FBUyxFQUFiOztBQUY0QjtBQUl4QixZQUFJQyxRQUFRWixVQUFVSyxTQUFWLEVBQVo7QUFDQSxZQUFJUSxRQUFRckIsZ0JBQWdCTyxhQUFhYSxLQUFiLEVBQW9CWixTQUFwQixDQUFoQixDQUFaO0FBQ0EsWUFBS2EsS0FBTCxFQUFhO0FBQ1RGLHNCQUFVQyxNQUFNLENBQU4sRUFBU0UsS0FBVCxDQUFlLE9BQWYsRUFDTEMsR0FESyxDQUNBO0FBQUEsdUJBQUtGLE1BQU1HLENBQU4sQ0FBTDtBQUFBLGFBREEsRUFFTEMsSUFGSyxDQUVBLElBRkEsQ0FBVjtBQUdILFNBSkQsTUFJTztBQUNITixzQkFBVUMsTUFBTSxDQUFOLENBQVY7QUFDSDtBQVp1Qjs7QUFHNUIsV0FBUSxDQUFDWixVQUFVRyxTQUFWLEVBQVQsRUFBaUM7QUFBQTtBQVVoQztBQUNELFdBQU9RLE1BQVA7QUFDSDs7a0JBRWNKLGlCIiwiZmlsZSI6InRlcm1pbmFsLWhpZ2hsaWdodC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCB0b2tlbml6ZXIgZnJvbSAnLi90b2tlbml6ZSc7XG5pbXBvcnQgSW5wdXQgICAgZnJvbSAnLi9pbnB1dCc7XG5cbmNvbnN0IEhJR0hMSUdIVF9USEVNRSA9IHtcbiAgICAnYnJhY2tldHMnOiBjaGFsay5jeWFuLFxuICAgICdhdC13b3JkJzogIGNoYWxrLmN5YW4sXG4gICAgJ2NhbGwnOiAgICAgY2hhbGsuY3lhbixcbiAgICAnY29tbWVudCc6ICBjaGFsay5ncmF5LFxuICAgICdzdHJpbmcnOiAgIGNoYWxrLmdyZWVuLFxuICAgICdjbGFzcyc6ICAgIGNoYWxrLnllbGxvdyxcbiAgICAnaGFzaCc6ICAgICBjaGFsay5tYWdlbnRhLFxuICAgICcoJzogICAgICAgIGNoYWxrLmN5YW4sXG4gICAgJyknOiAgICAgICAgY2hhbGsuY3lhbixcbiAgICAneyc6ICAgICAgICBjaGFsay55ZWxsb3csXG4gICAgJ30nOiAgICAgICAgY2hhbGsueWVsbG93LFxuICAgICdbJzogICAgICAgIGNoYWxrLnllbGxvdyxcbiAgICAnXSc6ICAgICAgICBjaGFsay55ZWxsb3csXG4gICAgJzonOiAgICAgICAgY2hhbGsueWVsbG93LFxuICAgICc7JzogICAgICAgIGNoYWxrLnllbGxvd1xufTtcblxuZnVuY3Rpb24gZ2V0VG9rZW5UeXBlKFt0eXBlLCB2YWx1ZV0sIHByb2Nlc3Nvcikge1xuICAgIGlmICggdHlwZSA9PT0gJ3dvcmQnICkge1xuICAgICAgICBpZiAoIHZhbHVlWzBdID09PSAnLicgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2NsYXNzJztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIHZhbHVlWzBdID09PSAnIycgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ2hhc2gnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCAhcHJvY2Vzc29yLmVuZE9mRmlsZSgpICkge1xuICAgICAgICBsZXQgbmV4dCA9IHByb2Nlc3Nvci5uZXh0VG9rZW4oKTtcbiAgICAgICAgcHJvY2Vzc29yLmJhY2sobmV4dCk7XG4gICAgICAgIGlmICggbmV4dFswXSA9PT0gJ2JyYWNrZXRzJyB8fCBuZXh0WzBdID09PSAnKCcgKSByZXR1cm4gJ2NhbGwnO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiB0ZXJtaW5hbEhpZ2hsaWdodChjc3MpIHtcbiAgICBsZXQgcHJvY2Vzc29yID0gdG9rZW5pemVyKG5ldyBJbnB1dChjc3MpLCB7IGlnbm9yZUVycm9yczogdHJ1ZSB9KTtcbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgd2hpbGUgKCAhcHJvY2Vzc29yLmVuZE9mRmlsZSgpICkge1xuICAgICAgICBsZXQgdG9rZW4gPSBwcm9jZXNzb3IubmV4dFRva2VuKCk7XG4gICAgICAgIGxldCBjb2xvciA9IEhJR0hMSUdIVF9USEVNRVtnZXRUb2tlblR5cGUodG9rZW4sIHByb2Nlc3NvcildO1xuICAgICAgICBpZiAoIGNvbG9yICkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IHRva2VuWzFdLnNwbGl0KC9cXHI/XFxuLylcbiAgICAgICAgICAgICAgICAubWFwKCBpID0+IGNvbG9yKGkpIClcbiAgICAgICAgICAgICAgICAuam9pbignXFxuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gdG9rZW5bMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGVybWluYWxIaWdobGlnaHQ7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nvar _fs = require('fs');\n\nvar _fs2 = _interopRequireDefault(_fs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction fromBase64(str) {\n if (Buffer) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(str, 'base64').toString();\n } else {\n return new Buffer(str, 'base64').toString();\n }\n } else {\n return window.atob(str);\n }\n}\n\n/**\n * Source map information from input CSS.\n * For example, source map after Sass compiler.\n *\n * This class will automatically find source map in input CSS or in file system\n * near input file (according `from` option).\n *\n * @example\n * const root = postcss.parse(css, { from: 'a.sass.css' });\n * root.input.map //=> PreviousMap\n */\n\nvar PreviousMap = function () {\n\n /**\n * @param {string} css - input CSS source\n * @param {processOptions} [opts] - {@link Processor#process} options\n */\n function PreviousMap(css, opts) {\n _classCallCheck(this, PreviousMap);\n\n this.loadAnnotation(css);\n /**\n * @member {boolean} - Was source map inlined by data-uri to input CSS.\n */\n this.inline = this.startWith(this.annotation, 'data:');\n\n var prev = opts.map ? opts.map.prev : undefined;\n var text = this.loadMap(opts.from, prev);\n if (text) this.text = text;\n }\n\n /**\n * Create a instance of `SourceMapGenerator` class\n * from the `source-map` library to work with source map information.\n *\n * It is lazy method, so it will create object only on first call\n * and then it will use cache.\n *\n * @return {SourceMapGenerator} object with source map information\n */\n\n\n PreviousMap.prototype.consumer = function consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new _sourceMap2.default.SourceMapConsumer(this.text);\n }\n return this.consumerCache;\n };\n\n /**\n * Does source map contains `sourcesContent` with input source text.\n *\n * @return {boolean} Is `sourcesContent` present\n */\n\n\n PreviousMap.prototype.withContent = function withContent() {\n return !!(this.consumer().sourcesContent && this.consumer().sourcesContent.length > 0);\n };\n\n PreviousMap.prototype.startWith = function startWith(string, start) {\n if (!string) return false;\n return string.substr(0, start.length) === start;\n };\n\n PreviousMap.prototype.loadAnnotation = function loadAnnotation(css) {\n var match = css.match(/\\/\\*\\s*# sourceMappingURL=(.*)\\s*\\*\\//);\n if (match) this.annotation = match[1].trim();\n };\n\n PreviousMap.prototype.decodeInline = function decodeInline(text) {\n // data:application/json;charset=utf-8;base64,\n // data:application/json;charset=utf8;base64,\n // data:application/json;base64,\n var baseUri = /^data:application\\/json;(?:charset=utf-?8;)?base64,/;\n var uri = 'data:application/json,';\n\n if (this.startWith(text, uri)) {\n return decodeURIComponent(text.substr(uri.length));\n } else if (baseUri.test(text)) {\n return fromBase64(text.substr(RegExp.lastMatch.length));\n } else {\n var encoding = text.match(/data:application\\/json;([^,]+),/)[1];\n throw new Error('Unsupported source map encoding ' + encoding);\n }\n };\n\n PreviousMap.prototype.loadMap = function loadMap(file, prev) {\n if (prev === false) return false;\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev;\n } else if (typeof prev === 'function') {\n var prevPath = prev(file);\n if (prevPath && _fs2.default.existsSync && _fs2.default.existsSync(prevPath)) {\n return _fs2.default.readFileSync(prevPath, 'utf-8').toString().trim();\n } else {\n throw new Error('Unable to load previous source map: ' + prevPath.toString());\n }\n } else if (prev instanceof _sourceMap2.default.SourceMapConsumer) {\n return _sourceMap2.default.SourceMapGenerator.fromSourceMap(prev).toString();\n } else if (prev instanceof _sourceMap2.default.SourceMapGenerator) {\n return prev.toString();\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev);\n } else {\n throw new Error('Unsupported previous source map format: ' + prev.toString());\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation);\n } else if (this.annotation) {\n var map = this.annotation;\n if (file) map = _path2.default.join(_path2.default.dirname(file), map);\n\n this.root = _path2.default.dirname(map);\n if (_fs2.default.existsSync && _fs2.default.existsSync(map)) {\n return _fs2.default.readFileSync(map, 'utf-8').toString().trim();\n } else {\n return false;\n }\n }\n };\n\n PreviousMap.prototype.isMap = function isMap(map) {\n if ((typeof map === 'undefined' ? 'undefined' : _typeof(map)) !== 'object') return false;\n return typeof map.mappings === 'string' || typeof map._mappings === 'string';\n };\n\n return PreviousMap;\n}();\n\nexports.default = PreviousMap;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByZXZpb3VzLW1hcC5lczYiXSwibmFtZXMiOlsiZnJvbUJhc2U2NCIsInN0ciIsIkJ1ZmZlciIsImZyb20iLCJVaW50OEFycmF5IiwidG9TdHJpbmciLCJ3aW5kb3ciLCJhdG9iIiwiUHJldmlvdXNNYXAiLCJjc3MiLCJvcHRzIiwibG9hZEFubm90YXRpb24iLCJpbmxpbmUiLCJzdGFydFdpdGgiLCJhbm5vdGF0aW9uIiwicHJldiIsIm1hcCIsInVuZGVmaW5lZCIsInRleHQiLCJsb2FkTWFwIiwiY29uc3VtZXIiLCJjb25zdW1lckNhY2hlIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwid2l0aENvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsImxlbmd0aCIsInN0cmluZyIsInN0YXJ0Iiwic3Vic3RyIiwibWF0Y2giLCJ0cmltIiwiZGVjb2RlSW5saW5lIiwiYmFzZVVyaSIsInVyaSIsImRlY29kZVVSSUNvbXBvbmVudCIsInRlc3QiLCJSZWdFeHAiLCJsYXN0TWF0Y2giLCJlbmNvZGluZyIsIkVycm9yIiwiZmlsZSIsInByZXZQYXRoIiwiZnMiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwiU291cmNlTWFwR2VuZXJhdG9yIiwiZnJvbVNvdXJjZU1hcCIsImlzTWFwIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhdGgiLCJqb2luIiwiZGlybmFtZSIsInJvb3QiLCJtYXBwaW5ncyIsIl9tYXBwaW5ncyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztBQUVBLFNBQVNBLFVBQVQsQ0FBb0JDLEdBQXBCLEVBQXlCO0FBQ3JCLFFBQUtDLE1BQUwsRUFBYztBQUNWLFlBQUtBLE9BQU9DLElBQVAsSUFBZUQsT0FBT0MsSUFBUCxLQUFnQkMsV0FBV0QsSUFBL0MsRUFBc0Q7QUFDbEQsbUJBQU9ELE9BQU9DLElBQVAsQ0FBWUYsR0FBWixFQUFpQixRQUFqQixFQUEyQkksUUFBM0IsRUFBUDtBQUNILFNBRkQsTUFF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LGFBQUdDLFVBQUgsSUFBaUJELGFBQUdDLFVBQUgsQ0FBYzVCLEdBQWQsQ0FBdEIsRUFBMkM7QUFDdkMsdUJBQU8yQixhQUFHRSxZQUFILENBQWdCN0IsR0FBaEIsRUFBcUIsT0FBckIsRUFBOEJYLFFBQTlCLEdBQXlDMEIsSUFBekMsRUFBUDtBQUNILGFBRkQsTUFFTztBQUNILHVCQUFPLEtBQVA7QUFDSDtBQUNKO0FBQ0osSzs7MEJBRURpQixLLGtCQUFNaEMsRyxFQUFLO0FBQ1AsWUFBSyxRQUFPQSxHQUFQLHlDQUFPQSxHQUFQLE9BQWUsUUFBcEIsRUFBK0IsT0FBTyxLQUFQO0FBQy9CLGVBQU8sT0FBT0EsSUFBSXVDLFFBQVgsS0FBd0IsUUFBeEIsSUFDQSxPQUFPdkMsSUFBSXdDLFNBQVgsS0FBeUIsUUFEaEM7QUFFSCxLOzs7OztrQkFHVWhELFciLCJmaWxlIjoicHJldmlvdXMtbWFwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vemlsbGEgIGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHBhdGggICAgIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGZzICAgICAgIGZyb20gJ2ZzJztcblxuZnVuY3Rpb24gZnJvbUJhc2U2NChzdHIpIHtcbiAgICBpZiAoIEJ1ZmZlciApIHtcbiAgICAgICAgaWYgKCBCdWZmZXIuZnJvbSAmJiBCdWZmZXIuZnJvbSAhPT0gVWludDhBcnJheS5mcm9tICkge1xuICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcihzdHIsICdiYXNlNjQnKS50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5hdG9iKHN0cik7XG4gICAgfVxufVxuXG4vKipcbiAqIFNvdXJjZSBtYXAgaW5mb3JtYXRpb24gZnJvbSBpbnB1dCBDU1MuXG4gKiBGb3IgZXhhbXBsZSwgc291cmNlIG1hcCBhZnRlciBTYXNzIGNvbXBpbGVyLlxuICpcbiAqIFRoaXMgY2xhc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgc291cmNlIG1hcCBpbiBpbnB1dCBDU1Mgb3IgaW4gZmlsZSBzeXN0ZW1cbiAqIG5lYXIgaW5wdXQgZmlsZSAoYWNjb3JkaW5nIGBmcm9tYCBvcHRpb24pLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByb290ID0gcG9zdGNzcy5wYXJzZShjc3MsIHsgZnJvbTogJ2Euc2Fzcy5jc3MnIH0pO1xuICogcm9vdC5pbnB1dC5tYXAgLy89PiBQcmV2aW91c01hcFxuICovXG5jbGFzcyBQcmV2aW91c01hcCB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gICAgICAgICBjc3MgICAgLSBpbnB1dCBDU1Mgc291cmNlXG4gICAgICogQHBhcmFtIHtwcm9jZXNzT3B0aW9uc30gW29wdHNdIC0ge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfSBvcHRpb25zXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY3NzLCBvcHRzKSB7XG4gICAgICAgIHRoaXMubG9hZEFubm90YXRpb24oY3NzKTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge2Jvb2xlYW59IC0gV2FzIHNvdXJjZSBtYXAgaW5saW5lZCBieSBkYXRhLXVyaSB0byBpbnB1dCBDU1MuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmlubGluZSA9IHRoaXMuc3RhcnRXaXRoKHRoaXMuYW5ub3RhdGlvbiwgJ2RhdGE6Jyk7XG5cbiAgICAgICAgbGV0IHByZXYgPSBvcHRzLm1hcCA/IG9wdHMubWFwLnByZXYgOiB1bmRlZmluZWQ7XG4gICAgICAgIGxldCB0ZXh0ID0gdGhpcy5sb2FkTWFwKG9wdHMuZnJvbSwgcHJldik7XG4gICAgICAgIGlmICggdGV4dCApIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgaW5zdGFuY2Ugb2YgYFNvdXJjZU1hcEdlbmVyYXRvcmAgY2xhc3NcbiAgICAgKiBmcm9tIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeSB0byB3b3JrIHdpdGggc291cmNlIG1hcCBpbmZvcm1hdGlvbi5cbiAgICAgKlxuICAgICAqIEl0IGlzIGxhenkgbWV0aG9kLCBzbyBpdCB3aWxsIGNyZWF0ZSBvYmplY3Qgb25seSBvbiBmaXJzdCBjYWxsXG4gICAgICogYW5kIHRoZW4gaXQgd2lsbCB1c2UgY2FjaGUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtTb3VyY2VNYXBHZW5lcmF0b3J9IG9iamVjdCB3aXRoIHNvdXJjZSBtYXAgaW5mb3JtYXRpb25cbiAgICAgKi9cbiAgICBjb25zdW1lcigpIHtcbiAgICAgICAgaWYgKCAhdGhpcy5jb25zdW1lckNhY2hlICkge1xuICAgICAgICAgICAgdGhpcy5jb25zdW1lckNhY2hlID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIodGhpcy50ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdW1lckNhY2hlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERvZXMgc291cmNlIG1hcCBjb250YWlucyBgc291cmNlc0NvbnRlbnRgIHdpdGggaW5wdXQgc291cmNlIHRleHQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtib29sZWFufSBJcyBgc291cmNlc0NvbnRlbnRgIHByZXNlbnRcbiAgICAgKi9cbiAgICB3aXRoQ29udGVudCgpIHtcbiAgICAgICAgcmV0dXJuICEhKHRoaXMuY29uc3VtZXIoKS5zb3VyY2VzQ29udGVudCAmJlxuICAgICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lcigpLnNvdXJjZXNDb250ZW50Lmxlbmd0aCA+IDApO1xuICAgIH1cblxuICAgIHN0YXJ0V2l0aChzdHJpbmcsIHN0YXJ0KSB7XG4gICAgICAgIGlmICggIXN0cmluZyApIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHN0cmluZy5zdWJzdHIoMCwgc3RhcnQubGVuZ3RoKSA9PT0gc3RhcnQ7XG4gICAgfVxuXG4gICAgbG9hZEFubm90YXRpb24oY3NzKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IGNzcy5tYXRjaCgvXFwvXFwqXFxzKiMgc291cmNlTWFwcGluZ1VSTD0oLiopXFxzKlxcKlxcLy8pO1xuICAgICAgICBpZiAoIG1hdGNoICkgdGhpcy5hbm5vdGF0aW9uID0gbWF0Y2hbMV0udHJpbSgpO1xuICAgIH1cblxuICAgIGRlY29kZUlubGluZSh0ZXh0KSB7XG4gICAgICAgIC8vIGRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcbiAgICAgICAgLy8gZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmODtiYXNlNjQsXG4gICAgICAgIC8vIGRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXG4gICAgICAgIGxldCBiYXNlVXJpID0gL15kYXRhOmFwcGxpY2F0aW9uXFwvanNvbjsoPzpjaGFyc2V0PXV0Zi0/ODspP2Jhc2U2NCwvO1xuICAgICAgICBsZXQgdXJpICAgICA9ICdkYXRhOmFwcGxpY2F0aW9uL2pzb24sJztcblxuICAgICAgICBpZiAoIHRoaXMuc3RhcnRXaXRoKHRleHQsIHVyaSkgKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KCB0ZXh0LnN1YnN0cih1cmkubGVuZ3RoKSApO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoIGJhc2VVcmkudGVzdCh0ZXh0KSApIHtcbiAgICAgICAgICAgIHJldHVybiBmcm9tQmFzZTY0KHRleHQuc3Vic3RyKFJlZ0V4cC5sYXN0TWF0Y2gubGVuZ3RoKSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBlbmNvZGluZyA9IHRleHQubWF0Y2goL2RhdGE6YXBwbGljYXRpb25cXC9qc29uOyhbXixdKyksLylbMV07XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHNvdXJjZSBtYXAgZW5jb2RpbmcgJyArIGVuY29kaW5nKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxvYWRNYXAoZmlsZSwgcHJldikge1xuICAgICAgICBpZiAoIHByZXYgPT09IGZhbHNlICkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmICggcHJldiApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIHByZXYgPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIHByZXYgPT09ICdmdW5jdGlvbicgKSB7XG4gICAgICAgICAgICAgICAgbGV0IHByZXZQYXRoID0gcHJldihmaWxlKTtcbiAgICAgICAgICAgICAgICBpZiAoIHByZXZQYXRoICYmIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhwcmV2UGF0aCkgKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMocHJldlBhdGgsICd1dGYtOCcpLnRvU3RyaW5nKCkudHJpbSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGxvYWQgcHJldmlvdXMgc291cmNlIG1hcDogJyArXG4gICAgICAgICAgICAgICAgICAgIHByZXZQYXRoLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHByZXYgaW5zdGFuY2VvZiBtb3ppbGxhLlNvdXJjZU1hcENvbnN1bWVyICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvclxuICAgICAgICAgICAgICAgICAgICAuZnJvbVNvdXJjZU1hcChwcmV2KS50b1N0cmluZygpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldiBpbnN0YW5jZW9mIG1vemlsbGEuU291cmNlTWFwR2VuZXJhdG9yICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmlzTWFwKHByZXYpICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShwcmV2KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwcmV2aW91cyBzb3VyY2UgbWFwIGZvcm1hdDogJyArXG4gICAgICAgICAgICAgICAgICAgIHByZXYudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmICggdGhpcy5pbmxpbmUgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWNvZGVJbmxpbmUodGhpcy5hbm5vdGF0aW9uKTtcblxuICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLmFubm90YXRpb24gKSB7XG4gICAgICAgICAgICBsZXQgbWFwID0gdGhpcy5hbm5vdGF0aW9uO1xuICAgICAgICAgICAgaWYgKCBmaWxlICkgbWFwID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShmaWxlKSwgbWFwKTtcblxuICAgICAgICAgICAgdGhpcy5yb290ID0gcGF0aC5kaXJuYW1lKG1hcCk7XG4gICAgICAgICAgICBpZiAoIGZzLmV4aXN0c1N5bmMgJiYgZnMuZXhpc3RzU3luYyhtYXApICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMobWFwLCAndXRmLTgnKS50b1N0cmluZygpLnRyaW0oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNNYXAobWFwKSB7XG4gICAgICAgIGlmICggdHlwZW9mIG1hcCAhPT0gJ29iamVjdCcgKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0eXBlb2YgbWFwLm1hcHBpbmdzID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgdHlwZW9mIG1hcC5fbWFwcGluZ3MgPT09ICdzdHJpbmcnO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJldmlvdXNNYXA7XG4iXX0=\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _sourceMap = require('source-map');\n\nvar _sourceMap2 = _interopRequireDefault(_sourceMap);\n\nvar _path = require('path');\n\nvar _path2 = _interopRequireDefault(_path);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MapGenerator = function () {\n function MapGenerator(stringify, root, opts) {\n _classCallCheck(this, MapGenerator);\n\n this.stringify = stringify;\n this.mapOpts = opts.map || {};\n this.root = root;\n this.opts = opts;\n }\n\n MapGenerator.prototype.isMap = function isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map;\n } else {\n return this.previous().length > 0;\n }\n };\n\n MapGenerator.prototype.previous = function previous() {\n var _this = this;\n\n if (!this.previousMaps) {\n this.previousMaps = [];\n this.root.walk(function (node) {\n if (node.source && node.source.input.map) {\n var map = node.source.input.map;\n if (_this.previousMaps.indexOf(map) === -1) {\n _this.previousMaps.push(map);\n }\n }\n });\n }\n\n return this.previousMaps;\n };\n\n MapGenerator.prototype.isInline = function isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline;\n }\n\n var annotation = this.mapOpts.annotation;\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false;\n }\n\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.inline;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.isSourcesContent = function isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent;\n }\n if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.withContent();\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.clearAnnotation = function clearAnnotation() {\n if (this.mapOpts.annotation === false) return;\n\n var node = void 0;\n for (var i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i];\n if (node.type !== 'comment') continue;\n if (node.text.indexOf('# sourceMappingURL=') === 0) {\n this.root.removeChild(i);\n }\n }\n };\n\n MapGenerator.prototype.setSourcesContent = function setSourcesContent() {\n var _this2 = this;\n\n var already = {};\n this.root.walk(function (node) {\n if (node.source) {\n var from = node.source.input.from;\n if (from && !already[from]) {\n already[from] = true;\n var relative = _this2.relative(from);\n _this2.map.setSourceContent(relative, node.source.input.css);\n }\n }\n });\n };\n\n MapGenerator.prototype.applyPrevMaps = function applyPrevMaps() {\n for (var _iterator = this.previous(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var prev = _ref;\n\n var from = this.relative(prev.file);\n var root = prev.root || _path2.default.dirname(prev.file);\n var map = void 0;\n\n if (this.mapOpts.sourcesContent === false) {\n map = new _sourceMap2.default.SourceMapConsumer(prev.text);\n if (map.sourcesContent) {\n map.sourcesContent = map.sourcesContent.map(function () {\n return null;\n });\n }\n } else {\n map = prev.consumer();\n }\n\n this.map.applySourceMap(map, from, this.relative(root));\n }\n };\n\n MapGenerator.prototype.isAnnotation = function isAnnotation() {\n if (this.isInline()) {\n return true;\n } else if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation;\n } else if (this.previous().length) {\n return this.previous().some(function (i) {\n return i.annotation;\n });\n } else {\n return true;\n }\n };\n\n MapGenerator.prototype.toBase64 = function toBase64(str) {\n if (Buffer) {\n if (Buffer.from && Buffer.from !== Uint8Array.from) {\n return Buffer.from(str).toString('base64');\n } else {\n return new Buffer(str).toString('base64');\n }\n } else {\n return window.btoa(unescape(encodeURIComponent(str)));\n }\n };\n\n MapGenerator.prototype.addAnnotation = function addAnnotation() {\n var content = void 0;\n\n if (this.isInline()) {\n\n content = 'data:application/json;base64,' + this.toBase64(this.map.toString());\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation;\n } else {\n content = this.outputFile() + '.map';\n }\n\n var eol = '\\n';\n if (this.css.indexOf('\\r\\n') !== -1) eol = '\\r\\n';\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */';\n };\n\n MapGenerator.prototype.outputFile = function outputFile() {\n if (this.opts.to) {\n return this.relative(this.opts.to);\n } else if (this.opts.from) {\n return this.relative(this.opts.from);\n } else {\n return 'to.css';\n }\n };\n\n MapGenerator.prototype.generateMap = function generateMap() {\n this.generateString();\n if (this.isSourcesContent()) this.setSourcesContent();\n if (this.previous().length > 0) this.applyPrevMaps();\n if (this.isAnnotation()) this.addAnnotation();\n\n if (this.isInline()) {\n return [this.css];\n } else {\n return [this.css, this.map];\n }\n };\n\n MapGenerator.prototype.relative = function relative(file) {\n if (file.indexOf('<') === 0) return file;\n if (/^\\w+:\\/\\//.test(file)) return file;\n\n var from = this.opts.to ? _path2.default.dirname(this.opts.to) : '.';\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = _path2.default.dirname(_path2.default.resolve(from, this.mapOpts.annotation));\n }\n\n file = _path2.default.relative(from, file);\n if (_path2.default.sep === '\\\\') {\n return file.replace(/\\\\/g, '/');\n } else {\n return file;\n }\n };\n\n MapGenerator.prototype.sourcePath = function sourcePath(node) {\n if (this.mapOpts.from) {\n return this.mapOpts.from;\n } else {\n return this.relative(node.source.input.from);\n }\n };\n\n MapGenerator.prototype.generateString = function generateString() {\n var _this3 = this;\n\n this.css = '';\n this.map = new _sourceMap2.default.SourceMapGenerator({ file: this.outputFile() });\n\n var line = 1;\n var column = 1;\n\n var lines = void 0,\n last = void 0;\n this.stringify(this.root, function (str, node, type) {\n _this3.css += str;\n\n if (node && type !== 'end') {\n if (node.source && node.source.start) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.start.line,\n column: node.source.start.column - 1\n }\n });\n } else {\n _this3.map.addMapping({\n source: '<no source>',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n\n lines = str.match(/\\n/g);\n if (lines) {\n line += lines.length;\n last = str.lastIndexOf('\\n');\n column = str.length - last;\n } else {\n column += str.length;\n }\n\n if (node && type !== 'start') {\n if (node.source && node.source.end) {\n _this3.map.addMapping({\n source: _this3.sourcePath(node),\n generated: { line: line, column: column - 1 },\n original: {\n line: node.source.end.line,\n column: node.source.end.column\n }\n });\n } else {\n _this3.map.addMapping({\n source: '<no source>',\n original: { line: 1, column: 0 },\n generated: { line: line, column: column - 1 }\n });\n }\n }\n });\n };\n\n MapGenerator.prototype.generate = function generate() {\n this.clearAnnotation();\n\n if (this.isMap()) {\n return this.generateMap();\n } else {\n var result = '';\n this.stringify(this.root, function (i) {\n result += i;\n });\n return [result];\n }\n };\n\n return MapGenerator;\n}();\n\nexports.default = MapGenerator;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1hcC1nZW5lcmF0b3IuZXM2Il0sIm5hbWVzIjpbIk1hcEdlbmVyYXRvciIsInN0cmluZ2lmeSIsInJvb3QiLCJvcHRzIiwibWFwT3B0cyIsIm1hcCIsImlzTWFwIiwicHJldmlvdXMiLCJsZW5ndGgiLCJwcmV2aW91c01hcHMiLCJ3YWxrIiwibm9kZSIsInNvdXJjZSIsImlucHV0IiwiaW5kZXhPZiIsInB1c2giLCJpc0lubGluZSIsImlubGluZSIsImFubm90YXRpb24iLCJzb21lIiwiaSIsImlzU291cmNlc0NvbnRlbnQiLCJzb3VyY2VzQ29udGVudCIsIndpdGhDb250ZW50IiwiY2xlYXJBbm5vdGF0aW9uIiwibm9kZXMiLCJ0eXBlIiwidGV4dCIsInJlbW92ZUNoaWxkIiwic2V0U291cmNlc0NvbnRlbnQiLCJhbHJlYWR5IiwiZnJvbSIsInJlbGF0aXZlIiwic2V0U291cmNlQ29udGVudCIsImNzcyIsImFwcGx5UHJldk1hcHMiLCJwcmV2IiwiZmlsZSIsInBhdGgiLCJkaXJuYW1lIiwibW96aWxsYSIsIlNvdXJjZU1hcENvbnN1bWVyIiwiY29uc3VtZXIiLCJhcHBseVNvdXJjZU1hcCIsImlzQW5ub3RhdGlvbiIsInRvQmFzZTY0Iiwic3RyIiwiQnVmZmVyIiwiVWludDhBcnJheSIsInRvU3RyaW5nIiwid2luZG93IiwiYnRvYSIsInVuZXNjYXBlIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiYWRkQW5ub3RhdGlvbiIsImNvbnRlbnQiLCJvdXRwdXRGaWxlIiwiZW9sIiwidG8iLCJnZW5lcmF0ZU1hcCIsImdlbmVyYXRlU3RyaW5nIiwidGVzdCIsInJlc29sdmUiLCJzZXAiLCJyZXBsYWNlIiwic291cmNlUGF0aCIsIlNvdXJjZU1hcEdlbmVyYXRvciIsImxpbmUiLCJjb2x1bW4iLCJsaW5lcyIsImxhc3QiLCJzdGFydCIsImFkZE1hcHBpbmciLCJnZW5lcmF0ZWQiLCJvcmlnaW5hbCIsIm1hdGNoIiwibGFzdEluZGV4T2YiLCJlbmQiLCJnZW5lcmF0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QVcsRUFBRU4sVUFBRixFQUFRQyxRQUFRQSxTQUFTLENBQXpCO0FBSEsscUJBQXBCO0FBS0g7QUFDSjtBQUNKLFNBakREO0FBa0RILEs7OzJCQUVEVSxRLHVCQUFXO0FBQ1AsYUFBS3RELGVBQUw7O0FBRUEsWUFBSyxLQUFLbEIsS0FBTCxFQUFMLEVBQW9CO0FBQ2hCLG1CQUFPLEtBQUtxRCxXQUFMLEVBQVA7QUFDSCxTQUZELE1BRU87QUFDSCxnQkFBSW9CLFNBQVMsRUFBYjtBQUNBLGlCQUFLOUUsU0FBTCxDQUFlLEtBQUtDLElBQXBCLEVBQTBCLGFBQUs7QUFDM0I2RSwwQkFBVTNELENBQVY7QUFDSCxhQUZEO0FBR0EsbUJBQU8sQ0FBQzJELE1BQUQsQ0FBUDtBQUNIO0FBQ0osSzs7Ozs7a0JBalJnQi9FLFkiLCJmaWxlIjoibWFwLWdlbmVyYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb3ppbGxhIGZyb20gJ3NvdXJjZS1tYXAnO1xuaW1wb3J0IHBhdGggICAgZnJvbSAncGF0aCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hcEdlbmVyYXRvciB7XG5cbiAgICBjb25zdHJ1Y3RvcihzdHJpbmdpZnksIHJvb3QsIG9wdHMpIHtcbiAgICAgICAgdGhpcy5zdHJpbmdpZnkgPSBzdHJpbmdpZnk7XG4gICAgICAgIHRoaXMubWFwT3B0cyAgID0gb3B0cy5tYXAgfHwgeyB9O1xuICAgICAgICB0aGlzLnJvb3QgICAgICA9IHJvb3Q7XG4gICAgICAgIHRoaXMub3B0cyAgICAgID0gb3B0cztcbiAgICB9XG5cbiAgICBpc01hcCgpIHtcbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5vcHRzLm1hcCAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gISF0aGlzLm9wdHMubWFwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJldmlvdXMoKSB7XG4gICAgICAgIGlmICggIXRoaXMucHJldmlvdXNNYXBzICkge1xuICAgICAgICAgICAgdGhpcy5wcmV2aW91c01hcHMgPSBbXTtcbiAgICAgICAgICAgIHRoaXMucm9vdC53YWxrKCBub2RlID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIG5vZGUuc291cmNlICYmIG5vZGUuc291cmNlLmlucHV0Lm1hcCApIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1hcCA9IG5vZGUuc291cmNlLmlucHV0Lm1hcDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnByZXZpb3VzTWFwcy5pbmRleE9mKG1hcCkgPT09IC0xICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c01hcHMucHVzaChtYXApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcmV2aW91c01hcHM7XG4gICAgfVxuXG4gICAgaXNJbmxpbmUoKSB7XG4gICAgICAgIGlmICggdHlwZW9mIHRoaXMubWFwT3B0cy5pbmxpbmUgIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5pbmxpbmU7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYW5ub3RhdGlvbiA9IHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uO1xuICAgICAgICBpZiAoIHR5cGVvZiBhbm5vdGF0aW9uICE9PSAndW5kZWZpbmVkJyAmJiBhbm5vdGF0aW9uICE9PSB0cnVlICkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCB0aGlzLnByZXZpb3VzKCkubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKCBpID0+IGkuaW5saW5lICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzU291cmNlc0NvbnRlbnQoKSB7XG4gICAgICAgIGlmICggdHlwZW9mIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCAhPT0gJ3VuZGVmaW5lZCcgKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLnNvdXJjZXNDb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIGlmICggdGhpcy5wcmV2aW91cygpLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzKCkuc29tZSggaSA9PiBpLndpdGhDb250ZW50KCkgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJBbm5vdGF0aW9uKCkge1xuICAgICAgICBpZiAoIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uID09PSBmYWxzZSApIHJldHVybjtcblxuICAgICAgICBsZXQgbm9kZTtcbiAgICAgICAgZm9yICggbGV0IGkgPSB0aGlzLnJvb3Qubm9kZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0gKSB7XG4gICAgICAgICAgICBub2RlID0gdGhpcy5yb290Lm5vZGVzW2ldO1xuICAgICAgICAgICAgaWYgKCBub2RlLnR5cGUgIT09ICdjb21tZW50JyApIGNvbnRpbnVlO1xuICAgICAgICAgICAgaWYgKCBub2RlLnRleHQuaW5kZXhPZignIyBzb3VyY2VNYXBwaW5nVVJMPScpID09PSAwICkge1xuICAgICAgICAgICAgICAgIHRoaXMucm9vdC5yZW1vdmVDaGlsZChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNvdXJjZXNDb250ZW50KCkge1xuICAgICAgICBsZXQgYWxyZWFkeSA9IHsgfTtcbiAgICAgICAgdGhpcy5yb290LndhbGsoIG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKCBub2RlLnNvdXJjZSApIHtcbiAgICAgICAgICAgICAgICBsZXQgZnJvbSA9IG5vZGUuc291cmNlLmlucHV0LmZyb207XG4gICAgICAgICAgICAgICAgaWYgKCBmcm9tICYmICFhbHJlYWR5W2Zyb21dICkge1xuICAgICAgICAgICAgICAgICAgICBhbHJlYWR5W2Zyb21dID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlbGF0aXZlID0gdGhpcy5yZWxhdGl2ZShmcm9tKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuc2V0U291cmNlQ29udGVudChyZWxhdGl2ZSwgbm9kZS5zb3VyY2UuaW5wdXQuY3NzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFwcGx5UHJldk1hcHMoKSB7XG4gICAgICAgIGZvciAoIGxldCBwcmV2IG9mIHRoaXMucHJldmlvdXMoKSApIHtcbiAgICAgICAgICAgIGxldCBmcm9tID0gdGhpcy5yZWxhdGl2ZShwcmV2LmZpbGUpO1xuICAgICAgICAgICAgbGV0IHJvb3QgPSBwcmV2LnJvb3QgfHwgcGF0aC5kaXJuYW1lKHByZXYuZmlsZSk7XG4gICAgICAgICAgICBsZXQgbWFwO1xuXG4gICAgICAgICAgICBpZiAoIHRoaXMubWFwT3B0cy5zb3VyY2VzQ29udGVudCA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgbWFwID0gbmV3IG1vemlsbGEuU291cmNlTWFwQ29uc3VtZXIocHJldi50ZXh0KTtcbiAgICAgICAgICAgICAgICBpZiAoIG1hcC5zb3VyY2VzQ29udGVudCApIHtcbiAgICAgICAgICAgICAgICAgICAgbWFwLnNvdXJjZXNDb250ZW50ID0gbWFwLnNvdXJjZXNDb250ZW50Lm1hcCggKCkgPT4gbnVsbCApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWFwID0gcHJldi5jb25zdW1lcigpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm1hcC5hcHBseVNvdXJjZU1hcChtYXAsIGZyb20sIHRoaXMucmVsYXRpdmUocm9vdCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNBbm5vdGF0aW9uKCkge1xuICAgICAgICBpZiAoIHRoaXMuaXNJbmxpbmUoKSApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gIT09ICd1bmRlZmluZWQnICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uO1xuICAgICAgICB9IGVsc2UgaWYgKCB0aGlzLnByZXZpb3VzKCkubGVuZ3RoICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXMoKS5zb21lKCBpID0+IGkuYW5ub3RhdGlvbiApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0Jhc2U2NChzdHIpIHtcbiAgICAgICAgaWYgKCBCdWZmZXIgKSB7XG4gICAgICAgICAgICBpZiAoIEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb20gKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0cikudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJ1ZmZlcihzdHIpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3cuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoc3RyKSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkQW5ub3RhdGlvbigpIHtcbiAgICAgICAgbGV0IGNvbnRlbnQ7XG5cbiAgICAgICAgaWYgKCB0aGlzLmlzSW5saW5lKCkgKSB7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSAnZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCwnICtcbiAgICAgICAgICAgICAgICB0aGlzLnRvQmFzZTY0KHRoaXMubWFwLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiB0aGlzLm1hcE9wdHMuYW5ub3RhdGlvbiA9PT0gJ3N0cmluZycgKSB7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy5tYXBPcHRzLmFubm90YXRpb247XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLm91dHB1dEZpbGUoKSArICcubWFwJztcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlb2wgICA9ICdcXG4nO1xuICAgICAgICBpZiAoIHRoaXMuY3NzLmluZGV4T2YoJ1xcclxcbicpICE9PSAtMSApIGVvbCA9ICdcXHJcXG4nO1xuXG4gICAgICAgIHRoaXMuY3NzICs9IGVvbCArICcvKiMgc291cmNlTWFwcGluZ1VSTD0nICsgY29udGVudCArICcgKi8nO1xuICAgIH1cblxuICAgIG91dHB1dEZpbGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5vcHRzLnRvICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVsYXRpdmUodGhpcy5vcHRzLnRvKTtcbiAgICAgICAgfSBlbHNlIGlmICggdGhpcy5vcHRzLmZyb20gKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZSh0aGlzLm9wdHMuZnJvbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJ3RvLmNzcyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZW5lcmF0ZU1hcCgpIHtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVN0cmluZygpO1xuICAgICAgICBpZiAoIHRoaXMuaXNTb3VyY2VzQ29udGVudCgpICkgICAgdGhpcy5zZXRTb3VyY2VzQ29udGVudCgpO1xuICAgICAgICBpZiAoIHRoaXMucHJldmlvdXMoKS5sZW5ndGggPiAwICkgdGhpcy5hcHBseVByZXZNYXBzKCk7XG4gICAgICAgIGlmICggdGhpcy5pc0Fubm90YXRpb24oKSApICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oKTtcblxuICAgICAgICBpZiAoIHRoaXMuaXNJbmxpbmUoKSApIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5jc3NdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmNzcywgdGhpcy5tYXBdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVsYXRpdmUoZmlsZSkge1xuICAgICAgICBpZiAoIGZpbGUuaW5kZXhPZignPCcpID09PSAwICkgcmV0dXJuIGZpbGU7XG4gICAgICAgIGlmICggL15cXHcrOlxcL1xcLy8udGVzdChmaWxlKSApIHJldHVybiBmaWxlO1xuXG4gICAgICAgIGxldCBmcm9tID0gdGhpcy5vcHRzLnRvID8gcGF0aC5kaXJuYW1lKHRoaXMub3B0cy50bykgOiAnLic7XG5cbiAgICAgICAgaWYgKCB0eXBlb2YgdGhpcy5tYXBPcHRzLmFubm90YXRpb24gPT09ICdzdHJpbmcnICkge1xuICAgICAgICAgICAgZnJvbSA9IHBhdGguZGlybmFtZSggcGF0aC5yZXNvbHZlKGZyb20sIHRoaXMubWFwT3B0cy5hbm5vdGF0aW9uKSApO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsZSA9IHBhdGgucmVsYXRpdmUoZnJvbSwgZmlsZSk7XG4gICAgICAgIGlmICggcGF0aC5zZXAgPT09ICdcXFxcJyApIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc291cmNlUGF0aChub2RlKSB7XG4gICAgICAgIGlmICggdGhpcy5tYXBPcHRzLmZyb20gKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXBPcHRzLmZyb207XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZWxhdGl2ZShub2RlLnNvdXJjZS5pbnB1dC5mcm9tKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdlbmVyYXRlU3RyaW5nKCkge1xuICAgICAgICB0aGlzLmNzcyA9ICcnO1xuICAgICAgICB0aGlzLm1hcCA9IG5ldyBtb3ppbGxhLlNvdXJjZU1hcEdlbmVyYXRvcih7IGZpbGU6IHRoaXMub3V0cHV0RmlsZSgpIH0pO1xuXG4gICAgICAgIGxldCBsaW5lICAgPSAxO1xuICAgICAgICBsZXQgY29sdW1uID0gMTtcblxuICAgICAgICBsZXQgbGluZXMsIGxhc3Q7XG4gICAgICAgIHRoaXMuc3RyaW5naWZ5KHRoaXMucm9vdCwgKHN0ciwgbm9kZSwgdHlwZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jc3MgKz0gc3RyO1xuXG4gICAgICAgICAgICBpZiAoIG5vZGUgJiYgdHlwZSAhPT0gJ2VuZCcgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCBub2RlLnNvdXJjZSAmJiBub2RlLnNvdXJjZS5zdGFydCApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgIHRoaXMuc291cmNlUGF0aChub2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlZDogeyBsaW5lLCBjb2x1bW46IGNvbHVtbiAtIDEgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsOiAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6ICAgbm9kZS5zb3VyY2Uuc3RhcnQubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLnN0YXJ0LmNvbHVtbiAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgICc8bm8gc291cmNlPicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogIHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsaW5lcyA9IHN0ci5tYXRjaCgvXFxuL2cpO1xuICAgICAgICAgICAgaWYgKCBsaW5lcyApIHtcbiAgICAgICAgICAgICAgICBsaW5lICArPSBsaW5lcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgbGFzdCAgID0gc3RyLmxhc3RJbmRleE9mKCdcXG4nKTtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBzdHIubGVuZ3RoIC0gbGFzdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29sdW1uICs9IHN0ci5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggbm9kZSAmJiB0eXBlICE9PSAnc3RhcnQnICkge1xuICAgICAgICAgICAgICAgIGlmICggbm9kZS5zb3VyY2UgJiYgbm9kZS5zb3VyY2UuZW5kICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTogICAgdGhpcy5zb3VyY2VQYXRoKG5vZGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVkOiB7IGxpbmUsIGNvbHVtbjogY29sdW1uIC0gMSB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWw6ICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZTogICBub2RlLnNvdXJjZS5lbmQubGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IG5vZGUuc291cmNlLmVuZC5jb2x1bW5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U6ICAgICc8bm8gc291cmNlPicsXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbDogIHsgbGluZTogMSwgY29sdW1uOiAwIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHsgbGluZSwgY29sdW1uOiBjb2x1bW4gLSAxIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5jbGVhckFubm90YXRpb24oKTtcblxuICAgICAgICBpZiAoIHRoaXMuaXNNYXAoKSApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlTWFwKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgICAgICB0aGlzLnN0cmluZ2lmeSh0aGlzLnJvb3QsIGkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gW3Jlc3VsdF07XG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _warning = require('./warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Provides the result of the PostCSS transformations.\n *\n * A Result instance is returned by {@link LazyResult#then}\n * or {@link Root#toResult} methods.\n *\n * @example\n * postcss([cssnext]).process(css).then(function (result) {\n * console.log(result.css);\n * });\n *\n * @example\n * var result2 = postcss.parse(css).toResult();\n */\nvar Result = function () {\n\n /**\n * @param {Processor} processor - processor used for this transformation.\n * @param {Root} root - Root node after all transformations.\n * @param {processOptions} opts - options from the {@link Processor#process}\n * or {@link Root#toResult}\n */\n function Result(processor, root, opts) {\n _classCallCheck(this, Result);\n\n /**\n * @member {Processor} - The Processor instance used\n * for this transformation.\n *\n * @example\n * for ( let plugin of result.processor.plugins) {\n * if ( plugin.postcssPlugin === 'postcss-bad' ) {\n * throw 'postcss-good is incompatible with postcss-bad';\n * }\n * });\n */\n this.processor = processor;\n /**\n * @member {Message[]} - Contains messages from plugins\n * (e.g., warnings or custom messages).\n * Each message should have type\n * and plugin properties.\n *\n * @example\n * postcss.plugin('postcss-min-browser', () => {\n * return (root, result) => {\n * var browsers = detectMinBrowsersByCanIUse(root);\n * result.messages.push({\n * type: 'min-browser',\n * plugin: 'postcss-min-browser',\n * browsers: browsers\n * });\n * };\n * });\n */\n this.messages = [];\n /**\n * @member {Root} - Root node after all transformations.\n *\n * @example\n * root.toResult().root == root;\n */\n this.root = root;\n /**\n * @member {processOptions} - Options from the {@link Processor#process}\n * or {@link Root#toResult} call\n * that produced this Result instance.\n *\n * @example\n * root.toResult(opts).opts == opts;\n */\n this.opts = opts;\n /**\n * @member {string} - A CSS string representing of {@link Result#root}.\n *\n * @example\n * postcss.parse('a{}').toResult().css //=> \"a{}\"\n */\n this.css = undefined;\n /**\n * @member {SourceMapGenerator} - An instance of `SourceMapGenerator`\n * class from the `source-map` library,\n * representing changes\n * to the {@link Result#root} instance.\n *\n * @example\n * result.map.toJSON() //=> { version: 3, file: 'a.css', … }\n *\n * @example\n * if ( result.map ) {\n * fs.writeFileSync(result.opts.to + '.map', result.map.toString());\n * }\n */\n this.map = undefined;\n }\n\n /**\n * Returns for @{link Result#css} content.\n *\n * @example\n * result + '' === result.css\n *\n * @return {string} string representing of {@link Result#root}\n */\n\n\n Result.prototype.toString = function toString() {\n return this.css;\n };\n\n /**\n * Creates an instance of {@link Warning} and adds it\n * to {@link Result#messages}.\n *\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n *\n * @return {Warning} created warning\n */\n\n\n Result.prototype.warn = function warn(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin;\n }\n }\n\n var warning = new _warning2.default(text, opts);\n this.messages.push(warning);\n\n return warning;\n };\n\n /**\n * Returns warnings from plugins. Filters {@link Warning} instances\n * from {@link Result#messages}.\n *\n * @example\n * result.warnings().forEach(warn => {\n * console.warn(warn.toString());\n * });\n *\n * @return {Warning[]} warnings from plugins\n */\n\n\n Result.prototype.warnings = function warnings() {\n return this.messages.filter(function (i) {\n return i.type === 'warning';\n });\n };\n\n /**\n * An alias for the {@link Result#css} property.\n * Use it with syntaxes that generate non-CSS output.\n * @type {string}\n *\n * @example\n * result.css === result.content;\n */\n\n\n _createClass(Result, [{\n key: 'content',\n get: function get() {\n return this.css;\n }\n }]);\n\n return Result;\n}();\n\nexports.default = Result;\n\n/**\n * @typedef {object} Message\n * @property {string} type - message type\n * @property {string} plugin - source PostCSS plugin name\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc3VsdC5lczYiXSwibmFtZXMiOlsiUmVzdWx0IiwicHJvY2Vzc29yIiwicm9vdCIsIm9wdHMiLCJtZXNzYWdlcyIsImNzcyIsInVuZGVmaW5lZCIsIm1hcCIsInRvU3RyaW5nIiwid2FybiIsInRleHQiLCJwbHVnaW4iLCJsYXN0UGx1Z2luIiwicG9zdGNzc1BsdWdpbiIsIndhcm5pbmciLCJXYXJuaW5nIiwicHVzaCIsIndhcm5pbmdzIiwiZmlsdGVyIiwiaSIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7Ozs7OztBQUVBOzs7Ozs7Ozs7Ozs7OztJQWNNQSxNOztBQUVGOzs7Ozs7QUFNQSxrQkFBWUMsU0FBWixFQUF1QkMsSUFBdkIsRUFBNkJDLElBQTdCLEVBQW1DO0FBQUE7O0FBQy9COzs7Ozs7Ozs7OztBQVdBLFNBQUtGLFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCQSxTQUFLRyxRQUFMLEdBQWdCLEVBQWhCO0FBQ0E7Ozs7OztBQU1BLFNBQUtGLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7OztBQVFBLFNBQUtDLElBQUwsR0FBWUEsSUFBWjtBQUNBOzs7Ozs7QUFNQSxTQUFLRSxHQUFMLEdBQVdDLFNBQVg7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUFjQSxTQUFLQyxHQUFMLEdBQVdELFNBQVg7QUFDSDs7QUFFRDs7Ozs7Ozs7OzttQkFRQUUsUSx1QkFBVztBQUNQLFdBQU8sS0FBS0gsR0FBWjtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OzttQkFnQkFJLEksaUJBQUtDLEksRUFBa0I7QUFBQSxRQUFaUCxJQUFZLHVFQUFMLEVBQUs7O0FBQ25CLFFBQUssQ0FBQ0EsS0FBS1EsTUFBWCxFQUFvQjtBQUNoQixVQUFLLEtBQUtDLFVBQUwsSUFBbUIsS0FBS0EsVUFBTCxDQUFnQkMsYUFBeEMsRUFBd0Q7QUFDcERWLGFBQUtRLE1BQUwsR0FBYyxLQUFLQyxVQUFMLENBQWdCQyxhQUE5QjtBQUNIO0FBQ0o7O0FBRUQsUUFBSUMsVUFBVSxJQUFJQyxpQkFBSixDQUFZTCxJQUFaLEVBQWtCUCxJQUFsQixDQUFkO0FBQ0EsU0FBS0MsUUFBTCxDQUFjWSxJQUFkLENBQW1CRixPQUFuQjs7QUFFQSxXQUFPQSxPQUFQO0FBQ0gsRzs7QUFFRDs7Ozs7Ozs7Ozs7OzttQkFXQUcsUSx1QkFBVztBQUNQLFdBQU8sS0FBS2IsUUFBTCxDQUFjYyxNQUFkLENBQXNCO0FBQUEsYUFBS0MsRUFBRUMsSUFBRixLQUFXLFNBQWhCO0FBQUEsS0FBdEIsQ0FBUDtBQUNILEc7O0FBRUQ7Ozs7Ozs7Ozs7Ozt3QkFRYztBQUNWLGFBQU8sS0FBS2YsR0FBWjtBQUNIOzs7Ozs7a0JBSVVMLE07O0FBRWYiLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdhcm5pbmcgZnJvbSAnLi93YXJuaW5nJztcblxuLyoqXG4gKiBQcm92aWRlcyB0aGUgcmVzdWx0IG9mIHRoZSBQb3N0Q1NTIHRyYW5zZm9ybWF0aW9ucy5cbiAqXG4gKiBBIFJlc3VsdCBpbnN0YW5jZSBpcyByZXR1cm5lZCBieSB7QGxpbmsgTGF6eVJlc3VsdCN0aGVufVxuICogb3Ige0BsaW5rIFJvb3QjdG9SZXN1bHR9IG1ldGhvZHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIHBvc3Rjc3MoW2Nzc25leHRdKS5wcm9jZXNzKGNzcykudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gKiAgICBjb25zb2xlLmxvZyhyZXN1bHQuY3NzKTtcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiB2YXIgcmVzdWx0MiA9IHBvc3Rjc3MucGFyc2UoY3NzKS50b1Jlc3VsdCgpO1xuICovXG5jbGFzcyBSZXN1bHQge1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtQcm9jZXNzb3J9IHByb2Nlc3NvciAtIHByb2Nlc3NvciB1c2VkIGZvciB0aGlzIHRyYW5zZm9ybWF0aW9uLlxuICAgICAqIEBwYXJhbSB7Um9vdH0gICAgICByb290ICAgICAgLSBSb290IG5vZGUgYWZ0ZXIgYWxsIHRyYW5zZm9ybWF0aW9ucy5cbiAgICAgKiBAcGFyYW0ge3Byb2Nlc3NPcHRpb25zfSBvcHRzIC0gb3B0aW9ucyBmcm9tIHRoZSB7QGxpbmsgUHJvY2Vzc29yI3Byb2Nlc3N9XG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHtAbGluayBSb290I3RvUmVzdWx0fVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb2Nlc3Nvciwgcm9vdCwgb3B0cykge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7UHJvY2Vzc29yfSAtIFRoZSBQcm9jZXNzb3IgaW5zdGFuY2UgdXNlZFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgdHJhbnNmb3JtYXRpb24uXG4gICAgICAgICAqXG4gICAgICAgICAqIEBleGFtcGxlXG4gICAgICAgICAqIGZvciAoIGxldCBwbHVnaW4gb2YgcmVzdWx0LnByb2Nlc3Nvci5wbHVnaW5zKSB7XG4gICAgICAgICAqICAgaWYgKCBwbHVnaW4ucG9zdGNzc1BsdWdpbiA9PT0gJ3Bvc3Rjc3MtYmFkJyApIHtcbiAgICAgICAgICogICAgIHRocm93ICdwb3N0Y3NzLWdvb2QgaXMgaW5jb21wYXRpYmxlIHdpdGggcG9zdGNzcy1iYWQnO1xuICAgICAgICAgKiAgIH1cbiAgICAgICAgICogfSk7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnByb2Nlc3NvciA9IHByb2Nlc3NvcjtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge01lc3NhZ2VbXX0gLSBDb250YWlucyBtZXNzYWdlcyBmcm9tIHBsdWdpbnNcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCB3YXJuaW5ncyBvciBjdXN0b20gbWVzc2FnZXMpLlxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgRWFjaCBtZXNzYWdlIHNob3VsZCBoYXZlIHR5cGVcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgIGFuZCBwbHVnaW4gcHJvcGVydGllcy5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogcG9zdGNzcy5wbHVnaW4oJ3Bvc3Rjc3MtbWluLWJyb3dzZXInLCAoKSA9PiB7XG4gICAgICAgICAqICAgcmV0dXJuIChyb290LCByZXN1bHQpID0+IHtcbiAgICAgICAgICogICAgIHZhciBicm93c2VycyA9IGRldGVjdE1pbkJyb3dzZXJzQnlDYW5JVXNlKHJvb3QpO1xuICAgICAgICAgKiAgICAgcmVzdWx0Lm1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgKiAgICAgICB0eXBlOiAgICAnbWluLWJyb3dzZXInLFxuICAgICAgICAgKiAgICAgICBwbHVnaW46ICAncG9zdGNzcy1taW4tYnJvd3NlcicsXG4gICAgICAgICAqICAgICAgIGJyb3dzZXJzOiBicm93c2Vyc1xuICAgICAgICAgKiAgICAgfSk7XG4gICAgICAgICAqICAgfTtcbiAgICAgICAgICogfSk7XG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLm1lc3NhZ2VzID0gW107XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtSb290fSAtIFJvb3Qgbm9kZSBhZnRlciBhbGwgdHJhbnNmb3JtYXRpb25zLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiByb290LnRvUmVzdWx0KCkucm9vdCA9PSByb290O1xuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5yb290ID0gcm9vdDtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3Byb2Nlc3NPcHRpb25zfSAtIE9wdGlvbnMgZnJvbSB0aGUge0BsaW5rIFByb2Nlc3NvciNwcm9jZXNzfVxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciB7QGxpbmsgUm9vdCN0b1Jlc3VsdH0gY2FsbFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHByb2R1Y2VkIHRoaXMgUmVzdWx0IGluc3RhbmNlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiByb290LnRvUmVzdWx0KG9wdHMpLm9wdHMgPT0gb3B0cztcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMub3B0cyA9IG9wdHM7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gQSBDU1Mgc3RyaW5nIHJlcHJlc2VudGluZyBvZiB7QGxpbmsgUmVzdWx0I3Jvb3R9LlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiBwb3N0Y3NzLnBhcnNlKCdhe30nKS50b1Jlc3VsdCgpLmNzcyAvLz0+IFwiYXt9XCJcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY3NzID0gdW5kZWZpbmVkO1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1lbWJlciB7U291cmNlTWFwR2VuZXJhdG9yfSAtIEFuIGluc3RhbmNlIG9mIGBTb3VyY2VNYXBHZW5lcmF0b3JgXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBmcm9tIHRoZSBgc291cmNlLW1hcGAgbGlicmFyeSxcbiAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudGluZyBjaGFuZ2VzXG4gICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUge0BsaW5rIFJlc3VsdCNyb290fSBpbnN0YW5jZS5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogcmVzdWx0Lm1hcC50b0pTT04oKSAvLz0+IHsgdmVyc2lvbjogMywgZmlsZTogJ2EuY3NzJywg4oCmIH1cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogaWYgKCByZXN1bHQubWFwICkge1xuICAgICAgICAgKiAgIGZzLndyaXRlRmlsZVN5bmMocmVzdWx0Lm9wdHMudG8gKyAnLm1hcCcsIHJlc3VsdC5tYXAudG9TdHJpbmcoKSk7XG4gICAgICAgICAqIH1cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMubWFwID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9yIEB7bGluayBSZXN1bHQjY3NzfSBjb250ZW50LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiByZXN1bHQgKyAnJyA9PT0gcmVzdWx0LmNzc1xuICAgICAqXG4gICAgICogQHJldHVybiB7c3RyaW5nfSBzdHJpbmcgcmVwcmVzZW50aW5nIG9mIHtAbGluayBSZXN1bHQjcm9vdH1cbiAgICAgKi9cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3NzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFdhcm5pbmd9IGFuZCBhZGRzIGl0XG4gICAgICogdG8ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgLSB3YXJuaW5nIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdICAgICAgLSB3YXJuaW5nIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge05vZGV9ICAgb3B0cy5ub2RlICAgLSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIHdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXJuaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgY3JlYXRlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmd9IGNyZWF0ZWQgd2FybmluZ1xuICAgICAqL1xuICAgIHdhcm4odGV4dCwgb3B0cyA9IHsgfSkge1xuICAgICAgICBpZiAoICFvcHRzLnBsdWdpbiApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy5sYXN0UGx1Z2luICYmIHRoaXMubGFzdFBsdWdpbi5wb3N0Y3NzUGx1Z2luICkge1xuICAgICAgICAgICAgICAgIG9wdHMucGx1Z2luID0gdGhpcy5sYXN0UGx1Z2luLnBvc3Rjc3NQbHVnaW47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgd2FybmluZyA9IG5ldyBXYXJuaW5nKHRleHQsIG9wdHMpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VzLnB1c2god2FybmluZyk7XG5cbiAgICAgICAgcmV0dXJuIHdhcm5pbmc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3YXJuaW5ncyBmcm9tIHBsdWdpbnMuIEZpbHRlcnMge0BsaW5rIFdhcm5pbmd9IGluc3RhbmNlc1xuICAgICAqIGZyb20ge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHJlc3VsdC53YXJuaW5ncygpLmZvckVhY2god2FybiA9PiB7XG4gICAgICogICBjb25zb2xlLndhcm4od2Fybi50b1N0cmluZygpKTtcbiAgICAgKiB9KTtcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1dhcm5pbmdbXX0gd2FybmluZ3MgZnJvbSBwbHVnaW5zXG4gICAgICovXG4gICAgd2FybmluZ3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VzLmZpbHRlciggaSA9PiBpLnR5cGUgPT09ICd3YXJuaW5nJyApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFuIGFsaWFzIGZvciB0aGUge0BsaW5rIFJlc3VsdCNjc3N9IHByb3BlcnR5LlxuICAgICAqIFVzZSBpdCB3aXRoIHN5bnRheGVzIHRoYXQgZ2VuZXJhdGUgbm9uLUNTUyBvdXRwdXQuXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcmVzdWx0LmNzcyA9PT0gcmVzdWx0LmNvbnRlbnQ7XG4gICAgICovXG4gICAgZ2V0IGNvbnRlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNzcztcbiAgICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVzdWx0O1xuXG4vKipcbiAqIEB0eXBlZGVmICB7b2JqZWN0fSBNZXNzYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSAgIC0gbWVzc2FnZSB0eXBlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcGx1Z2luIC0gc291cmNlIFBvc3RDU1MgcGx1Z2luIG5hbWVcbiAqL1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Represents a plugin’s warning. It can be created using {@link Node#warn}.\n *\n * @example\n * if ( decl.important ) {\n * decl.warn(result, 'Avoid !important', { word: '!important' });\n * }\n */\nvar Warning = function () {\n\n /**\n * @param {string} text - warning message\n * @param {Object} [opts] - warning options\n * @param {Node} opts.node - CSS node that caused the warning\n * @param {string} opts.word - word in CSS source that caused the warning\n * @param {number} opts.index - index in CSS node string that caused\n * the warning\n * @param {string} opts.plugin - name of the plugin that created\n * this warning. {@link Result#warn} fills\n * this property automatically.\n */\n function Warning(text) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Warning);\n\n /**\n * @member {string} - Type to filter warnings from\n * {@link Result#messages}. Always equal\n * to `\"warning\"`.\n *\n * @example\n * const nonWarning = result.messages.filter(i => i.type !== 'warning')\n */\n this.type = 'warning';\n /**\n * @member {string} - The warning message.\n *\n * @example\n * warning.text //=> 'Try to avoid !important'\n */\n this.text = text;\n\n if (opts.node && opts.node.source) {\n var pos = opts.node.positionBy(opts);\n /**\n * @member {number} - Line in the input file\n * with this warning’s source\n *\n * @example\n * warning.line //=> 5\n */\n this.line = pos.line;\n /**\n * @member {number} - Column in the input file\n * with this warning’s source.\n *\n * @example\n * warning.column //=> 6\n */\n this.column = pos.column;\n }\n\n for (var opt in opts) {\n this[opt] = opts[opt];\n }\n }\n\n /**\n * Returns a warning position and message.\n *\n * @example\n * warning.toString() //=> 'postcss-lint:a.css:10:14: Avoid !important'\n *\n * @return {string} warning position and message\n */\n\n\n Warning.prototype.toString = function toString() {\n if (this.node) {\n return this.node.error(this.text, {\n plugin: this.plugin,\n index: this.index,\n word: this.word\n }).message;\n } else if (this.plugin) {\n return this.plugin + ': ' + this.text;\n } else {\n return this.text;\n }\n };\n\n /**\n * @memberof Warning#\n * @member {string} plugin - The name of the plugin that created\n * it will fill this property automatically.\n * this warning. When you call {@link Node#warn}\n *\n * @example\n * warning.plugin //=> 'postcss-important'\n */\n\n /**\n * @memberof Warning#\n * @member {Node} node - Contains the CSS node that caused the warning.\n *\n * @example\n * warning.node.toString() //=> 'color: white !important'\n */\n\n return Warning;\n}();\n\nexports.default = Warning;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndhcm5pbmcuZXM2Il0sIm5hbWVzIjpbIldhcm5pbmciLCJ0ZXh0Iiwib3B0cyIsInR5cGUiLCJub2RlIiwic291cmNlIiwicG9zIiwicG9zaXRpb25CeSIsImxpbmUiLCJjb2x1bW4iLCJvcHQiLCJ0b1N0cmluZyIsImVycm9yIiwicGx1Z2luIiwiaW5kZXgiLCJ3b3JkIiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7Ozs7Ozs7O0lBUU1BLE87O0FBRUY7Ozs7Ozs7Ozs7O0FBV0EsbUJBQVlDLElBQVosRUFBOEI7QUFBQSxRQUFaQyxJQUFZLHVFQUFMLEVBQUs7O0FBQUE7O0FBQzFCOzs7Ozs7OztBQVFBLFNBQUtDLElBQUwsR0FBWSxTQUFaO0FBQ0E7Ozs7OztBQU1BLFNBQUtGLElBQUwsR0FBWUEsSUFBWjs7QUFFQSxRQUFLQyxLQUFLRSxJQUFMLElBQWFGLEtBQUtFLElBQUwsQ0FBVUMsTUFBNUIsRUFBcUM7QUFDakMsVUFBSUMsTUFBVUosS0FBS0UsSUFBTCxDQUFVRyxVQUFWLENBQXFCTCxJQUFyQixDQUFkO0FBQ0E7Ozs7Ozs7QUFPQSxXQUFLTSxJQUFMLEdBQWNGLElBQUlFLElBQWxCO0FBQ0E7Ozs7Ozs7QUFPQSxXQUFLQyxNQUFMLEdBQWNILElBQUlHLE1BQWxCO0FBQ0g7O0FBRUQsU0FBTSxJQUFJQyxHQUFWLElBQWlCUixJQUFqQjtBQUF3QixXQUFLUSxHQUFMLElBQVlSLEtBQUtRLEdBQUwsQ0FBWjtBQUF4QjtBQUNIOztBQUVEOzs7Ozs7Ozs7O29CQVFBQyxRLHVCQUFXO0FBQ1AsUUFBSyxLQUFLUCxJQUFWLEVBQWlCO0FBQ2IsYUFBTyxLQUFLQSxJQUFMLENBQVVRLEtBQVYsQ0FBZ0IsS0FBS1gsSUFBckIsRUFBMkI7QUFDOUJZLGdCQUFRLEtBQUtBLE1BRGlCO0FBRTlCQyxlQUFRLEtBQUtBLEtBRmlCO0FBRzlCQyxjQUFRLEtBQUtBO0FBSGlCLE9BQTNCLEVBSUpDLE9BSkg7QUFLSCxLQU5ELE1BTU8sSUFBSyxLQUFLSCxNQUFWLEVBQW1CO0FBQ3RCLGFBQU8sS0FBS0EsTUFBTCxHQUFjLElBQWQsR0FBcUIsS0FBS1osSUFBakM7QUFDSCxLQUZNLE1BRUE7QUFDSCxhQUFPLEtBQUtBLElBQVo7QUFDSDtBQUNKLEc7O0FBRUQ7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7a0JBVVdELE8iLCJmaWxlIjoid2FybmluZy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVwcmVzZW50cyBhIHBsdWdpbuKAmXMgd2FybmluZy4gSXQgY2FuIGJlIGNyZWF0ZWQgdXNpbmcge0BsaW5rIE5vZGUjd2Fybn0uXG4gKlxuICogQGV4YW1wbGVcbiAqIGlmICggZGVjbC5pbXBvcnRhbnQgKSB7XG4gKiAgICAgZGVjbC53YXJuKHJlc3VsdCwgJ0F2b2lkICFpbXBvcnRhbnQnLCB7IHdvcmQ6ICchaW1wb3J0YW50JyB9KTtcbiAqIH1cbiAqL1xuY2xhc3MgV2FybmluZyB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICAgLSB3YXJuaW5nIG1lc3NhZ2VcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gW29wdHNdICAgICAgLSB3YXJuaW5nIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge05vZGV9ICAgb3B0cy5ub2RlICAgLSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRzLndvcmQgICAtIHdvcmQgaW4gQ1NTIHNvdXJjZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZ1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBvcHRzLmluZGV4ICAtIGluZGV4IGluIENTUyBub2RlIHN0cmluZyB0aGF0IGNhdXNlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB3YXJuaW5nXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdHMucGx1Z2luIC0gbmFtZSBvZiB0aGUgcGx1Z2luIHRoYXQgY3JlYXRlZFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgd2FybmluZy4ge0BsaW5rIFJlc3VsdCN3YXJufSBmaWxsc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgcHJvcGVydHkgYXV0b21hdGljYWxseS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcih0ZXh0LCBvcHRzID0geyB9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IC0gVHlwZSB0byBmaWx0ZXIgd2FybmluZ3MgZnJvbVxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAge0BsaW5rIFJlc3VsdCNtZXNzYWdlc30uIEFsd2F5cyBlcXVhbFxuICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgdG8gYFwid2FybmluZ1wiYC5cbiAgICAgICAgICpcbiAgICAgICAgICogQGV4YW1wbGVcbiAgICAgICAgICogY29uc3Qgbm9uV2FybmluZyA9IHJlc3VsdC5tZXNzYWdlcy5maWx0ZXIoaSA9PiBpLnR5cGUgIT09ICd3YXJuaW5nJylcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudHlwZSA9ICd3YXJuaW5nJztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZW1iZXIge3N0cmluZ30gLSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgKiB3YXJuaW5nLnRleHQgLy89PiAnVHJ5IHRvIGF2b2lkICFpbXBvcnRhbnQnXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLnRleHQgPSB0ZXh0O1xuXG4gICAgICAgIGlmICggb3B0cy5ub2RlICYmIG9wdHMubm9kZS5zb3VyY2UgKSB7XG4gICAgICAgICAgICBsZXQgcG9zICAgICA9IG9wdHMubm9kZS5wb3NpdGlvbkJ5KG9wdHMpO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gTGluZSBpbiB0aGUgaW5wdXQgZmlsZVxuICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyB3YXJuaW5n4oCZcyBzb3VyY2VcbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgICAgICogd2FybmluZy5saW5lIC8vPT4gNVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmxpbmUgICA9IHBvcy5saW5lO1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAbWVtYmVyIHtudW1iZXJ9IC0gQ29sdW1uIGluIHRoZSBpbnB1dCBmaWxlXG4gICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgd2l0aCB0aGlzIHdhcm5pbmfigJlzIHNvdXJjZS5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBAZXhhbXBsZVxuICAgICAgICAgICAgICogd2FybmluZy5jb2x1bW4gLy89PiA2XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuY29sdW1uID0gcG9zLmNvbHVtbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoIGxldCBvcHQgaW4gb3B0cyApIHRoaXNbb3B0XSA9IG9wdHNbb3B0XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy50b1N0cmluZygpIC8vPT4gJ3Bvc3Rjc3MtbGludDphLmNzczoxMDoxNDogQXZvaWQgIWltcG9ydGFudCdcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gd2FybmluZyBwb3NpdGlvbiBhbmQgbWVzc2FnZVxuICAgICAqL1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgICBpZiAoIHRoaXMubm9kZSApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5vZGUuZXJyb3IodGhpcy50ZXh0LCB7XG4gICAgICAgICAgICAgICAgcGx1Z2luOiB0aGlzLnBsdWdpbixcbiAgICAgICAgICAgICAgICBpbmRleDogIHRoaXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgd29yZDogICB0aGlzLndvcmRcbiAgICAgICAgICAgIH0pLm1lc3NhZ2U7XG4gICAgICAgIH0gZWxzZSBpZiAoIHRoaXMucGx1Z2luICkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luICsgJzogJyArIHRoaXMudGV4dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAbWVtYmVyb2YgV2FybmluZyNcbiAgICAgKiBAbWVtYmVyIHtzdHJpbmd9IHBsdWdpbiAtIFRoZSBuYW1lIG9mIHRoZSBwbHVnaW4gdGhhdCBjcmVhdGVkXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBpdCB3aWxsIGZpbGwgdGhpcyBwcm9wZXJ0eSBhdXRvbWF0aWNhbGx5LlxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB3YXJuaW5nLiBXaGVuIHlvdSBjYWxsIHtAbGluayBOb2RlI3dhcm59XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHdhcm5pbmcucGx1Z2luIC8vPT4gJ3Bvc3Rjc3MtaW1wb3J0YW50J1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG1lbWJlcm9mIFdhcm5pbmcjXG4gICAgICogQG1lbWJlciB7Tm9kZX0gbm9kZSAtIENvbnRhaW5zIHRoZSBDU1Mgbm9kZSB0aGF0IGNhdXNlZCB0aGUgd2FybmluZy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogd2FybmluZy5ub2RlLnRvU3RyaW5nKCkgLy89PiAnY29sb3I6IHdoaXRlICFpbXBvcnRhbnQnXG4gICAgICovXG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgV2FybmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _declaration = require('./declaration');\n\nvar _declaration2 = _interopRequireDefault(_declaration);\n\nvar _tokenize = require('./tokenize');\n\nvar _tokenize2 = _interopRequireDefault(_tokenize);\n\nvar _comment = require('./comment');\n\nvar _comment2 = _interopRequireDefault(_comment);\n\nvar _atRule = require('./at-rule');\n\nvar _atRule2 = _interopRequireDefault(_atRule);\n\nvar _root = require('./root');\n\nvar _root2 = _interopRequireDefault(_root);\n\nvar _rule = require('./rule');\n\nvar _rule2 = _interopRequireDefault(_rule);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Parser = function () {\n function Parser(input) {\n _classCallCheck(this, Parser);\n\n this.input = input;\n\n this.root = new _root2.default();\n this.current = this.root;\n this.spaces = '';\n this.semicolon = false;\n\n this.createTokenizer();\n this.root.source = { input: input, start: { line: 1, column: 1 } };\n }\n\n Parser.prototype.createTokenizer = function createTokenizer() {\n this.tokenizer = (0, _tokenize2.default)(this.input);\n };\n\n Parser.prototype.parse = function parse() {\n var token = void 0;\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n switch (token[0]) {\n\n case 'space':\n this.spaces += token[1];\n break;\n\n case ';':\n this.freeSemicolon(token);\n break;\n\n case '}':\n this.end(token);\n break;\n\n case 'comment':\n this.comment(token);\n break;\n\n case 'at-word':\n this.atrule(token);\n break;\n\n case '{':\n this.emptyRule(token);\n break;\n\n default:\n this.other(token);\n break;\n }\n }\n this.endFile();\n };\n\n Parser.prototype.comment = function comment(token) {\n var node = new _comment2.default();\n this.init(node, token[2], token[3]);\n node.source.end = { line: token[4], column: token[5] };\n\n var text = token[1].slice(2, -2);\n if (/^\\s*$/.test(text)) {\n node.text = '';\n node.raws.left = text;\n node.raws.right = '';\n } else {\n var match = text.match(/^(\\s*)([^]*[^\\s])(\\s*)$/);\n node.text = match[2];\n node.raws.left = match[1];\n node.raws.right = match[3];\n }\n };\n\n Parser.prototype.emptyRule = function emptyRule(token) {\n var node = new _rule2.default();\n this.init(node, token[2], token[3]);\n node.selector = '';\n node.raws.between = '';\n this.current = node;\n };\n\n Parser.prototype.other = function other(start) {\n var end = false;\n var type = null;\n var colon = false;\n var bracket = null;\n var brackets = [];\n\n var tokens = [];\n var token = start;\n while (token) {\n type = token[0];\n tokens.push(token);\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token;\n brackets.push(type === '(' ? ')' : ']');\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens);\n return;\n } else {\n break;\n }\n } else if (type === '{') {\n this.rule(tokens);\n return;\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop());\n end = true;\n break;\n } else if (type === ':') {\n colon = true;\n }\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop();\n if (brackets.length === 0) bracket = null;\n }\n\n token = this.tokenizer.nextToken();\n }\n\n if (this.tokenizer.endOfFile()) end = true;\n if (brackets.length > 0) this.unclosedBracket(bracket);\n\n if (end && colon) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0];\n if (token !== 'space' && token !== 'comment') break;\n this.tokenizer.back(tokens.pop());\n }\n this.decl(tokens);\n return;\n } else {\n this.unknownWord(tokens);\n }\n };\n\n Parser.prototype.rule = function rule(tokens) {\n tokens.pop();\n\n var node = new _rule2.default();\n this.init(node, tokens[0][2], tokens[0][3]);\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens);\n this.raw(node, 'selector', tokens);\n this.current = node;\n };\n\n Parser.prototype.decl = function decl(tokens) {\n var node = new _declaration2.default();\n this.init(node);\n\n var last = tokens[tokens.length - 1];\n if (last[0] === ';') {\n this.semicolon = true;\n tokens.pop();\n }\n if (last[4]) {\n node.source.end = { line: last[4], column: last[5] };\n } else {\n node.source.end = { line: last[2], column: last[3] };\n }\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens);\n node.raws.before += tokens.shift()[1];\n }\n node.source.start = { line: tokens[0][2], column: tokens[0][3] };\n\n node.prop = '';\n while (tokens.length) {\n var type = tokens[0][0];\n if (type === ':' || type === 'space' || type === 'comment') {\n break;\n }\n node.prop += tokens.shift()[1];\n }\n\n node.raws.between = '';\n\n var token = void 0;\n while (tokens.length) {\n token = tokens.shift();\n\n if (token[0] === ':') {\n node.raws.between += token[1];\n break;\n } else {\n node.raws.between += token[1];\n }\n }\n\n if (node.prop[0] === '_' || node.prop[0] === '*') {\n node.raws.before += node.prop[0];\n node.prop = node.prop.slice(1);\n }\n node.raws.between += this.spacesAndCommentsFromStart(tokens);\n this.precheckMissedSemicolon(tokens);\n\n for (var i = tokens.length - 1; i > 0; i--) {\n token = tokens[i];\n if (token[1].toLowerCase() === '!important') {\n node.important = true;\n var string = this.stringFrom(tokens, i);\n string = this.spacesFromEnd(tokens) + string;\n if (string !== ' !important') node.raws.important = string;\n break;\n } else if (token[1].toLowerCase() === 'important') {\n var cache = tokens.slice(0);\n var str = '';\n for (var j = i; j > 0; j--) {\n var _type = cache[j][0];\n if (str.trim().indexOf('!') === 0 && _type !== 'space') {\n break;\n }\n str = cache.pop()[1] + str;\n }\n if (str.trim().indexOf('!') === 0) {\n node.important = true;\n node.raws.important = str;\n tokens = cache;\n }\n }\n\n if (token[0] !== 'space' && token[0] !== 'comment') {\n break;\n }\n }\n\n this.raw(node, 'value', tokens);\n\n if (node.value.indexOf(':') !== -1) this.checkMissedSemicolon(tokens);\n };\n\n Parser.prototype.atrule = function atrule(token) {\n var node = new _atRule2.default();\n node.name = token[1].slice(1);\n if (node.name === '') {\n this.unnamedAtrule(node, token);\n }\n this.init(node, token[2], token[3]);\n\n var prev = void 0;\n var shift = void 0;\n var last = false;\n var open = false;\n var params = [];\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken();\n\n if (token[0] === ';') {\n node.source.end = { line: token[2], column: token[3] };\n this.semicolon = true;\n break;\n } else if (token[0] === '{') {\n open = true;\n break;\n } else if (token[0] === '}') {\n if (params.length > 0) {\n shift = params.length - 1;\n prev = params[shift];\n while (prev && prev[0] === 'space') {\n prev = params[--shift];\n }\n if (prev) {\n node.source.end = { line: prev[4], column: prev[5] };\n }\n }\n this.end(token);\n break;\n } else {\n params.push(token);\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true;\n break;\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params);\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params);\n this.raw(node, 'params', params);\n if (last) {\n token = params[params.length - 1];\n node.source.end = { line: token[4], column: token[5] };\n this.spaces = node.raws.between;\n node.raws.between = '';\n }\n } else {\n node.raws.afterName = '';\n node.params = '';\n }\n\n if (open) {\n node.nodes = [];\n this.current = node;\n }\n };\n\n Parser.prototype.end = function end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.semicolon = false;\n\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n this.spaces = '';\n\n if (this.current.parent) {\n this.current.source.end = { line: token[2], column: token[3] };\n this.current = this.current.parent;\n } else {\n this.unexpectedClose(token);\n }\n };\n\n Parser.prototype.endFile = function endFile() {\n if (this.current.parent) this.unclosedBlock();\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon;\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces;\n };\n\n Parser.prototype.freeSemicolon = function freeSemicolon(token) {\n this.spaces += token[1];\n if (this.current.nodes) {\n var prev = this.current.nodes[this.current.nodes.length - 1];\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces;\n this.spaces = '';\n }\n }\n };\n\n // Helpers\n\n Parser.prototype.init = function init(node, line, column) {\n this.current.push(node);\n\n node.source = { start: { line: line, column: column }, input: this.input };\n node.raws.before = this.spaces;\n this.spaces = '';\n if (node.type !== 'comment') this.semicolon = false;\n };\n\n Parser.prototype.raw = function raw(node, prop, tokens) {\n var token = void 0,\n type = void 0;\n var length = tokens.length;\n var value = '';\n var clean = true;\n var next = void 0,\n prev = void 0;\n var pattern = /^([.|#])?([\\w])+/i;\n\n for (var i = 0; i < length; i += 1) {\n token = tokens[i];\n type = token[0];\n\n if (type === 'comment' && node.type === 'rule') {\n prev = tokens[i - 1];\n next = tokens[i + 1];\n\n if (prev[0] !== 'space' && next[0] !== 'space' && pattern.test(prev[1]) && pattern.test(next[1])) {\n value += token[1];\n } else {\n clean = false;\n }\n\n continue;\n }\n\n if (type === 'comment' || type === 'space' && i === length - 1) {\n clean = false;\n } else {\n value += token[1];\n }\n }\n if (!clean) {\n var raw = tokens.reduce(function (all, i) {\n return all + i[1];\n }, '');\n node.raws[prop] = { value: value, raw: raw };\n }\n node[prop] = value;\n };\n\n Parser.prototype.spacesAndCommentsFromEnd = function spacesAndCommentsFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space' && lastTokenType !== 'comment') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.spacesAndCommentsFromStart = function spacesAndCommentsFromStart(tokens) {\n var next = void 0;\n var spaces = '';\n while (tokens.length) {\n next = tokens[0][0];\n if (next !== 'space' && next !== 'comment') break;\n spaces += tokens.shift()[1];\n }\n return spaces;\n };\n\n Parser.prototype.spacesFromEnd = function spacesFromEnd(tokens) {\n var lastTokenType = void 0;\n var spaces = '';\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0];\n if (lastTokenType !== 'space') break;\n spaces = tokens.pop()[1] + spaces;\n }\n return spaces;\n };\n\n Parser.prototype.stringFrom = function stringFrom(tokens, from) {\n var result = '';\n for (var i = from; i < tokens.length; i++) {\n result += tokens[i][1];\n }\n tokens.splice(from, tokens.length - from);\n return result;\n };\n\n Parser.prototype.colon = function colon(tokens) {\n var brackets = 0;\n var token = void 0,\n type = void 0,\n prev = void 0;\n for (var i = 0; i < tokens.length; i++) {\n token = tokens[i];\n type = token[0];\n\n if (type === '(') {\n brackets += 1;\n } else if (type === ')') {\n brackets -= 1;\n } else if (brackets === 0 && type === ':') {\n if (!prev) {\n this.doubleColon(token);\n } else if (prev[0] === 'word' && prev[1] === 'progid') {\n continue;\n } else {\n return i;\n }\n }\n\n prev = token;\n }\n return false;\n };\n\n // Errors\n\n Parser.prototype.unclosedBracket = function unclosedBracket(bracket) {\n throw this.input.error('Unclosed bracket', bracket[2], bracket[3]);\n };\n\n Parser.prototype.unknownWord = function unknownWord(tokens) {\n throw this.input.error('Unknown word', tokens[0][2], tokens[0][3]);\n };\n\n Parser.prototype.unexpectedClose = function unexpectedClose(token) {\n throw this.input.error('Unexpected }', token[2], token[3]);\n };\n\n Parser.prototype.unclosedBlock = function unclosedBlock() {\n var pos = this.current.source.start;\n throw this.input.error('Unclosed block', pos.line, pos.column);\n };\n\n Parser.prototype.doubleColon = function doubleColon(token) {\n throw this.input.error('Double colon', token[2], token[3]);\n };\n\n Parser.prototype.unnamedAtrule = function unnamedAtrule(node, token) {\n throw this.input.error('At-rule without name', token[2], token[3]);\n };\n\n Parser.prototype.precheckMissedSemicolon = function precheckMissedSemicolon(tokens) {\n // Hook for Safe Parser\n tokens;\n };\n\n Parser.prototype.checkMissedSemicolon = function checkMissedSemicolon(tokens) {\n var colon = this.colon(tokens);\n if (colon === false) return;\n\n var founded = 0;\n var token = void 0;\n for (var j = colon - 1; j >= 0; j--) {\n token = tokens[j];\n if (token[0] !== 'space') {\n founded += 1;\n if (founded === 2) break;\n }\n }\n throw this.input.error('Missed semicolon', token[2], token[3]);\n };\n\n return Parser;\n}();\n\nexports.default = Parser;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnNlci5lczYiXSwibmFtZXMiOlsiUGFyc2VyIiwiaW5wdXQiLCJyb290IiwiUm9vdCIsImN1cnJlbnQiLCJzcGFjZXMiLCJzZW1pY29sb24iLCJjcmVhdGVUb2tlbml6ZXIiLCJzb3VyY2UiLCJzdGFydCIsImxpbmUiLCJjb2x1bW4iLCJ0b2tlbml6ZXIiLCJwYXJzZSIsInRva2VuIiwiZW5kT2ZGaWxlIiwibmV4dFRva2VuIiwiZnJlZVNlbWljb2xvbiIsImVuZCIsImNvbW1lbnQiLCJhdHJ1bGUiLCJlbXB0eVJ1bGUiLCJvdGhlciIsImVuZEZpbGUiLCJub2RlIiwiQ29tbWVudCIsImluaXQiLCJ0ZXh0Iiwic2xpY2UiLCJ0ZXN0IiwicmF3cyIsImxlZnQiLCJyaWdodCIsIm1hdGNoIiwiUnVsZSIsInNlbGVjdG9yIiwiYmV0d2VlbiIsInR5cGUiLCJjb2xvbiIsImJyYWNrZXQiLCJicmFja2V0cyIsInRva2VucyIsInB1c2giLCJsZW5ndGgiLCJkZWNsIiwicnVsZSIsImJhY2siLCJwb3AiLCJ1bmNsb3NlZEJyYWNrZXQiLCJ1bmtub3duV29yZCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbUVuZCIsInJhdyIsIkRlY2xhcmF0aW9uIiwibGFzdCIsImJlZm9yZSIsInNoaWZ0IiwicHJvcCIsInNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0IiwicHJlY2hlY2tNaXNzZWRTZW1pY29sb24iLCJpIiwidG9Mb3dlckNhc2UiLCJpbXBvcnRhbnQiLCJzdHJpbmciLCJzdHJpbmdGcm9tIiwic3BhY2VzRnJvbUVuZCIsImNhY2hlIiwic3RyIiwiaiIsInRyaW0iLCJpbmRleE9mIiwidmFsdWUiLCJjaGVja01pc3NlZFNlbWljb2xvbiIsIkF0UnVsZSIsIm5hbWUiLCJ1bm5hbWVkQXRydWxlIiwicHJldiIsIm9wZW4iLCJwYXJhbXMiLCJhZnRlck5hbWUiLCJub2RlcyIsImFmdGVyIiwicGFyZW50IiwidW5leHBlY3RlZENsb3NlIiwidW5jbG9zZWRCbG9jayIsIm93blNlbWljb2xvbiIsImNsZWFuIiwibmV4dCIsInBhdHRlcm4iLCJyZWR1Y2UiLCJhbGwiLCJsYXN0VG9rZW5UeXBlIiwiZnJvbSIsInJlc3VsdCIsInNwbGljZSIsImRvdWJsZUNvbG9uIiwiZXJyb3IiLCJwb3MiLCJmb3VuZGVkIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztJQUVxQkEsTTtBQUVqQixvQkFBWUMsS0FBWixFQUFtQjtBQUFBOztBQUNmLGFBQUtBLEtBQUwsR0FBYUEsS0FBYjs7QUFFQSxhQUFLQyxJQUFMLEdBQWlCLElBQUlDLGNBQUosRUFBakI7QUFDQSxhQUFLQyxPQUFMLEdBQWlCLEtBQUtGLElBQXRCO0FBQ0EsYUFBS0csTUFBTCxHQUFpQixFQUFqQjtBQUNBLGFBQUtDLFNBQUwsR0FBaUIsS0FBakI7O0FBRUEsYUFBS0MsZUFBTDtBQUNBLGFBQUtMLElBQUwsQ0FBVU0sTUFBVixHQUFtQixFQUFFUCxZQUFGLEVBQVNRLE9BQU8sRUFBRUMsTUFBTSxDQUFSLEVBQVdDLFFBQVEsQ0FBbkIsRUFBaEIsRUFBbkI7QUFDSDs7cUJBRURKLGUsOEJBQWtCO0FBQ2QsYUFBS0ssU0FBTCxHQUFpQix3QkFBVSxLQUFLWCxLQUFmLENBQWpCO0FBQ0gsSzs7cUJBRURZLEssb0JBQVE7QUFDSixZQUFJQyxjQUFKO0FBQ0EsZUFBUSxDQUFDLEtBQUtGLFNBQUwsQ0FBZUcsU0FBZixFQUFULEVBQXNDO0FBQ2xDRCxvQkFBUSxLQUFLRixTQUFMLENBQWVJLFNBQWYsRUFBUjs7QUFFQSxvQkFBU0YsTUFBTSxDQUFOLENBQVQ7O0FBRUEscUJBQUssT0FBTDtBQUNJLHlCQUFLVCxNQUFMLElBQWVTLE1BQU0sQ0FBTixDQUFmO0FBQ0E7O0FBRUoscUJBQUssR0FBTDtBQUNJLHlCQUFLRyxhQUFMLENBQW1CSCxLQUFuQjtBQUNBOztBQUVKLHFCQUFLLEdBQUw7QUFDSSx5QkFBS0ksR0FBTCxDQUFTSixLQUFUO0FBQ0E7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QUFqQixFQUFxQ2pGLE1BQU0sQ0FBTixDQUFyQyxFQUErQ0EsTUFBTSxDQUFOLENBQS9DLENBQU47QUFDSCxLOzs7OztrQkFyZ0JnQmQsTSIsImZpbGUiOiJwYXJzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVjbGFyYXRpb24gZnJvbSAnLi9kZWNsYXJhdGlvbic7XG5pbXBvcnQgdG9rZW5pemVyICAgZnJvbSAnLi90b2tlbml6ZSc7XG5pbXBvcnQgQ29tbWVudCAgICAgZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCBBdFJ1bGUgICAgICBmcm9tICcuL2F0LXJ1bGUnO1xuaW1wb3J0IFJvb3QgICAgICAgIGZyb20gJy4vcm9vdCc7XG5pbXBvcnQgUnVsZSAgICAgICAgZnJvbSAnLi9ydWxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFyc2VyIHtcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0KSB7XG4gICAgICAgIHRoaXMuaW5wdXQgPSBpbnB1dDtcblxuICAgICAgICB0aGlzLnJvb3QgICAgICA9IG5ldyBSb290KCk7XG4gICAgICAgIHRoaXMuY3VycmVudCAgID0gdGhpcy5yb290O1xuICAgICAgICB0aGlzLnNwYWNlcyAgICA9ICcnO1xuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlVG9rZW5pemVyKCk7XG4gICAgICAgIHRoaXMucm9vdC5zb3VyY2UgPSB7IGlucHV0LCBzdGFydDogeyBsaW5lOiAxLCBjb2x1bW46IDEgfSB9O1xuICAgIH1cblxuICAgIGNyZWF0ZVRva2VuaXplcigpIHtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXIodGhpcy5pbnB1dCk7XG4gICAgfVxuXG4gICAgcGFyc2UoKSB7XG4gICAgICAgIGxldCB0b2tlbjtcbiAgICAgICAgd2hpbGUgKCAhdGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRoaXMudG9rZW5pemVyLm5leHRUb2tlbigpO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKCB0b2tlblswXSApIHtcblxuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VzICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICc7JzpcbiAgICAgICAgICAgICAgICB0aGlzLmZyZWVTZW1pY29sb24odG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuY29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2F0LXdvcmQnOlxuICAgICAgICAgICAgICAgIHRoaXMuYXRydWxlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAneyc6XG4gICAgICAgICAgICAgICAgdGhpcy5lbXB0eVJ1bGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMub3RoZXIodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kRmlsZSgpO1xuICAgIH1cblxuICAgIGNvbW1lbnQodG9rZW4pIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgQ29tbWVudCgpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlbls0XSwgY29sdW1uOiB0b2tlbls1XSB9O1xuXG4gICAgICAgIGxldCB0ZXh0ID0gdG9rZW5bMV0uc2xpY2UoMiwgLTIpO1xuICAgICAgICBpZiAoIC9eXFxzKiQvLnRlc3QodGV4dCkgKSB7XG4gICAgICAgICAgICBub2RlLnRleHQgICAgICAgPSAnJztcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ICA9IHRleHQ7XG4gICAgICAgICAgICBub2RlLnJhd3MucmlnaHQgPSAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxzKikoW15dKlteXFxzXSkoXFxzKikkLyk7XG4gICAgICAgICAgICBub2RlLnRleHQgICAgICAgPSBtYXRjaFsyXTtcbiAgICAgICAgICAgIG5vZGUucmF3cy5sZWZ0ICA9IG1hdGNoWzFdO1xuICAgICAgICAgICAgbm9kZS5yYXdzLnJpZ2h0ID0gbWF0Y2hbM107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbXB0eVJ1bGUodG9rZW4pIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgUnVsZSgpO1xuICAgICAgICB0aGlzLmluaXQobm9kZSwgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICAgICAgbm9kZS5zZWxlY3RvciA9ICcnO1xuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBub2RlO1xuICAgIH1cblxuICAgIG90aGVyKHN0YXJ0KSB7XG4gICAgICAgIGxldCBlbmQgICAgICA9IGZhbHNlO1xuICAgICAgICBsZXQgdHlwZSAgICAgPSBudWxsO1xuICAgICAgICBsZXQgY29sb24gICAgPSBmYWxzZTtcbiAgICAgICAgbGV0IGJyYWNrZXQgID0gbnVsbDtcbiAgICAgICAgbGV0IGJyYWNrZXRzID0gW107XG5cbiAgICAgICAgbGV0IHRva2VucyA9IFtdO1xuICAgICAgICBsZXQgdG9rZW4gPSBzdGFydDtcbiAgICAgICAgd2hpbGUgKCB0b2tlbiApIHtcbiAgICAgICAgICAgIHR5cGUgPSB0b2tlblswXTtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHRva2VuKTtcblxuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnKCcgfHwgdHlwZSA9PT0gJ1snICkge1xuICAgICAgICAgICAgICAgIGlmICggIWJyYWNrZXQgKSBicmFja2V0ID0gdG9rZW47XG4gICAgICAgICAgICAgICAgYnJhY2tldHMucHVzaCh0eXBlID09PSAnKCcgPyAnKScgOiAnXScpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBicmFja2V0cy5sZW5ndGggPT09IDAgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnOycgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICggY29sb24gKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2wodG9rZW5zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAneycgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucnVsZSh0b2tlbnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnfScgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKTtcbiAgICAgICAgICAgICAgICAgICAgZW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09IGJyYWNrZXRzW2JyYWNrZXRzLmxlbmd0aCAtIDFdICkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIGlmICggYnJhY2tldHMubGVuZ3RoID09PSAwICkgYnJhY2tldCA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMudG9rZW5pemVyLmVuZE9mRmlsZSgpICkgZW5kID0gdHJ1ZTtcbiAgICAgICAgaWYgKCBicmFja2V0cy5sZW5ndGggPiAwICkgdGhpcy51bmNsb3NlZEJyYWNrZXQoYnJhY2tldCk7XG5cbiAgICAgICAgaWYgKCBlbmQgJiYgY29sb24gKSB7XG4gICAgICAgICAgICB3aGlsZSAoIHRva2Vucy5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgICAgIGlmICggdG9rZW4gIT09ICdzcGFjZScgJiYgdG9rZW4gIT09ICdjb21tZW50JyApIGJyZWFrO1xuICAgICAgICAgICAgICAgIHRoaXMudG9rZW5pemVyLmJhY2sodG9rZW5zLnBvcCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGVjbCh0b2tlbnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51bmtub3duV29yZCh0b2tlbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcnVsZSh0b2tlbnMpIHtcbiAgICAgICAgdG9rZW5zLnBvcCgpO1xuXG4gICAgICAgIGxldCBub2RlID0gbmV3IFJ1bGUoKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHRva2Vuc1swXVsyXSwgdG9rZW5zWzBdWzNdKTtcblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kKHRva2Vucyk7XG4gICAgICAgIHRoaXMucmF3KG5vZGUsICdzZWxlY3RvcicsIHRva2Vucyk7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IG5vZGU7XG4gICAgfVxuXG4gICAgZGVjbCh0b2tlbnMpIHtcbiAgICAgICAgbGV0IG5vZGUgPSBuZXcgRGVjbGFyYXRpb24oKTtcbiAgICAgICAgdGhpcy5pbml0KG5vZGUpO1xuXG4gICAgICAgIGxldCBsYXN0ID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKCBsYXN0WzBdID09PSAnOycgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbWljb2xvbiA9IHRydWU7XG4gICAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCBsYXN0WzRdICkge1xuICAgICAgICAgICAgbm9kZS5zb3VyY2UuZW5kID0geyBsaW5lOiBsYXN0WzRdLCBjb2x1bW46IGxhc3RbNV0gfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogbGFzdFsyXSwgY29sdW1uOiBsYXN0WzNdIH07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoIHRva2Vuc1swXVswXSAhPT0gJ3dvcmQnICkge1xuICAgICAgICAgICAgaWYgKCB0b2tlbnMubGVuZ3RoID09PSAxICkgdGhpcy51bmtub3duV29yZCh0b2tlbnMpO1xuICAgICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSArPSB0b2tlbnMuc2hpZnQoKVsxXTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNvdXJjZS5zdGFydCA9IHsgbGluZTogdG9rZW5zWzBdWzJdLCBjb2x1bW46IHRva2Vuc1swXVszXSB9O1xuXG4gICAgICAgIG5vZGUucHJvcCA9ICcnO1xuICAgICAgICB3aGlsZSAoIHRva2Vucy5sZW5ndGggKSB7XG4gICAgICAgICAgICBsZXQgdHlwZSA9IHRva2Vuc1swXVswXTtcbiAgICAgICAgICAgIGlmICggdHlwZSA9PT0gJzonIHx8IHR5cGUgPT09ICdzcGFjZScgfHwgdHlwZSA9PT0gJ2NvbW1lbnQnICkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZS5wcm9wICs9IHRva2Vucy5zaGlmdCgpWzFdO1xuICAgICAgICB9XG5cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gPSAnJztcblxuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gPT09ICc6JyApIHtcbiAgICAgICAgICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiArPSB0b2tlblsxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdG9rZW5bMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIG5vZGUucHJvcFswXSA9PT0gJ18nIHx8IG5vZGUucHJvcFswXSA9PT0gJyonICkge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmJlZm9yZSArPSBub2RlLnByb3BbMF07XG4gICAgICAgICAgICBub2RlLnByb3AgPSBub2RlLnByb3Auc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZS5yYXdzLmJldHdlZW4gKz0gdGhpcy5zcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpO1xuICAgICAgICB0aGlzLnByZWNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucyk7XG5cbiAgICAgICAgZm9yICggbGV0IGkgPSB0b2tlbnMubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSApIHtcbiAgICAgICAgICAgIHRva2VuID0gdG9rZW5zW2ldO1xuICAgICAgICAgICAgaWYgKCB0b2tlblsxXS50b0xvd2VyQ2FzZSgpID09PSAnIWltcG9ydGFudCcgKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxldCBzdHJpbmcgPSB0aGlzLnN0cmluZ0Zyb20odG9rZW5zLCBpKTtcbiAgICAgICAgICAgICAgICBzdHJpbmcgPSB0aGlzLnNwYWNlc0Zyb21FbmQodG9rZW5zKSArIHN0cmluZztcbiAgICAgICAgICAgICAgICBpZiAoIHN0cmluZyAhPT0gJyAhaW1wb3J0YW50JyApIG5vZGUucmF3cy5pbXBvcnRhbnQgPSBzdHJpbmc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW5bMV0udG9Mb3dlckNhc2UoKSA9PT0gJ2ltcG9ydGFudCcpIHtcbiAgICAgICAgICAgICAgICBsZXQgY2FjaGUgPSB0b2tlbnMuc2xpY2UoMCk7XG4gICAgICAgICAgICAgICAgbGV0IHN0ciAgID0gJyc7XG4gICAgICAgICAgICAgICAgZm9yICggbGV0IGogPSBpOyBqID4gMDsgai0tICkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IGNhY2hlW2pdWzBdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIHN0ci50cmltKCkuaW5kZXhPZignIScpID09PSAwICYmIHR5cGUgIT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBjYWNoZS5wb3AoKVsxXSArIHN0cjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCBzdHIudHJpbSgpLmluZGV4T2YoJyEnKSA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5pbXBvcnRhbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBub2RlLnJhd3MuaW1wb3J0YW50ID0gc3RyO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMgPSBjYWNoZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gIT09ICdzcGFjZScgJiYgdG9rZW5bMF0gIT09ICdjb21tZW50JyApIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmF3KG5vZGUsICd2YWx1ZScsIHRva2Vucyk7XG5cbiAgICAgICAgaWYgKCBub2RlLnZhbHVlLmluZGV4T2YoJzonKSAhPT0gLTEgKSB0aGlzLmNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucyk7XG4gICAgfVxuXG4gICAgYXRydWxlKHRva2VuKSB7XG4gICAgICAgIGxldCBub2RlICA9IG5ldyBBdFJ1bGUoKTtcbiAgICAgICAgbm9kZS5uYW1lID0gdG9rZW5bMV0uc2xpY2UoMSk7XG4gICAgICAgIGlmICggbm9kZS5uYW1lID09PSAnJyApIHtcbiAgICAgICAgICAgIHRoaXMudW5uYW1lZEF0cnVsZShub2RlLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0KG5vZGUsIHRva2VuWzJdLCB0b2tlblszXSk7XG5cbiAgICAgICAgbGV0IHByZXY7XG4gICAgICAgIGxldCBzaGlmdDtcbiAgICAgICAgbGV0IGxhc3QgICA9IGZhbHNlO1xuICAgICAgICBsZXQgb3BlbiAgID0gZmFsc2U7XG4gICAgICAgIGxldCBwYXJhbXMgPSBbXTtcblxuICAgICAgICB3aGlsZSAoICF0aGlzLnRva2VuaXplci5lbmRPZkZpbGUoKSApIHtcbiAgICAgICAgICAgIHRva2VuID0gdGhpcy50b2tlbml6ZXIubmV4dFRva2VuKCk7XG5cbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gPT09ICc7JyApIHtcbiAgICAgICAgICAgICAgICBub2RlLnNvdXJjZS5lbmQgPSB7IGxpbmU6IHRva2VuWzJdLCBjb2x1bW46IHRva2VuWzNdIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zZW1pY29sb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdG9rZW5bMF0gPT09ICd7JyApIHtcbiAgICAgICAgICAgICAgICBvcGVuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHRva2VuWzBdID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICBpZiAoIHBhcmFtcy5sZW5ndGggPiAwICkge1xuICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IHBhcmFtcy5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcGFyYW1zW3NoaWZ0XTtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCBwcmV2ICYmIHByZXZbMF0gPT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID0gcGFyYW1zWy0tc2hpZnRdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICggcHJldiApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuc291cmNlLmVuZCA9IHsgbGluZTogcHJldls0XSwgY29sdW1uOiBwcmV2WzVdIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5lbmQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMucHVzaCh0b2tlbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICggdGhpcy50b2tlbml6ZXIuZW5kT2ZGaWxlKCkgKSB7XG4gICAgICAgICAgICAgICAgbGFzdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9IHRoaXMuc3BhY2VzQW5kQ29tbWVudHNGcm9tRW5kKHBhcmFtcyk7XG4gICAgICAgIGlmICggcGFyYW1zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIG5vZGUucmF3cy5hZnRlck5hbWUgPSB0aGlzLnNwYWNlc0FuZENvbW1lbnRzRnJvbVN0YXJ0KHBhcmFtcyk7XG4gICAgICAgICAgICB0aGlzLnJhdyhub2RlLCAncGFyYW1zJywgcGFyYW1zKTtcbiAgICAgICAgICAgIGlmICggbGFzdCApIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHBhcmFtc1twYXJhbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAgICAgbm9kZS5zb3VyY2UuZW5kICAgPSB7IGxpbmU6IHRva2VuWzRdLCBjb2x1bW46IHRva2VuWzVdIH07XG4gICAgICAgICAgICAgICAgdGhpcy5zcGFjZXMgICAgICAgPSBub2RlLnJhd3MuYmV0d2VlbjtcbiAgICAgICAgICAgICAgICBub2RlLnJhd3MuYmV0d2VlbiA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5yYXdzLmFmdGVyTmFtZSA9ICcnO1xuICAgICAgICAgICAgbm9kZS5wYXJhbXMgICAgICAgICA9ICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBvcGVuICkge1xuICAgICAgICAgICAgbm9kZS5ub2RlcyAgID0gW107XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBub2RlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5kKHRva2VuKSB7XG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50Lm5vZGVzICYmIHRoaXMuY3VycmVudC5ub2Rlcy5sZW5ndGggKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnQucmF3cy5zZW1pY29sb24gPSB0aGlzLnNlbWljb2xvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbWljb2xvbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY3VycmVudC5yYXdzLmFmdGVyID0gKHRoaXMuY3VycmVudC5yYXdzLmFmdGVyIHx8ICcnKSArIHRoaXMuc3BhY2VzO1xuICAgICAgICB0aGlzLnNwYWNlcyA9ICcnO1xuXG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50LnBhcmVudCApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudC5zb3VyY2UuZW5kID0geyBsaW5lOiB0b2tlblsyXSwgY29sdW1uOiB0b2tlblszXSB9O1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5jdXJyZW50LnBhcmVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudW5leHBlY3RlZENsb3NlKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGVuZEZpbGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5jdXJyZW50LnBhcmVudCApIHRoaXMudW5jbG9zZWRCbG9jaygpO1xuICAgICAgICBpZiAoIHRoaXMuY3VycmVudC5ub2RlcyAmJiB0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoICkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50LnJhd3Muc2VtaWNvbG9uID0gdGhpcy5zZW1pY29sb247XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgPSAodGhpcy5jdXJyZW50LnJhd3MuYWZ0ZXIgfHwgJycpICsgdGhpcy5zcGFjZXM7XG4gICAgfVxuXG4gICAgZnJlZVNlbWljb2xvbih0b2tlbikge1xuICAgICAgICB0aGlzLnNwYWNlcyArPSB0b2tlblsxXTtcbiAgICAgICAgaWYgKCB0aGlzLmN1cnJlbnQubm9kZXMgKSB7XG4gICAgICAgICAgICBsZXQgcHJldiA9IHRoaXMuY3VycmVudC5ub2Rlc1t0aGlzLmN1cnJlbnQubm9kZXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAoIHByZXYgJiYgcHJldi50eXBlID09PSAncnVsZScgJiYgIXByZXYucmF3cy5vd25TZW1pY29sb24gKSB7XG4gICAgICAgICAgICAgICAgcHJldi5yYXdzLm93blNlbWljb2xvbiA9IHRoaXMuc3BhY2VzO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhY2VzID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIZWxwZXJzXG5cbiAgICBpbml0KG5vZGUsIGxpbmUsIGNvbHVtbikge1xuICAgICAgICB0aGlzLmN1cnJlbnQucHVzaChub2RlKTtcblxuICAgICAgICBub2RlLnNvdXJjZSA9IHsgc3RhcnQ6IHsgbGluZSwgY29sdW1uIH0sIGlucHV0OiB0aGlzLmlucHV0IH07XG4gICAgICAgIG5vZGUucmF3cy5iZWZvcmUgPSB0aGlzLnNwYWNlcztcbiAgICAgICAgdGhpcy5zcGFjZXMgPSAnJztcbiAgICAgICAgaWYgKCBub2RlLnR5cGUgIT09ICdjb21tZW50JyApIHRoaXMuc2VtaWNvbG9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmF3KG5vZGUsIHByb3AsIHRva2Vucykge1xuICAgICAgICBsZXQgdG9rZW4sIHR5cGU7XG4gICAgICAgIGxldCBsZW5ndGggPSB0b2tlbnMubGVuZ3RoO1xuICAgICAgICBsZXQgdmFsdWUgID0gJyc7XG4gICAgICAgIGxldCBjbGVhbiAgPSB0cnVlO1xuICAgICAgICBsZXQgbmV4dCwgcHJldjtcbiAgICAgICAgY29uc3QgcGF0dGVybiA9IC9eKFsufCNdKT8oW1xcd10pKy9pO1xuXG4gICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuXG4gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICdjb21tZW50JyAmJiBub2RlLnR5cGUgPT09ICdydWxlJyApIHtcbiAgICAgICAgICAgICAgICBwcmV2ID0gdG9rZW5zW2kgLSAxXTtcbiAgICAgICAgICAgICAgICBuZXh0ID0gdG9rZW5zW2kgKyAxXTtcblxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgcHJldlswXSAhPT0gJ3NwYWNlJyAmJlxuICAgICAgICAgICAgICAgICAgICBuZXh0WzBdICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm4udGVzdChwcmV2WzFdKSAmJlxuICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnRlc3QobmV4dFsxXSlcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgKz0gdG9rZW5bMV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCB0eXBlID09PSAnY29tbWVudCcgfHwgdHlwZSA9PT0gJ3NwYWNlJyAmJiBpID09PSBsZW5ndGggLSAxICkge1xuICAgICAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbHVlICs9IHRva2VuWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICggIWNsZWFuICkge1xuICAgICAgICAgICAgbGV0IHJhdyA9IHRva2Vucy5yZWR1Y2UoIChhbGwsIGkpID0+IGFsbCArIGlbMV0sICcnKTtcbiAgICAgICAgICAgIG5vZGUucmF3c1twcm9wXSA9IHsgdmFsdWUsIHJhdyB9O1xuICAgICAgICB9XG4gICAgICAgIG5vZGVbcHJvcF0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBzcGFjZXNBbmRDb21tZW50c0Zyb21FbmQodG9rZW5zKSB7XG4gICAgICAgIGxldCBsYXN0VG9rZW5UeXBlO1xuICAgICAgICBsZXQgc3BhY2VzID0gJyc7XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgaWYgKCBsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICYmXG4gICAgICAgICAgICAgICAgbGFzdFRva2VuVHlwZSAhPT0gJ2NvbW1lbnQnICkgYnJlYWs7XG4gICAgICAgICAgICBzcGFjZXMgPSB0b2tlbnMucG9wKClbMV0gKyBzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwYWNlcztcbiAgICB9XG5cbiAgICBzcGFjZXNBbmRDb21tZW50c0Zyb21TdGFydCh0b2tlbnMpIHtcbiAgICAgICAgbGV0IG5leHQ7XG4gICAgICAgIGxldCBzcGFjZXMgPSAnJztcbiAgICAgICAgd2hpbGUgKCB0b2tlbnMubGVuZ3RoICkge1xuICAgICAgICAgICAgbmV4dCA9IHRva2Vuc1swXVswXTtcbiAgICAgICAgICAgIGlmICggbmV4dCAhPT0gJ3NwYWNlJyAmJiBuZXh0ICE9PSAnY29tbWVudCcgKSBicmVhaztcbiAgICAgICAgICAgIHNwYWNlcyArPSB0b2tlbnMuc2hpZnQoKVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3BhY2VzO1xuICAgIH1cblxuICAgIHNwYWNlc0Zyb21FbmQodG9rZW5zKSB7XG4gICAgICAgIGxldCBsYXN0VG9rZW5UeXBlO1xuICAgICAgICBsZXQgc3BhY2VzID0gJyc7XG4gICAgICAgIHdoaWxlICggdG9rZW5zLmxlbmd0aCApIHtcbiAgICAgICAgICAgIGxhc3RUb2tlblR5cGUgPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdWzBdO1xuICAgICAgICAgICAgaWYgKCBsYXN0VG9rZW5UeXBlICE9PSAnc3BhY2UnICkgYnJlYWs7XG4gICAgICAgICAgICBzcGFjZXMgPSB0b2tlbnMucG9wKClbMV0gKyBzcGFjZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNwYWNlcztcbiAgICB9XG5cbiAgICBzdHJpbmdGcm9tKHRva2VucywgZnJvbSkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgICAgIGZvciAoIGxldCBpID0gZnJvbTsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKyApIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0b2tlbnNbaV1bMV07XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5zLnNwbGljZShmcm9tLCB0b2tlbnMubGVuZ3RoIC0gZnJvbSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgY29sb24odG9rZW5zKSB7XG4gICAgICAgIGxldCBicmFja2V0cyA9IDA7XG4gICAgICAgIGxldCB0b2tlbiwgdHlwZSwgcHJldjtcbiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrICkge1xuICAgICAgICAgICAgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICB0eXBlICA9IHRva2VuWzBdO1xuXG4gICAgICAgICAgICBpZiAoIHR5cGUgPT09ICcoJyApIHtcbiAgICAgICAgICAgICAgICBicmFja2V0cyArPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZSA9PT0gJyknICkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRzIC09IDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCBicmFja2V0cyA9PT0gMCAmJiB0eXBlID09PSAnOicgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCAhcHJldiApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb3VibGVDb2xvbih0b2tlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICggcHJldlswXSA9PT0gJ3dvcmQnICYmIHByZXZbMV0gPT09ICdwcm9naWQnICkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByZXYgPSB0b2tlbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gRXJyb3JzXG5cbiAgICB1bmNsb3NlZEJyYWNrZXQoYnJhY2tldCkge1xuICAgICAgICB0aHJvdyB0aGlzLmlucHV0LmVycm9yKCdVbmNsb3NlZCBicmFja2V0JywgYnJhY2tldFsyXSwgYnJhY2tldFszXSk7XG4gICAgfVxuXG4gICAgdW5rbm93bldvcmQodG9rZW5zKSB7XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ1Vua25vd24gd29yZCcsIHRva2Vuc1swXVsyXSwgdG9rZW5zWzBdWzNdKTtcbiAgICB9XG5cbiAgICB1bmV4cGVjdGVkQ2xvc2UodG9rZW4pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5leHBlY3RlZCB9JywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bmNsb3NlZEJsb2NrKCkge1xuICAgICAgICBsZXQgcG9zID0gdGhpcy5jdXJyZW50LnNvdXJjZS5zdGFydDtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignVW5jbG9zZWQgYmxvY2snLCBwb3MubGluZSwgcG9zLmNvbHVtbik7XG4gICAgfVxuXG4gICAgZG91YmxlQ29sb24odG9rZW4pIHtcbiAgICAgICAgdGhyb3cgdGhpcy5pbnB1dC5lcnJvcignRG91YmxlIGNvbG9uJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICB1bm5hbWVkQXRydWxlKG5vZGUsIHRva2VuKSB7XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ0F0LXJ1bGUgd2l0aG91dCBuYW1lJywgdG9rZW5bMl0sIHRva2VuWzNdKTtcbiAgICB9XG5cbiAgICBwcmVjaGVja01pc3NlZFNlbWljb2xvbih0b2tlbnMpIHtcbiAgICAgICAgLy8gSG9vayBmb3IgU2FmZSBQYXJzZXJcbiAgICAgICAgdG9rZW5zO1xuICAgIH1cblxuICAgIGNoZWNrTWlzc2VkU2VtaWNvbG9uKHRva2Vucykge1xuICAgICAgICBsZXQgY29sb24gPSB0aGlzLmNvbG9uKHRva2Vucyk7XG4gICAgICAgIGlmICggY29sb24gPT09IGZhbHNlICkgcmV0dXJuO1xuXG4gICAgICAgIGxldCBmb3VuZGVkID0gMDtcbiAgICAgICAgbGV0IHRva2VuO1xuICAgICAgICBmb3IgKCBsZXQgaiA9IGNvbG9uIC0gMTsgaiA+PSAwOyBqLS0gKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHRva2Vuc1tqXTtcbiAgICAgICAgICAgIGlmICggdG9rZW5bMF0gIT09ICdzcGFjZScgKSB7XG4gICAgICAgICAgICAgICAgZm91bmRlZCArPSAxO1xuICAgICAgICAgICAgICAgIGlmICggZm91bmRlZCA9PT0gMiApIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IHRoaXMuaW5wdXQuZXJyb3IoJ01pc3NlZCBzZW1pY29sb24nLCB0b2tlblsyXSwgdG9rZW5bM10pO1xuICAgIH1cblxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n/**\n * Contains helpers for working with vendor prefixes.\n *\n * @example\n * const vendor = postcss.vendor;\n *\n * @namespace vendor\n */\nvar vendor = {\n\n /**\n * Returns the vendor prefix extracted from an input string.\n *\n * @param {string} prop - string with or without vendor prefix\n *\n * @return {string} vendor prefix or empty string\n *\n * @example\n * postcss.vendor.prefix('-moz-tab-size') //=> '-moz-'\n * postcss.vendor.prefix('tab-size') //=> ''\n */\n prefix: function prefix(prop) {\n var match = prop.match(/^(-\\w+-)/);\n if (match) {\n return match[0];\n } else {\n return '';\n }\n },\n\n\n /**\n * Returns the input string stripped of its vendor prefix.\n *\n * @param {string} prop - string with or without vendor prefix\n *\n * @return {string} string name without vendor prefixes\n *\n * @example\n * postcss.vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n */\n unprefixed: function unprefixed(prop) {\n return prop.replace(/^-\\w+-/, '');\n }\n};\n\nexports.default = vendor;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZlbmRvci5lczYiXSwibmFtZXMiOlsidmVuZG9yIiwicHJlZml4IiwicHJvcCIsIm1hdGNoIiwidW5wcmVmaXhlZCIsInJlcGxhY2UiXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7OztBQVFBLElBQUlBLFNBQVM7O0FBRVQ7Ozs7Ozs7Ozs7O0FBV0FDLFVBYlMsa0JBYUZDLElBYkUsRUFhSTtBQUNULFlBQUlDLFFBQVFELEtBQUtDLEtBQUwsQ0FBVyxVQUFYLENBQVo7QUFDQSxZQUFLQSxLQUFMLEVBQWE7QUFDVCxtQkFBT0EsTUFBTSxDQUFOLENBQVA7QUFDSCxTQUZELE1BRU87QUFDSCxtQkFBTyxFQUFQO0FBQ0g7QUFDSixLQXBCUTs7O0FBc0JUOzs7Ozs7Ozs7O0FBVUFDLGNBaENTLHNCQWdDRUYsSUFoQ0YsRUFnQ1E7QUFDYixlQUFPQSxLQUFLRyxPQUFMLENBQWEsUUFBYixFQUF1QixFQUF2QixDQUFQO0FBQ0g7QUFsQ1EsQ0FBYjs7a0JBc0NlTCxNIiwiZmlsZSI6InZlbmRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udGFpbnMgaGVscGVycyBmb3Igd29ya2luZyB3aXRoIHZlbmRvciBwcmVmaXhlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgdmVuZG9yID0gcG9zdGNzcy52ZW5kb3I7XG4gKlxuICogQG5hbWVzcGFjZSB2ZW5kb3JcbiAqL1xubGV0IHZlbmRvciA9IHtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHZlbmRvciBwcmVmaXggZXh0cmFjdGVkIGZyb20gYW4gaW5wdXQgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3AgLSBzdHJpbmcgd2l0aCBvciB3aXRob3V0IHZlbmRvciBwcmVmaXhcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge3N0cmluZ30gdmVuZG9yIHByZWZpeCBvciBlbXB0eSBzdHJpbmdcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCctbW96LXRhYi1zaXplJykgLy89PiAnLW1vei0nXG4gICAgICogcG9zdGNzcy52ZW5kb3IucHJlZml4KCd0YWItc2l6ZScpICAgICAgLy89PiAnJ1xuICAgICAqL1xuICAgIHByZWZpeChwcm9wKSB7XG4gICAgICAgIGxldCBtYXRjaCA9IHByb3AubWF0Y2goL14oLVxcdystKS8pO1xuICAgICAgICBpZiAoIG1hdGNoICkge1xuICAgICAgICAgICAgcmV0dXJuIG1hdGNoWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGlucHV0IHN0cmluZyBzdHJpcHBlZCBvZiBpdHMgdmVuZG9yIHByZWZpeC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wIC0gc3RyaW5nIHdpdGggb3Igd2l0aG91dCB2ZW5kb3IgcHJlZml4XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IHN0cmluZyBuYW1lIHdpdGhvdXQgdmVuZG9yIHByZWZpeGVzXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIHBvc3Rjc3MudmVuZG9yLnVucHJlZml4ZWQoJy1tb3otdGFiLXNpemUnKSAvLz0+ICd0YWItc2l6ZSdcbiAgICAgKi9cbiAgICB1bnByZWZpeGVkKHByb3ApIHtcbiAgICAgICAgcmV0dXJuIHByb3AucmVwbGFjZSgvXi1cXHcrLS8sICcnKTtcbiAgICB9XG5cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHZlbmRvcjtcbiJdfQ==\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\nvar sanitizeHtml = require(\"sanitize-html\");\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\n\nmodule.exports = React.createClass({\n displayName: 'VectorCustomServerDialog',\n statics: {\n replaces: 'CustomServerDialog',\n },\n\n render: function() {\n return (\n <div className=\"mx_ErrorDialog\">\n <div className=\"mx_Dialog_title\">\n { _t('Custom Server Options') }\n </div>\n <div className=\"mx_Dialog_content\">\n <span dangerouslySetInnerHTML={{__html: sanitizeHtml(_t(\n \"You can use the custom server options to sign into other Matrix \"+\n \"servers by specifying a different Home server URL.<br/>This allows \"+\n \"you to use Riot with an existing Matrix account on a different home \"+\n \"server.<br/><br/>You can also set a custom identity server but you won't \"+\n \"be able to invite users by email address, or be invited by email address yourself.\",\n ))}} />\n </div>\n <div className=\"mx_Dialog_buttons\">\n <button onClick={this.props.onFinished} autoFocus={true}>\n { _t('Dismiss') }\n </button>\n </div>\n </div>\n );\n }\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\nimport { _t } from 'matrix-react-sdk/lib/languageHandler';\nimport SettingsStore from 'matrix-react-sdk/lib/settings/SettingsStore';\n\nmodule.exports = React.createClass({\n displayName: 'VectorLoginFooter',\n statics: {\n replaces: 'LoginFooter',\n },\n\n render: function() {\n // FIXME: replace this with a proper Status skin\n // ...except then we wouldn't be able to switch to the Status theme at runtime.\n if (SettingsStore.getValue(\"theme\") === 'status') return <div/>;\n \n return (\n <div className=\"mx_Login_links\">\n <a href=\"https://medium.com/@RiotChat\">blog</a>  ·  \n <a href=\"https://twitter.com/@RiotChat\">twitter</a>  ·  \n <a href=\"https://github.com/vector-im/riot-web\">github</a>  ·  \n <a href=\"https://matrix.org\">{ _t('powered by Matrix') }</a>\n </div>\n );\n }\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst i = [1, 2, 3, 4, 5][Math.floor(Math.random() * 5)];\nconst DEFAULT_LOGO_URI = \"themes/riot/img/logos/riot-im-logo-\" + i + \".svg\";\n\nmodule.exports = React.createClass({\n displayName: 'VectorLoginHeader',\n statics: {\n replaces: 'LoginHeader',\n },\n propTypes: {\n icon: PropTypes.string,\n },\n\n render: function() {\n return (\n <div className=\"mx_Login_header\">\n <div className=\"mx_Login_logo\">\n <img src={this.props.icon || DEFAULT_LOGO_URI} alt=\"Riot\"/>\n </div>\n </div>\n );\n }\n});\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.components = undefined;\n\nvar _BottomLeftMenu = require('./components/structures/BottomLeftMenu');\n\nvar _BottomLeftMenu2 = _interopRequireDefault(_BottomLeftMenu);\n\nvar _CompatibilityPage = require('./components/structures/CompatibilityPage');\n\nvar _CompatibilityPage2 = _interopRequireDefault(_CompatibilityPage);\n\nvar _ContextualMenu = require('./components/structures/ContextualMenu');\n\nvar _ContextualMenu2 = _interopRequireDefault(_ContextualMenu);\n\nvar _CreateRoom = require('./components/structures/CreateRoom');\n\nvar _CreateRoom2 = _interopRequireDefault(_CreateRoom);\n\nvar _FilePanel = require('./components/structures/FilePanel');\n\nvar _FilePanel2 = _interopRequireDefault(_FilePanel);\n\nvar _GroupView = require('./components/structures/GroupView');\n\nvar _GroupView2 = _interopRequireDefault(_GroupView);\n\nvar _HomePage = require('./components/structures/HomePage');\n\nvar _HomePage2 = _interopRequireDefault(_HomePage);\n\nvar _InteractiveAuth = require('./components/structures/InteractiveAuth');\n\nvar _InteractiveAuth2 = _interopRequireDefault(_InteractiveAuth);\n\nvar _LeftPanel = require('./components/structures/LeftPanel');\n\nvar _LeftPanel2 = _interopRequireDefault(_LeftPanel);\n\nvar _LoggedInView = require('./components/structures/LoggedInView');\n\nvar _LoggedInView2 = _interopRequireDefault(_LoggedInView);\n\nvar _LoginBox = require('./components/structures/LoginBox');\n\nvar _LoginBox2 = _interopRequireDefault(_LoginBox);\n\nvar _MatrixChat = require('./components/structures/MatrixChat');\n\nvar _MatrixChat2 = _interopRequireDefault(_MatrixChat);\n\nvar _MessagePanel = require('./components/structures/MessagePanel');\n\nvar _MessagePanel2 = _interopRequireDefault(_MessagePanel);\n\nvar _MyGroups = require('./components/structures/MyGroups');\n\nvar _MyGroups2 = _interopRequireDefault(_MyGroups);\n\nvar _NotificationPanel = require('./components/structures/NotificationPanel');\n\nvar _NotificationPanel2 = _interopRequireDefault(_NotificationPanel);\n\nvar _RightPanel = require('./components/structures/RightPanel');\n\nvar _RightPanel2 = _interopRequireDefault(_RightPanel);\n\nvar _RoomDirectory = require('./components/structures/RoomDirectory');\n\nvar _RoomDirectory2 = _interopRequireDefault(_RoomDirectory);\n\nvar _RoomStatusBar = require('./components/structures/RoomStatusBar');\n\nvar _RoomStatusBar2 = _interopRequireDefault(_RoomStatusBar);\n\nvar _RoomSubList = require('./components/structures/RoomSubList');\n\nvar _RoomSubList2 = _interopRequireDefault(_RoomSubList);\n\nvar _RoomView = require('./components/structures/RoomView');\n\nvar _RoomView2 = _interopRequireDefault(_RoomView);\n\nvar _ScrollPanel = require('./components/structures/ScrollPanel');\n\nvar _ScrollPanel2 = _interopRequireDefault(_ScrollPanel);\n\nvar _SearchBox = require('./components/structures/SearchBox');\n\nvar _SearchBox2 = _interopRequireDefault(_SearchBox);\n\nvar _TagPanel = require('./components/structures/TagPanel');\n\nvar _TagPanel2 = _interopRequireDefault(_TagPanel);\n\nvar _TimelinePanel = require('./components/structures/TimelinePanel');\n\nvar _TimelinePanel2 = _interopRequireDefault(_TimelinePanel);\n\nvar _UploadBar = require('./components/structures/UploadBar');\n\nvar _UploadBar2 = _interopRequireDefault(_UploadBar);\n\nvar _UserSettings = require('./components/structures/UserSettings');\n\nvar _UserSettings2 = _interopRequireDefault(_UserSettings);\n\nvar _ViewSource = require('./components/structures/ViewSource');\n\nvar _ViewSource2 = _interopRequireDefault(_ViewSource);\n\nvar _ForgotPassword = require('./components/structures/login/ForgotPassword');\n\nvar _ForgotPassword2 = _interopRequireDefault(_ForgotPassword);\n\nvar _LanguageSelector = require('./components/structures/login/LanguageSelector');\n\nvar _LanguageSelector2 = _interopRequireDefault(_LanguageSelector);\n\nvar _Login = require('./components/structures/login/Login');\n\nvar _Login2 = _interopRequireDefault(_Login);\n\nvar _PostRegistration = require('./components/structures/login/PostRegistration');\n\nvar _PostRegistration2 = _interopRequireDefault(_PostRegistration);\n\nvar _Registration = require('./components/structures/login/Registration');\n\nvar _Registration2 = _interopRequireDefault(_Registration);\n\nvar _BaseAvatar = require('./components/views/avatars/BaseAvatar');\n\nvar _BaseAvatar2 = _interopRequireDefault(_BaseAvatar);\n\nvar _GroupAvatar = require('./components/views/avatars/GroupAvatar');\n\nvar _GroupAvatar2 = _interopRequireDefault(_GroupAvatar);\n\nvar _MemberAvatar = require('./components/views/avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _RoomAvatar = require('./components/views/avatars/RoomAvatar');\n\nvar _RoomAvatar2 = _interopRequireDefault(_RoomAvatar);\n\nvar _GenericElementContextMenu = require('./components/views/context_menus/GenericElementContextMenu');\n\nvar _GenericElementContextMenu2 = _interopRequireDefault(_GenericElementContextMenu);\n\nvar _GenericTextContextMenu = require('./components/views/context_menus/GenericTextContextMenu');\n\nvar _GenericTextContextMenu2 = _interopRequireDefault(_GenericTextContextMenu);\n\nvar _GroupInviteTileContextMenu = require('./components/views/context_menus/GroupInviteTileContextMenu');\n\nvar _GroupInviteTileContextMenu2 = _interopRequireDefault(_GroupInviteTileContextMenu);\n\nvar _MessageContextMenu = require('./components/views/context_menus/MessageContextMenu');\n\nvar _MessageContextMenu2 = _interopRequireDefault(_MessageContextMenu);\n\nvar _RoomTileContextMenu = require('./components/views/context_menus/RoomTileContextMenu');\n\nvar _RoomTileContextMenu2 = _interopRequireDefault(_RoomTileContextMenu);\n\nvar _TagTileContextMenu = require('./components/views/context_menus/TagTileContextMenu');\n\nvar _TagTileContextMenu2 = _interopRequireDefault(_TagTileContextMenu);\n\nvar _CreateRoomButton = require('./components/views/create_room/CreateRoomButton');\n\nvar _CreateRoomButton2 = _interopRequireDefault(_CreateRoomButton);\n\nvar _Presets = require('./components/views/create_room/Presets');\n\nvar _Presets2 = _interopRequireDefault(_Presets);\n\nvar _RoomAlias = require('./components/views/create_room/RoomAlias');\n\nvar _RoomAlias2 = _interopRequireDefault(_RoomAlias);\n\nvar _AddressPickerDialog = require('./components/views/dialogs/AddressPickerDialog');\n\nvar _AddressPickerDialog2 = _interopRequireDefault(_AddressPickerDialog);\n\nvar _BaseDialog = require('./components/views/dialogs/BaseDialog');\n\nvar _BaseDialog2 = _interopRequireDefault(_BaseDialog);\n\nvar _BugReportDialog = require('./components/views/dialogs/BugReportDialog');\n\nvar _BugReportDialog2 = _interopRequireDefault(_BugReportDialog);\n\nvar _ChangelogDialog = require('./components/views/dialogs/ChangelogDialog');\n\nvar _ChangelogDialog2 = _interopRequireDefault(_ChangelogDialog);\n\nvar _ChatCreateOrReuseDialog = require('./components/views/dialogs/ChatCreateOrReuseDialog');\n\nvar _ChatCreateOrReuseDialog2 = _interopRequireDefault(_ChatCreateOrReuseDialog);\n\nvar _ConfirmRedactDialog = require('./components/views/dialogs/ConfirmRedactDialog');\n\nvar _ConfirmRedactDialog2 = _interopRequireDefault(_ConfirmRedactDialog);\n\nvar _ConfirmUserActionDialog = require('./components/views/dialogs/ConfirmUserActionDialog');\n\nvar _ConfirmUserActionDialog2 = _interopRequireDefault(_ConfirmUserActionDialog);\n\nvar _CreateGroupDialog = require('./components/views/dialogs/CreateGroupDialog');\n\nvar _CreateGroupDialog2 = _interopRequireDefault(_CreateGroupDialog);\n\nvar _CreateRoomDialog = require('./components/views/dialogs/CreateRoomDialog');\n\nvar _CreateRoomDialog2 = _interopRequireDefault(_CreateRoomDialog);\n\nvar _DeactivateAccountDialog = require('./components/views/dialogs/DeactivateAccountDialog');\n\nvar _DeactivateAccountDialog2 = _interopRequireDefault(_DeactivateAccountDialog);\n\nvar _DeviceVerifyDialog = require('./components/views/dialogs/DeviceVerifyDialog');\n\nvar _DeviceVerifyDialog2 = _interopRequireDefault(_DeviceVerifyDialog);\n\nvar _DevtoolsDialog = require('./components/views/dialogs/DevtoolsDialog');\n\nvar _DevtoolsDialog2 = _interopRequireDefault(_DevtoolsDialog);\n\nvar _ErrorDialog = require('./components/views/dialogs/ErrorDialog');\n\nvar _ErrorDialog2 = _interopRequireDefault(_ErrorDialog);\n\nvar _InteractiveAuthDialog = require('./components/views/dialogs/InteractiveAuthDialog');\n\nvar _InteractiveAuthDialog2 = _interopRequireDefault(_InteractiveAuthDialog);\n\nvar _KeyShareDialog = require('./components/views/dialogs/KeyShareDialog');\n\nvar _KeyShareDialog2 = _interopRequireDefault(_KeyShareDialog);\n\nvar _LazyLoadingDisabledDialog = require('./components/views/dialogs/LazyLoadingDisabledDialog');\n\nvar _LazyLoadingDisabledDialog2 = _interopRequireDefault(_LazyLoadingDisabledDialog);\n\nvar _LazyLoadingResyncDialog = require('./components/views/dialogs/LazyLoadingResyncDialog');\n\nvar _LazyLoadingResyncDialog2 = _interopRequireDefault(_LazyLoadingResyncDialog);\n\nvar _QuestionDialog = require('./components/views/dialogs/QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _RoomUpgradeDialog = require('./components/views/dialogs/RoomUpgradeDialog');\n\nvar _RoomUpgradeDialog2 = _interopRequireDefault(_RoomUpgradeDialog);\n\nvar _SessionRestoreErrorDialog = require('./components/views/dialogs/SessionRestoreErrorDialog');\n\nvar _SessionRestoreErrorDialog2 = _interopRequireDefault(_SessionRestoreErrorDialog);\n\nvar _SetEmailDialog = require('./components/views/dialogs/SetEmailDialog');\n\nvar _SetEmailDialog2 = _interopRequireDefault(_SetEmailDialog);\n\nvar _SetMxIdDialog = require('./components/views/dialogs/SetMxIdDialog');\n\nvar _SetMxIdDialog2 = _interopRequireDefault(_SetMxIdDialog);\n\nvar _SetPasswordDialog = require('./components/views/dialogs/SetPasswordDialog');\n\nvar _SetPasswordDialog2 = _interopRequireDefault(_SetPasswordDialog);\n\nvar _ShareDialog = require('./components/views/dialogs/ShareDialog');\n\nvar _ShareDialog2 = _interopRequireDefault(_ShareDialog);\n\nvar _TextInputDialog = require('./components/views/dialogs/TextInputDialog');\n\nvar _TextInputDialog2 = _interopRequireDefault(_TextInputDialog);\n\nvar _UnknownDeviceDialog = require('./components/views/dialogs/UnknownDeviceDialog');\n\nvar _UnknownDeviceDialog2 = _interopRequireDefault(_UnknownDeviceDialog);\n\nvar _NetworkDropdown = require('./components/views/directory/NetworkDropdown');\n\nvar _NetworkDropdown2 = _interopRequireDefault(_NetworkDropdown);\n\nvar _AccessibleButton = require('./components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ActionButton = require('./components/views/elements/ActionButton');\n\nvar _ActionButton2 = _interopRequireDefault(_ActionButton);\n\nvar _AddressSelector = require('./components/views/elements/AddressSelector');\n\nvar _AddressSelector2 = _interopRequireDefault(_AddressSelector);\n\nvar _AddressTile = require('./components/views/elements/AddressTile');\n\nvar _AddressTile2 = _interopRequireDefault(_AddressTile);\n\nvar _AppPermission = require('./components/views/elements/AppPermission');\n\nvar _AppPermission2 = _interopRequireDefault(_AppPermission);\n\nvar _AppTile = require('./components/views/elements/AppTile');\n\nvar _AppTile2 = _interopRequireDefault(_AppTile);\n\nvar _AppWarning = require('./components/views/elements/AppWarning');\n\nvar _AppWarning2 = _interopRequireDefault(_AppWarning);\n\nvar _CreateRoomButton3 = require('./components/views/elements/CreateRoomButton');\n\nvar _CreateRoomButton4 = _interopRequireDefault(_CreateRoomButton3);\n\nvar _DNDTagTile = require('./components/views/elements/DNDTagTile');\n\nvar _DNDTagTile2 = _interopRequireDefault(_DNDTagTile);\n\nvar _DeviceVerifyButtons = require('./components/views/elements/DeviceVerifyButtons');\n\nvar _DeviceVerifyButtons2 = _interopRequireDefault(_DeviceVerifyButtons);\n\nvar _DialogButtons = require('./components/views/elements/DialogButtons');\n\nvar _DialogButtons2 = _interopRequireDefault(_DialogButtons);\n\nvar _DirectorySearchBox = require('./components/views/elements/DirectorySearchBox');\n\nvar _DirectorySearchBox2 = _interopRequireDefault(_DirectorySearchBox);\n\nvar _Dropdown = require('./components/views/elements/Dropdown');\n\nvar _Dropdown2 = _interopRequireDefault(_Dropdown);\n\nvar _EditableItemList = require('./components/views/elements/EditableItemList');\n\nvar _EditableItemList2 = _interopRequireDefault(_EditableItemList);\n\nvar _EditableText = require('./components/views/elements/EditableText');\n\nvar _EditableText2 = _interopRequireDefault(_EditableText);\n\nvar _EditableTextContainer = require('./components/views/elements/EditableTextContainer');\n\nvar _EditableTextContainer2 = _interopRequireDefault(_EditableTextContainer);\n\nvar _EmojiText = require('./components/views/elements/EmojiText');\n\nvar _EmojiText2 = _interopRequireDefault(_EmojiText);\n\nvar _Flair = require('./components/views/elements/Flair');\n\nvar _Flair2 = _interopRequireDefault(_Flair);\n\nvar _GeminiScrollbarWrapper = require('./components/views/elements/GeminiScrollbarWrapper');\n\nvar _GeminiScrollbarWrapper2 = _interopRequireDefault(_GeminiScrollbarWrapper);\n\nvar _GroupsButton = require('./components/views/elements/GroupsButton');\n\nvar _GroupsButton2 = _interopRequireDefault(_GroupsButton);\n\nvar _HomeButton = require('./components/views/elements/HomeButton');\n\nvar _HomeButton2 = _interopRequireDefault(_HomeButton);\n\nvar _ImageView = require('./components/views/elements/ImageView');\n\nvar _ImageView2 = _interopRequireDefault(_ImageView);\n\nvar _InlineSpinner = require('./components/views/elements/InlineSpinner');\n\nvar _InlineSpinner2 = _interopRequireDefault(_InlineSpinner);\n\nvar _LanguageDropdown = require('./components/views/elements/LanguageDropdown');\n\nvar _LanguageDropdown2 = _interopRequireDefault(_LanguageDropdown);\n\nvar _ManageIntegsButton = require('./components/views/elements/ManageIntegsButton');\n\nvar _ManageIntegsButton2 = _interopRequireDefault(_ManageIntegsButton);\n\nvar _MemberEventListSummary = require('./components/views/elements/MemberEventListSummary');\n\nvar _MemberEventListSummary2 = _interopRequireDefault(_MemberEventListSummary);\n\nvar _MessageSpinner = require('./components/views/elements/MessageSpinner');\n\nvar _MessageSpinner2 = _interopRequireDefault(_MessageSpinner);\n\nvar _PersistedElement = require('./components/views/elements/PersistedElement');\n\nvar _PersistedElement2 = _interopRequireDefault(_PersistedElement);\n\nvar _PersistentApp = require('./components/views/elements/PersistentApp');\n\nvar _PersistentApp2 = _interopRequireDefault(_PersistentApp);\n\nvar _Pill = require('./components/views/elements/Pill');\n\nvar _Pill2 = _interopRequireDefault(_Pill);\n\nvar _PowerSelector = require('./components/views/elements/PowerSelector');\n\nvar _PowerSelector2 = _interopRequireDefault(_PowerSelector);\n\nvar _ProgressBar = require('./components/views/elements/ProgressBar');\n\nvar _ProgressBar2 = _interopRequireDefault(_ProgressBar);\n\nvar _ReplyThread = require('./components/views/elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _RoomDirectoryButton = require('./components/views/elements/RoomDirectoryButton');\n\nvar _RoomDirectoryButton2 = _interopRequireDefault(_RoomDirectoryButton);\n\nvar _SettingsButton = require('./components/views/elements/SettingsButton');\n\nvar _SettingsButton2 = _interopRequireDefault(_SettingsButton);\n\nvar _SettingsFlag = require('./components/views/elements/SettingsFlag');\n\nvar _SettingsFlag2 = _interopRequireDefault(_SettingsFlag);\n\nvar _Spinner = require('./components/views/elements/Spinner');\n\nvar _Spinner2 = _interopRequireDefault(_Spinner);\n\nvar _StartChatButton = require('./components/views/elements/StartChatButton');\n\nvar _StartChatButton2 = _interopRequireDefault(_StartChatButton);\n\nvar _SyntaxHighlight = require('./components/views/elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nvar _TagTile = require('./components/views/elements/TagTile');\n\nvar _TagTile2 = _interopRequireDefault(_TagTile);\n\nvar _TintableSvg = require('./components/views/elements/TintableSvg');\n\nvar _TintableSvg2 = _interopRequireDefault(_TintableSvg);\n\nvar _TintableSvgButton = require('./components/views/elements/TintableSvgButton');\n\nvar _TintableSvgButton2 = _interopRequireDefault(_TintableSvgButton);\n\nvar _ToolTipButton = require('./components/views/elements/ToolTipButton');\n\nvar _ToolTipButton2 = _interopRequireDefault(_ToolTipButton);\n\nvar _TruncatedList = require('./components/views/elements/TruncatedList');\n\nvar _TruncatedList2 = _interopRequireDefault(_TruncatedList);\n\nvar _UserSelector = require('./components/views/elements/UserSelector');\n\nvar _UserSelector2 = _interopRequireDefault(_UserSelector);\n\nvar _CookieBar = require('./components/views/globals/CookieBar');\n\nvar _CookieBar2 = _interopRequireDefault(_CookieBar);\n\nvar _MatrixToolbar = require('./components/views/globals/MatrixToolbar');\n\nvar _MatrixToolbar2 = _interopRequireDefault(_MatrixToolbar);\n\nvar _NewVersionBar = require('./components/views/globals/NewVersionBar');\n\nvar _NewVersionBar2 = _interopRequireDefault(_NewVersionBar);\n\nvar _PasswordNagBar = require('./components/views/globals/PasswordNagBar');\n\nvar _PasswordNagBar2 = _interopRequireDefault(_PasswordNagBar);\n\nvar _ServerLimitBar = require('./components/views/globals/ServerLimitBar');\n\nvar _ServerLimitBar2 = _interopRequireDefault(_ServerLimitBar);\n\nvar _UpdateCheckBar = require('./components/views/globals/UpdateCheckBar');\n\nvar _UpdateCheckBar2 = _interopRequireDefault(_UpdateCheckBar);\n\nvar _GroupInviteTile = require('./components/views/groups/GroupInviteTile');\n\nvar _GroupInviteTile2 = _interopRequireDefault(_GroupInviteTile);\n\nvar _GroupMemberInfo = require('./components/views/groups/GroupMemberInfo');\n\nvar _GroupMemberInfo2 = _interopRequireDefault(_GroupMemberInfo);\n\nvar _GroupMemberList = require('./components/views/groups/GroupMemberList');\n\nvar _GroupMemberList2 = _interopRequireDefault(_GroupMemberList);\n\nvar _GroupMemberTile = require('./components/views/groups/GroupMemberTile');\n\nvar _GroupMemberTile2 = _interopRequireDefault(_GroupMemberTile);\n\nvar _GroupPublicityToggle = require('./components/views/groups/GroupPublicityToggle');\n\nvar _GroupPublicityToggle2 = _interopRequireDefault(_GroupPublicityToggle);\n\nvar _GroupRoomInfo = require('./components/views/groups/GroupRoomInfo');\n\nvar _GroupRoomInfo2 = _interopRequireDefault(_GroupRoomInfo);\n\nvar _GroupRoomList = require('./components/views/groups/GroupRoomList');\n\nvar _GroupRoomList2 = _interopRequireDefault(_GroupRoomList);\n\nvar _GroupRoomTile = require('./components/views/groups/GroupRoomTile');\n\nvar _GroupRoomTile2 = _interopRequireDefault(_GroupRoomTile);\n\nvar _GroupTile = require('./components/views/groups/GroupTile');\n\nvar _GroupTile2 = _interopRequireDefault(_GroupTile);\n\nvar _GroupUserSettings = require('./components/views/groups/GroupUserSettings');\n\nvar _GroupUserSettings2 = _interopRequireDefault(_GroupUserSettings);\n\nvar _CaptchaForm = require('./components/views/login/CaptchaForm');\n\nvar _CaptchaForm2 = _interopRequireDefault(_CaptchaForm);\n\nvar _CasLogin = require('./components/views/login/CasLogin');\n\nvar _CasLogin2 = _interopRequireDefault(_CasLogin);\n\nvar _CountryDropdown = require('./components/views/login/CountryDropdown');\n\nvar _CountryDropdown2 = _interopRequireDefault(_CountryDropdown);\n\nvar _CustomServerDialog = require('./components/views/login/CustomServerDialog');\n\nvar _CustomServerDialog2 = _interopRequireDefault(_CustomServerDialog);\n\nvar _InteractiveAuthEntryComponents = require('./components/views/login/InteractiveAuthEntryComponents');\n\nvar _InteractiveAuthEntryComponents2 = _interopRequireDefault(_InteractiveAuthEntryComponents);\n\nvar _LoginFooter = require('./components/views/login/LoginFooter');\n\nvar _LoginFooter2 = _interopRequireDefault(_LoginFooter);\n\nvar _LoginHeader = require('./components/views/login/LoginHeader');\n\nvar _LoginHeader2 = _interopRequireDefault(_LoginHeader);\n\nvar _LoginPage = require('./components/views/login/LoginPage');\n\nvar _LoginPage2 = _interopRequireDefault(_LoginPage);\n\nvar _PasswordLogin = require('./components/views/login/PasswordLogin');\n\nvar _PasswordLogin2 = _interopRequireDefault(_PasswordLogin);\n\nvar _RegistrationForm = require('./components/views/login/RegistrationForm');\n\nvar _RegistrationForm2 = _interopRequireDefault(_RegistrationForm);\n\nvar _ServerConfig = require('./components/views/login/ServerConfig');\n\nvar _ServerConfig2 = _interopRequireDefault(_ServerConfig);\n\nvar _DateSeparator = require('./components/views/messages/DateSeparator');\n\nvar _DateSeparator2 = _interopRequireDefault(_DateSeparator);\n\nvar _MAudioBody = require('./components/views/messages/MAudioBody');\n\nvar _MAudioBody2 = _interopRequireDefault(_MAudioBody);\n\nvar _MFileBody = require('./components/views/messages/MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MImageBody = require('./components/views/messages/MImageBody');\n\nvar _MImageBody2 = _interopRequireDefault(_MImageBody);\n\nvar _MStickerBody = require('./components/views/messages/MStickerBody');\n\nvar _MStickerBody2 = _interopRequireDefault(_MStickerBody);\n\nvar _MVideoBody = require('./components/views/messages/MVideoBody');\n\nvar _MVideoBody2 = _interopRequireDefault(_MVideoBody);\n\nvar _MessageEvent = require('./components/views/messages/MessageEvent');\n\nvar _MessageEvent2 = _interopRequireDefault(_MessageEvent);\n\nvar _MessageTimestamp = require('./components/views/messages/MessageTimestamp');\n\nvar _MessageTimestamp2 = _interopRequireDefault(_MessageTimestamp);\n\nvar _RoomAvatarEvent = require('./components/views/messages/RoomAvatarEvent');\n\nvar _RoomAvatarEvent2 = _interopRequireDefault(_RoomAvatarEvent);\n\nvar _RoomCreate = require('./components/views/messages/RoomCreate');\n\nvar _RoomCreate2 = _interopRequireDefault(_RoomCreate);\n\nvar _SenderProfile = require('./components/views/messages/SenderProfile');\n\nvar _SenderProfile2 = _interopRequireDefault(_SenderProfile);\n\nvar _TextualBody = require('./components/views/messages/TextualBody');\n\nvar _TextualBody2 = _interopRequireDefault(_TextualBody);\n\nvar _TextualEvent = require('./components/views/messages/TextualEvent');\n\nvar _TextualEvent2 = _interopRequireDefault(_TextualEvent);\n\nvar _UnknownBody = require('./components/views/messages/UnknownBody');\n\nvar _UnknownBody2 = _interopRequireDefault(_UnknownBody);\n\nvar _AliasSettings = require('./components/views/room_settings/AliasSettings');\n\nvar _AliasSettings2 = _interopRequireDefault(_AliasSettings);\n\nvar _ColorSettings = require('./components/views/room_settings/ColorSettings');\n\nvar _ColorSettings2 = _interopRequireDefault(_ColorSettings);\n\nvar _RelatedGroupSettings = require('./components/views/room_settings/RelatedGroupSettings');\n\nvar _RelatedGroupSettings2 = _interopRequireDefault(_RelatedGroupSettings);\n\nvar _UrlPreviewSettings = require('./components/views/room_settings/UrlPreviewSettings');\n\nvar _UrlPreviewSettings2 = _interopRequireDefault(_UrlPreviewSettings);\n\nvar _AppsDrawer = require('./components/views/rooms/AppsDrawer');\n\nvar _AppsDrawer2 = _interopRequireDefault(_AppsDrawer);\n\nvar _Autocomplete = require('./components/views/rooms/Autocomplete');\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _AuxPanel = require('./components/views/rooms/AuxPanel');\n\nvar _AuxPanel2 = _interopRequireDefault(_AuxPanel);\n\nvar _DNDRoomTile = require('./components/views/rooms/DNDRoomTile');\n\nvar _DNDRoomTile2 = _interopRequireDefault(_DNDRoomTile);\n\nvar _EntityTile = require('./components/views/rooms/EntityTile');\n\nvar _EntityTile2 = _interopRequireDefault(_EntityTile);\n\nvar _EventTile = require('./components/views/rooms/EventTile');\n\nvar _EventTile2 = _interopRequireDefault(_EventTile);\n\nvar _ForwardMessage = require('./components/views/rooms/ForwardMessage');\n\nvar _ForwardMessage2 = _interopRequireDefault(_ForwardMessage);\n\nvar _LinkPreviewWidget = require('./components/views/rooms/LinkPreviewWidget');\n\nvar _LinkPreviewWidget2 = _interopRequireDefault(_LinkPreviewWidget);\n\nvar _MemberDeviceInfo = require('./components/views/rooms/MemberDeviceInfo');\n\nvar _MemberDeviceInfo2 = _interopRequireDefault(_MemberDeviceInfo);\n\nvar _MemberInfo = require('./components/views/rooms/MemberInfo');\n\nvar _MemberInfo2 = _interopRequireDefault(_MemberInfo);\n\nvar _MemberList = require('./components/views/rooms/MemberList');\n\nvar _MemberList2 = _interopRequireDefault(_MemberList);\n\nvar _MemberTile = require('./components/views/rooms/MemberTile');\n\nvar _MemberTile2 = _interopRequireDefault(_MemberTile);\n\nvar _MessageComposer = require('./components/views/rooms/MessageComposer');\n\nvar _MessageComposer2 = _interopRequireDefault(_MessageComposer);\n\nvar _MessageComposerInput = require('./components/views/rooms/MessageComposerInput');\n\nvar _MessageComposerInput2 = _interopRequireDefault(_MessageComposerInput);\n\nvar _PinnedEventTile = require('./components/views/rooms/PinnedEventTile');\n\nvar _PinnedEventTile2 = _interopRequireDefault(_PinnedEventTile);\n\nvar _PinnedEventsPanel = require('./components/views/rooms/PinnedEventsPanel');\n\nvar _PinnedEventsPanel2 = _interopRequireDefault(_PinnedEventsPanel);\n\nvar _PresenceLabel = require('./components/views/rooms/PresenceLabel');\n\nvar _PresenceLabel2 = _interopRequireDefault(_PresenceLabel);\n\nvar _ReadReceiptMarker = require('./components/views/rooms/ReadReceiptMarker');\n\nvar _ReadReceiptMarker2 = _interopRequireDefault(_ReadReceiptMarker);\n\nvar _ReplyPreview = require('./components/views/rooms/ReplyPreview');\n\nvar _ReplyPreview2 = _interopRequireDefault(_ReplyPreview);\n\nvar _RoomDetailList = require('./components/views/rooms/RoomDetailList');\n\nvar _RoomDetailList2 = _interopRequireDefault(_RoomDetailList);\n\nvar _RoomDetailRow = require('./components/views/rooms/RoomDetailRow');\n\nvar _RoomDetailRow2 = _interopRequireDefault(_RoomDetailRow);\n\nvar _RoomDropTarget = require('./components/views/rooms/RoomDropTarget');\n\nvar _RoomDropTarget2 = _interopRequireDefault(_RoomDropTarget);\n\nvar _RoomHeader = require('./components/views/rooms/RoomHeader');\n\nvar _RoomHeader2 = _interopRequireDefault(_RoomHeader);\n\nvar _RoomList = require('./components/views/rooms/RoomList');\n\nvar _RoomList2 = _interopRequireDefault(_RoomList);\n\nvar _RoomNameEditor = require('./components/views/rooms/RoomNameEditor');\n\nvar _RoomNameEditor2 = _interopRequireDefault(_RoomNameEditor);\n\nvar _RoomPreviewBar = require('./components/views/rooms/RoomPreviewBar');\n\nvar _RoomPreviewBar2 = _interopRequireDefault(_RoomPreviewBar);\n\nvar _RoomSettings = require('./components/views/rooms/RoomSettings');\n\nvar _RoomSettings2 = _interopRequireDefault(_RoomSettings);\n\nvar _RoomTile = require('./components/views/rooms/RoomTile');\n\nvar _RoomTile2 = _interopRequireDefault(_RoomTile);\n\nvar _RoomTooltip = require('./components/views/rooms/RoomTooltip');\n\nvar _RoomTooltip2 = _interopRequireDefault(_RoomTooltip);\n\nvar _RoomTopicEditor = require('./components/views/rooms/RoomTopicEditor');\n\nvar _RoomTopicEditor2 = _interopRequireDefault(_RoomTopicEditor);\n\nvar _RoomUpgradeWarningBar = require('./components/views/rooms/RoomUpgradeWarningBar');\n\nvar _RoomUpgradeWarningBar2 = _interopRequireDefault(_RoomUpgradeWarningBar);\n\nvar _SearchBar = require('./components/views/rooms/SearchBar');\n\nvar _SearchBar2 = _interopRequireDefault(_SearchBar);\n\nvar _SearchResultTile = require('./components/views/rooms/SearchResultTile');\n\nvar _SearchResultTile2 = _interopRequireDefault(_SearchResultTile);\n\nvar _SearchableEntityList = require('./components/views/rooms/SearchableEntityList');\n\nvar _SearchableEntityList2 = _interopRequireDefault(_SearchableEntityList);\n\nvar _SimpleRoomHeader = require('./components/views/rooms/SimpleRoomHeader');\n\nvar _SimpleRoomHeader2 = _interopRequireDefault(_SimpleRoomHeader);\n\nvar _Stickerpicker = require('./components/views/rooms/Stickerpicker');\n\nvar _Stickerpicker2 = _interopRequireDefault(_Stickerpicker);\n\nvar _TopUnreadMessagesBar = require('./components/views/rooms/TopUnreadMessagesBar');\n\nvar _TopUnreadMessagesBar2 = _interopRequireDefault(_TopUnreadMessagesBar);\n\nvar _UserTile = require('./components/views/rooms/UserTile');\n\nvar _UserTile2 = _interopRequireDefault(_UserTile);\n\nvar _AddPhoneNumber = require('./components/views/settings/AddPhoneNumber');\n\nvar _AddPhoneNumber2 = _interopRequireDefault(_AddPhoneNumber);\n\nvar _ChangeAvatar = require('./components/views/settings/ChangeAvatar');\n\nvar _ChangeAvatar2 = _interopRequireDefault(_ChangeAvatar);\n\nvar _ChangeDisplayName = require('./components/views/settings/ChangeDisplayName');\n\nvar _ChangeDisplayName2 = _interopRequireDefault(_ChangeDisplayName);\n\nvar _ChangePassword = require('./components/views/settings/ChangePassword');\n\nvar _ChangePassword2 = _interopRequireDefault(_ChangePassword);\n\nvar _DevicesPanel = require('./components/views/settings/DevicesPanel');\n\nvar _DevicesPanel2 = _interopRequireDefault(_DevicesPanel);\n\nvar _DevicesPanelEntry = require('./components/views/settings/DevicesPanelEntry');\n\nvar _DevicesPanelEntry2 = _interopRequireDefault(_DevicesPanelEntry);\n\nvar _EnableNotificationsButton = require('./components/views/settings/EnableNotificationsButton');\n\nvar _EnableNotificationsButton2 = _interopRequireDefault(_EnableNotificationsButton);\n\nvar _IntegrationsManager = require('./components/views/settings/IntegrationsManager');\n\nvar _IntegrationsManager2 = _interopRequireDefault(_IntegrationsManager);\n\nvar _Notifications = require('./components/views/settings/Notifications');\n\nvar _Notifications2 = _interopRequireDefault(_Notifications);\n\nvar _CallPreview = require('./components/views/voip/CallPreview');\n\nvar _CallPreview2 = _interopRequireDefault(_CallPreview);\n\nvar _CallView = require('./components/views/voip/CallView');\n\nvar _CallView2 = _interopRequireDefault(_CallView);\n\nvar _IncomingCallBox = require('./components/views/voip/IncomingCallBox');\n\nvar _IncomingCallBox2 = _interopRequireDefault(_IncomingCallBox);\n\nvar _VideoFeed = require('./components/views/voip/VideoFeed');\n\nvar _VideoFeed2 = _interopRequireDefault(_VideoFeed);\n\nvar _VideoView = require('./components/views/voip/VideoView');\n\nvar _VideoView2 = _interopRequireDefault(_VideoView);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * THIS FILE IS AUTO-GENERATED\n * You can edit it you like, but your changes will be overwritten,\n * so you'd just be trying to swim upstream like a salmon.\n * You are not a salmon.\n */\n\nvar components = {};\n\n_BottomLeftMenu2.default && (components['structures.BottomLeftMenu'] = _BottomLeftMenu2.default);\n\n_CompatibilityPage2.default && (components['structures.CompatibilityPage'] = _CompatibilityPage2.default);\n\n_ContextualMenu2.default && (components['structures.ContextualMenu'] = _ContextualMenu2.default);\n\n_CreateRoom2.default && (components['structures.CreateRoom'] = _CreateRoom2.default);\n\n_FilePanel2.default && (components['structures.FilePanel'] = _FilePanel2.default);\n\n_GroupView2.default && (components['structures.GroupView'] = _GroupView2.default);\n\n_HomePage2.default && (components['structures.HomePage'] = _HomePage2.default);\n\n_InteractiveAuth2.default && (components['structures.InteractiveAuth'] = _InteractiveAuth2.default);\n\n_LeftPanel2.default && (components['structures.LeftPanel'] = _LeftPanel2.default);\n\n_LoggedInView2.default && (components['structures.LoggedInView'] = _LoggedInView2.default);\n\n_LoginBox2.default && (components['structures.LoginBox'] = _LoginBox2.default);\n\n_MatrixChat2.default && (components['structures.MatrixChat'] = _MatrixChat2.default);\n\n_MessagePanel2.default && (components['structures.MessagePanel'] = _MessagePanel2.default);\n\n_MyGroups2.default && (components['structures.MyGroups'] = _MyGroups2.default);\n\n_NotificationPanel2.default && (components['structures.NotificationPanel'] = _NotificationPanel2.default);\n\n_RightPanel2.default && (components['structures.RightPanel'] = _RightPanel2.default);\n\n_RoomDirectory2.default && (components['structures.RoomDirectory'] = _RoomDirectory2.default);\n\n_RoomStatusBar2.default && (components['structures.RoomStatusBar'] = _RoomStatusBar2.default);\n\n_RoomSubList2.default && (components['structures.RoomSubList'] = _RoomSubList2.default);\n\n_RoomView2.default && (components['structures.RoomView'] = _RoomView2.default);\n\n_ScrollPanel2.default && (components['structures.ScrollPanel'] = _ScrollPanel2.default);\n\n_SearchBox2.default && (components['structures.SearchBox'] = _SearchBox2.default);\n\n_TagPanel2.default && (components['structures.TagPanel'] = _TagPanel2.default);\n\n_TimelinePanel2.default && (components['structures.TimelinePanel'] = _TimelinePanel2.default);\n\n_UploadBar2.default && (components['structures.UploadBar'] = _UploadBar2.default);\n\n_UserSettings2.default && (components['structures.UserSettings'] = _UserSettings2.default);\n\n_ViewSource2.default && (components['structures.ViewSource'] = _ViewSource2.default);\n\n_ForgotPassword2.default && (components['structures.login.ForgotPassword'] = _ForgotPassword2.default);\n\n_LanguageSelector2.default && (components['structures.login.LanguageSelector'] = _LanguageSelector2.default);\n\n_Login2.default && (components['structures.login.Login'] = _Login2.default);\n\n_PostRegistration2.default && (components['structures.login.PostRegistration'] = _PostRegistration2.default);\n\n_Registration2.default && (components['structures.login.Registration'] = _Registration2.default);\n\n_BaseAvatar2.default && (components['views.avatars.BaseAvatar'] = _BaseAvatar2.default);\n\n_GroupAvatar2.default && (components['views.avatars.GroupAvatar'] = _GroupAvatar2.default);\n\n_MemberAvatar2.default && (components['views.avatars.MemberAvatar'] = _MemberAvatar2.default);\n\n_RoomAvatar2.default && (components['views.avatars.RoomAvatar'] = _RoomAvatar2.default);\n\n_GenericElementContextMenu2.default && (components['views.context_menus.GenericElementContextMenu'] = _GenericElementContextMenu2.default);\n\n_GenericTextContextMenu2.default && (components['views.context_menus.GenericTextContextMenu'] = _GenericTextContextMenu2.default);\n\n_GroupInviteTileContextMenu2.default && (components['views.context_menus.GroupInviteTileContextMenu'] = _GroupInviteTileContextMenu2.default);\n\n_MessageContextMenu2.default && (components['views.context_menus.MessageContextMenu'] = _MessageContextMenu2.default);\n\n_RoomTileContextMenu2.default && (components['views.context_menus.RoomTileContextMenu'] = _RoomTileContextMenu2.default);\n\n_TagTileContextMenu2.default && (components['views.context_menus.TagTileContextMenu'] = _TagTileContextMenu2.default);\n\n_CreateRoomButton2.default && (components['views.create_room.CreateRoomButton'] = _CreateRoomButton2.default);\n\n_Presets2.default && (components['views.create_room.Presets'] = _Presets2.default);\n\n_RoomAlias2.default && (components['views.create_room.RoomAlias'] = _RoomAlias2.default);\n\n_AddressPickerDialog2.default && (components['views.dialogs.AddressPickerDialog'] = _AddressPickerDialog2.default);\n\n_BaseDialog2.default && (components['views.dialogs.BaseDialog'] = _BaseDialog2.default);\n\n_BugReportDialog2.default && (components['views.dialogs.BugReportDialog'] = _BugReportDialog2.default);\n\n_ChangelogDialog2.default && (components['views.dialogs.ChangelogDialog'] = _ChangelogDialog2.default);\n\n_ChatCreateOrReuseDialog2.default && (components['views.dialogs.ChatCreateOrReuseDialog'] = _ChatCreateOrReuseDialog2.default);\n\n_ConfirmRedactDialog2.default && (components['views.dialogs.ConfirmRedactDialog'] = _ConfirmRedactDialog2.default);\n\n_ConfirmUserActionDialog2.default && (components['views.dialogs.ConfirmUserActionDialog'] = _ConfirmUserActionDialog2.default);\n\n_CreateGroupDialog2.default && (components['views.dialogs.CreateGroupDialog'] = _CreateGroupDialog2.default);\n\n_CreateRoomDialog2.default && (components['views.dialogs.CreateRoomDialog'] = _CreateRoomDialog2.default);\n\n_DeactivateAccountDialog2.default && (components['views.dialogs.DeactivateAccountDialog'] = _DeactivateAccountDialog2.default);\n\n_DeviceVerifyDialog2.default && (components['views.dialogs.DeviceVerifyDialog'] = _DeviceVerifyDialog2.default);\n\n_DevtoolsDialog2.default && (components['views.dialogs.DevtoolsDialog'] = _DevtoolsDialog2.default);\n\n_ErrorDialog2.default && (components['views.dialogs.ErrorDialog'] = _ErrorDialog2.default);\n\n_InteractiveAuthDialog2.default && (components['views.dialogs.InteractiveAuthDialog'] = _InteractiveAuthDialog2.default);\n\n_KeyShareDialog2.default && (components['views.dialogs.KeyShareDialog'] = _KeyShareDialog2.default);\n\n_LazyLoadingDisabledDialog2.default && (components['views.dialogs.LazyLoadingDisabledDialog'] = _LazyLoadingDisabledDialog2.default);\n\n_LazyLoadingResyncDialog2.default && (components['views.dialogs.LazyLoadingResyncDialog'] = _LazyLoadingResyncDialog2.default);\n\n_QuestionDialog2.default && (components['views.dialogs.QuestionDialog'] = _QuestionDialog2.default);\n\n_RoomUpgradeDialog2.default && (components['views.dialogs.RoomUpgradeDialog'] = _RoomUpgradeDialog2.default);\n\n_SessionRestoreErrorDialog2.default && (components['views.dialogs.SessionRestoreErrorDialog'] = _SessionRestoreErrorDialog2.default);\n\n_SetEmailDialog2.default && (components['views.dialogs.SetEmailDialog'] = _SetEmailDialog2.default);\n\n_SetMxIdDialog2.default && (components['views.dialogs.SetMxIdDialog'] = _SetMxIdDialog2.default);\n\n_SetPasswordDialog2.default && (components['views.dialogs.SetPasswordDialog'] = _SetPasswordDialog2.default);\n\n_ShareDialog2.default && (components['views.dialogs.ShareDialog'] = _ShareDialog2.default);\n\n_TextInputDialog2.default && (components['views.dialogs.TextInputDialog'] = _TextInputDialog2.default);\n\n_UnknownDeviceDialog2.default && (components['views.dialogs.UnknownDeviceDialog'] = _UnknownDeviceDialog2.default);\n\n_NetworkDropdown2.default && (components['views.directory.NetworkDropdown'] = _NetworkDropdown2.default);\n\n_AccessibleButton2.default && (components['views.elements.AccessibleButton'] = _AccessibleButton2.default);\n\n_ActionButton2.default && (components['views.elements.ActionButton'] = _ActionButton2.default);\n\n_AddressSelector2.default && (components['views.elements.AddressSelector'] = _AddressSelector2.default);\n\n_AddressTile2.default && (components['views.elements.AddressTile'] = _AddressTile2.default);\n\n_AppPermission2.default && (components['views.elements.AppPermission'] = _AppPermission2.default);\n\n_AppTile2.default && (components['views.elements.AppTile'] = _AppTile2.default);\n\n_AppWarning2.default && (components['views.elements.AppWarning'] = _AppWarning2.default);\n\n_CreateRoomButton4.default && (components['views.elements.CreateRoomButton'] = _CreateRoomButton4.default);\n\n_DNDTagTile2.default && (components['views.elements.DNDTagTile'] = _DNDTagTile2.default);\n\n_DeviceVerifyButtons2.default && (components['views.elements.DeviceVerifyButtons'] = _DeviceVerifyButtons2.default);\n\n_DialogButtons2.default && (components['views.elements.DialogButtons'] = _DialogButtons2.default);\n\n_DirectorySearchBox2.default && (components['views.elements.DirectorySearchBox'] = _DirectorySearchBox2.default);\n\n_Dropdown2.default && (components['views.elements.Dropdown'] = _Dropdown2.default);\n\n_EditableItemList2.default && (components['views.elements.EditableItemList'] = _EditableItemList2.default);\n\n_EditableText2.default && (components['views.elements.EditableText'] = _EditableText2.default);\n\n_EditableTextContainer2.default && (components['views.elements.EditableTextContainer'] = _EditableTextContainer2.default);\n\n_EmojiText2.default && (components['views.elements.EmojiText'] = _EmojiText2.default);\n\n_Flair2.default && (components['views.elements.Flair'] = _Flair2.default);\n\n_GeminiScrollbarWrapper2.default && (components['views.elements.GeminiScrollbarWrapper'] = _GeminiScrollbarWrapper2.default);\n\n_GroupsButton2.default && (components['views.elements.GroupsButton'] = _GroupsButton2.default);\n\n_HomeButton2.default && (components['views.elements.HomeButton'] = _HomeButton2.default);\n\n_ImageView2.default && (components['views.elements.ImageView'] = _ImageView2.default);\n\n_InlineSpinner2.default && (components['views.elements.InlineSpinner'] = _InlineSpinner2.default);\n\n_LanguageDropdown2.default && (components['views.elements.LanguageDropdown'] = _LanguageDropdown2.default);\n\n_ManageIntegsButton2.default && (components['views.elements.ManageIntegsButton'] = _ManageIntegsButton2.default);\n\n_MemberEventListSummary2.default && (components['views.elements.MemberEventListSummary'] = _MemberEventListSummary2.default);\n\n_MessageSpinner2.default && (components['views.elements.MessageSpinner'] = _MessageSpinner2.default);\n\n_PersistedElement2.default && (components['views.elements.PersistedElement'] = _PersistedElement2.default);\n\n_PersistentApp2.default && (components['views.elements.PersistentApp'] = _PersistentApp2.default);\n\n_Pill2.default && (components['views.elements.Pill'] = _Pill2.default);\n\n_PowerSelector2.default && (components['views.elements.PowerSelector'] = _PowerSelector2.default);\n\n_ProgressBar2.default && (components['views.elements.ProgressBar'] = _ProgressBar2.default);\n\n_ReplyThread2.default && (components['views.elements.ReplyThread'] = _ReplyThread2.default);\n\n_RoomDirectoryButton2.default && (components['views.elements.RoomDirectoryButton'] = _RoomDirectoryButton2.default);\n\n_SettingsButton2.default && (components['views.elements.SettingsButton'] = _SettingsButton2.default);\n\n_SettingsFlag2.default && (components['views.elements.SettingsFlag'] = _SettingsFlag2.default);\n\n_Spinner2.default && (components['views.elements.Spinner'] = _Spinner2.default);\n\n_StartChatButton2.default && (components['views.elements.StartChatButton'] = _StartChatButton2.default);\n\n_SyntaxHighlight2.default && (components['views.elements.SyntaxHighlight'] = _SyntaxHighlight2.default);\n\n_TagTile2.default && (components['views.elements.TagTile'] = _TagTile2.default);\n\n_TintableSvg2.default && (components['views.elements.TintableSvg'] = _TintableSvg2.default);\n\n_TintableSvgButton2.default && (components['views.elements.TintableSvgButton'] = _TintableSvgButton2.default);\n\n_ToolTipButton2.default && (components['views.elements.ToolTipButton'] = _ToolTipButton2.default);\n\n_TruncatedList2.default && (components['views.elements.TruncatedList'] = _TruncatedList2.default);\n\n_UserSelector2.default && (components['views.elements.UserSelector'] = _UserSelector2.default);\n\n_CookieBar2.default && (components['views.globals.CookieBar'] = _CookieBar2.default);\n\n_MatrixToolbar2.default && (components['views.globals.MatrixToolbar'] = _MatrixToolbar2.default);\n\n_NewVersionBar2.default && (components['views.globals.NewVersionBar'] = _NewVersionBar2.default);\n\n_PasswordNagBar2.default && (components['views.globals.PasswordNagBar'] = _PasswordNagBar2.default);\n\n_ServerLimitBar2.default && (components['views.globals.ServerLimitBar'] = _ServerLimitBar2.default);\n\n_UpdateCheckBar2.default && (components['views.globals.UpdateCheckBar'] = _UpdateCheckBar2.default);\n\n_GroupInviteTile2.default && (components['views.groups.GroupInviteTile'] = _GroupInviteTile2.default);\n\n_GroupMemberInfo2.default && (components['views.groups.GroupMemberInfo'] = _GroupMemberInfo2.default);\n\n_GroupMemberList2.default && (components['views.groups.GroupMemberList'] = _GroupMemberList2.default);\n\n_GroupMemberTile2.default && (components['views.groups.GroupMemberTile'] = _GroupMemberTile2.default);\n\n_GroupPublicityToggle2.default && (components['views.groups.GroupPublicityToggle'] = _GroupPublicityToggle2.default);\n\n_GroupRoomInfo2.default && (components['views.groups.GroupRoomInfo'] = _GroupRoomInfo2.default);\n\n_GroupRoomList2.default && (components['views.groups.GroupRoomList'] = _GroupRoomList2.default);\n\n_GroupRoomTile2.default && (components['views.groups.GroupRoomTile'] = _GroupRoomTile2.default);\n\n_GroupTile2.default && (components['views.groups.GroupTile'] = _GroupTile2.default);\n\n_GroupUserSettings2.default && (components['views.groups.GroupUserSettings'] = _GroupUserSettings2.default);\n\n_CaptchaForm2.default && (components['views.login.CaptchaForm'] = _CaptchaForm2.default);\n\n_CasLogin2.default && (components['views.login.CasLogin'] = _CasLogin2.default);\n\n_CountryDropdown2.default && (components['views.login.CountryDropdown'] = _CountryDropdown2.default);\n\n_CustomServerDialog2.default && (components['views.login.CustomServerDialog'] = _CustomServerDialog2.default);\n\n_InteractiveAuthEntryComponents2.default && (components['views.login.InteractiveAuthEntryComponents'] = _InteractiveAuthEntryComponents2.default);\n\n_LoginFooter2.default && (components['views.login.LoginFooter'] = _LoginFooter2.default);\n\n_LoginHeader2.default && (components['views.login.LoginHeader'] = _LoginHeader2.default);\n\n_LoginPage2.default && (components['views.login.LoginPage'] = _LoginPage2.default);\n\n_PasswordLogin2.default && (components['views.login.PasswordLogin'] = _PasswordLogin2.default);\n\n_RegistrationForm2.default && (components['views.login.RegistrationForm'] = _RegistrationForm2.default);\n\n_ServerConfig2.default && (components['views.login.ServerConfig'] = _ServerConfig2.default);\n\n_DateSeparator2.default && (components['views.messages.DateSeparator'] = _DateSeparator2.default);\n\n_MAudioBody2.default && (components['views.messages.MAudioBody'] = _MAudioBody2.default);\n\n_MFileBody2.default && (components['views.messages.MFileBody'] = _MFileBody2.default);\n\n_MImageBody2.default && (components['views.messages.MImageBody'] = _MImageBody2.default);\n\n_MStickerBody2.default && (components['views.messages.MStickerBody'] = _MStickerBody2.default);\n\n_MVideoBody2.default && (components['views.messages.MVideoBody'] = _MVideoBody2.default);\n\n_MessageEvent2.default && (components['views.messages.MessageEvent'] = _MessageEvent2.default);\n\n_MessageTimestamp2.default && (components['views.messages.MessageTimestamp'] = _MessageTimestamp2.default);\n\n_RoomAvatarEvent2.default && (components['views.messages.RoomAvatarEvent'] = _RoomAvatarEvent2.default);\n\n_RoomCreate2.default && (components['views.messages.RoomCreate'] = _RoomCreate2.default);\n\n_SenderProfile2.default && (components['views.messages.SenderProfile'] = _SenderProfile2.default);\n\n_TextualBody2.default && (components['views.messages.TextualBody'] = _TextualBody2.default);\n\n_TextualEvent2.default && (components['views.messages.TextualEvent'] = _TextualEvent2.default);\n\n_UnknownBody2.default && (components['views.messages.UnknownBody'] = _UnknownBody2.default);\n\n_AliasSettings2.default && (components['views.room_settings.AliasSettings'] = _AliasSettings2.default);\n\n_ColorSettings2.default && (components['views.room_settings.ColorSettings'] = _ColorSettings2.default);\n\n_RelatedGroupSettings2.default && (components['views.room_settings.RelatedGroupSettings'] = _RelatedGroupSettings2.default);\n\n_UrlPreviewSettings2.default && (components['views.room_settings.UrlPreviewSettings'] = _UrlPreviewSettings2.default);\n\n_AppsDrawer2.default && (components['views.rooms.AppsDrawer'] = _AppsDrawer2.default);\n\n_Autocomplete2.default && (components['views.rooms.Autocomplete'] = _Autocomplete2.default);\n\n_AuxPanel2.default && (components['views.rooms.AuxPanel'] = _AuxPanel2.default);\n\n_DNDRoomTile2.default && (components['views.rooms.DNDRoomTile'] = _DNDRoomTile2.default);\n\n_EntityTile2.default && (components['views.rooms.EntityTile'] = _EntityTile2.default);\n\n_EventTile2.default && (components['views.rooms.EventTile'] = _EventTile2.default);\n\n_ForwardMessage2.default && (components['views.rooms.ForwardMessage'] = _ForwardMessage2.default);\n\n_LinkPreviewWidget2.default && (components['views.rooms.LinkPreviewWidget'] = _LinkPreviewWidget2.default);\n\n_MemberDeviceInfo2.default && (components['views.rooms.MemberDeviceInfo'] = _MemberDeviceInfo2.default);\n\n_MemberInfo2.default && (components['views.rooms.MemberInfo'] = _MemberInfo2.default);\n\n_MemberList2.default && (components['views.rooms.MemberList'] = _MemberList2.default);\n\n_MemberTile2.default && (components['views.rooms.MemberTile'] = _MemberTile2.default);\n\n_MessageComposer2.default && (components['views.rooms.MessageComposer'] = _MessageComposer2.default);\n\n_MessageComposerInput2.default && (components['views.rooms.MessageComposerInput'] = _MessageComposerInput2.default);\n\n_PinnedEventTile2.default && (components['views.rooms.PinnedEventTile'] = _PinnedEventTile2.default);\n\n_PinnedEventsPanel2.default && (components['views.rooms.PinnedEventsPanel'] = _PinnedEventsPanel2.default);\n\n_PresenceLabel2.default && (components['views.rooms.PresenceLabel'] = _PresenceLabel2.default);\n\n_ReadReceiptMarker2.default && (components['views.rooms.ReadReceiptMarker'] = _ReadReceiptMarker2.default);\n\n_ReplyPreview2.default && (components['views.rooms.ReplyPreview'] = _ReplyPreview2.default);\n\n_RoomDetailList2.default && (components['views.rooms.RoomDetailList'] = _RoomDetailList2.default);\n\n_RoomDetailRow2.default && (components['views.rooms.RoomDetailRow'] = _RoomDetailRow2.default);\n\n_RoomDropTarget2.default && (components['views.rooms.RoomDropTarget'] = _RoomDropTarget2.default);\n\n_RoomHeader2.default && (components['views.rooms.RoomHeader'] = _RoomHeader2.default);\n\n_RoomList2.default && (components['views.rooms.RoomList'] = _RoomList2.default);\n\n_RoomNameEditor2.default && (components['views.rooms.RoomNameEditor'] = _RoomNameEditor2.default);\n\n_RoomPreviewBar2.default && (components['views.rooms.RoomPreviewBar'] = _RoomPreviewBar2.default);\n\n_RoomSettings2.default && (components['views.rooms.RoomSettings'] = _RoomSettings2.default);\n\n_RoomTile2.default && (components['views.rooms.RoomTile'] = _RoomTile2.default);\n\n_RoomTooltip2.default && (components['views.rooms.RoomTooltip'] = _RoomTooltip2.default);\n\n_RoomTopicEditor2.default && (components['views.rooms.RoomTopicEditor'] = _RoomTopicEditor2.default);\n\n_RoomUpgradeWarningBar2.default && (components['views.rooms.RoomUpgradeWarningBar'] = _RoomUpgradeWarningBar2.default);\n\n_SearchBar2.default && (components['views.rooms.SearchBar'] = _SearchBar2.default);\n\n_SearchResultTile2.default && (components['views.rooms.SearchResultTile'] = _SearchResultTile2.default);\n\n_SearchableEntityList2.default && (components['views.rooms.SearchableEntityList'] = _SearchableEntityList2.default);\n\n_SimpleRoomHeader2.default && (components['views.rooms.SimpleRoomHeader'] = _SimpleRoomHeader2.default);\n\n_Stickerpicker2.default && (components['views.rooms.Stickerpicker'] = _Stickerpicker2.default);\n\n_TopUnreadMessagesBar2.default && (components['views.rooms.TopUnreadMessagesBar'] = _TopUnreadMessagesBar2.default);\n\n_UserTile2.default && (components['views.rooms.UserTile'] = _UserTile2.default);\n\n_AddPhoneNumber2.default && (components['views.settings.AddPhoneNumber'] = _AddPhoneNumber2.default);\n\n_ChangeAvatar2.default && (components['views.settings.ChangeAvatar'] = _ChangeAvatar2.default);\n\n_ChangeDisplayName2.default && (components['views.settings.ChangeDisplayName'] = _ChangeDisplayName2.default);\n\n_ChangePassword2.default && (components['views.settings.ChangePassword'] = _ChangePassword2.default);\n\n_DevicesPanel2.default && (components['views.settings.DevicesPanel'] = _DevicesPanel2.default);\n\n_DevicesPanelEntry2.default && (components['views.settings.DevicesPanelEntry'] = _DevicesPanelEntry2.default);\n\n_EnableNotificationsButton2.default && (components['views.settings.EnableNotificationsButton'] = _EnableNotificationsButton2.default);\n\n_IntegrationsManager2.default && (components['views.settings.IntegrationsManager'] = _IntegrationsManager2.default);\n\n_Notifications2.default && (components['views.settings.Notifications'] = _Notifications2.default);\n\n_CallPreview2.default && (components['views.voip.CallPreview'] = _CallPreview2.default);\n\n_CallView2.default && (components['views.voip.CallView'] = _CallView2.default);\n\n_IncomingCallBox2.default && (components['views.voip.IncomingCallBox'] = _IncomingCallBox2.default);\n\n_VideoFeed2.default && (components['views.voip.VideoFeed'] = _VideoFeed2.default);\n\n_VideoView2.default && (components['views.voip.VideoView'] = _VideoView2.default);\nexports.components = components;\n//# sourceMappingURL=component-index.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nrequire('velocity-vector/velocity.ui');\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CALLOUT_ANIM_DURATION = 1000; /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = _react2.default.createClass({\n displayName: 'BottomLeftMenu',\n\n propTypes: {\n collapsed: _react2.default.PropTypes.bool.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n directoryHover: false,\n roomsHover: false,\n homeHover: false,\n peopleHover: false,\n settingsHover: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._dispatcherRef = _dispatcher2.default.register(this.onAction);\n this._peopleButton = null;\n this._directoryButton = null;\n this._createRoomButton = null;\n this._lastCallouts = {};\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this._dispatcherRef);\n },\n\n // Room events\n onDirectoryClick: function onDirectoryClick() {\n _dispatcher2.default.dispatch({ action: 'view_room_directory' });\n },\n\n onDirectoryMouseEnter: function onDirectoryMouseEnter() {\n this.setState({ directoryHover: true });\n },\n\n onDirectoryMouseLeave: function onDirectoryMouseLeave() {\n this.setState({ directoryHover: false });\n },\n\n onRoomsClick: function onRoomsClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_room' });\n },\n\n onRoomsMouseEnter: function onRoomsMouseEnter() {\n this.setState({ roomsHover: true });\n },\n\n onRoomsMouseLeave: function onRoomsMouseLeave() {\n this.setState({ roomsHover: false });\n },\n\n // Home button events\n onHomeClick: function onHomeClick() {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n },\n\n onHomeMouseEnter: function onHomeMouseEnter() {\n this.setState({ homeHover: true });\n },\n\n onHomeMouseLeave: function onHomeMouseLeave() {\n this.setState({ homeHover: false });\n },\n\n // People events\n onPeopleClick: function onPeopleClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_chat' });\n },\n\n onPeopleMouseEnter: function onPeopleMouseEnter() {\n this.setState({ peopleHover: true });\n },\n\n onPeopleMouseLeave: function onPeopleMouseLeave() {\n this.setState({ peopleHover: false });\n },\n\n // Settings events\n onSettingsClick: function onSettingsClick() {\n _dispatcher2.default.dispatch({ action: 'view_user_settings' });\n },\n\n onSettingsMouseEnter: function onSettingsMouseEnter() {\n this.setState({ settingsHover: true });\n },\n\n onSettingsMouseLeave: function onSettingsMouseLeave() {\n this.setState({ settingsHover: false });\n },\n\n onAction: function onAction(payload) {\n var calloutElement = void 0;\n switch (payload.action) {\n // Incoming instruction: dance!\n case 'callout_start_chat':\n calloutElement = this._peopleButton;\n break;\n case 'callout_room_directory':\n calloutElement = this._directoryButton;\n break;\n case 'callout_create_room':\n calloutElement = this._createRoomButton;\n break;\n }\n if (calloutElement) {\n var lastCallout = this._lastCallouts[payload.action];\n var now = Date.now();\n if (lastCallout == undefined || lastCallout < now - CALLOUT_ANIM_DURATION) {\n this._lastCallouts[payload.action] = now;\n (0, _velocityVector2.default)(_reactDom2.default.findDOMNode(calloutElement), \"callout.bounce\", CALLOUT_ANIM_DURATION);\n }\n }\n },\n\n // Get the label/tooltip to show\n getLabel: function getLabel(label, show) {\n if (show) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n return _react2.default.createElement(RoomTooltip, { className: 'mx_BottomLeftMenu_tooltip', label: label });\n }\n },\n\n _collectPeopleButton: function _collectPeopleButton(e) {\n this._peopleButton = e;\n },\n\n _collectDirectoryButton: function _collectDirectoryButton(e) {\n this._directoryButton = e;\n },\n\n _collectCreateRoomButton: function _collectCreateRoomButton(e) {\n this._createRoomButton = e;\n },\n\n render: function render() {\n var HomeButton = _index2.default.getComponent('elements.HomeButton');\n var StartChatButton = _index2.default.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = _index2.default.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = _index2.default.getComponent('elements.CreateRoomButton');\n var SettingsButton = _index2.default.getComponent('elements.SettingsButton');\n var GroupsButton = _index2.default.getComponent('elements.GroupsButton');\n\n var groupsButton = _SettingsStore2.default.getValue(\"TagPanel.disableTagPanel\") ? _react2.default.createElement(GroupsButton, { tooltip: true }) : null;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_BottomLeftMenu' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_BottomLeftMenu_options' },\n _react2.default.createElement(HomeButton, { tooltip: true }),\n _react2.default.createElement(\n 'div',\n { ref: this._collectPeopleButton },\n _react2.default.createElement(StartChatButton, { tooltip: true })\n ),\n _react2.default.createElement(\n 'div',\n { ref: this._collectDirectoryButton },\n _react2.default.createElement(RoomDirectoryButton, { tooltip: true })\n ),\n _react2.default.createElement(\n 'div',\n { ref: this._collectCreateRoomButton },\n _react2.default.createElement(CreateRoomButton, { tooltip: true })\n ),\n groupsButton,\n _react2.default.createElement(\n 'span',\n { className: 'mx_BottomLeftMenu_settings' },\n _react2.default.createElement(SettingsButton, { tooltip: true })\n )\n )\n );\n }\n});\n//# sourceMappingURL=BottomLeftMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'CompatibilityPage',\n propTypes: {\n onAccept: React.PropTypes.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onAccept: function onAccept() {} // NOP\n };\n },\n\n onAccept: function onAccept() {\n this.props.onAccept();\n },\n\n render: function render() {\n\n return React.createElement(\n 'div',\n { className: 'mx_CompatibilityPage' },\n React.createElement(\n 'div',\n { className: 'mx_CompatibilityPage_box' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Sorry, your browser is <b>not</b> able to run Riot.\", {}, { 'b': function b(sub) {\n return React.createElement(\n 'b',\n null,\n sub\n );\n } }),\n ' '\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Riot uses many advanced browser features, some of which are not available or experimental in your current browser.\")\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Please install <chromeLink>Chrome</chromeLink> or <firefoxLink>Firefox</firefoxLink> for the best experience.', {}, {\n 'chromeLink': function chromeLink(sub) {\n return React.createElement(\n 'a',\n { href: 'https://www.google.com/chrome' },\n sub\n );\n },\n 'firefoxLink': function firefoxLink(sub) {\n return React.createElement(\n 'a',\n { href: 'https://getfirefox.com' },\n sub\n );\n }\n }),\n (0, _languageHandler._t)('<safariLink>Safari</safariLink> and <operaLink>Opera</operaLink> work too.', {}, {\n 'safariLink': function safariLink(sub) {\n return React.createElement(\n 'a',\n { href: 'http://apple.com/safari' },\n sub\n );\n },\n 'operaLink': function operaLink(sub) {\n return React.createElement(\n 'a',\n { href: 'http://opera.com' },\n sub\n );\n }\n })\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!\")\n ),\n React.createElement(\n 'button',\n { onClick: this.onAccept },\n (0, _languageHandler._t)(\"I understand the risks and wish to continue\")\n )\n )\n );\n }\n});\n//# sourceMappingURL=CompatibilityPage.js.map","require('../modules/web.immediate');\nmodule.exports = require('../modules/_core').setImmediate;\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PresetValues = {\n PrivateChat: \"private_chat\",\n PublicChat: \"public_chat\",\n Custom: \"custom\"\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CreateRoom',\n\n propTypes: {\n onRoomCreated: _propTypes2.default.func,\n collapsedRhs: _propTypes2.default.bool\n },\n\n phases: {\n CONFIG: \"CONFIG\", // We're waiting for user to configure and hit create.\n CREATING: \"CREATING\", // We're sending the request.\n CREATED: \"CREATED\", // We successfully created the room.\n ERROR: \"ERROR\" // There was an error while trying to create room.\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onRoomCreated: function onRoomCreated() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.phases.CONFIG,\n error_string: \"\",\n is_private: true,\n share_history: false,\n default_preset: PresetValues.PrivateChat,\n topic: '',\n room_name: '',\n invited_users: []\n };\n },\n\n onCreateRoom: function onCreateRoom() {\n var options = {};\n\n if (this.state.room_name) {\n options.name = this.state.room_name;\n }\n\n if (this.state.topic) {\n options.topic = this.state.topic;\n }\n\n if (this.state.preset) {\n if (this.state.preset != PresetValues.Custom) {\n options.preset = this.state.preset;\n } else {\n options.initial_state = [{\n type: \"m.room.join_rules\",\n content: {\n \"join_rule\": this.state.is_private ? \"invite\" : \"public\"\n }\n }, {\n type: \"m.room.history_visibility\",\n content: {\n \"history_visibility\": this.state.share_history ? \"shared\" : \"invited\"\n }\n }];\n }\n }\n\n options.invite = this.state.invited_users;\n\n var alias = this.getAliasLocalpart();\n if (alias) {\n options.room_alias_name = alias;\n }\n\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) {\n // TODO: Error.\n console.error(\"Cannot create room: No matrix client.\");\n return;\n }\n\n var deferred = cli.createRoom(options);\n\n if (this.state.encrypt) {\n // TODO\n }\n\n this.setState({\n phase: this.phases.CREATING\n });\n\n var self = this;\n\n deferred.then(function (resp) {\n self.setState({\n phase: self.phases.CREATED\n });\n self.props.onRoomCreated(resp.room_id);\n }, function (err) {\n self.setState({\n phase: self.phases.ERROR,\n error_string: err.toString()\n });\n });\n },\n\n getPreset: function getPreset() {\n return this.refs.presets.getPreset();\n },\n\n getName: function getName() {\n return this.refs.name_textbox.getName();\n },\n\n getTopic: function getTopic() {\n return this.refs.topic.getTopic();\n },\n\n getAliasLocalpart: function getAliasLocalpart() {\n return this.refs.alias.getAliasLocalpart();\n },\n\n getInvitedUsers: function getInvitedUsers() {\n return this.refs.user_selector.getUserIds();\n },\n\n onPresetChanged: function onPresetChanged(preset) {\n switch (preset) {\n case PresetValues.PrivateChat:\n this.setState({\n preset: preset,\n is_private: true,\n share_history: false\n });\n break;\n case PresetValues.PublicChat:\n this.setState({\n preset: preset,\n is_private: false,\n share_history: true\n });\n break;\n case PresetValues.Custom:\n this.setState({\n preset: preset\n });\n break;\n }\n },\n\n onPrivateChanged: function onPrivateChanged(ev) {\n this.setState({\n preset: PresetValues.Custom,\n is_private: ev.target.checked\n });\n },\n\n onShareHistoryChanged: function onShareHistoryChanged(ev) {\n this.setState({\n preset: PresetValues.Custom,\n share_history: ev.target.checked\n });\n },\n\n onTopicChange: function onTopicChange(ev) {\n this.setState({\n topic: ev.target.value\n });\n },\n\n onNameChange: function onNameChange(ev) {\n this.setState({\n room_name: ev.target.value\n });\n },\n\n onInviteChanged: function onInviteChanged(invited_users) {\n this.setState({\n invited_users: invited_users\n });\n },\n\n onAliasChanged: function onAliasChanged(alias) {\n this.setState({\n alias: alias\n });\n },\n\n onEncryptChanged: function onEncryptChanged(ev) {\n this.setState({\n encrypt: ev.target.checked\n });\n },\n\n render: function render() {\n var curr_phase = this.state.phase;\n if (curr_phase == this.phases.CREATING) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else {\n var error_box = \"\";\n if (curr_phase == this.phases.ERROR) {\n error_box = _react2.default.createElement(\n 'div',\n { className: 'mx_Error' },\n (0, _languageHandler._t)('An error occurred: %(error_string)s', { error_string: this.state.error_string })\n );\n }\n\n var CreateRoomButton = _index2.default.getComponent(\"create_room.CreateRoomButton\");\n var RoomAlias = _index2.default.getComponent(\"create_room.RoomAlias\");\n var Presets = _index2.default.getComponent(\"create_room.Presets\");\n var UserSelector = _index2.default.getComponent(\"elements.UserSelector\");\n var SimpleRoomHeader = _index2.default.getComponent(\"rooms.SimpleRoomHeader\");\n\n var domain = _MatrixClientPeg2.default.get().getDomain();\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom' },\n _react2.default.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)(\"Create Room\"), collapsedRhs: this.props.collapsedRhs }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom_body' },\n _react2.default.createElement('input', { type: 'text', ref: 'room_name', value: this.state.room_name, onChange: this.onNameChange, placeholder: (0, _languageHandler._t)('Name') }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement('textarea', { className: 'mx_CreateRoom_description', ref: 'topic', value: this.state.topic, onChange: this.onTopicChange, placeholder: (0, _languageHandler._t)('Topic') }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(RoomAlias, { ref: 'alias', alias: this.state.alias, homeserver: domain, onChange: this.onAliasChanged }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(UserSelector, { ref: 'user_selector', selected_users: this.state.invited_users, onChange: this.onInviteChanged }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(Presets, { ref: 'presets', onChange: this.onPresetChanged, preset: this.state.preset }),\n ' ',\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'is_private', checked: this.state.is_private, onChange: this.onPrivateChanged }),\n (0, _languageHandler._t)('Make this room private')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'share_history', checked: this.state.share_history, onChange: this.onShareHistoryChanged }),\n (0, _languageHandler._t)('Share message history with new users')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoom_encrypt' },\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'encrypt', checked: this.state.encrypt, onChange: this.onEncryptChanged }),\n (0, _languageHandler._t)('Encrypt room')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(CreateRoomButton, { onCreateRoom: this.onCreateRoom }),\n ' ',\n _react2.default.createElement('br', null)\n ),\n error_box\n )\n );\n }\n }\n});\n//# sourceMappingURL=CreateRoom.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * Component which shows the filtered file using a TimelinePanel\n */\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FilePanel = _react2.default.createClass({\n displayName: 'FilePanel',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n timelineSet: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.updateTimelineSet(this.props.roomId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.roomId !== this.props.roomId) {\n // otherwise we race between re-rendering the TimelinePanel and setting the new timelineSet.\n //\n // FIXME: this race only happens because of the promise returned by getOrCreateFilter().\n // We should only need to create the containsUrl filter once per login session, so in practice\n // it shouldn't be being done here at all. Then we could just update the timelineSet directly\n // without resetting it first, and speed up room-change.\n this.setState({ timelineSet: null });\n this.updateTimelineSet(nextProps.roomId);\n }\n },\n\n updateTimelineSet: function updateTimelineSet(roomId) {\n var _this = this;\n\n var client = _MatrixClientPeg2.default.get();\n var room = client.getRoom(roomId);\n\n this.noRoom = !room;\n\n if (room) {\n var filter = new _matrixJsSdk2.default.Filter(client.credentials.userId);\n filter.setDefinition({\n \"room\": {\n \"timeline\": {\n \"contains_url\": true,\n \"types\": [\"m.room.message\"]\n }\n }\n });\n\n // FIXME: we shouldn't be doing this every time we change room - see comment above.\n client.getOrCreateFilter(\"FILTER_FILES_\" + client.credentials.userId, filter).then(function (filterId) {\n filter.filterId = filterId;\n var timelineSet = room.getOrCreateFilteredTimelineSet(filter);\n _this.setState({ timelineSet: timelineSet });\n }, function (error) {\n console.error(\"Failed to get or create file panel filter\", error);\n });\n } else {\n console.error(\"Failed to add filtered timelineSet for FilePanel as no room!\");\n }\n },\n\n render: function render() {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel mx_RoomView_messageListWrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_empty' },\n (0, _languageHandler._t)(\"You must <a>register</a> to use this functionality\", {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#/register', key: 'sub' },\n sub\n );\n } })\n )\n );\n } else if (this.noRoom) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel mx_RoomView_messageListWrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_empty' },\n (0, _languageHandler._t)(\"You must join the room to see its files\")\n )\n );\n }\n\n // wrap a TimelinePanel with the jump-to-event bits turned off.\n var TimelinePanel = _index2.default.getComponent(\"structures.TimelinePanel\");\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n\n if (this.state.timelineSet) {\n // console.log(\"rendering TimelinePanel for timelineSet \" + this.state.timelineSet.room.roomId + \" \" +\n // \"(\" + this.state.timelineSet._timelines.join(\", \") + \")\" + \" with key \" + this.props.roomId);\n return _react2.default.createElement(TimelinePanel, { key: \"filepanel_\" + this.props.roomId,\n className: 'mx_FilePanel',\n manageReadReceipts: false,\n manageReadMarkers: false,\n timelineSet: this.state.timelineSet,\n showUrlPreview: false,\n tileShape: 'file_grid',\n empty: (0, _languageHandler._t)('There are no visible files in this room')\n });\n } else {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_FilePanel' },\n _react2.default.createElement(Loader, null)\n );\n }\n }\n});\n\nmodule.exports = FilePanel;\n//# sourceMappingURL=FilePanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _HtmlUtils = require('../../HtmlUtils');\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _GroupStore = require('../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _FlairStore = require('../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _GroupAddressPicker = require('../../GroupAddressPicker');\n\nvar _matrixTo = require('../../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LONG_DESC_PLACEHOLDER = (0, _languageHandler._td)('<h1>HTML for your community\\'s page</h1>\\n<p>\\n Use the long description to introduce new members to the community, or distribute\\n some important <a href=\"foo\">links</a>\\n</p>\\n<p>\\n You can even use \\'img\\' tags\\n</p>\\n'); /*\n Copyright 2017 Vector Creations Ltd.\n Copyright 2017, 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar RoomSummaryType = _propTypes2.default.shape({\n room_id: _propTypes2.default.string.isRequired,\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string,\n avatar_url: _propTypes2.default.string,\n canonical_alias: _propTypes2.default.string\n }).isRequired\n});\n\nvar UserSummaryType = _propTypes2.default.shape({\n summaryInfo: _propTypes2.default.shape({\n user_id: _propTypes2.default.string.isRequired,\n role_id: _propTypes2.default.string,\n avatar_url: _propTypes2.default.string,\n displayname: _propTypes2.default.string\n }).isRequired\n});\n\nvar CategoryRoomList = _react2.default.createClass({\n displayName: 'CategoryRoomList',\n\n props: {\n rooms: _propTypes2.default.arrayOf(RoomSummaryType).isRequired,\n category: _propTypes2.default.shape({\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string\n }).isRequired\n }),\n groupId: _propTypes2.default.string.isRequired,\n\n // Whether the list should be editable\n editing: _propTypes2.default.bool.isRequired\n },\n\n onAddRoomsToSummaryClicked: function onAddRoomsToSummaryClicked(ev) {\n var _this = this;\n\n ev.preventDefault();\n var AddressPickerDialog = _index2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Rooms to Group Summary', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Add rooms to the community summary'),\n description: (0, _languageHandler._t)(\"Which rooms would you like to add to this summary?\"),\n placeholder: (0, _languageHandler._t)(\"Room name or alias\"),\n button: (0, _languageHandler._t)(\"Add to summary\"),\n pickerType: 'room',\n validAddressTypes: ['mx-room-id'],\n groupId: this.props.groupId,\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n var errorList = [];\n _bluebird2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addRoomToGroupSummary(_this.props.groupId, addr.address).catch(function () {\n errorList.push(addr.address);\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following room to the group summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following rooms to the summary of %(groupId)s:\", { groupId: _this.props.groupId }),\n description: errorList.join(\", \")\n });\n });\n }\n });\n },\n\n render: function render() {\n var _this2 = this;\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var addButton = this.props.editing ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThings_addButton',\n onClick: this.onAddRoomsToSummaryClicked\n },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '64', height: '64' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_addButton_label' },\n (0, _languageHandler._t)('Add a Room')\n )\n ) : _react2.default.createElement('div', null);\n\n var roomNodes = this.props.rooms.map(function (r) {\n return _react2.default.createElement(FeaturedRoom, {\n key: r.room_id,\n groupId: _this2.props.groupId,\n editing: _this2.props.editing,\n summaryInfo: r });\n });\n\n var catHeader = _react2.default.createElement('div', null);\n if (this.props.category && this.props.category.profile) {\n catHeader = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_category' },\n this.props.category.profile.name\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_container' },\n catHeader,\n roomNodes,\n addButton\n );\n }\n});\n\nvar FeaturedRoom = _react2.default.createClass({\n displayName: 'FeaturedRoom',\n\n props: {\n summaryInfo: RoomSummaryType.isRequired,\n editing: _propTypes2.default.bool.isRequired,\n groupId: _propTypes2.default.string.isRequired\n },\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_alias: this.props.summaryInfo.profile.canonical_alias,\n room_id: this.props.summaryInfo.room_id\n });\n },\n\n onDeleteClicked: function onDeleteClicked(e) {\n var _this3 = this;\n\n e.preventDefault();\n e.stopPropagation();\n _GroupStore2.default.removeRoomFromGroupSummary(this.props.groupId, this.props.summaryInfo.room_id).catch(function (err) {\n console.error('Error whilst removing room from group summary', err);\n var roomName = _this3.props.summaryInfo.name || _this3.props.summaryInfo.canonical_alias || _this3.props.summaryInfo.room_id;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove the room from the summary of %(groupId)s\", { groupId: _this3.props.groupId }),\n description: (0, _languageHandler._t)(\"The room '%(roomName)s' could not be removed from the summary.\", { roomName: roomName })\n });\n });\n },\n\n render: function render() {\n var RoomAvatar = _index2.default.getComponent(\"avatars.RoomAvatar\");\n\n var roomName = this.props.summaryInfo.profile.name || this.props.summaryInfo.profile.canonical_alias || (0, _languageHandler._t)(\"Unnamed Room\");\n\n var oobData = {\n roomId: this.props.summaryInfo.room_id,\n avatarUrl: this.props.summaryInfo.profile.avatar_url,\n name: roomName\n };\n\n var permalink = null;\n if (this.props.summaryInfo.profile && this.props.summaryInfo.profile.canonical_alias) {\n permalink = (0, _matrixTo.makeGroupPermalink)(this.props.summaryInfo.profile.canonical_alias);\n }\n\n var roomNameNode = null;\n if (permalink) {\n roomNameNode = _react2.default.createElement(\n 'a',\n { href: permalink, onClick: this.onClick },\n roomName\n );\n } else {\n roomNameNode = _react2.default.createElement(\n 'span',\n null,\n roomName\n );\n }\n\n var deleteButton = this.props.editing ? _react2.default.createElement('img', {\n className: 'mx_GroupView_featuredThing_deleteButton',\n src: 'img/cancel-small.svg',\n width: '14',\n height: '14',\n alt: 'Delete',\n onClick: this.onDeleteClicked }) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThing', onClick: this.onClick },\n _react2.default.createElement(RoomAvatar, { oobData: oobData, width: 64, height: 64 }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThing_name' },\n roomNameNode\n ),\n deleteButton\n );\n }\n});\n\nvar RoleUserList = _react2.default.createClass({\n displayName: 'RoleUserList',\n\n props: {\n users: _propTypes2.default.arrayOf(UserSummaryType).isRequired,\n role: _propTypes2.default.shape({\n profile: _propTypes2.default.shape({\n name: _propTypes2.default.string\n }).isRequired\n }),\n groupId: _propTypes2.default.string.isRequired,\n\n // Whether the list should be editable\n editing: _propTypes2.default.bool.isRequired\n },\n\n onAddUsersClicked: function onAddUsersClicked(ev) {\n var _this4 = this;\n\n ev.preventDefault();\n var AddressPickerDialog = _index2.default.getComponent(\"dialogs.AddressPickerDialog\");\n _Modal2.default.createTrackedDialog('Add Users to Group Summary', '', AddressPickerDialog, {\n title: (0, _languageHandler._t)('Add users to the community summary'),\n description: (0, _languageHandler._t)(\"Who would you like to add to this summary?\"),\n placeholder: (0, _languageHandler._t)(\"Name or matrix ID\"),\n button: (0, _languageHandler._t)(\"Add to summary\"),\n validAddressTypes: ['mx-user-id'],\n groupId: this.props.groupId,\n shouldOmitSelf: false,\n onFinished: function onFinished(success, addrs) {\n if (!success) return;\n var errorList = [];\n _bluebird2.default.all(addrs.map(function (addr) {\n return _GroupStore2.default.addUserToGroupSummary(addr.address).catch(function () {\n errorList.push(addr.address);\n }).reflect();\n })).then(function () {\n if (errorList.length === 0) {\n return;\n }\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to add the following users to the community summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to add the following users to the summary of %(groupId)s:\", { groupId: _this4.props.groupId }),\n description: errorList.join(\", \")\n });\n });\n }\n });\n },\n\n render: function render() {\n var _this5 = this;\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var addButton = this.props.editing ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThings_addButton', onClick: this.onAddUsersClicked },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '64', height: '64' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_addButton_label' },\n (0, _languageHandler._t)('Add a User')\n )\n ) : _react2.default.createElement('div', null);\n var userNodes = this.props.users.map(function (u) {\n return _react2.default.createElement(FeaturedUser, {\n key: u.user_id,\n summaryInfo: u,\n editing: _this5.props.editing,\n groupId: _this5.props.groupId });\n });\n var roleHeader = _react2.default.createElement('div', null);\n if (this.props.role && this.props.role.profile) {\n roleHeader = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_category' },\n this.props.role.profile.name\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_container' },\n roleHeader,\n userNodes,\n addButton\n );\n }\n});\n\nvar FeaturedUser = _react2.default.createClass({\n displayName: 'FeaturedUser',\n\n props: {\n summaryInfo: UserSummaryType.isRequired,\n editing: _propTypes2.default.bool.isRequired,\n groupId: _propTypes2.default.string.isRequired\n },\n\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n _dispatcher2.default.dispatch({\n action: 'view_start_chat_or_reuse',\n user_id: this.props.summaryInfo.user_id,\n go_home_on_cancel: false\n });\n },\n\n onDeleteClicked: function onDeleteClicked(e) {\n var _this6 = this;\n\n e.preventDefault();\n e.stopPropagation();\n _GroupStore2.default.removeUserFromGroupSummary(this.props.groupId, this.props.summaryInfo.user_id).catch(function (err) {\n console.error('Error whilst removing user from group summary', err);\n var displayName = _this6.props.summaryInfo.displayname || _this6.props.summaryInfo.user_id;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove user from community summary', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove a user from the summary of %(groupId)s\", { groupId: _this6.props.groupId }),\n description: (0, _languageHandler._t)(\"The user '%(displayName)s' could not be removed from the summary.\", { displayName: displayName })\n });\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var name = this.props.summaryInfo.displayname || this.props.summaryInfo.user_id;\n\n var permalink = (0, _matrixTo.makeUserPermalink)(this.props.summaryInfo.user_id);\n var userNameNode = _react2.default.createElement(\n 'a',\n { href: permalink, onClick: this.onClick },\n name\n );\n var httpUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.summaryInfo.avatar_url, 64, 64);\n\n var deleteButton = this.props.editing ? _react2.default.createElement('img', {\n className: 'mx_GroupView_featuredThing_deleteButton',\n src: 'img/cancel-small.svg',\n width: '14',\n height: '14',\n alt: 'Delete',\n onClick: this.onDeleteClicked }) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_featuredThing', onClick: this.onClick },\n _react2.default.createElement(BaseAvatar, { name: name, url: httpUrl, width: 64, height: 64 }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThing_name' },\n userNameNode\n ),\n deleteButton\n );\n }\n});\n\nvar GROUP_JOINPOLICY_OPEN = \"open\";\nvar GROUP_JOINPOLICY_INVITE = \"invite\";\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupView',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n // Whether this is the first time the group admin is viewing the group\n groupIsNew: _propTypes2.default.bool\n },\n\n childContextTypes: {\n groupStore: _propTypes2.default.instanceOf(_GroupStore2.default)\n },\n\n getInitialState: function getInitialState() {\n return {\n summary: null,\n isGroupPublicised: null,\n isUserPrivileged: null,\n groupRooms: null,\n groupRoomsLoading: null,\n error: null,\n editing: false,\n saving: false,\n uploadingAvatar: false,\n avatarChanged: false,\n membershipBusy: false,\n publicityBusy: false,\n inviterProfile: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._matrixClient = _MatrixClientPeg2.default.get();\n this._matrixClient.on(\"Group.myMembership\", this._onGroupMyMembership);\n\n this._changeAvatarComponent = null;\n this._initGroupStore(this.props.groupId, true);\n\n this._dispatcherRef = _dispatcher2.default.register(this._onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._matrixClient.removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n _dispatcher2.default.unregister(this._dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n var _this7 = this;\n\n if (this.props.groupId != newProps.groupId) {\n this.setState({\n summary: null,\n error: null\n }, function () {\n _this7._initGroupStore(newProps.groupId);\n });\n }\n },\n\n _onGroupMyMembership: function _onGroupMyMembership(group) {\n if (this._unmounted || group.groupId !== this.props.groupId) return;\n if (group.myMembership === 'leave') {\n // Leave settings - the user might have clicked the \"Leave\" button\n this._closeSettings();\n }\n this.setState({ membershipBusy: false });\n },\n\n _initGroupStore: function _initGroupStore(groupId, firstInit) {\n var _this8 = this;\n\n var group = this._matrixClient.getGroup(groupId);\n if (group && group.inviter && group.inviter.userId) {\n this._fetchInviterProfile(group.inviter.userId);\n }\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated.bind(this, firstInit));\n var willDoOnboarding = false;\n // XXX: This should be more fluxy - let's get the error from GroupStore .getError or something\n _GroupStore2.default.on('error', function (err, errorGroupId) {\n if (_this8._unmounted || groupId !== errorGroupId) return;\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN' && !willDoOnboarding) {\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'view_group',\n group_id: groupId\n }\n });\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n willDoOnboarding = true;\n }\n _this8.setState({\n summary: null,\n error: err,\n editing: false\n });\n });\n },\n\n onGroupStoreUpdated: function onGroupStoreUpdated(firstInit) {\n var _this9 = this;\n\n if (this._unmounted) return;\n var summary = _GroupStore2.default.getSummary(this.props.groupId);\n if (summary.profile) {\n // Default profile fields should be \"\" for later sending to the server (which\n // requires that the fields are strings, not null)\n [\"avatar_url\", \"long_description\", \"name\", \"short_description\"].forEach(function (k) {\n summary.profile[k] = summary.profile[k] || \"\";\n });\n }\n this.setState({\n summary: summary,\n summaryLoading: !_GroupStore2.default.isStateReady(this.props.groupId, _GroupStore2.default.STATE_KEY.Summary),\n isGroupPublicised: _GroupStore2.default.getGroupPublicity(this.props.groupId),\n isUserPrivileged: _GroupStore2.default.isUserPrivileged(this.props.groupId),\n groupRooms: _GroupStore2.default.getGroupRooms(this.props.groupId),\n groupRoomsLoading: !_GroupStore2.default.isStateReady(this.props.groupId, _GroupStore2.default.STATE_KEY.GroupRooms),\n isUserMember: _GroupStore2.default.getGroupMembers(this.props.groupId).some(function (m) {\n return m.userId === _this9._matrixClient.credentials.userId;\n }),\n error: null\n });\n // XXX: This might not work but this.props.groupIsNew unused anyway\n if (this.props.groupIsNew && firstInit) {\n this._onEditClick();\n }\n },\n _fetchInviterProfile: function _fetchInviterProfile(userId) {\n var _this10 = this;\n\n this.setState({\n inviterProfileBusy: true\n });\n this._matrixClient.getProfileInfo(userId).then(function (resp) {\n if (_this10._unmounted) return;\n _this10.setState({\n inviterProfile: {\n avatarUrl: resp.avatar_url,\n displayName: resp.displayname\n }\n });\n }).catch(function (e) {\n console.error('Error getting group inviter profile', e);\n }).finally(function () {\n if (_this10._unmounted) return;\n _this10.setState({\n inviterProfileBusy: false\n });\n });\n },\n\n\n _onShowRhsClick: function _onShowRhsClick(ev) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n },\n\n _onEditClick: function _onEditClick() {\n this.setState({\n editing: true,\n profileForm: (0, _assign2.default)({}, this.state.summary.profile),\n joinableForm: {\n policyType: this.state.summary.profile.is_openly_joinable ? GROUP_JOINPOLICY_OPEN : GROUP_JOINPOLICY_INVITE\n }\n });\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: true\n });\n },\n\n _onShareClick: function _onShareClick() {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share community dialog', '', ShareDialog, {\n target: this._matrixClient.getGroup(this.props.groupId)\n });\n },\n\n _onCancelClick: function _onCancelClick() {\n this._closeSettings();\n },\n\n _onAction: function _onAction(payload) {\n switch (payload.action) {\n // NOTE: close_settings is an app-wide dispatch; as it is dispatched from MatrixChat\n case 'close_settings':\n this.setState({\n editing: false,\n profileForm: null\n });\n break;\n default:\n break;\n }\n },\n _closeSettings: function _closeSettings() {\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n },\n\n\n _onNameChange: function _onNameChange(value) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { name: value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onShortDescChange: function _onShortDescChange(value) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { short_description: value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onLongDescChange: function _onLongDescChange(e) {\n var newProfileForm = (0, _assign2.default)(this.state.profileForm, { long_description: e.target.value });\n this.setState({\n profileForm: newProfileForm\n });\n },\n\n _onAvatarSelected: function _onAvatarSelected(ev) {\n var _this11 = this;\n\n var file = ev.target.files[0];\n if (!file) return;\n\n this.setState({ uploadingAvatar: true });\n this._matrixClient.uploadContent(file).then(function (url) {\n var newProfileForm = (0, _assign2.default)(_this11.state.profileForm, { avatar_url: url });\n _this11.setState({\n uploadingAvatar: false,\n profileForm: newProfileForm,\n\n // Indicate that FlairStore needs to be poked to show this change\n // in TagTile (TagPanel), Flair and GroupTile (MyGroups).\n avatarChanged: true\n });\n }).catch(function (e) {\n _this11.setState({ uploadingAvatar: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to upload avatar image\", e);\n _Modal2.default.createTrackedDialog('Failed to upload image', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to upload image')\n });\n }).done();\n },\n\n _onJoinableChange: function _onJoinableChange(ev) {\n this.setState({\n joinableForm: { policyType: ev.target.value }\n });\n },\n\n _onSaveClick: function _onSaveClick() {\n var _this12 = this;\n\n this.setState({ saving: true });\n var savePromise = this.state.isUserPrivileged ? this._saveGroup() : _bluebird2.default.resolve();\n savePromise.then(function (result) {\n _this12.setState({\n saving: false,\n editing: false,\n summary: null\n });\n _dispatcher2.default.dispatch({ action: 'panel_disable' });\n _this12._initGroupStore(_this12.props.groupId);\n\n if (_this12.state.avatarChanged) {\n // XXX: Evil - poking a store should be done from an async action\n _FlairStore2.default.refreshGroupProfile(_this12._matrixClient, _this12.props.groupId);\n }\n }).catch(function (e) {\n _this12.setState({\n saving: false\n });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to save community profile\", e);\n _Modal2.default.createTrackedDialog('Failed to update group', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to update community')\n });\n }).finally(function () {\n _this12.setState({\n avatarChanged: false\n });\n }).done();\n },\n\n _saveGroup: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(this._matrixClient.setGroupProfile(this.props.groupId, this.state.profileForm));\n\n case 2:\n _context.next = 4;\n return (0, _bluebird.resolve)(this._matrixClient.setGroupJoinPolicy(this.props.groupId, {\n type: this.state.joinableForm.policyType\n }));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _saveGroup() {\n return _ref.apply(this, arguments);\n }\n\n return _saveGroup;\n }(),\n\n _onAcceptInviteClick: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var _this13 = this;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context2.next = 3;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 3:\n\n _GroupStore2.default.acceptGroupInvite(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this13.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error accepting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to accept invite\")\n });\n });\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onAcceptInviteClick() {\n return _ref2.apply(this, arguments);\n }\n\n return _onAcceptInviteClick;\n }(),\n\n _onRejectInviteClick: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var _this14 = this;\n\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context3.next = 3;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 3:\n\n _GroupStore2.default.leaveGroup(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this14.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error rejecting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to reject invite\")\n });\n });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function _onRejectInviteClick() {\n return _ref3.apply(this, arguments);\n }\n\n return _onRejectInviteClick;\n }(),\n\n _onJoinClick: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee4() {\n var _this15 = this;\n\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!this._matrixClient.isGuest()) {\n _context4.next = 3;\n break;\n }\n\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return _context4.abrupt('return');\n\n case 3:\n\n this.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context4.next = 6;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 6:\n\n _GroupStore2.default.joinGroup(this.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this15.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error joining room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to join community\")\n });\n });\n\n case 7:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function _onJoinClick() {\n return _ref4.apply(this, arguments);\n }\n\n return _onJoinClick;\n }(),\n\n _onLeaveClick: function _onLeaveClick() {\n var _this16 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Leave Group', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Leave Community\"),\n description: (0, _languageHandler._t)(\"Leave %(groupName)s?\", { groupName: this.props.groupId }),\n button: (0, _languageHandler._t)(\"Leave\"),\n danger: true,\n onFinished: function () {\n var _ref5 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(confirmed) {\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (confirmed) {\n _context5.next = 2;\n break;\n }\n\n return _context5.abrupt('return');\n\n case 2:\n\n _this16.setState({ membershipBusy: true });\n\n // Wait 500ms to prevent flashing. Do this before sending a request otherwise we risk the\n // spinner disappearing after we have fetched new group data.\n _context5.next = 5;\n return (0, _bluebird.resolve)(_bluebird2.default.delay(500));\n\n case 5:\n\n _GroupStore2.default.leaveGroup(_this16.props.groupId).then(function () {\n // don't reset membershipBusy here: wait for the membership change to come down the sync\n }).catch(function (e) {\n _this16.setState({ membershipBusy: false });\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error leaving community', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to leave community\")\n });\n });\n\n case 6:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, _this16);\n }));\n\n return function onFinished(_x) {\n return _ref5.apply(this, arguments);\n };\n }()\n });\n },\n\n _onAddRoomsClick: function _onAddRoomsClick() {\n (0, _GroupAddressPicker.showGroupAddRoomDialog)(this.props.groupId);\n },\n\n _getGroupSection: function _getGroupSection() {\n var groupSettingsSectionClasses = (0, _classnames2.default)({\n \"mx_GroupView_group\": this.state.editing,\n \"mx_GroupView_group_disabled\": this.state.editing && !this.state.isUserPrivileged\n });\n\n var header = this.state.editing ? _react2.default.createElement(\n 'h2',\n null,\n ' ',\n (0, _languageHandler._t)('Community Settings'),\n ' '\n ) : _react2.default.createElement('div', null);\n var changeDelayWarning = this.state.editing && this.state.isUserPrivileged ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_changeDelayWarning' },\n (0, _languageHandler._t)('Changes made to your community <bold1>name</bold1> and <bold2>avatar</bold2> ' + 'might not be seen by other users for up to 30 minutes.', {}, {\n 'bold1': function bold1(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n },\n 'bold2': function bold2(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n }\n })\n ) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n 'div',\n { className: groupSettingsSectionClasses },\n header,\n changeDelayWarning,\n this._getJoinableNode(),\n this._getLongDescriptionNode(),\n this._getRoomsNode()\n );\n },\n\n _getRoomsNode: function _getRoomsNode() {\n var RoomDetailList = _index2.default.getComponent('rooms.RoomDetailList');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n var ToolTipButton = _index2.default.getComponent('elements.ToolTipButton');\n\n var roomsHelpNode = this.state.editing ? _react2.default.createElement(ToolTipButton, { helpText: (0, _languageHandler._t)('These rooms are displayed to community members on the community page. ' + 'Community members can join the rooms by clicking on them.') }) : _react2.default.createElement('div', null);\n\n var addRoomRow = this.state.editing ? _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupView_rooms_header_addRow',\n onClick: this._onAddRoomsClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header_addRow_button' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-room-add.svg', width: '24', height: '24' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header_addRow_label' },\n (0, _languageHandler._t)('Add rooms to this community')\n )\n ) : _react2.default.createElement('div', null);\n var roomDetailListClassName = (0, _classnames2.default)({\n \"mx_fadable\": true,\n \"mx_fadable_faded\": this.state.editing\n });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_rooms_header' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Rooms'),\n roomsHelpNode\n ),\n addRoomRow\n ),\n this.state.groupRoomsLoading ? _react2.default.createElement(Spinner, null) : _react2.default.createElement(RoomDetailList, {\n rooms: this.state.groupRooms,\n className: roomDetailListClassName })\n );\n },\n\n _getFeaturedRoomsNode: function _getFeaturedRoomsNode() {\n var _this17 = this;\n\n var summary = this.state.summary;\n\n var defaultCategoryRooms = [];\n var categoryRooms = {};\n summary.rooms_section.rooms.forEach(function (r) {\n if (r.category_id === null) {\n defaultCategoryRooms.push(r);\n } else {\n var list = categoryRooms[r.category_id];\n if (list === undefined) {\n list = [];\n categoryRooms[r.category_id] = list;\n }\n list.push(r);\n }\n });\n\n var defaultCategoryNode = _react2.default.createElement(CategoryRoomList, {\n rooms: defaultCategoryRooms,\n groupId: this.props.groupId,\n editing: this.state.editing });\n var categoryRoomNodes = (0, _keys2.default)(categoryRooms).map(function (catId) {\n var cat = summary.rooms_section.categories[catId];\n return _react2.default.createElement(CategoryRoomList, {\n key: catId,\n rooms: categoryRooms[catId],\n category: cat,\n groupId: _this17.props.groupId,\n editing: _this17.state.editing });\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_header' },\n (0, _languageHandler._t)('Featured Rooms:')\n ),\n defaultCategoryNode,\n categoryRoomNodes\n );\n },\n\n _getFeaturedUsersNode: function _getFeaturedUsersNode() {\n var _this18 = this;\n\n var summary = this.state.summary;\n\n var noRoleUsers = [];\n var roleUsers = {};\n summary.users_section.users.forEach(function (u) {\n if (u.role_id === null) {\n noRoleUsers.push(u);\n } else {\n var list = roleUsers[u.role_id];\n if (list === undefined) {\n list = [];\n roleUsers[u.role_id] = list;\n }\n list.push(u);\n }\n });\n\n var noRoleNode = _react2.default.createElement(RoleUserList, {\n users: noRoleUsers,\n groupId: this.props.groupId,\n editing: this.state.editing });\n var roleUserNodes = (0, _keys2.default)(roleUsers).map(function (roleId) {\n var role = summary.users_section.roles[roleId];\n return _react2.default.createElement(RoleUserList, {\n key: roleId,\n users: roleUsers[roleId],\n role: role,\n groupId: _this18.props.groupId,\n editing: _this18.state.editing });\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_featuredThings_header' },\n (0, _languageHandler._t)('Featured Users:')\n ),\n noRoleNode,\n roleUserNodes\n );\n },\n\n _getMembershipSection: function _getMembershipSection() {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n var group = this._matrixClient.getGroup(this.props.groupId);\n\n if (group && group.myMembership === 'invite') {\n if (this.state.membershipBusy || this.state.inviterProfileBusy) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection' },\n _react2.default.createElement(Spinner, null)\n );\n }\n var httpInviterAvatar = this.state.inviterProfile ? this._matrixClient.mxcUrlToHttp(this.state.inviterProfile.avatarUrl, 36, 36) : null;\n\n var inviterName = group.inviter.userId;\n if (this.state.inviterProfile) {\n inviterName = this.state.inviterProfile.displayName || group.inviter.userId;\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection mx_GroupView_membershipSection_invited' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSubSection' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSection_description' },\n _react2.default.createElement(BaseAvatar, { url: httpInviterAvatar,\n name: inviterName,\n width: 36,\n height: 36\n }),\n (0, _languageHandler._t)(\"%(inviter)s has invited you to join this community\", {\n inviter: inviterName\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membership_buttonContainer' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onAcceptInviteClick\n },\n (0, _languageHandler._t)(\"Accept\")\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onRejectInviteClick\n },\n (0, _languageHandler._t)(\"Decline\")\n )\n )\n )\n );\n }\n\n var membershipContainerExtraClasses = void 0;\n var membershipButtonExtraClasses = void 0;\n var membershipButtonTooltip = void 0;\n var membershipButtonText = void 0;\n var membershipButtonOnClick = void 0;\n\n // User is not in the group\n if ((!group || group.myMembership === 'leave') && this.state.summary && this.state.summary.profile && Boolean(this.state.summary.profile.is_openly_joinable)) {\n membershipButtonText = (0, _languageHandler._t)(\"Join this community\");\n membershipButtonOnClick = this._onJoinClick;\n\n membershipButtonExtraClasses = 'mx_GroupView_joinButton';\n membershipContainerExtraClasses = 'mx_GroupView_membershipSection_leave';\n } else if (group && group.myMembership === 'join' && this.state.editing) {\n membershipButtonText = (0, _languageHandler._t)(\"Leave this community\");\n membershipButtonOnClick = this._onLeaveClick;\n membershipButtonTooltip = this.state.isUserPrivileged ? (0, _languageHandler._t)(\"You are an administrator of this community\") : (0, _languageHandler._t)(\"You are a member of this community\");\n\n membershipButtonExtraClasses = {\n 'mx_GroupView_leaveButton': true,\n 'mx_RoomHeader_textButton_danger': this.state.isUserPrivileged\n };\n membershipContainerExtraClasses = 'mx_GroupView_membershipSection_joined';\n } else {\n return null;\n }\n\n var membershipButtonClasses = (0, _classnames2.default)(['mx_RoomHeader_textButton', 'mx_GroupView_textButton'], membershipButtonExtraClasses);\n\n var membershipContainerClasses = (0, _classnames2.default)('mx_GroupView_membershipSection', membershipContainerExtraClasses);\n\n return _react2.default.createElement(\n 'div',\n { className: membershipContainerClasses },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membershipSubSection' },\n this.state.membershipBusy ? _react2.default.createElement(Spinner, null) : _react2.default.createElement('div', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_membership_buttonContainer' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: membershipButtonClasses,\n onClick: membershipButtonOnClick,\n title: membershipButtonTooltip\n },\n membershipButtonText\n )\n )\n )\n );\n },\n\n _getJoinableNode: function _getJoinableNode() {\n return this.state.editing ? _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can join this community?'),\n this.state.groupJoinableLoading ? _react2.default.createElement(InlineSpinner, null) : _react2.default.createElement('div', null)\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: GROUP_JOINPOLICY_INVITE,\n checked: this.state.joinableForm.policyType === GROUP_JOINPOLICY_INVITE,\n onChange: this._onJoinableChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_label_text' },\n (0, _languageHandler._t)('Only people who have been invited')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: GROUP_JOINPOLICY_OPEN,\n checked: this.state.joinableForm.policyType === GROUP_JOINPOLICY_OPEN,\n onChange: this._onJoinableChange\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_label_text' },\n (0, _languageHandler._t)('Everyone')\n )\n )\n )\n ) : null;\n },\n\n _getLongDescriptionNode: function _getLongDescriptionNode() {\n var summary = this.state.summary;\n var description = null;\n if (summary.profile && summary.profile.long_description) {\n description = (0, _HtmlUtils.sanitizedHtmlNode)(summary.profile.long_description);\n } else if (this.state.isUserPrivileged) {\n description = _react2.default.createElement(\n 'div',\n {\n className: 'mx_GroupView_groupDesc_placeholder',\n onClick: this._onEditClick\n },\n (0, _languageHandler._t)('Your community hasn\\'t got a Long Description, a HTML page to show to community members.<br />' + 'Click here to open settings and give it one!', {}, { 'br': _react2.default.createElement('br', null) })\n );\n }\n var groupDescEditingClasses = (0, _classnames2.default)({\n \"mx_GroupView_groupDesc\": true,\n \"mx_GroupView_groupDesc_disabled\": !this.state.isUserPrivileged\n });\n\n return this.state.editing ? _react2.default.createElement(\n 'div',\n { className: groupDescEditingClasses },\n _react2.default.createElement(\n 'h3',\n null,\n ' ',\n (0, _languageHandler._t)(\"Long Description (HTML)\"),\n ' '\n ),\n _react2.default.createElement('textarea', {\n value: this.state.profileForm.long_description,\n placeholder: (0, _languageHandler._t)(LONG_DESC_PLACEHOLDER),\n onChange: this._onLongDescChange,\n tabIndex: '4',\n key: 'editLongDesc'\n })\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_groupDesc' },\n description\n );\n },\n\n render: function render() {\n var GroupAvatar = _index2.default.getComponent(\"avatars.GroupAvatar\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n if (this.state.summaryLoading && this.state.error === null || this.state.saving) {\n return _react2.default.createElement(Spinner, null);\n } else if (this.state.summary) {\n var summary = this.state.summary;\n\n var avatarNode = void 0;\n var nameNode = void 0;\n var shortDescNode = void 0;\n var rightButtons = [];\n if (this.state.editing && this.state.isUserPrivileged) {\n var avatarImage = void 0;\n if (this.state.uploadingAvatar) {\n avatarImage = _react2.default.createElement(Spinner, null);\n } else {\n var _GroupAvatar = _index2.default.getComponent('avatars.GroupAvatar');\n avatarImage = _react2.default.createElement(_GroupAvatar, { groupId: this.props.groupId,\n groupName: this.state.profileForm.name,\n groupAvatarUrl: this.state.profileForm.avatar_url,\n width: 48, height: 48, resizeMethod: 'crop'\n });\n }\n\n avatarNode = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_avatarPicker' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', className: 'mx_GroupView_avatarPicker_label' },\n avatarImage\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_avatarPicker_edit' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', className: 'mx_GroupView_avatarPicker_label' },\n _react2.default.createElement('img', { src: 'img/camera.svg',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n _react2.default.createElement('input', { id: 'avatarInput', className: 'mx_GroupView_uploadInput', type: 'file', onChange: this._onAvatarSelected })\n )\n );\n\n var EditableText = _index2.default.getComponent(\"elements.EditableText\");\n\n nameNode = _react2.default.createElement(EditableText, { ref: 'nameEditor',\n className: 'mx_GroupView_editable',\n placeholderClassName: 'mx_GroupView_placeholder',\n placeholder: (0, _languageHandler._t)('Community Name'),\n blurToCancel: false,\n initialValue: this.state.profileForm.name,\n onValueChanged: this._onNameChange,\n tabIndex: '1',\n dir: 'auto' });\n\n shortDescNode = _react2.default.createElement(EditableText, { ref: 'descriptionEditor',\n className: 'mx_GroupView_editable',\n placeholderClassName: 'mx_GroupView_placeholder',\n placeholder: (0, _languageHandler._t)(\"Description\"),\n blurToCancel: false,\n initialValue: this.state.profileForm.short_description,\n onValueChanged: this._onShortDescChange,\n tabIndex: '2',\n dir: 'auto' });\n } else {\n var onGroupHeaderItemClick = this.state.isUserMember ? this._onEditClick : null;\n var groupAvatarUrl = summary.profile ? summary.profile.avatar_url : null;\n var groupName = summary.profile ? summary.profile.name : null;\n avatarNode = _react2.default.createElement(GroupAvatar, {\n groupId: this.props.groupId,\n groupAvatarUrl: groupAvatarUrl,\n groupName: groupName,\n onClick: onGroupHeaderItemClick,\n width: 48, height: 48\n });\n if (summary.profile && summary.profile.name) {\n nameNode = _react2.default.createElement(\n 'div',\n { onClick: onGroupHeaderItemClick },\n _react2.default.createElement(\n 'span',\n null,\n summary.profile.name\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mx_GroupView_header_groupid' },\n '(',\n this.props.groupId,\n ')'\n )\n );\n } else {\n nameNode = _react2.default.createElement(\n 'span',\n { onClick: onGroupHeaderItemClick },\n this.props.groupId\n );\n }\n if (summary.profile && summary.profile.short_description) {\n shortDescNode = _react2.default.createElement(\n 'span',\n { onClick: onGroupHeaderItemClick },\n summary.profile.short_description\n );\n }\n }\n\n if (this.state.editing) {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupView_textButton mx_RoomHeader_textButton',\n onClick: this._onSaveClick, key: '_saveButton'\n },\n (0, _languageHandler._t)('Save')\n ));\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_cancelButton', onClick: this._onCancelClick, key: '_cancelButton' },\n _react2.default.createElement('img', { src: 'img/cancel.svg', className: 'mx_filterFlipColor',\n width: '18', height: '18', alt: (0, _languageHandler._t)(\"Cancel\") })\n ));\n } else {\n if (summary.user && summary.user.membership === 'join') {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button',\n onClick: this._onEditClick, title: (0, _languageHandler._t)(\"Community Settings\"), key: '_editButton'\n },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-settings-room.svg', width: '16', height: '16' })\n ));\n }\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button', onClick: this._onShareClick, title: (0, _languageHandler._t)('Share Community'), key: '_shareButton' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-share.svg', width: '16', height: '16' })\n ));\n if (this.props.collapsedRhs) {\n rightButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_GroupHeader_button',\n onClick: this._onShowRhsClick, title: (0, _languageHandler._t)('Show panel'), key: '_maximiseButton'\n },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16' })\n ));\n }\n }\n\n var headerClasses = {\n mx_GroupView_header: true,\n mx_GroupView_header_view: !this.state.editing,\n mx_GroupView_header_isUserMember: this.state.isUserMember\n };\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView' },\n _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(headerClasses) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_leftCol' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_avatar' },\n avatarNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_info' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_name' },\n nameNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_shortDesc' },\n shortDescNode\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_header_rightCol' },\n rightButtons\n )\n ),\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { className: 'mx_GroupView_body' },\n this._getMembershipSection(),\n this._getGroupSection()\n )\n );\n } else if (this.state.error) {\n if (this.state.error.httpStatus === 404) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_error' },\n (0, _languageHandler._t)('Community %(groupId)s not found', { groupId: this.props.groupId })\n );\n } else {\n var extraText = void 0;\n if (this.state.error.errcode === 'M_UNRECOGNIZED') {\n extraText = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('This Home server does not support communities')\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupView_error' },\n (0, _languageHandler._t)('Failed to load %(groupId)s', { groupId: this.props.groupId }),\n extraText\n );\n }\n } else {\n console.error(\"Invalid state for GroupView\");\n return _react2.default.createElement('div', null);\n }\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupView.js.map","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map characters to HTML entities. */\nvar htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\n\n/**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\nvar escapeHtmlChar = basePropertyOf(htmlEscapes);\n\nmodule.exports = escapeHtmlChar;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/*\nSyntax highlighting with language autodetection.\nhttps://highlightjs.org/\n*/\n\n(function(factory) {\n\n // Find the global object for export to both the browser and web workers.\n var globalObject = typeof window === 'object' && window ||\n typeof self === 'object' && self;\n\n // Setup highlight.js for different environments. First is Node.js or\n // CommonJS.\n if(typeof exports !== 'undefined') {\n factory(exports);\n } else if(globalObject) {\n // Export hljs globally even when using AMD for cases when this script\n // is loaded with others that may still expect a global hljs.\n globalObject.hljs = factory({});\n\n // Finally register the global hljs with AMD.\n if(typeof define === 'function' && define.amd) {\n define([], function() {\n return globalObject.hljs;\n });\n }\n }\n\n}(function(hljs) {\n // Convenience variables for build-in objects\n var ArrayProto = [],\n objectKeys = Object.keys;\n\n // Global internal variables used within the highlight.js library.\n var languages = {},\n aliases = {};\n\n // Regular expressions used throughout the highlight.js library.\n var noHighlightRe = /^(no-?highlight|plain|text)$/i,\n languagePrefixRe = /\\blang(?:uage)?-([\\w-]+)\\b/i,\n fixMarkupRe = /((^(<[^>]+>|\\t|)+|(?:\\n)))/gm;\n\n var spanEndTag = '</span>';\n\n // Global options used when within external APIs. This is modified when\n // calling the `hljs.configure` function.\n var options = {\n classPrefix: 'hljs-',\n tabReplace: null,\n useBR: false,\n languages: undefined\n };\n\n\n /* Utility functions */\n\n function escape(value) {\n return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n }\n\n function tag(node) {\n return node.nodeName.toLowerCase();\n }\n\n function testRe(re, lexeme) {\n var match = re && re.exec(lexeme);\n return match && match.index === 0;\n }\n\n function isNotHighlighted(language) {\n return noHighlightRe.test(language);\n }\n\n function blockLanguage(block) {\n var i, match, length, _class;\n var classes = block.className + ' ';\n\n classes += block.parentNode ? block.parentNode.className : '';\n\n // language-* takes precedence over non-prefixed class names.\n match = languagePrefixRe.exec(classes);\n if (match) {\n return getLanguage(match[1]) ? match[1] : 'no-highlight';\n }\n\n classes = classes.split(/\\s+/);\n\n for (i = 0, length = classes.length; i < length; i++) {\n _class = classes[i]\n\n if (isNotHighlighted(_class) || getLanguage(_class)) {\n return _class;\n }\n }\n }\n\n function inherit(parent) { // inherit(parent, override_obj, override_obj, ...)\n var key;\n var result = {};\n var objects = Array.prototype.slice.call(arguments, 1);\n\n for (key in parent)\n result[key] = parent[key];\n objects.forEach(function(obj) {\n for (key in obj)\n result[key] = obj[key];\n });\n return result;\n }\n\n /* Stream merging */\n\n function nodeStream(node) {\n var result = [];\n (function _nodeStream(node, offset) {\n for (var child = node.firstChild; child; child = child.nextSibling) {\n if (child.nodeType === 3)\n offset += child.nodeValue.length;\n else if (child.nodeType === 1) {\n result.push({\n event: 'start',\n offset: offset,\n node: child\n });\n offset = _nodeStream(child, offset);\n // Prevent void elements from having an end tag that would actually\n // double them in the output. There are more void elements in HTML\n // but we list only those realistically expected in code display.\n if (!tag(child).match(/br|hr|img|input/)) {\n result.push({\n event: 'stop',\n offset: offset,\n node: child\n });\n }\n }\n }\n return offset;\n })(node, 0);\n return result;\n }\n\n function mergeStreams(original, highlighted, value) {\n var processed = 0;\n var result = '';\n var nodeStack = [];\n\n function selectStream() {\n if (!original.length || !highlighted.length) {\n return original.length ? original : highlighted;\n }\n if (original[0].offset !== highlighted[0].offset) {\n return (original[0].offset < highlighted[0].offset) ? original : highlighted;\n }\n\n /*\n To avoid starting the stream just before it should stop the order is\n ensured that original always starts first and closes last:\n\n if (event1 == 'start' && event2 == 'start')\n return original;\n if (event1 == 'start' && event2 == 'stop')\n return highlighted;\n if (event1 == 'stop' && event2 == 'start')\n return original;\n if (event1 == 'stop' && event2 == 'stop')\n return highlighted;\n\n ... which is collapsed to:\n */\n return highlighted[0].event === 'start' ? original : highlighted;\n }\n\n function open(node) {\n function attr_str(a) {return ' ' + a.nodeName + '=\"' + escape(a.value).replace('\"', '"') + '\"';}\n result += '<' + tag(node) + ArrayProto.map.call(node.attributes, attr_str).join('') + '>';\n }\n\n function close(node) {\n result += '</' + tag(node) + '>';\n }\n\n function render(event) {\n (event.event === 'start' ? open : close)(event.node);\n }\n\n while (original.length || highlighted.length) {\n var stream = selectStream();\n result += escape(value.substring(processed, stream[0].offset));\n processed = stream[0].offset;\n if (stream === original) {\n /*\n On any opening or closing tag of the original markup we first close\n the entire highlighted node stack, then render the original tag along\n with all the following original tags at the same offset and then\n reopen all the tags on the highlighted stack.\n */\n nodeStack.reverse().forEach(close);\n do {\n render(stream.splice(0, 1)[0]);\n stream = selectStream();\n } while (stream === original && stream.length && stream[0].offset === processed);\n nodeStack.reverse().forEach(open);\n } else {\n if (stream[0].event === 'start') {\n nodeStack.push(stream[0].node);\n } else {\n nodeStack.pop();\n }\n render(stream.splice(0, 1)[0]);\n }\n }\n return result + escape(value.substr(processed));\n }\n\n /* Initialization */\n\n function expand_mode(mode) {\n if (mode.variants && !mode.cached_variants) {\n mode.cached_variants = mode.variants.map(function(variant) {\n return inherit(mode, {variants: null}, variant);\n });\n }\n return mode.cached_variants || (mode.endsWithParent && [inherit(mode)]) || [mode];\n }\n\n function compileLanguage(language) {\n\n function reStr(re) {\n return (re && re.source) || re;\n }\n\n function langRe(value, global) {\n return new RegExp(\n reStr(value),\n 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : '')\n );\n }\n\n function compileMode(mode, parent) {\n if (mode.compiled)\n return;\n mode.compiled = true;\n\n mode.keywords = mode.keywords || mode.beginKeywords;\n if (mode.keywords) {\n var compiled_keywords = {};\n\n var flatten = function(className, str) {\n if (language.case_insensitive) {\n str = str.toLowerCase();\n }\n str.split(' ').forEach(function(kw) {\n var pair = kw.split('|');\n compiled_keywords[pair[0]] = [className, pair[1] ? Number(pair[1]) : 1];\n });\n };\n\n if (typeof mode.keywords === 'string') { // string\n flatten('keyword', mode.keywords);\n } else {\n objectKeys(mode.keywords).forEach(function (className) {\n flatten(className, mode.keywords[className]);\n });\n }\n mode.keywords = compiled_keywords;\n }\n mode.lexemesRe = langRe(mode.lexemes || /\\w+/, true);\n\n if (parent) {\n if (mode.beginKeywords) {\n mode.begin = '\\\\b(' + mode.beginKeywords.split(' ').join('|') + ')\\\\b';\n }\n if (!mode.begin)\n mode.begin = /\\B|\\b/;\n mode.beginRe = langRe(mode.begin);\n if (mode.endSameAsBegin)\n mode.end = mode.begin;\n if (!mode.end && !mode.endsWithParent)\n mode.end = /\\B|\\b/;\n if (mode.end)\n mode.endRe = langRe(mode.end);\n mode.terminator_end = reStr(mode.end) || '';\n if (mode.endsWithParent && parent.terminator_end)\n mode.terminator_end += (mode.end ? '|' : '') + parent.terminator_end;\n }\n if (mode.illegal)\n mode.illegalRe = langRe(mode.illegal);\n if (mode.relevance == null)\n mode.relevance = 1;\n if (!mode.contains) {\n mode.contains = [];\n }\n mode.contains = Array.prototype.concat.apply([], mode.contains.map(function(c) {\n return expand_mode(c === 'self' ? mode : c)\n }));\n mode.contains.forEach(function(c) {compileMode(c, mode);});\n\n if (mode.starts) {\n compileMode(mode.starts, parent);\n }\n\n var terminators =\n mode.contains.map(function(c) {\n return c.beginKeywords ? '\\\\.?(' + c.begin + ')\\\\.?' : c.begin;\n })\n .concat([mode.terminator_end, mode.illegal])\n .map(reStr)\n .filter(Boolean);\n mode.terminators = terminators.length ? langRe(terminators.join('|'), true) : {exec: function(/*s*/) {return null;}};\n }\n\n compileMode(language);\n }\n\n /*\n Core highlighting function. Accepts a language name, or an alias, and a\n string with the code to highlight. Returns an object with the following\n properties:\n\n - relevance (int)\n - value (an HTML string with highlighting markup)\n\n */\n function highlight(name, value, ignore_illegals, continuation) {\n\n function escapeRe(value) {\n return new RegExp(value.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'm');\n }\n\n function subMode(lexeme, mode) {\n var i, length;\n\n for (i = 0, length = mode.contains.length; i < length; i++) {\n if (testRe(mode.contains[i].beginRe, lexeme)) {\n if (mode.contains[i].endSameAsBegin) {\n mode.contains[i].endRe = escapeRe( mode.contains[i].beginRe.exec(lexeme)[0] );\n }\n return mode.contains[i];\n }\n }\n }\n\n function endOfMode(mode, lexeme) {\n if (testRe(mode.endRe, lexeme)) {\n while (mode.endsParent && mode.parent) {\n mode = mode.parent;\n }\n return mode;\n }\n if (mode.endsWithParent) {\n return endOfMode(mode.parent, lexeme);\n }\n }\n\n function isIllegal(lexeme, mode) {\n return !ignore_illegals && testRe(mode.illegalRe, lexeme);\n }\n\n function keywordMatch(mode, match) {\n var match_str = language.case_insensitive ? match[0].toLowerCase() : match[0];\n return mode.keywords.hasOwnProperty(match_str) && mode.keywords[match_str];\n }\n\n function buildSpan(classname, insideSpan, leaveOpen, noPrefix) {\n var classPrefix = noPrefix ? '' : options.classPrefix,\n openSpan = '<span class=\"' + classPrefix,\n closeSpan = leaveOpen ? '' : spanEndTag\n\n openSpan += classname + '\">';\n\n return openSpan + insideSpan + closeSpan;\n }\n\n function processKeywords() {\n var keyword_match, last_index, match, result;\n\n if (!top.keywords)\n return escape(mode_buffer);\n\n result = '';\n last_index = 0;\n top.lexemesRe.lastIndex = 0;\n match = top.lexemesRe.exec(mode_buffer);\n\n while (match) {\n result += escape(mode_buffer.substring(last_index, match.index));\n keyword_match = keywordMatch(top, match);\n if (keyword_match) {\n relevance += keyword_match[1];\n result += buildSpan(keyword_match[0], escape(match[0]));\n } else {\n result += escape(match[0]);\n }\n last_index = top.lexemesRe.lastIndex;\n match = top.lexemesRe.exec(mode_buffer);\n }\n return result + escape(mode_buffer.substr(last_index));\n }\n\n function processSubLanguage() {\n var explicit = typeof top.subLanguage === 'string';\n if (explicit && !languages[top.subLanguage]) {\n return escape(mode_buffer);\n }\n\n var result = explicit ?\n highlight(top.subLanguage, mode_buffer, true, continuations[top.subLanguage]) :\n highlightAuto(mode_buffer, top.subLanguage.length ? top.subLanguage : undefined);\n\n // Counting embedded language score towards the host language may be disabled\n // with zeroing the containing mode relevance. Usecase in point is Markdown that\n // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n // score.\n if (top.relevance > 0) {\n relevance += result.relevance;\n }\n if (explicit) {\n continuations[top.subLanguage] = result.top;\n }\n return buildSpan(result.language, result.value, false, true);\n }\n\n function processBuffer() {\n result += (top.subLanguage != null ? processSubLanguage() : processKeywords());\n mode_buffer = '';\n }\n\n function startNewMode(mode) {\n result += mode.className? buildSpan(mode.className, '', true): '';\n top = Object.create(mode, {parent: {value: top}});\n }\n\n function processLexeme(buffer, lexeme) {\n\n mode_buffer += buffer;\n\n if (lexeme == null) {\n processBuffer();\n return 0;\n }\n\n var new_mode = subMode(lexeme, top);\n if (new_mode) {\n if (new_mode.skip) {\n mode_buffer += lexeme;\n } else {\n if (new_mode.excludeBegin) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (!new_mode.returnBegin && !new_mode.excludeBegin) {\n mode_buffer = lexeme;\n }\n }\n startNewMode(new_mode, lexeme);\n return new_mode.returnBegin ? 0 : lexeme.length;\n }\n\n var end_mode = endOfMode(top, lexeme);\n if (end_mode) {\n var origin = top;\n if (origin.skip) {\n mode_buffer += lexeme;\n } else {\n if (!(origin.returnEnd || origin.excludeEnd)) {\n mode_buffer += lexeme;\n }\n processBuffer();\n if (origin.excludeEnd) {\n mode_buffer = lexeme;\n }\n }\n do {\n if (top.className) {\n result += spanEndTag;\n }\n if (!top.skip && !top.subLanguage) {\n relevance += top.relevance;\n }\n top = top.parent;\n } while (top !== end_mode.parent);\n if (end_mode.starts) {\n if (end_mode.endSameAsBegin) {\n end_mode.starts.endRe = end_mode.endRe;\n }\n startNewMode(end_mode.starts, '');\n }\n return origin.returnEnd ? 0 : lexeme.length;\n }\n\n if (isIllegal(lexeme, top))\n throw new Error('Illegal lexeme \"' + lexeme + '\" for mode \"' + (top.className || '<unnamed>') + '\"');\n\n /*\n Parser should not reach this point as all types of lexemes should be caught\n earlier, but if it does due to some bug make sure it advances at least one\n character forward to prevent infinite looping.\n */\n mode_buffer += lexeme;\n return lexeme.length || 1;\n }\n\n var language = getLanguage(name);\n if (!language) {\n throw new Error('Unknown language: \"' + name + '\"');\n }\n\n compileLanguage(language);\n var top = continuation || language;\n var continuations = {}; // keep continuations for sub-languages\n var result = '', current;\n for(current = top; current !== language; current = current.parent) {\n if (current.className) {\n result = buildSpan(current.className, '', true) + result;\n }\n }\n var mode_buffer = '';\n var relevance = 0;\n try {\n var match, count, index = 0;\n while (true) {\n top.terminators.lastIndex = index;\n match = top.terminators.exec(value);\n if (!match)\n break;\n count = processLexeme(value.substring(index, match.index), match[0]);\n index = match.index + count;\n }\n processLexeme(value.substr(index));\n for(current = top; current.parent; current = current.parent) { // close dangling modes\n if (current.className) {\n result += spanEndTag;\n }\n }\n return {\n relevance: relevance,\n value: result,\n language: name,\n top: top\n };\n } catch (e) {\n if (e.message && e.message.indexOf('Illegal') !== -1) {\n return {\n relevance: 0,\n value: escape(value)\n };\n } else {\n throw e;\n }\n }\n }\n\n /*\n Highlighting with language detection. Accepts a string with the code to\n highlight. Returns an object with the following properties:\n\n - language (detected language)\n - relevance (int)\n - value (an HTML string with highlighting markup)\n - second_best (object with the same structure for second-best heuristically\n detected language, may be absent)\n\n */\n function highlightAuto(text, languageSubset) {\n languageSubset = languageSubset || options.languages || objectKeys(languages);\n var result = {\n relevance: 0,\n value: escape(text)\n };\n var second_best = result;\n languageSubset.filter(getLanguage).filter(autoDetection).forEach(function(name) {\n var current = highlight(name, text, false);\n current.language = name;\n if (current.relevance > second_best.relevance) {\n second_best = current;\n }\n if (current.relevance > result.relevance) {\n second_best = result;\n result = current;\n }\n });\n if (second_best.language) {\n result.second_best = second_best;\n }\n return result;\n }\n\n /*\n Post-processing of the highlighted markup:\n\n - replace TABs with something more useful\n - replace real line-breaks with '<br>' for non-pre containers\n\n */\n function fixMarkup(value) {\n return !(options.tabReplace || options.useBR)\n ? value\n : value.replace(fixMarkupRe, function(match, p1) {\n if (options.useBR && match === '\\n') {\n return '<br>';\n } else if (options.tabReplace) {\n return p1.replace(/\\t/g, options.tabReplace);\n }\n return '';\n });\n }\n\n function buildClassName(prevClassName, currentLang, resultLang) {\n var language = currentLang ? aliases[currentLang] : resultLang,\n result = [prevClassName.trim()];\n\n if (!prevClassName.match(/\\bhljs\\b/)) {\n result.push('hljs');\n }\n\n if (prevClassName.indexOf(language) === -1) {\n result.push(language);\n }\n\n return result.join(' ').trim();\n }\n\n /*\n Applies highlighting to a DOM node containing code. Accepts a DOM node and\n two optional parameters for fixMarkup.\n */\n function highlightBlock(block) {\n var node, originalStream, result, resultNode, text;\n var language = blockLanguage(block);\n\n if (isNotHighlighted(language))\n return;\n\n if (options.useBR) {\n node = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n node.innerHTML = block.innerHTML.replace(/\\n/g, '').replace(/<br[ \\/]*>/g, '\\n');\n } else {\n node = block;\n }\n text = node.textContent;\n result = language ? highlight(language, text, true) : highlightAuto(text);\n\n originalStream = nodeStream(node);\n if (originalStream.length) {\n resultNode = document.createElementNS('http://www.w3.org/1999/xhtml', 'div');\n resultNode.innerHTML = result.value;\n result.value = mergeStreams(originalStream, nodeStream(resultNode), text);\n }\n result.value = fixMarkup(result.value);\n\n block.innerHTML = result.value;\n block.className = buildClassName(block.className, language, result.language);\n block.result = {\n language: result.language,\n re: result.relevance\n };\n if (result.second_best) {\n block.second_best = {\n language: result.second_best.language,\n re: result.second_best.relevance\n };\n }\n }\n\n /*\n Updates highlight.js global options with values passed in the form of an object.\n */\n function configure(user_options) {\n options = inherit(options, user_options);\n }\n\n /*\n Applies highlighting to all <pre><code>..</code></pre> blocks on a page.\n */\n function initHighlighting() {\n if (initHighlighting.called)\n return;\n initHighlighting.called = true;\n\n var blocks = document.querySelectorAll('pre code');\n ArrayProto.forEach.call(blocks, highlightBlock);\n }\n\n /*\n Attaches highlighting to the page load event.\n */\n function initHighlightingOnLoad() {\n addEventListener('DOMContentLoaded', initHighlighting, false);\n addEventListener('load', initHighlighting, false);\n }\n\n function registerLanguage(name, language) {\n var lang = languages[name] = language(hljs);\n if (lang.aliases) {\n lang.aliases.forEach(function(alias) {aliases[alias] = name;});\n }\n }\n\n function listLanguages() {\n return objectKeys(languages);\n }\n\n function getLanguage(name) {\n name = (name || '').toLowerCase();\n return languages[name] || languages[aliases[name]];\n }\n\n function autoDetection(name) {\n name = (name || '').toLowerCase();\n return !languages[name].disableAutodetect;\n }\n\n /* Interface definition */\n\n hljs.highlight = highlight;\n hljs.highlightAuto = highlightAuto;\n hljs.fixMarkup = fixMarkup;\n hljs.highlightBlock = highlightBlock;\n hljs.configure = configure;\n hljs.initHighlighting = initHighlighting;\n hljs.initHighlightingOnLoad = initHighlightingOnLoad;\n hljs.registerLanguage = registerLanguage;\n hljs.listLanguages = listLanguages;\n hljs.getLanguage = getLanguage;\n hljs.autoDetection = autoDetection;\n hljs.inherit = inherit;\n\n // Common regexps\n hljs.IDENT_RE = '[a-zA-Z]\\\\w*';\n hljs.UNDERSCORE_IDENT_RE = '[a-zA-Z_]\\\\w*';\n hljs.NUMBER_RE = '\\\\b\\\\d+(\\\\.\\\\d+)?';\n hljs.C_NUMBER_RE = '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)'; // 0x..., 0..., decimal, float\n hljs.BINARY_NUMBER_RE = '\\\\b(0b[01]+)'; // 0b...\n hljs.RE_STARTERS_RE = '!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n\n // Common modes\n hljs.BACKSLASH_ESCAPE = {\n begin: '\\\\\\\\[\\\\s\\\\S]', relevance: 0\n };\n hljs.APOS_STRING_MODE = {\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n hljs.QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n hljs.PHRASAL_WORDS_MODE = {\n begin: /\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b/\n };\n hljs.COMMENT = function (begin, end, inherits) {\n var mode = hljs.inherit(\n {\n className: 'comment',\n begin: begin, end: end,\n contains: []\n },\n inherits || {}\n );\n mode.contains.push(hljs.PHRASAL_WORDS_MODE);\n mode.contains.push({\n className: 'doctag',\n begin: '(?:TODO|FIXME|NOTE|BUG|XXX):',\n relevance: 0\n });\n return mode;\n };\n hljs.C_LINE_COMMENT_MODE = hljs.COMMENT('//', '$');\n hljs.C_BLOCK_COMMENT_MODE = hljs.COMMENT('/\\\\*', '\\\\*/');\n hljs.HASH_COMMENT_MODE = hljs.COMMENT('#', '$');\n hljs.NUMBER_MODE = {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n };\n hljs.C_NUMBER_MODE = {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0\n };\n hljs.BINARY_NUMBER_MODE = {\n className: 'number',\n begin: hljs.BINARY_NUMBER_RE,\n relevance: 0\n };\n hljs.CSS_NUMBER_MODE = {\n className: 'number',\n begin: hljs.NUMBER_RE + '(' +\n '%|em|ex|ch|rem' +\n '|vw|vh|vmin|vmax' +\n '|cm|mm|in|pt|pc|px' +\n '|deg|grad|rad|turn' +\n '|s|ms' +\n '|Hz|kHz' +\n '|dpi|dpcm|dppx' +\n ')?',\n relevance: 0\n };\n hljs.REGEXP_MODE = {\n className: 'regexp',\n begin: /\\//, end: /\\/[gimuy]*/,\n illegal: /\\n/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n begin: /\\[/, end: /\\]/,\n relevance: 0,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n hljs.TITLE_MODE = {\n className: 'title',\n begin: hljs.IDENT_RE,\n relevance: 0\n };\n hljs.UNDERSCORE_TITLE_MODE = {\n className: 'title',\n begin: hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n };\n hljs.METHOD_GUARD = {\n // excludes method names from keyword processing\n begin: '\\\\.\\\\s*' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n };\n\n return hljs;\n}));\n","module.exports = function(hljs){\n\n // общий паттерн для определения идентификаторов\n var UNDERSCORE_IDENT_RE = '[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+';\n \n // v7 уникальные ключевые слова, отсутствующие в v8 ==> keyword\n var v7_keywords =\n 'далее ';\n\n // v8 ключевые слова ==> keyword\n var v8_keywords =\n 'возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли ' +\n 'конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ';\n\n // keyword : ключевые слова\n var KEYWORD = v7_keywords + v8_keywords;\n \n // v7 уникальные директивы, отсутствующие в v8 ==> meta-keyword\n var v7_meta_keywords =\n 'загрузитьизфайла ';\n\n // v8 ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях ==> meta-keyword\n var v8_meta_keywords =\n 'вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер ' +\n 'наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед ' +\n 'после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ';\n\n // meta-keyword : ключевые слова в инструкциях препроцессора, директивах компиляции, аннотациях\n var METAKEYWORD = v7_meta_keywords + v8_meta_keywords;\n\n // v7 системные константы ==> built_in\n var v7_system_constants =\n 'разделительстраниц разделительстрок символтабуляции ';\n \n // v7 уникальные методы глобального контекста, отсутствующие в v8 ==> built_in\n var v7_global_context_methods =\n 'ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов ' +\n 'датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя ' +\n 'кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца ' +\n 'коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид ' +\n 'назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца ' +\n 'начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов ' +\n 'основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута ' +\n 'получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта ' +\n 'префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына ' +\n 'рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента ' +\n 'счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ';\n \n // v8 методы глобального контекста ==> built_in\n var v8_global_context_methods =\n 'acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока ' +\n 'xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ' +\n 'ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации ' +\n 'выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода ' +\n 'деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы ' +\n 'загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации ' +\n 'заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию ' +\n 'значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла ' +\n 'изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке ' +\n 'каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку ' +\n 'кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты ' +\n 'конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы ' +\n 'копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти ' +\n 'найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы ' +\n 'началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя ' +\n 'начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты ' +\n 'начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов ' +\n 'начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя ' +\n 'начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога ' +\n 'начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией ' +\n 'начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы ' +\n 'номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения ' +\n 'обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении ' +\n 'отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения ' +\n 'открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально ' +\n 'отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа ' +\n 'перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту ' +\n 'подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения ' +\n 'подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки ' +\n 'показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение ' +\n 'показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя ' +\n 'получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса ' +\n 'получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора ' +\n 'получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса ' +\n 'получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации ' +\n 'получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла ' +\n 'получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации ' +\n 'получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления ' +\n 'получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу ' +\n 'получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы ' +\n 'получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет ' +\n 'получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима ' +\n 'получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения ' +\n 'получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути ' +\n 'получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы ' +\n 'получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю ' +\n 'получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных ' +\n 'получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию ' +\n 'получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище ' +\n 'поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода ' +\n 'представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение ' +\n 'прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока ' +\n 'рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных ' +\n 'раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени ' +\n 'смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить ' +\n 'состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс ' +\n 'строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений '+\n 'стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах ' +\n 'текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации ' +\n 'текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы ' +\n 'удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим ' +\n 'установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту ' +\n 'установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных ' +\n 'установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации ' +\n 'установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения ' +\n 'установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования ' +\n 'установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима ' +\n 'установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим ' +\n 'установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией ' +\n 'установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы ' +\n 'установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса ' +\n 'формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища ';\n\n // v8 свойства глобального контекста ==> built_in\n var v8_global_context_property =\n 'wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы ' +\n 'внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль ' +\n 'документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты ' +\n 'историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений ' +\n 'отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик ' +\n 'планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок ' +\n 'рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений ' +\n 'регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа ' +\n 'средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек ' +\n 'хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков ' +\n 'хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ';\n\n // built_in : встроенные или библиотечные объекты (константы, классы, функции)\n var BUILTIN =\n v7_system_constants +\n v7_global_context_methods + v8_global_context_methods +\n v8_global_context_property;\n \n // v8 системные наборы значений ==> class\n var v8_system_sets_of_values =\n 'webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля ';\n\n // v8 системные перечисления - интерфейсные ==> class\n var v8_system_enums_interface =\n 'автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий ' +\n 'анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы ' +\n 'вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы ' +\n 'виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя ' +\n 'видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение ' +\n 'горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы ' +\n 'группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания ' +\n 'интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки ' +\n 'используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы ' +\n 'источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева ' +\n 'начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ' +\n 'ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме ' +\n 'отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы ' +\n 'отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы ' +\n 'отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы ' +\n 'отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска ' +\n 'отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования ' +\n 'отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта ' +\n 'отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы ' +\n 'поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы ' +\n 'поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы ' +\n 'положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы ' +\n 'положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы ' +\n 'положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском ' +\n 'положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы ' +\n 'размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта ' +\n 'режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты ' +\n 'режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения ' +\n 'режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра ' +\n 'режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения ' +\n 'режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы ' +\n 'режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки ' +\n 'режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание ' +\n 'сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы ' +\n 'способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление ' +\n 'статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы ' +\n 'типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы ' +\n 'типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления ' +\n 'типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы ' +\n 'типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы ' +\n 'типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений ' +\n 'типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы ' +\n 'типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы ' +\n 'типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы ' +\n 'факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени ' +\n 'форматкартинки ширинаподчиненныхэлементовформы ';\n\n // v8 системные перечисления - свойства прикладных объектов ==> class\n var v8_system_enums_objects_properties =\n 'виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса ' +\n 'использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения ' +\n 'использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента ';\n\n // v8 системные перечисления - планы обмена ==> class\n var v8_system_enums_exchange_plans =\n 'авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных ';\n\n // v8 системные перечисления - табличный документ ==> class\n var v8_system_enums_tabular_document =\n 'использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы ' +\n 'положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента ' +\n 'способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента ' +\n 'типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента ' +\n 'типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы ' +\n 'типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента ' +\n 'типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц ';\n\n // v8 системные перечисления - планировщик ==> class\n var v8_system_enums_sheduler =\n 'отображениевремениэлементовпланировщика ';\n\n // v8 системные перечисления - форматированный документ ==> class\n var v8_system_enums_formatted_document =\n 'типфайлаформатированногодокумента ';\n\n // v8 системные перечисления - запрос ==> class\n var v8_system_enums_query =\n 'обходрезультатазапроса типзаписизапроса ';\n\n // v8 системные перечисления - построитель отчета ==> class\n var v8_system_enums_report_builder =\n 'видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов ';\n\n // v8 системные перечисления - работа с файлами ==> class\n var v8_system_enums_files =\n 'доступкфайлу режимдиалогавыборафайла режимоткрытияфайла ';\n\n // v8 системные перечисления - построитель запроса ==> class\n var v8_system_enums_query_builder =\n 'типизмеренияпостроителязапроса ';\n\n // v8 системные перечисления - анализ данных ==> class\n var v8_system_enums_data_analysis =\n 'видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных ' +\n 'типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений ' +\n 'типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций ' +\n 'типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных ' +\n 'типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных ' +\n 'типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений ';\n\n // v8 системные перечисления - xml, json, xs, dom, xdto, web-сервисы ==> class\n var v8_system_enums_xml_json_xs_dom_xdto_ws =\n 'wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto ' +\n 'действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs ' +\n 'исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs ' +\n 'методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ' +\n 'ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson ' +\n 'типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs ' +\n 'форматдатыjson экранированиесимволовjson ';\n\n // v8 системные перечисления - система компоновки данных ==> class\n var v8_system_enums_data_composition_system =\n 'видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных ' +\n 'расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных ' +\n 'расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных ' +\n 'расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных ' +\n 'типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных ' +\n 'типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных ' +\n 'типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных ' +\n 'расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных ' +\n 'режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных ' +\n 'режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных '+\n 'вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных ' +\n 'использованиеусловногооформлениякомпоновкиданных ';\n\n // v8 системные перечисления - почта ==> class\n var v8_system_enums_email =\n 'важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения ' +\n 'способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты ' +\n 'статусразборапочтовогосообщения ';\n\n // v8 системные перечисления - журнал регистрации ==> class\n var v8_system_enums_logbook =\n 'режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации ';\n\n // v8 системные перечисления - криптография ==> class\n var v8_system_enums_cryptography =\n 'расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии ' +\n 'типхранилищасертификатовкриптографии ';\n\n // v8 системные перечисления - ZIP ==> class\n var v8_system_enums_zip =\n 'кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip ' +\n 'режимсохраненияпутейzip уровеньсжатияzip ';\n\n // v8 системные перечисления - \n // Блокировка данных, Фоновые задания, Автоматизированное тестирование,\n // Доставляемые уведомления, Встроенные покупки, Интернет, Работа с двоичными данными ==> class\n var v8_system_enums_other =\n 'звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных ' +\n 'сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp ';\n\n // v8 системные перечисления - схема запроса ==> class\n var v8_system_enums_request_schema =\n 'направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса ' +\n 'типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса ';\n\n // v8 системные перечисления - свойства объектов метаданных ==> class\n var v8_system_enums_properties_of_metadata_objects =\n 'httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления ' +\n 'видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование ' +\n 'использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения ' +\n 'использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита ' +\n 'назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных ' +\n 'оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи ' +\n 'основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении ' +\n 'периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений ' +\n 'повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение ' +\n 'разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита '+\n 'режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности ' +\n 'режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов ' +\n 'режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса ' +\n 'режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов ' +\n 'сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования ' +\n 'типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса ' +\n 'типномерадокумента типномеразадачи типформы удалениедвижений ';\n\n // v8 системные перечисления - разные ==> class\n var v8_system_enums_differents =\n 'важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения ' +\n 'вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки ' +\n 'видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак ' +\n 'использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога ' +\n 'кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных ' +\n 'отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения ' +\n 'режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных ' +\n 'способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter ' +\n 'типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты';\n\n // class: встроенные наборы значений, системные перечисления (содержат дочерние значения, обращения к которым через разыменование)\n var CLASS =\n v8_system_sets_of_values +\n v8_system_enums_interface +\n v8_system_enums_objects_properties +\n v8_system_enums_exchange_plans +\n v8_system_enums_tabular_document +\n v8_system_enums_sheduler +\n v8_system_enums_formatted_document +\n v8_system_enums_query +\n v8_system_enums_report_builder +\n v8_system_enums_files +\n v8_system_enums_query_builder +\n v8_system_enums_data_analysis +\n v8_system_enums_xml_json_xs_dom_xdto_ws +\n v8_system_enums_data_composition_system +\n v8_system_enums_email +\n v8_system_enums_logbook +\n v8_system_enums_cryptography +\n v8_system_enums_zip +\n v8_system_enums_other +\n v8_system_enums_request_schema +\n v8_system_enums_properties_of_metadata_objects +\n v8_system_enums_differents;\n\n // v8 общие объекты (у объектов есть конструктор, экземпляры создаются методом НОВЫЙ) ==> type\n var v8_shared_object =\n 'comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs ' +\n 'блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема ' +\n 'географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма ' +\n 'диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания ' +\n 'диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление ' +\n 'записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom ' +\n 'запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта ' +\n 'интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs ' +\n 'использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных ' +\n 'итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла ' +\n 'компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных ' +\n 'конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных ' +\n 'макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson ' +\n 'обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs ' +\n 'объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации ' +\n 'описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных ' +\n 'описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs ' +\n 'определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom ' +\n 'определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных ' +\n 'параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных ' +\n 'полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных ' +\n 'построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml ' +\n 'процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент ' +\n 'процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml ' +\n 'результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto ' +\n 'сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows ' +\n 'сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш ' +\n 'сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент ' +\n 'текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток ' +\n 'фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs ' +\n 'фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs ' +\n 'фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs ' +\n 'фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент ' +\n 'фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла ' +\n 'чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных ';\n\n // v8 универсальные коллекции значений ==> type\n var v8_universal_collection =\n 'comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура ' +\n 'фиксированноесоответствие фиксированныймассив ';\n\n // type : встроенные типы\n var TYPE =\n v8_shared_object +\n v8_universal_collection;\n\n // literal : примитивные типы\n var LITERAL = 'null истина ложь неопределено';\n \n // number : числа\n var NUMBERS = hljs.inherit(hljs.NUMBER_MODE);\n\n // string : строки\n var STRINGS = {\n className: 'string',\n begin: '\"|\\\\|', end: '\"|$',\n contains: [{begin: '\"\"'}]\n };\n\n // number : даты\n var DATE = {\n begin: \"'\", end: \"'\", excludeBegin: true, excludeEnd: true,\n contains: [\n {\n className: 'number',\n begin: '\\\\d{4}([\\\\.\\\\\\\\/:-]?\\\\d{2}){0,5}'\n }\n ]\n };\n \n // comment : комментарии\n var COMMENTS = hljs.inherit(hljs.C_LINE_COMMENT_MODE);\n \n // meta : инструкции препроцессора, директивы компиляции\n var META = {\n className: 'meta',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: '#|&', end: '$',\n keywords: {'meta-keyword': KEYWORD + METAKEYWORD},\n contains: [\n COMMENTS\n ]\n };\n \n // symbol : метка goto\n var SYMBOL = {\n className: 'symbol',\n begin: '~', end: ';|:', excludeEnd: true\n }; \n \n // function : объявление процедур и функций\n var FUNCTION = {\n className: 'function',\n lexemes: UNDERSCORE_IDENT_RE,\n variants: [\n {begin: 'процедура|функция', end: '\\\\)', keywords: 'процедура функция'},\n {begin: 'конецпроцедуры|конецфункции', keywords: 'конецпроцедуры конецфункции'}\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)', endsParent : true,\n contains: [\n {\n className: 'params',\n lexemes: UNDERSCORE_IDENT_RE,\n begin: UNDERSCORE_IDENT_RE, end: ',', excludeEnd: true, endsWithParent: true,\n keywords: {\n keyword: 'знач',\n literal: LITERAL\n },\n contains: [\n NUMBERS,\n STRINGS,\n DATE\n ]\n },\n COMMENTS\n ]\n },\n hljs.inherit(hljs.TITLE_MODE, {begin: UNDERSCORE_IDENT_RE})\n ]\n };\n\n return {\n case_insensitive: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: {\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n type: TYPE,\n literal: LITERAL\n },\n contains: [\n META,\n FUNCTION,\n COMMENTS,\n SYMBOL,\n NUMBERS,\n STRINGS,\n DATE\n ] \n }\n};","module.exports = function(hljs) {\n var regexes = {\n ruleDeclaration: \"^[a-zA-Z][a-zA-Z0-9-]*\",\n unexpectedChars: \"[!@#$^&',?+~`|:]\"\n };\n\n var keywords = [\n \"ALPHA\",\n \"BIT\",\n \"CHAR\",\n \"CR\",\n \"CRLF\",\n \"CTL\",\n \"DIGIT\",\n \"DQUOTE\",\n \"HEXDIG\",\n \"HTAB\",\n \"LF\",\n \"LWSP\",\n \"OCTET\",\n \"SP\",\n \"VCHAR\",\n \"WSP\"\n ];\n\n var commentMode = hljs.COMMENT(\";\", \"$\");\n\n var terminalBinaryMode = {\n className: \"symbol\",\n begin: /%b[0-1]+(-[0-1]+|(\\.[0-1]+)+){0,1}/\n };\n\n var terminalDecimalMode = {\n className: \"symbol\",\n begin: /%d[0-9]+(-[0-9]+|(\\.[0-9]+)+){0,1}/\n };\n\n var terminalHexadecimalMode = {\n className: \"symbol\",\n begin: /%x[0-9A-F]+(-[0-9A-F]+|(\\.[0-9A-F]+)+){0,1}/,\n };\n\n var caseSensitivityIndicatorMode = {\n className: \"symbol\",\n begin: /%[si]/\n };\n\n var ruleDeclarationMode = {\n begin: regexes.ruleDeclaration + '\\\\s*=',\n returnBegin: true,\n end: /=/,\n relevance: 0,\n contains: [{className: \"attribute\", begin: regexes.ruleDeclaration}]\n };\n\n return {\n illegal: regexes.unexpectedChars,\n keywords: keywords.join(\" \"),\n contains: [\n ruleDeclarationMode,\n commentMode,\n terminalBinaryMode,\n terminalDecimalMode,\n terminalHexadecimalMode,\n caseSensitivityIndicatorMode,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // Other numbers\n {\n className: 'number',\n begin: '\\\\b\\\\d+\\\\b',\n relevance: 0\n },\n // Requests\n {\n className: 'string',\n begin: '\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)', end: '\"',\n keywords: 'GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE',\n illegal: '\\\\n',\n relevance: 10\n },\n // Dates\n {\n className: 'string',\n begin: /\\[/, end: /\\]/,\n illegal: '\\\\n'\n },\n // Strings\n {\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n var AS3_REST_ARG_MODE = {\n className: 'rest_arg',\n begin: '[.]{3}', end: IDENT_RE,\n relevance: 10\n };\n\n return {\n aliases: ['as'],\n keywords: {\n keyword: 'as break case catch class const continue default delete do dynamic each ' +\n 'else extends final finally for function get if implements import in include ' +\n 'instanceof interface internal is namespace native new override package private ' +\n 'protected public return set static super switch this throw try typeof use var void ' +\n 'while with',\n literal: 'true false null undefined'\n },\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'class',\n beginKeywords: 'package', end: '{',\n contains: [hljs.TITLE_MODE]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.TITLE_MODE\n ]\n },\n {\n className: 'meta',\n beginKeywords: 'import include', end: ';',\n keywords: {'meta-keyword': 'import include'}\n },\n {\n className: 'function',\n beginKeywords: 'function', end: '[{;]', excludeEnd: true,\n illegal: '\\\\S',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AS3_REST_ARG_MODE\n ]\n },\n {\n begin: ':\\\\s*' + IDENT_FUNC_RETURN_TYPE_RE\n }\n ]\n },\n hljs.METHOD_GUARD\n ],\n illegal: /#/\n };\n};","module.exports = // We try to support full Ada2012\n//\n// We highlight all appearances of types, keywords, literals (string, char, number, bool)\n// and titles (user defined function/procedure/package)\n// CSS classes are set accordingly\n//\n// Languages causing problems for language detection:\n// xml (broken by Foo : Bar type), elm (broken by Foo : Bar type), vbscript-html (broken by body keyword)\n// sql (ada default.txt has a lot of sql keywords)\n\nfunction(hljs) {\n // Regular expression for Ada numeric literals.\n // stolen form the VHDL highlighter\n\n // Decimal literal:\n var INTEGER_RE = '\\\\d(_|\\\\d)*';\n var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n\n // Based literal:\n var BASED_INTEGER_RE = '\\\\w+';\n var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n // Identifier regex\n var ID_REGEX = '[A-Za-z](_?[A-Za-z0-9.])*';\n\n // bad chars, only allowed in literals\n var BAD_CHARS = '[]{}%#\\'\\\"'\n\n // Ada doesn't have block comments, only line comments\n var COMMENTS = hljs.COMMENT('--', '$');\n\n // variable declarations of the form\n // Foo : Bar := Baz;\n // where only Bar will be highlighted\n var VAR_DECLS = {\n // TODO: These spaces are not required by the Ada syntax\n // however, I have yet to see handwritten Ada code where\n // someone does not put spaces around :\n begin: '\\\\s+:\\\\s+', end: '\\\\s*(:=|;|\\\\)|=>|$)',\n // endsWithParent: true,\n // returnBegin: true,\n illegal: BAD_CHARS,\n contains: [\n {\n // workaround to avoid highlighting\n // named loops and declare blocks\n beginKeywords: 'loop for declare others',\n endsParent: true,\n },\n {\n // properly highlight all modifiers\n className: 'keyword',\n beginKeywords: 'not null constant access function procedure in out aliased exception'\n },\n {\n className: 'type',\n begin: ID_REGEX,\n endsParent: true,\n relevance: 0,\n }\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'abort else new return abs elsif not reverse abstract end ' +\n 'accept entry select access exception of separate aliased exit or some ' +\n 'all others subtype and for out synchronized array function overriding ' +\n 'at tagged generic package task begin goto pragma terminate ' +\n 'body private then if procedure type case in protected constant interface ' +\n 'is raise use declare range delay limited record when delta loop rem while ' +\n 'digits renames with do mod requeue xor',\n literal:\n 'True False',\n },\n contains: [\n COMMENTS,\n // strings \"foobar\"\n {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [{begin: /\"\"/, relevance: 0}]\n },\n // characters ''\n {\n // character literals always contain one char\n className: 'string',\n begin: /'.'/\n },\n {\n // number literals\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n // Attributes\n className: 'symbol',\n begin: \"'\" + ID_REGEX,\n },\n {\n // package definition, maybe inside generic\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?(\\\\bprivate\\\\s+)?\\\\bpackage\\\\s+(\\\\bbody\\\\s+)?', end: '(is|$)',\n keywords: 'package body',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n {\n // function/procedure declaration/definition\n // maybe inside generic\n begin: '(\\\\b(with|overriding)\\\\s+)?\\\\b(function|procedure)\\\\s+', end: '(\\\\bis|\\\\bwith|\\\\brenames|\\\\)\\\\s*;)',\n keywords: 'overriding function procedure with is renames return',\n // we need to re-match the 'function' keyword, so that\n // the title mode below matches only exactly once\n returnBegin: true,\n contains:\n [\n COMMENTS,\n {\n // name of the function/procedure\n className: 'title',\n begin: '(\\\\bwith\\\\s+)?\\\\b(function|procedure)\\\\s+',\n end: '(\\\\(|\\\\s+|$)',\n excludeBegin: true,\n excludeEnd: true,\n illegal: BAD_CHARS\n },\n // 'self'\n // // parameter types\n VAR_DECLS,\n {\n // return type\n className: 'type',\n begin: '\\\\breturn\\\\s+', end: '(\\\\s+|;|$)',\n keywords: 'return',\n excludeBegin: true,\n excludeEnd: true,\n // we are done with functions\n endsParent: true,\n illegal: BAD_CHARS\n\n },\n ]\n },\n {\n // new type declarations\n // maybe inside generic\n className: 'type',\n begin: '\\\\b(sub)?type\\\\s+', end: '\\\\s+',\n keywords: 'type',\n excludeBegin: true,\n illegal: BAD_CHARS\n },\n\n // see comment above the definition\n VAR_DECLS,\n\n // no markup\n // relevance boosters for small snippets\n // {begin: '\\\\s*=>\\\\s*'},\n // {begin: '\\\\s*:=\\\\s*'},\n // {begin: '\\\\s+:=\\\\s+'},\n ]\n };\n};","module.exports = function(hljs) {\n var builtInTypeMode = {\n className: 'built_in',\n begin: '\\\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)'\n };\n\n var objectHandleMode = {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+@'\n };\n\n var genericMode = {\n className: 'keyword',\n begin: '<', end: '>',\n contains: [ builtInTypeMode, objectHandleMode ]\n };\n\n builtInTypeMode.contains = [ genericMode ];\n objectHandleMode.contains = [ genericMode ];\n\n return {\n aliases: [ 'asc' ],\n\n keywords:\n 'for in|0 break continue while do|0 return if else case switch namespace is cast ' +\n 'or and xor not get|0 in inout|10 out override set|0 private public const default|0 ' +\n 'final shared external mixin|10 enum typedef funcdef this super import from interface',\n\n // avoid close detection with C# and JS\n illegal: '(^using\\\\s+[A-Za-z0-9_\\\\.]+;$|\\\\bfunction\\s*[^\\\\(])',\n\n contains: [\n { // 'strings'\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n { // \"strings\"\n className: 'string',\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [ hljs.BACKSLASH_ESCAPE ],\n relevance: 0\n },\n\n // \"\"\"heredoc strings\"\"\"\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n\n hljs.C_LINE_COMMENT_MODE, // single-line comments\n hljs.C_BLOCK_COMMENT_MODE, // comment blocks\n\n { // interface or namespace declaration\n beginKeywords: 'interface namespace', end: '{',\n illegal: '[;.\\\\-]',\n contains: [\n { // interface or namespace name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n },\n\n { // class declaration\n beginKeywords: 'class', end: '{',\n illegal: '[;.\\\\-]',\n contains: [\n { // class name\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+',\n contains: [\n {\n begin: '[:,]\\\\s*',\n contains: [\n {\n className: 'symbol',\n begin: '[a-zA-Z0-9_]+'\n }\n ]\n }\n ]\n }\n ]\n },\n\n builtInTypeMode, // built-in types\n objectHandleMode, // object handles\n\n { // literals\n className: 'literal',\n begin: '\\\\b(null|true|false)'\n },\n\n { // numbers\n className: 'number',\n begin: '(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?f?|\\\\.\\\\d+f?)([eE][-+]?\\\\d+f?)?)'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUMBER = {className: 'number', begin: '[\\\\$%]\\\\d+'};\n return {\n aliases: ['apacheconf'],\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {className: 'section', begin: '</?', end: '>'},\n {\n className: 'attribute',\n begin: /\\w+/,\n relevance: 0,\n // keywords aren’t needed for highlighting per se, they only boost relevance\n // for a very generally defined mode (starts with a word, ends with line-end\n keywords: {\n nomarkup:\n 'order deny allow setenv rewriterule rewriteengine rewritecond documentroot ' +\n 'sethandler errordocument loadmodule options header listen serverroot ' +\n 'servername'\n },\n starts: {\n end: /$/,\n relevance: 0,\n keywords: {\n literal: 'on off all'\n },\n contains: [\n {\n className: 'meta',\n begin: '\\\\s\\\\[', end: '\\\\]$'\n },\n {\n className: 'variable',\n begin: '[\\\\$%]\\\\{', end: '\\\\}',\n contains: ['self', NUMBER]\n },\n NUMBER,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ],\n illegal: /\\S/\n };\n};","module.exports = function(hljs) {\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: ''});\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', hljs.C_NUMBER_MODE, STRING]\n };\n var COMMENT_MODE_1 = hljs.COMMENT('--', '$');\n var COMMENT_MODE_2 = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self', COMMENT_MODE_1] //allow nesting\n }\n );\n var COMMENTS = [\n COMMENT_MODE_1,\n COMMENT_MODE_2,\n hljs.HASH_COMMENT_MODE\n ];\n\n return {\n aliases: ['osascript'],\n keywords: {\n keyword:\n 'about above after against and around as at back before beginning ' +\n 'behind below beneath beside between but by considering ' +\n 'contain contains continue copy div does eighth else end equal ' +\n 'equals error every exit fifth first for fourth from front ' +\n 'get given global if ignoring in into is it its last local me ' +\n 'middle mod my ninth not of on onto or over prop property put ref ' +\n 'reference repeat returning script second set seventh since ' +\n 'sixth some tell tenth that the|0 then third through thru ' +\n 'timeout times to transaction try until where while whose with ' +\n 'without',\n literal:\n 'AppleScript false linefeed return pi quote result space tab true',\n built_in:\n 'alias application boolean class constant date file integer list ' +\n 'number real record string text ' +\n 'activate beep count delay launch log offset read round ' +\n 'run say summarize write ' +\n 'character characters contents day frontmost id item length ' +\n 'month name paragraph paragraphs rest reverse running time version ' +\n 'weekday word words year'\n },\n contains: [\n STRING,\n hljs.C_NUMBER_MODE,\n {\n className: 'built_in',\n begin:\n '\\\\b(clipboard info|the clipboard|info for|list (disks|folder)|' +\n 'mount volume|path to|(close|open for) access|(get|set) eof|' +\n 'current date|do shell script|get volume settings|random number|' +\n 'set volume|system attribute|system info|time to GMT|' +\n '(load|run|store) script|scripting components|' +\n 'ASCII (character|number)|localized string|' +\n 'choose (application|color|file|file name|' +\n 'folder|from list|remote application|URL)|' +\n 'display (alert|dialog))\\\\b|^\\\\s*return\\\\b'\n },\n {\n className: 'literal',\n begin:\n '\\\\b(text item delimiters|current application|missing value)\\\\b'\n },\n {\n className: 'keyword',\n begin:\n '\\\\b(apart from|aside from|instead of|out of|greater than|' +\n \"isn't|(doesn't|does not) (equal|come before|come after|contain)|\" +\n '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' +\n 'contained by|comes (before|after)|a (ref|reference)|POSIX file|' +\n 'POSIX path|(date|time) string|quoted form)\\\\b'\n },\n {\n beginKeywords: 'on',\n illegal: '[${=;\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n }\n ].concat(COMMENTS),\n illegal: '//|->|=>|\\\\[\\\\['\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[A-Za-z_][0-9A-Za-z_]*';\n var KEYWORDS = {\n keyword:\n 'if for while var new function do return void else break',\n literal:\n 'true false null undefined NaN Infinity PI BackSlash DoubleQuote ForwardSlash NewLine SingleQuote Tab',\n built_in:\n 'Abs Acos Area AreaGeodetic Asin Atan Atan2 Average Boolean Buffer BufferGeodetic ' +\n 'Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd ' +\n 'DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance Distinct ' +\n 'DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetById FeatureSetByTitle ' +\n 'FeatureSetByUrl Filter First Floor Geometry Guid HasKey Hour IIf IndexOf Intersection ' +\n 'Intersects IsEmpty Length LengthGeodetic Log Max Mean Millisecond Min Minute Month ' +\n 'MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon ' +\n 'Polyline Pow Random Relate Reverse Round Second SetGeometry Sin Sort Sqrt Stdev Sum ' +\n 'SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TypeOf Union Variance ' +\n 'Weekday When Within Year '\n };\n var EXPRESSIONS;\n var SYMBOL = {\n className: 'symbol',\n begin: '\\\\$[feature|layer|map|value|view]+'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n var SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n var TEMPLATE_STRING = {\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ];\n var PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n aliases: ['arcade'],\n keywords: KEYWORDS,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n SYMBOL,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/, relevance: 0,\n contains: [\n {\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(return)\\\\b)\\\\s*',\n keywords: 'return',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/\n }\n ],\n illegal: /#(?!!)/\n };\n};","module.exports = function(hljs) {\n var CPP_PRIMITIVE_TYPES = {\n className: 'keyword',\n begin: '\\\\b[a-z\\\\d_]*_t\\\\b'\n };\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '(u8?|U|L)?\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n // TODO: This does not handle raw string literals with prefixes. Using\n // a single regex with backreferences would work (note to use *?\n // instead of * to make it non-greedy), but the mode.terminators\n // computation in highlight.js breaks the counting.\n begin: '(u8?|U|L)?R\"\\\\(', end: '\\\\)\"',\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: /#\\s*[a-z]+\\b/, end: /$/,\n keywords: {\n 'meta-keyword':\n 'if else elif endif define undef warning error line ' +\n 'pragma ifdef ifndef include'\n },\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: /<[^\\n>]*>/, end: /$/,\n illegal: '\\\\n',\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.IDENT_RE + '\\\\s*\\\\(';\n\n var CPP_KEYWORDS = {\n keyword: 'int float while private char catch import module export virtual operator sizeof ' +\n 'dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace ' +\n 'unsigned long volatile static protected bool template mutable if public friend ' +\n 'do goto auto void enum else break extern using asm case typeid ' +\n 'short reinterpret_cast|10 default double register explicit signed typename try this ' +\n 'switch continue inline delete alignof constexpr decltype ' +\n 'noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary ' +\n 'atomic_bool atomic_char atomic_schar ' +\n 'atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong ' +\n 'atomic_ullong new throw return ' +\n 'and or not',\n built_in: 'std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream ' +\n 'auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set ' +\n 'unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos ' +\n 'asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp ' +\n 'fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper ' +\n 'isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow ' +\n 'printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp ' +\n 'strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan ' +\n 'vfprintf vprintf vsprintf endl initializer_list unique_ptr',\n literal: 'true false nullptr NULL'\n };\n\n var EXPRESSION_CONTAINS = [\n CPP_PRIMITIVE_TYPES,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ];\n\n return {\n aliases: ['c', 'cc', 'h', 'c++', 'h++', 'hpp'],\n keywords: CPP_KEYWORDS,\n illegal: '</',\n contains: EXPRESSION_CONTAINS.concat([\n PREPROCESSOR,\n {\n begin: '\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<', end: '>',\n keywords: CPP_KEYWORDS,\n contains: ['self', CPP_PRIMITIVE_TYPES]\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: CPP_KEYWORDS\n },\n {\n // This mode covers expression context where we can't expect a function\n // definition and shouldn't highlight anything that looks like one:\n // `return some()`, `else if()`, `(x*sum(1, 2))`\n variants: [\n {begin: /=/, end: /;/},\n {begin: /\\(/, end: /\\)/},\n {beginKeywords: 'new throw return else', end: /;/}\n ],\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat([\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n contains: EXPRESSION_CONTAINS.concat(['self']),\n relevance: 0\n }\n ]),\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + hljs.IDENT_RE + '[\\\\*&\\\\s]+)+' + FUNCTION_TITLE,\n returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: CPP_KEYWORDS,\n illegal: /[^\\w\\s\\*&]/,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.TITLE_MODE],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES,\n // Count matching parentheses.\n {\n begin: /\\(/, end: /\\)/,\n keywords: CPP_KEYWORDS,\n relevance: 0,\n contains: [\n 'self',\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRINGS,\n NUMBERS,\n CPP_PRIMITIVE_TYPES\n ]\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class struct', end: /[{;:]/,\n contains: [\n {begin: /</, end: />/, contains: ['self']}, // skip generic stuff\n hljs.TITLE_MODE\n ]\n }\n ]),\n exports: {\n preprocessor: PREPROCESSOR,\n strings: STRINGS,\n keywords: CPP_KEYWORDS\n }\n };\n};","module.exports = function(hljs) {\n var CPP = hljs.getLanguage('cpp').exports;\n\treturn {\n keywords: {\n keyword:\n 'boolean byte word string String array ' + CPP.keywords.keyword,\n built_in:\n 'setup loop while catch for if do goto try switch case else ' +\n 'default break continue return ' +\n 'KeyboardController MouseController SoftwareSerial ' +\n 'EthernetServer EthernetClient LiquidCrystal ' +\n 'RobotControl GSMVoiceCall EthernetUDP EsploraTFT ' +\n 'HttpClient RobotMotor WiFiClient GSMScanner ' +\n 'FileSystem Scheduler GSMServer YunClient YunServer ' +\n 'IPAddress GSMClient GSMModem Keyboard Ethernet ' +\n 'Console GSMBand Esplora Stepper Process ' +\n 'WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage ' +\n 'Client Server GSMPIN FileIO Bridge Serial ' +\n 'EEPROM Stream Mouse Audio Servo File Task ' +\n 'GPRS WiFi Wire TFT GSM SPI SD ' +\n 'runShellCommandAsynchronously analogWriteResolution ' +\n 'retrieveCallingNumber printFirmwareVersion ' +\n 'analogReadResolution sendDigitalPortPair ' +\n 'noListenOnLocalhost readJoystickButton setFirmwareVersion ' +\n 'readJoystickSwitch scrollDisplayRight getVoiceCallStatus ' +\n 'scrollDisplayLeft writeMicroseconds delayMicroseconds ' +\n 'beginTransmission getSignalStrength runAsynchronously ' +\n 'getAsynchronously listenOnLocalhost getCurrentCarrier ' +\n 'readAccelerometer messageAvailable sendDigitalPorts ' +\n 'lineFollowConfig countryNameWrite runShellCommand ' +\n 'readStringUntil rewindDirectory readTemperature ' +\n 'setClockDivider readLightSensor endTransmission ' +\n 'analogReference detachInterrupt countryNameRead ' +\n 'attachInterrupt encryptionType readBytesUntil ' +\n 'robotNameWrite readMicrophone robotNameRead cityNameWrite ' +\n 'userNameWrite readJoystickY readJoystickX mouseReleased ' +\n 'openNextFile scanNetworks noInterrupts digitalWrite ' +\n 'beginSpeaker mousePressed isActionDone mouseDragged ' +\n 'displayLogos noAutoscroll addParameter remoteNumber ' +\n 'getModifiers keyboardRead userNameRead waitContinue ' +\n 'processInput parseCommand printVersion readNetworks ' +\n 'writeMessage blinkVersion cityNameRead readMessage ' +\n 'setDataMode parsePacket isListening setBitOrder ' +\n 'beginPacket isDirectory motorsWrite drawCompass ' +\n 'digitalRead clearScreen serialEvent rightToLeft ' +\n 'setTextSize leftToRight requestFrom keyReleased ' +\n 'compassRead analogWrite interrupts WiFiServer ' +\n 'disconnect playMelody parseFloat autoscroll ' +\n 'getPINUsed setPINUsed setTimeout sendAnalog ' +\n 'readSlider analogRead beginWrite createChar ' +\n 'motorsStop keyPressed tempoWrite readButton ' +\n 'subnetMask debugPrint macAddress writeGreen ' +\n 'randomSeed attachGPRS readString sendString ' +\n 'remotePort releaseAll mouseMoved background ' +\n 'getXChange getYChange answerCall getResult ' +\n 'voiceCall endPacket constrain getSocket writeJSON ' +\n 'getButton available connected findUntil readBytes ' +\n 'exitValue readGreen writeBlue startLoop IPAddress ' +\n 'isPressed sendSysex pauseMode gatewayIP setCursor ' +\n 'getOemKey tuneWrite noDisplay loadImage switchPIN ' +\n 'onRequest onReceive changePIN playFile noBuffer ' +\n 'parseInt overflow checkPIN knobRead beginTFT ' +\n 'bitClear updateIR bitWrite position writeRGB ' +\n 'highByte writeRed setSpeed readBlue noStroke ' +\n 'remoteIP transfer shutdown hangCall beginSMS ' +\n 'endWrite attached maintain noCursor checkReg ' +\n 'checkPUK shiftOut isValid shiftIn pulseIn ' +\n 'connect println localIP pinMode getIMEI ' +\n 'display noBlink process getBand running beginSD ' +\n 'drawBMP lowByte setBand release bitRead prepare ' +\n 'pointTo readRed setMode noFill remove listen ' +\n 'stroke detach attach noTone exists buffer ' +\n 'height bitSet circle config cursor random ' +\n 'IRread setDNS endSMS getKey micros ' +\n 'millis begin print write ready flush width ' +\n 'isPIN blink clear press mkdir rmdir close ' +\n 'point yield image BSSID click delay ' +\n 'read text move peek beep rect line open ' +\n 'seek fill size turn stop home find ' +\n 'step tone sqrt RSSI SSID ' +\n 'end bit tan cos sin pow map abs max ' +\n 'min get run put',\n literal:\n 'DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE ' +\n 'REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP ' +\n 'SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN ' +\n 'INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL ' +\n 'DEFAULT OUTPUT INPUT HIGH LOW'\n },\n contains: [\n CPP.preprocessor,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n case_insensitive: true,\n aliases: ['arm'],\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n meta:\n //GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg '+\n //ARM directives\n 'ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ',\n built_in:\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 '+ //standard registers\n 'pc lr sp ip sl sb fp '+ //typical regs plus backward compatibility\n 'a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 '+ //more regs and fp\n 'p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 '+ //coprocessor regs\n 'c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 '+ //more coproc\n 'q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 '+ //advanced SIMD NEON regs\n\n //program status registers\n 'cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf '+\n 'spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf '+\n\n //NEON and VFP registers\n 's0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 '+\n 's16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 '+\n 'd0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 '+\n 'd16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 ' +\n\n '{PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @'\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b('+ //mnemonics\n 'adc|'+\n '(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|'+\n 'and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|'+\n 'bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|'+\n 'setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|'+\n 'ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|'+\n 'mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|'+\n 'mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|'+\n 'mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|'+\n 'rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|'+\n 'stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|'+\n '[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|'+\n 'wfe|wfi|yield'+\n ')'+\n '(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?'+ //condition codes\n '[sptrx]?' , //legal postfixes\n end: '\\\\s'\n },\n hljs.COMMENT('[;@]', '$', {relevance: 0}),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|', end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n {begin: '[#$=]?0x[0-9a-f]+'}, //hex\n {begin: '[#$=]?0b[01]+'}, //bin\n {begin: '[#$=]\\\\d+'}, //literal\n {begin: '\\\\b\\\\d+'} //bare number\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n {begin: '^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+'}, //ARM syntax\n {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU ARM syntax\n {begin: '[=#]\\\\w+' } //label reference\n ],\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var XML_IDENT_RE = '[A-Za-z0-9\\\\._:-]+';\n var TAG_INTERNALS = {\n endsWithParent: true,\n illegal: /</,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: XML_IDENT_RE,\n relevance: 0\n },\n {\n begin: /=\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'string',\n endsParent: true,\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/},\n {begin: /[^\\s\"'=<>`]+/}\n ]\n }\n ]\n }\n ]\n };\n return {\n aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '<!DOCTYPE', end: '>',\n relevance: 10,\n contains: [{begin: '\\\\[', end: '\\\\]'}]\n },\n hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 10\n }\n ),\n {\n begin: '<\\\\!\\\\[CDATA\\\\[', end: '\\\\]\\\\]>',\n relevance: 10\n },\n {\n className: 'meta',\n begin: /<\\?xml/, end: /\\?>/, relevance: 10\n },\n {\n begin: /<\\?(php)?/, end: /\\?>/,\n subLanguage: 'php',\n contains: [\n // We don't want the php closing tag ?> to close the PHP block when\n // inside any of the following blocks:\n {begin: '/\\\\*', end: '\\\\*/', skip: true},\n {begin: 'b\"', end: '\"', skip: true},\n {begin: 'b\\'', end: '\\'', skip: true},\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null, className: null, contains: null, skip: true}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null, className: null, contains: null, skip: true})\n ]\n },\n {\n className: 'tag',\n /*\n The lookahead pattern (?=...) ensures that 'begin' only matches\n '<style' as a single word, followed by a whitespace or an\n ending braket. The '$' is needed for the lexeme to be recognized\n by hljs.subMode() that tests lexemes outside the stream.\n */\n begin: '<style(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'style'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '</style>', returnEnd: true,\n subLanguage: ['css', 'xml']\n }\n },\n {\n className: 'tag',\n // See the comment in the <style tag about the lookahead pattern\n begin: '<script(?=\\\\s|>|$)', end: '>',\n keywords: {name: 'script'},\n contains: [TAG_INTERNALS],\n starts: {\n end: '\\<\\/script\\>', returnEnd: true,\n subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']\n }\n },\n {\n className: 'tag',\n begin: '</?', end: '/?>',\n contains: [\n {\n className: 'name', begin: /[^\\/><\\s]+/, relevance: 0\n },\n TAG_INTERNALS\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['adoc'],\n contains: [\n // block comment\n hljs.COMMENT(\n '^/{4,}\\\\n',\n '\\\\n/{4,}$',\n // can also be done as...\n //'^/{4,}$',\n //'^/{4,}$',\n {\n relevance: 10\n }\n ),\n // line comment\n hljs.COMMENT(\n '^//',\n '$',\n {\n relevance: 0\n }\n ),\n // title\n {\n className: 'title',\n begin: '^\\\\.\\\\w.*$'\n },\n // example, admonition & sidebar blocks\n {\n begin: '^[=\\\\*]{4,}\\\\n',\n end: '\\\\n^[=\\\\*]{4,}$',\n relevance: 10\n },\n // headings\n {\n className: 'section',\n relevance: 10,\n variants: [\n {begin: '^(={1,5}) .+?( \\\\1)?$'},\n {begin: '^[^\\\\[\\\\]\\\\n]+?\\\\n[=\\\\-~\\\\^\\\\+]{2,}$'},\n ]\n },\n // document attributes\n {\n className: 'meta',\n begin: '^:.+?:',\n end: '\\\\s',\n excludeEnd: true,\n relevance: 10\n },\n // block attributes\n {\n className: 'meta',\n begin: '^\\\\[.+?\\\\]$',\n relevance: 0\n },\n // quoteblocks\n {\n className: 'quote',\n begin: '^_{4,}\\\\n',\n end: '\\\\n_{4,}$',\n relevance: 10\n },\n // listing and literal blocks\n {\n className: 'code',\n begin: '^[\\\\-\\\\.]{4,}\\\\n',\n end: '\\\\n[\\\\-\\\\.]{4,}$',\n relevance: 10\n },\n // passthrough blocks\n {\n begin: '^\\\\+{4,}\\\\n',\n end: '\\\\n\\\\+{4,}$',\n contains: [\n {\n begin: '<', end: '>',\n subLanguage: 'xml',\n relevance: 0\n }\n ],\n relevance: 10\n },\n // lists (can only capture indicators)\n {\n className: 'bullet',\n begin: '^(\\\\*+|\\\\-+|\\\\.+|[^\\\\n]+?::)\\\\s+'\n },\n // admonition\n {\n className: 'symbol',\n begin: '^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\\\s+',\n relevance: 10\n },\n // inline strong\n {\n className: 'strong',\n // must not follow a word character or be followed by an asterisk or space\n begin: '\\\\B\\\\*(?![\\\\*\\\\s])',\n end: '(\\\\n{2}|\\\\*)',\n // allow escaped asterisk followed by word char\n contains: [\n {\n begin: '\\\\\\\\*\\\\w',\n relevance: 0\n }\n ]\n },\n // inline emphasis\n {\n className: 'emphasis',\n // must not follow a word character or be followed by a single quote or space\n begin: '\\\\B\\'(?![\\'\\\\s])',\n end: '(\\\\n{2}|\\')',\n // allow escaped single quote followed by word char\n contains: [\n {\n begin: '\\\\\\\\\\'\\\\w',\n relevance: 0\n }\n ],\n relevance: 0\n },\n // inline emphasis (alt)\n {\n className: 'emphasis',\n // must not follow a word character or be followed by an underline or space\n begin: '_(?![_\\\\s])',\n end: '(\\\\n{2}|_)',\n relevance: 0\n },\n // inline smart quotes\n {\n className: 'string',\n variants: [\n {begin: \"``.+?''\"},\n {begin: \"`.+?'\"}\n ]\n },\n // inline code snippets (TODO should get same treatment as strong and emphasis)\n {\n className: 'code',\n begin: '(`.+?`|\\\\+.+?\\\\+)',\n relevance: 0\n },\n // indented literal block\n {\n className: 'code',\n begin: '^[ \\\\t]',\n end: '$',\n relevance: 0\n },\n // horizontal rules\n {\n begin: '^\\'{3,}[ \\\\t]*$',\n relevance: 10\n },\n // images and links\n {\n begin: '(link:)?(http|https|ftp|file|irc|image:?):\\\\S+\\\\[.*?\\\\]',\n returnBegin: true,\n contains: [\n {\n begin: '(link|image:?):',\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\w',\n end: '[^\\\\[]+',\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\\\[',\n end: '\\\\]',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 10\n }\n ]\n };\n};","module.exports = function (hljs) {\n var KEYWORDS =\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else extends implements break transient new catch instanceof byte super volatile case ' +\n 'assert short package default double public try this switch continue throws privileged ' +\n 'aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization ' +\n 'staticinitialization withincode target within execution getWithinTypeName handler ' +\n 'thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents '+\n 'warning error soft precedence thisAspectInstance';\n var SHORTKEYS = 'get set args call';\n return {\n keywords : KEYWORDS,\n illegal : /<\\/|#/,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className : 'class',\n beginKeywords : 'aspect',\n end : /[{;=]/,\n excludeEnd : true,\n illegal : /[:;\"\\[\\]]/,\n contains : [\n {\n beginKeywords : 'extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton'\n },\n hljs.UNDERSCORE_TITLE_MODE,\n {\n begin : /\\([^\\)]*/,\n end : /[)]+/,\n keywords : KEYWORDS + ' ' + SHORTKEYS,\n excludeEnd : false\n }\n ]\n },\n {\n className : 'class',\n beginKeywords : 'class interface',\n end : /[{;=]/,\n excludeEnd : true,\n relevance: 0,\n keywords : 'class interface',\n illegal : /[:\"\\[\\]]/,\n contains : [\n {beginKeywords : 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // AspectJ Constructs\n beginKeywords : 'pointcut after before around throwing returning',\n end : /[)]/,\n excludeEnd : false,\n illegal : /[\"\\[\\]]/,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin : true,\n contains : [hljs.UNDERSCORE_TITLE_MODE]\n }\n ]\n },\n {\n begin : /[:]/,\n returnBegin : true,\n end : /[{;]/,\n relevance: 0,\n excludeEnd : false,\n keywords : KEYWORDS,\n illegal : /[\"\\[\\]]/,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n keywords : KEYWORDS + ' ' + SHORTKEYS,\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE\n ]\n },\n {\n // this prevents 'new Name(...), or throw ...' from being recognized as a function definition\n beginKeywords : 'new throw',\n relevance : 0\n },\n {\n // the function class is a bit different for AspectJ compared to the Java language\n className : 'function',\n begin : /\\w+ +\\w+(\\.)?\\w+\\s*\\([^\\)]*\\)\\s*((throws)[\\w\\s,]+)?[\\{;]/,\n returnBegin : true,\n end : /[{;=]/,\n keywords : KEYWORDS,\n excludeEnd : true,\n contains : [\n {\n begin : hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(',\n returnBegin : true,\n relevance: 0,\n contains : [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className : 'params',\n begin : /\\(/, end : /\\)/,\n relevance: 0,\n keywords : KEYWORDS,\n contains : [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n // annotation is also used in this language\n className : 'meta',\n begin : '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]'\n };\n\n return {\n case_insensitive: true,\n aliases: [ 'ahk' ],\n keywords: {\n keyword: 'Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group',\n literal: 'A|0 true false NOT AND OR',\n built_in: 'ComSpec Clipboard ClipboardAll ErrorLevel',\n },\n contains: [\n {\n className: 'built_in',\n begin: 'A_[a-zA-Z0-9]+'\n },\n BACKTICK_ESCAPE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [BACKTICK_ESCAPE]}),\n hljs.COMMENT(';', '$', {relevance: 0}),\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE,\n relevance: 0\n },\n {\n className: 'subst', // FIXED\n begin: '%(?=[a-zA-Z0-9#_$@])', end: '%',\n illegal: '[^a-zA-Z0-9#_$@]'\n },\n {\n className: 'built_in',\n begin: '^\\\\s*\\\\w+\\\\s*,'\n //I don't really know if this is totally relevant\n },\n {\n className: 'meta', \n begin: '^\\\\s*#\\w+', end:'$',\n relevance: 0\n },\n {\n className: 'symbol',\n contains: [BACKTICK_ESCAPE],\n variants: [\n {begin: '^[^\\\\n\";]+::(?!=)'},\n {begin: '^[^\\\\n\";]+:(?!=)', relevance: 0} // zero relevance as it catches a lot of things\n // followed by a single ':' in many languages\n ]\n },\n {\n // consecutive commas, not for highlighting but just for relevance\n begin: ',\\\\s*,'\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = 'ByRef Case Const ContinueCase ContinueLoop ' +\n 'Default Dim Do Else ElseIf EndFunc EndIf EndSelect ' +\n 'EndSwitch EndWith Enum Exit ExitLoop For Func ' +\n 'Global If In Local Next ReDim Return Select Static ' +\n 'Step Switch Then To Until Volatile WEnd While With',\n\n LITERAL = 'True False And Null Not Or',\n\n BUILT_IN =\n 'Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait',\n\n COMMENT = {\n variants: [\n hljs.COMMENT(';', '$', {relevance: 0}),\n hljs.COMMENT('#cs', '#ce'),\n hljs.COMMENT('#comments-start', '#comments-end')\n ]\n },\n\n VARIABLE = {\n begin: '\\\\$[A-z0-9_]+'\n },\n\n STRING = {\n className: 'string',\n variants: [{\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n }, {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }]\n },\n\n NUMBER = {\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n },\n\n PREPROCESSOR = {\n className: 'meta',\n begin: '#',\n end: '$',\n keywords: {'meta-keyword': 'comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin'},\n contains: [{\n begin: /\\\\\\n/,\n relevance: 0\n }, {\n beginKeywords: 'include',\n keywords: {'meta-keyword': 'include'},\n end: '$',\n contains: [\n STRING, {\n className: 'meta-string',\n variants: [{\n begin: '<',\n end: '>'\n }, {\n begin: /\"/,\n end: /\"/,\n contains: [{\n begin: /\"\"/,\n relevance: 0\n }]\n }, {\n begin: /'/,\n end: /'/,\n contains: [{\n begin: /''/,\n relevance: 0\n }]\n }]\n }\n ]\n },\n STRING,\n COMMENT\n ]\n },\n\n CONSTANT = {\n className: 'symbol',\n // begin: '@',\n // end: '$',\n // keywords: 'AppDataCommonDir AppDataDir AutoItExe AutoItPID AutoItVersion AutoItX64 COM_EventObj CommonFilesDir Compiled ComputerName ComSpec CPUArch CR CRLF DesktopCommonDir DesktopDepth DesktopDir DesktopHeight DesktopRefresh DesktopWidth DocumentsCommonDir error exitCode exitMethod extended FavoritesCommonDir FavoritesDir GUI_CtrlHandle GUI_CtrlId GUI_DragFile GUI_DragId GUI_DropId GUI_WinHandle HomeDrive HomePath HomeShare HotKeyPressed HOUR IPAddress1 IPAddress2 IPAddress3 IPAddress4 KBLayout LF LocalAppDataDir LogonDNSDomain LogonDomain LogonServer MDAY MIN MON MSEC MUILang MyDocumentsDir NumParams OSArch OSBuild OSLang OSServicePack OSType OSVersion ProgramFilesDir ProgramsCommonDir ProgramsDir ScriptDir ScriptFullPath ScriptLineNumber ScriptName SEC StartMenuCommonDir StartMenuDir StartupCommonDir StartupDir SW_DISABLE SW_ENABLE SW_HIDE SW_LOCK SW_MAXIMIZE SW_MINIMIZE SW_RESTORE SW_SHOW SW_SHOWDEFAULT SW_SHOWMAXIMIZED SW_SHOWMINIMIZED SW_SHOWMINNOACTIVE SW_SHOWNA SW_SHOWNOACTIVATE SW_SHOWNORMAL SW_UNLOCK SystemDir TAB TempDir TRAY_ID TrayIconFlashing TrayIconVisible UserName UserProfileDir WDAY WindowsDir WorkingDir YDAY YEAR',\n // relevance: 5\n begin: '@[A-z0-9_]+'\n },\n\n FUNCTION = {\n className: 'function',\n beginKeywords: 'Func',\n end: '$',\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE, {\n className: 'params',\n begin: '\\\\(',\n end: '\\\\)',\n contains: [\n VARIABLE,\n STRING,\n NUMBER\n ]\n }\n ]\n };\n\n return {\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword: KEYWORDS,\n built_in: BUILT_IN,\n literal: LITERAL\n },\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n NUMBER,\n PREPROCESSOR,\n CONSTANT,\n FUNCTION\n ]\n }\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n keyword:\n /* mnemonic */\n 'adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs ' +\n 'brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr ' +\n 'clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor ' +\n 'fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul ' +\n 'muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs ' +\n 'sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub ' +\n 'subi swap tst wdr',\n built_in:\n /* general purpose registers */\n 'r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 ' +\n 'r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ' +\n /* IO Registers (ATMega128) */\n 'ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h ' +\n 'tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ' +\n 'ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ' +\n 'ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk ' +\n 'tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ' +\n 'ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr ' +\n 'porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ' +\n 'ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf',\n meta:\n '.byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list ' +\n '.listmac .macro .nolist .org .set'\n },\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE, // 0x..., decimal, float\n hljs.BINARY_NUMBER_MODE, // 0b...\n {\n className: 'number',\n begin: '\\\\b(\\\\$[a-zA-Z0-9]+|0o[0-7]+)' // $..., 0o...\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'', end: '[^\\\\\\\\]\\'',\n illegal: '[^\\\\\\\\][^\\']'\n },\n {className: 'symbol', begin: '^[A-Za-z0-9_.$]+:'},\n {className: 'meta', begin: '#', end: '$'},\n { // подстановка в «.macro»\n className: 'subst',\n begin: '@[0-9]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n var KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n return {\n\t keywords: {\n\t keyword: KEYWORDS\n },\n contains: [\n VARIABLE,\n STRING,\n hljs.REGEXP_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE\n ]\n }\n};","module.exports = function(hljs) {\n return {\n keywords: 'false int abstract private char boolean static null if for true ' +\n 'while long throw finally protected final return void enum else ' +\n 'break new catch byte super case short default double public try this switch ' +\n 'continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count ' +\n 'order group by asc desc index hint like dispaly edit client server ttsbegin ' +\n 'ttscommit str real date container anytype common div mod',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: ':',\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n var APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n\n return {\n aliases: ['sh', 'zsh'],\n lexemes: /\\b-?[a-z\\._]+\\b/,\n keywords: {\n keyword:\n 'if then else elif fi for while in do done case esac function',\n literal:\n 'true false',\n built_in:\n // Shell built-ins\n // http://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'break cd continue eval exec exit export getopts hash pwd readonly return shift test times ' +\n 'trap umask unset ' +\n // Bash built-ins\n 'alias bind builtin caller command declare echo enable help let local logout mapfile printf ' +\n 'read readarray source type typeset ulimit unalias ' +\n // Shell modifiers\n 'set shopt ' +\n // Zsh built-ins\n 'autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles ' +\n 'compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate ' +\n 'fc fg float functions getcap getln history integer jobs kill limit log noglob popd print ' +\n 'pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit ' +\n 'unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof ' +\n 'zpty zregexparse zsocket zstyle ztcp',\n _:\n '-ne -eq -lt -gt -f -d -e -s -l -a' // relevance booster\n },\n contains: [\n {\n className: 'meta',\n begin: /^#![^\\n]+sh\\s*$/,\n relevance: 10\n },\n {\n className: 'function',\n begin: /\\w[\\w\\d_]*\\s*\\(\\s*\\)\\s*\\{/,\n returnBegin: true,\n contains: [hljs.inherit(hljs.TITLE_MODE, {begin: /\\w[\\w\\d_]*/})],\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n QUOTE_STRING,\n APOS_STRING,\n VAR\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n illegal: '^\\.',\n // Support explicitely typed variables that end with $%! or #.\n lexemes: '[a-zA-Z][a-zA-Z0-9_\\$\\%\\!\\#]*',\n keywords: {\n keyword:\n 'ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE ' +\n 'CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ ' +\n 'DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ ' +\n 'EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO ' +\n 'HEX$ IF|0 THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON ' +\n 'OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET ' +\n 'MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION ' +\n 'BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET ' +\n 'PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET ' +\n 'RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP ' +\n 'SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE ' +\n 'WEND WIDTH WINDOW WRITE XOR'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('REM', '$', {relevance: 10}),\n hljs.COMMENT('\\'', '$', {relevance: 0}),\n {\n // Match line numbers\n className: 'symbol',\n begin: '^[0-9]+\\ ',\n relevance: 10\n },\n {\n // Match typed numeric constants (1000, 12.34!, 1.2e5, 1.5#, 1.2D2)\n className: 'number',\n begin: '\\\\b([0-9]+[0-9edED\\.]*[#\\!]?)',\n relevance: 0\n },\n {\n // Match hexadecimal numbers (&Hxxxx)\n className: 'number',\n begin: '(\\&[hH][0-9a-fA-F]{1,4})'\n },\n {\n // Match octal numbers (&Oxxxxxx)\n className: 'number',\n begin: '(\\&[oO][0-7]{1,6})'\n }\n ]\n };\n};","module.exports = function(hljs){\n return {\n contains: [\n // Attribute\n {\n className: 'attribute',\n begin: /</, end: />/\n },\n // Specific\n {\n begin: /::=/,\n starts: {\n end: /$/,\n contains: [\n {\n begin: /</, end: />/\n },\n // Common\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n };\n};","module.exports = function(hljs){\n var LITERAL = {\n className: 'literal',\n begin: '[\\\\+\\\\-]',\n relevance: 0\n };\n return {\n aliases: ['bf'],\n contains: [\n hljs.COMMENT(\n '[^\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n '[\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]',\n {\n returnEnd: true,\n relevance: 0\n }\n ),\n {\n className: 'title',\n begin: '[\\\\[\\\\]]',\n relevance: 0\n },\n {\n className: 'string',\n begin: '[\\\\.,]',\n relevance: 0\n },\n {\n // this mode works as the only relevance counter\n begin: /\\+\\+|\\-\\-/, returnBegin: true,\n contains: [LITERAL]\n },\n LITERAL\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS =\n 'div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to ' +\n 'until while with var';\n var LITERALS = 'false true';\n var COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(\n /\\{/,\n /\\}/,\n {\n relevance: 0\n }\n ),\n hljs.COMMENT(\n /\\(\\*/,\n /\\*\\)/,\n {\n relevance: 10\n }\n )\n ];\n var STRING = {\n className: 'string',\n begin: /'/, end: /'/,\n contains: [{begin: /''/}]\n };\n var CHAR_STRING = {\n className: 'string', begin: /(#\\d+)+/\n };\n var DATE = {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(DT|D|T)',\n relevance: 0\n };\n var DBL_QUOTED_VARIABLE = {\n className: 'string', // not a string technically but makes sense to be highlighted in the same style\n begin: '\"',\n end: '\"'\n };\n\n var PROCEDURE = {\n className: 'function',\n beginKeywords: 'procedure', end: /[:;]/,\n keywords: 'procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: [STRING, CHAR_STRING]\n }\n ].concat(COMMENT_MODES)\n };\n\n var OBJECT = {\n className: 'class',\n begin: 'OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\\\d+) ([^\\\\r\\\\n]+)',\n returnBegin: true,\n contains: [\n hljs.TITLE_MODE,\n PROCEDURE\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: { keyword: KEYWORDS, literal: LITERALS },\n illegal: /\\/\\*/,\n contains: [\n STRING, CHAR_STRING,\n DATE, DBL_QUOTED_VARIABLE,\n hljs.NUMBER_MODE,\n OBJECT,\n PROCEDURE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['capnp'],\n keywords: {\n keyword:\n 'struct enum interface union group import using const annotation extends in of on as with from fixed',\n built_in:\n 'Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 ' +\n 'Text Data AnyPointer AnyStruct Capability List',\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'meta',\n begin: /@0x[\\w\\d]{16};/,\n illegal: /\\n/\n },\n {\n className: 'symbol',\n begin: /@\\d+\\b/\n },\n {\n className: 'class',\n beginKeywords: 'struct enum', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'class',\n beginKeywords: 'interface', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n // 2.3. Identifiers and keywords\n var KEYWORDS =\n 'assembly module package import alias class interface object given value ' +\n 'assign void function new of extends satisfies abstracts in out return ' +\n 'break continue throw assert dynamic if else switch case for while try ' +\n 'catch finally then let this outer super is exists nonempty';\n // 7.4.1 Declaration Modifiers\n var DECLARATION_MODIFIERS =\n 'shared abstract formal default actual variable late native deprecated' +\n 'final sealed annotation suppressWarnings small';\n // 7.4.2 Documentation\n var DOCUMENTATION =\n 'doc by license see throws tagged';\n var SUBST = {\n className: 'subst', excludeBegin: true, excludeEnd: true,\n begin: /``/, end: /``/,\n keywords: KEYWORDS,\n relevance: 10\n };\n var EXPRESSIONS = [\n {\n // verbatim string\n className: 'string',\n begin: '\"\"\"',\n end: '\"\"\"',\n relevance: 10\n },\n {\n // string literal or template\n className: 'string',\n begin: '\"', end: '\"',\n contains: [SUBST]\n },\n {\n // character literal\n className: 'string',\n begin: \"'\",\n end: \"'\"\n },\n {\n // numeric literal\n className: 'number',\n begin: '#[0-9a-fA-F_]+|\\\\$[01_]+|[0-9_]+(?:\\\\.[0-9_](?:[eE][+-]?\\\\d+)?)?[kMGTPmunpf]?',\n relevance: 0\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n return {\n keywords: {\n keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,\n meta: DOCUMENTATION\n },\n illegal: '\\\\$[^01]|#[^0-9a-fA-F]',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n {\n // compiler annotation\n className: 'meta',\n begin: '@[a-z]\\\\w*(?:\\\\:\\\"[^\\\"]*\\\")?'\n }\n ].concat(EXPRESSIONS)\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['clean','icl','dcl'],\n keywords: {\n keyword:\n 'if let in with where case of class instance otherwise ' +\n 'implementation definition system module from import qualified as ' +\n 'special code inline foreign export ccall stdcall generic derive ' +\n 'infix infixl infixr',\n literal:\n 'True False'\n },\n contains: [\n\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n\n {begin: '->|<-[|:]?|::|#!?|>>=|\\\\{\\\\||\\\\|\\\\}|:==|=:|\\\\.\\\\.|<>|`'} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n var keywords = {\n 'builtin-name':\n // Clojure keywords\n 'def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem '+\n 'quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? '+\n 'set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? '+\n 'class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? '+\n 'string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . '+\n 'inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last '+\n 'drop-while while intern condp case reduced cycle split-at split-with repeat replicate '+\n 'iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext '+\n 'nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends '+\n 'add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler '+\n 'set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter '+\n 'monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or '+\n 'when when-not when-let comp juxt partial sequence memoize constantly complement identity assert '+\n 'peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast '+\n 'sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import '+\n 'refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! '+\n 'assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger '+\n 'bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline '+\n 'flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking '+\n 'assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! '+\n 'reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! '+\n 'new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty '+\n 'hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list '+\n 'disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer '+\n 'chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate '+\n 'unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta '+\n 'lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize'\n };\n\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b(true|false|nil)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n keywords: keywords,\n lexemes: SYMBOL_RE,\n className: 'name', begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n HINT_COL.contains = [COLLECTION];\n\n return {\n aliases: ['clj'],\n illegal: /\\S/,\n contains: [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n }\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'meta',\n begin: /^([\\w.-]+|\\s*#_)=>/,\n starts: {\n end: /$/,\n subLanguage: 'clojure'\n }\n }\n ]\n }\n};","module.exports = function(hljs) {\n return {\n aliases: ['cmake.in'],\n case_insensitive: true,\n keywords: {\n keyword:\n // scripting commands\n 'break cmake_host_system_information cmake_minimum_required cmake_parse_arguments ' +\n 'cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro ' +\n 'endwhile execute_process file find_file find_library find_package find_path ' +\n 'find_program foreach function get_cmake_property get_directory_property ' +\n 'get_filename_component get_property if include include_guard list macro ' +\n 'mark_as_advanced math message option return separate_arguments ' +\n 'set_directory_properties set_property set site_name string unset variable_watch while ' +\n // project commands\n 'add_compile_definitions add_compile_options add_custom_command add_custom_target ' +\n 'add_definitions add_dependencies add_executable add_library add_link_options ' +\n 'add_subdirectory add_test aux_source_directory build_command create_test_sourcelist ' +\n 'define_property enable_language enable_testing export fltk_wrap_ui ' +\n 'get_source_file_property get_target_property get_test_property include_directories ' +\n 'include_external_msproject include_regular_expression install link_directories ' +\n 'link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions ' +\n 'set_source_files_properties set_target_properties set_tests_properties source_group ' +\n 'target_compile_definitions target_compile_features target_compile_options ' +\n 'target_include_directories target_link_directories target_link_libraries ' +\n 'target_link_options target_sources try_compile try_run ' +\n // CTest commands\n 'ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ' +\n 'ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ' +\n 'ctest_test ctest_update ctest_upload ' +\n // deprecated commands\n 'build_name exec_program export_library_dependencies install_files install_programs ' +\n 'install_targets load_command make_directory output_required_files remove ' +\n 'subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file ' +\n 'qt5_use_modules qt5_use_package qt5_wrap_cpp ' +\n // core keywords\n 'on off true false and or not command policy target test exists is_newer_than ' +\n 'is_directory is_symlink is_absolute matches less greater equal less_equal ' +\n 'greater_equal strless strgreater strequal strless_equal strgreater_equal version_less ' +\n 'version_greater version_equal version_less_equal version_greater_equal in_list defined'\n },\n contains: [\n {\n className: 'variable',\n begin: '\\\\${', end: '}'\n },\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger super yield import export from as default await ' +\n // Coffee keywords\n 'then unless until loop of by when and or is isnt not',\n literal:\n // JS literals\n 'true false null undefined ' +\n // Coffee literals\n 'yes no on off',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '///', end: '///',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n begin: '//[gim]*',\n relevance: 0\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE // relevance booster\n },\n {\n subLanguage: 'javascript',\n excludeBegin: true, excludeEnd: true,\n variants: [\n {\n begin: '```', end: '```',\n },\n {\n begin: '`', end: '`',\n }\n ]\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['coffee', 'cson', 'iced'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('###', '###'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n // anonymous function start\n begin: /[:\\(,=]\\s*/,\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n '_ as at cofix else end exists exists2 fix for forall fun if IF in let ' +\n 'match mod Prop return Set then Type using where with ' +\n 'Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo ' +\n 'Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion ' +\n 'Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture ' +\n 'Conjectures Constant constr Constraint Constructors Context Corollary ' +\n 'CreateHintDb Cut Declare Defined Definition Delimit Dependencies Dependent' +\n 'Derive Drop eauto End Equality Eval Example Existential Existentials ' +\n 'Existing Export exporting Extern Extract Extraction Fact Field Fields File ' +\n 'Fixpoint Focus for From Function Functional Generalizable Global Goal Grab ' +\n 'Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident ' +\n 'Identity If Immediate Implicit Import Include Inductive Infix Info Initial ' +\n 'Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear ' +\n 'Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML ' +\n 'Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation ' +\n 'Obligations Opaque Open Optimize Options Parameter Parameters Parametric ' +\n 'Path Paths pattern Polymorphic Preterm Print Printing Program Projections ' +\n 'Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark ' +\n 'Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save ' +\n 'Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern ' +\n 'SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies ' +\n 'Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time ' +\n 'Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused ' +\n 'Unfold Universe Universes Unset Unshelve using Variable Variables Variant ' +\n 'Verbose Visibility where with',\n built_in:\n 'abstract absurd admit after apply as assert assumption at auto autorewrite ' +\n 'autounfold before bottom btauto by case case_eq cbn cbv change ' +\n 'classical_left classical_right clear clearbody cofix compare compute ' +\n 'congruence constr_eq constructor contradict contradiction cut cutrewrite ' +\n 'cycle decide decompose dependent destruct destruction dintuition ' +\n 'discriminate discrR do double dtauto eapply eassumption eauto ecase ' +\n 'econstructor edestruct ediscriminate eelim eexact eexists einduction ' +\n 'einjection eleft elim elimtype enough equality erewrite eright ' +\n 'esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail ' +\n 'field field_simplify field_simplify_eq first firstorder fix fold fourier ' +\n 'functional generalize generalizing gfail give_up has_evar hnf idtac in ' +\n 'induction injection instantiate intro intro_pattern intros intuition ' +\n 'inversion inversion_clear is_evar is_var lapply lazy left lia lra move ' +\n 'native_compute nia nsatz omega once pattern pose progress proof psatz quote ' +\n 'record red refine reflexivity remember rename repeat replace revert ' +\n 'revgoals rewrite rewrite_strat right ring ring_simplify rtauto set ' +\n 'setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry ' +\n 'setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve ' +\n 'specialize split split_Rabs split_Rmult stepl stepr subst sum swap ' +\n 'symmetry tactic tauto time timeout top transitivity trivial try tryif ' +\n 'unfold unify until using vm_compute with'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n hljs.C_NUMBER_MODE,\n {\n className: 'type',\n excludeBegin: true,\n begin: '\\\\|\\\\s*',\n end: '\\\\w+'\n },\n {begin: /[-=]>/} // relevance booster\n ]\n };\n};","module.exports = function cos (hljs) {\n\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [{ // escaped\n begin: \"\\\"\\\"\",\n relevance: 0\n }]\n }\n ]\n };\n\n var NUMBERS = {\n className: \"number\",\n begin: \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)\",\n relevance: 0\n };\n\n var COS_KEYWORDS =\n 'property parameter class classmethod clientmethod extends as break ' +\n 'catch close continue do d|0 else elseif for goto halt hang h|0 if job ' +\n 'j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 ' +\n 'tcommit throw trollback try tstart use view while write w|0 xecute x|0 ' +\n 'zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert ' +\n 'zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit ' +\n 'zsync ascii';\n\n // registered function - no need in them due to all functions are highlighted,\n // but I'll just leave this here.\n\n //\"$bit\", \"$bitcount\",\n //\"$bitfind\", \"$bitlogic\", \"$case\", \"$char\", \"$classmethod\", \"$classname\",\n //\"$compile\", \"$data\", \"$decimal\", \"$double\", \"$extract\", \"$factor\",\n //\"$find\", \"$fnumber\", \"$get\", \"$increment\", \"$inumber\", \"$isobject\",\n //\"$isvaliddouble\", \"$isvalidnum\", \"$justify\", \"$length\", \"$list\",\n //\"$listbuild\", \"$listdata\", \"$listfind\", \"$listfromstring\", \"$listget\",\n //\"$listlength\", \"$listnext\", \"$listsame\", \"$listtostring\", \"$listvalid\",\n //\"$locate\", \"$match\", \"$method\", \"$name\", \"$nconvert\", \"$next\",\n //\"$normalize\", \"$now\", \"$number\", \"$order\", \"$parameter\", \"$piece\",\n //\"$prefetchoff\", \"$prefetchon\", \"$property\", \"$qlength\", \"$qsubscript\",\n //\"$query\", \"$random\", \"$replace\", \"$reverse\", \"$sconvert\", \"$select\",\n //\"$sortbegin\", \"$sortend\", \"$stack\", \"$text\", \"$translate\", \"$view\",\n //\"$wascii\", \"$wchar\", \"$wextract\", \"$wfind\", \"$wiswide\", \"$wlength\",\n //\"$wreverse\", \"$xecute\", \"$zabs\", \"$zarccos\", \"$zarcsin\", \"$zarctan\",\n //\"$zcos\", \"$zcot\", \"$zcsc\", \"$zdate\", \"$zdateh\", \"$zdatetime\",\n //\"$zdatetimeh\", \"$zexp\", \"$zhex\", \"$zln\", \"$zlog\", \"$zpower\", \"$zsec\",\n //\"$zsin\", \"$zsqr\", \"$ztan\", \"$ztime\", \"$ztimeh\", \"$zboolean\",\n //\"$zconvert\", \"$zcrc\", \"$zcyc\", \"$zdascii\", \"$zdchar\", \"$zf\",\n //\"$ziswide\", \"$zlascii\", \"$zlchar\", \"$zname\", \"$zposition\", \"$zqascii\",\n //\"$zqchar\", \"$zsearch\", \"$zseek\", \"$zstrip\", \"$zwascii\", \"$zwchar\",\n //\"$zwidth\", \"$zwpack\", \"$zwbpack\", \"$zwunpack\", \"$zwbunpack\", \"$zzenkaku\",\n //\"$change\", \"$mv\", \"$mvat\", \"$mvfmt\", \"$mvfmts\", \"$mviconv\",\n //\"$mviconvs\", \"$mvinmat\", \"$mvlover\", \"$mvoconv\", \"$mvoconvs\", \"$mvraise\",\n //\"$mvtrans\", \"$mvv\", \"$mvname\", \"$zbitand\", \"$zbitcount\", \"$zbitfind\",\n //\"$zbitget\", \"$zbitlen\", \"$zbitnot\", \"$zbitor\", \"$zbitset\", \"$zbitstr\",\n //\"$zbitxor\", \"$zincrement\", \"$znext\", \"$zorder\", \"$zprevious\", \"$zsort\",\n //\"device\", \"$ecode\", \"$estack\", \"$etrap\", \"$halt\", \"$horolog\",\n //\"$io\", \"$job\", \"$key\", \"$namespace\", \"$principal\", \"$quit\", \"$roles\",\n //\"$storage\", \"$system\", \"$test\", \"$this\", \"$tlevel\", \"$username\",\n //\"$x\", \"$y\", \"$za\", \"$zb\", \"$zchild\", \"$zeof\", \"$zeos\", \"$zerror\",\n //\"$zhorolog\", \"$zio\", \"$zjob\", \"$zmode\", \"$znspace\", \"$zparent\", \"$zpi\",\n //\"$zpos\", \"$zreference\", \"$zstorage\", \"$ztimestamp\", \"$ztimezone\",\n //\"$ztrap\", \"$zversion\"\n\n return {\n case_insensitive: true,\n aliases: [\"cos\", \"cls\"],\n keywords: COS_KEYWORDS,\n contains: [\n NUMBERS,\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: \"comment\",\n begin: /;/, end: \"$\",\n relevance: 0\n },\n { // Functions and user-defined functions: write $ztime(60*60*3), $$myFunc(10), $$^Val(1)\n className: \"built_in\",\n begin: /(?:\\$\\$?|\\.\\.)\\^?[a-zA-Z]+/\n },\n { // Macro command: quit $$$OK\n className: \"built_in\",\n begin: /\\$\\$\\$[a-zA-Z]+/\n },\n { // Special (global) variables: write %request.Content; Built-in classes: %Library.Integer\n className: \"built_in\",\n begin: /%[a-z]+(?:\\.[a-z]+)*/\n },\n { // Global variable: set ^globalName = 12 write ^globalName\n className: \"symbol\",\n begin: /\\^%?[a-zA-Z][\\w]*/\n },\n { // Some control constructions: do ##class(Package.ClassName).Method(), ##super()\n className: \"keyword\",\n begin: /##class|##super|#define|#dim/\n },\n\n // sub-languages: are not fully supported by hljs by 11/15/2015\n // left for the future implementation.\n {\n begin: /&sql\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n subLanguage: \"sql\"\n },\n {\n begin: /&(js|jscript|javascript)</, end: />/,\n excludeBegin: true, excludeEnd: true,\n subLanguage: \"javascript\"\n },\n {\n // this brakes first and last tag, but this is the only way to embed a valid html\n begin: /&html<\\s*</, end: />\\s*>/,\n subLanguage: \"xml\"\n }\n ]\n };\n};","module.exports = function(hljs) {\n var RESOURCES = 'primitive rsc_template';\n\n var COMMANDS = 'group clone ms master location colocation order fencing_topology ' +\n 'rsc_ticket acl_target acl_group user role ' +\n 'tag xml';\n\n var PROPERTY_SETS = 'property rsc_defaults op_defaults';\n\n var KEYWORDS = 'params meta operations op rule attributes utilization';\n\n var OPERATORS = 'read write deny defined not_defined in_range date spec in ' +\n 'ref reference attribute type xpath version and or lt gt tag ' +\n 'lte gte eq ne \\\\';\n\n var TYPES = 'number string';\n\n var LITERALS = 'Master Started Slave Stopped start promote demote stop monitor true false';\n\n return {\n aliases: ['crm', 'pcmk'],\n case_insensitive: true,\n keywords: {\n keyword: KEYWORDS + ' ' + OPERATORS + ' ' + TYPES,\n literal: LITERALS\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: 'node',\n starts: {\n end: '\\\\s*([\\\\w_-]+:)?',\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*'\n }\n }\n },\n {\n beginKeywords: RESOURCES,\n starts: {\n className: 'title',\n end: '\\\\s*[\\\\$\\\\w_][\\\\w_-]*',\n starts: {\n end: '\\\\s*@?[\\\\w_][\\\\w_\\\\.:-]*'\n }\n }\n },\n {\n begin: '\\\\b(' + COMMANDS.split(' ').join('|') + ')\\\\s+',\n keywords: COMMANDS,\n starts: {\n className: 'title',\n end: '[\\\\$\\\\w_][\\\\w_-]*'\n }\n },\n {\n beginKeywords: PROPERTY_SETS,\n starts: {\n className: 'title',\n end: '\\\\s*([\\\\w_-]+:)?'\n }\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: '(ocf|systemd|service|lsb):[\\\\w_:-]+',\n relevance: 0\n },\n {\n className: 'number',\n begin: '\\\\b\\\\d+(\\\\.\\\\d+)?(ms|s|h|m)?',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '[-]?(infinity|inf)',\n relevance: 0\n },\n {\n className: 'attr',\n begin: /([A-Za-z\\$_\\#][\\w_-]+)=/,\n relevance: 0\n },\n {\n className: 'tag',\n begin: '</?',\n end: '/?>',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUM_SUFFIX = '(_[uif](8|16|32|64))?';\n var CRYSTAL_IDENT_RE = '[a-zA-Z_]\\\\w*[!?=]?';\n var RE_STARTER = '!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|' +\n '>>|>|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~';\n var CRYSTAL_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\][=?]?';\n var CRYSTAL_KEYWORDS = {\n keyword:\n 'abstract alias as as? asm begin break case class def do else elsif end ensure enum extend for fun if ' +\n 'include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? ' +\n 'return require select self sizeof struct super then type typeof union uninitialized unless until when while with yield ' +\n '__DIR__ __END_LINE__ __FILE__ __LINE__',\n literal: 'false nil true'\n };\n var SUBST = {\n className: 'subst',\n begin: '#{', end: '}',\n keywords: CRYSTAL_KEYWORDS\n };\n var EXPANSION = {\n className: 'template-variable',\n variants: [\n {begin: '\\\\{\\\\{', end: '\\\\}\\\\}'},\n {begin: '\\\\{%', end: '%\\\\}'}\n ],\n keywords: CRYSTAL_KEYWORDS\n };\n\n function recursiveParen(begin, end) {\n var\n contains = [{begin: begin, end: end}];\n contains[0].contains = contains;\n return contains;\n }\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%w?\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%w?\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%w?{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%w?<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%w?/', end: '/'},\n {begin: '%w?%', end: '%'},\n {begin: '%w?-', end: '-'},\n {begin: '%w?\\\\|', end: '\\\\|'},\n {begin: /<<-\\w+$/, end: /^\\s*\\w+$/},\n ],\n relevance: 0,\n };\n var Q_STRING = {\n className: 'string',\n variants: [\n {begin: '%q\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%q\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%q{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%q<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%q/', end: '/'},\n {begin: '%q%', end: '%'},\n {begin: '%q-', end: '-'},\n {begin: '%q\\\\|', end: '\\\\|'},\n {begin: /<<-'\\w+'$/, end: /^\\s*\\w+$/},\n ],\n relevance: 0,\n };\n var REGEXP = {\n begin: '(' + RE_STARTER + ')\\\\s*',\n contains: [\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '//[a-z]*', relevance: 0},\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ]\n }\n ],\n relevance: 0\n };\n var REGEXP2 = {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: '%r\\\\(', end: '\\\\)', contains: recursiveParen('\\\\(', '\\\\)')},\n {begin: '%r\\\\[', end: '\\\\]', contains: recursiveParen('\\\\[', '\\\\]')},\n {begin: '%r{', end: '}', contains: recursiveParen('{', '}')},\n {begin: '%r<', end: '>', contains: recursiveParen('<', '>')},\n {begin: '%r/', end: '/'},\n {begin: '%r%', end: '%'},\n {begin: '%r-', end: '-'},\n {begin: '%r\\\\|', end: '\\\\|'},\n ],\n relevance: 0\n };\n var ATTRIBUTE = {\n className: 'meta',\n begin: '@\\\\[', end: '\\\\]',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'})\n ]\n };\n var CRYSTAL_DEFAULT_CONTAINS = [\n EXPANSION,\n STRING,\n Q_STRING,\n REGEXP,\n REGEXP2,\n ATTRIBUTE,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class module struct', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {begin: '<'} // relevance booster for inheritance\n ]\n },\n {\n className: 'class',\n beginKeywords: 'lib enum union', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n ],\n relevance: 10\n },\n {\n className: 'function',\n beginKeywords: 'def', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'fun macro', end: /\\B\\b/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: CRYSTAL_METHOD_RE,\n endsParent: true\n })\n ],\n relevance: 5\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':',\n contains: [STRING, {begin: CRYSTAL_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]*[01])' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]*[0-7])' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]*[A-Fa-f0-9])' + NUM_SUFFIX },\n { begin: '\\\\b(([0-9][0-9_]*[0-9]|[0-9])(\\\\.[0-9_]*[0-9])?([eE][+-]?[0-9_]*[0-9])?)' + NUM_SUFFIX}\n ],\n relevance: 0\n }\n ];\n SUBST.contains = CRYSTAL_DEFAULT_CONTAINS;\n EXPANSION.contains = CRYSTAL_DEFAULT_CONTAINS.slice(1); // without EXPANSION\n\n return {\n aliases: ['cr'],\n lexemes: CRYSTAL_IDENT_RE,\n keywords: CRYSTAL_KEYWORDS,\n contains: CRYSTAL_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Normal keywords.\n 'abstract as base bool break byte case catch char checked const continue decimal ' +\n 'default delegate do double enum event explicit extern finally fixed float ' +\n 'for foreach goto if implicit in int interface internal is lock long nameof ' +\n 'object operator out override params private protected public readonly ref sbyte ' +\n 'sealed short sizeof stackalloc static string struct switch this try typeof ' +\n 'uint ulong unchecked unsafe ushort using virtual void volatile while ' +\n // Contextual keywords.\n 'add alias ascending async await by descending dynamic equals from get global group into join ' +\n 'let on orderby partial remove select set value var where yield',\n literal:\n 'null false true'\n };\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0b[01\\']+)' },\n { begin: '(-?)\\\\b([\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)(u|U|l|L|ul|UL|f|F|b|B)' },\n { begin: '(-?)(\\\\b0[xX][a-fA-F0-9\\']+|(\\\\b[\\\\d\\']+(\\\\.[\\\\d\\']*)?|\\\\.[\\\\d\\']+)([eE][-+]?[\\\\d\\']+)?)' }\n ],\n relevance: 0\n };\n var VERBATIM_STRING = {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n };\n var VERBATIM_STRING_NO_LF = hljs.inherit(VERBATIM_STRING, {illegal: /\\n/});\n var SUBST = {\n className: 'subst',\n begin: '{', end: '}',\n keywords: KEYWORDS\n };\n var SUBST_NO_LF = hljs.inherit(SUBST, {illegal: /\\n/});\n var INTERPOLATED_STRING = {\n className: 'string',\n begin: /\\$\"/, end: '\"',\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, hljs.BACKSLASH_ESCAPE, SUBST_NO_LF]\n };\n var INTERPOLATED_VERBATIM_STRING = {\n className: 'string',\n begin: /\\$@\"/, end: '\"',\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST]\n };\n var INTERPOLATED_VERBATIM_STRING_NO_LF = hljs.inherit(INTERPOLATED_VERBATIM_STRING, {\n illegal: /\\n/,\n contains: [{begin: '{{'}, {begin: '}}'}, {begin: '\"\"'}, SUBST_NO_LF]\n });\n SUBST.contains = [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ];\n SUBST_NO_LF.contains = [\n INTERPOLATED_VERBATIM_STRING_NO_LF,\n INTERPOLATED_STRING,\n VERBATIM_STRING_NO_LF,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n NUMBERS,\n hljs.inherit(hljs.C_BLOCK_COMMENT_MODE, {illegal: /\\n/})\n ];\n var STRING = {\n variants: [\n INTERPOLATED_VERBATIM_STRING,\n INTERPOLATED_STRING,\n VERBATIM_STRING,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n\n var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\\\s*,\\\\s*' + hljs.IDENT_RE + ')*>)?(\\\\[\\\\])?';\n\n return {\n aliases: ['csharp'],\n keywords: KEYWORDS,\n illegal: /::/,\n contains: [\n hljs.COMMENT(\n '///',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n variants: [\n {\n begin: '///', relevance: 0\n },\n {\n begin: '<!--|-->'\n },\n {\n begin: '</?', end: '>'\n }\n ]\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {\n 'meta-keyword': 'if else elif endif define undef warning error line region endregion pragma checksum'\n }\n },\n STRING,\n NUMBERS,\n {\n beginKeywords: 'class interface', end: /[{;=]/,\n illegal: /[^\\s:,]/,\n contains: [\n hljs.TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: /[{;=]/,\n illegal: /[^\\s:]/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[a-zA-Z](\\\\.?\\\\w)*'}),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n // [Attributes(\"\")]\n className: 'meta',\n begin: '^\\\\s*\\\\[', excludeBegin: true, end: '\\\\]', excludeEnd: true,\n contains: [\n {className: 'meta-string', begin: /\"/, end: /\"/}\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new return throw await else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + TYPE_IDENT_RE + '\\\\s+)+' + hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n end: /[{;=]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n contains: [hljs.TITLE_MODE],\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n NUMBERS,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: false,\n lexemes: '[a-zA-Z][a-zA-Z0-9_-]*',\n keywords: {\n keyword: 'base-uri child-src connect-src default-src font-src form-action' +\n ' frame-ancestors frame-src img-src media-src object-src plugin-types' +\n ' report-uri sandbox script-src style-src', \n },\n contains: [\n {\n className: 'string',\n begin: \"'\", end: \"'\"\n },\n {\n className: 'attribute',\n begin: '^Content', end: ':', excludeEnd: true,\n },\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var RULE = {\n begin: /[A-Z\\_\\.\\-]+\\s*:/, returnBegin: true, end: ';', endsWithParent: true,\n contains: [\n {\n className: 'attribute',\n begin: /\\S/, end: ':', excludeEnd: true,\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n {\n begin: /[\\w-]+\\(/, returnBegin: true,\n contains: [\n {\n className: 'built_in',\n begin: /[\\w-]+/\n },\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n },\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n },\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n }\n ]\n };\n\n return {\n case_insensitive: true,\n illegal: /[=\\/|'\\$]/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: /#[A-Za-z0-9_-]+/\n },\n {\n className: 'selector-class', begin: /\\.[A-Za-z0-9_-]+/\n },\n {\n className: 'selector-attr',\n begin: /\\[/, end: /\\]/,\n illegal: '$'\n },\n {\n className: 'selector-pseudo',\n begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/\n },\n {\n begin: '@(font-face|page)',\n lexemes: '[a-z-]+',\n keywords: 'font-face page'\n },\n {\n begin: '@', end: '[{;]', // at_rule eating first \"{\" is a good thing\n // because it doesn’t let it to be parsed as\n // a rule set but instead drops parser into\n // the default mode which is how it should be.\n illegal: /:/, // break on Less variables @var: ...\n contains: [\n {\n className: 'keyword',\n begin: /\\w+/\n },\n {\n begin: /\\s/, endsWithParent: true, excludeEnd: true,\n relevance: 0,\n contains: [\n hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE,\n hljs.CSS_NUMBER_MODE\n ]\n }\n ]\n },\n {\n className: 'selector-tag', begin: IDENT_RE,\n relevance: 0\n },\n {\n begin: '{', end: '}',\n illegal: /\\S/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n RULE,\n ]\n }\n ]\n };\n};","module.exports = /**\n * Known issues:\n *\n * - invalid hex string literals will be recognized as a double quoted strings\n * but 'x' at the beginning of string will not be matched\n *\n * - delimited string literals are not checked for matching end delimiter\n * (not possible to do with js regexp)\n *\n * - content of token string is colored as a string (i.e. no keyword coloring inside a token string)\n * also, content of token string is not validated to contain only valid D tokens\n *\n * - special token sequence rule is not strictly following D grammar (anything following #line\n * up to the end of line is matched as special token sequence)\n */\n\nfunction(hljs) {\n /**\n * Language keywords\n *\n * @type {Object}\n */\n var D_KEYWORDS = {\n keyword:\n 'abstract alias align asm assert auto body break byte case cast catch class ' +\n 'const continue debug default delete deprecated do else enum export extern final ' +\n 'finally for foreach foreach_reverse|10 goto if immutable import in inout int ' +\n 'interface invariant is lazy macro mixin module new nothrow out override package ' +\n 'pragma private protected public pure ref return scope shared static struct ' +\n 'super switch synchronized template this throw try typedef typeid typeof union ' +\n 'unittest version void volatile while with __FILE__ __LINE__ __gshared|10 ' +\n '__thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__',\n built_in:\n 'bool cdouble cent cfloat char creal dchar delegate double dstring float function ' +\n 'idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar ' +\n 'wstring',\n literal:\n 'false null true'\n };\n\n /**\n * Number literal regexps\n *\n * @type {String}\n */\n var decimal_integer_re = '(0|[1-9][\\\\d_]*)',\n decimal_integer_nosus_re = '(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)',\n binary_integer_re = '0[bB][01_]+',\n hexadecimal_digits_re = '([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)',\n hexadecimal_integer_re = '0[xX]' + hexadecimal_digits_re,\n\n decimal_exponent_re = '([eE][+-]?' + decimal_integer_nosus_re + ')',\n decimal_float_re = '(' + decimal_integer_nosus_re + '(\\\\.\\\\d*|' + decimal_exponent_re + ')|' +\n '\\\\d+\\\\.' + decimal_integer_nosus_re + decimal_integer_nosus_re + '|' +\n '\\\\.' + decimal_integer_re + decimal_exponent_re + '?' +\n ')',\n hexadecimal_float_re = '(0[xX](' +\n hexadecimal_digits_re + '\\\\.' + hexadecimal_digits_re + '|'+\n '\\\\.?' + hexadecimal_digits_re +\n ')[pP][+-]?' + decimal_integer_nosus_re + ')',\n\n integer_re = '(' +\n decimal_integer_re + '|' +\n binary_integer_re + '|' +\n hexadecimal_integer_re +\n ')',\n\n float_re = '(' +\n hexadecimal_float_re + '|' +\n decimal_float_re +\n ')';\n\n /**\n * Escape sequence supported in D string and character literals\n *\n * @type {String}\n */\n var escape_sequence_re = '\\\\\\\\(' +\n '[\\'\"\\\\?\\\\\\\\abfnrtv]|' + // common escapes\n 'u[\\\\dA-Fa-f]{4}|' + // four hex digit unicode codepoint\n '[0-7]{1,3}|' + // one to three octal digit ascii char code\n 'x[\\\\dA-Fa-f]{2}|' + // two hex digit ascii char code\n 'U[\\\\dA-Fa-f]{8}' + // eight hex digit unicode codepoint\n ')|' +\n '&[a-zA-Z\\\\d]{2,};'; // named character entity\n\n /**\n * D integer number literals\n *\n * @type {Object}\n */\n var D_INTEGER_MODE = {\n className: 'number',\n begin: '\\\\b' + integer_re + '(L|u|U|Lu|LU|uL|UL)?',\n relevance: 0\n };\n\n /**\n * [D_FLOAT_MODE description]\n * @type {Object}\n */\n var D_FLOAT_MODE = {\n className: 'number',\n begin: '\\\\b(' +\n float_re + '([fF]|L|i|[fF]i|Li)?|' +\n integer_re + '(i|[fF]i|Li)' +\n ')',\n relevance: 0\n };\n\n /**\n * D character literal\n *\n * @type {Object}\n */\n var D_CHARACTER_MODE = {\n className: 'string',\n begin: '\\'(' + escape_sequence_re + '|.)', end: '\\'',\n illegal: '.'\n };\n\n /**\n * D string escape sequence\n *\n * @type {Object}\n */\n var D_ESCAPE_SEQUENCE = {\n begin: escape_sequence_re,\n relevance: 0\n };\n\n /**\n * D double quoted string literal\n *\n * @type {Object}\n */\n var D_STRING_MODE = {\n className: 'string',\n begin: '\"',\n contains: [D_ESCAPE_SEQUENCE],\n end: '\"[cwd]?'\n };\n\n /**\n * D wysiwyg and delimited string literals\n *\n * @type {Object}\n */\n var D_WYSIWYG_DELIMITED_STRING_MODE = {\n className: 'string',\n begin: '[rq]\"',\n end: '\"[cwd]?',\n relevance: 5\n };\n\n /**\n * D alternate wysiwyg string literal\n *\n * @type {Object}\n */\n var D_ALTERNATE_WYSIWYG_STRING_MODE = {\n className: 'string',\n begin: '`',\n end: '`[cwd]?'\n };\n\n /**\n * D hexadecimal string literal\n *\n * @type {Object}\n */\n var D_HEX_STRING_MODE = {\n className: 'string',\n begin: 'x\"[\\\\da-fA-F\\\\s\\\\n\\\\r]*\"[cwd]?',\n relevance: 10\n };\n\n /**\n * D delimited string literal\n *\n * @type {Object}\n */\n var D_TOKEN_STRING_MODE = {\n className: 'string',\n begin: 'q\"\\\\{',\n end: '\\\\}\"'\n };\n\n /**\n * Hashbang support\n *\n * @type {Object}\n */\n var D_HASHBANG_MODE = {\n className: 'meta',\n begin: '^#!',\n end: '$',\n relevance: 5\n };\n\n /**\n * D special token sequence\n *\n * @type {Object}\n */\n var D_SPECIAL_TOKEN_SEQUENCE_MODE = {\n className: 'meta',\n begin: '#(line)',\n end: '$',\n relevance: 5\n };\n\n /**\n * D attributes\n *\n * @type {Object}\n */\n var D_ATTRIBUTE_MODE = {\n className: 'keyword',\n begin: '@[a-zA-Z_][a-zA-Z_\\\\d]*'\n };\n\n /**\n * D nesting comment\n *\n * @type {Object}\n */\n var D_NESTING_COMMENT_MODE = hljs.COMMENT(\n '\\\\/\\\\+',\n '\\\\+\\\\/',\n {\n contains: ['self'],\n relevance: 10\n }\n );\n\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: D_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n D_NESTING_COMMENT_MODE,\n D_HEX_STRING_MODE,\n D_STRING_MODE,\n D_WYSIWYG_DELIMITED_STRING_MODE,\n D_ALTERNATE_WYSIWYG_STRING_MODE,\n D_TOKEN_STRING_MODE,\n D_FLOAT_MODE,\n D_INTEGER_MODE,\n D_CHARACTER_MODE,\n D_HASHBANG_MODE,\n D_SPECIAL_TOKEN_SEQUENCE_MODE,\n D_ATTRIBUTE_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['md', 'mkdown', 'mkd'],\n contains: [\n // highlight headers\n {\n className: 'section',\n variants: [\n { begin: '^#{1,6}', end: '$' },\n { begin: '^.+?\\\\n[=-]{2,}$' }\n ]\n },\n // inline html\n {\n begin: '<', end: '>',\n subLanguage: 'xml',\n relevance: 0\n },\n // lists (indicators only)\n {\n className: 'bullet',\n begin: '^([*+-]|(\\\\d+\\\\.))\\\\s+'\n },\n // strong segments\n {\n className: 'strong',\n begin: '[*_]{2}.+?[*_]{2}'\n },\n // emphasis segments\n {\n className: 'emphasis',\n variants: [\n { begin: '\\\\*.+?\\\\*' },\n { begin: '_.+?_'\n , relevance: 0\n }\n ]\n },\n // blockquotes\n {\n className: 'quote',\n begin: '^>\\\\s+', end: '$'\n },\n // code snippets\n {\n className: 'code',\n variants: [\n {\n begin: '^```\\w*\\s*$', end: '^```\\s*$'\n },\n {\n begin: '`.+?`'\n },\n {\n begin: '^( {4}|\\t)', end: '$',\n relevance: 0\n }\n ]\n },\n // horizontal rules\n {\n begin: '^[-\\\\*]{3,}', end: '$'\n },\n // using links - title and link\n {\n begin: '\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]',\n returnBegin: true,\n contains: [\n {\n className: 'string',\n begin: '\\\\[', end: '\\\\]',\n excludeBegin: true,\n returnEnd: true,\n relevance: 0\n },\n {\n className: 'link',\n begin: '\\\\]\\\\(', end: '\\\\)',\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'symbol',\n begin: '\\\\]\\\\[', end: '\\\\]',\n excludeBegin: true, excludeEnd: true\n }\n ],\n relevance: 10\n },\n {\n begin: /^\\[[^\\n]+\\]:/,\n returnBegin: true,\n contains: [\n {\n className: 'symbol',\n begin: /\\[/, end: /\\]/,\n excludeBegin: true, excludeEnd: true\n },\n {\n className: 'link',\n begin: /:\\s*/, end: /$/,\n excludeBegin: true\n }\n ]\n }\n ]\n };\n};","module.exports = function (hljs) {\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\${', end: '}'},\n {begin: '\\\\$[A-Za-z0-9_]+'}\n ],\n keywords: 'true false null this is new super'\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: 'r\\'\\'\\'', end: '\\'\\'\\''\n },\n {\n begin: 'r\"\"\"', end: '\"\"\"'\n },\n {\n begin: 'r\\'', end: '\\'',\n illegal: '\\\\n'\n },\n {\n begin: 'r\"', end: '\"',\n illegal: '\\\\n'\n },\n {\n begin: '\\'\\'\\'', end: '\\'\\'\\'',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\\'', end: '\\'',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n };\n SUBST.contains = [\n hljs.C_NUMBER_MODE, STRING\n ];\n\n var KEYWORDS = {\n keyword: 'assert async await break case catch class const continue default do else enum extends false final ' +\n 'finally for if in is new null rethrow return super switch sync this throw true try var void while with yield ' +\n 'abstract as dynamic export external factory get implements import library operator part set static typedef',\n built_in:\n // dart:core\n 'print Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set ' +\n 'Stopwatch String StringBuffer StringSink Symbol Type Uri bool double int num ' +\n // dart:html\n 'document window querySelector querySelectorAll Element ElementList'\n };\n\n return {\n keywords: KEYWORDS,\n contains: [\n STRING,\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.COMMENT(\n '///',\n '$',\n {\n subLanguage: 'markdown'\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n },\n {\n begin: '=>' // No markup, just a relevance booster\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS =\n 'exports register file shl array record property for mod while set ally label uses raise not ' +\n 'stored class safecall var interface or private static exit index inherited to else stdcall ' +\n 'override shr asm far resourcestring finalization packed virtual out and protected library do ' +\n 'xorwrite goto near function end div overload object unit begin string on inline repeat until ' +\n 'destructor write message program with read initialization except default nil if case cdecl in ' +\n 'downto threadvar of try pascal const external constructor type public then implementation ' +\n 'finally published procedure absolute reintroduce operator as is abstract alias assembler ' +\n 'bitpacked break continue cppdecl cvar enumerator experimental platform deprecated ' +\n 'unimplemented dynamic export far16 forward generic helper implements interrupt iochecks ' +\n 'local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat ' +\n 'specialize strict unaligned varargs ';\n var COMMENT_MODES = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT(/\\{/, /\\}/, {relevance: 0}),\n hljs.COMMENT(/\\(\\*/, /\\*\\)/, {relevance: 10})\n ];\n var DIRECTIVE = {\n className: 'meta',\n variants: [\n {begin: /\\{\\$/, end: /\\}/},\n {begin: /\\(\\*\\$/, end: /\\*\\)/}\n ]\n };\n var STRING = {\n className: 'string',\n begin: /'/, end: /'/,\n contains: [{begin: /''/}]\n };\n var CHAR_STRING = {\n className: 'string', begin: /(#\\d+)+/\n };\n var CLASS = {\n begin: hljs.IDENT_RE + '\\\\s*=\\\\s*class\\\\s*\\\\(', returnBegin: true,\n contains: [\n hljs.TITLE_MODE\n ]\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure', end: /[:;]/,\n keywords: 'function constructor|10 destructor|10 procedure|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: [STRING, CHAR_STRING, DIRECTIVE].concat(COMMENT_MODES)\n },\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n return {\n aliases: ['dpr', 'dfm', 'pas', 'pascal', 'freepascal', 'lazarus', 'lpr', 'lfm'],\n case_insensitive: true,\n keywords: KEYWORDS,\n illegal: /\"|\\$[G-Zg-z]|\\/\\*|<\\/|\\|/,\n contains: [\n STRING, CHAR_STRING,\n hljs.NUMBER_MODE,\n CLASS,\n FUNCTION,\n DIRECTIVE\n ].concat(COMMENT_MODES)\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['patch'],\n contains: [\n {\n className: 'meta',\n relevance: 10,\n variants: [\n {begin: /^@@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +@@$/},\n {begin: /^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$/},\n {begin: /^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$/}\n ]\n },\n {\n className: 'comment',\n variants: [\n {begin: /Index: /, end: /$/},\n {begin: /={3,}/, end: /$/},\n {begin: /^\\-{3}/, end: /$/},\n {begin: /^\\*{3} /, end: /$/},\n {begin: /^\\+{3}/, end: /$/},\n {begin: /\\*{5}/, end: /\\*{5}$/}\n ]\n },\n {\n className: 'addition',\n begin: '^\\\\+', end: '$'\n },\n {\n className: 'deletion',\n begin: '^\\\\-', end: '$'\n },\n {\n className: 'addition',\n begin: '^\\\\!', end: '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var FILTER = {\n begin: /\\|[A-Za-z]+:?/,\n keywords: {\n name:\n 'truncatewords removetags linebreaksbr yesno get_digit timesince random striptags ' +\n 'filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands ' +\n 'title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode ' +\n 'timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort ' +\n 'dictsortreversed default_if_none pluralize lower join center default ' +\n 'truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first ' +\n 'escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize ' +\n 'localtime utc timezone'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE\n ]\n };\n\n return {\n aliases: ['jinja'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{%\\s*comment\\s*%}/, /\\{%\\s*endcomment\\s*%}/),\n hljs.COMMENT(/\\{#/, /#}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: {\n name:\n 'comment endcomment load templatetag ifchanged endifchanged if endif firstof for ' +\n 'endfor ifnotequal endifnotequal widthratio extends include spaceless ' +\n 'endspaceless regroup ifequal endifequal ssi now with cycle url filter ' +\n 'endfilter debug block endblock else autoescape endautoescape csrf_token empty elif ' +\n 'endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix ' +\n 'plural get_current_language language get_available_languages ' +\n 'get_current_language_bidi get_language_info get_language_info_list localize ' +\n 'endlocalize localtime endlocaltime timezone endtimezone get_current_timezone ' +\n 'verbatim'\n },\n starts: {\n endsWithParent: true,\n keywords: 'in by as',\n contains: [FILTER],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /}}/,\n contains: [FILTER]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['bind', 'zone'],\n keywords: {\n keyword:\n 'IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX ' +\n 'LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT'\n },\n contains: [\n hljs.COMMENT(';', '$', {relevance: 0}),\n {\n className: 'meta',\n begin: /^\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\b/\n },\n // IPv6\n {\n className: 'number',\n begin: '((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b'\n },\n // IPv4\n {\n className: 'number',\n begin: '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b'\n },\n hljs.inherit(hljs.NUMBER_MODE, {begin: /\\b\\d+[dhwm]?/})\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['docker'],\n case_insensitive: true,\n keywords: 'from maintainer expose env arg user onbuild stopsignal',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n {\n beginKeywords: 'run cmd entrypoint volume add copy workdir label healthcheck shell',\n starts: {\n end: /[^\\\\]\\n/,\n subLanguage: 'bash'\n }\n }\n ],\n illegal: '</'\n }\n};","module.exports = function(hljs) {\n var COMMENT = hljs.COMMENT(\n /^\\s*@?rem\\b/, /$/,\n {\n relevance: 10\n }\n );\n var LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)',\n relevance: 0\n };\n return {\n aliases: ['bat', 'cmd'],\n case_insensitive: true,\n illegal: /\\/\\*/,\n keywords: {\n keyword:\n 'if else goto for in do call exit not exist errorlevel defined ' +\n 'equ neq lss leq gtr geq',\n built_in:\n 'prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux ' +\n 'shift cd dir echo setlocal endlocal set pause copy ' +\n 'append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color ' +\n 'comp compact convert date dir diskcomp diskcopy doskey erase fs ' +\n 'find findstr format ftype graftabl help keyb label md mkdir mode more move path ' +\n 'pause print popd pushd promt rd recover rem rename replace restore rmdir shift' +\n 'sort start subst time title tree type ver verify vol ' +\n // winutils\n 'ping net ipconfig taskkill xcopy ren del'\n },\n contains: [\n {\n className: 'variable', begin: /%%[^ ]|%[^ ]+?%|![^ ]+?!/\n },\n {\n className: 'function',\n begin: LABEL.begin, end: 'goto:eof',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n COMMENT\n ]\n },\n {\n className: 'number', begin: '\\\\b\\\\d+',\n relevance: 0\n },\n COMMENT\n ]\n };\n};","module.exports = function(hljs) {\n var QUOTED_PROPERTY = {\n className: 'string',\n begin: /\"/, end: /\"/\n };\n var APOS_PROPERTY = {\n className: 'string',\n begin: /'/, end: /'/\n };\n var UNQUOTED_PROPERTY = {\n className: 'string',\n begin: '[\\\\w-?]+:\\\\w+', end: '\\\\W',\n relevance: 0\n };\n var VALUELESS_PROPERTY = {\n className: 'string',\n begin: '\\\\w+-?\\\\w+', end: '\\\\W',\n relevance: 0\n };\n\n return {\n keywords: 'dsconfig',\n contains: [\n {\n className: 'keyword',\n begin: '^dsconfig', end: '\\\\s', excludeEnd: true,\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '(list|create|get|set|delete)-(\\\\w+)', end: '\\\\s', excludeEnd: true,\n illegal: '!@#$%^&*()',\n relevance: 10\n },\n {\n className: 'built_in',\n begin: '--(\\\\w+)', end: '\\\\s', excludeEnd: true\n },\n QUOTED_PROPERTY,\n APOS_PROPERTY,\n UNQUOTED_PROPERTY,\n VALUELESS_PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var STRINGS = {\n className: 'string',\n variants: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, { begin: '((u8?|U)|L)?\"' }),\n {\n begin: '(u8?|U)?R\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n }\n ]\n };\n\n var NUMBERS = {\n className: 'number',\n variants: [\n { begin: '\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elif endif define undef ifdef ifndef'},\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n {\n beginKeywords: 'include', end: '$',\n keywords: {'meta-keyword': 'include'},\n contains: [\n hljs.inherit(STRINGS, {className: 'meta-string'}),\n {\n className: 'meta-string',\n begin: '<', end: '>',\n illegal: '\\\\n'\n }\n ]\n },\n STRINGS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var DTS_REFERENCE = {\n className: 'variable',\n begin: '\\\\&[a-z\\\\d_]*\\\\b'\n };\n\n var DTS_KEYWORD = {\n className: 'meta-keyword',\n begin: '/[a-z][a-z\\\\d-]*/'\n };\n\n var DTS_LABEL = {\n className: 'symbol',\n begin: '^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:'\n };\n\n var DTS_CELL_PROPERTY = {\n className: 'params',\n begin: '<',\n end: '>',\n contains: [\n NUMBERS,\n DTS_REFERENCE\n ]\n };\n\n var DTS_NODE = {\n className: 'class',\n begin: /[a-zA-Z_][a-zA-Z\\d_@]*\\s{/,\n end: /[{;=]/,\n returnBegin: true,\n excludeEnd: true\n };\n\n var DTS_ROOT_NODE = {\n className: 'class',\n begin: '/\\\\s*{',\n end: '};',\n relevance: 10,\n contains: [\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS\n ]\n };\n\n return {\n keywords: \"\",\n contains: [\n DTS_ROOT_NODE,\n DTS_REFERENCE,\n DTS_KEYWORD,\n DTS_LABEL,\n DTS_NODE,\n DTS_CELL_PROPERTY,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBERS,\n STRINGS,\n PREPROCESSOR,\n {\n begin: hljs.IDENT_RE + '::',\n keywords: \"\"\n }\n ]\n };\n};","module.exports = function(hljs) {\n var EXPRESSION_KEYWORDS = 'if eq ne lt lte gt gte select default math sep';\n return {\n aliases: ['dst'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n {\n className: 'template-tag',\n begin: /\\{[#\\/]/, end: /\\}/, illegal: /;/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{/, end: /\\}/, illegal: /;/,\n keywords: EXPRESSION_KEYWORDS\n }\n ]\n };\n};","module.exports = function(hljs) {\n var commentMode = hljs.COMMENT(/\\(\\*/, /\\*\\)/);\n\n var nonTerminalMode = {\n className: \"attribute\",\n begin: /^[ ]*[a-zA-Z][a-zA-Z-]*([\\s-]+[a-zA-Z][a-zA-Z]*)*/\n };\n\n var specialSequenceMode = {\n className: \"meta\",\n begin: /\\?.*\\?/\n };\n\n var ruleBodyMode = {\n begin: /=/, end: /;/,\n contains: [\n commentMode,\n specialSequenceMode,\n // terminals\n hljs.APOS_STRING_MODE, hljs.QUOTE_STRING_MODE\n ]\n };\n\n return {\n illegal: /\\S/,\n contains: [\n commentMode,\n nonTerminalMode,\n ruleBodyMode\n ]\n };\n};","module.exports = function(hljs) {\n var ELIXIR_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?';\n var ELIXIR_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n var ELIXIR_KEYWORDS =\n 'and false then defined module in return redo retry end for true self when ' +\n 'next until do begin unless nil break not case cond alias while ensure or ' +\n 'include use alias fn quote require import with|0';\n var SUBST = {\n className: 'subst',\n begin: '#\\\\{', end: '}',\n lexemes: ELIXIR_IDENT_RE,\n keywords: ELIXIR_KEYWORDS\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {\n begin: /'/, end: /'/\n },\n {\n begin: /\"/, end: /\"/\n }\n ]\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'def defp defmacro', end: /\\B\\b/, // the mode is ended by the title\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: ELIXIR_IDENT_RE,\n endsParent: true\n })\n ]\n };\n var CLASS = hljs.inherit(FUNCTION, {\n className: 'class',\n beginKeywords: 'defimpl defmodule defprotocol defrecord', end: /\\bdo\\b|$|;/\n });\n var ELIXIR_DEFAULT_CONTAINS = [\n STRING,\n hljs.HASH_COMMENT_MODE,\n CLASS,\n FUNCTION,\n {\n begin: '::'\n },\n {\n className: 'symbol',\n begin: ':(?![\\\\s:])',\n contains: [STRING, {begin: ELIXIR_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ELIXIR_IDENT_RE + ':(?!:)',\n relevance: 0\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n {\n className: 'variable',\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))'\n },\n {\n begin: '->'\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + ')\\\\s*',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {\n begin: '/', end: '/[a-z]*'\n },\n {\n begin: '%r\\\\[', end: '\\\\][a-z]*'\n }\n ]\n }\n ],\n relevance: 0\n }\n ];\n SUBST.contains = ELIXIR_DEFAULT_CONTAINS;\n\n return {\n lexemes: ELIXIR_IDENT_RE,\n keywords: ELIXIR_KEYWORDS,\n contains: ELIXIR_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n var COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n '{-',\n '-}',\n {\n contains: ['self']\n }\n )\n ]\n };\n\n var CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (built-in, infix).\n relevance: 0\n };\n\n var LIST = {\n begin: '\\\\(', end: '\\\\)',\n illegal: '\"',\n contains: [\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n COMMENT\n ]\n };\n\n var RECORD = {\n begin: '{', end: '}',\n contains: LIST.contains\n };\n\n var CHARACTER = {\n className: 'string',\n begin: '\\'\\\\\\\\?.', end: '\\'',\n illegal: '.'\n };\n\n return {\n keywords:\n 'let in if then else case of where module import exposing ' +\n 'type alias as infix infixl infixr port effect command subscription',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'port effect module', end: 'exposing',\n keywords: 'port effect module where command subscription exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'import', end: '$',\n keywords: 'import as exposing',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: 'type', end: '$',\n keywords: 'type alias',\n contains: [CONSTRUCTOR, LIST, RECORD, COMMENT]\n },\n {\n beginKeywords: 'infix infixl infixr', end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n },\n {\n begin: 'port', end: '$',\n keywords: 'port',\n contains: [COMMENT]\n },\n\n // Literals and names.\n\n CHARACTER,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n COMMENT,\n\n {begin: '->|<-'} // No markup, relevance booster\n ],\n illegal: /;/\n };\n};","module.exports = function(hljs) {\n var RUBY_METHOD_RE = '[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-/+%^&*~`|]|\\\\[\\\\]=?';\n var RUBY_KEYWORDS = {\n keyword:\n 'and then defined module in return redo if BEGIN retry end for self when ' +\n 'next until do begin unless END rescue else break undef not super class case ' +\n 'require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor',\n literal:\n 'true false nil'\n };\n var YARDOCTAG = {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n };\n var IRB_OBJECT = {\n begin: '#<', end: '>'\n };\n var COMMENT_MODES = [\n hljs.COMMENT(\n '#',\n '$',\n {\n contains: [YARDOCTAG]\n }\n ),\n hljs.COMMENT(\n '^\\\\=begin',\n '^\\\\=end',\n {\n contains: [YARDOCTAG],\n relevance: 10\n }\n ),\n hljs.COMMENT('^__END__', '\\\\n$')\n ];\n var SUBST = {\n className: 'subst',\n begin: '#\\\\{', end: '}',\n keywords: RUBY_KEYWORDS\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /`/, end: /`/},\n {begin: '%[qQwWx]?\\\\(', end: '\\\\)'},\n {begin: '%[qQwWx]?\\\\[', end: '\\\\]'},\n {begin: '%[qQwWx]?{', end: '}'},\n {begin: '%[qQwWx]?<', end: '>'},\n {begin: '%[qQwWx]?/', end: '/'},\n {begin: '%[qQwWx]?%', end: '%'},\n {begin: '%[qQwWx]?-', end: '-'},\n {begin: '%[qQwWx]?\\\\|', end: '\\\\|'},\n {\n // \\B in the beginning suppresses recognition of ?-sequences where ?\n // is the last character of a preceding identifier, as in: `func?4`\n begin: /\\B\\?(\\\\\\d{1,3}|\\\\x[A-Fa-f0-9]{1,2}|\\\\u[A-Fa-f0-9]{4}|\\\\?\\S)\\b/\n },\n {\n begin: /<<(-?)\\w+$/, end: /^\\s*\\w+$/,\n }\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)', endsParent: true,\n keywords: RUBY_KEYWORDS\n };\n\n var RUBY_DEFAULT_CONTAINS = [\n STRING,\n IRB_OBJECT,\n {\n className: 'class',\n beginKeywords: 'class module', end: '$|;',\n illegal: /=/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?'}),\n {\n begin: '<\\\\s*',\n contains: [{\n begin: '(' + hljs.IDENT_RE + '::)?' + hljs.IDENT_RE\n }]\n }\n ].concat(COMMENT_MODES)\n },\n {\n className: 'function',\n beginKeywords: 'def', end: '$|;',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: RUBY_METHOD_RE}),\n PARAMS\n ].concat(COMMENT_MODES)\n },\n {\n // swallow namespace qualifiers before symbols\n begin: hljs.IDENT_RE + '::'\n },\n {\n className: 'symbol',\n begin: hljs.UNDERSCORE_IDENT_RE + '(\\\\!|\\\\?)?:',\n relevance: 0\n },\n {\n className: 'symbol',\n begin: ':(?!\\\\s)',\n contains: [STRING, {begin: RUBY_METHOD_RE}],\n relevance: 0\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n {\n begin: '(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))' // variables\n },\n {\n className: 'params',\n begin: /\\|/, end: /\\|/,\n keywords: RUBY_KEYWORDS\n },\n { // regexp container\n begin: '(' + hljs.RE_STARTERS_RE + '|unless)\\\\s*',\n keywords: 'unless',\n contains: [\n IRB_OBJECT,\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST],\n illegal: /\\n/,\n variants: [\n {begin: '/', end: '/[a-z]*'},\n {begin: '%r{', end: '}[a-z]*'},\n {begin: '%r\\\\(', end: '\\\\)[a-z]*'},\n {begin: '%r!', end: '![a-z]*'},\n {begin: '%r\\\\[', end: '\\\\][a-z]*'}\n ]\n }\n ].concat(COMMENT_MODES),\n relevance: 0\n }\n ].concat(COMMENT_MODES);\n\n SUBST.contains = RUBY_DEFAULT_CONTAINS;\n PARAMS.contains = RUBY_DEFAULT_CONTAINS;\n\n var SIMPLE_PROMPT = \"[>?]>\";\n var DEFAULT_PROMPT = \"[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>\";\n var RVM_PROMPT = \"(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>\";\n\n var IRB_DEFAULT = [\n {\n begin: /^\\s*=>/,\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n },\n {\n className: 'meta',\n begin: '^('+SIMPLE_PROMPT+\"|\"+DEFAULT_PROMPT+'|'+RVM_PROMPT+')',\n starts: {\n end: '$', contains: RUBY_DEFAULT_CONTAINS\n }\n }\n ];\n\n return {\n aliases: ['rb', 'gemspec', 'podspec', 'thor', 'irb'],\n keywords: RUBY_KEYWORDS,\n illegal: /\\/\\*/,\n contains: COMMENT_MODES.concat(IRB_DEFAULT).concat(RUBY_DEFAULT_CONTAINS)\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('<%#', '%>'),\n {\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n built_in:\n 'spawn spawn_link self',\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if ' +\n 'let not of or orelse|10 query receive rem try when xor'\n },\n contains: [\n {\n className: 'meta', begin: '^[0-9]+> ',\n relevance: 10\n },\n hljs.COMMENT('%', '$'),\n {\n className: 'number',\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\?(::)?([A-Z]\\\\w*(::)?)+'\n },\n {\n begin: '->'\n },\n {\n begin: 'ok'\n },\n {\n begin: '!'\n },\n {\n begin: '(\\\\b[a-z\\'][a-zA-Z0-9_\\']*:[a-z\\'][a-zA-Z0-9_\\']*)|(\\\\b[a-z\\'][a-zA-Z0-9_\\']*)',\n relevance: 0\n },\n {\n begin: '[A-Z][a-zA-Z0-9_\\']*',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BASIC_ATOM_RE = '[a-z\\'][a-zA-Z0-9_\\']*';\n var FUNCTION_NAME_RE = '(' + BASIC_ATOM_RE + ':' + BASIC_ATOM_RE + '|' + BASIC_ATOM_RE + ')';\n var ERLANG_RESERVED = {\n keyword:\n 'after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if ' +\n 'let not of orelse|10 query receive rem try when xor',\n literal:\n 'false true'\n };\n\n var COMMENT = hljs.COMMENT('%', '$');\n var NUMBER = {\n className: 'number',\n begin: '\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)',\n relevance: 0\n };\n var NAMED_FUN = {\n begin: 'fun\\\\s+' + BASIC_ATOM_RE + '/\\\\d+'\n };\n var FUNCTION_CALL = {\n begin: FUNCTION_NAME_RE + '\\\\(', end: '\\\\)',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n begin: FUNCTION_NAME_RE, relevance: 0\n },\n {\n begin: '\\\\(', end: '\\\\)', endsWithParent: true,\n returnEnd: true,\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n var TUPLE = {\n begin: '{', end: '}',\n relevance: 0\n // \"contains\" defined later\n };\n var VAR1 = {\n begin: '\\\\b_([A-Z][A-Za-z0-9_]*)?',\n relevance: 0\n };\n var VAR2 = {\n begin: '[A-Z][a-zA-Z0-9_]*',\n relevance: 0\n };\n var RECORD_ACCESS = {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0,\n returnBegin: true,\n contains: [\n {\n begin: '#' + hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n },\n {\n begin: '{', end: '}',\n relevance: 0\n // \"contains\" defined later\n }\n ]\n };\n\n var BLOCK_STATEMENTS = {\n beginKeywords: 'fun receive if try case', end: 'end',\n keywords: ERLANG_RESERVED\n };\n BLOCK_STATEMENTS.contains = [\n COMMENT,\n NAMED_FUN,\n hljs.inherit(hljs.APOS_STRING_MODE, {className: ''}),\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1, VAR2,\n RECORD_ACCESS\n ];\n\n var BASIC_MODES = [\n COMMENT,\n NAMED_FUN,\n BLOCK_STATEMENTS,\n FUNCTION_CALL,\n hljs.QUOTE_STRING_MODE,\n NUMBER,\n TUPLE,\n VAR1, VAR2,\n RECORD_ACCESS\n ];\n FUNCTION_CALL.contains[1].contains = BASIC_MODES;\n TUPLE.contains = BASIC_MODES;\n RECORD_ACCESS.contains[1].contains = BASIC_MODES;\n\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: BASIC_MODES\n };\n return {\n aliases: ['erl'],\n keywords: ERLANG_RESERVED,\n illegal: '(</|\\\\*=|\\\\+=|-=|/\\\\*|\\\\*/|\\\\(\\\\*|\\\\*\\\\))',\n contains: [\n {\n className: 'function',\n begin: '^' + BASIC_ATOM_RE + '\\\\s*\\\\(', end: '->',\n returnBegin: true,\n illegal: '\\\\(|#|//|/\\\\*|\\\\\\\\|:|;',\n contains: [\n PARAMS,\n hljs.inherit(hljs.TITLE_MODE, {begin: BASIC_ATOM_RE})\n ],\n starts: {\n end: ';|\\\\.',\n keywords: ERLANG_RESERVED,\n contains: BASIC_MODES\n }\n },\n COMMENT,\n {\n begin: '^-', end: '\\\\.',\n relevance: 0,\n excludeEnd: true,\n returnBegin: true,\n lexemes: '-' + hljs.IDENT_RE,\n keywords:\n '-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn ' +\n '-import -include -include_lib -compile -define -else -endif -file -behaviour ' +\n '-behavior -spec',\n contains: [PARAMS]\n },\n NUMBER,\n hljs.QUOTE_STRING_MODE,\n RECORD_ACCESS,\n VAR1, VAR2,\n TUPLE,\n {begin: /\\.$/} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['xlsx', 'xls'],\n case_insensitive: true,\n lexemes: /[a-zA-Z][\\w\\.]*/,\n // built-in functions imported from https://web.archive.org/web/20160513042710/https://support.office.com/en-us/article/Excel-functions-alphabetical-b3944572-255d-4efb-bb96-c6d90033e188\n keywords: {\n built_in: 'ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF|0 IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST'\n },\n contains: [\n {\n /* matches a beginning equal sign found in Excel formula examples */ \n begin: /^=/,\n end: /[^=]/, returnEnd: true, illegal: /=/, /* only allow single equal sign at front of line */\n relevance: 10\n },\n /* technically, there can be more than 2 letters in column names, but this prevents conflict with some keywords */\n {\n /* matches a reference to a single cell */\n className: 'symbol',\n begin: /\\b[A-Z]{1,2}\\d+\\b/,\n end: /[^\\d]/, excludeEnd: true,\n relevance: 0\n },\n {\n /* matches a reference to a range of cells */\n className: 'symbol',\n begin: /[A-Z]{0,2}\\d*:[A-Z]{0,2}\\d*/,\n relevance: 0\n },\n hljs.BACKSLASH_ESCAPE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: hljs.NUMBER_RE + '(%)?',\n relevance: 0\n },\n /* Excel formula comments are done by putting the comment in a function call to N() */\n hljs.COMMENT(/\\bN\\(/,/\\)/,\n {\n excludeBegin: true,\n excludeEnd: true,\n illegal: /\\n/\n })\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n begin: /[^\\u2401\\u0001]+/,\n end: /[\\u2401\\u0001]/,\n excludeEnd: true,\n returnBegin: true,\n returnEnd: false,\n contains: [\n {\n begin: /([^\\u2401\\u0001=]+)/,\n end: /=([^\\u2401\\u0001=]+)/,\n returnEnd: true,\n returnBegin: false,\n className: 'attr'\n },\n {\n begin: /=/,\n end: /([\\u2401\\u0001])/,\n excludeEnd: true,\n excludeBegin: true,\n className: 'string'\n }]\n }],\n case_insensitive: true\n };\n};","module.exports = function (hljs) {\n\n var CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"'\n }\n ]\n };\n\n var NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/\n };\n\n var METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n keywords: {\n literal: 'true false',\n keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n CHAR,\n STRING,\n METHOD,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image'\n };\n return {\n case_insensitive: true,\n aliases: ['f90', 'f95'],\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n },\n hljs.COMMENT('!', '$', {relevance: 0}),\n {\n className: 'number',\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n var TYPEPARAM = {\n begin: '<', end: '>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})\n ]\n };\n\n return {\n aliases: ['fs'],\n keywords:\n 'abstract and as assert base begin class default delegate do done ' +\n 'downcast downto elif else end exception extern false finally for ' +\n 'fun function global if in inherit inline interface internal lazy let ' +\n 'match member module mutable namespace new null of open or ' +\n 'override private public rec return sig static struct then to ' +\n 'true try type upcast use val void when while with yield',\n illegal: /\\/\\*/,\n contains: [\n {\n // monad builder keywords (matches before non-bang kws)\n className: 'keyword',\n begin: /\\b(yield|return|let|do)!/\n },\n {\n className: 'string',\n begin: '@\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.COMMENT('\\\\(\\\\*', '\\\\*\\\\)'),\n {\n className: 'class',\n beginKeywords: 'type', end: '\\\\(|=|$', excludeEnd: true,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n TYPEPARAM\n ]\n },\n {\n className: 'meta',\n begin: '\\\\[<', end: '>\\\\]',\n relevance: 10\n },\n {\n className: 'symbol',\n begin: '\\\\B(\\'[A-Za-z])\\\\b',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function (hljs) {\n var KEYWORDS = {\n 'keyword':\n 'abort acronym acronyms alias all and assign binary card diag display ' +\n 'else eq file files for free ge gt if integer le loop lt maximizing ' +\n 'minimizing model models ne negative no not option options or ord ' +\n 'positive prod put putpage puttl repeat sameas semicont semiint smax ' +\n 'smin solve sos1 sos2 sum system table then until using while xor yes',\n 'literal': 'eps inf na',\n 'built-in':\n 'abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy ' +\n 'cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact ' +\n 'floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max ' +\n 'min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power ' +\n 'randBinomial randLinear randTriangle round rPower sigmoid sign ' +\n 'signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt ' +\n 'tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp ' +\n 'bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt ' +\n 'rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear ' +\n 'jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion ' +\n 'handleCollect handleDelete handleStatus handleSubmit heapFree ' +\n 'heapLimit heapSize jobHandle jobKill jobStatus jobTerminate ' +\n 'licenseLevel licenseStatus maxExecError sleep timeClose timeComp ' +\n 'timeElapsed timeExec timeStart'\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n };\n var SYMBOLS = {\n className: 'symbol',\n variants: [\n {begin: /\\=[lgenxc]=/},\n {begin: /\\$/},\n ]\n };\n var QSTR = { // One-line quoted comment string\n className: 'comment',\n variants: [\n {begin: '\\'', end: '\\''},\n {begin: '\"', end: '\"'},\n ],\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n var ASSIGNMENT = {\n begin: '/',\n end: '/',\n keywords: KEYWORDS,\n contains: [\n QSTR,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n ],\n };\n var DESCTEXT = { // Parameter/set/variable description text\n begin: /[a-z][a-z0-9_]*(\\([a-z0-9_, ]*\\))?[ \\t]+/,\n excludeBegin: true,\n end: '$',\n endsWithParent: true,\n contains: [\n QSTR,\n ASSIGNMENT,\n {\n className: 'comment',\n begin: /([ ]*[a-z0-9&#*=?@>\\\\<:\\-,()$\\[\\]_.{}!+%^]+)+/,\n relevance: 0\n },\n ],\n };\n\n return {\n aliases: ['gms'],\n case_insensitive: true,\n keywords: KEYWORDS,\n contains: [\n hljs.COMMENT(/^\\$ontext/, /^\\$offtext/),\n {\n className: 'meta',\n begin: '^\\\\$[a-z0-9]+',\n end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'meta-keyword',\n begin: '^\\\\$[a-z0-9]+',\n }\n ]\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n // Declarations\n {\n beginKeywords:\n 'set sets parameter parameters variable variables ' +\n 'scalar scalars equation equations',\n end: ';',\n contains: [\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n ASSIGNMENT,\n DESCTEXT,\n ]\n },\n { // table environment\n beginKeywords: 'table',\n end: ';',\n returnBegin: true,\n contains: [\n { // table header row\n beginKeywords: 'table',\n end: '$',\n contains: [DESCTEXT],\n },\n hljs.COMMENT('^\\\\*', '$'),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n // Table does not contain DESCTEXT or ASSIGNMENT\n ]\n },\n // Function definitions\n {\n className: 'function',\n begin: /^[a-z][a-z0-9_,\\-+' ()$]+\\.{2}/,\n returnBegin: true,\n contains: [\n { // Function title\n className: 'title',\n begin: /^[a-z0-9_]+/,\n },\n PARAMS,\n SYMBOLS,\n ],\n },\n hljs.C_NUMBER_MODE,\n SYMBOLS,\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword: 'and bool break call callexe checkinterrupt clear clearg closeall cls comlog compile ' +\n 'continue create debug declare delete disable dlibrary dllcall do dos ed edit else ' +\n 'elseif enable end endfor endif endp endo errorlog errorlogat expr external fn ' +\n 'for format goto gosub graph if keyword let lib library line load loadarray loadexe ' +\n 'loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow ' +\n 'matrix msym ndpclex new not open or output outwidth plot plotsym pop prcsn print ' +\n 'printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen ' +\n 'scroll setarray show sparse stop string struct system trace trap threadfor ' +\n 'threadendfor threadbegin threadjoin threadstat threadend until use while winprint',\n built_in: 'abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol ' +\n 'AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks ' +\n 'AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults ' +\n 'annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness ' +\n 'annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd ' +\n 'astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar ' +\n 'base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 ' +\n 'cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv ' +\n 'cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn ' +\n 'cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi ' +\n 'cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ' +\n 'ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated ' +\n 'complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs ' +\n 'cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos ' +\n 'datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd ' +\n 'dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName ' +\n 'dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy ' +\n 'dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen ' +\n 'dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA ' +\n 'dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField ' +\n 'dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition ' +\n 'dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows ' +\n 'dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly ' +\n 'dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy ' +\n 'dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl ' +\n 'dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt ' +\n 'dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday ' +\n 'dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays ' +\n 'endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error ' +\n 'etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut ' +\n 'EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol ' +\n 'EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq ' +\n 'feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt ' +\n 'floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC ' +\n 'gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders ' +\n 'gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse ' +\n 'gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray ' +\n 'getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders ' +\n 'getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT ' +\n 'gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm ' +\n 'hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 ' +\n 'indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 ' +\n 'inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf ' +\n 'isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv ' +\n 'lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn ' +\n 'lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind ' +\n 'loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars ' +\n 'makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli ' +\n 'mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave ' +\n 'movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate ' +\n 'olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto ' +\n 'pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox ' +\n 'plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea ' +\n 'plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout ' +\n 'plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill ' +\n 'plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol ' +\n 'plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange ' +\n 'plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel ' +\n 'plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot ' +\n 'pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames ' +\n 'pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector ' +\n 'pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate ' +\n 'qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr ' +\n 'real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn ' +\n 'rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel ' +\n 'rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn ' +\n 'rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh ' +\n 'rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind ' +\n 'scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa ' +\n 'setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind ' +\n 'sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL ' +\n 'spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense ' +\n 'spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet ' +\n 'sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt ' +\n 'strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr ' +\n 'surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname threadBegin threadEnd threadEndFor threadFor ' +\n 'threadJoin threadStat time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk ' +\n 'trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt ' +\n 'utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs ' +\n 'vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window ' +\n 'writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM ' +\n 'xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute ' +\n 'h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels ' +\n 'plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin strtrim sylvester',\n literal: 'DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS ' +\n 'DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 ' +\n 'DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS ' +\n 'DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES ' +\n 'DB_TRANSACTIONS DB_UNICODE DB_VIEWS'\n };\n\n var PREPROCESSOR =\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline'},\n contains: [\n {\n begin: /\\\\\\n/, relevance: 0\n },\n {\n beginKeywords: 'include', end: '$',\n keywords: {'meta-keyword': 'include'},\n contains: [\n {\n className: 'meta-string',\n begin: '\"', end: '\"',\n illegal: '\\\\n'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n\n var FUNCTION_TITLE = hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(?';\n var PARSE_PARAMS = [\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ];\n\n return {\n aliases: ['gss'],\n case_insensitive: true, // language is case-insensitive\n keywords: KEYWORDS,\n illegal: '(\\\\{[%#]|[%#]\\\\})',\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('@', '@'),\n PREPROCESSOR,\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'function',\n beginKeywords: 'proc keyword',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n PREPROCESSOR\n ].concat(PARSE_PARAMS)\n },\n {\n className: 'function',\n beginKeywords: 'fn',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE + hljs.IDENT_RE + '\\\\)?\\\\s*\\\\=\\\\s*', returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ].concat(PARSE_PARAMS)\n },\n {\n className: 'function',\n begin: '\\\\bexternal (proc|keyword|fn)\\\\s+',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: FUNCTION_TITLE, returnBegin: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'function',\n begin: '\\\\bexternal (matrix|string|array|sparse matrix|struct ' + hljs.IDENT_RE + ')\\\\s+',\n end: ';',\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var GCODE_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n var GCODE_CLOSE_RE = '\\\\%';\n var GCODE_KEYWORDS =\n 'IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT ' +\n 'EQ LT GT NE GE LE OR XOR';\n var GCODE_START = {\n className: 'meta',\n begin: '([O])([0-9]+)'\n };\n var GCODE_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(/\\(/, /\\)/),\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|' + hljs.C_NUMBER_RE}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'name',\n begin: '([G])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'name',\n begin: '([M])([0-9]+\\\\.?[0-9]?)'\n },\n {\n className: 'attr',\n begin: '(VC|VS|#)',\n end: '(\\\\d+)'\n },\n {\n className: 'attr',\n begin: '(VZOFX|VZOFY|VZOFZ)'\n },\n {\n className: 'built_in',\n begin: '(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)',\n end: '([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])'\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: 'N', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ];\n\n return {\n aliases: ['nc'],\n // Some implementations (CNC controls) of G-code are interoperable with uppercase and lowercase letters seamlessly.\n // However, most prefer all uppercase and uppercase is customary.\n case_insensitive: true,\n lexemes: GCODE_IDENT_RE,\n keywords: GCODE_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: GCODE_CLOSE_RE\n },\n GCODE_START\n ].concat(GCODE_CODE)\n };\n};","module.exports = function (hljs) {\n return {\n aliases: ['feature'],\n keywords: 'Feature Background Ability Business\\ Need Scenario Scenarios Scenario\\ Outline Scenario\\ Template Examples Given And Then But When',\n contains: [\n {\n className: 'symbol',\n begin: '\\\\*',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '@[^@\\\\s]+'\n },\n {\n begin: '\\\\|', end: '\\\\|\\\\w*$',\n contains: [\n {\n className: 'string',\n begin: '[^|]+'\n }\n ]\n },\n {\n className: 'variable',\n begin: '<', end: '>'\n },\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n hljs.QUOTE_STRING_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Statements\n 'break continue discard do else for if return while switch case default ' +\n // Qualifiers\n 'attribute binding buffer ccw centroid centroid varying coherent column_major const cw ' +\n 'depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing ' +\n 'flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant ' +\n 'invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y ' +\n 'local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left ' +\n 'out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f '+\n 'r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict ' +\n 'rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 ' +\n 'rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 ' +\n 'rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip ' +\n 'triangles triangles_adjacency uniform varying vertices volatile writeonly',\n type:\n 'atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 ' +\n 'dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray ' +\n 'iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBuffer' +\n 'iimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray ' +\n 'image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray ' +\n 'isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D ' +\n 'isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 ' +\n 'mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray ' +\n 'sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow ' +\n 'sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D ' +\n 'samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow ' +\n 'image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect ' +\n 'uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray ' +\n 'usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D ' +\n 'samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void',\n built_in:\n // Constants\n 'gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes ' +\n 'gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms ' +\n 'gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers ' +\n 'gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits ' +\n 'gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize ' +\n 'gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters ' +\n 'gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors ' +\n 'gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers ' +\n 'gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents ' +\n 'gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits ' +\n 'gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents ' +\n 'gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset ' +\n 'gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms ' +\n 'gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits ' +\n 'gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents ' +\n 'gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters ' +\n 'gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents ' +\n 'gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents ' +\n 'gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits ' +\n 'gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors ' +\n 'gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms ' +\n 'gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits ' +\n 'gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset ' +\n // Variables\n 'gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial ' +\n 'gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color ' +\n 'gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord ' +\n 'gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor ' +\n 'gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial ' +\n 'gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel ' +\n 'gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix ' +\n 'gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose ' +\n 'gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose ' +\n 'gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 ' +\n 'gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 ' +\n 'gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ ' +\n 'gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord ' +\n 'gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse ' +\n 'gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask ' +\n 'gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter ' +\n 'gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose ' +\n 'gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out ' +\n // Functions\n 'EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin ' +\n 'asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement ' +\n 'atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier ' +\n 'bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross ' +\n 'dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB ' +\n 'floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan ' +\n 'greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap ' +\n 'imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad ' +\n 'imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset ' +\n 'interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log ' +\n 'log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer ' +\n 'memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 ' +\n 'normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 ' +\n 'packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod ' +\n 'shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh ' +\n 'smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod ' +\n 'texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod ' +\n 'texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod ' +\n 'textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset ' +\n 'textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset ' +\n 'textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod ' +\n 'textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 ' +\n 'unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow',\n literal: 'true false'\n },\n illegal: '\"',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var GML_KEYWORDS = {\n keywords: 'begin end if then else while do for break continue with until ' +\n 'repeat exit and or xor not return mod div switch case default var ' +\n 'globalvar enum #macro #region #endregion',\n built_in: 'is_real is_string is_array is_undefined is_int32 is_int64 ' +\n 'is_ptr is_vec3 is_vec4 is_matrix is_bool typeof ' +\n 'variable_global_exists variable_global_get variable_global_set ' +\n 'variable_instance_exists variable_instance_get variable_instance_set ' +\n 'variable_instance_get_names array_length_1d array_length_2d ' +\n 'array_height_2d array_equals array_create array_copy random ' +\n 'random_range irandom irandom_range random_set_seed random_get_seed ' +\n 'randomize randomise choose abs round floor ceil sign frac sqrt sqr ' +\n 'exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos ' +\n 'dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn ' +\n 'min max mean median clamp lerp dot_product dot_product_3d ' +\n 'dot_product_normalised dot_product_3d_normalised ' +\n 'dot_product_normalized dot_product_3d_normalized math_set_epsilon ' +\n 'math_get_epsilon angle_difference point_distance_3d point_distance ' +\n 'point_direction lengthdir_x lengthdir_y real string int64 ptr ' +\n 'string_format chr ansi_char ord string_length string_byte_length ' +\n 'string_pos string_copy string_char_at string_ord_at string_byte_at ' +\n 'string_set_byte_at string_delete string_insert string_lower ' +\n 'string_upper string_repeat string_letters string_digits ' +\n 'string_lettersdigits string_replace string_replace_all string_count ' +\n 'string_hash_to_newline clipboard_has_text clipboard_set_text ' +\n 'clipboard_get_text date_current_datetime date_create_datetime ' +\n 'date_valid_datetime date_inc_year date_inc_month date_inc_week ' +\n 'date_inc_day date_inc_hour date_inc_minute date_inc_second ' +\n 'date_get_year date_get_month date_get_week date_get_day ' +\n 'date_get_hour date_get_minute date_get_second date_get_weekday ' +\n 'date_get_day_of_year date_get_hour_of_year date_get_minute_of_year ' +\n 'date_get_second_of_year date_year_span date_month_span ' +\n 'date_week_span date_day_span date_hour_span date_minute_span ' +\n 'date_second_span date_compare_datetime date_compare_date ' +\n 'date_compare_time date_date_of date_time_of date_datetime_string ' +\n 'date_date_string date_time_string date_days_in_month ' +\n 'date_days_in_year date_leap_year date_is_today date_set_timezone ' +\n 'date_get_timezone game_set_speed game_get_speed motion_set ' +\n 'motion_add place_free place_empty place_meeting place_snapped ' +\n 'move_random move_snap move_towards_point move_contact_solid ' +\n 'move_contact_all move_outside_solid move_outside_all ' +\n 'move_bounce_solid move_bounce_all move_wrap distance_to_point ' +\n 'distance_to_object position_empty position_meeting path_start ' +\n 'path_end mp_linear_step mp_potential_step mp_linear_step_object ' +\n 'mp_potential_step_object mp_potential_settings mp_linear_path ' +\n 'mp_potential_path mp_linear_path_object mp_potential_path_object ' +\n 'mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell ' +\n 'mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell ' +\n 'mp_grid_add_rectangle mp_grid_add_instances mp_grid_path ' +\n 'mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle ' +\n 'collision_circle collision_ellipse collision_line ' +\n 'collision_point_list collision_rectangle_list collision_circle_list ' +\n 'collision_ellipse_list collision_line_list instance_position_list ' +\n 'instance_place_list point_in_rectangle ' +\n 'point_in_triangle point_in_circle rectangle_in_rectangle ' +\n 'rectangle_in_triangle rectangle_in_circle instance_find ' +\n 'instance_exists instance_number instance_position instance_nearest ' +\n 'instance_furthest instance_place instance_create_depth ' +\n 'instance_create_layer instance_copy instance_change instance_destroy ' +\n 'position_destroy position_change instance_id_get ' +\n 'instance_deactivate_all instance_deactivate_object ' +\n 'instance_deactivate_region instance_activate_all ' +\n 'instance_activate_object instance_activate_region room_goto ' +\n 'room_goto_previous room_goto_next room_previous room_next ' +\n 'room_restart game_end game_restart game_load game_save ' +\n 'game_save_buffer game_load_buffer event_perform event_user ' +\n 'event_perform_object event_inherited show_debug_message ' +\n 'show_debug_overlay debug_event debug_get_callstack alarm_get ' +\n 'alarm_set font_texture_page_size keyboard_set_map keyboard_get_map ' +\n 'keyboard_unset_map keyboard_check keyboard_check_pressed ' +\n 'keyboard_check_released keyboard_check_direct keyboard_get_numlock ' +\n 'keyboard_set_numlock keyboard_key_press keyboard_key_release ' +\n 'keyboard_clear io_clear mouse_check_button ' +\n 'mouse_check_button_pressed mouse_check_button_released ' +\n 'mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite ' +\n 'draw_sprite_pos draw_sprite_ext draw_sprite_stretched ' +\n 'draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext ' +\n 'draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear ' +\n 'draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle ' +\n 'draw_roundrect draw_roundrect_ext draw_triangle draw_circle ' +\n 'draw_ellipse draw_set_circle_precision draw_arrow draw_button ' +\n 'draw_path draw_healthbar draw_getpixel draw_getpixel_ext ' +\n 'draw_set_colour draw_set_color draw_set_alpha draw_get_colour ' +\n 'draw_get_color draw_get_alpha merge_colour make_colour_rgb ' +\n 'make_colour_hsv colour_get_red colour_get_green colour_get_blue ' +\n 'colour_get_hue colour_get_saturation colour_get_value merge_color ' +\n 'make_color_rgb make_color_hsv color_get_red color_get_green ' +\n 'color_get_blue color_get_hue color_get_saturation color_get_value ' +\n 'merge_color screen_save screen_save_part draw_set_font ' +\n 'draw_set_halign draw_set_valign draw_text draw_text_ext string_width ' +\n 'string_height string_width_ext string_height_ext ' +\n 'draw_text_transformed draw_text_ext_transformed draw_text_colour ' +\n 'draw_text_ext_colour draw_text_transformed_colour ' +\n 'draw_text_ext_transformed_colour draw_text_color draw_text_ext_color ' +\n 'draw_text_transformed_color draw_text_ext_transformed_color ' +\n 'draw_point_colour draw_line_colour draw_line_width_colour ' +\n 'draw_rectangle_colour draw_roundrect_colour ' +\n 'draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour ' +\n 'draw_ellipse_colour draw_point_color draw_line_color ' +\n 'draw_line_width_color draw_rectangle_color draw_roundrect_color ' +\n 'draw_roundrect_color_ext draw_triangle_color draw_circle_color ' +\n 'draw_ellipse_color draw_primitive_begin draw_vertex ' +\n 'draw_vertex_colour draw_vertex_color draw_primitive_end ' +\n 'sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture ' +\n 'texture_get_width texture_get_height texture_get_uvs ' +\n 'draw_primitive_begin_texture draw_vertex_texture ' +\n 'draw_vertex_texture_colour draw_vertex_texture_color ' +\n 'texture_global_scale surface_create surface_create_ext ' +\n 'surface_resize surface_free surface_exists surface_get_width ' +\n 'surface_get_height surface_get_texture surface_set_target ' +\n 'surface_set_target_ext surface_reset_target surface_depth_disable ' +\n 'surface_get_depth_disable draw_surface draw_surface_stretched ' +\n 'draw_surface_tiled draw_surface_part draw_surface_ext ' +\n 'draw_surface_stretched_ext draw_surface_tiled_ext ' +\n 'draw_surface_part_ext draw_surface_general surface_getpixel ' +\n 'surface_getpixel_ext surface_save surface_save_part surface_copy ' +\n 'surface_copy_part application_surface_draw_enable ' +\n 'application_get_position application_surface_enable ' +\n 'application_surface_is_enabled display_get_width display_get_height ' +\n 'display_get_orientation display_get_gui_width display_get_gui_height ' +\n 'display_reset display_mouse_get_x display_mouse_get_y ' +\n 'display_mouse_set display_set_ui_visibility ' +\n 'window_set_fullscreen window_get_fullscreen ' +\n 'window_set_caption window_set_min_width window_set_max_width ' +\n 'window_set_min_height window_set_max_height window_get_visible_rects ' +\n 'window_get_caption window_set_cursor window_get_cursor ' +\n 'window_set_colour window_get_colour window_set_color ' +\n 'window_get_color window_set_position window_set_size ' +\n 'window_set_rectangle window_center window_get_x window_get_y ' +\n 'window_get_width window_get_height window_mouse_get_x ' +\n 'window_mouse_get_y window_mouse_set window_view_mouse_get_x ' +\n 'window_view_mouse_get_y window_views_mouse_get_x ' +\n 'window_views_mouse_get_y audio_listener_position ' +\n 'audio_listener_velocity audio_listener_orientation ' +\n 'audio_emitter_position audio_emitter_create audio_emitter_free ' +\n 'audio_emitter_exists audio_emitter_pitch audio_emitter_velocity ' +\n 'audio_emitter_falloff audio_emitter_gain audio_play_sound ' +\n 'audio_play_sound_on audio_play_sound_at audio_stop_sound ' +\n 'audio_resume_music audio_music_is_playing audio_resume_sound ' +\n 'audio_pause_sound audio_pause_music audio_channel_num ' +\n 'audio_sound_length audio_get_type audio_falloff_set_model ' +\n 'audio_play_music audio_stop_music audio_master_gain audio_music_gain ' +\n 'audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all ' +\n 'audio_pause_all audio_is_playing audio_is_paused audio_exists ' +\n 'audio_sound_set_track_position audio_sound_get_track_position ' +\n 'audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x ' +\n 'audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx ' +\n 'audio_emitter_get_vy audio_emitter_get_vz ' +\n 'audio_listener_set_position audio_listener_set_velocity ' +\n 'audio_listener_set_orientation audio_listener_get_data ' +\n 'audio_set_master_gain audio_get_master_gain audio_sound_get_gain ' +\n 'audio_sound_get_pitch audio_get_name audio_sound_set_track_position ' +\n 'audio_sound_get_track_position audio_create_stream ' +\n 'audio_destroy_stream audio_create_sync_group ' +\n 'audio_destroy_sync_group audio_play_in_sync_group ' +\n 'audio_start_sync_group audio_stop_sync_group audio_pause_sync_group ' +\n 'audio_resume_sync_group audio_sync_group_get_track_pos ' +\n 'audio_sync_group_debug audio_sync_group_is_playing audio_debug ' +\n 'audio_group_load audio_group_unload audio_group_is_loaded ' +\n 'audio_group_load_progress audio_group_name audio_group_stop_all ' +\n 'audio_group_set_gain audio_create_buffer_sound ' +\n 'audio_free_buffer_sound audio_create_play_queue ' +\n 'audio_free_play_queue audio_queue_sound audio_get_recorder_count ' +\n 'audio_get_recorder_info audio_start_recording audio_stop_recording ' +\n 'audio_sound_get_listener_mask audio_emitter_get_listener_mask ' +\n 'audio_get_listener_mask audio_sound_set_listener_mask ' +\n 'audio_emitter_set_listener_mask audio_set_listener_mask ' +\n 'audio_get_listener_count audio_get_listener_info audio_system ' +\n 'show_message show_message_async clickable_add clickable_add_ext ' +\n 'clickable_change clickable_change_ext clickable_delete ' +\n 'clickable_exists clickable_set_style show_question ' +\n 'show_question_async get_integer get_string get_integer_async ' +\n 'get_string_async get_login_async get_open_filename get_save_filename ' +\n 'get_open_filename_ext get_save_filename_ext show_error ' +\n 'highscore_clear highscore_add highscore_value highscore_name ' +\n 'draw_highscore sprite_exists sprite_get_name sprite_get_number ' +\n 'sprite_get_width sprite_get_height sprite_get_xoffset ' +\n 'sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right ' +\n 'sprite_get_bbox_top sprite_get_bbox_bottom sprite_save ' +\n 'sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext ' +\n 'sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush ' +\n 'sprite_flush_multi sprite_set_speed sprite_get_speed_type ' +\n 'sprite_get_speed font_exists font_get_name font_get_fontname ' +\n 'font_get_bold font_get_italic font_get_first font_get_last ' +\n 'font_get_size font_set_cache_size path_exists path_get_name ' +\n 'path_get_length path_get_time path_get_kind path_get_closed ' +\n 'path_get_precision path_get_number path_get_point_x path_get_point_y ' +\n 'path_get_point_speed path_get_x path_get_y path_get_speed ' +\n 'script_exists script_get_name timeline_add timeline_delete ' +\n 'timeline_clear timeline_exists timeline_get_name ' +\n 'timeline_moment_clear timeline_moment_add_script timeline_size ' +\n 'timeline_max_moment object_exists object_get_name object_get_sprite ' +\n 'object_get_solid object_get_visible object_get_persistent ' +\n 'object_get_mask object_get_parent object_get_physics ' +\n 'object_is_ancestor room_exists room_get_name sprite_set_offset ' +\n 'sprite_duplicate sprite_assign sprite_merge sprite_add ' +\n 'sprite_replace sprite_create_from_surface sprite_add_from_surface ' +\n 'sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask ' +\n 'font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite ' +\n 'font_add_sprite_ext font_replace font_replace_sprite ' +\n 'font_replace_sprite_ext font_delete path_set_kind path_set_closed ' +\n 'path_set_precision path_add path_assign path_duplicate path_append ' +\n 'path_delete path_add_point path_insert_point path_change_point ' +\n 'path_delete_point path_clear_points path_reverse path_mirror ' +\n 'path_flip path_rotate path_rescale path_shift script_execute ' +\n 'object_set_sprite object_set_solid object_set_visible ' +\n 'object_set_persistent object_set_mask room_set_width room_set_height ' +\n 'room_set_persistent room_set_background_colour ' +\n 'room_set_background_color room_set_view room_set_viewport ' +\n 'room_get_viewport room_set_view_enabled room_add room_duplicate ' +\n 'room_assign room_instance_add room_instance_clear room_get_camera ' +\n 'room_set_camera asset_get_index asset_get_type ' +\n 'file_text_open_from_string file_text_open_read file_text_open_write ' +\n 'file_text_open_append file_text_close file_text_write_string ' +\n 'file_text_write_real file_text_writeln file_text_read_string ' +\n 'file_text_read_real file_text_readln file_text_eof file_text_eoln ' +\n 'file_exists file_delete file_rename file_copy directory_exists ' +\n 'directory_create directory_destroy file_find_first file_find_next ' +\n 'file_find_close file_attributes filename_name filename_path ' +\n 'filename_dir filename_drive filename_ext filename_change_ext ' +\n 'file_bin_open file_bin_rewrite file_bin_close file_bin_position ' +\n 'file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte ' +\n 'parameter_count parameter_string environment_get_variable ' +\n 'ini_open_from_string ini_open ini_close ini_read_string ' +\n 'ini_read_real ini_write_string ini_write_real ini_key_exists ' +\n 'ini_section_exists ini_key_delete ini_section_delete ' +\n 'ds_set_precision ds_exists ds_stack_create ds_stack_destroy ' +\n 'ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ' +\n 'ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ' +\n 'ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ' +\n 'ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ' +\n 'ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ' +\n 'ds_list_create ds_list_destroy ds_list_clear ds_list_copy ' +\n 'ds_list_size ds_list_empty ds_list_add ds_list_insert ' +\n 'ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ' +\n 'ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ' +\n 'ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ' +\n 'ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ' +\n 'ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ' +\n 'ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ' +\n 'ds_map_find_value ds_map_find_previous ds_map_find_next ' +\n 'ds_map_find_first ds_map_find_last ds_map_write ds_map_read ' +\n 'ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ' +\n 'ds_map_secure_save_buffer ds_map_set ds_priority_create ' +\n 'ds_priority_destroy ds_priority_clear ds_priority_copy ' +\n 'ds_priority_size ds_priority_empty ds_priority_add ' +\n 'ds_priority_change_priority ds_priority_find_priority ' +\n 'ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ' +\n 'ds_priority_delete_max ds_priority_find_max ds_priority_write ' +\n 'ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ' +\n 'ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ' +\n 'ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ' +\n 'ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ' +\n 'ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ' +\n 'ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ' +\n 'ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ' +\n 'ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ' +\n 'ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ' +\n 'ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ' +\n 'ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ' +\n 'ds_grid_sort ds_grid_set ds_grid_get effect_create_below ' +\n 'effect_create_above effect_clear part_type_create part_type_destroy ' +\n 'part_type_exists part_type_clear part_type_shape part_type_sprite ' +\n 'part_type_size part_type_scale part_type_orientation part_type_life ' +\n 'part_type_step part_type_death part_type_speed part_type_direction ' +\n 'part_type_gravity part_type_colour1 part_type_colour2 ' +\n 'part_type_colour3 part_type_colour_mix part_type_colour_rgb ' +\n 'part_type_colour_hsv part_type_color1 part_type_color2 ' +\n 'part_type_color3 part_type_color_mix part_type_color_rgb ' +\n 'part_type_color_hsv part_type_alpha1 part_type_alpha2 ' +\n 'part_type_alpha3 part_type_blend part_system_create ' +\n 'part_system_create_layer part_system_destroy part_system_exists ' +\n 'part_system_clear part_system_draw_order part_system_depth ' +\n 'part_system_position part_system_automatic_update ' +\n 'part_system_automatic_draw part_system_update part_system_drawit ' +\n 'part_system_get_layer part_system_layer part_particles_create ' +\n 'part_particles_create_colour part_particles_create_color ' +\n 'part_particles_clear part_particles_count part_emitter_create ' +\n 'part_emitter_destroy part_emitter_destroy_all part_emitter_exists ' +\n 'part_emitter_clear part_emitter_region part_emitter_burst ' +\n 'part_emitter_stream external_call external_define external_free ' +\n 'window_handle window_device matrix_get matrix_set ' +\n 'matrix_build_identity matrix_build matrix_build_lookat ' +\n 'matrix_build_projection_ortho matrix_build_projection_perspective ' +\n 'matrix_build_projection_perspective_fov matrix_multiply ' +\n 'matrix_transform_vertex matrix_stack_push matrix_stack_pop ' +\n 'matrix_stack_multiply matrix_stack_set matrix_stack_clear ' +\n 'matrix_stack_top matrix_stack_is_empty browser_input_capture ' +\n 'os_get_config os_get_info os_get_language os_get_region ' +\n 'os_lock_orientation display_get_dpi_x display_get_dpi_y ' +\n 'display_set_gui_size display_set_gui_maximise ' +\n 'display_set_gui_maximize device_mouse_dbclick_enable ' +\n 'display_set_timing_method display_get_timing_method ' +\n 'display_set_sleep_margin display_get_sleep_margin virtual_key_add ' +\n 'virtual_key_hide virtual_key_delete virtual_key_show ' +\n 'draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level ' +\n 'draw_get_swf_aa_level draw_texture_flush draw_flush ' +\n 'gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc ' +\n 'gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog ' +\n 'gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext ' +\n 'gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable ' +\n 'gpu_set_colourwriteenable gpu_set_alphatestenable ' +\n 'gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter ' +\n 'gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext ' +\n 'gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat ' +\n 'gpu_set_tex_repeat_ext gpu_set_tex_mip_filter ' +\n 'gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias ' +\n 'gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext ' +\n 'gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso ' +\n 'gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable ' +\n 'gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable ' +\n 'gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable ' +\n 'gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext ' +\n 'gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src ' +\n 'gpu_get_blendmode_dest gpu_get_blendmode_srcalpha ' +\n 'gpu_get_blendmode_destalpha gpu_get_colorwriteenable ' +\n 'gpu_get_colourwriteenable gpu_get_alphatestenable ' +\n 'gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter ' +\n 'gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext ' +\n 'gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat ' +\n 'gpu_get_tex_repeat_ext gpu_get_tex_mip_filter ' +\n 'gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias ' +\n 'gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext ' +\n 'gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso ' +\n 'gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable ' +\n 'gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state ' +\n 'gpu_get_state gpu_set_state draw_light_define_ambient ' +\n 'draw_light_define_direction draw_light_define_point ' +\n 'draw_light_enable draw_set_lighting draw_light_get_ambient ' +\n 'draw_light_get draw_get_lighting shop_leave_rating url_get_domain ' +\n 'url_open url_open_ext url_open_full get_timer achievement_login ' +\n 'achievement_logout achievement_post achievement_increment ' +\n 'achievement_post_score achievement_available ' +\n 'achievement_show_achievements achievement_show_leaderboards ' +\n 'achievement_load_friends achievement_load_leaderboard ' +\n 'achievement_send_challenge achievement_load_progress ' +\n 'achievement_reset achievement_login_status achievement_get_pic ' +\n 'achievement_show_challenge_notifications achievement_get_challenges ' +\n 'achievement_event achievement_show achievement_get_info ' +\n 'cloud_file_save cloud_string_save cloud_synchronise ads_enable ' +\n 'ads_disable ads_setup ads_engagement_launch ads_engagement_available ' +\n 'ads_engagement_active ads_event ads_event_preload ' +\n 'ads_set_reward_callback ads_get_display_height ads_get_display_width ' +\n 'ads_move ads_interstitial_available ads_interstitial_display ' +\n 'device_get_tilt_x device_get_tilt_y device_get_tilt_z ' +\n 'device_is_keypad_open device_mouse_check_button ' +\n 'device_mouse_check_button_pressed device_mouse_check_button_released ' +\n 'device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y ' +\n 'device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status ' +\n 'iap_enumerate_products iap_restore_all iap_acquire iap_consume ' +\n 'iap_product_details iap_purchase_details facebook_init ' +\n 'facebook_login facebook_status facebook_graph_request ' +\n 'facebook_dialog facebook_logout facebook_launch_offerwall ' +\n 'facebook_post_message facebook_send_invite facebook_user_id ' +\n 'facebook_accesstoken facebook_check_permission ' +\n 'facebook_request_read_permissions ' +\n 'facebook_request_publish_permissions gamepad_is_supported ' +\n 'gamepad_get_device_count gamepad_is_connected ' +\n 'gamepad_get_description gamepad_get_button_threshold ' +\n 'gamepad_set_button_threshold gamepad_get_axis_deadzone ' +\n 'gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check ' +\n 'gamepad_button_check_pressed gamepad_button_check_released ' +\n 'gamepad_button_value gamepad_axis_count gamepad_axis_value ' +\n 'gamepad_set_vibration gamepad_set_colour gamepad_set_color ' +\n 'os_is_paused window_has_focus code_is_compiled http_get ' +\n 'http_get_file http_post_string http_request json_encode json_decode ' +\n 'zip_unzip load_csv base64_encode base64_decode md5_string_unicode ' +\n 'md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode ' +\n 'sha1_string_utf8 sha1_file os_powersave_enable analytics_event ' +\n 'analytics_event_ext win8_livetile_tile_notification ' +\n 'win8_livetile_tile_clear win8_livetile_badge_notification ' +\n 'win8_livetile_badge_clear win8_livetile_queue_enable ' +\n 'win8_secondarytile_pin win8_secondarytile_badge_notification ' +\n 'win8_secondarytile_delete win8_livetile_notification_begin ' +\n 'win8_livetile_notification_secondary_begin ' +\n 'win8_livetile_notification_expiry win8_livetile_notification_tag ' +\n 'win8_livetile_notification_text_add ' +\n 'win8_livetile_notification_image_add win8_livetile_notification_end ' +\n 'win8_appbar_enable win8_appbar_add_element ' +\n 'win8_appbar_remove_element win8_settingscharm_add_entry ' +\n 'win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry ' +\n 'win8_settingscharm_set_xaml_property ' +\n 'win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry ' +\n 'win8_share_image win8_share_screenshot win8_share_file ' +\n 'win8_share_url win8_share_text win8_search_enable ' +\n 'win8_search_disable win8_search_add_suggestions ' +\n 'win8_device_touchscreen_available win8_license_initialize_sandbox ' +\n 'win8_license_trial_version winphone_license_trial_version ' +\n 'winphone_tile_title winphone_tile_count winphone_tile_back_title ' +\n 'winphone_tile_back_content winphone_tile_back_content_wide ' +\n 'winphone_tile_front_image winphone_tile_front_image_small ' +\n 'winphone_tile_front_image_wide winphone_tile_back_image ' +\n 'winphone_tile_back_image_wide winphone_tile_background_colour ' +\n 'winphone_tile_background_color winphone_tile_icon_image ' +\n 'winphone_tile_small_icon_image winphone_tile_wide_content ' +\n 'winphone_tile_cycle_images winphone_tile_small_background_image ' +\n 'physics_world_create physics_world_gravity ' +\n 'physics_world_update_speed physics_world_update_iterations ' +\n 'physics_world_draw_debug physics_pause_enable physics_fixture_create ' +\n 'physics_fixture_set_kinematic physics_fixture_set_density ' +\n 'physics_fixture_set_awake physics_fixture_set_restitution ' +\n 'physics_fixture_set_friction physics_fixture_set_collision_group ' +\n 'physics_fixture_set_sensor physics_fixture_set_linear_damping ' +\n 'physics_fixture_set_angular_damping physics_fixture_set_circle_shape ' +\n 'physics_fixture_set_box_shape physics_fixture_set_edge_shape ' +\n 'physics_fixture_set_polygon_shape physics_fixture_set_chain_shape ' +\n 'physics_fixture_add_point physics_fixture_bind ' +\n 'physics_fixture_bind_ext physics_fixture_delete physics_apply_force ' +\n 'physics_apply_impulse physics_apply_angular_impulse ' +\n 'physics_apply_local_force physics_apply_local_impulse ' +\n 'physics_apply_torque physics_mass_properties physics_draw_debug ' +\n 'physics_test_overlap physics_remove_fixture physics_set_friction ' +\n 'physics_set_density physics_set_restitution physics_get_friction ' +\n 'physics_get_density physics_get_restitution ' +\n 'physics_joint_distance_create physics_joint_rope_create ' +\n 'physics_joint_revolute_create physics_joint_prismatic_create ' +\n 'physics_joint_pulley_create physics_joint_wheel_create ' +\n 'physics_joint_weld_create physics_joint_friction_create ' +\n 'physics_joint_gear_create physics_joint_enable_motor ' +\n 'physics_joint_get_value physics_joint_set_value physics_joint_delete ' +\n 'physics_particle_create physics_particle_delete ' +\n 'physics_particle_delete_region_circle ' +\n 'physics_particle_delete_region_box ' +\n 'physics_particle_delete_region_poly physics_particle_set_flags ' +\n 'physics_particle_set_category_flags physics_particle_draw ' +\n 'physics_particle_draw_ext physics_particle_count ' +\n 'physics_particle_get_data physics_particle_get_data_particle ' +\n 'physics_particle_group_begin physics_particle_group_circle ' +\n 'physics_particle_group_box physics_particle_group_polygon ' +\n 'physics_particle_group_add_point physics_particle_group_end ' +\n 'physics_particle_group_join physics_particle_group_delete ' +\n 'physics_particle_group_count physics_particle_group_get_data ' +\n 'physics_particle_group_get_mass physics_particle_group_get_inertia ' +\n 'physics_particle_group_get_centre_x ' +\n 'physics_particle_group_get_centre_y physics_particle_group_get_vel_x ' +\n 'physics_particle_group_get_vel_y physics_particle_group_get_ang_vel ' +\n 'physics_particle_group_get_x physics_particle_group_get_y ' +\n 'physics_particle_group_get_angle physics_particle_set_group_flags ' +\n 'physics_particle_get_group_flags physics_particle_get_max_count ' +\n 'physics_particle_get_radius physics_particle_get_density ' +\n 'physics_particle_get_damping physics_particle_get_gravity_scale ' +\n 'physics_particle_set_max_count physics_particle_set_radius ' +\n 'physics_particle_set_density physics_particle_set_damping ' +\n 'physics_particle_set_gravity_scale network_create_socket ' +\n 'network_create_socket_ext network_create_server ' +\n 'network_create_server_raw network_connect network_connect_raw ' +\n 'network_send_packet network_send_raw network_send_broadcast ' +\n 'network_send_udp network_send_udp_raw network_set_timeout ' +\n 'network_set_config network_resolve network_destroy buffer_create ' +\n 'buffer_write buffer_read buffer_seek buffer_get_surface ' +\n 'buffer_set_surface buffer_delete buffer_exists buffer_get_type ' +\n 'buffer_get_alignment buffer_poke buffer_peek buffer_save ' +\n 'buffer_save_ext buffer_load buffer_load_ext buffer_load_partial ' +\n 'buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize ' +\n 'buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode ' +\n 'buffer_base64_decode_ext buffer_sizeof buffer_get_address ' +\n 'buffer_create_from_vertex_buffer ' +\n 'buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer ' +\n 'buffer_async_group_begin buffer_async_group_option ' +\n 'buffer_async_group_end buffer_load_async buffer_save_async ' +\n 'gml_release_mode gml_pragma steam_activate_overlay ' +\n 'steam_is_overlay_enabled steam_is_overlay_activated ' +\n 'steam_get_persona_name steam_initialised ' +\n 'steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account ' +\n 'steam_file_persisted steam_get_quota_total steam_get_quota_free ' +\n 'steam_file_write steam_file_write_file steam_file_read ' +\n 'steam_file_delete steam_file_exists steam_file_size steam_file_share ' +\n 'steam_is_screenshot_requested steam_send_screenshot ' +\n 'steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc ' +\n 'steam_user_installed_dlc steam_set_achievement steam_get_achievement ' +\n 'steam_clear_achievement steam_set_stat_int steam_set_stat_float ' +\n 'steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float ' +\n 'steam_get_stat_avg_rate steam_reset_all_stats ' +\n 'steam_reset_all_stats_achievements steam_stats_ready ' +\n 'steam_create_leaderboard steam_upload_score steam_upload_score_ext ' +\n 'steam_download_scores_around_user steam_download_scores ' +\n 'steam_download_friends_scores steam_upload_score_buffer ' +\n 'steam_upload_score_buffer_ext steam_current_game_language ' +\n 'steam_available_languages steam_activate_overlay_browser ' +\n 'steam_activate_overlay_user steam_activate_overlay_store ' +\n 'steam_get_user_persona_name steam_get_app_id ' +\n 'steam_get_user_account_id steam_ugc_download steam_ugc_create_item ' +\n 'steam_ugc_start_item_update steam_ugc_set_item_title ' +\n 'steam_ugc_set_item_description steam_ugc_set_item_visibility ' +\n 'steam_ugc_set_item_tags steam_ugc_set_item_content ' +\n 'steam_ugc_set_item_preview steam_ugc_submit_item_update ' +\n 'steam_ugc_get_item_update_progress steam_ugc_subscribe_item ' +\n 'steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items ' +\n 'steam_ugc_get_subscribed_items steam_ugc_get_item_install_info ' +\n 'steam_ugc_get_item_update_info steam_ugc_request_item_details ' +\n 'steam_ugc_create_query_user steam_ugc_create_query_user_ex ' +\n 'steam_ugc_create_query_all steam_ugc_create_query_all_ex ' +\n 'steam_ugc_query_set_cloud_filename_filter ' +\n 'steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text ' +\n 'steam_ugc_query_set_ranked_by_trend_days ' +\n 'steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag ' +\n 'steam_ugc_query_set_return_long_description ' +\n 'steam_ugc_query_set_return_total_only ' +\n 'steam_ugc_query_set_allow_cached_response steam_ugc_send_query ' +\n 'shader_set shader_get_name shader_reset shader_current ' +\n 'shader_is_compiled shader_get_sampler_index shader_get_uniform ' +\n 'shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f ' +\n 'shader_set_uniform_f_array shader_set_uniform_matrix ' +\n 'shader_set_uniform_matrix_array shader_enable_corner_id ' +\n 'texture_set_stage texture_get_texel_width texture_get_texel_height ' +\n 'shaders_are_supported vertex_format_begin vertex_format_end ' +\n 'vertex_format_delete vertex_format_add_position ' +\n 'vertex_format_add_position_3d vertex_format_add_colour ' +\n 'vertex_format_add_color vertex_format_add_normal ' +\n 'vertex_format_add_texcoord vertex_format_add_textcoord ' +\n 'vertex_format_add_custom vertex_create_buffer ' +\n 'vertex_create_buffer_ext vertex_delete_buffer vertex_begin ' +\n 'vertex_end vertex_position vertex_position_3d vertex_colour ' +\n 'vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 ' +\n 'vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 ' +\n 'vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size ' +\n 'vertex_create_buffer_from_buffer ' +\n 'vertex_create_buffer_from_buffer_ext push_local_notification ' +\n 'push_get_first_local_notification push_get_next_local_notification ' +\n 'push_cancel_local_notification skeleton_animation_set ' +\n 'skeleton_animation_get skeleton_animation_mix ' +\n 'skeleton_animation_set_ext skeleton_animation_get_ext ' +\n 'skeleton_animation_get_duration skeleton_animation_get_frames ' +\n 'skeleton_animation_clear skeleton_skin_set skeleton_skin_get ' +\n 'skeleton_attachment_set skeleton_attachment_get ' +\n 'skeleton_attachment_create skeleton_collision_draw_set ' +\n 'skeleton_bone_data_get skeleton_bone_data_set ' +\n 'skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax ' +\n 'skeleton_get_num_bounds skeleton_get_bounds ' +\n 'skeleton_animation_get_frame skeleton_animation_set_frame ' +\n 'draw_skeleton draw_skeleton_time draw_skeleton_instance ' +\n 'draw_skeleton_collision skeleton_animation_list skeleton_skin_list ' +\n 'skeleton_slot_data layer_get_id layer_get_id_at_depth ' +\n 'layer_get_depth layer_create layer_destroy layer_destroy_instances ' +\n 'layer_add_instance layer_has_instance layer_set_visible ' +\n 'layer_get_visible layer_exists layer_x layer_y layer_get_x ' +\n 'layer_get_y layer_hspeed layer_vspeed layer_get_hspeed ' +\n 'layer_get_vspeed layer_script_begin layer_script_end layer_shader ' +\n 'layer_get_script_begin layer_get_script_end layer_get_shader ' +\n 'layer_set_target_room layer_get_target_room layer_reset_target_room ' +\n 'layer_get_all layer_get_all_elements layer_get_name layer_depth ' +\n 'layer_get_element_layer layer_get_element_type layer_element_move ' +\n 'layer_force_draw_depth layer_is_draw_depth_forced ' +\n 'layer_get_forced_depth layer_background_get_id ' +\n 'layer_background_exists layer_background_create ' +\n 'layer_background_destroy layer_background_visible ' +\n 'layer_background_change layer_background_sprite ' +\n 'layer_background_htiled layer_background_vtiled ' +\n 'layer_background_stretch layer_background_yscale ' +\n 'layer_background_xscale layer_background_blend ' +\n 'layer_background_alpha layer_background_index layer_background_speed ' +\n 'layer_background_get_visible layer_background_get_sprite ' +\n 'layer_background_get_htiled layer_background_get_vtiled ' +\n 'layer_background_get_stretch layer_background_get_yscale ' +\n 'layer_background_get_xscale layer_background_get_blend ' +\n 'layer_background_get_alpha layer_background_get_index ' +\n 'layer_background_get_speed layer_sprite_get_id layer_sprite_exists ' +\n 'layer_sprite_create layer_sprite_destroy layer_sprite_change ' +\n 'layer_sprite_index layer_sprite_speed layer_sprite_xscale ' +\n 'layer_sprite_yscale layer_sprite_angle layer_sprite_blend ' +\n 'layer_sprite_alpha layer_sprite_x layer_sprite_y ' +\n 'layer_sprite_get_sprite layer_sprite_get_index ' +\n 'layer_sprite_get_speed layer_sprite_get_xscale ' +\n 'layer_sprite_get_yscale layer_sprite_get_angle ' +\n 'layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x ' +\n 'layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists ' +\n 'layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x ' +\n 'tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset ' +\n 'tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width ' +\n 'tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get ' +\n 'tilemap_get_at_pixel tilemap_get_cell_x_at_pixel ' +\n 'tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile ' +\n 'tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask ' +\n 'tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index ' +\n 'tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty ' +\n 'tile_get_index tile_get_flip tile_get_mirror tile_get_rotate ' +\n 'layer_tile_exists layer_tile_create layer_tile_destroy ' +\n 'layer_tile_change layer_tile_xscale layer_tile_yscale ' +\n 'layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y ' +\n 'layer_tile_region layer_tile_visible layer_tile_get_sprite ' +\n 'layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend ' +\n 'layer_tile_get_alpha layer_tile_get_x layer_tile_get_y ' +\n 'layer_tile_get_region layer_tile_get_visible ' +\n 'layer_instance_get_instance instance_activate_layer ' +\n 'instance_deactivate_layer camera_create camera_create_view ' +\n 'camera_destroy camera_apply camera_get_active camera_get_default ' +\n 'camera_set_default camera_set_view_mat camera_set_proj_mat ' +\n 'camera_set_update_script camera_set_begin_script ' +\n 'camera_set_end_script camera_set_view_pos camera_set_view_size ' +\n 'camera_set_view_speed camera_set_view_border camera_set_view_angle ' +\n 'camera_set_view_target camera_get_view_mat camera_get_proj_mat ' +\n 'camera_get_update_script camera_get_begin_script ' +\n 'camera_get_end_script camera_get_view_x camera_get_view_y ' +\n 'camera_get_view_width camera_get_view_height camera_get_view_speed_x ' +\n 'camera_get_view_speed_y camera_get_view_border_x ' +\n 'camera_get_view_border_y camera_get_view_angle ' +\n 'camera_get_view_target view_get_camera view_get_visible ' +\n 'view_get_xport view_get_yport view_get_wport view_get_hport ' +\n 'view_get_surface_id view_set_camera view_set_visible view_set_xport ' +\n 'view_set_yport view_set_wport view_set_hport view_set_surface_id ' +\n 'gesture_drag_time gesture_drag_distance gesture_flick_speed ' +\n 'gesture_double_tap_time gesture_double_tap_distance ' +\n 'gesture_pinch_distance gesture_pinch_angle_towards ' +\n 'gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle ' +\n 'gesture_tap_count gesture_get_drag_time gesture_get_drag_distance ' +\n 'gesture_get_flick_speed gesture_get_double_tap_time ' +\n 'gesture_get_double_tap_distance gesture_get_pinch_distance ' +\n 'gesture_get_pinch_angle_towards gesture_get_pinch_angle_away ' +\n 'gesture_get_rotate_time gesture_get_rotate_angle ' +\n 'gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide ' +\n 'keyboard_virtual_status keyboard_virtual_height',\n literal: 'self other all noone global local undefined pointer_invalid ' +\n 'pointer_null path_action_stop path_action_restart ' +\n 'path_action_continue path_action_reverse true false pi GM_build_date ' +\n 'GM_version GM_runtime_version timezone_local timezone_utc ' +\n 'gamespeed_fps gamespeed_microseconds ev_create ev_destroy ev_step ' +\n 'ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ' +\n 'ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ' +\n 'ev_keyrelease ev_trigger ev_left_button ev_right_button ' +\n 'ev_middle_button ev_no_button ev_left_press ev_right_press ' +\n 'ev_middle_press ev_left_release ev_right_release ev_middle_release ' +\n 'ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ' +\n 'ev_global_left_button ev_global_right_button ev_global_middle_button ' +\n 'ev_global_left_press ev_global_right_press ev_global_middle_press ' +\n 'ev_global_left_release ev_global_right_release ' +\n 'ev_global_middle_release ev_joystick1_left ev_joystick1_right ' +\n 'ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ' +\n 'ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ' +\n 'ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ' +\n 'ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ' +\n 'ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ' +\n 'ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ' +\n 'ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ' +\n 'ev_joystick2_button8 ev_outside ev_boundary ev_game_start ' +\n 'ev_game_end ev_room_start ev_room_end ev_no_more_lives ' +\n 'ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ' +\n 'ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ' +\n 'ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ' +\n 'ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ' +\n 'ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ' +\n 'ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ' +\n 'ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ' +\n 'ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ' +\n 'ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ' +\n 'ev_global_gesture_tap ev_global_gesture_double_tap ' +\n 'ev_global_gesture_drag_start ev_global_gesture_dragging ' +\n 'ev_global_gesture_drag_end ev_global_gesture_flick ' +\n 'ev_global_gesture_pinch_start ev_global_gesture_pinch_in ' +\n 'ev_global_gesture_pinch_out ev_global_gesture_pinch_end ' +\n 'ev_global_gesture_rotate_start ev_global_gesture_rotating ' +\n 'ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return ' +\n 'vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab ' +\n 'vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home ' +\n 'vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 ' +\n 'vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 ' +\n 'vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 ' +\n 'vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract ' +\n 'vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift ' +\n 'vk_rcontrol vk_ralt mb_any mb_none mb_left mb_right mb_middle ' +\n 'c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime ' +\n 'c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal ' +\n 'c_white c_yellow c_orange fa_left fa_center fa_right fa_top ' +\n 'fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip ' +\n 'pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal ' +\n 'bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour ' +\n 'bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha ' +\n 'bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour ' +\n 'bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat ' +\n 'tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly ' +\n 'audio_falloff_none audio_falloff_inverse_distance ' +\n 'audio_falloff_inverse_distance_clamped audio_falloff_linear_distance ' +\n 'audio_falloff_linear_distance_clamped ' +\n 'audio_falloff_exponent_distance ' +\n 'audio_falloff_exponent_distance_clamped audio_old_system ' +\n 'audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none ' +\n 'cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse ' +\n 'cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint ' +\n 'cr_size_all spritespeed_framespersecond ' +\n 'spritespeed_framespergameframe asset_object asset_unknown ' +\n 'asset_sprite asset_sound asset_room asset_path asset_script ' +\n 'asset_font asset_timeline asset_tiles asset_shader fa_readonly ' +\n 'fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive ' +\n 'ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ' +\n 'ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ' +\n 'ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ' +\n 'ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line ' +\n 'pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere ' +\n 'pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud ' +\n 'pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ' +\n 'ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ' +\n 'ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl ' +\n 'dll_stdcall matrix_view matrix_projection matrix_world os_win32 ' +\n 'os_windows os_macosx os_ios os_android os_symbian os_linux ' +\n 'os_unknown os_winphone os_tizen os_win8native ' +\n 'os_wiiu os_3ds os_psvita os_bb10 os_ps4 os_xboxone ' +\n 'os_ps3 os_xbox360 os_uwp os_tvos os_switch ' +\n 'browser_not_a_browser browser_unknown browser_ie browser_firefox ' +\n 'browser_chrome browser_safari browser_safari_mobile browser_opera ' +\n 'browser_tizen browser_edge browser_windows_store browser_ie_mobile ' +\n 'device_ios_unknown device_ios_iphone device_ios_iphone_retina ' +\n 'device_ios_ipad device_ios_ipad_retina device_ios_iphone5 ' +\n 'device_ios_iphone6 device_ios_iphone6plus device_emulator ' +\n 'device_tablet display_landscape display_landscape_flipped ' +\n 'display_portrait display_portrait_flipped tm_sleep tm_countvsyncs ' +\n 'of_challenge_win of_challen ge_lose of_challenge_tie ' +\n 'leaderboard_type_number leaderboard_type_time_mins_secs ' +\n 'cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal ' +\n 'cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always ' +\n 'cull_noculling cull_clockwise cull_counterclockwise lighttype_dir ' +\n 'lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase ' +\n 'iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed ' +\n 'iap_status_uninitialised iap_status_unavailable iap_status_loading ' +\n 'iap_status_available iap_status_processing iap_status_restoring ' +\n 'iap_failed iap_unavailable iap_available iap_purchased iap_canceled ' +\n 'iap_refunded fb_login_default fb_login_fallback_to_webview ' +\n 'fb_login_no_fallback_to_webview fb_login_forcing_webview ' +\n 'fb_login_use_system_account fb_login_forcing_safari ' +\n 'phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x ' +\n 'phy_joint_anchor_2_y phy_joint_reaction_force_x ' +\n 'phy_joint_reaction_force_y phy_joint_reaction_torque ' +\n 'phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque ' +\n 'phy_joint_max_motor_torque phy_joint_translation phy_joint_speed ' +\n 'phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 ' +\n 'phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency ' +\n 'phy_joint_lower_angle_limit phy_joint_upper_angle_limit ' +\n 'phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque ' +\n 'phy_joint_max_force phy_debug_render_aabb ' +\n 'phy_debug_render_collision_pairs phy_debug_render_coms ' +\n 'phy_debug_render_core_shapes phy_debug_render_joints ' +\n 'phy_debug_render_obb phy_debug_render_shapes ' +\n 'phy_particle_flag_water phy_particle_flag_zombie ' +\n 'phy_particle_flag_wall phy_particle_flag_spring ' +\n 'phy_particle_flag_elastic phy_particle_flag_viscous ' +\n 'phy_particle_flag_powder phy_particle_flag_tensile ' +\n 'phy_particle_flag_colourmixing phy_particle_flag_colormixing ' +\n 'phy_particle_group_flag_solid phy_particle_group_flag_rigid ' +\n 'phy_particle_data_flag_typeflags phy_particle_data_flag_position ' +\n 'phy_particle_data_flag_velocity phy_particle_data_flag_colour ' +\n 'phy_particle_data_flag_color phy_particle_data_flag_category ' +\n 'achievement_our_info achievement_friends_info ' +\n 'achievement_leaderboard_info achievement_achievement_info ' +\n 'achievement_filter_all_players achievement_filter_friends_only ' +\n 'achievement_filter_favorites_only ' +\n 'achievement_type_achievement_challenge ' +\n 'achievement_type_score_challenge achievement_pic_loaded ' +\n 'achievement_show_ui achievement_show_profile ' +\n 'achievement_show_leaderboard achievement_show_achievement ' +\n 'achievement_show_bank achievement_show_friend_picker ' +\n 'achievement_show_purchase_prompt network_socket_tcp ' +\n 'network_socket_udp network_socket_bluetooth network_type_connect ' +\n 'network_type_disconnect network_type_data ' +\n 'network_type_non_blocking_connect network_config_connect_timeout ' +\n 'network_config_use_non_blocking_socket ' +\n 'network_config_enable_reliable_udp ' +\n 'network_config_disable_reliable_udp buffer_fixed buffer_grow ' +\n 'buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 ' +\n 'buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 ' +\n 'buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text ' +\n 'buffer_string buffer_surface_copy buffer_seek_start ' +\n 'buffer_seek_relative buffer_seek_end ' +\n 'buffer_generalerror buffer_outofspace buffer_outofbounds ' +\n 'buffer_invalidtype text_type button_type input_type ANSI_CHARSET ' +\n 'DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET ' +\n 'SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET ' +\n 'JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET ' +\n 'TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET ' +\n 'BALTIC_CHARSET OEM_CHARSET gp_face1 gp_face2 gp_face3 gp_face4 ' +\n 'gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select ' +\n 'gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr ' +\n 'gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ' +\n 'ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none ' +\n 'lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric ' +\n 'lb_disp_time_sec lb_disp_time_ms ugc_result_success ' +\n 'ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ' +\n 'ugc_visibility_friends_only ugc_visibility_private ' +\n 'ugc_query_RankedByVote ugc_query_RankedByPublicationDate ' +\n 'ugc_query_AcceptedForGameRankedByAcceptanceDate ' +\n 'ugc_query_RankedByTrend ' +\n 'ugc_query_FavoritedByFriendsRankedByPublicationDate ' +\n 'ugc_query_CreatedByFriendsRankedByPublicationDate ' +\n 'ugc_query_RankedByNumTimesReported ' +\n 'ugc_query_CreatedByFollowedUsersRankedByPublicationDate ' +\n 'ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ' +\n 'ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ' +\n 'ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ' +\n 'ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ' +\n 'ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ' +\n 'ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ' +\n 'ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ' +\n 'ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ' +\n 'ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ' +\n 'ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ' +\n 'ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ' +\n 'ugc_match_WebGuides ugc_match_IntegratedGuides ' +\n 'ugc_match_UsableInGame ugc_match_ControllerBindings ' +\n 'vertex_usage_position vertex_usage_colour vertex_usage_color ' +\n 'vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord ' +\n 'vertex_usage_blendweight vertex_usage_blendindices ' +\n 'vertex_usage_psize vertex_usage_tangent vertex_usage_binormal ' +\n 'vertex_usage_fog vertex_usage_depth vertex_usage_sample ' +\n 'vertex_type_float1 vertex_type_float2 vertex_type_float3 ' +\n 'vertex_type_float4 vertex_type_colour vertex_type_color ' +\n 'vertex_type_ubyte4 layerelementtype_undefined ' +\n 'layerelementtype_background layerelementtype_instance ' +\n 'layerelementtype_oldtilemap layerelementtype_sprite ' +\n 'layerelementtype_tilemap layerelementtype_particlesystem ' +\n 'layerelementtype_tile tile_rotate tile_flip tile_mirror ' +\n 'tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url ' +\n 'kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name ' +\n 'kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google ' +\n 'kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route ' +\n 'kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo ' +\n 'kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency ' +\n 'kbv_autocapitalize_none kbv_autocapitalize_words ' +\n 'kbv_autocapitalize_sentences kbv_autocapitalize_characters',\n symbol: 'argument_relative argument argument0 argument1 argument2 ' +\n 'argument3 argument4 argument5 argument6 argument7 argument8 ' +\n 'argument9 argument10 argument11 argument12 argument13 argument14 ' +\n 'argument15 argument_count x y xprevious yprevious xstart ystart ' +\n 'hspeed vspeed direction speed friction gravity gravity_direction ' +\n 'path_index path_position path_positionprevious path_speed ' +\n 'path_scale path_orientation path_endaction object_index id solid ' +\n 'persistent mask_index instance_count instance_id room_speed fps ' +\n 'fps_real current_time current_year current_month current_day ' +\n 'current_weekday current_hour current_minute current_second alarm ' +\n 'timeline_index timeline_position timeline_speed timeline_running ' +\n 'timeline_loop room room_first room_last room_width room_height ' +\n 'room_caption room_persistent score lives health show_score ' +\n 'show_lives show_health caption_score caption_lives caption_health ' +\n 'event_type event_number event_object event_action ' +\n 'application_surface gamemaker_pro gamemaker_registered ' +\n 'gamemaker_version error_occurred error_last debug_mode ' +\n 'keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string ' +\n 'mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite ' +\n 'visible sprite_index sprite_width sprite_height sprite_xoffset ' +\n 'sprite_yoffset image_number image_index image_speed depth ' +\n 'image_xscale image_yscale image_angle image_alpha image_blend ' +\n 'bbox_left bbox_right bbox_top bbox_bottom layer background_colour ' +\n 'background_showcolour background_color background_showcolor ' +\n 'view_enabled view_current view_visible view_xview view_yview ' +\n 'view_wview view_hview view_xport view_yport view_wport view_hport ' +\n 'view_angle view_hborder view_vborder view_hspeed view_vspeed ' +\n 'view_object view_surface_id view_camera game_id game_display_name ' +\n 'game_project_name game_save_id working_directory temp_directory ' +\n 'program_directory browser_width browser_height os_type os_device ' +\n 'os_browser os_version display_aa async_load delta_time ' +\n 'webgl_enabled event_data iap_data phy_rotation phy_position_x ' +\n 'phy_position_y phy_angular_velocity phy_linear_velocity_x ' +\n 'phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed ' +\n 'phy_angular_damping phy_linear_damping phy_bullet ' +\n 'phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x ' +\n 'phy_com_y phy_dynamic phy_kinematic phy_sleeping ' +\n 'phy_collision_points phy_collision_x phy_collision_y ' +\n 'phy_col_normal_x phy_col_normal_y phy_position_xprevious ' +\n 'phy_position_yprevious'\n };\n\n return {\n aliases: ['gml', 'GML'],\n case_insensitive: false, // language is case-insensitive\n keywords: GML_KEYWORDS,\n\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var GO_KEYWORDS = {\n keyword:\n 'break default func interface select case map struct chan else goto package switch ' +\n 'const fallthrough if range type continue for import return var go defer ' +\n 'bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 ' +\n 'uint16 uint32 uint64 int uint uintptr rune',\n literal:\n 'true false iota nil',\n built_in:\n 'append cap close complex copy imag len make new panic print println real recover delete'\n };\n return {\n aliases: ['golang'],\n keywords: GO_KEYWORDS,\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n variants: [\n hljs.QUOTE_STRING_MODE,\n {begin: '\\'', end: '[^\\\\\\\\]\\''},\n {begin: '`', end: '`'},\n ]\n },\n {\n className: 'number',\n variants: [\n {begin: hljs.C_NUMBER_RE + '[dflsi]', relevance: 1},\n hljs.C_NUMBER_MODE\n ]\n },\n {\n begin: /:=/ // relevance booster\n },\n {\n className: 'function',\n beginKeywords: 'func', end: /\\s*\\{/, excludeEnd: true,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: GO_KEYWORDS,\n illegal: /[\"']/\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'println readln print import module function local return let var ' +\n 'while for foreach times in case when match with break continue ' +\n 'augment augmentation each find filter reduce ' +\n 'if then else otherwise try catch finally raise throw orIfNull ' +\n 'DynamicObject|10 DynamicVariable struct Observable map set vector list array',\n literal:\n 'true false null'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n }\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'task project allprojects subprojects artifacts buildscript configurations ' +\n 'dependencies repositories sourceSets description delete from into include ' +\n 'exclude source classpath destinationDir includes options sourceCompatibility ' +\n 'targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant ' +\n 'def abstract break case catch continue default do else extends final finally ' +\n 'for if implements instanceof native new private protected public return static ' +\n 'switch synchronized throw throws transient try volatile while strictfp package ' +\n 'import false null super this true antlrtask checkstyle codenarc copy boolean ' +\n 'byte char class double float int interface long short void compile runTime ' +\n 'file fileTree abs any append asList asWritable call collect compareTo count ' +\n 'div dump each eachByte eachFile eachLine every find findAll flatten getAt ' +\n 'getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods ' +\n 'isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter ' +\n 'newReader newWriter next plus pop power previous print println push putAt read ' +\n 'readBytes readLines reverse reverseEach round size sort splitEachLine step subMap ' +\n 'times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader ' +\n 'withStream withWriter withWriterAppend write writeLine'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.REGEXP_MODE\n\n ]\n }\n};","module.exports = function(hljs) {\n return {\n keywords: {\n literal : 'true false null',\n keyword:\n 'byte short char int long boolean float double void ' +\n // groovy specific keywords\n 'def as in assert trait ' +\n // common keywords with Java\n 'super this abstract static volatile transient public private protected synchronized final ' +\n 'class interface enum if else for while switch case break default continue ' +\n 'throw throws try catch finally implements extends new import package return instanceof'\n },\n\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"'\n },\n {\n className: 'string',\n begin: \"'''\", end: \"'''\"\n },\n {\n className: 'string',\n begin: \"\\\\$/\", end: \"/\\\\$\",\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n {\n className: 'regexp',\n begin: /~?\\/[^\\/\\n]+\\//,\n contains: [\n hljs.BACKSLASH_ESCAPE\n ]\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", end: '$',\n illegal: '\\n'\n },\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface trait enum', end: '{',\n illegal: ':',\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n },\n {\n // highlight map keys and named parameters as strings\n className: 'string', begin: /[^\\?]{0}[A-Za-z0-9_$]+ *:/\n },\n {\n // catch middle element of the ternary operator\n // to avoid highlight it as a label, named parameter, or map key\n begin: /\\?/, end: /\\:/\n },\n {\n // highlight labeled statements\n className: 'symbol', begin: '^\\\\s*[A-Za-z0-9_$]+:',\n relevance: 0\n }\n ],\n illegal: /#|<\\//\n }\n};","module.exports = // TODO support filter tags like :javascript, support inline HTML\nfunction(hljs) {\n return {\n case_insensitive: true,\n contains: [\n {\n className: 'meta',\n begin: '^!!!( (5|1\\\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\\\b.*))?$',\n relevance: 10\n },\n // FIXME these comments should be allowed to span indented lines\n hljs.COMMENT(\n '^\\\\s*(!=#|=#|-#|/).*$',\n false,\n {\n relevance: 0\n }\n ),\n {\n begin: '^\\\\s*(-|=|!=)(?!#)',\n starts: {\n end: '\\\\n',\n subLanguage: 'ruby'\n }\n },\n {\n className: 'tag',\n begin: '^\\\\s*%',\n contains: [\n {\n className: 'selector-tag',\n begin: '\\\\w+'\n },\n {\n className: 'selector-id',\n begin: '#[\\\\w-]+'\n },\n {\n className: 'selector-class',\n begin: '\\\\.[\\\\w-]+'\n },\n {\n begin: '{\\\\s*',\n end: '\\\\s*}',\n contains: [\n {\n begin: ':\\\\w+\\\\s*=>',\n end: ',\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: ':\\\\w+'\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\s*',\n end: '\\\\s*\\\\)',\n excludeEnd: true,\n contains: [\n {\n begin: '\\\\w+\\\\s*=',\n end: '\\\\s+',\n returnBegin: true,\n endsWithParent: true,\n contains: [\n {\n className: 'attr',\n begin: '\\\\w+',\n relevance: 0\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n begin: '\\\\w+',\n relevance: 0\n }\n ]\n }\n ]\n }\n ]\n },\n {\n begin: '^\\\\s*[=~]\\\\s*'\n },\n {\n begin: '#{',\n starts: {\n end: '}',\n subLanguage: 'ruby'\n }\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_INS = {'builtin-name': 'each in with if else unless bindattr action collection debugger log outlet template unbound view yield'};\n return {\n aliases: ['hbs', 'html.hbs', 'html.handlebars'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.-]+/,\n keywords: BUILT_INS,\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /\\}\\}/,\n keywords: BUILT_INS\n }\n ]\n };\n};","module.exports = function(hljs) {\n var COMMENT = {\n variants: [\n hljs.COMMENT('--', '$'),\n hljs.COMMENT(\n '{-',\n '-}',\n {\n contains: ['self']\n }\n )\n ]\n };\n\n var PRAGMA = {\n className: 'meta',\n begin: '{-#', end: '#-}'\n };\n\n var PREPROCESSOR = {\n className: 'meta',\n begin: '^#', end: '$'\n };\n\n var CONSTRUCTOR = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*', // TODO: other constructors (build-in, infix).\n relevance: 0\n };\n\n var LIST = {\n begin: '\\\\(', end: '\\\\)',\n illegal: '\"',\n contains: [\n PRAGMA,\n PREPROCESSOR,\n {className: 'type', begin: '\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?'},\n hljs.inherit(hljs.TITLE_MODE, {begin: '[_a-z][\\\\w\\']*'}),\n COMMENT\n ]\n };\n\n var RECORD = {\n begin: '{', end: '}',\n contains: LIST.contains\n };\n\n return {\n aliases: ['hs'],\n keywords:\n 'let in if then else case of where do module import hiding ' +\n 'qualified type data newtype deriving class instance as default ' +\n 'infix infixl infixr foreign export ccall stdcall cplusplus ' +\n 'jvm dotnet safe unsafe family forall mdo proc rec',\n contains: [\n\n // Top-level constructions.\n\n {\n beginKeywords: 'module', end: 'where',\n keywords: 'module where',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n {\n begin: '\\\\bimport\\\\b', end: '$',\n keywords: 'import qualified as hiding',\n contains: [LIST, COMMENT],\n illegal: '\\\\W\\\\.|;'\n },\n\n {\n className: 'class',\n begin: '^(\\\\s*)?(class|instance)\\\\b', end: 'where',\n keywords: 'class family instance where',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n },\n {\n className: 'class',\n begin: '\\\\b(data|(new)?type)\\\\b', end: '$',\n keywords: 'data family type newtype deriving',\n contains: [PRAGMA, CONSTRUCTOR, LIST, RECORD, COMMENT]\n },\n {\n beginKeywords: 'default', end: '$',\n contains: [CONSTRUCTOR, LIST, COMMENT]\n },\n {\n beginKeywords: 'infix infixl infixr', end: '$',\n contains: [hljs.C_NUMBER_MODE, COMMENT]\n },\n {\n begin: '\\\\bforeign\\\\b', end: '$',\n keywords: 'foreign import export ccall stdcall cplusplus jvm ' +\n 'dotnet safe unsafe',\n contains: [CONSTRUCTOR, hljs.QUOTE_STRING_MODE, COMMENT]\n },\n {\n className: 'meta',\n begin: '#!\\\\/usr\\\\/bin\\\\/env\\ runhaskell', end: '$'\n },\n\n // \"Whitespaces\".\n\n PRAGMA,\n PREPROCESSOR,\n\n // Literals and names.\n\n // TODO: characters.\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n CONSTRUCTOR,\n hljs.inherit(hljs.TITLE_MODE, {begin: '^[_a-z][\\\\w\\']*'}),\n\n COMMENT,\n\n {begin: '->|<-'} // No markup, relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z_$][a-zA-Z0-9_$]*';\n var IDENT_FUNC_RETURN_TYPE_RE = '([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)';\n\n var HAXE_BASIC_TYPES = 'Int Float String Bool Dynamic Void Array ';\n\n return {\n aliases: ['hx'],\n keywords: {\n keyword: 'break case cast catch continue default do dynamic else enum extern ' +\n 'for function here if import in inline never new override package private get set ' +\n 'public return static super switch this throw trace try typedef untyped using var while ' +\n HAXE_BASIC_TYPES,\n built_in:\n 'trace this',\n literal:\n 'true false null _'\n },\n contains: [\n { className: 'string', // interpolate-able strings\n begin: '\\'', end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n { className: 'subst', // interpolation\n begin: '\\\\$\\\\{', end: '\\\\}'\n },\n { className: 'subst', // interpolation\n begin: '\\\\$', end: '\\\\W}'\n }\n ]\n },\n hljs.QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n { className: 'meta', // compiler meta\n begin: '@:', end: '$'\n },\n { className: 'meta', // compiler conditionals\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elseif end error'}\n },\n { className: 'type', // function types\n begin: ':[ \\t]*', end: '[^A-Za-z0-9_ \\t\\\\->]',\n excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n { className: 'type', // types\n begin: ':[ \\t]*', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type', // instantiation\n begin: 'new *', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'class', // enums\n beginKeywords: 'enum', end: '\\\\{',\n contains: [\n hljs.TITLE_MODE\n ]\n },\n { className: 'class', // abstracts\n beginKeywords: 'abstract', end: '[\\\\{$]',\n contains: [\n { className: 'type',\n begin: '\\\\(', end: '\\\\)',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type',\n begin: 'from +', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n { className: 'type',\n begin: 'to +', end: '\\\\W',\n excludeBegin: true, excludeEnd: true\n },\n hljs.TITLE_MODE\n ],\n keywords: {\n keyword: 'abstract from to'\n }\n },\n { className: 'class', // classes\n begin: '\\\\b(class|interface) +', end: '[\\\\{$]', excludeEnd: true,\n keywords: 'class interface',\n contains: [\n { className: 'keyword',\n begin: '\\\\b(extends|implements) +',\n keywords: 'extends implements',\n contains: [\n {\n className: 'type',\n begin: hljs.IDENT_RE,\n relevance: 0\n }\n ]\n },\n hljs.TITLE_MODE\n ]\n },\n { className: 'function',\n beginKeywords: 'function', end: '\\\\(', excludeEnd: true,\n illegal: '\\\\S',\n contains: [\n hljs.TITLE_MODE\n ]\n }\n ],\n illegal: /<\\//\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: /[\\w\\._]+/,\n keywords: 'goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n {\n // multi-line string\n className: 'string',\n begin: '{\"', end: '\"}',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n {\n // pre-processor\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib'},\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'meta-string'}),\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n\n {\n // label\n className: 'symbol',\n begin: '^\\\\*(\\\\w+|@)'\n },\n\n hljs.NUMBER_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_INS = 'action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view';\n\n var ATTR_ASSIGNMENT = {\n illegal: /\\}\\}/,\n begin: /[a-zA-Z0-9_]+=/,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr', begin: /[a-zA-Z0-9_]+/\n }\n ]\n };\n\n var SUB_EXPR = {\n illegal: /\\}\\}/,\n begin: /\\)/, end: /\\)/,\n contains: [\n {\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {built_in: BUILT_INS},\n starts: {\n endsWithParent: true, relevance: 0,\n contains: [\n hljs.QUOTE_STRING_MODE,\n ]\n }\n }\n ]\n };\n\n var TAG_INNARDS = {\n endsWithParent: true, relevance: 0,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE,\n ATTR_ASSIGNMENT,\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT('{{!(--)?', '(--)?}}'),\n {\n className: 'template-tag',\n begin: /\\{\\{[#\\/]/, end: /\\}\\}/,\n contains: [\n {\n className: 'name',\n begin: /[a-zA-Z\\.\\-]+/,\n keywords: {'builtin-name': BUILT_INS},\n starts: TAG_INNARDS\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{[a-zA-Z][a-zA-Z\\-]+/, end: /\\}\\}/,\n keywords: {keyword: 'as', built_in: BUILT_INS},\n contains: [\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VERSION = 'HTTP/[0-9\\\\.]+';\n return {\n aliases: ['https'],\n illegal: '\\\\S',\n contains: [\n {\n begin: '^' + VERSION, end: '$',\n contains: [{className: 'number', begin: '\\\\b\\\\d{3}\\\\b'}]\n },\n {\n begin: '^[A-Z]+ (.*?) ' + VERSION + '$', returnBegin: true, end: '$',\n contains: [\n {\n className: 'string',\n begin: ' ', end: ' ',\n excludeBegin: true, excludeEnd: true\n },\n {\n begin: VERSION\n },\n {\n className: 'keyword',\n begin: '[A-Z]+'\n }\n ]\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n illegal: '\\\\n|\\\\s|=',\n starts: {end: '$', relevance: 0}\n },\n {\n begin: '\\\\n\\\\n',\n starts: {subLanguage: [], endsWithParent: true}\n }\n ]\n };\n};","module.exports = function(hljs) {\n var keywords = {\n 'builtin-name':\n // keywords\n '!= % %= & &= * ** **= *= *map ' +\n '+ += , --build-class-- --import-- -= . / // //= ' +\n '/= < << <<= <= = > >= >> >>= ' +\n '@ @= ^ ^= abs accumulate all and any ap-compose ' +\n 'ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ' +\n 'ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast ' +\n 'callable calling-module-name car case cdr chain chr coll? combinations compile ' +\n 'compress cond cons cons? continue count curry cut cycle dec ' +\n 'def default-method defclass defmacro defmacro-alias defmacro/g! defmain defmethod defmulti defn ' +\n 'defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir ' +\n 'disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? ' +\n 'end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first ' +\n 'flatten float? fn fnc fnr for for* format fraction genexpr ' +\n 'gensym get getattr global globals group-by hasattr hash hex id ' +\n 'identity if if* if-not if-python2 import in inc input instance? ' +\n 'integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even ' +\n 'is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none ' +\n 'is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass ' +\n 'iter iterable? iterate iterator? keyword keyword? lambda last len let ' +\n 'lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all ' +\n 'map max merge-with method-decorator min multi-decorator multicombinations name neg? next ' +\n 'none? nonlocal not not-in not? nth numeric? oct odd? open ' +\n 'or ord partition permutations pos? post-route postwalk pow prewalk print ' +\n 'product profile/calls profile/cpu put-route quasiquote quote raise range read read-str ' +\n 'recursive-replace reduce remove repeat repeatedly repr require rest round route ' +\n 'route-with-methods rwm second seq set-comp setattr setv some sorted string ' +\n 'string? sum switch symbol? take take-nth take-while tee try unless ' +\n 'unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms ' +\n 'xi xor yield yield-from zero? zip zip-longest | |= ~'\n };\n\n var SYMBOLSTART = 'a-zA-Z_\\\\-!.?+*=<>&#\\'';\n var SYMBOL_RE = '[' + SYMBOLSTART + '][' + SYMBOLSTART + '0-9/;:]*';\n var SIMPLE_NUMBER_RE = '[-+]?\\\\d+(\\\\.\\\\d+)?';\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n\n var SYMBOL = {\n begin: SYMBOL_RE,\n relevance: 0\n };\n var NUMBER = {\n className: 'number', begin: SIMPLE_NUMBER_RE,\n relevance: 0\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n );\n var LITERAL = {\n className: 'literal',\n begin: /\\b([Tt]rue|[Ff]alse|nil|None)\\b/\n };\n var COLLECTION = {\n begin: '[\\\\[\\\\{]', end: '[\\\\]\\\\}]'\n };\n var HINT = {\n className: 'comment',\n begin: '\\\\^' + SYMBOL_RE\n };\n var HINT_COL = hljs.COMMENT('\\\\^\\\\{', '\\\\}');\n var KEY = {\n className: 'symbol',\n begin: '[:]{1,2}' + SYMBOL_RE\n };\n var LIST = {\n begin: '\\\\(', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n var NAME = {\n keywords: keywords,\n lexemes: SYMBOL_RE,\n className: 'name', begin: SYMBOL_RE,\n starts: BODY\n };\n var DEFAULT_CONTAINS = [LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL, SYMBOL];\n\n LIST.contains = [hljs.COMMENT('comment', ''), NAME, BODY];\n BODY.contains = DEFAULT_CONTAINS;\n COLLECTION.contains = DEFAULT_CONTAINS;\n\n return {\n aliases: ['hylang'],\n illegal: /\\S/,\n contains: [SHEBANG, LIST, STRING, HINT, HINT_COL, COMMENT, KEY, COLLECTION, NUMBER, LITERAL]\n }\n};","module.exports = function(hljs) {\n var START_BRACKET = '\\\\[';\n var END_BRACKET = '\\\\]';\n return {\n aliases: ['i7'],\n case_insensitive: true,\n keywords: {\n // Some keywords more or less unique to I7, for relevance.\n keyword:\n // kind:\n 'thing room person man woman animal container ' +\n 'supporter backdrop door ' +\n // characteristic:\n 'scenery open closed locked inside gender ' +\n // verb:\n 'is are say understand ' +\n // misc keyword:\n 'kind of rule'\n },\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0,\n contains: [\n {\n className: 'subst',\n begin: START_BRACKET, end: END_BRACKET\n }\n ]\n },\n {\n className: 'section',\n begin: /^(Volume|Book|Part|Chapter|Section|Table)\\b/,\n end: '$'\n },\n {\n // Rule definition\n // This is here for relevance.\n begin: /^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\b/,\n end: ':',\n contains: [\n {\n //Rule name\n begin: '\\\\(This', end: '\\\\)'\n }\n ]\n },\n {\n className: 'comment',\n begin: START_BRACKET, end: END_BRACKET,\n contains: ['self']\n }\n ]\n };\n};","module.exports = function(hljs) {\n var STRING = {\n className: \"string\",\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: \"'''\", end: \"'''\",\n relevance: 10\n }, {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n }, {\n begin: '\"', end: '\"'\n }, {\n begin: \"'\", end: \"'\"\n }\n ]\n };\n return {\n aliases: ['toml'],\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT(';', '$'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'section',\n begin: /^\\s*\\[+/, end: /\\]+/\n },\n {\n begin: /^[a-z0-9\\[\\]_-]+\\s*=\\s*/, end: '$',\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: /[a-z0-9\\[\\]_-]+/\n },\n {\n begin: /=/, endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'literal',\n begin: /\\bon|off|true|false|yes|no\\b/\n },\n {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d\"][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n },\n STRING,\n {\n className: 'number',\n begin: /([\\+\\-]+)?[\\d]+_[\\d_]+/\n },\n hljs.NUMBER_MODE\n ]\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var F_KEYWORDS = {\n literal: '.False. .True.',\n keyword: 'kind do while private call intrinsic where elsewhere ' +\n 'type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then ' +\n 'public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. ' +\n 'goto save else use module select case ' +\n 'access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit ' +\n 'continue format pause cycle exit ' +\n 'c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg ' +\n 'synchronous nopass non_overridable pass protected volatile abstract extends import ' +\n 'non_intrinsic value deferred generic final enumerator class associate bind enum ' +\n 'c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t ' +\n 'c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double ' +\n 'c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr ' +\n 'c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated c_f_pointer ' +\n 'c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor ' +\n 'numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ' +\n 'ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive ' +\n 'pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure ' +\n 'integer real character complex logical dimension allocatable|10 parameter ' +\n 'external implicit|10 none double precision assign intent optional pointer ' +\n 'target in out common equivalence data ' +\n // IRPF90 special keywords\n 'begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch ' +\n 'soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read',\n built_in: 'alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint ' +\n 'dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl ' +\n 'algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama ' +\n 'iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod ' +\n 'qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log ' +\n 'log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate ' +\n 'adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product ' +\n 'eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul ' +\n 'maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product ' +\n 'radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind ' +\n 'set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer ' +\n 'dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ' +\n 'ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode ' +\n 'is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_of' +\n 'acosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 ' +\n 'atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits ' +\n 'bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr ' +\n 'num_images parity popcnt poppar shifta shiftl shiftr this_image ' +\n // IRPF90 special built_ins\n 'IRP_ALIGN irp_here'\n };\n return {\n case_insensitive: true,\n keywords: F_KEYWORDS,\n illegal: /\\/\\*/,\n contains: [\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {className: 'string', relevance: 0}),\n {\n className: 'function',\n beginKeywords: 'subroutine function program',\n illegal: '[${=\\\\n]',\n contains: [hljs.UNDERSCORE_TITLE_MODE, PARAMS]\n },\n hljs.COMMENT('!', '$', {relevance: 0}),\n hljs.COMMENT('begin_doc', 'end_doc', {relevance: 10}),\n {\n className: 'number',\n begin: '(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?',\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n // Определение идентификаторов\n var UNDERSCORE_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_!][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // Определение имен функций\n var FUNCTION_NAME_IDENT_RE = \"[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]*\";\n\n // keyword : ключевые слова\n var KEYWORD =\n \"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока \" +\n \"except exitfor finally foreach все if если in в not не or или try while пока \";\n\n // SYSRES Constants\n var sysres_constants =\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_FULL \" +\n \"SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW \" +\n \"SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE \" +\n \"SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE \" +\n \"SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS \" +\n \"SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL \" +\n \"SYSRES_CONST_ACCESS_TYPE_FULL_CODE \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW \" +\n \"SYSRES_CONST_ACCESS_TYPE_VIEW_CODE \" +\n \"SYSRES_CONST_ACTION_TYPE_ABORT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCEPT \" +\n \"SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_KIND \" +\n \"SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_CONTINUE \" +\n \"SYSRES_CONST_ACTION_TYPE_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE \" +\n \"SYSRES_CONST_ACTION_TYPE_CREATE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT \" +\n \"SYSRES_CONST_ACTION_TYPE_DELETE_VERSION \" +\n \"SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_READED \" +\n \"SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_MODIFY_CARD \" +\n \"SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION \" +\n \"SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ACTION_TYPE_PERFORM \" +\n \"SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTART \" +\n \"SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE \" +\n \"SYSRES_CONST_ACTION_TYPE_REVISION \" +\n \"SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL \" +\n \"SYSRES_CONST_ACTION_TYPE_SIGN \" +\n \"SYSRES_CONST_ACTION_TYPE_START \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK \" +\n \"SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_STATE \" +\n \"SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW \" +\n \"SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY \" +\n \"SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY \" +\n \"SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY \" +\n \"SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_ADD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_ADDITION_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE \" +\n \"SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION \" +\n \"SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS \" +\n \"SYSRES_CONST_ALL_USERS_GROUP \" +\n \"SYSRES_CONST_ALL_USERS_GROUP_NAME \" +\n \"SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE \" +\n \"SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE \" +\n \"SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN \" +\n \"SYSRES_CONST_ATTACH_TYPE_DOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_EDOC \" +\n \"SYSRES_CONST_ATTACH_TYPE_FOLDER \" +\n \"SYSRES_CONST_ATTACH_TYPE_JOB \" +\n \"SYSRES_CONST_ATTACH_TYPE_REFERENCE \" +\n \"SYSRES_CONST_ATTACH_TYPE_TASK \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD \" +\n \"SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_NOVELL \" +\n \"SYSRES_CONST_AUTH_PASSWORD \" +\n \"SYSRES_CONST_AUTH_PASSWORD_CODE \" +\n \"SYSRES_CONST_AUTH_WINDOWS \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME \" +\n \"SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTO_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTO_NUMERATION_CODE \" +\n \"SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK \" +\n \"SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE \" +\n \"SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE \" +\n \"SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_BTN_PART \" +\n \"SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE \" +\n \"SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE \" +\n \"SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT \" +\n \"SYSRES_CONST_CARD_PART \" +\n \"SYSRES_CONST_CARD_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE \" +\n \"SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE \" +\n \"SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT \" +\n \"SYSRES_CONST_CODE_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_CODE_REQUISITE_ACCESS \" +\n \"SYSRES_CONST_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_CODE_REQUISITE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_DESCRIPTION \" +\n \"SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT \" +\n \"SYSRES_CONST_CODE_REQUISITE_RECORD \" +\n \"SYSRES_CONST_COMMENT_REQ_CODE \" +\n \"SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMP_CODE_GRD \" +\n \"SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_DOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EDOCS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE \" +\n \"SYSRES_CONST_COMPONENT_TYPE_OTHER \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REFERENCES \" +\n \"SYSRES_CONST_COMPONENT_TYPE_REPORTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_SCRIPTS \" +\n \"SYSRES_CONST_COMPONENT_TYPE_URL \" +\n \"SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE \" +\n \"SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_COMMON \" +\n \"SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL \" +\n \"SYSRES_CONST_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_CONST_POSITIVE_VALUE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE \" +\n \"SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE \" +\n \"SYSRES_CONST_CONTENTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATA_TYPE_BOOLEAN \" +\n \"SYSRES_CONST_DATA_TYPE_DATE \" +\n \"SYSRES_CONST_DATA_TYPE_FLOAT \" +\n \"SYSRES_CONST_DATA_TYPE_INTEGER \" +\n \"SYSRES_CONST_DATA_TYPE_PICK \" +\n \"SYSRES_CONST_DATA_TYPE_REFERENCE \" +\n \"SYSRES_CONST_DATA_TYPE_STRING \" +\n \"SYSRES_CONST_DATA_TYPE_TEXT \" +\n \"SYSRES_CONST_DATA_TYPE_VARIANT \" +\n \"SYSRES_CONST_DATE_CLOSE_REQ_CODE \" +\n \"SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR \" +\n \"SYSRES_CONST_DATE_OPEN_REQ_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE \" +\n \"SYSRES_CONST_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_DATE_REQUISITE_TYPE \" +\n \"SYSRES_CONST_DATE_TYPE_CHAR \" +\n \"SYSRES_CONST_DATETIME_FORMAT_VALUE \" +\n \"SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_DET1_PART \" +\n \"SYSRES_CONST_DET2_PART \" +\n \"SYSRES_CONST_DET3_PART \" +\n \"SYSRES_CONST_DET4_PART \" +\n \"SYSRES_CONST_DET5_PART \" +\n \"SYSRES_CONST_DET6_PART \" +\n \"SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE \" +\n \"SYSRES_CONST_DETAIL_REQ_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_DOCUMENT_STORAGES_CODE \" +\n \"SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME \" +\n \"SYSRES_CONST_DOUBLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE \" +\n \"SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE \" +\n \"SYSRES_CONST_EDITORS_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_KIND_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE \" +\n \"SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_NONE_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE \" +\n \"SYSRES_CONST_EDOC_READONLY_ACCESS_CODE \" +\n \"SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE \" +\n \"SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE \" +\n \"SYSRES_CONST_EDOC_WRITE_ACCES_CODE \" +\n \"SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_END_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE \" +\n \"SYSRES_CONST_EXIST_CONST \" +\n \"SYSRES_CONST_EXIST_VALUE \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK \" +\n \"SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_ASK \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST \" +\n \"SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE \" +\n \"SYSRES_CONST_EXTENSION_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_REQUISITE_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_COMMON_NAME \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_CODE \" +\n \"SYSRES_CONST_FILTER_TYPE_USER_NAME \" +\n \"SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME \" +\n \"SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_FLOAT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_FOLDER_AUTHOR_VALUE \" +\n \"SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS \" +\n \"SYSRES_CONST_FOLDER_KIND_COMPONENTS \" +\n \"SYSRES_CONST_FOLDER_KIND_EDOCS \" +\n \"SYSRES_CONST_FOLDER_KIND_JOBS \" +\n \"SYSRES_CONST_FOLDER_KIND_TASKS \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMMON \" +\n \"SYSRES_CONST_FOLDER_TYPE_COMPONENT \" +\n \"SYSRES_CONST_FOLDER_TYPE_FAVORITES \" +\n \"SYSRES_CONST_FOLDER_TYPE_INBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_OUTBOX \" +\n \"SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SEARCH \" +\n \"SYSRES_CONST_FOLDER_TYPE_SHORTCUTS \" +\n \"SYSRES_CONST_FOLDER_TYPE_USER \" +\n \"SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE \" +\n \"SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE \" +\n \"SYSRES_CONST_FUNCTION_CANCEL_RESULT \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM \" +\n \"SYSRES_CONST_FUNCTION_CATEGORY_USER \" +\n \"SYSRES_CONST_FUNCTION_FAILURE_RESULT \" +\n \"SYSRES_CONST_FUNCTION_SAVE_RESULT \" +\n \"SYSRES_CONST_GENERATED_REQUISITE \" +\n \"SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE \" +\n \"SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME \" +\n \"SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_GROUP_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_GROUPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_HIDDEN_MODE_NAME \" +\n \"SYSRES_CONST_HIGH_LVL_REQUISITE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_CREATE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_DELETE_CODE \" +\n \"SYSRES_CONST_HISTORY_ACTION_EDIT_CODE \" +\n \"SYSRES_CONST_HOUR_CHAR \" +\n \"SYSRES_CONST_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_IDSPS_REQUISITE_CODE \" +\n \"SYSRES_CONST_IMAGE_MODE_COLOR \" +\n \"SYSRES_CONST_IMAGE_MODE_GREYSCALE \" +\n \"SYSRES_CONST_IMAGE_MODE_MONOCHROME \" +\n \"SYSRES_CONST_IMPORTANCE_HIGH \" +\n \"SYSRES_CONST_IMPORTANCE_LOW \" +\n \"SYSRES_CONST_IMPORTANCE_NORMAL \" +\n \"SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_INT_REQUISITE \" +\n \"SYSRES_CONST_INT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR \" +\n \"SYSRES_CONST_INTEGER_TYPE_CHAR \" +\n \"SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE \" +\n \"SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_JOB_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_JOB_KIND_CONTROL_JOB \" +\n \"SYSRES_CONST_JOB_KIND_JOB \" +\n \"SYSRES_CONST_JOB_KIND_NOTICE \" +\n \"SYSRES_CONST_JOB_STATE_ABORTED \" +\n \"SYSRES_CONST_JOB_STATE_COMPLETE \" +\n \"SYSRES_CONST_JOB_STATE_WORKING \" +\n \"SYSRES_CONST_KIND_REQUISITE_CODE \" +\n \"SYSRES_CONST_KIND_REQUISITE_NAME \" +\n \"SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE \" +\n \"SYSRES_CONST_KOD_INPUT_TYPE \" +\n \"SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_EDOC \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_FOLDER \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_JOB \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE \" +\n \"SYSRES_CONST_LINK_OBJECT_KIND_TASK \" +\n \"SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_LIST_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MAIN_VIEW_CODE \" +\n \"SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG \" +\n \"SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_MAXIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_ME_VALUE \" +\n \"SYSRES_CONST_MESSAGE_ATTENTION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_ERROR_CAPTION \" +\n \"SYSRES_CONST_MESSAGE_INFORMATION_CAPTION \" +\n \"SYSRES_CONST_MINIMIZED_MODE_NAME \" +\n \"SYSRES_CONST_MINUTE_CHAR \" +\n \"SYSRES_CONST_MODULE_REQUISITE_CODE \" +\n \"SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_MONTH_FORMAT_VALUE \" +\n \"SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NAMEAN_INPUT_TYPE \" +\n \"SYSRES_CONST_NEGATIVE_PICK_VALUE \" +\n \"SYSRES_CONST_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_NO \" +\n \"SYSRES_CONST_NO_PICK_VALUE \" +\n \"SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NO_VALUE \" +\n \"SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE \" +\n \"SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_NORMAL_MODE_NAME \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_NOTE_REQUISITE_CODE \" +\n \"SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_NUM_REQUISITE \" +\n \"SYSRES_CONST_NUM_STR_REQUISITE_CODE \" +\n \"SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG \" +\n \"SYSRES_CONST_NUMERATION_AUTO_STRONG \" +\n \"SYSRES_CONST_NUMERATION_FROM_DICTONARY \" +\n \"SYSRES_CONST_NUMERATION_MANUAL \" +\n \"SYSRES_CONST_NUMERIC_TYPE_CHAR \" +\n \"SYSRES_CONST_NUMREQ_REQUISITE_CODE \" +\n \"SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE \" +\n \"SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE \" +\n \"SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX \" +\n \"SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_ORIGINALREF_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_REF_CODE \" +\n \"SYSRES_CONST_OURFIRM_REQUISITE_CODE \" +\n \"SYSRES_CONST_OURFIRM_VAR \" +\n \"SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE \" +\n \"SYSRES_CONST_PICK_NEGATIVE_RESULT \" +\n \"SYSRES_CONST_PICK_POSITIVE_RESULT \" +\n \"SYSRES_CONST_PICK_REQUISITE \" +\n \"SYSRES_CONST_PICK_REQUISITE_TYPE \" +\n \"SYSRES_CONST_PICK_TYPE_CHAR \" +\n \"SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE \" +\n \"SYSRES_CONST_PLATFORM_VERSION_COMMENT \" +\n \"SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_POSITIVE_PICK_VALUE \" +\n \"SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE \" +\n \"SYSRES_CONST_PRIORITY_REQUISITE_CODE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE \" +\n \"SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE \" +\n \"SYSRES_CONST_RECSTAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REF_REQUISITE \" +\n \"SYSRES_CONST_REF_REQUISITE_TYPE \" +\n \"SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE \" +\n \"SYSRES_CONST_REFERENCE_TYPE_CHAR \" +\n \"SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME \" +\n \"SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE \" +\n \"SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY \" +\n \"SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE \" +\n \"SYSRES_CONST_REQ_MODE_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_EDIT_CODE \" +\n \"SYSRES_CONST_REQ_MODE_HIDDEN_CODE \" +\n \"SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE \" +\n \"SYSRES_CONST_REQ_MODE_VIEW_CODE \" +\n \"SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQ_SECTION_VALUE \" +\n \"SYSRES_CONST_REQ_TYPE_VALUE \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_LEFT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_RIGHT \" +\n \"SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT \" +\n \"SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_ACTIONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTON \" +\n \"SYSRES_CONST_REQUISITE_SECTION_BUTTONS \" +\n \"SYSRES_CONST_REQUISITE_SECTION_CARD \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE10 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE11 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE12 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE13 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE14 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE15 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE16 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE17 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE18 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE19 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE2 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE20 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE21 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE22 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE23 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE24 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE3 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE4 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE5 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE6 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE7 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE8 \" +\n \"SYSRES_CONST_REQUISITE_SECTION_TABLE9 \" +\n \"SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE \" +\n \"SYSRES_CONST_RIGHT_ALIGNMENT_CODE \" +\n \"SYSRES_CONST_ROLES_REFERENCE_CODE \" +\n \"SYSRES_CONST_ROUTE_STEP_AFTER_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS \" +\n \"SYSRES_CONST_ROUTE_TYPE_COMPLEX \" +\n \"SYSRES_CONST_ROUTE_TYPE_PARALLEL \" +\n \"SYSRES_CONST_ROUTE_TYPE_SERIAL \" +\n \"SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE \" +\n \"SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE \" +\n \"SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_SEARCHES_COMPONENT_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME \" +\n \"SYSRES_CONST_SEARCHES_EDOC_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_FOLDER_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_JOB_CONTENT \" +\n \"SYSRES_CONST_SEARCHES_REFERENCE_CODE \" +\n \"SYSRES_CONST_SEARCHES_TASK_CONTENT \" +\n \"SYSRES_CONST_SECOND_CHAR \" +\n \"SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE \" +\n \"SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE \" +\n \"SYSRES_CONST_SELECT_REFERENCE_MODE_NAME \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD \" +\n \"SYSRES_CONST_SELECT_TYPE_UNSLECTABLE \" +\n \"SYSRES_CONST_SERVER_TYPE_MAIN \" +\n \"SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE \" +\n \"SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE \" +\n \"SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_STATE_REQ_NAME \" +\n \"SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE \" +\n \"SYSRES_CONST_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_STATIC_ROLE_TYPE_CODE \" +\n \"SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE \" +\n \"SYSRES_CONST_STATUS_VALUE_AUTOCLEANING \" +\n \"SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_COMPLETE \" +\n \"SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_RED_SQUARE \" +\n \"SYSRES_CONST_STATUS_VALUE_SUSPEND \" +\n \"SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE \" +\n \"SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_STORAGE_TYPE_FILE \" +\n \"SYSRES_CONST_STORAGE_TYPE_SQL_SERVER \" +\n \"SYSRES_CONST_STR_REQUISITE \" +\n \"SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE \" +\n \"SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR \" +\n \"SYSRES_CONST_STRING_REQUISITE_CODE \" +\n \"SYSRES_CONST_STRING_REQUISITE_TYPE \" +\n \"SYSRES_CONST_STRING_TYPE_CHAR \" +\n \"SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE \" +\n \"SYSRES_CONST_SYSTEM_VERSION_COMMENT \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS \" +\n \"SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_NONE \" +\n \"SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD \" +\n \"SYSRES_CONST_TASK_ROUTE_ALL_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_AND_CONDITION \" +\n \"SYSRES_CONST_TASK_ROUTE_OR_CONDITION \" +\n \"SYSRES_CONST_TASK_STATE_ABORTED \" +\n \"SYSRES_CONST_TASK_STATE_COMPLETE \" +\n \"SYSRES_CONST_TASK_STATE_CONTINUED \" +\n \"SYSRES_CONST_TASK_STATE_CONTROL \" +\n \"SYSRES_CONST_TASK_STATE_INIT \" +\n \"SYSRES_CONST_TASK_STATE_WORKING \" +\n \"SYSRES_CONST_TASK_TITLE \" +\n \"SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE \" +\n \"SYSRES_CONST_TASK_TYPES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEMPLATES_REFERENCE_CODE \" +\n \"SYSRES_CONST_TEST_DATE_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_DEV_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_DATABASE_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_CODE \" +\n \"SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME \" +\n \"SYSRES_CONST_TEST_EDMS_SYSTEM_CODE \" +\n \"SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME \" +\n \"SYSRES_CONST_TEXT_REQUISITE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_CODE \" +\n \"SYSRES_CONST_TEXT_REQUISITE_TYPE \" +\n \"SYSRES_CONST_TEXT_TYPE_CHAR \" +\n \"SYSRES_CONST_TYPE_CODE_REQUISITE_CODE \" +\n \"SYSRES_CONST_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR \" +\n \"SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE \" +\n \"SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_CODE \" +\n \"SYSRES_CONST_USE_ACCESS_TYPE_NAME \" +\n \"SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CATEGORY_NORMAL \" +\n \"SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY \" +\n \"SYSRES_CONST_USER_COMMON_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_LOGIN_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY \" +\n \"SYSRES_CONST_USER_SERVICE_CATEGORY_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE \" +\n \"SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DEVELOPER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_CODE \" +\n \"SYSRES_CONST_USER_STATUS_DISABLED_NAME \" +\n \"SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_CODE \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME \" +\n \"SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED \" +\n \"SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER \" +\n \"SYSRES_CONST_USER_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_REFERENCE_CODE \" +\n \"SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_USERS_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE \" +\n \"SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME \" +\n \"SYSRES_CONST_VIEW_DEFAULT_CODE \" +\n \"SYSRES_CONST_VIEW_DEFAULT_NAME \" +\n \"SYSRES_CONST_VIEWER_REQUISITE_CODE \" +\n \"SYSRES_CONST_WAITING_BLOCK_DESCRIPTION \" +\n \"SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING \" +\n \"SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING \" +\n \"SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE \" +\n \"SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE \" +\n \"SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD \" +\n \"SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT \" +\n \"SYSRES_CONST_XML_ENCODING \" +\n \"SYSRES_CONST_XREC_STAT_REQUISITE_CODE \" +\n \"SYSRES_CONST_XRECID_FIELD_NAME \" +\n \"SYSRES_CONST_YES \" +\n \"SYSRES_CONST_YES_NO_2_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE \" +\n \"SYSRES_CONST_YES_PICK_VALUE \" +\n \"SYSRES_CONST_YES_VALUE \";\n\n // Base constant\n var base_constants = \"CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE \";\n\n // Base group name\n var base_group_name_constants =\n \"ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME \";\n\n // Decision block properties\n var decision_block_properties_constants =\n \"DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY \" +\n \"DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY \";\n\n // File extension\n var file_extension_constants =\n \"ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION \" +\n \"SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION \";\n\n // Job block properties\n var job_block_properties_constants =\n \"JOB_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_AFTER_FINISH_EVENT \" +\n \"JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_ATTACHMENT_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT \" +\n \"JOB_BLOCK_BEFORE_START_EVENT \" +\n \"JOB_BLOCK_CREATED_JOBS_PROPERTY \" +\n \"JOB_BLOCK_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"JOB_BLOCK_IS_PARALLEL_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"JOB_BLOCK_JOB_TEXT_PROPERTY \" +\n \"JOB_BLOCK_NAME_PROPERTY \" +\n \"JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY \" +\n \"JOB_BLOCK_PERFORMER_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"JOB_BLOCK_SUBJECT_PROPERTY \";\n\n // Language code\n var language_code_constants = \"ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE \";\n\n // Launching external applications\n var launching_external_applications_constants =\n \"smHidden smMaximized smMinimized smNormal wmNo wmYes \";\n\n // Link kind\n var link_kind_constants =\n \"COMPONENT_TOKEN_LINK_KIND \" +\n \"DOCUMENT_LINK_KIND \" +\n \"EDOCUMENT_LINK_KIND \" +\n \"FOLDER_LINK_KIND \" +\n \"JOB_LINK_KIND \" +\n \"REFERENCE_LINK_KIND \" +\n \"TASK_LINK_KIND \";\n\n // Lock type\n var lock_type_constants =\n \"COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE \";\n\n // Monitor block properties\n var monitor_block_properties_constants =\n \"MONITOR_BLOCK_AFTER_FINISH_EVENT \" +\n \"MONITOR_BLOCK_BEFORE_START_EVENT \" +\n \"MONITOR_BLOCK_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_PROPERTY \" +\n \"MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"MONITOR_BLOCK_NAME_PROPERTY \" +\n \"MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY \";\n\n // Notice block properties\n var notice_block_properties_constants =\n \"NOTICE_BLOCK_AFTER_FINISH_EVENT \" +\n \"NOTICE_BLOCK_ATTACHMENT_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_BEFORE_START_EVENT \" +\n \"NOTICE_BLOCK_CREATED_NOTICES_PROPERTY \" +\n \"NOTICE_BLOCK_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"NOTICE_BLOCK_NAME_PROPERTY \" +\n \"NOTICE_BLOCK_NOTICE_TEXT_PROPERTY \" +\n \"NOTICE_BLOCK_PERFORMER_PROPERTY \" +\n \"NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"NOTICE_BLOCK_SUBJECT_PROPERTY \";\n\n // Object events\n var object_events_constants =\n \"dseAfterCancel \" +\n \"dseAfterClose \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseAfterInsert \" +\n \"dseAfterOpen \" +\n \"dseAfterScroll \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseBeforeCancel \" +\n \"dseBeforeClose \" +\n \"dseBeforeDelete \" +\n \"dseBeforeDetailUpdate \" +\n \"dseBeforeInsert \" +\n \"dseBeforeOpen \" +\n \"dseBeforeUpdate \" +\n \"dseOnAnyRequisiteChange \" +\n \"dseOnCloseRecord \" +\n \"dseOnDeleteError \" +\n \"dseOnOpenRecord \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnUpdateError \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseOnValidDelete \" +\n \"dseOnValidUpdate \" +\n \"reOnChange \" +\n \"reOnChangeValues \" +\n \"SELECTION_BEGIN_ROUTE_EVENT \" +\n \"SELECTION_END_ROUTE_EVENT \";\n\n // Object params\n var object_params_constants =\n \"CURRENT_PERIOD_IS_REQUIRED \" +\n \"PREVIOUS_CARD_TYPE_NAME \" +\n \"SHOW_RECORD_PROPERTIES_FORM \";\n\n // Other\n var other_constants =\n \"ACCESS_RIGHTS_SETTING_DIALOG_CODE \" +\n \"ADMINISTRATOR_USER_CODE \" +\n \"ANALYTIC_REPORT_TYPE \" +\n \"asrtHideLocal \" +\n \"asrtHideRemote \" +\n \"CALCULATED_ROLE_TYPE_CODE \" +\n \"COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE \" +\n \"DCTS_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED \" +\n \"E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED \" +\n \"E_EDOC_VERSION_ALREDY_SIGNED_BY_USER \" +\n \"EDOC_TYPES_CODE_REQUISITE_FIELD_NAME \" +\n \"EDOCUMENTS_ALIAS_NAME \" +\n \"FILES_FOLDER_PATH \" +\n \"FILTER_OPERANDS_DELIMITER \" +\n \"FILTER_OPERATIONS_DELIMITER \" +\n \"FORMCARD_NAME \" +\n \"FORMLIST_NAME \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE \" +\n \"GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE \" +\n \"INTEGRATED_REPORT_TYPE \" +\n \"IS_BUILDER_APPLICATION_ROLE \" +\n \"IS_BUILDER_APPLICATION_ROLE2 \" +\n \"IS_BUILDER_USERS \" +\n \"ISBSYSDEV \" +\n \"LOG_FOLDER_PATH \" +\n \"mbCancel \" +\n \"mbNo \" +\n \"mbNoToAll \" +\n \"mbOK \" +\n \"mbYes \" +\n \"mbYesToAll \" +\n \"MEMORY_DATASET_DESRIPTIONS_FILENAME \" +\n \"mrNo \" +\n \"mrNoToAll \" +\n \"mrYes \" +\n \"mrYesToAll \" +\n \"MULTIPLE_SELECT_DIALOG_CODE \" +\n \"NONOPERATING_RECORD_FLAG_FEMININE \" +\n \"NONOPERATING_RECORD_FLAG_MASCULINE \" +\n \"OPERATING_RECORD_FLAG_FEMININE \" +\n \"OPERATING_RECORD_FLAG_MASCULINE \" +\n \"PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE \" +\n \"PROGRAM_INITIATED_LOOKUP_ACTION \" +\n \"ratDelete \" +\n \"ratEdit \" +\n \"ratInsert \" +\n \"REPORT_TYPE \" +\n \"REQUIRED_PICK_VALUES_VARIABLE \" +\n \"rmCard \" +\n \"rmList \" +\n \"SBRTE_PROGID_DEV \" +\n \"SBRTE_PROGID_RELEASE \" +\n \"STATIC_ROLE_TYPE_CODE \" +\n \"SUPPRESS_EMPTY_TEMPLATE_CREATION \" +\n \"SYSTEM_USER_CODE \" +\n \"UPDATE_DIALOG_DATASET \" +\n \"USED_IN_OBJECT_HINT_PARAM \" +\n \"USER_INITIATED_LOOKUP_ACTION \" +\n \"USER_NAME_FORMAT \" +\n \"USER_SELECTION_RESTRICTIONS \" +\n \"WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH \" +\n \"ELS_SUBTYPE_CONTROL_NAME \" +\n \"ELS_FOLDER_KIND_CONTROL_NAME \" +\n \"REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME \";\n\n // Privileges\n var privileges_constants =\n \"PRIVILEGE_COMPONENT_FULL_ACCESS \" +\n \"PRIVILEGE_DEVELOPMENT_EXPORT \" +\n \"PRIVILEGE_DEVELOPMENT_IMPORT \" +\n \"PRIVILEGE_DOCUMENT_DELETE \" +\n \"PRIVILEGE_ESD \" +\n \"PRIVILEGE_FOLDER_DELETE \" +\n \"PRIVILEGE_MANAGE_ACCESS_RIGHTS \" +\n \"PRIVILEGE_MANAGE_REPLICATION \" +\n \"PRIVILEGE_MANAGE_SESSION_SERVER \" +\n \"PRIVILEGE_OBJECT_FULL_ACCESS \" +\n \"PRIVILEGE_OBJECT_VIEW \" +\n \"PRIVILEGE_RESERVE_LICENSE \" +\n \"PRIVILEGE_SYSTEM_CUSTOMIZE \" +\n \"PRIVILEGE_SYSTEM_DEVELOP \" +\n \"PRIVILEGE_SYSTEM_INSTALL \" +\n \"PRIVILEGE_TASK_DELETE \" +\n \"PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE \" +\n \"PRIVILEGES_PSEUDOREFERENCE_CODE \";\n\n // Pseudoreference code\n var pseudoreference_code_constants =\n \"ACCESS_TYPES_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE \" +\n \"ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"COMPONENTS_PSEUDOREFERENCE_CODE \" +\n \"FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE \" +\n \"GROUPS_PSEUDOREFERENCE_CODE \" +\n \"RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE \" +\n \"REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE \" +\n \"REFTYPES_PSEUDOREFERENCE_CODE \" +\n \"REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE \" +\n \"SEND_PROTOCOL_PSEUDOREFERENCE_CODE \" +\n \"SUBSTITUTES_PSEUDOREFERENCE_CODE \" +\n \"SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE \" +\n \"UNITS_PSEUDOREFERENCE_CODE \" +\n \"USERS_PSEUDOREFERENCE_CODE \" +\n \"VIEWERS_PSEUDOREFERENCE_CODE \";\n\n // Requisite ISBCertificateType values\n var requisite_ISBCertificateType_values_constants =\n \"CERTIFICATE_TYPE_ENCRYPT \" +\n \"CERTIFICATE_TYPE_SIGN \" +\n \"CERTIFICATE_TYPE_SIGN_AND_ENCRYPT \";\n\n // Requisite ISBEDocStorageType values\n var requisite_ISBEDocStorageType_values_constants =\n \"STORAGE_TYPE_FILE \" +\n \"STORAGE_TYPE_NAS_CIFS \" +\n \"STORAGE_TYPE_SAPERION \" +\n \"STORAGE_TYPE_SQL_SERVER \";\n\n // Requisite CompType2 values\n var requisite_compType2_values_constants =\n \"COMPTYPE2_REQUISITE_DOCUMENTS_VALUE \" +\n \"COMPTYPE2_REQUISITE_TASKS_VALUE \" +\n \"COMPTYPE2_REQUISITE_FOLDERS_VALUE \" +\n \"COMPTYPE2_REQUISITE_REFERENCES_VALUE \";\n\n // Requisite name\n var requisite_name_constants =\n \"SYSREQ_CODE \" +\n \"SYSREQ_COMPTYPE2 \" +\n \"SYSREQ_CONST_AVAILABLE_FOR_WEB \" +\n \"SYSREQ_CONST_COMMON_CODE \" +\n \"SYSREQ_CONST_COMMON_VALUE \" +\n \"SYSREQ_CONST_FIRM_CODE \" +\n \"SYSREQ_CONST_FIRM_STATUS \" +\n \"SYSREQ_CONST_FIRM_VALUE \" +\n \"SYSREQ_CONST_SERVER_STATUS \" +\n \"SYSREQ_CONTENTS \" +\n \"SYSREQ_DATE_OPEN \" +\n \"SYSREQ_DATE_CLOSE \" +\n \"SYSREQ_DESCRIPTION \" +\n \"SYSREQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_DOUBLE \" +\n \"SYSREQ_EDOC_ACCESS_TYPE \" +\n \"SYSREQ_EDOC_AUTHOR \" +\n \"SYSREQ_EDOC_CREATED \" +\n \"SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_EDITOR \" +\n \"SYSREQ_EDOC_ENCODE_TYPE \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_EXPORT_DATE \" +\n \"SYSREQ_EDOC_EXPORTER \" +\n \"SYSREQ_EDOC_KIND \" +\n \"SYSREQ_EDOC_LIFE_STAGE_NAME \" +\n \"SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE \" +\n \"SYSREQ_EDOC_MODIFIED \" +\n \"SYSREQ_EDOC_NAME \" +\n \"SYSREQ_EDOC_NOTE \" +\n \"SYSREQ_EDOC_QUALIFIED_ID \" +\n \"SYSREQ_EDOC_SESSION_KEY \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME \" +\n \"SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION \" +\n \"SYSREQ_EDOC_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_SIGNED \" +\n \"SYSREQ_EDOC_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_CHECK_RIGHTS \" +\n \"SYSREQ_EDOC_STORAGES_COMPUTER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE \" +\n \"SYSREQ_EDOC_STORAGES_FUNCTION \" +\n \"SYSREQ_EDOC_STORAGES_INITIALIZED \" +\n \"SYSREQ_EDOC_STORAGES_LOCAL_PATH \" +\n \"SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT \" +\n \"SYSREQ_EDOC_STORAGES_SERVER_NAME \" +\n \"SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME \" +\n \"SYSREQ_EDOC_STORAGES_TYPE \" +\n \"SYSREQ_EDOC_TEXT_MODIFIED \" +\n \"SYSREQ_EDOC_TYPE_ACT_CODE \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_ACT_SECTION \" +\n \"SYSREQ_EDOC_TYPE_ADD_PARAMS \" +\n \"SYSREQ_EDOC_TYPE_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_EVENT_TEXT \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_CODE \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_EDOC_TYPE_REQ_NUMBER \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_EDOC_TYPE_REQ_SECTION \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CARD \" +\n \"SYSREQ_EDOC_TYPE_VIEW_CODE \" +\n \"SYSREQ_EDOC_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_EDOC_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME \" +\n \"SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_EDOC_VERSION_AUTHOR \" +\n \"SYSREQ_EDOC_VERSION_CRC \" +\n \"SYSREQ_EDOC_VERSION_DATA \" +\n \"SYSREQ_EDOC_VERSION_EDITOR \" +\n \"SYSREQ_EDOC_VERSION_EXPORT_DATE \" +\n \"SYSREQ_EDOC_VERSION_EXPORTER \" +\n \"SYSREQ_EDOC_VERSION_HIDDEN \" +\n \"SYSREQ_EDOC_VERSION_LIFE_STAGE \" +\n \"SYSREQ_EDOC_VERSION_MODIFIED \" +\n \"SYSREQ_EDOC_VERSION_NOTE \" +\n \"SYSREQ_EDOC_VERSION_SIGNATURE_TYPE \" +\n \"SYSREQ_EDOC_VERSION_SIGNED \" +\n \"SYSREQ_EDOC_VERSION_SIZE \" +\n \"SYSREQ_EDOC_VERSION_SOURCE \" +\n \"SYSREQ_EDOC_VERSION_TEXT_MODIFIED \" +\n \"SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE \" +\n \"SYSREQ_FOLDER_KIND \" +\n \"SYSREQ_FUNC_CATEGORY \" +\n \"SYSREQ_FUNC_COMMENT \" +\n \"SYSREQ_FUNC_GROUP \" +\n \"SYSREQ_FUNC_GROUP_COMMENT \" +\n \"SYSREQ_FUNC_GROUP_NUMBER \" +\n \"SYSREQ_FUNC_HELP \" +\n \"SYSREQ_FUNC_PARAM_DEF_VALUE \" +\n \"SYSREQ_FUNC_PARAM_IDENT \" +\n \"SYSREQ_FUNC_PARAM_NUMBER \" +\n \"SYSREQ_FUNC_PARAM_TYPE \" +\n \"SYSREQ_FUNC_TEXT \" +\n \"SYSREQ_GROUP_CATEGORY \" +\n \"SYSREQ_ID \" +\n \"SYSREQ_LAST_UPDATE \" +\n \"SYSREQ_LEADER_REFERENCE \" +\n \"SYSREQ_LINE_NUMBER \" +\n \"SYSREQ_MAIN_RECORD_ID \" +\n \"SYSREQ_NAME \" +\n \"SYSREQ_NAME_LOCALIZE_ID \" +\n \"SYSREQ_NOTE \" +\n \"SYSREQ_ORIGINAL_RECORD \" +\n \"SYSREQ_OUR_FIRM \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_LOGING \" +\n \"SYSREQ_PROFILING_SETTINGS_BATCH_SIZE \" +\n \"SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED \" +\n \"SYSREQ_PROFILING_SETTINGS_START_LOGGED \" +\n \"SYSREQ_RECORD_STATUS \" +\n \"SYSREQ_REF_REQ_FIELD_NAME \" +\n \"SYSREQ_REF_REQ_FORMAT \" +\n \"SYSREQ_REF_REQ_GENERATED \" +\n \"SYSREQ_REF_REQ_LENGTH \" +\n \"SYSREQ_REF_REQ_PRECISION \" +\n \"SYSREQ_REF_REQ_REFERENCE \" +\n \"SYSREQ_REF_REQ_SECTION \" +\n \"SYSREQ_REF_REQ_STORED \" +\n \"SYSREQ_REF_REQ_TOKENS \" +\n \"SYSREQ_REF_REQ_TYPE \" +\n \"SYSREQ_REF_REQ_VIEW \" +\n \"SYSREQ_REF_TYPE_ACT_CODE \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE \" +\n \"SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS \" +\n \"SYSREQ_REF_TYPE_ACT_SECTION \" +\n \"SYSREQ_REF_TYPE_ADD_PARAMS \" +\n \"SYSREQ_REF_TYPE_COMMENT \" +\n \"SYSREQ_REF_TYPE_COMMON_SETTINGS \" +\n \"SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME \" +\n \"SYSREQ_REF_TYPE_EVENT_TEXT \" +\n \"SYSREQ_REF_TYPE_MAIN_LEADING_REF \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR \" +\n \"SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_NUMERATION_METHOD \" +\n \"SYSREQ_REF_TYPE_REQ_CODE \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION \" +\n \"SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID \" +\n \"SYSREQ_REF_TYPE_REQ_IS_CONTROL \" +\n \"SYSREQ_REF_TYPE_REQ_IS_FILTER \" +\n \"SYSREQ_REF_TYPE_REQ_IS_LEADING \" +\n \"SYSREQ_REF_TYPE_REQ_IS_REQUIRED \" +\n \"SYSREQ_REF_TYPE_REQ_NUMBER \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE \" +\n \"SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT \" +\n \"SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND \" +\n \"SYSREQ_REF_TYPE_REQ_SECTION \" +\n \"SYSREQ_REF_TYPE_VIEW_CARD \" +\n \"SYSREQ_REF_TYPE_VIEW_CODE \" +\n \"SYSREQ_REF_TYPE_VIEW_COMMENT \" +\n \"SYSREQ_REF_TYPE_VIEW_IS_MAIN \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME \" +\n \"SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID \" +\n \"SYSREQ_REFERENCE_TYPE_ID \" +\n \"SYSREQ_STATE \" +\n \"SYSREQ_STATЕ \" +\n \"SYSREQ_SYSTEM_SETTINGS_VALUE \" +\n \"SYSREQ_TYPE \" +\n \"SYSREQ_UNIT \" +\n \"SYSREQ_UNIT_ID \" +\n \"SYSREQ_USER_GROUPS_GROUP_FULL_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_NAME \" +\n \"SYSREQ_USER_GROUPS_GROUP_SERVER_NAME \" +\n \"SYSREQ_USERS_ACCESS_RIGHTS \" +\n \"SYSREQ_USERS_AUTHENTICATION \" +\n \"SYSREQ_USERS_CATEGORY \" +\n \"SYSREQ_USERS_COMPONENT \" +\n \"SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_DOMAIN \" +\n \"SYSREQ_USERS_FULL_USER_NAME \" +\n \"SYSREQ_USERS_GROUP \" +\n \"SYSREQ_USERS_IS_MAIN_SERVER \" +\n \"SYSREQ_USERS_LOGIN \" +\n \"SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC \" +\n \"SYSREQ_USERS_STATUS \" +\n \"SYSREQ_USERS_USER_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_INFO \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_STATE \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME \" +\n \"SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT \" +\n \"SYSREQ_USERS_USER_DEFAULT_CERTIFICATE \" +\n \"SYSREQ_USERS_USER_DESCRIPTION \" +\n \"SYSREQ_USERS_USER_GLOBAL_NAME \" +\n \"SYSREQ_USERS_USER_LOGIN \" +\n \"SYSREQ_USERS_USER_MAIN_SERVER \" +\n \"SYSREQ_USERS_USER_TYPE \" +\n \"SYSREQ_WORK_RULES_FOLDER_ID \";\n\n // Result\n var result_constants = \"RESULT_VAR_NAME RESULT_VAR_NAME_ENG \";\n\n // Rule identification\n var rule_identification_constants =\n \"AUTO_NUMERATION_RULE_ID \" +\n \"CANT_CHANGE_ID_REQUISITE_RULE_ID \" +\n \"CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID \" +\n \"CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_CODE_REQUISITE_RULE_ID \" +\n \"CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID \" +\n \"CHECK_FILTRATER_CHANGES_RULE_ID \" +\n \"CHECK_RECORD_INTERVAL_RULE_ID \" +\n \"CHECK_REFERENCE_INTERVAL_RULE_ID \" +\n \"CHECK_REQUIRED_DATA_FULLNESS_RULE_ID \" +\n \"CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID \" +\n \"MAKE_RECORD_UNRATIFIED_RULE_ID \" +\n \"RESTORE_AUTO_NUMERATION_RULE_ID \" +\n \"SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID \" +\n \"SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID \" +\n \"SET_IDSPS_VALUE_RULE_ID \" +\n \"SET_NEXT_CODE_VALUE_RULE_ID \" +\n \"SET_OURFIRM_BOUNDS_RULE_ID \" +\n \"SET_OURFIRM_REQUISITE_RULE_ID \";\n\n // Script block properties\n var script_block_properties_constants =\n \"SCRIPT_BLOCK_AFTER_FINISH_EVENT \" +\n \"SCRIPT_BLOCK_BEFORE_START_EVENT \" +\n \"SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY \" +\n \"SCRIPT_BLOCK_NAME_PROPERTY \" +\n \"SCRIPT_BLOCK_SCRIPT_PROPERTY \";\n\n // Subtask block properties\n var subtask_block_properties_constants =\n \"SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_AFTER_FINISH_EVENT \" +\n \"SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY \" +\n \"SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_BEFORE_START_EVENT \" +\n \"SUBTASK_BLOCK_CREATED_TASK_PROPERTY \" +\n \"SUBTASK_BLOCK_CREATION_EVENT \" +\n \"SUBTASK_BLOCK_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IMPORTANCE_PROPERTY \" +\n \"SUBTASK_BLOCK_INITIATOR_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"SUBTASK_BLOCK_JOBS_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_NAME_PROPERTY \" +\n \"SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_PERFORMERS_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \" +\n \"SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY \" +\n \"SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_START_EVENT \" +\n \"SUBTASK_BLOCK_STEP_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_SUBJECT_PROPERTY \" +\n \"SUBTASK_BLOCK_TASK_CONTROL_PROPERTY \" +\n \"SUBTASK_BLOCK_TEXT_PROPERTY \" +\n \"SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY \" +\n \"SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY \" +\n \"SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY \";\n\n // System component\n var system_component_constants =\n \"SYSCOMP_CONTROL_JOBS \" +\n \"SYSCOMP_FOLDERS \" +\n \"SYSCOMP_JOBS \" +\n \"SYSCOMP_NOTICES \" +\n \"SYSCOMP_TASKS \";\n\n // System dialogs\n var system_dialogs_constants =\n \"SYSDLG_CREATE_EDOCUMENT \" +\n \"SYSDLG_CREATE_EDOCUMENT_VERSION \" +\n \"SYSDLG_CURRENT_PERIOD \" +\n \"SYSDLG_EDIT_FUNCTION_HELP \" +\n \"SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE \" +\n \"SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS \" +\n \"SYSDLG_EXPORT_SINGLE_EDOCUMENT \" +\n \"SYSDLG_IMPORT_EDOCUMENT \" +\n \"SYSDLG_MULTIPLE_SELECT \" +\n \"SYSDLG_SETUP_ACCESS_RIGHTS \" +\n \"SYSDLG_SETUP_DEFAULT_RIGHTS \" +\n \"SYSDLG_SETUP_FILTER_CONDITION \" +\n \"SYSDLG_SETUP_SIGN_RIGHTS \" +\n \"SYSDLG_SETUP_TASK_OBSERVERS \" +\n \"SYSDLG_SETUP_TASK_ROUTE \" +\n \"SYSDLG_SETUP_USERS_LIST \" +\n \"SYSDLG_SIGN_EDOCUMENT \" +\n \"SYSDLG_SIGN_MULTIPLE_EDOCUMENTS \";\n\n // System reference names\n var system_reference_names_constants =\n \"SYSREF_ACCESS_RIGHTS_TYPES \" +\n \"SYSREF_ADMINISTRATION_HISTORY \" +\n \"SYSREF_ALL_AVAILABLE_COMPONENTS \" +\n \"SYSREF_ALL_AVAILABLE_PRIVILEGES \" +\n \"SYSREF_ALL_REPLICATING_COMPONENTS \" +\n \"SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS \" +\n \"SYSREF_CALENDAR_EVENTS \" +\n \"SYSREF_COMPONENT_TOKEN_HISTORY \" +\n \"SYSREF_COMPONENT_TOKENS \" +\n \"SYSREF_COMPONENTS \" +\n \"SYSREF_CONSTANTS \" +\n \"SYSREF_DATA_RECEIVE_PROTOCOL \" +\n \"SYSREF_DATA_SEND_PROTOCOL \" +\n \"SYSREF_DIALOGS \" +\n \"SYSREF_DIALOGS_REQUISITES \" +\n \"SYSREF_EDITORS \" +\n \"SYSREF_EDOC_CARDS \" +\n \"SYSREF_EDOC_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_REQUISITES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES \" +\n \"SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE \" +\n \"SYSREF_EDOCUMENT_CARDS \" +\n \"SYSREF_EDOCUMENT_HISTORY \" +\n \"SYSREF_EDOCUMENT_KINDS \" +\n \"SYSREF_EDOCUMENT_REQUISITES \" +\n \"SYSREF_EDOCUMENT_SIGNATURES \" +\n \"SYSREF_EDOCUMENT_TEMPLATES \" +\n \"SYSREF_EDOCUMENT_TEXT_STORAGES \" +\n \"SYSREF_EDOCUMENT_VIEWS \" +\n \"SYSREF_FILTERER_SETUP_CONFLICTS \" +\n \"SYSREF_FILTRATER_SETTING_CONFLICTS \" +\n \"SYSREF_FOLDER_HISTORY \" +\n \"SYSREF_FOLDERS \" +\n \"SYSREF_FUNCTION_GROUPS \" +\n \"SYSREF_FUNCTION_PARAMS \" +\n \"SYSREF_FUNCTIONS \" +\n \"SYSREF_JOB_HISTORY \" +\n \"SYSREF_LINKS \" +\n \"SYSREF_LOCALIZATION_DICTIONARY \" +\n \"SYSREF_LOCALIZATION_LANGUAGES \" +\n \"SYSREF_MODULES \" +\n \"SYSREF_PRIVILEGES \" +\n \"SYSREF_RECORD_HISTORY \" +\n \"SYSREF_REFERENCE_REQUISITES \" +\n \"SYSREF_REFERENCE_TYPE_VIEWS \" +\n \"SYSREF_REFERENCE_TYPES \" +\n \"SYSREF_REFERENCES \" +\n \"SYSREF_REFERENCES_REQUISITES \" +\n \"SYSREF_REMOTE_SERVERS \" +\n \"SYSREF_REPLICATION_SESSIONS_LOG \" +\n \"SYSREF_REPLICATION_SESSIONS_PROTOCOL \" +\n \"SYSREF_REPORTS \" +\n \"SYSREF_ROLES \" +\n \"SYSREF_ROUTE_BLOCK_GROUPS \" +\n \"SYSREF_ROUTE_BLOCKS \" +\n \"SYSREF_SCRIPTS \" +\n \"SYSREF_SEARCHES \" +\n \"SYSREF_SERVER_EVENTS \" +\n \"SYSREF_SERVER_EVENTS_HISTORY \" +\n \"SYSREF_STANDARD_ROUTE_GROUPS \" +\n \"SYSREF_STANDARD_ROUTES \" +\n \"SYSREF_STATUSES \" +\n \"SYSREF_SYSTEM_SETTINGS \" +\n \"SYSREF_TASK_HISTORY \" +\n \"SYSREF_TASK_KIND_GROUPS \" +\n \"SYSREF_TASK_KINDS \" +\n \"SYSREF_TASK_RIGHTS \" +\n \"SYSREF_TASK_SIGNATURES \" +\n \"SYSREF_TASKS \" +\n \"SYSREF_UNITS \" +\n \"SYSREF_USER_GROUPS \" +\n \"SYSREF_USER_GROUPS_REFERENCE \" +\n \"SYSREF_USER_SUBSTITUTION \" +\n \"SYSREF_USERS \" +\n \"SYSREF_USERS_REFERENCE \" +\n \"SYSREF_VIEWERS \" +\n \"SYSREF_WORKING_TIME_CALENDARS \";\n\n // Table name\n var table_name_constants =\n \"ACCESS_RIGHTS_TABLE_NAME \" +\n \"EDMS_ACCESS_TABLE_NAME \" +\n \"EDOC_TYPES_TABLE_NAME \";\n\n // Test\n var test_constants =\n \"TEST_DEV_DB_NAME \" +\n \"TEST_DEV_SYSTEM_CODE \" +\n \"TEST_EDMS_DB_NAME \" +\n \"TEST_EDMS_MAIN_CODE \" +\n \"TEST_EDMS_MAIN_DB_NAME \" +\n \"TEST_EDMS_SECOND_CODE \" +\n \"TEST_EDMS_SECOND_DB_NAME \" +\n \"TEST_EDMS_SYSTEM_CODE \" +\n \"TEST_ISB5_MAIN_CODE \" +\n \"TEST_ISB5_SECOND_CODE \" +\n \"TEST_SQL_SERVER_2005_NAME \" +\n \"TEST_SQL_SERVER_NAME \";\n\n // Using the dialog windows\n var using_the_dialog_windows_constants =\n \"ATTENTION_CAPTION \" +\n \"cbsCommandLinks \" +\n \"cbsDefault \" +\n \"CONFIRMATION_CAPTION \" +\n \"ERROR_CAPTION \" +\n \"INFORMATION_CAPTION \" +\n \"mrCancel \" +\n \"mrOk \";\n\n // Using the document\n var using_the_document_constants =\n \"EDOC_VERSION_ACTIVE_STAGE_CODE \" +\n \"EDOC_VERSION_DESIGN_STAGE_CODE \" +\n \"EDOC_VERSION_OBSOLETE_STAGE_CODE \";\n\n // Using the EA and encryption\n var using_the_EA_and_encryption_constants =\n \"cpDataEnciphermentEnabled \" +\n \"cpDigitalSignatureEnabled \" +\n \"cpID \" +\n \"cpIssuer \" +\n \"cpPluginVersion \" +\n \"cpSerial \" +\n \"cpSubjectName \" +\n \"cpSubjSimpleName \" +\n \"cpValidFromDate \" +\n \"cpValidToDate \";\n\n // Using the ISBL-editor\n var using_the_ISBL_editor_constants =\n \"ISBL_SYNTAX \" + \"NO_SYNTAX \" + \"XML_SYNTAX \";\n\n // Wait block properties\n var wait_block_properties_constants =\n \"WAIT_BLOCK_AFTER_FINISH_EVENT \" +\n \"WAIT_BLOCK_BEFORE_START_EVENT \" +\n \"WAIT_BLOCK_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY \" +\n \"WAIT_BLOCK_NAME_PROPERTY \" +\n \"WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY \";\n\n // SYSRES Common\n var sysres_common_constants =\n \"SYSRES_COMMON \" +\n \"SYSRES_CONST \" +\n \"SYSRES_MBFUNC \" +\n \"SYSRES_SBDATA \" +\n \"SYSRES_SBGUI \" +\n \"SYSRES_SBINTF \" +\n \"SYSRES_SBREFDSC \" +\n \"SYSRES_SQLERRORS \" +\n \"SYSRES_SYSCOMP \";\n\n // Константы ==> built_in\n var CONSTANTS =\n sysres_constants +\n base_constants +\n base_group_name_constants +\n decision_block_properties_constants +\n file_extension_constants +\n job_block_properties_constants +\n language_code_constants +\n launching_external_applications_constants +\n link_kind_constants +\n lock_type_constants +\n monitor_block_properties_constants +\n notice_block_properties_constants +\n object_events_constants +\n object_params_constants +\n other_constants +\n privileges_constants +\n pseudoreference_code_constants +\n requisite_ISBCertificateType_values_constants +\n requisite_ISBEDocStorageType_values_constants +\n requisite_compType2_values_constants +\n requisite_name_constants +\n result_constants +\n rule_identification_constants +\n script_block_properties_constants +\n subtask_block_properties_constants +\n system_component_constants +\n system_dialogs_constants +\n system_reference_names_constants +\n table_name_constants +\n test_constants +\n using_the_dialog_windows_constants +\n using_the_document_constants +\n using_the_EA_and_encryption_constants +\n using_the_ISBL_editor_constants +\n wait_block_properties_constants +\n sysres_common_constants;\n\n // enum TAccountType\n var TAccountType = \"atUser atGroup atRole \";\n\n // enum TActionEnabledMode\n var TActionEnabledMode =\n \"aemEnabledAlways \" +\n \"aemDisabledAlways \" +\n \"aemEnabledOnBrowse \" +\n \"aemEnabledOnEdit \" +\n \"aemDisabledOnBrowseEmpty \";\n\n // enum TAddPosition\n var TAddPosition = \"apBegin apEnd \";\n\n // enum TAlignment\n var TAlignment = \"alLeft alRight \";\n\n // enum TAreaShowMode\n var TAreaShowMode =\n \"asmNever \" +\n \"asmNoButCustomize \" +\n \"asmAsLastTime \" +\n \"asmYesButCustomize \" +\n \"asmAlways \";\n\n // enum TCertificateInvalidationReason\n var TCertificateInvalidationReason = \"cirCommon cirRevoked \";\n\n // enum TCertificateType\n var TCertificateType = \"ctSignature ctEncode ctSignatureEncode \";\n\n // enum TCheckListBoxItemState\n var TCheckListBoxItemState = \"clbUnchecked clbChecked clbGrayed \";\n\n // enum TCloseOnEsc\n var TCloseOnEsc = \"ceISB ceAlways ceNever \";\n\n // enum TCompType\n var TCompType =\n \"ctDocument \" +\n \"ctReference \" +\n \"ctScript \" +\n \"ctUnknown \" +\n \"ctReport \" +\n \"ctDialog \" +\n \"ctFunction \" +\n \"ctFolder \" +\n \"ctEDocument \" +\n \"ctTask \" +\n \"ctJob \" +\n \"ctNotice \" +\n \"ctControlJob \";\n\n // enum TConditionFormat\n var TConditionFormat = \"cfInternal cfDisplay \";\n\n // enum TConnectionIntent\n var TConnectionIntent = \"ciUnspecified ciWrite ciRead \";\n\n // enum TContentKind\n var TContentKind =\n \"ckFolder \" +\n \"ckEDocument \" +\n \"ckTask \" +\n \"ckJob \" +\n \"ckComponentToken \" +\n \"ckAny \" +\n \"ckReference \" +\n \"ckScript \" +\n \"ckReport \" +\n \"ckDialog \";\n\n // enum TControlType\n var TControlType =\n \"ctISBLEditor \" +\n \"ctBevel \" +\n \"ctButton \" +\n \"ctCheckListBox \" +\n \"ctComboBox \" +\n \"ctComboEdit \" +\n \"ctGrid \" +\n \"ctDBCheckBox \" +\n \"ctDBComboBox \" +\n \"ctDBEdit \" +\n \"ctDBEllipsis \" +\n \"ctDBMemo \" +\n \"ctDBNavigator \" +\n \"ctDBRadioGroup \" +\n \"ctDBStatusLabel \" +\n \"ctEdit \" +\n \"ctGroupBox \" +\n \"ctInplaceHint \" +\n \"ctMemo \" +\n \"ctPanel \" +\n \"ctListBox \" +\n \"ctRadioButton \" +\n \"ctRichEdit \" +\n \"ctTabSheet \" +\n \"ctWebBrowser \" +\n \"ctImage \" +\n \"ctHyperLink \" +\n \"ctLabel \" +\n \"ctDBMultiEllipsis \" +\n \"ctRibbon \" +\n \"ctRichView \" +\n \"ctInnerPanel \" +\n \"ctPanelGroup \" +\n \"ctBitButton \";\n\n // enum TCriterionContentType\n var TCriterionContentType =\n \"cctDate \" +\n \"cctInteger \" +\n \"cctNumeric \" +\n \"cctPick \" +\n \"cctReference \" +\n \"cctString \" +\n \"cctText \";\n\n // enum TCultureType\n var TCultureType = \"cltInternal cltPrimary cltGUI \";\n\n // enum TDataSetEventType\n var TDataSetEventType =\n \"dseBeforeOpen \" +\n \"dseAfterOpen \" +\n \"dseBeforeClose \" +\n \"dseAfterClose \" +\n \"dseOnValidDelete \" +\n \"dseBeforeDelete \" +\n \"dseAfterDelete \" +\n \"dseAfterDeleteOutOfTransaction \" +\n \"dseOnDeleteError \" +\n \"dseBeforeInsert \" +\n \"dseAfterInsert \" +\n \"dseOnValidUpdate \" +\n \"dseBeforeUpdate \" +\n \"dseOnUpdateRatifiedRecord \" +\n \"dseAfterUpdate \" +\n \"dseAfterUpdateOutOfTransaction \" +\n \"dseOnUpdateError \" +\n \"dseAfterScroll \" +\n \"dseOnOpenRecord \" +\n \"dseOnCloseRecord \" +\n \"dseBeforeCancel \" +\n \"dseAfterCancel \" +\n \"dseOnUpdateDeadlockError \" +\n \"dseBeforeDetailUpdate \" +\n \"dseOnPrepareUpdate \" +\n \"dseOnAnyRequisiteChange \";\n\n // enum TDataSetState\n var TDataSetState = \"dssEdit dssInsert dssBrowse dssInActive \";\n\n // enum TDateFormatType\n var TDateFormatType = \"dftDate dftShortDate dftDateTime dftTimeStamp \";\n\n // enum TDateOffsetType\n var TDateOffsetType = \"dotDays dotHours dotMinutes dotSeconds \";\n\n // enum TDateTimeKind\n var TDateTimeKind = \"dtkndLocal dtkndUTC \";\n\n // enum TDeaAccessRights\n var TDeaAccessRights = \"arNone arView arEdit arFull \";\n\n // enum TDocumentDefaultAction\n var TDocumentDefaultAction = \"ddaView ddaEdit \";\n\n // enum TEditMode\n var TEditMode =\n \"emLock \" +\n \"emEdit \" +\n \"emSign \" +\n \"emExportWithLock \" +\n \"emImportWithUnlock \" +\n \"emChangeVersionNote \" +\n \"emOpenForModify \" +\n \"emChangeLifeStage \" +\n \"emDelete \" +\n \"emCreateVersion \" +\n \"emImport \" +\n \"emUnlockExportedWithLock \" +\n \"emStart \" +\n \"emAbort \" +\n \"emReInit \" +\n \"emMarkAsReaded \" +\n \"emMarkAsUnreaded \" +\n \"emPerform \" +\n \"emAccept \" +\n \"emResume \" +\n \"emChangeRights \" +\n \"emEditRoute \" +\n \"emEditObserver \" +\n \"emRecoveryFromLocalCopy \" +\n \"emChangeWorkAccessType \" +\n \"emChangeEncodeTypeToCertificate \" +\n \"emChangeEncodeTypeToPassword \" +\n \"emChangeEncodeTypeToNone \" +\n \"emChangeEncodeTypeToCertificatePassword \" +\n \"emChangeStandardRoute \" +\n \"emGetText \" +\n \"emOpenForView \" +\n \"emMoveToStorage \" +\n \"emCreateObject \" +\n \"emChangeVersionHidden \" +\n \"emDeleteVersion \" +\n \"emChangeLifeCycleStage \" +\n \"emApprovingSign \" +\n \"emExport \" +\n \"emContinue \" +\n \"emLockFromEdit \" +\n \"emUnLockForEdit \" +\n \"emLockForServer \" +\n \"emUnlockFromServer \" +\n \"emDelegateAccessRights \" +\n \"emReEncode \";\n\n // enum TEditorCloseObservType\n var TEditorCloseObservType = \"ecotFile ecotProcess \";\n\n // enum TEdmsApplicationAction\n var TEdmsApplicationAction = \"eaGet eaCopy eaCreate eaCreateStandardRoute \";\n\n // enum TEDocumentLockType\n var TEDocumentLockType = \"edltAll edltNothing edltQuery \";\n\n // enum TEDocumentStepShowMode\n var TEDocumentStepShowMode = \"essmText essmCard \";\n\n // enum TEDocumentStepVersionType\n var TEDocumentStepVersionType = \"esvtLast esvtLastActive esvtSpecified \";\n\n // enum TEDocumentStorageFunction\n var TEDocumentStorageFunction = \"edsfExecutive edsfArchive \";\n\n // enum TEDocumentStorageType\n var TEDocumentStorageType = \"edstSQLServer edstFile \";\n\n // enum TEDocumentVersionSourceType\n var TEDocumentVersionSourceType =\n \"edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile \";\n\n // enum TEDocumentVersionState\n var TEDocumentVersionState = \"vsDefault vsDesign vsActive vsObsolete \";\n\n // enum TEncodeType\n var TEncodeType = \"etNone etCertificate etPassword etCertificatePassword \";\n\n // enum TExceptionCategory\n var TExceptionCategory = \"ecException ecWarning ecInformation \";\n\n // enum TExportedSignaturesType\n var TExportedSignaturesType = \"estAll estApprovingOnly \";\n\n // enum TExportedVersionType\n var TExportedVersionType = \"evtLast evtLastActive evtQuery \";\n\n // enum TFieldDataType\n var TFieldDataType =\n \"fdtString \" +\n \"fdtNumeric \" +\n \"fdtInteger \" +\n \"fdtDate \" +\n \"fdtText \" +\n \"fdtUnknown \" +\n \"fdtWideString \" +\n \"fdtLargeInteger \";\n\n // enum TFolderType\n var TFolderType =\n \"ftInbox \" +\n \"ftOutbox \" +\n \"ftFavorites \" +\n \"ftCommonFolder \" +\n \"ftUserFolder \" +\n \"ftComponents \" +\n \"ftQuickLaunch \" +\n \"ftShortcuts \" +\n \"ftSearch \";\n\n // enum TGridRowHeight\n var TGridRowHeight = \"grhAuto \" + \"grhX1 \" + \"grhX2 \" + \"grhX3 \";\n\n // enum THyperlinkType\n var THyperlinkType = \"hltText \" + \"hltRTF \" + \"hltHTML \";\n\n // enum TImageFileFormat\n var TImageFileFormat =\n \"iffBMP \" +\n \"iffJPEG \" +\n \"iffMultiPageTIFF \" +\n \"iffSinglePageTIFF \" +\n \"iffTIFF \" +\n \"iffPNG \";\n\n // enum TImageMode\n var TImageMode = \"im8bGrayscale \" + \"im24bRGB \" + \"im1bMonochrome \";\n\n // enum TImageType\n var TImageType = \"itBMP \" + \"itJPEG \" + \"itWMF \" + \"itPNG \";\n\n // enum TInplaceHintKind\n var TInplaceHintKind =\n \"ikhInformation \" + \"ikhWarning \" + \"ikhError \" + \"ikhNoIcon \";\n\n // enum TISBLContext\n var TISBLContext =\n \"icUnknown \" +\n \"icScript \" +\n \"icFunction \" +\n \"icIntegratedReport \" +\n \"icAnalyticReport \" +\n \"icDataSetEventHandler \" +\n \"icActionHandler \" +\n \"icFormEventHandler \" +\n \"icLookUpEventHandler \" +\n \"icRequisiteChangeEventHandler \" +\n \"icBeforeSearchEventHandler \" +\n \"icRoleCalculation \" +\n \"icSelectRouteEventHandler \" +\n \"icBlockPropertyCalculation \" +\n \"icBlockQueryParamsEventHandler \" +\n \"icChangeSearchResultEventHandler \" +\n \"icBlockEventHandler \" +\n \"icSubTaskInitEventHandler \" +\n \"icEDocDataSetEventHandler \" +\n \"icEDocLookUpEventHandler \" +\n \"icEDocActionHandler \" +\n \"icEDocFormEventHandler \" +\n \"icEDocRequisiteChangeEventHandler \" +\n \"icStructuredConversionRule \" +\n \"icStructuredConversionEventBefore \" +\n \"icStructuredConversionEventAfter \" +\n \"icWizardEventHandler \" +\n \"icWizardFinishEventHandler \" +\n \"icWizardStepEventHandler \" +\n \"icWizardStepFinishEventHandler \" +\n \"icWizardActionEnableEventHandler \" +\n \"icWizardActionExecuteEventHandler \" +\n \"icCreateJobsHandler \" +\n \"icCreateNoticesHandler \" +\n \"icBeforeLookUpEventHandler \" +\n \"icAfterLookUpEventHandler \" +\n \"icTaskAbortEventHandler \" +\n \"icWorkflowBlockActionHandler \" +\n \"icDialogDataSetEventHandler \" +\n \"icDialogActionHandler \" +\n \"icDialogLookUpEventHandler \" +\n \"icDialogRequisiteChangeEventHandler \" +\n \"icDialogFormEventHandler \" +\n \"icDialogValidCloseEventHandler \" +\n \"icBlockFormEventHandler \" +\n \"icTaskFormEventHandler \" +\n \"icReferenceMethod \" +\n \"icEDocMethod \" +\n \"icDialogMethod \" +\n \"icProcessMessageHandler \";\n\n // enum TItemShow\n var TItemShow = \"isShow \" + \"isHide \" + \"isByUserSettings \";\n\n // enum TJobKind\n var TJobKind = \"jkJob \" + \"jkNotice \" + \"jkControlJob \";\n\n // enum TJoinType\n var TJoinType = \"jtInner \" + \"jtLeft \" + \"jtRight \" + \"jtFull \" + \"jtCross \";\n\n // enum TLabelPos\n var TLabelPos = \"lbpAbove \" + \"lbpBelow \" + \"lbpLeft \" + \"lbpRight \";\n\n // enum TLicensingType\n var TLicensingType = \"eltPerConnection \" + \"eltPerUser \";\n\n // enum TLifeCycleStageFontColor\n var TLifeCycleStageFontColor =\n \"sfcUndefined \" +\n \"sfcBlack \" +\n \"sfcGreen \" +\n \"sfcRed \" +\n \"sfcBlue \" +\n \"sfcOrange \" +\n \"sfcLilac \";\n\n // enum TLifeCycleStageFontStyle\n var TLifeCycleStageFontStyle = \"sfsItalic \" + \"sfsStrikeout \" + \"sfsNormal \";\n\n // enum TLockableDevelopmentComponentType\n var TLockableDevelopmentComponentType =\n \"ldctStandardRoute \" +\n \"ldctWizard \" +\n \"ldctScript \" +\n \"ldctFunction \" +\n \"ldctRouteBlock \" +\n \"ldctIntegratedReport \" +\n \"ldctAnalyticReport \" +\n \"ldctReferenceType \" +\n \"ldctEDocumentType \" +\n \"ldctDialog \" +\n \"ldctServerEvents \";\n\n // enum TMaxRecordCountRestrictionType\n var TMaxRecordCountRestrictionType =\n \"mrcrtNone \" + \"mrcrtUser \" + \"mrcrtMaximal \" + \"mrcrtCustom \";\n\n // enum TRangeValueType\n var TRangeValueType =\n \"vtEqual \" + \"vtGreaterOrEqual \" + \"vtLessOrEqual \" + \"vtRange \";\n\n // enum TRelativeDate\n var TRelativeDate =\n \"rdYesterday \" +\n \"rdToday \" +\n \"rdTomorrow \" +\n \"rdThisWeek \" +\n \"rdThisMonth \" +\n \"rdThisYear \" +\n \"rdNextMonth \" +\n \"rdNextWeek \" +\n \"rdLastWeek \" +\n \"rdLastMonth \";\n\n // enum TReportDestination\n var TReportDestination = \"rdWindow \" + \"rdFile \" + \"rdPrinter \";\n\n // enum TReqDataType\n var TReqDataType =\n \"rdtString \" +\n \"rdtNumeric \" +\n \"rdtInteger \" +\n \"rdtDate \" +\n \"rdtReference \" +\n \"rdtAccount \" +\n \"rdtText \" +\n \"rdtPick \" +\n \"rdtUnknown \" +\n \"rdtLargeInteger \" +\n \"rdtDocument \";\n\n // enum TRequisiteEventType\n var TRequisiteEventType = \"reOnChange \" + \"reOnChangeValues \";\n\n // enum TSBTimeType\n var TSBTimeType = \"ttGlobal \" + \"ttLocal \" + \"ttUser \" + \"ttSystem \";\n\n // enum TSearchShowMode\n var TSearchShowMode =\n \"ssmBrowse \" + \"ssmSelect \" + \"ssmMultiSelect \" + \"ssmBrowseModal \";\n\n // enum TSelectMode\n var TSelectMode = \"smSelect \" + \"smLike \" + \"smCard \";\n\n // enum TSignatureType\n var TSignatureType = \"stNone \" + \"stAuthenticating \" + \"stApproving \";\n\n // enum TSignerContentType\n var TSignerContentType = \"sctString \" + \"sctStream \";\n\n // enum TStringsSortType\n var TStringsSortType = \"sstAnsiSort \" + \"sstNaturalSort \";\n\n // enum TStringValueType\n var TStringValueType = \"svtEqual \" + \"svtContain \";\n\n // enum TStructuredObjectAttributeType\n var TStructuredObjectAttributeType =\n \"soatString \" +\n \"soatNumeric \" +\n \"soatInteger \" +\n \"soatDatetime \" +\n \"soatReferenceRecord \" +\n \"soatText \" +\n \"soatPick \" +\n \"soatBoolean \" +\n \"soatEDocument \" +\n \"soatAccount \" +\n \"soatIntegerCollection \" +\n \"soatNumericCollection \" +\n \"soatStringCollection \" +\n \"soatPickCollection \" +\n \"soatDatetimeCollection \" +\n \"soatBooleanCollection \" +\n \"soatReferenceRecordCollection \" +\n \"soatEDocumentCollection \" +\n \"soatAccountCollection \" +\n \"soatContents \" +\n \"soatUnknown \";\n\n // enum TTaskAbortReason\n var TTaskAbortReason = \"tarAbortByUser \" + \"tarAbortByWorkflowException \";\n\n // enum TTextValueType\n var TTextValueType = \"tvtAllWords \" + \"tvtExactPhrase \" + \"tvtAnyWord \";\n\n // enum TUserObjectStatus\n var TUserObjectStatus =\n \"usNone \" +\n \"usCompleted \" +\n \"usRedSquare \" +\n \"usBlueSquare \" +\n \"usYellowSquare \" +\n \"usGreenSquare \" +\n \"usOrangeSquare \" +\n \"usPurpleSquare \" +\n \"usFollowUp \";\n\n // enum TUserType\n var TUserType =\n \"utUnknown \" +\n \"utUser \" +\n \"utDeveloper \" +\n \"utAdministrator \" +\n \"utSystemDeveloper \" +\n \"utDisconnected \";\n\n // enum TValuesBuildType\n var TValuesBuildType =\n \"btAnd \" + \"btDetailAnd \" + \"btOr \" + \"btNotOr \" + \"btOnly \";\n\n // enum TViewMode\n var TViewMode = \"vmView \" + \"vmSelect \" + \"vmNavigation \";\n\n // enum TViewSelectionMode\n var TViewSelectionMode =\n \"vsmSingle \" + \"vsmMultiple \" + \"vsmMultipleCheck \" + \"vsmNoSelection \";\n\n // enum TWizardActionType\n var TWizardActionType =\n \"wfatPrevious \" + \"wfatNext \" + \"wfatCancel \" + \"wfatFinish \";\n\n // enum TWizardFormElementProperty\n var TWizardFormElementProperty =\n \"wfepUndefined \" +\n \"wfepText3 \" +\n \"wfepText6 \" +\n \"wfepText9 \" +\n \"wfepSpinEdit \" +\n \"wfepDropDown \" +\n \"wfepRadioGroup \" +\n \"wfepFlag \" +\n \"wfepText12 \" +\n \"wfepText15 \" +\n \"wfepText18 \" +\n \"wfepText21 \" +\n \"wfepText24 \" +\n \"wfepText27 \" +\n \"wfepText30 \" +\n \"wfepRadioGroupColumn1 \" +\n \"wfepRadioGroupColumn2 \" +\n \"wfepRadioGroupColumn3 \";\n\n // enum TWizardFormElementType\n var TWizardFormElementType =\n \"wfetQueryParameter \" + \"wfetText \" + \"wfetDelimiter \" + \"wfetLabel \";\n\n // enum TWizardParamType\n var TWizardParamType =\n \"wptString \" +\n \"wptInteger \" +\n \"wptNumeric \" +\n \"wptBoolean \" +\n \"wptDateTime \" +\n \"wptPick \" +\n \"wptText \" +\n \"wptUser \" +\n \"wptUserList \" +\n \"wptEDocumentInfo \" +\n \"wptEDocumentInfoList \" +\n \"wptReferenceRecordInfo \" +\n \"wptReferenceRecordInfoList \" +\n \"wptFolderInfo \" +\n \"wptTaskInfo \" +\n \"wptContents \" +\n \"wptFileName \" +\n \"wptDate \";\n\n // enum TWizardStepResult\n var TWizardStepResult =\n \"wsrComplete \" +\n \"wsrGoNext \" +\n \"wsrGoPrevious \" +\n \"wsrCustom \" +\n \"wsrCancel \" +\n \"wsrGoFinal \";\n\n // enum TWizardStepType\n var TWizardStepType =\n \"wstForm \" +\n \"wstEDocument \" +\n \"wstTaskCard \" +\n \"wstReferenceRecordCard \" +\n \"wstFinal \";\n\n // enum TWorkAccessType\n var TWorkAccessType = \"waAll \" + \"waPerformers \" + \"waManual \";\n\n // enum TWorkflowBlockType\n var TWorkflowBlockType =\n \"wsbStart \" +\n \"wsbFinish \" +\n \"wsbNotice \" +\n \"wsbStep \" +\n \"wsbDecision \" +\n \"wsbWait \" +\n \"wsbMonitor \" +\n \"wsbScript \" +\n \"wsbConnector \" +\n \"wsbSubTask \" +\n \"wsbLifeCycleStage \" +\n \"wsbPause \";\n\n // enum TWorkflowDataType\n var TWorkflowDataType =\n \"wdtInteger \" +\n \"wdtFloat \" +\n \"wdtString \" +\n \"wdtPick \" +\n \"wdtDateTime \" +\n \"wdtBoolean \" +\n \"wdtTask \" +\n \"wdtJob \" +\n \"wdtFolder \" +\n \"wdtEDocument \" +\n \"wdtReferenceRecord \" +\n \"wdtUser \" +\n \"wdtGroup \" +\n \"wdtRole \" +\n \"wdtIntegerCollection \" +\n \"wdtFloatCollection \" +\n \"wdtStringCollection \" +\n \"wdtPickCollection \" +\n \"wdtDateTimeCollection \" +\n \"wdtBooleanCollection \" +\n \"wdtTaskCollection \" +\n \"wdtJobCollection \" +\n \"wdtFolderCollection \" +\n \"wdtEDocumentCollection \" +\n \"wdtReferenceRecordCollection \" +\n \"wdtUserCollection \" +\n \"wdtGroupCollection \" +\n \"wdtRoleCollection \" +\n \"wdtContents \" +\n \"wdtUserList \" +\n \"wdtSearchDescription \" +\n \"wdtDeadLine \" +\n \"wdtPickSet \" +\n \"wdtAccountCollection \";\n\n // enum TWorkImportance\n var TWorkImportance = \"wiLow \" + \"wiNormal \" + \"wiHigh \";\n\n // enum TWorkRouteType\n var TWorkRouteType = \"wrtSoft \" + \"wrtHard \";\n\n // enum TWorkState\n var TWorkState =\n \"wsInit \" +\n \"wsRunning \" +\n \"wsDone \" +\n \"wsControlled \" +\n \"wsAborted \" +\n \"wsContinued \";\n\n // enum TWorkTextBuildingMode\n var TWorkTextBuildingMode =\n \"wtmFull \" + \"wtmFromCurrent \" + \"wtmOnlyCurrent \";\n\n // Перечисления\n var ENUMS =\n TAccountType +\n TActionEnabledMode +\n TAddPosition +\n TAlignment +\n TAreaShowMode +\n TCertificateInvalidationReason +\n TCertificateType +\n TCheckListBoxItemState +\n TCloseOnEsc +\n TCompType +\n TConditionFormat +\n TConnectionIntent +\n TContentKind +\n TControlType +\n TCriterionContentType +\n TCultureType +\n TDataSetEventType +\n TDataSetState +\n TDateFormatType +\n TDateOffsetType +\n TDateTimeKind +\n TDeaAccessRights +\n TDocumentDefaultAction +\n TEditMode +\n TEditorCloseObservType +\n TEdmsApplicationAction +\n TEDocumentLockType +\n TEDocumentStepShowMode +\n TEDocumentStepVersionType +\n TEDocumentStorageFunction +\n TEDocumentStorageType +\n TEDocumentVersionSourceType +\n TEDocumentVersionState +\n TEncodeType +\n TExceptionCategory +\n TExportedSignaturesType +\n TExportedVersionType +\n TFieldDataType +\n TFolderType +\n TGridRowHeight +\n THyperlinkType +\n TImageFileFormat +\n TImageMode +\n TImageType +\n TInplaceHintKind +\n TISBLContext +\n TItemShow +\n TJobKind +\n TJoinType +\n TLabelPos +\n TLicensingType +\n TLifeCycleStageFontColor +\n TLifeCycleStageFontStyle +\n TLockableDevelopmentComponentType +\n TMaxRecordCountRestrictionType +\n TRangeValueType +\n TRelativeDate +\n TReportDestination +\n TReqDataType +\n TRequisiteEventType +\n TSBTimeType +\n TSearchShowMode +\n TSelectMode +\n TSignatureType +\n TSignerContentType +\n TStringsSortType +\n TStringValueType +\n TStructuredObjectAttributeType +\n TTaskAbortReason +\n TTextValueType +\n TUserObjectStatus +\n TUserType +\n TValuesBuildType +\n TViewMode +\n TViewSelectionMode +\n TWizardActionType +\n TWizardFormElementProperty +\n TWizardFormElementType +\n TWizardParamType +\n TWizardStepResult +\n TWizardStepType +\n TWorkAccessType +\n TWorkflowBlockType +\n TWorkflowDataType +\n TWorkImportance +\n TWorkRouteType +\n TWorkState +\n TWorkTextBuildingMode;\n\n // Системные функции ==> SYSFUNCTIONS\n var system_functions =\n \"AddSubString \" +\n \"AdjustLineBreaks \" +\n \"AmountInWords \" +\n \"Analysis \" +\n \"ArrayDimCount \" +\n \"ArrayHighBound \" +\n \"ArrayLowBound \" +\n \"ArrayOf \" +\n \"ArrayReDim \" +\n \"Assert \" +\n \"Assigned \" +\n \"BeginOfMonth \" +\n \"BeginOfPeriod \" +\n \"BuildProfilingOperationAnalysis \" +\n \"CallProcedure \" +\n \"CanReadFile \" +\n \"CArrayElement \" +\n \"CDataSetRequisite \" +\n \"ChangeDate \" +\n \"ChangeReferenceDataset \" +\n \"Char \" +\n \"CharPos \" +\n \"CheckParam \" +\n \"CheckParamValue \" +\n \"CompareStrings \" +\n \"ConstantExists \" +\n \"ControlState \" +\n \"ConvertDateStr \" +\n \"Copy \" +\n \"CopyFile \" +\n \"CreateArray \" +\n \"CreateCachedReference \" +\n \"CreateConnection \" +\n \"CreateDialog \" +\n \"CreateDualListDialog \" +\n \"CreateEditor \" +\n \"CreateException \" +\n \"CreateFile \" +\n \"CreateFolderDialog \" +\n \"CreateInputDialog \" +\n \"CreateLinkFile \" +\n \"CreateList \" +\n \"CreateLock \" +\n \"CreateMemoryDataSet \" +\n \"CreateObject \" +\n \"CreateOpenDialog \" +\n \"CreateProgress \" +\n \"CreateQuery \" +\n \"CreateReference \" +\n \"CreateReport \" +\n \"CreateSaveDialog \" +\n \"CreateScript \" +\n \"CreateSQLPivotFunction \" +\n \"CreateStringList \" +\n \"CreateTreeListSelectDialog \" +\n \"CSelectSQL \" +\n \"CSQL \" +\n \"CSubString \" +\n \"CurrentUserID \" +\n \"CurrentUserName \" +\n \"CurrentVersion \" +\n \"DataSetLocateEx \" +\n \"DateDiff \" +\n \"DateTimeDiff \" +\n \"DateToStr \" +\n \"DayOfWeek \" +\n \"DeleteFile \" +\n \"DirectoryExists \" +\n \"DisableCheckAccessRights \" +\n \"DisableCheckFullShowingRestriction \" +\n \"DisableMassTaskSendingRestrictions \" +\n \"DropTable \" +\n \"DupeString \" +\n \"EditText \" +\n \"EnableCheckAccessRights \" +\n \"EnableCheckFullShowingRestriction \" +\n \"EnableMassTaskSendingRestrictions \" +\n \"EndOfMonth \" +\n \"EndOfPeriod \" +\n \"ExceptionExists \" +\n \"ExceptionsOff \" +\n \"ExceptionsOn \" +\n \"Execute \" +\n \"ExecuteProcess \" +\n \"Exit \" +\n \"ExpandEnvironmentVariables \" +\n \"ExtractFileDrive \" +\n \"ExtractFileExt \" +\n \"ExtractFileName \" +\n \"ExtractFilePath \" +\n \"ExtractParams \" +\n \"FileExists \" +\n \"FileSize \" +\n \"FindFile \" +\n \"FindSubString \" +\n \"FirmContext \" +\n \"ForceDirectories \" +\n \"Format \" +\n \"FormatDate \" +\n \"FormatNumeric \" +\n \"FormatSQLDate \" +\n \"FormatString \" +\n \"FreeException \" +\n \"GetComponent \" +\n \"GetComponentLaunchParam \" +\n \"GetConstant \" +\n \"GetLastException \" +\n \"GetReferenceRecord \" +\n \"GetRefTypeByRefID \" +\n \"GetTableID \" +\n \"GetTempFolder \" +\n \"IfThen \" +\n \"In \" +\n \"IndexOf \" +\n \"InputDialog \" +\n \"InputDialogEx \" +\n \"InteractiveMode \" +\n \"IsFileLocked \" +\n \"IsGraphicFile \" +\n \"IsNumeric \" +\n \"Length \" +\n \"LoadString \" +\n \"LoadStringFmt \" +\n \"LocalTimeToUTC \" +\n \"LowerCase \" +\n \"Max \" +\n \"MessageBox \" +\n \"MessageBoxEx \" +\n \"MimeDecodeBinary \" +\n \"MimeDecodeString \" +\n \"MimeEncodeBinary \" +\n \"MimeEncodeString \" +\n \"Min \" +\n \"MoneyInWords \" +\n \"MoveFile \" +\n \"NewID \" +\n \"Now \" +\n \"OpenFile \" +\n \"Ord \" +\n \"Precision \" +\n \"Raise \" +\n \"ReadCertificateFromFile \" +\n \"ReadFile \" +\n \"ReferenceCodeByID \" +\n \"ReferenceNumber \" +\n \"ReferenceRequisiteMode \" +\n \"ReferenceRequisiteValue \" +\n \"RegionDateSettings \" +\n \"RegionNumberSettings \" +\n \"RegionTimeSettings \" +\n \"RegRead \" +\n \"RegWrite \" +\n \"RenameFile \" +\n \"Replace \" +\n \"Round \" +\n \"SelectServerCode \" +\n \"SelectSQL \" +\n \"ServerDateTime \" +\n \"SetConstant \" +\n \"SetManagedFolderFieldsState \" +\n \"ShowConstantsInputDialog \" +\n \"ShowMessage \" +\n \"Sleep \" +\n \"Split \" +\n \"SQL \" +\n \"SQL2XLSTAB \" +\n \"SQLProfilingSendReport \" +\n \"StrToDate \" +\n \"SubString \" +\n \"SubStringCount \" +\n \"SystemSetting \" +\n \"Time \" +\n \"TimeDiff \" +\n \"Today \" +\n \"Transliterate \" +\n \"Trim \" +\n \"UpperCase \" +\n \"UserStatus \" +\n \"UTCToLocalTime \" +\n \"ValidateXML \" +\n \"VarIsClear \" +\n \"VarIsEmpty \" +\n \"VarIsNull \" +\n \"WorkTimeDiff \" +\n \"WriteFile \" +\n \"WriteFileEx \" +\n \"WriteObjectHistory \" +\n \"Анализ \" +\n \"БазаДанных \" +\n \"БлокЕсть \" +\n \"БлокЕстьРасш \" +\n \"БлокИнфо \" +\n \"БлокСнять \" +\n \"БлокСнятьРасш \" +\n \"БлокУстановить \" +\n \"Ввод \" +\n \"ВводМеню \" +\n \"ВедС \" +\n \"ВедСпр \" +\n \"ВерхняяГраницаМассива \" +\n \"ВнешПрогр \" +\n \"Восст \" +\n \"ВременнаяПапка \" +\n \"Время \" +\n \"ВыборSQL \" +\n \"ВыбратьЗапись \" +\n \"ВыделитьСтр \" +\n \"Вызвать \" +\n \"Выполнить \" +\n \"ВыпПрогр \" +\n \"ГрафическийФайл \" +\n \"ГруппаДополнительно \" +\n \"ДатаВремяСерв \" +\n \"ДеньНедели \" +\n \"ДиалогДаНет \" +\n \"ДлинаСтр \" +\n \"ДобПодстр \" +\n \"ЕПусто \" +\n \"ЕслиТо \" +\n \"ЕЧисло \" +\n \"ЗамПодстр \" +\n \"ЗаписьСправочника \" +\n \"ЗначПоляСпр \" +\n \"ИДТипСпр \" +\n \"ИзвлечьДиск \" +\n \"ИзвлечьИмяФайла \" +\n \"ИзвлечьПуть \" +\n \"ИзвлечьРасширение \" +\n \"ИзмДат \" +\n \"ИзменитьРазмерМассива \" +\n \"ИзмеренийМассива \" +\n \"ИмяОрг \" +\n \"ИмяПоляСпр \" +\n \"Индекс \" +\n \"ИндикаторЗакрыть \" +\n \"ИндикаторОткрыть \" +\n \"ИндикаторШаг \" +\n \"ИнтерактивныйРежим \" +\n \"ИтогТблСпр \" +\n \"КодВидВедСпр \" +\n \"КодВидСпрПоИД \" +\n \"КодПоAnalit \" +\n \"КодСимвола \" +\n \"КодСпр \" +\n \"КолПодстр \" +\n \"КолПроп \" +\n \"КонМес \" +\n \"Конст \" +\n \"КонстЕсть \" +\n \"КонстЗнач \" +\n \"КонТран \" +\n \"КопироватьФайл \" +\n \"КопияСтр \" +\n \"КПериод \" +\n \"КСтрТблСпр \" +\n \"Макс \" +\n \"МаксСтрТблСпр \" +\n \"Массив \" +\n \"Меню \" +\n \"МенюРасш \" +\n \"Мин \" +\n \"НаборДанныхНайтиРасш \" +\n \"НаимВидСпр \" +\n \"НаимПоAnalit \" +\n \"НаимСпр \" +\n \"НастроитьПереводыСтрок \" +\n \"НачМес \" +\n \"НачТран \" +\n \"НижняяГраницаМассива \" +\n \"НомерСпр \" +\n \"НПериод \" +\n \"Окно \" +\n \"Окр \" +\n \"Окружение \" +\n \"ОтлИнфДобавить \" +\n \"ОтлИнфУдалить \" +\n \"Отчет \" +\n \"ОтчетАнал \" +\n \"ОтчетИнт \" +\n \"ПапкаСуществует \" +\n \"Пауза \" +\n \"ПВыборSQL \" +\n \"ПереименоватьФайл \" +\n \"Переменные \" +\n \"ПереместитьФайл \" +\n \"Подстр \" +\n \"ПоискПодстр \" +\n \"ПоискСтр \" +\n \"ПолучитьИДТаблицы \" +\n \"ПользовательДополнительно \" +\n \"ПользовательИД \" +\n \"ПользовательИмя \" +\n \"ПользовательСтатус \" +\n \"Прервать \" +\n \"ПроверитьПараметр \" +\n \"ПроверитьПараметрЗнач \" +\n \"ПроверитьУсловие \" +\n \"РазбСтр \" +\n \"РазнВремя \" +\n \"РазнДат \" +\n \"РазнДатаВремя \" +\n \"РазнРабВремя \" +\n \"РегУстВрем \" +\n \"РегУстДат \" +\n \"РегУстЧсл \" +\n \"РедТекст \" +\n \"РеестрЗапись \" +\n \"РеестрСписокИменПарам \" +\n \"РеестрЧтение \" +\n \"РеквСпр \" +\n \"РеквСпрПр \" +\n \"Сегодня \" +\n \"Сейчас \" +\n \"Сервер \" +\n \"СерверПроцессИД \" +\n \"СертификатФайлСчитать \" +\n \"СжПроб \" +\n \"Символ \" +\n \"СистемаДиректумКод \" +\n \"СистемаИнформация \" +\n \"СистемаКод \" +\n \"Содержит \" +\n \"СоединениеЗакрыть \" +\n \"СоединениеОткрыть \" +\n \"СоздатьДиалог \" +\n \"СоздатьДиалогВыбораИзДвухСписков \" +\n \"СоздатьДиалогВыбораПапки \" +\n \"СоздатьДиалогОткрытияФайла \" +\n \"СоздатьДиалогСохраненияФайла \" +\n \"СоздатьЗапрос \" +\n \"СоздатьИндикатор \" +\n \"СоздатьИсключение \" +\n \"СоздатьКэшированныйСправочник \" +\n \"СоздатьМассив \" +\n \"СоздатьНаборДанных \" +\n \"СоздатьОбъект \" +\n \"СоздатьОтчет \" +\n \"СоздатьПапку \" +\n \"СоздатьРедактор \" +\n \"СоздатьСоединение \" +\n \"СоздатьСписок \" +\n \"СоздатьСписокСтрок \" +\n \"СоздатьСправочник \" +\n \"СоздатьСценарий \" +\n \"СоздСпр \" +\n \"СостСпр \" +\n \"Сохр \" +\n \"СохрСпр \" +\n \"СписокСистем \" +\n \"Спр \" +\n \"Справочник \" +\n \"СпрБлокЕсть \" +\n \"СпрБлокСнять \" +\n \"СпрБлокСнятьРасш \" +\n \"СпрБлокУстановить \" +\n \"СпрИзмНабДан \" +\n \"СпрКод \" +\n \"СпрНомер \" +\n \"СпрОбновить \" +\n \"СпрОткрыть \" +\n \"СпрОтменить \" +\n \"СпрПарам \" +\n \"СпрПолеЗнач \" +\n \"СпрПолеИмя \" +\n \"СпрРекв \" +\n \"СпрРеквВведЗн \" +\n \"СпрРеквНовые \" +\n \"СпрРеквПр \" +\n \"СпрРеквПредЗн \" +\n \"СпрРеквРежим \" +\n \"СпрРеквТипТекст \" +\n \"СпрСоздать \" +\n \"СпрСост \" +\n \"СпрСохранить \" +\n \"СпрТблИтог \" +\n \"СпрТблСтр \" +\n \"СпрТблСтрКол \" +\n \"СпрТблСтрМакс \" +\n \"СпрТблСтрМин \" +\n \"СпрТблСтрПред \" +\n \"СпрТблСтрСлед \" +\n \"СпрТблСтрСозд \" +\n \"СпрТблСтрУд \" +\n \"СпрТекПредст \" +\n \"СпрУдалить \" +\n \"СравнитьСтр \" +\n \"СтрВерхРегистр \" +\n \"СтрНижнРегистр \" +\n \"СтрТблСпр \" +\n \"СумПроп \" +\n \"Сценарий \" +\n \"СценарийПарам \" +\n \"ТекВерсия \" +\n \"ТекОрг \" +\n \"Точн \" +\n \"Тран \" +\n \"Транслитерация \" +\n \"УдалитьТаблицу \" +\n \"УдалитьФайл \" +\n \"УдСпр \" +\n \"УдСтрТблСпр \" +\n \"Уст \" +\n \"УстановкиКонстант \" +\n \"ФайлАтрибутСчитать \" +\n \"ФайлАтрибутУстановить \" +\n \"ФайлВремя \" +\n \"ФайлВремяУстановить \" +\n \"ФайлВыбрать \" +\n \"ФайлЗанят \" +\n \"ФайлЗаписать \" +\n \"ФайлИскать \" +\n \"ФайлКопировать \" +\n \"ФайлМожноЧитать \" +\n \"ФайлОткрыть \" +\n \"ФайлПереименовать \" +\n \"ФайлПерекодировать \" +\n \"ФайлПереместить \" +\n \"ФайлПросмотреть \" +\n \"ФайлРазмер \" +\n \"ФайлСоздать \" +\n \"ФайлСсылкаСоздать \" +\n \"ФайлСуществует \" +\n \"ФайлСчитать \" +\n \"ФайлУдалить \" +\n \"ФмтSQLДат \" +\n \"ФмтДат \" +\n \"ФмтСтр \" +\n \"ФмтЧсл \" +\n \"Формат \" +\n \"ЦМассивЭлемент \" +\n \"ЦНаборДанныхРеквизит \" +\n \"ЦПодстр \";\n\n // Предопределенные переменные ==> built_in\n var predefined_variables =\n \"AltState \" +\n \"Application \" +\n \"CallType \" +\n \"ComponentTokens \" +\n \"CreatedJobs \" +\n \"CreatedNotices \" +\n \"ControlState \" +\n \"DialogResult \" +\n \"Dialogs \" +\n \"EDocuments \" +\n \"EDocumentVersionSource \" +\n \"Folders \" +\n \"GlobalIDs \" +\n \"Job \" +\n \"Jobs \" +\n \"InputValue \" +\n \"LookUpReference \" +\n \"LookUpRequisiteNames \" +\n \"LookUpSearch \" +\n \"Object \" +\n \"ParentComponent \" +\n \"Processes \" +\n \"References \" +\n \"Requisite \" +\n \"ReportName \" +\n \"Reports \" +\n \"Result \" +\n \"Scripts \" +\n \"Searches \" +\n \"SelectedAttachments \" +\n \"SelectedItems \" +\n \"SelectMode \" +\n \"Sender \" +\n \"ServerEvents \" +\n \"ServiceFactory \" +\n \"ShiftState \" +\n \"SubTask \" +\n \"SystemDialogs \" +\n \"Tasks \" +\n \"Wizard \" +\n \"Wizards \" +\n \"Work \" +\n \"ВызовСпособ \" +\n \"ИмяОтчета \" +\n \"РеквЗнач \";\n\n // Интерфейсы ==> type\n var interfaces =\n \"IApplication \" +\n \"IAccessRights \" +\n \"IAccountRepository \" +\n \"IAccountSelectionRestrictions \" +\n \"IAction \" +\n \"IActionList \" +\n \"IAdministrationHistoryDescription \" +\n \"IAnchors \" +\n \"IApplication \" +\n \"IArchiveInfo \" +\n \"IAttachment \" +\n \"IAttachmentList \" +\n \"ICheckListBox \" +\n \"ICheckPointedList \" +\n \"IColumn \" +\n \"IComponent \" +\n \"IComponentDescription \" +\n \"IComponentToken \" +\n \"IComponentTokenFactory \" +\n \"IComponentTokenInfo \" +\n \"ICompRecordInfo \" +\n \"IConnection \" +\n \"IContents \" +\n \"IControl \" +\n \"IControlJob \" +\n \"IControlJobInfo \" +\n \"IControlList \" +\n \"ICrypto \" +\n \"ICrypto2 \" +\n \"ICustomJob \" +\n \"ICustomJobInfo \" +\n \"ICustomListBox \" +\n \"ICustomObjectWizardStep \" +\n \"ICustomWork \" +\n \"ICustomWorkInfo \" +\n \"IDataSet \" +\n \"IDataSetAccessInfo \" +\n \"IDataSigner \" +\n \"IDateCriterion \" +\n \"IDateRequisite \" +\n \"IDateRequisiteDescription \" +\n \"IDateValue \" +\n \"IDeaAccessRights \" +\n \"IDeaObjectInfo \" +\n \"IDevelopmentComponentLock \" +\n \"IDialog \" +\n \"IDialogFactory \" +\n \"IDialogPickRequisiteItems \" +\n \"IDialogsFactory \" +\n \"IDICSFactory \" +\n \"IDocRequisite \" +\n \"IDocumentInfo \" +\n \"IDualListDialog \" +\n \"IECertificate \" +\n \"IECertificateInfo \" +\n \"IECertificates \" +\n \"IEditControl \" +\n \"IEditorForm \" +\n \"IEdmsExplorer \" +\n \"IEdmsObject \" +\n \"IEdmsObjectDescription \" +\n \"IEdmsObjectFactory \" +\n \"IEdmsObjectInfo \" +\n \"IEDocument \" +\n \"IEDocumentAccessRights \" +\n \"IEDocumentDescription \" +\n \"IEDocumentEditor \" +\n \"IEDocumentFactory \" +\n \"IEDocumentInfo \" +\n \"IEDocumentStorage \" +\n \"IEDocumentVersion \" +\n \"IEDocumentVersionListDialog \" +\n \"IEDocumentVersionSource \" +\n \"IEDocumentWizardStep \" +\n \"IEDocVerSignature \" +\n \"IEDocVersionState \" +\n \"IEnabledMode \" +\n \"IEncodeProvider \" +\n \"IEncrypter \" +\n \"IEvent \" +\n \"IEventList \" +\n \"IException \" +\n \"IExternalEvents \" +\n \"IExternalHandler \" +\n \"IFactory \" +\n \"IField \" +\n \"IFileDialog \" +\n \"IFolder \" +\n \"IFolderDescription \" +\n \"IFolderDialog \" +\n \"IFolderFactory \" +\n \"IFolderInfo \" +\n \"IForEach \" +\n \"IForm \" +\n \"IFormTitle \" +\n \"IFormWizardStep \" +\n \"IGlobalIDFactory \" +\n \"IGlobalIDInfo \" +\n \"IGrid \" +\n \"IHasher \" +\n \"IHistoryDescription \" +\n \"IHyperLinkControl \" +\n \"IImageButton \" +\n \"IImageControl \" +\n \"IInnerPanel \" +\n \"IInplaceHint \" +\n \"IIntegerCriterion \" +\n \"IIntegerList \" +\n \"IIntegerRequisite \" +\n \"IIntegerValue \" +\n \"IISBLEditorForm \" +\n \"IJob \" +\n \"IJobDescription \" +\n \"IJobFactory \" +\n \"IJobForm \" +\n \"IJobInfo \" +\n \"ILabelControl \" +\n \"ILargeIntegerCriterion \" +\n \"ILargeIntegerRequisite \" +\n \"ILargeIntegerValue \" +\n \"ILicenseInfo \" +\n \"ILifeCycleStage \" +\n \"IList \" +\n \"IListBox \" +\n \"ILocalIDInfo \" +\n \"ILocalization \" +\n \"ILock \" +\n \"IMemoryDataSet \" +\n \"IMessagingFactory \" +\n \"IMetadataRepository \" +\n \"INotice \" +\n \"INoticeInfo \" +\n \"INumericCriterion \" +\n \"INumericRequisite \" +\n \"INumericValue \" +\n \"IObject \" +\n \"IObjectDescription \" +\n \"IObjectImporter \" +\n \"IObjectInfo \" +\n \"IObserver \" +\n \"IPanelGroup \" +\n \"IPickCriterion \" +\n \"IPickProperty \" +\n \"IPickRequisite \" +\n \"IPickRequisiteDescription \" +\n \"IPickRequisiteItem \" +\n \"IPickRequisiteItems \" +\n \"IPickValue \" +\n \"IPrivilege \" +\n \"IPrivilegeList \" +\n \"IProcess \" +\n \"IProcessFactory \" +\n \"IProcessMessage \" +\n \"IProgress \" +\n \"IProperty \" +\n \"IPropertyChangeEvent \" +\n \"IQuery \" +\n \"IReference \" +\n \"IReferenceCriterion \" +\n \"IReferenceEnabledMode \" +\n \"IReferenceFactory \" +\n \"IReferenceHistoryDescription \" +\n \"IReferenceInfo \" +\n \"IReferenceRecordCardWizardStep \" +\n \"IReferenceRequisiteDescription \" +\n \"IReferencesFactory \" +\n \"IReferenceValue \" +\n \"IRefRequisite \" +\n \"IReport \" +\n \"IReportFactory \" +\n \"IRequisite \" +\n \"IRequisiteDescription \" +\n \"IRequisiteDescriptionList \" +\n \"IRequisiteFactory \" +\n \"IRichEdit \" +\n \"IRouteStep \" +\n \"IRule \" +\n \"IRuleList \" +\n \"ISchemeBlock \" +\n \"IScript \" +\n \"IScriptFactory \" +\n \"ISearchCriteria \" +\n \"ISearchCriterion \" +\n \"ISearchDescription \" +\n \"ISearchFactory \" +\n \"ISearchFolderInfo \" +\n \"ISearchForObjectDescription \" +\n \"ISearchResultRestrictions \" +\n \"ISecuredContext \" +\n \"ISelectDialog \" +\n \"IServerEvent \" +\n \"IServerEventFactory \" +\n \"IServiceDialog \" +\n \"IServiceFactory \" +\n \"ISignature \" +\n \"ISignProvider \" +\n \"ISignProvider2 \" +\n \"ISignProvider3 \" +\n \"ISimpleCriterion \" +\n \"IStringCriterion \" +\n \"IStringList \" +\n \"IStringRequisite \" +\n \"IStringRequisiteDescription \" +\n \"IStringValue \" +\n \"ISystemDialogsFactory \" +\n \"ISystemInfo \" +\n \"ITabSheet \" +\n \"ITask \" +\n \"ITaskAbortReasonInfo \" +\n \"ITaskCardWizardStep \" +\n \"ITaskDescription \" +\n \"ITaskFactory \" +\n \"ITaskInfo \" +\n \"ITaskRoute \" +\n \"ITextCriterion \" +\n \"ITextRequisite \" +\n \"ITextValue \" +\n \"ITreeListSelectDialog \" +\n \"IUser \" +\n \"IUserList \" +\n \"IValue \" +\n \"IView \" +\n \"IWebBrowserControl \" +\n \"IWizard \" +\n \"IWizardAction \" +\n \"IWizardFactory \" +\n \"IWizardFormElement \" +\n \"IWizardParam \" +\n \"IWizardPickParam \" +\n \"IWizardReferenceParam \" +\n \"IWizardStep \" +\n \"IWorkAccessRights \" +\n \"IWorkDescription \" +\n \"IWorkflowAskableParam \" +\n \"IWorkflowAskableParams \" +\n \"IWorkflowBlock \" +\n \"IWorkflowBlockResult \" +\n \"IWorkflowEnabledMode \" +\n \"IWorkflowParam \" +\n \"IWorkflowPickParam \" +\n \"IWorkflowReferenceParam \" +\n \"IWorkState \" +\n \"IWorkTreeCustomNode \" +\n \"IWorkTreeJobNode \" +\n \"IWorkTreeTaskNode \" +\n \"IXMLEditorForm \" +\n \"SBCrypto \";\n\n // built_in : встроенные или библиотечные объекты (константы, перечисления)\n var BUILTIN = CONSTANTS + ENUMS;\n\n // class: встроенные наборы значений, системные объекты, фабрики\n var CLASS = predefined_variables;\n\n // literal : примитивные типы\n var LITERAL = \"null true false nil \";\n\n // number : числа\n var NUMBERS = {\n className: \"number\",\n begin: hljs.NUMBER_RE,\n relevance: 0,\n };\n\n // string : строки\n var STRINGS = {\n className: \"string\",\n variants: [{ begin: '\"', end: '\"' }, { begin: \"'\", end: \"'\" }],\n };\n\n // Токены\n var DOCTAGS = {\n className: \"doctag\",\n begin: \"\\\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\\\b\",\n relevance: 0,\n };\n\n // Однострочный комментарий\n var ISBL_LINE_COMMENT_MODE = {\n className: \"comment\",\n begin: \"//\",\n end: \"$\",\n relevance: 0,\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\n };\n\n // Многострочный комментарий\n var ISBL_BLOCK_COMMENT_MODE = {\n className: \"comment\",\n begin: \"/\\\\*\",\n end: \"\\\\*/\",\n relevance: 0,\n contains: [hljs.PHRASAL_WORDS_MODE, DOCTAGS],\n };\n\n // comment : комментарии\n var COMMENTS = {\n variants: [ISBL_LINE_COMMENT_MODE, ISBL_BLOCK_COMMENT_MODE],\n };\n\n // keywords : ключевые слова\n var KEYWORDS = {\n keyword: KEYWORD,\n built_in: BUILTIN,\n class: CLASS,\n literal: LITERAL,\n };\n\n // methods : методы\n var METHODS = {\n begin: \"\\\\.\\\\s*\" + hljs.UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n relevance: 0,\n };\n\n // type : встроенные типы\n var TYPES = {\n className: \"type\",\n begin: \":[ \\\\t]*(\" + interfaces.trim().replace(/\\s/g, \"|\") + \")\",\n end: \"[ \\\\t]*=\",\n excludeEnd: true,\n };\n\n // variables : переменные\n var VARIABLES = {\n className: \"variable\",\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n begin: UNDERSCORE_IDENT_RE,\n relevance: 0,\n containts: [TYPES, METHODS],\n };\n\n // Имена функций\n var FUNCTION_TITLE = FUNCTION_NAME_IDENT_RE + \"\\\\(\";\n\n var TITLE_MODE = {\n className: \"title\",\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: {\n built_in: system_functions,\n },\n begin: FUNCTION_TITLE,\n end: \"\\\\(\",\n returnBegin: true,\n excludeEnd: true,\n };\n\n // function : функции\n var FUNCTIONS = {\n className: \"function\",\n begin: FUNCTION_TITLE,\n end: \"\\\\)$\",\n returnBegin: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n illegal: \"[\\\\[\\\\]\\\\|\\\\$\\\\?%,~#@]\",\n contains: [TITLE_MODE, METHODS, VARIABLES, STRINGS, NUMBERS, COMMENTS],\n };\n\n return {\n aliases: [\"isbl\"],\n case_insensitive: true,\n lexemes: UNDERSCORE_IDENT_RE,\n keywords: KEYWORDS,\n illegal: \"\\\\$|\\\\?|%|,|;$|~|#|@|</\",\n contains: [\n FUNCTIONS,\n TYPES,\n METHODS,\n VARIABLES,\n STRINGS,\n NUMBERS,\n COMMENTS,\n ],\n };\n};","module.exports = function(hljs) {\n var JAVA_IDENT_RE = '[\\u00C0-\\u02B8a-zA-Z_$][\\u00C0-\\u02B8a-zA-Z_$0-9]*';\n var GENERIC_IDENT_RE = JAVA_IDENT_RE + '(<' + JAVA_IDENT_RE + '(\\\\s*,\\\\s*' + JAVA_IDENT_RE + ')*>)?';\n var KEYWORDS =\n 'false synchronized int abstract float private char boolean var static null if const ' +\n 'for true while long strictfp finally protected import native final void ' +\n 'enum else break transient catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private ' +\n 'module requires exports do';\n\n // https://docs.oracle.com/javase/7/docs/technotes/guides/language/underscores-literals.html\n var JAVA_NUMBER_RE = '\\\\b' +\n '(' +\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\n '|' +\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\n '|' +\n '(' +\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\n '|' +\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\n ')' +\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\n ')' +\n '[lLfF]?';\n var JAVA_NUMBER_MODE = {\n className: 'number',\n begin: JAVA_NUMBER_RE,\n relevance: 0\n };\n\n return {\n aliases: ['jsp'],\n keywords: KEYWORDS,\n illegal: /<\\/|#/,\n contains: [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [\n {\n // eat up @'s in emails to prevent them to be recognized as doctags\n begin: /\\w+@/, relevance: 0\n },\n {\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'class',\n beginKeywords: 'class interface', end: /[{;=]/, excludeEnd: true,\n keywords: 'class interface',\n illegal: /[:\"\\[\\]]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n // Expression keywords prevent 'keyword Name(...)' from being\n // recognized as a function definition\n beginKeywords: 'new throw return else',\n relevance: 0\n },\n {\n className: 'function',\n begin: '(' + GENERIC_IDENT_RE + '\\\\s+)+' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true, end: /[{;=]/,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n JAVA_NUMBER_MODE,\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var KEYWORDS = {\n keyword:\n 'in of if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await static ' +\n // ECMAScript 6 modules import\n 'import from as'\n ,\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Promise'\n };\n var EXPRESSIONS;\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n };\n var SUBST = {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}',\n keywords: KEYWORDS,\n contains: [] // defined later\n };\n var TEMPLATE_STRING = {\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n SUBST\n ]\n };\n SUBST.contains = [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n NUMBER,\n hljs.REGEXP_MODE\n ]\n var PARAMS_CONTAINS = SUBST.contains.concat([\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]);\n\n return {\n aliases: ['js', 'jsx'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n relevance: 10,\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n {\n className: 'meta',\n begin: /^#!/, end: /$/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n TEMPLATE_STRING,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMBER,\n { // object attr container\n begin: /[{,]\\s*/, relevance: 0,\n contains: [\n {\n begin: IDENT_RE + '\\\\s*:', returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: IDENT_RE, relevance: 0}]\n }\n ]\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: PARAMS_CONTAINS\n }\n ]\n }\n ]\n },\n { // E4X / JSX\n begin: /</, end: /(\\/\\w+|\\w+\\/)>/,\n subLanguage: 'xml',\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n {\n begin: /<\\w+/, end: /(\\/\\w+|\\w+\\/)>/, skip: true,\n contains: [\n {begin: /<\\w+\\s*\\/>/, skip: true},\n 'self'\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: PARAMS_CONTAINS\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n hljs.METHOD_GUARD,\n { // ES6 class\n className: 'class',\n beginKeywords: 'class', end: /[{;=]/, excludeEnd: true,\n illegal: /[:\"\\[\\]]/,\n contains: [\n {beginKeywords: 'extends'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true\n }\n ],\n illegal: /#(?!!)/\n };\n};","module.exports = function (hljs) {\n var PARAM = {\n begin: /[\\w-]+ *=/, returnBegin: true,\n relevance: 0,\n contains: [{className: 'attr', begin: /[\\w-]+/}]\n };\n var PARAMSBLOCK = {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [PARAM],\n relevance : 0\n };\n var OPERATION = {\n className: 'function',\n begin: /:[\\w\\-.]+/,\n relevance: 0\n };\n var PATH = {\n className: 'string',\n begin: /\\B(([\\/.])[\\w\\-.\\/=]+)+/,\n };\n var COMMAND_PARAMS = {\n className: 'params',\n begin: /--[\\w\\-=\\/]+/,\n };\n return {\n aliases: ['wildfly-cli'],\n lexemes: '[a-z\\-]+',\n keywords: {\n keyword: 'alias batch cd clear command connect connection-factory connection-info data-source deploy ' +\n 'deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls ' +\n 'patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias ' +\n 'undeploy unset version xa-data-source', // module\n literal: 'true false'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n COMMAND_PARAMS,\n OPERATION,\n PATH,\n PARAMSBLOCK\n ]\n }\n};","module.exports = function(hljs) {\n var LITERALS = {literal: 'true false null'};\n var TYPES = [\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ];\n var VALUE_CONTAINER = {\n end: ',', endsWithParent: true, excludeEnd: true,\n contains: TYPES,\n keywords: LITERALS\n };\n var OBJECT = {\n begin: '{', end: '}',\n contains: [\n {\n className: 'attr',\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE],\n illegal: '\\\\n',\n },\n hljs.inherit(VALUE_CONTAINER, {begin: /:/})\n ],\n illegal: '\\\\S'\n };\n var ARRAY = {\n begin: '\\\\[', end: '\\\\]',\n contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents\n illegal: '\\\\S'\n };\n TYPES.splice(TYPES.length, 0, OBJECT, ARRAY);\n return {\n contains: TYPES,\n keywords: LITERALS,\n illegal: '\\\\S'\n };\n};","module.exports = function(hljs) {\n // Since there are numerous special names in Julia, it is too much trouble\n // to maintain them by hand. Hence these names (i.e. keywords, literals and\n // built-ins) are automatically generated from Julia v0.6 itself through\n // the following scripts for each.\n\n var KEYWORDS = {\n // # keyword generator, multi-word keywords handled manually below\n // foreach(println, [\"in\", \"isa\", \"where\"])\n // for kw in Base.REPLCompletions.complete_keyword(\"\")\n // if !(contains(kw, \" \") || kw == \"struct\")\n // println(kw)\n // end\n // end\n keyword:\n 'in isa where ' +\n 'baremodule begin break catch ccall const continue do else elseif end export false finally for function ' +\n 'global if import importall let local macro module quote return true try using while ' +\n // legacy, to be deprecated in the next release\n 'type immutable abstract bitstype typealias ',\n\n // # literal generator\n // println(\"true\")\n // println(\"false\")\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // v = eval(Symbol(name))\n // if !(v isa Function || v isa Type || v isa TypeVar || v isa Module || v isa Colon)\n // println(name)\n // end\n // end\n // end\n literal:\n 'true false ' +\n 'ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort ' +\n 'NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway ' +\n 'RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im ' +\n 'nothing pi γ π φ ',\n\n // # built_in generator:\n // for name in Base.REPLCompletions.completions(\"\", 0)[1]\n // try\n // v = eval(Symbol(name))\n // if v isa Type || v isa TypeVar\n // println(name)\n // end\n // end\n // end\n built_in:\n 'ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet ' +\n 'AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat ' +\n 'AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal '+\n 'BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException ' +\n 'CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager ' +\n 'Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ' +\n 'ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t ' +\n 'Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict ' +\n 'DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ' +\n 'ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function ' +\n 'Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear ' +\n 'IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException ' +\n 'InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix ' +\n 'MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict ' +\n 'OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe ' +\n 'PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ' +\n 'ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode ' +\n 'RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed ' +\n 'SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange ' +\n 'StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal ' +\n 'Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry ' +\n 'TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError ' +\n 'UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector ' +\n 'VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool '\n };\n\n // ref: http://julia.readthedocs.org/en/latest/manual/variables/#allowed-variable-names\n var VARIABLE_NAME_RE = '[A-Za-z_\\\\u00A1-\\\\uFFFF][A-Za-z_0-9\\\\u00A1-\\\\uFFFF]*';\n\n // placeholder for recursive self-reference\n var DEFAULT = {\n lexemes: VARIABLE_NAME_RE, keywords: KEYWORDS, illegal: /<\\//\n };\n\n // ref: http://julia.readthedocs.org/en/latest/manual/integers-and-floating-point-numbers/\n var NUMBER = {\n className: 'number',\n // supported numeric literals:\n // * binary literal (e.g. 0x10)\n // * octal literal (e.g. 0o76543210)\n // * hexadecimal literal (e.g. 0xfedcba876543210)\n // * hexadecimal floating point literal (e.g. 0x1p0, 0x1.2p2)\n // * decimal literal (e.g. 9876543210, 100_000_000)\n // * floating pointe literal (e.g. 1.2, 1.2f, .2, 1., 1.2e10, 1.2e-10)\n begin: /(\\b0x[\\d_]*(\\.[\\d_]*)?|0x\\.\\d[\\d_]*)p[-+]?\\d+|\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\b\\d[\\d_]*(\\.[\\d_]*)?|\\.\\d[\\d_]*)([eEfF][-+]?\\d+)?/,\n relevance: 0\n };\n\n var CHAR = {\n className: 'string',\n begin: /'(.|\\\\[xXuU][a-zA-Z0-9]+)'/\n };\n\n var INTERPOLATION = {\n className: 'subst',\n begin: /\\$\\(/, end: /\\)/,\n keywords: KEYWORDS\n };\n\n var INTERPOLATED_VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + VARIABLE_NAME_RE\n };\n\n // TODO: neatly escape normal code in string literal\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n variants: [\n { begin: /\\w*\"\"\"/, end: /\"\"\"\\w*/, relevance: 10 },\n { begin: /\\w*\"/, end: /\"\\w*/ }\n ]\n };\n\n var COMMAND = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, INTERPOLATION, INTERPOLATED_VARIABLE],\n begin: '`', end: '`'\n };\n\n var MACROCALL = {\n className: 'meta',\n begin: '@' + VARIABLE_NAME_RE\n };\n\n var COMMENT = {\n className: 'comment',\n variants: [\n { begin: '#=', end: '=#', relevance: 10 },\n { begin: '#', end: '$' }\n ]\n };\n\n DEFAULT.contains = [\n NUMBER,\n CHAR,\n STRING,\n COMMAND,\n MACROCALL,\n COMMENT,\n hljs.HASH_COMMENT_MODE,\n {\n className: 'keyword',\n begin:\n '\\\\b(((abstract|primitive)\\\\s+)type|(mutable\\\\s+)?struct)\\\\b'\n },\n {begin: /<:/} // relevance booster\n ];\n INTERPOLATION.contains = DEFAULT.contains;\n\n return DEFAULT;\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'meta',\n begin: /^julia>/,\n relevance: 10,\n starts: {\n // end the highlighting if we are on a new line and the line does not have at\n // least six spaces in the beginning\n end: /^(?![ ]{6})/,\n subLanguage: 'julia'\n },\n // jldoctest Markdown blocks are used in the Julia manual and package docs indicate\n // code snippets that should be verified when the documentation is built. They can be\n // either REPL-like or script-like, but are usually REPL-like and therefore we apply\n // julia-repl highlighting to them. More information can be found in Documenter's\n // manual: https://juliadocs.github.io/Documenter.jl/latest/man/doctests.html\n aliases: ['jldoctest']\n }\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'abstract as val var vararg get set class object open private protected public noinline ' +\n 'crossinline dynamic final enum if else do while for when throw try catch finally ' +\n 'import package is in fun override companion reified inline lateinit init ' +\n 'interface annotation data sealed internal infix operator out by constructor super ' +\n 'tailrec where const inner suspend typealias external expect actual ' +\n // to be deleted soon\n 'trait volatile transient native default',\n built_in:\n 'Byte Short Char Int Long Boolean Float Double Void Unit Nothing',\n literal:\n 'true false null'\n };\n var KEYWORDS_WITH_LABEL = {\n className: 'keyword',\n begin: /\\b(break|continue|return|this)\\b/,\n starts: {\n contains: [\n {\n className: 'symbol',\n begin: /@\\w+/\n }\n ]\n }\n };\n var LABEL = {\n className: 'symbol', begin: hljs.UNDERSCORE_IDENT_RE + '@'\n };\n\n // for string templates\n var SUBST = {\n className: 'subst',\n begin: '\\\\${', end: '}', contains: [hljs.APOS_STRING_MODE, hljs.C_NUMBER_MODE]\n };\n var VARIABLE = {\n className: 'variable', begin: '\\\\$' + hljs.UNDERSCORE_IDENT_RE\n };\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"\"\"', end: '\"\"\"',\n contains: [VARIABLE, SUBST]\n },\n // Can't use built-in modes easily, as we want to use STRING in the meta\n // context as 'meta-string' and there's no syntax to remove explicitly set\n // classNames in built-in modes.\n {\n begin: '\\'', end: '\\'',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"',\n illegal: /\\n/,\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE, SUBST]\n }\n ]\n };\n\n var ANNOTATION_USE_SITE = {\n className: 'meta', begin: '@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*' + hljs.UNDERSCORE_IDENT_RE + ')?'\n };\n var ANNOTATION = {\n className: 'meta', begin: '@' + hljs.UNDERSCORE_IDENT_RE,\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n hljs.inherit(STRING, {className: 'meta-string'})\n ]\n }\n ]\n };\n\n // https://kotlinlang.org/docs/reference/whatsnew11.html#underscores-in-numeric-literals\n // According to the doc above, the number mode of kotlin is the same as java 8,\n // so the code below is copied from java.js\n var KOTLIN_NUMBER_RE = '\\\\b' +\n '(' +\n '0[bB]([01]+[01_]+[01]+|[01]+)' + // 0b...\n '|' +\n '0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)' + // 0x...\n '|' +\n '(' +\n '([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?' +\n '|' +\n '\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)' +\n ')' +\n '([eE][-+]?\\\\d+)?' + // octal, decimal, float\n ')' +\n '[lLfF]?';\n var KOTLIN_NUMBER_MODE = {\n className: 'number',\n begin: KOTLIN_NUMBER_RE,\n relevance: 0\n };\n\n return {\n aliases: ['kt'],\n keywords: KEYWORDS,\n contains : [\n hljs.COMMENT(\n '/\\\\*\\\\*',\n '\\\\*/',\n {\n relevance : 0,\n contains : [{\n className : 'doctag',\n begin : '@[A-Za-z]+'\n }]\n }\n ),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n KEYWORDS_WITH_LABEL,\n LABEL,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n {\n className: 'function',\n beginKeywords: 'fun', end: '[(]|$',\n returnBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n illegal: /fun\\s+(<.*>)?[^\\s\\(]+(\\s+[^\\s\\(]+)\\s*=/,\n relevance: 5,\n contains: [\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s*\\\\(', returnBegin: true,\n relevance: 0,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'type',\n begin: /</, end: />/, keywords: 'reified',\n relevance: 0\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n endsParent: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n begin: /:/, end: /[=,\\/]/, endsWithParent: true,\n contains: [\n {className: 'type', begin: hljs.UNDERSCORE_IDENT_RE},\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n relevance: 0\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n ANNOTATION_USE_SITE,\n ANNOTATION,\n STRING,\n hljs.C_NUMBER_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface trait', end: /[:\\{(]|$/, // remove 'trait' when removed from KEYWORDS\n excludeEnd: true,\n illegal: 'extends implements',\n contains: [\n {beginKeywords: 'public protected internal private constructor'},\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'type',\n begin: /</, end: />/, excludeBegin: true, excludeEnd: true,\n relevance: 0\n },\n {\n className: 'type',\n begin: /[,:]\\s*/, end: /[<\\(,]|$/, excludeBegin: true, returnEnd: true\n },\n ANNOTATION_USE_SITE,\n ANNOTATION\n ]\n },\n STRING,\n {\n className: 'meta',\n begin: \"^#!/usr/bin/env\", end: '$',\n illegal: '\\n'\n },\n KOTLIN_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var LASSO_IDENT_RE = '[a-zA-Z_][\\\\w.]*';\n var LASSO_ANGLE_RE = '<\\\\?(lasso(script)?|=)';\n var LASSO_CLOSE_RE = '\\\\]|\\\\?>';\n var LASSO_KEYWORDS = {\n literal:\n 'true false none minimal full all void and or not ' +\n 'bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft',\n built_in:\n 'array date decimal duration integer map pair string tag xml null ' +\n 'boolean bytes keyword list locale queue set stack staticarray ' +\n 'local var variable global data self inherited currentcapture givenblock',\n keyword:\n 'cache database_names database_schemanames database_tablenames ' +\n 'define_tag define_type email_batch encode_set html_comment handle ' +\n 'handle_error header if inline iterate ljax_target link ' +\n 'link_currentaction link_currentgroup link_currentrecord link_detail ' +\n 'link_firstgroup link_firstrecord link_lastgroup link_lastrecord ' +\n 'link_nextgroup link_nextrecord link_prevgroup link_prevrecord log ' +\n 'loop namespace_using output_none portal private protect records ' +\n 'referer referrer repeating resultset rows search_args ' +\n 'search_arguments select sort_args sort_arguments thread_atomic ' +\n 'value_list while abort case else fail_if fail_ifnot fail if_empty ' +\n 'if_false if_null if_true loop_abort loop_continue loop_count params ' +\n 'params_up return return_value run_children soap_definetag ' +\n 'soap_lastrequest soap_lastresponse tag_name ascending average by ' +\n 'define descending do equals frozen group handle_failure import in ' +\n 'into join let match max min on order parent protected provide public ' +\n 'require returnhome skip split_thread sum take thread to trait type ' +\n 'where with yield yieldhome'\n };\n var HTML_COMMENT = hljs.COMMENT(\n '<!--',\n '-->',\n {\n relevance: 0\n }\n );\n var LASSO_NOPROCESS = {\n className: 'meta',\n begin: '\\\\[noprocess\\\\]',\n starts: {\n end: '\\\\[/noprocess\\\\]',\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n };\n var LASSO_START = {\n className: 'meta',\n begin: '\\\\[/noprocess|' + LASSO_ANGLE_RE\n };\n var LASSO_DATAMEMBER = {\n className: 'symbol',\n begin: '\\'' + LASSO_IDENT_RE + '\\''\n };\n var LASSO_CODE = [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.inherit(hljs.C_NUMBER_MODE, {begin: hljs.C_NUMBER_RE + '|(-?infinity|NaN)\\\\b'}),\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'string',\n begin: '`', end: '`'\n },\n { // variables\n variants: [\n {\n begin: '[#$]' + LASSO_IDENT_RE\n },\n {\n begin: '#', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n },\n {\n className: 'type',\n begin: '::\\\\s*', end: LASSO_IDENT_RE,\n illegal: '\\\\W'\n },\n {\n className: 'params',\n variants: [\n {\n begin: '-(?!infinity)' + LASSO_IDENT_RE,\n relevance: 0\n },\n {\n begin: '(\\\\.\\\\.\\\\.)'\n }\n ]\n },\n {\n begin: /(->|\\.)\\s*/,\n relevance: 0,\n contains: [LASSO_DATAMEMBER]\n },\n {\n className: 'class',\n beginKeywords: 'define',\n returnEnd: true, end: '\\\\(|=>',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: LASSO_IDENT_RE + '(=(?!>))?|[-+*/%](?!>)'})\n ]\n }\n ];\n return {\n aliases: ['ls', 'lassoscript'],\n case_insensitive: true,\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: { // markup\n end: '\\\\[|' + LASSO_ANGLE_RE,\n returnEnd: true,\n relevance: 0,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START,\n {\n className: 'meta',\n begin: '\\\\[no_square_brackets',\n starts: {\n end: '\\\\[/no_square_brackets\\\\]', // not implemented in the language\n lexemes: LASSO_IDENT_RE + '|&[lg]t;',\n keywords: LASSO_KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: LASSO_CLOSE_RE,\n relevance: 0,\n starts: {\n end: '\\\\[noprocess\\\\]|' + LASSO_ANGLE_RE,\n returnEnd: true,\n contains: [HTML_COMMENT]\n }\n },\n LASSO_NOPROCESS,\n LASSO_START\n ].concat(LASSO_CODE)\n }\n },\n {\n className: 'meta',\n begin: '\\\\[',\n relevance: 0\n },\n {\n className: 'meta',\n begin: '^#!', end:'lasso9$',\n relevance: 10\n }\n ].concat(LASSO_CODE)\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n {\n className: 'attribute',\n begin: '^dn', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0},\n relevance: 10\n },\n {\n className: 'attribute',\n begin: '^\\\\w', end: ': ', excludeEnd: true,\n starts: {end: '$', relevance: 0}\n },\n {\n className: 'literal',\n begin: '^-', end: '$'\n },\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function (hljs) {\n return {\n contains: [\n {\n className: 'function',\n begin: '#+' + '[A-Za-z_0-9]*' + '\\\\(',\n end:' {',\n returnBegin: true,\n excludeEnd: true,\n contains : [\n {\n className: 'keyword',\n begin: '#+'\n },\n {\n className: 'title',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n },\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n endsParent: true,\n contains: [\n {\n className: 'string',\n begin: '\"',\n end: '\"'\n },\n {\n className: 'variable',\n begin: '[A-Za-z_][A-Za-z_0-9]*'\n }\n ]\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[\\\\w-]+'; // yes, Less identifiers may begin with a digit\n var INTERP_IDENT_RE = '(' + IDENT_RE + '|@{' + IDENT_RE + '})';\n\n /* Generic Modes */\n\n var RULES = [], VALUE = []; // forward def. for recursive modes\n\n var STRING_MODE = function(c) { return {\n // Less strings are not multiline (also include '~' for more consistent coloring of \"escaped\" strings)\n className: 'string', begin: '~?' + c + '.*?' + c\n };};\n\n var IDENT_MODE = function(name, begin, relevance) { return {\n className: name, begin: begin, relevance: relevance\n };};\n\n var PARENS_MODE = {\n // used only to properly balance nested parens inside mixin call, def. arg list\n begin: '\\\\(', end: '\\\\)', contains: VALUE, relevance: 0\n };\n\n // generic Less highlighter (used almost everywhere except selectors):\n VALUE.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING_MODE(\"'\"),\n STRING_MODE('\"'),\n hljs.CSS_NUMBER_MODE, // fixme: it does not include dot for numbers like .5em :(\n {\n begin: '(url|data-uri)\\\\(',\n starts: {className: 'string', end: '[\\\\)\\\\n]', excludeEnd: true}\n },\n IDENT_MODE('number', '#[0-9A-Fa-f]+\\\\b'),\n PARENS_MODE,\n IDENT_MODE('variable', '@@?' + IDENT_RE, 10),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'),\n IDENT_MODE('built_in', '~?`[^`]*?`'), // inline javascript (or whatever host language) *multiline* string\n { // @media features (it’s here to not duplicate things in AT_RULE_MODE with extra PARENS_MODE overriding):\n className: 'attribute', begin: IDENT_RE + '\\\\s*:', end: ':', returnBegin: true, excludeEnd: true\n },\n {\n className: 'meta',\n begin: '!important'\n }\n );\n\n var VALUE_WITH_RULESETS = VALUE.concat({\n begin: '{', end: '}', contains: RULES\n });\n\n var MIXIN_GUARD_MODE = {\n beginKeywords: 'when', endsWithParent: true,\n contains: [{beginKeywords: 'and not'}].concat(VALUE) // using this form to override VALUE’s 'function' match\n };\n\n /* Rule-Level Modes */\n\n var RULE_MODE = {\n begin: INTERP_IDENT_RE + '\\\\s*:', returnBegin: true, end: '[;}]',\n relevance: 0,\n contains: [\n {\n className: 'attribute',\n begin: INTERP_IDENT_RE, end: ':', excludeEnd: true,\n starts: {\n endsWithParent: true, illegal: '[<=$]',\n relevance: 0,\n contains: VALUE\n }\n }\n ]\n };\n\n var AT_RULE_MODE = {\n className: 'keyword',\n begin: '@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b',\n starts: {end: '[;{}]', returnEnd: true, contains: VALUE, relevance: 0}\n };\n\n // variable definitions and calls\n var VAR_RULE_MODE = {\n className: 'variable',\n variants: [\n // using more strict pattern for higher relevance to increase chances of Less detection.\n // this is *the only* Less specific statement used in most of the sources, so...\n // (we’ll still often loose to the css-parser unless there's '//' comment,\n // simply because 1 variable just can't beat 99 properties :)\n {begin: '@' + IDENT_RE + '\\\\s*:', relevance: 15},\n {begin: '@' + IDENT_RE}\n ],\n starts: {end: '[;}]', returnEnd: true, contains: VALUE_WITH_RULESETS}\n };\n\n var SELECTOR_MODE = {\n // first parse unambiguous selectors (i.e. those not starting with tag)\n // then fall into the scary lookahead-discriminator variant.\n // this mode also handles mixin definitions and calls\n variants: [{\n begin: '[\\\\.#:&\\\\[>]', end: '[;{}]' // mixin calls end with ';'\n }, {\n begin: INTERP_IDENT_RE, end: '{'\n }],\n returnBegin: true,\n returnEnd: true,\n illegal: '[<=\\'$\"]',\n relevance: 0,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n MIXIN_GUARD_MODE,\n IDENT_MODE('keyword', 'all\\\\b'),\n IDENT_MODE('variable', '@{' + IDENT_RE + '}'), // otherwise it’s identified as tag\n IDENT_MODE('selector-tag', INTERP_IDENT_RE + '%?', 0), // '%' for more consistent coloring of @keyframes \"tags\"\n IDENT_MODE('selector-id', '#' + INTERP_IDENT_RE),\n IDENT_MODE('selector-class', '\\\\.' + INTERP_IDENT_RE, 0),\n IDENT_MODE('selector-tag', '&', 0),\n {className: 'selector-attr', begin: '\\\\[', end: '\\\\]'},\n {className: 'selector-pseudo', begin: /:(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\"'.]+/},\n {begin: '\\\\(', end: '\\\\)', contains: VALUE_WITH_RULESETS}, // argument list of parametric mixins\n {begin: '!important'} // eat !important after mixin call or it will be colored as tag\n ]\n };\n\n RULES.push(\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n AT_RULE_MODE,\n VAR_RULE_MODE,\n RULE_MODE,\n SELECTOR_MODE\n );\n\n return {\n case_insensitive: true,\n illegal: '[=>\\'/<($\"]',\n contains: RULES\n };\n};","module.exports = function(hljs) {\n var LISP_IDENT_RE = '[a-zA-Z_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*';\n var MEC_RE = '\\\\|[^]*?\\\\|';\n var LISP_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?';\n var SHEBANG = {\n className: 'meta',\n begin: '^#!', end: '$'\n };\n var LITERAL = {\n className: 'literal',\n begin: '\\\\b(t{1}|nil)\\\\b'\n };\n var NUMBER = {\n className: 'number',\n variants: [\n {begin: LISP_SIMPLE_NUMBER_RE, relevance: 0},\n {begin: '#(b|B)[0-1]+(/[0-1]+)?'},\n {begin: '#(o|O)[0-7]+(/[0-7]+)?'},\n {begin: '#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?'},\n {begin: '#(c|C)\\\\(' + LISP_SIMPLE_NUMBER_RE + ' +' + LISP_SIMPLE_NUMBER_RE, end: '\\\\)'}\n ]\n };\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null});\n var COMMENT = hljs.COMMENT(\n ';', '$',\n {\n relevance: 0\n }\n );\n var VARIABLE = {\n begin: '\\\\*', end: '\\\\*'\n };\n var KEYWORD = {\n className: 'symbol',\n begin: '[:&]' + LISP_IDENT_RE\n };\n var IDENT = {\n begin: LISP_IDENT_RE,\n relevance: 0\n };\n var MEC = {\n begin: MEC_RE\n };\n var QUOTED_LIST = {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT]\n };\n var QUOTED = {\n contains: [NUMBER, STRING, VARIABLE, KEYWORD, QUOTED_LIST, IDENT],\n variants: [\n {\n begin: '[\\'`]\\\\(', end: '\\\\)'\n },\n {\n begin: '\\\\(quote ', end: '\\\\)',\n keywords: {name: 'quote'}\n },\n {\n begin: '\\'' + MEC_RE\n }\n ]\n };\n var QUOTED_ATOM = {\n variants: [\n {begin: '\\'' + LISP_IDENT_RE},\n {begin: '#\\'' + LISP_IDENT_RE + '(::' + LISP_IDENT_RE + ')*'}\n ]\n };\n var LIST = {\n begin: '\\\\(\\\\s*', end: '\\\\)'\n };\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n LIST.contains = [\n {\n className: 'name',\n variants: [\n {begin: LISP_IDENT_RE},\n {begin: MEC_RE}\n ]\n },\n BODY\n ];\n BODY.contains = [QUOTED, QUOTED_ATOM, LIST, LITERAL, NUMBER, STRING, COMMENT, VARIABLE, KEYWORD, MEC, IDENT];\n\n return {\n illegal: /\\S/,\n contains: [\n NUMBER,\n SHEBANG,\n LITERAL,\n STRING,\n COMMENT,\n QUOTED,\n QUOTED_ATOM,\n LIST,\n IDENT\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n begin: '\\\\b[gtps][A-Z]+[A-Za-z0-9_\\\\-]*\\\\b|\\\\$_[A-Z]+',\n relevance: 0\n };\n var COMMENT_MODES = [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('--', '$'),\n hljs.COMMENT('[^:]//', '$')\n ];\n var TITLE1 = hljs.inherit(hljs.TITLE_MODE, {\n variants: [\n {begin: '\\\\b_*rig[A-Z]+[A-Za-z0-9_\\\\-]*'},\n {begin: '\\\\b_[a-z0-9\\\\-]+'}\n ]\n });\n var TITLE2 = hljs.inherit(hljs.TITLE_MODE, {begin: '\\\\b([A-Za-z0-9_\\\\-]+)\\\\b'});\n return {\n case_insensitive: false,\n keywords: {\n keyword:\n '$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER ' +\n 'codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph ' +\n 'after byte bytes english the until http forever descending using line real8 with seventh ' +\n 'for stdout finally element word words fourth before black ninth sixth characters chars stderr ' +\n 'uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid ' +\n 'at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 ' +\n 'int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat ' +\n 'end repeat URL in try into switch to words https token binfile each tenth as ticks tick ' +\n 'system real4 by dateItems without char character ascending eighth whole dateTime numeric short ' +\n 'first ftp integer abbreviated abbr abbrev private case while if ' +\n 'div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within ' +\n 'contains ends with begins the keys of keys',\n literal:\n 'SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE ' +\n 'QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO ' +\n 'six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five ' +\n 'quote empty one true return cr linefeed right backslash null seven tab three two ' +\n 'RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK ' +\n 'FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK',\n built_in:\n 'put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode ' +\n 'base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum ' +\n 'cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress ' +\n 'constantNames cos date dateFormat decompress directories ' +\n 'diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global ' +\n 'globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset ' +\n 'keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders ' +\n 'libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 ' +\n 'longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge millisec ' +\n 'millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar ' +\n 'numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets ' +\n 'paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation ' +\n 'populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile ' +\n 'revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull ' +\n 'revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered ' +\n 'revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames ' +\n 'revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull ' +\n 'revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections ' +\n 'revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype ' +\n 'revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext ' +\n 'revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames ' +\n 'revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase ' +\n 'revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute ' +\n 'revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces ' +\n 'revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode ' +\n 'revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling ' +\n 'revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error ' +\n 'revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute ' +\n 'revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort ' +\n 'revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree ' +\n 'revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance ' +\n 'sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound ' +\n 'stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper ' +\n 'transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames ' +\n 'variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet ' +\n 'xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process ' +\n 'combine constant convert create new alias folder directory decrypt delete variable word line folder ' +\n 'directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile ' +\n 'libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback ' +\n 'libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime ' +\n 'libURLSetStatusCallback load multiply socket prepare process post seek rel relative read from process rename ' +\n 'replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase ' +\n 'revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees ' +\n 'revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord ' +\n 'revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase ' +\n 'revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD ' +\n 'revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost ' +\n 'revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData ' +\n 'revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel ' +\n 'revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback ' +\n 'revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop ' +\n 'subtract union unload wait write'\n },\n contains: [\n VARIABLE,\n {\n className: 'keyword',\n begin: '\\\\bend\\\\sif\\\\b'\n },\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'function',\n begin: '\\\\bend\\\\s+', end: '$',\n keywords: 'end',\n contains: [\n TITLE2,\n TITLE1\n ],\n relevance: 0\n },\n {\n beginKeywords: 'command on', end: '$',\n contains: [\n VARIABLE,\n TITLE2,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ]\n },\n {\n className: 'meta',\n variants: [\n {\n begin: '<\\\\?(rev|lc|livecode)',\n relevance: 10\n },\n { begin: '<\\\\?' },\n { begin: '\\\\?>' }\n ]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.BINARY_NUMBER_MODE,\n hljs.C_NUMBER_MODE,\n TITLE1\n ].concat(COMMENT_MODES),\n illegal: ';$|^\\\\[|^=|&|{'\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // JS keywords\n 'in if for while finally new do return else break catch instanceof throw try this ' +\n 'switch continue typeof delete debugger case default function var with ' +\n // LiveScript keywords\n 'then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super ' +\n 'case default function var void const let enum export import native ' +\n '__hasProp __extends __slice __bind __indexOf',\n literal:\n // JS literals\n 'true false null undefined ' +\n // LiveScript literals\n 'yes no on off it that void',\n built_in:\n 'npm require console print module global window document'\n };\n var JS_IDENT_RE = '[A-Za-z$_](?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*';\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var SUBST_SIMPLE = {\n className: 'subst',\n begin: /#[A-Za-z$_]/, end: /(?:\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.BINARY_NUMBER_MODE,\n {\n className: 'number',\n begin: '(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)',\n relevance: 0,\n starts: {end: '(\\\\s*/)?', relevance: 0} // a number tries to eat the following slash to prevent treating it as a regexp\n },\n {\n className: 'string',\n variants: [\n {\n begin: /'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST, SUBST_SIMPLE]\n },\n {\n begin: /\\\\/, end: /(\\s|$)/,\n excludeEnd: true\n }\n ]\n },\n {\n className: 'regexp',\n variants: [\n {\n begin: '//', end: '//[gim]*',\n contains: [SUBST, hljs.HASH_COMMENT_MODE]\n },\n {\n // regex can't start with space to parse x / 2 / 3 as two divisions\n // regex can't start with *, and it supports an \"illegal\" in the main mode\n begin: /\\/(?![ *])(\\\\\\/|.)*?\\/[gim]*(?=\\W|$)/\n }\n ]\n },\n {\n begin: '@' + JS_IDENT_RE\n },\n {\n begin: '``', end: '``',\n excludeBegin: true, excludeEnd: true,\n subLanguage: 'javascript'\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [\n {\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }\n ]\n };\n\n return {\n aliases: ['ls'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('\\\\/\\\\*', '\\\\*\\\\/'),\n hljs.HASH_COMMENT_MODE,\n {\n className: 'function',\n contains: [TITLE, PARAMS],\n returnBegin: true,\n variants: [\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B\\\\->\\\\*?', end: '\\\\->\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\))?\\\\s*\\\\B[-~]{1,2}>\\\\*?', end: '[-~]{1,2}>\\\\*?'\n },\n {\n begin: '(' + JS_IDENT_RE + '\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B!?[-~]{1,2}>\\\\*?', end: '!?[-~]{1,2}>\\\\*?'\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n var identifier = '([-a-zA-Z$._][\\\\w\\\\-$.]*)';\n return {\n //lexemes: '[.%]?' + hljs.IDENT_RE,\n keywords:\n 'begin end true false declare define global ' +\n 'constant private linker_private internal ' +\n 'available_externally linkonce linkonce_odr weak ' +\n 'weak_odr appending dllimport dllexport common ' +\n 'default hidden protected extern_weak external ' +\n 'thread_local zeroinitializer undef null to tail ' +\n 'target triple datalayout volatile nuw nsw nnan ' +\n 'ninf nsz arcp fast exact inbounds align ' +\n 'addrspace section alias module asm sideeffect ' +\n 'gc dbg linker_private_weak attributes blockaddress ' +\n 'initialexec localdynamic localexec prefix unnamed_addr ' +\n 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc ' +\n 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ' +\n 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func ' +\n 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc ' +\n 'cc c signext zeroext inreg sret nounwind ' +\n 'noreturn noalias nocapture byval nest readnone ' +\n 'readonly inlinehint noinline alwaysinline optsize ssp ' +\n 'sspreq noredzone noimplicitfloat naked builtin cold ' +\n 'nobuiltin noduplicate nonlazybind optnone returns_twice ' +\n 'sanitize_address sanitize_memory sanitize_thread sspstrong ' +\n 'uwtable returned type opaque eq ne slt sgt ' +\n 'sle sge ult ugt ule uge oeq one olt ogt ' +\n 'ole oge ord uno ueq une x acq_rel acquire ' +\n 'alignstack atomic catch cleanup filter inteldialect ' +\n 'max min monotonic nand personality release seq_cst ' +\n 'singlethread umax umin unordered xchg add fadd ' +\n 'sub fsub mul fmul udiv sdiv fdiv urem srem ' +\n 'frem shl lshr ashr and or xor icmp fcmp ' +\n 'phi call trunc zext sext fptrunc fpext uitofp ' +\n 'sitofp fptoui fptosi inttoptr ptrtoint bitcast ' +\n 'addrspacecast select va_arg ret br switch invoke ' +\n 'unwind unreachable indirectbr landingpad resume ' +\n 'malloc alloca free load store getelementptr ' +\n 'extractelement insertelement shufflevector getresult ' +\n 'extractvalue insertvalue atomicrmw cmpxchg fence ' +\n 'argmemonly double',\n contains: [\n {\n className: 'keyword',\n begin: 'i\\\\d+'\n },\n hljs.COMMENT(\n ';', '\\\\n', {relevance: 0}\n ),\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Double-quoted string\n { begin: '\"', end: '[^\\\\\\\\]\"' },\n ],\n relevance: 0\n },\n {\n className: 'title',\n variants: [\n { begin: '@' + identifier },\n { begin: '@\\\\d+' },\n { begin: '!' + identifier },\n { begin: '!\\\\d+' + identifier }\n ]\n },\n {\n className: 'symbol',\n variants: [\n { begin: '%' + identifier },\n { begin: '%\\\\d+' },\n { begin: '#\\\\d+' },\n ]\n },\n {\n className: 'number',\n variants: [\n { begin: '0[xX][a-fA-F0-9]+' },\n { begin: '-?\\\\d+(?:[.]\\\\d+)?(?:[eE][-+]?\\\\d+(?:[.]\\\\d+)?)?' }\n ],\n relevance: 0\n },\n ]\n };\n};","module.exports = function(hljs) {\n\n var LSL_STRING_ESCAPE_CHARS = {\n className: 'subst',\n begin: /\\\\[tn\"\\\\]/\n };\n\n var LSL_STRINGS = {\n className: 'string',\n begin: '\"',\n end: '\"',\n contains: [\n LSL_STRING_ESCAPE_CHARS\n ]\n };\n\n var LSL_NUMBERS = {\n className: 'number',\n begin: hljs.C_NUMBER_RE\n };\n\n var LSL_CONSTANTS = {\n className: 'literal',\n variants: [\n {\n begin: '\\\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b'\n },\n {\n begin: '\\\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_ON_REZ|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP|CREATOR|ATTACHED_POINT|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\\\b'\n },\n {\n begin: '\\\\b(?:FALSE|TRUE)\\\\b'\n },\n {\n begin: '\\\\b(?:ZERO_ROTATION)\\\\b'\n },\n {\n begin: '\\\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\\\b'\n },\n {\n begin: '\\\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\\\b'\n }\n ]\n };\n\n var LSL_FUNCTIONS = {\n className: 'built_in',\n begin: '\\\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\\\b'\n };\n\n return {\n illegal: ':',\n contains: [\n LSL_STRINGS,\n {\n className: 'comment',\n variants: [\n hljs.COMMENT('//', '$'),\n hljs.COMMENT('/\\\\*', '\\\\*/')\n ]\n },\n LSL_NUMBERS,\n {\n className: 'section',\n variants: [\n {\n begin: '\\\\b(?:state|default)\\\\b'\n },\n {\n begin: '\\\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\\\b'\n }\n ]\n },\n LSL_FUNCTIONS,\n LSL_CONSTANTS,\n {\n className: 'type',\n begin: '\\\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\\\b'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var OPENING_LONG_BRACKET = '\\\\[=*\\\\[';\n var CLOSING_LONG_BRACKET = '\\\\]=*\\\\]';\n var LONG_BRACKETS = {\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: ['self']\n };\n var COMMENTS = [\n hljs.COMMENT('--(?!' + OPENING_LONG_BRACKET + ')', '$'),\n hljs.COMMENT(\n '--' + OPENING_LONG_BRACKET,\n CLOSING_LONG_BRACKET,\n {\n contains: [LONG_BRACKETS],\n relevance: 10\n }\n )\n ];\n return {\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n literal: \"true false nil\",\n keyword: \"and break do else elseif end for goto if in local not or repeat return then until while\",\n built_in:\n //Metatags and globals:\n '_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len ' +\n '__gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert ' +\n //Standard methods and properties:\n 'collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring' +\n 'module next pairs pcall print rawequal rawget rawset require select setfenv' +\n 'setmetatable tonumber tostring type unpack xpcall arg self' +\n //Library methods and properties (one line per library):\n 'coroutine resume yield status wrap create running debug getupvalue ' +\n 'debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv ' +\n 'io lines write close flush open output type read stderr stdin input stdout popen tmpfile ' +\n 'math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan ' +\n 'os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall ' +\n 'string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower ' +\n 'table setn insert getn foreachi maxn foreach concat sort remove'\n },\n contains: COMMENTS.concat([\n {\n className: 'function',\n beginKeywords: 'function', end: '\\\\)',\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: '([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*'}),\n {\n className: 'params',\n begin: '\\\\(', endsWithParent: true,\n contains: COMMENTS\n }\n ].concat(COMMENTS)\n },\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,\n contains: [LONG_BRACKETS],\n relevance: 5\n }\n ])\n };\n};","module.exports = function(hljs) {\n /* Variables: simple (eg $(var)) and special (eg $@) */\n var VARIABLE = {\n className: 'variable',\n variants: [\n {\n begin: '\\\\$\\\\(' + hljs.UNDERSCORE_IDENT_RE + '\\\\)',\n contains: [hljs.BACKSLASH_ESCAPE],\n },\n {\n begin: /\\$[@%<?\\^\\+\\*]/\n },\n ]\n };\n /* Quoted string with variables inside */\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VARIABLE,\n ]\n };\n /* Function: $(func arg,...) */\n var FUNC = {\n className: 'variable',\n begin: /\\$\\([\\w-]+\\s/, end: /\\)/,\n keywords: {\n built_in:\n 'subst patsubst strip findstring filter filter-out sort ' +\n 'word wordlist firstword lastword dir notdir suffix basename ' +\n 'addsuffix addprefix join wildcard realpath abspath error warning ' +\n 'shell origin flavor foreach if or and call eval file value',\n },\n contains: [\n VARIABLE,\n ]\n };\n /* Variable assignment */\n var VAR_ASSIG = {\n begin: '^' + hljs.UNDERSCORE_IDENT_RE + '\\\\s*[:+?]?=',\n illegal: '\\\\n',\n returnBegin: true,\n contains: [\n {\n begin: '^' + hljs.UNDERSCORE_IDENT_RE, end: '[:+?]?=',\n excludeEnd: true,\n }\n ]\n };\n /* Meta targets (.PHONY) */\n var META = {\n className: 'meta',\n begin: /^\\.PHONY:/, end: /$/,\n keywords: {'meta-keyword': '.PHONY'},\n lexemes: /[\\.\\w]+/\n };\n /* Targets */\n var TARGET = {\n className: 'section',\n begin: /^[^\\s]+:/, end: /$/,\n contains: [VARIABLE,]\n };\n return {\n aliases: ['mk', 'mak'],\n keywords:\n 'define endef undefine ifdef ifndef ifeq ifneq else endif ' +\n 'include -include sinclude override export unexport private vpath',\n lexemes: /[\\w-]+/,\n contains: [\n hljs.HASH_COMMENT_MODE,\n VARIABLE,\n QUOTE_STRING,\n FUNC,\n VAR_ASSIG,\n META,\n TARGET,\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['mma'],\n lexemes: '(\\\\$|\\\\b)' + hljs.IDENT_RE + '\\\\b',\n keywords: 'AbelianGroup Abort AbortKernels AbortProtect Above Abs Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Active ActiveItem ActiveStyle AcyclicGraphQ AddOnHelpPath AddTo AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AffineTransform After AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowedDimensions AllowGroupClose AllowInlineCells AllowKernelInitialization AllowReverseGroupClose AllowScriptLevelChange AlphaChannel AlternatingGroup AlternativeHypothesis Alternatives AmbientLight Analytic AnchoredSearch And AndersonDarlingTest AngerJ AngleBracket AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotation Annuity AnnuityDue Antialiasing Antisymmetric Apart ApartSquareFree Appearance AppearanceElements AppellF1 Append AppendTo Apply ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess ARProcess Array ArrayComponents ArrayDepth ArrayFlatten ArrayPad ArrayPlot ArrayQ ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads AspectRatio AspectRatioFixed Assert Assuming Assumptions AstronomicalData Asynchronous AsynchronousTaskObject AsynchronousTasks AtomQ Attributes AugmentedSymmetricPolynomial AutoAction AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords Axes AxesEdge AxesLabel AxesOrigin AxesStyle Axis ' +\n 'BabyMonsterGroupB Back Background BackgroundTasksSettings Backslash Backsubstitution Backward Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseForm Baseline BaselinePosition BaseStyle BatesDistribution BattleLemarieWavelet Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized BetweennessCentrality BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms Booleans BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryStyle Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BubbleChart BubbleChart3D BubbleScale BubbleSizes BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteCount ByteOrdering ' +\n 'C CachedValue CacheGraphics CalendarData CalendarType CallPacket CanberraDistance Cancel CancelButton CandlestickChart Cap CapForm CapitalDifferentialD CardinalBSplineBasis CarmichaelLambda Cases Cashflow Casoratian Catalan CatalanNumber Catch CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterDot CentralMoment CentralMomentGeneratingFunction CForm ChampernowneNumber ChanVeseBinarize Character CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop Circle CircleBox CircleDot CircleMinus CirclePlus CircleTimes CirculantGraph CityData Clear ClearAll ClearAttributes ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent ClusteringComponents CMYKColor Coarse Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorCombine ColorConvert ColorData ColorDataFunction ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorSpace Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CommonDefaultFormatTypes Commonest CommonestFilter CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledFunction Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComponentMeasurements ' +\n 'ComponentwiseContextMenu Compose ComposeList ComposeSeries Composition CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath Congruent Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphQ ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray Constants ConstrainedMax ConstrainedMin ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFilename ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean Control ControlActive ControlAlignment ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateDialog CreateDirectory CreateDocument CreateIntermediateDirectories CreatePalette CreatePalettePacket CreateScheduledTask CreateTemporary CreateWindow CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossingDetect CrossMatrix Csc Csch CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrentImage CurrentlySpeakingPacket CurrentValue CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecomposition ' +\n 'D DagumDistribution DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DataCompression DataDistribution DataRange DataReversed Date DateDelimiters DateDifference DateFunction DateList DateListLogPlot DateListPlot DatePattern DatePlus DateRange DateString DateTicksFormat DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayMatchQ DayName DayPlus DayRange DayRound DeBruijnGraph Debug DebugTag Decimal DeclareKnownSymbols DeclarePackage Decompose Decrement DedekindEta Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic Deinitialization Del Deletable Delete DeleteBorderComponents DeleteCases DeleteContents DeleteDirectory DeleteDuplicates DeleteFile DeleteSmallComponents DeleteWithContents DeletionWarning Delimiter DelimiterFlashTime DelimiterMatching Delimiters Denominator DensityGraphics DensityHistogram DensityPlot DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DescriptorStateSpace DesignMatrix Det DGaussianWavelet DiacriticalPositioning Diagonal DiagonalMatrix Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DifferenceDelta DifferenceOrder DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralGroup Dilation Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletCharacter DirichletConvolve DirichletDistribution DirichletL DirichletTransform DirichletWindow DisableConsolePrintPacket DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform ' +\n 'DiscreteWaveletTransform Discriminant Disjunction Disk DiskBox DiskMatrix Dispatch DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentNotebook DominantColors DOSTextFormat Dot DotDashed DotEqual Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DSolve Dt DualLinearProgramming DualSystemsModel DumpGet DumpSave DuplicateFreeQ Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptions ' +\n 'E EccentricityCentrality EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeCost EdgeCount EdgeCoverQ EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData Eliminate EliminationOrder EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EnableConsolePrintPacket Enabled Encode End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfFile EndOfLine EndOfString EndPackage EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entropy EntropyFilter Environment Epilog Equal EqualColumns EqualRows EqualTilde EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerE EulerGamma EulerianGraphQ EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluationCell EvaluationCompletionAction EvaluationElements EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpToTrig ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalCall ExternalDataCharacterEncoding Extract ExtractArchive ExtremeValueDistribution ' +\n 'FaceForm FaceGrids FaceGridsStyle Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail FailureDistribution False FARIMAProcess FEDisableConsolePrintPacket FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket Fibonacci FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileDate FileExistsQ FileExtension FileFormat FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileType FilledCurve FilledCurveBox Filling FillingStyle FillingTransform FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindArgMax FindArgMin FindClique FindClusters FindCurvePath FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEulerianCycle FindFaces FindFile FindFit FindGeneratingFunction FindGeoLocation FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMaximum FindMaximumFlow FindMaxValue FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindPermutation FindPostmanTour FindProcessParameters FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindThreshold FindVertexCover FindVertexCut Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstPassageTimeDistribution FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FittedModel FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlatTopWindow FlipView Floor FlushPrintOutputPacket Fold FoldList Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrequencySamplingFilterKernel FresnelC FresnelS Friday FrobeniusNumber FrobeniusSolve ' +\n 'FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullOptions FullSimplify Function FunctionExpand FunctionInterpolation FunctionSpace FussellVeselyImportance ' +\n 'GaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins Gamma GammaDistribution GammaRegularized GapPenalty Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateConditions GeneratedCell GeneratedParameters GeneratingFunction Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDistance GeoGridPosition GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoPosition GeoPositionENU GeoPositionXYZ GeoProjectionData GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter Graph GraphAssortativity GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion ' +\n 'GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel GreatCircleDistance Greater GreaterEqual GreaterEqualLess GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterTilde Green Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain Gudermannian GumbelDistribution ' +\n 'HaarWavelet HadamardMatrix HalfNormalDistribution HamiltonianGraphQ HammingDistance HammingWindow HankelH1 HankelH2 HankelMatrix HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash HashTable Haversine HazardFunction Head HeadCompose Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenSurface HighlightGraph HighlightImage HighpassFilter HigmanSimsGroupHS HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HitMissTransform HITSCentrality HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HotellingTSquareDistribution HoytDistribution HTMLSave Hue HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestData ' +\n 'I Identity IdentityMatrix If IgnoreCase Im Image Image3D Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageAspectRatio ImageAssemble ImageCache ImageCacheValid ImageCapture ImageChannels ImageClip ImageColorSpace ImageCompose ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDataPacket ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDistance ImageEffect ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageForestingComponents ImageForwardTransformation ImageHistogram ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarkers ImageMeasurements ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImageQ ImageRangeCache ImageReflect ImageRegion ImageResize ImageResolution ImageRotate ImageRotated ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions Implies Import ImportAutoReplacements ImportString ImprovementImportance In IncidenceGraph IncidenceList IncidenceMatrix IncludeConstantBasis IncludeFileExtension IncludePods IncludeSingularTerm Increment Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentUnit IndependentVertexSetQ Indeterminate IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers Infinity Infix Information Inherited InheritScope Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InlineCounterAssignments InlineCounterIncrements InlineRules Inner Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionPointObject InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Install InstallService InString Integer IntegerDigits IntegerExponent IntegerLength IntegerPart IntegerPartitions IntegerQ Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction ' +\n 'InterpretTemplate InterquartileRange Interrupt InterruptSettings Intersection Interval IntervalIntersection IntervalMemberQ IntervalUnion Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHaversine InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InversePermutation InverseRadon InverseSeries InverseSurvivalFunction InverseWaveletTransform InverseWeierstrassP InverseZTransform Invisible InvisibleApplication InvisibleTimes IrreduciblePolynomialQ IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcess ' +\n 'JaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join Joined JoinedCurve JoinedCurveBox JoinForm JordanDecomposition JordanModelDecomposition ' +\n 'K KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelMixtureDistribution KernelObject Kernels Ket Khinchin KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnightTourGraph KnotData KnownUnitQ KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter ' +\n 'Label Labeled LabeledSlider LabelingFunction LabelStyle LaguerreL LambdaComponents LambertW LanczosWindow LandauDistribution Language LanguageCategory LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCM LeafCount LeapYearQ LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessFullEqual LessGreater LessLess LessSlantEqual LessTilde LetterCharacter LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox LinearFilter LinearFractionalTransform LinearModelFit LinearOffsetFunction LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBreak LinebreakAdjustments LineBreakChart LineBreakWithin LineColor LineForm LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRead LinkReadHeld LinkReadyQ Links LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot Listen ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalClusteringCoefficient LocalizeVariables LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions ' +\n 'LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestAscendingSequence LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow Loopback LoopFreeGraphQ LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LyapunovSolve LyonsGroupLy ' +\n 'MachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules MangoldtLambda ManhattanDistance Manipulate Manipulator MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixPlot MatrixPower MatrixQ MatrixRank Max MaxBend MaxDetect MaxExtraBandwidths MaxExtraConditions MaxFeatures MaxFilter Maximize MaxIterations MaxMemoryUsed MaxMixtureKernels MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxValue MaxwellDistribution McLaughlinGroupMcL Mean MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter Median MedianDeviation MedianFilter Medium MeijerG MeixnerDistribution MemberQ MemoryConstrained MemoryInUse Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuPacket MenuSortingValue MenuStyle MenuView MergeDifferences Mesh MeshFunctions MeshRange MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation Method MethodOptions MexicanHatWavelet MeyerWavelet Min MinDetect MinFilter MinimalPolynomial MinimalStateSpaceModel Minimize Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingDataMethod MittagLefflerE MixedRadix MixedRadixQuantity MixtureDistribution Mod Modal Mode Modular ModularLambda Module Modulus MoebiusMu Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction Monday Monitor MonomialList MonomialOrder MonsterGroupM MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform Most MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovingAverage MovingMedian MoyalDistribution MultiedgeStyle MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistribution ' +\n 'N NakagamiDistribution NameQ Names NamespaceBox Nand NArgMax NArgMin NBernoulliB NCache NDSolve NDSolveValue Nearest NearestFunction NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeMultinomialDistribution NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestList NestWhile NestWhileList NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextPrime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants None NonlinearModelFit NonlocalMeansFilter NonNegative NonPositive Nor NorlundB Norm Normal NormalDistribution NormalGrouping Normalize NormalizedSquaredEuclideanDistance NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde NotHumpDownHump NotHumpEqual NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms Null NullRecords NullSpace NullWords Number NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator ' +\n 'NumberSigns NumberString Numerator NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlot ' +\n 'O ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OddQ Off Offset OLEData On ONanGroupON OneIdentity Opacity Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering Orderless OrnsteinUhlenbeckProcess Orthogonalize Out Outer OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OwenT OwnValues ' +\n 'PackingMethod PaddedForm Padding PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageWidth PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParetoDistribution Part PartialCorrelationFunction PartialD ParticleData Partition PartitionsP PartitionsQ ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PerformanceGoal PeriodicInterpolation Periodogram PeriodogramArray PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PERTDistribution PetersenGraph PhaseMargins Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest Pink Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarGraphQ Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangePadding PlotRegion PlotStyle Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox PointBox PointFigureChart PointForm PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonBox PolygonBoxOptions PolygonHoleScale PolygonIntersections PolygonScale PolyhedronData PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position Positive PositiveDefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList ' +\n 'PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement PredictionRoot PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependTo PreserveImageOptions Previous PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitiveRoot PrincipalComponents PrincipalValue Print PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessEstimator ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptions ' +\n 'QBinomial QFactorial QGamma QHypergeometricPFQ QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ Quantile QuantilePlot Quantity QuantityForm QuantityMagnitude QuantityQ QuantityUnit Quartics QuartileDeviation Quartiles QuartileSkewness QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainder ' +\n 'RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Random RandomChoice RandomComplex RandomFunction RandomGraph RandomImage RandomInteger RandomPermutation RandomPrime RandomReal RandomSample RandomSeed RandomVariate RandomWalkProcess Range RangeFilter RangeSpecification RankedMax RankedMin Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios Raw RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadList ReadProtected Real RealBlockDiagonalForm RealDigits RealExponent Reals Reap Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate RegionBinarize RegionFunction RegionPlot RegionPlot3D RegularExpression Regularization Reinstall Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot Remove RemoveAlphaChannel RemoveAsynchronousTask Removed RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart Repeated RepeatedNull RepeatedString Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated Resampling Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask Residue Resolve Rest Resultant ResumePacket Return ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulerUnits Run RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilarity ' +\n 'SameQ SameTest SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveDefinitions SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTaskActiveQ ScheduledTaskData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition Sec Sech SechDistribution SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemialgebraicComponentInstances SendMail Sequence SequenceAlignment SequenceForm SequenceHold SequenceLimit Series SeriesCoefficient SeriesData SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPrecision SetProperty SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share Sharpen ShearingMatrix ShearingTransform ShenCastanMatrix Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortUpArrow Show ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiegelTheta SiegelTukeyTest Sign Signature SignedRankTest SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution Skip SliceDistribution Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDelayCompensator SmithWatermanSimilarity ' +\n 'SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SocialMediaData Socket SokalSneathDissimilarity Solve SolveAlways SolveDelayed Sort SortBy Sound SoundAndGraphics SoundNote SoundVolume Sow Space SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution Speak SpeakTextPacket SpearmanRankTest SpearmanRho Spectrogram SpectrogramArray Specularity SpellingCorrection SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackInhibit StandardDeviation StandardDeviationFilter StandardForm Standardize StandbyDistribution Star StarGraph StartAsynchronousTask StartingStepSize StartOfLine StartOfString StartScheduledTask StartupSound StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringCount StringDrop StringExpression StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPosition StringQ StringReplace StringReplaceList StringReplacePart StringReverse StringRotateLeft StringRotateRight StringSkeleton StringSplit StringTake StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleBoxOptions StyleData StyleDefinitions StyleForm StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders ' +\n 'SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subset SubsetEqual Subsets SubStar Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde SuchThat Sum SumConvergence Sunday SuperDagger SuperMinus SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceColor SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SystemDialogInput SystemException SystemHelpPath SystemInformation SystemInformationData SystemOpen SystemOptions SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemStub ' +\n 'Tab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeWhile Tally Tan Tanh TargetFunctions TargetUnits TautologyQ TelegraphProcess TemplateBox TemplateBoxOptions TemplateSlotSequence TemporalData Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCell TextClipboardType TextData TextForm TextJustification TextLine TextPacket TextParagraph TextRecognize TextRendering TextStyle Texture TextureCoordinateFunction TextureCoordinateScaling Therefore ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreeJSymbol Threshold Through Throw Thumbnail Thursday Ticks TicksStyle Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint Times TimesBy TimeSeriesForecast TimeSeriesInvertibility TimeUsed TimeValue TimeZone Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate ToDiscreteTimeModel ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform TopologicalSort ToRadicals ToRules ToString Total TotalHeight TotalVariationFilter TotalWidth TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField Translate TranslationTransform TransparentColor Transpose TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle TriangleWave TriangularDistribution Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean True TrueQ TruncatedDistribution TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow Tuples TuranGraph TuringMachine ' +\n 'Transparent ' +\n 'UnateQ Uncompress Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UndirectedEdge UndirectedGraph UndirectedGraphQ UndocumentedTestFEParserPacket UndocumentedTestGetSelectionPacket Unequal Unevaluated UniformDistribution UniformGraphDistribution UniformSumDistribution Uninstall Union UnionPlus Unique UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitTriangle UnitVector Unprotect UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpValues URL URLFetch URLFetchAsynchronous URLSave URLSaveAsynchronous UseGraphicsRange Using UsingFrontEnd ' +\n 'V2Get ValidationLength Value ValueBox ValueBoxOptions ValueForm ValueQ ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerifyConvergence VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoigtDistribution VonMisesDistribution ' +\n 'WaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeberE Wedge Wednesday WeibullDistribution WeierstrassHalfPeriods WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WilksW WilksWTest WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult Word WordBoundary WordCharacter WordData WordSearch WordSeparators WorkingPrecision Write WriteString Wronskian ' +\n 'XMLElement XMLObject Xnor Xor ' +\n 'Yellow YuleDissimilarity ' +\n 'ZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZipfDistribution ZTest ZTransform ' +\n '$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AssertFunction $Assumptions $AsynchronousTask $BaseDirectory $BatchInput $BatchOutput $BoxForms $ByteOrdering $Canceled $CharacterEncoding $CharacterEncodings $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $CreationDate $CurrentLink $DateStringFormat $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $Epilog $ExportFormats $Failed $FinancialDataSource $FormatType $FrontEnd $FrontEndSession $GeoLocation $HistoryLength $HomeDirectory $HTTPCookies $IgnoreEOF $ImagingDevices $ImportFormats $InitialDirectory $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $ModuleNumber $NetworkLicense $NewMessage $NewSymbol $Notebooks $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $PipeSupported $Post $Pre $PreferencesDirectory $PrePrint $PreRead $PrintForms $PrintLiteral $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $RandomState $RecursionLimit $ReleaseNumber $RootDirectory $ScheduledTask $ScriptCommandLine $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemWordLength $TemporaryDirectory $TemporaryPrefix $TextStyle $TimedOut $TimeUnit $TimeZone $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $Urgent $UserAddOnsDirectory $UserBaseDirectory $UserDocumentsDirectory $UserName $Version $VersionNumber',\n contains: [\n {\n className: 'comment',\n begin: /\\(\\*/, end: /\\*\\)/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n begin: /\\{/, end: /\\}/,\n illegal: /:/\n }\n ]\n };\n};","module.exports = /*\n Formal syntax is not published, helpful link:\n https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf\n*/\nfunction(hljs) {\n\n var TRANSPOSE_RE = '(\\'|\\\\.\\')+';\n var TRANSPOSE = {\n relevance: 0,\n contains: [\n { begin: TRANSPOSE_RE }\n ]\n };\n\n return {\n keywords: {\n keyword:\n 'break case catch classdef continue else elseif end enumerated events for function ' +\n 'global if methods otherwise parfor persistent properties return spmd switch try while',\n built_in:\n 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' +\n 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' +\n 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' +\n 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' +\n 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' +\n 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' +\n 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' +\n 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' +\n 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' +\n 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' +\n 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' +\n 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan ' +\n 'isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal ' +\n 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' +\n 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' +\n 'legend intersect ismember procrustes hold num2cell '\n },\n illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n variants: [\n {begin: '\\\\(', end: '\\\\)'},\n {begin: '\\\\[', end: '\\\\]'}\n ]\n }\n ]\n },\n {\n className: 'built_in',\n begin: /true|false/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,\n relevance: 0\n },\n {\n className: 'number',\n begin: hljs.C_NUMBER_RE,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\\'\\''}]\n },\n {\n begin: /\\]|}|\\)/,\n relevance: 0,\n starts: TRANSPOSE\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {begin: '\"\"'}\n ],\n starts: TRANSPOSE\n },\n hljs.COMMENT('^\\\\s*\\\\%\\\\{\\\\s*$', '^\\\\s*\\\\%\\\\}\\\\s*$'),\n hljs.COMMENT('\\\\%', '$')\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = 'if then else elseif for thru do while unless step in and or not';\n var LITERALS = 'true false unknown inf minf ind und %e %i %pi %phi %gamma';\n var BUILTIN_FUNCTIONS =\n ' abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate'\n + ' addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix'\n + ' adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type'\n + ' alias allroots alphacharp alphanumericp amortization %and annuity_fv'\n + ' annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2'\n + ' applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply'\n + ' arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger'\n + ' asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order'\n + ' asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method'\n + ' av average_degree backtrace bars barsplot barsplot_description base64 base64_decode'\n + ' bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx'\n + ' bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify'\n + ' bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized'\n + ' bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp'\n + ' bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition'\n + ' block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description'\n + ' break bug_report build_info|10 buildq build_sample burn cabs canform canten'\n + ' cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli'\n + ' cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform'\n + ' cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel'\n + ' cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial'\n + ' cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson'\n + ' cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay'\n + ' ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic'\n + ' cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2'\n + ' charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps'\n + ' chinese cholesky christof chromatic_index chromatic_number cint circulant_graph'\n + ' clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph'\n + ' clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse'\n + ' collectterms columnop columnspace columnswap columnvector combination combine'\n + ' comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph'\n + ' complete_graph complex_number_p components compose_functions concan concat'\n + ' conjugate conmetderiv connected_components connect_vertices cons constant'\n + ' constantp constituent constvalue cont2part content continuous_freq contortion'\n + ' contour_plot contract contract_edge contragrad contrib_ode convert coord'\n + ' copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1'\n + ' covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline'\n + ' ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph'\n + ' cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate'\n + ' declare declare_constvalue declare_dimensions declare_fundamental_dimensions'\n + ' declare_fundamental_units declare_qty declare_translated declare_unit_conversion'\n + ' declare_units declare_weights decsym defcon define define_alt_display define_variable'\n + ' defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten'\n + ' delta demo demoivre denom depends derivdegree derivlist describe desolve'\n + ' determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag'\n + ' diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export'\n + ' dimacs_import dimension dimensionless dimensions dimensions_as_list direct'\n + ' directory discrete_freq disjoin disjointp disolate disp dispcon dispform'\n + ' dispfun dispJordan display disprule dispterms distrib divide divisors divsum'\n + ' dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart'\n + ' draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring'\n + ' edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth'\n + ' einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome'\n + ' ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using'\n + ' ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi'\n + ' ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp'\n + ' equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors'\n + ' euler ev eval_string evenp every evolution evolution2d evundiff example exp'\n + ' expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci'\n + ' expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li'\n + ' expintegral_shi expintegral_si explicit explose exponentialize express expt'\n + ' exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum'\n + ' factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements'\n + ' fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge'\n + ' file_search file_type fillarray findde find_root find_root_abs find_root_error'\n + ' find_root_rel first fix flatten flength float floatnump floor flower_snark'\n + ' flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran'\n + ' fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp'\n + ' foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s'\n + ' from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp'\n + ' fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units'\n + ' fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized'\n + ' gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide'\n + ' gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym'\n + ' geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean'\n + ' geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string'\n + ' get_pixel get_plot_option get_tex_environment get_tex_environment_default'\n + ' get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close'\n + ' gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum'\n + ' gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import'\n + ' graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery'\n + ' graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph'\n + ' grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path'\n + ' hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite'\n + ' hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description'\n + ' hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph'\n + ' icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy'\n + ' ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart'\n + ' imetric implicit implicit_derivative implicit_plot indexed_tensor indices'\n + ' induced_subgraph inferencep inference_result infix info_display init_atensor'\n + ' init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions'\n + ' integrate intersect intersection intervalp intopois intosum invariant1 invariant2'\n + ' inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc'\n + ' inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns'\n + ' inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint'\n + ' invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph'\n + ' is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate'\n + ' isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph'\n + ' items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc'\n + ' jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd'\n + ' jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill'\n + ' killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis'\n + ' kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform'\n + ' kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete'\n + ' kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace'\n + ' kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2'\n + ' kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson'\n + ' kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange'\n + ' laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp'\n + ' lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length'\n + ' let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit'\n + ' Lindstedt linear linearinterpol linear_program linear_regression line_graph'\n + ' linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials'\n + ' listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry'\n + ' log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst'\n + ' lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact'\n + ' lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub'\n + ' lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma'\n + ' make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country'\n + ' make_polygon make_random_state make_rgb_picture makeset make_string_input_stream'\n + ' make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom'\n + ' maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display'\n + ' mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker'\n + ' max max_clique max_degree max_flow maximize_lp max_independent_set max_matching'\n + ' maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform'\n + ' mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete'\n + ' mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic'\n + ' mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t'\n + ' mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull'\n + ' median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree'\n + ' min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor'\n + ' minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton'\n + ' mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions'\n + ' multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff'\n + ' multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary'\n + ' natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext'\n + ' newdet new_graph newline newton new_variable next_prime nicedummies niceindices'\n + ' ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp'\n + ' nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst'\n + ' nthroot nullity nullspace num numbered_boundaries numberp number_to_octets'\n + ' num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai'\n + ' nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin'\n + ' oid_to_octets op opena opena_binary openr openr_binary openw openw_binary'\n + ' operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless'\n + ' orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap'\n + ' out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface'\n + ' parg parGosper parse_string parse_timedate part part2cont partfrac partition'\n + ' partition_set partpol path_digraph path_graph pathname_directory pathname_name'\n + ' pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform'\n + ' pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete'\n + ' pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal'\n + ' pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal'\n + ' pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t'\n + ' pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph'\n + ' petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding'\n + ' playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff'\n + ' poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar'\n + ' polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion'\n + ' poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal'\n + ' poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal'\n + ' poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation'\n + ' poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm'\n + ' poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form'\n + ' poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part'\n + ' poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension'\n + ' poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod'\n + ' powerseries powerset prefix prev_prime primep primes principal_components'\n + ' print printf printfile print_graph printpois printprops prodrac product properties'\n + ' propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct'\n + ' puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp'\n + ' quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile'\n + ' quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2'\n + ' quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f'\n + ' quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel'\n + ' quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal'\n + ' quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t'\n + ' quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t'\n + ' quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan'\n + ' radius random random_bernoulli random_beta random_binomial random_bipartite_graph'\n + ' random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform'\n + ' random_exp random_f random_gamma random_general_finite_discrete random_geometric'\n + ' random_graph random_graph1 random_gumbel random_hypergeometric random_laplace'\n + ' random_logistic random_lognormal random_negative_binomial random_network'\n + ' random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto'\n + ' random_permutation random_poisson random_rayleigh random_regular_graph random_student_t'\n + ' random_tournament random_tree random_weibull range rank rat ratcoef ratdenom'\n + ' ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump'\n + ' ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array'\n + ' read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline'\n + ' read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate'\n + ' realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar'\n + ' rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus'\n + ' rem remainder remarray rembox remcomps remcon remcoord remfun remfunction'\n + ' remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions'\n + ' remove_fundamental_units remove_plot_option remove_vertex rempart remrule'\n + ' remsym remvalue rename rename_file reset reset_displays residue resolvante'\n + ' resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein'\n + ' resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer'\n + ' rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann'\n + ' rinvariant risch rk rmdir rncombine romberg room rootscontract round row'\n + ' rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i'\n + ' scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description'\n + ' scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second'\n + ' sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight'\n + ' setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state'\n + ' set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications'\n + ' set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path'\n + ' show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform'\n + ' simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert'\n + ' sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial'\n + ' skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp'\n + ' skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric'\n + ' skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic'\n + ' skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t'\n + ' skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t'\n + ' skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph'\n + ' smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve'\n + ' solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export'\n + ' sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1'\n + ' spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition'\n + ' sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus'\n + ' ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot'\n + ' starplot_description status std std1 std_bernoulli std_beta std_binomial'\n + ' std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma'\n + ' std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace'\n + ' std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t'\n + ' std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull'\n + ' stemplot stirling stirling1 stirling2 strim striml strimr string stringout'\n + ' stringp strong_components struve_h struve_l sublis sublist sublist_indices'\n + ' submatrix subsample subset subsetp subst substinpart subst_parallel substpart'\n + ' substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext'\n + ' symbolp symmdifference symmetricp system take_channel take_inference tan'\n + ' tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract'\n + ' tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference'\n + ' test_normality test_proportion test_proportions_difference test_rank_sum'\n + ' test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display'\n + ' texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter'\n + ' toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep'\n + ' totalfourier totient tpartpol trace tracematrix trace_options transform_sample'\n + ' translate translate_file transpose treefale tree_reduce treillis treinat'\n + ' triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate'\n + ' truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph'\n + ' truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget'\n + ' ultraspherical underlying_graph undiff union unique uniteigenvectors unitp'\n + ' units unit_step unitvector unorder unsum untellrat untimer'\n + ' untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli'\n + ' var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform'\n + ' var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel'\n + ' var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial'\n + ' var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson'\n + ' var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp'\n + ' verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance'\n + ' vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle'\n + ' vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j'\n + ' wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian'\n + ' xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta'\n + ' zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors'\n + ' zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table'\n + ' absboxchar activecontexts adapt_depth additive adim aform algebraic'\n + ' algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic'\n + ' animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar'\n + ' asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top'\n + ' azimuth background background_color backsubst berlefact bernstein_explicit'\n + ' besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest'\n + ' border boundaries_array box boxchar breakup %c capping cauchysum cbrange'\n + ' cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics'\n + ' colorbox columns commutative complex cone context contexts contour contour_levels'\n + ' cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp'\n + ' cube current_let_rule_package cylinder data_file_name debugmode decreasing'\n + ' default_let_rule_package delay dependencies derivabbrev derivsubst detout'\n + ' diagmetric diff dim dimensions dispflag display2d|10 display_format_internal'\n + ' distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor'\n + ' doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules'\n + ' dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart'\n + ' edge_color edge_coloring edge_partition edge_type edge_width %edispflag'\n + ' elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer'\n + ' epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type'\n + ' %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand'\n + ' expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine'\n + ' factlim factorflag factorial_expand factors_only fb feature features'\n + ' file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10'\n + ' file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color'\n + ' fill_density filled_func fixed_vertices flipflag float2bf font font_size'\n + ' fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim'\n + ' gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command'\n + ' gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command'\n + ' gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command'\n + ' gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble'\n + ' gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args'\n + ' Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both'\n + ' head_length head_type height hypergeometric_representation %iargs ibase'\n + ' icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form'\n + ' ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval'\n + ' infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued'\n + ' integrate_use_rootsof integration_constant integration_constant_counter interpolate_color'\n + ' intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr'\n + ' julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment'\n + ' label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max'\n + ' leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear'\n + ' linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params'\n + ' linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname'\n + ' loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx'\n + ' logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros'\n + ' mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult'\n + ' matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10'\n + ' maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint'\n + ' maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp'\n + ' mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver'\n + ' modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag'\n + ' newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc'\n + ' noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np'\n + ' npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties'\n + ' opsubst optimprefix optionset orientation origin orthopoly_returns_intervals'\n + ' outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution'\n + ' %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart'\n + ' png_file pochhammer_max_index points pointsize point_size points_joined point_type'\n + ' poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm'\n + ' poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list'\n + ' poly_secondary_elimination_order poly_top_reduction_only posfun position'\n + ' powerdisp pred prederror primep_number_of_tests product_use_gamma program'\n + ' programmode promote_float_to_bigfloat prompt proportional_axes props psexpand'\n + ' ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof'\n + ' ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann'\n + ' ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw'\n + ' refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs'\n + ' rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy'\n + ' same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck'\n + ' setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width'\n + ' show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type'\n + ' show_vertices show_weight simp simplified_output simplify_products simpproduct'\n + ' simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn'\n + ' solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag'\n + ' stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda'\n + ' subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric'\n + ' tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials'\n + ' tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch'\n + ' tr track transcompile transform transform_xy translate_fast_arrays transparent'\n + ' transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex'\n + ' tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign'\n + ' trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars'\n + ' tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode'\n + ' tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes'\n + ' ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble'\n + ' usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition'\n + ' vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface'\n + ' wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel'\n + ' xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate'\n + ' xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel'\n + ' xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width'\n + ' ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis'\n + ' ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis'\n + ' yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob'\n + ' zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest';\n var SYMBOLS = '_ __ %|0 %%|0';\n\n return {\n lexemes: '[A-Za-z_%][0-9A-Za-z_%]*',\n keywords: {\n keyword: KEYWORDS,\n literal: LITERALS,\n built_in: BUILTIN_FUNCTIONS,\n symbol: SYMBOLS,\n },\n contains: [\n {\n className: 'comment',\n begin: '/\\\\*',\n end: '\\\\*/',\n contains: ['self']\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n relevance: 0,\n variants: [\n {\n // float number w/ exponent\n // hmm, I wonder if we ought to include other exponent markers?\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Ee][-+]?\\\\d+\\\\b',\n },\n {\n // bigfloat number\n begin: '\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Bb][-+]?\\\\d+\\\\b',\n relevance: 10\n },\n {\n // float number w/out exponent\n // Doesn't seem to recognize floats which start with '.'\n begin: '\\\\b(\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)\\\\b',\n },\n {\n // integer in base up to 36\n // Doesn't seem to recognize integers which end with '.'\n begin: '\\\\b(\\\\d+|0[0-9A-Za-z]+)\\\\.?\\\\b',\n }\n ]\n }\n ],\n illegal: /@/\n }\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'int float string vector matrix if else switch case default while do for in break ' +\n 'continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic ' +\n 'addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey ' +\n 'affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve ' +\n 'alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor ' +\n 'animDisplay animView annotate appendStringArray applicationName applyAttrPreset ' +\n 'applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx ' +\n 'artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu ' +\n 'artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand ' +\n 'assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface ' +\n 'attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu ' +\n 'attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp ' +\n 'attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery ' +\n 'autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults ' +\n 'bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership ' +\n 'bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType ' +\n 'boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu ' +\n 'buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge ' +\n 'cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch ' +\n 'catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox ' +\n 'character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp ' +\n 'checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip ' +\n 'clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore ' +\n 'closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter ' +\n 'cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color ' +\n 'colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp ' +\n 'colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem ' +\n 'componentEditor compositingInterop computePolysetVolume condition cone confirmDialog ' +\n 'connectAttr connectControl connectDynamic connectJoint connectionInfo constrain ' +\n 'constrainValue constructionHistory container containsMultibyte contextInfo control ' +\n 'convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation ' +\n 'convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache ' +\n 'cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel ' +\n 'cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver ' +\n 'cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor ' +\n 'createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer ' +\n 'createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse ' +\n 'currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx ' +\n 'curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface ' +\n 'curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox ' +\n 'defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete ' +\n 'deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes ' +\n 'delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo ' +\n 'dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable ' +\n 'disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected ' +\n 'displayColor displayCull displayLevelOfDetail displayPref displayRGBColor ' +\n 'displaySmoothness displayStats displayString displaySurface distanceDimContext ' +\n 'distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct ' +\n 'doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator ' +\n 'duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression ' +\n 'dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor ' +\n 'dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers ' +\n 'editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor ' +\n 'editorTemplate effector emit emitter enableDevice encodeString endString endsWith env ' +\n 'equivalent equivalentTol erf error eval evalDeferred evalEcho event ' +\n 'exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp ' +\n 'expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof ' +\n 'fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo ' +\n 'filetest filletCurve filter filterCurve filterExpand filterStudioImport ' +\n 'findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster ' +\n 'finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar ' +\n 'floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo ' +\n 'fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint ' +\n 'frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss ' +\n 'geometryConstraint getApplicationVersionAsFloat getAttr getClassification ' +\n 'getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes ' +\n 'getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender ' +\n 'glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl ' +\n 'gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid ' +\n 'gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap ' +\n 'HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor ' +\n 'HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached ' +\n 'HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel ' +\n 'headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey ' +\n 'hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender ' +\n 'hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox ' +\n 'iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ' +\n 'ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ' +\n 'ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform ' +\n 'insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance ' +\n 'instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp ' +\n 'interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf ' +\n 'isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect ' +\n 'itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx ' +\n 'jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner ' +\n 'keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx ' +\n 'keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx ' +\n 'keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx ' +\n 'keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor ' +\n 'layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList ' +\n 'lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep ' +\n 'listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory ' +\n 'listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation ' +\n 'listNodeTypes listPanelCategories listRelatives listSets listTransforms ' +\n 'listUnselected listerEditor loadFluid loadNewShelf loadPlugin ' +\n 'loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log ' +\n 'longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive ' +\n 'makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext ' +\n 'manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx ' +\n 'manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout ' +\n 'menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp ' +\n 'mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move ' +\n 'moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute ' +\n 'nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast ' +\n 'nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint ' +\n 'normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect ' +\n 'nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref ' +\n 'nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType ' +\n 'objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface ' +\n 'offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit ' +\n 'orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier ' +\n 'paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration ' +\n 'panelHistory paramDimContext paramDimension paramLocator parent parentConstraint ' +\n 'particle particleExists particleInstancer particleRenderInfo partition pasteKey ' +\n 'pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture ' +\n 'pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo ' +\n 'pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult ' +\n 'pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend ' +\n 'polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal ' +\n 'polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge ' +\n 'polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge ' +\n 'polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet ' +\n 'polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet ' +\n 'polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection ' +\n 'polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge ' +\n 'polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet ' +\n 'polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix ' +\n 'polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut ' +\n 'polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet ' +\n 'polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge ' +\n 'polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex ' +\n 'polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection ' +\n 'polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection ' +\n 'polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint ' +\n 'polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate ' +\n 'polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge ' +\n 'polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing ' +\n 'polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet ' +\n 'polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace ' +\n 'popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer ' +\n 'projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx ' +\n 'propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd ' +\n 'python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection ' +\n 'radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl ' +\n 'readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference ' +\n 'referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE ' +\n 'registerPluginResource rehash reloadImage removeJoint removeMultiInstance ' +\n 'removePanelCategory rename renameAttr renameSelectionList renameUI render ' +\n 'renderGlobalsNode renderInfo renderLayerButton renderLayerParent ' +\n 'renderLayerPostProcess renderLayerUnparent renderManip renderPartition ' +\n 'renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor ' +\n 'renderWindowSelectContext renderer reorder reorderDeformers requires reroot ' +\n 'resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget ' +\n 'reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx ' +\n 'rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout ' +\n 'runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage ' +\n 'saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale ' +\n 'scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor ' +\n 'sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable ' +\n 'scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt ' +\n 'searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey ' +\n 'selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType ' +\n 'selectedNodes selectionConnection separator setAttr setAttrEnumResource ' +\n 'setAttrMapping setAttrNiceNameResource setConstraintRestPosition ' +\n 'setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr ' +\n 'setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe ' +\n 'setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag ' +\n 'setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject ' +\n 'setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets ' +\n 'shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare ' +\n 'shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField ' +\n 'shortNameOf showHelp showHidden showManipCtx showSelectionInTitle ' +\n 'showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface ' +\n 'size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep ' +\n 'snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound ' +\n 'soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort ' +\n 'spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString ' +\n 'startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp ' +\n 'stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex ' +\n 'stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex ' +\n 'stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString ' +\n 'stringToStringArray strip stripPrefixFromName stroke subdAutoProjection ' +\n 'subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV ' +\n 'subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror ' +\n 'subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease ' +\n 'subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring ' +\n 'surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton ' +\n 'symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext ' +\n 'texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext ' +\n 'texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text ' +\n 'textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList ' +\n 'textToShelf textureDisplacePlane textureHairColor texturePlacementContext ' +\n 'textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath ' +\n 'toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower ' +\n 'toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper ' +\n 'trace track trackCtx transferAttributes transformCompare transformLimits translator ' +\n 'trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence ' +\n 'twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit ' +\n 'unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink ' +\n 'uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane ' +\n 'viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex ' +\n 'waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire ' +\n 'wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform',\n illegal: '</',\n contains: [\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n { // eats variables\n begin: '[\\\\$\\\\%\\\\@](\\\\^\\\\w\\\\b|#\\\\w+|[^\\\\s\\\\w{]|{\\\\w+}|\\\\w+)'\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'module use_module import_module include_module end_module initialise ' +\n 'mutable initialize finalize finalise interface implementation pred ' +\n 'mode func type inst solver any_pred any_func is semidet det nondet ' +\n 'multi erroneous failure cc_nondet cc_multi typeclass instance where ' +\n 'pragma promise external trace atomic or_else require_complete_switch ' +\n 'require_det require_semidet require_multi require_nondet ' +\n 'require_cc_multi require_cc_nondet require_erroneous require_failure',\n meta:\n // pragma\n 'inline no_inline type_spec source_file fact_table obsolete memo ' +\n 'loop_check minimal_model terminates does_not_terminate ' +\n 'check_termination promise_equivalent_clauses ' +\n // preprocessor\n 'foreign_proc foreign_decl foreign_code foreign_type ' +\n 'foreign_import_module foreign_export_enum foreign_export ' +\n 'foreign_enum may_call_mercury will_not_call_mercury thread_safe ' +\n 'not_thread_safe maybe_thread_safe promise_pure promise_semipure ' +\n 'tabled_for_io local untrailed trailed attach_to_io_state ' +\n 'can_pass_as_mercury_type stable will_not_throw_exception ' +\n 'may_modify_trail will_not_modify_trail may_duplicate ' +\n 'may_not_duplicate affects_liveness does_not_affect_liveness ' +\n 'doesnt_affect_liveness no_sharing unknown_sharing sharing',\n built_in:\n 'some all not if then else true fail false try catch catch_any ' +\n 'semidet_true semidet_false semidet_fail impure_true impure semipure'\n };\n\n var COMMENT = hljs.COMMENT('%', '$');\n\n var NUMCODE = {\n className: 'number',\n begin: \"0'.\\\\|0[box][0-9a-fA-F]*\"\n };\n\n var ATOM = hljs.inherit(hljs.APOS_STRING_MODE, {relevance: 0});\n var STRING = hljs.inherit(hljs.QUOTE_STRING_MODE, {relevance: 0});\n var STRING_FMT = {\n className: 'subst',\n begin: '\\\\\\\\[abfnrtv]\\\\|\\\\\\\\x[0-9a-fA-F]*\\\\\\\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]',\n relevance: 0\n };\n STRING.contains.push(STRING_FMT);\n\n var IMPLICATION = {\n className: 'built_in',\n variants: [\n {begin: '<=>'},\n {begin: '<=', relevance: 0},\n {begin: '=>', relevance: 0},\n {begin: '/\\\\\\\\'},\n {begin: '\\\\\\\\/'}\n ]\n };\n\n var HEAD_BODY_CONJUNCTION = {\n className: 'built_in',\n variants: [\n {begin: ':-\\\\|-->'},\n {begin: '=', relevance: 0}\n ]\n };\n\n return {\n aliases: ['m', 'moo'],\n keywords: KEYWORDS,\n contains: [\n IMPLICATION,\n HEAD_BODY_CONJUNCTION,\n COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n NUMCODE,\n hljs.NUMBER_MODE,\n ATOM,\n STRING,\n {begin: /:-/} // relevance booster\n ]\n };\n};","module.exports = function(hljs) {\n //local labels: %?[FB]?[AT]?\\d{1,2}\\w+\n return {\n case_insensitive: true,\n aliases: ['mips'],\n lexemes: '\\\\.?' + hljs.IDENT_RE,\n keywords: {\n meta:\n //GNU preprocs\n '.2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg ',\n built_in:\n '$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 ' + // integer registers\n '$16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 ' + // integer registers\n 'zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 ' + // integer register aliases\n 't0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 ' + // integer register aliases\n 'k0 k1 gp sp fp ra ' + // integer register aliases\n '$f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 ' + // floating-point registers\n '$f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 ' + // floating-point registers\n 'Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi ' + // Coprocessor 0 registers\n 'HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId ' + // Coprocessor 0 registers\n 'EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ' + // Coprocessor 0 registers\n 'ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt ' // Coprocessor 0 registers\n },\n contains: [\n {\n className: 'keyword',\n begin: '\\\\b('+ //mnemonics\n // 32-bit integer instructions\n 'addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|' +\n 'bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(\\.hb)?|jr(\\.hb)?|lbu?|lhu?|' +\n 'll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|' +\n 'multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|' +\n 'srlv?|subu?|sw[lr]?|xori?|wsbh|' +\n // floating-point instructions\n 'abs\\.[sd]|add\\.[sd]|alnv.ps|bc1[ft]l?|' +\n 'c\\.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et])\\.[sd]|' +\n '(ceil|floor|round|trunc)\\.[lw]\\.[sd]|cfc1|cvt\\.d\\.[lsw]|' +\n 'cvt\\.l\\.[dsw]|cvt\\.ps\\.s|cvt\\.s\\.[dlw]|cvt\\.s\\.p[lu]|cvt\\.w\\.[dls]|' +\n 'div\\.[ds]|ldx?c1|luxc1|lwx?c1|madd\\.[sd]|mfc1|mov[fntz]?\\.[ds]|' +\n 'msub\\.[sd]|mth?c1|mul\\.[ds]|neg\\.[ds]|nmadd\\.[ds]|nmsub\\.[ds]|' +\n 'p[lu][lu]\\.ps|recip\\.fmt|r?sqrt\\.[ds]|sdx?c1|sub\\.[ds]|suxc1|' +\n 'swx?c1|' +\n // system control instructions\n 'break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|' +\n 'rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|' +\n 'tlti?u?|tnei?|wait|wrpgpr'+\n ')',\n end: '\\\\s'\n },\n hljs.COMMENT('[;#]', '$'),\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'',\n end: '[^\\\\\\\\]\\'',\n relevance: 0\n },\n {\n className: 'title',\n begin: '\\\\|', end: '\\\\|',\n illegal: '\\\\n',\n relevance: 0\n },\n {\n className: 'number',\n variants: [\n {begin: '0x[0-9a-f]+'}, //hex\n {begin: '\\\\b-?\\\\d+'} //bare number\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n {begin: '^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:'}, //GNU MIPS syntax\n {begin: '^\\\\s*[0-9]+:'}, // numbered local labels\n {begin: '[0-9]+[bf]' } // number local label reference (backwards, forwards)\n ],\n relevance: 0\n }\n ],\n illegal: '\\/'\n };\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'environ vocabularies notations constructors definitions ' +\n 'registrations theorems schemes requirements begin end definition ' +\n 'registration cluster existence pred func defpred deffunc theorem ' +\n 'proof let take assume then thus hence ex for st holds consider ' +\n 'reconsider such that and in provided of as from be being by means ' +\n 'equals implies iff redefine define now not or attr is mode ' +\n 'suppose per cases set thesis contradiction scheme reserve struct ' +\n 'correctness compatibility coherence symmetry assymetry ' +\n 'reflexivity irreflexivity connectedness uniqueness commutativity ' +\n 'idempotence involutiveness projectivity',\n contains: [\n hljs.COMMENT('::', '$')\n ]\n };\n};","module.exports = function(hljs) {\n var PERL_KEYWORDS = 'getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ' +\n 'ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime ' +\n 'readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qq' +\n 'fileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent ' +\n 'shutdown dump chomp connect getsockname die socketpair close flock exists index shmget' +\n 'sub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr ' +\n 'unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 ' +\n 'getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline ' +\n 'endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand ' +\n 'mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink ' +\n 'getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr ' +\n 'untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link ' +\n 'getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller ' +\n 'lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and ' +\n 'sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 ' +\n 'chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach ' +\n 'tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedir' +\n 'ioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe ' +\n 'atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when';\n var SUBST = {\n className: 'subst',\n begin: '[$@]\\\\{', end: '\\\\}',\n keywords: PERL_KEYWORDS\n };\n var METHOD = {\n begin: '->{', end: '}'\n // contains defined later\n };\n var VAR = {\n variants: [\n {begin: /\\$\\d/},\n {begin: /[\\$%@](\\^\\w\\b|#\\w+(::\\w+)*|{\\w+}|\\w+(::\\w*)*)/},\n {begin: /[\\$%@][^\\s\\w{]/, relevance: 0}\n ]\n };\n var STRING_CONTAINS = [hljs.BACKSLASH_ESCAPE, SUBST, VAR];\n var PERL_DEFAULT_CONTAINS = [\n VAR,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n '^\\\\=\\\\w',\n '\\\\=cut',\n {\n endsWithParent: true\n }\n ),\n METHOD,\n {\n className: 'string',\n contains: STRING_CONTAINS,\n variants: [\n {\n begin: 'q[qwxr]?\\\\s*\\\\(', end: '\\\\)',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\[', end: '\\\\]',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\{', end: '\\\\}',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\|', end: '\\\\|',\n relevance: 5\n },\n {\n begin: 'q[qwxr]?\\\\s*\\\\<', end: '\\\\>',\n relevance: 5\n },\n {\n begin: 'qw\\\\s+q', end: 'q',\n relevance: 5\n },\n {\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"', end: '\"'\n },\n {\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '{\\\\w+}',\n contains: [],\n relevance: 0\n },\n {\n begin: '\\-?\\\\w+\\\\s*\\\\=\\\\>',\n contains: [],\n relevance: 0\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n { // regexp container\n begin: '(\\\\/\\\\/|' + hljs.RE_STARTERS_RE + '|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*',\n keywords: 'split return print reverse grep',\n relevance: 0,\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'regexp',\n begin: '(s|tr|y)/(\\\\\\\\.|[^/])*/(\\\\\\\\.|[^/])*/[a-z]*',\n relevance: 10\n },\n {\n className: 'regexp',\n begin: '(m|qr)?/', end: '/[a-z]*',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0 // allows empty \"//\" which is a common comment delimiter in other languages\n }\n ]\n },\n {\n className: 'function',\n beginKeywords: 'sub', end: '(\\\\s*\\\\(.*?\\\\))?[;{]', excludeEnd: true,\n relevance: 5,\n contains: [hljs.TITLE_MODE]\n },\n {\n begin: '-\\\\w\\\\b',\n relevance: 0\n },\n {\n begin: \"^__DATA__$\",\n end: \"^__END__$\",\n subLanguage: 'mojolicious',\n contains: [\n {\n begin: \"^@@.*\",\n end: \"$\",\n className: \"comment\"\n }\n ]\n }\n ];\n SUBST.contains = PERL_DEFAULT_CONTAINS;\n METHOD.contains = PERL_DEFAULT_CONTAINS;\n\n return {\n aliases: ['pl', 'pm'],\n lexemes: /[\\w\\.]+/,\n keywords: PERL_KEYWORDS,\n contains: PERL_DEFAULT_CONTAINS\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n className: 'meta',\n begin: '^__(END|DATA)__$'\n },\n // mojolicious line\n {\n begin: \"^\\\\s*%{1,2}={0,2}\", end: '$',\n subLanguage: 'perl'\n },\n // mojolicious block\n {\n begin: \"<%{1,2}={0,2}\",\n end: \"={0,1}%>\",\n subLanguage: 'perl',\n excludeBegin: true,\n excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {\n begin: '[$][a-fA-F0-9]+'\n },\n hljs.NUMBER_MODE\n ]\n };\n\n return {\n case_insensitive: true,\n keywords: {\n keyword: 'public private property continue exit extern new try catch ' +\n 'eachin not abstract final select case default const local global field ' +\n 'end if then else elseif endif while wend repeat until forever for ' +\n 'to step next return module inline throw import',\n\n built_in: 'DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil ' +\n 'Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI',\n\n literal: 'true false null and or shl shr mod'\n },\n illegal: /\\/\\*/,\n contains: [\n hljs.COMMENT('#rem', '#end'),\n hljs.COMMENT(\n \"'\",\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'function method', end: '[(=:]|$',\n illegal: /\\n/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '$',\n contains: [\n {\n beginKeywords: 'extends implements'\n },\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n className: 'built_in',\n begin: '\\\\b(self|super)\\\\b'\n },\n {\n className: 'meta',\n begin: '\\\\s*#', end: '$',\n keywords: {'meta-keyword': 'if else elseif endif end then'}\n },\n {\n className: 'meta',\n begin: '^\\\\s*strict\\\\b'\n },\n {\n beginKeywords: 'alias', end: '=',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n hljs.QUOTE_STRING_MODE,\n NUMBER\n ]\n }\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n // Moonscript keywords\n 'if then not for in while do return else elseif break continue switch and or ' +\n 'unless when class extends super local import export from using',\n literal:\n 'true false nil',\n built_in:\n '_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load ' +\n 'loadfile loadstring module next pairs pcall print rawequal rawget rawset require ' +\n 'select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug ' +\n 'io math os package string table'\n };\n var JS_IDENT_RE = '[A-Za-z$_][0-9A-Za-z$_]*';\n var SUBST = {\n className: 'subst',\n begin: /#\\{/, end: /}/,\n keywords: KEYWORDS\n };\n var EXPRESSIONS = [\n hljs.inherit(hljs.C_NUMBER_MODE,\n {starts: {end: '(\\\\s*/)?', relevance: 0}}), // a number tries to eat the following slash to prevent treating it as a regexp\n {\n className: 'string',\n variants: [\n {\n begin: /'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: /\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n }\n ]\n },\n {\n className: 'built_in',\n begin: '@__' + hljs.IDENT_RE\n },\n {\n begin: '@' + hljs.IDENT_RE // relevance booster on par with CoffeeScript\n },\n {\n begin: hljs.IDENT_RE + '\\\\\\\\' + hljs.IDENT_RE // inst\\method\n }\n ];\n SUBST.contains = EXPRESSIONS;\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: JS_IDENT_RE});\n var PARAMS_RE = '(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>';\n var PARAMS = {\n className: 'params',\n begin: '\\\\([^\\\\(]', returnBegin: true,\n /* We need another contained nameless mode to not have every nested\n pair of parens to be called \"params\" */\n contains: [{\n begin: /\\(/, end: /\\)/,\n keywords: KEYWORDS,\n contains: ['self'].concat(EXPRESSIONS)\n }]\n };\n\n return {\n aliases: ['moon'],\n keywords: KEYWORDS,\n illegal: /\\/\\*/,\n contains: EXPRESSIONS.concat([\n hljs.COMMENT('--', '$'),\n {\n className: 'function', // function: -> =>\n begin: '^\\\\s*' + JS_IDENT_RE + '\\\\s*=\\\\s*' + PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [TITLE, PARAMS]\n },\n {\n begin: /[\\(,:=]\\s*/, // anonymous function start\n relevance: 0,\n contains: [\n {\n className: 'function',\n begin: PARAMS_RE, end: '[-=]>',\n returnBegin: true,\n contains: [PARAMS]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class',\n end: '$',\n illegal: /[:=\"\\[\\]]/,\n contains: [\n {\n beginKeywords: 'extends',\n endsWithParent: true,\n illegal: /[:=\"\\[\\]]/,\n contains: [TITLE]\n },\n TITLE\n ]\n },\n {\n className: 'name', // table\n begin: JS_IDENT_RE + ':', end: ':',\n returnBegin: true, returnEnd: true,\n relevance: 0\n }\n ])\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n contains: [\n {\n beginKeywords:\n 'build create index delete drop explain infer|10 insert merge prepare select update upsert|10',\n end: /;/, endsWithParent: true,\n keywords: {\n // Taken from http://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/reservedwords.html\n keyword:\n 'all alter analyze and any array as asc begin between binary boolean break bucket build by call ' +\n 'case cast cluster collate collection commit connect continue correlate cover create database ' +\n 'dataset datastore declare decrement delete derived desc describe distinct do drop each element ' +\n 'else end every except exclude execute exists explain fetch first flatten for force from ' +\n 'function grant group gsi having if ignore ilike in include increment index infer inline inner ' +\n 'insert intersect into is join key keys keyspace known last left let letting like limit lsm map ' +\n 'mapping matched materialized merge minus namespace nest not number object offset on ' +\n 'option or order outer over parse partition password path pool prepare primary private privilege ' +\n 'procedure public raw realm reduce rename return returning revoke right role rollback satisfies ' +\n 'schema select self semi set show some start statistics string system then to transaction trigger ' +\n 'truncate under union unique unknown unnest unset update upsert use user using validate value ' +\n 'valued values via view when where while with within work xor',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/literals.html\n literal:\n 'true false null missing|5',\n // Taken from http://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/functions.html\n built_in:\n 'array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length ' +\n 'array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace ' +\n 'array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull ' +\n 'missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis ' +\n 'date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str ' +\n 'duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str ' +\n 'str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode ' +\n 'base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random ' +\n 'round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values ' +\n 'object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position ' +\n 'regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper ' +\n 'isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n },\n {\n className: 'symbol',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 2\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$\\d+/},\n {begin: /\\$\\{/, end: /}/},\n {begin: '[\\\\$\\\\@]' + hljs.UNDERSCORE_IDENT_RE}\n ]\n };\n var DEFAULT = {\n endsWithParent: true,\n lexemes: '[a-z/_]+',\n keywords: {\n literal:\n 'on off yes no true false none blocked debug info notice warn error crit ' +\n 'select break last permanent redirect kqueue rtsig epoll poll /dev/poll'\n },\n relevance: 0,\n illegal: '=>',\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: /\"/, end: /\"/},\n {begin: /'/, end: /'/}\n ]\n },\n // this swallows entire URLs to avoid detecting numbers within\n {\n begin: '([a-z]+):/', end: '\\\\s', endsWithParent: true, excludeEnd: true,\n contains: [VAR]\n },\n {\n className: 'regexp',\n contains: [hljs.BACKSLASH_ESCAPE, VAR],\n variants: [\n {begin: \"\\\\s\\\\^\", end: \"\\\\s|{|;\", returnEnd: true},\n // regexp locations (~, ~*)\n {begin: \"~\\\\*?\\\\s+\", end: \"\\\\s|{|;\", returnEnd: true},\n // *.example.com\n {begin: \"\\\\*(\\\\.[a-z\\\\-]+)+\"},\n // sub.example.*\n {begin: \"([a-z\\\\-]+\\\\.)+\\\\*\"}\n ]\n },\n // IP\n {\n className: 'number',\n begin: '\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b'\n },\n // units\n {\n className: 'number',\n begin: '\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b',\n relevance: 0\n },\n VAR\n ]\n };\n\n return {\n aliases: ['nginxconf'],\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s+{', returnBegin: true,\n end: '{',\n contains: [\n {\n className: 'section',\n begin: hljs.UNDERSCORE_IDENT_RE\n }\n ],\n relevance: 0\n },\n {\n begin: hljs.UNDERSCORE_IDENT_RE + '\\\\s', end: ';|{', returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: hljs.UNDERSCORE_IDENT_RE,\n starts: DEFAULT\n }\n ],\n relevance: 0\n }\n ],\n illegal: '[^\\\\s\\\\}]'\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['nim'],\n keywords: {\n keyword:\n 'addr and as asm bind block break case cast const continue converter ' +\n 'discard distinct div do elif else end enum except export finally ' +\n 'for from generic if import in include interface is isnot iterator ' +\n 'let macro method mixin mod nil not notin object of or out proc ptr ' +\n 'raise ref return shl shr static template try tuple type using var ' +\n 'when while with without xor yield',\n literal:\n 'shared guarded stdin stdout stderr result true false',\n built_in:\n 'int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float ' +\n 'float32 float64 bool char string cstring pointer expr stmt void ' +\n 'auto any range array openarray varargs seq set clong culong cchar ' +\n 'cschar cshort cint csize clonglong cfloat cdouble clongdouble ' +\n 'cuchar cushort cuint culonglong cstringarray semistatic'\n },\n contains: [ {\n className: 'meta', // Actually pragma\n begin: /{\\./,\n end: /\\.}/,\n relevance: 10\n }, {\n className: 'string',\n begin: /[a-zA-Z]\\w*\"/,\n end: /\"/,\n contains: [{begin: /\"\"/}]\n }, {\n className: 'string',\n begin: /([a-zA-Z]\\w*)?\"\"\"/,\n end: /\"\"\"/\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'type',\n begin: /\\b[A-Z]\\w+\\b/,\n relevance: 0\n }, {\n className: 'number',\n relevance: 0,\n variants: [\n {begin: /\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?/},\n {begin: /\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?/},\n {begin: /\\b(\\d[_\\d]*)('?[iIuUfF](8|16|32|64))?/}\n ]\n },\n hljs.HASH_COMMENT_MODE\n ]\n }\n};","module.exports = function(hljs) {\n var NIX_KEYWORDS = {\n keyword:\n 'rec with let in inherit assert if else then',\n literal:\n 'true false or and null',\n built_in:\n 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +\n 'toString derivation'\n };\n var ANTIQUOTE = {\n className: 'subst',\n begin: /\\$\\{/,\n end: /}/,\n keywords: NIX_KEYWORDS\n };\n var ATTRS = {\n begin: /[a-zA-Z0-9-_]+(\\s*=)/, returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'attr',\n begin: /\\S+/\n }\n ]\n };\n var STRING = {\n className: 'string',\n contains: [ANTIQUOTE],\n variants: [\n {begin: \"''\", end: \"''\"},\n {begin: '\"', end: '\"'}\n ]\n };\n var EXPRESSIONS = [\n hljs.NUMBER_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n ATTRS\n ];\n ANTIQUOTE.contains = EXPRESSIONS;\n return {\n aliases: [\"nixos\"],\n keywords: NIX_KEYWORDS,\n contains: EXPRESSIONS\n };\n};","module.exports = function(hljs) {\n var CONSTANTS = {\n className: 'variable',\n begin: /\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)/\n };\n\n var DEFINES = {\n // ${defines}\n className: 'variable',\n begin: /\\$+{[\\w\\.:-]+}/\n };\n\n var VARIABLES = {\n // $variables\n className: 'variable',\n begin: /\\$+\\w+/,\n illegal: /\\(\\){}/\n };\n\n var LANGUAGES = {\n // $(language_strings)\n className: 'variable',\n begin: /\\$+\\([\\w\\^\\.:-]+\\)/\n };\n\n var PARAMETERS = {\n // command parameters\n className: 'params',\n begin: '(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)'\n };\n\n var COMPILER = {\n // !compiler_flags\n className: 'keyword',\n begin: /\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)/\n };\n\n var METACHARS = {\n // $\\n, $\\r, $\\t, $$\n className: 'meta',\n begin: /\\$(\\\\[nrt]|\\$)/\n };\n\n var PLUGINS = {\n // plug::ins\n className: 'class',\n begin: /\\w+\\:\\:\\w+/\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"'\n },\n {\n begin: '\\'', end: '\\''\n },\n {\n begin: '`', end: '`'\n }\n ],\n illegal: /\\n/,\n contains: [\n METACHARS,\n CONSTANTS,\n DEFINES,\n VARIABLES,\n LANGUAGES\n ]\n };\n\n return {\n case_insensitive: false,\n keywords: {\n keyword:\n 'Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle',\n literal:\n 'admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'function',\n beginKeywords: 'Function PageEx Section SectionGroup', end: '$'\n },\n STRING,\n COMPILER,\n DEFINES,\n VARIABLES,\n LANGUAGES,\n PARAMETERS,\n PLUGINS,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var API_CLASS = {\n className: 'built_in',\n begin: '\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+',\n };\n var OBJC_KEYWORDS = {\n keyword:\n 'int float while char export sizeof typedef const struct for union ' +\n 'unsigned long volatile static bool mutable if do return goto void ' +\n 'enum else break extern asm case short default double register explicit ' +\n 'signed typename this switch continue wchar_t inline readonly assign ' +\n 'readwrite self @synchronized id typeof ' +\n 'nonatomic super unichar IBOutlet IBAction strong weak copy ' +\n 'in out inout bycopy byref oneway __strong __weak __block __autoreleasing ' +\n '@private @protected @public @try @property @end @throw @catch @finally ' +\n '@autoreleasepool @synthesize @dynamic @selector @optional @required ' +\n '@encode @package @import @defs @compatibility_alias ' +\n '__bridge __bridge_transfer __bridge_retained __bridge_retain ' +\n '__covariant __contravariant __kindof ' +\n '_Nonnull _Nullable _Null_unspecified ' +\n '__FUNCTION__ __PRETTY_FUNCTION__ __attribute__ ' +\n 'getter setter retain unsafe_unretained ' +\n 'nonnull nullable null_unspecified null_resettable class instancetype ' +\n 'NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER ' +\n 'NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED ' +\n 'NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE ' +\n 'NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END ' +\n 'NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW ' +\n 'NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN',\n literal:\n 'false true FALSE TRUE nil YES NO NULL',\n built_in:\n 'BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once'\n };\n var LEXEMES = /[a-zA-Z@][a-zA-Z0-9_]*/;\n var CLASS_KEYWORDS = '@interface @class @protocol @implementation';\n return {\n aliases: ['mm', 'objc', 'obj-c'],\n keywords: OBJC_KEYWORDS,\n lexemes: LEXEMES,\n illegal: '</',\n contains: [\n API_CLASS,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n {\n begin: '@\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\\'', end: '[^\\\\\\\\]\\'',\n illegal: '[^\\\\\\\\][^\\']'\n }\n ]\n },\n {\n className: 'meta',\n begin: '#',\n end: '$',\n contains: [\n {\n className: 'meta-string',\n variants: [\n { begin: '\\\"', end: '\\\"' },\n { begin: '<', end: '>' }\n ]\n }\n ]\n },\n {\n className: 'class',\n begin: '(' + CLASS_KEYWORDS.split(' ').join('|') + ')\\\\b', end: '({|$)', excludeEnd: true,\n keywords: CLASS_KEYWORDS, lexemes: LEXEMES,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n begin: '\\\\.'+hljs.UNDERSCORE_IDENT_RE,\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n /* missing support for heredoc-like string (OCaml 4.0.2+) */\n return {\n aliases: ['ml'],\n keywords: {\n keyword:\n 'and as assert asr begin class constraint do done downto else end ' +\n 'exception external for fun function functor if in include ' +\n 'inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method ' +\n 'mod module mutable new object of open! open or private rec sig struct ' +\n 'then to try type val! val virtual when while with ' +\n /* camlp4 */\n 'parser value',\n built_in:\n /* built-in types */\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit ' +\n /* (some) types in Pervasives */\n 'in_channel out_channel ref',\n literal:\n 'true false'\n },\n illegal: /\\/\\/|>>/,\n lexemes: '[a-z_]\\\\w*!?',\n contains: [\n {\n className: 'literal',\n begin: '\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)',\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self']\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with '*/\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*', relevance: 0\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /[-=]>/ // relevance booster\n }\n ]\n }\n};","module.exports = function(hljs) {\n\tvar SPECIAL_VARS = {\n\t\tclassName: 'keyword',\n\t\tbegin: '\\\\$(f[asn]|t|vp[rtd]|children)'\n\t},\n\tLITERALS = {\n\t\tclassName: 'literal',\n\t\tbegin: 'false|true|PI|undef'\n\t},\n\tNUMBERS = {\n\t\tclassName: 'number',\n\t\tbegin: '\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?', //adds 1e5, 1e-10\n\t\trelevance: 0\n\t},\n\tSTRING = hljs.inherit(hljs.QUOTE_STRING_MODE,{illegal: null}),\n\tPREPRO = {\n\t\tclassName: 'meta',\n\t\tkeywords: {'meta-keyword': 'include use'},\n\t\tbegin: 'include|use <',\n\t\tend: '>'\n\t},\n\tPARAMS = {\n\t\tclassName: 'params',\n\t\tbegin: '\\\\(', end: '\\\\)',\n\t\tcontains: ['self', NUMBERS, STRING, SPECIAL_VARS, LITERALS]\n\t},\n\tMODIFIERS = {\n\t\tbegin: '[*!#%]',\n\t\trelevance: 0\n\t},\n\tFUNCTIONS = {\n\t\tclassName: 'function',\n\t\tbeginKeywords: 'module function',\n\t\tend: '\\\\=|\\\\{',\n\t\tcontains: [PARAMS, hljs.UNDERSCORE_TITLE_MODE]\n\t};\n\n\treturn {\n\t\taliases: ['scad'],\n\t\tkeywords: {\n\t\t\tkeyword: 'function module include use for intersection_for if else \\\\%',\n\t\t\tliteral: 'false true PI undef',\n\t\t\tbuilt_in: 'circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign'\n\t\t},\n\t\tcontains: [\n\t\t\thljs.C_LINE_COMMENT_MODE,\n\t\t\thljs.C_BLOCK_COMMENT_MODE,\n\t\t\tNUMBERS,\n\t\t\tPREPRO,\n\t\t\tSTRING,\n\t\t\tSPECIAL_VARS,\n\t\t\tMODIFIERS,\n\t\t\tFUNCTIONS\n\t\t]\n\t}\n};","module.exports = function(hljs) {\n var OXYGENE_KEYWORDS = 'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue '+\n 'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false '+\n 'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited '+\n 'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of '+\n 'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly '+\n 'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple '+\n 'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal '+\n 'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained';\n var CURLY_COMMENT = hljs.COMMENT(\n '{',\n '}',\n {\n relevance: 0\n }\n );\n var PAREN_COMMENT = hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n relevance: 10\n }\n );\n var STRING = {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [{begin: '\\'\\''}]\n };\n var CHAR_STRING = {\n className: 'string', begin: '(#\\\\d+)+'\n };\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'function constructor destructor procedure method', end: '[:;]',\n keywords: 'function constructor|10 destructor|10 procedure|10 method|10',\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n keywords: OXYGENE_KEYWORDS,\n contains: [STRING, CHAR_STRING]\n },\n CURLY_COMMENT, PAREN_COMMENT\n ]\n };\n return {\n case_insensitive: true,\n lexemes: /\\.?\\w+/,\n keywords: OXYGENE_KEYWORDS,\n illegal: '(\"|\\\\$[G-Zg-z]|\\\\/\\\\*|</|=>|->)',\n contains: [\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n STRING, CHAR_STRING,\n hljs.NUMBER_MODE,\n FUNCTION,\n {\n className: 'class',\n begin: '=\\\\bclass\\\\b', end: 'end;',\n keywords: OXYGENE_KEYWORDS,\n contains: [\n STRING, CHAR_STRING,\n CURLY_COMMENT, PAREN_COMMENT, hljs.C_LINE_COMMENT_MODE,\n FUNCTION\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var CURLY_SUBCOMMENT = hljs.COMMENT(\n '{',\n '}',\n {\n contains: ['self']\n }\n );\n return {\n subLanguage: 'xml', relevance: 0,\n contains: [\n hljs.COMMENT('^#', '$'),\n hljs.COMMENT(\n '\\\\^rem{',\n '}',\n {\n relevance: 10,\n contains: [\n CURLY_SUBCOMMENT\n ]\n }\n ),\n {\n className: 'meta',\n begin: '^@(?:BASE|USE|CLASS|OPTIONS)$',\n relevance: 10\n },\n {\n className: 'title',\n begin: '@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$'\n },\n {\n className: 'variable',\n begin: '\\\\$\\\\{?[\\\\w\\\\-\\\\.\\\\:]+\\\\}?'\n },\n {\n className: 'keyword',\n begin: '\\\\^[\\\\w\\\\-\\\\.\\\\:]+'\n },\n {\n className: 'number',\n begin: '\\\\^#[0-9a-fA-F]+'\n },\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var MACRO = {\n className: 'variable',\n begin: /\\$[\\w\\d#@][\\w\\d_]*/\n };\n var TABLE = {\n className: 'variable',\n begin: /<(?!\\/)/, end: />/\n };\n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/\n };\n\n return {\n aliases: ['pf.conf'],\n lexemes: /[a-z0-9_<>-]+/,\n keywords: {\n built_in: /* block match pass are \"actions\" in pf.conf(5), the rest are\n * lexically similar top-level commands.\n */\n 'block match pass load anchor|5 antispoof|10 set table',\n keyword:\n 'in out log quick on rdomain inet inet6 proto from port os to route' +\n 'allow-opts divert-packet divert-reply divert-to flags group icmp-type' +\n 'icmp6-type label once probability recieved-on rtable prio queue' +\n 'tos tag tagged user keep fragment for os drop' +\n 'af-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robin' +\n 'source-hash static-port' +\n 'dup-to reply-to route-to' +\n 'parent bandwidth default min max qlimit' +\n 'block-policy debug fingerprints hostid limit loginterface optimization' +\n 'reassemble ruleset-optimization basic none profile skip state-defaults' +\n 'state-policy timeout' +\n 'const counters persist' +\n 'no modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppy' +\n 'source-track global rule max-src-nodes max-src-states max-src-conn' +\n 'max-src-conn-rate overload flush' +\n 'scrub|5 max-mss min-ttl no-df|10 random-id',\n literal:\n 'all any no-route self urpf-failed egress|5 unknown'\n },\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n MACRO,\n TABLE\n ]\n };\n};","module.exports = function(hljs) {\n var COMMENT_MODE = hljs.COMMENT('--', '$');\n var UNQUOTED_IDENT = '[a-zA-Z_][a-zA-Z_0-9$]*';\n var DOLLAR_STRING = '\\\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\$';\n var LABEL = '<<\\\\s*' + UNQUOTED_IDENT + '\\\\s*>>';\n\n var SQL_KW = \n // https://www.postgresql.org/docs/11/static/sql-keywords-appendix.html\n // https://www.postgresql.org/docs/11/static/sql-commands.html\n // SQL commands (starting words)\n 'ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE ' +\n 'DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY ' +\n 'PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW ' +\n 'START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES ' +\n // SQL commands (others)\n 'AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN ' +\n 'WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS ' +\n 'FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM ' +\n 'TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS ' +\n 'METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION ' +\n 'INDEX PROCEDURE ASSERTION ' +\n // additional reserved key words\n 'ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK ' +\n 'COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS ' +\n 'DEFERRABLE RANGE ' +\n 'DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ' +\n 'ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT ' +\n 'NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY ' +\n 'REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN ' +\n 'TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH ' +\n // some of non-reserved (which are used in clauses or as PL/pgSQL keyword)\n 'BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN ' +\n 'BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT ' +\n 'TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN ' +\n 'EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH ' +\n 'REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ' +\n 'ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED ' +\n 'INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 ' +\n 'INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ' +\n 'ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES ' +\n 'RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS ' +\n 'UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF ' +\n // some parameters of VACUUM/ANALYZE/EXPLAIN\n 'FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING ' +\n //\n 'RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED ' +\n 'OF NOTHING NONE EXCLUDE ATTRIBUTE ' +\n // from GRANT (not keywords actually)\n 'USAGE ROUTINES ' +\n // actually literals, but look better this way (due to IS TRUE, IS FALSE, ISNULL etc)\n 'TRUE FALSE NAN INFINITY ';\n\n var ROLE_ATTRS = // only those not in keywrods already\n 'SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT ' +\n 'LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS ';\n\n var PLPGSQL_KW = \n 'ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS ' +\n 'STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT ' +\n 'OPEN ';\n\n var TYPES =\n // https://www.postgresql.org/docs/11/static/datatype.html\n 'BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR ' +\n 'CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 ' +\n 'MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL PATH POINT POLYGON REAL FLOAT4 SMALLINT INT2 ' +\n 'SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 ' +\n 'TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR ' +\n 'INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ' +\n // pseudotypes\n 'ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL ' +\n 'RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR ' +\n // spec. type\n 'NAME ' +\n // OID-types\n 'OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 ' +\n 'REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 ';// +\n // some types from standard extensions\n 'HSTORE|10 LO LTREE|10 ';\n \n var TYPES_RE = \n TYPES.trim()\n .split(' ')\n .map( function(val) { return val.split('|')[0]; } )\n .join('|');\n\n var SQL_BI =\n 'CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP ' +\n 'CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC ';\n\n var PLPGSQL_BI =\n 'FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 ' +\n 'TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ' +\n // get diagnostics\n 'ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME ' +\n 'PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 ' +\n 'PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 ';\n\n var PLPGSQL_EXCEPTIONS =\n // exceptions https://www.postgresql.org/docs/current/static/errcodes-appendix.html\n 'SQLSTATE SQLERRM|10 ' +\n 'SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING ' +\n 'NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED ' +\n 'STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED ' +\n 'SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE ' +\n 'SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION ' +\n 'TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED ' +\n 'INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR ' +\n 'INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION ' +\n 'STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION ' +\n 'DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW ' +\n 'DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW ' +\n 'INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION ' +\n 'INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST ' +\n 'INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE ' +\n 'NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE ' +\n 'INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE ' +\n 'INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT ' +\n 'INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH ' +\n 'NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE ' +\n 'SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION ' +\n 'SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING ' +\n 'FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION ' +\n 'BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT ' +\n 'INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION ' +\n 'INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION ' +\n 'UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE ' +\n 'INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE ' +\n 'HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION ' +\n 'INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION ' +\n 'NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION ' +\n 'SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION ' +\n 'IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME ' +\n 'TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD ' +\n 'DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST ' +\n 'INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT ' +\n 'MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED ' +\n 'READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION ' +\n 'CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED ' +\n 'PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED ' +\n 'EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED ' +\n 'TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED ' +\n 'SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME ' +\n 'INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION ' +\n 'SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED ' +\n 'SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE ' +\n 'GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME ' +\n 'NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH ' +\n 'INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN ' +\n 'UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT ' +\n 'DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION ' +\n 'DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS ' +\n 'DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS ' +\n 'INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION ' +\n 'INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION ' +\n 'INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION ' +\n 'INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL ' +\n 'OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED ' +\n 'STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE ' +\n 'OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION ' +\n 'QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED ' +\n 'SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR ' +\n 'LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED ' +\n 'FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION ' +\n 'FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER ' +\n 'FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS ' +\n 'FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX ' +\n 'FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH ' +\n 'FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES ' +\n 'FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE ' +\n 'FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION ' +\n 'FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR ' +\n 'RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED ' +\n 'INDEX_CORRUPTED ';\n\n var FUNCTIONS =\n // https://www.postgresql.org/docs/11/static/functions-aggregate.html\n 'ARRAY_AGG AVG BIT_AND BIT_OR BOOL_AND BOOL_OR COUNT EVERY JSON_AGG JSONB_AGG JSON_OBJECT_AGG ' +\n 'JSONB_OBJECT_AGG MAX MIN MODE STRING_AGG SUM XMLAGG ' +\n 'CORR COVAR_POP COVAR_SAMP REGR_AVGX REGR_AVGY REGR_COUNT REGR_INTERCEPT REGR_R2 REGR_SLOPE ' +\n 'REGR_SXX REGR_SXY REGR_SYY STDDEV STDDEV_POP STDDEV_SAMP VARIANCE VAR_POP VAR_SAMP ' +\n 'PERCENTILE_CONT PERCENTILE_DISC ' +\n // https://www.postgresql.org/docs/11/static/functions-window.html\n 'ROW_NUMBER RANK DENSE_RANK PERCENT_RANK CUME_DIST NTILE LAG LEAD FIRST_VALUE LAST_VALUE NTH_VALUE ' +\n // https://www.postgresql.org/docs/11/static/functions-comparison.html\n 'NUM_NONNULLS NUM_NULLS ' +\n // https://www.postgresql.org/docs/11/static/functions-math.html\n 'ABS CBRT CEIL CEILING DEGREES DIV EXP FLOOR LN LOG MOD PI POWER RADIANS ROUND SCALE SIGN SQRT ' +\n 'TRUNC WIDTH_BUCKET ' +\n 'RANDOM SETSEED ' +\n 'ACOS ACOSD ASIN ASIND ATAN ATAND ATAN2 ATAN2D COS COSD COT COTD SIN SIND TAN TAND ' +\n // https://www.postgresql.org/docs/11/static/functions-string.html\n 'BIT_LENGTH CHAR_LENGTH CHARACTER_LENGTH LOWER OCTET_LENGTH OVERLAY POSITION SUBSTRING TREAT TRIM UPPER ' +\n 'ASCII BTRIM CHR CONCAT CONCAT_WS CONVERT CONVERT_FROM CONVERT_TO DECODE ENCODE INITCAP' +\n 'LEFT LENGTH LPAD LTRIM MD5 PARSE_IDENT PG_CLIENT_ENCODING QUOTE_IDENT|10 QUOTE_LITERAL|10 ' +\n 'QUOTE_NULLABLE|10 REGEXP_MATCH REGEXP_MATCHES REGEXP_REPLACE REGEXP_SPLIT_TO_ARRAY ' +\n 'REGEXP_SPLIT_TO_TABLE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SPLIT_PART STRPOS SUBSTR ' +\n 'TO_ASCII TO_HEX TRANSLATE ' +\n // https://www.postgresql.org/docs/11/static/functions-binarystring.html\n 'OCTET_LENGTH GET_BIT GET_BYTE SET_BIT SET_BYTE ' +\n // https://www.postgresql.org/docs/11/static/functions-formatting.html\n 'TO_CHAR TO_DATE TO_NUMBER TO_TIMESTAMP ' +\n // https://www.postgresql.org/docs/11/static/functions-datetime.html\n 'AGE CLOCK_TIMESTAMP|10 DATE_PART DATE_TRUNC ISFINITE JUSTIFY_DAYS JUSTIFY_HOURS JUSTIFY_INTERVAL ' +\n 'MAKE_DATE MAKE_INTERVAL|10 MAKE_TIME MAKE_TIMESTAMP|10 MAKE_TIMESTAMPTZ|10 NOW STATEMENT_TIMESTAMP|10 ' +\n 'TIMEOFDAY TRANSACTION_TIMESTAMP|10 ' +\n // https://www.postgresql.org/docs/11/static/functions-enum.html\n 'ENUM_FIRST ENUM_LAST ENUM_RANGE ' +\n // https://www.postgresql.org/docs/11/static/functions-geometry.html\n 'AREA CENTER DIAMETER HEIGHT ISCLOSED ISOPEN NPOINTS PCLOSE POPEN RADIUS WIDTH ' +\n 'BOX BOUND_BOX CIRCLE LINE LSEG PATH POLYGON ' +\n // https://www.postgresql.org/docs/11/static/functions-net.html\n 'ABBREV BROADCAST HOST HOSTMASK MASKLEN NETMASK NETWORK SET_MASKLEN TEXT INET_SAME_FAMILY' +\n 'INET_MERGE MACADDR8_SET7BIT ' +\n // https://www.postgresql.org/docs/11/static/functions-textsearch.html\n 'ARRAY_TO_TSVECTOR GET_CURRENT_TS_CONFIG NUMNODE PLAINTO_TSQUERY PHRASETO_TSQUERY WEBSEARCH_TO_TSQUERY ' +\n 'QUERYTREE SETWEIGHT STRIP TO_TSQUERY TO_TSVECTOR JSON_TO_TSVECTOR JSONB_TO_TSVECTOR TS_DELETE ' +\n 'TS_FILTER TS_HEADLINE TS_RANK TS_RANK_CD TS_REWRITE TSQUERY_PHRASE TSVECTOR_TO_ARRAY ' +\n 'TSVECTOR_UPDATE_TRIGGER TSVECTOR_UPDATE_TRIGGER_COLUMN ' +\n // https://www.postgresql.org/docs/11/static/functions-xml.html\n 'XMLCOMMENT XMLCONCAT XMLELEMENT XMLFOREST XMLPI XMLROOT ' +\n 'XMLEXISTS XML_IS_WELL_FORMED XML_IS_WELL_FORMED_DOCUMENT XML_IS_WELL_FORMED_CONTENT ' +\n 'XPATH XPATH_EXISTS XMLTABLE XMLNAMESPACES ' +\n 'TABLE_TO_XML TABLE_TO_XMLSCHEMA TABLE_TO_XML_AND_XMLSCHEMA ' +\n 'QUERY_TO_XML QUERY_TO_XMLSCHEMA QUERY_TO_XML_AND_XMLSCHEMA ' +\n 'CURSOR_TO_XML CURSOR_TO_XMLSCHEMA ' +\n 'SCHEMA_TO_XML SCHEMA_TO_XMLSCHEMA SCHEMA_TO_XML_AND_XMLSCHEMA ' +\n 'DATABASE_TO_XML DATABASE_TO_XMLSCHEMA DATABASE_TO_XML_AND_XMLSCHEMA ' +\n 'XMLATTRIBUTES ' +\n // https://www.postgresql.org/docs/11/static/functions-json.html\n 'TO_JSON TO_JSONB ARRAY_TO_JSON ROW_TO_JSON JSON_BUILD_ARRAY JSONB_BUILD_ARRAY JSON_BUILD_OBJECT ' +\n 'JSONB_BUILD_OBJECT JSON_OBJECT JSONB_OBJECT JSON_ARRAY_LENGTH JSONB_ARRAY_LENGTH JSON_EACH ' +\n 'JSONB_EACH JSON_EACH_TEXT JSONB_EACH_TEXT JSON_EXTRACT_PATH JSONB_EXTRACT_PATH ' +\n 'JSON_OBJECT_KEYS JSONB_OBJECT_KEYS JSON_POPULATE_RECORD JSONB_POPULATE_RECORD JSON_POPULATE_RECORDSET ' +\n 'JSONB_POPULATE_RECORDSET JSON_ARRAY_ELEMENTS JSONB_ARRAY_ELEMENTS JSON_ARRAY_ELEMENTS_TEXT ' +\n 'JSONB_ARRAY_ELEMENTS_TEXT JSON_TYPEOF JSONB_TYPEOF JSON_TO_RECORD JSONB_TO_RECORD JSON_TO_RECORDSET ' +\n 'JSONB_TO_RECORDSET JSON_STRIP_NULLS JSONB_STRIP_NULLS JSONB_SET JSONB_INSERT JSONB_PRETTY ' +\n // https://www.postgresql.org/docs/11/static/functions-sequence.html\n 'CURRVAL LASTVAL NEXTVAL SETVAL ' +\n // https://www.postgresql.org/docs/11/static/functions-conditional.html\n 'COALESCE NULLIF GREATEST LEAST ' +\n // https://www.postgresql.org/docs/11/static/functions-array.html\n 'ARRAY_APPEND ARRAY_CAT ARRAY_NDIMS ARRAY_DIMS ARRAY_FILL ARRAY_LENGTH ARRAY_LOWER ARRAY_POSITION ' +\n 'ARRAY_POSITIONS ARRAY_PREPEND ARRAY_REMOVE ARRAY_REPLACE ARRAY_TO_STRING ARRAY_UPPER CARDINALITY ' +\n 'STRING_TO_ARRAY UNNEST ' +\n // https://www.postgresql.org/docs/11/static/functions-range.html\n 'ISEMPTY LOWER_INC UPPER_INC LOWER_INF UPPER_INF RANGE_MERGE ' +\n // https://www.postgresql.org/docs/11/static/functions-srf.html\n 'GENERATE_SERIES GENERATE_SUBSCRIPTS ' +\n // https://www.postgresql.org/docs/11/static/functions-info.html\n 'CURRENT_DATABASE CURRENT_QUERY CURRENT_SCHEMA|10 CURRENT_SCHEMAS|10 INET_CLIENT_ADDR INET_CLIENT_PORT ' +\n 'INET_SERVER_ADDR INET_SERVER_PORT ROW_SECURITY_ACTIVE FORMAT_TYPE ' +\n 'TO_REGCLASS TO_REGPROC TO_REGPROCEDURE TO_REGOPER TO_REGOPERATOR TO_REGTYPE TO_REGNAMESPACE TO_REGROLE ' +\n 'COL_DESCRIPTION OBJ_DESCRIPTION SHOBJ_DESCRIPTION ' +\n 'TXID_CURRENT TXID_CURRENT_IF_ASSIGNED TXID_CURRENT_SNAPSHOT TXID_SNAPSHOT_XIP TXID_SNAPSHOT_XMAX ' +\n 'TXID_SNAPSHOT_XMIN TXID_VISIBLE_IN_SNAPSHOT TXID_STATUS ' +\n // https://www.postgresql.org/docs/11/static/functions-admin.html\n 'CURRENT_SETTING SET_CONFIG BRIN_SUMMARIZE_NEW_VALUES BRIN_SUMMARIZE_RANGE BRIN_DESUMMARIZE_RANGE ' +\n 'GIN_CLEAN_PENDING_LIST ' +\n // https://www.postgresql.org/docs/11/static/functions-trigger.html\n 'SUPPRESS_REDUNDANT_UPDATES_TRIGGER ' +\n // ihttps://www.postgresql.org/docs/devel/static/lo-funcs.html\n 'LO_FROM_BYTEA LO_PUT LO_GET LO_CREAT LO_CREATE LO_UNLINK LO_IMPORT LO_EXPORT LOREAD LOWRITE ' +\n //\n 'GROUPING CAST ';\n\n var FUNCTIONS_RE = \n FUNCTIONS.trim()\n .split(' ')\n .map( function(val) { return val.split('|')[0]; } )\n .join('|');\n\n return {\n aliases: ['postgres','postgresql'],\n case_insensitive: true,\n keywords: {\n keyword:\n SQL_KW + PLPGSQL_KW + ROLE_ATTRS,\n built_in:\n SQL_BI + PLPGSQL_BI + PLPGSQL_EXCEPTIONS,\n },\n // Forbid some cunstructs from other languages to improve autodetect. In fact\n // \"[a-z]:\" is legal (as part of array slice), but improbabal.\n illegal: /:==|\\W\\s*\\(\\*|(^|\\s)\\$[a-z]|{{|[a-z]:\\s*$|\\.\\.\\.|TO:|DO:/,\n contains: [\n // special handling of some words, which are reserved only in some contexts\n {\n className: 'keyword',\n variants: [\n { begin: /\\bTEXT\\s*SEARCH\\b/ },\n { begin: /\\b(PRIMARY|FOREIGN|FOR(\\s+NO)?)\\s+KEY\\b/ },\n { begin: /\\bPARALLEL\\s+(UNSAFE|RESTRICTED|SAFE)\\b/ },\n { begin: /\\bSTORAGE\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\b/ },\n { begin: /\\bMATCH\\s+(FULL|PARTIAL|SIMPLE)\\b/ },\n { begin: /\\bNULLS\\s+(FIRST|LAST)\\b/ },\n { begin: /\\bEVENT\\s+TRIGGER\\b/ },\n { begin: /\\b(MAPPING|OR)\\s+REPLACE\\b/ },\n { begin: /\\b(FROM|TO)\\s+(PROGRAM|STDIN|STDOUT)\\b/ },\n { begin: /\\b(SHARE|EXCLUSIVE)\\s+MODE\\b/ },\n { begin: /\\b(LEFT|RIGHT)\\s+(OUTER\\s+)?JOIN\\b/ },\n { begin: /\\b(FETCH|MOVE)\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\b/ },\n { begin: /\\bPRESERVE\\s+ROWS\\b/ },\n { begin: /\\bDISCARD\\s+PLANS\\b/ },\n { begin: /\\bREFERENCING\\s+(OLD|NEW)\\b/ },\n { begin: /\\bSKIP\\s+LOCKED\\b/ },\n { begin: /\\bGROUPING\\s+SETS\\b/ },\n { begin: /\\b(BINARY|INSENSITIVE|SCROLL|NO\\s+SCROLL)\\s+(CURSOR|FOR)\\b/ },\n { begin: /\\b(WITH|WITHOUT)\\s+HOLD\\b/ },\n { begin: /\\bWITH\\s+(CASCADED|LOCAL)\\s+CHECK\\s+OPTION\\b/ },\n { begin: /\\bEXCLUDE\\s+(TIES|NO\\s+OTHERS)\\b/ },\n { begin: /\\bFORMAT\\s+(TEXT|XML|JSON|YAML)\\b/ },\n { begin: /\\bSET\\s+((SESSION|LOCAL)\\s+)?NAMES\\b/ },\n { begin: /\\bIS\\s+(NOT\\s+)?UNKNOWN\\b/ },\n { begin: /\\bSECURITY\\s+LABEL\\b/ },\n { begin: /\\bSTANDALONE\\s+(YES|NO|NO\\s+VALUE)\\b/ },\n { begin: /\\bWITH\\s+(NO\\s+)?DATA\\b/ },\n { begin: /\\b(FOREIGN|SET)\\s+DATA\\b/ },\n { begin: /\\bSET\\s+(CATALOG|CONSTRAINTS)\\b/ },\n { begin: /\\b(WITH|FOR)\\s+ORDINALITY\\b/ },\n { begin: /\\bIS\\s+(NOT\\s+)?DOCUMENT\\b/ },\n { begin: /\\bXML\\s+OPTION\\s+(DOCUMENT|CONTENT)\\b/ },\n { begin: /\\b(STRIP|PRESERVE)\\s+WHITESPACE\\b/ },\n { begin: /\\bNO\\s+(ACTION|MAXVALUE|MINVALUE)\\b/ },\n { begin: /\\bPARTITION\\s+BY\\s+(RANGE|LIST|HASH)\\b/ },\n { begin: /\\bAT\\s+TIME\\s+ZONE\\b/ },\n { begin: /\\bGRANTED\\s+BY\\b/ },\n { begin: /\\bRETURN\\s+(QUERY|NEXT)\\b/ },\n { begin: /\\b(ATTACH|DETACH)\\s+PARTITION\\b/ },\n { begin: /\\bFORCE\\s+ROW\\s+LEVEL\\s+SECURITY\\b/ },\n { begin: /\\b(INCLUDING|EXCLUDING)\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\b/ },\n { begin: /\\bAS\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\b/ }\n ]\n },\n // functions named as keywords, followed by '('\n {\n begin: /\\b(FORMAT|FAMILY|VERSION)\\s*\\(/,\n //keywords: { built_in: 'FORMAT FAMILY VERSION' }\n },\n // INCLUDE ( ... ) in index_parameters in CREATE TABLE\n {\n begin: /\\bINCLUDE\\s*\\(/,\n keywords: 'INCLUDE'\n },\n // not highlight RANGE if not in frame_clause (not 100% correct, but seems satisfactory)\n {\n begin: /\\bRANGE(?!\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))/\n },\n // disable highlighting in commands CREATE AGGREGATE/COLLATION/DATABASE/OPERTOR/TEXT SEARCH .../TYPE\n // and in PL/pgSQL RAISE ... USING\n {\n begin: /\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\s*=/\n },\n // PG_smth; HAS_some_PRIVILEGE\n {\n //className: 'built_in',\n begin: /\\b(PG_\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\b/,\n relevance: 10\n },\n // extract\n {\n begin: /\\bEXTRACT\\s*\\(/,\n end: /\\bFROM\\b/,\n returnEnd: true,\n keywords: {\n //built_in: 'EXTRACT',\n type: 'CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS ' +\n 'MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR ' +\n 'TIMEZONE_MINUTE WEEK YEAR'\n }\n },\n // xmlelement, xmlpi - special NAME\n {\n begin: /\\b(XMLELEMENT|XMLPI)\\s*\\(\\s*NAME/,\n keywords: {\n //built_in: 'XMLELEMENT XMLPI',\n keyword: 'NAME'\n }\n },\n // xmlparse, xmlserialize\n {\n begin: /\\b(XMLPARSE|XMLSERIALIZE)\\s*\\(\\s*(DOCUMENT|CONTENT)/,\n keywords: {\n //built_in: 'XMLPARSE XMLSERIALIZE',\n keyword: 'DOCUMENT CONTENT'\n }\n },\n // Sequences. We actually skip everything between CACHE|INCREMENT|MAXVALUE|MINVALUE and\n // nearest following numeric constant. Without with trick we find a lot of \"keywords\"\n // in 'avrasm' autodetection test...\n {\n beginKeywords: 'CACHE INCREMENT MAXVALUE MINVALUE',\n end: hljs.C_NUMBER_RE,\n returnEnd: true,\n keywords: 'BY CACHE INCREMENT MAXVALUE MINVALUE'\n },\n // WITH|WITHOUT TIME ZONE as part of datatype\n {\n className: 'type',\n begin: /\\b(WITH|WITHOUT)\\s+TIME\\s+ZONE\\b/\n },\n // INTERVAL optional fields\n {\n className: 'type',\n begin: /\\bINTERVAL\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\s+TO\\s+(MONTH|HOUR|MINUTE|SECOND))?\\b/\n },\n // Pseudo-types which allowed only as return type\n {\n begin: /\\bRETURNS\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\b/,\n keywords: {\n keyword: 'RETURNS',\n type: 'LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER'\n }\n },\n // Known functions - only when followed by '('\n {\n begin: '\\\\b(' + FUNCTIONS_RE + ')\\\\s*\\\\('\n //keywords: { built_in: FUNCTIONS }\n },\n // Types\n {\n begin: '\\\\.(' + TYPES_RE + ')\\\\b' // prevent highlight as type, say, 'oid' in 'pgclass.oid'\n },\n {\n begin: '\\\\b(' + TYPES_RE + ')\\\\s+PATH\\\\b', // in XMLTABLE\n keywords: {\n keyword: 'PATH', // hopefully no one would use PATH type in XMLTABLE...\n type: TYPES.replace('PATH ','')\n }\n },\n {\n className: 'type',\n begin: '\\\\b(' + TYPES_RE + ')\\\\b'\n },\n // Strings, see https://www.postgresql.org/docs/11/static/sql-syntax-lexical.html#SQL-SYNTAX-CONSTANTS\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [{begin: '\\'\\''}]\n },\n {\n className: 'string',\n begin: '(e|E|u&|U&)\\'', end: '\\'',\n contains: [{begin: '\\\\\\\\.'}],\n relevance: 10\n },\n {\n begin: DOLLAR_STRING,\n endSameAsBegin: true,\n contains: [\n {\n // actually we want them all except SQL; listed are those with known implementations\n // and XML + JSON just in case\n subLanguage: ['pgsql','perl','python','tcl','r','lua','java','php','ruby','bash','scheme','xml','json'],\n endsWithParent: true\n }\n ]\n },\n // identifiers in quotes\n {\n begin: '\"', end: '\"',\n contains: [{begin: '\"\"'}]\n },\n // numbers\n hljs.C_NUMBER_MODE,\n // comments\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n // PL/pgSQL staff\n // %ROWTYPE, %TYPE, $n\n {\n className: 'meta',\n variants: [\n {begin: '%(ROW)?TYPE', relevance: 10}, // %TYPE, %ROWTYPE\n {begin: '\\\\$\\\\d+'}, // $n\n {begin: '^#\\\\w', end: '$'} // #compiler option\n ]\n },\n // <<labeles>>\n {\n className: 'symbol',\n begin: LABEL,\n relevance: 10\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VARIABLE = {\n begin: '\\\\$+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*'\n };\n var PREPROCESSOR = {\n className: 'meta', begin: /<\\?(php)?|\\?>/\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, PREPROCESSOR],\n variants: [\n {\n begin: 'b\"', end: '\"'\n },\n {\n begin: 'b\\'', end: '\\''\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n };\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n return {\n aliases: ['php', 'php3', 'php4', 'php5', 'php6', 'php7'],\n case_insensitive: true,\n keywords:\n 'and include_once list abstract global private echo interface as static endswitch ' +\n 'array null if endwhile or const for endforeach self var while isset public ' +\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n 'yield finally',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT('//', '$', {contains: [PREPROCESSOR]}),\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler',\n lexemes: hljs.UNDERSCORE_IDENT_RE\n }\n ),\n {\n className: 'string',\n begin: /<<<['\"]?\\w+['\"]?$/, end: /^\\w+;?$/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n variants: [\n {begin: /\\$\\w+/},\n {begin: /\\{\\$/, end: /\\}/}\n ]\n }\n ]\n },\n PREPROCESSOR,\n {\n className: 'keyword', begin: /\\$this\\b/\n },\n VARIABLE,\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n 'self',\n VARIABLE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: /[:\\(\\$\"]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: ';',\n illegal: /[\\.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use', end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n begin: '=>' // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n};","module.exports = function(hljs) {\n return {\n disableAutodetect: true\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'actor addressof and as be break class compile_error compile_intrinsic' +\n 'consume continue delegate digestof do else elseif embed end error' +\n 'for fun if ifdef in interface is isnt lambda let match new not object' +\n 'or primitive recover repeat return struct then trait try type until ' +\n 'use var where while with xor',\n meta:\n 'iso val tag trn box ref',\n literal:\n 'this false true'\n };\n\n var TRIPLE_QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n };\n\n var QUOTE_STRING_MODE = {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n\n var SINGLE_QUOTE_CHAR_MODE = {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE],\n relevance: 0\n };\n\n var TYPE_NAME = {\n className: 'type',\n begin: '\\\\b_?[A-Z][\\\\w]*',\n relevance: 0\n };\n\n var PRIMED_NAME = {\n begin: hljs.IDENT_RE + '\\'', relevance: 0\n };\n\n var CLASS = {\n className: 'class',\n beginKeywords: 'class actor', end: '$',\n contains: [\n hljs.TITLE_MODE,\n hljs.C_LINE_COMMENT_MODE\n ]\n }\n\n var FUNCTION = {\n className: 'function',\n beginKeywords: 'new fun', end: '=>',\n contains: [\n hljs.TITLE_MODE,\n {\n begin: /\\(/, end: /\\)/,\n contains: [\n TYPE_NAME,\n PRIMED_NAME,\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n },\n {\n begin: /:/, endsWithParent: true,\n contains: [TYPE_NAME]\n },\n hljs.C_LINE_COMMENT_MODE\n ]\n }\n\n return {\n keywords: KEYWORDS,\n contains: [\n CLASS,\n FUNCTION,\n TYPE_NAME,\n TRIPLE_QUOTE_STRING_MODE,\n QUOTE_STRING_MODE,\n SINGLE_QUOTE_CHAR_MODE,\n PRIMED_NAME,\n hljs.C_NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var BACKTICK_ESCAPE = {\n begin: '`[\\\\s\\\\S]',\n relevance: 0\n };\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d][\\w\\d_:]*/}\n ]\n };\n var LITERAL = {\n className: 'literal',\n begin: /\\$(null|true|false)\\b/\n };\n var QUOTE_STRING = {\n className: 'string',\n variants: [\n { begin: /\"/, end: /\"/ },\n { begin: /@\"/, end: /^\"@/ }\n ],\n contains: [\n BACKTICK_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$[A-z]/, end: /[^A-z]/\n }\n ]\n };\n var APOS_STRING = {\n className: 'string',\n variants: [\n { begin: /'/, end: /'/ },\n { begin: /@'/, end: /^'@/ }\n ]\n };\n\n var PS_HELPTAGS = {\n className: 'doctag',\n variants: [\n /* no paramater help tags */ \n { begin: /\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ },\n /* one parameter help tags */\n { begin: /\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\s+\\S+/ }\n ]\n };\n var PS_COMMENT = hljs.inherit(\n hljs.COMMENT(null, null),\n {\n variants: [\n /* single-line comment */\n { begin: /#/, end: /$/ },\n /* multi-line comment */\n { begin: /<#/, end: /#>/ }\n ],\n contains: [PS_HELPTAGS]\n }\n );\n\n return {\n aliases: ['ps'],\n lexemes: /-?[A-z\\.\\-]+/,\n case_insensitive: true,\n keywords: {\n keyword: 'if else foreach return function do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch',\n built_in: 'Add-Computer Add-Content Add-History Add-JobTrigger Add-Member Add-PSSnapin Add-Type Checkpoint-Computer Clear-Content Clear-EventLog Clear-History Clear-Host Clear-Item Clear-ItemProperty Clear-Variable Compare-Object Complete-Transaction Connect-PSSession Connect-WSMan Convert-Path ConvertFrom-Csv ConvertFrom-Json ConvertFrom-SecureString ConvertFrom-StringData ConvertTo-Csv ConvertTo-Html ConvertTo-Json ConvertTo-SecureString ConvertTo-Xml Copy-Item Copy-ItemProperty Debug-Process Disable-ComputerRestore Disable-JobTrigger Disable-PSBreakpoint Disable-PSRemoting Disable-PSSessionConfiguration Disable-WSManCredSSP Disconnect-PSSession Disconnect-WSMan Disable-ScheduledJob Enable-ComputerRestore Enable-JobTrigger Enable-PSBreakpoint Enable-PSRemoting Enable-PSSessionConfiguration Enable-ScheduledJob Enable-WSManCredSSP Enter-PSSession Exit-PSSession Export-Alias Export-Clixml Export-Console Export-Counter Export-Csv Export-FormatData Export-ModuleMember Export-PSSession ForEach-Object Format-Custom Format-List Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command Get-ComputerRestorePoint Get-Content Get-ControlPanelItem Get-Counter Get-Credential Get-Culture Get-Date Get-Event Get-EventLog Get-EventSubscriber Get-ExecutionPolicy Get-FormatData Get-Host Get-HotFix Get-Help Get-History Get-IseSnippet Get-Item Get-ItemProperty Get-Job Get-JobTrigger Get-Location Get-Member Get-Module Get-PfxCertificate Get-Process Get-PSBreakpoint Get-PSCallStack Get-PSDrive Get-PSProvider Get-PSSession Get-PSSessionConfiguration Get-PSSnapin Get-Random Get-ScheduledJob Get-ScheduledJobOption Get-Service Get-TraceSource Get-Transaction Get-TypeData Get-UICulture Get-Unique Get-Variable Get-Verb Get-WinEvent Get-WmiObject Get-WSManCredSSP Get-WSManInstance Group-Object Import-Alias Import-Clixml Import-Counter Import-Csv Import-IseSnippet Import-LocalizedData Import-PSSession Import-Module Invoke-AsWorkflow Invoke-Command Invoke-Expression Invoke-History Invoke-Item Invoke-RestMethod Invoke-WebRequest Invoke-WmiMethod Invoke-WSManAction Join-Path Limit-EventLog Measure-Command Measure-Object Move-Item Move-ItemProperty New-Alias New-Event New-EventLog New-IseSnippet New-Item New-ItemProperty New-JobTrigger New-Object New-Module New-ModuleManifest New-PSDrive New-PSSession New-PSSessionConfigurationFile New-PSSessionOption New-PSTransportOption New-PSWorkflowExecutionOption New-PSWorkflowSession New-ScheduledJobOption New-Service New-TimeSpan New-Variable New-WebServiceProxy New-WinEvent New-WSManInstance New-WSManSessionOption Out-Default Out-File Out-GridView Out-Host Out-Null Out-Printer Out-String Pop-Location Push-Location Read-Host Receive-Job Register-EngineEvent Register-ObjectEvent Register-PSSessionConfiguration Register-ScheduledJob Register-WmiEvent Remove-Computer Remove-Event Remove-EventLog Remove-Item Remove-ItemProperty Remove-Job Remove-JobTrigger Remove-Module Remove-PSBreakpoint Remove-PSDrive Remove-PSSession Remove-PSSnapin Remove-TypeData Remove-Variable Remove-WmiObject Remove-WSManInstance Rename-Computer Rename-Item Rename-ItemProperty Reset-ComputerMachinePassword Resolve-Path Restart-Computer Restart-Service Restore-Computer Resume-Job Resume-Service Save-Help Select-Object Select-String Select-Xml Send-MailMessage Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-JobTrigger Set-Location Set-PSBreakpoint Set-PSDebug Set-PSSessionConfiguration Set-ScheduledJob Set-ScheduledJobOption Set-Service Set-StrictMode Set-TraceSource Set-Variable Set-WmiInstance Set-WSManInstance Set-WSManQuickConfig Show-Command Show-ControlPanelItem Show-EventLog Sort-Object Split-Path Start-Job Start-Process Start-Service Start-Sleep Start-Transaction Start-Transcript Stop-Computer Stop-Job Stop-Process Stop-Service Stop-Transcript Suspend-Job Suspend-Service Tee-Object Test-ComputerSecureChannel Test-Connection Test-ModuleManifest Test-Path Test-PSSessionConfigurationFile Trace-Command Unblock-File Undo-Transaction Unregister-Event Unregister-PSSessionConfiguration Unregister-ScheduledJob Update-FormatData Update-Help Update-List Update-TypeData Use-Transaction Wait-Event Wait-Job Wait-Process Where-Object Write-Debug Write-Error Write-EventLog Write-Host Write-Output Write-Progress Write-Verbose Write-Warning Add-MDTPersistentDrive Disable-MDTMonitorService Enable-MDTMonitorService Get-MDTDeploymentShareStatistics Get-MDTMonitorData Get-MDTOperatingSystemCatalog Get-MDTPersistentDrive Import-MDTApplication Import-MDTDriver Import-MDTOperatingSystem Import-MDTPackage Import-MDTTaskSequence New-MDTDatabase Remove-MDTMonitorData Remove-MDTPersistentDrive Restore-MDTPersistentDrive Set-MDTMonitorData Test-MDTDeploymentShare Test-MDTMonitorData Update-MDTDatabaseSchema Update-MDTDeploymentShare Update-MDTLinkedDS Update-MDTMedia Update-MDTMedia Add-VamtProductKey Export-VamtData Find-VamtManagedMachine Get-VamtConfirmationId Get-VamtProduct Get-VamtProductKey Import-VamtData Initialize-VamtData Install-VamtConfirmationId Install-VamtProductActivation Install-VamtProductKey Update-VamtProduct',\n nomarkup: '-ne -eq -lt -gt -ge -le -not -like -notlike -match -notmatch -contains -notcontains -in -notin -replace'\n },\n contains: [\n BACKTICK_ESCAPE,\n hljs.NUMBER_MODE,\n QUOTE_STRING,\n APOS_STRING,\n LITERAL,\n VAR,\n PS_COMMENT\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color ' +\n 'double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject ' +\n 'Object StringDict StringList Table TableRow XML ' +\n // Java keywords\n 'false synchronized int abstract float private char boolean static null if const ' +\n 'for true while long throw strictfp finally protected import native final return void ' +\n 'enum else break transient new catch instanceof byte super volatile case assert short ' +\n 'package default double public try this switch continue throws protected public private',\n literal: 'P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI',\n title: 'setup draw',\n built_in: 'displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key ' +\n 'keyCode pixels focused frameCount frameRate height width ' +\n 'size createGraphics beginDraw createShape loadShape PShape arc ellipse line point ' +\n 'quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint ' +\n 'curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex ' +\n 'endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap ' +\n 'strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased ' +\n 'mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour ' +\n 'millis minute month second year background clear colorMode fill noFill noStroke stroke alpha ' +\n 'blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY ' +\n 'screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ' +\n 'ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle ' +\n 'pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf ' +\n 'nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset ' +\n 'box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings ' +\n 'loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput ' +\n 'createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings ' +\n 'saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale ' +\n 'shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal ' +\n 'pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap ' +\n 'blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont ' +\n 'loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil ' +\n 'constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees ' +\n 'radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n hljs.C_NUMBER_MODE,\n {\n begin: '[a-zA-Z_][\\\\da-zA-Z_]+\\\\.[\\\\da-zA-Z_]{1,3}', end: ':',\n excludeEnd: true\n },\n {\n begin: '(ncalls|tottime|cumtime)', end: '$',\n keywords: 'ncalls tottime|10 cumtime|10 filename',\n relevance: 10\n },\n {\n begin: 'function calls', end: '$',\n contains: [hljs.C_NUMBER_MODE],\n relevance: 10\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\\\(', end: '\\\\)$',\n excludeBegin: true, excludeEnd: true,\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var ATOM = {\n\n begin: /[a-z][A-Za-z0-9_]*/,\n relevance: 0\n };\n\n var VAR = {\n\n className: 'symbol',\n variants: [\n {begin: /[A-Z][a-zA-Z0-9_]*/},\n {begin: /_[A-Za-z0-9_]*/},\n ],\n relevance: 0\n };\n\n var PARENTED = {\n\n begin: /\\(/,\n end: /\\)/,\n relevance: 0\n };\n\n var LIST = {\n\n begin: /\\[/,\n end: /\\]/\n };\n\n var LINE_COMMENT = {\n\n className: 'comment',\n begin: /%/, end: /$/,\n contains: [hljs.PHRASAL_WORDS_MODE]\n };\n\n var BACKTICK_STRING = {\n\n className: 'string',\n begin: /`/, end: /`/,\n contains: [hljs.BACKSLASH_ESCAPE]\n };\n\n var CHAR_CODE = {\n\n className: 'string', // 0'a etc.\n begin: /0\\'(\\\\\\'|.)/\n };\n\n var SPACE_CODE = {\n\n className: 'string',\n begin: /0\\'\\\\s/ // 0'\\s\n };\n\n var PRED_OP = { // relevance booster\n begin: /:-/\n };\n\n var inner = [\n\n ATOM,\n VAR,\n PARENTED,\n PRED_OP,\n LIST,\n LINE_COMMENT,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n BACKTICK_STRING,\n CHAR_CODE,\n SPACE_CODE,\n hljs.C_NUMBER_MODE\n ];\n\n PARENTED.contains = inner;\n LIST.contains = inner;\n\n return {\n contains: inner.concat([\n {begin: /\\.$/} // relevance booster\n ])\n };\n};","module.exports = function(hljs) {\n\n // whitespaces: space, tab, formfeed\n var WS0 = '[ \\\\t\\\\f]*';\n var WS1 = '[ \\\\t\\\\f]+';\n // delimiter\n var DELIM = '(' + WS0+'[:=]'+WS0+ '|' + WS1 + ')';\n var KEY_ALPHANUM = '([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n var KEY_OTHER = '([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+';\n\n var DELIM_AND_VALUE = {\n // skip DELIM\n end: DELIM,\n relevance: 0,\n starts: {\n // value: everything until end of line (again, taking into account backslashes)\n className: 'string',\n end: /$/,\n relevance: 0,\n contains: [\n { begin: '\\\\\\\\\\\\n' }\n ]\n }\n };\n\n return {\n case_insensitive: true,\n illegal: /\\S/,\n contains: [\n hljs.COMMENT('^\\\\s*[!#]', '$'),\n // key: everything until whitespace or = or : (taking into account backslashes)\n // case of a \"normal\" key\n {\n begin: KEY_ALPHANUM + DELIM,\n returnBegin: true,\n contains: [\n {\n className: 'attr',\n begin: KEY_ALPHANUM,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of key containing non-alphanumeric chars => relevance = 0\n {\n begin: KEY_OTHER + DELIM,\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'meta',\n begin: KEY_OTHER,\n endsParent: true,\n relevance: 0\n }\n ],\n starts: DELIM_AND_VALUE\n },\n // case of an empty key\n {\n className: 'attr',\n relevance: 0,\n begin: KEY_OTHER + WS0 + '$'\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'package import option optional required repeated group oneof',\n built_in: 'double float int32 int64 uint32 uint64 sint32 sint64 ' +\n 'fixed32 fixed64 sfixed32 sfixed64 bool string bytes',\n literal: 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'message enum service', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n className: 'function',\n beginKeywords: 'rpc',\n end: /;/, excludeEnd: true,\n keywords: 'rpc returns'\n },\n {\n begin: /^\\s*[A-Z_]+/,\n end: /\\s*=/, excludeEnd: true\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var PUPPET_KEYWORDS = {\n keyword:\n /* language keywords */\n 'and case default else elsif false if in import enherits node or true undef unless main settings $string ',\n literal:\n /* metaparameters */\n 'alias audit before loglevel noop require subscribe tag ' +\n /* normal attributes */\n 'owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check ' +\n 'en_address ip_address realname command environment hour monute month monthday special target weekday '+\n 'creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore ' +\n 'links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source ' +\n 'souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid '+\n 'ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel ' +\n 'native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options ' +\n 'device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use ' +\n 'message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform ' +\n 'responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running ' +\n 'start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age ' +\n 'password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled ' +\n 'enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist ' +\n 'priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey ' +\n 'sslverify mounted',\n built_in:\n /* core facts */\n 'architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers ' +\n 'domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces '+\n 'ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion ' +\n 'kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease ' +\n 'lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major ' +\n 'macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease '+\n 'operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion '+\n 'rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced '+\n 'selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime '+\n 'uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version'\n };\n\n var COMMENT = hljs.COMMENT('#', '$');\n\n var IDENT_RE = '([A-Za-z_]|::)(\\\\w|::)*';\n\n var TITLE = hljs.inherit(hljs.TITLE_MODE, {begin: IDENT_RE});\n\n var VARIABLE = {className: 'variable', begin: '\\\\$' + IDENT_RE};\n\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE, VARIABLE],\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/}\n ]\n };\n\n return {\n aliases: ['pp'],\n contains: [\n COMMENT,\n VARIABLE,\n STRING,\n {\n beginKeywords: 'class', end: '\\\\{|;',\n illegal: /=/,\n contains: [TITLE, COMMENT]\n },\n {\n beginKeywords: 'define', end: /\\{/,\n contains: [\n {\n className: 'section', begin: hljs.IDENT_RE, endsParent: true\n }\n ]\n },\n {\n begin: hljs.IDENT_RE + '\\\\s+\\\\{', returnBegin: true,\n end: /\\S/,\n contains: [\n {\n className: 'keyword',\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\{/, end: /\\}/,\n keywords: PUPPET_KEYWORDS,\n relevance: 0,\n contains: [\n STRING,\n COMMENT,\n {\n begin:'[a-zA-Z_]+\\\\s*=>',\n returnBegin: true, end: '=>',\n contains: [\n {\n className: 'attr',\n begin: hljs.IDENT_RE,\n }\n ]\n },\n {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n },\n VARIABLE\n ]\n }\n ],\n relevance: 0\n }\n ]\n }\n};","module.exports = // Base deafult colors in PB IDE: background: #FFFFDF; foreground: #000000;\n\nfunction(hljs) {\n var STRINGS = { // PB IDE color: #0080FF (Azure Radiance)\n className: 'string',\n begin: '(~)?\"', end: '\"',\n illegal: '\\\\n'\n };\n var CONSTANTS = { // PB IDE color: #924B72 (Cannon Pink)\n // \"#\" + a letter or underscore + letters, digits or underscores + (optional) \"$\"\n className: 'symbol',\n begin: '#[a-zA-Z_]\\\\w*\\\\$?'\n };\n\n return {\n aliases: ['pb', 'pbi'],\n keywords: // PB IDE color: #006666 (Blue Stone) + Bold\n // The following keywords list was taken and adapted from GuShH's PureBasic language file for GeSHi...\n 'And As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerEndIf CompilerEndSelect ' +\n 'CompilerError CompilerIf CompilerSelect Continue Data DataSection EndDataSection Debug DebugLevel ' +\n 'Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM ' +\n 'EnableDebugger EnableExplicit End EndEnumeration EndIf EndImport EndInterface EndMacro EndProcedure ' +\n 'EndSelect EndStructure EndStructureUnion EndWith Enumeration Extends FakeReturn For Next ForEach ' +\n 'ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface Macro ' +\n 'NewList Not Or ProcedureReturn Protected Prototype ' +\n 'PrototypeC Read ReDim Repeat Until Restore Return Select Shared Static Step Structure StructureUnion ' +\n 'Swap To Wend While With XIncludeFile XOr ' +\n 'Procedure ProcedureC ProcedureCDLL ProcedureDLL Declare DeclareC DeclareCDLL DeclareDLL',\n contains: [\n // COMMENTS | PB IDE color: #00AAAA (Persian Green)\n hljs.COMMENT(';', '$', {relevance: 0}),\n\n { // PROCEDURES DEFINITIONS\n className: 'function',\n begin: '\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b',\n end: '\\\\(',\n excludeEnd: true,\n returnBegin: true,\n contains: [\n { // PROCEDURE KEYWORDS | PB IDE color: #006666 (Blue Stone) + Bold\n className: 'keyword',\n begin: '(Procedure|Declare)(C|CDLL|DLL)?',\n excludeEnd: true\n },\n { // PROCEDURE RETURN TYPE SETTING | PB IDE color: #000000 (Black)\n className: 'type',\n begin: '\\\\.\\\\w*'\n // end: ' ',\n },\n hljs.UNDERSCORE_TITLE_MODE // PROCEDURE NAME | PB IDE color: #006666 (Blue Stone)\n ]\n },\n STRINGS,\n CONSTANTS\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'and elif is global as in if from raise for except finally print import pass return ' +\n 'exec else break not with class assert yield try while continue del or def lambda ' +\n 'async await nonlocal|10 None True False',\n built_in:\n 'Ellipsis NotImplemented'\n };\n var PROMPT = {\n className: 'meta', begin: /^(>>>|\\.\\.\\.) /\n };\n var SUBST = {\n className: 'subst',\n begin: /\\{/, end: /\\}/,\n keywords: KEYWORDS,\n illegal: /#/\n };\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: /(u|b)?r?'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\n relevance: 10\n },\n {\n begin: /(u|b)?r?\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT],\n relevance: 10\n },\n {\n begin: /(fr|rf|f)'''/, end: /'''/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, SUBST]\n },\n {\n begin: /(fr|rf|f)\"\"\"/, end: /\"\"\"/,\n contains: [hljs.BACKSLASH_ESCAPE, PROMPT, SUBST]\n },\n {\n begin: /(u|r|ur)'/, end: /'/,\n relevance: 10\n },\n {\n begin: /(u|r|ur)\"/, end: /\"/,\n relevance: 10\n },\n {\n begin: /(b|br)'/, end: /'/\n },\n {\n begin: /(b|br)\"/, end: /\"/\n },\n {\n begin: /(fr|rf|f)'/, end: /'/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n begin: /(fr|rf|f)\"/, end: /\"/,\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n var NUMBER = {\n className: 'number', relevance: 0,\n variants: [\n {begin: hljs.BINARY_NUMBER_RE + '[lLjJ]?'},\n {begin: '\\\\b(0o[0-7]+)[lLjJ]?'},\n {begin: hljs.C_NUMBER_RE + '[lLjJ]?'}\n ]\n };\n var PARAMS = {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n contains: ['self', PROMPT, NUMBER, STRING]\n };\n SUBST.contains = [STRING, NUMBER, PROMPT];\n return {\n aliases: ['py', 'gyp'],\n keywords: KEYWORDS,\n illegal: /(<\\/|->|\\?)|=>/,\n contains: [\n PROMPT,\n NUMBER,\n STRING,\n hljs.HASH_COMMENT_MODE,\n {\n variants: [\n {className: 'function', beginKeywords: 'def'},\n {className: 'class', beginKeywords: 'class'}\n ],\n end: /:/,\n illegal: /[${=;\\n,]/,\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n PARAMS,\n {\n begin: /->/, endsWithParent: true,\n keywords: 'None'\n }\n ]\n },\n {\n className: 'meta',\n begin: /^[\\t ]*@/, end: /$/\n },\n {\n begin: /\\b(print|exec)\\(/ // don’t highlight keywords-turned-functions in Python 3\n }\n ]\n };\n};","module.exports = function(hljs) {\n var Q_KEYWORDS = {\n keyword:\n 'do while select delete by update from',\n literal:\n '0b 1b',\n built_in:\n 'neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum',\n type:\n '`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid'\n };\n return {\n aliases:['k', 'kdb'],\n keywords: Q_KEYWORDS,\n lexemes: /(`?)[A-Za-z0-9_]+\\b/,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in of on if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const export super debugger as async await import',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect ' +\n 'Behavior bool color coordinate date double enumeration font geocircle georectangle ' +\n 'geoshape int list matrix4x4 parent point quaternion real rect ' +\n 'size string url variant vector2d vector3d vector4d' +\n 'Promise'\n };\n\n var QML_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9\\\\._]*';\n\n // Isolate property statements. Ends at a :, =, ;, ,, a comment or end of line.\n // Use property class.\n var PROPERTY = {\n className: 'keyword',\n begin: '\\\\bproperty\\\\b',\n starts: {\n className: 'string',\n end: '(:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // Isolate signal statements. Ends at a ) a comment or end of line.\n // Use property class.\n var SIGNAL = {\n className: 'keyword',\n begin: '\\\\bsignal\\\\b',\n starts: {\n className: 'string',\n end: '(\\\\(|:|=|;|,|//|/\\\\*|$)',\n returnEnd: true\n }\n };\n\n // id: is special in QML. When we see id: we want to mark the id: as attribute and\n // emphasize the token following.\n var ID_ID = {\n className: 'attribute',\n begin: '\\\\bid\\\\s*:',\n starts: {\n className: 'string',\n end: QML_IDENT_RE,\n returnEnd: false\n }\n };\n\n // Find QML object attribute. An attribute is a QML identifier followed by :.\n // Unfortunately it's hard to know where it ends, as it may contain scalars,\n // objects, object definitions, or javascript. The true end is either when the parent\n // ends or the next attribute is detected.\n var QML_ATTRIBUTE = {\n begin: QML_IDENT_RE + '\\\\s*:',\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: QML_IDENT_RE,\n end: '\\\\s*:',\n excludeEnd: true,\n relevance: 0\n }\n ],\n relevance: 0\n };\n\n // Find QML object. A QML object is a QML identifier followed by { and ends at the matching }.\n // All we really care about is finding IDENT followed by { and just mark up the IDENT and ignore the {.\n var QML_OBJECT = {\n begin: QML_IDENT_RE + '\\\\s*{', end: '{',\n returnBegin: true,\n relevance: 0,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: QML_IDENT_RE})\n ]\n };\n\n return {\n aliases: ['qt'],\n case_insensitive: false,\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use (strict|asm)['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n { // E4X / JSX\n begin: /</, end: />\\s*[);\\]]/,\n relevance: 0,\n subLanguage: 'xml'\n }\n ],\n relevance: 0\n },\n SIGNAL,\n PROPERTY,\n {\n className: 'function',\n beginKeywords: 'function', end: /\\{/, excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ],\n illegal: /\\[|%/\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n ID_ID,\n QML_ATTRIBUTE,\n QML_OBJECT\n ],\n illegal: /#/\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*';\n\n return {\n contains: [\n hljs.HASH_COMMENT_MODE,\n {\n begin: IDENT_RE,\n lexemes: IDENT_RE,\n keywords: {\n keyword:\n 'function if in break next repeat else for return switch while try tryCatch ' +\n 'stop warning require library attach detach source setMethod setGeneric ' +\n 'setGroupGeneric setClass ...',\n literal:\n 'NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 ' +\n 'NA_complex_|10'\n },\n relevance: 0\n },\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // explicit integer\n className: 'number',\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n relevance: 0\n },\n {\n // number with trailing decimal\n className: 'number',\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n relevance: 0\n },\n {\n // number\n className: 'number',\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n {\n // number with leading decimal\n className: 'number',\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n\n {\n // escaped identifier\n begin: '`',\n end: '`',\n relevance: 0\n },\n\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\"', end: '\"'},\n {begin: \"'\", end: \"'\"}\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n function orReValues(ops){\n return ops\n .map(function(op) {\n return op\n .split('')\n .map(function(char) {\n return '\\\\' + char;\n })\n .join('');\n })\n .join('|');\n }\n\n var RE_IDENT = '~?[a-z$_][0-9a-zA-Z$_]*';\n var RE_MODULE_IDENT = '`?[A-Z$_][0-9a-zA-Z$_]*';\n \n var RE_PARAM_TYPEPARAM = '\\'?[a-z$_][0-9a-z$_]*';\n var RE_PARAM_TYPE = '\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*(' + RE_PARAM_TYPEPARAM + '\\s*(,' + RE_PARAM_TYPEPARAM + ')*)?\\s*\\))?';\n var RE_PARAM = RE_IDENT + '(' + RE_PARAM_TYPE + ')?(' + RE_PARAM_TYPE + ')?';\n var RE_OPERATOR = \"(\" + orReValues(['||', '&&', '++', '**', '+.', '*', '/', '*.', '/.', '...', '|>']) + \"|==|===)\";\n var RE_OPERATOR_SPACED = \"\\\\s+\" + RE_OPERATOR + \"\\\\s+\";\n\n var KEYWORDS = {\n keyword:\n 'and as asr assert begin class constraint do done downto else end exception external' +\n 'for fun function functor if in include inherit initializer' +\n 'land lazy let lor lsl lsr lxor match method mod module mutable new nonrec' +\n 'object of open or private rec sig struct then to try type val virtual when while with',\n built_in:\n 'array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ',\n literal:\n 'true false'\n };\n\n const RE_NUMBER = '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)';\n\n const NUMBER_MODE = {\n className: 'number', \n relevance: 0,\n variants: [\n {\n begin: RE_NUMBER\n },\n {\n begin: '\\\\(\\\\-' + RE_NUMBER + '\\\\)'\n }\n ]\n };\n\n const OPERATOR_MODE = {\n className: 'operator',\n relevance: 0,\n begin: RE_OPERATOR\n };\n const LIST_CONTENTS_MODES = [\n {\n className: 'identifier',\n relevance: 0,\n begin: RE_IDENT\n },\n OPERATOR_MODE,\n NUMBER_MODE\n ];\n\n const MODULE_ACCESS_CONTENTS = [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\n end: \"\\.\",\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n const PARAMS_CONTENTS = [\n {\n className: 'module',\n begin: \"\\\\b\" + RE_MODULE_IDENT, returnBegin: true,\n end: \"\\.\",\n relevance: 0,\n contains: [\n {\n className: 'identifier',\n begin: RE_MODULE_IDENT,\n relevance: 0\n }\n ]\n }\n ];\n\n const PARAMS_MODE = {\n begin: RE_IDENT,\n end: '(,|\\\\n|\\\\))',\n relevance: 0,\n contains: [\n OPERATOR_MODE,\n {\n className: 'typing',\n begin: ':',\n end: '(,|\\\\n)',\n returnBegin: true,\n relevance: 0,\n contains: PARAMS_CONTENTS\n }\n ]\n };\n\n const FUNCTION_BLOCK_MODE = {\n className: 'function',\n relevance: 0,\n keywords: KEYWORDS,\n variants: [\n {\n begin: '\\\\s(\\\\(\\\\.?.*?\\\\)|' + RE_IDENT + ')\\\\s*=>',\n end: '\\\\s*=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: RE_IDENT\n },\n {\n begin: RE_PARAM\n },\n {\n begin: /\\(\\s*\\)/,\n }\n ]\n }\n ]\n },\n {\n begin: '\\\\s\\\\(\\\\.?[^;\\\\|]*\\\\)\\\\s*=>',\n end: '\\\\s=>',\n returnBegin: true,\n relevance: 0,\n contains: [\n {\n className: 'params',\n relevance: 0,\n variants: [\n PARAMS_MODE\n ]\n }\n ]\n },\n {\n begin: '\\\\(\\\\.\\\\s' + RE_IDENT + '\\\\)\\\\s*=>'\n }\n ]\n };\n MODULE_ACCESS_CONTENTS.push(FUNCTION_BLOCK_MODE);\n\n const CONSTRUCTOR_MODE = {\n className: 'constructor',\n begin: RE_MODULE_IDENT + '\\\\(',\n end: '\\\\)',\n illegal: '\\\\n',\n keywords: KEYWORDS,\n contains: [\n hljs.QUOTE_STRING_MODE,\n OPERATOR_MODE,\n {\n className: 'params',\n begin: '\\\\b' + RE_IDENT\n }\n ]\n };\n\n const PATTERN_MATCH_BLOCK_MODE = {\n className: 'pattern-match',\n begin: '\\\\|',\n returnBegin: true,\n keywords: KEYWORDS,\n end: '=>',\n relevance: 0,\n contains: [\n CONSTRUCTOR_MODE,\n OPERATOR_MODE, \n {\n relevance: 0,\n className: 'constructor',\n begin: RE_MODULE_IDENT\n }\n ]\n };\n\n const MODULE_ACCESS_MODE = {\n className: 'module-access',\n keywords: KEYWORDS,\n returnBegin: true,\n variants: [\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\" + RE_IDENT\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+\\\\(\",\n end: \"\\\\)\",\n returnBegin: true,\n contains: [\n FUNCTION_BLOCK_MODE,\n {\n begin: '\\\\(',\n end: '\\\\)',\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n {\n begin: \"\\\\b(\" + RE_MODULE_IDENT + \"\\\\.)+{\",\n end: \"}\"\n }\n ],\n contains: MODULE_ACCESS_CONTENTS\n };\n\n PARAMS_CONTENTS.push(MODULE_ACCESS_MODE);\n \n return {\n aliases: ['re'],\n keywords: KEYWORDS,\n illegal: '(:\\\\-|:=|\\\\${|\\\\+=)',\n contains: [\n hljs.COMMENT('/\\\\*', '\\\\*/', { illegal: '^(\\\\#,\\\\/\\\\/)' }),\n {\n className: 'character',\n begin: '\\'(\\\\\\\\[^\\']+|[^\\'])\\'',\n illegal: '\\\\n',\n relevance: 0\n },\n hljs.QUOTE_STRING_MODE,\n {\n className: 'literal',\n begin: '\\\\(\\\\)',\n relevance: 0\n },\n {\n className: 'literal',\n begin: '\\\\[\\\\|',\n end: '\\\\|\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n {\n className: 'literal',\n begin: '\\\\[',\n end: '\\\\]',\n relevance: 0,\n contains: LIST_CONTENTS_MODES\n },\n CONSTRUCTOR_MODE,\n {\n className: 'operator',\n begin: RE_OPERATOR_SPACED,\n illegal: '\\\\-\\\\->',\n relevance: 0\n },\n NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n PATTERN_MATCH_BLOCK_MODE,\n FUNCTION_BLOCK_MODE,\n {\n className: 'module-def',\n begin: \"\\\\bmodule\\\\s+\" + RE_IDENT + \"\\\\s+\" + RE_MODULE_IDENT + \"\\\\s+=\\\\s+{\",\n end: \"}\",\n returnBegin: true,\n keywords: KEYWORDS,\n relevance: 0,\n contains: [\n {\n className: 'module',\n relevance: 0,\n begin: RE_MODULE_IDENT\n },\n {\n begin: '{',\n end: '}',\n skip: true\n }\n ].concat(MODULE_ACCESS_CONTENTS)\n },\n MODULE_ACCESS_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords:\n 'ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis ' +\n 'Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone ' +\n 'CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail ' +\n 'DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format ' +\n 'FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry ' +\n 'Hider Hyperboloid Identity Illuminate Imager Interior LightSource ' +\n 'MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte ' +\n 'MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option ' +\n 'Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples ' +\n 'PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection ' +\n 'Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ' +\n 'ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere ' +\n 'SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd ' +\n 'TransformPoints Translate TrimCurve WorldBegin WorldEnd',\n illegal: '</',\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_NUMBER_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var IDENTIFIER = '[a-zA-Z-_][^\\\\n{]+\\\\{';\n\n var PROPERTY = {\n className: 'attribute',\n begin: /[a-zA-Z-_]+/, end: /\\s*:/, excludeEnd: true,\n starts: {\n end: ';',\n relevance: 0,\n contains: [\n {\n className: 'variable',\n begin: /\\.[a-zA-Z-_]+/\n },\n {\n className: 'keyword',\n begin: /\\(optional\\)/\n }\n ]\n }\n };\n\n return {\n aliases: ['graph', 'instances'],\n case_insensitive: true,\n keywords: 'import',\n contains: [\n // Facet sections\n {\n begin: '^facet ' + IDENTIFIER,\n end: '}',\n keywords: 'facet',\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Instance sections\n {\n begin: '^\\\\s*instance of ' + IDENTIFIER,\n end: '}',\n keywords: 'name count channels instance-data instance-state instance of',\n illegal: /\\S/,\n contains: [\n 'self',\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Component sections\n {\n begin: '^' + IDENTIFIER,\n end: '}',\n contains: [\n PROPERTY,\n hljs.HASH_COMMENT_MODE\n ]\n },\n\n // Comments\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = // Colors from RouterOS terminal:\n// green - #0E9A00\n// teal - #0C9A9A\n// purple - #99069A\n// light-brown - #9A9900\n\nfunction(hljs) {\n\n var STATEMENTS = 'foreach do while for if from to step else on-error and or not in';\n\n // Global commands: Every global command should start with \":\" token, otherwise it will be treated as variable.\n var GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime';\n\n // Common commands: Following commands available from most sub-menus:\n var COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning';\n\n var LITERALS = 'true false yes no nothing nil null';\n\n var OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firewall firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw';\n\n // print parameters\n // Several parameters are available for print command:\n // ToDo: var PARAMETERS_PRINT = 'append as-value brief detail count-only file follow follow-only from interval terse value-list without-paging where info';\n // ToDo: var OPERATORS = '&& and ! not || or in ~ ^ & << >> + - * /';\n // ToDo: var TYPES = 'num number bool boolean str string ip ip6-prefix id time array';\n // ToDo: The following tokens serve as delimiters in the grammar: () [] {} : ; $ / \n\n var VAR_PREFIX = 'global local set for foreach';\n\n var VAR = {\n className: 'variable',\n variants: [\n {begin: /\\$[\\w\\d#@][\\w\\d_]*/},\n {begin: /\\$\\{(.*?)}/}\n ]\n };\n \n var QUOTE_STRING = {\n className: 'string',\n begin: /\"/, end: /\"/,\n contains: [\n hljs.BACKSLASH_ESCAPE,\n VAR,\n {\n className: 'variable',\n begin: /\\$\\(/, end: /\\)/,\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n \n var APOS_STRING = {\n className: 'string',\n begin: /'/, end: /'/\n };\n \n var IPADDR = '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b';\n var IPADDR_wBITMASK = IPADDR+'/(3[0-2]|[1-2][0-9]|\\\\d)';\n //////////////////////////////////////////////////////////////////////\n return {\n aliases: ['routeros', 'mikrotik'],\n case_insensitive: true,\n lexemes: /:?[\\w-]+/,\n keywords: {\n literal: LITERALS,\n keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :'),\n },\n contains: [\n { // недопустимые конструкции\n variants: [\n { begin: /^@/, end: /$/, }, // dns\n { begin: /\\/\\*/, end: /\\*\\//, }, // -- comment\n { begin: /%%/, end: /$/, }, // -- comment\n { begin: /^'/, end: /$/, }, // Monkey one line comment\n { begin: /^\\s*\\/[\\w-]+=/, end: /$/, }, // jboss-cli\n { begin: /\\/\\//, end: /$/, }, // Stan comment\n { begin: /^\\[\\</, end: /\\>\\]$/, }, // F# class declaration?\n { begin: /<\\//, end: />/, }, // HTML tags\n { begin: /^facet /, end: /\\}/, }, // roboconf - лютый костыль )))\n { begin: '^1\\\\.\\\\.(\\\\d+)$', end: /$/, }, // tap \n ],\n illegal: /./,\n },\n hljs.COMMENT('^#', '$'),\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n { // attribute=value\n begin: /[\\w-]+\\=([^\\s\\{\\}\\[\\]\\(\\)]+)/, \n relevance: 0,\n returnBegin: true,\n contains: [\n {\n className: 'attribute',\n begin: /[^=]+/\n },\n {\n begin: /=/, \n endsWithParent: true,\n relevance: 0,\n contains: [\n QUOTE_STRING,\n APOS_STRING,\n VAR,\n {\n className: 'literal',\n begin: '\\\\b(' + LITERALS.split(' ').join('|') + ')\\\\b',\n },\n /*{\n // IPv4 addresses and subnets\n className: 'number',\n variants: [\n {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24\n {begin: IPADDR+'-'+IPADDR}, // 192.168.0.1-192.168.0.3\n {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1\n ]\n }, // */\n /*{\n // MAC addresses and DHCP Client IDs\n className: 'number',\n begin: /\\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\\b/,\n }, //*/\n {\n // Не форматировать не классифицированные значения. Необходимо для исключения подсветки значений как built_in.\n // className: 'number', \n begin: /(\"[^\"]*\"|[^\\s\\{\\}\\[\\]]+)/,\n }, //*/\n ]\n } //*/\n ]\n },//*/\n {\n // HEX values\n className: 'number',\n begin: /\\*[0-9a-fA-F]+/,\n }, //*/\n\n { \n begin: '\\\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\\\s\\[\\(]|\\])',\n returnBegin: true,\n contains: [\n {\n className: 'builtin-name', //'function',\n begin: /\\w+/,\n },\n ], \n },\n \n { \n className: 'built_in',\n variants: [\n {begin: '(\\\\.\\\\./|/|\\\\s)((' + OBJECTS.split(' ').join('|') + ');?\\\\s)+',relevance: 10,},\n {begin: /\\.\\./,},\n ],\n },//*/\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n 'float color point normal vector matrix while for if do return else break extern continue',\n built_in:\n 'abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise ' +\n 'clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp ' +\n 'faceforward filterstep floor format fresnel incident length lightsource log match ' +\n 'max min mod noise normalize ntransform opposite option phong pnoise pow printf ' +\n 'ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp ' +\n 'setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan ' +\n 'texture textureinfo trace transform vtransform xcomp ycomp zcomp'\n },\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$'\n },\n {\n className: 'class',\n beginKeywords: 'surface displacement light volume imager', end: '\\\\('\n },\n {\n beginKeywords: 'illuminate illuminance gather', end: '\\\\('\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword: 'BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE ' +\n 'INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 ' +\n 'INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 ' +\n 'INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 ' +\n 'INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 ' +\n 'INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 ' +\n 'INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 ' +\n 'INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 ' +\n 'INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 ' +\n 'INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 ' +\n 'INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 ' +\n 'INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 ' +\n 'INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 ' +\n 'INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 ' +\n 'INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 ' +\n 'MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER ' +\n 'OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE ' +\n 'NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH ' +\n 'IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND ' +\n 'UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ' +\n 'ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE ' +\n 'GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE ' +\n 'SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING ' +\n 'DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF ' +\n 'MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY ' +\n 'YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE ' +\n 'COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR ' +\n 'READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ' +\n 'ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE ' +\n 'EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE ' +\n 'SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL ' +\n 'COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN ' +\n 'MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING ' +\n 'FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM ' +\n 'NUMDAYS READ_DATE STAGING',\n built_in: 'IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML ' +\n 'DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT ' +\n 'DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE ' +\n 'DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT ' +\n 'DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'literal',\n variants: [\n {begin: '#\\\\s+[a-zA-Z\\\\ \\\\.]*', relevance: 0}, // looks like #-comment\n {begin: '#[a-zA-Z\\\\ \\\\.]+'}\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var NUM_SUFFIX = '([ui](8|16|32|64|128|size)|f(32|64))\\?';\n var KEYWORDS =\n 'alignof as be box break const continue crate do else enum extern ' +\n 'false fn for if impl in let loop match mod mut offsetof once priv ' +\n 'proc pub pure ref return self Self sizeof static struct super trait true ' +\n 'type typeof unsafe unsized use virtual while where yield move default';\n var BUILTINS =\n // functions\n 'drop ' +\n // types\n 'i8 i16 i32 i64 i128 isize ' +\n 'u8 u16 u32 u64 u128 usize ' +\n 'f32 f64 ' +\n 'str char bool ' +\n 'Box Option Result String Vec ' +\n // traits\n 'Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug ' +\n 'PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator ' +\n 'Extend IntoIterator DoubleEndedIterator ExactSizeIterator ' +\n 'SliceConcatExt ToString ' +\n // macros\n 'assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! ' +\n 'debug_assert! debug_assert_eq! env! panic! file! format! format_args! ' +\n 'include_bin! include_str! line! local_data_key! module_path! ' +\n 'option_env! print! println! select! stringify! try! unimplemented! ' +\n 'unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!';\n return {\n aliases: ['rs'],\n keywords: {\n keyword:\n KEYWORDS,\n literal:\n 'true false Some None Ok Err',\n built_in:\n BUILTINS\n },\n lexemes: hljs.IDENT_RE + '!?',\n illegal: '</',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.COMMENT('/\\\\*', '\\\\*/', {contains: ['self']}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {begin: /b?\"/, illegal: null}),\n {\n className: 'string',\n variants: [\n { begin: /r(#*)\"(.|\\n)*?\"\\1(?!#)/ },\n { begin: /b?'\\\\?(x\\w{2}|u\\w{4}|U\\w{8}|.)'/ }\n ]\n },\n {\n className: 'symbol',\n begin: /'[a-zA-Z_][a-zA-Z0-9_]*/\n },\n {\n className: 'number',\n variants: [\n { begin: '\\\\b0b([01_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0o([0-7_]+)' + NUM_SUFFIX },\n { begin: '\\\\b0x([A-Fa-f0-9_]+)' + NUM_SUFFIX },\n { begin: '\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)' +\n NUM_SUFFIX\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n beginKeywords: 'fn', end: '(\\\\(|<)', excludeEnd: true,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n className: 'meta',\n begin: '#\\\\!?\\\\[', end: '\\\\]',\n contains: [\n {\n className: 'meta-string',\n begin: /\"/, end: /\"/\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'type', end: ';',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '\\\\S'\n },\n {\n className: 'class',\n beginKeywords: 'trait enum struct union', end: '{',\n contains: [\n hljs.inherit(hljs.UNDERSCORE_TITLE_MODE, {endsParent: true})\n ],\n illegal: '[\\\\w\\\\d]'\n },\n {\n begin: hljs.IDENT_RE + '::',\n keywords: {built_in: BUILTINS}\n },\n {\n begin: '->'\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n // Data step and PROC SQL statements\n var SAS_KEYWORDS = ''+\n 'do if then else end until while '+\n ''+\n 'abort array attrib by call cards cards4 catname continue '+\n 'datalines datalines4 delete delim delimiter display dm drop '+\n 'endsas error file filename footnote format goto in infile '+\n 'informat input keep label leave length libname link list '+\n 'lostcard merge missing modify options output out page put '+\n 'redirect remove rename replace retain return select set skip '+\n 'startsas stop title update waitsas where window x systask '+\n ''+\n 'add and alter as cascade check create delete describe '+\n 'distinct drop foreign from group having index insert into in '+\n 'key like message modify msgtype not null on or order primary '+\n 'references reset restrict select set table unique update '+\n 'validate view where';\n\n // Built-in SAS functions\n var SAS_FUN = ''+\n 'abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|'+\n 'betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|'+\n 'cexist|cinv|close|cnonct|collate|compbl|compound|'+\n 'compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|'+\n 'daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|'+\n 'datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|'+\n 'depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|'+\n 'digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|'+\n 'dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|'+\n 'fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|'+\n 'filename|fileref|finfo|finv|fipname|fipnamel|'+\n 'fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|'+\n 'fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|'+\n 'fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|'+\n 'hms|hosthelp|hour|ibessel|index|indexc|indexw|input|'+\n 'inputc|inputn|int|intck|intnx|intrr|irr|jbessel|'+\n 'juldate|kurtosis|lag|lbound|left|length|lgamma|'+\n 'libname|libref|log|log10|log2|logpdf|logpmf|logsdf|'+\n 'lowcase|max|mdy|mean|min|minute|mod|month|mopen|'+\n 'mort|n|netpv|nmiss|normal|note|npv|open|ordinal|'+\n 'pathname|pdf|peek|peekc|pmf|point|poisson|poke|'+\n 'probbeta|probbnml|probchi|probf|probgam|probhypr|'+\n 'probit|probnegb|probnorm|probt|put|putc|putn|qtr|'+\n 'quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|'+\n 'ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|'+\n 'rewind|right|round|saving|scan|sdf|second|sign|'+\n 'sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|'+\n 'stfips|stname|stnamel|substr|sum|symget|sysget|'+\n 'sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|'+\n 'tinv|tnonct|today|translate|tranwrd|trigamma|'+\n 'trim|trimn|trunc|uniform|upcase|uss|var|varfmt|'+\n 'varinfmt|varlabel|varlen|varname|varnum|varray|'+\n 'varrayx|vartype|verify|vformat|vformatd|vformatdx|'+\n 'vformatn|vformatnx|vformatw|vformatwx|vformatx|'+\n 'vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|'+\n 'vinformatn|vinformatnx|vinformatw|vinformatwx|'+\n 'vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|'+\n 'vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|'+\n 'zipnamel|zipstate';\n\n // Built-in macro functions\n var SAS_MACRO_FUN = 'bquote|nrbquote|cmpres|qcmpres|compstor|'+\n 'datatyp|display|do|else|end|eval|global|goto|'+\n 'if|index|input|keydef|label|left|length|let|'+\n 'local|lowcase|macro|mend|nrbquote|nrquote|'+\n 'nrstr|put|qcmpres|qleft|qlowcase|qscan|'+\n 'qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|'+\n 'substr|superq|syscall|sysevalf|sysexec|sysfunc|'+\n 'sysget|syslput|sysprod|sysrc|sysrput|then|to|'+\n 'trim|unquote|until|upcase|verify|while|window';\n\n return {\n aliases: ['sas', 'SAS'],\n case_insensitive: true, // SAS is case-insensitive\n keywords: {\n literal:\n 'null missing _all_ _automatic_ _character_ _infile_ '+\n '_n_ _name_ _null_ _numeric_ _user_ _webout_',\n meta:\n SAS_KEYWORDS\n },\n contains: [\n {\n // Distinct highlight for proc <proc>, data, run, quit\n className: 'keyword',\n begin: /^\\s*(proc [\\w\\d_]+|data|run|quit)[\\s\\;]/\n },\n {\n // Macro variables\n className: 'variable',\n begin: /\\&[a-zA-Z_\\&][a-zA-Z0-9_]*\\.?/\n },\n {\n // Special emphasis for datalines|cards\n className: 'emphasis',\n begin: /^\\s*datalines|cards.*;/,\n end: /^\\s*;\\s*$/\n },\n { // Built-in macro variables take precedence\n className: 'built_in',\n begin: '%(' + SAS_MACRO_FUN + ')'\n },\n {\n // User-defined macro functions highlighted after\n className: 'name',\n begin: /%[a-zA-Z_][a-zA-Z_0-9]*/\n },\n {\n className: 'meta',\n begin: '[^%](' + SAS_FUN + ')[\\(]'\n },\n {\n className: 'string',\n variants: [\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n },\n hljs.COMMENT('\\\\*', ';'),\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n\n var ANNOTATION = { className: 'meta', begin: '@[A-Za-z]+' };\n\n // used in strings for escaping/interpolation/substitution\n var SUBST = {\n className: 'subst',\n variants: [\n {begin: '\\\\$[A-Za-z0-9_]+'},\n {begin: '\\\\${', end: '}'}\n ]\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {\n begin: '\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 10\n },\n {\n begin: '[a-z]+\"', end: '\"',\n illegal: '\\\\n',\n contains: [hljs.BACKSLASH_ESCAPE, SUBST]\n },\n {\n className: 'string',\n begin: '[a-z]+\"\"\"', end: '\"\"\"',\n contains: [SUBST],\n relevance: 10\n }\n ]\n\n };\n\n var SYMBOL = {\n className: 'symbol',\n begin: '\\'\\\\w[\\\\w\\\\d_]*(?!\\')'\n };\n\n var TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n };\n\n var NAME = {\n className: 'title',\n begin: /[^0-9\\n\\t \"'(),.`{}\\[\\]:;][^\\n\\t \"'(),.`{}\\[\\]:;]+|[^0-9\\n\\t \"'(),.`{}\\[\\]:;=]/,\n relevance: 0\n };\n\n var CLASS = {\n className: 'class',\n beginKeywords: 'class object trait type',\n end: /[:={\\[\\n;]/,\n excludeEnd: true,\n contains: [\n {\n beginKeywords: 'extends with',\n relevance: 10\n },\n {\n begin: /\\[/,\n end: /\\]/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0,\n contains: [TYPE]\n },\n NAME\n ]\n };\n\n var METHOD = {\n className: 'function',\n beginKeywords: 'def',\n end: /[:={\\[(\\n;]/,\n excludeEnd: true,\n contains: [NAME]\n };\n\n return {\n keywords: {\n literal: 'true false null',\n keyword: 'type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit'\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n SYMBOL,\n TYPE,\n METHOD,\n CLASS,\n hljs.C_NUMBER_MODE,\n ANNOTATION\n ]\n };\n};","module.exports = function(hljs) {\n var SCHEME_IDENT_RE = '[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\",\\'`;#|\\\\\\\\\\\\s]+';\n var SCHEME_SIMPLE_NUMBER_RE = '(\\\\-|\\\\+)?\\\\d+([./]\\\\d+)?';\n var SCHEME_COMPLEX_NUMBER_RE = SCHEME_SIMPLE_NUMBER_RE + '[+\\\\-]' + SCHEME_SIMPLE_NUMBER_RE + 'i';\n var BUILTINS = {\n 'builtin-name':\n 'case-lambda call/cc class define-class exit-handler field import ' +\n 'inherit init-field interface let*-values let-values let/ec mixin ' +\n 'opt-lambda override protect provide public rename require ' +\n 'require-for-syntax syntax syntax-case syntax-error unit/sig unless ' +\n 'when with-syntax and begin call-with-current-continuation ' +\n 'call-with-input-file call-with-output-file case cond define ' +\n 'define-syntax delay do dynamic-wind else for-each if lambda let let* ' +\n 'let-syntax letrec letrec-syntax map or syntax-rules \\' * + , ,@ - ... / ' +\n '; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan ' +\n 'boolean? caar cadr call-with-input-file call-with-output-file ' +\n 'call-with-values car cdddar cddddr cdr ceiling char->integer ' +\n 'char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? ' +\n 'char-downcase char-lower-case? char-numeric? char-ready? char-upcase ' +\n 'char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? ' +\n 'char? close-input-port close-output-port complex? cons cos ' +\n 'current-input-port current-output-port denominator display eof-object? ' +\n 'eq? equal? eqv? eval even? exact->inexact exact? exp expt floor ' +\n 'force gcd imag-part inexact->exact inexact? input-port? integer->char ' +\n 'integer? interaction-environment lcm length list list->string ' +\n 'list->vector list-ref list-tail list? load log magnitude make-polar ' +\n 'make-rectangular make-string make-vector max member memq memv min ' +\n 'modulo negative? newline not null-environment null? number->string ' +\n 'number? numerator odd? open-input-file open-output-file output-port? ' +\n 'pair? peek-char port? positive? procedure? quasiquote quote quotient ' +\n 'rational? rationalize read read-char real-part real? remainder reverse ' +\n 'round scheme-report-environment set! set-car! set-cdr! sin sqrt string ' +\n 'string->list string->number string->symbol string-append string-ci<=? ' +\n 'string-ci<? string-ci=? string-ci>=? string-ci>? string-copy ' +\n 'string-fill! string-length string-ref string-set! string<=? string<? ' +\n 'string=? string>=? string>? string? substring symbol->string symbol? ' +\n 'tan transcript-off transcript-on truncate values vector ' +\n 'vector->list vector-fill! vector-length vector-ref vector-set! ' +\n 'with-input-from-file with-output-to-file write write-char zero?'\n };\n\n var SHEBANG = {\n className: 'meta',\n begin: '^#!',\n end: '$'\n };\n\n var LITERAL = {\n className: 'literal',\n begin: '(#t|#f|#\\\\\\\\' + SCHEME_IDENT_RE + '|#\\\\\\\\.)'\n };\n\n var NUMBER = {\n className: 'number',\n variants: [\n { begin: SCHEME_SIMPLE_NUMBER_RE, relevance: 0 },\n { begin: SCHEME_COMPLEX_NUMBER_RE, relevance: 0 },\n { begin: '#b[0-1]+(/[0-1]+)?' },\n { begin: '#o[0-7]+(/[0-7]+)?' },\n { begin: '#x[0-9a-f]+(/[0-9a-f]+)?' }\n ]\n };\n\n var STRING = hljs.QUOTE_STRING_MODE;\n\n var REGULAR_EXPRESSION = {\n className: 'regexp',\n begin: '#[pr]x\"',\n end: '[^\\\\\\\\]\"'\n };\n\n var COMMENT_MODES = [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n hljs.COMMENT('#\\\\|', '\\\\|#')\n ];\n\n var IDENT = {\n begin: SCHEME_IDENT_RE,\n relevance: 0\n };\n\n var QUOTED_IDENT = {\n className: 'symbol',\n begin: '\\'' + SCHEME_IDENT_RE\n };\n\n var BODY = {\n endsWithParent: true,\n relevance: 0\n };\n\n var QUOTED_LIST = {\n variants: [\n { begin: /'/ },\n { begin: '`' }\n ],\n contains: [\n {\n begin: '\\\\(', end: '\\\\)',\n contains: ['self', LITERAL, STRING, NUMBER, IDENT, QUOTED_IDENT]\n }\n ]\n };\n\n var NAME = {\n className: 'name',\n begin: SCHEME_IDENT_RE,\n lexemes: SCHEME_IDENT_RE,\n keywords: BUILTINS\n };\n\n var LAMBDA = {\n begin: /lambda/, endsWithParent: true, returnBegin: true,\n contains: [\n NAME,\n {\n begin: /\\(/, end: /\\)/, endsParent: true,\n contains: [IDENT],\n }\n ]\n };\n\n var LIST = {\n variants: [\n { begin: '\\\\(', end: '\\\\)' },\n { begin: '\\\\[', end: '\\\\]' }\n ],\n contains: [LAMBDA, NAME, BODY]\n };\n\n BODY.contains = [LITERAL, NUMBER, STRING, IDENT, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES);\n\n return {\n illegal: /\\S/,\n contains: [SHEBANG, NUMBER, STRING, QUOTED_IDENT, QUOTED_LIST, LIST].concat(COMMENT_MODES)\n };\n};","module.exports = function(hljs) {\n\n var COMMON_CONTAINS = [\n hljs.C_NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'|\\\"', end: '\\'|\\\"',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n }\n ];\n\n return {\n aliases: ['sci'],\n lexemes: /%?\\w+/,\n keywords: {\n keyword: 'abort break case clear catch continue do elseif else endfunction end for function '+\n 'global if pause return resume select try then while',\n literal:\n '%f %F %t %T %pi %eps %inf %nan %e %i %z %s',\n built_in: // Scilab has more than 2000 functions. Just list the most commons\n 'abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error '+\n 'exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty '+\n 'isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log '+\n 'max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real '+\n 'round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan '+\n 'type typename warning zeros matrix'\n },\n illegal: '(\"|#|/\\\\*|\\\\s+/\\\\w+)',\n contains: [\n {\n className: 'function',\n beginKeywords: 'function', end: '$',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n }\n ]\n },\n {\n begin: '[a-zA-Z_][a-zA-Z_0-9]*(\\'+[\\\\.\\']*|[\\\\.\\']+)', end: '',\n relevance: 0\n },\n {\n begin: '\\\\[', end: '\\\\]\\'*[\\\\.\\']*',\n relevance: 0,\n contains: COMMON_CONTAINS\n },\n hljs.COMMENT('//', '$')\n ].concat(COMMON_CONTAINS)\n };\n};","module.exports = function(hljs) {\n var IDENT_RE = '[a-zA-Z-][a-zA-Z0-9_-]*';\n var VARIABLE = {\n className: 'variable',\n begin: '(\\\\$' + IDENT_RE + ')\\\\b'\n };\n var HEXCOLOR = {\n className: 'number', begin: '#[0-9A-Fa-f]+'\n };\n var DEF_INTERNALS = {\n className: 'attribute',\n begin: '[A-Z\\\\_\\\\.\\\\-]+', end: ':',\n excludeEnd: true,\n illegal: '[^\\\\s]',\n starts: {\n endsWithParent: true, excludeEnd: true,\n contains: [\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n }\n };\n return {\n case_insensitive: true,\n illegal: '[=/|\\']',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'selector-id', begin: '\\\\#[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-class', begin: '\\\\.[A-Za-z0-9_-]+',\n relevance: 0\n },\n {\n className: 'selector-attr', begin: '\\\\[', end: '\\\\]',\n illegal: '$'\n },\n {\n className: 'selector-tag', // begin: IDENT_RE, end: '[,|\\\\s]'\n begin: '\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b',\n relevance: 0\n },\n {\n begin: ':(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)'\n },\n {\n begin: '::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)'\n },\n VARIABLE,\n {\n className: 'attribute',\n begin: '\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b',\n illegal: '[^\\\\s]'\n },\n {\n begin: '\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b'\n },\n {\n begin: ':', end: ';',\n contains: [\n VARIABLE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n {\n className: 'meta', begin: '!important'\n }\n ]\n },\n {\n begin: '@', end: '[{;]',\n keywords: 'mixin include extend for if else each while charset import debug media page content font-face namespace warn',\n contains: [\n VARIABLE,\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n HEXCOLOR,\n hljs.CSS_NUMBER_MODE,\n {\n begin: '\\\\s[A-Za-z0-9_.-]+',\n relevance: 0\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['console'],\n contains: [\n {\n className: 'meta',\n begin: '^\\\\s{0,3}[\\\\w\\\\d\\\\[\\\\]()@-]*[>%$#]',\n starts: {\n end: '$', subLanguage: 'bash'\n }\n }\n ]\n }\n};","module.exports = function(hljs) {\n var smali_instr_low_prio = ['add', 'and', 'cmp', 'cmpg', 'cmpl', 'const', 'div', 'double', 'float', 'goto', 'if', 'int', 'long', 'move', 'mul', 'neg', 'new', 'nop', 'not', 'or', 'rem', 'return', 'shl', 'shr', 'sput', 'sub', 'throw', 'ushr', 'xor'];\n var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];\n var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];\n return {\n aliases: ['smali'],\n contains: [\n {\n className: 'string',\n begin: '\"', end: '\"',\n relevance: 0\n },\n hljs.COMMENT(\n '#',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'keyword',\n variants: [\n {begin: '\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*'},\n {begin: '^[ ]*\\\\.[a-zA-Z]*', relevance: 0},\n {begin: '\\\\s:[a-zA-Z_0-9]*', relevance: 0},\n {begin: '\\\\s(' + smali_keywords.join('|') + ')'}\n ]\n },\n {\n className: 'built_in',\n variants : [\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')\\\\s'\n },\n {\n begin: '\\\\s('+smali_instr_low_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)+\\\\s',\n relevance: 10\n },\n {\n begin: '\\\\s('+smali_instr_high_prio.join('|')+')((\\\\-|/)[a-zA-Z0-9]+)*\\\\s',\n relevance: 10\n },\n ]\n },\n {\n className: 'class',\n begin: 'L[^\\(;:\\n]*;',\n relevance: 0\n },\n {\n begin: '[vp][0-9]+',\n }\n ]\n };\n};","module.exports = function(hljs) {\n var VAR_IDENT_RE = '[a-z][a-zA-Z0-9_]*';\n var CHAR = {\n className: 'string',\n begin: '\\\\$.{1}'\n };\n var SYMBOL = {\n className: 'symbol',\n begin: '#' + hljs.UNDERSCORE_IDENT_RE\n };\n return {\n aliases: ['st'],\n keywords: 'self super nil true false thisContext', // only 6\n contains: [\n hljs.COMMENT('\"', '\"'),\n hljs.APOS_STRING_MODE,\n {\n className: 'type',\n begin: '\\\\b[A-Z][A-Za-z0-9_]*',\n relevance: 0\n },\n {\n begin: VAR_IDENT_RE + ':',\n relevance: 0\n },\n hljs.C_NUMBER_MODE,\n SYMBOL,\n CHAR,\n {\n // This looks more complicated than needed to avoid combinatorial\n // explosion under V8. It effectively means `| var1 var2 ... |` with\n // whitespace adjacent to `|` being optional.\n begin: '\\\\|[ ]*' + VAR_IDENT_RE + '([ ]+' + VAR_IDENT_RE + ')*[ ]*\\\\|',\n returnBegin: true, end: /\\|/,\n illegal: /\\S/,\n contains: [{begin: '(\\\\|[ ]*)?' + VAR_IDENT_RE}]\n },\n {\n begin: '\\\\#\\\\(', end: '\\\\)',\n contains: [\n hljs.APOS_STRING_MODE,\n CHAR,\n hljs.C_NUMBER_MODE,\n SYMBOL\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['ml'],\n keywords: {\n keyword:\n /* according to Definition of Standard ML 97 */\n 'abstype and andalso as case datatype do else end eqtype ' +\n 'exception fn fun functor handle if in include infix infixr ' +\n 'let local nonfix of op open orelse raise rec sharing sig ' +\n 'signature struct structure then type val with withtype where while',\n built_in:\n /* built-in types according to basis library */\n 'array bool char exn int list option order real ref string substring vector unit word',\n literal:\n 'true false NONE SOME LESS EQUAL GREATER nil'\n },\n illegal: /\\/\\/|>>/,\n lexemes: '[a-z_]\\\\w*!?',\n contains: [\n {\n className: 'literal',\n begin: /\\[(\\|\\|)?\\]|\\(\\)/,\n relevance: 0\n },\n hljs.COMMENT(\n '\\\\(\\\\*',\n '\\\\*\\\\)',\n {\n contains: ['self']\n }\n ),\n { /* type variable */\n className: 'symbol',\n begin: '\\'[A-Za-z_](?!\\')[\\\\w\\']*'\n /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */\n },\n { /* polymorphic variant */\n className: 'type',\n begin: '`[A-Z][\\\\w\\']*'\n },\n { /* module or constructor */\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\']*',\n relevance: 0\n },\n { /* don't color identifiers, but safely catch all identifiers with '*/\n begin: '[a-z_]\\\\w*\\'[\\\\w\\']*'\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {className: 'string', relevance: 0}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'number',\n begin:\n '\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|' +\n '0[oO][0-7_]+[Lln]?|' +\n '0[bB][01_]+[Lln]?|' +\n '[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)',\n relevance: 0\n },\n {\n begin: /[-=]>/ // relevance booster\n }\n ]\n };\n};","module.exports = function(hljs) {\n var CPP = hljs.getLanguage('cpp').exports;\n\n // In SQF, a variable start with _\n var VARIABLE = {\n className: 'variable',\n begin: /\\b_+[a-zA-Z_]\\w*/\n };\n\n // In SQF, a function should fit myTag_fnc_myFunction pattern\n // https://community.bistudio.com/wiki/Functions_Library_(Arma_3)#Adding_a_Function\n var FUNCTION = {\n className: 'title',\n begin: /[a-zA-Z][a-zA-Z0-9]+_fnc_\\w*/\n };\n\n // In SQF strings, quotes matching the start are escaped by adding a consecutive.\n // Example of single escaped quotes: \" \"\" \" and ' '' '.\n var STRINGS = {\n className: 'string',\n variants: [\n {\n begin: '\"',\n end: '\"',\n contains: [{begin: '\"\"', relevance: 0}]\n },\n {\n begin: '\\'',\n end: '\\'',\n contains: [{begin: '\\'\\'', relevance: 0}]\n }\n ]\n };\n\n return {\n aliases: ['sqf'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'case catch default do else exit exitWith for forEach from if ' +\n 'private switch then throw to try waitUntil while with',\n built_in:\n 'abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames ' +\n 'actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey ' +\n 'add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo ' +\n 'addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea ' +\n 'addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler ' +\n 'addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo ' +\n 'addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats ' +\n 'addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal ' +\n 'addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler ' +\n 'addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem ' +\n 'addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem ' +\n 'addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest ' +\n 'addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem ' +\n 'addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD ' +\n 'airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls ' +\n 'allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines ' +\n 'allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage ' +\n 'allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects ' +\n 'allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay ' +\n 'animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase ' +\n 'animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert ' +\n 'assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret ' +\n 'assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems ' +\n 'assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam ' +\n 'assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject ' +\n 'attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines ' +\n 'backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter ' +\n 'breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode ' +\n 'call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams ' +\n 'camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView ' +\n 'campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive ' +\n 'camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget ' +\n 'camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos ' +\n 'camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest ' +\n 'cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend ' +\n 'canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked ' +\n 'cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className ' +\n 'clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons ' +\n 'clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal ' +\n 'clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool ' +\n 'clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory ' +\n 'collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow ' +\n 'commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop ' +\n 'commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal ' +\n 'completedFSM composeText configClasses configFile configHierarchy configName configProperties ' +\n 'configSourceAddonList configSourceMod configSourceModList confirmSensorTarget ' +\n 'connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count ' +\n 'countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity ' +\n 'createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject ' +\n 'createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker ' +\n 'createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay ' +\n 'createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam ' +\n 'createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ' +\n 'ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ' +\n 'ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ' +\n 'ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ' +\n 'ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ' +\n 'ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ' +\n 'ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ' +\n 'ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ' +\n 'ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ' +\n 'ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ' +\n 'ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ' +\n 'ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ' +\n 'ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ' +\n 'ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ' +\n 'ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ' +\n 'ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ' +\n 'ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ' +\n 'ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ' +\n 'ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ' +\n 'ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera ' +\n 'curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea ' +\n 'curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected ' +\n 'curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine ' +\n 'currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle ' +\n 'currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint ' +\n 'currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget ' +\n 'customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime ' +\n 'deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter ' +\n 'deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity ' +\n 'deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus ' +\n 'deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines ' +\n 'diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts ' +\n 'diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance ' +\n 'diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad ' +\n 'diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits ' +\n 'diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner ' +\n 'difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI ' +\n 'disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators ' +\n 'disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment ' +\n 'disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent ' +\n 'displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam ' +\n 'distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow ' +\n 'doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse ' +\n 'drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle ' +\n 'drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef ' +\n 'dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject ' +\n 'editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature ' +\n 'enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD ' +\n 'enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot ' +\n 'enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem ' +\n 'enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights ' +\n 'enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload ' +\n 'enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation ' +\n 'enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability ' +\n 'enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly ' +\n 'endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities ' +\n 'environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack ' +\n 'everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages ' +\n 'eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission ' +\n 'fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition ' +\n 'findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget ' +\n 'firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight ' +\n 'flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture ' +\n 'forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange ' +\n 'forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation ' +\n 'formationDirection formationLeader formationMembers formationPosition formationTask formatText ' +\n 'formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData ' +\n 'get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity ' +\n 'get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible ' +\n 'get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers ' +\n 'getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision ' +\n 'getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA ' +\n 'getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining ' +\n 'getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState ' +\n 'getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad ' +\n 'getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual ' +\n 'getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode ' +\n 'getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture ' +\n 'getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom ' +\n 'getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos ' +\n 'getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs ' +\n 'getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber ' +\n 'getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy ' +\n 'getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs ' +\n 'getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget ' +\n 'getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual ' +\n 'getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir ' +\n 'getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents ' +\n 'getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue ' +\n 'getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout ' +\n 'getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo ' +\n 'getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio ' +\n 'goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId ' +\n 'groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems ' +\n 'handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups ' +\n 'hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup ' +\n 'hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC ' +\n 'hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups ' +\n 'importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel ' +\n 'infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom ' +\n 'initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN ' +\n 'is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest ' +\n 'isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated ' +\n 'isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray ' +\n 'isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader ' +\n 'isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn ' +\n 'isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection ' +\n 'isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad ' +\n 'isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons ' +\n 'isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText ' +\n 'isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext ' +\n 'isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking ' +\n 'isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent ' +\n 'joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact ' +\n 'kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language ' +\n 'laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture ' +\n 'lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture ' +\n 'lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight ' +\n 'lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected ' +\n 'lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip ' +\n 'lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit ' +\n 'leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore ' +\n 'leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits ' +\n 'libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed ' +\n 'linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith ' +\n 'linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn ' +\n 'lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow ' +\n 'lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData ' +\n 'lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs ' +\n 'loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform ' +\n 'loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked ' +\n 'lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork ' +\n 'logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo ' +\n 'magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack ' +\n 'magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd ' +\n 'mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam ' +\n 'markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText ' +\n 'markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete ' +\n 'menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData ' +\n 'menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL ' +\n 'menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName ' +\n 'missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual ' +\n 'modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move ' +\n 'move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret ' +\n 'moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound ' +\n 'nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing ' +\n 'nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads ' +\n 'nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex ' +\n 'nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId ' +\n 'objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch ' +\n 'onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter ' +\n 'onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected ' +\n 'onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch ' +\n 'openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast ' +\n 'overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace ' +\n 'particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW ' +\n 'playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide ' +\n 'playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission ' +\n 'playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ' +\n 'ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ' +\n 'ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound ' +\n 'preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon ' +\n 'primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName ' +\n 'profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition ' +\n 'publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool ' +\n 'queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate ' +\n 'radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random ' +\n 'rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl ' +\n 'remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler ' +\n 'remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems ' +\n 'removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas ' +\n 'removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems ' +\n 'removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers ' +\n 'removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons ' +\n 'removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea ' +\n 'removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks ' +\n 'removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem ' +\n 'removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest ' +\n 'removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret ' +\n 'removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler ' +\n 'removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem ' +\n 'removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon ' +\n 'removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret ' +\n 'reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources ' +\n 'respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt ' +\n 'roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ' +\n 'ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ' +\n 'ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW ' +\n 'safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity ' +\n 'saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D ' +\n 'scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState ' +\n 'secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces ' +\n 'selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition ' +\n 'selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted ' +\n 'selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult ' +\n 'sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime ' +\n 'set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer ' +\n 'set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes ' +\n 'set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD ' +\n 'setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef ' +\n 'setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour ' +\n 'setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams ' +\n 'setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation ' +\n 'setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType ' +\n 'setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef ' +\n 'setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination ' +\n 'setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval ' +\n 'setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope ' +\n 'setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType ' +\n 'setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation ' +\n 'setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo ' +\n 'setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId ' +\n 'setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage ' +\n 'setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader ' +\n 'setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight ' +\n 'setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare ' +\n 'setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush ' +\n 'setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal ' +\n 'setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize ' +\n 'setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass ' +\n 'setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound ' +\n 'setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture ' +\n 'setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining ' +\n 'setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom ' +\n 'setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect ' +\n 'setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW ' +\n 'setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain ' +\n 'setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance ' +\n 'setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData ' +\n 'setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType ' +\n 'setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech ' +\n 'setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits ' +\n 'setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText ' +\n 'setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap ' +\n 'setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText ' +\n 'setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos ' +\n 'setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat ' +\n 'setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp ' +\n 'setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId ' +\n 'setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets ' +\n 'setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName ' +\n 'setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance ' +\n 'setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode ' +\n 'setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation ' +\n 'setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName ' +\n 'setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout ' +\n 'setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce ' +\n 'setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu ' +\n 'showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer ' +\n 'shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap ' +\n 'shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio ' +\n 'showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side ' +\n 'sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity ' +\n 'simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime ' +\n 'sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed ' +\n 'slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode ' +\n 'splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str ' +\n 'sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth ' +\n 'switchableUnits switchAction switchCamera switchGesture switchLight switchMove ' +\n 'synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd ' +\n 'synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan ' +\n 'targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren ' +\n 'taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent ' +\n 'taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType ' +\n 'terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat ' +\n 'tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower ' +\n 'toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle ' +\n 'triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText ' +\n 'triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear ' +\n 'tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture ' +\n 'tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled ' +\n 'tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled ' +\n 'tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText ' +\n 'tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator ' +\n 'unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems ' +\n 'uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos ' +\n 'unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement ' +\n 'unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent ' +\n 'useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff ' +\n 'vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo ' +\n 'vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply ' +\n 'vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle ' +\n 'vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition ' +\n 'vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature ' +\n 'vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap ' +\n 'visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject ' +\n 'waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour ' +\n 'waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour ' +\n 'waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName ' +\n 'waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed ' +\n 'waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible ' +\n 'weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered ' +\n 'weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind ',\n literal:\n 'blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak ' +\n 'locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic ' +\n 'sideUnknown taskNull teamMemberNull true west',\n },\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.NUMBER_MODE,\n VARIABLE,\n FUNCTION,\n STRINGS,\n CPP.preprocessor\n ],\n illegal: /#|^\\$ /\n };\n};","module.exports = function(hljs) {\n var COMMENT_MODE = hljs.COMMENT('--', '$');\n return {\n case_insensitive: true,\n illegal: /[<>{}*]/,\n contains: [\n {\n beginKeywords:\n 'begin end start commit rollback savepoint lock alter create drop rename call ' +\n 'delete do handler insert load replace select truncate update set show pragma grant ' +\n 'merge describe use explain help declare prepare execute deallocate release ' +\n 'unlock purge reset change stop analyze cache flush optimize repair kill ' +\n 'install uninstall checksum restore check backup revoke comment with',\n end: /;/, endsWithParent: true,\n lexemes: /[\\w\\.]+/,\n keywords: {\n keyword:\n 'as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add ' +\n 'addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias ' +\n 'allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply ' +\n 'archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan ' +\n 'atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid ' +\n 'authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile ' +\n 'before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float ' +\n 'binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound ' +\n 'buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel ' +\n 'capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base ' +\n 'char_length character_length characters characterset charindex charset charsetform charsetid check ' +\n 'checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close ' +\n 'cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation ' +\n 'collect colu colum column column_value columns columns_updated comment commit compact compatibility ' +\n 'compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn ' +\n 'connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection ' +\n 'consider consistent constant constraint constraints constructor container content contents context ' +\n 'contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost ' +\n 'count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation ' +\n 'critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user ' +\n 'cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add ' +\n 'date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts ' +\n 'day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate ' +\n 'declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults ' +\n 'deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank ' +\n 'depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor ' +\n 'deterministic diagnostics difference dimension direct_load directory disable disable_all ' +\n 'disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div ' +\n 'do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable ' +\n 'editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt ' +\n 'end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors ' +\n 'escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding ' +\n 'execu execut execute exempt exists exit exp expire explain export export_set extended extent external ' +\n 'external_1 external_2 externally extract failed failed_login_attempts failover failure far fast ' +\n 'feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final ' +\n 'finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign ' +\n 'form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ' +\n 'ftp full function general generated get get_format get_lock getdate getutcdate global global_name ' +\n 'globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups ' +\n 'gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex ' +\n 'hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified ' +\n 'identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment ' +\n 'index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile ' +\n 'initial initialized initially initrans inmemory inner innodb input insert install instance instantiable ' +\n 'instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat ' +\n 'is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists ' +\n 'keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase ' +\n 'lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit ' +\n 'lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate ' +\n 'locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call ' +\n 'logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime ' +\n 'managed management manual map mapping mask master master_pos_wait match matched materialized max ' +\n 'maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans ' +\n 'md5 measures median medium member memcompress memory merge microsecond mid migration min minextents ' +\n 'minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month ' +\n 'months mount move movement multiset mutex name name_const names nan national native natural nav nchar ' +\n 'nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile ' +\n 'nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile ' +\n 'nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder ' +\n 'nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck ' +\n 'noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe ' +\n 'nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ' +\n 'ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old ' +\n 'on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date ' +\n 'oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary ' +\n 'out outer outfile outline output over overflow overriding package pad parallel parallel_enable ' +\n 'parameters parent parse partial partition partitions pascal passing password password_grace_time ' +\n 'password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex ' +\n 'pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc ' +\n 'performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin ' +\n 'policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction ' +\n 'prediction_cost prediction_details prediction_probability prediction_set prepare present preserve ' +\n 'prior priority private private_sga privileges procedural procedure procedure_analyze processlist ' +\n 'profiles project prompt protection public publishingservername purge quarter query quick quiesce quota ' +\n 'quotename radians raise rand range rank raw read reads readsize rebuild record records ' +\n 'recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh ' +\n 'regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy ' +\n 'reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename ' +\n 'repair repeat replace replicate replication required reset resetlogs resize resource respect restore ' +\n 'restricted result result_cache resumable resume retention return returning returns reuse reverse revoke ' +\n 'right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows ' +\n 'rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll ' +\n 'sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select ' +\n 'self sequence sequential serializable server servererror session session_user sessions_per_user set ' +\n 'sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor ' +\n 'si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin ' +\n 'size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex ' +\n 'source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows ' +\n 'sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone ' +\n 'standby start starting startup statement static statistics stats_binomial_test stats_crosstab ' +\n 'stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep ' +\n 'stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev ' +\n 'stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate ' +\n 'subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum ' +\n 'suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate ' +\n 'sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo ' +\n 'template temporary terminated tertiary_weights test than then thread through tier ties time time_format ' +\n 'time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr ' +\n 'timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking ' +\n 'transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate ' +\n 'try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress ' +\n 'under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot ' +\n 'unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert ' +\n 'url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date ' +\n 'utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var ' +\n 'var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray ' +\n 'verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear ' +\n 'wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped ' +\n 'xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces ' +\n 'xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek',\n literal:\n 'true false null unknown',\n built_in:\n 'array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number ' +\n 'numeric real record serial serial8 smallint text time timestamp varchar varying void'\n },\n contains: [\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\\'\\''}]\n },\n {\n className: 'string',\n begin: '\"', end: '\"',\n contains: [hljs.BACKSLASH_ESCAPE, {begin: '\"\"'}]\n },\n {\n className: 'string',\n begin: '`', end: '`',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n hljs.C_NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n },\n hljs.C_BLOCK_COMMENT_MODE,\n COMMENT_MODE,\n hljs.HASH_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n contains: [\n hljs.HASH_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n begin: hljs.UNDERSCORE_IDENT_RE,\n lexemes: hljs.UNDERSCORE_IDENT_RE,\n keywords: {\n // Stan's keywords\n name:\n 'for in while repeat until if then else',\n // Stan's probablity distributions (less beta and gamma, as commonly\n // used for parameter names). So far, _log and _rng variants are not\n // included\n symbol:\n 'bernoulli bernoulli_logit binomial binomial_logit ' +\n 'beta_binomial hypergeometric categorical categorical_logit ' +\n 'ordered_logistic neg_binomial neg_binomial_2 ' +\n 'neg_binomial_2_log poisson poisson_log multinomial normal ' +\n 'exp_mod_normal skew_normal student_t cauchy double_exponential ' +\n 'logistic gumbel lognormal chi_square inv_chi_square ' +\n 'scaled_inv_chi_square exponential inv_gamma weibull frechet ' +\n 'rayleigh wiener pareto pareto_type_2 von_mises uniform ' +\n 'multi_normal multi_normal_prec multi_normal_cholesky multi_gp ' +\n 'multi_gp_cholesky multi_student_t gaussian_dlm_obs dirichlet ' +\n 'lkj_corr lkj_corr_cholesky wishart inv_wishart',\n // Stan's data types\n 'selector-tag':\n 'int real vector simplex unit_vector ordered positive_ordered ' +\n 'row_vector matrix cholesky_factor_corr cholesky_factor_cov ' +\n 'corr_matrix cov_matrix',\n // Stan's model blocks\n title:\n 'functions model data parameters quantities transformed ' +\n 'generated',\n literal:\n 'true false'\n },\n relevance: 0\n },\n // The below is all taken from the R language definition\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // hex value\n className: 'number',\n begin: \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n relevance: 0\n },\n {\n // explicit integer\n className: 'number',\n begin: \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n relevance: 0\n },\n {\n // number with trailing decimal\n className: 'number',\n begin: \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n relevance: 0\n },\n {\n // number\n className: 'number',\n begin: \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n },\n {\n // number with leading decimal\n className: 'number',\n begin: \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n relevance: 0\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['do', 'ado'],\n case_insensitive: true,\n keywords: 'if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize meqparse mer merg merge mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5',\n contains: [\n {\n className: 'symbol',\n begin: /`[a-zA-Z0-9_]+'/\n },\n {\n className: 'variable',\n begin: /\\$\\{?[a-zA-Z0-9_]+\\}?/\n },\n {\n className: 'string',\n variants: [\n {begin: '`\"[^\\r\\n]*?\"\\''},\n {begin: '\"[^\\r\\n\"]*\"'}\n ]\n },\n\n {\n className: 'built_in',\n variants: [\n {\n begin: '\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\(|$)'\n }\n ]\n },\n\n hljs.COMMENT('^[ \\t]*\\\\*.*$', false),\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';\n var STEP21_KEYWORDS = {\n keyword: 'HEADER ENDSEC DATA'\n };\n var STEP21_START = {\n className: 'meta',\n begin: 'ISO-10303-21;',\n relevance: 10\n };\n var STEP21_CLOSE = {\n className: 'meta',\n begin: 'END-ISO-10303-21;',\n relevance: 10\n };\n\n return {\n aliases: ['p21', 'step', 'stp'],\n case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.\n lexemes: STEP21_IDENT_RE,\n keywords: STEP21_KEYWORDS,\n contains: [\n STEP21_START,\n STEP21_CLOSE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.COMMENT('/\\\\*\\\\*!', '\\\\*/'),\n hljs.C_NUMBER_MODE,\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),\n {\n className: 'string',\n begin: \"'\", end: \"'\"\n },\n {\n className: 'symbol',\n variants: [\n {\n begin: '#', end: '\\\\d+',\n illegal: '\\\\W'\n }\n ]\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var VARIABLE = {\n className: 'variable',\n begin: '\\\\$' + hljs.IDENT_RE\n };\n\n var HEX_COLOR = {\n className: 'number',\n begin: '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n };\n\n var AT_KEYWORDS = [\n 'charset',\n 'css',\n 'debug',\n 'extend',\n 'font-face',\n 'for',\n 'import',\n 'include',\n 'media',\n 'mixin',\n 'page',\n 'warn',\n 'while'\n ];\n\n var PSEUDO_SELECTORS = [\n 'after',\n 'before',\n 'first-letter',\n 'first-line',\n 'active',\n 'first-child',\n 'focus',\n 'hover',\n 'lang',\n 'link',\n 'visited'\n ];\n\n var TAGS = [\n 'a',\n 'abbr',\n 'address',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'blockquote',\n 'body',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hgroup',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'mark',\n 'menu',\n 'nav',\n 'object',\n 'ol',\n 'p',\n 'q',\n 'quote',\n 'samp',\n 'section',\n 'span',\n 'strong',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'var',\n 'video'\n ];\n\n var TAG_END = '[\\\\.\\\\s\\\\n\\\\[\\\\:,]';\n\n var ATTRIBUTES = [\n 'align-content',\n 'align-items',\n 'align-self',\n 'animation',\n 'animation-delay',\n 'animation-direction',\n 'animation-duration',\n 'animation-fill-mode',\n 'animation-iteration-count',\n 'animation-name',\n 'animation-play-state',\n 'animation-timing-function',\n 'auto',\n 'backface-visibility',\n 'background',\n 'background-attachment',\n 'background-clip',\n 'background-color',\n 'background-image',\n 'background-origin',\n 'background-position',\n 'background-repeat',\n 'background-size',\n 'border',\n 'border-bottom',\n 'border-bottom-color',\n 'border-bottom-left-radius',\n 'border-bottom-right-radius',\n 'border-bottom-style',\n 'border-bottom-width',\n 'border-collapse',\n 'border-color',\n 'border-image',\n 'border-image-outset',\n 'border-image-repeat',\n 'border-image-slice',\n 'border-image-source',\n 'border-image-width',\n 'border-left',\n 'border-left-color',\n 'border-left-style',\n 'border-left-width',\n 'border-radius',\n 'border-right',\n 'border-right-color',\n 'border-right-style',\n 'border-right-width',\n 'border-spacing',\n 'border-style',\n 'border-top',\n 'border-top-color',\n 'border-top-left-radius',\n 'border-top-right-radius',\n 'border-top-style',\n 'border-top-width',\n 'border-width',\n 'bottom',\n 'box-decoration-break',\n 'box-shadow',\n 'box-sizing',\n 'break-after',\n 'break-before',\n 'break-inside',\n 'caption-side',\n 'clear',\n 'clip',\n 'clip-path',\n 'color',\n 'column-count',\n 'column-fill',\n 'column-gap',\n 'column-rule',\n 'column-rule-color',\n 'column-rule-style',\n 'column-rule-width',\n 'column-span',\n 'column-width',\n 'columns',\n 'content',\n 'counter-increment',\n 'counter-reset',\n 'cursor',\n 'direction',\n 'display',\n 'empty-cells',\n 'filter',\n 'flex',\n 'flex-basis',\n 'flex-direction',\n 'flex-flow',\n 'flex-grow',\n 'flex-shrink',\n 'flex-wrap',\n 'float',\n 'font',\n 'font-family',\n 'font-feature-settings',\n 'font-kerning',\n 'font-language-override',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-variant-ligatures',\n 'font-weight',\n 'height',\n 'hyphens',\n 'icon',\n 'image-orientation',\n 'image-rendering',\n 'image-resolution',\n 'ime-mode',\n 'inherit',\n 'initial',\n 'justify-content',\n 'left',\n 'letter-spacing',\n 'line-height',\n 'list-style',\n 'list-style-image',\n 'list-style-position',\n 'list-style-type',\n 'margin',\n 'margin-bottom',\n 'margin-left',\n 'margin-right',\n 'margin-top',\n 'marks',\n 'mask',\n 'max-height',\n 'max-width',\n 'min-height',\n 'min-width',\n 'nav-down',\n 'nav-index',\n 'nav-left',\n 'nav-right',\n 'nav-up',\n 'none',\n 'normal',\n 'object-fit',\n 'object-position',\n 'opacity',\n 'order',\n 'orphans',\n 'outline',\n 'outline-color',\n 'outline-offset',\n 'outline-style',\n 'outline-width',\n 'overflow',\n 'overflow-wrap',\n 'overflow-x',\n 'overflow-y',\n 'padding',\n 'padding-bottom',\n 'padding-left',\n 'padding-right',\n 'padding-top',\n 'page-break-after',\n 'page-break-before',\n 'page-break-inside',\n 'perspective',\n 'perspective-origin',\n 'pointer-events',\n 'position',\n 'quotes',\n 'resize',\n 'right',\n 'tab-size',\n 'table-layout',\n 'text-align',\n 'text-align-last',\n 'text-decoration',\n 'text-decoration-color',\n 'text-decoration-line',\n 'text-decoration-style',\n 'text-indent',\n 'text-overflow',\n 'text-rendering',\n 'text-shadow',\n 'text-transform',\n 'text-underline-position',\n 'top',\n 'transform',\n 'transform-origin',\n 'transform-style',\n 'transition',\n 'transition-delay',\n 'transition-duration',\n 'transition-property',\n 'transition-timing-function',\n 'unicode-bidi',\n 'vertical-align',\n 'visibility',\n 'white-space',\n 'widows',\n 'width',\n 'word-break',\n 'word-spacing',\n 'word-wrap',\n 'z-index'\n ];\n\n // illegals\n var ILLEGAL = [\n '\\\\?',\n '(\\\\bReturn\\\\b)', // monkey\n '(\\\\bEnd\\\\b)', // monkey\n '(\\\\bend\\\\b)', // vbscript\n '(\\\\bdef\\\\b)', // gradle\n ';', // a whole lot of languages\n '#\\\\s', // markdown\n '\\\\*\\\\s', // markdown\n '===\\\\s', // markdown\n '\\\\|',\n '%', // prolog\n ];\n\n return {\n aliases: ['styl'],\n case_insensitive: false,\n keywords: 'if else for in',\n illegal: '(' + ILLEGAL.join('|') + ')',\n contains: [\n\n // strings\n hljs.QUOTE_STRING_MODE,\n hljs.APOS_STRING_MODE,\n\n // comments\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n\n // hex colors\n HEX_COLOR,\n\n // class tag\n {\n begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-class', begin: '\\\\.[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // id tag\n {\n begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-id', begin: '\\\\#[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // tags\n {\n begin: '\\\\b(' + TAGS.join('|') + ')' + TAG_END,\n returnBegin: true,\n contains: [\n {className: 'selector-tag', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_-]*'}\n ]\n },\n\n // psuedo selectors\n {\n begin: '&?:?:\\\\b(' + PSEUDO_SELECTORS.join('|') + ')' + TAG_END\n },\n\n // @ keywords\n {\n begin: '\\@(' + AT_KEYWORDS.join('|') + ')\\\\b'\n },\n\n // variables\n VARIABLE,\n\n // dimension\n hljs.CSS_NUMBER_MODE,\n\n // number\n hljs.NUMBER_MODE,\n\n // functions\n // - only from beginning of line + whitespace\n {\n className: 'function',\n begin: '^[a-zA-Z][a-zA-Z0-9_\\-]*\\\\(.*\\\\)',\n illegal: '[\\\\n]',\n returnBegin: true,\n contains: [\n {className: 'title', begin: '\\\\b[a-zA-Z][a-zA-Z0-9_\\-]*'},\n {\n className: 'params',\n begin: /\\(/,\n end: /\\)/,\n contains: [\n HEX_COLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.NUMBER_MODE,\n hljs.QUOTE_STRING_MODE\n ]\n }\n ]\n },\n\n // attributes\n // - only from beginning of line + whitespace\n // - must have whitespace after it\n {\n className: 'attribute',\n begin: '\\\\b(' + ATTRIBUTES.reverse().join('|') + ')\\\\b',\n starts: {\n // value container\n end: /;|$/,\n contains: [\n HEX_COLOR,\n VARIABLE,\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.CSS_NUMBER_MODE,\n hljs.NUMBER_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /\\./,\n relevance: 0\n }\n }\n ]\n };\n};","module.exports = function(hljs) {\n var DETAILS = {\n className: 'string',\n begin: '\\\\[\\n(multipart)?', end: '\\\\]\\n'\n };\n var TIME = {\n className: 'string',\n begin: '\\\\d{4}-\\\\d{2}-\\\\d{2}(\\\\s+)\\\\d{2}:\\\\d{2}:\\\\d{2}\\.\\\\d+Z'\n };\n var PROGRESSVALUE = {\n className: 'string',\n begin: '(\\\\+|-)\\\\d+'\n };\n var KEYWORDS = {\n className: 'keyword',\n relevance: 10,\n variants: [\n { begin: '^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\\\s+(test)?' },\n { begin: '^progress(:?)(\\\\s+)?(pop|push)?' },\n { begin: '^tags:' },\n { begin: '^time:' }\n ],\n };\n return {\n case_insensitive: true,\n contains: [\n DETAILS,\n TIME,\n PROGRESSVALUE,\n KEYWORDS\n ]\n };\n};","module.exports = function(hljs) {\n var SWIFT_KEYWORDS = {\n keyword: '__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associatedtype associativity ' +\n 'break case catch class continue convenience default defer deinit didSet do ' +\n 'dynamic dynamicType else enum extension fallthrough false fileprivate final for func ' +\n 'get guard if import in indirect infix init inout internal is lazy left let ' +\n 'mutating nil none nonmutating open operator optional override postfix precedence ' +\n 'prefix private protocol Protocol public repeat required rethrows return ' +\n 'right self Self set static struct subscript super switch throw throws true ' +\n 'try try! try? Type typealias unowned var weak where while willSet',\n literal: 'true false nil',\n built_in: 'abs advance alignof alignofValue anyGenerator assert assertionFailure ' +\n 'bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC ' +\n 'bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros ' +\n 'debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords ' +\n 'enumerate equal fatalError filter find getBridgedObjectiveCType getVaList ' +\n 'indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC ' +\n 'isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare ' +\n 'map max maxElement min minElement numericCast overlaps partition posix ' +\n 'precondition preconditionFailure print println quickSort readLine reduce reflect ' +\n 'reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split ' +\n 'startsWith stride strideof strideofValue swap toString transcode ' +\n 'underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap ' +\n 'unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer ' +\n 'withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers ' +\n 'withUnsafePointer withUnsafePointers withVaList zip'\n };\n\n var TYPE = {\n className: 'type',\n begin: '\\\\b[A-Z][\\\\w\\u00C0-\\u02B8\\']*',\n relevance: 0\n };\n var BLOCK_COMMENT = hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: ['self']\n }\n );\n var SUBST = {\n className: 'subst',\n begin: /\\\\\\(/, end: '\\\\)',\n keywords: SWIFT_KEYWORDS,\n contains: [] // assigned later\n };\n var NUMBERS = {\n className: 'number',\n begin: '\\\\b([\\\\d_]+(\\\\.[\\\\deE_]+)?|0x[a-fA-F0-9_]+(\\\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\\\b',\n relevance: 0\n };\n var QUOTE_STRING_MODE = hljs.inherit(hljs.QUOTE_STRING_MODE, {\n contains: [SUBST, hljs.BACKSLASH_ESCAPE]\n });\n SUBST.contains = [NUMBERS];\n\n return {\n keywords: SWIFT_KEYWORDS,\n contains: [\n QUOTE_STRING_MODE,\n hljs.C_LINE_COMMENT_MODE,\n BLOCK_COMMENT,\n TYPE,\n NUMBERS,\n {\n className: 'function',\n beginKeywords: 'func', end: '{', excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n begin: /[A-Za-z$_][0-9A-Za-z$_]*/\n }),\n {\n begin: /</, end: />/\n },\n {\n className: 'params',\n begin: /\\(/, end: /\\)/, endsParent: true,\n keywords: SWIFT_KEYWORDS,\n contains: [\n 'self',\n NUMBERS,\n QUOTE_STRING_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {begin: ':'} // relevance booster\n ],\n illegal: /[\"']/\n }\n ],\n illegal: /\\[|%/\n },\n {\n className: 'class',\n beginKeywords: 'struct protocol class extension enum',\n keywords: SWIFT_KEYWORDS,\n end: '\\\\{',\n excludeEnd: true,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][\\u00C0-\\u02B80-9A-Za-z$_]*/})\n ]\n },\n {\n className: 'meta', // @attributes\n begin: '(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|' +\n '@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|' +\n '@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|' +\n '@infix|@prefix|@postfix|@autoclosure|@testable|@available|' +\n '@nonobjc|@NSApplicationMain|@UIApplicationMain)'\n\n },\n {\n beginKeywords: 'import', end: /$/,\n contains: [hljs.C_LINE_COMMENT_MODE, BLOCK_COMMENT]\n }\n ]\n };\n};","module.exports = function(hljs) {\n\n var COMMENT = {\n className: 'comment',\n begin: /\\$noop\\(/,\n end: /\\)/,\n contains: [{\n begin: /\\(/,\n end: /\\)/,\n contains: ['self', {\n begin: /\\\\./\n }]\n }],\n relevance: 10\n };\n\n var FUNCTION = {\n className: 'keyword',\n begin: /\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*/,\n end: /\\(/,\n excludeEnd: true\n };\n\n var VARIABLE = {\n className: 'variable',\n begin: /%[_a-zA-Z0-9:]*/,\n end: '%'\n };\n\n var ESCAPE_SEQUENCE = {\n className: 'symbol',\n begin: /\\\\./\n };\n\n return {\n contains: [\n COMMENT,\n FUNCTION,\n VARIABLE,\n ESCAPE_SEQUENCE\n ]\n };\n};","module.exports = function(hljs) {\n var LITERALS = 'true false yes no null';\n\n var keyPrefix = '^[ \\\\-]*';\n var keyName = '[a-zA-Z_][\\\\w\\\\-]*';\n var KEY = {\n className: 'attr',\n variants: [\n { begin: keyPrefix + keyName + \":\"},\n { begin: keyPrefix + '\"' + keyName + '\"' + \":\"},\n { begin: keyPrefix + \"'\" + keyName + \"'\" + \":\"}\n ]\n };\n\n var TEMPLATE_VARIABLES = {\n className: 'template-variable',\n variants: [\n { begin: '\\{\\{', end: '\\}\\}' }, // jinja templates Ansible\n { begin: '%\\{', end: '\\}' } // Ruby i18n\n ]\n };\n var STRING = {\n className: 'string',\n relevance: 0,\n variants: [\n {begin: /'/, end: /'/},\n {begin: /\"/, end: /\"/},\n {begin: /\\S+/}\n ],\n contains: [\n hljs.BACKSLASH_ESCAPE,\n TEMPLATE_VARIABLES\n ]\n };\n\n return {\n case_insensitive: true,\n aliases: ['yml', 'YAML', 'yaml'],\n contains: [\n KEY,\n {\n className: 'meta',\n begin: '^---\\s*$',\n relevance: 10\n },\n { // multi line string\n className: 'string',\n begin: '[\\\\|>] *$',\n returnEnd: true,\n contains: STRING.contains,\n // very simple termination: next hash key\n end: KEY.variants[0].begin\n },\n { // Ruby/Rails erb\n begin: '<%[%=-]?', end: '[%-]?%>',\n subLanguage: 'ruby',\n excludeBegin: true,\n excludeEnd: true,\n relevance: 0\n },\n { // local tags\n className: 'type',\n begin: '!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // data type\n className: 'type',\n begin: '!!' + hljs.UNDERSCORE_IDENT_RE,\n },\n { // fragment id &ref\n className: 'meta',\n begin: '&' + hljs.UNDERSCORE_IDENT_RE + '$',\n },\n { // fragment reference *ref\n className: 'meta',\n begin: '\\\\*' + hljs.UNDERSCORE_IDENT_RE + '$'\n },\n { // array listing\n className: 'bullet',\n begin: '^ *-',\n relevance: 0\n },\n hljs.HASH_COMMENT_MODE,\n {\n beginKeywords: LITERALS,\n keywords: {literal: LITERALS}\n },\n hljs.C_NUMBER_MODE,\n STRING\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n contains: [\n hljs.HASH_COMMENT_MODE,\n // version of format and total amount of testcases\n {\n className: 'meta',\n variants: [\n { begin: '^TAP version (\\\\d+)$' },\n { begin: '^1\\\\.\\\\.(\\\\d+)$' }\n ],\n },\n // YAML block\n {\n begin: '(\\s+)?---$', end: '\\\\.\\\\.\\\\.$',\n subLanguage: 'yaml',\n relevance: 0\n },\n\t // testcase number\n {\n className: 'number',\n begin: ' (\\\\d+) '\n },\n\t // testcase status and description\n {\n className: 'symbol',\n variants: [\n { begin: '^ok' },\n { begin: '^not ok' }\n ],\n },\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['tk'],\n keywords: 'after append apply array auto_execok auto_import auto_load auto_mkindex ' +\n 'auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock ' +\n 'close concat continue dde dict encoding eof error eval exec exit expr fblocked ' +\n 'fconfigure fcopy file fileevent filename flush for foreach format gets glob global ' +\n 'history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list ' +\n 'llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 '+\n 'mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex '+\n 'platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename '+\n 'return safe scan seek set socket source split string subst switch tcl_endOfWord '+\n 'tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter '+\n 'tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update '+\n 'uplevel upvar variable vwait while',\n contains: [\n hljs.COMMENT(';[ \\\\t]*#', '$'),\n hljs.COMMENT('^[ \\\\t]*#', '$'),\n {\n beginKeywords: 'proc',\n end: '[\\\\{]',\n excludeEnd: true,\n contains: [\n {\n className: 'title',\n begin: '[ \\\\t\\\\n\\\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '[ \\\\t\\\\n\\\\r]',\n endsWithParent: true,\n excludeEnd: true\n }\n ]\n },\n {\n excludeEnd: true,\n variants: [\n {\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\\\(([a-zA-Z0-9_])*\\\\)',\n end: '[^a-zA-Z0-9_\\\\}\\\\$]'\n },\n {\n begin: '\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*',\n end: '(\\\\))?[^a-zA-Z0-9_\\\\}\\\\$]'\n }\n ]\n },\n {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n },\n {\n className: 'number',\n variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]\n }\n ]\n }\n};","module.exports = function(hljs) {\n var COMMAND = {\n className: 'tag',\n begin: /\\\\/,\n relevance: 0,\n contains: [\n {\n className: 'name',\n variants: [\n {begin: /[a-zA-Zа-яА-я]+[*]?/},\n {begin: /[^a-zA-Zа-яА-я0-9]/}\n ],\n starts: {\n endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'string', // because it looks like attributes in HTML tags\n variants: [\n {begin: /\\[/, end: /\\]/},\n {begin: /\\{/, end: /\\}/}\n ]\n },\n {\n begin: /\\s*=\\s*/, endsWithParent: true,\n relevance: 0,\n contains: [\n {\n className: 'number',\n begin: /-?\\d*\\.?\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?/\n }\n ]\n }\n ]\n }\n }\n ]\n };\n\n return {\n contains: [\n COMMAND,\n {\n className: 'formula',\n contains: [COMMAND],\n relevance: 0,\n variants: [\n {begin: /\\$\\$/, end: /\\$\\$/},\n {begin: /\\$/, end: /\\$/}\n ]\n },\n hljs.COMMENT(\n '%',\n '$',\n {\n relevance: 0\n }\n )\n ]\n };\n};","module.exports = function(hljs) {\n var BUILT_IN_TYPES = 'bool byte i16 i32 i64 double string binary';\n return {\n keywords: {\n keyword:\n 'namespace const typedef struct enum service exception void oneway set list map required optional',\n built_in:\n BUILT_IN_TYPES,\n literal:\n 'true false'\n },\n contains: [\n hljs.QUOTE_STRING_MODE,\n hljs.NUMBER_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'class',\n beginKeywords: 'struct enum service exception', end: /\\{/,\n illegal: /\\n/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {\n starts: {endsWithParent: true, excludeEnd: true} // hack: eating everything after the first title\n })\n ]\n },\n {\n begin: '\\\\b(set|list|map)\\\\s*<', end: '>',\n keywords: BUILT_IN_TYPES,\n contains: ['self']\n }\n ]\n };\n};","module.exports = function(hljs) {\n var TPID = {\n className: 'number',\n begin: '[1-9][0-9]*', /* no leading zeros */\n relevance: 0\n };\n var TPLABEL = {\n className: 'symbol',\n begin: ':[^\\\\]]+'\n };\n var TPDATA = {\n className: 'built_in',\n begin: '(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|\\\n TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n TPLABEL\n ]\n };\n var TPIO = {\n className: 'built_in',\n begin: '(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[', end: '\\\\]',\n contains: [\n 'self',\n TPID,\n hljs.QUOTE_STRING_MODE, /* for pos section at bottom */\n TPLABEL\n ]\n };\n\n return {\n keywords: {\n keyword:\n 'ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB ' +\n 'DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC ' +\n 'IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE ' +\n 'PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET ' +\n 'Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN ' +\n 'SUBSTR FINDSTR VOFFSET PROG ATTR MN POS',\n literal:\n 'ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET'\n },\n contains: [\n TPDATA,\n TPIO,\n {\n className: 'keyword',\n begin: '/(PROG|ATTR|MN|POS|END)\\\\b'\n },\n {\n /* this is for cases like ,CALL */\n className: 'keyword',\n begin: '(CALL|RUN|POINT_LOGIC|LBL)\\\\b'\n },\n {\n /* this is for cases like CNT100 where the default lexemes do not\n * separate the keyword and the number */\n className: 'keyword',\n begin: '\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)'\n },\n {\n /* to catch numbers that do not have a word boundary on the left */\n className: 'number',\n begin: '\\\\d+(sec|msec|mm/sec|cm/min|inch/min|deg/sec|mm|in|cm)?\\\\b',\n relevance: 0\n },\n hljs.COMMENT('//', '[;$]'),\n hljs.COMMENT('!', '[;$]'),\n hljs.COMMENT('--eg:', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n begin: '\\'', end: '\\''\n },\n hljs.C_NUMBER_MODE,\n {\n className: 'variable',\n begin: '\\\\$[A-Za-z0-9_]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var PARAMS = {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n };\n\n var FUNCTION_NAMES = 'attribute block constant cycle date dump include ' +\n 'max min parent random range source template_from_string';\n\n var FUNCTIONS = {\n beginKeywords: FUNCTION_NAMES,\n keywords: {name: FUNCTION_NAMES},\n relevance: 0,\n contains: [\n PARAMS\n ]\n };\n\n var FILTER = {\n begin: /\\|[A-Za-z_]+:?/,\n keywords:\n 'abs batch capitalize convert_encoding date date_modify default ' +\n 'escape first format join json_encode keys last length lower ' +\n 'merge nl2br number_format raw replace reverse round slice sort split ' +\n 'striptags title trim upper url_encode',\n contains: [\n FUNCTIONS\n ]\n };\n\n var TAGS = 'autoescape block do embed extends filter flush for ' +\n 'if import include macro sandbox set spaceless use verbatim';\n\n TAGS = TAGS + ' ' + TAGS.split(' ').map(function(t){return 'end' + t}).join(' ');\n\n return {\n aliases: ['craftcms'],\n case_insensitive: true,\n subLanguage: 'xml',\n contains: [\n hljs.COMMENT(/\\{#/, /#}/),\n {\n className: 'template-tag',\n begin: /\\{%/, end: /%}/,\n contains: [\n {\n className: 'name',\n begin: /\\w+/,\n keywords: TAGS,\n starts: {\n endsWithParent: true,\n contains: [FILTER, FUNCTIONS],\n relevance: 0\n }\n }\n ]\n },\n {\n className: 'template-variable',\n begin: /\\{\\{/, end: /}}/,\n contains: ['self', FILTER, FUNCTIONS]\n }\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = {\n keyword:\n 'in if for while finally var new function do return void else break catch ' +\n 'instanceof with throw case default try this switch continue typeof delete ' +\n 'let yield const class public private protected get set super ' +\n 'static implements enum export import declare type namespace abstract ' +\n 'as from extends async await',\n literal:\n 'true false null undefined NaN Infinity',\n built_in:\n 'eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent ' +\n 'encodeURI encodeURIComponent escape unescape Object Function Boolean Error ' +\n 'EvalError InternalError RangeError ReferenceError StopIteration SyntaxError ' +\n 'TypeError URIError Number Math Date String RegExp Array Float32Array ' +\n 'Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array ' +\n 'Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require ' +\n 'module console window document any number boolean string void Promise'\n };\n\n return {\n aliases: ['ts'],\n keywords: KEYWORDS,\n contains: [\n {\n className: 'meta',\n begin: /^\\s*['\"]use strict['\"]/\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n { // template string\n className: 'string',\n begin: '`', end: '`',\n contains: [\n hljs.BACKSLASH_ESCAPE,\n {\n className: 'subst',\n begin: '\\\\$\\\\{', end: '\\\\}'\n }\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'number',\n variants: [\n { begin: '\\\\b(0[bB][01]+)' },\n { begin: '\\\\b(0[oO][0-7]+)' },\n { begin: hljs.C_NUMBER_RE }\n ],\n relevance: 0\n },\n { // \"value\" container\n begin: '(' + hljs.RE_STARTERS_RE + '|\\\\b(case|return|throw)\\\\b)\\\\s*',\n keywords: 'return throw case',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.REGEXP_MODE,\n {\n className: 'function',\n begin: '(\\\\(.*?\\\\)|' + hljs.IDENT_RE + ')\\\\s*=>', returnBegin: true,\n end: '\\\\s*=>',\n contains: [\n {\n className: 'params',\n variants: [\n {\n begin: hljs.IDENT_RE\n },\n {\n begin: /\\(\\s*\\)/,\n },\n {\n begin: /\\(/, end: /\\)/,\n excludeBegin: true, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ]\n }\n ]\n }\n ]\n }\n ],\n relevance: 0\n },\n {\n className: 'function',\n begin: 'function', end: /[\\{;]/, excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n 'self',\n hljs.inherit(hljs.TITLE_MODE, {begin: /[A-Za-z$_][0-9A-Za-z$_]*/}),\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ],\n illegal: /%/,\n relevance: 0 // () => {} is more typical in TypeScript\n },\n {\n beginKeywords: 'constructor', end: /\\{/, excludeEnd: true,\n contains: [\n 'self',\n {\n className: 'params',\n begin: /\\(/, end: /\\)/,\n excludeBegin: true,\n excludeEnd: true,\n keywords: KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE\n ],\n illegal: /[\"'\\(]/\n }\n ]\n },\n { // prevent references like module.id from being higlighted as module definitions\n begin: /module\\./,\n keywords: {built_in: 'module'},\n relevance: 0\n },\n {\n beginKeywords: 'module', end: /\\{/, excludeEnd: true\n },\n {\n beginKeywords: 'interface', end: /\\{/, excludeEnd: true,\n keywords: 'interface extends'\n },\n {\n begin: /\\$[(.]/ // relevance booster for a pattern common to JS libs: `$(something)` and `$.something`\n },\n {\n begin: '\\\\.' + hljs.IDENT_RE, relevance: 0 // hack: prevents detection of keywords after dots\n },\n {\n className: 'meta', begin: '@[A-Za-z]+'\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n keywords: {\n keyword:\n // Value types\n 'char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 ' +\n 'uint16 uint32 uint64 float double bool struct enum string void ' +\n // Reference types\n 'weak unowned owned ' +\n // Modifiers\n 'async signal static abstract interface override virtual delegate ' +\n // Control Structures\n 'if while do for foreach else switch case break default return try catch ' +\n // Visibility\n 'public private protected internal ' +\n // Other\n 'using new this get set const stdout stdin stderr var',\n built_in:\n 'DBus GLib CCode Gee Object Gtk Posix',\n literal:\n 'false true null'\n },\n contains: [\n {\n className: 'class',\n beginKeywords: 'class interface namespace', end: '{', excludeEnd: true,\n illegal: '[^,:\\\\n\\\\s\\\\.]',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n {\n className: 'string',\n begin: '\"\"\"', end: '\"\"\"',\n relevance: 5\n },\n hljs.APOS_STRING_MODE,\n hljs.QUOTE_STRING_MODE,\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '^#', end: '$',\n relevance: 2\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['vb'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'addhandler addressof alias and andalso aggregate ansi as assembly auto binary by byref byval ' + /* a-b */\n 'call case catch class compare const continue custom declare default delegate dim distinct do ' + /* c-d */\n 'each equals else elseif end enum erase error event exit explicit finally for friend from function ' + /* e-f */\n 'get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue ' + /* g-i */\n 'join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass ' + /* j-m */\n 'namespace narrowing new next not notinheritable notoverridable ' + /* n */\n 'of off on operator option optional or order orelse overloads overridable overrides ' + /* o */\n 'paramarray partial preserve private property protected public ' + /* p */\n 'raiseevent readonly redim rem removehandler resume return ' + /* r */\n 'select set shadows shared skip static step stop structure strict sub synclock ' + /* s */\n 'take text then throw to try unicode until using when where while widening with withevents writeonly xor', /* t-x */\n built_in:\n 'boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype ' + /* b-c */\n 'date decimal directcast double gettype getxmlnamespace iif integer long object ' + /* d-o */\n 'sbyte short single string trycast typeof uinteger ulong ushort', /* s-u */\n literal:\n 'true false nothing'\n },\n illegal: '//|{|}|endif|gosub|variant|wend|^\\\\$ ', /* reserved deprecated keywords */\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n '\\'',\n '$',\n {\n returnBegin: true,\n contains: [\n {\n className: 'doctag',\n begin: '\\'\\'\\'|<!--|-->',\n contains: [hljs.PHRASAL_WORDS_MODE]\n },\n {\n className: 'doctag',\n begin: '</?', end: '>',\n contains: [hljs.PHRASAL_WORDS_MODE]\n }\n ]\n }\n ),\n hljs.C_NUMBER_MODE,\n {\n className: 'meta',\n begin: '#', end: '$',\n keywords: {'meta-keyword': 'if else elseif end region externalsource'}\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n aliases: ['vbs'],\n case_insensitive: true,\n keywords: {\n keyword:\n 'call class const dim do loop erase execute executeglobal exit for each next function ' +\n 'if then else on error option explicit new private property let get public randomize ' +\n 'redim rem select case set stop sub while wend with end to elseif is or xor and not ' +\n 'class_initialize class_terminate default preserve in me byval byref step resume goto',\n built_in:\n 'lcase month vartype instrrev ubound setlocale getobject rgb getref string ' +\n 'weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency ' +\n 'conversions csng timevalue second year space abs clng timeserial fixs len asc ' +\n 'isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate ' +\n 'instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex ' +\n 'chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim ' +\n 'strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion ' +\n 'scriptengine split scriptengineminorversion cint sin datepart ltrim sqr ' +\n 'scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw ' +\n 'chrw regexp server response request cstr err',\n literal:\n 'true false null nothing empty'\n },\n illegal: '//',\n contains: [\n hljs.inherit(hljs.QUOTE_STRING_MODE, {contains: [{begin: '\"\"'}]}),\n hljs.COMMENT(\n /'/,\n /$/,\n {\n relevance: 0\n }\n ),\n hljs.C_NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n return {\n subLanguage: 'xml',\n contains: [\n {\n begin: '<%', end: '%>',\n subLanguage: 'vbscript'\n }\n ]\n };\n};","module.exports = function(hljs) {\n var SV_KEYWORDS = {\n keyword:\n 'accept_on alias always always_comb always_ff always_latch and assert assign ' +\n 'assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 ' +\n 'byte case casex casez cell chandle checker class clocking cmos config const ' +\n 'constraint context continue cover covergroup coverpoint cross deassign default ' +\n 'defparam design disable dist do edge else end endcase endchecker endclass ' +\n 'endclocking endconfig endfunction endgenerate endgroup endinterface endmodule ' +\n 'endpackage endprimitive endprogram endproperty endspecify endsequence endtable ' +\n 'endtask enum event eventually expect export extends extern final first_match for ' +\n 'force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 ' +\n 'if iff ifnone ignore_bins illegal_bins implements implies import incdir include ' +\n 'initial inout input inside instance int integer interconnect interface intersect ' +\n 'join join_any join_none large let liblist library local localparam logic longint ' +\n 'macromodule matches medium modport module nand negedge nettype new nexttime nmos ' +\n 'nor noshowcancelled not notif0 notif1 or output package packed parameter pmos ' +\n 'posedge primitive priority program property protected pull0 pull1 pulldown pullup ' +\n 'pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos ' +\n 'real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran ' +\n 'rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared ' +\n 'sequence shortint shortreal showcancelled signed small soft solve specify specparam ' +\n 'static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on ' +\n 'sync_reject_on table tagged task this throughout time timeprecision timeunit tran ' +\n 'tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 ' +\n 'unsigned until until_with untyped use uwire var vectored virtual void wait wait_order ' +\n 'wand weak weak0 weak1 while wildcard wire with within wor xnor xor',\n literal:\n 'null',\n built_in:\n '$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale ' +\n '$bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat ' +\n '$realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson ' +\n '$assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff ' +\n '$assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk ' +\n '$fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control ' +\n '$coverage_get $coverage_save $set_coverage_db_name $rose $stable $past ' +\n '$rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display ' +\n '$coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename ' +\n '$unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow ' +\n '$floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning ' +\n '$dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh ' +\n '$tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random ' +\n '$dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson ' +\n '$dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array ' +\n '$async$nand$array $async$or$array $async$nor$array $sync$and$array ' +\n '$sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf ' +\n '$async$and$plane $async$nand$plane $async$or$plane $async$nor$plane ' +\n '$sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system ' +\n '$display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo ' +\n '$write $readmemb $readmemh $writememh $value$plusargs ' +\n '$dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit ' +\n '$writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb ' +\n '$dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall ' +\n '$dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo ' +\n '$fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh ' +\n '$swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb ' +\n '$fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat ' +\n '$sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror'\n };\n return {\n aliases: ['v', 'sv', 'svh'],\n case_insensitive: false,\n keywords: SV_KEYWORDS, lexemes: /[\\w\\$]+/,\n contains: [\n hljs.C_BLOCK_COMMENT_MODE,\n hljs.C_LINE_COMMENT_MODE,\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {begin: '\\\\b((\\\\d+\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\B((\\'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)'},\n {begin: '\\\\b([0-9_])+', relevance: 0}\n ]\n },\n /* parameters to instances */\n {\n className: 'variable',\n variants: [\n {begin: '#\\\\((?!parameter).+\\\\)'},\n {begin: '\\\\.\\\\w+', relevance: 0},\n ]\n },\n {\n className: 'meta',\n begin: '`', end: '$',\n keywords: {'meta-keyword': 'define __FILE__ ' +\n '__LINE__ begin_keywords celldefine default_nettype define ' +\n 'else elsif end_keywords endcelldefine endif ifdef ifndef ' +\n 'include line nounconnected_drive pragma resetall timescale ' +\n 'unconnected_drive undef undefineall'},\n relevance: 0\n }\n ]\n }; // return\n};","module.exports = function(hljs) {\n // Regular expression for VHDL numeric literals.\n\n // Decimal literal:\n var INTEGER_RE = '\\\\d(_|\\\\d)*';\n var EXPONENT_RE = '[eE][-+]?' + INTEGER_RE;\n var DECIMAL_LITERAL_RE = INTEGER_RE + '(\\\\.' + INTEGER_RE + ')?' + '(' + EXPONENT_RE + ')?';\n // Based literal:\n var BASED_INTEGER_RE = '\\\\w+';\n var BASED_LITERAL_RE = INTEGER_RE + '#' + BASED_INTEGER_RE + '(\\\\.' + BASED_INTEGER_RE + ')?' + '#' + '(' + EXPONENT_RE + ')?';\n\n var NUMBER_RE = '\\\\b(' + BASED_LITERAL_RE + '|' + DECIMAL_LITERAL_RE + ')';\n\n return {\n case_insensitive: true,\n keywords: {\n keyword:\n 'abs access after alias all and architecture array assert assume assume_guarantee attribute ' +\n 'begin block body buffer bus case component configuration constant context cover disconnect ' +\n 'downto default else elsif end entity exit fairness file for force function generate ' +\n 'generic group guarded if impure in inertial inout is label library linkage literal ' +\n 'loop map mod nand new next nor not null of on open or others out package parameter port ' +\n 'postponed procedure process property protected pure range record register reject ' +\n 'release rem report restrict restrict_guarantee return rol ror select sequence ' +\n 'severity shared signal sla sll sra srl strong subtype then to transport type ' +\n 'unaffected units until use variable view vmode vprop vunit wait when while with xnor xor',\n built_in:\n 'boolean bit character ' +\n 'integer time delay_length natural positive ' +\n 'string bit_vector file_open_kind file_open_status ' +\n 'std_logic std_logic_vector unsigned signed boolean_vector integer_vector ' +\n 'std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed ' +\n 'real_vector time_vector',\n literal:\n 'false true note warning error failure ' + // severity_level\n 'line text side width' // textio\n },\n illegal: '{',\n contains: [\n hljs.C_BLOCK_COMMENT_MODE, // VHDL-2008 block commenting.\n hljs.COMMENT('--', '$'),\n hljs.QUOTE_STRING_MODE,\n {\n className: 'number',\n begin: NUMBER_RE,\n relevance: 0\n },\n {\n className: 'string',\n begin: '\\'(U|X|0|1|Z|W|L|H|-)\\'',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n className: 'symbol',\n begin: '\\'[A-Za-z](_?[A-Za-z0-9])*',\n contains: [hljs.BACKSLASH_ESCAPE]\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n lexemes: /[!#@\\w]+/,\n keywords: {\n keyword:\n // express version except: ! & * < = > !! # @ @@\n 'N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope '+\n 'cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc '+\n 'ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 '+\n 'profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor '+\n 'so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew '+\n 'tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ '+\n // full version\n 'Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload '+\n 'bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap '+\n 'cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor '+\n 'endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap '+\n 'imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview '+\n 'lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap '+\n 'nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext '+\n 'ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding '+\n 'scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace '+\n 'startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious '+'trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew '+\n 'vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank',\n built_in: //built in func\n 'synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv ' +\n 'complete_check add getwinposx getqflist getwinposy screencol ' +\n 'clearmatches empty extend getcmdpos mzeval garbagecollect setreg ' +\n 'ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable ' +\n 'shiftwidth max sinh isdirectory synID system inputrestore winline ' +\n 'atan visualmode inputlist tabpagewinnr round getregtype mapcheck ' +\n 'hasmapto histdel argidx findfile sha256 exists toupper getcmdline ' +\n 'taglist string getmatches bufnr strftime winwidth bufexists ' +\n 'strtrans tabpagebuflist setcmdpos remote_read printf setloclist ' +\n 'getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval ' +\n 'resolve libcallnr foldclosedend reverse filter has_key bufname ' +\n 'str2float strlen setline getcharmod setbufvar index searchpos ' +\n 'shellescape undofile foldclosed setqflist buflisted strchars str2nr ' +\n 'virtcol floor remove undotree remote_expr winheight gettabwinvar ' +\n 'reltime cursor tabpagenr finddir localtime acos getloclist search ' +\n 'tanh matchend rename gettabvar strdisplaywidth type abs py3eval ' +\n 'setwinvar tolower wildmenumode log10 spellsuggest bufloaded ' +\n 'synconcealed nextnonblank server2client complete settabwinvar ' +\n 'executable input wincol setmatches getftype hlID inputsave ' +\n 'searchpair or screenrow line settabvar histadd deepcopy strpart ' +\n 'remote_peek and eval getftime submatch screenchar winsaveview ' +\n 'matchadd mkdir screenattr getfontname libcall reltimestr getfsize ' +\n 'winnr invert pow getbufline byte2line soundfold repeat fnameescape ' +\n 'tagfiles sin strwidth spellbadword trunc maparg log lispindent ' +\n 'hostname setpos globpath remote_foreground getchar synIDattr ' +\n 'fnamemodify cscope_connection stridx winbufnr indent min ' +\n 'complete_add nr2char searchpairpos inputdialog values matchlist ' +\n 'items hlexists strridx browsedir expand fmod pathshorten line2byte ' +\n 'argc count getwinvar glob foldtextresult getreg foreground cosh ' +\n 'matchdelete has char2nr simplify histget searchdecl iconv ' +\n 'winrestcmd pumvisible writefile foldlevel haslocaldir keys cos ' +\n 'matchstr foldtext histnr tan tempname getcwd byteidx getbufvar ' +\n 'islocked escape eventhandler remote_send serverlist winrestview ' +\n 'synstack pyeval prevnonblank readfile cindent filereadable changenr ' +\n 'exp'\n },\n illegal: /;/,\n contains: [\n hljs.NUMBER_MODE,\n {\n className: 'string',\n begin: '\\'', end: '\\'',\n illegal: '\\\\n'\n },\n\n /*\n A double quote can start either a string or a line comment. Strings are\n ended before the end of a line by another double quote and can contain\n escaped double-quotes and post-escaped line breaks.\n\n Also, any double quote at the beginning of a line is a comment but we\n don't handle that properly at the moment: any double quote inside will\n turn them into a string. Handling it properly will require a smarter\n parser.\n */\n {\n className: 'string',\n begin: /\"(\\\\\"|\\n\\\\|[^\"\\n])*\"/\n },\n hljs.COMMENT('\"', '$'),\n\n {\n className: 'variable',\n begin: /[bwtglsav]:[\\w\\d_]*/\n },\n {\n className: 'function',\n beginKeywords: 'function function!', end: '$',\n relevance: 0,\n contains: [\n hljs.TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)'\n }\n ]\n },\n {\n className: 'symbol',\n begin: /<[\\w-]+>/\n }\n ]\n };\n};","module.exports = function(hljs) {\n return {\n case_insensitive: true,\n lexemes: '[.%]?' + hljs.IDENT_RE,\n keywords: {\n keyword:\n 'lock rep repe repz repne repnz xaquire xrelease bnd nobnd ' +\n 'aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63',\n built_in:\n // Instruction pointer\n 'ip eip rip ' +\n // 8-bit registers\n 'al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ' +\n // 16-bit registers\n 'ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w ' +\n // 32-bit registers\n 'eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d ' +\n // 64-bit registers\n 'rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 ' +\n // Segment registers\n 'cs ds es fs gs ss ' +\n // Floating point stack registers\n 'st st0 st1 st2 st3 st4 st5 st6 st7 ' +\n // MMX Registers\n 'mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 ' +\n // SSE registers\n 'xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15 ' +\n 'xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ' +\n // AVX registers\n 'ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15 ' +\n 'ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 ' +\n // AVX-512F registers\n 'zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15 ' +\n 'zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 ' +\n // AVX-512F mask registers\n 'k0 k1 k2 k3 k4 k5 k6 k7 ' +\n // Bound (MPX) register\n 'bnd0 bnd1 bnd2 bnd3 ' +\n // Special register\n 'cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 ' +\n // NASM altreg package\n 'r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b ' +\n 'r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d ' +\n 'r0h r1h r2h r3h ' +\n 'r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l ' +\n\n 'db dw dd dq dt ddq do dy dz ' +\n 'resb resw resd resq rest resdq reso resy resz ' +\n 'incbin equ times ' +\n 'byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr',\n\n meta:\n '%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif ' +\n '%if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep ' +\n '%endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment ' +\n '.nolist ' +\n '__FILE__ __LINE__ __SECT__ __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ ' +\n '__UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__ __PASS__ struc endstruc istruc at iend ' +\n 'align alignb sectalign daz nodaz up down zero default option assume public ' +\n\n 'bits use16 use32 use64 default section segment absolute extern global common cpu float ' +\n '__utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ ' +\n '__float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ ' +\n '__Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e ' +\n 'float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__'\n },\n contains: [\n hljs.COMMENT(\n ';',\n '$',\n {\n relevance: 0\n }\n ),\n {\n className: 'number',\n variants: [\n // Float number and x87 BCD\n {\n begin: '\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|' +\n '(0[Xx])?[0-9][0-9_]*\\\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b',\n relevance: 0\n },\n\n // Hex number in $\n { begin: '\\\\$[0-9][0-9A-Fa-f]*', relevance: 0 },\n\n // Number in H,D,T,Q,O,B,Y suffix\n { begin: '\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b' },\n\n // Number in X,D,T,Q,O,B,Y prefix\n { begin: '\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b'}\n ]\n },\n // Double quote string\n hljs.QUOTE_STRING_MODE,\n {\n className: 'string',\n variants: [\n // Single-quoted string\n { begin: '\\'', end: '[^\\\\\\\\]\\'' },\n // Backquoted string\n { begin: '`', end: '[^\\\\\\\\]`' }\n ],\n relevance: 0\n },\n {\n className: 'symbol',\n variants: [\n // Global label and local label\n { begin: '^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)' },\n // Macro-local label\n { begin: '^\\\\s*%%[A-Za-z0-9_$#@~.?]*:' }\n ],\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%[0-9]+',\n relevance: 0\n },\n // Macro parameter\n {\n className: 'subst',\n begin: '%!\\S+',\n relevance: 0\n },\n {\n className: 'meta',\n begin: /^\\s*\\.[\\w_-]+/\n }\n ]\n };\n};","module.exports = function(hljs) {\n var BUILTIN_MODULES =\n 'ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo ' +\n 'StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts';\n\n var XL_KEYWORDS = {\n keyword:\n 'if then else do while until for loop import with is as where when by data constant ' +\n 'integer real text name boolean symbol infix prefix postfix block tree',\n literal:\n 'true false nil',\n built_in:\n 'in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin ' +\n 'acos atan exp expm1 log log2 log10 log1p pi at text_length text_range ' +\n 'text_find text_replace contains page slide basic_slide title_slide ' +\n 'title subtitle fade_in fade_out fade_at clear_color color line_color ' +\n 'line_width texture_wrap texture_transform texture scale_?x scale_?y ' +\n 'scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y ' +\n 'rotate_?z? rectangle circle ellipse sphere path line_to move_to ' +\n 'quad_to curve_to theme background contents locally time mouse_?x ' +\n 'mouse_?y mouse_buttons ' +\n BUILTIN_MODULES\n };\n\n var DOUBLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\"', end: '\"', illegal: '\\\\n'\n };\n var SINGLE_QUOTE_TEXT = {\n className: 'string',\n begin: '\\'', end: '\\'', illegal: '\\\\n'\n };\n var LONG_TEXT = {\n className: 'string',\n begin: '<<', end: '>>'\n };\n var BASED_NUMBER = {\n className: 'number',\n begin: '[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?'\n };\n var IMPORT = {\n beginKeywords: 'import', end: '$',\n keywords: XL_KEYWORDS,\n contains: [DOUBLE_QUOTE_TEXT]\n };\n var FUNCTION_DEFINITION = {\n className: 'function',\n begin: /[a-z][^\\n]*->/, returnBegin: true, end: /->/,\n contains: [\n hljs.inherit(hljs.TITLE_MODE, {starts: {\n endsWithParent: true,\n keywords: XL_KEYWORDS\n }})\n ]\n };\n return {\n aliases: ['tao'],\n lexemes: /[a-zA-Z][a-zA-Z0-9_?]*/,\n keywords: XL_KEYWORDS,\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.C_BLOCK_COMMENT_MODE,\n DOUBLE_QUOTE_TEXT,\n SINGLE_QUOTE_TEXT,\n LONG_TEXT,\n FUNCTION_DEFINITION,\n IMPORT,\n BASED_NUMBER,\n hljs.NUMBER_MODE\n ]\n };\n};","module.exports = function(hljs) {\n var KEYWORDS = 'for let if while then else return where group by xquery encoding version' +\n 'module namespace boundary-space preserve strip default collation base-uri ordering' +\n 'copy-namespaces order declare import schema namespace function option in allowing empty' +\n 'at tumbling window sliding window start when only end when previous next stable ascending' +\n 'descending empty greatest least some every satisfies switch case typeswitch try catch and' +\n 'or to union intersect instance of treat as castable cast map array delete insert into' +\n 'replace value rename copy modify update';\n var LITERAL = 'false true xs:string xs:integer element item xs:date xs:datetime xs:float xs:double xs:decimal QName xs:anyURI xs:long xs:int xs:short xs:byte attribute';\n var VAR = {\n begin: /\\$[a-zA-Z0-9\\-]+/\n };\n\n var NUMBER = {\n className: 'number',\n begin: '(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b',\n relevance: 0\n };\n\n var STRING = {\n className: 'string',\n variants: [\n {begin: /\"/, end: /\"/, contains: [{begin: /\"\"/, relevance: 0}]},\n {begin: /'/, end: /'/, contains: [{begin: /''/, relevance: 0}]}\n ]\n };\n\n var ANNOTATION = {\n className: 'meta',\n begin: '%\\\\w+'\n };\n\n var COMMENT = {\n className: 'comment',\n begin: '\\\\(:', end: ':\\\\)',\n relevance: 10,\n contains: [\n {\n className: 'doctag', begin: '@\\\\w+'\n }\n ]\n };\n\n var METHOD = {\n begin: '{', end: '}'\n };\n\n var CONTAINS = [\n VAR,\n STRING,\n NUMBER,\n COMMENT,\n ANNOTATION,\n METHOD\n ];\n METHOD.contains = CONTAINS;\n\n\n return {\n aliases: ['xpath', 'xq'],\n case_insensitive: false,\n lexemes: /[a-zA-Z\\$][a-zA-Z0-9_:\\-]*/,\n illegal: /(proc)|(abstract)|(extends)|(until)|(#)/,\n keywords: {\n keyword: KEYWORDS,\n literal: LITERAL\n },\n contains: CONTAINS\n };\n};","module.exports = function(hljs) {\n var STRING = {\n className: 'string',\n contains: [hljs.BACKSLASH_ESCAPE],\n variants: [\n {\n begin: 'b\"', end: '\"'\n },\n {\n begin: 'b\\'', end: '\\''\n },\n hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),\n hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null})\n ]\n };\n var NUMBER = {variants: [hljs.BINARY_NUMBER_MODE, hljs.C_NUMBER_MODE]};\n return {\n aliases: ['zep'],\n case_insensitive: true,\n keywords:\n 'and include_once list abstract global private echo interface as static endswitch ' +\n 'array null if endwhile or const for endforeach self var let while isset public ' +\n 'protected exit foreach throw elseif include __FILE__ empty require_once do xor ' +\n 'return parent clone use __CLASS__ __LINE__ else break print eval new ' +\n 'catch __METHOD__ case exception default die require __FUNCTION__ ' +\n 'enddeclare final try switch continue endfor endif declare unset true false ' +\n 'trait goto instanceof insteadof __DIR__ __NAMESPACE__ ' +\n 'yield finally int uint long ulong char uchar double float bool boolean string' +\n 'likely unlikely',\n contains: [\n hljs.C_LINE_COMMENT_MODE,\n hljs.HASH_COMMENT_MODE,\n hljs.COMMENT(\n '/\\\\*',\n '\\\\*/',\n {\n contains: [\n {\n className: 'doctag',\n begin: '@[A-Za-z]+'\n }\n ]\n }\n ),\n hljs.COMMENT(\n '__halt_compiler.+?;',\n false,\n {\n endsWithParent: true,\n keywords: '__halt_compiler',\n lexemes: hljs.UNDERSCORE_IDENT_RE\n }\n ),\n {\n className: 'string',\n begin: '<<<[\\'\"]?\\\\w+[\\'\"]?$', end: '^\\\\w+;',\n contains: [hljs.BACKSLASH_ESCAPE]\n },\n {\n // swallow composed identifiers to avoid parsing them as keywords\n begin: /(::|->)+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*/\n },\n {\n className: 'function',\n beginKeywords: 'function', end: /[;{]/, excludeEnd: true,\n illegal: '\\\\$|\\\\[|%',\n contains: [\n hljs.UNDERSCORE_TITLE_MODE,\n {\n className: 'params',\n begin: '\\\\(', end: '\\\\)',\n contains: [\n 'self',\n hljs.C_BLOCK_COMMENT_MODE,\n STRING,\n NUMBER\n ]\n }\n ]\n },\n {\n className: 'class',\n beginKeywords: 'class interface', end: '{', excludeEnd: true,\n illegal: /[:\\(\\$\"]/,\n contains: [\n {beginKeywords: 'extends implements'},\n hljs.UNDERSCORE_TITLE_MODE\n ]\n },\n {\n beginKeywords: 'namespace', end: ';',\n illegal: /[\\.']/,\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n beginKeywords: 'use', end: ';',\n contains: [hljs.UNDERSCORE_TITLE_MODE]\n },\n {\n begin: '=>' // No markup, just a relevance booster\n },\n STRING,\n NUMBER\n ]\n };\n};","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _InteractiveAuthEntryComponents = require('../views/login/InteractiveAuthEntryComponents');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar InteractiveAuth = _matrixJsSdk2.default.InteractiveAuth; /*\n Copyright 2017 Vector Creations Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = _react2.default.createClass({\n displayName: 'InteractiveAuth',\n\n propTypes: {\n // matrix client to use for UI auth requests\n matrixClient: _propTypes2.default.object.isRequired,\n\n // response from initial request. If not supplied, will do a request on\n // mount.\n authData: _propTypes2.default.shape({\n flows: _propTypes2.default.array,\n params: _propTypes2.default.object,\n session: _propTypes2.default.string\n }),\n\n // callback\n makeRequest: _propTypes2.default.func.isRequired,\n\n // callback called when the auth process has finished,\n // successfully or unsuccessfully.\n // @param {bool} status True if the operation requiring\n // auth was completed sucessfully, false if canceled.\n // @param {object} result The result of the authenticated call\n // if successful, otherwise the error object\n // @param {object} extra Additional information about the UI Auth\n // process:\n // * emailSid {string} If email auth was performed, the sid of\n // the auth session.\n // * clientSecret {string} The client secret used in auth\n // sessions with the ID server.\n onAuthFinished: _propTypes2.default.func.isRequired,\n\n // Inputs provided by the user to the auth process\n // and used by various stages. As passed to js-sdk\n // interactive-auth\n inputs: _propTypes2.default.object,\n\n // As js-sdk interactive-auth\n makeRegistrationUrl: _propTypes2.default.func,\n sessionId: _propTypes2.default.string,\n clientSecret: _propTypes2.default.string,\n emailSid: _propTypes2.default.string,\n\n // If true, poll to see if the auth flow has been completed\n // out-of-band\n poll: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n authStage: null,\n busy: false,\n errorText: null,\n stageErrorText: null,\n submitButtonEnabled: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n this._authLogic = new InteractiveAuth({\n authData: this.props.authData,\n doRequest: this._requestCallback,\n inputs: this.props.inputs,\n stateUpdated: this._authStateUpdated,\n matrixClient: this.props.matrixClient,\n sessionId: this.props.sessionId,\n clientSecret: this.props.clientSecret,\n emailSid: this.props.emailSid\n });\n\n this._authLogic.attemptAuth().then(function (result) {\n var extra = {\n emailSid: _this._authLogic.getEmailSid(),\n clientSecret: _this._authLogic.getClientSecret()\n };\n _this.props.onAuthFinished(true, result, extra);\n }).catch(function (error) {\n _this.props.onAuthFinished(false, error);\n console.error(\"Error during user-interactive auth:\", error);\n if (_this._unmounted) {\n return;\n }\n\n var msg = error.message || error.toString();\n _this.setState({\n errorText: msg\n });\n }).done();\n\n this._intervalId = null;\n if (this.props.poll) {\n this._intervalId = setInterval(function () {\n _this._authLogic.poll();\n }, 2000);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n\n if (this._intervalId !== null) {\n clearInterval(this._intervalId);\n }\n },\n\n _authStateUpdated: function _authStateUpdated(stageType, stageState) {\n var _this2 = this;\n\n var oldStage = this.state.authStage;\n this.setState({\n authStage: stageType,\n stageState: stageState,\n errorText: stageState.error\n }, function () {\n if (oldStage != stageType) _this2._setFocus();\n });\n },\n\n _requestCallback: function _requestCallback(auth, background) {\n var _this3 = this;\n\n var makeRequestPromise = this.props.makeRequest(auth);\n\n // if it's a background request, just do it: we don't want\n // it to affect the state of our UI.\n if (background) return makeRequestPromise;\n\n // otherwise, manage the state of the spinner and error messages\n this.setState({\n busy: true,\n errorText: null,\n stageErrorText: null\n });\n return makeRequestPromise.finally(function () {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n busy: false\n });\n });\n },\n\n _setFocus: function _setFocus() {\n if (this.refs.stageComponent && this.refs.stageComponent.focus) {\n this.refs.stageComponent.focus();\n }\n },\n\n _submitAuthDict: function _submitAuthDict(authData) {\n this._authLogic.submitAuthDict(authData);\n },\n\n _renderCurrentStage: function _renderCurrentStage() {\n var stage = this.state.authStage;\n if (!stage) return null;\n\n var StageComponent = (0, _InteractiveAuthEntryComponents.getEntryComponentForLoginType)(stage);\n return _react2.default.createElement(StageComponent, { ref: 'stageComponent',\n loginType: stage,\n matrixClient: this.props.matrixClient,\n authSessionId: this._authLogic.getSessionId(),\n clientSecret: this._authLogic.getClientSecret(),\n stageParams: this._authLogic.getStageParams(stage),\n submitAuthDict: this._submitAuthDict,\n errorText: this.state.stageErrorText,\n busy: this.state.busy,\n inputs: this.props.inputs,\n stageState: this.state.stageState,\n fail: this._onAuthStageFailed,\n setEmailSid: this._setEmailSid,\n makeRegistrationUrl: this.props.makeRegistrationUrl\n });\n },\n\n _onAuthStageFailed: function _onAuthStageFailed(e) {\n this.props.onAuthFinished(false, e);\n },\n _setEmailSid: function _setEmailSid(sid) {\n this._authLogic.setEmailSid(sid);\n },\n\n render: function render() {\n var error = null;\n if (this.state.errorText) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n this._renderCurrentStage(),\n error\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=InteractiveAuth.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _VectorConferenceHandler = require('../../VectorConferenceHandler');\n\nvar _VectorConferenceHandler2 = _interopRequireDefault(_VectorConferenceHandler);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LeftPanel = _react2.default.createClass({\n displayName: 'LeftPanel',\n\n // NB. If you add props, don't forget to update\n // shouldComponentUpdate!\n propTypes: {\n collapsed: _propTypes2.default.bool.isRequired\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n searchFilter: ''\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.focusedElement = null;\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n // MatrixChat will update whenever the user switches\n // rooms, but propagating this change all the way down\n // the react tree is quite slow, so we cut this off\n // here. The RoomTiles listen for the room change\n // events themselves to know when to update.\n // We just need to update if any of these things change.\n if (this.props.collapsed !== nextProps.collapsed || this.props.disabled !== nextProps.disabled) {\n return true;\n }\n\n if (this.state.searchFilter !== nextState.searchFilter) {\n return true;\n }\n\n return false;\n },\n\n _onFocus: function _onFocus(ev) {\n this.focusedElement = ev.target;\n },\n\n _onBlur: function _onBlur(ev) {\n this.focusedElement = null;\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n if (!this.focusedElement) return;\n var handled = true;\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.TAB:\n this._onMoveFocus(ev.shiftKey);\n break;\n case _Keyboard.KeyCode.UP:\n this._onMoveFocus(true);\n break;\n case _Keyboard.KeyCode.DOWN:\n this._onMoveFocus(false);\n break;\n case _Keyboard.KeyCode.ENTER:\n this._onMoveFocus(false);\n if (this.focusedElement) {\n this.focusedElement.click();\n }\n break;\n default:\n handled = false;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n _onMoveFocus: function _onMoveFocus(up) {\n var element = this.focusedElement;\n\n // unclear why this isn't needed\n // var descending = (up == this.focusDirection) ? this.focusDescending : !this.focusDescending;\n // this.focusDirection = up;\n\n var descending = false; // are we currently descending or ascending through the DOM tree?\n var classes = void 0;\n\n do {\n var child = up ? element.lastElementChild : element.firstElementChild;\n var sibling = up ? element.previousElementSibling : element.nextElementSibling;\n\n if (descending) {\n if (child) {\n element = child;\n } else if (sibling) {\n element = sibling;\n } else {\n descending = false;\n element = element.parentElement;\n }\n } else {\n if (sibling) {\n element = sibling;\n descending = true;\n } else {\n element = element.parentElement;\n }\n }\n\n if (element) {\n classes = element.classList;\n if (classes.contains(\"mx_LeftPanel\")) {\n // we hit the top\n element = up ? element.lastElementChild : element.firstElementChild;\n descending = true;\n }\n }\n } while (element && !(classes.contains(\"mx_RoomTile\") || classes.contains(\"mx_SearchBox_search\") || classes.contains(\"mx_RoomSubList_ellipsis\")));\n\n if (element) {\n element.focus();\n this.focusedElement = element;\n this.focusedDescending = descending;\n }\n },\n\n onHideClick: function onHideClick() {\n _dispatcher2.default.dispatch({\n action: 'hide_left_panel'\n });\n },\n\n onSearch: function onSearch(term) {\n this.setState({ searchFilter: term });\n },\n\n collectRoomList: function collectRoomList(ref) {\n this._roomList = ref;\n },\n\n render: function render() {\n var RoomList = _index2.default.getComponent('rooms.RoomList');\n var TagPanel = _index2.default.getComponent('structures.TagPanel');\n var BottomLeftMenu = _index2.default.getComponent('structures.BottomLeftMenu');\n var CallPreview = _index2.default.getComponent('voip.CallPreview');\n\n var SearchBox = _index2.default.getComponent('structures.SearchBox');\n var topBox = _react2.default.createElement(SearchBox, { collapsed: this.props.collapsed, onSearch: this.onSearch });\n\n var classes = (0, _classnames2.default)(\"mx_LeftPanel\", {\n \"collapsed\": this.props.collapsed\n });\n\n var tagPanelEnabled = !_SettingsStore2.default.getValue(\"TagPanel.disableTagPanel\");\n var tagPanel = tagPanelEnabled ? _react2.default.createElement(TagPanel, null) : _react2.default.createElement('div', null);\n\n var containerClasses = (0, _classnames2.default)(\"mx_LeftPanel_container\", \"mx_fadable\", {\n \"mx_LeftPanel_container_collapsed\": this.props.collapsed,\n \"mx_LeftPanel_container_hasTagPanel\": tagPanelEnabled,\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return _react2.default.createElement(\n 'div',\n { className: containerClasses },\n tagPanel,\n _react2.default.createElement(\n 'aside',\n { className: classes, onKeyDown: this._onKeyDown, onFocus: this._onFocus, onBlur: this._onBlur },\n topBox,\n _react2.default.createElement(CallPreview, { ConferenceHandler: _VectorConferenceHandler2.default }),\n _react2.default.createElement(RoomList, {\n ref: this.collectRoomList,\n collapsed: this.props.collapsed,\n searchFilter: this.state.searchFilter,\n ConferenceHandler: _VectorConferenceHandler2.default }),\n _react2.default.createElement(BottomLeftMenu, { collapsed: this.props.collapsed })\n )\n );\n }\n});\n\nmodule.exports = LeftPanel;\n//# sourceMappingURL=LeftPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _Notifier = require('../../Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _PageTypes = require('../../PageTypes');\n\nvar _PageTypes2 = _interopRequireDefault(_PageTypes);\n\nvar _CallMediaHandler = require('../../CallMediaHandler');\n\nvar _CallMediaHandler2 = _interopRequireDefault(_CallMediaHandler);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SessionStore = require('../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _RoomListStore = require('../../stores/RoomListStore');\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _TagOrderActions = require('../../actions/TagOrderActions');\n\nvar _TagOrderActions2 = _interopRequireDefault(_TagOrderActions);\n\nvar _RoomListActions = require('../../actions/RoomListActions');\n\nvar _RoomListActions2 = _interopRequireDefault(_RoomListActions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// We need to fetch each pinned message individually (if we don't already have it)\n// so each pinned message may trigger a request. Limit the number per room for sanity.\n// NB. this is just for server notices rather than pinned messages in general.\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MAX_PINNED_NOTICES_PER_ROOM = 2;\n\n/**\n * This is what our MatrixChat shows when we are logged in. The precise view is\n * determined by the page_type property.\n *\n * Currently it's very tightly coupled with MatrixChat. We should try to do\n * something about that.\n *\n * Components mounted below us can access the matrix client via the react context.\n */\nvar LoggedInView = _react2.default.createClass({\n displayName: 'LoggedInView',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n page_type: _propTypes2.default.string.isRequired,\n onRoomCreated: _propTypes2.default.func,\n onUserSettingsClose: _propTypes2.default.func,\n\n // Called with the credentials of a registered user (if they were a ROU that\n // transitioned to PWLU)\n onRegistered: _propTypes2.default.func,\n\n teamToken: _propTypes2.default.string\n\n // and lots and lots of other stuff.\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient),\n authCache: _propTypes2.default.object\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient,\n authCache: {\n auth: {},\n lastUpdate: 0\n }\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n // use compact timeline view\n useCompactLayout: _SettingsStore2.default.getValue('useCompactLayout'),\n // any currently active server notice events\n serverNoticeEvents: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n // stash the MatrixClient in case we log out before we are unmounted\n this._matrixClient = this.props.matrixClient;\n\n _CallMediaHandler2.default.loadDevices();\n\n document.addEventListener('keydown', this._onKeyDown);\n\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n this._setStateFromSessionStore();\n\n this._updateServerNoticeEvents();\n\n this._matrixClient.on(\"accountData\", this.onAccountData);\n this._matrixClient.on(\"sync\", this.onSync);\n this._matrixClient.on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener('keydown', this._onKeyDown);\n this._matrixClient.removeListener(\"accountData\", this.onAccountData);\n this._matrixClient.removeListener(\"sync\", this.onSync);\n this._matrixClient.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n if (this._sessionStoreToken) {\n this._sessionStoreToken.remove();\n }\n },\n\n // Child components assume that the client peg will not be null, so give them some\n // sort of assurance here by only allowing a re-render if the client is truthy.\n //\n // This is required because `LoggedInView` maintains its own state and if this state\n // updates after the client peg has been made null (during logout), then it will\n // attempt to re-render and the children will throw errors.\n shouldComponentUpdate: function shouldComponentUpdate() {\n return Boolean(_MatrixClientPeg2.default.get());\n },\n\n canResetTimelineInRoom: function canResetTimelineInRoom(roomId) {\n if (!this.refs.roomView) {\n return true;\n }\n return this.refs.roomView.canResetTimeline();\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword())\n });\n },\n\n\n onAccountData: function onAccountData(event) {\n if (event.getType() === \"im.vector.web.settings\") {\n this.setState({\n useCompactLayout: event.getContent().useCompactLayout\n });\n }\n if (event.getType() === \"m.ignored_user_list\") {\n _dispatcher2.default.dispatch({ action: \"ignore_state_changed\" });\n }\n },\n\n onSync: function onSync(syncState, oldSyncState, data) {\n var oldErrCode = this.state.syncErrorData && this.state.syncErrorData.error && this.state.syncErrorData.error.errcode;\n var newErrCode = data && data.error && data.error.errcode;\n if (syncState === oldSyncState && oldErrCode === newErrCode) return;\n\n if (syncState === 'ERROR') {\n this.setState({\n syncErrorData: data\n });\n } else {\n this.setState({\n syncErrorData: null\n });\n }\n\n if (oldSyncState === 'PREPARED' && syncState === 'SYNCING') {\n this._updateServerNoticeEvents();\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n var roomLists = _RoomListStore2.default.getRoomLists();\n if (roomLists['m.server_notice'] && roomLists['m.server_notice'].some(function (r) {\n return r.roomId === ev.getRoomId();\n })) {\n this._updateServerNoticeEvents();\n }\n },\n\n _updateServerNoticeEvents: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this = this;\n\n var roomLists, pinnedEvents, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, room, pinStateEvent, pinnedEventIds, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop, _iterator2, _step2;\n\n return _regenerator2.default.wrap(function _callee$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n roomLists = _RoomListStore2.default.getRoomLists();\n\n if (roomLists['m.server_notice']) {\n _context2.next = 3;\n break;\n }\n\n return _context2.abrupt('return', []);\n\n case 3:\n pinnedEvents = [];\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context2.prev = 7;\n _iterator = (0, _getIterator3.default)(roomLists['m.server_notice']);\n\n case 9:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context2.next = 43;\n break;\n }\n\n room = _step.value;\n pinStateEvent = room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n\n if (!(!pinStateEvent || !pinStateEvent.getContent().pinned)) {\n _context2.next = 14;\n break;\n }\n\n return _context2.abrupt('continue', 40);\n\n case 14:\n pinnedEventIds = pinStateEvent.getContent().pinned.slice(0, MAX_PINNED_NOTICES_PER_ROOM);\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context2.prev = 18;\n _loop = /*#__PURE__*/_regenerator2.default.mark(function _loop() {\n var eventId, timeline, ev;\n return _regenerator2.default.wrap(function _loop$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n eventId = _step2.value;\n _context.next = 3;\n return (0, _bluebird.resolve)(_this._matrixClient.getEventTimeline(room.getUnfilteredTimelineSet(), eventId, 0));\n\n case 3:\n timeline = _context.sent;\n ev = timeline.getEvents().find(function (ev) {\n return ev.getId() === eventId;\n });\n\n if (ev) pinnedEvents.push(ev);\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _loop, _this);\n });\n _iterator2 = (0, _getIterator3.default)(pinnedEventIds);\n\n case 21:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context2.next = 26;\n break;\n }\n\n return _context2.delegateYield(_loop(), 't0', 23);\n\n case 23:\n _iteratorNormalCompletion2 = true;\n _context2.next = 21;\n break;\n\n case 26:\n _context2.next = 32;\n break;\n\n case 28:\n _context2.prev = 28;\n _context2.t1 = _context2['catch'](18);\n _didIteratorError2 = true;\n _iteratorError2 = _context2.t1;\n\n case 32:\n _context2.prev = 32;\n _context2.prev = 33;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n\n case 35:\n _context2.prev = 35;\n\n if (!_didIteratorError2) {\n _context2.next = 38;\n break;\n }\n\n throw _iteratorError2;\n\n case 38:\n return _context2.finish(35);\n\n case 39:\n return _context2.finish(32);\n\n case 40:\n _iteratorNormalCompletion = true;\n _context2.next = 9;\n break;\n\n case 43:\n _context2.next = 49;\n break;\n\n case 45:\n _context2.prev = 45;\n _context2.t2 = _context2['catch'](7);\n _didIteratorError = true;\n _iteratorError = _context2.t2;\n\n case 49:\n _context2.prev = 49;\n _context2.prev = 50;\n\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n\n case 52:\n _context2.prev = 52;\n\n if (!_didIteratorError) {\n _context2.next = 55;\n break;\n }\n\n throw _iteratorError;\n\n case 55:\n return _context2.finish(52);\n\n case 56:\n return _context2.finish(49);\n\n case 57:\n this.setState({\n serverNoticeEvents: pinnedEvents\n });\n\n case 58:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee, this, [[7, 45, 49, 57], [18, 28, 32, 40], [33,, 35, 39], [50,, 52, 56]]);\n }));\n\n function _updateServerNoticeEvents() {\n return _ref.apply(this, arguments);\n }\n\n return _updateServerNoticeEvents;\n }(),\n\n _onKeyDown: function _onKeyDown(ev) {\n /*\n // Remove this for now as ctrl+alt = alt-gr so this breaks keyboards which rely on alt-gr for numbers\n // Will need to find a better meta key if anyone actually cares about using this.\n if (ev.altKey && ev.ctrlKey && ev.keyCode > 48 && ev.keyCode < 58) {\n dis.dispatch({\n action: 'view_indexed_room',\n roomIndex: ev.keyCode - 49,\n });\n ev.stopPropagation();\n ev.preventDefault();\n return;\n }\n */\n\n var handled = false;\n var ctrlCmdOnly = (0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev);\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.UP:\n case _Keyboard.KeyCode.DOWN:\n if (ev.altKey && !ev.shiftKey && !ev.ctrlKey && !ev.metaKey) {\n var action = ev.keyCode == _Keyboard.KeyCode.UP ? 'view_prev_room' : 'view_next_room';\n _dispatcher2.default.dispatch({ action: action });\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.PAGE_UP:\n case _Keyboard.KeyCode.PAGE_DOWN:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this._onScrollKeyPressed(ev);\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.HOME:\n case _Keyboard.KeyCode.END:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this._onScrollKeyPressed(ev);\n handled = true;\n }\n break;\n case _Keyboard.KeyCode.KEY_K:\n if (ctrlCmdOnly) {\n _dispatcher2.default.dispatch({\n action: 'focus_room_filter'\n });\n handled = true;\n }\n break;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n /** dispatch a page-up/page-down/etc to the appropriate component */\n _onScrollKeyPressed: function _onScrollKeyPressed(ev) {\n if (this.refs.roomView) {\n this.refs.roomView.handleScrollKey(ev);\n } else if (this.refs.roomDirectory) {\n this.refs.roomDirectory.handleScrollKey(ev);\n }\n },\n\n _onDragEnd: function _onDragEnd(result) {\n // Dragged to an invalid destination, not onto a droppable\n if (!result.destination) {\n return;\n }\n\n var dest = result.destination.droppableId;\n\n if (dest === 'tag-panel-droppable') {\n // Could be \"GroupTile +groupId:domain\"\n var draggableId = result.draggableId.split(' ').pop();\n\n // Dispatch synchronously so that the TagPanel receives an\n // optimistic update from TagOrderStore before the previous\n // state is shown.\n _dispatcher2.default.dispatch(_TagOrderActions2.default.moveTag(this._matrixClient, draggableId, result.destination.index), true);\n } else if (dest.startsWith('room-sub-list-droppable_')) {\n this._onRoomTileEndDrag(result);\n }\n },\n\n _onRoomTileEndDrag: function _onRoomTileEndDrag(result) {\n var newTag = result.destination.droppableId.split('_')[1];\n var prevTag = result.source.droppableId.split('_')[1];\n if (newTag === 'undefined') newTag = undefined;\n if (prevTag === 'undefined') prevTag = undefined;\n\n var roomId = result.draggableId.split('_')[1];\n\n var oldIndex = result.source.index;\n var newIndex = result.destination.index;\n\n _dispatcher2.default.dispatch(_RoomListActions2.default.tagRoom(this._matrixClient, this._matrixClient.getRoom(roomId), prevTag, newTag, oldIndex, newIndex), true);\n },\n\n _onMouseDown: function _onMouseDown(ev) {\n // When the panels are disabled, clicking on them results in a mouse event\n // which bubbles to certain elements in the tree. When this happens, close\n // any settings page that is currently open (user/room/group).\n if (this.props.leftDisabled && this.props.rightDisabled) {\n var targetClasses = new _set2.default(ev.target.className.split(' '));\n if (targetClasses.has('mx_MatrixChat') || targetClasses.has('mx_MatrixChat_middlePanel') || targetClasses.has('mx_RoomView')) {\n this.setState({\n mouseDown: {\n x: ev.pageX,\n y: ev.pageY\n }\n });\n }\n }\n },\n\n _onMouseUp: function _onMouseUp(ev) {\n if (!this.state.mouseDown) return;\n\n var deltaX = ev.pageX - this.state.mouseDown.x;\n var deltaY = ev.pageY - this.state.mouseDown.y;\n var distance = Math.sqrt(deltaX * deltaX + (deltaY + deltaY));\n var maxRadius = 5; // People shouldn't be straying too far, hopefully\n\n // Note: we track how far the user moved their mouse to help\n // combat against https://github.com/vector-im/riot-web/issues/7158\n\n if (distance < maxRadius) {\n // This is probably a real click, and not a drag\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n }\n\n // Always clear the mouseDown state to ensure we don't accidentally\n // use stale values due to the mouseDown checks.\n this.setState({ mouseDown: null });\n },\n\n render: function render() {\n var LeftPanel = _index2.default.getComponent('structures.LeftPanel');\n var RightPanel = _index2.default.getComponent('structures.RightPanel');\n var RoomView = _index2.default.getComponent('structures.RoomView');\n var UserSettings = _index2.default.getComponent('structures.UserSettings');\n var CreateRoom = _index2.default.getComponent('structures.CreateRoom');\n var RoomDirectory = _index2.default.getComponent('structures.RoomDirectory');\n var HomePage = _index2.default.getComponent('structures.HomePage');\n var GroupView = _index2.default.getComponent('structures.GroupView');\n var MyGroups = _index2.default.getComponent('structures.MyGroups');\n var MatrixToolbar = _index2.default.getComponent('globals.MatrixToolbar');\n var CookieBar = _index2.default.getComponent('globals.CookieBar');\n var NewVersionBar = _index2.default.getComponent('globals.NewVersionBar');\n var UpdateCheckBar = _index2.default.getComponent('globals.UpdateCheckBar');\n var PasswordNagBar = _index2.default.getComponent('globals.PasswordNagBar');\n var ServerLimitBar = _index2.default.getComponent('globals.ServerLimitBar');\n\n var page_element = void 0;\n var right_panel = '';\n\n switch (this.props.page_type) {\n case _PageTypes2.default.RoomView:\n page_element = _react2.default.createElement(RoomView, {\n ref: 'roomView',\n autoJoin: this.props.autoJoin,\n onRegistered: this.props.onRegistered,\n thirdPartyInvite: this.props.thirdPartyInvite,\n oobData: this.props.roomOobData,\n eventPixelOffset: this.props.initialEventPixelOffset,\n key: this.props.currentRoomId || 'roomview',\n disabled: this.props.middleDisabled,\n collapsedRhs: this.props.collapseRhs,\n ConferenceHandler: this.props.ConferenceHandler\n });\n if (!this.props.collapseRhs) {\n right_panel = _react2.default.createElement(RightPanel, { roomId: this.props.currentRoomId, disabled: this.props.rightDisabled });\n }\n break;\n\n case _PageTypes2.default.UserSettings:\n page_element = _react2.default.createElement(UserSettings, {\n onClose: this.props.onCloseAllSettings,\n brand: this.props.config.brand,\n referralBaseUrl: this.props.config.referralBaseUrl,\n teamToken: this.props.teamToken\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n\n case _PageTypes2.default.MyGroups:\n page_element = _react2.default.createElement(MyGroups, null);\n break;\n\n case _PageTypes2.default.CreateRoom:\n page_element = _react2.default.createElement(CreateRoom, {\n onRoomCreated: this.props.onRoomCreated,\n collapsedRhs: this.props.collapseRhs\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n\n case _PageTypes2.default.RoomDirectory:\n page_element = _react2.default.createElement(RoomDirectory, {\n ref: 'roomDirectory',\n config: this.props.config.roomDirectory\n });\n break;\n\n case _PageTypes2.default.HomePage:\n {\n // If team server config is present, pass the teamServerURL. props.teamToken\n // must also be set for the team page to be displayed, otherwise the\n // welcomePageUrl is used (which might be undefined).\n var teamServerUrl = this.props.config.teamServerConfig ? this.props.config.teamServerConfig.teamServerURL : null;\n\n page_element = _react2.default.createElement(HomePage, {\n teamServerUrl: teamServerUrl,\n teamToken: this.props.teamToken,\n homePageUrl: this.props.config.welcomePageUrl\n });\n }\n break;\n\n case _PageTypes2.default.UserView:\n page_element = null; // deliberately null for now\n right_panel = _react2.default.createElement(RightPanel, { disabled: this.props.rightDisabled });\n break;\n case _PageTypes2.default.GroupView:\n page_element = _react2.default.createElement(GroupView, {\n groupId: this.props.currentGroupId,\n isNew: this.props.currentGroupIsNew,\n collapsedRhs: this.props.collapseRhs\n });\n if (!this.props.collapseRhs) right_panel = _react2.default.createElement(RightPanel, { groupId: this.props.currentGroupId, disabled: this.props.rightDisabled });\n break;\n }\n\n var usageLimitEvent = this.state.serverNoticeEvents.find(function (e) {\n return e && e.getType() === 'm.room.message' && e.getContent()['server_notice_type'] === 'm.server_notice.usage_limit_reached';\n });\n\n var topBar = void 0;\n var isGuest = this.props.matrixClient.isGuest();\n if (this.state.syncErrorData && this.state.syncErrorData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {\n topBar = _react2.default.createElement(ServerLimitBar, { kind: 'hard',\n adminContact: this.state.syncErrorData.error.data.admin_contact,\n limitType: this.state.syncErrorData.error.data.limit_type\n });\n } else if (usageLimitEvent) {\n topBar = _react2.default.createElement(ServerLimitBar, { kind: 'soft',\n adminContact: usageLimitEvent.getContent().admin_contact,\n limitType: usageLimitEvent.getContent().limit_type\n });\n } else if (this.props.showCookieBar && this.props.config.piwik) {\n var policyUrl = this.props.config.piwik.policyUrl || null;\n topBar = _react2.default.createElement(CookieBar, { policyUrl: policyUrl });\n } else if (this.props.hasNewVersion) {\n topBar = _react2.default.createElement(NewVersionBar, { version: this.props.version, newVersion: this.props.newVersion,\n releaseNotes: this.props.newVersionReleaseNotes\n });\n } else if (this.props.checkingForUpdate) {\n topBar = _react2.default.createElement(UpdateCheckBar, this.props.checkingForUpdate);\n } else if (this.state.userHasGeneratedPassword) {\n topBar = _react2.default.createElement(PasswordNagBar, null);\n } else if (!isGuest && _Notifier2.default.supportsDesktopNotifications() && !_Notifier2.default.isEnabled() && !_Notifier2.default.isToolbarHidden()) {\n topBar = _react2.default.createElement(MatrixToolbar, null);\n }\n\n var bodyClasses = 'mx_MatrixChat';\n if (topBar) {\n bodyClasses += ' mx_MatrixChat_toolbarShowing';\n }\n if (this.state.useCompactLayout) {\n bodyClasses += ' mx_MatrixChat_useCompactLayout';\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_wrapper', 'aria-hidden': this.props.hideToSRUsers, onMouseDown: this._onMouseDown, onMouseUp: this._onMouseUp },\n topBar,\n _react2.default.createElement(\n _reactBeautifulDnd.DragDropContext,\n { onDragEnd: this._onDragEnd },\n _react2.default.createElement(\n 'div',\n { className: bodyClasses },\n _react2.default.createElement(LeftPanel, {\n collapsed: this.props.collapseLhs || false,\n disabled: this.props.leftDisabled\n }),\n _react2.default.createElement(\n 'main',\n { className: 'mx_MatrixChat_middlePanel' },\n page_element\n ),\n right_panel\n )\n )\n );\n }\n});\n\nexports.default = LoggedInView;\nmodule.exports = exports['default'];\n//# sourceMappingURL=LoggedInView.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragDropContext = require('./drag-drop-context');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_dragDropContext).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _DragDropContext$chil;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _createStore = require('../../state/create-store');\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _fireHooks = require('../../state/fire-hooks');\n\nvar _fireHooks2 = _interopRequireDefault(_fireHooks);\n\nvar _dimensionMarshal = require('../../state/dimension-marshal/dimension-marshal');\n\nvar _dimensionMarshal2 = _interopRequireDefault(_dimensionMarshal);\n\nvar _styleMarshal = require('../style-marshal/style-marshal');\n\nvar _styleMarshal2 = _interopRequireDefault(_styleMarshal);\n\nvar _canStartDrag = require('../../state/can-start-drag');\n\nvar _canStartDrag2 = _interopRequireDefault(_canStartDrag);\n\nvar _contextKeys = require('../context-keys');\n\nvar _actionCreators = require('../../state/action-creators');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DragDropContext = function (_React$Component) {\n (0, _inherits3.default)(DragDropContext, _React$Component);\n\n function DragDropContext() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, DragDropContext);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = DragDropContext.__proto__ || (0, _getPrototypeOf2.default)(DragDropContext)).call.apply(_ref, [this].concat(args))), _this), _this.canLift = function (id) {\n return (0, _canStartDrag2.default)(_this.store.getState(), id);\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(DragDropContext, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var _ref2;\n\n return _ref2 = {}, (0, _defineProperty3.default)(_ref2, _contextKeys.storeKey, this.store), (0, _defineProperty3.default)(_ref2, _contextKeys.dimensionMarshalKey, this.dimensionMarshal), (0, _defineProperty3.default)(_ref2, _contextKeys.styleContextKey, this.styleMarshal.styleContext), (0, _defineProperty3.default)(_ref2, _contextKeys.canLiftContextKey, this.canLift), _ref2;\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n this.store = (0, _createStore2.default)();\n\n this.styleMarshal = (0, _styleMarshal2.default)();\n\n var callbacks = {\n cancel: function cancel() {\n _this2.store.dispatch((0, _actionCreators.clean)());\n },\n publishDraggables: function publishDraggables(dimensions) {\n _this2.store.dispatch((0, _actionCreators.publishDraggableDimensions)(dimensions));\n },\n publishDroppables: function publishDroppables(dimensions) {\n _this2.store.dispatch((0, _actionCreators.publishDroppableDimensions)(dimensions));\n },\n updateDroppableScroll: function updateDroppableScroll(id, newScroll) {\n _this2.store.dispatch((0, _actionCreators.updateDroppableDimensionScroll)(id, newScroll));\n },\n updateDroppableIsEnabled: function updateDroppableIsEnabled(id, isEnabled) {\n _this2.store.dispatch((0, _actionCreators.updateDroppableDimensionIsEnabled)(id, isEnabled));\n }\n };\n this.dimensionMarshal = (0, _dimensionMarshal2.default)(callbacks);\n\n var previous = this.store.getState();\n\n this.unsubscribe = this.store.subscribe(function () {\n var previousValue = previous;\n var current = _this2.store.getState();\n\n previous = current;\n\n if (current.phase === previousValue.phase) {\n return;\n }\n\n var hooks = {\n onDragStart: _this2.props.onDragStart,\n onDragEnd: _this2.props.onDragEnd\n };\n (0, _fireHooks2.default)(hooks, previousValue, current);\n\n _this2.styleMarshal.onPhaseChange(current);\n\n _this2.dimensionMarshal.onPhaseChange(current);\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.styleMarshal.mount();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unsubscribe();\n this.styleMarshal.unmount();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DragDropContext;\n}(_react2.default.Component);\n\nDragDropContext.childContextTypes = (_DragDropContext$chil = {}, (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.storeKey, _propTypes2.default.shape({\n dispatch: _propTypes2.default.func.isRequired,\n subscribe: _propTypes2.default.func.isRequired,\n getState: _propTypes2.default.func.isRequired\n}).isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_DragDropContext$chil, _contextKeys.canLiftContextKey, _propTypes2.default.func.isRequired), _DragDropContext$chil);\nexports.default = DragDropContext;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof2 = require('babel-runtime/helpers/typeof');\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _redux = require('redux');\n\nvar _reduxThunk = require('redux-thunk');\n\nvar _reduxThunk2 = _interopRequireDefault(_reduxThunk);\n\nvar _reducer = require('./reducer');\n\nvar _reducer2 = _interopRequireDefault(_reducer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar composeEnhancers = (typeof window === 'undefined' ? 'undefined' : (0, _typeof3.default)(window)) === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : _redux.compose;\n\nexports.default = function () {\n return (0, _redux.createStore)(_reducer2.default, composeEnhancers((0, _redux.applyMiddleware)(_reduxThunk2.default)));\n};","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _position = require('./position');\n\nvar _noImpact = require('./no-impact');\n\nvar _getDragImpact = require('./get-drag-impact/');\n\nvar _getDragImpact2 = _interopRequireDefault(_getDragImpact);\n\nvar _moveToNextIndex = require('./move-to-next-index/');\n\nvar _moveToNextIndex2 = _interopRequireDefault(_moveToNextIndex);\n\nvar _moveCrossAxis = require('./move-cross-axis/');\n\nvar _moveCrossAxis2 = _interopRequireDefault(_moveCrossAxis);\n\nvar _dimension = require('./dimension');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar noDimensions = {\n request: null,\n draggable: {},\n droppable: {}\n};\n\nvar origin = { x: 0, y: 0 };\n\nvar clean = (0, _memoizeOne2.default)(function () {\n var phase = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'IDLE';\n return {\n phase: phase,\n drag: null,\n drop: null,\n dimension: noDimensions\n };\n});\n\nvar canPublishDimension = function canPublishDimension(phase) {\n return ['IDLE', 'DROP_ANIMATING', 'DROP_COMPLETE'].indexOf(phase) === -1;\n};\n\nvar move = function move(_ref) {\n var state = _ref.state,\n clientSelection = _ref.clientSelection,\n shouldAnimate = _ref.shouldAnimate,\n windowScroll = _ref.windowScroll,\n impact = _ref.impact;\n\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move while not dragging');\n return clean();\n }\n\n var last = state.drag;\n\n if (last == null) {\n console.error('cannot move if there is no drag information');\n return clean();\n }\n\n var previous = last.current;\n var initial = last.initial;\n var currentWindowScroll = windowScroll || previous.windowScroll;\n\n var client = function () {\n var offset = (0, _position.subtract)(clientSelection, initial.client.selection);\n\n var result = {\n offset: offset,\n selection: clientSelection,\n center: (0, _position.add)(offset, initial.client.center)\n };\n return result;\n }();\n\n var page = {\n selection: (0, _position.add)(client.selection, currentWindowScroll),\n offset: (0, _position.add)(client.offset, currentWindowScroll),\n center: (0, _position.add)(client.center, currentWindowScroll)\n };\n\n var current = {\n client: client,\n page: page,\n shouldAnimate: shouldAnimate,\n windowScroll: currentWindowScroll\n };\n\n var newImpact = impact || (0, _getDragImpact2.default)({\n pageCenter: page.center,\n draggable: state.dimension.draggable[initial.descriptor.id],\n draggables: state.dimension.draggable,\n droppables: state.dimension.droppable,\n previousImpact: last.impact\n });\n\n var drag = {\n initial: initial,\n impact: newImpact,\n current: current\n };\n\n return (0, _extends5.default)({}, state, {\n drag: drag\n });\n};\n\nvar updateStateAfterDimensionChange = function updateStateAfterDimensionChange(newState) {\n if (newState.phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n return newState;\n }\n\n if (newState.phase !== 'DRAGGING') {\n return newState;\n }\n\n if (!newState.drag) {\n console.error('cannot update a draggable dimension in an existing drag as there is invalid drag state');\n return clean();\n }\n\n return move({\n state: newState,\n\n clientSelection: newState.drag.current.client.selection,\n shouldAnimate: newState.drag.current.shouldAnimate\n });\n};\n\nexports.default = function () {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : clean('IDLE');\n var action = arguments[1];\n\n if (action.type === 'CLEAN') {\n return clean();\n }\n\n if (action.type === 'PREPARE') {\n return clean('PREPARING');\n }\n\n if (action.type === 'REQUEST_DIMENSIONS') {\n if (state.phase !== 'PREPARING') {\n console.error('trying to start a lift while not preparing for a lift');\n return clean();\n }\n\n var id = action.payload;\n\n return {\n phase: 'COLLECTING_INITIAL_DIMENSIONS',\n drag: null,\n drop: null,\n dimension: {\n request: id,\n draggable: {},\n droppable: {}\n }\n };\n }\n\n if (action.type === 'PUBLISH_DRAGGABLE_DIMENSIONS') {\n var dimensions = action.payload;\n\n if (!canPublishDimension(state.phase)) {\n console.warn('dimensions rejected as no longer allowing dimension capture in phase', state.phase);\n return state;\n }\n\n var additions = dimensions.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n\n var newState = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n droppable: state.dimension.droppable,\n draggable: (0, _extends5.default)({}, state.dimension.draggable, additions)\n }\n });\n\n return updateStateAfterDimensionChange(newState);\n }\n\n if (action.type === 'PUBLISH_DROPPABLE_DIMENSIONS') {\n var _dimensions = action.payload;\n\n if (!canPublishDimension(state.phase)) {\n console.warn('dimensions rejected as no longer allowing dimension capture in phase', state.phase);\n return state;\n }\n\n var _additions = _dimensions.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n\n var _newState = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n draggable: state.dimension.draggable,\n droppable: (0, _extends5.default)({}, state.dimension.droppable, _additions)\n }\n });\n\n return updateStateAfterDimensionChange(_newState);\n }\n\n if (action.type === 'COMPLETE_LIFT') {\n if (state.phase !== 'COLLECTING_INITIAL_DIMENSIONS') {\n console.error('trying complete lift without collecting dimensions');\n return state;\n }\n\n var _action$payload = action.payload,\n _id = _action$payload.id,\n client = _action$payload.client,\n _windowScroll = _action$payload.windowScroll,\n isScrollAllowed = _action$payload.isScrollAllowed;\n\n var page = {\n selection: (0, _position.add)(client.selection, _windowScroll),\n center: (0, _position.add)(client.center, _windowScroll)\n };\n\n var draggable = state.dimension.draggable[_id];\n\n if (!draggable) {\n console.error('could not find draggable in store after lift');\n return clean();\n }\n\n var descriptor = draggable.descriptor;\n\n var initial = {\n descriptor: descriptor,\n isScrollAllowed: isScrollAllowed,\n client: client,\n page: page,\n windowScroll: _windowScroll\n };\n\n var current = {\n client: {\n selection: client.selection,\n center: client.center,\n offset: origin\n },\n page: {\n selection: page.selection,\n center: page.center,\n offset: origin\n },\n windowScroll: _windowScroll,\n shouldAnimate: false\n };\n\n var home = state.dimension.droppable[descriptor.droppableId];\n\n if (!home) {\n console.error('Cannot find home dimension for initial lift');\n return clean();\n }\n\n var destination = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var _impact = {\n movement: _noImpact.noMovement,\n direction: home.axis.direction,\n destination: destination\n };\n\n return (0, _extends5.default)({}, state, {\n phase: 'DRAGGING',\n drag: {\n initial: initial,\n current: current,\n impact: _impact\n }\n });\n }\n\n if (action.type === 'UPDATE_DROPPABLE_DIMENSION_SCROLL') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot update a droppable dimensions scroll when not dragging');\n return clean();\n }\n\n if (state.drag == null) {\n console.error('invalid store state');\n return clean();\n }\n\n if (!state.drag.initial.isScrollAllowed) {\n return clean();\n }\n\n var _action$payload2 = action.payload,\n _id2 = _action$payload2.id,\n offset = _action$payload2.offset;\n\n\n var target = state.dimension.droppable[_id2];\n\n if (!target) {\n console.warn('cannot update scroll for droppable as it has not yet been collected');\n return state;\n }\n\n var dimension = (0, _dimension.scrollDroppable)(target, offset);\n\n var _newState2 = (0, _extends5.default)({}, state, {\n dimension: {\n request: state.dimension.request,\n draggable: state.dimension.draggable,\n droppable: (0, _extends5.default)({}, state.dimension.droppable, (0, _defineProperty3.default)({}, _id2, dimension))\n }\n });\n\n return updateStateAfterDimensionChange(_newState2);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_DIMENSION_IS_ENABLED') {\n if (!(0, _keys2.default)(state.dimension.droppable).length) {\n return state;\n }\n\n var _action$payload3 = action.payload,\n _id3 = _action$payload3.id,\n isEnabled = _action$payload3.isEnabled;\n\n var _target = state.dimension.droppable[_id3];\n\n if (!_target) {\n console.warn('cannot update enabled state for droppable as it has not yet been collected');\n return state;\n }\n\n if (_target.isEnabled === isEnabled) {\n console.warn('trying to set droppable isEnabled to ' + String(isEnabled) + ' but it is already ' + String(isEnabled));\n return state;\n }\n\n var updatedDroppableDimension = (0, _extends5.default)({}, _target, {\n isEnabled: isEnabled\n });\n\n var result = (0, _extends5.default)({}, state, {\n dimension: (0, _extends5.default)({}, state.dimension, {\n droppable: (0, _extends5.default)({}, state.dimension.droppable, (0, _defineProperty3.default)({}, _id3, updatedDroppableDimension))\n })\n });\n\n return updateStateAfterDimensionChange(result);\n }\n\n if (action.type === 'MOVE') {\n var _action$payload4 = action.payload,\n _client = _action$payload4.client,\n _windowScroll2 = _action$payload4.windowScroll;\n\n return move({\n state: state,\n clientSelection: _client,\n windowScroll: _windowScroll2,\n shouldAnimate: false\n });\n }\n\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n var _windowScroll3 = action.payload.windowScroll;\n\n\n if (!state.drag) {\n console.error('cannot move with window scrolling if no current drag');\n return clean();\n }\n\n return move({\n state: state,\n clientSelection: state.drag.current.client.selection,\n windowScroll: _windowScroll3,\n shouldAnimate: false\n });\n }\n\n if (action.type === 'MOVE_FORWARD' || action.type === 'MOVE_BACKWARD') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move while not dragging', action);\n return clean();\n }\n\n if (!state.drag) {\n console.error('cannot move if there is no drag information');\n return clean();\n }\n\n var existing = state.drag;\n var isMovingForward = action.type === 'MOVE_FORWARD';\n\n if (!existing.impact.destination) {\n console.error('cannot move if there is no previous destination');\n return clean();\n }\n\n var droppable = state.dimension.droppable[existing.impact.destination.droppableId];\n\n var _result = (0, _moveToNextIndex2.default)({\n isMovingForward: isMovingForward,\n draggableId: existing.initial.descriptor.id,\n droppable: droppable,\n draggables: state.dimension.draggable,\n previousImpact: existing.impact\n });\n\n if (!_result) {\n return state;\n }\n\n var _impact2 = _result.impact;\n var _page = _result.pageCenter;\n var _client2 = (0, _position.subtract)(_page, existing.current.windowScroll);\n\n return move({\n state: state,\n impact: _impact2,\n clientSelection: _client2,\n shouldAnimate: true\n });\n }\n\n if (action.type === 'CROSS_AXIS_MOVE_FORWARD' || action.type === 'CROSS_AXIS_MOVE_BACKWARD') {\n if (state.phase !== 'DRAGGING') {\n console.error('cannot move cross axis when not dragging');\n return clean();\n }\n\n if (!state.drag) {\n console.error('cannot move cross axis if there is no drag information');\n return clean();\n }\n\n if (!state.drag.impact.destination) {\n console.error('cannot move cross axis if not in a droppable');\n return clean();\n }\n\n var _current = state.drag.current;\n var _descriptor = state.drag.initial.descriptor;\n var draggableId = _descriptor.id;\n var center = _current.page.center;\n var droppableId = state.drag.impact.destination.droppableId;\n var _home = {\n index: _descriptor.index,\n droppableId: _descriptor.droppableId\n };\n\n var _result2 = (0, _moveCrossAxis2.default)({\n isMovingForward: action.type === 'CROSS_AXIS_MOVE_FORWARD',\n pageCenter: center,\n draggableId: draggableId,\n droppableId: droppableId,\n home: _home,\n draggables: state.dimension.draggable,\n droppables: state.dimension.droppable,\n previousImpact: state.drag.impact\n });\n\n if (!_result2) {\n return state;\n }\n\n var _page2 = _result2.pageCenter;\n var _client3 = (0, _position.subtract)(_page2, _current.windowScroll);\n\n return move({\n state: state,\n clientSelection: _client3,\n impact: _result2.impact,\n shouldAnimate: true\n });\n }\n\n if (action.type === 'DROP_ANIMATE') {\n var _action$payload5 = action.payload,\n trigger = _action$payload5.trigger,\n newHomeOffset = _action$payload5.newHomeOffset,\n _impact3 = _action$payload5.impact,\n _result3 = _action$payload5.result;\n\n\n if (state.phase !== 'DRAGGING') {\n console.error('cannot animate drop while not dragging', action);\n return state;\n }\n\n if (!state.drag) {\n console.error('cannot animate drop - invalid drag state');\n return clean();\n }\n\n var pending = {\n trigger: trigger,\n newHomeOffset: newHomeOffset,\n result: _result3,\n impact: _impact3\n };\n\n return {\n phase: 'DROP_ANIMATING',\n drag: null,\n drop: {\n pending: pending,\n result: null\n },\n dimension: state.dimension\n };\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var _result4 = action.payload;\n\n return {\n phase: 'DROP_COMPLETE',\n drag: null,\n drop: {\n pending: null,\n result: _result4\n },\n dimension: noDimensions\n };\n }\n\n return state;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getDroppableOver = require('../get-droppable-over');\n\nvar _getDroppableOver2 = _interopRequireDefault(_getDroppableOver);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _noImpact = require('../no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _inHomeList = require('./in-home-list');\n\nvar _inHomeList2 = _interopRequireDefault(_inHomeList);\n\nvar _inForeignList = require('./in-foreign-list');\n\nvar _inForeignList2 = _interopRequireDefault(_inForeignList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact;\n\n var previousDroppableOverId = previousImpact.destination && previousImpact.destination.droppableId;\n\n var destinationId = (0, _getDroppableOver2.default)({\n target: pageCenter,\n draggable: draggable,\n draggables: draggables,\n droppables: droppables,\n previousDroppableOverId: previousDroppableOverId\n });\n\n if (!destinationId) {\n return _noImpact2.default;\n }\n\n var destination = droppables[destinationId];\n\n if (!destination.isEnabled) {\n return _noImpact2.default;\n }\n\n var home = droppables[draggable.descriptor.droppableId];\n var isWithinHomeDroppable = home.descriptor.id === destinationId;\n var insideDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n if (isWithinHomeDroppable) {\n return (0, _inHomeList2.default)({\n pageCenter: pageCenter,\n draggable: draggable,\n home: home,\n insideHome: insideDestination,\n previousImpact: previousImpact || _noImpact2.default\n });\n }\n\n return (0, _inForeignList2.default)({\n pageCenter: pageCenter,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact || _noImpact2.default\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getArea = require('./get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nvar _getDraggablesInsideDroppable = require('./get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _isPositionInFrame = require('./visibility/is-position-in-frame');\n\nvar _isPositionInFrame2 = _interopRequireDefault(_isPositionInFrame);\n\nvar _position = require('./position');\n\nvar _spacing = require('./spacing');\n\nvar _dimension = require('./dimension');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getRequiredGrowth = (0, _memoizeOne2.default)(function (draggable, draggables, droppable) {\n\n var getResult = function getResult(existingSpace) {\n var requiredSpace = draggable.page.withMargin[droppable.axis.size];\n\n if (requiredSpace <= existingSpace) {\n return null;\n }\n var requiredGrowth = (0, _position.patch)(droppable.axis.line, requiredSpace - existingSpace);\n\n return requiredGrowth;\n };\n\n var dimensions = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n if (!dimensions.length) {\n var _existingSpace = droppable.page.withMargin[droppable.axis.size];\n return getResult(_existingSpace);\n }\n\n var endOfDraggables = dimensions[dimensions.length - 1].page.withMargin[droppable.axis.end];\n var endOfDroppable = droppable.page.withMargin[droppable.axis.end];\n var existingSpace = endOfDroppable - endOfDraggables;\n\n return getResult(existingSpace);\n});\n\nvar getWithGrowth = (0, _memoizeOne2.default)(function (area, growth) {\n return (0, _getArea2.default)((0, _spacing.addPosition)(area, growth));\n});\n\nvar getClippedAreaWithPlaceholder = function getClippedAreaWithPlaceholder(_ref) {\n var draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppable = _ref.droppable,\n previousDroppableOverId = _ref.previousDroppableOverId;\n\n var isHome = draggable.descriptor.droppableId === droppable.descriptor.id;\n var wasOver = Boolean(previousDroppableOverId && previousDroppableOverId === droppable.descriptor.id);\n var subject = droppable.viewport.subject;\n var frame = droppable.viewport.frame;\n var clipped = droppable.viewport.clipped;\n\n if (!clipped) {\n return clipped;\n }\n\n if (isHome || !wasOver) {\n return clipped;\n }\n\n var requiredGrowth = getRequiredGrowth(draggable, draggables, droppable);\n\n if (!requiredGrowth) {\n return clipped;\n }\n\n var isClippedByFrame = subject[droppable.axis.size] !== frame[droppable.axis.size];\n\n var subjectWithGrowth = getWithGrowth(clipped, requiredGrowth);\n\n if (!isClippedByFrame) {\n return subjectWithGrowth;\n }\n\n return (0, _dimension.clip)(frame, subjectWithGrowth);\n};\n\nexports.default = function (_ref2) {\n var target = _ref2.target,\n draggable = _ref2.draggable,\n draggables = _ref2.draggables,\n droppables = _ref2.droppables,\n previousDroppableOverId = _ref2.previousDroppableOverId;\n\n var maybe = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id];\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).find(function (droppable) {\n var withPlaceholder = getClippedAreaWithPlaceholder({\n draggable: draggable, draggables: draggables, droppable: droppable, previousDroppableOverId: previousDroppableOverId\n });\n\n if (!withPlaceholder) {\n return false;\n }\n\n return (0, _isPositionInFrame2.default)(withPlaceholder)(target);\n });\n\n return maybe ? maybe.descriptor.id : null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (frame) {\n var isWithinVertical = (0, _isWithin2.default)(frame.top, frame.bottom);\n var isWithinHorizontal = (0, _isWithin2.default)(frame.left, frame.right);\n\n return function (point) {\n return isWithinVertical(point.y) && isWithinVertical(point.y) && isWithinHorizontal(point.x) && isWithinHorizontal(point.x);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar vertical = exports.vertical = {\n direction: 'vertical',\n line: 'y',\n crossLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\n\nvar horizontal = exports.horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n home = _ref.home,\n insideHome = _ref.insideHome,\n previousImpact = _ref.previousImpact;\n\n var viewport = (0, _getViewport2.default)();\n var axis = home.axis;\n\n var originalCenter = draggable.page.withoutMargin.center;\n\n var homeScrollDiff = home.viewport.frameScroll.diff.value;\n\n var currentCenter = (0, _position.add)(pageCenter, homeScrollDiff);\n\n var isBeyondStartPosition = currentCenter[axis.line] - originalCenter[axis.line] > 0;\n\n var amount = (0, _position.patch)(axis.line, draggable.client.withMargin[axis.size]);\n\n var displaced = insideHome.filter(function (child) {\n if (child === draggable) {\n return false;\n }\n\n var area = child.page.withoutMargin;\n\n if (isBeyondStartPosition) {\n if (area.center[axis.line] < originalCenter[axis.line]) {\n return false;\n }\n\n return currentCenter[axis.line] > area[axis.start];\n }\n\n if (originalCenter[axis.line] < area.center[axis.line]) {\n return false;\n }\n\n return currentCenter[axis.line] < area[axis.end];\n }).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: home,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var ordered = isBeyondStartPosition ? displaced.reverse() : displaced;\n var index = function () {\n var startIndex = insideHome.indexOf(draggable);\n var length = ordered.length;\n if (!length) {\n return startIndex;\n }\n\n if (isBeyondStartPosition) {\n return startIndex + length;\n }\n\n return startIndex - length;\n }();\n\n var movement = {\n amount: amount,\n displaced: ordered,\n isBeyondStartPosition: isBeyondStartPosition\n };\n\n var impact = {\n movement: movement,\n direction: axis.direction,\n destination: {\n droppableId: home.descriptor.id,\n index: index\n }\n };\n\n return impact;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n draggable = _ref.draggable,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n var axis = destination.axis;\n var viewport = (0, _getViewport2.default)();\n\n var destinationScrollDiff = destination.viewport.frameScroll.diff.value;\n var currentCenter = (0, _position.add)(pageCenter, destinationScrollDiff);\n\n var displaced = insideDestination.filter(function (child) {\n var threshold = child.page.withoutMargin[axis.end];\n return threshold > currentCenter[axis.line];\n }).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: destination,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var newIndex = insideDestination.length - displaced.length;\n\n var movement = {\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n displaced: displaced,\n isBeyondStartPosition: false\n };\n\n var impact = {\n movement: movement,\n direction: axis.direction,\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n };\n\n return impact;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inHomeList = require('./in-home-list');\n\nvar _inHomeList2 = _interopRequireDefault(_inHomeList);\n\nvar _inForeignList = require('./in-foreign-list');\n\nvar _inForeignList2 = _interopRequireDefault(_inForeignList);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (args) {\n var draggableId = args.draggableId,\n draggables = args.draggables,\n droppable = args.droppable;\n\n\n var draggable = draggables[draggableId];\n var isInHomeList = draggable.descriptor.droppableId === droppable.descriptor.id;\n\n if (!droppable.isEnabled) {\n return null;\n }\n\n if (isInHomeList) {\n return (0, _inHomeList2.default)(args);\n }\n\n return (0, _inForeignList2.default)(args);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _position = require('../position');\n\nvar _isVisibleInNewLocation = require('./is-visible-in-new-location');\n\nvar _isVisibleInNewLocation2 = _interopRequireDefault(_isVisibleInNewLocation);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _moveToEdge = require('../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getIndex = (0, _memoizeOne2.default)(function (draggables, target) {\n return draggables.indexOf(target);\n});\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggableId = _ref.draggableId,\n previousImpact = _ref.previousImpact,\n droppable = _ref.droppable,\n draggables = _ref.draggables;\n\n var location = previousImpact.destination;\n\n if (!location) {\n console.error('cannot move to next index when there is not previous destination');\n return null;\n }\n\n var draggable = draggables[draggableId];\n var axis = droppable.axis;\n\n var insideDroppable = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n var startIndex = getIndex(insideDroppable, draggable);\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n\n if (startIndex === -1) {\n console.error('could not find draggable inside current droppable');\n return null;\n }\n\n if (proposedIndex > insideDroppable.length - 1) {\n return null;\n }\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var destination = insideDroppable[proposedIndex];\n var isMovingTowardStart = isMovingForward && proposedIndex <= startIndex || !isMovingForward && proposedIndex >= startIndex;\n\n var edge = function () {\n if (!isMovingTowardStart) {\n return isMovingForward ? 'end' : 'start';\n }\n\n return isMovingForward ? 'start' : 'end';\n }();\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: edge,\n destination: destination.page.withoutMargin,\n destinationEdge: edge,\n destinationAxis: droppable.axis\n });\n\n var viewport = (0, _getViewport2.default)();\n\n var isVisible = (0, _isVisibleInNewLocation2.default)({\n draggable: draggable,\n destination: droppable,\n newCenter: newCenter,\n viewport: viewport\n });\n\n if (!isVisible) {\n return null;\n }\n\n var destinationDisplacement = {\n draggableId: destination.descriptor.id,\n isVisible: true,\n shouldAnimate: true\n };\n\n var modified = isMovingTowardStart ? previousImpact.movement.displaced.slice(1, previousImpact.movement.displaced.length) : [destinationDisplacement].concat((0, _toConsumableArray3.default)(previousImpact.movement.displaced));\n\n var displaced = modified.map(function (displacement) {\n var target = draggables[displacement.draggableId];\n\n var updated = (0, _getDisplacement2.default)({\n draggable: target,\n destination: droppable,\n previousImpact: previousImpact,\n viewport: viewport\n });\n\n return updated;\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n isBeyondStartPosition: proposedIndex > startIndex\n },\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n },\n direction: droppable.axis.direction\n };\n\n var result = {\n pageCenter: newCenter,\n impact: newImpact\n };\n\n return result;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nvar _position = require('../position');\n\nvar _moveToEdge = require('../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isVisibleInNewLocation = require('./is-visible-in-new-location');\n\nvar _isVisibleInNewLocation2 = _interopRequireDefault(_isVisibleInNewLocation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggableId = _ref.draggableId,\n previousImpact = _ref.previousImpact,\n droppable = _ref.droppable,\n draggables = _ref.draggables;\n\n if (!previousImpact.destination) {\n console.error('cannot move to next index when there is not previous destination');\n return null;\n }\n\n var location = previousImpact.destination;\n var draggable = draggables[draggableId];\n var axis = droppable.axis;\n\n var insideForeignDroppable = (0, _getDraggablesInsideDroppable2.default)(droppable, draggables);\n\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var lastIndex = insideForeignDroppable.length - 1;\n\n if (proposedIndex > insideForeignDroppable.length) {\n return null;\n }\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var movingRelativeTo = insideForeignDroppable[Math.min(proposedIndex, lastIndex)];\n\n var isMovingPastLastIndex = proposedIndex > lastIndex;\n var sourceEdge = 'start';\n var destinationEdge = function () {\n if (isMovingPastLastIndex) {\n return 'end';\n }\n\n return 'start';\n }();\n\n var viewport = (0, _getViewport2.default)();\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: sourceEdge,\n destination: movingRelativeTo.page.withMargin,\n destinationEdge: destinationEdge,\n destinationAxis: droppable.axis\n });\n\n var isVisible = function () {\n if (isMovingPastLastIndex) {\n return true;\n }\n\n return (0, _isVisibleInNewLocation2.default)({\n draggable: draggable,\n destination: droppable,\n newCenter: newCenter,\n viewport: viewport\n });\n }();\n\n if (!isVisible) {\n return null;\n }\n\n var movingRelativeToDisplacement = {\n draggableId: movingRelativeTo.descriptor.id,\n isVisible: true,\n shouldAnimate: true\n };\n\n var modified = isMovingForward ? previousImpact.movement.displaced.slice(1, previousImpact.movement.displaced.length) : [movingRelativeToDisplacement].concat((0, _toConsumableArray3.default)(previousImpact.movement.displaced));\n\n var displaced = modified.map(function (displacement) {\n if (displacement === movingRelativeToDisplacement) {\n return displacement;\n }\n\n var target = draggables[displacement.draggableId];\n\n var updated = (0, _getDisplacement2.default)({\n draggable: target,\n destination: droppable,\n viewport: viewport,\n previousImpact: previousImpact\n });\n\n return updated;\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n\n amount: (0, _position.patch)(axis.line, draggable.page.withMargin[axis.size]),\n\n isBeyondStartPosition: false\n },\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n },\n direction: droppable.axis.direction\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getBestCrossAxisDroppable = require('./get-best-cross-axis-droppable');\n\nvar _getBestCrossAxisDroppable2 = _interopRequireDefault(_getBestCrossAxisDroppable);\n\nvar _getClosestDraggable = require('./get-closest-draggable');\n\nvar _getClosestDraggable2 = _interopRequireDefault(_getClosestDraggable);\n\nvar _moveToNewDroppable = require('./move-to-new-droppable/');\n\nvar _moveToNewDroppable2 = _interopRequireDefault(_moveToNewDroppable);\n\nvar _noImpact = require('../no-impact');\n\nvar _noImpact2 = _interopRequireDefault(_noImpact);\n\nvar _getDraggablesInsideDroppable = require('../get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageCenter = _ref.pageCenter,\n draggableId = _ref.draggableId,\n droppableId = _ref.droppableId,\n home = _ref.home,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact;\n\n var draggable = draggables[draggableId];\n var source = droppables[droppableId];\n\n var destination = (0, _getBestCrossAxisDroppable2.default)({\n isMovingForward: isMovingForward,\n pageCenter: pageCenter,\n source: source,\n droppables: droppables\n });\n\n if (!destination) {\n return null;\n }\n\n var insideDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n var target = (0, _getClosestDraggable2.default)({\n axis: destination.axis,\n pageCenter: pageCenter,\n destination: destination,\n insideDestination: insideDestination\n });\n\n if (insideDestination.length && !target) {\n return null;\n }\n\n return (0, _moveToNewDroppable2.default)({\n pageCenter: pageCenter,\n destination: destination,\n draggable: draggable,\n target: target,\n insideDestination: insideDestination,\n home: home,\n previousImpact: previousImpact || _noImpact2.default\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _position = require('../position');\n\nvar _isWithin = require('../is-within');\n\nvar _isWithin2 = _interopRequireDefault(_isWithin);\n\nvar _spacing = require('../spacing');\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isVisibleThroughFrame = require('../visibility/is-visible-through-frame');\n\nvar _isVisibleThroughFrame2 = _interopRequireDefault(_isVisibleThroughFrame);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getSafeClipped = function getSafeClipped(droppable) {\n var area = droppable.viewport.clipped;\n\n if (!area) {\n throw new Error('cannot get clipped area from droppable');\n }\n return area;\n};\n\nexports.default = function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageCenter = _ref.pageCenter,\n source = _ref.source,\n droppables = _ref.droppables;\n\n var sourceClipped = source.viewport.clipped;\n\n if (!sourceClipped) {\n return null;\n }\n\n var axis = source.axis;\n var isBetweenSourceClipped = (0, _isWithin2.default)(sourceClipped[axis.start], sourceClipped[axis.end]);\n var viewport = (0, _getViewport2.default)();\n\n var candidates = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id];\n }).filter(function (droppable) {\n return droppable !== source;\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).filter(function (droppable) {\n return Boolean(droppable.viewport.clipped);\n }).filter(function (droppable) {\n return (0, _isVisibleThroughFrame2.default)(viewport)(droppable.viewport.frame);\n }).filter(function (droppable) {\n var targetClipped = getSafeClipped(droppable);\n\n if (isMovingForward) {\n return sourceClipped[axis.crossAxisEnd] <= targetClipped[axis.crossAxisStart];\n }\n\n return targetClipped[axis.crossAxisEnd] <= sourceClipped[axis.crossAxisStart];\n }).filter(function (droppable) {\n var targetClipped = getSafeClipped(droppable);\n\n var isBetweenDestinationClipped = (0, _isWithin2.default)(targetClipped[axis.start], targetClipped[axis.end]);\n\n return isBetweenSourceClipped(targetClipped[axis.start]) || isBetweenSourceClipped(targetClipped[axis.end]) || isBetweenDestinationClipped(sourceClipped[axis.start]) || isBetweenDestinationClipped(sourceClipped[axis.end]);\n }).sort(function (a, b) {\n var first = getSafeClipped(a)[axis.crossAxisStart];\n var second = getSafeClipped(b)[axis.crossAxisStart];\n\n if (isMovingForward) {\n return first - second;\n }\n return second - first;\n }).filter(function (droppable, index, array) {\n return getSafeClipped(droppable)[axis.crossAxisStart] === getSafeClipped(array[0])[axis.crossAxisStart];\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n var contains = candidates.filter(function (droppable) {\n var isWithinDroppable = (0, _isWithin2.default)(getSafeClipped(droppable)[axis.start], getSafeClipped(droppable)[axis.end]);\n return isWithinDroppable(pageCenter[axis.line]);\n });\n\n if (contains.length === 1) {\n return contains[0];\n }\n\n if (contains.length > 1) {\n return contains.sort(function (a, b) {\n return getSafeClipped(a)[axis.start] - getSafeClipped(b)[axis.start];\n })[0];\n }\n\n return candidates.sort(function (a, b) {\n var first = (0, _position.closest)(pageCenter, (0, _spacing.getCorners)(getSafeClipped(a)));\n var second = (0, _position.closest)(pageCenter, (0, _spacing.getCorners)(getSafeClipped(b)));\n\n if (first !== second) {\n return first - second;\n }\n\n return getSafeClipped(a)[axis.start] - getSafeClipped(b)[axis.start];\n })[0];\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _position = require('../position');\n\nvar _getViewport = require('../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _isPartiallyVisible = require('../visibility/is-partially-visible');\n\nvar _isPartiallyVisible2 = _interopRequireDefault(_isPartiallyVisible);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var axis = _ref.axis,\n pageCenter = _ref.pageCenter,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination;\n\n if (!insideDestination.length) {\n return null;\n }\n\n var viewport = (0, _getViewport2.default)();\n\n var result = insideDestination.filter(function (draggable) {\n return (0, _isPartiallyVisible2.default)({\n target: draggable.page.withMargin,\n destination: destination,\n viewport: viewport\n });\n }).sort(function (a, b) {\n var distanceToA = (0, _position.distance)(pageCenter, a.page.withMargin.center);\n var distanceToB = (0, _position.distance)(pageCenter, b.page.withMargin.center);\n\n if (distanceToA < distanceToB) {\n return -1;\n }\n\n if (distanceToB < distanceToA) {\n return 1;\n }\n\n return a.page.withMargin[axis.start] - b.page.withMargin[axis.start];\n });\n\n return result.length ? result[0] : null;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toHomeList = require('./to-home-list');\n\nvar _toHomeList2 = _interopRequireDefault(_toHomeList);\n\nvar _toForeignList = require('./to-foreign-list');\n\nvar _toForeignList2 = _interopRequireDefault(_toForeignList);\n\nvar _position = require('../../position');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var pageCenter = _ref.pageCenter,\n destination = _ref.destination,\n draggable = _ref.draggable,\n target = _ref.target,\n home = _ref.home,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n var amount = (0, _position.patch)(destination.axis.line, draggable.client.withMargin[destination.axis.size]);\n\n if (destination.descriptor.id === draggable.descriptor.droppableId) {\n return (0, _toHomeList2.default)({\n amount: amount,\n originalIndex: home.index,\n target: target,\n insideDroppable: insideDestination,\n draggable: draggable,\n droppable: destination,\n previousImpact: previousImpact\n });\n }\n\n return (0, _toForeignList2.default)({\n amount: amount,\n pageCenter: pageCenter,\n target: target,\n insideDroppable: insideDestination,\n draggable: draggable,\n droppable: destination,\n previousImpact: previousImpact\n });\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('../../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getViewport = require('../../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nvar _getDisplacement = require('../../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var amount = _ref.amount,\n originalIndex = _ref.originalIndex,\n target = _ref.target,\n insideDroppable = _ref.insideDroppable,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n previousImpact = _ref.previousImpact;\n\n if (!target) {\n console.error('there will always be a target in the original list');\n return null;\n }\n\n var axis = droppable.axis;\n var targetIndex = insideDroppable.indexOf(target);\n\n if (targetIndex === -1) {\n console.error('unable to find target in destination droppable');\n return null;\n }\n\n if (targetIndex === originalIndex) {\n var _newCenter = draggable.page.withoutMargin.center;\n var _newImpact = {\n movement: {\n displaced: [],\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: droppable.axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: originalIndex\n }\n };\n\n return {\n pageCenter: _newCenter,\n impact: _newImpact\n };\n }\n\n var isMovingPastOriginalIndex = targetIndex > originalIndex;\n var edge = isMovingPastOriginalIndex ? 'end' : 'start';\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: edge,\n destination: isMovingPastOriginalIndex ? target.page.withoutMargin : target.page.withMargin,\n destinationEdge: edge,\n destinationAxis: axis\n });\n\n var modified = function () {\n if (!isMovingPastOriginalIndex) {\n return insideDroppable.slice(targetIndex, originalIndex);\n }\n\n var from = originalIndex + 1;\n\n var to = targetIndex + 1;\n\n return insideDroppable.slice(from, to).reverse();\n }();\n\n var viewport = (0, _getViewport2.default)();\n var displaced = modified.map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: droppable,\n previousImpact: previousImpact,\n viewport: viewport\n });\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n amount: amount,\n isBeyondStartPosition: isMovingPastOriginalIndex\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: targetIndex\n }\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('../../move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDisplacement = require('../../get-displacement');\n\nvar _getDisplacement2 = _interopRequireDefault(_getDisplacement);\n\nvar _getViewport = require('../../visibility/get-viewport');\n\nvar _getViewport2 = _interopRequireDefault(_getViewport);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var amount = _ref.amount,\n pageCenter = _ref.pageCenter,\n target = _ref.target,\n insideDroppable = _ref.insideDroppable,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n previousImpact = _ref.previousImpact;\n\n var axis = droppable.axis;\n var isGoingBeforeTarget = Boolean(target && pageCenter[droppable.axis.line] < target.page.withMargin.center[droppable.axis.line]);\n\n if (!target) {\n\n var _newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: 'start',\n destination: droppable.page.withMarginAndPadding,\n destinationEdge: 'start',\n destinationAxis: axis\n });\n\n var _newImpact = {\n movement: {\n displaced: [],\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: 0\n }\n };\n\n return {\n pageCenter: _newCenter,\n impact: _newImpact\n };\n }\n\n var targetIndex = insideDroppable.indexOf(target);\n var proposedIndex = isGoingBeforeTarget ? targetIndex : targetIndex + 1;\n\n if (targetIndex === -1) {\n console.error('could not find target inside destination');\n return null;\n }\n\n var newCenter = (0, _moveToEdge2.default)({\n source: draggable.page.withoutMargin,\n sourceEdge: 'start',\n destination: target.page.withMargin,\n destinationEdge: isGoingBeforeTarget ? 'start' : 'end',\n destinationAxis: axis\n });\n\n var viewport = (0, _getViewport2.default)();\n var displaced = insideDroppable.slice(proposedIndex, insideDroppable.length).map(function (dimension) {\n return (0, _getDisplacement2.default)({\n draggable: dimension,\n destination: droppable,\n viewport: viewport,\n previousImpact: previousImpact\n });\n });\n\n var newImpact = {\n movement: {\n displaced: displaced,\n amount: amount,\n isBeyondStartPosition: false\n },\n direction: axis.direction,\n destination: {\n droppableId: droppable.descriptor.id,\n index: proposedIndex\n }\n };\n\n return {\n pageCenter: newCenter,\n impact: newImpact\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (hooks, previous, current) {\n var onDragStart = hooks.onDragStart,\n onDragEnd = hooks.onDragEnd;\n\n var currentPhase = current.phase;\n var previousPhase = previous.phase;\n\n if (currentPhase === previousPhase) {\n return;\n }\n\n if (currentPhase === 'DRAGGING' && previousPhase !== 'DRAGGING') {\n if (!onDragStart) {\n return;\n }\n\n if (!current.drag) {\n console.error('cannot fire onDragStart hook without drag state', { current: current, previous: previous });\n return;\n }\n\n var descriptor = current.drag.initial.descriptor;\n var home = current.dimension.droppable[descriptor.droppableId];\n\n if (!home) {\n console.error('cannot find dimension for home droppable');\n return;\n }\n\n var source = {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n\n var start = {\n draggableId: descriptor.id,\n type: home.descriptor.type,\n source: source\n };\n\n onDragStart(start);\n return;\n }\n\n if (currentPhase === 'DROP_COMPLETE' && previousPhase !== 'DROP_COMPLETE') {\n if (!current.drop || !current.drop.result) {\n console.error('cannot fire onDragEnd hook without drag state', { current: current, previous: previous });\n return;\n }\n\n var _current$drop$result = current.drop.result,\n _source = _current$drop$result.source,\n destination = _current$drop$result.destination,\n draggableId = _current$drop$result.draggableId,\n type = _current$drop$result.type;\n\n if (!destination) {\n onDragEnd(current.drop.result);\n return;\n }\n\n var didMove = _source.droppableId !== destination.droppableId || _source.index !== destination.index;\n\n if (didMove) {\n onDragEnd(current.drop.result);\n return;\n }\n\n var muted = {\n draggableId: draggableId,\n type: type,\n source: _source,\n destination: null\n };\n\n onDragEnd(muted);\n return;\n }\n\n if (currentPhase === 'IDLE' && previousPhase === 'DRAGGING') {\n if (!previous.drag) {\n console.error('cannot fire onDragEnd for cancel because cannot find previous drag');\n return;\n }\n\n var _descriptor = previous.drag.initial.descriptor;\n var _home = previous.dimension.droppable[_descriptor.droppableId];\n\n if (!_home) {\n console.error('cannot find dimension for home droppable');\n return;\n }\n\n var _source2 = {\n index: _descriptor.index,\n droppableId: _descriptor.droppableId\n };\n\n var result = {\n draggableId: _descriptor.id,\n type: _home.descriptor.type,\n source: _source2,\n destination: null\n };\n onDragEnd(result);\n return;\n }\n\n if (currentPhase === 'IDLE' && previousPhase === 'DROP_ANIMATING') {\n if (!previous.drop || !previous.drop.pending) {\n console.error('cannot fire onDragEnd for cancel because cannot find previous pending drop');\n return;\n }\n\n var _result = {\n draggableId: previous.drop.pending.result.draggableId,\n type: previous.drop.pending.result.type,\n source: previous.drop.pending.result.source,\n destination: null\n };\n onDragEnd(_result);\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (callbacks) {\n var state = {\n droppables: {},\n draggables: {},\n isCollecting: false,\n request: null,\n frameId: null\n };\n\n var setState = function setState(partial) {\n var newState = (0, _extends5.default)({}, state, partial);\n state = newState;\n };\n\n var cancel = function cancel() {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n\n if (!state.isCollecting) {\n return;\n }\n\n stopCollecting();\n callbacks.cancel();\n };\n\n var registerDraggable = function registerDraggable(descriptor, getDimension) {\n var id = descriptor.id;\n\n if (!state.droppables[descriptor.droppableId]) {\n cancel('Cannot register Draggable ' + id + ' as there is no entry for the Droppable ' + descriptor.droppableId);\n return;\n }\n\n var entry = {\n descriptor: descriptor,\n getDimension: getDimension\n };\n var draggables = (0, _extends5.default)({}, state.draggables, (0, _defineProperty3.default)({}, id, entry));\n\n setState({\n draggables: draggables\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('Adding a draggable during a drag is currently not supported');\n };\n\n var registerDroppable = function registerDroppable(descriptor, droppableCallbacks) {\n var id = descriptor.id;\n\n var entry = {\n descriptor: descriptor,\n callbacks: droppableCallbacks\n };\n\n var droppables = (0, _extends5.default)({}, state.droppables, (0, _defineProperty3.default)({}, id, entry));\n\n setState({\n droppables: droppables\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('Currently not supporting updating Droppables during a drag');\n };\n\n var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n if (!state.droppables[id]) {\n cancel('Cannot update the scroll on Droppable ' + id + ' as it is not registered');\n return;\n }\n\n if (!state.isCollecting) {\n return;\n }\n callbacks.updateDroppableIsEnabled(id, isEnabled);\n };\n\n var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n if (!state.droppables[id]) {\n cancel('Cannot update the scroll on Droppable ' + id + ' as it is not registered');\n return;\n }\n\n if (!state.isCollecting) {\n return;\n }\n callbacks.updateDroppableScroll(id, newScroll);\n };\n\n var unregisterDraggable = function unregisterDraggable(descriptor) {\n var entry = state.draggables[descriptor.id];\n\n if (!entry) {\n cancel('Cannot unregister Draggable with id ' + descriptor.id + ' as it is not registered');\n return;\n }\n\n if (entry.descriptor !== descriptor) {\n return;\n }\n\n var newMap = (0, _extends5.default)({}, state.draggables);\n delete newMap[descriptor.id];\n\n setState({\n draggables: newMap\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('currently not supporting unmounting a Draggable during a drag');\n };\n\n var unregisterDroppable = function unregisterDroppable(descriptor) {\n var entry = state.droppables[descriptor.id];\n\n if (!entry) {\n cancel('Cannot unregister Droppable with id ' + descriptor.id + ' as as it is not registered');\n return;\n }\n\n if (entry.descriptor !== descriptor) {\n return;\n }\n\n var newMap = (0, _extends5.default)({}, state.droppables);\n delete newMap[descriptor.id];\n\n setState({\n droppables: newMap\n });\n\n if (!state.isCollecting) {\n return;\n }\n\n console.warn('currently not supporting unmounting a Droppable during a drag');\n };\n\n var getToBeCollected = function getToBeCollected() {\n var draggables = state.draggables;\n var droppables = state.droppables;\n var request = state.request;\n\n if (!request) {\n console.error('cannot find request in state');\n return [];\n }\n\n var descriptor = draggables[request].descriptor;\n var home = droppables[descriptor.droppableId].descriptor;\n\n var draggablesToBeCollected = (0, _keys2.default)(draggables).map(function (id) {\n return draggables[id].descriptor;\n }).filter(function (item) {\n return item.id !== descriptor.id;\n }).filter(function (item) {\n var entry = droppables[item.droppableId];\n\n if (!entry) {\n console.warn('Orphan Draggable found ' + item.id + ' which says it belongs to unknown Droppable ' + item.droppableId);\n return false;\n }\n\n return entry.descriptor.type === home.type;\n });\n\n var droppablesToBeCollected = (0, _keys2.default)(droppables).map(function (id) {\n return droppables[id].descriptor;\n }).filter(function (item) {\n return item.id !== home.id;\n }).filter(function (item) {\n var droppable = droppables[item.id].descriptor;\n return droppable.type === home.type;\n });\n\n var toBeCollected = [].concat((0, _toConsumableArray3.default)(droppablesToBeCollected), (0, _toConsumableArray3.default)(draggablesToBeCollected));\n\n return toBeCollected;\n };\n\n var processPrimaryDimensions = function processPrimaryDimensions(request) {\n if (state.isCollecting) {\n cancel('Cannot start capturing dimensions for a drag it is already dragging');\n return;\n }\n\n if (!request) {\n cancel('Cannot start capturing dimensions with an invalid request', request);\n return;\n }\n\n setState({\n isCollecting: true,\n request: request\n });\n\n var draggables = state.draggables;\n var droppables = state.droppables;\n var draggableEntry = draggables[request];\n\n if (!draggableEntry) {\n cancel('Cannot find Draggable with id ' + request + ' to start collecting dimensions');\n return;\n }\n\n var homeEntry = droppables[draggableEntry.descriptor.droppableId];\n\n if (!homeEntry) {\n cancel('Cannot find home Droppable [id:' + draggableEntry.descriptor.droppableId + '] for Draggable [id:' + request + ']');\n return;\n }\n\n var home = homeEntry.callbacks.getDimension();\n var draggable = draggableEntry.getDimension();\n\n callbacks.publishDroppables([home]);\n callbacks.publishDraggables([draggable]);\n\n homeEntry.callbacks.watchScroll();\n };\n\n var setFrameId = function setFrameId(frameId) {\n setState({\n frameId: frameId\n });\n };\n\n var processSecondaryDimensions = function processSecondaryDimensions() {\n if (!state.isCollecting) {\n cancel('Cannot collect secondary dimensions when collection is not occurring');\n return;\n }\n\n var toBeCollected = getToBeCollected();\n\n var collectFrameId = requestAnimationFrame(function () {\n var toBePublishedBuffer = toBeCollected.map(function (descriptor) {\n if (descriptor.type) {\n return state.droppables[descriptor.id].callbacks.getDimension();\n }\n\n return state.draggables[descriptor.id].getDimension();\n });\n\n var publishFrameId = requestAnimationFrame(function () {\n var toBePublished = toBePublishedBuffer.reduce(function (previous, dimension) {\n if (dimension.placeholder) {\n previous.draggables.push(dimension);\n } else {\n previous.droppables.push(dimension);\n }\n return previous;\n }, { draggables: [], droppables: [] });\n\n if (toBePublished.droppables.length) {\n callbacks.publishDroppables(toBePublished.droppables);\n }\n if (toBePublished.draggables.length) {\n callbacks.publishDraggables(toBePublished.draggables);\n }\n\n toBePublished.droppables.forEach(function (dimension) {\n var entry = state.droppables[dimension.descriptor.id];\n entry.callbacks.watchScroll();\n });\n\n setFrameId(null);\n });\n\n setFrameId(publishFrameId);\n });\n\n setFrameId(collectFrameId);\n };\n\n var stopCollecting = function stopCollecting() {\n (0, _keys2.default)(state.droppables).forEach(function (id) {\n return state.droppables[id].callbacks.unwatchScroll();\n });\n\n if (state.frameId) {\n cancelAnimationFrame(state.frameId);\n }\n\n setState({\n isCollecting: false,\n request: null,\n frameId: null\n });\n };\n\n var onPhaseChange = function onPhaseChange(current) {\n var phase = current.phase;\n\n if (phase === 'COLLECTING_INITIAL_DIMENSIONS') {\n processPrimaryDimensions(current.dimension.request);\n return;\n }\n\n if (phase === 'DRAGGING') {\n if (current.dimension.request !== state.request) {\n cancel('Request in local state does not match that of the store');\n return;\n }\n\n processSecondaryDimensions();\n return;\n }\n\n if (phase === 'DROP_ANIMATING' || phase === 'DROP_COMPLETE') {\n if (state.isCollecting) {\n stopCollecting();\n }\n return;\n }\n\n if (phase === 'IDLE') {\n if (state.isCollecting) {\n stopCollecting();\n }\n }\n };\n\n var marshal = {\n registerDraggable: registerDraggable,\n unregisterDraggable: unregisterDraggable,\n registerDroppable: registerDroppable,\n unregisterDroppable: unregisterDroppable,\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableScroll: updateDroppableScroll,\n onPhaseChange: onPhaseChange\n };\n\n return marshal;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getStyles = require('./get-styles');\n\nvar _getStyles2 = _interopRequireDefault(_getStyles);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar count = 0;\n\nvar prefix = 'data-react-beautiful-dnd';\n\nexports.default = function () {\n var context = '' + count++;\n var styles = (0, _getStyles2.default)(context);\n\n var state = {\n el: null\n };\n\n var setState = function setState(newState) {\n state = newState;\n };\n\n var setStyle = (0, _memoizeOne2.default)(function (proposed) {\n if (!state.el) {\n console.error('cannot set style of style tag if not mounted');\n return;\n }\n\n state.el.innerHTML = proposed;\n });\n\n var mount = function mount() {\n if (state.el) {\n console.error('Style marshal already mounted');\n return;\n }\n\n var el = document.createElement('style');\n el.type = 'text/css';\n\n el.setAttribute(prefix, context);\n var head = document.querySelector('head');\n\n if (!head) {\n throw new Error('Cannot find the head to append a style to');\n }\n\n head.appendChild(el);\n setState({\n el: el\n });\n\n setStyle(styles.resting);\n };\n\n var onPhaseChange = function onPhaseChange(current) {\n if (!state.el) {\n console.error('cannot update styles until style marshal is mounted');\n return;\n }\n\n var phase = current.phase;\n\n if (phase === 'DRAGGING') {\n setStyle(styles.dragging);\n return;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!current.drop || !current.drop.pending) {\n console.error('Invalid state found in style-marshal');\n return;\n }\n\n var trigger = current.drop.pending.trigger;\n\n if (trigger === 'DROP') {\n setStyle(styles.dropAnimating);\n return;\n }\n setStyle(styles.userCancel);\n return;\n }\n\n setStyle(styles.resting);\n };\n\n var unmount = function unmount() {\n if (!state.el) {\n console.error('Cannot unmount style marshal as it is already unmounted');\n return;\n }\n var previous = state.el;\n\n setState({\n el: null\n });\n\n if (!previous.parentNode) {\n console.error('Cannot unmount style marshal as cannot find parent');\n return;\n }\n\n previous.parentNode.removeChild(previous);\n };\n\n var marshal = {\n onPhaseChange: onPhaseChange,\n styleContext: context,\n mount: mount,\n unmount: unmount\n };\n\n return marshal;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _animation = require('../animation');\n\nvar prefix = 'data-react-beautiful-dnd';\n\nexports.default = function (styleContext) {\n var dragHandleSelector = '[' + prefix + '-drag-handle=\"' + styleContext + '\"]';\n var draggableSelector = '[' + prefix + '-draggable=\"' + styleContext + '\"]';\n\n var dragHandleStyles = {\n base: '\\n ' + dragHandleSelector + ' {\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n }\\n ',\n grabCursor: '\\n ' + dragHandleSelector + ' {\\n cursor: -webkit-grab;\\n cursor: grab;\\n }\\n ',\n blockPointerEvents: '\\n ' + dragHandleSelector + ' {\\n pointer-events: none;\\n }\\n '\n };\n\n var draggableStyles = {\n animateMovement: '\\n ' + draggableSelector + ' {\\n transition: ' + _animation.css.outOfTheWay + ';\\n }\\n '\n };\n\n var bodyStyles = {\n whileActiveDragging: '\\n body {\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n }\\n '\n };\n\n var resting = [dragHandleStyles.base, dragHandleStyles.grabCursor].join('');\n\n var dragging = [dragHandleStyles.base, dragHandleStyles.blockPointerEvents, draggableStyles.animateMovement, bodyStyles.whileActiveDragging].join('');\n\n var dropAnimating = [dragHandleStyles.base, dragHandleStyles.grabCursor, draggableStyles.animateMovement].join('');\n\n var userCancel = [dragHandleStyles.base, draggableStyles.animateMovement].join('');\n\n return { resting: resting, dragging: dragging, dropAnimating: dropAnimating, userCancel: userCancel };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (state, id) {\n var phase = state.phase;\n\n if (phase === 'IDLE' || phase === 'DROP_COMPLETE') {\n return true;\n }\n\n if (phase === 'PREPARING' || phase === 'COLLECTING_INITIAL_DIMENSIONS' || phase === 'DRAGGING') {\n return false;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!state.drop || !state.drop.pending) {\n console.error('Invalid state shape for drop animating');\n return false;\n }\n\n if (state.drop.pending.result.draggableId === id) {\n return false;\n }\n\n return state.drop.pending.trigger === 'DROP';\n }\n\n console.warn('unhandled phase ' + phase + ' in canLift check');\n return false;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveToEdge = require('./move-to-edge');\n\nvar _moveToEdge2 = _interopRequireDefault(_moveToEdge);\n\nvar _getDraggablesInsideDroppable = require('./get-draggables-inside-droppable');\n\nvar _getDraggablesInsideDroppable2 = _interopRequireDefault(_getDraggablesInsideDroppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var movement = _ref.movement,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination;\n\n var homeCenter = draggable.client.withMargin.center;\n\n if (destination == null) {\n return homeCenter;\n }\n\n var displaced = movement.displaced,\n isBeyondStartPosition = movement.isBeyondStartPosition;\n\n var axis = destination.axis;\n\n var isWithinHomeDroppable = destination.descriptor.id === draggable.descriptor.droppableId;\n\n if (isWithinHomeDroppable && !displaced.length) {\n return homeCenter;\n }\n\n var draggablesInDestination = (0, _getDraggablesInsideDroppable2.default)(destination, draggables);\n\n var destinationFragment = function () {\n if (isWithinHomeDroppable) {\n return draggables[displaced[0].draggableId].client.withMargin;\n }\n\n if (displaced.length) {\n return draggables[displaced[0].draggableId].client.withMargin;\n }\n\n if (draggablesInDestination.length) {\n return draggablesInDestination[draggablesInDestination.length - 1].client.withMargin;\n }\n\n return destination.client.withMarginAndPadding;\n }();\n\n var _ref2 = function () {\n if (isWithinHomeDroppable) {\n if (isBeyondStartPosition) {\n return { sourceEdge: 'end', destinationEdge: 'end' };\n }\n\n return { sourceEdge: 'start', destinationEdge: 'start' };\n }\n\n if (!displaced.length && draggablesInDestination.length) {\n return { sourceEdge: 'start', destinationEdge: 'end' };\n }\n\n return { sourceEdge: 'start', destinationEdge: 'start' };\n }(),\n sourceEdge = _ref2.sourceEdge,\n destinationEdge = _ref2.destinationEdge;\n\n var source = draggable.client.withMargin;\n\n var targetCenter = (0, _moveToEdge2.default)({\n source: source,\n sourceEdge: sourceEdge,\n destination: destinationFragment,\n destinationEdge: destinationEdge,\n destinationAxis: axis\n });\n\n return targetCenter;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _connectedDroppable = require('./connected-droppable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_connectedDroppable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeSelector = undefined;\n\nvar _reactRedux = require('react-redux');\n\nvar _reselect = require('reselect');\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _contextKeys = require('../context-keys');\n\nvar _selectors = require('../../state/selectors');\n\nvar _droppable = require('./droppable');\n\nvar _droppable2 = _interopRequireDefault(_droppable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar makeSelector = exports.makeSelector = function makeSelector() {\n var idSelector = function idSelector(state, ownProps) {\n return ownProps.droppableId;\n };\n var isDropDisabledSelector = function isDropDisabledSelector(state, ownProps) {\n return ownProps.isDropDisabled || false;\n };\n\n var getIsDraggingOver = (0, _memoizeOne2.default)(function (id, destination) {\n if (!destination) {\n return false;\n }\n return destination.droppableId === id;\n });\n\n var getPlaceholder = (0, _memoizeOne2.default)(function (id, destination, draggable) {\n if (!draggable) {\n return null;\n }\n\n if (!destination) {\n return null;\n }\n\n if (id === draggable.descriptor.droppableId) {\n return null;\n }\n\n if (id !== destination.droppableId) {\n return null;\n }\n\n return draggable.placeholder;\n });\n\n var getMapProps = (0, _memoizeOne2.default)(function (isDraggingOver, placeholder) {\n return {\n isDraggingOver: isDraggingOver,\n placeholder: placeholder\n };\n });\n\n return (0, _reselect.createSelector)([_selectors.phaseSelector, _selectors.dragSelector, _selectors.draggingDraggableSelector, _selectors.pendingDropSelector, idSelector, isDropDisabledSelector], function (phase, drag, draggable, pending, id, isDropDisabled) {\n if (isDropDisabled) {\n return getMapProps(false, null);\n }\n\n if (phase === 'DRAGGING') {\n if (!drag) {\n console.error('cannot determine dragging over as there is not drag');\n return getMapProps(false, null);\n }\n\n var isDraggingOver = getIsDraggingOver(id, drag.impact.destination);\n\n var placeholder = getPlaceholder(id, drag.impact.destination, draggable);\n return getMapProps(isDraggingOver, placeholder);\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!pending) {\n console.error('cannot determine dragging over as there is no pending result');\n return getMapProps(false, null);\n }\n\n var _isDraggingOver = getIsDraggingOver(id, pending.impact.destination);\n var _placeholder = getPlaceholder(id, pending.result.destination, draggable);\n return getMapProps(_isDraggingOver, _placeholder);\n }\n\n return getMapProps(false, null);\n });\n};\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var selector = makeSelector();\n return function (state, props) {\n return selector(state, props);\n };\n};\n\nexports.default = (0, _reactRedux.connect)(makeMapStateToProps, null, null, { storeKey: _contextKeys.storeKey })(_droppable2.default);","/** @license React v16.6.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});\nvar b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,r=b?Symbol.for(\"react.memo\"):\n60115,t=b?Symbol.for(\"react.lazy\"):60116;function u(a){if(\"object\"===typeof a&&null!==a){var q=a.$$typeof;switch(q){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return q}}case d:return q}}}function v(a){return u(a)===m}exports.typeOf=u;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;\nexports.Profiler=g;exports.Portal=d;exports.StrictMode=f;exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||u(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return u(a)===k};exports.isContextProvider=function(a){return u(a)===h};\nexports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return u(a)===n};exports.isFragment=function(a){return u(a)===e};exports.isProfiler=function(a){return u(a)===g};exports.isPortal=function(a){return u(a)===d};exports.isStrictMode=function(a){return u(a)===f};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.draggingDraggableSelector = exports.dragSelector = exports.pendingDropSelector = exports.phaseSelector = undefined;\n\nvar _reselect = require('reselect');\n\nvar phaseSelector = exports.phaseSelector = function phaseSelector(state) {\n return state.phase;\n};\n\nvar pendingDropSelector = exports.pendingDropSelector = function pendingDropSelector(state) {\n if (!state.drop || !state.drop.pending) {\n return null;\n }\n return state.drop.pending;\n};\n\nvar dragSelector = exports.dragSelector = function dragSelector(state) {\n return state.drag;\n};\n\nvar draggableMapSelector = function draggableMapSelector(state) {\n return state.dimension.draggable;\n};\n\nvar draggingDraggableSelector = exports.draggingDraggableSelector = (0, _reselect.createSelector)([phaseSelector, dragSelector, pendingDropSelector, draggableMapSelector], function (phase, drag, pending, draggables) {\n if (phase === 'DRAGGING') {\n if (!drag) {\n console.error('cannot get placeholder dimensions as there is an invalid drag state');\n return null;\n }\n\n var draggable = draggables[drag.initial.descriptor.id];\n return draggable;\n }\n\n if (phase === 'DROP_ANIMATING') {\n if (!pending) {\n console.error('cannot get placeholder dimensions as there is an invalid drag state');\n return null;\n }\n\n if (!pending.result.destination) {\n return null;\n }\n\n var _draggable = draggables[pending.result.draggableId];\n return _draggable;\n }\n\n return null;\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _droppableDimensionPublisher = require('../droppable-dimension-publisher/');\n\nvar _droppableDimensionPublisher2 = _interopRequireDefault(_droppableDimensionPublisher);\n\nvar _placeholder = require('../placeholder/');\n\nvar _placeholder2 = _interopRequireDefault(_placeholder);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Droppable = function (_Component) {\n (0, _inherits3.default)(Droppable, _Component);\n\n function Droppable() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Droppable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Droppable.__proto__ || (0, _getPrototypeOf2.default)(Droppable)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n ref: null\n }, _this.setRef = function (ref) {\n if (ref === null) {\n return;\n }\n\n if (ref === _this.state.ref) {\n return;\n }\n\n _this.setState({\n ref: ref\n });\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Droppable, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var value = (0, _defineProperty3.default)({}, _contextKeys.droppableIdKey, this.props.droppableId);\n return value;\n }\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n if (!this.props.placeholder) {\n return null;\n }\n\n return _react2.default.createElement(_placeholder2.default, { placeholder: this.props.placeholder });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n direction = _props.direction,\n droppableId = _props.droppableId,\n ignoreContainerClipping = _props.ignoreContainerClipping,\n isDraggingOver = _props.isDraggingOver,\n isDropDisabled = _props.isDropDisabled,\n type = _props.type;\n\n var provided = {\n innerRef: this.setRef,\n placeholder: this.getPlaceholder()\n };\n var snapshot = {\n isDraggingOver: isDraggingOver\n };\n\n return _react2.default.createElement(\n _droppableDimensionPublisher2.default,\n {\n droppableId: droppableId,\n type: type,\n direction: direction,\n ignoreContainerClipping: ignoreContainerClipping,\n isDropDisabled: isDropDisabled,\n targetRef: this.state.ref\n },\n children(provided, snapshot)\n );\n }\n }]);\n return Droppable;\n}(_react.Component);\n\nDroppable.defaultProps = {\n type: 'DEFAULT',\n isDropDisabled: false,\n direction: 'vertical',\n ignoreContainerClipping: false\n};\nDroppable.childContextTypes = (0, _defineProperty3.default)({}, _contextKeys.droppableIdKey, _propTypes2.default.string.isRequired);\nexports.default = Droppable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _droppableDimensionPublisher = require('./droppable-dimension-publisher');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_droppableDimensionPublisher).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _rafSchd = require('raf-schd');\n\nvar _rafSchd2 = _interopRequireDefault(_rafSchd);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _getArea = require('../../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nvar _dimension = require('../../state/dimension');\n\nvar _getClosestScrollable = require('../get-closest-scrollable');\n\nvar _getClosestScrollable2 = _interopRequireDefault(_getClosestScrollable);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar DroppableDimensionPublisher = function (_Component) {\n (0, _inherits3.default)(DroppableDimensionPublisher, _Component);\n\n function DroppableDimensionPublisher(props, context) {\n (0, _classCallCheck3.default)(this, DroppableDimensionPublisher);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DroppableDimensionPublisher.__proto__ || (0, _getPrototypeOf2.default)(DroppableDimensionPublisher)).call(this, props, context));\n\n _this.closestScrollable = null;\n _this.isWatchingScroll = false;\n _this.publishedDescriptor = null;\n\n _this.getScrollOffset = function () {\n if (!_this.closestScrollable) {\n return origin;\n }\n\n var offset = {\n x: _this.closestScrollable.scrollLeft,\n y: _this.closestScrollable.scrollTop\n };\n\n return offset;\n };\n\n _this.memoizedUpdateScroll = (0, _memoizeOne2.default)(function (x, y) {\n if (!_this.publishedDescriptor) {\n console.error('Cannot update scroll on unpublished droppable');\n return;\n }\n\n var newScroll = { x: x, y: y };\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.updateDroppableScroll(_this.publishedDescriptor.id, newScroll);\n });\n _this.scheduleScrollUpdate = (0, _rafSchd2.default)(function (offset) {\n if (_this.isWatchingScroll) {\n _this.memoizedUpdateScroll(offset.x, offset.y);\n }\n });\n\n _this.onClosestScroll = function () {\n _this.scheduleScrollUpdate(_this.getScrollOffset());\n };\n\n _this.watchScroll = function () {\n if (!_this.props.targetRef) {\n console.error('cannot watch droppable scroll if not in the dom');\n return;\n }\n\n if (_this.closestScrollable == null) {\n return;\n }\n\n if (_this.isWatchingScroll) {\n return;\n }\n\n _this.isWatchingScroll = true;\n _this.closestScrollable.addEventListener('scroll', _this.onClosestScroll, { passive: true });\n };\n\n _this.unwatchScroll = function () {\n if (!_this.isWatchingScroll) {\n return;\n }\n\n _this.isWatchingScroll = false;\n\n if (!_this.closestScrollable) {\n console.error('cannot unbind event listener if element is null');\n return;\n }\n\n _this.closestScrollable.removeEventListener('scroll', _this.onClosestScroll);\n };\n\n _this.getMemoizedDescriptor = (0, _memoizeOne2.default)(function (id, type) {\n return {\n id: id,\n type: type\n };\n });\n\n _this.unpublish = function () {\n if (!_this.publishedDescriptor) {\n console.error('cannot unpublish descriptor when none is published');\n return;\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.unregisterDroppable(_this.publishedDescriptor);\n _this.publishedDescriptor = null;\n };\n\n _this.publish = function (descriptor) {\n if (descriptor === _this.publishedDescriptor) {\n return;\n }\n\n if (_this.publishedDescriptor) {\n _this.unpublish();\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.registerDroppable(descriptor, _this.callbacks);\n _this.publishedDescriptor = descriptor;\n };\n\n _this.getDimension = function () {\n var _this$props = _this.props,\n direction = _this$props.direction,\n ignoreContainerClipping = _this$props.ignoreContainerClipping,\n isDropDisabled = _this$props.isDropDisabled,\n targetRef = _this$props.targetRef;\n\n\n if (!targetRef) {\n throw new Error('DimensionPublisher cannot calculate a dimension when not attached to the DOM');\n }\n\n if (_this.isWatchingScroll) {\n throw new Error('Attempting to recapture Droppable dimension while already watching scroll on previous capture');\n }\n\n var descriptor = _this.publishedDescriptor;\n\n if (!descriptor) {\n throw new Error('Cannot get dimension for unpublished droppable');\n }\n\n _this.closestScrollable = (0, _getClosestScrollable2.default)(targetRef);\n var frameScroll = _this.getScrollOffset();\n var style = window.getComputedStyle(targetRef);\n\n var margin = {\n top: parseInt(style.marginTop, 10),\n right: parseInt(style.marginRight, 10),\n bottom: parseInt(style.marginBottom, 10),\n left: parseInt(style.marginLeft, 10)\n };\n var padding = {\n top: parseInt(style.paddingTop, 10),\n right: parseInt(style.paddingRight, 10),\n bottom: parseInt(style.paddingBottom, 10),\n left: parseInt(style.paddingLeft, 10)\n };\n\n var client = (0, _getArea2.default)(targetRef.getBoundingClientRect());\n\n var frameClient = function () {\n if (ignoreContainerClipping) {\n return null;\n }\n if (!_this.closestScrollable) {\n return null;\n }\n if (_this.closestScrollable === targetRef) {\n return null;\n }\n return (0, _getArea2.default)(_this.closestScrollable.getBoundingClientRect());\n }();\n\n var dimension = (0, _dimension.getDroppableDimension)({\n descriptor: descriptor,\n direction: direction,\n client: client,\n frameClient: frameClient,\n frameScroll: frameScroll,\n margin: margin,\n padding: padding,\n windowScroll: (0, _getWindowScrollPosition2.default)(),\n isEnabled: !isDropDisabled\n });\n\n return dimension;\n };\n\n var callbacks = {\n getDimension: _this.getDimension,\n watchScroll: _this.watchScroll,\n unwatchScroll: _this.unwatchScroll\n };\n _this.callbacks = callbacks;\n return _this;\n }\n\n (0, _createClass3.default)(DroppableDimensionPublisher, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!nextProps.targetRef) {\n console.error('Cannot update droppable dimension publisher without a target ref');\n return;\n }\n\n var droppableId = nextProps.droppableId,\n type = nextProps.type;\n\n var descriptor = this.getMemoizedDescriptor(droppableId, type);\n\n this.publish(descriptor);\n\n if (this.props.isDropDisabled === nextProps.isDropDisabled) {\n return;\n }\n\n var marshal = this.context[_contextKeys.dimensionMarshalKey];\n marshal.updateDroppableIsEnabled(nextProps.droppableId, !nextProps.isDropDisabled);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.isWatchingScroll) {\n console.warn('unmounting droppable while it was watching scroll');\n this.unwatchScroll();\n }\n\n this.unpublish();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DroppableDimensionPublisher;\n}(_react.Component);\n\nDroppableDimensionPublisher.contextTypes = (0, _defineProperty3.default)({}, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired);\nexports.default = DroppableDimensionPublisher;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar isScrollable = function isScrollable() {\n for (var _len = arguments.length, values = Array(_len), _key = 0; _key < _len; _key++) {\n values[_key] = arguments[_key];\n }\n\n return values.some(function (value) {\n return value === 'auto' || value === 'scroll';\n });\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n var style = window.getComputedStyle(el);\n return isScrollable(style.overflow, style.overflowY, style.overflowX);\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n\n return el;\n};\n\nexports.default = getClosestScrollable;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Placeholder = function (_PureComponent) {\n (0, _inherits3.default)(Placeholder, _PureComponent);\n\n function Placeholder() {\n (0, _classCallCheck3.default)(this, Placeholder);\n return (0, _possibleConstructorReturn3.default)(this, (Placeholder.__proto__ || (0, _getPrototypeOf2.default)(Placeholder)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(Placeholder, [{\n key: 'render',\n value: function render() {\n\n var placeholder = this.props.placeholder;\n var _placeholder$margin = placeholder.margin,\n top = _placeholder$margin.top,\n left = _placeholder$margin.left,\n bottom = _placeholder$margin.bottom,\n right = _placeholder$margin.right;\n var _placeholder$withoutM = placeholder.withoutMargin,\n width = _placeholder$withoutM.width,\n height = _placeholder$withoutM.height;\n\n\n var style = {\n width: width,\n height: height,\n marginTop: top,\n marginLeft: left,\n marginBottom: bottom,\n marginRight: right,\n pointerEvents: 'none',\n boxSizing: 'border-box'\n };\n return _react2.default.createElement('div', { style: style });\n }\n }]);\n return Placeholder;\n}(_react.PureComponent);\n\nexports.default = Placeholder;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _connectedDraggable = require('./connected-draggable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_connectedDraggable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeSelector = undefined;\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _reactRedux = require('react-redux');\n\nvar _reselect = require('reselect');\n\nvar _draggable = require('./draggable');\n\nvar _draggable2 = _interopRequireDefault(_draggable);\n\nvar _contextKeys = require('../context-keys');\n\nvar _position = require('../../state/position');\n\nvar _getDisplacementMap = require('../../state/get-displacement-map');\n\nvar _getDisplacementMap2 = _interopRequireDefault(_getDisplacementMap);\n\nvar _actionCreators = require('../../state/action-creators');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = { x: 0, y: 0 };\n\nvar defaultMapProps = {\n isDropAnimating: false,\n isDragging: false,\n offset: origin,\n shouldAnimateDragMovement: false,\n\n shouldAnimateDisplacement: true,\n\n dimension: null,\n direction: null\n};\n\nvar makeSelector = exports.makeSelector = function makeSelector() {\n var memoizedOffset = (0, _memoizeOne2.default)(function (x, y) {\n return {\n x: x, y: y\n };\n });\n\n var getNotDraggingProps = (0, _memoizeOne2.default)(function (offset, shouldAnimateDisplacement) {\n return {\n isDropAnimating: false,\n isDragging: false,\n offset: offset,\n shouldAnimateDisplacement: shouldAnimateDisplacement,\n\n shouldAnimateDragMovement: false,\n dimension: null,\n direction: null\n };\n });\n\n var getDraggingProps = (0, _memoizeOne2.default)(function (offset, shouldAnimateDragMovement, dimension, direction) {\n return {\n isDragging: true,\n isDropAnimating: false,\n shouldAnimateDisplacement: false,\n offset: offset,\n shouldAnimateDragMovement: shouldAnimateDragMovement,\n dimension: dimension,\n direction: direction\n };\n });\n\n var draggingSelector = function draggingSelector(state, ownProps) {\n if (state.phase !== 'DRAGGING' && state.phase !== 'DROP_ANIMATING') {\n return null;\n }\n\n if (state.phase === 'DRAGGING') {\n if (!state.drag) {\n console.error('invalid drag state found in selector');\n return null;\n }\n\n if (state.drag.initial.descriptor.id !== ownProps.draggableId) {\n return null;\n }\n\n var offset = state.drag.current.client.offset;\n var dimension = state.dimension.draggable[ownProps.draggableId];\n var direction = state.drag.impact.direction;\n var shouldAnimateDragMovement = state.drag.current.shouldAnimate;\n\n return getDraggingProps(memoizedOffset(offset.x, offset.y), shouldAnimateDragMovement, dimension, direction);\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot provide props for dropping item when there is invalid state');\n return null;\n }\n\n if (state.drop.pending.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n\n return {\n isDragging: false,\n isDropAnimating: true,\n offset: state.drop.pending.newHomeOffset,\n\n dimension: state.dimension.draggable[ownProps.draggableId],\n\n direction: null,\n\n shouldAnimateDragMovement: false,\n\n shouldAnimateDisplacement: false\n };\n };\n\n var getOutOfTheWayMovement = function getOutOfTheWayMovement(id, movement) {\n var map = (0, _getDisplacementMap2.default)(movement.displaced);\n var displacement = map[id];\n\n if (!displacement) {\n return null;\n }\n\n if (!displacement.isVisible) {\n return null;\n }\n\n var amount = movement.isBeyondStartPosition ? (0, _position.negate)(movement.amount) : movement.amount;\n\n return getNotDraggingProps(memoizedOffset(amount.x, amount.y), displacement.shouldAnimate);\n };\n\n var movingOutOfTheWaySelector = function movingOutOfTheWaySelector(state, ownProps) {\n if (state.phase !== 'DRAGGING' && state.phase !== 'DROP_ANIMATING') {\n return null;\n }\n\n if (state.phase === 'DRAGGING') {\n if (!state.drag) {\n console.error('cannot correctly move item out of the way when there is invalid state');\n return null;\n }\n\n if (state.drag.initial.descriptor.id === ownProps.draggableId) {\n return null;\n }\n\n return getOutOfTheWayMovement(ownProps.draggableId, state.drag.impact.movement);\n }\n\n if (!state.drop || !state.drop.pending) {\n console.error('cannot provide props for dropping item when there is invalid state');\n return null;\n }\n\n if (state.drop.pending.result.draggableId === ownProps.draggableId) {\n return null;\n }\n\n return getOutOfTheWayMovement(ownProps.draggableId, state.drop.pending.impact.movement);\n };\n\n return (0, _reselect.createSelector)([draggingSelector, movingOutOfTheWaySelector], function (dragging, movingOutOfTheWay) {\n if (dragging) {\n return dragging;\n }\n\n if (movingOutOfTheWay) {\n return movingOutOfTheWay;\n }\n\n return defaultMapProps;\n });\n};\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var selector = makeSelector();\n\n return function (state, props) {\n return selector(state, props);\n };\n};\n\nvar mapDispatchToProps = {\n lift: _actionCreators.lift,\n move: _actionCreators.move,\n moveForward: _actionCreators.moveForward,\n moveBackward: _actionCreators.moveBackward,\n crossAxisMoveForward: _actionCreators.crossAxisMoveForward,\n crossAxisMoveBackward: _actionCreators.crossAxisMoveBackward,\n moveByWindowScroll: _actionCreators.moveByWindowScroll,\n drop: _actionCreators.drop,\n dropAnimationFinished: _actionCreators.dropAnimationFinished,\n cancel: _actionCreators.cancel\n};\n\nexports.default = (0, _reactRedux.connect)(makeMapStateToProps, mapDispatchToProps, null, { storeKey: _contextKeys.storeKey })(_draggable2.default);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.zIndexOptions = undefined;\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _Draggable$contextTyp;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _draggableDimensionPublisher = require('../draggable-dimension-publisher/');\n\nvar _draggableDimensionPublisher2 = _interopRequireDefault(_draggableDimensionPublisher);\n\nvar _moveable = require('../moveable/');\n\nvar _moveable2 = _interopRequireDefault(_moveable);\n\nvar _dragHandle = require('../drag-handle');\n\nvar _dragHandle2 = _interopRequireDefault(_dragHandle);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _getCenterPosition = require('../get-center-position');\n\nvar _getCenterPosition2 = _interopRequireDefault(_getCenterPosition);\n\nvar _placeholder = require('../placeholder');\n\nvar _placeholder2 = _interopRequireDefault(_placeholder);\n\nvar _contextKeys = require('../context-keys');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar zIndexOptions = exports.zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\n\nvar Draggable = function (_Component) {\n (0, _inherits3.default)(Draggable, _Component);\n\n function Draggable(props, context) {\n (0, _classCallCheck3.default)(this, Draggable);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (Draggable.__proto__ || (0, _getPrototypeOf2.default)(Draggable)).call(this, props, context));\n\n _this.state = {\n ref: null\n };\n\n _this.onMoveEnd = function () {\n if (!_this.props.isDropAnimating) {\n return;\n }\n\n _this.props.dropAnimationFinished();\n };\n\n _this.onLift = function (options) {\n _this.throwIfCannotDrag();\n var client = options.client,\n isScrollAllowed = options.isScrollAllowed;\n var _this$props = _this.props,\n lift = _this$props.lift,\n draggableId = _this$props.draggableId;\n var ref = _this.state.ref;\n\n\n if (!ref) {\n throw new Error('cannot lift at this time');\n }\n\n var initial = {\n selection: client,\n center: (0, _getCenterPosition2.default)(ref)\n };\n\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n\n lift(draggableId, initial, windowScroll, isScrollAllowed);\n };\n\n _this.onMove = function (client) {\n _this.throwIfCannotDrag();\n\n var _this$props2 = _this.props,\n draggableId = _this$props2.draggableId,\n dimension = _this$props2.dimension,\n move = _this$props2.move;\n\n if (!dimension) {\n return;\n }\n\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n\n move(draggableId, client, windowScroll);\n };\n\n _this.onMoveForward = function () {\n _this.throwIfCannotDrag();\n _this.props.moveForward(_this.props.draggableId);\n };\n\n _this.onMoveBackward = function () {\n _this.throwIfCannotDrag();\n _this.props.moveBackward(_this.props.draggableId);\n };\n\n _this.onCrossAxisMoveForward = function () {\n _this.throwIfCannotDrag();\n _this.props.crossAxisMoveForward(_this.props.draggableId);\n };\n\n _this.onCrossAxisMoveBackward = function () {\n _this.throwIfCannotDrag();\n _this.props.crossAxisMoveBackward(_this.props.draggableId);\n };\n\n _this.onWindowScroll = function () {\n _this.throwIfCannotDrag();\n var windowScroll = (0, _getWindowScrollPosition2.default)();\n _this.props.moveByWindowScroll(_this.props.draggableId, windowScroll);\n };\n\n _this.onDrop = function () {\n _this.throwIfCannotDrag();\n _this.props.drop();\n };\n\n _this.onCancel = function () {\n _this.props.cancel();\n };\n\n _this.setRef = function (ref) {\n if (ref === null) {\n return;\n }\n\n if (ref === _this.state.ref) {\n return;\n }\n\n _this.setState({\n ref: ref\n });\n };\n\n _this.getDraggableRef = function () {\n return _this.state.ref;\n };\n\n _this.getDraggingStyle = (0, _memoizeOne2.default)(function (dimension, isDropAnimating, movementStyle) {\n var _dimension$client$wit = dimension.client.withoutMargin,\n width = _dimension$client$wit.width,\n height = _dimension$client$wit.height,\n top = _dimension$client$wit.top,\n left = _dimension$client$wit.left;\n\n var style = {\n position: 'fixed',\n boxSizing: 'border-box',\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n width: width,\n height: height,\n top: top,\n left: left,\n margin: 0,\n pointerEvents: 'none',\n transition: 'none',\n transform: movementStyle.transform ? '' + movementStyle.transform : null\n };\n return style;\n });\n _this.getNotDraggingStyle = (0, _memoizeOne2.default)(function (movementStyle, shouldAnimateDisplacement) {\n var style = {\n transform: movementStyle.transform,\n\n transition: shouldAnimateDisplacement ? null : 'none'\n };\n return style;\n });\n _this.getProvided = (0, _memoizeOne2.default)(function (isDragging, isDropAnimating, shouldAnimateDisplacement, dimension, dragHandleProps, movementStyle) {\n var useDraggingStyle = isDragging || isDropAnimating;\n\n var draggableStyle = function () {\n if (!useDraggingStyle) {\n return _this.getNotDraggingStyle(movementStyle, shouldAnimateDisplacement);\n }\n\n (0, _invariant2.default)(dimension, 'draggable dimension required for dragging');\n\n return _this.getDraggingStyle(dimension, isDropAnimating, movementStyle);\n }();\n\n var provided = {\n innerRef: _this.setRef,\n draggableProps: {\n 'data-react-beautiful-dnd-draggable': _this.styleContext,\n style: draggableStyle\n },\n dragHandleProps: dragHandleProps,\n placeholder: useDraggingStyle ? _this.getPlaceholder() : null\n };\n return provided;\n });\n _this.getSnapshot = (0, _memoizeOne2.default)(function (isDragging, isDropAnimating) {\n return {\n isDragging: isDragging || isDropAnimating\n };\n });\n _this.getSpeed = (0, _memoizeOne2.default)(function (isDragging, shouldAnimateDragMovement, isDropAnimating) {\n if (isDropAnimating) {\n return 'STANDARD';\n }\n\n if (isDragging && shouldAnimateDragMovement) {\n return 'FAST';\n }\n\n return 'INSTANT';\n });\n\n\n var callbacks = {\n onLift: _this.onLift,\n onMove: _this.onMove,\n onDrop: _this.onDrop,\n onCancel: _this.onCancel,\n onMoveBackward: _this.onMoveBackward,\n onMoveForward: _this.onMoveForward,\n onCrossAxisMoveForward: _this.onCrossAxisMoveForward,\n onCrossAxisMoveBackward: _this.onCrossAxisMoveBackward,\n onWindowScroll: _this.onWindowScroll\n };\n\n _this.callbacks = callbacks;\n _this.styleContext = context[_contextKeys.styleContextKey];\n return _this;\n }\n\n (0, _createClass3.default)(Draggable, [{\n key: 'throwIfCannotDrag',\n value: function throwIfCannotDrag() {\n (0, _invariant2.default)(this.state.ref, 'Draggable: cannot drag as no DOM node has been provided');\n (0, _invariant2.default)(!this.props.isDragDisabled, 'Draggable: cannot drag as dragging is not enabled');\n }\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n var dimension = this.props.dimension;\n (0, _invariant2.default)(dimension, 'cannot get a drag placeholder when not dragging');\n\n return _react2.default.createElement(_placeholder2.default, { placeholder: dimension.placeholder });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n draggableId = _props.draggableId,\n index = _props.index,\n offset = _props.offset,\n isDragging = _props.isDragging,\n isDropAnimating = _props.isDropAnimating,\n isDragDisabled = _props.isDragDisabled,\n dimension = _props.dimension,\n children = _props.children,\n direction = _props.direction,\n shouldAnimateDragMovement = _props.shouldAnimateDragMovement,\n shouldAnimateDisplacement = _props.shouldAnimateDisplacement,\n disableInteractiveElementBlocking = _props.disableInteractiveElementBlocking;\n\n var droppableId = this.context[_contextKeys.droppableIdKey];\n\n var speed = this.getSpeed(isDragging, shouldAnimateDragMovement, isDropAnimating);\n\n return _react2.default.createElement(\n _draggableDimensionPublisher2.default,\n {\n draggableId: draggableId,\n droppableId: droppableId,\n index: index,\n targetRef: this.state.ref\n },\n _react2.default.createElement(\n _moveable2.default,\n {\n speed: speed,\n destination: offset,\n onMoveEnd: this.onMoveEnd\n },\n function (movementStyle) {\n return _react2.default.createElement(\n _dragHandle2.default,\n {\n draggableId: draggableId,\n isDragging: isDragging,\n direction: direction,\n isEnabled: !isDragDisabled,\n callbacks: _this2.callbacks,\n getDraggableRef: _this2.getDraggableRef,\n\n canDragInteractiveElements: disableInteractiveElementBlocking\n },\n function (dragHandleProps) {\n return children(_this2.getProvided(isDragging, isDropAnimating, shouldAnimateDisplacement, dimension, dragHandleProps, movementStyle), _this2.getSnapshot(isDragging, isDropAnimating));\n }\n );\n }\n )\n );\n }\n }]);\n return Draggable;\n}(_react.Component);\n\nDraggable.defaultProps = {\n isDragDisabled: false,\n\n disableInteractiveElementBlocking: false\n};\nDraggable.contextTypes = (_Draggable$contextTyp = {}, (0, _defineProperty3.default)(_Draggable$contextTyp, _contextKeys.droppableIdKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_Draggable$contextTyp, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), _Draggable$contextTyp);\nexports.default = Draggable;","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _draggableDimensionPublisher = require('./draggable-dimension-publisher');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_draggableDimensionPublisher).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _getWindowScrollPosition = require('../get-window-scroll-position');\n\nvar _getWindowScrollPosition2 = _interopRequireDefault(_getWindowScrollPosition);\n\nvar _dimension = require('../../state/dimension');\n\nvar _contextKeys = require('../context-keys');\n\nvar _getArea = require('../../state/get-area');\n\nvar _getArea2 = _interopRequireDefault(_getArea);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DraggableDimensionPublisher = function (_Component) {\n (0, _inherits3.default)(DraggableDimensionPublisher, _Component);\n\n function DraggableDimensionPublisher() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, DraggableDimensionPublisher);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = DraggableDimensionPublisher.__proto__ || (0, _getPrototypeOf2.default)(DraggableDimensionPublisher)).call.apply(_ref, [this].concat(args))), _this), _this.publishedDescriptor = null, _this.getMemoizedDescriptor = (0, _memoizeOne2.default)(function (id, droppableId, index) {\n return {\n id: id,\n droppableId: droppableId,\n index: index\n };\n }), _this.unpublish = function () {\n if (!_this.publishedDescriptor) {\n console.error('cannot unpublish descriptor when none is published');\n return;\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.unregisterDraggable(_this.publishedDescriptor);\n _this.publishedDescriptor = null;\n }, _this.publish = function (descriptor) {\n if (descriptor === _this.publishedDescriptor) {\n return;\n }\n\n if (_this.publishedDescriptor) {\n _this.unpublish();\n }\n\n var marshal = _this.context[_contextKeys.dimensionMarshalKey];\n marshal.registerDraggable(descriptor, _this.getDimension);\n _this.publishedDescriptor = descriptor;\n }, _this.getDimension = function () {\n var targetRef = _this.props.targetRef;\n\n if (!targetRef) {\n throw new Error('DraggableDimensionPublisher cannot calculate a dimension when not attached to the DOM');\n }\n\n var descriptor = _this.publishedDescriptor;\n\n if (!descriptor) {\n throw new Error('Cannot get dimension for unpublished draggable');\n }\n\n var style = window.getComputedStyle(targetRef);\n\n var margin = {\n top: parseInt(style.marginTop, 10),\n right: parseInt(style.marginRight, 10),\n bottom: parseInt(style.marginBottom, 10),\n left: parseInt(style.marginLeft, 10)\n };\n\n var client = (0, _getArea2.default)(targetRef.getBoundingClientRect());\n\n var dimension = (0, _dimension.getDraggableDimension)({\n descriptor: descriptor,\n client: client,\n margin: margin,\n windowScroll: (0, _getWindowScrollPosition2.default)()\n });\n\n return dimension;\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(DraggableDimensionPublisher, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var draggableId = nextProps.draggableId,\n droppableId = nextProps.droppableId,\n index = nextProps.index,\n targetRef = nextProps.targetRef;\n\n\n if (!targetRef) {\n console.error('Updating draggable dimension handler without a targetRef');\n return;\n }\n\n var descriptor = this.getMemoizedDescriptor(draggableId, droppableId, index);\n\n this.publish(descriptor);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.unpublish();\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n return DraggableDimensionPublisher;\n}(_react.Component);\n\nDraggableDimensionPublisher.contextTypes = (0, _defineProperty3.default)({}, _contextKeys.dimensionMarshalKey, _propTypes2.default.object.isRequired);\nexports.default = DraggableDimensionPublisher;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _moveable = require('./moveable');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_moveable).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactMotion = require('react-motion');\n\nvar _animation = require('../animation');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar origin = {\n x: 0,\n y: 0\n};\n\nvar noMovement = {\n transform: null\n};\n\nvar isAtOrigin = function isAtOrigin(point) {\n return point.x === origin.x && point.y === origin.y;\n};\n\nvar getStyle = function getStyle(isNotMoving, x, y) {\n if (isNotMoving) {\n return noMovement;\n }\n\n var point = { x: x, y: y };\n\n if (isAtOrigin(point)) {\n return noMovement;\n }\n var style = {\n transform: 'translate(' + point.x + 'px, ' + point.y + 'px)'\n };\n return style;\n};\n\nvar Movable = function (_Component) {\n (0, _inherits3.default)(Movable, _Component);\n\n function Movable() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3.default)(this, Movable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Movable.__proto__ || (0, _getPrototypeOf2.default)(Movable)).call.apply(_ref, [this].concat(args))), _this), _this.onRest = function () {\n var onMoveEnd = _this.props.onMoveEnd;\n\n\n if (!onMoveEnd) {\n return;\n }\n\n setTimeout(function () {\n return onMoveEnd();\n });\n }, _this.getFinal = function () {\n var destination = _this.props.destination;\n var speed = _this.props.speed;\n\n if (speed === 'INSTANT') {\n return destination;\n }\n\n var selected = speed === 'FAST' ? _animation.physics.fast : _animation.physics.standard;\n\n return {\n x: (0, _reactMotion.spring)(destination.x, selected),\n y: (0, _reactMotion.spring)(destination.y, selected)\n };\n }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);\n }\n\n (0, _createClass3.default)(Movable, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var final = this.getFinal();\n\n var isNotMoving = isAtOrigin(final);\n\n return _react2.default.createElement(\n _reactMotion.Motion,\n { defaultStyle: origin, style: final, onRest: this.onRest },\n function (current) {\n return _this2.props.children(getStyle(isNotMoving, current.x, current.y));\n }\n );\n }\n }]);\n return Movable;\n}(_react.Component);\n\nMovable.defaultProps = {\n destination: origin\n};\nexports.default = Movable;","'use strict';\n\nexports.__esModule = true;\n\nfunction _interopRequire(obj) { return obj && obj.__esModule ? obj['default'] : obj; }\n\nvar _Motion = require('./Motion');\n\nexports.Motion = _interopRequire(_Motion);\n\nvar _StaggeredMotion = require('./StaggeredMotion');\n\nexports.StaggeredMotion = _interopRequire(_StaggeredMotion);\n\nvar _TransitionMotion = require('./TransitionMotion');\n\nexports.TransitionMotion = _interopRequire(_TransitionMotion);\n\nvar _spring = require('./spring');\n\nexports.spring = _interopRequire(_spring);\n\nvar _presets = require('./presets');\n\nexports.presets = _interopRequire(_presets);\n\nvar _stripStyle = require('./stripStyle');\n\nexports.stripStyle = _interopRequire(_stripStyle);\n\n// deprecated, dummy warning function\n\nvar _reorderKeys = require('./reorderKeys');\n\nexports.reorderKeys = _interopRequire(_reorderKeys);","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nvar Motion = (function (_React$Component) {\n _inherits(Motion, _React$Component);\n\n _createClass(Motion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyle: _propTypes2['default'].objectOf(_propTypes2['default'].number),\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired,\n children: _propTypes2['default'].func.isRequired,\n onRest: _propTypes2['default'].func\n },\n enumerable: true\n }]);\n\n function Motion(props) {\n var _this = this;\n\n _classCallCheck(this, Motion);\n\n _React$Component.call(this, props);\n this.wasAnimating = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyle = null;\n\n this.clearUnreadPropStyle = function (destStyle) {\n var dirty = false;\n var _state = _this.state;\n var currentStyle = _state.currentStyle;\n var currentVelocity = _state.currentVelocity;\n var lastIdealStyle = _state.lastIdealStyle;\n var lastIdealVelocity = _state.lastIdealVelocity;\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyle = _extends({}, currentStyle);\n currentVelocity = _extends({}, currentVelocity);\n lastIdealStyle = _extends({}, lastIdealStyle);\n lastIdealVelocity = _extends({}, lastIdealVelocity);\n }\n\n currentStyle[key] = styleValue;\n currentVelocity[key] = 0;\n lastIdealStyle[key] = styleValue;\n lastIdealVelocity[key] = 0;\n }\n }\n\n if (dirty) {\n _this.setState({ currentStyle: currentStyle, currentVelocity: currentVelocity, lastIdealStyle: lastIdealStyle, lastIdealVelocity: lastIdealVelocity });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // check if we need to animate in the first place\n var propsStyle = _this.props.style;\n if (_shouldStopAnimation2['default'](_this.state.currentStyle, propsStyle, _this.state.currentVelocity)) {\n if (_this.wasAnimating && _this.props.onRest) {\n _this.props.onRest();\n }\n\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.wasAnimating = false;\n _this.accumulatedTime = 0;\n return;\n }\n\n _this.wasAnimating = true;\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n\n for (var key in propsStyle) {\n if (!Object.prototype.hasOwnProperty.call(propsStyle, key)) {\n continue;\n }\n\n var styleValue = propsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyle[key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocity[key];\n for (var i = 0; i < framesToCatchUp; i++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyle: newCurrentStyle,\n currentVelocity: newCurrentVelocity,\n lastIdealStyle: newLastIdealStyle,\n lastIdealVelocity: newLastIdealVelocity\n });\n\n _this.unreadPropStyle = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n Motion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyle = _props.defaultStyle;\n var style = _props.style;\n\n var currentStyle = defaultStyle || _stripStyle2['default'](style);\n var currentVelocity = _mapToZero2['default'](currentStyle);\n return {\n currentStyle: currentStyle,\n currentVelocity: currentVelocity,\n lastIdealStyle: currentStyle,\n lastIdealVelocity: currentVelocity\n };\n };\n\n // it's possible that currentStyle's value is stale: if props is immediately\n // changed from 0 to 400 to spring(0) again, the async currentStyle is still\n // at 0 (didn't have time to tick and interpolate even once). If we naively\n // compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n // In reality currentStyle should be 400\n\n Motion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n Motion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyle != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyle);\n }\n\n this.unreadPropStyle = props.style;\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n Motion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n Motion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyle);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return Motion;\n})(_react2['default'].Component);\n\nexports['default'] = Motion;\nmodule.exports = exports['default'];\n\n// after checking for unreadPropStyle != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","// Generated by CoffeeScript 1.12.2\n(function() {\n var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n module.exports = function() {\n return performance.now();\n };\n } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n module.exports = function() {\n return (getNanoSeconds() - nodeLoadTime) / 1e6;\n };\n hrtime = process.hrtime;\n getNanoSeconds = function() {\n var hr;\n hr = hrtime();\n return hr[0] * 1e9 + hr[1];\n };\n moduleLoadTime = getNanoSeconds();\n upTime = process.uptime() * 1e9;\n nodeLoadTime = moduleLoadTime - upTime;\n } else if (Date.now) {\n module.exports = function() {\n return Date.now() - loadTime;\n };\n loadTime = Date.now();\n } else {\n module.exports = function() {\n return new Date().getTime() - loadTime;\n };\n loadTime = new Date().getTime();\n }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\nfunction shouldStopAnimationAll(currentStyles, styles, currentVelocities) {\n for (var i = 0; i < currentStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], styles[i], currentVelocities[i])) {\n return false;\n }\n }\n return true;\n}\n\nvar StaggeredMotion = (function (_React$Component) {\n _inherits(StaggeredMotion, _React$Component);\n\n _createClass(StaggeredMotion, null, [{\n key: 'propTypes',\n value: {\n // TOOD: warn against putting a config in here\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].objectOf(_propTypes2['default'].number)),\n styles: _propTypes2['default'].func.isRequired,\n children: _propTypes2['default'].func.isRequired\n },\n enumerable: true\n }]);\n\n function StaggeredMotion(props) {\n var _this = this;\n\n _classCallCheck(this, StaggeredMotion);\n\n _React$Component.call(this, props);\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _state = _this.state;\n var currentStyles = _state.currentStyles;\n var currentVelocities = _state.currentVelocities;\n var lastIdealStyles = _state.lastIdealStyles;\n var lastIdealVelocities = _state.lastIdealVelocities;\n\n var someDirty = false;\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i];\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n someDirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n }\n }\n }\n\n if (someDirty) {\n _this.setState({ currentStyles: currentStyles, currentVelocities: currentVelocities, lastIdealStyles: lastIdealStyles, lastIdealVelocities: lastIdealVelocities });\n }\n };\n\n this.startAnimationIfNecessary = function () {\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n var destStyles = _this.props.styles(_this.state.lastIdealStyles);\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n\n for (var i = 0; i < destStyles.length; i++) {\n var destStyle = destStyles[i];\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in destStyle) {\n if (!Object.prototype.hasOwnProperty.call(destStyle, key)) {\n continue;\n }\n\n var styleValue = destStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = _this.state.lastIdealStyles[i][key];\n var newLastIdealVelocityValue = _this.state.lastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n StaggeredMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n\n var currentStyles = defaultStyles || styles().map(_stripStyle2['default']);\n var currentVelocities = currentStyles.map(function (currentStyle) {\n return _mapToZero2['default'](currentStyle);\n });\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: currentStyles,\n lastIdealVelocities: currentVelocities\n };\n };\n\n StaggeredMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n StaggeredMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles != null) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n this.unreadPropStyles = props.styles(this.state.lastIdealStyles);\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n StaggeredMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n StaggeredMotion.prototype.render = function render() {\n var renderedChildren = this.props.children(this.state.currentStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return StaggeredMotion;\n})(_react2['default'].Component);\n\nexports['default'] = StaggeredMotion;\nmodule.exports = exports['default'];\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400\n\n// after checking for unreadPropStyles != null, we manually go set the\n// non-interpolating values (those that are a number, without a spring\n// config)","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _mergeDiff = require('./mergeDiff');\n\nvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60;\n\n// the children function & (potential) styles function asks as param an\n// Array<TransitionPlainStyle>, where each TransitionPlainStyle is of the format\n// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n// internal states doesn't contain such a data structure (check the state and\n// TransitionMotionState). So when children function and others ask for such\n// data we need to generate them on the fly by combining mergedPropsStyles and\n// currentStyles/lastIdealStyles\nfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n // Copy the value to a `const` so that Flow understands that the const won't\n // change and will be non-nullable in the callback below.\n var cUnreadPropStyles = unreadPropStyles;\n if (cUnreadPropStyles == null) {\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n return {\n key: mergedPropsStyle.key,\n data: mergedPropsStyle.data,\n style: plainStyles[i]\n };\n });\n }\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n for (var j = 0; j < cUnreadPropStyles.length; j++) {\n if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n return {\n key: cUnreadPropStyles[j].key,\n data: cUnreadPropStyles[j].data,\n style: plainStyles[i]\n };\n }\n }\n return { key: mergedPropsStyle.key, data: mergedPropsStyle.data, style: plainStyles[i] };\n });\n}\n\nfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n if (mergedPropsStyles.length !== destStyles.length) {\n return false;\n }\n\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (mergedPropsStyles[i].key !== destStyles[i].key) {\n return false;\n }\n }\n\n // we have the invariant that mergedPropsStyles and\n // currentStyles/currentVelocities/last* are synced in terms of cells, see\n // mergeAndSync comment for more info\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n return false;\n }\n }\n\n return true;\n}\n\n// core key merging logic\n\n// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n// c}, previous current (interpolating) style is {a, b}\n// **invariant**: current[i] corresponds to merged[i] in terms of key\n\n// steps:\n// turn merged style into {a?, b, c}\n// add c, value of c is destStyles.c\n// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n// turn current (interpolating) style from {a, b} into {a?, b, c}\n// maybe remove a\n// certainly add c, value of c is willEnter(c)\n// loop over merged and construct new current\n// dest doesn't change, that's owner's\nfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n var leavingStyle = willLeave(oldMergedPropsStyle);\n if (leavingStyle == null) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n didLeave({ key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data });\n return null;\n }\n return { key: oldMergedPropsStyle.key, data: oldMergedPropsStyle.data, style: leavingStyle };\n });\n\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyleCell = newMergedPropsStyles[i];\n var foundOldIndex = null;\n for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n foundOldIndex = j;\n break;\n }\n }\n // TODO: key search code\n if (foundOldIndex == null) {\n var plainStyle = willEnter(newMergedPropsStyleCell);\n newCurrentStyles[i] = plainStyle;\n newLastIdealStyles[i] = plainStyle;\n\n var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n newCurrentVelocities[i] = velocity;\n newLastIdealVelocities[i] = velocity;\n } else {\n newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n }\n }\n\n return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n}\n\nvar TransitionMotion = (function (_React$Component) {\n _inherits(TransitionMotion, _React$Component);\n\n _createClass(TransitionMotion, null, [{\n key: 'propTypes',\n value: {\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n })),\n styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n }))]).isRequired,\n children: _propTypes2['default'].func.isRequired,\n willEnter: _propTypes2['default'].func,\n willLeave: _propTypes2['default'].func,\n didLeave: _propTypes2['default'].func\n },\n enumerable: true\n }, {\n key: 'defaultProps',\n value: {\n willEnter: function willEnter(styleThatEntered) {\n return _stripStyle2['default'](styleThatEntered.style);\n },\n // recall: returning null makes the current unmounting TransitionStyle\n // disappear immediately\n willLeave: function willLeave() {\n return null;\n },\n didLeave: function didLeave() {}\n },\n enumerable: true\n }]);\n\n function TransitionMotion(props) {\n var _this = this;\n\n _classCallCheck(this, TransitionMotion);\n\n _React$Component.call(this, props);\n this.unmounting = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var mergedPropsStyles = _mergeAndSync[0];\n var currentStyles = _mergeAndSync[1];\n var currentVelocities = _mergeAndSync[2];\n var lastIdealStyles = _mergeAndSync[3];\n var lastIdealVelocities = _mergeAndSync[4];\n\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i].style;\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n mergedPropsStyles[i] = {\n key: mergedPropsStyles[i].key,\n data: mergedPropsStyles[i].data,\n style: _extends({}, mergedPropsStyles[i].style)\n };\n }\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n mergedPropsStyles[i].style[key] = styleValue;\n }\n }\n }\n\n // unlike the other 2 components, we can't detect staleness and optionally\n // opt out of setState here. each style object's data might contain new\n // stuff we're not/cannot compare\n _this.setState({\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n mergedPropsStyles: mergedPropsStyles,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities\n });\n };\n\n this.startAnimationIfNecessary = function () {\n if (_this.unmounting) {\n return;\n }\n\n // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n _this.animationID = _raf2['default'](function (timestamp) {\n // https://github.com/chenglou/react-motion/pull/420\n // > if execution passes the conditional if (this.unmounting), then\n // executes async defaultRaf and after that component unmounts and after\n // that the callback of defaultRaf is called, then setState will be called\n // on unmounted component.\n if (_this.unmounting) {\n return;\n }\n\n var propStyles = _this.props.styles;\n var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles;\n\n // check if we need to animate in the first place\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta;\n // more than 10 frames? prolly switched browser tab. Restart\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.startAnimationIfNecessary();\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var newMergedPropsStyles = _mergeAndSync2[0];\n var newCurrentStyles = _mergeAndSync2[1];\n var newCurrentVelocities = _mergeAndSync2[2];\n var newLastIdealStyles = _mergeAndSync2[3];\n var newLastIdealVelocities = _mergeAndSync2[4];\n\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyle = newMergedPropsStyles[i].style;\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in newMergedPropsStyle) {\n if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n continue;\n }\n\n var styleValue = newMergedPropsStyle[key];\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = newLastIdealStyles[i][key];\n var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n }\n\n _this.animationID = null;\n // the amount we're looped over above\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities,\n mergedPropsStyles: newMergedPropsStyles\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n TransitionMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n var willEnter = _props.willEnter;\n var willLeave = _props.willLeave;\n var didLeave = _props.didLeave;\n\n var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles;\n\n // this is special. for the first time around, we don't have a comparison\n // between last (no last) and current merged props. we'll compute last so:\n // say default is {a, b} and styles (dest style) is {b, c}, we'll\n // fabricate last as {a, b}\n var oldMergedPropsStyles = undefined;\n if (defaultStyles == null) {\n oldMergedPropsStyles = destStyles;\n } else {\n oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n // TODO: key search code\n for (var i = 0; i < destStyles.length; i++) {\n if (destStyles[i].key === defaultStyleCell.key) {\n return destStyles[i];\n }\n }\n return defaultStyleCell;\n });\n }\n var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n });\n var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n });\n\n var _mergeAndSync3 = mergeAndSync(\n // Because this is an old-style createReactClass component, Flow doesn't\n // understand that the willEnter and willLeave props have default values\n // and will always be present.\n willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n oldCurrentVelocities);\n\n var mergedPropsStyles = _mergeAndSync3[0];\n var currentStyles = _mergeAndSync3[1];\n var currentVelocities = _mergeAndSync3[2];\n var lastIdealStyles = _mergeAndSync3[3];\n var lastIdealVelocities = _mergeAndSync3[4];\n // oldLastIdealVelocities really\n\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities,\n mergedPropsStyles: mergedPropsStyles\n };\n };\n\n // after checking for unreadPropStyles != null, we manually go set the\n // non-interpolating values (those that are a number, without a spring\n // config)\n\n TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n var styles = props.styles;\n if (typeof styles === 'function') {\n this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n } else {\n this.unreadPropStyles = styles;\n }\n\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounting = true;\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n this.animationID = null;\n }\n };\n\n TransitionMotion.prototype.render = function render() {\n var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n var renderedChildren = this.props.children(hydratedStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return TransitionMotion;\n})(_react2['default'].Component);\n\nexports['default'] = TransitionMotion;\nmodule.exports = exports['default'];\n\n// list of styles, each containing interpolating values. Part of what's passed\n// to children function. Notice that this is\n// Array<ActualInterpolatingStyleObject>, without the wrapper that is {key: ...,\n// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n// contains the key & data info (so that we only have a single source of truth\n// for these, and to save space). Check the comment for `rehydrateStyles` to\n// see how we regenerate the entirety of what's passed to children function\n\n// the array that keeps track of currently rendered stuff! Including stuff\n// that you've unmounted but that's still animating. This is where it lives\n\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400","\n\n// core keys merging algorithm. If previous render's keys are [a, b], and the\n// next render's [c, b, d], what's the final merged keys and ordering?\n\n// - c and a must both be before b\n// - b before d\n// - ordering between a and c ambiguous\n\n// this reduces to merging two partially ordered lists (e.g. lists where not\n// every item has a definite ordering, like comparing a and c above). For the\n// ambiguous ordering we deterministically choose to place the next render's\n// item after the previous'; so c after a\n\n// this is called a topological sorting. Except the existing algorithms don't\n// work well with js bc of the amount of allocation, and isn't optimized for our\n// current use-case bc the runtime is linear in terms of edges (see wiki for\n// meaning), which is huge when two lists have many common elements\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mergeDiff;\n\nfunction mergeDiff(prev, next, onRemove) {\n // bookkeeping for easier access of a key's index below. This is 2 allocations +\n // potentially triggering chrome hash map mode for objs (so it might be faster\n\n var prevKeyIndex = {};\n for (var i = 0; i < prev.length; i++) {\n prevKeyIndex[prev[i].key] = i;\n }\n var nextKeyIndex = {};\n for (var i = 0; i < next.length; i++) {\n nextKeyIndex[next[i].key] = i;\n }\n\n // first, an overly elaborate way of merging prev and next, eliminating\n // duplicates (in terms of keys). If there's dupe, keep the item in next).\n // This way of writing it saves allocations\n var ret = [];\n for (var i = 0; i < next.length; i++) {\n ret[i] = next[i];\n }\n for (var i = 0; i < prev.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n // merge in keys that the user desires to kill\n var fill = onRemove(i, prev[i]);\n if (fill != null) {\n ret.push(fill);\n }\n }\n }\n\n // now all the items all present. Core sorting logic to have the right order\n return ret.sort(function (a, b) {\n var nextOrderA = nextKeyIndex[a.key];\n var nextOrderB = nextKeyIndex[b.key];\n var prevOrderA = prevKeyIndex[a.key];\n var prevOrderB = prevKeyIndex[b.key];\n\n if (nextOrderA != null && nextOrderB != null) {\n // both keys in next\n return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n } else if (prevOrderA != null && prevOrderB != null) {\n // both keys in prev\n return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n } else if (nextOrderA != null) {\n // key a in next, key b in prev\n\n // how to determine the order between a and b? We find a \"pivot\" (term\n // abuse), a key present in both prev and next, that is sandwiched between\n // a and b. In the context of our above example, if we're comparing a and\n // d, b's (the only) pivot\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n\n if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n return -1;\n } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n return 1;\n }\n }\n // pluggable. default to: next bigger than prev\n return 1;\n }\n // prevOrderA, nextOrderB\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n return 1;\n } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n return -1;\n }\n }\n // pluggable. default to: next bigger than prev\n return -1;\n });\n}\n\nmodule.exports = exports['default'];\n// to loop through and find a key's index each time), but I no longer care","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = spring;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _presets = require('./presets');\n\nvar _presets2 = _interopRequireDefault(_presets);\n\nvar defaultConfig = _extends({}, _presets2['default'].noWobble, {\n precision: 0.01\n});\n\nfunction spring(val, config) {\n return _extends({}, defaultConfig, config, { val: val });\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports['default'] = reorderKeys;\n\nvar hasWarned = false;\n\nfunction reorderKeys() {\n if (process.env.NODE_ENV === 'development') {\n if (!hasWarned) {\n hasWarned = true;\n console.error('`reorderKeys` has been removed, since it is no longer needed for TransitionMotion\\'s new styles array API.');\n }\n }\n}\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _dragHandle = require('./drag-handle');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_dragHandle).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _DragHandle$contextTy;\n\nvar _react = require('react');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _contextKeys = require('../context-keys');\n\nvar _shouldAllowDraggingFromTarget = require('./util/should-allow-dragging-from-target');\n\nvar _shouldAllowDraggingFromTarget2 = _interopRequireDefault(_shouldAllowDraggingFromTarget);\n\nvar _createMouseSensor = require('./sensor/create-mouse-sensor');\n\nvar _createMouseSensor2 = _interopRequireDefault(_createMouseSensor);\n\nvar _createKeyboardSensor = require('./sensor/create-keyboard-sensor');\n\nvar _createKeyboardSensor2 = _interopRequireDefault(_createKeyboardSensor);\n\nvar _createTouchSensor = require('./sensor/create-touch-sensor');\n\nvar _createTouchSensor2 = _interopRequireDefault(_createTouchSensor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getFalse = function getFalse() {\n return false;\n};\n\nvar DragHandle = function (_Component) {\n (0, _inherits3.default)(DragHandle, _Component);\n\n function DragHandle(props, context) {\n (0, _classCallCheck3.default)(this, DragHandle);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DragHandle.__proto__ || (0, _getPrototypeOf2.default)(DragHandle)).call(this, props, context));\n\n _this.onKeyDown = function (event) {\n if (_this.mouseSensor.isCapturing()) {\n return;\n }\n\n _this.keyboardSensor.onKeyDown(event, _this.props);\n };\n\n _this.onMouseDown = function (event) {\n if (_this.keyboardSensor.isCapturing() || _this.mouseSensor.isCapturing()) {\n return;\n }\n\n _this.mouseSensor.onMouseDown(event);\n };\n\n _this.onTouchStart = function (event) {\n if (_this.mouseSensor.isCapturing() || _this.keyboardSensor.isCapturing()) {\n console.error('mouse or keyboard already listening when attempting to touch drag');\n return;\n }\n\n _this.touchSensor.onTouchStart(event);\n };\n\n _this.onTouchMove = function (event) {\n _this.touchSensor.onTouchMove(event);\n };\n\n _this.onClick = function (event) {\n _this.mouseSensor.onClick(event);\n _this.touchSensor.onClick(event);\n };\n\n _this.canStartCapturing = function (event) {\n if (_this.isAnySensorCapturing()) {\n return false;\n }\n\n if (!_this.canLift(_this.props.draggableId)) {\n return false;\n }\n\n return (0, _shouldAllowDraggingFromTarget2.default)(event, _this.props);\n };\n\n _this.isAnySensorDragging = function () {\n return _this.sensors.some(function (sensor) {\n return sensor.isDragging();\n });\n };\n\n _this.isAnySensorCapturing = function () {\n return _this.sensors.some(function (sensor) {\n return sensor.isCapturing();\n });\n };\n\n _this.getProvided = (0, _memoizeOne2.default)(function (isEnabled, isDragging) {\n if (!isEnabled) {\n return null;\n }\n\n var provided = {\n onMouseDown: _this.onMouseDown,\n onKeyDown: _this.onKeyDown,\n onTouchStart: _this.onTouchStart,\n onTouchMove: _this.onTouchMove,\n onClick: _this.onClick,\n tabIndex: 0,\n 'aria-grabbed': isDragging,\n 'data-react-beautiful-dnd-drag-handle': _this.styleContext,\n draggable: false,\n onDragStart: getFalse,\n onDrop: getFalse\n };\n\n return provided;\n });\n\n\n var args = {\n callbacks: _this.props.callbacks,\n getDraggableRef: _this.props.getDraggableRef,\n canStartCapturing: _this.canStartCapturing\n };\n\n _this.mouseSensor = (0, _createMouseSensor2.default)(args);\n _this.keyboardSensor = (0, _createKeyboardSensor2.default)(args);\n _this.touchSensor = (0, _createTouchSensor2.default)(args);\n _this.sensors = [_this.mouseSensor, _this.keyboardSensor, _this.touchSensor];\n _this.styleContext = context[_contextKeys.styleContextKey];\n\n _this.canLift = context[_contextKeys.canLiftContextKey];\n return _this;\n }\n\n (0, _createClass3.default)(DragHandle, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _this2 = this;\n\n this.sensors.forEach(function (sensor) {\n var wasCapturing = sensor.isCapturing();\n var wasDragging = sensor.isDragging();\n\n if (wasCapturing) {\n sensor.kill();\n }\n\n if (wasDragging) {\n _this2.props.callbacks.onCancel();\n }\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n var isCapturing = this.isAnySensorCapturing();\n\n if (!isCapturing) {\n return;\n }\n\n var isDragStopping = this.props.isDragging && !nextProps.isDragging;\n\n if (isDragStopping) {\n this.sensors.forEach(function (sensor) {\n if (sensor.isCapturing()) {\n sensor.kill();\n }\n });\n return;\n }\n\n if (!nextProps.isEnabled) {\n this.sensors.forEach(function (sensor) {\n if (sensor.isCapturing()) {\n var wasDragging = sensor.isDragging();\n\n sensor.kill();\n\n if (wasDragging) {\n _this3.props.callbacks.onCancel();\n }\n }\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n isEnabled = _props.isEnabled;\n\n\n return children(this.getProvided(isEnabled, this.isAnySensorDragging()));\n }\n }]);\n return DragHandle;\n}(_react.Component);\n\nDragHandle.contextTypes = (_DragHandle$contextTy = {}, (0, _defineProperty3.default)(_DragHandle$contextTy, _contextKeys.styleContextKey, _propTypes2.default.string.isRequired), (0, _defineProperty3.default)(_DragHandle$contextTy, _contextKeys.canLiftContextKey, _propTypes2.default.func.isRequired), _DragHandle$contextTy);\nexports.default = DragHandle;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar interactiveTagNames = exports.interactiveTagNames = ['input', 'button', 'textarea', 'select', 'option', 'optgroup', 'video', 'audio'];\n\nvar isContentEditable = function isContentEditable(parent, current) {\n if (current == null) {\n return false;\n }\n\n var attribute = current.getAttribute('contenteditable');\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n\n if (current === parent) {\n return false;\n }\n\n return isContentEditable(parent, current.parentElement);\n};\n\nexports.default = function (event, props) {\n if (props.canDragInteractiveElements) {\n return true;\n }\n\n var target = event.target,\n currentTarget = event.currentTarget;\n\n if (!(target instanceof HTMLElement) || !(currentTarget instanceof HTMLElement)) {\n return true;\n }\n\n var isTargetInteractive = interactiveTagNames.indexOf(target.tagName.toLowerCase()) !== -1;\n\n if (isTargetInteractive) {\n return false;\n }\n\n return !isContentEditable(currentTarget, target);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _isSloppyClickThresholdExceeded = require('../util/is-sloppy-click-threshold-exceeded');\n\nvar _isSloppyClickThresholdExceeded2 = _interopRequireDefault(_isSloppyClickThresholdExceeded);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _blockStandardKeyEvents = require('../util/block-standard-key-events');\n\nvar _blockStandardKeyEvents2 = _interopRequireDefault(_blockStandardKeyEvents);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar primaryButton = 0;\nvar noop = function noop() {};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = {\n isDragging: false,\n pending: null,\n preventClick: false\n };\n var setState = function setState(partial) {\n var newState = (0, _extends3.default)({}, state, partial);\n state = newState;\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var isCapturing = function isCapturing() {\n return Boolean(state.pending || state.isDragging);\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var startDragging = function startDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n setState({\n pending: null,\n isDragging: true,\n preventClick: true\n });\n fn();\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState({\n isDragging: false,\n pending: null\n });\n fn();\n };\n var startPendingDrag = function startPendingDrag(point) {\n setState({ pending: point, isDragging: false });\n bindWindowEvents();\n };\n var stopPendingDrag = function stopPendingDrag() {\n setState({\n preventClick: false\n });\n stopDragging();\n };\n\n var kill = function kill() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n stopDragging(fn);\n };\n\n var cancel = function cancel() {\n kill(callbacks.onCancel);\n };\n\n var windowBindings = {\n mousemove: function mousemove(event) {\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n if (state.isDragging) {\n schedule.move(point);\n return;\n }\n\n if (!state.pending) {\n console.error('invalid state');\n return;\n }\n\n if (!(0, _isSloppyClickThresholdExceeded2.default)(state.pending, point)) {\n return;\n }\n\n startDragging(function () {\n return callbacks.onLift({ client: point, isScrollAllowed: true });\n });\n },\n mouseup: function mouseup() {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n\n stopDragging(callbacks.onDrop);\n },\n mousedown: function mousedown() {\n stopDragging(callbacks.onCancel);\n },\n keydown: function keydown(event) {\n if (event.keyCode === keyCodes.escape) {\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n (0, _blockStandardKeyEvents2.default)(event);\n },\n resize: cancel,\n scroll: function scroll() {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n schedule.windowScrollMove();\n },\n\n webkitmouseforcechanged: function webkitmouseforcechanged(event) {\n if (event.webkitForce == null || MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN == null) {\n console.error('handling a mouse force changed event when it is not supported');\n return;\n }\n\n var forcePressThreshold = MouseEvent.WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN;\n var isForcePressing = event.webkitForce >= forcePressThreshold;\n\n if (isForcePressing) {\n cancel();\n }\n }\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n if (eventKey === 'scroll') {\n win.addEventListener(eventKey, windowBindings.scroll, { passive: true });\n return;\n }\n\n win.addEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n return win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var onMouseDown = function onMouseDown(event) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (isCapturing()) {\n console.error('should not be able to perform a mouse down while a drag or pending drag is occurring');\n cancel();\n return;\n }\n\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n var point = {\n x: clientX,\n y: clientY\n };\n\n startPendingDrag(point);\n };\n\n var onClick = function onClick(event) {\n if (!state.preventClick) {\n return;\n }\n\n setState({\n preventClick: false\n });\n (0, _stopEvent2.default)(event);\n };\n\n var sensor = {\n onMouseDown: onMouseDown,\n onClick: onClick,\n kill: kill,\n isCapturing: isCapturing,\n isDragging: isDragging\n };\n\n return sensor;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar sloppyClickThreshold = exports.sloppyClickThreshold = 5;\n\nexports.default = function (original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _blockStandardKeyEvents = require('../util/block-standard-key-events');\n\nvar _blockStandardKeyEvents2 = _interopRequireDefault(_blockStandardKeyEvents);\n\nvar _keyCodes = require('../../key-codes');\n\nvar keyCodes = _interopRequireWildcard(_keyCodes);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nvar _getCenterPosition = require('../../get-center-position');\n\nvar _getCenterPosition2 = _interopRequireDefault(_getCenterPosition);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar noop = function noop() {};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = {\n isDragging: false\n };\n var setState = function setState(newState) {\n state = newState;\n };\n var startDragging = function startDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n setState({\n isDragging: true\n });\n bindWindowEvents();\n fn();\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState({\n isDragging: false\n });\n fn();\n };\n var kill = function kill() {\n return stopDragging();\n };\n var cancel = function cancel() {\n stopDragging(callbacks.onCancel);\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var onKeyDown = function onKeyDown(event, props) {\n var direction = props.direction;\n\n if (!isDragging()) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (event.keyCode !== keyCodes.space) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n\n var ref = getDraggableRef();\n\n if (!ref) {\n console.error('cannot start a keyboard drag without a draggable ref');\n return;\n }\n\n var center = (0, _getCenterPosition2.default)(ref);\n\n startDragging(function () {\n return callbacks.onLift({ client: center, isScrollAllowed: false });\n });\n return;\n }\n\n if (event.keyCode === keyCodes.escape) {\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n if (event.keyCode === keyCodes.space) {\n (0, _stopEvent2.default)(event);\n stopDragging(callbacks.onDrop);\n return;\n }\n\n if (!direction) {\n console.error('Cannot handle keyboard movement event if direction is not provided');\n (0, _stopEvent2.default)(event);\n cancel();\n return;\n }\n\n var executeBasedOnDirection = function executeBasedOnDirection(fns) {\n if (direction === 'vertical') {\n fns.vertical();\n return;\n }\n fns.horizontal();\n };\n\n if (event.keyCode === keyCodes.arrowDown) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.moveForward,\n horizontal: schedule.crossAxisMoveForward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowUp) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.moveBackward,\n horizontal: schedule.crossAxisMoveBackward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowRight) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.crossAxisMoveForward,\n horizontal: schedule.moveForward\n });\n return;\n }\n\n if (event.keyCode === keyCodes.arrowLeft) {\n (0, _stopEvent2.default)(event);\n executeBasedOnDirection({\n vertical: schedule.crossAxisMoveBackward,\n horizontal: schedule.moveBackward\n });\n }\n\n (0, _blockStandardKeyEvents2.default)(event);\n };\n\n var windowBindings = {\n mousedown: cancel,\n resize: cancel,\n\n scroll: cancel\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n win.addEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var sensor = {\n onKeyDown: onKeyDown,\n kill: kill,\n isDragging: isDragging,\n\n isCapturing: isDragging\n };\n\n return sensor;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.forcePressThreshold = exports.timeForLongPress = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _stopEvent = require('../util/stop-event');\n\nvar _stopEvent2 = _interopRequireDefault(_stopEvent);\n\nvar _createScheduler = require('../util/create-scheduler');\n\nvar _createScheduler2 = _interopRequireDefault(_createScheduler);\n\nvar _getWindowFromRef = require('../../get-window-from-ref');\n\nvar _getWindowFromRef2 = _interopRequireDefault(_getWindowFromRef);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeForLongPress = exports.timeForLongPress = 150;\nvar forcePressThreshold = exports.forcePressThreshold = 0.15;\n\nvar noop = function noop() {};\n\nvar initial = {\n isDragging: false,\n pending: null,\n hasMoved: false,\n preventClick: false,\n longPressTimerId: null\n};\n\nexports.default = function (_ref) {\n var callbacks = _ref.callbacks,\n getDraggableRef = _ref.getDraggableRef,\n canStartCapturing = _ref.canStartCapturing;\n\n var state = initial;\n\n var setState = function setState(partial) {\n state = (0, _extends3.default)({}, state, partial);\n };\n var isDragging = function isDragging() {\n return state.isDragging;\n };\n var isCapturing = function isCapturing() {\n return Boolean(state.pending || state.isDragging || state.longPressTimerId);\n };\n var schedule = (0, _createScheduler2.default)(callbacks, isDragging);\n\n var startDragging = function startDragging() {\n var pending = state.pending;\n\n if (!pending) {\n console.error('cannot start a touch drag without a pending position');\n kill();\n return;\n }\n\n setState({\n isDragging: true,\n\n hasMoved: false,\n\n pending: null,\n longPressTimerId: null\n });\n\n callbacks.onLift({\n client: pending,\n\n isScrollAllowed: false\n });\n };\n var stopDragging = function stopDragging() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n unbindWindowEvents();\n setState((0, _extends3.default)({}, initial, {\n preventClick: true\n }));\n fn();\n };\n\n var startPendingDrag = function startPendingDrag(event) {\n var touch = event.touches[0];\n var clientX = touch.clientX,\n clientY = touch.clientY;\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n\n setState({\n longPressTimerId: longPressTimerId,\n pending: point,\n isDragging: false,\n hasMoved: false\n });\n bindWindowEvents();\n };\n\n var stopPendingDrag = function stopPendingDrag() {\n clearTimeout(state.longPressTimerId);\n unbindWindowEvents();\n\n setState(initial);\n };\n\n var kill = function kill() {\n var fn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n stopDragging(fn);\n };\n\n var cancel = function cancel() {\n kill(callbacks.onCancel);\n };\n\n var windowBindings = {\n touchmove: function touchmove(event) {\n if (state.pending) {\n stopPendingDrag();\n return;\n }\n\n if (!state.hasMoved) {\n setState({\n hasMoved: true\n });\n }\n\n (0, _stopEvent2.default)(event);\n\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n\n\n var point = {\n x: clientX,\n y: clientY\n };\n\n schedule.move(point);\n },\n touchend: function touchend(event) {\n if (state.pending) {\n stopPendingDrag();\n\n return;\n }\n\n stopDragging(callbacks.onDrop);\n (0, _stopEvent2.default)(event);\n },\n touchcancel: cancel,\n touchstart: function touchstart() {\n if (isDragging()) {\n console.error('touch start fired while already dragging');\n cancel();\n }\n },\n\n orientationchange: cancel,\n\n resize: cancel,\n\n scroll: cancel,\n\n contextmenu: _stopEvent2.default,\n\n keydown: cancel,\n\n touchforcechange: function touchforcechange(event) {\n if (state.hasMoved) {\n return;\n }\n\n var touch = event.touches[0];\n\n if (touch.force >= forcePressThreshold) {\n cancel();\n }\n }\n };\n\n var eventKeys = (0, _keys2.default)(windowBindings);\n\n var bindWindowEvents = function bindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n var fn = windowBindings[eventKey];\n\n if (eventKey === 'touchmove') {\n win.addEventListener(eventKey, fn, { passive: false });\n return;\n }\n\n win.addEventListener(eventKey, fn);\n });\n };\n\n var unbindWindowEvents = function unbindWindowEvents() {\n var win = (0, _getWindowFromRef2.default)(getDraggableRef());\n\n eventKeys.forEach(function (eventKey) {\n return win.removeEventListener(eventKey, windowBindings[eventKey]);\n });\n };\n\n var onTouchStart = function onTouchStart(event) {\n if (!canStartCapturing(event)) {\n return;\n }\n\n if (isCapturing()) {\n console.error('should not be able to perform a touch start while a drag or pending drag is occurring');\n cancel();\n return;\n }\n\n event.stopPropagation();\n\n startPendingDrag(event);\n };\n\n var onTouchMove = function onTouchMove() {\n if (state.pending) {\n stopPendingDrag();\n }\n };\n\n var onClick = function onClick(event) {\n if (!state.preventClick) {\n return;\n }\n\n (0, _stopEvent2.default)(event);\n setState(initial);\n };\n\n var sensor = {\n onTouchStart: onTouchStart,\n onTouchMove: onTouchMove,\n onClick: onClick,\n kill: kill,\n isCapturing: isCapturing,\n isDragging: isDragging\n };\n\n return sensor;\n};","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxContainer\n * \n */\n'use strict';\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxStoreGroup = require('./FluxStoreGroup');\n\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar DEFAULT_OPTIONS = {\n pure: true,\n withProps: false\n};\n\n/**\n * A FluxContainer is used to subscribe a react component to multiple stores.\n * The stores that are used must be returned from a static `getStores()` method.\n *\n * The component receives information from the stores via state. The state\n * is generated using a static `calculateState()` method that each container\n * must implement. A simple container may look like:\n */\nfunction create(Base, options) {\n enforceInterface(Base);\n\n // Construct the options using default, override with user values as necessary\n var realOptions = _extends({}, DEFAULT_OPTIONS, options || {});\n\n var FluxContainerClass = (function (_Base) {\n _inherits(FluxContainerClass, _Base);\n\n function FluxContainerClass(props) {\n _classCallCheck(this, FluxContainerClass);\n\n _Base.call(this, props);\n this.state = realOptions.withProps ? Base.calculateState(null, props) : Base.calculateState(null, undefined);\n }\n\n // Make sure we override shouldComponentUpdate only if the pure option is\n // specified. We can't override this above because we don't want to override\n // the default behavior on accident. Super works weird with react ES6 classes\n // right now\n\n FluxContainerClass.prototype.componentDidMount = function componentDidMount() {\n var _this = this;\n\n if (_Base.prototype.componentDidMount) {\n _Base.prototype.componentDidMount.call(this);\n }\n\n var stores = Base.getStores();\n\n // This tracks when any store has changed and we may need to update.\n var changed = false;\n var setChanged = function () {\n changed = true;\n };\n\n // This adds subscriptions to stores. When a store changes all we do is\n // set changed to true.\n this._fluxContainerSubscriptions = stores.map(function (store) {\n return store.addListener(setChanged);\n });\n\n // This callback is called after the dispatch of the relevant stores. If\n // any have reported a change we update the state, then reset changed.\n var callback = function () {\n if (changed) {\n _this.setState(function (prevState) {\n return realOptions.withProps ? Base.calculateState(prevState, _this.props) : Base.calculateState(prevState, undefined);\n });\n }\n changed = false;\n };\n this._fluxContainerStoreGroup = new FluxStoreGroup(stores, callback);\n };\n\n FluxContainerClass.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n if (_Base.prototype.componentWillReceiveProps) {\n _Base.prototype.componentWillReceiveProps.call(this, nextProps, nextContext);\n }\n\n // Don't do anything else if the container is not configured to use props\n if (!realOptions.withProps) {\n return;\n }\n\n // If it's pure we can potentially optimize out the calculate state\n if (realOptions.pure && shallowEqual(this.props, nextProps)) {\n return;\n }\n\n // Finally update the state using the new props\n this.setState(function (prevState) {\n return Base.calculateState(prevState, nextProps);\n });\n };\n\n FluxContainerClass.prototype.componentWillUnmount = function componentWillUnmount() {\n if (_Base.prototype.componentWillUnmount) {\n _Base.prototype.componentWillUnmount.call(this);\n }\n\n this._fluxContainerStoreGroup.release();\n for (var _iterator = this._fluxContainerSubscriptions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var subscription = _ref;\n\n subscription.remove();\n }\n this._fluxContainerSubscriptions = [];\n };\n\n return FluxContainerClass;\n })(Base);\n\n var container = realOptions.pure ? createPureContainer(FluxContainerClass) : FluxContainerClass;\n\n // Update the name of the container before returning\n var componentName = Base.displayName || Base.name;\n container.displayName = 'FluxContainer(' + componentName + ')';\n\n return container;\n}\n\n// TODO: typecheck this better\nfunction createPureContainer(FluxContainerBase) {\n var PureFluxContainerClass = (function (_FluxContainerBase) {\n _inherits(PureFluxContainerClass, _FluxContainerBase);\n\n function PureFluxContainerClass() {\n _classCallCheck(this, PureFluxContainerClass);\n\n _FluxContainerBase.apply(this, arguments);\n }\n\n PureFluxContainerClass.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state, nextState);\n };\n\n return PureFluxContainerClass;\n })(FluxContainerBase);\n\n return PureFluxContainerClass;\n}\n\nfunction enforceInterface(o) {\n !o.getStores ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxContainer must implement `static getStores()`') : invariant(false) : undefined;\n !o.calculateState ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxContainer must implement `static calculateState()`') : invariant(false) : undefined;\n}\n\nmodule.exports = { create: create };","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule shallowEqual\n * @typechecks\n * \n */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n var bHasOwnProperty = hasOwnProperty.bind(objB);\n for (var i = 0; i < keysA.length; i++) {\n if (!bHasOwnProperty(keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxMapStore\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FluxReduceStore = require('./FluxReduceStore');\nvar Immutable = require('immutable');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * This is a simple store. It allows caching key value pairs. An implementation\n * of a store using this might look like:\n *\n * class FooStore extends FluxMapStore {\n * reduce(state, action) {\n * switch (action.type) {\n * case 'foo':\n * return state.set(action.id, action.foo);\n * case 'bar':\n * return state.delete(action.id);\n * default:\n * return state;\n * }\n * }\n * }\n *\n */\n\nvar FluxMapStore = (function (_FluxReduceStore) {\n _inherits(FluxMapStore, _FluxReduceStore);\n\n function FluxMapStore() {\n _classCallCheck(this, FluxMapStore);\n\n _FluxReduceStore.apply(this, arguments);\n }\n\n FluxMapStore.prototype.getInitialState = function getInitialState() {\n return Immutable.Map();\n };\n\n /**\n * Access the value at the given key. throws an error if the key does not\n * exist in the cache.\n */\n\n FluxMapStore.prototype.at = function at(key) {\n !this.has(key) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected store to have key %s', key) : invariant(false) : undefined;\n return this.get(key);\n };\n\n /**\n * Check if the cache has a particular key\n */\n\n FluxMapStore.prototype.has = function has(key) {\n return this.getState().has(key);\n };\n\n /**\n * Get the value of a particular key. Returns undefined if the key does not\n * exist in the cache.\n */\n\n FluxMapStore.prototype.get = function get(key) {\n return this.getState().get(key);\n };\n\n /**\n * Gets an array of keys and puts the values in a map if they exist, it allows\n * providing a previous result to update instead of generating a new map.\n *\n * Providing a previous result allows the possibility of keeping the same\n * reference if the keys did not change.\n */\n\n FluxMapStore.prototype.getAll = function getAll(keys, prev) {\n var _this = this;\n\n var newKeys = Immutable.Set(keys);\n var start = prev || Immutable.Map();\n return start.withMutations(function (map) {\n // remove any old keys that are not in new keys or are no longer in\n // the cache\n for (var _iterator = start, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var entry = _ref;\n var oldKey = entry[0];\n\n if (!newKeys.has(oldKey) || !_this.has(oldKey)) {\n map['delete'](oldKey);\n }\n }\n\n // then add all of the new keys that exist in the cache\n for (var _iterator2 = newKeys, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var key = _ref2;\n\n if (_this.has(key)) {\n map.set(key, _this.at(key));\n }\n }\n });\n };\n\n return FluxMapStore;\n})(FluxReduceStore);\n\nmodule.exports = FluxMapStore;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nvar fbemitter = {\n EventEmitter: require('./lib/BaseEventEmitter'),\n EmitterSubscription : require('./lib/EmitterSubscription')\n};\n\nmodule.exports = fbemitter;\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule BaseEventEmitter\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar EmitterSubscription = require('./EmitterSubscription');\nvar EventSubscriptionVendor = require('./EventSubscriptionVendor');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @class BaseEventEmitter\n * @description\n * An EventEmitter is responsible for managing a set of listeners and publishing\n * events to them when it is told that such events happened. In addition to the\n * data for the given event it also sends a event control object which allows\n * the listeners/handlers to prevent the default behavior of the given event.\n *\n * The emitter is designed to be generic enough to support all the different\n * contexts in which one might want to emit events. It is a simple multicast\n * mechanism on top of which extra functionality can be composed. For example, a\n * more advanced emitter may use an EventHolder and EventFactory.\n */\n\nvar BaseEventEmitter = (function () {\n /**\n * @constructor\n */\n\n function BaseEventEmitter() {\n _classCallCheck(this, BaseEventEmitter);\n\n this._subscriber = new EventSubscriptionVendor();\n this._currentSubscription = null;\n }\n\n /**\n * Adds a listener to be invoked when events of the specified type are\n * emitted. An optional calling context may be provided. The data arguments\n * emitted will be passed to the listener function.\n *\n * TODO: Annotate the listener arg's type. This is tricky because listeners\n * can be invoked with varargs.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke when the specified event is\n * emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n BaseEventEmitter.prototype.addListener = function addListener(eventType, listener, context) {\n return this._subscriber.addSubscription(eventType, new EmitterSubscription(this._subscriber, listener, context));\n };\n\n /**\n * Similar to addListener, except that the listener is removed after it is\n * invoked once.\n *\n * @param {string} eventType - Name of the event to listen to\n * @param {function} listener - Function to invoke only once when the\n * specified event is emitted\n * @param {*} context - Optional context object to use when invoking the\n * listener\n */\n\n BaseEventEmitter.prototype.once = function once(eventType, listener, context) {\n var emitter = this;\n return this.addListener(eventType, function () {\n emitter.removeCurrentListener();\n listener.apply(context, arguments);\n });\n };\n\n /**\n * Removes all of the registered listeners, including those registered as\n * listener maps.\n *\n * @param {?string} eventType - Optional name of the event whose registered\n * listeners to remove\n */\n\n BaseEventEmitter.prototype.removeAllListeners = function removeAllListeners(eventType) {\n this._subscriber.removeAllSubscriptions(eventType);\n };\n\n /**\n * Provides an API that can be called during an eventing cycle to remove the\n * last listener that was invoked. This allows a developer to provide an event\n * object that can remove the listener (or listener map) during the\n * invocation.\n *\n * If it is called when not inside of an emitting cycle it will throw.\n *\n * @throws {Error} When called not during an eventing cycle\n *\n * @example\n * var subscription = emitter.addListenerMap({\n * someEvent: function(data, event) {\n * console.log(data);\n * emitter.removeCurrentListener();\n * }\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n * emitter.emit('someEvent', 'def'); // does not log anything\n */\n\n BaseEventEmitter.prototype.removeCurrentListener = function removeCurrentListener() {\n !!!this._currentSubscription ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Not in an emitting cycle; there is no current subscription') : invariant(false) : undefined;\n this._subscriber.removeSubscription(this._currentSubscription);\n };\n\n /**\n * Returns an array of listeners that are currently registered for the given\n * event.\n *\n * @param {string} eventType - Name of the event to query\n * @return {array}\n */\n\n BaseEventEmitter.prototype.listeners = function listeners(eventType) /* TODO: Array<EventSubscription> */{\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n return subscriptions ? subscriptions.filter(emptyFunction.thatReturnsTrue).map(function (subscription) {\n return subscription.listener;\n }) : [];\n };\n\n /**\n * Emits an event of the given type with the given data. All handlers of that\n * particular type will be notified.\n *\n * @param {string} eventType - Name of the event to emit\n * @param {*} Arbitrary arguments to be passed to each registered listener\n *\n * @example\n * emitter.addListener('someEvent', function(message) {\n * console.log(message);\n * });\n *\n * emitter.emit('someEvent', 'abc'); // logs 'abc'\n */\n\n BaseEventEmitter.prototype.emit = function emit(eventType) {\n var subscriptions = this._subscriber.getSubscriptionsForType(eventType);\n if (subscriptions) {\n var keys = Object.keys(subscriptions);\n for (var ii = 0; ii < keys.length; ii++) {\n var key = keys[ii];\n var subscription = subscriptions[key];\n // The subscription may have been removed during this event loop.\n if (subscription) {\n this._currentSubscription = subscription;\n this.__emitToSubscription.apply(this, [subscription].concat(Array.prototype.slice.call(arguments)));\n }\n }\n this._currentSubscription = null;\n }\n };\n\n /**\n * Provides a hook to override how the emitter emits an event to a specific\n * subscription. This allows you to set up logging and error boundaries\n * specific to your environment.\n *\n * @param {EmitterSubscription} subscription\n * @param {string} eventType\n * @param {*} Arbitrary arguments to be passed to each registered listener\n */\n\n BaseEventEmitter.prototype.__emitToSubscription = function __emitToSubscription(subscription, eventType) {\n var args = Array.prototype.slice.call(arguments, 2);\n subscription.listener.apply(subscription.context, args);\n };\n\n return BaseEventEmitter;\n})();\n\nmodule.exports = BaseEventEmitter;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule EventSubscription\n * @typechecks\n */\n\n'use strict';\n\n/**\n * EventSubscription represents a subscription to a particular event. It can\n * remove its own subscription.\n */\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar EventSubscription = (function () {\n\n /**\n * @param {EventSubscriptionVendor} subscriber the subscriber that controls\n * this subscription.\n */\n\n function EventSubscription(subscriber) {\n _classCallCheck(this, EventSubscription);\n\n this.subscriber = subscriber;\n }\n\n /**\n * Removes this subscription from the subscriber that controls it.\n */\n\n EventSubscription.prototype.remove = function remove() {\n if (this.subscriber) {\n this.subscriber.removeSubscription(this);\n this.subscriber = null;\n }\n };\n\n return EventSubscription;\n})();\n\nmodule.exports = EventSubscription;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n * \n * @providesModule EventSubscriptionVendor\n * @typechecks\n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * EventSubscriptionVendor stores a set of EventSubscriptions that are\n * subscribed to a particular event type.\n */\n\nvar EventSubscriptionVendor = (function () {\n function EventSubscriptionVendor() {\n _classCallCheck(this, EventSubscriptionVendor);\n\n this._subscriptionsForType = {};\n this._currentSubscription = null;\n }\n\n /**\n * Adds a subscription keyed by an event type.\n *\n * @param {string} eventType\n * @param {EventSubscription} subscription\n */\n\n EventSubscriptionVendor.prototype.addSubscription = function addSubscription(eventType, subscription) {\n !(subscription.subscriber === this) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The subscriber of the subscription is incorrectly set.') : invariant(false) : undefined;\n if (!this._subscriptionsForType[eventType]) {\n this._subscriptionsForType[eventType] = [];\n }\n var key = this._subscriptionsForType[eventType].length;\n this._subscriptionsForType[eventType].push(subscription);\n subscription.eventType = eventType;\n subscription.key = key;\n return subscription;\n };\n\n /**\n * Removes a bulk set of the subscriptions.\n *\n * @param {?string} eventType - Optional name of the event type whose\n * registered supscriptions to remove, if null remove all subscriptions.\n */\n\n EventSubscriptionVendor.prototype.removeAllSubscriptions = function removeAllSubscriptions(eventType) {\n if (eventType === undefined) {\n this._subscriptionsForType = {};\n } else {\n delete this._subscriptionsForType[eventType];\n }\n };\n\n /**\n * Removes a specific subscription. Instead of calling this function, call\n * `subscription.remove()` directly.\n *\n * @param {object} subscription\n */\n\n EventSubscriptionVendor.prototype.removeSubscription = function removeSubscription(subscription) {\n var eventType = subscription.eventType;\n var key = subscription.key;\n\n var subscriptionsForType = this._subscriptionsForType[eventType];\n if (subscriptionsForType) {\n delete subscriptionsForType[key];\n }\n };\n\n /**\n * Returns the array of subscriptions that are currently registered for the\n * given event type.\n *\n * Note: This array can be potentially sparse as subscriptions are deleted\n * from it when they are removed.\n *\n * TODO: This returns a nullable array. wat?\n *\n * @param {string} eventType\n * @return {?array}\n */\n\n EventSubscriptionVendor.prototype.getSubscriptionsForType = function getSubscriptionsForType(eventType) {\n return this._subscriptionsForType[eventType];\n };\n\n return EventSubscriptionVendor;\n})();\n\nmodule.exports = EventSubscriptionVendor;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule abstractMethod\n * \n */\n\n'use strict';\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction abstractMethod(className, methodName) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Subclasses of %s must override %s() with their own implementation.', className, methodName) : invariant(false) : undefined;\n}\n\nmodule.exports = abstractMethod;","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule FluxMixinLegacy\n * \n */\n\n'use strict';\n\nvar FluxStoreGroup = require('./FluxStoreGroup');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * `FluxContainer` should be preferred over this mixin, but it requires using\n * react with classes. So this mixin is provided where it is not yet possible\n * to convert a container to be a class.\n *\n * This mixin should be used for React components that have state based purely\n * on stores. `this.props` will not be available inside of `calculateState()`.\n *\n * This mixin will only `setState` not replace it, so you should always return\n * every key in your state unless you know what you are doing. Consider this:\n *\n * var Foo = React.createClass({\n * mixins: [\n * FluxMixinLegacy([FooStore])\n * ],\n *\n * statics: {\n * calculateState(prevState) {\n * if (!prevState) {\n * return {\n * foo: FooStore.getFoo(),\n * };\n * }\n *\n * return {\n * bar: FooStore.getBar(),\n * };\n * }\n * },\n * });\n *\n * On the second calculateState when prevState is not null, the state will be\n * updated to contain the previous foo AND the bar that was just returned. Only\n * returning bar will not delete foo.\n *\n */\nfunction FluxMixinLegacy(stores) {\n return {\n getInitialState: function () {\n enforceInterface(this);\n return this.constructor.calculateState(null);\n },\n\n componentDidMount: function () {\n var _this = this;\n\n // This tracks when any store has changed and we may need to update.\n var changed = false;\n var setChanged = function () {\n changed = true;\n };\n\n // This adds subscriptions to stores. When a store changes all we do is\n // set changed to true.\n this._fluxMixinSubscriptions = stores.map(function (store) {\n return store.addListener(setChanged);\n });\n\n // This callback is called after the dispatch of the relevant stores. If\n // any have reported a change we update the state, then reset changed.\n var callback = function () {\n if (changed) {\n _this.setState(function (prevState) {\n return _this.constructor.calculateState(_this.state);\n });\n }\n changed = false;\n };\n this._fluxMixinStoreGroup = new FluxStoreGroup(stores, callback);\n },\n\n componentWillUnmount: function () {\n this._fluxMixinStoreGroup.release();\n for (var _iterator = this._fluxMixinSubscriptions, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var subscription = _ref;\n\n subscription.remove();\n }\n this._fluxMixinSubscriptions = [];\n }\n };\n}\n\nfunction enforceInterface(o) {\n !o.constructor.calculateState ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Components that use FluxMixinLegacy must implement ' + '`calculateState()` on the statics object') : invariant(false) : undefined;\n}\n\nmodule.exports = FluxMixinLegacy;","require('../../modules/es6.number.max-safe-integer');\nmodule.exports = 0x1fffffffffffff;\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\nvar React = require('react');\n\nvar dis = require('../../dispatcher');\nvar AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nmodule.exports = React.createClass({\n displayName: 'LoginBox',\n\n propTypes: {},\n\n onLoginClick: function onLoginClick() {\n dis.dispatch({ action: 'start_login' });\n },\n\n onRegisterClick: function onRegisterClick() {\n dis.dispatch({ action: 'start_registration' });\n },\n\n render: function render() {\n var loginButton = React.createElement(\n 'div',\n { className: 'mx_LoginBox_loginButton_wrapper' },\n React.createElement(\n AccessibleButton,\n { className: 'mx_LoginBox_loginButton', element: 'button', onClick: this.onLoginClick },\n (0, _languageHandler._t)(\"Login\")\n ),\n React.createElement(\n AccessibleButton,\n { className: 'mx_LoginBox_registerButton', element: 'button', onClick: this.onRegisterClick },\n (0, _languageHandler._t)(\"Register\")\n )\n );\n\n return React.createElement(\n 'div',\n { className: 'mx_LoginBox' },\n loginButton\n );\n }\n});\n//# sourceMappingURL=LoginBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _DecryptionFailureTracker = require('../../DecryptionFailureTracker');\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _PlatformPeg = require('../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _SdkConfig = require('../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _RoomListSorter = require('../../RoomListSorter');\n\nvar RoomListSorter = _interopRequireWildcard(_RoomListSorter);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Tinter = require('../../Tinter');\n\nvar _Tinter2 = _interopRequireDefault(_Tinter);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _RoomInvite = require('../../RoomInvite');\n\nvar _Rooms = require('../../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _linkifyMatrix = require('../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _Lifecycle = require('../../Lifecycle');\n\nvar Lifecycle = _interopRequireWildcard(_Lifecycle);\n\nvar _PageTypes = require('../../PageTypes');\n\nvar _PageTypes2 = _interopRequireDefault(_PageTypes);\n\nvar _createRoom2 = require('../../createRoom');\n\nvar _createRoom3 = _interopRequireDefault(_createRoom2);\n\nvar _KeyRequestHandler = require('../../KeyRequestHandler');\n\nvar _KeyRequestHandler2 = _interopRequireDefault(_KeyRequestHandler);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Registration = require('../../Registration.js');\n\nvar _ErrorUtils = require('../../utils/ErrorUtils');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// LifecycleStore is not used but does listen to and dispatch actions\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nrequire('../../stores/LifecycleStore');\n\n\n// Disable warnings for now: we use deprecated bluebird functions\n// and need to migrate, but they spam the console with warnings.\n_bluebird2.default.config({ warnings: false });\n\n/** constants for MatrixChat.state.view */\nvar VIEWS = {\n // a special initial state which is only used at startup, while we are\n // trying to re-animate a matrix client or register as a guest.\n LOADING: 0,\n\n // we are showing the login view\n LOGIN: 1,\n\n // we are showing the registration view\n REGISTER: 2,\n\n // completeing the registration flow\n POST_REGISTRATION: 3,\n\n // showing the 'forgot password' view\n FORGOT_PASSWORD: 4,\n\n // we have valid matrix credentials (either via an explicit login, via the\n // initial re-animation/guest registration, or via a registration), and are\n // now setting up a matrixclient to talk to it. This isn't an instant\n // process because (a) we need to clear out indexeddb, and (b) we need to\n // talk to the team server; while it is going on we show a big spinner.\n LOGGING_IN: 5,\n\n // we are logged in with an active matrix client.\n LOGGED_IN: 6\n};\n\n// Actions that are redirected through the onboarding process prior to being\n// re-dispatched. NOTE: some actions are non-trivial and would require\n// re-factoring to be included in this list in future.\nvar ONBOARDING_FLOW_STARTERS = ['view_user_settings', 'view_create_chat', 'view_create_room', 'view_create_group'];\n\nexports.default = _react2.default.createClass({\n // we export this so that the integration tests can use it :-S\n statics: {\n VIEWS: VIEWS\n },\n\n displayName: 'MatrixChat',\n\n propTypes: {\n config: _propTypes2.default.object,\n ConferenceHandler: _propTypes2.default.any,\n onNewScreen: _propTypes2.default.func,\n registrationUrl: _propTypes2.default.string,\n enableGuest: _propTypes2.default.bool,\n\n // the queryParams extracted from the [real] query-string of the URI\n realQueryParams: _propTypes2.default.object,\n\n // the initial queryParams extracted from the hash-fragment of the URI\n startingFragmentQueryParams: _propTypes2.default.object,\n\n // called when we have completed a token login\n onTokenLoginCompleted: _propTypes2.default.func,\n\n // Represents the screen to display as a result of parsing the initial\n // window.location\n initialScreenAfterLogin: _propTypes2.default.shape({\n screen: _propTypes2.default.string.isRequired,\n params: _propTypes2.default.object\n }),\n\n // displayname, if any, to set on the device when logging\n // in/registering.\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // A function that makes a registration URL\n makeRegistrationUrl: _propTypes2.default.func.isRequired\n },\n\n childContextTypes: {\n appConfig: _propTypes2.default.object\n },\n\n AuxPanel: {\n RoomSettings: \"room_settings\"\n },\n\n getChildContext: function getChildContext() {\n return {\n appConfig: this.props.config\n };\n },\n\n getInitialState: function getInitialState() {\n var s = {\n // the master view we are showing.\n view: VIEWS.LOADING,\n\n // What the LoggedInView would be showing if visible\n page_type: null,\n\n // The ID of the room we're viewing. This is either populated directly\n // in the case where we view a room by ID or by RoomView when it resolves\n // what ID an alias points at.\n currentRoomId: null,\n\n // If we're trying to just view a user ID (i.e. /user URL), this is it\n viewUserId: null,\n\n collapseLhs: false,\n collapseRhs: false,\n leftDisabled: false,\n middleDisabled: false,\n rightDisabled: false,\n\n version: null,\n newVersion: null,\n hasNewVersion: false,\n newVersionReleaseNotes: null,\n checkingForUpdate: null,\n\n showCookieBar: false,\n\n // Parameters used in the registration dance with the IS\n register_client_secret: null,\n register_session_id: null,\n register_hs_url: null,\n register_is_url: null,\n register_id_sid: null,\n\n // When showing Modal dialogs we need to set aria-hidden on the root app element\n // and disable it when there are no dialogs\n hideToSRUsers: false,\n\n syncError: null // If the current syncing status is ERROR, the error object, otherwise null.\n };\n return s;\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n realQueryParams: {},\n startingFragmentQueryParams: {},\n config: {},\n onTokenLoginCompleted: function onTokenLoginCompleted() {}\n };\n },\n\n getCurrentHsUrl: function getCurrentHsUrl() {\n if (this.state.register_hs_url) {\n return this.state.register_hs_url;\n } else if (_MatrixClientPeg2.default.get()) {\n return _MatrixClientPeg2.default.get().getHomeserverUrl();\n } else if (window.localStorage && window.localStorage.getItem(\"mx_hs_url\")) {\n return window.localStorage.getItem(\"mx_hs_url\");\n } else {\n return this.getDefaultHsUrl();\n }\n },\n\n getDefaultHsUrl: function getDefaultHsUrl() {\n return this.props.config.default_hs_url || \"https://matrix.org\";\n },\n\n\n getFallbackHsUrl: function getFallbackHsUrl() {\n return this.props.config.fallback_hs_url;\n },\n\n getCurrentIsUrl: function getCurrentIsUrl() {\n if (this.state.register_is_url) {\n return this.state.register_is_url;\n } else if (_MatrixClientPeg2.default.get()) {\n return _MatrixClientPeg2.default.get().getIdentityServerUrl();\n } else if (window.localStorage && window.localStorage.getItem(\"mx_is_url\")) {\n return window.localStorage.getItem(\"mx_is_url\");\n } else {\n return this.getDefaultIsUrl();\n }\n },\n\n getDefaultIsUrl: function getDefaultIsUrl() {\n return this.props.config.default_is_url || \"https://vector.im\";\n },\n\n\n componentWillMount: function componentWillMount() {\n _SdkConfig2.default.put(this.props.config);\n\n // Used by _viewRoom before getting state from sync\n this.firstSyncComplete = false;\n this.firstSyncPromise = _bluebird2.default.defer();\n\n if (this.props.config.sync_timeline_limit) {\n _MatrixClientPeg2.default.opts.initialSyncLimit = this.props.config.sync_timeline_limit;\n }\n\n // To enable things like riot.im/geektime in a nicer way than rewriting the URL\n // and appending a team token query parameter, use the first path segment to\n // indicate a team, with \"public\" team tokens stored in the config teamTokenMap.\n var routedTeamToken = null;\n if (this.props.config.teamTokenMap) {\n var teamName = window.location.pathname.split('/')[1];\n if (teamName && this.props.config.teamTokenMap.hasOwnProperty(teamName)) {\n routedTeamToken = this.props.config.teamTokenMap[teamName];\n }\n }\n\n // Persist the team token across refreshes using sessionStorage. A new window or\n // tab will not persist sessionStorage, but refreshes will.\n if (this.props.startingFragmentQueryParams.team_token) {\n window.sessionStorage.setItem('mx_team_token', this.props.startingFragmentQueryParams.team_token);\n }\n\n // Use the locally-stored team token first, then as a fall-back, check to see if\n // a referral link was used, which will contain a query parameter `team_token`.\n this._teamToken = routedTeamToken || window.localStorage.getItem('mx_team_token') || window.sessionStorage.getItem('mx_team_token');\n\n // Some users have ended up with \"undefined\" as their local storage team token,\n // treat that as undefined.\n if (this._teamToken === \"undefined\") {\n this._teamToken = undefined;\n }\n\n if (this._teamToken) {\n console.info('Team token set to ' + this._teamToken);\n }\n\n // Set a default HS with query param `hs_url`\n var paramHs = this.props.startingFragmentQueryParams.hs_url;\n if (paramHs) {\n console.log('Setting register_hs_url ', paramHs);\n this.setState({\n register_hs_url: paramHs\n });\n }\n // Set a default IS with query param `is_url`\n var paramIs = this.props.startingFragmentQueryParams.is_url;\n if (paramIs) {\n console.log('Setting register_is_url ', paramIs);\n this.setState({\n register_is_url: paramIs\n });\n }\n\n // a thing to call showScreen with once login completes. this is kept\n // outside this.state because updating it should never trigger a\n // rerender.\n this._screenAfterLogin = this.props.initialScreenAfterLogin;\n\n this._windowWidth = 10000;\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n\n this._pageChanging = false;\n\n // check we have the right tint applied for this theme.\n // N.B. we don't call the whole of setTheme() here as we may be\n // racing with the theme CSS download finishing from index.js\n _Tinter2.default.tint();\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n\n this.focusComposer = false;\n\n // this can technically be done anywhere but doing this here keeps all\n // the routing url path logic together.\n if (this.onAliasClick) {\n _linkifyMatrix2.default.onAliasClick = this.onAliasClick;\n }\n if (this.onUserClick) {\n _linkifyMatrix2.default.onUserClick = this.onUserClick;\n }\n if (this.onGroupClick) {\n _linkifyMatrix2.default.onGroupClick = this.onGroupClick;\n }\n\n var teamServerConfig = this.props.config.teamServerConfig || {};\n Lifecycle.initRtsClient(teamServerConfig.teamServerURL);\n\n // the first thing to do is to try the token params in the query-string\n Lifecycle.attemptTokenLogin(this.props.realQueryParams).then(function (loggedIn) {\n if (loggedIn) {\n _this.props.onTokenLoginCompleted();\n\n // don't do anything else until the page reloads - just stay in\n // the 'loading' state.\n return;\n }\n\n // if the user has followed a login or register link, don't reanimate\n // the old creds, but rather go straight to the relevant page\n var firstScreen = _this._screenAfterLogin ? _this._screenAfterLogin.screen : null;\n\n if (firstScreen === 'login' || firstScreen === 'register' || firstScreen === 'forgot_password') {\n _this._showScreenAfterLogin();\n return;\n }\n\n // the extra Promise.resolve() ensures that synchronous exceptions hit the same codepath as\n // asynchronous ones.\n return _bluebird2.default.resolve().then(function () {\n return Lifecycle.loadSession({\n fragmentQueryParams: _this.props.startingFragmentQueryParams,\n enableGuest: _this.props.enableGuest,\n guestHsUrl: _this.getCurrentHsUrl(),\n guestIsUrl: _this.getCurrentIsUrl(),\n defaultDeviceDisplayName: _this.props.defaultDeviceDisplayName\n });\n }).then(function (loadedSession) {\n if (!loadedSession) {\n // fall back to showing the login screen\n _dispatcher2.default.dispatch({ action: \"start_login\" });\n }\n });\n // Note we don't catch errors from this: we catch everything within\n // loadSession as there's logic there to ask the user if they want\n // to try logging out.\n });\n\n if (_SettingsStore2.default.getValue(\"showCookieBar\")) {\n this.setState({\n showCookieBar: true\n });\n }\n\n if (_SettingsStore2.default.getValue(\"analyticsOptIn\")) {\n _Analytics2.default.enable();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n Lifecycle.stopMatrixClient();\n _dispatcher2.default.unregister(this.dispatcherRef);\n window.removeEventListener(\"focus\", this.onFocus);\n window.removeEventListener('resize', this.handleResize);\n },\n\n componentWillUpdate: function componentWillUpdate(props, state) {\n if (this.shouldTrackPageChange(this.state, state)) {\n this.startPageChangeTimer();\n }\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n if (this.shouldTrackPageChange(prevState, this.state)) {\n var durationMs = this.stopPageChangeTimer();\n _Analytics2.default.trackPageChange(durationMs);\n }\n if (this.focusComposer) {\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n this.focusComposer = false;\n }\n },\n\n startPageChangeTimer: function startPageChangeTimer() {\n // Tor doesn't support performance\n if (!performance || !performance.mark) return null;\n\n // This shouldn't happen because componentWillUpdate and componentDidUpdate\n // are used.\n if (this._pageChanging) {\n console.warn('MatrixChat.startPageChangeTimer: timer already started');\n return;\n }\n this._pageChanging = true;\n performance.mark('riot_MatrixChat_page_change_start');\n },\n stopPageChangeTimer: function stopPageChangeTimer() {\n // Tor doesn't support performance\n if (!performance || !performance.mark) return null;\n\n if (!this._pageChanging) {\n console.warn('MatrixChat.stopPageChangeTimer: timer not started');\n return;\n }\n this._pageChanging = false;\n performance.mark('riot_MatrixChat_page_change_stop');\n performance.measure('riot_MatrixChat_page_change_delta', 'riot_MatrixChat_page_change_start', 'riot_MatrixChat_page_change_stop');\n performance.clearMarks('riot_MatrixChat_page_change_start');\n performance.clearMarks('riot_MatrixChat_page_change_stop');\n var measurement = performance.getEntriesByName('riot_MatrixChat_page_change_delta').pop();\n\n // In practice, sometimes the entries list is empty, so we get no measurement\n if (!measurement) return null;\n\n return measurement.duration;\n },\n shouldTrackPageChange: function shouldTrackPageChange(prevState, state) {\n return prevState.currentRoomId !== state.currentRoomId || prevState.view !== state.view || prevState.page_type !== state.page_type;\n },\n\n\n setStateForNewView: function setStateForNewView(state) {\n if (state.view === undefined) {\n throw new Error(\"setStateForNewView with no view!\");\n }\n var newState = {\n viewUserId: null\n };\n (0, _assign2.default)(newState, state);\n this.setState(newState);\n },\n\n onAction: function onAction(payload) {\n var _this2 = this;\n\n // console.log(`MatrixClientPeg.onAction: ${payload.action}`);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // Start the onboarding process for certain actions\n if (_MatrixClientPeg2.default.get() && _MatrixClientPeg2.default.get().isGuest() && ONBOARDING_FLOW_STARTERS.includes(payload.action)) {\n // This will cause `payload` to be dispatched later, once a\n // sync has reached the \"prepared\" state. Setting a matrix ID\n // will cause a full login and sync and finally the deferred\n // action will be dispatched.\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: payload\n });\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n switch (payload.action) {\n case 'logout':\n Lifecycle.logout();\n break;\n case 'require_registration':\n (0, _Registration.startAnyRegistrationFlow)(payload);\n break;\n case 'start_registration':\n // This starts the full registration flow\n this._startRegistration(payload.params || {});\n break;\n case 'start_login':\n this.setStateForNewView({\n view: VIEWS.LOGIN\n });\n this.notifyNewScreen('login');\n break;\n case 'start_post_registration':\n this.setState({\n view: VIEWS.POST_REGISTRATION\n });\n break;\n case 'start_password_recovery':\n this.setStateForNewView({\n view: VIEWS.FORGOT_PASSWORD\n });\n this.notifyNewScreen('forgot_password');\n break;\n case 'start_chat':\n (0, _createRoom3.default)({\n dmUserId: payload.user_id\n });\n break;\n case 'leave_room':\n this._leaveRoom(payload.room_id);\n break;\n case 'reject_invite':\n _Modal2.default.createTrackedDialog('Reject invitation', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Reject invitation'),\n description: (0, _languageHandler._t)('Are you sure you want to reject the invitation?'),\n onFinished: function onFinished(confirm) {\n if (confirm) {\n // FIXME: controller shouldn't be loading a view :(\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n _MatrixClientPeg2.default.get().leave(payload.room_id).done(function () {\n modal.close();\n if (_this2.state.currentRoomId === payload.room_id) {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }\n }, function (err) {\n modal.close();\n _Modal2.default.createTrackedDialog('Failed to reject invitation', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to reject invitation'),\n description: err.toString()\n });\n });\n }\n }\n });\n break;\n case 'view_user':\n // FIXME: ugly hack to expand the RightPanel and then re-dispatch.\n if (this.state.collapseRhs) {\n setTimeout(function () {\n _dispatcher2.default.dispatch({\n action: 'show_right_panel'\n });\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: payload.member\n });\n }, 0);\n }\n break;\n case 'view_room':\n // Takes either a room ID or room alias: if switching to a room the client is already\n // known to be in (eg. user clicks on a room in the recents panel), supply the ID\n // If the user is clicking on a room in the context of the alias being presented\n // to them, supply the room alias. If both are supplied, the room ID will be ignored.\n this._viewRoom(payload);\n break;\n case 'view_prev_room':\n this._viewNextRoom(-1);\n break;\n case 'view_next_room':\n this._viewNextRoom(1);\n break;\n case 'view_indexed_room':\n this._viewIndexedRoom(payload.roomIndex);\n break;\n case 'view_user_settings':\n this._setPage(_PageTypes2.default.UserSettings);\n this.notifyNewScreen('settings');\n break;\n case 'close_settings':\n this.setState({\n leftDisabled: false,\n rightDisabled: false,\n middleDisabled: false\n });\n if (this.state.page_type === _PageTypes2.default.UserSettings) {\n // We do this to get setPage and notifyNewScreen\n if (this.state.currentRoomId) {\n this._viewRoom({\n room_id: this.state.currentRoomId\n });\n } else if (this.state.currentGroupId) {\n this._viewGroup({\n group_id: this.state.currentGroupId\n });\n } else {\n this._viewHome();\n }\n }\n break;\n case 'view_create_room':\n this._createRoom();\n break;\n case 'view_create_group':\n {\n var CreateGroupDialog = _index2.default.getComponent(\"dialogs.CreateGroupDialog\");\n _Modal2.default.createTrackedDialog('Create Community', '', CreateGroupDialog);\n }\n break;\n case 'view_room_directory':\n this._setPage(_PageTypes2.default.RoomDirectory);\n this.notifyNewScreen('directory');\n break;\n case 'view_my_groups':\n this._setPage(_PageTypes2.default.MyGroups);\n this.notifyNewScreen('groups');\n break;\n case 'view_group':\n this._viewGroup(payload);\n break;\n case 'view_home_page':\n this._viewHome();\n break;\n case 'view_set_mxid':\n this._setMxId(payload);\n break;\n case 'view_start_chat_or_reuse':\n this._chatCreateOrReuse(payload.user_id, payload.go_home_on_cancel);\n break;\n case 'view_create_chat':\n (0, _RoomInvite.showStartChatInviteDialog)();\n break;\n case 'view_invite':\n (0, _RoomInvite.showRoomInviteDialog)(payload.roomId);\n break;\n case 'notifier_enabled':\n this.forceUpdate();\n break;\n case 'hide_left_panel':\n this.setState({\n collapseLhs: true\n });\n break;\n case 'show_left_panel':\n this.setState({\n collapseLhs: false\n });\n break;\n case 'hide_right_panel':\n this.setState({\n collapseRhs: true\n });\n break;\n case 'show_right_panel':\n this.setState({\n collapseRhs: false\n });\n break;\n case 'panel_disable':\n {\n this.setState({\n leftDisabled: payload.leftDisabled || payload.sideDisabled || false,\n middleDisabled: payload.middleDisabled || false,\n rightDisabled: payload.rightDisabled || payload.sideDisabled || false\n });\n break;\n }\n case 'set_theme':\n this._onSetTheme(payload.value);\n break;\n case 'on_logging_in':\n // We are now logging in, so set the state to reflect that\n // NB. This does not touch 'ready' since if our dispatches\n // are delayed, the sync could already have completed\n this.setStateForNewView({\n view: VIEWS.LOGGING_IN\n });\n break;\n case 'on_logged_in':\n this._onLoggedIn(payload.teamToken);\n break;\n case 'on_logged_out':\n this._onLoggedOut();\n break;\n case 'will_start_client':\n this.setState({ ready: false }, function () {\n // if the client is about to start, we are, by definition, not ready.\n // Set ready to false now, then it'll be set to true when the sync\n // listener we set below fires.\n _this2._onWillStartClient();\n });\n break;\n case 'client_started':\n this._onClientStarted();\n break;\n case 'new_version':\n this.onVersion(payload.currentVersion, payload.newVersion, payload.releaseNotes);\n break;\n case 'check_updates':\n this.setState({ checkingForUpdate: payload.value });\n break;\n case 'send_event':\n this.onSendEvent(payload.room_id, payload.event);\n break;\n case 'aria_hide_main_app':\n this.setState({\n hideToSRUsers: true\n });\n break;\n case 'aria_unhide_main_app':\n this.setState({\n hideToSRUsers: false\n });\n break;\n case 'accept_cookies':\n _SettingsStore2.default.setValue(\"analyticsOptIn\", null, _SettingsStore.SettingLevel.DEVICE, true);\n _SettingsStore2.default.setValue(\"showCookieBar\", null, _SettingsStore.SettingLevel.DEVICE, false);\n\n this.setState({\n showCookieBar: false\n });\n _Analytics2.default.enable();\n break;\n case 'reject_cookies':\n _SettingsStore2.default.setValue(\"analyticsOptIn\", null, _SettingsStore.SettingLevel.DEVICE, false);\n _SettingsStore2.default.setValue(\"showCookieBar\", null, _SettingsStore.SettingLevel.DEVICE, false);\n\n this.setState({\n showCookieBar: false\n });\n break;\n }\n },\n\n _setPage: function _setPage(pageType) {\n this.setState({\n page_type: pageType\n });\n },\n\n _startRegistration: function _startRegistration(params) {\n var newState = {\n view: VIEWS.REGISTER\n };\n\n // Only honour params if they are all present, otherwise we reset\n // HS and IS URLs when switching to registration.\n if (params.client_secret && params.session_id && params.hs_url && params.is_url && params.sid) {\n newState.register_client_secret = params.client_secret;\n newState.register_session_id = params.session_id;\n newState.register_hs_url = params.hs_url;\n newState.register_is_url = params.is_url;\n newState.register_id_sid = params.sid;\n }\n\n this.setStateForNewView(newState);\n this.notifyNewScreen('register');\n },\n\n // TODO: Move to RoomViewStore\n _viewNextRoom: function _viewNextRoom(roomIndexDelta) {\n var allRooms = RoomListSorter.mostRecentActivityFirst(_MatrixClientPeg2.default.get().getRooms());\n // If there are 0 rooms or 1 room, view the home page because otherwise\n // if there are 0, we end up trying to index into an empty array, and\n // if there is 1, we end up viewing the same room.\n if (allRooms.length < 2) {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n return;\n }\n var roomIndex = -1;\n for (var i = 0; i < allRooms.length; ++i) {\n if (allRooms[i].roomId == this.state.currentRoomId) {\n roomIndex = i;\n break;\n }\n }\n roomIndex = (roomIndex + roomIndexDelta) % allRooms.length;\n if (roomIndex < 0) roomIndex = allRooms.length - 1;\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: allRooms[roomIndex].roomId\n });\n },\n\n // TODO: Move to RoomViewStore\n _viewIndexedRoom: function _viewIndexedRoom(roomIndex) {\n var allRooms = RoomListSorter.mostRecentActivityFirst(_MatrixClientPeg2.default.get().getRooms());\n if (allRooms[roomIndex]) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: allRooms[roomIndex].roomId\n });\n }\n },\n\n // switch view to the given room\n //\n // @param {Object} roomInfo Object containing data about the room to be joined\n // @param {string=} roomInfo.room_id ID of the room to join. One of room_id or room_alias must be given.\n // @param {string=} roomInfo.room_alias Alias of the room to join. One of room_id or room_alias must be given.\n // @param {boolean=} roomInfo.auto_join If true, automatically attempt to join the room if not already a member.\n // @param {string=} roomInfo.event_id ID of the event in this room to show: this will cause a switch to the\n // context of that particular event.\n // @param {boolean=} roomInfo.highlighted If true, add event_id to the hash of the URL\n // and alter the EventTile to appear highlighted.\n // @param {Object=} roomInfo.third_party_invite Object containing data about the third party\n // we received to join the room, if any.\n // @param {string=} roomInfo.third_party_invite.inviteSignUrl 3pid invite sign URL\n // @param {string=} roomInfo.third_party_invite.invitedEmail The email address the invite was sent to\n // @param {Object=} roomInfo.oob_data Object of additional data about the room\n // that has been passed out-of-band (eg.\n // room name and avatar from an invite email)\n _viewRoom: function _viewRoom(roomInfo) {\n var _this3 = this;\n\n this.focusComposer = true;\n\n var newState = {\n currentRoomId: roomInfo.room_id || null,\n page_type: _PageTypes2.default.RoomView,\n thirdPartyInvite: roomInfo.third_party_invite,\n roomOobData: roomInfo.oob_data\n };\n\n if (roomInfo.room_alias) {\n console.log('Switching to room alias ' + roomInfo.room_alias + ' at event ' + roomInfo.event_id);\n } else {\n console.log('Switching to room id ' + roomInfo.room_id + ' at event ' + roomInfo.event_id);\n }\n\n // Wait for the first sync to complete so that if a room does have an alias,\n // it would have been retrieved.\n var waitFor = _bluebird2.default.resolve(null);\n if (!this.firstSyncComplete) {\n if (!this.firstSyncPromise) {\n console.warn('Cannot view a room before first sync. room_id:', roomInfo.room_id);\n return;\n }\n waitFor = this.firstSyncPromise.promise;\n }\n\n waitFor.done(function () {\n var presentedId = roomInfo.room_alias || roomInfo.room_id;\n var room = _MatrixClientPeg2.default.get().getRoom(roomInfo.room_id);\n if (room) {\n var theAlias = Rooms.getDisplayAliasForRoom(room);\n if (theAlias) presentedId = theAlias;\n\n // Store this as the ID of the last room accessed. This is so that we can\n // persist which room is being stored across refreshes and browser quits.\n if (localStorage) {\n localStorage.setItem('mx_last_room_id', room.roomId);\n }\n }\n\n if (roomInfo.event_id && roomInfo.highlighted) {\n presentedId += \"/\" + roomInfo.event_id;\n }\n _this3.notifyNewScreen('room/' + presentedId);\n newState.ready = true;\n _this3.setState(newState);\n });\n },\n\n _viewGroup: function _viewGroup(payload) {\n var groupId = payload.group_id;\n this.setState({\n currentGroupId: groupId,\n currentGroupIsNew: payload.group_is_new\n });\n this._setPage(_PageTypes2.default.GroupView);\n this.notifyNewScreen('group/' + groupId);\n },\n\n _viewHome: function _viewHome() {\n this._setPage(_PageTypes2.default.HomePage);\n this.notifyNewScreen('home');\n },\n\n _setMxId: function _setMxId(payload) {\n var _this4 = this;\n\n var SetMxIdDialog = _index2.default.getComponent('views.dialogs.SetMxIdDialog');\n var close = _Modal2.default.createTrackedDialog('Set MXID', '', SetMxIdDialog, {\n homeserverUrl: _MatrixClientPeg2.default.get().getHomeserverUrl(),\n onFinished: function onFinished(submitted, credentials) {\n if (!submitted) {\n _dispatcher2.default.dispatch({\n action: 'cancel_after_sync_prepared'\n });\n if (payload.go_home_on_cancel) {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n }\n return;\n }\n _this4.onRegistered(credentials);\n },\n onDifferentServerClicked: function onDifferentServerClicked(ev) {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n close();\n },\n onLoginClick: function onLoginClick(ev) {\n _dispatcher2.default.dispatch({ action: 'start_login' });\n close();\n }\n }).close;\n },\n\n _createRoom: function _createRoom() {\n var CreateRoomDialog = _index2.default.getComponent('dialogs.CreateRoomDialog');\n _Modal2.default.createTrackedDialog('Create Room', '', CreateRoomDialog, {\n onFinished: function onFinished(shouldCreate, name, noFederate) {\n if (shouldCreate) {\n var createOpts = {};\n if (name) createOpts.name = name;\n if (noFederate) createOpts.creation_content = { 'm.federate': false };\n (0, _createRoom3.default)({ createOpts: createOpts }).done();\n }\n }\n });\n },\n\n _chatCreateOrReuse: function _chatCreateOrReuse(userId, goHomeOnCancel) {\n if (goHomeOnCancel === undefined) goHomeOnCancel = true;\n\n var ChatCreateOrReuseDialog = _index2.default.getComponent('views.dialogs.ChatCreateOrReuseDialog');\n // Use a deferred action to reshow the dialog once the user has registered\n if (_MatrixClientPeg2.default.get().isGuest()) {\n // No point in making 2 DMs with welcome bot. This assumes view_set_mxid will\n // result in a new DM with the welcome user.\n if (userId !== this.props.config.welcomeUserId) {\n _dispatcher2.default.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'view_start_chat_or_reuse',\n user_id: userId\n }\n });\n }\n _dispatcher2.default.dispatch({\n action: 'require_registration',\n // If the set_mxid dialog is cancelled, view /home because if the browser\n // was pointing at /user/@someone:domain?action=chat, the URL needs to be\n // reset so that they can revisit /user/.. // (and trigger\n // `_chatCreateOrReuse` again)\n go_home_on_cancel: true\n });\n return;\n }\n\n var close = _Modal2.default.createTrackedDialog('Chat create or reuse', '', ChatCreateOrReuseDialog, {\n userId: userId,\n onFinished: function onFinished(success) {\n if (!success && goHomeOnCancel) {\n // Dialog cancelled, default to home\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n },\n onNewDMClick: function onNewDMClick() {\n _dispatcher2.default.dispatch({\n action: 'start_chat',\n user_id: userId\n });\n // Close the dialog, indicate success (calls onFinished(true))\n close(true);\n },\n onExistingRoomSelected: function onExistingRoomSelected(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n close(true);\n }\n }).close;\n },\n\n _leaveRoomWarnings: function _leaveRoomWarnings(roomId) {\n var roomToLeave = _MatrixClientPeg2.default.get().getRoom(roomId);\n // Show a warning if there are additional complications.\n var joinRules = roomToLeave.currentState.getStateEvents('m.room.join_rules', '');\n var warnings = [];\n if (joinRules) {\n var rule = joinRules.getContent().join_rule;\n if (rule !== \"public\") {\n warnings.push(_react2.default.createElement(\n 'span',\n { className: 'warning', key: 'non_public_warning' },\n ' ' /* Whitespace, otherwise the sentences get smashed together */,\n (0, _languageHandler._t)(\"This room is not public. You will not be able to rejoin without an invite.\")\n ));\n }\n }\n return warnings;\n },\n\n _leaveRoom: function _leaveRoom(roomId) {\n var _this5 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var roomToLeave = _MatrixClientPeg2.default.get().getRoom(roomId);\n var warnings = this._leaveRoomWarnings(roomId);\n\n _Modal2.default.createTrackedDialog('Leave room', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Leave room\"),\n description: _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Are you sure you want to leave the room '%(roomName)s'?\", { roomName: roomToLeave.name }),\n warnings\n ),\n button: (0, _languageHandler._t)(\"Leave\"),\n onFinished: function onFinished(shouldLeave) {\n if (shouldLeave) {\n var d = _MatrixClientPeg2.default.get().leave(roomId);\n\n // FIXME: controller shouldn't be loading a view :(\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n\n d.then(function () {\n modal.close();\n if (_this5.state.currentRoomId === roomId) {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }\n }, function (err) {\n modal.close();\n console.error(\"Failed to leave room \" + roomId + \" \" + err);\n var title = (0, _languageHandler._t)(\"Failed to leave room\");\n var message = (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or you hit a bug.\");\n if (err.errcode == 'M_CANNOT_LEAVE_SERVER_NOTICE_ROOM') {\n title = (0, _languageHandler._t)(\"Can't leave Server Notices room\");\n message = (0, _languageHandler._t)(\"This room is used for important messages from the Homeserver, \" + \"so you cannot leave it.\");\n } else if (err && err.message) {\n message = err.message;\n }\n _Modal2.default.createTrackedDialog('Failed to leave room', '', ErrorDialog, {\n title: title,\n description: message\n });\n });\n }\n }\n });\n },\n\n /**\n * Called whenever someone changes the theme\n *\n * @param {string} theme new theme\n */\n _onSetTheme: function _onSetTheme(theme) {\n if (!theme) {\n theme = _SettingsStore2.default.getValue(\"theme\");\n }\n\n // look for the stylesheet elements.\n // styleElements is a map from style name to HTMLLinkElement.\n var styleElements = (0, _create2.default)(null);\n var a = void 0;\n for (var i = 0; a = document.getElementsByTagName(\"link\")[i]; i++) {\n var href = a.getAttribute(\"href\");\n // shouldn't we be using the 'title' tag rather than the href?\n var match = href.match(/^bundles\\/.*\\/theme-(.*)\\.css$/);\n if (match) {\n styleElements[match[1]] = a;\n }\n }\n\n if (!(theme in styleElements)) {\n throw new Error(\"Unknown theme \" + theme);\n }\n\n // disable all of them first, then enable the one we want. Chrome only\n // bothers to do an update on a true->false transition, so this ensures\n // that we get exactly one update, at the right time.\n //\n // ^ This comment was true when we used to use alternative stylesheets\n // for the CSS. Nowadays we just set them all as disabled in index.html\n // and enable them as needed. It might be cleaner to disable them all\n // at the same time to prevent loading two themes simultaneously and\n // having them interact badly... but this causes a flash of unstyled app\n // which is even uglier. So we don't.\n\n styleElements[theme].disabled = false;\n\n var switchTheme = function switchTheme() {\n // we re-enable our theme here just in case we raced with another\n // theme set request as per https://github.com/vector-im/riot-web/issues/5601.\n // We could alternatively lock or similar to stop the race, but\n // this is probably good enough for now.\n styleElements[theme].disabled = false;\n (0, _values2.default)(styleElements).forEach(function (a) {\n if (a == styleElements[theme]) return;\n a.disabled = true;\n });\n _Tinter2.default.setTheme(theme);\n };\n\n // turns out that Firefox preloads the CSS for link elements with\n // the disabled attribute, but Chrome doesn't.\n\n var cssLoaded = false;\n\n styleElements[theme].onload = function () {\n switchTheme();\n };\n\n for (var _i = 0; _i < document.styleSheets.length; _i++) {\n var ss = document.styleSheets[_i];\n if (ss && ss.href === styleElements[theme].href) {\n cssLoaded = true;\n break;\n }\n }\n\n if (cssLoaded) {\n styleElements[theme].onload = undefined;\n switchTheme();\n }\n },\n\n /**\n * Called when a new logged in session has started\n *\n * @param {string} teamToken\n */\n _onLoggedIn: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(teamToken) {\n var roomId;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({\n view: VIEWS.LOGGED_IN\n });\n\n if (!teamToken) {\n _context.next = 6;\n break;\n }\n\n // A team member has logged in, not a guest\n this._teamToken = teamToken;\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n _context.next = 18;\n break;\n\n case 6:\n if (!this._is_registered) {\n _context.next = 17;\n break;\n }\n\n this._is_registered = false;\n\n if (!(this.props.config.welcomeUserId && (0, _languageHandler.getCurrentLanguage)().startsWith(\"en\"))) {\n _context.next = 14;\n break;\n }\n\n _context.next = 11;\n return (0, _bluebird.resolve)((0, _createRoom3.default)({\n dmUserId: this.props.config.welcomeUserId,\n // Only view the welcome user if we're NOT looking at a room\n andView: !this.state.currentRoomId\n }));\n\n case 11:\n roomId = _context.sent;\n\n if (!roomId) {\n _context.next = 14;\n break;\n }\n\n return _context.abrupt('return');\n\n case 14:\n // The user has just logged in after registering\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n _context.next = 18;\n break;\n\n case 17:\n this._showScreenAfterLogin();\n\n case 18:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _onLoggedIn(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _onLoggedIn;\n }(),\n\n _showScreenAfterLogin: function _showScreenAfterLogin() {\n // If screenAfterLogin is set, use that, then null it so that a second login will\n // result in view_home_page, _user_settings or _room_directory\n if (this._screenAfterLogin && this._screenAfterLogin.screen) {\n this.showScreen(this._screenAfterLogin.screen, this._screenAfterLogin.params);\n this._screenAfterLogin = null;\n } else if (localStorage && localStorage.getItem('mx_last_room_id')) {\n // Before defaulting to directory, show the last viewed room\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: localStorage.getItem('mx_last_room_id')\n });\n } else {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n },\n\n /**\n * Called when the session is logged out\n */\n _onLoggedOut: function _onLoggedOut() {\n this.notifyNewScreen('login');\n this.setStateForNewView({\n view: VIEWS.LOGIN,\n ready: false,\n collapseLhs: false,\n collapseRhs: false,\n currentRoomId: null,\n page_type: _PageTypes2.default.RoomDirectory\n });\n this._teamToken = null;\n this._setPageSubtitle();\n },\n\n /**\n * Called just before the matrix client is started\n * (useful for setting listeners)\n */\n _onWillStartClient: function _onWillStartClient() {\n var self = this;\n\n // reset the 'have completed first sync' flag,\n // since we're about to start the client and therefore about\n // to do the first sync\n this.firstSyncComplete = false;\n this.firstSyncPromise = _bluebird2.default.defer();\n var cli = _MatrixClientPeg2.default.get();\n\n // Allow the JS SDK to reap timeline events. This reduces the amount of\n // memory consumed as the JS SDK stores multiple distinct copies of room\n // state (each of which can be 10s of MBs) for each DISJOINT timeline. This is\n // particularly noticeable when there are lots of 'limited' /sync responses\n // such as when laptops unsleep.\n // https://github.com/vector-im/riot-web/issues/3307#issuecomment-282895568\n cli.setCanResetTimelineCallback(function (roomId) {\n console.log(\"Request to reset timeline in room \", roomId, \" viewing:\", self.state.currentRoomId);\n if (roomId !== self.state.currentRoomId) {\n // It is safe to remove events from rooms we are not viewing.\n return true;\n }\n // We are viewing the room which we want to reset. It is only safe to do\n // this if we are not scrolled up in the view. To find out, delegate to\n // the timeline panel. If the timeline panel doesn't exist, then we assume\n // it is safe to reset the timeline.\n if (!self._loggedInView || !self._loggedInView.child) {\n return true;\n }\n return self._loggedInView.child.canResetTimelineInRoom(roomId);\n });\n\n cli.on('sync', function (state, prevState, data) {\n // LifecycleStore and others cannot directly subscribe to matrix client for\n // events because flux only allows store state changes during flux dispatches.\n // So dispatch directly from here. Ideally we'd use a SyncStateStore that\n // would do this dispatch and expose the sync state itself (by listening to\n // its own dispatch).\n _dispatcher2.default.dispatch({ action: 'sync_state', prevState: prevState, state: state });\n\n if (state === \"ERROR\" || state === \"RECONNECTING\") {\n if (data.error instanceof _matrixJsSdk2.default.InvalidStoreError) {\n Lifecycle.handleInvalidStoreError(data.error);\n }\n self.setState({ syncError: data.error || true });\n } else if (self.state.syncError) {\n self.setState({ syncError: null });\n }\n\n self.updateStatusIndicator(state, prevState);\n if (state === \"SYNCING\" && prevState === \"SYNCING\") {\n return;\n }\n console.log(\"MatrixClient sync state => %s\", state);\n if (state !== \"PREPARED\") {\n return;\n }\n\n self.firstSyncComplete = true;\n self.firstSyncPromise.resolve();\n\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n self.setState({ ready: true });\n });\n cli.on('Call.incoming', function (call) {\n // we dispatch this synchronously to make sure that the event\n // handlers on the call are set up immediately (so that if\n // we get an immediate hangup, we don't get a stuck call)\n _dispatcher2.default.dispatch({\n action: 'incoming_call',\n call: call\n }, true);\n });\n cli.on('Session.logged_out', function (call) {\n if (Lifecycle.isLoggingOut()) return;\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Signed out', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Signed Out'),\n description: (0, _languageHandler._t)('For security, this session has been signed out. Please sign in again.')\n });\n _dispatcher2.default.dispatch({\n action: 'logout'\n });\n });\n cli.on('no_consent', function (message, consentUri) {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('No Consent Dialog', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Terms and Conditions'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n ' ',\n (0, _languageHandler._t)('To continue using the %(homeserverDomain)s homeserver ' + 'you must review and agree to our terms and conditions.', { homeserverDomain: cli.getDomain() })\n )\n ),\n button: (0, _languageHandler._t)('Review terms and conditions'),\n cancelButton: (0, _languageHandler._t)('Dismiss'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n window.open(consentUri, '_blank');\n }\n }\n }, null, true);\n });\n\n cli.on(\"accountData\", function (ev) {\n if (ev.getType() === 'im.vector.web.settings') {\n if (ev.getContent() && ev.getContent().theme) {\n _dispatcher2.default.dispatch({\n action: 'set_theme',\n value: ev.getContent().theme\n });\n }\n }\n });\n\n var dft = new _DecryptionFailureTracker.DecryptionFailureTracker(function (total, errorCode) {\n _Analytics2.default.trackEvent('E2E', 'Decryption failure', errorCode, total);\n }, function (errorCode) {\n // Map JS-SDK error codes to tracker codes for aggregation\n switch (errorCode) {\n case 'MEGOLM_UNKNOWN_INBOUND_SESSION_ID':\n return 'olm_keys_not_sent_error';\n case 'OLM_UNKNOWN_MESSAGE_INDEX':\n return 'olm_index_error';\n case undefined:\n return 'unexpected_error';\n default:\n return 'unspecified_error';\n }\n });\n\n // Shelved for later date when we have time to think about persisting history of\n // tracked events across sessions.\n // dft.loadTrackedEventHashMap();\n\n dft.start();\n\n // When logging out, stop tracking failures and destroy state\n cli.on(\"Session.logged_out\", function () {\n return dft.stop();\n });\n cli.on(\"Event.decrypted\", function (e, err) {\n return dft.eventDecrypted(e, err);\n });\n\n var krh = new _KeyRequestHandler2.default(cli);\n cli.on(\"crypto.roomKeyRequest\", function (req) {\n krh.handleKeyRequest(req);\n });\n cli.on(\"crypto.roomKeyRequestCancellation\", function (req) {\n krh.handleKeyRequestCancellation(req);\n });\n cli.on(\"Room\", function (room) {\n if (_MatrixClientPeg2.default.get().isCryptoEnabled()) {\n var blacklistEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_DEVICE, \"blacklistUnverifiedDevices\", room.roomId,\n /*explicit=*/true);\n room.setBlacklistUnverifiedDevices(blacklistEnabled);\n }\n });\n cli.on(\"crypto.warning\", function (type) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n switch (type) {\n case 'CRYPTO_WARNING_OLD_VERSION_DETECTED':\n _Modal2.default.createTrackedDialog('Crypto migrated', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Old cryptography data detected'),\n description: (0, _languageHandler._t)(\"Data from an older version of Riot has been detected. \" + \"This will have caused end-to-end cryptography to malfunction \" + \"in the older version. End-to-end encrypted messages exchanged \" + \"recently whilst using the older version may not be decryptable \" + \"in this version. This may also cause messages exchanged with this \" + \"version to fail. If you experience problems, log out and back in \" + \"again. To retain message history, export and re-import your keys.\")\n });\n break;\n }\n });\n\n // Fire the tinter right on startup to ensure the default theme is applied\n // A later sync can/will correct the tint to be the right value for the user\n var colorScheme = _SettingsStore2.default.getValue(\"roomColor\");\n _Tinter2.default.tint(colorScheme.primary_color, colorScheme.secondary_color);\n },\n\n\n /**\n * Called shortly after the matrix client has started. Useful for\n * setting up anything that requires the client to be started.\n * @private\n */\n _onClientStarted: function _onClientStarted() {\n var cli = _MatrixClientPeg2.default.get();\n\n if (cli.isCryptoEnabled()) {\n var blacklistEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"blacklistUnverifiedDevices\");\n cli.setGlobalBlacklistUnverifiedDevices(blacklistEnabled);\n }\n },\n\n showScreen: function showScreen(screen, params) {\n var _this6 = this;\n\n if (screen == 'register') {\n _dispatcher2.default.dispatch({\n action: 'start_registration',\n params: params\n });\n } else if (screen == 'login') {\n _dispatcher2.default.dispatch({\n action: 'start_login',\n params: params\n });\n } else if (screen == 'forgot_password') {\n _dispatcher2.default.dispatch({\n action: 'start_password_recovery',\n params: params\n });\n } else if (screen == 'new') {\n _dispatcher2.default.dispatch({\n action: 'view_create_room'\n });\n } else if (screen == 'settings') {\n _dispatcher2.default.dispatch({\n action: 'view_user_settings'\n });\n } else if (screen == 'home') {\n _dispatcher2.default.dispatch({\n action: 'view_home_page'\n });\n } else if (screen == 'start') {\n this.showScreen('home');\n _dispatcher2.default.dispatch({\n action: 'require_registration'\n });\n } else if (screen == 'directory') {\n _dispatcher2.default.dispatch({\n action: 'view_room_directory'\n });\n } else if (screen == 'groups') {\n _dispatcher2.default.dispatch({\n action: 'view_my_groups'\n });\n } else if (screen == 'post_registration') {\n _dispatcher2.default.dispatch({\n action: 'start_post_registration'\n });\n } else if (screen.indexOf('room/') == 0) {\n var segments = screen.substring(5).split('/');\n var roomString = segments[0];\n var eventId = segments[1]; // undefined if no event id given\n\n // FIXME: sort_out caseConsistency\n var thirdPartyInvite = {\n inviteSignUrl: params.signurl,\n invitedEmail: params.email\n };\n var oobData = {\n name: params.room_name,\n avatarUrl: params.room_avatar_url,\n inviterName: params.inviter_name\n };\n\n var payload = {\n action: 'view_room',\n event_id: eventId,\n // If an event ID is given in the URL hash, notify RoomViewStore to mark\n // it as highlighted, which will propagate to RoomView and highlight the\n // associated EventTile.\n highlighted: Boolean(eventId),\n third_party_invite: thirdPartyInvite,\n oob_data: oobData\n };\n if (roomString[0] == '#') {\n payload.room_alias = roomString;\n } else {\n payload.room_id = roomString;\n }\n\n // we can't view a room unless we're logged in\n // (a guest account is fine)\n if (this.state.view === VIEWS.LOGGED_IN) {\n _dispatcher2.default.dispatch(payload);\n }\n } else if (screen.indexOf('user/') == 0) {\n var userId = screen.substring(5);\n\n // Wait for the first sync so that `getRoom` gives us a room object if it's\n // in the sync response\n var waitFor = this.firstSyncPromise ? this.firstSyncPromise.promise : _bluebird2.default.resolve();\n waitFor.then(function () {\n if (params.action === 'chat') {\n _this6._chatCreateOrReuse(userId);\n return;\n }\n\n _this6._setPage(_PageTypes2.default.UserView);\n _this6.notifyNewScreen('user/' + userId);\n var member = new _matrixJsSdk2.default.RoomMember(null, userId);\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: member\n });\n });\n } else if (screen.indexOf('group/') == 0) {\n var groupId = screen.substring(6);\n\n // TODO: Check valid group ID\n\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: groupId\n });\n } else {\n console.info(\"Ignoring showScreen for '%s'\", screen);\n }\n },\n\n notifyNewScreen: function notifyNewScreen(screen) {\n if (this.props.onNewScreen) {\n this.props.onNewScreen(screen);\n }\n },\n\n onAliasClick: function onAliasClick(event, alias) {\n event.preventDefault();\n _dispatcher2.default.dispatch({ action: 'view_room', room_alias: alias });\n },\n\n onUserClick: function onUserClick(event, userId) {\n event.preventDefault();\n\n var member = new _matrixJsSdk2.default.RoomMember(null, userId);\n if (!member) {\n return;\n }\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: member\n });\n },\n\n onGroupClick: function onGroupClick(event, groupId) {\n event.preventDefault();\n _dispatcher2.default.dispatch({ action: 'view_group', group_id: groupId });\n },\n\n onLogoutClick: function onLogoutClick(event) {\n _dispatcher2.default.dispatch({\n action: 'logout'\n });\n event.stopPropagation();\n event.preventDefault();\n },\n\n handleResize: function handleResize(e) {\n var hideLhsThreshold = 1000;\n var showLhsThreshold = 1000;\n var hideRhsThreshold = 820;\n var showRhsThreshold = 820;\n\n if (this._windowWidth > hideLhsThreshold && window.innerWidth <= hideLhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'hide_left_panel' });\n }\n if (this._windowWidth <= showLhsThreshold && window.innerWidth > showLhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'show_left_panel' });\n }\n if (this._windowWidth > hideRhsThreshold && window.innerWidth <= hideRhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'hide_right_panel' });\n }\n if (this._windowWidth <= showRhsThreshold && window.innerWidth > showRhsThreshold) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n }\n\n this._windowWidth = window.innerWidth;\n },\n\n onRoomCreated: function onRoomCreated(roomId) {\n _dispatcher2.default.dispatch({\n action: \"view_room\",\n room_id: roomId\n });\n },\n\n onRegisterClick: function onRegisterClick() {\n this.showScreen(\"register\");\n },\n\n onLoginClick: function onLoginClick() {\n this.showScreen(\"login\");\n },\n\n onForgotPasswordClick: function onForgotPasswordClick() {\n this.showScreen(\"forgot_password\");\n },\n\n onReturnToAppClick: function onReturnToAppClick() {\n // treat it the same as if the user had completed the login\n this._onLoggedIn(null);\n },\n\n // returns a promise which resolves to the new MatrixClient\n onRegistered: function onRegistered(credentials, teamToken) {\n // XXX: These both should be in state or ideally store(s) because we risk not\n // rendering the most up-to-date view of state otherwise.\n // teamToken may not be truthy\n this._teamToken = teamToken;\n this._is_registered = true;\n return Lifecycle.setLoggedIn(credentials);\n },\n\n onFinishPostRegistration: function onFinishPostRegistration() {\n // Don't confuse this with \"PageType\" which is the middle window to show\n this.setState({\n view: VIEWS.LOGGED_IN\n });\n this.showScreen(\"settings\");\n },\n\n onVersion: function onVersion(current, latest, releaseNotes) {\n this.setState({\n version: current,\n newVersion: latest,\n hasNewVersion: current !== latest,\n newVersionReleaseNotes: releaseNotes,\n checkingForUpdate: null\n });\n },\n\n onSendEvent: function onSendEvent(roomId, event) {\n var cli = _MatrixClientPeg2.default.get();\n if (!cli) {\n _dispatcher2.default.dispatch({ action: 'message_send_failed' });\n return;\n }\n\n cli.sendEvent(roomId, event.getType(), event.getContent()).done(function () {\n _dispatcher2.default.dispatch({ action: 'message_sent' });\n }, function (err) {\n _dispatcher2.default.dispatch({ action: 'message_send_failed' });\n });\n },\n\n _setPageSubtitle: function _setPageSubtitle() {\n var subtitle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n document.title = 'Riot ' + subtitle;\n },\n\n updateStatusIndicator: function updateStatusIndicator(state, prevState) {\n var notifCount = 0;\n\n var rooms = _MatrixClientPeg2.default.get().getRooms();\n for (var i = 0; i < rooms.length; ++i) {\n if (rooms[i].hasMembershipState(_MatrixClientPeg2.default.get().credentials.userId, 'invite')) {\n notifCount++;\n } else if (rooms[i].getUnreadNotificationCount()) {\n // if we were summing unread notifs:\n // notifCount += rooms[i].getUnreadNotificationCount();\n // instead, we just count the number of rooms with notifs.\n notifCount++;\n }\n }\n\n if (_PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().setErrorStatus(state === 'ERROR');\n _PlatformPeg2.default.get().setNotificationCount(notifCount);\n }\n\n var subtitle = '';\n if (state === \"ERROR\") {\n subtitle += '[' + (0, _languageHandler._t)(\"Offline\") + '] ';\n }\n if (notifCount > 0) {\n subtitle += '[' + notifCount + ']';\n }\n\n this._setPageSubtitle(subtitle);\n },\n\n onCloseAllSettings: function onCloseAllSettings() {\n _dispatcher2.default.dispatch({ action: 'close_settings' });\n },\n onServerConfigChange: function onServerConfigChange(config) {\n var newState = {};\n if (config.hsUrl) {\n newState.register_hs_url = config.hsUrl;\n }\n if (config.isUrl) {\n newState.register_is_url = config.isUrl;\n }\n this.setState(newState);\n },\n\n\n _makeRegistrationUrl: function _makeRegistrationUrl(params) {\n if (this.props.startingFragmentQueryParams.referrer) {\n params.referrer = this.props.startingFragmentQueryParams.referrer;\n }\n return this.props.makeRegistrationUrl(params);\n },\n\n _collectLoggedInView: function _collectLoggedInView(ref) {\n this._loggedInView = ref;\n },\n\n render: function render() {\n // console.log(`Rendering MatrixChat with view ${this.state.view}`);\n\n if (this.state.view === VIEWS.LOADING || this.state.view === VIEWS.LOGGING_IN) {\n var Spinner = _index2.default.getComponent('elements.Spinner');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_splash' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n // needs to be before normal PageTypes as you are logged in technically\n if (this.state.view === VIEWS.POST_REGISTRATION) {\n var PostRegistration = _index2.default.getComponent('structures.login.PostRegistration');\n return _react2.default.createElement(PostRegistration, {\n onComplete: this.onFinishPostRegistration });\n }\n\n if (this.state.view === VIEWS.LOGGED_IN) {\n // store errors stop the client syncing and require user intervention, so we'll\n // be showing a dialog. Don't show anything else.\n var isStoreError = this.state.syncError && this.state.syncError instanceof _matrixJsSdk2.default.InvalidStoreError;\n\n // `ready` and `view==LOGGED_IN` may be set before `page_type` (because the\n // latter is set via the dispatcher). If we don't yet have a `page_type`,\n // keep showing the spinner for now.\n if (this.state.ready && this.state.page_type && !isStoreError) {\n /* for now, we stuff the entirety of our props and state into the LoggedInView.\n * we should go through and figure out what we actually need to pass down, as well\n * as using something like redux to avoid having a billion bits of state kicking around.\n */\n var LoggedInView = _index2.default.getComponent('structures.LoggedInView');\n return _react2.default.createElement(LoggedInView, (0, _extends3.default)({ ref: this._collectLoggedInView, matrixClient: _MatrixClientPeg2.default.get(),\n onRoomCreated: this.onRoomCreated,\n onCloseAllSettings: this.onCloseAllSettings,\n onRegistered: this.onRegistered,\n currentRoomId: this.state.currentRoomId,\n teamToken: this._teamToken,\n showCookieBar: this.state.showCookieBar\n }, this.props, this.state));\n } else {\n // we think we are logged in, but are still waiting for the /sync to complete\n var _Spinner = _index2.default.getComponent('elements.Spinner');\n var errorBox = void 0;\n if (this.state.syncError && !isStoreError) {\n errorBox = _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_syncError' },\n (0, _ErrorUtils.messageForSyncError)(this.state.syncError)\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixChat_splash' },\n errorBox,\n _react2.default.createElement(_Spinner, null),\n _react2.default.createElement(\n 'a',\n { href: '#', className: 'mx_MatrixChat_splashButtons', onClick: this.onLogoutClick },\n (0, _languageHandler._t)('Logout')\n )\n );\n }\n }\n\n if (this.state.view === VIEWS.REGISTER) {\n var Registration = _index2.default.getComponent('structures.login.Registration');\n return _react2.default.createElement(Registration, {\n clientSecret: this.state.register_client_secret,\n sessionId: this.state.register_session_id,\n idSid: this.state.register_id_sid,\n email: this.props.startingFragmentQueryParams.email,\n referrer: this.props.startingFragmentQueryParams.referrer,\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n brand: this.props.config.brand,\n teamServerConfig: this.props.config.teamServerConfig,\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n makeRegistrationUrl: this._makeRegistrationUrl,\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName,\n onLoggedIn: this.onRegistered,\n onLoginClick: this.onLoginClick,\n onRegisterClick: this.onRegisterClick,\n onCancelClick: _MatrixClientPeg2.default.get() ? this.onReturnToAppClick : null,\n onServerConfigChange: this.onServerConfigChange\n });\n }\n\n if (this.state.view === VIEWS.FORGOT_PASSWORD) {\n var ForgotPassword = _index2.default.getComponent('structures.login.ForgotPassword');\n return _react2.default.createElement(ForgotPassword, {\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n onComplete: this.onLoginClick,\n onRegisterClick: this.onRegisterClick,\n onLoginClick: this.onLoginClick });\n }\n\n if (this.state.view === VIEWS.LOGIN) {\n var Login = _index2.default.getComponent('structures.login.Login');\n return _react2.default.createElement(Login, {\n onLoggedIn: Lifecycle.setLoggedIn,\n onRegisterClick: this.onRegisterClick,\n defaultHsUrl: this.getDefaultHsUrl(),\n defaultIsUrl: this.getDefaultIsUrl(),\n customHsUrl: this.getCurrentHsUrl(),\n customIsUrl: this.getCurrentIsUrl(),\n fallbackHsUrl: this.getFallbackHsUrl(),\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName,\n onForgotPasswordClick: this.onForgotPasswordClick,\n enableGuest: this.props.enableGuest,\n onCancelClick: _MatrixClientPeg2.default.get() ? this.onReturnToAppClick : null,\n onServerConfigChange: this.onServerConfigChange\n });\n }\n\n console.error('Unknown view ' + this.state.view);\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=MatrixChat.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DecryptionFailureTracker = exports.DecryptionFailure = undefined;\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends3 = require('babel-runtime/helpers/extends');\n\nvar _extends4 = _interopRequireDefault(_extends3);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _map = require('babel-runtime/core-js/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DecryptionFailure = exports.DecryptionFailure = function DecryptionFailure(failedEventId, errorCode) {\n (0, _classCallCheck3.default)(this, DecryptionFailure);\n\n this.failedEventId = failedEventId;\n this.errorCode = errorCode;\n this.ts = Date.now();\n};\n\nvar DecryptionFailureTracker = exports.DecryptionFailureTracker = function () {\n\n /**\n * Create a new DecryptionFailureTracker.\n *\n * Call `eventDecrypted(event, err)` on this instance when an event is decrypted.\n *\n * Call `start()` to start the tracker, and `stop()` to stop tracking.\n *\n * @param {function} fn The tracking function, which will be called when failures\n * are tracked. The function should have a signature `(count, trackedErrorCode) => {...}`,\n * where `count` is the number of failures and `errorCode` matches the `.code` of\n * provided DecryptionError errors (by default, unless `errorCodeMapFn` is specified.\n * @param {function?} errorCodeMapFn The function used to map error codes to the\n * trackedErrorCode. If not provided, the `.code` of errors will be used.\n */\n\n\n // Call `checkFailures` every `CHECK_INTERVAL_MS`.\n\n\n // Event IDs of failures that were tracked previously\n\n // Array of items of type DecryptionFailure. Every `CHECK_INTERVAL_MS`, this list\n // is checked for failures that happened > `GRACE_PERIOD_MS` ago. Those that did\n // are accumulated in `failureCounts`.\n function DecryptionFailureTracker(fn, errorCodeMapFn) {\n (0, _classCallCheck3.default)(this, DecryptionFailureTracker);\n this.failures = [];\n this.failureCounts = {\n // [errorCode]: 42\n };\n this.trackedEventHashMap = {\n // [eventId]: true\n };\n this.checkInterval = null;\n this.trackInterval = null;\n\n if (!fn || typeof fn !== 'function') {\n throw new Error('DecryptionFailureTracker requires tracking function');\n }\n\n if (errorCodeMapFn && typeof errorCodeMapFn !== 'function') {\n throw new Error('DecryptionFailureTracker second constructor argument should be a function');\n }\n\n this._trackDecryptionFailure = fn;\n this._mapErrorCode = errorCodeMapFn;\n }\n\n // loadTrackedEventHashMap() {\n // this.trackedEventHashMap = JSON.parse(localStorage.getItem('mx-decryption-failure-event-id-hashes')) || {};\n // }\n\n // saveTrackedEventHashMap() {\n // localStorage.setItem('mx-decryption-failure-event-id-hashes', JSON.stringify(this.trackedEventHashMap));\n // }\n\n // Give events a chance to be decrypted by waiting `GRACE_PERIOD_MS` before counting\n // the failure in `failureCounts`.\n\n\n // Spread the load on `Analytics` by tracking at a low frequency, `TRACK_INTERVAL_MS`.\n\n\n // Set to an interval ID when `start` is called\n\n\n // A histogram of the number of failures that will be tracked at the next tracking\n // interval, split by failure error code.\n\n\n (0, _createClass3.default)(DecryptionFailureTracker, [{\n key: 'eventDecrypted',\n value: function eventDecrypted(e, err) {\n if (err) {\n this.addDecryptionFailure(new DecryptionFailure(e.getId(), err.code));\n } else {\n // Could be an event in the failures, remove it\n this.removeDecryptionFailuresForEvent(e);\n }\n }\n }, {\n key: 'addDecryptionFailure',\n value: function addDecryptionFailure(failure) {\n this.failures.push(failure);\n }\n }, {\n key: 'removeDecryptionFailuresForEvent',\n value: function removeDecryptionFailuresForEvent(e) {\n this.failures = this.failures.filter(function (f) {\n return f.failedEventId !== e.getId();\n });\n }\n\n /**\n * Start checking for and tracking failures.\n */\n\n }, {\n key: 'start',\n value: function start() {\n var _this = this;\n\n this.checkInterval = setInterval(function () {\n return _this.checkFailures(Date.now());\n }, DecryptionFailureTracker.CHECK_INTERVAL_MS);\n\n this.trackInterval = setInterval(function () {\n return _this.trackFailures();\n }, DecryptionFailureTracker.TRACK_INTERVAL_MS);\n }\n\n /**\n * Clear state and stop checking for and tracking failures.\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n clearInterval(this.checkInterval);\n clearInterval(this.trackInterval);\n\n this.failures = [];\n this.failureCounts = {};\n }\n\n /**\n * Mark failures that occured before nowTs - GRACE_PERIOD_MS as failures that should be\n * tracked. Only mark one failure per event ID.\n * @param {number} nowTs the timestamp that represents the time now.\n */\n\n }, {\n key: 'checkFailures',\n value: function checkFailures(nowTs) {\n var _this2 = this;\n\n var failuresGivenGrace = [];\n var failuresNotReady = [];\n while (this.failures.length > 0) {\n var f = this.failures.shift();\n if (nowTs > f.ts + DecryptionFailureTracker.GRACE_PERIOD_MS) {\n failuresGivenGrace.push(f);\n } else {\n failuresNotReady.push(f);\n }\n }\n this.failures = failuresNotReady;\n\n // Only track one failure per event\n var dedupedFailuresMap = failuresGivenGrace.reduce(function (map, failure) {\n if (!_this2.trackedEventHashMap[failure.failedEventId]) {\n return map.set(failure.failedEventId, failure);\n } else {\n return map;\n }\n },\n // Use a map to preseve key ordering\n new _map2.default());\n\n var trackedEventIds = [].concat((0, _toConsumableArray3.default)(dedupedFailuresMap.keys()));\n\n this.trackedEventHashMap = trackedEventIds.reduce(function (result, eventId) {\n return (0, _extends4.default)({}, result, (0, _defineProperty3.default)({}, eventId, true));\n }, this.trackedEventHashMap);\n\n // Commented out for now for expediency, we need to consider unbound nature of storing\n // this in localStorage\n // this.saveTrackedEventHashMap();\n\n var dedupedFailures = dedupedFailuresMap.values();\n\n this._aggregateFailures(dedupedFailures);\n }\n }, {\n key: '_aggregateFailures',\n value: function _aggregateFailures(failures) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(failures), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var failure = _step.value;\n\n var errorCode = failure.errorCode;\n this.failureCounts[errorCode] = (this.failureCounts[errorCode] || 0) + 1;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * If there are failures that should be tracked, call the given trackDecryptionFailure\n * function with the number of failures that should be tracked.\n */\n\n }, {\n key: 'trackFailures',\n value: function trackFailures() {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this.failureCounts)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var errorCode = _step2.value;\n\n if (this.failureCounts[errorCode] > 0) {\n var trackedErrorCode = this._mapErrorCode ? this._mapErrorCode(errorCode) : errorCode;\n\n this._trackDecryptionFailure(this.failureCounts[errorCode], trackedErrorCode);\n this.failureCounts[errorCode] = 0;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }]);\n return DecryptionFailureTracker;\n}();\n\nDecryptionFailureTracker.TRACK_INTERVAL_MS = 60000;\nDecryptionFailureTracker.CHECK_INTERVAL_MS = 5000;\nDecryptionFailureTracker.GRACE_PERIOD_MS = 60000;\n//# sourceMappingURL=DecryptionFailureTracker.js.map","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _maxSafeInteger = require('babel-runtime/core-js/number/max-safe-integer');\n\nvar _maxSafeInteger2 = _interopRequireDefault(_maxSafeInteger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction tsOfNewestEvent(room) {\n if (room.timeline.length) {\n return room.timeline[room.timeline.length - 1].getTs();\n } else {\n return _maxSafeInteger2.default;\n }\n}\n\nfunction mostRecentActivityFirst(roomList) {\n return roomList.sort(function (a, b) {\n return tsOfNewestEvent(b) - tsOfNewestEvent(a);\n });\n}\n\nmodule.exports = {\n mostRecentActivityFirst: mostRecentActivityFirst\n};\n//# sourceMappingURL=RoomListSorter.js.map","\"use strict\";\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require(\"./MatrixClientPeg\");\nvar dis = require(\"./dispatcher\");\n\n// Time in ms after that a user is considered as unavailable/away\nvar UNAVAILABLE_TIME_MS = 3 * 60 * 1000; // 3 mins\nvar PRESENCE_STATES = [\"online\", \"offline\", \"unavailable\"];\n\nvar Presence = function () {\n function Presence() {\n (0, _classCallCheck3.default)(this, Presence);\n }\n\n (0, _createClass3.default)(Presence, [{\n key: \"start\",\n\n\n /**\n * Start listening the user activity to evaluate his presence state.\n * Any state change will be sent to the Home Server.\n */\n value: function start() {\n this.running = true;\n if (undefined === this.state) {\n this._resetTimer();\n this.dispatcherRef = dis.register(this._onAction.bind(this));\n }\n }\n\n /**\n * Stop tracking user activity\n */\n\n }, {\n key: \"stop\",\n value: function stop() {\n this.running = false;\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = undefined;\n dis.unregister(this.dispatcherRef);\n }\n this.state = undefined;\n }\n\n /**\n * Get the current presence state.\n * @returns {string} the presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"getState\",\n value: function getState() {\n return this.state;\n }\n\n /**\n * Set the presence state.\n * If the state has changed, the Home Server will be notified.\n * @param {string} newState the new presence state (see PRESENCE enum)\n */\n\n }, {\n key: \"setState\",\n value: function setState(newState) {\n if (newState === this.state) {\n return;\n }\n if (PRESENCE_STATES.indexOf(newState) === -1) {\n throw new Error(\"Bad presence state: \" + newState);\n }\n if (!this.running) {\n return;\n }\n var old_state = this.state;\n this.state = newState;\n\n if (MatrixClientPeg.get().isGuest()) {\n return; // don't try to set presence when a guest; it won't work.\n }\n\n var self = this;\n MatrixClientPeg.get().setPresence(this.state).done(function () {\n console.log(\"Presence: %s\", newState);\n }, function (err) {\n console.error(\"Failed to set presence: %s\", err);\n self.state = old_state;\n });\n }\n\n /**\n * Callback called when the user made no action on the page for UNAVAILABLE_TIME ms.\n * @private\n */\n\n }, {\n key: \"_onUnavailableTimerFire\",\n value: function _onUnavailableTimerFire() {\n this.setState(\"unavailable\");\n }\n }, {\n key: \"_onAction\",\n value: function _onAction(payload) {\n if (payload.action === \"user_activity\") {\n this._resetTimer();\n }\n }\n\n /**\n * Callback called when the user made an action on the page\n * @private\n */\n\n }, {\n key: \"_resetTimer\",\n value: function _resetTimer() {\n var self = this;\n this.setState(\"online\");\n // Re-arm the timer\n clearTimeout(this.timer);\n this.timer = setTimeout(function () {\n self._onUnavailableTimerFire();\n }, UNAVAILABLE_TIME_MS);\n }\n }]);\n return Presence;\n}();\n\nmodule.exports = new Presence();\n//# sourceMappingURL=Presence.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar KeyRequestHandler = function () {\n function KeyRequestHandler(matrixClient) {\n (0, _classCallCheck3.default)(this, KeyRequestHandler);\n\n this._matrixClient = matrixClient;\n\n // the user/device for which we currently have a dialog open\n this._currentUser = null;\n this._currentDevice = null;\n\n // userId -> deviceId -> [keyRequest]\n this._pendingKeyRequests = (0, _create2.default)(null);\n }\n\n (0, _createClass3.default)(KeyRequestHandler, [{\n key: 'handleKeyRequest',\n value: function handleKeyRequest(keyRequest) {\n var userId = keyRequest.userId;\n var deviceId = keyRequest.deviceId;\n var requestId = keyRequest.requestId;\n\n if (!this._pendingKeyRequests[userId]) {\n this._pendingKeyRequests[userId] = (0, _create2.default)(null);\n }\n if (!this._pendingKeyRequests[userId][deviceId]) {\n this._pendingKeyRequests[userId][deviceId] = [];\n }\n\n // check if we already have this request\n var requests = this._pendingKeyRequests[userId][deviceId];\n if (requests.find(function (r) {\n return r.requestId === requestId;\n })) {\n console.log(\"Already have this key request, ignoring\");\n return;\n }\n\n requests.push(keyRequest);\n\n if (this._currentUser) {\n // ignore for now\n console.log(\"Key request, but we already have a dialog open\");\n return;\n }\n\n this._processNextRequest();\n }\n }, {\n key: 'handleKeyRequestCancellation',\n value: function handleKeyRequestCancellation(cancellation) {\n // see if we can find the request in the queue\n var userId = cancellation.userId;\n var deviceId = cancellation.deviceId;\n var requestId = cancellation.requestId;\n\n if (userId === this._currentUser && deviceId === this._currentDevice) {\n console.log(\"room key request cancellation for the user we currently have a\" + \" dialog open for\");\n // TODO: update the dialog. For now, we just ignore the\n // cancellation.\n return;\n }\n\n if (!this._pendingKeyRequests[userId]) {\n return;\n }\n var requests = this._pendingKeyRequests[userId][deviceId];\n if (!requests) {\n return;\n }\n var idx = requests.findIndex(function (r) {\n return r.requestId === requestId;\n });\n if (idx < 0) {\n return;\n }\n console.log(\"Forgetting room key request\");\n requests.splice(idx, 1);\n if (requests.length === 0) {\n delete this._pendingKeyRequests[userId][deviceId];\n if ((0, _keys2.default)(this._pendingKeyRequests[userId]).length === 0) {\n delete this._pendingKeyRequests[userId];\n }\n }\n }\n }, {\n key: '_processNextRequest',\n value: function _processNextRequest() {\n var _this = this;\n\n var userId = (0, _keys2.default)(this._pendingKeyRequests)[0];\n if (!userId) {\n return;\n }\n var deviceId = (0, _keys2.default)(this._pendingKeyRequests[userId])[0];\n if (!deviceId) {\n return;\n }\n console.log('Starting KeyShareDialog for ' + userId + ':' + deviceId);\n\n var finished = function finished(r) {\n _this._currentUser = null;\n _this._currentDevice = null;\n\n if (r) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(_this._pendingKeyRequests[userId][deviceId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var req = _step.value;\n\n req.share();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n delete _this._pendingKeyRequests[userId][deviceId];\n if ((0, _keys2.default)(_this._pendingKeyRequests[userId]).length === 0) {\n delete _this._pendingKeyRequests[userId];\n }\n\n _this._processNextRequest();\n };\n\n var KeyShareDialog = _index2.default.getComponent(\"dialogs.KeyShareDialog\");\n _Modal2.default.createTrackedDialog('Key Share', 'Process Next Request', KeyShareDialog, {\n matrixClient: this._matrixClient,\n userId: userId,\n deviceId: deviceId,\n onFinished: finished\n });\n this._currentUser = userId;\n this._currentDevice = deviceId;\n }\n }]);\n return KeyRequestHandler;\n}();\n\nexports.default = KeyRequestHandler;\nmodule.exports = exports['default'];\n//# sourceMappingURL=KeyRequestHandler.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startAnyRegistrationFlow = undefined;\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\n/**\n * Starts either the ILAG or full registration flow, depending\n * on what the HS supports\n *\n * @param {object} options\n * @param {bool} options.go_home_on_cancel If true, goes to\n * the hame page if the user cancels the action\n */\nvar startAnyRegistrationFlow = exports.startAnyRegistrationFlow = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(options) {\n var flows, hasIlagFlow, QuestionDialog;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (options === undefined) options = {};\n _context.next = 3;\n return (0, _bluebird.resolve)(_getRegistrationFlows());\n\n case 3:\n flows = _context.sent;\n\n // look for an ILAG compatible flow. We define this as one\n // which has only dummy or recaptcha flows. In practice it\n // would support any stage InteractiveAuth supports, just not\n // ones like email & msisdn which require the user to supply\n // the relevant details in advance. We err on the side of\n // caution though.\n hasIlagFlow = flows.some(function (flow) {\n return flow.stages.every(function (stage) {\n return ['m.login.dummy', 'm.login.recaptcha'].includes(stage);\n });\n });\n\n\n if (hasIlagFlow) {\n _dispatcher2.default.dispatch({\n action: 'view_set_mxid',\n go_home_on_cancel: options.go_home_on_cancel\n });\n } else {\n QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n _Modal2.default.createTrackedDialog('Registration required', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Registration Required\"),\n description: (0, _languageHandler._t)(\"You need to register to do this. Would you like to register now?\"),\n button: (0, _languageHandler._t)(\"Register\"),\n onFinished: function onFinished(proceed) {\n if (proceed) {\n _dispatcher2.default.dispatch({ action: 'start_registration' });\n } else if (options.go_home_on_cancel) {\n _dispatcher2.default.dispatch({ action: 'view_home_page' });\n }\n }\n });\n }\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function startAnyRegistrationFlow(_x) {\n return _ref.apply(this, arguments);\n };\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * Utility code for registering with a homeserver\n * Note that this is currently *not* used by the actual\n * registration code.\n */\n\nvar _getRegistrationFlows = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n _context2.next = 3;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().register(null, null, undefined, {}, {}));\n\n case 3:\n console.log(\"Register request succeeded when it should have returned 401!\");\n _context2.next = 11;\n break;\n\n case 6:\n _context2.prev = 6;\n _context2.t0 = _context2['catch'](0);\n\n if (!(_context2.t0.httpStatus === 401)) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt('return', _context2.t0.data.flows);\n\n case 10:\n throw _context2.t0;\n\n case 11:\n throw new Error(\"Register request succeeded when it should have returned 401!\");\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[0, 6]]);\n }));\n\n return function _getRegistrationFlows() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('./MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n//# sourceMappingURL=Registration.js.map","'use strict';\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _dispatcher = require('../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _utils = require('flux/utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar INITIAL_STATE = {\n deferred_action: null\n};\n\n/**\n * A class for storing application state to do with login/registration. This is a simple\n * flux store that listens for actions and updates its state accordingly, informing any\n * listeners (views) of state changes.\n */\n\nvar LifecycleStore = function (_Store) {\n (0, _inherits3.default)(LifecycleStore, _Store);\n\n function LifecycleStore() {\n (0, _classCallCheck3.default)(this, LifecycleStore);\n\n // Initialise state\n var _this = (0, _possibleConstructorReturn3.default)(this, (LifecycleStore.__proto__ || (0, _getPrototypeOf2.default)(LifecycleStore)).call(this, _dispatcher2.default));\n\n _this._state = INITIAL_STATE;\n return _this;\n }\n\n (0, _createClass3.default)(LifecycleStore, [{\n key: '_setState',\n value: function _setState(newState) {\n this._state = (0, _assign2.default)(this._state, newState);\n this.__emitChange();\n }\n }, {\n key: '__onDispatch',\n value: function __onDispatch(payload) {\n switch (payload.action) {\n case 'do_after_sync_prepared':\n this._setState({\n deferred_action: payload.deferred_action\n });\n break;\n case 'cancel_after_sync_prepared':\n this._setState({\n deferred_action: null\n });\n break;\n case 'sync_state':\n {\n if (payload.state !== 'PREPARED') {\n break;\n }\n if (!this._state.deferred_action) break;\n var deferredAction = (0, _assign2.default)({}, this._state.deferred_action);\n this._setState({\n deferred_action: null\n });\n _dispatcher2.default.dispatch(deferredAction);\n break;\n }\n case 'on_logged_out':\n this.reset();\n break;\n }\n }\n }, {\n key: 'reset',\n value: function reset() {\n this._state = (0, _assign2.default)({}, INITIAL_STATE);\n }\n }]);\n return LifecycleStore;\n}(_utils.Store);\n\nvar singletonLifecycleStore = null;\nif (!singletonLifecycleStore) {\n singletonLifecycleStore = new LifecycleStore();\n}\nmodule.exports = singletonLifecycleStore;\n//# sourceMappingURL=LifecycleStore.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _shouldHideEvent = require('../../shouldHideEvent');\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nvar _DateUtils = require('../../DateUtils');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CONTINUATION_MAX_INTERVAL = 5 * 60 * 1000; // 5 minutes\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar continuedTypes = ['m.sticker', 'm.room.message'];\n\n/* (almost) stateless UI component which builds the event tiles in the room timeline.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'MessagePanel',\n\n propTypes: {\n // true to give the component a 'display: none' style.\n hidden: _propTypes2.default.bool,\n\n // true to show a spinner at the top of the timeline to indicate\n // back-pagination in progress\n backPaginating: _propTypes2.default.bool,\n\n // true to show a spinner at the end of the timeline to indicate\n // forward-pagination in progress\n forwardPaginating: _propTypes2.default.bool,\n\n // the list of MatrixEvents to display\n events: _propTypes2.default.array.isRequired,\n\n // ID of an event to highlight. If undefined, no event will be highlighted.\n highlightedEventId: _propTypes2.default.string,\n\n // Should we show URL Previews\n showUrlPreview: _propTypes2.default.bool,\n\n // event after which we should show a read marker\n readMarkerEventId: _propTypes2.default.string,\n\n // whether the read marker should be visible\n readMarkerVisible: _propTypes2.default.bool,\n\n // the userid of our user. This is used to suppress the read marker\n // for pending messages.\n ourUserId: _propTypes2.default.string,\n\n // true to suppress the date at the start of the timeline\n suppressFirstDateSeparator: _propTypes2.default.bool,\n\n // whether to show read receipts\n showReadReceipts: _propTypes2.default.bool,\n\n // true if updates to the event list should cause the scroll panel to\n // scroll down when we are at the bottom of the window. See ScrollPanel\n // for more details.\n stickyBottom: _propTypes2.default.bool,\n\n // callback which is called when the panel is scrolled.\n onScroll: _propTypes2.default.func,\n\n // callback which is called when more content is needed.\n onFillRequest: _propTypes2.default.func,\n\n // className for the panel\n className: _propTypes2.default.string.isRequired,\n\n // shape parameter to be passed to EventTiles\n tileShape: _propTypes2.default.string,\n\n // show twelve hour timestamps\n isTwelveHour: _propTypes2.default.bool,\n\n // show timestamps always\n alwaysShowTimestamps: _propTypes2.default.bool\n },\n\n componentWillMount: function componentWillMount() {\n // the event after which we put a visible unread marker on the last\n // render cycle; null if readMarkerVisible was false or the RM was\n // suppressed (eg because it was at the end of the timeline)\n this.currentReadMarkerEventId = null;\n\n // the event after which we are showing a disappearing read marker\n // animation\n this.currentGhostEventId = null;\n\n // opaque readreceipt info for each userId; used by ReadReceiptMarker\n // to manage its animations\n this._readReceiptMap = {};\n\n // Remember the read marker ghost node so we can do the cleanup that\n // Velocity requires\n this._readMarkerGhostNode = null;\n\n this._isMounted = true;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._isMounted = false;\n },\n\n /* get the DOM node representing the given event */\n getNodeForEventId: function getNodeForEventId(eventId) {\n if (!this.eventNodes) {\n return undefined;\n }\n\n return this.eventNodes[eventId];\n },\n\n /* return true if the content is fully scrolled down right now; else false.\n */\n isAtBottom: function isAtBottom() {\n return this.refs.scrollPanel && this.refs.scrollPanel.isAtBottom();\n },\n\n /* get the current scroll state. See ScrollPanel.getScrollState for\n * details.\n *\n * returns null if we are not mounted.\n */\n getScrollState: function getScrollState() {\n if (!this.refs.scrollPanel) {\n return null;\n }\n return this.refs.scrollPanel.getScrollState();\n },\n\n // returns one of:\n //\n // null: there is no read marker\n // -1: read marker is above the window\n // 0: read marker is within the window\n // +1: read marker is below the window\n getReadMarkerPosition: function getReadMarkerPosition() {\n var readMarker = this.refs.readMarkerNode;\n var messageWrapper = this.refs.scrollPanel;\n\n if (!readMarker || !messageWrapper) {\n return null;\n }\n\n var wrapperRect = _reactDom2.default.findDOMNode(messageWrapper).getBoundingClientRect();\n var readMarkerRect = readMarker.getBoundingClientRect();\n\n // the read-marker pretends to have zero height when it is actually\n // two pixels high; +2 here to account for that.\n if (readMarkerRect.bottom + 2 < wrapperRect.top) {\n return -1;\n } else if (readMarkerRect.top < wrapperRect.bottom) {\n return 0;\n } else {\n return 1;\n }\n },\n\n /* jump to the top of the content.\n */\n scrollToTop: function scrollToTop() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToTop();\n }\n },\n\n /* jump to the bottom of the content.\n */\n scrollToBottom: function scrollToBottom() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToBottom();\n }\n },\n\n /**\n * Page up/down.\n *\n * @param {number} mult: -1 to page up, +1 to page down\n */\n scrollRelative: function scrollRelative(mult) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollRelative(mult);\n }\n },\n\n /**\n * Scroll up/down in response to a scroll key\n *\n * @param {KeyboardEvent} ev: the keyboard event to handle\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.handleScrollKey(ev);\n }\n },\n\n /* jump to the given event id.\n *\n * offsetBase gives the reference point for the pixelOffset. 0 means the\n * top of the container, 1 means the bottom, and fractional values mean\n * somewhere in the middle. If omitted, it defaults to 0.\n *\n * pixelOffset gives the number of pixels *above* the offsetBase that the\n * node (specifically, the bottom of it) will be positioned. If omitted, it\n * defaults to 0.\n */\n scrollToEvent: function scrollToEvent(eventId, pixelOffset, offsetBase) {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.scrollToToken(eventId, pixelOffset, offsetBase);\n }\n },\n\n /* check the scroll state and send out pagination requests if necessary.\n */\n checkFillState: function checkFillState() {\n if (this.refs.scrollPanel) {\n this.refs.scrollPanel.checkFillState();\n }\n },\n\n _isUnmounting: function _isUnmounting() {\n return !this._isMounted;\n },\n\n // TODO: Implement granular (per-room) hide options\n _shouldShowEvent: function _shouldShowEvent(mxEv) {\n if (mxEv.sender && _MatrixClientPeg2.default.get().isUserIgnored(mxEv.sender.userId)) {\n return false; // ignored = no show (only happens if the ignore happens after an event was received)\n }\n\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n if (!EventTile.haveTileForEvent(mxEv)) {\n return false; // no tile = no show\n }\n\n // Always show highlighted event\n if (this.props.highlightedEventId === mxEv.getId()) return true;\n\n return !(0, _shouldHideEvent2.default)(mxEv);\n },\n\n _getEventTiles: function _getEventTiles() {\n var _this = this;\n\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var MemberEventListSummary = _index2.default.getComponent('views.elements.MemberEventListSummary');\n\n this.eventNodes = {};\n\n var visible = false;\n var i = void 0;\n\n // first figure out which is the last event in the list which we're\n // actually going to show; this allows us to behave slightly\n // differently for the last event in the list. (eg show timestamp)\n //\n // we also need to figure out which is the last event we show which isn't\n // a local echo, to manage the read-marker.\n var lastShownEvent = void 0;\n\n var lastShownNonLocalEchoIndex = -1;\n for (i = this.props.events.length - 1; i >= 0; i--) {\n var mxEv = this.props.events[i];\n if (!this._shouldShowEvent(mxEv)) {\n continue;\n }\n\n if (lastShownEvent === undefined) {\n lastShownEvent = mxEv;\n }\n\n if (mxEv.status) {\n // this is a local echo\n continue;\n }\n\n lastShownNonLocalEchoIndex = i;\n break;\n }\n\n var ret = [];\n\n var prevEvent = null; // the last event we showed\n\n // assume there is no read marker until proven otherwise\n var readMarkerVisible = false;\n\n // if the readmarker has moved, cancel any active ghost.\n if (this.currentReadMarkerEventId && this.props.readMarkerEventId && this.props.readMarkerVisible && this.currentReadMarkerEventId !== this.props.readMarkerEventId) {\n this.currentGhostEventId = null;\n }\n\n var isMembershipChange = function isMembershipChange(e) {\n return e.getType() === 'm.room.member';\n };\n\n for (i = 0; i < this.props.events.length; i++) {\n var _mxEv = this.props.events[i];\n var eventId = _mxEv.getId();\n var last = _mxEv === lastShownEvent;\n\n var wantTile = this._shouldShowEvent(_mxEv);\n\n // Wrap consecutive member events in a ListSummary, ignore if redacted\n if (isMembershipChange(_mxEv) && wantTile) {\n var readMarkerInMels = false;\n var ts1 = _mxEv.getTs();\n // Ensure that the key of the MemberEventListSummary does not change with new\n // member events. This will prevent it from being re-created unnecessarily, and\n // instead will allow new props to be provided. In turn, the shouldComponentUpdate\n // method on MELS can be used to prevent unnecessary renderings.\n //\n // Whilst back-paginating with a MELS at the top of the panel, prevEvent will be null,\n // so use the key \"membereventlistsummary-initial\". Otherwise, use the ID of the first\n // membership event, which will not change during forward pagination.\n var key = \"membereventlistsummary-\" + (prevEvent ? _mxEv.getId() : \"initial\");\n\n if (this._wantsDateSeparator(prevEvent, _mxEv.getDate())) {\n var dateSeparator = _react2.default.createElement(\n 'li',\n { key: ts1 + '~' },\n _react2.default.createElement(DateSeparator, { key: ts1 + '~', ts: ts1 })\n );\n ret.push(dateSeparator);\n }\n\n // If RM event is the first in the MELS, append the RM after MELS\n if (_mxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n\n var summarisedEvents = [_mxEv];\n for (; i + 1 < this.props.events.length; i++) {\n var collapsedMxEv = this.props.events[i + 1];\n\n // Ignore redacted/hidden member events\n if (!this._shouldShowEvent(collapsedMxEv)) {\n // If this hidden event is the RM and in or at end of a MELS put RM after MELS.\n if (collapsedMxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n continue;\n }\n\n if (!isMembershipChange(collapsedMxEv) || this._wantsDateSeparator(_mxEv, collapsedMxEv.getDate())) {\n break;\n }\n\n // If RM event is in MELS mark it as such and the RM will be appended after MELS.\n if (collapsedMxEv.getId() === this.props.readMarkerEventId) {\n readMarkerInMels = true;\n }\n\n summarisedEvents.push(collapsedMxEv);\n }\n\n var highlightInMels = false;\n\n // At this point, i = the index of the last event in the summary sequence\n var eventTiles = summarisedEvents.map(function (e) {\n if (e.getId() === _this.props.highlightedEventId) {\n highlightInMels = true;\n }\n // In order to prevent DateSeparators from appearing in the expanded form\n // of MemberEventListSummary, render each member event as if the previous\n // one was itself. This way, the timestamp of the previous event === the\n // timestamp of the current event, and no DateSeperator is inserted.\n return _this._getTilesForEvent(e, e, e === lastShownEvent);\n }).reduce(function (a, b) {\n return a.concat(b);\n });\n\n if (eventTiles.length === 0) {\n eventTiles = null;\n }\n\n ret.push(_react2.default.createElement(\n MemberEventListSummary,\n { key: key,\n events: summarisedEvents,\n onToggle: this._onWidgetLoad // Update scroll state\n , startExpanded: highlightInMels\n },\n eventTiles\n ));\n\n if (readMarkerInMels) {\n ret.push(this._getReadMarkerTile(visible));\n }\n\n prevEvent = _mxEv;\n continue;\n }\n\n if (wantTile) {\n // make sure we unpack the array returned by _getTilesForEvent,\n // otherwise react will auto-generate keys and we will end up\n // replacing all of the DOM elements every time we paginate.\n ret.push.apply(ret, (0, _toConsumableArray3.default)(this._getTilesForEvent(prevEvent, _mxEv, last)));\n prevEvent = _mxEv;\n }\n\n var isVisibleReadMarker = false;\n\n if (eventId === this.props.readMarkerEventId) {\n visible = this.props.readMarkerVisible;\n\n // if the read marker comes at the end of the timeline (except\n // for local echoes, which are excluded from RMs, because they\n // don't have useful event ids), we don't want to show it, but\n // we still want to create the <li/> for it so that the\n // algorithms which depend on its position on the screen aren't\n // confused.\n if (i >= lastShownNonLocalEchoIndex) {\n visible = false;\n }\n ret.push(this._getReadMarkerTile(visible));\n readMarkerVisible = visible;\n isVisibleReadMarker = visible;\n }\n\n // XXX: there should be no need for a ghost tile - we should just use a\n // a dispatch (user_activity_end) to start the RM animation.\n if (eventId === this.currentGhostEventId) {\n // if we're showing an animation, continue to show it.\n ret.push(this._getReadMarkerGhostTile());\n } else if (!isVisibleReadMarker && eventId === this.currentReadMarkerEventId) {\n // there is currently a read-up-to marker at this point, but no\n // more. Show an animation of it disappearing.\n ret.push(this._getReadMarkerGhostTile());\n this.currentGhostEventId = eventId;\n }\n }\n\n this.currentReadMarkerEventId = readMarkerVisible ? this.props.readMarkerEventId : null;\n return ret;\n },\n\n _getTilesForEvent: function _getTilesForEvent(prevEvent, mxEv, last) {\n var EventTile = _index2.default.getComponent('rooms.EventTile');\n var DateSeparator = _index2.default.getComponent('messages.DateSeparator');\n var ret = [];\n\n // is this a continuation of the previous message?\n var continuation = false;\n\n // Some events should appear as continuations from previous events of\n // different types.\n\n var eventTypeContinues = prevEvent !== null && continuedTypes.includes(mxEv.getType()) && continuedTypes.includes(prevEvent.getType());\n\n // if there is a previous event and it has the same sender as this event\n // and the types are the same/is in continuedTypes and the time between them is <= CONTINUATION_MAX_INTERVAL\n if (prevEvent !== null && prevEvent.sender && mxEv.sender && mxEv.sender.userId === prevEvent.sender.userId && (mxEv.getType() === prevEvent.getType() || eventTypeContinues) && mxEv.getTs() - prevEvent.getTs() <= CONTINUATION_MAX_INTERVAL) {\n continuation = true;\n }\n\n /*\n // Work out if this is still a continuation, as we are now showing commands\n // and /me messages with their own little avatar. The case of a change of\n // event type (commands) is handled above, but we need to handle the /me\n // messages seperately as they have a msgtype of 'm.emote' but are classed\n // as normal messages\n if (prevEvent !== null && prevEvent.sender && mxEv.sender\n && mxEv.sender.userId === prevEvent.sender.userId\n && mxEv.getType() == prevEvent.getType()\n && prevEvent.getContent().msgtype === 'm.emote') {\n continuation = false;\n }\n */\n\n // local echoes have a fake date, which could even be yesterday. Treat them\n // as 'today' for the date separators.\n var ts1 = mxEv.getTs();\n var eventDate = mxEv.getDate();\n if (mxEv.status) {\n eventDate = new Date();\n ts1 = eventDate.getTime();\n }\n\n // do we need a date separator since the last event?\n if (this._wantsDateSeparator(prevEvent, eventDate)) {\n var dateSeparator = _react2.default.createElement(\n 'li',\n { key: ts1 },\n _react2.default.createElement(DateSeparator, { key: ts1, ts: ts1 })\n );\n ret.push(dateSeparator);\n continuation = false;\n }\n\n var eventId = mxEv.getId();\n var highlight = eventId === this.props.highlightedEventId;\n\n // we can't use local echoes as scroll tokens, because their event IDs change.\n // Local echos have a send \"status\".\n var scrollToken = mxEv.status ? undefined : eventId;\n\n var readReceipts = void 0;\n if (this.props.showReadReceipts) {\n readReceipts = this._getReadReceiptsForEvent(mxEv);\n }\n ret.push(_react2.default.createElement(\n 'li',\n { key: eventId,\n ref: this._collectEventNode.bind(this, eventId),\n 'data-scroll-tokens': scrollToken },\n _react2.default.createElement(EventTile, { mxEvent: mxEv, continuation: continuation,\n isRedacted: mxEv.isRedacted(),\n onWidgetLoad: this._onWidgetLoad,\n readReceipts: readReceipts,\n readReceiptMap: this._readReceiptMap,\n showUrlPreview: this.props.showUrlPreview,\n checkUnmounting: this._isUnmounting,\n eventSendStatus: mxEv.status,\n tileShape: this.props.tileShape,\n isTwelveHour: this.props.isTwelveHour,\n last: last, isSelectedEvent: highlight })\n ));\n\n return ret;\n },\n\n _wantsDateSeparator: function _wantsDateSeparator(prevEvent, nextEventDate) {\n if (prevEvent == null) {\n // first event in the panel: depends if we could back-paginate from\n // here.\n return !this.props.suppressFirstDateSeparator;\n }\n return (0, _DateUtils.wantsDateSeparator)(prevEvent.getDate(), nextEventDate);\n },\n\n // get a list of read receipts that should be shown next to this event\n // Receipts are objects which have a 'userId', 'roomMember' and 'ts'.\n _getReadReceiptsForEvent: function _getReadReceiptsForEvent(event) {\n var myUserId = _MatrixClientPeg2.default.get().credentials.userId;\n\n // get list of read receipts, sorted most recent first\n var room = _MatrixClientPeg2.default.get().getRoom(event.getRoomId());\n if (!room) {\n return null;\n }\n var receipts = [];\n room.getReceiptsForEvent(event).forEach(function (r) {\n if (!r.userId || r.type !== \"m.read\" || r.userId === myUserId) {\n return; // ignore non-read receipts and receipts from self.\n }\n if (_MatrixClientPeg2.default.get().isUserIgnored(r.userId)) {\n return; // ignore ignored users\n }\n var member = room.getMember(r.userId);\n receipts.push({\n userId: r.userId,\n roomMember: member,\n ts: r.data ? r.data.ts : 0\n });\n });\n\n return receipts.sort(function (r1, r2) {\n return r2.ts - r1.ts;\n });\n },\n\n _getReadMarkerTile: function _getReadMarkerTile(visible) {\n var hr = void 0;\n if (visible) {\n hr = _react2.default.createElement('hr', { className: 'mx_RoomView_myReadMarker',\n style: { opacity: 1, width: '99%' }\n });\n }\n\n return _react2.default.createElement(\n 'li',\n { key: '_readupto', ref: 'readMarkerNode',\n className: 'mx_RoomView_myReadMarker_container' },\n hr\n );\n },\n\n _startAnimation: function _startAnimation(ghostNode) {\n if (this._readMarkerGhostNode) {\n Velocity.Utilities.removeData(this._readMarkerGhostNode);\n }\n this._readMarkerGhostNode = ghostNode;\n\n if (ghostNode) {\n Velocity(ghostNode, { opacity: '0', width: '10%' }, { duration: 400, easing: 'easeInSine',\n delay: 1000 });\n }\n },\n\n _getReadMarkerGhostTile: function _getReadMarkerGhostTile() {\n var hr = _react2.default.createElement('hr', { className: 'mx_RoomView_myReadMarker',\n style: { opacity: 1, width: '99%' },\n ref: this._startAnimation\n });\n\n // give it a key which depends on the event id. That will ensure that\n // we get a new DOM node (restarting the animation) when the ghost\n // moves to a different event.\n return _react2.default.createElement(\n 'li',\n { key: \"_readuptoghost_\" + this.currentGhostEventId,\n className: 'mx_RoomView_myReadMarker_container' },\n hr\n );\n },\n\n _collectEventNode: function _collectEventNode(eventId, node) {\n this.eventNodes[eventId] = node;\n },\n\n // once dynamic content in the events load, make the scrollPanel check the\n // scroll offsets.\n _onWidgetLoad: function _onWidgetLoad() {\n var scrollPanel = this.refs.scrollPanel;\n if (scrollPanel) {\n scrollPanel.forceUpdate();\n }\n },\n\n onResize: function onResize() {\n _dispatcher2.default.dispatch({ action: 'timeline_resize' }, true);\n },\n\n render: function render() {\n var ScrollPanel = _index2.default.getComponent(\"structures.ScrollPanel\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var topSpinner = void 0;\n var bottomSpinner = void 0;\n if (this.props.backPaginating) {\n topSpinner = _react2.default.createElement(\n 'li',\n { key: '_topSpinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n if (this.props.forwardPaginating) {\n bottomSpinner = _react2.default.createElement(\n 'li',\n { key: '_bottomSpinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var style = this.props.hidden ? { display: 'none' } : {};\n\n var className = (0, _classnames2.default)(this.props.className, {\n \"mx_MessagePanel_alwaysShowTimestamps\": this.props.alwaysShowTimestamps\n });\n\n return _react2.default.createElement(\n ScrollPanel,\n { ref: 'scrollPanel', className: className,\n onScroll: this.props.onScroll,\n onResize: this.onResize,\n onFillRequest: this.props.onFillRequest,\n onUnfillRequest: this.props.onUnfillRequest,\n style: style,\n stickyBottom: this.props.stickyBottom },\n topSpinner,\n this._getEventTiles(),\n bottomSpinner\n );\n }\n});\n//# sourceMappingURL=MessagePanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _withMatrixClient = require('../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'MyGroups',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n groups: null,\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._fetch();\n },\n\n _onCreateGroupClick: function _onCreateGroupClick() {\n _dispatcher2.default.dispatch({ action: 'view_create_group' });\n },\n\n _fetch: function _fetch() {\n var _this = this;\n\n this.props.matrixClient.getJoinedGroups().done(function (result) {\n _this.setState({ groups: result.groups, error: null });\n }, function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n // Indicate that the guest isn't in any groups (which should be true)\n _this.setState({ groups: [], error: null });\n return;\n }\n _this.setState({ groups: null, error: err });\n });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var SimpleRoomHeader = _index2.default.getComponent('rooms.SimpleRoomHeader');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var GroupTile = _index2.default.getComponent(\"groups.GroupTile\");\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var content = void 0;\n var contentHeader = void 0;\n if (this.state.groups) {\n var groupNodes = [];\n this.state.groups.forEach(function (g) {\n groupNodes.push(_react2.default.createElement(GroupTile, { key: g, groupId: g }));\n });\n contentHeader = groupNodes.length > 0 ? _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Your Communities')\n ) : _react2.default.createElement('div', null);\n content = groupNodes.length > 0 ? _react2.default.createElement(\n GeminiScrollbarWrapper,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_microcopy' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Did you know: you can use communities to filter your Riot.im experience!\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To set up a filter, drag a community avatar over to the filter panel on \" + \"the far left hand side of the screen. You can click on an avatar in the \" + \"filter panel at any time to see only the rooms and people associated \" + \"with that community.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_joinedGroups' },\n groupNodes\n )\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_placeholder' },\n (0, _languageHandler._t)(\"You're not currently a member of any communities.\")\n );\n } else if (this.state.error) {\n content = _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_error' },\n (0, _languageHandler._t)('Error whilst fetching joined communities')\n );\n } else {\n content = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups' },\n _react2.default.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)(\"Communities\"), icon: 'img/icons-groups.svg' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard' },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MyGroups_headerCard_button', onClick: this._onCreateGroupClick },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-create-room.svg', width: '50', height: '50' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_headerCard_header' },\n (0, _languageHandler._t)('Create a new community')\n ),\n (0, _languageHandler._t)('Create a community to group together users and rooms! ' + 'Build a custom homepage to mark out your space in the Matrix universe.')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MyGroups_content' },\n contentHeader,\n content\n )\n );\n }\n})); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=MyGroups.js.map","'use strict';\n\nvar _languageHandler = require('../../languageHandler');\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\nvar ReactDOM = require(\"react-dom\");\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar sdk = require('../../index');\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar dis = require(\"../../dispatcher\");\n\n/*\n * Component which shows the global notification list using a TimelinePanel\n */\nvar NotificationPanel = React.createClass({\n displayName: 'NotificationPanel',\n\n propTypes: {},\n\n render: function render() {\n // wrap a TimelinePanel with the jump-to-event bits turned off.\n var TimelinePanel = sdk.getComponent(\"structures.TimelinePanel\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n var timelineSet = MatrixClientPeg.get().getNotifTimelineSet();\n if (timelineSet) {\n return React.createElement(TimelinePanel, { key: \"NotificationPanel_\" + this.props.roomId,\n className: 'mx_NotificationPanel',\n manageReadReceipts: false,\n manageReadMarkers: false,\n timelineSet: timelineSet,\n showUrlPreview: false,\n tileShape: 'notif',\n empty: (0, _languageHandler._t)('You have no visible notifications')\n });\n } else {\n console.error(\"No notifTimelineSet available!\");\n return React.createElement(\n 'div',\n { className: 'mx_NotificationPanel' },\n React.createElement(Loader, null)\n );\n }\n }\n});\n\nmodule.exports = NotificationPanel;\n//# sourceMappingURL=NotificationPanel.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _GroupAddressPicker = require('../../GroupAddressPicker');\n\nvar _GroupStore = require('../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HeaderButton = function (_React$Component) {\n (0, _inherits3.default)(HeaderButton, _React$Component);\n\n function HeaderButton() {\n (0, _classCallCheck3.default)(this, HeaderButton);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (HeaderButton.__proto__ || (0, _getPrototypeOf2.default)(HeaderButton)).call(this));\n\n _this.onClick = _this.onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(HeaderButton, [{\n key: 'onClick',\n value: function onClick(ev) {\n _Analytics2.default.trackEvent.apply(_Analytics2.default, (0, _toConsumableArray3.default)(this.props.analytics));\n _dispatcher2.default.dispatch({\n action: 'view_right_panel_phase',\n phase: this.props.clickPhase\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n\n return _react2.default.createElement(\n AccessibleButton,\n {\n 'aria-label': this.props.title,\n 'aria-expanded': this.props.isHighlighted,\n title: this.props.title,\n className: 'mx_RightPanel_headerButton',\n onClick: this.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_headerButton_badge' },\n this.props.badge ? this.props.badge : _react2.default.createElement(\n 'span',\n null,\n '\\xA0'\n )\n ),\n _react2.default.createElement(TintableSvg, { src: this.props.iconSrc, width: '25', height: '25' }),\n this.props.isHighlighted ? _react2.default.createElement('div', { className: 'mx_RightPanel_headerButton_highlight' }) : _react2.default.createElement('div', null)\n );\n }\n }]);\n return HeaderButton;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nHeaderButton.propTypes = {\n // Whether this button is highlighted\n isHighlighted: _propTypes2.default.bool.isRequired,\n // The phase to swap to when the button is clicked\n clickPhase: _propTypes2.default.string.isRequired,\n // The source file of the icon to display\n iconSrc: _propTypes2.default.string.isRequired,\n\n // The badge to display above the icon\n badge: _propTypes2.default.node,\n // The parameters to track the click event\n analytics: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,\n\n // Button title\n title: _propTypes2.default.string.isRequired\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RightPanel',\n\n propTypes: {\n // TODO: We're trying to move away from these being props, but we need to know\n // whether we should be displaying a room or group member list\n roomId: _react2.default.PropTypes.string, // if showing panels for a given room, this is set\n groupId: _react2.default.PropTypes.string, // if showing panels for a given group, this is set\n collapsed: _react2.default.PropTypes.bool // currently unused property to request for a minimized view of the panel\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n Phase: {\n RoomMemberList: 'RoomMemberList',\n GroupMemberList: 'GroupMemberList',\n GroupRoomList: 'GroupRoomList',\n GroupRoomInfo: 'GroupRoomInfo',\n FilePanel: 'FilePanel',\n NotificationPanel: 'NotificationPanel',\n RoomMemberInfo: 'RoomMemberInfo',\n GroupMemberInfo: 'GroupMemberInfo'\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n var cli = this.context.matrixClient;\n cli.on(\"RoomState.members\", this.onRoomStateMember);\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n if (this.context.matrixClient) {\n this.context.matrixClient.removeListener(\"RoomState.members\", this.onRoomStateMember);\n }\n this._unregisterGroupStore(this.props.groupId);\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.props.groupId ? this.Phase.GroupMemberList : this.Phase.RoomMemberList,\n isUserPrivilegedInGroup: null\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n _initGroupStore: function _initGroupStore(groupId) {\n if (!groupId) return;\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore() {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n this.setState({\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n },\n\n onCollapseClick: function onCollapseClick() {\n _dispatcher2.default.dispatch({\n action: 'hide_right_panel'\n });\n },\n\n onInviteButtonClick: function onInviteButtonClick() {\n if (this.context.matrixClient.isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n // call AddressPickerDialog\n _dispatcher2.default.dispatch({\n action: 'view_invite',\n roomId: this.props.roomId\n });\n },\n\n onInviteToGroupButtonClick: function onInviteToGroupButtonClick() {\n var _this2 = this;\n\n (0, _GroupAddressPicker.showGroupInviteDialog)(this.props.groupId).then(function () {\n _this2.setState({\n phase: _this2.Phase.GroupMemberList\n });\n });\n },\n\n onAddRoomToGroupButtonClick: function onAddRoomToGroupButtonClick() {\n var _this3 = this;\n\n (0, _GroupAddressPicker.showGroupAddRoomDialog)(this.props.groupId).then(function () {\n _this3.forceUpdate();\n });\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n // redraw the badge on the membership list\n if (this.state.phase === this.Phase.RoomMemberList && member.roomId === this.props.roomId) {\n this._delayedUpdate();\n } else if (this.state.phase === this.Phase.RoomMemberInfo && member.roomId === this.props.roomId && member.userId === this.state.member.userId) {\n // refresh the member info (e.g. new power level)\n this._delayedUpdate();\n }\n },\n\n _delayedUpdate: new _ratelimitedfunc2.default(function () {\n this.forceUpdate(); // eslint-disable-line babel/no-invalid-this\n }, 500),\n\n onAction: function onAction(payload) {\n if (payload.action === \"view_user\") {\n _dispatcher2.default.dispatch({\n action: 'show_right_panel'\n });\n if (payload.member) {\n this.setState({\n phase: this.Phase.RoomMemberInfo,\n member: payload.member\n });\n } else {\n if (this.props.roomId) {\n this.setState({\n phase: this.Phase.RoomMemberList\n });\n } else if (this.props.groupId) {\n this.setState({\n phase: this.Phase.GroupMemberList,\n member: payload.member\n });\n }\n }\n } else if (payload.action === \"view_group\") {\n this.setState({\n phase: this.Phase.GroupMemberList,\n member: null\n });\n } else if (payload.action === \"view_group_room\") {\n this.setState({\n phase: this.Phase.GroupRoomInfo,\n groupRoomId: payload.groupRoomId\n });\n } else if (payload.action === \"view_group_room_list\") {\n this.setState({\n phase: this.Phase.GroupRoomList\n });\n } else if (payload.action === \"view_group_member_list\") {\n this.setState({\n phase: this.Phase.GroupMemberList\n });\n } else if (payload.action === \"view_group_user\") {\n this.setState({\n phase: this.Phase.GroupMemberInfo,\n member: payload.member\n });\n } else if (payload.action === \"view_room\") {\n this.setState({\n phase: this.Phase.RoomMemberList\n });\n } else if (payload.action === \"view_right_panel_phase\") {\n this.setState({\n phase: payload.phase\n });\n }\n },\n\n render: function render() {\n var MemberList = _index2.default.getComponent('rooms.MemberList');\n var MemberInfo = _index2.default.getComponent('rooms.MemberInfo');\n var NotificationPanel = _index2.default.getComponent('structures.NotificationPanel');\n var FilePanel = _index2.default.getComponent('structures.FilePanel');\n\n var GroupMemberList = _index2.default.getComponent('groups.GroupMemberList');\n var GroupMemberInfo = _index2.default.getComponent('groups.GroupMemberInfo');\n var GroupRoomList = _index2.default.getComponent('groups.GroupRoomList');\n var GroupRoomInfo = _index2.default.getComponent('groups.GroupRoomInfo');\n\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var inviteGroup = void 0;\n\n var membersBadge = void 0;\n var membersTitle = (0, _languageHandler._t)('Members');\n if ((this.state.phase === this.Phase.RoomMemberList || this.state.phase === this.Phase.RoomMemberInfo) && this.props.roomId) {\n var cli = this.context.matrixClient;\n var room = cli.getRoom(this.props.roomId);\n var isUserInRoom = void 0;\n if (room) {\n var numMembers = room.getJoinedMemberCount();\n membersTitle = (0, _languageHandler._t)('%(count)s Members', { count: numMembers });\n membersBadge = _react2.default.createElement(\n 'div',\n { title: membersTitle },\n (0, _FormattingUtils.formatCount)(numMembers)\n );\n isUserInRoom = room.hasMembershipState(this.context.matrixClient.credentials.userId, 'join');\n }\n\n if (isUserInRoom) {\n inviteGroup = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onInviteButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-invite-people.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Invite to this room')\n )\n );\n }\n }\n\n var isPhaseGroup = [this.Phase.GroupMemberInfo, this.Phase.GroupMemberList].includes(this.state.phase);\n\n var headerButtons = [];\n if (this.props.roomId) {\n headerButtons = [_react2.default.createElement(HeaderButton, { key: '_membersButton', title: membersTitle, iconSrc: 'img/icons-people.svg',\n isHighlighted: [this.Phase.RoomMemberList, this.Phase.RoomMemberInfo].includes(this.state.phase),\n clickPhase: this.Phase.RoomMemberList,\n badge: membersBadge,\n analytics: ['Right Panel', 'Member List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_filesButton', title: (0, _languageHandler._t)('Files'), iconSrc: 'img/icons-files.svg',\n isHighlighted: this.state.phase === this.Phase.FilePanel,\n clickPhase: this.Phase.FilePanel,\n analytics: ['Right Panel', 'File List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_notifsButton', title: (0, _languageHandler._t)('Notifications'), iconSrc: 'img/icons-notifications.svg',\n isHighlighted: this.state.phase === this.Phase.NotificationPanel,\n clickPhase: this.Phase.NotificationPanel,\n analytics: ['Right Panel', 'Notification List Button', 'click']\n })];\n } else if (this.props.groupId) {\n headerButtons = [_react2.default.createElement(HeaderButton, { key: '_groupMembersButton', title: (0, _languageHandler._t)('Members'), iconSrc: 'img/icons-people.svg',\n isHighlighted: isPhaseGroup,\n clickPhase: this.Phase.GroupMemberList,\n analytics: ['Right Panel', 'Group Member List Button', 'click']\n }), _react2.default.createElement(HeaderButton, { key: '_roomsButton', title: (0, _languageHandler._t)('Rooms'), iconSrc: 'img/icons-room.svg',\n isHighlighted: [this.Phase.GroupRoomList, this.Phase.GroupRoomInfo].includes(this.state.phase),\n clickPhase: this.Phase.GroupRoomList,\n analytics: ['Right Panel', 'Group Room List Button', 'click']\n })];\n }\n\n if (this.props.roomId || this.props.groupId) {\n // Hiding the right panel hides it completely and relies on an 'expand' button\n // being put in the RoomHeader or GroupView header, so only show the minimise\n // button on these 2 screens or you won't be able to re-expand the panel.\n headerButtons.push(_react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_headerButton mx_RightPanel_collapsebutton', key: '_minimizeButton',\n title: (0, _languageHandler._t)(\"Hide panel\"), 'aria-label': (0, _languageHandler._t)(\"Hide panel\"), onClick: this.onCollapseClick\n },\n _react2.default.createElement(TintableSvg, { src: 'img/minimise.svg', width: '10', height: '16', alt: '' })\n ));\n }\n\n var panel = _react2.default.createElement('div', null);\n if (!this.props.collapsed) {\n if (this.props.roomId && this.state.phase === this.Phase.RoomMemberList) {\n panel = _react2.default.createElement(MemberList, { roomId: this.props.roomId, key: this.props.roomId });\n } else if (this.props.groupId && this.state.phase === this.Phase.GroupMemberList) {\n panel = _react2.default.createElement(GroupMemberList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === this.Phase.GroupRoomList) {\n panel = _react2.default.createElement(GroupRoomList, { groupId: this.props.groupId, key: this.props.groupId });\n } else if (this.state.phase === this.Phase.RoomMemberInfo) {\n panel = _react2.default.createElement(MemberInfo, { member: this.state.member, key: this.props.roomId || this.state.member.userId });\n } else if (this.state.phase === this.Phase.GroupMemberInfo) {\n panel = _react2.default.createElement(GroupMemberInfo, {\n groupMember: this.state.member,\n groupId: this.props.groupId,\n key: this.state.member.user_id });\n } else if (this.state.phase === this.Phase.GroupRoomInfo) {\n panel = _react2.default.createElement(GroupRoomInfo, {\n groupRoomId: this.state.groupRoomId,\n groupId: this.props.groupId,\n key: this.state.groupRoomId });\n } else if (this.state.phase === this.Phase.NotificationPanel) {\n panel = _react2.default.createElement(NotificationPanel, null);\n } else if (this.state.phase === this.Phase.FilePanel) {\n panel = _react2.default.createElement(FilePanel, { roomId: this.props.roomId });\n }\n }\n\n if (!panel) {\n panel = _react2.default.createElement('div', { className: 'mx_RightPanel_blank' });\n }\n\n if (this.props.groupId && this.state.isUserPrivilegedInGroup) {\n inviteGroup = isPhaseGroup ? _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onInviteToGroupButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-invite-people.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Invite to this community')\n )\n ) : _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RightPanel_invite', onClick: this.onAddRoomToGroupButtonClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_icon' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-room-add.svg', width: '35', height: '35' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_message' },\n (0, _languageHandler._t)('Add rooms to this community')\n )\n );\n }\n\n var classes = (0, _classnames2.default)(\"mx_RightPanel\", \"mx_fadable\", {\n \"collapsed\": this.props.collapsed,\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return _react2.default.createElement(\n 'aside',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_headerButtonGroup' },\n headerButtons\n )\n ),\n panel,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RightPanel_footer' },\n inviteGroup\n )\n );\n }\n});\n//# sourceMappingURL=RightPanel.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _DirectoryUtils = require('../../utils/DirectoryUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar MatrixClientPeg = require('../../MatrixClientPeg');\nvar ContentRepo = require(\"matrix-js-sdk\").ContentRepo;\nvar Modal = require('../../Modal');\nvar sdk = require('../../index');\nvar dis = require('../../dispatcher');\n\nvar linkify = require('linkifyjs');\nvar linkifyString = require('linkifyjs/string');\nvar linkifyMatrix = require('../../linkify-matrix');\nvar sanitizeHtml = require('sanitize-html');\n\n\nlinkifyMatrix(linkify);\n\nmodule.exports = React.createClass({\n displayName: 'RoomDirectory',\n\n propTypes: {\n config: React.PropTypes.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n config: {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n publicRooms: [],\n loading: true,\n protocolsLoading: true,\n instanceId: null,\n includeAll: false,\n roomServer: null,\n filterString: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n this.nextBatch = null;\n this.filterTimeout = null;\n this.scrollPanel = null;\n this.protocols = null;\n\n this.setState({ protocolsLoading: true });\n MatrixClientPeg.get().getThirdpartyProtocols().done(function (response) {\n _this.protocols = response;\n _this.setState({ protocolsLoading: false });\n }, function (err) {\n console.warn('error loading thirdparty protocols: ' + err);\n _this.setState({ protocolsLoading: false });\n if (MatrixClientPeg.get().isGuest()) {\n // Guests currently aren't allowed to use this API, so\n // ignore this as otherwise this error is literally the\n // thing you see when loading the client!\n return;\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to get protocol list from Home Server', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to get protocol list from Home Server'),\n description: (0, _languageHandler._t)('The Home Server may be too old to support third party networks')\n });\n });\n\n // dis.dispatch({\n // action: 'panel_disable',\n // sideDisabled: true,\n // middleDisabled: true,\n // });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // dis.dispatch({\n // action: 'panel_disable',\n // sideDisabled: false,\n // middleDisabled: false,\n // });\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n this._unmounted = true;\n },\n\n refreshRoomList: function refreshRoomList() {\n this.nextBatch = null;\n this.setState({\n publicRooms: [],\n loading: true\n });\n this.getMoreRooms().done();\n },\n\n getMoreRooms: function getMoreRooms() {\n var _this2 = this;\n\n if (!MatrixClientPeg.get()) return _bluebird2.default.resolve();\n\n var my_filter_string = this.state.filterString;\n var my_server = this.state.roomServer;\n // remember the next batch token when we sent the request\n // too. If it's changed, appending to the list will corrupt it.\n var my_next_batch = this.nextBatch;\n var opts = { limit: 20 };\n if (my_server != MatrixClientPeg.getHomeServerName()) {\n opts.server = my_server;\n }\n if (this.state.instanceId) {\n opts.third_party_instance_id = this.state.instanceId;\n } else if (this.state.includeAll) {\n opts.include_all_networks = true;\n }\n if (this.nextBatch) opts.since = this.nextBatch;\n if (my_filter_string) opts.filter = { generic_search_term: my_filter_string };\n return MatrixClientPeg.get().publicRooms(opts).then(function (data) {\n if (my_filter_string != _this2.state.filterString || my_server != _this2.state.roomServer || my_next_batch != _this2.nextBatch) {\n // if the filter or server has changed since this request was sent,\n // throw away the result (don't even clear the busy flag\n // since we must still have a request in flight)\n return;\n }\n\n if (_this2._unmounted) {\n // if we've been unmounted, we don't care either.\n return;\n }\n\n _this2.nextBatch = data.next_batch;\n _this2.setState(function (s) {\n var _s$publicRooms;\n\n (_s$publicRooms = s.publicRooms).push.apply(_s$publicRooms, (0, _toConsumableArray3.default)(data.chunk));\n s.loading = false;\n return s;\n });\n return Boolean(data.next_batch);\n }, function (err) {\n if (my_filter_string != _this2.state.filterString || my_server != _this2.state.roomServer || my_next_batch != _this2.nextBatch) {\n // as above: we don't care about errors for old\n // requests either\n return;\n }\n\n if (_this2._unmounted) {\n // if we've been unmounted, we don't care either.\n return;\n }\n\n _this2.setState({ loading: false });\n console.error(\"Failed to get publicRooms: %s\", (0, _stringify2.default)(err));\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to get public room list', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to get public room list'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('The server may be unavailable or overloaded')\n });\n });\n },\n\n /**\n * A limited interface for removing rooms from the directory.\n * Will set the room to not be publicly visible and delete the\n * default alias. In the long term, it would be better to allow\n * HS admins to do this through the RoomSettings interface, but\n * this needs SPEC-417.\n */\n removeFromDirectory: function removeFromDirectory(room) {\n var _this3 = this;\n\n var alias = get_display_alias_for_room(room);\n var name = room.name || alias || (0, _languageHandler._t)('Unnamed room');\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n var desc;\n if (alias) {\n desc = (0, _languageHandler._t)('Delete the room alias %(alias)s and remove %(name)s from the directory?', { alias: alias, name: name });\n } else {\n desc = (0, _languageHandler._t)('Remove %(name)s from the directory?', { name: name });\n }\n\n Modal.createTrackedDialog('Remove from Directory', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Remove from Directory'),\n description: desc,\n onFinished: function onFinished(should_delete) {\n if (!should_delete) return;\n\n var Loader = sdk.getComponent(\"elements.Spinner\");\n var modal = Modal.createDialog(Loader);\n var step = (0, _languageHandler._t)('remove %(name)s from the directory.', { name: name });\n\n MatrixClientPeg.get().setRoomDirectoryVisibility(room.room_id, 'private').then(function () {\n if (!alias) return;\n step = (0, _languageHandler._t)('delete the alias.');\n return MatrixClientPeg.get().deleteAlias(alias);\n }).done(function () {\n modal.close();\n _this3.refreshRoomList();\n }, function (err) {\n modal.close();\n _this3.refreshRoomList();\n console.error(\"Failed to \" + step + \": \" + err);\n Modal.createTrackedDialog('Remove from Directory Error', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('The server may be unavailable or overloaded')\n });\n });\n }\n });\n },\n\n onRoomClicked: function onRoomClicked(room, ev) {\n if (ev.shiftKey) {\n ev.preventDefault();\n this.removeFromDirectory(room);\n } else {\n this.showRoom(room);\n }\n },\n\n onOptionChange: function onOptionChange(server, instanceId, includeAll) {\n // clear next batch so we don't try to load more rooms\n this.nextBatch = null;\n this.setState({\n // Clear the public rooms out here otherwise we needlessly\n // spend time filtering lots of rooms when we're about to\n // to clear the list anyway.\n publicRooms: [],\n roomServer: server,\n instanceId: instanceId,\n includeAll: includeAll\n }, this.refreshRoomList);\n // We also refresh the room list each time even though this\n // filtering is client-side. It hopefully won't be client side\n // for very long, and we may have fetched a thousand rooms to\n // find the five gitter ones, at which point we do not want\n // to render all those rooms when switching back to 'all networks'.\n // Easiest to just blow away the state & re-fetch.\n },\n\n onFillRequest: function onFillRequest(backwards) {\n if (backwards || !this.nextBatch) return _bluebird2.default.resolve(false);\n\n return this.getMoreRooms();\n },\n\n onFilterChange: function onFilterChange(alias) {\n var _this4 = this;\n\n this.setState({\n filterString: alias || null\n });\n\n // don't send the request for a little bit,\n // no point hammering the server with a\n // request for every keystroke, let the\n // user finish typing.\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n this.filterTimeout = setTimeout(function () {\n _this4.filterTimeout = null;\n _this4.refreshRoomList();\n }, 700);\n },\n\n onFilterClear: function onFilterClear() {\n // update immediately\n this.setState({\n filterString: null\n }, this.refreshRoomList);\n\n if (this.filterTimeout) {\n clearTimeout(this.filterTimeout);\n }\n },\n\n onJoinClick: function onJoinClick(alias) {\n var _this5 = this;\n\n // If we don't have a particular instance id selected, just show that rooms alias\n if (!this.state.instanceId) {\n // If the user specified an alias without a domain, add on whichever server is selected\n // in the dropdown\n if (alias.indexOf(':') == -1) {\n alias = alias + ':' + this.state.roomServer;\n }\n this.showRoomAlias(alias);\n } else {\n // This is a 3rd party protocol. Let's see if we can join it\n var protocolName = (0, _DirectoryUtils.protocolNameForInstanceId)(this.protocols, this.state.instanceId);\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.protocols, this.state.instanceId);\n var fields = protocolName ? this._getFieldsForThirdPartyLocation(alias, this.protocols[protocolName], instance) : null;\n if (!fields) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Unable to join network', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Unable to join network'),\n description: (0, _languageHandler._t)('Riot does not know how to join a room on this network')\n });\n return;\n }\n MatrixClientPeg.get().getThirdpartyLocation(protocolName, fields).done(function (resp) {\n if (resp.length > 0 && resp[0].alias) {\n _this5.showRoomAlias(resp[0].alias);\n } else {\n var _ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Room not found', '', _ErrorDialog, {\n title: (0, _languageHandler._t)('Room not found'),\n description: (0, _languageHandler._t)('Couldn\\'t find a matching Matrix room')\n });\n }\n }, function (e) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Fetching third party location failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Fetching third party location failed'),\n description: (0, _languageHandler._t)('Unable to look up room ID from server')\n });\n });\n }\n },\n\n showRoomAlias: function showRoomAlias(alias) {\n this.showRoom(null, alias);\n },\n\n showRoom: function showRoom(room, room_alias) {\n var payload = { action: 'view_room' };\n if (room) {\n // Don't let the user view a room they won't be able to either\n // peek or join: fail earlier so they don't have to click back\n // to the directory.\n if (MatrixClientPeg.get().isGuest()) {\n if (!room.world_readable && !room.guest_can_join) {\n dis.dispatch({ action: 'require_registration' });\n return;\n }\n }\n\n if (!room_alias) {\n room_alias = get_display_alias_for_room(room);\n }\n\n payload.oob_data = {\n avatarUrl: room.avatar_url,\n // XXX: This logic is duplicated from the JS SDK which\n // would normally decide what the name is.\n name: room.name || room_alias || (0, _languageHandler._t)('Unnamed room')\n };\n }\n // It's not really possible to join Matrix rooms by ID because the HS has no way to know\n // which servers to start querying. However, there's no other way to join rooms in\n // this list without aliases at present, so if roomAlias isn't set here we have no\n // choice but to supply the ID.\n if (room_alias) {\n payload.room_alias = room_alias;\n } else {\n payload.room_id = room.room_id;\n }\n dis.dispatch(payload);\n },\n\n getRows: function getRows() {\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n\n if (!this.state.publicRooms) return [];\n\n var rooms = this.state.publicRooms;\n var rows = [];\n var self = this;\n var guestRead, guestJoin, perms;\n for (var i = 0; i < rooms.length; i++) {\n var name = rooms[i].name || get_display_alias_for_room(rooms[i]) || (0, _languageHandler._t)('Unnamed room');\n guestRead = null;\n guestJoin = null;\n\n if (rooms[i].world_readable) {\n guestRead = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('World readable')\n );\n }\n if (rooms[i].guest_can_join) {\n guestJoin = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perm' },\n (0, _languageHandler._t)('Guests can join')\n );\n }\n\n perms = null;\n if (guestRead || guestJoin) {\n perms = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_perms' },\n guestRead,\n guestJoin\n );\n }\n\n var topic = rooms[i].topic || '';\n topic = linkifyString(sanitizeHtml(topic));\n\n rows.push(React.createElement(\n 'tr',\n { key: rooms[i].room_id,\n onClick: self.onRoomClicked.bind(self, rooms[i])\n // cancel onMouseDown otherwise shift-clicking highlights text\n , onMouseDown: function onMouseDown(ev) {\n ev.preventDefault();\n }\n },\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomAvatar' },\n React.createElement(BaseAvatar, { width: 24, height: 24, resizeMethod: 'crop',\n name: name, idName: name,\n url: ContentRepo.getHttpUriForMxc(MatrixClientPeg.get().getHomeserverUrl(), rooms[i].avatar_url, 24, 24, \"crop\") })\n ),\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomDescription' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_name' },\n name\n ),\n '\\xA0',\n perms,\n React.createElement('div', { className: 'mx_RoomDirectory_topic',\n onClick: function onClick(e) {\n e.stopPropagation();\n },\n dangerouslySetInnerHTML: { __html: topic } }),\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_alias' },\n get_display_alias_for_room(rooms[i])\n )\n ),\n React.createElement(\n 'td',\n { className: 'mx_RoomDirectory_roomMemberCount' },\n rooms[i].num_joined_members\n )\n ));\n }\n return rows;\n },\n\n collectScrollPanel: function collectScrollPanel(element) {\n this.scrollPanel = element;\n },\n\n _stringLooksLikeId: function _stringLooksLikeId(s, field_type) {\n var pat = /^#[^\\s]+:[^\\s]/;\n if (field_type && field_type.regexp) {\n pat = new RegExp(field_type.regexp);\n }\n\n return pat.test(s);\n },\n\n _getFieldsForThirdPartyLocation: function _getFieldsForThirdPartyLocation(userInput, protocol, instance) {\n // make an object with the fields specified by that protocol. We\n // require that the values of all but the last field come from the\n // instance. The last is the user input.\n var requiredFields = protocol.location_fields;\n if (!requiredFields) return null;\n var fields = {};\n for (var i = 0; i < requiredFields.length - 1; ++i) {\n var thisField = requiredFields[i];\n if (instance.fields[thisField] === undefined) return null;\n fields[thisField] = instance.fields[thisField];\n }\n fields[requiredFields[requiredFields.length - 1]] = userInput;\n return fields;\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (this.scrollPanel) {\n this.scrollPanel.handleScrollKey(ev);\n }\n },\n\n render: function render() {\n var SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader');\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n if (this.state.protocolsLoading) {\n return React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)('Directory') }),\n React.createElement(Loader, null)\n );\n }\n\n var content = void 0;\n if (this.state.loading) {\n content = React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(Loader, null)\n );\n } else {\n var rows = this.getRows();\n // we still show the scrollpanel, at least for now, because\n // otherwise we don't fetch more because we don't get a fill\n // request from the scrollpanel because there isn't one\n var scrollpanel_content = void 0;\n if (rows.length == 0) {\n scrollpanel_content = React.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('No rooms to show')\n );\n } else {\n scrollpanel_content = React.createElement(\n 'table',\n { ref: 'directory_table', className: 'mx_RoomDirectory_table' },\n React.createElement(\n 'tbody',\n null,\n this.getRows()\n )\n );\n }\n var ScrollPanel = sdk.getComponent(\"structures.ScrollPanel\");\n content = React.createElement(\n ScrollPanel,\n { ref: this.collectScrollPanel,\n className: 'mx_RoomDirectory_tableWrapper',\n onFillRequest: this.onFillRequest,\n stickyBottom: false,\n startAtBottom: false,\n onResize: function onResize() {}\n },\n scrollpanel_content\n );\n }\n\n var protocolName = (0, _DirectoryUtils.protocolNameForInstanceId)(this.protocols, this.state.instanceId);\n var instance_expected_field_type = void 0;\n if (protocolName && this.protocols && this.protocols[protocolName] && this.protocols[protocolName].location_fields.length > 0 && this.protocols[protocolName].field_types) {\n var last_field = this.protocols[protocolName].location_fields.slice(-1)[0];\n instance_expected_field_type = this.protocols[protocolName].field_types[last_field];\n }\n\n var placeholder = (0, _languageHandler._t)('Search for a room');\n if (!this.state.instanceId) {\n placeholder = (0, _languageHandler._t)('#example') + ':' + this.state.roomServer;\n } else if (instance_expected_field_type) {\n placeholder = instance_expected_field_type.placeholder;\n }\n\n var showJoinButton = this._stringLooksLikeId(this.state.filterString, instance_expected_field_type);\n if (protocolName) {\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.protocols, this.state.instanceId);\n if (this._getFieldsForThirdPartyLocation(this.state.filterString, this.protocols[protocolName], instance) === null) {\n showJoinButton = false;\n }\n }\n\n var NetworkDropdown = sdk.getComponent('directory.NetworkDropdown');\n var DirectorySearchBox = sdk.getComponent('elements.DirectorySearchBox');\n return React.createElement(\n 'div',\n { className: 'mx_RoomDirectory' },\n React.createElement(SimpleRoomHeader, { title: (0, _languageHandler._t)('Directory'), icon: 'img/icons-directory.svg' }),\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_list' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDirectory_listheader' },\n React.createElement(DirectorySearchBox, {\n className: 'mx_RoomDirectory_searchbox',\n onChange: this.onFilterChange, onClear: this.onFilterClear, onJoinClick: this.onJoinClick,\n placeholder: placeholder, showJoinButton: showJoinButton\n }),\n React.createElement(NetworkDropdown, { config: this.props.config, protocols: this.protocols, onOptionChange: this.onOptionChange })\n ),\n content\n )\n );\n }\n});\n\n// Similar to matrix-react-sdk's MatrixTools.getDisplayAliasForRoom\n// but works with the objects we get from the public room list\nfunction get_display_alias_for_room(room) {\n return room.canonical_alias || (room.aliases ? room.aliases[0] : \"\");\n}\n//# sourceMappingURL=RoomDirectory.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar defaults = {\n\tdefaultProtocol: 'http',\n\tevents: null,\n\tformat: noop,\n\tformatHref: noop,\n\tnl2br: false,\n\ttagName: 'a',\n\ttarget: typeToTarget,\n\tvalidate: true,\n\tignoreTags: [],\n\tattributes: null,\n\tclassName: 'linkified' // Deprecated value - no default class will be provided in the future\n};\n\nexports.defaults = defaults;\nexports.Options = Options;\nexports.contains = contains;\n\n\nfunction Options(opts) {\n\topts = opts || {};\n\n\tthis.defaultProtocol = opts.hasOwnProperty('defaultProtocol') ? opts.defaultProtocol : defaults.defaultProtocol;\n\tthis.events = opts.hasOwnProperty('events') ? opts.events : defaults.events;\n\tthis.format = opts.hasOwnProperty('format') ? opts.format : defaults.format;\n\tthis.formatHref = opts.hasOwnProperty('formatHref') ? opts.formatHref : defaults.formatHref;\n\tthis.nl2br = opts.hasOwnProperty('nl2br') ? opts.nl2br : defaults.nl2br;\n\tthis.tagName = opts.hasOwnProperty('tagName') ? opts.tagName : defaults.tagName;\n\tthis.target = opts.hasOwnProperty('target') ? opts.target : defaults.target;\n\tthis.validate = opts.hasOwnProperty('validate') ? opts.validate : defaults.validate;\n\tthis.ignoreTags = [];\n\n\t// linkAttributes and linkClass is deprecated\n\tthis.attributes = opts.attributes || opts.linkAttributes || defaults.attributes;\n\tthis.className = opts.hasOwnProperty('className') ? opts.className : opts.linkClass || defaults.className;\n\n\t// Make all tags names upper case\n\tvar ignoredTags = opts.hasOwnProperty('ignoreTags') ? opts.ignoreTags : defaults.ignoreTags;\n\tfor (var i = 0; i < ignoredTags.length; i++) {\n\t\tthis.ignoreTags.push(ignoredTags[i].toUpperCase());\n\t}\n}\n\nOptions.prototype = {\n\t/**\n * Given the token, return all options for how it should be displayed\n */\n\tresolve: function resolve(token) {\n\t\tvar href = token.toHref(this.defaultProtocol);\n\t\treturn {\n\t\t\tformatted: this.get('format', token.toString(), token),\n\t\t\tformattedHref: this.get('formatHref', href, token),\n\t\t\ttagName: this.get('tagName', href, token),\n\t\t\tclassName: this.get('className', href, token),\n\t\t\ttarget: this.get('target', href, token),\n\t\t\tevents: this.getObject('events', href, token),\n\t\t\tattributes: this.getObject('attributes', href, token)\n\t\t};\n\t},\n\n\n\t/**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options. By default,\n */\n\tcheck: function check(token) {\n\t\treturn this.get('validate', token.toString(), token);\n\t},\n\n\n\t// Private methods\n\n\t/**\n * Resolve an option's value based on the value of the option and the given\n * params.\n * @param {String} key Name of option to use\n * @param operator will be passed to the target option if it's method\n * @param {MultiToken} token The token from linkify.tokenize\n */\n\tget: function get(key, operator, token) {\n\t\tvar optionValue = void 0,\n\t\t option = this[key];\n\t\tif (!option) {\n\t\t\treturn option;\n\t\t}\n\n\t\tswitch (typeof option === 'undefined' ? 'undefined' : _typeof(option)) {\n\t\t\tcase 'function':\n\t\t\t\treturn option(operator, token.type);\n\t\t\tcase 'object':\n\t\t\t\toptionValue = option.hasOwnProperty(token.type) ? option[token.type] : defaults[key];\n\t\t\t\treturn typeof optionValue === 'function' ? optionValue(operator, token.type) : optionValue;\n\t\t}\n\n\t\treturn option;\n\t},\n\tgetObject: function getObject(key, operator, token) {\n\t\tvar option = this[key];\n\t\treturn typeof option === 'function' ? option(operator, token.type) : option;\n\t}\n};\n\n/**\n * Quick indexOf replacement for checking the ignoreTags option\n */\nfunction contains(arr, value) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tif (arr[i] === value) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction noop(val) {\n\treturn val;\n}\n\nfunction typeToTarget(href, type) {\n\treturn type === 'url' ? '_blank' : null;\n}","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _text = require('./tokens/text');\n\nvar TOKENS = _interopRequireWildcard(_text);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tlds = 'aaa|aarp|abarth|abb|abbott|abbvie|abc|able|abogado|abudhabi|ac|academy|accenture|accountant|accountants|aco|active|actor|ad|adac|ads|adult|ae|aeg|aero|aetna|af|afamilycompany|afl|africa|ag|agakhan|agency|ai|aig|aigo|airbus|airforce|airtel|akdn|al|alfaromeo|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|am|americanexpress|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|ao|aol|apartments|app|apple|aq|aquarelle|ar|arab|aramco|archi|army|arpa|art|arte|as|asda|asia|associates|at|athleta|attorney|au|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aw|aws|ax|axa|az|azure|ba|baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays|barefoot|bargains|baseball|basketball|bauhaus|bayern|bb|bbc|bbt|bbva|bcg|bcn|bd|be|beats|beauty|beer|bentley|berlin|best|bestbuy|bet|bf|bg|bh|bharti|bi|bible|bid|bike|bing|bingo|bio|biz|bj|black|blackfriday|blanco|blockbuster|blog|bloomberg|blue|bm|bms|bmw|bn|bnl|bnpparibas|bo|boats|boehringer|bofa|bom|bond|boo|book|booking|boots|bosch|bostik|boston|bot|boutique|box|br|bradesco|bridgestone|broadway|broker|brother|brussels|bs|bt|budapest|bugatti|build|builders|business|buy|buzz|bv|bw|by|bz|bzh|ca|cab|cafe|cal|call|calvinklein|cam|camera|camp|cancerresearch|canon|capetown|capital|capitalone|car|caravan|cards|care|career|careers|cars|cartier|casa|case|caseih|cash|casino|cat|catering|catholic|cba|cbn|cbre|cbs|cc|cd|ceb|center|ceo|cern|cf|cfa|cfd|cg|ch|chanel|channel|chase|chat|cheap|chintai|chloe|christmas|chrome|chrysler|church|ci|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|ck|cl|claims|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|cm|cn|co|coach|codes|coffee|college|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction|consulting|contact|contractors|cooking|cookingchannel|cool|coop|corsica|country|coupon|coupons|courses|cr|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|csc|cu|cuisinella|cv|cw|cx|cy|cymru|cyou|cz|dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|de|deal|dealer|deals|degree|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet|digital|direct|directory|discount|discover|dish|diy|dj|dk|dm|dnp|do|docs|doctor|dodge|dog|doha|domains|dot|download|drive|dtv|dubai|duck|dunlop|duns|dupont|durban|dvag|dvr|dz|earth|eat|ec|eco|edeka|edu|education|ee|eg|email|emerck|energy|engineer|engineering|enterprises|epost|epson|equipment|er|ericsson|erni|es|esq|estate|esurance|et|etisalat|eu|eurovision|eus|events|everbank|exchange|expert|exposed|express|extraspace|fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback|ferrari|ferrero|fi|fiat|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale|fish|fishing|fit|fitness|fj|fk|flickr|flights|flir|florist|flowers|fly|fm|fo|foo|food|foodnetwork|football|ford|forex|forsale|forum|foundation|fox|fr|free|fresenius|frl|frogans|frontdoor|frontier|ftr|fujitsu|fujixerox|fun|fund|furniture|futbol|fyi|ga|gal|gallery|gallo|gallup|game|games|gap|garden|gb|gbiz|gd|gdn|ge|gea|gent|genting|george|gf|gg|ggee|gh|gi|gift|gifts|gives|giving|gl|glade|glass|gle|global|globo|gm|gmail|gmbh|gmo|gmx|gn|godaddy|gold|goldpoint|golf|goo|goodhands|goodyear|goog|google|gop|got|gov|gp|gq|gr|grainger|graphics|gratis|green|gripe|grocery|group|gs|gt|gu|guardian|gucci|guge|guide|guitars|guru|gw|gy|hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here|hermes|hgtv|hiphop|hisamitsu|hitachi|hiv|hk|hkt|hm|hn|hockey|holdings|holiday|homedepot|homegoods|homes|homesense|honda|honeywell|horse|hospital|host|hosting|hot|hoteles|hotels|hotmail|house|how|hr|hsbc|ht|htc|hu|hughes|hyatt|hyundai|ibm|icbc|ice|icu|id|ie|ieee|ifm|ikano|il|im|imamat|imdb|immo|immobilien|in|industries|infiniti|info|ing|ink|institute|insurance|insure|int|intel|international|intuit|investments|io|ipiranga|iq|ir|irish|is|iselect|ismaili|ist|istanbul|it|itau|itv|iveco|iwc|jaguar|java|jcb|jcp|je|jeep|jetzt|jewelry|jio|jlc|jll|jm|jmp|jnj|jo|jobs|joburg|jot|joy|jp|jpmorgan|jprs|juegos|juniper|kaufen|kddi|ke|kerryhotels|kerrylogistics|kerryproperties|kfh|kg|kh|ki|kia|kim|kinder|kindle|kitchen|kiwi|km|kn|koeln|komatsu|kosher|kp|kpmg|kpn|kr|krd|kred|kuokgroup|kw|ky|kyoto|kz|la|lacaixa|ladbrokes|lamborghini|lamer|lancaster|lancia|lancome|land|landrover|lanxess|lasalle|lat|latino|latrobe|law|lawyer|lb|lc|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|li|liaison|lidl|life|lifeinsurance|lifestyle|lighting|like|lilly|limited|limo|lincoln|linde|link|lipsy|live|living|lixil|lk|loan|loans|locker|locus|loft|lol|london|lotte|lotto|love|lpl|lplfinancial|lr|ls|lt|ltd|ltda|lu|lundbeck|lupin|luxe|luxury|lv|ly|ma|macys|madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott|marshalls|maserati|mattel|mba|mc|mckinsey|md|me|med|media|meet|melbourne|meme|memorial|men|menu|meo|merckmsd|metlife|mg|mh|miami|microsoft|mil|mini|mint|mit|mitsubishi|mk|ml|mlb|mls|mm|mma|mn|mo|mobi|mobile|mobily|moda|moe|moi|mom|monash|money|monster|mopar|mormon|mortgage|moscow|moto|motorcycles|mov|movie|movistar|mp|mq|mr|ms|msd|mt|mtn|mtr|mu|museum|mutual|mv|mw|mx|my|mz|na|nab|nadex|nagoya|name|nationwide|natura|navy|nba|nc|ne|nec|net|netbank|netflix|network|neustar|new|newholland|news|next|nextdirect|nexus|nf|nfl|ng|ngo|nhk|ni|nico|nike|nikon|ninja|nissan|nissay|nl|no|nokia|northwesternmutual|norton|now|nowruz|nowtv|np|nr|nra|nrw|ntt|nu|nyc|nz|obi|observer|off|office|okinawa|olayan|olayangroup|oldnavy|ollo|om|omega|one|ong|onl|online|onyourside|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|pa|page|panasonic|panerai|paris|pars|partners|parts|party|passagens|pay|pccw|pe|pet|pf|pfizer|pg|ph|pharmacy|phd|philips|phone|photo|photography|photos|physio|piaget|pics|pictet|pictures|pid|pin|ping|pink|pioneer|pizza|pk|pl|place|play|playstation|plumbing|plus|pm|pn|pnc|pohl|poker|politie|porn|post|pr|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties|property|protection|pru|prudential|ps|pt|pub|pw|pwc|py|qa|qpon|quebec|quest|qvc|racing|radio|raid|re|read|realestate|realtor|realty|recipes|red|redstone|redumbrella|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant|review|reviews|rexroth|rich|richardli|ricoh|rightathome|ril|rio|rip|rmit|ro|rocher|rocks|rodeo|rogers|room|rs|rsvp|ru|rugby|ruhr|run|rw|rwe|ryukyu|sa|saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|sas|save|saxo|sb|sbi|sbs|sc|sca|scb|schaeffler|schmidt|scholarships|school|schule|schwarz|science|scjohnson|scor|scot|sd|se|search|seat|secure|security|seek|select|sener|services|ses|seven|sew|sex|sexy|sfr|sg|sh|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping|shouji|show|showtime|shriram|si|silk|sina|singles|site|sj|sk|ski|skin|sky|skype|sl|sling|sm|smart|smile|sn|sncf|so|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|space|spiegel|spot|spreadbetting|sr|srl|srt|st|stada|staples|star|starhub|statebank|statefarm|statoil|stc|stcgroup|stockholm|storage|store|stream|studio|study|style|su|sucks|supplies|supply|support|surf|surgery|suzuki|sv|swatch|swiftcover|swiss|sx|sy|sydney|symantec|systems|sz|tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tc|tci|td|tdk|team|tech|technology|tel|telecity|telefonica|temasek|tennis|teva|tf|tg|th|thd|theater|theatre|tiaa|tickets|tienda|tiffany|tips|tires|tirol|tj|tjmaxx|tjx|tk|tkmaxx|tl|tm|tmall|tn|to|today|tokyo|tools|top|toray|toshiba|total|tours|town|toyota|toys|tr|trade|trading|training|travel|travelchannel|travelers|travelersinsurance|trust|trv|tt|tube|tui|tunes|tushu|tv|tvs|tw|tz|ua|ubank|ubs|uconnect|ug|uk|unicom|university|uno|uol|ups|us|uy|uz|va|vacations|vana|vanguard|vc|ve|vegas|ventures|verisign|versicherung|vet|vg|vi|viajes|video|vig|viking|villas|vin|vip|virgin|visa|vision|vista|vistaprint|viva|vivo|vlaanderen|vn|vodka|volkswagen|volvo|vote|voting|voto|voyage|vu|vuelos|wales|walmart|walter|wang|wanggou|warman|watch|watches|weather|weatherchannel|webcam|weber|website|wed|wedding|weibo|weir|wf|whoswho|wien|wiki|williamhill|win|windows|wine|winners|wme|wolterskluwer|woodside|work|works|world|wow|ws|wtc|wtf|xbox|xerox|xfinity|xihuan|xin|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--30rr7y|xn--3bst00m|xn--3ds443g|xn--3e0b707e|xn--3hcrj9c|xn--3oq18vl8pn36a|xn--3pxu8k|xn--42c2d9a|xn--45br5cyl|xn--45brj9c|xn--45q11c|xn--4gbrim|xn--54b7fta0cc|xn--55qw42g|xn--55qx5d|xn--5su34j936bgsg|xn--5tzm5g|xn--6frz82g|xn--6qq986b3xl|xn--80adxhks|xn--80ao21a|xn--80aqecdr1a|xn--80asehdb|xn--80aswg|xn--8y0a063a|xn--90a3ac|xn--90ae|xn--90ais|xn--9dbq2a|xn--9et52u|xn--9krt00a|xn--b4w605ferd|xn--bck1b9a5dre4c|xn--c1avg|xn--c2br7g|xn--cck2b3b|xn--cg4bki|xn--clchc0ea0b2g2a9gcd|xn--czr694b|xn--czrs0t|xn--czru2d|xn--d1acj3b|xn--d1alf|xn--e1a4c|xn--eckvdtc9d|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fhbei|xn--fiq228c5hs|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--fjq720a|xn--flw351e|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--fzys8d69uvgm|xn--g2xx48c|xn--gckr3f0f|xn--gecrj9c|xn--gk3at1e|xn--h2breg3eve|xn--h2brj9c|xn--h2brj9c8c|xn--hxt814e|xn--i1b6b1a6a2e|xn--imr513n|xn--io0a7i|xn--j1aef|xn--j1amh|xn--j6w193g|xn--jlq61u9w7b|xn--jvr189m|xn--kcrx77d1x4a|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--kput3i|xn--l1acc|xn--lgbbat1ad8j|xn--mgb9awbf|xn--mgba3a3ejt|xn--mgba3a4f16a|xn--mgba7c0bbn0a|xn--mgbaakc7dvf|xn--mgbaam7a8h|xn--mgbab2bd|xn--mgbai9azgqp6j|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a|xn--mgbbh1a71e|xn--mgbc0a9azcg|xn--mgbca7dzdo|xn--mgberp4a5d4ar|xn--mgbgu82a|xn--mgbi4ecexp|xn--mgbpl2fh|xn--mgbt3dhd|xn--mgbtx2b|xn--mgbx4cd0ab|xn--mix891f|xn--mk1bu44c|xn--mxtq1m|xn--ngbc5azd|xn--ngbe9e0a|xn--ngbrx|xn--node|xn--nqv7f|xn--nqv7fs00ema|xn--nyqy26a|xn--o3cw4h|xn--ogbpf8fl|xn--p1acf|xn--p1ai|xn--pbt977c|xn--pgbs0dh|xn--pssy2u|xn--q9jyb4c|xn--qcka1pmc|xn--qxam|xn--rhqv96g|xn--rovu88b|xn--rvc1e0am3e|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--tckwe|xn--tiq49xqyj|xn--unup4y|xn--vermgensberater-ctb|xn--vermgensberatung-pwb|xn--vhquv|xn--vuq861b|xn--w4r85el8fhu5dnra|xn--w4rs40l|xn--wgbh1c|xn--wgbl6a|xn--xhq521b|xn--xkc2al3hye2a|xn--xkc2dl3a5ee0h|xn--y9a3aq|xn--yfro4i67o|xn--ygbi2ammx|xn--zfr164b|xperia|xxx|xyz|yachts|yahoo|yamaxun|yandex|ye|yodobashi|yoga|yokohama|you|youtube|yt|yun|za|zappos|zara|zero|zip|zippo|zm|zone|zuerich|zw'.split('|'); // macro, see gulpfile.js\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n\n\t@module linkify\n\t@submodule scanner\n\t@main scanner\n*/\n\nvar NUMBERS = '0123456789'.split('');\nvar ALPHANUM = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nvar WHITESPACE = [' ', '\\f', '\\r', '\\t', '\\v', '\\xA0', '\\u1680', '\\u180E']; // excluding line breaks\n\nvar domainStates = []; // states that jump to DOMAIN on /[a-z0-9]/\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.CharacterState(tokenClass);\n};\n\n// Frequently used states\nvar S_START = makeState();\nvar S_NUM = makeState(_text.NUM);\nvar S_DOMAIN = makeState(_text.DOMAIN);\nvar S_DOMAIN_HYPHEN = makeState(); // domain followed by 1 or more hyphen characters\nvar S_WS = makeState(_text.WS);\n\n// States for special URL symbols\nS_START.on('@', makeState(_text.AT)).on('.', makeState(_text.DOT)).on('+', makeState(_text.PLUS)).on('#', makeState(_text.POUND)).on('?', makeState(_text.QUERY)).on('/', makeState(_text.SLASH)).on('_', makeState(_text.UNDERSCORE)).on(':', makeState(_text.COLON)).on('{', makeState(_text.OPENBRACE)).on('[', makeState(_text.OPENBRACKET)).on('<', makeState(_text.OPENANGLEBRACKET)).on('(', makeState(_text.OPENPAREN)).on('}', makeState(_text.CLOSEBRACE)).on(']', makeState(_text.CLOSEBRACKET)).on('>', makeState(_text.CLOSEANGLEBRACKET)).on(')', makeState(_text.CLOSEPAREN)).on('&', makeState(_text.AMPERSAND)).on([',', ';', '!', '\"', '\\''], makeState(_text.PUNCTUATION));\n\n// Whitespace jumps\n// Tokens of only non-newline whitespace are arbitrarily long\nS_START.on('\\n', makeState(_text.NL)).on(WHITESPACE, S_WS);\n\n// If any whitespace except newline, more whitespace!\nS_WS.on(WHITESPACE, S_WS);\n\n// Generates states for top-level domains\n// Note that this is most accurate when tlds are in alphabetical order\nfor (var i = 0; i < tlds.length; i++) {\n\tvar newStates = (0, _state.stateify)(tlds[i], S_START, _text.TLD, _text.DOMAIN);\n\tdomainStates.push.apply(domainStates, newStates);\n}\n\n// Collect the states generated by different protocls\nvar partialProtocolFileStates = (0, _state.stateify)('file', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolFtpStates = (0, _state.stateify)('ftp', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolHttpStates = (0, _state.stateify)('http', S_START, _text.DOMAIN, _text.DOMAIN);\nvar partialProtocolMailtoStates = (0, _state.stateify)('mailto', S_START, _text.DOMAIN, _text.DOMAIN);\n\n// Add the states to the array of DOMAINeric states\ndomainStates.push.apply(domainStates, partialProtocolFileStates);\ndomainStates.push.apply(domainStates, partialProtocolFtpStates);\ndomainStates.push.apply(domainStates, partialProtocolHttpStates);\ndomainStates.push.apply(domainStates, partialProtocolMailtoStates);\n\n// Protocol states\nvar S_PROTOCOL_FILE = partialProtocolFileStates.pop();\nvar S_PROTOCOL_FTP = partialProtocolFtpStates.pop();\nvar S_PROTOCOL_HTTP = partialProtocolHttpStates.pop();\nvar S_MAILTO = partialProtocolMailtoStates.pop();\nvar S_PROTOCOL_SECURE = makeState(_text.DOMAIN);\nvar S_FULL_PROTOCOL = makeState(_text.PROTOCOL); // Full protocol ends with COLON\nvar S_FULL_MAILTO = makeState(_text.MAILTO); // Mailto ends with COLON\n\n// Secure protocols (end with 's')\nS_PROTOCOL_FTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\nS_PROTOCOL_HTTP.on('s', S_PROTOCOL_SECURE).on(':', S_FULL_PROTOCOL);\n\ndomainStates.push(S_PROTOCOL_SECURE);\n\n// Become protocol tokens after a COLON\nS_PROTOCOL_FILE.on(':', S_FULL_PROTOCOL);\nS_PROTOCOL_SECURE.on(':', S_FULL_PROTOCOL);\nS_MAILTO.on(':', S_FULL_MAILTO);\n\n// Localhost\nvar partialLocalhostStates = (0, _state.stateify)('localhost', S_START, _text.LOCALHOST, _text.DOMAIN);\ndomainStates.push.apply(domainStates, partialLocalhostStates);\n\n// Everything else\n// DOMAINs make more DOMAINs\n// Number and character transitions\nS_START.on(NUMBERS, S_NUM);\nS_NUM.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_NUM).on(ALPHANUM, S_DOMAIN); // number becomes DOMAIN\n\nS_DOMAIN.on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n\n// All the generated states should have a jump to DOMAIN\nfor (var _i = 0; _i < domainStates.length; _i++) {\n\tdomainStates[_i].on('-', S_DOMAIN_HYPHEN).on(ALPHANUM, S_DOMAIN);\n}\n\nS_DOMAIN_HYPHEN.on('-', S_DOMAIN_HYPHEN).on(NUMBERS, S_DOMAIN).on(ALPHANUM, S_DOMAIN);\n\n// Set default transition\nS_START.defaultTransition = makeState(_text.SYM);\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {String} str Input string to scan\n\t@return {Array} Array of TOKEN instances\n*/\nvar run = function run(str) {\n\n\t// The state machine only looks at lowercase strings.\n\t// This selective `toLowerCase` is used because lowercasing the entire\n\t// string causes the length and character position to vary in some in some\n\t// non-English strings. This happens only on V8-based runtimes.\n\tvar lowerStr = str.replace(/[A-Z]/g, function (c) {\n\t\treturn c.toLowerCase();\n\t});\n\tvar len = str.length;\n\tvar tokens = []; // return value\n\n\tvar cursor = 0;\n\n\t// Tokenize the string\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar nextState = null;\n\t\tvar tokenLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && (nextState = state.next(lowerStr[cursor]))) {\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\ttokenLength++;\n\t\t\tcursor++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\t\t\tcontinue;\n\t\t} // Should never happen\n\n\t\t// Roll back to the latest accepting state\n\t\tcursor -= sinceAccepts;\n\t\ttokenLength -= sinceAccepts;\n\n\t\t// Get the class for the new token\n\t\tvar TOKEN = latestAccepting.emit(); // Current token class\n\n\t\t// No more jumps, just make a new token\n\t\ttokens.push(new TOKEN(str.substr(cursor - tokenLength, tokenLength)));\n\t}\n\n\treturn tokens;\n};\n\nvar start = S_START;\nexports.State = _state.CharacterState;\nexports.TOKENS = TOKENS;\nexports.run = run;\nexports.start = start;","'use strict';\n\nexports.__esModule = true;\nexports.start = exports.run = exports.TOKENS = exports.State = undefined;\n\nvar _state = require('./state');\n\nvar _multi = require('./tokens/multi');\n\nvar MULTI_TOKENS = _interopRequireWildcard(_multi);\n\nvar _text = require('./tokens/text');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/Email_address (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main parser\n*/\n\nvar makeState = function makeState(tokenClass) {\n\treturn new _state.TokenState(tokenClass);\n};\n\n// The universal starting state.\nvar S_START = makeState();\n\n// Intermediate states for URLs. Note that domains that begin with a protocol\n// are treated slighly differently from those that don't.\nvar S_PROTOCOL = makeState(); // e.g., 'http:'\nvar S_MAILTO = makeState(); // 'mailto:'\nvar S_PROTOCOL_SLASH = makeState(); // e.g., '/', 'http:/''\nvar S_PROTOCOL_SLASH_SLASH = makeState(); // e.g., '//', 'http://'\nvar S_DOMAIN = makeState(); // parsed string ends with a potential domain name (A)\nvar S_DOMAIN_DOT = makeState(); // (A) domain followed by DOT\nvar S_TLD = makeState(_multi.URL); // (A) Simplest possible URL with no query string\nvar S_TLD_COLON = makeState(); // (A) URL followed by colon (potential port number here)\nvar S_TLD_PORT = makeState(_multi.URL); // TLD followed by a port number\nvar S_URL = makeState(_multi.URL); // Long URL with optional port and maybe query string\nvar S_URL_NON_ACCEPTING = makeState(); // URL followed by some symbols (will not be part of the final URL)\nvar S_URL_OPENBRACE = makeState(); // URL followed by {\nvar S_URL_OPENBRACKET = makeState(); // URL followed by [\nvar S_URL_OPENANGLEBRACKET = makeState(); // URL followed by <\nvar S_URL_OPENPAREN = makeState(); // URL followed by (\nvar S_URL_OPENBRACE_Q = makeState(_multi.URL); // URL followed by { and some symbols that the URL can end it\nvar S_URL_OPENBRACKET_Q = makeState(_multi.URL); // URL followed by [ and some symbols that the URL can end it\nvar S_URL_OPENANGLEBRACKET_Q = makeState(_multi.URL); // URL followed by < and some symbols that the URL can end it\nvar S_URL_OPENPAREN_Q = makeState(_multi.URL); // URL followed by ( and some symbols that the URL can end it\nvar S_URL_OPENBRACE_SYMS = makeState(); // S_URL_OPENBRACE_Q followed by some symbols it cannot end it\nvar S_URL_OPENBRACKET_SYMS = makeState(); // S_URL_OPENBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENANGLEBRACKET_SYMS = makeState(); // S_URL_OPENANGLEBRACKET_Q followed by some symbols it cannot end it\nvar S_URL_OPENPAREN_SYMS = makeState(); // S_URL_OPENPAREN_Q followed by some symbols it cannot end it\nvar S_EMAIL_DOMAIN = makeState(); // parsed string starts with local email info + @ with a potential domain name (C)\nvar S_EMAIL_DOMAIN_DOT = makeState(); // (C) domain followed by DOT\nvar S_EMAIL = makeState(_multi.EMAIL); // (C) Possible email address (could have more tlds)\nvar S_EMAIL_COLON = makeState(); // (C) URL followed by colon (potential port number here)\nvar S_EMAIL_PORT = makeState(_multi.EMAIL); // (C) Email address with a port\nvar S_MAILTO_EMAIL = makeState(_multi.MAILTOEMAIL); // Email that begins with the mailto prefix (D)\nvar S_MAILTO_EMAIL_NON_ACCEPTING = makeState(); // (D) Followed by some non-query string chars\nvar S_LOCALPART = makeState(); // Local part of the email address\nvar S_LOCALPART_AT = makeState(); // Local part of the email address plus @\nvar S_LOCALPART_DOT = makeState(); // Local part of the email address plus '.' (localpart cannot end in .)\nvar S_NL = makeState(_multi.NL); // single new line\n\n// Make path from start to protocol (with '//')\nS_START.on(_text.NL, S_NL).on(_text.PROTOCOL, S_PROTOCOL).on(_text.MAILTO, S_MAILTO).on(_text.SLASH, S_PROTOCOL_SLASH);\n\nS_PROTOCOL.on(_text.SLASH, S_PROTOCOL_SLASH);\nS_PROTOCOL_SLASH.on(_text.SLASH, S_PROTOCOL_SLASH_SLASH);\n\n// The very first potential domain name\nS_START.on(_text.TLD, S_DOMAIN).on(_text.DOMAIN, S_DOMAIN).on(_text.LOCALHOST, S_TLD).on(_text.NUM, S_DOMAIN);\n\n// Force URL for protocol followed by anything sane\nS_PROTOCOL_SLASH_SLASH.on(_text.TLD, S_URL).on(_text.DOMAIN, S_URL).on(_text.NUM, S_URL).on(_text.LOCALHOST, S_URL);\n\n// Account for dots and hyphens\n// hyphens are usually parts of domain names\nS_DOMAIN.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL_DOMAIN.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Hyphen can jump back to a domain name\n\n// After the first domain and a dot, we can find either a URL or another domain\nS_DOMAIN_DOT.on(_text.TLD, S_TLD).on(_text.DOMAIN, S_DOMAIN).on(_text.NUM, S_DOMAIN).on(_text.LOCALHOST, S_DOMAIN);\n\nS_EMAIL_DOMAIN_DOT.on(_text.TLD, S_EMAIL).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.NUM, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL_DOMAIN);\n\n// S_TLD accepts! But the URL could be longer, try to find a match greedily\n// The `run` function should be able to \"rollback\" to the accepting state\nS_TLD.on(_text.DOT, S_DOMAIN_DOT);\nS_EMAIL.on(_text.DOT, S_EMAIL_DOMAIN_DOT);\n\n// Become real URLs after `SLASH` or `COLON NUM SLASH`\n// Here PSS and non-PSS converge\nS_TLD.on(_text.COLON, S_TLD_COLON).on(_text.SLASH, S_URL);\nS_TLD_COLON.on(_text.NUM, S_TLD_PORT);\nS_TLD_PORT.on(_text.SLASH, S_URL);\nS_EMAIL.on(_text.COLON, S_EMAIL_COLON);\nS_EMAIL_COLON.on(_text.NUM, S_EMAIL_PORT);\n\n// Types of characters the URL can definitely end in\nvar qsAccepting = [_text.DOMAIN, _text.AT, _text.LOCALHOST, _text.NUM, _text.PLUS, _text.POUND, _text.PROTOCOL, _text.SLASH, _text.TLD, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND];\n\n// Types of tokens that can follow a URL and be part of the query string\n// but cannot be the very last characters\n// Characters that cannot appear in the URL at all should be excluded\nvar qsNonAccepting = [_text.COLON, _text.DOT, _text.QUERY, _text.PUNCTUATION, _text.CLOSEBRACE, _text.CLOSEBRACKET, _text.CLOSEANGLEBRACKET, _text.CLOSEPAREN, _text.OPENBRACE, _text.OPENBRACKET, _text.OPENANGLEBRACKET, _text.OPENPAREN];\n\n// These states are responsible primarily for determining whether or not to\n// include the final round bracket.\n\n// URL, followed by an opening bracket\nS_URL.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// URL with extra symbols at the end, followed by an opening bracket\nS_URL_NON_ACCEPTING.on(_text.OPENBRACE, S_URL_OPENBRACE).on(_text.OPENBRACKET, S_URL_OPENBRACKET).on(_text.OPENANGLEBRACKET, S_URL_OPENANGLEBRACKET).on(_text.OPENPAREN, S_URL_OPENPAREN);\n\n// Closing bracket component. This character WILL be included in the URL\nS_URL_OPENBRACE.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_Q.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_Q.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_Q.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_Q.on(_text.CLOSEPAREN, S_URL);\nS_URL_OPENBRACE_SYMS.on(_text.CLOSEBRACE, S_URL);\nS_URL_OPENBRACKET_SYMS.on(_text.CLOSEBRACKET, S_URL);\nS_URL_OPENANGLEBRACKET_SYMS.on(_text.CLOSEANGLEBRACKET, S_URL);\nS_URL_OPENPAREN_SYMS.on(_text.CLOSEPAREN, S_URL);\n\n// URL that beings with an opening bracket, followed by a symbols.\n// Note that the final state can still be `S_URL_OPENBRACE_Q` (if the URL only\n// has a single opening bracket for some reason).\nS_URL_OPENBRACE.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// URL that begins with an opening bracket, followed by some symbols\nS_URL_OPENBRACE_Q.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_Q.on(qsNonAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_Q.on(qsNonAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_Q.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_Q.on(qsNonAccepting, S_URL_OPENPAREN_Q);\n\nS_URL_OPENBRACE_SYMS.on(qsAccepting, S_URL_OPENBRACE_Q);\nS_URL_OPENBRACKET_SYMS.on(qsAccepting, S_URL_OPENBRACKET_Q);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsAccepting, S_URL_OPENANGLEBRACKET_Q);\nS_URL_OPENPAREN_SYMS.on(qsAccepting, S_URL_OPENPAREN_Q);\nS_URL_OPENBRACE_SYMS.on(qsNonAccepting, S_URL_OPENBRACE_SYMS);\nS_URL_OPENBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENBRACKET_SYMS);\nS_URL_OPENANGLEBRACKET_SYMS.on(qsNonAccepting, S_URL_OPENANGLEBRACKET_SYMS);\nS_URL_OPENPAREN_SYMS.on(qsNonAccepting, S_URL_OPENPAREN_SYMS);\n\n// Account for the query string\nS_URL.on(qsAccepting, S_URL);\nS_URL_NON_ACCEPTING.on(qsAccepting, S_URL);\n\nS_URL.on(qsNonAccepting, S_URL_NON_ACCEPTING);\nS_URL_NON_ACCEPTING.on(qsNonAccepting, S_URL_NON_ACCEPTING);\n\n// Email address-specific state definitions\n// Note: We are not allowing '/' in email addresses since this would interfere\n// with real URLs\n\n// For addresses with the mailto prefix\n// 'mailto:' followed by anything sane is a valid email\nS_MAILTO.on(_text.TLD, S_MAILTO_EMAIL).on(_text.DOMAIN, S_MAILTO_EMAIL).on(_text.NUM, S_MAILTO_EMAIL).on(_text.LOCALHOST, S_MAILTO_EMAIL);\n\n// Greedily get more potential valid email values\nS_MAILTO_EMAIL.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\nS_MAILTO_EMAIL_NON_ACCEPTING.on(qsAccepting, S_MAILTO_EMAIL).on(qsNonAccepting, S_MAILTO_EMAIL_NON_ACCEPTING);\n\n// For addresses without the mailto prefix\n// Tokens allowed in the localpart of the email\nvar localpartAccepting = [_text.DOMAIN, _text.NUM, _text.PLUS, _text.POUND, _text.QUERY, _text.UNDERSCORE, _text.SYM, _text.AMPERSAND, _text.TLD];\n\n// Some of the tokens in `localpartAccepting` are already accounted for here and\n// will not be overwritten (don't worry)\nS_DOMAIN.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_TLD.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT);\nS_DOMAIN_DOT.on(localpartAccepting, S_LOCALPART);\n\n// Okay we're on a localpart. Now what?\n// TODO: IP addresses and what if the email starts with numbers?\nS_LOCALPART.on(localpartAccepting, S_LOCALPART).on(_text.AT, S_LOCALPART_AT) // close to an email address now\n.on(_text.DOT, S_LOCALPART_DOT);\nS_LOCALPART_DOT.on(localpartAccepting, S_LOCALPART);\nS_LOCALPART_AT.on(_text.TLD, S_EMAIL_DOMAIN).on(_text.DOMAIN, S_EMAIL_DOMAIN).on(_text.LOCALHOST, S_EMAIL);\n// States following `@` defined above\n\nvar run = function run(tokens) {\n\tvar len = tokens.length;\n\tvar cursor = 0;\n\tvar multis = [];\n\tvar textTokens = [];\n\n\twhile (cursor < len) {\n\t\tvar state = S_START;\n\t\tvar secondState = null;\n\t\tvar nextState = null;\n\t\tvar multiLength = 0;\n\t\tvar latestAccepting = null;\n\t\tvar sinceAccepts = -1;\n\n\t\twhile (cursor < len && !(secondState = state.next(tokens[cursor]))) {\n\t\t\t// Starting tokens with nowhere to jump to.\n\t\t\t// Consider these to be just plain text\n\t\t\ttextTokens.push(tokens[cursor++]);\n\t\t}\n\n\t\twhile (cursor < len && (nextState = secondState || state.next(tokens[cursor]))) {\n\n\t\t\t// Get the next state\n\t\t\tsecondState = null;\n\t\t\tstate = nextState;\n\n\t\t\t// Keep track of the latest accepting state\n\t\t\tif (state.accepts()) {\n\t\t\t\tsinceAccepts = 0;\n\t\t\t\tlatestAccepting = state;\n\t\t\t} else if (sinceAccepts >= 0) {\n\t\t\t\tsinceAccepts++;\n\t\t\t}\n\n\t\t\tcursor++;\n\t\t\tmultiLength++;\n\t\t}\n\n\t\tif (sinceAccepts < 0) {\n\n\t\t\t// No accepting state was found, part of a regular text token\n\t\t\t// Add all the tokens we looked at to the text tokens array\n\t\t\tfor (var i = cursor - multiLength; i < cursor; i++) {\n\t\t\t\ttextTokens.push(tokens[i]);\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Accepting state!\n\n\t\t\t// First close off the textTokens (if available)\n\t\t\tif (textTokens.length > 0) {\n\t\t\t\tmultis.push(new _multi.TEXT(textTokens));\n\t\t\t\ttextTokens = [];\n\t\t\t}\n\n\t\t\t// Roll back to the latest accepting state\n\t\t\tcursor -= sinceAccepts;\n\t\t\tmultiLength -= sinceAccepts;\n\n\t\t\t// Create a new multitoken\n\t\t\tvar MULTI = latestAccepting.emit();\n\t\t\tmultis.push(new MULTI(tokens.slice(cursor - multiLength, cursor)));\n\t\t}\n\t}\n\n\t// Finally close off the textTokens (if available)\n\tif (textTokens.length > 0) {\n\t\tmultis.push(new _multi.TEXT(textTokens));\n\t}\n\n\treturn multis;\n};\n\nexports.State = _state.TokenState;\nexports.TOKENS = MULTI_TOKENS;\nexports.run = run;\nexports.start = S_START;","'use strict';\n\nexports.__esModule = true;\nexports.URL = exports.TEXT = exports.NL = exports.EMAIL = exports.MAILTOEMAIL = exports.Base = undefined;\n\nvar _createTokenClass = require('./create-token-class');\n\nvar _class = require('../../utils/class');\n\nvar _text = require('./text');\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n// Is the given token a valid domain token?\n// Should nums be included here?\nfunction isDomainToken(token) {\n\treturn token instanceof _text.DOMAIN || token instanceof _text.TLD;\n}\n\n/**\n\tAbstract class used for manufacturing tokens of text tokens. That is rather\n\tthan the value for a token being a small string of text, it's value an array\n\tof text tokens.\n\n\tUsed for grouping together URLs, emails, hashtags, and other potential\n\tcreations.\n\n\t@class MultiToken\n\t@abstract\n*/\nvar MultiToken = (0, _createTokenClass.createTokenClass)();\n\nMultiToken.prototype = {\n\t/**\n \tString representing the type for this token\n \t@property type\n \t@default 'TOKEN'\n */\n\ttype: 'token',\n\n\t/**\n \tIs this multitoken a link?\n \t@property isLink\n \t@default false\n */\n\tisLink: false,\n\n\t/**\n \tReturn the string this token represents.\n \t@method toString\n \t@return {String}\n */\n\ttoString: function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.v.length; i++) {\n\t\t\tresult.push(this.v[i].toString());\n\t\t}\n\t\treturn result.join('');\n\t},\n\n\n\t/**\n \tWhat should the value for this token be in the `href` HTML attribute?\n \tReturns the `.toString` value by default.\n \t\t@method toHref\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\treturn this.toString();\n\t},\n\n\n\t/**\n \tReturns a hash of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {String} [protocol] `'http'` by default\n \t@return {Object}\n */\n\ttoObject: function toObject() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\treturn {\n\t\t\ttype: this.type,\n\t\t\tvalue: this.toString(),\n\t\t\thref: this.toHref(protocol)\n\t\t};\n\t}\n};\n\n/**\n\tRepresents an arbitrarily mailto email address with the prefix included\n\t@class MAILTO\n\t@extends MultiToken\n*/\nvar MAILTOEMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true\n});\n\n/**\n\tRepresents a list of tokens making up a valid email address\n\t@class EMAIL\n\t@extends MultiToken\n*/\nvar EMAIL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'email',\n\tisLink: true,\n\ttoHref: function toHref() {\n\t\treturn 'mailto:' + this.toString();\n\t}\n});\n\n/**\n\tRepresents some plain text\n\t@class TEXT\n\t@extends MultiToken\n*/\nvar TEXT = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'text' });\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class NL\n\t@extends MultiToken\n*/\nvar NL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), { type: 'nl' });\n\n/**\n\tRepresents a list of tokens making up a valid URL\n\t@class URL\n\t@extends MultiToken\n*/\nvar URL = (0, _class.inherits)(MultiToken, (0, _createTokenClass.createTokenClass)(), {\n\ttype: 'url',\n\tisLink: true,\n\n\t/**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@method href\n \t@param {String} protocol\n \t@return {String}\n */\n\ttoHref: function toHref() {\n\t\tvar protocol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'http';\n\n\t\tvar hasProtocol = false;\n\t\tvar hasSlashSlash = false;\n\t\tvar tokens = this.v;\n\t\tvar result = [];\n\t\tvar i = 0;\n\n\t\t// Make the first part of the domain lowercase\n\t\t// Lowercase protocol\n\t\twhile (tokens[i] instanceof _text.PROTOCOL) {\n\t\t\thasProtocol = true;\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Skip slash-slash\n\t\twhile (tokens[i] instanceof _text.SLASH) {\n\t\t\thasSlashSlash = true;\n\t\t\tresult.push(tokens[i].toString());\n\t\t\ti++;\n\t\t}\n\n\t\t// Lowercase all other characters in the domain\n\t\twhile (isDomainToken(tokens[i])) {\n\t\t\tresult.push(tokens[i].toString().toLowerCase());\n\t\t\ti++;\n\t\t}\n\n\t\t// Leave all other characters as they were written\n\t\tfor (; i < tokens.length; i++) {\n\t\t\tresult.push(tokens[i].toString());\n\t\t}\n\n\t\tresult = result.join('');\n\n\t\tif (!(hasProtocol || hasSlashSlash)) {\n\t\t\tresult = protocol + '://' + result;\n\t\t}\n\n\t\treturn result;\n\t},\n\thasProtocol: function hasProtocol() {\n\t\treturn this.v[0] instanceof _text.PROTOCOL;\n\t}\n});\n\nexports.Base = MultiToken;\nexports.MAILTOEMAIL = MAILTOEMAIL;\nexports.EMAIL = EMAIL;\nexports.NL = NL;\nexports.TEXT = TEXT;\nexports.URL = URL;","module.exports = require('./lib/linkify-string').default;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tConvert strings of text into linkable HTML text\n */\n\nvar Options = options.Options;\n\n\nfunction escapeText(text) {\n\treturn text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n}\n\nfunction escapeAttr(href) {\n\treturn href.replace(/\"/g, '"');\n}\n\nfunction attributesToString(attributes) {\n\tif (!attributes) {\n\t\treturn '';\n\t}\n\tvar result = [];\n\n\tfor (var attr in attributes) {\n\t\tvar val = attributes[attr] + '';\n\t\tresult.push(attr + '=\"' + escapeAttr(val) + '\"');\n\t}\n\treturn result.join(' ');\n}\n\nfunction linkifyStr(str) {\n\tvar opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\topts = new Options(opts);\n\n\tvar tokens = tokenize(str);\n\tvar result = [];\n\n\tfor (var i = 0; i < tokens.length; i++) {\n\t\tvar token = tokens[i];\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push('<br>\\n');\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(escapeText(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\tvar link = '<' + tagName + ' href=\"' + escapeAttr(formattedHref) + '\"';\n\n\t\tif (className) {\n\t\t\tlink += ' class=\"' + escapeAttr(className) + '\"';\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink += ' target=\"' + escapeAttr(target) + '\"';\n\t\t}\n\n\t\tif (attributes) {\n\t\t\tlink += ' ' + attributesToString(attributes);\n\t\t}\n\n\t\tlink += '>' + escapeText(formatted) + '</' + tagName + '>';\n\t\tresult.push(link);\n\t}\n\n\treturn result.join('');\n}\n\nif (!String.prototype.linkify) {\n\ttry {\n\t\tObject.defineProperty(String.prototype, 'linkify', {\n\t\t\tset: function set() {},\n\t\t\tget: function get() {\n\t\t\t\treturn function linkify(opts) {\n\t\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t} catch (e) {\n\t\t// IE 8 doesn't like Object.defineProperty on non-DOM objects\n\t\tif (!String.prototype.linkify) {\n\t\t\tString.prototype.linkify = function (opts) {\n\t\t\t\treturn linkifyStr(this, opts);\n\t\t\t};\n\t\t}\n\t}\n}\n\nexports.default = linkifyStr;","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _WhoIsTyping = require('../../WhoIsTyping');\n\nvar _WhoIsTyping2 = _interopRequireDefault(_WhoIsTyping);\n\nvar _MatrixClientPeg = require('../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _MemberAvatar = require('../views/avatars/MemberAvatar');\n\nvar _MemberAvatar2 = _interopRequireDefault(_MemberAvatar);\n\nvar _Resend = require('../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _cryptodevices = require('../../cryptodevices');\n\nvar cryptodevices = _interopRequireWildcard(_cryptodevices);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ErrorUtils = require('../../utils/ErrorUtils');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar STATUS_BAR_HIDDEN = 0;\nvar STATUS_BAR_EXPANDED = 1;\nvar STATUS_BAR_EXPANDED_LARGE = 2;\n\nfunction getUnsentMessages(room) {\n if (!room) {\n return [];\n }\n return room.getPendingEvents().filter(function (ev) {\n return ev.status === _matrixJsSdk2.default.EventStatus.NOT_SENT;\n });\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomStatusBar',\n\n propTypes: {\n // the room this statusbar is representing.\n room: _propTypes2.default.object.isRequired,\n\n // the number of messages which have arrived since we've been scrolled up\n numUnreadMessages: _propTypes2.default.number,\n\n // this is true if we are fully scrolled-down, and are looking at\n // the end of the live timeline.\n atEndOfLiveTimeline: _propTypes2.default.bool,\n\n // This is true when the user is alone in the room, but has also sent a message.\n // Used to suggest to the user to invite someone\n sentMessageAndIsAlone: _propTypes2.default.bool,\n\n // true if there is an active call in this room (means we show\n // the 'Active Call' text in the status bar if there is nothing\n // more interesting)\n hasActiveCall: _propTypes2.default.bool,\n\n // Number of names to display in typing indication. E.g. set to 3, will\n // result in \"X, Y, Z and 100 others are typing.\"\n whoIsTypingLimit: _propTypes2.default.number,\n\n // true if the room is being peeked at. This affects components that shouldn't\n // logically be shown when peeking, such as a prompt to invite people to a room.\n isPeeking: _propTypes2.default.bool,\n\n // callback for when the user clicks on the 'resend all' button in the\n // 'unsent messages' bar\n onResendAllClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'cancel all' button in the\n // 'unsent messages' bar\n onCancelAllClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'invite others' button in the\n // 'you are alone' bar\n onInviteClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'stop warning me' button in the\n // 'you are alone' bar\n onStopWarningClick: _propTypes2.default.func,\n\n // callback for when the user clicks on the 'scroll to bottom' button\n onScrollToBottomClick: _propTypes2.default.func,\n\n // callback for when we do something that changes the size of the\n // status bar. This is used to trigger a re-layout in the parent\n // component.\n onResize: _propTypes2.default.func,\n\n // callback for when the status bar can be hidden from view, as it is\n // not displaying anything\n onHidden: _propTypes2.default.func,\n\n // callback for when the status bar is displaying something and should\n // be visible\n onVisible: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n whoIsTypingLimit: 3\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n syncState: _MatrixClientPeg2.default.get().getSyncState(),\n syncStateData: _MatrixClientPeg2.default.get().getSyncStateData(),\n usersTyping: _WhoIsTyping2.default.usersTypingApartFromMe(this.props.room),\n unsentMessages: getUnsentMessages(this.props.room)\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"sync\", this.onSyncStateChange);\n _MatrixClientPeg2.default.get().on(\"RoomMember.typing\", this.onRoomMemberTyping);\n _MatrixClientPeg2.default.get().on(\"Room.localEchoUpdated\", this._onRoomLocalEchoUpdated);\n\n this._checkSize();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._checkSize();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // we may have entirely lost our client as we're logging out before clicking login on the guest bar...\n var client = _MatrixClientPeg2.default.get();\n if (client) {\n client.removeListener(\"sync\", this.onSyncStateChange);\n client.removeListener(\"RoomMember.typing\", this.onRoomMemberTyping);\n client.removeListener(\"Room.localEchoUpdated\", this._onRoomLocalEchoUpdated);\n }\n },\n\n onSyncStateChange: function onSyncStateChange(state, prevState, data) {\n if (state === \"SYNCING\" && prevState === \"SYNCING\") {\n return;\n }\n this.setState({\n syncState: state,\n syncStateData: data\n });\n },\n\n onRoomMemberTyping: function onRoomMemberTyping(ev, member) {\n this.setState({\n usersTyping: _WhoIsTyping2.default.usersTypingApartFromMeAndIgnored(this.props.room)\n });\n },\n\n _onSendWithoutVerifyingClick: function _onSendWithoutVerifyingClick() {\n var _this = this;\n\n cryptodevices.getUnknownDevicesForRoom(_MatrixClientPeg2.default.get(), this.props.room).then(function (devices) {\n cryptodevices.markAllDevicesKnown(_MatrixClientPeg2.default.get(), devices);\n _Resend2.default.resendUnsentEvents(_this.props.room);\n });\n },\n\n _onResendAllClick: function _onResendAllClick() {\n _Resend2.default.resendUnsentEvents(this.props.room);\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n _onCancelAllClick: function _onCancelAllClick() {\n _Resend2.default.cancelUnsentEvents(this.props.room);\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n },\n\n _onShowDevicesClick: function _onShowDevicesClick() {\n cryptodevices.showUnknownDeviceDialogForMessages(_MatrixClientPeg2.default.get(), this.props.room);\n },\n\n _onRoomLocalEchoUpdated: function _onRoomLocalEchoUpdated(event, room, oldEventId, oldStatus) {\n if (room.roomId !== this.props.room.roomId) return;\n\n this.setState({\n unsentMessages: getUnsentMessages(this.props.room)\n });\n },\n\n // Check whether current size is greater than 0, if yes call props.onVisible\n _checkSize: function _checkSize() {\n if (this._getSize()) {\n if (this.props.onVisible) this.props.onVisible();\n } else {\n if (this.props.onHidden) this.props.onHidden();\n }\n },\n\n // We don't need the actual height - just whether it is likely to have\n // changed - so we use '0' to indicate normal size, and other values to\n // indicate other sizes.\n _getSize: function _getSize() {\n if (this._shouldShowConnectionError() || this.state.usersTyping.length > 0 || this.props.numUnreadMessages || !this.props.atEndOfLiveTimeline || this.props.hasActiveCall || this.props.sentMessageAndIsAlone) {\n return STATUS_BAR_EXPANDED;\n } else if (this.state.unsentMessages.length > 0) {\n return STATUS_BAR_EXPANDED_LARGE;\n }\n return STATUS_BAR_HIDDEN;\n },\n\n // return suitable content for the image on the left of the status bar.\n //\n // if wantPlaceholder is true, we include a \"...\" placeholder if\n // there is nothing better to put in.\n _getIndicator: function _getIndicator(wantPlaceholder) {\n if (this.props.numUnreadMessages) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_scrollDownIndicator',\n onClick: this.props.onScrollToBottomClick },\n _react2.default.createElement('img', { src: 'img/newmessages.svg', width: '24', height: '24',\n alt: '' })\n );\n }\n\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n if (!this.props.atEndOfLiveTimeline) {\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_RoomStatusBar_scrollDownIndicator',\n onClick: this.props.onScrollToBottomClick },\n _react2.default.createElement('img', { src: 'img/scrolldown.svg', width: '24', height: '24',\n alt: (0, _languageHandler._t)(\"Scroll to bottom of page\"),\n title: (0, _languageHandler._t)(\"Scroll to bottom of page\") })\n );\n }\n\n if (this.props.hasActiveCall) {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n return _react2.default.createElement(TintableSvg, { src: 'img/sound-indicator.svg', width: '23', height: '20' });\n }\n\n if (this._shouldShowConnectionError()) {\n return null;\n }\n\n if (wantPlaceholder) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_typingIndicatorAvatars' },\n this._renderTypingIndicatorAvatars(this.props.whoIsTypingLimit)\n );\n }\n\n return null;\n },\n\n _renderTypingIndicatorAvatars: function _renderTypingIndicatorAvatars(limit) {\n var users = this.state.usersTyping;\n\n var othersCount = 0;\n if (users.length > limit) {\n othersCount = users.length - limit + 1;\n users = users.slice(0, limit - 1);\n }\n\n var avatars = users.map(function (u) {\n return _react2.default.createElement(_MemberAvatar2.default, {\n key: u.userId,\n member: u,\n width: 24,\n height: 24,\n resizeMethod: 'crop'\n });\n });\n\n if (othersCount > 0) {\n avatars.push(_react2.default.createElement(\n 'span',\n { className: 'mx_RoomStatusBar_typingIndicatorRemaining', key: 'others' },\n '+',\n othersCount\n ));\n }\n\n return avatars;\n },\n\n _shouldShowConnectionError: function _shouldShowConnectionError() {\n // no conn bar trumps unread count since you can't get unread messages\n // without a connection! (technically may already have some but meh)\n // It also trumps the \"some not sent\" msg since you can't resend without\n // a connection!\n // There's one situation in which we don't show this 'no connection' bar, and that's\n // if it's a resource limit exceeded error: those are shown in the top bar.\n var errorIsMauError = Boolean(this.state.syncStateData && this.state.syncStateData.error && this.state.syncStateData.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED');\n return this.state.syncState === \"ERROR\" && !errorIsMauError;\n },\n\n _getUnsentMessageContent: function _getUnsentMessageContent() {\n var _this2 = this;\n\n var unsentMessages = this.state.unsentMessages;\n if (!unsentMessages.length) return null;\n\n var title = void 0;\n var content = void 0;\n\n var hasUDE = unsentMessages.some(function (m) {\n return m.error && m.error.name === \"UnknownDeviceError\";\n });\n\n if (hasUDE) {\n title = (0, _languageHandler._t)(\"Message not sent due to unknown devices being present\");\n content = (0, _languageHandler._t)(\"<showDevicesText>Show devices</showDevicesText>, <sendAnywayText>send anyway</sendAnywayText> or <cancelText>cancel</cancelText>.\", {}, {\n 'showDevicesText': function showDevicesText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'resend', onClick: _this2._onShowDevicesClick },\n sub\n );\n },\n 'sendAnywayText': function sendAnywayText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'sendAnyway', onClick: _this2._onSendWithoutVerifyingClick },\n sub\n );\n },\n 'cancelText': function cancelText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'cancel', onClick: _this2._onCancelAllClick },\n sub\n );\n }\n });\n } else {\n var consentError = null;\n var resourceLimitError = null;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(unsentMessages), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var m = _step.value;\n\n if (m.error && m.error.errcode === 'M_CONSENT_NOT_GIVEN') {\n consentError = m.error;\n break;\n } else if (m.error && m.error.errcode === 'M_RESOURCE_LIMIT_EXCEEDED') {\n resourceLimitError = m.error;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (consentError) {\n title = (0, _languageHandler._t)(\"You can't send any messages until you review and agree to \" + \"<consentLink>our terms and conditions</consentLink>.\", {}, {\n 'consentLink': function consentLink(sub) {\n return _react2.default.createElement(\n 'a',\n { href: consentError.data && consentError.data.consent_uri, target: '_blank' },\n sub\n );\n }\n });\n } else if (resourceLimitError) {\n title = (0, _ErrorUtils.messageForResourceLimitError)(resourceLimitError.data.limit_type, resourceLimitError.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. \" + \"Please <a>contact your service administrator</a> to continue using the service.\"),\n '': (0, _languageHandler._td)(\"Your message wasn't sent because this homeserver has exceeded a resource limit. \" + \"Please <a>contact your service administrator</a> to continue using the service.\")\n });\n } else if (unsentMessages.length === 1 && unsentMessages[0].error && unsentMessages[0].error.data && unsentMessages[0].error.data.error) {\n title = unsentMessages[0].error.data.error;\n } else {\n title = (0, _languageHandler._t)('%(count)s of your messages have not been sent.', { count: unsentMessages.length });\n }\n content = (0, _languageHandler._t)(\"%(count)s <resendText>Resend all</resendText> or <cancelText>cancel all</cancelText> now. \" + \"You can also select individual messages to resend or cancel.\", { count: unsentMessages.length }, {\n 'resendText': function resendText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'resend', onClick: _this2._onResendAllClick },\n sub\n );\n },\n 'cancelText': function cancelText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'cancel', onClick: _this2._onCancelAllClick },\n sub\n );\n }\n });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: (0, _languageHandler._t)(\"Warning\"), alt: '' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_title' },\n title\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_desc' },\n content\n )\n )\n );\n },\n\n // return suitable content for the main (text) part of the status bar.\n _getContent: function _getContent() {\n var _this3 = this;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n if (this._shouldShowConnectionError()) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: '/!\\\\ ', alt: '/!\\\\ ' }),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_title' },\n (0, _languageHandler._t)('Connectivity to the server has been lost.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_connectionLostBar_desc' },\n (0, _languageHandler._t)('Sent messages will be stored until your connection has returned.')\n )\n )\n );\n }\n\n if (this.state.unsentMessages.length > 0) {\n return this._getUnsentMessageContent();\n }\n\n // unread count trumps who is typing since the unread count is only\n // set when you've scrolled up\n if (this.props.numUnreadMessages) {\n // MUST use var name \"count\" for pluralization to kick in\n var unreadMsgs = (0, _languageHandler._t)(\"%(count)s new messages\", { count: this.props.numUnreadMessages });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_unreadMessagesBar',\n onClick: this.props.onScrollToBottomClick },\n unreadMsgs\n );\n }\n\n var typingString = _WhoIsTyping2.default.whoIsTypingString(this.state.usersTyping, this.props.whoIsTypingLimit);\n if (typingString) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_typingBar' },\n _react2.default.createElement(\n EmojiText,\n null,\n typingString\n )\n );\n }\n\n if (this.props.hasActiveCall) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_callBar' },\n _react2.default.createElement(\n 'b',\n null,\n (0, _languageHandler._t)('Active call')\n )\n );\n }\n\n // If you're alone in the room, and have sent a message, suggest to invite someone\n if (this.props.sentMessageAndIsAlone && !this.props.isPeeking) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_isAlone' },\n (0, _languageHandler._t)(\"There's no one else here! Would you like to <inviteText>invite others</inviteText> \" + \"or <nowarnText>stop warning about the empty room</nowarnText>?\", {}, {\n 'inviteText': function inviteText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'invite', onClick: _this3.props.onInviteClick },\n sub\n );\n },\n 'nowarnText': function nowarnText(sub) {\n return _react2.default.createElement(\n 'a',\n { className: 'mx_RoomStatusBar_resend_link', key: 'nowarn', onClick: _this3.props.onStopWarningClick },\n sub\n );\n }\n })\n );\n }\n\n return null;\n },\n\n render: function render() {\n var content = this._getContent();\n var indicator = this._getIndicator(this.state.usersTyping.length > 0);\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomStatusBar_indicator' },\n indicator\n ),\n _react2.default.createElement(\n 'div',\n { role: 'alert' },\n content\n )\n );\n }\n});\n//# sourceMappingURL=RoomStatusBar.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MatrixClientPeg = require(\"./MatrixClientPeg\");\n\n\nmodule.exports = {\n usersTypingApartFromMeAndIgnored: function usersTypingApartFromMeAndIgnored(room) {\n return this.usersTyping(room, [MatrixClientPeg.get().credentials.userId].concat(MatrixClientPeg.get().getIgnoredUsers()));\n },\n\n usersTypingApartFromMe: function usersTypingApartFromMe(room) {\n return this.usersTyping(room, [MatrixClientPeg.get().credentials.userId]);\n },\n\n /**\n * Given a Room object and, optionally, a list of userID strings\n * to exclude, return a list of user objects who are typing.\n */\n usersTyping: function usersTyping(room, exclude) {\n var whoIsTyping = [];\n\n if (exclude === undefined) {\n exclude = [];\n }\n\n var memberKeys = (0, _keys2.default)(room.currentState.members);\n for (var i = 0; i < memberKeys.length; ++i) {\n var userId = memberKeys[i];\n\n if (room.currentState.members[userId].typing) {\n if (exclude.indexOf(userId) == -1) {\n whoIsTyping.push(room.currentState.members[userId]);\n }\n }\n }\n\n return whoIsTyping;\n },\n\n whoIsTypingString: function whoIsTypingString(whoIsTyping, limit) {\n var othersCount = 0;\n if (whoIsTyping.length > limit) {\n othersCount = whoIsTyping.length - limit + 1;\n }\n if (whoIsTyping.length == 0) {\n return '';\n } else if (whoIsTyping.length == 1) {\n return (0, _languageHandler._t)('%(displayName)s is typing', { displayName: whoIsTyping[0].name });\n }\n var names = whoIsTyping.map(function (m) {\n return m.name;\n });\n if (othersCount >= 1) {\n return (0, _languageHandler._t)('%(names)s and %(count)s others are typing', { names: names.slice(0, limit - 1).join(', '), count: othersCount });\n } else {\n var lastPerson = names.pop();\n return (0, _languageHandler._t)('%(names)s and %(lastPerson)s are typing', { names: names.join(', '), lastPerson: lastPerson });\n }\n }\n};\n//# sourceMappingURL=WhoIsTyping.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Unread = require('../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _RoomNotifs = require('../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// turn this on for drop & drag console debugging galore\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar debug = false;\n\nvar TRUNCATE_AT = 10;\n\nvar RoomSubList = _react2.default.createClass({\n displayName: 'RoomSubList',\n\n debug: debug,\n\n propTypes: {\n list: _propTypes2.default.arrayOf(_propTypes2.default.object).isRequired,\n label: _propTypes2.default.string.isRequired,\n tagName: _propTypes2.default.string,\n editable: _propTypes2.default.bool,\n\n order: _propTypes2.default.string.isRequired,\n\n // passed through to RoomTile and used to highlight room with `!` regardless of notifications count\n isInvite: _propTypes2.default.bool,\n\n startAsHidden: _propTypes2.default.bool,\n showSpinner: _propTypes2.default.bool, // true to show a spinner if 0 elements when expanded\n collapsed: _propTypes2.default.bool.isRequired, // is LeftPanel collapsed?\n onHeaderClick: _propTypes2.default.func,\n alwaysShowHeader: _propTypes2.default.bool,\n incomingCall: _propTypes2.default.object,\n onShowMoreRooms: _propTypes2.default.func,\n searchFilter: _propTypes2.default.string,\n emptyContent: _propTypes2.default.node, // content shown if the list is empty\n headerItems: _propTypes2.default.node, // content shown in the sublist header\n extraTiles: _propTypes2.default.arrayOf(_propTypes2.default.node), // extra elements added beneath tiles\n showEmpty: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n hidden: this.props.startAsHidden || false,\n truncateAt: TRUNCATE_AT,\n sortedList: []\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onHeaderClick: function onHeaderClick() {}, // NOP\n onShowMoreRooms: function onShowMoreRooms() {}, // NOP\n extraTiles: [],\n isInvite: false,\n showEmpty: true\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.setState({\n sortedList: this.applySearchFilter(this.props.list, this.props.searchFilter)\n });\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // order the room list appropriately before we re-render\n //if (debug) console.log(\"received new props, list = \" + newProps.list);\n this.setState({\n sortedList: this.applySearchFilter(newProps.list, newProps.searchFilter)\n });\n },\n\n applySearchFilter: function applySearchFilter(list, filter) {\n if (filter === \"\") return list;\n var lcFilter = filter.toLowerCase();\n // case insensitive if room name includes filter,\n // or if starts with `#` and one of room's aliases starts with filter\n return list.filter(function (room) {\n return room.name && room.name.toLowerCase().includes(lcFilter) || filter[0] === '#' && room.getAliases().some(function (alias) {\n return alias.toLowerCase().startsWith(lcFilter);\n });\n });\n },\n\n // The header is collapsable if it is hidden or not stuck\n // The dataset elements are added in the RoomList _initAndPositionStickyHeaders method\n isCollapsableOnClick: function isCollapsableOnClick() {\n var stuck = this.refs.header.dataset.stuck;\n if (this.state.hidden || stuck === undefined || stuck === \"none\") {\n return true;\n } else {\n return false;\n }\n },\n\n onAction: function onAction(payload) {\n // XXX: Previously RoomList would forceUpdate whenever on_room_read is dispatched,\n // but this is no longer true, so we must do it here (and can apply the small\n // optimisation of checking that we care about the room being read).\n //\n // Ultimately we need to transition to a state pushing flow where something\n // explicitly notifies the components concerned that the notif count for a room\n // has change (e.g. a Flux store).\n if (payload.action === 'on_room_read' && this.props.list.some(function (r) {\n return r.roomId === payload.roomId;\n })) {\n this.forceUpdate();\n }\n },\n\n onClick: function onClick(ev) {\n if (this.isCollapsableOnClick()) {\n // The header isCollapsable, so the click is to be interpreted as collapse and truncation logic\n var isHidden = !this.state.hidden;\n this.setState({ hidden: isHidden });\n\n if (isHidden) {\n // as good a way as any to reset the truncate state\n this.setState({ truncateAt: TRUNCATE_AT });\n }\n\n this.props.onShowMoreRooms();\n this.props.onHeaderClick(isHidden);\n } else {\n // The header is stuck, so the click is to be interpreted as a scroll to the header\n this.props.onHeaderClick(this.state.hidden, this.refs.header.dataset.originalPosition);\n }\n },\n\n onRoomTileClick: function onRoomTileClick(roomId, ev) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId,\n clear_search: ev && (ev.keyCode === _Keyboard.KeyCode.ENTER || ev.keyCode === _Keyboard.KeyCode.SPACE)\n });\n },\n\n\n _shouldShowNotifBadge: function _shouldShowNotifBadge(roomNotifState) {\n var showBadgeInStates = [RoomNotifs.ALL_MESSAGES, RoomNotifs.ALL_MESSAGES_LOUD];\n return showBadgeInStates.indexOf(roomNotifState) > -1;\n },\n\n _shouldShowMentionBadge: function _shouldShowMentionBadge(roomNotifState) {\n return roomNotifState !== RoomNotifs.MUTE;\n },\n\n /**\n * Total up all the notification counts from the rooms\n *\n * @param {Number} truncateAt If supplied will only total notifications for rooms outside the truncation number\n * @returns {Array} The array takes the form [total, highlight] where highlight is a bool\n */\n roomNotificationCount: function roomNotificationCount(truncateAt) {\n var self = this;\n\n if (this.props.isInvite) {\n return [0, true];\n }\n\n return this.props.list.reduce(function (result, room, index) {\n if (truncateAt === undefined || index >= truncateAt) {\n var roomNotifState = RoomNotifs.getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && self._shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && self._shouldShowMentionBadge(roomNotifState);\n var badges = notifBadges || mentionBadges;\n\n if (badges) {\n result[0] += notificationCount;\n if (highlight) {\n result[1] = true;\n }\n }\n }\n return result;\n }, [0, false]);\n },\n\n _updateSubListCount: function _updateSubListCount() {\n // Force an update by setting the state to the current state\n // Doing it this way rather than using forceUpdate(), so that the shouldComponentUpdate()\n // method is honoured\n this.setState(this.state);\n },\n\n makeRoomTiles: function makeRoomTiles() {\n var _this = this;\n\n var DNDRoomTile = _index2.default.getComponent(\"rooms.DNDRoomTile\");\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n return this.state.sortedList.map(function (room, index) {\n // XXX: is it evil to pass in this as a prop to RoomTile? Yes.\n\n // We should only use <DNDRoomTile /> when editable\n var RoomTileComponent = _this.props.editable ? DNDRoomTile : RoomTile;\n return _react2.default.createElement(RoomTileComponent, {\n index: index // For DND\n , room: room,\n roomSubList: _this,\n tagName: _this.props.tagName,\n key: room.roomId,\n collapsed: _this.props.collapsed || false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(room),\n highlight: room.getUnreadNotificationCount('highlight') > 0 || _this.props.isInvite,\n isInvite: _this.props.isInvite,\n refreshSubList: _this._updateSubListCount,\n incomingCall: null,\n onClick: _this.onRoomTileClick\n });\n });\n },\n\n _onNotifBadgeClick: function _onNotifBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n // find first room which has notifications and switch to it\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this.state.sortedList), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var room = _step.value;\n\n var roomNotifState = RoomNotifs.getRoomNotifsState(room.roomId);\n var highlight = room.getUnreadNotificationCount('highlight') > 0;\n var notificationCount = room.getUnreadNotificationCount();\n\n var notifBadges = notificationCount > 0 && this._shouldShowNotifBadge(roomNotifState);\n var mentionBadges = highlight && this._shouldShowMentionBadge(roomNotifState);\n\n if (notifBadges || mentionBadges) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: room.roomId\n });\n return;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n },\n\n _onInviteBadgeClick: function _onInviteBadgeClick(e) {\n // prevent the roomsublist collapsing\n e.preventDefault();\n e.stopPropagation();\n // switch to first room in sortedList as that'll be the top of the list for the user\n if (this.state.sortedList && this.state.sortedList.length > 0) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: this.state.sortedList[0].roomId\n });\n } else if (this.props.extraTiles && this.props.extraTiles.length > 0) {\n // Group Invites are different in that they are all extra tiles and not rooms\n // XXX: this is a horrible special case because Group Invite sublist is a hack\n if (this.props.extraTiles[0].props && this.props.extraTiles[0].props.group instanceof _matrixJsSdk.Group) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.extraTiles[0].props.group.groupId\n });\n }\n }\n },\n\n _getHeaderJsx: function _getHeaderJsx() {\n var subListNotifications = this.roomNotificationCount();\n var subListNotifCount = subListNotifications[0];\n var subListNotifHighlight = subListNotifications[1];\n\n var totalTiles = this.props.list.length + (this.props.extraTiles || []).length;\n var roomCount = totalTiles > 0 ? totalTiles : '';\n\n var chevronClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_chevron': true,\n 'mx_RoomSubList_chevronRight': this.state.hidden,\n 'mx_RoomSubList_chevronDown': !this.state.hidden\n });\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_badge': true,\n 'mx_RoomSubList_badgeHighlight': subListNotifHighlight\n });\n\n var badge = void 0;\n if (subListNotifCount > 0) {\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onNotifBadgeClick },\n FormattingUtils.formatCount(subListNotifCount)\n );\n } else if (this.props.isInvite) {\n // no notifications but highlight anyway because this is an invite badge\n badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this._onInviteBadgeClick },\n '!'\n );\n }\n\n // When collapsed, allow a long hover on the header to show user\n // the full tag name and room count\n var title = void 0;\n if (this.props.collapsed) {\n title = this.props.label;\n if (roomCount !== '') {\n title += \" [\" + roomCount + \"]\";\n }\n }\n\n var incomingCall = void 0;\n if (this.props.incomingCall) {\n var self = this;\n // Check if the incoming call is for this section\n var incomingCallRoom = this.props.list.filter(function (room) {\n return self.props.incomingCall.roomId === room.roomId;\n });\n\n if (incomingCallRoom.length === 1) {\n var IncomingCallBox = _index2.default.getComponent(\"voip.IncomingCallBox\");\n incomingCall = _react2.default.createElement(IncomingCallBox, { className: 'mx_RoomSubList_incomingCall', incomingCall: this.props.incomingCall });\n }\n }\n\n var tabindex = this.props.searchFilter === \"\" ? \"0\" : \"-1\";\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_labelContainer', title: title, ref: 'header' },\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onClick, className: 'mx_RoomSubList_label', tabIndex: tabindex },\n this.props.collapsed ? '' : this.props.label,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_roomCount' },\n roomCount\n ),\n _react2.default.createElement('div', { className: chevronClasses }),\n badge,\n incomingCall\n )\n );\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n var content = _react2.default.createElement('div', { className: 'mx_RoomSubList_chevronDown' });\n\n var overflowNotifications = this.roomNotificationCount(TRUNCATE_AT);\n var overflowNotifCount = overflowNotifications[0];\n var overflowNotifHighlight = overflowNotifications[1];\n if (overflowNotifCount && !this.props.collapsed) {\n content = FormattingUtils.formatCount(overflowNotifCount);\n }\n\n var badgeClasses = (0, _classnames2.default)({\n 'mx_RoomSubList_moreBadge': true,\n 'mx_RoomSubList_moreBadgeNotify': overflowNotifCount && !this.props.collapsed,\n 'mx_RoomSubList_moreBadgeHighlight': overflowNotifHighlight && !this.props.collapsed\n });\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_RoomSubList_ellipsis', onClick: this._showFullMemberList },\n _react2.default.createElement('div', { className: 'mx_RoomSubList_line' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList_more' },\n (0, _languageHandler._t)(\"more\")\n ),\n _react2.default.createElement(\n 'div',\n { className: badgeClasses },\n content\n )\n );\n },\n\n _showFullMemberList: function _showFullMemberList() {\n this.setState({\n truncateAt: -1\n });\n\n this.props.onShowMoreRooms();\n this.props.onHeaderClick(false);\n },\n\n render: function render() {\n var TruncatedList = _index2.default.getComponent('elements.TruncatedList');\n\n var content = void 0;\n\n if (this.props.showEmpty) {\n // this is new behaviour with still controversial UX in that in hiding RoomSubLists the drop zones for DnD\n // are also gone so when filtering users can't DnD rooms to some tags but is a lot cleaner otherwise.\n if (this.state.sortedList.length === 0 && !this.props.searchFilter && this.props.extraTiles.length === 0) {\n content = this.props.emptyContent;\n } else {\n var _content;\n\n content = this.makeRoomTiles();\n (_content = content).push.apply(_content, (0, _toConsumableArray3.default)(this.props.extraTiles));\n }\n } else {\n if (this.state.sortedList.length === 0 && this.props.extraTiles.length === 0) {\n // if no search filter is applied and there is a placeholder defined then show it, otherwise show nothing\n if (!this.props.searchFilter && this.props.emptyContent) {\n content = this.props.emptyContent;\n } else {\n // don't show an empty sublist\n return null;\n }\n } else {\n var _content2;\n\n content = this.makeRoomTiles();\n (_content2 = content).push.apply(_content2, (0, _toConsumableArray3.default)(this.props.extraTiles));\n }\n }\n\n if (this.state.sortedList.length > 0 || this.props.extraTiles.length > 0 || this.props.editable) {\n var subList = void 0;\n var classes = \"mx_RoomSubList\";\n\n if (!this.state.hidden) {\n subList = _react2.default.createElement(\n TruncatedList,\n { className: classes, truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile },\n content\n );\n } else {\n subList = _react2.default.createElement(TruncatedList, { className: classes });\n }\n\n var subListContent = _react2.default.createElement(\n 'div',\n null,\n this._getHeaderJsx(),\n subList\n );\n\n return this.props.editable ? _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n {\n droppableId: \"room-sub-list-droppable_\" + this.props.tagName,\n type: 'draggable-RoomTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n { ref: provided.innerRef },\n subListContent\n );\n }\n ) : subListContent;\n } else {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n if (this.props.showSpinner) {\n content = _react2.default.createElement(Loader, null);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSubList' },\n this.props.alwaysShowHeader ? this._getHeaderJsx() : undefined,\n this.state.hidden ? undefined : content\n );\n }\n }\n});\n\nmodule.exports = RoomSubList;\n//# sourceMappingURL=RoomSubList.js.map","\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _shouldHideEvent = require(\"../../shouldHideEvent\");\n\nvar _shouldHideEvent2 = _interopRequireDefault(_shouldHideEvent);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../languageHandler\");\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nvar _RoomViewStore = require(\"../../stores/RoomViewStore\");\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _RoomScrollStateStore = require(\"../../stores/RoomScrollStateStore\");\n\nvar _RoomScrollStateStore2 = _interopRequireDefault(_RoomScrollStateStore);\n\nvar _WidgetEchoStore = require(\"../../stores/WidgetEchoStore\");\n\nvar _WidgetEchoStore2 = _interopRequireDefault(_WidgetEchoStore);\n\nvar _SettingsStore = require(\"../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _WidgetUtils = require(\"../../utils/WidgetUtils\");\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require(\"react\"); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n// TODO: This component is enormous! There's several things which could stand-alone:\n// - Search results component\n// - Drag and drop\n// - File uploading - uploadFile()\n\nvar ReactDOM = require(\"react-dom\");\n\nvar classNames = require(\"classnames\");\n\n\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar ContentMessages = require(\"../../ContentMessages\");\nvar Modal = require(\"../../Modal\");\nvar sdk = require('../../index');\nvar CallHandler = require('../../CallHandler');\nvar dis = require(\"../../dispatcher\");\nvar Tinter = require(\"../../Tinter\");\nvar rate_limited_func = require('../../ratelimitedfunc');\nvar ObjectUtils = require('../../ObjectUtils');\nvar Rooms = require('../../Rooms');\n\nvar DEBUG = false;\nvar debuglog = function debuglog() {};\n\nvar BROWSER_SUPPORTS_SANDBOX = 'sandbox' in document.createElement('iframe');\n\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n debuglog = console.log.bind(console);\n}\n\nmodule.exports = React.createClass({\n displayName: 'RoomView',\n propTypes: {\n ConferenceHandler: _propTypes2.default.any,\n\n // Called with the credentials of a registered user (if they were a ROU that\n // transitioned to PWLU)\n onRegistered: _propTypes2.default.func,\n\n // An object representing a third party invite to join this room\n // Fields:\n // * inviteSignUrl (string) The URL used to join this room from an email invite\n // (given as part of the link in the invite email)\n // * invitedEmail (string) The email address that was invited to this room\n thirdPartyInvite: _propTypes2.default.object,\n\n // Any data about the room that would normally come from the Home Server\n // but has been passed out-of-band, eg. the room name and avatar URL\n // from an email invite (a workaround for the fact that we can't\n // get this information from the HS using an email invite).\n // Fields:\n // * name (string) The room's name\n // * avatarUrl (string) The mxc:// avatar URL for the room\n // * inviterName (string) The display name of the person who\n // * invited us tovthe room\n oobData: _propTypes2.default.object,\n\n // is the RightPanel collapsed?\n collapsedRhs: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n var llMembers = MatrixClientPeg.get().hasLazyLoadMembersEnabled();\n return {\n room: null,\n roomId: null,\n roomLoading: true,\n peekLoading: false,\n shouldPeek: true,\n // used to trigger a rerender in TimelinePanel once the members are loaded,\n // so RR are rendered again (now with the members available), ...\n membersLoaded: !llMembers,\n // The event to be scrolled to initially\n initialEventId: null,\n // The offset in pixels from the event with which to scroll vertically\n initialEventPixelOffset: null,\n // Whether to highlight the event scrolled to\n isInitialEventHighlighted: null,\n\n forwardingEvent: null,\n editingRoomSettings: false,\n uploadingRoomSettings: false,\n numUnreadMessages: 0,\n draggingFile: false,\n searching: false,\n searchResults: null,\n callState: null,\n guestsCanJoin: false,\n canPeek: false,\n showApps: false,\n isAlone: false,\n isPeeking: false,\n showingPinned: false,\n\n // error object, as from the matrix client/server API\n // If we failed to load information about the room,\n // store the error here.\n roomLoadError: null,\n\n // Have we sent a request to join the room that we're waiting to complete?\n joining: false,\n\n // this is true if we are fully scrolled-down, and are looking at\n // the end of the live timeline. It has the effect of hiding the\n // 'scroll to bottom' knob, among a couple of other things.\n atEndOfLiveTimeline: true,\n\n showTopUnreadMessagesBar: false,\n\n auxPanelMaxHeight: undefined,\n\n statusBarVisible: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.dispatcherRef = dis.register(this.onAction);\n MatrixClientPeg.get().on(\"Room\", this.onRoom);\n MatrixClientPeg.get().on(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().on(\"Room.name\", this.onRoomName);\n MatrixClientPeg.get().on(\"Room.accountData\", this.onRoomAccountData);\n MatrixClientPeg.get().on(\"RoomState.members\", this.onRoomStateMember);\n MatrixClientPeg.get().on(\"Room.myMembership\", this.onMyMembership);\n MatrixClientPeg.get().on(\"accountData\", this.onAccountData);\n\n // Start listening for RoomViewStore updates\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this._onRoomViewStoreUpdate(true);\n\n _WidgetEchoStore2.default.on('update', this._onWidgetEchoStoreUpdate);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(initial) {\n if (this.unmounted) {\n return;\n }\n\n if (!initial && this.state.roomId !== _RoomViewStore2.default.getRoomId()) {\n // RoomView explicitly does not support changing what room\n // is being viewed: instead it should just be re-mounted when\n // switching rooms. Therefore, if the room ID changes, we\n // ignore this. We either need to do this or add code to handle\n // saving the scroll position (otherwise we end up saving the\n // scroll position against the wrong room).\n\n // Given that doing the setState here would cause a bunch of\n // unnecessary work, we just ignore the change since we know\n // that if the current room ID has changed from what we thought\n // it was, it means we're about to be unmounted.\n return;\n }\n\n var newState = {\n roomId: _RoomViewStore2.default.getRoomId(),\n roomAlias: _RoomViewStore2.default.getRoomAlias(),\n roomLoading: _RoomViewStore2.default.isRoomLoading(),\n roomLoadError: _RoomViewStore2.default.getRoomLoadError(),\n joining: _RoomViewStore2.default.isJoining(),\n initialEventId: _RoomViewStore2.default.getInitialEventId(),\n isInitialEventHighlighted: _RoomViewStore2.default.isInitialEventHighlighted(),\n forwardingEvent: _RoomViewStore2.default.getForwardingEvent(),\n shouldPeek: _RoomViewStore2.default.shouldPeek(),\n showingPinned: _SettingsStore2.default.getValue(\"PinnedEvents.isOpen\", _RoomViewStore2.default.getRoomId()),\n editingRoomSettings: _RoomViewStore2.default.isEditingSettings()\n };\n\n if (this.state.editingRoomSettings && !newState.editingRoomSettings) dis.dispatch({ action: 'focus_composer' });\n\n // Temporary logging to diagnose https://github.com/vector-im/riot-web/issues/4307\n console.log('RVS update:', newState.roomId, newState.roomAlias, 'loading?', newState.roomLoading, 'joining?', newState.joining, 'initial?', initial, 'shouldPeek?', newState.shouldPeek);\n\n // NB: This does assume that the roomID will not change for the lifetime of\n // the RoomView instance\n if (initial) {\n newState.room = MatrixClientPeg.get().getRoom(newState.roomId);\n if (newState.room) {\n newState.showApps = this._shouldShowApps(newState.room);\n this._onRoomLoaded(newState.room);\n }\n }\n\n if (this.state.roomId === null && newState.roomId !== null) {\n // Get the scroll state for the new room\n\n // If an event ID wasn't specified, default to the one saved for this room\n // in the scroll state store. Assume initialEventPixelOffset should be set.\n if (!newState.initialEventId) {\n var roomScrollState = _RoomScrollStateStore2.default.getScrollState(newState.roomId);\n if (roomScrollState) {\n newState.initialEventId = roomScrollState.focussedEvent;\n newState.initialEventPixelOffset = roomScrollState.pixelOffset;\n }\n }\n }\n\n // Clear the search results when clicking a search result (which changes the\n // currently scrolled to event, this.state.initialEventId).\n if (this.state.initialEventId !== newState.initialEventId) {\n newState.searchResults = null;\n }\n\n this.setState(newState);\n // At this point, newState.roomId could be null (e.g. the alias might not\n // have been resolved yet) so anything called here must handle this case.\n\n // We pass the new state into this function for it to read: it needs to\n // observe the new state but we don't want to put it in the setState\n // callback because this would prevent the setStates from being batched,\n // ie. cause it to render RoomView twice rather than the once that is necessary.\n if (initial) {\n this._setupRoom(newState.room, newState.roomId, newState.joining, newState.shouldPeek);\n }\n },\n\n _onWidgetEchoStoreUpdate: function _onWidgetEchoStoreUpdate() {\n this.setState({\n showApps: this._shouldShowApps(this.state.room)\n });\n },\n\n _setupRoom: function _setupRoom(room, roomId, joining, shouldPeek) {\n var _this = this;\n\n // if this is an unknown room then we're in one of three states:\n // - This is a room we can peek into (search engine) (we can /peek)\n // - This is a room we can publicly join or were invited to. (we can /join)\n // - This is a room we cannot join at all. (no action can help us)\n // We can't try to /join because this may implicitly accept invites (!)\n // We can /peek though. If it fails then we present the join UI. If it\n // succeeds then great, show the preview (but we still may be able to /join!).\n // Note that peeking works by room ID and room ID only, as opposed to joining\n // which must be by alias or invite wherever possible (peeking currently does\n // not work over federation).\n\n // NB. We peek if we have never seen the room before (i.e. js-sdk does not know\n // about it). We don't peek in the historical case where we were joined but are\n // now not joined because the js-sdk peeking API will clobber our historical room,\n // making it impossible to indicate a newly joined room.\n if (!joining && roomId) {\n if (this.props.autoJoin) {\n this.onJoinButtonClicked();\n } else if (!room && shouldPeek) {\n console.log(\"Attempting to peek into room %s\", roomId);\n this.setState({\n peekLoading: true,\n isPeeking: true // this will change to false if peeking fails\n });\n MatrixClientPeg.get().peekInRoom(roomId).then(function (room) {\n if (_this.unmounted) {\n return;\n }\n _this.setState({\n room: room,\n peekLoading: false\n });\n _this._onRoomLoaded(room);\n }, function (err) {\n if (_this.unmounted) {\n return;\n }\n\n // Stop peeking if anything went wrong\n _this.setState({\n isPeeking: false\n });\n\n // This won't necessarily be a MatrixError, but we duck-type\n // here and say if it's got an 'errcode' key with the right value,\n // it means we can't peek.\n if (err.errcode == \"M_GUEST_ACCESS_FORBIDDEN\") {\n // This is fine: the room just isn't peekable (we assume).\n _this.setState({\n peekLoading: false\n });\n } else {\n throw err;\n }\n });\n } else if (room) {\n //viewing a previously joined room, try to lazy load members\n\n // Stop peeking because we have joined this room previously\n MatrixClientPeg.get().stopPeeking();\n this.setState({ isPeeking: false });\n }\n }\n },\n\n _shouldShowApps: function _shouldShowApps(room) {\n if (!BROWSER_SUPPORTS_SANDBOX) return false;\n\n // Check if user has previously chosen to hide the app drawer for this\n // room. If so, do not show apps\n var hideWidgetDrawer = localStorage.getItem(room.roomId + \"_hide_widget_drawer\");\n\n if (hideWidgetDrawer === \"true\") {\n return false;\n }\n\n var widgets = _WidgetEchoStore2.default.getEchoedRoomWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n\n return widgets.length > 0 || _WidgetEchoStore2.default.roomHasPendingWidgets(room.roomId, _WidgetUtils2.default.getRoomWidgets(room));\n },\n\n componentDidMount: function componentDidMount() {\n var call = this._getCallForRoom();\n var callState = call ? call.call_state : \"ended\";\n this.setState({\n callState: callState\n });\n\n this._updateConfCallNotification();\n\n window.addEventListener('beforeunload', this.onPageUnload);\n window.addEventListener('resize', this.onResize);\n this.onResize();\n\n document.addEventListener(\"keydown\", this.onKeyDown);\n\n // XXX: EVIL HACK to autofocus inviting on empty rooms.\n // We use the setTimeout to avoid racing with focus_composer.\n if (this.state.room && this.state.room.getJoinedMemberCount() == 1 && this.state.room.getLiveTimeline() && this.state.room.getLiveTimeline().getEvents() && this.state.room.getLiveTimeline().getEvents().length <= 6) {\n var inviteBox = document.getElementById(\"mx_SearchableEntityList_query\");\n setTimeout(function () {\n if (inviteBox) {\n inviteBox.focus();\n }\n }, 50);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return !ObjectUtils.shallowEqual(this.props, nextProps) || !ObjectUtils.shallowEqual(this.state, nextState);\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.roomView) {\n var roomView = ReactDOM.findDOMNode(this.refs.roomView);\n if (!roomView.ondrop) {\n roomView.addEventListener('drop', this.onDrop);\n roomView.addEventListener('dragover', this.onDragOver);\n roomView.addEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.addEventListener('dragend', this.onDragLeaveOrEnd);\n }\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted, but facebook have deprecated that.)\n this.unmounted = true;\n\n // update the scroll map before we get unmounted\n if (this.state.roomId) {\n _RoomScrollStateStore2.default.setScrollState(this.state.roomId, this._getScrollState());\n }\n\n if (this.refs.roomView) {\n // disconnect the D&D event listeners from the room view. This\n // is really just for hygiene - we're going to be\n // deleted anyway, so it doesn't matter if the event listeners\n // don't get cleaned up.\n var roomView = ReactDOM.findDOMNode(this.refs.roomView);\n roomView.removeEventListener('drop', this.onDrop);\n roomView.removeEventListener('dragover', this.onDragOver);\n roomView.removeEventListener('dragleave', this.onDragLeaveOrEnd);\n roomView.removeEventListener('dragend', this.onDragLeaveOrEnd);\n }\n dis.unregister(this.dispatcherRef);\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"Room\", this.onRoom);\n MatrixClientPeg.get().removeListener(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().removeListener(\"Room.name\", this.onRoomName);\n MatrixClientPeg.get().removeListener(\"Room.accountData\", this.onRoomAccountData);\n MatrixClientPeg.get().removeListener(\"Room.myMembership\", this.onMyMembership);\n MatrixClientPeg.get().removeListener(\"RoomState.members\", this.onRoomStateMember);\n MatrixClientPeg.get().removeListener(\"accountData\", this.onAccountData);\n }\n\n window.removeEventListener('beforeunload', this.onPageUnload);\n window.removeEventListener('resize', this.onResize);\n\n document.removeEventListener(\"keydown\", this.onKeyDown);\n\n // Remove RoomStore listener\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n\n _WidgetEchoStore2.default.removeListener('update', this._onWidgetEchoStoreUpdate);\n\n // cancel any pending calls to the rate_limited_funcs\n this._updateRoomMembers.cancelPendingCall();\n\n // no need to do this as Dir & Settings are now overlays. It just burnt CPU.\n // console.log(\"Tinter.tint from RoomView.unmount\");\n // Tinter.tint(); // reset colourscheme\n },\n\n onPageUnload: function onPageUnload(event) {\n if (ContentMessages.getCurrentUploads().length > 0) {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be uploading files, are you sure you want to quit?\");\n } else if (this._getCallForRoom() && this.state.callState !== 'ended') {\n return event.returnValue = (0, _languageHandler._t)(\"You seem to be in a call, are you sure you want to quit?\");\n }\n },\n\n\n onKeyDown: function onKeyDown(ev) {\n var handled = false;\n var ctrlCmdOnly = (0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev);\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.KEY_D:\n if (ctrlCmdOnly) {\n this.onMuteAudioClick();\n handled = true;\n }\n break;\n\n case _Keyboard.KeyCode.KEY_E:\n if (ctrlCmdOnly) {\n this.onMuteVideoClick();\n handled = true;\n }\n break;\n }\n\n if (handled) {\n ev.stopPropagation();\n ev.preventDefault();\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'message_send_failed':\n case 'message_sent':\n this._checkIfAlone(this.state.room);\n break;\n case 'post_sticker_message':\n this.injectSticker(payload.data.content.url, payload.data.content.info, payload.data.description || payload.data.name);\n break;\n case 'picture_snapshot':\n this.uploadFile(payload.file);\n break;\n case 'notifier_enabled':\n case 'upload_failed':\n case 'upload_started':\n case 'upload_finished':\n this.forceUpdate();\n break;\n case 'call_state':\n // don't filter out payloads for room IDs other than props.room because\n // we may be interested in the conf 1:1 room\n\n if (!payload.room_id) {\n return;\n }\n\n var call = this._getCallForRoom();\n var callState;\n\n if (call) {\n callState = call.call_state;\n } else {\n callState = \"ended\";\n }\n\n // possibly remove the conf call notification if we're now in\n // the conf\n this._updateConfCallNotification();\n\n this.setState({\n callState: callState\n });\n\n break;\n case 'appsDrawer':\n this.setState({\n showApps: payload.show\n });\n break;\n }\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (!room) return;\n if (!this.state.room || room.roomId != this.state.room.roomId) return;\n\n // ignore events from filtered timelines\n if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;\n\n if (ev.getType() === \"org.matrix.room.preview_urls\") {\n this._updatePreviewUrlVisibility(room);\n }\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n // no point handling anything while we're waiting for the join to finish:\n // we'll only be showing a spinner.\n if (this.state.joining) return;\n\n if (ev.getSender() !== MatrixClientPeg.get().credentials.userId) {\n // update unread count when scrolled up\n if (!this.state.searchResults && this.state.atEndOfLiveTimeline) {\n // no change\n } else if (!(0, _shouldHideEvent2.default)(ev)) {\n this.setState(function (state, props) {\n return { numUnreadMessages: state.numUnreadMessages + 1 };\n });\n }\n }\n },\n\n onRoomName: function onRoomName(room) {\n if (this.state.room && room.roomId == this.state.room.roomId) {\n this.forceUpdate();\n }\n },\n\n canResetTimeline: function canResetTimeline() {\n if (!this.refs.messagePanel) {\n return true;\n }\n return this.refs.messagePanel.canResetTimeline();\n },\n\n // called when state.room is first initialised (either at initial load,\n // after a successful peek, or after we join the room).\n _onRoomLoaded: function _onRoomLoaded(room) {\n this._warnAboutEncryption(room);\n this._calculatePeekRules(room);\n this._updatePreviewUrlVisibility(room);\n this._loadMembersIfJoined(room);\n },\n\n _loadMembersIfJoined: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(room) {\n var cli, errorMessage;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // lazy load members if enabled\n cli = MatrixClientPeg.get();\n\n if (!cli.hasLazyLoadMembersEnabled()) {\n _context.next = 14;\n break;\n }\n\n if (!(room && room.getMyMembership() === 'join')) {\n _context.next = 14;\n break;\n }\n\n _context.prev = 3;\n _context.next = 6;\n return (0, _bluebird.resolve)(room.loadMembersIfNeeded());\n\n case 6:\n if (!this.unmounted) {\n this.setState({ membersLoaded: true });\n }\n _context.next = 14;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context[\"catch\"](3);\n errorMessage = \"Fetching room members for \" + room.roomId + \" failed.\" + \" Room members will appear incomplete.\";\n\n console.error(errorMessage);\n console.error(_context.t0);\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[3, 9]]);\n }));\n\n function _loadMembersIfJoined(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _loadMembersIfJoined;\n }(),\n\n _warnAboutEncryption: function _warnAboutEncryption(room) {\n if (!MatrixClientPeg.get().isRoomEncrypted(room.roomId)) {\n return;\n }\n var userHasUsedEncryption = false;\n if (localStorage) {\n userHasUsedEncryption = localStorage.getItem('mx_user_has_used_encryption');\n }\n if (!userHasUsedEncryption) {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('E2E Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n hasCancelButton: false,\n description: React.createElement(\n \"div\",\n null,\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"End-to-end encryption is in beta and may not be reliable\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"You should not yet trust it to secure data\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"Devices will not yet be able to decrypt history from before they joined the room\"),\n \".\"\n ),\n React.createElement(\n \"p\",\n null,\n (0, _languageHandler._t)(\"Encrypted messages will not be visible on clients that do not yet implement encryption\"),\n \".\"\n )\n )\n });\n }\n if (localStorage) {\n localStorage.setItem('mx_user_has_used_encryption', true);\n }\n },\n\n _calculatePeekRules: function _calculatePeekRules(room) {\n var guestAccessEvent = room.currentState.getStateEvents(\"m.room.guest_access\", \"\");\n if (guestAccessEvent && guestAccessEvent.getContent().guest_access === \"can_join\") {\n this.setState({\n guestsCanJoin: true\n });\n }\n\n var historyVisibility = room.currentState.getStateEvents(\"m.room.history_visibility\", \"\");\n if (historyVisibility && historyVisibility.getContent().history_visibility === \"world_readable\") {\n this.setState({\n canPeek: true\n });\n }\n },\n\n _updatePreviewUrlVisibility: function _updatePreviewUrlVisibility(_ref2) {\n var roomId = _ref2.roomId;\n\n // URL Previews in E2EE rooms can be a privacy leak so use a different setting which is per-room explicit\n var key = MatrixClientPeg.get().isRoomEncrypted(roomId) ? 'urlPreviewsEnabled_e2ee' : 'urlPreviewsEnabled';\n this.setState({\n showUrlPreview: _SettingsStore2.default.getValue(key, roomId)\n });\n },\n\n onRoom: function onRoom(room) {\n var _this2 = this;\n\n if (!room || room.roomId !== this.state.roomId) {\n return;\n }\n this.setState({\n room: room\n }, function () {\n _this2._onRoomLoaded(room);\n });\n },\n\n updateTint: function updateTint() {\n var room = this.state.room;\n if (!room) return;\n\n console.log(\"Tinter.tint from updateTint\");\n var colorScheme = _SettingsStore2.default.getValue(\"roomColor\", room.roomId);\n Tinter.tint(colorScheme.primary_color, colorScheme.secondary_color);\n },\n\n onAccountData: function onAccountData(event) {\n var type = event.getType();\n if ((type === \"org.matrix.preview_urls\" || type === \"im.vector.web.settings\") && this.state.room) {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(this.state.room);\n }\n },\n\n onRoomAccountData: function onRoomAccountData(event, room) {\n if (room.roomId == this.state.roomId) {\n var type = event.getType();\n if (type === \"org.matrix.room.color_scheme\") {\n var colorScheme = event.getContent();\n // XXX: we should validate the event\n console.log(\"Tinter.tint from onRoomAccountData\");\n Tinter.tint(colorScheme.primary_color, colorScheme.secondary_color);\n } else if (type === \"org.matrix.room.preview_urls\" || type === \"im.vector.web.settings\") {\n // non-e2ee url previews are stored in legacy event type `org.matrix.room.preview_urls`\n this._updatePreviewUrlVisibility(room);\n }\n }\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n // ignore if we don't have a room yet\n if (!this.state.room) {\n return;\n }\n\n // ignore members in other rooms\n if (member.roomId !== this.state.room.roomId) {\n return;\n }\n\n this._updateRoomMembers();\n },\n\n onMyMembership: function onMyMembership(room, membership, oldMembership) {\n if (room.roomId === this.state.roomId) {\n this.forceUpdate();\n this._loadMembersIfJoined(room);\n }\n },\n\n // rate limited because a power level change will emit an event for every\n // member in the room.\n _updateRoomMembers: new rate_limited_func(function () {\n // a member state changed in this room\n // refresh the conf call notification state\n this._updateConfCallNotification();\n this._updateDMState();\n this._checkIfAlone(this.state.room);\n }, 500),\n\n _checkIfAlone: function _checkIfAlone(room) {\n var warnedAboutLonelyRoom = false;\n if (localStorage) {\n warnedAboutLonelyRoom = localStorage.getItem('mx_user_alone_warned_' + this.state.room.roomId);\n }\n if (warnedAboutLonelyRoom) {\n if (this.state.isAlone) this.setState({ isAlone: false });\n return;\n }\n\n var joinedOrInvitedMemberCount = room.getJoinedMemberCount() + room.getInvitedMemberCount();\n this.setState({ isAlone: joinedOrInvitedMemberCount === 1 });\n },\n\n _updateConfCallNotification: function _updateConfCallNotification() {\n var room = this.state.room;\n if (!room || !this.props.ConferenceHandler) {\n return;\n }\n var confMember = room.getMember(this.props.ConferenceHandler.getConferenceUserIdForRoom(room.roomId));\n\n if (!confMember) {\n return;\n }\n var confCall = this.props.ConferenceHandler.getConferenceCallForRoom(confMember.roomId);\n\n // A conf call notification should be displayed if there is an ongoing\n // conf call but this cilent isn't a part of it.\n this.setState({\n displayConfCallNotification: (!confCall || confCall.call_state === \"ended\") && confMember.membership === \"join\"\n });\n },\n\n _updateDMState: function _updateDMState() {\n var room = this.state.room;\n if (room.getMyMembership() != \"join\") {\n return;\n }\n var dmInviter = room.getDMInviter();\n if (dmInviter) {\n Rooms.setDMRoom(room.roomId, dmInviter);\n }\n },\n\n\n onSearchResultsResize: function onSearchResultsResize() {\n dis.dispatch({ action: 'timeline_resize' }, true);\n },\n\n onSearchResultsFillRequest: function onSearchResultsFillRequest(backwards) {\n if (!backwards) {\n return _bluebird2.default.resolve(false);\n }\n\n if (this.state.searchResults.next_batch) {\n debuglog(\"requesting more search results\");\n var searchPromise = MatrixClientPeg.get().backPaginateRoomEventsSearch(this.state.searchResults);\n return this._handleSearchResult(searchPromise);\n } else {\n debuglog(\"no more search results\");\n return _bluebird2.default.resolve(false);\n }\n },\n\n onInviteButtonClick: function onInviteButtonClick() {\n // call AddressPickerDialog\n dis.dispatch({\n action: 'view_invite',\n roomId: this.state.room.roomId\n });\n this.setState({ isAlone: false }); // there's a good chance they'll invite someone\n },\n\n onStopAloneWarningClick: function onStopAloneWarningClick() {\n if (localStorage) {\n localStorage.setItem('mx_user_alone_warned_' + this.state.room.roomId, true);\n }\n this.setState({ isAlone: false });\n },\n\n onJoinButtonClicked: function onJoinButtonClicked(ev) {\n var _this3 = this;\n\n var cli = MatrixClientPeg.get();\n\n // If the user is a ROU, allow them to transition to a PWLU\n if (cli && cli.isGuest()) {\n // Join this room once the user has registered and logged in\n var signUrl = this.props.thirdPartyInvite ? this.props.thirdPartyInvite.inviteSignUrl : undefined;\n dis.dispatch({\n action: 'do_after_sync_prepared',\n deferred_action: {\n action: 'join_room',\n opts: { inviteSignUrl: signUrl }\n }\n });\n\n // Don't peek whilst registering otherwise getPendingEventList complains\n // Do this by indicating our intention to join\n dis.dispatch({\n action: 'will_join'\n });\n\n var SetMxIdDialog = sdk.getComponent('views.dialogs.SetMxIdDialog');\n var close = Modal.createTrackedDialog('Set MXID', '', SetMxIdDialog, {\n homeserverUrl: cli.getHomeserverUrl(),\n onFinished: function onFinished(submitted, credentials) {\n if (submitted) {\n _this3.props.onRegistered(credentials);\n } else {\n dis.dispatch({\n action: 'cancel_after_sync_prepared'\n });\n dis.dispatch({\n action: 'cancel_join'\n });\n }\n },\n onDifferentServerClicked: function onDifferentServerClicked(ev) {\n dis.dispatch({ action: 'start_registration' });\n close();\n },\n onLoginClick: function onLoginClick(ev) {\n dis.dispatch({ action: 'start_login' });\n close();\n }\n }).close;\n return;\n }\n\n _bluebird2.default.resolve().then(function () {\n var signUrl = _this3.props.thirdPartyInvite ? _this3.props.thirdPartyInvite.inviteSignUrl : undefined;\n dis.dispatch({\n action: 'join_room',\n opts: { inviteSignUrl: signUrl }\n });\n return _bluebird2.default.resolve();\n });\n },\n\n onMessageListScroll: function onMessageListScroll(ev) {\n if (this.refs.messagePanel.isAtEndOfLiveTimeline()) {\n this.setState({\n numUnreadMessages: 0,\n atEndOfLiveTimeline: true\n });\n } else {\n this.setState({\n atEndOfLiveTimeline: false\n });\n }\n this._updateTopUnreadMessagesBar();\n },\n\n onDragOver: function onDragOver(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n\n ev.dataTransfer.dropEffect = 'none';\n\n var items = [].concat((0, _toConsumableArray3.default)(ev.dataTransfer.items));\n if (items.length >= 1) {\n var isDraggingFiles = items.every(function (item) {\n return item.kind == 'file';\n });\n\n if (isDraggingFiles) {\n this.setState({ draggingFile: true });\n ev.dataTransfer.dropEffect = 'copy';\n }\n }\n },\n\n onDrop: function onDrop(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n this.setState({ draggingFile: false });\n var files = [].concat((0, _toConsumableArray3.default)(ev.dataTransfer.files));\n files.forEach(this.uploadFile);\n },\n\n onDragLeaveOrEnd: function onDragLeaveOrEnd(ev) {\n ev.stopPropagation();\n ev.preventDefault();\n this.setState({ draggingFile: false });\n },\n\n uploadFile: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(file) {\n var ErrorDialog;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n dis.dispatch({ action: 'focus_composer' });\n\n if (!MatrixClientPeg.get().isGuest()) {\n _context2.next = 4;\n break;\n }\n\n dis.dispatch({ action: 'require_registration' });\n return _context2.abrupt(\"return\");\n\n case 4:\n _context2.prev = 4;\n _context2.next = 7;\n return (0, _bluebird.resolve)(ContentMessages.sendContentToRoom(file, this.state.room.roomId, MatrixClientPeg.get()));\n\n case 7:\n _context2.next = 17;\n break;\n\n case 9:\n _context2.prev = 9;\n _context2.t0 = _context2[\"catch\"](4);\n\n if (!(_context2.t0.name === \"UnknownDeviceError\")) {\n _context2.next = 13;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 13:\n ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n console.error(\"Failed to upload file \" + file + \" \" + _context2.t0);\n Modal.createTrackedDialog('Failed to upload file', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to upload file'),\n description: _context2.t0 && _context2.t0.message ? _context2.t0.message : (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or the file too big\")\n });\n\n // bail early to avoid calling the dispatch below\n return _context2.abrupt(\"return\");\n\n case 17:\n\n // Send message_sent callback, for things like _checkIfAlone because after all a file is still a message.\n dis.dispatch({\n action: 'message_sent'\n });\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 9]]);\n }));\n\n function uploadFile(_x2) {\n return _ref3.apply(this, arguments);\n }\n\n return uploadFile;\n }(),\n\n injectSticker: function injectSticker(url, info, text) {\n if (MatrixClientPeg.get().isGuest()) {\n dis.dispatch({ action: 'require_registration' });\n return;\n }\n\n ContentMessages.sendStickerContentToRoom(url, this.state.room.roomId, info, text, MatrixClientPeg.get()).done(undefined, function (error) {\n if (error.name === \"UnknownDeviceError\") {\n // Let the staus bar handle this\n return;\n }\n });\n },\n\n onSearch: function onSearch(term, scope) {\n this.setState({\n searchTerm: term,\n searchScope: scope,\n searchResults: {},\n searchHighlights: []\n });\n\n // if we already have a search panel, we need to tell it to forget\n // about its scroll state.\n if (this.refs.searchResultsPanel) {\n this.refs.searchResultsPanel.resetScrollState();\n }\n\n // make sure that we don't end up showing results from\n // an aborted search by keeping a unique id.\n //\n // todo: should cancel any previous search requests.\n this.searchId = new Date().getTime();\n\n var filter = void 0;\n if (scope === \"Room\") {\n filter = {\n // XXX: it's unintuitive that the filter for searching doesn't have the same shape as the v2 filter API :(\n rooms: [this.state.room.roomId]\n };\n }\n\n debuglog(\"sending search request\");\n\n var searchPromise = MatrixClientPeg.get().searchRoomEvents({\n filter: filter,\n term: term\n });\n this._handleSearchResult(searchPromise).done();\n },\n\n _handleSearchResult: function _handleSearchResult(searchPromise) {\n var self = this;\n\n // keep a record of the current search id, so that if the search terms\n // change before we get a response, we can ignore the results.\n var localSearchId = this.searchId;\n\n this.setState({\n searchInProgress: true\n });\n\n return searchPromise.then(function (results) {\n debuglog(\"search complete\");\n if (self.unmounted || !self.state.searching || self.searchId != localSearchId) {\n console.error(\"Discarding stale search results\");\n return;\n }\n\n // postgres on synapse returns us precise details of the strings\n // which actually got matched for highlighting.\n //\n // In either case, we want to highlight the literal search term\n // whether it was used by the search engine or not.\n\n var highlights = results.highlights;\n if (highlights.indexOf(self.state.searchTerm) < 0) {\n highlights = highlights.concat(self.state.searchTerm);\n }\n\n // For overlapping highlights,\n // favour longer (more specific) terms first\n highlights = highlights.sort(function (a, b) {\n return b.length - a.length;\n });\n\n self.setState({\n searchHighlights: highlights,\n searchResults: results\n });\n }, function (error) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Search failed: \" + error);\n Modal.createTrackedDialog('Search failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Search failed\"),\n description: error && error.message ? error.message : (0, _languageHandler._t)(\"Server may be unavailable, overloaded, or search timed out :(\")\n });\n }).finally(function () {\n self.setState({\n searchInProgress: false\n });\n });\n },\n\n getSearchResultTiles: function getSearchResultTiles() {\n var _this4 = this;\n\n var EventTile = sdk.getComponent('rooms.EventTile');\n var SearchResultTile = sdk.getComponent('rooms.SearchResultTile');\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n\n var cli = MatrixClientPeg.get();\n\n // XXX: todo: merge overlapping results somehow?\n // XXX: why doesn't searching on name work?\n\n if (this.state.searchResults.results === undefined) {\n // awaiting results\n return [];\n }\n\n var ret = [];\n\n if (this.state.searchInProgress) {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-spinner\" },\n React.createElement(Spinner, null)\n ));\n }\n\n if (!this.state.searchResults.next_batch) {\n if (this.state.searchResults.results.length == 0) {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-top-marker\" },\n React.createElement(\n \"h2\",\n { className: \"mx_RoomView_topMarker\" },\n (0, _languageHandler._t)(\"No results\")\n )\n ));\n } else {\n ret.push(React.createElement(\n \"li\",\n { key: \"search-top-marker\" },\n React.createElement(\n \"h2\",\n { className: \"mx_RoomView_topMarker\" },\n (0, _languageHandler._t)(\"No more results\")\n )\n ));\n }\n }\n\n // once dynamic content in the search results load, make the scrollPanel check\n // the scroll offsets.\n var onWidgetLoad = function onWidgetLoad() {\n var scrollPanel = _this4.refs.searchResultsPanel;\n if (scrollPanel) {\n scrollPanel.checkScroll();\n }\n };\n\n var lastRoomId = void 0;\n\n for (var i = this.state.searchResults.results.length - 1; i >= 0; i--) {\n var result = this.state.searchResults.results[i];\n\n var mxEv = result.context.getEvent();\n var roomId = mxEv.getRoomId();\n\n if (!EventTile.haveTileForEvent(mxEv)) {\n // XXX: can this ever happen? It will make the result count\n // not match the displayed count.\n continue;\n }\n\n if (this.state.searchScope === 'All') {\n if (roomId != lastRoomId) {\n var room = cli.getRoom(roomId);\n\n // XXX: if we've left the room, we might not know about\n // it. We should tell the js sdk to go and find out about\n // it. But that's not an issue currently, as synapse only\n // returns results for rooms we're joined to.\n var roomName = room ? room.name : (0, _languageHandler._t)(\"Unknown room %(roomId)s\", { roomId: roomId });\n\n ret.push(React.createElement(\n \"li\",\n { key: mxEv.getId() + \"-room\" },\n React.createElement(\n \"h1\",\n null,\n (0, _languageHandler._t)(\"Room\"),\n \": \",\n roomName\n )\n ));\n lastRoomId = roomId;\n }\n }\n\n var resultLink = \"#/room/\" + roomId + \"/\" + mxEv.getId();\n\n ret.push(React.createElement(SearchResultTile, { key: mxEv.getId(),\n searchResult: result,\n searchHighlights: this.state.searchHighlights,\n resultLink: resultLink,\n onWidgetLoad: onWidgetLoad }));\n }\n return ret;\n },\n\n onPinnedClick: function onPinnedClick() {\n var nowShowingPinned = !this.state.showingPinned;\n var roomId = this.state.room.roomId;\n this.setState({ showingPinned: nowShowingPinned, searching: false });\n _SettingsStore2.default.setValue(\"PinnedEvents.isOpen\", roomId, _SettingsStore.SettingLevel.ROOM_DEVICE, nowShowingPinned);\n },\n\n onSettingsClick: function onSettingsClick() {\n dis.dispatch({ action: 'open_room_settings' });\n },\n\n onSettingsSaveClick: function onSettingsSaveClick() {\n var _this5 = this;\n\n if (!this.refs.room_settings) return;\n\n this.setState({\n uploadingRoomSettings: true\n });\n\n var newName = this.refs.header.getEditedName();\n if (newName !== undefined) {\n this.refs.room_settings.setName(newName);\n }\n var newTopic = this.refs.header.getEditedTopic();\n if (newTopic !== undefined) {\n this.refs.room_settings.setTopic(newTopic);\n }\n\n this.refs.room_settings.save().then(function (results) {\n var fails = results.filter(function (result) {\n return result.state !== \"fulfilled\";\n });\n console.log(\"Settings saved with %s errors\", fails.length);\n if (fails.length) {\n fails.forEach(function (result) {\n console.error(result.reason);\n });\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to save room settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to save settings\"),\n description: fails.map(function (result) {\n return result.reason;\n }).join(\"\\n\")\n });\n // still editing room settings\n } else {\n dis.dispatch({ action: 'close_settings' });\n }\n }).finally(function () {\n _this5.setState({\n uploadingRoomSettings: false\n });\n dis.dispatch({ action: 'close_settings' });\n }).done();\n },\n\n onCancelClick: function onCancelClick() {\n console.log(\"updateTint from onCancelClick\");\n this.updateTint();\n dis.dispatch({ action: 'close_settings' });\n if (this.state.forwardingEvent) {\n dis.dispatch({\n action: 'forward_event',\n event: null\n });\n }\n dis.dispatch({ action: 'focus_composer' });\n },\n\n onLeaveClick: function onLeaveClick() {\n dis.dispatch({\n action: 'leave_room',\n room_id: this.state.room.roomId\n });\n },\n\n onForgetClick: function onForgetClick() {\n MatrixClientPeg.get().forget(this.state.room.roomId).done(function () {\n dis.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._t)(\"unknown error code\");\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to forget room %(errCode)s\", { errCode: errCode })\n });\n });\n },\n\n onRejectButtonClicked: function onRejectButtonClicked(ev) {\n var self = this;\n this.setState({\n rejecting: true\n });\n MatrixClientPeg.get().leave(this.state.roomId).done(function () {\n dis.dispatch({ action: 'view_next_room' });\n self.setState({\n rejecting: false\n });\n }, function (error) {\n console.error(\"Failed to reject invite: %s\", error);\n\n var msg = error.message ? error.message : (0, _stringify2.default)(error);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to reject invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to reject invite\"),\n description: msg\n });\n\n self.setState({\n rejecting: false,\n rejectError: error\n });\n });\n },\n\n onRejectThreepidInviteButtonClicked: function onRejectThreepidInviteButtonClicked(ev) {\n // We can reject 3pid invites in the same way that we accept them,\n // using /leave rather than /join. In the short term though, we\n // just ignore them.\n // https://github.com/vector-im/vector-web/issues/1134\n dis.dispatch({\n action: 'view_room_directory'\n });\n },\n\n onSearchClick: function onSearchClick() {\n this.setState({ searching: true, showingPinned: false });\n },\n\n onCancelSearchClick: function onCancelSearchClick() {\n this.setState({\n searching: false,\n searchResults: null\n });\n },\n\n // jump down to the bottom of this room, where new events are arriving\n jumpToLiveTimeline: function jumpToLiveTimeline() {\n this.refs.messagePanel.jumpToLiveTimeline();\n dis.dispatch({ action: 'focus_composer' });\n },\n\n // jump up to wherever our read marker is\n jumpToReadMarker: function jumpToReadMarker() {\n this.refs.messagePanel.jumpToReadMarker();\n },\n\n // update the read marker to match the read-receipt\n forgetReadMarker: function forgetReadMarker(ev) {\n ev.stopPropagation();\n this.refs.messagePanel.forgetReadMarker();\n },\n\n // decide whether or not the top 'unread messages' bar should be shown\n _updateTopUnreadMessagesBar: function _updateTopUnreadMessagesBar() {\n if (!this.refs.messagePanel) {\n return;\n }\n\n var showBar = this.refs.messagePanel.canJumpToReadMarker();\n if (this.state.showTopUnreadMessagesBar != showBar) {\n this.setState({ showTopUnreadMessagesBar: showBar }, this.onChildResize);\n }\n },\n\n // get the current scroll position of the room, so that it can be\n // restored when we switch back to it.\n //\n _getScrollState: function _getScrollState() {\n var messagePanel = this.refs.messagePanel;\n if (!messagePanel) return null;\n\n // if we're following the live timeline, we want to return null; that\n // means that, if we switch back, we will jump to the read-up-to mark.\n //\n // That should be more intuitive than slavishly preserving the current\n // scroll state, in the case where the room advances in the meantime\n // (particularly in the case that the user reads some stuff on another\n // device).\n //\n if (this.state.atEndOfLiveTimeline) {\n return null;\n }\n\n var scrollState = messagePanel.getScrollState();\n\n if (scrollState.stuckAtBottom) {\n // we don't really expect to be in this state, but it will\n // occasionally happen when no scroll state has been set on the\n // messagePanel (ie, we didn't have an initial event (so it's\n // probably a new room), there has been no user-initiated scroll, and\n // no read-receipts have arrived to update the scroll position).\n //\n // Return null, which will cause us to scroll to last unread on\n // reload.\n return null;\n }\n\n return {\n focussedEvent: scrollState.trackedScrollToken,\n pixelOffset: scrollState.pixelOffset\n };\n },\n\n onResize: function onResize(e) {\n // It seems flexbox doesn't give us a way to constrain the auxPanel height to have\n // a minimum of the height of the video element, whilst also capping it from pushing out the page\n // so we have to do it via JS instead. In this implementation we cap the height by putting\n // a maxHeight on the underlying remote video tag.\n\n // header + footer + status + give us at least 120px of scrollback at all times.\n var auxPanelMaxHeight = window.innerHeight - (83 + // height of RoomHeader\n 36 + // height of the status area\n 72 + ( // minimum height of the message compmoser\n this.state.editingRoomSettings ? window.innerHeight * 0.3 : 120)); // amount of desired scrollback\n\n // XXX: this is a bit of a hack and might possibly cause the video to push out the page anyway\n // but it's better than the video going missing entirely\n if (auxPanelMaxHeight < 50) auxPanelMaxHeight = 50;\n\n this.setState({ auxPanelMaxHeight: auxPanelMaxHeight });\n\n // changing the maxHeight on the auxpanel will trigger a callback go\n // onChildResize, so no need to worry about that here.\n },\n\n onFullscreenClick: function onFullscreenClick() {\n dis.dispatch({\n action: 'video_fullscreen',\n fullscreen: true\n }, true);\n },\n\n onMuteAudioClick: function onMuteAudioClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isMicrophoneMuted();\n call.setMicrophoneMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onMuteVideoClick: function onMuteVideoClick() {\n var call = this._getCallForRoom();\n if (!call) {\n return;\n }\n var newState = !call.isLocalVideoMuted();\n call.setLocalVideoMuted(newState);\n this.forceUpdate(); // TODO: just update the voip buttons\n },\n\n onChildResize: function onChildResize() {\n // no longer anything to do here\n },\n\n onStatusBarVisible: function onStatusBarVisible() {\n if (this.unmounted) return;\n this.setState({\n statusBarVisible: true\n });\n },\n\n onStatusBarHidden: function onStatusBarHidden() {\n // This is currently not desired as it is annoying if it keeps expanding and collapsing\n // TODO: Find a less annoying way of hiding the status bar\n /*if (this.unmounted) return;\n this.setState({\n statusBarVisible: false,\n });*/\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n var panel = void 0;\n if (this.refs.searchResultsPanel) {\n panel = this.refs.searchResultsPanel;\n } else if (this.refs.messagePanel) {\n panel = this.refs.messagePanel;\n }\n\n if (panel) {\n panel.handleScrollKey(ev);\n }\n },\n\n /**\n * get any current call for this room\n */\n _getCallForRoom: function _getCallForRoom() {\n if (!this.state.room) {\n return null;\n }\n return CallHandler.getCallForRoom(this.state.room.roomId);\n },\n\n // this has to be a proper method rather than an unnamed function,\n // otherwise react calls it with null on each update.\n _gatherTimelinePanelRef: function _gatherTimelinePanelRef(r) {\n this.refs.messagePanel = r;\n if (r) {\n console.log(\"updateTint from RoomView._gatherTimelinePanelRef\");\n this.updateTint();\n }\n },\n\n render: function render() {\n var RoomHeader = sdk.getComponent('rooms.RoomHeader');\n var MessageComposer = sdk.getComponent('rooms.MessageComposer');\n var ForwardMessage = sdk.getComponent(\"rooms.ForwardMessage\");\n var RoomSettings = sdk.getComponent(\"rooms.RoomSettings\");\n var AuxPanel = sdk.getComponent(\"rooms.AuxPanel\");\n var SearchBar = sdk.getComponent(\"rooms.SearchBar\");\n var PinnedEventsPanel = sdk.getComponent(\"rooms.PinnedEventsPanel\");\n var ScrollPanel = sdk.getComponent(\"structures.ScrollPanel\");\n var TintableSvg = sdk.getComponent(\"elements.TintableSvg\");\n var RoomPreviewBar = sdk.getComponent(\"rooms.RoomPreviewBar\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n var TimelinePanel = sdk.getComponent(\"structures.TimelinePanel\");\n var RoomUpgradeWarningBar = sdk.getComponent(\"rooms.RoomUpgradeWarningBar\");\n\n if (!this.state.room) {\n if (this.state.roomLoading || this.state.peekLoading) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(Loader, null)\n );\n } else {\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n\n // We have no room object for this room, only the ID.\n // We've got to this room by following a link, possibly a third party invite.\n var roomAlias = this.state.roomAlias;\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(RoomHeader, { ref: \"header\",\n room: this.state.room,\n oobData: this.props.oobData,\n collapsedRhs: this.props.collapsedRhs\n }),\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_auxPanel\" },\n React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n canPreview: false, error: this.state.roomLoadError,\n roomAlias: roomAlias,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n room: this.state.room\n })\n ),\n React.createElement(\"div\", { className: \"mx_RoomView_messagePanel\" })\n );\n }\n }\n\n var myMembership = this.state.room.getMyMembership();\n if (myMembership == 'invite') {\n if (this.state.joining || this.state.rejecting) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(Loader, null)\n );\n } else {\n var myUserId = MatrixClientPeg.get().credentials.userId;\n var myMember = this.state.room.getMember(myUserId);\n var inviteEvent = myMember.events.member;\n var inviterName = inviteEvent.sender ? inviteEvent.sender.name : inviteEvent.getSender();\n\n // We deliberately don't try to peek into invites, even if we have permission to peek\n // as they could be a spam vector.\n // XXX: in future we could give the option of a 'Preview' button which lets them view anyway.\n\n // We have a regular invite for this room.\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" },\n React.createElement(RoomHeader, {\n ref: \"header\",\n room: this.state.room,\n collapsedRhs: this.props.collapsedRhs\n }),\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_auxPanel\" },\n React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectButtonClicked,\n inviterName: inviterName,\n canPreview: false,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n room: this.state.room\n })\n ),\n React.createElement(\"div\", { className: \"mx_RoomView_messagePanel\" })\n );\n }\n }\n\n // We have successfully loaded this room, and are not previewing.\n // Display the \"normal\" room view.\n\n var call = this._getCallForRoom();\n var inCall = false;\n if (call && this.state.callState !== 'ended' && this.state.callState !== 'ringing') {\n inCall = true;\n }\n\n var scrollheader_classes = classNames({\n mx_RoomView_scrollheader: true\n });\n\n var statusBar = void 0;\n var isStatusAreaExpanded = true;\n\n if (ContentMessages.getCurrentUploads().length > 0) {\n var UploadBar = sdk.getComponent('structures.UploadBar');\n statusBar = React.createElement(UploadBar, { room: this.state.room });\n } else if (!this.state.searchResults) {\n var RoomStatusBar = sdk.getComponent('structures.RoomStatusBar');\n isStatusAreaExpanded = this.state.statusBarVisible;\n statusBar = React.createElement(RoomStatusBar, {\n room: this.state.room,\n numUnreadMessages: this.state.numUnreadMessages,\n atEndOfLiveTimeline: this.state.atEndOfLiveTimeline,\n sentMessageAndIsAlone: this.state.isAlone,\n hasActiveCall: inCall,\n isPeeking: myMembership !== \"join\",\n onInviteClick: this.onInviteButtonClick,\n onStopWarningClick: this.onStopAloneWarningClick,\n onScrollToBottomClick: this.jumpToLiveTimeline,\n onResize: this.onChildResize,\n onVisible: this.onStatusBarVisible,\n onHidden: this.onStatusBarHidden,\n whoIsTypingLimit: 3\n });\n }\n\n var showRoomUpgradeBar = this.state.room.shouldUpgradeToVersion() && this.state.room.userMayUpgradeRoom(MatrixClientPeg.get().credentials.userId);\n\n var aux = null;\n var hideCancel = false;\n if (this.state.editingRoomSettings) {\n aux = React.createElement(RoomSettings, { ref: \"room_settings\", onSaveClick: this.onSettingsSaveClick, onCancelClick: this.onCancelClick, room: this.state.room });\n } else if (this.state.uploadingRoomSettings) {\n aux = React.createElement(Loader, null);\n } else if (this.state.forwardingEvent !== null) {\n aux = React.createElement(ForwardMessage, { onCancelClick: this.onCancelClick });\n } else if (this.state.searching) {\n hideCancel = true; // has own cancel\n aux = React.createElement(SearchBar, { ref: \"search_bar\", searchInProgress: this.state.searchInProgress, onCancelClick: this.onCancelSearchClick, onSearch: this.onSearch });\n } else if (showRoomUpgradeBar) {\n aux = React.createElement(RoomUpgradeWarningBar, { room: this.state.room });\n hideCancel = true;\n } else if (this.state.showingPinned) {\n hideCancel = true; // has own cancel\n aux = React.createElement(PinnedEventsPanel, { room: this.state.room, onCancelClick: this.onPinnedClick });\n } else if (myMembership !== \"join\") {\n // We do have a room object for this room, but we're not currently in it.\n // We may have a 3rd party invite to it.\n var inviterName = undefined;\n if (this.props.oobData) {\n inviterName = this.props.oobData.inviterName;\n }\n var invitedEmail = undefined;\n if (this.props.thirdPartyInvite) {\n invitedEmail = this.props.thirdPartyInvite.invitedEmail;\n }\n hideCancel = true;\n aux = React.createElement(RoomPreviewBar, { onJoinClick: this.onJoinButtonClicked,\n onForgetClick: this.onForgetClick,\n onRejectClick: this.onRejectThreepidInviteButtonClicked,\n spinner: this.state.joining,\n spinnerState: \"joining\",\n inviterName: inviterName,\n invitedEmail: invitedEmail,\n canPreview: this.state.canPeek,\n room: this.state.room\n });\n }\n\n var auxPanel = React.createElement(\n AuxPanel,\n { ref: \"auxPanel\", room: this.state.room,\n userId: MatrixClientPeg.get().credentials.userId,\n conferenceHandler: this.props.ConferenceHandler,\n draggingFile: this.state.draggingFile,\n displayConfCallNotification: this.state.displayConfCallNotification,\n maxHeight: this.state.auxPanelMaxHeight,\n onResize: this.onChildResize,\n showApps: this.state.showApps,\n hideAppsDrawer: this.state.editingRoomSettings },\n aux\n );\n\n var messageComposer = void 0,\n searchInfo = void 0;\n var canSpeak =\n // joined and not showing search results\n myMembership === 'join' && !this.state.searchResults;\n if (canSpeak) {\n messageComposer = React.createElement(MessageComposer, {\n room: this.state.room,\n onResize: this.onChildResize,\n uploadFile: this.uploadFile,\n callState: this.state.callState,\n disabled: this.props.disabled,\n showApps: this.state.showApps\n });\n }\n\n if (MatrixClientPeg.get().isGuest()) {\n var LoginBox = sdk.getComponent('structures.LoginBox');\n messageComposer = React.createElement(LoginBox, null);\n }\n\n // TODO: Why aren't we storing the term/scope/count in this format\n // in this.state if this is what RoomHeader desires?\n if (this.state.searchResults) {\n searchInfo = {\n searchTerm: this.state.searchTerm,\n searchScope: this.state.searchScope,\n searchCount: this.state.searchResults.count\n };\n }\n\n if (inCall) {\n var zoomButton = void 0,\n voiceMuteButton = void 0,\n videoMuteButton = void 0;\n\n if (call.type === \"video\") {\n zoomButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onFullscreenClick, title: (0, _languageHandler._t)(\"Fill screen\") },\n React.createElement(TintableSvg, { src: \"img/fullscreen.svg\", width: \"29\", height: \"22\", style: { marginTop: 1, marginRight: 4 } })\n );\n\n videoMuteButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onMuteVideoClick },\n React.createElement(TintableSvg, { src: call.isLocalVideoMuted() ? \"img/video-unmute.svg\" : \"img/video-mute.svg\",\n alt: call.isLocalVideoMuted() ? (0, _languageHandler._t)(\"Click to unmute video\") : (0, _languageHandler._t)(\"Click to mute video\"),\n width: \"31\", height: \"27\" })\n );\n }\n voiceMuteButton = React.createElement(\n \"div\",\n { className: \"mx_RoomView_voipButton\", onClick: this.onMuteAudioClick },\n React.createElement(TintableSvg, { src: call.isMicrophoneMuted() ? \"img/voice-unmute.svg\" : \"img/voice-mute.svg\",\n alt: call.isMicrophoneMuted() ? (0, _languageHandler._t)(\"Click to unmute audio\") : (0, _languageHandler._t)(\"Click to mute audio\"),\n width: \"21\", height: \"26\" })\n );\n\n // wrap the existing status bar into a 'callStatusBar' which adds more knobs.\n statusBar = React.createElement(\n \"div\",\n { className: \"mx_RoomView_callStatusBar\" },\n voiceMuteButton,\n videoMuteButton,\n zoomButton,\n statusBar,\n React.createElement(TintableSvg, { className: \"mx_RoomView_voipChevron\", src: \"img/voip-chevron.svg\", width: \"22\", height: \"17\" })\n );\n }\n\n // if we have search results, we keep the messagepanel (so that it preserves its\n // scroll state), but hide it.\n var searchResultsPanel = void 0;\n var hideMessagePanel = false;\n\n if (this.state.searchResults) {\n searchResultsPanel = React.createElement(\n ScrollPanel,\n { ref: \"searchResultsPanel\",\n className: \"mx_RoomView_messagePanel mx_RoomView_searchResultsPanel\",\n onFillRequest: this.onSearchResultsFillRequest,\n onResize: this.onSearchResultsResize\n },\n React.createElement(\"li\", { className: scrollheader_classes }),\n this.getSearchResultTiles()\n );\n hideMessagePanel = true;\n }\n\n var shouldHighlight = this.state.isInitialEventHighlighted;\n var highlightedEventId = null;\n if (this.state.forwardingEvent) {\n highlightedEventId = this.state.forwardingEvent.getId();\n } else if (shouldHighlight) {\n highlightedEventId = this.state.initialEventId;\n }\n\n // console.log(\"ShowUrlPreview for %s is %s\", this.state.room.roomId, this.state.showUrlPreview);\n var messagePanel = React.createElement(TimelinePanel, { ref: this._gatherTimelinePanelRef,\n timelineSet: this.state.room.getUnfilteredTimelineSet(),\n showReadReceipts: !_SettingsStore2.default.getValue('hideReadReceipts'),\n manageReadReceipts: !this.state.isPeeking,\n manageReadMarkers: !this.state.isPeeking,\n hidden: hideMessagePanel,\n highlightedEventId: highlightedEventId,\n eventId: this.state.initialEventId,\n eventPixelOffset: this.state.initialEventPixelOffset,\n onScroll: this.onMessageListScroll,\n onReadMarkerUpdated: this._updateTopUnreadMessagesBar,\n showUrlPreview: this.state.showUrlPreview,\n className: \"mx_RoomView_messagePanel\",\n membersLoaded: this.state.membersLoaded\n });\n\n var topUnreadMessagesBar = null;\n if (this.state.showTopUnreadMessagesBar) {\n var TopUnreadMessagesBar = sdk.getComponent('rooms.TopUnreadMessagesBar');\n topUnreadMessagesBar = React.createElement(\n \"div\",\n { className: \"mx_RoomView_topUnreadMessagesBar\" },\n React.createElement(TopUnreadMessagesBar, {\n onScrollUpClick: this.jumpToReadMarker,\n onCloseClick: this.forgetReadMarker\n })\n );\n }\n var statusBarAreaClass = classNames(\"mx_RoomView_statusArea\", {\n \"mx_RoomView_statusArea_expanded\": isStatusAreaExpanded\n });\n\n var fadableSectionClasses = classNames(\"mx_RoomView_body\", \"mx_fadable\", {\n \"mx_fadable_faded\": this.props.disabled\n });\n\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView\" + (inCall ? \" mx_RoomView_inCall\" : \"\"), ref: \"roomView\" },\n React.createElement(RoomHeader, { ref: \"header\", room: this.state.room, searchInfo: searchInfo,\n oobData: this.props.oobData,\n editing: this.state.editingRoomSettings,\n saving: this.state.uploadingRoomSettings,\n inRoom: myMembership === 'join',\n collapsedRhs: this.props.collapsedRhs,\n onSearchClick: this.onSearchClick,\n onSettingsClick: this.onSettingsClick,\n onPinnedClick: this.onPinnedClick,\n onSaveClick: this.onSettingsSaveClick,\n onCancelClick: aux && !hideCancel ? this.onCancelClick : null,\n onForgetClick: myMembership === \"leave\" ? this.onForgetClick : null,\n onLeaveClick: myMembership === \"join\" ? this.onLeaveClick : null\n }),\n auxPanel,\n React.createElement(\n \"div\",\n { className: fadableSectionClasses },\n topUnreadMessagesBar,\n messagePanel,\n searchResultsPanel,\n React.createElement(\n \"div\",\n { className: statusBarAreaClass },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_statusAreaBox\" },\n React.createElement(\"div\", { className: \"mx_RoomView_statusAreaBox_line\" }),\n statusBar\n )\n ),\n messageComposer\n )\n );\n }\n});\n//# sourceMappingURL=RoomView.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Stores where the user has scrolled to in each room\n */\nvar RoomScrollStateStore = function () {\n function RoomScrollStateStore() {\n (0, _classCallCheck3.default)(this, RoomScrollStateStore);\n\n // A map from room id to scroll state.\n //\n // If there is no special scroll state (ie, we are following the live\n // timeline), the scroll state is null. Otherwise, it is an object with\n // the following properties:\n //\n // focussedEvent: the ID of the 'focussed' event. Typically this is\n // the last event fully visible in the viewport, though if we\n // have done an explicit scroll to an explicit event, it will be\n // that event.\n //\n // pixelOffset: the number of pixels the window is scrolled down\n // from the focussedEvent.\n this._scrollStateMap = {};\n }\n\n (0, _createClass3.default)(RoomScrollStateStore, [{\n key: \"getScrollState\",\n value: function getScrollState(roomId) {\n return this._scrollStateMap[roomId];\n }\n }, {\n key: \"setScrollState\",\n value: function setScrollState(roomId, scrollState) {\n this._scrollStateMap[roomId] = scrollState;\n }\n }]);\n return RoomScrollStateStore;\n}();\n\nif (global.mx_RoomScrollStateStore === undefined) {\n global.mx_RoomScrollStateStore = new RoomScrollStateStore();\n}\nexports.default = global.mx_RoomScrollStateStore;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=RoomScrollStateStore.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = function (dest, src) {\n for (var i in src) {\n if (src.hasOwnProperty(i)) {\n dest[i] = src[i];\n }\n }\n return dest;\n};\n//# sourceMappingURL=extend.js.map","/*\n * JavaScript Canvas to Blob\n * https://github.com/blueimp/JavaScript-Canvas-to-Blob\n *\n * Copyright 2012, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on stackoverflow user Stoive's code snippet:\n * http://stackoverflow.com/q/4998908\n */\n\n/* global atob, Blob, define */\n\n;(function (window) {\n 'use strict'\n\n var CanvasPrototype =\n window.HTMLCanvasElement && window.HTMLCanvasElement.prototype\n var hasBlobConstructor =\n window.Blob &&\n (function () {\n try {\n return Boolean(new Blob())\n } catch (e) {\n return false\n }\n })()\n var hasArrayBufferViewSupport =\n hasBlobConstructor &&\n window.Uint8Array &&\n (function () {\n try {\n return new Blob([new Uint8Array(100)]).size === 100\n } catch (e) {\n return false\n }\n })()\n var BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder\n var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/\n var dataURLtoBlob =\n (hasBlobConstructor || BlobBuilder) &&\n window.atob &&\n window.ArrayBuffer &&\n window.Uint8Array &&\n function (dataURI) {\n var matches,\n mediaType,\n isBase64,\n dataString,\n byteString,\n arrayBuffer,\n intArray,\n i,\n bb\n // Parse the dataURI components as per RFC 2397\n matches = dataURI.match(dataURIPattern)\n if (!matches) {\n throw new Error('invalid data URI')\n }\n // Default to text/plain;charset=US-ASCII\n mediaType = matches[2]\n ? matches[1]\n : 'text/plain' + (matches[3] || ';charset=US-ASCII')\n isBase64 = !!matches[4]\n dataString = dataURI.slice(matches[0].length)\n if (isBase64) {\n // Convert base64 to raw binary data held in a string:\n byteString = atob(dataString)\n } else {\n // Convert base64/URLEncoded data component to raw binary:\n byteString = decodeURIComponent(dataString)\n }\n // Write the bytes of the string to an ArrayBuffer:\n arrayBuffer = new ArrayBuffer(byteString.length)\n intArray = new Uint8Array(arrayBuffer)\n for (i = 0; i < byteString.length; i += 1) {\n intArray[i] = byteString.charCodeAt(i)\n }\n // Write the ArrayBuffer (or ArrayBufferView) to a blob:\n if (hasBlobConstructor) {\n return new Blob([hasArrayBufferViewSupport ? intArray : arrayBuffer], {\n type: mediaType\n })\n }\n bb = new BlobBuilder()\n bb.append(arrayBuffer)\n return bb.getBlob(mediaType)\n }\n if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) {\n if (CanvasPrototype.mozGetAsFile) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n } else {\n callback(self.mozGetAsFile('blob', type))\n }\n })\n }\n } else if (CanvasPrototype.toDataURL && dataURLtoBlob) {\n CanvasPrototype.toBlob = function (callback, type, quality) {\n var self = this\n setTimeout(function () {\n callback(dataURLtoBlob(self.toDataURL(type, quality)))\n })\n }\n }\n }\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return dataURLtoBlob\n })\n } else if (typeof module === 'object' && module.exports) {\n module.exports = dataURLtoBlob\n } else {\n window.dataURLtoBlob = dataURLtoBlob\n }\n})(window)\n","\"use strict\";\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nvar _index = require(\"../../index.js\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\n\n\nvar DEBUG_SCROLL = false;\n// var DEBUG_SCROLL = true;\n\n// The amount of extra scroll distance to allow prior to unfilling.\n// See _getExcessHeight.\nvar UNPAGINATION_PADDING = 6000;\n// The number of milliseconds to debounce calls to onUnfillRequest, to prevent\n// many scroll events causing many unfilling requests.\nvar UNFILL_REQUEST_DEBOUNCE_MS = 200;\n\nif (DEBUG_SCROLL) {\n // using bind means that we get to keep useful line numbers in the console\n var debuglog = console.log.bind(console);\n} else {\n var debuglog = function debuglog() {};\n}\n\n/* This component implements an intelligent scrolling list.\n *\n * It wraps a list of <li> children; when items are added to the start or end\n * of the list, the scroll position is updated so that the user still sees the\n * same position in the list.\n *\n * It also provides a hook which allows parents to provide more list elements\n * when we get close to the start or end of the list.\n *\n * Each child element should have a 'data-scroll-tokens'. This string of\n * comma-separated tokens may contain a single token or many, where many indicates\n * that the element contains elements that have scroll tokens themselves. The first\n * token in 'data-scroll-tokens' is used to serialise the scroll state, and returned\n * as the 'trackedScrollToken' attribute by getScrollState().\n *\n * IMPORTANT: INDIVIDUAL TOKENS WITHIN 'data-scroll-tokens' MUST NOT CONTAIN COMMAS.\n *\n * Some notes about the implementation:\n *\n * The saved 'scrollState' can exist in one of two states:\n *\n * - stuckAtBottom: (the default, and restored by resetScrollState): the\n * viewport is scrolled down as far as it can be. When the children are\n * updated, the scroll position will be updated to ensure it is still at\n * the bottom.\n *\n * - fixed, in which the viewport is conceptually tied at a specific scroll\n * offset. We don't save the absolute scroll offset, because that would be\n * affected by window width, zoom level, amount of scrollback, etc. Instead\n * we save an identifier for the last fully-visible message, and the number\n * of pixels the window was scrolled below it - which is hopefully near\n * enough.\n *\n * The 'stickyBottom' property controls the behaviour when we reach the bottom\n * of the window (either through a user-initiated scroll, or by calling\n * scrollToBottom). If stickyBottom is enabled, the scrollState will enter\n * 'stuckAtBottom' state - ensuring that new additions cause the window to\n * scroll down further. If stickyBottom is disabled, we just save the scroll\n * offset as normal.\n */\nmodule.exports = React.createClass({\n displayName: 'ScrollPanel',\n\n propTypes: {\n /* stickyBottom: if set to true, then once the user hits the bottom of\n * the list, any new children added to the list will cause the list to\n * scroll down to show the new element, rather than preserving the\n * existing view.\n */\n stickyBottom: _propTypes2.default.bool,\n\n /* startAtBottom: if set to true, the view is assumed to start\n * scrolled to the bottom.\n * XXX: It's likley this is unecessary and can be derived from\n * stickyBottom, but I'm adding an extra parameter to ensure\n * behaviour stays the same for other uses of ScrollPanel.\n * If so, let's remove this parameter down the line.\n */\n startAtBottom: _propTypes2.default.bool,\n\n /* onFillRequest(backwards): a callback which is called on scroll when\n * the user nears the start (backwards = true) or end (backwards =\n * false) of the list.\n *\n * This should return a promise; no more calls will be made until the\n * promise completes.\n *\n * The promise should resolve to true if there is more data to be\n * retrieved in this direction (in which case onFillRequest may be\n * called again immediately), or false if there is no more data in this\n * directon (at this time) - which will stop the pagination cycle until\n * the user scrolls again.\n */\n onFillRequest: _propTypes2.default.func,\n\n /* onUnfillRequest(backwards): a callback which is called on scroll when\n * there are children elements that are far out of view and could be removed\n * without causing pagination to occur.\n *\n * This function should accept a boolean, which is true to indicate the back/top\n * of the panel and false otherwise, and a scroll token, which refers to the\n * first element to remove if removing from the front/bottom, and last element\n * to remove if removing from the back/top.\n */\n onUnfillRequest: _propTypes2.default.func,\n\n /* onScroll: a callback which is called whenever any scroll happens.\n */\n onScroll: _propTypes2.default.func,\n\n /* onResize: a callback which is called whenever the Gemini scroll\n * panel is resized\n */\n onResize: _propTypes2.default.func,\n\n /* className: classnames to add to the top-level div\n */\n className: _propTypes2.default.string,\n\n /* style: styles to add to the top-level div\n */\n style: _propTypes2.default.object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n stickyBottom: true,\n startAtBottom: true,\n onFillRequest: function onFillRequest(backwards) {\n return _bluebird2.default.resolve(false);\n },\n onUnfillRequest: function onUnfillRequest(backwards, scrollToken) {},\n onScroll: function onScroll() {},\n onResize: function onResize() {}\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._pendingFillRequests = { b: null, f: null };\n this.resetScrollState();\n },\n\n componentDidMount: function componentDidMount() {\n this.checkScroll();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // after adding event tiles, we may need to tweak the scroll (either to\n // keep at the bottom of the timeline, or to maintain the view after\n // adding events to the top).\n //\n // This will also re-check the fill state, in case the paginate was inadequate\n this.checkScroll();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted(), but facebook have deprecated that.)\n this.unmounted = true;\n },\n\n onScroll: function onScroll(ev) {\n var sn = this._getScrollNode();\n debuglog(\"Scroll event: offset now:\", sn.scrollTop, \"_lastSetScroll:\", this._lastSetScroll);\n\n // Sometimes we see attempts to write to scrollTop essentially being\n // ignored. (Or rather, it is successfully written, but on the next\n // scroll event, it's been reset again).\n //\n // This was observed on Chrome 47, when scrolling using the trackpad in OS\n // X Yosemite. Can't reproduce on El Capitan. Our theory is that this is\n // due to Chrome not being able to cope with the scroll offset being reset\n // while a two-finger drag is in progress.\n //\n // By way of a workaround, we detect this situation and just keep\n // resetting scrollTop until we see the scroll node have the right\n // value.\n if (this._lastSetScroll !== undefined && sn.scrollTop < this._lastSetScroll - 200) {\n console.log(\"Working around vector-im/vector-web#528\");\n this._restoreSavedScrollState();\n return;\n }\n\n // If there weren't enough children to fill the viewport, the scroll we\n // got might be different to the scroll we wanted; we don't want to\n // forget what we wanted, so don't overwrite the saved state unless\n // this appears to be a user-initiated scroll.\n if (sn.scrollTop != this._lastSetScroll) {\n this._saveScrollState();\n } else {\n debuglog(\"Ignoring scroll echo\");\n\n // only ignore the echo once, otherwise we'll get confused when the\n // user scrolls away from, and back to, the autoscroll point.\n this._lastSetScroll = undefined;\n }\n\n this.props.onScroll(ev);\n\n this.checkFillState();\n },\n\n onResize: function onResize() {\n this.props.onResize();\n this.checkScroll();\n if (this._gemScroll) this._gemScroll.forceUpdate();\n },\n\n // after an update to the contents of the panel, check that the scroll is\n // where it ought to be, and set off pagination requests if necessary.\n checkScroll: function checkScroll() {\n this._restoreSavedScrollState();\n this.checkFillState();\n },\n\n // return true if the content is fully scrolled down right now; else false.\n //\n // note that this is independent of the 'stuckAtBottom' state - it is simply\n // about whether the the content is scrolled down right now, irrespective of\n // whether it will stay that way when the children update.\n isAtBottom: function isAtBottom() {\n var sn = this._getScrollNode();\n\n // there seems to be some bug with flexbox/gemini/chrome/richvdh's\n // understanding of the box model, wherein the scrollNode ends up 2\n // pixels higher than the available space, even when there are less\n // than a screenful of messages. + 3 is a fudge factor to pretend\n // that we're at the bottom when we're still a few pixels off.\n\n return sn.scrollHeight - Math.ceil(sn.scrollTop) <= sn.clientHeight + 3;\n },\n\n // returns the vertical height in the given direction that can be removed from\n // the content box (which has a height of scrollHeight, see checkFillState) without\n // pagination occuring.\n //\n // padding* = UNPAGINATION_PADDING\n //\n // ### Region determined as excess.\n //\n // .---------. - -\n // |#########| | |\n // |#########| - | scrollTop |\n // | | | padding* | |\n // | | | | |\n // .-+---------+-. - - | |\n // : | | : | | |\n // : | | : | clientHeight | |\n // : | | : | | |\n // .-+---------+-. - - |\n // | | | | | |\n // | | | | | clientHeight | scrollHeight\n // | | | | | |\n // `-+---------+-' - |\n // : | | : | |\n // : | | : | clientHeight |\n // : | | : | |\n // `-+---------+-' - - |\n // | | | padding* |\n // | | | |\n // |#########| - |\n // |#########| |\n // `---------' -\n _getExcessHeight: function _getExcessHeight(backwards) {\n var sn = this._getScrollNode();\n if (backwards) {\n return sn.scrollTop - sn.clientHeight - UNPAGINATION_PADDING;\n } else {\n return sn.scrollHeight - (sn.scrollTop + 2 * sn.clientHeight) - UNPAGINATION_PADDING;\n }\n },\n\n // check the scroll state and send out backfill requests if necessary.\n checkFillState: function checkFillState() {\n if (this.unmounted) {\n return;\n }\n\n var sn = this._getScrollNode();\n\n // if there is less than a screenful of messages above or below the\n // viewport, try to get some more messages.\n //\n // scrollTop is the number of pixels between the top of the content and\n // the top of the viewport.\n //\n // scrollHeight is the total height of the content.\n //\n // clientHeight is the height of the viewport (excluding borders,\n // margins, and scrollbars).\n //\n //\n // .---------. - -\n // | | | scrollTop |\n // .-+---------+-. - - |\n // | | | | | |\n // | | | | | clientHeight | scrollHeight\n // | | | | | |\n // `-+---------+-' - |\n // | | |\n // | | |\n // `---------' -\n //\n\n if (sn.scrollTop < sn.clientHeight) {\n // need to back-fill\n this._maybeFill(true);\n }\n if (sn.scrollTop > sn.scrollHeight - sn.clientHeight * 2) {\n // need to forward-fill\n this._maybeFill(false);\n }\n },\n\n // check if unfilling is possible and send an unfill request if necessary\n _checkUnfillState: function _checkUnfillState(backwards) {\n var _this = this;\n\n var excessHeight = this._getExcessHeight(backwards);\n if (excessHeight <= 0) {\n return;\n }\n var tiles = this.refs.itemlist.children;\n\n // The scroll token of the first/last tile to be unpaginated\n var markerScrollToken = null;\n\n // Subtract heights of tiles to simulate the tiles being unpaginated until the\n // excess height is less than the height of the next tile to subtract. This\n // prevents excessHeight becoming negative, which could lead to future\n // pagination.\n //\n // If backwards is true, we unpaginate (remove) tiles from the back (top).\n for (var i = 0; i < tiles.length; i++) {\n var tile = tiles[backwards ? i : tiles.length - 1 - i];\n // Subtract height of tile as if it were unpaginated\n excessHeight -= tile.clientHeight;\n //If removing the tile would lead to future pagination, break before setting scroll token\n if (tile.clientHeight > excessHeight) {\n break;\n }\n // The tile may not have a scroll token, so guard it\n if (tile.dataset.scrollTokens) {\n markerScrollToken = tile.dataset.scrollTokens.split(',')[0];\n }\n }\n\n if (markerScrollToken) {\n // Use a debouncer to prevent multiple unfill calls in quick succession\n // This is to make the unfilling process less aggressive\n if (this._unfillDebouncer) {\n clearTimeout(this._unfillDebouncer);\n }\n this._unfillDebouncer = setTimeout(function () {\n _this._unfillDebouncer = null;\n _this.props.onUnfillRequest(backwards, markerScrollToken);\n }, UNFILL_REQUEST_DEBOUNCE_MS);\n }\n },\n\n // check if there is already a pending fill request. If not, set one off.\n _maybeFill: function _maybeFill(backwards) {\n var _this2 = this;\n\n var dir = backwards ? 'b' : 'f';\n if (this._pendingFillRequests[dir]) {\n debuglog(\"ScrollPanel: Already a \" + dir + \" fill in progress - not starting another\");\n return;\n }\n\n debuglog(\"ScrollPanel: starting \" + dir + \" fill\");\n\n // onFillRequest can end up calling us recursively (via onScroll\n // events) so make sure we set this before firing off the call.\n this._pendingFillRequests[dir] = true;\n\n _bluebird2.default.try(function () {\n return _this2.props.onFillRequest(backwards);\n }).finally(function () {\n _this2._pendingFillRequests[dir] = false;\n }).then(function (hasMoreResults) {\n if (_this2.unmounted) {\n return;\n }\n // Unpaginate once filling is complete\n _this2._checkUnfillState(!backwards);\n\n debuglog(\"ScrollPanel: \" + dir + \" fill complete; hasMoreResults:\" + hasMoreResults);\n if (hasMoreResults) {\n // further pagination requests have been disabled until now, so\n // it's time to check the fill state again in case the pagination\n // was insufficient.\n _this2.checkFillState();\n }\n }).done();\n },\n\n /* get the current scroll state. This returns an object with the following\n * properties:\n *\n * boolean stuckAtBottom: true if we are tracking the bottom of the\n * scroll. false if we are tracking a particular child.\n *\n * string trackedScrollToken: undefined if stuckAtBottom is true; if it is\n * false, the first token in data-scroll-tokens of the child which we are\n * tracking.\n *\n * number pixelOffset: undefined if stuckAtBottom is true; if it is false,\n * the number of pixels the bottom of the tracked child is above the\n * bottom of the scroll panel.\n */\n getScrollState: function getScrollState() {\n return this.scrollState;\n },\n\n /* reset the saved scroll state.\n *\n * This is useful if the list is being replaced, and you don't want to\n * preserve scroll even if new children happen to have the same scroll\n * tokens as old ones.\n *\n * This will cause the viewport to be scrolled down to the bottom on the\n * next update of the child list. This is different to scrollToBottom(),\n * which would save the current bottom-most child as the active one (so is\n * no use if no children exist yet, or if you are about to replace the\n * child list.)\n */\n resetScrollState: function resetScrollState() {\n this.scrollState = { stuckAtBottom: this.props.startAtBottom };\n },\n\n /**\n * jump to the top of the content.\n */\n scrollToTop: function scrollToTop() {\n this._setScrollTop(0);\n this._saveScrollState();\n },\n\n /**\n * jump to the bottom of the content.\n */\n scrollToBottom: function scrollToBottom() {\n // the easiest way to make sure that the scroll state is correctly\n // saved is to do the scroll, then save the updated state. (Calculating\n // it ourselves is hard, and we can't rely on an onScroll callback\n // happening, since there may be no user-visible change here).\n this._setScrollTop(Number.MAX_VALUE);\n this._saveScrollState();\n },\n\n /**\n * Page up/down.\n *\n * mult: -1 to page up, +1 to page down\n */\n scrollRelative: function scrollRelative(mult) {\n var scrollNode = this._getScrollNode();\n var delta = mult * scrollNode.clientHeight * 0.5;\n this._setScrollTop(scrollNode.scrollTop + delta);\n this._saveScrollState();\n },\n\n /**\n * Scroll up/down in response to a scroll key\n */\n handleScrollKey: function handleScrollKey(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.PAGE_UP:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollRelative(-1);\n }\n break;\n\n case _Keyboard.KeyCode.PAGE_DOWN:\n if (!ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollRelative(1);\n }\n break;\n\n case _Keyboard.KeyCode.HOME:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollToTop();\n }\n break;\n\n case _Keyboard.KeyCode.END:\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey) {\n this.scrollToBottom();\n }\n break;\n }\n },\n\n /* Scroll the panel to bring the DOM node with the scroll token\n * `scrollToken` into view.\n *\n * offsetBase gives the reference point for the pixelOffset. 0 means the\n * top of the container, 1 means the bottom, and fractional values mean\n * somewhere in the middle. If omitted, it defaults to 0.\n *\n * pixelOffset gives the number of pixels *above* the offsetBase that the\n * node (specifically, the bottom of it) will be positioned. If omitted, it\n * defaults to 0.\n */\n scrollToToken: function scrollToToken(scrollToken, pixelOffset, offsetBase) {\n pixelOffset = pixelOffset || 0;\n offsetBase = offsetBase || 0;\n\n // convert pixelOffset so that it is based on the bottom of the\n // container.\n pixelOffset += this._getScrollNode().clientHeight * (1 - offsetBase);\n\n // save the desired scroll state. It's important we do this here rather\n // than as a result of the scroll event, because (a) we might not *get*\n // a scroll event, and (b) it might not currently be possible to set\n // the requested scroll state (eg, because we hit the end of the\n // timeline and need to do more pagination); we want to save the\n // *desired* scroll state rather than what we end up achieving.\n this.scrollState = {\n stuckAtBottom: false,\n trackedScrollToken: scrollToken,\n pixelOffset: pixelOffset\n };\n\n // ... then make it so.\n this._restoreSavedScrollState();\n },\n\n // set the scrollTop attribute appropriately to position the given child at the\n // given offset in the window. A helper for _restoreSavedScrollState.\n _scrollToToken: function _scrollToToken(scrollToken, pixelOffset) {\n /* find the dom node with the right scrolltoken */\n var node = void 0;\n var messages = this.refs.itemlist.children;\n for (var i = messages.length - 1; i >= 0; --i) {\n var m = messages[i];\n // 'data-scroll-tokens' is a DOMString of comma-separated scroll tokens\n // There might only be one scroll token\n if (m.dataset.scrollTokens && m.dataset.scrollTokens.split(',').indexOf(scrollToken) !== -1) {\n node = m;\n break;\n }\n }\n\n if (!node) {\n debuglog(\"ScrollPanel: No node with scrollToken '\" + scrollToken + \"'\");\n return;\n }\n\n var scrollNode = this._getScrollNode();\n var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();\n var boundingRect = node.getBoundingClientRect();\n var scrollDelta = boundingRect.bottom + pixelOffset - wrapperRect.bottom;\n\n debuglog(\"ScrollPanel: scrolling to token '\" + scrollToken + \"'+\" + pixelOffset + \" (delta: \" + scrollDelta + \")\");\n\n if (scrollDelta != 0) {\n this._setScrollTop(scrollNode.scrollTop + scrollDelta);\n }\n },\n\n _saveScrollState: function _saveScrollState() {\n if (this.props.stickyBottom && this.isAtBottom()) {\n this.scrollState = { stuckAtBottom: true };\n debuglog(\"ScrollPanel: Saved scroll state\", this.scrollState);\n return;\n }\n\n var itemlist = this.refs.itemlist;\n var wrapperRect = ReactDOM.findDOMNode(this).getBoundingClientRect();\n var messages = itemlist.children;\n var newScrollState = null;\n\n for (var i = messages.length - 1; i >= 0; --i) {\n var node = messages[i];\n if (!node.dataset.scrollTokens) continue;\n\n var boundingRect = node.getBoundingClientRect();\n newScrollState = {\n stuckAtBottom: false,\n trackedScrollToken: node.dataset.scrollTokens.split(',')[0],\n pixelOffset: wrapperRect.bottom - boundingRect.bottom\n };\n // If the bottom of the panel intersects the ClientRect of node, use this node\n // as the scrollToken.\n // If this is false for the entire for-loop, we default to the last node\n // (which is why newScrollState is set on every iteration).\n if (boundingRect.top < wrapperRect.bottom) {\n // Use this node as the scrollToken\n break;\n }\n }\n // This is only false if there were no nodes with `node.dataset.scrollTokens` set.\n if (newScrollState) {\n this.scrollState = newScrollState;\n debuglog(\"ScrollPanel: saved scroll state\", this.scrollState);\n } else {\n debuglog(\"ScrollPanel: unable to save scroll state: found no children in the viewport\");\n }\n },\n\n _restoreSavedScrollState: function _restoreSavedScrollState() {\n var scrollState = this.scrollState;\n var scrollNode = this._getScrollNode();\n\n if (scrollState.stuckAtBottom) {\n this._setScrollTop(Number.MAX_VALUE);\n } else if (scrollState.trackedScrollToken) {\n this._scrollToToken(scrollState.trackedScrollToken, scrollState.pixelOffset);\n }\n },\n\n _setScrollTop: function _setScrollTop(scrollTop) {\n var scrollNode = this._getScrollNode();\n\n var prevScroll = scrollNode.scrollTop;\n\n // FF ignores attempts to set scrollTop to very large numbers\n scrollNode.scrollTop = Math.min(scrollTop, scrollNode.scrollHeight);\n\n // If this change generates a scroll event, we should not update the\n // saved scroll state on it. See the comments in onScroll.\n //\n // If we *don't* expect a scroll event, we need to leave _lastSetScroll\n // alone, otherwise we'll end up ignoring a future scroll event which is\n // nothing to do with this change.\n\n if (scrollNode.scrollTop != prevScroll) {\n this._lastSetScroll = scrollNode.scrollTop;\n }\n\n debuglog(\"ScrollPanel: set scrollTop:\", scrollNode.scrollTop, \"requested:\", scrollTop, \"_lastSetScroll:\", this._lastSetScroll);\n },\n\n /* get the DOM node which has the scrollTop property we care about for our\n * message panel.\n */\n _getScrollNode: function _getScrollNode() {\n if (this.unmounted) {\n // this shouldn't happen, but when it does, turn the NPE into\n // something more meaningful.\n throw new Error(\"ScrollPanel._getScrollNode called when unmounted\");\n }\n\n if (!this._gemScroll) {\n // Likewise, we should have the ref by this point, but if not\n // turn the NPE into something meaningful.\n throw new Error(\"ScrollPanel._getScrollNode called before gemini ref collected\");\n }\n\n return this._gemScroll.scrollbar.getViewElement();\n },\n\n _collectGeminiScroll: function _collectGeminiScroll(gemScroll) {\n this._gemScroll = gemScroll;\n },\n\n render: function render() {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n // TODO: the classnames on the div and ol could do with being updated to\n // reflect the fact that we don't necessarily contain a list of messages.\n // it's not obvious why we have a separate div and ol anyway.\n return React.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, wrappedRef: this._collectGeminiScroll,\n onScroll: this.onScroll, onResize: this.onResize,\n className: this.props.className, style: this.props.style },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_messageListWrapper\" },\n React.createElement(\n \"ol\",\n { ref: \"itemlist\", className: \"mx_RoomView_MessageList\", \"aria-live\": \"polite\" },\n this.props.children\n )\n )\n );\n }\n});\n//# sourceMappingURL=ScrollPanel.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _Keyboard = require('../../Keyboard');\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ratelimitedfunc = require('../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _AccessibleButton = require('../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'SearchBox',\n\n propTypes: {\n collapsed: _react2.default.PropTypes.bool,\n onSearch: _react2.default.PropTypes.func\n },\n\n getInitialState: function getInitialState() {\n return {\n searchTerm: \"\"\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'view_room':\n if (this.refs.search && payload.clear_search) {\n this._clearSearch();\n }\n break;\n case 'focus_room_filter':\n if (this.refs.search) {\n this.refs.search.focus();\n this.refs.search.select();\n }\n break;\n }\n },\n\n onChange: function onChange() {\n if (!this.refs.search) return;\n this.setState({ searchTerm: this.refs.search.value });\n this.onSearch();\n },\n\n onSearch: new _ratelimitedfunc2.default(function () {\n this.props.onSearch(this.refs.search.value);\n }, 100),\n\n onToggleCollapse: function onToggleCollapse(show) {\n if (show) {\n _dispatcher2.default.dispatch({\n action: 'show_left_panel'\n });\n } else {\n _dispatcher2.default.dispatch({\n action: 'hide_left_panel'\n });\n }\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ESCAPE:\n this._clearSearch();\n _dispatcher2.default.dispatch({ action: 'focus_composer' });\n break;\n }\n },\n\n _clearSearch: function _clearSearch() {\n this.refs.search.value = \"\";\n this.onChange();\n },\n\n render: function render() {\n var _this = this;\n\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n\n var collapseTabIndex = this.refs.search && this.refs.search.value !== \"\" ? \"-1\" : \"0\";\n\n var toggleCollapse;\n if (this.props.collapsed) {\n toggleCollapse = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_SearchBox_maximise', tabIndex: collapseTabIndex, onClick: this.onToggleCollapse.bind(this, true) },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16', alt: (0, _languageHandler._t)(\"Expand panel\") })\n );\n } else {\n toggleCollapse = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_SearchBox_minimise', tabIndex: collapseTabIndex, onClick: this.onToggleCollapse.bind(this, false) },\n _react2.default.createElement(TintableSvg, { src: 'img/minimise.svg', width: '10', height: '16', alt: (0, _languageHandler._t)(\"Collapse panel\") })\n );\n }\n\n var searchControls;\n if (!this.props.collapsed) {\n searchControls = [this.state.searchTerm.length > 0 ? _react2.default.createElement(\n _AccessibleButton2.default,\n { key: 'button',\n className: 'mx_SearchBox_closeButton',\n onClick: function onClick() {\n _this._clearSearch();\n } },\n _react2.default.createElement(TintableSvg, {\n className: 'mx_SearchBox_searchButton',\n src: 'img/icons-close.svg', width: '24', height: '24'\n })\n ) : _react2.default.createElement(TintableSvg, {\n key: 'button',\n className: 'mx_SearchBox_searchButton',\n src: 'img/icons-search-copy.svg', width: '13', height: '13'\n }), _react2.default.createElement('input', {\n key: 'searchfield',\n type: 'text',\n ref: 'search',\n className: 'mx_SearchBox_search',\n value: this.state.searchTerm,\n onChange: this.onChange,\n onKeyDown: this._onKeyDown,\n placeholder: (0, _languageHandler._t)('Filter room names')\n })];\n }\n\n var self = this;\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SearchBox' },\n searchControls,\n toggleCollapse\n );\n }\n});\n//# sourceMappingURL=SearchBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _TagOrderStore = require('../../stores/TagOrderStore');\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nvar _GroupActions = require('../../actions/GroupActions');\n\nvar _GroupActions2 = _interopRequireDefault(_GroupActions);\n\nvar _index = require('../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017, 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TagPanel = _react2.default.createClass({\n displayName: 'TagPanel',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n orderedTags: [],\n selectedTags: []\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n this.context.matrixClient.on(\"Group.myMembership\", this._onGroupMyMembership);\n this.context.matrixClient.on(\"sync\", this._onClientSync);\n\n this._tagOrderStoreToken = _TagOrderStore2.default.addListener(function () {\n if (_this.unmounted) {\n return;\n }\n _this.setState({\n orderedTags: _TagOrderStore2.default.getOrderedTags() || [],\n selectedTags: _TagOrderStore2.default.getSelectedTags()\n });\n });\n // This could be done by anything with a matrix client\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n this.context.matrixClient.removeListener(\"sync\", this._onClientSync);\n if (this._filterStoreToken) {\n this._filterStoreToken.remove();\n }\n },\n _onGroupMyMembership: function _onGroupMyMembership() {\n if (this.unmounted) return;\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n },\n _onClientSync: function _onClientSync(syncState, prevState) {\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected) {\n // Load joined groups\n _dispatcher2.default.dispatch(_GroupActions2.default.fetchJoinedGroups(this.context.matrixClient));\n }\n },\n onMouseDown: function onMouseDown(e) {\n // only dispatch if its not a no-op\n if (this.state.selectedTags.length > 0) {\n _dispatcher2.default.dispatch({ action: 'deselect_tags' });\n }\n },\n onCreateGroupClick: function onCreateGroupClick(ev) {\n ev.stopPropagation();\n _dispatcher2.default.dispatch({ action: 'view_create_group' });\n },\n onClearFilterClick: function onClearFilterClick(ev) {\n _dispatcher2.default.dispatch({ action: 'deselect_tags' });\n },\n render: function render() {\n var _this2 = this;\n\n var GroupsButton = _index2.default.getComponent('elements.GroupsButton');\n var DNDTagTile = _index2.default.getComponent('elements.DNDTagTile');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var TintableSvg = _index2.default.getComponent('elements.TintableSvg');\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var tags = this.state.orderedTags.map(function (tag, index) {\n return _react2.default.createElement(DNDTagTile, {\n key: tag,\n tag: tag,\n index: index,\n selected: _this2.state.selectedTags.includes(tag)\n });\n });\n\n var itemsSelected = this.state.selectedTags.length > 0;\n\n var clearButton = void 0;\n if (itemsSelected) {\n clearButton = _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_TagPanel_clearButton', onClick: this.onClearFilterClick },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-close.svg', width: '24', height: '24',\n alt: (0, _languageHandler._t)(\"Clear filter\"),\n title: (0, _languageHandler._t)(\"Clear filter\")\n })\n );\n }\n\n var classes = (0, _classnames2.default)('mx_TagPanel', {\n mx_TagPanel_items_selected: itemsSelected\n });\n\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagPanel_clearButton_container' },\n clearButton\n ),\n _react2.default.createElement('div', { className: 'mx_TagPanel_divider' }),\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n {\n className: 'mx_TagPanel_scroller',\n autoshow: true\n // XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273\n // instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6253\n , onMouseDown: this.onMouseDown\n },\n _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n {\n droppableId: 'tag-panel-droppable',\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n {\n className: 'mx_TagPanel_tagTileContainer',\n ref: provided.innerRef\n },\n tags,\n provided.placeholder\n );\n }\n )\n ),\n _react2.default.createElement('div', { className: 'mx_TagPanel_divider' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagPanel_groupsButton' },\n _react2.default.createElement(GroupsButton, { tooltip: true })\n )\n );\n }\n});\nexports.default = TagPanel;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _actionCreators = require('./actionCreators');\n\nvar GroupActions = {};\n\n/**\n * Creates an action thunk that will do an asynchronous request to fetch\n * the groups to which a user is joined.\n *\n * @param {MatrixClient} matrixClient the matrix client to query.\n * @returns {function} an action thunk that will dispatch actions\n * indicating the status of the request.\n * @see asyncAction\n */\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nGroupActions.fetchJoinedGroups = function (matrixClient) {\n return (0, _actionCreators.asyncAction)('GroupActions.fetchJoinedGroups', function () {\n return matrixClient.getJoinedGroups();\n });\n};\n\nexports.default = GroupActions;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupActions.js.map","\"use strict\";\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _toConsumableArray2 = require(\"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _defineProperty2 = require(\"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _SettingsStore = require(\"../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require(\"../../languageHandler\");\n\nvar _Keyboard = require(\"../../Keyboard\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ReactDOM = require(\"react-dom\");\n\n\nvar Matrix = require(\"matrix-js-sdk\");\nvar EventTimeline = Matrix.EventTimeline;\n\nvar sdk = require('../../index');\n\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar dis = require(\"../../dispatcher\");\nvar ObjectUtils = require('../../ObjectUtils');\nvar Modal = require(\"../../Modal\");\nvar UserActivity = require(\"../../UserActivity\");\n\n\nvar PAGINATE_SIZE = 20;\nvar INITIAL_SIZE = 20;\n\nvar DEBUG = false;\n\nif (DEBUG) {\n // using bind means that we get to keep useful line numbers in the console\n var debuglog = console.log.bind(console);\n} else {\n var debuglog = function debuglog() {};\n}\n\n/*\n * Component which shows the event timeline in a room view.\n *\n * Also responsible for handling and sending read receipts.\n */\nvar TimelinePanel = React.createClass({\n displayName: 'TimelinePanel',\n\n propTypes: {\n // The js-sdk EventTimelineSet object for the timeline sequence we are\n // representing. This may or may not have a room, depending on what it's\n // a timeline representing. If it has a room, we maintain RRs etc for\n // that room.\n timelineSet: _propTypes2.default.object.isRequired,\n\n showReadReceipts: _propTypes2.default.bool,\n // Enable managing RRs and RMs. These require the timelineSet to have a room.\n manageReadReceipts: _propTypes2.default.bool,\n manageReadMarkers: _propTypes2.default.bool,\n\n // true to give the component a 'display: none' style.\n hidden: _propTypes2.default.bool,\n\n // ID of an event to highlight. If undefined, no event will be highlighted.\n // typically this will be either 'eventId' or undefined.\n highlightedEventId: _propTypes2.default.string,\n\n // id of an event to jump to. If not given, will go to the end of the\n // live timeline.\n eventId: _propTypes2.default.string,\n\n // where to position the event given by eventId, in pixels from the\n // bottom of the viewport. If not given, will try to put the event\n // half way down the viewport.\n eventPixelOffset: _propTypes2.default.number,\n\n // Should we show URL Previews\n showUrlPreview: _propTypes2.default.bool,\n\n // callback which is called when the panel is scrolled.\n onScroll: _propTypes2.default.func,\n\n // callback which is called when the read-up-to mark is updated.\n onReadMarkerUpdated: _propTypes2.default.func,\n\n // maximum number of events to show in a timeline\n timelineCap: _propTypes2.default.number,\n\n // classname to use for the messagepanel\n className: _propTypes2.default.string,\n\n // shape property to be passed to EventTiles\n tileShape: _propTypes2.default.string,\n\n // placeholder text to use if the timeline is empty\n empty: _propTypes2.default.string\n },\n\n statics: {\n // a map from room id to read marker event timestamp\n roomReadMarkerTsMap: {}\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n // By default, disable the timelineCap in favour of unpaginating based on\n // event tile heights. (See _unpaginateEvents)\n timelineCap: Number.MAX_VALUE,\n className: 'mx_RoomView_messagePanel'\n };\n },\n\n getInitialState: function getInitialState() {\n // XXX: we could track RM per TimelineSet rather than per Room.\n // but for now we just do it per room for simplicity.\n var initialReadMarker = null;\n if (this.props.manageReadMarkers) {\n var readmarker = this.props.timelineSet.room.getAccountData('m.fully_read');\n if (readmarker) {\n initialReadMarker = readmarker.getContent().event_id;\n } else {\n initialReadMarker = this._getCurrentReadReceipt();\n }\n }\n\n return {\n events: [],\n timelineLoading: true, // track whether our room timeline is loading\n\n // canBackPaginate == false may mean:\n //\n // * we haven't (successfully) loaded the timeline yet, or:\n //\n // * we have got to the point where the room was created, or:\n //\n // * the server indicated that there were no more visible events\n // (normally implying we got to the start of the room), or:\n //\n // * we gave up asking the server for more events\n canBackPaginate: false,\n\n // canForwardPaginate == false may mean:\n //\n // * we haven't (successfully) loaded the timeline yet\n //\n // * we have got to the end of time and are now tracking the live\n // timeline, or:\n //\n // * the server indicated that there were no more visible events\n // (not sure if this ever happens when we're not at the live\n // timeline), or:\n //\n // * we are looking at some historical point, but gave up asking\n // the server for more events\n canForwardPaginate: false,\n\n // start with the read-marker visible, so that we see its animated\n // disappearance when switching into the room.\n readMarkerVisible: true,\n\n readMarkerEventId: initialReadMarker,\n\n backPaginating: false,\n forwardPaginating: false,\n\n // cache of matrixClient.getSyncState() (but from the 'sync' event)\n clientSyncState: MatrixClientPeg.get().getSyncState(),\n\n // should the event tiles have twelve hour times\n isTwelveHour: _SettingsStore2.default.getValue(\"showTwelveHourTimestamps\"),\n\n // always show timestamps on event tiles?\n alwaysShowTimestamps: _SettingsStore2.default.getValue(\"alwaysShowTimestamps\")\n };\n },\n\n componentWillMount: function componentWillMount() {\n debuglog(\"TimelinePanel: mounting\");\n\n this.lastRRSentEventId = undefined;\n this.lastRMSentEventId = undefined;\n\n this.dispatcherRef = dis.register(this.onAction);\n MatrixClientPeg.get().on(\"Room.timeline\", this.onRoomTimeline);\n MatrixClientPeg.get().on(\"Room.timelineReset\", this.onRoomTimelineReset);\n MatrixClientPeg.get().on(\"Room.redaction\", this.onRoomRedaction);\n MatrixClientPeg.get().on(\"Room.receipt\", this.onRoomReceipt);\n MatrixClientPeg.get().on(\"Room.localEchoUpdated\", this.onLocalEchoUpdated);\n MatrixClientPeg.get().on(\"Room.accountData\", this.onAccountData);\n MatrixClientPeg.get().on(\"Event.decrypted\", this.onEventDecrypted);\n MatrixClientPeg.get().on(\"sync\", this.onSync);\n\n this._initTimeline(this.props);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.timelineSet !== this.props.timelineSet) {\n // throw new Error(\"changing timelineSet on a TimelinePanel is not supported\");\n\n // regrettably, this does happen; in particular, when joining a\n // room with /join. In that case, there are two Rooms in\n // circulation - one which is created by the MatrixClient.joinRoom\n // call and used to create the RoomView, and a second which is\n // created by the sync loop once the room comes back down the /sync\n // pipe. Once the latter happens, our room is replaced with the new one.\n //\n // for now, just warn about this. But we're going to end up paginating\n // both rooms separately, and it's all bad.\n console.warn(\"Replacing timelineSet on a TimelinePanel - confusion may ensue\");\n }\n\n if (newProps.eventId != this.props.eventId) {\n console.log(\"TimelinePanel switching to eventId \" + newProps.eventId + \" (was \" + this.props.eventId + \")\");\n return this._initTimeline(newProps);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (!ObjectUtils.shallowEqual(this.props, nextProps)) {\n if (DEBUG) {\n console.group(\"Timeline.shouldComponentUpdate: props change\");\n console.log(\"props before:\", this.props);\n console.log(\"props after:\", nextProps);\n console.groupEnd();\n }\n return true;\n }\n\n if (!ObjectUtils.shallowEqual(this.state, nextState)) {\n if (DEBUG) {\n console.group(\"Timeline.shouldComponentUpdate: state change\");\n console.log(\"state before:\", this.state);\n console.log(\"state after:\", nextState);\n console.groupEnd();\n }\n return true;\n }\n\n return false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // set a boolean to say we've been unmounted, which any pending\n // promises can use to throw away their results.\n //\n // (We could use isMounted, but facebook have deprecated that.)\n this.unmounted = true;\n\n dis.unregister(this.dispatcherRef);\n\n var client = MatrixClientPeg.get();\n if (client) {\n client.removeListener(\"Room.timeline\", this.onRoomTimeline);\n client.removeListener(\"Room.timelineReset\", this.onRoomTimelineReset);\n client.removeListener(\"Room.redaction\", this.onRoomRedaction);\n client.removeListener(\"Room.receipt\", this.onRoomReceipt);\n client.removeListener(\"Room.localEchoUpdated\", this.onLocalEchoUpdated);\n client.removeListener(\"Room.accountData\", this.onAccountData);\n client.removeListener(\"Event.decrypted\", this.onEventDecrypted);\n client.removeListener(\"sync\", this.onSync);\n }\n },\n\n onMessageListUnfillRequest: function onMessageListUnfillRequest(backwards, scrollToken) {\n // If backwards, unpaginate from the back (i.e. the start of the timeline)\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n debuglog(\"TimelinePanel: unpaginating events in direction\", dir);\n\n // All tiles are inserted by MessagePanel to have a scrollToken === eventId, and\n // this particular event should be the first or last to be unpaginated.\n var eventId = scrollToken;\n\n var marker = this.state.events.findIndex(function (ev) {\n return ev.getId() === eventId;\n });\n\n var count = backwards ? marker + 1 : this.state.events.length - marker;\n\n if (count > 0) {\n var _setState;\n\n debuglog(\"TimelinePanel: Unpaginating\", count, \"in direction\", dir);\n this._timelineWindow.unpaginate(count, backwards);\n\n // We can now paginate in the unpaginated direction\n var canPaginateKey = backwards ? 'canBackPaginate' : 'canForwardPaginate';\n this.setState((_setState = {}, (0, _defineProperty3.default)(_setState, canPaginateKey, true), (0, _defineProperty3.default)(_setState, \"events\", this._getEvents()), _setState));\n }\n },\n\n // set off a pagination request.\n onMessageListFillRequest: function onMessageListFillRequest(backwards) {\n var _this = this;\n\n if (!this._shouldPaginate()) return _bluebird2.default.resolve(false);\n\n var dir = backwards ? EventTimeline.BACKWARDS : EventTimeline.FORWARDS;\n var canPaginateKey = backwards ? 'canBackPaginate' : 'canForwardPaginate';\n var paginatingKey = backwards ? 'backPaginating' : 'forwardPaginating';\n\n if (!this.state[canPaginateKey]) {\n debuglog(\"TimelinePanel: have given up\", dir, \"paginating this timeline\");\n return _bluebird2.default.resolve(false);\n }\n\n if (!this._timelineWindow.canPaginate(dir)) {\n debuglog(\"TimelinePanel: can't\", dir, \"paginate any further\");\n this.setState((0, _defineProperty3.default)({}, canPaginateKey, false));\n return _bluebird2.default.resolve(false);\n }\n\n debuglog(\"TimelinePanel: Initiating paginate; backwards:\" + backwards);\n this.setState((0, _defineProperty3.default)({}, paginatingKey, true));\n\n return this._timelineWindow.paginate(dir, PAGINATE_SIZE).then(function (r) {\n var _newState;\n\n if (_this.unmounted) {\n return;\n }\n\n debuglog(\"TimelinePanel: paginate complete backwards:\" + backwards + \"; success:\" + r);\n\n var newState = (_newState = {}, (0, _defineProperty3.default)(_newState, paginatingKey, false), (0, _defineProperty3.default)(_newState, canPaginateKey, r), (0, _defineProperty3.default)(_newState, \"events\", _this._getEvents()), _newState);\n\n // moving the window in this direction may mean that we can now\n // paginate in the other where we previously could not.\n var otherDirection = backwards ? EventTimeline.FORWARDS : EventTimeline.BACKWARDS;\n var canPaginateOtherWayKey = backwards ? 'canForwardPaginate' : 'canBackPaginate';\n if (!_this.state[canPaginateOtherWayKey] && _this._timelineWindow.canPaginate(otherDirection)) {\n debuglog('TimelinePanel: can now', otherDirection, 'paginate again');\n newState[canPaginateOtherWayKey] = true;\n }\n\n // Don't resolve until the setState has completed: we need to let\n // the component update before we consider the pagination completed,\n // otherwise we'll end up paginating in all the history the js-sdk\n // has in memory because we never gave the component a chance to scroll\n // itself into the right place\n return new _bluebird2.default(function (resolve) {\n _this.setState(newState, function () {\n resolve(r);\n });\n });\n });\n },\n\n onMessageListScroll: function onMessageListScroll(e) {\n if (this.props.onScroll) {\n this.props.onScroll(e);\n }\n\n if (this.props.manageReadMarkers) {\n // we hide the read marker when it first comes onto the screen, but if\n // it goes back off the top of the screen (presumably because the user\n // clicks on the 'jump to bottom' button), we need to re-enable it.\n if (this.getReadMarkerPosition() < 0) {\n this.setState({ readMarkerVisible: true });\n }\n }\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'user_activity':\n case 'user_activity_end':\n // we could treat user_activity_end differently and not\n // send receipts for messages that have arrived between\n // the actual user activity and the time they stopped\n // being active, but let's see if this is actually\n // necessary.\n this.sendReadReceipt();\n this.updateReadMarker();\n break;\n case 'ignore_state_changed':\n this.forceUpdate();\n break;\n }\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n var _this2 = this;\n\n // ignore events for other timeline sets\n if (data.timeline.getTimelineSet() !== this.props.timelineSet) return;\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n if (!this.refs.messagePanel) return;\n\n if (!this.refs.messagePanel.getScrollState().stuckAtBottom) {\n // we won't load this event now, because we don't want to push any\n // events off the other end of the timeline. But we need to note\n // that we can now paginate.\n this.setState({ canForwardPaginate: true });\n return;\n }\n\n // tell the timeline window to try to advance itself, but not to make\n // an http request to do so.\n //\n // we deliberately avoid going via the ScrollPanel for this call - the\n // ScrollPanel might already have an active pagination promise, which\n // will fail, but would stop us passing the pagination request to the\n // timeline window.\n //\n // see https://github.com/vector-im/vector-web/issues/1035\n this._timelineWindow.paginate(EventTimeline.FORWARDS, 1, false).done(function () {\n if (_this2.unmounted) {\n return;\n }\n\n var events = _this2._timelineWindow.getEvents();\n var lastEv = events[events.length - 1];\n\n // if we're at the end of the live timeline, append the pending events\n if (_this2.props.timelineSet.room && !_this2._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n events.push.apply(events, (0, _toConsumableArray3.default)(_this2.props.timelineSet.room.getPendingEvents()));\n }\n\n var updatedState = { events: events };\n\n if (_this2.props.manageReadMarkers) {\n // when a new event arrives when the user is not watching the\n // window, but the window is in its auto-scroll mode, make sure the\n // read marker is visible.\n //\n // We ignore events we have sent ourselves; we don't want to see the\n // read-marker when a remote echo of an event we have just sent takes\n // more than the timeout on userCurrentlyActive.\n //\n var myUserId = MatrixClientPeg.get().credentials.userId;\n var sender = ev.sender ? ev.sender.userId : null;\n var callback = null;\n if (sender != myUserId && !UserActivity.userCurrentlyActive()) {\n updatedState.readMarkerVisible = true;\n } else if (lastEv && _this2.getReadMarkerPosition() === 0) {\n // we know we're stuckAtBottom, so we can advance the RM\n // immediately, to save a later render cycle\n\n _this2._setReadMarker(lastEv.getId(), lastEv.getTs(), true);\n updatedState.readMarkerVisible = false;\n updatedState.readMarkerEventId = lastEv.getId();\n callback = _this2.props.onReadMarkerUpdated;\n }\n }\n\n _this2.setState(updatedState, callback);\n });\n },\n\n onRoomTimelineReset: function onRoomTimelineReset(room, timelineSet) {\n if (timelineSet !== this.props.timelineSet) return;\n\n if (this.refs.messagePanel && this.refs.messagePanel.isAtBottom()) {\n this._loadTimeline();\n }\n },\n\n canResetTimeline: function canResetTimeline() {\n return this.refs.messagePanel && this.refs.messagePanel.isAtBottom();\n },\n\n onRoomRedaction: function onRoomRedaction(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n // we could skip an update if the event isn't in our timeline,\n // but that's probably an early optimisation.\n this.forceUpdate();\n },\n\n onRoomReceipt: function onRoomReceipt(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n this.forceUpdate();\n },\n\n onLocalEchoUpdated: function onLocalEchoUpdated(ev, room, oldEventId) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n this._reloadEvents();\n },\n\n onAccountData: function onAccountData(ev, room) {\n if (this.unmounted) return;\n\n // ignore events for other rooms\n if (room !== this.props.timelineSet.room) return;\n\n if (ev.getType() !== \"m.fully_read\") return;\n\n // XXX: roomReadMarkerTsMap not updated here so it is now inconsistent. Replace\n // this mechanism of determining where the RM is relative to the view-port with\n // one supported by the server (the client needs more than an event ID).\n this.setState({\n readMarkerEventId: ev.getContent().event_id\n }, this.props.onReadMarkerUpdated);\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // Need to update as we don't display event tiles for events that\n // haven't yet been decrypted. The event will have just been updated\n // in place so we just need to re-render.\n // TODO: We should restrict this to only events in our timeline,\n // but possibly the event tile itself should just update when this\n // happens to save us re-rendering the whole timeline.\n if (ev.getRoomId() === this.props.timelineSet.room.roomId) {\n this.forceUpdate();\n }\n },\n\n onSync: function onSync(state, prevState, data) {\n this.setState({ clientSyncState: state });\n },\n\n sendReadReceipt: function sendReadReceipt() {\n var _this3 = this;\n\n if (!this.refs.messagePanel) return;\n if (!this.props.manageReadReceipts) return;\n // This happens on user_activity_end which is delayed, and it's\n // very possible have logged out within that timeframe, so check\n // we still have a client.\n var cli = MatrixClientPeg.get();\n // if no client or client is guest don't send RR or RM\n if (!cli || cli.isGuest()) return;\n\n var shouldSendRR = true;\n\n var currentRREventId = this._getCurrentReadReceipt(true);\n var currentRREventIndex = this._indexForEventId(currentRREventId);\n // We want to avoid sending out read receipts when we are looking at\n // events in the past which are before the latest RR.\n //\n // For now, let's apply a heuristic: if (a) the event corresponding to\n // the latest RR (either from the server, or sent by ourselves) doesn't\n // appear in our timeline, and (b) we could forward-paginate the event\n // timeline, then don't send any more RRs.\n //\n // This isn't watertight, as we could be looking at a section of\n // timeline which is *after* the latest RR (so we should actually send\n // RRs) - but that is a bit of a niche case. It will sort itself out when\n // the user eventually hits the live timeline.\n //\n if (currentRREventId && currentRREventIndex === null && this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n shouldSendRR = false;\n }\n\n var lastReadEventIndex = this._getLastDisplayedEventIndex({\n ignoreOwn: true\n });\n if (lastReadEventIndex === null) {\n shouldSendRR = false;\n }\n var lastReadEvent = this.state.events[lastReadEventIndex];\n shouldSendRR = shouldSendRR &&\n // Only send a RR if the last read event is ahead in the timeline relative to\n // the current RR event.\n lastReadEventIndex > currentRREventIndex &&\n // Only send a RR if the last RR set != the one we would send\n this.lastRRSentEventId != lastReadEvent.getId();\n\n // Only send a RM if the last RM sent != the one we would send\n var shouldSendRM = this.lastRMSentEventId != this.state.readMarkerEventId;\n\n // we also remember the last read receipt we sent to avoid spamming the\n // same one at the server repeatedly\n if (shouldSendRR || shouldSendRM) {\n if (shouldSendRR) {\n this.lastRRSentEventId = lastReadEvent.getId();\n } else {\n lastReadEvent = null;\n }\n this.lastRMSentEventId = this.state.readMarkerEventId;\n\n debuglog('TimelinePanel: Sending Read Markers for ', this.props.timelineSet.room.roomId, 'rm', this.state.readMarkerEventId, lastReadEvent ? 'rr ' + lastReadEvent.getId() : '');\n MatrixClientPeg.get().setRoomReadMarkers(this.props.timelineSet.room.roomId, this.state.readMarkerEventId, lastReadEvent // Could be null, in which case no RR is sent\n ).catch(function (e) {\n // /read_markers API is not implemented on this HS, fallback to just RR\n if (e.errcode === 'M_UNRECOGNIZED' && lastReadEvent) {\n return MatrixClientPeg.get().sendReadReceipt(lastReadEvent).catch(function () {\n _this3.lastRRSentEventId = undefined;\n });\n }\n // it failed, so allow retries next time the user is active\n _this3.lastRRSentEventId = undefined;\n _this3.lastRMSentEventId = undefined;\n });\n\n // do a quick-reset of our unreadNotificationCount to avoid having\n // to wait from the remote echo from the homeserver.\n // we only do this if we're right at the end, because we're just assuming\n // that sending an RR for the latest message will set our notif counter\n // to zero: it may not do this if we send an RR for somewhere before the end.\n if (this.isAtEndOfLiveTimeline()) {\n this.props.timelineSet.room.setUnreadNotificationCount('total', 0);\n this.props.timelineSet.room.setUnreadNotificationCount('highlight', 0);\n dis.dispatch({\n action: 'on_room_read',\n roomId: this.props.timelineSet.room.roomId\n });\n }\n }\n },\n\n // if the read marker is on the screen, we can now assume we've caught up to the end\n // of the screen, so move the marker down to the bottom of the screen.\n updateReadMarker: function updateReadMarker() {\n if (!this.props.manageReadMarkers) return;\n if (this.getReadMarkerPosition() !== 0) {\n return;\n }\n\n // move the RM to *after* the message at the bottom of the screen. This\n // avoids a problem whereby we never advance the RM if there is a huge\n // message which doesn't fit on the screen.\n //\n // But ignore local echoes for this - they have a temporary event ID\n // and we'll get confused when their ID changes and we can't figure out\n // where the RM is pointing to. The read marker will be invisible for\n // now anyway, so this doesn't really matter.\n var lastDisplayedIndex = this._getLastDisplayedEventIndex({\n allowPartial: true,\n ignoreEchoes: true\n });\n\n if (lastDisplayedIndex === null) {\n return;\n }\n\n var lastDisplayedEvent = this.state.events[lastDisplayedIndex];\n this._setReadMarker(lastDisplayedEvent.getId(), lastDisplayedEvent.getTs());\n\n // the read-marker should become invisible, so that if the user scrolls\n // down, they don't see it.\n if (this.state.readMarkerVisible) {\n this.setState({\n readMarkerVisible: false\n });\n }\n },\n\n // advance the read marker past any events we sent ourselves.\n _advanceReadMarkerPastMyEvents: function _advanceReadMarkerPastMyEvents() {\n if (!this.props.manageReadMarkers) return;\n\n // we call _timelineWindow.getEvents() rather than using\n // this.state.events, because react batches the update to the latter, so it\n // may not have been updated yet.\n var events = this._timelineWindow.getEvents();\n\n // first find where the current RM is\n for (var i = 0; i < events.length; i++) {\n if (events[i].getId() == this.state.readMarkerEventId) {\n break;\n }\n }\n if (i >= events.length) {\n return;\n }\n\n // now think about advancing it\n var myUserId = MatrixClientPeg.get().credentials.userId;\n for (i++; i < events.length; i++) {\n var ev = events[i];\n if (!ev.sender || ev.sender.userId != myUserId) {\n break;\n }\n }\n // i is now the first unread message which we didn't send ourselves.\n i--;\n\n var ev = events[i];\n this._setReadMarker(ev.getId(), ev.getTs());\n },\n\n /* jump down to the bottom of this room, where new events are arriving\n */\n jumpToLiveTimeline: function jumpToLiveTimeline() {\n // if we can't forward-paginate the existing timeline, then there\n // is no point reloading it - just jump straight to the bottom.\n //\n // Otherwise, reload the timeline rather than trying to paginate\n // through all of space-time.\n if (this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n this._loadTimeline();\n } else {\n if (this.refs.messagePanel) {\n this.refs.messagePanel.scrollToBottom();\n }\n }\n },\n\n /* scroll to show the read-up-to marker. We put it 1/3 of the way down\n * the container.\n */\n jumpToReadMarker: function jumpToReadMarker() {\n if (!this.props.manageReadMarkers) return;\n if (!this.refs.messagePanel) return;\n if (!this.state.readMarkerEventId) return;\n\n // we may not have loaded the event corresponding to the read-marker\n // into the _timelineWindow. In that case, attempts to scroll to it\n // will fail.\n //\n // a quick way to figure out if we've loaded the relevant event is\n // simply to check if the messagepanel knows where the read-marker is.\n var ret = this.refs.messagePanel.getReadMarkerPosition();\n if (ret !== null) {\n // The messagepanel knows where the RM is, so we must have loaded\n // the relevant event.\n this.refs.messagePanel.scrollToEvent(this.state.readMarkerEventId, 0, 1 / 3);\n return;\n }\n\n // Looks like we haven't loaded the event corresponding to the read-marker.\n // As with jumpToLiveTimeline, we want to reload the timeline around the\n // read-marker.\n this._loadTimeline(this.state.readMarkerEventId, 0, 1 / 3);\n },\n\n /* update the read-up-to marker to match the read receipt\n */\n forgetReadMarker: function forgetReadMarker() {\n if (!this.props.manageReadMarkers) return;\n\n var rmId = this._getCurrentReadReceipt();\n\n // see if we know the timestamp for the rr event\n var tl = this.props.timelineSet.getTimelineForEvent(rmId);\n var rmTs = void 0;\n if (tl) {\n var event = tl.getEvents().find(function (e) {\n return e.getId() == rmId;\n });\n if (event) {\n rmTs = event.getTs();\n }\n }\n\n this._setReadMarker(rmId, rmTs);\n },\n\n /* return true if the content is fully scrolled down and we are\n * at the end of the live timeline.\n */\n isAtEndOfLiveTimeline: function isAtEndOfLiveTimeline() {\n return this.refs.messagePanel && this.refs.messagePanel.isAtBottom() && this._timelineWindow && !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);\n },\n\n /* get the current scroll state. See ScrollPanel.getScrollState for\n * details.\n *\n * returns null if we are not mounted.\n */\n getScrollState: function getScrollState() {\n if (!this.refs.messagePanel) {\n return null;\n }\n return this.refs.messagePanel.getScrollState();\n },\n\n // returns one of:\n //\n // null: there is no read marker\n // -1: read marker is above the window\n // 0: read marker is visible\n // +1: read marker is below the window\n getReadMarkerPosition: function getReadMarkerPosition() {\n if (!this.props.manageReadMarkers) return null;\n if (!this.refs.messagePanel) return null;\n\n var ret = this.refs.messagePanel.getReadMarkerPosition();\n if (ret !== null) {\n return ret;\n }\n\n // the messagePanel doesn't know where the read marker is.\n // if we know the timestamp of the read marker, make a guess based on that.\n var rmTs = TimelinePanel.roomReadMarkerTsMap[this.props.timelineSet.room.roomId];\n if (rmTs && this.state.events.length > 0) {\n if (rmTs < this.state.events[0].getTs()) {\n return -1;\n } else {\n return 1;\n }\n }\n\n return null;\n },\n\n canJumpToReadMarker: function canJumpToReadMarker() {\n // 1. Do not show jump bar if neither the RM nor the RR are set.\n // 2. Only show jump bar if RR !== RM. If they are the same, there are only fully\n // read messages and unread messages. We already have a badge count and the bottom\n // bar to jump to \"live\" when we have unread messages.\n // 3. We want to show the bar if the read-marker is off the top of the screen.\n // 4. Also, if pos === null, the event might not be paginated - show the unread bar\n var pos = this.getReadMarkerPosition();\n return this.state.readMarkerEventId !== null && // 1.\n this.state.readMarkerEventId !== this._getCurrentReadReceipt() && ( // 2.\n pos < 0 || pos === null); // 3., 4.\n },\n\n /**\n * called by the parent component when PageUp/Down/etc is pressed.\n *\n * We pass it down to the scroll panel.\n */\n handleScrollKey: function handleScrollKey(ev) {\n if (!this.refs.messagePanel) {\n return;\n }\n\n // jump to the live timeline on ctrl-end, rather than the end of the\n // timeline window.\n if (ev.ctrlKey && !ev.shiftKey && !ev.altKey && !ev.metaKey && ev.keyCode == _Keyboard.KeyCode.END) {\n this.jumpToLiveTimeline();\n } else {\n this.refs.messagePanel.handleScrollKey(ev);\n }\n },\n\n _initTimeline: function _initTimeline(props) {\n var initialEvent = props.eventId;\n var pixelOffset = props.eventPixelOffset;\n\n // if a pixelOffset is given, it is relative to the bottom of the\n // container. If not, put the event in the middle of the container.\n var offsetBase = 1;\n if (pixelOffset == null) {\n offsetBase = 0.5;\n }\n\n return this._loadTimeline(initialEvent, pixelOffset, offsetBase);\n },\n\n /**\n * (re)-load the event timeline, and initialise the scroll state, centered\n * around the given event.\n *\n * @param {string?} eventId the event to focus on. If undefined, will\n * scroll to the bottom of the room.\n *\n * @param {number?} pixelOffset offset to position the given event at\n * (pixels from the offsetBase). If omitted, defaults to 0.\n *\n * @param {number?} offsetBase the reference point for the pixelOffset. 0\n * means the top of the container, 1 means the bottom, and fractional\n * values mean somewhere in the middle. If omitted, it defaults to 0.\n *\n * returns a promise which will resolve when the load completes.\n */\n _loadTimeline: function _loadTimeline(eventId, pixelOffset, offsetBase) {\n var _this4 = this;\n\n this._timelineWindow = new Matrix.TimelineWindow(MatrixClientPeg.get(), this.props.timelineSet, { windowLimit: this.props.timelineCap });\n\n var onLoaded = function onLoaded() {\n _this4._reloadEvents();\n\n // If we switched away from the room while there were pending\n // outgoing events, the read-marker will be before those events.\n // We need to skip over any which have subsequently been sent.\n _this4._advanceReadMarkerPastMyEvents();\n\n _this4.setState({\n canBackPaginate: _this4._timelineWindow.canPaginate(EventTimeline.BACKWARDS),\n canForwardPaginate: _this4._timelineWindow.canPaginate(EventTimeline.FORWARDS),\n timelineLoading: false\n }, function () {\n // initialise the scroll state of the message panel\n if (!_this4.refs.messagePanel) {\n // this shouldn't happen - we know we're mounted because\n // we're in a setState callback, and we know\n // timelineLoading is now false, so render() should have\n // mounted the message panel.\n console.log(\"can't initialise scroll state because \" + \"messagePanel didn't load\");\n return;\n }\n if (eventId) {\n _this4.refs.messagePanel.scrollToEvent(eventId, pixelOffset, offsetBase);\n } else {\n _this4.refs.messagePanel.scrollToBottom();\n }\n\n _this4.sendReadReceipt();\n _this4.updateReadMarker();\n });\n };\n\n var onError = function onError(error) {\n _this4.setState({ timelineLoading: false });\n console.error(\"Error loading timeline panel at \" + eventId + \": \" + error);\n var msg = error.message ? error.message : (0, _stringify2.default)(error);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n\n var onFinished = void 0;\n\n // if we were given an event ID, then when the user closes the\n // dialog, let's jump to the end of the timeline. If we weren't,\n // something has gone badly wrong and rather than causing a loop of\n // undismissable dialogs, let's just give up.\n if (eventId) {\n onFinished = function onFinished() {\n // go via the dispatcher so that the URL is updated\n dis.dispatch({\n action: 'view_room',\n room_id: _this4.props.timelineSet.room.roomId\n });\n };\n }\n var message = error.errcode == 'M_FORBIDDEN' ? (0, _languageHandler._t)(\"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.\") : (0, _languageHandler._t)(\"Tried to load a specific point in this room's timeline, but was unable to find it.\");\n Modal.createTrackedDialog('Failed to load timeline position', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to load timeline position\"),\n description: message,\n onFinished: onFinished\n });\n };\n\n var prom = this._timelineWindow.load(eventId, INITIAL_SIZE);\n\n // if we already have the event in question, TimelineWindow.load\n // returns a resolved promise.\n //\n // In this situation, we don't really want to defer the update of the\n // state to the next event loop, because it makes room-switching feel\n // quite slow. So we detect that situation and shortcut straight to\n // calling _reloadEvents and updating the state.\n\n if (prom.isFulfilled()) {\n onLoaded();\n } else {\n this.setState({\n events: [],\n canBackPaginate: false,\n canForwardPaginate: false,\n timelineLoading: true\n });\n\n prom = prom.then(onLoaded, onError);\n }\n\n prom.done();\n },\n\n // handle the completion of a timeline load or localEchoUpdate, by\n // reloading the events from the timelinewindow and pending event list into\n // the state.\n _reloadEvents: function _reloadEvents() {\n // we might have switched rooms since the load started - just bin\n // the results if so.\n if (this.unmounted) return;\n\n this.setState({\n events: this._getEvents()\n });\n },\n\n // get the list of events from the timeline window and the pending event list\n _getEvents: function _getEvents() {\n var events = this._timelineWindow.getEvents();\n\n // if we're at the end of the live timeline, append the pending events\n if (!this._timelineWindow.canPaginate(EventTimeline.FORWARDS)) {\n events.push.apply(events, (0, _toConsumableArray3.default)(this.props.timelineSet.getPendingEvents()));\n }\n\n return events;\n },\n\n _indexForEventId: function _indexForEventId(evId) {\n for (var i = 0; i < this.state.events.length; ++i) {\n if (evId == this.state.events[i].getId()) {\n return i;\n }\n }\n return null;\n },\n\n _getLastDisplayedEventIndex: function _getLastDisplayedEventIndex(opts) {\n opts = opts || {};\n var ignoreOwn = opts.ignoreOwn || false;\n var ignoreEchoes = opts.ignoreEchoes || false;\n var allowPartial = opts.allowPartial || false;\n\n var messagePanel = this.refs.messagePanel;\n if (messagePanel === undefined) return null;\n\n var wrapperRect = ReactDOM.findDOMNode(messagePanel).getBoundingClientRect();\n var myUserId = MatrixClientPeg.get().credentials.userId;\n\n for (var i = this.state.events.length - 1; i >= 0; --i) {\n var ev = this.state.events[i];\n\n if (ignoreOwn && ev.sender && ev.sender.userId == myUserId) {\n continue;\n }\n\n // local echoes have a fake event ID\n if (ignoreEchoes && ev.status) {\n continue;\n }\n\n var node = messagePanel.getNodeForEventId(ev.getId());\n if (!node) continue;\n\n var boundingRect = node.getBoundingClientRect();\n if (allowPartial && boundingRect.top < wrapperRect.bottom || !allowPartial && boundingRect.bottom < wrapperRect.bottom) {\n return i;\n }\n }\n return null;\n },\n\n /**\n * get the id of the event corresponding to our user's latest read-receipt.\n *\n * @param {Boolean} ignoreSynthesized If true, return only receipts that\n * have been sent by the server, not\n * implicit ones generated by the JS\n * SDK.\n */\n _getCurrentReadReceipt: function _getCurrentReadReceipt(ignoreSynthesized) {\n var client = MatrixClientPeg.get();\n // the client can be null on logout\n if (client == null) {\n return null;\n }\n\n var myUserId = client.credentials.userId;\n return this.props.timelineSet.room.getEventReadUpTo(myUserId, ignoreSynthesized);\n },\n\n _setReadMarker: function _setReadMarker(eventId, eventTs, inhibitSetState) {\n var roomId = this.props.timelineSet.room.roomId;\n\n // don't update the state (and cause a re-render) if there is\n // no change to the RM.\n if (eventId === this.state.readMarkerEventId) {\n return;\n }\n\n // in order to later figure out if the read marker is\n // above or below the visible timeline, we stash the timestamp.\n TimelinePanel.roomReadMarkerTsMap[roomId] = eventTs;\n\n if (inhibitSetState) {\n return;\n }\n\n // Do the local echo of the RM\n // run the render cycle before calling the callback, so that\n // getReadMarkerPosition() returns the right thing.\n this.setState({\n readMarkerEventId: eventId\n }, this.props.onReadMarkerUpdated);\n },\n\n _shouldPaginate: function _shouldPaginate() {\n // don't try to paginate while events in the timeline are\n // still being decrypted. We don't render events while they're\n // being decrypted, so they don't take up space in the timeline.\n // This means we can pull quite a lot of events into the timeline\n // and end up trying to render a lot of events.\n return !this.state.events.some(function (e) {\n return e.isBeingDecrypted();\n });\n },\n\n render: function render() {\n var MessagePanel = sdk.getComponent(\"structures.MessagePanel\");\n var Loader = sdk.getComponent(\"elements.Spinner\");\n\n // just show a spinner while the timeline loads.\n //\n // put it in a div of the right class (mx_RoomView_messagePanel) so\n // that the order in the roomview flexbox is correct, and\n // mx_RoomView_messageListWrapper to position the inner div in the\n // right place.\n //\n // Note that the click-on-search-result functionality relies on the\n // fact that the messagePanel is hidden while the timeline reloads,\n // but that the RoomHeader (complete with search term) continues to\n // exist.\n if (this.state.timelineLoading) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomView_messagePanelSpinner\" },\n React.createElement(Loader, null)\n );\n }\n\n if (this.state.events.length == 0 && !this.state.canBackPaginate && this.props.empty) {\n return React.createElement(\n \"div\",\n { className: this.props.className + \" mx_RoomView_messageListWrapper\" },\n React.createElement(\n \"div\",\n { className: \"mx_RoomView_empty\" },\n this.props.empty\n )\n );\n }\n\n // give the messagepanel a stickybottom if we're at the end of the\n // live timeline, so that the arrival of new events triggers a\n // scroll.\n //\n // Make sure that stickyBottom is *false* if we can paginate\n // forwards, otherwise if somebody hits the bottom of the loaded\n // events when viewing historical messages, we get stuck in a loop\n // of paginating our way through the entire history of the room.\n var stickyBottom = !this._timelineWindow.canPaginate(EventTimeline.FORWARDS);\n\n // If the state is PREPARED or CATCHUP, we're still waiting for the js-sdk to sync with\n // the HS and fetch the latest events, so we are effectively forward paginating.\n var forwardPaginating = this.state.forwardPaginating || ['PREPARED', 'CATCHUP'].includes(this.state.clientSyncState);\n return React.createElement(MessagePanel, { ref: \"messagePanel\",\n hidden: this.props.hidden,\n backPaginating: this.state.backPaginating,\n forwardPaginating: forwardPaginating,\n events: this.state.events,\n highlightedEventId: this.props.highlightedEventId,\n readMarkerEventId: this.state.readMarkerEventId,\n readMarkerVisible: this.state.readMarkerVisible,\n suppressFirstDateSeparator: this.state.canBackPaginate,\n showUrlPreview: this.props.showUrlPreview,\n showReadReceipts: this.props.showReadReceipts,\n ourUserId: MatrixClientPeg.get().credentials.userId,\n stickyBottom: stickyBottom,\n onScroll: this.onMessageListScroll,\n onFillRequest: this.onMessageListFillRequest,\n onUnfillRequest: this.onMessageListUnfillRequest,\n isTwelveHour: this.state.isTwelveHour,\n alwaysShowTimestamps: this.state.alwaysShowTimestamps,\n className: this.props.className,\n tileShape: this.props.tileShape\n });\n }\n});\n\nmodule.exports = TimelinePanel;\n//# sourceMappingURL=TimelinePanel.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar ContentMessages = require('../../ContentMessages');\nvar dis = require('../../dispatcher');\nvar filesize = require('filesize');\n\n\nmodule.exports = React.createClass({ displayName: 'UploadBar',\n propTypes: {\n room: _propTypes2.default.object\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n this.mounted = true;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.mounted = false;\n dis.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'upload_progress':\n case 'upload_finished':\n case 'upload_failed':\n if (this.mounted) this.forceUpdate();\n break;\n }\n },\n\n render: function render() {\n var uploads = ContentMessages.getCurrentUploads();\n\n // for testing UI... - also fix up the ContentMessages.getCurrentUploads().length\n // check in RoomView\n //\n // uploads = [{\n // roomId: this.props.room.roomId,\n // loaded: 123493,\n // total: 347534,\n // fileName: \"testing_fooble.jpg\",\n // }];\n\n if (uploads.length == 0) {\n return React.createElement('div', null);\n }\n\n var upload = void 0;\n for (var i = 0; i < uploads.length; ++i) {\n if (uploads[i].roomId == this.props.room.roomId) {\n upload = uploads[i];\n break;\n }\n }\n if (!upload) {\n return React.createElement('div', null);\n }\n\n var innerProgressStyle = {\n width: upload.loaded / (upload.total || 1) * 100 + '%'\n };\n var uploadedSize = filesize(upload.loaded);\n var totalSize = filesize(upload.total);\n if (uploadedSize.replace(/^.* /, '') === totalSize.replace(/^.* /, '')) {\n uploadedSize = uploadedSize.replace(/ .*/, '');\n }\n\n // MUST use var name 'count' for pluralization to kick in\n var uploadText = (0, _languageHandler._t)(\"Uploading %(filename)s and %(count)s others\", { filename: upload.fileName, count: uploads.length - 1 });\n\n return React.createElement(\n 'div',\n { className: 'mx_UploadBar' },\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadProgressOuter' },\n React.createElement('div', { className: 'mx_UploadBar_uploadProgressInner', style: innerProgressStyle })\n ),\n React.createElement('img', { className: 'mx_UploadBar_uploadIcon mx_filterFlipColor', src: 'img/fileicon.png', width: '17', height: '22' }),\n React.createElement('img', { className: 'mx_UploadBar_uploadCancel mx_filterFlipColor', src: 'img/cancel.svg', width: '18', height: '18',\n onClick: function onClick() {\n ContentMessages.cancelUpload(upload.promise);\n }\n }),\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadBytes' },\n uploadedSize,\n ' / ',\n totalSize\n ),\n React.createElement(\n 'div',\n { className: 'mx_UploadBar_uploadFilename' },\n uploadText\n )\n );\n }\n});\n//# sourceMappingURL=UploadBar.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _SettingsStore = require('../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SessionStore = require('../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nvar _Analytics = require('../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _AccessibleButton = require('../views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../languageHandler');\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _FormattingUtils = require('../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ReactDOM = require('react-dom');\n\nvar sdk = require('../../index');\nvar MatrixClientPeg = require(\"../../MatrixClientPeg\");\nvar PlatformPeg = require(\"../../PlatformPeg\");\nvar Modal = require('../../Modal');\nvar dis = require(\"../../dispatcher\");\n\nvar packageJson = require('../../../package.json');\nvar UserSettingsStore = require('../../UserSettingsStore');\nvar CallMediaHandler = require('../../CallMediaHandler');\nvar Email = require('../../email');\nvar AddThreepid = require('../../AddThreepid');\nvar SdkConfig = require('../../SdkConfig');\n\n\n// if this looks like a release, use the 'version' from package.json; else use\n// the git sha. Prepend version with v, to look like riot-web version\nvar REACT_SDK_VERSION = 'dist' in packageJson ? packageJson.version : packageJson.gitHead || '<local>';\n\n// Simple method to help prettify GH Release Tags and Commit Hashes.\nvar semVerRegex = /^v?(\\d+\\.\\d+\\.\\d+(?:-rc.+)?)(?:-(?:\\d+-g)?([0-9a-fA-F]+))?(?:-dirty)?$/i;\nvar gHVersionLabel = function gHVersionLabel(repo) {\n var token = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var match = token.match(semVerRegex);\n var url = void 0;\n if (match && match[1]) {\n // basic semVer string possibly with commit hash\n url = match.length > 1 && match[2] ? 'https://github.com/' + repo + '/commit/' + match[2] : 'https://github.com/' + repo + '/releases/tag/v' + match[1];\n } else {\n url = 'https://github.com/' + repo + '/commit/' + token.split('-')[0];\n }\n return React.createElement(\n 'a',\n { target: '_blank', rel: 'noopener', href: url },\n token\n );\n};\n\n// Enumerate some simple 'flip a bit' UI settings (if any). The strings provided here\n// must be settings defined in SettingsStore.\nvar SIMPLE_SETTINGS = [{ id: \"urlPreviewsEnabled\" }, { id: \"autoplayGifsAndVideos\" }, { id: \"alwaysShowEncryptionIcons\" }, { id: \"hideReadReceipts\" }, { id: \"dontSendTypingNotifications\" }, { id: \"alwaysShowTimestamps\" }, { id: \"showTwelveHourTimestamps\" }, { id: \"hideJoinLeaves\" }, { id: \"hideAvatarChanges\" }, { id: \"hideDisplaynameChanges\" }, { id: \"useCompactLayout\" }, { id: \"hideRedactions\" }, { id: \"enableSyntaxHighlightLanguageDetection\" }, { id: \"MessageComposerInput.autoReplaceEmoji\" }, { id: \"MessageComposerInput.dontSuggestEmoji\" }, { id: \"Pill.shouldHidePillAvatar\" }, { id: \"TextualBody.disableBigEmoji\" }, { id: \"VideoView.flipVideoHorizontally\" }, { id: \"TagPanel.disableTagPanel\" }, { id: \"enableWidgetScreenshots\" }, { id: \"RoomSubList.showEmpty\" }];\n\n// These settings must be defined in SettingsStore\nvar ANALYTICS_SETTINGS = [{\n id: 'analyticsOptIn',\n fn: function fn(checked) {\n checked ? _Analytics2.default.enable() : _Analytics2.default.disable();\n }\n}];\n\n// These settings must be defined in SettingsStore\nvar WEBRTC_SETTINGS = [{\n id: 'webRtcForceTURN',\n fn: function fn(val) {\n MatrixClientPeg.get().setForceTURN(val);\n }\n}];\n\n// These settings must be defined in SettingsStore\nvar CRYPTO_SETTINGS = [{\n id: 'blacklistUnverifiedDevices',\n fn: function fn(checked) {\n MatrixClientPeg.get().setGlobalBlacklistUnverifiedDevices(checked);\n }\n}];\n\n// Enumerate the available themes, with a nice human text label.\n// 'label' is how we describe it in the UI.\n// 'value' is the value for the theme setting\n//\n// XXX: Ideally we would have a theme manifest or something and they'd be nicely\n// packaged up in a single directory, and/or located at the application layer.\n// But for now for expedience we just hardcode them here.\nvar THEMES = [{ label: (0, _languageHandler._td)('Light theme'), value: 'light' }, { label: (0, _languageHandler._td)('Dark theme'), value: 'dark' }, { label: (0, _languageHandler._td)('Status.im theme'), value: 'status' }];\n\nvar IgnoredUser = React.createClass({\n displayName: 'IgnoredUser',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n onUnignored: _propTypes2.default.func.isRequired\n },\n\n _onUnignoreClick: function _onUnignoreClick() {\n var _this = this;\n\n var ignoredUsers = MatrixClientPeg.get().getIgnoredUsers();\n var index = ignoredUsers.indexOf(this.props.userId);\n if (index !== -1) {\n ignoredUsers.splice(index, 1);\n MatrixClientPeg.get().setIgnoredUsers(ignoredUsers).then(function () {\n return _this.props.onUnignored(_this.props.userId);\n });\n } else this.props.onUnignored(this.props.userId);\n },\n\n render: function render() {\n return React.createElement(\n 'li',\n null,\n React.createElement(\n _AccessibleButton2.default,\n { onClick: this._onUnignoreClick, className: 'mx_textButton' },\n (0, _languageHandler._t)(\"Unignore\")\n ),\n this.props.userId\n );\n }\n});\n\nmodule.exports = React.createClass({\n displayName: 'UserSettings',\n\n propTypes: {\n onClose: _propTypes2.default.func,\n // The brand string given when creating email pushers\n brand: _propTypes2.default.string,\n\n // The base URL to use in the referral link. Defaults to window.location.origin.\n referralBaseUrl: _propTypes2.default.string,\n\n // Team token for the referral link. If falsy, the referral section will\n // not appear\n teamToken: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onClose: function onClose() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: null,\n threepids: [],\n phase: \"UserSettings.LOADING\", // LOADING, DISPLAY\n email_add_pending: false,\n vectorVersion: undefined,\n rejectingInvites: false,\n mediaDevices: null,\n ignoredUsers: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n this._unmounted = false;\n this._addThreepid = null;\n\n if (PlatformPeg.get()) {\n _bluebird2.default.resolve().then(function () {\n return PlatformPeg.get().getAppVersion();\n }).done(function (appVersion) {\n if (_this2._unmounted) return;\n _this2.setState({\n vectorVersion: appVersion\n });\n }, function (e) {\n console.log(\"Failed to fetch app version\", e);\n });\n }\n\n this._refreshMediaDevices();\n this._refreshIgnoredUsers();\n\n // Bulk rejecting invites:\n // /sync won't have had time to return when UserSettings re-renders from state changes, so getRooms()\n // will still return rooms with invites. To get around this, add a listener for\n // membership updates and kick the UI.\n MatrixClientPeg.get().on(\"RoomMember.membership\", this._onInviteStateChange);\n\n dis.dispatch({\n action: 'panel_disable',\n sideDisabled: true,\n middleDisabled: true\n });\n this._refreshFromServer();\n\n if (PlatformPeg.get().isElectron()) {\n var _require = require('electron'),\n ipcRenderer = _require.ipcRenderer;\n\n ipcRenderer.on('settings', this._electronSettings);\n ipcRenderer.send('settings_get');\n }\n\n this.setState({\n language: languageHandler.getCurrentLanguage()\n });\n\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n this._setStateFromSessionStore();\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n this._me = MatrixClientPeg.get().credentials.userId;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n dis.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n dis.unregister(this.dispatcherRef);\n var cli = MatrixClientPeg.get();\n if (cli) {\n cli.removeListener(\"RoomMember.membership\", this._onInviteStateChange);\n }\n\n if (PlatformPeg.get().isElectron()) {\n var _require2 = require('electron'),\n ipcRenderer = _require2.ipcRenderer;\n\n ipcRenderer.removeListener('settings', this._electronSettings);\n }\n },\n\n // `UserSettings` assumes that the client peg will not be null, so give it some\n // sort of assurance here by only allowing a re-render if the client is truthy.\n //\n // This is required because `UserSettings` maintains its own state and if this state\n // updates (e.g. during _setStateFromSessionStore) after the client peg has been made\n // null (during logout), then it will attempt to re-render and throw errors.\n shouldComponentUpdate: function shouldComponentUpdate() {\n return Boolean(MatrixClientPeg.get());\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n userHasGeneratedPassword: Boolean(this._sessionStore.getCachedPassword())\n });\n },\n\n _electronSettings: function _electronSettings(ev, settings) {\n this.setState({ electron_settings: settings });\n },\n\n _refreshMediaDevices: function _refreshMediaDevices(stream) {\n var _this3 = this;\n\n if (stream) {\n // kill stream so that we don't leave it lingering around with webcam enabled etc\n // as here we called gUM to ask user for permission to their device names only\n stream.getTracks().forEach(function (track) {\n return track.stop();\n });\n }\n\n _bluebird2.default.resolve().then(function () {\n return CallMediaHandler.getDevices();\n }).then(function (mediaDevices) {\n // console.log(\"got mediaDevices\", mediaDevices, this._unmounted);\n if (_this3._unmounted) return;\n _this3.setState({\n mediaDevices: mediaDevices,\n activeAudioOutput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_audiooutput'),\n activeAudioInput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_audioinput'),\n activeVideoInput: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, 'webrtc_videoinput')\n });\n });\n },\n\n _refreshFromServer: function _refreshFromServer() {\n var self = this;\n _bluebird2.default.all([UserSettingsStore.loadProfileInfo(), UserSettingsStore.loadThreePids()]).done(function (resps) {\n self.setState({\n avatarUrl: resps[0].avatar_url,\n threepids: resps[1].threepids,\n phase: \"UserSettings.DISPLAY\"\n });\n }, function (error) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to load user settings: \" + error);\n Modal.createTrackedDialog('Can\\'t load user settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Can't load user settings\"),\n description: error && error.message ? error.message : (0, _languageHandler._t)(\"Server may be unavailable or overloaded\")\n });\n });\n },\n\n _refreshIgnoredUsers: function _refreshIgnoredUsers() {\n var userIdUnignored = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\n var users = MatrixClientPeg.get().getIgnoredUsers();\n if (userIdUnignored) {\n var index = users.indexOf(userIdUnignored);\n if (index !== -1) users.splice(index, 1);\n }\n this.setState({\n ignoredUsers: users\n });\n },\n\n onAction: function onAction(payload) {\n if (payload.action === \"notifier_enabled\") {\n this.forceUpdate();\n } else if (payload.action === \"ignore_state_changed\") {\n this._refreshIgnoredUsers();\n }\n },\n\n onAvatarPickerClick: function onAvatarPickerClick(ev) {\n if (this.refs.file_label) {\n this.refs.file_label.click();\n }\n },\n\n onAvatarSelected: function onAvatarSelected(ev) {\n var self = this;\n var changeAvatar = this.refs.changeAvatar;\n if (!changeAvatar) {\n console.error(\"No ChangeAvatar found to upload image to!\");\n return;\n }\n changeAvatar.onFileSelected(ev).done(function () {\n // dunno if the avatar changed, re-check it.\n self._refreshFromServer();\n }, function (err) {\n // const errMsg = (typeof err === \"string\") ? err : (err.error || \"\");\n console.error(\"Failed to set avatar: \" + err);\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Failed to set avatar', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to set avatar.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n },\n\n onAvatarRemoveClick: function onAvatarRemoveClick() {\n MatrixClientPeg.get().setAvatarUrl(null);\n this.setState({ avatarUrl: null }); // the avatar update will complete async for us\n },\n\n onLogoutClicked: function onLogoutClicked(ev) {\n var _this4 = this;\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Logout E2E Export', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"For security, logging out will delete any end-to-end \" + \"encryption keys from this browser. If you want to be able \" + \"to decrypt your conversation history from future Riot sessions, \" + \"please export your room keys for safe-keeping.\")\n ),\n button: (0, _languageHandler._t)(\"Sign out\"),\n extraButtons: [React.createElement(\n 'button',\n { key: 'export', className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Export E2E room keys\")\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n dis.dispatch({ action: 'logout' });\n if (_this4.props.onFinished) {\n _this4.props.onFinished();\n }\n }\n }\n });\n },\n\n onPasswordChangeError: function onPasswordChangeError(err) {\n var errMsg = err.error || \"\";\n if (err.httpStatus === 403) {\n errMsg = (0, _languageHandler._t)(\"Failed to change password. Is your password correct?\");\n } else if (err.httpStatus) {\n errMsg += ' (HTTP status ' + err.httpStatus + ')';\n }\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change password: \" + errMsg);\n Modal.createTrackedDialog('Failed to change password', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: errMsg\n });\n },\n\n onPasswordChanged: function onPasswordChanged() {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Password changed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Success\"),\n description: (0, _languageHandler._t)(\"Your password was successfully changed. You will not receive \" + \"push notifications on other devices until you log back in to them\") + \".\"\n });\n },\n\n _onAddEmailEditFinished: function _onAddEmailEditFinished(value, shouldSubmit) {\n if (!shouldSubmit) return;\n this._addEmail();\n },\n\n _addEmail: function _addEmail() {\n var _this5 = this;\n\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n\n var emailAddress = this.refs.add_email_input.value;\n if (!Email.looksValid(emailAddress)) {\n Modal.createTrackedDialog('Invalid email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Invalid Email Address\"),\n description: (0, _languageHandler._t)(\"This doesn't appear to be a valid email address\")\n });\n return;\n }\n this._addThreepid = new AddThreepid();\n // we always bind emails when registering, so let's do the\n // same here.\n this._addThreepid.addEmailAddress(emailAddress, true).done(function () {\n Modal.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this \" + \"is done, click continue.\"),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this5.onEmailDialogFinished\n });\n }, function (err) {\n _this5.setState({ email_add_pending: false });\n console.error(\"Unable to add email address \" + emailAddress + \" \" + err);\n Modal.createTrackedDialog('Unable to add email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to add email address\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n ReactDOM.findDOMNode(this.refs.add_email_input).blur();\n this.setState({ email_add_pending: true });\n },\n\n onRemoveThreepidClicked: function onRemoveThreepidClicked(threepid) {\n var _this6 = this;\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Remove 3pid', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Remove Contact Information?\"),\n description: (0, _languageHandler._t)(\"Remove %(threePid)s?\", { threePid: threepid.address }),\n button: (0, _languageHandler._t)('Remove'),\n onFinished: function onFinished(submit) {\n if (submit) {\n _this6.setState({\n phase: \"UserSettings.LOADING\"\n });\n MatrixClientPeg.get().deleteThreePid(threepid.medium, threepid.address).then(function () {\n return _this6._refreshFromServer();\n }).catch(function (err) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to remove contact information: \" + err);\n Modal.createTrackedDialog('Remove 3pid failed', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to remove contact information\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }).done();\n }\n }\n });\n },\n\n onEmailDialogFinished: function onEmailDialogFinished(ok) {\n if (ok) {\n this.verifyEmailAddress();\n } else {\n this.setState({ email_add_pending: false });\n }\n },\n\n verifyEmailAddress: function verifyEmailAddress() {\n var _this7 = this;\n\n this._addThreepid.checkEmailLinkClicked().done(function () {\n _this7._addThreepid = null;\n _this7.setState({\n phase: \"UserSettings.LOADING\"\n });\n _this7._refreshFromServer();\n _this7.setState({ email_add_pending: false });\n }, function (err) {\n _this7.setState({ email_add_pending: false });\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n var message = (0, _languageHandler._t)(\"Unable to verify email address.\") + \" \" + (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this is done, click continue.\");\n Modal.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: message,\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this7.onEmailDialogFinished\n });\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to verify email address: \" + err);\n Modal.createTrackedDialog('Unable to verify email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to verify email address.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }\n });\n },\n\n _onDeactivateAccountClicked: function _onDeactivateAccountClicked() {\n var DeactivateAccountDialog = sdk.getComponent(\"dialogs.DeactivateAccountDialog\");\n Modal.createTrackedDialog('Deactivate Account', '', DeactivateAccountDialog, {});\n },\n\n _onBugReportClicked: function _onBugReportClicked() {\n var BugReportDialog = sdk.getComponent(\"dialogs.BugReportDialog\");\n if (!BugReportDialog) {\n return;\n }\n Modal.createTrackedDialog('Bug Report Dialog', '', BugReportDialog, {});\n },\n\n _onClearCacheClicked: function _onClearCacheClicked() {\n if (!PlatformPeg.get()) return;\n\n MatrixClientPeg.get().stopClient();\n MatrixClientPeg.get().store.deleteAllData().done(function () {\n PlatformPeg.get().reload();\n });\n },\n\n _onInviteStateChange: function _onInviteStateChange(event, member, oldMembership) {\n if (member.userId === this._me && oldMembership === \"invite\") {\n this.forceUpdate();\n }\n },\n\n _onRejectAllInvitesClicked: function _onRejectAllInvitesClicked(rooms, ev) {\n var _this8 = this;\n\n this.setState({\n rejectingInvites: true\n });\n // reject the invites\n var promises = rooms.map(function (room) {\n return MatrixClientPeg.get().leave(room.roomId).catch(function (e) {\n // purposefully drop errors to the floor: we'll just have a non-zero number on the UI\n // after trying to reject all the invites.\n });\n });\n _bluebird2.default.all(promises).then(function () {\n _this8.setState({\n rejectingInvites: false\n });\n });\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Export E2E Keys', '', function (cb) {\n require.ensure(['../../async-components/views/dialogs/ExportE2eKeysDialog'], function () {\n cb(require('../../async-components/views/dialogs/ExportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n _onImportE2eKeysClicked: function _onImportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Import E2E Keys', '', function (cb) {\n require.ensure(['../../async-components/views/dialogs/ImportE2eKeysDialog'], function () {\n cb(require('../../async-components/views/dialogs/ImportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n _renderGroupSettings: function _renderGroupSettings() {\n var GroupUserSettings = sdk.getComponent('groups.GroupUserSettings');\n return React.createElement(GroupUserSettings, null);\n },\n\n _renderReferral: function _renderReferral() {\n var teamToken = this.props.teamToken;\n if (!teamToken) {\n return null;\n }\n if (typeof teamToken !== 'string') {\n console.warn('Team token not a string');\n return null;\n }\n var href = (this.props.referralBaseUrl || window.location.origin) + ('/#/register?referrer=' + this._me + '&team_token=' + teamToken);\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n 'Referral'\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n (0, _languageHandler._t)(\"Refer a friend to Riot:\"),\n ' ',\n React.createElement(\n 'a',\n { href: href },\n href\n )\n )\n );\n },\n\n onLanguageChange: function onLanguageChange(newLang) {\n if (this.state.language !== newLang) {\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, newLang);\n this.setState({\n language: newLang\n });\n PlatformPeg.get().reload();\n }\n },\n\n _renderLanguageSetting: function _renderLanguageSetting() {\n var LanguageDropdown = sdk.getComponent('views.elements.LanguageDropdown');\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'label',\n { htmlFor: 'languageSelector' },\n (0, _languageHandler._t)('Interface Language')\n ),\n React.createElement(LanguageDropdown, { ref: 'language', onOptionChange: this.onLanguageChange,\n className: 'mx_UserSettings_language',\n value: this.state.language\n })\n );\n },\n\n _renderUserInterfaceSettings: function _renderUserInterfaceSettings() {\n // TODO: this ought to be a separate component so that we don't need\n // to rebind the onChange each time we render\n var onChange = function onChange(e) {\n return _SettingsStore2.default.setValue(\"autocompleteDelay\", null, _SettingsStore.SettingLevel.DEVICE, e.target.value);\n };\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"User Interface\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n SIMPLE_SETTINGS.map(this._renderAccountSetting),\n THEMES.map(this._renderThemeOption),\n React.createElement(\n 'table',\n null,\n React.createElement(\n 'tbody',\n null,\n React.createElement(\n 'tr',\n null,\n React.createElement(\n 'td',\n null,\n React.createElement(\n 'strong',\n null,\n (0, _languageHandler._t)('Autocomplete Delay (ms):')\n )\n ),\n React.createElement(\n 'td',\n null,\n React.createElement('input', {\n type: 'number',\n defaultValue: _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.DEVICE, \"autocompleteDelay\"),\n onChange: onChange\n })\n )\n )\n )\n ),\n this._renderLanguageSetting()\n )\n );\n },\n\n _renderAccountSetting: function _renderAccountSetting(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id },\n React.createElement(SettingsFlag, { name: setting.id,\n label: setting.label,\n level: _SettingsStore.SettingLevel.ACCOUNT,\n onChange: setting.fn })\n );\n },\n\n _renderThemeOption: function _renderThemeOption(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n var onChange = function onChange(v) {\n return dis.dispatch({ action: 'set_theme', value: setting.value });\n };\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id + '_' + setting.value },\n React.createElement(SettingsFlag, { name: 'theme',\n label: setting.label,\n level: _SettingsStore.SettingLevel.ACCOUNT,\n onChange: onChange,\n group: 'theme',\n value: setting.value })\n );\n },\n\n _renderCryptoInfo: function _renderCryptoInfo() {\n var client = MatrixClientPeg.get();\n var deviceId = client.deviceId;\n var identityKey = client.getDeviceEd25519Key();\n if (!identityKey) {\n identityKey = (0, _languageHandler._t)(\"<not supported>\");\n } else {\n identityKey = FormattingUtils.formatCryptoKey(identityKey);\n }\n\n var importExportButtons = null;\n\n if (client.isCryptoEnabled) {\n importExportButtons = React.createElement(\n 'div',\n { className: 'mx_UserSettings_importExportButtons' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)(\"Export E2E room keys\")\n ),\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button',\n onClick: this._onImportE2eKeysClicked },\n (0, _languageHandler._t)(\"Import E2E room keys\")\n )\n );\n }\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Cryptography\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section mx_UserSettings_cryptoSection' },\n React.createElement(\n 'ul',\n null,\n React.createElement(\n 'li',\n null,\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device ID:\")\n ),\n React.createElement(\n 'span',\n null,\n React.createElement(\n 'code',\n null,\n deviceId\n )\n )\n ),\n React.createElement(\n 'li',\n null,\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device key:\")\n ),\n React.createElement(\n 'span',\n null,\n React.createElement(\n 'code',\n null,\n React.createElement(\n 'b',\n null,\n identityKey\n )\n )\n )\n )\n ),\n importExportButtons\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n CRYPTO_SETTINGS.map(this._renderDeviceSetting)\n )\n );\n },\n\n _renderIgnoredUsers: function _renderIgnoredUsers() {\n if (this.state.ignoredUsers.length > 0) {\n var updateHandler = this._refreshIgnoredUsers;\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Ignored Users\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section mx_UserSettings_ignoredUsersSection' },\n React.createElement(\n 'ul',\n null,\n this.state.ignoredUsers.map(function (userId) {\n return React.createElement(IgnoredUser, { key: userId,\n userId: userId,\n onUnignored: updateHandler });\n })\n )\n )\n );\n } else return React.createElement('div', null);\n },\n\n _renderDeviceSetting: function _renderDeviceSetting(setting) {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle', key: setting.id },\n React.createElement(SettingsFlag, { name: setting.id,\n label: setting.label,\n level: _SettingsStore.SettingLevel.DEVICE,\n onChange: setting.fn })\n );\n },\n\n _renderDevicesPanel: function _renderDevicesPanel() {\n var DevicesPanel = sdk.getComponent('settings.DevicesPanel');\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Devices\")\n ),\n React.createElement(DevicesPanel, { className: 'mx_UserSettings_section' })\n );\n },\n\n _renderBugReport: function _renderBugReport() {\n if (!SdkConfig.get().bug_report_endpoint_url) {\n return React.createElement('div', null);\n }\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Submit Debug Logs\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If you've submitted a bug via GitHub, debug logs can help \" + \"us track down the problem. Debug logs contain application \" + \"usage data including your username, the IDs or aliases of \" + \"the rooms or groups you have visited and the usernames of \" + \"other users. They do not contain messages.\")\n ),\n React.createElement(\n 'button',\n { className: 'mx_UserSettings_button',\n onClick: this._onBugReportClicked },\n (0, _languageHandler._t)('Submit debug logs')\n )\n )\n );\n },\n\n _renderAnalyticsControl: function _renderAnalyticsControl() {\n if (!SdkConfig.get().piwik) return React.createElement('div', null);\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Analytics')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n (0, _languageHandler._t)('Riot collects anonymous analytics to allow us to improve the application.'),\n React.createElement('br', null),\n (0, _languageHandler._t)('Privacy is important to us, so we don\\'t collect any personal' + ' or identifiable data for our analytics.'),\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_advanced_spoiler', onClick: _Analytics2.default.showDetailsModal },\n (0, _languageHandler._t)('Learn more about how we use analytics.')\n ),\n ANALYTICS_SETTINGS.map(this._renderDeviceSetting)\n )\n );\n },\n\n _renderLabs: function _renderLabs() {\n var _this9 = this;\n\n var features = [];\n _SettingsStore2.default.getLabsFeatures().forEach(function (featureId) {\n // TODO: this ought to be a separate component so that we don't need\n // to rebind the onChange each time we render\n var onChange = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var checked, confirmed;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n checked = e.target.checked;\n\n if (!(featureId === \"feature_lazyloading\")) {\n _context.next = 8;\n break;\n }\n\n _context.next = 4;\n return (0, _bluebird.resolve)(_this9._onLazyLoadChanging(checked));\n\n case 4:\n confirmed = _context.sent;\n\n if (confirmed) {\n _context.next = 8;\n break;\n }\n\n e.preventDefault();\n return _context.abrupt('return');\n\n case 8:\n _context.next = 10;\n return (0, _bluebird.resolve)(_SettingsStore2.default.setFeatureEnabled(featureId, checked));\n\n case 10:\n _this9.forceUpdate();\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this9);\n }));\n\n return function onChange(_x3) {\n return _ref.apply(this, arguments);\n };\n }();\n\n features.push(React.createElement(\n 'div',\n { key: featureId, className: 'mx_UserSettings_toggle' },\n React.createElement('input', {\n type: 'checkbox',\n id: featureId,\n name: featureId,\n checked: _SettingsStore2.default.isFeatureEnabled(featureId),\n onChange: onChange\n }),\n React.createElement(\n 'label',\n { htmlFor: featureId },\n _SettingsStore2.default.getDisplayName(featureId)\n )\n ));\n });\n\n // No labs section when there are no features in labs\n if (features.length === 0) {\n return null;\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Labs\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"These are experimental features that may break in unexpected ways\"),\n '. ',\n (0, _languageHandler._t)(\"Use with caution\"),\n '.'\n ),\n features\n )\n );\n },\n\n _onLazyLoadChanging: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(enabling) {\n var supported;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!enabling) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 3;\n return (0, _bluebird.resolve)(MatrixClientPeg.get().doesServerSupportLazyLoading());\n\n case 3:\n supported = _context2.sent;\n\n if (supported) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 7;\n return (0, _bluebird.resolve)(new _bluebird2.default(function (resolve) {\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createDialog(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Lazy loading members not supported\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Lazy loading is not supported by your \" + \"current homeserver.\")\n ),\n button: (0, _languageHandler._t)(\"OK\"),\n onFinished: resolve\n });\n }));\n\n case 7:\n return _context2.abrupt('return', false);\n\n case 8:\n return _context2.abrupt('return', true);\n\n case 9:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function _onLazyLoadChanging(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return _onLazyLoadChanging;\n }(),\n\n _renderDeactivateAccount: function _renderDeactivateAccount() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Deactivate Account\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: this._onDeactivateAccountClicked },\n ' ',\n (0, _languageHandler._t)(\"Deactivate my account\")\n )\n )\n );\n },\n\n _renderTermsAndConditionsLinks: function _renderTermsAndConditionsLinks() {\n if (SdkConfig.get().terms_and_conditions_links) {\n var tncLinks = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(SdkConfig.get().terms_and_conditions_links), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tncEntry = _step.value;\n\n tncLinks.push(React.createElement(\n 'div',\n { key: tncEntry.url },\n React.createElement(\n 'a',\n { href: tncEntry.url, rel: 'noopener', target: '_blank' },\n tncEntry.text\n )\n ));\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Legal\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n tncLinks\n )\n );\n } else {\n return null;\n }\n },\n\n _renderClearCache: function _renderClearCache() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Clear Cache\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: this._onClearCacheClicked },\n (0, _languageHandler._t)(\"Clear Cache and Reload\")\n )\n )\n );\n },\n\n _renderCheckUpdate: function _renderCheckUpdate() {\n var platform = PlatformPeg.get();\n if ('canSelfUpdate' in platform && platform.canSelfUpdate() && 'startUpdateCheck' in platform) {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Updates')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button', onClick: platform.startUpdateCheck },\n (0, _languageHandler._t)('Check for update')\n )\n )\n );\n }\n return React.createElement('div', null);\n },\n\n _renderBulkOptions: function _renderBulkOptions() {\n var _this10 = this;\n\n var invitedRooms = MatrixClientPeg.get().getRooms().filter(function (r) {\n return r.hasMembershipState(_this10._me, \"invite\");\n });\n if (invitedRooms.length === 0) {\n return null;\n }\n\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n\n var reject = React.createElement(Spinner, null);\n if (!this.state.rejectingInvites) {\n // bind() the invited rooms so any new invites that may come in as this button is clicked\n // don't inadvertently get rejected as well.\n var onClick = this._onRejectAllInvitesClicked.bind(this, invitedRooms);\n reject = React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_button danger',\n onClick: onClick },\n (0, _languageHandler._t)(\"Reject all %(invitedRooms)s invites\", { invitedRooms: invitedRooms.length })\n );\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Bulk Options\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n reject\n )\n );\n },\n\n _renderElectronSettings: function _renderElectronSettings() {\n var settings = this.state.electron_settings;\n if (!settings) return;\n\n // TODO: This should probably be a granular setting, but it only applies to electron\n // and ends up being get/set outside of matrix anyways (local system setting).\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Desktop specific')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_toggle' },\n React.createElement('input', { type: 'checkbox',\n name: 'auto-launch',\n defaultChecked: settings['auto-launch'],\n onChange: this._onAutoLaunchChanged\n }),\n React.createElement(\n 'label',\n { htmlFor: 'auto-launch' },\n (0, _languageHandler._t)('Start automatically after system login')\n )\n )\n )\n );\n },\n\n _onAutoLaunchChanged: function _onAutoLaunchChanged(e) {\n var _require3 = require('electron'),\n ipcRenderer = _require3.ipcRenderer;\n\n ipcRenderer.send('settings_set', 'auto-launch', e.target.checked);\n },\n\n _mapWebRtcDevicesToSpans: function _mapWebRtcDevicesToSpans(devices) {\n return devices.map(function (device) {\n return React.createElement(\n 'span',\n { key: device.deviceId },\n device.label\n );\n });\n },\n\n _setAudioOutput: function _setAudioOutput(deviceId) {\n this.setState({ activeAudioOutput: deviceId });\n CallMediaHandler.setAudioOutput(deviceId);\n },\n\n _setAudioInput: function _setAudioInput(deviceId) {\n this.setState({ activeAudioInput: deviceId });\n CallMediaHandler.setAudioInput(deviceId);\n },\n\n _setVideoInput: function _setVideoInput(deviceId) {\n this.setState({ activeVideoInput: deviceId });\n CallMediaHandler.setVideoInput(deviceId);\n },\n\n _requestMediaPermissions: function _requestMediaPermissions(event) {\n var getUserMedia = window.navigator.getUserMedia || window.navigator.webkitGetUserMedia || window.navigator.mozGetUserMedia;\n if (getUserMedia) {\n return getUserMedia.apply(window.navigator, [{ video: true, audio: true }, this._refreshMediaDevices, function () {\n var ErrorDialog = sdk.getComponent('dialogs.ErrorDialog');\n Modal.createTrackedDialog('No media permissions', '', ErrorDialog, {\n title: (0, _languageHandler._t)('No media permissions'),\n description: (0, _languageHandler._t)('You may need to manually permit Riot to access your microphone/webcam')\n });\n }]);\n }\n },\n\n _renderWebRtcDeviceSettings: function _renderWebRtcDeviceSettings() {\n if (this.state.mediaDevices === false) {\n return React.createElement(\n _AccessibleButton2.default,\n { element: 'p', className: 'mx_UserSettings_link', onClick: this._requestMediaPermissions },\n (0, _languageHandler._t)('Missing Media Permissions, click here to request.')\n );\n } else if (!this.state.mediaDevices) return;\n\n var Dropdown = sdk.getComponent('elements.Dropdown');\n\n var speakerDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Audio Outputs detected')\n );\n var microphoneDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Microphones detected')\n );\n var webcamDropdown = React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('No Webcams detected')\n );\n\n var defaultOption = {\n deviceId: '',\n label: (0, _languageHandler._t)('Default Device')\n };\n\n var audioOutputs = this.state.mediaDevices.audiooutput.slice(0);\n if (audioOutputs.length > 0) {\n var defaultOutput = '';\n if (!audioOutputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n audioOutputs.unshift(defaultOption);\n } else {\n defaultOutput = 'default';\n }\n\n speakerDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Audio Output')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeAudioOutput || defaultOutput,\n onOptionChange: this._setAudioOutput },\n this._mapWebRtcDevicesToSpans(audioOutputs)\n )\n );\n }\n\n var audioInputs = this.state.mediaDevices.audioinput.slice(0);\n if (audioInputs.length > 0) {\n var defaultInput = '';\n if (!audioInputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n audioInputs.unshift(defaultOption);\n } else {\n defaultInput = 'default';\n }\n\n microphoneDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Microphone')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeAudioInput || defaultInput,\n onOptionChange: this._setAudioInput },\n this._mapWebRtcDevicesToSpans(audioInputs)\n )\n );\n }\n\n var videoInputs = this.state.mediaDevices.videoinput.slice(0);\n if (videoInputs.length > 0) {\n var _defaultInput = '';\n if (!videoInputs.some(function (input) {\n return input.deviceId === 'default';\n })) {\n videoInputs.unshift(defaultOption);\n } else {\n _defaultInput = 'default';\n }\n\n webcamDropdown = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('Camera')\n ),\n React.createElement(\n Dropdown,\n {\n className: 'mx_UserSettings_webRtcDevices_dropdown',\n value: this.state.activeVideoInput || _defaultInput,\n onOptionChange: this._setVideoInput },\n this._mapWebRtcDevicesToSpans(videoInputs)\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n speakerDropdown,\n microphoneDropdown,\n webcamDropdown\n );\n },\n\n _renderWebRtcSettings: function _renderWebRtcSettings() {\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('VoIP')\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n WEBRTC_SETTINGS.map(this._renderDeviceSetting),\n this._renderWebRtcDeviceSettings()\n )\n );\n },\n\n onSelfShareClick: function onSelfShareClick() {\n var cli = MatrixClientPeg.get();\n var ShareDialog = sdk.getComponent(\"dialogs.ShareDialog\");\n Modal.createTrackedDialog('share self dialog', '', ShareDialog, {\n target: cli.getUser(this._me)\n });\n },\n\n _showSpoiler: function _showSpoiler(event) {\n var target = event.target;\n target.innerHTML = target.getAttribute('data-spoiler');\n\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n\n nameForMedium: function nameForMedium(medium) {\n if (medium === 'msisdn') return (0, _languageHandler._t)('Phone');\n if (medium === 'email') return (0, _languageHandler._t)('Email');\n return medium[0].toUpperCase() + medium.slice(1);\n },\n\n presentableTextForThreepid: function presentableTextForThreepid(threepid) {\n if (threepid.medium === 'msisdn') {\n return '+' + threepid.address;\n } else {\n return threepid.address;\n }\n },\n\n render: function render() {\n var _this11 = this;\n\n var Loader = sdk.getComponent(\"elements.Spinner\");\n switch (this.state.phase) {\n case \"UserSettings.LOADING\":\n return React.createElement(Loader, null);\n case \"UserSettings.DISPLAY\":\n break; // quit the switch to return the common state\n default:\n throw new Error(\"Unknown state.phase => \" + this.state.phase);\n }\n // can only get here if phase is UserSettings.DISPLAY\n var SimpleRoomHeader = sdk.getComponent('rooms.SimpleRoomHeader');\n var ChangeDisplayName = sdk.getComponent(\"views.settings.ChangeDisplayName\");\n var ChangePassword = sdk.getComponent(\"views.settings.ChangePassword\");\n var ChangeAvatar = sdk.getComponent('settings.ChangeAvatar');\n var Notifications = sdk.getComponent(\"settings.Notifications\");\n var EditableText = sdk.getComponent('elements.EditableText');\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var avatarUrl = this.state.avatarUrl ? MatrixClientPeg.get().mxcUrlToHttp(this.state.avatarUrl) : null;\n\n var threepidsSection = this.state.threepids.map(function (val, pidIndex) {\n var id = \"3pid-\" + val.address;\n // TODO: make a separate component to avoid having to rebind onClick\n // each time we render\n var onRemoveClick = function onRemoveClick(e) {\n return _this11.onRemoveThreepidClicked(val);\n };\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow', key: pidIndex },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n { htmlFor: id },\n _this11.nameForMedium(val.medium)\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement('input', { type: 'text', key: val.address, id: id,\n value: _this11.presentableTextForThreepid(val), disabled: true\n })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n React.createElement(_AccessibleButton2.default, { element: 'img', src: 'img/cancel-small.svg', width: '14', height: '14', alt: (0, _languageHandler._t)(\"Remove\"),\n onClick: onRemoveClick })\n )\n );\n });\n var addEmailSection = void 0;\n if (this.state.email_add_pending) {\n addEmailSection = React.createElement(Loader, { key: '_email_add_spinner' });\n } else {\n addEmailSection = React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow', key: '_newEmail' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)('Email')\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement(EditableText, {\n ref: 'add_email_input',\n className: 'mx_UserSettings_editable',\n placeholderClassName: 'mx_UserSettings_threepidPlaceholder',\n placeholder: (0, _languageHandler._t)(\"Add email address\"),\n blurToCancel: false,\n onValueChanged: this._onAddEmailEditFinished })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n React.createElement(_AccessibleButton2.default, { element: 'img', src: 'img/plus.svg', width: '14', height: '14', alt: (0, _languageHandler._t)(\"Add\"), onClick: this._addEmail })\n )\n );\n }\n var AddPhoneNumber = sdk.getComponent('views.settings.AddPhoneNumber');\n var addMsisdnSection = React.createElement(AddPhoneNumber, { key: '_addMsisdn', onThreepidAdded: this._refreshFromServer });\n threepidsSection.push(addEmailSection);\n threepidsSection.push(addMsisdnSection);\n\n var accountJsx = React.createElement(ChangePassword, {\n className: 'mx_UserSettings_accountTable',\n rowClassName: 'mx_UserSettings_profileTableRow',\n rowLabelClassName: 'mx_UserSettings_profileLabelCell',\n rowInputClassName: 'mx_UserSettings_profileInputCell',\n buttonClassName: 'mx_UserSettings_button mx_UserSettings_changePasswordButton',\n onError: this.onPasswordChangeError,\n onFinished: this.onPasswordChanged });\n\n var notificationArea = void 0;\n if (this.state.threepids !== undefined) {\n notificationArea = React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Notifications\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(Notifications, { threepids: this.state.threepids, brand: this.props.brand })\n )\n );\n }\n\n var olmVersion = MatrixClientPeg.get().olmVersion;\n // If the olmVersion is not defined then either crypto is disabled, or\n // we are using a version old version of olm. We assume the former.\n var olmVersionString = \"<not-enabled>\";\n if (olmVersion !== undefined) {\n olmVersionString = olmVersion[0] + '.' + olmVersion[1] + '.' + olmVersion[2];\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_UserSettings' },\n React.createElement(SimpleRoomHeader, {\n title: (0, _languageHandler._t)(\"Settings\"),\n onCancelClick: this.props.onClose\n }),\n React.createElement(\n GeminiScrollbarWrapper,\n {\n className: 'mx_UserSettings_body',\n autoshow: true },\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Profile\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTable' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileTableRow' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n React.createElement(\n 'label',\n { htmlFor: 'displayName' },\n (0, _languageHandler._t)('Display name')\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n React.createElement(ChangeDisplayName, null)\n )\n ),\n threepidsSection\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_avatarPicker' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_avatarPicker_remove', onClick: this.onAvatarRemoveClick },\n React.createElement('img', { src: 'img/cancel.svg',\n width: '15', height: '15',\n className: 'mx_filterFlipColor',\n alt: (0, _languageHandler._t)(\"Remove avatar\"),\n title: (0, _languageHandler._t)(\"Remove avatar\") })\n ),\n React.createElement(\n 'div',\n { onClick: this.onAvatarPickerClick, className: 'mx_UserSettings_avatarPicker_imgContainer' },\n React.createElement(ChangeAvatar, { ref: 'changeAvatar', initialAvatarUrl: avatarUrl,\n showUploadSection: false, className: 'mx_UserSettings_avatarPicker_img' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_avatarPicker_edit' },\n React.createElement(\n 'label',\n { htmlFor: 'avatarInput', ref: 'file_label' },\n React.createElement('img', { src: 'img/camera.svg', className: 'mx_filterFlipColor',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n React.createElement('input', { id: 'avatarInput', type: 'file', onChange: this.onAvatarSelected })\n )\n )\n ),\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Account\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section cadcampoHide' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_UserSettings_logout mx_UserSettings_button', onClick: this.onLogoutClicked },\n (0, _languageHandler._t)(\"Sign out\")\n ),\n this.state.userHasGeneratedPassword ? React.createElement(\n 'div',\n { className: 'mx_UserSettings_passwordWarning' },\n (0, _languageHandler._t)(\"To return to your account in future you need to set a password\")\n ) : null,\n accountJsx\n ),\n this._renderGroupSettings(),\n this._renderReferral(),\n notificationArea,\n this._renderUserInterfaceSettings(),\n this._renderLabs(),\n this._renderWebRtcSettings(),\n this._renderDevicesPanel(),\n this._renderCryptoInfo(),\n this._renderIgnoredUsers(),\n this._renderBulkOptions(),\n this._renderBugReport(),\n PlatformPeg.get().isElectron() && this._renderElectronSettings(),\n this._renderAnalyticsControl(),\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Advanced\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Logged in as:\") + ' ',\n React.createElement(\n 'a',\n { onClick: this.onSelfShareClick, className: 'mx_UserSettings_link' },\n this._me\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)('Access Token:') + ' ',\n React.createElement(\n _AccessibleButton2.default,\n { element: 'span', className: 'mx_UserSettings_advanced_spoiler',\n onClick: this._showSpoiler,\n 'data-spoiler': MatrixClientPeg.get().getAccessToken() },\n '<',\n (0, _languageHandler._t)(\"click to reveal\"),\n '>'\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Homeserver is\"),\n ' ',\n MatrixClientPeg.get().getHomeserverUrl()\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)(\"Identity Server is\"),\n ' ',\n MatrixClientPeg.get().getIdentityServerUrl()\n ),\n React.createElement(\n 'div',\n { className: 'mx_UserSettings_advanced' },\n (0, _languageHandler._t)('matrix-react-sdk version:'),\n ' ',\n REACT_SDK_VERSION !== '<local>' ? gHVersionLabel('matrix-org/matrix-react-sdk', REACT_SDK_VERSION) : REACT_SDK_VERSION,\n React.createElement('br', null),\n (0, _languageHandler._t)('riot-web version:'),\n ' ',\n this.state.vectorVersion !== undefined ? gHVersionLabel('vector-im/riot-web', this.state.vectorVersion) : 'unknown',\n React.createElement('br', null),\n (0, _languageHandler._t)(\"olm version:\"),\n ' ',\n olmVersionString,\n React.createElement('br', null)\n )\n ),\n this._renderCheckUpdate(),\n this._renderClearCache(),\n this._renderDeactivateAccount(),\n this._renderTermsAndConditionsLinks()\n )\n );\n }\n});\n//# sourceMappingURL=UserSettings.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SyntaxHighlight = require('../views/elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ViewSource',\n\n propTypes: {\n content: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentDidMount: function componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.props.content, null, 2)\n )\n );\n }\n});\n//# sourceMappingURL=ViewSource.js.map","'use strict';\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _PasswordReset = require('../../../PasswordReset');\n\nvar _PasswordReset2 = _interopRequireDefault(_PasswordReset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ForgotPassword',\n\n propTypes: {\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n onLoginClick: _propTypes2.default.func,\n onRegisterClick: _propTypes2.default.func,\n onComplete: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n enteredHomeserverUrl: this.props.customHsUrl || this.props.defaultHsUrl,\n enteredIdentityServerUrl: this.props.customIsUrl || this.props.defaultIsUrl,\n progress: null,\n password: null,\n password2: null\n };\n },\n\n submitPasswordReset: function submitPasswordReset(hsUrl, identityUrl, email, password) {\n var _this = this;\n\n this.setState({\n progress: \"sending_email\"\n });\n this.reset = new _PasswordReset2.default(hsUrl, identityUrl);\n this.reset.resetPassword(email, password).done(function () {\n _this.setState({\n progress: \"sent_email\"\n });\n }, function (err) {\n _this.showErrorDialog((0, _languageHandler._t)('Failed to send email') + \": \" + err.message);\n _this.setState({\n progress: null\n });\n });\n },\n\n onVerify: function onVerify(ev) {\n var _this2 = this;\n\n ev.preventDefault();\n if (!this.reset) {\n console.error(\"onVerify called before submitPasswordReset!\");\n return;\n }\n this.reset.checkEmailLinkClicked().done(function (res) {\n _this2.setState({ progress: \"complete\" });\n }, function (err) {\n _this2.showErrorDialog(err.message);\n });\n },\n\n onSubmitForm: function onSubmitForm(ev) {\n var _this3 = this;\n\n ev.preventDefault();\n\n if (!this.state.email) {\n this.showErrorDialog((0, _languageHandler._t)('The email address linked to your account must be entered.'));\n } else if (!this.state.password || !this.state.password2) {\n this.showErrorDialog((0, _languageHandler._t)('A new password must be entered.'));\n } else if (this.state.password !== this.state.password2) {\n this.showErrorDialog((0, _languageHandler._t)('New passwords must match each other.'));\n } else {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Forgot Password Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Warning!'),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Resetting password will currently reset any ' + 'end-to-end encryption keys on all devices, ' + 'making encrypted chat history unreadable, ' + 'unless you first export your room keys and re-import ' + 'them afterwards. In future this will be improved.')\n ),\n button: (0, _languageHandler._t)('Continue'),\n extraButtons: [_react2.default.createElement(\n 'button',\n { key: 'export_keys', className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)('Export E2E room keys')\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this3.submitPasswordReset(_this3.state.enteredHomeserverUrl, _this3.state.enteredIdentityServerUrl, _this3.state.email, _this3.state.password);\n }\n }\n });\n }\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n _Modal2.default.createTrackedDialogAsync('Export E2E Keys', 'Forgot Password', function (cb) {\n require.ensure(['../../../async-components/views/dialogs/ExportE2eKeysDialog'], function () {\n cb(require('../../../async-components/views/dialogs/ExportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: _MatrixClientPeg2.default.get()\n });\n },\n\n onInputChanged: function onInputChanged(stateKey, ev) {\n this.setState((0, _defineProperty3.default)({}, stateKey, ev.target.value));\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var newState = {};\n if (config.hsUrl !== undefined) {\n newState.enteredHomeserverUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.enteredIdentityServerUrl = config.isUrl;\n }\n this.setState(newState);\n },\n\n showErrorDialog: function showErrorDialog(body, title) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Forgot Password Error', '', ErrorDialog, {\n title: title,\n description: body\n });\n },\n\n render: function render() {\n var LoginPage = _index2.default.getComponent(\"login.LoginPage\");\n var LoginHeader = _index2.default.getComponent(\"login.LoginHeader\");\n var LoginFooter = _index2.default.getComponent(\"login.LoginFooter\");\n var ServerConfig = _index2.default.getComponent(\"login.ServerConfig\");\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var resetPasswordJsx = void 0;\n\n if (this.state.progress === \"sending_email\") {\n resetPasswordJsx = _react2.default.createElement(Spinner, null);\n } else if (this.state.progress === \"sent_email\") {\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n (0, _languageHandler._t)(\"An email has been sent to %(emailAddress)s. Once you've followed the link it contains, \" + \"click below.\", { emailAddress: this.state.email }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'button', onClick: this.onVerify,\n value: (0, _languageHandler._t)('I have verified my email address') })\n );\n } else if (this.state.progress === \"complete\") {\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Your password has been reset'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You have been logged out of all devices and will no longer receive push notifications. ' + 'To re-enable notifications, sign in again on each device'),\n '.'\n ),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'button', onClick: this.props.onComplete,\n value: (0, _languageHandler._t)('Return to login screen') })\n );\n } else {\n var serverConfigSection = void 0;\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfigSection = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 0 });\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n resetPasswordJsx = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_prompt' },\n (0, _languageHandler._t)('To reset your password, enter the email address linked to your account'),\n ':'\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmitForm },\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'user', type: 'text',\n name: 'reset_email' // define a name so browser's password autofill gets less confused\n , value: this.state.email,\n onChange: this.onInputChanged.bind(this, \"email\"),\n placeholder: (0, _languageHandler._t)('Email address'), autoFocus: true }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'pass', type: 'password',\n name: 'reset_password',\n value: this.state.password,\n onChange: this.onInputChanged.bind(this, \"password\"),\n placeholder: (0, _languageHandler._t)('New password') }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_field', ref: 'pass', type: 'password',\n name: 'reset_password_confirm',\n value: this.state.password2,\n onChange: this.onInputChanged.bind(this, \"password2\"),\n placeholder: (0, _languageHandler._t)('Confirm your new password') }),\n _react2.default.createElement('br', null),\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)('Send Reset Email') })\n ),\n serverConfigSection,\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onLoginClick, href: '#' },\n (0, _languageHandler._t)('Return to login screen')\n ),\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onRegisterClick, href: '#' },\n (0, _languageHandler._t)('Create an account')\n ),\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n );\n }\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n resetPasswordJsx\n )\n );\n }\n});\n//# sourceMappingURL=ForgotPassword.js.map","'use strict';\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _languageHandler = require('./languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Allows a user to reset their password on a homeserver.\n *\n * This involves getting an email token from the identity server to \"prove\" that\n * the client owns the given email address, which is then passed to the password\n * API on the homeserver in question with the new password.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PasswordReset = function () {\n\n /**\n * Configure the endpoints for password resetting.\n * @param {string} homeserverUrl The URL to the HS which has the account to reset.\n * @param {string} identityUrl The URL to the IS which has linked the email -> mxid mapping.\n */\n function PasswordReset(homeserverUrl, identityUrl) {\n (0, _classCallCheck3.default)(this, PasswordReset);\n\n this.client = Matrix.createClient({\n baseUrl: homeserverUrl,\n idBaseUrl: identityUrl\n });\n this.clientSecret = this.client.generateClientSecret();\n this.identityServerDomain = identityUrl.split(\"://\")[1];\n }\n\n /**\n * Attempt to reset the user's password. This will trigger a side-effect of\n * sending an email to the provided email address.\n * @param {string} emailAddress The email address\n * @param {string} newPassword The new password for the account.\n * @return {Promise} Resolves when the email has been sent. Then call checkEmailLinkClicked().\n */\n\n\n (0, _createClass3.default)(PasswordReset, [{\n key: 'resetPassword',\n value: function resetPassword(emailAddress, newPassword) {\n var _this = this;\n\n this.password = newPassword;\n return this.client.requestPasswordEmailToken(emailAddress, this.clientSecret, 1).then(function (res) {\n _this.sessionId = res.sid;\n return res;\n }, function (err) {\n if (err.errcode === 'M_THREEPID_NOT_FOUND') {\n err.message = (0, _languageHandler._t)('This email address was not found');\n } else if (err.httpStatus) {\n err.message = err.message + (' (Status ' + err.httpStatus + ')');\n }\n throw err;\n });\n }\n\n /**\n * Checks if the email link has been clicked by attempting to change the password\n * for the mxid linked to the email.\n * @return {Promise} Resolves if the password was reset. Rejects with an object\n * with a \"message\" property which contains a human-readable message detailing why\n * the reset failed, e.g. \"There is no mapped matrix user ID for the given email address\".\n */\n\n }, {\n key: 'checkEmailLinkClicked',\n value: function checkEmailLinkClicked() {\n return this.client.setPassword({\n type: \"m.login.email.identity\",\n threepid_creds: {\n sid: this.sessionId,\n client_secret: this.clientSecret,\n id_server: this.identityServerDomain\n }\n }, this.password).catch(function (err) {\n if (err.httpStatus === 401) {\n err.message = (0, _languageHandler._t)('Failed to verify email address: make sure you clicked the link in the email');\n } else if (err.httpStatus === 404) {\n err.message = (0, _languageHandler._t)('Your email address does not appear to be associated with a Matrix ID on this Homeserver.');\n } else if (err.httpStatus) {\n err.message += ' (Status ' + err.httpStatus + ')';\n }\n throw err;\n });\n }\n }]);\n return PasswordReset;\n}();\n\nmodule.exports = PasswordReset;\n//# sourceMappingURL=PasswordReset.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = LanguageSelector;\n\nvar _SdkConfig = require(\"../../../SdkConfig\");\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _PlatformPeg = require(\"../../../PlatformPeg\");\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _index = require(\"../../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction onChange(newLang) {\n if ((0, _languageHandler.getCurrentLanguage)() !== newLang) {\n _SettingsStore2.default.setValue(\"language\", null, _SettingsStore.SettingLevel.DEVICE, newLang);\n _PlatformPeg2.default.get().reload();\n }\n}\n\nfunction LanguageSelector() {\n if (_SdkConfig2.default.get()['disable_login_language_selector']) return _react2.default.createElement(\"div\", null);\n\n var LanguageDropdown = _index2.default.getComponent('views.elements.LanguageDropdown');\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_Login_language_div\" },\n _react2.default.createElement(LanguageDropdown, { onOptionChange: onChange, className: \"mx_Login_language\", value: (0, _languageHandler.getCurrentLanguage)() })\n );\n}\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=LanguageSelector.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Login = require('../../../Login');\n\nvar _Login2 = _interopRequireDefault(_Login);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// For validating phone numbers without country codes\nvar PHONE_NUMBER_REGEX = /^[0-9()\\-\\s]*$/;\n\n/**\n * A wire component which glues together login UI components and Login logic\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'Login',\n\n propTypes: {\n onLoggedIn: _propTypes2.default.func.isRequired,\n\n enableGuest: _propTypes2.default.bool,\n\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n // Secondary HS which we try to log into if the user is using\n // the default HS but login fails. Useful for migrating to a\n // different home server without confusing users.\n fallbackHsUrl: _propTypes2.default.string,\n\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // login shouldn't know or care how registration is done.\n onRegisterClick: _propTypes2.default.func.isRequired,\n\n // login shouldn't care how password recovery is done.\n onForgotPasswordClick: _propTypes2.default.func,\n onCancelClick: _propTypes2.default.func,\n onServerConfigChange: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n errorText: null,\n loginIncorrect: false,\n enteredHomeserverUrl: this.props.customHsUrl || this.props.defaultHsUrl,\n enteredIdentityServerUrl: this.props.customIsUrl || this.props.defaultIsUrl,\n\n // used for preserving form values when changing homeserver\n username: \"\",\n phoneCountry: null,\n phoneNumber: \"\",\n currentFlow: \"m.login.password\"\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n\n // map from login step type to a function which will render a control\n // letting you do that login type\n this._stepRendererMap = {\n 'm.login.password': this._renderPasswordStep,\n 'm.login.cas': this._renderCasStep\n };\n\n this._initLoginLogic();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n onPasswordLoginError: function onPasswordLoginError(errorText) {\n this.setState({\n errorText: errorText,\n loginIncorrect: Boolean(errorText)\n });\n },\n\n onPasswordLogin: function onPasswordLogin(username, phoneCountry, phoneNumber, password) {\n var _this = this;\n\n this.setState({\n busy: true,\n errorText: null,\n loginIncorrect: false\n });\n\n this._loginLogic.loginViaPassword(username, phoneCountry, phoneNumber, password).then(function (data) {\n _this.props.onLoggedIn(data);\n }, function (error) {\n if (_this._unmounted) {\n return;\n }\n var errorText = void 0;\n\n // Some error strings only apply for logging in\n var usingEmail = username.indexOf(\"@\") > 0;\n if (error.httpStatus === 400 && usingEmail) {\n errorText = (0, _languageHandler._t)('This Home Server does not support login using email address.');\n } else if (error.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {\n var errorTop = (0, _ErrorUtils.messageForResourceLimitError)(error.data.limit_type, error.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n var errorDetail = (0, _ErrorUtils.messageForResourceLimitError)(error.data.limit_type, error.data.admin_contact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using this service.\")\n });\n errorText = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n errorTop\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_smallError' },\n errorDetail\n )\n );\n } else if (error.httpStatus === 401 || error.httpStatus === 403) {\n if (_SdkConfig2.default.get()['disable_custom_urls']) {\n errorText = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Incorrect username and/or password.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_smallError' },\n (0, _languageHandler._t)('Please note you are logging into the %(hs)s server, not matrix.org.', {\n hs: _this.props.defaultHsUrl.replace(/^https?:\\/\\//, '')\n })\n )\n );\n } else {\n errorText = (0, _languageHandler._t)('Incorrect username and/or password.');\n }\n } else {\n // other errors, not specific to doing a password login\n errorText = _this._errorTextFromError(error);\n }\n\n _this.setState({\n errorText: errorText,\n // 401 would be the sensible status code for 'incorrect password'\n // but the login API gives a 403 https://matrix.org/jira/browse/SYN-744\n // mentions this (although the bug is for UI auth which is not this)\n // We treat both as an incorrect password\n loginIncorrect: error.httpStatus === 401 || error.httpStatus === 403\n });\n }).finally(function () {\n if (_this._unmounted) {\n return;\n }\n _this.setState({\n busy: false\n });\n }).done();\n },\n\n onCasLogin: function onCasLogin() {\n this._loginLogic.redirectToCas();\n },\n\n _onLoginAsGuestClick: function _onLoginAsGuestClick() {\n var self = this;\n self.setState({\n busy: true,\n errorText: null,\n loginIncorrect: false\n });\n\n this._loginLogic.loginAsGuest().then(function (data) {\n self.props.onLoggedIn(data);\n }, function (error) {\n var errorText = void 0;\n if (error.httpStatus === 403) {\n errorText = (0, _languageHandler._t)(\"Guest access is disabled on this Home Server.\");\n } else {\n errorText = self._errorTextFromError(error);\n }\n self.setState({\n errorText: errorText,\n loginIncorrect: false\n });\n }).finally(function () {\n self.setState({\n busy: false\n });\n }).done();\n },\n\n onUsernameChanged: function onUsernameChanged(username) {\n this.setState({ username: username });\n },\n\n onPhoneCountryChanged: function onPhoneCountryChanged(phoneCountry) {\n this.setState({ phoneCountry: phoneCountry });\n },\n\n onPhoneNumberChanged: function onPhoneNumberChanged(phoneNumber) {\n // Validate the phone number entered\n if (!PHONE_NUMBER_REGEX.test(phoneNumber)) {\n this.setState({ errorText: (0, _languageHandler._t)('The phone number entered looks invalid') });\n return;\n }\n\n this.setState({\n phoneNumber: phoneNumber,\n errorText: null\n });\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var self = this;\n var newState = {\n errorText: null // reset err messages\n };\n if (config.hsUrl !== undefined) {\n newState.enteredHomeserverUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.enteredIdentityServerUrl = config.isUrl;\n }\n\n this.props.onServerConfigChange(config);\n this.setState(newState, function () {\n self._initLoginLogic(config.hsUrl || null, config.isUrl);\n });\n },\n\n _initLoginLogic: function _initLoginLogic(hsUrl, isUrl) {\n var _this2 = this;\n\n var self = this;\n hsUrl = hsUrl || this.state.enteredHomeserverUrl;\n isUrl = isUrl || this.state.enteredIdentityServerUrl;\n\n var fallbackHsUrl = hsUrl === this.props.defaultHsUrl ? this.props.fallbackHsUrl : null;\n\n var loginLogic = new _Login2.default(hsUrl, isUrl, fallbackHsUrl, {\n defaultDeviceDisplayName: this.props.defaultDeviceDisplayName\n });\n this._loginLogic = loginLogic;\n\n this.setState({\n enteredHomeserverUrl: hsUrl,\n enteredIdentityServerUrl: isUrl,\n busy: true,\n loginIncorrect: false\n });\n\n loginLogic.getFlows().then(function (flows) {\n // look for a flow where we understand all of the steps.\n for (var i = 0; i < flows.length; i++) {\n if (!_this2._isSupportedFlow(flows[i])) {\n continue;\n }\n\n // we just pick the first flow where we support all the\n // steps. (we don't have a UI for multiple logins so let's skip\n // that for now).\n loginLogic.chooseFlow(i);\n _this2.setState({\n currentFlow: _this2._getCurrentFlowStep()\n });\n return;\n }\n // we got to the end of the list without finding a suitable\n // flow.\n _this2.setState({\n errorText: (0, _languageHandler._t)(\"This homeserver doesn't offer any login flows which are \" + \"supported by this client.\")\n });\n }, function (err) {\n self.setState({\n errorText: self._errorTextFromError(err),\n loginIncorrect: false\n });\n }).finally(function () {\n self.setState({\n busy: false\n });\n }).done();\n },\n\n _isSupportedFlow: function _isSupportedFlow(flow) {\n // technically the flow can have multiple steps, but no one does this\n // for login and loginLogic doesn't support it so we can ignore it.\n if (!this._stepRendererMap[flow.type]) {\n console.log(\"Skipping flow\", flow, \"due to unsupported login type\", flow.type);\n return false;\n }\n return true;\n },\n\n _getCurrentFlowStep: function _getCurrentFlowStep() {\n return this._loginLogic ? this._loginLogic.getCurrentFlowStep() : null;\n },\n\n _errorTextFromError: function _errorTextFromError(err) {\n var _this3 = this;\n\n var errCode = err.errcode;\n if (!errCode && err.httpStatus) {\n errCode = \"HTTP \" + err.httpStatus;\n }\n\n var errorText = (0, _languageHandler._t)(\"Error: Problem communicating with the given homeserver.\") + (errCode ? \" (\" + errCode + \")\" : \"\");\n\n if (err.cors === 'rejected') {\n if (window.location.protocol === 'https:' && (this.state.enteredHomeserverUrl.startsWith(\"http:\") || !this.state.enteredHomeserverUrl.startsWith(\"http\"))) {\n errorText = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. \" + \"Either use HTTPS or <a>enable unsafe scripts</a>.\", {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://www.google.com/search?&q=enable%20unsafe%20scripts' },\n sub\n );\n }\n })\n );\n } else {\n errorText = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Can't connect to homeserver - please check your connectivity, ensure your \" + \"<a>homeserver's SSL certificate</a> is trusted, and that a browser extension \" + \"is not blocking requests.\", {}, {\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: _this3.state.enteredHomeserverUrl },\n sub\n );\n }\n })\n );\n }\n }\n\n return errorText;\n },\n\n\n componentForStep: function componentForStep(step) {\n if (!step) {\n return null;\n }\n\n var stepRenderer = this._stepRendererMap[step];\n\n if (stepRenderer) {\n return stepRenderer();\n }\n\n return null;\n },\n\n _renderPasswordStep: function _renderPasswordStep() {\n var PasswordLogin = _index2.default.getComponent('login.PasswordLogin');\n return _react2.default.createElement(PasswordLogin, {\n onSubmit: this.onPasswordLogin,\n onError: this.onPasswordLoginError,\n initialUsername: this.state.username,\n initialPhoneCountry: this.state.phoneCountry,\n initialPhoneNumber: this.state.phoneNumber,\n onUsernameChanged: this.onUsernameChanged,\n onPhoneCountryChanged: this.onPhoneCountryChanged,\n onPhoneNumberChanged: this.onPhoneNumberChanged,\n onForgotPasswordClick: this.props.onForgotPasswordClick,\n loginIncorrect: this.state.loginIncorrect,\n hsUrl: this.state.enteredHomeserverUrl\n });\n },\n\n _renderCasStep: function _renderCasStep() {\n var CasLogin = _index2.default.getComponent('login.CasLogin');\n return _react2.default.createElement(CasLogin, { onSubmit: this.onCasLogin });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var LoginPage = _index2.default.getComponent(\"login.LoginPage\");\n var LoginHeader = _index2.default.getComponent(\"login.LoginHeader\");\n var LoginFooter = _index2.default.getComponent(\"login.LoginFooter\");\n var ServerConfig = _index2.default.getComponent(\"login.ServerConfig\");\n var loader = this.state.busy ? _react2.default.createElement(\n 'div',\n { className: 'mx_Login_loader' },\n _react2.default.createElement(Loader, null)\n ) : null;\n\n var loginAsGuestJsx = void 0;\n if (this.props.enableGuest) {\n loginAsGuestJsx = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this._onLoginAsGuestClick, href: '#' },\n (0, _languageHandler._t)('Try the app first')\n );\n }\n\n var serverConfig = void 0;\n var header = void 0;\n\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfig = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 1000 });\n }\n\n // FIXME: remove status.im theme tweaks\n var theme = _SettingsStore2.default.getValue(\"theme\");\n if (theme !== \"status\") {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Sign in'),\n ' ',\n loader\n );\n } else {\n if (!this.state.errorText) {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Sign in to get started'),\n ' ',\n loader\n );\n }\n }\n\n var errorTextSection = void 0;\n if (this.state.errorText) {\n errorTextSection = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n this.state.errorText\n );\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n _react2.default.createElement(\n 'div',\n null,\n header,\n errorTextSection,\n this.componentForStep(this.state.currentFlow),\n serverConfig,\n _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onRegisterClick, href: '#' },\n (0, _languageHandler._t)('Create an account')\n ),\n loginAsGuestJsx,\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n )\n );\n }\n});\n//# sourceMappingURL=Login.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require(\"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _languageHandler = require(\"./languageHandler\");\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _url = require(\"url\");\n\nvar _url2 = _interopRequireDefault(_url);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar Login = function () {\n function Login(hsUrl, isUrl, fallbackHsUrl, opts) {\n (0, _classCallCheck3.default)(this, Login);\n\n this._hsUrl = hsUrl;\n this._isUrl = isUrl;\n this._fallbackHsUrl = fallbackHsUrl;\n this._currentFlowIndex = 0;\n this._flows = [];\n this._defaultDeviceDisplayName = opts.defaultDeviceDisplayName;\n }\n\n (0, _createClass3.default)(Login, [{\n key: \"getHomeserverUrl\",\n value: function getHomeserverUrl() {\n return this._hsUrl;\n }\n }, {\n key: \"getIdentityServerUrl\",\n value: function getIdentityServerUrl() {\n return this._isUrl;\n }\n }, {\n key: \"setHomeserverUrl\",\n value: function setHomeserverUrl(hsUrl) {\n this._hsUrl = hsUrl;\n }\n }, {\n key: \"setIdentityServerUrl\",\n value: function setIdentityServerUrl(isUrl) {\n this._isUrl = isUrl;\n }\n\n /**\n * Get a temporary MatrixClient, which can be used for login or register\n * requests.\n */\n\n }, {\n key: \"_createTemporaryClient\",\n value: function _createTemporaryClient() {\n return _matrixJsSdk2.default.createClient({\n baseUrl: this._hsUrl,\n idBaseUrl: this._isUrl\n });\n }\n }, {\n key: \"getFlows\",\n value: function getFlows() {\n var self = this;\n var client = this._createTemporaryClient();\n return client.loginFlows().then(function (result) {\n self._flows = result.flows;\n self._currentFlowIndex = 0;\n // technically the UI should display options for all flows for the\n // user to then choose one, so return all the flows here.\n return self._flows;\n });\n }\n }, {\n key: \"chooseFlow\",\n value: function chooseFlow(flowIndex) {\n this._currentFlowIndex = flowIndex;\n }\n }, {\n key: \"getCurrentFlowStep\",\n value: function getCurrentFlowStep() {\n // technically the flow can have multiple steps, but no one does this\n // for login so we can ignore it.\n var flowStep = this._flows[this._currentFlowIndex];\n return flowStep ? flowStep.type : null;\n }\n }, {\n key: \"loginAsGuest\",\n value: function loginAsGuest() {\n var _this = this;\n\n var client = this._createTemporaryClient();\n return client.registerGuest({\n body: {\n initial_device_display_name: this._defaultDeviceDisplayName\n }\n }).then(function (creds) {\n return {\n userId: creds.user_id,\n deviceId: creds.device_id,\n accessToken: creds.access_token,\n homeserverUrl: _this._hsUrl,\n identityServerUrl: _this._isUrl,\n guest: true\n };\n }, function (error) {\n throw error;\n });\n }\n }, {\n key: \"loginViaPassword\",\n value: function loginViaPassword(username, phoneCountry, phoneNumber, pass) {\n var _this2 = this;\n\n var self = this;\n\n var isEmail = username.indexOf(\"@\") > 0;\n\n var identifier = void 0;\n var legacyParams = void 0; // parameters added to support old HSes\n if (phoneCountry && phoneNumber) {\n identifier = {\n type: 'm.id.phone',\n country: phoneCountry,\n number: phoneNumber\n };\n // No legacy support for phone number login\n } else if (isEmail) {\n identifier = {\n type: 'm.id.thirdparty',\n medium: 'email',\n address: username\n };\n legacyParams = {\n medium: 'email',\n address: username\n };\n } else {\n identifier = {\n type: 'm.id.user',\n user: username\n };\n legacyParams = {\n user: username\n };\n }\n\n var loginParams = {\n password: pass,\n identifier: identifier,\n initial_device_display_name: this._defaultDeviceDisplayName\n };\n (0, _assign2.default)(loginParams, legacyParams);\n\n var client = this._createTemporaryClient();\n\n var tryFallbackHs = function tryFallbackHs(originalError) {\n var fbClient = _matrixJsSdk2.default.createClient({\n baseUrl: self._fallbackHsUrl,\n idBaseUrl: _this2._isUrl\n });\n\n return fbClient.login('m.login.password', loginParams).then(function (data) {\n return _bluebird2.default.resolve({\n homeserverUrl: self._fallbackHsUrl,\n identityServerUrl: self._isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n }).catch(function (fallback_error) {\n console.log(\"fallback HS login failed\", fallback_error);\n // throw the original error\n throw originalError;\n });\n };\n var tryLowercaseUsername = function tryLowercaseUsername(originalError) {\n var loginParamsLowercase = (0, _assign2.default)({}, loginParams, {\n user: username.toLowerCase(),\n identifier: {\n user: username.toLowerCase()\n }\n });\n return client.login('m.login.password', loginParamsLowercase).then(function (data) {\n return _bluebird2.default.resolve({\n homeserverUrl: self._hsUrl,\n identityServerUrl: self._isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n }).catch(function (fallback_error) {\n console.log(\"Lowercase username login failed\", fallback_error);\n // throw the original error\n throw originalError;\n });\n };\n\n var originalLoginError = null;\n return client.login('m.login.password', loginParams).then(function (data) {\n return _bluebird2.default.resolve({\n homeserverUrl: self._hsUrl,\n identityServerUrl: self._isUrl,\n userId: data.user_id,\n deviceId: data.device_id,\n accessToken: data.access_token\n });\n }).catch(function (error) {\n originalLoginError = error;\n if (error.httpStatus === 403) {\n if (self._fallbackHsUrl) {\n return tryFallbackHs(originalLoginError);\n }\n }\n throw originalLoginError;\n }).catch(function (error) {\n // We apparently squash case at login serverside these days:\n // https://github.com/matrix-org/synapse/blob/1189be43a2479f5adf034613e8d10e3f4f452eb9/synapse/handlers/auth.py#L475\n // so this wasn't needed after all. Keeping the code around in case the\n // the situation changes...\n\n /*\n if (\n error.httpStatus === 403 &&\n loginParams.identifier.type === 'm.id.user' &&\n username.search(/[A-Z]/) > -1\n ) {\n return tryLowercaseUsername(originalLoginError);\n }\n */\n throw originalLoginError;\n }).catch(function (error) {\n console.log(\"Login failed\", error);\n throw error;\n });\n }\n }, {\n key: \"redirectToCas\",\n value: function redirectToCas() {\n var client = this._createTemporaryClient();\n var parsedUrl = _url2.default.parse(window.location.href, true);\n\n // XXX: at this point, the fragment will always be #/login, which is no\n // use to anyone. Ideally, we would get the intended fragment from\n // MatrixChat.screenAfterLogin so that you could follow #/room links etc\n // through a CAS login.\n parsedUrl.hash = \"\";\n\n parsedUrl.query[\"homeserver\"] = client.getHomeserverUrl();\n parsedUrl.query[\"identityServer\"] = client.getIdentityServerUrl();\n var casUrl = client.getCasLoginUrl(_url2.default.format(parsedUrl));\n window.location.href = casUrl;\n }\n }]);\n return Login;\n}();\n\nexports.default = Login;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=Login.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PostRegistration',\n\n propTypes: {\n onComplete: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: null,\n errorString: null,\n busy: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n // There is some assymetry between ChangeDisplayName and ChangeAvatar,\n // as ChangeDisplayName will auto-get the name but ChangeAvatar expects\n // the URL to be passed to you (because it's also used for room avatars).\n var cli = _MatrixClientPeg2.default.get();\n this.setState({ busy: true });\n var self = this;\n cli.getProfileInfo(cli.credentials.userId).done(function (result) {\n self.setState({\n avatarUrl: _MatrixClientPeg2.default.get().mxcUrlToHttp(result.avatar_url),\n busy: false\n });\n }, function (error) {\n self.setState({\n errorString: (0, _languageHandler._t)(\"Failed to fetch avatar URL\"),\n busy: false\n });\n });\n },\n\n render: function render() {\n var ChangeDisplayName = _index2.default.getComponent('settings.ChangeDisplayName');\n var ChangeAvatar = _index2.default.getComponent('settings.ChangeAvatar');\n var LoginPage = _index2.default.getComponent('login.LoginPage');\n var LoginHeader = _index2.default.getComponent('login.LoginHeader');\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_profile' },\n (0, _languageHandler._t)('Set a display name:'),\n _react2.default.createElement(ChangeDisplayName, null),\n (0, _languageHandler._t)('Upload an avatar:'),\n _react2.default.createElement(ChangeAvatar, {\n initialAvatarUrl: this.state.avatarUrl }),\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onComplete },\n (0, _languageHandler._t)('Continue')\n ),\n this.state.errorString\n )\n )\n );\n }\n});\n//# sourceMappingURL=PostRegistration.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _matrixJsSdk2 = _interopRequireDefault(_matrixJsSdk);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _RegistrationForm = require('../../views/login/RegistrationForm');\n\nvar _RegistrationForm2 = _interopRequireDefault(_RegistrationForm);\n\nvar _RtsClient = require('../../../RtsClient');\n\nvar _RtsClient2 = _interopRequireDefault(_RtsClient);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MIN_PASSWORD_LENGTH = 6;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'Registration',\n\n propTypes: {\n onLoggedIn: _propTypes2.default.func.isRequired,\n clientSecret: _propTypes2.default.string,\n sessionId: _propTypes2.default.string,\n makeRegistrationUrl: _propTypes2.default.func.isRequired,\n idSid: _propTypes2.default.string,\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n defaultHsUrl: _propTypes2.default.string,\n defaultIsUrl: _propTypes2.default.string,\n brand: _propTypes2.default.string,\n email: _propTypes2.default.string,\n referrer: _propTypes2.default.string,\n teamServerConfig: _propTypes2.default.shape({\n // Email address to request new teams\n supportEmail: _propTypes2.default.string.isRequired,\n // URL of the riot-team-server to get team configurations and track referrals\n teamServerURL: _propTypes2.default.string.isRequired\n }),\n teamSelected: _propTypes2.default.object,\n\n defaultDeviceDisplayName: _propTypes2.default.string,\n\n // registration shouldn't know or care how login is done.\n onLoginClick: _propTypes2.default.func.isRequired,\n onCancelClick: _propTypes2.default.func,\n onServerConfigChange: _propTypes2.default.func.isRequired,\n\n rtsClient: _propTypes2.default.shape({\n getTeamsConfig: _propTypes2.default.func.isRequired,\n trackReferral: _propTypes2.default.func.isRequired,\n getTeam: _propTypes2.default.func.isRequired\n })\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n teamServerBusy: false,\n errorText: null,\n // We remember the values entered by the user because\n // the registration form will be unmounted during the\n // course of registration, but if there's an error we\n // want to bring back the registration form with the\n // values the user entered still in it. We can keep\n // them in this component's state since this component\n // persist for the duration of the registration process.\n formVals: {\n email: this.props.email\n },\n // true if we're waiting for the user to complete\n // user-interactive auth\n // If we've been given a session ID, we're resuming\n // straight back into UI auth\n doingUIAuth: Boolean(this.props.sessionId),\n hsUrl: this.props.customHsUrl,\n isUrl: this.props.customIsUrl,\n flows: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this._unmounted = false;\n\n this._replaceClient();\n\n if (this.props.teamServerConfig && this.props.teamServerConfig.teamServerURL && !this._rtsClient) {\n this._rtsClient = this.props.rtsClient || new _RtsClient2.default(this.props.teamServerConfig.teamServerURL);\n\n this.setState({\n teamServerBusy: true\n });\n // GET team configurations including domains, names and icons\n this._rtsClient.getTeamsConfig().then(function (data) {\n var teamsConfig = {\n teams: data,\n supportEmail: _this.props.teamServerConfig.supportEmail\n };\n console.log('Setting teams config to ', teamsConfig);\n _this.setState({\n teamsConfig: teamsConfig,\n teamServerBusy: false\n });\n }, function (err) {\n console.error('Error retrieving config for teams', err);\n _this.setState({\n teamServerBusy: false\n });\n });\n }\n },\n\n onServerConfigChange: function onServerConfigChange(config) {\n var _this2 = this;\n\n var newState = {};\n if (config.hsUrl !== undefined) {\n newState.hsUrl = config.hsUrl;\n }\n if (config.isUrl !== undefined) {\n newState.isUrl = config.isUrl;\n }\n this.props.onServerConfigChange(config);\n this.setState(newState, function () {\n _this2._replaceClient();\n });\n },\n\n _replaceClient: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this._matrixClient = _matrixJsSdk2.default.createClient({\n baseUrl: this.state.hsUrl,\n idBaseUrl: this.state.isUrl\n });\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(this._makeRegisterRequest({}));\n\n case 4:\n // This should never succeed since we specified an empty\n // auth object.\n console.log(\"Expecting 401 from register request but got success!\");\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](1);\n\n if (_context.t0.httpStatus === 401) {\n this.setState({\n flows: _context.t0.data.flows\n });\n } else {\n this.setState({\n errorText: (0, _languageHandler._t)(\"Unable to query for supported registration methods\")\n });\n }\n\n case 10:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 7]]);\n }));\n\n function _replaceClient() {\n return _ref.apply(this, arguments);\n }\n\n return _replaceClient;\n }(),\n\n onFormSubmit: function onFormSubmit(formVals) {\n this.setState({\n errorText: \"\",\n busy: true,\n formVals: formVals,\n doingUIAuth: true\n });\n },\n\n _onUIAuthFinished: function _onUIAuthFinished(success, response, extra) {\n var _this3 = this;\n\n if (!success) {\n var msg = response.message || response.toString();\n // can we give a better error message?\n if (response.errcode == 'M_RESOURCE_LIMIT_EXCEEDED') {\n var errorTop = (0, _ErrorUtils.messageForResourceLimitError)(response.data.limit_type, response.data.admin_contact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n var errorDetail = (0, _ErrorUtils.messageForResourceLimitError)(response.data.limit_type, response.data.admin_contact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using this service.\")\n });\n msg = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n errorTop\n ),\n _react2.default.createElement(\n 'p',\n null,\n errorDetail\n )\n );\n } else if (response.required_stages && response.required_stages.indexOf('m.login.msisdn') > -1) {\n var msisdnAvailable = false;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(response.available_flows), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var flow = _step.value;\n\n msisdnAvailable |= flow.stages.indexOf('m.login.msisdn') > -1;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (!msisdnAvailable) {\n msg = (0, _languageHandler._t)('This server does not support authentication with a phone number.');\n }\n }\n this.setState({\n busy: false,\n doingUIAuth: false,\n errorText: msg\n });\n return;\n }\n\n this.setState({\n // we're still busy until we get unmounted: don't show the registration form again\n busy: true,\n doingUIAuth: false\n });\n\n // Done regardless of `teamSelected`. People registering with non-team emails\n // will just nop. The point of this being we might not have the email address\n // that the user registered with at this stage (depending on whether this\n // is the client they initiated registration).\n var trackPromise = _bluebird2.default.resolve(null);\n if (this._rtsClient && extra.emailSid) {\n // Track referral if this.props.referrer set, get team_token in order to\n // retrieve team config and see welcome page etc.\n trackPromise = this._rtsClient.trackReferral(this.props.referrer || '', // Default to empty string = not referred\n extra.emailSid, extra.clientSecret).then(function (data) {\n var teamToken = data.team_token;\n // Store for use /w welcome pages\n window.localStorage.setItem('mx_team_token', teamToken);\n\n _this3._rtsClient.getTeam(teamToken).then(function (team) {\n console.log('User successfully registered with team ' + team.name);\n if (!team.rooms) {\n return;\n }\n // Auto-join rooms\n team.rooms.forEach(function (room) {\n if (room.auto_join && room.room_id) {\n console.log('Auto-joining ' + room.room_id);\n _MatrixClientPeg2.default.get().joinRoom(room.room_id);\n }\n });\n }, function (err) {\n console.error('Error getting team config', err);\n });\n\n return teamToken;\n }, function (err) {\n console.error('Error tracking referral', err);\n });\n }\n\n trackPromise.then(function (teamToken) {\n return _this3.props.onLoggedIn({\n userId: response.user_id,\n deviceId: response.device_id,\n homeserverUrl: _this3._matrixClient.getHomeserverUrl(),\n identityServerUrl: _this3._matrixClient.getIdentityServerUrl(),\n accessToken: response.access_token\n }, teamToken);\n }).then(function (cli) {\n return _this3._setupPushers(cli);\n });\n },\n\n _setupPushers: function _setupPushers(matrixClient) {\n var _this4 = this;\n\n if (!this.props.brand) {\n return _bluebird2.default.resolve();\n }\n return matrixClient.getPushers().then(function (resp) {\n var pushers = resp.pushers;\n for (var i = 0; i < pushers.length; ++i) {\n if (pushers[i].kind === 'email') {\n var emailPusher = pushers[i];\n emailPusher.data = { brand: _this4.props.brand };\n matrixClient.setPusher(emailPusher).done(function () {\n console.log(\"Set email branding to \" + _this4.props.brand);\n }, function (error) {\n console.error(\"Couldn't set email branding: \" + error);\n });\n }\n }\n }, function (error) {\n console.error(\"Couldn't get pushers: \" + error);\n });\n },\n\n onFormValidationFailed: function onFormValidationFailed(errCode) {\n var errMsg = void 0;\n switch (errCode) {\n case \"RegistrationForm.ERR_PASSWORD_MISSING\":\n errMsg = (0, _languageHandler._t)('Missing password.');\n break;\n case \"RegistrationForm.ERR_PASSWORD_MISMATCH\":\n errMsg = (0, _languageHandler._t)('Passwords don\\'t match.');\n break;\n case \"RegistrationForm.ERR_PASSWORD_LENGTH\":\n errMsg = (0, _languageHandler._t)('Password too short (min %(MIN_PASSWORD_LENGTH)s).', { MIN_PASSWORD_LENGTH: MIN_PASSWORD_LENGTH });\n break;\n case \"RegistrationForm.ERR_EMAIL_INVALID\":\n errMsg = (0, _languageHandler._t)('This doesn\\'t look like a valid email address.');\n break;\n case \"RegistrationForm.ERR_PHONE_NUMBER_INVALID\":\n errMsg = (0, _languageHandler._t)('This doesn\\'t look like a valid phone number.');\n break;\n case \"RegistrationForm.ERR_MISSING_EMAIL\":\n errMsg = (0, _languageHandler._t)('An email address is required to register on this homeserver.');\n break;\n case \"RegistrationForm.ERR_MISSING_PHONE_NUMBER\":\n errMsg = (0, _languageHandler._t)('A phone number is required to register on this homeserver.');\n break;\n case \"RegistrationForm.ERR_USERNAME_INVALID\":\n errMsg = (0, _languageHandler._t)('User names may only contain letters, numbers, dots, hyphens and underscores.');\n break;\n case \"RegistrationForm.ERR_USERNAME_BLANK\":\n errMsg = (0, _languageHandler._t)('You need to enter a user name.');\n break;\n default:\n console.error(\"Unknown error code: %s\", errCode);\n errMsg = (0, _languageHandler._t)('An unknown error occurred.');\n break;\n }\n this.setState({\n errorText: errMsg\n });\n },\n\n onTeamSelected: function onTeamSelected(teamSelected) {\n if (!this._unmounted) {\n this.setState({ teamSelected: teamSelected });\n }\n },\n\n _makeRegisterRequest: function _makeRegisterRequest(auth) {\n // Only send the bind params if we're sending username / pw params\n // (Since we need to send no params at all to use the ones saved in the\n // session).\n var bindThreepids = this.state.formVals.password ? {\n email: true,\n msisdn: true\n } : {};\n\n return this._matrixClient.register(this.state.formVals.username, this.state.formVals.password, undefined, // session id: included in the auth dict already\n auth, bindThreepids, null);\n },\n\n _getUIAuthInputs: function _getUIAuthInputs() {\n return {\n emailAddress: this.state.formVals.email,\n phoneCountry: this.state.formVals.phoneCountry,\n phoneNumber: this.state.formVals.phoneNumber\n };\n },\n\n render: function render() {\n var LoginHeader = _index2.default.getComponent('login.LoginHeader');\n var LoginFooter = _index2.default.getComponent('login.LoginFooter');\n var LoginPage = _index2.default.getComponent('login.LoginPage');\n var InteractiveAuth = _index2.default.getComponent('structures.InteractiveAuth');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var ServerConfig = _index2.default.getComponent('views.login.ServerConfig');\n\n var theme = _SettingsStore2.default.getValue(\"theme\");\n\n var registerBody = void 0;\n if (this.state.doingUIAuth) {\n registerBody = _react2.default.createElement(InteractiveAuth, {\n matrixClient: this._matrixClient,\n makeRequest: this._makeRegisterRequest,\n onAuthFinished: this._onUIAuthFinished,\n inputs: this._getUIAuthInputs(),\n makeRegistrationUrl: this.props.makeRegistrationUrl,\n sessionId: this.props.sessionId,\n clientSecret: this.props.clientSecret,\n emailSid: this.props.idSid,\n poll: true\n });\n } else if (this.state.busy || this.state.teamServerBusy || !this.state.flows) {\n registerBody = _react2.default.createElement(Spinner, null);\n } else {\n var serverConfigSection = void 0;\n if (!_SdkConfig2.default.get()['disable_custom_urls']) {\n serverConfigSection = _react2.default.createElement(ServerConfig, { ref: 'serverConfig',\n withToggleButton: true,\n customHsUrl: this.props.customHsUrl,\n customIsUrl: this.props.customIsUrl,\n defaultHsUrl: this.props.defaultHsUrl,\n defaultIsUrl: this.props.defaultIsUrl,\n onServerConfigChange: this.onServerConfigChange,\n delayTimeMs: 1000\n });\n }\n registerBody = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(_RegistrationForm2.default, {\n defaultUsername: this.state.formVals.username,\n defaultEmail: this.state.formVals.email,\n defaultPhoneCountry: this.state.formVals.phoneCountry,\n defaultPhoneNumber: this.state.formVals.phoneNumber,\n defaultPassword: this.state.formVals.password,\n teamsConfig: this.state.teamsConfig,\n minPasswordLength: MIN_PASSWORD_LENGTH,\n onError: this.onFormValidationFailed,\n onRegisterClick: this.onFormSubmit,\n onTeamSelected: this.onTeamSelected,\n flows: this.state.flows\n }),\n serverConfigSection\n );\n }\n\n var header = void 0;\n var errorText = void 0;\n // FIXME: remove hardcoded Status team tweaks at some point\n if (theme === 'status' && this.state.errorText) {\n header = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n this.state.errorText\n );\n } else {\n header = _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)('Create an account')\n );\n if (this.state.errorText) {\n errorText = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_error' },\n this.state.errorText\n );\n }\n }\n\n var signIn = void 0;\n if (!this.state.doingUIAuth) {\n signIn = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_create', onClick: this.props.onLoginClick, href: '#' },\n theme === 'status' ? (0, _languageHandler._t)('Sign in') : (0, _languageHandler._t)('I already have an account')\n );\n }\n\n var LanguageSelector = _index2.default.getComponent('structures.login.LanguageSelector');\n\n return _react2.default.createElement(\n LoginPage,\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Login_box' },\n _react2.default.createElement(LoginHeader, {\n icon: this.state.teamSelected ? this.props.teamServerConfig.teamServerURL + \"/static/common/\" + this.state.teamSelected.domain + \"/icon.png\" : null\n }),\n header,\n registerBody,\n signIn,\n errorText,\n _react2.default.createElement(LanguageSelector, null),\n _react2.default.createElement(LoginFooter, null)\n )\n );\n }\n});\n//# sourceMappingURL=Registration.js.map","'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Avatar = require('../../../Avatar');\n\nvar _Avatar2 = _interopRequireDefault(_Avatar);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'BaseAvatar',\n\n propTypes: {\n name: _propTypes2.default.string.isRequired, // The name (first initial used as default)\n idName: _propTypes2.default.string, // ID for generating hash colours\n title: _propTypes2.default.string, // onHover title text\n url: _propTypes2.default.string, // highest priority of them all, shortcut to set in urls[0]\n urls: _propTypes2.default.array, // [highest_priority, ... , lowest_priority]\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n // XXX resizeMethod not actually used.\n resizeMethod: _propTypes2.default.string,\n defaultToInitialLetter: _propTypes2.default.bool // true to add default url\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 40,\n height: 40,\n resizeMethod: 'crop',\n defaultToInitialLetter: true\n };\n },\n\n getInitialState: function getInitialState() {\n return this._getState(this.props);\n },\n\n componentWillMount: function componentWillMount() {\n this.unmounted = false;\n this.context.matrixClient.on('sync', this.onClientSync);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('sync', this.onClientSync);\n },\n\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n // work out if we need to call setState (if the image URLs array has changed)\n var newState = this._getState(nextProps);\n var newImageUrls = newState.imageUrls;\n var oldImageUrls = this.state.imageUrls;\n if (newImageUrls.length !== oldImageUrls.length) {\n this.setState(newState); // detected a new entry\n } else {\n // check each one to see if they are the same\n for (var i = 0; i < newImageUrls.length; i++) {\n if (oldImageUrls[i] !== newImageUrls[i]) {\n this.setState(newState); // detected a diff\n break;\n }\n }\n }\n },\n\n onClientSync: function onClientSync(syncState, prevState) {\n if (this.unmounted) return;\n\n // Consider the client reconnected if there is no error with syncing.\n // This means the state could be RECONNECTING, SYNCING, PREPARED or CATCHUP.\n var reconnected = syncState !== \"ERROR\" && prevState !== syncState;\n if (reconnected &&\n // Did we fall back?\n this.state.urlsIndex > 0) {\n // Start from the highest priority URL again\n this.setState({\n urlsIndex: 0\n });\n }\n },\n\n _getState: function _getState(props) {\n // work out the full set of urls to try to load. This is formed like so:\n // imageUrls: [ props.url, props.urls, default image ]\n\n var urls = props.urls || [];\n if (props.url) {\n urls.unshift(props.url); // put in urls[0]\n }\n\n var defaultImageUrl = null;\n if (props.defaultToInitialLetter) {\n defaultImageUrl = _Avatar2.default.defaultAvatarUrlForString(props.idName || props.name);\n urls.push(defaultImageUrl); // lowest priority\n }\n return {\n imageUrls: urls,\n defaultImageUrl: defaultImageUrl,\n urlsIndex: 0\n };\n },\n\n onError: function onError(ev) {\n var nextIndex = this.state.urlsIndex + 1;\n if (nextIndex < this.state.imageUrls.length) {\n // try the next one\n this.setState({\n urlsIndex: nextIndex\n });\n }\n },\n\n /**\n * returns the first (non-sigil) character of 'name',\n * converted to uppercase\n */\n _getInitialLetter: function _getInitialLetter(name) {\n if (name.length < 1) {\n return undefined;\n }\n\n var idx = 0;\n var initial = name[0];\n if ((initial === '@' || initial === '#' || initial === '+') && name[1]) {\n idx++;\n }\n\n // string.codePointAt(0) would do this, but that isn't supported by\n // some browsers (notably PhantomJS).\n var chars = 1;\n var first = name.charCodeAt(idx);\n\n // check if it’s the start of a surrogate pair\n if (first >= 0xD800 && first <= 0xDBFF && name[idx + 1]) {\n var second = name.charCodeAt(idx + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n chars++;\n }\n }\n\n var firstChar = name.substring(idx, idx + chars);\n return firstChar.toUpperCase();\n },\n\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var imageUrl = this.state.imageUrls[this.state.urlsIndex];\n\n var _props = this.props,\n name = _props.name,\n idName = _props.idName,\n title = _props.title,\n url = _props.url,\n urls = _props.urls,\n width = _props.width,\n height = _props.height,\n resizeMethod = _props.resizeMethod,\n defaultToInitialLetter = _props.defaultToInitialLetter,\n onClick = _props.onClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['name', 'idName', 'title', 'url', 'urls', 'width', 'height', 'resizeMethod', 'defaultToInitialLetter', 'onClick']);\n\n\n if (imageUrl === this.state.defaultImageUrl) {\n var initialLetter = this._getInitialLetter(name);\n var textNode = _react2.default.createElement(\n EmojiText,\n { className: 'mx_BaseAvatar_initial', 'aria-hidden': 'true',\n style: { fontSize: width * 0.65 + \"px\",\n width: width + \"px\",\n lineHeight: height + \"px\" }\n },\n initialLetter\n );\n var imgNode = _react2.default.createElement('img', { className: 'mx_BaseAvatar_image', src: imageUrl,\n alt: '', title: title, onError: this.onError,\n width: width, height: height });\n if (onClick != null) {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n (0, _extends3.default)({ element: 'span', className: 'mx_BaseAvatar',\n onClick: onClick }, otherProps),\n textNode,\n imgNode\n );\n } else {\n return _react2.default.createElement(\n 'span',\n (0, _extends3.default)({ className: 'mx_BaseAvatar' }, otherProps),\n textNode,\n imgNode\n );\n }\n }\n if (onClick != null) {\n return _react2.default.createElement(_AccessibleButton2.default, (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image',\n element: 'img',\n src: imageUrl,\n onClick: onClick,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n } else {\n return _react2.default.createElement('img', (0, _extends3.default)({ className: 'mx_BaseAvatar mx_BaseAvatar_image', src: imageUrl,\n onError: this.onError,\n width: width, height: height,\n title: title, alt: ''\n }, otherProps));\n }\n }\n});\n//# sourceMappingURL=BaseAvatar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupAvatar',\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupName: _propTypes2.default.string,\n groupAvatarUrl: _propTypes2.default.string,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n onClick: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 36,\n height: 36,\n resizeMethod: 'crop'\n };\n },\n\n getGroupAvatarUrl: function getGroupAvatarUrl() {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.groupAvatarUrl, this.props.width, this.props.height, this.props.resizeMethod);\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n // extract the props we use from props so we can pass any others through\n // should consider adding this as a global rule in js-sdk?\n /*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\n var _props = this.props,\n groupId = _props.groupId,\n groupAvatarUrl = _props.groupAvatarUrl,\n groupName = _props.groupName,\n otherProps = (0, _objectWithoutProperties3.default)(_props, ['groupId', 'groupAvatarUrl', 'groupName']);\n\n\n return _react2.default.createElement(BaseAvatar, (0, _extends3.default)({\n name: groupName || this.props.groupId[1],\n idName: this.props.groupId,\n url: this.getGroupAvatarUrl()\n }, otherProps));\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupAvatar.js.map","\"use strict\";\n\nvar _extends2 = require(\"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require(\"babel-runtime/helpers/objectWithoutProperties\");\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require(\"matrix-js-sdk\");\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require(\"../../../Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require(\"../../../index\");\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _DMRoomMap = require(\"../../../utils/DMRoomMap\");\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomAvatar',\n\n // Room may be left unset here, but if it is,\n // oobData.avatarUrl should be set (else there\n // would be nowhere to get the avatar from)\n propTypes: {\n room: _propTypes2.default.object,\n oobData: _propTypes2.default.object,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n resizeMethod: _propTypes2.default.string,\n viewAvatarOnClick: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n width: 36,\n height: 36,\n resizeMethod: 'crop',\n oobData: {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n urls: this.getImageUrls(this.props)\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n }\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this.setState({\n urls: this.getImageUrls(newProps)\n });\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev) {\n if (!this.props.room || ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar') return;\n\n this.setState({\n urls: this.getImageUrls(this.props)\n });\n },\n\n getImageUrls: function getImageUrls(props) {\n return [_matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), props.oobData.avatarUrl, Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod), // highest priority\n this.getRoomAvatarUrl(props), this.getOneToOneAvatar(props)].filter(function (url) {\n return url != null && url != \"\";\n });\n },\n\n getRoomAvatarUrl: function getRoomAvatarUrl(props) {\n if (!props.room) return null;\n\n return props.room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod, false);\n },\n\n getOneToOneAvatar: function getOneToOneAvatar(props) {\n var room = props.room;\n if (!room) {\n return null;\n }\n var otherMember = null;\n var otherUserId = _DMRoomMap2.default.shared().getUserIdForRoomId(room.roomId);\n if (otherUserId) {\n otherMember = room.getMember(otherUserId);\n } else {\n // if the room is not marked as a 1:1, but only has max 2 members\n // then still try to show any avatar (pref. other member)\n otherMember = room.getAvatarFallbackMember();\n }\n if (otherMember) {\n return otherMember.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), Math.floor(props.width * window.devicePixelRatio), Math.floor(props.height * window.devicePixelRatio), props.resizeMethod, false);\n }\n return null;\n },\n\n onRoomAvatarClick: function onRoomAvatarClick() {\n var avatarUrl = this.props.room.getAvatarUrl(_MatrixClientPeg2.default.get().getHomeserverUrl(), null, null, null, false);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: avatarUrl,\n name: this.props.room.name\n };\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n /*eslint no-unused-vars: [\"error\", { \"ignoreRestSiblings\": true }]*/\n var _props = this.props,\n room = _props.room,\n oobData = _props.oobData,\n viewAvatarOnClick = _props.viewAvatarOnClick,\n otherProps = (0, _objectWithoutProperties3.default)(_props, [\"room\", \"oobData\", \"viewAvatarOnClick\"]);\n\n\n var roomName = room ? room.name : oobData.name;\n\n return _react2.default.createElement(BaseAvatar, (0, _extends3.default)({}, otherProps, { name: roomName,\n idName: room ? room.roomId : null,\n urls: this.state.urls,\n onClick: this.props.viewAvatarOnClick ? this.onRoomAvatarClick : null }));\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomAvatar.js.map","/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * This component can be used to display generic HTML content in a contextual\n * menu.\n */\n\nvar GenericElementContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GenericElementContextMenu, _React$Component);\n\n function GenericElementContextMenu(props) {\n (0, _classCallCheck3.default)(this, GenericElementContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GenericElementContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GenericElementContextMenu)).call(this, props));\n\n _this.resize = _this.resize.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(GenericElementContextMenu, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.resize = this.resize.bind(this);\n window.addEventListener(\"resize\", this.resize);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.resize);\n }\n }, {\n key: 'resize',\n value: function resize() {\n if (this.props.onResize) {\n this.props.onResize();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n this.props.element\n );\n }\n }]);\n return GenericElementContextMenu;\n}(_react2.default.Component);\n\nGenericElementContextMenu.PropTypes = {\n element: _propTypes2.default.element.isRequired,\n // Function to be called when the parent window is resized\n // This can be used to reposition or close the menu on resize and\n // ensure that it is not displayed in a stale position.\n onResize: _propTypes2.default.func\n};\nexports.default = GenericElementContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GenericElementContextMenu.js.map","/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GenericTextContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GenericTextContextMenu, _React$Component);\n\n function GenericTextContextMenu() {\n (0, _classCallCheck3.default)(this, GenericTextContextMenu);\n return (0, _possibleConstructorReturn3.default)(this, (GenericTextContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GenericTextContextMenu)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(GenericTextContextMenu, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n this.props.message\n );\n }\n }]);\n return GenericTextContextMenu;\n}(_react2.default.Component);\n\nGenericTextContextMenu.PropTypes = {\n message: _propTypes2.default.string.isRequired\n};\nexports.default = GenericTextContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GenericTextContextMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GroupInviteTileContextMenu = function (_React$Component) {\n (0, _inherits3.default)(GroupInviteTileContextMenu, _React$Component);\n\n function GroupInviteTileContextMenu(props, context) {\n (0, _classCallCheck3.default)(this, GroupInviteTileContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (GroupInviteTileContextMenu.__proto__ || (0, _getPrototypeOf2.default)(GroupInviteTileContextMenu)).call(this, props, context));\n\n _this._onClickReject = _this._onClickReject.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(GroupInviteTileContextMenu, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._unmounted = false;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onClickReject',\n value: function _onClickReject() {\n var _this2 = this;\n\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Reject community invite', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Reject invitation'),\n description: (0, _languageHandler._t)('Are you sure you want to reject the invitation?'),\n onFinished: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(shouldLeave) {\n var Loader, modal, ErrorDialog;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (shouldLeave) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return');\n\n case 2:\n\n // FIXME: controller shouldn't be loading a view :(\n Loader = _index2.default.getComponent(\"elements.Spinner\");\n modal = _Modal2.default.createDialog(Loader, null, 'mx_Dialog_spinner');\n _context.prev = 4;\n _context.next = 7;\n return (0, _bluebird.resolve)(_GroupStore2.default.leaveGroup(_this2.props.group.groupId));\n\n case 7:\n _context.next = 14;\n break;\n\n case 9:\n _context.prev = 9;\n _context.t0 = _context['catch'](4);\n\n console.error(\"Error rejecting community invite: \", _context.t0);\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n _Modal2.default.createTrackedDialog('Error rejecting invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Unable to reject invite\")\n });\n\n case 14:\n _context.prev = 14;\n\n modal.close();\n return _context.finish(14);\n\n case 17:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this2, [[4, 9, 14, 17]]);\n }));\n\n return function onFinished(_x) {\n return _ref.apply(this, arguments);\n };\n }()\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_leave', onClick: this._onClickReject },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Reject')\n )\n );\n }\n }]);\n return GroupInviteTileContextMenu;\n}(_react2.default.Component); /*\n Copyright 2018 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nGroupInviteTileContextMenu.propTypes = {\n group: _propTypes2.default.instanceOf(_matrixJsSdk.Group).isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n};\nexports.default = GroupInviteTileContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupInviteTileContextMenu.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _Resend = require('../../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MessageContextMenu',\n\n propTypes: {\n /* the MatrixEvent associated with the context menu */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* an optional EventTileOps implementation that can be used to unhide preview widgets */\n eventTileOps: _propTypes2.default.object,\n\n /* an optional function to be called when the user clicks collapse thread, if not provided hide button */\n collapseReplyThread: _propTypes2.default.func,\n\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n canRedact: false,\n canPin: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on('RoomMember.powerLevel', this._checkPermissions);\n this._checkPermissions();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener('RoomMember.powerLevel', this._checkPermissions);\n }\n },\n\n _checkPermissions: function _checkPermissions() {\n var cli = _MatrixClientPeg2.default.get();\n var room = cli.getRoom(this.props.mxEvent.getRoomId());\n\n var canRedact = room.currentState.maySendRedactionForEvent(this.props.mxEvent, cli.credentials.userId);\n var canPin = room.currentState.mayClientSendStateEvent('m.room.pinned_events', cli);\n\n // HACK: Intentionally say we can't pin if the user doesn't want to use the functionality\n if (!_SettingsStore2.default.isFeatureEnabled(\"feature_pinning\")) canPin = false;\n\n this.setState({ canRedact: canRedact, canPin: canPin });\n },\n\n _isPinned: function _isPinned() {\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var pinnedEvent = room.currentState.getStateEvents('m.room.pinned_events', '');\n if (!pinnedEvent) return false;\n return pinnedEvent.getContent().pinned.includes(this.props.mxEvent.getId());\n },\n\n onResendClick: function onResendClick() {\n _Resend2.default.resend(this.props.mxEvent);\n this.closeMenu();\n },\n\n onViewSourceClick: function onViewSourceClick() {\n var ViewSource = _index2.default.getComponent('structures.ViewSource');\n _Modal2.default.createTrackedDialog('View Event Source', '', ViewSource, {\n content: this.props.mxEvent.event\n }, 'mx_Dialog_viewsource');\n this.closeMenu();\n },\n\n onViewClearSourceClick: function onViewClearSourceClick() {\n var ViewSource = _index2.default.getComponent('structures.ViewSource');\n _Modal2.default.createTrackedDialog('View Clear Event Source', '', ViewSource, {\n // FIXME: _clearEvent is private\n content: this.props.mxEvent._clearEvent\n }, 'mx_Dialog_viewsource');\n this.closeMenu();\n },\n\n onRedactClick: function onRedactClick() {\n var _this = this;\n\n var ConfirmRedactDialog = _index2.default.getComponent(\"dialogs.ConfirmRedactDialog\");\n _Modal2.default.createTrackedDialog('Confirm Redact Dialog', '', ConfirmRedactDialog, {\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n var cli = _MatrixClientPeg2.default.get();\n cli.redactEvent(_this.props.mxEvent.getRoomId(), _this.props.mxEvent.getId()).catch(function (e) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n // display error message stating you couldn't delete this.\n var code = e.errcode || e.statusCode;\n _Modal2.default.createTrackedDialog('You cannot delete this message', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('You cannot delete this message. (%(code)s)', { code: code })\n });\n }).done();\n }\n }, 'mx_Dialog_confirmredact');\n this.closeMenu();\n },\n\n onCancelSendClick: function onCancelSendClick() {\n _Resend2.default.removeFromQueue(this.props.mxEvent);\n this.closeMenu();\n },\n\n onForwardClick: function onForwardClick() {\n _dispatcher2.default.dispatch({\n action: 'forward_event',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onPinClick: function onPinClick() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getStateEvent(this.props.mxEvent.getRoomId(), 'm.room.pinned_events', '').catch(function (e) {\n // Intercept the Event Not Found error and fall through the promise chain with no event.\n if (e.errcode === \"M_NOT_FOUND\") return null;\n throw e;\n }).then(function (event) {\n var eventIds = (event ? event.pinned : []) || [];\n if (!eventIds.includes(_this2.props.mxEvent.getId())) {\n // Not pinned - add\n eventIds.push(_this2.props.mxEvent.getId());\n } else {\n // Pinned - remove\n eventIds.splice(eventIds.indexOf(_this2.props.mxEvent.getId()), 1);\n }\n\n var cli = _MatrixClientPeg2.default.get();\n cli.sendStateEvent(_this2.props.mxEvent.getRoomId(), 'm.room.pinned_events', { pinned: eventIds }, '');\n });\n this.closeMenu();\n },\n\n closeMenu: function closeMenu() {\n if (this.props.onFinished) this.props.onFinished();\n },\n\n onUnhidePreviewClick: function onUnhidePreviewClick() {\n if (this.props.eventTileOps) {\n this.props.eventTileOps.unhideWidget();\n }\n this.closeMenu();\n },\n\n onQuoteClick: function onQuoteClick() {\n _dispatcher2.default.dispatch({\n action: 'quote',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onPermalinkClick: function onPermalinkClick(e) {\n e.preventDefault();\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room message dialog', '', ShareDialog, {\n target: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onReplyClick: function onReplyClick() {\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: this.props.mxEvent\n });\n this.closeMenu();\n },\n\n onCollapseReplyThreadClick: function onCollapseReplyThreadClick() {\n this.props.collapseReplyThread();\n this.closeMenu();\n },\n\n render: function render() {\n var eventStatus = this.props.mxEvent.status;\n var resendButton = void 0;\n var redactButton = void 0;\n var cancelButton = void 0;\n var forwardButton = void 0;\n var pinButton = void 0;\n var viewClearSourceButton = void 0;\n var unhidePreviewButton = void 0;\n var externalURLButton = void 0;\n var quoteButton = void 0;\n var replyButton = void 0;\n var collapseReplyThread = void 0;\n\n // status is SENT before remote-echo, null after\n var isSent = !eventStatus || eventStatus === _matrixJsSdk.EventStatus.SENT;\n\n if (eventStatus === _matrixJsSdk.EventStatus.NOT_SENT) {\n resendButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onResendClick },\n (0, _languageHandler._t)('Resend')\n );\n }\n\n if (isSent && this.state.canRedact) {\n redactButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onRedactClick },\n (0, _languageHandler._t)('Remove')\n );\n }\n\n if (eventStatus === _matrixJsSdk.EventStatus.QUEUED || eventStatus === _matrixJsSdk.EventStatus.NOT_SENT) {\n cancelButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onCancelSendClick },\n (0, _languageHandler._t)('Cancel Sending')\n );\n }\n\n if (isSent && this.props.mxEvent.getType() === 'm.room.message') {\n var content = this.props.mxEvent.getContent();\n if (content.msgtype && content.msgtype !== 'm.bad.encrypted' && content.hasOwnProperty('body')) {\n forwardButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onForwardClick },\n (0, _languageHandler._t)('Forward Message')\n );\n\n replyButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onReplyClick },\n (0, _languageHandler._t)('Reply')\n );\n\n if (this.state.canPin) {\n pinButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onPinClick },\n this._isPinned() ? (0, _languageHandler._t)('Unpin Message') : (0, _languageHandler._t)('Pin Message')\n );\n }\n }\n }\n\n var viewSourceButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onViewSourceClick },\n (0, _languageHandler._t)('View Source')\n );\n\n if (this.props.mxEvent.getType() !== this.props.mxEvent.getWireType()) {\n viewClearSourceButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onViewClearSourceClick },\n (0, _languageHandler._t)('View Decrypted Source')\n );\n }\n\n if (this.props.eventTileOps) {\n if (this.props.eventTileOps.isWidgetHidden()) {\n unhidePreviewButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onUnhidePreviewClick },\n (0, _languageHandler._t)('Unhide Preview')\n );\n }\n }\n\n // XXX: if we use room ID, we should also include a server where the event can be found (other than in the domain of the event ID)\n var permalinkButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field' },\n _react2.default.createElement(\n 'a',\n { href: (0, _matrixTo.makeEventPermalink)(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId()),\n target: '_blank', rel: 'noopener', onClick: this.onPermalinkClick },\n (0, _languageHandler._t)('Share Message')\n )\n );\n\n if (this.props.eventTileOps && this.props.eventTileOps.getInnerText) {\n quoteButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onQuoteClick },\n (0, _languageHandler._t)('Quote')\n );\n }\n\n // Bridges can provide a 'external_url' to link back to the source.\n if (typeof this.props.mxEvent.event.content.external_url === \"string\" && (0, _HtmlUtils.isUrlPermitted)(this.props.mxEvent.event.content.external_url)) {\n externalURLButton = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field' },\n _react2.default.createElement(\n 'a',\n { href: this.props.mxEvent.event.content.external_url,\n rel: 'noopener', target: '_blank', onClick: this.closeMenu },\n (0, _languageHandler._t)('Source URL')\n )\n );\n }\n\n if (this.props.collapseReplyThread) {\n collapseReplyThread = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageContextMenu_field', onClick: this.onCollapseReplyThreadClick },\n (0, _languageHandler._t)('Collapse Reply Thread')\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n resendButton,\n redactButton,\n cancelButton,\n forwardButton,\n pinButton,\n viewSourceButton,\n viewClearSourceButton,\n unhidePreviewButton,\n permalinkButton,\n quoteButton,\n replyButton,\n externalURLButton,\n collapseReplyThread\n );\n }\n});\n//# sourceMappingURL=MessageContextMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Rooms = require('../../../Rooms');\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _RoomNotifs = require('../../../RoomNotifs');\n\nvar RoomNotifs = _interopRequireWildcard(_RoomNotifs);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _RoomListActions = require('../../../actions/RoomListActions');\n\nvar _RoomListActions2 = _interopRequireDefault(_RoomListActions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTileContextMenu',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n var dmRoomMap = new _DMRoomMap2.default(_MatrixClientPeg2.default.get());\n return {\n roomNotifState: RoomNotifs.getRoomNotifsState(this.props.room.roomId),\n isFavourite: this.props.room.tags.hasOwnProperty(\"m.favourite\"),\n isLowPriority: this.props.room.tags.hasOwnProperty(\"m.lowpriority\"),\n isDirectMessage: Boolean(dmRoomMap.getUserIdForRoomId(this.props.room.roomId))\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _toggleTag: function _toggleTag(tagNameOn, tagNameOff) {\n var _this = this;\n\n if (!_MatrixClientPeg2.default.get().isGuest()) {\n _bluebird2.default.delay(500).then(function () {\n _dispatcher2.default.dispatch(_RoomListActions2.default.tagRoom(_MatrixClientPeg2.default.get(), _this.props.room, tagNameOff, tagNameOn, undefined, 0), true);\n\n _this.props.onFinished();\n });\n }\n },\n\n _onClickFavourite: function _onClickFavourite() {\n // Tag room as 'Favourite'\n if (!this.state.isFavourite && this.state.isLowPriority) {\n this.setState({\n isFavourite: true,\n isLowPriority: false\n });\n this._toggleTag(\"m.favourite\", \"m.lowpriority\");\n } else if (this.state.isFavourite) {\n this.setState({ isFavourite: false });\n this._toggleTag(null, \"m.favourite\");\n } else if (!this.state.isFavourite) {\n this.setState({ isFavourite: true });\n this._toggleTag(\"m.favourite\");\n }\n },\n\n _onClickLowPriority: function _onClickLowPriority() {\n // Tag room as 'Low Priority'\n if (!this.state.isLowPriority && this.state.isFavourite) {\n this.setState({\n isFavourite: false,\n isLowPriority: true\n });\n this._toggleTag(\"m.lowpriority\", \"m.favourite\");\n } else if (this.state.isLowPriority) {\n this.setState({ isLowPriority: false });\n this._toggleTag(null, \"m.lowpriority\");\n } else if (!this.state.isLowPriority) {\n this.setState({ isLowPriority: true });\n this._toggleTag(\"m.lowpriority\");\n }\n },\n\n _onClickDM: function _onClickDM() {\n var _this2 = this;\n\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var newIsDirectMessage = !this.state.isDirectMessage;\n this.setState({\n isDirectMessage: newIsDirectMessage\n });\n\n Rooms.guessAndSetDMRoom(this.props.room, newIsDirectMessage).delay(500).finally(function () {\n // Close the context menu\n if (_this2.props.onFinished) {\n _this2.props.onFinished();\n }\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to set Direct Message status of room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to set Direct Message status of room'),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n },\n\n _onClickLeave: function _onClickLeave() {\n // Leave room\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.room.roomId\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _onClickReject: function _onClickReject() {\n _dispatcher2.default.dispatch({\n action: 'reject_invite',\n room_id: this.props.room.roomId\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _onClickForget: function _onClickForget() {\n // FIXME: duplicated with RoomSettings (and dead code in RoomView)\n _MatrixClientPeg2.default.get().forget(this.props.room.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._td)(\"unknown error code\");\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to forget room %(errCode)s', { errCode: errCode }),\n description: err && err.message ? err.message : (0, _languageHandler._t)('Operation failed')\n });\n });\n\n // Close the context menu\n if (this.props.onFinished) {\n this.props.onFinished();\n }\n },\n\n _saveNotifState: function _saveNotifState(newState) {\n var _this3 = this;\n\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var oldState = this.state.roomNotifState;\n var roomId = this.props.room.roomId;\n\n this.setState({\n roomNotifState: newState\n });\n RoomNotifs.setRoomNotifsState(roomId, newState).done(function () {\n // delay slightly so that the user can see their state change\n // before closing the menu\n return _bluebird2.default.delay(500).then(function () {\n if (_this3._unmounted) return;\n // Close the context menu\n if (_this3.props.onFinished) {\n _this3.props.onFinished();\n }\n });\n }, function (error) {\n // TODO: some form of error notification to the user\n // to inform them that their state change failed.\n // For now we at least set the state back\n if (_this3._unmounted) return;\n _this3.setState({\n roomNotifState: oldState\n });\n });\n },\n\n _onClickAlertMe: function _onClickAlertMe() {\n this._saveNotifState(RoomNotifs.ALL_MESSAGES_LOUD);\n },\n\n _onClickAllNotifs: function _onClickAllNotifs() {\n this._saveNotifState(RoomNotifs.ALL_MESSAGES);\n },\n\n _onClickMentions: function _onClickMentions() {\n this._saveNotifState(RoomNotifs.MENTIONS_ONLY);\n },\n\n _onClickMute: function _onClickMute() {\n this._saveNotifState(RoomNotifs.MUTE);\n },\n\n _renderNotifMenu: function _renderNotifMenu() {\n var alertMeClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES_LOUD\n });\n\n var allNotifsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.ALL_MESSAGES\n });\n\n var mentionsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MENTIONS_ONLY\n });\n\n var muteNotifsClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_notif_field': true,\n 'mx_RoomTileContextMenu_notif_fieldSet': this.state.roomNotifState == RoomNotifs.MUTE\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_notif_picker' },\n _react2.default.createElement('img', { src: 'img/notif-slider.svg', width: '20', height: '107' })\n ),\n _react2.default.createElement(\n 'div',\n { className: alertMeClasses, onClick: this._onClickAlertMe },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-off-copy.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('All messages (noisy)')\n ),\n _react2.default.createElement(\n 'div',\n { className: allNotifsClasses, onClick: this._onClickAllNotifs },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-off.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('All messages')\n ),\n _react2.default.createElement(\n 'div',\n { className: mentionsClasses, onClick: this._onClickMentions },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute-mentions.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('Mentions only')\n ),\n _react2.default.createElement(\n 'div',\n { className: muteNotifsClasses, onClick: this._onClickMute },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_activeIcon', src: 'img/notif-active.svg', width: '12', height: '12' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_notif_icon mx_filterFlipColor', src: 'img/icon-context-mute.svg', width: '16', height: '12' }),\n (0, _languageHandler._t)('Mute')\n )\n );\n },\n\n _renderLeaveMenu: function _renderLeaveMenu(membership) {\n if (!membership) {\n return null;\n }\n\n var leaveClickHandler = null;\n var leaveText = null;\n\n switch (membership) {\n case \"join\":\n leaveClickHandler = this._onClickLeave;\n leaveText = (0, _languageHandler._t)('Leave');\n break;\n case \"leave\":\n case \"ban\":\n leaveClickHandler = this._onClickForget;\n leaveText = (0, _languageHandler._t)('Forget');\n break;\n case \"invite\":\n leaveClickHandler = this._onClickReject;\n leaveText = (0, _languageHandler._t)('Reject');\n break;\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTileContextMenu_leave', onClick: leaveClickHandler },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n leaveText\n )\n );\n },\n\n _renderRoomTagMenu: function _renderRoomTagMenu() {\n var favouriteClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isFavourite,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n var lowPriorityClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isLowPriority,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n var dmClasses = (0, _classnames2.default)({\n 'mx_RoomTileContextMenu_tag_field': true,\n 'mx_RoomTileContextMenu_tag_fieldSet': this.state.isDirectMessage,\n 'mx_RoomTileContextMenu_tag_fieldDisabled': false\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: favouriteClasses, onClick: this._onClickFavourite },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_fave.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_fave_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Favourite')\n ),\n _react2.default.createElement(\n 'div',\n { className: lowPriorityClasses, onClick: this._onClickLowPriority },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_low.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_low_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Low Priority')\n ),\n _react2.default.createElement(\n 'div',\n { className: dmClasses, onClick: this._onClickDM },\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon', src: 'img/icon_context_person.svg', width: '15', height: '15' }),\n _react2.default.createElement('img', { className: 'mx_RoomTileContextMenu_tag_icon_set', src: 'img/icon_context_person_on.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Direct Chat')\n )\n );\n },\n\n render: function render() {\n var myMembership = this.props.room.getMyMembership();\n\n // Can't set notif level or tags on non-join rooms\n if (myMembership !== 'join') {\n return this._renderLeaveMenu(myMembership);\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n this._renderNotifMenu(),\n _react2.default.createElement('hr', { className: 'mx_RoomTileContextMenu_separator' }),\n this._renderLeaveMenu(myMembership),\n _react2.default.createElement('hr', { className: 'mx_RoomTileContextMenu_separator' }),\n this._renderRoomTagMenu()\n );\n }\n});\n//# sourceMappingURL=RoomTileContextMenu.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _TagOrderActions = require('../../../actions/TagOrderActions');\n\nvar _TagOrderActions2 = _interopRequireDefault(_TagOrderActions);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagTileContextMenu = function (_React$Component) {\n (0, _inherits3.default)(TagTileContextMenu, _React$Component);\n\n function TagTileContextMenu() {\n (0, _classCallCheck3.default)(this, TagTileContextMenu);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (TagTileContextMenu.__proto__ || (0, _getPrototypeOf2.default)(TagTileContextMenu)).call(this));\n\n _this._onViewCommunityClick = _this._onViewCommunityClick.bind(_this);\n _this._onRemoveClick = _this._onRemoveClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(TagTileContextMenu, [{\n key: '_onViewCommunityClick',\n value: function _onViewCommunityClick() {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.tag\n });\n this.props.onFinished();\n }\n }, {\n key: '_onRemoveClick',\n value: function _onRemoveClick() {\n _dispatcher2.default.dispatch(_TagOrderActions2.default.removeTag(\n // XXX: Context menus don't have a MatrixClient context\n _MatrixClientPeg2.default.get(), this.props.tag));\n this.props.onFinished();\n }\n }, {\n key: 'render',\n value: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTileContextMenu_item', onClick: this._onViewCommunityClick },\n _react2.default.createElement(TintableSvg, {\n className: 'mx_TagTileContextMenu_item_icon',\n src: 'img/icons-groups.svg',\n width: '15',\n height: '15'\n }),\n (0, _languageHandler._t)('View Community')\n ),\n _react2.default.createElement('hr', { className: 'mx_TagTileContextMenu_separator' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_TagTileContextMenu_item', onClick: this._onRemoveClick },\n _react2.default.createElement('img', { className: 'mx_TagTileContextMenu_item_icon', src: 'img/icon_context_delete.svg', width: '15', height: '15' }),\n (0, _languageHandler._t)('Remove')\n )\n );\n }\n }]);\n return TagTileContextMenu;\n}(_react2.default.Component); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nTagTileContextMenu.propTypes = {\n tag: _propTypes2.default.string.isRequired,\n /* callback called when the menu is dismissed */\n onFinished: _propTypes2.default.func.isRequired\n};\nexports.default = TagTileContextMenu;\nmodule.exports = exports['default'];\n//# sourceMappingURL=TagTileContextMenu.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CreateRoomButton',\n propTypes: {\n onCreateRoom: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onCreateRoom: function onCreateRoom() {}\n };\n },\n\n onClick: function onClick() {\n this.props.onCreateRoom();\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'button',\n { className: 'mx_CreateRoomButton', onClick: this.onClick },\n (0, _languageHandler._t)(\"Create Room\")\n );\n }\n});\n//# sourceMappingURL=CreateRoomButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar Presets = {\n PrivateChat: \"private_chat\",\n PublicChat: \"public_chat\",\n Custom: \"custom\"\n};\n\nmodule.exports = React.createClass({\n displayName: 'CreateRoomPresets',\n propTypes: {\n onChange: _propTypes2.default.func,\n preset: _propTypes2.default.string\n },\n\n Presets: Presets,\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {}\n };\n },\n\n onValueChanged: function onValueChanged(ev) {\n this.props.onChange(ev.target.value);\n },\n\n render: function render() {\n return React.createElement(\n 'select',\n { className: 'mx_Presets', onChange: this.onValueChanged, value: this.props.preset },\n React.createElement(\n 'option',\n { value: this.Presets.PrivateChat },\n (0, _languageHandler._t)(\"Private Chat\")\n ),\n React.createElement(\n 'option',\n { value: this.Presets.PublicChat },\n (0, _languageHandler._t)(\"Public Chat\")\n ),\n React.createElement(\n 'option',\n { value: this.Presets.Custom },\n (0, _languageHandler._t)(\"Custom\")\n )\n );\n }\n});\n//# sourceMappingURL=Presets.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomAlias',\n propTypes: {\n // Specifying a homeserver will make magical things happen when you,\n // e.g. start typing in the room alias box.\n homeserver: _propTypes2.default.string,\n alias: _propTypes2.default.string,\n onChange: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {},\n alias: ''\n };\n },\n\n getAliasLocalpart: function getAliasLocalpart() {\n var room_alias = this.props.alias;\n\n if (room_alias && this.props.homeserver) {\n var suffix = \":\" + this.props.homeserver;\n if (room_alias.startsWith(\"#\") && room_alias.endsWith(suffix)) {\n room_alias = room_alias.slice(1, -suffix.length);\n }\n }\n\n return room_alias;\n },\n\n onValueChanged: function onValueChanged(ev) {\n this.props.onChange(ev.target.value);\n },\n\n onFocus: function onFocus(ev) {\n var target = ev.target;\n var curr_val = ev.target.value;\n\n if (this.props.homeserver) {\n if (curr_val == \"\") {\n var self = this;\n setTimeout(function () {\n target.value = \"#:\" + self.props.homeserver;\n target.setSelectionRange(1, 1);\n }, 0);\n } else {\n var suffix = \":\" + this.props.homeserver;\n setTimeout(function () {\n target.setSelectionRange(curr_val.startsWith(\"#\") ? 1 : 0, curr_val.endsWith(suffix) ? target.value.length - suffix.length : target.value.length);\n }, 0);\n }\n }\n },\n\n onBlur: function onBlur(ev) {\n var curr_val = ev.target.value;\n\n if (this.props.homeserver) {\n if (curr_val == \"#:\" + this.props.homeserver) {\n ev.target.value = \"\";\n return;\n }\n\n if (curr_val != \"\") {\n var new_val = ev.target.value;\n var suffix = \":\" + this.props.homeserver;\n if (!curr_val.startsWith(\"#\")) new_val = \"#\" + new_val;\n if (!curr_val.endsWith(suffix)) new_val = new_val + suffix;\n ev.target.value = new_val;\n }\n }\n },\n\n render: function render() {\n return React.createElement('input', { type: 'text', className: 'mx_RoomAlias', placeholder: (0, _languageHandler._t)(\"Alias (optional)\"),\n onChange: this.onValueChanged, onFocus: this.onFocus, onBlur: this.onBlur,\n value: this.props.alias });\n }\n});\n//# sourceMappingURL=RoomAlias.js.map","'use strict';\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _UserAddress = require('../../../UserAddress.js');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar TRUNCATE_QUERY_LIST = 40;\nvar QUERY_USER_DIRECTORY_DEBOUNCE_MS = 200;\n\nvar addressTypeName = {\n 'mx-user-id': (0, _languageHandler._td)(\"Matrix ID\"),\n 'mx-room-id': (0, _languageHandler._td)(\"Matrix Room ID\"),\n 'email': (0, _languageHandler._td)(\"email address\")\n};\n\nmodule.exports = _react2.default.createClass({\n displayName: \"AddressPickerDialog\",\n\n propTypes: {\n title: _propTypes2.default.string.isRequired,\n description: _propTypes2.default.node,\n // Extra node inserted after picker input, dropdown and errors\n extraNode: _propTypes2.default.node,\n value: _propTypes2.default.string,\n placeholder: _propTypes2.default.string,\n roomId: _propTypes2.default.string,\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n validAddressTypes: _propTypes2.default.arrayOf(_propTypes2.default.oneOf(_UserAddress.addressTypes)),\n onFinished: _propTypes2.default.func.isRequired,\n groupId: _propTypes2.default.string,\n // The type of entity to search for. Default: 'user'.\n pickerType: _propTypes2.default.oneOf(['user', 'room']),\n // Whether the current user should be included in the addresses returned. Only\n // applicable when pickerType is `user`. Default: false.\n includeSelf: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n value: \"\",\n focus: true,\n validAddressTypes: _UserAddress.addressTypes,\n pickerType: 'user',\n includeSelf: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n error: false,\n\n // List of UserAddressType objects representing\n // the list of addresses we're going to invite\n selectedList: [],\n\n // Whether a search is ongoing\n busy: false,\n // An error message generated during the user directory search\n searchError: null,\n // Whether the server supports the user_directory API\n serverSupportsUserDirectory: true,\n // The query being searched for\n query: \"\",\n // List of UserAddressType objects representing the set of\n // auto-completion results for the current search query.\n suggestedList: []\n };\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.focus) {\n // Set the cursor at the end of the text input\n this.refs.textinput.value = this.props.value;\n }\n },\n\n onButtonClick: function onButtonClick() {\n var selectedList = this.state.selectedList.slice();\n // Check the text input field to see if user has an unconverted address\n // If there is and it's valid add it to the local selectedList\n if (this.refs.textinput.value !== '') {\n selectedList = this._addInputToList();\n if (selectedList === null) return;\n }\n this.props.onFinished(true, selectedList);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 27) {\n // escape\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n } else if (e.keyCode === 38) {\n // up arrow\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.moveSelectionUp();\n } else if (e.keyCode === 40) {\n // down arrow\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.moveSelectionDown();\n } else if (this.state.suggestedList.length > 0 && (e.keyCode === 188 || e.keyCode === 13 || e.keyCode === 9)) {\n // comma or enter or tab\n e.stopPropagation();\n e.preventDefault();\n if (this.addressSelector) this.addressSelector.chooseSelection();\n } else if (this.refs.textinput.value.length === 0 && this.state.selectedList.length && e.keyCode === 8) {\n // backspace\n e.stopPropagation();\n e.preventDefault();\n this.onDismissed(this.state.selectedList.length - 1)();\n } else if (e.keyCode === 13) {\n // enter\n e.stopPropagation();\n e.preventDefault();\n if (this.refs.textinput.value === '') {\n // if there's nothing in the input box, submit the form\n this.onButtonClick();\n } else {\n this._addInputToList();\n }\n } else if (e.keyCode === 188 || e.keyCode === 9) {\n // comma or tab\n e.stopPropagation();\n e.preventDefault();\n this._addInputToList();\n }\n },\n\n onQueryChanged: function onQueryChanged(ev) {\n var _this = this;\n\n var query = ev.target.value;\n if (this.queryChangedDebouncer) {\n clearTimeout(this.queryChangedDebouncer);\n }\n // Only do search if there is something to search\n if (query.length > 0 && query !== '@' && query.length >= 2) {\n this.queryChangedDebouncer = setTimeout(function () {\n if (_this.props.pickerType === 'user') {\n if (_this.props.groupId) {\n _this._doNaiveGroupSearch(query);\n } else if (_this.state.serverSupportsUserDirectory) {\n _this._doUserDirectorySearch(query);\n } else {\n _this._doLocalSearch(query);\n }\n } else if (_this.props.pickerType === 'room') {\n if (_this.props.groupId) {\n _this._doNaiveGroupRoomSearch(query);\n } else {\n _this._doRoomSearch(query);\n }\n } else {\n console.error('Unknown pickerType', _this.props.pickerType);\n }\n }, QUERY_USER_DIRECTORY_DEBOUNCE_MS);\n } else {\n this.setState({\n suggestedList: [],\n query: \"\",\n searchError: null\n });\n }\n },\n\n onDismissed: function onDismissed(index) {\n var _this2 = this;\n\n return function () {\n var selectedList = _this2.state.selectedList.slice();\n selectedList.splice(index, 1);\n _this2.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (_this2._cancelThreepidLookup) _this2._cancelThreepidLookup();\n };\n },\n\n onClick: function onClick(index) {\n var _this3 = this;\n\n return function () {\n _this3.onSelected(index);\n };\n },\n\n onSelected: function onSelected(index) {\n var selectedList = this.state.selectedList.slice();\n selectedList.push(this.state.suggestedList[index]);\n this.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n },\n\n _doNaiveGroupSearch: function _doNaiveGroupSearch(query) {\n var _this4 = this;\n\n var lowerCaseQuery = query.toLowerCase();\n this.setState({\n busy: true,\n query: query,\n searchError: null\n });\n _MatrixClientPeg2.default.get().getGroupUsers(this.props.groupId).then(function (resp) {\n var results = [];\n resp.chunk.forEach(function (u) {\n var userIdMatch = u.user_id.toLowerCase().includes(lowerCaseQuery);\n var displayNameMatch = (u.displayname || '').toLowerCase().includes(lowerCaseQuery);\n if (!(userIdMatch || displayNameMatch)) {\n return;\n }\n results.push({\n user_id: u.user_id,\n avatar_url: u.avatar_url,\n display_name: u.displayname\n });\n });\n _this4._processResults(results, query);\n }).catch(function (err) {\n console.error('Error whilst searching group rooms: ', err);\n _this4.setState({\n searchError: err.errcode ? err.message : (0, _languageHandler._t)('Something went wrong!')\n });\n }).done(function () {\n _this4.setState({\n busy: false\n });\n });\n },\n\n _doNaiveGroupRoomSearch: function _doNaiveGroupRoomSearch(query) {\n var lowerCaseQuery = query.toLowerCase();\n var results = [];\n _GroupStore2.default.getGroupRooms(this.props.groupId).forEach(function (r) {\n var nameMatch = (r.name || '').toLowerCase().includes(lowerCaseQuery);\n var topicMatch = (r.topic || '').toLowerCase().includes(lowerCaseQuery);\n var aliasMatch = (r.canonical_alias || '').toLowerCase().includes(lowerCaseQuery);\n if (!(nameMatch || topicMatch || aliasMatch)) {\n return;\n }\n results.push({\n room_id: r.room_id,\n avatar_url: r.avatar_url,\n name: r.name || r.canonical_alias\n });\n });\n this._processResults(results, query);\n this.setState({\n busy: false\n });\n },\n\n _doRoomSearch: function _doRoomSearch(query) {\n var lowerCaseQuery = query.toLowerCase();\n var rooms = _MatrixClientPeg2.default.get().getRooms();\n var results = [];\n rooms.forEach(function (room) {\n var rank = Infinity;\n var nameEvent = room.currentState.getStateEvents('m.room.name', '');\n var name = nameEvent ? nameEvent.getContent().name : '';\n var canonicalAlias = room.getCanonicalAlias();\n var aliasEvents = room.currentState.getStateEvents('m.room.aliases');\n var aliases = aliasEvents.map(function (ev) {\n return ev.getContent().aliases;\n }).reduce(function (a, b) {\n return a.concat(b);\n }, []);\n\n var nameMatch = (name || '').toLowerCase().includes(lowerCaseQuery);\n var aliasMatch = false;\n var shortestMatchingAliasLength = Infinity;\n aliases.forEach(function (alias) {\n if ((alias || '').toLowerCase().includes(lowerCaseQuery)) {\n aliasMatch = true;\n if (shortestMatchingAliasLength > alias.length) {\n shortestMatchingAliasLength = alias.length;\n }\n }\n });\n\n if (!(nameMatch || aliasMatch)) {\n return;\n }\n\n if (aliasMatch) {\n // A shorter matching alias will give a better rank\n rank = shortestMatchingAliasLength;\n }\n\n var avatarEvent = room.currentState.getStateEvents('m.room.avatar', '');\n var avatarUrl = avatarEvent ? avatarEvent.getContent().url : undefined;\n\n results.push({\n rank: rank,\n room_id: room.roomId,\n avatar_url: avatarUrl,\n name: name || canonicalAlias || aliases[0] || (0, _languageHandler._t)('Unnamed Room')\n });\n });\n\n // Sort by rank ascending (a high rank being less relevant)\n var sortedResults = results.sort(function (a, b) {\n return a.rank - b.rank;\n });\n\n this._processResults(sortedResults, query);\n this.setState({\n busy: false\n });\n },\n\n _doUserDirectorySearch: function _doUserDirectorySearch(query) {\n var _this5 = this;\n\n this.setState({\n busy: true,\n query: query,\n searchError: null\n });\n _MatrixClientPeg2.default.get().searchUserDirectory({\n term: query\n }).then(function (resp) {\n // The query might have changed since we sent the request, so ignore\n // responses for anything other than the latest query.\n if (_this5.state.query !== query) {\n return;\n }\n _this5._processResults(resp.results, query);\n }).catch(function (err) {\n console.error('Error whilst searching user directory: ', err);\n _this5.setState({\n searchError: err.errcode ? err.message : (0, _languageHandler._t)('Something went wrong!')\n });\n if (err.errcode === 'M_UNRECOGNIZED') {\n _this5.setState({\n serverSupportsUserDirectory: false\n });\n // Do a local search immediately\n _this5._doLocalSearch(query);\n }\n }).done(function () {\n _this5.setState({\n busy: false\n });\n });\n },\n\n _doLocalSearch: function _doLocalSearch(query) {\n this.setState({\n query: query,\n searchError: null\n });\n var queryLowercase = query.toLowerCase();\n var results = [];\n _MatrixClientPeg2.default.get().getUsers().forEach(function (user) {\n if (user.userId.toLowerCase().indexOf(queryLowercase) === -1 && user.displayName.toLowerCase().indexOf(queryLowercase) === -1) {\n return;\n }\n\n // Put results in the format of the new API\n results.push({\n user_id: user.userId,\n display_name: user.displayName,\n avatar_url: user.avatarUrl\n });\n });\n this._processResults(results, query);\n },\n\n _processResults: function _processResults(results, query) {\n var _this6 = this;\n\n var suggestedList = [];\n results.forEach(function (result) {\n if (result.room_id) {\n suggestedList.push({\n addressType: 'mx-room-id',\n address: result.room_id,\n displayName: result.name,\n avatarMxc: result.avatar_url,\n isKnown: true\n });\n return;\n }\n if (!_this6.props.includeSelf && result.user_id === _MatrixClientPeg2.default.get().credentials.userId) {\n return;\n }\n\n // Return objects, structure of which is defined\n // by UserAddressType\n suggestedList.push({\n addressType: 'mx-user-id',\n address: result.user_id,\n displayName: result.display_name,\n avatarMxc: result.avatar_url,\n isKnown: true\n });\n });\n\n // If the query is a valid address, add an entry for that\n // This is important, otherwise there's no way to invite\n // a perfectly valid address if there are close matches.\n var addrType = (0, _UserAddress.getAddressType)(query);\n if (this.props.validAddressTypes.includes(addrType)) {\n suggestedList.unshift({\n addressType: addrType,\n address: query,\n isKnown: false\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n if (addrType === 'email') {\n this._lookupThreepid(addrType, query).done();\n }\n }\n this.setState({\n suggestedList: suggestedList,\n error: false\n }, function () {\n if (_this6.addressSelector) _this6.addressSelector.moveSelectionTop();\n });\n },\n\n _addInputToList: function _addInputToList() {\n var addressText = this.refs.textinput.value.trim();\n var addrType = (0, _UserAddress.getAddressType)(addressText);\n var addrObj = {\n addressType: addrType,\n address: addressText,\n isKnown: false\n };\n if (!this.props.validAddressTypes.includes(addrType)) {\n this.setState({ error: true });\n return null;\n } else if (addrType === 'mx-user-id') {\n var user = _MatrixClientPeg2.default.get().getUser(addrObj.address);\n if (user) {\n addrObj.displayName = user.displayName;\n addrObj.avatarMxc = user.avatarUrl;\n addrObj.isKnown = true;\n }\n } else if (addrType === 'mx-room-id') {\n var room = _MatrixClientPeg2.default.get().getRoom(addrObj.address);\n if (room) {\n addrObj.displayName = room.name;\n addrObj.avatarMxc = room.avatarUrl;\n addrObj.isKnown = true;\n }\n }\n\n var selectedList = this.state.selectedList.slice();\n selectedList.push(addrObj);\n this.setState({\n selectedList: selectedList,\n suggestedList: [],\n query: \"\"\n });\n if (this._cancelThreepidLookup) this._cancelThreepidLookup();\n return selectedList;\n },\n\n _lookupThreepid: function _lookupThreepid(medium, address) {\n var _this7 = this;\n\n var cancelled = false;\n // Note that we can't safely remove this after we're done\n // because we don't know that it's the same one, so we just\n // leave it: it's replacing the old one each time so it's\n // not like they leak.\n this._cancelThreepidLookup = function () {\n cancelled = true;\n };\n\n // wait a bit to let the user finish typing\n return _bluebird2.default.delay(500).then(function () {\n if (cancelled) return null;\n return _MatrixClientPeg2.default.get().lookupThreePid(medium, address);\n }).then(function (res) {\n if (res === null || !res.mxid) return null;\n if (cancelled) return null;\n\n return _MatrixClientPeg2.default.get().getProfileInfo(res.mxid);\n }).then(function (res) {\n if (res === null) return null;\n if (cancelled) return null;\n _this7.setState({\n suggestedList: [{\n // a UserAddressType\n addressType: medium,\n address: address,\n displayName: res.displayname,\n avatarMxc: res.avatar_url,\n isKnown: true\n }]\n });\n });\n },\n\n render: function render() {\n var _this8 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var AddressSelector = _index2.default.getComponent(\"elements.AddressSelector\");\n this.scrollElement = null;\n\n // map addressType => set of addresses to avoid O(n*m) operation\n var selectedAddresses = {};\n this.state.selectedList.forEach(function (_ref) {\n var address = _ref.address,\n addressType = _ref.addressType;\n\n if (!selectedAddresses[addressType]) selectedAddresses[addressType] = new _set2.default();\n selectedAddresses[addressType].add(address);\n });\n\n // Filter out any addresses in the above already selected addresses (matching both type and address)\n var filteredSuggestedList = this.state.suggestedList.filter(function (_ref2) {\n var address = _ref2.address,\n addressType = _ref2.addressType;\n\n return !(selectedAddresses[addressType] && selectedAddresses[addressType].has(address));\n });\n\n var query = [];\n // create the invite list\n if (this.state.selectedList.length > 0) {\n var AddressTile = _index2.default.getComponent(\"elements.AddressTile\");\n for (var i = 0; i < this.state.selectedList.length; i++) {\n query.push(_react2.default.createElement(AddressTile, {\n key: i,\n address: this.state.selectedList[i],\n canDismiss: true,\n onDismissed: this.onDismissed(i),\n showAddress: this.props.pickerType === 'user' }));\n }\n }\n\n // Add the query at the end\n query.push(_react2.default.createElement('textarea', { key: this.state.selectedList.length,\n rows: '1',\n id: 'textinput',\n ref: 'textinput',\n className: 'mx_ChatInviteDialog_input',\n onChange: this.onQueryChanged,\n placeholder: this.props.placeholder,\n defaultValue: this.props.value,\n autoFocus: this.props.focus }));\n\n var error = void 0;\n var addressSelector = void 0;\n if (this.state.error) {\n var validTypeDescriptions = this.props.validAddressTypes.map(function (t) {\n return (0, _languageHandler._t)(addressTypeName[t]);\n });\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n (0, _languageHandler._t)(\"You have entered an invalid address.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Try using one of the following valid address types: %(validTypesList)s.\", {\n validTypesList: validTypeDescriptions.join(\", \")\n })\n );\n } else if (this.state.searchError) {\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n this.state.searchError\n );\n } else if (this.state.query.length > 0 && filteredSuggestedList.length === 0 && !this.state.busy) {\n error = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_error' },\n (0, _languageHandler._t)(\"No results\")\n );\n } else {\n addressSelector = _react2.default.createElement(AddressSelector, { ref: function ref(_ref3) {\n _this8.addressSelector = _ref3;\n },\n addressList: filteredSuggestedList,\n showAddress: this.props.pickerType === 'user',\n onSelected: this.onSelected,\n truncateAt: TRUNCATE_QUERY_LIST\n });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ChatInviteDialog', onKeyDown: this.onKeyDown,\n onFinished: this.props.onFinished, title: this.props.title },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n this.props.description\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatInviteDialog_inputContainer' },\n query\n ),\n error,\n addressSelector,\n this.props.extraNode\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.button,\n onPrimaryButtonClick: this.onButtonClick,\n onCancel: this.onCancel })\n );\n }\n});\n//# sourceMappingURL=AddressPickerDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _focusTrapReact = require('focus-trap-react');\n\nvar _focusTrapReact2 = _interopRequireDefault(_focusTrapReact);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Basic container for modal dialogs.\n *\n * Includes a div for the title, and a keypress handler which cancels the\n * dialog on escape.\n */\nexports.default = _react2.default.createClass({\n displayName: 'BaseDialog',\n\n propTypes: {\n // onFinished callback to call when Escape is pressed\n // Take a boolean which is true if the dialog was dismissed\n // with a positive / confirm action or false if it was\n // cancelled (BaseDialog itself only calls this with false).\n onFinished: _propTypes2.default.func.isRequired,\n\n // Whether the dialog should have a 'close' button that will\n // cause the dialog to be cancelled. This should only be set\n // to false if there is nothing the app can sensibly do if the\n // dialog is cancelled, eg. \"We can't restore your session and\n // the app cannot work\". Default: true.\n hasCancel: _propTypes2.default.bool,\n\n // called when a key is pressed\n onKeyDown: _propTypes2.default.func,\n\n // CSS class to apply to dialog div\n className: _propTypes2.default.string,\n\n // Title for the dialog.\n // (could probably actually be something more complicated than a string if desired)\n title: _propTypes2.default.string.isRequired,\n\n // children should be the content of the dialog\n children: _propTypes2.default.node,\n\n // Id of content element\n // If provided, this is used to add a aria-describedby attribute\n contentId: _propTypes2.default.string,\n\n // optional additional class for the title element\n titleClass: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n hasCancel: true\n };\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._matrixClient = _MatrixClientPeg2.default.get();\n },\n\n\n _onKeyDown: function _onKeyDown(e) {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n if (this.props.hasCancel && e.keyCode === _Keyboard.KeyCode.ESCAPE) {\n e.stopPropagation();\n e.preventDefault();\n this.props.onFinished(false);\n }\n },\n\n _onCancelClick: function _onCancelClick(e) {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var cancelButton = void 0;\n if (this.props.hasCancel) {\n cancelButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onCancelClick, className: 'mx_Dialog_cancelButton' },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-close-button.svg', width: '35', height: '35' })\n );\n }\n\n return _react2.default.createElement(\n _focusTrapReact2.default,\n { onKeyDown: this._onKeyDown,\n className: this.props.className,\n role: 'dialog',\n 'aria-labelledby': 'mx_BaseDialog_title'\n // This should point to a node describing the dialog.\n // If we were about to completely follow this recommendation we'd need to\n // make all the components relying on BaseDialog to be aware of it.\n // So instead we will use the whole content as the description.\n // Description comes first and if the content contains more text,\n // AT users can skip its presentation.\n , 'aria-describedby': this.props.contentId\n },\n cancelButton,\n _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)('mx_Dialog_title', this.props.titleClass), id: 'mx_BaseDialog_title' },\n this.props.title\n ),\n this.props.children\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=BaseDialog.js.map","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar createFocusTrap = require('focus-trap');\n\nvar checkedProps = ['active', 'paused', 'tag', 'focusTrapOptions', '_createFocusTrap'];\n\nvar FocusTrap = function (_React$Component) {\n _inherits(FocusTrap, _React$Component);\n\n function FocusTrap(props) {\n _classCallCheck(this, FocusTrap);\n\n var _this = _possibleConstructorReturn(this, (FocusTrap.__proto__ || Object.getPrototypeOf(FocusTrap)).call(this, props));\n\n _this.setNode = function (el) {\n _this.node = el;\n };\n\n if (typeof document !== 'undefined') {\n _this.previouslyFocusedElement = document.activeElement;\n }\n return _this;\n }\n\n _createClass(FocusTrap, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // We need to hijack the returnFocusOnDeactivate option,\n // because React can move focus into the element before we arrived at\n // this lifecycle hook (e.g. with autoFocus inputs). So the component\n // captures the previouslyFocusedElement in componentWillMount,\n // then (optionally) returns focus to it in componentWillUnmount.\n var specifiedFocusTrapOptions = this.props.focusTrapOptions;\n var tailoredFocusTrapOptions = {\n returnFocusOnDeactivate: false\n };\n for (var optionName in specifiedFocusTrapOptions) {\n if (!specifiedFocusTrapOptions.hasOwnProperty(optionName)) continue;\n if (optionName === 'returnFocusOnDeactivate') continue;\n tailoredFocusTrapOptions[optionName] = specifiedFocusTrapOptions[optionName];\n }\n\n this.focusTrap = this.props._createFocusTrap(this.node, tailoredFocusTrapOptions);\n if (this.props.active) {\n this.focusTrap.activate();\n }\n if (this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.active && !this.props.active) {\n this.focusTrap.deactivate();\n } else if (!prevProps.active && this.props.active) {\n this.focusTrap.activate();\n }\n\n if (prevProps.paused && !this.props.paused) {\n this.focusTrap.unpause();\n } else if (!prevProps.paused && this.props.paused) {\n this.focusTrap.pause();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.focusTrap.deactivate();\n if (this.props.focusTrapOptions.returnFocusOnDeactivate !== false && this.previouslyFocusedElement && this.previouslyFocusedElement.focus) {\n this.previouslyFocusedElement.focus();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var elementProps = {\n ref: this.setNode\n };\n\n // This will get id, className, style, etc. -- arbitrary element props\n for (var prop in this.props) {\n if (!this.props.hasOwnProperty(prop)) continue;\n if (checkedProps.indexOf(prop) !== -1) continue;\n elementProps[prop] = this.props[prop];\n }\n\n return React.createElement(this.props.tag, elementProps, this.props.children);\n }\n }]);\n\n return FocusTrap;\n}(React.Component);\n\nFocusTrap.defaultProps = {\n active: true,\n tag: 'div',\n paused: false,\n focusTrapOptions: {},\n _createFocusTrap: createFocusTrap\n};\n\nmodule.exports = FocusTrap;","var tabbable = require('tabbable');\n\nvar listeningFocusTrap = null;\n\nfunction focusTrap(element, userOptions) {\n var tabbableNodes = [];\n var firstTabbableNode = null;\n var lastTabbableNode = null;\n var nodeFocusedBeforeActivation = null;\n var active = false;\n var paused = false;\n var tabEvent = null;\n\n var container = (typeof element === 'string')\n ? document.querySelector(element)\n : element;\n\n var config = userOptions || {};\n config.returnFocusOnDeactivate = (userOptions && userOptions.returnFocusOnDeactivate !== undefined)\n ? userOptions.returnFocusOnDeactivate\n : true;\n config.escapeDeactivates = (userOptions && userOptions.escapeDeactivates !== undefined)\n ? userOptions.escapeDeactivates\n : true;\n\n var trap = {\n activate: activate,\n deactivate: deactivate,\n pause: pause,\n unpause: unpause,\n };\n\n return trap;\n\n function activate(activateOptions) {\n if (active) return;\n\n var defaultedActivateOptions = {\n onActivate: (activateOptions && activateOptions.onActivate !== undefined)\n ? activateOptions.onActivate\n : config.onActivate,\n };\n\n active = true;\n paused = false;\n nodeFocusedBeforeActivation = document.activeElement;\n\n if (defaultedActivateOptions.onActivate) {\n defaultedActivateOptions.onActivate();\n }\n\n addListeners();\n return trap;\n }\n\n function deactivate(deactivateOptions) {\n if (!active) return;\n\n var defaultedDeactivateOptions = {\n returnFocus: (deactivateOptions && deactivateOptions.returnFocus !== undefined)\n ? deactivateOptions.returnFocus\n : config.returnFocusOnDeactivate,\n onDeactivate: (deactivateOptions && deactivateOptions.onDeactivate !== undefined)\n ? deactivateOptions.onDeactivate\n : config.onDeactivate,\n };\n\n removeListeners();\n\n if (defaultedDeactivateOptions.onDeactivate) {\n defaultedDeactivateOptions.onDeactivate();\n }\n\n if (defaultedDeactivateOptions.returnFocus) {\n setTimeout(function () {\n tryFocus(nodeFocusedBeforeActivation);\n }, 0);\n }\n\n active = false;\n paused = false;\n return this;\n }\n\n function pause() {\n if (paused || !active) return;\n paused = true;\n removeListeners();\n }\n\n function unpause() {\n if (!paused || !active) return;\n paused = false;\n addListeners();\n }\n\n function addListeners() {\n if (!active) return;\n\n // There can be only one listening focus trap at a time\n if (listeningFocusTrap) {\n listeningFocusTrap.pause();\n }\n listeningFocusTrap = trap;\n\n updateTabbableNodes();\n // Ensure that the focused element doesn't capture the event that caused the focus trap activation\n setTimeout(function () {\n tryFocus(firstFocusNode());\n }, 0);\n document.addEventListener('focus', checkFocus, true);\n document.addEventListener('click', checkClick, true);\n document.addEventListener('mousedown', checkPointerDown, true);\n document.addEventListener('touchstart', checkPointerDown, true);\n document.addEventListener('keydown', checkKey, true);\n\n return trap;\n }\n\n function removeListeners() {\n if (!active || listeningFocusTrap !== trap) return;\n\n document.removeEventListener('focus', checkFocus, true);\n document.removeEventListener('click', checkClick, true);\n document.removeEventListener('mousedown', checkPointerDown, true);\n document.removeEventListener('touchstart', checkPointerDown, true);\n document.removeEventListener('keydown', checkKey, true);\n\n listeningFocusTrap = null;\n\n return trap;\n }\n\n function getNodeForOption(optionName) {\n var optionValue = config[optionName];\n var node = optionValue;\n if (!optionValue) {\n return null;\n }\n if (typeof optionValue === 'string') {\n node = document.querySelector(optionValue);\n if (!node) {\n throw new Error('`' + optionName + '` refers to no known node');\n }\n }\n if (typeof optionValue === 'function') {\n node = optionValue();\n if (!node) {\n throw new Error('`' + optionName + '` did not return a node');\n }\n }\n return node;\n }\n\n function firstFocusNode() {\n var node;\n if (getNodeForOption('initialFocus') !== null) {\n node = getNodeForOption('initialFocus');\n } else if (container.contains(document.activeElement)) {\n node = document.activeElement;\n } else {\n node = tabbableNodes[0] || getNodeForOption('fallbackFocus');\n }\n\n if (!node) {\n throw new Error('You can\\'t have a focus-trap without at least one focusable element');\n }\n\n return node;\n }\n\n // This needs to be done on mousedown and touchstart instead of click\n // so that it precedes the focus event\n function checkPointerDown(e) {\n if (config.clickOutsideDeactivates && !container.contains(e.target)) {\n deactivate({ returnFocus: false });\n }\n }\n\n function checkClick(e) {\n if (config.clickOutsideDeactivates) return;\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n }\n\n function checkFocus(e) {\n if (container.contains(e.target)) return;\n e.preventDefault();\n e.stopImmediatePropagation();\n // Checking for a blur method here resolves a Firefox issue (#15)\n if (typeof e.target.blur === 'function') e.target.blur();\n\n if (tabEvent) {\n readjustFocus(tabEvent);\n }\n }\n\n function checkKey(e) {\n if (e.key === 'Tab' || e.keyCode === 9) {\n handleTab(e);\n }\n\n if (config.escapeDeactivates !== false && isEscapeEvent(e)) {\n deactivate();\n }\n }\n\n function handleTab(e) {\n updateTabbableNodes();\n\n if (e.target.hasAttribute('tabindex') && Number(e.target.getAttribute('tabindex')) < 0) {\n return tabEvent = e;\n }\n\n e.preventDefault();\n var currentFocusIndex = tabbableNodes.indexOf(e.target);\n\n if (e.shiftKey) {\n if (e.target === firstTabbableNode || tabbableNodes.indexOf(e.target) === -1) {\n return tryFocus(lastTabbableNode);\n }\n return tryFocus(tabbableNodes[currentFocusIndex - 1]);\n }\n\n if (e.target === lastTabbableNode) return tryFocus(firstTabbableNode);\n\n tryFocus(tabbableNodes[currentFocusIndex + 1]);\n }\n\n function updateTabbableNodes() {\n tabbableNodes = tabbable(container);\n firstTabbableNode = tabbableNodes[0];\n lastTabbableNode = tabbableNodes[tabbableNodes.length - 1];\n }\n\n function readjustFocus(e) {\n if (e.shiftKey) return tryFocus(lastTabbableNode);\n\n tryFocus(firstTabbableNode);\n }\n}\n\nfunction isEscapeEvent(e) {\n return e.key === 'Escape' || e.key === 'Esc' || e.keyCode === 27;\n}\n\nfunction tryFocus(node) {\n if (!node || !node.focus) return;\n if (node === document.activeElement) return;\n\n node.focus();\n if (node.tagName.toLowerCase() === 'input') {\n node.select();\n }\n}\n\nmodule.exports = focusTrap;\n","module.exports = function(el, options) {\n options = options || {};\n\n var elementDocument = el.ownerDocument || el;\n var basicTabbables = [];\n var orderedTabbables = [];\n\n // A node is \"available\" if\n // - it's computed style\n var isUnavailable = createIsUnavailable(elementDocument);\n\n var candidateSelectors = [\n 'input',\n 'select',\n 'a[href]',\n 'textarea',\n 'button',\n '[tabindex]',\n ];\n\n var candidates = el.querySelectorAll(candidateSelectors.join(','));\n\n if (options.includeContainer) {\n var matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n if (\n candidateSelectors.some(function(candidateSelector) {\n return matches.call(el, candidateSelector);\n })\n ) {\n candidates = Array.prototype.slice.apply(candidates);\n candidates.unshift(el);\n }\n }\n\n var candidate, candidateIndexAttr, candidateIndex;\n for (var i = 0, l = candidates.length; i < l; i++) {\n candidate = candidates[i];\n candidateIndexAttr = parseInt(candidate.getAttribute('tabindex'), 10)\n candidateIndex = isNaN(candidateIndexAttr) ? candidate.tabIndex : candidateIndexAttr;\n\n if (\n candidateIndex < 0\n || (candidate.tagName === 'INPUT' && candidate.type === 'hidden')\n || candidate.disabled\n || isUnavailable(candidate, elementDocument)\n ) {\n continue;\n }\n\n if (candidateIndex === 0) {\n basicTabbables.push(candidate);\n } else {\n orderedTabbables.push({\n index: i,\n tabIndex: candidateIndex,\n node: candidate,\n });\n }\n }\n\n var tabbableNodes = orderedTabbables\n .sort(function(a, b) {\n return a.tabIndex === b.tabIndex ? a.index - b.index : a.tabIndex - b.tabIndex;\n })\n .map(function(a) {\n return a.node\n });\n\n Array.prototype.push.apply(tabbableNodes, basicTabbables);\n\n return tabbableNodes;\n}\n\nfunction createIsUnavailable(elementDocument) {\n // Node cache must be refreshed on every check, in case\n // the content of the element has changed\n var isOffCache = [];\n\n // \"off\" means `display: none;`, as opposed to \"hidden\",\n // which means `visibility: hidden;`. getComputedStyle\n // accurately reflects visiblity in context but not\n // \"off\" state, so we need to recursively check parents.\n\n function isOff(node, nodeComputedStyle) {\n if (node === elementDocument.documentElement) return false;\n\n // Find the cached node (Array.prototype.find not available in IE9)\n for (var i = 0, length = isOffCache.length; i < length; i++) {\n if (isOffCache[i][0] === node) return isOffCache[i][1];\n }\n\n nodeComputedStyle = nodeComputedStyle || elementDocument.defaultView.getComputedStyle(node);\n\n var result = false;\n\n if (nodeComputedStyle.display === 'none') {\n result = true;\n } else if (node.parentNode) {\n result = isOff(node.parentNode);\n }\n\n isOffCache.push([node, result]);\n\n return result;\n }\n\n return function isUnavailable(node) {\n if (node === elementDocument.documentElement) return false;\n\n var computedStyle = elementDocument.defaultView.getComputedStyle(node);\n\n if (isOff(node, computedStyle)) return true;\n\n return computedStyle.visibility === 'hidden';\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BugReportDialog = function (_React$Component) {\n (0, _inherits3.default)(BugReportDialog, _React$Component);\n\n function BugReportDialog(props, context) {\n (0, _classCallCheck3.default)(this, BugReportDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (BugReportDialog.__proto__ || (0, _getPrototypeOf2.default)(BugReportDialog)).call(this, props, context));\n\n _this.state = {\n sendLogs: true,\n busy: false,\n err: null,\n issueUrl: \"\",\n text: \"\",\n progress: null\n };\n _this._unmounted = false;\n _this._onSubmit = _this._onSubmit.bind(_this);\n _this._onCancel = _this._onCancel.bind(_this);\n _this._onTextChange = _this._onTextChange.bind(_this);\n _this._onIssueUrlChange = _this._onIssueUrlChange.bind(_this);\n _this._onSendLogsChange = _this._onSendLogsChange.bind(_this);\n _this._sendProgressCallback = _this._sendProgressCallback.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(BugReportDialog, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onCancel',\n value: function _onCancel(ev) {\n this.props.onFinished(false);\n }\n }, {\n key: '_onSubmit',\n value: function _onSubmit(ev) {\n var _this2 = this;\n\n var userText = (this.state.text.length > 0 ? this.state.text + '\\n\\n' : '') + 'Issue: ' + (this.state.issueUrl.length > 0 ? this.state.issueUrl : 'No issue link given');\n\n this.setState({ busy: true, progress: null, err: null });\n this._sendProgressCallback((0, _languageHandler._t)(\"Preparing to send logs\"));\n\n require(['../../../rageshake/submit-rageshake'], function (s) {\n s(_SdkConfig2.default.get().bug_report_endpoint_url, {\n userText: userText,\n sendLogs: true,\n progressCallback: _this2._sendProgressCallback\n }).then(function () {\n if (!_this2._unmounted) {\n _this2.props.onFinished(false);\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n // N.B. first param is passed to piwik and so doesn't want i18n\n _Modal2.default.createTrackedDialog('Bug report sent', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Logs sent'),\n description: (0, _languageHandler._t)('Thank you!'),\n hasCancelButton: false\n });\n }\n }, function (err) {\n if (!_this2._unmounted) {\n _this2.setState({\n busy: false,\n progress: null,\n err: (0, _languageHandler._t)(\"Failed to send logs: \") + ('' + err.message)\n });\n }\n });\n });\n }\n }, {\n key: '_onTextChange',\n value: function _onTextChange(ev) {\n this.setState({ text: ev.target.value });\n }\n }, {\n key: '_onIssueUrlChange',\n value: function _onIssueUrlChange(ev) {\n this.setState({ issueUrl: ev.target.value });\n }\n }, {\n key: '_onSendLogsChange',\n value: function _onSendLogsChange(ev) {\n this.setState({ sendLogs: ev.target.checked });\n }\n }, {\n key: '_sendProgressCallback',\n value: function _sendProgressCallback(progress) {\n if (this._unmounted) {\n return;\n }\n this.setState({ progress: progress });\n }\n }, {\n key: 'render',\n value: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n var error = null;\n if (this.state.err) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.err\n );\n }\n\n var progress = null;\n if (this.state.busy) {\n progress = _react2.default.createElement(\n 'div',\n { className: 'progress' },\n _react2.default.createElement(Loader, null),\n this.state.progress,\n ' ...'\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_BugReportDialog', onFinished: this._onCancel,\n title: (0, _languageHandler._t)('Submit debug logs'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Debug logs contain application usage data including your \" + \"username, the IDs or aliases of the rooms or groups you \" + \"have visited and the usernames of other users. They do \" + \"not contain messages.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Before submitting logs, you must <a>create a GitHub issue</a> to describe your problem.\", {}, {\n a: function a(sub) {\n return _react2.default.createElement(\n 'a',\n {\n target: '_blank',\n href: 'https://github.com/vector-im/riot-web/issues/new'\n },\n sub\n );\n }\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_BugReportDialog_field_container' },\n _react2.default.createElement(\n 'label',\n {\n htmlFor: 'mx_BugReportDialog_issueUrl',\n className: 'mx_BugReportDialog_field_label'\n },\n (0, _languageHandler._t)(\"What GitHub issue are these logs for?\")\n ),\n _react2.default.createElement('input', {\n id: 'mx_BugReportDialog_issueUrl',\n type: 'text',\n className: 'mx_BugReportDialog_field_input',\n onChange: this._onIssueUrlChange,\n value: this.state.issueUrl,\n placeholder: 'https://github.com/vector-im/riot-web/issues/...'\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_BugReportDialog_field_container' },\n _react2.default.createElement(\n 'label',\n {\n htmlFor: 'mx_BugReportDialog_notes_label',\n className: 'mx_BugReportDialog_field_label'\n },\n (0, _languageHandler._t)(\"Notes:\")\n ),\n _react2.default.createElement('textarea', {\n className: 'mx_BugReportDialog_field_input',\n rows: 5,\n onChange: this._onTextChange,\n value: this.state.text\n })\n ),\n progress,\n error\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)(\"Send logs\"),\n onPrimaryButtonClick: this._onSubmit,\n focus: true,\n onCancel: this._onCancel,\n disabled: this.state.busy\n })\n );\n }\n }]);\n return BugReportDialog;\n}(_react2.default.Component); /*\n Copyright 2017 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = BugReportDialog;\n\n\nBugReportDialog.propTypes = {\n onFinished: _react2.default.PropTypes.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=BugReportDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _browserRequest = require('browser-request');\n\nvar _browserRequest2 = _interopRequireDefault(_browserRequest);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n Copyright 2016 Aviral Dasgupta\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar REPOS = ['vector-im/riot-web', 'matrix-org/matrix-react-sdk', 'matrix-org/matrix-js-sdk'];\n\nvar ChangelogDialog = function (_React$Component) {\n (0, _inherits3.default)(ChangelogDialog, _React$Component);\n\n function ChangelogDialog(props) {\n (0, _classCallCheck3.default)(this, ChangelogDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ChangelogDialog.__proto__ || (0, _getPrototypeOf2.default)(ChangelogDialog)).call(this, props));\n\n _this.state = {};\n return _this;\n }\n\n (0, _createClass3.default)(ChangelogDialog, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var version = this.props.newVersion.split('-');\n var version2 = this.props.version.split('-');\n if (version == null || version2 == null) return;\n // parse versions of form: [vectorversion]-react-[react-sdk-version]-js-[js-sdk-version]\n\n var _loop = function _loop(i) {\n var oldVersion = version2[2 * i];\n var newVersion = version[2 * i];\n (0, _browserRequest2.default)('https://api.github.com/repos/' + REPOS[i] + '/compare/' + oldVersion + '...' + newVersion, function (a, b, body) {\n if (body == null) return;\n _this2.setState((0, _defineProperty3.default)({}, REPOS[i], JSON.parse(body).commits));\n });\n };\n\n for (var i = 0; i < REPOS.length; i++) {\n _loop(i);\n }\n }\n }, {\n key: '_elementsForCommit',\n value: function _elementsForCommit(commit) {\n return _react2.default.createElement(\n 'li',\n { key: commit.sha, className: 'mx_ChangelogDialog_li' },\n _react2.default.createElement(\n 'a',\n { href: commit.html_url, target: '_blank', rel: 'noopener' },\n commit.commit.message\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n\n var logs = REPOS.map(function (repo) {\n if (_this3.state[repo] == null) return _react2.default.createElement(Spinner, { key: repo });\n return _react2.default.createElement(\n 'div',\n { key: repo },\n _react2.default.createElement(\n 'h2',\n null,\n repo\n ),\n _react2.default.createElement(\n 'ul',\n null,\n _this3.state[repo].map(_this3._elementsForCommit)\n )\n );\n });\n\n var content = _react2.default.createElement(\n 'div',\n { className: 'mx_ChangelogDialog_content' },\n this.props.version == null || this.props.newVersion == null ? _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Unavailable\")\n ) : logs\n );\n\n return _react2.default.createElement(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Changelog\"),\n description: content,\n button: (0, _languageHandler._t)(\"Update\"),\n onFinished: this.props.onFinished\n });\n }\n }]);\n return ChangelogDialog;\n}(_react2.default.Component);\n\nexports.default = ChangelogDialog;\n\n\nChangelogDialog.propTypes = {\n version: _react2.default.PropTypes.string.isRequired,\n newVersion: _react2.default.PropTypes.string.isRequired,\n onFinished: _react2.default.PropTypes.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ChangelogDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _Unread = require('../../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ChatCreateOrReuseDialog = function (_React$Component) {\n (0, _inherits3.default)(ChatCreateOrReuseDialog, _React$Component);\n\n function ChatCreateOrReuseDialog(props) {\n (0, _classCallCheck3.default)(this, ChatCreateOrReuseDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ChatCreateOrReuseDialog.__proto__ || (0, _getPrototypeOf2.default)(ChatCreateOrReuseDialog)).call(this, props));\n\n _this.onFinished = _this.onFinished.bind(_this);\n _this.onRoomTileClick = _this.onRoomTileClick.bind(_this);\n\n _this.state = {\n tiles: [],\n profile: {\n displayName: null,\n avatarUrl: null\n },\n profileError: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(ChatCreateOrReuseDialog, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n var client = _MatrixClientPeg2.default.get();\n\n var dmRoomMap = new _DMRoomMap2.default(client);\n var dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.userId);\n\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n\n var tiles = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(dmRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n var room = client.getRoom(roomId);\n if (room) {\n var isInvite = room.getMyMembership() === \"invite\";\n var highlight = room.getUnreadNotificationCount('highlight') > 0 || isInvite;\n tiles.push(_react2.default.createElement(RoomTile, { key: room.roomId, room: room,\n transparent: true,\n collapsed: false,\n selected: false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(room),\n highlight: highlight,\n isInvite: isInvite,\n onClick: this.onRoomTileClick\n }));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n tiles: tiles\n });\n\n if (tiles.length === 0) {\n this.setState({\n busyProfile: true\n });\n _MatrixClientPeg2.default.get().getProfileInfo(this.props.userId).done(function (resp) {\n var profile = {\n displayName: resp.displayname,\n avatarUrl: null\n };\n if (resp.avatar_url) {\n profile.avatarUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(resp.avatar_url, 48, 48, \"crop\");\n }\n _this2.setState({\n busyProfile: false,\n profile: profile\n });\n }, function (err) {\n console.error('Unable to get profile for user ' + _this2.props.userId + ':', err);\n _this2.setState({\n busyProfile: false,\n profileError: err\n });\n });\n }\n }\n }, {\n key: 'onRoomTileClick',\n value: function onRoomTileClick(roomId) {\n this.props.onExistingRoomSelected(roomId);\n }\n }, {\n key: 'onFinished',\n value: function onFinished() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var title = '';\n var content = null;\n if (this.state.tiles.length > 0) {\n // Show the existing rooms with a \"+\" to add a new dm\n title = (0, _languageHandler._t)('Create a new chat or reuse an existing one');\n var labelClasses = (0, _classnames2.default)({\n mx_MemberInfo_createRoom_label: true,\n mx_RoomTile_name: true\n });\n var startNewChat = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: 'mx_MemberInfo_createRoom',\n onClick: this.props.onNewDMClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n _react2.default.createElement('img', { src: 'img/create-big.svg', width: '26', height: '26' })\n ),\n _react2.default.createElement(\n 'div',\n { className: labelClasses },\n _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)(\"Start new chat\")\n )\n )\n );\n content = _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n (0, _languageHandler._t)('You already have existing direct chats with this user:'),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_tiles' },\n this.state.tiles,\n startNewChat\n )\n );\n } else {\n // Show the avatar, name and a button to confirm that a new chat is requested\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n title = (0, _languageHandler._t)('Start chatting');\n\n var profile = null;\n if (this.state.busyProfile) {\n profile = _react2.default.createElement(Spinner, null);\n } else if (this.state.profileError) {\n profile = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n 'Unable to load profile information for ',\n this.props.userId\n );\n } else {\n profile = _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_profile' },\n _react2.default.createElement(BaseAvatar, {\n name: this.state.profile.displayName || this.props.userId,\n url: this.state.profile.avatarUrl,\n width: 48, height: 48\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ChatCreateOrReuseDialog_profile_name' },\n this.state.profile.displayName || this.props.userId\n )\n );\n }\n content = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Click on the button below to start chatting!')\n ),\n profile\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Start Chatting'),\n onPrimaryButtonClick: this.props.onNewDMClick, focus: true })\n );\n }\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ChatCreateOrReuseDialog',\n onFinished: this.onFinished,\n title: title,\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n }]);\n return ChatCreateOrReuseDialog;\n}(_react2.default.Component); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ChatCreateOrReuseDialog;\n\n\nChatCreateOrReuseDialog.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n // Called when clicking outside of the dialog\n onFinished: _propTypes2.default.func.isRequired,\n onNewDMClick: _propTypes2.default.func.isRequired,\n onExistingRoomSelected: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=ChatCreateOrReuseDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * A dialog for confirming a redaction.\n */\nexports.default = _react2.default.createClass({\n displayName: 'ConfirmRedactDialog',\n\n render: function render() {\n var QuestionDialog = _index2.default.getComponent('views.dialogs.QuestionDialog');\n return _react2.default.createElement(QuestionDialog, { onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Confirm Removal\"),\n description: (0, _languageHandler._t)(\"Are you sure you wish to remove (delete) this event? \" + \"Note that if you delete a room name or topic change, it could undo the change.\"),\n button: (0, _languageHandler._t)(\"Remove\") });\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=ConfirmRedactDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _groups = require('../../../groups');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * A dialog for confirming an operation on another user.\n * Takes a user ID and a verb, displays the target user prominently\n * such that it should be easy to confirm that the operation is being\n * performed on the right person, and displays the operation prominently\n * to make it obvious what is going to happen.\n * Also tweaks the style for 'dangerous' actions (albeit only with colour)\n */\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'ConfirmUserActionDialog',\n propTypes: {\n // matrix-js-sdk (room) member object. Supply either this or 'groupMember'\n member: _propTypes2.default.object,\n // group member object. Supply either this or 'member'\n groupMember: _groups.GroupMemberType,\n // needed if a group member is specified\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient),\n action: _propTypes2.default.string.isRequired, // eg. 'Ban'\n title: _propTypes2.default.string.isRequired, // eg. 'Ban this user?'\n\n // Whether to display a text field for a reason\n // If true, the second argument to onFinished will\n // be the string entered.\n askReason: _propTypes2.default.bool,\n danger: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n defaultProps: {\n danger: false,\n askReason: false\n },\n\n componentWillMount: function componentWillMount() {\n this._reasonField = null;\n },\n\n onOk: function onOk() {\n var reason = void 0;\n if (this._reasonField) {\n reason = this._reasonField.value;\n }\n this.props.onFinished(true, reason);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n _collectReasonField: function _collectReasonField(e) {\n this._reasonField = e;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var MemberAvatar = _index2.default.getComponent(\"views.avatars.MemberAvatar\");\n var BaseAvatar = _index2.default.getComponent(\"views.avatars.BaseAvatar\");\n\n var confirmButtonClass = this.props.danger ? 'danger' : '';\n\n var reasonBox = void 0;\n if (this.props.askReason) {\n reasonBox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement('input', { className: 'mx_ConfirmUserActionDialog_reasonField',\n ref: this._collectReasonField,\n placeholder: (0, _languageHandler._t)(\"Reason\"),\n autoFocus: true\n })\n )\n );\n }\n\n var avatar = void 0;\n var name = void 0;\n var userId = void 0;\n if (this.props.member) {\n avatar = _react2.default.createElement(MemberAvatar, { member: this.props.member, width: 48, height: 48 });\n name = this.props.member.name;\n userId = this.props.member.userId;\n } else {\n var httpAvatarUrl = this.props.groupMember.avatarUrl ? this.props.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl, 48, 48) : null;\n name = this.props.groupMember.displayname || this.props.groupMember.userId;\n userId = this.props.groupMember.userId;\n avatar = _react2.default.createElement(BaseAvatar, { name: name, url: httpAvatarUrl, width: 48, height: 48 });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ConfirmUserActionDialog', onFinished: this.props.onFinished,\n title: this.props.title,\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content', className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_avatar' },\n avatar\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_name' },\n name\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ConfirmUserActionDialog_userId' },\n userId\n )\n ),\n reasonBox,\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.action,\n onPrimaryButtonClick: this.onOk,\n primaryButtonClass: confirmButtonClass,\n focus: !this.props.askReason,\n onCancel: this.onCancel })\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ConfirmUserActionDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'CreateGroupDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n groupName: '',\n groupId: '',\n groupError: null,\n creating: false,\n createError: null\n };\n },\n\n _onGroupNameChange: function _onGroupNameChange(e) {\n this.setState({\n groupName: e.target.value\n });\n },\n\n _onGroupIdChange: function _onGroupIdChange(e) {\n this.setState({\n groupId: e.target.value\n });\n },\n\n _onGroupIdBlur: function _onGroupIdBlur(e) {\n this._checkGroupId();\n },\n\n _checkGroupId: function _checkGroupId(e) {\n var error = null;\n if (!this.state.groupId) {\n error = (0, _languageHandler._t)(\"Community IDs cannot be empty.\");\n } else if (!/^[a-z0-9=_\\-\\.\\/]*$/.test(this.state.groupId)) {\n error = (0, _languageHandler._t)(\"Community IDs may only contain characters a-z, 0-9, or '=_-./'\");\n }\n this.setState({\n groupIdError: error,\n // Reset createError to get rid of now stale error message\n createError: null\n });\n return error;\n },\n\n _onFormSubmit: function _onFormSubmit(e) {\n var _this = this;\n\n e.preventDefault();\n\n if (this._checkGroupId()) return;\n\n var profile = {};\n if (this.state.groupName !== '') {\n profile.name = this.state.groupName;\n }\n this.setState({ creating: true });\n _MatrixClientPeg2.default.get().createGroup({\n localpart: this.state.groupId,\n profile: profile\n }).then(function (result) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: result.group_id,\n group_is_new: true\n });\n _this.props.onFinished(true);\n }).catch(function (e) {\n _this.setState({ createError: e });\n }).finally(function () {\n _this.setState({ creating: false });\n }).done();\n },\n\n _onCancel: function _onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n\n if (this.state.creating) {\n return _react2.default.createElement(Spinner, null);\n }\n\n var createErrorNode = void 0;\n if (this.state.createError) {\n // XXX: We should catch errcodes and give sensible i18ned messages for them,\n // rather than displaying what the server gives us, but synapse doesn't give\n // any yet.\n createErrorNode = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Something went wrong whilst creating your community')\n ),\n _react2.default.createElement(\n 'div',\n null,\n this.state.createError.message\n )\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CreateGroupDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Create Community')\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'groupname' },\n (0, _languageHandler._t)('Community Name')\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { id: 'groupname', className: 'mx_CreateGroupDialog_input',\n autoFocus: true, size: '64',\n placeholder: (0, _languageHandler._t)('Example'),\n onChange: this._onGroupNameChange,\n value: this.state.groupName\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'groupid' },\n (0, _languageHandler._t)('Community ID')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateGroupDialog_input_group' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_CreateGroupDialog_prefix' },\n '+'\n ),\n _react2.default.createElement('input', { id: 'groupid',\n className: 'mx_CreateGroupDialog_input mx_CreateGroupDialog_input_hasPrefixAndSuffix',\n size: '32',\n placeholder: (0, _languageHandler._t)('example'),\n onChange: this._onGroupIdChange,\n onBlur: this._onGroupIdBlur,\n value: this.state.groupId\n }),\n _react2.default.createElement(\n 'span',\n { className: 'mx_CreateGroupDialog_suffix' },\n ':',\n _MatrixClientPeg2.default.get().getDomain()\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.groupIdError\n ),\n createErrorNode\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { type: 'submit', value: (0, _languageHandler._t)('Create'), className: 'mx_Dialog_primary' }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancel },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateGroupDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'CreateRoomDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n var config = _SdkConfig2.default.get();\n // Dialog shows inverse of m.federate (noFederate) strict false check to skip undefined check (default = true)\n this.defaultNoFederate = config.default_federate === false;\n },\n\n onOk: function onOk() {\n this.props.onFinished(true, this.refs.textinput.value, this.refs.checkbox.checked);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_CreateRoomDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Create Room')\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoomDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n ' ',\n (0, _languageHandler._t)('Room name (optional)'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateRoomDialog_input_container' },\n _react2.default.createElement('input', { id: 'textinput', ref: 'textinput', className: 'mx_CreateRoomDialog_input', autoFocus: true })\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'details',\n { className: 'mx_CreateRoomDialog_details' },\n _react2.default.createElement(\n 'summary',\n { className: 'mx_CreateRoomDialog_details_summary' },\n (0, _languageHandler._t)('Advanced options')\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox', id: 'checkbox', ref: 'checkbox', defaultChecked: this.defaultNoFederate }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'checkbox' },\n (0, _languageHandler._t)('Block users on other matrix homeservers from joining this room'),\n _react2.default.createElement('br', null),\n '(',\n (0, _languageHandler._t)('This setting cannot be changed later!'),\n ')'\n )\n )\n )\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: (0, _languageHandler._t)('Create Room'),\n onPrimaryButtonClick: this.onOk,\n onCancel: this.onCancel })\n );\n }\n}); /*\n Copyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateRoomDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Lifecycle = require('../../../Lifecycle');\n\nvar Lifecycle = _interopRequireWildcard(_Lifecycle);\n\nvar _velocityVector = require('velocity-vector');\n\nvar _velocityVector2 = _interopRequireDefault(_velocityVector);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DeactivateAccountDialog = function (_React$Component) {\n (0, _inherits3.default)(DeactivateAccountDialog, _React$Component);\n\n function DeactivateAccountDialog(props, context) {\n (0, _classCallCheck3.default)(this, DeactivateAccountDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DeactivateAccountDialog.__proto__ || (0, _getPrototypeOf2.default)(DeactivateAccountDialog)).call(this, props, context));\n\n _this._passwordField = null;\n\n _this._onOk = _this._onOk.bind(_this);\n _this._onCancel = _this._onCancel.bind(_this);\n _this._onPasswordFieldChange = _this._onPasswordFieldChange.bind(_this);\n _this._onEraseFieldChange = _this._onEraseFieldChange.bind(_this);\n\n var deactivationPreferences = _MatrixClientPeg2.default.get().getAccountData('im.riot.account_deactivation_preferences');\n\n var shouldErase = deactivationPreferences && deactivationPreferences.getContent() && deactivationPreferences.getContent().shouldErase || false;\n\n _this.state = {\n confirmButtonEnabled: false,\n busy: false,\n shouldErase: shouldErase,\n errStr: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(DeactivateAccountDialog, [{\n key: '_onPasswordFieldChange',\n value: function _onPasswordFieldChange(ev) {\n this.setState({\n confirmButtonEnabled: Boolean(ev.target.value)\n });\n }\n }, {\n key: '_onEraseFieldChange',\n value: function _onEraseFieldChange(ev) {\n this.setState({\n shouldErase: ev.target.checked\n });\n }\n }, {\n key: '_onOk',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var auth, errStr;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n this.setState({ busy: true });\n\n // Before we deactivate the account insert an event into\n // the user's account data indicating that they wish to be\n // erased from the homeserver.\n //\n // We do this because the API for erasing after deactivation\n // might not be supported by the connected homeserver. Leaving\n // an indication in account data is only best-effort, and\n // in the worse case, the HS maintainer would have to run a\n // script to erase deactivated accounts that have shouldErase\n // set to true in im.riot.account_deactivation_preferences.\n //\n // Note: The preferences are scoped to Riot, hence the\n // \"im.riot...\" event type.\n //\n // Note: This may have already been set on previous attempts\n // where, for example, the user entered the wrong password.\n // This is fine because the UI always indicates the preference\n // prior to us calling `deactivateAccount`.\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().setAccountData('im.riot.account_deactivation_preferences', {\n shouldErase: this.state.shouldErase\n }));\n\n case 4:\n _context.next = 10;\n break;\n\n case 6:\n _context.prev = 6;\n _context.t0 = _context['catch'](1);\n\n this.setState({\n busy: false,\n errStr: (0, _languageHandler._t)('Failed to indicate account erasure')\n });\n return _context.abrupt('return');\n\n case 10:\n _context.prev = 10;\n\n // This assumes that the HS requires password UI auth\n // for this endpoint. In reality it could be any UI auth.\n auth = {\n type: 'm.login.password',\n user: _MatrixClientPeg2.default.get().credentials.userId,\n password: this._passwordField.value\n };\n _context.next = 14;\n return (0, _bluebird.resolve)(_MatrixClientPeg2.default.get().deactivateAccount(auth, this.state.shouldErase));\n\n case 14:\n _context.next = 22;\n break;\n\n case 16:\n _context.prev = 16;\n _context.t1 = _context['catch'](10);\n errStr = (0, _languageHandler._t)('Unknown error');\n // https://matrix.org/jira/browse/SYN-744\n\n if (_context.t1.httpStatus == 401 || _context.t1.httpStatus == 403) {\n errStr = (0, _languageHandler._t)('Incorrect password');\n (0, _velocityVector2.default)(this._passwordField, \"callout.shake\", 300);\n }\n this.setState({\n busy: false,\n errStr: errStr\n });\n return _context.abrupt('return');\n\n case 22:\n\n _Analytics2.default.trackEvent('Account', 'Deactivate Account');\n Lifecycle.onLoggedOut();\n this.props.onFinished(false);\n\n case 25:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 6], [10, 16]]);\n }));\n\n function _onOk() {\n return _ref.apply(this, arguments);\n }\n\n return _onOk;\n }()\n }, {\n key: '_onCancel',\n value: function _onCancel() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n var passwordBoxClass = '';\n\n var error = null;\n if (this.state.errStr) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n );\n passwordBoxClass = 'error';\n }\n\n var okLabel = this.state.busy ? _react2.default.createElement(Loader, null) : (0, _languageHandler._t)('Deactivate Account');\n var okEnabled = this.state.confirmButtonEnabled && !this.state.busy;\n\n var cancelButton = null;\n if (!this.state.busy) {\n cancelButton = _react2.default.createElement(\n 'button',\n { onClick: this._onCancel, autoFocus: true },\n (0, _languageHandler._t)(\"Cancel\")\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_DeactivateAccountDialog',\n onFinished: this.props.onFinished,\n onEnterPressed: this.onOk,\n titleClass: 'danger',\n title: (0, _languageHandler._t)(\"Deactivate Account\")\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"This will make your account permanently unusable. \" + \"You will not be able to log in, and no one will be able to re-register the same \" + \"user ID. \" + \"This will cause your account to leave all rooms it is participating in, and it \" + \"will remove your account details from your identity server. \" + \"<b>This action is irreversible.</b>\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Deactivating your account <b>does not by default cause us to forget messages you \" + \"have sent.</b> \" + \"If you would like us to forget your messages, please tick the box below.\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n ' ',\n sub,\n ' '\n );\n } })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Message visibility in Matrix is similar to email. \" + \"Our forgetting your messages means that messages you have sent will not be shared \" + \"with any new or unregistered users, but registered users who already have access \" + \"to these messages will still have access to their copy.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DeactivateAccountDialog_input_section' },\n _react2.default.createElement(\n 'p',\n null,\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_DeactivateAccountDialog_erase_account_input' },\n _react2.default.createElement('input', {\n id: 'mx_DeactivateAccountDialog_erase_account_input',\n type: 'checkbox',\n checked: this.state.shouldErase,\n onChange: this._onEraseFieldChange\n }),\n (0, _languageHandler._t)(\"Please forget all messages I have sent when my account is deactivated \" + \"(<b>Warning:</b> this will cause future users to see an incomplete view \" + \"of conversations)\", {}, { b: function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n } })\n )\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To continue, please enter your password:\")\n ),\n _react2.default.createElement('input', {\n type: 'password',\n placeholder: (0, _languageHandler._t)(\"password\"),\n onChange: this._onPasswordFieldChange,\n ref: function ref(e) {\n _this2._passwordField = e;\n },\n className: passwordBoxClass\n })\n ),\n error\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n {\n className: 'mx_Dialog_primary danger',\n onClick: this._onOk,\n disabled: !okEnabled\n },\n okLabel\n ),\n cancelButton\n )\n );\n }\n }]);\n return DeactivateAccountDialog;\n}(_react2.default.Component);\n\nexports.default = DeactivateAccountDialog;\n\n\nDeactivateAccountDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeactivateAccountDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = DeviceVerifyDialog;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _FormattingUtils = require('../../../utils/FormattingUtils');\n\nvar FormattingUtils = _interopRequireWildcard(_FormattingUtils);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction DeviceVerifyDialog(props) {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n var key = FormattingUtils.formatCryptoKey(props.device.getFingerprint());\n var body = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"To verify that this device can be trusted, please contact its \" + \"owner using some other means (e.g. in person or a phone call) \" + \"and ask them whether the key they see in their User Settings \" + \"for this device matches the key below:\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_cryptoSection' },\n _react2.default.createElement(\n 'ul',\n null,\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device name\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n props.device.getDisplayName()\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device ID\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n props.device.deviceId\n )\n )\n ),\n _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(\"Device key\"),\n ':'\n ),\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'code',\n null,\n _react2.default.createElement(\n 'b',\n null,\n key\n )\n )\n )\n )\n )\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If it matches, press the verify button below. \" + \"If it doesn't, then someone else is intercepting this device \" + \"and you probably want to press the blacklist button instead.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"In future this verification process will be more sophisticated.\")\n )\n );\n\n function onFinished(confirm) {\n if (confirm) {\n _MatrixClientPeg2.default.get().setDeviceVerified(props.userId, props.device.deviceId, true);\n }\n props.onFinished(confirm);\n }\n\n return _react2.default.createElement(QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verify device\"),\n description: body,\n button: (0, _languageHandler._t)(\"I verify that the keys match\"),\n onFinished: onFinished\n });\n}\n\nDeviceVerifyDialog.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeviceVerifyDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SyntaxHighlight = require('../elements/SyntaxHighlight');\n\nvar _SyntaxHighlight2 = _interopRequireDefault(_SyntaxHighlight);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DevtoolsComponent = function (_React$Component) {\n (0, _inherits3.default)(DevtoolsComponent, _React$Component);\n\n function DevtoolsComponent() {\n (0, _classCallCheck3.default)(this, DevtoolsComponent);\n return (0, _possibleConstructorReturn3.default)(this, (DevtoolsComponent.__proto__ || (0, _getPrototypeOf2.default)(DevtoolsComponent)).apply(this, arguments));\n }\n\n return DevtoolsComponent;\n}(_react2.default.Component);\n\nDevtoolsComponent.contextTypes = {\n roomId: _propTypes2.default.string.isRequired\n};\n\nvar GenericEditor = function (_DevtoolsComponent) {\n (0, _inherits3.default)(GenericEditor, _DevtoolsComponent);\n\n // static propTypes = {onBack: PropTypes.func.isRequired};\n\n function GenericEditor(props, context) {\n (0, _classCallCheck3.default)(this, GenericEditor);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (GenericEditor.__proto__ || (0, _getPrototypeOf2.default)(GenericEditor)).call(this, props, context));\n\n _this2._onChange = _this2._onChange.bind(_this2);\n _this2.onBack = _this2.onBack.bind(_this2);\n return _this2;\n }\n\n (0, _createClass3.default)(GenericEditor, [{\n key: 'onBack',\n value: function onBack() {\n if (this.state.message) {\n this.setState({ message: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(e) {\n this.setState((0, _defineProperty3.default)({}, e.target.id, e.target.type === 'checkbox' ? e.target.checked : e.target.value));\n }\n }, {\n key: '_buttons',\n value: function _buttons() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n )\n );\n }\n }, {\n key: 'textInput',\n value: function textInput(id, label) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: id },\n label\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputCell' },\n _react2.default.createElement('input', { id: id, className: 'mx_TextInputDialog_input', onChange: this._onChange, value: this.state[id], size: '32', autoFocus: true })\n )\n );\n }\n }]);\n return GenericEditor;\n}(DevtoolsComponent);\n\nvar SendCustomEvent = function (_GenericEditor) {\n (0, _inherits3.default)(SendCustomEvent, _GenericEditor);\n (0, _createClass3.default)(SendCustomEvent, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Send Custom Event');\n }\n }]);\n\n function SendCustomEvent(props, context) {\n (0, _classCallCheck3.default)(this, SendCustomEvent);\n\n var _this3 = (0, _possibleConstructorReturn3.default)(this, (SendCustomEvent.__proto__ || (0, _getPrototypeOf2.default)(SendCustomEvent)).call(this, props, context));\n\n _this3._send = _this3._send.bind(_this3);\n\n var _Object$assign = (0, _assign2.default)({\n eventType: '',\n stateKey: '',\n evContent: '{\\n\\n}'\n }, _this3.props.inputs),\n eventType = _Object$assign.eventType,\n stateKey = _Object$assign.stateKey,\n evContent = _Object$assign.evContent;\n\n _this3.state = {\n isStateEvent: Boolean(_this3.props.forceStateEvent),\n\n eventType: eventType,\n stateKey: stateKey,\n evContent: evContent\n };\n return _this3;\n }\n\n (0, _createClass3.default)(SendCustomEvent, [{\n key: 'send',\n value: function send(content) {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isStateEvent) {\n return cli.sendStateEvent(this.context.roomId, this.state.eventType, content, this.state.stateKey);\n } else {\n return cli.sendEvent(this.context.roomId, this.state.eventType, content);\n }\n }\n }, {\n key: '_send',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var message, content;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(this.state.eventType === '')) {\n _context.next = 3;\n break;\n }\n\n this.setState({ message: (0, _languageHandler._t)('You must specify an event type!') });\n return _context.abrupt('return');\n\n case 3:\n message = void 0;\n _context.prev = 4;\n content = JSON.parse(this.state.evContent);\n _context.next = 8;\n return (0, _bluebird.resolve)(this.send(content));\n\n case 8:\n message = (0, _languageHandler._t)('Event sent!');\n _context.next = 14;\n break;\n\n case 11:\n _context.prev = 11;\n _context.t0 = _context['catch'](4);\n\n message = (0, _languageHandler._t)('Failed to send custom event.') + ' (' + _context.t0.toString() + ')';\n\n case 14:\n this.setState({ message: message });\n\n case 15:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[4, 11]]);\n }));\n\n function _send() {\n return _ref.apply(this, arguments);\n }\n\n return _send;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.message) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n this.state.message\n ),\n this._buttons()\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n this.textInput('eventType', (0, _languageHandler._t)('Event Type')),\n this.state.isStateEvent && this.textInput('stateKey', (0, _languageHandler._t)('State Key')),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'evContent' },\n ' ',\n (0, _languageHandler._t)('Event Content'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('textarea', { id: 'evContent', onChange: this._onChange, value: this.state.evContent, className: 'mx_DevTools_textarea' })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n ),\n !this.state.message && !this.props.forceStateEvent && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isStateEvent', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isStateEvent }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Event', 'data-tg-on': 'State Event', htmlFor: 'isStateEvent' })\n )\n )\n );\n }\n }]);\n return SendCustomEvent;\n}(GenericEditor);\n\nSendCustomEvent.propTypes = {\n onBack: _propTypes2.default.func.isRequired,\n forceStateEvent: _propTypes2.default.bool,\n inputs: _propTypes2.default.object\n};\n\nvar SendAccountData = function (_GenericEditor2) {\n (0, _inherits3.default)(SendAccountData, _GenericEditor2);\n (0, _createClass3.default)(SendAccountData, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Send Account Data');\n }\n }]);\n\n function SendAccountData(props, context) {\n (0, _classCallCheck3.default)(this, SendAccountData);\n\n var _this4 = (0, _possibleConstructorReturn3.default)(this, (SendAccountData.__proto__ || (0, _getPrototypeOf2.default)(SendAccountData)).call(this, props, context));\n\n _this4._send = _this4._send.bind(_this4);\n\n var _Object$assign3 = (0, _assign2.default)({\n eventType: '',\n evContent: '{\\n\\n}'\n }, _this4.props.inputs),\n eventType = _Object$assign3.eventType,\n evContent = _Object$assign3.evContent;\n\n _this4.state = {\n isRoomAccountData: Boolean(_this4.props.isRoomAccountData),\n\n eventType: eventType,\n evContent: evContent\n };\n return _this4;\n }\n\n (0, _createClass3.default)(SendAccountData, [{\n key: 'send',\n value: function send(content) {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isRoomAccountData) {\n return cli.setRoomAccountData(this.context.roomId, this.state.eventType, content);\n }\n return cli.setAccountData(this.state.eventType, content);\n }\n }, {\n key: '_send',\n value: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var message, content;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(this.state.eventType === '')) {\n _context2.next = 3;\n break;\n }\n\n this.setState({ message: (0, _languageHandler._t)('You must specify an event type!') });\n return _context2.abrupt('return');\n\n case 3:\n message = void 0;\n _context2.prev = 4;\n content = JSON.parse(this.state.evContent);\n _context2.next = 8;\n return (0, _bluebird.resolve)(this.send(content));\n\n case 8:\n message = (0, _languageHandler._t)('Event sent!');\n _context2.next = 14;\n break;\n\n case 11:\n _context2.prev = 11;\n _context2.t0 = _context2['catch'](4);\n\n message = (0, _languageHandler._t)('Failed to send custom event.') + ' (' + _context2.t0.toString() + ')';\n\n case 14:\n this.setState({ message: message });\n\n case 15:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[4, 11]]);\n }));\n\n function _send() {\n return _ref2.apply(this, arguments);\n }\n\n return _send;\n }()\n }, {\n key: 'render',\n value: function render() {\n if (this.state.message) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n this.state.message\n ),\n this._buttons()\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n this.textInput('eventType', (0, _languageHandler._t)('Event Type')),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_inputLabelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'evContent' },\n ' ',\n (0, _languageHandler._t)('Event Content'),\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('textarea', { id: 'evContent', onChange: this._onChange, value: this.state.evContent, className: 'mx_DevTools_textarea' })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'button',\n { onClick: this._send },\n (0, _languageHandler._t)('Send')\n ),\n !this.state.message && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isRoomAccountData', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isRoomAccountData, disabled: this.props.forceMode }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Account Data', 'data-tg-on': 'Room Data', htmlFor: 'isRoomAccountData' })\n )\n )\n );\n }\n }]);\n return SendAccountData;\n}(GenericEditor);\n\nSendAccountData.propTypes = {\n isRoomAccountData: _propTypes2.default.bool,\n forceMode: _propTypes2.default.bool,\n inputs: _propTypes2.default.object\n};\n\n\nvar INITIAL_LOAD_TILES = 20;\nvar LOAD_TILES_STEP_SIZE = 50;\n\nvar FilteredList = function (_React$Component2) {\n (0, _inherits3.default)(FilteredList, _React$Component2);\n (0, _createClass3.default)(FilteredList, null, [{\n key: 'filterChildren',\n value: function filterChildren(children, query) {\n if (!query) return children;\n var lcQuery = query.toLowerCase();\n return children.filter(function (child) {\n return child.key.toLowerCase().includes(lcQuery);\n });\n }\n }]);\n\n function FilteredList(props, context) {\n (0, _classCallCheck3.default)(this, FilteredList);\n\n var _this5 = (0, _possibleConstructorReturn3.default)(this, (FilteredList.__proto__ || (0, _getPrototypeOf2.default)(FilteredList)).call(this, props, context));\n\n _this5.showAll = function () {\n _this5.setState({\n truncateAt: _this5.state.truncateAt + LOAD_TILES_STEP_SIZE\n });\n };\n\n _this5.createOverflowElement = function (overflowCount, totalCount) {\n return _react2.default.createElement(\n 'button',\n { className: 'mx_DevTools_RoomStateExplorer_button', onClick: _this5.showAll },\n (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount })\n );\n };\n\n _this5.onQuery = function (ev) {\n if (_this5.props.onChange) _this5.props.onChange(ev.target.value);\n };\n\n _this5.getChildren = function (start, end) {\n return _this5.state.filteredChildren.slice(start, end);\n };\n\n _this5.getChildCount = function () {\n return _this5.state.filteredChildren.length;\n };\n\n _this5.state = {\n filteredChildren: FilteredList.filterChildren(_this5.props.children, _this5.props.query),\n truncateAt: INITIAL_LOAD_TILES\n };\n return _this5;\n }\n\n (0, _createClass3.default)(FilteredList, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.children === nextProps.children && this.props.query === nextProps.query) return;\n this.setState({\n filteredChildren: FilteredList.filterChildren(nextProps.children, nextProps.query),\n truncateAt: INITIAL_LOAD_TILES\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { size: '64',\n autoFocus: true,\n onChange: this.onQuery,\n value: this.props.query,\n placeholder: (0, _languageHandler._t)('Filter results'),\n className: 'mx_TextInputDialog_input mx_DevTools_RoomStateExplorer_query'\n // force re-render so that autoFocus is applied when this component is re-used\n , key: this.props.children[0] ? this.props.children[0].key : '' }),\n _react2.default.createElement(TruncatedList, { getChildren: this.getChildren,\n getChildCount: this.getChildCount,\n truncateAt: this.state.truncateAt,\n createOverflowElement: this.createOverflowElement })\n );\n }\n }]);\n return FilteredList;\n}(_react2.default.Component);\n\nFilteredList.propTypes = {\n children: _propTypes2.default.any,\n query: _propTypes2.default.string,\n onChange: _propTypes2.default.func\n};\n\nvar RoomStateExplorer = function (_DevtoolsComponent2) {\n (0, _inherits3.default)(RoomStateExplorer, _DevtoolsComponent2);\n (0, _createClass3.default)(RoomStateExplorer, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Explore Room State');\n }\n }]);\n\n function RoomStateExplorer(props, context) {\n (0, _classCallCheck3.default)(this, RoomStateExplorer);\n\n var _this6 = (0, _possibleConstructorReturn3.default)(this, (RoomStateExplorer.__proto__ || (0, _getPrototypeOf2.default)(RoomStateExplorer)).call(this, props, context));\n\n var room = _MatrixClientPeg2.default.get().getRoom(_this6.context.roomId);\n _this6.roomStateEvents = room.currentState.events;\n\n _this6.onBack = _this6.onBack.bind(_this6);\n _this6.editEv = _this6.editEv.bind(_this6);\n _this6.onQueryEventType = _this6.onQueryEventType.bind(_this6);\n _this6.onQueryStateKey = _this6.onQueryStateKey.bind(_this6);\n\n _this6.state = {\n eventType: null,\n event: null,\n editing: false,\n\n queryEventType: '',\n queryStateKey: ''\n };\n return _this6;\n }\n\n (0, _createClass3.default)(RoomStateExplorer, [{\n key: 'browseEventType',\n value: function browseEventType(eventType) {\n var _this7 = this;\n\n return function () {\n _this7.setState({ eventType: eventType });\n };\n }\n }, {\n key: 'onViewSourceClick',\n value: function onViewSourceClick(event) {\n var _this8 = this;\n\n return function () {\n _this8.setState({ event: event });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.state.editing) {\n this.setState({ editing: false });\n } else if (this.state.event) {\n this.setState({ event: null });\n } else if (this.state.eventType) {\n this.setState({ eventType: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: 'editEv',\n value: function editEv() {\n this.setState({ editing: true });\n }\n }, {\n key: 'onQueryEventType',\n value: function onQueryEventType(filterEventType) {\n this.setState({ queryEventType: filterEventType });\n }\n }, {\n key: 'onQueryStateKey',\n value: function onQueryStateKey(filterStateKey) {\n this.setState({ queryStateKey: filterStateKey });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this9 = this;\n\n if (this.state.event) {\n if (this.state.editing) {\n return _react2.default.createElement(SendCustomEvent, { forceStateEvent: true, onBack: this.onBack, inputs: {\n eventType: this.state.event.getType(),\n evContent: (0, _stringify2.default)(this.state.event.getContent(), null, '\\t'),\n stateKey: this.state.event.getStateKey()\n } });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.state.event.event, null, 2)\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.editEv },\n (0, _languageHandler._t)('Edit')\n )\n )\n );\n }\n\n var list = null;\n\n var classes = 'mx_DevTools_RoomStateExplorer_button';\n if (this.state.eventType === null) {\n list = _react2.default.createElement(\n FilteredList,\n { query: this.state.queryEventType, onChange: this.onQueryEventType },\n (0, _keys2.default)(this.roomStateEvents).map(function (evType) {\n var stateGroup = _this9.roomStateEvents[evType];\n var stateKeys = (0, _keys2.default)(stateGroup);\n\n var onClickFn = void 0;\n if (stateKeys.length === 1 && stateKeys[0] === '') {\n onClickFn = _this9.onViewSourceClick(stateGroup[stateKeys[0]]);\n } else {\n onClickFn = _this9.browseEventType(evType);\n }\n\n return _react2.default.createElement(\n 'button',\n { className: classes, key: evType, onClick: onClickFn },\n evType\n );\n })\n );\n } else {\n var stateGroup = this.roomStateEvents[this.state.eventType];\n\n list = _react2.default.createElement(\n FilteredList,\n { query: this.state.queryStateKey, onChange: this.onQueryStateKey },\n (0, _keys2.default)(stateGroup).map(function (stateKey) {\n var ev = stateGroup[stateKey];\n return _react2.default.createElement(\n 'button',\n { className: classes, key: stateKey, onClick: _this9.onViewSourceClick(ev) },\n stateKey\n );\n })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n list\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n )\n )\n );\n }\n }]);\n return RoomStateExplorer;\n}(DevtoolsComponent);\n\nRoomStateExplorer.propTypes = {\n onBack: _propTypes2.default.func.isRequired\n};\n\nvar AccountDataExplorer = function (_DevtoolsComponent3) {\n (0, _inherits3.default)(AccountDataExplorer, _DevtoolsComponent3);\n (0, _createClass3.default)(AccountDataExplorer, null, [{\n key: 'getLabel',\n value: function getLabel() {\n return (0, _languageHandler._t)('Explore Account Data');\n }\n }]);\n\n function AccountDataExplorer(props, context) {\n (0, _classCallCheck3.default)(this, AccountDataExplorer);\n\n var _this10 = (0, _possibleConstructorReturn3.default)(this, (AccountDataExplorer.__proto__ || (0, _getPrototypeOf2.default)(AccountDataExplorer)).call(this, props, context));\n\n _this10.onBack = _this10.onBack.bind(_this10);\n _this10.editEv = _this10.editEv.bind(_this10);\n _this10._onChange = _this10._onChange.bind(_this10);\n _this10.onQueryEventType = _this10.onQueryEventType.bind(_this10);\n\n _this10.state = {\n isRoomAccountData: false,\n event: null,\n editing: false,\n\n queryEventType: ''\n };\n return _this10;\n }\n\n (0, _createClass3.default)(AccountDataExplorer, [{\n key: 'getData',\n value: function getData() {\n var cli = _MatrixClientPeg2.default.get();\n if (this.state.isRoomAccountData) {\n return cli.getRoom(this.context.roomId).accountData;\n }\n return cli.store.accountData;\n }\n }, {\n key: 'onViewSourceClick',\n value: function onViewSourceClick(event) {\n var _this11 = this;\n\n return function () {\n _this11.setState({ event: event });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.state.editing) {\n this.setState({ editing: false });\n } else if (this.state.event) {\n this.setState({ event: null });\n } else {\n this.props.onBack();\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(e) {\n this.setState((0, _defineProperty3.default)({}, e.target.id, e.target.type === 'checkbox' ? e.target.checked : e.target.value));\n }\n }, {\n key: 'editEv',\n value: function editEv() {\n this.setState({ editing: true });\n }\n }, {\n key: 'onQueryEventType',\n value: function onQueryEventType(queryEventType) {\n this.setState({ queryEventType: queryEventType });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this12 = this;\n\n if (this.state.event) {\n if (this.state.editing) {\n return _react2.default.createElement(SendAccountData, { isRoomAccountData: this.state.isRoomAccountData, onBack: this.onBack, inputs: {\n eventType: this.state.event.getType(),\n evContent: (0, _stringify2.default)(this.state.event.getContent(), null, '\\t')\n }, forceMode: true });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ViewSource' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_content' },\n _react2.default.createElement(\n _SyntaxHighlight2.default,\n { className: 'json' },\n (0, _stringify2.default)(this.state.event.event, null, 2)\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this.editEv },\n (0, _languageHandler._t)('Edit')\n )\n )\n );\n }\n\n var rows = [];\n\n var classes = 'mx_DevTools_RoomStateExplorer_button';\n\n var data = this.getData();\n (0, _keys2.default)(data).forEach(function (evType) {\n var ev = data[evType];\n rows.push(_react2.default.createElement(\n 'button',\n { className: classes, key: evType, onClick: _this12.onViewSourceClick(ev) },\n evType\n ));\n });\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n FilteredList,\n { query: this.state.queryEventType, onChange: this.onQueryEventType },\n rows\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onBack },\n (0, _languageHandler._t)('Back')\n ),\n !this.state.message && _react2.default.createElement(\n 'div',\n { style: { float: \"right\" } },\n _react2.default.createElement('input', { id: 'isRoomAccountData', className: 'mx_DevTools_tgl mx_DevTools_tgl-flip', type: 'checkbox', onChange: this._onChange, checked: this.state.isRoomAccountData }),\n _react2.default.createElement('label', { className: 'mx_DevTools_tgl-btn', 'data-tg-off': 'Account Data', 'data-tg-on': 'Room Data', htmlFor: 'isRoomAccountData' })\n )\n )\n );\n }\n }]);\n return AccountDataExplorer;\n}(DevtoolsComponent);\n\nAccountDataExplorer.propTypes = {\n onBack: _propTypes2.default.func.isRequired\n};\n\n\nvar Entries = [SendCustomEvent, RoomStateExplorer, SendAccountData, AccountDataExplorer];\n\nvar DevtoolsDialog = function (_React$Component3) {\n (0, _inherits3.default)(DevtoolsDialog, _React$Component3);\n\n function DevtoolsDialog(props, context) {\n (0, _classCallCheck3.default)(this, DevtoolsDialog);\n\n var _this13 = (0, _possibleConstructorReturn3.default)(this, (DevtoolsDialog.__proto__ || (0, _getPrototypeOf2.default)(DevtoolsDialog)).call(this, props, context));\n\n _this13.onBack = _this13.onBack.bind(_this13);\n _this13.onCancel = _this13.onCancel.bind(_this13);\n\n _this13.state = {\n mode: null\n };\n return _this13;\n }\n\n (0, _createClass3.default)(DevtoolsDialog, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: 'getChildContext',\n value: function getChildContext() {\n return { roomId: this.props.roomId };\n }\n }, {\n key: '_setMode',\n value: function _setMode(mode) {\n var _this14 = this;\n\n return function () {\n _this14.setState({ mode: mode });\n };\n }\n }, {\n key: 'onBack',\n value: function onBack() {\n if (this.prevMode) {\n this.setState({ mode: this.prevMode });\n this.prevMode = null;\n } else {\n this.setState({ mode: null });\n }\n }\n }, {\n key: 'onCancel',\n value: function onCancel() {\n this.props.onFinished(false);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this15 = this;\n\n var body = void 0;\n\n if (this.state.mode) {\n body = _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_dialog' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_left' },\n this.state.mode.getLabel()\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_right' },\n 'Room ID: ',\n this.props.roomId\n ),\n _react2.default.createElement('div', { className: 'mx_DevTools_label_bottom' }),\n _react2.default.createElement(this.state.mode, { onBack: this.onBack })\n );\n } else {\n var classes = \"mx_DevTools_RoomStateExplorer_button\";\n body = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_dialog' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_left' },\n (0, _languageHandler._t)('Toolbox')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevTools_label_right' },\n 'Room ID: ',\n this.props.roomId\n ),\n _react2.default.createElement('div', { className: 'mx_DevTools_label_bottom' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n Entries.map(function (Entry) {\n var label = Entry.getLabel();\n var onClick = _this15._setMode(Entry);\n return _react2.default.createElement(\n 'button',\n { className: classes, key: label, onClick: onClick },\n label\n );\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.onCancel },\n (0, _languageHandler._t)('Cancel')\n )\n )\n );\n }\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_QuestionDialog', onFinished: this.props.onFinished, title: (0, _languageHandler._t)('Developer Tools') },\n body\n );\n }\n }]);\n return DevtoolsDialog;\n}(_react2.default.Component);\n\nDevtoolsDialog.childContextTypes = {\n roomId: _propTypes2.default.string.isRequired\n // client: PropTypes.instanceOf(MatixClient),\n};\nDevtoolsDialog.propTypes = {\n roomId: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n};\nexports.default = DevtoolsDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevtoolsDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n * Usage:\n * Modal.createTrackedDialog('An Identifier', 'some detail', ErrorDialog, {\n * title: \"some text\", (default: \"Error\")\n * description: \"some more text\",\n * button: \"Button Text\",\n * onFinished: someFunction,\n * focus: true|false (default: true)\n * });\n */\n\nexports.default = _react2.default.createClass({\n displayName: 'ErrorDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string]),\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n focus: true,\n title: null,\n description: null,\n button: null\n };\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ErrorDialog', onFinished: this.props.onFinished,\n title: this.props.title || (0, _languageHandler._t)('Error'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n this.props.description || (0, _languageHandler._t)('An error has occurred.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { className: 'mx_Dialog_primary', onClick: this.props.onFinished, autoFocus: this.props.focus },\n this.props.button || (0, _languageHandler._t)('OK')\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ErrorDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'InteractiveAuthDialog',\n\n propTypes: {\n // matrix client to use for UI auth requests\n matrixClient: _propTypes2.default.object.isRequired,\n\n // response from initial request. If not supplied, will do a request on\n // mount.\n authData: _propTypes2.default.shape({\n flows: _propTypes2.default.array,\n params: _propTypes2.default.object,\n session: _propTypes2.default.string\n }),\n\n // callback\n makeRequest: _propTypes2.default.func.isRequired,\n\n onFinished: _propTypes2.default.func.isRequired,\n\n title: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n authError: null\n };\n },\n\n _onAuthFinished: function _onAuthFinished(success, result) {\n if (success) {\n this.props.onFinished(true, result);\n } else {\n this.setState({\n authError: result\n });\n }\n },\n\n _onDismissClick: function _onDismissClick() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var InteractiveAuth = _index2.default.getComponent(\"structures.InteractiveAuth\");\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var content = void 0;\n if (this.state.authError) {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { role: 'alert' },\n this.state.authError.message || this.state.authError.toString()\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this._onDismissClick,\n className: 'mx_UserSettings_button',\n autoFocus: 'true'\n },\n (0, _languageHandler._t)(\"Dismiss\")\n )\n );\n } else {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(InteractiveAuth, { ref: this._collectInteractiveAuth,\n matrixClient: this.props.matrixClient,\n authData: this.props.authData,\n makeRequest: this.props.makeRequest,\n onAuthFinished: this._onAuthFinished\n })\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_InteractiveAuthDialog',\n onFinished: this.props.onFinished,\n title: this.state.authError ? 'Error' : this.props.title || (0, _languageHandler._t)('Authentication'),\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=InteractiveAuthDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Dialog which asks the user whether they want to share their keys with\n * an unverified device.\n *\n * onFinished is called with `true` if the key should be shared, `false` if it\n * should not, and `undefined` if the dialog is cancelled. (In other words:\n * truthy: do the key share. falsy: don't share the keys).\n */\nexports.default = _react2.default.createClass({\n displayName: 'KeyShareDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n userId: _propTypes2.default.string.isRequired,\n deviceId: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n deviceInfo: null,\n wasNewDevice: false\n };\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this._unmounted = false;\n var userId = this.props.userId;\n var deviceId = this.props.deviceId;\n\n // give the client a chance to refresh the device list\n this.props.matrixClient.downloadKeys([userId], false).then(function (r) {\n if (_this._unmounted) {\n return;\n }\n\n var deviceInfo = r[userId][deviceId];\n\n if (!deviceInfo) {\n console.warn('No details found for device ' + userId + ':' + deviceId);\n\n _this.props.onFinished(false);\n return;\n }\n\n var wasNewDevice = !deviceInfo.isKnown();\n\n _this.setState({\n deviceInfo: deviceInfo,\n wasNewDevice: wasNewDevice\n });\n\n // if the device was new before, it's not any more.\n if (wasNewDevice) {\n _this.props.matrixClient.setDeviceKnown(userId, deviceId, true);\n }\n }).done();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onVerifyClicked: function _onVerifyClicked() {\n var _this2 = this;\n\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n\n console.log(\"KeyShareDialog: Starting verify dialog\");\n _Modal2.default.createTrackedDialog('Key Share', 'Starting dialog', DeviceVerifyDialog, {\n userId: this.props.userId,\n device: this.state.deviceInfo,\n onFinished: function onFinished(verified) {\n if (verified) {\n // can automatically share the keys now.\n _this2.props.onFinished(true);\n }\n }\n });\n },\n\n _onShareClicked: function _onShareClicked() {\n console.log(\"KeyShareDialog: User clicked 'share'\");\n this.props.onFinished(true);\n },\n\n _onIgnoreClicked: function _onIgnoreClicked() {\n console.log(\"KeyShareDialog: User clicked 'ignore'\");\n this.props.onFinished(false);\n },\n\n _renderContent: function _renderContent() {\n var displayName = this.state.deviceInfo.getDisplayName() || this.state.deviceInfo.deviceId;\n\n var text = void 0;\n if (this.state.wasNewDevice) {\n text = (0, _languageHandler._td)(\"You added a new device '%(displayName)s', which is\" + \" requesting encryption keys.\");\n } else {\n text = (0, _languageHandler._td)(\"Your unverified device '%(displayName)s' is requesting\" + \" encryption keys.\");\n }\n text = (0, _languageHandler._t)(text, { displayName: displayName });\n\n return _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n text\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this._onVerifyClicked, autoFocus: 'true' },\n (0, _languageHandler._t)('Start verification')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onShareClicked },\n (0, _languageHandler._t)('Share without verifying')\n ),\n _react2.default.createElement(\n 'button',\n { onClick: this._onIgnoreClicked },\n (0, _languageHandler._t)('Ignore request')\n )\n )\n );\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n var content = void 0;\n\n if (this.state.deviceInfo) {\n content = this._renderContent();\n } else {\n content = _react2.default.createElement(\n 'div',\n { id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Loading device info...')\n ),\n _react2.default.createElement(Spinner, null)\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_KeyShareRequestDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Encryption key request'),\n contentId: 'mx_Dialog_content'\n },\n content\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=KeyShareDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _QuestionDialog = require('./QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var description1 = (0, _languageHandler._t)(\"You've previously used Riot on %(host)s with lazy loading of members enabled. \" + \"In this version lazy loading is disabled. \" + \"As the local cache is not compatible between these two settings, \" + \"Riot needs to resync your account.\", { host: props.host });\n var description2 = (0, _languageHandler._t)(\"If the other version of Riot is still open in another tab, \" + \"please close it as using Riot on the same host with both \" + \"lazy loading enabled and disabled simultaneously will cause issues.\");\n\n return _react2.default.createElement(_QuestionDialog2.default, {\n hasCancelButton: false,\n title: (0, _languageHandler._t)(\"Incompatible local cache\"),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n description1\n ),\n _react2.default.createElement(\n 'p',\n null,\n description2\n )\n ),\n button: (0, _languageHandler._t)(\"Clear cache and resync\"),\n onFinished: props.onFinished\n });\n}; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=LazyLoadingDisabledDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _QuestionDialog = require('./QuestionDialog');\n\nvar _QuestionDialog2 = _interopRequireDefault(_QuestionDialog);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (props) {\n var description = (0, _languageHandler._t)(\"Riot now uses 3-5x less memory, by only loading information about other users\" + \" when needed. Please wait whilst we resynchronise with the server!\");\n\n return _react2.default.createElement(_QuestionDialog2.default, {\n hasCancelButton: false,\n title: (0, _languageHandler._t)(\"Updating Riot\"),\n description: _react2.default.createElement(\n 'div',\n null,\n description\n ),\n button: (0, _languageHandler._t)(\"OK\"),\n onFinished: props.onFinished\n });\n}; /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=LazyLoadingResyncDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomUpgradeDialog',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n this._targetVersion = this.props.room.shouldUpgradeToVersion();\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false\n };\n },\n\n _onCancelClick: function _onCancelClick() {\n this.props.onFinished(false);\n },\n\n _onUpgradeClick: function _onUpgradeClick() {\n var _this = this;\n\n this.setState({ busy: true });\n _MatrixClientPeg2.default.get().upgradeRoom(this.props.room.roomId, this._targetVersion).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to upgrade room', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to upgrade room\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"The room upgrade could not be completed\")\n });\n }).finally(function () {\n _this.setState({ busy: false });\n });\n },\n\n render: function render() {\n var _React$createElement;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n var Spinner = _index2.default.getComponent('views.elements.Spinner');\n\n var buttons = void 0;\n if (this.state.busy) {\n buttons = _react2.default.createElement(Spinner, null);\n } else {\n buttons = _react2.default.createElement(DialogButtons, {\n primaryButton: (0, _languageHandler._t)('Upgrade this room to version %(version)s', { version: this._targetVersion }),\n primaryButtonClass: 'danger',\n hasCancel: true,\n onPrimaryButtonClick: this._onUpgradeClick,\n focus: this.props.focus,\n onCancel: this._onCancelClick\n });\n }\n\n return _react2.default.createElement(\n BaseDialog,\n (_React$createElement = { className: 'mx_RoomUpgradeDialog',\n onFinished: this.onCancelled,\n title: (0, _languageHandler._t)(\"Upgrade Room Version\"),\n contentId: 'mx_Dialog_content'\n }, (0, _defineProperty3.default)(_React$createElement, 'onFinished', this.props.onFinished), (0, _defineProperty3.default)(_React$createElement, 'hasCancel', true), _React$createElement),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Upgrading this room requires closing down the current \" + \"instance of the room and creating a new room it its place. \" + \"To give room members the best possible experience, we will:\")\n ),\n _react2.default.createElement(\n 'ol',\n null,\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Create a new room with the same name, description and avatar\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Update any local room aliases to point to the new room\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Stop users from speaking in the old version of the room, and post a message advising users to move to the new room\")\n ),\n _react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(\"Put a link back to the old room at the start of the new room so people can see old messages\")\n )\n ),\n buttons\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomUpgradeDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'SessionRestoreErrorDialog',\n\n propTypes: {\n error: _propTypes2.default.string.isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n _sendBugReport: function _sendBugReport() {\n var BugReportDialog = _index2.default.getComponent(\"dialogs.BugReportDialog\");\n _Modal2.default.createTrackedDialog('Session Restore Error', 'Send Bug Report Dialog', BugReportDialog, {});\n },\n\n _onClearStorageClick: function _onClearStorageClick() {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Session Restore Confirm Logout', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Sign out\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Log out and remove encryption keys?\")\n ),\n button: (0, _languageHandler._t)(\"Sign out\"),\n danger: true,\n onFinished: this.props.onFinished\n });\n },\n\n _onRefreshClick: function _onRefreshClick() {\n // Is this likely to help? Probably not, but giving only one button\n // that clears your storage seems awful.\n window.location.reload(true);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n\n var clearStorageButton = _react2.default.createElement(\n 'button',\n { onClick: this._onClearStorageClick, className: 'danger' },\n (0, _languageHandler._t)(\"Clear Storage and Sign Out\")\n );\n\n var dialogButtons = void 0;\n if (_SdkConfig2.default.get().bug_report_endpoint_url) {\n dialogButtons = _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)(\"Send Logs\"),\n onPrimaryButtonClick: this._sendBugReport,\n focus: true,\n hasCancel: false\n },\n clearStorageButton\n );\n } else {\n dialogButtons = _react2.default.createElement(\n DialogButtons,\n { primaryButton: (0, _languageHandler._t)(\"Refresh\"),\n onPrimaryButtonClick: this._onRefreshClick,\n focus: true,\n hasCancel: false\n },\n clearStorageButton\n );\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_ErrorDialog', onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Unable to restore session'),\n contentId: 'mx_Dialog_content',\n hasCancel: false\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"We encountered an error trying to restore your previous session.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"If you have previously used a more recent version of Riot, your session \" + \"may be incompatible with this version. Close this window and return \" + \"to the more recent version.\")\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"Clearing your browser's storage may fix the problem, but will sign you \" + \"out and cause any encrypted chat history to become unreadable.\")\n )\n ),\n dialogButtons\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SessionRestoreErrorDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _email = require('../../../email');\n\nvar _email2 = _interopRequireDefault(_email);\n\nvar _AddThreepid = require('../../../AddThreepid');\n\nvar _AddThreepid2 = _interopRequireDefault(_AddThreepid);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Prompt the user to set an email address.\n *\n * On success, `onFinished(true)` is called.\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetEmailDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n emailAddress: '',\n emailBusy: false\n };\n },\n\n onEmailAddressChanged: function onEmailAddressChanged(value) {\n this.setState({\n emailAddress: value\n });\n },\n\n onSubmit: function onSubmit() {\n var _this = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n var emailAddress = this.state.emailAddress;\n if (!_email2.default.looksValid(emailAddress)) {\n _Modal2.default.createTrackedDialog('Invalid Email Address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Invalid Email Address\"),\n description: (0, _languageHandler._t)(\"This doesn't appear to be a valid email address\")\n });\n return;\n }\n this._addThreepid = new _AddThreepid2.default();\n // we always bind emails when registering, so let's do the\n // same here.\n this._addThreepid.addEmailAddress(emailAddress, true).done(function () {\n _Modal2.default.createTrackedDialog('Verification Pending', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this \" + \"is done, click continue.\"),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this.onEmailDialogFinished\n });\n }, function (err) {\n _this.setState({ emailBusy: false });\n console.error(\"Unable to add email address \" + emailAddress + \" \" + err);\n _Modal2.default.createTrackedDialog('Unable to add email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to add email address\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n });\n this.setState({ emailBusy: true });\n },\n\n onCancelled: function onCancelled() {\n this.props.onFinished(false);\n },\n\n onEmailDialogFinished: function onEmailDialogFinished(ok) {\n if (ok) {\n this.verifyEmailAddress();\n } else {\n this.setState({ emailBusy: false });\n }\n },\n\n verifyEmailAddress: function verifyEmailAddress() {\n var _this2 = this;\n\n this._addThreepid.checkEmailLinkClicked().done(function () {\n _this2.props.onFinished(true);\n }, function (err) {\n _this2.setState({ emailBusy: false });\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var message = (0, _languageHandler._t)(\"Unable to verify email address.\") + \" \" + (0, _languageHandler._t)(\"Please check your email and click on the link it contains. Once this is done, click continue.\");\n _Modal2.default.createTrackedDialog('Verification Pending', '3pid Auth Failed', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Verification Pending\"),\n description: message,\n button: (0, _languageHandler._t)('Continue'),\n onFinished: _this2.onEmailDialogFinished\n });\n } else {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Unable to verify email address: \" + err);\n _Modal2.default.createTrackedDialog('Unable to verify email address', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to verify email address.\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Operation failed\")\n });\n }\n });\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n var EditableText = _index2.default.getComponent('elements.EditableText');\n\n var emailInput = this.state.emailBusy ? _react2.default.createElement(Spinner, null) : _react2.default.createElement(EditableText, {\n initialValue: this.state.emailAddress,\n className: 'mx_SetEmailDialog_email_input',\n autoFocus: 'true',\n placeholder: (0, _languageHandler._t)(\"Email address\"),\n placeholderClassName: 'mx_SetEmailDialog_email_input_placeholder',\n blurToCancel: false,\n onValueChanged: this.onEmailAddressChanged });\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetEmailDialog',\n onFinished: this.onCancelled,\n title: this.props.title,\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n { id: 'mx_Dialog_content' },\n (0, _languageHandler._t)('This will allow you to reset your password and receive notifications.')\n ),\n emailInput\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary',\n type: 'submit',\n value: (0, _languageHandler._t)(\"Continue\"),\n onClick: this.onSubmit\n }),\n _react2.default.createElement('input', {\n type: 'submit',\n value: (0, _languageHandler._t)(\"Skip\"),\n onClick: this.onCancelled\n })\n )\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetEmailDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The amount of time to wait for further changes to the input username before\n// sending a request to the server\n/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar USERNAME_CHECK_DEBOUNCE_MS = 250;\n\n/**\n * Prompt the user to set a display name.\n *\n * On success, `onFinished(true, newDisplayName)` is called.\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetMxIdDialog',\n propTypes: {\n onFinished: _propTypes2.default.func.isRequired,\n // Called when the user requests to register with a different homeserver\n onDifferentServerClicked: _propTypes2.default.func.isRequired,\n // Called if the user wants to switch to login instead\n onLoginClick: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n // The entered username\n username: '',\n // Indicate ongoing work on the username\n usernameBusy: false,\n // Indicate error with username\n usernameError: '',\n // Assume the homeserver supports username checking until \"M_UNRECOGNIZED\"\n usernameCheckSupport: true,\n\n // Whether the auth UI is currently being used\n doingUIAuth: false,\n // Indicate error with auth\n authError: ''\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.refs.input_value.select();\n\n this._matrixClient = _MatrixClientPeg2.default.get();\n },\n\n onValueChange: function onValueChange(ev) {\n var _this = this;\n\n this.setState({\n username: ev.target.value,\n usernameBusy: true,\n usernameError: ''\n }, function () {\n if (!_this.state.username || !_this.state.usernameCheckSupport) {\n _this.setState({\n usernameBusy: false\n });\n return;\n }\n\n // Debounce the username check to limit number of requests sent\n if (_this._usernameCheckTimeout) {\n clearTimeout(_this._usernameCheckTimeout);\n }\n _this._usernameCheckTimeout = setTimeout(function () {\n _this._doUsernameCheck().finally(function () {\n _this.setState({\n usernameBusy: false\n });\n });\n }, USERNAME_CHECK_DEBOUNCE_MS);\n });\n },\n\n onKeyUp: function onKeyUp(ev) {\n if (ev.keyCode === _Keyboard.KeyCode.ENTER) {\n this.onSubmit();\n }\n },\n\n onSubmit: function onSubmit(ev) {\n this.setState({\n doingUIAuth: true\n });\n },\n\n _doUsernameCheck: function _doUsernameCheck() {\n var _this2 = this;\n\n // XXX: SPEC-1\n // Check if username is valid\n // Naive impl copied from https://github.com/matrix-org/matrix-react-sdk/blob/66c3a6d9ca695780eb6b662e242e88323053ff33/src/components/views/login/RegistrationForm.js#L190\n if (encodeURIComponent(this.state.username) !== this.state.username) {\n this.setState({\n usernameError: (0, _languageHandler._t)('User names may only contain letters, numbers, dots, hyphens and underscores.')\n });\n return _bluebird2.default.reject();\n }\n\n // Check if username is available\n return this._matrixClient.isUsernameAvailable(this.state.username).then(function (isAvailable) {\n if (isAvailable) {\n _this2.setState({ usernameError: '' });\n }\n }, function (err) {\n // Indicate whether the homeserver supports username checking\n var newState = {\n usernameCheckSupport: err.errcode !== \"M_UNRECOGNIZED\"\n };\n console.error('Error whilst checking username availability: ', err);\n switch (err.errcode) {\n case \"M_USER_IN_USE\":\n newState.usernameError = (0, _languageHandler._t)('Username not available');\n break;\n case \"M_INVALID_USERNAME\":\n newState.usernameError = (0, _languageHandler._t)('Username invalid: %(errMessage)s', { errMessage: err.message });\n break;\n case \"M_UNRECOGNIZED\":\n // This homeserver doesn't support username checking, assume it's\n // fine and rely on the error appearing in registration step.\n newState.usernameError = '';\n break;\n case undefined:\n newState.usernameError = (0, _languageHandler._t)('Something went wrong!');\n break;\n default:\n newState.usernameError = (0, _languageHandler._t)('An error occurred: %(error_string)s', { error_string: err.message });\n break;\n }\n _this2.setState(newState);\n });\n },\n\n _generatePassword: function _generatePassword() {\n return Math.random().toString(36).slice(2);\n },\n\n _makeRegisterRequest: function _makeRegisterRequest(auth) {\n // Not upgrading - changing mxids\n var guestAccessToken = null;\n if (!this._generatedPassword) {\n this._generatedPassword = this._generatePassword();\n }\n return this._matrixClient.register(this.state.username, this._generatedPassword, undefined, // session id: included in the auth dict already\n auth, {}, guestAccessToken);\n },\n\n _onUIAuthFinished: function _onUIAuthFinished(success, response) {\n this.setState({\n doingUIAuth: false\n });\n\n if (!success) {\n this.setState({ authError: response.message });\n return;\n }\n\n // XXX Implement RTS /register here\n var teamToken = null;\n\n this.props.onFinished(true, {\n userId: response.user_id,\n deviceId: response.device_id,\n homeserverUrl: this._matrixClient.getHomeserverUrl(),\n identityServerUrl: this._matrixClient.getIdentityServerUrl(),\n accessToken: response.access_token,\n password: this._generatedPassword,\n teamToken: teamToken\n });\n },\n\n render: function render() {\n var _this3 = this;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var InteractiveAuth = _index2.default.getComponent('structures.InteractiveAuth');\n var Spinner = _index2.default.getComponent('elements.Spinner');\n\n var auth = void 0;\n if (this.state.doingUIAuth) {\n auth = _react2.default.createElement(InteractiveAuth, {\n matrixClient: this._matrixClient,\n makeRequest: this._makeRegisterRequest,\n onAuthFinished: this._onUIAuthFinished,\n inputs: {},\n poll: true\n });\n }\n var inputClasses = (0, _classnames2.default)({\n \"mx_SetMxIdDialog_input\": true,\n \"error\": Boolean(this.state.usernameError)\n });\n\n var usernameIndicator = null;\n var usernameBusyIndicator = null;\n if (this.state.usernameBusy) {\n usernameBusyIndicator = _react2.default.createElement(Spinner, { w: '24', h: '24' });\n } else {\n var usernameAvailable = this.state.username && this.state.usernameCheckSupport && !this.state.usernameError;\n var usernameIndicatorClasses = (0, _classnames2.default)({\n \"error\": Boolean(this.state.usernameError),\n \"success\": usernameAvailable\n });\n usernameIndicator = _react2.default.createElement(\n 'div',\n { className: usernameIndicatorClasses, role: 'alert' },\n usernameAvailable ? (0, _languageHandler._t)('Username available') : this.state.usernameError\n );\n }\n\n var authErrorIndicator = null;\n if (this.state.authError) {\n authErrorIndicator = _react2.default.createElement(\n 'div',\n { className: 'error', role: 'alert' },\n this.state.authError\n );\n }\n var canContinue = this.state.username && !this.state.usernameError && !this.state.usernameBusy;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetMxIdDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('To get started, please pick a username!'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_SetMxIdDialog_input_group' },\n _react2.default.createElement('input', { type: 'text', ref: 'input_value', value: this.state.username,\n autoFocus: true,\n onChange: this.onValueChange,\n onKeyUp: this.onKeyUp,\n size: '30',\n className: inputClasses\n }),\n usernameBusyIndicator\n ),\n usernameIndicator,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This will be your account name on the <span></span> ' + 'homeserver, or you can pick a <a>different server</a>.', {}, {\n 'span': _react2.default.createElement(\n 'span',\n null,\n this.props.homeserverUrl\n ),\n 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.props.onDifferentServerClicked },\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('If you already have a Matrix account you can <a>log in</a> instead.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#', onClick: _this3.props.onLoginClick },\n sub\n );\n } })\n ),\n auth,\n authErrorIndicator\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary',\n type: 'submit',\n value: (0, _languageHandler._t)(\"Continue\"),\n onClick: this.onSubmit,\n disabled: !canContinue\n })\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetMxIdDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar WarmFuzzy = function WarmFuzzy(props) {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var title = (0, _languageHandler._t)('You have successfully set a password!');\n if (props.didSetEmail) {\n title = (0, _languageHandler._t)('You have successfully set a password and an email address!');\n }\n var advice = (0, _languageHandler._t)('You can now return to your account after signing out, and sign in on other devices.');\n var extraAdvice = null;\n if (!props.didSetEmail) {\n extraAdvice = (0, _languageHandler._t)('Remember, you can always set an email address in user settings if you change your mind.');\n }\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetPasswordDialog',\n onFinished: props.onFinished,\n title: title\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n advice\n ),\n _react2.default.createElement(\n 'p',\n null,\n extraAdvice\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n {\n className: 'mx_Dialog_primary',\n autoFocus: true,\n onClick: props.onFinished },\n (0, _languageHandler._t)('Continue')\n )\n )\n );\n};\n\n/**\n * Prompt the user to set a password\n *\n * On success, `onFinished()` when finished\n */\nexports.default = _react2.default.createClass({\n displayName: 'SetPasswordDialog',\n propTypes: {\n onFinished: _react2.default.PropTypes.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n error: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n console.info('SetPasswordDialog component will mount');\n },\n\n _onPasswordChanged: function _onPasswordChanged(res) {\n var _this = this;\n\n _Modal2.default.createDialog(WarmFuzzy, {\n didSetEmail: res.didSetEmail,\n onFinished: function onFinished() {\n _this.props.onFinished();\n }\n });\n },\n\n _onPasswordChangeError: function _onPasswordChangeError(err) {\n var errMsg = err.error || \"\";\n if (err.httpStatus === 403) {\n errMsg = (0, _languageHandler._t)('Failed to change password. Is your password correct?');\n } else if (err.httpStatus) {\n errMsg += ' ' + (0, _languageHandler._t)('(HTTP status %(httpStatus)s)', { httpStatus: err.httpStatus });\n }\n this.setState({\n error: errMsg\n });\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var ChangePassword = _index2.default.getComponent('views.settings.ChangePassword');\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_SetPasswordDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Please set a password!')\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This will allow you to return to your account after signing out, and sign in on other devices.')\n ),\n _react2.default.createElement(ChangePassword, {\n className: 'mx_SetPasswordDialog_change_password',\n rowClassName: '',\n rowLabelClassName: '',\n rowInputClassName: '',\n buttonClassName: 'mx_Dialog_primary mx_SetPasswordDialog_change_password_button',\n confirm: false,\n autoFocusNewPasswordInput: true,\n shouldAskForEmail: true,\n onError: this._onPasswordChangeError,\n onFinished: this._onPasswordChanged }),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.error\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SetPasswordDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _qrcodeReact = require('qrcode-react');\n\nvar _qrcodeReact2 = _interopRequireDefault(_qrcodeReact);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar socials = [{\n name: 'Facebook',\n img: 'img/social/facebook.png',\n url: function url(_url) {\n return 'https://www.facebook.com/sharer/sharer.php?u=' + _url;\n }\n}, {\n name: 'Twitter',\n img: 'img/social/twitter-2.png',\n url: function url(_url2) {\n return 'https://twitter.com/home?status=' + _url2;\n }\n}, /* // icon missing\n name: 'Google Plus',\n img: 'img/social/',\n url: (url) => `https://plus.google.com/share?url=${url}`,\n },*/{\n name: 'LinkedIn',\n img: 'img/social/linkedin.png',\n url: function url(_url3) {\n return 'https://www.linkedin.com/shareArticle?mini=true&url=' + _url3;\n }\n}, {\n name: 'Reddit',\n img: 'img/social/reddit.png',\n url: function url(_url4) {\n return 'http://www.reddit.com/submit?url=' + _url4;\n }\n}, {\n name: 'email',\n img: 'img/social/email-1.png',\n url: function url(_url5) {\n return 'mailto:?body=' + _url5;\n }\n}];\n\nvar ShareDialog = function (_React$Component) {\n (0, _inherits3.default)(ShareDialog, _React$Component);\n\n function ShareDialog(props) {\n (0, _classCallCheck3.default)(this, ShareDialog);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (ShareDialog.__proto__ || (0, _getPrototypeOf2.default)(ShareDialog)).call(this, props));\n\n _this.onCopyClick = _this.onCopyClick.bind(_this);\n _this.onLinkSpecificEventCheckboxClick = _this.onLinkSpecificEventCheckboxClick.bind(_this);\n\n _this.state = {\n // MatrixEvent defaults to share linkSpecificEvent\n linkSpecificEvent: _this.props.target instanceof _matrixJsSdk.MatrixEvent\n };\n return _this;\n }\n\n (0, _createClass3.default)(ShareDialog, [{\n key: 'onCopyClick',\n value: function onCopyClick(e) {\n e.preventDefault();\n\n ShareDialog._selectText(this.refs.link);\n\n var successful = void 0;\n try {\n successful = document.execCommand('copy');\n } catch (err) {\n console.error('Failed to copy: ', err);\n }\n\n var GenericTextContextMenu = _index2.default.getComponent('context_menus.GenericTextContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n var _ContextualMenu$creat = ContextualMenu.createMenu(GenericTextContextMenu, {\n chevronOffset: 10,\n left: x,\n top: y,\n message: successful ? (0, _languageHandler._t)('Copied!') : (0, _languageHandler._t)('Failed to copy')\n }, false),\n close = _ContextualMenu$creat.close;\n\n e.target.onmouseleave = close;\n }\n }, {\n key: 'onLinkSpecificEventCheckboxClick',\n value: function onLinkSpecificEventCheckboxClick() {\n this.setState({\n linkSpecificEvent: !this.state.linkSpecificEvent\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var title = void 0;\n var matrixToUrl = void 0;\n\n var checkbox = void 0;\n\n if (this.props.target instanceof _matrixJsSdk.Room) {\n title = (0, _languageHandler._t)('Share Room');\n\n var events = this.props.target.getLiveTimeline().getEvents();\n if (events.length > 0) {\n checkbox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox',\n id: 'mx_ShareDialog_checkbox',\n checked: this.state.linkSpecificEvent,\n onClick: this.onLinkSpecificEventCheckboxClick }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_ShareDialog_checkbox' },\n (0, _languageHandler._t)('Link to most recent message')\n )\n );\n }\n\n if (this.state.linkSpecificEvent) {\n matrixToUrl = (0, _matrixTo.makeEventPermalink)(this.props.target.roomId, events[events.length - 1].getId());\n } else {\n matrixToUrl = (0, _matrixTo.makeRoomPermalink)(this.props.target.roomId);\n }\n } else if (this.props.target instanceof _matrixJsSdk.User || this.props.target instanceof _matrixJsSdk.RoomMember) {\n title = (0, _languageHandler._t)('Share User');\n matrixToUrl = (0, _matrixTo.makeUserPermalink)(this.props.target.userId);\n } else if (this.props.target instanceof _matrixJsSdk.Group) {\n title = (0, _languageHandler._t)('Share Community');\n matrixToUrl = (0, _matrixTo.makeGroupPermalink)(this.props.target.groupId);\n } else if (this.props.target instanceof _matrixJsSdk.MatrixEvent) {\n title = (0, _languageHandler._t)('Share Room Message');\n checkbox = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { type: 'checkbox',\n id: 'mx_ShareDialog_checkbox',\n checked: this.state.linkSpecificEvent,\n onClick: this.onLinkSpecificEventCheckboxClick }),\n _react2.default.createElement(\n 'label',\n { htmlFor: 'mx_ShareDialog_checkbox' },\n (0, _languageHandler._t)('Link to selected message')\n )\n );\n\n if (this.state.linkSpecificEvent) {\n matrixToUrl = (0, _matrixTo.makeEventPermalink)(this.props.target.getRoomId(), this.props.target.getId());\n } else {\n matrixToUrl = (0, _matrixTo.makeRoomPermalink)(this.props.target.getRoomId());\n }\n }\n\n var encodedUrl = encodeURIComponent(matrixToUrl);\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n return _react2.default.createElement(\n BaseDialog,\n { title: title,\n className: 'mx_ShareDialog',\n contentId: 'mx_Dialog_content',\n onFinished: this.props.onFinished\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_matrixto' },\n _react2.default.createElement(\n 'a',\n { ref: 'link',\n href: matrixToUrl,\n onClick: ShareDialog.onLinkClick,\n className: 'mx_ShareDialog_matrixto_link'\n },\n matrixToUrl\n ),\n _react2.default.createElement(\n 'a',\n { href: matrixToUrl, className: 'mx_ShareDialog_matrixto_copy', onClick: this.onCopyClick },\n (0, _languageHandler._t)('COPY'),\n _react2.default.createElement(\n 'div',\n null,\n '\\xA0'\n )\n )\n ),\n checkbox,\n _react2.default.createElement('hr', null),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_split' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_qrcode_container' },\n _react2.default.createElement(_qrcodeReact2.default, { value: matrixToUrl, size: 256, logoWidth: 48, logo: 'img/matrix-m.svg' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_ShareDialog_social_container' },\n socials.map(function (social) {\n return _react2.default.createElement(\n 'a',\n { rel: 'noopener',\n target: '_blank',\n key: social.name,\n name: social.name,\n href: social.url(encodedUrl),\n className: 'mx_ShareDialog_social_icon'\n },\n _react2.default.createElement('img', { src: social.img, alt: social.name, height: 64, width: 64 })\n );\n })\n )\n )\n )\n );\n }\n }], [{\n key: '_selectText',\n value: function _selectText(target) {\n var range = document.createRange();\n range.selectNodeContents(target);\n\n var selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }, {\n key: 'onLinkClick',\n value: function onLinkClick(e) {\n e.preventDefault();\n var target = e.target;\n\n ShareDialog._selectText(target);\n }\n }]);\n return ShareDialog;\n}(_react2.default.Component);\n\nShareDialog.propTypes = {\n onFinished: _propTypes2.default.func.isRequired,\n target: _propTypes2.default.oneOfType([_propTypes2.default.instanceOf(_matrixJsSdk.Room), _propTypes2.default.instanceOf(_matrixJsSdk.User), _propTypes2.default.instanceOf(_matrixJsSdk.Group), _propTypes2.default.instanceOf(_matrixJsSdk.RoomMember), _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent)]).isRequired\n};\nexports.default = ShareDialog;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ShareDialog.js.map","'use strict';\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar React = require('react');\nvar PropTypes = require('prop-types');\nvar ReactDOM = require('react-dom');\nvar qr = require('qr.js');\n\nfunction getBackingStorePixelRatio(ctx) {\n return ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;\n}\n\nvar getDOMNode;\nif (/^0\\.14/.test(React.version)) {\n getDOMNode = function getDOMNode(ref) {\n return ref;\n };\n} else {\n getDOMNode = function getDOMNode(ref) {\n return ReactDOM.findDOMNode(ref);\n };\n}\n\nvar QRCode = function (_React$Component) {\n _inherits(QRCode, _React$Component);\n\n function QRCode() {\n _classCallCheck(this, QRCode);\n\n return _possibleConstructorReturn(this, (QRCode.__proto__ || Object.getPrototypeOf(QRCode)).apply(this, arguments));\n }\n\n _createClass(QRCode, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n var that = this;\n return Object.keys(QRCode.propTypes).some(function (k) {\n return that.props[k] !== nextProps[k];\n });\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.update();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.update();\n }\n }, {\n key: 'utf16to8',\n value: function utf16to8(str) {\n var out, i, len, c;\n out = \"\";\n len = str.length;\n for (i = 0; i < len; i++) {\n c = str.charCodeAt(i);\n if (c >= 0x0001 && c <= 0x007F) {\n out += str.charAt(i);\n } else if (c > 0x07FF) {\n out += String.fromCharCode(0xE0 | c >> 12 & 0x0F);\n out += String.fromCharCode(0x80 | c >> 6 & 0x3F);\n out += String.fromCharCode(0x80 | c >> 0 & 0x3F);\n } else {\n out += String.fromCharCode(0xC0 | c >> 6 & 0x1F);\n out += String.fromCharCode(0x80 | c >> 0 & 0x3F);\n }\n }\n return out;\n }\n }, {\n key: 'update',\n value: function update() {\n var value = this.utf16to8(this.props.value);\n var qrcode = qr(value);\n var canvas = getDOMNode(this.refs.canvas);\n\n var ctx = canvas.getContext('2d');\n var cells = qrcode.modules;\n var tileW = this.props.size / cells.length;\n var tileH = this.props.size / cells.length;\n var scale = (window.devicePixelRatio || 1) / getBackingStorePixelRatio(ctx);\n canvas.height = canvas.width = this.props.size * scale;\n ctx.scale(scale, scale);\n\n cells.forEach(function (row, rdx) {\n row.forEach(function (cell, cdx) {\n ctx.fillStyle = cell ? this.props.fgColor : this.props.bgColor;\n var w = Math.ceil((cdx + 1) * tileW) - Math.floor(cdx * tileW);\n var h = Math.ceil((rdx + 1) * tileH) - Math.floor(rdx * tileH);\n ctx.fillRect(Math.round(cdx * tileW), Math.round(rdx * tileH), w, h);\n }, this);\n }, this);\n\n if (this.props.logo) {\n var self = this;\n var size = this.props.size;\n var image = document.createElement('img');\n image.src = this.props.logo;\n image.onload = function () {\n var dwidth = self.props.logoWidth || size * 0.2;\n var dheight = self.props.logoHeight || image.height / image.width * dwidth;\n var dx = (size - dwidth) / 2;\n var dy = (size - dheight) / 2;\n image.width = dwidth;\n image.height = dheight;\n ctx.drawImage(image, dx, dy, dwidth, dheight);\n };\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return React.createElement('canvas', {\n style: { height: this.props.size, width: this.props.size },\n height: this.props.size,\n width: this.props.size,\n ref: 'canvas'\n });\n }\n }]);\n\n return QRCode;\n}(React.Component);\n\nQRCode.propTypes = {\n value: PropTypes.string.isRequired,\n size: PropTypes.number,\n bgColor: PropTypes.string,\n fgColor: PropTypes.string,\n logo: PropTypes.string,\n logoWidth: PropTypes.number,\n logoHeight: PropTypes.number\n};\n\nQRCode.defaultProps = {\n size: 128,\n bgColor: '#FFFFFF',\n fgColor: '#000000',\n value: 'http://facebook.github.io/react/'\n};\n\nmodule.exports = QRCode;\n","var QRCode = require('./lib/QRCode');\r\nvar ErrorCorrectLevel = require('./lib/ErrorCorrectLevel');\r\n\r\nvar qrcode = function(data, opt) {\r\n\topt = opt || {};\r\n\tvar qr = new QRCode(opt.typeNumber || -1,\r\n\t\t\t\t\t\topt.errorCorrectLevel || ErrorCorrectLevel.H);\r\n\tqr.addData(data);\r\n\tqr.make();\r\n\r\n\treturn qr;\r\n};\r\n\r\nqrcode.ErrorCorrectLevel = ErrorCorrectLevel;\r\n\r\nmodule.exports = qrcode;\r\n\r\n","var BitByte = require('./8BitByte');\nvar RSBlock = require('./RSBlock');\nvar BitBuffer = require('./BitBuffer');\nvar util = require('./util');\nvar Polynomial = require('./Polynomial');\n\nfunction QRCode(typeNumber, errorCorrectLevel) {\n\tthis.typeNumber = typeNumber;\n\tthis.errorCorrectLevel = errorCorrectLevel;\n\tthis.modules = null;\n\tthis.moduleCount = 0;\n\tthis.dataCache = null;\n\tthis.dataList = [];\n}\n\n// for client side minification\nvar proto = QRCode.prototype;\n\nproto.addData = function(data) {\n\tvar newData = new BitByte(data);\n\tthis.dataList.push(newData);\n\tthis.dataCache = null;\n};\n\nproto.isDark = function(row, col) {\n\tif (row < 0 || this.moduleCount <= row || col < 0 || this.moduleCount <= col) {\n\t\tthrow new Error(row + \",\" + col);\n\t}\n\treturn this.modules[row][col];\n};\n\nproto.getModuleCount = function() {\n\treturn this.moduleCount;\n};\n\nproto.make = function() {\n\t// Calculate automatically typeNumber if provided is < 1\n\tif (this.typeNumber < 1 ){\n\t\tvar typeNumber = 1;\n\t\tfor (typeNumber = 1; typeNumber < 40; typeNumber++) {\n\t\t\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, this.errorCorrectLevel);\n\n\t\t\tvar buffer = new BitBuffer();\n\t\t\tvar totalDataCount = 0;\n\t\t\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\t\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t\t\t}\n\n\t\t\tfor (var i = 0; i < this.dataList.length; i++) {\n\t\t\t\tvar data = this.dataList[i];\n\t\t\t\tbuffer.put(data.mode, 4);\n\t\t\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\t\t\tdata.write(buffer);\n\t\t\t}\n\t\t\tif (buffer.getLengthInBits() <= totalDataCount * 8)\n\t\t\t\tbreak;\n\t\t}\n\t\tthis.typeNumber = typeNumber;\n\t}\n\tthis.makeImpl(false, this.getBestMaskPattern() );\n};\n\nproto.makeImpl = function(test, maskPattern) {\n\t\n\tthis.moduleCount = this.typeNumber * 4 + 17;\n\tthis.modules = new Array(this.moduleCount);\n\t\n\tfor (var row = 0; row < this.moduleCount; row++) {\n\t\t\n\t\tthis.modules[row] = new Array(this.moduleCount);\n\t\t\n\t\tfor (var col = 0; col < this.moduleCount; col++) {\n\t\t\tthis.modules[row][col] = null;//(col + row) % 3;\n\t\t}\n\t}\n\n\tthis.setupPositionProbePattern(0, 0);\n\tthis.setupPositionProbePattern(this.moduleCount - 7, 0);\n\tthis.setupPositionProbePattern(0, this.moduleCount - 7);\n\tthis.setupPositionAdjustPattern();\n\tthis.setupTimingPattern();\n\tthis.setupTypeInfo(test, maskPattern);\n\t\n\tif (this.typeNumber >= 7) {\n\t\tthis.setupTypeNumber(test);\n\t}\n\n\tif (this.dataCache == null) {\n\t\tthis.dataCache = QRCode.createData(this.typeNumber, this.errorCorrectLevel, this.dataList);\n\t}\n\n\tthis.mapData(this.dataCache, maskPattern);\n};\n\nproto.setupPositionProbePattern = function(row, col) {\n\t\n\tfor (var r = -1; r <= 7; r++) {\n\t\t\n\t\tif (row + r <= -1 || this.moduleCount <= row + r) continue;\n\t\t\n\t\tfor (var c = -1; c <= 7; c++) {\n\t\t\t\n\t\t\tif (col + c <= -1 || this.moduleCount <= col + c) continue;\n\t\t\t\n\t\t\tif ( (0 <= r && r <= 6 && (c == 0 || c == 6) )\n\t\t\t\t\t|| (0 <= c && c <= 6 && (r == 0 || r == 6) )\n\t\t\t\t\t|| (2 <= r && r <= 4 && 2 <= c && c <= 4) ) {\n\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t} else {\n\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t}\n\t\t}\t\t\n\t}\t\t\n};\n\nproto.getBestMaskPattern = function() {\n\n\tvar minLostPoint = 0;\n\tvar pattern = 0;\n\n\tfor (var i = 0; i < 8; i++) {\n\t\t\n\t\tthis.makeImpl(true, i);\n\n\t\tvar lostPoint = util.getLostPoint(this);\n\n\t\tif (i == 0 || minLostPoint > lostPoint) {\n\t\t\tminLostPoint = lostPoint;\n\t\t\tpattern = i;\n\t\t}\n\t}\n\n\treturn pattern;\n};\n\nproto.createMovieClip = function(target_mc, instance_name, depth) {\n\n\tvar qr_mc = target_mc.createEmptyMovieClip(instance_name, depth);\n\tvar cs = 1;\n\n\tthis.make();\n\n\tfor (var row = 0; row < this.modules.length; row++) {\n\t\t\n\t\tvar y = row * cs;\n\t\t\n\t\tfor (var col = 0; col < this.modules[row].length; col++) {\n\n\t\t\tvar x = col * cs;\n\t\t\tvar dark = this.modules[row][col];\n\t\t\n\t\t\tif (dark) {\n\t\t\t\tqr_mc.beginFill(0, 100);\n\t\t\t\tqr_mc.moveTo(x, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y);\n\t\t\t\tqr_mc.lineTo(x + cs, y + cs);\n\t\t\t\tqr_mc.lineTo(x, y + cs);\n\t\t\t\tqr_mc.endFill();\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn qr_mc;\n};\n\nproto.setupTimingPattern = function() {\n\t\n\tfor (var r = 8; r < this.moduleCount - 8; r++) {\n\t\tif (this.modules[r][6] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[r][6] = (r % 2 == 0);\n\t}\n\n\tfor (var c = 8; c < this.moduleCount - 8; c++) {\n\t\tif (this.modules[6][c] != null) {\n\t\t\tcontinue;\n\t\t}\n\t\tthis.modules[6][c] = (c % 2 == 0);\n\t}\n};\n\nproto.setupPositionAdjustPattern = function() {\n\n\tvar pos = util.getPatternPosition(this.typeNumber);\n\t\n\tfor (var i = 0; i < pos.length; i++) {\n\t\n\t\tfor (var j = 0; j < pos.length; j++) {\n\t\t\n\t\t\tvar row = pos[i];\n\t\t\tvar col = pos[j];\n\t\t\t\n\t\t\tif (this.modules[row][col] != null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t\n\t\t\tfor (var r = -2; r <= 2; r++) {\n\t\t\t\n\t\t\t\tfor (var c = -2; c <= 2; c++) {\n\t\t\t\t\n\t\t\t\t\tif (r == -2 || r == 2 || c == -2 || c == 2\n\t\t\t\t\t\t\t|| (r == 0 && c == 0) ) {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = true;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.modules[row + r][col + c] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nproto.setupTypeNumber = function(test) {\n\n\tvar bits = util.getBCHTypeNumber(this.typeNumber);\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod;\n\t}\n\n\tfor (var i = 0; i < 18; i++) {\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\tthis.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod;\n\t}\n};\n\nproto.setupTypeInfo = function(test, maskPattern) {\n\n\tvar data = (this.errorCorrectLevel << 3) | maskPattern;\n\tvar bits = util.getBCHTypeInfo(data);\n\n\t// vertical\t\t\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\n\t\tif (i < 6) {\n\t\t\tthis.modules[i][8] = mod;\n\t\t} else if (i < 8) {\n\t\t\tthis.modules[i + 1][8] = mod;\n\t\t} else {\n\t\t\tthis.modules[this.moduleCount - 15 + i][8] = mod;\n\t\t}\n\t}\n\n\t// horizontal\n\tfor (var i = 0; i < 15; i++) {\n\n\t\tvar mod = (!test && ( (bits >> i) & 1) == 1);\n\t\t\n\t\tif (i < 8) {\n\t\t\tthis.modules[8][this.moduleCount - i - 1] = mod;\n\t\t} else if (i < 9) {\n\t\t\tthis.modules[8][15 - i - 1 + 1] = mod;\n\t\t} else {\n\t\t\tthis.modules[8][15 - i - 1] = mod;\n\t\t}\n\t}\n\n\t// fixed module\n\tthis.modules[this.moduleCount - 8][8] = (!test);\n};\n\nproto.mapData = function(data, maskPattern) {\n\t\n\tvar inc = -1;\n\tvar row = this.moduleCount - 1;\n\tvar bitIndex = 7;\n\tvar byteIndex = 0;\n\t\n\tfor (var col = this.moduleCount - 1; col > 0; col -= 2) {\n\n\t\tif (col == 6) col--;\n\n\t\twhile (true) {\n\n\t\t\tfor (var c = 0; c < 2; c++) {\n\t\t\t\t\n\t\t\t\tif (this.modules[row][col - c] == null) {\n\t\t\t\t\t\n\t\t\t\t\tvar dark = false;\n\n\t\t\t\t\tif (byteIndex < data.length) {\n\t\t\t\t\t\tdark = ( ( (data[byteIndex] >>> bitIndex) & 1) == 1);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar mask = util.getMask(maskPattern, row, col - c);\n\n\t\t\t\t\tif (mask) {\n\t\t\t\t\t\tdark = !dark;\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis.modules[row][col - c] = dark;\n\t\t\t\t\tbitIndex--;\n\n\t\t\t\t\tif (bitIndex == -1) {\n\t\t\t\t\t\tbyteIndex++;\n\t\t\t\t\t\tbitIndex = 7;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\t\t\t\n\t\t\trow += inc;\n\n\t\t\tif (row < 0 || this.moduleCount <= row) {\n\t\t\t\trow -= inc;\n\t\t\t\tinc = -inc;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n};\n\nQRCode.PAD0 = 0xEC;\nQRCode.PAD1 = 0x11;\n\nQRCode.createData = function(typeNumber, errorCorrectLevel, dataList) {\n\t\n\tvar rsBlocks = RSBlock.getRSBlocks(typeNumber, errorCorrectLevel);\n\t\n\tvar buffer = new BitBuffer();\n\t\n\tfor (var i = 0; i < dataList.length; i++) {\n\t\tvar data = dataList[i];\n\t\tbuffer.put(data.mode, 4);\n\t\tbuffer.put(data.getLength(), util.getLengthInBits(data.mode, typeNumber) );\n\t\tdata.write(buffer);\n\t}\n\n\t// calc num max data.\n\tvar totalDataCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalDataCount += rsBlocks[i].dataCount;\n\t}\n\n\tif (buffer.getLengthInBits() > totalDataCount * 8) {\n\t\tthrow new Error(\"code length overflow. (\"\n\t\t\t+ buffer.getLengthInBits()\n\t\t\t+ \">\"\n\t\t\t+ totalDataCount * 8\n\t\t\t+ \")\");\n\t}\n\n\t// end code\n\tif (buffer.getLengthInBits() + 4 <= totalDataCount * 8) {\n\t\tbuffer.put(0, 4);\n\t}\n\n\t// padding\n\twhile (buffer.getLengthInBits() % 8 != 0) {\n\t\tbuffer.putBit(false);\n\t}\n\n\t// padding\n\twhile (true) {\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD0, 8);\n\t\t\n\t\tif (buffer.getLengthInBits() >= totalDataCount * 8) {\n\t\t\tbreak;\n\t\t}\n\t\tbuffer.put(QRCode.PAD1, 8);\n\t}\n\n\treturn QRCode.createBytes(buffer, rsBlocks);\n};\n\nQRCode.createBytes = function(buffer, rsBlocks) {\n\n\tvar offset = 0;\n\t\n\tvar maxDcCount = 0;\n\tvar maxEcCount = 0;\n\t\n\tvar dcdata = new Array(rsBlocks.length);\n\tvar ecdata = new Array(rsBlocks.length);\n\t\n\tfor (var r = 0; r < rsBlocks.length; r++) {\n\n\t\tvar dcCount = rsBlocks[r].dataCount;\n\t\tvar ecCount = rsBlocks[r].totalCount - dcCount;\n\n\t\tmaxDcCount = Math.max(maxDcCount, dcCount);\n\t\tmaxEcCount = Math.max(maxEcCount, ecCount);\n\t\t\n\t\tdcdata[r] = new Array(dcCount);\n\t\t\n\t\tfor (var i = 0; i < dcdata[r].length; i++) {\n\t\t\tdcdata[r][i] = 0xff & buffer.buffer[i + offset];\n\t\t}\n\t\toffset += dcCount;\n\t\t\n\t\tvar rsPoly = util.getErrorCorrectPolynomial(ecCount);\n\t\tvar rawPoly = new Polynomial(dcdata[r], rsPoly.getLength() - 1);\n\n\t\tvar modPoly = rawPoly.mod(rsPoly);\n\t\tecdata[r] = new Array(rsPoly.getLength() - 1);\n\t\tfor (var i = 0; i < ecdata[r].length; i++) {\n var modIndex = i + modPoly.getLength() - ecdata[r].length;\n\t\t\tecdata[r][i] = (modIndex >= 0)? modPoly.get(modIndex) : 0;\n\t\t}\n\n\t}\n\t\n\tvar totalCodeCount = 0;\n\tfor (var i = 0; i < rsBlocks.length; i++) {\n\t\ttotalCodeCount += rsBlocks[i].totalCount;\n\t}\n\n\tvar data = new Array(totalCodeCount);\n\tvar index = 0;\n\n\tfor (var i = 0; i < maxDcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < dcdata[r].length) {\n\t\t\t\tdata[index++] = dcdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (var i = 0; i < maxEcCount; i++) {\n\t\tfor (var r = 0; r < rsBlocks.length; r++) {\n\t\t\tif (i < ecdata[r].length) {\n\t\t\t\tdata[index++] = ecdata[r][i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn data;\n};\n\nmodule.exports = QRCode;\n\n","var mode = require('./mode');\n\nfunction QR8bitByte(data) {\n\tthis.mode = mode.MODE_8BIT_BYTE;\n\tthis.data = data;\n}\n\nQR8bitByte.prototype = {\n\n\tgetLength : function(buffer) {\n\t\treturn this.data.length;\n\t},\n\t\n\twrite : function(buffer) {\n\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t// not JIS ...\n\t\t\tbuffer.put(this.data.charCodeAt(i), 8);\n\t\t}\n\t}\n};\n\nmodule.exports = QR8bitByte;\n\n","// ErrorCorrectLevel\nvar ECL = require('./ErrorCorrectLevel');\n\nfunction QRRSBlock(totalCount, dataCount) {\n\tthis.totalCount = totalCount;\n\tthis.dataCount = dataCount;\n}\n\nQRRSBlock.RS_BLOCK_TABLE = [\n\n\t// L\n\t// M\n\t// Q\n\t// H\n\n\t// 1\n\t[1, 26, 19],\n\t[1, 26, 16],\n\t[1, 26, 13],\n\t[1, 26, 9],\n\t\n\t// 2\n\t[1, 44, 34],\n\t[1, 44, 28],\n\t[1, 44, 22],\n\t[1, 44, 16],\n\n\t// 3\n\t[1, 70, 55],\n\t[1, 70, 44],\n\t[2, 35, 17],\n\t[2, 35, 13],\n\n\t// 4\t\t\n\t[1, 100, 80],\n\t[2, 50, 32],\n\t[2, 50, 24],\n\t[4, 25, 9],\n\t\n\t// 5\n\t[1, 134, 108],\n\t[2, 67, 43],\n\t[2, 33, 15, 2, 34, 16],\n\t[2, 33, 11, 2, 34, 12],\n\t\n\t// 6\n\t[2, 86, 68],\n\t[4, 43, 27],\n\t[4, 43, 19],\n\t[4, 43, 15],\n\t\n\t// 7\t\t\n\t[2, 98, 78],\n\t[4, 49, 31],\n\t[2, 32, 14, 4, 33, 15],\n\t[4, 39, 13, 1, 40, 14],\n\t\n\t// 8\n\t[2, 121, 97],\n\t[2, 60, 38, 2, 61, 39],\n\t[4, 40, 18, 2, 41, 19],\n\t[4, 40, 14, 2, 41, 15],\n\t\n\t// 9\n\t[2, 146, 116],\n\t[3, 58, 36, 2, 59, 37],\n\t[4, 36, 16, 4, 37, 17],\n\t[4, 36, 12, 4, 37, 13],\n\t\n\t// 10\t\t\n\t[2, 86, 68, 2, 87, 69],\n\t[4, 69, 43, 1, 70, 44],\n\t[6, 43, 19, 2, 44, 20],\n\t[6, 43, 15, 2, 44, 16],\n\n\t// 11\n\t[4, 101, 81],\n\t[1, 80, 50, 4, 81, 51],\n\t[4, 50, 22, 4, 51, 23],\n\t[3, 36, 12, 8, 37, 13],\n\n\t// 12\n\t[2, 116, 92, 2, 117, 93],\n\t[6, 58, 36, 2, 59, 37],\n\t[4, 46, 20, 6, 47, 21],\n\t[7, 42, 14, 4, 43, 15],\n\n\t// 13\n\t[4, 133, 107],\n\t[8, 59, 37, 1, 60, 38],\n\t[8, 44, 20, 4, 45, 21],\n\t[12, 33, 11, 4, 34, 12],\n\n\t// 14\n\t[3, 145, 115, 1, 146, 116],\n\t[4, 64, 40, 5, 65, 41],\n\t[11, 36, 16, 5, 37, 17],\n\t[11, 36, 12, 5, 37, 13],\n\n\t// 15\n\t[5, 109, 87, 1, 110, 88],\n\t[5, 65, 41, 5, 66, 42],\n\t[5, 54, 24, 7, 55, 25],\n\t[11, 36, 12],\n\n\t// 16\n\t[5, 122, 98, 1, 123, 99],\n\t[7, 73, 45, 3, 74, 46],\n\t[15, 43, 19, 2, 44, 20],\n\t[3, 45, 15, 13, 46, 16],\n\n\t// 17\n\t[1, 135, 107, 5, 136, 108],\n\t[10, 74, 46, 1, 75, 47],\n\t[1, 50, 22, 15, 51, 23],\n\t[2, 42, 14, 17, 43, 15],\n\n\t// 18\n\t[5, 150, 120, 1, 151, 121],\n\t[9, 69, 43, 4, 70, 44],\n\t[17, 50, 22, 1, 51, 23],\n\t[2, 42, 14, 19, 43, 15],\n\n\t// 19\n\t[3, 141, 113, 4, 142, 114],\n\t[3, 70, 44, 11, 71, 45],\n\t[17, 47, 21, 4, 48, 22],\n\t[9, 39, 13, 16, 40, 14],\n\n\t// 20\n\t[3, 135, 107, 5, 136, 108],\n\t[3, 67, 41, 13, 68, 42],\n\t[15, 54, 24, 5, 55, 25],\n\t[15, 43, 15, 10, 44, 16],\n\n\t// 21\n\t[4, 144, 116, 4, 145, 117],\n\t[17, 68, 42],\n\t[17, 50, 22, 6, 51, 23],\n\t[19, 46, 16, 6, 47, 17],\n\n\t// 22\n\t[2, 139, 111, 7, 140, 112],\n\t[17, 74, 46],\n\t[7, 54, 24, 16, 55, 25],\n\t[34, 37, 13],\n\n\t// 23\n\t[4, 151, 121, 5, 152, 122],\n\t[4, 75, 47, 14, 76, 48],\n\t[11, 54, 24, 14, 55, 25],\n\t[16, 45, 15, 14, 46, 16],\n\n\t// 24\n\t[6, 147, 117, 4, 148, 118],\n\t[6, 73, 45, 14, 74, 46],\n\t[11, 54, 24, 16, 55, 25],\n\t[30, 46, 16, 2, 47, 17],\n\n\t// 25\n\t[8, 132, 106, 4, 133, 107],\n\t[8, 75, 47, 13, 76, 48],\n\t[7, 54, 24, 22, 55, 25],\n\t[22, 45, 15, 13, 46, 16],\n\n\t// 26\n\t[10, 142, 114, 2, 143, 115],\n\t[19, 74, 46, 4, 75, 47],\n\t[28, 50, 22, 6, 51, 23],\n\t[33, 46, 16, 4, 47, 17],\n\n\t// 27\n\t[8, 152, 122, 4, 153, 123],\n\t[22, 73, 45, 3, 74, 46],\n\t[8, 53, 23, 26, 54, 24],\n\t[12, 45, 15, 28, 46, 16],\n\n\t// 28\n\t[3, 147, 117, 10, 148, 118],\n\t[3, 73, 45, 23, 74, 46],\n\t[4, 54, 24, 31, 55, 25],\n\t[11, 45, 15, 31, 46, 16],\n\n\t// 29\n\t[7, 146, 116, 7, 147, 117],\n\t[21, 73, 45, 7, 74, 46],\n\t[1, 53, 23, 37, 54, 24],\n\t[19, 45, 15, 26, 46, 16],\n\n\t// 30\n\t[5, 145, 115, 10, 146, 116],\n\t[19, 75, 47, 10, 76, 48],\n\t[15, 54, 24, 25, 55, 25],\n\t[23, 45, 15, 25, 46, 16],\n\n\t// 31\n\t[13, 145, 115, 3, 146, 116],\n\t[2, 74, 46, 29, 75, 47],\n\t[42, 54, 24, 1, 55, 25],\n\t[23, 45, 15, 28, 46, 16],\n\n\t// 32\n\t[17, 145, 115],\n\t[10, 74, 46, 23, 75, 47],\n\t[10, 54, 24, 35, 55, 25],\n\t[19, 45, 15, 35, 46, 16],\n\n\t// 33\n\t[17, 145, 115, 1, 146, 116],\n\t[14, 74, 46, 21, 75, 47],\n\t[29, 54, 24, 19, 55, 25],\n\t[11, 45, 15, 46, 46, 16],\n\n\t// 34\n\t[13, 145, 115, 6, 146, 116],\n\t[14, 74, 46, 23, 75, 47],\n\t[44, 54, 24, 7, 55, 25],\n\t[59, 46, 16, 1, 47, 17],\n\n\t// 35\n\t[12, 151, 121, 7, 152, 122],\n\t[12, 75, 47, 26, 76, 48],\n\t[39, 54, 24, 14, 55, 25],\n\t[22, 45, 15, 41, 46, 16],\n\n\t// 36\n\t[6, 151, 121, 14, 152, 122],\n\t[6, 75, 47, 34, 76, 48],\n\t[46, 54, 24, 10, 55, 25],\n\t[2, 45, 15, 64, 46, 16],\n\n\t// 37\n\t[17, 152, 122, 4, 153, 123],\n\t[29, 74, 46, 14, 75, 47],\n\t[49, 54, 24, 10, 55, 25],\n\t[24, 45, 15, 46, 46, 16],\n\n\t// 38\n\t[4, 152, 122, 18, 153, 123],\n\t[13, 74, 46, 32, 75, 47],\n\t[48, 54, 24, 14, 55, 25],\n\t[42, 45, 15, 32, 46, 16],\n\n\t// 39\n\t[20, 147, 117, 4, 148, 118],\n\t[40, 75, 47, 7, 76, 48],\n\t[43, 54, 24, 22, 55, 25],\n\t[10, 45, 15, 67, 46, 16],\n\n\t// 40\n\t[19, 148, 118, 6, 149, 119],\n\t[18, 75, 47, 31, 76, 48],\n\t[34, 54, 24, 34, 55, 25],\n\t[20, 45, 15, 61, 46, 16]\n];\n\nQRRSBlock.getRSBlocks = function(typeNumber, errorCorrectLevel) {\n\t\n\tvar rsBlock = QRRSBlock.getRsBlockTable(typeNumber, errorCorrectLevel);\n\t\n\tif (rsBlock == undefined) {\n\t\tthrow new Error(\"bad rs block @ typeNumber:\" + typeNumber + \"/errorCorrectLevel:\" + errorCorrectLevel);\n\t}\n\n\tvar length = rsBlock.length / 3;\n\t\n\tvar list = new Array();\n\t\n\tfor (var i = 0; i < length; i++) {\n\n\t\tvar count = rsBlock[i * 3 + 0];\n\t\tvar totalCount = rsBlock[i * 3 + 1];\n\t\tvar dataCount = rsBlock[i * 3 + 2];\n\n\t\tfor (var j = 0; j < count; j++) {\n\t\t\tlist.push(new QRRSBlock(totalCount, dataCount) );\t\n\t\t}\n\t}\n\t\n\treturn list;\n}\n\nQRRSBlock.getRsBlockTable = function(typeNumber, errorCorrectLevel) {\n\n\tswitch(errorCorrectLevel) {\n\tcase ECL.L :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 0];\n\tcase ECL.M :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 1];\n\tcase ECL.Q :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 2];\n\tcase ECL.H :\n\t\treturn QRRSBlock.RS_BLOCK_TABLE[(typeNumber - 1) * 4 + 3];\n\tdefault :\n\t\treturn undefined;\n\t}\n}\n\nmodule.exports = QRRSBlock;\n","function QRBitBuffer() {\n\tthis.buffer = new Array();\n\tthis.length = 0;\n}\n\nQRBitBuffer.prototype = {\n\n\tget : function(index) {\n\t\tvar bufIndex = Math.floor(index / 8);\n\t\treturn ( (this.buffer[bufIndex] >>> (7 - index % 8) ) & 1) == 1;\n\t},\n\t\n\tput : function(num, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tthis.putBit( ( (num >>> (length - i - 1) ) & 1) == 1);\n\t\t}\n\t},\n\t\n\tgetLengthInBits : function() {\n\t\treturn this.length;\n\t},\n\t\n\tputBit : function(bit) {\n\t\n\t\tvar bufIndex = Math.floor(this.length / 8);\n\t\tif (this.buffer.length <= bufIndex) {\n\t\t\tthis.buffer.push(0);\n\t\t}\n\t\n\t\tif (bit) {\n\t\t\tthis.buffer[bufIndex] |= (0x80 >>> (this.length % 8) );\n\t\t}\n\t\n\t\tthis.length++;\n\t}\n};\n\nmodule.exports = QRBitBuffer;\n","var Mode = require('./mode');\nvar Polynomial = require('./Polynomial');\nvar math = require('./math');\n\nvar QRMaskPattern = {\n\tPATTERN000 : 0,\n\tPATTERN001 : 1,\n\tPATTERN010 : 2,\n\tPATTERN011 : 3,\n\tPATTERN100 : 4,\n\tPATTERN101 : 5,\n\tPATTERN110 : 6,\n\tPATTERN111 : 7\n};\n\nvar QRUtil = {\n\n PATTERN_POSITION_TABLE : [\n\t [],\n\t [6, 18],\n\t [6, 22],\n\t [6, 26],\n\t [6, 30],\n\t [6, 34],\n\t [6, 22, 38],\n\t [6, 24, 42],\n\t [6, 26, 46],\n\t [6, 28, 50],\n\t [6, 30, 54],\t\t\n\t [6, 32, 58],\n\t [6, 34, 62],\n\t [6, 26, 46, 66],\n\t [6, 26, 48, 70],\n\t [6, 26, 50, 74],\n\t [6, 30, 54, 78],\n\t [6, 30, 56, 82],\n\t [6, 30, 58, 86],\n\t [6, 34, 62, 90],\n\t [6, 28, 50, 72, 94],\n\t [6, 26, 50, 74, 98],\n\t [6, 30, 54, 78, 102],\n\t [6, 28, 54, 80, 106],\n\t [6, 32, 58, 84, 110],\n\t [6, 30, 58, 86, 114],\n\t [6, 34, 62, 90, 118],\n\t [6, 26, 50, 74, 98, 122],\n\t [6, 30, 54, 78, 102, 126],\n\t [6, 26, 52, 78, 104, 130],\n\t [6, 30, 56, 82, 108, 134],\n\t [6, 34, 60, 86, 112, 138],\n\t [6, 30, 58, 86, 114, 142],\n\t [6, 34, 62, 90, 118, 146],\n\t [6, 30, 54, 78, 102, 126, 150],\n\t [6, 24, 50, 76, 102, 128, 154],\n\t [6, 28, 54, 80, 106, 132, 158],\n\t [6, 32, 58, 84, 110, 136, 162],\n\t [6, 26, 54, 82, 110, 138, 166],\n\t [6, 30, 58, 86, 114, 142, 170]\n ],\n\n G15 : (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0),\n G18 : (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0),\n G15_MASK : (1 << 14) | (1 << 12) | (1 << 10)\t| (1 << 4) | (1 << 1),\n\n getBCHTypeInfo : function(data) {\n\t var d = data << 10;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) {\n\t\t d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) ) ); \t\n\t }\n\t return ( (data << 10) | d) ^ QRUtil.G15_MASK;\n },\n\n getBCHTypeNumber : function(data) {\n\t var d = data << 12;\n\t while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) {\n\t\t d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) ) ); \t\n\t }\n\t return (data << 12) | d;\n },\n\n getBCHDigit : function(data) {\n\n\t var digit = 0;\n\n\t while (data != 0) {\n\t\t digit++;\n\t\t data >>>= 1;\n\t }\n\n\t return digit;\n },\n\n getPatternPosition : function(typeNumber) {\n\t return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1];\n },\n\n getMask : function(maskPattern, i, j) {\n\t \n\t switch (maskPattern) {\n\t\t \n\t case QRMaskPattern.PATTERN000 : return (i + j) % 2 == 0;\n\t case QRMaskPattern.PATTERN001 : return i % 2 == 0;\n\t case QRMaskPattern.PATTERN010 : return j % 3 == 0;\n\t case QRMaskPattern.PATTERN011 : return (i + j) % 3 == 0;\n\t case QRMaskPattern.PATTERN100 : return (Math.floor(i / 2) + Math.floor(j / 3) ) % 2 == 0;\n\t case QRMaskPattern.PATTERN101 : return (i * j) % 2 + (i * j) % 3 == 0;\n\t case QRMaskPattern.PATTERN110 : return ( (i * j) % 2 + (i * j) % 3) % 2 == 0;\n\t case QRMaskPattern.PATTERN111 : return ( (i * j) % 3 + (i + j) % 2) % 2 == 0;\n\n\t default :\n\t\t throw new Error(\"bad maskPattern:\" + maskPattern);\n\t }\n },\n\n getErrorCorrectPolynomial : function(errorCorrectLength) {\n\n\t var a = new Polynomial([1], 0);\n\n\t for (var i = 0; i < errorCorrectLength; i++) {\n\t\t a = a.multiply(new Polynomial([1, math.gexp(i)], 0) );\n\t }\n\n\t return a;\n },\n\n getLengthInBits : function(mode, type) {\n\n\t if (1 <= type && type < 10) {\n\n\t\t // 1 - 9\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 10;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 9;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 8;\n\t\t case Mode.MODE_KANJI \t: return 8;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 27) {\n\n\t\t // 10 - 26\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 12;\n\t\t case Mode.MODE_ALPHA_NUM \t: return 11;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 10;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else if (type < 41) {\n\n\t\t // 27 - 40\n\n\t\t switch(mode) {\n\t\t case Mode.MODE_NUMBER \t: return 14;\n\t\t case Mode.MODE_ALPHA_NUM\t: return 13;\n\t\t case Mode.MODE_8BIT_BYTE\t: return 16;\n\t\t case Mode.MODE_KANJI \t: return 12;\n\t\t default :\n\t\t\t throw new Error(\"mode:\" + mode);\n\t\t }\n\n\t } else {\n\t\t throw new Error(\"type:\" + type);\n\t }\n },\n\n getLostPoint : function(qrCode) {\n\t \n\t var moduleCount = qrCode.getModuleCount();\n\t \n\t var lostPoint = 0;\n\t \n\t // LEVEL1\n\t \n\t for (var row = 0; row < moduleCount; row++) {\n\n\t\t for (var col = 0; col < moduleCount; col++) {\n\n\t\t\t var sameCount = 0;\n\t\t\t var dark = qrCode.isDark(row, col);\n\n\t\t\t\tfor (var r = -1; r <= 1; r++) {\n\n\t\t\t\t if (row + r < 0 || moduleCount <= row + r) {\n\t\t\t\t\t continue;\n\t\t\t\t }\n\n\t\t\t\t for (var c = -1; c <= 1; c++) {\n\n\t\t\t\t\t if (col + c < 0 || moduleCount <= col + c) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (r == 0 && c == 0) {\n\t\t\t\t\t\t continue;\n\t\t\t\t\t }\n\n\t\t\t\t\t if (dark == qrCode.isDark(row + r, col + c) ) {\n\t\t\t\t\t\t sameCount++;\n\t\t\t\t\t }\n\t\t\t\t }\n\t\t\t }\n\n\t\t\t if (sameCount > 5) {\n\t\t\t\t lostPoint += (3 + sameCount - 5);\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL2\n\n\t for (var row = 0; row < moduleCount - 1; row++) {\n\t\t for (var col = 0; col < moduleCount - 1; col++) {\n\t\t\t var count = 0;\n\t\t\t if (qrCode.isDark(row, col ) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col ) ) count++;\n\t\t\t if (qrCode.isDark(row, col + 1) ) count++;\n\t\t\t if (qrCode.isDark(row + 1, col + 1) ) count++;\n\t\t\t if (count == 0 || count == 4) {\n\t\t\t\t lostPoint += 3;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL3\n\n\t for (var row = 0; row < moduleCount; row++) {\n\t\t for (var col = 0; col < moduleCount - 6; col++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row, col + 1)\n\t\t\t\t\t && qrCode.isDark(row, col + 2)\n\t\t\t\t\t && qrCode.isDark(row, col + 3)\n\t\t\t\t\t && qrCode.isDark(row, col + 4)\n\t\t\t\t\t && !qrCode.isDark(row, col + 5)\n\t\t\t\t\t && qrCode.isDark(row, col + 6) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount - 6; row++) {\n\t\t\t if (qrCode.isDark(row, col)\n\t\t\t\t\t && !qrCode.isDark(row + 1, col)\n\t\t\t\t\t && qrCode.isDark(row + 2, col)\n\t\t\t\t\t && qrCode.isDark(row + 3, col)\n\t\t\t\t\t && qrCode.isDark(row + 4, col)\n\t\t\t\t\t && !qrCode.isDark(row + 5, col)\n\t\t\t\t\t && qrCode.isDark(row + 6, col) ) {\n\t\t\t\t lostPoint += 40;\n\t\t\t }\n\t\t }\n\t }\n\n\t // LEVEL4\n\t \n\t var darkCount = 0;\n\n\t for (var col = 0; col < moduleCount; col++) {\n\t\t for (var row = 0; row < moduleCount; row++) {\n\t\t\t if (qrCode.isDark(row, col) ) {\n\t\t\t\t darkCount++;\n\t\t\t }\n\t\t }\n\t }\n\t \n\t var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5;\n\t lostPoint += ratio * 10;\n\n\t return lostPoint;\t\t\n }\n};\n\nmodule.exports = QRUtil;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'TextInputDialog',\n propTypes: {\n title: _propTypes2.default.string,\n description: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string]),\n value: _propTypes2.default.string,\n button: _propTypes2.default.string,\n focus: _propTypes2.default.bool,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n title: \"\",\n value: \"\",\n description: \"\",\n focus: true\n };\n },\n\n componentDidMount: function componentDidMount() {\n if (this.props.focus) {\n // Set the cursor at the end of the text input\n this.refs.textinput.value = this.props.value;\n }\n },\n\n onOk: function onOk() {\n this.props.onFinished(true, this.refs.textinput.value);\n },\n\n onCancel: function onCancel() {\n this.props.onFinished(false);\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_TextInputDialog', onFinished: this.props.onFinished,\n title: this.props.title\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onOk },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_TextInputDialog_label' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'textinput' },\n ' ',\n this.props.description,\n ' '\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('input', { id: 'textinput', ref: 'textinput', className: 'mx_TextInputDialog_input', defaultValue: this.props.value, autoFocus: this.props.focus, size: '64' })\n )\n )\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: this.props.button,\n onPrimaryButtonClick: this.onOk,\n onCancel: this.onCancel })\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=TextInputDialog.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _reactGeminiScrollbar = require('react-gemini-scrollbar');\n\nvar _reactGeminiScrollbar2 = _interopRequireDefault(_reactGeminiScrollbar);\n\nvar _Resend = require('../../../Resend');\n\nvar _Resend2 = _interopRequireDefault(_Resend);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _cryptodevices = require('../../../cryptodevices');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction DeviceListEntry(props) {\n var userId = props.userId,\n device = props.device;\n\n\n var DeviceVerifyButtons = _index2.default.getComponent('elements.DeviceVerifyButtons');\n\n return _react2.default.createElement(\n 'li',\n null,\n _react2.default.createElement(DeviceVerifyButtons, { device: device, userId: userId }),\n device.deviceId,\n _react2.default.createElement('br', null),\n device.getDisplayName()\n );\n} /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nDeviceListEntry.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n\n // deviceinfo\n device: _propTypes2.default.object.isRequired\n};\n\nfunction UserUnknownDeviceList(props) {\n var userId = props.userId,\n userDevices = props.userDevices;\n\n\n var deviceListEntries = (0, _keys2.default)(userDevices).map(function (deviceId) {\n return _react2.default.createElement(DeviceListEntry, { key: deviceId, userId: userId,\n device: userDevices[deviceId] });\n });\n\n return _react2.default.createElement(\n 'ul',\n { className: 'mx_UnknownDeviceDialog_deviceList' },\n deviceListEntries\n );\n}\n\nUserUnknownDeviceList.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n\n // map from deviceid -> deviceinfo\n userDevices: _propTypes2.default.object.isRequired\n};\n\nfunction UnknownDeviceList(props) {\n var devices = props.devices;\n\n\n var userListEntries = (0, _keys2.default)(devices).map(function (userId) {\n return _react2.default.createElement(\n 'li',\n { key: userId },\n _react2.default.createElement(\n 'p',\n null,\n userId,\n ':'\n ),\n _react2.default.createElement(UserUnknownDeviceList, { userId: userId, userDevices: devices[userId] })\n );\n });\n\n return _react2.default.createElement(\n 'ul',\n null,\n userListEntries\n );\n}\n\nUnknownDeviceList.propTypes = {\n // map from userid -> deviceid -> deviceinfo\n devices: _propTypes2.default.object.isRequired\n};\n\nexports.default = _react2.default.createClass({\n displayName: 'UnknownDeviceDialog',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired,\n\n // map from userid -> deviceid -> deviceinfo or null if devices are not yet loaded\n devices: _propTypes2.default.object,\n\n onFinished: _propTypes2.default.func.isRequired,\n\n // Label for the button that marks all devices known and tries the send again\n sendAnywayLabel: _propTypes2.default.string.isRequired,\n\n // Label for the button that to send the event if you've verified all devices\n sendLabel: _propTypes2.default.string.isRequired,\n\n // function to retry the request once all devices are verified / known\n onSend: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n _MatrixClientPeg2.default.get().on(\"deviceVerificationChanged\", this._onDeviceVerificationChanged);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"deviceVerificationChanged\", this._onDeviceVerificationChanged);\n }\n },\n\n _onDeviceVerificationChanged: function _onDeviceVerificationChanged(userId, deviceId, deviceInfo) {\n if (this.props.devices[userId] && this.props.devices[userId][deviceId]) {\n // XXX: Mutating props :/\n this.props.devices[userId][deviceId] = deviceInfo;\n this.forceUpdate();\n }\n },\n\n _onDismissClicked: function _onDismissClicked() {\n this.props.onFinished();\n },\n\n _onSendAnywayClicked: function _onSendAnywayClicked() {\n (0, _cryptodevices.markAllDevicesKnown)(_MatrixClientPeg2.default.get(), this.props.devices);\n\n this.props.onFinished();\n this.props.onSend();\n },\n\n _onSendClicked: function _onSendClicked() {\n this.props.onFinished();\n this.props.onSend();\n },\n\n render: function render() {\n var _this = this;\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.props.devices === null) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Spinner, null);\n }\n\n var warning = void 0;\n if (_SettingsStore2.default.getValue(\"blacklistUnverifiedDevices\", this.props.room.roomId)) {\n warning = _react2.default.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)(\"You are currently blacklisting unverified devices; to send \" + \"messages to these devices you must verify them.\")\n );\n } else {\n warning = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)(\"We recommend you go through the verification process \" + \"for each device to confirm they belong to their legitimate owner, \" + \"but you can resend the message without verifying if you prefer.\")\n )\n );\n }\n\n var haveUnknownDevices = false;\n (0, _keys2.default)(this.props.devices).forEach(function (userId) {\n (0, _keys2.default)(_this.props.devices[userId]).map(function (deviceId) {\n var device = _this.props.devices[userId][deviceId];\n if (device.isUnverified() && !device.isKnown()) {\n haveUnknownDevices = true;\n }\n });\n });\n var sendButtonOnClick = haveUnknownDevices ? this._onSendAnywayClicked : this._onSendClicked;\n var sendButtonLabel = haveUnknownDevices ? this.props.sendAnywayLabel : this.props.sendAnywayLabel;\n\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n var DialogButtons = _index2.default.getComponent('views.elements.DialogButtons');\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_UnknownDeviceDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)('Room contains unknown devices'),\n contentId: 'mx_Dialog_content'\n },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: false, className: 'mx_Dialog_content', id: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'h4',\n null,\n (0, _languageHandler._t)('\"%(RoomName)s\" contains devices that you haven\\'t seen before.', { RoomName: this.props.room.name })\n ),\n warning,\n (0, _languageHandler._t)(\"Unknown devices\"),\n ':',\n _react2.default.createElement(UnknownDeviceList, { devices: this.props.devices })\n ),\n _react2.default.createElement(DialogButtons, { primaryButton: sendButtonLabel,\n onPrimaryButtonClick: sendButtonOnClick,\n onCancel: this._onDismissClicked })\n );\n // XXX: do we want to give the user the option to enable blacklistUnverifiedDevices for this room (or globally) at this point?\n // It feels like confused users will likely turn it on and then disappear in a cloud of UISIs...\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=UnknownDeviceDialog.js.map","/**\n * gemini-scrollbar\n * @version 1.4.3\n * @link http://noeldelgado.github.io/gemini-scrollbar/\n * @license MIT\n */\n(function() {\n var SCROLLBAR_WIDTH, DONT_CREATE_GEMINI, CLASSNAMES;\n\n CLASSNAMES = {\n element: 'gm-scrollbar-container',\n verticalScrollbar: 'gm-scrollbar -vertical',\n horizontalScrollbar: 'gm-scrollbar -horizontal',\n thumb: 'thumb',\n view: 'gm-scroll-view',\n autoshow: 'gm-autoshow',\n disable: 'gm-scrollbar-disable-selection',\n prevented: 'gm-prevented',\n resizeTrigger: 'gm-resize-trigger',\n };\n\n function getScrollbarWidth() {\n var e = document.createElement('div'), sw;\n e.style.position = 'absolute';\n e.style.top = '-9999px';\n e.style.width = '100px';\n e.style.height = '100px';\n e.style.overflow = 'scroll';\n e.style.msOverflowStyle = 'scrollbar';\n document.body.appendChild(e);\n sw = (e.offsetWidth - e.clientWidth);\n document.body.removeChild(e);\n return sw;\n }\n\n function addClass(el, classNames) {\n if (el.classList) {\n return classNames.forEach(function(cl) {\n el.classList.add(cl);\n });\n }\n el.className += ' ' + classNames.join(' ');\n }\n\n function removeClass(el, classNames) {\n if (el.classList) {\n return classNames.forEach(function(cl) {\n el.classList.remove(cl);\n });\n }\n el.className = el.className.replace(new RegExp('(^|\\\\b)' + classNames.join('|') + '(\\\\b|$)', 'gi'), ' ');\n }\n\n /* Copyright (c) 2015 Lucas Wiener\n * https://github.com/wnr/element-resize-detector\n */\n function isIE() {\n var agent = navigator.userAgent.toLowerCase();\n return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n }\n\n function GeminiScrollbar(config) {\n this.element = null;\n this.autoshow = false;\n this.createElements = true;\n this.forceGemini = false;\n this.onResize = null;\n\n Object.keys(config || {}).forEach(function (propertyName) {\n this[propertyName] = config[propertyName];\n }, this);\n\n SCROLLBAR_WIDTH = getScrollbarWidth();\n DONT_CREATE_GEMINI = ((SCROLLBAR_WIDTH === 0) && (this.forceGemini === false));\n\n this._cache = {events: {}};\n this._created = false;\n this._cursorDown = false;\n this._prevPageX = 0;\n this._prevPageY = 0;\n\n this._document = null;\n this._viewElement = this.element;\n this._scrollbarVerticalElement = null;\n this._thumbVerticalElement = null;\n this._scrollbarHorizontalElement = null;\n this._scrollbarHorizontalElement = null;\n }\n\n GeminiScrollbar.prototype.create = function create() {\n if (DONT_CREATE_GEMINI) {\n addClass(this.element, [CLASSNAMES.prevented]);\n\n if (this.onResize) {\n // still need a resize trigger if we have an onResize callback, which\n // also means we need a separate _viewElement to do the scrolling.\n if (this.createElements === true) {\n this._viewElement = document.createElement('div');\n while(this.element.childNodes.length > 0) {\n this._viewElement.appendChild(this.element.childNodes[0]);\n }\n this.element.appendChild(this._viewElement);\n } else {\n this._viewElement = this.element.querySelector('.' + CLASSNAMES.view);\n }\n addClass(this.element, [CLASSNAMES.element]);\n addClass(this._viewElement, [CLASSNAMES.view]);\n this._createResizeTrigger();\n }\n\n return this;\n }\n\n if (this._created === true) {\n console.warn('calling on a already-created object');\n return this;\n }\n\n if (this.autoshow) {\n addClass(this.element, [CLASSNAMES.autoshow]);\n }\n\n this._document = document;\n\n if (this.createElements === true) {\n this._viewElement = document.createElement('div');\n this._scrollbarVerticalElement = document.createElement('div');\n this._thumbVerticalElement = document.createElement('div');\n this._scrollbarHorizontalElement = document.createElement('div');\n this._thumbHorizontalElement = document.createElement('div');\n while(this.element.childNodes.length > 0) {\n this._viewElement.appendChild(this.element.childNodes[0]);\n }\n\n this._scrollbarVerticalElement.appendChild(this._thumbVerticalElement);\n this._scrollbarHorizontalElement.appendChild(this._thumbHorizontalElement);\n this.element.appendChild(this._scrollbarVerticalElement);\n this.element.appendChild(this._scrollbarHorizontalElement);\n this.element.appendChild(this._viewElement);\n } else {\n this._viewElement = this.element.querySelector('.' + CLASSNAMES.view);\n this._scrollbarVerticalElement = this.element.querySelector('.' + CLASSNAMES.verticalScrollbar.split(' ').join('.'));\n this._thumbVerticalElement = this._scrollbarVerticalElement.querySelector('.' + CLASSNAMES.thumb);\n this._scrollbarHorizontalElement = this.element.querySelector('.' + CLASSNAMES.horizontalScrollbar.split(' ').join('.'));\n this._thumbHorizontalElement = this._scrollbarHorizontalElement.querySelector('.' + CLASSNAMES.thumb);\n }\n\n addClass(this.element, [CLASSNAMES.element]);\n addClass(this._viewElement, [CLASSNAMES.view]);\n addClass(this._scrollbarVerticalElement, CLASSNAMES.verticalScrollbar.split(/\\s/));\n addClass(this._scrollbarHorizontalElement, CLASSNAMES.horizontalScrollbar.split(/\\s/));\n addClass(this._thumbVerticalElement, [CLASSNAMES.thumb]);\n addClass(this._thumbHorizontalElement, [CLASSNAMES.thumb]);\n\n this._scrollbarVerticalElement.style.display = '';\n this._scrollbarHorizontalElement.style.display = '';\n\n this._createResizeTrigger();\n\n this._created = true;\n\n return this._bindEvents().update();\n };\n\n GeminiScrollbar.prototype._createResizeTrigger = function createResizeTrigger() {\n // We need to arrange for self.scrollbar.update to be called whenever\n // the DOM is changed resulting in a size-change for our div. To make\n // this happen, we use a technique described here:\n // http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/.\n //\n // The idea is that we create an <object> element in our div, which we\n // arrange to have the same size as that div. The <object> element\n // contains a Window object, to which we can attach an onresize\n // handler.\n //\n // (React appears to get very confused by the object (we end up with\n // Chrome windows which only show half of the text they are supposed\n // to), so we always do this manually.)\n\n var obj = document.createElement('object');\n addClass(obj, [CLASSNAMES.resizeTrigger]);\n obj.type = 'text/html';\n var resizeHandler = this._resizeHandler.bind(this);\n obj.onload = function () {\n var win = obj.contentDocument.defaultView;\n win.addEventListener('resize', resizeHandler);\n };\n\n //IE: Does not like that this happens before, even if it is also added after.\n if (!isIE()) {\n obj.data = 'about:blank';\n }\n\n this.element.appendChild(obj);\n\n //IE: This must occur after adding the object to the DOM.\n if (isIE()) {\n obj.data = 'about:blank';\n }\n\n this._resizeTriggerElement = obj;\n };\n\n GeminiScrollbar.prototype.update = function update() {\n if (DONT_CREATE_GEMINI) {\n return this;\n }\n\n if (this._created === false) {\n console.warn('calling on a not-yet-created object');\n return this;\n }\n\n var heightPercentage, widthPercentage;\n\n this._viewElement.style.width = ((this.element.offsetWidth + SCROLLBAR_WIDTH).toString() + 'px');\n this._viewElement.style.height = ((this.element.offsetHeight + SCROLLBAR_WIDTH).toString() + 'px');\n\n heightPercentage = (this._viewElement.clientHeight * 100 / this._viewElement.scrollHeight);\n widthPercentage = (this._viewElement.clientWidth * 100 / this._viewElement.scrollWidth);\n\n this._thumbVerticalElement.style.height = (heightPercentage < 100) ? (heightPercentage + '%') : '';\n this._thumbHorizontalElement.style.width = (widthPercentage < 100) ? (widthPercentage + '%') : '';\n\n this._scrollHandler();\n\n return this;\n };\n\n GeminiScrollbar.prototype.destroy = function destroy() {\n if (this._resizeTriggerElement) {\n this.element.removeChild(this._resizeTriggerElement);\n this._resizeTriggerElement = null;\n }\n\n if (DONT_CREATE_GEMINI) {\n return this;\n }\n\n if (this._created === false) {\n console.warn('calling on a not-yet-created object');\n return this;\n }\n\n this._unbinEvents();\n\n removeClass(this.element, [CLASSNAMES.element, CLASSNAMES.autoshow]);\n\n if (this.createElements === true) {\n this.element.removeChild(this._scrollbarVerticalElement);\n this.element.removeChild(this._scrollbarHorizontalElement);\n while(this._viewElement.childNodes.length > 0) {\n this.element.appendChild(this._viewElement.childNodes[0]);\n }\n this.element.removeChild(this._viewElement);\n } else {\n this._viewElement.style.width = '';\n this._viewElement.style.height = '';\n this._scrollbarVerticalElement.style.display = 'none';\n this._scrollbarHorizontalElement.style.display = 'none';\n }\n\n this._created = false;\n this._document = null;\n\n return null;\n };\n\n GeminiScrollbar.prototype.getViewElement = function getViewElement() {\n return this._viewElement;\n };\n\n GeminiScrollbar.prototype._bindEvents = function _bindEvents() {\n this._cache.events.scrollHandler = this._scrollHandler.bind(this);\n this._cache.events.clickVerticalTrackHandler = this._clickVerticalTrackHandler.bind(this);\n this._cache.events.clickHorizontalTrackHandler = this._clickHorizontalTrackHandler.bind(this);\n this._cache.events.clickVerticalThumbHandler = this._clickVerticalThumbHandler.bind(this);\n this._cache.events.clickHorizontalThumbHandler = this._clickHorizontalThumbHandler.bind(this);\n this._cache.events.mouseUpDocumentHandler = this._mouseUpDocumentHandler.bind(this);\n this._cache.events.mouseMoveDocumentHandler = this._mouseMoveDocumentHandler.bind(this);\n\n this._viewElement.addEventListener('scroll', this._cache.events.scrollHandler);\n this._scrollbarVerticalElement.addEventListener('mousedown', this._cache.events.clickVerticalTrackHandler);\n this._scrollbarHorizontalElement.addEventListener('mousedown', this._cache.events.clickHorizontalTrackHandler);\n this._thumbVerticalElement.addEventListener('mousedown', this._cache.events.clickVerticalThumbHandler);\n this._thumbHorizontalElement.addEventListener('mousedown', this._cache.events.clickHorizontalThumbHandler);\n this._document.addEventListener('mouseup', this._cache.events.mouseUpDocumentHandler);\n\n return this;\n };\n\n GeminiScrollbar.prototype._unbinEvents = function _unbinEvents() {\n this._viewElement.removeEventListener('scroll', this._cache.events.scrollHandler);\n this._scrollbarVerticalElement.removeEventListener('mousedown', this._cache.events.clickVerticalTrackHandler);\n this._scrollbarHorizontalElement.removeEventListener('mousedown', this._cache.events.clickHorizontalTrackHandler);\n this._thumbVerticalElement.removeEventListener('mousedown', this._cache.events.clickVerticalThumbHandler);\n this._thumbHorizontalElement.removeEventListener('mousedown', this._cache.events.clickHorizontalThumbHandler);\n this._document.removeEventListener('mouseup', this._cache.events.mouseUpDocumentHandler);\n this._document.removeEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n\n return this;\n };\n\n GeminiScrollbar.prototype._scrollHandler = function _scrollHandler() {\n var viewElement, x, y;\n\n viewElement = this._viewElement;\n y = ((viewElement.scrollTop * 100) / viewElement.clientHeight);\n x = ((viewElement.scrollLeft * 100) / viewElement.clientWidth);\n\n this._thumbVerticalElement.style.msTransform = 'translateY(' + y + '%)';\n this._thumbVerticalElement.style.webkitTransform = 'translateY(' + y + '%)';\n this._thumbVerticalElement.style.transform = 'translateY(' + y + '%)';\n\n this._thumbHorizontalElement.style.msTransform = 'translateX(' + x + '%)';\n this._thumbHorizontalElement.style.webkitTransform = 'translateX(' + x + '%)';\n this._thumbHorizontalElement.style.transform = 'translateX(' + x + '%)';\n };\n\n GeminiScrollbar.prototype._resizeHandler = function _resizeHandler() {\n this.update();\n if (this.onResize) {\n this.onResize();\n }\n };\n\n GeminiScrollbar.prototype._clickVerticalTrackHandler = function _clickVerticalTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect().top - e.clientY)\n , thumbHalf = (this._thumbVerticalElement.offsetHeight / 2)\n , thumbPositionPercentage = ((offset - thumbHalf) * 100 / this._scrollbarVerticalElement.offsetHeight);\n this._viewElement.scrollTop = (thumbPositionPercentage * this._viewElement.scrollHeight / 100);\n };\n\n GeminiScrollbar.prototype._clickHorizontalTrackHandler = function _clickHorizontalTrackHandler(e) {\n var offset = Math.abs(e.target.getBoundingClientRect().left - e.clientX)\n , thumbHalf = (this._thumbHorizontalElement.offsetWidth / 2)\n , thumbPositionPercentage = ((offset - thumbHalf) * 100 / this._scrollbarHorizontalElement.offsetWidth);\n this._viewElement.scrollLeft = (thumbPositionPercentage * this._viewElement.scrollWidth / 100);\n };\n\n GeminiScrollbar.prototype._clickVerticalThumbHandler = function _clickVerticalThumbHandler(e) {\n this._startDrag(e);\n this._prevPageY = (e.currentTarget.offsetHeight - (e.clientY - e.currentTarget.getBoundingClientRect().top));\n };\n\n GeminiScrollbar.prototype._clickHorizontalThumbHandler = function _clickHorizontalThumbHandler(e) {\n this._startDrag(e);\n this._prevPageX = (e.currentTarget.offsetWidth - (e.clientX - e.currentTarget.getBoundingClientRect().left));\n };\n\n GeminiScrollbar.prototype._startDrag = function _startDrag(e) {\n e.stopImmediatePropagation();\n this._cursorDown = true;\n addClass(document.body, [CLASSNAMES.disable]);\n this._document.addEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n this._document.onselectstart = function() {return false;};\n };\n\n GeminiScrollbar.prototype._mouseUpDocumentHandler = function _mouseUpDocumentHandler() {\n this._cursorDown = false;\n this._prevPageX = this._prevPageY = 0;\n removeClass(document.body, [CLASSNAMES.disable]);\n this._document.removeEventListener('mousemove', this._cache.events.mouseMoveDocumentHandler);\n this._document.onselectstart = null;\n };\n\n GeminiScrollbar.prototype._mouseMoveDocumentHandler = function _mouseMoveDocumentHandler(e) {\n if (this._cursorDown === false) {return;}\n\n var offset, thumbClickPosition, thumbPositionPercentage;\n\n if (this._prevPageY) {\n offset = ((this._scrollbarVerticalElement.getBoundingClientRect().top - e.clientY) * -1);\n thumbClickPosition = (this._thumbVerticalElement.offsetHeight - this._prevPageY);\n thumbPositionPercentage = ((offset - thumbClickPosition) * 100 / this._scrollbarVerticalElement.offsetHeight);\n this._viewElement.scrollTop = (thumbPositionPercentage * this._viewElement.scrollHeight / 100);\n return void 0;\n }\n\n if (this._prevPageX) {\n offset = ((this._scrollbarHorizontalElement.getBoundingClientRect().left - e.clientX) * -1);\n thumbClickPosition = (this._thumbHorizontalElement.offsetWidth - this._prevPageX);\n thumbPositionPercentage = ((offset - thumbClickPosition) * 100 / this._scrollbarHorizontalElement.offsetWidth);\n this._viewElement.scrollLeft = (thumbPositionPercentage * this._viewElement.scrollWidth / 100);\n }\n };\n\n if (typeof exports === 'object') {\n module.exports = GeminiScrollbar;\n } else {\n window.GeminiScrollbar = GeminiScrollbar;\n }\n})();\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DirectoryUtils = require('../../../utils/DirectoryUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DEFAULT_ICON_URL = \"img/network-matrix.svg\"; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar NetworkDropdown = function (_React$Component) {\n (0, _inherits3.default)(NetworkDropdown, _React$Component);\n\n function NetworkDropdown(props) {\n (0, _classCallCheck3.default)(this, NetworkDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (NetworkDropdown.__proto__ || (0, _getPrototypeOf2.default)(NetworkDropdown)).call(this, props));\n\n _this.dropdownRootElement = null;\n _this.ignoreEvent = null;\n\n _this.onInputClick = _this.onInputClick.bind(_this);\n _this.onRootClick = _this.onRootClick.bind(_this);\n _this.onDocumentClick = _this.onDocumentClick.bind(_this);\n _this.onMenuOptionClick = _this.onMenuOptionClick.bind(_this);\n _this.onInputKeyUp = _this.onInputKeyUp.bind(_this);\n _this.collectRoot = _this.collectRoot.bind(_this);\n _this.collectInputTextBox = _this.collectInputTextBox.bind(_this);\n\n _this.inputTextBox = null;\n\n var server = _MatrixClientPeg2.default.getHomeServerName();\n _this.state = {\n expanded: false,\n selectedServer: server,\n selectedInstance: null,\n includeAllNetworks: false\n };\n return _this;\n }\n\n (0, _createClass3.default)(NetworkDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Listen for all clicks on the document so we can close the\n // menu when the user clicks somewhere else\n document.addEventListener('click', this.onDocumentClick, false);\n\n // fire this now so the defaults can be set up\n this.props.onOptionChange(this.state.selectedServer, this.state.selectedInstance, this.state.includeAllNetworks);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('click', this.onDocumentClick, false);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.state.expanded && this.inputTextBox) {\n this.inputTextBox.focus();\n }\n }\n }, {\n key: 'onDocumentClick',\n value: function onDocumentClick(ev) {\n // Close the dropdown if the user clicks anywhere that isn't\n // within our root element\n if (ev !== this.ignoreEvent) {\n this.setState({\n expanded: false\n });\n }\n }\n }, {\n key: 'onRootClick',\n value: function onRootClick(ev) {\n // This captures any clicks that happen within our elements,\n // such that we can then ignore them when they're seen by the\n // click listener on the document handler, ie. not close the\n // dropdown immediately after opening it.\n // NB. We can't just stopPropagation() because then the event\n // doesn't reach the React onClick().\n this.ignoreEvent = ev;\n }\n }, {\n key: 'onInputClick',\n value: function onInputClick(ev) {\n this.setState({\n expanded: !this.state.expanded\n });\n ev.preventDefault();\n }\n }, {\n key: 'onMenuOptionClick',\n value: function onMenuOptionClick(server, instance, includeAll) {\n this.setState({\n expanded: false,\n selectedServer: server,\n selectedInstanceId: instance ? instance.instance_id : null,\n includeAll: includeAll\n });\n this.props.onOptionChange(server, instance ? instance.instance_id : null, includeAll);\n }\n }, {\n key: 'onInputKeyUp',\n value: function onInputKeyUp(e) {\n if (e.key == 'Enter') {\n this.setState({\n expanded: false,\n selectedServer: e.target.value,\n selectedNetwork: null\n });\n this.props.onOptionChange(e.target.value, null);\n }\n }\n }, {\n key: 'collectRoot',\n value: function collectRoot(e) {\n if (this.dropdownRootElement) {\n this.dropdownRootElement.removeEventListener('click', this.onRootClick, false);\n }\n if (e) {\n e.addEventListener('click', this.onRootClick, false);\n }\n this.dropdownRootElement = e;\n }\n }, {\n key: 'collectInputTextBox',\n value: function collectInputTextBox(e) {\n this.inputTextBox = e;\n }\n }, {\n key: '_getMenuOptions',\n value: function _getMenuOptions() {\n var options = [];\n\n var servers = [];\n if (this.props.config.servers) {\n servers = servers.concat(this.props.config.servers);\n }\n\n if (servers.indexOf(_MatrixClientPeg2.default.getHomeServerName()) == -1) {\n servers.unshift(_MatrixClientPeg2.default.getHomeServerName());\n }\n\n // For our own HS, we can use the instance_ids given in the third party protocols\n // response to get the server to filter the room list by network for us.\n // We can't get thirdparty protocols for remote server yet though, so for those\n // we can only show the default room list.\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(servers), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var server = _step.value;\n\n options.push(this._makeMenuOption(server, null, true));\n if (server == _MatrixClientPeg2.default.getHomeServerName()) {\n options.push(this._makeMenuOption(server, null, false));\n if (this.props.protocols) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(this.props.protocols)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var proto = _step2.value;\n\n if (!this.props.protocols[proto].instances) continue;\n\n var sortedInstances = this.props.protocols[proto].instances;\n sortedInstances.sort(function (x, y) {\n var a = x.desc;\n var b = y.desc;\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n });\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(sortedInstances), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var instance = _step3.value;\n\n if (!instance.instance_id) continue;\n options.push(this._makeMenuOption(server, instance, false));\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return options;\n }\n }, {\n key: '_makeMenuOption',\n value: function _makeMenuOption(server, instance, includeAll, handleClicks) {\n if (handleClicks === undefined) handleClicks = true;\n\n var icon = void 0;\n var name = void 0;\n var span_class = void 0;\n var key = void 0;\n\n if (!instance && includeAll) {\n key = server;\n name = server;\n span_class = 'mx_NetworkDropdown_menu_all';\n } else if (!instance) {\n key = server + '_all';\n name = 'Matrix';\n icon = _react2.default.createElement('img', { src: 'img/network-matrix.svg' });\n span_class = 'mx_NetworkDropdown_menu_network';\n } else {\n key = server + '_inst_' + instance.instance_id;\n var imgUrl = instance.icon ? _MatrixClientPeg2.default.get().mxcUrlToHttp(instance.icon, 25, 25, 'crop', true) : DEFAULT_ICON_URL;\n icon = _react2.default.createElement('img', { src: imgUrl });\n name = instance.desc;\n span_class = 'mx_NetworkDropdown_menu_network';\n }\n\n var click_handler = handleClicks ? this.onMenuOptionClick.bind(this, server, instance, includeAll) : null;\n\n return _react2.default.createElement(\n 'div',\n { key: key, className: 'mx_NetworkDropdown_networkoption', onClick: click_handler },\n icon,\n _react2.default.createElement(\n 'span',\n { className: 'mx_NetworkDropdown_menu_network' },\n name\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var current_value = void 0;\n\n var menu = void 0;\n if (this.state.expanded) {\n var menu_options = this._getMenuOptions();\n menu = _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown_menu' },\n menu_options\n );\n current_value = _react2.default.createElement('input', { type: 'text', className: 'mx_NetworkDropdown_networkoption',\n ref: this.collectInputTextBox, onKeyUp: this.onInputKeyUp,\n placeholder: 'matrix.org' // 'matrix.org' as an example of an HS name\n });\n } else {\n var instance = (0, _DirectoryUtils.instanceForInstanceId)(this.props.protocols, this.state.selectedInstanceId);\n current_value = this._makeMenuOption(this.state.selectedServer, instance, this.state.includeAll, false);\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown', ref: this.collectRoot },\n _react2.default.createElement(\n 'div',\n { className: 'mx_NetworkDropdown_input', onClick: this.onInputClick },\n current_value,\n _react2.default.createElement('span', { className: 'mx_NetworkDropdown_arrow' }),\n menu\n )\n );\n }\n }]);\n return NetworkDropdown;\n}(_react2.default.Component);\n\nexports.default = NetworkDropdown;\n\n\nNetworkDropdown.propTypes = {\n onOptionChange: _react2.default.PropTypes.func.isRequired,\n protocols: _react2.default.PropTypes.object,\n // The room directory config. May have a 'servers' key that is a list of server names to include in the dropdown\n config: _react2.default.PropTypes.object\n};\n\nNetworkDropdown.defaultProps = {\n protocols: {},\n config: {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=NetworkDropdown.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'RoleButton',\n\n propTypes: {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool,\n action: _propTypes2.default.string.isRequired,\n mouseOverAction: _propTypes2.default.string,\n label: _propTypes2.default.string.isRequired,\n iconPath: _propTypes2.default.string.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n size: \"25\",\n tooltip: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n showTooltip: false\n };\n },\n\n _onClick: function _onClick(ev) {\n ev.stopPropagation();\n _Analytics2.default.trackEvent('Action Button', 'click', this.props.action);\n _dispatcher2.default.dispatch({ action: this.props.action });\n },\n\n _onMouseEnter: function _onMouseEnter() {\n if (this.props.tooltip) this.setState({ showTooltip: true });\n if (this.props.mouseOverAction) {\n _dispatcher2.default.dispatch({ action: this.props.mouseOverAction });\n }\n },\n\n _onMouseLeave: function _onMouseLeave() {\n this.setState({ showTooltip: false });\n },\n\n render: function render() {\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var tooltip = void 0;\n if (this.state.showTooltip) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoleButton_tooltip', label: this.props.label });\n }\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoleButton',\n onClick: this._onClick,\n onMouseEnter: this._onMouseEnter,\n onMouseLeave: this._onMouseLeave,\n 'aria-label': this.props.label\n },\n _react2.default.createElement(TintableSvg, { src: this.props.iconPath, width: this.props.size, height: this.props.size }),\n tooltip\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ActionButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _UserAddress = require('../../../UserAddress');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'AddressSelector',\n\n propTypes: {\n onSelected: _propTypes2.default.func.isRequired,\n\n // List of the addresses to display\n addressList: _propTypes2.default.arrayOf(_UserAddress.UserAddressType).isRequired,\n // Whether to show the address on the address tiles\n showAddress: _propTypes2.default.bool,\n truncateAt: _propTypes2.default.number.isRequired,\n selected: _propTypes2.default.number,\n\n // Element to put as a header on top of the list\n header: _propTypes2.default.node\n },\n\n getInitialState: function getInitialState() {\n return {\n selected: this.props.selected === undefined ? 0 : this.props.selected,\n hover: false\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(props) {\n // Make sure the selected item isn't outside the list bounds\n var selected = this.state.selected;\n var maxSelected = this._maxSelected(props.addressList);\n if (selected > maxSelected) {\n this.setState({ selected: maxSelected });\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // As the user scrolls with the arrow keys keep the selected item\n // at the top of the window.\n if (this.scrollElement && this.props.addressList.length > 0 && !this.state.hover) {\n var elementHeight = this.addressListElement.getBoundingClientRect().height;\n this.scrollElement.scrollTop = this.state.selected * elementHeight - elementHeight;\n }\n },\n\n moveSelectionTop: function moveSelectionTop() {\n if (this.state.selected > 0) {\n this.setState({\n selected: 0,\n hover: false\n });\n }\n },\n\n moveSelectionUp: function moveSelectionUp() {\n if (this.state.selected > 0) {\n this.setState({\n selected: this.state.selected - 1,\n hover: false\n });\n }\n },\n\n moveSelectionDown: function moveSelectionDown() {\n if (this.state.selected < this._maxSelected(this.props.addressList)) {\n this.setState({\n selected: this.state.selected + 1,\n hover: false\n });\n }\n },\n\n chooseSelection: function chooseSelection() {\n this.selectAddress(this.state.selected);\n },\n\n onClick: function onClick(index) {\n this.selectAddress(index);\n },\n\n onMouseEnter: function onMouseEnter(index) {\n this.setState({\n selected: index,\n hover: true\n });\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({ hover: false });\n },\n\n selectAddress: function selectAddress(index) {\n // Only try to select an address if one exists\n if (this.props.addressList.length !== 0) {\n this.props.onSelected(index);\n this.setState({ hover: false });\n }\n },\n\n createAddressListTiles: function createAddressListTiles() {\n var _this = this;\n\n var self = this;\n var AddressTile = _index2.default.getComponent(\"elements.AddressTile\");\n var maxSelected = this._maxSelected(this.props.addressList);\n var addressList = [];\n\n // Only create the address elements if there are address\n if (this.props.addressList.length > 0) {\n for (var i = 0; i <= maxSelected; i++) {\n var classes = (0, _classnames2.default)({\n \"mx_AddressSelector_addressListElement\": true,\n \"mx_AddressSelector_selected\": this.state.selected === i\n });\n\n // NOTE: Defaulting to \"vector\" as the network, until the network backend stuff is done.\n // Saving the addressListElement so we can use it to work out, in the componentDidUpdate\n // method, how far to scroll when using the arrow keys\n addressList.push(_react2.default.createElement(\n 'div',\n {\n className: classes,\n onClick: this.onClick.bind(this, i),\n onMouseEnter: this.onMouseEnter.bind(this, i),\n onMouseLeave: this.onMouseLeave,\n key: this.props.addressList[i].addressType + \"/\" + this.props.addressList[i].address,\n ref: function ref(_ref) {\n _this.addressListElement = _ref;\n }\n },\n _react2.default.createElement(AddressTile, {\n address: this.props.addressList[i],\n showAddress: this.props.showAddress,\n justified: true,\n networkName: 'vector',\n networkUrl: 'img/search-icon-vector.svg'\n })\n ));\n }\n }\n return addressList;\n },\n\n _maxSelected: function _maxSelected(list) {\n var listSize = list.length === 0 ? 0 : list.length - 1;\n var maxSelected = listSize > this.props.truncateAt - 1 ? this.props.truncateAt - 1 : listSize;\n return maxSelected;\n },\n\n render: function render() {\n var _this2 = this;\n\n var classes = (0, _classnames2.default)({\n \"mx_AddressSelector\": true,\n \"mx_AddressSelector_empty\": this.props.addressList.length === 0\n });\n\n return _react2.default.createElement(\n 'div',\n { className: classes, ref: function ref(_ref2) {\n _this2.scrollElement = _ref2;\n } },\n this.props.header,\n this.createAddressListTiles()\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddressSelector.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _UserAddress = require('../../../UserAddress.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'AddressTile',\n\n propTypes: {\n address: _UserAddress.UserAddressType.isRequired,\n canDismiss: _propTypes2.default.bool,\n onDismissed: _propTypes2.default.func,\n justified: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canDismiss: false,\n onDismissed: function onDismissed() {}, // NOP\n justified: false\n };\n },\n\n render: function render() {\n var address = this.props.address;\n var name = address.displayName || address.address;\n\n var imgUrls = [];\n var isMatrixAddress = ['mx-user-id', 'mx-room-id'].includes(address.addressType);\n\n if (isMatrixAddress && address.avatarMxc) {\n imgUrls.push(_MatrixClientPeg2.default.get().mxcUrlToHttp(address.avatarMxc, 25, 25, 'crop'));\n } else if (address.addressType === 'email') {\n imgUrls.push('img/icon-email-user.svg');\n }\n\n // Removing networks for now as they're not really supported\n /*\n var network;\n if (this.props.networkUrl !== \"\") {\n network = (\n <div className=\"mx_AddressTile_network\">\n <BaseAvatar width={25} height={25} name={this.props.networkName} title=\"Riot\" url={this.props.networkUrl} />\n </div>\n );\n }\n */\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var nameClasses = (0, _classnames2.default)({\n \"mx_AddressTile_name\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n var info = void 0;\n var error = false;\n if (isMatrixAddress && address.isKnown) {\n var idClasses = (0, _classnames2.default)({\n \"mx_AddressTile_id\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_mx' },\n _react2.default.createElement(\n 'div',\n { className: nameClasses },\n name\n ),\n this.props.showAddress ? _react2.default.createElement(\n 'div',\n { className: idClasses },\n address.address\n ) : _react2.default.createElement('div', null)\n );\n } else if (isMatrixAddress) {\n var unknownMxClasses = (0, _classnames2.default)({\n \"mx_AddressTile_unknownMx\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: unknownMxClasses },\n this.props.address.address\n );\n } else if (address.addressType === \"email\") {\n var emailClasses = (0, _classnames2.default)({\n \"mx_AddressTile_email\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n var nameNode = null;\n if (address.displayName) {\n nameNode = _react2.default.createElement(\n 'div',\n { className: nameClasses },\n address.displayName\n );\n }\n\n info = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_mx' },\n _react2.default.createElement(\n 'div',\n { className: emailClasses },\n address.address\n ),\n nameNode\n );\n } else {\n error = true;\n var unknownClasses = (0, _classnames2.default)({\n \"mx_AddressTile_unknown\": true,\n \"mx_AddressTile_justified\": this.props.justified\n });\n\n info = _react2.default.createElement(\n 'div',\n { className: unknownClasses },\n (0, _languageHandler._t)(\"Unknown Address\")\n );\n }\n\n var classes = (0, _classnames2.default)({\n \"mx_AddressTile\": true,\n \"mx_AddressTile_error\": error\n });\n\n var dismiss = void 0;\n if (this.props.canDismiss) {\n dismiss = _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_dismiss', onClick: this.props.onDismissed },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-address-delete.svg', width: '9', height: '9' })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_AddressTile_avatar' },\n _react2.default.createElement(BaseAvatar, { defaultToInitialLetter: true, width: 25, height: 25, name: name, title: name, urls: imgUrls })\n ),\n info,\n dismiss\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddressTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _FromWidgetPostMessageApi = require('./FromWidgetPostMessageApi');\n\nvar _FromWidgetPostMessageApi2 = _interopRequireDefault(_FromWidgetPostMessageApi);\n\nvar _ToWidgetPostMessageApi = require('./ToWidgetPostMessageApi');\n\nvar _ToWidgetPostMessageApi2 = _interopRequireDefault(_ToWidgetPostMessageApi);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/*\n* See - https://docs.google.com/document/d/1uPF7XWY_dXTKVKV7jZQ2KmsI19wn9-kFRgQ1tFQP7wQ/edit?usp=sharing for\n* spec. details / documentation.\n*/\n\nif (!global.mxFromWidgetMessaging) {\n global.mxFromWidgetMessaging = new _FromWidgetPostMessageApi2.default();\n global.mxFromWidgetMessaging.start();\n}\nif (!global.mxToWidgetMessaging) {\n global.mxToWidgetMessaging = new _ToWidgetPostMessageApi2.default();\n global.mxToWidgetMessaging.start();\n}\n\nvar OUTBOUND_API_NAME = 'toWidget';\n\nvar WidgetMessaging = function () {\n function WidgetMessaging(widgetId, widgetUrl, target) {\n (0, _classCallCheck3.default)(this, WidgetMessaging);\n\n this.widgetId = widgetId;\n this.widgetUrl = widgetUrl;\n this.target = target;\n this.fromWidget = global.mxFromWidgetMessaging;\n this.toWidget = global.mxToWidgetMessaging;\n this.start();\n }\n\n (0, _createClass3.default)(WidgetMessaging, [{\n key: 'messageToWidget',\n value: function messageToWidget(action) {\n action.widgetId = this.widgetId; // Required to be sent for all outbound requests\n\n return this.toWidget.exec(action, this.target).then(function (data) {\n // Check for errors and reject if found\n if (data.response === undefined) {\n // null is valid\n throw new Error(\"Missing 'response' field\");\n }\n if (data.response && data.response.error) {\n var err = data.response.error;\n var msg = String(err.message ? err.message : \"An error was returned\");\n if (err._error) {\n console.error(err._error);\n }\n // Potential XSS attack if 'msg' is not appropriately sanitized,\n // as it is untrusted input by our parent window (which we assume is Riot).\n // We can't aggressively sanitize [A-z0-9] since it might be a translation.\n throw new Error(msg);\n }\n // Return the response field for the request\n return data.response;\n });\n }\n\n /**\n * Request a screenshot from a widget\n * @return {Promise} To be resolved with screenshot data when it has been generated\n */\n\n }, {\n key: 'getScreenshot',\n value: function getScreenshot() {\n console.warn('Requesting screenshot for', this.widgetId);\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"screenshot\"\n }).catch(function (error) {\n return new Error(\"Failed to get screenshot: \" + error.message);\n }).then(function (response) {\n return response.screenshot;\n });\n }\n\n /**\n * Request capabilities required by the widget\n * @return {Promise} To be resolved with an array of requested widget capabilities\n */\n\n }, {\n key: 'getCapabilities',\n value: function getCapabilities() {\n var _this = this;\n\n console.warn('Requesting capabilities for', this.widgetId);\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"capabilities\"\n }).then(function (response) {\n console.warn('Got capabilities for', _this.widgetId, response.capabilities);\n return response.capabilities;\n });\n }\n }, {\n key: 'sendVisibility',\n value: function sendVisibility(visible) {\n return this.messageToWidget({\n api: OUTBOUND_API_NAME,\n action: \"visibility\",\n visible: visible\n }).catch(function (error) {\n console.error(\"Failed to send visibility: \", error);\n });\n }\n }, {\n key: 'start',\n value: function start() {\n this.fromWidget.addEndpoint(this.widgetId, this.widgetUrl);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.fromWidget.removeEndpoint(this.widgetId, this.widgetUrl);\n }\n }]);\n return WidgetMessaging;\n}();\n\nexports.default = WidgetMessaging;\nmodule.exports = exports['default'];\n//# sourceMappingURL=WidgetMessaging.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _url = require('url');\n\nvar _url2 = _interopRequireDefault(_url);\n\nvar _dispatcher = require('./dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _IntegrationManager = require('./IntegrationManager');\n\nvar _IntegrationManager2 = _interopRequireDefault(_IntegrationManager);\n\nvar _WidgetMessagingEndpoint = require('./WidgetMessagingEndpoint');\n\nvar _WidgetMessagingEndpoint2 = _interopRequireDefault(_WidgetMessagingEndpoint);\n\nvar _ActiveWidgetStore = require('./stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar WIDGET_API_VERSION = '0.0.1'; // Current API version\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the 'License');\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an 'AS IS' BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SUPPORTED_WIDGET_API_VERSIONS = ['0.0.1'];\nvar INBOUND_API_NAME = 'fromWidget';\n\n// Listen for and handle incomming requests using the 'fromWidget' postMessage\n// API and initiate responses\n\nvar FromWidgetPostMessageApi = function () {\n function FromWidgetPostMessageApi() {\n (0, _classCallCheck3.default)(this, FromWidgetPostMessageApi);\n\n this.widgetMessagingEndpoints = [];\n\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.onPostMessage = this.onPostMessage.bind(this);\n }\n\n (0, _createClass3.default)(FromWidgetPostMessageApi, [{\n key: 'start',\n value: function start() {\n window.addEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'stop',\n value: function stop() {\n window.removeEventListener('message', this.onPostMessage);\n }\n\n /**\n * Register a widget endpoint for trusted postMessage communication\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin (protocol + (optional port) + host)\n */\n\n }, {\n key: 'addEndpoint',\n value: function addEndpoint(widgetId, endpointUrl) {\n var u = _url2.default.parse(endpointUrl);\n if (!u || !u.protocol || !u.host) {\n console.warn('Add FromWidgetPostMessageApi endpoint - Invalid origin:', endpointUrl);\n return;\n }\n\n var origin = u.protocol + '//' + u.host;\n var endpoint = new _WidgetMessagingEndpoint2.default(widgetId, origin);\n if (this.widgetMessagingEndpoints.some(function (ep) {\n return ep.widgetId === widgetId && ep.endpointUrl === endpointUrl;\n })) {\n // Message endpoint already registered\n console.warn('Add FromWidgetPostMessageApi - Endpoint already registered');\n return;\n } else {\n console.warn('Adding fromWidget messaging endpoint for ' + widgetId, endpoint);\n this.widgetMessagingEndpoints.push(endpoint);\n }\n }\n\n /**\n * De-register a widget endpoint from trusted communication sources\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin (protocol + (optional port) + host)\n * @return {boolean} True if endpoint was successfully removed\n */\n\n }, {\n key: 'removeEndpoint',\n value: function removeEndpoint(widgetId, endpointUrl) {\n var u = _url2.default.parse(endpointUrl);\n if (!u || !u.protocol || !u.host) {\n console.warn('Remove widget messaging endpoint - Invalid origin');\n return;\n }\n\n var origin = u.protocol + '//' + u.host;\n if (this.widgetMessagingEndpoints && this.widgetMessagingEndpoints.length > 0) {\n var length = this.widgetMessagingEndpoints.length;\n this.widgetMessagingEndpoints = this.widgetMessagingEndpoints.filter(function (endpoint) {\n return endpoint.widgetId != widgetId || endpoint.endpointUrl != origin;\n });\n return length > this.widgetMessagingEndpoints.length;\n }\n return false;\n }\n\n /**\n * Handle widget postMessage events\n * Messages are only handled where a valid, registered messaging endpoints\n * @param {Event} event Event to handle\n * @return {undefined}\n */\n\n }, {\n key: 'onPostMessage',\n value: function onPostMessage(event) {\n if (!event.origin) {\n // Handle chrome\n event.origin = event.originalEvent.origin;\n }\n\n // Event origin is empty string if undefined\n if (event.origin.length === 0 || !this.trustedEndpoint(event.origin) || event.data.api !== INBOUND_API_NAME || !event.data.widgetId) {\n return; // don't log this - debugging APIs like to spam postMessage which floods the log otherwise\n }\n\n // Although the requestId is required, we don't use it. We'll be nice and process the message\n // if the property is missing, but with a warning for widget developers.\n if (!event.data.requestId) {\n console.warn(\"fromWidget action '\" + event.data.action + \"' does not have a requestId\");\n }\n\n var action = event.data.action;\n var widgetId = event.data.widgetId;\n if (action === 'content_loaded') {\n console.warn('Widget reported content loaded for', widgetId);\n _dispatcher2.default.dispatch({\n action: 'widget_content_loaded',\n widgetId: widgetId\n });\n this.sendResponse(event, { success: true });\n } else if (action === 'supported_api_versions') {\n this.sendResponse(event, {\n api: INBOUND_API_NAME,\n supported_versions: SUPPORTED_WIDGET_API_VERSIONS\n });\n } else if (action === 'api_version') {\n this.sendResponse(event, {\n api: INBOUND_API_NAME,\n version: WIDGET_API_VERSION\n });\n } else if (action === 'm.sticker') {\n // console.warn('Got sticker message from widget', widgetId);\n // NOTE -- The widgetData field is deprecated (in favour of the 'data' field) and will be removed eventually\n var data = event.data.data || event.data.widgetData;\n _dispatcher2.default.dispatch({ action: 'm.sticker', data: data, widgetId: event.data.widgetId });\n } else if (action === 'integration_manager_open') {\n // Close the stickerpicker\n _dispatcher2.default.dispatch({ action: 'stickerpicker_close' });\n // Open the integration manager\n // NOTE -- The widgetData field is deprecated (in favour of the 'data' field) and will be removed eventually\n var _data = event.data.data || event.data.widgetData;\n var integType = _data && _data.integType ? _data.integType : null;\n var integId = _data && _data.integId ? _data.integId : null;\n _IntegrationManager2.default.open(integType, integId);\n } else if (action === 'set_always_on_screen') {\n // This is a new message: there is no reason to support the deprecated widgetData here\n var _data2 = event.data.data;\n var val = _data2.value;\n\n if (_ActiveWidgetStore2.default.widgetHasCapability(widgetId, 'm.always_on_screen')) {\n _ActiveWidgetStore2.default.setWidgetPersistence(widgetId, val);\n }\n } else {\n console.warn('Widget postMessage event unhandled');\n this.sendError(event, { message: 'The postMessage was unhandled' });\n }\n }\n\n /**\n * Check if message origin is registered as trusted\n * @param {string} origin PostMessage origin to check\n * @return {boolean} True if trusted\n */\n\n }, {\n key: 'trustedEndpoint',\n value: function trustedEndpoint(origin) {\n if (!origin) {\n return false;\n }\n\n return this.widgetMessagingEndpoints.some(function (endpoint) {\n // TODO / FIXME -- Should this also check the widgetId?\n return endpoint.endpointUrl === origin;\n });\n }\n\n /**\n * Send a postmessage response to a postMessage request\n * @param {Event} event The original postMessage request event\n * @param {Object} res Response data\n */\n\n }, {\n key: 'sendResponse',\n value: function sendResponse(event, res) {\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = res;\n event.source.postMessage(data, event.origin);\n }\n\n /**\n * Send an error response to a postMessage request\n * @param {Event} event The original postMessage request event\n * @param {string} msg Error message\n * @param {Error} nestedError Nested error event (optional)\n */\n\n }, {\n key: 'sendError',\n value: function sendError(event, msg, nestedError) {\n console.error('Action:' + event.data.action + ' failed with message: ' + msg);\n var data = JSON.parse((0, _stringify2.default)(event.data));\n data.response = {\n error: {\n message: msg\n }\n };\n if (nestedError) {\n data.response.error._error = nestedError;\n }\n event.source.postMessage(data, event.origin);\n }\n }]);\n return FromWidgetPostMessageApi;\n}();\n\nexports.default = FromWidgetPostMessageApi;\nmodule.exports = exports['default'];\n//# sourceMappingURL=FromWidgetPostMessageApi.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _Modal = require('./Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('./index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _SdkConfig = require('./SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _ScalarMessaging = require('./ScalarMessaging');\n\nvar _ScalarMessaging2 = _interopRequireDefault(_ScalarMessaging);\n\nvar _ScalarAuthClient = require('./ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _RoomViewStore = require('./stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nif (!global.mxIntegrationManager) {\n global.mxIntegrationManager = {};\n}\n\nvar IntegrationManager = function () {\n function IntegrationManager() {\n (0, _classCallCheck3.default)(this, IntegrationManager);\n }\n\n (0, _createClass3.default)(IntegrationManager, null, [{\n key: '_init',\n value: function _init() {\n if (!global.mxIntegrationManager.client || !global.mxIntegrationManager.connected) {\n if (_SdkConfig2.default.get().integrations_ui_url && _SdkConfig2.default.get().integrations_rest_url) {\n _ScalarMessaging2.default.startListening();\n global.mxIntegrationManager.client = new _ScalarAuthClient2.default();\n\n return global.mxIntegrationManager.client.connect().then(function () {\n global.mxIntegrationManager.connected = true;\n }).catch(function (e) {\n console.error(\"Failed to connect to integrations server\", e);\n global.mxIntegrationManager.error = e;\n });\n } else {\n console.error('Invalid integration manager config', _SdkConfig2.default.get());\n }\n }\n }\n\n /**\n * Launch the integrations manager on the stickers integration page\n * @param {string} integName integration / widget type\n * @param {string} integId integration / widget ID\n * @param {function} onFinished Callback to invoke on integration manager close\n */\n\n }, {\n key: 'open',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(integName, integId, onFinished) {\n var IntegrationsManager, integType, src;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _bluebird.resolve)(IntegrationManager._init());\n\n case 2:\n IntegrationsManager = _index2.default.getComponent(\"views.settings.IntegrationsManager\");\n\n if (!(global.mxIntegrationManager.error || !(global.mxIntegrationManager.client && global.mxIntegrationManager.client.hasCredentials()))) {\n _context.next = 6;\n break;\n }\n\n console.error(\"Scalar error\", global.mxIntegrationManager);\n return _context.abrupt('return');\n\n case 6:\n integType = 'type_' + integName;\n src = global.mxIntegrationManager.client && global.mxIntegrationManager.client.hasCredentials() ? global.mxIntegrationManager.client.getScalarInterfaceUrlForRoom({ roomId: _RoomViewStore2.default.getRoomId() }, integType, integId) : null;\n\n _Modal2.default.createTrackedDialog('Integrations Manager', '', IntegrationsManager, {\n src: src,\n onFinished: onFinished\n }, \"mx_IntegrationsManager\");\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function open(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return open;\n }()\n }]);\n return IntegrationManager;\n}();\n\nexports.default = IntegrationManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=IntegrationManager.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Represents mapping of widget instance to URLs for trusted postMessage communication.\n */\nvar WidgetMessageEndpoint =\n/**\n * Mapping of widget instance to URL for trusted postMessage communication.\n * @param {string} widgetId Unique widget identifier\n * @param {string} endpointUrl Widget wurl origin.\n */\nfunction WidgetMessageEndpoint(widgetId, endpointUrl) {\n (0, _classCallCheck3.default)(this, WidgetMessageEndpoint);\n\n if (!widgetId) {\n throw new Error(\"No widgetId specified in widgetMessageEndpoint constructor\");\n }\n if (!endpointUrl) {\n throw new Error(\"No endpoint specified in widgetMessageEndpoint constructor\");\n }\n this.widgetId = widgetId;\n this.endpointUrl = endpointUrl;\n};\n\nexports.default = WidgetMessageEndpoint;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=WidgetMessagingEndpoint.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// const OUTBOUND_API_NAME = 'toWidget';\n\n// Initiate requests using the \"toWidget\" postMessage API and handle responses\n// NOTE: ToWidgetPostMessageApi only handles message events with a data payload with a\n// response field\nvar ToWidgetPostMessageApi = function () {\n function ToWidgetPostMessageApi(timeoutMs) {\n (0, _classCallCheck3.default)(this, ToWidgetPostMessageApi);\n\n this._timeoutMs = timeoutMs || 5000; // default to 5s timer\n this._counter = 0;\n this._requestMap = {\n // $ID: {resolve, reject}\n };\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.onPostMessage = this.onPostMessage.bind(this);\n }\n\n (0, _createClass3.default)(ToWidgetPostMessageApi, [{\n key: 'start',\n value: function start() {\n window.addEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'stop',\n value: function stop() {\n window.removeEventListener('message', this.onPostMessage);\n }\n }, {\n key: 'onPostMessage',\n value: function onPostMessage(ev) {\n // THIS IS ALL UNSAFE EXECUTION.\n // We do not verify who the sender of `ev` is!\n var payload = ev.data;\n // NOTE: Workaround for running in a mobile WebView where a\n // postMessage immediately triggers this callback even though it is\n // not the response.\n if (payload.response === undefined) {\n return;\n }\n var promise = this._requestMap[payload.requestId];\n if (!promise) {\n return;\n }\n delete this._requestMap[payload.requestId];\n promise.resolve(payload);\n }\n\n // Initiate outbound requests (toWidget)\n\n }, {\n key: 'exec',\n value: function exec(action, targetWindow, targetOrigin) {\n var _this = this;\n\n targetWindow = targetWindow || window.parent; // default to parent window\n targetOrigin = targetOrigin || \"*\";\n this._counter += 1;\n action.requestId = Date.now() + \"-\" + Math.random().toString(36) + \"-\" + this._counter;\n\n return new _bluebird2.default(function (resolve, reject) {\n _this._requestMap[action.requestId] = { resolve: resolve, reject: reject };\n targetWindow.postMessage(action, targetOrigin);\n\n if (_this._timeoutMs > 0) {\n setTimeout(function () {\n if (!_this._requestMap[action.requestId]) {\n return;\n }\n console.error(\"postMessage request timed out. Sent object: \" + (0, _stringify2.default)(action), _this._requestMap);\n _this._requestMap[action.requestId].reject(new Error(\"Timed out\"));\n delete _this._requestMap[action.requestId];\n }, _this._timeoutMs);\n }\n });\n }\n }]);\n return ToWidgetPostMessageApi;\n}(); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = ToWidgetPostMessageApi;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ToWidgetPostMessageApi.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CreateRoomButton = function CreateRoomButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_create_room',\n mouseOverAction: props.callout ? \"callout_create_room\" : null,\n label: (0, _languageHandler._t)(\"Create new room\"),\n iconPath: 'img/icons-create-room.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nCreateRoomButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = CreateRoomButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CreateRoomButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.default = DNDTagTile;\n\nvar _TagTile = require('./TagTile');\n\nvar _TagTile2 = _interopRequireDefault(_TagTile);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction DNDTagTile(props) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: props.tag,\n draggableId: props.tag,\n index: props.index,\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(_TagTile2.default, props)\n ),\n provided.placeholder\n );\n }\n )\n );\n} /* eslint new-cap: \"off\" */\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=DNDTagTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'DeviceVerifyButtons',\n\n propTypes: {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n device: this.props.device\n };\n },\n\n componentWillMount: function componentWillMount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, deviceId, deviceInfo) {\n if (userId === this.props.userId && deviceId === this.props.device.deviceId) {\n this.setState({ device: deviceInfo });\n }\n },\n\n onVerifyClick: function onVerifyClick() {\n var DeviceVerifyDialog = _index2.default.getComponent('views.dialogs.DeviceVerifyDialog');\n _Modal2.default.createTrackedDialog('Device Verify Dialog', '', DeviceVerifyDialog, {\n userId: this.props.userId,\n device: this.state.device\n });\n },\n\n onUnverifyClick: function onUnverifyClick() {\n _MatrixClientPeg2.default.get().setDeviceVerified(this.props.userId, this.state.device.deviceId, false);\n },\n\n onBlacklistClick: function onBlacklistClick() {\n _MatrixClientPeg2.default.get().setDeviceBlocked(this.props.userId, this.state.device.deviceId, true);\n },\n\n onUnblacklistClick: function onUnblacklistClick() {\n _MatrixClientPeg2.default.get().setDeviceBlocked(this.props.userId, this.state.device.deviceId, false);\n },\n\n render: function render() {\n var blacklistButton = null,\n verifyButton = null;\n\n if (this.state.device.isBlocked()) {\n blacklistButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unblacklist',\n onClick: this.onUnblacklistClick },\n (0, _languageHandler._t)(\"Unblacklist\")\n );\n } else {\n blacklistButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_blacklist',\n onClick: this.onBlacklistClick },\n (0, _languageHandler._t)(\"Blacklist\")\n );\n }\n\n if (this.state.device.isVerified()) {\n verifyButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_unverify',\n onClick: this.onUnverifyClick },\n (0, _languageHandler._t)(\"Unverify\")\n );\n } else {\n verifyButton = _react2.default.createElement(\n 'button',\n { className: 'mx_MemberDeviceInfo_textButton mx_MemberDeviceInfo_verify',\n onClick: this.onVerifyClick },\n (0, _languageHandler._t)(\"Verify...\")\n );\n }\n\n // mx_MemberDeviceInfo because the vector's CSS on EncryptedEventDialog is awful\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo mx_DeviceVerifyButtons' },\n verifyButton,\n blacklistButton\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=DeviceVerifyButtons.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Basic container for buttons in modal dialogs.\n */\nmodule.exports = _react2.default.createClass({\n displayName: \"DialogButtons\",\n\n propTypes: {\n // The primary button which is styled differently and has default focus.\n primaryButton: _propTypes2.default.node.isRequired,\n\n // A node to insert into the cancel button instead of default \"Cancel\"\n cancelButton: _propTypes2.default.node,\n\n // onClick handler for the primary button.\n onPrimaryButtonClick: _propTypes2.default.func.isRequired,\n\n // should there be a cancel button? default: true\n hasCancel: _propTypes2.default.bool,\n\n // onClick handler for the cancel button.\n onCancel: _propTypes2.default.func,\n\n focus: _propTypes2.default.bool,\n\n disabled: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n hasCancel: true,\n disabled: false\n };\n },\n\n _onCancelClick: function _onCancelClick() {\n this.props.onCancel();\n },\n\n render: function render() {\n var primaryButtonClassName = \"mx_Dialog_primary\";\n if (this.props.primaryButtonClass) {\n primaryButtonClassName += \" \" + this.props.primaryButtonClass;\n }\n var cancelButton = void 0;\n if (this.props.cancelButton || this.props.hasCancel) {\n cancelButton = _react2.default.createElement(\n \"button\",\n { onClick: this._onCancelClick, disabled: this.props.disabled },\n this.props.cancelButton || (0, _languageHandler._t)(\"Cancel\")\n );\n }\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_Dialog_buttons\" },\n cancelButton,\n this.props.children,\n _react2.default.createElement(\n \"button\",\n { className: primaryButtonClassName,\n onClick: this.props.onPrimaryButtonClick,\n autoFocus: this.props.focus,\n disabled: this.props.disabled\n },\n this.props.primaryButton\n )\n );\n }\n}); /*\n Copyright 2017 Aidan Gauland\n Copyright 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=DialogButtons.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DirectorySearchBox = function (_React$Component) {\n (0, _inherits3.default)(DirectorySearchBox, _React$Component);\n\n function DirectorySearchBox() {\n (0, _classCallCheck3.default)(this, DirectorySearchBox);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DirectorySearchBox.__proto__ || (0, _getPrototypeOf2.default)(DirectorySearchBox)).call(this));\n\n _this._collectInput = _this._collectInput.bind(_this);\n _this._onClearClick = _this._onClearClick.bind(_this);\n _this._onChange = _this._onChange.bind(_this);\n _this._onKeyUp = _this._onKeyUp.bind(_this);\n _this._onJoinButtonClick = _this._onJoinButtonClick.bind(_this);\n\n _this.input = null;\n\n _this.state = {\n value: ''\n };\n return _this;\n }\n\n (0, _createClass3.default)(DirectorySearchBox, [{\n key: '_collectInput',\n value: function _collectInput(e) {\n this.input = e;\n }\n }, {\n key: '_onClearClick',\n value: function _onClearClick() {\n this.setState({ value: '' });\n\n if (this.input) {\n this.input.focus();\n\n if (this.props.onClear) {\n this.props.onClear();\n }\n }\n }\n }, {\n key: '_onChange',\n value: function _onChange(ev) {\n if (!this.input) return;\n this.setState({ value: ev.target.value });\n\n if (this.props.onChange) {\n this.props.onChange(ev.target.value);\n }\n }\n }, {\n key: '_onKeyUp',\n value: function _onKeyUp(ev) {\n if (ev.key == 'Enter' && this.props.showJoinButton) {\n if (this.props.onJoinClick) {\n this.props.onJoinClick(this.state.value);\n }\n }\n }\n }, {\n key: '_onJoinButtonClick',\n value: function _onJoinButtonClick() {\n if (this.props.onJoinClick) {\n this.props.onJoinClick(this.state.value);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var searchbox_classes = {\n mx_DirectorySearchBox: true\n };\n searchbox_classes[this.props.className] = true;\n\n var join_button = void 0;\n if (this.props.showJoinButton) {\n join_button = _react2.default.createElement(\n 'span',\n { className: 'mx_DirectorySearchBox_joinButton',\n onClick: this._onJoinButtonClick\n },\n 'Join'\n );\n }\n\n return _react2.default.createElement(\n 'span',\n { className: (0, _classnames2.default)(searchbox_classes) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DirectorySearchBox_container' },\n _react2.default.createElement('input', { type: 'text', name: 'dirsearch', value: this.state.value,\n className: 'mx_DirectorySearchBox_input',\n ref: this._collectInput,\n onChange: this._onChange, onKeyUp: this._onKeyUp,\n placeholder: this.props.placeholder, autoFocus: true\n }),\n join_button,\n _react2.default.createElement(\n 'span',\n { className: 'mx_DirectorySearchBox_clear_wrapper' },\n _react2.default.createElement('span', { className: 'mx_DirectorySearchBox_clear', onClick: this._onClearClick })\n )\n )\n );\n }\n }]);\n return DirectorySearchBox;\n}(_react2.default.Component); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DirectorySearchBox;\n\n\nDirectorySearchBox.propTypes = {\n className: _propTypes2.default.string,\n onChange: _propTypes2.default.func,\n onClear: _propTypes2.default.func,\n onJoinClick: _propTypes2.default.func,\n placeholder: _propTypes2.default.string,\n showJoinButton: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DirectorySearchBox.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _AccessibleButton = require('./AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MenuOption = function (_React$Component) {\n (0, _inherits3.default)(MenuOption, _React$Component);\n\n function MenuOption(props) {\n (0, _classCallCheck3.default)(this, MenuOption);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MenuOption.__proto__ || (0, _getPrototypeOf2.default)(MenuOption)).call(this, props));\n\n _this._onMouseEnter = _this._onMouseEnter.bind(_this);\n _this._onClick = _this._onClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(MenuOption, [{\n key: '_onMouseEnter',\n value: function _onMouseEnter() {\n this.props.onMouseEnter(this.props.dropdownKey);\n }\n }, {\n key: '_onClick',\n value: function _onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onClick(this.props.dropdownKey);\n }\n }, {\n key: 'render',\n value: function render() {\n var optClasses = (0, _classnames2.default)({\n mx_Dropdown_option: true,\n mx_Dropdown_option_highlight: this.props.highlighted\n });\n\n return _react2.default.createElement(\n 'div',\n { className: optClasses,\n onClick: this._onClick, onKeyPress: this._onKeyPress,\n onMouseEnter: this._onMouseEnter\n },\n this.props.children\n );\n }\n }]);\n return MenuOption;\n}(_react2.default.Component); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nMenuOption.defaultProps = {\n disabled: false\n};\n\n\nMenuOption.propTypes = {\n children: _propTypes2.default.oneOfType([_propTypes2.default.arrayOf(_react2.default.PropTypes.node), _propTypes2.default.node]),\n highlighted: _propTypes2.default.bool,\n dropdownKey: _propTypes2.default.string,\n onClick: _propTypes2.default.func.isRequired,\n onMouseEnter: _propTypes2.default.func.isRequired\n};\n\n/*\n * Reusable dropdown select control, akin to react-select,\n * but somewhat simpler as react-select is 79KB of minified\n * javascript.\n *\n * TODO: Port NetworkDropdown to use this.\n */\n\nvar Dropdown = function (_React$Component2) {\n (0, _inherits3.default)(Dropdown, _React$Component2);\n\n function Dropdown(props) {\n (0, _classCallCheck3.default)(this, Dropdown);\n\n var _this2 = (0, _possibleConstructorReturn3.default)(this, (Dropdown.__proto__ || (0, _getPrototypeOf2.default)(Dropdown)).call(this, props));\n\n _this2.dropdownRootElement = null;\n _this2.ignoreEvent = null;\n\n _this2._onInputClick = _this2._onInputClick.bind(_this2);\n _this2._onRootClick = _this2._onRootClick.bind(_this2);\n _this2._onDocumentClick = _this2._onDocumentClick.bind(_this2);\n _this2._onMenuOptionClick = _this2._onMenuOptionClick.bind(_this2);\n _this2._onInputKeyPress = _this2._onInputKeyPress.bind(_this2);\n _this2._onInputKeyUp = _this2._onInputKeyUp.bind(_this2);\n _this2._onInputChange = _this2._onInputChange.bind(_this2);\n _this2._collectRoot = _this2._collectRoot.bind(_this2);\n _this2._collectInputTextBox = _this2._collectInputTextBox.bind(_this2);\n _this2._setHighlightedOption = _this2._setHighlightedOption.bind(_this2);\n\n _this2.inputTextBox = null;\n\n _this2._reindexChildren(_this2.props.children);\n\n var firstChild = _react2.default.Children.toArray(props.children)[0];\n\n _this2.state = {\n // True if the menu is dropped-down\n expanded: false,\n // The key of the highlighted option\n // (the option that would become selected if you pressed enter)\n highlightedOption: firstChild ? firstChild.key : null,\n // the current search query\n searchQuery: ''\n };\n return _this2;\n }\n\n (0, _createClass3.default)(Dropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n // Listen for all clicks on the document so we can close the\n // menu when the user clicks somewhere else\n document.addEventListener('click', this._onDocumentClick, false);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('click', this._onDocumentClick, false);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!nextProps.children || nextProps.children.length === 0) {\n return;\n }\n this._reindexChildren(nextProps.children);\n var firstChild = nextProps.children[0];\n this.setState({\n highlightedOption: firstChild ? firstChild.key : null\n });\n }\n }, {\n key: '_reindexChildren',\n value: function _reindexChildren(children) {\n var _this3 = this;\n\n this.childrenByKey = {};\n _react2.default.Children.forEach(children, function (child) {\n _this3.childrenByKey[child.key] = child;\n });\n }\n }, {\n key: '_onDocumentClick',\n value: function _onDocumentClick(ev) {\n // Close the dropdown if the user clicks anywhere that isn't\n // within our root element\n if (ev !== this.ignoreEvent) {\n this.setState({\n expanded: false\n });\n }\n }\n }, {\n key: '_onRootClick',\n value: function _onRootClick(ev) {\n // This captures any clicks that happen within our elements,\n // such that we can then ignore them when they're seen by the\n // click listener on the document handler, ie. not close the\n // dropdown immediately after opening it.\n // NB. We can't just stopPropagation() because then the event\n // doesn't reach the React onClick().\n this.ignoreEvent = ev;\n }\n }, {\n key: '_onInputClick',\n value: function _onInputClick(ev) {\n if (this.props.disabled) return;\n\n if (!this.state.expanded) {\n this.setState({\n expanded: true\n });\n ev.preventDefault();\n }\n }\n }, {\n key: '_onMenuOptionClick',\n value: function _onMenuOptionClick(dropdownKey) {\n this.setState({\n expanded: false\n });\n this.props.onOptionChange(dropdownKey);\n }\n }, {\n key: '_onInputKeyPress',\n value: function _onInputKeyPress(e) {\n // This needs to be on the keypress event because otherwise\n // it can't cancel the form submission\n if (e.key == 'Enter') {\n this.setState({\n expanded: false\n });\n this.props.onOptionChange(this.state.highlightedOption);\n e.preventDefault();\n }\n }\n }, {\n key: '_onInputKeyUp',\n value: function _onInputKeyUp(e) {\n // These keys don't generate keypress events and so needs to\n // be on keyup\n if (e.key == 'Escape') {\n this.setState({\n expanded: false\n });\n } else if (e.key == 'ArrowDown') {\n this.setState({\n highlightedOption: this._nextOption(this.state.highlightedOption)\n });\n } else if (e.key == 'ArrowUp') {\n this.setState({\n highlightedOption: this._prevOption(this.state.highlightedOption)\n });\n }\n }\n }, {\n key: '_onInputChange',\n value: function _onInputChange(e) {\n this.setState({\n searchQuery: e.target.value\n });\n if (this.props.onSearchChange) {\n this.props.onSearchChange(e.target.value);\n }\n }\n }, {\n key: '_collectRoot',\n value: function _collectRoot(e) {\n if (this.dropdownRootElement) {\n this.dropdownRootElement.removeEventListener('click', this._onRootClick, false);\n }\n if (e) {\n e.addEventListener('click', this._onRootClick, false);\n }\n this.dropdownRootElement = e;\n }\n }, {\n key: '_collectInputTextBox',\n value: function _collectInputTextBox(e) {\n this.inputTextBox = e;\n if (e) e.focus();\n }\n }, {\n key: '_setHighlightedOption',\n value: function _setHighlightedOption(optionKey) {\n this.setState({\n highlightedOption: optionKey\n });\n }\n }, {\n key: '_nextOption',\n value: function _nextOption(optionKey) {\n var keys = (0, _keys2.default)(this.childrenByKey);\n var index = keys.indexOf(optionKey);\n return keys[(index + 1) % keys.length];\n }\n }, {\n key: '_prevOption',\n value: function _prevOption(optionKey) {\n var keys = (0, _keys2.default)(this.childrenByKey);\n var index = keys.indexOf(optionKey);\n return keys[(index - 1) % keys.length];\n }\n }, {\n key: '_getMenuOptions',\n value: function _getMenuOptions() {\n var _this4 = this;\n\n var options = _react2.default.Children.map(this.props.children, function (child) {\n return _react2.default.createElement(\n MenuOption,\n { key: child.key, dropdownKey: child.key,\n highlighted: _this4.state.highlightedOption == child.key,\n onMouseEnter: _this4._setHighlightedOption,\n onClick: _this4._onMenuOptionClick\n },\n child\n );\n });\n if (options.length === 0) {\n return [_react2.default.createElement(\n 'div',\n { key: '0', className: 'mx_Dropdown_option' },\n (0, _languageHandler._t)(\"No results\")\n )];\n }\n return options;\n }\n }, {\n key: 'render',\n value: function render() {\n var currentValue = void 0;\n\n var menuStyle = {};\n if (this.props.menuWidth) menuStyle.width = this.props.menuWidth;\n\n var menu = void 0;\n if (this.state.expanded) {\n if (this.props.searchEnabled) {\n currentValue = _react2.default.createElement('input', { type: 'text', className: 'mx_Dropdown_option',\n ref: this._collectInputTextBox, onKeyPress: this._onInputKeyPress,\n onKeyUp: this._onInputKeyUp,\n onChange: this._onInputChange,\n value: this.state.searchQuery\n });\n }\n menu = _react2.default.createElement(\n 'div',\n { className: 'mx_Dropdown_menu', style: menuStyle },\n this._getMenuOptions()\n );\n }\n\n if (!currentValue) {\n var selectedChild = this.props.getShortOption ? this.props.getShortOption(this.props.value) : this.childrenByKey[this.props.value];\n currentValue = _react2.default.createElement(\n 'div',\n { className: 'mx_Dropdown_option' },\n selectedChild\n );\n }\n\n var dropdownClasses = {\n mx_Dropdown: true,\n mx_Dropdown_disabled: this.props.disabled\n };\n if (this.props.className) {\n dropdownClasses[this.props.className] = true;\n }\n\n // Note the menu sits inside the AccessibleButton div so it's anchored\n // to the input, but overflows below it. The root contains both.\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(dropdownClasses), ref: this._collectRoot },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_Dropdown_input', onClick: this._onInputClick },\n currentValue,\n _react2.default.createElement('span', { className: 'mx_Dropdown_arrow' }),\n menu\n )\n );\n }\n }]);\n return Dropdown;\n}(_react2.default.Component);\n\nexports.default = Dropdown;\n\n\nDropdown.propTypes = {\n // The width that the dropdown should be. If specified,\n // the dropped-down part of the menu will be set to this\n // width.\n menuWidth: _propTypes2.default.number,\n // Called when the selected option changes\n onOptionChange: _propTypes2.default.func.isRequired,\n // Called when the value of the search field changes\n onSearchChange: _propTypes2.default.func,\n searchEnabled: _propTypes2.default.bool,\n // Function that, given the key of an option, returns\n // a node representing that option to be displayed in the\n // box itself as the currently-selected option (ie. as\n // opposed to in the actual dropped-down part). If\n // unspecified, the appropriate child element is used as\n // in the dropped-down menu.\n getShortOption: _propTypes2.default.func,\n value: _propTypes2.default.string,\n // negative for consistency with HTML\n disabled: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=Dropdown.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EditableItem = _react2.default.createClass({\n displayName: 'EditableItem',\n\n propTypes: {\n initialValue: _propTypes2.default.string,\n index: _propTypes2.default.number,\n placeholder: _propTypes2.default.string,\n\n onChange: _propTypes2.default.func,\n onRemove: _propTypes2.default.func,\n onAdd: _propTypes2.default.func,\n\n addOnChange: _propTypes2.default.bool\n },\n\n onChange: function onChange(value) {\n this.setState({ value: value });\n if (this.props.onChange) this.props.onChange(value, this.props.index);\n if (this.props.addOnChange && this.props.onAdd) this.props.onAdd(value);\n },\n\n onRemove: function onRemove() {\n if (this.props.onRemove) this.props.onRemove(this.props.index);\n },\n\n onAdd: function onAdd() {\n if (this.props.onAdd) this.props.onAdd(this.state.value);\n },\n\n render: function render() {\n var EditableText = _index2.default.getComponent('elements.EditableText');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem' },\n _react2.default.createElement(EditableText, {\n className: 'mx_EditableItem_editable',\n placeholderClassName: 'mx_EditableItem_editablePlaceholder',\n placeholder: this.props.placeholder,\n blurToCancel: false,\n editable: true,\n initialValue: this.props.initialValue,\n onValueChanged: this.onChange }),\n this.props.onAdd ? _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem_addButton' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor',\n src: 'img/plus.svg', width: '14', height: '14',\n alt: (0, _languageHandler._t)(\"Add\"), onClick: this.onAdd })\n ) : _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItem_removeButton' },\n _react2.default.createElement('img', { className: 'mx_filterFlipColor',\n src: 'img/cancel-small.svg', width: '14', height: '14',\n alt: (0, _languageHandler._t)(\"Delete\"), onClick: this.onRemove })\n )\n );\n }\n});\n\nmodule.exports = _react2.default.createClass({\n displayName: 'EditableItemList',\n\n propTypes: {\n items: _propTypes2.default.arrayOf(_propTypes2.default.string).isRequired,\n onNewItemChanged: _propTypes2.default.func,\n onItemAdded: _propTypes2.default.func,\n onItemEdited: _propTypes2.default.func,\n onItemRemoved: _propTypes2.default.func,\n\n canEdit: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onItemAdded: function onItemAdded() {},\n onItemEdited: function onItemEdited() {},\n onItemRemoved: function onItemRemoved() {},\n onNewItemChanged: function onNewItemChanged() {}\n };\n },\n\n onItemAdded: function onItemAdded(value) {\n this.props.onItemAdded(value);\n },\n\n onItemEdited: function onItemEdited(value, index) {\n if (value.length === 0) {\n this.onItemRemoved(index);\n } else {\n this.props.onItemEdited(value, index);\n }\n },\n\n onItemRemoved: function onItemRemoved(index) {\n this.props.onItemRemoved(index);\n },\n\n onNewItemChanged: function onNewItemChanged(value) {\n this.props.onNewItemChanged(value);\n },\n\n render: function render() {\n var _this = this;\n\n var editableItems = this.props.items.map(function (item, index) {\n return _react2.default.createElement(EditableItem, {\n key: index,\n index: index,\n initialValue: item,\n onChange: _this.onItemEdited,\n onRemove: _this.onItemRemoved,\n placeholder: _this.props.placeholder\n });\n });\n\n var label = this.props.items.length > 0 ? this.props.itemsLabel : this.props.noItemsLabel;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItemList' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_EditableItemList_label' },\n label\n ),\n editableItems,\n this.props.canEdit ?\n // This is slightly evil; we want a new instance of\n // EditableItem when the list grows. To make sure it's\n // reset to its initial state.\n _react2.default.createElement(EditableItem, {\n key: editableItems.length,\n initialValue: this.props.newItem,\n onAdd: this.onItemAdded,\n onChange: this.onNewItemChanged,\n addOnChange: true,\n placeholder: this.props.placeholder\n }) : _react2.default.createElement('div', null)\n );\n }\n});\n//# sourceMappingURL=EditableItemList.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'EditableText',\n\n propTypes: {\n onValueChanged: _propTypes2.default.func,\n initialValue: _propTypes2.default.string,\n label: _propTypes2.default.string,\n placeholder: _propTypes2.default.string,\n className: _propTypes2.default.string,\n labelClassName: _propTypes2.default.string,\n placeholderClassName: _propTypes2.default.string,\n // Overrides blurToSubmit if true\n blurToCancel: _propTypes2.default.bool,\n // Will cause onValueChanged(value, true) to fire on blur\n blurToSubmit: _propTypes2.default.bool,\n editable: _propTypes2.default.bool\n },\n\n Phases: {\n Display: \"display\",\n Edit: \"edit\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onValueChanged: function onValueChanged() {},\n initialValue: '',\n label: '',\n placeholder: '',\n editable: true,\n className: \"mx_EditableText\",\n placeholderClassName: \"mx_EditableText_placeholder\",\n blurToSubmit: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.Phases.Display\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n if (nextProps.initialValue !== this.props.initialValue) {\n this.value = nextProps.initialValue;\n if (this.refs.editable_div) {\n this.showPlaceholder(!this.value);\n }\n }\n },\n\n componentWillMount: function componentWillMount() {\n // we track value as an JS object field rather than in React state\n // as React doesn't play nice with contentEditable.\n this.value = '';\n this.placeholder = false;\n },\n\n componentDidMount: function componentDidMount() {\n this.value = this.props.initialValue;\n if (this.refs.editable_div) {\n this.showPlaceholder(!this.value);\n }\n },\n\n showPlaceholder: function showPlaceholder(show) {\n if (show) {\n this.refs.editable_div.textContent = this.props.placeholder;\n this.refs.editable_div.setAttribute(\"class\", this.props.className + \" \" + this.props.placeholderClassName);\n this.placeholder = true;\n this.value = '';\n } else {\n this.refs.editable_div.textContent = this.value;\n this.refs.editable_div.setAttribute(\"class\", this.props.className);\n this.placeholder = false;\n }\n },\n\n getValue: function getValue() {\n return this.value;\n },\n\n setValue: function setValue(value) {\n this.value = value;\n this.showPlaceholder(!this.value);\n },\n\n edit: function edit() {\n this.setState({\n phase: this.Phases.Edit\n });\n },\n\n cancelEdit: function cancelEdit() {\n this.setState({\n phase: this.Phases.Display\n });\n this.value = this.props.initialValue;\n this.showPlaceholder(!this.value);\n this.onValueChanged(false);\n this.refs.editable_div.blur();\n },\n\n onValueChanged: function onValueChanged(shouldSubmit) {\n this.props.onValueChanged(this.value, shouldSubmit);\n },\n\n onKeyDown: function onKeyDown(ev) {\n // console.log(\"keyDown: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n\n if (this.placeholder) {\n this.showPlaceholder(false);\n }\n\n if (ev.key === \"Enter\") {\n ev.stopPropagation();\n ev.preventDefault();\n }\n\n // console.log(\"keyDown: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n },\n\n onKeyUp: function onKeyUp(ev) {\n // console.log(\"keyUp: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n\n if (!ev.target.textContent) {\n this.showPlaceholder(true);\n } else if (!this.placeholder) {\n this.value = ev.target.textContent;\n }\n\n if (ev.key === \"Enter\") {\n this.onFinish(ev);\n } else if (ev.key === \"Escape\") {\n this.cancelEdit();\n }\n\n // console.log(\"keyUp: textContent=\" + ev.target.textContent + \", value=\" + this.value + \", placeholder=\" + this.placeholder);\n },\n\n onClickDiv: function onClickDiv(ev) {\n if (!this.props.editable) return;\n\n this.setState({\n phase: this.Phases.Edit\n });\n },\n\n onFocus: function onFocus(ev) {\n //ev.target.setSelectionRange(0, ev.target.textContent.length);\n\n var node = ev.target.childNodes[0];\n if (node) {\n var range = document.createRange();\n range.setStart(node, 0);\n range.setEnd(node, node.length);\n\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n },\n\n onFinish: function onFinish(ev, shouldSubmit) {\n var _this = this;\n\n var self = this;\n var submit = ev.key === \"Enter\" || shouldSubmit;\n this.setState({\n phase: this.Phases.Display\n }, function () {\n if (_this.value !== _this.props.initialValue) {\n self.onValueChanged(submit);\n }\n });\n },\n\n onBlur: function onBlur(ev) {\n var sel = window.getSelection();\n sel.removeAllRanges();\n\n if (this.props.blurToCancel) {\n this.cancelEdit();\n } else {\n this.onFinish(ev, this.props.blurToSubmit);\n }\n\n this.showPlaceholder(!this.value);\n },\n\n render: function render() {\n var _props = this.props,\n className = _props.className,\n editable = _props.editable,\n initialValue = _props.initialValue,\n label = _props.label,\n labelClassName = _props.labelClassName;\n\n var editableEl = void 0;\n\n if (!editable || this.state.phase === this.Phases.Display && (label || labelClassName) && !this.value) {\n // show the label\n editableEl = _react2.default.createElement(\n 'div',\n { className: className + \" \" + labelClassName, onClick: this.onClickDiv },\n label || initialValue\n );\n } else {\n // show the content editable div, but manually manage its contents as react and contentEditable don't play nice together\n editableEl = _react2.default.createElement('div', { ref: 'editable_div',\n contentEditable: true,\n className: className,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n onFocus: this.onFocus,\n onBlur: this.onBlur });\n }\n\n return editableEl;\n }\n});\n//# sourceMappingURL=EditableText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A component which wraps an EditableText, with a spinner while updates take\n * place.\n *\n * Parent components should supply an 'onSubmit' callback which returns a\n * promise; a spinner is shown until the promise resolves.\n *\n * The parent can also supply a 'getIntialValue' callback, which works in a\n * similarly asynchronous way. If this is not provided, the initial value is\n * taken from the 'initialValue' property.\n */\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar EditableTextContainer = function (_React$Component) {\n (0, _inherits3.default)(EditableTextContainer, _React$Component);\n\n function EditableTextContainer(props, context) {\n (0, _classCallCheck3.default)(this, EditableTextContainer);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EditableTextContainer.__proto__ || (0, _getPrototypeOf2.default)(EditableTextContainer)).call(this, props, context));\n\n _this._unmounted = false;\n _this.state = {\n busy: false,\n errorString: null,\n value: props.initialValue\n };\n _this._onValueChanged = _this._onValueChanged.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(EditableTextContainer, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n if (this.props.getInitialValue === undefined) {\n // use whatever was given in the initialValue property.\n return;\n }\n\n this.setState({ busy: true });\n\n this.props.getInitialValue().done(function (result) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({\n busy: false,\n value: result\n });\n }, function (error) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({\n errorString: error.toString(),\n busy: false\n });\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onValueChanged',\n value: function _onValueChanged(value, shouldSubmit) {\n var _this3 = this;\n\n if (!shouldSubmit) {\n return;\n }\n\n this.setState({\n busy: true,\n errorString: null\n });\n\n this.props.onSubmit(value).done(function () {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n busy: false,\n value: value\n });\n }, function (error) {\n if (_this3._unmounted) {\n return;\n }\n _this3.setState({\n errorString: error.toString(),\n busy: false\n });\n });\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.state.busy) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(Loader, null);\n } else if (this.state.errorString) {\n return _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorString\n );\n } else {\n var EditableText = _index2.default.getComponent('elements.EditableText');\n return _react2.default.createElement(EditableText, { initialValue: this.state.value,\n placeholder: this.props.placeholder,\n onValueChanged: this._onValueChanged,\n blurToSubmit: this.props.blurToSubmit\n });\n }\n }\n }]);\n return EditableTextContainer;\n}(_react2.default.Component);\n\nexports.default = EditableTextContainer;\n\n\nEditableTextContainer.propTypes = {\n /* callback to retrieve the initial value. */\n getInitialValue: _propTypes2.default.func,\n\n /* initial value; used if getInitialValue is not given */\n initialValue: _propTypes2.default.string,\n\n /* placeholder text to use when the value is empty (and not being\n * edited) */\n placeholder: _propTypes2.default.string,\n\n /* callback to update the value. Called with a single argument: the new\n * value. */\n onSubmit: _propTypes2.default.func,\n\n /* should the input submit when focus is lost? */\n blurToSubmit: _propTypes2.default.bool\n};\n\nEditableTextContainer.defaultProps = {\n initialValue: \"\",\n placeholder: \"\",\n blurToSubmit: false,\n onSubmit: function onSubmit(v) {\n return _bluebird2.default.resolve();\n }\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=EditableTextContainer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nexports.default = EmojiText;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction EmojiText(props) {\n var element = props.element,\n children = props.children,\n restProps = (0, _objectWithoutProperties3.default)(props, ['element', 'children']);\n\n // fast path: simple regex to detect strings that don't contain\n // emoji and just return them\n\n if ((0, _HtmlUtils.containsEmoji)(children)) {\n restProps.dangerouslySetInnerHTML = (0, _HtmlUtils.emojifyText)(children);\n return _react2.default.createElement(element, restProps);\n } else {\n return _react2.default.createElement(element, restProps, children);\n }\n} /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nEmojiText.propTypes = {\n element: _propTypes2.default.string,\n children: _propTypes2.default.string.isRequired\n};\n\nEmojiText.defaultProps = {\n element: 'span'\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=EmojiText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactGeminiScrollbar = require('react-gemini-scrollbar');\n\nvar _reactGeminiScrollbar2 = _interopRequireDefault(_reactGeminiScrollbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction GeminiScrollbarWrapper(props) {\n var wrappedRef = props.wrappedRef,\n wrappedProps = (0, _objectWithoutProperties3.default)(props, ['wrappedRef']);\n\n // Enable forceGemini so that gemini is always enabled. This is\n // to avoid future issues where a feature is implemented without\n // doing QA on every OS/browser combination.\n //\n // By default GeminiScrollbar allows native scrollbars to be used\n // on macOS. Use forceGemini to enable Gemini's non-native\n // scrollbars on all OSs.\n\n return _react2.default.createElement(\n _reactGeminiScrollbar2.default,\n (0, _extends3.default)({ ref: wrappedRef, forceGemini: true }, wrappedProps),\n props.children\n );\n}\nexports.default = GeminiScrollbarWrapper;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GeminiScrollbarWrapper.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GroupsButton = function GroupsButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_my_groups',\n label: (0, _languageHandler._t)(\"Communities\"),\n iconPath: 'img/icons-groups.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nGroupsButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = GroupsButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupsButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar HomeButton = function HomeButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_home_page',\n label: (0, _languageHandler._t)(\"Home\"),\n iconPath: 'img/icons-home.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nHomeButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = HomeButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=HomeButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _DateUtils = require('../../../DateUtils');\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar React = require('react');\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar filesize = require('filesize');\nvar AccessibleButton = require('../../../components/views/elements/AccessibleButton');\nvar Modal = require('../../../Modal');\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'ImageView',\n\n propTypes: {\n src: React.PropTypes.string.isRequired, // the source of the image being displayed\n name: React.PropTypes.string, // the main title ('name') for the image\n link: React.PropTypes.string, // the link (if any) applied to the name of the image\n width: React.PropTypes.number, // width of the image src in pixels\n height: React.PropTypes.number, // height of the image src in pixels\n fileSize: React.PropTypes.number, // size of the image src in bytes\n onFinished: React.PropTypes.func.isRequired, // callback when the lightbox is dismissed\n\n // the event (if any) that the Image is displaying. Used for event-specific stuff like\n // redactions, senders, timestamps etc. Other descriptors are taken from the explicit\n // properties above, which let us use lightboxes to display images which aren't associated\n // with events.\n mxEvent: React.PropTypes.object\n },\n\n // XXX: keyboard shortcuts for managing dialogs should be done by the modal\n // dialog base class somehow, surely...\n componentDidMount: function componentDidMount() {\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n onRedactClick: function onRedactClick() {\n var _this = this;\n\n var ConfirmRedactDialog = sdk.getComponent(\"dialogs.ConfirmRedactDialog\");\n Modal.createTrackedDialog('Confirm Redact Dialog', 'Image View', ConfirmRedactDialog, {\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n var self = _this;\n MatrixClientPeg.get().redactEvent(_this.props.mxEvent.getRoomId(), _this.props.mxEvent.getId()).catch(function (e) {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n // display error message stating you couldn't delete this.\n var code = e.errcode || e.statusCode;\n Modal.createTrackedDialog('You cannot delete this image.', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('You cannot delete this image. (%(code)s)', { code: code })\n });\n }).done();\n }\n });\n },\n\n getName: function getName() {\n var name = this.props.name;\n if (name && this.props.link) {\n name = React.createElement(\n 'a',\n { href: this.props.link, target: '_blank', rel: 'noopener' },\n name\n );\n }\n return name;\n },\n\n render: function render() {\n\n /*\n // In theory max-width: 80%, max-height: 80% on the CSS should work\n // but in practice, it doesn't, so do it manually:\n \n var width = this.props.width || 500;\n var height = this.props.height || 500;\n \n var maxWidth = document.documentElement.clientWidth * 0.8;\n var maxHeight = document.documentElement.clientHeight * 0.8;\n \n var widthFrac = width / maxWidth;\n var heightFrac = height / maxHeight;\n \n var displayWidth;\n var displayHeight;\n if (widthFrac > heightFrac) {\n displayWidth = Math.min(width, maxWidth);\n displayHeight = (displayWidth / width) * height;\n } else {\n displayHeight = Math.min(height, maxHeight);\n displayWidth = (displayHeight / height) * width;\n }\n \n var style = {\n width: displayWidth,\n height: displayHeight\n };\n */\n var style, res;\n\n if (this.props.width && this.props.height) {\n style = {\n width: this.props.width,\n height: this.props.height\n };\n res = style.width + \"x\" + style.height + \"px\";\n }\n\n var size;\n if (this.props.fileSize) {\n size = filesize(this.props.fileSize);\n }\n\n var size_res;\n if (size && res) {\n size_res = size + \", \" + res;\n } else {\n size_res = size || res;\n }\n\n var showEventMeta = !!this.props.mxEvent;\n\n var eventMeta;\n if (showEventMeta) {\n // Figure out the sender, defaulting to mxid\n var sender = this.props.mxEvent.getSender();\n var room = MatrixClientPeg.get().getRoom(this.props.mxEvent.getRoomId());\n if (room) {\n var member = room.getMember(sender);\n if (member) sender = member.name;\n }\n\n eventMeta = React.createElement(\n 'div',\n { className: 'mx_ImageView_metadata' },\n (0, _languageHandler._t)('Uploaded on %(date)s by %(user)s', { date: (0, _DateUtils.formatDate)(new Date(this.props.mxEvent.getTs())), user: sender })\n );\n }\n\n var eventRedact;\n if (showEventMeta) {\n eventRedact = React.createElement(\n 'div',\n { className: 'mx_ImageView_button', onClick: this.onRedactClick },\n (0, _languageHandler._t)('Remove')\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_ImageView' },\n React.createElement('div', { className: 'mx_ImageView_lhs' }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_content' },\n React.createElement('img', { src: this.props.src, style: style }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_labelWrapper' },\n React.createElement(\n 'div',\n { className: 'mx_ImageView_label' },\n React.createElement(\n AccessibleButton,\n { className: 'mx_ImageView_cancel', onClick: this.props.onFinished },\n React.createElement('img', { src: 'img/cancel-white.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n ),\n React.createElement('div', { className: 'mx_ImageView_shim' }),\n React.createElement(\n 'div',\n { className: 'mx_ImageView_name' },\n this.getName()\n ),\n eventMeta,\n React.createElement(\n 'a',\n { className: 'mx_ImageView_link', href: this.props.src, download: this.props.name, target: '_blank', rel: 'noopener' },\n React.createElement(\n 'div',\n { className: 'mx_ImageView_download' },\n (0, _languageHandler._t)('Download this file'),\n React.createElement('br', null),\n React.createElement(\n 'span',\n { className: 'mx_ImageView_size' },\n size_res\n )\n )\n ),\n eventRedact,\n React.createElement('div', { className: 'mx_ImageView_shim' })\n )\n )\n ),\n React.createElement('div', { className: 'mx_ImageView_rhs' })\n );\n }\n});\n//# sourceMappingURL=ImageView.js.map","'use strict';\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'InlineSpinner',\n\n render: function render() {\n var w = this.props.w || 16;\n var h = this.props.h || 16;\n var imgClass = this.props.imgClassName || \"\";\n\n return React.createElement(\n 'div',\n { className: 'mx_InlineSpinner' },\n React.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n});\n//# sourceMappingURL=InlineSpinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar languageHandler = _interopRequireWildcard(_languageHandler);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction languageMatchesSearchQuery(query, language) {\n if (language.label.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (language.value.toUpperCase() == query.toUpperCase()) return true;\n return false;\n} /*\n Copyright 2017 Marcel Radzio (MTRNord)\n Copyright 2017 Vector Creations Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar LanguageDropdown = function (_React$Component) {\n (0, _inherits3.default)(LanguageDropdown, _React$Component);\n\n function LanguageDropdown(props) {\n (0, _classCallCheck3.default)(this, LanguageDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (LanguageDropdown.__proto__ || (0, _getPrototypeOf2.default)(LanguageDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n\n _this.state = {\n searchQuery: '',\n langs: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(LanguageDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var _this2 = this;\n\n languageHandler.getAllLanguagesFromJson().then(function (langs) {\n langs.sort(function (a, b) {\n if (a.label < b.label) return -1;\n if (a.label > b.label) return 1;\n return 0;\n });\n _this2.setState({ langs: langs });\n }).catch(function () {\n _this2.setState({ langs: ['en'] });\n }).done();\n\n if (!this.props.value) {\n // If no value is given, we start with the first\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n if (language) {\n this.props.onOptionChange(language);\n } else {\n var _language = languageHandler.normalizeLanguageKey(languageHandler.getLanguageFromBrowser());\n this.props.onOptionChange(_language);\n }\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n if (this.state.langs === null) {\n var Spinner = _index2.default.getComponent('elements.Spinner');\n return _react2.default.createElement(Spinner, null);\n }\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedLanguages = void 0;\n if (this.state.searchQuery) {\n displayedLanguages = this.state.langs.filter(function (lang) {\n return languageMatchesSearchQuery(_this3.state.searchQuery, lang);\n });\n } else {\n displayedLanguages = this.state.langs;\n }\n\n var options = displayedLanguages.map(function (language) {\n return _react2.default.createElement(\n 'div',\n { key: language.value },\n language.label\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var language = _SettingsStore2.default.getValue(\"language\", null, /*excludeDefault:*/true);\n var value = null;\n if (language) {\n value = this.props.value || language;\n } else {\n language = navigator.language || navigator.userLanguage;\n value = this.props.value || language;\n }\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className,\n onOptionChange: this.props.onOptionChange, onSearchChange: this._onSearchChange,\n searchEnabled: true, value: value\n },\n options\n );\n }\n }]);\n return LanguageDropdown;\n}(_react2.default.Component);\n\nexports.default = LanguageDropdown;\n\n\nLanguageDropdown.propTypes = {\n className: _propTypes2.default.string,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=LanguageDropdown.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MemberAvatar = require('../avatars/MemberAvatar.js'); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MemberEventListSummary',\n\n propTypes: {\n // An array of member events to summarise\n events: _propTypes2.default.array.isRequired,\n // An array of EventTiles to render when expanded\n children: _propTypes2.default.array.isRequired,\n // The maximum number of names to show in either each summary e.g. 2 would result \"A, B and 234 others left\"\n summaryLength: _propTypes2.default.number,\n // The maximum number of avatars to display in the summary\n avatarsMaxLength: _propTypes2.default.number,\n // The minimum number of events needed to trigger summarisation\n threshold: _propTypes2.default.number,\n // Called when the MELS expansion is toggled\n onToggle: _propTypes2.default.func,\n // Whether or not to begin with state.expanded=true\n startExpanded: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n expanded: Boolean(this.props.startExpanded)\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n summaryLength: 1,\n threshold: 3,\n avatarsMaxLength: 5\n };\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n // Update if\n // - The number of summarised events has changed\n // - or if the summary is currently expanded\n // - or if the summary is about to toggle to become collapsed\n // - or if there are fewEvents, meaning the child eventTiles are shown as-is\n return nextProps.events.length !== this.props.events.length || this.state.expanded || nextState.expanded || nextProps.events.length < this.props.threshold;\n },\n\n _toggleSummary: function _toggleSummary() {\n this.setState({\n expanded: !this.state.expanded\n });\n this.props.onToggle();\n },\n\n /**\n * Render the JSX for users aggregated by their transition sequences (`eventAggregates`) where\n * the sequences are ordered by `orderedTransitionSequences`.\n * @param {object[]} eventAggregates a map of transition sequence to array of user display names\n * or user IDs.\n * @param {string[]} orderedTransitionSequences an array which is some ordering of\n * `Object.keys(eventAggregates)`.\n * @returns {ReactElement} a single <span> containing the textual summary of the aggregated\n * events that occurred.\n */\n _renderSummary: function _renderSummary(eventAggregates, orderedTransitionSequences) {\n var _this = this;\n\n var summaries = orderedTransitionSequences.map(function (transitions) {\n var userNames = eventAggregates[transitions];\n var nameList = _this._renderNameList(userNames);\n\n var splitTransitions = transitions.split(',');\n\n // Some neighbouring transitions are common, so canonicalise some into \"pair\"\n // transitions\n var canonicalTransitions = _this._getCanonicalTransitions(splitTransitions);\n // Transform into consecutive repetitions of the same transition (like 5\n // consecutive 'joined_and_left's)\n var coalescedTransitions = _this._coalesceRepeatedTransitions(canonicalTransitions);\n\n var descs = coalescedTransitions.map(function (t) {\n return _this._getDescriptionForTransition(t.transitionType, userNames.length, t.repeats);\n });\n\n var desc = _this._renderCommaSeparatedList(descs);\n\n return (0, _languageHandler._t)('%(nameList)s %(transitionList)s', { nameList: nameList, transitionList: desc });\n });\n\n if (!summaries) {\n return null;\n }\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_TextualEvent mx_MemberEventListSummary_summary' },\n _react2.default.createElement(\n EmojiText,\n null,\n summaries.join(\", \")\n )\n );\n },\n\n /**\n * @param {string[]} users an array of user display names or user IDs.\n * @returns {string} a comma-separated list that ends with \"and [n] others\" if there are\n * more items in `users` than `this.props.summaryLength`, which is the number of names\n * included before \"and [n] others\".\n */\n _renderNameList: function _renderNameList(users) {\n return this._renderCommaSeparatedList(users, this.props.summaryLength);\n },\n\n /**\n * Canonicalise an array of transitions such that some pairs of transitions become\n * single transitions. For example an input ['joined','left'] would result in an output\n * ['joined_and_left'].\n * @param {string[]} transitions an array of transitions.\n * @returns {string[]} an array of transitions.\n */\n _getCanonicalTransitions: function _getCanonicalTransitions(transitions) {\n var modMap = {\n 'joined': {\n 'after': 'left',\n 'newTransition': 'joined_and_left'\n },\n 'left': {\n 'after': 'joined',\n 'newTransition': 'left_and_joined'\n }\n // $currentTransition : {\n // 'after' : $nextTransition,\n // 'newTransition' : 'new_transition_type',\n // },\n };\n var res = [];\n\n for (var i = 0; i < transitions.length; i++) {\n var t = transitions[i];\n var t2 = transitions[i + 1];\n\n var transition = t;\n\n if (i < transitions.length - 1 && modMap[t] && modMap[t].after === t2) {\n transition = modMap[t].newTransition;\n i++;\n }\n\n res.push(transition);\n }\n return res;\n },\n\n /**\n * Transform an array of transitions into an array of transitions and how many times\n * they are repeated consecutively.\n *\n * An array of 123 \"joined_and_left\" transitions, would result in:\n * ```\n * [{\n * transitionType: \"joined_and_left\"\n * repeats: 123\n * }]\n * ```\n * @param {string[]} transitions the array of transitions to transform.\n * @returns {object[]} an array of coalesced transitions.\n */\n _coalesceRepeatedTransitions: function _coalesceRepeatedTransitions(transitions) {\n var res = [];\n for (var i = 0; i < transitions.length; i++) {\n if (res.length > 0 && res[res.length - 1].transitionType === transitions[i]) {\n res[res.length - 1].repeats += 1;\n } else {\n res.push({\n transitionType: transitions[i],\n repeats: 1\n });\n }\n }\n return res;\n },\n\n /**\n * For a certain transition, t, describe what happened to the users that\n * underwent the transition.\n * @param {string} t the transition type.\n * @param {integer} userCount number of usernames\n * @param {number} repeats the number of times the transition was repeated in a row.\n * @returns {string} the written Human Readable equivalent of the transition.\n */\n _getDescriptionForTransition: function _getDescriptionForTransition(t, userCount, repeats) {\n // The empty interpolations 'severalUsers' and 'oneUser'\n // are there only to show translators to non-English languages\n // that the verb is conjugated to plural or singular Subject.\n var res = null;\n switch (t) {\n case \"joined\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sjoined %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sjoined %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"left\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sleft %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sleft %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"joined_and_left\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sjoined and left %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sjoined and left %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"left_and_joined\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)sleft and rejoined %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)sleft and rejoined %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invite_reject\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)srejected their invitations %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)srejected their invitation %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invite_withdrawal\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)shad their invitations withdrawn %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)shad their invitation withdrawn %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"invited\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were invited %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was invited %(count)s times\", { count: repeats });\n break;\n case \"banned\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were banned %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was banned %(count)s times\", { count: repeats });\n break;\n case \"unbanned\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were unbanned %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was unbanned %(count)s times\", { count: repeats });\n break;\n case \"kicked\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"were kicked %(count)s times\", { count: repeats }) : (0, _languageHandler._t)(\"was kicked %(count)s times\", { count: repeats });\n break;\n case \"changed_name\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)schanged their name %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)schanged their name %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n case \"changed_avatar\":\n res = userCount > 1 ? (0, _languageHandler._t)(\"%(severalUsers)schanged their avatar %(count)s times\", { severalUsers: \"\", count: repeats }) : (0, _languageHandler._t)(\"%(oneUser)schanged their avatar %(count)s times\", { oneUser: \"\", count: repeats });\n break;\n }\n\n return res;\n },\n\n\n /**\n * Constructs a written English string representing `items`, with an optional limit on\n * the number of items included in the result. If specified and if the length of\n *`items` is greater than the limit, the string \"and n others\" will be appended onto\n * the result.\n * If `items` is empty, returns the empty string. If there is only one item, return\n * it.\n * @param {string[]} items the items to construct a string from.\n * @param {number?} itemLimit the number by which to limit the list.\n * @returns {string} a string constructed by joining `items` with a comma between each\n * item, but with the last item appended as \" and [lastItem]\".\n */\n _renderCommaSeparatedList: function _renderCommaSeparatedList(items, itemLimit) {\n var remaining = itemLimit === undefined ? 0 : Math.max(items.length - itemLimit, 0);\n if (items.length === 0) {\n return \"\";\n } else if (items.length === 1) {\n return items[0];\n } else if (remaining > 0) {\n items = items.slice(0, itemLimit);\n return (0, _languageHandler._t)(\"%(items)s and %(count)s others\", { items: items.join(', '), count: remaining });\n } else {\n var lastItem = items.pop();\n return (0, _languageHandler._t)(\"%(items)s and %(lastItem)s\", { items: items.join(', '), lastItem: lastItem });\n }\n },\n\n\n _renderAvatars: function _renderAvatars(roomMembers) {\n var avatars = roomMembers.slice(0, this.props.avatarsMaxLength).map(function (m) {\n return _react2.default.createElement(MemberAvatar, { key: m.userId, member: m, width: 14, height: 14 });\n });\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MemberEventListSummary_avatars', onClick: this._toggleSummary },\n avatars\n );\n },\n\n _getTransitionSequence: function _getTransitionSequence(events) {\n return events.map(this._getTransition);\n },\n\n /**\n * Label a given membership event, `e`, where `getContent().membership` has\n * changed for each transition allowed by the Matrix protocol. This attempts to\n * label the membership changes that occur in `../../../TextForEvent.js`.\n * @param {MatrixEvent} e the membership change event to label.\n * @returns {string?} the transition type given to this event. This defaults to `null`\n * if a transition is not recognised.\n */\n _getTransition: function _getTransition(e) {\n switch (e.mxEvent.getContent().membership) {\n case 'invite':\n return 'invited';\n case 'ban':\n return 'banned';\n case 'join':\n if (e.mxEvent.getPrevContent().membership === 'join') {\n if (e.mxEvent.getContent().displayname !== e.mxEvent.getPrevContent().displayname) {\n return 'changed_name';\n } else if (e.mxEvent.getContent().avatar_url !== e.mxEvent.getPrevContent().avatar_url) {\n return 'changed_avatar';\n }\n // console.log(\"MELS ignoring duplicate membership join event\");\n return null;\n } else {\n return 'joined';\n }\n case 'leave':\n if (e.mxEvent.getSender() === e.mxEvent.getStateKey()) {\n switch (e.mxEvent.getPrevContent().membership) {\n case 'invite':\n return 'invite_reject';\n default:\n return 'left';\n }\n }\n switch (e.mxEvent.getPrevContent().membership) {\n case 'invite':\n return 'invite_withdrawal';\n case 'ban':\n return 'unbanned';\n case 'join':\n return 'kicked';\n default:\n return 'left';\n }\n default:\n return null;\n }\n },\n\n _getAggregate: function _getAggregate(userEvents) {\n var _this2 = this;\n\n // A map of aggregate type to arrays of display names. Each aggregate type\n // is a comma-delimited string of transitions, e.g. \"joined,left,kicked\".\n // The array of display names is the array of users who went through that\n // sequence during eventsToRender.\n var aggregate = {\n // $aggregateType : []:string\n };\n // A map of aggregate types to the indices that order them (the index of\n // the first event for a given transition sequence)\n var aggregateIndices = {\n // $aggregateType : int\n };\n\n var users = (0, _keys2.default)(userEvents);\n users.forEach(function (userId) {\n var firstEvent = userEvents[userId][0];\n var displayName = firstEvent.displayName;\n\n var seq = _this2._getTransitionSequence(userEvents[userId]);\n if (!aggregate[seq]) {\n aggregate[seq] = [];\n aggregateIndices[seq] = -1;\n }\n\n aggregate[seq].push(displayName);\n\n if (aggregateIndices[seq] === -1 || firstEvent.index < aggregateIndices[seq]) {\n aggregateIndices[seq] = firstEvent.index;\n }\n });\n\n return {\n names: aggregate,\n indices: aggregateIndices\n };\n },\n\n render: function render() {\n var eventsToRender = this.props.events;\n var eventIds = eventsToRender.map(function (e) {\n return e.getId();\n }).join(',');\n var fewEvents = eventsToRender.length < this.props.threshold;\n var expanded = this.state.expanded || fewEvents;\n\n var expandedEvents = null;\n if (expanded) {\n expandedEvents = this.props.children;\n }\n\n if (fewEvents) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary', 'data-scroll-tokens': eventIds },\n expandedEvents\n );\n }\n\n // Map user IDs to an array of objects:\n var userEvents = {\n // $userId : [{\n // // The original event\n // mxEvent: e,\n // // The display name of the user (if not, then user ID)\n // displayName: e.target.name || userId,\n // // The original index of the event in this.props.events\n // index: index,\n // }]\n };\n\n var avatarMembers = [];\n eventsToRender.forEach(function (e, index) {\n var userId = e.getStateKey();\n // Initialise a user's events\n if (!userEvents[userId]) {\n userEvents[userId] = [];\n if (e.target) avatarMembers.push(e.target);\n }\n userEvents[userId].push({\n mxEvent: e,\n displayName: (e.target ? e.target.name : null) || userId,\n index: index\n });\n });\n\n var aggregate = this._getAggregate(userEvents);\n\n // Sort types by order of lowest event index within sequence\n var orderedTransitionSequences = (0, _keys2.default)(aggregate.names).sort(function (seq1, seq2) {\n return aggregate.indices[seq1] > aggregate.indices[seq2];\n });\n\n var summaryContainer = null;\n if (!expanded) {\n summaryContainer = _react2.default.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_EventTile_info' },\n this._renderAvatars(avatarMembers),\n this._renderSummary(aggregate.names, orderedTransitionSequences)\n )\n );\n }\n var toggleButton = _react2.default.createElement(\n 'div',\n { className: \"mx_MemberEventListSummary_toggle\", onClick: this._toggleSummary },\n expanded ? (0, _languageHandler._t)('collapse') : (0, _languageHandler._t)('expand')\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary', 'data-scroll-tokens': eventIds },\n toggleButton,\n summaryContainer,\n expanded ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberEventListSummary_line' },\n '\\xA0'\n ) : null,\n expandedEvents\n );\n }\n});\n//# sourceMappingURL=MemberEventListSummary.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Shamelessly ripped off Modal.js. There's probably a better way\n// of doing reusable widgets like dialog boxes & menus where we go and\n// pass in a custom control as the actual body.\n\nfunction getContainer(containerId) {\n return document.getElementById(containerId);\n} /*\n Copyright 2018 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction getOrCreateContainer(containerId) {\n var container = getContainer(containerId);\n\n if (!container) {\n container = document.createElement(\"div\");\n container.id = containerId;\n document.body.appendChild(container);\n }\n\n return container;\n}\n\n/*\n * Class of component that renders its children in a separate ReactDOM virtual tree\n * in a container element appended to document.body.\n *\n * This prevents the children from being unmounted when the parent of PersistedElement\n * unmounts, allowing them to persist.\n *\n * When PE is unmounted, it hides the children using CSS. When mounted or updated, the\n * children are made visible and are positioned into a div that is given the same\n * bounding rect as the parent of PE.\n */\n\nvar PersistedElement = function (_React$Component) {\n (0, _inherits3.default)(PersistedElement, _React$Component);\n\n function PersistedElement() {\n (0, _classCallCheck3.default)(this, PersistedElement);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PersistedElement.__proto__ || (0, _getPrototypeOf2.default)(PersistedElement)).call(this));\n\n _this.collectChildContainer = _this.collectChildContainer.bind(_this);\n _this.collectChild = _this.collectChild.bind(_this);\n _this._repositionChild = _this._repositionChild.bind(_this);\n _this._onAction = _this._onAction.bind(_this);\n\n _this.resizeObserver = new _resizeObserverPolyfill2.default(_this._repositionChild);\n // Annoyingly, a resize observer is insufficient, since we also care\n // about when the element moves on the screen without changing its\n // dimensions. Doesn't look like there's a ResizeObserver equivalent\n // for this, so we bodge it by listening for document resize and\n // the timeline_resize action.\n window.addEventListener('resize', _this._repositionChild);\n _this._dispatcherRef = _dispatcher2.default.register(_this._onAction);\n return _this;\n }\n\n /**\n * Removes the DOM elements created when a PersistedElement with the given\n * persistKey was mounted. The DOM elements will be re-added if another\n * PeristedElement is mounted in the future.\n *\n * @param {string} persistKey Key used to uniquely identify this PersistedElement\n */\n\n\n (0, _createClass3.default)(PersistedElement, [{\n key: 'collectChildContainer',\n value: function collectChildContainer(ref) {\n if (this.childContainer) {\n this.resizeObserver.unobserve(this.childContainer);\n }\n this.childContainer = ref;\n if (ref) {\n this.resizeObserver.observe(ref);\n }\n }\n }, {\n key: 'collectChild',\n value: function collectChild(ref) {\n this.child = ref;\n this.updateChild();\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.updateChild();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateChild();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.updateChildVisibility(this.child, false);\n this.resizeObserver.disconnect();\n window.removeEventListener('resize', this._repositionChild);\n _dispatcher2.default.unregister(this._dispatcherRef);\n }\n }, {\n key: '_onAction',\n value: function _onAction(payload) {\n if (payload.action === 'timeline_resize') {\n this._repositionChild();\n }\n }\n }, {\n key: '_repositionChild',\n value: function _repositionChild() {\n this.updateChildPosition(this.child, this.childContainer);\n }\n }, {\n key: 'updateChild',\n value: function updateChild() {\n this.updateChildPosition(this.child, this.childContainer);\n this.updateChildVisibility(this.child, true);\n }\n }, {\n key: 'updateChildVisibility',\n value: function updateChildVisibility(child, visible) {\n if (!child) return;\n child.style.display = visible ? 'block' : 'none';\n }\n }, {\n key: 'updateChildPosition',\n value: function updateChildPosition(child, parent) {\n if (!child || !parent) return;\n\n var parentRect = parent.getBoundingClientRect();\n (0, _assign2.default)(child.style, {\n position: 'absolute',\n top: parentRect.top + 'px',\n left: parentRect.left + 'px',\n width: parentRect.width + 'px',\n height: parentRect.height + 'px'\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var content = _react2.default.createElement(\n 'div',\n { ref: this.collectChild, style: this.props.style },\n this.props.children\n );\n\n _reactDom2.default.render(content, getOrCreateContainer('mx_persistedElement_' + this.props.persistKey));\n\n return _react2.default.createElement('div', { ref: this.collectChildContainer });\n }\n }], [{\n key: 'destroyElement',\n value: function destroyElement(persistKey) {\n var container = getContainer('mx_persistedElement_' + persistKey);\n if (container) {\n container.remove();\n }\n }\n }, {\n key: 'isMounted',\n value: function isMounted(persistKey) {\n return Boolean(getContainer('mx_persistedElement_' + persistKey));\n }\n }]);\n return PersistedElement;\n}(_react2.default.Component);\n\nPersistedElement.propTypes = {\n // Unique identifier for this PersistedElement instance\n // Any PersistedElements with the same persistKey will use\n // the same DOM container.\n persistKey: _propTypes2.default.string.isRequired\n};\nexports.default = PersistedElement;\nmodule.exports = exports['default'];\n//# sourceMappingURL=PersistedElement.js.map","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\n/* eslint-disable require-jsdoc, valid-jsdoc */\nvar MapShim = (function () {\n if (typeof Map !== 'undefined') {\n return Map;\n }\n\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\n function getIndex(arr, key) {\n var result = -1;\n\n arr.some(function (entry, index) {\n if (entry[0] === key) {\n result = index;\n\n return true;\n }\n\n return false;\n });\n\n return result;\n }\n\n return (function () {\n function anonymous() {\n this.__entries__ = [];\n }\n\n var prototypeAccessors = { size: { configurable: true } };\n\n /**\r\n * @returns {boolean}\r\n */\n prototypeAccessors.size.get = function () {\n return this.__entries__.length;\n };\n\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\n anonymous.prototype.get = function (key) {\n var index = getIndex(this.__entries__, key);\n var entry = this.__entries__[index];\n\n return entry && entry[1];\n };\n\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\n anonymous.prototype.set = function (key, value) {\n var index = getIndex(this.__entries__, key);\n\n if (~index) {\n this.__entries__[index][1] = value;\n } else {\n this.__entries__.push([key, value]);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.delete = function (key) {\n var entries = this.__entries__;\n var index = getIndex(entries, key);\n\n if (~index) {\n entries.splice(index, 1);\n }\n };\n\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\n anonymous.prototype.has = function (key) {\n return !!~getIndex(this.__entries__, key);\n };\n\n /**\r\n * @returns {void}\r\n */\n anonymous.prototype.clear = function () {\n this.__entries__.splice(0);\n };\n\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\n anonymous.prototype.forEach = function (callback, ctx) {\n var this$1 = this;\n if ( ctx === void 0 ) ctx = null;\n\n for (var i = 0, list = this$1.__entries__; i < list.length; i += 1) {\n var entry = list[i];\n\n callback.call(ctx, entry[1], entry[0]);\n }\n };\n\n Object.defineProperties( anonymous.prototype, prototypeAccessors );\n\n return anonymous;\n }());\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\nvar global$1 = (function () {\n if (typeof global !== 'undefined' && global.Math === Math) {\n return global;\n }\n\n if (typeof self !== 'undefined' && self.Math === Math) {\n return self;\n }\n\n if (typeof window !== 'undefined' && window.Math === Math) {\n return window;\n }\n\n // eslint-disable-next-line no-new-func\n return Function('return this')();\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\nvar requestAnimationFrame$1 = (function () {\n if (typeof requestAnimationFrame === 'function') {\n // It's required to use a bounded function because IE sometimes throws\n // an \"Invalid calling object\" error if rAF is invoked without the global\n // object on the left hand side.\n return requestAnimationFrame.bind(global$1);\n }\n\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\n})();\n\n// Defines minimum timeout before adding a trailing call.\nvar trailingTimeout = 2;\n\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\nvar throttle = function (callback, delay) {\n var leadingCall = false,\n trailingCall = false,\n lastCallTime = 0;\n\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\n function resolvePending() {\n if (leadingCall) {\n leadingCall = false;\n\n callback();\n }\n\n if (trailingCall) {\n proxy();\n }\n }\n\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\n function timeoutCallback() {\n requestAnimationFrame$1(resolvePending);\n }\n\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\n function proxy() {\n var timeStamp = Date.now();\n\n if (leadingCall) {\n // Reject immediately following calls.\n if (timeStamp - lastCallTime < trailingTimeout) {\n return;\n }\n\n // Schedule new call to be in invoked when the pending one is resolved.\n // This is important for \"transitions\" which never actually start\n // immediately so there is a chance that we might miss one if change\n // happens amids the pending invocation.\n trailingCall = true;\n } else {\n leadingCall = true;\n trailingCall = false;\n\n setTimeout(timeoutCallback, delay);\n }\n\n lastCallTime = timeStamp;\n }\n\n return proxy;\n};\n\n// Minimum delay before invoking the update of observers.\nvar REFRESH_DELAY = 20;\n\n// A list of substrings of CSS properties used to find transition events that\n// might affect dimensions of observed elements.\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\n\n// Check if MutationObserver is available.\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\n\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\nvar ResizeObserverController = function() {\n this.connected_ = false;\n this.mutationEventsAdded_ = false;\n this.mutationsObserver_ = null;\n this.observers_ = [];\n\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\n};\n\n/**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\n\n\n/**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\n\n/**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\nResizeObserverController.prototype.addObserver = function (observer) {\n if (!~this.observers_.indexOf(observer)) {\n this.observers_.push(observer);\n }\n\n // Add listeners if they haven't been added yet.\n if (!this.connected_) {\n this.connect_();\n }\n};\n\n/**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.removeObserver = function (observer) {\n var observers = this.observers_;\n var index = observers.indexOf(observer);\n\n // Remove observer if it's present in registry.\n if (~index) {\n observers.splice(index, 1);\n }\n\n // Remove listeners if controller has no connected observers.\n if (!observers.length && this.connected_) {\n this.disconnect_();\n }\n};\n\n/**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.refresh = function () {\n var changesDetected = this.updateObservers_();\n\n // Continue running updates if changes have been detected as there might\n // be future ones caused by CSS transitions.\n if (changesDetected) {\n this.refresh();\n }\n};\n\n/**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\nResizeObserverController.prototype.updateObservers_ = function () {\n // Collect observers that have active observations.\n var activeObservers = this.observers_.filter(function (observer) {\n return observer.gatherActive(), observer.hasActive();\n });\n\n // Deliver notifications in a separate cycle in order to avoid any\n // collisions between observers, e.g. when multiple instances of\n // ResizeObserver are tracking the same element and the callback of one\n // of them changes content dimensions of the observed target. Sometimes\n // this may result in notifications being blocked for the rest of observers.\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\n\n return activeObservers.length > 0;\n};\n\n/**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.connect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already added.\n if (!isBrowser || this.connected_) {\n return;\n }\n\n // Subscription to the \"Transitionend\" event is used as a workaround for\n // delayed transitions. This way it's possible to capture at least the\n // final state of an element.\n document.addEventListener('transitionend', this.onTransitionEnd_);\n\n window.addEventListener('resize', this.refresh);\n\n if (mutationObserverSupported) {\n this.mutationsObserver_ = new MutationObserver(this.refresh);\n\n this.mutationsObserver_.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n } else {\n document.addEventListener('DOMSubtreeModified', this.refresh);\n\n this.mutationEventsAdded_ = true;\n }\n\n this.connected_ = true;\n};\n\n/**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.disconnect_ = function () {\n // Do nothing if running in a non-browser environment or if listeners\n // have been already removed.\n if (!isBrowser || !this.connected_) {\n return;\n }\n\n document.removeEventListener('transitionend', this.onTransitionEnd_);\n window.removeEventListener('resize', this.refresh);\n\n if (this.mutationsObserver_) {\n this.mutationsObserver_.disconnect();\n }\n\n if (this.mutationEventsAdded_) {\n document.removeEventListener('DOMSubtreeModified', this.refresh);\n }\n\n this.mutationsObserver_ = null;\n this.mutationEventsAdded_ = false;\n this.connected_ = false;\n};\n\n/**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\nResizeObserverController.prototype.onTransitionEnd_ = function (ref) {\n var propertyName = ref.propertyName; if ( propertyName === void 0 ) propertyName = '';\n\n // Detect whether transition may affect dimensions of an element.\n var isReflowProperty = transitionKeys.some(function (key) {\n return !!~propertyName.indexOf(key);\n });\n\n if (isReflowProperty) {\n this.refresh();\n }\n};\n\n/**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\nResizeObserverController.getInstance = function () {\n if (!this.instance_) {\n this.instance_ = new ResizeObserverController();\n }\n\n return this.instance_;\n};\n\nResizeObserverController.instance_ = null;\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\nvar defineConfigurable = (function (target, props) {\n for (var i = 0, list = Object.keys(props); i < list.length; i += 1) {\n var key = list[i];\n\n Object.defineProperty(target, key, {\n value: props[key],\n enumerable: false,\n writable: false,\n configurable: true\n });\n }\n\n return target;\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\nvar getWindowOf = (function (target) {\n // Assume that the element is an instance of Node, which means that it\n // has the \"ownerDocument\" property from which we can retrieve a\n // corresponding global object.\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\n\n // Return the local global object if it's not possible extract one from\n // provided element.\n return ownerGlobal || global$1;\n});\n\n// Placeholder of an empty content rectangle.\nvar emptyRect = createRectInit(0, 0, 0, 0);\n\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\nfunction toFloat(value) {\n return parseFloat(value) || 0;\n}\n\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\nfunction getBordersSize(styles) {\n var positions = [], len = arguments.length - 1;\n while ( len-- > 0 ) positions[ len ] = arguments[ len + 1 ];\n\n return positions.reduce(function (size, position) {\n var value = styles['border-' + position + '-width'];\n\n return size + toFloat(value);\n }, 0);\n}\n\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\nfunction getPaddings(styles) {\n var positions = ['top', 'right', 'bottom', 'left'];\n var paddings = {};\n\n for (var i = 0, list = positions; i < list.length; i += 1) {\n var position = list[i];\n\n var value = styles['padding-' + position];\n\n paddings[position] = toFloat(value);\n }\n\n return paddings;\n}\n\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getSVGContentRect(target) {\n var bbox = target.getBBox();\n\n return createRectInit(0, 0, bbox.width, bbox.height);\n}\n\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\nfunction getHTMLElementContentRect(target) {\n // Client width & height properties can't be\n // used exclusively as they provide rounded values.\n var clientWidth = target.clientWidth;\n var clientHeight = target.clientHeight;\n\n // By this condition we can catch all non-replaced inline, hidden and\n // detached elements. Though elements with width & height properties less\n // than 0.5 will be discarded as well.\n //\n // Without it we would need to implement separate methods for each of\n // those cases and it's not possible to perform a precise and performance\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\n // gives wrong results for elements with width & height less than 0.5.\n if (!clientWidth && !clientHeight) {\n return emptyRect;\n }\n\n var styles = getWindowOf(target).getComputedStyle(target);\n var paddings = getPaddings(styles);\n var horizPad = paddings.left + paddings.right;\n var vertPad = paddings.top + paddings.bottom;\n\n // Computed styles of width & height are being used because they are the\n // only dimensions available to JS that contain non-rounded values. It could\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\n // affected by CSS transformations let alone paddings, borders and scroll bars.\n var width = toFloat(styles.width),\n height = toFloat(styles.height);\n\n // Width & height include paddings and borders when the 'border-box' box\n // model is applied (except for IE).\n if (styles.boxSizing === 'border-box') {\n // Following conditions are required to handle Internet Explorer which\n // doesn't include paddings and borders to computed CSS dimensions.\n //\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\n // properties then it's either IE, and thus we don't need to subtract\n // anything, or an element merely doesn't have paddings/borders styles.\n if (Math.round(width + horizPad) !== clientWidth) {\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\n }\n\n if (Math.round(height + vertPad) !== clientHeight) {\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\n }\n }\n\n // Following steps can't be applied to the document's root element as its\n // client[Width/Height] properties represent viewport area of the window.\n // Besides, it's as well not necessary as the <html> itself neither has\n // rendered scroll bars nor it can be clipped.\n if (!isDocumentElement(target)) {\n // In some browsers (only in Firefox, actually) CSS width & height\n // include scroll bars size which can be removed at this step as scroll\n // bars are the only difference between rounded dimensions + paddings\n // and \"client\" properties, though that is not always true in Chrome.\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\n\n // Chrome has a rather weird rounding of \"client\" properties.\n // E.g. for an element with content width of 314.2px it sometimes gives\n // the client width of 315px and for the width of 314.7px it may give\n // 314px. And it doesn't happen all the time. So just ignore this delta\n // as a non-relevant.\n if (Math.abs(vertScrollbar) !== 1) {\n width -= vertScrollbar;\n }\n\n if (Math.abs(horizScrollbar) !== 1) {\n height -= horizScrollbar;\n }\n }\n\n return createRectInit(paddings.left, paddings.top, width, height);\n}\n\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nvar isSVGGraphicsElement = (function () {\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\n // interface.\n if (typeof SVGGraphicsElement !== 'undefined') {\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\n }\n\n // If it's so, then check that element is at least an instance of the\n // SVGElement and that it has the \"getBBox\" method.\n // eslint-disable-next-line no-extra-parens\n return function (target) { return target instanceof getWindowOf(target).SVGElement && typeof target.getBBox === 'function'; };\n})();\n\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\nfunction isDocumentElement(target) {\n return target === getWindowOf(target).document.documentElement;\n}\n\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\nfunction getContentRect(target) {\n if (!isBrowser) {\n return emptyRect;\n }\n\n if (isSVGGraphicsElement(target)) {\n return getSVGContentRect(target);\n }\n\n return getHTMLElementContentRect(target);\n}\n\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\nfunction createReadOnlyRect(ref) {\n var x = ref.x;\n var y = ref.y;\n var width = ref.width;\n var height = ref.height;\n\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\n var rect = Object.create(Constr.prototype);\n\n // Rectangle's properties are not writable and non-enumerable.\n defineConfigurable(rect, {\n x: x, y: y, width: width, height: height,\n top: y,\n right: x + width,\n bottom: height + y,\n left: x\n });\n\n return rect;\n}\n\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\nfunction createRectInit(x, y, width, height) {\n return { x: x, y: y, width: width, height: height };\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\nvar ResizeObservation = function(target) {\n this.broadcastWidth = 0;\n this.broadcastHeight = 0;\n this.contentRect_ = createRectInit(0, 0, 0, 0);\n\n this.target = target;\n};\n\n/**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n/**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\n\n\n/**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\nResizeObservation.prototype.isActive = function () {\n var rect = getContentRect(this.target);\n\n this.contentRect_ = rect;\n\n return rect.width !== this.broadcastWidth || rect.height !== this.broadcastHeight;\n};\n\n/**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\nResizeObservation.prototype.broadcastRect = function () {\n var rect = this.contentRect_;\n\n this.broadcastWidth = rect.width;\n this.broadcastHeight = rect.height;\n\n return rect;\n};\n\nvar ResizeObserverEntry = function(target, rectInit) {\n var contentRect = createReadOnlyRect(rectInit);\n\n // According to the specification following properties are not writable\n // and are also not enumerable in the native implementation.\n //\n // Property accessors are not being used as they'd require to define a\n // private WeakMap storage which may cause memory leaks in browsers that\n // don't support this type of collections.\n defineConfigurable(this, { target: target, contentRect: contentRect });\n};\n\nvar ResizeObserverSPI = function(callback, controller, callbackCtx) {\n this.activeObservations_ = [];\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n};\n\n/**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n/**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\n\n\n/**\r\n * Public ResizeObserver instance which will be passed to the callback\r\n * function and used as a value of it's \"this\" binding.\r\n *\r\n * @private {ResizeObserver}\r\n */\n\n/**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\nResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is already being observed.\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n\n this.controller_.addObserver(this);\n\n // Force the update of observations.\n this.controller_.refresh();\n};\n\n/**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n // Do nothing if current environment doesn't have the Element interface.\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_;\n\n // Do nothing if element is not being observed.\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n};\n\n/**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n};\n\n/**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.gatherActive = function () {\n var this$1 = this;\n\n this.clearActive();\n\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n this$1.activeObservations_.push(observation);\n }\n });\n};\n\n/**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_;\n\n // Create ResizeObserverEntry instance for every active observation.\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n};\n\n/**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\nResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n};\n\n/**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\nResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n};\n\n// Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\nvar ResizeObserver = function(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n\n observers.set(this, observer);\n};\n\n// Expose public methods of ResizeObserver.\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n return (ref = observers.get(this))[method].apply(ref, arguments);\n var ref;\n };\n});\n\nvar index = (function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n})();\n\nexport default index;\n","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _ActiveWidgetStore = require('../../../stores/ActiveWidgetStore');\n\nvar _ActiveWidgetStore2 = _interopRequireDefault(_ActiveWidgetStore);\n\nvar _WidgetUtils = require('../../../utils/WidgetUtils');\n\nvar _WidgetUtils2 = _interopRequireDefault(_WidgetUtils);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PersistentApp',\n\n getInitialState: function getInitialState() {\n return {\n roomId: _RoomViewStore2.default.getRoomId(),\n persistentWidgetId: _ActiveWidgetStore2.default.getPersistentWidgetId()\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n _ActiveWidgetStore2.default.on('update', this._onActiveWidgetStoreUpdate);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n _ActiveWidgetStore2.default.removeListener('update', this._onActiveWidgetStoreUpdate);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(payload) {\n if (_RoomViewStore2.default.getRoomId() === this.state.roomId) return;\n this.setState({\n roomId: _RoomViewStore2.default.getRoomId()\n });\n },\n\n _onActiveWidgetStoreUpdate: function _onActiveWidgetStoreUpdate() {\n this.setState({\n persistentWidgetId: _ActiveWidgetStore2.default.getPersistentWidgetId()\n });\n },\n\n render: function render() {\n if (this.state.persistentWidgetId) {\n var persistentWidgetInRoomId = _ActiveWidgetStore2.default.getRoomId(this.state.persistentWidgetId);\n if (this.state.roomId !== persistentWidgetInRoomId) {\n var persistentWidgetInRoom = _MatrixClientPeg2.default.get().getRoom(persistentWidgetInRoomId);\n // get the widget data\n var appEvent = _WidgetUtils2.default.getRoomWidgets(persistentWidgetInRoom).find(function (ev) {\n return ev.getStateKey() === _ActiveWidgetStore2.default.getPersistentWidgetId();\n });\n var app = _WidgetUtils2.default.makeAppConfig(appEvent.getStateKey(), appEvent.getContent(), appEvent.sender, persistentWidgetInRoomId);\n var capWhitelist = _WidgetUtils2.default.getCapWhitelistForAppTypeInRoomId(app.type, persistentWidgetInRoomId);\n var AppTile = _index2.default.getComponent('elements.AppTile');\n return _react2.default.createElement(AppTile, {\n key: app.id,\n id: app.id,\n url: app.url,\n name: app.name,\n type: app.type,\n fullWidth: true,\n room: persistentWidgetInRoom,\n userId: _MatrixClientPeg2.default.get().credentials.userId,\n show: true,\n creatorUserId: app.creatorUserId,\n widgetPageTitle: app.data && app.data.title ? app.data.title : '',\n waitForIframeLoad: app.waitForIframeLoad,\n whitelistCapabilities: capWhitelist,\n showDelete: false,\n showMinimise: false,\n miniMode: true\n });\n }\n }\n return null;\n }\n});\n//# sourceMappingURL=PersistentApp.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _Rooms = require('../../../Rooms');\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar REGEX_MATRIXTO = new RegExp(_linkifyMatrix.MATRIXTO_URL_PATTERN);\n\n// For URLs of matrix.to links in the timeline which have been reformatted by\n// HttpUtils transformTags to relative links. This excludes event URLs (with `[^\\/]*`)\nvar REGEX_LOCAL_MATRIXTO = /^#\\/(?:user|room|group)\\/(([#!@+])[^\\/]*)$/;\n\nvar Pill = _react2.default.createClass({\n displayName: 'Pill',\n\n statics: {\n isPillUrl: function isPillUrl(url) {\n return !!REGEX_MATRIXTO.exec(url);\n },\n isMessagePillUrl: function isMessagePillUrl(url) {\n return !!REGEX_LOCAL_MATRIXTO.exec(url);\n },\n roomNotifPos: function roomNotifPos(text) {\n return text.indexOf(\"@room\");\n },\n roomNotifLen: function roomNotifLen() {\n return \"@room\".length;\n },\n TYPE_USER_MENTION: 'TYPE_USER_MENTION',\n TYPE_ROOM_MENTION: 'TYPE_ROOM_MENTION',\n TYPE_GROUP_MENTION: 'TYPE_GROUP_MENTION',\n TYPE_AT_ROOM_MENTION: 'TYPE_AT_ROOM_MENTION' // '@room' mention\n },\n\n props: {\n // The Type of this Pill. If url is given, this is auto-detected.\n type: _propTypes2.default.string,\n // The URL to pillify (no validation is done, see isPillUrl and isMessagePillUrl)\n url: _propTypes2.default.string,\n // Whether the pill is in a message\n inMessage: _propTypes2.default.bool,\n // The room in which this pill is being rendered\n room: _propTypes2.default.instanceOf(_matrixJsSdk.Room),\n // Whether to include an avatar in the pill\n shouldShowPillAvatar: _propTypes2.default.bool,\n // Whether to render this pill as if it were highlit by a selection\n isSelected: _propTypes2.default.bool\n },\n\n childContextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getChildContext: function getChildContext() {\n return {\n matrixClient: this._matrixClient\n };\n },\n getInitialState: function getInitialState() {\n return {\n // ID/alias of the room/user\n resourceId: null,\n // Type of pill\n pillType: null,\n\n // The member related to the user pill\n member: null,\n // The group related to the group pill\n group: null,\n // The room related to the room pill\n room: null\n };\n },\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n var _this = this;\n\n return (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var regex, matrixToMatch, resourceId, prefix, pillType, member, group, room, localMember, localRoom, cli;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n regex = REGEX_MATRIXTO;\n\n if (nextProps.inMessage) {\n regex = REGEX_LOCAL_MATRIXTO;\n }\n\n matrixToMatch = void 0;\n resourceId = void 0;\n prefix = void 0;\n\n\n if (nextProps.url) {\n // Default to the empty array if no match for simplicity\n // resource and prefix will be undefined instead of throwing\n matrixToMatch = regex.exec(nextProps.url) || [];\n\n resourceId = matrixToMatch[1]; // The room/user ID\n prefix = matrixToMatch[2]; // The first character of prefix\n }\n\n pillType = _this.props.type || {\n '@': Pill.TYPE_USER_MENTION,\n '#': Pill.TYPE_ROOM_MENTION,\n '!': Pill.TYPE_ROOM_MENTION,\n '+': Pill.TYPE_GROUP_MENTION\n }[prefix];\n member = void 0;\n group = void 0;\n room = void 0;\n _context.t0 = pillType;\n _context.next = _context.t0 === Pill.TYPE_AT_ROOM_MENTION ? 13 : _context.t0 === Pill.TYPE_USER_MENTION ? 15 : _context.t0 === Pill.TYPE_ROOM_MENTION ? 19 : _context.t0 === Pill.TYPE_GROUP_MENTION ? 23 : 33;\n break;\n\n case 13:\n room = nextProps.room;\n return _context.abrupt('break', 33);\n\n case 15:\n localMember = nextProps.room.getMember(resourceId);\n\n member = localMember;\n if (!localMember) {\n member = new _matrixJsSdk.RoomMember(null, resourceId);\n _this.doProfileLookup(resourceId, member);\n }\n return _context.abrupt('break', 33);\n\n case 19:\n localRoom = resourceId[0] === '#' ? _MatrixClientPeg2.default.get().getRooms().find(function (r) {\n return r.getAliases().includes(resourceId);\n }) : _MatrixClientPeg2.default.get().getRoom(resourceId);\n\n room = localRoom;\n if (!localRoom) {\n // TODO: This would require a new API to resolve a room alias to\n // a room avatar and name.\n // this.doRoomProfileLookup(resourceId, member);\n }\n return _context.abrupt('break', 33);\n\n case 23:\n cli = _MatrixClientPeg2.default.get();\n _context.prev = 24;\n _context.next = 27;\n return (0, _bluebird.resolve)(_FlairStore2.default.getGroupProfileCached(cli, resourceId));\n\n case 27:\n group = _context.sent;\n _context.next = 33;\n break;\n\n case 30:\n _context.prev = 30;\n _context.t1 = _context['catch'](24);\n // if FlairStore failed, fall back to just groupId\n group = {\n groupId: resourceId,\n avatarUrl: null,\n name: null\n };\n\n case 33:\n _this.setState({ resourceId: resourceId, pillType: pillType, member: member, group: group, room: room });\n\n case 34:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this, [[24, 30]]);\n }))();\n },\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._matrixClient = _MatrixClientPeg2.default.get();\n this.componentWillReceiveProps(this.props);\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n\n doProfileLookup: function doProfileLookup(userId, member) {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getProfileInfo(userId).then(function (resp) {\n if (_this2._unmounted) {\n return;\n }\n member.name = resp.displayname;\n member.rawDisplayName = resp.displayname;\n member.events.member = {\n getContent: function getContent() {\n return { avatar_url: resp.avatar_url };\n },\n getDirectionalContent: function getDirectionalContent() {\n return this.getContent();\n }\n };\n _this2.setState({ member: member });\n }).catch(function (err) {\n console.error('Could not retrieve profile data for ' + userId + ':', err);\n });\n },\n\n onUserPillClicked: function onUserPillClicked() {\n _dispatcher2.default.dispatch({\n action: 'view_user',\n member: this.state.member\n });\n },\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('views.avatars.BaseAvatar');\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var RoomAvatar = _index2.default.getComponent('avatars.RoomAvatar');\n\n var resource = this.state.resourceId;\n\n var avatar = null;\n var linkText = resource;\n var pillClass = void 0;\n var userId = void 0;\n var href = this.props.url;\n var onClick = void 0;\n switch (this.state.pillType) {\n case Pill.TYPE_AT_ROOM_MENTION:\n {\n var _room = this.props.room;\n if (_room) {\n linkText = \"@room\";\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(RoomAvatar, { room: _room, width: 16, height: 16 });\n }\n pillClass = 'mx_AtRoomPill';\n }\n }\n break;\n case Pill.TYPE_USER_MENTION:\n {\n // If this user is not a member of this room, default to the empty member\n var _member = this.state.member;\n if (_member) {\n userId = _member.userId;\n _member.rawDisplayName = _member.rawDisplayName || '';\n linkText = _member.rawDisplayName;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(MemberAvatar, { member: _member, width: 16, height: 16 });\n }\n pillClass = 'mx_UserPill';\n href = null;\n onClick = this.onUserPillClicked;\n }\n }\n break;\n case Pill.TYPE_ROOM_MENTION:\n {\n var _room2 = this.state.room;\n if (_room2) {\n linkText = (_room2 ? (0, _Rooms.getDisplayAliasForRoom)(_room2) : null) || resource;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(RoomAvatar, { room: _room2, width: 16, height: 16 });\n }\n pillClass = 'mx_RoomPill';\n }\n }\n break;\n case Pill.TYPE_GROUP_MENTION:\n {\n if (this.state.group) {\n var _state$group = this.state.group,\n avatarUrl = _state$group.avatarUrl,\n groupId = _state$group.groupId,\n name = _state$group.name;\n\n var cli = _MatrixClientPeg2.default.get();\n\n linkText = groupId;\n if (this.props.shouldShowPillAvatar) {\n avatar = _react2.default.createElement(BaseAvatar, { name: name || groupId, width: 16, height: 16,\n url: avatarUrl ? cli.mxcUrlToHttp(avatarUrl, 16, 16) : null });\n }\n pillClass = 'mx_GroupPill';\n }\n }\n break;\n }\n\n var classes = (0, _classnames2.default)(pillClass, {\n \"mx_UserPill_me\": userId === _MatrixClientPeg2.default.get().credentials.userId,\n \"mx_UserPill_selected\": this.props.isSelected\n });\n\n if (this.state.pillType) {\n return this.props.inMessage ? _react2.default.createElement(\n 'a',\n { className: classes, href: href, onClick: onClick, title: resource, 'data-offset-key': this.props.offsetKey },\n avatar,\n linkText\n ) : _react2.default.createElement(\n 'span',\n { className: classes, title: resource, 'data-offset-key': this.props.offsetKey },\n avatar,\n linkText\n );\n } else {\n // Deliberately render nothing if the URL isn't recognised\n return null;\n }\n }\n});\n\nexports.default = Pill;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Pill.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _Roles = require('../../../Roles');\n\nvar Roles = _interopRequireWildcard(_Roles);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PowerSelector',\n\n propTypes: {\n value: _propTypes2.default.number.isRequired,\n // The maximum value that can be set with the power selector\n maxValue: _propTypes2.default.number.isRequired,\n\n // Default user power level for the room\n usersDefault: _propTypes2.default.number.isRequired,\n\n // if true, the <select/> should be a 'controlled' form element and updated by React\n // to reflect the current value, rather than left freeform.\n // MemberInfo uses controlled; RoomSettings uses non-controlled.\n //\n // ignored if disabled is truthy. false by default.\n controlled: _propTypes2.default.bool,\n\n // should the user be able to change the value? false by default.\n disabled: _propTypes2.default.bool,\n onChange: _propTypes2.default.func,\n\n // Optional key to pass as the second argument to `onChange`\n powerLevelKey: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n levelRoleMap: {},\n // List of power levels to show in the drop-down\n options: []\n };\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n maxValue: Infinity,\n usersDefault: 0\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._initStateFromProps(this.props);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n this._initStateFromProps(newProps);\n },\n\n _initStateFromProps: function _initStateFromProps(newProps) {\n // This needs to be done now because levelRoleMap has translated strings\n var levelRoleMap = Roles.levelRoleMap(newProps.usersDefault);\n var options = (0, _keys2.default)(levelRoleMap).filter(function (l) {\n return l === undefined || l <= newProps.maxValue;\n });\n\n this.setState({\n levelRoleMap: levelRoleMap,\n options: options,\n custom: levelRoleMap[newProps.value] === undefined\n });\n },\n\n onSelectChange: function onSelectChange(event) {\n this.setState({ custom: event.target.value === \"SELECT_VALUE_CUSTOM\" });\n if (event.target.value !== \"SELECT_VALUE_CUSTOM\") {\n this.props.onChange(event.target.value, this.props.powerLevelKey);\n }\n },\n\n onCustomBlur: function onCustomBlur(event) {\n this.props.onChange(parseInt(this.refs.custom.value), this.props.powerLevelKey);\n },\n\n onCustomKeyDown: function onCustomKeyDown(event) {\n if (event.key == \"Enter\") {\n this.props.onChange(parseInt(this.refs.custom.value), this.props.powerLevelKey);\n }\n },\n\n render: function render() {\n var _this = this;\n\n var customPicker = void 0;\n if (this.state.custom) {\n if (this.props.disabled) {\n customPicker = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Custom of %(powerLevel)s\", { powerLevel: this.props.value })\n );\n } else {\n customPicker = _react2.default.createElement(\n 'span',\n null,\n ' = ',\n _react2.default.createElement('input', {\n ref: 'custom',\n type: 'text',\n size: '3',\n defaultValue: this.props.value,\n onBlur: this.onCustomBlur,\n onKeyDown: this.onCustomKeyDown\n })\n );\n }\n }\n\n var selectValue = void 0;\n if (this.state.custom) {\n selectValue = \"SELECT_VALUE_CUSTOM\";\n } else {\n selectValue = this.state.levelRoleMap[this.props.value] ? this.props.value : \"SELECT_VALUE_CUSTOM\";\n }\n var select = void 0;\n if (this.props.disabled) {\n select = _react2.default.createElement(\n 'span',\n null,\n this.state.levelRoleMap[selectValue]\n );\n } else {\n // Each level must have a definition in this.state.levelRoleMap\n var options = this.state.options.map(function (level) {\n return {\n value: level,\n text: Roles.textualPowerLevel(level, _this.props.usersDefault)\n };\n });\n options.push({ value: \"SELECT_VALUE_CUSTOM\", text: (0, _languageHandler._t)(\"Custom level\") });\n options = options.map(function (op) {\n return _react2.default.createElement(\n 'option',\n { value: op.value, key: op.value },\n op.text\n );\n });\n\n select = _react2.default.createElement(\n 'select',\n { ref: 'select',\n value: this.props.controlled ? selectValue : undefined,\n defaultValue: !this.props.controlled ? selectValue : undefined,\n onChange: this.onSelectChange },\n options\n );\n }\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_PowerSelector' },\n select,\n customPicker\n );\n }\n});\n//# sourceMappingURL=PowerSelector.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nmodule.exports = React.createClass({\n displayName: 'ProgressBar',\n propTypes: {\n value: _propTypes2.default.number,\n max: _propTypes2.default.number\n },\n\n render: function render() {\n // Would use an HTML5 progress tag but if that doesn't animate if you\n // use the HTML attributes rather than styles\n var progressStyle = {\n width: this.props.value / this.props.max * 100 + \"%\"\n };\n return React.createElement(\n 'div',\n { className: 'mx_ProgressBar' },\n React.createElement('div', { className: 'mx_ProgressBar_fill', style: progressStyle })\n );\n }\n});\n//# sourceMappingURL=ProgressBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar RoomDirectoryButton = function RoomDirectoryButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_room_directory',\n mouseOverAction: props.callout ? \"callout_room_directory\" : null,\n label: (0, _languageHandler._t)(\"Room directory\"),\n iconPath: 'img/icons-directory.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nRoomDirectoryButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = RoomDirectoryButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomDirectoryButton.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar SettingsButton = function SettingsButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_user_settings',\n label: (0, _languageHandler._t)(\"Settings\"),\n iconPath: 'img/icons-settings.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nSettingsButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = SettingsButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=SettingsButton.js.map","\"use strict\";\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'SettingsFlag',\n propTypes: {\n name: _propTypes2.default.string.isRequired,\n level: _propTypes2.default.string.isRequired,\n roomId: _propTypes2.default.string, // for per-room settings\n label: _propTypes2.default.string, // untranslated\n onChange: _propTypes2.default.func,\n isExplicit: _propTypes2.default.bool,\n manualSave: _propTypes2.default.bool,\n\n // If group is supplied, then this will create a radio button instead.\n group: _propTypes2.default.string,\n value: _propTypes2.default.any // the value for the radio button\n },\n\n getInitialState: function getInitialState() {\n return {\n value: _SettingsStore2.default.getValueAt(this.props.level, this.props.name, this.props.roomId, this.props.isExplicit)\n };\n },\n\n onChange: function onChange(e) {\n if (this.props.group && !e.target.checked) return;\n\n var newState = this.props.group ? this.props.value : e.target.checked;\n if (!this.props.manualSave) this.save(newState);else this.setState({ value: newState });\n if (this.props.onChange) this.props.onChange(newState);\n },\n\n save: function save() {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n return _SettingsStore2.default.setValue(this.props.name, this.props.roomId, this.props.level, val !== undefined ? val : this.state.value);\n },\n\n render: function render() {\n var value = this.props.manualSave ? this.state.value : _SettingsStore2.default.getValueAt(this.props.level, this.props.name, this.props.roomId, this.props.isExplicit);\n\n var canChange = _SettingsStore2.default.canSetValue(this.props.name, this.props.roomId, this.props.level);\n\n var label = this.props.label;\n if (!label) label = _SettingsStore2.default.getDisplayName(this.props.name, this.props.level);else label = (0, _languageHandler._t)(label);\n\n // We generate a relatively complex ID to avoid conflicts\n var id = this.props.name + \"_\" + this.props.group + \"_\" + this.props.value + \"_\" + this.props.level;\n var checkbox = _react2.default.createElement(\"input\", { id: id,\n type: \"checkbox\",\n defaultChecked: value,\n onChange: this.onChange,\n disabled: !canChange\n });\n if (this.props.group) {\n checkbox = _react2.default.createElement(\"input\", { id: id,\n type: \"radio\",\n name: this.props.group,\n value: this.props.value,\n checked: value === this.props.value,\n onChange: this.onChange,\n disabled: !canChange\n });\n }\n\n return _react2.default.createElement(\n \"label\",\n null,\n checkbox,\n label\n );\n }\n});\n//# sourceMappingURL=SettingsFlag.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'Spinner',\n\n render: function render() {\n var w = this.props.w || 32;\n var h = this.props.h || 32;\n var imgClass = this.props.imgClassName || \"\";\n return React.createElement(\n 'div',\n { className: 'mx_Spinner' },\n React.createElement('img', { src: 'img/spinner.gif', width: w, height: h, className: imgClass })\n );\n }\n});\n//# sourceMappingURL=Spinner.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar StartChatButton = function StartChatButton(props) {\n var ActionButton = _index2.default.getComponent('elements.ActionButton');\n return _react2.default.createElement(ActionButton, { action: 'view_create_chat',\n mouseOverAction: props.callout ? \"callout_start_chat\" : null,\n label: (0, _languageHandler._t)(\"Start chat\"),\n iconPath: 'img/icons-people.svg',\n size: props.size,\n tooltip: props.tooltip\n });\n};\n\nStartChatButton.propTypes = {\n size: _propTypes2.default.string,\n tooltip: _propTypes2.default.bool\n};\n\nexports.default = StartChatButton;\nmodule.exports = exports['default'];\n//# sourceMappingURL=StartChatButton.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ToolTipButton',\n\n getInitialState: function getInitialState() {\n return {\n hover: false\n };\n },\n\n onMouseOver: function onMouseOver() {\n this.setState({\n hover: true\n });\n },\n\n onMouseOut: function onMouseOut() {\n this.setState({\n hover: false\n });\n },\n\n render: function render() {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n var tip = this.state.hover ? _react2.default.createElement(RoomTooltip, {\n className: 'mx_ToolTipButton_container',\n tooltipClassName: 'mx_ToolTipButton_helpText',\n label: this.props.helpText\n }) : _react2.default.createElement('div', null);\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ToolTipButton', onMouseOver: this.onMouseOver, onMouseOut: this.onMouseOut },\n '?',\n tip\n );\n }\n});\n//# sourceMappingURL=ToolTipButton.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'TruncatedList',\n\n propTypes: {\n // The number of elements to show before truncating. If negative, no truncation is done.\n truncateAt: _propTypes2.default.number,\n // The className to apply to the wrapping div\n className: _propTypes2.default.string,\n // A function that returns the children to be rendered into the element.\n // function getChildren(start: number, end: number): Array<React.Node>\n // The start element is included, the end is not (as in `slice`).\n // If omitted, the React child elements will be used. This parameter can be used\n // to avoid creating unnecessary React elements.\n getChildren: _propTypes2.default.func,\n // A function that should return the total number of child element available.\n // Required if getChildren is supplied.\n getChildCount: _propTypes2.default.func,\n // A function which will be invoked when an overflow element is required.\n // This will be inserted after the children.\n createOverflowElement: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n truncateAt: 2,\n createOverflowElement: function createOverflowElement(overflowCount, totalCount) {\n return _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"And %(count)s more...\", { count: overflowCount })\n );\n }\n };\n },\n\n _getChildren: function _getChildren(start, end) {\n if (this.props.getChildren && this.props.getChildCount) {\n return this.props.getChildren(start, end);\n } else {\n // XXX: I'm not sure why anything would pass null into this, it seems\n // like a bizzare case to handle, but I'm preserving the behaviour.\n // (see commit 38d5c7d5c5d5a34dc16ef5d46278315f5c57f542)\n return _react2.default.Children.toArray(this.props.children).filter(function (c) {\n return c != null;\n }).slice(start, end);\n }\n },\n\n _getChildCount: function _getChildCount() {\n if (this.props.getChildren && this.props.getChildCount) {\n return this.props.getChildCount();\n } else {\n return _react2.default.Children.toArray(this.props.children).filter(function (c) {\n return c != null;\n }).length;\n }\n },\n\n render: function render() {\n var overflowNode = null;\n\n var totalChildren = this._getChildCount();\n var upperBound = totalChildren;\n if (this.props.truncateAt >= 0) {\n var overflowCount = totalChildren - this.props.truncateAt;\n if (overflowCount > 1) {\n overflowNode = this.props.createOverflowElement(overflowCount, totalChildren);\n upperBound = this.props.truncateAt;\n }\n }\n var childNodes = this._getChildren(0, upperBound);\n\n return _react2.default.createElement(\n 'div',\n { className: this.props.className },\n childNodes,\n overflowNode\n );\n }\n}); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=TruncatedList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'UserSelector',\n\n propTypes: {\n onChange: _propTypes2.default.func,\n selected_users: _propTypes2.default.arrayOf(_react2.default.PropTypes.string)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onChange: function onChange() {},\n selected: []\n };\n },\n\n addUser: function addUser(user_id) {\n if (this.props.selected_users.indexOf(user_id == -1)) {\n this.props.onChange(this.props.selected_users.concat([user_id]));\n }\n },\n\n removeUser: function removeUser(user_id) {\n this.props.onChange(this.props.selected_users.filter(function (e) {\n return e != user_id;\n }));\n },\n\n onAddUserId: function onAddUserId() {\n this.addUser(this.refs.user_id_input.value);\n this.refs.user_id_input.value = \"\";\n },\n\n render: function render() {\n var self = this;\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'ul',\n { className: 'mx_UserSelector_UserIdList', ref: 'list' },\n this.props.selected_users.map(function (user_id, i) {\n return _react2.default.createElement(\n 'li',\n { key: user_id },\n user_id,\n ' - ',\n _react2.default.createElement(\n 'span',\n { onClick: function onClick() {\n self.removeUser(user_id);\n } },\n 'X'\n )\n );\n })\n ),\n _react2.default.createElement('input', { type: 'text', ref: 'user_id_input', defaultValue: '', className: 'mx_UserSelector_userIdInput', placeholder: (0, _languageHandler._t)(\"ex. @bob:example.com\") }),\n _react2.default.createElement(\n 'button',\n { onClick: this.onAddUserId, className: 'mx_UserSelector_AddUserId' },\n (0, _languageHandler._t)(\"Add User\")\n )\n );\n }\n});\n//# sourceMappingURL=UserSelector.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar CookieBar = function (_React$Component) {\n (0, _inherits3.default)(CookieBar, _React$Component);\n\n function CookieBar() {\n (0, _classCallCheck3.default)(this, CookieBar);\n return (0, _possibleConstructorReturn3.default)(this, (CookieBar.__proto__ || (0, _getPrototypeOf2.default)(CookieBar)).call(this));\n }\n\n (0, _createClass3.default)(CookieBar, [{\n key: 'onUsageDataClicked',\n value: function onUsageDataClicked() {\n _Analytics2.default.showDetailsModal();\n }\n }, {\n key: 'onAccept',\n value: function onAccept() {\n _dispatcher2.default.dispatch({\n action: 'accept_cookies'\n });\n }\n }, {\n key: 'onReject',\n value: function onReject() {\n _dispatcher2.default.dispatch({\n action: 'reject_cookies'\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var toolbarClasses = \"mx_MatrixToolbar\";\n return _react2.default.createElement(\n 'div',\n { className: toolbarClasses },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23', alt: '' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n this.props.policyUrl ? (0, _languageHandler._t)(\"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. \" + \"This will use a cookie \" + \"(please see our <PolicyLink>Cookie Policy</PolicyLink>).\", {}, {\n 'UsageDataLink': function UsageDataLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n href: 'javascript:;',\n onClick: _this2.onUsageDataClicked\n },\n sub\n );\n },\n // XXX: We need to link to the page that explains our cookies\n 'PolicyLink': function PolicyLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n target: '_blank',\n href: _this2.props.policyUrl\n },\n sub\n );\n }\n\n }) : (0, _languageHandler._t)(\"Please help improve Riot.im by sending <UsageDataLink>anonymous usage data</UsageDataLink>. \" + \"This will use a cookie.\", {}, {\n 'UsageDataLink': function UsageDataLink(sub) {\n return _react2.default.createElement(\n 'a',\n {\n className: 'mx_MatrixToolbar_link',\n href: 'javascript:;',\n onClick: _this2.onUsageDataClicked\n },\n sub\n );\n }\n })\n ),\n _react2.default.createElement(\n AccessibleButton,\n { element: 'button', className: 'mx_MatrixToolbar_action', onClick: this.onAccept },\n (0, _languageHandler._t)(\"Yes, I want to help!\")\n ),\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MatrixToolbar_close', onClick: this.onReject },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n }]);\n return CookieBar;\n}(_react2.default.Component);\n\nCookieBar.propTypes = {\n policyUrl: _propTypes2.default.string\n};\nexports.default = CookieBar;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CookieBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Notifier = require('../../../Notifier');\n\nvar _Notifier2 = _interopRequireDefault(_Notifier);\n\nvar _AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MatrixToolbar',\n\n hideToolbar: function hideToolbar() {\n _Notifier2.default.setToolbarHidden(true);\n },\n\n onClick: function onClick() {\n _Notifier2.default.setEnabled(true);\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)('You are not receiving desktop notifications'),\n ' ',\n _react2.default.createElement(\n 'a',\n { className: 'mx_MatrixToolbar_link', onClick: this.onClick },\n ' ',\n (0, _languageHandler._t)('Enable them now')\n )\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MatrixToolbar_close', onClick: this.hideToolbar },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n});\n//# sourceMappingURL=MatrixToolbar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Check a version string is compatible with the Changelog\n * dialog ([vectorversion]-react-[react-sdk-version]-js-[js-sdk-version])\n */\nfunction checkVersion(ver) {\n var parts = ver.split('-');\n return parts.length == 5 && parts[1] == 'react' && parts[3] == 'js';\n}\n\nexports.default = _react2.default.createClass({\n displayName: 'NewVersionBar',\n\n propTypes: {\n version: _react2.default.PropTypes.string.isRequired,\n newVersion: _react2.default.PropTypes.string.isRequired,\n releaseNotes: _react2.default.PropTypes.string\n },\n\n displayReleaseNotes: function displayReleaseNotes(releaseNotes) {\n var QuestionDialog = _index2.default.getComponent('dialogs.QuestionDialog');\n _Modal2.default.createTrackedDialog('Display release notes', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"What's New\"),\n description: _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_changelog' },\n releaseNotes\n ),\n button: (0, _languageHandler._t)(\"Update\"),\n onFinished: function onFinished(update) {\n if (update && _PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().installUpdate();\n }\n }\n });\n },\n\n displayChangelog: function displayChangelog() {\n var ChangelogDialog = _index2.default.getComponent('dialogs.ChangelogDialog');\n _Modal2.default.createTrackedDialog('Display Changelog', '', ChangelogDialog, {\n version: this.props.version,\n newVersion: this.props.newVersion,\n onFinished: function onFinished(update) {\n if (update && _PlatformPeg2.default.get()) {\n _PlatformPeg2.default.get().installUpdate();\n }\n }\n });\n },\n\n onUpdateClicked: function onUpdateClicked() {\n _PlatformPeg2.default.get().installUpdate();\n },\n\n render: function render() {\n var action_button = void 0;\n // If we have release notes to display, we display them. Otherwise,\n // we display the Changelog Dialog which takes two versions and\n // automatically tells you what's changed (provided the versions\n // are in the right format)\n if (this.props.releaseNotes) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.displayReleaseNotes },\n (0, _languageHandler._t)(\"What's new?\")\n );\n } else if (checkVersion(this.props.version) && checkVersion(this.props.newVersion)) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.displayChangelog },\n (0, _languageHandler._t)(\"What's new?\")\n );\n } else if (_PlatformPeg2.default.get()) {\n action_button = _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action', onClick: this.onUpdateClicked },\n (0, _languageHandler._t)(\"Update\")\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)(\"A new version of Riot is available.\")\n ),\n action_button\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=NewVersionBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = _react2.default.createClass({\n displayName: 'PasswordNagBar',\n\n onUpdateClicked: function onUpdateClicked() {\n var SetPasswordDialog = _index2.default.getComponent('dialogs.SetPasswordDialog');\n _Modal2.default.createTrackedDialog('Set Password Dialog', 'Password Nag Bar', SetPasswordDialog);\n },\n\n render: function render() {\n var toolbarClasses = \"mx_MatrixToolbar mx_MatrixToolbar_clickable\";\n return _react2.default.createElement(\n 'div',\n { className: toolbarClasses, onClick: this.onUpdateClicked },\n _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning',\n src: 'img/warning.svg',\n width: '24',\n height: '23',\n alt: ''\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n (0, _languageHandler._t)(\"To return to your account in future you need to <u>set a password</u>\", {}, { 'u': function u(sub) {\n return _react2.default.createElement(\n 'u',\n null,\n sub\n );\n } })\n ),\n _react2.default.createElement(\n 'button',\n { className: 'mx_MatrixToolbar_action' },\n (0, _languageHandler._t)(\"Set Password\")\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=PasswordNagBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _ErrorUtils = require('../../../utils/ErrorUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'ServerLimitBar',\n\n propTypes: {\n // 'hard' if the logged in user has been locked out, 'soft' if they haven't\n kind: _propTypes2.default.string,\n adminContact: _propTypes2.default.string,\n // The type of limit that has been hit.\n limitType: _propTypes2.default.string.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n kind: 'hard'\n };\n },\n\n render: function render() {\n var toolbarClasses = {\n 'mx_MatrixToolbar': true\n };\n\n var adminContact = void 0;\n var limitError = void 0;\n if (this.props.kind === 'hard') {\n toolbarClasses['mx_MatrixToolbar_error'] = true;\n\n adminContact = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to continue using the service.\")\n });\n limitError = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits.\")\n });\n } else {\n toolbarClasses['mx_MatrixToolbar_info'] = true;\n adminContact = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n '': (0, _languageHandler._td)(\"Please <a>contact your service administrator</a> to get this limit increased.\")\n });\n limitError = (0, _ErrorUtils.messageForResourceLimitError)(this.props.limitType, this.props.adminContact, {\n 'monthly_active_user': (0, _languageHandler._td)(\"This homeserver has hit its Monthly Active User limit so \" + \"<b>some users will not be able to log in</b>.\"),\n '': (0, _languageHandler._td)(\"This homeserver has exceeded one of its resource limits so \" + \"<b>some users will not be able to log in</b>.\")\n }, { 'b': function b(sub) {\n return _react2.default.createElement(\n 'b',\n null,\n sub\n );\n } });\n }\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(toolbarClasses) },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n limitError,\n ' ',\n adminContact\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=ServerLimitBar.js.map","/*\nCopyright 2017 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _PlatformPeg = require('../../../PlatformPeg');\n\nvar _PlatformPeg2 = _interopRequireDefault(_PlatformPeg);\n\nvar _AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'UpdateCheckBar',\n\n propTypes: {\n status: _react2.default.PropTypes.string.isRequired,\n // Currently for error detail but will be usable for download progress\n // once that is a thing that squirrel passes through electron.\n detail: _react2.default.PropTypes.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n detail: ''\n };\n },\n\n getStatusText: function getStatusText() {\n // we can't import the enum from riot-web as we don't want matrix-react-sdk\n // to depend on riot-web. so we grab it as a normal object via API instead.\n var updateCheckStatusEnum = _PlatformPeg2.default.get().getUpdateCheckStatusEnum();\n switch (this.props.status) {\n case updateCheckStatusEnum.ERROR:\n return (0, _languageHandler._t)('Error encountered (%(errorDetail)s).', { errorDetail: this.props.detail });\n case updateCheckStatusEnum.CHECKING:\n return (0, _languageHandler._t)('Checking for an update...');\n case updateCheckStatusEnum.NOTAVAILABLE:\n return (0, _languageHandler._t)('No update available.');\n case updateCheckStatusEnum.DOWNLOADING:\n return (0, _languageHandler._t)('Downloading update...');\n }\n },\n\n hideToolbar: function hideToolbar() {\n _PlatformPeg2.default.get().stopUpdateCheck();\n },\n\n render: function render() {\n var message = this.getStatusText();\n var warning = (0, _languageHandler._t)('Warning');\n\n if (!'getUpdateCheckStatusEnum' in _PlatformPeg2.default.get()) {\n return _react2.default.createElement('div', null);\n }\n\n var updateCheckStatusEnum = _PlatformPeg2.default.get().getUpdateCheckStatusEnum();\n var doneStatuses = [updateCheckStatusEnum.ERROR, updateCheckStatusEnum.NOTAVAILABLE];\n\n var image = void 0;\n if (doneStatuses.includes(this.props.status)) {\n image = _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/warning.svg', width: '24', height: '23', alt: '' });\n } else {\n image = _react2.default.createElement('img', { className: 'mx_MatrixToolbar_warning', src: 'img/spinner.gif', width: '24', height: '23', alt: '' });\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar' },\n image,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MatrixToolbar_content' },\n message\n ),\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MatrixToolbar_close', onClick: this.hideToolbar },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', alt: (0, _languageHandler._t)('Close') })\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=UpdateCheckBar.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupInviteTile',\n\n propTypes: {\n group: _propTypes2.default.object.isRequired\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false,\n badgeHover: false,\n menuDisplayed: false,\n selected: this.props.group.groupId === null // XXX: this needs linking to LoggedInView/GroupView state\n };\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.group.groupId\n });\n },\n\n onMouseEnter: function onMouseEnter() {\n var state = { hover: true };\n // Only allow non-guests to access the context menu\n if (!this.context.matrixClient.isGuest()) {\n state.badgeHover = true;\n }\n this.setState(state);\n },\n\n onMouseLeave: function onMouseLeave() {\n this.setState({\n badgeHover: false,\n hover: false\n });\n },\n\n _showContextMenu: function _showContextMenu(x, y, chevronOffset) {\n var _this = this;\n\n var GroupInviteTileContextMenu = _index2.default.getComponent('context_menus.GroupInviteTileContextMenu');\n\n (0, _ContextualMenu.createMenu)(GroupInviteTileContextMenu, {\n chevronOffset: chevronOffset,\n left: x,\n top: y,\n group: this.props.group,\n onFinished: function onFinished() {\n _this.setState({ menuDisplayed: false });\n }\n });\n this.setState({ menuDisplayed: true });\n },\n\n onContextMenu: function onContextMenu(e) {\n // Prevent the RoomTile onClick event firing as well\n e.preventDefault();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n var chevronOffset = 12;\n this._showContextMenu(e.clientX, e.clientY - (chevronOffset + 8), chevronOffset);\n },\n\n onBadgeClicked: function onBadgeClicked(e) {\n // Prevent the RoomTile onClick event firing as well\n e.stopPropagation();\n // Only allow non-guests to access the context menu\n if (_MatrixClientPeg2.default.get().isGuest()) return;\n\n // If the badge is clicked, then no longer show tooltip\n if (this.props.collapsed) {\n this.setState({ hover: false });\n }\n\n var elementRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = elementRect.right + window.pageXOffset + 3;\n var chevronOffset = 12;\n var y = elementRect.top + elementRect.height / 2 + window.pageYOffset;\n y = y - (chevronOffset + 8); // where 8 is half the height of the chevron\n\n this._showContextMenu(x, y, chevronOffset);\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n var groupName = this.props.group.name || this.props.group.groupId;\n var httpAvatarUrl = this.props.group.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(this.props.group.avatarUrl, 24, 24) : null;\n\n var av = _react2.default.createElement(BaseAvatar, { name: groupName, width: 24, height: 24, url: httpAvatarUrl });\n\n var nameClasses = (0, _classnames2.default)('mx_RoomTile_name mx_RoomTile_invite mx_RoomTile_badgeShown', {\n 'mx_RoomTile_badgeShown': this.state.badgeHover || this.state.menuDisplayed\n });\n\n var label = _react2.default.createElement(\n EmojiText,\n { element: 'div', title: this.props.group.groupId, className: nameClasses, dir: 'auto' },\n groupName\n );\n\n var badgeEllipsis = this.state.badgeHover || this.state.menuDisplayed;\n var badgeClasses = (0, _classnames2.default)('mx_RoomTile_badge mx_RoomTile_highlight', {\n 'mx_RoomTile_badgeButton': badgeEllipsis\n });\n\n var badgeContent = badgeEllipsis ? '\\xB7\\xB7\\xB7' : '!';\n var badge = _react2.default.createElement(\n 'div',\n { className: badgeClasses, onClick: this.onBadgeClicked },\n badgeContent\n );\n\n var tooltip = void 0;\n if (this.props.collapsed && this.state.hover) {\n var RoomTooltip = _index2.default.getComponent(\"rooms.RoomTooltip\");\n tooltip = _react2.default.createElement(RoomTooltip, { className: 'mx_RoomTile_tooltip', label: groupName, dir: 'auto' });\n }\n\n var classes = (0, _classnames2.default)('mx_RoomTile mx_RoomTile_highlight', {\n 'mx_RoomTile_menuDisplayed': this.state.menuDisplayed,\n 'mx_RoomTile_selected': this.state.selected\n });\n\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { className: classes,\n onClick: this.onClick,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onContextMenu: this.onContextMenu\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n av\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_nameContainer' },\n label,\n badge\n ),\n tooltip\n );\n }\n}); /*\n Copyright 2017, 2018 New Vector Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupInviteTile.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _groups = require('../../../groups');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'GroupMemberInfo',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupMember: _groups.GroupMemberType,\n isInvited: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n removingUser: false,\n isUserPrivilegedInGroup: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._unregisterGroupStore(this.props.groupId);\n },\n _initGroupStore: function _initGroupStore(groupId) {\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore(groupId) {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n var _this = this;\n\n if (this._unmounted) return;\n this.setState({\n isUserInvited: _GroupStore2.default.getGroupInvitedMembers(this.props.groupId).some(function (m) {\n return m.userId === _this.props.groupMember.userId;\n }),\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n },\n\n _onKick: function _onKick() {\n var _this2 = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createDialog(ConfirmUserActionDialog, {\n matrixClient: this.context.matrixClient,\n groupMember: this.props.groupMember,\n action: this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite') : (0, _languageHandler._t)('Remove from community'),\n title: this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite this user from community?') : (0, _languageHandler._t)('Remove this user from community?'),\n danger: true,\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n _this2.setState({ removingUser: true });\n _this2.context.matrixClient.removeUserFromGroup(_this2.props.groupId, _this2.props.groupMember.userId).then(function () {\n // return to the user list\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n }).catch(function (e) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove user from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: _this2.state.isUserInvited ? (0, _languageHandler._t)('Failed to withdraw invitation') : (0, _languageHandler._t)('Failed to remove user from community')\n });\n }).finally(function () {\n _this2.setState({ removingUser: false });\n });\n }\n });\n },\n\n _onCancel: function _onCancel(e) {\n // Go back to the user list\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n },\n\n onRoomTileClick: function onRoomTileClick(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n },\n\n\n render: function render() {\n if (this.state.removingUser) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var adminTools = void 0;\n if (this.state.isUserPrivilegedInGroup) {\n var kickButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this._onKick },\n this.state.isUserInvited ? (0, _languageHandler._t)('Disinvite') : (0, _languageHandler._t)('Remove from community')\n );\n\n // No make/revoke admin API yet\n /*const opLabel = this.state.isTargetMod ? _t(\"Revoke Moderator\") : _t(\"Make Moderator\");\n giveModButton = <AccessibleButton className=\"mx_MemberInfo_field\" onClick={this.onModToggle}>\n {giveOpLabel}\n </AccessibleButton>;*/\n\n if (kickButton) {\n adminTools = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_adminTools' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n kickButton\n )\n );\n }\n }\n\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupMember.avatarUrl, 36, 36, 'crop');\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var avatar = _react2.default.createElement(BaseAvatar, { name: this.props.groupMember.userId, width: 36, height: 36,\n url: avatarUrl\n });\n\n var groupMemberName = this.props.groupMember.displayname || this.props.groupMember.userId;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var GeminiScrollbarWrapper = _index2.default.getComponent('elements.GeminiScrollbarWrapper');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_cancel', onClick: this._onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n avatar\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n groupMemberName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.props.groupMember.userId\n )\n ),\n adminTools\n )\n );\n }\n});\n//# sourceMappingURL=GroupMemberInfo.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_LOAD_NUM_MEMBERS = 30; /*\n Copyright 2017 Vector Creations Ltd.\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexports.default = _react2.default.createClass({\n displayName: 'GroupMemberList',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n members: null,\n invitedMembers: null,\n truncateAt: INITIAL_LOAD_NUM_MEMBERS\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n _GroupStore2.default.registerListener(groupId, function () {\n _this._fetchMembers();\n });\n },\n\n _fetchMembers: function _fetchMembers() {\n if (this._unmounted) return;\n this.setState({\n members: _GroupStore2.default.getGroupMembers(this.props.groupId),\n invitedMembers: _GroupStore2.default.getGroupInvitedMembers(this.props.groupId)\n });\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = _index2.default.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showFullMemberList });\n },\n\n _showFullMemberList: function _showFullMemberList() {\n this.setState({\n truncateAt: -1\n });\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n this.setState({ searchQuery: ev.target.value });\n },\n\n makeGroupMemberTiles: function makeGroupMemberTiles(query, memberList) {\n var _this2 = this;\n\n var GroupMemberTile = _index2.default.getComponent(\"groups.GroupMemberTile\");\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n query = (query || \"\").toLowerCase();\n if (query) {\n memberList = memberList.filter(function (m) {\n var matchesName = (m.displayname || \"\").toLowerCase().includes(query);\n var matchesId = m.userId.toLowerCase().includes(query);\n\n if (!matchesName && !matchesId) {\n return false;\n }\n\n return true;\n });\n }\n\n var uniqueMembers = {};\n memberList.forEach(function (m) {\n if (!uniqueMembers[m.userId]) uniqueMembers[m.userId] = m;\n });\n memberList = (0, _keys2.default)(uniqueMembers).map(function (userId) {\n return uniqueMembers[userId];\n });\n // Descending sort on isPrivileged = true = 1 to isPrivileged = false = 0\n memberList.sort(function (a, b) {\n if (a.isPrivileged === b.isPrivileged) {\n var aName = a.displayname || a.userId;\n var bName = b.displayname || b.userId;\n if (aName < bName) {\n return -1;\n } else if (aName > bName) {\n return 1;\n } else {\n return 0;\n }\n } else {\n return a.isPrivileged ? -1 : 1;\n }\n });\n\n var memberTiles = memberList.map(function (m) {\n return _react2.default.createElement(GroupMemberTile, { key: m.userId, groupId: _this2.props.groupId, member: m });\n });\n\n return _react2.default.createElement(\n TruncatedList,\n { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile\n },\n memberTiles\n );\n },\n\n render: function render() {\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.state.fetching || this.state.fetchingInvitedMembers) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_GroupMemberList_query', id: 'mx_GroupMemberList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter community members') })\n );\n\n var joined = this.state.members ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_joined' },\n this.makeGroupMemberTiles(this.state.searchQuery, this.state.members)\n ) : _react2.default.createElement('div', null);\n\n var invited = this.state.invitedMembers && this.state.invitedMembers.length > 0 ? _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_invited' },\n _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Invited\")\n ),\n this.makeGroupMemberTiles(this.state.searchQuery, this.state.invitedMembers)\n ) : _react2.default.createElement('div', null);\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n joined,\n invited\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupMemberList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _groups = require('../../../groups');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'GroupMemberTile',\n\n propTypes: {\n matrixClient: _propTypes2.default.object,\n groupId: _propTypes2.default.string.isRequired,\n member: _groups.GroupMemberType.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {};\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group_user',\n member: this.props.member,\n groupId: this.props.groupId\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EntityTile = _index2.default.getComponent('rooms.EntityTile');\n\n var name = this.props.member.displayname || this.props.member.userId;\n var avatarUrl = this.props.matrixClient.mxcUrlToHttp(this.props.member.avatarUrl, 36, 36, 'crop');\n\n var av = _react2.default.createElement(BaseAvatar, { name: this.props.member.userId,\n width: 36, height: 36,\n url: avatarUrl\n });\n\n return _react2.default.createElement(EntityTile, { name: name, avatarJsx: av, onClick: this.onClick,\n suppressOnHover: true, presenceState: 'online',\n powerStatus: this.props.member.isPrivileged ? EntityTile.POWER_STATUS_ADMIN : null\n });\n }\n}));\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupMemberTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _languageHandler = require('../../../languageHandler.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupPublicityToggle',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n ready: false,\n isGroupPublicised: null\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n this._initGroupStore(this.props.groupId);\n },\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n this._groupStoreToken = _GroupStore2.default.registerListener(groupId, function () {\n _this.setState({\n isGroupPublicised: _GroupStore2.default.getGroupPublicity(groupId),\n ready: _GroupStore2.default.isStateReady(groupId, _GroupStore2.default.STATE_KEY.Summary)\n });\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._groupStoreToken) this._groupStoreToken.unregister();\n },\n\n\n _onPublicityToggle: function _onPublicityToggle(e) {\n var _this2 = this;\n\n e.stopPropagation();\n this.setState({\n busy: true,\n // Optimistic early update\n isGroupPublicised: !this.state.isGroupPublicised\n });\n _GroupStore2.default.setGroupPublicity(this.props.groupId, !this.state.isGroupPublicised).then(function () {\n _this2.setState({\n busy: false\n });\n });\n },\n\n render: function render() {\n var GroupTile = _index2.default.getComponent('groups.GroupTile');\n var input = _react2.default.createElement('input', { type: 'checkbox',\n onChange: this._onPublicityToggle,\n checked: this.state.isGroupPublicised\n });\n var labelText = !this.state.ready ? (0, _languageHandler._t)(\"Loading...\") : this.state.isGroupPublicised ? (0, _languageHandler._t)(\"Flair will appear if enabled in room settings\") : (0, _languageHandler._t)(\"Flair will not appear\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupPublicity_toggle' },\n _react2.default.createElement(GroupTile, { groupId: this.props.groupId, showDescription: false, avatarHeight: 40 }),\n _react2.default.createElement(\n 'label',\n { onClick: this._onPublicityToggle },\n input,\n labelText\n )\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupPublicityToggle.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'GroupRoomInfo',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n propTypes: {\n groupId: _propTypes2.default.string,\n groupRoomId: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n isUserPrivilegedInGroup: null,\n groupRoom: null,\n groupRoomPublicityLoading: false,\n groupRoomRemoveLoading: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (newProps.groupId !== this.props.groupId) {\n this._unregisterGroupStore(this.props.groupId);\n this._initGroupStore(newProps.groupId);\n }\n },\n componentWillUnmount: function componentWillUnmount() {\n this._unregisterGroupStore(this.props.groupId);\n },\n _initGroupStore: function _initGroupStore(groupId) {\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n },\n _unregisterGroupStore: function _unregisterGroupStore(groupId) {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n _updateGroupRoom: function _updateGroupRoom() {\n var _this = this;\n\n this.setState({\n groupRoom: _GroupStore2.default.getGroupRooms(this.props.groupId).find(function (r) {\n return r.roomId === _this.props.groupRoomId;\n })\n });\n },\n\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n this.setState({\n isUserPrivilegedInGroup: _GroupStore2.default.isUserPrivileged(this.props.groupId)\n });\n this._updateGroupRoom();\n },\n\n _onRemove: function _onRemove(e) {\n var _this2 = this;\n\n var groupId = this.props.groupId;\n var roomName = this.state.groupRoom.displayname;\n e.preventDefault();\n e.stopPropagation();\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('Confirm removal of group from room', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Are you sure you want to remove '%(roomName)s' from %(groupId)s?\", { roomName: roomName, groupId: groupId }),\n description: (0, _languageHandler._t)(\"Removing a room from the community will also remove it from the community page.\"),\n button: (0, _languageHandler._t)(\"Remove\"),\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n _this2.setState({ groupRoomRemoveLoading: true });\n var groupId = _this2.props.groupId;\n var roomId = _this2.props.groupRoomId;\n _GroupStore2.default.removeRoomFromGroup(_this2.props.groupId, roomId).then(function () {\n _dispatcher2.default.dispatch({\n action: \"view_group_room_list\"\n });\n }).catch(function (err) {\n console.error('Error whilst removing ' + roomId + ' from ' + groupId, err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to remove room from community\"),\n description: (0, _languageHandler._t)(\"Failed to remove '%(roomName)s' from %(groupId)s\", { groupId: groupId, roomName: roomName })\n });\n }).finally(function () {\n _this2.setState({ groupRoomRemoveLoading: false });\n });\n }\n });\n },\n\n _onCancel: function _onCancel(e) {\n _dispatcher2.default.dispatch({\n action: \"view_group_room_list\"\n });\n },\n\n _changeGroupRoomPublicity: function _changeGroupRoomPublicity(e) {\n var _this3 = this;\n\n var isPublic = e.target.value === \"public\";\n this.setState({\n groupRoomPublicityLoading: true\n });\n var groupId = this.props.groupId;\n var roomId = this.props.groupRoomId;\n var roomName = this.state.groupRoom.displayname;\n _GroupStore2.default.updateGroupRoomVisibility(this.props.groupId, roomId, isPublic).catch(function (err) {\n console.error('Error whilst changing visibility of ' + roomId + ' in ' + groupId + ' to ' + isPublic, err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to remove room from group', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Something went wrong!\"),\n description: (0, _languageHandler._t)(\"The visibility of '%(roomName)s' in %(groupId)s could not be updated.\", { roomName: roomName, groupId: groupId })\n });\n }).finally(function () {\n _this3.setState({\n groupRoomPublicityLoading: false\n });\n });\n },\n\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var InlineSpinner = _index2.default.getComponent('elements.InlineSpinner');\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n if (this.state.groupRoomRemoveLoading || !this.state.groupRoom) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var adminTools = void 0;\n if (this.state.isUserPrivilegedInGroup) {\n adminTools = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_adminTools' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MemberInfo_field', onClick: this._onRemove },\n (0, _languageHandler._t)('Remove from community')\n )\n ),\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Visibility in Room List'),\n this.state.groupRoomPublicityLoading ? _react2.default.createElement(InlineSpinner, null) : _react2.default.createElement('div', null)\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: 'public',\n checked: this.state.groupRoom.isPublic,\n onClick: this._changeGroupRoomPublicity\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_label_text' },\n (0, _languageHandler._t)('Visible to everyone')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio',\n value: 'private',\n checked: !this.state.groupRoom.isPublic,\n onClick: this._changeGroupRoomPublicity\n }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_label_text' },\n (0, _languageHandler._t)('Only visible to community members')\n )\n )\n )\n );\n }\n\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.state.groupRoom.avatarUrl, 36, 36, 'crop');\n\n var groupRoomName = this.state.groupRoom.displayname;\n var avatar = _react2.default.createElement(BaseAvatar, { name: groupRoomName, width: 36, height: 36, url: avatarUrl });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_MemberInfo_cancel', onClick: this._onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor' })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n avatar\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n groupRoomName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.state.groupRoom.canonical_alias\n )\n ),\n adminTools\n )\n );\n }\n});\n//# sourceMappingURL=GroupRoomInfo.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _GroupStore = require('../../../stores/GroupStore');\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar INITIAL_LOAD_NUM_ROOMS = 30; /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\nexports.default = _react2.default.createClass({\n displayName: 'GroupRoomList',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n rooms: null,\n truncateAt: INITIAL_LOAD_NUM_ROOMS,\n searchQuery: \"\"\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n this._initGroupStore(this.props.groupId);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n this._unregisterGroupStore();\n },\n _unregisterGroupStore: function _unregisterGroupStore() {\n _GroupStore2.default.unregisterListener(this.onGroupStoreUpdated);\n },\n\n\n _initGroupStore: function _initGroupStore(groupId) {\n var _this = this;\n\n _GroupStore2.default.registerListener(groupId, this.onGroupStoreUpdated);\n // XXX: This should be more fluxy - let's get the error from GroupStore .getError or something\n // XXX: This is also leaked - we should remove it when unmounting\n _GroupStore2.default.on('error', function (err, errorGroupId) {\n if (errorGroupId !== groupId) return;\n _this.setState({\n rooms: null\n });\n });\n },\n\n onGroupStoreUpdated: function onGroupStoreUpdated() {\n if (this._unmounted) return;\n this.setState({\n rooms: _GroupStore2.default.getGroupRooms(this.props.groupId)\n });\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = _index2.default.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showFullRoomList });\n },\n\n _showFullRoomList: function _showFullRoomList() {\n this.setState({\n truncateAt: -1\n });\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n this.setState({ searchQuery: ev.target.value });\n },\n\n makeGroupRoomTiles: function makeGroupRoomTiles(query) {\n var _this2 = this;\n\n var GroupRoomTile = _index2.default.getComponent(\"groups.GroupRoomTile\");\n query = (query || \"\").toLowerCase();\n\n var roomList = this.state.rooms;\n if (query) {\n roomList = roomList.filter(function (room) {\n var matchesName = (room.name || \"\").toLowerCase().includes(query);\n var matchesAlias = (room.canonicalAlias || \"\").toLowerCase().includes(query);\n return matchesName || matchesAlias;\n });\n }\n\n roomList = roomList.map(function (groupRoom, index) {\n return _react2.default.createElement(GroupRoomTile, {\n key: index,\n groupId: _this2.props.groupId,\n groupRoom: groupRoom });\n });\n\n return roomList;\n },\n\n render: function render() {\n if (this.state.rooms === null) {\n return null;\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_GroupRoomList_query', id: 'mx_GroupRoomList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter community rooms') })\n );\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n var TruncatedList = _index2.default.getComponent(\"elements.TruncatedList\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_GroupRoomList_joined mx_GroupRoomList_outerWrapper' },\n _react2.default.createElement(\n TruncatedList,\n { className: 'mx_GroupRoomList_wrapper', truncateAt: this.state.truncateAt,\n createOverflowElement: this._createOverflowTile },\n this.makeGroupRoomTiles(this.state.searchQuery)\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupRoomList.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _groups = require('../../../groups');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar GroupRoomTile = _react2.default.createClass({\n displayName: 'GroupRoomTile',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n groupRoom: _groups.GroupRoomType.isRequired\n },\n\n onClick: function onClick(e) {\n _dispatcher2.default.dispatch({\n action: 'view_group_room',\n groupId: this.props.groupId,\n groupRoomId: this.props.groupRoom.roomId\n });\n },\n\n render: function render() {\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var avatarUrl = this.context.matrixClient.mxcUrlToHttp(this.props.groupRoom.avatarUrl, 36, 36, 'crop');\n\n var av = _react2.default.createElement(BaseAvatar, { name: this.props.groupRoom.displayname,\n width: 36, height: 36,\n url: avatarUrl\n });\n\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupRoomTile', onClick: this.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomTile_avatar' },\n av\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupRoomTile_name' },\n this.props.groupRoom.displayname\n )\n );\n }\n});\n\nGroupRoomTile.contextTypes = {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n};\n\nexports.default = GroupRoomTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupRoomTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction nop() {} /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar GroupTile = _react2.default.createClass({\n displayName: 'GroupTile',\n\n propTypes: {\n groupId: _propTypes2.default.string.isRequired,\n // Whether to show the short description of the group on the tile\n showDescription: _propTypes2.default.bool,\n // Height of the group avatar in pixels\n avatarHeight: _propTypes2.default.number\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n profile: null\n };\n },\n getDefaultProps: function getDefaultProps() {\n return {\n showDescription: true,\n avatarHeight: 50\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n _FlairStore2.default.getGroupProfileCached(this.context.matrixClient, this.props.groupId).then(function (profile) {\n _this.setState({ profile: profile });\n }).catch(function (err) {\n console.error('Error whilst getting cached profile for GroupTile', err);\n });\n },\n\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n _dispatcher2.default.dispatch({\n action: 'view_group',\n group_id: this.props.groupId\n });\n },\n\n render: function render() {\n var _this2 = this;\n\n var BaseAvatar = _index2.default.getComponent('avatars.BaseAvatar');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n var profile = this.state.profile || {};\n var name = profile.name || this.props.groupId;\n var avatarHeight = this.props.avatarHeight;\n var descElement = this.props.showDescription ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_desc' },\n profile.shortDescription\n ) : _react2.default.createElement('div', null);\n var httpUrl = profile.avatarUrl ? this.context.matrixClient.mxcUrlToHttp(profile.avatarUrl, avatarHeight, avatarHeight, \"crop\") : null;\n // XXX: Use onMouseDown as a workaround for https://github.com/atlassian/react-beautiful-dnd/issues/273\n // instead of onClick. Otherwise we experience https://github.com/vector-im/riot-web/issues/6156\n return _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_GroupTile', onMouseDown: this.onMouseDown, onClick: nop },\n _react2.default.createElement(\n _reactBeautifulDnd.Droppable,\n { droppableId: 'my-groups-droppable', type: 'draggable-TagTile' },\n function (droppableProvided, droppableSnapshot) {\n return _react2.default.createElement(\n 'div',\n { ref: droppableProvided.innerRef },\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: \"GroupTile \" + _this2.props.groupId,\n draggableId: \"GroupTile \" + _this2.props.groupId,\n index: _this2.props.groupId,\n type: 'draggable-TagTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_avatar' },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: _this2.props.groupId,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight })\n )\n ),\n provided.placeholder ? _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_avatar' },\n _react2.default.createElement(BaseAvatar, {\n name: name,\n idName: _this2.props.groupId,\n url: httpUrl,\n width: avatarHeight,\n height: avatarHeight })\n ) : _react2.default.createElement('div', null)\n );\n }\n )\n );\n }\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_name' },\n name\n ),\n descElement,\n _react2.default.createElement(\n 'div',\n { className: 'mx_GroupTile_groupId' },\n this.props.groupId\n )\n )\n );\n }\n});\n\nexports.default = GroupTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'GroupUserSettings',\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n error: null,\n groups: null\n };\n },\n\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.context.matrixClient.getJoinedGroups().done(function (result) {\n _this.setState({ groups: result.groups || [], error: null });\n }, function (err) {\n console.error(err);\n _this.setState({ groups: null, error: err });\n });\n },\n\n _renderGroupPublicity: function _renderGroupPublicity() {\n var text = \"\";\n var scrollbox = _react2.default.createElement('div', null);\n var groups = this.state.groups;\n\n if (this.state.error) {\n text = (0, _languageHandler._t)('Something went wrong when trying to get your communities.');\n } else if (groups === null) {\n text = (0, _languageHandler._t)('Loading...');\n } else if (groups.length > 0) {\n var GroupPublicityToggle = _index2.default.getComponent('groups.GroupPublicityToggle');\n var GeminiScrollbarWrapper = _index2.default.getComponent('elements.GeminiScrollbarWrapper');\n var groupPublicityToggles = groups.map(function (groupId, index) {\n return _react2.default.createElement(GroupPublicityToggle, { key: index, groupId: groupId });\n });\n text = (0, _languageHandler._t)('Display your community flair in rooms configured to show it.');\n scrollbox = _react2.default.createElement(\n 'div',\n { className: 'mx_GroupUserSettings_groupPublicity_scrollbox' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n null,\n groupPublicityToggles\n )\n );\n } else {\n text = (0, _languageHandler._t)(\"You're not currently a member of any communities.\");\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Flair')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_section' },\n _react2.default.createElement(\n 'p',\n null,\n text\n ),\n scrollbox\n )\n );\n },\n render: function render() {\n var groupPublicity = this._renderGroupPublicity();\n\n return _react2.default.createElement(\n 'div',\n null,\n groupPublicity\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=GroupUserSettings.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DIV_ID = 'mx_recaptcha';\n\n/**\n * A pure UI component which displays a captcha form.\n */\nmodule.exports = _react2.default.createClass({\n displayName: 'CaptchaForm',\n\n propTypes: {\n sitePublicKey: _propTypes2.default.string,\n\n // called with the captcha response\n onCaptchaResponse: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onCaptchaResponse: function onCaptchaResponse() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n errorText: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._captchaWidgetId = null;\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n // Just putting a script tag into the returned jsx doesn't work, annoyingly,\n // so we do this instead.\n if (global.grecaptcha) {\n // already loaded\n this._onCaptchaLoaded();\n } else {\n console.log(\"Loading recaptcha script...\");\n window.mx_on_recaptcha_loaded = function () {\n _this._onCaptchaLoaded();\n };\n var protocol = global.location.protocol;\n if (protocol === \"file:\") {\n var warning = document.createElement('div');\n // XXX: fix hardcoded app URL. Better solutions include:\n // * jumping straight to a hosted captcha page (but we don't support that yet)\n // * embedding the captcha in an iframe (if that works)\n // * using a better captcha lib\n _reactDom2.default.render((0, _languageHandler._t)(\"Robot check is currently unavailable on desktop - please use a <a>web browser</a>\", {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: 'https://riot.im/app' },\n sub\n );\n } }), warning);\n this.refs.recaptchaContainer.appendChild(warning);\n } else {\n var scriptTag = document.createElement('script');\n scriptTag.setAttribute('src', protocol + \"//www.google.com/recaptcha/api.js?onload=mx_on_recaptcha_loaded&render=explicit\");\n this.refs.recaptchaContainer.appendChild(scriptTag);\n }\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._resetRecaptcha();\n },\n\n _renderRecaptcha: function _renderRecaptcha(divId) {\n if (!global.grecaptcha) {\n console.error(\"grecaptcha not loaded!\");\n throw new Error(\"Recaptcha did not load successfully\");\n }\n\n var publicKey = this.props.sitePublicKey;\n if (!publicKey) {\n console.error(\"No public key for recaptcha!\");\n throw new Error(\"This server has not supplied enough information for Recaptcha \" + \"authentication\");\n }\n\n console.log(\"Rendering to %s\", divId);\n this._captchaWidgetId = global.grecaptcha.render(divId, {\n sitekey: publicKey,\n callback: this.props.onCaptchaResponse\n });\n },\n\n _resetRecaptcha: function _resetRecaptcha() {\n if (this._captchaWidgetId !== null) {\n global.grecaptcha.reset(this._captchaWidgetId);\n }\n },\n\n _onCaptchaLoaded: function _onCaptchaLoaded() {\n console.log(\"Loaded recaptcha script.\");\n try {\n this._renderRecaptcha(DIV_ID);\n } catch (e) {\n this.setState({\n errorText: e.toString()\n });\n }\n },\n\n render: function render() {\n var error = null;\n if (this.state.errorText) {\n error = _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errorText\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { ref: 'recaptchaContainer' },\n (0, _languageHandler._t)(\"This Home Server would like to make sure you are not a robot\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement('div', { id: DIV_ID }),\n error\n );\n }\n});\n//# sourceMappingURL=CaptchaForm.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CasLogin',\n\n propTypes: {\n onSubmit: _propTypes2.default.func // fn()\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onSubmit },\n (0, _languageHandler._t)(\"Sign in with CAS\")\n )\n );\n }\n\n});\n//# sourceMappingURL=CasLogin.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _phonenumber = require('../../../phonenumber');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COUNTRIES_BY_ISO2 = new Object(null);\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = (0, _getIterator3.default)(_phonenumber.COUNTRIES), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var c = _step.value;\n\n COUNTRIES_BY_ISO2[c.iso2] = c;\n }\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nfunction countryMatchesSearchQuery(query, country) {\n // Remove '+' if present (when searching for a prefix)\n if (query[0] === '+') {\n query = query.slice(1);\n }\n\n if (country.name.toUpperCase().indexOf(query.toUpperCase()) == 0) return true;\n if (country.iso2 == query.toUpperCase()) return true;\n if (country.prefix.indexOf(query) !== -1) return true;\n return false;\n}\n\nvar CountryDropdown = function (_React$Component) {\n (0, _inherits3.default)(CountryDropdown, _React$Component);\n\n function CountryDropdown(props) {\n (0, _classCallCheck3.default)(this, CountryDropdown);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CountryDropdown.__proto__ || (0, _getPrototypeOf2.default)(CountryDropdown)).call(this, props));\n\n _this._onSearchChange = _this._onSearchChange.bind(_this);\n _this._onOptionChange = _this._onOptionChange.bind(_this);\n _this._getShortOption = _this._getShortOption.bind(_this);\n\n _this.state = {\n searchQuery: ''\n };\n return _this;\n }\n\n (0, _createClass3.default)(CountryDropdown, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n if (!this.props.value) {\n // If no value is given, we start with the first\n // country selected, but our parent component\n // doesn't know this, therefore we do this.\n this.props.onOptionChange(_phonenumber.COUNTRIES[0]);\n }\n }\n }, {\n key: '_onSearchChange',\n value: function _onSearchChange(search) {\n this.setState({\n searchQuery: search\n });\n }\n }, {\n key: '_onOptionChange',\n value: function _onOptionChange(iso2) {\n this.props.onOptionChange(COUNTRIES_BY_ISO2[iso2]);\n }\n }, {\n key: '_flagImgForIso2',\n value: function _flagImgForIso2(iso2) {\n return _react2.default.createElement('img', { src: 'img/flags/' + iso2 + '.png' });\n }\n }, {\n key: '_getShortOption',\n value: function _getShortOption(iso2) {\n if (!this.props.isSmall) {\n return undefined;\n }\n var countryPrefix = void 0;\n if (this.props.showPrefix) {\n countryPrefix = '+' + COUNTRIES_BY_ISO2[iso2].prefix;\n }\n return _react2.default.createElement(\n 'span',\n null,\n this._flagImgForIso2(iso2),\n countryPrefix\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var displayedCountries = void 0;\n if (this.state.searchQuery) {\n displayedCountries = _phonenumber.COUNTRIES.filter(countryMatchesSearchQuery.bind(this, this.state.searchQuery));\n if (this.state.searchQuery.length == 2 && COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()]) {\n // exact ISO2 country name match: make the first result the matches ISO2\n var matched = COUNTRIES_BY_ISO2[this.state.searchQuery.toUpperCase()];\n displayedCountries = displayedCountries.filter(function (c) {\n return c.iso2 != matched.iso2;\n });\n displayedCountries.unshift(matched);\n }\n } else {\n displayedCountries = _phonenumber.COUNTRIES;\n }\n\n var options = displayedCountries.map(function (country) {\n return _react2.default.createElement(\n 'div',\n { key: country.iso2 },\n _this2._flagImgForIso2(country.iso2),\n country.name,\n ' ',\n _react2.default.createElement(\n 'span',\n null,\n '(+',\n country.prefix,\n ')'\n )\n );\n });\n\n // default value here too, otherwise we need to handle null / undefined\n // values between mounting and the initial value propgating\n var value = this.props.value || _phonenumber.COUNTRIES[0].iso2;\n\n return _react2.default.createElement(\n Dropdown,\n { className: this.props.className + \" left_aligned\",\n onOptionChange: this._onOptionChange, onSearchChange: this._onSearchChange,\n menuWidth: 298, getShortOption: this._getShortOption,\n value: value, searchEnabled: true, disabled: this.props.disabled\n },\n options\n );\n }\n }]);\n return CountryDropdown;\n}(_react2.default.Component);\n\nexports.default = CountryDropdown;\n\n\nCountryDropdown.propTypes = {\n className: _propTypes2.default.string,\n isSmall: _propTypes2.default.bool,\n // if isSmall, show +44 in the selected value\n showPrefix: _propTypes2.default.bool,\n onOptionChange: _propTypes2.default.func.isRequired,\n value: _propTypes2.default.string,\n disabled: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=CountryDropdown.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CustomServerDialog',\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ErrorDialog' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_title' },\n (0, _languageHandler._t)(\"Custom Server Options\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"You can use the custom server options to sign into other Matrix \" + \"servers by specifying a different Home server URL.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"This allows you to use this app with an existing Matrix account on \" + \"a different home server.\"),\n _react2.default.createElement('br', null),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"You can also set a custom identity server but this will typically prevent \" + \"interaction with users based on email address.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement(\n 'button',\n { onClick: this.props.onFinished, autoFocus: true },\n (0, _languageHandler._t)(\"Dismiss\")\n )\n )\n );\n }\n});\n//# sourceMappingURL=CustomServerDialog.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'LoginFooter',\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Login_links' },\n _react2.default.createElement(\n 'a',\n { href: 'https://matrix.org' },\n (0, _languageHandler._t)(\"powered by Matrix\")\n )\n );\n }\n});\n//# sourceMappingURL=LoginFooter.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'LoginHeader',\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_Login_logo' },\n 'Matrix'\n );\n }\n});\n//# sourceMappingURL=LoginHeader.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'LoginPage',\n\n render: function render() {\n // FIXME: this should be turned into a proper skin with a StatusLoginPage component\n if (_SettingsStore2.default.getValue(\"theme\") === 'status') {\n return React.createElement(\n 'div',\n { className: 'mx_StatusLogin' },\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_brand' },\n React.createElement('img', { src: 'themes/status/img/logo.svg', alt: 'Status', width: '221', height: '53' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_content' },\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_header' },\n React.createElement(\n 'h1',\n null,\n 'Status Community Chat'\n ),\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_subtitle' },\n 'A safer, decentralised communication platform ',\n React.createElement(\n 'a',\n { href: 'https://riot.im' },\n 'powered by Riot'\n )\n )\n ),\n this.props.children,\n React.createElement(\n 'div',\n { className: 'mx_StatusLogin_footer' },\n React.createElement(\n 'p',\n null,\n 'This channel is for our development community.'\n ),\n React.createElement(\n 'p',\n null,\n 'Interested in SNT and discussions on the cryptocurrency market?'\n ),\n React.createElement(\n 'p',\n null,\n React.createElement(\n 'a',\n { href: 'https://t.me/StatusNetworkChat', target: '_blank', className: 'mx_StatusLogin_footer_cta' },\n 'Join Telegram Chat'\n )\n )\n )\n )\n );\n } else {\n return React.createElement(\n 'div',\n { className: 'mx_Login' },\n this.props.children\n );\n }\n }\n});\n//# sourceMappingURL=LoginPage.js.map","'use strict';\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _UiEffects = require('../../../UiEffects');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A pure UI component which displays a username/password form.\n */\nvar PasswordLogin = function (_React$Component) {\n (0, _inherits3.default)(PasswordLogin, _React$Component);\n\n function PasswordLogin(props) {\n (0, _classCallCheck3.default)(this, PasswordLogin);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (PasswordLogin.__proto__ || (0, _getPrototypeOf2.default)(PasswordLogin)).call(this, props));\n\n _this.state = {\n username: _this.props.initialUsername,\n password: _this.props.initialPassword,\n phoneCountry: _this.props.initialPhoneCountry,\n phoneNumber: _this.props.initialPhoneNumber,\n loginType: PasswordLogin.LOGIN_FIELD_MXID\n };\n\n _this.onSubmitForm = _this.onSubmitForm.bind(_this);\n _this.onUsernameChanged = _this.onUsernameChanged.bind(_this);\n _this.onLoginTypeChange = _this.onLoginTypeChange.bind(_this);\n _this.onPhoneCountryChanged = _this.onPhoneCountryChanged.bind(_this);\n _this.onPhoneNumberChanged = _this.onPhoneNumberChanged.bind(_this);\n _this.onPasswordChanged = _this.onPasswordChanged.bind(_this);\n _this.isLoginEmpty = _this.isLoginEmpty.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(PasswordLogin, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this._passwordField = null;\n this._loginField = null;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (!this.props.loginIncorrect && nextProps.loginIncorrect) {\n (0, _UiEffects.field_input_incorrect)(this.isLoginEmpty() ? this._loginField : this._passwordField);\n }\n }\n }, {\n key: 'onSubmitForm',\n value: function onSubmitForm(ev) {\n ev.preventDefault();\n\n var username = ''; // XXX: Synapse breaks if you send null here:\n var phoneCountry = null;\n var phoneNumber = null;\n var error = void 0;\n\n switch (this.state.loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n username = this.state.username;\n if (!username) {\n error = (0, _languageHandler._t)('The email field must not be blank.');\n }\n break;\n case PasswordLogin.LOGIN_FIELD_MXID:\n username = this.state.username;\n if (!username) {\n error = (0, _languageHandler._t)('The user name field must not be blank.');\n }\n break;\n case PasswordLogin.LOGIN_FIELD_PHONE:\n phoneCountry = this.state.phoneCountry;\n phoneNumber = this.state.phoneNumber;\n if (!phoneNumber) {\n error = (0, _languageHandler._t)('The phone number field must not be blank.');\n }\n break;\n }\n\n if (error) {\n this.props.onError(error);\n return;\n }\n\n if (!this.state.password) {\n this.props.onError((0, _languageHandler._t)('The password field must not be blank.'));\n return;\n }\n\n this.props.onSubmit(username, phoneCountry, phoneNumber, this.state.password);\n }\n }, {\n key: 'onUsernameChanged',\n value: function onUsernameChanged(ev) {\n this.setState({ username: ev.target.value });\n this.props.onUsernameChanged(ev.target.value);\n }\n }, {\n key: 'onLoginTypeChange',\n value: function onLoginTypeChange(loginType) {\n this.props.onError(null); // send a null error to clear any error messages\n this.setState({\n loginType: loginType,\n username: \"\" // Reset because email and username use the same state\n });\n }\n }, {\n key: 'onPhoneCountryChanged',\n value: function onPhoneCountryChanged(country) {\n this.setState({\n phoneCountry: country.iso2,\n phonePrefix: country.prefix\n });\n this.props.onPhoneCountryChanged(country.iso2);\n }\n }, {\n key: 'onPhoneNumberChanged',\n value: function onPhoneNumberChanged(ev) {\n this.setState({ phoneNumber: ev.target.value });\n this.props.onPhoneNumberChanged(ev.target.value);\n }\n }, {\n key: 'onPasswordChanged',\n value: function onPasswordChanged(ev) {\n this.setState({ password: ev.target.value });\n this.props.onPasswordChanged(ev.target.value);\n }\n }, {\n key: 'renderLoginField',\n value: function renderLoginField(loginType, disabled) {\n var _this2 = this;\n\n var classes = {\n mx_Login_field: true,\n mx_Login_field_disabled: disabled\n };\n\n switch (loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n classes.mx_Login_email = true;\n classes.error = this.props.loginIncorrect && !this.state.username;\n return _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'email_input',\n type: 'text',\n name: 'username' // make it a little easier for browser's remember-password\n , onChange: this.onUsernameChanged,\n placeholder: 'joe@example.com',\n value: this.state.username,\n autoFocus: true,\n disabled: disabled\n });\n case PasswordLogin.LOGIN_FIELD_MXID:\n classes.mx_Login_username = true;\n classes.error = this.props.loginIncorrect && !this.state.username;\n return _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'username_input',\n type: 'text',\n name: 'username' // make it a little easier for browser's remember-password\n , onChange: this.onUsernameChanged,\n placeholder: _SdkConfig2.default.get().disable_custom_urls ? (0, _languageHandler._t)(\"Username on %(hs)s\", {\n hs: this.props.hsUrl.replace(/^https?:\\/\\//, '')\n }) : (0, _languageHandler._t)(\"User name\"),\n value: this.state.username,\n autoFocus: true,\n disabled: disabled\n });\n case PasswordLogin.LOGIN_FIELD_PHONE:\n {\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n classes.mx_Login_phoneNumberField = true;\n classes.mx_Login_field_has_prefix = true;\n classes.error = this.props.loginIncorrect && !this.state.phoneNumber;\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Login_phoneSection' },\n _react2.default.createElement(CountryDropdown, {\n className: 'mx_Login_phoneCountry mx_Login_field_prefix',\n onOptionChange: this.onPhoneCountryChanged,\n value: this.state.phoneCountry,\n isSmall: true,\n showPrefix: true,\n disabled: disabled\n }),\n _react2.default.createElement('input', {\n className: (0, _classnames2.default)(classes),\n ref: function ref(e) {\n _this2._loginField = e;\n },\n key: 'phone_input',\n type: 'text',\n name: 'phoneNumber',\n onChange: this.onPhoneNumberChanged,\n placeholder: (0, _languageHandler._t)(\"Mobile phone number\"),\n value: this.state.phoneNumber,\n autoFocus: true,\n disabled: disabled\n })\n );\n }\n }\n }\n }, {\n key: 'isLoginEmpty',\n value: function isLoginEmpty() {\n switch (this.state.loginType) {\n case PasswordLogin.LOGIN_FIELD_EMAIL:\n case PasswordLogin.LOGIN_FIELD_MXID:\n return !this.state.username;\n case PasswordLogin.LOGIN_FIELD_PHONE:\n return !this.state.phoneCountry || !this.state.phoneNumber;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var forgotPasswordJsx = void 0;\n\n if (this.props.onForgotPasswordClick) {\n forgotPasswordJsx = _react2.default.createElement(\n 'a',\n { className: 'mx_Login_forgot', onClick: this.props.onForgotPasswordClick, href: '#' },\n (0, _languageHandler._t)('Forgot your password?')\n );\n }\n\n var matrixIdText = '';\n if (this.props.hsUrl) {\n try {\n var parsedHsUrl = new URL(this.props.hsUrl);\n matrixIdText = (0, _languageHandler._t)('%(serverName)s Matrix ID', { serverName: parsedHsUrl.hostname });\n } catch (e) {\n // pass\n }\n }\n\n var pwFieldClass = (0, _classnames2.default)({\n mx_Login_field: true,\n mx_Login_field_disabled: matrixIdText === '',\n error: this.props.loginIncorrect && !this.isLoginEmpty() // only error password if error isn't top field\n });\n\n var Dropdown = _index2.default.getComponent('elements.Dropdown');\n\n var loginField = this.renderLoginField(this.state.loginType, matrixIdText === '');\n\n var loginType = void 0;\n if (!_SdkConfig2.default.get().disable_3pid_login) {\n loginType = _react2.default.createElement(\n 'div',\n { className: 'mx_Login_type_container' },\n _react2.default.createElement(\n 'label',\n { className: 'mx_Login_type_label' },\n (0, _languageHandler._t)('Sign in with')\n ),\n _react2.default.createElement(\n Dropdown,\n {\n className: 'mx_Login_type_dropdown',\n value: this.state.loginType,\n disabled: matrixIdText === '',\n onOptionChange: this.onLoginTypeChange },\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_MXID },\n matrixIdText\n ),\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_EMAIL },\n (0, _languageHandler._t)('Email address')\n ),\n _react2.default.createElement(\n 'span',\n { key: PasswordLogin.LOGIN_FIELD_PHONE },\n (0, _languageHandler._t)('Phone')\n )\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'form',\n { onSubmit: this.onSubmitForm },\n loginType,\n loginField,\n _react2.default.createElement('input', { className: pwFieldClass, ref: function ref(e) {\n _this3._passwordField = e;\n }, type: 'password',\n name: 'password',\n value: this.state.password, onChange: this.onPasswordChanged,\n placeholder: (0, _languageHandler._t)('Password'),\n disabled: matrixIdText === ''\n }),\n _react2.default.createElement('br', null),\n forgotPasswordJsx,\n _react2.default.createElement('input', { className: 'mx_Login_submit', type: 'submit', value: (0, _languageHandler._t)('Sign in'), disabled: matrixIdText === '' })\n )\n );\n }\n }]);\n return PasswordLogin;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nPasswordLogin.defaultProps = {\n onError: function onError() {},\n onUsernameChanged: function onUsernameChanged() {},\n onPasswordChanged: function onPasswordChanged() {},\n onPhoneCountryChanged: function onPhoneCountryChanged() {},\n onPhoneNumberChanged: function onPhoneNumberChanged() {},\n initialUsername: \"\",\n initialPhoneCountry: \"\",\n initialPhoneNumber: \"\",\n initialPassword: \"\",\n loginIncorrect: false,\n hsDomain: \"\"\n};\n\n\nPasswordLogin.LOGIN_FIELD_EMAIL = \"login_field_email\";\nPasswordLogin.LOGIN_FIELD_MXID = \"login_field_mxid\";\nPasswordLogin.LOGIN_FIELD_PHONE = \"login_field_phone\";\n\nPasswordLogin.propTypes = {\n onSubmit: _propTypes2.default.func.isRequired, // fn(username, password)\n onError: _propTypes2.default.func,\n onForgotPasswordClick: _propTypes2.default.func, // fn()\n initialUsername: _propTypes2.default.string,\n initialPhoneCountry: _propTypes2.default.string,\n initialPhoneNumber: _propTypes2.default.string,\n initialPassword: _propTypes2.default.string,\n onUsernameChanged: _propTypes2.default.func,\n onPhoneCountryChanged: _propTypes2.default.func,\n onPhoneNumberChanged: _propTypes2.default.func,\n onPasswordChanged: _propTypes2.default.func,\n loginIncorrect: _propTypes2.default.bool\n};\n\nmodule.exports = PasswordLogin;\n//# sourceMappingURL=PasswordLogin.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar Modal = require('../../../Modal');\nvar sdk = require('../../../index');\n\n\n/**\n * A pure UI component which displays the HS and IS to use.\n */\nmodule.exports = React.createClass({\n displayName: 'ServerConfig',\n\n propTypes: {\n onServerConfigChange: _propTypes2.default.func,\n\n // default URLs are defined in config.json (or the hardcoded defaults)\n // they are used if the user has not overridden them with a custom URL.\n // In other words, if the custom URL is blank, the default is used.\n defaultHsUrl: _propTypes2.default.string, // e.g. https://matrix.org\n defaultIsUrl: _propTypes2.default.string, // e.g. https://vector.im\n\n // custom URLs are explicitly provided by the user and override the\n // default URLs. The user enters them via the component's input fields,\n // which is reflected on these properties whenever on..UrlChanged fires.\n // They are persisted in localStorage by MatrixClientPeg, and so can\n // override the default URLs when the component initially loads.\n customHsUrl: _propTypes2.default.string,\n customIsUrl: _propTypes2.default.string,\n\n withToggleButton: _propTypes2.default.bool,\n delayTimeMs: _propTypes2.default.number // time to wait before invoking onChanged\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onServerConfigChange: function onServerConfigChange() {},\n customHsUrl: \"\",\n customIsUrl: \"\",\n withToggleButton: false,\n delayTimeMs: 0\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hs_url: this.props.customHsUrl,\n is_url: this.props.customIsUrl,\n // if withToggleButton is false, then show the config all the time given we have no way otherwise of making it visible\n configVisible: !this.props.withToggleButton || this.props.customHsUrl !== this.props.defaultHsUrl || this.props.customIsUrl !== this.props.defaultIsUrl\n };\n },\n\n onHomeserverChanged: function onHomeserverChanged(ev) {\n this.setState({ hs_url: ev.target.value }, function () {\n this._hsTimeoutId = this._waitThenInvoke(this._hsTimeoutId, function () {\n var hsUrl = this.state.hs_url.trim().replace(/\\/$/, \"\");\n if (hsUrl === \"\") hsUrl = this.props.defaultHsUrl;\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n });\n });\n },\n\n onIdentityServerChanged: function onIdentityServerChanged(ev) {\n this.setState({ is_url: ev.target.value }, function () {\n this._isTimeoutId = this._waitThenInvoke(this._isTimeoutId, function () {\n var isUrl = this.state.is_url.trim().replace(/\\/$/, \"\");\n if (isUrl === \"\") isUrl = this.props.defaultIsUrl;\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n });\n });\n },\n\n _waitThenInvoke: function _waitThenInvoke(existingTimeoutId, fn) {\n if (existingTimeoutId) {\n clearTimeout(existingTimeoutId);\n }\n return setTimeout(fn.bind(this), this.props.delayTimeMs);\n },\n\n onServerConfigVisibleChange: function onServerConfigVisibleChange(visible, ev) {\n this.setState({\n configVisible: visible\n });\n if (!visible) {\n this.props.onServerConfigChange({\n hsUrl: this.props.defaultHsUrl,\n isUrl: this.props.defaultIsUrl\n });\n } else {\n this.props.onServerConfigChange({\n hsUrl: this.state.hs_url,\n isUrl: this.state.is_url\n });\n }\n },\n\n showHelpPopup: function showHelpPopup() {\n var CustomServerDialog = sdk.getComponent('login.CustomServerDialog');\n Modal.createTrackedDialog('Custom Server Dialog', '', CustomServerDialog);\n },\n\n render: function render() {\n var serverConfigStyle = {};\n serverConfigStyle.display = this.state.configVisible ? 'block' : 'none';\n\n var toggleButton = void 0;\n if (this.props.withToggleButton) {\n toggleButton = React.createElement(\n 'div',\n { className: 'mx_ServerConfig_selector' },\n React.createElement('input', { className: 'mx_Login_radio', id: 'basic', name: 'configVisible', type: 'radio',\n checked: !this.state.configVisible,\n onChange: this.onServerConfigVisibleChange.bind(this, false) }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label', htmlFor: 'basic' },\n (0, _languageHandler._t)(\"Default server\")\n ),\n '\\xA0\\xA0',\n React.createElement('input', { className: 'mx_Login_radio', id: 'advanced', name: 'configVisible', type: 'radio',\n checked: this.state.configVisible,\n onChange: this.onServerConfigVisibleChange.bind(this, true) }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label', htmlFor: 'advanced' },\n (0, _languageHandler._t)(\"Custom server\")\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n toggleButton,\n React.createElement(\n 'div',\n { style: serverConfigStyle },\n React.createElement(\n 'div',\n { className: 'mx_ServerConfig' },\n React.createElement(\n 'label',\n { className: 'mx_Login_label mx_ServerConfig_hslabel', htmlFor: 'hsurl' },\n (0, _languageHandler._t)(\"Home server URL\")\n ),\n React.createElement('input', { className: 'mx_Login_field', id: 'hsurl', type: 'text',\n placeholder: this.props.defaultHsUrl,\n disabled: !this.props.withToggleButton,\n value: this.state.hs_url,\n onChange: this.onHomeserverChanged }),\n React.createElement(\n 'label',\n { className: 'mx_Login_label mx_ServerConfig_islabel', htmlFor: 'isurl' },\n (0, _languageHandler._t)(\"Identity server URL\")\n ),\n React.createElement('input', { className: 'mx_Login_field', id: 'isurl', type: 'text',\n placeholder: this.props.defaultIsUrl,\n disabled: !this.props.withToggleButton,\n value: this.state.is_url,\n onChange: this.onIdentityServerChanged }),\n React.createElement(\n 'a',\n { className: 'mx_ServerConfig_help', href: '#', onClick: this.showHelpPopup },\n (0, _languageHandler._t)(\"What does this mean?\")\n )\n )\n )\n );\n }\n});\n//# sourceMappingURL=ServerConfig.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction getdaysArray() {\n return [(0, _languageHandler._t)('Sunday'), (0, _languageHandler._t)('Monday'), (0, _languageHandler._t)('Tuesday'), (0, _languageHandler._t)('Wednesday'), (0, _languageHandler._t)('Thursday'), (0, _languageHandler._t)('Friday'), (0, _languageHandler._t)('Saturday')];\n}\n\nvar DateSeparator = function (_React$Component) {\n (0, _inherits3.default)(DateSeparator, _React$Component);\n\n function DateSeparator() {\n (0, _classCallCheck3.default)(this, DateSeparator);\n return (0, _possibleConstructorReturn3.default)(this, (DateSeparator.__proto__ || (0, _getPrototypeOf2.default)(DateSeparator)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(DateSeparator, [{\n key: 'getLabel',\n value: function getLabel() {\n var date = new Date(this.props.ts);\n var today = new Date();\n var yesterday = new Date();\n var days = getdaysArray();\n yesterday.setDate(today.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return (0, _languageHandler._t)('Today');\n } else if (date.toDateString() === yesterday.toDateString()) {\n return (0, _languageHandler._t)('Yesterday');\n } else if (today.getTime() - date.getTime() < 6 * 24 * 60 * 60 * 1000) {\n return days[date.getDay()];\n } else {\n return (0, _DateUtils.formatFullDateNoTime)(date);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'h2',\n { className: 'mx_DateSeparator' },\n this.getLabel()\n );\n }\n }]);\n return DateSeparator;\n}(_react2.default.Component);\n\nDateSeparator.propTypes = {\n ts: _propTypes2.default.number.isRequired\n};\nexports.default = DateSeparator;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DateSeparator.js.map","/*\n Copyright 2016 OpenMarket Ltd\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MAudioBody = function (_React$Component) {\n (0, _inherits3.default)(MAudioBody, _React$Component);\n\n function MAudioBody(props) {\n (0, _classCallCheck3.default)(this, MAudioBody);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MAudioBody.__proto__ || (0, _getPrototypeOf2.default)(MAudioBody)).call(this, props));\n\n _this.state = {\n playing: false,\n decryptedUrl: null,\n decryptedBlob: null,\n error: null\n };\n return _this;\n }\n\n (0, _createClass3.default)(MAudioBody, [{\n key: 'onPlayToggle',\n value: function onPlayToggle() {\n this.setState({\n playing: !this.state.playing\n });\n }\n }, {\n key: '_getContentUrl',\n value: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var decryptedBlob = void 0;\n (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(decryptedBlob);\n }).done(function (url) {\n _this2.setState({\n decryptedUrl: url,\n decryptedBlob: decryptedBlob\n });\n }, function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n _this2.setState({\n error: err\n });\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting audio\")\n );\n }\n\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n // Need to decrypt the attachment\n // The attachment is decrypted in componentDidMount.\n // For now add an img tag with a 16x16 spinner.\n // Not sure how tall the audio player is so not sure how tall it should actually be.\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody' },\n _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '16', height: '16' })\n );\n }\n\n var contentUrl = this._getContentUrl();\n\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MAudioBody' },\n _react2.default.createElement('audio', { src: contentUrl, controls: true }),\n _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }))\n );\n }\n }]);\n return MAudioBody;\n}(_react2.default.Component);\n\nexports.default = MAudioBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MAudioBody.js.map","// the whatwg-fetch polyfill installs the fetch() function\n// on the global object (window or self)\n//\n// Return that as the export for use in Webpack, Browserify etc.\nrequire('whatwg-fetch');\nmodule.exports = self.fetch.bind(self);\n","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _MImageBody2 = require('./MImageBody');\n\nvar _MImageBody3 = _interopRequireDefault(_MImageBody2);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MStickerBody = function (_MImageBody) {\n (0, _inherits3.default)(MStickerBody, _MImageBody);\n\n function MStickerBody() {\n (0, _classCallCheck3.default)(this, MStickerBody);\n return (0, _possibleConstructorReturn3.default)(this, (MStickerBody.__proto__ || (0, _getPrototypeOf2.default)(MStickerBody)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MStickerBody, [{\n key: 'onClick',\n\n // Empty to prevent default behaviour of MImageBody\n value: function onClick() {}\n\n // MStickerBody doesn't need a wrapping `<a href=...>`, but it does need extra padding\n // which is added by mx_MStickerBody_wrapper\n\n }, {\n key: 'wrapImage',\n value: function wrapImage(contentUrl, children) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MStickerBody_wrapper' },\n ' ',\n children,\n ' '\n );\n }\n\n // Placeholder to show in place of the sticker image if\n // img onLoad hasn't fired yet.\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder() {\n var TintableSVG = _index2.default.getComponent('elements.TintableSvg');\n return _react2.default.createElement(TintableSVG, { src: 'img/icons-show-stickers.svg', width: '75', height: '75' });\n }\n\n // Tooltip to show on mouse over\n\n }, {\n key: 'getTooltip',\n value: function getTooltip() {\n var content = this.props.mxEvent && this.props.mxEvent.getContent();\n\n if (!content || !content.body || !content.info || !content.info.w) return null;\n\n var RoomTooltip = _index2.default.getComponent('rooms.RoomTooltip');\n return _react2.default.createElement(\n 'div',\n { style: { left: content.info.w + 'px' }, className: 'mx_MStickerBody_tooltip' },\n _react2.default.createElement(RoomTooltip, { label: content.body })\n );\n }\n\n // Don't show \"Download this_file.png ...\"\n\n }, {\n key: 'getFileBody',\n value: function getFileBody() {\n return null;\n }\n }]);\n return MStickerBody;\n}(_MImageBody3.default);\n\nexports.default = MStickerBody;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MStickerBody.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MFileBody = require('./MFileBody');\n\nvar _MFileBody2 = _interopRequireDefault(_MFileBody);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DecryptFile = require('../../../utils/DecryptFile');\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MVideoBody',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* called when the video has loaded */\n onWidgetLoad: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n decryptedUrl: null,\n decryptedThumbnailUrl: null,\n decryptedBlob: null,\n error: null\n };\n },\n\n thumbScale: function thumbScale(fullWidth, fullHeight, thumbWidth, thumbHeight) {\n if (!fullWidth || !fullHeight) {\n // Cannot calculate thumbnail height for image: missing w/h in metadata. We can't even\n // log this because it's spammy\n return undefined;\n }\n if (fullWidth < thumbWidth && fullHeight < thumbHeight) {\n // no scaling needs to be applied\n return 1;\n }\n var widthMulti = thumbWidth / fullWidth;\n var heightMulti = thumbHeight / fullHeight;\n if (widthMulti < heightMulti) {\n // width is the dominant dimension so scaling will be fixed on that\n return widthMulti;\n } else {\n // height is the dominant dimension so scaling will be fixed on that\n return heightMulti;\n }\n },\n\n _getContentUrl: function _getContentUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedUrl;\n } else {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.url);\n }\n },\n\n _getThumbUrl: function _getThumbUrl() {\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined) {\n return this.state.decryptedThumbnailUrl;\n } else if (content.info && content.info.thumbnail_url) {\n return _MatrixClientPeg2.default.get().mxcUrlToHttp(content.info.thumbnail_url);\n } else {\n return null;\n }\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n var content = this.props.mxEvent.getContent();\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n var thumbnailPromise = _bluebird2.default.resolve(null);\n if (content.info.thumbnail_file) {\n thumbnailPromise = (0, _DecryptFile.decryptFile)(content.info.thumbnail_file).then(function (blob) {\n return URL.createObjectURL(blob);\n });\n }\n var decryptedBlob = void 0;\n thumbnailPromise.then(function (thumbnailUrl) {\n return (0, _DecryptFile.decryptFile)(content.file).then(function (blob) {\n decryptedBlob = blob;\n return URL.createObjectURL(blob);\n }).then(function (contentUrl) {\n _this.setState({\n decryptedUrl: contentUrl,\n decryptedThumbnailUrl: thumbnailUrl,\n decryptedBlob: decryptedBlob\n });\n _this.props.onWidgetLoad();\n });\n }).catch(function (err) {\n console.warn(\"Unable to decrypt attachment: \", err);\n // Set a placeholder image when we can't decrypt the image.\n _this.setState({\n error: err\n });\n }).done();\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this.state.decryptedUrl) {\n URL.revokeObjectURL(this.state.decryptedUrl);\n }\n if (this.state.decryptedThumbnailUrl) {\n URL.revokeObjectURL(this.state.decryptedThumbnailUrl);\n }\n },\n\n render: function render() {\n var content = this.props.mxEvent.getContent();\n\n if (this.state.error !== null) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody', ref: 'body' },\n _react2.default.createElement('img', { src: 'img/warning.svg', width: '16', height: '16' }),\n (0, _languageHandler._t)(\"Error decrypting video\")\n );\n }\n\n if (content.file !== undefined && this.state.decryptedUrl === null) {\n // Need to decrypt the attachment\n // The attachment is decrypted in componentDidMount.\n // For now add an img tag with a spinner.\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody', ref: 'body' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MImageBody_thumbnail mx_MImageBody_thumbnail_spinner', ref: 'image' },\n _react2.default.createElement('img', { src: 'img/spinner.gif', alt: content.body, width: '16', height: '16' })\n )\n );\n }\n\n var contentUrl = this._getContentUrl();\n var thumbUrl = this._getThumbUrl();\n var autoplay = _SettingsStore2.default.getValue(\"autoplayGifsAndVideos\");\n var height = null;\n var width = null;\n var poster = null;\n var preload = \"metadata\";\n if (content.info) {\n var scale = this.thumbScale(content.info.w, content.info.h, 480, 360);\n if (scale) {\n width = Math.floor(content.info.w * scale);\n height = Math.floor(content.info.h * scale);\n }\n\n if (thumbUrl) {\n poster = thumbUrl;\n preload = \"none\";\n }\n }\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MVideoBody' },\n _react2.default.createElement('video', { className: 'mx_MVideoBody', src: contentUrl, alt: content.body,\n controls: true, preload: preload, muted: autoplay, autoPlay: autoplay,\n height: height, width: width, poster: poster }),\n _react2.default.createElement(_MFileBody2.default, (0, _extends3.default)({}, this.props, { decryptedBlob: this.state.decryptedBlob }))\n );\n }\n});\n//# sourceMappingURL=MVideoBody.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MessageTimestamp = function (_React$Component) {\n (0, _inherits3.default)(MessageTimestamp, _React$Component);\n\n function MessageTimestamp() {\n (0, _classCallCheck3.default)(this, MessageTimestamp);\n return (0, _possibleConstructorReturn3.default)(this, (MessageTimestamp.__proto__ || (0, _getPrototypeOf2.default)(MessageTimestamp)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MessageTimestamp, [{\n key: 'render',\n value: function render() {\n var date = new Date(this.props.ts);\n return _react2.default.createElement(\n 'span',\n { className: 'mx_MessageTimestamp', title: (0, _DateUtils.formatFullDate)(date, this.props.showTwelveHour) },\n (0, _DateUtils.formatTime)(date, this.props.showTwelveHour)\n );\n }\n }]);\n return MessageTimestamp;\n}(_react2.default.Component); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nMessageTimestamp.propTypes = {\n ts: _propTypes2.default.number.isRequired,\n showTwelveHour: _propTypes2.default.bool\n};\nexports.default = MessageTimestamp;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageTimestamp.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomAvatarEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n onAvatarClick: function onAvatarClick(name) {\n var httpUrl = _MatrixClientPeg2.default.get().mxcUrlToHttp(this.props.mxEvent.getContent().url);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: name\n };\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var _this = this;\n\n var ev = this.props.mxEvent;\n var senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender();\n var BaseAvatar = _index2.default.getComponent(\"avatars.BaseAvatar\");\n\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var name = (0, _languageHandler._t)('%(senderDisplayName)s changed the avatar for %(roomName)s', {\n senderDisplayName: senderDisplayName,\n roomName: room ? room.name : ''\n });\n\n if (!ev.getContent().url || ev.getContent().url.trim().length === 0) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_TextualEvent' },\n (0, _languageHandler._t)('%(senderDisplayName)s removed the room avatar.', { senderDisplayName: senderDisplayName })\n );\n }\n\n var url = _matrixJsSdk.ContentRepo.getHttpUriForMxc(_MatrixClientPeg2.default.get().getHomeserverUrl(), ev.getContent().url, Math.ceil(14 * window.devicePixelRatio), Math.ceil(14 * window.devicePixelRatio), 'crop');\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomAvatarEvent' },\n (0, _languageHandler._t)('%(senderDisplayName)s changed the room avatar to <img/>', { senderDisplayName: senderDisplayName }, {\n 'img': function img() {\n return _react2.default.createElement(\n _AccessibleButton2.default,\n { key: 'avatar', className: 'mx_RoomAvatarEvent_avatar',\n onClick: _this.onAvatarClick.bind(_this, name) },\n _react2.default.createElement(BaseAvatar, { width: 14, height: 14, url: url, name: name })\n );\n }\n })\n );\n }\n});\n//# sourceMappingURL=RoomAvatarEvent.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomCreate',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n _onLinkClicked: function _onLinkClicked(e) {\n e.preventDefault();\n\n var predecessor = this.props.mxEvent.getContent()['predecessor'];\n\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: predecessor['event_id'],\n highlighted: true,\n room_id: predecessor['room_id']\n });\n },\n\n render: function render() {\n var predecessor = this.props.mxEvent.getContent()['predecessor'];\n if (predecessor === undefined) {\n return _react2.default.createElement('div', null); // We should never have been instaniated in this case\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_CreateEvent' },\n _react2.default.createElement('img', { className: 'mx_CreateEvent_image', src: 'img/room-continuation.svg' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_CreateEvent_header' },\n (0, _languageHandler._t)(\"This room is a continuation of another conversation.\")\n ),\n _react2.default.createElement(\n 'a',\n { className: 'mx_CreateEvent_link',\n href: (0, _matrixTo.makeEventPermalink)(predecessor['room_id'], predecessor['event_id']),\n onClick: this._onLinkClicked\n },\n (0, _languageHandler._t)(\"Click here to see older messages.\")\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomCreate.js.map","/*\n Copyright 2015, 2016 OpenMarket Ltd\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Flair = require('../elements/Flair.js');\n\nvar _Flair2 = _interopRequireDefault(_Flair);\n\nvar _FlairStore = require('../../../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'SenderProfile',\n propTypes: {\n mxEvent: _propTypes2.default.object.isRequired, // event whose sender we're showing\n text: _propTypes2.default.string, // Text to show. Defaults to sender name\n onClick: _propTypes2.default.func\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getInitialState: function getInitialState() {\n return {\n userGroups: null,\n relatedGroups: []\n };\n },\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n this._updateRelatedGroups();\n\n _FlairStore2.default.getPublicisedGroupsCached(this.context.matrixClient, this.props.mxEvent.getSender()).then(function (userGroups) {\n if (_this.unmounted) return;\n _this.setState({ userGroups: userGroups });\n });\n\n this.context.matrixClient.on('RoomState.events', this.onRoomStateEvents);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n this.context.matrixClient.removeListener('RoomState.events', this.onRoomStateEvents);\n },\n onRoomStateEvents: function onRoomStateEvents(event) {\n if (event.getType() === 'm.room.related_groups' && event.getRoomId() === this.props.mxEvent.getRoomId()) {\n this._updateRelatedGroups();\n }\n },\n _updateRelatedGroups: function _updateRelatedGroups() {\n if (this.unmounted) return;\n var room = this.context.matrixClient.getRoom(this.props.mxEvent.getRoomId());\n if (!room) return;\n\n var relatedGroupsEvent = room.currentState.getStateEvents('m.room.related_groups', '');\n this.setState({\n relatedGroups: relatedGroupsEvent ? relatedGroupsEvent.getContent().groups || [] : []\n });\n },\n _getDisplayedGroups: function _getDisplayedGroups(userGroups, relatedGroups) {\n var displayedGroups = userGroups || [];\n if (relatedGroups && relatedGroups.length > 0) {\n displayedGroups = displayedGroups.filter(function (groupId) {\n return relatedGroups.includes(groupId);\n });\n } else {\n displayedGroups = [];\n }\n return displayedGroups;\n },\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var mxEvent = this.props.mxEvent;\n\n var name = mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender();\n\n var _mxEvent$getContent = mxEvent.getContent(),\n msgtype = _mxEvent$getContent.msgtype;\n\n if (msgtype === 'm.emote') {\n return _react2.default.createElement('span', null); // emote message must include the name so don't duplicate it\n }\n\n var flair = _react2.default.createElement('div', null);\n if (this.props.enableFlair) {\n var displayedGroups = this._getDisplayedGroups(this.state.userGroups, this.state.relatedGroups);\n\n flair = _react2.default.createElement(_Flair2.default, { key: 'flair',\n userId: mxEvent.getSender(),\n groups: displayedGroups\n });\n }\n\n var nameElem = _react2.default.createElement(\n EmojiText,\n { key: 'name' },\n name || ''\n );\n\n // Name + flair\n var nameFlair = _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n 'span',\n { className: 'mx_SenderProfile_name' },\n nameElem\n ),\n flair\n );\n\n var content = this.props.text ? _react2.default.createElement(\n 'span',\n { className: 'mx_SenderProfile_aux' },\n (0, _languageHandler._t)(this.props.text, { senderName: function senderName() {\n return nameElem;\n } })\n ) : nameFlair;\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_SenderProfile', dir: 'auto', onClick: this.props.onClick },\n content\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=SenderProfile.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _from = require('babel-runtime/core-js/array/from');\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _set = require('babel-runtime/core-js/set');\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _highlight = require('highlight.js');\n\nvar _highlight2 = _interopRequireDefault(_highlight);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nvar HtmlUtils = _interopRequireWildcard(_HtmlUtils);\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _ScalarAuthClient = require('../../../ScalarAuthClient');\n\nvar _ScalarAuthClient2 = _interopRequireDefault(_ScalarAuthClient);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _ContextualMenu = require('../../structures/ContextualMenu');\n\nvar ContextualMenu = _interopRequireWildcard(_ContextualMenu);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _pushprocessor = require('matrix-js-sdk/lib/pushprocessor');\n\nvar _pushprocessor2 = _interopRequireDefault(_pushprocessor);\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _matrixTo = require('../../../matrix-to');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify);\n\nmodule.exports = _react2.default.createClass({\n displayName: 'TextualBody',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* a list of words to highlight */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* callback for when our widget has loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* the shape of the tile, used */\n tileShape: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n // the URLs (if any) to be previewed with a LinkPreviewWidget\n // inside this TextualBody.\n links: [],\n\n // track whether the preview widget is hidden\n widgetHidden: false\n };\n },\n\n copyToClipboard: function copyToClipboard(text) {\n var textArea = document.createElement(\"textarea\");\n textArea.value = text;\n document.body.appendChild(textArea);\n textArea.select();\n\n var successful = false;\n try {\n successful = document.execCommand('copy');\n } catch (err) {\n console.log('Unable to copy');\n }\n\n document.body.removeChild(textArea);\n return successful;\n },\n\n componentDidMount: function componentDidMount() {\n var _this = this;\n\n this._unmounted = false;\n\n // pillifyLinks BEFORE linkifyElement because plain room/user URLs in the composer\n // are still sent as plaintext URLs. If these are ever pillified in the composer,\n // we should be pillify them here by doing the linkifying BEFORE the pillifying.\n this.pillifyLinks(this.refs.content.children);\n (0, _element2.default)(this.refs.content, _linkifyMatrix2.default.options);\n this.calculateUrlPreview();\n\n if (this.props.mxEvent.getContent().format === \"org.matrix.custom.html\") {\n var blocks = _reactDom2.default.findDOMNode(this).getElementsByTagName(\"code\");\n if (blocks.length > 0) {\n // Do this asynchronously: parsing code takes time and we don't\n // need to block the DOM update on it.\n setTimeout(function () {\n if (_this._unmounted) return;\n for (var i = 0; i < blocks.length; i++) {\n if (_SettingsStore2.default.getValue(\"enableSyntaxHighlightLanguageDetection\")) {\n _highlight2.default.highlightBlock(blocks[i]);\n } else {\n // Only syntax highlight if there's a class starting with language-\n var classes = blocks[i].className.split(/\\s+/).filter(function (cl) {\n return cl.startsWith('language-');\n });\n\n if (classes.length != 0) {\n _highlight2.default.highlightBlock(blocks[i]);\n }\n }\n }\n }, 10);\n }\n this._addCodeCopyButton();\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this.calculateUrlPreview();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n //console.log(\"shouldComponentUpdate: ShowUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n // exploit that events are immutable :)\n return nextProps.mxEvent.getId() !== this.props.mxEvent.getId() || nextProps.highlights !== this.props.highlights || nextProps.highlightLink !== this.props.highlightLink || nextProps.showUrlPreview !== this.props.showUrlPreview || nextState.links !== this.state.links || nextState.widgetHidden !== this.state.widgetHidden;\n },\n\n calculateUrlPreview: function calculateUrlPreview() {\n //console.log(\"calculateUrlPreview: ShowUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n if (this.props.showUrlPreview && !this.state.links.length) {\n var links = this.findLinks(this.refs.content.children);\n if (links.length) {\n // de-dup the links (but preserve ordering)\n var seen = new _set2.default();\n links = links.filter(function (link) {\n if (seen.has(link)) return false;\n seen.add(link);\n return true;\n });\n\n this.setState({ links: links });\n\n // lazy-load the hidden state of the preview widget from localstorage\n if (global.localStorage) {\n var hidden = global.localStorage.getItem(\"hide_preview_\" + this.props.mxEvent.getId());\n this.setState({ widgetHidden: hidden });\n }\n }\n }\n },\n\n pillifyLinks: function pillifyLinks(nodes) {\n var shouldShowPillAvatar = !_SettingsStore2.default.getValue(\"Pill.shouldHidePillAvatar\");\n var node = nodes[0];\n while (node) {\n var pillified = false;\n\n if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n var href = node.getAttribute(\"href\");\n\n // If the link is a (localised) matrix.to link, replace it with a pill\n var Pill = _index2.default.getComponent('elements.Pill');\n if (Pill.isMessagePillUrl(href)) {\n var pillContainer = document.createElement('span');\n\n var room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var pill = _react2.default.createElement(Pill, {\n url: href,\n inMessage: true,\n room: room,\n shouldShowPillAvatar: shouldShowPillAvatar\n });\n\n _reactDom2.default.render(pill, pillContainer);\n node.parentNode.replaceChild(pillContainer, node);\n // Pills within pills aren't going to go well, so move on\n pillified = true;\n\n // update the current node with one that's now taken its place\n node = pillContainer;\n }\n } else if (node.nodeType === Node.TEXT_NODE) {\n var _Pill = _index2.default.getComponent('elements.Pill');\n\n var currentTextNode = node;\n var roomNotifTextNodes = [];\n\n // Take a textNode and break it up to make all the instances of @room their\n // own textNode, adding those nodes to roomNotifTextNodes\n while (currentTextNode !== null) {\n var roomNotifPos = _Pill.roomNotifPos(currentTextNode.textContent);\n var nextTextNode = null;\n if (roomNotifPos > -1) {\n var roomTextNode = currentTextNode;\n\n if (roomNotifPos > 0) roomTextNode = roomTextNode.splitText(roomNotifPos);\n if (roomTextNode.textContent.length > _Pill.roomNotifLen()) {\n nextTextNode = roomTextNode.splitText(_Pill.roomNotifLen());\n }\n roomNotifTextNodes.push(roomTextNode);\n }\n currentTextNode = nextTextNode;\n }\n\n if (roomNotifTextNodes.length > 0) {\n var pushProcessor = new _pushprocessor2.default(_MatrixClientPeg2.default.get());\n var atRoomRule = pushProcessor.getPushRuleById(\".m.rule.roomnotif\");\n if (atRoomRule && pushProcessor.ruleMatchesEvent(atRoomRule, this.props.mxEvent)) {\n // Now replace all those nodes with Pills\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(roomNotifTextNodes), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomNotifTextNode = _step.value;\n\n // Set the next node to be processed to the one after the node\n // we're adding now, since we've just inserted nodes into the structure\n // we're iterating over.\n // Note we've checked roomNotifTextNodes.length > 0 so we'll do this at least once\n node = roomNotifTextNode.nextSibling;\n\n var _pillContainer = document.createElement('span');\n var _room = _MatrixClientPeg2.default.get().getRoom(this.props.mxEvent.getRoomId());\n var _pill = _react2.default.createElement(_Pill, {\n type: _Pill.TYPE_AT_ROOM_MENTION,\n inMessage: true,\n room: _room,\n shouldShowPillAvatar: true\n });\n\n _reactDom2.default.render(_pill, _pillContainer);\n roomNotifTextNode.parentNode.replaceChild(_pillContainer, roomNotifTextNode);\n }\n // Nothing else to do for a text node (and we don't need to advance\n // the loop pointer because we did it above)\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n continue;\n }\n }\n }\n\n if (node.childNodes && node.childNodes.length && !pillified) {\n this.pillifyLinks(node.childNodes);\n }\n\n node = node.nextSibling;\n }\n },\n\n findLinks: function findLinks(nodes) {\n var links = [];\n\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n if (node.tagName === \"A\" && node.getAttribute(\"href\")) {\n if (this.isLinkPreviewable(node)) {\n links.push(node.getAttribute(\"href\"));\n }\n } else if (node.tagName === \"PRE\" || node.tagName === \"CODE\" || node.tagName === \"BLOCKQUOTE\") {\n continue;\n } else if (node.children && node.children.length) {\n links = links.concat(this.findLinks(node.children));\n }\n }\n return links;\n },\n\n isLinkPreviewable: function isLinkPreviewable(node) {\n // don't try to preview relative links\n if (!node.getAttribute(\"href\").startsWith(\"http://\") && !node.getAttribute(\"href\").startsWith(\"https://\")) {\n return false;\n }\n\n // as a random heuristic to avoid highlighting things like \"foo.pl\"\n // we require the linked text to either include a / (either from http://\n // or from a full foo.bar/baz style schemeless URL) - or be a markdown-style\n // link, in which case we check the target text differs from the link value.\n // TODO: make this configurable?\n if (node.textContent.indexOf(\"/\") > -1) {\n return true;\n } else {\n var url = node.getAttribute(\"href\");\n var host = url.match(/^https?:\\/\\/(.*?)(\\/|$)/)[1];\n\n // never preview matrix.to links (if anything we should give a smart\n // preview of the room/user they point to: nobody needs to be reminded\n // what the matrix.to site looks like).\n if (host === _matrixTo.host) return false;\n\n if (node.textContent.toLowerCase().trim().startsWith(host.toLowerCase())) {\n // it's a \"foo.pl\" style link\n return false;\n } else {\n // it's a [foo bar](http://foo.com) style link\n return true;\n }\n }\n },\n\n _addCodeCopyButton: function _addCodeCopyButton() {\n var _this2 = this;\n\n // Add 'copy' buttons to pre blocks\n (0, _from2.default)(_reactDom2.default.findDOMNode(this).querySelectorAll('.mx_EventTile_body pre')).forEach(function (p) {\n var button = document.createElement(\"span\");\n button.className = \"mx_EventTile_copyButton\";\n button.onclick = function (e) {\n var copyCode = button.parentNode.getElementsByTagName(\"code\")[0];\n var successful = _this2.copyToClipboard(copyCode.textContent);\n\n var GenericTextContextMenu = _index2.default.getComponent('context_menus.GenericTextContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n\n var _ContextualMenu$creat = ContextualMenu.createMenu(GenericTextContextMenu, {\n chevronOffset: 10,\n left: x,\n top: y,\n message: successful ? (0, _languageHandler._t)('Copied!') : (0, _languageHandler._t)('Failed to copy')\n }, false),\n close = _ContextualMenu$creat.close;\n\n e.target.onmouseleave = close;\n };\n\n // Wrap a div around <pre> so that the copy button can be correctly positioned\n // when the <pre> overflows and is scrolled horizontally.\n var div = document.createElement(\"div\");\n div.className = \"mx_EventTile_pre_container\";\n\n // Insert containing div in place of <pre> block\n p.parentNode.replaceChild(div, p);\n\n // Append <pre> block and copy button to container\n div.appendChild(p);\n div.appendChild(button);\n });\n },\n\n\n onCancelClick: function onCancelClick(event) {\n this.setState({ widgetHidden: true });\n // FIXME: persist this somewhere smarter than local storage\n if (global.localStorage) {\n global.localStorage.setItem(\"hide_preview_\" + this.props.mxEvent.getId(), \"1\");\n }\n this.forceUpdate();\n },\n\n onEmoteSenderClick: function onEmoteSenderClick(event) {\n var mxEvent = this.props.mxEvent;\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: mxEvent.getSender()\n });\n },\n\n getEventTileOps: function getEventTileOps() {\n var _this3 = this;\n\n return {\n isWidgetHidden: function isWidgetHidden() {\n return _this3.state.widgetHidden;\n },\n\n unhideWidget: function unhideWidget() {\n _this3.setState({ widgetHidden: false });\n if (global.localStorage) {\n global.localStorage.removeItem(\"hide_preview_\" + _this3.props.mxEvent.getId());\n }\n },\n\n getInnerText: function getInnerText() {\n return _this3.refs.content.innerText;\n }\n };\n },\n\n onStarterLinkClick: function onStarterLinkClick(starterLink, ev) {\n ev.preventDefault();\n // We need to add on our scalar token to the starter link, but we may not have one!\n // In addition, we can't fetch one on click and then go to it immediately as that\n // is then treated as a popup!\n // We can get around this by fetching one now and showing a \"confirmation dialog\" (hurr hurr)\n // which requires the user to click through and THEN we can open the link in a new tab because\n // the window.open command occurs in the same stack frame as the onClick callback.\n\n // Go fetch a scalar token\n var scalarClient = new _ScalarAuthClient2.default();\n scalarClient.connect().then(function () {\n var completeUrl = scalarClient.getStarterLink(starterLink);\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var integrationsUrl = _SdkConfig2.default.get().integrations_ui_url;\n _Modal2.default.createTrackedDialog('Add an integration', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Add an Integration\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You are about to be taken to a third-party site so you can \" + \"authenticate your account for use with %(integrationsUrl)s. \" + \"Do you wish to continue?\", { integrationsUrl: integrationsUrl })\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (!confirmed) {\n return;\n }\n var width = window.screen.width > 1024 ? 1024 : window.screen.width;\n var height = window.screen.height > 800 ? 800 : window.screen.height;\n var left = (window.screen.width - width) / 2;\n var top = (window.screen.height - height) / 2;\n window.open(completeUrl, '_blank', 'height=' + height + ', width=' + width + ', top=' + top + ', left=' + left + ',');\n }\n });\n });\n },\n\n render: function render() {\n var _this4 = this;\n\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var mxEvent = this.props.mxEvent;\n var content = mxEvent.getContent();\n\n var stripReply = _ReplyThread2.default.getParentEventId(mxEvent);\n var body = HtmlUtils.bodyToHtml(content, this.props.highlights, {\n disableBigEmoji: _SettingsStore2.default.getValue('TextualBody.disableBigEmoji'),\n // Part of Replies fallback support\n stripReplyFallback: stripReply\n });\n\n if (this.props.highlightLink) {\n body = _react2.default.createElement(\n 'a',\n { href: this.props.highlightLink },\n body\n );\n } else if (content.data && typeof content.data[\"org.matrix.neb.starter_link\"] === \"string\") {\n body = _react2.default.createElement(\n 'a',\n { href: '#', onClick: this.onStarterLinkClick.bind(this, content.data[\"org.matrix.neb.starter_link\"]) },\n body\n );\n }\n\n var widgets = void 0;\n if (this.state.links.length && !this.state.widgetHidden && this.props.showUrlPreview) {\n var LinkPreviewWidget = _index2.default.getComponent('rooms.LinkPreviewWidget');\n widgets = this.state.links.map(function (link) {\n return _react2.default.createElement(LinkPreviewWidget, {\n key: link,\n link: link,\n mxEvent: _this4.props.mxEvent,\n onCancelClick: _this4.onCancelClick,\n onWidgetLoad: _this4.props.onWidgetLoad });\n });\n }\n\n switch (content.msgtype) {\n case \"m.emote\":\n var name = mxEvent.sender ? mxEvent.sender.name : mxEvent.getSender();\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MEmoteBody mx_EventTile_content' },\n '*\\xA0',\n _react2.default.createElement(\n EmojiText,\n {\n className: 'mx_MEmoteBody_sender',\n onClick: this.onEmoteSenderClick\n },\n name\n ),\n '\\xA0',\n body,\n widgets\n );\n case \"m.notice\":\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MNoticeBody mx_EventTile_content' },\n body,\n widgets\n );\n default:\n // including \"m.text\"\n return _react2.default.createElement(\n 'span',\n { ref: 'content', className: 'mx_MTextBody mx_EventTile_content' },\n body,\n widgets\n );\n }\n }\n});\n//# sourceMappingURL=TextualBody.js.map","'use strict';\n\nexports.__esModule = true;\n\nvar _linkify = require('./linkify');\n\nvar linkify = _interopRequireWildcard(_linkify);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar tokenize = linkify.tokenize,\n options = linkify.options; /**\n \tLinkify a HTML DOM node\n */\n\nvar Options = options.Options;\n\n\nvar TEXT_TOKEN = linkify.parser.TOKENS.TEXT;\n\nvar HTML_NODE = 1,\n TXT_NODE = 3;\n\n/**\n\tGiven a parent element and child node that the parent contains, replaces\n\tthat child with the given array of new children\n*/\nfunction replaceChildWithChildren(parent, oldChild, newChildren) {\n\tvar lastNewChild = newChildren[newChildren.length - 1];\n\tparent.replaceChild(lastNewChild, oldChild);\n\tfor (var i = newChildren.length - 2; i >= 0; i--) {\n\t\tparent.insertBefore(newChildren[i], lastNewChild);\n\t\tlastNewChild = newChildren[i];\n\t}\n}\n\n/**\n\tGiven an array of MultiTokens, return an array of Nodes that are either\n\t(a) Plain Text nodes (node type 3)\n\t(b) Anchor tag nodes (usually, unless tag name is overridden in the options)\n\n\tTakes the same options as linkifyElement and an optional doc element\n\t(this should be passed in by linkifyElement)\n*/\nfunction tokensToNodes(tokens, opts, doc) {\n\tvar result = [];\n\n\tfor (var _iterator = tokens, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar token = _ref;\n\n\t\tif (token.type === 'nl' && opts.nl2br) {\n\t\t\tresult.push(doc.createElement('br'));\n\t\t\tcontinue;\n\t\t} else if (!token.isLink || !opts.check(token)) {\n\t\t\tresult.push(doc.createTextNode(token.toString()));\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar _opts$resolve = opts.resolve(token),\n\t\t formatted = _opts$resolve.formatted,\n\t\t formattedHref = _opts$resolve.formattedHref,\n\t\t tagName = _opts$resolve.tagName,\n\t\t className = _opts$resolve.className,\n\t\t target = _opts$resolve.target,\n\t\t events = _opts$resolve.events,\n\t\t attributes = _opts$resolve.attributes;\n\n\t\t// Build the link\n\n\n\t\tvar link = doc.createElement(tagName);\n\t\tlink.setAttribute('href', formattedHref);\n\n\t\tif (className) {\n\t\t\tlink.setAttribute('class', className);\n\t\t}\n\n\t\tif (target) {\n\t\t\tlink.setAttribute('target', target);\n\t\t}\n\n\t\t// Build up additional attributes\n\t\tif (attributes) {\n\t\t\tfor (var attr in attributes) {\n\t\t\t\tlink.setAttribute(attr, attributes[attr]);\n\t\t\t}\n\t\t}\n\n\t\tif (events) {\n\t\t\tfor (var event in events) {\n\t\t\t\tif (link.addEventListener) {\n\t\t\t\t\tlink.addEventListener(event, events[event]);\n\t\t\t\t} else if (link.attachEvent) {\n\t\t\t\t\tlink.attachEvent('on' + event, events[event]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlink.appendChild(doc.createTextNode(formatted));\n\t\tresult.push(link);\n\t}\n\n\treturn result;\n}\n\n// Requires document.createElement\nfunction linkifyElementHelper(element, opts, doc) {\n\n\t// Can the element be linkified?\n\tif (!element || element.nodeType !== HTML_NODE) {\n\t\tthrow new Error('Cannot linkify ' + element + ' - Invalid DOM Node type');\n\t}\n\n\tvar ignoreTags = opts.ignoreTags;\n\n\t// Is this element already a link?\n\tif (element.tagName === 'A' || options.contains(ignoreTags, element.tagName)) {\n\t\t// No need to linkify\n\t\treturn element;\n\t}\n\n\tvar childElement = element.firstChild;\n\n\twhile (childElement) {\n\t\tvar str = void 0,\n\t\t tokens = void 0,\n\t\t nodes = void 0;\n\n\t\tswitch (childElement.nodeType) {\n\t\t\tcase HTML_NODE:\n\t\t\t\tlinkifyElementHelper(childElement, opts, doc);\n\t\t\t\tbreak;\n\t\t\tcase TXT_NODE:\n\t\t\t\t{\n\t\t\t\t\tstr = childElement.nodeValue;\n\t\t\t\t\ttokens = tokenize(str);\n\n\t\t\t\t\tif (tokens.length === 0 || tokens.length === 1 && tokens[0] instanceof TEXT_TOKEN) {\n\t\t\t\t\t\t// No node replacement required\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tnodes = tokensToNodes(tokens, opts, doc);\n\n\t\t\t\t\t// Swap out the current child for the set of nodes\n\t\t\t\t\treplaceChildWithChildren(element, childElement, nodes);\n\n\t\t\t\t\t// so that the correct sibling is selected next\n\t\t\t\t\tchildElement = nodes[nodes.length - 1];\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\n\t\tchildElement = childElement.nextSibling;\n\t}\n\n\treturn element;\n}\n\nfunction linkifyElement(element, opts) {\n\tvar doc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\n\ttry {\n\t\tdoc = doc || document || window && window.document || global && global.document;\n\t} catch (e) {/* do nothing for now */}\n\n\tif (!doc) {\n\t\tthrow new Error('Cannot find document implementation. ' + 'If you are in a non-browser environment like Node.js, ' + 'pass the document implementation as the third argument to linkifyElement.');\n\t}\n\n\topts = new Options(opts);\n\treturn linkifyElementHelper(element, opts, doc);\n}\n\n// Maintain reference to the recursive helper to cache option-normalization\nlinkifyElement.helper = linkifyElementHelper;\nlinkifyElement.normalize = function (opts) {\n\treturn new Options(opts);\n};\n\nexports.default = linkifyElement;","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar TextForEvent = require('../../../TextForEvent');\n\n\nmodule.exports = React.createClass({\n displayName: 'TextualEvent',\n\n propTypes: {\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired\n },\n\n render: function render() {\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n var text = TextForEvent.textForEvent(this.props.mxEvent);\n if (text == null || text.length === 0) return null;\n return React.createElement(\n EmojiText,\n { element: 'div', className: 'mx_TextualEvent' },\n text\n );\n }\n});\n//# sourceMappingURL=TextualEvent.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'UnknownBody',\n\n render: function render() {\n var tooltip = (0, _languageHandler._t)(\"Removed or unknown message type\");\n if (this.props.mxEvent.isRedacted()) {\n var redactedBecauseUserId = this.props.mxEvent.getUnsigned().redacted_because.sender;\n tooltip = redactedBecauseUserId ? (0, _languageHandler._t)(\"Message removed by %(userId)s\", { userId: redactedBecauseUserId }) : (0, _languageHandler._t)(\"Message removed\");\n }\n\n var text = this.props.mxEvent.getContent().body;\n return _react2.default.createElement(\n 'span',\n { className: 'mx_UnknownBody', title: tooltip },\n text\n );\n }\n});\n//# sourceMappingURL=UnknownBody.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar ObjectUtils = require(\"../../../ObjectUtils\");\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require(\"../../../index\");\n\nvar Modal = require(\"../../../Modal\");\n\nmodule.exports = React.createClass({\n displayName: 'AliasSettings',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired,\n canSetCanonicalAlias: _propTypes2.default.bool.isRequired,\n canSetAliases: _propTypes2.default.bool.isRequired,\n aliasEvents: _propTypes2.default.array, // [MatrixEvent]\n canonicalAliasEvent: _propTypes2.default.object // MatrixEvent\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canSetAliases: false,\n canSetCanonicalAlias: false,\n aliasEvents: []\n };\n },\n\n getInitialState: function getInitialState() {\n return this.recalculateState(this.props.aliasEvents, this.props.canonicalAliasEvent);\n },\n\n recalculateState: function recalculateState(aliasEvents, canonicalAliasEvent) {\n aliasEvents = aliasEvents || [];\n\n var state = {\n domainToAliases: {}, // { domain.com => [#alias1:domain.com, #alias2:domain.com] }\n remoteDomains: [], // [ domain.com, foobar.com ]\n canonicalAlias: null // #canonical:domain.com\n };\n var localDomain = MatrixClientPeg.get().getDomain();\n\n state.domainToAliases = this.aliasEventsToDictionary(aliasEvents);\n\n state.remoteDomains = (0, _keys2.default)(state.domainToAliases).filter(function (domain) {\n return domain !== localDomain && state.domainToAliases[domain].length > 0;\n });\n\n if (canonicalAliasEvent) {\n state.canonicalAlias = canonicalAliasEvent.getContent().alias;\n }\n\n return state;\n },\n\n saveSettings: function saveSettings() {\n var promises = [];\n\n // save new aliases for m.room.aliases\n var aliasOperations = this.getAliasOperations();\n for (var i = 0; i < aliasOperations.length; i++) {\n var alias_operation = aliasOperations[i];\n console.log(\"alias %s %s\", alias_operation.place, alias_operation.val);\n switch (alias_operation.place) {\n case 'add':\n promises.push(MatrixClientPeg.get().createAlias(alias_operation.val, this.props.roomId));\n break;\n case 'del':\n promises.push(MatrixClientPeg.get().deleteAlias(alias_operation.val));\n break;\n default:\n console.log(\"Unknown alias operation, ignoring: \" + alias_operation.place);\n }\n }\n\n var oldCanonicalAlias = null;\n if (this.props.canonicalAliasEvent) {\n oldCanonicalAlias = this.props.canonicalAliasEvent.getContent().alias;\n }\n\n var newCanonicalAlias = this.state.canonicalAlias;\n\n if (this.props.canSetCanonicalAlias && oldCanonicalAlias !== newCanonicalAlias) {\n console.log(\"AliasSettings: Updating canonical alias\");\n promises = [_bluebird2.default.all(promises).then(MatrixClientPeg.get().sendStateEvent(this.props.roomId, \"m.room.canonical_alias\", {\n alias: newCanonicalAlias\n }, \"\"))];\n }\n\n return promises;\n },\n\n aliasEventsToDictionary: function aliasEventsToDictionary(aliasEvents) {\n // m.room.alias events\n var dict = {};\n aliasEvents.forEach(function (event) {\n dict[event.getStateKey()] = (event.getContent().aliases || []).slice() // shallow-copy\n ;\n });\n return dict;\n },\n\n isAliasValid: function isAliasValid(alias) {\n // XXX: FIXME SPEC-1\n return alias.match(/^#([^\\/:,]+?):(.+)$/) && encodeURI(alias) === alias;\n },\n\n getAliasOperations: function getAliasOperations() {\n var oldAliases = this.aliasEventsToDictionary(this.props.aliasEvents);\n return ObjectUtils.getKeyValueArrayDiffs(oldAliases, this.state.domainToAliases);\n },\n\n onNewAliasChanged: function onNewAliasChanged(value) {\n this.setState({ newAlias: value });\n },\n\n onLocalAliasAdded: function onLocalAliasAdded(alias) {\n if (!alias || alias.length === 0) return; // ignore attempts to create blank aliases\n\n var localDomain = MatrixClientPeg.get().getDomain();\n if (!alias.includes(':')) alias += ':' + localDomain;\n if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {\n this.state.domainToAliases[localDomain] = this.state.domainToAliases[localDomain] || [];\n this.state.domainToAliases[localDomain].push(alias);\n\n this.setState({\n domainToAliases: this.state.domainToAliases,\n // Reset the add field\n newAlias: \"\"\n });\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Invalid alias format', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid alias format'),\n description: (0, _languageHandler._t)('\\'%(alias)s\\' is not a valid format for an alias', { alias: alias })\n });\n }\n\n if (!this.props.canonicalAlias) {\n this.setState({\n canonicalAlias: alias\n });\n }\n },\n\n onLocalAliasChanged: function onLocalAliasChanged(alias, index) {\n if (alias === \"\") return; // hit the delete button to delete please\n var localDomain = MatrixClientPeg.get().getDomain();\n if (!alias.includes(':')) alias += ':' + localDomain;\n if (this.isAliasValid(alias) && alias.endsWith(localDomain)) {\n this.state.domainToAliases[localDomain][index] = alias;\n } else {\n var ErrorDialog = sdk.getComponent(\"dialogs.ErrorDialog\");\n Modal.createTrackedDialog('Invalid address format', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid address format'),\n description: (0, _languageHandler._t)('\\'%(alias)s\\' is not a valid format for an address', { alias: alias })\n });\n }\n },\n\n onLocalAliasDeleted: function onLocalAliasDeleted(index) {\n var localDomain = MatrixClientPeg.get().getDomain();\n // It's a bit naughty to directly manipulate this.state, and React would\n // normally whine at you, but it can't see us doing the splice. Given we\n // promptly setState anyway, it's just about acceptable. The alternative\n // would be to arbitrarily deepcopy to a temp variable and then setState\n // that, but why bother when we can cut this corner.\n var alias = this.state.domainToAliases[localDomain].splice(index, 1);\n this.setState({\n domainToAliases: this.state.domainToAliases\n });\n if (this.props.canonicalAlias === alias) {\n this.setState({\n canonicalAlias: null\n });\n }\n },\n\n onCanonicalAliasChange: function onCanonicalAliasChange(event) {\n this.setState({\n canonicalAlias: event.target.value\n });\n },\n\n render: function render() {\n var _this = this;\n\n var self = this;\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n var EditableItemList = sdk.getComponent(\"elements.EditableItemList\");\n var localDomain = MatrixClientPeg.get().getDomain();\n\n var canonical_alias_section = void 0;\n if (this.props.canSetCanonicalAlias) {\n var found = false;\n var canonicalValue = this.state.canonicalAlias || \"\";\n canonical_alias_section = React.createElement(\n 'select',\n { onChange: this.onCanonicalAliasChange, value: canonicalValue },\n React.createElement(\n 'option',\n { value: '', key: 'unset' },\n (0, _languageHandler._t)('not specified')\n ),\n (0, _keys2.default)(self.state.domainToAliases).map(function (domain, i) {\n return self.state.domainToAliases[domain].map(function (alias, j) {\n if (alias === _this.state.canonicalAlias) found = true;\n return React.createElement(\n 'option',\n { value: alias, key: i + \"_\" + j },\n alias\n );\n });\n }),\n found || !this.stateCanonicalAlias ? '' : React.createElement(\n 'option',\n { value: this.state.canonicalAlias, key: 'arbitrary' },\n this.state.canonicalAlias\n )\n );\n } else {\n canonical_alias_section = React.createElement(\n 'b',\n null,\n this.state.canonicalAlias || (0, _languageHandler._t)('not set')\n );\n }\n\n var remote_aliases_section = void 0;\n if (this.state.remoteDomains.length) {\n remote_aliases_section = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasLabel' },\n (0, _languageHandler._t)(\"Remote addresses for this room:\")\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasesTable' },\n this.state.remoteDomains.map(function (domain, i) {\n return _this.state.domainToAliases[domain].map(function (alias, j) {\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasesTableRow', key: i + \"_\" + j },\n React.createElement(EditableText, {\n className: 'mx_RoomSettings_alias mx_RoomSettings_editable',\n blurToCancel: false,\n editable: false,\n initialValue: alias })\n );\n });\n })\n )\n );\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Addresses')\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomSettings_aliasLabel' },\n (0, _languageHandler._t)('The main address for this room is'),\n ': ',\n canonical_alias_section\n ),\n React.createElement(EditableItemList, {\n className: \"mx_RoomSettings_localAliases\",\n items: this.state.domainToAliases[localDomain] || [],\n newItem: this.state.newAlias,\n onNewItemChanged: this.onNewAliasChanged,\n canEdit: this.props.canSetAliases,\n onItemAdded: this.onLocalAliasAdded,\n onItemEdited: this.onLocalAliasChanged,\n onItemRemoved: this.onLocalAliasDeleted,\n itemsLabel: (0, _languageHandler._t)('Local addresses for this room:'),\n noItemsLabel: (0, _languageHandler._t)('This room has no local addresses'),\n placeholder: (0, _languageHandler._t)('New address (e.g. #foo:%(localDomain)s)', { localDomain: localDomain })\n }),\n remote_aliases_section\n );\n }\n});\n//# sourceMappingURL=AliasSettings.js.map","'use strict';\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n\nvar sdk = require('../../../index');\nvar Tinter = require('../../../Tinter');\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\n\nvar ROOM_COLORS = [\n// magic room default values courtesy of Ribot\n[Tinter.getKeyRgb()[0], Tinter.getKeyRgb()[1]], [\"#81bddb\", \"#eaf1f4\"], [\"#bd79cb\", \"#f3eaf5\"], [\"#c65d94\", \"#f5eaef\"], [\"#e55e5e\", \"#f5eaea\"], [\"#eca46f\", \"#f5eeea\"], [\"#dad658\", \"#f5f4ea\"], [\"#80c553\", \"#eef5ea\"], [\"#bb814e\", \"#eee8e3\"]];\n\nmodule.exports = React.createClass({\n displayName: 'ColorSettings',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n var data = {\n index: 0,\n primary_color: ROOM_COLORS[0][0],\n secondary_color: ROOM_COLORS[0][1],\n hasChanged: false\n };\n var scheme = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_ACCOUNT, \"roomColor\", this.props.room.roomId);\n\n if (scheme.primary_color && scheme.secondary_color) {\n // We only use the user's scheme if the scheme is valid.\n data.primary_color = scheme.primary_color;\n data.secondary_color = scheme.secondary_color;\n }\n data.index = this._getColorIndex(data);\n\n if (data.index === -1) {\n // append the unrecognised colours to our palette\n data.index = ROOM_COLORS.length;\n ROOM_COLORS.push([scheme.primary_color, scheme.secondary_color]);\n }\n return data;\n },\n\n saveSettings: function saveSettings() {\n // : Promise\n if (!this.state.hasChanged) {\n return _bluebird2.default.resolve(); // They didn't explicitly give a color to save.\n }\n var originalState = this.getInitialState();\n if (originalState.primary_color !== this.state.primary_color || originalState.secondary_color !== this.state.secondary_color) {\n console.log(\"ColorSettings: Saving new color\");\n // We would like guests to be able to set room colour but currently\n // they can't, so we still send the request but display a sensible\n // error if it fails.\n // TODO: Support guests for room color. Technically this is possible via granular settings\n // Granular settings would mean the guest is forced to use the DEVICE level though.\n _SettingsStore2.default.setValue(\"roomColor\", this.props.room.roomId, _SettingsStore.SettingLevel.ROOM_ACCOUNT, {\n primary_color: this.state.primary_color,\n secondary_color: this.state.secondary_color\n }).catch(function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n }\n });\n }\n return _bluebird2.default.resolve(); // no color diff\n },\n\n _getColorIndex: function _getColorIndex(scheme) {\n if (!scheme || !scheme.primary_color || !scheme.secondary_color) {\n return -1;\n }\n // XXX: we should validate these values\n for (var i = 0; i < ROOM_COLORS.length; i++) {\n var room_color = ROOM_COLORS[i];\n if (room_color[0] === String(scheme.primary_color).toLowerCase() && room_color[1] === String(scheme.secondary_color).toLowerCase()) {\n return i;\n }\n }\n return -1;\n },\n\n _onColorSchemeChanged: function _onColorSchemeChanged(index) {\n // preview what the user just changed the scheme to.\n Tinter.tint(ROOM_COLORS[index][0], ROOM_COLORS[index][1]);\n this.setState({\n index: index,\n primary_color: ROOM_COLORS[index][0],\n secondary_color: ROOM_COLORS[index][1],\n hasChanged: true\n });\n },\n\n render: function render() {\n var _this = this;\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColors' },\n ROOM_COLORS.map(function (room_color, i) {\n var selected = void 0;\n if (i === _this.state.index) {\n selected = React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColor_selected' },\n React.createElement('img', { src: 'img/tick.svg', width: '17', height: '14', alt: './' })\n );\n }\n var boundClick = _this._onColorSchemeChanged.bind(_this, i);\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_roomColor',\n key: \"room_color_\" + i,\n style: { backgroundColor: room_color[1] },\n onClick: boundClick },\n selected,\n React.createElement('div', { className: 'mx_RoomSettings_roomColorPrimary', style: { backgroundColor: room_color[0] } })\n );\n })\n );\n }\n});\n//# sourceMappingURL=ColorSettings.js.map","'use strict';\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _isEqual = require('lodash/isEqual');\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GROUP_ID_REGEX = /\\+\\S+\\:\\S+/; /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RelatedGroupSettings',\n\n propTypes: {\n roomId: _propTypes2.default.string.isRequired,\n canSetRelatedGroups: _propTypes2.default.bool.isRequired,\n relatedGroupsEvent: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixEvent)\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient)\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n canSetRelatedGroups: false\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n newGroupsList: this.getInitialGroupList(),\n newGroupId: null\n };\n },\n\n getInitialGroupList: function getInitialGroupList() {\n return this.props.relatedGroupsEvent ? this.props.relatedGroupsEvent.getContent().groups || [] : [];\n },\n\n needsSaving: function needsSaving() {\n var cli = this.context.matrixClient;\n var room = cli.getRoom(this.props.roomId);\n if (!room.currentState.maySendStateEvent('m.room.related_groups', cli.getUserId())) return false;\n return !(0, _isEqual2.default)(this.getInitialGroupList(), this.state.newGroupsList);\n },\n\n saveSettings: function saveSettings() {\n if (!this.needsSaving()) return _promise2.default.resolve();\n\n return this.context.matrixClient.sendStateEvent(this.props.roomId, 'm.room.related_groups', {\n groups: this.state.newGroupsList\n }, '');\n },\n\n validateGroupId: function validateGroupId(groupId) {\n if (!GROUP_ID_REGEX.test(groupId)) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Invalid related community ID', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Invalid community ID'),\n description: (0, _languageHandler._t)('\\'%(groupId)s\\' is not a valid community ID', { groupId: groupId })\n });\n return false;\n }\n return true;\n },\n\n onNewGroupChanged: function onNewGroupChanged(newGroupId) {\n this.setState({ newGroupId: newGroupId });\n },\n\n onGroupAdded: function onGroupAdded(groupId) {\n if (groupId.length === 0 || !this.validateGroupId(groupId)) {\n return;\n }\n this.setState({\n newGroupsList: this.state.newGroupsList.concat([groupId]),\n newGroupId: ''\n });\n },\n\n onGroupEdited: function onGroupEdited(groupId, index) {\n if (groupId.length === 0 || !this.validateGroupId(groupId)) {\n return;\n }\n this.setState({\n newGroupsList: (0, _assign2.default)(this.state.newGroupsList, (0, _defineProperty3.default)({}, index, groupId))\n });\n },\n\n onGroupDeleted: function onGroupDeleted(index) {\n var newGroupsList = this.state.newGroupsList.slice();\n newGroupsList.splice(index, 1);\n this.setState({ newGroupsList: newGroupsList });\n },\n\n render: function render() {\n var localDomain = this.context.matrixClient.getDomain();\n var EditableItemList = _index2.default.getComponent('elements.EditableItemList');\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Flair')\n ),\n _react2.default.createElement(EditableItemList, {\n items: this.state.newGroupsList,\n className: \"mx_RelatedGroupSettings\",\n newItem: this.state.newGroupId,\n canEdit: this.props.canSetRelatedGroups,\n onNewItemChanged: this.onNewGroupChanged,\n onItemAdded: this.onGroupAdded,\n onItemEdited: this.onGroupEdited,\n onItemRemoved: this.onGroupDeleted,\n itemsLabel: (0, _languageHandler._t)('Showing flair for these communities:'),\n noItemsLabel: (0, _languageHandler._t)('This room is not showing flair for any communities'),\n placeholder: (0, _languageHandler._t)('New community ID (e.g. +foo:%(localDomain)s)', { localDomain: localDomain })\n })\n );\n }\n});\n//# sourceMappingURL=RelatedGroupSettings.js.map","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","'use strict';\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react'); /*\n Copyright 2016 OpenMarket Ltd\n Copyright 2017 Travis Ralston\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar sdk = require(\"../../../index\");\n\n\nmodule.exports = React.createClass({\n displayName: 'UrlPreviewSettings',\n\n propTypes: {\n room: _propTypes2.default.object\n },\n\n contextTypes: {\n matrixClient: _propTypes2.default.instanceOf(_matrixJsSdk.MatrixClient).isRequired\n },\n\n saveSettings: function saveSettings() {\n var promises = [];\n if (this.refs.urlPreviewsRoom) promises.push(this.refs.urlPreviewsRoom.save());\n if (this.refs.urlPreviewsSelf) promises.push(this.refs.urlPreviewsSelf.save());\n return promises;\n },\n\n render: function render() {\n var SettingsFlag = sdk.getComponent(\"elements.SettingsFlag\");\n var roomId = this.props.room.roomId;\n var isEncrypted = this.context.matrixClient.isRoomEncrypted(roomId);\n\n var previewsForAccount = null;\n var previewsForRoom = null;\n\n if (!isEncrypted) {\n // Only show account setting state and room state setting state in non-e2ee rooms where they apply\n var accountEnabled = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ACCOUNT, \"urlPreviewsEnabled\");\n if (accountEnabled) {\n previewsForAccount = (0, _languageHandler._t)(\"You have <a>enabled</a> URL previews by default.\", {}, {\n 'a': function a(sub) {\n return React.createElement(\n 'a',\n { href: '#/settings' },\n sub\n );\n }\n });\n } else if (accountEnabled) {\n previewsForAccount = (0, _languageHandler._t)(\"You have <a>disabled</a> URL previews by default.\", {}, {\n 'a': function a(sub) {\n return React.createElement(\n 'a',\n { href: '#/settings' },\n sub\n );\n }\n });\n }\n\n if (_SettingsStore2.default.canSetValue(\"urlPreviewsEnabled\", roomId, \"room\")) {\n previewsForRoom = React.createElement(\n 'label',\n null,\n React.createElement(SettingsFlag, { name: 'urlPreviewsEnabled',\n level: _SettingsStore.SettingLevel.ROOM,\n roomId: roomId,\n isExplicit: true,\n manualSave: true,\n ref: 'urlPreviewsRoom' })\n );\n } else {\n var str = (0, _languageHandler._td)(\"URL previews are enabled by default for participants in this room.\");\n if (!_SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM, \"urlPreviewsEnabled\", roomId, /*explicit=*/true)) {\n str = (0, _languageHandler._td)(\"URL previews are disabled by default for participants in this room.\");\n }\n previewsForRoom = React.createElement(\n 'label',\n null,\n (0, _languageHandler._t)(str)\n );\n }\n } else {\n previewsForAccount = (0, _languageHandler._t)(\"In encrypted rooms, like this one, URL previews are disabled by default to ensure that your \" + \"homeserver (where the previews are generated) cannot gather information about links you see in \" + \"this room.\");\n }\n\n var previewsForRoomAccount = // in an e2ee room we use a special key to enforce per-room opt-in\n React.createElement(SettingsFlag, { name: isEncrypted ? 'urlPreviewsEnabled_e2ee' : 'urlPreviewsEnabled',\n level: _SettingsStore.SettingLevel.ROOM_ACCOUNT,\n roomId: roomId,\n manualSave: true,\n ref: 'urlPreviewsSelf'\n });\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomSettings_toggles' },\n React.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"URL Previews\")\n ),\n React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('When someone puts a URL in their message, a URL preview can be shown to give more ' + 'information about that link such as the title, description, and an image from the website.')\n ),\n React.createElement(\n 'div',\n null,\n previewsForAccount\n ),\n previewsForRoom,\n React.createElement(\n 'label',\n null,\n previewsForRoomAccount\n )\n );\n }\n});\n//# sourceMappingURL=UrlPreviewSettings.js.map","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _SlashCommands = require('../SlashCommands');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMMANDS = (0, _values2.default)(_SlashCommands.CommandMap);\n\nvar COMMAND_RE = /(^\\/\\w*)(?: .*)?/g;\n\nvar CommandProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(CommandProvider, _AutocompleteProvider);\n\n function CommandProvider() {\n (0, _classCallCheck3.default)(this, CommandProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CommandProvider.__proto__ || (0, _getPrototypeOf2.default)(CommandProvider)).call(this, COMMAND_RE));\n\n _this.matcher = new _QueryMatcher2.default(COMMANDS, {\n keys: ['command', 'args', 'description']\n });\n return _this;\n }\n\n (0, _createClass3.default)(CommandProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection, force) {\n var _getCurrentCommand = this.getCurrentCommand(query, selection),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (!command) return [];\n\n var matches = [];\n // check if the full match differs from the first word (i.e. returns false if the command has args)\n if (command[0] !== command[1]) {\n // The input looks like a command with arguments, perform exact match\n var name = command[1].substr(1); // strip leading `/`\n if (_SlashCommands.CommandMap[name]) {\n // some commands, namely `me` and `ddg` don't suit having the usage shown whilst typing their arguments\n if (_SlashCommands.CommandMap[name].hideCompletionAfterSpace) return [];\n matches = [_SlashCommands.CommandMap[name]];\n }\n } else {\n if (query === '/') {\n // If they have just entered `/` show everything\n matches = COMMANDS;\n } else {\n // otherwise fuzzy match against all of the fields\n matches = this.matcher.match(command[1]);\n }\n }\n\n return matches.map(function (result) {\n return {\n // If the command is the same as the one they entered, we don't want to discard their arguments\n completion: result.command === command[1] ? command[0] : result.command + ' ',\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: result.command,\n subtitle: result.args,\n description: (0, _languageHandler._t)(result.description) }),\n range: range\n };\n });\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '*️⃣ ' + (0, _languageHandler._t)('Commands');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_block' },\n completions\n );\n }\n }]);\n return CommandProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = CommandProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CommandProvider.js.map","var baseAt = require('./_baseAt'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\nvar at = flatRest(baseAt);\n\nmodule.exports = at;\n","var get = require('./get');\n\n/**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\nfunction baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n}\n\nmodule.exports = baseAt;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _matrixTo = require('../matrix-to');\n\nvar _FlairStore = require('../stores/FlairStore');\n\nvar _FlairStore2 = _interopRequireDefault(_FlairStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar COMMUNITY_REGEX = /\\B\\+\\S*/g;\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar CommunityProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(CommunityProvider, _AutocompleteProvider);\n\n function CommunityProvider() {\n (0, _classCallCheck3.default)(this, CommunityProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (CommunityProvider.__proto__ || (0, _getPrototypeOf2.default)(CommunityProvider)).call(this, COMMUNITY_REGEX));\n\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['groupId', 'name', 'shortDescription']\n });\n return _this;\n }\n\n (0, _createClass3.default)(CommunityProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var BaseAvatar, cli, completions, _getCurrentCommand, command, range, joinedGroups, groups, matchedString;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n BaseAvatar = _index2.default.getComponent('views.avatars.BaseAvatar');\n\n // Disable autocompletions when composing commands because of various issues\n // (see https://github.com/vector-im/riot-web/issues/4762)\n\n if (!/^(\\/join|\\/leave)/.test(query)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt('return', []);\n\n case 3:\n cli = _MatrixClientPeg2.default.get();\n completions = [];\n _getCurrentCommand = this.getCurrentCommand(query, selection, force), command = _getCurrentCommand.command, range = _getCurrentCommand.range;\n\n if (!command) {\n _context.next = 15;\n break;\n }\n\n joinedGroups = cli.getGroups().filter(function (_ref2) {\n var myMembership = _ref2.myMembership;\n return myMembership === 'join';\n });\n _context.next = 10;\n return (0, _bluebird.resolve)(_promise2.default.all(joinedGroups.map(function () {\n var _ref3 = (0, _bluebird.method)(function (_ref4) {\n var groupId = _ref4.groupId;\n\n try {\n return _FlairStore2.default.getGroupProfileCached(cli, groupId);\n } catch (e) {\n // if FlairStore failed, fall back to just groupId\n return _promise2.default.resolve({\n name: '',\n groupId: groupId,\n avatarUrl: '',\n shortDescription: ''\n });\n }\n });\n\n return function (_x5) {\n return _ref3.apply(this, arguments);\n };\n }())));\n\n case 10:\n groups = _context.sent;\n\n\n this.matcher.setObjects(groups);\n\n matchedString = command[0];\n\n completions = this.matcher.match(matchedString);\n completions = (0, _sortBy3.default)(completions, [function (c) {\n return score(matchedString, c.groupId);\n }, function (c) {\n return c.groupId.length;\n }]).map(function (_ref5) {\n var avatarUrl = _ref5.avatarUrl,\n groupId = _ref5.groupId,\n name = _ref5.name;\n return {\n completion: groupId,\n suffix: ' ',\n href: (0, _matrixTo.makeGroupPermalink)(groupId),\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(BaseAvatar, { name: name || groupId,\n width: 24, height: 24,\n url: avatarUrl ? cli.mxcUrlToHttp(avatarUrl, 24, 24) : null }), title: name, description: groupId }),\n range: range\n };\n }).slice(0, 4);\n\n case 15:\n return _context.abrupt('return', completions);\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '💬 ' + (0, _languageHandler._t)('Communities');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return CommunityProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = CommunityProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=CommunityProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nrequire('whatwg-fetch');\n\nvar _Components = require('./Components');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DDG_REGEX = /\\/ddg\\s+(.+)$/g; /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar REFERRER = 'vector';\n\nvar DuckDuckGoProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(DuckDuckGoProvider, _AutocompleteProvider);\n\n function DuckDuckGoProvider() {\n (0, _classCallCheck3.default)(this, DuckDuckGoProvider);\n return (0, _possibleConstructorReturn3.default)(this, (DuckDuckGoProvider.__proto__ || (0, _getPrototypeOf2.default)(DuckDuckGoProvider)).call(this, DDG_REGEX));\n }\n\n (0, _createClass3.default)(DuckDuckGoProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var _getCurrentCommand, command, range, response, json, results;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _getCurrentCommand = this.getCurrentCommand(query, selection), command = _getCurrentCommand.command, range = _getCurrentCommand.range;\n\n if (!(!query || !command)) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt('return', []);\n\n case 3:\n _context.next = 5;\n return (0, _bluebird.resolve)(fetch(DuckDuckGoProvider.getQueryUri(command[1]), {\n method: 'GET'\n }));\n\n case 5:\n response = _context.sent;\n _context.next = 8;\n return (0, _bluebird.resolve)(response.json());\n\n case 8:\n json = _context.sent;\n results = json.Results.map(function (result) {\n return {\n completion: result.Text,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: result.Text,\n description: result.Result }),\n range: range\n };\n });\n\n if (json.Answer) {\n results.unshift({\n completion: json.Answer,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.Answer,\n description: json.AnswerType }),\n range: range\n });\n }\n if (json.RelatedTopics && json.RelatedTopics.length > 0) {\n results.unshift({\n completion: json.RelatedTopics[0].Text,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.RelatedTopics[0].Text }),\n range: range\n });\n }\n if (json.AbstractText) {\n results.unshift({\n completion: json.AbstractText,\n component: _react2.default.createElement(_Components.TextualCompletion, {\n title: json.AbstractText }),\n range: range\n });\n }\n return _context.abrupt('return', results);\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '🔍 ' + (0, _languageHandler._t)('Results from DuckDuckGo');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_block' },\n completions\n );\n }\n }], [{\n key: 'getQueryUri',\n value: function getQueryUri(query) {\n return 'https://api.duckduckgo.com/?q=' + encodeURIComponent(query) + ('&format=json&no_redirect=1&no_html=1&t=' + encodeURIComponent(REFERRER));\n }\n }]);\n return DuckDuckGoProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = DuckDuckGoProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DuckDuckGoProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _Components = require('./Components');\n\nvar _Rooms = require('../Rooms');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _matrixTo = require('../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ROOM_REGEX = /\\B#\\S*/g;\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar RoomProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(RoomProvider, _AutocompleteProvider);\n\n function RoomProvider() {\n (0, _classCallCheck3.default)(this, RoomProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (RoomProvider.__proto__ || (0, _getPrototypeOf2.default)(RoomProvider)).call(this, ROOM_REGEX));\n\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['displayedAlias', 'name']\n });\n return _this;\n }\n\n (0, _createClass3.default)(RoomProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var RoomAvatar = _index2.default.getComponent('views.avatars.RoomAvatar');\n\n var client = _MatrixClientPeg2.default.get();\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command) {\n // the only reason we need to do this is because Fuse only matches on properties\n this.matcher.setObjects(client.getRooms().filter(function (room) {\n return !!room && !!(0, _Rooms.getDisplayAliasForRoom)(room);\n }).map(function (room) {\n return {\n room: room,\n name: room.name,\n displayedAlias: (0, _Rooms.getDisplayAliasForRoom)(room)\n };\n }));\n var matchedString = command[0];\n completions = this.matcher.match(matchedString);\n completions = (0, _sortBy3.default)(completions, [function (c) {\n return score(matchedString, c.displayedAlias);\n }, function (c) {\n return c.displayedAlias.length;\n }]).map(function (room) {\n var displayAlias = (0, _Rooms.getDisplayAliasForRoom)(room.room) || room.roomId;\n return {\n completion: displayAlias,\n completionId: displayAlias,\n suffix: ' ',\n href: (0, _matrixTo.makeRoomPermalink)(displayAlias),\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(RoomAvatar, { width: 24, height: 24, room: room.room }), title: room.name, description: displayAlias }),\n range: range\n };\n }).filter(function (completion) {\n return !!completion.completion && completion.completion.length > 0;\n }).slice(0, 4);\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '💬 ' + (0, _languageHandler._t)('Rooms');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return RoomProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = RoomProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _matrixTo = require('../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar USER_REGEX = /\\B@\\S*/g;\n\n// used when you hit 'tab' - we allow some separator chars at the beginning\n// to allow you to tab-complete /mat into /(matthew)\n\n/*\nCopyright 2016 Aviral Dasgupta\nCopyright 2017 Vector Creations Ltd\nCopyright 2017, 2018 New Vector Ltd\nCopyright 2018 Michael Telatynski <7t3chguy@gmail.com>\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar FORCED_USER_REGEX = /[^/,:; \\t\\n]\\S*/g;\n\nvar UserProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(UserProvider, _AutocompleteProvider);\n\n function UserProvider(room) {\n (0, _classCallCheck3.default)(this, UserProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (UserProvider.__proto__ || (0, _getPrototypeOf2.default)(UserProvider)).call(this, USER_REGEX, FORCED_USER_REGEX));\n\n _this.users = null;\n _this.room = null;\n\n _this.room = room;\n _this.matcher = new _QueryMatcher2.default([], {\n keys: ['name'],\n funcs: [function (obj) {\n return obj.userId.slice(1);\n }], // index by user id minus the leading '@'\n shouldMatchPrefix: true,\n shouldMatchWordsOnly: false\n });\n\n _this._onRoomTimelineBound = _this._onRoomTimeline.bind(_this);\n _this._onRoomStateMemberBound = _this._onRoomStateMember.bind(_this);\n\n _MatrixClientPeg2.default.get().on(\"Room.timeline\", _this._onRoomTimelineBound);\n _MatrixClientPeg2.default.get().on(\"RoomState.members\", _this._onRoomStateMemberBound);\n return _this;\n }\n\n (0, _createClass3.default)(UserProvider, [{\n key: 'destroy',\n value: function destroy() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"Room.timeline\", this._onRoomTimelineBound);\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.members\", this._onRoomStateMemberBound);\n }\n }\n }, {\n key: '_onRoomTimeline',\n value: function _onRoomTimeline(ev, room, toStartOfTimeline, removed, data) {\n if (!room) return;\n if (removed) return;\n if (room.roomId !== this.room.roomId) return;\n\n // ignore events from filtered timelines\n if (data.timeline.getTimelineSet() !== room.getUnfilteredTimelineSet()) return;\n\n // ignore anything but real-time updates at the end of the room:\n // updates from pagination will happen when the paginate completes.\n if (toStartOfTimeline || !data || !data.liveEvent) return;\n\n // TODO: lazyload if we have no ev.sender room member?\n this.onUserSpoke(ev.sender);\n }\n }, {\n key: '_onRoomStateMember',\n value: function _onRoomStateMember(ev, state, member) {\n // ignore members in other rooms\n if (member.roomId !== this.room.roomId) {\n return;\n }\n\n // blow away the users cache\n this.users = null;\n }\n }, {\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var MemberAvatar = _index2.default.getComponent('views.avatars.MemberAvatar');\n\n // lazy-load user list into matcher\n if (this.users === null) this._makeUsers();\n\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (!command) return completions;\n\n var fullMatch = command[0];\n // Don't search if the query is a single \"@\"\n if (fullMatch && fullMatch !== '@') {\n // Don't include the '@' in our search query - it's only used as a way to trigger completion\n var _query = fullMatch.startsWith('@') ? fullMatch.substring(1) : fullMatch;\n completions = this.matcher.match(_query).map(function (user) {\n var displayName = user.name || user.userId || '';\n return {\n // Length of completion should equal length of text in decorator. draft-js\n // relies on the length of the entity === length of the text in the decoration.\n completion: user.rawDisplayName,\n completionId: user.userId,\n suffix: selection.beginning && range.start === 0 ? ': ' : ' ',\n href: (0, _matrixTo.makeUserPermalink)(user.userId),\n component: _react2.default.createElement(_Components.PillCompletion, {\n initialComponent: _react2.default.createElement(MemberAvatar, { member: user, width: 24, height: 24 }),\n title: displayName,\n description: user.userId }),\n range: range\n };\n });\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '👥 ' + (0, _languageHandler._t)('Users');\n }\n }, {\n key: '_makeUsers',\n value: function _makeUsers() {\n var events = this.room.getLiveTimeline().getEvents();\n var lastSpoken = {};\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(events), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var event = _step.value;\n\n lastSpoken[event.getSender()] = event.getTs();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var currentUserId = _MatrixClientPeg2.default.get().credentials.userId;\n this.users = this.room.getJoinedMembers().filter(function (_ref2) {\n var userId = _ref2.userId;\n return userId !== currentUserId;\n });\n\n this.users = (0, _sortBy3.default)(this.users, function (member) {\n return 1E20 - lastSpoken[member.userId] || 1E20;\n });\n\n this.matcher.setObjects(this.users);\n }\n }, {\n key: 'onUserSpoke',\n value: function onUserSpoke(user) {\n if (this.users === null) return;\n if (!user) return;\n if (user.userId === _MatrixClientPeg2.default.get().credentials.userId) return;\n\n // Move the user that spoke to the front of the array\n this.users.splice(this.users.findIndex(function (user2) {\n return user2.userId === user.userId;\n }), 1);\n this.users = [user].concat((0, _toConsumableArray3.default)(this.users));\n\n this.matcher.setObjects(this.users);\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill' },\n completions\n );\n }\n }, {\n key: 'shouldForceComplete',\n value: function shouldForceComplete() {\n return true;\n }\n }]);\n return UserProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = UserProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=UserProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _emojione = require('emojione');\n\nvar _QueryMatcher = require('./QueryMatcher');\n\nvar _QueryMatcher2 = _interopRequireDefault(_QueryMatcher);\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Components = require('./Components');\n\nvar _uniq2 = require('lodash/uniq');\n\nvar _uniq3 = _interopRequireDefault(_uniq2);\n\nvar _sortBy2 = require('lodash/sortBy');\n\nvar _sortBy3 = _interopRequireDefault(_sortBy2);\n\nvar _SettingsStore = require('../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _strippedEmoji = require('../stripped-emoji.json');\n\nvar _strippedEmoji2 = _interopRequireDefault(_strippedEmoji);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar LIMIT = 20; /*\n Copyright 2016 Aviral Dasgupta\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar CATEGORY_ORDER = ['people', 'food', 'objects', 'activity', 'nature', 'travel', 'flags', 'regional', 'symbols', 'modifier'];\n\n// Match for \":wink:\" or ascii-style \";-)\" provided by emojione\n// (^|\\s|(emojiUnicode)) to make sure we're either at the start of the string or there's a\n// whitespace character or an emoji before the emoji. The reason for unicodeRegexp is\n// that we need to support inputting multiple emoji with no space between them.\nvar EMOJI_REGEX = new RegExp('(?:^|\\\\s|' + _emojione.unicodeRegexp + ')(' + _emojione.asciiRegexp + '|:[+-\\\\w]*:?)$', 'g');\n\n// We also need to match the non-zero-length prefixes to remove them from the final match,\n// and update the range so that we don't replace the whitespace or the previous emoji.\nvar MATCH_PREFIX_REGEX = new RegExp('(\\\\s|' + _emojione.unicodeRegexp + ')');\n\nvar EMOJI_SHORTNAMES = (0, _keys2.default)(_strippedEmoji2.default).map(function (key) {\n return _strippedEmoji2.default[key];\n}).sort(function (a, b) {\n if (a.category === b.category) {\n return a.emoji_order - b.emoji_order;\n }\n return CATEGORY_ORDER.indexOf(a.category) - CATEGORY_ORDER.indexOf(b.category);\n}).map(function (a, index) {\n return {\n name: a.name,\n shortname: a.shortname,\n aliases: a.aliases ? a.aliases.join(' ') : '',\n aliases_ascii: a.aliases_ascii ? a.aliases_ascii.join(' ') : '',\n // Include the index so that we can preserve the original order\n _orderBy: index\n };\n});\n\nfunction score(query, space) {\n var index = space.indexOf(query);\n if (index === -1) {\n return Infinity;\n } else {\n return index;\n }\n}\n\nvar EmojiProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(EmojiProvider, _AutocompleteProvider);\n\n function EmojiProvider() {\n (0, _classCallCheck3.default)(this, EmojiProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (EmojiProvider.__proto__ || (0, _getPrototypeOf2.default)(EmojiProvider)).call(this, EMOJI_REGEX));\n\n _this.matcher = new _QueryMatcher2.default(EMOJI_SHORTNAMES, {\n keys: ['aliases_ascii', 'shortname', 'aliases'],\n // For matching against ascii equivalents\n shouldMatchWordsOnly: false\n });\n _this.nameMatcher = new _QueryMatcher2.default(EMOJI_SHORTNAMES, {\n keys: ['name'],\n // For removing punctuation\n shouldMatchWordsOnly: true\n });\n return _this;\n }\n\n (0, _createClass3.default)(EmojiProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection, force) {\n if (_SettingsStore2.default.getValue(\"MessageComposerInput.dontSuggestEmoji\")) {\n return []; // don't give any suggestions if the user doesn't want them\n }\n\n var EmojiText = _index2.default.getComponent('views.elements.EmojiText');\n\n var completions = [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command) {\n var matchedString = command[0];\n\n // Remove prefix of any length (single whitespace or unicode emoji)\n var prefixMatch = MATCH_PREFIX_REGEX.exec(matchedString);\n if (prefixMatch) {\n matchedString = matchedString.slice(prefixMatch[0].length);\n range.start += prefixMatch[0].length;\n }\n completions = this.matcher.match(matchedString);\n\n // Do second match with shouldMatchWordsOnly in order to match against 'name'\n completions = completions.concat(this.nameMatcher.match(matchedString));\n\n var sorters = [];\n // First, sort by score (Infinity if matchedString not in shortname)\n sorters.push(function (c) {\n return score(matchedString, c.shortname);\n });\n // If the matchedString is not empty, sort by length of shortname. Example:\n // matchedString = \":bookmark\"\n // completions = [\":bookmark:\", \":bookmark_tabs:\", ...]\n if (matchedString.length > 1) {\n sorters.push(function (c) {\n return c.shortname.length;\n });\n }\n // Finally, sort by original ordering\n sorters.push(function (c) {\n return c._orderBy;\n });\n completions = (0, _sortBy3.default)((0, _uniq3.default)(completions), sorters);\n\n completions = completions.map(function (result) {\n var shortname = result.shortname;\n\n var unicode = (0, _emojione.shortnameToUnicode)(shortname);\n return {\n completion: unicode,\n component: _react2.default.createElement(_Components.PillCompletion, { title: shortname, initialComponent: _react2.default.createElement(\n EmojiText,\n { style: { maxWidth: '1em' } },\n unicode\n ) }),\n range: range\n };\n }).slice(0, LIMIT);\n }\n return completions;\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '😃 ' + (0, _languageHandler._t)('Emoji');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill' },\n completions\n );\n }\n }]);\n return EmojiProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = EmojiProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EmojiProvider.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bluebird = require('bluebird');\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _AutocompleteProvider2 = require('./AutocompleteProvider');\n\nvar _AutocompleteProvider3 = _interopRequireDefault(_AutocompleteProvider2);\n\nvar _languageHandler = require('../languageHandler');\n\nvar _MatrixClientPeg = require('../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Components = require('./Components');\n\nvar _index = require('../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar AT_ROOM_REGEX = /@\\S*/g;\n\nvar NotifProvider = function (_AutocompleteProvider) {\n (0, _inherits3.default)(NotifProvider, _AutocompleteProvider);\n\n function NotifProvider(room) {\n (0, _classCallCheck3.default)(this, NotifProvider);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (NotifProvider.__proto__ || (0, _getPrototypeOf2.default)(NotifProvider)).call(this, AT_ROOM_REGEX));\n\n _this.room = room;\n return _this;\n }\n\n (0, _createClass3.default)(NotifProvider, [{\n key: 'getCompletions',\n value: function () {\n var _ref = (0, _bluebird.method)(function (query, selection) {\n var force = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n var RoomAvatar = _index2.default.getComponent('views.avatars.RoomAvatar');\n\n var client = _MatrixClientPeg2.default.get();\n\n if (!this.room.currentState.mayTriggerNotifOfType('room', client.credentials.userId)) return [];\n\n var _getCurrentCommand = this.getCurrentCommand(query, selection, force),\n command = _getCurrentCommand.command,\n range = _getCurrentCommand.range;\n\n if (command && command[0] && '@room'.startsWith(command[0]) && command[0].length > 1) {\n return [{\n completion: '@room',\n completionId: '@room',\n suffix: ' ',\n component: _react2.default.createElement(_Components.PillCompletion, { initialComponent: _react2.default.createElement(RoomAvatar, { width: 24, height: 24, room: this.room }), title: '@room', description: (0, _languageHandler._t)(\"Notify the whole room\") }),\n range: range\n }];\n }\n return [];\n });\n\n function getCompletions(_x, _x2, _x3) {\n return _ref.apply(this, arguments);\n }\n\n return getCompletions;\n }()\n }, {\n key: 'getName',\n value: function getName() {\n return '❗️ ' + (0, _languageHandler._t)('Room Notification');\n }\n }, {\n key: 'renderCompletions',\n value: function renderCompletions(completions) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_Autocomplete_Completion_container_pill mx_Autocomplete_Completion_container_truncate' },\n completions\n );\n }\n }]);\n return NotifProvider;\n}(_AutocompleteProvider3.default);\n\nexports.default = NotifProvider;\nmodule.exports = exports['default'];\n//# sourceMappingURL=NotifProvider.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ObjectUtils = require('../../../ObjectUtils');\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _AppsDrawer = require('./AppsDrawer');\n\nvar _AppsDrawer2 = _interopRequireDefault(_AppsDrawer);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'AuxPanel',\n\n propTypes: {\n // js-sdk room object\n room: _propTypes2.default.object.isRequired,\n userId: _propTypes2.default.string.isRequired,\n showApps: _propTypes2.default.bool, // Render apps\n hideAppsDrawer: _propTypes2.default.bool, // Do not display apps drawer and content (may still be rendered)\n\n // Conference Handler implementation\n conferenceHandler: _propTypes2.default.object,\n\n // set to true to show the file drop target\n draggingFile: _propTypes2.default.bool,\n\n // set to true to show the 'active conf call' banner\n displayConfCallNotification: _propTypes2.default.bool,\n\n // maxHeight attribute for the aux panel and the video\n // therein\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the content of the aux panel changes\n // content in a way that is likely to make it change size.\n onResize: _propTypes2.default.func\n },\n\n defaultProps: {\n showApps: true,\n hideAppsDrawer: false\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return !_ObjectUtils2.default.shallowEqual(this.props, nextProps) || !_ObjectUtils2.default.shallowEqual(this.state, nextState);\n },\n\n componentDidUpdate: function componentDidUpdate(prevProps, prevState) {\n // most changes are likely to cause a resize\n if (this.props.onResize) {\n this.props.onResize();\n }\n },\n\n onConferenceNotificationClick: function onConferenceNotificationClick(ev, type) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: type,\n room_id: this.props.room.roomId\n });\n ev.stopPropagation();\n ev.preventDefault();\n },\n\n render: function render() {\n var _this = this;\n\n var CallView = _index2.default.getComponent(\"voip.CallView\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var fileDropTarget = null;\n if (this.props.draggingFile) {\n fileDropTarget = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_fileDropTarget' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_fileDropTargetLabel',\n title: (0, _languageHandler._t)(\"Drop File Here\") },\n _react2.default.createElement(TintableSvg, { src: 'img/upload-big.svg', width: '45', height: '59' }),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Drop file here to upload\")\n )\n );\n }\n\n var conferenceCallNotification = null;\n if (this.props.displayConfCallNotification) {\n var supportedText = '';\n var joinNode = void 0;\n if (!_MatrixClientPeg2.default.get().supportsVoip()) {\n supportedText = (0, _languageHandler._t)(\" (unsupported)\");\n } else {\n joinNode = _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)(\"Join as <voiceText>voice</voiceText> or <videoText>video</videoText>.\", {}, {\n 'voiceText': function voiceText(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: function onClick(event) {\n _this.onConferenceNotificationClick(event, 'voice');\n }, href: '#' },\n sub\n );\n },\n 'videoText': function videoText(sub) {\n return _react2.default.createElement(\n 'a',\n { onClick: function onClick(event) {\n _this.onConferenceNotificationClick(event, 'video');\n }, href: '#' },\n sub\n );\n }\n })\n );\n }\n // XXX: the translation here isn't great: appending ' (unsupported)' is likely to not make sense in many languages,\n // but there are translations for this in the languages we do have so I'm leaving it for now.\n conferenceCallNotification = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_ongoingConfCallNotification' },\n (0, _languageHandler._t)(\"Ongoing conference call%(supportedText)s.\", { supportedText: supportedText }),\n '\\xA0',\n joinNode\n );\n }\n\n var callView = _react2.default.createElement(CallView, { ref: 'callView', room: this.props.room,\n ConferenceHandler: this.props.conferenceHandler,\n onResize: this.props.onResize,\n maxVideoHeight: this.props.maxHeight\n });\n\n var appsDrawer = _react2.default.createElement(_AppsDrawer2.default, { ref: 'appsDrawer',\n room: this.props.room,\n userId: this.props.userId,\n maxHeight: this.props.maxHeight,\n showApps: this.props.showApps,\n hide: this.props.hideAppsDrawer\n });\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomView_auxPanel', style: { maxHeight: this.props.maxHeight } },\n appsDrawer,\n fileDropTarget,\n callView,\n conferenceCallNotification,\n this.props.children\n );\n }\n});\n//# sourceMappingURL=AuxPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactBeautifulDnd = require('react-beautiful-dnd');\n\nvar _RoomTile = require('../../../components/views/rooms/RoomTile');\n\nvar _RoomTile2 = _interopRequireDefault(_RoomTile);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DNDRoomTile = function (_React$PureComponent) {\n (0, _inherits3.default)(DNDRoomTile, _React$PureComponent);\n\n function DNDRoomTile() {\n (0, _classCallCheck3.default)(this, DNDRoomTile);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DNDRoomTile.__proto__ || (0, _getPrototypeOf2.default)(DNDRoomTile)).call(this));\n\n _this.getClassName = _this.getClassName.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DNDRoomTile, [{\n key: 'getClassName',\n value: function getClassName(isDragging) {\n return (0, _classnames2.default)({\n \"mx_DNDRoomTile\": true,\n \"mx_DNDRoomTile_dragging\": isDragging\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var props = this.props;\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n _reactBeautifulDnd.Draggable,\n {\n key: props.room.roomId,\n draggableId: props.tagName + '_' + props.room.roomId,\n index: props.index,\n type: 'draggable-RoomTile'\n },\n function (provided, snapshot) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n (0, _extends3.default)({\n ref: provided.innerRef\n }, provided.draggableProps, provided.dragHandleProps),\n _react2.default.createElement(\n 'div',\n { className: _this2.getClassName(snapshot.isDragging) },\n _react2.default.createElement(_RoomTile2.default, props)\n )\n ),\n provided.placeholder\n );\n }\n )\n );\n }\n }]);\n return DNDRoomTile;\n}(_react2.default.PureComponent);\n\nexports.default = DNDRoomTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=DNDRoomTile.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _RoomViewStore = require(\"./stores/RoomViewStore\");\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Consumes changes from the RoomViewStore and notifies specific things\n * about when the active room changes. Unlike listening for RoomViewStore\n * changes, you can subscribe to only changes relevant to a particular\n * room.\n *\n * TODO: If we introduce an observer for something else, factor out\n * the adding / removing of listeners & emitting into a common class.\n */\nvar ActiveRoomObserver = function () {\n function ActiveRoomObserver() {\n (0, _classCallCheck3.default)(this, ActiveRoomObserver);\n\n this._listeners = {};\n\n this._activeRoomId = _RoomViewStore2.default.getRoomId();\n // TODO: We could self-destruct when the last listener goes away, or at least\n // stop listening.\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate.bind(this));\n }\n\n (0, _createClass3.default)(ActiveRoomObserver, [{\n key: \"addListener\",\n value: function addListener(roomId, listener) {\n if (!this._listeners[roomId]) this._listeners[roomId] = [];\n this._listeners[roomId].push(listener);\n }\n }, {\n key: \"removeListener\",\n value: function removeListener(roomId, listener) {\n if (this._listeners[roomId]) {\n var i = this._listeners[roomId].indexOf(listener);\n if (i > -1) {\n this._listeners[roomId].splice(i, 1);\n }\n } else {\n console.warn(\"Unregistering unrecognised listener (roomId=\" + roomId + \")\");\n }\n }\n }, {\n key: \"_emit\",\n value: function _emit(roomId) {\n if (!this._listeners[roomId]) return;\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(this._listeners[roomId]), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var l = _step.value;\n\n l.call();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }, {\n key: \"_onRoomViewStoreUpdate\",\n value: function _onRoomViewStoreUpdate() {\n // emit for the old room ID\n if (this._activeRoomId) this._emit(this._activeRoomId);\n\n // update our cache\n this._activeRoomId = _RoomViewStore2.default.getRoomId();\n\n // and emit for the new one\n if (this._activeRoomId) this._emit(this._activeRoomId);\n }\n }]);\n return ActiveRoomObserver;\n}(); /*\n Copyright 2017 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nif (global.mx_ActiveRoomObserver === undefined) {\n global.mx_ActiveRoomObserver = new ActiveRoomObserver();\n}\nexports.default = global.mx_ActiveRoomObserver;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=ActiveRoomObserver.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\n\n\nvar PRESENCE_CLASS = {\n \"offline\": \"mx_EntityTile_offline\",\n \"online\": \"mx_EntityTile_online\",\n \"unavailable\": \"mx_EntityTile_unavailable\"\n};\n\nfunction presenceClassForMember(presenceState, lastActiveAgo, showPresence) {\n if (showPresence === false) {\n return 'mx_EntityTile_online_beenactive';\n }\n\n // offline is split into two categories depending on whether we have\n // a last_active_ago for them.\n if (presenceState == 'offline') {\n if (lastActiveAgo) {\n return PRESENCE_CLASS['offline'] + '_beenactive';\n } else {\n return PRESENCE_CLASS['offline'] + '_neveractive';\n }\n } else if (presenceState) {\n return PRESENCE_CLASS[presenceState];\n } else {\n return PRESENCE_CLASS['offline'] + '_neveractive';\n }\n}\n\nvar EntityTile = React.createClass({\n displayName: 'EntityTile',\n\n propTypes: {\n name: _propTypes2.default.string,\n title: _propTypes2.default.string,\n avatarJsx: _propTypes2.default.any, // <BaseAvatar />\n className: _propTypes2.default.string,\n presenceState: _propTypes2.default.string,\n presenceLastActiveAgo: _propTypes2.default.number,\n presenceLastTs: _propTypes2.default.number,\n presenceCurrentlyActive: _propTypes2.default.bool,\n showInviteButton: _propTypes2.default.bool,\n shouldComponentUpdate: _propTypes2.default.func,\n onClick: _propTypes2.default.func,\n suppressOnHover: _propTypes2.default.bool,\n showPresence: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n return true;\n },\n onClick: function onClick() {},\n presenceState: \"offline\",\n presenceLastActiveAgo: 0,\n presenceLastTs: 0,\n showInviteButton: false,\n suppressOnHover: false,\n showPresence: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n hover: false\n };\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (this.state.hover !== nextState.hover) return true;\n return this.props.shouldComponentUpdate(nextProps, nextState);\n },\n\n mouseEnter: function mouseEnter(e) {\n this.setState({ 'hover': true });\n },\n\n mouseLeave: function mouseLeave(e) {\n this.setState({ 'hover': false });\n },\n\n render: function render() {\n var presenceClass = presenceClassForMember(this.props.presenceState, this.props.presenceLastActiveAgo, this.props.showPresence);\n\n var mainClassName = \"mx_EntityTile \";\n mainClassName += presenceClass + (this.props.className ? \" \" + this.props.className : \"\");\n var nameEl = void 0;\n var name = this.props.name;\n\n\n var EmojiText = sdk.getComponent('elements.EmojiText');\n if (this.state.hover && !this.props.suppressOnHover) {\n var activeAgo = this.props.presenceLastActiveAgo ? Date.now() - (this.props.presenceLastTs - this.props.presenceLastActiveAgo) : -1;\n\n mainClassName += \" mx_EntityTile_hover\";\n var PresenceLabel = sdk.getComponent(\"rooms.PresenceLabel\");\n var presenceLabel = null;\n var nameClasses = 'mx_EntityTile_name';\n if (this.props.showPresence) {\n presenceLabel = React.createElement(PresenceLabel, { activeAgo: activeAgo,\n currentlyActive: this.props.presenceCurrentlyActive,\n presenceState: this.props.presenceState });\n nameClasses += ' mx_EntityTile_name_hover';\n }\n nameEl = React.createElement(\n 'div',\n { className: 'mx_EntityTile_details' },\n React.createElement('img', { className: 'mx_EntityTile_chevron', src: 'img/member_chevron.png', width: '8', height: '12' }),\n React.createElement(\n EmojiText,\n { element: 'div', className: nameClasses, dir: 'auto' },\n name\n ),\n presenceLabel\n );\n } else {\n nameEl = React.createElement(\n EmojiText,\n { element: 'div', className: 'mx_EntityTile_name', dir: 'auto' },\n name\n );\n }\n\n var inviteButton = void 0;\n if (this.props.showInviteButton) {\n inviteButton = React.createElement(\n 'div',\n { className: 'mx_EntityTile_invite' },\n React.createElement('img', { src: 'img/plus.svg', width: '16', height: '16' })\n );\n }\n\n var power = void 0;\n var powerStatus = this.props.powerStatus;\n if (powerStatus) {\n var _EntityTile$POWER_STA, _EntityTile$POWER_STA2;\n\n var src = (_EntityTile$POWER_STA = {}, (0, _defineProperty3.default)(_EntityTile$POWER_STA, EntityTile.POWER_STATUS_MODERATOR, \"img/mod.svg\"), (0, _defineProperty3.default)(_EntityTile$POWER_STA, EntityTile.POWER_STATUS_ADMIN, \"img/admin.svg\"), _EntityTile$POWER_STA)[powerStatus];\n var alt = (_EntityTile$POWER_STA2 = {}, (0, _defineProperty3.default)(_EntityTile$POWER_STA2, EntityTile.POWER_STATUS_MODERATOR, (0, _languageHandler._t)(\"Moderator\")), (0, _defineProperty3.default)(_EntityTile$POWER_STA2, EntityTile.POWER_STATUS_ADMIN, (0, _languageHandler._t)(\"Admin\")), _EntityTile$POWER_STA2)[powerStatus];\n power = React.createElement('img', { src: src, className: 'mx_EntityTile_power', width: '16', height: '17', alt: alt });\n }\n\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n\n var av = this.props.avatarJsx || React.createElement(BaseAvatar, { name: this.props.name, width: 36, height: 36 });\n\n return React.createElement(\n _AccessibleButton2.default,\n { className: mainClassName, title: this.props.title,\n onClick: this.props.onClick, onMouseEnter: this.mouseEnter,\n onMouseLeave: this.mouseLeave },\n React.createElement(\n 'div',\n { className: 'mx_EntityTile_avatar' },\n av,\n power\n ),\n nameEl,\n inviteButton\n );\n }\n});\n\nEntityTile.POWER_STATUS_MODERATOR = \"moderator\";\nEntityTile.POWER_STATUS_ADMIN = \"admin\";\n\nexports.default = EntityTile;\nmodule.exports = exports['default'];\n//# sourceMappingURL=EntityTile.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar classNames = require(\"classnames\");\n\nvar Modal = require('../../../Modal');\n\nvar sdk = require('../../../index');\nvar TextForEvent = require('../../../TextForEvent');\n\n\nvar ContextualMenu = require('../../structures/ContextualMenu');\n\n\nvar ObjectUtils = require('../../../ObjectUtils');\n\nvar eventTileTypes = {\n 'm.room.message': 'messages.MessageEvent',\n 'm.sticker': 'messages.MessageEvent',\n 'm.call.invite': 'messages.TextualEvent',\n 'm.call.answer': 'messages.TextualEvent',\n 'm.call.hangup': 'messages.TextualEvent'\n};\n\nvar stateEventTileTypes = {\n 'm.room.aliases': 'messages.TextualEvent',\n // 'm.room.aliases': 'messages.RoomAliasesEvent', // too complex\n 'm.room.canonical_alias': 'messages.TextualEvent',\n 'm.room.create': 'messages.RoomCreate',\n 'm.room.member': 'messages.TextualEvent',\n 'm.room.name': 'messages.TextualEvent',\n 'm.room.avatar': 'messages.RoomAvatarEvent',\n 'm.room.third_party_invite': 'messages.TextualEvent',\n 'm.room.history_visibility': 'messages.TextualEvent',\n 'm.room.encryption': 'messages.TextualEvent',\n 'm.room.topic': 'messages.TextualEvent',\n 'm.room.power_levels': 'messages.TextualEvent',\n 'm.room.pinned_events': 'messages.TextualEvent',\n 'm.room.server_acl': 'messages.TextualEvent',\n 'im.vector.modular.widgets': 'messages.TextualEvent'\n};\n\nfunction getHandlerTile(ev) {\n var type = ev.getType();\n return ev.isState() ? stateEventTileTypes[type] : eventTileTypes[type];\n}\n\nvar MAX_READ_AVATARS = 5;\n\n// Our component structure for EventTiles on the timeline is:\n//\n// .-EventTile------------------------------------------------.\n// | MemberAvatar (SenderProfile) TimeStamp |\n// | .-{Message,Textual}Event---------------. Read Avatars |\n// | | .-MFooBody-------------------. | |\n// | | | (only if MessageEvent) | | |\n// | | '----------------------------' | |\n// | '--------------------------------------' |\n// '----------------------------------------------------------'\n\nmodule.exports = (0, _withMatrixClient2.default)(React.createClass({\n displayName: 'EventTile',\n\n propTypes: {\n /* MatrixClient instance for sender verification etc */\n matrixClient: _propTypes2.default.object.isRequired,\n\n /* the MatrixEvent to show */\n mxEvent: _propTypes2.default.object.isRequired,\n\n /* true if mxEvent is redacted. This is a prop because using mxEvent.isRedacted()\n * might not be enough when deciding shouldComponentUpdate - prevProps.mxEvent\n * references the same this.props.mxEvent.\n */\n isRedacted: _propTypes2.default.bool,\n\n /* true if this is a continuation of the previous event (which has the\n * effect of not showing another avatar/displayname\n */\n continuation: _propTypes2.default.bool,\n\n /* true if this is the last event in the timeline (which has the effect\n * of always showing the timestamp)\n */\n last: _propTypes2.default.bool,\n\n /* true if this is search context (which has the effect of greying out\n * the text\n */\n contextual: _propTypes2.default.bool,\n\n /* a list of words to highlight, ordered by longest first */\n highlights: _propTypes2.default.array,\n\n /* link URL for the highlights */\n highlightLink: _propTypes2.default.string,\n\n /* should show URL previews for this event */\n showUrlPreview: _propTypes2.default.bool,\n\n /* is this the focused event */\n isSelectedEvent: _propTypes2.default.bool,\n\n /* callback called when dynamic content in events are loaded */\n onWidgetLoad: _propTypes2.default.func,\n\n /* a list of read-receipts we should show. Each object has a 'roomMember' and 'ts'. */\n readReceipts: _propTypes2.default.arrayOf(React.PropTypes.object),\n\n /* opaque readreceipt info for each userId; used by ReadReceiptMarker\n * to manage its animations. Should be an empty object when the room\n * first loads\n */\n readReceiptMap: _propTypes2.default.object,\n\n /* A function which is used to check if the parent panel is being\n * unmounted, to avoid unnecessary work. Should return true if we\n * are being unmounted.\n */\n checkUnmounting: _propTypes2.default.func,\n\n /* the status of this event - ie, mxEvent.status. Denormalised to here so\n * that we can tell when it changes. */\n eventSendStatus: _propTypes2.default.string,\n\n /* the shape of the tile. by default, the layout is intended for the\n * normal room timeline. alternative values are: \"file_list\", \"file_grid\"\n * and \"notif\". This could be done by CSS, but it'd be horribly inefficient.\n * It could also be done by subclassing EventTile, but that'd be quite\n * boiilerplatey. So just make the necessary render decisions conditional\n * for now.\n */\n tileShape: _propTypes2.default.string,\n\n // show twelve hour timestamps\n isTwelveHour: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n // no-op function because onWidgetLoad is optional yet some sub-components assume its existence\n onWidgetLoad: function onWidgetLoad() {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n // Whether the context menu is being displayed.\n menu: false,\n // Whether all read receipts are being displayed. If not, only display\n // a truncation of them.\n allReadAvatars: false,\n // Whether the event's sender has been verified.\n verified: null,\n // Whether onRequestKeysClick has been called since mounting.\n previouslyRequestedKeys: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n // don't do RR animations until we are mounted\n this._suppressReadReceiptAnimation = true;\n this._verifyEvent(this.props.mxEvent);\n },\n\n componentDidMount: function componentDidMount() {\n this._suppressReadReceiptAnimation = false;\n this.props.matrixClient.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n this.props.mxEvent.on(\"Event.decrypted\", this._onDecrypted);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n // re-check the sender verification as outgoing events progress through\n // the send process.\n if (nextProps.eventSendStatus !== this.props.eventSendStatus) {\n this._verifyEvent(nextProps.mxEvent);\n }\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (!ObjectUtils.shallowEqual(this.state, nextState)) {\n return true;\n }\n\n return !this._propsEqual(this.props, nextProps);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var client = this.props.matrixClient;\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n this.props.mxEvent.removeListener(\"Event.decrypted\", this._onDecrypted);\n },\n\n /** called when the event is decrypted after we show it.\n */\n _onDecrypted: function _onDecrypted() {\n // we need to re-verify the sending device.\n // (we call onWidgetLoad in _verifyEvent to handle the case where decryption\n // has caused a change in size of the event tile)\n this._verifyEvent(this.props.mxEvent);\n this.forceUpdate();\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n if (userId === this.props.mxEvent.getSender()) {\n this._verifyEvent(this.props.mxEvent);\n }\n },\n\n _verifyEvent: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(mxEvent) {\n var _this = this;\n\n var verified;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (mxEvent.isEncrypted()) {\n _context.next = 2;\n break;\n }\n\n return _context.abrupt('return');\n\n case 2:\n _context.next = 4;\n return (0, _bluebird.resolve)(this.props.matrixClient.isEventSenderVerified(mxEvent));\n\n case 4:\n verified = _context.sent;\n\n this.setState({\n verified: verified\n }, function () {\n // Decryption may have caused a change in size\n _this.props.onWidgetLoad();\n });\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function _verifyEvent(_x) {\n return _ref.apply(this, arguments);\n }\n\n return _verifyEvent;\n }(),\n\n _propsEqual: function _propsEqual(objA, objB) {\n var keysA = (0, _keys2.default)(objA);\n var keysB = (0, _keys2.default)(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n for (var i = 0; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!objB.hasOwnProperty(key)) {\n return false;\n }\n\n // need to deep-compare readReceipts\n if (key === 'readReceipts') {\n var rA = objA[key];\n var rB = objB[key];\n if (rA === rB) {\n continue;\n }\n\n if (!rA || !rB) {\n return false;\n }\n\n if (rA.length !== rB.length) {\n return false;\n }\n for (var j = 0; j < rA.length; j++) {\n if (rA[j].userId !== rB[j].userId) {\n return false;\n }\n // one has a member set and the other doesn't?\n if (rA[j].roomMember !== rB[j].roomMember) {\n return false;\n }\n }\n } else {\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n }\n return true;\n },\n\n shouldHighlight: function shouldHighlight() {\n var actions = this.props.matrixClient.getPushActionsForEvent(this.props.mxEvent);\n if (!actions || !actions.tweaks) {\n return false;\n }\n\n // don't show self-highlights from another of our clients\n if (this.props.mxEvent.getSender() === this.props.matrixClient.credentials.userId) {\n return false;\n }\n\n return actions.tweaks.highlight;\n },\n\n onEditClicked: function onEditClicked(e) {\n var MessageContextMenu = sdk.getComponent('context_menus.MessageContextMenu');\n var buttonRect = e.target.getBoundingClientRect();\n\n // The window X and Y offsets are to adjust position when zoomed in to page\n var x = buttonRect.right + window.pageXOffset;\n var y = buttonRect.top + buttonRect.height / 2 + window.pageYOffset - 19;\n var self = this;\n\n var _refs = this.refs,\n tile = _refs.tile,\n replyThread = _refs.replyThread;\n\n\n ContextualMenu.createMenu(MessageContextMenu, {\n chevronOffset: 10,\n mxEvent: this.props.mxEvent,\n left: x,\n top: y,\n eventTileOps: tile && tile.getEventTileOps ? tile.getEventTileOps() : undefined,\n collapseReplyThread: replyThread && replyThread.canCollapse() ? replyThread.collapse : undefined,\n onFinished: function onFinished() {\n self.setState({ menu: false });\n }\n });\n this.setState({ menu: true });\n },\n\n toggleAllReadAvatars: function toggleAllReadAvatars() {\n this.setState({\n allReadAvatars: !this.state.allReadAvatars\n });\n },\n\n getReadAvatars: function getReadAvatars() {\n // return early if there are no read receipts\n if (!this.props.readReceipts || this.props.readReceipts.length === 0) {\n return React.createElement('span', { className: 'mx_EventTile_readAvatars' });\n }\n\n var ReadReceiptMarker = sdk.getComponent('rooms.ReadReceiptMarker');\n var avatars = [];\n var receiptOffset = 15;\n var left = 0;\n\n var receipts = this.props.readReceipts || [];\n for (var i = 0; i < receipts.length; ++i) {\n var receipt = receipts[i];\n\n var hidden = true;\n if (i < MAX_READ_AVATARS || this.state.allReadAvatars) {\n hidden = false;\n }\n // TODO: we keep the extra read avatars in the dom to make animation simpler\n // we could optimise this to reduce the dom size.\n\n // If hidden, set offset equal to the offset of the final visible avatar or\n // else set it proportional to index\n left = (hidden ? MAX_READ_AVATARS - 1 : i) * -receiptOffset;\n\n var userId = receipt.userId;\n var readReceiptInfo = void 0;\n\n if (this.props.readReceiptMap) {\n readReceiptInfo = this.props.readReceiptMap[userId];\n if (!readReceiptInfo) {\n readReceiptInfo = {};\n this.props.readReceiptMap[userId] = readReceiptInfo;\n }\n }\n\n // add to the start so the most recent is on the end (ie. ends up rightmost)\n avatars.unshift(React.createElement(ReadReceiptMarker, { key: userId, member: receipt.roomMember,\n fallbackUserId: userId,\n leftOffset: left, hidden: hidden,\n readReceiptInfo: readReceiptInfo,\n checkUnmounting: this.props.checkUnmounting,\n suppressAnimation: this._suppressReadReceiptAnimation,\n onClick: this.toggleAllReadAvatars,\n timestamp: receipt.ts,\n showTwelveHour: this.props.isTwelveHour\n }));\n }\n var remText = void 0;\n if (!this.state.allReadAvatars) {\n var remainder = receipts.length - MAX_READ_AVATARS;\n if (remainder > 0) {\n remText = React.createElement(\n 'span',\n { className: 'mx_EventTile_readAvatarRemainder',\n onClick: this.toggleAllReadAvatars,\n style: { right: -(left - receiptOffset) } },\n remainder,\n '+'\n );\n }\n }\n\n return React.createElement(\n 'span',\n { className: 'mx_EventTile_readAvatars' },\n remText,\n avatars\n );\n },\n\n onSenderProfileClick: function onSenderProfileClick(event) {\n var mxEvent = this.props.mxEvent;\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: mxEvent.getSender()\n });\n },\n\n onCryptoClicked: function onCryptoClicked(e) {\n var event = this.props.mxEvent;\n\n Modal.createTrackedDialogAsync('Encrypted Event Dialog', '', function (cb) {\n require(['../../../async-components/views/dialogs/EncryptedEventDialog'], cb);\n }, {\n event: event\n });\n },\n\n onRequestKeysClick: function onRequestKeysClick() {\n this.setState({\n // Indicate in the UI that the keys have been requested (this is expected to\n // be reset if the component is mounted in the future).\n previouslyRequestedKeys: true\n });\n\n // Cancel any outgoing key request for this event and resend it. If a response\n // is received for the request with the required keys, the event could be\n // decrypted successfully.\n this.props.matrixClient.cancelAndResendEventRoomKeyRequest(this.props.mxEvent);\n },\n\n onPermalinkClicked: function onPermalinkClicked(e) {\n // This allows the permalink to be opened in a new tab/window or copied as\n // matrix.to, but also for it to enable routing within Riot when clicked.\n e.preventDefault();\n _dispatcher2.default.dispatch({\n action: 'view_room',\n event_id: this.props.mxEvent.getId(),\n highlighted: true,\n room_id: this.props.mxEvent.getRoomId()\n });\n },\n\n _renderE2EPadlock: function _renderE2EPadlock() {\n var ev = this.props.mxEvent;\n var props = { onClick: this.onCryptoClicked };\n\n // event could not be decrypted\n if (ev.getContent().msgtype === 'm.bad.encrypted') {\n return React.createElement(E2ePadlockUndecryptable, props);\n }\n\n // event is encrypted, display padlock corresponding to whether or not it is verified\n if (ev.isEncrypted()) {\n return this.state.verified ? React.createElement(E2ePadlockVerified, props) : React.createElement(E2ePadlockUnverified, props);\n }\n\n if (this.props.matrixClient.isRoomEncrypted(ev.getRoomId())) {\n // else if room is encrypted\n // and event is being encrypted or is not_sent (Unknown Devices/Network Error)\n if (ev.status === _matrixJsSdk.EventStatus.ENCRYPTING) {\n return React.createElement(E2ePadlockEncrypting, props);\n }\n if (ev.status === _matrixJsSdk.EventStatus.NOT_SENT) {\n return React.createElement(E2ePadlockNotSent, props);\n }\n // if the event is not encrypted, but it's an e2e room, show the open padlock\n return React.createElement(E2ePadlockUnencrypted, props);\n }\n\n // no padlock needed\n return null;\n },\n\n render: function render() {\n var _this2 = this;\n\n var MessageTimestamp = sdk.getComponent('messages.MessageTimestamp');\n var SenderProfile = sdk.getComponent('messages.SenderProfile');\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n\n //console.log(\"EventTile showUrlPreview for %s is %s\", this.props.mxEvent.getId(), this.props.showUrlPreview);\n\n var content = this.props.mxEvent.getContent();\n var msgtype = content.msgtype;\n var eventType = this.props.mxEvent.getType();\n\n // Info messages are basically information about commands processed on a room\n var isInfoMessage = eventType !== 'm.room.message' && eventType !== 'm.sticker' && eventType != 'm.room.create';\n\n var tileHandler = getHandlerTile(this.props.mxEvent);\n // This shouldn't happen: the caller should check we support this type\n // before trying to instantiate us\n if (!tileHandler) {\n var mxEvent = this.props.mxEvent;\n\n console.warn('Event type not supported: type:' + mxEvent.getType() + ' isState:' + mxEvent.isState());\n return React.createElement(\n 'div',\n { className: 'mx_EventTile mx_EventTile_info mx_MNoticeBody' },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n (0, _languageHandler._t)('This event could not be displayed')\n )\n );\n }\n var EventTileType = sdk.getComponent(tileHandler);\n\n var isSending = ['sending', 'queued', 'encrypting'].indexOf(this.props.eventSendStatus) !== -1;\n var isRedacted = isMessageEvent(this.props.mxEvent) && this.props.isRedacted;\n var isEncryptionFailure = this.props.mxEvent.isDecryptionFailure();\n\n var classes = classNames({\n mx_EventTile: true,\n mx_EventTile_info: isInfoMessage,\n mx_EventTile_12hr: this.props.isTwelveHour,\n mx_EventTile_encrypting: this.props.eventSendStatus === 'encrypting',\n mx_EventTile_sending: isSending,\n mx_EventTile_notSent: this.props.eventSendStatus === 'not_sent',\n mx_EventTile_highlight: this.props.tileShape === 'notif' ? false : this.shouldHighlight(),\n mx_EventTile_selected: this.props.isSelectedEvent,\n mx_EventTile_continuation: this.props.tileShape ? '' : this.props.continuation,\n mx_EventTile_last: this.props.last,\n mx_EventTile_contextual: this.props.contextual,\n menu: this.state.menu,\n mx_EventTile_verified: this.state.verified === true,\n mx_EventTile_unverified: this.state.verified === false,\n mx_EventTile_bad: isEncryptionFailure,\n mx_EventTile_emote: msgtype === 'm.emote',\n mx_EventTile_redacted: isRedacted\n });\n\n var permalink = (0, _matrixTo.makeEventPermalink)(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId());\n\n var readAvatars = this.getReadAvatars();\n\n var avatar = void 0;\n var sender = void 0;\n var avatarSize = void 0;\n var needsSenderProfile = void 0;\n\n if (this.props.tileShape === \"notif\") {\n avatarSize = 24;\n needsSenderProfile = true;\n } else if (tileHandler === 'messages.RoomCreate') {\n avatarSize = 0;\n needsSenderProfile = false;\n } else if (isInfoMessage) {\n // a small avatar, with no sender profile, for\n // joins/parts/etc\n avatarSize = 14;\n needsSenderProfile = false;\n } else if (this.props.continuation && this.props.tileShape !== \"file_grid\") {\n // no avatar or sender profile for continuation messages\n avatarSize = 0;\n needsSenderProfile = false;\n } else {\n avatarSize = 30;\n needsSenderProfile = true;\n }\n\n if (this.props.mxEvent.sender && avatarSize) {\n avatar = React.createElement(\n 'div',\n { className: 'mx_EventTile_avatar' },\n React.createElement(MemberAvatar, { member: this.props.mxEvent.sender,\n width: avatarSize, height: avatarSize,\n viewUserOnClick: true\n })\n );\n }\n\n if (needsSenderProfile) {\n var text = null;\n if (!this.props.tileShape || this.props.tileShape === 'reply' || this.props.tileShape === 'reply_preview') {\n if (msgtype === 'm.image') text = (0, _languageHandler._td)('%(senderName)s sent an image');else if (msgtype === 'm.video') text = (0, _languageHandler._td)('%(senderName)s sent a video');else if (msgtype === 'm.file') text = (0, _languageHandler._td)('%(senderName)s uploaded a file');\n sender = React.createElement(SenderProfile, { onClick: this.onSenderProfileClick,\n mxEvent: this.props.mxEvent,\n enableFlair: !text,\n text: text });\n } else {\n sender = React.createElement(SenderProfile, { mxEvent: this.props.mxEvent, enableFlair: true });\n }\n }\n\n var editButton = React.createElement('span', { className: 'mx_EventTile_editButton', title: (0, _languageHandler._t)(\"Options\"), onClick: this.onEditClicked });\n\n var timestamp = this.props.mxEvent.getTs() ? React.createElement(MessageTimestamp, { showTwelveHour: this.props.isTwelveHour, ts: this.props.mxEvent.getTs() }) : null;\n\n var keyRequestHelpText = React.createElement(\n 'div',\n { className: 'mx_EventTile_keyRequestInfo_tooltip_contents' },\n React.createElement(\n 'p',\n null,\n this.state.previouslyRequestedKeys ? (0, _languageHandler._t)('Your key share request has been sent - please check your other devices ' + 'for key share requests.') : (0, _languageHandler._t)('Key share requests are sent to your other devices automatically. If you ' + 'rejected or dismissed the key share request on your other devices, click ' + 'here to request the keys for this session again.')\n ),\n React.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('If your other devices do not have the key for this message you will not ' + 'be able to decrypt them.')\n )\n );\n var keyRequestInfoContent = this.state.previouslyRequestedKeys ? (0, _languageHandler._t)('Key request sent.') : (0, _languageHandler._t)('<requestLink>Re-request encryption keys</requestLink> from your other devices.', {}, { 'requestLink': function requestLink(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.onRequestKeysClick },\n sub\n );\n } });\n\n var ToolTipButton = sdk.getComponent('elements.ToolTipButton');\n var keyRequestInfo = isEncryptionFailure ? React.createElement(\n 'div',\n { className: 'mx_EventTile_keyRequestInfo' },\n React.createElement(\n 'span',\n { className: 'mx_EventTile_keyRequestInfo_text' },\n keyRequestInfoContent\n ),\n React.createElement(ToolTipButton, { helpText: keyRequestHelpText })\n ) : null;\n\n switch (this.props.tileShape) {\n case 'notif':\n {\n var EmojiText = sdk.getComponent('elements.EmojiText');\n var room = this.props.matrixClient.getRoom(this.props.mxEvent.getRoomId());\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_roomName' },\n React.createElement(\n EmojiText,\n { element: 'a', href: permalink, onClick: this.onPermalinkClicked },\n room ? room.name : ''\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_EventTile_senderDetails' },\n avatar,\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n sender,\n timestamp\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n onWidgetLoad: this.props.onWidgetLoad })\n )\n );\n }\n case 'file_grid':\n {\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n tileShape: this.props.tileShape,\n onWidgetLoad: this.props.onWidgetLoad })\n ),\n React.createElement(\n 'a',\n {\n className: 'mx_EventTile_senderDetailsLink',\n href: permalink,\n onClick: this.onPermalinkClicked\n },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_senderDetails' },\n sender,\n timestamp\n )\n )\n );\n }\n\n case 'reply':\n case 'reply_preview':\n {\n return React.createElement(\n 'div',\n { className: classes },\n avatar,\n sender,\n React.createElement(\n 'div',\n { className: 'mx_EventTile_reply' },\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n timestamp\n ),\n this._renderE2EPadlock(),\n this.props.tileShape === 'reply_preview' && _ReplyThread2.default.makeThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread'),\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n onWidgetLoad: this.props.onWidgetLoad,\n showUrlPreview: false })\n )\n );\n }\n default:\n {\n return React.createElement(\n 'div',\n { className: classes },\n React.createElement(\n 'div',\n { className: 'mx_EventTile_msgOption' },\n readAvatars\n ),\n sender,\n React.createElement(\n 'div',\n { className: 'mx_EventTile_line' },\n React.createElement(\n 'a',\n { href: permalink, onClick: this.onPermalinkClicked },\n timestamp\n ),\n this._renderE2EPadlock(),\n _ReplyThread2.default.makeThread(this.props.mxEvent, this.props.onWidgetLoad, 'replyThread'),\n React.createElement(EventTileType, { ref: 'tile',\n mxEvent: this.props.mxEvent,\n highlights: this.props.highlights,\n highlightLink: this.props.highlightLink,\n showUrlPreview: this.props.showUrlPreview,\n onWidgetLoad: this.props.onWidgetLoad }),\n keyRequestInfo,\n editButton\n ),\n avatar\n );\n }\n }\n }\n}));\n\n// XXX this'll eventually be dynamic based on the fields once we have extensible event types\nvar messageTypes = ['m.room.message', 'm.sticker'];\nfunction isMessageEvent(ev) {\n return messageTypes.includes(ev.getType());\n}\n\nmodule.exports.haveTileForEvent = function (e) {\n // Only messages have a tile (black-rectangle) if redacted\n if (e.isRedacted() && !isMessageEvent(e)) return false;\n\n var handler = getHandlerTile(e);\n if (handler === undefined) return false;\n if (handler === 'messages.TextualEvent') {\n return TextForEvent.textForEvent(e) !== '';\n } else if (handler === 'messages.RoomCreate') {\n return Boolean(e.getContent()['predecessor']);\n } else {\n return true;\n }\n};\n\nfunction E2ePadlockUndecryptable(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Undecryptable\"),\n src: 'img/e2e-blocked.svg', width: '12', height: '12',\n style: { marginLeft: \"-1px\" } }, props));\n}\n\nfunction E2ePadlockEncrypting(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypting\"), src: 'img/e2e-encrypting.svg', width: '10', height: '12' }, props));\n}\n\nfunction E2ePadlockNotSent(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted, not sent\"), src: 'img/e2e-not_sent.svg', width: '10', height: '12' }, props));\n}\n\nfunction E2ePadlockVerified(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted by a verified device\"),\n src: 'img/e2e-verified.svg', width: '10', height: '12'\n }, props));\n}\n\nfunction E2ePadlockUnverified(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Encrypted by an unverified device\"),\n src: 'img/e2e-warning.svg', width: '15', height: '12',\n style: { marginLeft: \"-2px\" } }, props));\n}\n\nfunction E2ePadlockUnencrypted(props) {\n return React.createElement(E2ePadlock, (0, _extends3.default)({ alt: (0, _languageHandler._t)(\"Unencrypted message\"),\n src: 'img/e2e-unencrypted.svg', width: '12', height: '12'\n }, props));\n}\n\nfunction E2ePadlock(props) {\n if (_SettingsStore2.default.getValue(\"alwaysShowEncryptionIcons\")) {\n return React.createElement('img', (0, _extends3.default)({ className: 'mx_EventTile_e2eIcon' }, props));\n } else {\n return React.createElement('img', (0, _extends3.default)({ className: 'mx_EventTile_e2eIcon mx_EventTile_e2eIcon_hidden' }, props));\n }\n}\n\nmodule.exports.getHandlerTile = getHandlerTile;\n//# sourceMappingURL=EventTile.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Keyboard = require('../../../Keyboard');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ForwardMessage',\n\n propTypes: {\n onCancelClick: _propTypes2.default.func.isRequired\n },\n\n componentWillMount: function componentWillMount() {\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n rightDisabled: true,\n middleDisabled: true\n });\n },\n\n componentDidMount: function componentDidMount() {\n document.addEventListener('keydown', this._onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n document.removeEventListener('keydown', this._onKeyDown);\n },\n\n _onKeyDown: function _onKeyDown(ev) {\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ESCAPE:\n this.props.onCancelClick();\n break;\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_ForwardMessage' },\n _react2.default.createElement(\n 'h1',\n null,\n (0, _languageHandler._t)('Please select the destination room for this message')\n )\n );\n }\n}); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2017 Michael Telatynski\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=ForwardMessage.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar ImageUtils = require('../../../ImageUtils');\nvar Modal = require('../../../Modal');\n\nvar linkify = require('linkifyjs');\nvar linkifyElement = require('linkifyjs/element');\nvar linkifyMatrix = require('../../../linkify-matrix');\nlinkifyMatrix(linkify);\n\nmodule.exports = React.createClass({\n displayName: 'LinkPreviewWidget',\n\n propTypes: {\n link: _propTypes2.default.string.isRequired, // the URL being previewed\n mxEvent: _propTypes2.default.object.isRequired, // the Event associated with the preview\n onCancelClick: _propTypes2.default.func, // called when the preview's cancel ('hide') button is clicked\n onWidgetLoad: _propTypes2.default.func // called when the preview's contents has loaded\n },\n\n getInitialState: function getInitialState() {\n return {\n preview: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.unmounted = false;\n MatrixClientPeg.get().getUrlPreview(this.props.link, this.props.mxEvent.getTs()).then(function (res) {\n if (_this.unmounted) {\n return;\n }\n _this.setState({ preview: res }, _this.props.onWidgetLoad);\n }, function (error) {\n console.error(\"Failed to get preview for \" + _this.props.link + \" \" + error);\n }).done();\n },\n\n componentDidMount: function componentDidMount() {\n if (this.refs.description) {\n linkifyElement(this.refs.description, linkifyMatrix.options);\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.description) {\n linkifyElement(this.refs.description, linkifyMatrix.options);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.unmounted = true;\n },\n\n onImageClick: function onImageClick(ev) {\n var p = this.state.preview;\n if (ev.button != 0 || ev.metaKey) return;\n ev.preventDefault();\n var ImageView = sdk.getComponent(\"elements.ImageView\");\n\n var src = p[\"og:image\"];\n if (src && src.startsWith(\"mxc://\")) {\n src = MatrixClientPeg.get().mxcUrlToHttp(src);\n }\n\n var params = {\n src: src,\n width: p[\"og:image:width\"],\n height: p[\"og:image:height\"],\n name: p[\"og:title\"] || p[\"og:description\"] || this.props.link,\n fileSize: p[\"matrix:image:size\"],\n link: this.props.link\n };\n\n Modal.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n render: function render() {\n var p = this.state.preview;\n if (!p || (0, _keys2.default)(p).length === 0) {\n return React.createElement('div', null);\n }\n\n // FIXME: do we want to factor out all image displaying between this and MImageBody - especially for lightboxing?\n var image = p[\"og:image\"];\n var imageMaxWidth = 100,\n imageMaxHeight = 100;\n if (image && image.startsWith(\"mxc://\")) {\n image = MatrixClientPeg.get().mxcUrlToHttp(image, imageMaxWidth, imageMaxHeight);\n }\n\n var thumbHeight = imageMaxHeight;\n if (p[\"og:image:width\"] && p[\"og:image:height\"]) {\n thumbHeight = ImageUtils.thumbHeight(p[\"og:image:width\"], p[\"og:image:height\"], imageMaxWidth, imageMaxHeight);\n }\n\n var img = void 0;\n if (image) {\n img = React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_image', style: { height: thumbHeight } },\n React.createElement('img', { style: { maxWidth: imageMaxWidth, maxHeight: imageMaxHeight }, src: image, onClick: this.onImageClick })\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget' },\n img,\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_caption' },\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_title' },\n React.createElement(\n 'a',\n { href: this.props.link, target: '_blank', rel: 'noopener' },\n p[\"og:title\"]\n )\n ),\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_siteName' },\n p[\"og:site_name\"] ? \" - \" + p[\"og:site_name\"] : null\n ),\n React.createElement(\n 'div',\n { className: 'mx_LinkPreviewWidget_description', ref: 'description' },\n p[\"og:description\"]\n )\n ),\n React.createElement('img', { className: 'mx_LinkPreviewWidget_cancel mx_filterFlipColor',\n src: 'img/cancel.svg', width: '18', height: '18',\n onClick: this.props.onCancelClick })\n );\n }\n});\n//# sourceMappingURL=LinkPreviewWidget.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = {\n\n /**\n * Returns the actual height that an image of dimensions (fullWidth, fullHeight)\n * will occupy if resized to fit inside a thumbnail bounding box of size\n * (thumbWidth, thumbHeight).\n *\n * If the aspect ratio of the source image is taller than the aspect ratio of\n * the thumbnail bounding box, then we return the thumbHeight parameter unchanged.\n * Otherwise we return the thumbHeight parameter scaled down appropriately to\n * reflect the actual height the scaled thumbnail occupies.\n *\n * This is very useful for calculating how much height a thumbnail will actually\n * consume in the timeline, when performing scroll offset calcuations\n * (e.g. scroll locking)\n */\n thumbHeight: function thumbHeight(fullWidth, fullHeight, thumbWidth, _thumbHeight) {\n if (!fullWidth || !fullHeight) {\n // Cannot calculate thumbnail height for image: missing w/h in metadata. We can't even\n // log this because it's spammy\n return undefined;\n }\n if (fullWidth < thumbWidth && fullHeight < _thumbHeight) {\n // no scaling needs to be applied\n return fullHeight;\n }\n var widthMulti = thumbWidth / fullWidth;\n var heightMulti = _thumbHeight / fullHeight;\n if (widthMulti < heightMulti) {\n // width is the dominant dimension so scaling will be fixed on that\n return Math.floor(widthMulti * fullHeight);\n } else {\n // height is the dominant dimension so scaling will be fixed on that\n return Math.floor(heightMulti * fullHeight);\n }\n }\n};\n//# sourceMappingURL=ImageUtils.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MemberDeviceInfo = function (_React$Component) {\n (0, _inherits3.default)(MemberDeviceInfo, _React$Component);\n\n function MemberDeviceInfo() {\n (0, _classCallCheck3.default)(this, MemberDeviceInfo);\n return (0, _possibleConstructorReturn3.default)(this, (MemberDeviceInfo.__proto__ || (0, _getPrototypeOf2.default)(MemberDeviceInfo)).apply(this, arguments));\n }\n\n (0, _createClass3.default)(MemberDeviceInfo, [{\n key: 'render',\n value: function render() {\n var indicator = null;\n var DeviceVerifyButtons = _index2.default.getComponent('elements.DeviceVerifyButtons');\n\n if (this.props.device.isBlocked()) {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_blacklisted' },\n _react2.default.createElement('img', { src: 'img/e2e-blocked.svg', width: '12', height: '12', style: { marginLeft: \"-1px\" }, alt: (0, _languageHandler._t)(\"Blacklisted\") })\n );\n } else if (this.props.device.isVerified()) {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_verified' },\n _react2.default.createElement('img', { src: 'img/e2e-verified.svg', width: '10', height: '12', alt: (0, _languageHandler._t)(\"Verified\") })\n );\n } else {\n indicator = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_unverified' },\n _react2.default.createElement('img', { src: 'img/e2e-warning.svg', width: '15', height: '12', style: { marginLeft: \"-2px\" }, alt: (0, _languageHandler._t)(\"Unverified\") })\n );\n }\n\n var deviceName = this.props.device.ambiguous ? (this.props.device.getDisplayName() ? this.props.device.getDisplayName() : \"\") + \" (\" + this.props.device.deviceId + \")\" : this.props.device.getDisplayName();\n\n // add the deviceId as a titletext to help with debugging\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo',\n title: (0, _languageHandler._t)(\"device id: \") + this.props.device.deviceId },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_deviceInfo' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberDeviceInfo_deviceId' },\n deviceName,\n indicator\n )\n ),\n _react2.default.createElement(DeviceVerifyButtons, { userId: this.props.userId, device: this.props.device })\n );\n }\n }]);\n return MemberDeviceInfo;\n}(_react2.default.Component);\n\nexports.default = MemberDeviceInfo;\n\n\nMemberDeviceInfo.displayName = 'MemberDeviceInfo';\nMemberDeviceInfo.propTypes = {\n userId: _propTypes2.default.string.isRequired,\n device: _propTypes2.default.object.isRequired\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MemberDeviceInfo.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _create = require('babel-runtime/core-js/object/create');\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _createRoom = require('../../../createRoom');\n\nvar _createRoom2 = _interopRequireDefault(_createRoom);\n\nvar _DMRoomMap = require('../../../utils/DMRoomMap');\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _Unread = require('../../../Unread');\n\nvar _Unread2 = _interopRequireDefault(_Unread);\n\nvar _Receipt = require('../../../utils/Receipt');\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'MemberInfo',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n member: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n can: {\n kick: false,\n ban: false,\n mute: false,\n modifyLevel: false\n },\n muted: false,\n isTargetMod: false,\n updating: 0,\n devicesLoading: true,\n devices: null,\n isIgnoring: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._cancelDeviceList = null;\n\n // only display the devices list if our client supports E2E\n this._enableDevices = this.props.matrixClient.isCryptoEnabled();\n\n var cli = this.props.matrixClient;\n cli.on(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n cli.on(\"Room\", this.onRoom);\n cli.on(\"deleteRoom\", this.onDeleteRoom);\n cli.on(\"Room.timeline\", this.onRoomTimeline);\n cli.on(\"Room.name\", this.onRoomName);\n cli.on(\"Room.receipt\", this.onRoomReceipt);\n cli.on(\"RoomState.events\", this.onRoomStateEvents);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"RoomMember.membership\", this.onRoomMemberMembership);\n cli.on(\"accountData\", this.onAccountData);\n\n this._checkIgnoreState();\n },\n\n componentDidMount: function componentDidMount() {\n this._updateStateForNewMember(this.props.member);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (this.props.member.userId !== newProps.member.userId) {\n this._updateStateForNewMember(newProps.member);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var client = this.props.matrixClient;\n if (client) {\n client.removeListener(\"deviceVerificationChanged\", this.onDeviceVerificationChanged);\n client.removeListener(\"Room\", this.onRoom);\n client.removeListener(\"deleteRoom\", this.onDeleteRoom);\n client.removeListener(\"Room.timeline\", this.onRoomTimeline);\n client.removeListener(\"Room.name\", this.onRoomName);\n client.removeListener(\"Room.receipt\", this.onRoomReceipt);\n client.removeListener(\"RoomState.events\", this.onRoomStateEvents);\n client.removeListener(\"RoomMember.name\", this.onRoomMemberName);\n client.removeListener(\"RoomMember.membership\", this.onRoomMemberMembership);\n client.removeListener(\"accountData\", this.onAccountData);\n }\n if (this._cancelDeviceList) {\n this._cancelDeviceList();\n }\n },\n\n _checkIgnoreState: function _checkIgnoreState() {\n var isIgnoring = this.props.matrixClient.isUserIgnored(this.props.member.userId);\n this.setState({ isIgnoring: isIgnoring });\n },\n\n _disambiguateDevices: function _disambiguateDevices(devices) {\n var names = (0, _create2.default)(null);\n for (var i = 0; i < devices.length; i++) {\n var name = devices[i].getDisplayName();\n var indexList = names[name] || [];\n indexList.push(i);\n names[name] = indexList;\n }\n for (var _name in names) {\n if (names[_name].length > 1) {\n names[_name].forEach(function (j) {\n devices[j].ambiguous = true;\n });\n }\n }\n },\n\n onDeviceVerificationChanged: function onDeviceVerificationChanged(userId, device) {\n var _this = this;\n\n if (!this._enableDevices) {\n return;\n }\n\n if (userId === this.props.member.userId) {\n // no need to re-download the whole thing; just update our copy of\n // the list.\n\n // Promise.resolve to handle transition from static result to promise; can be removed\n // in future\n _promise2.default.resolve(this.props.matrixClient.getStoredDevicesForUser(userId)).then(function (devices) {\n _this.setState({ devices: devices });\n });\n }\n },\n\n onRoom: function onRoom(room) {\n this.forceUpdate();\n },\n\n onDeleteRoom: function onDeleteRoom(roomId) {\n this.forceUpdate();\n },\n\n onRoomTimeline: function onRoomTimeline(ev, room, toStartOfTimeline) {\n if (toStartOfTimeline) return;\n this.forceUpdate();\n },\n\n onRoomName: function onRoomName(room) {\n this.forceUpdate();\n },\n\n onRoomReceipt: function onRoomReceipt(receiptEvent, room) {\n // because if we read a notification, it will affect notification count\n // only bother updating if there's a receipt from us\n if ((0, _Receipt.findReadReceiptFromUserId)(receiptEvent, this.props.matrixClient.credentials.userId)) {\n this.forceUpdate();\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev, state) {\n this.forceUpdate();\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n this.forceUpdate();\n },\n\n onRoomMemberMembership: function onRoomMemberMembership(ev, member) {\n if (this.props.member.userId === member.userId) this.forceUpdate();\n },\n\n onAccountData: function onAccountData(ev) {\n if (ev.getType() === 'm.direct') {\n this.forceUpdate();\n }\n },\n\n _updateStateForNewMember: function _updateStateForNewMember(member) {\n var newState = this._calculateOpsPermissions(member);\n newState.devicesLoading = true;\n newState.devices = null;\n this.setState(newState);\n\n if (this._cancelDeviceList) {\n this._cancelDeviceList();\n this._cancelDeviceList = null;\n }\n\n this._downloadDeviceList(member);\n },\n\n _downloadDeviceList: function _downloadDeviceList(member) {\n if (!this._enableDevices) {\n return;\n }\n\n var cancelled = false;\n this._cancelDeviceList = function () {\n cancelled = true;\n };\n\n var client = this.props.matrixClient;\n var self = this;\n client.downloadKeys([member.userId], true).then(function () {\n return client.getStoredDevicesForUser(member.userId);\n }).finally(function () {\n self._cancelDeviceList = null;\n }).done(function (devices) {\n if (cancelled) {\n // we got cancelled - presumably a different user now\n return;\n }\n self._disambiguateDevices(devices);\n self.setState({ devicesLoading: false, devices: devices });\n }, function (err) {\n console.log(\"Error downloading devices\", err);\n self.setState({ devicesLoading: false });\n });\n },\n\n onIgnoreToggle: function onIgnoreToggle() {\n var _this2 = this;\n\n var ignoredUsers = this.props.matrixClient.getIgnoredUsers();\n if (this.state.isIgnoring) {\n var index = ignoredUsers.indexOf(this.props.member.userId);\n if (index !== -1) ignoredUsers.splice(index, 1);\n } else {\n ignoredUsers.push(this.props.member.userId);\n }\n\n this.props.matrixClient.setIgnoredUsers(ignoredUsers).then(function () {\n return _this2.setState({ isIgnoring: !_this2.state.isIgnoring });\n });\n },\n\n onKick: function onKick() {\n var _this3 = this;\n\n var membership = this.props.member.membership;\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onKick', ConfirmUserActionDialog, {\n member: this.props.member,\n action: membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite\") : (0, _languageHandler._t)(\"Kick\"),\n title: membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite this user?\") : (0, _languageHandler._t)(\"Kick this user?\"),\n askReason: membership === \"join\",\n danger: true,\n onFinished: function onFinished(proceed, reason) {\n if (!proceed) return;\n\n _this3.setState({ updating: _this3.state.updating + 1 });\n _this3.props.matrixClient.kick(_this3.props.member.roomId, _this3.props.member.userId, reason || undefined).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Kick success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Kick error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to kick', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Failed to kick\"),\n description: err && err.message ? err.message : \"Operation failed\"\n });\n }).finally(function () {\n _this3.setState({ updating: _this3.state.updating - 1 });\n });\n }\n });\n },\n\n onBanOrUnban: function onBanOrUnban() {\n var _this4 = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onBanOrUnban', ConfirmUserActionDialog, {\n member: this.props.member,\n action: this.props.member.membership === 'ban' ? (0, _languageHandler._t)(\"Unban\") : (0, _languageHandler._t)(\"Ban\"),\n title: this.props.member.membership === 'ban' ? (0, _languageHandler._t)(\"Unban this user?\") : (0, _languageHandler._t)(\"Ban this user?\"),\n askReason: this.props.member.membership !== 'ban',\n danger: this.props.member.membership !== 'ban',\n onFinished: function onFinished(proceed, reason) {\n if (!proceed) return;\n\n _this4.setState({ updating: _this4.state.updating + 1 });\n var promise = void 0;\n if (_this4.props.member.membership === 'ban') {\n promise = _this4.props.matrixClient.unban(_this4.props.member.roomId, _this4.props.member.userId);\n } else {\n promise = _this4.props.matrixClient.ban(_this4.props.member.roomId, _this4.props.member.userId, reason || undefined);\n }\n promise.then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Ban success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Ban error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to ban user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to ban user\")\n });\n }).finally(function () {\n _this4.setState({ updating: _this4.state.updating - 1 });\n });\n }\n });\n },\n\n _warnSelfDemote: function _warnSelfDemote() {\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n return new _promise2.default(function (resolve) {\n _Modal2.default.createTrackedDialog('Demoting Self', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Demote yourself?\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You will not be able to undo this change as you are demoting yourself, \" + \"if you are the last privileged user in the room it will be impossible \" + \"to regain privileges.\")\n ),\n button: (0, _languageHandler._t)(\"Demote\"),\n onFinished: resolve\n });\n });\n },\n\n onMuteToggle: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var _this5 = this;\n\n var ErrorDialog, roomId, target, room, powerLevelEvent, isMuted, powerLevels, levelToSend, level;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n roomId = this.props.member.roomId;\n target = this.props.member.userId;\n room = this.props.matrixClient.getRoom(roomId);\n\n if (room) {\n _context.next = 6;\n break;\n }\n\n return _context.abrupt('return');\n\n case 6:\n if (!(target === this.props.matrixClient.getUserId())) {\n _context.next = 18;\n break;\n }\n\n _context.prev = 7;\n _context.next = 10;\n return (0, _bluebird.resolve)(this._warnSelfDemote());\n\n case 10:\n if (_context.sent) {\n _context.next = 12;\n break;\n }\n\n return _context.abrupt('return');\n\n case 12:\n _context.next = 18;\n break;\n\n case 14:\n _context.prev = 14;\n _context.t0 = _context['catch'](7);\n\n console.error(\"Failed to warn about self demotion: \", _context.t0);\n return _context.abrupt('return');\n\n case 18:\n powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n\n if (powerLevelEvent) {\n _context.next = 21;\n break;\n }\n\n return _context.abrupt('return');\n\n case 21:\n isMuted = this.state.muted;\n powerLevels = powerLevelEvent.getContent();\n levelToSend = (powerLevels.events ? powerLevels.events[\"m.room.message\"] : null) || powerLevels.events_default;\n level = void 0;\n\n if (isMuted) {\n // unmute\n level = levelToSend;\n } else {\n // mute\n level = levelToSend - 1;\n }\n level = parseInt(level);\n\n if (!isNaN(level)) {\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, level, powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Mute toggle success\");\n }, function (err) {\n console.error(\"Mute error: \" + err);\n _Modal2.default.createTrackedDialog('Failed to mute user', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to mute user\")\n });\n }).finally(function () {\n _this5.setState({ updating: _this5.state.updating - 1 });\n });\n }\n\n case 28:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 14]]);\n }));\n\n function onMuteToggle() {\n return _ref.apply(this, arguments);\n }\n\n return onMuteToggle;\n }(),\n\n onModToggle: function onModToggle() {\n var _this6 = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n var roomId = this.props.member.roomId;\n var target = this.props.member.userId;\n var room = this.props.matrixClient.getRoom(roomId);\n if (!room) return;\n\n var powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n if (!powerLevelEvent) return;\n\n var me = room.getMember(this.props.matrixClient.credentials.userId);\n if (!me) return;\n\n var defaultLevel = powerLevelEvent.getContent().users_default;\n var modLevel = me.powerLevel - 1;\n if (modLevel > 50 && defaultLevel < 50) modLevel = 50; // try to stick with the vector level defaults\n // toggle the level\n var newLevel = this.state.isTargetMod ? defaultLevel : modLevel;\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, parseInt(newLevel), powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Mod toggle success\");\n }, function (err) {\n if (err.errcode === 'M_GUEST_ACCESS_FORBIDDEN') {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n } else {\n console.error(\"Toggle moderator error:\" + err);\n _Modal2.default.createTrackedDialog('Failed to toggle moderator status', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to toggle moderator status\")\n });\n }\n }).finally(function () {\n _this6.setState({ updating: _this6.state.updating - 1 });\n });\n },\n\n _applyPowerChange: function _applyPowerChange(roomId, target, powerLevel, powerLevelEvent) {\n var _this7 = this;\n\n this.setState({ updating: this.state.updating + 1 });\n this.props.matrixClient.setPowerLevel(roomId, target, parseInt(powerLevel), powerLevelEvent).then(function () {\n // NO-OP; rely on the m.room.member event coming down else we could\n // get out of sync if we force setState here!\n console.log(\"Power change success\");\n }, function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change power level \" + err);\n _Modal2.default.createTrackedDialog('Failed to change power level', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to change power level\")\n });\n }).finally(function () {\n _this7.setState({ updating: _this7.state.updating - 1 });\n }).done();\n },\n\n onPowerChange: function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(powerLevel) {\n var _this8 = this;\n\n var roomId, target, room, powerLevelEvent, myUserId, QuestionDialog, myPower;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n roomId = this.props.member.roomId;\n target = this.props.member.userId;\n room = this.props.matrixClient.getRoom(roomId);\n\n if (room) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 5:\n powerLevelEvent = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n\n if (powerLevelEvent) {\n _context2.next = 8;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 8:\n if (powerLevelEvent.getContent().users) {\n _context2.next = 11;\n break;\n }\n\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n return _context2.abrupt('return');\n\n case 11:\n myUserId = this.props.matrixClient.getUserId();\n QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // If we are changing our own PL it can only ever be decreasing, which we cannot reverse.\n\n if (!(myUserId === target)) {\n _context2.next = 26;\n break;\n }\n\n _context2.prev = 14;\n _context2.next = 17;\n return (0, _bluebird.resolve)(this._warnSelfDemote());\n\n case 17:\n if (_context2.sent) {\n _context2.next = 19;\n break;\n }\n\n return _context2.abrupt('return');\n\n case 19:\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n _context2.next = 25;\n break;\n\n case 22:\n _context2.prev = 22;\n _context2.t0 = _context2['catch'](14);\n\n console.error(\"Failed to warn about self demotion: \", _context2.t0);\n\n case 25:\n return _context2.abrupt('return');\n\n case 26:\n myPower = powerLevelEvent.getContent().users[myUserId];\n\n if (!(parseInt(myPower) === parseInt(powerLevel))) {\n _context2.next = 30;\n break;\n }\n\n _Modal2.default.createTrackedDialog('Promote to PL100 Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"You will not be able to undo this change as you are promoting the user \" + \"to have the same power level as yourself.\"),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)(\"Are you sure?\")\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this8._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n }\n }\n });\n return _context2.abrupt('return');\n\n case 30:\n this._applyPowerChange(roomId, target, powerLevel, powerLevelEvent);\n\n case 31:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[14, 22]]);\n }));\n\n function onPowerChange(_x) {\n return _ref2.apply(this, arguments);\n }\n\n return onPowerChange;\n }(),\n\n onNewDMClick: function onNewDMClick() {\n var _this9 = this;\n\n this.setState({ updating: this.state.updating + 1 });\n (0, _createRoom2.default)({ dmUserId: this.props.member.userId }).finally(function () {\n _this9.setState({ updating: _this9.state.updating - 1 });\n }).done();\n },\n\n onLeaveClick: function onLeaveClick() {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.member.roomId\n });\n },\n\n _calculateOpsPermissions: function _calculateOpsPermissions(member) {\n var defaultPerms = {\n can: {},\n muted: false\n };\n var room = this.props.matrixClient.getRoom(member.roomId);\n if (!room) return defaultPerms;\n\n var powerLevels = room.currentState.getStateEvents(\"m.room.power_levels\", \"\");\n if (!powerLevels) return defaultPerms;\n\n var me = room.getMember(this.props.matrixClient.credentials.userId);\n if (!me) return defaultPerms;\n\n var them = member;\n return {\n can: this._calculateCanPermissions(me, them, powerLevels.getContent()),\n muted: this._isMuted(them, powerLevels.getContent()),\n isTargetMod: them.powerLevel > powerLevels.getContent().users_default\n };\n },\n\n _calculateCanPermissions: function _calculateCanPermissions(me, them, powerLevels) {\n var isMe = me.userId === them.userId;\n var can = {\n kick: false,\n ban: false,\n mute: false,\n modifyLevel: false,\n modifyLevelMax: 0\n };\n var canAffectUser = them.powerLevel < me.powerLevel || isMe;\n if (!canAffectUser) {\n //console.log(\"Cannot affect user: %s >= %s\", them.powerLevel, me.powerLevel);\n return can;\n }\n var editPowerLevel = (powerLevels.events ? powerLevels.events[\"m.room.power_levels\"] : null) || powerLevels.state_default;\n\n can.kick = me.powerLevel >= powerLevels.kick;\n can.ban = me.powerLevel >= powerLevels.ban;\n can.mute = me.powerLevel >= editPowerLevel;\n can.modifyLevel = me.powerLevel >= editPowerLevel && (isMe || me.powerLevel > them.powerLevel);\n can.modifyLevelMax = me.powerLevel;\n\n return can;\n },\n\n _isMuted: function _isMuted(member, powerLevelContent) {\n if (!powerLevelContent || !member) return false;\n\n var levelToSend = (powerLevelContent.events ? powerLevelContent.events[\"m.room.message\"] : null) || powerLevelContent.events_default;\n return member.powerLevel < levelToSend;\n },\n\n onCancel: function onCancel(e) {\n _dispatcher2.default.dispatch({\n action: \"view_user\",\n member: null\n });\n },\n\n onMemberAvatarClick: function onMemberAvatarClick() {\n var member = this.props.member;\n var avatarUrl = member.getMxcAvatarUrl();\n if (!avatarUrl) return;\n\n var httpUrl = this.props.matrixClient.mxcUrlToHttp(avatarUrl);\n var ImageView = _index2.default.getComponent(\"elements.ImageView\");\n var params = {\n src: httpUrl,\n name: member.name\n };\n\n _Modal2.default.createDialog(ImageView, params, \"mx_Dialog_lightbox\");\n },\n\n onRoomTileClick: function onRoomTileClick(roomId) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: roomId\n });\n },\n\n\n _renderDevices: function _renderDevices() {\n if (!this._enableDevices) return null;\n\n var devices = this.state.devices;\n var MemberDeviceInfo = _index2.default.getComponent('rooms.MemberDeviceInfo');\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n\n var devComponents = void 0;\n if (this.state.devicesLoading) {\n // still loading\n devComponents = _react2.default.createElement(Spinner, null);\n } else if (devices === null) {\n devComponents = (0, _languageHandler._t)(\"Unable to load device list\");\n } else if (devices.length === 0) {\n devComponents = (0, _languageHandler._t)(\"No devices with registered encryption keys\");\n } else {\n devComponents = [];\n for (var i = 0; i < devices.length; i++) {\n devComponents.push(_react2.default.createElement(MemberDeviceInfo, { key: i,\n userId: this.props.member.userId,\n device: devices[i] }));\n }\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Devices\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_devices' },\n devComponents\n )\n );\n },\n\n onShareUserClick: function onShareUserClick() {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room member dialog', '', ShareDialog, {\n target: this.props.member\n });\n },\n\n _renderUserOptions: function _renderUserOptions() {\n var _this10 = this;\n\n var cli = this.props.matrixClient;\n var member = this.props.member;\n\n var ignoreButton = null;\n var insertPillButton = null;\n var inviteUserButton = null;\n var readReceiptButton = null;\n\n // Only allow the user to ignore the user if its not ourselves\n // same goes for jumping to read receipt\n if (member.userId !== cli.getUserId()) {\n ignoreButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onIgnoreToggle, className: 'mx_MemberInfo_field' },\n this.state.isIgnoring ? (0, _languageHandler._t)(\"Unignore\") : (0, _languageHandler._t)(\"Ignore\")\n );\n\n if (member.roomId) {\n var room = cli.getRoom(member.roomId);\n var eventId = room.getEventReadUpTo(member.userId);\n\n var onReadReceiptButton = function onReadReceiptButton() {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n highlighted: true,\n event_id: eventId,\n room_id: member.roomId\n });\n };\n\n var onInsertPillButton = function onInsertPillButton() {\n _dispatcher2.default.dispatch({\n action: 'insert_mention',\n user_id: member.userId\n });\n };\n\n readReceiptButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onReadReceiptButton, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Jump to read receipt')\n );\n\n insertPillButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onInsertPillButton, className: \"mx_MemberInfo_field\" },\n (0, _languageHandler._t)('Mention')\n );\n }\n\n if (!member || !member.membership || member.membership === 'leave') {\n var roomId = member && member.roomId ? member.roomId : _RoomViewStore2.default.getRoomId();\n var onInviteUserButton = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var ErrorDialog;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n _context3.next = 3;\n return (0, _bluebird.resolve)(cli.invite(roomId, member.userId));\n\n case 3:\n _context3.next = 9;\n break;\n\n case 5:\n _context3.prev = 5;\n _context3.t0 = _context3['catch'](0);\n ErrorDialog = _index2.default.getComponent('dialogs.ErrorDialog');\n\n _Modal2.default.createTrackedDialog('Failed to invite', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to invite'),\n description: _context3.t0 && _context3.t0.message ? _context3.t0.message : \"Operation failed\"\n });\n\n case 9:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this10, [[0, 5]]);\n }));\n\n return function onInviteUserButton() {\n return _ref3.apply(this, arguments);\n };\n }();\n\n inviteUserButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: onInviteUserButton, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Invite')\n );\n }\n }\n\n var shareUserButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { onClick: this.onShareUserClick, className: 'mx_MemberInfo_field' },\n (0, _languageHandler._t)('Share Link to User')\n );\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"User Options\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n readReceiptButton,\n shareUserButton,\n insertPillButton,\n ignoreButton,\n inviteUserButton\n )\n );\n },\n\n render: function render() {\n var startChat = void 0;\n var kickButton = void 0;\n var banButton = void 0;\n var muteButton = void 0;\n var giveModButton = void 0;\n var spinner = void 0;\n\n if (this.props.member.userId !== this.props.matrixClient.credentials.userId) {\n var dmRoomMap = new _DMRoomMap2.default(this.props.matrixClient);\n // dmRooms will not include dmRooms that we have been invited into but did not join.\n // Because DMRoomMap runs off account_data[m.direct] which is only set on join of dm room.\n // XXX: we potentially want DMs we have been invited to, to also show up here :L\n // especially as logic below concerns specially if we haven't joined but have been invited\n var dmRooms = dmRoomMap.getDMRoomsForUserId(this.props.member.userId);\n\n var RoomTile = _index2.default.getComponent(\"rooms.RoomTile\");\n\n var tiles = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(dmRooms), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var roomId = _step.value;\n\n var _room = this.props.matrixClient.getRoom(roomId);\n if (_room) {\n var myMembership = _room.getMyMembership();\n // not a DM room if we have are not joined\n if (myMembership !== 'join') continue;\n\n var them = this.props.member;\n // not a DM room if they are not joined\n if (!them.membership || them.membership !== 'join') continue;\n\n var highlight = _room.getUnreadNotificationCount('highlight') > 0;\n\n tiles.push(_react2.default.createElement(RoomTile, { key: _room.roomId, room: _room,\n transparent: true,\n collapsed: false,\n selected: false,\n unread: _Unread2.default.doesRoomHaveUnreadMessages(_room),\n highlight: highlight,\n isInvite: false,\n onClick: this.onRoomTileClick\n }));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var labelClasses = (0, _classnames2.default)({\n mx_MemberInfo_createRoom_label: true,\n mx_RoomTile_name: true\n });\n var startNewChat = _react2.default.createElement(\n _AccessibleButton2.default,\n {\n className: 'mx_MemberInfo_createRoom',\n onClick: this.onNewDMClick\n },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomTile_avatar' },\n _react2.default.createElement('img', { src: 'img/create-big.svg', width: '26', height: '26' })\n ),\n _react2.default.createElement(\n 'div',\n { className: labelClasses },\n _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)(\"Start a chat\")\n )\n )\n );\n\n startChat = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Direct chats\")\n ),\n tiles,\n startNewChat\n );\n }\n\n if (this.state.updating) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, { imgClassName: 'mx_ContextualMenu_spinner' });\n }\n\n if (this.state.can.kick) {\n var membership = this.props.member.membership;\n var kickLabel = membership === \"invite\" ? (0, _languageHandler._t)(\"Disinvite\") : (0, _languageHandler._t)(\"Kick\");\n kickButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onKick },\n kickLabel\n );\n }\n if (this.state.can.ban) {\n var label = (0, _languageHandler._t)(\"Ban\");\n if (this.props.member.membership === 'ban') {\n label = (0, _languageHandler._t)(\"Unban\");\n }\n banButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onBanOrUnban },\n label\n );\n }\n if (this.state.can.mute) {\n var muteLabel = this.state.muted ? (0, _languageHandler._t)(\"Unmute\") : (0, _languageHandler._t)(\"Mute\");\n muteButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field',\n onClick: this.onMuteToggle },\n muteLabel\n );\n }\n if (this.state.can.toggleMod) {\n var giveOpLabel = this.state.isTargetMod ? (0, _languageHandler._t)(\"Revoke Moderator\") : (0, _languageHandler._t)(\"Make Moderator\");\n giveModButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_field', onClick: this.onModToggle },\n giveOpLabel\n );\n }\n\n var adminTools = void 0;\n if (kickButton || banButton || muteButton || giveModButton) {\n adminTools = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)(\"Admin Tools\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_buttons' },\n muteButton,\n kickButton,\n banButton,\n giveModButton\n )\n );\n }\n\n var memberName = this.props.member.name;\n\n var presenceState = void 0;\n var presenceLastActiveAgo = void 0;\n var presenceCurrentlyActive = void 0;\n\n if (this.props.member.user) {\n presenceState = this.props.member.user.presence;\n presenceLastActiveAgo = this.props.member.user.lastActiveAgo;\n presenceCurrentlyActive = this.props.member.user.currentlyActive;\n }\n\n var room = this.props.matrixClient.getRoom(this.props.member.roomId);\n var powerLevelEvent = room ? room.currentState.getStateEvents(\"m.room.power_levels\", \"\") : null;\n var powerLevelUsersDefault = powerLevelEvent ? powerLevelEvent.getContent().users_default : 0;\n\n var enablePresenceByHsUrl = _SdkConfig2.default.get()[\"enable_presence_by_hs_url\"];\n var hsUrl = this.props.matrixClient.baseUrl;\n var showPresence = true;\n if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {\n showPresence = enablePresenceByHsUrl[hsUrl];\n }\n\n var presenceLabel = null;\n if (showPresence) {\n var PresenceLabel = _index2.default.getComponent('rooms.PresenceLabel');\n presenceLabel = _react2.default.createElement(PresenceLabel, { activeAgo: presenceLastActiveAgo,\n currentlyActive: presenceCurrentlyActive,\n presenceState: presenceState });\n }\n\n var roomMemberDetails = null;\n if (this.props.member.roomId) {\n // is in room\n var PowerSelector = _index2.default.getComponent('elements.PowerSelector');\n roomMemberDetails = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n (0, _languageHandler._t)(\"Level:\"),\n ' ',\n _react2.default.createElement(\n 'b',\n null,\n _react2.default.createElement(PowerSelector, { controlled: true,\n value: parseInt(this.props.member.powerLevel),\n maxValue: this.state.can.modifyLevelMax,\n disabled: !this.state.can.modifyLevel,\n usersDefault: powerLevelUsersDefault,\n onChange: this.onPowerChange })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n presenceLabel\n )\n );\n }\n\n var GeminiScrollbarWrapper = _index2.default.getComponent(\"elements.GeminiScrollbarWrapper\");\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo' },\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_MemberInfo_cancel', onClick: this.onCancel },\n _react2.default.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18', className: 'mx_filterFlipColor', alt: (0, _languageHandler._t)('Close') })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_avatar' },\n _react2.default.createElement(MemberAvatar, { onClick: this.onMemberAvatarClick, member: this.props.member, width: 48, height: 48 })\n ),\n _react2.default.createElement(\n EmojiText,\n { element: 'h2' },\n memberName\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profile' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberInfo_profileField' },\n this.props.member.userId\n ),\n roomMemberDetails\n ),\n this._renderUserOptions(),\n adminTools,\n startChat,\n this._renderDevices(),\n spinner\n )\n );\n }\n})); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017, 2018 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/*\n * State vars:\n * 'can': {\n * kick: boolean,\n * ban: boolean,\n * mute: boolean,\n * modifyLevel: boolean\n * },\n * 'muted': boolean,\n * 'isTargetMod': boolean\n */\n//# sourceMappingURL=MemberInfo.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SdkConfig = require('../../../SdkConfig');\n\nvar _SdkConfig2 = _interopRequireDefault(_SdkConfig);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\"); /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2017, 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar sdk = require('../../../index');\nvar rate_limited_func = require('../../../ratelimitedfunc');\nvar CallHandler = require(\"../../../CallHandler\");\n\nvar INITIAL_LOAD_NUM_MEMBERS = 30;\nvar INITIAL_LOAD_NUM_INVITED = 5;\nvar SHOW_MORE_INCREMENT = 100;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'MemberList',\n\n getInitialState: function getInitialState() {\n var cli = MatrixClientPeg.get();\n if (cli.hasLazyLoadMembersEnabled()) {\n // show an empty list\n return this._getMembersState([]);\n } else {\n return this._getMembersState(this.roomMembers());\n }\n },\n\n componentWillMount: function componentWillMount() {\n this._mounted = true;\n var cli = MatrixClientPeg.get();\n if (cli.hasLazyLoadMembersEnabled()) {\n this._showMembersAccordingToMembershipWithLL();\n cli.on(\"Room.myMembership\", this.onMyMembership);\n } else {\n this._listenForMembersChanges();\n }\n cli.on(\"Room\", this.onRoom); // invites & joining after peek\n var enablePresenceByHsUrl = _SdkConfig2.default.get()[\"enable_presence_by_hs_url\"];\n var hsUrl = MatrixClientPeg.get().baseUrl;\n this._showPresence = true;\n if (enablePresenceByHsUrl && enablePresenceByHsUrl[hsUrl] !== undefined) {\n this._showPresence = enablePresenceByHsUrl[hsUrl];\n }\n },\n\n _listenForMembersChanges: function _listenForMembersChanges() {\n var cli = MatrixClientPeg.get();\n cli.on(\"RoomState.members\", this.onRoomStateMember);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"RoomState.events\", this.onRoomStateEvent);\n // We listen for changes to the lastPresenceTs which is essentially\n // listening for all presence events (we display most of not all of\n // the information contained in presence events).\n cli.on(\"User.lastPresenceTs\", this.onUserLastPresenceTs);\n // cli.on(\"Room.timeline\", this.onRoomTimeline);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._mounted = false;\n var cli = MatrixClientPeg.get();\n if (cli) {\n cli.removeListener(\"RoomState.members\", this.onRoomStateMember);\n cli.removeListener(\"RoomMember.name\", this.onRoomMemberName);\n cli.removeListener(\"Room.myMembership\", this.onMyMembership);\n cli.removeListener(\"RoomState.events\", this.onRoomStateEvent);\n cli.removeListener(\"Room\", this.onRoom);\n cli.removeListener(\"User.lastPresenceTs\", this.onUserLastPresenceTs);\n }\n\n // cancel any pending calls to the rate_limited_funcs\n this._updateList.cancelPendingCall();\n },\n\n /**\n * If lazy loading is enabled, either:\n * show a spinner and load the members if the user is joined,\n * or show the members available so far if the user is invited\n */\n _showMembersAccordingToMembershipWithLL: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var cli, _cli, room, membership;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n cli = MatrixClientPeg.get();\n\n if (!cli.hasLazyLoadMembersEnabled()) {\n _context.next = 18;\n break;\n }\n\n _cli = MatrixClientPeg.get();\n room = _cli.getRoom(this.props.roomId);\n membership = room && room.getMyMembership();\n\n if (!(membership === \"join\")) {\n _context.next = 17;\n break;\n }\n\n this.setState({ loading: true });\n _context.prev = 7;\n _context.next = 10;\n return (0, _bluebird.resolve)(room.loadMembersIfNeeded());\n\n case 10:\n _context.next = 14;\n break;\n\n case 12:\n _context.prev = 12;\n _context.t0 = _context['catch'](7);\n\n case 14:\n if (this._mounted) {\n this.setState(this._getMembersState(this.roomMembers()));\n this._listenForMembersChanges();\n }\n _context.next = 18;\n break;\n\n case 17:\n if (membership === \"invite\") {\n // show the members we've got when invited\n this.setState(this._getMembersState(this.roomMembers()));\n }\n\n case 18:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[7, 12]]);\n }));\n\n function _showMembersAccordingToMembershipWithLL() {\n return _ref.apply(this, arguments);\n }\n\n return _showMembersAccordingToMembershipWithLL;\n }(),\n\n _getMembersState: function _getMembersState(members) {\n // set the state after determining _showPresence to make sure it's\n // taken into account while rerendering\n return {\n loading: false,\n members: members,\n filteredJoinedMembers: this._filterMembers(members, 'join'),\n filteredInvitedMembers: this._filterMembers(members, 'invite'),\n\n // ideally we'd size this to the page height, but\n // in practice I find that a little constraining\n truncateAtJoined: INITIAL_LOAD_NUM_MEMBERS,\n truncateAtInvited: INITIAL_LOAD_NUM_INVITED,\n searchQuery: \"\"\n };\n },\n\n onUserLastPresenceTs: function onUserLastPresenceTs(event, user) {\n // Attach a SINGLE listener for global presence changes then locate the\n // member tile and re-render it. This is more efficient than every tile\n // evar attaching their own listener.\n // console.log(\"explicit presence from \" + user.userId);\n var tile = this.refs[user.userId];\n if (tile) {\n this._updateList(); // reorder the membership list\n }\n },\n\n\n onRoom: function onRoom(room) {\n if (room.roomId !== this.props.roomId) {\n return;\n }\n // We listen for room events because when we accept an invite\n // we need to wait till the room is fully populated with state\n // before refreshing the member list else we get a stale list.\n this._showMembersAccordingToMembershipWithLL();\n },\n\n onMyMembership: function onMyMembership(room, membership, oldMembership) {\n if (room.roomId === this.props.roomId && membership === \"join\") {\n this._showMembersAccordingToMembershipWithLL();\n }\n },\n\n onRoomStateMember: function onRoomStateMember(ev, state, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n this._updateList();\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n if (member.roomId !== this.props.roomId) {\n return;\n }\n this._updateList();\n },\n\n onRoomStateEvent: function onRoomStateEvent(event, state) {\n if (event.getRoomId() === this.props.roomId && event.getType() === \"m.room.third_party_invite\") {\n this._updateList();\n }\n },\n\n _updateList: new rate_limited_func(function () {\n // console.log(\"Updating memberlist\");\n var newState = {\n loading: false,\n members: this.roomMembers()\n };\n newState.filteredJoinedMembers = this._filterMembers(newState.members, 'join', this.state.searchQuery);\n newState.filteredInvitedMembers = this._filterMembers(newState.members, 'invite', this.state.searchQuery);\n this.setState(newState);\n }, 500),\n\n getMembersWithUser: function getMembersWithUser() {\n if (!this.props.roomId) return [];\n var cli = MatrixClientPeg.get();\n var room = cli.getRoom(this.props.roomId);\n if (!room) return [];\n\n var allMembers = (0, _values2.default)(room.currentState.members);\n\n allMembers.forEach(function (member) {\n // work around a race where you might have a room member object\n // before the user object exists. This may or may not cause\n // https://github.com/vector-im/vector-web/issues/186\n if (member.user === null) {\n member.user = cli.getUser(member.userId);\n }\n\n // XXX: this user may have no lastPresenceTs value!\n // the right solution here is to fix the race rather than leave it as 0\n });\n\n return allMembers;\n },\n\n roomMembers: function roomMembers() {\n var ConferenceHandler = CallHandler.getConferenceHandler();\n\n var allMembers = this.getMembersWithUser();\n var filteredAndSortedMembers = allMembers.filter(function (m) {\n return (m.membership === 'join' || m.membership === 'invite') && (!ConferenceHandler || ConferenceHandler && !ConferenceHandler.isConferenceUser(m.userId));\n });\n filteredAndSortedMembers.sort(this.memberSort);\n return filteredAndSortedMembers;\n },\n\n _createOverflowTileJoined: function _createOverflowTileJoined(overflowCount, totalCount) {\n return this._createOverflowTile(overflowCount, totalCount, this._showMoreJoinedMemberList);\n },\n\n _createOverflowTileInvited: function _createOverflowTileInvited(overflowCount, totalCount) {\n return this._createOverflowTile(overflowCount, totalCount, this._showMoreInvitedMemberList);\n },\n\n _createOverflowTile: function _createOverflowTile(overflowCount, totalCount, onClick) {\n // For now we'll pretend this is any entity. It should probably be a separate tile.\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return _react2.default.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: _react2.default.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: onClick });\n },\n\n _showMoreJoinedMemberList: function _showMoreJoinedMemberList() {\n this.setState({\n truncateAtJoined: this.state.truncateAtJoined + SHOW_MORE_INCREMENT\n });\n },\n\n _showMoreInvitedMemberList: function _showMoreInvitedMemberList() {\n this.setState({\n truncateAtInvited: this.state.truncateAtInvited + SHOW_MORE_INCREMENT\n });\n },\n\n memberString: function memberString(member) {\n if (!member) {\n return \"(null)\";\n } else {\n return \"(\" + member.name + \", \" + member.powerLevel + \", \" + member.user.lastActiveAgo + \", \" + member.user.currentlyActive + \")\";\n }\n },\n\n // returns negative if a comes before b,\n // returns 0 if a and b are equivalent in ordering\n // returns positive if a comes after b.\n memberSort: function memberSort(memberA, memberB) {\n // order by last active, with \"active now\" first.\n // ...and then by power\n // ...and then alphabetically.\n // We could tiebreak instead by \"last recently spoken in this room\" if we wanted to.\n\n var userA = memberA.user;\n var userB = memberB.user;\n\n // if (!userA || !userB) {\n // console.log(\"comparing \" + memberA.name + \" user=\" + memberA.user + \" with \" + memberB.name + \" user=\" + memberB.user);\n // }\n\n if (!userA && !userB) return 0;\n if (userA && !userB) return -1;\n if (!userA && userB) return 1;\n\n // console.log(\"comparing \" + this.memberString(memberA) + \" and \" + this.memberString(memberB));\n\n if (userA.currentlyActive && userB.currentlyActive || !this._showPresence) {\n // console.log(memberA.name + \" and \" + memberB.name + \" are both active\");\n if (memberA.powerLevel === memberB.powerLevel) {\n // console.log(memberA + \" and \" + memberB + \" have same power level\");\n if (memberA.name && memberB.name) {\n // console.log(\"comparing names: \" + memberA.name + \" and \" + memberB.name);\n var nameA = memberA.name[0] === '@' ? memberA.name.substr(1) : memberA.name;\n var nameB = memberB.name[0] === '@' ? memberB.name.substr(1) : memberB.name;\n return nameA.localeCompare(nameB);\n } else {\n return 0;\n }\n } else {\n // console.log(\"comparing power: \" + memberA.powerLevel + \" and \" + memberB.powerLevel);\n return memberB.powerLevel - memberA.powerLevel;\n }\n }\n\n if (userA.currentlyActive && !userB.currentlyActive) return -1;\n if (!userA.currentlyActive && userB.currentlyActive) return 1;\n\n // For now, let's just order things by timestamp. It's really annoying\n // that a user disappears from sight just because they temporarily go offline\n return userB.getLastActiveTs() - userA.getLastActiveTs();\n },\n\n onSearchQueryChanged: function onSearchQueryChanged(ev) {\n var q = ev.target.value;\n this.setState({\n searchQuery: q,\n filteredJoinedMembers: this._filterMembers(this.state.members, 'join', q),\n filteredInvitedMembers: this._filterMembers(this.state.members, 'invite', q)\n });\n },\n\n _filterMembers: function _filterMembers(members, membership, query) {\n return members.filter(function (m) {\n if (query) {\n query = query.toLowerCase();\n var matchesName = m.name.toLowerCase().indexOf(query) !== -1;\n var matchesId = m.userId.toLowerCase().indexOf(query) !== -1;\n\n if (!matchesName && !matchesId) {\n return false;\n }\n }\n\n return m.membership === membership;\n });\n },\n\n _getPending3PidInvites: function _getPending3PidInvites() {\n // include 3pid invites (m.room.third_party_invite) state events.\n // The HS may have already converted these into m.room.member invites so\n // we shouldn't add them if the 3pid invite state key (token) is in the\n // member invite (content.third_party_invite.signed.token)\n var room = MatrixClientPeg.get().getRoom(this.props.roomId);\n\n if (room) {\n return room.currentState.getStateEvents(\"m.room.third_party_invite\").filter(function (e) {\n // any events without these keys are not valid 3pid invites, so we ignore them\n var requiredKeys = ['key_validity_url', 'public_key', 'display_name'];\n for (var i = 0; i < requiredKeys.length; ++i) {\n if (e.getContent()[requiredKeys[i]] === undefined) return false;\n }\n\n // discard all invites which have a m.room.member event since we've\n // already added them.\n var memberEvent = room.currentState.getInviteForThreePidToken(e.getStateKey());\n if (memberEvent) return false;\n return true;\n });\n }\n },\n\n _makeMemberTiles: function _makeMemberTiles(members, membership) {\n var _this = this;\n\n var MemberTile = sdk.getComponent(\"rooms.MemberTile\");\n\n var memberList = members.map(function (m) {\n return _react2.default.createElement(MemberTile, { key: m.userId, member: m, ref: m.userId, showPresence: _this._showPresence });\n });\n\n // XXX: surely this is not the right home for this logic.\n // Double XXX: Now it's really, really not the right home for this logic:\n // we shouldn't even be passing in the 'membership' param to this function.\n // Ew, ew, and ew.\n // Triple XXX: This violates the size constraint, the output is expected/desired\n // to be the same length as the members input array.\n if (membership === \"invite\") {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n memberList.push.apply(memberList, (0, _toConsumableArray3.default)(this._getPending3PidInvites().map(function (e) {\n return _react2.default.createElement(EntityTile, { key: e.getStateKey(),\n name: e.getContent().display_name,\n suppressOnHover: true\n });\n })));\n }\n\n return memberList;\n },\n\n _getChildrenJoined: function _getChildrenJoined(start, end) {\n return this._makeMemberTiles(this.state.filteredJoinedMembers.slice(start, end));\n },\n\n _getChildCountJoined: function _getChildCountJoined() {\n return this.state.filteredJoinedMembers.length;\n },\n\n _getChildrenInvited: function _getChildrenInvited(start, end) {\n return this._makeMemberTiles(this.state.filteredInvitedMembers.slice(start, end), 'invite');\n },\n\n _getChildCountInvited: function _getChildCountInvited() {\n return this.state.filteredInvitedMembers.length + (this._getPending3PidInvites() || []).length;\n },\n\n render: function render() {\n if (this.state.loading) {\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n var TruncatedList = sdk.getComponent(\"elements.TruncatedList\");\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n var invitedSection = null;\n if (this._getChildCountInvited() > 0) {\n invitedSection = _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_invited' },\n _react2.default.createElement(\n 'h2',\n null,\n (0, _languageHandler._t)(\"Invited\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList_wrapper' },\n _react2.default.createElement(TruncatedList, { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAtInvited,\n createOverflowElement: this._createOverflowTileInvited,\n getChildren: this._getChildrenInvited,\n getChildCount: this._getChildCountInvited\n })\n )\n );\n }\n\n var inputBox = _react2.default.createElement(\n 'form',\n { autoComplete: 'off' },\n _react2.default.createElement('input', { className: 'mx_MemberList_query', id: 'mx_MemberList_query', type: 'text',\n onChange: this.onSearchQueryChanged, value: this.state.searchQuery,\n placeholder: (0, _languageHandler._t)('Filter room members') })\n );\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MemberList' },\n inputBox,\n _react2.default.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true, className: 'mx_MemberList_joined' },\n _react2.default.createElement(TruncatedList, { className: 'mx_MemberList_wrapper', truncateAt: this.state.truncateAtJoined,\n createOverflowElement: this._createOverflowTileJoined,\n getChildren: this._getChildrenJoined,\n getChildCount: this._getChildCountJoined\n }),\n invitedSection\n )\n );\n }\n});\n//# sourceMappingURL=MemberList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar dis = require('../../../dispatcher');\nvar Modal = require(\"../../../Modal\");\n\n\nmodule.exports = React.createClass({\n displayName: 'MemberTile',\n\n propTypes: {\n member: _propTypes2.default.any.isRequired, // RoomMember\n showPresence: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showPresence: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {};\n },\n\n shouldComponentUpdate: function shouldComponentUpdate(nextProps, nextState) {\n if (this.member_last_modified_time === undefined || this.member_last_modified_time < nextProps.member.getLastModifiedTime()) {\n return true;\n }\n if (nextProps.member.user && (this.user_last_modified_time === undefined || this.user_last_modified_time < nextProps.member.user.getLastModifiedTime())) {\n return true;\n }\n return false;\n },\n\n onClick: function onClick(e) {\n dis.dispatch({\n action: 'view_user',\n member: this.props.member\n });\n },\n\n _getDisplayName: function _getDisplayName() {\n return this.props.member.name;\n },\n\n getPowerLabel: function getPowerLabel() {\n return (0, _languageHandler._t)(\"%(userName)s (power %(powerLevelNumber)s)\", { userName: this.props.member.userId, powerLevelNumber: this.props.member.powerLevel });\n },\n\n render: function render() {\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n var EntityTile = sdk.getComponent('rooms.EntityTile');\n\n var member = this.props.member;\n var name = this._getDisplayName();\n var active = -1;\n var presenceState = member.user ? member.user.presence : null;\n\n var av = React.createElement(MemberAvatar, { member: member, width: 36, height: 36 });\n\n if (member.user) {\n this.user_last_modified_time = member.user.getLastModifiedTime();\n }\n this.member_last_modified_time = member.getLastModifiedTime();\n\n // We deliberately leave power levels that are not 100 or 50 undefined\n var powerStatus = {\n 100: EntityTile.POWER_STATUS_ADMIN,\n 50: EntityTile.POWER_STATUS_MODERATOR\n }[this.props.member.powerLevel];\n\n return React.createElement(EntityTile, (0, _extends3.default)({}, this.props, { presenceState: presenceState,\n presenceLastActiveAgo: member.user ? member.user.lastActiveAgo : 0,\n presenceLastTs: member.user ? member.user.lastPresenceTs : 0,\n presenceCurrentlyActive: member.user ? member.user.currentlyActive : false,\n avatarJsx: av, title: this.getPowerLabel(), onClick: this.onClick,\n name: name, powerStatus: powerStatus, showPresence: this.props.showPresence }));\n }\n});\n//# sourceMappingURL=MemberTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Stickerpicker = require('./Stickerpicker');\n\nvar _Stickerpicker2 = _interopRequireDefault(_Stickerpicker);\n\nvar _matrixTo = require('../../../matrix-to');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar formatButtonList = [(0, _languageHandler._td)(\"bold\"), (0, _languageHandler._td)(\"italic\"), (0, _languageHandler._td)(\"deleted\"), (0, _languageHandler._td)(\"underlined\"), (0, _languageHandler._td)(\"inline-code\"), (0, _languageHandler._td)(\"block-quote\"), (0, _languageHandler._td)(\"bulleted-list\"), (0, _languageHandler._td)(\"numbered-list\")];\n\nvar MessageComposer = function (_React$Component) {\n (0, _inherits3.default)(MessageComposer, _React$Component);\n\n function MessageComposer(props, context) {\n (0, _classCallCheck3.default)(this, MessageComposer);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MessageComposer.__proto__ || (0, _getPrototypeOf2.default)(MessageComposer)).call(this, props, context));\n\n _this.onCallClick = _this.onCallClick.bind(_this);\n _this.onHangupClick = _this.onHangupClick.bind(_this);\n _this.onUploadClick = _this.onUploadClick.bind(_this);\n _this.onUploadFileSelected = _this.onUploadFileSelected.bind(_this);\n _this.uploadFiles = _this.uploadFiles.bind(_this);\n _this.onVoiceCallClick = _this.onVoiceCallClick.bind(_this);\n _this._onAutocompleteConfirm = _this._onAutocompleteConfirm.bind(_this);\n _this.onToggleFormattingClicked = _this.onToggleFormattingClicked.bind(_this);\n _this.onToggleMarkdownClicked = _this.onToggleMarkdownClicked.bind(_this);\n _this.onInputStateChanged = _this.onInputStateChanged.bind(_this);\n _this.onEvent = _this.onEvent.bind(_this);\n _this._onRoomStateEvents = _this._onRoomStateEvents.bind(_this);\n _this._onRoomViewStoreUpdate = _this._onRoomViewStoreUpdate.bind(_this);\n _this._onTombstoneClick = _this._onTombstoneClick.bind(_this);\n\n _this.state = {\n inputState: {\n marks: [],\n blockType: null,\n isRichTextEnabled: _SettingsStore2.default.getValue('MessageComposerInput.isRichTextEnabled')\n },\n showFormatting: _SettingsStore2.default.getValue('MessageComposer.showFormatting'),\n isQuoting: Boolean(_RoomViewStore2.default.getQuotingEvent()),\n tombstone: _this._getRoomTombstone()\n };\n return _this;\n }\n\n (0, _createClass3.default)(MessageComposer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // N.B. using 'event' rather than 'RoomEvents' otherwise the crypto handler\n // for 'event' fires *after* 'RoomEvent', and our room won't have yet been\n // marked as encrypted.\n // XXX: fragile as all hell - fixme somehow, perhaps with a dedicated Room.encryption event or something.\n _MatrixClientPeg2.default.get().on(\"event\", this.onEvent);\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onRoomStateEvents);\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this._waitForOwnMember();\n }\n }, {\n key: '_waitForOwnMember',\n value: function _waitForOwnMember() {\n var _this2 = this;\n\n // if we have the member already, do that\n var me = this.props.room.getMember(_MatrixClientPeg2.default.get().getUserId());\n if (me) {\n this.setState({ me: me });\n return;\n }\n // Otherwise, wait for member loading to finish and then update the member for the avatar.\n // The members should already be loading, and loadMembersIfNeeded\n // will return the promise for the existing operation\n this.props.room.loadMembersIfNeeded().then(function () {\n var me = _this2.props.room.getMember(_MatrixClientPeg2.default.get().getUserId());\n _this2.setState({ me: me });\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"event\", this.onEvent);\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onRoomStateEvents);\n }\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n }\n }, {\n key: 'onEvent',\n value: function onEvent(event) {\n if (event.getType() !== 'm.room.encryption') return;\n if (event.getRoomId() !== this.props.room.roomId) return;\n this.forceUpdate();\n }\n }, {\n key: '_onRoomStateEvents',\n value: function _onRoomStateEvents(ev, state) {\n if (ev.getRoomId() !== this.props.room.roomId) return;\n\n if (ev.getType() === 'm.room.tombstone') {\n this.setState({ tombstone: this._getRoomTombstone() });\n }\n }\n }, {\n key: '_getRoomTombstone',\n value: function _getRoomTombstone() {\n return this.props.room.currentState.getStateEvents('m.room.tombstone', '');\n }\n }, {\n key: '_onRoomViewStoreUpdate',\n value: function _onRoomViewStoreUpdate() {\n var isQuoting = Boolean(_RoomViewStore2.default.getQuotingEvent());\n if (this.state.isQuoting === isQuoting) return;\n this.setState({ isQuoting: isQuoting });\n }\n }, {\n key: 'onUploadClick',\n value: function onUploadClick(ev) {\n if (_MatrixClientPeg2.default.get().isGuest()) {\n _dispatcher2.default.dispatch({ action: 'require_registration' });\n return;\n }\n\n this.refs.uploadInput.click();\n }\n }, {\n key: 'onUploadFileSelected',\n value: function onUploadFileSelected(files) {\n this.uploadFiles(files.target.files);\n }\n }, {\n key: 'uploadFiles',\n value: function uploadFiles(files) {\n var _this3 = this;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n\n var fileList = [];\n for (var i = 0; i < files.length; i++) {\n fileList.push(_react2.default.createElement(\n 'li',\n { key: i },\n _react2.default.createElement(TintableSvg, { key: i, src: 'img/files.svg', width: '16', height: '16' }),\n ' ',\n files[i].name || (0, _languageHandler._t)('Attachment')\n ));\n }\n\n var isQuoting = Boolean(_RoomViewStore2.default.getQuotingEvent());\n var replyToWarning = null;\n if (isQuoting) {\n replyToWarning = _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('At this time it is not possible to reply with a file so this will be sent without being a reply.')\n );\n }\n\n _Modal2.default.createTrackedDialog('Upload Files confirmation', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Upload Files'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Are you sure you want to upload the following files?')\n ),\n _react2.default.createElement(\n 'ul',\n { style: { listStyle: 'none', textAlign: 'left' } },\n fileList\n ),\n replyToWarning\n ),\n onFinished: function onFinished(shouldUpload) {\n if (shouldUpload) {\n // MessageComposer shouldn't have to rely on its parent passing in a callback to upload a file\n if (files) {\n for (var _i = 0; _i < files.length; _i++) {\n _this3.props.uploadFile(files[_i]);\n }\n }\n }\n\n _this3.refs.uploadInput.value = null;\n }\n });\n }\n }, {\n key: 'onHangupClick',\n value: function onHangupClick() {\n var call = _CallHandler2.default.getCallForRoom(this.props.room.roomId);\n //var call = CallHandler.getAnyActiveCall();\n if (!call) {\n return;\n }\n _dispatcher2.default.dispatch({\n action: 'hangup',\n // hangup the call for this room, which may not be the room in props\n // (e.g. conferences which will hangup the 1:1 room instead)\n room_id: call.roomId\n });\n }\n }, {\n key: 'onCallClick',\n value: function onCallClick(ev) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: ev.shiftKey ? \"screensharing\" : \"video\",\n room_id: this.props.room.roomId\n });\n }\n }, {\n key: 'onVoiceCallClick',\n value: function onVoiceCallClick(ev) {\n _dispatcher2.default.dispatch({\n action: 'place_call',\n type: \"voice\",\n room_id: this.props.room.roomId\n });\n }\n }, {\n key: 'onInputStateChanged',\n value: function onInputStateChanged(inputState) {\n this.setState({ inputState: inputState });\n }\n }, {\n key: '_onAutocompleteConfirm',\n value: function _onAutocompleteConfirm(range, completion) {\n if (this.messageComposerInput) {\n this.messageComposerInput.setDisplayedCompletion(range, completion);\n }\n }\n }, {\n key: 'onFormatButtonClicked',\n value: function onFormatButtonClicked(name, event) {\n event.preventDefault();\n this.messageComposerInput.onFormatButtonClicked(name, event);\n }\n }, {\n key: 'onToggleFormattingClicked',\n value: function onToggleFormattingClicked() {\n _SettingsStore2.default.setValue(\"MessageComposer.showFormatting\", null, _SettingsStore.SettingLevel.DEVICE, !this.state.showFormatting);\n this.setState({ showFormatting: !this.state.showFormatting });\n }\n }, {\n key: 'onToggleMarkdownClicked',\n value: function onToggleMarkdownClicked(e) {\n e.preventDefault(); // don't steal focus from the editor!\n this.messageComposerInput.enableRichtext(!this.state.inputState.isRichTextEnabled);\n }\n }, {\n key: '_onTombstoneClick',\n value: function _onTombstoneClick(ev) {\n ev.preventDefault();\n\n var replacementRoomId = this.state.tombstone.getContent()['replacement_room'];\n _dispatcher2.default.dispatch({\n action: 'view_room',\n highlighted: true,\n room_id: replacementRoomId\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var uploadInputStyle = { display: 'none' };\n var MemberAvatar = _index2.default.getComponent('avatars.MemberAvatar');\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var MessageComposerInput = _index2.default.getComponent(\"rooms.MessageComposerInput\");\n\n var controls = [];\n\n if (this.state.me) {\n controls.push(_react2.default.createElement(\n 'div',\n { key: 'controls_avatar', className: 'mx_MessageComposer_avatar' },\n _react2.default.createElement(MemberAvatar, { member: this.state.me, width: 24, height: 24 })\n ));\n }\n\n var e2eImg = void 0,\n e2eTitle = void 0,\n e2eClass = void 0;\n var roomIsEncrypted = _MatrixClientPeg2.default.get().isRoomEncrypted(this.props.room.roomId);\n if (roomIsEncrypted) {\n // FIXME: show a /!\\ if there are untrusted devices in the room...\n e2eImg = 'img/e2e-verified.svg';\n e2eTitle = (0, _languageHandler._t)('Encrypted room');\n e2eClass = 'mx_MessageComposer_e2eIcon';\n } else {\n e2eImg = 'img/e2e-unencrypted.svg';\n e2eTitle = (0, _languageHandler._t)('Unencrypted room');\n e2eClass = 'mx_MessageComposer_e2eIcon mx_filterFlipColor';\n }\n\n controls.push(_react2.default.createElement('img', { key: 'e2eIcon', className: e2eClass, src: e2eImg, width: '12', height: '12',\n alt: e2eTitle, title: e2eTitle\n }));\n\n var callButton = void 0;\n var videoCallButton = void 0;\n var hangupButton = void 0;\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n // Call buttons\n if (this.props.callState && this.props.callState !== 'ended') {\n hangupButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_hangup', className: 'mx_MessageComposer_hangup', onClick: this.onHangupClick },\n _react2.default.createElement('img', { src: 'img/hangup.svg', alt: (0, _languageHandler._t)('Hangup'), title: (0, _languageHandler._t)('Hangup'), width: '25', height: '26' })\n );\n } else {\n callButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_call', className: 'mx_MessageComposer_voicecall', onClick: this.onVoiceCallClick, title: (0, _languageHandler._t)('Voice call') },\n _react2.default.createElement(TintableSvg, { src: 'img/icon-call.svg', width: '35', height: '35' })\n );\n videoCallButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_videocall', className: 'mx_MessageComposer_videocall', onClick: this.onCallClick, title: (0, _languageHandler._t)('Video call') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-video.svg', width: '35', height: '35' })\n );\n }\n\n var canSendMessages = !this.state.tombstone && this.props.room.maySendMessage();\n\n if (canSendMessages) {\n // This also currently includes the call buttons. Really we should\n // check separately for whether we can call, but this is slightly\n // complex because of conference calls.\n var uploadButton = _react2.default.createElement(\n AccessibleButton,\n { key: 'controls_upload', className: 'mx_MessageComposer_upload',\n onClick: this.onUploadClick, title: (0, _languageHandler._t)('Upload file') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-upload.svg', width: '35', height: '35' }),\n _react2.default.createElement('input', { ref: 'uploadInput', type: 'file',\n style: uploadInputStyle,\n multiple: true,\n onChange: this.onUploadFileSelected })\n );\n\n var formattingButton = this.state.inputState.isRichTextEnabled ? _react2.default.createElement(AccessibleButton, { element: 'img', className: 'mx_MessageComposer_formatting',\n alt: (0, _languageHandler._t)(\"Show Text Formatting Toolbar\"),\n title: (0, _languageHandler._t)(\"Show Text Formatting Toolbar\"),\n src: 'img/button-text-formatting.svg',\n onClick: this.onToggleFormattingClicked,\n style: { visibility: this.state.showFormatting ? 'hidden' : 'visible' },\n key: 'controls_formatting' }) : null;\n\n var placeholderText = void 0;\n if (this.state.isQuoting) {\n if (roomIsEncrypted) {\n placeholderText = (0, _languageHandler._t)('Send an encrypted reply…');\n } else {\n placeholderText = (0, _languageHandler._t)('Send a reply (unencrypted)…');\n }\n } else {\n if (roomIsEncrypted) {\n placeholderText = (0, _languageHandler._t)('Send an encrypted message…');\n } else {\n placeholderText = (0, _languageHandler._t)('Send a message (unencrypted)…');\n }\n }\n\n var stickerpickerButton = _react2.default.createElement(_Stickerpicker2.default, { key: 'stickerpicker_controls_button', room: this.props.room });\n\n controls.push(_react2.default.createElement(MessageComposerInput, {\n ref: function ref(c) {\n return _this4.messageComposerInput = c;\n },\n key: 'controls_input',\n onResize: this.props.onResize,\n room: this.props.room,\n placeholder: placeholderText,\n onFilesPasted: this.uploadFiles,\n onInputStateChanged: this.onInputStateChanged }), formattingButton, stickerpickerButton, uploadButton, hangupButton, callButton, videoCallButton);\n } else if (this.state.tombstone) {\n var replacementRoomId = this.state.tombstone.getContent()['replacement_room'];\n\n controls.push(_react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_replaced_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_replaced_valign' },\n _react2.default.createElement('img', { className: 'mx_MessageComposer_roomReplaced_icon', src: 'img/room_replaced.svg' }),\n _react2.default.createElement(\n 'span',\n { className: 'mx_MessageComposer_roomReplaced_header' },\n (0, _languageHandler._t)(\"This room has been replaced and is no longer active.\")\n ),\n _react2.default.createElement('br', null),\n _react2.default.createElement(\n 'a',\n { href: (0, _matrixTo.makeRoomPermalink)(replacementRoomId),\n className: 'mx_MessageComposer_roomReplaced_link',\n onClick: this._onTombstoneClick\n },\n (0, _languageHandler._t)(\"The conversation continues here.\")\n )\n )\n ));\n } else {\n controls.push(_react2.default.createElement(\n 'div',\n { key: 'controls_error', className: 'mx_MessageComposer_noperm_error' },\n (0, _languageHandler._t)('You do not have permission to post to this room')\n ));\n }\n\n var formatBar = void 0;\n if (this.state.showFormatting && this.state.inputState.isRichTextEnabled) {\n var _state$inputState = this.state.inputState,\n marks = _state$inputState.marks,\n blockType = _state$inputState.blockType;\n\n var formatButtons = formatButtonList.map(function (name) {\n // special-case to match the md serializer and the special-case in MessageComposerInput.js\n var markName = name === 'inline-code' ? 'code' : name;\n var active = marks.some(function (mark) {\n return mark.type === markName;\n }) || blockType === name;\n var suffix = active ? '-on' : '';\n var onFormatButtonClicked = _this4.onFormatButtonClicked.bind(_this4, name);\n var className = 'mx_MessageComposer_format_button mx_filterFlipColor';\n return _react2.default.createElement('img', { className: className,\n title: (0, _languageHandler._t)(name),\n onMouseDown: onFormatButtonClicked,\n key: name,\n src: 'img/button-text-' + name + suffix + '.svg',\n height: '17' });\n });\n\n formatBar = _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_formatbar_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_formatbar' },\n formatButtons,\n _react2.default.createElement('div', { style: { flex: 1 } }),\n _react2.default.createElement('img', { title: this.state.inputState.isRichTextEnabled ? (0, _languageHandler._t)(\"Turn Markdown on\") : (0, _languageHandler._t)(\"Turn Markdown off\"),\n onMouseDown: this.onToggleMarkdownClicked,\n className: 'mx_MessageComposer_formatbar_markdown mx_filterFlipColor',\n src: 'img/button-md-' + !this.state.inputState.isRichTextEnabled + '.png' }),\n _react2.default.createElement(AccessibleButton, { element: 'img', title: (0, _languageHandler._t)(\"Hide Text Formatting Toolbar\"),\n onClick: this.onToggleFormattingClicked,\n className: 'mx_MessageComposer_formatbar_cancel mx_filterFlipColor',\n src: 'img/icon-text-cancel.svg' })\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_row' },\n controls\n )\n ),\n formatBar\n );\n }\n }]);\n return MessageComposer;\n}(_react2.default.Component);\n\nexports.default = MessageComposer;\n\n\nMessageComposer.propTypes = {\n // a callback which is called when the height of the composer is\n // changed due to a change in content.\n onResize: _propTypes2.default.func,\n\n // js-sdk Room object\n room: _propTypes2.default.object.isRequired,\n\n // string representing the current voip call state\n callState: _propTypes2.default.string,\n\n // callback when a file to upload is chosen\n uploadFile: _propTypes2.default.func.isRequired,\n\n // string representing the current room app drawer state\n showApps: _propTypes2.default.bool\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageComposer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _setImmediate2 = require('babel-runtime/core-js/set-immediate');\n\nvar _setImmediate3 = _interopRequireDefault(_setImmediate2);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _slateReact = require('slate-react');\n\nvar _slate = require('slate');\n\nvar _slateHtmlSerializer = require('slate-html-serializer');\n\nvar _slateHtmlSerializer2 = _interopRequireDefault(_slateHtmlSerializer);\n\nvar _slateMdSerializer = require('slate-md-serializer');\n\nvar _slateMdSerializer2 = _interopRequireDefault(_slateMdSerializer);\n\nvar _slatePlainSerializer = require('slate-plain-serializer');\n\nvar _slatePlainSerializer2 = _interopRequireDefault(_slatePlainSerializer);\n\nvar _PlainWithPillsSerializer = require('../../../autocomplete/PlainWithPillsSerializer');\n\nvar _PlainWithPillsSerializer2 = _interopRequireDefault(_PlainWithPillsSerializer);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _SlashCommands = require('../../../SlashCommands');\n\nvar _Keyboard = require('../../../Keyboard');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Analytics = require('../../../Analytics');\n\nvar _Analytics2 = _interopRequireDefault(_Analytics);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _RichText = require('../../../RichText');\n\nvar RichText = _interopRequireWildcard(_RichText);\n\nvar _HtmlUtils = require('../../../HtmlUtils');\n\nvar HtmlUtils = _interopRequireWildcard(_HtmlUtils);\n\nvar _Autocomplete = require('./Autocomplete');\n\nvar _Autocomplete2 = _interopRequireDefault(_Autocomplete);\n\nvar _Autocompleter = require('../../../autocomplete/Autocompleter');\n\nvar _Markdown = require('../../../Markdown');\n\nvar _Markdown2 = _interopRequireDefault(_Markdown);\n\nvar _ComposerHistoryManager = require('../../../ComposerHistoryManager');\n\nvar _ComposerHistoryManager2 = _interopRequireDefault(_ComposerHistoryManager);\n\nvar _MessageComposerStore = require('../../../stores/MessageComposerStore');\n\nvar _MessageComposerStore2 = _interopRequireDefault(_MessageComposerStore);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _emojione = require('emojione');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _matrixTo = require('../../../matrix-to');\n\nvar _ReplyPreview = require('./ReplyPreview');\n\nvar _ReplyPreview2 = _interopRequireDefault(_ReplyPreview);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _ReplyThread = require('../elements/ReplyThread');\n\nvar _ReplyThread2 = _interopRequireDefault(_ReplyThread);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar REGEX_MATRIXTO_MARKDOWN_GLOBAL = new RegExp(_linkifyMatrix.MATRIXTO_MD_LINK_PATTERN, 'g');\n\nvar EMOJI_SHORTNAMES = (0, _keys2.default)(_emojione.emojioneList);\nvar EMOJI_UNICODE_TO_SHORTNAME = (0, _emojione.mapUnicodeToShort)();\nvar REGEX_EMOJI_WHITESPACE = new RegExp('(?:^|\\\\s)(' + _emojione.asciiRegexp + ')\\\\s$');\nvar EMOJI_REGEX = new RegExp(_emojione.unicodeRegexp, 'g');\n\nvar TYPING_USER_TIMEOUT = 10000,\n TYPING_SERVER_TIMEOUT = 30000;\n\nvar ENTITY_TYPES = {\n AT_ROOM_PILL: 'ATROOMPILL'\n};\n\n// the Slate node type to default to for unstyled text\nvar DEFAULT_NODE = 'paragraph';\n\n// map HTML elements through to our Slate schema node types\n// used for the HTML deserializer.\n// (The names here are chosen to match the MD serializer's schema for convenience)\nvar BLOCK_TAGS = {\n p: 'paragraph',\n blockquote: 'block-quote',\n ul: 'bulleted-list',\n h1: 'heading1',\n h2: 'heading2',\n h3: 'heading3',\n h4: 'heading4',\n h5: 'heading5',\n h6: 'heading6',\n li: 'list-item',\n ol: 'numbered-list',\n pre: 'code'\n};\n\nvar MARK_TAGS = {\n strong: 'bold',\n b: 'bold', // deprecated\n em: 'italic',\n i: 'italic', // deprecated\n code: 'code',\n u: 'underlined',\n del: 'deleted',\n strike: 'deleted', // deprecated\n s: 'deleted' // deprecated\n};\n\nvar SLATE_SCHEMA = {\n inlines: {\n pill: {\n isVoid: true\n },\n emoji: {\n isVoid: true\n }\n }\n};\n\nfunction onSendMessageFailed(err, room) {\n // XXX: temporary logging to try to diagnose\n // https://github.com/vector-im/riot-web/issues/3148\n console.log('MessageComposer got send failure: ' + err.name + '(' + err + ')');\n _dispatcher2.default.dispatch({\n action: 'message_send_failed'\n });\n}\n\nfunction rangeEquals(a, b) {\n return a.anchor.key === b.anchor.key && a.anchor.offset === b.anchorOffset && a.focus.key === b.focusKey && a.focus.offset === b.focusOffset && a.isFocused === b.isFocused && a.isBackward === b.isBackward;\n}\n\n/*\n * The textInput part of the MessageComposer\n */\n\nvar MessageComposerInput = function (_React$Component) {\n (0, _inherits3.default)(MessageComposerInput, _React$Component);\n\n function MessageComposerInput(props, context) {\n (0, _classCallCheck3.default)(this, MessageComposerInput);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (MessageComposerInput.__proto__ || (0, _getPrototypeOf2.default)(MessageComposerInput)).call(this, props, context));\n\n _initialiseProps.call(_this);\n\n var isRichTextEnabled = _SettingsStore2.default.getValue('MessageComposerInput.isRichTextEnabled');\n\n _Analytics2.default.setRichtextMode(isRichTextEnabled);\n\n _this.client = _MatrixClientPeg2.default.get();\n\n // track whether we should be trying to show autocomplete suggestions on the current editor\n // contents. currently it's only suppressed when navigating history to avoid ugly flashes\n // of unexpected corrections as you navigate.\n // XXX: should this be in state?\n _this.suppressAutoComplete = false;\n\n // track whether we've just pressed an arrowkey left or right in order to skip void nodes.\n // see https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095\n _this.direction = '';\n\n _this.plainWithMdPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'md' });\n _this.plainWithIdPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'id' });\n _this.plainWithPlainPills = new _PlainWithPillsSerializer2.default({ pillFormat: 'plain' });\n\n _this.md = new _slateMdSerializer2.default({\n rules: [{\n // if serialize returns undefined it falls through to the default hardcoded\n // serialization rules\n serialize: function serialize(obj, children) {\n if (obj.object !== 'inline') return;\n switch (obj.type) {\n case 'pill':\n return '[' + obj.data.get('completion') + '](' + obj.data.get('href') + ')';\n case 'emoji':\n return obj.data.get('emojiUnicode');\n }\n }\n }, {\n serialize: function serialize(obj, children) {\n if (obj.object !== 'mark') return;\n // XXX: slate-md-serializer consumes marks other than bold, italic, code, inserted, deleted\n switch (obj.type) {\n case 'underlined':\n return '<u>' + children + '</u>';\n case 'deleted':\n return '<del>' + children + '</del>';\n case 'code':\n // XXX: we only ever get given `code` regardless of whether it was inline or block\n // XXX: workaround for https://github.com/tommoor/slate-md-serializer/issues/14\n // strip single backslashes from children, as they would have been escaped here\n return '`' + children.split('\\\\').map(function (v) {\n return v ? v : '\\\\';\n }).join('') + '`';\n }\n }\n }]\n });\n\n _this.html = new _slateHtmlSerializer2.default({\n rules: [{\n deserialize: function deserialize(el, next) {\n var tag = el.tagName.toLowerCase();\n var type = BLOCK_TAGS[tag];\n if (type) {\n return {\n object: 'block',\n type: type,\n nodes: next(el.childNodes)\n };\n }\n type = MARK_TAGS[tag];\n if (type) {\n return {\n object: 'mark',\n type: type,\n nodes: next(el.childNodes)\n };\n }\n // special case links\n if (tag === 'a') {\n var href = el.getAttribute('href');\n var m = void 0;\n if (href) {\n m = href.match(_linkifyMatrix.MATRIXTO_URL_PATTERN);\n }\n if (m) {\n return {\n object: 'inline',\n type: 'pill',\n data: {\n href: href,\n completion: el.innerText,\n completionId: m[1]\n }\n };\n } else {\n return {\n object: 'inline',\n type: 'link',\n data: { href: href },\n nodes: next(el.childNodes)\n };\n }\n }\n },\n serialize: function serialize(obj, children) {\n if (obj.object === 'block') {\n return _this.renderNode({\n node: obj,\n children: children\n });\n } else if (obj.object === 'mark') {\n return _this.renderMark({\n mark: obj,\n children: children\n });\n } else if (obj.object === 'inline') {\n // special case links, pills and emoji otherwise we\n // end up with React components getting rendered out(!)\n switch (obj.type) {\n case 'pill':\n return _react2.default.createElement(\n 'a',\n { href: obj.data.get('href') },\n obj.data.get('completion')\n );\n case 'link':\n return _react2.default.createElement(\n 'a',\n { href: obj.data.get('href') },\n children\n );\n case 'emoji':\n // XXX: apparently you can't return plain strings from serializer rules\n // until https://github.com/ianstormtaylor/slate/pull/1854 is merged.\n // So instead we temporarily wrap emoji from RTE in an arbitrary tag\n // (<b/>). <span/> would be nicer, but in practice it causes CSS issues.\n return _react2.default.createElement(\n 'b',\n null,\n obj.data.get('emojiUnicode')\n );\n }\n return _this.renderNode({\n node: obj,\n children: children\n });\n }\n }\n }]\n });\n\n var savedState = _MessageComposerStore2.default.getEditorState(_this.props.room.roomId);\n _this.state = {\n // whether we're in rich text or markdown mode\n isRichTextEnabled: isRichTextEnabled,\n\n // the currently displayed editor state (note: this is always what is modified on input)\n editorState: _this.createEditorState(isRichTextEnabled, savedState ? savedState.editor_state : undefined, savedState ? savedState.rich_text : undefined),\n\n // the original editor state, before we started tabbing through completions\n originalEditorState: null,\n\n // the virtual state \"above\" the history stack, the message currently being composed that\n // we want to persist whilst browsing history\n currentlyComposedEditorState: null,\n\n // whether there were any completions\n someCompletions: null\n };\n return _this;\n }\n\n /*\n * \"Does the right thing\" to create an Editor value, based on:\n * - whether we've got rich text mode enabled\n * - contentState was passed in\n * - whether the contentState that was passed in was rich text\n */\n\n\n (0, _createClass3.default)(MessageComposerInput, [{\n key: 'createEditorState',\n value: function createEditorState(wantRichText, editorState, wasRichText) {\n if (editorState instanceof _slate.Value) {\n if (wantRichText && !wasRichText) {\n return this.mdToRichEditorState(editorState);\n }\n if (wasRichText && !wantRichText) {\n return this.richToMdEditorState(editorState);\n }\n return editorState;\n } else {\n // ...or create a new one. and explicitly focus it otherwise tab in-out issues\n var base = _slatePlainSerializer2.default.deserialize('', { defaultBlock: DEFAULT_NODE });\n return base.change().focus().value;\n }\n }\n }, {\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n this.historyManager = new _ComposerHistoryManager2.default(this.props.room.roomId, 'mx_slate_composer_history_');\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n }\n }, {\n key: 'onTypingActivity',\n value: function onTypingActivity() {\n this.isTyping = true;\n if (!this.userTypingTimer) {\n this.sendTyping(true);\n }\n this.startUserTypingTimer();\n this.startServerTypingTimer();\n }\n }, {\n key: 'onFinishedTyping',\n value: function onFinishedTyping() {\n this.isTyping = false;\n this.sendTyping(false);\n this.stopUserTypingTimer();\n this.stopServerTypingTimer();\n }\n }, {\n key: 'startUserTypingTimer',\n value: function startUserTypingTimer() {\n this.stopUserTypingTimer();\n var self = this;\n this.userTypingTimer = setTimeout(function () {\n self.isTyping = false;\n self.sendTyping(self.isTyping);\n self.userTypingTimer = null;\n }, TYPING_USER_TIMEOUT);\n }\n }, {\n key: 'stopUserTypingTimer',\n value: function stopUserTypingTimer() {\n if (this.userTypingTimer) {\n clearTimeout(this.userTypingTimer);\n this.userTypingTimer = null;\n }\n }\n }, {\n key: 'startServerTypingTimer',\n value: function startServerTypingTimer() {\n if (!this.serverTypingTimer) {\n var self = this;\n this.serverTypingTimer = setTimeout(function () {\n if (self.isTyping) {\n self.sendTyping(self.isTyping);\n self.startServerTypingTimer();\n }\n }, TYPING_SERVER_TIMEOUT / 2);\n }\n }\n }, {\n key: 'stopServerTypingTimer',\n value: function stopServerTypingTimer() {\n if (this.serverTypingTimer) {\n clearTimeout(this.serverTypingTimer);\n this.serverTypingTimer = null;\n }\n }\n }, {\n key: 'sendTyping',\n value: function sendTyping(isTyping) {\n if (_SettingsStore2.default.getValue('dontSendTypingNotifications')) return;\n _MatrixClientPeg2.default.get().sendTyping(this.props.room.roomId, this.isTyping, TYPING_SERVER_TIMEOUT).done();\n }\n }, {\n key: 'refreshTyping',\n value: function refreshTyping() {\n if (this.typingTimeout) {\n clearTimeout(this.typingTimeout);\n this.typingTimeout = null;\n }\n }\n }, {\n key: 'mdToRichEditorState',\n value: function mdToRichEditorState(editorState) {\n // for consistency when roundtripping, we could use slate-md-serializer rather than\n // commonmark, but then we would lose pills as the MD deserialiser doesn't know about\n // them and doesn't have any extensibility hooks.\n //\n // The code looks like this:\n //\n // const markdown = this.plainWithMdPills.serialize(editorState);\n //\n // // weirdly, the Md serializer can't deserialize '' to a valid Value...\n // if (markdown !== '') {\n // editorState = this.md.deserialize(markdown);\n // }\n // else {\n // editorState = Plain.deserialize('', { defaultBlock: DEFAULT_NODE });\n // }\n\n // so, instead, we use commonmark proper (which is arguably more logical to the user\n // anyway, as they'll expect the RTE view to match what they'll see in the timeline,\n // but the HTML->MD conversion is anyone's guess).\n\n var textWithMdPills = this.plainWithMdPills.serialize(editorState);\n var markdown = new _Markdown2.default(textWithMdPills);\n // HTML deserialize has custom rules to turn matrix.to links into pill objects.\n return this.html.deserialize(markdown.toHTML());\n }\n }, {\n key: 'richToMdEditorState',\n value: function richToMdEditorState(editorState) {\n // FIXME: this conversion loses pills (turning them into pure MD links).\n // We need to add a pill-aware deserialize method\n // to PlainWithPillsSerializer which recognises pills in raw MD and turns them into pills.\n return _slatePlainSerializer2.default.deserialize(\n // FIXME: we compile the MD out of the RTE state using slate-md-serializer\n // which doesn't roundtrip symmetrically with commonmark, which we use for\n // compiling MD out of the MD editor state above.\n this.md.serialize(editorState), { defaultBlock: DEFAULT_NODE });\n }\n }, {\n key: 'enableRichtext',\n value: function enableRichtext(enabled) {\n var _this2 = this;\n\n if (enabled === this.state.isRichTextEnabled) return;\n\n var editorState = null;\n if (enabled) {\n editorState = this.mdToRichEditorState(this.state.editorState);\n } else {\n editorState = this.richToMdEditorState(this.state.editorState);\n }\n\n _Analytics2.default.setRichtextMode(enabled);\n\n this.setState({\n editorState: this.createEditorState(enabled, editorState),\n isRichTextEnabled: enabled\n }, function () {\n _this2._editor.focus();\n });\n\n _SettingsStore2.default.setValue(\"MessageComposerInput.isRichTextEnabled\", null, _SettingsStore.SettingLevel.ACCOUNT, enabled);\n }\n\n /**\n * Check if the current selection has a mark with `type` in it.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n /**\n * Check if the any of the currently selected blocks are of `type`.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n /* If passed null, restores the original editor content from state.originalEditorState.\n * If passed a non-null displayedCompletion, modifies state.originalEditorState to compute new state.editorState.\n */\n\n }, {\n key: 'getAutocompleteQuery',\n value: function getAutocompleteQuery(editorState) {\n // We can just return the current block where the selection begins, which\n // should be enough to capture any autocompletion input, given autocompletion\n // providers only search for the first match which intersects with the current selection.\n // This avoids us having to serialize the whole thing to plaintext and convert\n // selection offsets in & out of the plaintext domain.\n\n if (editorState.selection.anchor.key) {\n return editorState.document.getDescendant(editorState.selection.anchor.key).text;\n } else {\n return '';\n }\n }\n }, {\n key: 'getSelectionRange',\n value: function getSelectionRange(editorState) {\n var beginning = false;\n var query = this.getAutocompleteQuery(editorState);\n var firstChild = editorState.document.nodes.get(0);\n var firstGrandChild = firstChild && firstChild.nodes.get(0);\n beginning = firstChild && firstGrandChild && firstChild.object === 'block' && firstGrandChild.object === 'text' && editorState.selection.anchor.key === firstGrandChild.key;\n\n // return a character range suitable for handing to an autocomplete provider.\n // the range is relative to the anchor of the current editor selection.\n // if the selection spans multiple blocks, then we collapse it for the calculation.\n var range = {\n beginning: beginning, // whether the selection is in the first block of the editor or not\n start: editorState.selection.anchor.offset,\n end: editorState.selection.anchor.key == editorState.selection.focus.key ? editorState.selection.focus.offset : editorState.selection.anchor.offset\n };\n if (range.start > range.end) {\n var tmp = range.start;\n range.start = range.end;\n range.end = tmp;\n }\n return range;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var activeEditorState = this.state.originalEditorState || this.state.editorState;\n\n var className = (0, _classnames2.default)('mx_MessageComposer_input', {\n mx_MessageComposer_input_error: this.state.someCompletions === false\n });\n\n var isEmpty = _slatePlainSerializer2.default.serialize(this.state.editorState) === '';\n\n var placeholder = this.props.placeholder;\n // XXX: workaround for placeholder being shown when there is a formatting block e.g blockquote but no text\n\n if (isEmpty && this.state.editorState.startBlock && this.state.editorState.startBlock.type !== DEFAULT_NODE) {\n placeholder = undefined;\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_input_wrapper', onClick: this.focusComposer },\n _react2.default.createElement(\n 'div',\n { className: 'mx_MessageComposer_autocomplete_wrapper' },\n _react2.default.createElement(_ReplyPreview2.default, null),\n _react2.default.createElement(_Autocomplete2.default, {\n ref: function ref(e) {\n return _this3.autocomplete = e;\n },\n room: this.props.room,\n onConfirm: this.onAutocompleteConfirm,\n onSelectionChange: this.setDisplayedCompletion,\n query: this.suppressAutoComplete ? '' : this.getAutocompleteQuery(activeEditorState),\n selection: this.getSelectionRange(activeEditorState)\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: className },\n _react2.default.createElement('img', { className: 'mx_MessageComposer_input_markdownIndicator mx_filterFlipColor',\n onMouseDown: this.onMarkdownToggleClicked,\n title: this.state.isRichTextEnabled ? (0, _languageHandler._t)(\"Markdown is disabled\") : (0, _languageHandler._t)(\"Markdown is enabled\"),\n src: 'img/button-md-' + !this.state.isRichTextEnabled + '.png' }),\n _react2.default.createElement(_slateReact.Editor, { ref: this._collectEditor,\n dir: 'auto',\n className: 'mx_MessageComposer_editor',\n placeholder: placeholder,\n value: this.state.editorState,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onPaste: this.onPaste,\n renderNode: this.renderNode,\n renderMark: this.renderMark\n // disable spell check for the placeholder because browsers don't like \"unencrypted\"\n , spellCheck: !isEmpty,\n schema: SLATE_SCHEMA\n })\n )\n );\n }\n }]);\n return MessageComposerInput;\n}(_react2.default.Component);\n\nMessageComposerInput.propTypes = {\n // a callback which is called when the height of the composer is\n // changed due to a change in content.\n onResize: _propTypes2.default.func,\n\n // js-sdk Room object\n room: _propTypes2.default.object.isRequired,\n\n onFilesPasted: _propTypes2.default.func,\n\n onInputStateChanged: _propTypes2.default.func\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this4 = this;\n\n this._collectEditor = function (e) {\n _this4._editor = e;\n };\n\n this.onAction = function (payload) {\n var editor = _this4._editor;\n var editorState = _this4.state.editorState;\n\n switch (payload.action) {\n case 'reply_to_event':\n case 'focus_composer':\n _this4.focusComposer();\n break;\n case 'insert_mention':\n {\n // Pretend that we've autocompleted this user because keeping two code\n // paths for inserting a user pill is not fun\n var selection = _this4.getSelectionRange(_this4.state.editorState);\n var member = _this4.props.room.getMember(payload.user_id);\n var completion = member ? member.rawDisplayName : payload.user_id;\n _this4.setDisplayedCompletion({\n completion: completion,\n completionId: payload.user_id,\n selection: selection,\n href: (0, _matrixTo.makeUserPermalink)(payload.user_id),\n suffix: selection.beginning && selection.start === 0 ? ': ' : ' '\n });\n }\n break;\n case 'quote':\n {\n var html = HtmlUtils.bodyToHtml(payload.event.getContent(), null, {\n forComposerQuote: true,\n returnString: true,\n emojiOne: false\n });\n var fragment = _this4.html.deserialize(html);\n // FIXME: do we want to put in a permalink to the original quote here?\n // If so, what should be the format, and how do we differentiate it from replies?\n\n var quote = _slate.Block.create('block-quote');\n if (_this4.state.isRichTextEnabled) {\n var change = editorState.change();\n var anchorText = editorState.anchorText;\n if ((!anchorText || anchorText.text === '') && editorState.anchorBlock.nodes.size === 1) {\n // replace the current block rather than split the block\n // XXX: this destroys our focus by deleting the thing we are anchored/focused on\n change = change.replaceNodeByKey(editorState.anchorBlock.key, quote);\n } else {\n // insert it into the middle of the block (splitting it)\n change = change.insertBlock(quote);\n }\n\n // XXX: heuristic to strip out wrapping <p> which breaks quoting in RT mode\n if (fragment.document.nodes.size && fragment.document.nodes.get(0).type === DEFAULT_NODE) {\n change = change.insertFragmentByKey(quote.key, 0, fragment.document.nodes.get(0));\n } else {\n change = change.insertFragmentByKey(quote.key, 0, fragment.document);\n }\n\n // XXX: this is to bring back the focus in a sane place and add a paragraph after it\n change = change.select(_slate.Range.create({\n anchor: {\n key: quote.key\n },\n focus: {\n key: quote.key\n }\n })).moveToEndOfBlock().insertBlock(_slate.Block.create(DEFAULT_NODE)).focus();\n\n _this4.onChange(change);\n } else {\n var fragmentChange = fragment.change();\n fragmentChange.moveToRangeOfNode(fragment.document).wrapBlock(quote);\n\n // FIXME: handle pills and use commonmark rather than md-serialize\n var md = _this4.md.serialize(fragmentChange.value);\n var _change = editorState.change().insertText(md + '\\n\\n').focus();\n _this4.onChange(_change);\n }\n }\n break;\n }\n };\n\n this.onChange = function (change, originalEditorState) {\n var editorState = change.value;\n\n if (_this4.direction !== '') {\n var focusedNode = editorState.focusInline || editorState.focusText;\n if (editorState.schema.isVoid(focusedNode)) {\n // XXX: does this work in RTL?\n var edge = _this4.direction === 'Previous' ? 'End' : 'Start';\n if (editorState.selection.isCollapsed) {\n change = change['moveTo' + edge + 'Of' + _this4.direction + 'Text']();\n } else {\n var block = _this4.direction === 'Previous' ? editorState.previousText : editorState.nextText;\n if (block) {\n change = change['moveFocusTo' + edge + 'OfNode'](block);\n }\n }\n editorState = change.value;\n }\n }\n\n // when in autocomplete mode and selection changes hide the autocomplete.\n // Selection changes when we enter text so use a heuristic to compare documents without doing it recursively\n if (_this4.autocomplete.state.completionList.length > 0 && !_this4.autocomplete.state.hide && !rangeEquals(_this4.state.editorState.selection, editorState.selection) &&\n // XXX: the heuristic failed when inlines like pills weren't taken into account. This is inideal\n _this4.state.editorState.document.toJSON() === editorState.document.toJSON()) {\n _this4.autocomplete.hide();\n }\n\n if (_slatePlainSerializer2.default.serialize(editorState) !== '') {\n _this4.onTypingActivity();\n } else {\n _this4.onFinishedTyping();\n }\n\n if (editorState.startText !== null) {\n var text = editorState.startText.text;\n var currentStartOffset = editorState.selection.start.offset;\n\n // Automatic replacement of plaintext emoji to Unicode emoji\n if (_SettingsStore2.default.getValue('MessageComposerInput.autoReplaceEmoji')) {\n // The first matched group includes just the matched plaintext emoji\n var emojiMatch = REGEX_EMOJI_WHITESPACE.exec(text.slice(0, currentStartOffset));\n if (emojiMatch) {\n // plaintext -> hex unicode\n var emojiUc = _emojione.asciiList[emojiMatch[1]];\n // hex unicode -> shortname -> actual unicode\n var unicodeEmoji = (0, _emojione.shortnameToUnicode)(EMOJI_UNICODE_TO_SHORTNAME[emojiUc]);\n\n var range = _slate.Range.create({\n anchor: {\n key: editorState.startText.key,\n offset: currentStartOffset - emojiMatch[1].length - 1\n },\n focus: {\n key: editorState.startText.key,\n offset: currentStartOffset - 1\n }\n });\n change = change.insertTextAtRange(range, unicodeEmoji);\n editorState = change.value;\n }\n }\n }\n\n // emojioneify any emoji\n editorState.document.getTexts().forEach(function (node) {\n if (node.text !== '' && HtmlUtils.containsEmoji(node.text)) {\n var match = void 0;\n while ((match = EMOJI_REGEX.exec(node.text)) !== null) {\n var _range = _slate.Range.create({\n anchor: {\n key: node.key,\n offset: match.index\n },\n focus: {\n key: node.key,\n offset: match.index + match[0].length\n }\n });\n var inline = _slate.Inline.create({\n type: 'emoji',\n data: { emojiUnicode: match[0] }\n });\n change = change.insertInlineAtRange(_range, inline);\n editorState = change.value;\n }\n }\n });\n\n // work around weird bug where inserting emoji via the macOS\n // emoji picker can leave the selection stuck in the emoji's\n // child text. This seems to happen due to selection getting\n // moved in the normalisation phase after calculating these changes\n if (editorState.selection.anchor.key && editorState.document.getParent(editorState.selection.anchor.key).type === 'emoji') {\n change = change.moveToStartOfNextText();\n editorState = change.value;\n }\n\n if (_this4.props.onInputStateChanged && editorState.blocks.size > 0) {\n var blockType = editorState.blocks.first().type;\n // console.log(\"onInputStateChanged; current block type is \" + blockType + \" and marks are \" + editorState.activeMarks);\n\n if (blockType === 'list-item') {\n var parent = editorState.document.getParent(editorState.blocks.first().key);\n if (parent.type === 'numbered-list') {\n blockType = 'numbered-list';\n } else if (parent.type === 'bulleted-list') {\n blockType = 'bulleted-list';\n }\n }\n var inputState = {\n marks: editorState.activeMarks,\n isRichTextEnabled: _this4.state.isRichTextEnabled,\n blockType: blockType\n };\n _this4.props.onInputStateChanged(inputState);\n }\n\n // Record the editor state for this room so that it can be retrieved after switching to another room and back\n _MessageComposerStore2.default.setEditorState(_this4.props.room.roomId, editorState, _this4.state.isRichTextEnabled);\n\n _this4.setState({\n editorState: editorState,\n originalEditorState: originalEditorState || null\n });\n };\n\n this.hasMark = function (type) {\n var editorState = _this4.state.editorState;\n\n return editorState.activeMarks.some(function (mark) {\n return mark.type === type;\n });\n };\n\n this.hasBlock = function (type) {\n var editorState = _this4.state.editorState;\n\n return editorState.blocks.some(function (node) {\n return node.type === type;\n });\n };\n\n this.onKeyDown = function (ev, change, editor) {\n _this4.suppressAutoComplete = false;\n\n // skip void nodes - see\n // https://github.com/ianstormtaylor/slate/issues/762#issuecomment-304855095\n if (ev.keyCode === _Keyboard.KeyCode.LEFT) {\n _this4.direction = 'Previous';\n } else if (ev.keyCode === _Keyboard.KeyCode.RIGHT) {\n _this4.direction = 'Next';\n } else {\n _this4.direction = '';\n }\n\n switch (ev.keyCode) {\n case _Keyboard.KeyCode.ENTER:\n return _this4.handleReturn(ev, change);\n case _Keyboard.KeyCode.BACKSPACE:\n return _this4.onBackspace(ev, change);\n case _Keyboard.KeyCode.UP:\n return _this4.onVerticalArrow(ev, true);\n case _Keyboard.KeyCode.DOWN:\n return _this4.onVerticalArrow(ev, false);\n case _Keyboard.KeyCode.TAB:\n return _this4.onTab(ev);\n case _Keyboard.KeyCode.ESCAPE:\n return _this4.onEscape(ev);\n case _Keyboard.KeyCode.SPACE:\n return _this4.onSpace(ev, change);\n }\n\n if ((0, _Keyboard.isOnlyCtrlOrCmdKeyEvent)(ev)) {\n var _KeyCode$KEY_M$KeyCod;\n\n var ctrlCmdCommand = (_KeyCode$KEY_M$KeyCod = {}, (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_M, 'toggle-mode'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_B, 'bold'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_I, 'italic'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_U, 'underlined'), (0, _defineProperty3.default)(_KeyCode$KEY_M$KeyCod, _Keyboard.KeyCode.KEY_J, 'inline-code'), _KeyCode$KEY_M$KeyCod)[ev.keyCode];\n\n if (ctrlCmdCommand) {\n ev.preventDefault(); // to prevent clashing with Mac's minimize window\n return _this4.handleKeyCommand(ctrlCmdCommand);\n }\n }\n };\n\n this.onSpace = function (ev, change) {\n if (ev.metaKey || ev.altKey || ev.shiftKey || ev.ctrlKey) {\n return;\n }\n\n // drop a point in history so the user can undo a word\n // XXX: this seems nasty but adding to history manually seems a no-go\n ev.preventDefault();\n return change.withoutMerging(function () {\n change.insertText(ev.key);\n });\n };\n\n this.onBackspace = function (ev, change) {\n if (ev.metaKey || ev.altKey || ev.shiftKey) {\n return;\n }\n\n var editorState = _this4.state.editorState;\n\n // Allow Ctrl/Cmd-Backspace when focus starts at the start of the composer (e.g select-all)\n // for some reason if slate sees you Ctrl-backspace and your anchor.offset=0 it just resets your focus\n // XXX: Doing this now seems to put slate into a broken state, and it didn't appear to be doing\n // what it claims to do on the old version of slate anyway...\n /*if (!editorState.isCollapsed && editorState.selection.anchor.offset === 0) {\n return change.delete();\n }*/\n\n if (_this4.state.isRichTextEnabled) {\n // let backspace exit lists\n var isList = _this4.hasBlock('list-item');\n\n if (isList && editorState.selection.anchor.offset == 0) {\n change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n return change;\n } else if (editorState.selection.anchor.offset == 0 && editorState.isCollapsed) {\n // turn blocks back into paragraphs\n if (_this4.hasBlock('block-quote') || _this4.hasBlock('heading1') || _this4.hasBlock('heading2') || _this4.hasBlock('heading3') || _this4.hasBlock('heading4') || _this4.hasBlock('heading5') || _this4.hasBlock('heading6') || _this4.hasBlock('code')) {\n return change.setBlocks(DEFAULT_NODE);\n }\n\n // remove paragraphs entirely if they're nested\n var parent = editorState.document.getParent(editorState.anchorBlock.key);\n if (editorState.selection.anchor.offset == 0 && _this4.hasBlock('paragraph') && parent.nodes.size == 1 && parent.object !== 'document') {\n return change.replaceNodeByKey(editorState.anchorBlock.key, editorState.anchorText).moveToEndOfNode(parent).focus();\n }\n }\n }\n return;\n };\n\n this.handleKeyCommand = function (command) {\n if (command === 'toggle-mode') {\n _this4.enableRichtext(!_this4.state.isRichTextEnabled);\n return true;\n }\n\n var newState = null;\n\n // Draft handles rich text mode commands by default but we need to do it ourselves for Markdown.\n if (_this4.state.isRichTextEnabled) {\n var type = command;\n var editorState = _this4.state.editorState;\n\n var change = editorState.change();\n var _document = editorState.document;\n\n switch (type) {\n // list-blocks:\n case 'bulleted-list':\n case 'numbered-list':\n {\n // Handle the extra wrapping required for list buttons.\n var isList = _this4.hasBlock('list-item');\n var isType = editorState.blocks.some(function (block) {\n return !!_document.getClosest(block.key, function (parent) {\n return parent.type === type;\n });\n });\n\n if (isList && isType) {\n change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n } else if (isList) {\n change.unwrapBlock(type === 'bulleted-list' ? 'numbered-list' : 'bulleted-list').wrapBlock(type);\n } else {\n change.setBlocks('list-item').wrapBlock(type);\n }\n }\n break;\n\n // simple blocks\n case 'paragraph':\n case 'block-quote':\n case 'heading1':\n case 'heading2':\n case 'heading3':\n case 'heading4':\n case 'heading5':\n case 'heading6':\n case 'list-item':\n case 'code':\n {\n var isActive = _this4.hasBlock(type);\n var _isList = _this4.hasBlock('list-item');\n\n if (_isList) {\n change.setBlocks(isActive ? DEFAULT_NODE : type).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n } else {\n change.setBlocks(isActive ? DEFAULT_NODE : type);\n }\n }\n break;\n\n // marks:\n case 'bold':\n case 'italic':\n case 'inline-code':\n case 'underlined':\n case 'deleted':\n {\n change.toggleMark(type === 'inline-code' ? 'code' : type);\n }\n break;\n\n default:\n console.warn('ignoring unrecognised RTE command ' + type);\n return false;\n }\n\n _this4.onChange(change);\n\n return true;\n } else {\n /*\n const contentState = this.state.editorState.getCurrentContent();\n const multipleLinesSelected = RichText.hasMultiLineSelection(this.state.editorState);\n \n const selectionState = this.state.editorState.getSelection();\n const start = selectionState.getStartOffset();\n const end = selectionState.getEndOffset();\n \n // If multiple lines are selected or nothing is selected, insert a code block\n // instead of applying inline code formatting. This is an attempt to mimic what\n // happens in non-MD mode.\n const treatInlineCodeAsBlock = multipleLinesSelected || start === end;\n const textMdCodeBlock = (text) => `\\`\\`\\`\\n${text}\\n\\`\\`\\`\\n`;\n const modifyFn = {\n 'bold': (text) => `**${text}**`,\n 'italic': (text) => `*${text}*`,\n 'underline': (text) => `<u>${text}</u>`,\n 'strike': (text) => `<del>${text}</del>`,\n // (\"code\" is triggered by ctrl+j by draft-js by default)\n 'code': (text) => treatInlineCodeAsBlock ? textMdCodeBlock(text) : `\\`${text}\\``,\n 'code': textMdCodeBlock,\n 'blockquote': (text) => text.split('\\n').map((line) => `> ${line}\\n`).join('') + '\\n',\n 'unordered-list-item': (text) => text.split('\\n').map((line) => `\\n- ${line}`).join(''),\n 'ordered-list-item': (text) => text.split('\\n').map((line, i) => `\\n${i + 1}. ${line}`).join(''),\n }[command];\n \n const selectionAfterOffset = {\n 'bold': -2,\n 'italic': -1,\n 'underline': -4,\n 'strike': -6,\n 'code': treatInlineCodeAsBlock ? -5 : -1,\n 'code': -5,\n 'blockquote': -2,\n }[command];\n \n // Returns a function that collapses a selection to its end and moves it by offset\n const collapseAndOffsetSelection = (selection, offset) => {\n const key = selection.endKey();\n return new Range({\n anchorKey: key, anchor.offset: offset,\n focus.key: key, focus.offset: offset,\n });\n };\n \n if (modifyFn) {\n \n const previousSelection = this.state.editorState.getSelection();\n const newContentState = RichText.modifyText(contentState, previousSelection, modifyFn);\n newState = EditorState.push(\n this.state.editorState,\n newContentState,\n 'insert-characters',\n );\n \n let newSelection = newContentState.getSelectionAfter();\n // If the selection range is 0, move the cursor inside the formatted body\n if (previousSelection.getStartOffset() === previousSelection.getEndOffset() &&\n previousSelection.getStartKey() === previousSelection.getEndKey() &&\n selectionAfterOffset !== undefined\n ) {\n const selectedBlock = newContentState.getBlockForKey(previousSelection.getAnchorKey());\n const blockLength = selectedBlock.getText().length;\n const newOffset = blockLength + selectionAfterOffset;\n newSelection = collapseAndOffsetSelection(newSelection, newOffset);\n }\n \n newState = EditorState.forceSelection(newState, newSelection);\n }\n }\n \n if (newState != null) {\n this.setState({editorState: newState});\n return true;\n }\n */\n }\n return false;\n };\n\n this.onPaste = function (event, change, editor) {\n var transfer = (0, _slateReact.getEventTransfer)(event);\n\n switch (transfer.type) {\n case 'files':\n return _this4.props.onFilesPasted(transfer.files);\n case 'html':\n {\n if (_this4.state.isRichTextEnabled) {\n // FIXME: https://github.com/ianstormtaylor/slate/issues/1497 means\n // that we will silently discard nested blocks (e.g. nested lists) :(\n var fragment = _this4.html.deserialize(transfer.html);\n return change\n // XXX: this somehow makes Slate barf on undo and get too empty and break entirely\n // .setOperationFlag(\"skip\", false)\n // .setOperationFlag(\"merge\", false)\n .insertFragment(fragment.document);\n } else {\n // in MD mode we don't want the rich content pasted as the magic was annoying people so paste plain\n return change.withoutMerging(function () {\n change.insertText(transfer.text);\n });\n }\n }\n case 'text':\n // don't skip/merge so that multiple consecutive pastes can be undone individually\n return change.withoutMerging(function () {\n change.insertText(transfer.text);\n });\n }\n };\n\n this.handleReturn = function (ev, change) {\n if (ev.shiftKey) {\n return change.insertText('\\n');\n }\n\n var editorState = _this4.state.editorState;\n\n var lastBlock = editorState.blocks.last();\n if (['code', 'block-quote', 'list-item'].includes(lastBlock.type)) {\n var text = lastBlock.text;\n if (text === '') {\n // allow the user to cancel empty block by hitting return, useful in conjunction with below `inBlock`\n return change.setBlocks(DEFAULT_NODE).unwrapBlock('bulleted-list').unwrapBlock('numbered-list');\n }\n\n // TODO strip trailing lines from blockquotes/list entries\n // the below code seemingly works but doesn't account for edge cases like return with caret not at end\n /* const trailingNewlines = text.match(/\\n*$/);\n if (trailingNewlines && trailingNewlines[0]) {\n remove trailing newlines at the end of this block before making a new one\n return change.deleteBackward(trailingNewlines[0].length);\n }*/\n\n return;\n }\n\n var contentText = void 0;\n var contentHTML = void 0;\n\n // only look for commands if the first block contains simple unformatted text\n // i.e. no pills or rich-text formatting and begins with a /.\n var cmd = void 0,\n commandText = void 0;\n var firstChild = editorState.document.nodes.get(0);\n var firstGrandChild = firstChild && firstChild.nodes.get(0);\n if (firstChild && firstGrandChild && firstChild.object === 'block' && firstGrandChild.object === 'text' && firstGrandChild.text[0] === '/') {\n commandText = _this4.plainWithIdPills.serialize(editorState);\n cmd = (0, _SlashCommands.processCommandInput)(_this4.props.room.roomId, commandText);\n }\n\n if (cmd) {\n if (!cmd.error) {\n _this4.historyManager.save(editorState, _this4.state.isRichTextEnabled ? 'rich' : 'markdown');\n _this4.setState({\n editorState: _this4.createEditorState()\n }, function () {\n _this4._editor.focus();\n });\n }\n if (cmd.promise) {\n cmd.promise.then(function () {\n console.log(\"Command success.\");\n }, function (err) {\n console.error(\"Command failure: %s\", err);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Server error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Server error\"),\n description: err && err.message ? err.message : (0, _languageHandler._t)(\"Server unavailable, overloaded, or something else went wrong.\")\n });\n });\n } else if (cmd.error) {\n console.error(cmd.error);\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n // TODO possibly track which command they ran (not its Arguments) here\n _Modal2.default.createTrackedDialog('Command error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Command error\"),\n description: cmd.error\n });\n }\n return true;\n }\n\n var replyingToEv = _RoomViewStore2.default.getQuotingEvent();\n var mustSendHTML = Boolean(replyingToEv);\n\n if (_this4.state.isRichTextEnabled) {\n // We should only send HTML if any block is styled or contains inline style\n var shouldSendHTML = false;\n\n if (mustSendHTML) shouldSendHTML = true;\n\n if (!shouldSendHTML) {\n shouldSendHTML = !!editorState.document.findDescendant(function (node) {\n // N.B. node.getMarks() might be private?\n return node.object === 'block' && node.type !== 'paragraph' || node.object === 'inline' || node.object === 'text' && node.getMarks().size > 0;\n });\n }\n\n contentText = _this4.plainWithPlainPills.serialize(editorState);\n if (contentText === '') return true;\n\n if (shouldSendHTML) {\n contentHTML = HtmlUtils.processHtmlForSending(_this4.html.serialize(editorState));\n }\n } else {\n var sourceWithPills = _this4.plainWithMdPills.serialize(editorState);\n if (sourceWithPills === '') return true;\n\n var mdWithPills = new _Markdown2.default(sourceWithPills);\n\n // if contains no HTML and we're not quoting (needing HTML)\n if (mdWithPills.isPlainText() && !mustSendHTML) {\n // N.B. toPlainText is only usable here because we know that the MD\n // didn't contain any formatting in the first place...\n contentText = mdWithPills.toPlaintext();\n } else {\n // to avoid ugliness on clients which ignore the HTML body we don't\n // send pills in the plaintext body.\n contentText = _this4.plainWithPlainPills.serialize(editorState);\n contentHTML = mdWithPills.toHTML();\n }\n }\n\n var sendHtmlFn = _matrixJsSdk.ContentHelpers.makeHtmlMessage;\n var sendTextFn = _matrixJsSdk.ContentHelpers.makeTextMessage;\n\n _this4.historyManager.save(editorState, _this4.state.isRichTextEnabled ? 'rich' : 'markdown');\n\n if (commandText && commandText.startsWith('/me')) {\n if (replyingToEv) {\n var _ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Emote Reply Fail', '', _ErrorDialog, {\n title: (0, _languageHandler._t)(\"Unable to reply\"),\n description: (0, _languageHandler._t)(\"At this time it is not possible to reply with an emote.\")\n });\n return false;\n }\n\n contentText = contentText.substring(4);\n // bit of a hack, but the alternative would be quite complicated\n if (contentHTML) contentHTML = contentHTML.replace(/\\/me ?/, '');\n sendHtmlFn = _matrixJsSdk.ContentHelpers.makeHtmlEmote;\n sendTextFn = _matrixJsSdk.ContentHelpers.makeEmoteMessage;\n }\n\n var content = contentHTML ? sendHtmlFn(contentText, contentHTML) : sendTextFn(contentText);\n\n if (replyingToEv) {\n var replyContent = _ReplyThread2.default.makeReplyMixIn(replyingToEv);\n content = (0, _assign2.default)(replyContent, content);\n\n // Part of Replies fallback support - prepend the text we're sending\n // with the text we're replying to\n var nestedReply = _ReplyThread2.default.getNestedReplyText(replyingToEv);\n if (nestedReply) {\n if (content.formatted_body) {\n content.formatted_body = nestedReply.html + content.formatted_body;\n }\n content.body = nestedReply.body + content.body;\n }\n\n // Clear reply_to_event as we put the message into the queue\n // if the send fails, retry will handle resending.\n _dispatcher2.default.dispatch({\n action: 'reply_to_event',\n event: null\n });\n }\n\n _this4.client.sendMessage(_this4.props.room.roomId, content).then(function (res) {\n _dispatcher2.default.dispatch({\n action: 'message_sent'\n });\n }).catch(function (e) {\n onSendMessageFailed(e, _this4.props.room);\n });\n\n _this4.setState({\n editorState: _this4.createEditorState()\n }, function () {\n _this4._editor.focus();\n });\n\n return true;\n };\n\n this.onVerticalArrow = function (e, up) {\n if (e.ctrlKey || e.shiftKey || e.altKey || e.metaKey) {\n return;\n }\n\n // Select history only if we are not currently auto-completing\n if (_this4.autocomplete.state.completionList.length === 0) {\n var selection = _this4.state.editorState.selection;\n\n // selection must be collapsed\n if (!selection.isCollapsed) return;\n var _document2 = _this4.state.editorState.document;\n\n // and we must be at the edge of the document (up=start, down=end)\n if (up) {\n if (!selection.anchor.isAtStartOfNode(_document2)) return;\n } else {\n if (!selection.anchor.isAtEndOfNode(_document2)) return;\n }\n\n var selected = _this4.selectHistory(up);\n if (selected) {\n // We're selecting history, so prevent the key event from doing anything else\n e.preventDefault();\n }\n } else {\n _this4.moveAutocompleteSelection(up);\n e.preventDefault();\n }\n };\n\n this.selectHistory = function () {\n var _ref = (0, _bluebird.method)(function (up) {\n var delta = up ? -1 : 1;\n\n // True if we are not currently selecting history, but composing a message\n if (_this4.historyManager.currentIndex === _this4.historyManager.history.length) {\n // We can't go any further - there isn't any more history, so nop.\n if (!up) {\n return;\n }\n _this4.setState({\n currentlyComposedEditorState: _this4.state.editorState\n });\n } else if (_this4.historyManager.currentIndex + delta === _this4.historyManager.history.length) {\n // True when we return to the message being composed currently\n _this4.setState({\n editorState: _this4.state.currentlyComposedEditorState\n });\n _this4.historyManager.currentIndex = _this4.historyManager.history.length;\n return;\n }\n\n var editorState = void 0;\n var historyItem = _this4.historyManager.getItem(delta);\n if (!historyItem) return;\n\n if (historyItem.format === 'rich' && !_this4.state.isRichTextEnabled) {\n editorState = _this4.richToMdEditorState(historyItem.value);\n } else if (historyItem.format === 'markdown' && _this4.state.isRichTextEnabled) {\n editorState = _this4.mdToRichEditorState(historyItem.value);\n } else {\n editorState = historyItem.value;\n }\n\n // Move selection to the end of the selected history\n var change = editorState.change().moveToEndOfNode(editorState.document);\n\n // We don't call this.onChange(change) now, as fixups on stuff like emoji\n // should already have been done and persisted in the history.\n editorState = change.value;\n\n _this4.suppressAutoComplete = true;\n\n _this4.setState({ editorState: editorState }, function () {\n _this4._editor.focus();\n });\n return true;\n });\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }();\n\n this.onTab = function () {\n var _ref2 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(e) {\n var completionCount;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _this4.setState({\n someCompletions: null\n });\n e.preventDefault();\n\n if (!(_this4.autocomplete.state.completionList.length === 0)) {\n _context.next = 11;\n break;\n }\n\n _context.next = 5;\n return (0, _bluebird.resolve)(_this4.autocomplete.forceComplete());\n\n case 5:\n completionCount = _context.sent;\n\n _this4.setState({\n someCompletions: completionCount > 0\n });\n // Select the first item by moving \"down\"\n _context.next = 9;\n return (0, _bluebird.resolve)(_this4.moveAutocompleteSelection(false));\n\n case 9:\n _context.next = 13;\n break;\n\n case 11:\n _context.next = 13;\n return (0, _bluebird.resolve)(_this4.moveAutocompleteSelection(e.shiftKey));\n\n case 13:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, _this4);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }();\n\n this.moveAutocompleteSelection = function (up) {\n up ? _this4.autocomplete.onUpArrow() : _this4.autocomplete.onDownArrow();\n };\n\n this.onEscape = function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(e) {\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n e.preventDefault();\n if (_this4.autocomplete) {\n _this4.autocomplete.onEscape(e);\n }\n _context2.next = 4;\n return (0, _bluebird.resolve)(_this4.setDisplayedCompletion(null));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this4);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }();\n\n this.onAutocompleteConfirm = function (displayedCompletion) {\n _this4.focusComposer();\n // XXX: this fails if the composer isn't focused so focus it and delay the completion until next tick\n (0, _setImmediate3.default)(function () {\n _this4.setDisplayedCompletion(displayedCompletion);\n });\n };\n\n this.setDisplayedCompletion = function () {\n var _ref4 = (0, _bluebird.method)(function (displayedCompletion) {\n var activeEditorState = _this4.state.originalEditorState || _this4.state.editorState;\n\n if (displayedCompletion == null) {\n if (_this4.state.originalEditorState) {\n var _editorState = _this4.state.originalEditorState;\n _this4.setState({ editorState: _editorState });\n }\n return false;\n }\n\n var _displayedCompletion$ = displayedCompletion.range,\n range = _displayedCompletion$ === undefined ? null : _displayedCompletion$,\n _displayedCompletion$2 = displayedCompletion.completion,\n completion = _displayedCompletion$2 === undefined ? '' : _displayedCompletion$2,\n _displayedCompletion$3 = displayedCompletion.completionId,\n completionId = _displayedCompletion$3 === undefined ? '' : _displayedCompletion$3,\n _displayedCompletion$4 = displayedCompletion.href,\n href = _displayedCompletion$4 === undefined ? null : _displayedCompletion$4,\n _displayedCompletion$5 = displayedCompletion.suffix,\n suffix = _displayedCompletion$5 === undefined ? '' : _displayedCompletion$5;\n\n\n var inline = void 0;\n if (href) {\n inline = _slate.Inline.create({\n type: 'pill',\n data: { completion: completion, completionId: completionId, href: href }\n });\n } else if (completion === '@room') {\n inline = _slate.Inline.create({\n type: 'pill',\n data: { completion: completion, completionId: completionId }\n });\n }\n\n var editorState = activeEditorState;\n\n if (range) {\n var _change2 = editorState.change().moveToAnchor().moveAnchorTo(range.start).moveFocusTo(range.end).focus();\n editorState = _change2.value;\n }\n\n var change = void 0;\n if (inline) {\n change = editorState.change().insertInlineAtRange(editorState.selection, inline).insertText(suffix).focus();\n } else {\n change = editorState.change().insertTextAtRange(editorState.selection, completion).insertText(suffix).focus();\n }\n // for good hygiene, keep editorState updated to track the result of the change\n // even though we don't do anything subsequently with it\n editorState = change.value;\n\n _this4.onChange(change, activeEditorState);\n\n return true;\n });\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n this.renderNode = function (props) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node,\n isSelected = props.isSelected;\n\n\n switch (node.type) {\n case 'paragraph':\n return _react2.default.createElement(\n 'p',\n attributes,\n children\n );\n case 'block-quote':\n return _react2.default.createElement(\n 'blockquote',\n attributes,\n children\n );\n case 'bulleted-list':\n return _react2.default.createElement(\n 'ul',\n attributes,\n children\n );\n case 'heading1':\n return _react2.default.createElement(\n 'h1',\n attributes,\n children\n );\n case 'heading2':\n return _react2.default.createElement(\n 'h2',\n attributes,\n children\n );\n case 'heading3':\n return _react2.default.createElement(\n 'h3',\n attributes,\n children\n );\n case 'heading4':\n return _react2.default.createElement(\n 'h4',\n attributes,\n children\n );\n case 'heading5':\n return _react2.default.createElement(\n 'h5',\n attributes,\n children\n );\n case 'heading6':\n return _react2.default.createElement(\n 'h6',\n attributes,\n children\n );\n case 'list-item':\n return _react2.default.createElement(\n 'li',\n attributes,\n children\n );\n case 'numbered-list':\n return _react2.default.createElement(\n 'ol',\n attributes,\n children\n );\n case 'code':\n return _react2.default.createElement(\n 'pre',\n attributes,\n children\n );\n case 'link':\n return _react2.default.createElement(\n 'a',\n (0, _extends3.default)({}, attributes, { href: node.data.get('href') }),\n children\n );\n case 'pill':\n {\n var data = node.data;\n\n var url = data.get('href');\n var completion = data.get('completion');\n\n var shouldShowPillAvatar = !_SettingsStore2.default.getValue(\"Pill.shouldHidePillAvatar\");\n var Pill = _index2.default.getComponent('elements.Pill');\n\n if (completion === '@room') {\n return _react2.default.createElement(Pill, (0, _extends3.default)({\n type: Pill.TYPE_AT_ROOM_MENTION,\n room: _this4.props.room,\n shouldShowPillAvatar: shouldShowPillAvatar,\n isSelected: isSelected\n }, attributes));\n } else if (Pill.isPillUrl(url)) {\n return _react2.default.createElement(Pill, (0, _extends3.default)({\n url: url,\n room: _this4.props.room,\n shouldShowPillAvatar: shouldShowPillAvatar,\n isSelected: isSelected\n }, attributes));\n } else {\n var text = node.text;\n\n return _react2.default.createElement(\n 'a',\n (0, _extends3.default)({ href: url }, props.attributes),\n text\n );\n }\n }\n case 'emoji':\n {\n var _data = node.data;\n\n var emojiUnicode = _data.get('emojiUnicode');\n var uri = RichText.unicodeToEmojiUri(emojiUnicode);\n var shortname = (0, _emojione.toShort)(emojiUnicode);\n var className = (0, _classnames2.default)('mx_emojione', {\n mx_emojione_selected: isSelected\n });\n var style = {};\n if (props.selected) style.border = '1px solid blue';\n return _react2.default.createElement('img', { className: className, src: uri, title: shortname, alt: emojiUnicode, style: style });\n }\n }\n };\n\n this.renderMark = function (props) {\n var children = props.children,\n mark = props.mark,\n attributes = props.attributes;\n\n switch (mark.type) {\n case 'bold':\n return _react2.default.createElement(\n 'strong',\n attributes,\n children\n );\n case 'italic':\n return _react2.default.createElement(\n 'em',\n attributes,\n children\n );\n case 'code':\n return _react2.default.createElement(\n 'code',\n attributes,\n children\n );\n case 'underlined':\n return _react2.default.createElement(\n 'u',\n attributes,\n children\n );\n case 'deleted':\n return _react2.default.createElement(\n 'del',\n attributes,\n children\n );\n }\n };\n\n this.onFormatButtonClicked = function (name, e) {\n e.preventDefault();\n\n // XXX: horrible evil hack to ensure the editor is focused so the act\n // of focusing it doesn't then cancel the format button being pressed\n // FIXME: can we just tell handleKeyCommand's change to invoke .focus()?\n if (document.activeElement && document.activeElement.className !== 'mx_MessageComposer_editor') {\n _this4._editor.focus();\n setTimeout(function () {\n _this4.handleKeyCommand(name);\n }, 500); // can't find any callback to hook this to. onFocus and onChange and willComponentUpdate fire too early.\n return;\n }\n\n _this4.handleKeyCommand(name);\n };\n\n this.onMarkdownToggleClicked = function (e) {\n e.preventDefault(); // don't steal focus from the editor!\n _this4.handleKeyCommand('toggle-mode');\n };\n\n this.focusComposer = function () {\n _this4._editor.focus();\n };\n};\n\nexports.default = MessageComposerInput;\nmodule.exports = exports['default'];\n//# sourceMappingURL=MessageComposerInput.js.map","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\-?\\d?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/*!\n * isobject <https://github.com/jonschlinkert/isobject>\n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function isObject(val) {\n return val != null && typeof val === 'object' && Array.isArray(val) === false;\n};\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n\n return result;\n }\n\n if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n\n return result;\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var castPath = require('./_castPath'),\n last = require('./last'),\n parent = require('./_parent'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n}\n\nmodule.exports = baseUnset;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseGet = require('./_baseGet'),\n baseSlice = require('./_baseSlice');\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\nmodule.exports = parent;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","\"use strict\";\n\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\nfunction setup(env) {\n createDebug.debug = createDebug;\n createDebug.default = createDebug;\n createDebug.coerce = coerce;\n createDebug.disable = disable;\n createDebug.enable = enable;\n createDebug.enabled = enabled;\n createDebug.humanize = require('ms');\n Object.keys(env).forEach(function (key) {\n createDebug[key] = env[key];\n });\n /**\n * Active `debug` instances.\n */\n\n createDebug.instances = [];\n /**\n * The currently active debug mode names, and names to skip.\n */\n\n createDebug.names = [];\n createDebug.skips = [];\n /**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\n createDebug.formatters = {};\n /**\n * Selects a color for a debug namespace\n * @param {String} namespace The namespace string for the for the debug instance to be colored\n * @return {Number|String} An ANSI color code for the given namespace\n * @api private\n */\n\n function selectColor(namespace) {\n var hash = 0;\n\n for (var i = 0; i < namespace.length; i++) {\n hash = (hash << 5) - hash + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n }\n\n createDebug.selectColor = selectColor;\n /**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\n function createDebug(namespace) {\n var prevTime;\n\n function debug() {\n // Disabled?\n if (!debug.enabled) {\n return;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var self = debug; // Set `diff` timestamp\n\n var curr = Number(new Date());\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n args[0] = createDebug.coerce(args[0]);\n\n if (typeof args[0] !== 'string') {\n // Anything else let's inspect with %O\n args.unshift('%O');\n } // Apply any `formatters` transformations\n\n\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {\n // If we encounter an escaped % then don't increase the array index\n if (match === '%%') {\n return match;\n }\n\n index++;\n var formatter = createDebug.formatters[format];\n\n if (typeof formatter === 'function') {\n var val = args[index];\n match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format`\n\n args.splice(index, 1);\n index--;\n }\n\n return match;\n }); // Apply env-specific formatting (colors, etc.)\n\n createDebug.formatArgs.call(self, args);\n var logFn = self.log || createDebug.log;\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = createDebug.enabled(namespace);\n debug.useColors = createDebug.useColors();\n debug.color = selectColor(namespace);\n debug.destroy = destroy;\n debug.extend = extend; // Debug.formatArgs = formatArgs;\n // debug.rawLog = rawLog;\n // env-specific initialization logic for debug instances\n\n if (typeof createDebug.init === 'function') {\n createDebug.init(debug);\n }\n\n createDebug.instances.push(debug);\n return debug;\n }\n\n function destroy() {\n var index = createDebug.instances.indexOf(this);\n\n if (index !== -1) {\n createDebug.instances.splice(index, 1);\n return true;\n }\n\n return false;\n }\n\n function extend(namespace, delimiter) {\n return createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n }\n /**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\n\n function enable(namespaces) {\n createDebug.save(namespaces);\n createDebug.names = [];\n createDebug.skips = [];\n var i;\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (i = 0; i < len; i++) {\n if (!split[i]) {\n // ignore empty strings\n continue;\n }\n\n namespaces = split[i].replace(/\\*/g, '.*?');\n\n if (namespaces[0] === '-') {\n createDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n createDebug.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n\n for (i = 0; i < createDebug.instances.length; i++) {\n var instance = createDebug.instances[i];\n instance.enabled = createDebug.enabled(instance.namespace);\n }\n }\n /**\n * Disable debug output.\n *\n * @api public\n */\n\n\n function disable() {\n createDebug.enable('');\n }\n /**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\n\n function enabled(name) {\n if (name[name.length - 1] === '*') {\n return true;\n }\n\n var i;\n var len;\n\n for (i = 0, len = createDebug.skips.length; i < len; i++) {\n if (createDebug.skips[i].test(name)) {\n return false;\n }\n }\n\n for (i = 0, len = createDebug.names.length; i < len; i++) {\n if (createDebug.names[i].test(name)) {\n return true;\n }\n }\n\n return false;\n }\n /**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\n\n function coerce(val) {\n if (val instanceof Error) {\n return val.stack || val.message;\n }\n\n return val;\n }\n\n createDebug.enable(createDebug.load());\n return createDebug;\n}\n\nmodule.exports = setup;\n\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\-?\\d?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * Module exports.\n */\n\nmodule.exports = getDocument;\n\n// defined by w3c\nvar DOCUMENT_NODE = 9;\n\n/**\n * Returns `true` if `w` is a Document object, or `false` otherwise.\n *\n * @param {?} d - Document object, maybe\n * @return {Boolean}\n * @private\n */\n\nfunction isDocument (d) {\n return d && d.nodeType === DOCUMENT_NODE;\n}\n\n/**\n * Returns the `document` object associated with the given `node`, which may be\n * a DOM element, the Window object, a Selection, a Range. Basically any DOM\n * object that references the Document in some way, this function will find it.\n *\n * @param {Mixed} node - DOM node, selection, or range in which to find the `document` object\n * @return {Document} the `document` object associated with `node`\n * @public\n */\n\nfunction getDocument(node) {\n if (isDocument(node)) {\n return node;\n\n } else if (isDocument(node.ownerDocument)) {\n return node.ownerDocument;\n\n } else if (isDocument(node.document)) {\n return node.document;\n\n } else if (node.parentNode) {\n return getDocument(node.parentNode);\n\n // Range support\n } else if (node.commonAncestorContainer) {\n return getDocument(node.commonAncestorContainer);\n\n } else if (node.startContainer) {\n return getDocument(node.startContainer);\n\n // Selection support\n } else if (node.anchorNode) {\n return getDocument(node.anchorNode);\n }\n}\n","// this is a browser-only module. There is a non-browser equivalent in the same\n// directory. This is done using a `package.json` browser field.\n// old-IE fallback logic: http://stackoverflow.com/a/10260692\nmodule.exports = !!document.attachEvent && window !== document.parentWindow;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","import React from 'react';\nimport { renderToStaticMarkup } from 'react-dom/server';\nimport typeOf from 'type-of';\nimport { Node, Value } from 'slate';\nimport { Record } from 'immutable';\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * String.\n *\n * @type {String}\n */\n\nvar String = new Record({\n object: 'string',\n text: ''\n});\n\n/**\n * A rule to (de)serialize text nodes. This is automatically added to the HTML\n * serializer so that users don't have to worry about text-level serialization.\n *\n * @type {Object}\n */\n\nvar TEXT_RULE = {\n deserialize: function deserialize(el) {\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '\\n'\n }]\n };\n }\n\n if (el.nodeName == '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n return {\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: el.nodeValue\n }]\n };\n }\n },\n serialize: function serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce(function (array, text, i) {\n if (i != 0) array.push(React.createElement('br', { key: i }));\n array.push(text);\n return array;\n }, []);\n }\n }\n};\n\n/**\n * A default `parseHtml` function that returns the `<body>` using `DOMParser`.\n *\n * @param {String} html\n * @return {Object}\n */\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');\n }\n\n var parsed = new DOMParser().parseFromString(html, 'text/html');\n var body = parsed.body;\n // COMPAT: in IE 11 body is null if html is an empty string\n\n return body || window.document.createElement('body');\n}\n\n/**\n * HTML serializer.\n *\n * @type {Html}\n */\n\nvar Html =\n/**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n * @property {Array} rules\n * @property {String|Object|Block} defaultBlock\n * @property {Function} parseHtml\n */\n\nfunction Html() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Html);\n\n _initialiseProps.call(this);\n\n var _options$defaultBlock = options.defaultBlock,\n defaultBlock = _options$defaultBlock === undefined ? 'paragraph' : _options$defaultBlock,\n _options$parseHtml = options.parseHtml,\n parseHtml = _options$parseHtml === undefined ? defaultParseHtml : _options$parseHtml,\n _options$rules = options.rules,\n rules = _options$rules === undefined ? [] : _options$rules;\n\n\n defaultBlock = Node.createProperties(defaultBlock);\n\n this.rules = [].concat(toConsumableArray(rules), [TEXT_RULE]);\n this.defaultBlock = defaultBlock;\n this.parseHtml = parseHtml;\n};\n\n/**\n * Add a unique key to a React `element`.\n *\n * @param {Element} element\n * @return {Element}\n */\n\nvar _initialiseProps = function _initialiseProps() {\n var _this = this;\n\n this.deserialize = function (html) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$toJSON = options.toJSON,\n toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n var defaultBlock = _this.defaultBlock,\n parseHtml = _this.parseHtml;\n\n var fragment = parseHtml(html);\n var children = Array.from(fragment.childNodes);\n var nodes = _this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function (memo, node, i, original) {\n if (node.object == 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object != 'block') {\n var _block = memo[memo.length - 1];\n _block.nodes.push(node);\n return memo;\n }\n\n var block = _extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [node]\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n // TODO: pretty sure this is no longer needed.\n if (nodes.length == 0) {\n nodes = [_extends({\n object: 'block',\n data: {},\n isVoid: false\n }, defaultBlock, {\n nodes: [{\n object: 'text',\n leaves: [{\n object: 'leaf',\n text: '',\n marks: []\n }]\n }]\n })];\n }\n\n var json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes\n }\n };\n\n var ret = toJSON ? json : Value.fromJSON(json);\n return ret;\n };\n\n this.deserializeElements = function () {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var nodes = [];\n\n elements.filter(_this.cruftNewline).forEach(function (element) {\n var node = _this.deserializeElement(element);\n\n switch (typeOf(node)) {\n case 'array':\n nodes = nodes.concat(node);\n break;\n case 'object':\n nodes.push(node);\n break;\n }\n });\n\n return nodes;\n };\n\n this.deserializeElement = function (element) {\n var node = void 0;\n\n if (!element.tagName) {\n element.tagName = '';\n }\n\n var next = function next(elements) {\n if (Object.prototype.toString.call(elements) == '[object NodeList]') {\n elements = Array.from(elements);\n }\n\n switch (typeOf(elements)) {\n case 'array':\n return _this.deserializeElements(elements);\n case 'object':\n return _this.deserializeElement(elements);\n case 'null':\n case 'undefined':\n return;\n default:\n throw new Error('The `next` argument was called with invalid children: \"' + elements + '\".');\n }\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (!rule.deserialize) continue;\n var ret = rule.deserialize(element, next);\n var type = typeOf(ret);\n\n if (type != 'array' && type != 'object' && type != 'null' && type != 'undefined') {\n throw new Error('A rule returned an invalid deserialized representation: \"' + node + '\".');\n }\n\n if (ret === undefined) {\n continue;\n } else if (ret === null) {\n return null;\n } else if (ret.object == 'mark') {\n node = _this.deserializeMark(ret);\n } else {\n node = ret;\n }\n\n break;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return node || next(element.childNodes);\n };\n\n this.deserializeMark = function (mark) {\n var type = mark.type,\n data = mark.data;\n\n\n var applyMark = function applyMark(node) {\n if (node.object == 'mark') {\n return _this.deserializeMark(node);\n } else if (node.object == 'text') {\n node.leaves = node.leaves.map(function (leaf) {\n leaf.marks = leaf.marks || [];\n leaf.marks.push({ type: type, data: data });\n return leaf;\n });\n } else if (node.nodes) {\n node.nodes = node.nodes.map(applyMark);\n }\n\n return node;\n };\n\n return mark.nodes.reduce(function (nodes, node) {\n var ret = applyMark(node);\n if (Array.isArray(ret)) return nodes.concat(ret);\n nodes.push(ret);\n return nodes;\n }, []);\n };\n\n this.serialize = function (value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var document = value.document;\n\n var elements = document.nodes.map(_this.serializeNode).filter(function (el) {\n return el;\n });\n if (options.render === false) return elements;\n\n var html = renderToStaticMarkup(React.createElement(\n 'body',\n null,\n elements\n ));\n var inner = html.slice(6, -7);\n return inner;\n };\n\n this.serializeNode = function (node) {\n if (node.object === 'text') {\n var leaves = node.getLeaves();\n return leaves.map(_this.serializeLeaf);\n }\n\n var children = node.nodes.map(_this.serializeNode);\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(node, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n throw new Error('No serializer defined for node of type \"' + node.type + '\".');\n };\n\n this.serializeLeaf = function (leaf) {\n var string = new String({ text: leaf.text });\n var text = _this.serializeString(string);\n\n return leaf.marks.reduce(function (children, mark) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = _this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(mark, children);\n if (ret === null) return;\n if (ret) return addKey(ret);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n throw new Error('No serializer defined for mark of type \"' + mark.type + '\".');\n }, text);\n };\n\n this.serializeString = function (string) {\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = _this.rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(string, string.text);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n };\n\n this.cruftNewline = function (element) {\n return !(element.nodeName === '#text' && element.nodeValue == '\\n');\n };\n};\n\nvar key = 0;\n\nfunction addKey(element) {\n return React.cloneElement(element, { key: key++ });\n}\n\nexport default Html;\n//# sourceMappingURL=slate-html-serializer.es.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactServerRendering = require('./ReactServerRendering');\nvar ReactVersion = require('./ReactVersion');\n\nReactDefaultInjection.inject();\n\nvar ReactDOMServer = {\n renderToString: ReactServerRendering.renderToString,\n renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup,\n version: ReactVersion\n};\n\nmodule.exports = ReactDOMServer;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactServerBatchingStrategy = require('./ReactServerBatchingStrategy');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\n\nvar pendingTransactions = 0;\n\n/**\n * @param {ReactElement} element\n * @return {string} the HTML markup\n */\nfunction renderToStringImpl(element, makeStaticMarkup) {\n var transaction;\n try {\n ReactUpdates.injection.injectBatchingStrategy(ReactServerBatchingStrategy);\n\n transaction = ReactServerRenderingTransaction.getPooled(makeStaticMarkup);\n\n pendingTransactions++;\n\n return transaction.perform(function () {\n var componentInstance = instantiateReactComponent(element, true);\n var markup = ReactReconciler.mountComponent(componentInstance, transaction, null, ReactDOMContainerInfo(), emptyObject, 0 /* parentDebugID */\n );\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onUnmountComponent(componentInstance._debugID);\n }\n if (!makeStaticMarkup) {\n markup = ReactMarkupChecksum.addChecksumToMarkup(markup);\n }\n return markup;\n }, null);\n } finally {\n pendingTransactions--;\n ReactServerRenderingTransaction.release(transaction);\n // Revert to the DOM batching strategy since these two renderers\n // currently share these stateful modules.\n if (!pendingTransactions) {\n ReactUpdates.injection.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n }\n }\n}\n\n/**\n * Render a ReactElement to its initial HTML. This should only be used on the\n * server.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostring\n */\nfunction renderToString(element) {\n !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToString(): You must pass a valid ReactElement.') : _prodInvariant('46') : void 0;\n return renderToStringImpl(element, false);\n}\n\n/**\n * Similar to renderToString, except this doesn't create extra DOM attributes\n * such as data-react-id that React uses internally.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostaticmarkup\n */\nfunction renderToStaticMarkup(element) {\n !React.isValidElement(element) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'renderToStaticMarkup(): You must pass a valid ReactElement.') : _prodInvariant('47') : void 0;\n return renderToStringImpl(element, true);\n}\n\nmodule.exports = {\n renderToString: renderToString,\n renderToStaticMarkup: renderToStaticMarkup\n};","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar ReactServerBatchingStrategy = {\n isBatchingUpdates: false,\n batchedUpdates: function (callback) {\n // Don't do anything here. During the server rendering we don't want to\n // schedule any updates. We will simply ignore them.\n }\n};\n\nmodule.exports = ReactServerBatchingStrategy;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parser = require(\"./parser\");\n\nvar _parser2 = _interopRequireDefault(_parser);\n\nvar _slate = require(\"slate\");\n\nvar _immutable = require(\"immutable\");\n\nvar _urls = require(\"./urls\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar String = new _immutable.Record({\n object: \"string\",\n text: \"\"\n});\n\n/**\n * Rules to (de)serialize nodes.\n *\n * @type {Object}\n */\n\nvar tableHeader = \"\";\n\nvar RULES = [{\n serialize: function serialize(obj, children) {\n if (obj.object === \"string\") {\n return children;\n }\n }\n}, {\n serialize: function serialize(obj, children, document) {\n if (obj.object !== \"block\") return;\n var parent = document.getParent(obj.key);\n\n // add newline after blocks which must be separated by\n // newlines - i.e. paragraphs, blockquotes and lists.\n var addNewLine = function addNewLine(children) {\n if (document.getNextSibling(obj.key)) {\n return children + \"\\n\\n\";\n } else {\n return children;\n }\n };\n\n switch (obj.type) {\n case \"table\":\n tableHeader = \"\";\n\n // trim removes trailing newline\n return children.trim();\n case \"table-head\":\n {\n switch (obj.getIn([\"data\", \"align\"])) {\n case \"left\":\n tableHeader += \"|:--- \";\n break;\n case \"center\":\n tableHeader += \"|:---:\";\n break;\n case \"right\":\n tableHeader += \"| ---:\";\n break;\n default:\n tableHeader += \"| --- \";\n }\n return \"| \" + children + \" \";\n }\n case \"table-row\":\n var output = \"\";\n if (tableHeader) {\n output = tableHeader + \"|\\n\";\n tableHeader = \"\";\n }\n return children + \"|\\n\" + output;\n case \"table-cell\":\n return \"| \" + children + \" \";\n case \"paragraph\":\n return addNewLine(\"\" + children);\n case \"code\":\n return addNewLine(\"```\\n\" + children + \"\\n```\");\n case \"code-line\":\n return children + \"\\n\";\n case \"block-quote\":\n return addNewLine(\"\" + children.replace(/^/gm, \"> \"));\n case \"todo-list\":\n case \"bulleted-list\":\n case \"ordered-list\":\n if (parent === document) {\n return children;\n }\n return \"\\n\" + addNewLine(children.replace(/^/gm, \" \"));\n case \"list-item\":\n {\n switch (parent.type) {\n case \"ordered-list\":\n return \"1. \" + children + \"\\n\";\n case \"todo-list\":\n var checked = obj.getIn([\"data\", \"checked\"]);\n var box = checked ? \"[x]\" : \"[ ]\";\n return box + \" \" + children + \"\\n\";\n default:\n case \"bulleted-list\":\n return \"* \" + children + \"\\n\";\n }\n }\n case \"heading1\":\n return \"\\n\" + children.replace(/^/gm, \"# \") + \"\\n\";\n case \"heading2\":\n return \"\\n\" + children.replace(/^/gm, \"## \") + \"\\n\";\n case \"heading3\":\n return \"\\n\" + children.replace(/^/gm, \"### \") + \"\\n\";\n case \"heading4\":\n return \"\\n\" + children.replace(/^/gm, \"#### \") + \"\\n\";\n case \"heading5\":\n return \"\\n\" + children.replace(/^/gm, \"##### \") + \"\\n\";\n case \"heading6\":\n return \"\\n\" + children.replace(/^/gm, \"###### \") + \"\\n\";\n case \"horizontal-rule\":\n return \"---\";\n case \"image\":\n var alt = obj.getIn([\"data\", \"alt\"]);\n var src = (0, _urls.encode)(obj.getIn([\"data\", \"src\"]) || \"\");\n return \"![\" + alt + \"](\" + src + \")\";\n }\n }\n}, {\n serialize: function serialize(obj, children) {\n if (obj.object !== \"inline\") return;\n switch (obj.type) {\n case \"link\":\n var href = (0, _urls.encode)(obj.getIn([\"data\", \"href\"]) || \"\");\n return href ? \"[\" + children.trim() + \"](\" + href + \")\" : children.trim();\n }\n }\n},\n// Add a new rule that handles marks...\n{\n serialize: function serialize(obj, children) {\n if (obj.object !== \"mark\") return;\n switch (obj.type) {\n case \"bold\":\n return \"**\" + children + \"**\";\n case \"italic\":\n return \"_\" + children + \"_\";\n case \"code\":\n return \"`\" + children + \"`\";\n case \"inserted\":\n return \"++\" + children + \"++\";\n case \"deleted\":\n return \"~~\" + children + \"~~\";\n }\n }\n}];\n\n/**\n * Markdown serializer.\n *\n * @type {Markdown}\n */\n\nvar Markdown = function () {\n /**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n * @property {Array} rules\n * @return {Markdown} serializer\n */\n\n function Markdown() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Markdown);\n\n this.rules = [].concat(_toConsumableArray(options.rules || []), RULES);\n\n this.serializeNode = this.serializeNode.bind(this);\n this.serializeLeaves = this.serializeLeaves.bind(this);\n this.serializeString = this.serializeString.bind(this);\n }\n\n /**\n * Serialize a `state` object into an HTML string.\n *\n * @param {State} state\n * @return {String} markdown\n */\n\n _createClass(Markdown, [{\n key: \"serialize\",\n value: function serialize(state) {\n var _this = this;\n\n var document = state.document;\n\n var elements = document.nodes.map(function (node) {\n return _this.serializeNode(node, document);\n });\n\n var output = elements.join(\"\\n\");\n\n // trim beginning whitespace\n return output.replace(/^\\s+/g, \"\");\n }\n\n /**\n * Serialize a `node`.\n *\n * @param {Node} node\n * @return {String}\n */\n\n }, {\n key: \"serializeNode\",\n value: function serializeNode(node, document) {\n var _this2 = this;\n\n if (node.object == \"text\") {\n var leaves = node.getLeaves();\n var inCodeBlock = !!document.getClosest(node.key, function (n) {\n n.type === 'code';\n });\n return leaves.map(this.serializeLeaves, !inCodeBlock);\n }\n\n var children = node.nodes.map(function (node) {\n return _this2.serializeNode(node, document);\n });\n children = children.flatten().size === 0 ? \"\" : children.flatten().join(\"\");\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var rule = _step.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(node, children, document);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n /**\n * Serialize `leaves`.\n *\n * @param {Leave[]} leaves\n * @return {String}\n */\n\n }, {\n key: \"serializeLeaves\",\n value: function serializeLeaves(leaves, escape) {\n var _this3 = this;\n\n var leavesText = leaves.text;\n if (escape) {\n // escape markdown characters\n leavesText = leavesText.replace(/([\\\\`*{}\\[\\]()#+\\-.!_>])/gi, \"\\\\$1\");\n }\n var string = new String({ text: leavesText });\n var text = this.serializeString(string);\n\n return leaves.marks.reduce(function (children, mark) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = _this3.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var rule = _step2.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(mark, children);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }, text);\n }\n\n /**\n * Serialize a `string`.\n *\n * @param {String} string\n * @return {String}\n */\n\n }, {\n key: \"serializeString\",\n value: function serializeString(string) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n\n if (!rule.serialize) continue;\n var ret = rule.serialize(string, string.text);\n if (ret) return ret;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n\n /**\n * Deserialize a markdown `string`.\n *\n * @param {String} markdown\n * @return {State} state\n */\n\n }, {\n key: \"deserialize\",\n value: function deserialize(markdown) {\n var document = _parser2.default.parse(markdown);\n var state = _slate.Value.fromJSON({ document: document });\n return state;\n }\n }]);\n\n return Markdown;\n}();\n\nexports.default = Markdown;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _urls = require(\"./urls\");\n\n/**\n * Ported from:\n * https://github.com/chjj/marked/blob/49b7eaca/lib/marked.js\n * TODO:\n * Use ES6 classes\n * Add flow annotations\n */\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar assign = Object.assign || function (obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var target = arguments[i];\n for (var key in target) {\n if (hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n return obj;\n};\n\nvar flatten = function flatten(ary) {\n return [].concat.apply([], ary);\n};\n\nvar noop = function noop() {};\nnoop.exec = noop;\n\nvar defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n smartLists: true,\n silent: false,\n langPrefix: \"lang-\",\n renderer: new Renderer()\n};\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*(?:\\n|$))+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n(?! )(?!\\1bull )\\n|\\s*$)/,\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n|$)/,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|def))+)(?:\\n|$)/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.|\\[[x\\s]\\])/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, \"gm\")(/bull/g, block.bullet)();\n\nblock.list = replace(block.list)(/bull/g, block.bullet)(\"hr\", \"\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))\")(\"def\", \"\\\\n+(?=\" + block.def.source + \")\")();\n\nblock.blockquote = replace(block.blockquote)(\"def\", block.def)();\n\nblock.paragraph = replace(block.paragraph)(\"hr\", block.hr)(\"heading\", block.heading)(\"lheading\", block.lheading)(\"blockquote\", block.blockquote)(\"def\", block.def)();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = assign({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = assign({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]+?)\\s*\\1 *(?:\\n|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n{1,2}|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)(\"(?!\", \"(?!\" + block.gfm.fences.source.replace(\"\\\\1\", \"\\\\2\") + \"|\" + block.list.source.replace(\"\\\\1\", \"\\\\3\") + \"|\")();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = assign({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = assign({}, options || defaults);\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.parse = function (src, options) {\n var lexer = new Lexer(options);\n return lexer.parse(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.parse = function (src) {\n src = src.replace(/\\r\\n|\\r/g, \"\\n\").replace(/\\t/g, \" \").replace(/\\u00a0/g, \" \").replace(/\\u2424/g, \"\\n\");\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function (src, top, bq) {\n var next;\n var loose;\n var cap;\n var bull;\n var b;\n var item;\n var space;\n var i;\n var l;\n\n src = src.replace(/^ +$/gm, \"\");\n src = src.replace(/^\\n/, \"\");\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n var newlines = cap[0].length;\n\n if (top) {\n for (var _i = 0; _i < newlines; _i++) {\n this.tokens.push({\n type: \"paragraph\",\n text: \"\"\n });\n }\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, \"\");\n this.tokens.push({\n type: \"code\",\n text: !this.options.pedantic ? cap.replace(/\\n+$/, \"\") : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"code\",\n lang: cap[2],\n text: cap[3]\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n\n var last = this.tokens[this.tokens.length - 1];\n if (last && last.type === \"paragraph\" && last.text === \"\") {\n this.tokens.splice(-1, 1);\n }\n\n this.tokens.push({\n type: \"heading\",\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: \"table\",\n header: cap[1].replace(/^ *| *\\| *$/g, \"\").split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, \"\").split(\"\\n\")\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = \"right\";\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = \"center\";\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = \"left\";\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"heading\",\n depth: cap[2] === \"=\" ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"hr\"\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: \"blockquote_start\"\n });\n\n cap = cap[0].replace(/^ *> ?/gm, \"\");\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: \"blockquote_end\"\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n var ordered = bull.length > 1;\n var todo = bull[0] === \"[\";\n\n this.tokens.push({\n type: \"list_start\",\n style: todo ? \"todo\" : ordered ? \"ordered\" : \"bulleted\"\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n var checked = todo ? !!item.match(/^ *(\\[x\\])/) : undefined;\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.|\\[[x\\s]\\]) +/, \"\");\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf(\"\\n \")) {\n space -= item.length;\n item = !this.options.pedantic ? item.replace(new RegExp(\"^ {1,\" + space + \"}\", \"gm\"), \"\") : item.replace(/^ {1,4}/gm, \"\");\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join(\"\\n\") + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === \"\\n\";\n if (!loose) {\n loose = next;\n }\n }\n\n this.tokens.push({\n checked: checked,\n type: loose ? \"loose_item_start\" : \"list_item_start\"\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: \"list_item_end\"\n });\n }\n\n this.tokens.push({\n type: \"list_end\"\n });\n\n continue;\n }\n\n // def\n if (!bq && top && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: \"table\",\n header: cap[1].replace(/^ *| *\\| *$/g, \"\").split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, \"\").split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, \"\").split(\"\\n\")\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = \"right\";\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = \"center\";\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = \"left\";\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].replace(/^ *\\| *| *\\| *$/g, \"\").split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n var endsWithNewline = cap[1].charAt(cap[1].length - 1) === \"\\n\";\n this.tokens.push({\n type: \"paragraph\",\n text: endsWithNewline ? cap[1].slice(0, -1) : cap[1]\n });\n if (endsWithNewline) {\n this.tokens.push({\n type: \"paragraph\",\n text: \"\"\n });\n }\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: \"text\",\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new Error(\"Infinite loop on byte: \" + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:__|[\\s\\S])+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n ins: noop,\n text: /^[\\s\\S]+?(?=[\\\\<!\\[_*`]| {2,}\\n|$)/\n};\n\ninline._inside = /(?:\\[[^\\]]*\\]|[^\\[\\]]|\\](?=[^\\[]*\\]))*/;\ninline._href = /\\s*<?([\\s\\S]*?)>?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)(\"inside\", inline._inside)(\"href\", inline._href)();\n\ninline.reflink = replace(inline.reflink)(\"inside\", inline._inside)();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = assign({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = assign({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = assign({}, inline.normal, {\n escape: replace(inline.escape)(\"])\", \"~|])\")(),\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n ins: /^\\+\\+(?=\\S)([\\s\\S]*?\\S)\\+\\+/,\n text: replace(inline.text)(\"]|\", \"~+]|\")()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = assign({}, inline.gfm, {\n br: replace(inline.br)(\"{2,}\", \"*\")(),\n text: replace(inline.gfm.text)(\"{2,}\", \"*\")()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = assign({}, options || defaults);\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer();\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new Error(\"Tokens array requires a `links` property.\");\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.parse = function (src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.parse(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.parse = function (src) {\n var out = [];\n var link;\n var cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out.push({\n object: \"text\",\n leaves: [{\n text: cap[1]\n }]\n });\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out.push(this.outputLink(cap, { href: cap[2], title: cap[3] }));\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n // TODO\n if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, \" \");\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out.push({\n object: \"text\",\n leaves: [{\n text: cap[0].charAt(0)\n }]\n });\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out.push(this.outputLink(cap, link));\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.strong(this.parse(cap[2] || cap[1])));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.em(this.parse(cap[2] || cap[1])));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.codespan(cap[2]));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.br());\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.del(this.parse(cap[1])));\n continue;\n }\n\n // ins (gfm extended)\n if (cap = this.rules.ins.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.ins(this.parse(cap[1])));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out.push(this.renderer.text(cap[0]));\n continue;\n }\n\n if (src) {\n throw new Error(\"Infinite loop on byte: \" + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function (cap, link) {\n var href = link.href;\n var title = link.title;\n\n return cap[0].charAt(0) !== \"!\" ? this.renderer.link(href, title, this.parse(cap[1])) : this.renderer.image(href, title, cap[1]);\n};\n\"\";\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.groupTextInLeaves = function (childNode) {\n var _this = this;\n\n var node = flatten(childNode);\n return node.reduce(function (acc, current) {\n var accLast = acc.length - 1;\n var lastIsText = accLast >= 0 && acc[accLast] && acc[accLast][\"object\"] === \"text\";\n\n if (current instanceof TextNode) {\n if (lastIsText) {\n // If the previous item was a text object, push the current text to it's range\n acc[accLast].leaves.push(current);\n return acc;\n } else {\n // Else, create a new text object\n acc.push({\n object: \"text\",\n leaves: [current]\n });\n return acc;\n }\n } else if (current instanceof Array) {\n return acc.concat(_this.groupTextInLeaves(current));\n } else {\n acc.push(current);\n return acc;\n }\n }, []);\n};\n\nRenderer.prototype.code = function (childNode, lang) {\n var data = {};\n\n if (lang) {\n data.language = this.options.langPrefix + lang;\n }\n\n return {\n object: \"block\",\n type: \"code\",\n data: data,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.blockquote = function (childNode) {\n return {\n object: \"block\",\n type: \"block-quote\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.heading = function (childNode, level) {\n return {\n object: \"block\",\n type: \"heading\" + level,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.hr = function () {\n return {\n object: \"block\",\n type: \"horizontal-rule\",\n isVoid: true\n };\n};\n\nRenderer.prototype.list = function (childNode, style) {\n return {\n object: \"block\",\n type: style + \"-list\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.listitem = function (childNode) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var data = void 0;\n if (flags.checked !== undefined) {\n data = { checked: flags.checked };\n }\n\n return {\n object: \"block\",\n type: \"list-item\",\n data: data,\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.paragraph = function (childNode) {\n return {\n object: \"block\",\n type: \"paragraph\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\nRenderer.prototype.table = function (childNode) {\n return {\n object: \"block\",\n type: \"table\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.tablerow = function (childNode) {\n return {\n object: \"block\",\n type: \"table-row\",\n nodes: childNode\n };\n};\n\nRenderer.prototype.tablecell = function (childNode, flags) {\n var align = flags.align;\n\n return {\n object: \"block\",\n data: { align: align },\n type: flags.header ? \"table-head\" : \"table-cell\",\n nodes: this.groupTextInLeaves(childNode)\n };\n};\n\n// span level renderer\nRenderer.prototype.strong = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"bold\" });\n } else {\n node.marks = [{ type: \"bold\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.em = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"italic\" });\n } else {\n node.marks = [{ type: \"italic\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.codespan = function (text) {\n return new TextNode(text, { type: \"code\" });\n};\n\nRenderer.prototype.br = function () {\n return new TextNode(\"\");\n};\n\nRenderer.prototype.del = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"deleted\" });\n } else {\n node.marks = [{ type: \"deleted\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.ins = function (childNode) {\n return childNode.map(function (node) {\n if (node.marks) {\n node.marks.push({ type: \"inserted\" });\n } else {\n node.marks = [{ type: \"inserted\" }];\n }\n return node;\n });\n};\n\nRenderer.prototype.link = function (href, title, childNode) {\n var data = {\n href: (0, _urls.decode)(href)\n };\n if (title) {\n data.title = title;\n }\n return {\n object: \"inline\",\n type: \"link\",\n nodes: this.groupTextInLeaves(childNode),\n data: data\n };\n};\n\nRenderer.prototype.image = function (href, title, alt) {\n var data = {\n src: (0, _urls.decode)(href)\n };\n\n if (title) {\n data.title = title;\n }\n if (alt) {\n data.alt = alt;\n }\n\n return {\n object: \"block\",\n type: \"image\",\n nodes: [{\n object: \"text\",\n leaves: [{\n text: \"\"\n }]\n }],\n isVoid: true,\n data: data\n };\n};\n\nRenderer.prototype.text = function (childNode) {\n return new TextNode(childNode);\n};\n\n// Auxiliary object constructors:\nfunction TextNode(text, marks) {\n this.text = text;\n if (marks) {\n this.marks = [marks];\n }\n}\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = assign({}, options || defaults);\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function (src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function (src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.slice().reverse();\n\n var out = [];\n while (this.next()) {\n out.push(this.tok());\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function () {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function () {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function () {\n var body = this.token.text;\n\n while (this.peek().type === \"text\") {\n body += \"\\n\" + this.next().text;\n }\n\n return this.inline.parse(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function () {\n switch (this.token.type) {\n case \"space\":\n {\n return {\n object: \"text\",\n leaves: [{\n text: \"\"\n }]\n };\n }\n case \"hr\":\n {\n return this.renderer.hr();\n }\n case \"heading\":\n {\n return this.renderer.heading(this.inline.parse(this.token.text), this.token.depth);\n }\n case \"code\":\n {\n return this.renderer.code(this.inline.parse(this.token.text), this.token.lang);\n }\n case \"table\":\n {\n var body = [];\n var i = void 0,\n row = void 0,\n flags = void 0,\n j = void 0;\n\n // header\n var cells = [];\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cells.push(this.renderer.tablecell(this.inline.parse(this.token.header[i]), {\n header: true,\n align: this.token.align[i]\n }));\n }\n body.push(this.renderer.tablerow(cells));\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n var _cells = [];\n for (j = 0; j < row.length; j++) {\n _cells.push(this.renderer.tablecell(this.inline.parse(row[j]), {\n header: false,\n align: this.token.align[j]\n }));\n }\n\n body.push(this.renderer.tablerow(_cells));\n }\n return this.renderer.table(body);\n }\n case \"blockquote_start\":\n {\n var _body = [];\n\n while (this.next().type !== \"blockquote_end\") {\n _body.push(this.inline.parse(this.token.text));\n }\n return this.renderer.blockquote(_body);\n }\n case \"list_start\":\n {\n var _body2 = [];\n var style = this.token.style;\n\n while (this.next().type !== \"list_end\") {\n _body2.push(this.tok());\n }\n\n return this.renderer.list(_body2, style);\n }\n case \"loose_item_start\":\n case \"list_item_start\":\n {\n var _body3 = [];\n var _flags = { checked: this.token.checked };\n\n while (this.next().type !== \"list_item_end\") {\n _body3.push(this.token.type === \"text\" ? this.renderer.paragraph(this.inline.parse(this.token.text)) : this.tok());\n }\n\n return this.renderer.listitem(_body3, _flags);\n }\n case \"paragraph\":\n {\n return this.renderer.paragraph(this.inline.parse(this.token.text));\n }\n case \"text\":\n {\n return this.renderer.text(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction replace(regex, options) {\n regex = regex.source;\n options = options || \"\";\n return function self(name, val) {\n if (!name) {\n return new RegExp(regex, options);\n }\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, \"$1\");\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nvar MarkdownParser = {\n parse: function parse(src, options) {\n options = assign({}, defaults, options);\n try {\n var fragment = Parser.parse(Lexer.parse(src, options), options);\n } catch (e) {\n if (options.silent) {\n fragment = [{\n object: \"block\",\n type: \"paragraph\",\n nodes: [{\n object: \"text\",\n leaves: [{\n text: \"An error occured:\"\n }, {\n text: e.message\n }]\n }]\n }];\n } else {\n throw e;\n }\n }\n var mainNode = { nodes: fragment };\n return mainNode;\n }\n};\n\nexports.default = MarkdownParser;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _slate = require('slate');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Plain text serializer, which converts a Slate `value` to a plain text string,\n * serializing pills into various different formats as required.\n *\n * @type {PlainWithPillsSerializer}\n */\n\nvar PlainWithPillsSerializer =\n\n/*\n * @param {String} options.pillFormat - either 'md', 'plain', 'id'\n */\nfunction PlainWithPillsSerializer() {\n var _this = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n (0, _classCallCheck3.default)(this, PlainWithPillsSerializer);\n\n this.serialize = function (value) {\n return _this._serializeNode(value.document);\n };\n\n this._serializeNode = function (node) {\n if (node.object == 'document' || node.object == 'block' && _slate.Block.isBlockList(node.nodes)) {\n return node.nodes.map(_this._serializeNode).join('\\n');\n } else if (node.type == 'emoji') {\n return node.data.get('emojiUnicode');\n } else if (node.type == 'pill') {\n var completion = node.data.get('completion');\n // over the wire the @room pill is just plaintext\n if (completion === '@room') return completion;\n\n switch (_this.pillFormat) {\n case 'plain':\n return completion;\n case 'md':\n return '[' + completion + '](' + node.data.get('href') + ')';\n case 'id':\n return node.data.get('completionId') || completion;\n }\n } else if (node.nodes) {\n return node.nodes.map(_this._serializeNode).join('');\n } else {\n return node.text;\n }\n };\n\n var _options$pillFormat = options.pillFormat,\n pillFormat = _options$pillFormat === undefined ? 'plain' : _options$pillFormat;\n\n this.pillFormat = pillFormat;\n}\n\n/**\n * Serialize a Slate `value` to a plain text string,\n * serializing pills as either MD links, plain text representations or\n * ID representations as required.\n *\n * @param {Value} value\n * @return {String}\n */\n\n\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n;\n\n/**\n * Export.\n *\n * @type {PlainWithPillsSerializer}\n */\n\n/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Based originally on slate-plain-serializer\n\nexports.default = PlainWithPillsSerializer;\nmodule.exports = exports['default'];\n//# sourceMappingURL=PlainWithPillsSerializer.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.unicodeToEmojiUri = unicodeToEmojiUri;\n\nvar _emojione = require('emojione');\n\nvar emojione = _interopRequireWildcard(_emojione);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction unicodeToEmojiUri(str) {\n var mappedUnicode = emojione.mapUnicodeToShort();\n\n // remove any zero width joiners/spaces used in conjugate emojis as the emojione URIs don't contain them\n return str.replace(emojione.regUnicode, function (unicodeChar) {\n if (typeof unicodeChar === 'undefined' || unicodeChar === '' || !(unicodeChar in emojione.jsEscapeMap)) {\n // if the unicodeChar doesn't exist just return the entire match\n return unicodeChar;\n } else {\n // get the unicode codepoint from the actual char\n var unicode = emojione.jsEscapeMap[unicodeChar];\n\n var short = mappedUnicode[unicode];\n var fname = emojione.emojioneList[short].fname;\n\n return emojione.imagePathSVG + fname + '.svg' + emojione.cacheBustParam;\n }\n });\n} /*\n Copyright 2015 - 2017 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RichText.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _commonmark = require('commonmark');\n\nvar _commonmark2 = _interopRequireDefault(_commonmark);\n\nvar _escape = require('lodash/escape');\n\nvar _escape2 = _interopRequireDefault(_escape);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar ALLOWED_HTML_TAGS = ['sub', 'sup', 'del', 'u'];\n\n// These types of node are definitely text\nvar TEXT_NODES = ['text', 'softbreak', 'linebreak', 'paragraph', 'document'];\n\nfunction is_allowed_html_tag(node) {\n // Regex won't work for tags with attrs, but we only\n // allow <del> anyway.\n var matches = /^<\\/?(.*)>$/.exec(node.literal);\n if (matches && matches.length == 2) {\n var tag = matches[1];\n return ALLOWED_HTML_TAGS.indexOf(tag) > -1;\n }\n return false;\n}\n\nfunction html_if_tag_allowed(node) {\n if (is_allowed_html_tag(node)) {\n this.lit(node.literal);\n return;\n } else {\n this.lit((0, _escape2.default)(node.literal));\n }\n}\n\n/*\n * Returns true if the parse output containing the node\n * comprises multiple block level elements (ie. lines),\n * or false if it is only a single line.\n */\nfunction is_multi_line(node) {\n var par = node;\n while (par.parent) {\n par = par.parent;\n }\n return par.firstChild != par.lastChild;\n}\n\n/**\n * Class that wraps commonmark, adding the ability to see whether\n * a given message actually uses any markdown syntax or whether\n * it's plain text.\n */\n\nvar Markdown = function () {\n function Markdown(input) {\n (0, _classCallCheck3.default)(this, Markdown);\n\n this.input = input;\n\n var parser = new _commonmark2.default.Parser();\n this.parsed = parser.parse(this.input);\n }\n\n (0, _createClass3.default)(Markdown, [{\n key: 'isPlainText',\n value: function isPlainText() {\n var walker = this.parsed.walker();\n\n var ev = void 0;\n while (ev = walker.next()) {\n var node = ev.node;\n if (TEXT_NODES.indexOf(node.type) > -1) {\n // definitely text\n continue;\n } else if (node.type == 'html_inline' || node.type == 'html_block') {\n // if it's an allowed html tag, we need to render it and therefore\n // we will need to use HTML. If it's not allowed, it's not HTML since\n // we'll just be treating it as text.\n if (is_allowed_html_tag(node)) {\n return false;\n }\n } else {\n return false;\n }\n }\n return true;\n }\n }, {\n key: 'toHTML',\n value: function toHTML() {\n var renderer = new _commonmark2.default.HtmlRenderer({\n safe: false,\n\n // Set soft breaks to hard HTML breaks: commonmark\n // puts softbreaks in for multiple lines in a blockquote,\n // so if these are just newline characters then the\n // block quote ends up all on one line\n // (https://github.com/vector-im/riot-web/issues/3154)\n softbreak: '<br />'\n });\n\n // Trying to strip out the wrapping <p/> causes a lot more complication\n // than it's worth, i think. For instance, this code will go and strip\n // out any <p/> tag (no matter where it is in the tree) which doesn't\n // contain \\n's.\n // On the flip side, <p/>s are quite opionated and restricted on where\n // you can nest them.\n //\n // Let's try sending with <p/>s anyway for now, though.\n\n var real_paragraph = renderer.paragraph;\n\n renderer.paragraph = function (node, entering) {\n // If there is only one top level node, just return the\n // bare text: it's a single line of text and so should be\n // 'inline', rather than unnecessarily wrapped in its own\n // p tag. If, however, we have multiple nodes, each gets\n // its own p tag to keep them as separate paragraphs.\n if (is_multi_line(node)) {\n real_paragraph.call(this, node, entering);\n }\n };\n\n renderer.html_inline = html_if_tag_allowed;\n\n renderer.html_block = function (node) {\n /*\n // as with `paragraph`, we only insert line breaks\n // if there are multiple lines in the markdown.\n const isMultiLine = is_multi_line(node);\n if (isMultiLine) this.cr();\n */\n html_if_tag_allowed.call(this, node);\n /*\n if (isMultiLine) this.cr();\n */\n };\n\n return renderer.render(this.parsed);\n }\n\n /*\n * Render the markdown message to plain text. That is, essentially\n * just remove any backslashes escaping what would otherwise be\n * markdown syntax\n * (to fix https://github.com/vector-im/riot-web/issues/2870).\n *\n * N.B. this does **NOT** render arbitrary MD to plain text - only MD\n * which has no formatting. Otherwise it emits HTML(!).\n */\n\n }, {\n key: 'toPlaintext',\n value: function toPlaintext() {\n var renderer = new _commonmark2.default.HtmlRenderer({ safe: false });\n var real_paragraph = renderer.paragraph;\n\n // The default `out` function only sends the input through an XML\n // escaping function, which causes messages to be entity encoded,\n // which we don't want in this case.\n renderer.out = function (s) {\n // The `lit` function adds a string literal to the output buffer.\n this.lit(s);\n };\n\n renderer.paragraph = function (node, entering) {\n // as with toHTML, only append lines to paragraphs if there are\n // multiple paragraphs\n if (is_multi_line(node)) {\n if (!entering && node.next) {\n this.lit('\\n\\n');\n }\n }\n };\n\n renderer.html_block = function (node) {\n this.lit(node.literal);\n if (is_multi_line(node) && node.next) this.lit('\\n\\n');\n };\n\n return renderer.render(this.parsed);\n }\n }]);\n return Markdown;\n}();\n\nexports.default = Markdown;\nmodule.exports = exports['default'];\n//# sourceMappingURL=Markdown.js.map","\"use strict\";\n\n// commonmark.js - CommomMark in JavaScript\n// Copyright (C) 2014 John MacFarlane\n// License: BSD3.\n\n// Basic usage:\n//\n// var commonmark = require('commonmark');\n// var parser = new commonmark.Parser();\n// var renderer = new commonmark.HtmlRenderer();\n// console.log(renderer.render(parser.parse('Hello *world*')));\n\nmodule.exports.Node = require('./node');\nmodule.exports.Parser = require('./blocks');\nmodule.exports.HtmlRenderer = require('./render/html');\nmodule.exports.XmlRenderer = require('./render/xml');\n","\"use strict\";\n\nvar Node = require('./node');\nvar unescapeString = require('./common').unescapeString;\nvar OPENTAG = require('./common').OPENTAG;\nvar CLOSETAG = require('./common').CLOSETAG;\n\nvar CODE_INDENT = 4;\n\nvar C_TAB = 9;\nvar C_NEWLINE = 10;\nvar C_GREATERTHAN = 62;\nvar C_LESSTHAN = 60;\nvar C_SPACE = 32;\nvar C_OPEN_BRACKET = 91;\n\nvar InlineParser = require('./inlines');\n\nvar reHtmlBlockOpen = [\n /./, // dummy for 0\n /^<(?:script|pre|style)(?:\\s|>|$)/i,\n /^<!--/,\n /^<[?]/,\n /^<![A-Z]/,\n /^<!\\[CDATA\\[/,\n /^<[/]?(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[123456]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)(?:\\s|[/]?[>]|$)/i,\n new RegExp('^(?:' + OPENTAG + '|' + CLOSETAG + ')\\\\s*$', 'i')\n];\n\nvar reHtmlBlockClose = [\n /./, // dummy for 0\n /<\\/(?:script|pre|style)>/i,\n /-->/,\n /\\?>/,\n />/,\n /\\]\\]>/\n];\n\nvar reThematicBreak = /^(?:(?:\\*[ \\t]*){3,}|(?:_[ \\t]*){3,}|(?:-[ \\t]*){3,})[ \\t]*$/;\n\nvar reMaybeSpecial = /^[#`~*+_=<>0-9-]/;\n\nvar reNonSpace = /[^ \\t\\f\\v\\r\\n]/;\n\nvar reBulletListMarker = /^[*+-]/;\n\nvar reOrderedListMarker = /^(\\d{1,9})([.)])/;\n\nvar reATXHeadingMarker = /^#{1,6}(?:[ \\t]+|$)/;\n\nvar reCodeFence = /^`{3,}(?!.*`)|^~{3,}(?!.*~)/;\n\nvar reClosingCodeFence = /^(?:`{3,}|~{3,})(?= *$)/;\n\nvar reSetextHeadingLine = /^(?:=+|-+)[ \\t]*$/;\n\nvar reLineEnding = /\\r\\n|\\n|\\r/;\n\n// Returns true if string contains only space characters.\nvar isBlank = function(s) {\n return !(reNonSpace.test(s));\n};\n\nvar isSpaceOrTab = function(c) {\n return c === C_SPACE || c === C_TAB;\n};\n\nvar peek = function(ln, pos) {\n if (pos < ln.length) {\n return ln.charCodeAt(pos);\n } else {\n return -1;\n }\n};\n\n// DOC PARSER\n\n// These are methods of a Parser object, defined below.\n\n// Returns true if block ends with a blank line, descending if needed\n// into lists and sublists.\nvar endsWithBlankLine = function(block) {\n while (block) {\n if (block._lastLineBlank) {\n return true;\n }\n var t = block.type;\n if (t === 'list' || t === 'item') {\n block = block._lastChild;\n } else {\n break;\n }\n }\n return false;\n};\n\n// Add a line to the block at the tip. We assume the tip\n// can accept lines -- that check should be done before calling this.\nvar addLine = function() {\n if (this.partiallyConsumedTab) {\n this.offset += 1; // skip over tab\n // add space characters:\n var charsToTab = 4 - (this.column % 4);\n this.tip._string_content += (' '.repeat(charsToTab));\n }\n this.tip._string_content += this.currentLine.slice(this.offset) + '\\n';\n};\n\n// Add block of type tag as a child of the tip. If the tip can't\n// accept children, close and finalize it and try its parent,\n// and so on til we find a block that can accept children.\nvar addChild = function(tag, offset) {\n while (!this.blocks[this.tip.type].canContain(tag)) {\n this.finalize(this.tip, this.lineNumber - 1);\n }\n\n var column_number = offset + 1; // offset 0 = column 1\n var newBlock = new Node(tag, [[this.lineNumber, column_number], [0, 0]]);\n newBlock._string_content = '';\n this.tip.appendChild(newBlock);\n this.tip = newBlock;\n return newBlock;\n};\n\n// Parse a list marker and return data on the marker (type,\n// start, delimiter, bullet character, padding) or null.\nvar parseListMarker = function(parser, container) {\n var rest = parser.currentLine.slice(parser.nextNonspace);\n var match;\n var nextc;\n var spacesStartCol;\n var spacesStartOffset;\n var data = { type: null,\n tight: true, // lists are tight by default\n bulletChar: null,\n start: null,\n delimiter: null,\n padding: null,\n markerOffset: parser.indent };\n if ((match = rest.match(reBulletListMarker))) {\n data.type = 'bullet';\n data.bulletChar = match[0][0];\n\n } else if ((match = rest.match(reOrderedListMarker)) &&\n (container.type !== 'paragraph' ||\n match[1] === '1')) {\n data.type = 'ordered';\n data.start = parseInt(match[1]);\n data.delimiter = match[2];\n } else {\n return null;\n }\n // make sure we have spaces after\n nextc = peek(parser.currentLine, parser.nextNonspace + match[0].length);\n if (!(nextc === -1 || nextc === C_TAB || nextc === C_SPACE)) {\n return null;\n }\n\n // if it interrupts paragraph, make sure first line isn't blank\n if (container.type === 'paragraph' && !parser.currentLine.slice(parser.nextNonspace + match[0].length).match(reNonSpace)) {\n return null;\n }\n\n // we've got a match! advance offset and calculate padding\n parser.advanceNextNonspace(); // to start of marker\n parser.advanceOffset(match[0].length, true); // to end of marker\n spacesStartCol = parser.column;\n spacesStartOffset = parser.offset;\n do {\n parser.advanceOffset(1, true);\n nextc = peek(parser.currentLine, parser.offset);\n } while (parser.column - spacesStartCol < 5 &&\n isSpaceOrTab(nextc));\n var blank_item = peek(parser.currentLine, parser.offset) === -1;\n var spaces_after_marker = parser.column - spacesStartCol;\n if (spaces_after_marker >= 5 ||\n spaces_after_marker < 1 ||\n blank_item) {\n data.padding = match[0].length + 1;\n parser.column = spacesStartCol;\n parser.offset = spacesStartOffset;\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n data.padding = match[0].length + spaces_after_marker;\n }\n return data;\n};\n\n// Returns true if the two list items are of the same type,\n// with the same delimiter and bullet character. This is used\n// in agglomerating list items into lists.\nvar listsMatch = function(list_data, item_data) {\n return (list_data.type === item_data.type &&\n list_data.delimiter === item_data.delimiter &&\n list_data.bulletChar === item_data.bulletChar);\n};\n\n// Finalize and close any unmatched blocks.\nvar closeUnmatchedBlocks = function() {\n if (!this.allClosed) {\n // finalize any blocks not matched\n while (this.oldtip !== this.lastMatchedContainer) {\n var parent = this.oldtip._parent;\n this.finalize(this.oldtip, this.lineNumber - 1);\n this.oldtip = parent;\n }\n this.allClosed = true;\n }\n};\n\n// 'finalize' is run when the block is closed.\n// 'continue' is run to check whether the block is continuing\n// at a certain line and offset (e.g. whether a block quote\n// contains a `>`. It returns 0 for matched, 1 for not matched,\n// and 2 for \"we've dealt with this line completely, go to next.\"\nvar blocks = {\n document: {\n continue: function() { return 0; },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n list: {\n continue: function() { return 0; },\n finalize: function(parser, block) {\n var item = block._firstChild;\n while (item) {\n // check for non-final list item ending with blank line:\n if (endsWithBlankLine(item) && item._next) {\n block._listData.tight = false;\n break;\n }\n // recurse into children of list item, to see if there are\n // spaces between any of them:\n var subitem = item._firstChild;\n while (subitem) {\n if (endsWithBlankLine(subitem) &&\n (item._next || subitem._next)) {\n block._listData.tight = false;\n break;\n }\n subitem = subitem._next;\n }\n item = item._next;\n }\n },\n canContain: function(t) { return (t === 'item'); },\n acceptsLines: false\n },\n block_quote: {\n continue: function(parser) {\n var ln = parser.currentLine;\n if (!parser.indented &&\n peek(ln, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n if (isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n item: {\n continue: function(parser, container) {\n if (parser.blank) {\n if (container._firstChild == null) {\n // Blank line after empty list item\n return 1;\n } else {\n parser.advanceNextNonspace();\n }\n } else if (parser.indent >=\n container._listData.markerOffset +\n container._listData.padding) {\n parser.advanceOffset(container._listData.markerOffset +\n container._listData.padding, true);\n } else {\n return 1;\n }\n return 0;\n },\n finalize: function() { return; },\n canContain: function(t) { return (t !== 'item'); },\n acceptsLines: false\n },\n heading: {\n continue: function() {\n // a heading can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n thematic_break: {\n continue: function() {\n // a thematic break can never container > 1 line, so fail to match:\n return 1;\n },\n finalize: function() { return; },\n canContain: function() { return false; },\n acceptsLines: false\n },\n code_block: {\n continue: function(parser, container) {\n var ln = parser.currentLine;\n var indent = parser.indent;\n if (container._isFenced) { // fenced\n var match = (indent <= 3 &&\n ln.charAt(parser.nextNonspace) === container._fenceChar &&\n ln.slice(parser.nextNonspace).match(reClosingCodeFence));\n if (match && match[0].length >= container._fenceLength) {\n // closing fence - we're at end of line, so we can return\n parser.finalize(container, parser.lineNumber);\n return 2;\n } else {\n // skip optional spaces of fence offset\n var i = container._fenceOffset;\n while (i > 0 && isSpaceOrTab(peek(ln, parser.offset))) {\n parser.advanceOffset(1, true);\n i--;\n }\n }\n } else { // indented\n if (indent >= CODE_INDENT) {\n parser.advanceOffset(CODE_INDENT, true);\n } else if (parser.blank) {\n parser.advanceNextNonspace();\n } else {\n return 1;\n }\n }\n return 0;\n },\n finalize: function(parser, block) {\n if (block._isFenced) { // fenced\n // first line becomes info string\n var content = block._string_content;\n var newlinePos = content.indexOf('\\n');\n var firstLine = content.slice(0, newlinePos);\n var rest = content.slice(newlinePos + 1);\n block.info = unescapeString(firstLine.trim());\n block._literal = rest;\n } else { // indented\n block._literal = block._string_content.replace(/(\\n *)+$/, '\\n');\n }\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n html_block: {\n continue: function(parser, container) {\n return ((parser.blank &&\n (container._htmlBlockType === 6 ||\n container._htmlBlockType === 7)) ? 1 : 0);\n },\n finalize: function(parser, block) {\n block._literal = block._string_content.replace(/(\\n *)+$/, '');\n block._string_content = null; // allow GC\n },\n canContain: function() { return false; },\n acceptsLines: true\n },\n paragraph: {\n continue: function(parser) {\n return (parser.blank ? 1 : 0);\n },\n finalize: function(parser, block) {\n var pos;\n var hasReferenceDefs = false;\n\n // try parsing the beginning as link reference definitions:\n while (peek(block._string_content, 0) === C_OPEN_BRACKET &&\n (pos =\n parser.inlineParser.parseReference(block._string_content,\n parser.refmap))) {\n block._string_content = block._string_content.slice(pos);\n hasReferenceDefs = true;\n }\n if (hasReferenceDefs && isBlank(block._string_content)) {\n block.unlink();\n }\n },\n canContain: function() { return false; },\n acceptsLines: true\n }\n};\n\n// block start functions. Return values:\n// 0 = no match\n// 1 = matched container, keep going\n// 2 = matched leaf, no more block starts\nvar blockStarts = [\n // block quote\n function(parser) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_GREATERTHAN) {\n parser.advanceNextNonspace();\n parser.advanceOffset(1, false);\n // optional following space\n if (isSpaceOrTab(peek(parser.currentLine, parser.offset))) {\n parser.advanceOffset(1, true);\n }\n parser.closeUnmatchedBlocks();\n parser.addChild('block_quote', parser.nextNonspace);\n return 1;\n } else {\n return 0;\n }\n },\n\n // ATX heading\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reATXHeadingMarker))) {\n parser.advanceNextNonspace();\n parser.advanceOffset(match[0].length, false);\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('heading', parser.nextNonspace);\n container.level = match[0].trim().length; // number of #s\n // remove trailing ###s:\n container._string_content =\n parser.currentLine.slice(parser.offset).replace(/^[ \\t]*#+[ \\t]*$/, '').replace(/[ \\t]+#+[ \\t]*$/, '');\n parser.advanceOffset(parser.currentLine.length - parser.offset);\n return 2;\n } else {\n return 0;\n }\n },\n\n // Fenced code block\n function(parser) {\n var match;\n if (!parser.indented &&\n (match = parser.currentLine.slice(parser.nextNonspace).match(reCodeFence))) {\n var fenceLength = match[0].length;\n parser.closeUnmatchedBlocks();\n var container = parser.addChild('code_block', parser.nextNonspace);\n container._isFenced = true;\n container._fenceLength = fenceLength;\n container._fenceChar = match[0][0];\n container._fenceOffset = parser.indent;\n parser.advanceNextNonspace();\n parser.advanceOffset(fenceLength, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // HTML block\n function(parser, container) {\n if (!parser.indented &&\n peek(parser.currentLine, parser.nextNonspace) === C_LESSTHAN) {\n var s = parser.currentLine.slice(parser.nextNonspace);\n var blockType;\n\n for (blockType = 1; blockType <= 7; blockType++) {\n if (reHtmlBlockOpen[blockType].test(s) &&\n (blockType < 7 ||\n container.type !== 'paragraph')) {\n parser.closeUnmatchedBlocks();\n // We don't adjust parser.offset;\n // spaces are part of the HTML block:\n var b = parser.addChild('html_block',\n parser.offset);\n b._htmlBlockType = blockType;\n return 2;\n }\n }\n }\n\n return 0;\n\n },\n\n // Setext heading\n function(parser, container) {\n var match;\n if (!parser.indented &&\n container.type === 'paragraph' &&\n ((match = parser.currentLine.slice(parser.nextNonspace).match(reSetextHeadingLine)))) {\n parser.closeUnmatchedBlocks();\n var heading = new Node('heading', container.sourcepos);\n heading.level = match[0][0] === '=' ? 1 : 2;\n heading._string_content = container._string_content;\n container.insertAfter(heading);\n container.unlink();\n parser.tip = heading;\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // thematic break\n function(parser) {\n if (!parser.indented &&\n reThematicBreak.test(parser.currentLine.slice(parser.nextNonspace))) {\n parser.closeUnmatchedBlocks();\n parser.addChild('thematic_break', parser.nextNonspace);\n parser.advanceOffset(parser.currentLine.length - parser.offset, false);\n return 2;\n } else {\n return 0;\n }\n },\n\n // list item\n function(parser, container) {\n var data;\n\n if ((!parser.indented || container.type === 'list')\n && (data = parseListMarker(parser, container))) {\n parser.closeUnmatchedBlocks();\n\n // add the list if needed\n if (parser.tip.type !== 'list' ||\n !(listsMatch(container._listData, data))) {\n container = parser.addChild('list', parser.nextNonspace);\n container._listData = data;\n }\n\n // add the list item\n container = parser.addChild('item', parser.nextNonspace);\n container._listData = data;\n return 1;\n } else {\n return 0;\n }\n },\n\n // indented code block\n function(parser) {\n if (parser.indented &&\n parser.tip.type !== 'paragraph' &&\n !parser.blank) {\n // indented code\n parser.advanceOffset(CODE_INDENT, true);\n parser.closeUnmatchedBlocks();\n parser.addChild('code_block', parser.offset);\n return 2;\n } else {\n return 0;\n }\n }\n\n];\n\nvar advanceOffset = function(count, columns) {\n var currentLine = this.currentLine;\n var charsToTab, charsToAdvance;\n var c;\n while (count > 0 && (c = currentLine[this.offset])) {\n if (c === '\\t') {\n charsToTab = 4 - (this.column % 4);\n if (columns) {\n this.partiallyConsumedTab = charsToTab > count;\n charsToAdvance = charsToTab > count ? count : charsToTab;\n this.column += charsToAdvance;\n this.offset += this.partiallyConsumedTab ? 0 : 1;\n count -= charsToAdvance;\n } else {\n this.partiallyConsumedTab = false;\n this.column += charsToTab;\n this.offset += 1;\n count -= 1;\n }\n } else {\n this.partiallyConsumedTab = false;\n this.offset += 1;\n this.column += 1; // assume ascii; block starts are ascii\n count -= 1;\n }\n }\n};\n\nvar advanceNextNonspace = function() {\n this.offset = this.nextNonspace;\n this.column = this.nextNonspaceColumn;\n this.partiallyConsumedTab = false;\n};\n\nvar findNextNonspace = function() {\n var currentLine = this.currentLine;\n var i = this.offset;\n var cols = this.column;\n var c;\n\n while ((c = currentLine.charAt(i)) !== '') {\n if (c === ' ') {\n i++;\n cols++;\n } else if (c === '\\t') {\n i++;\n cols += (4 - (cols % 4));\n } else {\n break;\n }\n }\n this.blank = (c === '\\n' || c === '\\r' || c === '');\n this.nextNonspace = i;\n this.nextNonspaceColumn = cols;\n this.indent = this.nextNonspaceColumn - this.column;\n this.indented = this.indent >= CODE_INDENT;\n};\n\n// Analyze a line of text and update the document appropriately.\n// We parse markdown text by calling this on each line of input,\n// then finalizing the document.\nvar incorporateLine = function(ln) {\n var all_matched = true;\n var t;\n\n var container = this.doc;\n this.oldtip = this.tip;\n this.offset = 0;\n this.column = 0;\n this.blank = false;\n this.partiallyConsumedTab = false;\n this.lineNumber += 1;\n\n // replace NUL characters for security\n if (ln.indexOf('\\u0000') !== -1) {\n ln = ln.replace(/\\0/g, '\\uFFFD');\n }\n\n this.currentLine = ln;\n\n // For each containing block, try to parse the associated line start.\n // Bail out on failure: container will point to the last matching block.\n // Set all_matched to false if not all containers match.\n var lastChild;\n while ((lastChild = container._lastChild) && lastChild._open) {\n container = lastChild;\n\n this.findNextNonspace();\n\n switch (this.blocks[container.type].continue(this, container)) {\n case 0: // we've matched, keep going\n break;\n case 1: // we've failed to match a block\n all_matched = false;\n break;\n case 2: // we've hit end of line for fenced code close and can return\n this.lastLineLength = ln.length;\n return;\n default:\n throw 'continue returned illegal value, must be 0, 1, or 2';\n }\n if (!all_matched) {\n container = container._parent; // back up to last matching block\n break;\n }\n }\n\n this.allClosed = (container === this.oldtip);\n this.lastMatchedContainer = container;\n\n var matchedLeaf = container.type !== 'paragraph' &&\n blocks[container.type].acceptsLines;\n var starts = this.blockStarts;\n var startsLen = starts.length;\n // Unless last matched container is a code block, try new container starts,\n // adding children to the last matched container:\n while (!matchedLeaf) {\n\n this.findNextNonspace();\n\n // this is a little performance optimization:\n if (!this.indented &&\n !reMaybeSpecial.test(ln.slice(this.nextNonspace))) {\n this.advanceNextNonspace();\n break;\n }\n\n var i = 0;\n while (i < startsLen) {\n var res = starts[i](this, container);\n if (res === 1) {\n container = this.tip;\n break;\n } else if (res === 2) {\n container = this.tip;\n matchedLeaf = true;\n break;\n } else {\n i++;\n }\n }\n\n if (i === startsLen) { // nothing matched\n this.advanceNextNonspace();\n break;\n }\n }\n\n // What remains at the offset is a text line. Add the text to the\n // appropriate container.\n\n // First check for a lazy paragraph continuation:\n if (!this.allClosed && !this.blank &&\n this.tip.type === 'paragraph') {\n // lazy paragraph continuation\n this.addLine();\n\n } else { // not a lazy continuation\n\n // finalize any blocks not matched\n this.closeUnmatchedBlocks();\n if (this.blank && container.lastChild) {\n container.lastChild._lastLineBlank = true;\n }\n\n t = container.type;\n\n // Block quote lines are never blank as they start with >\n // and we don't count blanks in fenced code for purposes of tight/loose\n // lists or breaking out of lists. We also don't set _lastLineBlank\n // on an empty list item, or if we just closed a fenced block.\n var lastLineBlank = this.blank &&\n !(t === 'block_quote' ||\n (t === 'code_block' && container._isFenced) ||\n (t === 'item' &&\n !container._firstChild &&\n container.sourcepos[0][0] === this.lineNumber));\n\n // propagate lastLineBlank up through parents:\n var cont = container;\n while (cont) {\n cont._lastLineBlank = lastLineBlank;\n cont = cont._parent;\n }\n\n if (this.blocks[t].acceptsLines) {\n this.addLine();\n // if HtmlBlock, check for end condition\n if (t === 'html_block' &&\n container._htmlBlockType >= 1 &&\n container._htmlBlockType <= 5 &&\n reHtmlBlockClose[container._htmlBlockType].test(this.currentLine.slice(this.offset))) {\n this.finalize(container, this.lineNumber);\n }\n\n } else if (this.offset < ln.length && !this.blank) {\n // create paragraph container for line\n container = this.addChild('paragraph', this.offset);\n this.advanceNextNonspace();\n this.addLine();\n }\n }\n this.lastLineLength = ln.length;\n};\n\n// Finalize a block. Close it and do any necessary postprocessing,\n// e.g. creating string_content from strings, setting the 'tight'\n// or 'loose' status of a list, and parsing the beginnings\n// of paragraphs for reference definitions. Reset the tip to the\n// parent of the closed block.\nvar finalize = function(block, lineNumber) {\n var above = block._parent;\n block._open = false;\n block.sourcepos[1] = [lineNumber, this.lastLineLength];\n\n this.blocks[block.type].finalize(this, block);\n\n this.tip = above;\n};\n\n// Walk through a block & children recursively, parsing string content\n// into inline content where appropriate.\nvar processInlines = function(block) {\n var node, event, t;\n var walker = block.walker();\n this.inlineParser.refmap = this.refmap;\n this.inlineParser.options = this.options;\n while ((event = walker.next())) {\n node = event.node;\n t = node.type;\n if (!event.entering && (t === 'paragraph' || t === 'heading')) {\n this.inlineParser.parse(node);\n }\n }\n};\n\nvar Document = function() {\n var doc = new Node('document', [[1, 1], [0, 0]]);\n return doc;\n};\n\n// The main parsing function. Returns a parsed document AST.\nvar parse = function(input) {\n this.doc = new Document();\n this.tip = this.doc;\n this.refmap = {};\n this.lineNumber = 0;\n this.lastLineLength = 0;\n this.offset = 0;\n this.column = 0;\n this.lastMatchedContainer = this.doc;\n this.currentLine = \"\";\n if (this.options.time) { console.time(\"preparing input\"); }\n var lines = input.split(reLineEnding);\n var len = lines.length;\n if (input.charCodeAt(input.length - 1) === C_NEWLINE) {\n // ignore last blank line created by final newline\n len -= 1;\n }\n if (this.options.time) { console.timeEnd(\"preparing input\"); }\n if (this.options.time) { console.time(\"block parsing\"); }\n for (var i = 0; i < len; i++) {\n this.incorporateLine(lines[i]);\n }\n while (this.tip) {\n this.finalize(this.tip, len);\n }\n if (this.options.time) { console.timeEnd(\"block parsing\"); }\n if (this.options.time) { console.time(\"inline parsing\"); }\n this.processInlines(this.doc);\n if (this.options.time) { console.timeEnd(\"inline parsing\"); }\n return this.doc;\n};\n\n\n// The Parser object.\nfunction Parser(options){\n return {\n doc: new Document(),\n blocks: blocks,\n blockStarts: blockStarts,\n tip: this.doc,\n oldtip: this.doc,\n currentLine: \"\",\n lineNumber: 0,\n offset: 0,\n column: 0,\n nextNonspace: 0,\n nextNonspaceColumn: 0,\n indent: 0,\n indented: false,\n blank: false,\n partiallyConsumedTab: false,\n allClosed: true,\n lastMatchedContainer: this.doc,\n refmap: {},\n lastLineLength: 0,\n inlineParser: new InlineParser(options),\n findNextNonspace: findNextNonspace,\n advanceOffset: advanceOffset,\n advanceNextNonspace: advanceNextNonspace,\n addLine: addLine,\n addChild: addChild,\n incorporateLine: incorporateLine,\n finalize: finalize,\n processInlines: processInlines,\n closeUnmatchedBlocks: closeUnmatchedBlocks,\n parse: parse,\n options: options || {}\n };\n}\n\nmodule.exports = Parser;\n","\n'use strict';\n\n\nvar encodeCache = {};\n\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache(exclude) {\n var i, ch, cache = encodeCache[exclude];\n if (cache) { return cache; }\n\n cache = encodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n\n if (/^[0-9a-z]$/i.test(ch)) {\n // always allow unencoded alphanumeric characters\n cache.push(ch);\n } else {\n cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2));\n }\n }\n\n for (i = 0; i < exclude.length; i++) {\n cache[exclude.charCodeAt(i)] = exclude[i];\n }\n\n return cache;\n}\n\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n// - string - string to encode\n// - exclude - list of characters to ignore (in addition to a-zA-Z0-9)\n// - keepEscaped - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode(string, exclude, keepEscaped) {\n var i, l, code, nextCode, cache,\n result = '';\n\n if (typeof exclude !== 'string') {\n // encode(string, keepEscaped)\n keepEscaped = exclude;\n exclude = encode.defaultChars;\n }\n\n if (typeof keepEscaped === 'undefined') {\n keepEscaped = true;\n }\n\n cache = getEncodeCache(exclude);\n\n for (i = 0, l = string.length; i < l; i++) {\n code = string.charCodeAt(i);\n\n if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n result += string.slice(i, i + 3);\n i += 2;\n continue;\n }\n }\n\n if (code < 128) {\n result += cache[code];\n continue;\n }\n\n if (code >= 0xD800 && code <= 0xDFFF) {\n if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n nextCode = string.charCodeAt(i + 1);\n if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n result += encodeURIComponent(string[i] + string[i + 1]);\n i++;\n continue;\n }\n }\n result += '%EF%BF%BD';\n continue;\n }\n\n result += encodeURIComponent(string[i]);\n }\n\n return result;\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\";\nencode.componentChars = \"-_.!~*'()\";\n\n\nmodule.exports = encode;\n","\n'use strict';\n\n\n/* eslint-disable no-bitwise */\n\nvar decodeCache = {};\n\nfunction getDecodeCache(exclude) {\n var i, ch, cache = decodeCache[exclude];\n if (cache) { return cache; }\n\n cache = decodeCache[exclude] = [];\n\n for (i = 0; i < 128; i++) {\n ch = String.fromCharCode(i);\n cache.push(ch);\n }\n\n for (i = 0; i < exclude.length; i++) {\n ch = exclude.charCodeAt(i);\n cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2);\n }\n\n return cache;\n}\n\n\n// Decode percent-encoded string.\n//\nfunction decode(string, exclude) {\n var cache;\n\n if (typeof exclude !== 'string') {\n exclude = decode.defaultChars;\n }\n\n cache = getDecodeCache(exclude);\n\n return string.replace(/(%[a-f0-9]{2})+/gi, function(seq) {\n var i, l, b1, b2, b3, b4, chr,\n result = '';\n\n for (i = 0, l = seq.length; i < l; i += 3) {\n b1 = parseInt(seq.slice(i + 1, i + 3), 16);\n\n if (b1 < 0x80) {\n result += cache[b1];\n continue;\n }\n\n if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n // 110xxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n\n if ((b2 & 0xC0) === 0x80) {\n chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F);\n\n if (chr < 0x80) {\n result += '\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 3;\n continue;\n }\n }\n\n if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n // 1110xxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F);\n\n if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n result += '\\ufffd\\ufffd\\ufffd';\n } else {\n result += String.fromCharCode(chr);\n }\n\n i += 6;\n continue;\n }\n }\n\n if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n b2 = parseInt(seq.slice(i + 4, i + 6), 16);\n b3 = parseInt(seq.slice(i + 7, i + 9), 16);\n b4 = parseInt(seq.slice(i + 10, i + 12), 16);\n\n if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F);\n\n if (chr < 0x10000 || chr > 0x10FFFF) {\n result += '\\ufffd\\ufffd\\ufffd\\ufffd';\n } else {\n chr -= 0x10000;\n result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF));\n }\n\n i += 9;\n continue;\n }\n }\n\n result += '\\ufffd';\n }\n\n return result;\n });\n}\n\n\ndecode.defaultChars = ';/?:@&=+$,#';\ndecode.componentChars = '';\n\n\nmodule.exports = decode;\n","\"use strict\";\n\nvar Node = require('./node');\nvar common = require('./common');\nvar normalizeReference = require('./normalize-reference');\n\nvar normalizeURI = common.normalizeURI;\nvar unescapeString = common.unescapeString;\nvar fromCodePoint = require('./from-code-point.js');\nvar decodeHTML = require('entities').decodeHTML;\nrequire('string.prototype.repeat'); // Polyfill for String.prototype.repeat\n\n// Constants for character codes:\n\nvar C_NEWLINE = 10;\nvar C_ASTERISK = 42;\nvar C_UNDERSCORE = 95;\nvar C_BACKTICK = 96;\nvar C_OPEN_BRACKET = 91;\nvar C_CLOSE_BRACKET = 93;\nvar C_LESSTHAN = 60;\nvar C_BANG = 33;\nvar C_BACKSLASH = 92;\nvar C_AMPERSAND = 38;\nvar C_OPEN_PAREN = 40;\nvar C_CLOSE_PAREN = 41;\nvar C_COLON = 58;\nvar C_SINGLEQUOTE = 39;\nvar C_DOUBLEQUOTE = 34;\n\n// Some regexps used in inline parser:\n\nvar ESCAPABLE = common.ESCAPABLE;\nvar ESCAPED_CHAR = '\\\\\\\\' + ESCAPABLE;\n\nvar ENTITY = common.ENTITY;\nvar reHtmlTag = common.reHtmlTag;\n\nvar rePunctuation = new RegExp(/[!\"#$%&'()*+,\\-./:;<=>?@\\[\\]^_`{|}~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC9\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDF3C-\\uDF3E]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]/);\n\nvar reLinkTitle = new RegExp(\n '^(?:\"(' + ESCAPED_CHAR + '|[^\"\\\\x00])*\"' +\n '|' +\n '\\'(' + ESCAPED_CHAR + '|[^\\'\\\\x00])*\\'' +\n '|' +\n '\\\\((' + ESCAPED_CHAR + '|[^)\\\\x00])*\\\\))');\n\nvar reLinkDestinationBraces = new RegExp(\n '^(?:[<](?:[^ <>\\\\t\\\\n\\\\\\\\\\\\x00]' + '|' + ESCAPED_CHAR + '|' + '\\\\\\\\)*[>])');\n\nvar reEscapable = new RegExp('^' + ESCAPABLE);\n\nvar reEntityHere = new RegExp('^' + ENTITY, 'i');\n\nvar reTicks = /`+/;\n\nvar reTicksHere = /^`+/;\n\nvar reEllipses = /\\.\\.\\./g;\n\nvar reDash = /--+/g;\n\nvar reEmailAutolink = /^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/;\n\nvar reAutolink = /^<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\\x00-\\x20]*>/i;\n\nvar reSpnl = /^ *(?:\\n *)?/;\n\nvar reWhitespaceChar = /^[ \\t\\n\\x0b\\x0c\\x0d]/;\n\nvar reWhitespace = /[ \\t\\n\\x0b\\x0c\\x0d]+/g;\n\nvar reUnicodeWhitespaceChar = /^\\s/;\n\nvar reFinalSpace = / *$/;\n\nvar reInitialSpace = /^ */;\n\nvar reSpaceAtEndOfLine = /^ *(?:\\n|$)/;\n\nvar reLinkLabel = new RegExp('^\\\\[(?:[^\\\\\\\\\\\\[\\\\]]|' + ESCAPED_CHAR +\n '|\\\\\\\\){0,1000}\\\\]');\n\n// Matches a string of non-special characters.\nvar reMain = /^[^\\n`\\[\\]\\\\!<&*_'\"]+/m;\n\nvar text = function(s) {\n var node = new Node('text');\n node._literal = s;\n return node;\n};\n\n// INLINE PARSER\n\n// These are methods of an InlineParser object, defined below.\n// An InlineParser keeps track of a subject (a string to be\n// parsed) and a position in that subject.\n\n// If re matches at current position in the subject, advance\n// position in subject and return the match; otherwise return null.\nvar match = function(re) {\n var m = re.exec(this.subject.slice(this.pos));\n if (m === null) {\n return null;\n } else {\n this.pos += m.index + m[0].length;\n return m[0];\n }\n};\n\n// Returns the code for the character at the current subject position, or -1\n// there are no more characters.\nvar peek = function() {\n if (this.pos < this.subject.length) {\n return this.subject.charCodeAt(this.pos);\n } else {\n return -1;\n }\n};\n\n// Parse zero or more space characters, including at most one newline\nvar spnl = function() {\n this.match(reSpnl);\n return true;\n};\n\n// All of the parsers below try to match something at the current position\n// in the subject. If they succeed in matching anything, they\n// return the inline matched, advancing the subject.\n\n// Attempt to parse backticks, adding either a backtick code span or a\n// literal sequence of backticks.\nvar parseBackticks = function(block) {\n var ticks = this.match(reTicksHere);\n if (ticks === null) {\n return false;\n }\n var afterOpenTicks = this.pos;\n var matched;\n var node;\n while ((matched = this.match(reTicks)) !== null) {\n if (matched === ticks) {\n node = new Node('code');\n node._literal = this.subject.slice(afterOpenTicks,\n this.pos - ticks.length)\n .trim().replace(reWhitespace, ' ');\n block.appendChild(node);\n return true;\n }\n }\n // If we got here, we didn't match a closing backtick sequence.\n this.pos = afterOpenTicks;\n block.appendChild(text(ticks));\n return true;\n};\n\n// Parse a backslash-escaped special character, adding either the escaped\n// character, a hard line break (if the backslash is followed by a newline),\n// or a literal backslash to the block's children. Assumes current character\n// is a backslash.\nvar parseBackslash = function(block) {\n var subj = this.subject;\n var node;\n this.pos += 1;\n if (this.peek() === C_NEWLINE) {\n this.pos += 1;\n node = new Node('linebreak');\n block.appendChild(node);\n } else if (reEscapable.test(subj.charAt(this.pos))) {\n block.appendChild(text(subj.charAt(this.pos)));\n this.pos += 1;\n } else {\n block.appendChild(text('\\\\'));\n }\n return true;\n};\n\n// Attempt to parse an autolink (URL or email in pointy brackets).\nvar parseAutolink = function(block) {\n var m;\n var dest;\n var node;\n if ((m = this.match(reEmailAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('link');\n node._destination = normalizeURI('mailto:' + dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else if ((m = this.match(reAutolink))) {\n dest = m.slice(1, m.length - 1);\n node = new Node('link');\n node._destination = normalizeURI(dest);\n node._title = '';\n node.appendChild(text(dest));\n block.appendChild(node);\n return true;\n } else {\n return false;\n }\n};\n\n// Attempt to parse a raw HTML tag.\nvar parseHtmlTag = function(block) {\n var m = this.match(reHtmlTag);\n if (m === null) {\n return false;\n } else {\n var node = new Node('html_inline');\n node._literal = m;\n block.appendChild(node);\n return true;\n }\n};\n\n// Scan a sequence of characters with code cc, and return information about\n// the number of delimiters and whether they are positioned such that\n// they can open and/or close emphasis or strong emphasis. A utility\n// function for strong/emph parsing.\nvar scanDelims = function(cc) {\n var numdelims = 0;\n var char_before, char_after, cc_after;\n var startpos = this.pos;\n var left_flanking, right_flanking, can_open, can_close;\n var after_is_whitespace, after_is_punctuation, before_is_whitespace, before_is_punctuation;\n\n if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n numdelims++;\n this.pos++;\n } else {\n while (this.peek() === cc) {\n numdelims++;\n this.pos++;\n }\n }\n\n if (numdelims === 0) {\n return null;\n }\n\n char_before = startpos === 0 ? '\\n' : this.subject.charAt(startpos - 1);\n\n cc_after = this.peek();\n if (cc_after === -1) {\n char_after = '\\n';\n } else {\n char_after = fromCodePoint(cc_after);\n }\n\n after_is_whitespace = reUnicodeWhitespaceChar.test(char_after);\n after_is_punctuation = rePunctuation.test(char_after);\n before_is_whitespace = reUnicodeWhitespaceChar.test(char_before);\n before_is_punctuation = rePunctuation.test(char_before);\n\n left_flanking = !after_is_whitespace &&\n (!after_is_punctuation || before_is_whitespace || before_is_punctuation);\n right_flanking = !before_is_whitespace &&\n (!before_is_punctuation || after_is_whitespace || after_is_punctuation);\n if (cc === C_UNDERSCORE) {\n can_open = left_flanking &&\n (!right_flanking || before_is_punctuation);\n can_close = right_flanking &&\n (!left_flanking || after_is_punctuation);\n } else if (cc === C_SINGLEQUOTE || cc === C_DOUBLEQUOTE) {\n can_open = left_flanking && !right_flanking;\n can_close = right_flanking;\n } else {\n can_open = left_flanking;\n can_close = right_flanking;\n }\n this.pos = startpos;\n return { numdelims: numdelims,\n can_open: can_open,\n can_close: can_close };\n};\n\n// Handle a delimiter marker for emphasis or a quote.\nvar handleDelim = function(cc, block) {\n var res = this.scanDelims(cc);\n if (!res) {\n return false;\n }\n var numdelims = res.numdelims;\n var startpos = this.pos;\n var contents;\n\n this.pos += numdelims;\n if (cc === C_SINGLEQUOTE) {\n contents = \"\\u2019\";\n } else if (cc === C_DOUBLEQUOTE) {\n contents = \"\\u201C\";\n } else {\n contents = this.subject.slice(startpos, this.pos);\n }\n var node = text(contents);\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.delimiters = { cc: cc,\n numdelims: numdelims,\n origdelims: numdelims,\n node: node,\n previous: this.delimiters,\n next: null,\n can_open: res.can_open,\n can_close: res.can_close };\n if (this.delimiters.previous !== null) {\n this.delimiters.previous.next = this.delimiters;\n }\n\n return true;\n\n};\n\nvar removeDelimiter = function(delim) {\n if (delim.previous !== null) {\n delim.previous.next = delim.next;\n }\n if (delim.next === null) {\n // top of stack\n this.delimiters = delim.previous;\n } else {\n delim.next.previous = delim.previous;\n }\n};\n\nvar removeDelimitersBetween = function(bottom, top) {\n if (bottom.next !== top) {\n bottom.next = top;\n top.previous = bottom;\n }\n};\n\nvar processEmphasis = function(stack_bottom) {\n var opener, closer, old_closer;\n var opener_inl, closer_inl;\n var tempstack;\n var use_delims;\n var tmp, next;\n var opener_found;\n var openers_bottom = [];\n var odd_match = false;\n\n openers_bottom[C_UNDERSCORE] = stack_bottom;\n openers_bottom[C_ASTERISK] = stack_bottom;\n openers_bottom[C_SINGLEQUOTE] = stack_bottom;\n openers_bottom[C_DOUBLEQUOTE] = stack_bottom;\n\n // find first closer above stack_bottom:\n closer = this.delimiters;\n while (closer !== null && closer.previous !== stack_bottom) {\n closer = closer.previous;\n }\n // move forward, looking for closers, and handling each\n while (closer !== null) {\n var closercc = closer.cc;\n if (!closer.can_close) {\n closer = closer.next;\n } else {\n // found emphasis closer. now look back for first matching opener:\n opener = closer.previous;\n opener_found = false;\n while (opener !== null && opener !== stack_bottom &&\n opener !== openers_bottom[closercc]) {\n odd_match = (closer.can_open || opener.can_close) &&\n (opener.origdelims + closer.origdelims) % 3 === 0;\n if (opener.cc === closer.cc && opener.can_open && !odd_match) {\n opener_found = true;\n break;\n }\n opener = opener.previous;\n }\n old_closer = closer;\n\n if (closercc === C_ASTERISK || closercc === C_UNDERSCORE) {\n if (!opener_found) {\n closer = closer.next;\n } else {\n // calculate actual number of delimiters used from closer\n use_delims =\n (closer.numdelims >= 2 && opener.numdelims >= 2) ? 2 : 1;\n\n opener_inl = opener.node;\n closer_inl = closer.node;\n\n // remove used delimiters from stack elts and inlines\n opener.numdelims -= use_delims;\n closer.numdelims -= use_delims;\n opener_inl._literal =\n opener_inl._literal.slice(0,\n opener_inl._literal.length - use_delims);\n closer_inl._literal =\n closer_inl._literal.slice(0,\n closer_inl._literal.length - use_delims);\n\n // build contents for new emph element\n var emph = new Node(use_delims === 1 ? 'emph' : 'strong');\n\n tmp = opener_inl._next;\n while (tmp && tmp !== closer_inl) {\n next = tmp._next;\n tmp.unlink();\n emph.appendChild(tmp);\n tmp = next;\n }\n\n opener_inl.insertAfter(emph);\n\n // remove elts between opener and closer in delimiters stack\n removeDelimitersBetween(opener, closer);\n\n // if opener has 0 delims, remove it and the inline\n if (opener.numdelims === 0) {\n opener_inl.unlink();\n this.removeDelimiter(opener);\n }\n\n if (closer.numdelims === 0) {\n closer_inl.unlink();\n tempstack = closer.next;\n this.removeDelimiter(closer);\n closer = tempstack;\n }\n\n }\n\n } else if (closercc === C_SINGLEQUOTE) {\n closer.node._literal = \"\\u2019\";\n if (opener_found) {\n opener.node._literal = \"\\u2018\";\n }\n closer = closer.next;\n\n } else if (closercc === C_DOUBLEQUOTE) {\n closer.node._literal = \"\\u201D\";\n if (opener_found) {\n opener.node.literal = \"\\u201C\";\n }\n closer = closer.next;\n\n }\n if (!opener_found && !odd_match) {\n // Set lower bound for future searches for openers:\n // We don't do this with odd_match because a **\n // that doesn't match an earlier * might turn into\n // an opener, and the * might be matched by something\n // else.\n openers_bottom[closercc] = old_closer.previous;\n if (!old_closer.can_open) {\n // We can remove a closer that can't be an opener,\n // once we've seen there's no matching opener:\n this.removeDelimiter(old_closer);\n }\n }\n }\n\n }\n\n // remove all delimiters\n while (this.delimiters !== null && this.delimiters !== stack_bottom) {\n this.removeDelimiter(this.delimiters);\n }\n};\n\n// Attempt to parse link title (sans quotes), returning the string\n// or null if no match.\nvar parseLinkTitle = function() {\n var title = this.match(reLinkTitle);\n if (title === null) {\n return null;\n } else {\n // chop off quotes from title and unescape:\n return unescapeString(title.substr(1, title.length - 2));\n }\n};\n\n// Attempt to parse link destination, returning the string or\n// null if no match.\nvar parseLinkDestination = function() {\n var res = this.match(reLinkDestinationBraces);\n if (res === null) {\n // TODO handrolled parser; res should be null or the string\n var savepos = this.pos;\n var openparens = 0;\n var c;\n while ((c = this.peek()) !== -1) {\n if (c === C_BACKSLASH) {\n this.pos += 1;\n if (this.peek() !== -1) {\n this.pos += 1;\n }\n } else if (c === C_OPEN_PAREN) {\n this.pos += 1;\n openparens += 1;\n } else if (c === C_CLOSE_PAREN) {\n if (openparens < 1) {\n break;\n } else {\n this.pos += 1;\n openparens -= 1;\n }\n } else if (reWhitespaceChar.exec(fromCodePoint(c)) !== null) {\n break;\n } else {\n this.pos += 1;\n }\n }\n res = this.subject.substr(savepos, this.pos - savepos);\n return normalizeURI(unescapeString(res));\n } else { // chop off surrounding <..>:\n return normalizeURI(unescapeString(res.substr(1, res.length - 2)));\n }\n};\n\n// Attempt to parse a link label, returning number of characters parsed.\nvar parseLinkLabel = function() {\n var m = this.match(reLinkLabel);\n // Note: our regex will allow something of form [..\\];\n // we disallow it here rather than using lookahead in the regex:\n if (m === null || m.length > 1001 || /[^\\\\]\\\\\\]$/.exec(m)) {\n return 0;\n } else {\n return m.length;\n }\n};\n\n// Add open bracket to delimiter stack and add a text node to block's children.\nvar parseOpenBracket = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n\n var node = text('[');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos, false);\n return true;\n};\n\n// IF next character is [, and ! delimiter to delimiter stack and\n// add a text node to block's children. Otherwise just add a text node.\nvar parseBang = function(block) {\n var startpos = this.pos;\n this.pos += 1;\n if (this.peek() === C_OPEN_BRACKET) {\n this.pos += 1;\n\n var node = text('![');\n block.appendChild(node);\n\n // Add entry to stack for this opener\n this.addBracket(node, startpos + 1, true);\n } else {\n block.appendChild(text('!'));\n }\n return true;\n};\n\n// Try to match close bracket against an opening in the delimiter\n// stack. Add either a link or image, or a plain [ character,\n// to block's children. If there is a matching delimiter,\n// remove it from the delimiter stack.\nvar parseCloseBracket = function(block) {\n var startpos;\n var is_image;\n var dest;\n var title;\n var matched = false;\n var reflabel;\n var opener;\n\n this.pos += 1;\n startpos = this.pos;\n\n // get last [ or ![\n opener = this.brackets;\n\n if (opener === null) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n return true;\n }\n\n if (!opener.active) {\n // no matched opener, just return a literal\n block.appendChild(text(']'));\n // take opener off brackets stack\n this.removeBracket();\n return true;\n }\n\n // If we got here, open is a potential opener\n is_image = opener.image;\n\n // Check to see if we have a link/image\n\n var savepos = this.pos;\n\n // Inline link?\n if (this.peek() === C_OPEN_PAREN) {\n this.pos++;\n if (this.spnl() &&\n ((dest = this.parseLinkDestination()) !== null) &&\n this.spnl() &&\n // make sure there's a space before the title:\n (reWhitespaceChar.test(this.subject.charAt(this.pos - 1)) &&\n (title = this.parseLinkTitle()) || true) &&\n this.spnl() &&\n this.peek() === C_CLOSE_PAREN) {\n this.pos += 1;\n matched = true;\n } else {\n this.pos = savepos;\n }\n }\n\n if (!matched) {\n\n // Next, see if there's a link label\n var beforelabel = this.pos;\n var n = this.parseLinkLabel();\n if (n > 2) {\n reflabel = this.subject.slice(beforelabel, beforelabel + n);\n } else if (!opener.bracketAfter) {\n // Empty or missing second label means to use the first label as the reference.\n // The reference must not contain a bracket. If we know there's a bracket, we don't even bother checking it.\n reflabel = this.subject.slice(opener.index, startpos);\n }\n if (n === 0) {\n // If shortcut reference link, rewind before spaces we skipped.\n this.pos = savepos;\n }\n\n if (reflabel) {\n // lookup rawlabel in refmap\n var link = this.refmap[normalizeReference(reflabel)];\n if (link) {\n dest = link.destination;\n title = link.title;\n matched = true;\n }\n }\n }\n\n if (matched) {\n var node = new Node(is_image ? 'image' : 'link');\n node._destination = dest;\n node._title = title || '';\n\n var tmp, next;\n tmp = opener.node._next;\n while (tmp) {\n next = tmp._next;\n tmp.unlink();\n node.appendChild(tmp);\n tmp = next;\n }\n block.appendChild(node);\n this.processEmphasis(opener.previousDelimiter);\n this.removeBracket();\n opener.node.unlink();\n\n // We remove this bracket and processEmphasis will remove later delimiters.\n // Now, for a link, we also deactivate earlier link openers.\n // (no links in links)\n if (!is_image) {\n opener = this.brackets;\n while (opener !== null) {\n if (!opener.image) {\n opener.active = false; // deactivate this opener\n }\n opener = opener.previous;\n }\n }\n\n return true;\n\n } else { // no match\n\n this.removeBracket(); // remove this opener from stack\n this.pos = startpos;\n block.appendChild(text(']'));\n return true;\n }\n\n};\n\nvar addBracket = function(node, index, image) {\n if (this.brackets !== null) {\n this.brackets.bracketAfter = true;\n }\n this.brackets = { node: node,\n previous: this.brackets,\n previousDelimiter: this.delimiters,\n index: index,\n image: image,\n active: true };\n};\n\nvar removeBracket = function() {\n this.brackets = this.brackets.previous;\n};\n\n// Attempt to parse an entity.\nvar parseEntity = function(block) {\n var m;\n if ((m = this.match(reEntityHere))) {\n block.appendChild(text(decodeHTML(m)));\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a run of ordinary characters, or a single character with\n// a special meaning in markdown, as a plain string.\nvar parseString = function(block) {\n var m;\n if ((m = this.match(reMain))) {\n if (this.options.smart) {\n block.appendChild(text(\n m.replace(reEllipses, \"\\u2026\")\n .replace(reDash, function(chars) {\n var enCount = 0;\n var emCount = 0;\n if (chars.length % 3 === 0) { // If divisible by 3, use all em dashes\n emCount = chars.length / 3;\n } else if (chars.length % 2 === 0) { // If divisible by 2, use all en dashes\n enCount = chars.length / 2;\n } else if (chars.length % 3 === 2) { // If 2 extra dashes, use en dash for last 2; em dashes for rest\n enCount = 1;\n emCount = (chars.length - 2) / 3;\n } else { // Use en dashes for last 4 hyphens; em dashes for rest\n enCount = 2;\n emCount = (chars.length - 4) / 3;\n }\n return \"\\u2014\".repeat(emCount) + \"\\u2013\".repeat(enCount);\n })));\n } else {\n block.appendChild(text(m));\n }\n return true;\n } else {\n return false;\n }\n};\n\n// Parse a newline. If it was preceded by two spaces, return a hard\n// line break; otherwise a soft line break.\nvar parseNewline = function(block) {\n this.pos += 1; // assume we're at a \\n\n // check previous node for trailing spaces\n var lastc = block._lastChild;\n if (lastc && lastc.type === 'text' && lastc._literal[lastc._literal.length - 1] === ' ') {\n var hardbreak = lastc._literal[lastc._literal.length - 2] === ' ';\n lastc._literal = lastc._literal.replace(reFinalSpace, '');\n block.appendChild(new Node(hardbreak ? 'linebreak' : 'softbreak'));\n } else {\n block.appendChild(new Node('softbreak'));\n }\n this.match(reInitialSpace); // gobble leading spaces in next line\n return true;\n};\n\n// Attempt to parse a link reference, modifying refmap.\nvar parseReference = function(s, refmap) {\n this.subject = s;\n this.pos = 0;\n var rawlabel;\n var dest;\n var title;\n var matchChars;\n var startpos = this.pos;\n\n // label:\n matchChars = this.parseLinkLabel();\n if (matchChars === 0) {\n return 0;\n } else {\n rawlabel = this.subject.substr(0, matchChars);\n }\n\n // colon:\n if (this.peek() === C_COLON) {\n this.pos++;\n } else {\n this.pos = startpos;\n return 0;\n }\n\n // link url\n this.spnl();\n\n dest = this.parseLinkDestination();\n if (dest === null || dest.length === 0) {\n this.pos = startpos;\n return 0;\n }\n\n var beforetitle = this.pos;\n this.spnl();\n title = this.parseLinkTitle();\n if (title === null) {\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n }\n\n // make sure we're at line end:\n var atLineEnd = true;\n if (this.match(reSpaceAtEndOfLine) === null) {\n if (title === '') {\n atLineEnd = false;\n } else {\n // the potential title we found is not at the line end,\n // but it could still be a legal link reference if we\n // discard the title\n title = '';\n // rewind before spaces\n this.pos = beforetitle;\n // and instead check if the link URL is at the line end\n atLineEnd = this.match(reSpaceAtEndOfLine) !== null;\n }\n }\n\n if (!atLineEnd) {\n this.pos = startpos;\n return 0;\n }\n\n var normlabel = normalizeReference(rawlabel);\n if (normlabel === '') {\n // label must contain non-whitespace characters\n this.pos = startpos;\n return 0;\n }\n\n if (!refmap[normlabel]) {\n refmap[normlabel] = { destination: dest, title: title };\n }\n return this.pos - startpos;\n};\n\n// Parse the next inline element in subject, advancing subject position.\n// On success, add the result to block's children and return true.\n// On failure, return false.\nvar parseInline = function(block) {\n var res = false;\n var c = this.peek();\n if (c === -1) {\n return false;\n }\n switch(c) {\n case C_NEWLINE:\n res = this.parseNewline(block);\n break;\n case C_BACKSLASH:\n res = this.parseBackslash(block);\n break;\n case C_BACKTICK:\n res = this.parseBackticks(block);\n break;\n case C_ASTERISK:\n case C_UNDERSCORE:\n res = this.handleDelim(c, block);\n break;\n case C_SINGLEQUOTE:\n case C_DOUBLEQUOTE:\n res = this.options.smart && this.handleDelim(c, block);\n break;\n case C_OPEN_BRACKET:\n res = this.parseOpenBracket(block);\n break;\n case C_BANG:\n res = this.parseBang(block);\n break;\n case C_CLOSE_BRACKET:\n res = this.parseCloseBracket(block);\n break;\n case C_LESSTHAN:\n res = this.parseAutolink(block) || this.parseHtmlTag(block);\n break;\n case C_AMPERSAND:\n res = this.parseEntity(block);\n break;\n default:\n res = this.parseString(block);\n break;\n }\n if (!res) {\n this.pos += 1;\n block.appendChild(text(fromCodePoint(c)));\n }\n\n return true;\n};\n\n// Parse string content in block into inline children,\n// using refmap to resolve references.\nvar parseInlines = function(block) {\n this.subject = block._string_content.trim();\n this.pos = 0;\n this.delimiters = null;\n this.brackets = null;\n while (this.parseInline(block)) {\n }\n block._string_content = null; // allow raw string to be garbage collected\n this.processEmphasis(null);\n};\n\n// The InlineParser object.\nfunction InlineParser(options){\n return {\n subject: '',\n delimiters: null, // used by handleDelim method\n brackets: null,\n pos: 0,\n refmap: {},\n match: match,\n peek: peek,\n spnl: spnl,\n parseBackticks: parseBackticks,\n parseBackslash: parseBackslash,\n parseAutolink: parseAutolink,\n parseHtmlTag: parseHtmlTag,\n scanDelims: scanDelims,\n handleDelim: handleDelim,\n parseLinkTitle: parseLinkTitle,\n parseLinkDestination: parseLinkDestination,\n parseLinkLabel: parseLinkLabel,\n parseOpenBracket: parseOpenBracket,\n parseBang: parseBang,\n parseCloseBracket: parseCloseBracket,\n addBracket: addBracket,\n removeBracket: removeBracket,\n parseEntity: parseEntity,\n parseString: parseString,\n parseNewline: parseNewline,\n parseReference: parseReference,\n parseInline: parseInline,\n processEmphasis: processEmphasis,\n removeDelimiter: removeDelimiter,\n options: options || {},\n parse: parseInlines\n };\n}\n\nmodule.exports = InlineParser;\n","\"use strict\";\n\n/* The bulk of this code derives from https://github.com/dmoscrop/fold-case\nBut in addition to case-folding, we also normalize whitespace.\n\nfold-case is Copyright Mathias Bynens <https://mathiasbynens.be/>\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n/*eslint-disable key-spacing, comma-spacing */\n\nvar regex = /[ \\t\\r\\n]+|[A-Z\\xB5\\xC0-\\xD6\\xD8-\\xDF\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u0149\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u017F\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C5\\u01C7\\u01C8\\u01CA\\u01CB\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F0-\\u01F2\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0345\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03AB\\u03B0\\u03C2\\u03CF-\\u03D1\\u03D5\\u03D6\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F0\\u03F1\\u03F4\\u03F5\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u0587\\u10A0-\\u10C5\\u10C7\\u10CD\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E96-\\u1E9B\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F50\\u1F52\\u1F54\\u1F56\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1F80-\\u1FAF\\u1FB2-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD2\\u1FD3\\u1FD6-\\u1FDB\\u1FE2-\\u1FE4\\u1FE6-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2126\\u212A\\u212B\\u2132\\u2160-\\u216F\\u2183\\u24B6-\\u24CF\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AD\\uA7B0\\uA7B1\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A]|\\uD801[\\uDC00-\\uDC27]|\\uD806[\\uDCA0-\\uDCBF]/g;\n\nvar map = {'A':'a','B':'b','C':'c','D':'d','E':'e','F':'f','G':'g','H':'h','I':'i','J':'j','K':'k','L':'l','M':'m','N':'n','O':'o','P':'p','Q':'q','R':'r','S':'s','T':'t','U':'u','V':'v','W':'w','X':'x','Y':'y','Z':'z','\\xB5':'\\u03BC','\\xC0':'\\xE0','\\xC1':'\\xE1','\\xC2':'\\xE2','\\xC3':'\\xE3','\\xC4':'\\xE4','\\xC5':'\\xE5','\\xC6':'\\xE6','\\xC7':'\\xE7','\\xC8':'\\xE8','\\xC9':'\\xE9','\\xCA':'\\xEA','\\xCB':'\\xEB','\\xCC':'\\xEC','\\xCD':'\\xED','\\xCE':'\\xEE','\\xCF':'\\xEF','\\xD0':'\\xF0','\\xD1':'\\xF1','\\xD2':'\\xF2','\\xD3':'\\xF3','\\xD4':'\\xF4','\\xD5':'\\xF5','\\xD6':'\\xF6','\\xD8':'\\xF8','\\xD9':'\\xF9','\\xDA':'\\xFA','\\xDB':'\\xFB','\\xDC':'\\xFC','\\xDD':'\\xFD','\\xDE':'\\xFE','\\u0100':'\\u0101','\\u0102':'\\u0103','\\u0104':'\\u0105','\\u0106':'\\u0107','\\u0108':'\\u0109','\\u010A':'\\u010B','\\u010C':'\\u010D','\\u010E':'\\u010F','\\u0110':'\\u0111','\\u0112':'\\u0113','\\u0114':'\\u0115','\\u0116':'\\u0117','\\u0118':'\\u0119','\\u011A':'\\u011B','\\u011C':'\\u011D','\\u011E':'\\u011F','\\u0120':'\\u0121','\\u0122':'\\u0123','\\u0124':'\\u0125','\\u0126':'\\u0127','\\u0128':'\\u0129','\\u012A':'\\u012B','\\u012C':'\\u012D','\\u012E':'\\u012F','\\u0132':'\\u0133','\\u0134':'\\u0135','\\u0136':'\\u0137','\\u0139':'\\u013A','\\u013B':'\\u013C','\\u013D':'\\u013E','\\u013F':'\\u0140','\\u0141':'\\u0142','\\u0143':'\\u0144','\\u0145':'\\u0146','\\u0147':'\\u0148','\\u014A':'\\u014B','\\u014C':'\\u014D','\\u014E':'\\u014F','\\u0150':'\\u0151','\\u0152':'\\u0153','\\u0154':'\\u0155','\\u0156':'\\u0157','\\u0158':'\\u0159','\\u015A':'\\u015B','\\u015C':'\\u015D','\\u015E':'\\u015F','\\u0160':'\\u0161','\\u0162':'\\u0163','\\u0164':'\\u0165','\\u0166':'\\u0167','\\u0168':'\\u0169','\\u016A':'\\u016B','\\u016C':'\\u016D','\\u016E':'\\u016F','\\u0170':'\\u0171','\\u0172':'\\u0173','\\u0174':'\\u0175','\\u0176':'\\u0177','\\u0178':'\\xFF','\\u0179':'\\u017A','\\u017B':'\\u017C','\\u017D':'\\u017E','\\u017F':'s','\\u0181':'\\u0253','\\u0182':'\\u0183','\\u0184':'\\u0185','\\u0186':'\\u0254','\\u0187':'\\u0188','\\u0189':'\\u0256','\\u018A':'\\u0257','\\u018B':'\\u018C','\\u018E':'\\u01DD','\\u018F':'\\u0259','\\u0190':'\\u025B','\\u0191':'\\u0192','\\u0193':'\\u0260','\\u0194':'\\u0263','\\u0196':'\\u0269','\\u0197':'\\u0268','\\u0198':'\\u0199','\\u019C':'\\u026F','\\u019D':'\\u0272','\\u019F':'\\u0275','\\u01A0':'\\u01A1','\\u01A2':'\\u01A3','\\u01A4':'\\u01A5','\\u01A6':'\\u0280','\\u01A7':'\\u01A8','\\u01A9':'\\u0283','\\u01AC':'\\u01AD','\\u01AE':'\\u0288','\\u01AF':'\\u01B0','\\u01B1':'\\u028A','\\u01B2':'\\u028B','\\u01B3':'\\u01B4','\\u01B5':'\\u01B6','\\u01B7':'\\u0292','\\u01B8':'\\u01B9','\\u01BC':'\\u01BD','\\u01C4':'\\u01C6','\\u01C5':'\\u01C6','\\u01C7':'\\u01C9','\\u01C8':'\\u01C9','\\u01CA':'\\u01CC','\\u01CB':'\\u01CC','\\u01CD':'\\u01CE','\\u01CF':'\\u01D0','\\u01D1':'\\u01D2','\\u01D3':'\\u01D4','\\u01D5':'\\u01D6','\\u01D7':'\\u01D8','\\u01D9':'\\u01DA','\\u01DB':'\\u01DC','\\u01DE':'\\u01DF','\\u01E0':'\\u01E1','\\u01E2':'\\u01E3','\\u01E4':'\\u01E5','\\u01E6':'\\u01E7','\\u01E8':'\\u01E9','\\u01EA':'\\u01EB','\\u01EC':'\\u01ED','\\u01EE':'\\u01EF','\\u01F1':'\\u01F3','\\u01F2':'\\u01F3','\\u01F4':'\\u01F5','\\u01F6':'\\u0195','\\u01F7':'\\u01BF','\\u01F8':'\\u01F9','\\u01FA':'\\u01FB','\\u01FC':'\\u01FD','\\u01FE':'\\u01FF','\\u0200':'\\u0201','\\u0202':'\\u0203','\\u0204':'\\u0205','\\u0206':'\\u0207','\\u0208':'\\u0209','\\u020A':'\\u020B','\\u020C':'\\u020D','\\u020E':'\\u020F','\\u0210':'\\u0211','\\u0212':'\\u0213','\\u0214':'\\u0215','\\u0216':'\\u0217','\\u0218':'\\u0219','\\u021A':'\\u021B','\\u021C':'\\u021D','\\u021E':'\\u021F','\\u0220':'\\u019E','\\u0222':'\\u0223','\\u0224':'\\u0225','\\u0226':'\\u0227','\\u0228':'\\u0229','\\u022A':'\\u022B','\\u022C':'\\u022D','\\u022E':'\\u022F','\\u0230':'\\u0231','\\u0232':'\\u0233','\\u023A':'\\u2C65','\\u023B':'\\u023C','\\u023D':'\\u019A','\\u023E':'\\u2C66','\\u0241':'\\u0242','\\u0243':'\\u0180','\\u0244':'\\u0289','\\u0245':'\\u028C','\\u0246':'\\u0247','\\u0248':'\\u0249','\\u024A':'\\u024B','\\u024C':'\\u024D','\\u024E':'\\u024F','\\u0345':'\\u03B9','\\u0370':'\\u0371','\\u0372':'\\u0373','\\u0376':'\\u0377','\\u037F':'\\u03F3','\\u0386':'\\u03AC','\\u0388':'\\u03AD','\\u0389':'\\u03AE','\\u038A':'\\u03AF','\\u038C':'\\u03CC','\\u038E':'\\u03CD','\\u038F':'\\u03CE','\\u0391':'\\u03B1','\\u0392':'\\u03B2','\\u0393':'\\u03B3','\\u0394':'\\u03B4','\\u0395':'\\u03B5','\\u0396':'\\u03B6','\\u0397':'\\u03B7','\\u0398':'\\u03B8','\\u0399':'\\u03B9','\\u039A':'\\u03BA','\\u039B':'\\u03BB','\\u039C':'\\u03BC','\\u039D':'\\u03BD','\\u039E':'\\u03BE','\\u039F':'\\u03BF','\\u03A0':'\\u03C0','\\u03A1':'\\u03C1','\\u03A3':'\\u03C3','\\u03A4':'\\u03C4','\\u03A5':'\\u03C5','\\u03A6':'\\u03C6','\\u03A7':'\\u03C7','\\u03A8':'\\u03C8','\\u03A9':'\\u03C9','\\u03AA':'\\u03CA','\\u03AB':'\\u03CB','\\u03C2':'\\u03C3','\\u03CF':'\\u03D7','\\u03D0':'\\u03B2','\\u03D1':'\\u03B8','\\u03D5':'\\u03C6','\\u03D6':'\\u03C0','\\u03D8':'\\u03D9','\\u03DA':'\\u03DB','\\u03DC':'\\u03DD','\\u03DE':'\\u03DF','\\u03E0':'\\u03E1','\\u03E2':'\\u03E3','\\u03E4':'\\u03E5','\\u03E6':'\\u03E7','\\u03E8':'\\u03E9','\\u03EA':'\\u03EB','\\u03EC':'\\u03ED','\\u03EE':'\\u03EF','\\u03F0':'\\u03BA','\\u03F1':'\\u03C1','\\u03F4':'\\u03B8','\\u03F5':'\\u03B5','\\u03F7':'\\u03F8','\\u03F9':'\\u03F2','\\u03FA':'\\u03FB','\\u03FD':'\\u037B','\\u03FE':'\\u037C','\\u03FF':'\\u037D','\\u0400':'\\u0450','\\u0401':'\\u0451','\\u0402':'\\u0452','\\u0403':'\\u0453','\\u0404':'\\u0454','\\u0405':'\\u0455','\\u0406':'\\u0456','\\u0407':'\\u0457','\\u0408':'\\u0458','\\u0409':'\\u0459','\\u040A':'\\u045A','\\u040B':'\\u045B','\\u040C':'\\u045C','\\u040D':'\\u045D','\\u040E':'\\u045E','\\u040F':'\\u045F','\\u0410':'\\u0430','\\u0411':'\\u0431','\\u0412':'\\u0432','\\u0413':'\\u0433','\\u0414':'\\u0434','\\u0415':'\\u0435','\\u0416':'\\u0436','\\u0417':'\\u0437','\\u0418':'\\u0438','\\u0419':'\\u0439','\\u041A':'\\u043A','\\u041B':'\\u043B','\\u041C':'\\u043C','\\u041D':'\\u043D','\\u041E':'\\u043E','\\u041F':'\\u043F','\\u0420':'\\u0440','\\u0421':'\\u0441','\\u0422':'\\u0442','\\u0423':'\\u0443','\\u0424':'\\u0444','\\u0425':'\\u0445','\\u0426':'\\u0446','\\u0427':'\\u0447','\\u0428':'\\u0448','\\u0429':'\\u0449','\\u042A':'\\u044A','\\u042B':'\\u044B','\\u042C':'\\u044C','\\u042D':'\\u044D','\\u042E':'\\u044E','\\u042F':'\\u044F','\\u0460':'\\u0461','\\u0462':'\\u0463','\\u0464':'\\u0465','\\u0466':'\\u0467','\\u0468':'\\u0469','\\u046A':'\\u046B','\\u046C':'\\u046D','\\u046E':'\\u046F','\\u0470':'\\u0471','\\u0472':'\\u0473','\\u0474':'\\u0475','\\u0476':'\\u0477','\\u0478':'\\u0479','\\u047A':'\\u047B','\\u047C':'\\u047D','\\u047E':'\\u047F','\\u0480':'\\u0481','\\u048A':'\\u048B','\\u048C':'\\u048D','\\u048E':'\\u048F','\\u0490':'\\u0491','\\u0492':'\\u0493','\\u0494':'\\u0495','\\u0496':'\\u0497','\\u0498':'\\u0499','\\u049A':'\\u049B','\\u049C':'\\u049D','\\u049E':'\\u049F','\\u04A0':'\\u04A1','\\u04A2':'\\u04A3','\\u04A4':'\\u04A5','\\u04A6':'\\u04A7','\\u04A8':'\\u04A9','\\u04AA':'\\u04AB','\\u04AC':'\\u04AD','\\u04AE':'\\u04AF','\\u04B0':'\\u04B1','\\u04B2':'\\u04B3','\\u04B4':'\\u04B5','\\u04B6':'\\u04B7','\\u04B8':'\\u04B9','\\u04BA':'\\u04BB','\\u04BC':'\\u04BD','\\u04BE':'\\u04BF','\\u04C0':'\\u04CF','\\u04C1':'\\u04C2','\\u04C3':'\\u04C4','\\u04C5':'\\u04C6','\\u04C7':'\\u04C8','\\u04C9':'\\u04CA','\\u04CB':'\\u04CC','\\u04CD':'\\u04CE','\\u04D0':'\\u04D1','\\u04D2':'\\u04D3','\\u04D4':'\\u04D5','\\u04D6':'\\u04D7','\\u04D8':'\\u04D9','\\u04DA':'\\u04DB','\\u04DC':'\\u04DD','\\u04DE':'\\u04DF','\\u04E0':'\\u04E1','\\u04E2':'\\u04E3','\\u04E4':'\\u04E5','\\u04E6':'\\u04E7','\\u04E8':'\\u04E9','\\u04EA':'\\u04EB','\\u04EC':'\\u04ED','\\u04EE':'\\u04EF','\\u04F0':'\\u04F1','\\u04F2':'\\u04F3','\\u04F4':'\\u04F5','\\u04F6':'\\u04F7','\\u04F8':'\\u04F9','\\u04FA':'\\u04FB','\\u04FC':'\\u04FD','\\u04FE':'\\u04FF','\\u0500':'\\u0501','\\u0502':'\\u0503','\\u0504':'\\u0505','\\u0506':'\\u0507','\\u0508':'\\u0509','\\u050A':'\\u050B','\\u050C':'\\u050D','\\u050E':'\\u050F','\\u0510':'\\u0511','\\u0512':'\\u0513','\\u0514':'\\u0515','\\u0516':'\\u0517','\\u0518':'\\u0519','\\u051A':'\\u051B','\\u051C':'\\u051D','\\u051E':'\\u051F','\\u0520':'\\u0521','\\u0522':'\\u0523','\\u0524':'\\u0525','\\u0526':'\\u0527','\\u0528':'\\u0529','\\u052A':'\\u052B','\\u052C':'\\u052D','\\u052E':'\\u052F','\\u0531':'\\u0561','\\u0532':'\\u0562','\\u0533':'\\u0563','\\u0534':'\\u0564','\\u0535':'\\u0565','\\u0536':'\\u0566','\\u0537':'\\u0567','\\u0538':'\\u0568','\\u0539':'\\u0569','\\u053A':'\\u056A','\\u053B':'\\u056B','\\u053C':'\\u056C','\\u053D':'\\u056D','\\u053E':'\\u056E','\\u053F':'\\u056F','\\u0540':'\\u0570','\\u0541':'\\u0571','\\u0542':'\\u0572','\\u0543':'\\u0573','\\u0544':'\\u0574','\\u0545':'\\u0575','\\u0546':'\\u0576','\\u0547':'\\u0577','\\u0548':'\\u0578','\\u0549':'\\u0579','\\u054A':'\\u057A','\\u054B':'\\u057B','\\u054C':'\\u057C','\\u054D':'\\u057D','\\u054E':'\\u057E','\\u054F':'\\u057F','\\u0550':'\\u0580','\\u0551':'\\u0581','\\u0552':'\\u0582','\\u0553':'\\u0583','\\u0554':'\\u0584','\\u0555':'\\u0585','\\u0556':'\\u0586','\\u10A0':'\\u2D00','\\u10A1':'\\u2D01','\\u10A2':'\\u2D02','\\u10A3':'\\u2D03','\\u10A4':'\\u2D04','\\u10A5':'\\u2D05','\\u10A6':'\\u2D06','\\u10A7':'\\u2D07','\\u10A8':'\\u2D08','\\u10A9':'\\u2D09','\\u10AA':'\\u2D0A','\\u10AB':'\\u2D0B','\\u10AC':'\\u2D0C','\\u10AD':'\\u2D0D','\\u10AE':'\\u2D0E','\\u10AF':'\\u2D0F','\\u10B0':'\\u2D10','\\u10B1':'\\u2D11','\\u10B2':'\\u2D12','\\u10B3':'\\u2D13','\\u10B4':'\\u2D14','\\u10B5':'\\u2D15','\\u10B6':'\\u2D16','\\u10B7':'\\u2D17','\\u10B8':'\\u2D18','\\u10B9':'\\u2D19','\\u10BA':'\\u2D1A','\\u10BB':'\\u2D1B','\\u10BC':'\\u2D1C','\\u10BD':'\\u2D1D','\\u10BE':'\\u2D1E','\\u10BF':'\\u2D1F','\\u10C0':'\\u2D20','\\u10C1':'\\u2D21','\\u10C2':'\\u2D22','\\u10C3':'\\u2D23','\\u10C4':'\\u2D24','\\u10C5':'\\u2D25','\\u10C7':'\\u2D27','\\u10CD':'\\u2D2D','\\u1E00':'\\u1E01','\\u1E02':'\\u1E03','\\u1E04':'\\u1E05','\\u1E06':'\\u1E07','\\u1E08':'\\u1E09','\\u1E0A':'\\u1E0B','\\u1E0C':'\\u1E0D','\\u1E0E':'\\u1E0F','\\u1E10':'\\u1E11','\\u1E12':'\\u1E13','\\u1E14':'\\u1E15','\\u1E16':'\\u1E17','\\u1E18':'\\u1E19','\\u1E1A':'\\u1E1B','\\u1E1C':'\\u1E1D','\\u1E1E':'\\u1E1F','\\u1E20':'\\u1E21','\\u1E22':'\\u1E23','\\u1E24':'\\u1E25','\\u1E26':'\\u1E27','\\u1E28':'\\u1E29','\\u1E2A':'\\u1E2B','\\u1E2C':'\\u1E2D','\\u1E2E':'\\u1E2F','\\u1E30':'\\u1E31','\\u1E32':'\\u1E33','\\u1E34':'\\u1E35','\\u1E36':'\\u1E37','\\u1E38':'\\u1E39','\\u1E3A':'\\u1E3B','\\u1E3C':'\\u1E3D','\\u1E3E':'\\u1E3F','\\u1E40':'\\u1E41','\\u1E42':'\\u1E43','\\u1E44':'\\u1E45','\\u1E46':'\\u1E47','\\u1E48':'\\u1E49','\\u1E4A':'\\u1E4B','\\u1E4C':'\\u1E4D','\\u1E4E':'\\u1E4F','\\u1E50':'\\u1E51','\\u1E52':'\\u1E53','\\u1E54':'\\u1E55','\\u1E56':'\\u1E57','\\u1E58':'\\u1E59','\\u1E5A':'\\u1E5B','\\u1E5C':'\\u1E5D','\\u1E5E':'\\u1E5F','\\u1E60':'\\u1E61','\\u1E62':'\\u1E63','\\u1E64':'\\u1E65','\\u1E66':'\\u1E67','\\u1E68':'\\u1E69','\\u1E6A':'\\u1E6B','\\u1E6C':'\\u1E6D','\\u1E6E':'\\u1E6F','\\u1E70':'\\u1E71','\\u1E72':'\\u1E73','\\u1E74':'\\u1E75','\\u1E76':'\\u1E77','\\u1E78':'\\u1E79','\\u1E7A':'\\u1E7B','\\u1E7C':'\\u1E7D','\\u1E7E':'\\u1E7F','\\u1E80':'\\u1E81','\\u1E82':'\\u1E83','\\u1E84':'\\u1E85','\\u1E86':'\\u1E87','\\u1E88':'\\u1E89','\\u1E8A':'\\u1E8B','\\u1E8C':'\\u1E8D','\\u1E8E':'\\u1E8F','\\u1E90':'\\u1E91','\\u1E92':'\\u1E93','\\u1E94':'\\u1E95','\\u1E9B':'\\u1E61','\\u1EA0':'\\u1EA1','\\u1EA2':'\\u1EA3','\\u1EA4':'\\u1EA5','\\u1EA6':'\\u1EA7','\\u1EA8':'\\u1EA9','\\u1EAA':'\\u1EAB','\\u1EAC':'\\u1EAD','\\u1EAE':'\\u1EAF','\\u1EB0':'\\u1EB1','\\u1EB2':'\\u1EB3','\\u1EB4':'\\u1EB5','\\u1EB6':'\\u1EB7','\\u1EB8':'\\u1EB9','\\u1EBA':'\\u1EBB','\\u1EBC':'\\u1EBD','\\u1EBE':'\\u1EBF','\\u1EC0':'\\u1EC1','\\u1EC2':'\\u1EC3','\\u1EC4':'\\u1EC5','\\u1EC6':'\\u1EC7','\\u1EC8':'\\u1EC9','\\u1ECA':'\\u1ECB','\\u1ECC':'\\u1ECD','\\u1ECE':'\\u1ECF','\\u1ED0':'\\u1ED1','\\u1ED2':'\\u1ED3','\\u1ED4':'\\u1ED5','\\u1ED6':'\\u1ED7','\\u1ED8':'\\u1ED9','\\u1EDA':'\\u1EDB','\\u1EDC':'\\u1EDD','\\u1EDE':'\\u1EDF','\\u1EE0':'\\u1EE1','\\u1EE2':'\\u1EE3','\\u1EE4':'\\u1EE5','\\u1EE6':'\\u1EE7','\\u1EE8':'\\u1EE9','\\u1EEA':'\\u1EEB','\\u1EEC':'\\u1EED','\\u1EEE':'\\u1EEF','\\u1EF0':'\\u1EF1','\\u1EF2':'\\u1EF3','\\u1EF4':'\\u1EF5','\\u1EF6':'\\u1EF7','\\u1EF8':'\\u1EF9','\\u1EFA':'\\u1EFB','\\u1EFC':'\\u1EFD','\\u1EFE':'\\u1EFF','\\u1F08':'\\u1F00','\\u1F09':'\\u1F01','\\u1F0A':'\\u1F02','\\u1F0B':'\\u1F03','\\u1F0C':'\\u1F04','\\u1F0D':'\\u1F05','\\u1F0E':'\\u1F06','\\u1F0F':'\\u1F07','\\u1F18':'\\u1F10','\\u1F19':'\\u1F11','\\u1F1A':'\\u1F12','\\u1F1B':'\\u1F13','\\u1F1C':'\\u1F14','\\u1F1D':'\\u1F15','\\u1F28':'\\u1F20','\\u1F29':'\\u1F21','\\u1F2A':'\\u1F22','\\u1F2B':'\\u1F23','\\u1F2C':'\\u1F24','\\u1F2D':'\\u1F25','\\u1F2E':'\\u1F26','\\u1F2F':'\\u1F27','\\u1F38':'\\u1F30','\\u1F39':'\\u1F31','\\u1F3A':'\\u1F32','\\u1F3B':'\\u1F33','\\u1F3C':'\\u1F34','\\u1F3D':'\\u1F35','\\u1F3E':'\\u1F36','\\u1F3F':'\\u1F37','\\u1F48':'\\u1F40','\\u1F49':'\\u1F41','\\u1F4A':'\\u1F42','\\u1F4B':'\\u1F43','\\u1F4C':'\\u1F44','\\u1F4D':'\\u1F45','\\u1F59':'\\u1F51','\\u1F5B':'\\u1F53','\\u1F5D':'\\u1F55','\\u1F5F':'\\u1F57','\\u1F68':'\\u1F60','\\u1F69':'\\u1F61','\\u1F6A':'\\u1F62','\\u1F6B':'\\u1F63','\\u1F6C':'\\u1F64','\\u1F6D':'\\u1F65','\\u1F6E':'\\u1F66','\\u1F6F':'\\u1F67','\\u1FB8':'\\u1FB0','\\u1FB9':'\\u1FB1','\\u1FBA':'\\u1F70','\\u1FBB':'\\u1F71','\\u1FBE':'\\u03B9','\\u1FC8':'\\u1F72','\\u1FC9':'\\u1F73','\\u1FCA':'\\u1F74','\\u1FCB':'\\u1F75','\\u1FD8':'\\u1FD0','\\u1FD9':'\\u1FD1','\\u1FDA':'\\u1F76','\\u1FDB':'\\u1F77','\\u1FE8':'\\u1FE0','\\u1FE9':'\\u1FE1','\\u1FEA':'\\u1F7A','\\u1FEB':'\\u1F7B','\\u1FEC':'\\u1FE5','\\u1FF8':'\\u1F78','\\u1FF9':'\\u1F79','\\u1FFA':'\\u1F7C','\\u1FFB':'\\u1F7D','\\u2126':'\\u03C9','\\u212A':'k','\\u212B':'\\xE5','\\u2132':'\\u214E','\\u2160':'\\u2170','\\u2161':'\\u2171','\\u2162':'\\u2172','\\u2163':'\\u2173','\\u2164':'\\u2174','\\u2165':'\\u2175','\\u2166':'\\u2176','\\u2167':'\\u2177','\\u2168':'\\u2178','\\u2169':'\\u2179','\\u216A':'\\u217A','\\u216B':'\\u217B','\\u216C':'\\u217C','\\u216D':'\\u217D','\\u216E':'\\u217E','\\u216F':'\\u217F','\\u2183':'\\u2184','\\u24B6':'\\u24D0','\\u24B7':'\\u24D1','\\u24B8':'\\u24D2','\\u24B9':'\\u24D3','\\u24BA':'\\u24D4','\\u24BB':'\\u24D5','\\u24BC':'\\u24D6','\\u24BD':'\\u24D7','\\u24BE':'\\u24D8','\\u24BF':'\\u24D9','\\u24C0':'\\u24DA','\\u24C1':'\\u24DB','\\u24C2':'\\u24DC','\\u24C3':'\\u24DD','\\u24C4':'\\u24DE','\\u24C5':'\\u24DF','\\u24C6':'\\u24E0','\\u24C7':'\\u24E1','\\u24C8':'\\u24E2','\\u24C9':'\\u24E3','\\u24CA':'\\u24E4','\\u24CB':'\\u24E5','\\u24CC':'\\u24E6','\\u24CD':'\\u24E7','\\u24CE':'\\u24E8','\\u24CF':'\\u24E9','\\u2C00':'\\u2C30','\\u2C01':'\\u2C31','\\u2C02':'\\u2C32','\\u2C03':'\\u2C33','\\u2C04':'\\u2C34','\\u2C05':'\\u2C35','\\u2C06':'\\u2C36','\\u2C07':'\\u2C37','\\u2C08':'\\u2C38','\\u2C09':'\\u2C39','\\u2C0A':'\\u2C3A','\\u2C0B':'\\u2C3B','\\u2C0C':'\\u2C3C','\\u2C0D':'\\u2C3D','\\u2C0E':'\\u2C3E','\\u2C0F':'\\u2C3F','\\u2C10':'\\u2C40','\\u2C11':'\\u2C41','\\u2C12':'\\u2C42','\\u2C13':'\\u2C43','\\u2C14':'\\u2C44','\\u2C15':'\\u2C45','\\u2C16':'\\u2C46','\\u2C17':'\\u2C47','\\u2C18':'\\u2C48','\\u2C19':'\\u2C49','\\u2C1A':'\\u2C4A','\\u2C1B':'\\u2C4B','\\u2C1C':'\\u2C4C','\\u2C1D':'\\u2C4D','\\u2C1E':'\\u2C4E','\\u2C1F':'\\u2C4F','\\u2C20':'\\u2C50','\\u2C21':'\\u2C51','\\u2C22':'\\u2C52','\\u2C23':'\\u2C53','\\u2C24':'\\u2C54','\\u2C25':'\\u2C55','\\u2C26':'\\u2C56','\\u2C27':'\\u2C57','\\u2C28':'\\u2C58','\\u2C29':'\\u2C59','\\u2C2A':'\\u2C5A','\\u2C2B':'\\u2C5B','\\u2C2C':'\\u2C5C','\\u2C2D':'\\u2C5D','\\u2C2E':'\\u2C5E','\\u2C60':'\\u2C61','\\u2C62':'\\u026B','\\u2C63':'\\u1D7D','\\u2C64':'\\u027D','\\u2C67':'\\u2C68','\\u2C69':'\\u2C6A','\\u2C6B':'\\u2C6C','\\u2C6D':'\\u0251','\\u2C6E':'\\u0271','\\u2C6F':'\\u0250','\\u2C70':'\\u0252','\\u2C72':'\\u2C73','\\u2C75':'\\u2C76','\\u2C7E':'\\u023F','\\u2C7F':'\\u0240','\\u2C80':'\\u2C81','\\u2C82':'\\u2C83','\\u2C84':'\\u2C85','\\u2C86':'\\u2C87','\\u2C88':'\\u2C89','\\u2C8A':'\\u2C8B','\\u2C8C':'\\u2C8D','\\u2C8E':'\\u2C8F','\\u2C90':'\\u2C91','\\u2C92':'\\u2C93','\\u2C94':'\\u2C95','\\u2C96':'\\u2C97','\\u2C98':'\\u2C99','\\u2C9A':'\\u2C9B','\\u2C9C':'\\u2C9D','\\u2C9E':'\\u2C9F','\\u2CA0':'\\u2CA1','\\u2CA2':'\\u2CA3','\\u2CA4':'\\u2CA5','\\u2CA6':'\\u2CA7','\\u2CA8':'\\u2CA9','\\u2CAA':'\\u2CAB','\\u2CAC':'\\u2CAD','\\u2CAE':'\\u2CAF','\\u2CB0':'\\u2CB1','\\u2CB2':'\\u2CB3','\\u2CB4':'\\u2CB5','\\u2CB6':'\\u2CB7','\\u2CB8':'\\u2CB9','\\u2CBA':'\\u2CBB','\\u2CBC':'\\u2CBD','\\u2CBE':'\\u2CBF','\\u2CC0':'\\u2CC1','\\u2CC2':'\\u2CC3','\\u2CC4':'\\u2CC5','\\u2CC6':'\\u2CC7','\\u2CC8':'\\u2CC9','\\u2CCA':'\\u2CCB','\\u2CCC':'\\u2CCD','\\u2CCE':'\\u2CCF','\\u2CD0':'\\u2CD1','\\u2CD2':'\\u2CD3','\\u2CD4':'\\u2CD5','\\u2CD6':'\\u2CD7','\\u2CD8':'\\u2CD9','\\u2CDA':'\\u2CDB','\\u2CDC':'\\u2CDD','\\u2CDE':'\\u2CDF','\\u2CE0':'\\u2CE1','\\u2CE2':'\\u2CE3','\\u2CEB':'\\u2CEC','\\u2CED':'\\u2CEE','\\u2CF2':'\\u2CF3','\\uA640':'\\uA641','\\uA642':'\\uA643','\\uA644':'\\uA645','\\uA646':'\\uA647','\\uA648':'\\uA649','\\uA64A':'\\uA64B','\\uA64C':'\\uA64D','\\uA64E':'\\uA64F','\\uA650':'\\uA651','\\uA652':'\\uA653','\\uA654':'\\uA655','\\uA656':'\\uA657','\\uA658':'\\uA659','\\uA65A':'\\uA65B','\\uA65C':'\\uA65D','\\uA65E':'\\uA65F','\\uA660':'\\uA661','\\uA662':'\\uA663','\\uA664':'\\uA665','\\uA666':'\\uA667','\\uA668':'\\uA669','\\uA66A':'\\uA66B','\\uA66C':'\\uA66D','\\uA680':'\\uA681','\\uA682':'\\uA683','\\uA684':'\\uA685','\\uA686':'\\uA687','\\uA688':'\\uA689','\\uA68A':'\\uA68B','\\uA68C':'\\uA68D','\\uA68E':'\\uA68F','\\uA690':'\\uA691','\\uA692':'\\uA693','\\uA694':'\\uA695','\\uA696':'\\uA697','\\uA698':'\\uA699','\\uA69A':'\\uA69B','\\uA722':'\\uA723','\\uA724':'\\uA725','\\uA726':'\\uA727','\\uA728':'\\uA729','\\uA72A':'\\uA72B','\\uA72C':'\\uA72D','\\uA72E':'\\uA72F','\\uA732':'\\uA733','\\uA734':'\\uA735','\\uA736':'\\uA737','\\uA738':'\\uA739','\\uA73A':'\\uA73B','\\uA73C':'\\uA73D','\\uA73E':'\\uA73F','\\uA740':'\\uA741','\\uA742':'\\uA743','\\uA744':'\\uA745','\\uA746':'\\uA747','\\uA748':'\\uA749','\\uA74A':'\\uA74B','\\uA74C':'\\uA74D','\\uA74E':'\\uA74F','\\uA750':'\\uA751','\\uA752':'\\uA753','\\uA754':'\\uA755','\\uA756':'\\uA757','\\uA758':'\\uA759','\\uA75A':'\\uA75B','\\uA75C':'\\uA75D','\\uA75E':'\\uA75F','\\uA760':'\\uA761','\\uA762':'\\uA763','\\uA764':'\\uA765','\\uA766':'\\uA767','\\uA768':'\\uA769','\\uA76A':'\\uA76B','\\uA76C':'\\uA76D','\\uA76E':'\\uA76F','\\uA779':'\\uA77A','\\uA77B':'\\uA77C','\\uA77D':'\\u1D79','\\uA77E':'\\uA77F','\\uA780':'\\uA781','\\uA782':'\\uA783','\\uA784':'\\uA785','\\uA786':'\\uA787','\\uA78B':'\\uA78C','\\uA78D':'\\u0265','\\uA790':'\\uA791','\\uA792':'\\uA793','\\uA796':'\\uA797','\\uA798':'\\uA799','\\uA79A':'\\uA79B','\\uA79C':'\\uA79D','\\uA79E':'\\uA79F','\\uA7A0':'\\uA7A1','\\uA7A2':'\\uA7A3','\\uA7A4':'\\uA7A5','\\uA7A6':'\\uA7A7','\\uA7A8':'\\uA7A9','\\uA7AA':'\\u0266','\\uA7AB':'\\u025C','\\uA7AC':'\\u0261','\\uA7AD':'\\u026C','\\uA7B0':'\\u029E','\\uA7B1':'\\u0287','\\uFF21':'\\uFF41','\\uFF22':'\\uFF42','\\uFF23':'\\uFF43','\\uFF24':'\\uFF44','\\uFF25':'\\uFF45','\\uFF26':'\\uFF46','\\uFF27':'\\uFF47','\\uFF28':'\\uFF48','\\uFF29':'\\uFF49','\\uFF2A':'\\uFF4A','\\uFF2B':'\\uFF4B','\\uFF2C':'\\uFF4C','\\uFF2D':'\\uFF4D','\\uFF2E':'\\uFF4E','\\uFF2F':'\\uFF4F','\\uFF30':'\\uFF50','\\uFF31':'\\uFF51','\\uFF32':'\\uFF52','\\uFF33':'\\uFF53','\\uFF34':'\\uFF54','\\uFF35':'\\uFF55','\\uFF36':'\\uFF56','\\uFF37':'\\uFF57','\\uFF38':'\\uFF58','\\uFF39':'\\uFF59','\\uFF3A':'\\uFF5A','\\uD801\\uDC00':'\\uD801\\uDC28','\\uD801\\uDC01':'\\uD801\\uDC29','\\uD801\\uDC02':'\\uD801\\uDC2A','\\uD801\\uDC03':'\\uD801\\uDC2B','\\uD801\\uDC04':'\\uD801\\uDC2C','\\uD801\\uDC05':'\\uD801\\uDC2D','\\uD801\\uDC06':'\\uD801\\uDC2E','\\uD801\\uDC07':'\\uD801\\uDC2F','\\uD801\\uDC08':'\\uD801\\uDC30','\\uD801\\uDC09':'\\uD801\\uDC31','\\uD801\\uDC0A':'\\uD801\\uDC32','\\uD801\\uDC0B':'\\uD801\\uDC33','\\uD801\\uDC0C':'\\uD801\\uDC34','\\uD801\\uDC0D':'\\uD801\\uDC35','\\uD801\\uDC0E':'\\uD801\\uDC36','\\uD801\\uDC0F':'\\uD801\\uDC37','\\uD801\\uDC10':'\\uD801\\uDC38','\\uD801\\uDC11':'\\uD801\\uDC39','\\uD801\\uDC12':'\\uD801\\uDC3A','\\uD801\\uDC13':'\\uD801\\uDC3B','\\uD801\\uDC14':'\\uD801\\uDC3C','\\uD801\\uDC15':'\\uD801\\uDC3D','\\uD801\\uDC16':'\\uD801\\uDC3E','\\uD801\\uDC17':'\\uD801\\uDC3F','\\uD801\\uDC18':'\\uD801\\uDC40','\\uD801\\uDC19':'\\uD801\\uDC41','\\uD801\\uDC1A':'\\uD801\\uDC42','\\uD801\\uDC1B':'\\uD801\\uDC43','\\uD801\\uDC1C':'\\uD801\\uDC44','\\uD801\\uDC1D':'\\uD801\\uDC45','\\uD801\\uDC1E':'\\uD801\\uDC46','\\uD801\\uDC1F':'\\uD801\\uDC47','\\uD801\\uDC20':'\\uD801\\uDC48','\\uD801\\uDC21':'\\uD801\\uDC49','\\uD801\\uDC22':'\\uD801\\uDC4A','\\uD801\\uDC23':'\\uD801\\uDC4B','\\uD801\\uDC24':'\\uD801\\uDC4C','\\uD801\\uDC25':'\\uD801\\uDC4D','\\uD801\\uDC26':'\\uD801\\uDC4E','\\uD801\\uDC27':'\\uD801\\uDC4F','\\uD806\\uDCA0':'\\uD806\\uDCC0','\\uD806\\uDCA1':'\\uD806\\uDCC1','\\uD806\\uDCA2':'\\uD806\\uDCC2','\\uD806\\uDCA3':'\\uD806\\uDCC3','\\uD806\\uDCA4':'\\uD806\\uDCC4','\\uD806\\uDCA5':'\\uD806\\uDCC5','\\uD806\\uDCA6':'\\uD806\\uDCC6','\\uD806\\uDCA7':'\\uD806\\uDCC7','\\uD806\\uDCA8':'\\uD806\\uDCC8','\\uD806\\uDCA9':'\\uD806\\uDCC9','\\uD806\\uDCAA':'\\uD806\\uDCCA','\\uD806\\uDCAB':'\\uD806\\uDCCB','\\uD806\\uDCAC':'\\uD806\\uDCCC','\\uD806\\uDCAD':'\\uD806\\uDCCD','\\uD806\\uDCAE':'\\uD806\\uDCCE','\\uD806\\uDCAF':'\\uD806\\uDCCF','\\uD806\\uDCB0':'\\uD806\\uDCD0','\\uD806\\uDCB1':'\\uD806\\uDCD1','\\uD806\\uDCB2':'\\uD806\\uDCD2','\\uD806\\uDCB3':'\\uD806\\uDCD3','\\uD806\\uDCB4':'\\uD806\\uDCD4','\\uD806\\uDCB5':'\\uD806\\uDCD5','\\uD806\\uDCB6':'\\uD806\\uDCD6','\\uD806\\uDCB7':'\\uD806\\uDCD7','\\uD806\\uDCB8':'\\uD806\\uDCD8','\\uD806\\uDCB9':'\\uD806\\uDCD9','\\uD806\\uDCBA':'\\uD806\\uDCDA','\\uD806\\uDCBB':'\\uD806\\uDCDB','\\uD806\\uDCBC':'\\uD806\\uDCDC','\\uD806\\uDCBD':'\\uD806\\uDCDD','\\uD806\\uDCBE':'\\uD806\\uDCDE','\\uD806\\uDCBF':'\\uD806\\uDCDF','\\xDF':'ss','\\u0130':'i\\u0307','\\u0149':'\\u02BCn','\\u01F0':'j\\u030C','\\u0390':'\\u03B9\\u0308\\u0301','\\u03B0':'\\u03C5\\u0308\\u0301','\\u0587':'\\u0565\\u0582','\\u1E96':'h\\u0331','\\u1E97':'t\\u0308','\\u1E98':'w\\u030A','\\u1E99':'y\\u030A','\\u1E9A':'a\\u02BE','\\u1E9E':'ss','\\u1F50':'\\u03C5\\u0313','\\u1F52':'\\u03C5\\u0313\\u0300','\\u1F54':'\\u03C5\\u0313\\u0301','\\u1F56':'\\u03C5\\u0313\\u0342','\\u1F80':'\\u1F00\\u03B9','\\u1F81':'\\u1F01\\u03B9','\\u1F82':'\\u1F02\\u03B9','\\u1F83':'\\u1F03\\u03B9','\\u1F84':'\\u1F04\\u03B9','\\u1F85':'\\u1F05\\u03B9','\\u1F86':'\\u1F06\\u03B9','\\u1F87':'\\u1F07\\u03B9','\\u1F88':'\\u1F00\\u03B9','\\u1F89':'\\u1F01\\u03B9','\\u1F8A':'\\u1F02\\u03B9','\\u1F8B':'\\u1F03\\u03B9','\\u1F8C':'\\u1F04\\u03B9','\\u1F8D':'\\u1F05\\u03B9','\\u1F8E':'\\u1F06\\u03B9','\\u1F8F':'\\u1F07\\u03B9','\\u1F90':'\\u1F20\\u03B9','\\u1F91':'\\u1F21\\u03B9','\\u1F92':'\\u1F22\\u03B9','\\u1F93':'\\u1F23\\u03B9','\\u1F94':'\\u1F24\\u03B9','\\u1F95':'\\u1F25\\u03B9','\\u1F96':'\\u1F26\\u03B9','\\u1F97':'\\u1F27\\u03B9','\\u1F98':'\\u1F20\\u03B9','\\u1F99':'\\u1F21\\u03B9','\\u1F9A':'\\u1F22\\u03B9','\\u1F9B':'\\u1F23\\u03B9','\\u1F9C':'\\u1F24\\u03B9','\\u1F9D':'\\u1F25\\u03B9','\\u1F9E':'\\u1F26\\u03B9','\\u1F9F':'\\u1F27\\u03B9','\\u1FA0':'\\u1F60\\u03B9','\\u1FA1':'\\u1F61\\u03B9','\\u1FA2':'\\u1F62\\u03B9','\\u1FA3':'\\u1F63\\u03B9','\\u1FA4':'\\u1F64\\u03B9','\\u1FA5':'\\u1F65\\u03B9','\\u1FA6':'\\u1F66\\u03B9','\\u1FA7':'\\u1F67\\u03B9','\\u1FA8':'\\u1F60\\u03B9','\\u1FA9':'\\u1F61\\u03B9','\\u1FAA':'\\u1F62\\u03B9','\\u1FAB':'\\u1F63\\u03B9','\\u1FAC':'\\u1F64\\u03B9','\\u1FAD':'\\u1F65\\u03B9','\\u1FAE':'\\u1F66\\u03B9','\\u1FAF':'\\u1F67\\u03B9','\\u1FB2':'\\u1F70\\u03B9','\\u1FB3':'\\u03B1\\u03B9','\\u1FB4':'\\u03AC\\u03B9','\\u1FB6':'\\u03B1\\u0342','\\u1FB7':'\\u03B1\\u0342\\u03B9','\\u1FBC':'\\u03B1\\u03B9','\\u1FC2':'\\u1F74\\u03B9','\\u1FC3':'\\u03B7\\u03B9','\\u1FC4':'\\u03AE\\u03B9','\\u1FC6':'\\u03B7\\u0342','\\u1FC7':'\\u03B7\\u0342\\u03B9','\\u1FCC':'\\u03B7\\u03B9','\\u1FD2':'\\u03B9\\u0308\\u0300','\\u1FD3':'\\u03B9\\u0308\\u0301','\\u1FD6':'\\u03B9\\u0342','\\u1FD7':'\\u03B9\\u0308\\u0342','\\u1FE2':'\\u03C5\\u0308\\u0300','\\u1FE3':'\\u03C5\\u0308\\u0301','\\u1FE4':'\\u03C1\\u0313','\\u1FE6':'\\u03C5\\u0342','\\u1FE7':'\\u03C5\\u0308\\u0342','\\u1FF2':'\\u1F7C\\u03B9','\\u1FF3':'\\u03C9\\u03B9','\\u1FF4':'\\u03CE\\u03B9','\\u1FF6':'\\u03C9\\u0342','\\u1FF7':'\\u03C9\\u0342\\u03B9','\\u1FFC':'\\u03C9\\u03B9','\\uFB00':'ff','\\uFB01':'fi','\\uFB02':'fl','\\uFB03':'ffi','\\uFB04':'ffl','\\uFB05':'st','\\uFB06':'st','\\uFB13':'\\u0574\\u0576','\\uFB14':'\\u0574\\u0565','\\uFB15':'\\u0574\\u056B','\\uFB16':'\\u057E\\u0576','\\uFB17':'\\u0574\\u056D'};\n\n// Normalize reference label: collapse internal whitespace\n// to single space, remove leading/trailing whitespace, case fold.\nmodule.exports = function(string) {\n return string.slice(1, string.length - 1).trim().replace(regex, function($0) {\n // Note: there is no need to check `hasOwnProperty($0)` here.\n // If character not found in lookup table, it must be whitespace.\n return map[$0] || ' ';\n });\n};\n","\"use strict\";\n\n// derived from https://github.com/mathiasbynens/String.fromCodePoint\n/*! http://mths.be/fromcodepoint v0.2.1 by @mathias */\nif (String.fromCodePoint) {\n module.exports = function (_) {\n try {\n return String.fromCodePoint(_);\n } catch (e) {\n if (e instanceof RangeError) {\n return String.fromCharCode(0xFFFD);\n }\n throw e;\n }\n };\n\n} else {\n\n var stringFromCharCode = String.fromCharCode;\n var floor = Math.floor;\n var fromCodePoint = function() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n return String.fromCharCode(0xFFFD);\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n };\n module.exports = fromCodePoint;\n}\n","/*! http://mths.be/repeat v0.2.0 by @mathias */\nif (!String.prototype.repeat) {\n\t(function() {\n\t\t'use strict'; // needed to support `apply`/`call` with `undefined`/`null`\n\t\tvar defineProperty = (function() {\n\t\t\t// IE 8 only supports `Object.defineProperty` on DOM elements\n\t\t\ttry {\n\t\t\t\tvar object = {};\n\t\t\t\tvar $defineProperty = Object.defineProperty;\n\t\t\t\tvar result = $defineProperty(object, object, object) && $defineProperty;\n\t\t\t} catch(error) {}\n\t\t\treturn result;\n\t\t}());\n\t\tvar repeat = function(count) {\n\t\t\tif (this == null) {\n\t\t\t\tthrow TypeError();\n\t\t\t}\n\t\t\tvar string = String(this);\n\t\t\t// `ToInteger`\n\t\t\tvar n = count ? Number(count) : 0;\n\t\t\tif (n != n) { // better `isNaN`\n\t\t\t\tn = 0;\n\t\t\t}\n\t\t\t// Account for out-of-bounds indices\n\t\t\tif (n < 0 || n == Infinity) {\n\t\t\t\tthrow RangeError();\n\t\t\t}\n\t\t\tvar result = '';\n\t\t\twhile (n) {\n\t\t\t\tif (n % 2 == 1) {\n\t\t\t\t\tresult += string;\n\t\t\t\t}\n\t\t\t\tif (n > 1) {\n\t\t\t\t\tstring += string;\n\t\t\t\t}\n\t\t\t\tn >>= 1;\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t\tif (defineProperty) {\n\t\t\tdefineProperty(String.prototype, 'repeat', {\n\t\t\t\t'value': repeat,\n\t\t\t\t'configurable': true,\n\t\t\t\t'writable': true\n\t\t\t});\n\t\t} else {\n\t\t\tString.prototype.repeat = repeat;\n\t\t}\n\t}());\n}\n","\"use strict\";\n\nvar Renderer = require('./renderer');\n\nvar reUnsafeProtocol = /^javascript:|vbscript:|file:|data:/i;\nvar reSafeDataProtocol = /^data:image\\/(?:png|gif|jpeg|webp)/i;\n\nvar potentiallyUnsafe = function(url) {\n return reUnsafeProtocol.test(url) &&\n !reSafeDataProtocol.test(url);\n};\n\n// Helper function to produce an HTML tag.\nfunction tag(name, attrs, selfclosing) {\n if (this.disableTags > 0) {\n return;\n }\n this.buffer += ('<' + name);\n if (attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n this.buffer += (' ' + attrib[0] + '=\"' + attrib[1] + '\"');\n i++;\n }\n }\n if (selfclosing) {\n this.buffer += ' /';\n }\n this.buffer += '>';\n this.lastOut = '>';\n}\n\nfunction HtmlRenderer(options) {\n options = options || {};\n // by default, soft breaks are rendered as newlines in HTML\n options.softbreak = options.softbreak || '\\n';\n // set to \"<br />\" to make them hard breaks\n // set to \" \" if you want to ignore line wrapping in source\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n this.options = options;\n}\n\n/* Node methods */\n\nfunction text(node) {\n this.out(node.literal);\n}\n\nfunction softbreak() {\n this.lit(this.options.softbreak);\n}\n\nfunction linebreak() {\n this.tag('br', [], true);\n this.cr();\n}\n\nfunction link(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n if (!(this.options.safe && potentiallyUnsafe(node.destination))) {\n attrs.push(['href', this.esc(node.destination, true)]);\n }\n if (node.title) {\n attrs.push(['title', this.esc(node.title, true)]);\n }\n this.tag('a', attrs);\n } else {\n this.tag('/a');\n }\n}\n\nfunction image(node, entering) {\n if (entering) {\n if (this.disableTags === 0) {\n if (this.options.safe && potentiallyUnsafe(node.destination)) {\n this.lit('<img src=\"\" alt=\"');\n } else {\n this.lit('<img src=\"' + this.esc(node.destination, true) +\n '\" alt=\"');\n }\n }\n this.disableTags += 1;\n } else {\n this.disableTags -= 1;\n if (this.disableTags === 0) {\n if (node.title) {\n this.lit('\" title=\"' + this.esc(node.title, true));\n }\n this.lit('\" />');\n }\n }\n}\n\nfunction emph(node, entering) {\n this.tag(entering ? 'em' : '/em');\n}\n\nfunction strong(node, entering) {\n this.tag(entering ? 'strong' : '/strong');\n}\n\nfunction paragraph(node, entering) {\n var grandparent = node.parent.parent\n , attrs = this.attrs(node);\n if (grandparent !== null &&\n grandparent.type === 'list') {\n if (grandparent.listTight) {\n return;\n }\n }\n if (entering) {\n this.cr();\n this.tag('p', attrs);\n } else {\n this.tag('/p');\n this.cr();\n }\n}\n\nfunction heading(node, entering) {\n var tagname = 'h' + node.level\n , attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag(tagname, attrs);\n } else {\n this.tag('/' + tagname);\n this.cr();\n }\n}\n\nfunction code(node) {\n this.tag('code');\n this.out(node.literal);\n this.tag('/code');\n}\n\nfunction code_block(node) {\n var info_words = node.info ? node.info.split(/\\s+/) : []\n , attrs = this.attrs(node);\n if (info_words.length > 0 && info_words[0].length > 0) {\n attrs.push(['class', 'language-' + this.esc(info_words[0], true)]);\n }\n this.cr();\n this.tag('pre');\n this.tag('code', attrs);\n this.out(node.literal);\n this.tag('/code');\n this.tag('/pre');\n this.cr();\n}\n\nfunction thematic_break(node) {\n var attrs = this.attrs(node);\n this.cr();\n this.tag('hr', attrs, true);\n this.cr();\n}\n\nfunction block_quote(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.cr();\n this.tag('blockquote', attrs);\n this.cr();\n } else {\n this.cr();\n this.tag('/blockquote');\n this.cr();\n }\n}\n\nfunction list(node, entering) {\n var tagname = node.listType === 'bullet' ? 'ul' : 'ol'\n , attrs = this.attrs(node);\n\n if (entering) {\n var start = node.listStart;\n if (start !== null && start !== 1) {\n attrs.push(['start', start.toString()]);\n }\n this.cr();\n this.tag(tagname, attrs);\n this.cr();\n } else {\n this.cr();\n this.tag('/' + tagname);\n this.cr();\n }\n}\n\nfunction item(node, entering) {\n var attrs = this.attrs(node);\n if (entering) {\n this.tag('li', attrs);\n } else {\n this.tag('/li');\n this.cr();\n }\n}\n\nfunction html_inline(node) {\n if (this.options.safe) {\n this.lit('<!-- raw HTML omitted -->');\n } else {\n this.lit(node.literal);\n }\n}\n\nfunction html_block(node) {\n this.cr();\n if (this.options.safe) {\n this.lit('<!-- raw HTML omitted -->');\n } else {\n this.lit(node.literal);\n }\n this.cr();\n}\n\nfunction custom_inline(node, entering) {\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n}\n\nfunction custom_block(node, entering) {\n this.cr();\n if (entering && node.onEnter) {\n this.lit(node.onEnter);\n } else if (!entering && node.onExit) {\n this.lit(node.onExit);\n }\n this.cr();\n}\n\n/* Helper methods */\n\nfunction out(s) {\n this.lit(this.esc(s, false));\n}\n\nfunction attrs (node) {\n var att = [];\n if (this.options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n att.push(['data-sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n return att;\n}\n\n// quick browser-compatible inheritance\nHtmlRenderer.prototype = Object.create(Renderer.prototype);\n\nHtmlRenderer.prototype.text = text;\nHtmlRenderer.prototype.html_inline = html_inline;\nHtmlRenderer.prototype.html_block = html_block;\nHtmlRenderer.prototype.softbreak = softbreak;\nHtmlRenderer.prototype.linebreak = linebreak;\nHtmlRenderer.prototype.link = link;\nHtmlRenderer.prototype.image = image;\nHtmlRenderer.prototype.emph = emph;\nHtmlRenderer.prototype.strong = strong;\nHtmlRenderer.prototype.paragraph = paragraph;\nHtmlRenderer.prototype.heading = heading;\nHtmlRenderer.prototype.code = code;\nHtmlRenderer.prototype.code_block = code_block;\nHtmlRenderer.prototype.thematic_break = thematic_break;\nHtmlRenderer.prototype.block_quote = block_quote;\nHtmlRenderer.prototype.list = list;\nHtmlRenderer.prototype.item = item;\nHtmlRenderer.prototype.custom_inline = custom_inline;\nHtmlRenderer.prototype.custom_block = custom_block;\n\nHtmlRenderer.prototype.esc = require('../common').escapeXml;\n\nHtmlRenderer.prototype.out = out;\nHtmlRenderer.prototype.tag = tag;\nHtmlRenderer.prototype.attrs = attrs;\n\nmodule.exports = HtmlRenderer;\n","\"use strict\";\n\nvar Renderer = require('./renderer');\n\nvar reXMLTag = /\\<[^>]*\\>/;\n\nfunction toTagName(s) {\n return s.replace(/([a-z])([A-Z])/g, \"$1_$2\").toLowerCase();\n}\n\nfunction XmlRenderer(options) {\n options = options || {};\n\n this.disableTags = 0;\n this.lastOut = \"\\n\";\n\n this.indentLevel = 0;\n this.indent = ' ';\n\n this.options = options;\n}\n\nfunction render(ast) {\n\n this.buffer = '';\n\n var attrs;\n var tagname;\n var walker = ast.walker();\n var event, node, entering;\n var container;\n var selfClosing;\n var nodetype;\n\n var options = this.options;\n\n if (options.time) { console.time(\"rendering\"); }\n\n this.buffer += '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n this.buffer += '<!DOCTYPE document SYSTEM \"CommonMark.dtd\">\\n';\n\n while ((event = walker.next())) {\n entering = event.entering;\n node = event.node;\n nodetype = node.type;\n\n container = node.isContainer;\n\n selfClosing = nodetype === 'thematic_break'\n || nodetype === 'linebreak'\n || nodetype === 'softbreak';\n\n tagname = toTagName(nodetype);\n\n if (entering) {\n\n attrs = [];\n\n switch (nodetype) {\n case 'document':\n attrs.push(['xmlns', 'http://commonmark.org/xml/1.0']);\n break;\n case 'list':\n if (node.listType !== null) {\n attrs.push(['type', node.listType.toLowerCase()]);\n }\n if (node.listStart !== null) {\n attrs.push(['start', String(node.listStart)]);\n }\n if (node.listTight !== null) {\n attrs.push(['tight', (node.listTight ? 'true' : 'false')]);\n }\n var delim = node.listDelimiter;\n if (delim !== null) {\n var delimword = '';\n if (delim === '.') {\n delimword = 'period';\n } else {\n delimword = 'paren';\n }\n attrs.push(['delimiter', delimword]);\n }\n break;\n case 'code_block':\n if (node.info) {\n attrs.push(['info', node.info]);\n }\n break;\n case 'heading':\n attrs.push(['level', String(node.level)]);\n break;\n case 'link':\n case 'image':\n attrs.push(['destination', node.destination]);\n attrs.push(['title', node.title]);\n break;\n case 'custom_inline':\n case 'custom_block':\n attrs.push(['on_enter', node.onEnter]);\n attrs.push(['on_exit', node.onExit]);\n break;\n default:\n break;\n }\n if (options.sourcepos) {\n var pos = node.sourcepos;\n if (pos) {\n attrs.push(['sourcepos', String(pos[0][0]) + ':' +\n String(pos[0][1]) + '-' + String(pos[1][0]) + ':' +\n String(pos[1][1])]);\n }\n }\n\n this.cr();\n this.out(this.tag(tagname, attrs, selfClosing));\n if (container) {\n this.indentLevel += 1;\n } else if (!container && !selfClosing) {\n var lit = node.literal;\n if (lit) {\n this.out(this.esc(lit));\n }\n this.out(this.tag('/' + tagname));\n }\n } else {\n this.indentLevel -= 1;\n this.cr();\n this.out(this.tag('/' + tagname));\n }\n }\n if (options.time) { console.timeEnd(\"rendering\"); }\n this.buffer += '\\n';\n return this.buffer;\n}\n\nfunction out(s) {\n if(this.disableTags > 0) {\n this.buffer += s.replace(reXMLTag, '');\n }else{\n this.buffer += s;\n }\n this.lastOut = s;\n}\n\nfunction cr() {\n if(this.lastOut !== '\\n') {\n this.buffer += '\\n';\n this.lastOut = '\\n';\n for(var i = this.indentLevel; i > 0; i--) {\n this.buffer += this.indent;\n }\n }\n}\n\n// Helper function to produce an XML tag.\nfunction tag(name, attrs, selfclosing) {\n var result = '<' + name;\n if(attrs && attrs.length > 0) {\n var i = 0;\n var attrib;\n while ((attrib = attrs[i]) !== undefined) {\n result += ' ' + attrib[0] + '=\"' + this.esc(attrib[1]) + '\"';\n i++;\n }\n }\n if(selfclosing) {\n result += ' /';\n }\n result += '>';\n return result;\n}\n\n// quick browser-compatible inheritance\nXmlRenderer.prototype = Object.create(Renderer.prototype);\n\nXmlRenderer.prototype.render = render;\nXmlRenderer.prototype.out = out;\nXmlRenderer.prototype.cr = cr;\nXmlRenderer.prototype.tag = tag;\nXmlRenderer.prototype.esc = require('../common').escapeXml;\n\nmodule.exports = XmlRenderer;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slate = require('slate');\n\nvar _clamp2 = require('lodash/clamp');\n\nvar _clamp3 = _interopRequireDefault(_clamp2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Aviral Dasgupta\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar HistoryItem = function () {\n\n // We store history items in their native format to ensure history is accurate\n // and then convert them if our RTE has subsequently changed format.\n function HistoryItem(value, format) {\n (0, _classCallCheck3.default)(this, HistoryItem);\n this.format = 'rich';\n\n this.value = value;\n this.format = format;\n }\n\n (0, _createClass3.default)(HistoryItem, [{\n key: 'toJSON',\n value: function toJSON() {\n return {\n value: this.value.toJSON(),\n format: this.format\n };\n }\n }], [{\n key: 'fromJSON',\n value: function fromJSON(obj) {\n return new HistoryItem(_slate.Value.fromJSON(obj.value), obj.format);\n }\n }]);\n return HistoryItem;\n}();\n\nvar ComposerHistoryManager = function () {\n // used for indexing the loaded validated history Array\n\n function ComposerHistoryManager(roomId) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'mx_composer_history_';\n (0, _classCallCheck3.default)(this, ComposerHistoryManager);\n this.history = [];\n this.lastIndex = 0;\n this.currentIndex = 0;\n\n this.prefix = prefix + roomId;\n\n // TODO: Performance issues?\n var item = void 0;\n for (; item = sessionStorage.getItem(this.prefix + '[' + this.currentIndex + ']'); this.currentIndex++) {\n try {\n this.history.push(HistoryItem.fromJSON(JSON.parse(item)));\n } catch (e) {\n console.warn(\"Throwing away unserialisable history\", e);\n }\n }\n this.lastIndex = this.currentIndex;\n // reset currentIndex to account for any unserialisable history\n this.currentIndex = this.history.length;\n } // used for indexing the storage\n\n\n (0, _createClass3.default)(ComposerHistoryManager, [{\n key: 'save',\n value: function save(value, format) {\n var item = new HistoryItem(value, format);\n this.history.push(item);\n this.currentIndex = this.history.length;\n sessionStorage.setItem(this.prefix + '[' + this.lastIndex++ + ']', (0, _stringify2.default)(item.toJSON()));\n }\n }, {\n key: 'getItem',\n value: function getItem(offset) {\n this.currentIndex = (0, _clamp3.default)(this.currentIndex + offset, 0, this.history.length - 1);\n return this.history[this.currentIndex];\n }\n }]);\n return ComposerHistoryManager;\n}();\n\nexports.default = ComposerHistoryManager;\nmodule.exports = exports['default'];\n//# sourceMappingURL=ComposerHistoryManager.js.map","var baseClamp = require('./_baseClamp'),\n toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nmodule.exports = baseClamp;\n","'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slate = require('slate');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar localStoragePrefix = 'editor_state_';\n\n/**\n * A class for storing application state to do with the message composer (specifically in-progress message drafts).\n * It does not worry about cleaning up on log out as this is handled in Lifecycle.js by localStorage.clear()\n */\n/*\nCopyright 2017, 2018 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MessageComposerStore = function () {\n function MessageComposerStore() {\n (0, _classCallCheck3.default)(this, MessageComposerStore);\n\n this.prefix = localStoragePrefix;\n }\n\n (0, _createClass3.default)(MessageComposerStore, [{\n key: '_getKey',\n value: function _getKey(roomId) {\n return this.prefix + roomId;\n }\n }, {\n key: 'setEditorState',\n value: function setEditorState(roomId, editorState, richText) {\n localStorage.setItem(this._getKey(roomId), (0, _stringify2.default)({\n editor_state: editorState.toJSON({\n preserveSelection: true,\n // XXX: re-hydrating history is not currently supported by fromJSON\n // preserveHistory: true,\n // XXX: this seems like a workaround for selection.isSet being based on anchorKey instead of anchorPath\n preserveKeys: true\n }),\n rich_text: richText\n }));\n }\n }, {\n key: 'getEditorState',\n value: function getEditorState(roomId) {\n var stateStr = localStorage.getItem(this._getKey(roomId));\n\n var state = void 0;\n if (stateStr) {\n state = JSON.parse(stateStr);\n\n // if it does not have the fields we expect then bail\n if (!state || state.rich_text === undefined || state.editor_state === undefined) return;\n state.editor_state = _slate.Value.fromJSON(state.editor_state);\n }\n\n return state;\n }\n }]);\n return MessageComposerStore;\n}();\n\nvar singletonMessageComposerStore = null;\nif (!singletonMessageComposerStore) {\n singletonMessageComposerStore = new MessageComposerStore();\n}\nmodule.exports = singletonMessageComposerStore;\n//# sourceMappingURL=MessageComposerStore.js.map","\"use strict\";\n\nvar _promise = require(\"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require(\"../../../MatrixClientPeg\");\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _AccessibleButton = require(\"../elements/AccessibleButton\");\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _PinnedEventTile = require(\"./PinnedEventTile\");\n\nvar _PinnedEventTile2 = _interopRequireDefault(_PinnedEventTile);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _PinningUtils = require(\"../../../utils/PinningUtils\");\n\nvar _PinningUtils2 = _interopRequireDefault(_PinningUtils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PinnedEventsPanel',\n propTypes: {\n // The Room from the js-sdk we're going to show pinned events for\n room: _propTypes2.default.object.isRequired,\n\n onCancelClick: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n loading: true\n };\n },\n\n componentDidMount: function componentDidMount() {\n this._updatePinnedMessages();\n _MatrixClientPeg2.default.get().on(\"RoomState.events\", this._onStateEvent);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (_MatrixClientPeg2.default.get()) {\n _MatrixClientPeg2.default.get().removeListener(\"RoomState.events\", this._onStateEvent);\n }\n },\n\n _onStateEvent: function _onStateEvent(ev) {\n if (ev.getRoomId() === this.props.room.roomId && ev.getType() === \"m.room.pinned_events\") {\n this._updatePinnedMessages();\n }\n },\n\n _updatePinnedMessages: function _updatePinnedMessages() {\n var _this = this;\n\n var pinnedEvents = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents || !pinnedEvents.getContent().pinned) {\n this.setState({ loading: false, pinned: [] });\n } else {\n var promises = [];\n var cli = _MatrixClientPeg2.default.get();\n\n pinnedEvents.getContent().pinned.map(function (eventId) {\n promises.push(cli.getEventTimeline(_this.props.room.getUnfilteredTimelineSet(), eventId, 0).then(function (timeline) {\n var event = timeline.getEvents().find(function (e) {\n return e.getId() === eventId;\n });\n return { eventId: eventId, timeline: timeline, event: event };\n }).catch(function (err) {\n console.error(\"Error looking up pinned event \" + eventId + \" in room \" + _this.props.room.roomId);\n console.error(err);\n return null; // return lack of context to avoid unhandled errors\n }));\n });\n\n _promise2.default.all(promises).then(function (contexts) {\n // Filter out the messages before we try to render them\n var pinned = contexts.filter(function (context) {\n return _PinningUtils2.default.isPinnable(context.event);\n });\n\n _this.setState({ loading: false, pinned: pinned });\n });\n }\n\n this._updateReadState();\n },\n\n _updateReadState: function _updateReadState() {\n var pinnedEvents = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", \"\");\n if (!pinnedEvents) return; // nothing to read\n\n var readStateEvents = [];\n var readPinsEvent = this.props.room.getAccountData(\"im.vector.room.read_pins\");\n if (readPinsEvent && readPinsEvent.getContent()) {\n readStateEvents = readPinsEvent.getContent().event_ids || [];\n }\n\n if (!readStateEvents.includes(pinnedEvents.getId())) {\n readStateEvents.push(pinnedEvents.getId());\n\n // Only keep the last 10 event IDs to avoid infinite growth\n readStateEvents = readStateEvents.reverse().splice(0, 10).reverse();\n\n _MatrixClientPeg2.default.get().setRoomAccountData(this.props.room.roomId, \"im.vector.room.read_pins\", {\n event_ids: readStateEvents\n });\n }\n },\n\n _getPinnedTiles: function _getPinnedTiles() {\n var _this2 = this;\n\n if (this.state.pinned.length === 0) {\n return _react2.default.createElement(\n \"div\",\n null,\n (0, _languageHandler._t)(\"No pinned messages.\")\n );\n }\n\n return this.state.pinned.map(function (context) {\n return _react2.default.createElement(_PinnedEventTile2.default, { key: context.event.getId(),\n mxRoom: _this2.props.room,\n mxEvent: context.event,\n onUnpinned: _this2._updatePinnedMessages });\n });\n },\n\n render: function render() {\n var tiles = _react2.default.createElement(\n \"div\",\n null,\n (0, _languageHandler._t)(\"Loading...\")\n );\n if (this.state && !this.state.loading) {\n tiles = this._getPinnedTiles();\n }\n\n return _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventsPanel\" },\n _react2.default.createElement(\n \"div\",\n { className: \"mx_PinnedEventsPanel_body\" },\n _react2.default.createElement(\n _AccessibleButton2.default,\n { className: \"mx_PinnedEventsPanel_cancel\", onClick: this.props.onCancelClick },\n _react2.default.createElement(\"img\", { className: \"mx_filterFlipColor\", src: \"img/cancel.svg\", width: \"18\", height: \"18\" })\n ),\n _react2.default.createElement(\n \"h3\",\n { className: \"mx_PinnedEventsPanel_header\" },\n (0, _languageHandler._t)(\"Pinned Messages\")\n ),\n tiles\n )\n );\n }\n}); /*\n Copyright 2017 Travis Ralston\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=PinnedEventsPanel.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Travis Ralston\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar PinningUtils = function () {\n function PinningUtils() {\n (0, _classCallCheck3.default)(this, PinningUtils);\n }\n\n (0, _createClass3.default)(PinningUtils, null, [{\n key: \"isPinnable\",\n\n /**\n * Determines if the given event may be pinned.\n * @param {MatrixEvent} event The event to check.\n * @return {boolean} True if the event may be pinned, false otherwise.\n */\n value: function isPinnable(event) {\n if (!event) return false;\n if (event.getType() !== \"m.room.message\") return false;\n if (event.isRedacted()) return false;\n\n return true;\n }\n }]);\n return PinningUtils;\n}();\n\nexports.default = PinningUtils;\nmodule.exports = exports[\"default\"];\n//# sourceMappingURL=PinningUtils.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'PresenceLabel',\n\n propTypes: {\n // number of milliseconds ago this user was last active.\n // zero = unknown\n activeAgo: _propTypes2.default.number,\n\n // if true, activeAgo is an approximation and \"Now\" should\n // be shown instead\n currentlyActive: _propTypes2.default.bool,\n\n // offline, online, etc\n presenceState: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n ago: -1,\n presenceState: null\n };\n },\n\n // Return duration as a string using appropriate time units\n // XXX: This would be better handled using a culture-aware library, but we don't use one yet.\n getDuration: function getDuration(time) {\n if (!time) return;\n var t = parseInt(time / 1000);\n var s = t % 60;\n var m = parseInt(t / 60) % 60;\n var h = parseInt(t / (60 * 60)) % 24;\n var d = parseInt(t / (60 * 60 * 24));\n if (t < 60) {\n if (t < 0) {\n return (0, _languageHandler._t)(\"%(duration)ss\", { duration: 0 });\n }\n return (0, _languageHandler._t)(\"%(duration)ss\", { duration: s });\n }\n if (t < 60 * 60) {\n return (0, _languageHandler._t)(\"%(duration)sm\", { duration: m });\n }\n if (t < 24 * 60 * 60) {\n return (0, _languageHandler._t)(\"%(duration)sh\", { duration: h });\n }\n return (0, _languageHandler._t)(\"%(duration)sd\", { duration: d });\n },\n\n getPrettyPresence: function getPrettyPresence(presence, activeAgo, currentlyActive) {\n if (!currentlyActive && activeAgo !== undefined && activeAgo > 0) {\n var duration = this.getDuration(activeAgo);\n if (presence === \"online\") return (0, _languageHandler._t)(\"Online for %(duration)s\", { duration: duration });\n if (presence === \"unavailable\") return (0, _languageHandler._t)(\"Idle for %(duration)s\", { duration: duration }); // XXX: is this actually right?\n if (presence === \"offline\") return (0, _languageHandler._t)(\"Offline for %(duration)s\", { duration: duration });\n return (0, _languageHandler._t)(\"Unknown for %(duration)s\", { duration: duration });\n } else {\n if (presence === \"online\") return (0, _languageHandler._t)(\"Online\");\n if (presence === \"unavailable\") return (0, _languageHandler._t)(\"Idle\"); // XXX: is this actually right?\n if (presence === \"offline\") return (0, _languageHandler._t)(\"Offline\");\n return (0, _languageHandler._t)(\"Unknown\");\n }\n },\n\n render: function render() {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_PresenceLabel' },\n this.getPrettyPresence(this.props.presenceState, this.props.activeAgo, this.props.currentlyActive)\n );\n }\n});\n//# sourceMappingURL=PresenceLabel.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDOM = require('react-dom');\n\n\nvar sdk = require('../../../index');\n\nvar Velociraptor = require('../../../Velociraptor');\nrequire('../../../VelocityBounce');\n\n\nvar bounce = false;\ntry {\n if (global.localStorage) {\n bounce = global.localStorage.getItem('avatar_bounce') == 'true';\n }\n} catch (e) {}\n\nmodule.exports = React.createClass({\n displayName: 'ReadReceiptMarker',\n\n propTypes: {\n // the RoomMember to show the RR for\n member: _propTypes2.default.object,\n // userId to fallback the avatar to\n // if the member hasn't been loaded yet\n fallbackUserId: _propTypes2.default.string.isRequired,\n\n // number of pixels to offset the avatar from the right of its parent;\n // typically a negative value.\n leftOffset: _propTypes2.default.number,\n\n // true to hide the avatar (it will still be animated)\n hidden: _propTypes2.default.bool,\n\n // don't animate this RR into position\n suppressAnimation: _propTypes2.default.bool,\n\n // an opaque object for storing information about this user's RR in\n // this room\n readReceiptInfo: _propTypes2.default.object,\n\n // A function which is used to check if the parent panel is being\n // unmounted, to avoid unnecessary work. Should return true if we\n // are being unmounted.\n checkUnmounting: _propTypes2.default.func,\n\n // callback for clicks on this RR\n onClick: _propTypes2.default.func,\n\n // Timestamp when the receipt was read\n timestamp: _propTypes2.default.number,\n\n // True to show twelve hour format, false otherwise\n showTwelveHour: _propTypes2.default.bool\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n leftOffset: 0\n };\n },\n\n getInitialState: function getInitialState() {\n // if we are going to animate the RR, we don't show it on first render,\n // and instead just add a placeholder to the DOM; once we've been\n // mounted, we start an animation which moves the RR from its old\n // position.\n return {\n suppressDisplay: !this.props.suppressAnimation\n };\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // before we remove the rr, store its location in the map, so that if\n // it reappears, it can be animated from the right place.\n var rrInfo = this.props.readReceiptInfo;\n if (!rrInfo) {\n return;\n }\n\n // checking the DOM properties can force a re-layout, which can be\n // quite expensive; so if the parent messagepanel is being unmounted,\n // then don't bother with this.\n if (this.props.checkUnmounting && this.props.checkUnmounting()) {\n return;\n }\n\n var avatarNode = ReactDOM.findDOMNode(this);\n rrInfo.top = avatarNode.offsetTop;\n rrInfo.left = avatarNode.offsetLeft;\n rrInfo.parent = avatarNode.offsetParent;\n },\n\n componentDidMount: function componentDidMount() {\n if (!this.state.suppressDisplay) {\n // we've already done our display - nothing more to do.\n return;\n }\n\n // treat new RRs as though they were off the top of the screen\n var oldTop = -15;\n\n var oldInfo = this.props.readReceiptInfo;\n if (oldInfo && oldInfo.parent) {\n oldTop = oldInfo.top + oldInfo.parent.getBoundingClientRect().top;\n }\n\n var newElement = ReactDOM.findDOMNode(this);\n var startTopOffset = void 0;\n if (!newElement.offsetParent) {\n // this seems to happen sometimes for reasons I don't understand\n // the docs for `offsetParent` say it may be null if `display` is\n // `none`, but I can't see why that would happen.\n console.warn('ReadReceiptMarker for ' + this.props.fallbackUserId + ' in has no offsetParent');\n startTopOffset = 0;\n } else {\n startTopOffset = oldTop - newElement.offsetParent.getBoundingClientRect().top;\n }\n\n var startStyles = [];\n var enterTransitionOpts = [];\n\n if (oldInfo && oldInfo.left) {\n // start at the old height and in the old h pos\n\n startStyles.push({ top: startTopOffset + \"px\",\n left: oldInfo.left + \"px\" });\n\n var reorderTransitionOpts = {\n duration: 100,\n easing: 'easeOut'\n };\n\n enterTransitionOpts.push(reorderTransitionOpts);\n }\n\n // then shift to the rightmost column,\n // and then it will drop down to its resting position\n startStyles.push({ top: startTopOffset + 'px', left: '0px' });\n enterTransitionOpts.push({\n duration: bounce ? Math.min(Math.log(Math.abs(startTopOffset)) * 200, 3000) : 300,\n easing: bounce ? 'easeOutBounce' : 'easeOutCubic'\n });\n\n this.setState({\n suppressDisplay: false,\n startStyles: startStyles,\n enterTransitionOpts: enterTransitionOpts\n });\n },\n\n render: function render() {\n var MemberAvatar = sdk.getComponent('avatars.MemberAvatar');\n if (this.state.suppressDisplay) {\n return React.createElement('div', null);\n }\n\n var style = {\n left: this.props.leftOffset + 'px',\n top: '0px',\n visibility: this.props.hidden ? 'hidden' : 'visible'\n };\n\n var title = void 0;\n if (this.props.timestamp) {\n var dateString = (0, _DateUtils.formatDate)(new Date(this.props.timestamp), this.props.showTwelveHour);\n if (!this.props.member || this.props.fallbackUserId === this.props.member.rawDisplayName) {\n title = (0, _languageHandler._t)(\"Seen by %(userName)s at %(dateTime)s\", { userName: this.props.fallbackUserId,\n dateTime: dateString });\n } else {\n title = (0, _languageHandler._t)(\"Seen by %(displayName)s (%(userName)s) at %(dateTime)s\", { displayName: this.props.member.rawDisplayName,\n userName: this.props.fallbackUserId,\n dateTime: dateString });\n }\n }\n\n return React.createElement(\n Velociraptor,\n {\n startStyles: this.state.startStyles,\n enterTransitionOpts: this.state.enterTransitionOpts },\n React.createElement(MemberAvatar, {\n member: this.props.member,\n fallbackUserId: this.props.fallbackUserId,\n 'aria-hidden': 'true',\n width: 14, height: 14, resizeMethod: 'crop',\n style: style,\n title: title,\n onClick: this.props.onClick\n })\n );\n }\n});\n//# sourceMappingURL=ReadReceiptMarker.js.map","'use strict';\n\nvar _values = require('babel-runtime/core-js/object/values');\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\nvar ReactDom = require('react-dom');\n\nvar Velocity = require('velocity-vector');\n\n/**\n * The Velociraptor contains components and animates transitions with velocity.\n * It will only pick up direct changes to properties ('left', currently), and so\n * will not work for animating positional changes where the position is implicit\n * from DOM order. This makes it a lot simpler and lighter: if you need fully\n * automatic positional animation, look at react-shuffle or similar libraries.\n */\nmodule.exports = React.createClass({\n displayName: 'Velociraptor',\n\n propTypes: {\n // either a list of child nodes, or a single child.\n children: _propTypes2.default.any,\n\n // optional transition information for changing existing children\n transition: _propTypes2.default.object,\n\n // a list of state objects to apply to each child node in turn\n startStyles: _propTypes2.default.array,\n\n // a list of transition options from the corresponding startStyle\n enterTransitionOpts: _propTypes2.default.array\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n startStyles: [],\n enterTransitionOpts: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n this.nodes = {};\n this._updateChildren(this.props.children);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n this._updateChildren(nextProps.children);\n },\n\n /**\n * update `this.children` according to the new list of children given\n */\n _updateChildren: function _updateChildren(newChildren) {\n var self = this;\n var oldChildren = this.children || {};\n this.children = {};\n React.Children.toArray(newChildren).forEach(function (c) {\n if (oldChildren[c.key]) {\n var old = oldChildren[c.key];\n var oldNode = ReactDom.findDOMNode(self.nodes[old.key]);\n\n if (oldNode && oldNode.style.left != c.props.style.left) {\n Velocity(oldNode, { left: c.props.style.left }, self.props.transition).then(function () {\n // special case visibility because it's nonsensical to animate an invisible element\n // so we always hidden->visible pre-transition and visible->hidden after\n if (oldNode.style.visibility == 'visible' && c.props.style.visibility == 'hidden') {\n oldNode.style.visibility = c.props.style.visibility;\n }\n });\n //console.log(\"translation: \"+oldNode.style.left+\" -> \"+c.props.style.left);\n }\n if (oldNode && oldNode.style.visibility == 'hidden' && c.props.style.visibility == 'visible') {\n oldNode.style.visibility = c.props.style.visibility;\n }\n // clone the old element with the props (and children) of the new element\n // so prop updates are still received by the children.\n self.children[c.key] = React.cloneElement(old, c.props, c.props.children);\n } else {\n // new element. If we have a startStyle, use that as the style and go through\n // the enter animations\n var newProps = {};\n var restingStyle = c.props.style;\n\n var startStyles = self.props.startStyles;\n if (startStyles.length > 0) {\n var startStyle = startStyles[0];\n newProps.style = startStyle;\n // console.log(\"mounted@startstyle0: \"+JSON.stringify(startStyle));\n }\n\n newProps.ref = function (n) {\n return self._collectNode(c.key, n, restingStyle);\n };\n\n self.children[c.key] = React.cloneElement(c, newProps);\n }\n });\n },\n\n /**\n * called when a child element is mounted/unmounted\n *\n * @param {string} k key of the child\n * @param {null|Object} node On mount: React node. On unmount: null\n * @param {Object} restingStyle final style\n */\n _collectNode: function _collectNode(k, node, restingStyle) {\n if (node && this.nodes[k] === undefined && this.props.startStyles.length > 0) {\n var startStyles = this.props.startStyles;\n var transitionOpts = this.props.enterTransitionOpts;\n var domNode = ReactDom.findDOMNode(node);\n // start from startStyle 1: 0 is the one we gave it\n // to start with, so now we animate 1 etc.\n for (var i = 1; i < startStyles.length; ++i) {\n Velocity(domNode, startStyles[i], transitionOpts[i - 1]);\n /*\n console.log(\"start:\",\n JSON.stringify(transitionOpts[i-1]),\n \"->\",\n JSON.stringify(startStyles[i]),\n );\n */\n }\n\n // and then we animate to the resting state\n Velocity(domNode, restingStyle, transitionOpts[i - 1]).then(function () {\n // once we've reached the resting state, hide the element if\n // appropriate\n domNode.style.visibility = restingStyle.visibility;\n });\n\n /*\n console.log(\"enter:\",\n JSON.stringify(transitionOpts[i-1]),\n \"->\",\n JSON.stringify(restingStyle));\n */\n } else if (node === null) {\n // Velocity stores data on elements using the jQuery .data()\n // method, and assumes you'll be using jQuery's .remove() to\n // remove the element, but we don't use jQuery, so we need to\n // blow away the element's data explicitly otherwise it will leak.\n // This uses Velocity's internal jQuery compatible wrapper.\n // See the bug at\n // https://github.com/julianshapiro/velocity/issues/300\n // and the FAQ entry, \"Preventing memory leaks when\n // creating/destroying large numbers of elements\"\n // (https://github.com/julianshapiro/velocity/issues/47)\n var _domNode = ReactDom.findDOMNode(this.nodes[k]);\n if (_domNode) Velocity.Utilities.removeData(_domNode);\n }\n this.nodes[k] = node;\n },\n\n render: function render() {\n return React.createElement(\n 'span',\n null,\n (0, _values2.default)(this.children)\n );\n }\n});\n//# sourceMappingURL=Velociraptor.js.map","'use strict';\n\nvar Velocity = require('velocity-vector');\n\n// courtesy of https://github.com/julianshapiro/velocity/issues/283\n// We only use easeOutBounce (easeInBounce is just sort of nonsensical)\nfunction bounce(p) {\n var pow2 = void 0,\n bounce = 4;\n\n while (p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11) {\n // just sets pow2\n }\n return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2);\n}\n\nVelocity.Easings.easeOutBounce = function (p) {\n return 1 - bounce(1 - p);\n};\n//# sourceMappingURL=VelocityBounce.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _RoomDetailRow = require('./RoomDetailRow');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createClass({\n displayName: 'RoomDetailList',\n\n propTypes: {\n rooms: _propTypes2.default.arrayOf(_RoomDetailRow.roomShape),\n className: _propTypes2.default.string\n },\n\n getRows: function getRows() {\n var _this = this;\n\n if (!this.props.rooms) return [];\n\n var RoomDetailRow = _index2.default.getComponent('rooms.RoomDetailRow');\n return this.props.rooms.map(function (room, index) {\n return _react2.default.createElement(RoomDetailRow, { key: index, room: room, onClick: _this.onDetailsClick });\n });\n },\n\n onDetailsClick: function onDetailsClick(ev, room) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: room.roomId,\n room_alias: room.canonicalAlias || (room.aliases || [])[0]\n });\n },\n\n render: function render() {\n var rows = this.getRows();\n var rooms = void 0;\n if (rows.length === 0) {\n rooms = _react2.default.createElement(\n 'i',\n null,\n (0, _languageHandler._t)('No rooms to show')\n );\n } else {\n rooms = _react2.default.createElement(\n 'table',\n { ref: 'directory_table', className: 'mx_RoomDirectory_table' },\n _react2.default.createElement(\n 'tbody',\n null,\n this.getRows()\n )\n );\n }\n return _react2.default.createElement(\n 'div',\n { className: (0, _classnames2.default)(\"mx_RoomDetailList\", this.props.className) },\n rooms\n );\n }\n}); /*\n Copyright 2017 New Vector Ltd.\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=RoomDetailList.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\n\nmodule.exports = React.createClass({\n displayName: 'RoomDropTarget',\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget_container' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget' },\n React.createElement(\n 'div',\n { className: 'mx_RoomDropTarget_label' },\n this.props.label\n )\n )\n );\n }\n});\n//# sourceMappingURL=RoomDropTarget.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _ratelimitedfunc = require('../../../ratelimitedfunc');\n\nvar _ratelimitedfunc2 = _interopRequireDefault(_ratelimitedfunc);\n\nvar _linkifyjs = require('linkifyjs');\n\nvar linkify = _interopRequireWildcard(_linkifyjs);\n\nvar _element = require('linkifyjs/element');\n\nvar _element2 = _interopRequireDefault(_element);\n\nvar _linkifyMatrix = require('../../../linkify-matrix');\n\nvar _linkifyMatrix2 = _interopRequireDefault(_linkifyMatrix);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _ManageIntegsButton = require('../elements/ManageIntegsButton');\n\nvar _ManageIntegsButton2 = _interopRequireDefault(_ManageIntegsButton);\n\nvar _SimpleRoomHeader = require('./SimpleRoomHeader');\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(0, _linkifyMatrix2.default)(linkify);\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomHeader',\n\n propTypes: {\n room: _propTypes2.default.object,\n oobData: _propTypes2.default.object,\n editing: _propTypes2.default.bool,\n saving: _propTypes2.default.bool,\n inRoom: _propTypes2.default.bool,\n collapsedRhs: _propTypes2.default.bool,\n onSettingsClick: _propTypes2.default.func,\n onPinnedClick: _propTypes2.default.func,\n onSaveClick: _propTypes2.default.func,\n onSearchClick: _propTypes2.default.func,\n onLeaveClick: _propTypes2.default.func,\n onCancelClick: _propTypes2.default.func\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n editing: false,\n inRoom: false,\n onSaveClick: function onSaveClick() {},\n onCancelClick: null\n };\n },\n\n componentDidMount: function componentDidMount() {\n var cli = _MatrixClientPeg2.default.get();\n cli.on(\"RoomState.events\", this._onRoomStateEvents);\n cli.on(\"Room.accountData\", this._onRoomAccountData);\n\n // When a room name occurs, RoomState.events is fired *before*\n // room.name is updated. So we have to listen to Room.name as well as\n // RoomState.events.\n if (this.props.room) {\n this.props.room.on(\"Room.name\", this._onRoomNameChange);\n }\n },\n\n componentDidUpdate: function componentDidUpdate() {\n if (this.refs.topic) {\n (0, _element2.default)(this.refs.topic, _linkifyMatrix2.default.options);\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this.props.room) {\n this.props.room.removeListener(\"Room.name\", this._onRoomNameChange);\n }\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomState.events\", this._onRoomStateEvents);\n cli.removeListener(\"Room.accountData\", this._onRoomAccountData);\n }\n },\n\n _onRoomStateEvents: function _onRoomStateEvents(event, state) {\n if (!this.props.room || event.getRoomId() !== this.props.room.roomId) {\n return;\n }\n\n // redisplay the room name, topic, etc.\n this._rateLimitedUpdate();\n },\n\n _onRoomAccountData: function _onRoomAccountData(event, room) {\n if (!this.props.room || room.roomId !== this.props.room.roomId) return;\n if (event.getType() !== \"im.vector.room.read_pins\") return;\n\n this._rateLimitedUpdate();\n },\n\n _rateLimitedUpdate: new _ratelimitedfunc2.default(function () {\n /* eslint-disable babel/no-invalid-this */\n this.forceUpdate();\n }, 500),\n\n _onRoomNameChange: function _onRoomNameChange(room) {\n this.forceUpdate();\n },\n\n onAvatarPickerClick: function onAvatarPickerClick(ev) {\n if (this.refs.file_label) {\n this.refs.file_label.click();\n }\n },\n\n onAvatarSelected: function onAvatarSelected(ev) {\n var changeAvatar = this.refs.changeAvatar;\n if (!changeAvatar) {\n console.error(\"No ChangeAvatar found to upload image to!\");\n return;\n }\n changeAvatar.onFileSelected(ev).catch(function (err) {\n var errMsg = typeof err === \"string\" ? err : err.error || \"\";\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to set avatar: \" + errMsg);\n _Modal2.default.createTrackedDialog('Failed to set avatar', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: (0, _languageHandler._t)(\"Failed to set avatar.\")\n });\n }).done();\n },\n\n onAvatarRemoveClick: function onAvatarRemoveClick() {\n _MatrixClientPeg2.default.get().sendStateEvent(this.props.room.roomId, 'm.room.avatar', { url: null }, '');\n },\n\n onShowRhsClick: function onShowRhsClick(ev) {\n _dispatcher2.default.dispatch({ action: 'show_right_panel' });\n },\n\n onShareRoomClick: function onShareRoomClick(ev) {\n var ShareDialog = _index2.default.getComponent(\"dialogs.ShareDialog\");\n _Modal2.default.createTrackedDialog('share room dialog', '', ShareDialog, {\n target: this.props.room\n });\n },\n\n _hasUnreadPins: function _hasUnreadPins() {\n var currentPinEvent = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", '');\n if (!currentPinEvent) return false;\n if (currentPinEvent.getContent().pinned && currentPinEvent.getContent().pinned.length <= 0) {\n return false; // no pins == nothing to read\n }\n\n var readPinsEvent = this.props.room.getAccountData(\"im.vector.room.read_pins\");\n if (readPinsEvent && readPinsEvent.getContent()) {\n var readStateEvents = readPinsEvent.getContent().event_ids || [];\n if (readStateEvents) {\n return !readStateEvents.includes(currentPinEvent.getId());\n }\n }\n\n // There's pins, and we haven't read any of them\n return true;\n },\n\n _hasPins: function _hasPins() {\n var currentPinEvent = this.props.room.currentState.getStateEvents(\"m.room.pinned_events\", '');\n if (!currentPinEvent) return false;\n\n return !(currentPinEvent.getContent().pinned && currentPinEvent.getContent().pinned.length <= 0);\n },\n\n /**\n * After editing the settings, get the new name for the room\n *\n * @return {?string} newName or undefined if we didn't let the user edit the room name\n */\n getEditedName: function getEditedName() {\n var newName = void 0;\n if (this.refs.nameEditor) {\n newName = this.refs.nameEditor.getRoomName();\n }\n return newName;\n },\n\n /**\n * After editing the settings, get the new topic for the room\n *\n * @return {?string} newTopic or undefined if we didn't let the user edit the room topic\n */\n getEditedTopic: function getEditedTopic() {\n var newTopic = void 0;\n if (this.refs.topicEditor) {\n newTopic = this.refs.topicEditor.getTopic();\n }\n return newTopic;\n },\n\n render: function render() {\n var RoomAvatar = _index2.default.getComponent(\"avatars.RoomAvatar\");\n var ChangeAvatar = _index2.default.getComponent(\"settings.ChangeAvatar\");\n var TintableSvg = _index2.default.getComponent(\"elements.TintableSvg\");\n var EmojiText = _index2.default.getComponent('elements.EmojiText');\n\n var name = null;\n var searchStatus = null;\n var topicElement = null;\n var cancelButton = null;\n var spinner = null;\n var saveButton = null;\n var settingsButton = null;\n var pinnedEventsButton = null;\n\n var canSetRoomName = void 0;\n var canSetRoomAvatar = void 0;\n var canSetRoomTopic = void 0;\n if (this.props.editing) {\n // calculate permissions. XXX: this should be done on mount or something\n var userId = _MatrixClientPeg2.default.get().credentials.userId;\n\n canSetRoomName = this.props.room.currentState.maySendStateEvent('m.room.name', userId);\n canSetRoomAvatar = this.props.room.currentState.maySendStateEvent('m.room.avatar', userId);\n canSetRoomTopic = this.props.room.currentState.maySendStateEvent('m.room.topic', userId);\n\n saveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_textButton', onClick: this.props.onSaveClick },\n (0, _languageHandler._t)(\"Save\")\n );\n }\n\n if (this.props.onCancelClick) {\n cancelButton = _react2.default.createElement(_SimpleRoomHeader.CancelButton, { onClick: this.props.onCancelClick });\n }\n\n if (this.props.saving) {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_spinner' },\n _react2.default.createElement(Spinner, null)\n );\n }\n\n if (canSetRoomName) {\n var RoomNameEditor = _index2.default.getComponent(\"rooms.RoomNameEditor\");\n name = _react2.default.createElement(RoomNameEditor, { ref: 'nameEditor', room: this.props.room });\n } else {\n // don't display the search count until the search completes and\n // gives us a valid (possibly zero) searchCount.\n if (this.props.searchInfo && this.props.searchInfo.searchCount !== undefined && this.props.searchInfo.searchCount !== null) {\n searchStatus = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_searchStatus' },\n '\\xA0',\n (0, _languageHandler._t)(\"(~%(count)s results)\", { count: this.props.searchInfo.searchCount })\n );\n }\n\n // XXX: this is a bit inefficient - we could just compare room.name for 'Empty room'...\n var settingsHint = false;\n var members = this.props.room ? this.props.room.getJoinedMembers() : undefined;\n if (members) {\n if (members.length === 1 && members[0].userId === _MatrixClientPeg2.default.get().credentials.userId) {\n var nameEvent = this.props.room.currentState.getStateEvents('m.room.name', '');\n if (!nameEvent || !nameEvent.getContent().name) {\n settingsHint = true;\n }\n }\n }\n\n var roomName = (0, _languageHandler._t)(\"Join Room\");\n if (this.props.oobData && this.props.oobData.name) {\n roomName = this.props.oobData.name;\n } else if (this.props.room) {\n roomName = this.props.room.name;\n }\n\n var emojiTextClasses = (0, _classnames2.default)('mx_RoomHeader_nametext', { mx_RoomHeader_settingsHint: settingsHint });\n name = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_name', onClick: this.props.onSettingsClick },\n _react2.default.createElement(\n EmojiText,\n { dir: 'auto', element: 'div', className: emojiTextClasses, title: roomName },\n roomName\n ),\n searchStatus\n );\n }\n\n if (canSetRoomTopic) {\n var RoomTopicEditor = _index2.default.getComponent(\"rooms.RoomTopicEditor\");\n topicElement = _react2.default.createElement(RoomTopicEditor, { ref: 'topicEditor', room: this.props.room });\n } else {\n var topic = void 0;\n if (this.props.room) {\n var ev = this.props.room.currentState.getStateEvents('m.room.topic', '');\n if (ev) {\n topic = ev.getContent().topic;\n }\n }\n if (topic) {\n topicElement = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_topic', ref: 'topic', title: topic, dir: 'auto' },\n topic\n );\n }\n }\n\n var roomAvatar = null;\n if (canSetRoomAvatar) {\n roomAvatar = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker' },\n _react2.default.createElement(\n 'div',\n { onClick: this.onAvatarPickerClick },\n _react2.default.createElement(ChangeAvatar, { ref: 'changeAvatar', room: this.props.room, showUploadSection: false, width: 48, height: 48 })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker_edit' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'avatarInput', ref: 'file_label' },\n _react2.default.createElement('img', { src: 'img/camera.svg',\n alt: (0, _languageHandler._t)(\"Upload avatar\"), title: (0, _languageHandler._t)(\"Upload avatar\"),\n width: '17', height: '15' })\n ),\n _react2.default.createElement('input', { id: 'avatarInput', type: 'file', onChange: this.onAvatarSelected })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatarPicker_remove', onClick: this.onAvatarRemoveClick },\n _react2.default.createElement('img', { src: 'img/cancel.svg',\n className: 'mx_filterFlipColor',\n width: '10',\n alt: (0, _languageHandler._t)(\"Remove avatar\"),\n title: (0, _languageHandler._t)(\"Remove avatar\") })\n )\n );\n } else if (this.props.room || this.props.oobData && this.props.oobData.name) {\n roomAvatar = _react2.default.createElement(RoomAvatar, { room: this.props.room, width: 48, height: 48, oobData: this.props.oobData,\n viewAvatarOnClick: true });\n }\n\n if (this.props.onSettingsClick) {\n settingsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onSettingsClick, title: (0, _languageHandler._t)(\"Settings\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-settings-room.svg', width: '16', height: '16' })\n );\n }\n\n if (this.props.onPinnedClick && _SettingsStore2.default.isFeatureEnabled('feature_pinning')) {\n var pinsIndicator = null;\n if (this._hasUnreadPins()) {\n pinsIndicator = _react2.default.createElement('div', { className: 'mx_RoomHeader_pinsIndicator mx_RoomHeader_pinsIndicatorUnread' });\n } else if (this._hasPins()) {\n pinsIndicator = _react2.default.createElement('div', { className: 'mx_RoomHeader_pinsIndicator' });\n }\n\n pinnedEventsButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button mx_RoomHeader_pinnedButton',\n onClick: this.props.onPinnedClick, title: (0, _languageHandler._t)(\"Pinned Messages\") },\n pinsIndicator,\n _react2.default.createElement(TintableSvg, { src: 'img/icons-pin.svg', width: '16', height: '16' })\n );\n }\n\n // var leave_button;\n // if (this.props.onLeaveClick) {\n // leave_button =\n // <div className=\"mx_RoomHeader_button\" onClick={this.props.onLeaveClick} title=\"Leave room\">\n // <TintableSvg src=\"img/leave.svg\" width=\"26\" height=\"20\"/>\n // </div>;\n // }\n\n var forgetButton = void 0;\n if (this.props.onForgetClick) {\n forgetButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onForgetClick, title: (0, _languageHandler._t)(\"Forget room\") },\n _react2.default.createElement(TintableSvg, { src: 'img/leave.svg', width: '26', height: '20' })\n );\n }\n\n var searchButton = void 0;\n if (this.props.onSearchClick && this.props.inRoom) {\n searchButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.props.onSearchClick, title: (0, _languageHandler._t)(\"Search\") },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-search.svg', width: '35', height: '35' })\n );\n }\n\n var shareRoomButton = void 0;\n if (this.props.inRoom) {\n shareRoomButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.onShareRoomClick, title: (0, _languageHandler._t)('Share room') },\n _react2.default.createElement(TintableSvg, { src: 'img/icons-share.svg', width: '16', height: '16' })\n );\n }\n\n var rightPanelButtons = void 0;\n if (this.props.collapsedRhs) {\n rightPanelButtons = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomHeader_button', onClick: this.onShowRhsClick, title: (0, _languageHandler._t)('Show panel') },\n _react2.default.createElement(TintableSvg, { src: 'img/maximise.svg', width: '10', height: '16' })\n );\n }\n\n var rightRow = void 0;\n var manageIntegsButton = void 0;\n if (this.props.room && this.props.room.roomId && this.props.inRoom) {\n manageIntegsButton = _react2.default.createElement(_ManageIntegsButton2.default, {\n room: this.props.room\n });\n }\n\n if (!this.props.editing) {\n rightRow = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_rightRow' },\n settingsButton,\n pinnedEventsButton,\n shareRoomButton,\n manageIntegsButton,\n forgetButton,\n searchButton,\n rightPanelButtons\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: \"mx_RoomHeader \" + (this.props.editing ? \"mx_RoomHeader_editing\" : \"\") },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_wrapper' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_leftRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_avatar' },\n roomAvatar\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomHeader_info' },\n name,\n topicElement\n )\n ),\n spinner,\n saveButton,\n cancelButton,\n rightRow\n )\n );\n }\n});\n//# sourceMappingURL=RoomHeader.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017, 2018 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _values = require(\"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _from = require(\"babel-runtime/core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nvar _set = require(\"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _SettingsStore = require(\"../../../settings/SettingsStore\");\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar _Rooms = require(\"../../../Rooms\");\n\nvar Rooms = _interopRequireWildcard(_Rooms);\n\nvar _DMRoomMap = require(\"../../../utils/DMRoomMap\");\n\nvar _DMRoomMap2 = _interopRequireDefault(_DMRoomMap);\n\nvar _TagOrderStore = require(\"../../../stores/TagOrderStore\");\n\nvar _TagOrderStore2 = _interopRequireDefault(_TagOrderStore);\n\nvar _RoomListStore = require(\"../../../stores/RoomListStore\");\n\nvar _RoomListStore2 = _interopRequireDefault(_RoomListStore);\n\nvar _GroupStore = require(\"../../../stores/GroupStore\");\n\nvar _GroupStore2 = _interopRequireDefault(_GroupStore);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar CallHandler = require('../../../CallHandler');\nvar dis = require(\"../../../dispatcher\");\nvar sdk = require('../../../index');\nvar rate_limited_func = require('../../../ratelimitedfunc');\n\nvar Receipt = require('../../../utils/Receipt');\n\n\nvar HIDE_CONFERENCE_CHANS = true;\nvar STANDARD_TAGS_REGEX = /^(m\\.(favourite|lowpriority|server_notice)|im\\.vector\\.fake\\.(invite|recent|direct|archived))$/;\n\nfunction labelForTagName(tagName) {\n if (tagName.startsWith('u.')) return tagName.slice(2);\n return tagName;\n}\n\nfunction phraseForSection(section) {\n switch (section) {\n case 'm.favourite':\n return (0, _languageHandler._t)('Drop here to favourite');\n case 'im.vector.fake.direct':\n return (0, _languageHandler._t)('Drop here to tag direct chat');\n case 'im.vector.fake.recent':\n return (0, _languageHandler._t)('Drop here to restore');\n case 'm.lowpriority':\n return (0, _languageHandler._t)('Drop here to demote');\n default:\n return (0, _languageHandler._t)('Drop here to tag %(section)s', { section: section });\n }\n}\n\nmodule.exports = React.createClass({\n displayName: 'RoomList',\n\n propTypes: {\n ConferenceHandler: _propTypes2.default.any,\n collapsed: _propTypes2.default.bool.isRequired,\n searchFilter: _propTypes2.default.string\n },\n\n getInitialState: function getInitialState() {\n return {\n isLoadingLeftRooms: false,\n totalRoomCount: null,\n lists: {},\n incomingCall: null,\n selectedTags: []\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.mounted = false;\n\n var cli = MatrixClientPeg.get();\n\n cli.on(\"Room\", this.onRoom);\n cli.on(\"deleteRoom\", this.onDeleteRoom);\n cli.on(\"Room.receipt\", this.onRoomReceipt);\n cli.on(\"RoomMember.name\", this.onRoomMemberName);\n cli.on(\"Event.decrypted\", this.onEventDecrypted);\n cli.on(\"accountData\", this.onAccountData);\n cli.on(\"Group.myMembership\", this._onGroupMyMembership);\n\n var dmRoomMap = _DMRoomMap2.default.shared();\n // A map between tags which are group IDs and the room IDs of rooms that should be kept\n // in the room list when filtering by that tag.\n this._visibleRoomsForGroup = {\n // $groupId: [$roomId1, $roomId2, ...],\n };\n // All rooms that should be kept in the room list when filtering.\n // By default, show all rooms.\n this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();\n\n // Listen to updates to group data. RoomList cares about members and rooms in order\n // to filter the room list when group tags are selected.\n this._groupStoreToken = _GroupStore2.default.registerListener(null, function () {\n (_TagOrderStore2.default.getOrderedTags() || []).forEach(function (tag) {\n if (tag[0] !== '+') {\n return;\n }\n // This group's rooms or members may have updated, update rooms for its tag\n _this.updateVisibleRoomsForTag(dmRoomMap, tag);\n _this.updateVisibleRooms();\n });\n });\n\n this._tagStoreToken = _TagOrderStore2.default.addListener(function () {\n // Filters themselves have changed\n _this.updateVisibleRooms();\n });\n\n this._roomListStoreToken = _RoomListStore2.default.addListener(function () {\n _this._delayedRefreshRoomList();\n });\n\n this.refreshRoomList();\n\n // order of the sublists\n //this.listOrder = [];\n\n // loop count to stop a stack overflow if the user keeps waggling the\n // mouse for >30s in a row, or if running under mocha\n this._delayedRefreshRoomListLoopCount = 0;\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n // Initialise the stickyHeaders when the component is created\n this._updateStickyHeaders(true);\n\n this.mounted = true;\n },\n\n componentDidUpdate: function componentDidUpdate() {\n // Reinitialise the stickyHeaders when the component is updated\n this._updateStickyHeaders(true);\n this._repositionIncomingCallBox(undefined, false);\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'view_tooltip':\n this.tooltip = payload.tooltip;\n break;\n case 'call_state':\n var call = CallHandler.getCall(payload.room_id);\n if (call && call.call_state === 'ringing') {\n this.setState({\n incomingCall: call\n });\n this._repositionIncomingCallBox(undefined, true);\n } else {\n this.setState({\n incomingCall: null\n });\n }\n break;\n }\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this.mounted = false;\n\n dis.unregister(this.dispatcherRef);\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"Room\", this.onRoom);\n MatrixClientPeg.get().removeListener(\"deleteRoom\", this.onDeleteRoom);\n MatrixClientPeg.get().removeListener(\"Room.receipt\", this.onRoomReceipt);\n MatrixClientPeg.get().removeListener(\"RoomMember.name\", this.onRoomMemberName);\n MatrixClientPeg.get().removeListener(\"Event.decrypted\", this.onEventDecrypted);\n MatrixClientPeg.get().removeListener(\"accountData\", this.onAccountData);\n MatrixClientPeg.get().removeListener(\"Group.myMembership\", this._onGroupMyMembership);\n }\n\n if (this._tagStoreToken) {\n this._tagStoreToken.remove();\n }\n\n if (this._roomListStoreToken) {\n this._roomListStoreToken.remove();\n }\n\n // NB: GroupStore is not a Flux.Store\n if (this._groupStoreToken) {\n this._groupStoreToken.unregister();\n }\n\n // cancel any pending calls to the rate_limited_funcs\n this._delayedRefreshRoomList.cancelPendingCall();\n },\n\n onRoom: function onRoom(room) {\n this.updateVisibleRooms();\n },\n\n onDeleteRoom: function onDeleteRoom(roomId) {\n this.updateVisibleRooms();\n },\n\n onArchivedHeaderClick: function onArchivedHeaderClick(isHidden, scrollToPosition) {\n if (!isHidden) {\n var self = this;\n this.setState({ isLoadingLeftRooms: true });\n\n // Try scrolling to position\n this._updateStickyHeaders(true, scrollToPosition);\n\n // we don't care about the response since it comes down via \"Room\"\n // events.\n MatrixClientPeg.get().syncLeftRooms().catch(function (err) {\n console.error(\"Failed to sync left rooms: %s\", err);\n console.error(err);\n }).finally(function () {\n self.setState({ isLoadingLeftRooms: false });\n });\n }\n },\n\n onSubListHeaderClick: function onSubListHeaderClick(isHidden, scrollToPosition) {\n // The scroll area has expanded or contracted, so re-calculate sticky headers positions\n this._updateStickyHeaders(true, scrollToPosition);\n },\n\n onRoomReceipt: function onRoomReceipt(receiptEvent, room) {\n // because if we read a notification, it will affect notification count\n // only bother updating if there's a receipt from us\n if (Receipt.findReadReceiptFromUserId(receiptEvent, MatrixClientPeg.get().credentials.userId)) {\n this._delayedRefreshRoomList();\n }\n },\n\n onRoomMemberName: function onRoomMemberName(ev, member) {\n this._delayedRefreshRoomList();\n },\n\n onEventDecrypted: function onEventDecrypted(ev) {\n // An event being decrypted may mean we need to re-order the room list\n this._delayedRefreshRoomList();\n },\n\n onAccountData: function onAccountData(ev) {\n if (ev.getType() == 'm.direct') {\n this._delayedRefreshRoomList();\n }\n },\n\n _onGroupMyMembership: function _onGroupMyMembership(group) {\n this.forceUpdate();\n },\n\n _delayedRefreshRoomList: new rate_limited_func(function () {\n this.refreshRoomList();\n }, 500),\n\n // Update which rooms and users should appear in RoomList for a given group tag\n updateVisibleRoomsForTag: function updateVisibleRoomsForTag(dmRoomMap, tag) {\n var _this2 = this;\n\n if (!this.mounted) return;\n // For now, only handle group tags\n if (tag[0] !== '+') return;\n\n this._visibleRoomsForGroup[tag] = [];\n _GroupStore2.default.getGroupRooms(tag).forEach(function (room) {\n return _this2._visibleRoomsForGroup[tag].push(room.roomId);\n });\n _GroupStore2.default.getGroupMembers(tag).forEach(function (member) {\n if (member.userId === MatrixClientPeg.get().credentials.userId) return;\n dmRoomMap.getDMRoomsForUserId(member.userId).forEach(function (roomId) {\n return _this2._visibleRoomsForGroup[tag].push(roomId);\n });\n });\n // TODO: Check if room has been tagged to the group by the user\n },\n\n // Update which rooms and users should appear according to which tags are selected\n updateVisibleRooms: function updateVisibleRooms() {\n var _this3 = this;\n\n var selectedTags = _TagOrderStore2.default.getSelectedTags();\n var visibleGroupRooms = [];\n selectedTags.forEach(function (tag) {\n (_this3._visibleRoomsForGroup[tag] || []).forEach(function (roomId) {\n return visibleGroupRooms.push(roomId);\n });\n });\n\n // If there are any tags selected, constrain the rooms listed to the\n // visible rooms as determined by visibleGroupRooms. Here, we\n // de-duplicate and filter out rooms that the client doesn't know\n // about (hence the Set and the null-guard on `room`).\n if (selectedTags.length > 0) {\n var roomSet = new _set2.default();\n visibleGroupRooms.forEach(function (roomId) {\n var room = MatrixClientPeg.get().getRoom(roomId);\n if (room) {\n roomSet.add(room);\n }\n });\n this._visibleRooms = (0, _from2.default)(roomSet);\n } else {\n // Show all rooms\n this._visibleRooms = MatrixClientPeg.get().getVisibleRooms();\n }\n this._delayedRefreshRoomList();\n },\n\n refreshRoomList: function refreshRoomList() {\n // TODO: ideally we'd calculate this once at start, and then maintain\n // any changes to it incrementally, updating the appropriate sublists\n // as needed.\n // Alternatively we'd do something magical with Immutable.js or similar.\n var lists = this.getRoomLists();\n var totalRooms = 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)((0, _values2.default)(lists)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var l = _step.value;\n\n totalRooms += l.length;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.setState({\n lists: lists,\n totalRoomCount: totalRooms,\n // Do this here so as to not render every time the selected tags\n // themselves change.\n selectedTags: _TagOrderStore2.default.getSelectedTags()\n });\n\n // this._lastRefreshRoomListTs = Date.now();\n },\n\n getRoomLists: function getRoomLists() {\n var _this4 = this;\n\n var lists = _RoomListStore2.default.getRoomLists();\n\n var filteredLists = {};\n\n var isRoomVisible = {\n // $roomId: true,\n };\n\n this._visibleRooms.forEach(function (r) {\n isRoomVisible[r.roomId] = true;\n });\n\n (0, _keys2.default)(lists).forEach(function (tagName) {\n var filteredRooms = lists[tagName].filter(function (taggedRoom) {\n // Somewhat impossible, but guard against it anyway\n if (!taggedRoom) {\n return;\n }\n var myUserId = MatrixClientPeg.get().getUserId();\n if (HIDE_CONFERENCE_CHANS && Rooms.isConfCallRoom(taggedRoom, myUserId, _this4.props.ConferenceHandler)) {\n return;\n }\n\n return Boolean(isRoomVisible[taggedRoom.roomId]);\n });\n\n if (filteredRooms.length > 0 || tagName.match(STANDARD_TAGS_REGEX)) {\n filteredLists[tagName] = filteredRooms;\n }\n });\n\n return filteredLists;\n },\n\n _getScrollNode: function _getScrollNode() {\n if (!this.mounted) return null;\n var panel = ReactDOM.findDOMNode(this);\n if (!panel) return null;\n\n if (panel.classList.contains('gm-prevented')) {\n return panel;\n } else {\n return panel.children[2]; // XXX: Fragile!\n }\n },\n\n _whenScrolling: function _whenScrolling(e) {\n this._hideTooltip(e);\n this._repositionIncomingCallBox(e, false);\n this._updateStickyHeaders(false);\n },\n\n _hideTooltip: function _hideTooltip(e) {\n // Hide tooltip when scrolling, as we'll no longer be over the one we were on\n if (this.tooltip && this.tooltip.style.display !== \"none\") {\n this.tooltip.style.display = \"none\";\n }\n },\n\n _repositionIncomingCallBox: function _repositionIncomingCallBox(e, firstTime) {\n var incomingCallBox = document.getElementById(\"incomingCallBox\");\n if (incomingCallBox && incomingCallBox.parentElement) {\n var scrollArea = this._getScrollNode();\n if (!scrollArea) return;\n // Use the offset of the top of the scroll area from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaOffset = scrollArea.getBoundingClientRect().top + window.pageYOffset;\n // Use the offset of the top of the component from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaHeight = ReactDOM.findDOMNode(this).getBoundingClientRect().height;\n\n var top = incomingCallBox.parentElement.getBoundingClientRect().top + window.pageYOffset;\n // Make sure we don't go too far up, if the headers aren't sticky\n top = top < scrollAreaOffset ? scrollAreaOffset : top;\n // make sure we don't go too far down, if the headers aren't sticky\n var bottomMargin = scrollAreaOffset + (scrollAreaHeight - 45);\n top = top > bottomMargin ? bottomMargin : top;\n\n incomingCallBox.style.top = top + \"px\";\n incomingCallBox.style.left = scrollArea.offsetLeft + scrollArea.offsetWidth + 12 + \"px\";\n }\n },\n\n // Doing the sticky headers as raw DOM, for speed, as it gets very stuttery if done\n // properly through React\n _initAndPositionStickyHeaders: function _initAndPositionStickyHeaders(initialise, scrollToPosition) {\n var scrollArea = this._getScrollNode();\n if (!scrollArea) return;\n // Use the offset of the top of the scroll area from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaOffset = scrollArea.getBoundingClientRect().top + window.pageYOffset;\n // Use the offset of the top of the componet from the window\n // as this is used to calculate the CSS fixed top position for the stickies\n var scrollAreaHeight = ReactDOM.findDOMNode(this).getBoundingClientRect().height;\n\n if (initialise) {\n // Get a collection of sticky header containers references\n this.stickies = document.getElementsByClassName(\"mx_RoomSubList_labelContainer\");\n\n if (!this.stickies.length) return;\n\n // Make sure there is sufficient space to do sticky headers: 120px plus all the sticky headers\n this.scrollAreaSufficient = 120 + this.stickies[0].getBoundingClientRect().height * this.stickies.length < scrollAreaHeight;\n\n // Initialise the sticky headers\n if ((0, _typeof3.default)(this.stickies) === \"object\" && this.stickies.length > 0) {\n // Initialise the sticky headers\n Array.prototype.forEach.call(this.stickies, function (sticky, i) {\n // Save the positions of all the stickies within scroll area.\n // These positions are relative to the LHS Panel top\n sticky.dataset.originalPosition = sticky.offsetTop - scrollArea.offsetTop;\n\n // Save and set the sticky heights\n var originalHeight = sticky.getBoundingClientRect().height;\n sticky.dataset.originalHeight = originalHeight;\n sticky.style.height = originalHeight;\n\n return sticky;\n });\n }\n }\n\n if (!this.stickies) return;\n\n var self = this;\n var scrollStuckOffset = 0;\n // Scroll to the passed in position, i.e. a header was clicked and in a scroll to state\n // rather than a collapsable one (see RoomSubList.isCollapsableOnClick method for details)\n if (scrollToPosition !== undefined) {\n scrollArea.scrollTop = scrollToPosition;\n }\n // Stick headers to top and bottom, or free them\n Array.prototype.forEach.call(this.stickies, function (sticky, i, stickyWrappers) {\n var stickyPosition = sticky.dataset.originalPosition;\n var stickyHeight = sticky.dataset.originalHeight;\n var stickyHeader = sticky.childNodes[0];\n var topStuckHeight = stickyHeight * i;\n var bottomStuckHeight = stickyHeight * (stickyWrappers.length - i);\n\n if (self.scrollAreaSufficient && stickyPosition < scrollArea.scrollTop + topStuckHeight) {\n // Top stickies\n sticky.dataset.stuck = \"top\";\n stickyHeader.classList.add(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = scrollAreaOffset + topStuckHeight + \"px\";\n // If stuck at top adjust the scroll back down to take account of all the stuck headers\n if (scrollToPosition !== undefined && stickyPosition === scrollToPosition) {\n scrollStuckOffset = topStuckHeight;\n }\n } else if (self.scrollAreaSufficient && stickyPosition > scrollArea.scrollTop + scrollAreaHeight - bottomStuckHeight) {\n /// Bottom stickies\n sticky.dataset.stuck = \"bottom\";\n stickyHeader.classList.add(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = scrollAreaOffset + scrollAreaHeight - bottomStuckHeight + \"px\";\n } else {\n // Not sticky\n sticky.dataset.stuck = \"none\";\n stickyHeader.classList.remove(\"mx_RoomSubList_fixed\");\n stickyHeader.style.top = null;\n }\n });\n // Adjust the scroll to take account of top stuck headers\n if (scrollToPosition !== undefined) {\n scrollArea.scrollTop -= scrollStuckOffset;\n }\n },\n\n _updateStickyHeaders: function _updateStickyHeaders(initialise, scrollToPosition) {\n var self = this;\n\n if (initialise) {\n // Useing setTimeout to ensure that the code is run after the painting\n // of the newly rendered object as using requestAnimationFrame caused\n // artefacts to appear on screen briefly\n window.setTimeout(function () {\n self._initAndPositionStickyHeaders(initialise, scrollToPosition);\n });\n } else {\n this._initAndPositionStickyHeaders(initialise, scrollToPosition);\n }\n },\n\n onShowMoreRooms: function onShowMoreRooms() {\n // kick gemini in the balls to get it to wake up\n // XXX: uuuuuuugh.\n if (!this._gemScroll) return;\n this._gemScroll.forceUpdate();\n },\n\n _getEmptyContent: function _getEmptyContent(section) {\n if (this.state.selectedTags.length > 0) {\n return null;\n }\n\n var RoomDropTarget = sdk.getComponent('rooms.RoomDropTarget');\n\n if (this.props.collapsed) {\n return React.createElement(RoomDropTarget, { label: \"\" });\n }\n\n var StartChatButton = sdk.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = sdk.getComponent('elements.CreateRoomButton');\n\n var tip = null;\n\n switch (section) {\n case 'im.vector.fake.direct':\n tip = React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)(\"Press <StartChatButton> to start a chat with someone\", {}, { 'StartChatButton': React.createElement(StartChatButton, { size: \"16\", callout: true }) })\n );\n break;\n case 'im.vector.fake.recent':\n tip = React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)(\"You're not in any rooms yet! Press <CreateRoomButton> to make a room or\" + \" <RoomDirectoryButton> to browse the directory\", {}, {\n 'CreateRoomButton': React.createElement(CreateRoomButton, { size: \"16\", callout: true }),\n 'RoomDirectoryButton': React.createElement(RoomDirectoryButton, { size: \"16\", callout: true })\n })\n );\n break;\n }\n\n if (tip) {\n return React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip_container\" },\n tip\n );\n }\n\n // We don't want to display drop targets if there are no room tiles to drag'n'drop\n if (this.state.totalRoomCount === 0) {\n return null;\n }\n\n var labelText = phraseForSection(section);\n\n return React.createElement(RoomDropTarget, { label: labelText });\n },\n\n _getHeaderItems: function _getHeaderItems(section) {\n var StartChatButton = sdk.getComponent('elements.StartChatButton');\n var RoomDirectoryButton = sdk.getComponent('elements.RoomDirectoryButton');\n var CreateRoomButton = sdk.getComponent('elements.CreateRoomButton');\n switch (section) {\n case 'im.vector.fake.direct':\n return React.createElement(\n \"span\",\n { className: \"mx_RoomList_headerButtons\" },\n React.createElement(StartChatButton, { size: \"16\" })\n );\n case 'im.vector.fake.recent':\n return React.createElement(\n \"span\",\n { className: \"mx_RoomList_headerButtons\" },\n React.createElement(RoomDirectoryButton, { size: \"16\" }),\n React.createElement(CreateRoomButton, { size: \"16\" })\n );\n }\n },\n\n _makeGroupInviteTiles: function _makeGroupInviteTiles(filter) {\n var ret = [];\n var lcFilter = filter && filter.toLowerCase();\n\n var GroupInviteTile = sdk.getComponent('groups.GroupInviteTile');\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)(MatrixClientPeg.get().getGroups()), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var group = _step2.value;\n var groupId = group.groupId,\n name = group.name,\n myMembership = group.myMembership;\n // filter to only groups in invite state and group_id starts with filter or group name includes it\n\n if (myMembership !== 'invite') continue;\n if (lcFilter && !groupId.toLowerCase().startsWith(lcFilter) && !(name && name.toLowerCase().includes(lcFilter))) continue;\n ret.push(React.createElement(GroupInviteTile, { key: groupId, group: group, collapsed: this.props.collapsed }));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return ret;\n },\n _collectGemini: function _collectGemini(gemScroll) {\n this._gemScroll = gemScroll;\n },\n\n\n render: function render() {\n var _this5 = this;\n\n var RoomSubList = sdk.getComponent('structures.RoomSubList');\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n\n // XXX: we can't detect device-level (localStorage) settings onChange as the SettingsStore does not notify\n // so checking on every render is the sanest thing at this time.\n var showEmpty = _SettingsStore2.default.getValue('RoomSubList.showEmpty');\n\n var self = this;\n return React.createElement(\n GeminiScrollbarWrapper,\n { className: \"mx_RoomList_scrollbar\",\n autoshow: true, onScroll: self._whenScrolling, onResize: self._whenScrolling, wrappedRef: this._collectGemini },\n React.createElement(\n \"div\",\n { className: \"mx_RoomList\" },\n React.createElement(RoomSubList, { list: [],\n extraTiles: this._makeGroupInviteTiles(self.props.searchFilter),\n label: (0, _languageHandler._t)('Community Invites'),\n editable: false,\n order: \"recent\",\n isInvite: true,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty\n }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.invite'],\n label: (0, _languageHandler._t)('Invites'),\n editable: false,\n order: \"recent\",\n isInvite: true,\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty\n }),\n React.createElement(RoomSubList, { list: self.state.lists['m.favourite'],\n label: (0, _languageHandler._t)('Favourites'),\n tagName: \"m.favourite\",\n emptyContent: this._getEmptyContent('m.favourite'),\n editable: true,\n order: \"manual\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.direct'],\n label: (0, _languageHandler._t)('People'),\n tagName: \"im.vector.fake.direct\",\n emptyContent: this._getEmptyContent('im.vector.fake.direct'),\n headerItems: this._getHeaderItems('im.vector.fake.direct'),\n editable: true,\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n alwaysShowHeader: true,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.recent'],\n label: (0, _languageHandler._t)('Rooms'),\n editable: true,\n emptyContent: this._getEmptyContent('im.vector.fake.recent'),\n headerItems: this._getHeaderItems('im.vector.fake.recent'),\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n (0, _keys2.default)(self.state.lists).map(function (tagName) {\n if (!tagName.match(STANDARD_TAGS_REGEX)) {\n return React.createElement(RoomSubList, { list: self.state.lists[tagName],\n key: tagName,\n label: labelForTagName(tagName),\n tagName: tagName,\n emptyContent: _this5._getEmptyContent(tagName),\n editable: true,\n order: \"manual\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty });\n }\n }),\n React.createElement(RoomSubList, { list: self.state.lists['m.lowpriority'],\n label: (0, _languageHandler._t)('Low priority'),\n tagName: \"m.lowpriority\",\n emptyContent: this._getEmptyContent('m.lowpriority'),\n editable: true,\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['im.vector.fake.archived'],\n emptyContent: self.props.collapsed ? null : React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip_container\" },\n React.createElement(\n \"div\",\n { className: \"mx_RoomList_emptySubListTip\" },\n (0, _languageHandler._t)('You have no historical rooms')\n )\n ),\n label: (0, _languageHandler._t)('Historical'),\n editable: false,\n order: \"recent\",\n collapsed: self.props.collapsed,\n alwaysShowHeader: true,\n startAsHidden: true,\n showSpinner: self.state.isLoadingLeftRooms,\n onHeaderClick: self.onArchivedHeaderClick,\n incomingCall: self.state.incomingCall,\n searchFilter: self.props.searchFilter,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: showEmpty }),\n React.createElement(RoomSubList, { list: self.state.lists['m.server_notice'],\n label: (0, _languageHandler._t)('System Alerts'),\n tagName: \"m.lowpriority\",\n editable: false,\n order: \"recent\",\n incomingCall: self.state.incomingCall,\n collapsed: self.props.collapsed,\n searchFilter: self.props.searchFilter,\n onHeaderClick: self.onSubListHeaderClick,\n onShowMoreRooms: self.onShowMoreRooms,\n showEmpty: false })\n )\n );\n }\n});\n//# sourceMappingURL=RoomList.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomNameEditor',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n name: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var room = this.props.room;\n var name = room.currentState.getStateEvents('m.room.name', '');\n var myId = MatrixClientPeg.get().credentials.userId;\n var defaultName = room.getDefaultRoomName(myId);\n\n this.setState({\n name: name ? name.getContent().name : ''\n });\n\n this._placeholderName = (0, _languageHandler._t)(\"Unnamed Room\");\n if (defaultName && defaultName !== 'Empty room') {\n // default name from JS SDK, needs no translation as we don't ever show it.\n this._placeholderName += \" (\" + defaultName + \")\";\n }\n },\n\n getRoomName: function getRoomName() {\n return this.state.name;\n },\n\n _onValueChanged: function _onValueChanged(value, shouldSubmit) {\n this.setState({\n name: value\n });\n },\n\n render: function render() {\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomHeader_name' },\n React.createElement(EditableText, { ref: 'editor',\n className: 'mx_RoomHeader_nametext mx_RoomHeader_editable',\n placeholderClassName: 'mx_RoomHeader_placeholder',\n placeholder: this._placeholderName,\n blurToCancel: false,\n initialValue: this.state.name,\n onValueChanged: this._onValueChanged,\n dir: 'auto' })\n );\n }\n});\n//# sourceMappingURL=RoomNameEditor.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\n\nmodule.exports = React.createClass({\n displayName: 'RoomPreviewBar',\n\n propTypes: {\n onJoinClick: _propTypes2.default.func,\n onRejectClick: _propTypes2.default.func,\n onForgetClick: _propTypes2.default.func,\n\n // if inviterName is specified, the preview bar will shown an invite to the room.\n // You should also specify onRejectClick if specifiying inviterName\n inviterName: _propTypes2.default.string,\n\n // If invited by 3rd party invite, the email address the invite was sent to\n invitedEmail: _propTypes2.default.string,\n\n // A standard client/server API error object. If supplied, indicates that the\n // caller was unable to fetch details about the room for the given reason.\n error: _propTypes2.default.object,\n\n canPreview: _propTypes2.default.bool,\n room: _propTypes2.default.object,\n\n // When a spinner is present, a spinnerState can be specified to indicate the\n // purpose of the spinner.\n spinner: _propTypes2.default.bool,\n spinnerState: _propTypes2.default.oneOf([\"joining\"]),\n\n // The alias that was used to access this room, if appropriate\n // If given, this will be how the room is referred to (eg.\n // in error messages).\n roomAlias: _propTypes2.default.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onJoinClick: function onJoinClick() {},\n canPreview: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n // If this is an invite and we've been told what email\n // address was invited, fetch the user's list of 3pids\n // so we can check them against the one that was invited\n if (this.props.inviterName && this.props.invitedEmail) {\n this.setState({ busy: true });\n MatrixClientPeg.get().lookupThreePid('email', this.props.invitedEmail).finally(function () {\n _this.setState({ busy: false });\n }).done(function (result) {\n _this.setState({ invitedEmailMxid: result.mxid });\n }, function (err) {\n _this.setState({ threePidFetchError: err });\n });\n }\n },\n\n _roomNameElement: function _roomNameElement() {\n return this.props.room ? this.props.room.name : this.props.room_alias || \"\";\n },\n\n render: function render() {\n var _this2 = this;\n\n var joinBlock = void 0,\n previewBlock = void 0;\n\n if (this.props.spinner || this.state.busy) {\n var Spinner = sdk.getComponent(\"elements.Spinner\");\n var spinnerIntro = \"\";\n if (this.props.spinnerState === \"joining\") {\n spinnerIntro = (0, _languageHandler._t)(\"Joining room...\");\n }\n return React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar' },\n React.createElement(\n 'p',\n { className: 'mx_RoomPreviewBar_spinnerIntro' },\n spinnerIntro\n ),\n React.createElement(Spinner, null)\n );\n }\n\n var myMember = this.props.room ? this.props.room.getMember(MatrixClientPeg.get().getUserId()) : null;\n var kicked = myMember && myMember.isKicked();\n var banned = myMember && myMember && myMember.membership == 'ban';\n\n if (this.props.inviterName) {\n var emailMatchBlock = void 0;\n if (this.props.invitedEmail) {\n if (this.state.threePidFetchError) {\n emailMatchBlock = React.createElement(\n 'div',\n { className: 'error' },\n (0, _languageHandler._t)(\"Unable to ascertain that the address this invite was sent to matches one associated with your account.\")\n );\n } else if (this.state.invitedEmailMxid != MatrixClientPeg.get().credentials.userId) {\n emailMatchBlock = React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warning' },\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warningIcon' },\n React.createElement('img', { src: 'img/warning.svg', width: '24', height: '23', title: '/!\\\\\\\\', alt: '/!\\\\\\\\' })\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_warningText' },\n (0, _languageHandler._t)(\"This invitation was sent to an email address which is not associated with this account:\"),\n React.createElement(\n 'b',\n null,\n React.createElement(\n 'span',\n { className: 'email' },\n this.props.invitedEmail\n )\n ),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"You may wish to login with a different account, or add this email to this account.\")\n )\n );\n }\n }\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_invite_text' },\n (0, _languageHandler._t)('You have been invited to join this room by %(inviterName)s', { inviterName: this.props.inviterName })\n ),\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n (0, _languageHandler._t)('Would you like to <acceptText>accept</acceptText> or <declineText>decline</declineText> this invitation?', {}, {\n 'acceptText': function acceptText(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onJoinClick },\n sub\n );\n },\n 'declineText': function declineText(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onRejectClick },\n sub\n );\n }\n })\n ),\n emailMatchBlock\n );\n } else if (kicked || banned) {\n var roomName = this._roomNameElement();\n var kickerMember = this.props.room.currentState.getMember(myMember.events.member.getSender());\n var kickerName = kickerMember ? kickerMember.name : myMember.events.member.getSender();\n var reason = void 0;\n if (myMember.events.member.getContent().reason) {\n reason = React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)(\"Reason: %(reasonText)s\", { reasonText: myMember.events.member.getContent().reason })\n );\n }\n var rejoinBlock = void 0;\n if (!banned) {\n rejoinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'a',\n { onClick: this.props.onJoinClick },\n React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Rejoin\")\n )\n )\n );\n }\n\n var actionText = void 0;\n if (kicked) {\n if (roomName) {\n actionText = (0, _languageHandler._t)(\"You have been kicked from %(roomName)s by %(userName)s.\", { roomName: roomName, userName: kickerName });\n } else {\n actionText = (0, _languageHandler._t)(\"You have been kicked from this room by %(userName)s.\", { userName: kickerName });\n }\n } else if (banned) {\n if (roomName) {\n actionText = (0, _languageHandler._t)(\"You have been banned from %(roomName)s by %(userName)s.\", { roomName: roomName, userName: kickerName });\n } else {\n actionText = (0, _languageHandler._t)(\"You have been banned from this room by %(userName)s.\", { userName: kickerName });\n }\n } // no other options possible due to the kicked || banned check above.\n\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n actionText,\n React.createElement('br', null),\n reason,\n rejoinBlock,\n React.createElement(\n 'a',\n { onClick: this.props.onForgetClick },\n React.createElement(\n 'b',\n null,\n (0, _languageHandler._t)(\"Forget room\")\n )\n )\n )\n );\n } else if (this.props.error) {\n var name = this.props.roomAlias || (0, _languageHandler._t)(\"This room\");\n var error = void 0;\n if (this.props.error.errcode == 'M_NOT_FOUND') {\n error = (0, _languageHandler._t)(\"%(roomName)s does not exist.\", { roomName: name });\n } else {\n error = (0, _languageHandler._t)(\"%(roomName)s is not accessible at this time.\", { roomName: name });\n }\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n error\n )\n );\n } else {\n var _name = this._roomNameElement();\n joinBlock = React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_join_text' },\n _name ? (0, _languageHandler._t)('You are trying to access %(roomName)s.', { roomName: _name }) : (0, _languageHandler._t)('You are trying to access a room.'),\n React.createElement('br', null),\n (0, _languageHandler._t)(\"<a>Click here</a> to join the discussion!\", {}, { 'a': function a(sub) {\n return React.createElement(\n 'a',\n { onClick: _this2.props.onJoinClick },\n React.createElement(\n 'b',\n null,\n sub\n )\n );\n } })\n )\n );\n }\n\n if (this.props.canPreview) {\n previewBlock = React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_preview_text' },\n (0, _languageHandler._t)('This is a preview of this room. Room interactions have been disabled'),\n '.'\n );\n }\n\n return React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar' },\n React.createElement(\n 'div',\n { className: 'mx_RoomPreviewBar_wrapper' },\n joinBlock,\n previewBlock\n )\n );\n }\n});\n//# sourceMappingURL=RoomPreviewBar.js.map","'use strict';\n\nvar _getIterator2 = require('babel-runtime/core-js/get-iterator');\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _assign = require('babel-runtime/core-js/object/assign');\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _ObjectUtils = require('../../../ObjectUtils');\n\nvar _ObjectUtils2 = _interopRequireDefault(_ObjectUtils);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// parse a string as an integer; if the input is undefined, or cannot be parsed\n// as an integer, return a default.\nfunction parseIntWithDefault(val, def) {\n var res = parseInt(val);\n return isNaN(res) ? def : res;\n} /*\n Copyright 2015, 2016 OpenMarket Ltd\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar plEventsToLabels = {\n // These will be translated for us later.\n \"m.room.avatar\": (0, _languageHandler._td)(\"To change the room's avatar, you must be a\"),\n \"m.room.name\": (0, _languageHandler._td)(\"To change the room's name, you must be a\"),\n \"m.room.canonical_alias\": (0, _languageHandler._td)(\"To change the room's main address, you must be a\"),\n \"m.room.history_visibility\": (0, _languageHandler._td)(\"To change the room's history visibility, you must be a\"),\n \"m.room.power_levels\": (0, _languageHandler._td)(\"To change the permissions in the room, you must be a\"),\n \"m.room.topic\": (0, _languageHandler._td)(\"To change the topic, you must be a\"),\n\n \"im.vector.modular.widgets\": (0, _languageHandler._td)(\"To modify widgets in the room, you must be a\")\n};\n\nvar plEventsToShow = {\n // If an event is listed here, it will be shown in the PL settings. Defaults will be calculated.\n \"m.room.avatar\": { isState: true },\n \"m.room.name\": { isState: true },\n \"m.room.canonical_alias\": { isState: true },\n \"m.room.history_visibility\": { isState: true },\n \"m.room.power_levels\": { isState: true },\n \"m.room.topic\": { isState: true },\n\n \"im.vector.modular.widgets\": { isState: true }\n};\n\nvar BannedUser = _react2.default.createClass({\n displayName: 'BannedUser',\n\n propTypes: {\n canUnban: _propTypes2.default.bool,\n member: _propTypes2.default.object.isRequired, // js-sdk RoomMember\n by: _propTypes2.default.string.isRequired,\n reason: _propTypes2.default.string\n },\n\n _onUnbanClick: function _onUnbanClick() {\n var _this = this;\n\n var ConfirmUserActionDialog = _index2.default.getComponent(\"dialogs.ConfirmUserActionDialog\");\n _Modal2.default.createTrackedDialog('Confirm User Action Dialog', 'onUnbanClick', ConfirmUserActionDialog, {\n member: this.props.member,\n action: (0, _languageHandler._t)('Unban'),\n title: (0, _languageHandler._t)('Unban this user?'),\n danger: false,\n onFinished: function onFinished(proceed) {\n if (!proceed) return;\n\n _MatrixClientPeg2.default.get().unban(_this.props.member.roomId, _this.props.member.userId).catch(function (err) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to unban: \" + err);\n _Modal2.default.createTrackedDialog('Failed to unban', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)('Failed to unban')\n });\n }).done();\n }\n });\n },\n\n render: function render() {\n var unbanButton = void 0;\n\n if (this.props.canUnban) {\n unbanButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_unbanButton', onClick: this._onUnbanClick },\n (0, _languageHandler._t)('Unban')\n );\n }\n\n return _react2.default.createElement(\n 'li',\n null,\n unbanButton,\n _react2.default.createElement(\n 'span',\n { title: (0, _languageHandler._t)(\"Banned by %(displayName)s\", { displayName: this.props.by }) },\n _react2.default.createElement(\n 'strong',\n null,\n this.props.member.name\n ),\n ' ',\n this.props.member.userId,\n this.props.reason ? \" \" + (0, _languageHandler._t)('Reason') + \": \" + this.props.reason : \"\"\n )\n );\n }\n});\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomSettings',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n var tags = {};\n (0, _keys2.default)(this.props.room.tags).forEach(function (tagName) {\n tags[tagName] = ['yep'];\n });\n\n return {\n name: this._yankValueFromEvent(\"m.room.name\", \"name\"),\n topic: this._yankValueFromEvent(\"m.room.topic\", \"topic\"),\n join_rule: this._yankValueFromEvent(\"m.room.join_rules\", \"join_rule\"),\n history_visibility: this._yankValueFromEvent(\"m.room.history_visibility\", \"history_visibility\"),\n guest_access: this._yankValueFromEvent(\"m.room.guest_access\", \"guest_access\"),\n powerLevels: this._yankContentFromEvent(\"m.room.power_levels\", {}),\n powerLevelsChanged: false,\n tags_changed: false,\n tags: tags,\n // isRoomPublished is loaded async in componentWillMount so when the component\n // inits, the saved value will always be undefined, however getInitialState()\n // is also called from the saving code so we must return the correct value here\n // if we have it (although this could race if the user saves before we load whether\n // the room is published or not).\n // Default to false if it's undefined, otherwise react complains about changing\n // components from uncontrolled to controlled\n isRoomPublished: this._originalIsRoomPublished || false\n };\n },\n\n componentWillMount: function componentWillMount() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().on(\"RoomMember.membership\", this._onRoomMemberMembership);\n\n _MatrixClientPeg2.default.get().getRoomDirectoryVisibility(this.props.room.roomId).done(function () {\n var result = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _this2.setState({ isRoomPublished: result.visibility === \"public\" });\n _this2._originalIsRoomPublished = result.visibility === \"public\";\n }, function (err) {\n console.error(\"Failed to get room visibility: \" + err);\n });\n\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: true,\n middleDisabled: true\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n var cli = _MatrixClientPeg2.default.get();\n if (cli) {\n cli.removeListener(\"RoomMember.membership\", this._onRoomMemberMembership);\n }\n\n _dispatcher2.default.dispatch({\n action: 'panel_disable',\n sideDisabled: false,\n middleDisabled: false\n });\n },\n\n setName: function setName(name) {\n this.setState({\n name: name\n });\n },\n\n setTopic: function setTopic(topic) {\n this.setState({\n topic: topic\n });\n },\n\n /**\n * Returns a promise which resolves once all of the save operations have completed or failed.\n *\n * The result is a list of promise state snapshots, each with the form\n * `{ state: \"fulfilled\", value: v }` or `{ state: \"rejected\", reason: r }`.\n */\n save: function save() {\n var _this3 = this;\n\n var stateWasSetDefer = _bluebird2.default.defer();\n // the caller may have JUST called setState on stuff, so we need to re-render before saving\n // else we won't use the latest values of things.\n // We can be a bit cheeky here and set a loading flag, and listen for the callback on that\n // to know when things have been set.\n this.setState({ _loading: true }, function () {\n stateWasSetDefer.resolve();\n _this3.setState({ _loading: false });\n });\n\n function mapPromiseToSnapshot(p) {\n return p.then(function (r) {\n return { state: \"fulfilled\", value: r };\n }, function (e) {\n return { state: \"rejected\", reason: e };\n });\n }\n\n return stateWasSetDefer.promise.then(function () {\n return _bluebird2.default.all(_this3._calcSavePromises().map(mapPromiseToSnapshot));\n });\n },\n\n _calcSavePromises: function _calcSavePromises() {\n var roomId = this.props.room.roomId;\n var promises = this.saveAliases(); // returns Promise[]\n var originalState = this.getInitialState();\n\n // diff between original state and this.state to work out what has been changed\n console.log(\"Original: %s\", (0, _stringify2.default)(originalState));\n console.log(\"New: %s\", (0, _stringify2.default)(this.state));\n\n // name and topic\n if (this._hasDiff(this.state.name, originalState.name)) {\n promises.push(_MatrixClientPeg2.default.get().setRoomName(roomId, this.state.name));\n }\n if (this._hasDiff(this.state.topic, originalState.topic)) {\n promises.push(_MatrixClientPeg2.default.get().setRoomTopic(roomId, this.state.topic));\n }\n\n if (this.state.history_visibility !== originalState.history_visibility) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.history_visibility\", { history_visibility: this.state.history_visibility }, \"\"));\n }\n\n if (this.state.isRoomPublished !== originalState.isRoomPublished) {\n promises.push(_MatrixClientPeg2.default.get().setRoomDirectoryVisibility(roomId, this.state.isRoomPublished ? \"public\" : \"private\"));\n }\n\n if (this.state.join_rule !== originalState.join_rule) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.join_rules\", { join_rule: this.state.join_rule }, \"\"));\n }\n\n if (this.state.guest_access !== originalState.guest_access) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.guest_access\", { guest_access: this.state.guest_access }, \"\"));\n }\n\n // power levels\n var powerLevels = this.state.powerLevels;\n if (this.state.powerLevelsChanged) {\n promises.push(_MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.power_levels\", powerLevels, \"\"));\n }\n\n // tags\n if (this.state.tags_changed) {\n var tagDiffs = _ObjectUtils2.default.getKeyValueArrayDiffs(originalState.tags, this.state.tags);\n // [ {place: add, key: \"m.favourite\", val: [\"yep\"]} ]\n tagDiffs.forEach(function (diff) {\n switch (diff.place) {\n case \"add\":\n promises.push(_MatrixClientPeg2.default.get().setRoomTag(roomId, diff.key, {}));\n break;\n case \"del\":\n promises.push(_MatrixClientPeg2.default.get().deleteRoomTag(roomId, diff.key));\n break;\n default:\n console.error(\"Unknown tag operation: %s\", diff.place);\n break;\n }\n });\n }\n\n // color scheme\n var p = void 0;\n p = this.saveColor();\n if (!p.isFulfilled()) {\n promises.push(p);\n }\n\n // url preview settings\n var ps = this.saveUrlPreviewSettings();\n if (ps.length > 0) {\n ps.map(function (p) {\n return promises.push(p);\n });\n }\n\n // related groups\n promises.push(this.saveRelatedGroups());\n\n // encryption\n p = this.saveEnableEncryption();\n if (!p.isFulfilled()) {\n promises.push(p);\n }\n\n this.saveBlacklistUnverifiedDevicesPerRoom();\n\n console.log(\"Performing %s operations: %s\", promises.length, (0, _stringify2.default)(promises));\n return promises;\n },\n\n saveAliases: function saveAliases() {\n if (!this.refs.alias_settings) {\n return [_bluebird2.default.resolve()];\n }\n return this.refs.alias_settings.saveSettings();\n },\n\n saveRelatedGroups: function saveRelatedGroups() {\n if (!this.refs.related_groups) {\n return _bluebird2.default.resolve();\n }\n return this.refs.related_groups.saveSettings();\n },\n\n saveColor: function saveColor() {\n if (!this.refs.color_settings) {\n return _bluebird2.default.resolve();\n }\n return this.refs.color_settings.saveSettings();\n },\n\n saveUrlPreviewSettings: function saveUrlPreviewSettings() {\n if (!this.refs.url_preview_settings) {\n return _bluebird2.default.resolve();\n }\n return this.refs.url_preview_settings.saveSettings();\n },\n\n saveEnableEncryption: function saveEnableEncryption() {\n if (!this.refs.encrypt) {\n return _bluebird2.default.resolve();\n }\n\n var encrypt = this.refs.encrypt.checked;\n if (!encrypt) {\n return _bluebird2.default.resolve();\n }\n\n var roomId = this.props.room.roomId;\n return _MatrixClientPeg2.default.get().sendStateEvent(roomId, \"m.room.encryption\", { algorithm: \"m.megolm.v1.aes-sha2\" });\n },\n\n saveBlacklistUnverifiedDevicesPerRoom: function saveBlacklistUnverifiedDevicesPerRoom() {\n var _this4 = this;\n\n if (!this.refs.blacklistUnverifiedDevices) return;\n this.refs.blacklistUnverifiedDevices.save().then(function () {\n var value = _SettingsStore2.default.getValueAt(_SettingsStore.SettingLevel.ROOM_DEVICE, \"blacklistUnverifiedDevices\", _this4.props.room.roomId,\n /*explicit=*/true);\n _this4.props.room.setBlacklistUnverifiedDevices(value);\n });\n },\n\n _hasDiff: function _hasDiff(strA, strB) {\n // treat undefined as an empty string because other components may blindly\n // call setName(\"\") when there has been no diff made to the name!\n strA = strA || \"\";\n strB = strB || \"\";\n return strA !== strB;\n },\n\n onPowerLevelsChanged: function onPowerLevelsChanged(value, powerLevelKey) {\n var powerLevels = (0, _assign2.default)({}, this.state.powerLevels);\n var eventsLevelPrefix = \"event_levels_\";\n\n value = parseInt(value);\n\n if (powerLevelKey.startsWith(eventsLevelPrefix)) {\n // deep copy \"events\" object, Object.assign itself won't deep copy\n powerLevels[\"events\"] = (0, _assign2.default)({}, this.state.powerLevels[\"events\"] || {});\n powerLevels[\"events\"][powerLevelKey.slice(eventsLevelPrefix.length)] = value;\n } else {\n var keyPath = powerLevelKey.split('.');\n var parentObj = void 0;\n var currentObj = powerLevels;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(keyPath), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (!currentObj[key]) {\n currentObj[key] = {};\n }\n parentObj = currentObj;\n currentObj = currentObj[key];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n parentObj[keyPath[keyPath.length - 1]] = value;\n }\n this.setState({\n powerLevels: powerLevels,\n powerLevelsChanged: true\n });\n },\n\n _yankContentFromEvent: function _yankContentFromEvent(stateEventType, defaultValue) {\n // E.g.(\"m.room.name\") would yank the content of \"m.room.name\"\n var event = this.props.room.currentState.getStateEvents(stateEventType, '');\n if (!event) {\n return defaultValue;\n }\n return event.getContent() || defaultValue;\n },\n\n _yankValueFromEvent: function _yankValueFromEvent(stateEventType, keyName, defaultValue) {\n // E.g.(\"m.room.name\",\"name\") would yank the \"name\" content key from \"m.room.name\"\n var event = this.props.room.currentState.getStateEvents(stateEventType, '');\n if (!event) {\n return defaultValue;\n }\n var content = event.getContent();\n return keyName in content ? content[keyName] : defaultValue;\n },\n\n _onHistoryRadioToggle: function _onHistoryRadioToggle(ev) {\n var self = this;\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n\n // cancel the click unless the user confirms it\n ev.preventDefault();\n var value = ev.target.value;\n\n _Modal2.default.createTrackedDialog('Privacy warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Privacy warning'),\n description: _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Changes to who can read history will only apply to future messages in this room'),\n '.',\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('The visibility of existing history will be unchanged'),\n '.'\n ),\n button: (0, _languageHandler._t)('Continue'),\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n self.setState({\n history_visibility: value\n });\n }\n }\n });\n },\n\n _onRoomAccessRadioToggle: function _onRoomAccessRadioToggle(ev) {\n // join_rule\n // INVITE | PUBLIC\n // ----------------------+----------------\n // guest CAN_JOIN | inv_only | pub_with_guest\n // access ----------------------+----------------\n // FORBIDDEN | inv_only | pub_no_guest\n // ----------------------+----------------\n\n switch (ev.target.value) {\n case \"invite_only\":\n this.setState({\n join_rule: \"invite\",\n // we always set guests can_join here as it makes no sense to have\n // an invite-only room that guests can't join. If you explicitly\n // invite them, you clearly want them to join, whether they're a\n // guest or not. In practice, guest_access should probably have\n // been implemented as part of the join_rules enum.\n guest_access: \"can_join\"\n });\n break;\n case \"public_no_guests\":\n this.setState({\n join_rule: \"public\",\n guest_access: \"forbidden\"\n });\n break;\n case \"public_with_guests\":\n this.setState({\n join_rule: \"public\",\n guest_access: \"can_join\"\n });\n break;\n }\n },\n\n _onToggle: function _onToggle(keyName, checkedValue, uncheckedValue, ev) {\n console.log(\"Checkbox toggle: %s %s\", keyName, ev.target.checked);\n var state = {};\n state[keyName] = ev.target.checked ? checkedValue : uncheckedValue;\n this.setState(state);\n },\n\n _onTagChange: function _onTagChange(tagName, event) {\n if (event.target.checked) {\n if (tagName === 'm.favourite') {\n delete this.state.tags['m.lowpriority'];\n } else if (tagName === 'm.lowpriority') {\n delete this.state.tags['m.favourite'];\n }\n\n this.state.tags[tagName] = this.state.tags[tagName] || [\"yep\"];\n } else {\n delete this.state.tags[tagName];\n }\n\n this.setState({\n tags: this.state.tags,\n tags_changed: true\n });\n },\n\n mayChangeRoomAccess: function mayChangeRoomAccess() {\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n return roomState.mayClientSendStateEvent(\"m.room.join_rules\", cli) && roomState.mayClientSendStateEvent(\"m.room.guest_access\", cli);\n },\n\n onLeaveClick: function onLeaveClick() {\n _dispatcher2.default.dispatch({\n action: 'leave_room',\n room_id: this.props.room.roomId\n });\n },\n onForgetClick: function onForgetClick() {\n // FIXME: duplicated with RoomTagContextualMenu (and dead code in RoomView)\n _MatrixClientPeg2.default.get().forget(this.props.room.roomId).done(function () {\n _dispatcher2.default.dispatch({ action: 'view_next_room' });\n }, function (err) {\n var errCode = err.errcode || (0, _languageHandler._t)('unknown error code');\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Failed to forget room', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error'),\n description: (0, _languageHandler._t)(\"Failed to forget room %(errCode)s\", { errCode: errCode })\n });\n });\n },\n onEnableEncryptionClick: function onEnableEncryptionClick() {\n var _this5 = this;\n\n if (!this.refs.encrypt.checked) return;\n\n var QuestionDialog = _index2.default.getComponent(\"dialogs.QuestionDialog\");\n _Modal2.default.createTrackedDialog('E2E Enable Warning', '', QuestionDialog, {\n title: (0, _languageHandler._t)('Warning!'),\n description: _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('End-to-end encryption is in beta and may not be reliable'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('You should not yet trust it to secure data'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Devices will not yet be able to decrypt history from before they joined the room'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Once encryption is enabled for a room it cannot be turned off again (for now)'),\n '.'\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('Encrypted messages will not be visible on clients that do not yet implement encryption'),\n '.'\n )\n ),\n onFinished: function onFinished(confirm) {\n if (!confirm) {\n _this5.refs.encrypt.checked = false;\n }\n }\n });\n },\n\n\n _onRoomUpgradeClick: function _onRoomUpgradeClick() {\n var RoomUpgradeDialog = _index2.default.getComponent('dialogs.RoomUpgradeDialog');\n _Modal2.default.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, { room: this.props.room });\n },\n\n _onRoomMemberMembership: function _onRoomMemberMembership() {\n // Update, since our banned user list may have changed\n this.forceUpdate();\n },\n\n _populateDefaultPlEvents: function _populateDefaultPlEvents(eventsSection, stateLevel, eventsLevel) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = (0, _getIterator3.default)((0, _keys2.default)(plEventsToShow)), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var desiredEvent = _step2.value;\n\n if (!(desiredEvent in eventsSection)) {\n eventsSection[desiredEvent] = plEventsToShow[desiredEvent].isState ? stateLevel : eventsLevel;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n },\n\n _renderEncryptionSection: function _renderEncryptionSection() {\n var SettingsFlag = _index2.default.getComponent(\"elements.SettingsFlag\");\n\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n var isEncrypted = cli.isRoomEncrypted(this.props.room.roomId);\n\n var settings = _react2.default.createElement(SettingsFlag, { name: 'blacklistUnverifiedDevices',\n level: _SettingsStore.SettingLevel.ROOM_DEVICE,\n roomId: this.props.room.roomId,\n manualSave: true,\n ref: 'blacklistUnverifiedDevices'\n });\n\n if (!isEncrypted && roomState.mayClientSendStateEvent(\"m.room.encryption\", cli)) {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', ref: 'encrypt', onClick: this.onEnableEncryptionClick }),\n _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon mx_filterFlipColor', src: 'img/e2e-unencrypted.svg', width: '12', height: '12' }),\n (0, _languageHandler._t)('Enable encryption'),\n ' ',\n (0, _languageHandler._t)('(warning: cannot be disabled again!)')\n ),\n settings\n );\n } else {\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'label',\n null,\n isEncrypted ? _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon', src: 'img/e2e-verified.svg', width: '10', height: '12' }) : _react2.default.createElement('img', { className: 'mx_RoomSettings_e2eIcon mx_filterFlipColor', src: 'img/e2e-unencrypted.svg', width: '12', height: '12' }),\n isEncrypted ? (0, _languageHandler._t)(\"Encryption is enabled in this room\") : (0, _languageHandler._t)(\"Encryption is not enabled in this room\"),\n '.'\n ),\n settings\n );\n }\n },\n\n render: function render() {\n var _this6 = this;\n\n // TODO: go through greying out things you don't have permission to change\n // (or turning them into informative stuff)\n\n var AliasSettings = _index2.default.getComponent(\"room_settings.AliasSettings\");\n var ColorSettings = _index2.default.getComponent(\"room_settings.ColorSettings\");\n var UrlPreviewSettings = _index2.default.getComponent(\"room_settings.UrlPreviewSettings\");\n var RelatedGroupSettings = _index2.default.getComponent(\"room_settings.RelatedGroupSettings\");\n var PowerSelector = _index2.default.getComponent('elements.PowerSelector');\n\n var cli = _MatrixClientPeg2.default.get();\n var roomState = this.props.room.currentState;\n var myUserId = cli.credentials.userId;\n\n var powerLevels = this.state.powerLevels;\n var eventsLevels = powerLevels.events || {};\n var userLevels = powerLevels.users || {};\n\n var powerLevelDescriptors = {\n users_default: {\n desc: (0, _languageHandler._t)('The default role for new room members is'),\n defaultValue: 0\n },\n events_default: {\n desc: (0, _languageHandler._t)('To send messages, you must be a'),\n defaultValue: 0\n },\n invite: {\n desc: (0, _languageHandler._t)('To invite users into the room, you must be a'),\n defaultValue: 50\n },\n state_default: {\n desc: (0, _languageHandler._t)('To configure the room, you must be a'),\n defaultValue: 50\n },\n kick: {\n desc: (0, _languageHandler._t)('To kick users, you must be a'),\n defaultValue: 50\n },\n ban: {\n desc: (0, _languageHandler._t)('To ban users, you must be a'),\n defaultValue: 50\n },\n redact: {\n desc: (0, _languageHandler._t)('To remove other users\\' messages, you must be a'),\n defaultValue: 50\n },\n \"notifications.room\": {\n desc: (0, _languageHandler._t)('To notify everyone in the room, you must be a'),\n defaultValue: 50\n }\n };\n\n var banLevel = parseIntWithDefault(powerLevels.ban, powerLevelDescriptors.ban.defaultValue);\n var defaultUserLevel = parseIntWithDefault(powerLevels.users_default, powerLevelDescriptors.users_default.defaultValue);\n\n this._populateDefaultPlEvents(eventsLevels, parseIntWithDefault(powerLevels.state_default, powerLevelDescriptors.state_default.defaultValue), parseIntWithDefault(powerLevels.events_default, powerLevelDescriptors.events_default.defaultValue));\n\n var currentUserLevel = userLevels[myUserId];\n if (currentUserLevel === undefined) {\n currentUserLevel = defaultUserLevel;\n }\n\n var canChangeLevels = roomState.mayClientSendStateEvent(\"m.room.power_levels\", cli);\n\n var canSetTag = !cli.isGuest();\n\n var self = this;\n\n var relatedGroupsSection = _react2.default.createElement(RelatedGroupSettings, { ref: 'related_groups',\n roomId: this.props.room.roomId,\n canSetRelatedGroups: roomState.mayClientSendStateEvent(\"m.room.related_groups\", cli),\n relatedGroupsEvent: this.props.room.currentState.getStateEvents('m.room.related_groups', '')\n });\n\n var privilegedUsersSection = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('No users have specific privileges in this room'),\n '.'\n ); // default\n var mutedUsersSection = void 0;\n if ((0, _keys2.default)(userLevels).length) {\n var privilegedUsers = [];\n var mutedUsers = [];\n\n (0, _keys2.default)(userLevels).forEach(function (user) {\n if (userLevels[user] > defaultUserLevel) {\n // privileged\n privilegedUsers.push(_react2.default.createElement(\n 'li',\n { className: 'mx_RoomSettings_userLevel', key: user },\n (0, _languageHandler._t)(\"%(user)s is a %(userRole)s\", {\n user: user,\n userRole: _react2.default.createElement(PowerSelector, { value: userLevels[user], disabled: true })\n })\n ));\n } else if (userLevels[user] < defaultUserLevel) {\n // muted\n mutedUsers.push(_react2.default.createElement(\n 'li',\n { className: 'mx_RoomSettings_userLevel', key: user },\n (0, _languageHandler._t)(\"%(user)s is a %(userRole)s\", {\n user: user,\n userRole: _react2.default.createElement(PowerSelector, { value: userLevels[user], disabled: true })\n })\n ));\n }\n });\n\n // comparator for sorting PL users lexicographically on PL descending, MXID ascending. (case-insensitive)\n var comparator = function comparator(a, b) {\n var plDiff = userLevels[b.key] - userLevels[a.key];\n return plDiff !== 0 ? plDiff : a.key.toLocaleLowerCase().localeCompare(b.key.toLocaleLowerCase());\n };\n\n privilegedUsers.sort(comparator);\n mutedUsers.sort(comparator);\n\n if (privilegedUsers.length) {\n privilegedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Privileged Users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_userLevels' },\n privilegedUsers\n )\n );\n }\n if (mutedUsers.length) {\n mutedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Muted Users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_userLevels' },\n mutedUsers\n )\n );\n }\n }\n\n var banned = this.props.room.getMembersWithMembership(\"ban\");\n var bannedUsersSection = void 0;\n if (banned.length) {\n var canBanUsers = currentUserLevel >= banLevel;\n bannedUsersSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Banned users')\n ),\n _react2.default.createElement(\n 'ul',\n { className: 'mx_RoomSettings_banned' },\n banned.map(function (member) {\n var banEvent = member.events.member.getContent();\n var sender = self.props.room.getMember(member.events.member.getSender());\n var bannedBy = member.events.member.getSender(); // start by falling back to mxid\n if (sender) bannedBy = sender.name;\n return _react2.default.createElement(BannedUser, { key: member.userId, canUnban: canBanUsers, member: member, reason: banEvent.reason, by: bannedBy });\n })\n )\n );\n }\n\n var unfederatableSection = void 0;\n if (this._yankValueFromEvent(\"m.room.create\", \"m.federate\", true) === false) {\n unfederatableSection = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevel' },\n (0, _languageHandler._t)('This room is not accessible by remote Matrix servers'),\n '.'\n );\n }\n\n var leaveButton = null;\n var myMemberShip = this.props.room.getMyMembership();\n if (myMemberShip) {\n if (myMemberShip === \"join\") {\n leaveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_leaveButton', onClick: this.onLeaveClick },\n (0, _languageHandler._t)('Leave room')\n );\n } else if (myMemberShip === \"leave\") {\n leaveButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_leaveButton', onClick: this.onForgetClick },\n (0, _languageHandler._t)('Forget room')\n );\n }\n }\n\n // TODO: support editing custom events_levels\n // TODO: support editing custom user_levels\n\n var tags = [{ name: \"m.favourite\", label: (0, _languageHandler._t)('Favourite'), ref: \"tag_favourite\" }, { name: \"m.lowpriority\", label: (0, _languageHandler._t)('Low priority'), ref: \"tag_lowpriority\" }];\n\n (0, _keys2.default)(this.state.tags).sort().forEach(function (tagName) {\n if (tagName !== 'm.favourite' && tagName !== 'm.lowpriority') {\n tags.push({ name: tagName, label: tagName });\n }\n });\n\n var tagsSection = null;\n if (canSetTag || self.state.tags) {\n tagsSection = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_tags' },\n (0, _languageHandler._t)(\"Tagged as: \"),\n canSetTag ? tags.map(function (tag, i) {\n return _react2.default.createElement(\n 'label',\n { key: i },\n _react2.default.createElement('input', { type: 'checkbox',\n ref: tag.ref,\n checked: tag.name in self.state.tags,\n onChange: self._onTagChange.bind(self, tag.name) }),\n tag.label\n );\n }) : self.state.tags && self.state.tags.join ? self.state.tags.join(\", \") : \"\"\n );\n }\n\n // If there is no history_visibility, it is assumed to be 'shared'.\n // http://matrix.org/docs/spec/r0.0.0/client_server.html#id31\n var historyVisibility = this.state.history_visibility || \"shared\";\n\n var addressWarning = void 0;\n var aliasEvents = this.props.room.currentState.getStateEvents('m.room.aliases') || [];\n var aliasCount = 0;\n aliasEvents.forEach(function (event) {\n var aliases = event.getContent().aliases || [];\n aliasCount += aliases.length;\n });\n\n if (this.state.join_rule === \"public\" && aliasCount == 0) {\n addressWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_warning' },\n (0, _languageHandler._t)('To link to a room it must have <a>an address</a>.', {}, { 'a': function a(sub) {\n return _react2.default.createElement(\n 'a',\n { href: '#addresses' },\n sub\n );\n } })\n );\n }\n\n var inviteGuestWarning = void 0;\n if (this.state.join_rule !== \"public\" && this.state.guest_access === \"forbidden\") {\n inviteGuestWarning = _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_warning' },\n (0, _languageHandler._t)('Guests cannot join this room even if explicitly invited.'),\n ' ',\n _react2.default.createElement(\n 'a',\n { href: '#', onClick: function onClick(e) {\n _this6.setState({ join_rule: \"invite\", guest_access: \"can_join\" });\n e.preventDefault();\n } },\n (0, _languageHandler._t)('Click here to fix')\n ),\n '.'\n );\n }\n\n var powerSelectors = (0, _keys2.default)(powerLevelDescriptors).map(function (key, index) {\n var descriptor = powerLevelDescriptors[key];\n\n var keyPath = key.split('.');\n var currentObj = powerLevels;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = (0, _getIterator3.default)(keyPath), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var prop = _step3.value;\n\n if (currentObj === undefined) {\n break;\n }\n currentObj = currentObj[prop];\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n var value = parseIntWithDefault(currentObj, descriptor.defaultValue);\n return _react2.default.createElement(\n 'div',\n { key: index, className: 'mx_RoomSettings_powerLevel' },\n _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_powerLevelKey' },\n descriptor.desc\n ),\n _react2.default.createElement(PowerSelector, {\n value: value,\n usersDefault: defaultUserLevel,\n controlled: false,\n disabled: !canChangeLevels || currentUserLevel < value,\n powerLevelKey: key // Will be sent as the second parameter to `onChange`\n , onChange: _this6.onPowerLevelsChanged\n })\n );\n });\n\n var eventPowerSelectors = (0, _keys2.default)(eventsLevels).map(function (eventType, i) {\n var label = plEventsToLabels[eventType];\n if (label) {\n label = (0, _languageHandler._t)(label);\n } else {\n label = (0, _languageHandler._t)(\"To send events of type <eventType/>, you must be a\", {}, { 'eventType': _react2.default.createElement(\n 'code',\n null,\n eventType\n ) });\n }\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevel', key: eventType },\n _react2.default.createElement(\n 'span',\n { className: 'mx_RoomSettings_powerLevelKey' },\n label,\n ' '\n ),\n _react2.default.createElement(PowerSelector, {\n value: eventsLevels[eventType],\n usersDefault: defaultUserLevel,\n controlled: false,\n disabled: !canChangeLevels || currentUserLevel < eventsLevels[eventType],\n powerLevelKey: \"event_levels_\" + eventType,\n onChange: self.onPowerLevelsChanged\n })\n );\n });\n\n var roomUpgradeButton = null;\n if (this.props.room.shouldUpgradeToVersion() && this.props.room.userMayUpgradeRoom(myUserId)) {\n roomUpgradeButton = _react2.default.createElement(\n _AccessibleButton2.default,\n { className: 'mx_RoomSettings_upgradeButton danger', onClick: this._onRoomUpgradeClick },\n (0, _languageHandler._t)(\"Upgrade room to version %(ver)s\", { ver: this.props.room.shouldUpgradeToVersion() })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings' },\n leaveButton,\n tagsSection,\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_toggles' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can access this room?')\n ),\n inviteGuestWarning,\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'invite_only',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule !== \"public\" }),\n (0, _languageHandler._t)('Only people who have been invited')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_no_guests',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule === \"public\" && this.state.guest_access !== \"can_join\" }),\n (0, _languageHandler._t)('Anyone who knows the room\\'s link, apart from guests')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'roomVis', value: 'public_with_guests',\n disabled: !this.mayChangeRoomAccess(),\n onChange: this._onRoomAccessRadioToggle,\n checked: this.state.join_rule === \"public\" && this.state.guest_access === \"can_join\" }),\n (0, _languageHandler._t)('Anyone who knows the room\\'s link, including guests')\n ),\n addressWarning,\n _react2.default.createElement('br', null),\n this._renderEncryptionSection(),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'checkbox', disabled: !roomState.mayClientSendStateEvent(\"m.room.aliases\", cli),\n onChange: this._onToggle.bind(this, \"isRoomPublished\", true, false),\n checked: this.state.isRoomPublished }),\n (0, _languageHandler._t)(\"Publish this room to the public in %(domain)s's room directory?\", { domain: _MatrixClientPeg2.default.get().getDomain() })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Who can read history?')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'world_readable',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"world_readable\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)(\"Anyone\")\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'shared',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"shared\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since the point in time of selecting this option)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'invited',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"invited\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they were invited)')\n ),\n _react2.default.createElement(\n 'label',\n null,\n _react2.default.createElement('input', { type: 'radio', name: 'historyVis', value: 'joined',\n disabled: !roomState.mayClientSendStateEvent(\"m.room.history_visibility\", cli),\n checked: historyVisibility === \"joined\",\n onChange: this._onHistoryRadioToggle }),\n (0, _languageHandler._t)('Members only (since they joined)')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Room Colour')\n ),\n _react2.default.createElement(ColorSettings, { ref: 'color_settings', room: this.props.room })\n ),\n _react2.default.createElement('a', { id: 'addresses' }),\n _react2.default.createElement(AliasSettings, { ref: 'alias_settings',\n roomId: this.props.room.roomId,\n canSetCanonicalAlias: roomState.mayClientSendStateEvent(\"m.room.canonical_alias\", cli),\n canSetAliases: true\n /* Originally, we arbitrarily restricted creating aliases to room admins: roomState.mayClientSendStateEvent(\"m.room.aliases\", cli) */\n ,\n canonicalAliasEvent: this.props.room.currentState.getStateEvents('m.room.canonical_alias', ''),\n aliasEvents: this.props.room.currentState.getStateEvents('m.room.aliases') }),\n relatedGroupsSection,\n _react2.default.createElement(UrlPreviewSettings, { ref: 'url_preview_settings', room: this.props.room }),\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Permissions')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_powerLevels mx_RoomSettings_settings' },\n powerSelectors,\n eventPowerSelectors,\n unfederatableSection\n ),\n privilegedUsersSection,\n mutedUsersSection,\n bannedUsersSection,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Advanced')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomSettings_settings' },\n (0, _languageHandler._t)('Internal room ID: '),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n this.props.room.roomId\n ),\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('Room version number: '),\n ' ',\n _react2.default.createElement(\n 'code',\n null,\n this.props.room.getVersion()\n ),\n _react2.default.createElement('br', null),\n roomUpgradeButton\n )\n );\n }\n});\n//# sourceMappingURL=RoomSettings.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar MIN_TOOLTIP_HEIGHT = 25;\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomTooltip',\n\n propTypes: {\n // Class applied to the element used to position the tooltip\n className: _react2.default.PropTypes.string.isRequired,\n // Class applied to the tooltip itself\n tooltipClassName: _react2.default.PropTypes.string,\n // The tooltip is derived from either the room name or a label\n room: _react2.default.PropTypes.object,\n label: _react2.default.PropTypes.node\n },\n\n // Create a wrapper for the tooltip outside the parent and attach it to the body element\n componentDidMount: function componentDidMount() {\n this.tooltipContainer = document.createElement(\"div\");\n this.tooltipContainer.className = \"mx_RoomTileTooltip_wrapper\";\n document.body.appendChild(this.tooltipContainer);\n window.addEventListener('scroll', this._renderTooltip, true);\n\n this.parent = _reactDom2.default.findDOMNode(this).parentNode;\n\n this._renderTooltip();\n },\n\n componentDidUpdate: function componentDidUpdate() {\n this._renderTooltip();\n },\n\n // Remove the wrapper element, as the tooltip has finished using it\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.dispatch({\n action: 'view_tooltip',\n tooltip: null,\n parent: null\n });\n\n _reactDom2.default.unmountComponentAtNode(this.tooltipContainer);\n document.body.removeChild(this.tooltipContainer);\n window.removeEventListener('scroll', this._renderTooltip, true);\n },\n\n _updatePosition: function _updatePosition(style) {\n var parentBox = this.parent.getBoundingClientRect();\n var offset = 0;\n if (parentBox.height > MIN_TOOLTIP_HEIGHT) {\n offset = Math.floor((parentBox.height - MIN_TOOLTIP_HEIGHT) / 2);\n }\n style.top = parentBox.top - 2 + window.pageYOffset + offset;\n style.left = 6 + parentBox.right + window.pageXOffset;\n return style;\n },\n\n\n _renderTooltip: function _renderTooltip() {\n // Add the parent's position to the tooltips, so it's correctly\n // positioned, also taking into account any window zoom\n // NOTE: The additional 6 pixels for the left position, is to take account of the\n // tooltips chevron\n var parent = _reactDom2.default.findDOMNode(this).parentNode;\n var style = {};\n style = this._updatePosition(style);\n style.display = \"block\";\n\n var tooltipClasses = (0, _classnames2.default)(\"mx_RoomTooltip\", this.props.tooltipClassName);\n\n var tooltip = _react2.default.createElement(\n 'div',\n { className: tooltipClasses, style: style },\n _react2.default.createElement('div', { className: 'mx_RoomTooltip_chevron' }),\n this.props.label\n );\n\n // Render the tooltip manually, as we wish it not to be rendered within the parent\n this.tooltip = _reactDom2.default.render(tooltip, this.tooltipContainer);\n\n // Tell the roomlist about us so it can manipulate us if it wishes\n _dispatcher2.default.dispatch({\n action: 'view_tooltip',\n tooltip: this.tooltip,\n parent: parent\n });\n },\n\n render: function render() {\n // Render a placeholder\n return _react2.default.createElement('div', { className: this.props.className });\n }\n});\n//# sourceMappingURL=RoomTooltip.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'RoomTopicEditor',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n topic: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n var room = this.props.room;\n var topic = room.currentState.getStateEvents('m.room.topic', '');\n this.setState({\n topic: topic ? topic.getContent().topic : ''\n });\n },\n\n getTopic: function getTopic() {\n return this.state.topic;\n },\n\n _onValueChanged: function _onValueChanged(value) {\n this.setState({\n topic: value\n });\n },\n\n render: function render() {\n var EditableText = sdk.getComponent(\"elements.EditableText\");\n\n return React.createElement(EditableText, {\n className: 'mx_RoomHeader_topic mx_RoomHeader_editable',\n placeholderClassName: 'mx_RoomHeader_placeholder',\n placeholder: (0, _languageHandler._t)(\"Add a topic\"),\n blurToCancel: false,\n initialValue: this.state.topic,\n onValueChanged: this._onValueChanged,\n dir: 'auto' });\n }\n});\n//# sourceMappingURL=RoomTopicEditor.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'RoomUpgradeWarningBar',\n\n propTypes: {\n room: _propTypes2.default.object.isRequired\n },\n\n onUpgradeClick: function onUpgradeClick() {\n var RoomUpgradeDialog = _index2.default.getComponent('dialogs.RoomUpgradeDialog');\n _Modal2.default.createTrackedDialog('Upgrade Room Version', '', RoomUpgradeDialog, { room: this.props.room });\n },\n\n render: function render() {\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_header' },\n (0, _languageHandler._t)(\"There is a known vulnerability affecting this room.\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_body' },\n (0, _languageHandler._t)(\"This room version is vulnerable to malicious modification of room state.\")\n ),\n _react2.default.createElement(\n 'p',\n { className: 'mx_RoomUpgradeWarningBar_upgradelink' },\n _react2.default.createElement(\n AccessibleButton,\n { onClick: this.onUpgradeClick },\n (0, _languageHandler._t)(\"Click here to upgrade to the latest room version and ensure room integrity is protected.\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_RoomUpgradeWarningBar_small' },\n (0, _languageHandler._t)(\"Only room administrators will see this warning\")\n )\n );\n }\n}); /*\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=RoomUpgradeWarningBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar React = require('react');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar classNames = require('classnames');\nvar AccessibleButton = require('../../../components/views/elements/AccessibleButton');\n\n\nmodule.exports = React.createClass({\n displayName: 'SearchBar',\n\n getInitialState: function getInitialState() {\n return {\n scope: 'Room'\n };\n },\n\n onThisRoomClick: function onThisRoomClick() {\n this.setState({ scope: 'Room' });\n },\n\n onAllRoomsClick: function onAllRoomsClick() {\n this.setState({ scope: 'All' });\n },\n\n onSearchChange: function onSearchChange(e) {\n if (e.keyCode === 13) {\n // on enter...\n this.onSearch();\n }\n if (e.keyCode === 27) {\n // escape...\n this.props.onCancelClick();\n }\n },\n\n onSearch: function onSearch() {\n this.props.onSearch(this.refs.search_term.value, this.state.scope);\n },\n\n render: function render() {\n var searchButtonClasses = classNames({ mx_SearchBar_searchButton: true, mx_SearchBar_searching: this.props.searchInProgress });\n var thisRoomClasses = classNames({ mx_SearchBar_button: true, mx_SearchBar_unselected: this.state.scope !== 'Room' });\n var allRoomsClasses = classNames({ mx_SearchBar_button: true, mx_SearchBar_unselected: this.state.scope !== 'All' });\n\n return React.createElement(\n 'div',\n { className: 'mx_SearchBar' },\n React.createElement('input', { ref: 'search_term', className: 'mx_SearchBar_input', type: 'text', autoFocus: true, placeholder: (0, _languageHandler._t)(\"Search…\"), onKeyDown: this.onSearchChange }),\n React.createElement(\n AccessibleButton,\n { className: searchButtonClasses, onClick: this.onSearch },\n React.createElement('img', { src: 'img/search-button.svg', width: '37', height: '37', alt: (0, _languageHandler._t)(\"Search\") })\n ),\n React.createElement(\n AccessibleButton,\n { className: thisRoomClasses, onClick: this.onThisRoomClick },\n (0, _languageHandler._t)(\"This Room\")\n ),\n React.createElement(\n AccessibleButton,\n { className: allRoomsClasses, onClick: this.onAllRoomsClick },\n (0, _languageHandler._t)(\"All Rooms\")\n ),\n React.createElement(\n AccessibleButton,\n { className: 'mx_SearchBar_cancel', onClick: this.props.onCancelClick },\n React.createElement('img', { src: 'img/cancel.svg', width: '18', height: '18' })\n )\n );\n }\n});\n//# sourceMappingURL=SearchBar.js.map","/*\nCopyright 2015 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'SearchResult',\n\n propTypes: {\n // a matrix-js-sdk SearchResult containing the details of this result\n searchResult: _propTypes2.default.object.isRequired,\n\n // a list of strings to be highlighted in the results\n searchHighlights: _propTypes2.default.array,\n\n // href for the highlights in this result\n resultLink: _propTypes2.default.string,\n\n onWidgetLoad: _propTypes2.default.func\n },\n\n render: function render() {\n var DateSeparator = sdk.getComponent('messages.DateSeparator');\n var EventTile = sdk.getComponent('rooms.EventTile');\n var result = this.props.searchResult;\n var mxEv = result.context.getEvent();\n var eventId = mxEv.getId();\n\n var ts1 = mxEv.getTs();\n var ret = [React.createElement(DateSeparator, { key: ts1 + \"-search\", ts: ts1 })];\n\n var timeline = result.context.getTimeline();\n for (var j = 0; j < timeline.length; j++) {\n var ev = timeline[j];\n var highlights;\n var contextual = j != result.context.getOurEventIndex();\n if (!contextual) {\n highlights = this.props.searchHighlights;\n }\n if (EventTile.haveTileForEvent(ev)) {\n ret.push(React.createElement(EventTile, { key: eventId + \"+\" + j, mxEvent: ev, contextual: contextual, highlights: highlights,\n highlightLink: this.props.resultLink,\n onWidgetLoad: this.props.onWidgetLoad }));\n }\n }\n return React.createElement(\n 'li',\n { 'data-scroll-tokens': eventId + \"+\" + j },\n ret\n );\n }\n});\n//# sourceMappingURL=SearchResultTile.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\nvar sdk = require(\"../../../index\");\n\n\n// A list capable of displaying entities which conform to the SearchableEntity\n// interface which is an object containing getJsx(): Jsx and matches(query: string): boolean\nvar SearchableEntityList = React.createClass({\n displayName: 'SearchableEntityList',\n\n propTypes: {\n emptyQueryShowsAll: _propTypes2.default.bool,\n showInputBox: _propTypes2.default.bool,\n onQueryChanged: _propTypes2.default.func, // fn(inputText)\n onSubmit: _propTypes2.default.func, // fn(inputText)\n entities: _propTypes2.default.array,\n truncateAt: _propTypes2.default.number\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showInputBox: true,\n entities: [],\n emptyQueryShowsAll: false,\n onSubmit: function onSubmit() {},\n onQueryChanged: function onQueryChanged(input) {}\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n query: \"\",\n focused: false,\n truncateAt: this.props.truncateAt,\n results: this.getSearchResults(\"\", this.props.entities)\n };\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n // recalculate the search results in case we got new entities\n this.setState({\n results: this.getSearchResults(this.state.query, newProps.entities)\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n // pretend the query box was blanked out else filters could still be\n // applied to other components which rely on onQueryChanged.\n this.props.onQueryChanged(\"\");\n },\n\n /**\n * Public-facing method to set the input query text to the given input.\n * @param {string} input\n */\n setQuery: function setQuery(input) {\n this.setState({\n query: input,\n results: this.getSearchResults(input, this.props.entities)\n });\n },\n\n onQueryChanged: function onQueryChanged(ev) {\n var _this = this;\n\n var q = ev.target.value;\n this.setState({\n query: q,\n // reset truncation if they back out the entire text\n truncateAt: q.length === 0 ? this.props.truncateAt : this.state.truncateAt,\n results: this.getSearchResults(q, this.props.entities)\n }, function () {\n // invoke the callback AFTER we've flushed the new state. We need to\n // do this because onQueryChanged can result in new props being passed\n // to this component, which will then try to recalculate the search\n // list. If we do this without flushing, we'll recalc with the last\n // search term and not the current one!\n _this.props.onQueryChanged(q);\n });\n },\n\n onQuerySubmit: function onQuerySubmit(ev) {\n ev.preventDefault();\n this.props.onSubmit(this.state.query);\n },\n\n getSearchResults: function getSearchResults(query, entities) {\n if (!query || query.length === 0) {\n return this.props.emptyQueryShowsAll ? entities : [];\n }\n return entities.filter(function (e) {\n return e.matches(query);\n });\n },\n\n _showAll: function _showAll() {\n this.setState({\n truncateAt: -1\n });\n },\n\n _createOverflowEntity: function _createOverflowEntity(overflowCount, totalCount) {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n var text = (0, _languageHandler._t)(\"and %(count)s others...\", { count: overflowCount });\n return React.createElement(EntityTile, { className: 'mx_EntityTile_ellipsis', avatarJsx: React.createElement(BaseAvatar, { url: 'img/ellipsis.svg', name: '...', width: 36, height: 36 }), name: text, presenceState: 'online', suppressOnHover: true,\n onClick: this._showAll });\n },\n\n render: function render() {\n var _this2 = this;\n\n var inputBox = void 0;\n\n if (this.props.showInputBox) {\n inputBox = React.createElement(\n 'form',\n { onSubmit: this.onQuerySubmit, autoComplete: 'off' },\n React.createElement('input', { className: 'mx_SearchableEntityList_query', id: 'mx_SearchableEntityList_query', type: 'text',\n onChange: this.onQueryChanged, value: this.state.query,\n onFocus: function onFocus() {\n _this2.setState({ focused: true });\n },\n onBlur: function onBlur() {\n _this2.setState({ focused: false });\n },\n placeholder: (0, _languageHandler._t)(\"Search\") })\n );\n }\n\n var list = void 0;\n if (this.state.results.length > 1 || this.state.focused) {\n if (this.props.truncateAt) {\n // caller wants list truncated\n var TruncatedList = sdk.getComponent(\"elements.TruncatedList\");\n list = React.createElement(\n TruncatedList,\n { className: 'mx_SearchableEntityList_list',\n truncateAt: this.state.truncateAt // use state truncation as it may be expanded\n , createOverflowElement: this._createOverflowEntity },\n this.state.results.map(function (entity) {\n return entity.getJsx();\n })\n );\n } else {\n list = React.createElement(\n 'div',\n { className: 'mx_SearchableEntityList_list' },\n this.state.results.map(function (entity) {\n return entity.getJsx();\n })\n );\n }\n var GeminiScrollbarWrapper = sdk.getComponent(\"elements.GeminiScrollbarWrapper\");\n list = React.createElement(\n GeminiScrollbarWrapper,\n { autoshow: true,\n className: 'mx_SearchableEntityList_listWrapper' },\n list\n );\n }\n\n return React.createElement(\n 'div',\n { className: \"mx_SearchableEntityList \" + (list ? \"mx_SearchableEntityList_expanded\" : \"\") },\n inputBox,\n list,\n list ? React.createElement(\n 'div',\n { className: 'mx_SearchableEntityList_hrWrapper' },\n React.createElement('hr', null)\n ) : ''\n );\n }\n});\n\nmodule.exports = SearchableEntityList;\n//# sourceMappingURL=SearchableEntityList.js.map","/*\nCopyright 2016 OpenMarket Ltd\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\nvar sdk = require('../../../index');\n\nmodule.exports = React.createClass({\n displayName: 'TopUnreadMessagesBar',\n\n propTypes: {\n onScrollUpClick: _propTypes2.default.func,\n onCloseClick: _propTypes2.default.func\n },\n\n render: function render() {\n return React.createElement(\n 'div',\n { className: 'mx_TopUnreadMessagesBar' },\n React.createElement(\n _AccessibleButton2.default,\n { className: 'mx_TopUnreadMessagesBar_scrollUp',\n onClick: this.props.onScrollUpClick },\n React.createElement('img', { src: 'img/scrollto.svg', width: '24', height: '24'\n // No point on setting up non empty alt on this image\n // as it only complements the text which follows it.\n , alt: '',\n title: (0, _languageHandler._t)('Scroll to unread messages')\n // In order not to use this title attribute for accessible name\n // calculation of the parent button set the role presentation\n , role: 'presentation' }),\n (0, _languageHandler._t)(\"Jump to first unread message.\")\n ),\n React.createElement(_AccessibleButton2.default, { element: 'img', className: 'mx_TopUnreadMessagesBar_close mx_filterFlipColor',\n src: 'img/cancel.svg', width: '18', height: '18',\n alt: (0, _languageHandler._t)(\"Close\"), title: (0, _languageHandler._t)(\"Close\"),\n onClick: this.props.onCloseClick })\n );\n }\n});\n//# sourceMappingURL=TopUnreadMessagesBar.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar React = require('react');\n\n\nvar Avatar = require(\"../../../Avatar\");\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar sdk = require('../../../index');\nvar dis = require('../../../dispatcher');\nvar Modal = require(\"../../../Modal\");\n\nmodule.exports = React.createClass({\n displayName: 'UserTile',\n\n propTypes: {\n user: _propTypes2.default.any.isRequired // User\n },\n\n render: function render() {\n var EntityTile = sdk.getComponent(\"rooms.EntityTile\");\n var user = this.props.user;\n var name = user.displayName || user.userId;\n var active = -1;\n\n // FIXME: make presence data update whenever User.presence changes...\n active = user.lastActiveAgo ? Date.now() - (user.lastPresenceTs - user.lastActiveAgo) : -1;\n\n var BaseAvatar = sdk.getComponent('avatars.BaseAvatar');\n var avatarJsx = React.createElement(BaseAvatar, { width: 36, height: 36, name: name, idName: user.userId,\n url: Avatar.avatarUrlForUser(user, 36, 36, \"crop\") });\n\n return React.createElement(EntityTile, (0, _extends3.default)({}, this.props, { presenceState: user.presence, presenceActiveAgo: active,\n presenceCurrentlyActive: user.currentlyActive,\n name: name, title: user.userId, avatarJsx: avatarJsx }));\n }\n});\n//# sourceMappingURL=UserTile.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _AddThreepid = require('../../../AddThreepid');\n\nvar _AddThreepid2 = _interopRequireDefault(_AddThreepid);\n\nvar _withMatrixClient = require('../../../wrappers/withMatrixClient');\n\nvar _withMatrixClient2 = _interopRequireDefault(_withMatrixClient);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _withMatrixClient2.default)(_react2.default.createClass({\n displayName: 'AddPhoneNumber',\n\n propTypes: {\n matrixClient: _propTypes2.default.object.isRequired,\n onThreepidAdded: _propTypes2.default.func\n },\n\n getInitialState: function getInitialState() {\n return {\n busy: false,\n phoneCountry: null,\n phoneNumber: \"\",\n msisdn_add_pending: false\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._addThreepid = null;\n this._addMsisdnInput = null;\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onPhoneCountryChange: function _onPhoneCountryChange(phoneCountry) {\n this.setState({ phoneCountry: phoneCountry.iso2 });\n },\n\n _onPhoneNumberChange: function _onPhoneNumberChange(ev) {\n this.setState({ phoneNumber: ev.target.value });\n },\n\n _onAddMsisdnEditFinished: function _onAddMsisdnEditFinished(value, shouldSubmit) {\n if (!shouldSubmit) return;\n this._addMsisdn();\n },\n\n _onAddMsisdnSubmit: function _onAddMsisdnSubmit(ev) {\n ev.preventDefault();\n this._addMsisdn();\n },\n\n _collectAddMsisdnInput: function _collectAddMsisdnInput(e) {\n this._addMsisdnInput = e;\n },\n\n _addMsisdn: function _addMsisdn() {\n var _this = this;\n\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n\n this._addThreepid = new _AddThreepid2.default();\n // we always bind phone numbers when registering, so let's do the\n // same here.\n this._addThreepid.addMsisdn(this.state.phoneCountry, this.state.phoneNumber, true).then(function (resp) {\n _this._promptForMsisdnVerificationCode(resp.msisdn);\n }).catch(function (err) {\n console.error(\"Unable to add phone number: \" + err);\n var msg = err.message;\n _Modal2.default.createTrackedDialog('Add Phone Number Error', '', ErrorDialog, {\n title: (0, _languageHandler._t)(\"Error\"),\n description: msg\n });\n }).finally(function () {\n if (_this._unmounted) return;\n _this.setState({ msisdn_add_pending: false });\n }).done();\n this._addMsisdnInput.blur();\n this.setState({ msisdn_add_pending: true });\n },\n\n _promptForMsisdnVerificationCode: function _promptForMsisdnVerificationCode(msisdn, err) {\n var _this2 = this;\n\n if (this._unmounted) return;\n var TextInputDialog = _index2.default.getComponent(\"dialogs.TextInputDialog\");\n var msgElements = [_react2.default.createElement(\n 'div',\n { key: '_static' },\n (0, _languageHandler._t)(\"A text message has been sent to +%(msisdn)s. Please enter the verification code it contains\", { msisdn: msisdn })\n )];\n if (err) {\n var msg = err.error;\n if (err.errcode == 'M_THREEPID_AUTH_FAILED') {\n msg = (0, _languageHandler._t)(\"Incorrect verification code\");\n }\n msgElements.push(_react2.default.createElement(\n 'div',\n { key: '_error', className: 'error' },\n msg\n ));\n }\n _Modal2.default.createTrackedDialog('Prompt for MSISDN Verification Code', '', TextInputDialog, {\n title: (0, _languageHandler._t)(\"Enter Code\"),\n description: _react2.default.createElement(\n 'div',\n null,\n msgElements\n ),\n button: (0, _languageHandler._t)(\"Submit\"),\n onFinished: function onFinished(should_verify, token) {\n if (!should_verify) {\n _this2._addThreepid = null;\n return;\n }\n if (_this2._unmounted) return;\n _this2.setState({ msisdn_add_pending: true });\n _this2._addThreepid.haveMsisdnToken(token).then(function () {\n _this2._addThreepid = null;\n _this2.setState({ phoneNumber: '' });\n if (_this2.props.onThreepidAdded) _this2.props.onThreepidAdded();\n }).catch(function (err) {\n _this2._promptForMsisdnVerificationCode(msisdn, err);\n }).finally(function () {\n if (_this2._unmounted) return;\n _this2.setState({ msisdn_add_pending: false });\n }).done();\n }\n });\n },\n\n render: function render() {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n if (this.state.msisdn_add_pending) {\n return _react2.default.createElement(Loader, null);\n } else if (this.props.matrixClient.isGuest()) {\n return _react2.default.createElement('div', null);\n }\n\n var CountryDropdown = _index2.default.getComponent('views.login.CountryDropdown');\n // XXX: This CSS relies on the CSS surrounding it in UserSettings as its in\n // a tabular format to align the submit buttons\n return _react2.default.createElement(\n 'form',\n { className: 'mx_UserSettings_profileTableRow', onSubmit: this._onAddMsisdnSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_profileLabelCell' },\n _react2.default.createElement(\n 'label',\n null,\n (0, _languageHandler._t)('Phone')\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_profileInputCell' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_phoneSection' },\n _react2.default.createElement(CountryDropdown, { onOptionChange: this._onPhoneCountryChange,\n className: 'mx_UserSettings_phoneCountry',\n value: this.state.phoneCountry,\n isSmall: true\n }),\n _react2.default.createElement('input', { type: 'text',\n ref: this._collectAddMsisdnInput,\n className: 'mx_UserSettings_phoneNumberField',\n placeholder: (0, _languageHandler._t)('Add phone number'),\n value: this.state.phoneNumber,\n onChange: this._onPhoneNumberChange\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_threepidButton mx_filterFlipColor' },\n _react2.default.createElement('input', { type: 'image', value: (0, _languageHandler._t)(\"Add\"), src: 'img/plus.svg', width: '14', height: '14' })\n )\n );\n }\n})); /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=AddPhoneNumber.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar sdk = require('../../../index');\n\n\nmodule.exports = React.createClass({\n displayName: 'ChangeAvatar',\n propTypes: {\n initialAvatarUrl: _propTypes2.default.string,\n room: _propTypes2.default.object,\n // if false, you need to call changeAvatar.onFileSelected yourself.\n showUploadSection: _propTypes2.default.bool,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n className: _propTypes2.default.string\n },\n\n Phases: {\n Display: \"display\",\n Uploading: \"uploading\",\n Error: \"error\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n showUploadSection: true,\n className: \"\",\n width: 80,\n height: 80\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n avatarUrl: this.props.initialAvatarUrl,\n phase: this.Phases.Display\n };\n },\n\n componentWillMount: function componentWillMount() {\n MatrixClientPeg.get().on(\"RoomState.events\", this.onRoomStateEvents);\n },\n\n componentWillReceiveProps: function componentWillReceiveProps(newProps) {\n if (this.avatarSet) {\n // don't clobber what the user has just set\n return;\n }\n this.setState({\n avatarUrl: newProps.initialAvatarUrl\n });\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (MatrixClientPeg.get()) {\n MatrixClientPeg.get().removeListener(\"RoomState.events\", this.onRoomStateEvents);\n }\n },\n\n onRoomStateEvents: function onRoomStateEvents(ev) {\n if (!this.props.room) {\n return;\n }\n\n if (ev.getRoomId() !== this.props.room.roomId || ev.getType() !== 'm.room.avatar' || ev.getSender() !== MatrixClientPeg.get().getUserId()) {\n return;\n }\n\n if (!ev.getContent().url) {\n this.avatarSet = false;\n this.setState({}); // force update\n }\n },\n\n setAvatarFromFile: function setAvatarFromFile(file) {\n var newUrl = null;\n\n this.setState({\n phase: this.Phases.Uploading\n });\n var self = this;\n var httpPromise = MatrixClientPeg.get().uploadContent(file).then(function (url) {\n newUrl = url;\n if (self.props.room) {\n return MatrixClientPeg.get().sendStateEvent(self.props.room.roomId, 'm.room.avatar', { url: url }, '');\n } else {\n return MatrixClientPeg.get().setAvatarUrl(url);\n }\n });\n\n httpPromise.done(function () {\n self.setState({\n phase: self.Phases.Display,\n avatarUrl: MatrixClientPeg.get().mxcUrlToHttp(newUrl)\n });\n }, function (error) {\n self.setState({\n phase: self.Phases.Error\n });\n self.onError(error);\n });\n\n return httpPromise;\n },\n\n onFileSelected: function onFileSelected(ev) {\n this.avatarSet = true;\n return this.setAvatarFromFile(ev.target.files[0]);\n },\n\n onError: function onError(error) {\n this.setState({\n errorText: (0, _languageHandler._t)(\"Failed to upload profile picture!\")\n });\n },\n\n render: function render() {\n var avatarImg = void 0;\n // Having just set an avatar we just display that since it will take a little\n // time to propagate through to the RoomAvatar.\n if (this.props.room && !this.avatarSet) {\n var RoomAvatar = sdk.getComponent('avatars.RoomAvatar');\n avatarImg = React.createElement(RoomAvatar, { room: this.props.room, width: this.props.width, height: this.props.height, resizeMethod: 'crop' });\n } else {\n var BaseAvatar = sdk.getComponent(\"avatars.BaseAvatar\");\n // XXX: FIXME: once we track in the JS what our own displayname is(!) then use it here rather than ?\n avatarImg = React.createElement(BaseAvatar, { width: this.props.width, height: this.props.height, resizeMethod: 'crop',\n name: '?', idName: MatrixClientPeg.get().getUserIdLocalpart(), url: this.state.avatarUrl });\n }\n\n var uploadSection = void 0;\n if (this.props.showUploadSection) {\n uploadSection = React.createElement(\n 'div',\n { className: this.props.className },\n (0, _languageHandler._t)(\"Upload new:\"),\n React.createElement('input', { type: 'file', accept: 'image/*', onChange: this.onFileSelected }),\n this.state.errorText\n );\n }\n\n switch (this.state.phase) {\n case this.Phases.Display:\n case this.Phases.Error:\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n { className: this.props.className },\n avatarImg\n ),\n uploadSection\n );\n case this.Phases.Uploading:\n var Loader = sdk.getComponent(\"elements.Spinner\");\n return React.createElement(Loader, null);\n }\n }\n});\n//# sourceMappingURL=ChangeAvatar.js.map","'use strict';\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require('bluebird');\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'ChangeDisplayName',\n\n _getDisplayName: function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var cli, res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n cli = _MatrixClientPeg2.default.get();\n _context.prev = 1;\n _context.next = 4;\n return (0, _bluebird.resolve)(cli.getProfileInfo(cli.getUserId()));\n\n case 4:\n res = _context.sent;\n return _context.abrupt('return', res.displayname);\n\n case 8:\n _context.prev = 8;\n _context.t0 = _context['catch'](1);\n throw new Error(\"Failed to fetch display name\");\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 8]]);\n }));\n\n function _getDisplayName() {\n return _ref.apply(this, arguments);\n }\n\n return _getDisplayName;\n }(),\n\n _changeDisplayName: function _changeDisplayName(newDisplayname) {\n var cli = _MatrixClientPeg2.default.get();\n return cli.setDisplayName(newDisplayname).catch(function (e) {\n throw new Error(\"Failed to set display name\", e);\n });\n },\n\n render: function render() {\n var EditableTextContainer = _index2.default.getComponent('elements.EditableTextContainer');\n return _react2.default.createElement(EditableTextContainer, {\n getInitialValue: this._getDisplayName,\n placeholder: (0, _languageHandler._t)(\"No display name\"),\n blurToSubmit: true,\n onSubmit: this._changeDisplayName });\n }\n});\n//# sourceMappingURL=ChangeDisplayName.js.map","'use strict';\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _AccessibleButton = require('../elements/AccessibleButton');\n\nvar _AccessibleButton2 = _interopRequireDefault(_AccessibleButton);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _SessionStore = require('../../../stores/SessionStore');\n\nvar _SessionStore2 = _interopRequireDefault(_SessionStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar React = require('react');\n\nvar MatrixClientPeg = require(\"../../../MatrixClientPeg\");\nvar Modal = require(\"../../../Modal\");\nvar sdk = require(\"../../../index\");\n\nmodule.exports = React.createClass({\n displayName: 'ChangePassword',\n propTypes: {\n onFinished: _propTypes2.default.func,\n onError: _propTypes2.default.func,\n onCheckPassword: _propTypes2.default.func,\n rowClassName: _propTypes2.default.string,\n rowLabelClassName: _propTypes2.default.string,\n rowInputClassName: _propTypes2.default.string,\n buttonClassName: _propTypes2.default.string,\n confirm: _propTypes2.default.bool,\n // Whether to autoFocus the new password input\n autoFocusNewPasswordInput: _propTypes2.default.bool\n },\n\n Phases: {\n Edit: \"edit\",\n Uploading: \"uploading\",\n Error: \"error\"\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onFinished: function onFinished() {},\n onError: function onError() {},\n onCheckPassword: function onCheckPassword(oldPass, newPass, confirmPass) {\n if (newPass !== confirmPass) {\n return {\n error: (0, _languageHandler._t)(\"New passwords don't match\")\n };\n } else if (!newPass || newPass.length === 0) {\n return {\n error: (0, _languageHandler._t)(\"Passwords can't be empty\")\n };\n }\n },\n confirm: true\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.Phases.Edit,\n cachedPassword: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._sessionStore = _SessionStore2.default;\n this._sessionStoreToken = this._sessionStore.addListener(this._setStateFromSessionStore);\n\n this._setStateFromSessionStore();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._sessionStoreToken) {\n this._sessionStoreToken.remove();\n }\n },\n\n _setStateFromSessionStore: function _setStateFromSessionStore() {\n this.setState({\n cachedPassword: this._sessionStore.getCachedPassword()\n });\n },\n\n changePassword: function changePassword(oldPassword, newPassword) {\n var _this = this;\n\n var cli = MatrixClientPeg.get();\n\n if (!this.props.confirm) {\n this._changePassword(cli, oldPassword, newPassword);\n return;\n }\n\n var QuestionDialog = sdk.getComponent(\"dialogs.QuestionDialog\");\n Modal.createTrackedDialog('Change Password', '', QuestionDialog, {\n title: (0, _languageHandler._t)(\"Warning!\"),\n description: React.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Changing password will currently reset any end-to-end encryption keys on all devices, ' + 'making encrypted chat history unreadable, unless you first export your room keys ' + 'and re-import them afterwards. ' + 'In future this will be improved.'),\n ' (',\n React.createElement(\n 'a',\n { href: 'https://github.com/vector-im/riot-web/issues/2671' },\n 'https://github.com/vector-im/riot-web/issues/2671'\n ),\n ')'\n ),\n button: (0, _languageHandler._t)(\"Continue\"),\n extraButtons: [React.createElement(\n 'button',\n { className: 'mx_Dialog_primary',\n onClick: this._onExportE2eKeysClicked },\n (0, _languageHandler._t)('Export E2E room keys')\n )],\n onFinished: function onFinished(confirmed) {\n if (confirmed) {\n _this._changePassword(cli, oldPassword, newPassword);\n }\n }\n });\n },\n\n _changePassword: function _changePassword(cli, oldPassword, newPassword) {\n var _this2 = this;\n\n var authDict = {\n type: 'm.login.password',\n user: cli.credentials.userId,\n password: oldPassword\n };\n\n this.setState({\n phase: this.Phases.Uploading\n });\n\n cli.setPassword(authDict, newPassword).then(function () {\n // Notify SessionStore that the user's password was changed\n _dispatcher2.default.dispatch({ action: 'password_changed' });\n\n if (_this2.props.shouldAskForEmail) {\n return _this2._optionallySetEmail().then(function (confirmed) {\n _this2.props.onFinished({\n didSetEmail: confirmed\n });\n });\n } else {\n _this2.props.onFinished();\n }\n }, function (err) {\n _this2.props.onError(err);\n }).finally(function () {\n _this2.setState({\n phase: _this2.Phases.Edit\n });\n }).done();\n },\n\n _optionallySetEmail: function _optionallySetEmail() {\n var deferred = _bluebird2.default.defer();\n // Ask for an email otherwise the user has no way to reset their password\n var SetEmailDialog = sdk.getComponent(\"dialogs.SetEmailDialog\");\n Modal.createTrackedDialog('Do you want to set an email address?', '', SetEmailDialog, {\n title: (0, _languageHandler._t)('Do you want to set an email address?'),\n onFinished: function onFinished(confirmed) {\n // ignore confirmed, setting an email is optional\n deferred.resolve(confirmed);\n }\n });\n return deferred.promise;\n },\n\n _onExportE2eKeysClicked: function _onExportE2eKeysClicked() {\n Modal.createTrackedDialogAsync('Export E2E Keys', 'Change Password', function (cb) {\n require.ensure(['../../../async-components/views/dialogs/ExportE2eKeysDialog'], function () {\n cb(require('../../../async-components/views/dialogs/ExportE2eKeysDialog'));\n }, \"e2e-export\");\n }, {\n matrixClient: MatrixClientPeg.get()\n });\n },\n\n onClickChange: function onClickChange(ev) {\n ev.preventDefault();\n var oldPassword = this.state.cachedPassword || this.refs.old_input.value;\n var newPassword = this.refs.new_input.value;\n var confirmPassword = this.refs.confirm_input.value;\n var err = this.props.onCheckPassword(oldPassword, newPassword, confirmPassword);\n if (err) {\n this.props.onError(err);\n } else {\n this.changePassword(oldPassword, newPassword);\n }\n },\n\n render: function render() {\n var rowClassName = this.props.rowClassName;\n var rowLabelClassName = this.props.rowLabelClassName;\n var rowInputClassName = this.props.rowInputClassName;\n var buttonClassName = this.props.buttonClassName;\n\n var currentPassword = null;\n if (!this.state.cachedPassword) {\n currentPassword = React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'passwordold' },\n (0, _languageHandler._t)('Current password')\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'passwordold', type: 'password', ref: 'old_input' })\n )\n );\n }\n\n switch (this.state.phase) {\n case this.Phases.Edit:\n var passwordLabel = this.state.cachedPassword ? (0, _languageHandler._t)('Password') : (0, _languageHandler._t)('New Password');\n return React.createElement(\n 'form',\n { className: this.props.className, onSubmit: this.onClickChange },\n currentPassword,\n React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'password1' },\n passwordLabel\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'password1', type: 'password', ref: 'new_input', autoFocus: this.props.autoFocusNewPasswordInput })\n )\n ),\n React.createElement(\n 'div',\n { className: rowClassName },\n React.createElement(\n 'div',\n { className: rowLabelClassName },\n React.createElement(\n 'label',\n { htmlFor: 'password2' },\n (0, _languageHandler._t)('Confirm password')\n )\n ),\n React.createElement(\n 'div',\n { className: rowInputClassName },\n React.createElement('input', { id: 'password2', type: 'password', ref: 'confirm_input' })\n )\n ),\n React.createElement(\n _AccessibleButton2.default,\n { className: buttonClassName,\n onClick: this.onClickChange,\n element: 'button' },\n (0, _languageHandler._t)('Change Password')\n )\n );\n case this.Phases.Uploading:\n var Loader = sdk.getComponent(\"elements.Spinner\");\n return React.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n React.createElement(Loader, null)\n );\n }\n }\n});\n//# sourceMappingURL=ChangePassword.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DevicesPanel = function (_React$Component) {\n (0, _inherits3.default)(DevicesPanel, _React$Component);\n\n function DevicesPanel(props, context) {\n (0, _classCallCheck3.default)(this, DevicesPanel);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DevicesPanel.__proto__ || (0, _getPrototypeOf2.default)(DevicesPanel)).call(this, props, context));\n\n _this.state = {\n devices: undefined,\n deviceLoadError: undefined,\n\n selectedDevices: [],\n deleting: false\n };\n\n _this._unmounted = false;\n\n _this._renderDevice = _this._renderDevice.bind(_this);\n _this._onDeviceSelectionToggled = _this._onDeviceSelectionToggled.bind(_this);\n _this._onDeleteClick = _this._onDeleteClick.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DevicesPanel, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this._loadDevices();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_loadDevices',\n value: function _loadDevices() {\n var _this2 = this;\n\n _MatrixClientPeg2.default.get().getDevices().done(function (resp) {\n if (_this2._unmounted) {\n return;\n }\n _this2.setState({ devices: resp.devices || [] });\n }, function (error) {\n if (_this2._unmounted) {\n return;\n }\n var errtxt = void 0;\n if (error.httpStatus == 404) {\n // 404 probably means the HS doesn't yet support the API.\n errtxt = (0, _languageHandler._t)(\"Your home server does not support device management.\");\n } else {\n console.error(\"Error loading devices:\", error);\n errtxt = (0, _languageHandler._t)(\"Unable to load device list\");\n }\n _this2.setState({ deviceLoadError: errtxt });\n });\n }\n\n /**\n * compare two devices, sorting from most-recently-seen to least-recently-seen\n * (and then, for stability, by device id)\n */\n\n }, {\n key: '_deviceCompare',\n value: function _deviceCompare(a, b) {\n // return < 0 if a comes before b, > 0 if a comes after b.\n var lastSeenDelta = (b.last_seen_ts || 0) - (a.last_seen_ts || 0);\n\n if (lastSeenDelta !== 0) {\n return lastSeenDelta;\n }\n\n var idA = a.device_id;\n var idB = b.device_id;\n return idA < idB ? -1 : idA > idB ? 1 : 0;\n }\n }, {\n key: '_onDeviceSelectionToggled',\n value: function _onDeviceSelectionToggled(device) {\n if (this._unmounted) {\n return;\n }\n\n var deviceId = device.device_id;\n this.setState(function (state, props) {\n // Make a copy of the selected devices, then add or remove the device\n var selectedDevices = state.selectedDevices.slice();\n\n var i = selectedDevices.indexOf(deviceId);\n if (i === -1) {\n selectedDevices.push(deviceId);\n } else {\n selectedDevices.splice(i, 1);\n }\n\n return { selectedDevices: selectedDevices };\n });\n }\n }, {\n key: '_onDeleteClick',\n value: function _onDeleteClick() {\n var _this3 = this;\n\n this.setState({\n deleting: true\n });\n\n this._makeDeleteRequest(null).catch(function (error) {\n if (_this3._unmounted) {\n return;\n }\n if (error.httpStatus !== 401 || !error.data || !error.data.flows) {\n // doesn't look like an interactive-auth failure\n throw error;\n }\n\n // pop up an interactive auth dialog\n var InteractiveAuthDialog = _index2.default.getComponent(\"dialogs.InteractiveAuthDialog\");\n\n _Modal2.default.createTrackedDialog('Delete Device Dialog', '', InteractiveAuthDialog, {\n title: (0, _languageHandler._t)(\"Authentication\"),\n matrixClient: _MatrixClientPeg2.default.get(),\n authData: error.data,\n makeRequest: _this3._makeDeleteRequest.bind(_this3)\n });\n }).catch(function (e) {\n console.error(\"Error deleting devices\", e);\n if (_this3._unmounted) {\n return;\n }\n }).finally(function () {\n _this3.setState({\n deleting: false\n });\n });\n }\n }, {\n key: '_makeDeleteRequest',\n value: function _makeDeleteRequest(auth) {\n var _this4 = this;\n\n return _MatrixClientPeg2.default.get().deleteMultipleDevices(this.state.selectedDevices, auth).then(function () {\n // Remove the deleted devices from `devices`, reset selection to []\n _this4.setState({\n devices: _this4.state.devices.filter(function (d) {\n return !_this4.state.selectedDevices.includes(d.device_id);\n }),\n selectedDevices: []\n });\n });\n }\n }, {\n key: '_renderDevice',\n value: function _renderDevice(device) {\n var DevicesPanelEntry = _index2.default.getComponent('settings.DevicesPanelEntry');\n return _react2.default.createElement(DevicesPanelEntry, {\n key: device.device_id,\n device: device,\n selected: this.state.selectedDevices.includes(device.device_id),\n onDeviceToggled: this._onDeviceSelectionToggled\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var Spinner = _index2.default.getComponent(\"elements.Spinner\");\n var AccessibleButton = _index2.default.getComponent(\"elements.AccessibleButton\");\n\n if (this.state.deviceLoadError !== undefined) {\n var _classes = (0, _classnames2.default)(this.props.className, \"error\");\n return _react2.default.createElement(\n 'div',\n { className: _classes },\n this.state.deviceLoadError\n );\n }\n\n var devices = this.state.devices;\n if (devices === undefined) {\n // still loading\n var _classes2 = this.props.className;\n return _react2.default.createElement(Spinner, { className: _classes2 });\n }\n\n devices.sort(this._deviceCompare);\n\n var deleteButton = this.state.deleting ? _react2.default.createElement(Spinner, { w: 22, h: 22 }) : _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_textButton', onClick: this._onDeleteClick },\n (0, _languageHandler._t)(\"Delete %(count)s devices\", { count: this.state.selectedDevices.length })\n );\n\n var classes = (0, _classnames2.default)(this.props.className, \"mx_DevicesPanel\");\n return _react2.default.createElement(\n 'div',\n { className: classes },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_header' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceId' },\n (0, _languageHandler._t)(\"Device ID\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceName' },\n (0, _languageHandler._t)(\"Device Name\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceLastSeen' },\n (0, _languageHandler._t)(\"Last seen\")\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceButtons' },\n this.state.selectedDevices.length > 0 ? deleteButton : (0, _languageHandler._t)('Select devices')\n )\n ),\n devices.map(this._renderDevice)\n );\n }\n }]);\n return DevicesPanel;\n}(_react2.default.Component); /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nexports.default = DevicesPanel;\n\n\nDevicesPanel.displayName = 'MemberDeviceInfo';\nDevicesPanel.propTypes = {\n className: _propTypes2.default.string\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevicesPanel.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _DateUtils = require('../../../DateUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar DevicesPanelEntry = function (_React$Component) {\n (0, _inherits3.default)(DevicesPanelEntry, _React$Component);\n\n function DevicesPanelEntry(props, context) {\n (0, _classCallCheck3.default)(this, DevicesPanelEntry);\n\n var _this = (0, _possibleConstructorReturn3.default)(this, (DevicesPanelEntry.__proto__ || (0, _getPrototypeOf2.default)(DevicesPanelEntry)).call(this, props, context));\n\n _this._unmounted = false;\n _this.onDeviceToggled = _this.onDeviceToggled.bind(_this);\n _this._onDisplayNameChanged = _this._onDisplayNameChanged.bind(_this);\n return _this;\n }\n\n (0, _createClass3.default)(DevicesPanelEntry, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this._unmounted = true;\n }\n }, {\n key: '_onDisplayNameChanged',\n value: function _onDisplayNameChanged(value) {\n var device = this.props.device;\n return _MatrixClientPeg2.default.get().setDeviceDetails(device.device_id, {\n display_name: value\n }).catch(function (e) {\n console.error(\"Error setting device display name\", e);\n throw new Error((0, _languageHandler._t)(\"Failed to set display name\"));\n });\n }\n }, {\n key: 'onDeviceToggled',\n value: function onDeviceToggled() {\n this.props.onDeviceToggled(this.props.device);\n }\n }, {\n key: 'render',\n value: function render() {\n var EditableTextContainer = _index2.default.getComponent('elements.EditableTextContainer');\n\n var device = this.props.device;\n\n var lastSeen = \"\";\n if (device.last_seen_ts) {\n var lastSeenDate = (0, _DateUtils.formatDate)(new Date(device.last_seen_ts));\n lastSeen = device.last_seen_ip + \" @ \" + lastSeenDate.toLocaleString();\n }\n\n var myDeviceClass = '';\n if (device.device_id === _MatrixClientPeg2.default.get().getDeviceId()) {\n myDeviceClass = \" mx_DevicesPanel_myDevice\";\n }\n\n return _react2.default.createElement(\n 'div',\n { className: \"mx_DevicesPanel_device\" + myDeviceClass },\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceId' },\n device.device_id\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceName' },\n _react2.default.createElement(EditableTextContainer, { initialValue: device.display_name,\n onSubmit: this._onDisplayNameChanged,\n placeholder: device.device_id\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_lastSeen' },\n lastSeen\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_DevicesPanel_deviceButtons' },\n _react2.default.createElement('input', { type: 'checkbox', onClick: this.onDeviceToggled, checked: this.props.selected })\n )\n );\n }\n }]);\n return DevicesPanelEntry;\n}(_react2.default.Component);\n\nexports.default = DevicesPanelEntry;\n\n\nDevicesPanelEntry.propTypes = {\n device: _propTypes2.default.object.isRequired,\n onDeviceToggled: _propTypes2.default.func\n};\n\nDevicesPanelEntry.defaultProps = {\n onDeviceToggled: function onDeviceToggled() {}\n};\nmodule.exports = exports['default'];\n//# sourceMappingURL=DevicesPanelEntry.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _languageHandler = require(\"../../../languageHandler\");\n\nvar React = require(\"react\");\nvar Notifier = require(\"../../../Notifier\");\nvar dis = require(\"../../../dispatcher\");\n\n\nmodule.exports = React.createClass({\n displayName: 'EnableNotificationsButton',\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n dis.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n if (payload.action !== \"notifier_enabled\") {\n return;\n }\n this.forceUpdate();\n },\n\n enabled: function enabled() {\n return Notifier.isEnabled();\n },\n\n onClick: function onClick() {\n var self = this;\n if (!Notifier.supportsDesktopNotifications()) {\n return;\n }\n if (!Notifier.isEnabled()) {\n Notifier.setEnabled(true, function () {\n self.forceUpdate();\n });\n } else {\n Notifier.setEnabled(false);\n }\n this.forceUpdate();\n },\n\n render: function render() {\n if (this.enabled()) {\n return React.createElement(\n \"button\",\n { className: \"mx_EnableNotificationsButton\", onClick: this.onClick },\n (0, _languageHandler._t)(\"Disable Notifications\")\n );\n } else {\n return React.createElement(\n \"button\",\n { className: \"mx_EnableNotificationsButton\", onClick: this.onClick },\n (0, _languageHandler._t)(\"Enable Notifications\")\n );\n }\n }\n});\n//# sourceMappingURL=EnableNotificationsButton.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar React = require('react');\nvar sdk = require('../../../index');\nvar MatrixClientPeg = require('../../../MatrixClientPeg');\nvar dis = require('../../../dispatcher');\n\nmodule.exports = React.createClass({\n displayName: 'IntegrationsManager',\n\n propTypes: {\n src: React.PropTypes.string.isRequired, // the source of the integration manager being embedded\n onFinished: React.PropTypes.func.isRequired // callback when the lightbox is dismissed\n },\n\n // XXX: keyboard shortcuts for managing dialogs should be done by the modal\n // dialog base class somehow, surely...\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = dis.register(this.onAction);\n document.addEventListener(\"keydown\", this.onKeyDown);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n dis.unregister(this.dispatcherRef);\n document.removeEventListener(\"keydown\", this.onKeyDown);\n },\n\n onKeyDown: function onKeyDown(ev) {\n if (ev.keyCode == 27) {\n // escape\n ev.stopPropagation();\n ev.preventDefault();\n this.props.onFinished();\n }\n },\n\n onAction: function onAction(payload) {\n if (payload.action === 'close_scalar') {\n this.props.onFinished();\n }\n },\n\n render: function render() {\n return React.createElement('iframe', { src: this.props.src });\n }\n});\n//# sourceMappingURL=IntegrationsManager.js.map","'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _UserSettingsStore = require('../../../UserSettingsStore');\n\nvar _UserSettingsStore2 = _interopRequireDefault(_UserSettingsStore);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nvar _Modal = require('../../../Modal');\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nvar _notifications = require('../../../notifications');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// TODO: this \"view\" component still has far too much application logic in it,\n// which should be factored out to other files.\n\n// TODO: this component also does a lot of direct poking into this.state, which\n// is VERY NAUGHTY.\n\n\n/**\n * Rules that Vector used to set in order to override the actions of default rules.\n * These are used to port peoples existing overrides to match the current API.\n * These can be removed and forgotten once everyone has moved to the new client.\n */\nvar LEGACY_RULES = {\n \"im.vector.rule.contains_display_name\": \".m.rule.contains_display_name\",\n \"im.vector.rule.room_one_to_one\": \".m.rule.room_one_to_one\",\n \"im.vector.rule.room_message\": \".m.rule.message\",\n \"im.vector.rule.invite_for_me\": \".m.rule.invite_for_me\",\n \"im.vector.rule.call\": \".m.rule.call\",\n \"im.vector.rule.notices\": \".m.rule.suppress_notices\"\n}; /*\n Copyright 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction portLegacyActions(actions) {\n var decoded = _notifications.NotificationUtils.decodeActions(actions);\n if (decoded !== null) {\n return _notifications.NotificationUtils.encodeActions(decoded);\n } else {\n // We don't recognise one of the actions here, so we don't try to\n // canonicalise them.\n return actions;\n }\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'Notifications',\n\n phases: {\n LOADING: \"LOADING\", // The component is loading or sending data to the hs\n DISPLAY: \"DISPLAY\", // The component is ready and display data\n ERROR: \"ERROR\" // There was an error\n },\n\n propTypes: {\n // The array of threepids from the JS SDK (required for email notifications)\n threepids: _react2.default.PropTypes.array.isRequired,\n // The brand string set when creating an email pusher\n brand: _react2.default.PropTypes.string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n threepids: []\n };\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: this.phases.LOADING,\n masterPushRule: undefined, // The master rule ('.m.rule.master')\n vectorPushRules: [], // HS default push rules displayed in Vector UI\n vectorContentRules: { // Keyword push rules displayed in Vector UI\n vectorState: _notifications.PushRuleVectorState.ON,\n rules: []\n },\n externalPushRules: [], // Push rules (except content rule) that have been defined outside Vector UI\n externalContentRules: [] // Keyword push rules that have been defined outside Vector UI\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._refreshFromServer();\n },\n\n onEnableNotificationsChange: function onEnableNotificationsChange(event) {\n var self = this;\n this.setState({\n phase: this.phases.LOADING\n });\n\n _MatrixClientPeg2.default.get().setPushRuleEnabled('global', self.state.masterPushRule.kind, self.state.masterPushRule.rule_id, !event.target.checked).done(function () {\n self._refreshFromServer();\n });\n },\n\n onEnableDesktopNotificationsChange: function onEnableDesktopNotificationsChange(event) {\n var _this = this;\n\n _SettingsStore2.default.setValue(\"notificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this.forceUpdate();\n });\n },\n\n onEnableDesktopNotificationBodyChange: function onEnableDesktopNotificationBodyChange(event) {\n var _this2 = this;\n\n _SettingsStore2.default.setValue(\"notificationBodyEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this2.forceUpdate();\n });\n },\n\n onEnableAudioNotificationsChange: function onEnableAudioNotificationsChange(event) {\n var _this3 = this;\n\n _SettingsStore2.default.setValue(\"audioNotificationsEnabled\", null, _SettingsStore.SettingLevel.DEVICE, event.target.checked).finally(function () {\n _this3.forceUpdate();\n });\n },\n\n onEnableEmailNotificationsChange: function onEnableEmailNotificationsChange(address, event) {\n var _this4 = this;\n\n var emailPusherPromise = void 0;\n if (event.target.checked) {\n var data = {};\n data['brand'] = this.props.brand || 'Riot';\n emailPusherPromise = _UserSettingsStore2.default.addEmailPusher(address, data);\n } else {\n var emailPusher = _UserSettingsStore2.default.getEmailPusher(this.state.pushers, address);\n emailPusher.kind = null;\n emailPusherPromise = _MatrixClientPeg2.default.get().setPusher(emailPusher);\n }\n emailPusherPromise.done(function () {\n _this4._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n _Modal2.default.createTrackedDialog('Error saving email notification preferences', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Error saving email notification preferences'),\n description: (0, _languageHandler._t)('An error occurred whilst saving your email notification preferences.')\n });\n });\n },\n\n onNotifStateButtonClicked: function onNotifStateButtonClicked(event) {\n // FIXME: use .bind() rather than className metadata here surely\n var vectorRuleId = event.target.className.split(\"-\")[0];\n var newPushRuleVectorState = event.target.className.split(\"-\")[1];\n\n if (\"_keywords\" === vectorRuleId) {\n this._setKeywordsPushRuleVectorState(newPushRuleVectorState);\n } else {\n var rule = this.getRule(vectorRuleId);\n if (rule) {\n this._setPushRuleVectorState(rule, newPushRuleVectorState);\n }\n }\n },\n\n onKeywordsClicked: function onKeywordsClicked(event) {\n var self = this;\n\n // Compute the keywords list to display\n var keywords = [];\n for (var i in this.state.vectorContentRules.rules) {\n var rule = this.state.vectorContentRules.rules[i];\n keywords.push(rule.pattern);\n }\n if (keywords.length) {\n // As keeping the order of per-word push rules hs side is a bit tricky to code,\n // display the keywords in alphabetical order to the user\n keywords.sort();\n\n keywords = keywords.join(\", \");\n } else {\n keywords = \"\";\n }\n\n var TextInputDialog = _index2.default.getComponent(\"dialogs.TextInputDialog\");\n _Modal2.default.createTrackedDialog('Keywords Dialog', '', TextInputDialog, {\n title: (0, _languageHandler._t)('Keywords'),\n description: (0, _languageHandler._t)('Enter keywords separated by a comma:'),\n button: (0, _languageHandler._t)('OK'),\n value: keywords,\n onFinished: function onFinished(should_leave, newValue) {\n if (should_leave && newValue !== keywords) {\n var newKeywords = newValue.split(',');\n for (var _i in newKeywords) {\n newKeywords[_i] = newKeywords[_i].trim();\n }\n\n // Remove duplicates and empty\n newKeywords = newKeywords.reduce(function (array, keyword) {\n if (keyword !== \"\" && array.indexOf(keyword) < 0) {\n array.push(keyword);\n }\n return array;\n }, []);\n\n self._setKeywords(newKeywords);\n }\n }\n });\n },\n\n getRule: function getRule(vectorRuleId) {\n for (var i in this.state.vectorPushRules) {\n var rule = this.state.vectorPushRules[i];\n if (rule.vectorRuleId === vectorRuleId) {\n return rule;\n }\n }\n },\n\n _setPushRuleVectorState: function _setPushRuleVectorState(rule, newPushRuleVectorState) {\n if (rule && rule.vectorState !== newPushRuleVectorState) {\n this.setState({\n phase: this.phases.LOADING\n });\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n var deferreds = [];\n var ruleDefinition = _notifications.VectorPushRulesDefinitions[rule.vectorRuleId];\n\n if (rule.rule) {\n var actions = ruleDefinition.vectorStateToActions[newPushRuleVectorState];\n\n if (!actions) {\n // The new state corresponds to disabling the rule.\n deferreds.push(cli.setPushRuleEnabled('global', rule.rule.kind, rule.rule.rule_id, false));\n } else {\n // The new state corresponds to enabling the rule and setting specific actions\n deferreds.push(this._updatePushRuleActions(rule.rule, actions, true));\n }\n }\n\n _bluebird2.default.all(deferreds).done(function () {\n self._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to change settings: \" + error);\n _Modal2.default.createTrackedDialog('Failed to change settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to change settings'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n });\n }\n },\n\n _setKeywordsPushRuleVectorState: function _setKeywordsPushRuleVectorState(newPushRuleVectorState) {\n // Is there really a change?\n if (this.state.vectorContentRules.vectorState === newPushRuleVectorState || this.state.vectorContentRules.rules.length === 0) {\n return;\n }\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n\n this.setState({\n phase: this.phases.LOADING\n });\n\n // Update all rules in self.state.vectorContentRules\n var deferreds = [];\n for (var i in this.state.vectorContentRules.rules) {\n var rule = this.state.vectorContentRules.rules[i];\n\n var enabled = void 0,\n actions = void 0;\n switch (newPushRuleVectorState) {\n case _notifications.PushRuleVectorState.ON:\n if (rule.actions.length !== 1) {\n actions = _notifications.PushRuleVectorState.actionsFor(_notifications.PushRuleVectorState.ON);\n }\n\n if (this.state.vectorContentRules.vectorState === _notifications.PushRuleVectorState.OFF) {\n enabled = true;\n }\n break;\n\n case _notifications.PushRuleVectorState.LOUD:\n if (rule.actions.length !== 3) {\n actions = _notifications.PushRuleVectorState.actionsFor(_notifications.PushRuleVectorState.LOUD);\n }\n\n if (this.state.vectorContentRules.vectorState === _notifications.PushRuleVectorState.OFF) {\n enabled = true;\n }\n break;\n\n case _notifications.PushRuleVectorState.OFF:\n enabled = false;\n break;\n }\n\n if (actions) {\n // Note that the workaround in _updatePushRuleActions will automatically\n // enable the rule\n deferreds.push(this._updatePushRuleActions(rule, actions, enabled));\n } else if (enabled != undefined) {\n deferreds.push(cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled));\n }\n }\n\n _bluebird2.default.all(deferreds).done(function (resps) {\n self._refreshFromServer();\n }, function (error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Can't update user notification settings: \" + error);\n _Modal2.default.createTrackedDialog('Can\\'t update user notifcation settings', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Can\\'t update user notification settings'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n });\n },\n\n _setKeywords: function _setKeywords(newKeywords) {\n this.setState({\n phase: this.phases.LOADING\n });\n\n var self = this;\n var cli = _MatrixClientPeg2.default.get();\n var removeDeferreds = [];\n\n // Remove per-word push rules of keywords that are no more in the list\n var vectorContentRulesPatterns = [];\n for (var i in self.state.vectorContentRules.rules) {\n var rule = self.state.vectorContentRules.rules[i];\n\n vectorContentRulesPatterns.push(rule.pattern);\n\n if (newKeywords.indexOf(rule.pattern) < 0) {\n removeDeferreds.push(cli.deletePushRule('global', rule.kind, rule.rule_id));\n }\n }\n\n // If the keyword is part of `externalContentRules`, remove the rule\n // before recreating it in the right Vector path\n for (var _i2 in self.state.externalContentRules) {\n var _rule = self.state.externalContentRules[_i2];\n\n if (newKeywords.indexOf(_rule.pattern) >= 0) {\n removeDeferreds.push(cli.deletePushRule('global', _rule.kind, _rule.rule_id));\n }\n }\n\n var onError = function onError(error) {\n var ErrorDialog = _index2.default.getComponent(\"dialogs.ErrorDialog\");\n console.error(\"Failed to update keywords: \" + error);\n _Modal2.default.createTrackedDialog('Failed to update keywords', '', ErrorDialog, {\n title: (0, _languageHandler._t)('Failed to update keywords'),\n description: error && error.message ? error.message : (0, _languageHandler._t)('Operation failed'),\n onFinished: self._refreshFromServer\n });\n };\n\n // Then, add the new ones\n _bluebird2.default.all(removeDeferreds).done(function (resps) {\n var deferreds = [];\n\n var pushRuleVectorStateKind = self.state.vectorContentRules.vectorState;\n if (pushRuleVectorStateKind === _notifications.PushRuleVectorState.OFF) {\n // When the current global keywords rule is OFF, we need to look at\n // the flavor of rules in 'vectorContentRules' to apply the same actions\n // when creating the new rule.\n // Thus, this new rule will join the 'vectorContentRules' set.\n if (self.state.vectorContentRules.rules.length) {\n pushRuleVectorStateKind = _notifications.PushRuleVectorState.contentRuleVectorStateKind(self.state.vectorContentRules.rules[0]);\n } else {\n // ON is default\n pushRuleVectorStateKind = _notifications.PushRuleVectorState.ON;\n }\n }\n\n for (var _i3 in newKeywords) {\n var keyword = newKeywords[_i3];\n\n if (vectorContentRulesPatterns.indexOf(keyword) < 0) {\n if (self.state.vectorContentRules.vectorState !== _notifications.PushRuleVectorState.OFF) {\n deferreds.push(cli.addPushRule('global', 'content', keyword, {\n actions: _notifications.PushRuleVectorState.actionsFor(pushRuleVectorStateKind),\n pattern: keyword\n }));\n } else {\n deferreds.push(self._addDisabledPushRule('global', 'content', keyword, {\n actions: _notifications.PushRuleVectorState.actionsFor(pushRuleVectorStateKind),\n pattern: keyword\n }));\n }\n }\n }\n\n _bluebird2.default.all(deferreds).done(function (resps) {\n self._refreshFromServer();\n }, onError);\n }, onError);\n },\n\n // Create a push rule but disabled\n _addDisabledPushRule: function _addDisabledPushRule(scope, kind, ruleId, body) {\n var cli = _MatrixClientPeg2.default.get();\n return cli.addPushRule(scope, kind, ruleId, body).then(function () {\n return cli.setPushRuleEnabled(scope, kind, ruleId, false);\n });\n },\n\n // Check if any legacy im.vector rules need to be ported to the new API\n // for overriding the actions of default rules.\n _portRulesToNewAPI: function _portRulesToNewAPI(rulesets) {\n var self = this;\n var needsUpdate = [];\n var cli = _MatrixClientPeg2.default.get();\n\n for (var kind in rulesets.global) {\n var ruleset = rulesets.global[kind];\n for (var i = 0; i < ruleset.length; ++i) {\n var rule = ruleset[i];\n if (rule.rule_id in LEGACY_RULES) {\n console.log(\"Porting legacy rule\", rule);\n needsUpdate.push(function (kind, rule) {\n return cli.setPushRuleActions('global', kind, LEGACY_RULES[rule.rule_id], portLegacyActions(rule.actions)).then(function () {\n return cli.deletePushRule('global', kind, rule.rule_id);\n }).catch(function (e) {\n console.warn('Error when porting legacy rule: ' + e);\n });\n }(kind, rule));\n }\n }\n }\n\n if (needsUpdate.length > 0) {\n // If some of the rules need to be ported then wait for the porting\n // to happen and then fetch the rules again.\n return _bluebird2.default.all(needsUpdate).then(function () {\n return cli.getPushRules();\n });\n } else {\n // Otherwise return the rules that we already have.\n return rulesets;\n }\n },\n\n _refreshFromServer: function _refreshFromServer() {\n var self = this;\n var pushRulesPromise = _MatrixClientPeg2.default.get().getPushRules().then(self._portRulesToNewAPI).then(function (rulesets) {\n /// XXX seriously? wtf is this?\n _MatrixClientPeg2.default.get().pushRules = rulesets;\n\n // Get homeserver default rules and triage them by categories\n var rule_categories = {\n // The master rule (all notifications disabling)\n '.m.rule.master': 'master',\n\n // The default push rules displayed by Vector UI\n '.m.rule.contains_display_name': 'vector',\n '.m.rule.contains_user_name': 'vector',\n '.m.rule.room_one_to_one': 'vector',\n '.m.rule.message': 'vector',\n '.m.rule.invite_for_me': 'vector',\n //'.m.rule.member_event': 'vector',\n '.m.rule.call': 'vector',\n '.m.rule.suppress_notices': 'vector'\n\n // Others go to others\n };\n\n // HS default rules\n var defaultRules = { master: [], vector: {}, others: [] };\n\n for (var kind in rulesets.global) {\n for (var i = 0; i < (0, _keys2.default)(rulesets.global[kind]).length; ++i) {\n var r = rulesets.global[kind][i];\n var cat = rule_categories[r.rule_id];\n r.kind = kind;\n\n if (r.rule_id[0] === '.') {\n if (cat === 'vector') {\n defaultRules.vector[r.rule_id] = r;\n } else if (cat === 'master') {\n defaultRules.master.push(r);\n } else {\n defaultRules['others'].push(r);\n }\n }\n }\n }\n\n // Get the master rule if any defined by the hs\n if (defaultRules.master.length > 0) {\n self.state.masterPushRule = defaultRules.master[0];\n }\n\n // parse the keyword rules into our state\n var contentRules = _notifications.ContentRules.parseContentRules(rulesets);\n self.state.vectorContentRules = {\n vectorState: contentRules.vectorState,\n rules: contentRules.rules\n };\n self.state.externalContentRules = contentRules.externalRules;\n\n // Build the rules displayed in the Vector UI matrix table\n self.state.vectorPushRules = [];\n self.state.externalPushRules = [];\n\n var vectorRuleIds = ['.m.rule.contains_display_name', '.m.rule.contains_user_name', '_keywords', '.m.rule.room_one_to_one', '.m.rule.message', '.m.rule.invite_for_me',\n //'im.vector.rule.member_event',\n '.m.rule.call', '.m.rule.suppress_notices'];\n for (var _i4 in vectorRuleIds) {\n var vectorRuleId = vectorRuleIds[_i4];\n\n if (vectorRuleId === '_keywords') {\n // keywords needs a special handling\n // For Vector UI, this is a single global push rule but translated in Matrix,\n // it corresponds to all content push rules (stored in self.state.vectorContentRule)\n self.state.vectorPushRules.push({\n \"vectorRuleId\": \"_keywords\",\n \"description\": _react2.default.createElement(\n 'span',\n null,\n (0, _languageHandler._t)('Messages containing <span>keywords</span>', {}, { 'span': function span(sub) {\n return _react2.default.createElement(\n 'span',\n { className: 'mx_UserNotifSettings_keywords', onClick: self.onKeywordsClicked },\n sub\n );\n }\n })\n ),\n \"vectorState\": self.state.vectorContentRules.vectorState\n });\n } else {\n var ruleDefinition = _notifications.VectorPushRulesDefinitions[vectorRuleId];\n var rule = defaultRules.vector[vectorRuleId];\n\n var vectorState = ruleDefinition.ruleToVectorState(rule);\n\n //console.log(\"Refreshing vectorPushRules for \" + vectorRuleId +\", \"+ ruleDefinition.description +\", \" + rule +\", \" + vectorState);\n\n self.state.vectorPushRules.push({\n \"vectorRuleId\": vectorRuleId,\n \"description\": (0, _languageHandler._t)(ruleDefinition.description), // Text from VectorPushRulesDefinitions.js\n \"rule\": rule,\n \"vectorState\": vectorState\n });\n\n // if there was a rule which we couldn't parse, add it to the external list\n if (rule && !vectorState) {\n rule.description = ruleDefinition.description;\n self.state.externalPushRules.push(rule);\n }\n }\n }\n\n // Build the rules not managed by Vector UI\n var otherRulesDescriptions = {\n '.m.rule.message': (0, _languageHandler._t)('Notify for all other messages/rooms'),\n '.m.rule.fallback': (0, _languageHandler._t)('Notify me for anything else')\n };\n\n for (var _i5 in defaultRules.others) {\n var _rule2 = defaultRules.others[_i5];\n var ruleDescription = otherRulesDescriptions[_rule2.rule_id];\n\n // Show enabled default rules that was modified by the user\n if (ruleDescription && _rule2.enabled && !_rule2.default) {\n _rule2.description = ruleDescription;\n self.state.externalPushRules.push(_rule2);\n }\n }\n });\n\n var pushersPromise = _MatrixClientPeg2.default.get().getPushers().then(function (resp) {\n self.setState({ pushers: resp.pushers });\n });\n\n _bluebird2.default.all([pushRulesPromise, pushersPromise]).then(function () {\n self.setState({\n phase: self.phases.DISPLAY\n });\n }, function (error) {\n console.error(error);\n self.setState({\n phase: self.phases.ERROR\n });\n }).finally(function () {\n // actually explicitly update our state having been deep-manipulating it\n self.setState({\n masterPushRule: self.state.masterPushRule,\n vectorContentRules: self.state.vectorContentRules,\n vectorPushRules: self.state.vectorPushRules,\n externalContentRules: self.state.externalContentRules,\n externalPushRules: self.state.externalPushRules\n });\n }).done();\n },\n\n _updatePushRuleActions: function _updatePushRuleActions(rule, actions, enabled) {\n var cli = _MatrixClientPeg2.default.get();\n\n return cli.setPushRuleActions('global', rule.kind, rule.rule_id, actions).then(function () {\n // Then, if requested, enabled or disabled the rule\n if (undefined != enabled) {\n return cli.setPushRuleEnabled('global', rule.kind, rule.rule_id, enabled);\n }\n });\n },\n\n renderNotifRulesTableRow: function renderNotifRulesTableRow(title, className, pushRuleVectorState) {\n return _react2.default.createElement(\n 'tr',\n { key: className },\n _react2.default.createElement(\n 'th',\n null,\n title\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.OFF,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.OFF,\n onChange: this.onNotifStateButtonClicked })\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.ON,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.ON,\n onChange: this.onNotifStateButtonClicked })\n ),\n _react2.default.createElement(\n 'th',\n null,\n _react2.default.createElement('input', { className: className + \"-\" + _notifications.PushRuleVectorState.LOUD,\n type: 'radio',\n checked: pushRuleVectorState === _notifications.PushRuleVectorState.LOUD,\n onChange: this.onNotifStateButtonClicked })\n )\n );\n },\n\n renderNotifRulesTableRows: function renderNotifRulesTableRows() {\n var rows = [];\n for (var i in this.state.vectorPushRules) {\n var rule = this.state.vectorPushRules[i];\n //console.log(\"rendering: \" + rule.description + \", \" + rule.vectorRuleId + \", \" + rule.vectorState);\n rows.push(this.renderNotifRulesTableRow(rule.description, rule.vectorRuleId, rule.vectorState));\n }\n return rows;\n },\n\n emailNotificationsRow: function emailNotificationsRow(address, label) {\n return _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableEmailNotifications_{address}',\n ref: 'enableEmailNotifications_{address}',\n type: 'checkbox',\n checked: _UserSettingsStore2.default.hasEmailPusher(this.state.pushers, address),\n onChange: this.onEnableEmailNotificationsChange.bind(this, address)\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableEmailNotifications_{address}' },\n label\n )\n )\n );\n },\n\n render: function render() {\n var self = this;\n\n var spinner = void 0;\n if (this.state.phase === this.phases.LOADING) {\n var Loader = _index2.default.getComponent(\"elements.Spinner\");\n spinner = _react2.default.createElement(Loader, null);\n }\n\n var masterPushRuleDiv = void 0;\n if (this.state.masterPushRule) {\n masterPushRuleDiv = _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableNotifications',\n ref: 'enableNotifications',\n type: 'checkbox',\n checked: !this.state.masterPushRule.enabled,\n onChange: this.onEnableNotificationsChange\n })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableNotifications' },\n (0, _languageHandler._t)('Enable notifications for this account')\n )\n )\n );\n }\n\n // When enabled, the master rule inhibits all existing rules\n // So do not show all notification settings\n if (this.state.masterPushRule && this.state.masterPushRule.enabled) {\n return _react2.default.createElement(\n 'div',\n null,\n masterPushRuleDiv,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_notifTable' },\n (0, _languageHandler._t)('All notifications are currently disabled for all targets.'),\n '.'\n )\n );\n }\n\n var emailThreepids = this.props.threepids.filter(function (tp) {\n return tp.medium === \"email\";\n });\n var emailNotificationsRow = void 0;\n if (emailThreepids.length === 0) {\n emailNotificationsRow = _react2.default.createElement(\n 'div',\n null,\n (0, _languageHandler._t)('Add an email address above to configure email notifications')\n );\n } else {\n // This only supports the first email address in your profile for now\n emailNotificationsRow = this.emailNotificationsRow(emailThreepids[0].address, (0, _languageHandler._t)('Enable email notifications') + ' (' + emailThreepids[0].address + ')');\n }\n\n // Build external push rules\n var externalRules = [];\n for (var i in this.state.externalPushRules) {\n var rule = this.state.externalPushRules[i];\n externalRules.push(_react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)(rule.description)\n ));\n }\n\n // Show keywords not displayed by the vector UI as a single external push rule\n var externalKeywords = [];\n for (var _i6 in this.state.externalContentRules) {\n var _rule3 = this.state.externalContentRules[_i6];\n externalKeywords.push(_rule3.pattern);\n }\n if (externalKeywords.length) {\n externalKeywords = externalKeywords.join(\", \");\n externalRules.push(_react2.default.createElement(\n 'li',\n null,\n (0, _languageHandler._t)('Notifications on the following keywords follow rules which can’t be displayed here:'),\n ' ',\n externalKeywords\n ));\n }\n\n var devicesSection = void 0;\n if (this.state.pushers === undefined) {\n devicesSection = _react2.default.createElement(\n 'div',\n { className: 'error' },\n (0, _languageHandler._t)('Unable to fetch notification target list')\n );\n } else if (this.state.pushers.length == 0) {\n devicesSection = null;\n } else {\n // TODO: It would be great to be able to delete pushers from here too,\n // and this wouldn't be hard to add.\n var rows = [];\n for (var _i7 = 0; _i7 < this.state.pushers.length; ++_i7) {\n rows.push(_react2.default.createElement(\n 'tr',\n { key: _i7 },\n _react2.default.createElement(\n 'td',\n null,\n this.state.pushers[_i7].app_display_name\n ),\n _react2.default.createElement(\n 'td',\n null,\n this.state.pushers[_i7].device_display_name\n )\n ));\n }\n devicesSection = _react2.default.createElement(\n 'table',\n { className: 'mx_UserSettings_devicesTable' },\n _react2.default.createElement(\n 'tbody',\n null,\n rows\n )\n );\n }\n if (devicesSection) {\n devicesSection = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Notification targets')\n ),\n devicesSection\n );\n }\n\n var advancedSettings = void 0;\n if (externalRules.length) {\n advancedSettings = _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n 'h3',\n null,\n (0, _languageHandler._t)('Advanced notification settings')\n ),\n (0, _languageHandler._t)('There are advanced notifications which are not shown here'),\n '.',\n _react2.default.createElement('br', null),\n (0, _languageHandler._t)('You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply'),\n '.',\n _react2.default.createElement(\n 'ul',\n null,\n externalRules\n )\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n masterPushRuleDiv,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserSettings_notifTable' },\n spinner,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopNotifications',\n ref: 'enableDesktopNotifications',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"notificationsEnabled\"),\n onChange: this.onEnableDesktopNotificationsChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopNotifications' },\n (0, _languageHandler._t)('Enable desktop notifications')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopNotificationBody',\n ref: 'enableDesktopNotificationBody',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"notificationBodyEnabled\"),\n onChange: this.onEnableDesktopNotificationBodyChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopNotificationBody' },\n (0, _languageHandler._t)('Show message in desktop notification')\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_tableRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_inputCell' },\n _react2.default.createElement('input', { id: 'enableDesktopAudioNotifications',\n ref: 'enableDesktopAudioNotifications',\n type: 'checkbox',\n checked: _SettingsStore2.default.getValue(\"audioNotificationsEnabled\"),\n onChange: this.onEnableAudioNotificationsChange })\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_labelCell' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'enableDesktopAudioNotifications' },\n (0, _languageHandler._t)('Enable audible notifications in web client')\n )\n )\n ),\n emailNotificationsRow,\n _react2.default.createElement(\n 'div',\n { className: 'mx_UserNotifSettings_pushRulesTableWrapper' },\n _react2.default.createElement(\n 'table',\n { className: 'mx_UserNotifSettings_pushRulesTable' },\n _react2.default.createElement(\n 'thead',\n null,\n _react2.default.createElement(\n 'tr',\n null,\n _react2.default.createElement('th', { width: '55%' }),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('Off')\n ),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('On')\n ),\n _react2.default.createElement(\n 'th',\n { width: '15%' },\n (0, _languageHandler._t)('Noisy')\n )\n )\n ),\n _react2.default.createElement(\n 'tbody',\n null,\n this.renderNotifRulesTableRows()\n )\n )\n ),\n advancedSettings,\n devicesSection\n )\n );\n }\n});\n//# sourceMappingURL=Notifications.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nmodule.exports = {\n NotificationUtils: require('./NotificationUtils'),\n PushRuleVectorState: require('./PushRuleVectorState'),\n VectorPushRulesDefinitions: require('./VectorPushRulesDefinitions'),\n ContentRules: require('./ContentRules')\n};\n//# sourceMappingURL=index.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar StandardActions = require('./StandardActions');\nvar PushRuleVectorState = require('./PushRuleVectorState');\n\nvar VectorPushRuleDefinition = function () {\n function VectorPushRuleDefinition(opts) {\n (0, _classCallCheck3.default)(this, VectorPushRuleDefinition);\n\n this.kind = opts.kind;\n this.description = opts.description;\n this.vectorStateToActions = opts.vectorStateToActions;\n }\n\n // Translate the rule actions and its enabled value into vector state\n\n\n (0, _createClass3.default)(VectorPushRuleDefinition, [{\n key: 'ruleToVectorState',\n value: function ruleToVectorState(rule) {\n var enabled = false;\n var actions = null;\n if (rule) {\n enabled = rule.enabled;\n actions = rule.actions;\n }\n\n for (var stateKey in PushRuleVectorState.states) {\n var state = PushRuleVectorState.states[stateKey];\n var vectorStateToActions = this.vectorStateToActions[state];\n\n if (!vectorStateToActions) {\n // No defined actions means that this vector state expects a disabled (or absent) rule\n if (!enabled) {\n return state;\n }\n } else {\n // The actions must match to the ones expected by vector state\n if (enabled && (0, _stringify2.default)(rule.actions) === (0, _stringify2.default)(vectorStateToActions)) {\n return state;\n }\n }\n }\n\n console.error(\"Cannot translate rule actions into Vector rule state. Rule: \" + (0, _stringify2.default)(rule));\n return undefined;\n }\n }]);\n return VectorPushRuleDefinition;\n}();\n\n/**\n * The descriptions of rules managed by the Vector UI.\n */\n\n\nmodule.exports = {\n // Messages containing user's display name\n \".m.rule.contains_display_name\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages containing my display name\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: { // The actions for each vector state, or null to disable the rule.\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Messages containing user's username (localpart/MXID)\n \".m.rule.contains_user_name\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages containing my user name\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: { // The actions for each vector state, or null to disable the rule.\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_HIGHLIGHT_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Messages just sent to the user in a 1:1 room\n \".m.rule.room_one_to_one\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Messages in one-to-one chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Messages just sent to a group chat room\n // 1:1 room messages are catched by the .m.rule.room_one_to_one rule if any defined\n // By opposition, all other room messages are from group chat rooms.\n \".m.rule.message\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Messages in group chats\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n }),\n\n // Invitation for the user\n \".m.rule.invite_for_me\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"When I'm invited to a room\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Incoming call\n \".m.rule.call\": new VectorPushRuleDefinition({\n kind: \"underride\",\n description: (0, _languageHandler._td)(\"Call invitation\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n on: StandardActions.ACTION_NOTIFY,\n loud: StandardActions.ACTION_NOTIFY_RING_SOUND,\n off: StandardActions.ACTION_DISABLED\n }\n }),\n\n // Notifications from bots\n \".m.rule.suppress_notices\": new VectorPushRuleDefinition({\n kind: \"override\",\n description: (0, _languageHandler._td)(\"Messages sent by bot\"), // passed through _t() translation in src/components/views/settings/Notifications.js\n vectorStateToActions: {\n // .m.rule.suppress_notices is a \"negative\" rule, we have to invert its enabled value for vector UI\n on: StandardActions.ACTION_DISABLED,\n loud: StandardActions.ACTION_NOTIFY_DEFAULT_SOUND,\n off: StandardActions.ACTION_DONT_NOTIFY\n }\n })\n};\n//# sourceMappingURL=VectorPushRulesDefinitions.js.map","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _keys = require('babel-runtime/core-js/object/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PushRuleVectorState = require('./PushRuleVectorState');\n\nmodule.exports = {\n /**\n * Extract the keyword rules from a list of rules, and parse them\n * into a form which is useful for Vector's UI.\n *\n * Returns an object containing:\n * rules: the primary list of keyword rules\n * vectorState: a PushRuleVectorState indicating whether those rules are\n * OFF/ON/LOUD\n * externalRules: a list of other keyword rules, with states other than\n * vectorState\n */\n parseContentRules: function parseContentRules(rulesets) {\n // first categorise the keyword rules in terms of their actions\n var contentRules = this._categoriseContentRules(rulesets);\n\n // Decide which content rules to display in Vector UI.\n // Vector displays a single global rule for a list of keywords\n // whereas Matrix has a push rule per keyword.\n // Vector can set the unique rule in ON, LOUD or OFF state.\n // Matrix has enabled/disabled plus a combination of (highlight, sound) tweaks.\n\n // The code below determines which set of user's content push rules can be\n // displayed by the vector UI.\n // Push rules that does not fit, ie defined by another Matrix client, ends\n // in externalRules.\n // There is priority in the determination of which set will be the displayed one.\n // The set with rules that have LOUD tweaks is the first choice. Then, the ones\n // with ON tweaks (no tweaks).\n\n if (contentRules.loud.length) {\n return {\n vectorState: PushRuleVectorState.LOUD,\n rules: contentRules.loud,\n externalRules: [].concat(contentRules.loud_but_disabled, contentRules.on, contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.loud_but_disabled.length) {\n return {\n vectorState: PushRuleVectorState.OFF,\n rules: contentRules.loud_but_disabled,\n externalRules: [].concat(contentRules.on, contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.on.length) {\n return {\n vectorState: PushRuleVectorState.ON,\n rules: contentRules.on,\n externalRules: [].concat(contentRules.on_but_disabled, contentRules.other)\n };\n } else if (contentRules.on_but_disabled.length) {\n return {\n vectorState: PushRuleVectorState.OFF,\n rules: contentRules.on_but_disabled,\n externalRules: contentRules.other\n };\n } else {\n return {\n vectorState: PushRuleVectorState.ON,\n rules: [],\n externalRules: contentRules.other\n };\n }\n },\n\n _categoriseContentRules: function _categoriseContentRules(rulesets) {\n var contentRules = { on: [], on_but_disabled: [], loud: [], loud_but_disabled: [], other: [] };\n for (var kind in rulesets.global) {\n for (var i = 0; i < (0, _keys2.default)(rulesets.global[kind]).length; ++i) {\n var r = rulesets.global[kind][i];\n\n // check it's not a default rule\n if (r.rule_id[0] === '.' || kind !== 'content') {\n continue;\n }\n\n r.kind = kind; // is this needed? not sure\n\n switch (PushRuleVectorState.contentRuleVectorStateKind(r)) {\n case PushRuleVectorState.ON:\n if (r.enabled) {\n contentRules.on.push(r);\n } else {\n contentRules.on_but_disabled.push(r);\n }\n break;\n case PushRuleVectorState.LOUD:\n if (r.enabled) {\n contentRules.loud.push(r);\n } else {\n contentRules.loud_but_disabled.push(r);\n }\n break;\n default:\n contentRules.other.push(r);\n break;\n }\n }\n }\n return contentRules;\n }\n};\n//# sourceMappingURL=ContentRules.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _RoomViewStore = require('../../../stores/RoomViewStore');\n\nvar _RoomViewStore2 = _interopRequireDefault(_RoomViewStore);\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017, 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CallPreview',\n\n propTypes: {\n // A Conference Handler implementation\n // Must have a function signature:\n // getConferenceCallForRoom(roomId: string): MatrixCall\n ConferenceHandler: _propTypes2.default.object\n },\n\n getInitialState: function getInitialState() {\n return {\n roomId: _RoomViewStore2.default.getRoomId(),\n activeCall: _CallHandler2.default.getAnyActiveCall()\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._roomStoreToken = _RoomViewStore2.default.addListener(this._onRoomViewStoreUpdate);\n this.dispatcherRef = _dispatcher2.default.register(this._onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n if (this._roomStoreToken) {\n this._roomStoreToken.remove();\n }\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n _onRoomViewStoreUpdate: function _onRoomViewStoreUpdate(payload) {\n if (_RoomViewStore2.default.getRoomId() === this.state.roomId) return;\n this.setState({\n roomId: _RoomViewStore2.default.getRoomId()\n });\n },\n\n _onAction: function _onAction(payload) {\n switch (payload.action) {\n // listen for call state changes to prod the render method, which\n // may hide the global CallView if the call it is tracking is dead\n case 'call_state':\n this.setState({\n activeCall: _CallHandler2.default.getAnyActiveCall()\n });\n break;\n }\n },\n\n _onCallViewClick: function _onCallViewClick() {\n var call = _CallHandler2.default.getAnyActiveCall();\n if (call) {\n _dispatcher2.default.dispatch({\n action: 'view_room',\n room_id: call.groupRoomId || call.roomId\n });\n }\n },\n\n render: function render() {\n var callForRoom = _CallHandler2.default.getCallForRoom(this.state.roomId);\n var showCall = this.state.activeCall && this.state.activeCall.call_state === 'connected' && !callForRoom;\n\n if (showCall) {\n var CallView = _index2.default.getComponent('voip.CallView');\n return _react2.default.createElement(CallView, {\n className: 'mx_LeftPanel_callView', showVoice: true, onClick: this._onCallViewClick,\n ConferenceHandler: this.props.ConferenceHandler\n });\n }\n var PersistentApp = _index2.default.getComponent('elements.PersistentApp');\n return _react2.default.createElement(PersistentApp, null);\n }\n});\n//# sourceMappingURL=CallPreview.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _CallHandler = require('../../../CallHandler');\n\nvar _CallHandler2 = _interopRequireDefault(_CallHandler);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'CallView',\n\n propTypes: {\n // js-sdk room object. If set, we will only show calls for the given\n // room; if not, we will show any active call.\n room: _propTypes2.default.object,\n\n // A Conference Handler implementation\n // Must have a function signature:\n // getConferenceCallForRoom(roomId: string): MatrixCall\n ConferenceHandler: _propTypes2.default.object,\n\n // maxHeight style attribute for the video panel\n maxVideoHeight: _propTypes2.default.number,\n\n // a callback which is called when the user clicks on the video div\n onClick: _propTypes2.default.func,\n\n // a callback which is called when the content in the callview changes\n // in a way that is likely to cause a resize.\n onResize: _propTypes2.default.func,\n\n // render ongoing audio call details - useful when in LeftPanel\n showVoice: _propTypes2.default.bool\n },\n\n getInitialState: function getInitialState() {\n return {\n // the call this view is displaying (if any)\n call: null\n };\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n this.showCall();\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n onAction: function onAction(payload) {\n // don't filter out payloads for room IDs other than props.room because\n // we may be interested in the conf 1:1 room\n if (payload.action !== 'call_state') {\n return;\n }\n this.showCall();\n },\n\n showCall: function showCall() {\n var call = void 0;\n\n if (this.props.room) {\n var roomId = this.props.room.roomId;\n call = _CallHandler2.default.getCallForRoom(roomId) || (this.props.ConferenceHandler ? this.props.ConferenceHandler.getConferenceCallForRoom(roomId) : null);\n\n if (this.call) {\n this.setState({ call: call });\n }\n } else {\n call = _CallHandler2.default.getAnyActiveCall();\n this.setState({ call: call });\n }\n\n if (call) {\n call.setLocalVideoElement(this.getVideoView().getLocalVideoElement());\n call.setRemoteVideoElement(this.getVideoView().getRemoteVideoElement());\n // always use a separate element for audio stream playback.\n // this is to let us move CallView around the DOM without interrupting remote audio\n // during playback, by having the audio rendered by a top-level <audio/> element.\n // rather than being rendered by the main remoteVideo <video/> element.\n call.setRemoteAudioElement(this.getVideoView().getRemoteAudioElement());\n }\n if (call && call.type === \"video\" && call.call_state !== \"ended\" && call.call_state !== \"ringing\") {\n // if this call is a conf call, don't display local video as the\n // conference will have us in it\n this.getVideoView().getLocalVideoElement().style.display = call.confUserId ? \"none\" : \"block\";\n this.getVideoView().getRemoteVideoElement().style.display = \"block\";\n } else {\n this.getVideoView().getLocalVideoElement().style.display = \"none\";\n this.getVideoView().getRemoteVideoElement().style.display = \"none\";\n _dispatcher2.default.dispatch({ action: 'video_fullscreen', fullscreen: false });\n }\n\n if (this.props.onResize) {\n this.props.onResize();\n }\n },\n\n getVideoView: function getVideoView() {\n return this.refs.video;\n },\n\n render: function render() {\n var VideoView = _index2.default.getComponent('voip.VideoView');\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n\n var voice = void 0;\n if (this.state.call && this.state.call.type === \"voice\" && this.props.showVoice) {\n var callRoom = _MatrixClientPeg2.default.get().getRoom(this.state.call.roomId);\n voice = _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_CallView_voice', onClick: this.props.onClick },\n (0, _languageHandler._t)(\"Active call (%(roomName)s)\", { roomName: callRoom.name })\n );\n }\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(VideoView, { ref: 'video', onClick: this.props.onClick,\n onResize: this.props.onResize,\n maxHeight: this.props.maxVideoHeight\n }),\n voice\n );\n }\n}); /*\n Copyright 2015, 2016 OpenMarket Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n//# sourceMappingURL=CallView.js.map","'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _MatrixClientPeg = require('../../../MatrixClientPeg');\n\nvar _MatrixClientPeg2 = _interopRequireDefault(_MatrixClientPeg);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2015, 2016 OpenMarket Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nmodule.exports = _react2.default.createClass({\n displayName: 'IncomingCallBox',\n\n propTypes: {\n incomingCall: _propTypes2.default.object\n },\n\n onAnswerClick: function onAnswerClick(e) {\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'answer',\n room_id: this.props.incomingCall.roomId\n });\n },\n\n onRejectClick: function onRejectClick(e) {\n e.stopPropagation();\n _dispatcher2.default.dispatch({\n action: 'hangup',\n room_id: this.props.incomingCall.roomId\n });\n },\n\n render: function render() {\n var room = null;\n if (this.props.incomingCall) {\n room = _MatrixClientPeg2.default.get().getRoom(this.props.incomingCall.roomId);\n }\n\n var caller = room ? room.name : (0, _languageHandler._t)(\"unknown caller\");\n\n var incomingCallText = null;\n if (this.props.incomingCall) {\n if (this.props.incomingCall.type === \"voice\") {\n incomingCallText = (0, _languageHandler._t)(\"Incoming voice call from %(name)s\", { name: caller });\n } else if (this.props.incomingCall.type === \"video\") {\n incomingCallText = (0, _languageHandler._t)(\"Incoming video call from %(name)s\", { name: caller });\n } else {\n incomingCallText = (0, _languageHandler._t)(\"Incoming call from %(name)s\", { name: caller });\n }\n }\n\n var AccessibleButton = _index2.default.getComponent('elements.AccessibleButton');\n return _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox', id: 'incomingCallBox' },\n _react2.default.createElement('img', { className: 'mx_IncomingCallBox_chevron', src: 'img/chevron-left.png', width: '9', height: '16' }),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_title' },\n incomingCallText\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons_cell' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_IncomingCallBox_buttons_decline', onClick: this.onRejectClick },\n (0, _languageHandler._t)(\"Decline\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_IncomingCallBox_buttons_cell' },\n _react2.default.createElement(\n AccessibleButton,\n { className: 'mx_IncomingCallBox_buttons_accept', onClick: this.onAnswerClick },\n (0, _languageHandler._t)(\"Accept\")\n )\n )\n )\n );\n }\n});\n//# sourceMappingURL=IncomingCallBox.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _react2.default.createClass({\n displayName: 'VideoFeed',\n\n propTypes: {\n // maxHeight style attribute for the video element\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the video element is resized\n // due to a change in video metadata\n onResize: _propTypes2.default.func\n },\n\n componentDidMount: function componentDidMount() {\n this.refs.vid.addEventListener('resize', this.onResize);\n },\n componentWillUnmount: function componentWillUnmount() {\n this.refs.vid.removeEventListener('resize', this.onResize);\n },\n\n\n onResize: function onResize(e) {\n if (this.props.onResize) {\n this.props.onResize(e);\n }\n },\n\n render: function render() {\n return _react2.default.createElement('video', { ref: 'vid', style: { maxHeight: this.props.maxHeight } });\n }\n});\n//# sourceMappingURL=VideoFeed.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n'use strict';\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _dispatcher = require('../../../dispatcher');\n\nvar _dispatcher2 = _interopRequireDefault(_dispatcher);\n\nvar _SettingsStore = require('../../../settings/SettingsStore');\n\nvar _SettingsStore2 = _interopRequireDefault(_SettingsStore);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getFullScreenElement() {\n return document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || document.msFullscreenElement;\n}\n\nmodule.exports = _react2.default.createClass({\n displayName: 'VideoView',\n\n propTypes: {\n // maxHeight style attribute for the video element\n maxHeight: _propTypes2.default.number,\n\n // a callback which is called when the user clicks on the video div\n onClick: _propTypes2.default.func,\n\n // a callback which is called when the video element is resized due to\n // a change in video metadata\n onResize: _propTypes2.default.func\n },\n\n componentDidMount: function componentDidMount() {\n this.dispatcherRef = _dispatcher2.default.register(this.onAction);\n },\n\n componentWillUnmount: function componentWillUnmount() {\n _dispatcher2.default.unregister(this.dispatcherRef);\n },\n\n getRemoteVideoElement: function getRemoteVideoElement() {\n return _reactDom2.default.findDOMNode(this.refs.remote);\n },\n\n getRemoteAudioElement: function getRemoteAudioElement() {\n // this needs to be somewhere at the top of the DOM which\n // always exists to avoid audio interruptions.\n // Might as well just use DOM.\n var remoteAudioElement = document.getElementById(\"remoteAudio\");\n if (!remoteAudioElement) {\n console.error(\"Failed to find remoteAudio element - cannot play audio!\" + \"You need to add an <audio/> to the DOM.\");\n }\n return remoteAudioElement;\n },\n\n getLocalVideoElement: function getLocalVideoElement() {\n return _reactDom2.default.findDOMNode(this.refs.local);\n },\n\n setContainer: function setContainer(c) {\n this.container = c;\n },\n\n onAction: function onAction(payload) {\n switch (payload.action) {\n case 'video_fullscreen':\n {\n if (!this.container) {\n return;\n }\n var element = this.container;\n if (payload.fullscreen) {\n var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen;\n requestMethod.call(element);\n } else if (getFullScreenElement()) {\n var exitMethod = document.exitFullscreen || document.mozCancelFullScreen || document.webkitExitFullscreen || document.msExitFullscreen;\n if (exitMethod) {\n exitMethod.call(document);\n }\n }\n break;\n }\n }\n },\n\n render: function render() {\n var VideoFeed = _index2.default.getComponent('voip.VideoFeed');\n\n // if we're fullscreen, we don't want to set a maxHeight on the video element.\n var maxVideoHeight = getFullScreenElement() ? null : this.props.maxHeight;\n var localVideoFeedClasses = (0, _classnames2.default)(\"mx_VideoView_localVideoFeed\", { \"mx_VideoView_localVideoFeed_flipped\": _SettingsStore2.default.getValue('VideoView.flipVideoHorizontally')\n });\n return _react2.default.createElement(\n 'div',\n { className: 'mx_VideoView', ref: this.setContainer, onClick: this.props.onClick },\n _react2.default.createElement(\n 'div',\n { className: 'mx_VideoView_remoteVideoFeed' },\n _react2.default.createElement(VideoFeed, { ref: 'remote', onResize: this.props.onResize,\n maxHeight: maxVideoHeight })\n ),\n _react2.default.createElement(\n 'div',\n { className: localVideoFeedClasses },\n _react2.default.createElement(VideoFeed, { ref: 'local' })\n )\n );\n }\n});\n//# sourceMappingURL=VideoView.js.map","import { Block, Change, Data, Document, History, Inline, Leaf, Mark, Node, Range, Schema, Stack, Value, Text } from 'slate';\n\n/**\n * Create a prop type checker for Slate objects with `name` and `validate`.\n *\n * @param {String} name\n * @param {Function} validate\n * @return {Function}\n */\n\nfunction create(name, validate) {\n function check(isRequired, props, propName, componentName, location) {\n var value = props[propName];\n if (value == null && !isRequired) return null;\n if (value == null && isRequired) return new Error('The ' + location + ' `' + propName + '` is marked as required in `' + componentName + '`, but it was not supplied.');\n if (validate(value)) return null;\n return new Error('Invalid ' + location + ' `' + propName + '` supplied to `' + componentName + '`, expected a Slate `' + name + '` but received: ' + value);\n }\n\n function propType() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return check.apply(undefined, [false].concat(args));\n }\n\n propType.isRequired = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return check.apply(undefined, [true].concat(args));\n };\n\n return propType;\n}\n\n/**\n * Prop type checkers.\n *\n * @type {Object}\n */\n\nvar Types = {\n block: create('Block', function (v) {\n return Block.isBlock(v);\n }),\n blocks: create('List<Block>', function (v) {\n return Block.isBlockList(v);\n }),\n change: create('Change', function (v) {\n return Change.isChange(v);\n }),\n data: create('Data', function (v) {\n return Data.isData(v);\n }),\n document: create('Document', function (v) {\n return Document.isDocument(v);\n }),\n history: create('History', function (v) {\n return History.isHistory(v);\n }),\n inline: create('Inline', function (v) {\n return Inline.isInline(v);\n }),\n inlines: create('Inline', function (v) {\n return Inline.isInlineList(v);\n }),\n leaf: create('Leaf', function (v) {\n return Leaf.isLeaf(v);\n }),\n leaves: create('List<Leaf>', function (v) {\n return Leaf.isLeafList(v);\n }),\n mark: create('Mark', function (v) {\n return Mark.isMark(v);\n }),\n marks: create('Set<Mark>', function (v) {\n return Mark.isMarkSet(v);\n }),\n node: create('Node', function (v) {\n return Node.isNode(v);\n }),\n nodes: create('List<Node>', function (v) {\n return Node.isNodeList(v);\n }),\n range: create('Range', function (v) {\n return Range.isRange(v);\n }),\n ranges: create('List<Range>', function (v) {\n return Range.isRangeList(v);\n }),\n schema: create('Schema', function (v) {\n return Schema.isSchema(v);\n }),\n stack: create('Stack', function (v) {\n return Stack.isStack(v);\n }),\n value: create('Value', function (v) {\n return Value.isValue(v);\n }),\n text: create('Text', function (v) {\n return Text.isText(v);\n }),\n texts: create('List<Text>', function (v) {\n return Text.isTextList(v);\n })\n\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n\nexport default Types;\n//# sourceMappingURL=slate-prop-types.es.js.map\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexport var isBrowser = (typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\" && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) === 'object' && document.nodeType === 9;\n\nexport default isBrowser;\n","import isBrowser from 'is-in-browser';\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n/**\n * Browser matching rules.\n *\n * @type {Array}\n */\n\nvar BROWSER_RULES = [['edge', /Edge\\/([0-9\\._]+)/], ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)$/], ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+)\\).*Gecko$/], ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/], ['ie', /MSIE\\s(7\\.0)/], ['android', /Android\\s([0-9\\.]+)/], ['safari', /Version\\/([0-9\\._]+).*Safari/]];\n\nvar browser = void 0;\n\nif (isBrowser) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = BROWSER_RULES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = slicedToArray(_ref, 2);\n\n var name = _ref2[0];\n var regexp = _ref2[1];\n\n if (regexp.test(window.navigator.userAgent)) {\n browser = name;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n\n/**\n * Operating system matching rules.\n *\n * @type {Array}\n */\n\nvar OS_RULES = [['ios', /os ([\\.\\_\\d]+) like mac os/i], // must be before the macos rule\n['macos', /mac os x/i], ['android', /android/i], ['firefoxos', /mozilla\\/[a-z\\.\\_\\d]+ \\((?:mobile)|(?:tablet)/i], ['windows', /windows\\s*(?:nt)?\\s*([\\.\\_\\d]+)/i]];\n\nvar os = void 0;\n\nif (isBrowser) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = OS_RULES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ref3 = _step2.value;\n\n var _ref4 = slicedToArray(_ref3, 2);\n\n var _name = _ref4[0];\n var _regexp = _ref4[1];\n\n if (_regexp.test(window.navigator.userAgent)) {\n os = _name;\n break;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\n/**\n * Feature matching rules.\n *\n * @type {Array}\n */\n\nvar FEATURE_RULES = [['inputeventslevel1', function (window) {\n var event = window.InputEvent ? new InputEvent('input') : {};\n var support = 'inputType' in event;\n return support;\n}], ['inputeventslevel2', function (window) {\n var element = window.document.createElement('div');\n element.contentEditable = true;\n var support = 'onbeforeinput' in element;\n return support;\n}]];\n\nvar features = [];\n\nif (isBrowser) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = FEATURE_RULES[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref5 = _step3.value;\n\n var _ref6 = slicedToArray(_ref5, 2);\n\n var _name2 = _ref6[0];\n var test = _ref6[1];\n\n if (test(window)) {\n features.push(_name2);\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\n/**\n * Export.\n *\n * @type {Boolean}\n */\n\nvar IS_CHROME = browser === 'chrome';\nvar IS_OPERA = browser === 'opera';\nvar IS_FIREFOX = browser === 'firefox';\nvar IS_SAFARI = browser === 'safari';\nvar IS_IE = browser === 'ie';\nvar IS_EDGE = browser === 'edge';\n\nvar IS_ANDROID = os === 'android';\nvar IS_IOS = os === 'ios';\nvar IS_MAC = os === 'macos';\nvar IS_WINDOWS = os === 'windows';\n\nvar HAS_INPUT_EVENTS_LEVEL_1 = features.includes('inputeventslevel1');\nvar HAS_INPUT_EVENTS_LEVEL_2 = features.includes('inputeventslevel2');\n\nexport { IS_CHROME, IS_OPERA, IS_FIREFOX, IS_SAFARI, IS_IE, IS_EDGE, IS_ANDROID, IS_IOS, IS_MAC, IS_WINDOWS, HAS_INPUT_EVENTS_LEVEL_1, HAS_INPUT_EVENTS_LEVEL_2 };\n//# sourceMappingURL=slate-dev-environment.es.js.map\n","import { Node, Value } from 'slate';\nimport { atob, btoa } from 'isomorphic-base64';\n\n/**\n * Encode a JSON `object` as base-64 `string`.\n *\n * @param {Object} object\n * @return {String}\n */\n\nfunction encode(object) {\n var string = JSON.stringify(object);\n var encoded = btoa(encodeURIComponent(string));\n return encoded;\n}\n\n/**\n * Decode a base-64 `string` to a JSON `object`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction decode(string) {\n var decoded = decodeURIComponent(atob(string));\n var object = JSON.parse(decoded);\n return object;\n}\n\n/**\n * Deserialize a Value `string`.\n *\n * @param {String} string\n * @return {Value}\n */\n\nfunction deserialize(string, options) {\n var raw = decode(string);\n var value = Value.fromJSON(raw, options);\n return value;\n}\n\n/**\n * Deserialize a Node `string`.\n *\n * @param {String} string\n * @return {Node}\n */\n\nfunction deserializeNode(string, options) {\n var raw = decode(string);\n var node = Node.fromJSON(raw, options);\n return node;\n}\n\n/**\n * Serialize a `value`.\n *\n * @param {Value} value\n * @return {String}\n */\n\nfunction serialize(value, options) {\n var raw = value.toJSON(options);\n var encoded = encode(raw);\n return encoded;\n}\n\n/**\n * Serialize a `node`.\n *\n * @param {Node} node\n * @return {String}\n */\n\nfunction serializeNode(node, options) {\n var raw = node.toJSON(options);\n var encoded = encode(raw);\n return encoded;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar index = {\n deserialize: deserialize,\n deserializeNode: deserializeNode,\n serialize: serialize,\n serializeNode: serializeNode\n};\n\nexport default index;\n//# sourceMappingURL=slate-base64-serializer.es.js.map\n","import { isKeyHotkey } from 'is-hotkey';\nimport { IS_IOS, IS_MAC } from 'slate-dev-environment';\n\n/**\n * Hotkey mappings for each platform.\n *\n * @type {Object}\n */\n\nvar HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n splitBlock: 'shift?+enter',\n undo: 'mod+z'\n};\n\nvar APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t'\n};\n\nvar WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: 'ctrl+y'\n\n /**\n * Hotkeys.\n *\n * @type {Object}\n */\n\n};var Hotkeys = {};\n\nvar IS_APPLE = IS_IOS || IS_MAC;\nvar IS_WINDOWS = !IS_APPLE;\nvar KEYS = [].concat(Object.keys(HOTKEYS)).concat(Object.keys(APPLE_HOTKEYS)).concat(Object.keys(WINDOWS_HOTKEYS));\n\nKEYS.forEach(function (key) {\n var method = 'is' + key[0].toUpperCase() + key.slice(1);\n if (Hotkeys[method]) return;\n\n var generic = HOTKEYS[key];\n var apple = APPLE_HOTKEYS[key];\n var windows = WINDOWS_HOTKEYS[key];\n\n var isGeneric = generic && isKeyHotkey(generic);\n var isApple = apple && isKeyHotkey(apple);\n var isWindows = windows && isKeyHotkey(windows);\n\n Hotkeys[method] = function (event) {\n if (isGeneric && isGeneric(event)) return true;\n if (IS_APPLE && isApple && isApple(event)) return true;\n if (IS_WINDOWS && isWindows && isWindows(event)) return true;\n return false;\n };\n});\n\nexport default Hotkeys;\n//# sourceMappingURL=slate-hotkeys.es.js.map\n","var simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\nexport default index;\n","import Debug from 'debug';\nimport React from 'react';\nimport Types from 'prop-types';\nimport SlateTypes from 'slate-prop-types';\nimport ImmutableTypes from 'react-immutable-proptypes';\nimport { PathUtils, Node, Value, Text, Schema, Stack } from 'slate';\nimport { Set } from 'immutable';\nimport warning from 'slate-dev-warning';\nimport getWindow from 'get-window';\nimport { IS_IE, IS_EDGE, IS_SAFARI, IS_IOS, IS_FIREFOX, HAS_INPUT_EVENTS_LEVEL_2 } from 'slate-dev-environment';\nimport isBackward from 'selection-is-backward';\nimport throttle from 'lodash/throttle';\nimport Base64 from 'slate-base64-serializer';\nimport Plain from 'slate-plain-serializer';\nimport Hotkeys from 'slate-hotkeys';\nimport { findDOMNode } from 'react-dom';\nimport memoizeOne from 'memoize-one';\n\n/**\n * Event handlers used by Slate plugins.\n *\n * @type {Array}\n */\n\nvar EVENT_HANDLERS = ['onBeforeInput', 'onBlur', 'onClick', 'onContextMenu', 'onCompositionEnd', 'onCompositionStart', 'onCopy', 'onCut', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onInput', 'onFocus', 'onKeyDown', 'onKeyUp', 'onPaste', 'onSelect'];\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/**\n * Props that can be defined by plugins.\n *\n * @type {Array}\n */\n\nvar PLUGIN_PROPS = [].concat(toConsumableArray(EVENT_HANDLERS), ['decorateNode', 'onChange', 'renderEditor', 'renderMark', 'renderNode', 'renderPlaceholder', 'renderPortal', 'schema', 'validateNode']);\n\n/**\n * Offset key parser regex.\n *\n * @type {RegExp}\n */\n\nvar PARSER = /^([\\w-]+)(?::(\\d+))?$/;\n\n/**\n * Parse an offset key `string`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction parse(string) {\n var matches = PARSER.exec(string);\n\n if (!matches) {\n throw new Error(\"Invalid offset key string \\\"\" + string + \"\\\".\");\n }\n\n var _matches = slicedToArray(matches, 3),\n original = _matches[0],\n key = _matches[1],\n index = _matches[2]; // eslint-disable-line no-unused-vars\n\n\n return {\n key: key,\n index: parseInt(index, 10)\n };\n}\n\n/**\n * Stringify an offset key `object`.\n *\n * @param {Object} object\n * @property {String} key\n * @property {Number} index\n * @return {String}\n */\n\nfunction stringify(object) {\n return object.key + \":\" + object.index;\n}\n\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar OffsetKey = {\n parse: parse,\n stringify: stringify\n};\n\n/**\n * Debugger.\n *\n * @type {Function}\n */\n\nvar debug = Debug('slate:leaves');\n\n/**\n * Leaf.\n *\n * @type {Component}\n */\n\nvar Leaf = function (_React$Component) {\n inherits(Leaf, _React$Component);\n\n function Leaf() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Leaf);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Leaf.__proto__ || Object.getPrototypeOf(Leaf)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Leaf, [{\n key: 'shouldComponentUpdate',\n\n\n /**\n * Should component update?\n *\n * @param {Object} props\n * @return {Boolean}\n */\n\n value: function shouldComponentUpdate(props) {\n // If any of the regular properties have changed, re-render.\n if (props.index != this.props.index || props.marks != this.props.marks || props.text != this.props.text || props.parent != this.props.parent) {\n return true;\n }\n\n // Otherwise, don't update.\n return false;\n }\n\n /**\n * Render the leaf.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n this.debug('render', this);\n\n var _props = this.props,\n node = _props.node,\n index = _props.index;\n\n var offsetKey = OffsetKey.stringify({\n key: node.key,\n index: index\n });\n\n return React.createElement(\n 'span',\n { 'data-offset-key': offsetKey },\n this.renderMarks()\n );\n }\n\n /**\n * Render all of the leaf's mark components.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderMarks',\n value: function renderMarks() {\n var _props2 = this.props,\n marks = _props2.marks,\n node = _props2.node,\n offset = _props2.offset,\n text = _props2.text,\n editor = _props2.editor;\n var stack = editor.stack;\n\n var leaf = this.renderText();\n var attributes = {\n 'data-slate-leaf': true\n };\n\n return marks.reduce(function (children, mark) {\n var props = {\n editor: editor,\n mark: mark,\n marks: marks,\n node: node,\n offset: offset,\n text: text,\n children: children,\n attributes: attributes\n };\n var element = stack.find('renderMark', props);\n return element || children;\n }, leaf);\n }\n\n /**\n * Render the text content of the leaf, accounting for browsers.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderText',\n value: function renderText() {\n var _props3 = this.props,\n block = _props3.block,\n node = _props3.node,\n editor = _props3.editor,\n parent = _props3.parent,\n text = _props3.text,\n index = _props3.index,\n leaves = _props3.leaves;\n var value = editor.value;\n var schema = value.schema;\n\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n\n if (schema.isVoid(parent)) {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'z' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (text === '' && parent.object === 'block' && parent.text === '' && parent.nodes.last() === node) {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'n' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (text === '') {\n return React.createElement(\n 'span',\n { 'data-slate-zero-width': 'z' },\n '\\uFEFF'\n );\n }\n\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n var lastText = block.getLastText();\n var lastChar = text.charAt(text.length - 1);\n var isLastText = node === lastText;\n var isLastLeaf = index === leaves.size - 1;\n if (isLastText && isLastLeaf && lastChar === '\\n') return text + '\\n';\n\n // Otherwise, just return the text.\n return text;\n }\n }]);\n return Leaf;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nLeaf.propTypes = {\n block: SlateTypes.block.isRequired,\n editor: Types.object.isRequired,\n index: Types.number.isRequired,\n leaves: SlateTypes.leaves.isRequired,\n marks: SlateTypes.marks.isRequired,\n node: SlateTypes.node.isRequired,\n offset: Types.number.isRequired,\n parent: SlateTypes.node.isRequired,\n text: Types.string.isRequired };\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n debug.apply(undefined, [message, _this2.props.node.key + '-' + _this2.props.index].concat(args));\n };\n};\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$1 = Debug('slate:node');\n\n/**\n * Text.\n *\n * @type {Component}\n */\n\nvar Text$1 = function (_React$Component) {\n inherits(Text$$1, _React$Component);\n\n function Text$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Text$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Text$$1.__proto__ || Object.getPrototypeOf(Text$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$1.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default prop types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n\n createClass(Text$$1, [{\n key: 'render',\n\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n\n var _props = this.props,\n decorations = _props.decorations,\n editor = _props.editor,\n node = _props.node,\n style = _props.style;\n var value = editor.value;\n var document = value.document;\n var key = node.key;\n\n\n var decs = decorations.filter(function (d) {\n var start = d.start,\n end = d.end;\n\n // If either of the decoration's keys match, include it.\n\n if (start.key === key || end.key === key) return true;\n\n // Otherwise, if the decoration is in a single node, it's not ours.\n if (start.key === end.key) return false;\n\n // If the node's path is before the start path, ignore it.\n var path = document.assertPath(key);\n if (PathUtils.compare(path, start.path) === -1) return false;\n\n // If the node's path is after the end path, ignore it.\n if (PathUtils.compare(path, end.path) === 1) return false;\n\n // Otherwise, include it.\n return true;\n });\n\n // PERF: Take advantage of cache by avoiding arguments\n var leaves = decs.size === 0 ? node.getLeaves() : node.getLeaves(decs);\n var offset = 0;\n\n var children = leaves.map(function (leaf, i) {\n var child = _this2.renderLeaf(leaves, leaf, i, offset);\n offset += leaf.text.length;\n return child;\n });\n\n return React.createElement(\n 'span',\n { 'data-key': key, style: style },\n children\n );\n }\n\n /**\n * Render a single leaf given a `leaf` and `offset`.\n *\n * @param {List<Leaf>} leaves\n * @param {Leaf} leaf\n * @param {Number} index\n * @param {Number} offset\n * @return {Element} leaf\n */\n\n }]);\n return Text$$1;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nText$1.propTypes = {\n block: SlateTypes.block,\n decorations: ImmutableTypes.list.isRequired,\n editor: Types.object.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n style: Types.object };\nText$1.defaultProps = {\n style: null };\n\nvar _initialiseProps$1 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key;\n\n debug$1.apply(undefined, [message, key + ' (text)'].concat(args));\n };\n\n this.shouldComponentUpdate = function (nextProps) {\n var props = _this3.props;\n\n var n = nextProps;\n var p = props;\n\n // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n if (n.node != p.node) return true;\n\n // If the node parent is a block node, and it was the last child of the\n // block, re-render to cleanup extra `\\n`.\n if (n.parent.object == 'block') {\n var pLast = p.parent.nodes.last();\n var nLast = n.parent.nodes.last();\n if (p.node == pLast && n.node != nLast) return true;\n }\n\n // Re-render if the current decorations have changed.\n if (!n.decorations.equals(p.decorations)) return true;\n\n // Otherwise, don't update.\n return false;\n };\n\n this.renderLeaf = function (leaves, leaf, index, offset) {\n var _props2 = _this3.props,\n block = _props2.block,\n node = _props2.node,\n parent = _props2.parent,\n editor = _props2.editor;\n var text = leaf.text,\n marks = leaf.marks;\n\n\n return React.createElement(Leaf, {\n key: node.key + '-' + index,\n block: block,\n editor: editor,\n index: index,\n marks: marks,\n node: node,\n offset: offset,\n parent: parent,\n leaves: leaves,\n text: text\n });\n };\n};\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$2 = Debug('slate:void');\n\n/**\n * Void.\n *\n * @type {Component}\n */\n\nvar Void = function (_React$Component) {\n inherits(Void, _React$Component);\n\n function Void() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Void);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Void.__proto__ || Object.getPrototypeOf(Void)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$2.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Void, [{\n key: 'render',\n\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n value: function render() {\n var props = this.props;\n var children = props.children,\n node = props.node,\n readOnly = props.readOnly;\n\n var Tag = node.object == 'block' ? 'div' : 'span';\n var style = {\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute'\n };\n\n var spacer = React.createElement(\n Tag,\n { 'data-slate-spacer': true, style: style },\n this.renderText()\n );\n\n var content = React.createElement(\n Tag,\n { contentEditable: readOnly ? null : false },\n children\n );\n\n this.debug('render', { props: props });\n\n return React.createElement(\n Tag,\n {\n 'data-slate-void': true,\n 'data-key': node.key,\n contentEditable: readOnly || node.object == 'block' ? null : false\n },\n readOnly ? null : spacer,\n content\n );\n }\n\n /**\n * Render the void node's text node, which will catch the cursor when it the\n * void node is navigated to with the arrow keys.\n *\n * Having this text node there means the browser continues to manage the\n * selection natively, so it keeps track of the right offset when moving\n * across the block.\n *\n * @return {Element}\n */\n\n }]);\n return Void;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nVoid.propTypes = {\n block: SlateTypes.block,\n children: Types.any.isRequired,\n editor: Types.object.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n readOnly: Types.bool.isRequired };\n\nvar _initialiseProps$2 = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this2.props.node;\n var key = node.key,\n type = node.type;\n\n var id = key + ' (' + type + ')';\n debug$2.apply(undefined, [message, '' + id].concat(args));\n };\n\n this.renderText = function () {\n var _props = _this2.props,\n block = _props.block,\n decorations = _props.decorations,\n node = _props.node,\n readOnly = _props.readOnly,\n editor = _props.editor;\n\n var child = node.getFirstText();\n return React.createElement(Text$1, {\n block: node.object == 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n\n/**\n * Split the decorations in lists of relevant decorations for each child.\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array<List<Decoration>>}\n */\n\nfunction getChildrenDecorations(node, decorations) {\n var activeDecorations = Set().asMutable();\n var childrenDecorations = [];\n\n orderChildDecorations(node, decorations).forEach(function (item) {\n if (item.isRangeStart) {\n // Item is a decoration start\n activeDecorations.add(item.decoration);\n } else if (item.isRangeEnd) {\n // item is a decoration end\n activeDecorations.remove(item.decoration);\n } else {\n // Item is a child node\n childrenDecorations.push(activeDecorations.toList());\n }\n });\n\n return childrenDecorations;\n}\n\n/**\n * Orders the children of provided node and its decoration endpoints (start, end)\n * so that decorations can be passed only to relevant children (see use in Node.render())\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array<Item>}\n *\n * where type Item =\n * {\n * child: Node,\n * // Index of the child in its parent\n * index: number\n * }\n * or {\n * // True if this represents the start of the given decoration\n * isRangeStart: boolean,\n * // True if this represents the end of the given decoration\n * isRangeEnd: boolean,\n * decoration: Range\n * }\n */\n\nfunction orderChildDecorations(node, decorations) {\n if (decorations.isEmpty()) {\n return node.nodes.toArray().map(function (child, index) {\n return {\n child: child,\n index: index\n };\n });\n }\n\n // Map each key to its global order\n var keyOrders = defineProperty({}, node.key, 0);\n var globalOrder = 1;\n\n node.forEachDescendant(function (child) {\n keyOrders[child.key] = globalOrder;\n globalOrder = globalOrder + 1;\n });\n\n var childNodes = node.nodes.toArray();\n\n var endPoints = childNodes.map(function (child, index) {\n return {\n child: child,\n index: index,\n order: keyOrders[child.key]\n };\n });\n\n decorations.forEach(function (decoration) {\n // Range start.\n // A rangeStart should be before the child containing its startKey, in order\n // to consider it active before going down the child.\n var startKeyOrder = keyOrders[decoration.start.key];\n var containingChildOrder = startKeyOrder === undefined ? 0 : getContainingChildOrder(childNodes, keyOrders, startKeyOrder);\n\n endPoints.push({\n isRangeStart: true,\n order: containingChildOrder - 0.5,\n decoration: decoration\n });\n\n // Range end.\n var endKeyOrder = (keyOrders[decoration.end.key] || globalOrder) + 0.5;\n\n endPoints.push({\n isRangeEnd: true,\n order: endKeyOrder,\n decoration: decoration\n });\n });\n\n return endPoints.sort(function (a, b) {\n return a.order > b.order ? 1 : -1;\n });\n}\n\n/*\n * Returns the key order of the child right before the given order.\n */\n\nfunction getContainingChildOrder(children, keyOrders, order) {\n // Find the first child that is after the given key\n var nextChildIndex = children.findIndex(function (child) {\n return order < keyOrders[child.key];\n });\n\n if (nextChildIndex <= 0) {\n return 0;\n }\n\n var containingChild = children[nextChildIndex - 1];\n return keyOrders[containingChild.key];\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$3 = Debug('slate:node');\n\n/**\n * Node.\n *\n * @type {Component}\n */\n\nvar Node$1 = function (_React$Component) {\n inherits(Node$$1, _React$Component);\n\n function Node$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Node$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Node$$1.__proto__ || Object.getPrototypeOf(Node$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$3.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n createClass(Node$$1, [{\n key: 'shouldComponentUpdate',\n\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n\n value: function shouldComponentUpdate(nextProps) {\n var props = this.props;\n var stack = props.editor.stack;\n\n var shouldUpdate = stack.find('shouldNodeComponentUpdate', props, nextProps);\n var n = nextProps;\n var p = props;\n\n // If the `Component` has a custom logic to determine whether the component\n // needs to be updated or not, return true if it returns true. If it returns\n // false, we need to ignore it, because it shouldn't be allowed it.\n if (shouldUpdate != null) {\n if (shouldUpdate) {\n return true;\n }\n\n warning(shouldUpdate !== false, \"Returning false in `shouldNodeComponentUpdate` does not disable Slate's internal `shouldComponentUpdate` logic. If you want to prevent updates, use React's `shouldComponentUpdate` instead.\");\n }\n\n // If the `readOnly` status has changed, re-render in case there is any\n // user-land logic that depends on it, like nested editable contents.\n if (n.readOnly != p.readOnly) return true;\n\n // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n if (n.node != p.node) return true;\n\n // If the selection value of the node or of some of its children has changed,\n // re-render in case there is any user-land logic depends on it to render.\n // if the node is selected update it, even if it was already selected: the\n // selection value of some of its children could have been changed and they\n // need to be rendered again.\n if (n.isSelected || p.isSelected) return true;\n if (n.isFocused || p.isFocused) return true;\n\n // If the decorations have changed, update.\n if (!n.decorations.equals(p.decorations)) return true;\n\n // Otherwise, don't update.\n return false;\n }\n\n /**\n * Render.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n var _props = this.props,\n editor = _props.editor,\n isSelected = _props.isSelected,\n isFocused = _props.isFocused,\n node = _props.node,\n decorations = _props.decorations,\n parent = _props.parent,\n readOnly = _props.readOnly;\n var value = editor.value;\n var selection = value.selection,\n schema = value.schema;\n var stack = editor.stack;\n\n var indexes = node.getSelectionIndexes(selection, isSelected);\n var decs = decorations.concat(node.getDecorations(stack));\n var childrenDecorations = getChildrenDecorations(node, decs);\n\n var children = [];\n\n node.nodes.forEach(function (child, i) {\n var isChildSelected = !!indexes && indexes.start <= i && i < indexes.end;\n\n children.push(_this2.renderNode(child, isChildSelected, childrenDecorations[i]));\n });\n\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n var attributes = { 'data-key': node.key\n\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n };if (node.object == 'block' && node.nodes.first().object != 'block') {\n var direction = node.getTextDirection();\n if (direction == 'rtl') attributes.dir = 'rtl';\n }\n\n var props = {\n key: node.key,\n editor: editor,\n isFocused: isFocused,\n isSelected: isSelected,\n node: node,\n parent: parent,\n readOnly: readOnly\n };\n\n var placeholder = stack.find('renderPlaceholder', props);\n\n if (placeholder) {\n placeholder = React.cloneElement(placeholder, {\n key: node.key + '-placeholder'\n });\n\n children = [placeholder].concat(toConsumableArray(children));\n }\n\n var element = stack.find('renderNode', _extends({}, props, {\n attributes: attributes,\n children: children\n }));\n\n return schema.isVoid(node) ? React.createElement(\n Void,\n this.props,\n element\n ) : element;\n }\n\n /**\n * Render a `child` node.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @param {Array<Decoration>} decorations\n * @return {Element}\n */\n\n }]);\n return Node$$1;\n}(React.Component);\n\n/**\n * Export.\n *\n * @type {Component}\n */\n\nNode$1.propTypes = {\n block: SlateTypes.block,\n decorations: ImmutableTypes.list.isRequired,\n editor: Types.object.isRequired,\n isFocused: Types.bool.isRequired,\n isSelected: Types.bool.isRequired,\n node: SlateTypes.node.isRequired,\n parent: SlateTypes.node.isRequired,\n readOnly: Types.bool.isRequired };\n\nvar _initialiseProps$3 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key,\n type = node.type;\n\n debug$3.apply(undefined, [message, key + ' (' + type + ')'].concat(args));\n };\n\n this.renderNode = function (child, isSelected, decorations) {\n var _props2 = _this3.props,\n block = _props2.block,\n editor = _props2.editor,\n node = _props2.node,\n readOnly = _props2.readOnly,\n isFocused = _props2.isFocused;\n\n var Component = child.object == 'text' ? Text$1 : Node$1;\n\n return React.createElement(Component, {\n block: node.object == 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n\n/**\n * Find the DOM node for a `key`.\n *\n * @param {String|Node} key\n * @param {Window} win (optional)\n * @return {Element}\n */\n\nfunction findDOMNode$1(key) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n if (Node.isNode(key)) {\n key = key.key;\n }\n\n var el = win.document.querySelector('[data-key=\"' + key + '\"]');\n\n if (!el) {\n throw new Error('Unable to find a DOM node for \"' + key + '\". This is often because of forgetting to add `props.attributes` to a custom component.');\n }\n\n return el;\n}\n\n/**\n * Find a native DOM selection point from a Slate `point`.\n *\n * @param {Point} point\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\nfunction findDOMPoint(point) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n var el = findDOMNode$1(point.key, win);\n var start = 0;\n var n = void 0;\n\n // COMPAT: In IE, this method's arguments are not optional, so we have to\n // pass in all four even though the last two are defaults. (2017/10/25)\n var iterator = win.document.createNodeIterator(el, NodeFilter.SHOW_TEXT, function () {\n return NodeFilter.FILTER_ACCEPT;\n }, false);\n\n while (n = iterator.nextNode()) {\n var length = n.textContent.length;\n\n var end = start + length;\n\n if (point.offset <= end) {\n var o = point.offset - start;\n return { node: n, offset: o >= 0 ? o : 0 };\n }\n\n start = end;\n }\n\n return null;\n}\n\n/**\n * Find a native DOM range Slate `range`.\n *\n * @param {Range} range\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\nfunction findDOMRange(range) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n var anchor = range.anchor,\n focus = range.focus,\n isBackward$$1 = range.isBackward,\n isCollapsed = range.isCollapsed;\n\n var domAnchor = findDOMPoint(anchor, win);\n var domFocus = isCollapsed ? domAnchor : findDOMPoint(focus, win);\n\n if (!domAnchor || !domFocus) return null;\n\n var r = win.document.createRange();\n var start = isBackward$$1 ? domFocus : domAnchor;\n var end = isBackward$$1 ? domAnchor : domFocus;\n r.setStart(start.node, start.offset);\n r.setEnd(end.node, end.offset);\n return r;\n}\n\n/**\n * Constants.\n *\n * @type {String}\n */\n\nvar ZERO_WIDTH_ATTRIBUTE = 'data-slate-zero-width';\nvar ZERO_WIDTH_SELECTOR = '[' + ZERO_WIDTH_ATTRIBUTE + ']';\nvar OFFSET_KEY_ATTRIBUTE = 'data-offset-key';\nvar RANGE_SELECTOR = '[' + OFFSET_KEY_ATTRIBUTE + ']';\nvar TEXT_SELECTOR = '[data-key]';\nvar VOID_SELECTOR = '[data-slate-void]';\n\n/**\n * Find a Slate point from a DOM selection's `nativeNode` and `nativeOffset`.\n *\n * @param {Element} nativeNode\n * @param {Number} nativeOffset\n * @param {Value} value\n * @return {Point}\n */\n\nfunction findPoint(nativeNode, nativeOffset, value) {\n var _normalizeNodeAndOffs = normalizeNodeAndOffset(nativeNode, nativeOffset),\n nearestNode = _normalizeNodeAndOffs.node,\n nearestOffset = _normalizeNodeAndOffs.offset;\n\n var window = getWindow(nativeNode);\n var parentNode = nearestNode.parentNode;\n\n var rangeNode = parentNode.closest(RANGE_SELECTOR);\n var offset = void 0;\n var node = void 0;\n\n // Calculate how far into the text node the `nearestNode` is, so that we can\n // determine what the offset relative to the text node is.\n if (rangeNode) {\n var range = window.document.createRange();\n var textNode = rangeNode.closest(TEXT_SELECTOR);\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n node = textNode;\n offset = range.toString().length;\n } else {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent.\n var voidNode = parentNode.closest(VOID_SELECTOR);\n if (!voidNode) return null;\n rangeNode = voidNode.querySelector(RANGE_SELECTOR);\n if (!rangeNode) return null;\n node = rangeNode;\n offset = node.textContent.length;\n }\n\n // COMPAT: If the parent node is a Slate zero-width space, this is because the\n // text node should have no characters. However, during IME composition the\n // ASCII characters will be prepended to the zero-width space, so subtract 1\n // from the offset to account for the zero-width space character.\n if (offset == node.textContent.length && parentNode.hasAttribute(ZERO_WIDTH_ATTRIBUTE)) {\n offset--;\n }\n\n // Get the string value of the offset key attribute.\n var offsetKey = rangeNode.getAttribute(OFFSET_KEY_ATTRIBUTE);\n if (!offsetKey) return null;\n\n var _OffsetKey$parse = OffsetKey.parse(offsetKey),\n key = _OffsetKey$parse.key;\n\n // COMPAT: If someone is clicking from one Slate editor into another, the\n // select event fires twice, once for the old editor's `element` first, and\n // then afterwards for the correct `element`. (2017/03/03)\n\n\n if (!value.document.hasDescendant(key)) return null;\n\n var point = value.document.createPoint({ key: key, offset: offset });\n return point;\n}\n\n/**\n * From a DOM selection's `node` and `offset`, normalize so that it always\n * refers to a text node.\n *\n * @param {Element} node\n * @param {Number} offset\n * @return {Object}\n */\n\nfunction normalizeNodeAndOffset(node, offset) {\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (node.nodeType == 1 && node.childNodes.length) {\n var isLast = offset == node.childNodes.length;\n var direction = isLast ? 'backward' : 'forward';\n var index = isLast ? offset - 1 : offset;\n node = getEditableChild(node, index, direction);\n\n // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n while (node.nodeType == 1 && node.childNodes.length) {\n var i = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i, direction);\n }\n\n // Determine the new offset inside the text node.\n offset = isLast ? node.textContent.length : 0;\n }\n\n // Return the node and offset.\n return { node: node, offset: offset };\n}\n\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n *\n * @param {Element} parent\n * @param {Number} index\n * @param {String} direction ('forward' or 'backward')\n * @return {Element|Null}\n */\n\nfunction getEditableChild(parent, index, direction) {\n var childNodes = parent.childNodes;\n\n var child = childNodes[index];\n var i = index;\n var triedForward = false;\n var triedBackward = false;\n\n // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n while (child.nodeType == 8 || child.nodeType == 1 && child.childNodes.length == 0 || child.nodeType == 1 && child.getAttribute('contenteditable') == 'false') {\n if (triedForward && triedBackward) break;\n\n if (i >= childNodes.length) {\n triedForward = true;\n i = index - 1;\n direction = 'backward';\n continue;\n }\n\n if (i < 0) {\n triedBackward = true;\n i = index + 1;\n direction = 'forward';\n continue;\n }\n\n child = childNodes[i];\n if (direction == 'forward') i++;\n if (direction == 'backward') i--;\n }\n\n return child || null;\n}\n\n/**\n * Find a Slate range from a DOM `native` selection.\n *\n * @param {Selection} native\n * @param {Value} value\n * @return {Range}\n */\n\nfunction findRange(native, value) {\n var el = native.anchorNode || native.startContainer;\n if (!el) return null;\n\n var window = getWindow(el);\n\n // If the `native` object is a DOM `Range` or `StaticRange` object, change it\n // into something that looks like a DOM `Selection` instead.\n if (native instanceof window.Range || window.StaticRange && native instanceof window.StaticRange) {\n native = {\n anchorNode: native.startContainer,\n anchorOffset: native.startOffset,\n focusNode: native.endContainer,\n focusOffset: native.endOffset\n };\n }\n\n var _native = native,\n anchorNode = _native.anchorNode,\n anchorOffset = _native.anchorOffset,\n focusNode = _native.focusNode,\n focusOffset = _native.focusOffset,\n isCollapsed = _native.isCollapsed;\n\n var anchor = findPoint(anchorNode, anchorOffset, value);\n var focus = isCollapsed ? anchor : findPoint(focusNode, focusOffset, value);\n if (!anchor || !focus) return null;\n\n // COMPAT: ??? The Edge browser seems to have a case where if you select the\n // last word of a span, it sets the endContainer to the containing span.\n // `selection-is-backward` doesn't handle this case.\n if (IS_IE || IS_EDGE) {\n var domAnchor = findDOMPoint(anchor);\n var domFocus = findDOMPoint(focus);\n\n native = {\n anchorNode: domAnchor.node,\n anchorOffset: domAnchor.offset,\n focusNode: domFocus.node,\n focusOffset: domFocus.offset\n };\n }\n\n var document = value.document;\n\n var range = document.createRange({\n anchor: anchor,\n focus: focus\n });\n\n return range;\n}\n\n/**\n * CSS overflow values that would cause scrolling.\n *\n * @type {Array}\n */\n\nvar OVERFLOWS = ['auto', 'overlay', 'scroll'];\n\n/**\n * Detect whether we are running IOS version 11\n */\n\nvar IS_IOS_11 = IS_IOS && !!window.navigator.userAgent.match(/os 11_/i);\n\n/**\n * Find the nearest parent with scrolling, or window.\n *\n * @param {el} Element\n */\n\nfunction findScrollContainer(el, window) {\n var parent = el.parentNode;\n var scroller = void 0;\n\n while (!scroller) {\n if (!parent.parentNode) break;\n\n var style = window.getComputedStyle(parent);\n var overflowY = style.overflowY;\n\n\n if (OVERFLOWS.includes(overflowY)) {\n scroller = parent;\n break;\n }\n\n parent = parent.parentNode;\n }\n\n // COMPAT: Because Chrome does not allow doucment.body.scrollTop, we're\n // assuming that window.scrollTo() should be used if the scrollable element\n // turns out to be document.body or document.documentElement. This will work\n // unless body is intentionally set to scrollable by restricting its height\n // (e.g. height: 100vh).\n if (!scroller) {\n return window.document.body;\n }\n\n return scroller;\n}\n\n/**\n * Scroll the current selection's focus point into view if needed.\n *\n * @param {Selection} selection\n */\n\nfunction scrollToSelection(selection) {\n if (IS_IOS_11) return;\n if (!selection.anchorNode) return;\n\n var window = getWindow(selection.anchorNode);\n var scroller = findScrollContainer(selection.anchorNode, window);\n var isWindow = scroller == window.document.body || scroller == window.document.documentElement;\n var backward = isBackward(selection);\n\n var range = selection.getRangeAt(0).cloneRange();\n range.collapse(backward);\n var cursorRect = range.getBoundingClientRect();\n\n // COMPAT: range.getBoundingClientRect() returns 0s in Safari when range is\n // collapsed. Expanding the range by 1 is a relatively effective workaround\n // for vertical scroll, although horizontal may be off by 1 character.\n // https://bugs.webkit.org/show_bug.cgi?id=138949\n // https://bugs.chromium.org/p/chromium/issues/detail?id=435438\n if (IS_SAFARI) {\n if (range.collapsed && cursorRect.top == 0 && cursorRect.height == 0) {\n if (range.startOffset == 0) {\n range.setEnd(range.endContainer, 1);\n } else {\n range.setStart(range.startContainer, range.startOffset - 1);\n }\n\n cursorRect = range.getBoundingClientRect();\n\n if (cursorRect.top == 0 && cursorRect.height == 0) {\n if (range.getClientRects().length) {\n cursorRect = range.getClientRects()[0];\n }\n }\n }\n }\n\n var width = void 0;\n var height = void 0;\n var yOffset = void 0;\n var xOffset = void 0;\n var scrollerTop = 0;\n var scrollerLeft = 0;\n var scrollerBordersY = 0;\n var scrollerBordersX = 0;\n var scrollerPaddingTop = 0;\n var scrollerPaddingBottom = 0;\n var scrollerPaddingLeft = 0;\n var scrollerPaddingRight = 0;\n\n if (isWindow) {\n var innerWidth = window.innerWidth,\n innerHeight = window.innerHeight,\n pageYOffset = window.pageYOffset,\n pageXOffset = window.pageXOffset;\n\n width = innerWidth;\n height = innerHeight;\n yOffset = pageYOffset;\n xOffset = pageXOffset;\n } else {\n var offsetWidth = scroller.offsetWidth,\n offsetHeight = scroller.offsetHeight,\n scrollTop = scroller.scrollTop,\n scrollLeft = scroller.scrollLeft;\n\n var _window$getComputedSt = window.getComputedStyle(scroller),\n borderTopWidth = _window$getComputedSt.borderTopWidth,\n borderBottomWidth = _window$getComputedSt.borderBottomWidth,\n borderLeftWidth = _window$getComputedSt.borderLeftWidth,\n borderRightWidth = _window$getComputedSt.borderRightWidth,\n paddingTop = _window$getComputedSt.paddingTop,\n paddingBottom = _window$getComputedSt.paddingBottom,\n paddingLeft = _window$getComputedSt.paddingLeft,\n paddingRight = _window$getComputedSt.paddingRight;\n\n var scrollerRect = scroller.getBoundingClientRect();\n width = offsetWidth;\n height = offsetHeight;\n scrollerTop = scrollerRect.top + parseInt(borderTopWidth, 10);\n scrollerLeft = scrollerRect.left + parseInt(borderLeftWidth, 10);\n\n scrollerBordersY = parseInt(borderTopWidth, 10) + parseInt(borderBottomWidth, 10);\n\n scrollerBordersX = parseInt(borderLeftWidth, 10) + parseInt(borderRightWidth, 10);\n\n scrollerPaddingTop = parseInt(paddingTop, 10);\n scrollerPaddingBottom = parseInt(paddingBottom, 10);\n scrollerPaddingLeft = parseInt(paddingLeft, 10);\n scrollerPaddingRight = parseInt(paddingRight, 10);\n yOffset = scrollTop;\n xOffset = scrollLeft;\n }\n\n var cursorTop = cursorRect.top + yOffset - scrollerTop;\n var cursorLeft = cursorRect.left + xOffset - scrollerLeft;\n\n var x = xOffset;\n var y = yOffset;\n\n if (cursorLeft < xOffset) {\n // selection to the left of viewport\n x = cursorLeft - scrollerPaddingLeft;\n } else if (cursorLeft + cursorRect.width + scrollerBordersX > xOffset + width) {\n // selection to the right of viewport\n x = cursorLeft + scrollerBordersX + scrollerPaddingRight - width;\n }\n\n if (cursorTop < yOffset) {\n // selection above viewport\n y = cursorTop - scrollerPaddingTop;\n } else if (cursorTop + cursorRect.height + scrollerBordersY > yOffset + height) {\n // selection below viewport\n y = cursorTop + scrollerBordersY + scrollerPaddingBottom + cursorRect.height - height;\n }\n\n if (isWindow) {\n window.scrollTo(x, y);\n } else {\n scroller.scrollTop = y;\n scroller.scrollLeft = x;\n }\n}\n\n/**\n * COMPAT: if we are in <= IE11 and the selection contains\n * tables, `removeAllRanges()` will throw\n * \"unable to complete the operation due to error 800a025e\"\n *\n * @param {Selection} selection document selection\n */\n\nfunction removeAllRanges(selection) {\n var doc = window.document;\n\n if (doc && doc.body.createTextRange) {\n // All IE but Edge\n var range = doc.body.createTextRange();\n range.collapse();\n range.select();\n } else {\n selection.removeAllRanges();\n }\n}\n\nvar FIREFOX_NODE_TYPE_ACCESS_ERROR = /Permission denied to access property \"nodeType\"/;\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$4 = Debug('slate:content');\n\n/**\n * Content.\n *\n * @type {Component}\n */\n\nvar Content = function (_React$Component) {\n inherits(Content, _React$Component);\n\n function Content() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Content);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Content.__proto__ || Object.getPrototypeOf(Content)).call.apply(_ref, [this].concat(args))), _this), _this.tmp = {\n isUpdatingSelection: false\n\n /**\n * Create a set of bound event handlers.\n *\n * @type {Object}\n */\n\n }, _this.handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = function (event) {\n return _this.onEvent(handler, event);\n };\n return obj;\n }, {}), _this.updateSelection = function () {\n var editor = _this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n var isBackward$$1 = selection.isBackward;\n\n var window = getWindow(_this.element);\n var native = window.getSelection();\n\n // .getSelection() can return null in some cases\n // https://bugzilla.mozilla.org/show_bug.cgi?id=827585\n if (!native) return;\n\n var rangeCount = native.rangeCount,\n anchorNode = native.anchorNode;\n\n // If both selections are blurred, do nothing.\n\n if (!rangeCount && selection.isBlurred) return;\n\n // If the selection has been blurred, but is still inside the editor in the\n // DOM, blur it manually.\n if (selection.isBlurred) {\n if (!_this.isInEditor(anchorNode)) return;\n removeAllRanges(native);\n _this.element.blur();\n debug$4('updateSelection', { selection: selection, native: native });\n return;\n }\n\n // If the selection isn't set, do nothing.\n if (selection.isUnset) return;\n\n // Otherwise, figure out which DOM nodes should be selected...\n var current = !!rangeCount && native.getRangeAt(0);\n var range = findDOMRange(selection, window);\n\n if (!range) {\n warning(false, 'Unable to find a native DOM range from the current selection.');\n\n return;\n }\n\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset;\n\n // If the new range matches the current selection, there is nothing to fix.\n // COMPAT: The native `Range` object always has it's \"start\" first and \"end\"\n // last in the DOM. It has no concept of \"backwards/forwards\", so we have\n // to check both orientations here. (2017/10/31)\n\n if (current) {\n if (startContainer == current.startContainer && startOffset == current.startOffset && endContainer == current.endContainer && endOffset == current.endOffset || startContainer == current.endContainer && startOffset == current.endOffset && endContainer == current.startContainer && endOffset == current.startOffset) {\n return;\n }\n }\n\n // Otherwise, set the `isUpdatingSelection` flag and update the selection.\n _this.tmp.isUpdatingSelection = true;\n removeAllRanges(native);\n\n // COMPAT: IE 11 does not support Selection.setBaseAndExtent\n if (native.setBaseAndExtent) {\n // COMPAT: Since the DOM range has no concept of backwards/forwards\n // we need to check and do the right thing here.\n if (isBackward$$1) {\n native.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);\n } else {\n native.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);\n }\n } else {\n // COMPAT: IE 11 does not support Selection.extend, fallback to addRange\n native.addRange(range);\n }\n\n // Scroll to the selection, in case it's out of view.\n scrollToSelection(native);\n\n // Then unset the `isUpdatingSelection` flag after a delay.\n setTimeout(function () {\n // COMPAT: In Firefox, it's not enough to create a range, you also need to\n // focus the contenteditable element too. (2016/11/16)\n if (IS_FIREFOX && _this.element) _this.element.focus();\n _this.tmp.isUpdatingSelection = false;\n });\n\n debug$4('updateSelection', { selection: selection, native: native });\n }, _this.ref = function (element) {\n _this.element = element;\n }, _this.isInEditor = function (target) {\n var _this2 = _this,\n element = _this2.element;\n\n\n var el = void 0;\n\n try {\n // COMPAT: In Firefox, sometimes the node can be comment which doesn't\n // have .closest and it crashes.\n if (target.nodeType === 8) {\n return false;\n }\n\n // COMPAT: Text nodes don't have `isContentEditable` property. So, when\n // `target` is a text node use its parent node for check.\n el = target.nodeType === 3 ? target.parentNode : target;\n } catch (err) {\n // COMPAT: In Firefox, `target.nodeType` will throw an error if target is\n // originating from an internal \"restricted\" element (e.g. a stepper\n // arrow on a number input)\n // see github.com/ianstormtaylor/slate/issues/1819\n if (IS_FIREFOX && FIREFOX_NODE_TYPE_ACCESS_ERROR.test(err.message)) {\n return false;\n }\n\n throw err;\n }\n\n var allowEdit = el.isContentEditable || el.closest('[data-slate-void]');\n return allowEdit && (el === element || el.closest('[data-slate-editor]') === element);\n }, _this.onNativeSelectionChange = throttle(function (event) {\n if (_this.props.readOnly) return;\n\n var window = getWindow(event.target);\n var activeElement = window.document.activeElement;\n\n if (activeElement !== _this.element) return;\n\n _this.props.onSelect(event);\n }, 100), _this.renderNode = function (child, isSelected, decorations) {\n var _this$props = _this.props,\n editor = _this$props.editor,\n readOnly = _this$props.readOnly;\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var isFocused = selection.isFocused;\n\n\n return React.createElement(Node$1, {\n block: null,\n editor: editor,\n decorations: decorations,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: document,\n readOnly: readOnly\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n createClass(Content, [{\n key: 'componentDidMount',\n\n\n /**\n * When the editor first mounts in the DOM we need to:\n *\n * - Add native DOM event listeners.\n * - Update the selection, in case it starts focused.\n */\n\n value: function componentDidMount() {\n var window = getWindow(this.element);\n\n window.document.addEventListener('selectionchange', this.onNativeSelectionChange);\n\n // COMPAT: Restrict scope of `beforeinput` to clients that support the\n // Input Events Level 2 spec, since they are preventable events.\n if (HAS_INPUT_EVENTS_LEVEL_2) {\n this.element.addEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n\n this.updateSelection();\n }\n\n /**\n * When unmounting, remove DOM event listeners.\n */\n\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var window = getWindow(this.element);\n\n if (window) {\n window.document.removeEventListener('selectionchange', this.onNativeSelectionChange);\n }\n\n if (HAS_INPUT_EVENTS_LEVEL_2) {\n this.element.removeEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n }\n\n /**\n * On update, update the selection.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateSelection();\n }\n\n /**\n * Update the native DOM selection to reflect the internal model.\n */\n\n /**\n * The React ref method to set the root content element locally.\n *\n * @param {Element} element\n */\n\n /**\n * Check if an event `target` is fired from within the contenteditable\n * element. This should be false for edits happening in non-contenteditable\n * children, such as void nodes and other nested Slate editors.\n *\n * @param {Element} target\n * @return {Boolean}\n */\n\n }, {\n key: 'onEvent',\n\n\n /**\n * On `event` with `handler`.\n *\n * @param {String} handler\n * @param {Event} event\n */\n\n value: function onEvent(handler, event) {\n debug$4('onEvent', handler);\n\n // Ignore `onBlur`, `onFocus` and `onSelect` events generated\n // programmatically while updating selection.\n if (this.tmp.isUpdatingSelection && (handler == 'onSelect' || handler == 'onBlur' || handler == 'onFocus')) {\n return;\n }\n\n // COMPAT: There are situations where a select event will fire with a new\n // native selection that resolves to the same internal position. In those\n // cases we don't need to trigger any changes, since our internal model is\n // already up to date, but we do want to update the native selection again\n // to make sure it is in sync. (2017/10/16)\n if (handler == 'onSelect') {\n var editor = this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n\n var window = getWindow(event.target);\n var native = window.getSelection();\n var range = findRange(native, value);\n\n if (range && range.equals(selection.toRange())) {\n this.updateSelection();\n return;\n }\n }\n\n // Don't handle drag and drop events coming from embedded editors.\n if (handler == 'onDragEnd' || handler == 'onDragEnter' || handler == 'onDragExit' || handler == 'onDragLeave' || handler == 'onDragOver' || handler == 'onDragStart' || handler == 'onDrop') {\n var target = event.target;\n\n var targetEditorNode = target.closest('[data-slate-editor]');\n if (targetEditorNode !== this.element) return;\n }\n\n // Some events require being in editable in the editor, so if the event\n // target isn't, ignore them.\n if (handler == 'onBeforeInput' || handler == 'onBlur' || handler == 'onCompositionEnd' || handler == 'onCompositionStart' || handler == 'onCopy' || handler == 'onCut' || handler == 'onFocus' || handler == 'onInput' || handler == 'onKeyDown' || handler == 'onKeyUp' || handler == 'onPaste' || handler == 'onSelect') {\n if (!this.isInEditor(event.target)) return;\n }\n\n this.props[handler](event);\n }\n\n /**\n * On native `selectionchange` event, trigger the `onSelect` handler. This is\n * needed to account for React's `onSelect` being non-standard and not firing\n * until after a selection has been released. This causes issues in situations\n * where another change happens while a selection is being made.\n *\n * @param {Event} event\n */\n\n }, {\n key: 'render',\n\n\n /**\n * Render the editor content.\n *\n * @return {Element}\n */\n\n value: function render() {\n var _this3 = this;\n\n var props = this.props,\n handlers = this.handlers;\n var className = props.className,\n readOnly = props.readOnly,\n editor = props.editor,\n tabIndex = props.tabIndex,\n role = props.role,\n tagName = props.tagName,\n spellCheck = props.spellCheck;\n var value = editor.value,\n stack = editor.stack;\n\n var Container = tagName;\n var document = value.document,\n selection = value.selection,\n decorations = value.decorations;\n\n var indexes = document.getSelectionIndexes(selection);\n var decs = document.getDecorations(stack).concat(decorations);\n var childrenDecorations = getChildrenDecorations(document, decs);\n\n var children = document.nodes.toArray().map(function (child, i) {\n var isSelected = !!indexes && indexes.start <= i && i < indexes.end;\n\n return _this3.renderNode(child, isSelected, childrenDecorations[i]);\n });\n\n var style = _extends({\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, readOnly ? {} : { WebkitUserModify: 'read-write-plaintext-only' }, props.style);\n\n debug$4('render', { props: props });\n\n return React.createElement(\n Container,\n _extends({}, handlers, {\n 'data-slate-editor': true,\n ref: this.ref,\n 'data-key': document.key,\n contentEditable: readOnly ? null : true,\n suppressContentEditableWarning: true,\n className: className,\n autoCorrect: props.autoCorrect ? 'on' : 'off',\n spellCheck: spellCheck,\n style: style,\n role: readOnly ? null : role || 'textbox',\n tabIndex: tabIndex\n // COMPAT: The Grammarly Chrome extension works by changing the DOM out\n // from under `contenteditable` elements, which leads to weird behaviors\n // so we have to disable it like this. (2017/04/24)\n , 'data-gramm': false\n }),\n children\n );\n }\n\n /**\n * Render a `child` node of the document.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @return {Element}\n */\n\n }]);\n return Content;\n}(React.Component);\n\n/**\n * Mix in handler prop types.\n */\n\nContent.propTypes = {\n autoCorrect: Types.bool.isRequired,\n className: Types.string,\n editor: Types.object.isRequired,\n readOnly: Types.bool.isRequired,\n role: Types.string,\n spellCheck: Types.bool.isRequired,\n style: Types.object,\n tabIndex: Types.number,\n tagName: Types.string };\nContent.defaultProps = {\n style: {},\n tagName: 'div' };\nEVENT_HANDLERS.forEach(function (handler) {\n Content.propTypes[handler] = Types.func.isRequired;\n});\n\n/**\n * The transfer types that Slate recognizes.\n *\n * @type {Object}\n */\n\nvar TRANSFER_TYPES = {\n FRAGMENT: 'application/x-slate-fragment',\n HTML: 'text/html',\n NODE: 'application/x-slate-node',\n RICH: 'text/rtf',\n TEXT: 'text/plain'\n\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n\nvar FRAGMENT = TRANSFER_TYPES.FRAGMENT;\nvar HTML = TRANSFER_TYPES.HTML;\nvar TEXT = TRANSFER_TYPES.TEXT;\n\n/**\n * Prepares a Slate document fragment to be copied to the clipboard.\n *\n * @param {Event} event\n * @param {Value} value\n * @param {Document} [fragment]\n */\n\nfunction cloneFragment(event, value) {\n var fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : value.fragment;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {\n return undefined;\n };\n\n var window = getWindow(event.target);\n var native = window.getSelection();\n var schema = value.schema;\n var _value$selection = value.selection,\n start = _value$selection.start,\n end = _value$selection.end;\n\n var startVoid = value.document.getClosestVoid(start.key, schema);\n var endVoid = value.document.getClosestVoid(end.key, schema);\n\n // If the selection is collapsed, and it isn't inside a void node, abort.\n if (native.isCollapsed && !startVoid) return;\n\n // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n var encoded = Base64.serializeNode(fragment);\n var range = native.getRangeAt(0);\n var contents = range.cloneContents();\n var attach = contents.childNodes[0];\n\n // Make sure attach is a non-empty node, since empty nodes will not get copied\n contents.childNodes.forEach(function (node) {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node;\n }\n });\n\n // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n if (endVoid) {\n var r = range.cloneRange();\n var node = findDOMNode$1(endVoid, window);\n r.setEndAfter(node);\n contents = r.cloneContents();\n }\n\n // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `<div>/<span>` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n if (startVoid) {\n attach = contents.childNodes[0].childNodes[1].firstChild;\n }\n\n // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n [].slice.call(contents.querySelectorAll(ZERO_WIDTH_SELECTOR)).forEach(function (zw) {\n var isNewline = zw.getAttribute(ZERO_WIDTH_ATTRIBUTE) === 'n';\n zw.textContent = isNewline ? '\\n' : '';\n });\n\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `<span>` so we have something to set an attribute on.\n if (attach.nodeType == 3) {\n var span = window.document.createElement('span');\n\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n span.style.whiteSpace = 'pre';\n\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n\n attach.setAttribute('data-slate-fragment', encoded);\n\n // Creates value from only the selected blocks\n // Then gets plaintext for clipboard with proper linebreaks for BLOCK elements\n // Via Plain serializer\n var valFromSelection = Value.create({ document: fragment });\n var plainText = Plain.serialize(valFromSelection);\n\n // Add the phony content to a div element. This is needed to copy the\n // contents into the html clipboard register.\n var div = window.document.createElement('div');\n div.appendChild(contents);\n\n // For browsers supporting it, we set the clipboard registers manually,\n // since the result is more predictable.\n // COMPAT: IE supports the setData method, but only in restricted sense.\n // IE doesn't support arbitrary MIME types or common ones like 'text/plain';\n // it only accepts \"Text\" (which gets mapped to 'text/plain') and \"Url\"\n // (mapped to 'text/url-list'); so, we should only enter block if !IS_IE\n if (event.clipboardData && event.clipboardData.setData && !IS_IE) {\n event.preventDefault();\n event.clipboardData.setData(TEXT, plainText);\n event.clipboardData.setData(FRAGMENT, encoded);\n event.clipboardData.setData(HTML, div.innerHTML);\n callback();\n }\n\n // COMPAT: For browser that don't support the Clipboard API's setData method,\n // we must rely on the browser to natively copy what's selected.\n // So we add the div (containing our content) to the DOM, and select it.\n var editor = event.target.closest('[data-slate-editor]');\n div.setAttribute('contenteditable', true);\n div.style.position = 'absolute';\n div.style.left = '-9999px';\n editor.appendChild(div);\n native.selectAllChildren(div);\n\n // Revert to the previous selection right after copying.\n window.requestAnimationFrame(function () {\n editor.removeChild(div);\n removeAllRanges(native);\n native.addRange(range);\n callback();\n });\n}\n\n/**\n * Find a Slate node from a DOM `element`.\n *\n * @param {Element} element\n * @param {Value} value\n * @return {Node|Null}\n */\n\nfunction findNode(element, value) {\n var closest = element.closest('[data-key]');\n if (!closest) return null;\n\n var key = closest.getAttribute('data-key');\n if (!key) return null;\n\n var node = value.document.getNode(key);\n return node || null;\n}\n\n/**\n * Get the target range from a DOM `event`.\n *\n * @param {Event} event\n * @param {Value} value\n * @return {Range}\n */\n\nfunction getEventRange(event, value) {\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var _event = event,\n x = _event.x,\n y = _event.y,\n target = _event.target;\n\n if (x == null || y == null) return null;\n\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(target, value);\n if (!node) return null;\n\n // If the drop target is inside a void node, move it into either the next or\n // previous node, depending on which side the `x` and `y` coordinates are\n // closest to.\n if (schema.isVoid(node)) {\n var rect = target.getBoundingClientRect();\n var isPrevious = node.object == 'inline' ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n\n var text = node.getFirstText();\n var _range = document.createRange();\n\n if (isPrevious) {\n var previousText = document.getPreviousText(text.key);\n\n if (previousText) {\n return _range.moveToEndOfNode(previousText);\n }\n }\n\n var nextText = document.getNextText(text.key);\n return nextText ? _range.moveToStartOfNode(nextText) : null;\n }\n\n // Else resolve a range from the caret position where the drop occured.\n var window = getWindow(target);\n var native = void 0;\n\n // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n if (window.document.caretRangeFromPoint) {\n native = window.document.caretRangeFromPoint(x, y);\n } else if (window.document.caretPositionFromPoint) {\n var position = window.document.caretPositionFromPoint(x, y);\n native = window.document.createRange();\n native.setStart(position.offsetNode, position.offset);\n native.setEnd(position.offsetNode, position.offset);\n } else if (window.document.body.createTextRange) {\n // COMPAT: In IE, `caretRangeFromPoint` and\n // `caretPositionFromPoint` don't exist. (2018/07/11)\n native = window.document.body.createTextRange();\n\n try {\n native.moveToPoint(x, y);\n } catch (error) {\n // IE11 will raise an `unspecified error` if `moveToPoint` is\n // called during a dropEvent.\n return null;\n }\n }\n\n // Resolve a Slate range from the DOM range.\n var range = findRange(native, value);\n if (!range) return null;\n\n return range;\n}\n\n/**\n * Transfer types.\n *\n * @type {String}\n */\n\nvar FRAGMENT$1 = TRANSFER_TYPES.FRAGMENT;\nvar HTML$1 = TRANSFER_TYPES.HTML;\nvar NODE = TRANSFER_TYPES.NODE;\nvar RICH = TRANSFER_TYPES.RICH;\nvar TEXT$1 = TRANSFER_TYPES.TEXT;\n\n/**\n * Fragment matching regexp for HTML nodes.\n *\n * @type {RegExp}\n */\n\nvar FRAGMENT_MATCHER = / data-slate-fragment=\"([^\\s\"]+)\"/;\n\n/**\n * Get the transfer data from an `event`.\n *\n * @param {Event} event\n * @return {Object}\n */\n\nfunction getEventTransfer(event) {\n // COMPAT: IE 11 doesn't populate nativeEvent with either\n // dataTransfer or clipboardData. We'll need to use the base event\n // object (2018/14/6)\n if (!IS_IE && event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n var fragment = getType(transfer, FRAGMENT$1);\n var node = getType(transfer, NODE);\n var html = getType(transfer, HTML$1);\n var rich = getType(transfer, RICH);\n var text = getType(transfer, TEXT$1);\n var files = void 0;\n\n // If there isn't a fragment, but there is HTML, check to see if the HTML is\n // actually an encoded fragment.\n if (!fragment && html && ~html.indexOf(' data-slate-fragment=\"')) {\n var matches = FRAGMENT_MATCHER.exec(html);\n\n var _matches = slicedToArray(matches, 2),\n full = _matches[0],\n encoded = _matches[1]; // eslint-disable-line no-unused-vars\n\n\n if (encoded) fragment = encoded;\n }\n\n // COMPAT: Edge doesn't handle custom data types\n // These will be embedded in text/plain in this case (2017/7/12)\n if (text) {\n var embeddedTypes = getEmbeddedTypes(text);\n\n if (embeddedTypes[FRAGMENT$1]) fragment = embeddedTypes[FRAGMENT$1];\n if (embeddedTypes[NODE]) node = embeddedTypes[NODE];\n if (embeddedTypes[TEXT$1]) text = embeddedTypes[TEXT$1];\n }\n\n // Decode a fragment or node if they exist.\n if (fragment) fragment = Base64.deserializeNode(fragment);\n if (node) node = Base64.deserializeNode(node);\n\n // COMPAT: Edge sometimes throws 'NotSupportedError'\n // when accessing `transfer.items` (2017/7/12)\n try {\n // Get and normalize files if they exist.\n if (transfer.items && transfer.items.length) {\n files = Array.from(transfer.items).map(function (item) {\n return item.kind == 'file' ? item.getAsFile() : null;\n }).filter(function (exists) {\n return exists;\n });\n } else if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n } catch (err) {\n if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n }\n\n // Determine the type of the data.\n var data = { files: files, fragment: fragment, html: html, node: node, rich: rich, text: text };\n data.type = getTransferType(data);\n return data;\n}\n\n/**\n * Takes text input, checks whether contains embedded data\n * and returns object with original text +/- additional data\n *\n * @param {String} text\n * @return {Object}\n */\n\nfunction getEmbeddedTypes(text) {\n var prefix = 'SLATE-DATA-EMBED::';\n\n if (text.substring(0, prefix.length) != prefix) {\n return { TEXT: text };\n }\n\n // Attempt to parse, if fails then just standard text/plain\n // Otherwise, already had data embedded\n try {\n return JSON.parse(text.substring(prefix.length));\n } catch (err) {\n throw new Error('Unable to parse custom Slate drag event data.');\n }\n}\n\n/**\n * Get the type of a transfer from its `data`.\n *\n * @param {Object} data\n * @return {String}\n */\n\nfunction getTransferType(data) {\n if (data.fragment) return 'fragment';\n if (data.node) return 'node';\n\n // COMPAT: Microsoft Word adds an image of the selected text to the data.\n // Since files are preferred over HTML or text, this would cause the type to\n // be considered `files`. But it also adds rich text data so we can check\n // for that and properly set the type to `html` or `text`. (2016/11/21)\n if (data.rich && data.html) return 'html';\n if (data.rich && data.text) return 'text';\n\n if (data.files && data.files.length) return 'files';\n if (data.html) return 'html';\n if (data.text) return 'text';\n return 'unknown';\n}\n\n/**\n * Get one of types `TYPES.FRAGMENT`, `TYPES.NODE`, `text/html`, `text/rtf` or\n * `text/plain` from transfers's `data` if possible, otherwise return null.\n *\n * @param {Object} transfer\n * @param {String} type\n * @return {String}\n */\n\nfunction getType(transfer, type) {\n if (!transfer.types || !transfer.types.length) {\n // COMPAT: In IE 11, there is no `types` field but `getData('Text')`\n // is supported`. (2017/06/23)\n return type == TEXT$1 ? transfer.getData('Text') || null : null;\n }\n\n // COMPAT: In Edge, transfer.types doesn't respond to `indexOf`. (2017/10/25)\n var types = Array.from(transfer.types);\n\n return types.indexOf(type) !== -1 ? transfer.getData(type) || null : null;\n}\n\n/**\n * The default plain text transfer type.\n *\n * @type {String}\n */\n\nvar TEXT$2 = TRANSFER_TYPES.TEXT;\n\n/**\n * Set data with `type` and `content` on an `event`.\n *\n * COMPAT: In Edge, custom types throw errors, so embed all non-standard\n * types in text/plain compound object. (2017/7/12)\n *\n * @param {Event} event\n * @param {String} type\n * @param {String} content\n */\n\nfunction setEventTransfer(event, type, content) {\n var mime = TRANSFER_TYPES[type.toUpperCase()];\n\n if (!mime) {\n throw new Error('Cannot set unknown transfer type \"' + mime + '\".');\n }\n\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n\n try {\n transfer.setData(mime, content);\n // COMPAT: Safari needs to have the 'text' (and not 'text/plain') value in dataTransfer\n // to display the cursor while dragging internally.\n transfer.setData('text', transfer.getData('text'));\n } catch (err) {\n var prefix = 'SLATE-DATA-EMBED::';\n var text = transfer.getData(TEXT$2);\n var obj = {};\n\n // If the existing plain text data is prefixed, it's Slate JSON data.\n if (text.substring(0, prefix.length) === prefix) {\n try {\n obj = JSON.parse(text.substring(prefix.length));\n } catch (e) {\n throw new Error('Failed to parse Slate data from `DataTransfer` object.');\n }\n } else {\n // Otherwise, it's just set it as is.\n obj[TEXT$2] = text;\n }\n\n obj[mime] = content;\n var string = '' + prefix + JSON.stringify(obj);\n transfer.setData(TEXT$2, string);\n }\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$5 = Debug('slate:after');\n\n/**\n * The after plugin.\n *\n * @return {Object}\n */\n\nfunction AfterPlugin() {\n var isDraggingInternally = null;\n\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n debug$5('onBeforeInput', { event: event });\n\n var isSynthetic = !!event.nativeEvent;\n\n // If the event is synthetic, it's React's polyfill of `beforeinput` that\n // isn't a true `beforeinput` event with meaningful information. It only\n // gets triggered for character insertions, so we can just insert directly.\n if (isSynthetic) {\n event.preventDefault();\n change.insertText(event.data);\n return;\n }\n\n // Otherwise, we can use the information in the `beforeinput` event to\n // figure out the exact change that will occur, and prevent it.\n\n var _event$getTargetRange = event.getTargetRanges(),\n _event$getTargetRange2 = slicedToArray(_event$getTargetRange, 1),\n targetRange = _event$getTargetRange2[0];\n\n if (!targetRange) return;\n\n event.preventDefault();\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var range = findRange(targetRange, value);\n\n switch (event.inputType) {\n case 'deleteByDrag':\n case 'deleteByCut':\n case 'deleteContent':\n case 'deleteContentBackward':\n case 'deleteContentForward':\n {\n change.deleteAtRange(range);\n return;\n }\n\n case 'deleteWordBackward':\n {\n change.deleteWordBackwardAtRange(range);\n return;\n }\n\n case 'deleteWordForward':\n {\n change.deleteWordForwardAtRange(range);\n return;\n }\n\n case 'deleteSoftLineBackward':\n case 'deleteHardLineBackward':\n {\n change.deleteLineBackwardAtRange(range);\n return;\n }\n\n case 'deleteSoftLineForward':\n case 'deleteHardLineForward':\n {\n change.deleteLineForwardAtRange(range);\n return;\n }\n\n case 'insertLineBreak':\n case 'insertParagraph':\n {\n var hasVoidParent = document.hasVoidParent(selection.start.path, schema);\n\n if (hasVoidParent) {\n change.moveToStartOfNextText();\n } else {\n change.splitBlockAtRange(range);\n }\n\n return;\n }\n\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n // COMPAT: `data` should have the text for the `insertText` input type\n // and `dataTransfer` should have the text for the\n // `insertReplacementText` input type, but Safari uses `insertText` for\n // spell check replacements and sets `data` to `null`. (2018/08/09)\n var text = event.data == null ? event.dataTransfer.getData('text/plain') : event.data;\n\n if (text == null) return;\n\n change.insertTextAtRange(range, text, selection.marks);\n\n // If the text was successfully inserted, and the selection had marks\n // on it, unset the selection's marks.\n if (selection.marks && value.document != change.value.document) {\n change.select({ marks: null });\n }\n\n return;\n }\n }\n }\n\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBlur(event, change, editor) {\n debug$5('onBlur', { event: event });\n\n change.blur();\n }\n\n /**\n * On click.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onClick(event, change, editor) {\n if (editor.props.readOnly) {\n return true;\n }\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(event.target, value);\n\n if (!node) {\n return;\n }\n\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (schema.isVoid(node) || ancestors.some(function (a) {\n return schema.isVoid(a);\n }));\n\n if (isVoid) {\n // COMPAT: In Chrome & Safari, selections that are at the zero offset of\n // an inline node will be automatically replaced to be at the last offset\n // of a previous inline node, which screws us up, so we always want to set\n // it to the end of the node. (2016/11/29)\n change.focus().moveToEndOfNode(node);\n }\n\n debug$5('onClick', { event: event });\n }\n\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCopy(event, change, editor) {\n debug$5('onCopy', { event: event });\n\n cloneFragment(event, change.value);\n }\n\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCut(event, change, editor) {\n debug$5('onCut', { event: event });\n\n // Once the fake cut content has successfully been added to the clipboard,\n // delete the content in the current selection.\n cloneFragment(event, change.value, change.value.fragment, function () {\n // If user cuts a void block node or a void inline node,\n // manually removes it since selection is collapsed in this case.\n var value = change.value;\n var endBlock = value.endBlock,\n endInline = value.endInline,\n selection = value.selection,\n schema = value.schema;\n var isCollapsed = selection.isCollapsed;\n\n var isVoidBlock = endBlock && schema.isVoid(endBlock) && isCollapsed;\n var isVoidInline = endInline && schema.isVoid(endInline) && isCollapsed;\n\n if (isVoidBlock) {\n editor.change(function (c) {\n return c.removeNodeByKey(endBlock.key);\n });\n } else if (isVoidInline) {\n editor.change(function (c) {\n return c.removeNodeByKey(endInline.key);\n });\n } else {\n editor.change(function (c) {\n return c.delete();\n });\n }\n });\n }\n\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnd(event, change, editor) {\n debug$5('onDragEnd', { event: event });\n\n isDraggingInternally = null;\n }\n\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragOver(event, change, editor) {\n debug$5('onDragOver', { event: event });\n }\n\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragStart(event, change, editor) {\n debug$5('onDragStart', { event: event });\n\n isDraggingInternally = true;\n\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var node = findNode(event.target, value);\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (schema.isVoid(node) || ancestors.some(function (a) {\n return schema.isVoid(a);\n }));\n var selectionIncludesNode = value.blocks.some(function (block) {\n return block.key === node.key;\n });\n\n // If a void block is dragged and is not selected, select it (necessary for local drags).\n if (isVoid && !selectionIncludesNode) {\n change.moveToRangeOfNode(node);\n }\n\n var fragment = change.value.fragment;\n var encoded = Base64.serializeNode(fragment);\n setEventTransfer(event, 'fragment', encoded);\n }\n\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDrop(event, change, editor) {\n debug$5('onDrop', { event: event });\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var window = getWindow(event.target);\n var target = getEventRange(event, value);\n if (!target) return;\n\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n\n change.focus();\n\n // If the drag is internal and the target is after the selection, it\n // needs to account for the selection's content being deleted.\n if (isDraggingInternally && selection.end.key == target.end.key && selection.end.offset < target.end.offset) {\n target = target.moveForward(selection.start.key == selection.end.key ? 0 - selection.end.offset + selection.start.offset : 0 - selection.end.offset);\n }\n\n if (isDraggingInternally) {\n change.delete();\n }\n\n change.select(target);\n\n if (type == 'text' || type == 'html') {\n var _target = target,\n anchor = _target.anchor;\n\n var hasVoidParent = document.hasVoidParent(anchor.key, schema);\n\n if (hasVoidParent) {\n var n = document.getNode(anchor.key);\n\n while (hasVoidParent) {\n n = document.getNextText(n.key);\n if (!n) break;\n hasVoidParent = document.hasVoidParent(n.key, schema);\n }\n\n if (n) change.moveToStartOfNode(n);\n }\n\n if (text) {\n text.split('\\n').forEach(function (line, i) {\n if (i > 0) change.splitBlock();\n change.insertText(line);\n });\n }\n }\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n // COMPAT: React's onSelect event breaks after an onDrop event\n // has fired in a node: https://github.com/facebook/react/issues/11379.\n // Until this is fixed in React, we dispatch a mouseup event on that\n // DOM node, since that will make it go back to normal.\n var focusNode = document.getNode(target.focus.key);\n var el = findDOMNode$1(focusNode, window);\n if (!el) return;\n\n el.dispatchEvent(new MouseEvent('mouseup', {\n view: window,\n bubbles: true,\n cancelable: true\n }));\n }\n\n /**\n * On input.\n *\n * @param {Event} eventvent\n * @param {Change} change\n */\n\n function onInput(event, change, editor) {\n debug$5('onInput', { event: event });\n\n var window = getWindow(event.target);\n var value = change.value;\n\n // Get the selection point.\n\n var native = window.getSelection();\n var anchorNode = native.anchorNode;\n\n var point = findPoint(anchorNode, 0, value);\n if (!point) return;\n\n // Get the text node and leaf in question.\n var document = value.document,\n selection = value.selection;\n\n var node = document.getDescendant(point.key);\n var block = document.getClosestBlock(node.key);\n var leaves = node.getLeaves();\n var lastText = block.getLastText();\n var lastLeaf = leaves.last();\n var start = 0;\n var end = 0;\n\n var leaf = leaves.find(function (r) {\n start = end;\n end += r.text.length;\n if (end > point.offset) return true;\n }) || lastLeaf;\n\n // Get the text information.\n var text = leaf.text;\n var textContent = anchorNode.textContent;\n\n var isLastText = node == lastText;\n var isLastLeaf = leaf == lastLeaf;\n var lastChar = textContent.charAt(textContent.length - 1);\n\n // COMPAT: If this is the last leaf, and the DOM text ends in a new line,\n // we will have added another new line in <Leaf>'s render method to account\n // for browsers collapsing a single trailing new lines, so remove it.\n if (isLastText && isLastLeaf && lastChar == '\\n') {\n textContent = textContent.slice(0, -1);\n }\n\n // If the text is no different, abort.\n if (textContent == text) return;\n\n // Determine what the selection should be after changing the text.\n var delta = textContent.length - text.length;\n var corrected = selection.moveToEnd().moveForward(delta);\n var entire = selection.moveAnchorTo(point.key, start).moveFocusTo(point.key, end);\n\n entire = document.resolveRange(entire);\n\n // Change the current value to have the leaf's text replaced.\n change.insertTextAtRange(entire, textContent, leaf.marks).select(corrected);\n }\n\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onKeyDown(event, change, editor) {\n debug$5('onKeyDown', { event: event });\n\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n schema = value.schema;\n\n var hasVoidParent = document.hasVoidParent(selection.start.path, schema);\n\n // COMPAT: In iOS, some of these hotkeys are handled in the\n // `onNativeBeforeInput` handler of the `<Content>` component in order to\n // preserve native autocorrect behavior, so they shouldn't be handled here.\n if (Hotkeys.isSplitBlock(event) && !IS_IOS) {\n return hasVoidParent ? change.moveToStartOfNextText() : change.splitBlock();\n }\n\n if (Hotkeys.isDeleteBackward(event) && !IS_IOS) {\n return change.deleteCharBackward();\n }\n\n if (Hotkeys.isDeleteForward(event) && !IS_IOS) {\n return change.deleteCharForward();\n }\n\n if (Hotkeys.isDeleteLineBackward(event)) {\n return change.deleteLineBackward();\n }\n\n if (Hotkeys.isDeleteLineForward(event)) {\n return change.deleteLineForward();\n }\n\n if (Hotkeys.isDeleteWordBackward(event)) {\n return change.deleteWordBackward();\n }\n\n if (Hotkeys.isDeleteWordForward(event)) {\n return change.deleteWordForward();\n }\n\n if (Hotkeys.isRedo(event)) {\n return change.redo();\n }\n\n if (Hotkeys.isUndo(event)) {\n return change.undo();\n }\n\n // COMPAT: Certain browsers don't handle the selection updates properly. In\n // Chrome, the selection isn't properly extended. And in Firefox, the\n // selection isn't properly collapsed. (2017/10/17)\n if (Hotkeys.isMoveLineBackward(event)) {\n event.preventDefault();\n return change.moveToStartOfBlock();\n }\n\n if (Hotkeys.isMoveLineForward(event)) {\n event.preventDefault();\n return change.moveToEndOfBlock();\n }\n\n if (Hotkeys.isExtendLineBackward(event)) {\n event.preventDefault();\n return change.moveFocusToStartOfBlock();\n }\n\n if (Hotkeys.isExtendLineForward(event)) {\n event.preventDefault();\n return change.moveFocusToEndOfBlock();\n }\n\n // COMPAT: If a void node is selected, or a zero-width text node adjacent to\n // an inline is selected, we need to handle these hotkeys manually because\n // browsers won't know what to do.\n if (Hotkeys.isMoveBackward(event)) {\n var previousText = value.previousText,\n startText = value.startText;\n\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key, schema);\n\n if (hasVoidParent || isPreviousInVoid || startText.text == '') {\n event.preventDefault();\n return change.moveBackward();\n }\n }\n\n if (Hotkeys.isMoveForward(event)) {\n var nextText = value.nextText,\n _startText = value.startText;\n\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key, schema);\n\n if (hasVoidParent || isNextInVoid || _startText.text == '') {\n event.preventDefault();\n return change.moveForward();\n }\n }\n\n if (Hotkeys.isExtendBackward(event)) {\n var _previousText = value.previousText,\n _startText2 = value.startText;\n\n var _isPreviousInVoid = _previousText && document.hasVoidParent(_previousText.key, schema);\n\n if (hasVoidParent || _isPreviousInVoid || _startText2.text == '') {\n event.preventDefault();\n return change.moveFocusBackward();\n }\n }\n\n if (Hotkeys.isExtendForward(event)) {\n var _nextText = value.nextText,\n _startText3 = value.startText;\n\n var _isNextInVoid = _nextText && document.hasVoidParent(_nextText.key, schema);\n\n if (hasVoidParent || _isNextInVoid || _startText3.text == '') {\n event.preventDefault();\n return change.moveFocusForward();\n }\n }\n }\n\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onPaste(event, change, editor) {\n debug$5('onPaste', { event: event });\n\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n if (type == 'text' || type == 'html') {\n if (!text) return;\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n startBlock = value.startBlock,\n schema = value.schema;\n\n if (schema.isVoid(startBlock)) return;\n\n var defaultBlock = startBlock;\n var defaultMarks = document.getInsertMarksAtRange(selection);\n var frag = Plain.deserialize(text, { defaultBlock: defaultBlock, defaultMarks: defaultMarks }).document;\n change.insertFragment(frag);\n }\n }\n\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onSelect(event, change, editor) {\n debug$5('onSelect', { event: event });\n\n var window = getWindow(event.target);\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n\n var native = window.getSelection();\n\n // If there are no ranges, the editor was blurred natively.\n if (!native.rangeCount) {\n change.blur();\n return;\n }\n\n // Otherwise, determine the Slate selection from the native one.\n var range = findRange(native, value);\n if (!range) return;\n\n var _range = range,\n anchor = _range.anchor,\n focus = _range.focus;\n\n var anchorText = document.getNode(anchor.key);\n var focusText = document.getNode(focus.key);\n var anchorInline = document.getClosestInline(anchor.key);\n var focusInline = document.getClosestInline(focus.key);\n var focusBlock = document.getClosestBlock(focus.key);\n var anchorBlock = document.getClosestBlock(anchor.key);\n\n // COMPAT: If the anchor point is at the start of a non-void, and the\n // focus point is inside a void node with an offset that isn't `0`, set\n // the focus offset to `0`. This is due to void nodes <span>'s being\n // positioned off screen, resulting in the offset always being greater\n // than `0`. Since we can't know what it really should be, and since an\n // offset of `0` is less destructive because it creates a hanging\n // selection, go with `0`. (2017/09/07)\n if (anchorBlock && !schema.isVoid(anchorBlock) && anchor.offset == 0 && focusBlock && schema.isVoid(focusBlock) && focus.offset != 0) {\n range = range.setFocus(focus.setOffset(0));\n }\n\n // COMPAT: If the selection is at the end of a non-void inline node, and\n // there is a node after it, put it in the node after instead. This\n // standardizes the behavior, since it's indistinguishable to the user.\n if (anchorInline && !schema.isVoid(anchorInline) && anchor.offset == anchorText.text.length) {\n var block = document.getClosestBlock(anchor.key);\n var next = block.getNextText(anchor.key);\n if (next) range = range.moveAnchorTo(next.key, 0);\n }\n\n if (focusInline && !schema.isVoid(focusInline) && focus.offset == focusText.text.length) {\n var _block = document.getClosestBlock(focus.key);\n var _next = _block.getNextText(focus.key);\n if (_next) range = range.moveFocusTo(_next.key, 0);\n }\n\n var selection = document.createSelection(range);\n selection = selection.setIsFocused(true);\n\n // Preserve active marks from the current selection.\n // They will be cleared by `change.select` if the selection actually moved.\n selection = selection.set('marks', value.selection.marks);\n\n change.select(selection);\n }\n\n /**\n * Render editor.\n *\n * @param {Object} props\n * @param {Editor} editor\n * @return {Object}\n */\n\n function renderEditor(props, editor) {\n var handlers = editor.handlers;\n\n return React.createElement(Content, _extends({}, handlers, {\n autoCorrect: props.autoCorrect,\n className: props.className,\n editor: editor,\n readOnly: props.readOnly,\n role: props.role,\n spellCheck: props.spellCheck,\n style: props.style,\n tabIndex: props.tabIndex,\n tagName: props.tagName\n }));\n }\n\n /**\n * Render node.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n function renderNode(props) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node;\n\n if (node.object != 'block' && node.object != 'inline') return;\n var Tag = node.object == 'block' ? 'div' : 'span';\n var style = { position: 'relative' };\n return React.createElement(\n Tag,\n _extends({}, attributes, { style: style }),\n children\n );\n }\n\n /**\n * Render placeholder.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n function renderPlaceholder(props) {\n var editor = props.editor,\n node = props.node;\n\n if (!editor.props.placeholder) return;\n if (editor.state.isComposing) return;\n if (node.object != 'block') return;\n if (!Text.isTextList(node.nodes)) return;\n if (node.text != '') return;\n if (editor.value.document.getBlocks().size > 1) return;\n\n var style = {\n pointerEvents: 'none',\n display: 'inline-block',\n width: '0',\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.333'\n };\n\n return React.createElement(\n 'span',\n { contentEditable: false, style: style },\n editor.props.placeholder\n );\n }\n\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onClick: onClick,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect,\n renderEditor: renderEditor,\n renderNode: renderNode,\n renderPlaceholder: renderPlaceholder\n };\n}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$6 = Debug('slate:before');\n\n/**\n * The core before plugin.\n *\n * @return {Object}\n */\n\nfunction BeforePlugin() {\n var activeElement = null;\n var compositionCount = 0;\n var isComposing = false;\n var isCopying = false;\n var isDragging = false;\n\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n var isSynthetic = !!event.nativeEvent;\n\n // COMPAT: If the browser supports Input Events Level 2, we will have\n // attached a custom handler for the real `beforeinput` events, instead of\n // allowing React's synthetic polyfill, so we need to ignore synthetics.\n if (isSynthetic && HAS_INPUT_EVENTS_LEVEL_2) return true;\n\n debug$6('onBeforeInput', { event: event });\n }\n\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBlur(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n\n var value = change.value;\n var schema = value.schema;\n var relatedTarget = event.relatedTarget,\n target = event.target;\n\n var window = getWindow(target);\n\n // COMPAT: If the current `activeElement` is still the previous one, this is\n // due to the window being blurred when the tab itself becomes unfocused, so\n // we want to abort early to allow to editor to stay focused when the tab\n // becomes focused again.\n if (activeElement == window.document.activeElement) return true;\n\n // COMPAT: The `relatedTarget` can be null when the new focus target is not\n // a \"focusable\" element (eg. a `<div>` without `tabindex` set).\n if (relatedTarget) {\n var el = findDOMNode(editor);\n\n // COMPAT: The event should be ignored if the focus is returning to the\n // editor from an embedded editable element (eg. an <input> element inside\n // a void node).\n if (relatedTarget == el) return true;\n\n // COMPAT: The event should be ignored if the focus is moving from the\n // editor to inside a void node's spacer element.\n if (relatedTarget.hasAttribute('data-slate-spacer')) return true;\n\n // COMPAT: The event should be ignored if the focus is moving to a non-\n // editable section of an element that isn't a void node (eg. a list item\n // of the check list example).\n var node = findNode(relatedTarget, value);\n if (el.contains(relatedTarget) && node && !schema.isVoid(node)) return true;\n }\n\n debug$6('onBlur', { event: event });\n }\n\n /**\n * On change.\n *\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onChange(change, editor) {\n var value = change.value;\n\n // If the value's schema isn't the editor's schema, update it. This can\n // happen on the initialization of the editor, or if the schema changes.\n // This change isn't save into history since only schema is updated.\n\n if (value.schema != editor.schema) {\n change.withoutSaving(function () {\n change.setValue({ schema: editor.schema }).normalize();\n });\n }\n\n debug$6('onChange');\n }\n\n /**\n * On composition end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCompositionEnd(event, change, editor) {\n var n = compositionCount;\n\n // The `count` check here ensures that if another composition starts\n // before the timeout has closed out this one, we will abort unsetting the\n // `isComposing` flag, since a composition is still in affect.\n window.requestAnimationFrame(function () {\n if (compositionCount > n) return;\n isComposing = false;\n\n // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n if (editor.state.isComposing) {\n editor.setState({ isComposing: false });\n }\n });\n\n debug$6('onCompositionEnd', { event: event });\n }\n\n /**\n * On composition start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCompositionStart(event, change, editor) {\n isComposing = true;\n compositionCount++;\n\n // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n if (!editor.state.isComposing) {\n editor.setState({ isComposing: true });\n }\n\n debug$6('onCompositionStart', { event: event });\n }\n\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCopy(event, change, editor) {\n var window = getWindow(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n\n debug$6('onCopy', { event: event });\n }\n\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onCut(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n var window = getWindow(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n\n debug$6('onCut', { event: event });\n }\n\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnd(event, change, editor) {\n isDragging = false;\n\n debug$6('onDragEnd', { event: event });\n }\n\n /**\n * On drag enter.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragEnter(event, change, editor) {\n debug$6('onDragEnter', { event: event });\n }\n\n /**\n * On drag exit.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragExit(event, change, editor) {\n debug$6('onDragExit', { event: event });\n }\n\n /**\n * On drag leave.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragLeave(event, change, editor) {\n debug$6('onDragLeave', { event: event });\n }\n\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragOver(event, change, editor) {\n // If the target is inside a void node, and only in this case,\n // call `preventDefault` to signal that drops are allowed.\n // When the target is editable, dropping is already allowed by\n // default, and calling `preventDefault` hides the cursor.\n var value = editor.value;\n var schema = value.schema;\n\n var node = findNode(event.target, editor.value);\n if (schema.isVoid(node)) event.preventDefault();\n\n // COMPAT: IE won't call onDrop on contentEditables unless the\n // default dragOver is prevented:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/913982/\n // (2018/07/11)\n if (IS_IE) event.preventDefault();\n\n // If a drag is already in progress, don't do this again.\n if (!isDragging) {\n isDragging = true;\n\n // COMPAT: IE will raise an `unspecified error` if dropEffect is\n // set. (2018/07/11)\n if (!IS_IE) {\n event.nativeEvent.dataTransfer.dropEffect = 'move';\n }\n }\n\n debug$6('onDragOver', { event: event });\n }\n\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDragStart(event, change, editor) {\n isDragging = true;\n\n debug$6('onDragStart', { event: event });\n }\n\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onDrop(event, change, editor) {\n // Nothing happens in read-only mode.\n if (editor.props.readOnly) return true;\n\n // Prevent default so the DOM's value isn't corrupted.\n event.preventDefault();\n\n debug$6('onDrop', { event: event });\n }\n\n /**\n * On focus.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onFocus(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n\n var el = findDOMNode(editor);\n\n // Save the new `activeElement`.\n var window = getWindow(event.target);\n activeElement = window.document.activeElement;\n\n // COMPAT: If the editor has nested editable elements, the focus can go to\n // those elements. In Firefox, this must be prevented because it results in\n // issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target != el) {\n el.focus();\n return true;\n }\n\n debug$6('onFocus', { event: event });\n }\n\n /**\n * On input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onInput(event, change, editor) {\n if (isComposing) return true;\n if (change.value.selection.isBlurred) return true;\n\n debug$6('onInput', { event: event });\n }\n\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onKeyDown(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n // When composing, we need to prevent all hotkeys from executing while\n // typing. However, certain characters also move the selection before\n // we're able to handle it, so prevent their default behavior.\n if (isComposing) {\n if (Hotkeys.isCompose(event)) event.preventDefault();\n return true;\n }\n\n // Certain hotkeys have native editing behaviors in `contenteditable`\n // elements which will change the DOM and cause our value to be out of sync,\n // so they need to always be prevented.\n if (!IS_IOS && (Hotkeys.isBold(event) || Hotkeys.isDeleteBackward(event) || Hotkeys.isDeleteForward(event) || Hotkeys.isDeleteLineBackward(event) || Hotkeys.isDeleteLineForward(event) || Hotkeys.isDeleteWordBackward(event) || Hotkeys.isDeleteWordForward(event) || Hotkeys.isItalic(event) || Hotkeys.isRedo(event) || Hotkeys.isSplitBlock(event) || Hotkeys.isTransposeCharacter(event) || Hotkeys.isUndo(event))) {\n event.preventDefault();\n }\n\n debug$6('onKeyDown', { event: event });\n }\n\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onPaste(event, change, editor) {\n if (editor.props.readOnly) return true;\n\n // Prevent defaults so the DOM state isn't corrupted.\n event.preventDefault();\n\n debug$6('onPaste', { event: event });\n }\n\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onSelect(event, change, editor) {\n if (isCopying) return true;\n if (isComposing) return true;\n if (editor.props.readOnly) return true;\n\n // Save the new `activeElement`.\n var window = getWindow(event.target);\n activeElement = window.document.activeElement;\n\n debug$6('onSelect', { event: event });\n }\n\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onChange: onChange,\n onCompositionEnd: onCompositionEnd,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragEnter: onDragEnter,\n onDragExit: onDragExit,\n onDragLeave: onDragLeave,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect\n };\n}\n\n/**\n * Noop.\n *\n * @return {Void}\n */\n\nfunction noop() {}\n\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$7 = Debug('slate:editor');\n\n/**\n * Editor.\n *\n * @type {Component}\n */\n\nvar Editor = function (_React$Component) {\n inherits(Editor, _React$Component);\n\n function Editor() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Editor);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Editor.__proto__ || Object.getPrototypeOf(Editor)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$4.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Initial state.\n *\n * @type {Object}\n */\n\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n /**\n * Create a set of bound event handlers.\n *\n * @type {Object}\n */\n\n createClass(Editor, [{\n key: 'componentDidMount',\n\n\n /**\n * When the component first mounts, flush any temporary changes, and then,\n * focus the editor if `autoFocus` is set.\n */\n\n value: function componentDidMount() {\n this.tmp.updates++;\n\n var autoFocus = this.props.autoFocus;\n var change = this.tmp.change;\n\n\n if (autoFocus) {\n if (change) {\n change.focus();\n } else {\n this.focus();\n }\n }\n\n if (change) {\n this.onChange(change);\n }\n }\n\n /**\n * When the component updates, flush any temporary change.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n this.tmp.updates++;\n\n var _tmp = this.tmp,\n change = _tmp.change,\n resolves = _tmp.resolves,\n updates = _tmp.updates;\n\n // If we've resolved a few times already, and it's exactly in line with\n // the updates, then warn the user that they may be doing something wrong.\n\n warning(resolves < 5 || resolves !== updates, 'A Slate <Editor> component is re-resolving `props.plugins` or `props.schema` on each update, which leads to poor performance. This is often due to passing in a new `schema` or `plugins` prop with each render by declaring them inline in your render function. Do not do this!');\n\n if (change) {\n this.onChange(change);\n }\n }\n\n /**\n * Render the editor.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n debug$7('render', this);\n var props = _extends({}, this.props);\n var tree = this.stack.render('renderEditor', props, this);\n return tree;\n }\n\n /**\n * Get the editor's current plugins.\n *\n * @return {Array}\n */\n\n }, {\n key: 'plugins',\n get: function get$$1() {\n var plugins = this.resolvePlugins(this.props.plugins, this.props.schema);\n return plugins;\n }\n\n /**\n * Get the editor's current schema.\n *\n * @return {Schema}\n */\n\n }, {\n key: 'schema',\n get: function get$$1() {\n var schema = this.resolveSchema(this.plugins);\n return schema;\n }\n\n /**\n * Get the editor's current stack.\n *\n * @return {Stack}\n */\n\n }, {\n key: 'stack',\n get: function get$$1() {\n var stack = this.resolveStack(this.plugins);\n return stack;\n }\n\n /**\n * Get the editor's current value.\n *\n * @return {Value}\n */\n\n }, {\n key: 'value',\n get: function get$$1() {\n // If the current `plugins` and `value` are the same as the last seen ones\n // that were saved in `tmp`, don't re-resolve because that will trigger\n // extra `onChange` runs.\n if (this.plugins === this.tmp.plugins && this.props.value === this.tmp.value) {\n return this.tmp.value;\n }\n\n var value = this.resolveValue(this.plugins, this.props.value);\n return value;\n }\n\n /**\n * Perform a change on the editor, passing `...args` to `change.call`.\n *\n * @param {Mixed} ...args\n */\n\n /**\n * Programmatically blur the editor.\n */\n\n /**\n * Programmatically focus the editor.\n */\n\n /**\n * On change.\n *\n * @param {Change} change\n */\n\n /**\n * On event.\n *\n * @param {String} handler\n * @param {Event} event\n */\n\n /**\n * Resolve a change from the current `plugins`, a potential `change` and its\n * current operations `size`.\n *\n * @param {Array} plugins\n * @param {Change} change\n * @param {Number} size\n */\n\n /**\n * Resolve a set of plugins from potential `plugins` and a `schema`.\n *\n * In addition to the plugins provided in props, this will initialize three\n * other plugins:\n *\n * - The top-level editor plugin, which allows for top-level handlers, etc.\n * - The two \"core\" plugins, one before all the other and one after.\n *\n * @param {Array|Void} plugins\n * @param {Schema|Object|Void} schema\n * @return {Array}\n */\n\n /**\n * Resolve a schema from the current `plugins`.\n *\n * @param {Array} plugins\n * @return {Schema}\n */\n\n /**\n * Resolve a stack from the current `plugins`.\n *\n * @param {Array} plugins\n * @return {Stack}\n */\n\n /**\n * Resolve a value from the current `plugins` and a potential `value`.\n *\n * @param {Array} plugins\n * @param {Value} value\n * @return {Change}\n */\n\n }]);\n return Editor;\n}(React.Component);\n\n/**\n * Mix in the prop types for the event handlers.\n */\n\nEditor.propTypes = {\n autoCorrect: Types.bool,\n autoFocus: Types.bool,\n className: Types.string,\n onChange: Types.func,\n placeholder: Types.any,\n plugins: Types.array,\n readOnly: Types.bool,\n role: Types.string,\n schema: Types.object,\n spellCheck: Types.bool,\n style: Types.object,\n tabIndex: Types.number,\n value: SlateTypes.value.isRequired };\nEditor.defaultProps = {\n autoFocus: false,\n autoCorrect: true,\n onChange: noop,\n plugins: [],\n readOnly: false,\n schema: {},\n spellCheck: true };\n\nvar _initialiseProps$4 = function _initialiseProps() {\n var _this2 = this;\n\n this.state = {};\n this.tmp = {\n change: null,\n isChanging: false,\n operationsSize: null,\n plugins: null,\n resolves: 0,\n updates: 0,\n value: null };\n this.handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = function (event) {\n return _this2.onEvent(handler, event);\n };\n return obj;\n }, {});\n\n this.change = function () {\n if (_this2.tmp.isChanging) {\n warning(false, \"The `editor.change` method was called from within an existing `editor.change` callback. This is not allowed, and often due to calling `editor.change` directly from a plugin's event handler which is unnecessary.\");\n\n return;\n }\n\n var change = _this2.value.change();\n\n try {\n _this2.tmp.isChanging = true;\n change.call.apply(change, arguments);\n } catch (error) {\n throw error;\n } finally {\n _this2.tmp.isChanging = false;\n }\n\n _this2.onChange(change);\n };\n\n this.blur = function () {\n _this2.change(function (c) {\n return c.blur();\n });\n };\n\n this.focus = function () {\n _this2.change(function (c) {\n return c.focus();\n });\n };\n\n this.onChange = function (change) {\n // If the change doesn't define any operations to apply, abort.\n if (change.operations.size === 0) {\n return;\n }\n\n debug$7('onChange', { change: change });\n change = _this2.resolveChange(_this2.plugins, change, change.operations.size);\n\n // Store a reference to the last `value` and `plugins` that were seen by the\n // editor, so we can know whether to normalize a new unknown value if one\n // is passed in via `this.props`.\n _this2.tmp.value = change.value;\n _this2.tmp.plugins = _this2.plugins;\n\n // Remove the temporary `change`, since it's being flushed.\n delete _this2.tmp.change;\n delete _this2.tmp.operationsSize;\n\n _this2.props.onChange(change);\n };\n\n this.onEvent = function (handler, event) {\n _this2.change(function (change) {\n _this2.stack.run(handler, event, change, _this2);\n });\n };\n\n this.resolveChange = memoizeOne(function (plugins, change, size) {\n var stack = _this2.resolveStack(plugins);\n stack.run('onChange', change, _this2);\n return change;\n });\n this.resolvePlugins = memoizeOne(function () {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n debug$7('resolvePlugins', { plugins: plugins, schema: schema });\n _this2.tmp.resolves++;\n\n var beforePlugin = BeforePlugin();\n var afterPlugin = AfterPlugin();\n var editorPlugin = { schema: schema };\n\n var _loop = function _loop(_prop) {\n // Skip `onChange` because the editor's `onChange` is special.\n if (_prop == 'onChange') return 'continue';\n\n // Skip `schema` because it can't be proxied easily, so it must be passed\n // in as an argument to this function instead.\n if (_prop == 'schema') return 'continue';\n\n // Define a function that will just proxies into `props`.\n editorPlugin[_prop] = function () {\n var _props;\n\n return _this2.props[_prop] && (_props = _this2.props)[_prop].apply(_props, arguments);\n };\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = PLUGIN_PROPS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _prop = _step2.value;\n\n var _ret2 = _loop(_prop);\n\n if (_ret2 === 'continue') continue;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return [beforePlugin, editorPlugin].concat(toConsumableArray(plugins), [afterPlugin]);\n });\n this.resolveSchema = memoizeOne(function (plugins) {\n debug$7('resolveSchema', { plugins: plugins });\n var schema = Schema.create({ plugins: plugins });\n return schema;\n });\n this.resolveStack = memoizeOne(function (plugins) {\n debug$7('resolveStack', { plugins: plugins });\n var stack = Stack.create({ plugins: plugins });\n return stack;\n });\n this.resolveValue = memoizeOne(function (plugins, value) {\n debug$7('resolveValue', { plugins: plugins, value: value });\n var change = value.change();\n change = _this2.resolveChange(plugins, change, change.operations.size);\n\n // Store the change and it's operations count so that it can be flushed once\n // the component next updates.\n _this2.tmp.change = change;\n _this2.tmp.operationsSize = change.operations.size;\n\n return change.value;\n });\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = EVENT_HANDLERS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var prop = _step.value;\n\n Editor.propTypes[prop] = Types.func;\n }\n\n /**\n * Export.\n *\n * @type {Component}\n */\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nvar index = {\n Editor: Editor,\n cloneFragment: cloneFragment,\n findDOMNode: findDOMNode$1,\n findDOMRange: findDOMRange,\n findNode: findNode,\n findRange: findRange,\n getEventRange: getEventRange,\n getEventTransfer: getEventTransfer,\n setEventTransfer: setEventTransfer,\n AfterPlugin: AfterPlugin,\n BeforePlugin: BeforePlugin\n};\n\nexport default index;\nexport { Editor, cloneFragment, findDOMNode$1 as findDOMNode, findDOMRange, findNode, findRange, getEventRange, getEventTransfer, setEventTransfer, AfterPlugin, BeforePlugin };\n//# sourceMappingURL=slate-react.es.js.map\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js b/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js new file mode 100644 index 0000000..62ff55b --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js @@ -0,0 +1,2 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1877)}({111:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},112:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},113:function(t,e,n){n(363);for(var r=n(34),o=n(60),i=n(77),a=n(38)("toStringTag"),s="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<s.length;c++){var u=s[c],l=r[u],f=l&&l.prototype;f&&!f[a]&&o(f,a,u),i[u]=i.Array}},116:function(t,e,n){var r=n(35);t.exports=function(t,e){if(!r(t))return t;var n,o;if(e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;if("function"==typeof(n=t.valueOf)&&!r(o=n.call(t)))return o;if(!e&&"function"==typeof(n=t.toString)&&!r(o=n.call(t)))return o;throw TypeError("Can't convert object to primitive value")}},117:function(t,e,n){var r=n(52),o=n(271),i=n(121),a=n(119)("IE_PROTO"),s=function(){},c=function(){var t,e=n(136)("iframe"),r=i.length;for(e.style.display="none",n(272).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("<script>document.F=Object<\/script>"),t.close(),c=t.F;r--;)delete c.prototype[i[r]];return c()};t.exports=Object.create||function(t,e){var n;return null!==t?(s.prototype=r(t),n=new s,s.prototype=null,n[a]=t):n=c(),void 0===e?n:o(n,e)}},118:function(t,e,n){var r=n(111),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},119:function(t,e,n){var r=n(120)("keys"),o=n(96);t.exports=function(t){return r[t]||(r[t]=o(t))}},120:function(t,e,n){var r=n(34),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return o[t]||(o[t]={})}},121:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},122:function(t,e,n){var r=n(46).f,o=n(61),i=n(38)("toStringTag");t.exports=function(t,e,n){t&&!o(t=n?t:t.prototype,i)&&r(t,i,{configurable:!0,value:e})}},124:function(t,e){e.f={}.propertyIsEnumerable},135:function(t,e){t.exports=!0},136:function(t,e,n){var r=n(35),o=n(34).document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},137:function(t,e,n){var r=n(96)("meta"),o=n(35),i=n(61),a=n(46).f,s=0,c=Object.isExtensible||function(){return!0},u=!n(58)(function(){return c(Object.preventExtensions({}))}),l=function(t){a(t,r,{value:{i:"O"+ ++s,w:{}}})},f=t.exports={KEY:r,NEED:!1,fastKey:function(t,e){if(!o(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!i(t,r)){if(!c(t))return"F";if(!e)return"E";l(t)}return t[r].i},getWeak:function(t,e){if(!i(t,r)){if(!c(t))return!0;if(!e)return!1;l(t)}return t[r].w},onFreeze:function(t){return u&&f.NEED&&c(t)&&!i(t,r)&&l(t),t}}},14:function(t,e,n){t.exports={default:n(219),__esModule:!0}},149:function(t,e,n){"use strict";e.__esModule=!0;var r=i(n(393)),o=i(n(20));function i(t){return t&&t.__esModule?t:{default:t}}e.default=function(){return function(t,e){if(Array.isArray(t))return t;if((0,r.default)(Object(t)))return function(t,e){var n=[],r=!0,i=!1,a=void 0;try{for(var s,c=(0,o.default)(t);!(r=(s=c.next()).done)&&(n.push(s.value),!e||n.length!==e);r=!0);}catch(t){i=!0,a=t}finally{try{!r&&c.return&&c.return()}finally{if(i)throw a}}return n}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},15:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},161:function(t,e,n){t.exports=!n(44)&&!n(58)(function(){return 7!=Object.defineProperty(n(136)("div"),"a",{get:function(){return 7}}).a})},162:function(t,e,n){var r=n(61),o=n(59),i=n(213)(!1),a=n(119)("IE_PROTO");t.exports=function(t,e){var n,s=o(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~i(u,n)||u.push(n));return u}},163:function(t,e,n){var r=n(95);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},164:function(t,e,n){var r=n(95),o=n(38)("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},166:function(t,e,n){e.f=n(38)},167:function(t,e,n){var r=n(34),o=n(18),i=n(135),a=n(166),s=n(46).f;t.exports=function(t){var e=o.Symbol||(o.Symbol=i?{}:r.Symbol||{});"_"==t.charAt(0)||t in e||s(e,t,{value:a.f(t)})}},18:function(t,e){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},185:function(t,e,n){"use strict";var r=n(135),o=n(26),i=n(212),a=n(60),s=n(61),c=n(77),u=n(354),l=n(122),f=n(215),p=n(38)("iterator"),h=!([].keys&&"next"in[].keys()),d=function(){return this};t.exports=function(t,e,n,_,v,y,m){u(n,e,_);var g,b,w,x=function(t){if(!h&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},j=e+" Iterator",k="values"==v,E=!1,C=t.prototype,O=C[p]||C["@@iterator"]||v&&C[v],S=O||x(v),T=v?k?x("entries"):S:void 0,F="Array"==e&&C.entries||O;if(F&&(w=f(F.call(new t)))!==Object.prototype&&w.next&&(l(w,j,!0),r||s(w,p)||a(w,p,d)),k&&O&&"values"!==O.name&&(E=!0,S=function(){return O.call(this)}),r&&!m||!h&&!E&&C[p]||a(C,p,S),c[e]=S,c[j]=d,v)if(g={values:k?S:x("values"),keys:y?S:x("keys"),entries:T},m)for(b in g)b in C||i(C,b,g[b]);else o(o.P+o.F*(h||E),e,g);return g}},186:function(t,e,n){var r=n(164),o=n(38)("iterator"),i=n(77);t.exports=n(18).getIteratorMethod=function(t){if(void 0!=t)return t[o]||t["@@iterator"]||i[r(t)]}},187:function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(218),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(15))},1877:function(t,e,n){"use strict";var r=new(n(1878).IndexedDBStoreWorker)(postMessage);onmessage=r.onMessage},1878:function(t,e,n){"use strict";t.exports.IndexedDBStoreWorker=n(1879)},1879:function(t,e,n){"use strict";var r=c(n(51)),o=c(n(4)),i=c(n(5)),a=c(n(9)),s=c(n(396));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e){(0,o.default)(this,t),this.backend=null,this.postMessage=e,this.onMessage=this.onMessage.bind(this)}return(0,i.default)(t,[{key:"onMessage",value:function(t){var e,n,o=this,i=t.data,c=void 0;switch(i.command){case"_setupWorker":this.backend=new s.default(indexedDB,i.args[0]),c=a.default.resolve();break;case"connect":c=this.backend.connect();break;case"isNewlyCreated":c=this.backend.isNewlyCreated();break;case"clearDatabase":c=this.backend.clearDatabase().then(function(t){return{}});break;case"getSavedSync":c=this.backend.getSavedSync(!1);break;case"setSyncData":c=(e=this.backend).setSyncData.apply(e,(0,r.default)(i.args));break;case"syncToDatabase":c=(n=this.backend).syncToDatabase.apply(n,(0,r.default)(i.args)).then(function(){return{}});break;case"getUserPresenceEvents":c=this.backend.getUserPresenceEvents();break;case"getNextBatchToken":c=this.backend.getNextBatchToken();break;case"getOutOfBandMembers":c=this.backend.getOutOfBandMembers(i.args[0]);break;case"clearOutOfBandMembers":c=this.backend.clearOutOfBandMembers(i.args[0]);break;case"setOutOfBandMembers":c=this.backend.setOutOfBandMembers(i.args[0],i.args[1]);break;case"getClientOptions":c=this.backend.getClientOptions();break;case"storeClientOptions":c=this.backend.storeClientOptions(i.args[0])}void 0!==c?c.done(function(t){o.postMessage.call(null,{command:"cmd_success",seq:i.seq,result:t})},function(t){console.error("Error running command: "+i.command),console.error(t),o.postMessage.call(null,{command:"cmd_fail",seq:i.seq,error:{message:t.message,name:t.name}})}):this.postMessage({command:"cmd_fail",seq:i.seq,error:"Unrecognised command"})}}]),t}();t.exports=u},189:function(t,e){e.f=Object.getOwnPropertySymbols},19:function(t,e,n){t.exports=n(216)},190:function(t,e){},20:function(t,e,n){t.exports={default:n(391),__esModule:!0}},211:function(t,e,n){t.exports={default:n(352),__esModule:!0}},212:function(t,e,n){t.exports=n(60)},213:function(t,e,n){var r=n(59),o=n(118),i=n(214);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=o(c.length),l=i(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},214:function(t,e,n){var r=n(111),o=Math.max,i=Math.min;t.exports=function(t,e){return(t=r(t))<0?o(t+e,0):i(t,e)}},215:function(t,e,n){var r=n(61),o=n(87),i=n(119)("IE_PROTO"),a=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=o(t),r(t,i)?t[i]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?a:null}},216:function(t,e,n){var r=function(){return this}()||Function("return this")(),o=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,i=o&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(217),o)r.regeneratorRuntime=i;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},217:function(t,e){!function(e){"use strict";var n,r=Object.prototype,o=r.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag",u="object"==typeof t,l=e.regeneratorRuntime;if(l)u&&(t.exports=l);else{(l=e.regeneratorRuntime=u?t.exports:{}).wrap=b;var f="suspendedStart",p="suspendedYield",h="executing",d="completed",_={},v={};v[a]=function(){return this};var y=Object.getPrototypeOf,m=y&&y(y(P([])));m&&m!==r&&o.call(m,a)&&(v=m);var g=k.prototype=x.prototype=Object.create(v);j.prototype=g.constructor=k,k.constructor=j,k[c]=j.displayName="GeneratorFunction",l.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===j||"GeneratorFunction"===(e.displayName||e.name))},l.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,k):(t.__proto__=k,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(g),t},l.awrap=function(t){return{__await:t}},E(C.prototype),C.prototype[s]=function(){return this},l.AsyncIterator=C,l.async=function(t,e,n,r){var o=new C(b(t,e,n,r));return l.isGeneratorFunction(e)?o:o.next().then(function(t){return t.done?t.value:o.next()})},E(g),g[c]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},l.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},l.values=P,F.prototype={constructor:F,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(T),!t)for(var e in this)"t"===e.charAt(0)&&o.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,o){return s.type="throw",s.arg=t,e.next=r,o&&(e.method="next",e.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,_):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),_},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),T(n),_}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;T(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:P(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),_}}}function b(t,e,n,r){var o=e&&e.prototype instanceof x?e:x,i=Object.create(o.prototype),a=new F(r||[]);return i._invoke=function(t,e,n){var r=f;return function(o,i){if(r===h)throw new Error("Generator is already running");if(r===d){if("throw"===o)throw i;return R()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var s=O(a,n);if(s){if(s===_)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=h;var c=w(t,e,n);if("normal"===c.type){if(r=n.done?d:p,c.arg===_)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),i}function w(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function x(){}function j(){}function k(){}function E(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function C(t){var e;this._invoke=function(n,r){function i(){return new Promise(function(e,i){!function e(n,r,i,a){var s=w(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&o.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,i,a)},function(t){e("throw",t,i,a)}):Promise.resolve(u).then(function(t){c.value=t,i(c)},a)}a(s.arg)}(n,r,e,i)})}return e=e?e.then(i,i):i()}}function O(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,O(t,e),"throw"===e.method))return _;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return _}var o=w(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,_;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,_):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,_)}function S(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function T(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function F(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(S,this),this.reset(!0)}function P(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function e(){for(;++r<t.length;)if(o.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return i.next=i}}return{next:R}}function R(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},218:function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,o=1,i={},a=!1,s=t.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(t);c=c&&c.setTimeout?c:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&l(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),r=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},r=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;r=function(e){var n=s.createElement("script");n.onreadystatechange=function(){l(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():r=function(t){setTimeout(l,0,t)},c.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var a={callback:t,args:e};return i[o]=a,r(o),o++},c.clearImmediate=u}function u(t){delete i[t]}function l(t){if(a)setTimeout(l,0,t);else{var e=i[t];if(e){a=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{u(t),a=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(15),n(54))},219:function(t,e,n){n(220),t.exports=n(18).Object.keys},220:function(t,e,n){var r=n(87),o=n(78);n(68)("keys",function(){return function(t){return o(r(t))}})},223:function(t,e,n){t.exports={default:n(359),__esModule:!0}},224:function(t,e,n){var r=n(124),o=n(76),i=n(59),a=n(116),s=n(61),c=n(161),u=Object.getOwnPropertyDescriptor;e.f=n(44)?u:function(t,e){if(t=i(t),e=a(e,!0),c)try{return u(t,e)}catch(t){}if(s(t,e))return o(!r.f.call(t,e),t[e])}},225:function(t,e,n){var r=n(162),o=n(121).concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},26:function(t,e,n){var r=n(34),o=n(18),i=n(66),a=n(60),s=function(t,e,n){var c,u,l,f=t&s.F,p=t&s.G,h=t&s.S,d=t&s.P,_=t&s.B,v=t&s.W,y=p?o:o[e]||(o[e]={}),m=y.prototype,g=p?r:h?r[e]:(r[e]||{}).prototype;for(c in p&&(n=e),n)(u=!f&&g&&void 0!==g[c])&&c in y||(l=u?g[c]:n[c],y[c]=p&&"function"!=typeof g[c]?n[c]:_&&u?i(l,r):v&&g[c]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):d&&"function"==typeof l?i(Function.call,l):l,d&&((y.virtual||(y.virtual={}))[c]=l,t&s.R&&m&&!m[c]&&a(m,c,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},271:function(t,e,n){var r=n(46),o=n(52),i=n(78);t.exports=n(44)?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),s=a.length,c=0;s>c;)r.f(t,n=a[c++],e[n]);return t}},272:function(t,e,n){var r=n(34).document;t.exports=r&&r.documentElement},273:function(t,e,n){var r=n(52);t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(e){var i=t.return;throw void 0!==i&&r(i.call(t)),e}}},274:function(t,e,n){var r=n(77),o=n(38)("iterator"),i=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||i[o]===t)}},275:function(t,e,n){var r=n(38)("iterator"),o=!1;try{var i=[7][r]();i.return=function(){o=!0},Array.from(i,function(){throw 2})}catch(t){}t.exports=function(t,e){if(!e&&!o)return!1;var n=!1;try{var i=[7],a=i[r]();a.next=function(){return{done:n=!0}},i[r]=function(){return a},t(i)}catch(t){}return n}},276:function(t,e,n){var r=n(59),o=n(225).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return a&&"[object Window]"==i.call(t)?function(t){try{return o(t)}catch(t){return a.slice()}}(t):o(r(t))}},277:function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},278:function(t,e,n){var r=n(95);t.exports=Array.isArray||function(t){return"Array"==r(t)}},285:function(t,e,n){"use strict";var r=c(n(67)),o=c(n(14)),i=c(n(4)),a=c(n(5)),s=c(n(29));function c(t){return t&&t.__esModule?t:{default:t}}var u=function(){function t(e){(0,i.default)(this,t),(e=e||{}).maxTimelineEntries=e.maxTimelineEntries||50,this.opts=e,this.accountData={},this.inviteRooms={},this.joinRooms={},this.nextBatch=null,this.groups={invite:{},join:{},leave:{}}}return(0,a.default)(t,[{key:"accumulate",value:function(t){this._accumulateRooms(t),this._accumulateGroups(t),this._accumulateAccountData(t),this.nextBatch=t.next_batch}},{key:"_accumulateAccountData",value:function(t){var e=this;t.account_data&&t.account_data.events&&t.account_data.events.forEach(function(t){e.accountData[t.type]=t})}},{key:"_accumulateRooms",value:function(t){var e=this;t.rooms&&(t.rooms.invite&&(0,o.default)(t.rooms.invite).forEach(function(n){e._accumulateRoom(n,"invite",t.rooms.invite[n])}),t.rooms.join&&(0,o.default)(t.rooms.join).forEach(function(n){e._accumulateRoom(n,"join",t.rooms.join[n])}),t.rooms.leave&&(0,o.default)(t.rooms.leave).forEach(function(n){e._accumulateRoom(n,"leave",t.rooms.leave[n])}))}},{key:"_accumulateRoom",value:function(t,e,n){switch(e){case"invite":this._accumulateInviteState(t,n);break;case"join":this.inviteRooms[t]&&delete this.inviteRooms[t],this._accumulateJoinState(t,n);break;case"leave":this.inviteRooms[t]?delete this.inviteRooms[t]:delete this.joinRooms[t];break;default:console.error("Unknown cateogory: ",e)}}},{key:"_accumulateInviteState",value:function(t,e){if(e.invite_state&&e.invite_state.events)if(this.inviteRooms[t]){var n=this.inviteRooms[t];e.invite_state.events.forEach(function(t){for(var e=!1,r=0;r<n.invite_state.events.length;r++){var o=n.invite_state.events[r];o.type===t.type&&o.state_key==t.state_key&&(n.invite_state.events[r]=t,e=!0)}e||n.invite_state.events.push(t)})}else this.inviteRooms[t]={invite_state:e.invite_state}}},{key:"_accumulateJoinState",value:function(t,e){this.joinRooms[t]||(this.joinRooms[t]={_currentState:(0,r.default)(null),_timeline:[],_accountData:(0,r.default)(null),_unreadNotifications:{},_summary:{},_readReceipts:{}});var n=this.joinRooms[t];if(e.account_data&&e.account_data.events&&e.account_data.events.forEach(function(t){n._accountData[t.type]=t}),e.unread_notifications&&(n._unreadNotifications=e.unread_notifications),e.summary){var i=n._summary,a=e.summary;i["m.heroes"]=a["m.heroes"]||i["m.heroes"],i["m.joined_member_count"]=a["m.joined_member_count"]||i["m.joined_member_count"],i["m.invited_member_count"]=a["m.invited_member_count"]||i["m.invited_member_count"]}if(e.ephemeral&&e.ephemeral.events&&e.ephemeral.events.forEach(function(t){"m.receipt"===t.type&&t.content&&(0,o.default)(t.content).forEach(function(e){t.content[e]["m.read"]&&(0,o.default)(t.content[e]["m.read"]).forEach(function(r){n._readReceipts[r]={data:t.content[e]["m.read"][r],eventId:e}})})}),e.timeline&&e.timeline.limited&&(n._timeline=[]),e.state&&e.state.events&&e.state.events.forEach(function(t){l(n._currentState,t)}),e.timeline&&e.timeline.events&&e.timeline.events.forEach(function(t,r){l(n._currentState,t),n._timeline.push({event:t,token:0===r?e.timeline.prev_batch:null})}),n._timeline.length>this.opts.maxTimelineEntries)for(var s=n._timeline.length-this.opts.maxTimelineEntries;s<n._timeline.length;s++)if(n._timeline[s].token){n._timeline=n._timeline.slice(s,n._timeline.length);break}}},{key:"_accumulateGroups",value:function(t){var e=this;t.groups&&(t.groups.invite&&(0,o.default)(t.groups.invite).forEach(function(n){e._accumulateGroup(n,"invite",t.groups.invite[n])}),t.groups.join&&(0,o.default)(t.groups.join).forEach(function(n){e._accumulateGroup(n,"join",t.groups.join[n])}),t.groups.leave&&(0,o.default)(t.groups.leave).forEach(function(n){e._accumulateGroup(n,"leave",t.groups.leave[n])}))}},{key:"_accumulateGroup",value:function(t,e,n){for(var r=["invite","join","leave"],o=0;o<r.length;o++){var i=r[o];delete this.groups[i][t]}this.groups[e][t]=n}},{key:"getJSON",value:function(){var t=this,e={join:{},invite:{},leave:{}};(0,o.default)(this.inviteRooms).forEach(function(n){e.invite[n]=t.inviteRooms[n]}),(0,o.default)(this.joinRooms).forEach(function(n){var i=t.joinRooms[n],a={ephemeral:{events:[]},account_data:{events:[]},state:{events:[]},timeline:{events:[],prev_batch:null},unread_notifications:i._unreadNotifications,summary:i._summary};(0,o.default)(i._accountData).forEach(function(t){a.account_data.events.push(i._accountData[t])});var c={type:"m.receipt",room_id:n,content:{}};(0,o.default)(i._readReceipts).forEach(function(t){var e=i._readReceipts[t];c.content[e.eventId]||(c.content[e.eventId]={"m.read":{}}),c.content[e.eventId]["m.read"][t]=e.data}),(0,o.default)(c.content).length>0&&a.ephemeral.events.push(c),i._timeline.forEach(function(t){if(!a.timeline.prev_batch){if(!t.token)return;a.timeline.prev_batch=t.token}a.timeline.events.push(t.event)});for(var u=(0,r.default)(null),f=a.timeline.events.length-1;f>=0;f--){var p=a.timeline.events[f];if(null!==p.state_key&&void 0!==p.state_key){var h=s.default.deepCopy(p);h.unsigned&&(h.unsigned.prev_content&&(h.content=h.unsigned.prev_content),h.unsigned.prev_sender&&(h.sender=h.unsigned.prev_sender)),l(u,h)}}(0,o.default)(i._currentState).forEach(function(t){(0,o.default)(i._currentState[t]).forEach(function(e){var n=i._currentState[t][e];u[t]&&u[t][e]&&(n=u[t][e]),a.state.events.push(n)})}),e.join[n]=a});var n=[];return(0,o.default)(this.accountData).forEach(function(e){n.push(t.accountData[e])}),{nextBatch:this.nextBatch,roomsData:e,groupsData:this.groups,accountData:n}}},{key:"getNextBatchToken",value:function(){return this.nextBatch}}]),t}();function l(t,e){null!==e.state_key&&void 0!==e.state_key&&e.type&&(t[e.type]||(t[e.type]=(0,r.default)(null)),t[e.type][e.state_key]=e)}t.exports=u},29:function(t,e,n){"use strict";var r=a(n(67)),o=a(n(64)),i=a(n(31));function a(t){return t&&t.__esModule?t:{default:t}}t.exports.encodeParams=function(t){var e="";for(var n in t)t.hasOwnProperty(n)&&(e+="&"+encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e.substring(1)},t.exports.encodeUri=function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t=t.replace(n,encodeURIComponent(e[n])));return t},t.exports.map=function(t,e){for(var n=new Array(t.length),r=0;r<t.length;r++)n[r]=e(t[r]);return n},t.exports.filter=function(t,e){for(var n=[],r=0;r<t.length;r++)e(t[r],r,t)&&n.push(t[r]);return n},t.exports.keys=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e},t.exports.values=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(t[n]);return e},t.exports.forEach=function(t,e){for(var n=0;n<t.length;n++)e(t[n],n)},t.exports.findElement=function(t,e,n){var r=void 0;if(n){for(r=t.length-1;r>=0;r--)if(e(t[r],r,t))return t[r]}else for(r=0;r<t.length;r++)if(e(t[r],r,t))return t[r]},t.exports.removeElement=function(t,e,n){var r=void 0,o=void 0;if(n){for(r=t.length-1;r>=0;r--)if(e(t[r],r,t))return o=t[r],t.splice(r,1),o}else for(r=0;r<t.length;r++)if(e(t[r],r,t))return o=t[r],t.splice(r,1),o;return!1},t.exports.isFunction=function(t){return"[object Function]"==Object.prototype.toString.call(t)},t.exports.isArray=function(t){return Array.isArray?Array.isArray(t):Boolean(t&&t.constructor===Array)},t.exports.checkObjectHasKeys=function(t,e){for(var n=0;n<e.length;n++)if(!t.hasOwnProperty(e[n]))throw new Error("Missing required key: "+e[n])},t.exports.checkObjectHasNoAdditionalKeys=function(t,e){for(var n in t)if(t.hasOwnProperty(n)&&-1===e.indexOf(n))throw new Error("Unknown key: "+n)},t.exports.deepCopy=function(t){return JSON.parse((0,i.default)(t))};var s=t.exports.deepCompare=function(t,e){if(t===e)return!0;if((void 0===t?"undefined":(0,o.default)(t))!==(void 0===e?"undefined":(0,o.default)(e)))return!1;if("number"==typeof t&&isNaN(t)&&isNaN(e))return!0;if(null===t||null===e)return t===e;if(!(t instanceof Object))return!1;if(t.constructor!==e.constructor||t.prototype!==e.prototype)return!1;if(t instanceof RegExp||t instanceof Date)return t.toString()===e.toString();if(t instanceof Array){if(t.length!==e.length)return!1;for(var n=0;n<t.length;n++)if(!s(t[n],e[n]))return!1}else{var r=void 0;for(r in e)if(e.hasOwnProperty(r)!==t.hasOwnProperty(r))return!1;for(r in e){if(e.hasOwnProperty(r)!==t.hasOwnProperty(r))return!1;if(!s(t[r],e[r]))return!1}}return!0};t.exports.extend=function(){for(var t=arguments[0]||{},e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t},t.exports.runPolyfills=function(){Array.prototype.filter||(Array.prototype.filter=function(t){if(void 0===this||null===this)throw new TypeError;var e=Object(this),n=e.length>>>0;if("function"!=typeof t)throw new TypeError;for(var r=[],o=arguments.length>=2?arguments[1]:void 0,i=0;i<n;i++)if(i in e){var a=e[i];t.call(o,a,i,e)&&r.push(a)}return r}),Array.prototype.map||(Array.prototype.map=function(t,e){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");arguments.length>1&&(n=e);var a=new Array(i);for(r=0;r<i;){var s,c;r in o&&(s=o[r],c=t.call(n,s,r,o),a[r]=c),r++}return a}),Array.prototype.forEach||(Array.prototype.forEach=function(t,e){var n=void 0,r=void 0;if(null===this||void 0===this)throw new TypeError(" this is null or not defined");var o=Object(this),i=o.length>>>0;if("function"!=typeof t)throw new TypeError(t+" is not a function");for(arguments.length>1&&(n=e),r=0;r<i;){var a;r in o&&(a=o[r],t.call(n,a,r,o)),r++}})},t.exports.inherits=function(t,e){"function"!=typeof r.default&&(Object.create=function(){function t(){}var e=Object.prototype.hasOwnProperty;return function(n){if("object"!=(void 0===n?"undefined":(0,o.default)(n)))throw new TypeError("Object prototype may only be an Object or null");t.prototype=n;var r=new t;if(t.prototype=null,arguments.length>1){var i=Object(arguments[1]);for(var a in i)e.call(i,a)&&(r[a]=i[a])}return r}}()),t.super_=e,t.prototype=(0,r.default)(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})},t.exports.isNumber=function(t){return"number"==typeof t&&isFinite(t)},t.exports.removeHiddenChars=function(t){return t.normalize("NFD").replace(c,"")};var c=/[\u200B-\u200D\u0300-\u036f\uFEFF\s]/g},31:function(t,e,n){t.exports={default:n(390),__esModule:!0}},34:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},35:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},352:function(t,e,n){n(86),n(355),t.exports=n(18).Array.from},353:function(t,e,n){var r=n(111),o=n(112);t.exports=function(t){return function(e,n){var i,a,s=String(o(e)),c=r(n),u=s.length;return c<0||c>=u?t?"":void 0:(i=s.charCodeAt(c))<55296||i>56319||c+1===u||(a=s.charCodeAt(c+1))<56320||a>57343?t?s.charAt(c):i:t?s.slice(c,c+2):a-56320+(i-55296<<10)+65536}}},354:function(t,e,n){"use strict";var r=n(117),o=n(76),i=n(122),a={};n(60)(a,n(38)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(a,{next:o(1,n)}),i(t,e+" Iterator")}},355:function(t,e,n){"use strict";var r=n(66),o=n(26),i=n(87),a=n(273),s=n(274),c=n(118),u=n(356),l=n(186);o(o.S+o.F*!n(275)(function(t){Array.from(t)}),"Array",{from:function(t){var e,n,o,f,p=i(t),h="function"==typeof this?this:Array,d=arguments.length,_=d>1?arguments[1]:void 0,v=void 0!==_,y=0,m=l(p);if(v&&(_=r(_,d>2?arguments[2]:void 0,2)),void 0==m||h==Array&&s(m))for(n=new h(e=c(p.length));e>y;y++)u(n,y,v?_(p[y],y):p[y]);else for(f=m.call(p),n=new h;!(o=f.next()).done;y++)u(n,y,v?a(f,_,[o.value,y],!0):o.value);return n.length=y,n}})},356:function(t,e,n){"use strict";var r=n(46),o=n(76);t.exports=function(t,e,n){e in t?r.f(t,e,o(0,n)):t[e]=n}},357:function(t,e,n){n(358);var r=n(18).Object;t.exports=function(t,e){return r.create(t,e)}},358:function(t,e,n){var r=n(26);r(r.S,"Object",{create:n(117)})},359:function(t,e,n){n(360);var r=n(18).Object;t.exports=function(t,e,n){return r.defineProperty(t,e,n)}},360:function(t,e,n){var r=n(26);r(r.S+r.F*!n(44),"Object",{defineProperty:n(46).f})},361:function(t,e,n){t.exports={default:n(362),__esModule:!0}},362:function(t,e,n){n(86),n(113),t.exports=n(166).f("iterator")},363:function(t,e,n){"use strict";var r=n(364),o=n(277),i=n(77),a=n(59);t.exports=n(185)(Array,"Array",function(t,e){this._t=a(t),this._i=0,this._k=e},function(){var t=this._t,e=this._k,n=this._i++;return!t||n>=t.length?(this._t=void 0,o(1)):o(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),i.Arguments=i.Array,r("keys"),r("values"),r("entries")},364:function(t,e){t.exports=function(){}},365:function(t,e,n){t.exports={default:n(366),__esModule:!0}},366:function(t,e,n){n(367),n(190),n(369),n(370),t.exports=n(18).Symbol},367:function(t,e,n){"use strict";var r=n(34),o=n(61),i=n(44),a=n(26),s=n(212),c=n(137).KEY,u=n(58),l=n(120),f=n(122),p=n(96),h=n(38),d=n(166),_=n(167),v=n(368),y=n(278),m=n(52),g=n(59),b=n(116),w=n(76),x=n(117),j=n(276),k=n(224),E=n(46),C=n(78),O=k.f,S=E.f,T=j.f,F=r.Symbol,P=r.JSON,R=P&&P.stringify,A=h("_hidden"),D=h("toPrimitive"),L={}.propertyIsEnumerable,I=l("symbol-registry"),M=l("symbols"),N=l("op-symbols"),B=Object.prototype,V="function"==typeof F,U=r.QObject,H=!U||!U.prototype||!U.prototype.findChild,G=i&&u(function(){return 7!=x(S({},"a",{get:function(){return S(this,"a",{value:7}).a}})).a})?function(t,e,n){var r=O(B,e);r&&delete B[e],S(t,e,n),r&&t!==B&&S(B,e,r)}:S,q=function(t){var e=M[t]=x(F.prototype);return e._k=t,e},$=V&&"symbol"==typeof F.iterator?function(t){return"symbol"==typeof t}:function(t){return t instanceof F},Q=function(t,e,n){return t===B&&Q(N,e,n),m(t),e=b(e,!0),m(n),o(M,e)?(n.enumerable?(o(t,A)&&t[A][e]&&(t[A][e]=!1),n=x(n,{enumerable:w(0,!1)})):(o(t,A)||S(t,A,w(1,{})),t[A][e]=!0),G(t,e,n)):S(t,e,n)},W=function(t,e){m(t);for(var n,r=v(e=g(e)),o=0,i=r.length;i>o;)Q(t,n=r[o++],e[n]);return t},z=function(t){var e=L.call(this,t=b(t,!0));return!(this===B&&o(M,t)&&!o(N,t))&&(!(e||!o(this,t)||!o(M,t)||o(this,A)&&this[A][t])||e)},K=function(t,e){if(t=g(t),e=b(e,!0),t!==B||!o(M,e)||o(N,e)){var n=O(t,e);return!n||!o(M,e)||o(t,A)&&t[A][e]||(n.enumerable=!0),n}},X=function(t){for(var e,n=T(g(t)),r=[],i=0;n.length>i;)o(M,e=n[i++])||e==A||e==c||r.push(e);return r},J=function(t){for(var e,n=t===B,r=T(n?N:g(t)),i=[],a=0;r.length>a;)!o(M,e=r[a++])||n&&!o(B,e)||i.push(M[e]);return i};V||(s((F=function(){if(this instanceof F)throw TypeError("Symbol is not a constructor!");var t=p(arguments.length>0?arguments[0]:void 0),e=function(n){this===B&&e.call(N,n),o(this,A)&&o(this[A],t)&&(this[A][t]=!1),G(this,t,w(1,n))};return i&&H&&G(B,t,{configurable:!0,set:e}),q(t)}).prototype,"toString",function(){return this._k}),k.f=K,E.f=Q,n(225).f=j.f=X,n(124).f=z,n(189).f=J,i&&!n(135)&&s(B,"propertyIsEnumerable",z,!0),d.f=function(t){return q(h(t))}),a(a.G+a.W+a.F*!V,{Symbol:F});for(var Y="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),Z=0;Y.length>Z;)h(Y[Z++]);for(var tt=C(h.store),et=0;tt.length>et;)_(tt[et++]);a(a.S+a.F*!V,"Symbol",{for:function(t){return o(I,t+="")?I[t]:I[t]=F(t)},keyFor:function(t){if(!$(t))throw TypeError(t+" is not a symbol!");for(var e in I)if(I[e]===t)return e},useSetter:function(){H=!0},useSimple:function(){H=!1}}),a(a.S+a.F*!V,"Object",{create:function(t,e){return void 0===e?x(t):W(x(t),e)},defineProperty:Q,defineProperties:W,getOwnPropertyDescriptor:K,getOwnPropertyNames:X,getOwnPropertySymbols:J}),P&&a(a.S+a.F*(!V||u(function(){var t=F();return"[null]"!=R([t])||"{}"!=R({a:t})||"{}"!=R(Object(t))})),"JSON",{stringify:function(t){if(void 0!==t&&!$(t)){for(var e,n,r=[t],o=1;arguments.length>o;)r.push(arguments[o++]);return"function"==typeof(e=r[1])&&(n=e),!n&&y(e)||(e=function(t,e){if(n&&(e=n.call(this,t,e)),!$(e))return e}),r[1]=e,R.apply(P,r)}}}),F.prototype[D]||n(60)(F.prototype,D,F.prototype.valueOf),f(F,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},368:function(t,e,n){var r=n(78),o=n(189),i=n(124);t.exports=function(t){var e=r(t),n=o.f;if(n)for(var a,s=n(t),c=i.f,u=0;s.length>u;)c.call(t,a=s[u++])&&e.push(a);return e}},369:function(t,e,n){n(167)("asyncIterator")},370:function(t,e,n){n(167)("observable")},38:function(t,e,n){var r=n(120)("wks"),o=n(96),i=n(34).Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},390:function(t,e,n){var r=n(18),o=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(t){return o.stringify.apply(o,arguments)}},391:function(t,e,n){n(113),n(86),t.exports=n(392)},392:function(t,e,n){var r=n(52),o=n(186);t.exports=n(18).getIterator=function(t){var e=o(t);if("function"!=typeof e)throw TypeError(t+" is not iterable!");return r(e.call(t))}},393:function(t,e,n){t.exports={default:n(394),__esModule:!0}},394:function(t,e,n){n(113),n(86),t.exports=n(395)},395:function(t,e,n){var r=n(164),o=n(38)("iterator"),i=n(77);t.exports=n(18).isIterable=function(t){var e=Object(t);return void 0!==e[o]||"@@iterator"in e||i.hasOwnProperty(r(e))}},396:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=l(n(20)),o=l(n(19)),i=n(9),a=l(i),s=l(n(149)),c=l(n(285)),u=l(n(29));function l(t){return t&&t.__esModule?t:{default:t}}function f(t,e,n){var r=t.openCursor(e);return new a.default(function(t,e){var o=[];r.onerror=function(t){e(new Error("Query failed: "+t.target.errorCode))},r.onsuccess=function(e){var r=e.target.result;r?(o.push(n(r)),r.continue()):t(o)}})}function p(t){return new a.default(function(e,n){t.oncomplete=function(t){e(t)},t.onerror=function(t){n(t.target.error)}})}function h(t){return new a.default(function(e,n){t.onsuccess=function(t){e(t)},t.onerror=function(t){n(t.target.error)}})}function d(t){return new a.default(function(e,n){t.onsuccess=function(){return e(t)},t.onerror=function(t){return n(t)}})}function _(t){return h(t).then(function(t){return t.target.result})}var v=function(t,e){this.indexedDB=t,this._dbName="matrix-js-sdk:"+(e||"default"),this.db=null,this._disconnected=!0,this._syncAccumulator=new c.default,this._isNewlyCreated=!1};v.prototype={connect:function(){var t=this;if(!this._disconnected)return console.log("LocalIndexedDBStoreBackend.connect: already connected or connecting"),a.default.resolve();this._disconnected=!1,console.log("LocalIndexedDBStoreBackend.connect: connecting...");var e=this.indexedDB.open(this._dbName,3);return e.onupgradeneeded=function(e){var n=e.target.result,r=e.oldVersion;console.log("LocalIndexedDBStoreBackend.connect: upgrading from "+r),r<1&&(t._isNewlyCreated=!0,function(t){t.createObjectStore("users",{keyPath:["userId"]}),t.createObjectStore("accountData",{keyPath:["type"]}),t.createObjectStore("sync",{keyPath:["clobber"]})}(n)),r<2&&function(t){t.createObjectStore("oob_membership_events",{keyPath:["room_id","state_key"]}).createIndex("room","room_id")}(n),r<3&&function(t){t.createObjectStore("client_options",{keyPath:["clobber"]})}(n)},e.onblocked=function(){console.log("can't yet open LocalIndexedDBStoreBackend because it is open elsewhere")},console.log("LocalIndexedDBStoreBackend.connect: awaiting connection..."),h(e).then(function(e){return console.log("LocalIndexedDBStoreBackend.connect: connected"),t.db=e.target.result,t.db.onversionchange=function(){t.db.close()},t._init()})},isNewlyCreated:function(){return a.default.resolve(this._isNewlyCreated)},_init:function(){var t=this;return a.default.all([this._loadAccountData(),this._loadSyncData()]).then(function(e){var n=(0,s.default)(e,2),r=n[0],o=n[1];console.log("LocalIndexedDBStoreBackend: loaded initial data"),t._syncAccumulator.accumulate({next_batch:o.nextBatch,rooms:o.roomsData,groups:o.groupsData,account_data:{events:r}})})},getOutOfBandMembers:function(t){var e=this;return new a.default(function(n,r){var o=e.db.transaction(["oob_membership_events"],"readonly").objectStore("oob_membership_events").index("room"),i=IDBKeyRange.only(t),a=o.openCursor(i),s=[],c=!1;a.onsuccess=function(t){var e=t.target.result;if(!e)return s.length||c?n(s):n(null);var r=e.value;r.oob_written?c=!0:s.push(r),e.continue()},a.onerror=function(t){r(t)}}).then(function(e){return console.log("LL: got "+(e&&e.length)+" membershipEvents from storage for room "+t+" ..."),e})},setOutOfBandMembers:function(){var t=(0,i.coroutine)(o.default.mark(function t(e,n){var r,a,s;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return console.log("LL: backend about to store "+n.length+" members for "+e),r=this.db.transaction(["oob_membership_events"],"readwrite"),a=r.objectStore("oob_membership_events"),n.forEach(function(t){a.put(t)}),s={room_id:e,oob_written:!0,state_key:0},a.put(s),t.next=8,(0,i.resolve)(p(r));case 8:console.log("LL: backend done storing for "+e+"!");case 9:case"end":return t.stop()}},t,this)}));return function(e,n){return t.apply(this,arguments)}}(),clearOutOfBandMembers:function(){var t=(0,i.coroutine)(o.default.mark(function t(e){var n,r,c,u,l,f,p,h,v,y,m,g,b;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.db.transaction(["oob_membership_events"],"readonly"),r=n.objectStore("oob_membership_events"),c=r.index("room"),u=IDBKeyRange.only(e),l=_(c.openKeyCursor(u,"next")).then(function(t){return t&&t.primaryKey[1]}),f=_(c.openKeyCursor(u,"prev")).then(function(t){return t&&t.primaryKey[1]}),t.next=8,(0,i.resolve)(a.default.all([l,f]));case 8:return p=t.sent,h=(0,s.default)(p,2),v=h[0],y=h[1],m=this.db.transaction(["oob_membership_events"],"readwrite"),g=m.objectStore("oob_membership_events"),b=IDBKeyRange.bound([e,v],[e,y]),console.log("LL: Deleting all users + marker in storage for room "+e+", with key range:",[e,v],[e,y]),t.next=18,(0,i.resolve)(d(g.delete(b)));case 18:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}(),clearDatabase:function(){var t=this;return new a.default(function(e,n){console.log("Removing indexeddb instance: "+t._dbName);var r=t.indexedDB.deleteDatabase(t._dbName);r.onblocked=function(){console.log("can't yet delete indexeddb "+t._dbName+" because it is open elsewhere")},r.onerror=function(t){console.warn("unable to delete js-sdk store indexeddb: "+t.target.error),e()},r.onsuccess=function(){console.log("Removed indexeddb instance: "+t._dbName),e()}})},getSavedSync:function(t){void 0===t&&(t=!0);var e=this._syncAccumulator.getJSON();return e.nextBatch?t?a.default.resolve(u.default.deepCopy(e)):a.default.resolve(e):a.default.resolve(null)},getNextBatchToken:function(){return a.default.resolve(this._syncAccumulator.getNextBatchToken())},setSyncData:function(t){var e=this;return a.default.resolve().then(function(){e._syncAccumulator.accumulate(t)})},syncToDatabase:function(t){var e=this._syncAccumulator.getJSON();return a.default.all([this._persistUserPresenceEvents(t),this._persistAccountData(e.accountData),this._persistSyncData(e.nextBatch,e.roomsData,e.groupsData)])},_persistSyncData:function(t,e,n){var r=this;return console.log("Persisting sync data up to ",t),a.default.try(function(){var o=r.db.transaction(["sync"],"readwrite");return o.objectStore("sync").put({clobber:"-",nextBatch:t,roomsData:e,groupsData:n}),p(o)})},_persistAccountData:function(t){var e=this;return a.default.try(function(){for(var n=e.db.transaction(["accountData"],"readwrite"),r=n.objectStore("accountData"),o=0;o<t.length;o++)r.put(t[o]);return p(n)})},_persistUserPresenceEvents:function(t){var e=this;return a.default.try(function(){var n=e.db.transaction(["users"],"readwrite"),o=n.objectStore("users"),i=!0,a=!1,s=void 0;try{for(var c,u=(0,r.default)(t);!(i=(c=u.next()).done);i=!0){var l=c.value;o.put({userId:l[0],event:l[1]})}}catch(t){a=!0,s=t}finally{try{!i&&u.return&&u.return()}finally{if(a)throw s}}return p(n)})},getUserPresenceEvents:function(){var t=this;return a.default.try(function(){return f(t.db.transaction(["users"],"readonly").objectStore("users"),void 0,function(t){return[t.value.userId,t.value.event]})})},_loadAccountData:function(){var t=this;return console.log("LocalIndexedDBStoreBackend: loading account data..."),a.default.try(function(){return f(t.db.transaction(["accountData"],"readonly").objectStore("accountData"),void 0,function(t){return t.value}).then(function(t){return console.log("LocalIndexedDBStoreBackend: loaded account data"),t})})},_loadSyncData:function(){var t=this;return console.log("LocalIndexedDBStoreBackend: loading sync data..."),a.default.try(function(){return f(t.db.transaction(["sync"],"readonly").objectStore("sync"),void 0,function(t){return t.value}).then(function(t){return console.log("LocalIndexedDBStoreBackend: loaded sync data"),t.length>1&&console.warn("loadSyncData: More than 1 sync row found."),t.length>0?t[0]:{}})})},getClientOptions:function(){var t=this;return a.default.resolve().then(function(){return f(t.db.transaction(["client_options"],"readonly").objectStore("client_options"),void 0,function(t){if(t.value&&t.value&&t.value.options)return t.value.options}).then(function(t){return t[0]})})},storeClientOptions:function(){var t=(0,i.coroutine)(o.default.mark(function t(e){var n;return o.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return n=this.db.transaction(["client_options"],"readwrite"),n.objectStore("client_options").put({clobber:"-",options:e}),t.next=5,(0,i.resolve)(p(n));case 5:case"end":return t.stop()}},t,this)}));return function(e){return t.apply(this,arguments)}}()},e.default=v},4:function(t,e,n){"use strict";e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}},44:function(t,e,n){t.exports=!n(58)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},46:function(t,e,n){var r=n(52),o=n(161),i=n(116),a=Object.defineProperty;e.f=n(44)?Object.defineProperty:function(t,e,n){if(r(t),e=i(e,!0),r(n),o)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},5:function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(223));e.default=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),(0,r.default)(t,o.key,o)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}()},51:function(t,e,n){"use strict";e.__esModule=!0;var r=function(t){return t&&t.__esModule?t:{default:t}}(n(211));e.default=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return(0,r.default)(t)}},52:function(t,e,n){var r=n(35);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},54:function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&h())}function h(){if(!l){var t=s(p);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function _(){}o.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),1!==u.length||l||s(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=_,o.addListener=_,o.once=_,o.off=_,o.removeListener=_,o.removeAllListeners=_,o.emit=_,o.prependListener=_,o.prependOnceListener=_,o.listeners=function(t){return[]},o.binding=function(t){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(t){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},58:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},59:function(t,e,n){var r=n(163),o=n(112);t.exports=function(t){return r(o(t))}},60:function(t,e,n){var r=n(46),o=n(76);t.exports=n(44)?function(t,e,n){return r.f(t,e,o(1,n))}:function(t,e,n){return t[e]=n,t}},61:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},64:function(t,e,n){"use strict";e.__esModule=!0;var r=a(n(361)),o=a(n(365)),i="function"==typeof o.default&&"symbol"==typeof r.default?function(t){return typeof t}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":typeof t};function a(t){return t&&t.__esModule?t:{default:t}}e.default="function"==typeof o.default&&"symbol"===i(r.default)?function(t){return void 0===t?"undefined":i(t)}:function(t){return t&&"function"==typeof o.default&&t.constructor===o.default&&t!==o.default.prototype?"symbol":void 0===t?"undefined":i(t)}},66:function(t,e,n){var r=n(94);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,o){return t.call(e,n,r,o)}}return function(){return t.apply(e,arguments)}}},67:function(t,e,n){t.exports={default:n(357),__esModule:!0}},68:function(t,e,n){var r=n(26),o=n(18),i=n(58);t.exports=function(t,e){var n=(o.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},76:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},77:function(t,e){t.exports={}},78:function(t,e,n){var r=n(162),o=n(121);t.exports=Object.keys||function(t){return r(t,o)}},86:function(t,e,n){"use strict";var r=n(353)(!0);n(185)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},87:function(t,e,n){var r=n(112);t.exports=function(t){return Object(r(t))}},9:function(t,e,n){(function(e,n,r){t.exports=function(){var t,o,i;return function t(e,n,r){function o(a,s){if(!n[a]){if(!e[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(i)return i(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};e[a][0].call(l.exports,function(t){var n=e[a][1][t];return o(n||t)},l,l.exports,t,e,n,r)}return n[a].exports}for(var i="function"==typeof _dereq_&&_dereq_,a=0;a<r.length;a++)o(r[a]);return o}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),r=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),r}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,n,r){"use strict";var o;try{throw new Error}catch(t){o=t}var i=t("./schedule"),a=t("./queue"),s=t("./util");function c(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new a(16),this._normalQueue=new a(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=i}function u(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function l(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}function p(t){for(;t.length()>0;)h(t)}function h(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}c.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},c.prototype.hasCustomScheduler=function(){return this._customScheduler},c.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},c.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},c.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},c.prototype.fatalError=function(t,n){n?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},c.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(c.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},c.prototype.invoke=function(t,e,n){this._trampolineEnabled?l.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},c.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule(function(){t._settlePromises()})}):(c.prototype.invokeLater=u,c.prototype.invoke=l,c.prototype.settlePromises=f),c.prototype._drainQueues=function(){p(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,p(this._lateQueue)},c.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},c.prototype._reset=function(){this._isTickUsed=!1},n.exports=c,n.exports.firstLineError=o},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var o=!1,i=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(i,i,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(i){o||(o=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var u=n(i),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(u),u instanceof t){var p={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:u};f._then(e,a,void 0,l,p),u._then(s,c,void 0,l,p),l._setOnCancel(u)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var o=t("./promise")();o.noConflict=function(){try{Promise===o&&(Promise=r)}catch(t){}return o},e.exports=o},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var o=r(null),i=r(null);o[" size"]=i[" size"]=0}e.exports=function(e){var n=t("./util"),r=n.canEvaluate;function o(t){var r=this.pop(),o=function(t,r){var o;if(null!=t&&(o=t[r]),"function"!=typeof o){var i="Object "+n.classString(t)+" has no method '"+n.toString(r)+"'";throw new e.TypeError(i)}return o}(t,r);return o.apply(t,this)}function i(t){return t[this]}function a(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}n.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(o,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=a;else if(r){var o=(void 0)(t);e=null!==o?o:i}else e=i;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i=t("./util"),a=i.tryCatch,s=i.errorObj,c=e._async;e.prototype.break=e.prototype.cancel=function(){if(!o.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(i.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var r=a(t).call(this._boundValue());r===s&&(this._attachExtraTrace(r.e),c.throwLater(r.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),c.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=t("./es5").keys,o=n.tryCatch,i=n.errorObj;return function(t,a,s){return function(c){var u=s._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(c instanceof f)return o(a).call(u,c)}else if("function"==typeof f){var p=o(f).call(u,c);if(p===i)return p;if(p)return o(a).call(u,c)}else if(n.isObject(c)){for(var h=r(f),d=0;d<h.length;++d){var _=h[d];if(f[_]!=c[_])continue t}return o(a).call(u,c)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function r(){this._trace=new r.CapturedTrace(o())}function o(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},r.CapturedTrace=null,r.create=function(){if(e)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=t.prototype._pushContext,i=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;r.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=i,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,e=!1},e=!0,t.prototype._pushContext=r.prototype._pushContext,t.prototype._popContext=r.prototype._popContext,t._peekContext=t.prototype._peekContext=o,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},r}},{}],9:[function(t,n,r){"use strict";n.exports=function(n,r){var o,i,a,s=n._getDomain,c=n._async,u=t("./errors").Warning,l=t("./util"),f=t("./es5"),p=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,d=/\((?:timers\.js):\d+:\d+\)/,_=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,v=null,y=null,m=!1,g=!(0==l.env("BLUEBIRD_DEBUG")),b=!(0==l.env("BLUEBIRD_WARNINGS")||!g&&!l.env("BLUEBIRD_WARNINGS")),w=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!g&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),x=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){$("rejectionHandled",o,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),$("unhandledRejection",i,t,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(t,e,n){return U(t,e,n||this)},n.onPossiblyUnhandledRejection=function(t){var e=s();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},n.onUnhandledRejectionHandled=function(t){var e=s();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var j=function(){};n.longStackTraces=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&W()){var t=n.prototype._captureStackTrace,e=n.prototype._attachExtraTrace,o=n.prototype._dereferenceTrace;Z.longStackTraces=!0,j=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=t,n.prototype._attachExtraTrace=e,n.prototype._dereferenceTrace=o,r.deactivateLongStackTraces(),c.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=N,n.prototype._attachExtraTrace=B,n.prototype._dereferenceTrace=V,r.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&W()};var k=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason});var r=new CustomEvent(t.toLowerCase(),n);return!l.global.dispatchEvent(r)}}if("function"==typeof Event){var t=new Event("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason}),!l.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),E=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),n=l.global[e];return!!n&&(n.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function C(t,e){return{promise:e}}var O={promiseCreated:C,promiseFulfilled:C,promiseRejected:C,promiseResolved:C,promiseCancelled:C,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:C},S=function(t){var e=!1;try{e=E.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=k(t,O[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function T(){return!1}function F(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));r._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function R(){return this._onCancelField}function A(t){this._onCancelField=t}function D(){this._cancellationParent=void 0,this._onCancelField=void 0}function L(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}n.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?n.longStackTraces():!t.longStackTraces&&n.hasLongStackTraces()&&j()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,x=Z.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(x=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=D,n.prototype._propagateFrom=L,n.prototype._onCancel=R,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=P,n.prototype._execute=F,I=L,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=S):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=T)),n},n.prototype._fireEvent=T,n.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(t){},n.prototype._attachCancellationCallback=function(t){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(t,e){};var I=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function M(){var t=this._boundTo;return void 0!==t&&t instanceof n?t.isFulfilled()?t.value():void 0:t}function N(){this._trace=new J(this._peekContext())}function B(t,e){if(p(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=G(t);l.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function V(){this._trace=void 0}function U(t,e,r){if(Z.warnings){var o,i=new u(t);if(e)r._attachExtraTrace(i);else if(Z.longStackTraces&&(o=n._peekContext()))o.attachExtraTrace(i);else{var a=G(i);i.stack=a.message+"\n"+a.stack.join("\n")}S("warning",i)||q(i,"",!0)}}function H(t){for(var e=[],n=0;n<t.length;++n){var r=t[n],o=" (No stack trace)"===r||v.test(r),i=o&&z(r);o&&!i&&(m&&" "!==r.charAt(0)&&(r=" "+r),e.push(r))}return e}function G(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var r=e[n];if(" (No stack trace)"===r||v.test(r))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:H(e)}}function q(t,e,n){if("undefined"!=typeof console){var r;if(l.isObject(t)){var o=t.stack;r=e+y(o,t)}else r=e+String(t);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function $(t,e,n,r){var o=!1;try{"function"==typeof e&&(o=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(t){c.throwLater(t)}"unhandledRejection"===t?S(t,n,r)||o||q(n,"Unhandled rejection "):S(t,r)}function Q(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var n=JSON.stringify(t);e=n}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function W(){return"function"==typeof Y}var z=function(){return!1},K=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function X(t){var e=t.match(K);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function J(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Y(this,J),e>32&&this.uncycle()}l.inherits(J,Error),r.CapturedTrace=J,J.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},r=0,o=this;void 0!==o;++r)e.push(o),o=o._parent;for(var r=(t=this._length=r)-1;r>=0;--r){var i=e[r].stack;void 0===n[i]&&(n[i]=r)}for(var r=0;r<t;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;s<t-1?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var u=c._length+1,l=r-2;l>=0;--l)e[l]._length=u,u++;return}}}},J.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=G(t),n=e.message,r=[e.stack],o=this;void 0!==o;)r.push(H(o.stack.split("\n"))),o=o._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var r=t[n],o=e.length-1,i=e[o],a=-1,s=r.length-1;s>=0;--s)if(r[s]===i){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[o]!==c)break;e.pop(),o--}e=r}}(r),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(r),l.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,r)),l.notEnumerableProp(t,"__stackCleaned__",!0)}};var Y=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():Q(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,v=t,y=e;var n=Error.captureStackTrace;return z=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r,o=new Error;if("string"==typeof o.stack&&o.stack.split("\n")[0].indexOf("stackDetection@")>=0)return v=/@/,y=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){r="stack"in t}return"stack"in o||!r||"number"!=typeof Error.stackTraceLimit?(y=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?Q(e):e.toString()},null):(v=t,y=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?a=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(a=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return w&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return I},boundValueFunction:function(){return M},checkForgottenReturns:function(t,e,n,r,o){if(void 0===t&&null!==e&&x){if(void 0!==o&&o._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var i="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=H(s),u=c.length-1;u>=0;--u){var l=c[u];if(!d.test(l)){var f=l.match(_);f&&(i="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(c.length>0)for(var p=c[0],u=0;u<s.length;++u)if(s[u]===p){u>0&&(a="\n"+s[u-1]);break}}var h="a promise was created in a "+n+"handler "+i+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}},setBounds:function(t,e){if(W()){for(var n,r,o=t.stack.split("\n"),i=e.stack.split("\n"),a=-1,s=-1,c=0;c<o.length;++c){var u=X(o[c]);if(u){n=u.fileName,a=u.line;break}}for(var c=0;c<i.length;++c){var u=X(i[c]);if(u){r=u.fileName,s=u.line;break}}a<0||s<0||!n||!r||n!==r||a>=s||(z=function(t){if(h.test(t))return!0;var e=X(t);return!!(e&&e.fileName===n&&a<=e.line&&e.line<=s)})}},warn:U,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),U(n)},CapturedTrace:J,fireDomEvent:k,fireGlobalEvent:E}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];return r instanceof t&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,r=t.all;function o(){return r(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(o,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,r){return n(t,r,e,0)._then(o,void 0,void 0,t,void 0)},t.mapSeries=function(t,r){return n(t,r,e,e)}}},{}],12:[function(t,e,n){"use strict";var r,o,i=t("./es5"),a=i.freeze,s=t("./util"),c=s.inherits,u=s.notEnumerableProp;function l(t,e){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:e),u(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return c(n,Error),n}var f=l("Warning","warning"),p=l("CancellationError","cancellation error"),h=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{r=TypeError,o=RangeError}catch(t){r=l("TypeError","type error"),o=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);i.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);u(this,"name","OperationalError"),u(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(u(this,"message",t.message),u(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var n=0;n<this.length;++n){for(var r=this[n]===this?"[Circular AggregateError]":this[n]+"",o=r.split("\n"),i=0;i<o.length;++i)o[i]=t+o[i];r=o.join("\n"),e+=r+"\n"}return y--,e},c(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=a({CancellationError:p,TimeoutError:h,OperationalError:m,RejectionError:m,AggregateError:d}),i.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:r,RangeError:o,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(t,e,n){var r=function(){"use strict";return void 0===this}();if(r)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var o={}.hasOwnProperty,i={}.toString,a={}.constructor.prototype,s=function(t){var e=[];for(var n in t)o.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===i.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return a}},isES5:r,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,r){return n(this,t,r,e)},t.filter=function(t,r,o){return n(t,r,o,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=e.CancellationError,a=o.errorObj,s=t("./catch_filter")(r);function c(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function u(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return h.call(this,this.promise._target()._settledValue())}function p(t){if(!l(this,t))return a.e=t,a}function h(t){var o=this.promise,s=this.handler;if(!this.called){this.called=!0;var c=this.isFinallyHandler()?s.call(o._boundValue()):s.call(o._boundValue(),t);if(c===r)return c;if(void 0!==c){o._setReturnedNonUndefined();var h=n(c,o);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var d=new i("late cancellation observer");return o._attachExtraTrace(d),a.e=d,a}h.isPending()&&h._attachCancellationCallback(new u(this))}return h._then(f,p,void 0,this,void 0)}}}return o.isRejected()?(l(this),a.e=t,a):(l(this),t)}return c.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new c(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,h,h)},e.prototype.tap=function(t){return this._passThrough(t,1,h)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,h);var r,i=new Array(n-1),a=0;for(r=0;r<n-1;++r){var c=arguments[r];if(!o.isObject(c))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+o.classString(c)));i[a++]=c}i.length=a;var u=arguments[r];return this._passThrough(s(i,u,this),1,void 0,h)},c}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./errors"),c=s.TypeError,u=t("./util"),l=u.errorObj,f=u.tryCatch,p=[];function h(t,n,o,i){if(a.cancellation()){var s=new e(r),c=this._finallyPromise=new e(r);this._promise=s.lastly(function(){return c}),s._captureStackTrace(),s._setOnCancel(this)}else{var u=this._promise=new e(r);u._captureStackTrace()}this._stack=i,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof o?[o].concat(p):p,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,i),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,a.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t,n=void 0!==this._generator.return;if(n)this._promise._pushContext(),t=f(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=f(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=f(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=f(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===l)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var r=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(r);var i=o(r,this._promise);if(i instanceof e||null!==(i=function(t,n,r){for(var i=0;i<n.length;++i){r._pushContext();var a=f(n[i])(t);if(r._popContext(),a===l){r._pushContext();var s=e.reject(l.e);return r._popContext(),s}var c=o(a,r);if(c instanceof e)return c}return null}(i,this._yieldHandlers,this._promise))){var a=(i=i._target())._bitField;0==(50397184&a)?(this._yieldedPromise=i,i._proxy(this,null)):0!=(33554432&a)?e._async.invoke(this._promiseFulfilled,this,i._value()):0!=(16777216&a)?e._async.invoke(this._promiseRejected,this,i._reason()):this._promiseCancelled()}else this._promiseRejected(new c("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(r))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new c("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,r=h,o=(new Error).stack;return function(){var e=t.apply(this,arguments),i=new r(void 0,void 0,n,o),a=i.promise();return i._generator=e,i._promiseFulfilled(void 0),a}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new c("expecting a function but got "+u.classString(t));p.push(t)},e.spawn=function(t){if(a.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=new h(t,this),o=r.promise();return r._run(e.spawn),o}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var r=[].slice.call(arguments);t&&r.pop();var o=new n(r).promise();return void 0!==t?o.spread(t):o}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch,l=c.errorObj,f=e._async;function p(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var o=s();this._callback=null===o?e:c.domainBind(o,e),this._preservedValues=r===i?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function h(t,n,o,i){if("function"!=typeof n)return r("expecting a function but got "+c.classString(n));var a=0;if(void 0!==o){if("object"!=typeof o||null===o)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(o)));if("number"!=typeof o.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(o.concurrency)));a=o.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new p(t,n,a,i).promise()}c.inherits(p,n),p.prototype._asyncInit=function(){this._init$(void 0,-2)},p.prototype._init=function(){},p.prototype._promiseFulfilled=function(t,n){var r=this._values,i=this.length(),s=this._preservedValues,c=this._limit;if(n<0){if(r[n=-1*n-1]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var f=this._promise,p=this._callback,h=f._boundValue();f._pushContext();var d=u(p).call(h,t,n,i),_=f._popContext();if(a.checkForgottenReturns(d,_,null!==s?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=o(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}r[n]=d}var m=++this._totalResolved;return m>=i&&(null!==s?this._filter(r,s):this._resolve(r),!0)},p.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var r=t.pop();this._promiseFulfilled(n[r],r)}},p.prototype._filter=function(t,e){for(var n=e.length,r=new Array(n),o=0,i=0;i<n;++i)t[i]&&(r[o++]=e[i]);r.length=o,this._resolve(r)},p.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return h(this,t,e,null)},e.map=function(t,e,n,r){return h(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var o=s(t).apply(this,arguments),a=r._popContext();return i.checkForgottenReturns(o,a,"Promise.method",r),r._resolveFromSyncValue(o),r}},e.attempt=e.try=function(t){if("function"!=typeof t)return o("expecting a function but got "+a.classString(t));var r,c=new e(n);if(c._captureStackTrace(),c._pushContext(),arguments.length>1){i.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],l=arguments[2];r=a.isArray(u)?s(t).apply(l,u):s(t).call(l,u)}else r=s(t)();var f=c._popContext();return i.checkForgottenReturns(r,f,"Promise.try",c),c._resolveFromSyncValue(r),c},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var r=t("./util"),o=r.maybeWrapAsError,i=t("./errors"),a=i.OperationalError,s=t("./es5"),c=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=s.keys(t),o=0;o<n.length;++o){var i=n[o];c.test(i)||(e[i]=t[i])}return e}return r.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,r){if(null!==t){if(n){var i=u(o(n));t._attachExtraTrace(i),t._reject(i)}else if(e){var a=[].slice.call(arguments,1);t._fulfill(a)}else t._fulfill(r);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=e._async,o=n.tryCatch,i=n.errorObj;function a(t,e){if(!n.isArray(t))return s.call(this,t,e);var a=o(e).apply(this._boundValue(),[null].concat(t));a===i&&r.throwLater(a.e)}function s(t,e){var n=this._boundValue(),a=void 0===t?o(e).call(n,null):o(e).call(n,null,t);a===i&&r.throwLater(a.e)}function c(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var a=o(e).call(this._boundValue(),t);a===i&&r.throwLater(a.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=a),this._then(n,c,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,n,r){"use strict";n.exports=function(){var r=function(){return new d("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},o=function(){return new T.PromiseInspection(this._target())},i=function(t){return T.reject(new d(t))};function a(){}var s,c={},u=t("./util");s=u.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},u.notEnumerableProp(T,"_getDomain",s);var l=t("./es5"),f=t("./async"),p=new f;l.defineProperty(T,"_async",{value:p});var h=t("./errors"),d=T.TypeError=h.TypeError;T.RangeError=h.RangeError;var _=T.CancellationError=h.CancellationError;T.TimeoutError=h.TimeoutError,T.OperationalError=h.OperationalError,T.RejectionError=h.OperationalError,T.AggregateError=h.AggregateError;var v=function(){},y={},m={},g=t("./thenables")(T,v),b=t("./promise_array")(T,v,g,i,a),w=t("./context")(T),x=w.create,j=t("./debuggability")(T,w),k=(j.CapturedTrace,t("./finally")(T,g,m)),E=t("./catch_filter")(m),C=t("./nodeback"),O=u.errorObj,S=u.tryCatch;function T(t){t!==v&&function(t,e){if(null==t||t.constructor!==T)throw new d("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new d("expecting a function but got "+u.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function F(t){this.promise._resolveCallback(t)}function P(t){this.promise._rejectCallback(t,!1)}function R(t){var e=new T(v);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return T.prototype.toString=function(){return"[object Promise]"},T.prototype.caught=T.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,r=new Array(e-1),o=0;for(n=0;n<e-1;++n){var a=arguments[n];if(!u.isObject(a))return i("Catch statement predicate: expecting an object but got "+u.classString(a));r[o++]=a}return r.length=o,t=arguments[n],this.then(void 0,E(r,t,this))}return this.then(void 0,t)},T.prototype.reflect=function(){return this._then(o,o,void 0,this,void 0)},T.prototype.then=function(t,e){if(j.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+u.classString(t);arguments.length>1&&(n+=", "+u.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},T.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},T.prototype.spread=function(t){return"function"!=typeof t?i("expecting a function but got "+u.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},T.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},T.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},T.prototype.error=function(t){return this.caught(u.originatesFromRejection,t)},T.getNewLibraryCopy=n.exports,T.is=function(t){return t instanceof T},T.fromNode=T.fromCallback=function(t){var e=new T(v);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=S(t)(C(e,n));return r===O&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},T.all=function(t){return new b(t).promise()},T.cast=function(t){var e=g(t);return e instanceof T||((e=new T(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},T.resolve=T.fulfilled=T.cast,T.reject=T.rejected=function(t){var e=new T(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},T.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+u.classString(t));return p.setScheduler(t)},T.prototype._then=function(t,e,n,r,o){var i=void 0!==o,a=i?o:new T(v),c=this._target(),l=c._bitField;i||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&l)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&l)){var h,d,y=c._settlePromiseCtx;0!=(33554432&l)?(d=c._rejectionHandler0,h=t):0!=(16777216&l)?(d=c._fulfillmentHandler0,h=e,c._unsetRejectionIsUnhandled()):(y=c._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),c._attachExtraTrace(d),h=e),p.invoke(y,c,{handler:null===f?h:"function"==typeof h&&u.domainBind(f,h),promise:a,receiver:r,value:d})}else c._addCallbacks(t,e,a,r,f);return a},T.prototype._length=function(){return 65535&this._bitField},T.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},T.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},T.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},T.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},T.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},T.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},T.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},T.prototype._isFinal=function(){return(4194304&this._bitField)>0},T.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},T.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},T.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},T.prototype._setAsyncGuaranteed=function(){p.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},T.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==c)return void 0===e&&this._isBound()?this._boundValue():e},T.prototype._promiseAt=function(t){return this[4*t-4+2]},T.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},T.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},T.prototype._boundValue=function(){},T.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,r=t._promise0,o=t._receiverAt(0);void 0===o&&(o=c),this._addCallbacks(e,n,r,o,null)},T.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),o=t._promiseAt(e),i=t._receiverAt(e);void 0===i&&(i=c),this._addCallbacks(n,r,o,i,null)},T.prototype._addCallbacks=function(t,e,n,r,o){var i=this._length();if(i>=65531&&(i=0,this._setLength(0)),0===i)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===o?t:u.domainBind(o,t)),"function"==typeof e&&(this._rejectionHandler0=null===o?e:u.domainBind(o,e));else{var a=4*i-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=null===o?t:u.domainBind(o,t)),"function"==typeof e&&(this[a+1]=null===o?e:u.domainBind(o,e))}return this._setLength(i+1),i},T.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},T.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(r(),!1);var n=g(t,this);if(!(n instanceof T))return this._fulfill(t);e&&this._propagateFrom(n,2);var o=n._target();if(o!==this){var i=o._bitField;if(0==(50397184&i)){var a=this._length();a>0&&o._migrateCallback0(this);for(var s=1;s<a;++s)o._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(o)}else if(0!=(33554432&i))this._fulfill(o._value());else if(0!=(16777216&i))this._reject(o._reason());else{var c=new _("late cancellation observer");o._attachExtraTrace(c),this._reject(c)}}else this._reject(r())}},T.prototype._rejectCallback=function(t,e,n){var r=u.ensureErrorObject(t),o=r===t;if(!o&&!n&&j.warnings()){var i="a promise was rejected with a non-error: "+u.classString(t);this._warn(i,!0)}this._attachExtraTrace(r,!!e&&o),this._reject(t)},T.prototype._resolveFromExecutor=function(t){if(t!==v){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},T.prototype._settlePromiseFromHandler=function(t,e,n,r){var o=r._bitField;if(0==(65536&o)){var i;r._pushContext(),e===y?n&&"number"==typeof n.length?i=S(t).apply(this._boundValue(),n):(i=O).e=new d("cannot .spread() a non-array: "+u.classString(n)):i=S(t).call(e,n);var a=r._popContext();0==(65536&(o=r._bitField))&&(i===m?r._reject(n):i===O?r._rejectCallback(i.e,!1):(j.checkForgottenReturns(i,a,"",r,this),r._resolveCallback(i)))}},T.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},T.prototype._followee=function(){return this._rejectionHandler0},T.prototype._setFollowee=function(t){this._rejectionHandler0=t},T.prototype._settlePromise=function(t,e,n,r){var i=t instanceof T,s=this._bitField,c=0!=(134217728&s);0!=(65536&s)?(i&&t._invokeInternalOnCancel(),n instanceof k&&n.isFinallyHandler()?(n.cancelPromise=t,S(e).call(n,r)===O&&t._reject(O.e)):e===o?t._fulfill(o.call(n)):n instanceof a?n._promiseCancelled(t):i||t instanceof b?t._cancel():n.cancel()):"function"==typeof e?i?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,r,t)):e.call(n,r,t):n instanceof a?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(r,t):n._promiseRejected(r,t)):i&&(c&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(r):t._reject(r))},T.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,o=t.value;"function"==typeof e?n instanceof T?this._settlePromiseFromHandler(e,r,o,n):e.call(r,o,n):n instanceof T&&n._reject(o)},T.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},T.prototype._settlePromise0=function(t,e,n){var r=this._promise0,o=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,o,e)},T.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},T.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():p.settlePromises(this),this._dereferenceTrace())}},T.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return p.fatalError(t,u.isNode);(65535&e)>0?p.settlePromises(this):this._ensurePossibleRejectionHandled()}},T.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var r=this._fulfillmentHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},T.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var r=this._rejectionHandlerAt(n),o=this._promiseAt(n),i=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(o,r,i,e)}},T.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},T.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},T.defer=T.pending=function(){j.deprecated("Promise.defer","new Promise");var t=new T(v);return{promise:t,resolve:F,reject:P}},u.notEnumerableProp(T,"_makeSelfResolutionError",r),t("./method")(T,v,g,i,j),t("./bind")(T,v,g,j),t("./cancel")(T,b,i,j),t("./direct_resolve")(T),t("./synchronous_inspection")(T),t("./join")(T,b,g,v,p,s),T.Promise=T,T.version="3.5.2",t("./map.js")(T,b,i,g,v,j),t("./call_get.js")(T),t("./using.js")(T,i,g,x,v,j),t("./timers.js")(T,v,j),t("./generators.js")(T,i,v,g,a,j),t("./nodeify.js")(T),t("./promisify.js")(T,v),t("./props.js")(T,b,g,i),t("./race.js")(T,v,g,i),t("./reduce.js")(T,b,i,g,v,j),t("./settle.js")(T,b,j),t("./some.js")(T,b,i),t("./filter.js")(T,v),t("./each.js")(T,v),t("./any.js")(T),u.toFastProperties(T),u.toFastProperties(T.prototype),R({a:1}),R({b:2}),R({c:3}),R(1),R(function(){}),R(void 0),R(!1),R(new T(v)),j.setBounds(f.firstLineError,u.lastLineError),T}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i){var a=t("./util");function s(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,i),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,i){var s=r(this._values,this._promise);if(s instanceof e){var c=(s=s._target())._bitField;if(this._values=s,0==(50397184&c))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,i);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===i?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(i));else{var u=o("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var o=this._promise,i=!1,a=null,s=0;s<n;++s){var c=r(t[s],o);c instanceof e?(c=c._target(),a=c._bitField):a=null,i?null!==a&&c.suppressUnhandledRejections():null!==a?0==(50397184&a)?(c._proxy(this,s),this._values[s]=c):i=0!=(33554432&a)?this._promiseFulfilled(c._value(),s):0!=(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):i=this._promiseFulfilled(c,s)}i||o._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var r={},o=t("./util"),i=t("./nodeback"),a=o.withAppended,s=o.maybeWrapAsError,c=o.canEvaluate,u=t("./errors").TypeError,l={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),p=function(t){return o.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function h(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function _(t,e,n){var r=o.getDataPropertyOrDefault(t,e+n,l);return!!r&&d(r)}function v(t,e,n,r){for(var i=o.inheritedDataKeys(t),a=[],s=0;s<i.length;++s){var c=i[s],l=t[c],f=r===p||p(c,l,t);"function"!=typeof l||d(l)||_(t,c,e)||!r(c,l,t,f)||a.push(c,l)}return function(t,e,n){for(var r=0;r<t.length;r+=2){var o=t[r];if(n.test(o))for(var i=o.replace(n,""),a=0;a<t.length;a+=2)if(t[a]===i)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(a,e,n),a}var y=function(t){return t.replace(/([$])/,"\\$")},m=c?void 0:function(t,c,u,l,f,p){var h=function(){return this}(),d=t;function _(){var o=c;c===r&&(o=this);var u=new e(n);u._captureStackTrace();var l="string"==typeof d&&this!==h?this[d]:t,f=i(u,p);try{l.apply(o,a(arguments,f))}catch(t){u._rejectCallback(s(t),!0,!0)}return u._isFateSealed()||u._setAsyncGuaranteed(),u}return"string"==typeof d&&(t=l),o.notEnumerableProp(_,"__isPromisified__",!0),_};function g(t,e,n,i,a){for(var s=new RegExp(y(e)+"$"),c=v(t,e,s,n),u=0,l=c.length;u<l;u+=2){var f=c[u],p=c[u+1],h=f+e;if(i===m)t[h]=m(f,r,f,p,e,a);else{var d=i(p,function(){return m(f,r,f,p,e,a)});o.notEnumerableProp(d,"__isPromisified__",!0),t[h]=d}}return o.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+o.classString(t));if(d(t))return t;var n=void 0===(e=Object(e)).context?r:e.context,i=!!e.multiArgs,a=function(t,e,n){return m(t,e,void 0,t,null,n)}(t,n,i);return o.copyDescriptors(t,a,h),a},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,r=e.suffix;"string"!=typeof r&&(r="Async");var i=e.filter;"function"!=typeof i&&(i=p);var a=e.promisifier;if("function"!=typeof a&&(a=m),!o.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=o.inheritedDataKeys(t),c=0;c<s.length;++c){var l=t[s[c]];"constructor"!==s[c]&&o.isClass(l)&&(g(l.prototype,r,i,a,n),g(l,r,i,a,n))}return g(t,r,i,a,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i,a=t("./util"),s=a.isObject,c=t("./es5");"function"==typeof Map&&(i=Map);var u=function(){var t=0,e=0;function n(n,r){this[t]=n,this[t+e]=r,t++}return function(r){e=r.size,t=0;var o=new Array(2*r.size);return r.forEach(n,o),o}}();function l(t){var e,n=!1;if(void 0!==i&&t instanceof i)e=u(t),n=!0;else{var r=c.keys(t),o=r.length;e=new Array(2*o);for(var a=0;a<o;++a){var s=r[a];e[a]=t[s],e[a+o]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function f(t){var n,i=r(t);return s(i)?(n=i instanceof e?i._then(e.props,void 0,void 0,void 0,void 0):new l(i).promise(),i instanceof e&&n._propagateFrom(i,2),n):o("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}a.inherits(l,n),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=function(t){for(var e=new i,n=t.length/2|0,r=0;r<n;++r){var o=t[n+r],a=t[r];e.set(o,a)}return e}(this._values);else{r={};for(var o=this.length(),a=0,s=this.length();a<s;++a)r[this._values[a+o]]=this._values[a]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t){this._capacity=t,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(t){return this._capacity<t},r.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1);var n=this._front+e&this._capacity-1;this[n]=t,this._length=e+1},r.prototype.push=function(t,e,n){var r=this.length()+3;if(this._willBeOverCapacity(r))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var o=this._front+r-3;this._checkCapacity(r);var i=this._capacity-1;this[o+0&i]=t,this[o+1&i]=e,this[o+2&i]=n,this._length=r},r.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},r.prototype.length=function(){return this._length},r.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},r.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t;var n=this._front,r=this._length,o=n+r&e-1;!function(t,e,n,r,o){for(var i=0;i<o;++i)n[i+r]=t[i+e],t[i+e]=void 0}(this,0,this,e,o)},e.exports=r},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,r,o){var i=t("./util"),a=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var c=r(t);if(c instanceof e)return a(c);if(null===(t=i.asArray(t)))return o("expecting an array or an iterable object but got "+i.classString(t));var u=new e(n);void 0!==s&&u._propagateFrom(s,3);for(var l=u._fulfill,f=u._reject,p=0,h=t.length;p<h;++p){var d=t[p];(void 0!==d||p in t)&&e.cast(d)._then(l,f,void 0,u,null)}return u}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch;function l(t,n,r,o){this.constructor$(t);var a=s();this._fn=null===a?n:c.domainBind(a,n),void 0!==r&&(r=e.resolve(r))._attachCancellationCallback(this),this._initialValue=r,this._currentCancellable=null,this._eachValues=o===i?Array(this._length):0===o?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function p(t,e,n,o){if("function"!=typeof e)return r("expecting a function but got "+c.classString(e));var i=new l(t,e,n,o);return i.promise()}function h(t){this.accum=t,this.array._gotAccum(t);var n=o(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(d,void 0,void 0,this,void 0)):d.call(this,n)}function d(t){var n,r=this.array,o=r._promise,i=u(r._fn);o._pushContext(),(n=void 0!==r._eachValues?i.call(o._boundValue(),t,this.index,this.length):i.call(o._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(r._currentCancellable=n);var s=o._popContext();return a.checkForgottenReturns(n,s,void 0!==r._eachValues?"Promise.each":"Promise.reduce",o),n}c.inherits(l,n),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==i&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var n,r;this._values=t;var o=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;r<o;++r){var i={accum:null,value:t[r],index:r,length:o,array:this};n=n._then(h,void 0,void 0,i,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(f,f,void 0,n,this)},e.prototype.reduce=function(t,e){return p(this,t,e,null)},e.reduce=function(t,e,n,r){return p(t,e,n,r)}}},{"./util":36}],29:[function(t,o,i){"use strict";var a,s=t("./util"),c=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var u=n.setImmediate,l=e.nextTick;a=s.isRecentNode?function(t){u.call(n,t)}:function(t){l.call(e,t)}}else if("function"==typeof c&&"function"==typeof c.resolve){var f=c.resolve();a=function(t){f.then(t)}}else a="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),o=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});return o.observe(r,e),function(o){var i=new MutationObserver(function(){i.disconnect(),o()});i.observe(t,e),n||(n=!0,r.classList.toggle("foo"))}}();o.exports=a},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=e.PromiseInspection,i=t("./util");function a(t){this.constructor$(t)}i.inherits(a,n),a.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new o;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new o;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=t("./errors").RangeError,a=t("./errors").AggregateError,s=o.isArray,c={};function u(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(t),o=n.promise();return n.setHowMany(e),n.init(),o}o.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(t){this._howMany=t},u.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(c),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new a,e=this.length();e<this._values.length;++e)this._values[e]!==c&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(t){this._values.push(t)},u.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new i(e)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},o=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},i=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return a.call(this._target())},t.prototype.isRejected=function(){return i.call(this._target())},t.prototype.isFulfilled=function(){return o.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var r=t("./util"),o=r.errorObj,i=r.isObject,a={}.hasOwnProperty;return function(t,s){if(i(t)){if(t instanceof e)return t;var c=function(t){try{return function(t){return t.then}(t)}catch(t){return o.e=t,o}}(t);if(c===o){s&&s._pushContext();var u=e.reject(c.e);return s&&s._popContext(),u}if("function"==typeof c){if(function(t){try{return a.call(t,"_promise0")}catch(t){return!1}}(t)){var u=new e(n);return t._then(u._fulfill,u._reject,void 0,u,null),u}return function(t,i,a){var s=new e(n),c=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,l=r.tryCatch(i).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,u,!0),s=null)});return u=!1,s&&l===o&&(s._rejectCallback(l.e,!0,!0),s=null),c}(t,c,s)}}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){var o=t("./util"),i=e.TimeoutError;function a(t){this.handle=t}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return c(+this).thenReturn(t)},c=e.delay=function(t,o){var i,c;return void 0!==o?(i=e.resolve(o)._then(s,null,null,t,void 0),r.cancellation()&&o instanceof e&&i._setOnCancel(o)):(i=new e(n),c=setTimeout(function(){i._fulfill()},+t),r.cancellation()&&i._setOnCancel(new a(c)),i._captureStackTrace()),i._setAsyncGuaranteed(),i};function u(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return c(t,this)},e.prototype.timeout=function(t,e){var n,s;t=+t;var c=new a(setTimeout(function(){n.isPending()&&function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new i("operation timed out"):new i(e),o.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()}(n,e,s)},t));return r.cancellation()?(s=this.then(),(n=s._then(u,l,void 0,c,void 0))._setOnCancel(c)):n=this._then(u,l,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,o,i,a){var s=t("./util"),c=t("./errors").TypeError,u=t("./util").inherits,l=s.errorObj,f=s.tryCatch,p={};function h(t){setTimeout(function(){throw t},0)}function d(t,n){var o=0,a=t.length,s=new e(i);return function i(){if(o>=a)return s._fulfill();var c=function(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[o++]);if(c instanceof e&&c._isDisposable()){try{c=r(c._getDisposer().tryDispose(n),t.promise)}catch(t){return h(t)}if(c instanceof e)return c._then(i,h,null,null,null)}i()}(),s}function _(t,e,n){this._data=t,this._promise=e,this._context=n}function v(t,e,n){this.constructor$(t,e,n)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},_.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==p?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},u(v,_),v.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var o,i=arguments[t-1];if("function"!=typeof i)return n("expecting a function but got "+s.classString(i));var c=!0;2===t&&Array.isArray(arguments[0])?(o=arguments[0],t=o.length,c=!1):(o=arguments,t--);for(var u=new m(t),p=0;p<t;++p){var h=o[p];if(_.isDisposer(h)){var v=h;(h=h.promise())._setDisposable(v)}else{var g=r(h);g instanceof e&&(h=g._then(y,null,null,{resources:u,index:p},void 0))}u[p]=h}for(var b=new Array(u.length),p=0;p<b.length;++p)b[p]=e.resolve(u[p]).reflect();var w=e.all(b).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return l.e=n.error(),l;if(!n.isFulfilled())return void w.cancel();t[e]=n.value()}x._pushContext(),i=f(i);var r=c?i.apply(void 0,t):i(t),o=x._popContext();return a.checkForgottenReturns(r,o,"Promise.using",x),r}),x=w.lastly(function(){var t=new e.PromiseInspection(w);return d(u,t)});return u.promise=x,x._setOnCancel(u),x},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,o());throw new c}}},{"./errors":12,"./util":36}],36:[function(t,r,o){"use strict";var i=t("./es5"),a="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function l(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function f(t){return c=t,l}var p=function(t,e){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=e.prototype[r])}return r.prototype=e.prototype,t.prototype=new r,t.prototype};function h(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function d(t){return"function"==typeof t||"object"==typeof t&&null!==t}function _(t){return h(t)?new Error(O(t)):t}function v(t,e){var n,r=t.length,o=new Array(r+1);for(n=0;n<r;++n)o[n]=t[n];return o[n]=e,o}function y(t,e,n){if(!i.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function m(t,e,n){if(h(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return i.defineProperty(t,e,r),t}function g(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(i.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var r=[],o=Object.create(null);null!=t&&!e(t);){var a;try{a=n(t)}catch(t){return r}for(var s=0;s<a.length;++s){var c=a[s];if(!o[c]){o[c]=!0;var u=Object.getOwnPropertyDescriptor(t,c);null!=u&&null==u.get&&null==u.set&&r.push(c)}}t=i.getPrototypeOf(t)}return r}}var r={}.hasOwnProperty;return function(n){if(e(n))return[];var o=[];t:for(var i in n)if(r.call(n,i))o.push(i);else{for(var a=0;a<t.length;++a)if(r.call(t[a],i))continue t;o.push(i)}return o}}(),w=/this\s*\.\s*\S+\s*=/;function x(t){try{if("function"==typeof t){var e=i.names(t.prototype),n=i.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),o=w.test(t+"")&&i.names(t).length>0;if(n||r||o)return!0}return!1}catch(t){return!1}}function j(t){function e(){}e.prototype=t;var n=new e;function r(){return typeof n.foo}return r(),r(),t}var k=/^[a-z$_][a-z$_0-9]*$/i;function E(t){return k.test(t)}function C(t,e,n){for(var r=new Array(t),o=0;o<t;++o)r[o]=e+o+n;return r}function O(t){try{return t+""}catch(t){return"[no string representation]"}}function S(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function T(t){try{m(t,"isOperational",!0)}catch(t){}}function F(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function P(t){return S(t)&&i.propertyIsWritable(t,"stack")}var R="stack"in new Error?function(t){return P(t)?t:new Error(O(t))}:function(t){if(P(t))return t;try{throw new Error(O(t))}catch(t){return t}};function A(t){return{}.toString.call(t)}function D(t,e,n){for(var r=i.names(t),o=0;o<r.length;++o){var a=r[o];if(n(a))try{i.defineProperty(e,a,i.getDescriptor(t,a))}catch(t){}}}var L=function(t){return i.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var I="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],r=t[Symbol.iterator]();!(e=r.next()).done;)n.push(e.value);return n};L=function(t){return i.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?I(t):null}}var M=void 0!==e&&"[object process]"===A(e).toLowerCase(),N=void 0!==e&&!0;function B(t){return N?Object({NODE_ENV:"production"})[t]:void 0}function V(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function U(t,e){return t.bind(e)}var H={isClass:x,isIdentifier:E,inheritedDataKeys:b,getDataPropertyOrDefault:y,thrower:g,isArray:i.isArray,asArray:L,notEnumerableProp:m,isPrimitive:h,isObject:d,isError:S,canEvaluate:a,errorObj:s,tryCatch:f,inherits:p,withAppended:v,maybeWrapAsError:_,toFastProperties:j,filledRange:C,toString:O,canAttachTrace:P,ensureErrorObject:R,originatesFromRejection:F,markAsOriginatingFromRejection:T,classString:A,copyDescriptors:D,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:M,hasEnvVariables:N,env:B,global:u,getNativePromise:V,domainBind:U};H.isRecentNode=H.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),H.isNode&&H.toFastProperties(e);try{throw new Error}catch(t){H.lastLineError=t}r.exports=H},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(54),n(15),n(187).setImmediate)},94:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},95:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},96:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}}}); +//# sourceMappingURL=indexeddb-worker.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js.map b/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js.map new file mode 100644 index 0000000..6288eaf --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/web.dom.iterable.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_object-create.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_set-to-string-tag.js","node_modules/core-js/library/modules/_object-pie.js","node_modules/core-js/library/modules/_library.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/core-js/library/modules/_meta.js","node_modules/babel-runtime/core-js/object/keys.js","node_modules/babel-runtime/helpers/slicedToArray.js","(webpack)/buildin/global.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_classof.js","node_modules/core-js/library/modules/_wks-ext.js","node_modules/core-js/library/modules/_wks-define.js","node_modules/core-js/library/modules/_core.js","node_modules/core-js/library/modules/_iter-define.js","node_modules/core-js/library/modules/core.get-iterator-method.js","node_modules/timers-browserify/main.js","src/vector/indexeddb-worker.js","node_modules/matrix-js-sdk/lib/indexeddb-worker.js","node_modules/matrix-js-sdk/lib/store/indexeddb-store-worker.js","node_modules/core-js/library/modules/_object-gops.js","node_modules/babel-runtime/regenerator/index.js","node_modules/babel-runtime/core-js/get-iterator.js","node_modules/babel-runtime/core-js/array/from.js","node_modules/core-js/library/modules/_redefine.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/core-js/library/modules/_object-gpo.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/babel-runtime/core-js/object/define-property.js","node_modules/core-js/library/modules/_object-gopd.js","node_modules/core-js/library/modules/_object-gopn.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_object-dps.js","node_modules/core-js/library/modules/_html.js","node_modules/core-js/library/modules/_iter-call.js","node_modules/core-js/library/modules/_is-array-iter.js","node_modules/core-js/library/modules/_iter-detect.js","node_modules/core-js/library/modules/_object-gopn-ext.js","node_modules/core-js/library/modules/_iter-step.js","node_modules/core-js/library/modules/_is-array.js","node_modules/matrix-js-sdk/lib/sync-accumulator.js","node_modules/matrix-js-sdk/lib/utils.js","node_modules/babel-runtime/core-js/json/stringify.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_is-object.js","node_modules/core-js/library/fn/array/from.js","node_modules/core-js/library/modules/_string-at.js","node_modules/core-js/library/modules/_iter-create.js","node_modules/core-js/library/modules/es6.array.from.js","node_modules/core-js/library/modules/_create-property.js","node_modules/core-js/library/fn/object/create.js","node_modules/core-js/library/modules/es6.object.create.js","node_modules/core-js/library/fn/object/define-property.js","node_modules/core-js/library/modules/es6.object.define-property.js","node_modules/babel-runtime/core-js/symbol/iterator.js","node_modules/core-js/library/fn/symbol/iterator.js","node_modules/core-js/library/modules/es6.array.iterator.js","node_modules/core-js/library/modules/_add-to-unscopables.js","node_modules/babel-runtime/core-js/symbol.js","node_modules/core-js/library/fn/symbol/index.js","node_modules/core-js/library/modules/es6.symbol.js","node_modules/core-js/library/modules/_enum-keys.js","node_modules/core-js/library/modules/es7.symbol.async-iterator.js","node_modules/core-js/library/modules/es7.symbol.observable.js","node_modules/core-js/library/modules/_wks.js","node_modules/core-js/library/fn/json/stringify.js","node_modules/core-js/library/fn/get-iterator.js","node_modules/core-js/library/modules/core.get-iterator.js","node_modules/babel-runtime/core-js/is-iterable.js","node_modules/core-js/library/fn/is-iterable.js","node_modules/core-js/library/modules/core.is-iterable.js","node_modules/matrix-js-sdk/lib/store/indexeddb-local-backend.js","node_modules/babel-runtime/helpers/classCallCheck.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/babel-runtime/helpers/createClass.js","node_modules/babel-runtime/helpers/toConsumableArray.js","node_modules/core-js/library/modules/_an-object.js","node_modules/process/browser.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_has.js","node_modules/babel-runtime/helpers/typeof.js","node_modules/core-js/library/modules/_ctx.js","node_modules/babel-runtime/core-js/object/create.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_iterators.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/es6.string.iterator.js","node_modules/core-js/library/modules/_to-object.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_uid.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ceil","Math","floor","it","isNaN","undefined","TypeError","global","hide","Iterators","TO_STRING_TAG","DOMIterables","split","length","NAME","Collection","proto","Array","isObject","S","fn","val","toString","valueOf","anObject","dPs","enumBugKeys","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","src","contentWindow","document","open","write","lt","close","F","O","Properties","result","toInteger","min","shared","uid","store","def","f","has","TAG","tag","stat","configurable","propertyIsEnumerable","is","createElement","META","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","KEY","NEED","fastKey","getWeak","onFreeze","default","_isIterable3","_interopRequireDefault","_getIterator3","obj","arr","isArray","_arr","_n","_d","_e","_s","_i","next","done","push","err","sliceIterator","g","this","Function","eval","e","window","a","toIObject","arrayIndexOf","names","cof","ARG","arguments","T","B","tryGet","callee","core","LIBRARY","wksExt","$Symbol","charAt","version","__e","$export","redefine","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","returnThis","Base","Constructor","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","entries","values","P","classof","getIteratorMethod","scope","self","apply","Timeout","clearFn","_id","_clearFn","setTimeout","clearTimeout","setInterval","clearInterval","timeout","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","remoteWorker","IndexedDBStoreWorker","postMessage","onmessage","onMessage","_toConsumableArray3","_classCallCheck3","_createClass3","_bluebird2","_indexeddbLocalBackend2","backend","ev","_backend","_backend2","_this","msg","data","prom","command","indexedDB","args","resolve","connect","isNewlyCreated","clearDatabase","then","getSavedSync","setSyncData","syncToDatabase","getUserPresenceEvents","getNextBatchToken","getOutOfBandMembers","clearOutOfBandMembers","setOutOfBandMembers","getClientOptions","storeClientOptions","ret","seq","console","error","message","getOwnPropertySymbols","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","index","max","toObject","ObjectProto","constructor","hadRuntime","regeneratorRuntime","getOwnPropertyNames","indexOf","oldRuntime","Op","hasOwn","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","wrap","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","iter","reverse","pop","Context","reset","skipTempReset","prev","sent","_sent","delegate","method","tryEntries","forEach","resetTryEntry","slice","stop","rootRecord","completion","type","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","Promise","reject","invoke","unwrapped","return","info","pushTryEntry","locs","iteratorMethod","process","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","nextTick","runIfPresent","importScripts","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","event","source","addEventListener","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","html","documentElement","script","onreadystatechange","removeChild","installReadyStateChangeImplementation","callback","task","run","$keys","pIE","createDesc","toPrimitive","IE8_DOM_DEFINE","gOPD","getOwnPropertyDescriptor","hiddenKeys","concat","ctx","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","IS_WRAP","W","expProto","target","C","b","virtual","R","U","dP","getKeys","defineProperties","ArrayProto","SAFE_CLOSING","riter","from","exec","skipClosing","safe","gOPN","windowNames","getWindowNames","_create2","_keys2","_utils2","SyncAccumulator","opts","maxTimelineEntries","accountData","inviteRooms","joinRooms","nextBatch","groups","invite","join","leave","syncResponse","_accumulateRooms","_accumulateGroups","_accumulateAccountData","next_batch","account_data","events","_this2","rooms","roomId","_accumulateRoom","category","_accumulateInviteState","_accumulateJoinState","invite_state","currentData","hasAdded","current","state_key","_currentState","_timeline","_accountData","_unreadNotifications","_summary","_readReceipts","unread_notifications","summary","acc","sum","ephemeral","content","eventId","userId","timeline","limited","setState","token","prev_batch","_this3","groupId","_accumulateGroup","cat","_this4","roomData","roomJson","evType","receiptEvent","room_id","receiptData","m.read","msgData","rollBackState","timelineEvent","prevStateEvent","deepCopy","unsigned","prev_content","prev_sender","sender","stateKey","accData","roomsData","groupsData","eventMap","_typeof3","_stringify2","encodeParams","params","qs","encodeURIComponent","substring","encodeUri","pathTemplate","variables","replace","map","array","results","filter","findElement","removeElement","removed","splice","isFunction","Boolean","checkObjectHasKeys","checkObjectHasNoAdditionalKeys","allowedKeys","JSON","parse","deepCompare","x","y","RegExp","Date","extend","propName","runPolyfills","fun","len","res","thisArg","k","A","kValue","mappedValue","inherits","superCtor","Temp","prop","super_","writable","isNumber","isFinite","removeHiddenChars","str","normalize","removeHiddenCharsRegex","__g","defined","TO_STRING","that","pos","String","charCodeAt","descriptor","isArrayIter","createProperty","getIterFn","arrayLike","step","aLen","mapfn","mapping","iterFn","$defineProperty","$Object","D","desc","addToUnscopables","iterated","_t","_k","Arguments","DESCRIPTORS","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","set","es6Symbols","j","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","gOPS","getSymbols","symbols","USE_SYMBOL","getIterator","isIterable","_regenerator2","_bluebird","_slicedToArray3","_syncAccumulator2","selectQuery","keyRange","resultMapper","query","openCursor","onerror","errorCode","onsuccess","cursor","continue","txnAsPromise","txn","oncomplete","reqAsEventPromise","req","reqAsPromise","reqAsCursorPromise","LocalIndexedDBStoreBackend","indexedDBInterface","dbName","_dbName","db","_disconnected","_syncAccumulator","_isNewlyCreated","log","onupgradeneeded","oldVersion","createObjectStore","keyPath","createDatabase","createIndex","upgradeSchemaV2","upgradeSchemaV3","onblocked","onversionchange","_init","all","_loadAccountData","_loadSyncData","_ref","_ref2","syncData","accumulate","roomIndex","transaction","objectStore","range","IDBKeyRange","only","request","membershipEvents","oobWritten","oob_written","_ref3","coroutine","_callee","tx","markerObject","_context","put","_x","_x2","_ref4","_callee2","readTx","roomRange","minStateKeyProm","maxStateKeyProm","_ref5","_ref6","minStateKey","maxStateKey","writeTx","writeStore","membersKeyRange","_context2","openKeyCursor","primaryKey","bound","delete","_x3","deleteDatabase","warn","copy","getJSON","_this5","userTuples","_persistUserPresenceEvents","_persistAccountData","_persistSyncData","_this6","try","clobber","_this7","tuples","_this8","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","tuple","_this9","_this10","_this11","_this12","options","_ref7","_callee3","_context3","_x4","instance","Attributes","_defineProperty2","props","protoProps","staticProps","_from2","arr2","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","IObject","_iterator2","_symbol2","_typeof","aFunction","fails","exp","bitmap","$at","point","define","u","_dereq_","code","1","SomePromiseArray","_SomePromiseArray","any","promises","promise","setHowMany","setUnwrap","init","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","shift","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","stack","exit","throwLater","invokeLater","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","errorObj","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","instances","cb","boundTo","predicateLoop","matchesPredicate","./es5","8","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","onPossiblyUnhandledRejection","domain","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","config","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","detail","cancelable","domEvent","toLowerCase","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","stackFramesAsArray","isSoft","localHandler","localEventFired","formatNonError","newStr","substr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","nodes","stackToIndex","node","currentStack","cycleEdgeNode","currentChildLength","stacks","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","propertyIsWritable","ObjectKeys","14","PromiseMap","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","_init$","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","isMap","_isMap","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","moveItemsCount","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","attributes","toggleScheduled","div2","o2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","to","ArrayFrom","itResult","hasEnvVariables","NODE_ENV","chrome","loadTimes","Number","px"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/indexeddb-worker.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1877);\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = true;\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';\n\nconst remoteWorker = new IndexedDBStoreWorker(postMessage);\n\nonmessage = remoteWorker.onMessage;\n","\"use strict\";\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/**\n * Separate exports file for the indexeddb web worker, which is designed\n * to be used separately\n */\n\n/** The {@link module:indexeddb-store-worker~IndexedDBStoreWorker} class. */\nmodule.exports.IndexedDBStoreWorker = require(\"./store/indexeddb-store-worker.js\");\n//# sourceMappingURL=indexeddb-worker.js.map","'use strict';\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _bluebird = require('bluebird');\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _indexeddbLocalBackend = require('./indexeddb-local-backend.js');\n\nvar _indexeddbLocalBackend2 = _interopRequireDefault(_indexeddbLocalBackend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * This class lives in the webworker and drives a LocalIndexedDBStoreBackend\n * controlled by messages from the main process.\n *\n * It should be instantiated by a web worker script provided by the application\n * in a script, for example:\n *\n * import {IndexedDBStoreWorker} from 'matrix-js-sdk/lib/indexeddb-worker.js';\n * const remoteWorker = new IndexedDBStoreWorker(postMessage);\n * onmessage = remoteWorker.onMessage;\n *\n * Note that it is advisable to import this class by referencing the file directly to\n * avoid a dependency on the whole js-sdk.\n *\n */\n/*\nCopyright 2017 Vector Creations Ltd\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nvar IndexedDBStoreWorker = function () {\n /**\n * @param {function} postMessage The web worker postMessage function that\n * should be used to communicate back to the main script.\n */\n function IndexedDBStoreWorker(postMessage) {\n (0, _classCallCheck3.default)(this, IndexedDBStoreWorker);\n\n this.backend = null;\n this.postMessage = postMessage;\n\n this.onMessage = this.onMessage.bind(this);\n }\n\n /**\n * Passes a message event from the main script into the class. This method\n * can be directly assigned to the web worker `onmessage` variable.\n *\n * @param {Object} ev The message event\n */\n\n\n (0, _createClass3.default)(IndexedDBStoreWorker, [{\n key: 'onMessage',\n value: function onMessage(ev) {\n var _backend,\n _backend2,\n _this = this;\n\n var msg = ev.data;\n var prom = void 0;\n\n switch (msg.command) {\n case '_setupWorker':\n this.backend = new _indexeddbLocalBackend2.default(\n // this is the 'indexedDB' global (where global != window\n // because it's a web worker and there is no window).\n indexedDB, msg.args[0]);\n prom = _bluebird2.default.resolve();\n break;\n case 'connect':\n prom = this.backend.connect();\n break;\n case 'isNewlyCreated':\n prom = this.backend.isNewlyCreated();\n break;\n case 'clearDatabase':\n prom = this.backend.clearDatabase().then(function (result) {\n // This returns special classes which can't be cloned\n // across to the main script, so don't try.\n return {};\n });\n break;\n case 'getSavedSync':\n prom = this.backend.getSavedSync(false);\n break;\n case 'setSyncData':\n prom = (_backend = this.backend).setSyncData.apply(_backend, (0, _toConsumableArray3.default)(msg.args));\n break;\n case 'syncToDatabase':\n prom = (_backend2 = this.backend).syncToDatabase.apply(_backend2, (0, _toConsumableArray3.default)(msg.args)).then(function () {\n // This also returns IndexedDB events which are not cloneable\n return {};\n });\n break;\n case 'getUserPresenceEvents':\n prom = this.backend.getUserPresenceEvents();\n break;\n case 'getNextBatchToken':\n prom = this.backend.getNextBatchToken();\n break;\n case 'getOutOfBandMembers':\n prom = this.backend.getOutOfBandMembers(msg.args[0]);\n break;\n case 'clearOutOfBandMembers':\n prom = this.backend.clearOutOfBandMembers(msg.args[0]);\n break;\n case 'setOutOfBandMembers':\n prom = this.backend.setOutOfBandMembers(msg.args[0], msg.args[1]);\n break;\n case 'getClientOptions':\n prom = this.backend.getClientOptions();\n break;\n case 'storeClientOptions':\n prom = this.backend.storeClientOptions(msg.args[0]);\n break;\n }\n\n if (prom === undefined) {\n this.postMessage({\n command: 'cmd_fail',\n seq: msg.seq,\n // Can't be an Error because they're not structured cloneable\n error: \"Unrecognised command\"\n });\n return;\n }\n\n prom.done(function (ret) {\n _this.postMessage.call(null, {\n command: 'cmd_success',\n seq: msg.seq,\n result: ret\n });\n }, function (err) {\n console.error(\"Error running command: \" + msg.command);\n console.error(err);\n _this.postMessage.call(null, {\n command: 'cmd_fail',\n seq: msg.seq,\n // Just send a string because Error objects aren't cloneable\n error: {\n message: err.message,\n name: err.name\n }\n });\n });\n }\n }]);\n return IndexedDBStoreWorker;\n}();\n\nmodule.exports = IndexedDBStoreWorker;\n//# sourceMappingURL=indexeddb-store-worker.js.map","exports.f = Object.getOwnPropertySymbols;\n","module.exports = require(\"regenerator-runtime\");\n","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","module.exports = require('./_hide');\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","\"use strict\";\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _keys = require(\"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _classCallCheck2 = require(\"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require(\"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _utils = require(\"./utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The purpose of this class is to accumulate /sync responses such that a\n * complete \"initial\" JSON response can be returned which accurately represents\n * the sum total of the /sync responses accumulated to date. It only handles\n * room data: that is, everything under the \"rooms\" top-level key.\n *\n * This class is used when persisting room data so a complete /sync response can\n * be loaded from disk and incremental syncs can be performed on the server,\n * rather than asking the server to do an initial sync on startup.\n */\nvar SyncAccumulator = function () {\n\n /**\n * @param {Object} opts\n * @param {Number=} opts.maxTimelineEntries The ideal maximum number of\n * timeline entries to keep in the sync response. This is best-effort, as\n * clients do not always have a back-pagination token for each event, so\n * it's possible there may be slightly *less* than this value. There will\n * never be more. This cannot be 0 or else it makes it impossible to scroll\n * back in a room. Default: 50.\n */\n function SyncAccumulator(opts) {\n (0, _classCallCheck3.default)(this, SyncAccumulator);\n\n opts = opts || {};\n opts.maxTimelineEntries = opts.maxTimelineEntries || 50;\n this.opts = opts;\n this.accountData = {\n //$event_type: Object\n };\n this.inviteRooms = {\n //$roomId: { ... sync 'invite' json data ... }\n };\n this.joinRooms = {\n //$roomId: {\n // _currentState: { $event_type: { $state_key: json } },\n // _timeline: [\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // { event: $event, token: null|token },\n // ...\n // ],\n // _summary: {\n // m.heroes: [ $user_id ],\n // m.joined_member_count: $count,\n // m.invited_member_count: $count\n // },\n // _accountData: { $event_type: json },\n // _unreadNotifications: { ... unread_notifications JSON ... },\n // _readReceipts: { $user_id: { data: $json, eventId: $event_id }}\n //}\n };\n // the /sync token which corresponds to the last time rooms were\n // accumulated. We remember this so that any caller can obtain a\n // coherent /sync response and know at what point they should be\n // streaming from without losing events.\n this.nextBatch = null;\n\n // { ('invite'|'join'|'leave'): $groupId: { ... sync 'group' data } }\n this.groups = {\n invite: {},\n join: {},\n leave: {}\n };\n }\n\n (0, _createClass3.default)(SyncAccumulator, [{\n key: \"accumulate\",\n value: function accumulate(syncResponse) {\n this._accumulateRooms(syncResponse);\n this._accumulateGroups(syncResponse);\n this._accumulateAccountData(syncResponse);\n this.nextBatch = syncResponse.next_batch;\n }\n }, {\n key: \"_accumulateAccountData\",\n value: function _accumulateAccountData(syncResponse) {\n var _this = this;\n\n if (!syncResponse.account_data || !syncResponse.account_data.events) {\n return;\n }\n // Clobbers based on event type.\n syncResponse.account_data.events.forEach(function (e) {\n _this.accountData[e.type] = e;\n });\n }\n\n /**\n * Accumulate incremental /sync room data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateRooms\",\n value: function _accumulateRooms(syncResponse) {\n var _this2 = this;\n\n if (!syncResponse.rooms) {\n return;\n }\n if (syncResponse.rooms.invite) {\n (0, _keys2.default)(syncResponse.rooms.invite).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"invite\", syncResponse.rooms.invite[roomId]);\n });\n }\n if (syncResponse.rooms.join) {\n (0, _keys2.default)(syncResponse.rooms.join).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"join\", syncResponse.rooms.join[roomId]);\n });\n }\n if (syncResponse.rooms.leave) {\n (0, _keys2.default)(syncResponse.rooms.leave).forEach(function (roomId) {\n _this2._accumulateRoom(roomId, \"leave\", syncResponse.rooms.leave[roomId]);\n });\n }\n }\n }, {\n key: \"_accumulateRoom\",\n value: function _accumulateRoom(roomId, category, data) {\n // Valid /sync state transitions\n // +--------+ <======+ 1: Accept an invite\n // +== | INVITE | | (5) 2: Leave a room\n // | +--------+ =====+ | 3: Join a public room previously\n // |(1) (4) | | left (handle as if new room)\n // V (2) V | 4: Reject an invite\n // +------+ ========> +--------+ 5: Invite to a room previously\n // | JOIN | (3) | LEAVE* | left (handle as if new room)\n // +------+ <======== +--------+\n //\n // * equivalent to \"no state\"\n switch (category) {\n case \"invite\":\n // (5)\n this._accumulateInviteState(roomId, data);\n break;\n case \"join\":\n if (this.inviteRooms[roomId]) {\n // (1)\n // was previously invite, now join. We expect /sync to give\n // the entire state and timeline on 'join', so delete previous\n // invite state\n delete this.inviteRooms[roomId];\n }\n // (3)\n this._accumulateJoinState(roomId, data);\n break;\n case \"leave\":\n if (this.inviteRooms[roomId]) {\n // (4)\n delete this.inviteRooms[roomId];\n } else {\n // (2)\n delete this.joinRooms[roomId];\n }\n break;\n default:\n console.error(\"Unknown cateogory: \", category);\n }\n }\n }, {\n key: \"_accumulateInviteState\",\n value: function _accumulateInviteState(roomId, data) {\n if (!data.invite_state || !data.invite_state.events) {\n // no new data\n return;\n }\n if (!this.inviteRooms[roomId]) {\n this.inviteRooms[roomId] = {\n invite_state: data.invite_state\n };\n return;\n }\n // accumulate extra keys for invite->invite transitions\n // clobber based on event type / state key\n // We expect invite_state to be small, so just loop over the events\n var currentData = this.inviteRooms[roomId];\n data.invite_state.events.forEach(function (e) {\n var hasAdded = false;\n for (var i = 0; i < currentData.invite_state.events.length; i++) {\n var current = currentData.invite_state.events[i];\n if (current.type === e.type && current.state_key == e.state_key) {\n currentData.invite_state.events[i] = e; // update\n hasAdded = true;\n }\n }\n if (!hasAdded) {\n currentData.invite_state.events.push(e);\n }\n });\n }\n\n // Accumulate timeline and state events in a room.\n\n }, {\n key: \"_accumulateJoinState\",\n value: function _accumulateJoinState(roomId, data) {\n // We expect this function to be called a lot (every /sync) so we want\n // this to be fast. /sync stores events in an array but we often want\n // to clobber based on type/state_key. Rather than convert arrays to\n // maps all the time, just keep private maps which contain\n // the actual current accumulated sync state, and array-ify it when\n // getJSON() is called.\n\n // State resolution:\n // The 'state' key is the delta from the previous sync (or start of time\n // if no token was supplied), to the START of the timeline. To obtain\n // the current state, we need to \"roll forward\" state by reading the\n // timeline. We want to store the current state so we can drop events\n // out the end of the timeline based on opts.maxTimelineEntries.\n //\n // 'state' 'timeline' current state\n // |-------x<======================>x\n // T I M E\n //\n // When getJSON() is called, we 'roll back' the current state by the\n // number of entries in the timeline to work out what 'state' should be.\n\n // Back-pagination:\n // On an initial /sync, the server provides a back-pagination token for\n // the start of the timeline. When /sync deltas come down, they also\n // include back-pagination tokens for the start of the timeline. This\n // means not all events in the timeline have back-pagination tokens, as\n // it is only the ones at the START of the timeline which have them.\n // In order for us to have a valid timeline (and back-pagination token\n // to match), we need to make sure that when we remove old timeline\n // events, that we roll forward to an event which has a back-pagination\n // token. This means we can't keep a strict sliding-window based on\n // opts.maxTimelineEntries, and we may have a few less. We should never\n // have more though, provided that the /sync limit is less than or equal\n // to opts.maxTimelineEntries.\n\n if (!this.joinRooms[roomId]) {\n // Create truly empty objects so event types of 'hasOwnProperty' and co\n // don't cause this code to break.\n this.joinRooms[roomId] = {\n _currentState: (0, _create2.default)(null),\n _timeline: [],\n _accountData: (0, _create2.default)(null),\n _unreadNotifications: {},\n _summary: {},\n _readReceipts: {}\n };\n }\n var currentData = this.joinRooms[roomId];\n\n if (data.account_data && data.account_data.events) {\n // clobber based on type\n data.account_data.events.forEach(function (e) {\n currentData._accountData[e.type] = e;\n });\n }\n\n // these probably clobber, spec is unclear.\n if (data.unread_notifications) {\n currentData._unreadNotifications = data.unread_notifications;\n }\n if (data.summary) {\n var HEROES_KEY = \"m.heroes\";\n var INVITED_COUNT_KEY = \"m.invited_member_count\";\n var JOINED_COUNT_KEY = \"m.joined_member_count\";\n\n var acc = currentData._summary;\n var sum = data.summary;\n acc[HEROES_KEY] = sum[HEROES_KEY] || acc[HEROES_KEY];\n acc[JOINED_COUNT_KEY] = sum[JOINED_COUNT_KEY] || acc[JOINED_COUNT_KEY];\n acc[INVITED_COUNT_KEY] = sum[INVITED_COUNT_KEY] || acc[INVITED_COUNT_KEY];\n }\n\n if (data.ephemeral && data.ephemeral.events) {\n data.ephemeral.events.forEach(function (e) {\n // We purposefully do not persist m.typing events.\n // Technically you could refresh a browser before the timer on a\n // typing event is up, so it'll look like you aren't typing when\n // you really still are. However, the alternative is worse. If\n // we do persist typing events, it will look like people are\n // typing forever until someone really does start typing (which\n // will prompt Synapse to send down an actual m.typing event to\n // clobber the one we persisted).\n if (e.type !== \"m.receipt\" || !e.content) {\n // This means we'll drop unknown ephemeral events but that\n // seems okay.\n return;\n }\n // Handle m.receipt events. They clobber based on:\n // (user_id, receipt_type)\n // but they are keyed in the event as:\n // content:{ $event_id: { $receipt_type: { $user_id: {json} }}}\n // so store them in the former so we can accumulate receipt deltas\n // quickly and efficiently (we expect a lot of them). Fold the\n // receipt type into the key name since we only have 1 at the\n // moment (m.read) and nested JSON objects are slower and more\n // of a hassle to work with. We'll inflate this back out when\n // getJSON() is called.\n (0, _keys2.default)(e.content).forEach(function (eventId) {\n if (!e.content[eventId][\"m.read\"]) {\n return;\n }\n (0, _keys2.default)(e.content[eventId][\"m.read\"]).forEach(function (userId) {\n // clobber on user ID\n currentData._readReceipts[userId] = {\n data: e.content[eventId][\"m.read\"][userId],\n eventId: eventId\n };\n });\n });\n });\n }\n\n // if we got a limited sync, we need to remove all timeline entries or else\n // we will have gaps in the timeline.\n if (data.timeline && data.timeline.limited) {\n currentData._timeline = [];\n }\n\n // Work out the current state. The deltas need to be applied in the order:\n // - existing state which didn't come down /sync.\n // - State events under the 'state' key.\n // - State events in the 'timeline'.\n if (data.state && data.state.events) {\n data.state.events.forEach(function (e) {\n setState(currentData._currentState, e);\n });\n }\n if (data.timeline && data.timeline.events) {\n data.timeline.events.forEach(function (e, index) {\n // this nops if 'e' isn't a state event\n setState(currentData._currentState, e);\n // append the event to the timeline. The back-pagination token\n // corresponds to the first event in the timeline\n currentData._timeline.push({\n event: e,\n token: index === 0 ? data.timeline.prev_batch : null\n });\n });\n }\n\n // attempt to prune the timeline by jumping between events which have\n // pagination tokens.\n if (currentData._timeline.length > this.opts.maxTimelineEntries) {\n var startIndex = currentData._timeline.length - this.opts.maxTimelineEntries;\n for (var i = startIndex; i < currentData._timeline.length; i++) {\n if (currentData._timeline[i].token) {\n // keep all events after this, including this one\n currentData._timeline = currentData._timeline.slice(i, currentData._timeline.length);\n break;\n }\n }\n }\n }\n\n /**\n * Accumulate incremental /sync group data.\n * @param {Object} syncResponse the complete /sync JSON\n */\n\n }, {\n key: \"_accumulateGroups\",\n value: function _accumulateGroups(syncResponse) {\n var _this3 = this;\n\n if (!syncResponse.groups) {\n return;\n }\n if (syncResponse.groups.invite) {\n (0, _keys2.default)(syncResponse.groups.invite).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"invite\", syncResponse.groups.invite[groupId]);\n });\n }\n if (syncResponse.groups.join) {\n (0, _keys2.default)(syncResponse.groups.join).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"join\", syncResponse.groups.join[groupId]);\n });\n }\n if (syncResponse.groups.leave) {\n (0, _keys2.default)(syncResponse.groups.leave).forEach(function (groupId) {\n _this3._accumulateGroup(groupId, \"leave\", syncResponse.groups.leave[groupId]);\n });\n }\n }\n }, {\n key: \"_accumulateGroup\",\n value: function _accumulateGroup(groupId, category, data) {\n var _arr = ['invite', 'join', 'leave'];\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var cat = _arr[_i];\n delete this.groups[cat][groupId];\n }\n this.groups[category][groupId] = data;\n }\n\n /**\n * Return everything under the 'rooms' key from a /sync response which\n * represents all room data that should be stored. This should be paired\n * with the sync token which represents the most recent /sync response\n * provided to accumulate().\n * @return {Object} An object with a \"nextBatch\", \"roomsData\" and \"accountData\"\n * keys.\n * The \"nextBatch\" key is a string which represents at what point in the\n * /sync stream the accumulator reached. This token should be used when\n * restarting a /sync stream at startup. Failure to do so can lead to missing\n * events. The \"roomsData\" key is an Object which represents the entire\n * /sync response from the 'rooms' key onwards. The \"accountData\" key is\n * a list of raw events which represent global account data.\n */\n\n }, {\n key: \"getJSON\",\n value: function getJSON() {\n var _this4 = this;\n\n var data = {\n join: {},\n invite: {},\n // always empty. This is set by /sync when a room was previously\n // in 'invite' or 'join'. On fresh startup, the client won't know\n // about any previous room being in 'invite' or 'join' so we can\n // just omit mentioning it at all, even if it has previously come\n // down /sync.\n // The notable exception is when a client is kicked or banned:\n // we may want to hold onto that room so the client can clearly see\n // why their room has disappeared. We don't persist it though because\n // it is unclear *when* we can safely remove the room from the DB.\n // Instead, we assume that if you're loading from the DB, you've\n // refreshed the page, which means you've seen the kick/ban already.\n leave: {}\n };\n (0, _keys2.default)(this.inviteRooms).forEach(function (roomId) {\n data.invite[roomId] = _this4.inviteRooms[roomId];\n });\n (0, _keys2.default)(this.joinRooms).forEach(function (roomId) {\n var roomData = _this4.joinRooms[roomId];\n var roomJson = {\n ephemeral: { events: [] },\n account_data: { events: [] },\n state: { events: [] },\n timeline: {\n events: [],\n prev_batch: null\n },\n unread_notifications: roomData._unreadNotifications,\n summary: roomData._summary\n };\n // Add account data\n (0, _keys2.default)(roomData._accountData).forEach(function (evType) {\n roomJson.account_data.events.push(roomData._accountData[evType]);\n });\n\n // Add receipt data\n var receiptEvent = {\n type: \"m.receipt\",\n room_id: roomId,\n content: {\n // $event_id: { \"m.read\": { $user_id: $json } }\n }\n };\n (0, _keys2.default)(roomData._readReceipts).forEach(function (userId) {\n var receiptData = roomData._readReceipts[userId];\n if (!receiptEvent.content[receiptData.eventId]) {\n receiptEvent.content[receiptData.eventId] = {\n \"m.read\": {}\n };\n }\n receiptEvent.content[receiptData.eventId][\"m.read\"][userId] = receiptData.data;\n });\n // add only if we have some receipt data\n if ((0, _keys2.default)(receiptEvent.content).length > 0) {\n roomJson.ephemeral.events.push(receiptEvent);\n }\n\n // Add timeline data\n roomData._timeline.forEach(function (msgData) {\n if (!roomJson.timeline.prev_batch) {\n // the first event we add to the timeline MUST match up to\n // the prev_batch token.\n if (!msgData.token) {\n return; // this shouldn't happen as we prune constantly.\n }\n roomJson.timeline.prev_batch = msgData.token;\n }\n roomJson.timeline.events.push(msgData.event);\n });\n\n // Add state data: roll back current state to the start of timeline,\n // by \"reverse clobbering\" from the end of the timeline to the start.\n // Convert maps back into arrays.\n var rollBackState = (0, _create2.default)(null);\n for (var i = roomJson.timeline.events.length - 1; i >= 0; i--) {\n var timelineEvent = roomJson.timeline.events[i];\n if (timelineEvent.state_key === null || timelineEvent.state_key === undefined) {\n continue; // not a state event\n }\n // since we're going back in time, we need to use the previous\n // state value else we'll break causality. We don't have the\n // complete previous state event, so we need to create one.\n var prevStateEvent = _utils2.default.deepCopy(timelineEvent);\n if (prevStateEvent.unsigned) {\n if (prevStateEvent.unsigned.prev_content) {\n prevStateEvent.content = prevStateEvent.unsigned.prev_content;\n }\n if (prevStateEvent.unsigned.prev_sender) {\n prevStateEvent.sender = prevStateEvent.unsigned.prev_sender;\n }\n }\n setState(rollBackState, prevStateEvent);\n }\n (0, _keys2.default)(roomData._currentState).forEach(function (evType) {\n (0, _keys2.default)(roomData._currentState[evType]).forEach(function (stateKey) {\n var ev = roomData._currentState[evType][stateKey];\n if (rollBackState[evType] && rollBackState[evType][stateKey]) {\n // use the reverse clobbered event instead.\n ev = rollBackState[evType][stateKey];\n }\n roomJson.state.events.push(ev);\n });\n });\n data.join[roomId] = roomJson;\n });\n\n // Add account data\n var accData = [];\n (0, _keys2.default)(this.accountData).forEach(function (evType) {\n accData.push(_this4.accountData[evType]);\n });\n\n return {\n nextBatch: this.nextBatch,\n roomsData: data,\n groupsData: this.groups,\n accountData: accData\n };\n }\n }, {\n key: \"getNextBatchToken\",\n value: function getNextBatchToken() {\n return this.nextBatch;\n }\n }]);\n return SyncAccumulator;\n}(); /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\n/**\n * This is an internal module. See {@link SyncAccumulator} for the public class.\n * @module sync-accumulator\n */\n\nfunction setState(eventMap, event) {\n if (event.state_key === null || event.state_key === undefined || !event.type) {\n return;\n }\n if (!eventMap[event.type]) {\n eventMap[event.type] = (0, _create2.default)(null);\n }\n eventMap[event.type][event.state_key] = event;\n}\n\nmodule.exports = SyncAccumulator;\n//# sourceMappingURL=sync-accumulator.js.map","/*\nCopyright 2015, 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\"use strict\";\n/**\n * This is an internal module.\n * @module utils\n */\n\n/**\n * Encode a dictionary of query parameters.\n * @param {Object} params A dict of key/values to encode e.g.\n * {\"foo\": \"bar\", \"baz\": \"taz\"}\n * @return {string} The encoded string e.g. foo=bar&baz=taz\n */\n\nvar _create = require(\"babel-runtime/core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"babel-runtime/helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nvar _stringify = require(\"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports.encodeParams = function (params) {\n var qs = \"\";\n for (var key in params) {\n if (!params.hasOwnProperty(key)) {\n continue;\n }\n qs += \"&\" + encodeURIComponent(key) + \"=\" + encodeURIComponent(params[key]);\n }\n return qs.substring(1);\n};\n\n/**\n * Encodes a URI according to a set of template variables. Variables will be\n * passed through encodeURIComponent.\n * @param {string} pathTemplate The path with template variables e.g. '/foo/$bar'.\n * @param {Object} variables The key/value pairs to replace the template\n * variables with. E.g. { \"$bar\": \"baz\" }.\n * @return {string} The result of replacing all template variables e.g. '/foo/baz'.\n */\nmodule.exports.encodeUri = function (pathTemplate, variables) {\n for (var key in variables) {\n if (!variables.hasOwnProperty(key)) {\n continue;\n }\n pathTemplate = pathTemplate.replace(key, encodeURIComponent(variables[key]));\n }\n return pathTemplate;\n};\n\n/**\n * Applies a map function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array with the signature <code>fn(element){...}</code>\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.map = function (array, fn) {\n var results = new Array(array.length);\n for (var i = 0; i < array.length; i++) {\n results[i] = fn(array[i]);\n }\n return results;\n};\n\n/**\n * Applies a filter function to the given array.\n * @param {Array} array The array to apply the function to.\n * @param {Function} fn The function that will be invoked for each element in\n * the array. It should return true to keep the element. The function signature\n * looks like <code>fn(element, index, array){...}</code>.\n * @return {Array} A new array with the results of the function.\n */\nmodule.exports.filter = function (array, fn) {\n var results = [];\n for (var i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n results.push(array[i]);\n }\n }\n return results;\n};\n\n/**\n * Get the keys for an object. Same as <code>Object.keys()</code>.\n * @param {Object} obj The object to get the keys for.\n * @return {string[]} The keys of the object.\n */\nmodule.exports.keys = function (obj) {\n var keys = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n keys.push(key);\n }\n return keys;\n};\n\n/**\n * Get the values for an object.\n * @param {Object} obj The object to get the values for.\n * @return {Array<*>} The values of the object.\n */\nmodule.exports.values = function (obj) {\n var values = [];\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n values.push(obj[key]);\n }\n return values;\n};\n\n/**\n * Invoke a function for each item in the array.\n * @param {Array} array The array.\n * @param {Function} fn The function to invoke for each element. Has the\n * function signature <code>fn(element, index)</code>.\n */\nmodule.exports.forEach = function (array, fn) {\n for (var i = 0; i < array.length; i++) {\n fn(array[i], i);\n }\n};\n\n/**\n * The findElement() method returns a value in the array, if an element in the array\n * satisfies (returns true) the provided testing function. Otherwise undefined\n * is returned.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>\n * @param {boolean} reverse True to search in reverse order.\n * @return {*} The first value in the array which returns <code>true</code> for\n * the given function.\n */\nmodule.exports.findElement = function (array, fn, reverse) {\n var i = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n return array[i];\n }\n }\n }\n};\n\n/**\n * The removeElement() method removes the first element in the array that\n * satisfies (returns true) the provided testing function.\n * @param {Array} array The array.\n * @param {Function} fn Function to execute on each value in the array, with the\n * function signature <code>fn(element, index, array)</code>. Return true to\n * remove this element and break.\n * @param {boolean} reverse True to search in reverse order.\n * @return {boolean} True if an element was removed.\n */\nmodule.exports.removeElement = function (array, fn, reverse) {\n var i = void 0;\n var removed = void 0;\n if (reverse) {\n for (i = array.length - 1; i >= 0; i--) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n } else {\n for (i = 0; i < array.length; i++) {\n if (fn(array[i], i, array)) {\n removed = array[i];\n array.splice(i, 1);\n return removed;\n }\n }\n }\n return false;\n};\n\n/**\n * Checks if the given thing is a function.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is a function.\n */\nmodule.exports.isFunction = function (value) {\n return Object.prototype.toString.call(value) == \"[object Function]\";\n};\n\n/**\n * Checks if the given thing is an array.\n * @param {*} value The thing to check.\n * @return {boolean} True if it is an array.\n */\nmodule.exports.isArray = function (value) {\n return Array.isArray ? Array.isArray(value) : Boolean(value && value.constructor === Array);\n};\n\n/**\n * Checks that the given object has the specified keys.\n * @param {Object} obj The object to check.\n * @param {string[]} keys The list of keys that 'obj' must have.\n * @throws If the object is missing keys.\n */\nmodule.exports.checkObjectHasKeys = function (obj, keys) {\n for (var i = 0; i < keys.length; i++) {\n if (!obj.hasOwnProperty(keys[i])) {\n throw new Error(\"Missing required key: \" + keys[i]);\n }\n }\n};\n\n/**\n * Checks that the given object has no extra keys other than the specified ones.\n * @param {Object} obj The object to check.\n * @param {string[]} allowedKeys The list of allowed key names.\n * @throws If there are extra keys.\n */\nmodule.exports.checkObjectHasNoAdditionalKeys = function (obj, allowedKeys) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n if (allowedKeys.indexOf(key) === -1) {\n throw new Error(\"Unknown key: \" + key);\n }\n }\n};\n\n/**\n * Deep copy the given object. The object MUST NOT have circular references and\n * MUST NOT have functions.\n * @param {Object} obj The object to deep copy.\n * @return {Object} A copy of the object without any references to the original.\n */\nmodule.exports.deepCopy = function (obj) {\n return JSON.parse((0, _stringify2.default)(obj));\n};\n\n/**\n * Compare two objects for equality. The objects MUST NOT have circular references.\n *\n * @param {Object} x The first object to compare.\n * @param {Object} y The second object to compare.\n *\n * @return {boolean} true if the two objects are equal\n */\nvar deepCompare = module.exports.deepCompare = function (x, y) {\n // Inspired by\n // http://stackoverflow.com/questions/1068834/object-comparison-in-javascript#1144249\n\n // Compare primitives and functions.\n // Also check if both arguments link to the same object.\n if (x === y) {\n return true;\n }\n\n if ((typeof x === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(x)) !== (typeof y === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(y))) {\n return false;\n }\n\n // special-case NaN (since NaN !== NaN)\n if (typeof x === 'number' && isNaN(x) && isNaN(y)) {\n return true;\n }\n\n // special-case null (since typeof null == 'object', but null.constructor\n // throws)\n if (x === null || y === null) {\n return x === y;\n }\n\n // everything else is either an unequal primitive, or an object\n if (!(x instanceof Object)) {\n return false;\n }\n\n // check they are the same type of object\n if (x.constructor !== y.constructor || x.prototype !== y.prototype) {\n return false;\n }\n\n // special-casing for some special types of object\n if (x instanceof RegExp || x instanceof Date) {\n return x.toString() === y.toString();\n }\n\n // the object algorithm works for Array, but it's sub-optimal.\n if (x instanceof Array) {\n if (x.length !== y.length) {\n return false;\n }\n\n for (var i = 0; i < x.length; i++) {\n if (!deepCompare(x[i], y[i])) {\n return false;\n }\n }\n } else {\n // disable jshint \"The body of a for in should be wrapped in an if\n // statement\"\n /* jshint -W089 */\n\n // check that all of y's direct keys are in x\n var p = void 0;\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n }\n\n // finally, compare each of x's keys with y\n for (p in y) {\n if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) {\n return false;\n }\n if (!deepCompare(x[p], y[p])) {\n return false;\n }\n }\n }\n /* jshint +W089 */\n return true;\n};\n\n/**\n * Copy properties from one object to another.\n *\n * All enumerable properties, included inherited ones, are copied.\n *\n * This is approximately equivalent to ES6's Object.assign, except\n * that the latter doesn't copy inherited properties.\n *\n * @param {Object} target The object that will receive new properties\n * @param {...Object} source Objects from which to copy properties\n *\n * @return {Object} target\n */\nmodule.exports.extend = function () {\n var target = arguments[0] || {};\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var propName in source) {\n // eslint-disable-line guard-for-in\n target[propName] = source[propName];\n }\n }\n return target;\n};\n\n/**\n * Run polyfills to add Array.map and Array.filter if they are missing.\n */\nmodule.exports.runPolyfills = function () {\n // Array.prototype.filter\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter\n if (!Array.prototype.filter) {\n Array.prototype.filter = function (fun /*, thisArg*/) {\n if (this === void 0 || this === null) {\n throw new TypeError();\n }\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== 'function') {\n throw new TypeError();\n }\n\n var res = [];\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n for (var i = 0; i < len; i++) {\n if (i in t) {\n var val = t[i];\n\n // NOTE: Technically this should Object.defineProperty at\n // the next index, as push can be affected by\n // properties on Object.prototype and Array.prototype.\n // But that method's new, and collisions should be\n // rare, so use the more-compatible alternative.\n if (fun.call(thisArg, val, i, t)) {\n res.push(val);\n }\n }\n }\n\n return res;\n };\n }\n\n // Array.prototype.map\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map\n // Production steps of ECMA-262, Edition 5, 15.4.4.19\n // Reference: http://es5.github.io/#x15.4.4.19\n if (!Array.prototype.map) {\n Array.prototype.map = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this|\n // value as the argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal\n // method of O with the argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== 'function') {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let A be a new array created as if by the expression new Array(len)\n // where Array is the standard built-in constructor with that name and\n // len is the value of len.\n var A = new Array(len);\n\n // 7. Let k be 0\n k = 0;\n\n // 8. Repeat, while k < len\n while (k < len) {\n var kValue, mappedValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal\n // method of O with argument Pk.\n kValue = O[k];\n\n // ii. Let mappedValue be the result of calling the Call internal\n // method of callback with T as the this value and argument\n // list containing kValue, k, and O.\n mappedValue = callback.call(T, kValue, k, O);\n\n // iii. Call the DefineOwnProperty internal method of A with arguments\n // Pk, Property Descriptor\n // { Value: mappedValue,\n // Writable: true,\n // Enumerable: true,\n // Configurable: true },\n // and false.\n\n // In browsers that support Object.defineProperty, use the following:\n // Object.defineProperty(A, k, {\n // value: mappedValue,\n // writable: true,\n // enumerable: true,\n // configurable: true\n // });\n\n // For best browser support, use the following:\n A[k] = mappedValue;\n }\n // d. Increase k by 1.\n k++;\n }\n\n // 9. return A\n return A;\n };\n }\n\n // Array.prototype.forEach\n // ========================================================\n // SOURCE:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach\n // Production steps of ECMA-262, Edition 5, 15.4.4.18\n // Reference: http://es5.github.io/#x15.4.4.18\n if (!Array.prototype.forEach) {\n Array.prototype.forEach = function (callback, thisArg) {\n var T = void 0,\n k = void 0;\n\n if (this === null || this === undefined) {\n throw new TypeError(' this is null or not defined');\n }\n\n // 1. Let O be the result of calling ToObject passing the |this| value as the\n // argument.\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get internal method of O with the\n // argument \"length\".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If IsCallable(callback) is false, throw a TypeError exception.\n // See: http://es5.github.com/#x9.11\n if (typeof callback !== \"function\") {\n throw new TypeError(callback + ' is not a function');\n }\n\n // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.\n if (arguments.length > 1) {\n T = thisArg;\n }\n\n // 6. Let k be 0\n k = 0;\n\n // 7. Repeat, while k < len\n while (k < len) {\n var kValue;\n\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the HasProperty internal\n // method of O with\n // argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n if (k in O) {\n // i. Let kValue be the result of calling the Get internal method of O with\n // argument Pk\n kValue = O[k];\n\n // ii. Call the Call internal method of callback with T as the this value and\n // argument list containing kValue, k, and O.\n callback.call(T, kValue, k, O);\n }\n // d. Increase k by 1.\n k++;\n }\n // 8. return undefined\n };\n }\n};\n\n/**\n * Inherit the prototype methods from one constructor into another. This is a\n * port of the Node.js implementation with an Object.create polyfill.\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nmodule.exports.inherits = function (ctor, superCtor) {\n // Add Object.create polyfill for IE8\n // Source:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript\n // /Reference/Global_Objects/Object/create#Polyfill\n if (typeof _create2.default != 'function') {\n // Production steps of ECMA-262, Edition 5, 15.2.3.5\n // Reference: http://es5.github.io/#x15.2.3.5\n Object.create = function () {\n // To save on memory, use a shared constructor\n function Temp() {}\n\n // make a safe reference to Object.prototype.hasOwnProperty\n var hasOwn = Object.prototype.hasOwnProperty;\n\n return function (O) {\n // 1. If Type(O) is not Object or Null throw a TypeError exception.\n if ((typeof O === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(O)) != 'object') {\n throw new TypeError('Object prototype may only be an Object or null');\n }\n\n // 2. Let obj be the result of creating a new object as if by the\n // expression new Object() where Object is the standard built-in\n // constructor with that name\n // 3. Set the [[Prototype]] internal property of obj to O.\n Temp.prototype = O;\n var obj = new Temp();\n Temp.prototype = null; // Let's not keep a stray reference to O...\n\n // 4. If the argument Properties is present and not undefined, add\n // own properties to obj as if by calling the standard built-in\n // function Object.defineProperties with arguments obj and\n // Properties.\n if (arguments.length > 1) {\n // Object.defineProperties does ToObject on its first argument.\n var Properties = Object(arguments[1]);\n for (var prop in Properties) {\n if (hasOwn.call(Properties, prop)) {\n obj[prop] = Properties[prop];\n }\n }\n }\n\n // 5. Return obj\n return obj;\n };\n }();\n }\n // END polyfill\n\n // Add util.inherits from Node.js\n // Source:\n // https://github.com/joyent/node/blob/master/lib/util.js\n // Copyright Joyent, Inc. and other Node contributors.\n //\n // Permission is hereby granted, free of charge, to any person obtaining a\n // copy of this software and associated documentation files (the\n // \"Software\"), to deal in the Software without restriction, including\n // without limitation the rights to use, copy, modify, merge, publish,\n // distribute, sublicense, and/or sell copies of the Software, and to permit\n // persons to whom the Software is furnished to do so, subject to the\n // following conditions:\n //\n // The above copyright notice and this permission notice shall be included\n // in all copies or substantial portions of the Software.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n // USE OR OTHER DEALINGS IN THE SOFTWARE.\n ctor.super_ = superCtor;\n ctor.prototype = (0, _create2.default)(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\n/**\n * Returns whether the given value is a finite number without type-coercion\n *\n * @param {*} value the value to test\n * @return {boolean} whether or not value is a finite number without type-coercion\n */\nmodule.exports.isNumber = function (value) {\n return typeof value === 'number' && isFinite(value);\n};\n\n/**\n * Removes zero width chars, diacritics and whitespace from the string\n * @param {string} str the string to remove hidden characters from\n * @return {string} a string with the hidden characters removed\n */\nmodule.exports.removeHiddenChars = function (str) {\n return str.normalize('NFD').replace(removeHiddenCharsRegex, '');\n};\nvar removeHiddenCharsRegex = /[\\u200B-\\u200D\\u0300-\\u036f\\uFEFF\\s]/g;\n//# sourceMappingURL=utils.js.map","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _getIterator2 = require(\"babel-runtime/core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nvar _regenerator = require(\"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _bluebird = require(\"bluebird\");\n\nvar _bluebird2 = _interopRequireDefault(_bluebird);\n\nvar _slicedToArray2 = require(\"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _syncAccumulator = require(\"../sync-accumulator\");\n\nvar _syncAccumulator2 = _interopRequireDefault(_syncAccumulator);\n\nvar _utils = require(\"../utils\");\n\nvar _utils2 = _interopRequireDefault(_utils);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar VERSION = 3; /*\n Copyright 2017 Vector Creations Ltd\n Copyright 2018 New Vector Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nfunction createDatabase(db) {\n // Make user store, clobber based on user ID. (userId property of User objects)\n db.createObjectStore(\"users\", { keyPath: [\"userId\"] });\n\n // Make account data store, clobber based on event type.\n // (event.type property of MatrixEvent objects)\n db.createObjectStore(\"accountData\", { keyPath: [\"type\"] });\n\n // Make /sync store (sync tokens, room data, etc), always clobber (const key).\n db.createObjectStore(\"sync\", { keyPath: [\"clobber\"] });\n}\n\nfunction upgradeSchemaV2(db) {\n var oobMembersStore = db.createObjectStore(\"oob_membership_events\", {\n keyPath: [\"room_id\", \"state_key\"]\n });\n oobMembersStore.createIndex(\"room\", \"room_id\");\n}\n\nfunction upgradeSchemaV3(db) {\n db.createObjectStore(\"client_options\", { keyPath: [\"clobber\"] });\n}\n\n/**\n * Helper method to collect results from a Cursor and promiseify it.\n * @param {ObjectStore|Index} store The store to perform openCursor on.\n * @param {IDBKeyRange=} keyRange Optional key range to apply on the cursor.\n * @param {Function} resultMapper A function which is repeatedly called with a\n * Cursor.\n * Return the data you want to keep.\n * @return {Promise<T[]>} Resolves to an array of whatever you returned from\n * resultMapper.\n */\nfunction selectQuery(store, keyRange, resultMapper) {\n var query = store.openCursor(keyRange);\n return new _bluebird2.default(function (resolve, reject) {\n var results = [];\n query.onerror = function (event) {\n reject(new Error(\"Query failed: \" + event.target.errorCode));\n };\n // collect results\n query.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n resolve(results);\n return; // end of results\n }\n results.push(resultMapper(cursor));\n cursor.continue();\n };\n });\n}\n\nfunction txnAsPromise(txn) {\n return new _bluebird2.default(function (resolve, reject) {\n txn.oncomplete = function (event) {\n resolve(event);\n };\n txn.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsEventPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function (event) {\n resolve(event);\n };\n req.onerror = function (event) {\n reject(event.target.error);\n };\n });\n}\n\nfunction reqAsPromise(req) {\n return new _bluebird2.default(function (resolve, reject) {\n req.onsuccess = function () {\n return resolve(req);\n };\n req.onerror = function (err) {\n return reject(err);\n };\n });\n}\n\nfunction reqAsCursorPromise(req) {\n return reqAsEventPromise(req).then(function (event) {\n return event.target.result;\n });\n}\n\n/**\n * Does the actual reading from and writing to the indexeddb\n *\n * Construct a new Indexed Database store backend. This requires a call to\n * <code>connect()</code> before this store can be used.\n * @constructor\n * @param {Object} indexedDBInterface The Indexed DB interface e.g\n * <code>window.indexedDB</code>\n * @param {string=} dbName Optional database name. The same name must be used\n * to open the same database.\n */\nvar LocalIndexedDBStoreBackend = function LocalIndexedDBStoreBackend(indexedDBInterface, dbName) {\n this.indexedDB = indexedDBInterface;\n this._dbName = \"matrix-js-sdk:\" + (dbName || \"default\");\n this.db = null;\n this._disconnected = true;\n this._syncAccumulator = new _syncAccumulator2.default();\n this._isNewlyCreated = false;\n};\n\nLocalIndexedDBStoreBackend.prototype = {\n /**\n * Attempt to connect to the database. This can fail if the user does not\n * grant permission.\n * @return {Promise} Resolves if successfully connected.\n */\n connect: function connect() {\n var _this = this;\n\n if (!this._disconnected) {\n console.log(\"LocalIndexedDBStoreBackend.connect: already connected or connecting\");\n return _bluebird2.default.resolve();\n }\n\n this._disconnected = false;\n\n console.log(\"LocalIndexedDBStoreBackend.connect: connecting...\");\n var req = this.indexedDB.open(this._dbName, VERSION);\n req.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n var oldVersion = ev.oldVersion;\n console.log(\"LocalIndexedDBStoreBackend.connect: upgrading from \" + oldVersion);\n if (oldVersion < 1) {\n // The database did not previously exist.\n _this._isNewlyCreated = true;\n createDatabase(db);\n }\n if (oldVersion < 2) {\n upgradeSchemaV2(db);\n }\n if (oldVersion < 3) {\n upgradeSchemaV3(db);\n }\n // Expand as needed.\n };\n\n req.onblocked = function () {\n console.log(\"can't yet open LocalIndexedDBStoreBackend because it is open elsewhere\");\n };\n\n console.log(\"LocalIndexedDBStoreBackend.connect: awaiting connection...\");\n return reqAsEventPromise(req).then(function (ev) {\n console.log(\"LocalIndexedDBStoreBackend.connect: connected\");\n _this.db = ev.target.result;\n\n // add a poorly-named listener for when deleteDatabase is called\n // so we can close our db connections.\n _this.db.onversionchange = function () {\n _this.db.close();\n };\n\n return _this._init();\n });\n },\n /** @return {bool} whether or not the database was newly created in this session. */\n isNewlyCreated: function isNewlyCreated() {\n return _bluebird2.default.resolve(this._isNewlyCreated);\n },\n\n /**\n * Having connected, load initial data from the database and prepare for use\n * @return {Promise} Resolves on success\n */\n _init: function _init() {\n var _this2 = this;\n\n return _bluebird2.default.all([this._loadAccountData(), this._loadSyncData()]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n accountData = _ref2[0],\n syncData = _ref2[1];\n\n console.log(\"LocalIndexedDBStoreBackend: loaded initial data\");\n _this2._syncAccumulator.accumulate({\n next_batch: syncData.nextBatch,\n rooms: syncData.roomsData,\n groups: syncData.groupsData,\n account_data: {\n events: accountData\n }\n });\n });\n },\n\n /**\n * Returns the out-of-band membership events for this room that\n * were previously loaded.\n * @param {string} roomId\n * @returns {Promise<event[]>} the events, potentially an empty array if OOB loading didn't yield any new members\n * @returns {null} in case the members for this room haven't been stored yet\n */\n getOutOfBandMembers: function getOutOfBandMembers(roomId) {\n var _this3 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n var tx = _this3.db.transaction([\"oob_membership_events\"], \"readonly\");\n var store = tx.objectStore(\"oob_membership_events\");\n var roomIndex = store.index(\"room\");\n var range = IDBKeyRange.only(roomId);\n var request = roomIndex.openCursor(range);\n\n var membershipEvents = [];\n // did we encounter the oob_written marker object\n // amongst the results? That means OOB member\n // loading already happened for this room\n // but there were no members to persist as they\n // were all known already\n var oobWritten = false;\n\n request.onsuccess = function (event) {\n var cursor = event.target.result;\n if (!cursor) {\n // Unknown room\n if (!membershipEvents.length && !oobWritten) {\n return resolve(null);\n }\n return resolve(membershipEvents);\n }\n var record = cursor.value;\n if (record.oob_written) {\n oobWritten = true;\n } else {\n membershipEvents.push(record);\n }\n cursor.continue();\n };\n request.onerror = function (err) {\n reject(err);\n };\n }).then(function (events) {\n console.log(\"LL: got \" + (events && events.length) + (\" membershipEvents from storage for room \" + roomId + \" ...\"));\n return events;\n });\n },\n\n /**\n * Stores the out-of-band membership events for this room. Note that\n * it still makes sense to store an empty array as the OOB status for the room is\n * marked as fetched, and getOutOfBandMembers will return an empty array instead of null\n * @param {string} roomId\n * @param {event[]} membershipEvents the membership events to store\n */\n setOutOfBandMembers: function () {\n var _ref3 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(roomId, membershipEvents) {\n var tx, store, markerObject;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n console.log(\"LL: backend about to store \" + membershipEvents.length + (\" members for \" + roomId));\n tx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n store = tx.objectStore(\"oob_membership_events\");\n\n membershipEvents.forEach(function (e) {\n store.put(e);\n });\n // aside from all the events, we also write a marker object to the store\n // to mark the fact that OOB members have been written for this room.\n // It's possible that 0 members need to be written as all where previously know\n // but we still need to know whether to return null or [] from getOutOfBandMembers\n // where null means out of band members haven't been stored yet for this room\n markerObject = {\n room_id: roomId,\n oob_written: true,\n state_key: 0\n };\n\n store.put(markerObject);\n _context.next = 8;\n return (0, _bluebird.resolve)(txnAsPromise(tx));\n\n case 8:\n console.log(\"LL: backend done storing for \" + roomId + \"!\");\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function setOutOfBandMembers(_x, _x2) {\n return _ref3.apply(this, arguments);\n }\n\n return setOutOfBandMembers;\n }(),\n\n clearOutOfBandMembers: function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(roomId) {\n var readTx, store, roomIndex, roomRange, minStateKeyProm, maxStateKeyProm, _ref5, _ref6, minStateKey, maxStateKey, writeTx, writeStore, membersKeyRange;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n // the approach to delete all members for a room\n // is to get the min and max state key from the index\n // for that room, and then delete between those\n // keys in the store.\n // this should be way faster than deleting every member\n // individually for a large room.\n readTx = this.db.transaction([\"oob_membership_events\"], \"readonly\");\n store = readTx.objectStore(\"oob_membership_events\");\n roomIndex = store.index(\"room\");\n roomRange = IDBKeyRange.only(roomId);\n minStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"next\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n maxStateKeyProm = reqAsCursorPromise(roomIndex.openKeyCursor(roomRange, \"prev\")).then(function (cursor) {\n return cursor && cursor.primaryKey[1];\n });\n _context2.next = 8;\n return (0, _bluebird.resolve)(_bluebird2.default.all([minStateKeyProm, maxStateKeyProm]));\n\n case 8:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n minStateKey = _ref6[0];\n maxStateKey = _ref6[1];\n writeTx = this.db.transaction([\"oob_membership_events\"], \"readwrite\");\n writeStore = writeTx.objectStore(\"oob_membership_events\");\n membersKeyRange = IDBKeyRange.bound([roomId, minStateKey], [roomId, maxStateKey]);\n\n\n console.log(\"LL: Deleting all users + marker in storage for \" + (\"room \" + roomId + \", with key range:\"), [roomId, minStateKey], [roomId, maxStateKey]);\n _context2.next = 18;\n return (0, _bluebird.resolve)(reqAsPromise(writeStore.delete(membersKeyRange)));\n\n case 18:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function clearOutOfBandMembers(_x3) {\n return _ref4.apply(this, arguments);\n }\n\n return clearOutOfBandMembers;\n }(),\n\n /**\n * Clear the entire database. This should be used when logging out of a client\n * to prevent mixing data between accounts.\n * @return {Promise} Resolved when the database is cleared.\n */\n clearDatabase: function clearDatabase() {\n var _this4 = this;\n\n return new _bluebird2.default(function (resolve, reject) {\n console.log(\"Removing indexeddb instance: \" + _this4._dbName);\n var req = _this4.indexedDB.deleteDatabase(_this4._dbName);\n\n req.onblocked = function () {\n console.log(\"can't yet delete indexeddb \" + _this4._dbName + \" because it is open elsewhere\");\n };\n\n req.onerror = function (ev) {\n // in firefox, with indexedDB disabled, this fails with a\n // DOMError. We treat this as non-fatal, so that we can still\n // use the app.\n console.warn(\"unable to delete js-sdk store indexeddb: \" + ev.target.error);\n resolve();\n };\n\n req.onsuccess = function () {\n console.log(\"Removed indexeddb instance: \" + _this4._dbName);\n resolve();\n };\n });\n },\n\n /**\n * @param {boolean=} copy If false, the data returned is from internal\n * buffers and must not be mutated. Otherwise, a copy is made before\n * returning such that the data can be safely mutated. Default: true.\n *\n * @return {Promise} Resolves with a sync response to restore the\n * client state to where it was at the last save, or null if there\n * is no saved sync data.\n */\n getSavedSync: function getSavedSync(copy) {\n if (copy === undefined) copy = true;\n\n var data = this._syncAccumulator.getJSON();\n if (!data.nextBatch) return _bluebird2.default.resolve(null);\n if (copy) {\n // We must deep copy the stored data so that the /sync processing code doesn't\n // corrupt the internal state of the sync accumulator (it adds non-clonable keys)\n return _bluebird2.default.resolve(_utils2.default.deepCopy(data));\n } else {\n return _bluebird2.default.resolve(data);\n }\n },\n\n getNextBatchToken: function getNextBatchToken() {\n return _bluebird2.default.resolve(this._syncAccumulator.getNextBatchToken());\n },\n\n setSyncData: function setSyncData(syncData) {\n var _this5 = this;\n\n return _bluebird2.default.resolve().then(function () {\n _this5._syncAccumulator.accumulate(syncData);\n });\n },\n\n syncToDatabase: function syncToDatabase(userTuples) {\n var syncData = this._syncAccumulator.getJSON();\n\n return _bluebird2.default.all([this._persistUserPresenceEvents(userTuples), this._persistAccountData(syncData.accountData), this._persistSyncData(syncData.nextBatch, syncData.roomsData, syncData.groupsData)]);\n },\n\n /**\n * Persist rooms /sync data along with the next batch token.\n * @param {string} nextBatch The next_batch /sync value.\n * @param {Object} roomsData The 'rooms' /sync data from a SyncAccumulator\n * @param {Object} groupsData The 'groups' /sync data from a SyncAccumulator\n * @return {Promise} Resolves if the data was persisted.\n */\n _persistSyncData: function _persistSyncData(nextBatch, roomsData, groupsData) {\n var _this6 = this;\n\n console.log(\"Persisting sync data up to \", nextBatch);\n return _bluebird2.default.try(function () {\n var txn = _this6.db.transaction([\"sync\"], \"readwrite\");\n var store = txn.objectStore(\"sync\");\n store.put({\n clobber: \"-\", // constant key so will always clobber\n nextBatch: nextBatch,\n roomsData: roomsData,\n groupsData: groupsData\n }); // put == UPSERT\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of account data events. Events with the same 'type' will\n * be replaced.\n * @param {Object[]} accountData An array of raw user-scoped account data events\n * @return {Promise} Resolves if the events were persisted.\n */\n _persistAccountData: function _persistAccountData(accountData) {\n var _this7 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this7.db.transaction([\"accountData\"], \"readwrite\");\n var store = txn.objectStore(\"accountData\");\n for (var i = 0; i < accountData.length; i++) {\n store.put(accountData[i]); // put == UPSERT\n }\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Persist a list of [user id, presence event] they are for.\n * Users with the same 'userId' will be replaced.\n * Presence events should be the event in its raw form (not the Event\n * object)\n * @param {Object[]} tuples An array of [userid, event] tuples\n * @return {Promise} Resolves if the users were persisted.\n */\n _persistUserPresenceEvents: function _persistUserPresenceEvents(tuples) {\n var _this8 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this8.db.transaction([\"users\"], \"readwrite\");\n var store = txn.objectStore(\"users\");\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = (0, _getIterator3.default)(tuples), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var tuple = _step.value;\n\n store.put({\n userId: tuple[0],\n event: tuple[1]\n }); // put == UPSERT\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return txnAsPromise(txn);\n });\n },\n\n /**\n * Load all user presence events from the database. This is not cached.\n * FIXME: It would probably be more sensible to store the events in the\n * sync.\n * @return {Promise<Object[]>} A list of presence events in their raw form.\n */\n getUserPresenceEvents: function getUserPresenceEvents() {\n var _this9 = this;\n\n return _bluebird2.default.try(function () {\n var txn = _this9.db.transaction([\"users\"], \"readonly\");\n var store = txn.objectStore(\"users\");\n return selectQuery(store, undefined, function (cursor) {\n return [cursor.value.userId, cursor.value.event];\n });\n });\n },\n\n /**\n * Load all the account data events from the database. This is not cached.\n * @return {Promise<Object[]>} A list of raw global account events.\n */\n _loadAccountData: function _loadAccountData() {\n var _this10 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading account data...\");\n return _bluebird2.default.try(function () {\n var txn = _this10.db.transaction([\"accountData\"], \"readonly\");\n var store = txn.objectStore(\"accountData\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (result) {\n console.log(\"LocalIndexedDBStoreBackend: loaded account data\");\n return result;\n });\n });\n },\n\n /**\n * Load the sync data from the database.\n * @return {Promise<Object>} An object with \"roomsData\" and \"nextBatch\" keys.\n */\n _loadSyncData: function _loadSyncData() {\n var _this11 = this;\n\n console.log(\"LocalIndexedDBStoreBackend: loading sync data...\");\n return _bluebird2.default.try(function () {\n var txn = _this11.db.transaction([\"sync\"], \"readonly\");\n var store = txn.objectStore(\"sync\");\n return selectQuery(store, undefined, function (cursor) {\n return cursor.value;\n }).then(function (results) {\n console.log(\"LocalIndexedDBStoreBackend: loaded sync data\");\n if (results.length > 1) {\n console.warn(\"loadSyncData: More than 1 sync row found.\");\n }\n return results.length > 0 ? results[0] : {};\n });\n });\n },\n\n getClientOptions: function getClientOptions() {\n var _this12 = this;\n\n return _bluebird2.default.resolve().then(function () {\n var txn = _this12.db.transaction([\"client_options\"], \"readonly\");\n var store = txn.objectStore(\"client_options\");\n return selectQuery(store, undefined, function (cursor) {\n if (cursor.value && cursor.value && cursor.value.options) {\n return cursor.value.options;\n }\n }).then(function (results) {\n return results[0];\n });\n });\n },\n\n storeClientOptions: function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(options) {\n var txn, store;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n txn = this.db.transaction([\"client_options\"], \"readwrite\");\n store = txn.objectStore(\"client_options\");\n\n store.put({\n clobber: \"-\", // constant key so will always clobber\n options: options\n }); // put == UPSERT\n _context3.next = 5;\n return (0, _bluebird.resolve)(txnAsPromise(txn));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function storeClientOptions(_x4) {\n return _ref7.apply(this, arguments);\n }\n\n return storeClientOptions;\n }()\n};\n\nexports.default = LocalIndexedDBStoreBackend;\n//# sourceMappingURL=indexeddb-local-backend.js.map","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = {};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.2\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js b/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js new file mode 100644 index 0000000..2e1e4f5 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js @@ -0,0 +1,2 @@ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1880)}({111:function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},112:function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},116:function(t,e,n){var r=n(35);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},118:function(t,e,n){var r=n(111),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},119:function(t,e,n){var r=n(120)("keys"),i=n(96);t.exports=function(t){return r[t]||(r[t]=i(t))}},120:function(t,e,n){var r=n(34),i=r["__core-js_shared__"]||(r["__core-js_shared__"]={});t.exports=function(t){return i[t]||(i[t]={})}},121:function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},136:function(t,e,n){var r=n(35),i=n(34).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},14:function(t,e,n){t.exports={default:n(219),__esModule:!0}},15:function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},161:function(t,e,n){t.exports=!n(44)&&!n(58)(function(){return 7!=Object.defineProperty(n(136)("div"),"a",{get:function(){return 7}}).a})},162:function(t,e,n){var r=n(61),i=n(59),o=n(213)(!1),a=n(119)("IE_PROTO");t.exports=function(t,e){var n,s=i(t),c=0,u=[];for(n in s)n!=a&&r(s,n)&&u.push(n);for(;e.length>c;)r(s,n=e[c++])&&(~o(u,n)||u.push(n));return u}},163:function(t,e,n){var r=n(95);t.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},18:function(t,e){var n=t.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},187:function(t,e,n){(function(t){var r=void 0!==t&&t||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(t,e){this._id=t,this._clearFn=e}e.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},e.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},e.clearTimeout=e.clearInterval=function(t){t&&t.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},e.enroll=function(t,e){clearTimeout(t._idleTimeoutId),t._idleTimeout=e},e.unenroll=function(t){clearTimeout(t._idleTimeoutId),t._idleTimeout=-1},e._unrefActive=e.active=function(t){clearTimeout(t._idleTimeoutId);var e=t._idleTimeout;e>=0&&(t._idleTimeoutId=setTimeout(function(){t._onTimeout&&t._onTimeout()},e))},n(218),e.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==t&&t.setImmediate||this&&this.setImmediate,e.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==t&&t.clearImmediate||this&&this.clearImmediate}).call(this,n(15))},1880:function(t,e,n){"use strict";var r=function(t){return t&&t.__esModule?t:{default:t}}(n(19)),i=n(9),o=function(){var t=(0,i.coroutine)(r.default.mark(function t(){var e,n;return r.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return document.getElementById("back_to_riot_button").onclick=s,t.next=3,(0,i.resolve)((0,a.getVectorConfig)(".."));case 3:e=t.sent,n=void 0,e&&e.default_hs_url&&(n=e.default_hs_url),n&&!n.endsWith("/")&&(n+="/"),n&&"https://matrix.org/"!==n&&(document.getElementById("step2_container").style.display="block",document.getElementById("hs_url").innerHTML=n,document.getElementById("step_login_header").innerHTML="Step 3: Register or Log in");case 8:case"end":return t.stop()}},t,this)}));return function(){return t.apply(this,arguments)}}(),a=n(411);function s(){document.cookie="mobile_redirect_to_guide=false;path=/",window.location.href="../"}o()},19:function(t,e,n){t.exports=n(216)},213:function(t,e,n){var r=n(59),i=n(118),o=n(214);t.exports=function(t){return function(e,n,a){var s,c=r(e),u=i(c.length),l=o(a,u);if(t&&n!=n){for(;u>l;)if((s=c[l++])!=s)return!0}else for(;u>l;l++)if((t||l in c)&&c[l]===n)return t||l||0;return!t&&-1}}},214:function(t,e,n){var r=n(111),i=Math.max,o=Math.min;t.exports=function(t,e){return(t=r(t))<0?i(t+e,0):o(t,e)}},216:function(t,e,n){var r=function(){return this}()||Function("return this")(),i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,o=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=n(217),i)r.regeneratorRuntime=o;else try{delete r.regeneratorRuntime}catch(t){r.regeneratorRuntime=void 0}},217:function(t,e){!function(e){"use strict";var n,r=Object.prototype,i=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag",u="object"==typeof t,l=e.regeneratorRuntime;if(l)u&&(t.exports=l);else{(l=e.regeneratorRuntime=u?t.exports:{}).wrap=b;var f="suspendedStart",p="suspendedYield",h="executing",d="completed",_={},v={};v[a]=function(){return this};var y=Object.getPrototypeOf,m=y&&y(y(P([])));m&&m!==r&&i.call(m,a)&&(v=m);var g=j.prototype=C.prototype=Object.create(v);E.prototype=g.constructor=j,j.constructor=E,j[c]=E.displayName="GeneratorFunction",l.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===E||"GeneratorFunction"===(e.displayName||e.name))},l.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,j):(t.__proto__=j,c in t||(t[c]="GeneratorFunction")),t.prototype=Object.create(g),t},l.awrap=function(t){return{__await:t}},k(x.prototype),x.prototype[s]=function(){return this},l.AsyncIterator=x,l.async=function(t,e,n,r){var i=new x(b(t,e,n,r));return l.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},k(g),g[c]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},l.keys=function(t){var e=[];for(var n in t)e.push(n);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},l.values=P,S.prototype={constructor:S,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(O),!t)for(var e in this)"t"===e.charAt(0)&&i.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=n)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,i){return s.type="throw",s.arg=t,e.next=r,i&&(e.method="next",e.arg=n),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),u=i.call(a,"finallyLoc");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=t,a.arg=e,o?(this.method="next",this.next=o.finallyLoc,_):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),_},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),O(n),_}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;O(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:P(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=n),_}}}function b(t,e,n,r){var i=e&&e.prototype instanceof C?e:C,o=Object.create(i.prototype),a=new S(r||[]);return o._invoke=function(t,e,n){var r=f;return function(i,o){if(r===h)throw new Error("Generator is already running");if(r===d){if("throw"===i)throw o;return R()}for(n.method=i,n.arg=o;;){var a=n.delegate;if(a){var s=T(a,n);if(s){if(s===_)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=d,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=h;var c=w(t,e,n);if("normal"===c.type){if(r=n.done?d:p,c.arg===_)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r=d,n.method="throw",n.arg=c.arg)}}}(t,n,a),o}function w(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}function C(){}function E(){}function j(){}function k(t){["next","throw","return"].forEach(function(e){t[e]=function(t){return this._invoke(e,t)}})}function x(t){var e;this._invoke=function(n,r){function o(){return new Promise(function(e,o){!function e(n,r,o,a){var s=w(t[n],t,r);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then(function(t){e("next",t,o,a)},function(t){e("throw",t,o,a)}):Promise.resolve(u).then(function(t){c.value=t,o(c)},a)}a(s.arg)}(n,r,e,o)})}return e=e?e.then(o,o):o()}}function T(t,e){var r=t.iterator[e.method];if(r===n){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=n,T(t,e),"throw"===e.method))return _;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return _}var i=w(r,t.iterator,e.arg);if("throw"===i.type)return e.method="throw",e.arg=i.arg,e.delegate=null,_;var o=i.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=n),e.delegate=null,_):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,_)}function F(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(F,this),this.reset(!0)}function P(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(i.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=n,e.done=!0,e};return o.next=o}}return{next:R}}function R(){return{value:n,done:!0}}}(function(){return this}()||Function("return this")())},218:function(t,e,n){(function(t,e){!function(t,n){"use strict";if(!t.setImmediate){var r,i=1,o={},a=!1,s=t.document,c=Object.getPrototypeOf&&Object.getPrototypeOf(t);c=c&&c.setTimeout?c:t,"[object process]"==={}.toString.call(t.process)?r=function(t){e.nextTick(function(){l(t)})}:function(){if(t.postMessage&&!t.importScripts){var e=!0,n=t.onmessage;return t.onmessage=function(){e=!1},t.postMessage("","*"),t.onmessage=n,e}}()?function(){var e="setImmediate$"+Math.random()+"$",n=function(n){n.source===t&&"string"==typeof n.data&&0===n.data.indexOf(e)&&l(+n.data.slice(e.length))};t.addEventListener?t.addEventListener("message",n,!1):t.attachEvent("onmessage",n),r=function(n){t.postMessage(e+n,"*")}}():t.MessageChannel?function(){var t=new MessageChannel;t.port1.onmessage=function(t){l(t.data)},r=function(e){t.port2.postMessage(e)}}():s&&"onreadystatechange"in s.createElement("script")?function(){var t=s.documentElement;r=function(e){var n=s.createElement("script");n.onreadystatechange=function(){l(e),n.onreadystatechange=null,t.removeChild(n),n=null},t.appendChild(n)}}():r=function(t){setTimeout(l,0,t)},c.setImmediate=function(t){"function"!=typeof t&&(t=new Function(""+t));for(var e=new Array(arguments.length-1),n=0;n<e.length;n++)e[n]=arguments[n+1];var a={callback:t,args:e};return o[i]=a,r(i),i++},c.clearImmediate=u}function u(t){delete o[t]}function l(t){if(a)setTimeout(l,0,t);else{var e=o[t];if(e){a=!0;try{!function(t){var e=t.callback,r=t.args;switch(r.length){case 0:e();break;case 1:e(r[0]);break;case 2:e(r[0],r[1]);break;case 3:e(r[0],r[1],r[2]);break;default:e.apply(n,r)}}(e)}finally{u(t),a=!1}}}}}("undefined"==typeof self?void 0===t?this:t:self)}).call(this,n(15),n(54))},219:function(t,e,n){n(220),t.exports=n(18).Object.keys},220:function(t,e,n){var r=n(87),i=n(78);n(68)("keys",function(){return function(t){return i(r(t))}})},26:function(t,e,n){var r=n(34),i=n(18),o=n(66),a=n(60),s=function(t,e,n){var c,u,l,f=t&s.F,p=t&s.G,h=t&s.S,d=t&s.P,_=t&s.B,v=t&s.W,y=p?i:i[e]||(i[e]={}),m=y.prototype,g=p?r:h?r[e]:(r[e]||{}).prototype;for(c in p&&(n=e),n)(u=!f&&g&&void 0!==g[c])&&c in y||(l=u?g[c]:n[c],y[c]=p&&"function"!=typeof g[c]?n[c]:_&&u?o(l,r):v&&g[c]==l?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(l):d&&"function"==typeof l?o(Function.call,l):l,d&&((y.virtual||(y.virtual={}))[c]=l,t&s.R&&m&&!m[c]&&a(m,c,l)))};s.F=1,s.G=2,s.S=4,s.P=8,s.B=16,s.W=32,s.U=64,s.R=128,t.exports=s},34:function(t,e){var n=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},35:function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},411:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.getVectorConfig=void 0;var r=c(n(19)),i=c(n(14)),o=n(9),a=c(o),s=(e.getVectorConfig=function(){var t=(0,o.coroutine)(r.default.mark(function t(e){var n;return r.default.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return void 0===e&&(e=""),""===e||e.endsWith("/")||(e+="/"),t.prev=2,t.next=5,(0,o.resolve)(u(e+"config."+document.domain+".json"));case 5:if(n=t.sent,0!==(0,i.default)(n).length){t.next=8;break}throw new Error;case 8:return t.abrupt("return",n);case 11:return t.prev=11,t.t0=t.catch(2),t.next=15,(0,o.resolve)(u(e+"config.json"));case 15:return t.abrupt("return",t.sent);case 16:case"end":return t.stop()}},t,this,[[2,11]])}));return function(e){return t.apply(this,arguments)}}(),c(n(99)));function c(t){return t&&t.__esModule?t:{default:t}}function u(t){return new a.default(function(e,n){(0,s.default)({method:"GET",url:t},function(t,r,i){if(t||r.status<200||r.status>=300)return r&&(404==r.status||0==r.status&&""==i)&&e({}),void n({err:t,response:r});e(JSON.parse(i))})})}},44:function(t,e,n){t.exports=!n(58)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},46:function(t,e,n){var r=n(52),i=n(161),o=n(116),a=Object.defineProperty;e.f=n(44)?Object.defineProperty:function(t,e,n){if(r(t),e=o(e,!0),r(n),i)try{return a(t,e,n)}catch(t){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(t[e]=n.value),t}},52:function(t,e,n){var r=n(35);t.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},54:function(t,e){var n,r,i=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(t){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var c,u=[],l=!1,f=-1;function p(){l&&c&&(l=!1,c.length?u=c.concat(u):f=-1,u.length&&h())}function h(){if(!l){var t=s(p);l=!0;for(var e=u.length;e;){for(c=u,u=[];++f<e;)c&&c[f].run();f=-1,e=u.length}c=null,l=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(t)}}function d(t,e){this.fun=t,this.array=e}function _(){}i.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)e[n-1]=arguments[n];u.push(new d(t,e)),1!==u.length||l||s(h)},d.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=_,i.addListener=_,i.once=_,i.off=_,i.removeListener=_,i.removeAllListeners=_,i.emit=_,i.prependListener=_,i.prependOnceListener=_,i.listeners=function(t){return[]},i.binding=function(t){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(t){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},58:function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},59:function(t,e,n){var r=n(163),i=n(112);t.exports=function(t){return r(i(t))}},60:function(t,e,n){var r=n(46),i=n(76);t.exports=n(44)?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},61:function(t,e){var n={}.hasOwnProperty;t.exports=function(t,e){return n.call(t,e)}},66:function(t,e,n){var r=n(94);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},68:function(t,e,n){var r=n(26),i=n(18),o=n(58);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],a={};a[t]=e(n),r(r.S+r.F*o(function(){n(1)}),"Object",a)}},76:function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},78:function(t,e,n){var r=n(162),i=n(121);t.exports=Object.keys||function(t){return r(t,i)}},87:function(t,e,n){var r=n(112);t.exports=function(t){return Object(r(t))}},9:function(t,e,n){(function(e,n,r){t.exports=function(){var t,i,o;return function t(e,n,r){function i(a,s){if(!n[a]){if(!e[a]){var c="function"==typeof _dereq_&&_dereq_;if(!s&&c)return c(a,!0);if(o)return o(a,!0);var u=new Error("Cannot find module '"+a+"'");throw u.code="MODULE_NOT_FOUND",u}var l=n[a]={exports:{}};e[a][0].call(l.exports,function(t){var n=e[a][1][t];return i(n||t)},l,l.exports,t,e,n,r)}return n[a].exports}for(var o="function"==typeof _dereq_&&_dereq_,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(t,e,n){"use strict";e.exports=function(t){var e=t._SomePromiseArray;function n(t){var n=new e(t),r=n.promise();return n.setHowMany(1),n.setUnwrap(),n.init(),r}t.any=function(t){return n(t)},t.prototype.any=function(){return n(this)}}},{}],2:[function(t,n,r){"use strict";var i;try{throw new Error}catch(t){i=t}var o=t("./schedule"),a=t("./queue"),s=t("./util");function c(){this._customScheduler=!1,this._isTickUsed=!1,this._lateQueue=new a(16),this._normalQueue=new a(16),this._haveDrainedQueues=!1,this._trampolineEnabled=!0;var t=this;this.drainQueues=function(){t._drainQueues()},this._schedule=o}function u(t,e,n){this._lateQueue.push(t,e,n),this._queueTick()}function l(t,e,n){this._normalQueue.push(t,e,n),this._queueTick()}function f(t){this._normalQueue._pushOne(t),this._queueTick()}function p(t){for(;t.length()>0;)h(t)}function h(t){var e=t.shift();if("function"!=typeof e)e._settlePromises();else{var n=t.shift(),r=t.shift();e.call(n,r)}}c.prototype.setScheduler=function(t){var e=this._schedule;return this._schedule=t,this._customScheduler=!0,e},c.prototype.hasCustomScheduler=function(){return this._customScheduler},c.prototype.enableTrampoline=function(){this._trampolineEnabled=!0},c.prototype.disableTrampolineIfNecessary=function(){s.hasDevTools&&(this._trampolineEnabled=!1)},c.prototype.haveItemsQueued=function(){return this._isTickUsed||this._haveDrainedQueues},c.prototype.fatalError=function(t,n){n?(e.stderr.write("Fatal "+(t instanceof Error?t.stack:t)+"\n"),e.exit(2)):this.throwLater(t)},c.prototype.throwLater=function(t,e){if(1===arguments.length&&(e=t,t=function(){throw e}),"undefined"!=typeof setTimeout)setTimeout(function(){t(e)},0);else try{this._schedule(function(){t(e)})}catch(t){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}},s.hasDevTools?(c.prototype.invokeLater=function(t,e,n){this._trampolineEnabled?u.call(this,t,e,n):this._schedule(function(){setTimeout(function(){t.call(e,n)},100)})},c.prototype.invoke=function(t,e,n){this._trampolineEnabled?l.call(this,t,e,n):this._schedule(function(){t.call(e,n)})},c.prototype.settlePromises=function(t){this._trampolineEnabled?f.call(this,t):this._schedule(function(){t._settlePromises()})}):(c.prototype.invokeLater=u,c.prototype.invoke=l,c.prototype.settlePromises=f),c.prototype._drainQueues=function(){p(this._normalQueue),this._reset(),this._haveDrainedQueues=!0,p(this._lateQueue)},c.prototype._queueTick=function(){this._isTickUsed||(this._isTickUsed=!0,this._schedule(this.drainQueues))},c.prototype._reset=function(){this._isTickUsed=!1},n.exports=c,n.exports.firstLineError=i},{"./queue":26,"./schedule":29,"./util":36}],3:[function(t,e,n){"use strict";e.exports=function(t,e,n,r){var i=!1,o=function(t,e){this._reject(e)},a=function(t,e){e.promiseRejectionQueued=!0,e.bindingPromise._then(o,o,null,this,t)},s=function(t,e){0==(50397184&this._bitField)&&this._resolveCallback(e.target)},c=function(t,e){e.promiseRejectionQueued||this._reject(t)};t.prototype.bind=function(o){i||(i=!0,t.prototype._propagateFrom=r.propagateFromFunction(),t.prototype._boundValue=r.boundValueFunction());var u=n(o),l=new t(e);l._propagateFrom(this,1);var f=this._target();if(l._setBoundTo(u),u instanceof t){var p={promiseRejectionQueued:!1,promise:l,target:f,bindingPromise:u};f._then(e,a,void 0,l,p),u._then(s,c,void 0,l,p),l._setOnCancel(u)}else l._resolveCallback(f);return l},t.prototype._setBoundTo=function(t){void 0!==t?(this._bitField=2097152|this._bitField,this._boundTo=t):this._bitField=-2097153&this._bitField},t.prototype._isBound=function(){return 2097152==(2097152&this._bitField)},t.bind=function(e,n){return t.resolve(n).bind(e)}}},{}],4:[function(t,e,n){"use strict";var r;"undefined"!=typeof Promise&&(r=Promise);var i=t("./promise")();i.noConflict=function(){try{Promise===i&&(Promise=r)}catch(t){}return i},e.exports=i},{"./promise":22}],5:[function(t,e,n){"use strict";var r=Object.create;if(r){var i=r(null),o=r(null);i[" size"]=o[" size"]=0}e.exports=function(e){var n=t("./util"),r=n.canEvaluate;function i(t){var r=this.pop(),i=function(t,r){var i;if(null!=t&&(i=t[r]),"function"!=typeof i){var o="Object "+n.classString(t)+" has no method '"+n.toString(r)+"'";throw new e.TypeError(o)}return i}(t,r);return i.apply(t,this)}function o(t){return t[this]}function a(t){var e=+this;return e<0&&(e=Math.max(0,e+t.length)),t[e]}n.isIdentifier,e.prototype.call=function(t){var e=[].slice.call(arguments,1);return e.push(t),this._then(i,void 0,void 0,e,void 0)},e.prototype.get=function(t){var e,n="number"==typeof t;if(n)e=a;else if(r){var i=(void 0)(t);e=null!==i?i:o}else e=o;return this._then(e,void 0,void 0,t,void 0)}}},{"./util":36}],6:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),a=o.tryCatch,s=o.errorObj,c=e._async;e.prototype.break=e.prototype.cancel=function(){if(!i.cancellation())return this._warn("cancellation is disabled");for(var t=this,e=t;t._isCancellable();){if(!t._cancelBy(e)){e._isFollowing()?e._followee().cancel():e._cancelBranched();break}var n=t._cancellationParent;if(null==n||!n._isCancellable()){t._isFollowing()?t._followee().cancel():t._cancelBranched();break}t._isFollowing()&&t._followee().cancel(),t._setWillBeCancelled(),e=t,t=n}},e.prototype._branchHasCancelled=function(){this._branchesRemainingToCancel--},e.prototype._enoughBranchesHaveCancelled=function(){return void 0===this._branchesRemainingToCancel||this._branchesRemainingToCancel<=0},e.prototype._cancelBy=function(t){return t===this?(this._branchesRemainingToCancel=0,this._invokeOnCancel(),!0):(this._branchHasCancelled(),!!this._enoughBranchesHaveCancelled()&&(this._invokeOnCancel(),!0))},e.prototype._cancelBranched=function(){this._enoughBranchesHaveCancelled()&&this._cancel()},e.prototype._cancel=function(){this._isCancellable()&&(this._setCancelled(),c.invoke(this._cancelPromises,this,void 0))},e.prototype._cancelPromises=function(){this._length()>0&&this._settlePromises()},e.prototype._unsetOnCancel=function(){this._onCancelField=void 0},e.prototype._isCancellable=function(){return this.isPending()&&!this._isCancelled()},e.prototype.isCancellable=function(){return this.isPending()&&!this.isCancelled()},e.prototype._doInvokeOnCancel=function(t,e){if(o.isArray(t))for(var n=0;n<t.length;++n)this._doInvokeOnCancel(t[n],e);else if(void 0!==t)if("function"==typeof t){if(!e){var r=a(t).call(this._boundValue());r===s&&(this._attachExtraTrace(r.e),c.throwLater(r.e))}}else t._resultCancelled(this)},e.prototype._invokeOnCancel=function(){var t=this._onCancel();this._unsetOnCancel(),c.invoke(this._doInvokeOnCancel,this,t)},e.prototype._invokeInternalOnCancel=function(){this._isCancellable()&&(this._doInvokeOnCancel(this._onCancel(),!0),this._unsetOnCancel())},e.prototype._resultCancelled=function(){this.cancel()}}},{"./util":36}],7:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=t("./es5").keys,i=n.tryCatch,o=n.errorObj;return function(t,a,s){return function(c){var u=s._boundValue();t:for(var l=0;l<t.length;++l){var f=t[l];if(f===Error||null!=f&&f.prototype instanceof Error){if(c instanceof f)return i(a).call(u,c)}else if("function"==typeof f){var p=i(f).call(u,c);if(p===o)return p;if(p)return i(a).call(u,c)}else if(n.isObject(c)){for(var h=r(f),d=0;d<h.length;++d){var _=h[d];if(f[_]!=c[_])continue t}return i(a).call(u,c)}}return e}}}},{"./es5":13,"./util":36}],8:[function(t,e,n){"use strict";e.exports=function(t){var e=!1,n=[];function r(){this._trace=new r.CapturedTrace(i())}function i(){var t=n.length-1;if(t>=0)return n[t]}return t.prototype._promiseCreated=function(){},t.prototype._pushContext=function(){},t.prototype._popContext=function(){return null},t._peekContext=t.prototype._peekContext=function(){},r.prototype._pushContext=function(){void 0!==this._trace&&(this._trace._promiseCreated=null,n.push(this._trace))},r.prototype._popContext=function(){if(void 0!==this._trace){var t=n.pop(),e=t._promiseCreated;return t._promiseCreated=null,e}return null},r.CapturedTrace=null,r.create=function(){if(e)return new r},r.deactivateLongStackTraces=function(){},r.activateLongStackTraces=function(){var n=t.prototype._pushContext,o=t.prototype._popContext,a=t._peekContext,s=t.prototype._peekContext,c=t.prototype._promiseCreated;r.deactivateLongStackTraces=function(){t.prototype._pushContext=n,t.prototype._popContext=o,t._peekContext=a,t.prototype._peekContext=s,t.prototype._promiseCreated=c,e=!1},e=!0,t.prototype._pushContext=r.prototype._pushContext,t.prototype._popContext=r.prototype._popContext,t._peekContext=t.prototype._peekContext=i,t.prototype._promiseCreated=function(){var t=this._peekContext();t&&null==t._promiseCreated&&(t._promiseCreated=this)}},r}},{}],9:[function(t,n,r){"use strict";n.exports=function(n,r){var i,o,a,s=n._getDomain,c=n._async,u=t("./errors").Warning,l=t("./util"),f=t("./es5"),p=l.canAttachTrace,h=/[\\\/]bluebird[\\\/]js[\\\/](release|debug|instrumented)/,d=/\((?:timers\.js):\d+:\d+\)/,_=/[\/<\(](.+?):(\d+):(\d+)\)?\s*$/,v=null,y=null,m=!1,g=!(0==l.env("BLUEBIRD_DEBUG")),b=!(0==l.env("BLUEBIRD_WARNINGS")||!g&&!l.env("BLUEBIRD_WARNINGS")),w=!(0==l.env("BLUEBIRD_LONG_STACK_TRACES")||!g&&!l.env("BLUEBIRD_LONG_STACK_TRACES")),C=0!=l.env("BLUEBIRD_W_FORGOTTEN_RETURN")&&(b||!!l.env("BLUEBIRD_W_FORGOTTEN_RETURN"));n.prototype.suppressUnhandledRejections=function(){var t=this._target();t._bitField=-1048577&t._bitField|524288},n.prototype._ensurePossibleRejectionHandled=function(){if(0==(524288&this._bitField)){this._setRejectionIsUnhandled();var t=this;setTimeout(function(){t._notifyUnhandledRejection()},1)}},n.prototype._notifyUnhandledRejectionIsHandled=function(){$("rejectionHandled",i,void 0,this)},n.prototype._setReturnedNonUndefined=function(){this._bitField=268435456|this._bitField},n.prototype._returnedNonUndefined=function(){return 0!=(268435456&this._bitField)},n.prototype._notifyUnhandledRejection=function(){if(this._isRejectionUnhandled()){var t=this._settledValue();this._setUnhandledRejectionIsNotified(),$("unhandledRejection",o,t,this)}},n.prototype._setUnhandledRejectionIsNotified=function(){this._bitField=262144|this._bitField},n.prototype._unsetUnhandledRejectionIsNotified=function(){this._bitField=-262145&this._bitField},n.prototype._isUnhandledRejectionNotified=function(){return(262144&this._bitField)>0},n.prototype._setRejectionIsUnhandled=function(){this._bitField=1048576|this._bitField},n.prototype._unsetRejectionIsUnhandled=function(){this._bitField=-1048577&this._bitField,this._isUnhandledRejectionNotified()&&(this._unsetUnhandledRejectionIsNotified(),this._notifyUnhandledRejectionIsHandled())},n.prototype._isRejectionUnhandled=function(){return(1048576&this._bitField)>0},n.prototype._warn=function(t,e,n){return U(t,e,n||this)},n.onPossiblyUnhandledRejection=function(t){var e=s();o="function"==typeof t?null===e?t:l.domainBind(e,t):void 0},n.onUnhandledRejectionHandled=function(t){var e=s();i="function"==typeof t?null===e?t:l.domainBind(e,t):void 0};var E=function(){};n.longStackTraces=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");if(!Z.longStackTraces&&z()){var t=n.prototype._captureStackTrace,e=n.prototype._attachExtraTrace,i=n.prototype._dereferenceTrace;Z.longStackTraces=!0,E=function(){if(c.haveItemsQueued()&&!Z.longStackTraces)throw new Error("cannot enable long stack traces after promises have been created\n\n See http://goo.gl/MqrFmX\n");n.prototype._captureStackTrace=t,n.prototype._attachExtraTrace=e,n.prototype._dereferenceTrace=i,r.deactivateLongStackTraces(),c.enableTrampoline(),Z.longStackTraces=!1},n.prototype._captureStackTrace=M,n.prototype._attachExtraTrace=V,n.prototype._dereferenceTrace=H,r.activateLongStackTraces(),c.disableTrampolineIfNecessary()}},n.hasLongStackTraces=function(){return Z.longStackTraces&&z()};var j=function(){try{if("function"==typeof CustomEvent){var t=new CustomEvent("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n={detail:e,cancelable:!0};f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason});var r=new CustomEvent(t.toLowerCase(),n);return!l.global.dispatchEvent(r)}}if("function"==typeof Event){var t=new Event("CustomEvent");return l.global.dispatchEvent(t),function(t,e){var n=new Event(t.toLowerCase(),{cancelable:!0});return n.detail=e,f.defineProperty(n,"promise",{value:e.promise}),f.defineProperty(n,"reason",{value:e.reason}),!l.global.dispatchEvent(n)}}var t=document.createEvent("CustomEvent");return t.initCustomEvent("testingtheevent",!1,!0,{}),l.global.dispatchEvent(t),function(t,e){var n=document.createEvent("CustomEvent");return n.initCustomEvent(t.toLowerCase(),!1,!0,e),!l.global.dispatchEvent(n)}}catch(t){}return function(){return!1}}(),k=l.isNode?function(){return e.emit.apply(e,arguments)}:l.global?function(t){var e="on"+t.toLowerCase(),n=l.global[e];return!!n&&(n.apply(l.global,[].slice.call(arguments,1)),!0)}:function(){return!1};function x(t,e){return{promise:e}}var T={promiseCreated:x,promiseFulfilled:x,promiseRejected:x,promiseResolved:x,promiseCancelled:x,promiseChained:function(t,e,n){return{promise:e,child:n}},warning:function(t,e){return{warning:e}},unhandledRejection:function(t,e,n){return{reason:e,promise:n}},rejectionHandled:x},F=function(t){var e=!1;try{e=k.apply(null,arguments)}catch(t){c.throwLater(t),e=!0}var n=!1;try{n=j(t,T[t].apply(null,arguments))}catch(t){c.throwLater(t),n=!0}return n||e};function O(){return!1}function S(t,e,n){var r=this;try{t(e,n,function(t){if("function"!=typeof t)throw new TypeError("onCancel must be a function, got: "+l.toString(t));r._attachCancellationCallback(t)})}catch(t){return t}}function P(t){if(!this._isCancellable())return this;var e=this._onCancel();void 0!==e?l.isArray(e)?e.push(t):this._setOnCancel([e,t]):this._setOnCancel(t)}function R(){return this._onCancelField}function A(t){this._onCancelField=t}function L(){this._cancellationParent=void 0,this._onCancelField=void 0}function I(t,e){if(0!=(1&e)){this._cancellationParent=t;var n=t._branchesRemainingToCancel;void 0===n&&(n=0),t._branchesRemainingToCancel=n+1}0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)}n.config=function(t){if("longStackTraces"in(t=Object(t))&&(t.longStackTraces?n.longStackTraces():!t.longStackTraces&&n.hasLongStackTraces()&&E()),"warnings"in t){var e=t.warnings;Z.warnings=!!e,C=Z.warnings,l.isObject(e)&&"wForgottenReturn"in e&&(C=!!e.wForgottenReturn)}if("cancellation"in t&&t.cancellation&&!Z.cancellation){if(c.haveItemsQueued())throw new Error("cannot enable cancellation after promises are in use");n.prototype._clearCancellationData=L,n.prototype._propagateFrom=I,n.prototype._onCancel=R,n.prototype._setOnCancel=A,n.prototype._attachCancellationCallback=P,n.prototype._execute=S,N=I,Z.cancellation=!0}return"monitoring"in t&&(t.monitoring&&!Z.monitoring?(Z.monitoring=!0,n.prototype._fireEvent=F):!t.monitoring&&Z.monitoring&&(Z.monitoring=!1,n.prototype._fireEvent=O)),n},n.prototype._fireEvent=O,n.prototype._execute=function(t,e,n){try{t(e,n)}catch(t){return t}},n.prototype._onCancel=function(){},n.prototype._setOnCancel=function(t){},n.prototype._attachCancellationCallback=function(t){},n.prototype._captureStackTrace=function(){},n.prototype._attachExtraTrace=function(){},n.prototype._dereferenceTrace=function(){},n.prototype._clearCancellationData=function(){},n.prototype._propagateFrom=function(t,e){};var N=function(t,e){0!=(2&e)&&t._isBound()&&this._setBoundTo(t._boundTo)};function D(){var t=this._boundTo;return void 0!==t&&t instanceof n?t.isFulfilled()?t.value():void 0:t}function M(){this._trace=new K(this._peekContext())}function V(t,e){if(p(t)){var n=this._trace;if(void 0!==n&&e&&(n=n._parent),void 0!==n)n.attachExtraTrace(t);else if(!t.__stackCleaned__){var r=q(t);l.notEnumerableProp(t,"stack",r.message+"\n"+r.stack.join("\n")),l.notEnumerableProp(t,"__stackCleaned__",!0)}}}function H(){this._trace=void 0}function U(t,e,r){if(Z.warnings){var i,o=new u(t);if(e)r._attachExtraTrace(o);else if(Z.longStackTraces&&(i=n._peekContext()))i.attachExtraTrace(o);else{var a=q(o);o.stack=a.message+"\n"+a.stack.join("\n")}F("warning",o)||G(o,"",!0)}}function B(t){for(var e=[],n=0;n<t.length;++n){var r=t[n],i=" (No stack trace)"===r||v.test(r),o=i&&W(r);i&&!o&&(m&&" "!==r.charAt(0)&&(r=" "+r),e.push(r))}return e}function q(t){var e=t.stack,n=t.toString();return e="string"==typeof e&&e.length>0?function(t){for(var e=t.stack.replace(/\s+$/g,"").split("\n"),n=0;n<e.length;++n){var r=e[n];if(" (No stack trace)"===r||v.test(r))break}return n>0&&"SyntaxError"!=t.name&&(e=e.slice(n)),e}(t):[" (No stack trace)"],{message:n,stack:"SyntaxError"==t.name?e:B(e)}}function G(t,e,n){if("undefined"!=typeof console){var r;if(l.isObject(t)){var i=t.stack;r=e+y(i,t)}else r=e+String(t);"function"==typeof a?a(r,n):"function"!=typeof console.log&&"object"!=typeof console.log||console.log(r)}}function $(t,e,n,r){var i=!1;try{"function"==typeof e&&(i=!0,"rejectionHandled"===t?e(r):e(n,r))}catch(t){c.throwLater(t)}"unhandledRejection"===t?F(t,n,r)||i||G(n,"Unhandled rejection "):F(t,r)}function Q(t){var e;if("function"==typeof t)e="[function "+(t.name||"anonymous")+"]";else{if(e=t&&"function"==typeof t.toString?t.toString():l.toString(t),/\[object [a-zA-Z0-9$_]+\]/.test(e))try{var n=JSON.stringify(t);e=n}catch(t){}0===e.length&&(e="(empty array)")}return"(<"+function(t){return t.length<41?t:t.substr(0,38)+"..."}(e)+">, no stack trace)"}function z(){return"function"==typeof Y}var W=function(){return!1},X=/[\/<\(]([^:\/]+):(\d+):(?:\d+)\)?\s*$/;function J(t){var e=t.match(X);if(e)return{fileName:e[1],line:parseInt(e[2],10)}}function K(t){this._parent=t,this._promisesCreated=0;var e=this._length=1+(void 0===t?0:t._length);Y(this,K),e>32&&this.uncycle()}l.inherits(K,Error),r.CapturedTrace=K,K.prototype.uncycle=function(){var t=this._length;if(!(t<2)){for(var e=[],n={},r=0,i=this;void 0!==i;++r)e.push(i),i=i._parent;for(var r=(t=this._length=r)-1;r>=0;--r){var o=e[r].stack;void 0===n[o]&&(n[o]=r)}for(var r=0;r<t;++r){var a=e[r].stack,s=n[a];if(void 0!==s&&s!==r){s>0&&(e[s-1]._parent=void 0,e[s-1]._length=1),e[r]._parent=void 0,e[r]._length=1;var c=r>0?e[r-1]:this;s<t-1?(c._parent=e[s+1],c._parent.uncycle(),c._length=c._parent._length+1):(c._parent=void 0,c._length=1);for(var u=c._length+1,l=r-2;l>=0;--l)e[l]._length=u,u++;return}}}},K.prototype.attachExtraTrace=function(t){if(!t.__stackCleaned__){this.uncycle();for(var e=q(t),n=e.message,r=[e.stack],i=this;void 0!==i;)r.push(B(i.stack.split("\n"))),i=i._parent;!function(t){for(var e=t[0],n=1;n<t.length;++n){for(var r=t[n],i=e.length-1,o=e[i],a=-1,s=r.length-1;s>=0;--s)if(r[s]===o){a=s;break}for(var s=a;s>=0;--s){var c=r[s];if(e[i]!==c)break;e.pop(),i--}e=r}}(r),function(t){for(var e=0;e<t.length;++e)(0===t[e].length||e+1<t.length&&t[e][0]===t[e+1][0])&&(t.splice(e,1),e--)}(r),l.notEnumerableProp(t,"stack",function(t,e){for(var n=0;n<e.length-1;++n)e[n].push("From previous event:"),e[n]=e[n].join("\n");return n<e.length&&(e[n]=e[n].join("\n")),t+"\n"+e.join("\n")}(n,r)),l.notEnumerableProp(t,"__stackCleaned__",!0)}};var Y=function(){var t=/^\s*at\s*/,e=function(t,e){return"string"==typeof t?t:void 0!==e.name&&void 0!==e.message?e.toString():Q(e)};if("number"==typeof Error.stackTraceLimit&&"function"==typeof Error.captureStackTrace){Error.stackTraceLimit+=6,v=t,y=e;var n=Error.captureStackTrace;return W=function(t){return h.test(t)},function(t,e){Error.stackTraceLimit+=6,n(t,e),Error.stackTraceLimit-=6}}var r,i=new Error;if("string"==typeof i.stack&&i.stack.split("\n")[0].indexOf("stackDetection@")>=0)return v=/@/,y=e,m=!0,function(t){t.stack=(new Error).stack};try{throw new Error}catch(t){r="stack"in t}return"stack"in i||!r||"number"!=typeof Error.stackTraceLimit?(y=function(t,e){return"string"==typeof t?t:"object"!=typeof e&&"function"!=typeof e||void 0===e.name||void 0===e.message?Q(e):e.toString()},null):(v=t,y=e,function(t){Error.stackTraceLimit+=6;try{throw new Error}catch(e){t.stack=e.stack}Error.stackTraceLimit-=6})}();"undefined"!=typeof console&&void 0!==console.warn&&(a=function(t){console.warn(t)},l.isNode&&e.stderr.isTTY?a=function(t,e){var n=e?"":"";console.warn(n+t+"\n")}:l.isNode||"string"!=typeof(new Error).stack||(a=function(t,e){console.warn("%c"+t,e?"color: darkorange":"color: red")}));var Z={warnings:b,longStackTraces:!1,cancellation:!1,monitoring:!1};return w&&n.longStackTraces(),{longStackTraces:function(){return Z.longStackTraces},warnings:function(){return Z.warnings},cancellation:function(){return Z.cancellation},monitoring:function(){return Z.monitoring},propagateFromFunction:function(){return N},boundValueFunction:function(){return D},checkForgottenReturns:function(t,e,n,r,i){if(void 0===t&&null!==e&&C){if(void 0!==i&&i._returnedNonUndefined())return;if(0==(65535&r._bitField))return;n&&(n+=" ");var o="",a="";if(e._trace){for(var s=e._trace.stack.split("\n"),c=B(s),u=c.length-1;u>=0;--u){var l=c[u];if(!d.test(l)){var f=l.match(_);f&&(o="at "+f[1]+":"+f[2]+":"+f[3]+" ");break}}if(c.length>0)for(var p=c[0],u=0;u<s.length;++u)if(s[u]===p){u>0&&(a="\n"+s[u-1]);break}}var h="a promise was created in a "+n+"handler "+o+"but was not returned from it, see http://goo.gl/rRqMUw"+a;r._warn(h,!0,e)}},setBounds:function(t,e){if(z()){for(var n,r,i=t.stack.split("\n"),o=e.stack.split("\n"),a=-1,s=-1,c=0;c<i.length;++c){var u=J(i[c]);if(u){n=u.fileName,a=u.line;break}}for(var c=0;c<o.length;++c){var u=J(o[c]);if(u){r=u.fileName,s=u.line;break}}a<0||s<0||!n||!r||n!==r||a>=s||(W=function(t){if(h.test(t))return!0;var e=J(t);return!!(e&&e.fileName===n&&a<=e.line&&e.line<=s)})}},warn:U,deprecated:function(t,e){var n=t+" is deprecated and will be removed in a future version.";return e&&(n+=" Use "+e+" instead."),U(n)},CapturedTrace:K,fireDomEvent:j,fireGlobalEvent:k}}},{"./errors":12,"./es5":13,"./util":36}],10:[function(t,e,n){"use strict";e.exports=function(t){function e(){return this.value}function n(){throw this.reason}t.prototype.return=t.prototype.thenReturn=function(n){return n instanceof t&&n.suppressUnhandledRejections(),this._then(e,void 0,void 0,{value:n},void 0)},t.prototype.throw=t.prototype.thenThrow=function(t){return this._then(n,void 0,void 0,{reason:t},void 0)},t.prototype.catchThrow=function(t){if(arguments.length<=1)return this._then(void 0,n,void 0,{reason:t},void 0);var e=arguments[1];return this.caught(t,function(){throw e})},t.prototype.catchReturn=function(n){if(arguments.length<=1)return n instanceof t&&n.suppressUnhandledRejections(),this._then(void 0,e,void 0,{value:n},void 0);var r=arguments[1];return r instanceof t&&r.suppressUnhandledRejections(),this.caught(n,function(){return r})}}},{}],11:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.reduce,r=t.all;function i(){return r(this)}t.prototype.each=function(t){return n(this,t,e,0)._then(i,void 0,void 0,this,void 0)},t.prototype.mapSeries=function(t){return n(this,t,e,e)},t.each=function(t,r){return n(t,r,e,0)._then(i,void 0,void 0,t,void 0)},t.mapSeries=function(t,r){return n(t,r,e,e)}}},{}],12:[function(t,e,n){"use strict";var r,i,o=t("./es5"),a=o.freeze,s=t("./util"),c=s.inherits,u=s.notEnumerableProp;function l(t,e){function n(r){if(!(this instanceof n))return new n(r);u(this,"message","string"==typeof r?r:e),u(this,"name",t),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):Error.call(this)}return c(n,Error),n}var f=l("Warning","warning"),p=l("CancellationError","cancellation error"),h=l("TimeoutError","timeout error"),d=l("AggregateError","aggregate error");try{r=TypeError,i=RangeError}catch(t){r=l("TypeError","type error"),i=l("RangeError","range error")}for(var _="join pop push shift unshift slice filter forEach some every map indexOf lastIndexOf reduce reduceRight sort reverse".split(" "),v=0;v<_.length;++v)"function"==typeof Array.prototype[_[v]]&&(d.prototype[_[v]]=Array.prototype[_[v]]);o.defineProperty(d.prototype,"length",{value:0,configurable:!1,writable:!0,enumerable:!0}),d.prototype.isOperational=!0;var y=0;function m(t){if(!(this instanceof m))return new m(t);u(this,"name","OperationalError"),u(this,"message",t),this.cause=t,this.isOperational=!0,t instanceof Error?(u(this,"message",t.message),u(this,"stack",t.stack)):Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}d.prototype.toString=function(){var t=Array(4*y+1).join(" "),e="\n"+t+"AggregateError of:\n";y++,t=Array(4*y+1).join(" ");for(var n=0;n<this.length;++n){for(var r=this[n]===this?"[Circular AggregateError]":this[n]+"",i=r.split("\n"),o=0;o<i.length;++o)i[o]=t+i[o];r=i.join("\n"),e+=r+"\n"}return y--,e},c(m,Error);var g=Error.__BluebirdErrorTypes__;g||(g=a({CancellationError:p,TimeoutError:h,OperationalError:m,RejectionError:m,AggregateError:d}),o.defineProperty(Error,"__BluebirdErrorTypes__",{value:g,writable:!1,enumerable:!1,configurable:!1})),e.exports={Error:Error,TypeError:r,RangeError:i,CancellationError:g.CancellationError,OperationalError:g.OperationalError,TimeoutError:g.TimeoutError,AggregateError:g.AggregateError,Warning:f}},{"./es5":13,"./util":36}],13:[function(t,e,n){var r=function(){"use strict";return void 0===this}();if(r)e.exports={freeze:Object.freeze,defineProperty:Object.defineProperty,getDescriptor:Object.getOwnPropertyDescriptor,keys:Object.keys,names:Object.getOwnPropertyNames,getPrototypeOf:Object.getPrototypeOf,isArray:Array.isArray,isES5:r,propertyIsWritable:function(t,e){var n=Object.getOwnPropertyDescriptor(t,e);return!(n&&!n.writable&&!n.set)}};else{var i={}.hasOwnProperty,o={}.toString,a={}.constructor.prototype,s=function(t){var e=[];for(var n in t)i.call(t,n)&&e.push(n);return e};e.exports={isArray:function(t){try{return"[object Array]"===o.call(t)}catch(t){return!1}},keys:s,names:s,defineProperty:function(t,e,n){return t[e]=n.value,t},getDescriptor:function(t,e){return{value:t[e]}},freeze:function(t){return t},getPrototypeOf:function(t){try{return Object(t).constructor.prototype}catch(t){return a}},isES5:r,propertyIsWritable:function(){return!0}}}},{}],14:[function(t,e,n){"use strict";e.exports=function(t,e){var n=t.map;t.prototype.filter=function(t,r){return n(this,t,r,e)},t.filter=function(t,r,i){return n(t,r,i,e)}}},{}],15:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=e.CancellationError,a=i.errorObj,s=t("./catch_filter")(r);function c(t,e,n){this.promise=t,this.type=e,this.handler=n,this.called=!1,this.cancelPromise=null}function u(t){this.finallyHandler=t}function l(t,e){return null!=t.cancelPromise&&(arguments.length>1?t.cancelPromise._reject(e):t.cancelPromise._cancel(),t.cancelPromise=null,!0)}function f(){return h.call(this,this.promise._target()._settledValue())}function p(t){if(!l(this,t))return a.e=t,a}function h(t){var i=this.promise,s=this.handler;if(!this.called){this.called=!0;var c=this.isFinallyHandler()?s.call(i._boundValue()):s.call(i._boundValue(),t);if(c===r)return c;if(void 0!==c){i._setReturnedNonUndefined();var h=n(c,i);if(h instanceof e){if(null!=this.cancelPromise){if(h._isCancelled()){var d=new o("late cancellation observer");return i._attachExtraTrace(d),a.e=d,a}h.isPending()&&h._attachCancellationCallback(new u(this))}return h._then(f,p,void 0,this,void 0)}}}return i.isRejected()?(l(this),a.e=t,a):(l(this),t)}return c.prototype.isFinallyHandler=function(){return 0===this.type},u.prototype._resultCancelled=function(){l(this.finallyHandler)},e.prototype._passThrough=function(t,e,n,r){return"function"!=typeof t?this.then():this._then(n,r,void 0,new c(this,e,t),void 0)},e.prototype.lastly=e.prototype.finally=function(t){return this._passThrough(t,0,h,h)},e.prototype.tap=function(t){return this._passThrough(t,1,h)},e.prototype.tapCatch=function(t){var n=arguments.length;if(1===n)return this._passThrough(t,1,void 0,h);var r,o=new Array(n-1),a=0;for(r=0;r<n-1;++r){var c=arguments[r];if(!i.isObject(c))return e.reject(new TypeError("tapCatch statement predicate: expecting an object but got "+i.classString(c)));o[a++]=c}o.length=a;var u=arguments[r];return this._passThrough(s(o,u,this),1,void 0,h)},c}},{"./catch_filter":7,"./util":36}],16:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./errors"),c=s.TypeError,u=t("./util"),l=u.errorObj,f=u.tryCatch,p=[];function h(t,n,i,o){if(a.cancellation()){var s=new e(r),c=this._finallyPromise=new e(r);this._promise=s.lastly(function(){return c}),s._captureStackTrace(),s._setOnCancel(this)}else{var u=this._promise=new e(r);u._captureStackTrace()}this._stack=o,this._generatorFunction=t,this._receiver=n,this._generator=void 0,this._yieldHandlers="function"==typeof i?[i].concat(p):p,this._yieldedPromise=null,this._cancellationPhase=!1}u.inherits(h,o),h.prototype._isResolved=function(){return null===this._promise},h.prototype._cleanup=function(){this._promise=this._generator=null,a.cancellation()&&null!==this._finallyPromise&&(this._finallyPromise._fulfill(),this._finallyPromise=null)},h.prototype._promiseCancelled=function(){if(!this._isResolved()){var t,n=void 0!==this._generator.return;if(n)this._promise._pushContext(),t=f(this._generator.return).call(this._generator,void 0),this._promise._popContext();else{var r=new e.CancellationError("generator .return() sentinel");e.coroutine.returnSentinel=r,this._promise._attachExtraTrace(r),this._promise._pushContext(),t=f(this._generator.throw).call(this._generator,r),this._promise._popContext()}this._cancellationPhase=!0,this._yieldedPromise=null,this._continue(t)}},h.prototype._promiseFulfilled=function(t){this._yieldedPromise=null,this._promise._pushContext();var e=f(this._generator.next).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._promiseRejected=function(t){this._yieldedPromise=null,this._promise._attachExtraTrace(t),this._promise._pushContext();var e=f(this._generator.throw).call(this._generator,t);this._promise._popContext(),this._continue(e)},h.prototype._resultCancelled=function(){if(this._yieldedPromise instanceof e){var t=this._yieldedPromise;this._yieldedPromise=null,t.cancel()}},h.prototype.promise=function(){return this._promise},h.prototype._run=function(){this._generator=this._generatorFunction.call(this._receiver),this._receiver=this._generatorFunction=void 0,this._promiseFulfilled(void 0)},h.prototype._continue=function(t){var n=this._promise;if(t===l)return this._cleanup(),this._cancellationPhase?n.cancel():n._rejectCallback(t.e,!1);var r=t.value;if(!0===t.done)return this._cleanup(),this._cancellationPhase?n.cancel():n._resolveCallback(r);var o=i(r,this._promise);if(o instanceof e||null!==(o=function(t,n,r){for(var o=0;o<n.length;++o){r._pushContext();var a=f(n[o])(t);if(r._popContext(),a===l){r._pushContext();var s=e.reject(l.e);return r._popContext(),s}var c=i(a,r);if(c instanceof e)return c}return null}(o,this._yieldHandlers,this._promise))){var a=(o=o._target())._bitField;0==(50397184&a)?(this._yieldedPromise=o,o._proxy(this,null)):0!=(33554432&a)?e._async.invoke(this._promiseFulfilled,this,o._value()):0!=(16777216&a)?e._async.invoke(this._promiseRejected,this,o._reason()):this._promiseCancelled()}else this._promiseRejected(new c("A value %s was yielded that could not be treated as a promise\n\n See http://goo.gl/MqrFmX\n\n".replace("%s",String(r))+"From coroutine:\n"+this._stack.split("\n").slice(1,-7).join("\n")))},e.coroutine=function(t,e){if("function"!=typeof t)throw new c("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var n=Object(e).yieldHandler,r=h,i=(new Error).stack;return function(){var e=t.apply(this,arguments),o=new r(void 0,void 0,n,i),a=o.promise();return o._generator=e,o._promiseFulfilled(void 0),a}},e.coroutine.addYieldHandler=function(t){if("function"!=typeof t)throw new c("expecting a function but got "+u.classString(t));p.push(t)},e.spawn=function(t){if(a.deprecated("Promise.spawn()","Promise.coroutine()"),"function"!=typeof t)return n("generatorFunction must be a function\n\n See http://goo.gl/MqrFmX\n");var r=new h(t,this),i=r.promise();return r._run(e.spawn),i}}},{"./errors":12,"./util":36}],17:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./util");s.canEvaluate,s.tryCatch,s.errorObj,e.join=function(){var t,e=arguments.length-1;e>0&&"function"==typeof arguments[e]&&(t=arguments[e]);var r=[].slice.call(arguments);t&&r.pop();var i=new n(r).promise();return void 0!==t?i.spread(t):i}}},{"./util":36}],18:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch,l=c.errorObj,f=e._async;function p(t,e,n,r){this.constructor$(t),this._promise._captureStackTrace();var i=s();this._callback=null===i?e:c.domainBind(i,e),this._preservedValues=r===o?new Array(this.length()):null,this._limit=n,this._inFlight=0,this._queue=[],f.invoke(this._asyncInit,this,void 0)}function h(t,n,i,o){if("function"!=typeof n)return r("expecting a function but got "+c.classString(n));var a=0;if(void 0!==i){if("object"!=typeof i||null===i)return e.reject(new TypeError("options argument must be an object but it is "+c.classString(i)));if("number"!=typeof i.concurrency)return e.reject(new TypeError("'concurrency' must be a number but it is "+c.classString(i.concurrency)));a=i.concurrency}return a="number"==typeof a&&isFinite(a)&&a>=1?a:0,new p(t,n,a,o).promise()}c.inherits(p,n),p.prototype._asyncInit=function(){this._init$(void 0,-2)},p.prototype._init=function(){},p.prototype._promiseFulfilled=function(t,n){var r=this._values,o=this.length(),s=this._preservedValues,c=this._limit;if(n<0){if(r[n=-1*n-1]=t,c>=1&&(this._inFlight--,this._drainQueue(),this._isResolved()))return!0}else{if(c>=1&&this._inFlight>=c)return r[n]=t,this._queue.push(n),!1;null!==s&&(s[n]=t);var f=this._promise,p=this._callback,h=f._boundValue();f._pushContext();var d=u(p).call(h,t,n,o),_=f._popContext();if(a.checkForgottenReturns(d,_,null!==s?"Promise.filter":"Promise.map",f),d===l)return this._reject(d.e),!0;var v=i(d,this._promise);if(v instanceof e){var y=(v=v._target())._bitField;if(0==(50397184&y))return c>=1&&this._inFlight++,r[n]=v,v._proxy(this,-1*(n+1)),!1;if(0==(33554432&y))return 0!=(16777216&y)?(this._reject(v._reason()),!0):(this._cancel(),!0);d=v._value()}r[n]=d}var m=++this._totalResolved;return m>=o&&(null!==s?this._filter(r,s):this._resolve(r),!0)},p.prototype._drainQueue=function(){for(var t=this._queue,e=this._limit,n=this._values;t.length>0&&this._inFlight<e;){if(this._isResolved())return;var r=t.pop();this._promiseFulfilled(n[r],r)}},p.prototype._filter=function(t,e){for(var n=e.length,r=new Array(n),i=0,o=0;o<n;++o)t[o]&&(r[i++]=e[o]);r.length=i,this._resolve(r)},p.prototype.preservedValues=function(){return this._preservedValues},e.prototype.map=function(t,e){return h(this,t,e,null)},e.map=function(t,e,n,r){return h(t,e,n,r)}}},{"./util":36}],19:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var a=t("./util"),s=a.tryCatch;e.method=function(t){if("function"!=typeof t)throw new e.TypeError("expecting a function but got "+a.classString(t));return function(){var r=new e(n);r._captureStackTrace(),r._pushContext();var i=s(t).apply(this,arguments),a=r._popContext();return o.checkForgottenReturns(i,a,"Promise.method",r),r._resolveFromSyncValue(i),r}},e.attempt=e.try=function(t){if("function"!=typeof t)return i("expecting a function but got "+a.classString(t));var r,c=new e(n);if(c._captureStackTrace(),c._pushContext(),arguments.length>1){o.deprecated("calling Promise.try with more than 1 argument");var u=arguments[1],l=arguments[2];r=a.isArray(u)?s(t).apply(l,u):s(t).call(l,u)}else r=s(t)();var f=c._popContext();return o.checkForgottenReturns(r,f,"Promise.try",c),c._resolveFromSyncValue(r),c},e.prototype._resolveFromSyncValue=function(t){t===a.errorObj?this._rejectCallback(t.e,!1):this._resolveCallback(t,!0)}}},{"./util":36}],20:[function(t,e,n){"use strict";var r=t("./util"),i=r.maybeWrapAsError,o=t("./errors"),a=o.OperationalError,s=t("./es5"),c=/^(?:name|message|stack|cause)$/;function u(t){var e;if(function(t){return t instanceof Error&&s.getPrototypeOf(t)===Error.prototype}(t)){(e=new a(t)).name=t.name,e.message=t.message,e.stack=t.stack;for(var n=s.keys(t),i=0;i<n.length;++i){var o=n[i];c.test(o)||(e[o]=t[o])}return e}return r.markAsOriginatingFromRejection(t),t}e.exports=function(t,e){return function(n,r){if(null!==t){if(n){var o=u(i(n));t._attachExtraTrace(o),t._reject(o)}else if(e){var a=[].slice.call(arguments,1);t._fulfill(a)}else t._fulfill(r);t=null}}}},{"./errors":12,"./es5":13,"./util":36}],21:[function(t,e,n){"use strict";e.exports=function(e){var n=t("./util"),r=e._async,i=n.tryCatch,o=n.errorObj;function a(t,e){if(!n.isArray(t))return s.call(this,t,e);var a=i(e).apply(this._boundValue(),[null].concat(t));a===o&&r.throwLater(a.e)}function s(t,e){var n=this._boundValue(),a=void 0===t?i(e).call(n,null):i(e).call(n,null,t);a===o&&r.throwLater(a.e)}function c(t,e){if(!t){var n=new Error(t+"");n.cause=t,t=n}var a=i(e).call(this._boundValue(),t);a===o&&r.throwLater(a.e)}e.prototype.asCallback=e.prototype.nodeify=function(t,e){if("function"==typeof t){var n=s;void 0!==e&&Object(e).spread&&(n=a),this._then(n,c,void 0,this,t)}return this}}},{"./util":36}],22:[function(t,n,r){"use strict";n.exports=function(){var r=function(){return new d("circular promise resolution chain\n\n See http://goo.gl/MqrFmX\n")},i=function(){return new O.PromiseInspection(this._target())},o=function(t){return O.reject(new d(t))};function a(){}var s,c={},u=t("./util");s=u.isNode?function(){var t=e.domain;return void 0===t&&(t=null),t}:function(){return null},u.notEnumerableProp(O,"_getDomain",s);var l=t("./es5"),f=t("./async"),p=new f;l.defineProperty(O,"_async",{value:p});var h=t("./errors"),d=O.TypeError=h.TypeError;O.RangeError=h.RangeError;var _=O.CancellationError=h.CancellationError;O.TimeoutError=h.TimeoutError,O.OperationalError=h.OperationalError,O.RejectionError=h.OperationalError,O.AggregateError=h.AggregateError;var v=function(){},y={},m={},g=t("./thenables")(O,v),b=t("./promise_array")(O,v,g,o,a),w=t("./context")(O),C=w.create,E=t("./debuggability")(O,w),j=(E.CapturedTrace,t("./finally")(O,g,m)),k=t("./catch_filter")(m),x=t("./nodeback"),T=u.errorObj,F=u.tryCatch;function O(t){t!==v&&function(t,e){if(null==t||t.constructor!==O)throw new d("the promise constructor cannot be invoked directly\n\n See http://goo.gl/MqrFmX\n");if("function"!=typeof e)throw new d("expecting a function but got "+u.classString(e))}(this,t),this._bitField=0,this._fulfillmentHandler0=void 0,this._rejectionHandler0=void 0,this._promise0=void 0,this._receiver0=void 0,this._resolveFromExecutor(t),this._promiseCreated(),this._fireEvent("promiseCreated",this)}function S(t){this.promise._resolveCallback(t)}function P(t){this.promise._rejectCallback(t,!1)}function R(t){var e=new O(v);e._fulfillmentHandler0=t,e._rejectionHandler0=t,e._promise0=t,e._receiver0=t}return O.prototype.toString=function(){return"[object Promise]"},O.prototype.caught=O.prototype.catch=function(t){var e=arguments.length;if(e>1){var n,r=new Array(e-1),i=0;for(n=0;n<e-1;++n){var a=arguments[n];if(!u.isObject(a))return o("Catch statement predicate: expecting an object but got "+u.classString(a));r[i++]=a}return r.length=i,t=arguments[n],this.then(void 0,k(r,t,this))}return this.then(void 0,t)},O.prototype.reflect=function(){return this._then(i,i,void 0,this,void 0)},O.prototype.then=function(t,e){if(E.warnings()&&arguments.length>0&&"function"!=typeof t&&"function"!=typeof e){var n=".then() only accepts functions but was passed: "+u.classString(t);arguments.length>1&&(n+=", "+u.classString(e)),this._warn(n)}return this._then(t,e,void 0,void 0,void 0)},O.prototype.done=function(t,e){var n=this._then(t,e,void 0,void 0,void 0);n._setIsFinal()},O.prototype.spread=function(t){return"function"!=typeof t?o("expecting a function but got "+u.classString(t)):this.all()._then(t,void 0,void 0,y,void 0)},O.prototype.toJSON=function(){var t={isFulfilled:!1,isRejected:!1,fulfillmentValue:void 0,rejectionReason:void 0};return this.isFulfilled()?(t.fulfillmentValue=this.value(),t.isFulfilled=!0):this.isRejected()&&(t.rejectionReason=this.reason(),t.isRejected=!0),t},O.prototype.all=function(){return arguments.length>0&&this._warn(".all() was passed arguments but it does not take any"),new b(this).promise()},O.prototype.error=function(t){return this.caught(u.originatesFromRejection,t)},O.getNewLibraryCopy=n.exports,O.is=function(t){return t instanceof O},O.fromNode=O.fromCallback=function(t){var e=new O(v);e._captureStackTrace();var n=arguments.length>1&&!!Object(arguments[1]).multiArgs,r=F(t)(x(e,n));return r===T&&e._rejectCallback(r.e,!0),e._isFateSealed()||e._setAsyncGuaranteed(),e},O.all=function(t){return new b(t).promise()},O.cast=function(t){var e=g(t);return e instanceof O||((e=new O(v))._captureStackTrace(),e._setFulfilled(),e._rejectionHandler0=t),e},O.resolve=O.fulfilled=O.cast,O.reject=O.rejected=function(t){var e=new O(v);return e._captureStackTrace(),e._rejectCallback(t,!0),e},O.setScheduler=function(t){if("function"!=typeof t)throw new d("expecting a function but got "+u.classString(t));return p.setScheduler(t)},O.prototype._then=function(t,e,n,r,i){var o=void 0!==i,a=o?i:new O(v),c=this._target(),l=c._bitField;o||(a._propagateFrom(this,3),a._captureStackTrace(),void 0===r&&0!=(2097152&this._bitField)&&(r=0!=(50397184&l)?this._boundValue():c===this?void 0:this._boundTo),this._fireEvent("promiseChained",this,a));var f=s();if(0!=(50397184&l)){var h,d,y=c._settlePromiseCtx;0!=(33554432&l)?(d=c._rejectionHandler0,h=t):0!=(16777216&l)?(d=c._fulfillmentHandler0,h=e,c._unsetRejectionIsUnhandled()):(y=c._settlePromiseLateCancellationObserver,d=new _("late cancellation observer"),c._attachExtraTrace(d),h=e),p.invoke(y,c,{handler:null===f?h:"function"==typeof h&&u.domainBind(f,h),promise:a,receiver:r,value:d})}else c._addCallbacks(t,e,a,r,f);return a},O.prototype._length=function(){return 65535&this._bitField},O.prototype._isFateSealed=function(){return 0!=(117506048&this._bitField)},O.prototype._isFollowing=function(){return 67108864==(67108864&this._bitField)},O.prototype._setLength=function(t){this._bitField=-65536&this._bitField|65535&t},O.prototype._setFulfilled=function(){this._bitField=33554432|this._bitField,this._fireEvent("promiseFulfilled",this)},O.prototype._setRejected=function(){this._bitField=16777216|this._bitField,this._fireEvent("promiseRejected",this)},O.prototype._setFollowing=function(){this._bitField=67108864|this._bitField,this._fireEvent("promiseResolved",this)},O.prototype._setIsFinal=function(){this._bitField=4194304|this._bitField},O.prototype._isFinal=function(){return(4194304&this._bitField)>0},O.prototype._unsetCancelled=function(){this._bitField=-65537&this._bitField},O.prototype._setCancelled=function(){this._bitField=65536|this._bitField,this._fireEvent("promiseCancelled",this)},O.prototype._setWillBeCancelled=function(){this._bitField=8388608|this._bitField},O.prototype._setAsyncGuaranteed=function(){p.hasCustomScheduler()||(this._bitField=134217728|this._bitField)},O.prototype._receiverAt=function(t){var e=0===t?this._receiver0:this[4*t-4+3];if(e!==c)return void 0===e&&this._isBound()?this._boundValue():e},O.prototype._promiseAt=function(t){return this[4*t-4+2]},O.prototype._fulfillmentHandlerAt=function(t){return this[4*t-4+0]},O.prototype._rejectionHandlerAt=function(t){return this[4*t-4+1]},O.prototype._boundValue=function(){},O.prototype._migrateCallback0=function(t){t._bitField;var e=t._fulfillmentHandler0,n=t._rejectionHandler0,r=t._promise0,i=t._receiverAt(0);void 0===i&&(i=c),this._addCallbacks(e,n,r,i,null)},O.prototype._migrateCallbackAt=function(t,e){var n=t._fulfillmentHandlerAt(e),r=t._rejectionHandlerAt(e),i=t._promiseAt(e),o=t._receiverAt(e);void 0===o&&(o=c),this._addCallbacks(n,r,i,o,null)},O.prototype._addCallbacks=function(t,e,n,r,i){var o=this._length();if(o>=65531&&(o=0,this._setLength(0)),0===o)this._promise0=n,this._receiver0=r,"function"==typeof t&&(this._fulfillmentHandler0=null===i?t:u.domainBind(i,t)),"function"==typeof e&&(this._rejectionHandler0=null===i?e:u.domainBind(i,e));else{var a=4*o-4;this[a+2]=n,this[a+3]=r,"function"==typeof t&&(this[a+0]=null===i?t:u.domainBind(i,t)),"function"==typeof e&&(this[a+1]=null===i?e:u.domainBind(i,e))}return this._setLength(o+1),o},O.prototype._proxy=function(t,e){this._addCallbacks(void 0,void 0,e,t,null)},O.prototype._resolveCallback=function(t,e){if(0==(117506048&this._bitField)){if(t===this)return this._rejectCallback(r(),!1);var n=g(t,this);if(!(n instanceof O))return this._fulfill(t);e&&this._propagateFrom(n,2);var i=n._target();if(i!==this){var o=i._bitField;if(0==(50397184&o)){var a=this._length();a>0&&i._migrateCallback0(this);for(var s=1;s<a;++s)i._migrateCallbackAt(this,s);this._setFollowing(),this._setLength(0),this._setFollowee(i)}else if(0!=(33554432&o))this._fulfill(i._value());else if(0!=(16777216&o))this._reject(i._reason());else{var c=new _("late cancellation observer");i._attachExtraTrace(c),this._reject(c)}}else this._reject(r())}},O.prototype._rejectCallback=function(t,e,n){var r=u.ensureErrorObject(t),i=r===t;if(!i&&!n&&E.warnings()){var o="a promise was rejected with a non-error: "+u.classString(t);this._warn(o,!0)}this._attachExtraTrace(r,!!e&&i),this._reject(t)},O.prototype._resolveFromExecutor=function(t){if(t!==v){var e=this;this._captureStackTrace(),this._pushContext();var n=!0,r=this._execute(t,function(t){e._resolveCallback(t)},function(t){e._rejectCallback(t,n)});n=!1,this._popContext(),void 0!==r&&e._rejectCallback(r,!0)}},O.prototype._settlePromiseFromHandler=function(t,e,n,r){var i=r._bitField;if(0==(65536&i)){var o;r._pushContext(),e===y?n&&"number"==typeof n.length?o=F(t).apply(this._boundValue(),n):(o=T).e=new d("cannot .spread() a non-array: "+u.classString(n)):o=F(t).call(e,n);var a=r._popContext();0==(65536&(i=r._bitField))&&(o===m?r._reject(n):o===T?r._rejectCallback(o.e,!1):(E.checkForgottenReturns(o,a,"",r,this),r._resolveCallback(o)))}},O.prototype._target=function(){for(var t=this;t._isFollowing();)t=t._followee();return t},O.prototype._followee=function(){return this._rejectionHandler0},O.prototype._setFollowee=function(t){this._rejectionHandler0=t},O.prototype._settlePromise=function(t,e,n,r){var o=t instanceof O,s=this._bitField,c=0!=(134217728&s);0!=(65536&s)?(o&&t._invokeInternalOnCancel(),n instanceof j&&n.isFinallyHandler()?(n.cancelPromise=t,F(e).call(n,r)===T&&t._reject(T.e)):e===i?t._fulfill(i.call(n)):n instanceof a?n._promiseCancelled(t):o||t instanceof b?t._cancel():n.cancel()):"function"==typeof e?o?(c&&t._setAsyncGuaranteed(),this._settlePromiseFromHandler(e,n,r,t)):e.call(n,r,t):n instanceof a?n._isResolved()||(0!=(33554432&s)?n._promiseFulfilled(r,t):n._promiseRejected(r,t)):o&&(c&&t._setAsyncGuaranteed(),0!=(33554432&s)?t._fulfill(r):t._reject(r))},O.prototype._settlePromiseLateCancellationObserver=function(t){var e=t.handler,n=t.promise,r=t.receiver,i=t.value;"function"==typeof e?n instanceof O?this._settlePromiseFromHandler(e,r,i,n):e.call(r,i,n):n instanceof O&&n._reject(i)},O.prototype._settlePromiseCtx=function(t){this._settlePromise(t.promise,t.handler,t.receiver,t.value)},O.prototype._settlePromise0=function(t,e,n){var r=this._promise0,i=this._receiverAt(0);this._promise0=void 0,this._receiver0=void 0,this._settlePromise(r,t,i,e)},O.prototype._clearCallbackDataAtIndex=function(t){var e=4*t-4;this[e+2]=this[e+3]=this[e+0]=this[e+1]=void 0},O.prototype._fulfill=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(t===this){var n=r();return this._attachExtraTrace(n),this._reject(n)}this._setFulfilled(),this._rejectionHandler0=t,(65535&e)>0&&(0!=(134217728&e)?this._settlePromises():p.settlePromises(this),this._dereferenceTrace())}},O.prototype._reject=function(t){var e=this._bitField;if(!((117506048&e)>>>16)){if(this._setRejected(),this._fulfillmentHandler0=t,this._isFinal())return p.fatalError(t,u.isNode);(65535&e)>0?p.settlePromises(this):this._ensurePossibleRejectionHandled()}},O.prototype._fulfillPromises=function(t,e){for(var n=1;n<t;n++){var r=this._fulfillmentHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},O.prototype._rejectPromises=function(t,e){for(var n=1;n<t;n++){var r=this._rejectionHandlerAt(n),i=this._promiseAt(n),o=this._receiverAt(n);this._clearCallbackDataAtIndex(n),this._settlePromise(i,r,o,e)}},O.prototype._settlePromises=function(){var t=this._bitField,e=65535&t;if(e>0){if(0!=(16842752&t)){var n=this._fulfillmentHandler0;this._settlePromise0(this._rejectionHandler0,n,t),this._rejectPromises(e,n)}else{var r=this._rejectionHandler0;this._settlePromise0(this._fulfillmentHandler0,r,t),this._fulfillPromises(e,r)}this._setLength(0)}this._clearCancellationData()},O.prototype._settledValue=function(){var t=this._bitField;return 0!=(33554432&t)?this._rejectionHandler0:0!=(16777216&t)?this._fulfillmentHandler0:void 0},O.defer=O.pending=function(){E.deprecated("Promise.defer","new Promise");var t=new O(v);return{promise:t,resolve:S,reject:P}},u.notEnumerableProp(O,"_makeSelfResolutionError",r),t("./method")(O,v,g,o,E),t("./bind")(O,v,g,E),t("./cancel")(O,b,o,E),t("./direct_resolve")(O),t("./synchronous_inspection")(O),t("./join")(O,b,g,v,p,s),O.Promise=O,O.version="3.5.2",t("./map.js")(O,b,o,g,v,E),t("./call_get.js")(O),t("./using.js")(O,o,g,C,v,E),t("./timers.js")(O,v,E),t("./generators.js")(O,o,v,g,a,E),t("./nodeify.js")(O),t("./promisify.js")(O,v),t("./props.js")(O,b,g,o),t("./race.js")(O,v,g,o),t("./reduce.js")(O,b,o,g,v,E),t("./settle.js")(O,b,E),t("./some.js")(O,b,o),t("./filter.js")(O,v),t("./each.js")(O,v),t("./any.js")(O),u.toFastProperties(O),u.toFastProperties(O.prototype),R({a:1}),R({b:2}),R({c:3}),R(1),R(function(){}),R(void 0),R(!1),R(new O(v)),E.setBounds(f.firstLineError,u.lastLineError),O}},{"./any.js":1,"./async":2,"./bind":3,"./call_get.js":5,"./cancel":6,"./catch_filter":7,"./context":8,"./debuggability":9,"./direct_resolve":10,"./each.js":11,"./errors":12,"./es5":13,"./filter.js":14,"./finally":15,"./generators.js":16,"./join":17,"./map.js":18,"./method":19,"./nodeback":20,"./nodeify.js":21,"./promise_array":23,"./promisify.js":24,"./props.js":25,"./race.js":27,"./reduce.js":28,"./settle.js":30,"./some.js":31,"./synchronous_inspection":32,"./thenables":33,"./timers.js":34,"./using.js":35,"./util":36}],23:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o){var a=t("./util");function s(t){var r=this._promise=new e(n);t instanceof e&&r._propagateFrom(t,3),r._setOnCancel(this),this._values=t,this._length=0,this._totalResolved=0,this._init(void 0,-2)}return a.isArray,a.inherits(s,o),s.prototype.length=function(){return this._length},s.prototype.promise=function(){return this._promise},s.prototype._init=function t(n,o){var s=r(this._values,this._promise);if(s instanceof e){var c=(s=s._target())._bitField;if(this._values=s,0==(50397184&c))return this._promise._setAsyncGuaranteed(),s._then(t,this._reject,void 0,this,o);if(0==(33554432&c))return 0!=(16777216&c)?this._reject(s._reason()):this._cancel();s=s._value()}if(null!==(s=a.asArray(s)))0!==s.length?this._iterate(s):-5===o?this._resolveEmptyArray():this._resolve(function(t){switch(t){case-2:return[];case-3:return{};case-6:return new Map}}(o));else{var u=i("expecting an array or an iterable object but got "+a.classString(s)).reason();this._promise._rejectCallback(u,!1)}},s.prototype._iterate=function(t){var n=this.getActualLength(t.length);this._length=n,this._values=this.shouldCopyValues()?new Array(n):this._values;for(var i=this._promise,o=!1,a=null,s=0;s<n;++s){var c=r(t[s],i);c instanceof e?(c=c._target(),a=c._bitField):a=null,o?null!==a&&c.suppressUnhandledRejections():null!==a?0==(50397184&a)?(c._proxy(this,s),this._values[s]=c):o=0!=(33554432&a)?this._promiseFulfilled(c._value(),s):0!=(16777216&a)?this._promiseRejected(c._reason(),s):this._promiseCancelled(s):o=this._promiseFulfilled(c,s)}o||i._setAsyncGuaranteed()},s.prototype._isResolved=function(){return null===this._values},s.prototype._resolve=function(t){this._values=null,this._promise._fulfill(t)},s.prototype._cancel=function(){!this._isResolved()&&this._promise._isCancellable()&&(this._values=null,this._promise._cancel())},s.prototype._reject=function(t){this._values=null,this._promise._rejectCallback(t,!1)},s.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},s.prototype._promiseCancelled=function(){return this._cancel(),!0},s.prototype._promiseRejected=function(t){return this._totalResolved++,this._reject(t),!0},s.prototype._resultCancelled=function(){if(!this._isResolved()){var t=this._values;if(this._cancel(),t instanceof e)t.cancel();else for(var n=0;n<t.length;++n)t[n]instanceof e&&t[n].cancel()}},s.prototype.shouldCopyValues=function(){return!0},s.prototype.getActualLength=function(t){return t},s}},{"./util":36}],24:[function(t,e,n){"use strict";e.exports=function(e,n){var r={},i=t("./util"),o=t("./nodeback"),a=i.withAppended,s=i.maybeWrapAsError,c=i.canEvaluate,u=t("./errors").TypeError,l={__isPromisified__:!0},f=new RegExp("^(?:"+["arity","length","name","arguments","caller","callee","prototype","__isPromisified__"].join("|")+")$"),p=function(t){return i.isIdentifier(t)&&"_"!==t.charAt(0)&&"constructor"!==t};function h(t){return!f.test(t)}function d(t){try{return!0===t.__isPromisified__}catch(t){return!1}}function _(t,e,n){var r=i.getDataPropertyOrDefault(t,e+n,l);return!!r&&d(r)}function v(t,e,n,r){for(var o=i.inheritedDataKeys(t),a=[],s=0;s<o.length;++s){var c=o[s],l=t[c],f=r===p||p(c,l,t);"function"!=typeof l||d(l)||_(t,c,e)||!r(c,l,t,f)||a.push(c,l)}return function(t,e,n){for(var r=0;r<t.length;r+=2){var i=t[r];if(n.test(i))for(var o=i.replace(n,""),a=0;a<t.length;a+=2)if(t[a]===o)throw new u("Cannot promisify an API that has normal methods with '%s'-suffix\n\n See http://goo.gl/MqrFmX\n".replace("%s",e))}}(a,e,n),a}var y=function(t){return t.replace(/([$])/,"\\$")},m=c?void 0:function(t,c,u,l,f,p){var h=function(){return this}(),d=t;function _(){var i=c;c===r&&(i=this);var u=new e(n);u._captureStackTrace();var l="string"==typeof d&&this!==h?this[d]:t,f=o(u,p);try{l.apply(i,a(arguments,f))}catch(t){u._rejectCallback(s(t),!0,!0)}return u._isFateSealed()||u._setAsyncGuaranteed(),u}return"string"==typeof d&&(t=l),i.notEnumerableProp(_,"__isPromisified__",!0),_};function g(t,e,n,o,a){for(var s=new RegExp(y(e)+"$"),c=v(t,e,s,n),u=0,l=c.length;u<l;u+=2){var f=c[u],p=c[u+1],h=f+e;if(o===m)t[h]=m(f,r,f,p,e,a);else{var d=o(p,function(){return m(f,r,f,p,e,a)});i.notEnumerableProp(d,"__isPromisified__",!0),t[h]=d}}return i.toFastProperties(t),t}e.promisify=function(t,e){if("function"!=typeof t)throw new u("expecting a function but got "+i.classString(t));if(d(t))return t;var n=void 0===(e=Object(e)).context?r:e.context,o=!!e.multiArgs,a=function(t,e,n){return m(t,e,void 0,t,null,n)}(t,n,o);return i.copyDescriptors(t,a,h),a},e.promisifyAll=function(t,e){if("function"!=typeof t&&"object"!=typeof t)throw new u("the target of promisifyAll must be an object or a function\n\n See http://goo.gl/MqrFmX\n");var n=!!(e=Object(e)).multiArgs,r=e.suffix;"string"!=typeof r&&(r="Async");var o=e.filter;"function"!=typeof o&&(o=p);var a=e.promisifier;if("function"!=typeof a&&(a=m),!i.isIdentifier(r))throw new RangeError("suffix must be a valid identifier\n\n See http://goo.gl/MqrFmX\n");for(var s=i.inheritedDataKeys(t),c=0;c<s.length;++c){var l=t[s[c]];"constructor"!==s[c]&&i.isClass(l)&&(g(l.prototype,r,o,a,n),g(l,r,o,a,n))}return g(t,r,o,a,n)}}},{"./errors":12,"./nodeback":20,"./util":36}],25:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o,a=t("./util"),s=a.isObject,c=t("./es5");"function"==typeof Map&&(o=Map);var u=function(){var t=0,e=0;function n(n,r){this[t]=n,this[t+e]=r,t++}return function(r){e=r.size,t=0;var i=new Array(2*r.size);return r.forEach(n,i),i}}();function l(t){var e,n=!1;if(void 0!==o&&t instanceof o)e=u(t),n=!0;else{var r=c.keys(t),i=r.length;e=new Array(2*i);for(var a=0;a<i;++a){var s=r[a];e[a]=t[s],e[a+i]=s}}this.constructor$(e),this._isMap=n,this._init$(void 0,n?-6:-3)}function f(t){var n,o=r(t);return s(o)?(n=o instanceof e?o._then(e.props,void 0,void 0,void 0,void 0):new l(o).promise(),o instanceof e&&n._propagateFrom(o,2),n):i("cannot await properties of a non-object\n\n See http://goo.gl/MqrFmX\n")}a.inherits(l,n),l.prototype._init=function(){},l.prototype._promiseFulfilled=function(t,e){this._values[e]=t;var n=++this._totalResolved;if(n>=this._length){var r;if(this._isMap)r=function(t){for(var e=new o,n=t.length/2|0,r=0;r<n;++r){var i=t[n+r],a=t[r];e.set(i,a)}return e}(this._values);else{r={};for(var i=this.length(),a=0,s=this.length();a<s;++a)r[this._values[a+i]]=this._values[a]}return this._resolve(r),!0}return!1},l.prototype.shouldCopyValues=function(){return!1},l.prototype.getActualLength=function(t){return t>>1},e.prototype.props=function(){return f(this)},e.props=function(t){return f(t)}}},{"./es5":13,"./util":36}],26:[function(t,e,n){"use strict";function r(t){this._capacity=t,this._length=0,this._front=0}r.prototype._willBeOverCapacity=function(t){return this._capacity<t},r.prototype._pushOne=function(t){var e=this.length();this._checkCapacity(e+1);var n=this._front+e&this._capacity-1;this[n]=t,this._length=e+1},r.prototype.push=function(t,e,n){var r=this.length()+3;if(this._willBeOverCapacity(r))return this._pushOne(t),this._pushOne(e),void this._pushOne(n);var i=this._front+r-3;this._checkCapacity(r);var o=this._capacity-1;this[i+0&o]=t,this[i+1&o]=e,this[i+2&o]=n,this._length=r},r.prototype.shift=function(){var t=this._front,e=this[t];return this[t]=void 0,this._front=t+1&this._capacity-1,this._length--,e},r.prototype.length=function(){return this._length},r.prototype._checkCapacity=function(t){this._capacity<t&&this._resizeTo(this._capacity<<1)},r.prototype._resizeTo=function(t){var e=this._capacity;this._capacity=t;var n=this._front,r=this._length,i=n+r&e-1;!function(t,e,n,r,i){for(var o=0;o<i;++o)n[o+r]=t[o+e],t[o+e]=void 0}(this,0,this,e,i)},e.exports=r},{}],27:[function(t,e,n){"use strict";e.exports=function(e,n,r,i){var o=t("./util"),a=function(t){return t.then(function(e){return s(e,t)})};function s(t,s){var c=r(t);if(c instanceof e)return a(c);if(null===(t=o.asArray(t)))return i("expecting an array or an iterable object but got "+o.classString(t));var u=new e(n);void 0!==s&&u._propagateFrom(s,3);for(var l=u._fulfill,f=u._reject,p=0,h=t.length;p<h;++p){var d=t[p];(void 0!==d||p in t)&&e.cast(d)._then(l,f,void 0,u,null)}return u}e.race=function(t){return s(t,void 0)},e.prototype.race=function(){return s(this,void 0)}}},{"./util":36}],28:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=e._getDomain,c=t("./util"),u=c.tryCatch;function l(t,n,r,i){this.constructor$(t);var a=s();this._fn=null===a?n:c.domainBind(a,n),void 0!==r&&(r=e.resolve(r))._attachCancellationCallback(this),this._initialValue=r,this._currentCancellable=null,this._eachValues=i===o?Array(this._length):0===i?null:void 0,this._promise._captureStackTrace(),this._init$(void 0,-5)}function f(t,e){this.isFulfilled()?e._resolve(t):e._reject(t)}function p(t,e,n,i){if("function"!=typeof e)return r("expecting a function but got "+c.classString(e));var o=new l(t,e,n,i);return o.promise()}function h(t){this.accum=t,this.array._gotAccum(t);var n=i(this.value,this.array._promise);return n instanceof e?(this.array._currentCancellable=n,n._then(d,void 0,void 0,this,void 0)):d.call(this,n)}function d(t){var n,r=this.array,i=r._promise,o=u(r._fn);i._pushContext(),(n=void 0!==r._eachValues?o.call(i._boundValue(),t,this.index,this.length):o.call(i._boundValue(),this.accum,t,this.index,this.length))instanceof e&&(r._currentCancellable=n);var s=i._popContext();return a.checkForgottenReturns(n,s,void 0!==r._eachValues?"Promise.each":"Promise.reduce",i),n}c.inherits(l,n),l.prototype._gotAccum=function(t){void 0!==this._eachValues&&null!==this._eachValues&&t!==o&&this._eachValues.push(t)},l.prototype._eachComplete=function(t){return null!==this._eachValues&&this._eachValues.push(t),this._eachValues},l.prototype._init=function(){},l.prototype._resolveEmptyArray=function(){this._resolve(void 0!==this._eachValues?this._eachValues:this._initialValue)},l.prototype.shouldCopyValues=function(){return!1},l.prototype._resolve=function(t){this._promise._resolveCallback(t),this._values=null},l.prototype._resultCancelled=function(t){if(t===this._initialValue)return this._cancel();this._isResolved()||(this._resultCancelled$(),this._currentCancellable instanceof e&&this._currentCancellable.cancel(),this._initialValue instanceof e&&this._initialValue.cancel())},l.prototype._iterate=function(t){var n,r;this._values=t;var i=t.length;if(void 0!==this._initialValue?(n=this._initialValue,r=0):(n=e.resolve(t[0]),r=1),this._currentCancellable=n,!n.isRejected())for(;r<i;++r){var o={accum:null,value:t[r],index:r,length:i,array:this};n=n._then(h,void 0,void 0,o,void 0)}void 0!==this._eachValues&&(n=n._then(this._eachComplete,void 0,void 0,this,void 0)),n._then(f,f,void 0,n,this)},e.prototype.reduce=function(t,e){return p(this,t,e,null)},e.reduce=function(t,e,n,r){return p(t,e,n,r)}}},{"./util":36}],29:[function(t,i,o){"use strict";var a,s=t("./util"),c=s.getNativePromise();if(s.isNode&&"undefined"==typeof MutationObserver){var u=n.setImmediate,l=e.nextTick;a=s.isRecentNode?function(t){u.call(n,t)}:function(t){l.call(e,t)}}else if("function"==typeof c&&"function"==typeof c.resolve){var f=c.resolve();a=function(t){f.then(t)}}else a="undefined"==typeof MutationObserver||"undefined"!=typeof window&&window.navigator&&(window.navigator.standalone||window.cordova)?void 0!==r?function(t){r(t)}:"undefined"!=typeof setTimeout?function(t){setTimeout(t,0)}:function(){throw new Error("No async scheduler available\n\n See http://goo.gl/MqrFmX\n")}:function(){var t=document.createElement("div"),e={attributes:!0},n=!1,r=document.createElement("div"),i=new MutationObserver(function(){t.classList.toggle("foo"),n=!1});return i.observe(r,e),function(i){var o=new MutationObserver(function(){o.disconnect(),i()});o.observe(t,e),n||(n=!0,r.classList.toggle("foo"))}}();i.exports=a},{"./util":36}],30:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=e.PromiseInspection,o=t("./util");function a(t){this.constructor$(t)}o.inherits(a,n),a.prototype._promiseResolved=function(t,e){this._values[t]=e;var n=++this._totalResolved;return n>=this._length&&(this._resolve(this._values),!0)},a.prototype._promiseFulfilled=function(t,e){var n=new i;return n._bitField=33554432,n._settledValueField=t,this._promiseResolved(e,n)},a.prototype._promiseRejected=function(t,e){var n=new i;return n._bitField=16777216,n._settledValueField=t,this._promiseResolved(e,n)},e.settle=function(t){return r.deprecated(".settle()",".reflect()"),new a(t).promise()},e.prototype.settle=function(){return e.settle(this)}}},{"./util":36}],31:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=t("./errors").RangeError,a=t("./errors").AggregateError,s=i.isArray,c={};function u(t){this.constructor$(t),this._howMany=0,this._unwrap=!1,this._initialized=!1}function l(t,e){if((0|e)!==e||e<0)return r("expecting a positive integer\n\n See http://goo.gl/MqrFmX\n");var n=new u(t),i=n.promise();return n.setHowMany(e),n.init(),i}i.inherits(u,n),u.prototype._init=function(){if(this._initialized)if(0!==this._howMany){this._init$(void 0,-5);var t=s(this._values);!this._isResolved()&&t&&this._howMany>this._canPossiblyFulfill()&&this._reject(this._getRangeError(this.length()))}else this._resolve([])},u.prototype.init=function(){this._initialized=!0,this._init()},u.prototype.setUnwrap=function(){this._unwrap=!0},u.prototype.howMany=function(){return this._howMany},u.prototype.setHowMany=function(t){this._howMany=t},u.prototype._promiseFulfilled=function(t){return this._addFulfilled(t),this._fulfilled()===this.howMany()&&(this._values.length=this.howMany(),1===this.howMany()&&this._unwrap?this._resolve(this._values[0]):this._resolve(this._values),!0)},u.prototype._promiseRejected=function(t){return this._addRejected(t),this._checkOutcome()},u.prototype._promiseCancelled=function(){return this._values instanceof e||null==this._values?this._cancel():(this._addRejected(c),this._checkOutcome())},u.prototype._checkOutcome=function(){if(this.howMany()>this._canPossiblyFulfill()){for(var t=new a,e=this.length();e<this._values.length;++e)this._values[e]!==c&&t.push(this._values[e]);return t.length>0?this._reject(t):this._cancel(),!0}return!1},u.prototype._fulfilled=function(){return this._totalResolved},u.prototype._rejected=function(){return this._values.length-this.length()},u.prototype._addRejected=function(t){this._values.push(t)},u.prototype._addFulfilled=function(t){this._values[this._totalResolved++]=t},u.prototype._canPossiblyFulfill=function(){return this.length()-this._rejected()},u.prototype._getRangeError=function(t){var e="Input array must contain at least "+this._howMany+" items but contains only "+t+" items";return new o(e)},u.prototype._resolveEmptyArray=function(){this._reject(this._getRangeError(0))},e.some=function(t,e){return l(t,e)},e.prototype.some=function(t){return l(this,t)},e._SomePromiseArray=u}},{"./errors":12,"./util":36}],32:[function(t,e,n){"use strict";e.exports=function(t){function e(t){void 0!==t?(t=t._target(),this._bitField=t._bitField,this._settledValueField=t._isFateSealed()?t._settledValue():void 0):(this._bitField=0,this._settledValueField=void 0)}e.prototype._settledValue=function(){return this._settledValueField};var n=e.prototype.value=function(){if(!this.isFulfilled())throw new TypeError("cannot get fulfillment value of a non-fulfilled promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},r=e.prototype.error=e.prototype.reason=function(){if(!this.isRejected())throw new TypeError("cannot get rejection reason of a non-rejected promise\n\n See http://goo.gl/MqrFmX\n");return this._settledValue()},i=e.prototype.isFulfilled=function(){return 0!=(33554432&this._bitField)},o=e.prototype.isRejected=function(){return 0!=(16777216&this._bitField)},a=e.prototype.isPending=function(){return 0==(50397184&this._bitField)},s=e.prototype.isResolved=function(){return 0!=(50331648&this._bitField)};e.prototype.isCancelled=function(){return 0!=(8454144&this._bitField)},t.prototype.__isCancelled=function(){return 65536==(65536&this._bitField)},t.prototype._isCancelled=function(){return this._target().__isCancelled()},t.prototype.isCancelled=function(){return 0!=(8454144&this._target()._bitField)},t.prototype.isPending=function(){return a.call(this._target())},t.prototype.isRejected=function(){return o.call(this._target())},t.prototype.isFulfilled=function(){return i.call(this._target())},t.prototype.isResolved=function(){return s.call(this._target())},t.prototype.value=function(){return n.call(this._target())},t.prototype.reason=function(){var t=this._target();return t._unsetRejectionIsUnhandled(),r.call(t)},t.prototype._value=function(){return this._settledValue()},t.prototype._reason=function(){return this._unsetRejectionIsUnhandled(),this._settledValue()},t.PromiseInspection=e}},{}],33:[function(t,e,n){"use strict";e.exports=function(e,n){var r=t("./util"),i=r.errorObj,o=r.isObject,a={}.hasOwnProperty;return function(t,s){if(o(t)){if(t instanceof e)return t;var c=function(t){try{return function(t){return t.then}(t)}catch(t){return i.e=t,i}}(t);if(c===i){s&&s._pushContext();var u=e.reject(c.e);return s&&s._popContext(),u}if("function"==typeof c){if(function(t){try{return a.call(t,"_promise0")}catch(t){return!1}}(t)){var u=new e(n);return t._then(u._fulfill,u._reject,void 0,u,null),u}return function(t,o,a){var s=new e(n),c=s;a&&a._pushContext(),s._captureStackTrace(),a&&a._popContext();var u=!0,l=r.tryCatch(o).call(t,function(t){s&&(s._resolveCallback(t),s=null)},function(t){s&&(s._rejectCallback(t,u,!0),s=null)});return u=!1,s&&l===i&&(s._rejectCallback(l.e,!0,!0),s=null),c}(t,c,s)}}return t}}},{"./util":36}],34:[function(t,e,n){"use strict";e.exports=function(e,n,r){var i=t("./util"),o=e.TimeoutError;function a(t){this.handle=t}a.prototype._resultCancelled=function(){clearTimeout(this.handle)};var s=function(t){return c(+this).thenReturn(t)},c=e.delay=function(t,i){var o,c;return void 0!==i?(o=e.resolve(i)._then(s,null,null,t,void 0),r.cancellation()&&i instanceof e&&o._setOnCancel(i)):(o=new e(n),c=setTimeout(function(){o._fulfill()},+t),r.cancellation()&&o._setOnCancel(new a(c)),o._captureStackTrace()),o._setAsyncGuaranteed(),o};function u(t){return clearTimeout(this.handle),t}function l(t){throw clearTimeout(this.handle),t}e.prototype.delay=function(t){return c(t,this)},e.prototype.timeout=function(t,e){var n,s;t=+t;var c=new a(setTimeout(function(){n.isPending()&&function(t,e,n){var r;r="string"!=typeof e?e instanceof Error?e:new o("operation timed out"):new o(e),i.markAsOriginatingFromRejection(r),t._attachExtraTrace(r),t._reject(r),null!=n&&n.cancel()}(n,e,s)},t));return r.cancellation()?(s=this.then(),(n=s._then(u,l,void 0,c,void 0))._setOnCancel(c)):n=this._then(u,l,void 0,c,void 0),n}}},{"./util":36}],35:[function(t,e,n){"use strict";e.exports=function(e,n,r,i,o,a){var s=t("./util"),c=t("./errors").TypeError,u=t("./util").inherits,l=s.errorObj,f=s.tryCatch,p={};function h(t){setTimeout(function(){throw t},0)}function d(t,n){var i=0,a=t.length,s=new e(o);return function o(){if(i>=a)return s._fulfill();var c=function(t){var e=r(t);return e!==t&&"function"==typeof t._isDisposable&&"function"==typeof t._getDisposer&&t._isDisposable()&&e._setDisposable(t._getDisposer()),e}(t[i++]);if(c instanceof e&&c._isDisposable()){try{c=r(c._getDisposer().tryDispose(n),t.promise)}catch(t){return h(t)}if(c instanceof e)return c._then(o,h,null,null,null)}o()}(),s}function _(t,e,n){this._data=t,this._promise=e,this._context=n}function v(t,e,n){this.constructor$(t,e,n)}function y(t){return _.isDisposer(t)?(this.resources[this.index]._setDisposable(t),t.promise()):t}function m(t){this.length=t,this.promise=null,this[t-1]=null}_.prototype.data=function(){return this._data},_.prototype.promise=function(){return this._promise},_.prototype.resource=function(){return this.promise().isFulfilled()?this.promise().value():p},_.prototype.tryDispose=function(t){var e=this.resource(),n=this._context;void 0!==n&&n._pushContext();var r=e!==p?this.doDispose(e,t):null;return void 0!==n&&n._popContext(),this._promise._unsetDisposable(),this._data=null,r},_.isDisposer=function(t){return null!=t&&"function"==typeof t.resource&&"function"==typeof t.tryDispose},u(v,_),v.prototype.doDispose=function(t,e){var n=this.data();return n.call(t,t,e)},m.prototype._resultCancelled=function(){for(var t=this.length,n=0;n<t;++n){var r=this[n];r instanceof e&&r.cancel()}},e.using=function(){var t=arguments.length;if(t<2)return n("you must pass at least 2 arguments to Promise.using");var i,o=arguments[t-1];if("function"!=typeof o)return n("expecting a function but got "+s.classString(o));var c=!0;2===t&&Array.isArray(arguments[0])?(i=arguments[0],t=i.length,c=!1):(i=arguments,t--);for(var u=new m(t),p=0;p<t;++p){var h=i[p];if(_.isDisposer(h)){var v=h;(h=h.promise())._setDisposable(v)}else{var g=r(h);g instanceof e&&(h=g._then(y,null,null,{resources:u,index:p},void 0))}u[p]=h}for(var b=new Array(u.length),p=0;p<b.length;++p)b[p]=e.resolve(u[p]).reflect();var w=e.all(b).then(function(t){for(var e=0;e<t.length;++e){var n=t[e];if(n.isRejected())return l.e=n.error(),l;if(!n.isFulfilled())return void w.cancel();t[e]=n.value()}C._pushContext(),o=f(o);var r=c?o.apply(void 0,t):o(t),i=C._popContext();return a.checkForgottenReturns(r,i,"Promise.using",C),r}),C=w.lastly(function(){var t=new e.PromiseInspection(w);return d(u,t)});return u.promise=C,C._setOnCancel(u),C},e.prototype._setDisposable=function(t){this._bitField=131072|this._bitField,this._disposer=t},e.prototype._isDisposable=function(){return(131072&this._bitField)>0},e.prototype._getDisposer=function(){return this._disposer},e.prototype._unsetDisposable=function(){this._bitField=-131073&this._bitField,this._disposer=void 0},e.prototype.disposer=function(t){if("function"==typeof t)return new v(t,this,i());throw new c}}},{"./errors":12,"./util":36}],36:[function(t,r,i){"use strict";var o=t("./es5"),a="undefined"==typeof navigator,s={e:{}},c,u="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:void 0!==this?this:null;function l(){try{var t=c;return c=null,t.apply(this,arguments)}catch(t){return s.e=t,s}}function f(t){return c=t,l}var p=function(t,e){var n={}.hasOwnProperty;function r(){for(var r in this.constructor=t,this.constructor$=e,e.prototype)n.call(e.prototype,r)&&"$"!==r.charAt(r.length-1)&&(this[r+"$"]=e.prototype[r])}return r.prototype=e.prototype,t.prototype=new r,t.prototype};function h(t){return null==t||!0===t||!1===t||"string"==typeof t||"number"==typeof t}function d(t){return"function"==typeof t||"object"==typeof t&&null!==t}function _(t){return h(t)?new Error(T(t)):t}function v(t,e){var n,r=t.length,i=new Array(r+1);for(n=0;n<r;++n)i[n]=t[n];return i[n]=e,i}function y(t,e,n){if(!o.isES5)return{}.hasOwnProperty.call(t,e)?t[e]:void 0;var r=Object.getOwnPropertyDescriptor(t,e);return null!=r?null==r.get&&null==r.set?r.value:n:void 0}function m(t,e,n){if(h(t))return t;var r={value:n,configurable:!0,enumerable:!1,writable:!0};return o.defineProperty(t,e,r),t}function g(t){throw t}var b=function(){var t=[Array.prototype,Object.prototype,Function.prototype],e=function(e){for(var n=0;n<t.length;++n)if(t[n]===e)return!0;return!1};if(o.isES5){var n=Object.getOwnPropertyNames;return function(t){for(var r=[],i=Object.create(null);null!=t&&!e(t);){var a;try{a=n(t)}catch(t){return r}for(var s=0;s<a.length;++s){var c=a[s];if(!i[c]){i[c]=!0;var u=Object.getOwnPropertyDescriptor(t,c);null!=u&&null==u.get&&null==u.set&&r.push(c)}}t=o.getPrototypeOf(t)}return r}}var r={}.hasOwnProperty;return function(n){if(e(n))return[];var i=[];t:for(var o in n)if(r.call(n,o))i.push(o);else{for(var a=0;a<t.length;++a)if(r.call(t[a],o))continue t;i.push(o)}return i}}(),w=/this\s*\.\s*\S+\s*=/;function C(t){try{if("function"==typeof t){var e=o.names(t.prototype),n=o.isES5&&e.length>1,r=e.length>0&&!(1===e.length&&"constructor"===e[0]),i=w.test(t+"")&&o.names(t).length>0;if(n||r||i)return!0}return!1}catch(t){return!1}}function E(t){function e(){}e.prototype=t;var n=new e;function r(){return typeof n.foo}return r(),r(),t}var j=/^[a-z$_][a-z$_0-9]*$/i;function k(t){return j.test(t)}function x(t,e,n){for(var r=new Array(t),i=0;i<t;++i)r[i]=e+i+n;return r}function T(t){try{return t+""}catch(t){return"[no string representation]"}}function F(t){return t instanceof Error||null!==t&&"object"==typeof t&&"string"==typeof t.message&&"string"==typeof t.name}function O(t){try{m(t,"isOperational",!0)}catch(t){}}function S(t){return null!=t&&(t instanceof Error.__BluebirdErrorTypes__.OperationalError||!0===t.isOperational)}function P(t){return F(t)&&o.propertyIsWritable(t,"stack")}var R="stack"in new Error?function(t){return P(t)?t:new Error(T(t))}:function(t){if(P(t))return t;try{throw new Error(T(t))}catch(t){return t}};function A(t){return{}.toString.call(t)}function L(t,e,n){for(var r=o.names(t),i=0;i<r.length;++i){var a=r[i];if(n(a))try{o.defineProperty(e,a,o.getDescriptor(t,a))}catch(t){}}}var I=function(t){return o.isArray(t)?t:null};if("undefined"!=typeof Symbol&&Symbol.iterator){var N="function"==typeof Array.from?function(t){return Array.from(t)}:function(t){for(var e,n=[],r=t[Symbol.iterator]();!(e=r.next()).done;)n.push(e.value);return n};I=function(t){return o.isArray(t)?t:null!=t&&"function"==typeof t[Symbol.iterator]?N(t):null}}var D=void 0!==e&&"[object process]"===A(e).toLowerCase(),M=void 0!==e&&!0;function V(t){return M?Object({NODE_ENV:"production"})[t]:void 0}function H(){if("function"==typeof Promise)try{var t=new Promise(function(){});if("[object Promise]"==={}.toString.call(t))return Promise}catch(t){}}function U(t,e){return t.bind(e)}var B={isClass:C,isIdentifier:k,inheritedDataKeys:b,getDataPropertyOrDefault:y,thrower:g,isArray:o.isArray,asArray:I,notEnumerableProp:m,isPrimitive:h,isObject:d,isError:F,canEvaluate:a,errorObj:s,tryCatch:f,inherits:p,withAppended:v,maybeWrapAsError:_,toFastProperties:E,filledRange:x,toString:T,canAttachTrace:P,ensureErrorObject:R,originatesFromRejection:S,markAsOriginatingFromRejection:O,classString:A,copyDescriptors:L,hasDevTools:"undefined"!=typeof chrome&&chrome&&"function"==typeof chrome.loadTimes,isNode:D,hasEnvVariables:M,env:V,global:u,getNativePromise:H,domainBind:U};B.isRecentNode=B.isNode&&function(){var t=e.versions.node.split(".").map(Number);return 0===t[0]&&t[1]>10||t[0]>0}(),B.isNode&&B.toFastProperties(e);try{throw new Error}catch(t){B.lastLineError=t}r.exports=B},{"./es5":13}]},{},[4])(4)}(),"undefined"!=typeof window&&null!==window?window.P=window.Promise:"undefined"!=typeof self&&null!==self&&(self.P=self.Promise)}).call(this,n(54),n(15),n(187).setImmediate)},94:function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},95:function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},96:function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},99:function(t,e,n){var r,i,o;i=[],void 0===(o="function"==typeof(r=function(){var t=XMLHttpRequest;if(!t)throw new Error("missing XMLHttpRequest");function e(o,a){if("function"!=typeof a)throw new Error("Bad callback given: "+a);if(!o)throw new Error("No options given");var s=o.onResponse;if((o="string"==typeof o?{uri:o}:JSON.parse(JSON.stringify(o))).onResponse=s,o.verbose&&(e.log=function(){var t,e,n={},o=["trace","debug","info","warn","error"];for(e=0;e<o.length;e++)n[t=o[e]]=r,"undefined"!=typeof console&&console&&console[t]&&(n[t]=i(console,t));return n}()),o.url&&(o.uri=o.url,delete o.url),!o.uri&&""!==o.uri)throw new Error("options.uri is a required argument");if("string"!=typeof o.uri)throw new Error("options.uri must be a string");for(var c=["proxy","_redirectsFollowed","maxRedirects","followRedirect"],u=0;u<c.length;u++)if(o[c[u]])throw new Error("options."+c[u]+" is not supported");if(o.callback=a,o.method=o.method||"GET",o.headers=o.headers||{},o.body=o.body||null,o.timeout=o.timeout||e.DEFAULT_TIMEOUT,o.headers.host)throw new Error("Options.headers.host is not supported");o.json&&(o.headers.accept=o.headers.accept||"application/json","GET"!==o.method&&(o.headers["content-type"]="application/json"),"boolean"!=typeof o.json?o.body=JSON.stringify(o.json):"string"!=typeof o.body&&(o.body=JSON.stringify(o.body)));var l=function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(encodeURIComponent(n)+"="+encodeURIComponent(t[n]));return e.join("&")};if(o.qs){var f="string"==typeof o.qs?o.qs:l(o.qs);-1!==o.uri.indexOf("?")?o.uri=o.uri+"&"+f:o.uri=o.uri+"?"+f}if(o.form){if("string"==typeof o.form)throw"form name unsupported";if("POST"===o.method){var p=(o.encoding||"application/x-www-form-urlencoded").toLowerCase();switch(o.headers["content-type"]=p,p){case"application/x-www-form-urlencoded":o.body=l(o.form).replace(/%20/g,"+");break;case"multipart/form-data":var h=function(t){var e={};e.boundry="-------------------------------"+Math.floor(1e9*Math.random());var n=[];for(var r in t)t.hasOwnProperty(r)&&n.push("--"+e.boundry+'\nContent-Disposition: form-data; name="'+r+'"\n\n'+t[r]+"\n");return n.push("--"+e.boundry+"--"),e.body=n.join(""),e.length=e.body.length,e.type="multipart/form-data; boundary="+e.boundry,e}(o.form);o.body=h.body,o.headers["content-type"]=h.type;break;default:throw new Error("unsupported encoding:"+p)}}}return o.onResponse=o.onResponse||r,!0===o.onResponse&&(o.onResponse=a,o.callback=r),!o.headers.authorization&&o.auth&&(o.headers.authorization="Basic "+function(t){var e,n,r,i,o,a,s,c,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",l=0,f=0,p="",h=[];if(!t)return t;do{e=t.charCodeAt(l++),n=t.charCodeAt(l++),r=t.charCodeAt(l++),i=(c=e<<16|n<<8|r)>>18&63,o=c>>12&63,a=c>>6&63,s=63&c,h[f++]=u.charAt(i)+u.charAt(o)+u.charAt(a)+u.charAt(s)}while(l<t.length);switch(p=h.join(""),t.length%3){case 1:p=p.slice(0,-2)+"==";break;case 2:p=p.slice(0,-1)+"="}return p}(o.auth.username+":"+o.auth.password)),function(r){var i=new t,o=!1,a=function(t){var e,n=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/;try{e=location.href}catch(t){(e=document.createElement("a")).href="",e=e.href}var r=n.exec(e.toLowerCase())||[],i=n.exec(t.toLowerCase());return!(!i||i[1]==r[1]&&i[2]==r[2]&&(i[3]||("http:"===i[1]?80:443))==(r[3]||("http:"===r[1]?80:443)))}(r.uri),s="withCredentials"in i;if(n+=1,i.seq_id=n,i.id=n+": "+r.method+" "+r.uri,i._id=i.id,a&&!s){var c=new Error("Browser does not support cross-origin request: "+r.uri);return c.cors="unsupported",r.callback(c,i)}i.timeoutTimer=setTimeout(function(){o=!0;var t=new Error("ETIMEDOUT");return t.code="ETIMEDOUT",t.duration=r.timeout,e.log.error("Timeout",{id:i._id,milliseconds:r.timeout}),r.callback(t,i)},r.timeout);var u={response:!1,loading:!1,end:!1};return i.onreadystatechange=function(n){if(o)return e.log.debug("Ignoring timed out state change",{state:i.readyState,id:i.id});if(e.log.debug("State change",{state:i.readyState,id:i.id,timed_out:o}),i.readyState===t.OPENED)for(var a in e.log.debug("Request started",{id:i.id}),r.headers)i.setRequestHeader(a,r.headers[a]);else i.readyState===t.HEADERS_RECEIVED?l():i.readyState===t.LOADING?(l(),f()):i.readyState===t.DONE&&(l(),f(),function(){if(!u.end){if(u.end=!0,e.log.debug("Request done",{id:i.id}),i.body=i.responseText,r.json)try{i.body=JSON.parse(i.responseText)}catch(t){return r.callback(t,i)}r.callback(null,i,i.body)}}())},i.open(r.method,r.uri,!0),a&&(i.withCredentials=!!r.withCredentials),i.send(r.body),i;function l(){if(!u.response){if(u.response=!0,e.log.debug("Got response",{id:i.id,status:i.status}),clearTimeout(i.timeoutTimer),i.statusCode=i.status,a&&0==i.statusCode){var t=new Error("CORS request rejected: "+r.uri);return t.cors="rejected",u.loading=!0,u.end=!0,r.callback(t,i)}r.onResponse(null,i)}}function f(){u.loading||(u.loading=!0,e.log.debug("Response body loading",{id:i.id}))}}(o)}e.log={trace:r,debug:r,info:r,warn:r,error:r};var n=0;function r(){}function i(t,e){return function(n,r){return"object"==typeof r&&(n+=" "+JSON.stringify(r)),t[e].call(t,n)}}return e.withCredentials=!1,e.DEFAULT_TIMEOUT=18e4,e.defaults=function(t,n){var r=function(e){return function(n,r){for(var i in n="string"==typeof n?{uri:n}:JSON.parse(JSON.stringify(n)),t)void 0===n[i]&&(n[i]=t[i]);return e(n,r)}},i=r(e);return i.get=r(e.get),i.post=r(e.post),i.put=r(e.put),i.head=r(e.head),i},["get","put","post","head"].forEach(function(t){var n=t.toUpperCase();e[t.toLowerCase()]=function(t){"string"==typeof t?t={method:n,uri:t}:(t=JSON.parse(JSON.stringify(t))).method=n;var r=[t].concat(Array.prototype.slice.apply(arguments,[1]));return e.apply(this,r)}}),e.couch=function(t,n){return"string"==typeof t&&(t={uri:t}),t.json=!0,t.body&&(t.json=t.body),delete t.body,n=n||r,e(t,function(t,e,r){if(t)return n(t,e,r);if((e.statusCode<200||e.statusCode>299)&&r.error){for(var i in t=new Error("CouchDB error: "+(r.error.reason||r.error.error)),r)t[i]=r[i];return n(t,e,r)}return n(t,e,r)})},e})?r.apply(e,i):r)||(t.exports=o)}}); +//# sourceMappingURL=mobileguide.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js.map b/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js.map new file mode 100644 index 0000000..b609586 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/mobileguide.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap","node_modules/core-js/library/modules/_to-integer.js","node_modules/core-js/library/modules/_defined.js","node_modules/core-js/library/modules/_to-primitive.js","node_modules/core-js/library/modules/_to-length.js","node_modules/core-js/library/modules/_shared-key.js","node_modules/core-js/library/modules/_shared.js","node_modules/core-js/library/modules/_enum-bug-keys.js","node_modules/core-js/library/modules/_dom-create.js","node_modules/babel-runtime/core-js/object/keys.js","(webpack)/buildin/global.js","node_modules/core-js/library/modules/_ie8-dom-define.js","node_modules/core-js/library/modules/_object-keys-internal.js","node_modules/core-js/library/modules/_iobject.js","node_modules/core-js/library/modules/_core.js","node_modules/timers-browserify/main.js","src/vector/mobile_guide/index.js","node_modules/babel-runtime/regenerator/index.js","node_modules/core-js/library/modules/_array-includes.js","node_modules/core-js/library/modules/_to-absolute-index.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime-module.js","node_modules/babel-runtime/node_modules/regenerator-runtime/runtime.js","node_modules/setimmediate/setImmediate.js","node_modules/core-js/library/fn/object/keys.js","node_modules/core-js/library/modules/es6.object.keys.js","node_modules/core-js/library/modules/_export.js","node_modules/core-js/library/modules/_global.js","node_modules/core-js/library/modules/_is-object.js","src/vector/getconfig.js","node_modules/core-js/library/modules/_descriptors.js","node_modules/core-js/library/modules/_object-dp.js","node_modules/core-js/library/modules/_an-object.js","node_modules/process/browser.js","node_modules/core-js/library/modules/_fails.js","node_modules/core-js/library/modules/_to-iobject.js","node_modules/core-js/library/modules/_hide.js","node_modules/core-js/library/modules/_has.js","node_modules/core-js/library/modules/_ctx.js","node_modules/core-js/library/modules/_object-sap.js","node_modules/core-js/library/modules/_property-desc.js","node_modules/core-js/library/modules/_object-keys.js","node_modules/core-js/library/modules/_to-object.js","node_modules/bluebird/js/browser/bluebird.js","node_modules/core-js/library/modules/_a-function.js","node_modules/core-js/library/modules/_cof.js","node_modules/core-js/library/modules/_uid.js","node_modules/browser-request/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ceil","Math","floor","it","isNaN","undefined","TypeError","isObject","S","fn","val","toString","valueOf","toInteger","min","shared","uid","global","store","split","document","is","createElement","default","g","this","Function","eval","e","window","a","has","toIObject","arrayIndexOf","IE_PROTO","names","O","result","push","length","cof","propertyIsEnumerable","core","version","__e","scope","self","apply","Timeout","id","clearFn","_id","_clearFn","setTimeout","arguments","clearTimeout","setInterval","clearInterval","timeout","close","unref","ref","enroll","item","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","setImmediate","clearImmediate","_callee","config","hsUrl","_regenerator2","wrap","_context","prev","next","getElementById","onclick","onBackToRiotClick","_bluebird","resolve","_getconfig","getVectorConfig","sent","endsWith","style","display","innerHTML","stop","cookie","location","href","initPage","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","index","max","hadRuntime","regeneratorRuntime","getOwnPropertyNames","indexOf","oldRuntime","Op","hasOwn","$Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","constructor","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","arg","__await","defineIteratorMethods","AsyncIterator","async","innerFn","outerFn","tryLocsList","iter","then","done","keys","reverse","pop","Context","reset","skipTempReset","_sent","delegate","method","tryEntries","forEach","resetTryEntry","charAt","slice","rootRecord","completion","type","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","Error","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","iterable","resultName","nextLoc","protoGenerator","generator","_invoke","state","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","obj","err","previousPromise","callInvokeWithMethodAndArg","Promise","reject","invoke","unwrapped","return","info","pushTryEntry","locs","iteratorMethod","process","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","nextTick","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","messagePrefix","random","onGlobalMessage","event","source","data","addEventListener","attachEvent","installPostMessageImplementation","MessageChannel","channel","port1","port2","installMessageChannelImplementation","html","documentElement","script","onreadystatechange","removeChild","appendChild","installReadyStateChangeImplementation","callback","args","Array","task","run","toObject","$keys","ctx","hide","$export","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","C","b","virtual","R","U","__g","relativeLocation","configJson","getConfig","domain","_keys2","t0","configJsonFilename","_browserRequest2","url","response","body","status","JSON","parse","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","Attributes","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","concat","drainQueue","len","marker","runClearTimeout","Item","array","noop","title","browser","env","argv","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","exec","IObject","defined","createDesc","aFunction","that","fails","KEY","exp","bitmap","configurable","writable","enumBugKeys","define","u","_dereq_","code","1","SomePromiseArray","_SomePromiseArray","any","promises","ret","promise","setHowMany","setUnwrap","init","2","firstLineError","schedule","Queue","util","Async","_customScheduler","_isTickUsed","_lateQueue","_normalQueue","_haveDrainedQueues","_trampolineEnabled","drainQueues","_drainQueues","_schedule","AsyncInvokeLater","receiver","_queueTick","AsyncInvoke","AsyncSettlePromises","_pushOne","_drainQueue","_drainQueueStep","shift","_settlePromises","setScheduler","hasCustomScheduler","enableTrampoline","disableTrampolineIfNecessary","hasDevTools","haveItemsQueued","fatalError","isNode","stderr","write","stack","exit","throwLater","invokeLater","settlePromises","_reset","./queue","./schedule","./util","3","INTERNAL","tryConvertToPromise","debug","calledBind","rejectThis","_","_reject","targetRejected","promiseRejectionQueued","bindingPromise","_then","bindingResolved","thisArg","_bitField","_resolveCallback","bindingRejected","_propagateFrom","propagateFromFunction","_boundValue","boundValueFunction","maybePromise","_target","_setBoundTo","_setOnCancel","_boundTo","_isBound","4","old","bluebird","noConflict","./promise","5","cr","callerCache","getterCache","canEvaluate","caller","methodName","message","classString","ensureMethod","namedGetter","indexedGetter","isIdentifier","propertyName","isIndex","maybeGetter","getGetter","6","PromiseArray","apiRejection","errorObj","_async","cancel","cancellation","_warn","child","_isCancellable","_cancelBy","_isFollowing","_followee","_cancelBranched","parent","_cancellationParent","_setWillBeCancelled","_branchHasCancelled","_branchesRemainingToCancel","_enoughBranchesHaveCancelled","canceller","_invokeOnCancel","_cancel","_setCancelled","_cancelPromises","_length","_unsetOnCancel","_onCancelField","isPending","_isCancelled","isCancellable","isCancelled","_doInvokeOnCancel","onCancelCallback","internalOnly","isArray","_attachExtraTrace","_resultCancelled","_onCancel","_invokeInternalOnCancel","7","NEXT_FILTER","getKeys","instances","cb","boundTo","predicateLoop","matchesPredicate","j","./es5","8","longStackTraces","contextStack","_trace","CapturedTrace","peekContext","lastIndex","_promiseCreated","_pushContext","_popContext","_peekContext","trace","deactivateLongStackTraces","activateLongStackTraces","Promise_pushContext","Promise_popContext","Promise_PeekContext","Promise_peekContext","Promise_promiseCreated","9","unhandledRejectionHandled","possiblyUnhandledRejection","printWarning","getDomain","_getDomain","Warning","es5","canAttachTrace","bluebirdFramePattern","nodeFramePattern","parseLinePattern","stackFramePattern","formatStack","indentStackFrames","debugging","warnings","wForgottenReturn","suppressUnhandledRejections","_ensurePossibleRejectionHandled","_setRejectionIsUnhandled","_notifyUnhandledRejection","_notifyUnhandledRejectionIsHandled","fireRejectionEvent","_setReturnedNonUndefined","_returnedNonUndefined","_isRejectionUnhandled","reason","_settledValue","_setUnhandledRejectionIsNotified","_unsetUnhandledRejectionIsNotified","_isUnhandledRejectionNotified","_unsetRejectionIsUnhandled","shouldUseOwnTrace","warn","onPossiblyUnhandledRejection","domainBind","onUnhandledRejectionHandled","disableLongStackTraces","longStackTracesIsSupported","Promise_captureStackTrace","_captureStackTrace","Promise_attachExtraTrace","Promise_dereferenceTrace","_dereferenceTrace","longStackTracesCaptureStackTrace","longStackTracesAttachExtraTrace","longStackTracesDereferenceTrace","hasLongStackTraces","fireDomEvent","CustomEvent","dispatchEvent","eventData","detail","cancelable","domEvent","toLowerCase","Event","createEvent","initCustomEvent","fireGlobalEvent","generatePromiseLifecycleEventObject","eventToObjectGenerator","promiseCreated","promiseFulfilled","promiseRejected","promiseResolved","promiseCancelled","promiseChained","warning","unhandledRejection","rejectionHandled","activeFireEvent","globalEventFired","domEventFired","defaultFireEvent","cancellationExecute","executor","onCancel","_attachCancellationCallback","cancellationAttachCancellationCallback","previousOnCancel","cancellationOnCancel","cancellationSetOnCancel","cancellationClearCancellationData","cancellationPropagateFrom","flags","branchesRemainingToCancel","opts","warningsOption","_clearCancellationData","_execute","monitoring","_fireEvent","handler","isFulfilled","error","ignoreSelf","_parent","attachExtraTrace","__stackCleaned__","parsed","parseStackAndMessage","notEnumerableProp","join","formatAndLogError","cleanStack","line","isTraceLine","test","isInternalFrame","shouldIgnore","replace","stackFramesAsArray","isSoft","console","String","log","localHandler","localEventFired","formatNonError","str","newStr","stringify","substr","maxChars","snip","captureStackTrace","parseLineInfoRegex","parseLineInfo","matches","match","fileName","parseInt","_promisesCreated","uncycle","inherits","nodes","stackToIndex","node","currentStack","cycleEdgeNode","currentChildLength","stacks","current","currentLastIndex","currentLastLine","commonRootMeetPoint","removeCommonRoots","splice","removeDuplicateOrEmptyJumps","reconstructStack","v8stackFramePattern","v8stackFormatter","stackTraceLimit","ignoreUntil","hasStackAfterThrow","isTTY","color","checkForgottenReturns","returnValue","handlerLine","creatorLine","traceLines","lineMatches","firstUserLine","msg","setBounds","lastLineError","firstFileName","lastFileName","firstStackLines","lastStackLines","firstIndex","deprecated","replacement","./errors","10","returner","thrower","thenReturn","thenThrow","catchThrow","_reason","catchReturn","_value","11","PromiseReduce","reduce","PromiseAll","all","promiseAllThis","each","mapSeries","12","_TypeError","_RangeError","Objectfreeze","freeze","subError","nameProperty","defaultMessage","SubError","CancellationError","TimeoutError","AggregateError","RangeError","methods","level","OperationalError","cause","indent","lines","errorTypes","RejectionError","13","isES5","getDescriptor","getOwnPropertyDescriptor","propertyIsWritable","prop","descriptor","set","proto","ObjectKeys","desc","14","PromiseMap","map","filter","options","15","catchFilter","PassThroughHandlerContext","called","cancelPromise","FinallyHandlerCancelReaction","finallyHandler","checkCancel","succeed","fail","reasonOrValue","isFinallyHandler","isRejected","_passThrough","success","lastly","tap","tapCatch","handlerOrPredicate","catchInstances","./catch_filter","16","Proxyable","errors","yieldHandlers","PromiseSpawn","generatorFunction","yieldHandler","internal","_finallyPromise","_promise","_stack","_generatorFunction","_receiver","_generator","_yieldHandlers","_yieldedPromise","_cancellationPhase","_isResolved","_cleanup","_fulfill","_promiseCancelled","implementsReturn","coroutine","returnSentinel","_continue","_promiseFulfilled","_promiseRejected","_run","_rejectCallback","traceParent","promiseFromYieldHandler","bitField","_proxy","PromiseSpawn$","spawn","addYieldHandler","17","last","spread","18","MappingPromiseArray","limit","_filter","constructor$","_callback","_preservedValues","_limit","_inFlight","_queue","_asyncInit","concurrency","isFinite","_init$","_init","_values","preservedValues","totalResolved","_totalResolved","_resolve","booleans","19","_resolveFromSyncValue","attempt","20","maybeWrapAsError","rErrorKey","wrapAsOperationalError","isUntypedError","markAsOriginatingFromRejection","multiArgs","wrapped","21","spreadAdapter","nodeback","successAdapter","errorAdapter","newReason","asCallback","nodeify","adapter","22","makeSelfResolutionError","reflectHandler","PromiseInspection","UNDEFINED_BINDING","APPLY","createContext","nodebackForPromise","check","_fulfillmentHandler0","_rejectionHandler0","_promise0","_receiver0","_resolveFromExecutor","deferResolve","v","deferReject","fillTypes","reflect","didFulfill","didReject","_setIsFinal","toJSON","fulfillmentValue","rejectionReason","originatesFromRejection","getNewLibraryCopy","fromNode","fromCallback","_isFateSealed","_setAsyncGuaranteed","cast","_setFulfilled","fulfilled","rejected","internalData","haveInternalData","settler","_settlePromiseCtx","_settlePromiseLateCancellationObserver","_addCallbacks","_setLength","_setRejected","_setFollowing","_isFinal","_unsetCancelled","_receiverAt","_promiseAt","_fulfillmentHandlerAt","_rejectionHandlerAt","_migrateCallback0","follower","fulfill","_migrateCallbackAt","base","proxyable","shouldBind","_setFollowee","synchronous","ignoreNonErrorWarnings","ensureErrorObject","hasStack","_settlePromiseFromHandler","x","_settlePromise","isPromise","asyncGuaranteed","_settlePromise0","_clearCallbackDataAtIndex","_fulfillPromises","_rejectPromises","defer","pending","toFastProperties","./any.js","./async","./bind","./call_get.js","./cancel","./context","./debuggability","./direct_resolve","./each.js","./filter.js","./finally","./generators.js","./join","./map.js","./method","./nodeback","./nodeify.js","./promise_array","./promisify.js","./props.js","./race.js","./reduce.js","./settle.js","./some.js","./synchronous_inspection","./thenables","./timers.js","./using.js","23","resolveValueIfEmpty","asArray","_iterate","_resolveEmptyArray","Map","toResolutionValue","getActualLength","shouldCopyValues","isResolved","24","THIS","withAppended","defaultPromisified","__isPromisified__","noCopyPropsPattern","RegExp","defaultFilter","propsFilter","isPromisified","hasPromisified","suffix","getDataPropertyOrDefault","promisifiableMethods","suffixRegexp","inheritedDataKeys","passesDefaultFilter","keyWithoutAsyncSuffix","checkValid","escapeIdentRegex","makeNodePromisified","makeNodePromisifiedEval","__","defaultThis","promisified","promisifyAll","promisifier","promisifiedKey","promisify","copyDescriptors","isClass","25","Es6Map","mapToEntries","size","extractEntry","PropertiesPromiseArray","entries","isMap","_isMap","props","castValue","entriesToMap","keyOffset","26","capacity","_capacity","_front","_willBeOverCapacity","_checkCapacity","wrapMask","front","_resizeTo","oldCapacity","moveItemsCount","src","srcIndex","dst","dstIndex","arrayMove","27","raceLater","race","28","ReductionPromiseArray","initialValue","_each","_fn","_initialValue","_currentCancellable","_eachValues","completed","valueOrReason","gotAccum","accum","_gotAccum","gotValue","_eachComplete","sender","_resultCancelled$","29","NativePromise","getNativePromise","MutationObserver","GlobalSetImmediate","ProcessNextTick","isRecentNode","nativePromise","navigator","standalone","cordova","div","attributes","toggleScheduled","div2","o2","classList","toggle","observe","disconnect","30","SettledPromiseArray","_promiseResolved","inspection","_settledValueField","settle","31","CANCELLATION","_howMany","_unwrap","_initialized","some","howMany","isArrayResolved","_canPossiblyFulfill","_getRangeError","count","_addFulfilled","_fulfilled","_addRejected","_checkOutcome","_rejected","32","__isCancelled","33","hasProp","doGetThen","getThen","isAnyBluebirdPromise","doThenable","34","HandleWrapper","afterValue","delay","ms","successClear","failureClear","handleWrapper","afterTimeout","35","NULL","dispose","resources","thenable","_isDisposable","_getDisposer","_setDisposable","castPreservingDisposable","tryDispose","Disposer","_data","FunctionDisposer","maybeUnwrapDisposer","isDisposer","ResourceList","resource","doDispose","_unsetDisposable","using","input","spreadArgs","disposer","reflectedResources","resultPromise","inspections","_disposer","36","tryCatchTarget","globalObject","tryCatcher","Child","Parent","T","isPrimitive","maybeError","safeToString","appendee","defaultValue","excludedPrototypes","isExcludedProto","visitedKeys","enumeration","thisAssignmentPattern","hasMethods","hasMethodsOtherThanConstructor","hasThisAssignmentAndStaticMethods","FakeConstructor","ic","foo","rident","filledRange","prefix","isError","ignore","from","to","ArrayFrom","itResult","hasEnvVariables","NODE_ENV","chrome","loadTimes","Number","px","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","XHR","XMLHttpRequest","request","options_onResponse","onResponse","uri","verbose","logger","levels","formatted","getLogger","unsupported_options","headers","DEFAULT_TIMEOUT","host","json","accept","serialize","encodeURIComponent","qs","form","encoding","multi","boundry","multipart","authorization","auth","o1","o3","h1","h2","h3","h4","bits","b64","ac","enc","tmp_arr","charCodeAt","b64_enc","username","password","xhr","timed_out","is_cors","ajaxLocation","rurl","ajaxLocParts","parts","is_crossDomain","supports_cors","req_seq","seq_id","cors_err","cors","timeoutTimer","er","duration","milliseconds","did","loading","end","readyState","OPENED","setRequestHeader","HEADERS_RECEIVED","on_response","LOADING","on_loading","DONE","responseText","on_end","open","withCredentials","send","statusCode","run_xhr","defaults","requester","def","params","de","post","put","head","shortcut","toUpperCase","couch","resp"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/mobileguide.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1880);\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","import {getVectorConfig} from '../getconfig';\n\nfunction onBackToRiotClick() {\n document.cookie = 'mobile_redirect_to_guide=false;path=/';\n window.location.href = '../';\n}\n\nasync function initPage() {\n document.getElementById('back_to_riot_button').onclick = onBackToRiotClick;\n\n const config = await getVectorConfig('..');\n let hsUrl;\n if (config && config['default_hs_url']) {\n hsUrl = config['default_hs_url'];\n }\n if (hsUrl && !hsUrl.endsWith('/')) hsUrl += '/';\n if (hsUrl && hsUrl !== 'https://matrix.org/') {\n document.getElementById('step2_container').style.display = 'block';\n document.getElementById('hs_url').innerHTML = hsUrl;\n document.getElementById('step_login_header').innerHTML= 'Step 3: Register or Log in';\n }\n}\n\ninitPage();\n","module.exports = require(\"regenerator-runtime\");\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 6–8\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","/*\nCopyright 2018 New Vector Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport Promise from 'bluebird';\nimport request from 'browser-request';\n\nexport async function getVectorConfig(relativeLocation) {\n if (relativeLocation === undefined) relativeLocation = '';\n if (relativeLocation !== '' && !relativeLocation.endsWith('/')) relativeLocation += '/';\n try {\n const configJson = await getConfig(`${relativeLocation}config.${document.domain}.json`);\n // 404s succeed with an empty json config, so check that there are keys\n if (Object.keys(configJson).length === 0) {\n throw new Error(); // throw to enter the catch\n }\n return configJson;\n } catch (e) {\n return await getConfig(relativeLocation + \"config.json\");\n }\n}\n\nfunction getConfig(configJsonFilename) {\n return new Promise(function(resolve, reject) {\n request(\n { method: \"GET\", url: configJsonFilename },\n (err, response, body) => {\n if (err || response.status < 200 || response.status >= 300) {\n // Lack of a config isn't an error, we should\n // just use the defaults.\n // Also treat a blank config as no config, assuming\n // the status code is 0, because we don't get 404s\n // from file: URIs so this is the only way we can\n // not fail if the file doesn't exist when loading\n // from a file:// URI.\n if (response) {\n if (response.status == 404 || (response.status == 0 && body == '')) {\n resolve({});\n }\n }\n reject({err: err, response: response});\n return;\n }\n\n // We parse the JSON ourselves rather than use the JSON\n // parameter, since this throws a parse error on empty\n // which breaks if there's no config.json and we're\n // loading from the filesystem (see above).\n resolve(JSON.parse(body));\n },\n );\n });\n}\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","/* @preserve\n * The MIT License (MIT)\n * \n * Copyright (c) 2013-2018 Petka Antonov\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n * \n */\n/**\n * bluebird build version 3.5.2\n * Features enabled: core, race, call_get, generators, map, nodeify, promisify, props, reduce, settle, some, using, timers, filter, any, each\n*/\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var f;\"undefined\"!=typeof window?f=window:\"undefined\"!=typeof global?f=global:\"undefined\"!=typeof self&&(f=self),f.Promise=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof _dereq_==\"function\"&&_dereq_;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof _dereq_==\"function\"&&_dereq_;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar SomePromiseArray = Promise._SomePromiseArray;\nfunction any(promises) {\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(1);\n ret.setUnwrap();\n ret.init();\n return promise;\n}\n\nPromise.any = function (promises) {\n return any(promises);\n};\n\nPromise.prototype.any = function () {\n return any(this);\n};\n\n};\n\n},{}],2:[function(_dereq_,module,exports){\n\"use strict\";\nvar firstLineError;\ntry {throw new Error(); } catch (e) {firstLineError = e;}\nvar schedule = _dereq_(\"./schedule\");\nvar Queue = _dereq_(\"./queue\");\nvar util = _dereq_(\"./util\");\n\nfunction Async() {\n this._customScheduler = false;\n this._isTickUsed = false;\n this._lateQueue = new Queue(16);\n this._normalQueue = new Queue(16);\n this._haveDrainedQueues = false;\n this._trampolineEnabled = true;\n var self = this;\n this.drainQueues = function () {\n self._drainQueues();\n };\n this._schedule = schedule;\n}\n\nAsync.prototype.setScheduler = function(fn) {\n var prev = this._schedule;\n this._schedule = fn;\n this._customScheduler = true;\n return prev;\n};\n\nAsync.prototype.hasCustomScheduler = function() {\n return this._customScheduler;\n};\n\nAsync.prototype.enableTrampoline = function() {\n this._trampolineEnabled = true;\n};\n\nAsync.prototype.disableTrampolineIfNecessary = function() {\n if (util.hasDevTools) {\n this._trampolineEnabled = false;\n }\n};\n\nAsync.prototype.haveItemsQueued = function () {\n return this._isTickUsed || this._haveDrainedQueues;\n};\n\n\nAsync.prototype.fatalError = function(e, isNode) {\n if (isNode) {\n process.stderr.write(\"Fatal \" + (e instanceof Error ? e.stack : e) +\n \"\\n\");\n process.exit(2);\n } else {\n this.throwLater(e);\n }\n};\n\nAsync.prototype.throwLater = function(fn, arg) {\n if (arguments.length === 1) {\n arg = fn;\n fn = function () { throw arg; };\n }\n if (typeof setTimeout !== \"undefined\") {\n setTimeout(function() {\n fn(arg);\n }, 0);\n } else try {\n this._schedule(function() {\n fn(arg);\n });\n } catch (e) {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n};\n\nfunction AsyncInvokeLater(fn, receiver, arg) {\n this._lateQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncInvoke(fn, receiver, arg) {\n this._normalQueue.push(fn, receiver, arg);\n this._queueTick();\n}\n\nfunction AsyncSettlePromises(promise) {\n this._normalQueue._pushOne(promise);\n this._queueTick();\n}\n\nif (!util.hasDevTools) {\n Async.prototype.invokeLater = AsyncInvokeLater;\n Async.prototype.invoke = AsyncInvoke;\n Async.prototype.settlePromises = AsyncSettlePromises;\n} else {\n Async.prototype.invokeLater = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvokeLater.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n setTimeout(function() {\n fn.call(receiver, arg);\n }, 100);\n });\n }\n };\n\n Async.prototype.invoke = function (fn, receiver, arg) {\n if (this._trampolineEnabled) {\n AsyncInvoke.call(this, fn, receiver, arg);\n } else {\n this._schedule(function() {\n fn.call(receiver, arg);\n });\n }\n };\n\n Async.prototype.settlePromises = function(promise) {\n if (this._trampolineEnabled) {\n AsyncSettlePromises.call(this, promise);\n } else {\n this._schedule(function() {\n promise._settlePromises();\n });\n }\n };\n}\n\nfunction _drainQueue(queue) {\n while (queue.length() > 0) {\n _drainQueueStep(queue);\n }\n}\n\nfunction _drainQueueStep(queue) {\n var fn = queue.shift();\n if (typeof fn !== \"function\") {\n fn._settlePromises();\n } else {\n var receiver = queue.shift();\n var arg = queue.shift();\n fn.call(receiver, arg);\n }\n}\n\nAsync.prototype._drainQueues = function () {\n _drainQueue(this._normalQueue);\n this._reset();\n this._haveDrainedQueues = true;\n _drainQueue(this._lateQueue);\n};\n\nAsync.prototype._queueTick = function () {\n if (!this._isTickUsed) {\n this._isTickUsed = true;\n this._schedule(this.drainQueues);\n }\n};\n\nAsync.prototype._reset = function () {\n this._isTickUsed = false;\n};\n\nmodule.exports = Async;\nmodule.exports.firstLineError = firstLineError;\n\n},{\"./queue\":26,\"./schedule\":29,\"./util\":36}],3:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise, debug) {\nvar calledBind = false;\nvar rejectThis = function(_, e) {\n this._reject(e);\n};\n\nvar targetRejected = function(e, context) {\n context.promiseRejectionQueued = true;\n context.bindingPromise._then(rejectThis, rejectThis, null, this, e);\n};\n\nvar bindingResolved = function(thisArg, context) {\n if (((this._bitField & 50397184) === 0)) {\n this._resolveCallback(context.target);\n }\n};\n\nvar bindingRejected = function(e, context) {\n if (!context.promiseRejectionQueued) this._reject(e);\n};\n\nPromise.prototype.bind = function (thisArg) {\n if (!calledBind) {\n calledBind = true;\n Promise.prototype._propagateFrom = debug.propagateFromFunction();\n Promise.prototype._boundValue = debug.boundValueFunction();\n }\n var maybePromise = tryConvertToPromise(thisArg);\n var ret = new Promise(INTERNAL);\n ret._propagateFrom(this, 1);\n var target = this._target();\n ret._setBoundTo(maybePromise);\n if (maybePromise instanceof Promise) {\n var context = {\n promiseRejectionQueued: false,\n promise: ret,\n target: target,\n bindingPromise: maybePromise\n };\n target._then(INTERNAL, targetRejected, undefined, ret, context);\n maybePromise._then(\n bindingResolved, bindingRejected, undefined, ret, context);\n ret._setOnCancel(maybePromise);\n } else {\n ret._resolveCallback(target);\n }\n return ret;\n};\n\nPromise.prototype._setBoundTo = function (obj) {\n if (obj !== undefined) {\n this._bitField = this._bitField | 2097152;\n this._boundTo = obj;\n } else {\n this._bitField = this._bitField & (~2097152);\n }\n};\n\nPromise.prototype._isBound = function () {\n return (this._bitField & 2097152) === 2097152;\n};\n\nPromise.bind = function (thisArg, value) {\n return Promise.resolve(value).bind(thisArg);\n};\n};\n\n},{}],4:[function(_dereq_,module,exports){\n\"use strict\";\nvar old;\nif (typeof Promise !== \"undefined\") old = Promise;\nfunction noConflict() {\n try { if (Promise === bluebird) Promise = old; }\n catch (e) {}\n return bluebird;\n}\nvar bluebird = _dereq_(\"./promise\")();\nbluebird.noConflict = noConflict;\nmodule.exports = bluebird;\n\n},{\"./promise\":22}],5:[function(_dereq_,module,exports){\n\"use strict\";\nvar cr = Object.create;\nif (cr) {\n var callerCache = cr(null);\n var getterCache = cr(null);\n callerCache[\" size\"] = getterCache[\" size\"] = 0;\n}\n\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar isIdentifier = util.isIdentifier;\n\nvar getMethodCaller;\nvar getGetter;\nif (!true) {\nvar makeMethodCaller = function (methodName) {\n return new Function(\"ensureMethod\", \" \\n\\\n return function(obj) { \\n\\\n 'use strict' \\n\\\n var len = this.length; \\n\\\n ensureMethod(obj, 'methodName'); \\n\\\n switch(len) { \\n\\\n case 1: return obj.methodName(this[0]); \\n\\\n case 2: return obj.methodName(this[0], this[1]); \\n\\\n case 3: return obj.methodName(this[0], this[1], this[2]); \\n\\\n case 0: return obj.methodName(); \\n\\\n default: \\n\\\n return obj.methodName.apply(obj, this); \\n\\\n } \\n\\\n }; \\n\\\n \".replace(/methodName/g, methodName))(ensureMethod);\n};\n\nvar makeGetter = function (propertyName) {\n return new Function(\"obj\", \" \\n\\\n 'use strict'; \\n\\\n return obj.propertyName; \\n\\\n \".replace(\"propertyName\", propertyName));\n};\n\nvar getCompiled = function(name, compiler, cache) {\n var ret = cache[name];\n if (typeof ret !== \"function\") {\n if (!isIdentifier(name)) {\n return null;\n }\n ret = compiler(name);\n cache[name] = ret;\n cache[\" size\"]++;\n if (cache[\" size\"] > 512) {\n var keys = Object.keys(cache);\n for (var i = 0; i < 256; ++i) delete cache[keys[i]];\n cache[\" size\"] = keys.length - 256;\n }\n }\n return ret;\n};\n\ngetMethodCaller = function(name) {\n return getCompiled(name, makeMethodCaller, callerCache);\n};\n\ngetGetter = function(name) {\n return getCompiled(name, makeGetter, getterCache);\n};\n}\n\nfunction ensureMethod(obj, methodName) {\n var fn;\n if (obj != null) fn = obj[methodName];\n if (typeof fn !== \"function\") {\n var message = \"Object \" + util.classString(obj) + \" has no method '\" +\n util.toString(methodName) + \"'\";\n throw new Promise.TypeError(message);\n }\n return fn;\n}\n\nfunction caller(obj) {\n var methodName = this.pop();\n var fn = ensureMethod(obj, methodName);\n return fn.apply(obj, this);\n}\nPromise.prototype.call = function (methodName) {\n var args = [].slice.call(arguments, 1);;\n if (!true) {\n if (canEvaluate) {\n var maybeCaller = getMethodCaller(methodName);\n if (maybeCaller !== null) {\n return this._then(\n maybeCaller, undefined, undefined, args, undefined);\n }\n }\n }\n args.push(methodName);\n return this._then(caller, undefined, undefined, args, undefined);\n};\n\nfunction namedGetter(obj) {\n return obj[this];\n}\nfunction indexedGetter(obj) {\n var index = +this;\n if (index < 0) index = Math.max(0, index + obj.length);\n return obj[index];\n}\nPromise.prototype.get = function (propertyName) {\n var isIndex = (typeof propertyName === \"number\");\n var getter;\n if (!isIndex) {\n if (canEvaluate) {\n var maybeGetter = getGetter(propertyName);\n getter = maybeGetter !== null ? maybeGetter : namedGetter;\n } else {\n getter = namedGetter;\n }\n } else {\n getter = indexedGetter;\n }\n return this._then(getter, undefined, undefined, propertyName, undefined);\n};\n};\n\n},{\"./util\":36}],6:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, PromiseArray, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nPromise.prototype[\"break\"] = Promise.prototype.cancel = function() {\n if (!debug.cancellation()) return this._warn(\"cancellation is disabled\");\n\n var promise = this;\n var child = promise;\n while (promise._isCancellable()) {\n if (!promise._cancelBy(child)) {\n if (child._isFollowing()) {\n child._followee().cancel();\n } else {\n child._cancelBranched();\n }\n break;\n }\n\n var parent = promise._cancellationParent;\n if (parent == null || !parent._isCancellable()) {\n if (promise._isFollowing()) {\n promise._followee().cancel();\n } else {\n promise._cancelBranched();\n }\n break;\n } else {\n if (promise._isFollowing()) promise._followee().cancel();\n promise._setWillBeCancelled();\n child = promise;\n promise = parent;\n }\n }\n};\n\nPromise.prototype._branchHasCancelled = function() {\n this._branchesRemainingToCancel--;\n};\n\nPromise.prototype._enoughBranchesHaveCancelled = function() {\n return this._branchesRemainingToCancel === undefined ||\n this._branchesRemainingToCancel <= 0;\n};\n\nPromise.prototype._cancelBy = function(canceller) {\n if (canceller === this) {\n this._branchesRemainingToCancel = 0;\n this._invokeOnCancel();\n return true;\n } else {\n this._branchHasCancelled();\n if (this._enoughBranchesHaveCancelled()) {\n this._invokeOnCancel();\n return true;\n }\n }\n return false;\n};\n\nPromise.prototype._cancelBranched = function() {\n if (this._enoughBranchesHaveCancelled()) {\n this._cancel();\n }\n};\n\nPromise.prototype._cancel = function() {\n if (!this._isCancellable()) return;\n this._setCancelled();\n async.invoke(this._cancelPromises, this, undefined);\n};\n\nPromise.prototype._cancelPromises = function() {\n if (this._length() > 0) this._settlePromises();\n};\n\nPromise.prototype._unsetOnCancel = function() {\n this._onCancelField = undefined;\n};\n\nPromise.prototype._isCancellable = function() {\n return this.isPending() && !this._isCancelled();\n};\n\nPromise.prototype.isCancellable = function() {\n return this.isPending() && !this.isCancelled();\n};\n\nPromise.prototype._doInvokeOnCancel = function(onCancelCallback, internalOnly) {\n if (util.isArray(onCancelCallback)) {\n for (var i = 0; i < onCancelCallback.length; ++i) {\n this._doInvokeOnCancel(onCancelCallback[i], internalOnly);\n }\n } else if (onCancelCallback !== undefined) {\n if (typeof onCancelCallback === \"function\") {\n if (!internalOnly) {\n var e = tryCatch(onCancelCallback).call(this._boundValue());\n if (e === errorObj) {\n this._attachExtraTrace(e.e);\n async.throwLater(e.e);\n }\n }\n } else {\n onCancelCallback._resultCancelled(this);\n }\n }\n};\n\nPromise.prototype._invokeOnCancel = function() {\n var onCancelCallback = this._onCancel();\n this._unsetOnCancel();\n async.invoke(this._doInvokeOnCancel, this, onCancelCallback);\n};\n\nPromise.prototype._invokeInternalOnCancel = function() {\n if (this._isCancellable()) {\n this._doInvokeOnCancel(this._onCancel(), true);\n this._unsetOnCancel();\n }\n};\n\nPromise.prototype._resultCancelled = function() {\n this.cancel();\n};\n\n};\n\n},{\"./util\":36}],7:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar getKeys = _dereq_(\"./es5\").keys;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction catchFilter(instances, cb, promise) {\n return function(e) {\n var boundTo = promise._boundValue();\n predicateLoop: for (var i = 0; i < instances.length; ++i) {\n var item = instances[i];\n\n if (item === Error ||\n (item != null && item.prototype instanceof Error)) {\n if (e instanceof item) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (typeof item === \"function\") {\n var matchesPredicate = tryCatch(item).call(boundTo, e);\n if (matchesPredicate === errorObj) {\n return matchesPredicate;\n } else if (matchesPredicate) {\n return tryCatch(cb).call(boundTo, e);\n }\n } else if (util.isObject(e)) {\n var keys = getKeys(item);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n if (item[key] != e[key]) {\n continue predicateLoop;\n }\n }\n return tryCatch(cb).call(boundTo, e);\n }\n }\n return NEXT_FILTER;\n };\n}\n\nreturn catchFilter;\n};\n\n},{\"./es5\":13,\"./util\":36}],8:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar longStackTraces = false;\nvar contextStack = [];\n\nPromise.prototype._promiseCreated = function() {};\nPromise.prototype._pushContext = function() {};\nPromise.prototype._popContext = function() {return null;};\nPromise._peekContext = Promise.prototype._peekContext = function() {};\n\nfunction Context() {\n this._trace = new Context.CapturedTrace(peekContext());\n}\nContext.prototype._pushContext = function () {\n if (this._trace !== undefined) {\n this._trace._promiseCreated = null;\n contextStack.push(this._trace);\n }\n};\n\nContext.prototype._popContext = function () {\n if (this._trace !== undefined) {\n var trace = contextStack.pop();\n var ret = trace._promiseCreated;\n trace._promiseCreated = null;\n return ret;\n }\n return null;\n};\n\nfunction createContext() {\n if (longStackTraces) return new Context();\n}\n\nfunction peekContext() {\n var lastIndex = contextStack.length - 1;\n if (lastIndex >= 0) {\n return contextStack[lastIndex];\n }\n return undefined;\n}\nContext.CapturedTrace = null;\nContext.create = createContext;\nContext.deactivateLongStackTraces = function() {};\nContext.activateLongStackTraces = function() {\n var Promise_pushContext = Promise.prototype._pushContext;\n var Promise_popContext = Promise.prototype._popContext;\n var Promise_PeekContext = Promise._peekContext;\n var Promise_peekContext = Promise.prototype._peekContext;\n var Promise_promiseCreated = Promise.prototype._promiseCreated;\n Context.deactivateLongStackTraces = function() {\n Promise.prototype._pushContext = Promise_pushContext;\n Promise.prototype._popContext = Promise_popContext;\n Promise._peekContext = Promise_PeekContext;\n Promise.prototype._peekContext = Promise_peekContext;\n Promise.prototype._promiseCreated = Promise_promiseCreated;\n longStackTraces = false;\n };\n longStackTraces = true;\n Promise.prototype._pushContext = Context.prototype._pushContext;\n Promise.prototype._popContext = Context.prototype._popContext;\n Promise._peekContext = Promise.prototype._peekContext = peekContext;\n Promise.prototype._promiseCreated = function() {\n var ctx = this._peekContext();\n if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this;\n };\n};\nreturn Context;\n};\n\n},{}],9:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, Context) {\nvar getDomain = Promise._getDomain;\nvar async = Promise._async;\nvar Warning = _dereq_(\"./errors\").Warning;\nvar util = _dereq_(\"./util\");\nvar es5 = _dereq_(\"./es5\");\nvar canAttachTrace = util.canAttachTrace;\nvar unhandledRejectionHandled;\nvar possiblyUnhandledRejection;\nvar bluebirdFramePattern =\n /[\\\\\\/]bluebird[\\\\\\/]js[\\\\\\/](release|debug|instrumented)/;\nvar nodeFramePattern = /\\((?:timers\\.js):\\d+:\\d+\\)/;\nvar parseLinePattern = /[\\/<\\(](.+?):(\\d+):(\\d+)\\)?\\s*$/;\nvar stackFramePattern = null;\nvar formatStack = null;\nvar indentStackFrames = false;\nvar printWarning;\nvar debugging = !!(util.env(\"BLUEBIRD_DEBUG\") != 0 &&\n (true ||\n util.env(\"BLUEBIRD_DEBUG\") ||\n util.env(\"NODE_ENV\") === \"development\"));\n\nvar warnings = !!(util.env(\"BLUEBIRD_WARNINGS\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_WARNINGS\")));\n\nvar longStackTraces = !!(util.env(\"BLUEBIRD_LONG_STACK_TRACES\") != 0 &&\n (debugging || util.env(\"BLUEBIRD_LONG_STACK_TRACES\")));\n\nvar wForgottenReturn = util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\") != 0 &&\n (warnings || !!util.env(\"BLUEBIRD_W_FORGOTTEN_RETURN\"));\n\nPromise.prototype.suppressUnhandledRejections = function() {\n var target = this._target();\n target._bitField = ((target._bitField & (~1048576)) |\n 524288);\n};\n\nPromise.prototype._ensurePossibleRejectionHandled = function () {\n if ((this._bitField & 524288) !== 0) return;\n this._setRejectionIsUnhandled();\n var self = this;\n setTimeout(function() {\n self._notifyUnhandledRejection();\n }, 1);\n};\n\nPromise.prototype._notifyUnhandledRejectionIsHandled = function () {\n fireRejectionEvent(\"rejectionHandled\",\n unhandledRejectionHandled, undefined, this);\n};\n\nPromise.prototype._setReturnedNonUndefined = function() {\n this._bitField = this._bitField | 268435456;\n};\n\nPromise.prototype._returnedNonUndefined = function() {\n return (this._bitField & 268435456) !== 0;\n};\n\nPromise.prototype._notifyUnhandledRejection = function () {\n if (this._isRejectionUnhandled()) {\n var reason = this._settledValue();\n this._setUnhandledRejectionIsNotified();\n fireRejectionEvent(\"unhandledRejection\",\n possiblyUnhandledRejection, reason, this);\n }\n};\n\nPromise.prototype._setUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField | 262144;\n};\n\nPromise.prototype._unsetUnhandledRejectionIsNotified = function () {\n this._bitField = this._bitField & (~262144);\n};\n\nPromise.prototype._isUnhandledRejectionNotified = function () {\n return (this._bitField & 262144) > 0;\n};\n\nPromise.prototype._setRejectionIsUnhandled = function () {\n this._bitField = this._bitField | 1048576;\n};\n\nPromise.prototype._unsetRejectionIsUnhandled = function () {\n this._bitField = this._bitField & (~1048576);\n if (this._isUnhandledRejectionNotified()) {\n this._unsetUnhandledRejectionIsNotified();\n this._notifyUnhandledRejectionIsHandled();\n }\n};\n\nPromise.prototype._isRejectionUnhandled = function () {\n return (this._bitField & 1048576) > 0;\n};\n\nPromise.prototype._warn = function(message, shouldUseOwnTrace, promise) {\n return warn(message, shouldUseOwnTrace, promise || this);\n};\n\nPromise.onPossiblyUnhandledRejection = function (fn) {\n var domain = getDomain();\n possiblyUnhandledRejection =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nPromise.onUnhandledRejectionHandled = function (fn) {\n var domain = getDomain();\n unhandledRejectionHandled =\n typeof fn === \"function\" ? (domain === null ?\n fn : util.domainBind(domain, fn))\n : undefined;\n};\n\nvar disableLongStackTraces = function() {};\nPromise.longStackTraces = function () {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (!config.longStackTraces && longStackTracesIsSupported()) {\n var Promise_captureStackTrace = Promise.prototype._captureStackTrace;\n var Promise_attachExtraTrace = Promise.prototype._attachExtraTrace;\n var Promise_dereferenceTrace = Promise.prototype._dereferenceTrace;\n config.longStackTraces = true;\n disableLongStackTraces = function() {\n if (async.haveItemsQueued() && !config.longStackTraces) {\n throw new Error(\"cannot enable long stack traces after promises have been created\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n Promise.prototype._captureStackTrace = Promise_captureStackTrace;\n Promise.prototype._attachExtraTrace = Promise_attachExtraTrace;\n Promise.prototype._dereferenceTrace = Promise_dereferenceTrace;\n Context.deactivateLongStackTraces();\n async.enableTrampoline();\n config.longStackTraces = false;\n };\n Promise.prototype._captureStackTrace = longStackTracesCaptureStackTrace;\n Promise.prototype._attachExtraTrace = longStackTracesAttachExtraTrace;\n Promise.prototype._dereferenceTrace = longStackTracesDereferenceTrace;\n Context.activateLongStackTraces();\n async.disableTrampolineIfNecessary();\n }\n};\n\nPromise.hasLongStackTraces = function () {\n return config.longStackTraces && longStackTracesIsSupported();\n};\n\nvar fireDomEvent = (function() {\n try {\n if (typeof CustomEvent === \"function\") {\n var event = new CustomEvent(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var eventData = {\n detail: event,\n cancelable: true\n };\n es5.defineProperty(\n eventData, \"promise\", {value: event.promise});\n es5.defineProperty(eventData, \"reason\", {value: event.reason});\n var domEvent = new CustomEvent(name.toLowerCase(), eventData);\n return !util.global.dispatchEvent(domEvent);\n };\n } else if (typeof Event === \"function\") {\n var event = new Event(\"CustomEvent\");\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = new Event(name.toLowerCase(), {\n cancelable: true\n });\n domEvent.detail = event;\n es5.defineProperty(domEvent, \"promise\", {value: event.promise});\n es5.defineProperty(domEvent, \"reason\", {value: event.reason});\n return !util.global.dispatchEvent(domEvent);\n };\n } else {\n var event = document.createEvent(\"CustomEvent\");\n event.initCustomEvent(\"testingtheevent\", false, true, {});\n util.global.dispatchEvent(event);\n return function(name, event) {\n var domEvent = document.createEvent(\"CustomEvent\");\n domEvent.initCustomEvent(name.toLowerCase(), false, true,\n event);\n return !util.global.dispatchEvent(domEvent);\n };\n }\n } catch (e) {}\n return function() {\n return false;\n };\n})();\n\nvar fireGlobalEvent = (function() {\n if (util.isNode) {\n return function() {\n return process.emit.apply(process, arguments);\n };\n } else {\n if (!util.global) {\n return function() {\n return false;\n };\n }\n return function(name) {\n var methodName = \"on\" + name.toLowerCase();\n var method = util.global[methodName];\n if (!method) return false;\n method.apply(util.global, [].slice.call(arguments, 1));\n return true;\n };\n }\n})();\n\nfunction generatePromiseLifecycleEventObject(name, promise) {\n return {promise: promise};\n}\n\nvar eventToObjectGenerator = {\n promiseCreated: generatePromiseLifecycleEventObject,\n promiseFulfilled: generatePromiseLifecycleEventObject,\n promiseRejected: generatePromiseLifecycleEventObject,\n promiseResolved: generatePromiseLifecycleEventObject,\n promiseCancelled: generatePromiseLifecycleEventObject,\n promiseChained: function(name, promise, child) {\n return {promise: promise, child: child};\n },\n warning: function(name, warning) {\n return {warning: warning};\n },\n unhandledRejection: function (name, reason, promise) {\n return {reason: reason, promise: promise};\n },\n rejectionHandled: generatePromiseLifecycleEventObject\n};\n\nvar activeFireEvent = function (name) {\n var globalEventFired = false;\n try {\n globalEventFired = fireGlobalEvent.apply(null, arguments);\n } catch (e) {\n async.throwLater(e);\n globalEventFired = true;\n }\n\n var domEventFired = false;\n try {\n domEventFired = fireDomEvent(name,\n eventToObjectGenerator[name].apply(null, arguments));\n } catch (e) {\n async.throwLater(e);\n domEventFired = true;\n }\n\n return domEventFired || globalEventFired;\n};\n\nPromise.config = function(opts) {\n opts = Object(opts);\n if (\"longStackTraces\" in opts) {\n if (opts.longStackTraces) {\n Promise.longStackTraces();\n } else if (!opts.longStackTraces && Promise.hasLongStackTraces()) {\n disableLongStackTraces();\n }\n }\n if (\"warnings\" in opts) {\n var warningsOption = opts.warnings;\n config.warnings = !!warningsOption;\n wForgottenReturn = config.warnings;\n\n if (util.isObject(warningsOption)) {\n if (\"wForgottenReturn\" in warningsOption) {\n wForgottenReturn = !!warningsOption.wForgottenReturn;\n }\n }\n }\n if (\"cancellation\" in opts && opts.cancellation && !config.cancellation) {\n if (async.haveItemsQueued()) {\n throw new Error(\n \"cannot enable cancellation after promises are in use\");\n }\n Promise.prototype._clearCancellationData =\n cancellationClearCancellationData;\n Promise.prototype._propagateFrom = cancellationPropagateFrom;\n Promise.prototype._onCancel = cancellationOnCancel;\n Promise.prototype._setOnCancel = cancellationSetOnCancel;\n Promise.prototype._attachCancellationCallback =\n cancellationAttachCancellationCallback;\n Promise.prototype._execute = cancellationExecute;\n propagateFromFunction = cancellationPropagateFrom;\n config.cancellation = true;\n }\n if (\"monitoring\" in opts) {\n if (opts.monitoring && !config.monitoring) {\n config.monitoring = true;\n Promise.prototype._fireEvent = activeFireEvent;\n } else if (!opts.monitoring && config.monitoring) {\n config.monitoring = false;\n Promise.prototype._fireEvent = defaultFireEvent;\n }\n }\n return Promise;\n};\n\nfunction defaultFireEvent() { return false; }\n\nPromise.prototype._fireEvent = defaultFireEvent;\nPromise.prototype._execute = function(executor, resolve, reject) {\n try {\n executor(resolve, reject);\n } catch (e) {\n return e;\n }\n};\nPromise.prototype._onCancel = function () {};\nPromise.prototype._setOnCancel = function (handler) { ; };\nPromise.prototype._attachCancellationCallback = function(onCancel) {\n ;\n};\nPromise.prototype._captureStackTrace = function () {};\nPromise.prototype._attachExtraTrace = function () {};\nPromise.prototype._dereferenceTrace = function () {};\nPromise.prototype._clearCancellationData = function() {};\nPromise.prototype._propagateFrom = function (parent, flags) {\n ;\n ;\n};\n\nfunction cancellationExecute(executor, resolve, reject) {\n var promise = this;\n try {\n executor(resolve, reject, function(onCancel) {\n if (typeof onCancel !== \"function\") {\n throw new TypeError(\"onCancel must be a function, got: \" +\n util.toString(onCancel));\n }\n promise._attachCancellationCallback(onCancel);\n });\n } catch (e) {\n return e;\n }\n}\n\nfunction cancellationAttachCancellationCallback(onCancel) {\n if (!this._isCancellable()) return this;\n\n var previousOnCancel = this._onCancel();\n if (previousOnCancel !== undefined) {\n if (util.isArray(previousOnCancel)) {\n previousOnCancel.push(onCancel);\n } else {\n this._setOnCancel([previousOnCancel, onCancel]);\n }\n } else {\n this._setOnCancel(onCancel);\n }\n}\n\nfunction cancellationOnCancel() {\n return this._onCancelField;\n}\n\nfunction cancellationSetOnCancel(onCancel) {\n this._onCancelField = onCancel;\n}\n\nfunction cancellationClearCancellationData() {\n this._cancellationParent = undefined;\n this._onCancelField = undefined;\n}\n\nfunction cancellationPropagateFrom(parent, flags) {\n if ((flags & 1) !== 0) {\n this._cancellationParent = parent;\n var branchesRemainingToCancel = parent._branchesRemainingToCancel;\n if (branchesRemainingToCancel === undefined) {\n branchesRemainingToCancel = 0;\n }\n parent._branchesRemainingToCancel = branchesRemainingToCancel + 1;\n }\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\n\nfunction bindingPropagateFrom(parent, flags) {\n if ((flags & 2) !== 0 && parent._isBound()) {\n this._setBoundTo(parent._boundTo);\n }\n}\nvar propagateFromFunction = bindingPropagateFrom;\n\nfunction boundValueFunction() {\n var ret = this._boundTo;\n if (ret !== undefined) {\n if (ret instanceof Promise) {\n if (ret.isFulfilled()) {\n return ret.value();\n } else {\n return undefined;\n }\n }\n }\n return ret;\n}\n\nfunction longStackTracesCaptureStackTrace() {\n this._trace = new CapturedTrace(this._peekContext());\n}\n\nfunction longStackTracesAttachExtraTrace(error, ignoreSelf) {\n if (canAttachTrace(error)) {\n var trace = this._trace;\n if (trace !== undefined) {\n if (ignoreSelf) trace = trace._parent;\n }\n if (trace !== undefined) {\n trace.attachExtraTrace(error);\n } else if (!error.__stackCleaned__) {\n var parsed = parseStackAndMessage(error);\n util.notEnumerableProp(error, \"stack\",\n parsed.message + \"\\n\" + parsed.stack.join(\"\\n\"));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n }\n }\n}\n\nfunction longStackTracesDereferenceTrace() {\n this._trace = undefined;\n}\n\nfunction checkForgottenReturns(returnValue, promiseCreated, name, promise,\n parent) {\n if (returnValue === undefined && promiseCreated !== null &&\n wForgottenReturn) {\n if (parent !== undefined && parent._returnedNonUndefined()) return;\n if ((promise._bitField & 65535) === 0) return;\n\n if (name) name = name + \" \";\n var handlerLine = \"\";\n var creatorLine = \"\";\n if (promiseCreated._trace) {\n var traceLines = promiseCreated._trace.stack.split(\"\\n\");\n var stack = cleanStack(traceLines);\n for (var i = stack.length - 1; i >= 0; --i) {\n var line = stack[i];\n if (!nodeFramePattern.test(line)) {\n var lineMatches = line.match(parseLinePattern);\n if (lineMatches) {\n handlerLine = \"at \" + lineMatches[1] +\n \":\" + lineMatches[2] + \":\" + lineMatches[3] + \" \";\n }\n break;\n }\n }\n\n if (stack.length > 0) {\n var firstUserLine = stack[0];\n for (var i = 0; i < traceLines.length; ++i) {\n\n if (traceLines[i] === firstUserLine) {\n if (i > 0) {\n creatorLine = \"\\n\" + traceLines[i - 1];\n }\n break;\n }\n }\n\n }\n }\n var msg = \"a promise was created in a \" + name +\n \"handler \" + handlerLine + \"but was not returned from it, \" +\n \"see http://goo.gl/rRqMUw\" +\n creatorLine;\n promise._warn(msg, true, promiseCreated);\n }\n}\n\nfunction deprecated(name, replacement) {\n var message = name +\n \" is deprecated and will be removed in a future version.\";\n if (replacement) message += \" Use \" + replacement + \" instead.\";\n return warn(message);\n}\n\nfunction warn(message, shouldUseOwnTrace, promise) {\n if (!config.warnings) return;\n var warning = new Warning(message);\n var ctx;\n if (shouldUseOwnTrace) {\n promise._attachExtraTrace(warning);\n } else if (config.longStackTraces && (ctx = Promise._peekContext())) {\n ctx.attachExtraTrace(warning);\n } else {\n var parsed = parseStackAndMessage(warning);\n warning.stack = parsed.message + \"\\n\" + parsed.stack.join(\"\\n\");\n }\n\n if (!activeFireEvent(\"warning\", warning)) {\n formatAndLogError(warning, \"\", true);\n }\n}\n\nfunction reconstructStack(message, stacks) {\n for (var i = 0; i < stacks.length - 1; ++i) {\n stacks[i].push(\"From previous event:\");\n stacks[i] = stacks[i].join(\"\\n\");\n }\n if (i < stacks.length) {\n stacks[i] = stacks[i].join(\"\\n\");\n }\n return message + \"\\n\" + stacks.join(\"\\n\");\n}\n\nfunction removeDuplicateOrEmptyJumps(stacks) {\n for (var i = 0; i < stacks.length; ++i) {\n if (stacks[i].length === 0 ||\n ((i + 1 < stacks.length) && stacks[i][0] === stacks[i+1][0])) {\n stacks.splice(i, 1);\n i--;\n }\n }\n}\n\nfunction removeCommonRoots(stacks) {\n var current = stacks[0];\n for (var i = 1; i < stacks.length; ++i) {\n var prev = stacks[i];\n var currentLastIndex = current.length - 1;\n var currentLastLine = current[currentLastIndex];\n var commonRootMeetPoint = -1;\n\n for (var j = prev.length - 1; j >= 0; --j) {\n if (prev[j] === currentLastLine) {\n commonRootMeetPoint = j;\n break;\n }\n }\n\n for (var j = commonRootMeetPoint; j >= 0; --j) {\n var line = prev[j];\n if (current[currentLastIndex] === line) {\n current.pop();\n currentLastIndex--;\n } else {\n break;\n }\n }\n current = prev;\n }\n}\n\nfunction cleanStack(stack) {\n var ret = [];\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n var isTraceLine = \" (No stack trace)\" === line ||\n stackFramePattern.test(line);\n var isInternalFrame = isTraceLine && shouldIgnore(line);\n if (isTraceLine && !isInternalFrame) {\n if (indentStackFrames && line.charAt(0) !== \" \") {\n line = \" \" + line;\n }\n ret.push(line);\n }\n }\n return ret;\n}\n\nfunction stackFramesAsArray(error) {\n var stack = error.stack.replace(/\\s+$/g, \"\").split(\"\\n\");\n for (var i = 0; i < stack.length; ++i) {\n var line = stack[i];\n if (\" (No stack trace)\" === line || stackFramePattern.test(line)) {\n break;\n }\n }\n if (i > 0 && error.name != \"SyntaxError\") {\n stack = stack.slice(i);\n }\n return stack;\n}\n\nfunction parseStackAndMessage(error) {\n var stack = error.stack;\n var message = error.toString();\n stack = typeof stack === \"string\" && stack.length > 0\n ? stackFramesAsArray(error) : [\" (No stack trace)\"];\n return {\n message: message,\n stack: error.name == \"SyntaxError\" ? stack : cleanStack(stack)\n };\n}\n\nfunction formatAndLogError(error, title, isSoft) {\n if (typeof console !== \"undefined\") {\n var message;\n if (util.isObject(error)) {\n var stack = error.stack;\n message = title + formatStack(stack, error);\n } else {\n message = title + String(error);\n }\n if (typeof printWarning === \"function\") {\n printWarning(message, isSoft);\n } else if (typeof console.log === \"function\" ||\n typeof console.log === \"object\") {\n console.log(message);\n }\n }\n}\n\nfunction fireRejectionEvent(name, localHandler, reason, promise) {\n var localEventFired = false;\n try {\n if (typeof localHandler === \"function\") {\n localEventFired = true;\n if (name === \"rejectionHandled\") {\n localHandler(promise);\n } else {\n localHandler(reason, promise);\n }\n }\n } catch (e) {\n async.throwLater(e);\n }\n\n if (name === \"unhandledRejection\") {\n if (!activeFireEvent(name, reason, promise) && !localEventFired) {\n formatAndLogError(reason, \"Unhandled rejection \");\n }\n } else {\n activeFireEvent(name, promise);\n }\n}\n\nfunction formatNonError(obj) {\n var str;\n if (typeof obj === \"function\") {\n str = \"[function \" +\n (obj.name || \"anonymous\") +\n \"]\";\n } else {\n str = obj && typeof obj.toString === \"function\"\n ? obj.toString() : util.toString(obj);\n var ruselessToString = /\\[object [a-zA-Z0-9$_]+\\]/;\n if (ruselessToString.test(str)) {\n try {\n var newStr = JSON.stringify(obj);\n str = newStr;\n }\n catch(e) {\n\n }\n }\n if (str.length === 0) {\n str = \"(empty array)\";\n }\n }\n return (\"(<\" + snip(str) + \">, no stack trace)\");\n}\n\nfunction snip(str) {\n var maxChars = 41;\n if (str.length < maxChars) {\n return str;\n }\n return str.substr(0, maxChars - 3) + \"...\";\n}\n\nfunction longStackTracesIsSupported() {\n return typeof captureStackTrace === \"function\";\n}\n\nvar shouldIgnore = function() { return false; };\nvar parseLineInfoRegex = /[\\/<\\(]([^:\\/]+):(\\d+):(?:\\d+)\\)?\\s*$/;\nfunction parseLineInfo(line) {\n var matches = line.match(parseLineInfoRegex);\n if (matches) {\n return {\n fileName: matches[1],\n line: parseInt(matches[2], 10)\n };\n }\n}\n\nfunction setBounds(firstLineError, lastLineError) {\n if (!longStackTracesIsSupported()) return;\n var firstStackLines = firstLineError.stack.split(\"\\n\");\n var lastStackLines = lastLineError.stack.split(\"\\n\");\n var firstIndex = -1;\n var lastIndex = -1;\n var firstFileName;\n var lastFileName;\n for (var i = 0; i < firstStackLines.length; ++i) {\n var result = parseLineInfo(firstStackLines[i]);\n if (result) {\n firstFileName = result.fileName;\n firstIndex = result.line;\n break;\n }\n }\n for (var i = 0; i < lastStackLines.length; ++i) {\n var result = parseLineInfo(lastStackLines[i]);\n if (result) {\n lastFileName = result.fileName;\n lastIndex = result.line;\n break;\n }\n }\n if (firstIndex < 0 || lastIndex < 0 || !firstFileName || !lastFileName ||\n firstFileName !== lastFileName || firstIndex >= lastIndex) {\n return;\n }\n\n shouldIgnore = function(line) {\n if (bluebirdFramePattern.test(line)) return true;\n var info = parseLineInfo(line);\n if (info) {\n if (info.fileName === firstFileName &&\n (firstIndex <= info.line && info.line <= lastIndex)) {\n return true;\n }\n }\n return false;\n };\n}\n\nfunction CapturedTrace(parent) {\n this._parent = parent;\n this._promisesCreated = 0;\n var length = this._length = 1 + (parent === undefined ? 0 : parent._length);\n captureStackTrace(this, CapturedTrace);\n if (length > 32) this.uncycle();\n}\nutil.inherits(CapturedTrace, Error);\nContext.CapturedTrace = CapturedTrace;\n\nCapturedTrace.prototype.uncycle = function() {\n var length = this._length;\n if (length < 2) return;\n var nodes = [];\n var stackToIndex = {};\n\n for (var i = 0, node = this; node !== undefined; ++i) {\n nodes.push(node);\n node = node._parent;\n }\n length = this._length = i;\n for (var i = length - 1; i >= 0; --i) {\n var stack = nodes[i].stack;\n if (stackToIndex[stack] === undefined) {\n stackToIndex[stack] = i;\n }\n }\n for (var i = 0; i < length; ++i) {\n var currentStack = nodes[i].stack;\n var index = stackToIndex[currentStack];\n if (index !== undefined && index !== i) {\n if (index > 0) {\n nodes[index - 1]._parent = undefined;\n nodes[index - 1]._length = 1;\n }\n nodes[i]._parent = undefined;\n nodes[i]._length = 1;\n var cycleEdgeNode = i > 0 ? nodes[i - 1] : this;\n\n if (index < length - 1) {\n cycleEdgeNode._parent = nodes[index + 1];\n cycleEdgeNode._parent.uncycle();\n cycleEdgeNode._length =\n cycleEdgeNode._parent._length + 1;\n } else {\n cycleEdgeNode._parent = undefined;\n cycleEdgeNode._length = 1;\n }\n var currentChildLength = cycleEdgeNode._length + 1;\n for (var j = i - 2; j >= 0; --j) {\n nodes[j]._length = currentChildLength;\n currentChildLength++;\n }\n return;\n }\n }\n};\n\nCapturedTrace.prototype.attachExtraTrace = function(error) {\n if (error.__stackCleaned__) return;\n this.uncycle();\n var parsed = parseStackAndMessage(error);\n var message = parsed.message;\n var stacks = [parsed.stack];\n\n var trace = this;\n while (trace !== undefined) {\n stacks.push(cleanStack(trace.stack.split(\"\\n\")));\n trace = trace._parent;\n }\n removeCommonRoots(stacks);\n removeDuplicateOrEmptyJumps(stacks);\n util.notEnumerableProp(error, \"stack\", reconstructStack(message, stacks));\n util.notEnumerableProp(error, \"__stackCleaned__\", true);\n};\n\nvar captureStackTrace = (function stackDetection() {\n var v8stackFramePattern = /^\\s*at\\s*/;\n var v8stackFormatter = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if (error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n if (typeof Error.stackTraceLimit === \"number\" &&\n typeof Error.captureStackTrace === \"function\") {\n Error.stackTraceLimit += 6;\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n var captureStackTrace = Error.captureStackTrace;\n\n shouldIgnore = function(line) {\n return bluebirdFramePattern.test(line);\n };\n return function(receiver, ignoreUntil) {\n Error.stackTraceLimit += 6;\n captureStackTrace(receiver, ignoreUntil);\n Error.stackTraceLimit -= 6;\n };\n }\n var err = new Error();\n\n if (typeof err.stack === \"string\" &&\n err.stack.split(\"\\n\")[0].indexOf(\"stackDetection@\") >= 0) {\n stackFramePattern = /@/;\n formatStack = v8stackFormatter;\n indentStackFrames = true;\n return function captureStackTrace(o) {\n o.stack = new Error().stack;\n };\n }\n\n var hasStackAfterThrow;\n try { throw new Error(); }\n catch(e) {\n hasStackAfterThrow = (\"stack\" in e);\n }\n if (!(\"stack\" in err) && hasStackAfterThrow &&\n typeof Error.stackTraceLimit === \"number\") {\n stackFramePattern = v8stackFramePattern;\n formatStack = v8stackFormatter;\n return function captureStackTrace(o) {\n Error.stackTraceLimit += 6;\n try { throw new Error(); }\n catch(e) { o.stack = e.stack; }\n Error.stackTraceLimit -= 6;\n };\n }\n\n formatStack = function(stack, error) {\n if (typeof stack === \"string\") return stack;\n\n if ((typeof error === \"object\" ||\n typeof error === \"function\") &&\n error.name !== undefined &&\n error.message !== undefined) {\n return error.toString();\n }\n return formatNonError(error);\n };\n\n return null;\n\n})([]);\n\nif (typeof console !== \"undefined\" && typeof console.warn !== \"undefined\") {\n printWarning = function (message) {\n console.warn(message);\n };\n if (util.isNode && process.stderr.isTTY) {\n printWarning = function(message, isSoft) {\n var color = isSoft ? \"\\u001b[33m\" : \"\\u001b[31m\";\n console.warn(color + message + \"\\u001b[0m\\n\");\n };\n } else if (!util.isNode && typeof (new Error().stack) === \"string\") {\n printWarning = function(message, isSoft) {\n console.warn(\"%c\" + message,\n isSoft ? \"color: darkorange\" : \"color: red\");\n };\n }\n}\n\nvar config = {\n warnings: warnings,\n longStackTraces: false,\n cancellation: false,\n monitoring: false\n};\n\nif (longStackTraces) Promise.longStackTraces();\n\nreturn {\n longStackTraces: function() {\n return config.longStackTraces;\n },\n warnings: function() {\n return config.warnings;\n },\n cancellation: function() {\n return config.cancellation;\n },\n monitoring: function() {\n return config.monitoring;\n },\n propagateFromFunction: function() {\n return propagateFromFunction;\n },\n boundValueFunction: function() {\n return boundValueFunction;\n },\n checkForgottenReturns: checkForgottenReturns,\n setBounds: setBounds,\n warn: warn,\n deprecated: deprecated,\n CapturedTrace: CapturedTrace,\n fireDomEvent: fireDomEvent,\n fireGlobalEvent: fireGlobalEvent\n};\n};\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],10:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction returner() {\n return this.value;\n}\nfunction thrower() {\n throw this.reason;\n}\n\nPromise.prototype[\"return\"] =\nPromise.prototype.thenReturn = function (value) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n returner, undefined, undefined, {value: value}, undefined);\n};\n\nPromise.prototype[\"throw\"] =\nPromise.prototype.thenThrow = function (reason) {\n return this._then(\n thrower, undefined, undefined, {reason: reason}, undefined);\n};\n\nPromise.prototype.catchThrow = function (reason) {\n if (arguments.length <= 1) {\n return this._then(\n undefined, thrower, undefined, {reason: reason}, undefined);\n } else {\n var _reason = arguments[1];\n var handler = function() {throw _reason;};\n return this.caught(reason, handler);\n }\n};\n\nPromise.prototype.catchReturn = function (value) {\n if (arguments.length <= 1) {\n if (value instanceof Promise) value.suppressUnhandledRejections();\n return this._then(\n undefined, returner, undefined, {value: value}, undefined);\n } else {\n var _value = arguments[1];\n if (_value instanceof Promise) _value.suppressUnhandledRejections();\n var handler = function() {return _value;};\n return this.caught(value, handler);\n }\n};\n};\n\n},{}],11:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseReduce = Promise.reduce;\nvar PromiseAll = Promise.all;\n\nfunction promiseAllThis() {\n return PromiseAll(this);\n}\n\nfunction PromiseMapSeries(promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, INTERNAL);\n}\n\nPromise.prototype.each = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, this, undefined);\n};\n\nPromise.prototype.mapSeries = function (fn) {\n return PromiseReduce(this, fn, INTERNAL, INTERNAL);\n};\n\nPromise.each = function (promises, fn) {\n return PromiseReduce(promises, fn, INTERNAL, 0)\n ._then(promiseAllThis, undefined, undefined, promises, undefined);\n};\n\nPromise.mapSeries = PromiseMapSeries;\n};\n\n\n},{}],12:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar Objectfreeze = es5.freeze;\nvar util = _dereq_(\"./util\");\nvar inherits = util.inherits;\nvar notEnumerableProp = util.notEnumerableProp;\n\nfunction subError(nameProperty, defaultMessage) {\n function SubError(message) {\n if (!(this instanceof SubError)) return new SubError(message);\n notEnumerableProp(this, \"message\",\n typeof message === \"string\" ? message : defaultMessage);\n notEnumerableProp(this, \"name\", nameProperty);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n Error.call(this);\n }\n }\n inherits(SubError, Error);\n return SubError;\n}\n\nvar _TypeError, _RangeError;\nvar Warning = subError(\"Warning\", \"warning\");\nvar CancellationError = subError(\"CancellationError\", \"cancellation error\");\nvar TimeoutError = subError(\"TimeoutError\", \"timeout error\");\nvar AggregateError = subError(\"AggregateError\", \"aggregate error\");\ntry {\n _TypeError = TypeError;\n _RangeError = RangeError;\n} catch(e) {\n _TypeError = subError(\"TypeError\", \"type error\");\n _RangeError = subError(\"RangeError\", \"range error\");\n}\n\nvar methods = (\"join pop push shift unshift slice filter forEach some \" +\n \"every map indexOf lastIndexOf reduce reduceRight sort reverse\").split(\" \");\n\nfor (var i = 0; i < methods.length; ++i) {\n if (typeof Array.prototype[methods[i]] === \"function\") {\n AggregateError.prototype[methods[i]] = Array.prototype[methods[i]];\n }\n}\n\nes5.defineProperty(AggregateError.prototype, \"length\", {\n value: 0,\n configurable: false,\n writable: true,\n enumerable: true\n});\nAggregateError.prototype[\"isOperational\"] = true;\nvar level = 0;\nAggregateError.prototype.toString = function() {\n var indent = Array(level * 4 + 1).join(\" \");\n var ret = \"\\n\" + indent + \"AggregateError of:\" + \"\\n\";\n level++;\n indent = Array(level * 4 + 1).join(\" \");\n for (var i = 0; i < this.length; ++i) {\n var str = this[i] === this ? \"[Circular AggregateError]\" : this[i] + \"\";\n var lines = str.split(\"\\n\");\n for (var j = 0; j < lines.length; ++j) {\n lines[j] = indent + lines[j];\n }\n str = lines.join(\"\\n\");\n ret += str + \"\\n\";\n }\n level--;\n return ret;\n};\n\nfunction OperationalError(message) {\n if (!(this instanceof OperationalError))\n return new OperationalError(message);\n notEnumerableProp(this, \"name\", \"OperationalError\");\n notEnumerableProp(this, \"message\", message);\n this.cause = message;\n this[\"isOperational\"] = true;\n\n if (message instanceof Error) {\n notEnumerableProp(this, \"message\", message.message);\n notEnumerableProp(this, \"stack\", message.stack);\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n}\ninherits(OperationalError, Error);\n\nvar errorTypes = Error[\"__BluebirdErrorTypes__\"];\nif (!errorTypes) {\n errorTypes = Objectfreeze({\n CancellationError: CancellationError,\n TimeoutError: TimeoutError,\n OperationalError: OperationalError,\n RejectionError: OperationalError,\n AggregateError: AggregateError\n });\n es5.defineProperty(Error, \"__BluebirdErrorTypes__\", {\n value: errorTypes,\n writable: false,\n enumerable: false,\n configurable: false\n });\n}\n\nmodule.exports = {\n Error: Error,\n TypeError: _TypeError,\n RangeError: _RangeError,\n CancellationError: errorTypes.CancellationError,\n OperationalError: errorTypes.OperationalError,\n TimeoutError: errorTypes.TimeoutError,\n AggregateError: errorTypes.AggregateError,\n Warning: Warning\n};\n\n},{\"./es5\":13,\"./util\":36}],13:[function(_dereq_,module,exports){\nvar isES5 = (function(){\n \"use strict\";\n return this === undefined;\n})();\n\nif (isES5) {\n module.exports = {\n freeze: Object.freeze,\n defineProperty: Object.defineProperty,\n getDescriptor: Object.getOwnPropertyDescriptor,\n keys: Object.keys,\n names: Object.getOwnPropertyNames,\n getPrototypeOf: Object.getPrototypeOf,\n isArray: Array.isArray,\n isES5: isES5,\n propertyIsWritable: function(obj, prop) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n return !!(!descriptor || descriptor.writable || descriptor.set);\n }\n };\n} else {\n var has = {}.hasOwnProperty;\n var str = {}.toString;\n var proto = {}.constructor.prototype;\n\n var ObjectKeys = function (o) {\n var ret = [];\n for (var key in o) {\n if (has.call(o, key)) {\n ret.push(key);\n }\n }\n return ret;\n };\n\n var ObjectGetDescriptor = function(o, key) {\n return {value: o[key]};\n };\n\n var ObjectDefineProperty = function (o, key, desc) {\n o[key] = desc.value;\n return o;\n };\n\n var ObjectFreeze = function (obj) {\n return obj;\n };\n\n var ObjectGetPrototypeOf = function (obj) {\n try {\n return Object(obj).constructor.prototype;\n }\n catch (e) {\n return proto;\n }\n };\n\n var ArrayIsArray = function (obj) {\n try {\n return str.call(obj) === \"[object Array]\";\n }\n catch(e) {\n return false;\n }\n };\n\n module.exports = {\n isArray: ArrayIsArray,\n keys: ObjectKeys,\n names: ObjectKeys,\n defineProperty: ObjectDefineProperty,\n getDescriptor: ObjectGetDescriptor,\n freeze: ObjectFreeze,\n getPrototypeOf: ObjectGetPrototypeOf,\n isES5: isES5,\n propertyIsWritable: function() {\n return true;\n }\n };\n}\n\n},{}],14:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar PromiseMap = Promise.map;\n\nPromise.prototype.filter = function (fn, options) {\n return PromiseMap(this, fn, options, INTERNAL);\n};\n\nPromise.filter = function (promises, fn, options) {\n return PromiseMap(promises, fn, options, INTERNAL);\n};\n};\n\n},{}],15:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, tryConvertToPromise, NEXT_FILTER) {\nvar util = _dereq_(\"./util\");\nvar CancellationError = Promise.CancellationError;\nvar errorObj = util.errorObj;\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\n\nfunction PassThroughHandlerContext(promise, type, handler) {\n this.promise = promise;\n this.type = type;\n this.handler = handler;\n this.called = false;\n this.cancelPromise = null;\n}\n\nPassThroughHandlerContext.prototype.isFinallyHandler = function() {\n return this.type === 0;\n};\n\nfunction FinallyHandlerCancelReaction(finallyHandler) {\n this.finallyHandler = finallyHandler;\n}\n\nFinallyHandlerCancelReaction.prototype._resultCancelled = function() {\n checkCancel(this.finallyHandler);\n};\n\nfunction checkCancel(ctx, reason) {\n if (ctx.cancelPromise != null) {\n if (arguments.length > 1) {\n ctx.cancelPromise._reject(reason);\n } else {\n ctx.cancelPromise._cancel();\n }\n ctx.cancelPromise = null;\n return true;\n }\n return false;\n}\n\nfunction succeed() {\n return finallyHandler.call(this, this.promise._target()._settledValue());\n}\nfunction fail(reason) {\n if (checkCancel(this, reason)) return;\n errorObj.e = reason;\n return errorObj;\n}\nfunction finallyHandler(reasonOrValue) {\n var promise = this.promise;\n var handler = this.handler;\n\n if (!this.called) {\n this.called = true;\n var ret = this.isFinallyHandler()\n ? handler.call(promise._boundValue())\n : handler.call(promise._boundValue(), reasonOrValue);\n if (ret === NEXT_FILTER) {\n return ret;\n } else if (ret !== undefined) {\n promise._setReturnedNonUndefined();\n var maybePromise = tryConvertToPromise(ret, promise);\n if (maybePromise instanceof Promise) {\n if (this.cancelPromise != null) {\n if (maybePromise._isCancelled()) {\n var reason =\n new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n errorObj.e = reason;\n return errorObj;\n } else if (maybePromise.isPending()) {\n maybePromise._attachCancellationCallback(\n new FinallyHandlerCancelReaction(this));\n }\n }\n return maybePromise._then(\n succeed, fail, undefined, this, undefined);\n }\n }\n }\n\n if (promise.isRejected()) {\n checkCancel(this);\n errorObj.e = reasonOrValue;\n return errorObj;\n } else {\n checkCancel(this);\n return reasonOrValue;\n }\n}\n\nPromise.prototype._passThrough = function(handler, type, success, fail) {\n if (typeof handler !== \"function\") return this.then();\n return this._then(success,\n fail,\n undefined,\n new PassThroughHandlerContext(this, type, handler),\n undefined);\n};\n\nPromise.prototype.lastly =\nPromise.prototype[\"finally\"] = function (handler) {\n return this._passThrough(handler,\n 0,\n finallyHandler,\n finallyHandler);\n};\n\n\nPromise.prototype.tap = function (handler) {\n return this._passThrough(handler, 1, finallyHandler);\n};\n\nPromise.prototype.tapCatch = function (handlerOrPredicate) {\n var len = arguments.length;\n if(len === 1) {\n return this._passThrough(handlerOrPredicate,\n 1,\n undefined,\n finallyHandler);\n } else {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return Promise.reject(new TypeError(\n \"tapCatch statement predicate: \"\n + \"expecting an object but got \" + util.classString(item)\n ));\n }\n }\n catchInstances.length = j;\n var handler = arguments[i];\n return this._passThrough(catchFilter(catchInstances, handler, this),\n 1,\n undefined,\n finallyHandler);\n }\n\n};\n\nreturn PassThroughHandlerContext;\n};\n\n},{\"./catch_filter\":7,\"./util\":36}],16:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n apiRejection,\n INTERNAL,\n tryConvertToPromise,\n Proxyable,\n debug) {\nvar errors = _dereq_(\"./errors\");\nvar TypeError = errors.TypeError;\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nvar yieldHandlers = [];\n\nfunction promiseFromYieldHandler(value, yieldHandlers, traceParent) {\n for (var i = 0; i < yieldHandlers.length; ++i) {\n traceParent._pushContext();\n var result = tryCatch(yieldHandlers[i])(value);\n traceParent._popContext();\n if (result === errorObj) {\n traceParent._pushContext();\n var ret = Promise.reject(errorObj.e);\n traceParent._popContext();\n return ret;\n }\n var maybePromise = tryConvertToPromise(result, traceParent);\n if (maybePromise instanceof Promise) return maybePromise;\n }\n return null;\n}\n\nfunction PromiseSpawn(generatorFunction, receiver, yieldHandler, stack) {\n if (debug.cancellation()) {\n var internal = new Promise(INTERNAL);\n var _finallyPromise = this._finallyPromise = new Promise(INTERNAL);\n this._promise = internal.lastly(function() {\n return _finallyPromise;\n });\n internal._captureStackTrace();\n internal._setOnCancel(this);\n } else {\n var promise = this._promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n }\n this._stack = stack;\n this._generatorFunction = generatorFunction;\n this._receiver = receiver;\n this._generator = undefined;\n this._yieldHandlers = typeof yieldHandler === \"function\"\n ? [yieldHandler].concat(yieldHandlers)\n : yieldHandlers;\n this._yieldedPromise = null;\n this._cancellationPhase = false;\n}\nutil.inherits(PromiseSpawn, Proxyable);\n\nPromiseSpawn.prototype._isResolved = function() {\n return this._promise === null;\n};\n\nPromiseSpawn.prototype._cleanup = function() {\n this._promise = this._generator = null;\n if (debug.cancellation() && this._finallyPromise !== null) {\n this._finallyPromise._fulfill();\n this._finallyPromise = null;\n }\n};\n\nPromiseSpawn.prototype._promiseCancelled = function() {\n if (this._isResolved()) return;\n var implementsReturn = typeof this._generator[\"return\"] !== \"undefined\";\n\n var result;\n if (!implementsReturn) {\n var reason = new Promise.CancellationError(\n \"generator .return() sentinel\");\n Promise.coroutine.returnSentinel = reason;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n result = tryCatch(this._generator[\"throw\"]).call(this._generator,\n reason);\n this._promise._popContext();\n } else {\n this._promise._pushContext();\n result = tryCatch(this._generator[\"return\"]).call(this._generator,\n undefined);\n this._promise._popContext();\n }\n this._cancellationPhase = true;\n this._yieldedPromise = null;\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseFulfilled = function(value) {\n this._yieldedPromise = null;\n this._promise._pushContext();\n var result = tryCatch(this._generator.next).call(this._generator, value);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._promiseRejected = function(reason) {\n this._yieldedPromise = null;\n this._promise._attachExtraTrace(reason);\n this._promise._pushContext();\n var result = tryCatch(this._generator[\"throw\"])\n .call(this._generator, reason);\n this._promise._popContext();\n this._continue(result);\n};\n\nPromiseSpawn.prototype._resultCancelled = function() {\n if (this._yieldedPromise instanceof Promise) {\n var promise = this._yieldedPromise;\n this._yieldedPromise = null;\n promise.cancel();\n }\n};\n\nPromiseSpawn.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseSpawn.prototype._run = function () {\n this._generator = this._generatorFunction.call(this._receiver);\n this._receiver =\n this._generatorFunction = undefined;\n this._promiseFulfilled(undefined);\n};\n\nPromiseSpawn.prototype._continue = function (result) {\n var promise = this._promise;\n if (result === errorObj) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._rejectCallback(result.e, false);\n }\n }\n\n var value = result.value;\n if (result.done === true) {\n this._cleanup();\n if (this._cancellationPhase) {\n return promise.cancel();\n } else {\n return promise._resolveCallback(value);\n }\n } else {\n var maybePromise = tryConvertToPromise(value, this._promise);\n if (!(maybePromise instanceof Promise)) {\n maybePromise =\n promiseFromYieldHandler(maybePromise,\n this._yieldHandlers,\n this._promise);\n if (maybePromise === null) {\n this._promiseRejected(\n new TypeError(\n \"A value %s was yielded that could not be treated as a promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\\u000a\".replace(\"%s\", String(value)) +\n \"From coroutine:\\u000a\" +\n this._stack.split(\"\\n\").slice(1, -7).join(\"\\n\")\n )\n );\n return;\n }\n }\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n this._yieldedPromise = maybePromise;\n maybePromise._proxy(this, null);\n } else if (((bitField & 33554432) !== 0)) {\n Promise._async.invoke(\n this._promiseFulfilled, this, maybePromise._value()\n );\n } else if (((bitField & 16777216) !== 0)) {\n Promise._async.invoke(\n this._promiseRejected, this, maybePromise._reason()\n );\n } else {\n this._promiseCancelled();\n }\n }\n};\n\nPromise.coroutine = function (generatorFunction, options) {\n if (typeof generatorFunction !== \"function\") {\n throw new TypeError(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var yieldHandler = Object(options).yieldHandler;\n var PromiseSpawn$ = PromiseSpawn;\n var stack = new Error().stack;\n return function () {\n var generator = generatorFunction.apply(this, arguments);\n var spawn = new PromiseSpawn$(undefined, undefined, yieldHandler,\n stack);\n var ret = spawn.promise();\n spawn._generator = generator;\n spawn._promiseFulfilled(undefined);\n return ret;\n };\n};\n\nPromise.coroutine.addYieldHandler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n yieldHandlers.push(fn);\n};\n\nPromise.spawn = function (generatorFunction) {\n debug.deprecated(\"Promise.spawn()\", \"Promise.coroutine()\");\n if (typeof generatorFunction !== \"function\") {\n return apiRejection(\"generatorFunction must be a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var spawn = new PromiseSpawn(generatorFunction, this);\n var ret = spawn.promise();\n spawn._run(Promise.spawn);\n return ret;\n};\n};\n\n},{\"./errors\":12,\"./util\":36}],17:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, tryConvertToPromise, INTERNAL, async,\n getDomain) {\nvar util = _dereq_(\"./util\");\nvar canEvaluate = util.canEvaluate;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar reject;\n\nif (!true) {\nif (canEvaluate) {\n var thenCallback = function(i) {\n return new Function(\"value\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = value; \\n\\\n holder.checkFulfillment(this); \\n\\\n \".replace(/Index/g, i));\n };\n\n var promiseSetter = function(i) {\n return new Function(\"promise\", \"holder\", \" \\n\\\n 'use strict'; \\n\\\n holder.pIndex = promise; \\n\\\n \".replace(/Index/g, i));\n };\n\n var generateHolderClass = function(total) {\n var props = new Array(total);\n for (var i = 0; i < props.length; ++i) {\n props[i] = \"this.p\" + (i+1);\n }\n var assignment = props.join(\" = \") + \" = null;\";\n var cancellationCode= \"var promise;\\n\" + props.map(function(prop) {\n return \" \\n\\\n promise = \" + prop + \"; \\n\\\n if (promise instanceof Promise) { \\n\\\n promise.cancel(); \\n\\\n } \\n\\\n \";\n }).join(\"\\n\");\n var passedArguments = props.join(\", \");\n var name = \"Holder$\" + total;\n\n\n var code = \"return function(tryCatch, errorObj, Promise, async) { \\n\\\n 'use strict'; \\n\\\n function [TheName](fn) { \\n\\\n [TheProperties] \\n\\\n this.fn = fn; \\n\\\n this.asyncNeeded = true; \\n\\\n this.now = 0; \\n\\\n } \\n\\\n \\n\\\n [TheName].prototype._callFunction = function(promise) { \\n\\\n promise._pushContext(); \\n\\\n var ret = tryCatch(this.fn)([ThePassedArguments]); \\n\\\n promise._popContext(); \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(ret.e, false); \\n\\\n } else { \\n\\\n promise._resolveCallback(ret); \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype.checkFulfillment = function(promise) { \\n\\\n var now = ++this.now; \\n\\\n if (now === [TheTotal]) { \\n\\\n if (this.asyncNeeded) { \\n\\\n async.invoke(this._callFunction, this, promise); \\n\\\n } else { \\n\\\n this._callFunction(promise); \\n\\\n } \\n\\\n \\n\\\n } \\n\\\n }; \\n\\\n \\n\\\n [TheName].prototype._resultCancelled = function() { \\n\\\n [CancellationCode] \\n\\\n }; \\n\\\n \\n\\\n return [TheName]; \\n\\\n }(tryCatch, errorObj, Promise, async); \\n\\\n \";\n\n code = code.replace(/\\[TheName\\]/g, name)\n .replace(/\\[TheTotal\\]/g, total)\n .replace(/\\[ThePassedArguments\\]/g, passedArguments)\n .replace(/\\[TheProperties\\]/g, assignment)\n .replace(/\\[CancellationCode\\]/g, cancellationCode);\n\n return new Function(\"tryCatch\", \"errorObj\", \"Promise\", \"async\", code)\n (tryCatch, errorObj, Promise, async);\n };\n\n var holderClasses = [];\n var thenCallbacks = [];\n var promiseSetters = [];\n\n for (var i = 0; i < 8; ++i) {\n holderClasses.push(generateHolderClass(i + 1));\n thenCallbacks.push(thenCallback(i + 1));\n promiseSetters.push(promiseSetter(i + 1));\n }\n\n reject = function (reason) {\n this._reject(reason);\n };\n}}\n\nPromise.join = function () {\n var last = arguments.length - 1;\n var fn;\n if (last > 0 && typeof arguments[last] === \"function\") {\n fn = arguments[last];\n if (!true) {\n if (last <= 8 && canEvaluate) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var HolderClass = holderClasses[last - 1];\n var holder = new HolderClass(fn);\n var callbacks = thenCallbacks;\n\n for (var i = 0; i < last; ++i) {\n var maybePromise = tryConvertToPromise(arguments[i], ret);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n maybePromise._then(callbacks[i], reject,\n undefined, ret, holder);\n promiseSetters[i](maybePromise, holder);\n holder.asyncNeeded = false;\n } else if (((bitField & 33554432) !== 0)) {\n callbacks[i].call(ret,\n maybePromise._value(), holder);\n } else if (((bitField & 16777216) !== 0)) {\n ret._reject(maybePromise._reason());\n } else {\n ret._cancel();\n }\n } else {\n callbacks[i].call(ret, maybePromise, holder);\n }\n }\n\n if (!ret._isFateSealed()) {\n if (holder.asyncNeeded) {\n var domain = getDomain();\n if (domain !== null) {\n holder.fn = util.domainBind(domain, holder.fn);\n }\n }\n ret._setAsyncGuaranteed();\n ret._setOnCancel(holder);\n }\n return ret;\n }\n }\n }\n var args = [].slice.call(arguments);;\n if (fn) args.pop();\n var ret = new PromiseArray(args).promise();\n return fn !== undefined ? ret.spread(fn) : ret;\n};\n\n};\n\n},{\"./util\":36}],18:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\nvar async = Promise._async;\n\nfunction MappingPromiseArray(promises, fn, limit, _filter) {\n this.constructor$(promises);\n this._promise._captureStackTrace();\n var domain = getDomain();\n this._callback = domain === null ? fn : util.domainBind(domain, fn);\n this._preservedValues = _filter === INTERNAL\n ? new Array(this.length())\n : null;\n this._limit = limit;\n this._inFlight = 0;\n this._queue = [];\n async.invoke(this._asyncInit, this, undefined);\n}\nutil.inherits(MappingPromiseArray, PromiseArray);\n\nMappingPromiseArray.prototype._asyncInit = function() {\n this._init$(undefined, -2);\n};\n\nMappingPromiseArray.prototype._init = function () {};\n\nMappingPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var values = this._values;\n var length = this.length();\n var preservedValues = this._preservedValues;\n var limit = this._limit;\n\n if (index < 0) {\n index = (index * -1) - 1;\n values[index] = value;\n if (limit >= 1) {\n this._inFlight--;\n this._drainQueue();\n if (this._isResolved()) return true;\n }\n } else {\n if (limit >= 1 && this._inFlight >= limit) {\n values[index] = value;\n this._queue.push(index);\n return false;\n }\n if (preservedValues !== null) preservedValues[index] = value;\n\n var promise = this._promise;\n var callback = this._callback;\n var receiver = promise._boundValue();\n promise._pushContext();\n var ret = tryCatch(callback).call(receiver, value, index, length);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n preservedValues !== null ? \"Promise.filter\" : \"Promise.map\",\n promise\n );\n if (ret === errorObj) {\n this._reject(ret.e);\n return true;\n }\n\n var maybePromise = tryConvertToPromise(ret, this._promise);\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n var bitField = maybePromise._bitField;\n ;\n if (((bitField & 50397184) === 0)) {\n if (limit >= 1) this._inFlight++;\n values[index] = maybePromise;\n maybePromise._proxy(this, (index + 1) * -1);\n return false;\n } else if (((bitField & 33554432) !== 0)) {\n ret = maybePromise._value();\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(maybePromise._reason());\n return true;\n } else {\n this._cancel();\n return true;\n }\n }\n values[index] = ret;\n }\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= length) {\n if (preservedValues !== null) {\n this._filter(values, preservedValues);\n } else {\n this._resolve(values);\n }\n return true;\n }\n return false;\n};\n\nMappingPromiseArray.prototype._drainQueue = function () {\n var queue = this._queue;\n var limit = this._limit;\n var values = this._values;\n while (queue.length > 0 && this._inFlight < limit) {\n if (this._isResolved()) return;\n var index = queue.pop();\n this._promiseFulfilled(values[index], index);\n }\n};\n\nMappingPromiseArray.prototype._filter = function (booleans, values) {\n var len = values.length;\n var ret = new Array(len);\n var j = 0;\n for (var i = 0; i < len; ++i) {\n if (booleans[i]) ret[j++] = values[i];\n }\n ret.length = j;\n this._resolve(ret);\n};\n\nMappingPromiseArray.prototype.preservedValues = function () {\n return this._preservedValues;\n};\n\nfunction map(promises, fn, options, _filter) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n\n var limit = 0;\n if (options !== undefined) {\n if (typeof options === \"object\" && options !== null) {\n if (typeof options.concurrency !== \"number\") {\n return Promise.reject(\n new TypeError(\"'concurrency' must be a number but it is \" +\n util.classString(options.concurrency)));\n }\n limit = options.concurrency;\n } else {\n return Promise.reject(new TypeError(\n \"options argument must be an object but it is \" +\n util.classString(options)));\n }\n }\n limit = typeof limit === \"number\" &&\n isFinite(limit) && limit >= 1 ? limit : 0;\n return new MappingPromiseArray(promises, fn, limit, _filter).promise();\n}\n\nPromise.prototype.map = function (fn, options) {\n return map(this, fn, options, null);\n};\n\nPromise.map = function (promises, fn, options, _filter) {\n return map(promises, fn, options, _filter);\n};\n\n\n};\n\n},{\"./util\":36}],19:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, INTERNAL, tryConvertToPromise, apiRejection, debug) {\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nPromise.method = function (fn) {\n if (typeof fn !== \"function\") {\n throw new Promise.TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return function () {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value = tryCatch(fn).apply(this, arguments);\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.method\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n };\n};\n\nPromise.attempt = Promise[\"try\"] = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._pushContext();\n var value;\n if (arguments.length > 1) {\n debug.deprecated(\"calling Promise.try with more than 1 argument\");\n var arg = arguments[1];\n var ctx = arguments[2];\n value = util.isArray(arg) ? tryCatch(fn).apply(ctx, arg)\n : tryCatch(fn).call(ctx, arg);\n } else {\n value = tryCatch(fn)();\n }\n var promiseCreated = ret._popContext();\n debug.checkForgottenReturns(\n value, promiseCreated, \"Promise.try\", ret);\n ret._resolveFromSyncValue(value);\n return ret;\n};\n\nPromise.prototype._resolveFromSyncValue = function (value) {\n if (value === util.errorObj) {\n this._rejectCallback(value.e, false);\n } else {\n this._resolveCallback(value, true);\n }\n};\n};\n\n},{\"./util\":36}],20:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar errors = _dereq_(\"./errors\");\nvar OperationalError = errors.OperationalError;\nvar es5 = _dereq_(\"./es5\");\n\nfunction isUntypedError(obj) {\n return obj instanceof Error &&\n es5.getPrototypeOf(obj) === Error.prototype;\n}\n\nvar rErrorKey = /^(?:name|message|stack|cause)$/;\nfunction wrapAsOperationalError(obj) {\n var ret;\n if (isUntypedError(obj)) {\n ret = new OperationalError(obj);\n ret.name = obj.name;\n ret.message = obj.message;\n ret.stack = obj.stack;\n var keys = es5.keys(obj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!rErrorKey.test(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n }\n util.markAsOriginatingFromRejection(obj);\n return obj;\n}\n\nfunction nodebackForPromise(promise, multiArgs) {\n return function(err, value) {\n if (promise === null) return;\n if (err) {\n var wrapped = wrapAsOperationalError(maybeWrapAsError(err));\n promise._attachExtraTrace(wrapped);\n promise._reject(wrapped);\n } else if (!multiArgs) {\n promise._fulfill(value);\n } else {\n var args = [].slice.call(arguments, 1);;\n promise._fulfill(args);\n }\n promise = null;\n };\n}\n\nmodule.exports = nodebackForPromise;\n\n},{\"./errors\":12,\"./es5\":13,\"./util\":36}],21:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nvar util = _dereq_(\"./util\");\nvar async = Promise._async;\nvar tryCatch = util.tryCatch;\nvar errorObj = util.errorObj;\n\nfunction spreadAdapter(val, nodeback) {\n var promise = this;\n if (!util.isArray(val)) return successAdapter.call(promise, val, nodeback);\n var ret =\n tryCatch(nodeback).apply(promise._boundValue(), [null].concat(val));\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nfunction successAdapter(val, nodeback) {\n var promise = this;\n var receiver = promise._boundValue();\n var ret = val === undefined\n ? tryCatch(nodeback).call(receiver, null)\n : tryCatch(nodeback).call(receiver, null, val);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\nfunction errorAdapter(reason, nodeback) {\n var promise = this;\n if (!reason) {\n var newReason = new Error(reason + \"\");\n newReason.cause = reason;\n reason = newReason;\n }\n var ret = tryCatch(nodeback).call(promise._boundValue(), reason);\n if (ret === errorObj) {\n async.throwLater(ret.e);\n }\n}\n\nPromise.prototype.asCallback = Promise.prototype.nodeify = function (nodeback,\n options) {\n if (typeof nodeback == \"function\") {\n var adapter = successAdapter;\n if (options !== undefined && Object(options).spread) {\n adapter = spreadAdapter;\n }\n this._then(\n adapter,\n errorAdapter,\n undefined,\n this,\n nodeback\n );\n }\n return this;\n};\n};\n\n},{\"./util\":36}],22:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function() {\nvar makeSelfResolutionError = function () {\n return new TypeError(\"circular promise resolution chain\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar reflectHandler = function() {\n return new Promise.PromiseInspection(this._target());\n};\nvar apiRejection = function(msg) {\n return Promise.reject(new TypeError(msg));\n};\nfunction Proxyable() {}\nvar UNDEFINED_BINDING = {};\nvar util = _dereq_(\"./util\");\n\nvar getDomain;\nif (util.isNode) {\n getDomain = function() {\n var ret = process.domain;\n if (ret === undefined) ret = null;\n return ret;\n };\n} else {\n getDomain = function() {\n return null;\n };\n}\nutil.notEnumerableProp(Promise, \"_getDomain\", getDomain);\n\nvar es5 = _dereq_(\"./es5\");\nvar Async = _dereq_(\"./async\");\nvar async = new Async();\nes5.defineProperty(Promise, \"_async\", {value: async});\nvar errors = _dereq_(\"./errors\");\nvar TypeError = Promise.TypeError = errors.TypeError;\nPromise.RangeError = errors.RangeError;\nvar CancellationError = Promise.CancellationError = errors.CancellationError;\nPromise.TimeoutError = errors.TimeoutError;\nPromise.OperationalError = errors.OperationalError;\nPromise.RejectionError = errors.OperationalError;\nPromise.AggregateError = errors.AggregateError;\nvar INTERNAL = function(){};\nvar APPLY = {};\nvar NEXT_FILTER = {};\nvar tryConvertToPromise = _dereq_(\"./thenables\")(Promise, INTERNAL);\nvar PromiseArray =\n _dereq_(\"./promise_array\")(Promise, INTERNAL,\n tryConvertToPromise, apiRejection, Proxyable);\nvar Context = _dereq_(\"./context\")(Promise);\n /*jshint unused:false*/\nvar createContext = Context.create;\nvar debug = _dereq_(\"./debuggability\")(Promise, Context);\nvar CapturedTrace = debug.CapturedTrace;\nvar PassThroughHandlerContext =\n _dereq_(\"./finally\")(Promise, tryConvertToPromise, NEXT_FILTER);\nvar catchFilter = _dereq_(\"./catch_filter\")(NEXT_FILTER);\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar errorObj = util.errorObj;\nvar tryCatch = util.tryCatch;\nfunction check(self, executor) {\n if (self == null || self.constructor !== Promise) {\n throw new TypeError(\"the promise constructor cannot be invoked directly\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n if (typeof executor !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(executor));\n }\n\n}\n\nfunction Promise(executor) {\n if (executor !== INTERNAL) {\n check(this, executor);\n }\n this._bitField = 0;\n this._fulfillmentHandler0 = undefined;\n this._rejectionHandler0 = undefined;\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._resolveFromExecutor(executor);\n this._promiseCreated();\n this._fireEvent(\"promiseCreated\", this);\n}\n\nPromise.prototype.toString = function () {\n return \"[object Promise]\";\n};\n\nPromise.prototype.caught = Promise.prototype[\"catch\"] = function (fn) {\n var len = arguments.length;\n if (len > 1) {\n var catchInstances = new Array(len - 1),\n j = 0, i;\n for (i = 0; i < len - 1; ++i) {\n var item = arguments[i];\n if (util.isObject(item)) {\n catchInstances[j++] = item;\n } else {\n return apiRejection(\"Catch statement predicate: \" +\n \"expecting an object but got \" + util.classString(item));\n }\n }\n catchInstances.length = j;\n fn = arguments[i];\n return this.then(undefined, catchFilter(catchInstances, fn, this));\n }\n return this.then(undefined, fn);\n};\n\nPromise.prototype.reflect = function () {\n return this._then(reflectHandler,\n reflectHandler, undefined, this, undefined);\n};\n\nPromise.prototype.then = function (didFulfill, didReject) {\n if (debug.warnings() && arguments.length > 0 &&\n typeof didFulfill !== \"function\" &&\n typeof didReject !== \"function\") {\n var msg = \".then() only accepts functions but was passed: \" +\n util.classString(didFulfill);\n if (arguments.length > 1) {\n msg += \", \" + util.classString(didReject);\n }\n this._warn(msg);\n }\n return this._then(didFulfill, didReject, undefined, undefined, undefined);\n};\n\nPromise.prototype.done = function (didFulfill, didReject) {\n var promise =\n this._then(didFulfill, didReject, undefined, undefined, undefined);\n promise._setIsFinal();\n};\n\nPromise.prototype.spread = function (fn) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n return this.all()._then(fn, undefined, undefined, APPLY, undefined);\n};\n\nPromise.prototype.toJSON = function () {\n var ret = {\n isFulfilled: false,\n isRejected: false,\n fulfillmentValue: undefined,\n rejectionReason: undefined\n };\n if (this.isFulfilled()) {\n ret.fulfillmentValue = this.value();\n ret.isFulfilled = true;\n } else if (this.isRejected()) {\n ret.rejectionReason = this.reason();\n ret.isRejected = true;\n }\n return ret;\n};\n\nPromise.prototype.all = function () {\n if (arguments.length > 0) {\n this._warn(\".all() was passed arguments but it does not take any\");\n }\n return new PromiseArray(this).promise();\n};\n\nPromise.prototype.error = function (fn) {\n return this.caught(util.originatesFromRejection, fn);\n};\n\nPromise.getNewLibraryCopy = module.exports;\n\nPromise.is = function (val) {\n return val instanceof Promise;\n};\n\nPromise.fromNode = Promise.fromCallback = function(fn) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n var multiArgs = arguments.length > 1 ? !!Object(arguments[1]).multiArgs\n : false;\n var result = tryCatch(fn)(nodebackForPromise(ret, multiArgs));\n if (result === errorObj) {\n ret._rejectCallback(result.e, true);\n }\n if (!ret._isFateSealed()) ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.all = function (promises) {\n return new PromiseArray(promises).promise();\n};\n\nPromise.cast = function (obj) {\n var ret = tryConvertToPromise(obj);\n if (!(ret instanceof Promise)) {\n ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._setFulfilled();\n ret._rejectionHandler0 = obj;\n }\n return ret;\n};\n\nPromise.resolve = Promise.fulfilled = Promise.cast;\n\nPromise.reject = Promise.rejected = function (reason) {\n var ret = new Promise(INTERNAL);\n ret._captureStackTrace();\n ret._rejectCallback(reason, true);\n return ret;\n};\n\nPromise.setScheduler = function(fn) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n return async.setScheduler(fn);\n};\n\nPromise.prototype._then = function (\n didFulfill,\n didReject,\n _, receiver,\n internalData\n) {\n var haveInternalData = internalData !== undefined;\n var promise = haveInternalData ? internalData : new Promise(INTERNAL);\n var target = this._target();\n var bitField = target._bitField;\n\n if (!haveInternalData) {\n promise._propagateFrom(this, 3);\n promise._captureStackTrace();\n if (receiver === undefined &&\n ((this._bitField & 2097152) !== 0)) {\n if (!((bitField & 50397184) === 0)) {\n receiver = this._boundValue();\n } else {\n receiver = target === this ? undefined : this._boundTo;\n }\n }\n this._fireEvent(\"promiseChained\", this, promise);\n }\n\n var domain = getDomain();\n if (!((bitField & 50397184) === 0)) {\n var handler, value, settler = target._settlePromiseCtx;\n if (((bitField & 33554432) !== 0)) {\n value = target._rejectionHandler0;\n handler = didFulfill;\n } else if (((bitField & 16777216) !== 0)) {\n value = target._fulfillmentHandler0;\n handler = didReject;\n target._unsetRejectionIsUnhandled();\n } else {\n settler = target._settlePromiseLateCancellationObserver;\n value = new CancellationError(\"late cancellation observer\");\n target._attachExtraTrace(value);\n handler = didReject;\n }\n\n async.invoke(settler, target, {\n handler: domain === null ? handler\n : (typeof handler === \"function\" &&\n util.domainBind(domain, handler)),\n promise: promise,\n receiver: receiver,\n value: value\n });\n } else {\n target._addCallbacks(didFulfill, didReject, promise, receiver, domain);\n }\n\n return promise;\n};\n\nPromise.prototype._length = function () {\n return this._bitField & 65535;\n};\n\nPromise.prototype._isFateSealed = function () {\n return (this._bitField & 117506048) !== 0;\n};\n\nPromise.prototype._isFollowing = function () {\n return (this._bitField & 67108864) === 67108864;\n};\n\nPromise.prototype._setLength = function (len) {\n this._bitField = (this._bitField & -65536) |\n (len & 65535);\n};\n\nPromise.prototype._setFulfilled = function () {\n this._bitField = this._bitField | 33554432;\n this._fireEvent(\"promiseFulfilled\", this);\n};\n\nPromise.prototype._setRejected = function () {\n this._bitField = this._bitField | 16777216;\n this._fireEvent(\"promiseRejected\", this);\n};\n\nPromise.prototype._setFollowing = function () {\n this._bitField = this._bitField | 67108864;\n this._fireEvent(\"promiseResolved\", this);\n};\n\nPromise.prototype._setIsFinal = function () {\n this._bitField = this._bitField | 4194304;\n};\n\nPromise.prototype._isFinal = function () {\n return (this._bitField & 4194304) > 0;\n};\n\nPromise.prototype._unsetCancelled = function() {\n this._bitField = this._bitField & (~65536);\n};\n\nPromise.prototype._setCancelled = function() {\n this._bitField = this._bitField | 65536;\n this._fireEvent(\"promiseCancelled\", this);\n};\n\nPromise.prototype._setWillBeCancelled = function() {\n this._bitField = this._bitField | 8388608;\n};\n\nPromise.prototype._setAsyncGuaranteed = function() {\n if (async.hasCustomScheduler()) return;\n this._bitField = this._bitField | 134217728;\n};\n\nPromise.prototype._receiverAt = function (index) {\n var ret = index === 0 ? this._receiver0 : this[\n index * 4 - 4 + 3];\n if (ret === UNDEFINED_BINDING) {\n return undefined;\n } else if (ret === undefined && this._isBound()) {\n return this._boundValue();\n }\n return ret;\n};\n\nPromise.prototype._promiseAt = function (index) {\n return this[\n index * 4 - 4 + 2];\n};\n\nPromise.prototype._fulfillmentHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 0];\n};\n\nPromise.prototype._rejectionHandlerAt = function (index) {\n return this[\n index * 4 - 4 + 1];\n};\n\nPromise.prototype._boundValue = function() {};\n\nPromise.prototype._migrateCallback0 = function (follower) {\n var bitField = follower._bitField;\n var fulfill = follower._fulfillmentHandler0;\n var reject = follower._rejectionHandler0;\n var promise = follower._promise0;\n var receiver = follower._receiverAt(0);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._migrateCallbackAt = function (follower, index) {\n var fulfill = follower._fulfillmentHandlerAt(index);\n var reject = follower._rejectionHandlerAt(index);\n var promise = follower._promiseAt(index);\n var receiver = follower._receiverAt(index);\n if (receiver === undefined) receiver = UNDEFINED_BINDING;\n this._addCallbacks(fulfill, reject, promise, receiver, null);\n};\n\nPromise.prototype._addCallbacks = function (\n fulfill,\n reject,\n promise,\n receiver,\n domain\n) {\n var index = this._length();\n\n if (index >= 65535 - 4) {\n index = 0;\n this._setLength(0);\n }\n\n if (index === 0) {\n this._promise0 = promise;\n this._receiver0 = receiver;\n if (typeof fulfill === \"function\") {\n this._fulfillmentHandler0 =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this._rejectionHandler0 =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n } else {\n var base = index * 4 - 4;\n this[base + 2] = promise;\n this[base + 3] = receiver;\n if (typeof fulfill === \"function\") {\n this[base + 0] =\n domain === null ? fulfill : util.domainBind(domain, fulfill);\n }\n if (typeof reject === \"function\") {\n this[base + 1] =\n domain === null ? reject : util.domainBind(domain, reject);\n }\n }\n this._setLength(index + 1);\n return index;\n};\n\nPromise.prototype._proxy = function (proxyable, arg) {\n this._addCallbacks(undefined, undefined, arg, proxyable, null);\n};\n\nPromise.prototype._resolveCallback = function(value, shouldBind) {\n if (((this._bitField & 117506048) !== 0)) return;\n if (value === this)\n return this._rejectCallback(makeSelfResolutionError(), false);\n var maybePromise = tryConvertToPromise(value, this);\n if (!(maybePromise instanceof Promise)) return this._fulfill(value);\n\n if (shouldBind) this._propagateFrom(maybePromise, 2);\n\n var promise = maybePromise._target();\n\n if (promise === this) {\n this._reject(makeSelfResolutionError());\n return;\n }\n\n var bitField = promise._bitField;\n if (((bitField & 50397184) === 0)) {\n var len = this._length();\n if (len > 0) promise._migrateCallback0(this);\n for (var i = 1; i < len; ++i) {\n promise._migrateCallbackAt(this, i);\n }\n this._setFollowing();\n this._setLength(0);\n this._setFollowee(promise);\n } else if (((bitField & 33554432) !== 0)) {\n this._fulfill(promise._value());\n } else if (((bitField & 16777216) !== 0)) {\n this._reject(promise._reason());\n } else {\n var reason = new CancellationError(\"late cancellation observer\");\n promise._attachExtraTrace(reason);\n this._reject(reason);\n }\n};\n\nPromise.prototype._rejectCallback =\nfunction(reason, synchronous, ignoreNonErrorWarnings) {\n var trace = util.ensureErrorObject(reason);\n var hasStack = trace === reason;\n if (!hasStack && !ignoreNonErrorWarnings && debug.warnings()) {\n var message = \"a promise was rejected with a non-error: \" +\n util.classString(reason);\n this._warn(message, true);\n }\n this._attachExtraTrace(trace, synchronous ? hasStack : false);\n this._reject(reason);\n};\n\nPromise.prototype._resolveFromExecutor = function (executor) {\n if (executor === INTERNAL) return;\n var promise = this;\n this._captureStackTrace();\n this._pushContext();\n var synchronous = true;\n var r = this._execute(executor, function(value) {\n promise._resolveCallback(value);\n }, function (reason) {\n promise._rejectCallback(reason, synchronous);\n });\n synchronous = false;\n this._popContext();\n\n if (r !== undefined) {\n promise._rejectCallback(r, true);\n }\n};\n\nPromise.prototype._settlePromiseFromHandler = function (\n handler, receiver, value, promise\n) {\n var bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n promise._pushContext();\n var x;\n if (receiver === APPLY) {\n if (!value || typeof value.length !== \"number\") {\n x = errorObj;\n x.e = new TypeError(\"cannot .spread() a non-array: \" +\n util.classString(value));\n } else {\n x = tryCatch(handler).apply(this._boundValue(), value);\n }\n } else {\n x = tryCatch(handler).call(receiver, value);\n }\n var promiseCreated = promise._popContext();\n bitField = promise._bitField;\n if (((bitField & 65536) !== 0)) return;\n\n if (x === NEXT_FILTER) {\n promise._reject(value);\n } else if (x === errorObj) {\n promise._rejectCallback(x.e, false);\n } else {\n debug.checkForgottenReturns(x, promiseCreated, \"\", promise, this);\n promise._resolveCallback(x);\n }\n};\n\nPromise.prototype._target = function() {\n var ret = this;\n while (ret._isFollowing()) ret = ret._followee();\n return ret;\n};\n\nPromise.prototype._followee = function() {\n return this._rejectionHandler0;\n};\n\nPromise.prototype._setFollowee = function(promise) {\n this._rejectionHandler0 = promise;\n};\n\nPromise.prototype._settlePromise = function(promise, handler, receiver, value) {\n var isPromise = promise instanceof Promise;\n var bitField = this._bitField;\n var asyncGuaranteed = ((bitField & 134217728) !== 0);\n if (((bitField & 65536) !== 0)) {\n if (isPromise) promise._invokeInternalOnCancel();\n\n if (receiver instanceof PassThroughHandlerContext &&\n receiver.isFinallyHandler()) {\n receiver.cancelPromise = promise;\n if (tryCatch(handler).call(receiver, value) === errorObj) {\n promise._reject(errorObj.e);\n }\n } else if (handler === reflectHandler) {\n promise._fulfill(reflectHandler.call(receiver));\n } else if (receiver instanceof Proxyable) {\n receiver._promiseCancelled(promise);\n } else if (isPromise || promise instanceof PromiseArray) {\n promise._cancel();\n } else {\n receiver.cancel();\n }\n } else if (typeof handler === \"function\") {\n if (!isPromise) {\n handler.call(receiver, value, promise);\n } else {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (receiver instanceof Proxyable) {\n if (!receiver._isResolved()) {\n if (((bitField & 33554432) !== 0)) {\n receiver._promiseFulfilled(value, promise);\n } else {\n receiver._promiseRejected(value, promise);\n }\n }\n } else if (isPromise) {\n if (asyncGuaranteed) promise._setAsyncGuaranteed();\n if (((bitField & 33554432) !== 0)) {\n promise._fulfill(value);\n } else {\n promise._reject(value);\n }\n }\n};\n\nPromise.prototype._settlePromiseLateCancellationObserver = function(ctx) {\n var handler = ctx.handler;\n var promise = ctx.promise;\n var receiver = ctx.receiver;\n var value = ctx.value;\n if (typeof handler === \"function\") {\n if (!(promise instanceof Promise)) {\n handler.call(receiver, value, promise);\n } else {\n this._settlePromiseFromHandler(handler, receiver, value, promise);\n }\n } else if (promise instanceof Promise) {\n promise._reject(value);\n }\n};\n\nPromise.prototype._settlePromiseCtx = function(ctx) {\n this._settlePromise(ctx.promise, ctx.handler, ctx.receiver, ctx.value);\n};\n\nPromise.prototype._settlePromise0 = function(handler, value, bitField) {\n var promise = this._promise0;\n var receiver = this._receiverAt(0);\n this._promise0 = undefined;\n this._receiver0 = undefined;\n this._settlePromise(promise, handler, receiver, value);\n};\n\nPromise.prototype._clearCallbackDataAtIndex = function(index) {\n var base = index * 4 - 4;\n this[base + 2] =\n this[base + 3] =\n this[base + 0] =\n this[base + 1] = undefined;\n};\n\nPromise.prototype._fulfill = function (value) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n if (value === this) {\n var err = makeSelfResolutionError();\n this._attachExtraTrace(err);\n return this._reject(err);\n }\n this._setFulfilled();\n this._rejectionHandler0 = value;\n\n if ((bitField & 65535) > 0) {\n if (((bitField & 134217728) !== 0)) {\n this._settlePromises();\n } else {\n async.settlePromises(this);\n }\n this._dereferenceTrace();\n }\n};\n\nPromise.prototype._reject = function (reason) {\n var bitField = this._bitField;\n if (((bitField & 117506048) >>> 16)) return;\n this._setRejected();\n this._fulfillmentHandler0 = reason;\n\n if (this._isFinal()) {\n return async.fatalError(reason, util.isNode);\n }\n\n if ((bitField & 65535) > 0) {\n async.settlePromises(this);\n } else {\n this._ensurePossibleRejectionHandled();\n }\n};\n\nPromise.prototype._fulfillPromises = function (len, value) {\n for (var i = 1; i < len; i++) {\n var handler = this._fulfillmentHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, value);\n }\n};\n\nPromise.prototype._rejectPromises = function (len, reason) {\n for (var i = 1; i < len; i++) {\n var handler = this._rejectionHandlerAt(i);\n var promise = this._promiseAt(i);\n var receiver = this._receiverAt(i);\n this._clearCallbackDataAtIndex(i);\n this._settlePromise(promise, handler, receiver, reason);\n }\n};\n\nPromise.prototype._settlePromises = function () {\n var bitField = this._bitField;\n var len = (bitField & 65535);\n\n if (len > 0) {\n if (((bitField & 16842752) !== 0)) {\n var reason = this._fulfillmentHandler0;\n this._settlePromise0(this._rejectionHandler0, reason, bitField);\n this._rejectPromises(len, reason);\n } else {\n var value = this._rejectionHandler0;\n this._settlePromise0(this._fulfillmentHandler0, value, bitField);\n this._fulfillPromises(len, value);\n }\n this._setLength(0);\n }\n this._clearCancellationData();\n};\n\nPromise.prototype._settledValue = function() {\n var bitField = this._bitField;\n if (((bitField & 33554432) !== 0)) {\n return this._rejectionHandler0;\n } else if (((bitField & 16777216) !== 0)) {\n return this._fulfillmentHandler0;\n }\n};\n\nfunction deferResolve(v) {this.promise._resolveCallback(v);}\nfunction deferReject(v) {this.promise._rejectCallback(v, false);}\n\nPromise.defer = Promise.pending = function() {\n debug.deprecated(\"Promise.defer\", \"new Promise\");\n var promise = new Promise(INTERNAL);\n return {\n promise: promise,\n resolve: deferResolve,\n reject: deferReject\n };\n};\n\nutil.notEnumerableProp(Promise,\n \"_makeSelfResolutionError\",\n makeSelfResolutionError);\n\n_dereq_(\"./method\")(Promise, INTERNAL, tryConvertToPromise, apiRejection,\n debug);\n_dereq_(\"./bind\")(Promise, INTERNAL, tryConvertToPromise, debug);\n_dereq_(\"./cancel\")(Promise, PromiseArray, apiRejection, debug);\n_dereq_(\"./direct_resolve\")(Promise);\n_dereq_(\"./synchronous_inspection\")(Promise);\n_dereq_(\"./join\")(\n Promise, PromiseArray, tryConvertToPromise, INTERNAL, async, getDomain);\nPromise.Promise = Promise;\nPromise.version = \"3.5.2\";\n_dereq_('./map.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./call_get.js')(Promise);\n_dereq_('./using.js')(Promise, apiRejection, tryConvertToPromise, createContext, INTERNAL, debug);\n_dereq_('./timers.js')(Promise, INTERNAL, debug);\n_dereq_('./generators.js')(Promise, apiRejection, INTERNAL, tryConvertToPromise, Proxyable, debug);\n_dereq_('./nodeify.js')(Promise);\n_dereq_('./promisify.js')(Promise, INTERNAL);\n_dereq_('./props.js')(Promise, PromiseArray, tryConvertToPromise, apiRejection);\n_dereq_('./race.js')(Promise, INTERNAL, tryConvertToPromise, apiRejection);\n_dereq_('./reduce.js')(Promise, PromiseArray, apiRejection, tryConvertToPromise, INTERNAL, debug);\n_dereq_('./settle.js')(Promise, PromiseArray, debug);\n_dereq_('./some.js')(Promise, PromiseArray, apiRejection);\n_dereq_('./filter.js')(Promise, INTERNAL);\n_dereq_('./each.js')(Promise, INTERNAL);\n_dereq_('./any.js')(Promise);\n \n util.toFastProperties(Promise); \n util.toFastProperties(Promise.prototype); \n function fillTypes(value) { \n var p = new Promise(INTERNAL); \n p._fulfillmentHandler0 = value; \n p._rejectionHandler0 = value; \n p._promise0 = value; \n p._receiver0 = value; \n } \n // Complete slack tracking, opt out of field-type tracking and \n // stabilize map \n fillTypes({a: 1}); \n fillTypes({b: 2}); \n fillTypes({c: 3}); \n fillTypes(1); \n fillTypes(function(){}); \n fillTypes(undefined); \n fillTypes(false); \n fillTypes(new Promise(INTERNAL)); \n debug.setBounds(Async.firstLineError, util.lastLineError); \n return Promise; \n\n};\n\n},{\"./any.js\":1,\"./async\":2,\"./bind\":3,\"./call_get.js\":5,\"./cancel\":6,\"./catch_filter\":7,\"./context\":8,\"./debuggability\":9,\"./direct_resolve\":10,\"./each.js\":11,\"./errors\":12,\"./es5\":13,\"./filter.js\":14,\"./finally\":15,\"./generators.js\":16,\"./join\":17,\"./map.js\":18,\"./method\":19,\"./nodeback\":20,\"./nodeify.js\":21,\"./promise_array\":23,\"./promisify.js\":24,\"./props.js\":25,\"./race.js\":27,\"./reduce.js\":28,\"./settle.js\":30,\"./some.js\":31,\"./synchronous_inspection\":32,\"./thenables\":33,\"./timers.js\":34,\"./using.js\":35,\"./util\":36}],23:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, tryConvertToPromise,\n apiRejection, Proxyable) {\nvar util = _dereq_(\"./util\");\nvar isArray = util.isArray;\n\nfunction toResolutionValue(val) {\n switch(val) {\n case -2: return [];\n case -3: return {};\n case -6: return new Map();\n }\n}\n\nfunction PromiseArray(values) {\n var promise = this._promise = new Promise(INTERNAL);\n if (values instanceof Promise) {\n promise._propagateFrom(values, 3);\n }\n promise._setOnCancel(this);\n this._values = values;\n this._length = 0;\n this._totalResolved = 0;\n this._init(undefined, -2);\n}\nutil.inherits(PromiseArray, Proxyable);\n\nPromiseArray.prototype.length = function () {\n return this._length;\n};\n\nPromiseArray.prototype.promise = function () {\n return this._promise;\n};\n\nPromiseArray.prototype._init = function init(_, resolveValueIfEmpty) {\n var values = tryConvertToPromise(this._values, this._promise);\n if (values instanceof Promise) {\n values = values._target();\n var bitField = values._bitField;\n ;\n this._values = values;\n\n if (((bitField & 50397184) === 0)) {\n this._promise._setAsyncGuaranteed();\n return values._then(\n init,\n this._reject,\n undefined,\n this,\n resolveValueIfEmpty\n );\n } else if (((bitField & 33554432) !== 0)) {\n values = values._value();\n } else if (((bitField & 16777216) !== 0)) {\n return this._reject(values._reason());\n } else {\n return this._cancel();\n }\n }\n values = util.asArray(values);\n if (values === null) {\n var err = apiRejection(\n \"expecting an array or an iterable object but got \" + util.classString(values)).reason();\n this._promise._rejectCallback(err, false);\n return;\n }\n\n if (values.length === 0) {\n if (resolveValueIfEmpty === -5) {\n this._resolveEmptyArray();\n }\n else {\n this._resolve(toResolutionValue(resolveValueIfEmpty));\n }\n return;\n }\n this._iterate(values);\n};\n\nPromiseArray.prototype._iterate = function(values) {\n var len = this.getActualLength(values.length);\n this._length = len;\n this._values = this.shouldCopyValues() ? new Array(len) : this._values;\n var result = this._promise;\n var isResolved = false;\n var bitField = null;\n for (var i = 0; i < len; ++i) {\n var maybePromise = tryConvertToPromise(values[i], result);\n\n if (maybePromise instanceof Promise) {\n maybePromise = maybePromise._target();\n bitField = maybePromise._bitField;\n } else {\n bitField = null;\n }\n\n if (isResolved) {\n if (bitField !== null) {\n maybePromise.suppressUnhandledRejections();\n }\n } else if (bitField !== null) {\n if (((bitField & 50397184) === 0)) {\n maybePromise._proxy(this, i);\n this._values[i] = maybePromise;\n } else if (((bitField & 33554432) !== 0)) {\n isResolved = this._promiseFulfilled(maybePromise._value(), i);\n } else if (((bitField & 16777216) !== 0)) {\n isResolved = this._promiseRejected(maybePromise._reason(), i);\n } else {\n isResolved = this._promiseCancelled(i);\n }\n } else {\n isResolved = this._promiseFulfilled(maybePromise, i);\n }\n }\n if (!isResolved) result._setAsyncGuaranteed();\n};\n\nPromiseArray.prototype._isResolved = function () {\n return this._values === null;\n};\n\nPromiseArray.prototype._resolve = function (value) {\n this._values = null;\n this._promise._fulfill(value);\n};\n\nPromiseArray.prototype._cancel = function() {\n if (this._isResolved() || !this._promise._isCancellable()) return;\n this._values = null;\n this._promise._cancel();\n};\n\nPromiseArray.prototype._reject = function (reason) {\n this._values = null;\n this._promise._rejectCallback(reason, false);\n};\n\nPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nPromiseArray.prototype._promiseCancelled = function() {\n this._cancel();\n return true;\n};\n\nPromiseArray.prototype._promiseRejected = function (reason) {\n this._totalResolved++;\n this._reject(reason);\n return true;\n};\n\nPromiseArray.prototype._resultCancelled = function() {\n if (this._isResolved()) return;\n var values = this._values;\n this._cancel();\n if (values instanceof Promise) {\n values.cancel();\n } else {\n for (var i = 0; i < values.length; ++i) {\n if (values[i] instanceof Promise) {\n values[i].cancel();\n }\n }\n }\n};\n\nPromiseArray.prototype.shouldCopyValues = function () {\n return true;\n};\n\nPromiseArray.prototype.getActualLength = function (len) {\n return len;\n};\n\nreturn PromiseArray;\n};\n\n},{\"./util\":36}],24:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar THIS = {};\nvar util = _dereq_(\"./util\");\nvar nodebackForPromise = _dereq_(\"./nodeback\");\nvar withAppended = util.withAppended;\nvar maybeWrapAsError = util.maybeWrapAsError;\nvar canEvaluate = util.canEvaluate;\nvar TypeError = _dereq_(\"./errors\").TypeError;\nvar defaultSuffix = \"Async\";\nvar defaultPromisified = {__isPromisified__: true};\nvar noCopyProps = [\n \"arity\", \"length\",\n \"name\",\n \"arguments\",\n \"caller\",\n \"callee\",\n \"prototype\",\n \"__isPromisified__\"\n];\nvar noCopyPropsPattern = new RegExp(\"^(?:\" + noCopyProps.join(\"|\") + \")$\");\n\nvar defaultFilter = function(name) {\n return util.isIdentifier(name) &&\n name.charAt(0) !== \"_\" &&\n name !== \"constructor\";\n};\n\nfunction propsFilter(key) {\n return !noCopyPropsPattern.test(key);\n}\n\nfunction isPromisified(fn) {\n try {\n return fn.__isPromisified__ === true;\n }\n catch (e) {\n return false;\n }\n}\n\nfunction hasPromisified(obj, key, suffix) {\n var val = util.getDataPropertyOrDefault(obj, key + suffix,\n defaultPromisified);\n return val ? isPromisified(val) : false;\n}\nfunction checkValid(ret, suffix, suffixRegexp) {\n for (var i = 0; i < ret.length; i += 2) {\n var key = ret[i];\n if (suffixRegexp.test(key)) {\n var keyWithoutAsyncSuffix = key.replace(suffixRegexp, \"\");\n for (var j = 0; j < ret.length; j += 2) {\n if (ret[j] === keyWithoutAsyncSuffix) {\n throw new TypeError(\"Cannot promisify an API that has normal methods with '%s'-suffix\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\"\n .replace(\"%s\", suffix));\n }\n }\n }\n }\n}\n\nfunction promisifiableMethods(obj, suffix, suffixRegexp, filter) {\n var keys = util.inheritedDataKeys(obj);\n var ret = [];\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var value = obj[key];\n var passesDefaultFilter = filter === defaultFilter\n ? true : defaultFilter(key, value, obj);\n if (typeof value === \"function\" &&\n !isPromisified(value) &&\n !hasPromisified(obj, key, suffix) &&\n filter(key, value, obj, passesDefaultFilter)) {\n ret.push(key, value);\n }\n }\n checkValid(ret, suffix, suffixRegexp);\n return ret;\n}\n\nvar escapeIdentRegex = function(str) {\n return str.replace(/([$])/, \"\\\\$\");\n};\n\nvar makeNodePromisifiedEval;\nif (!true) {\nvar switchCaseArgumentOrder = function(likelyArgumentCount) {\n var ret = [likelyArgumentCount];\n var min = Math.max(0, likelyArgumentCount - 1 - 3);\n for(var i = likelyArgumentCount - 1; i >= min; --i) {\n ret.push(i);\n }\n for(var i = likelyArgumentCount + 1; i <= 3; ++i) {\n ret.push(i);\n }\n return ret;\n};\n\nvar argumentSequence = function(argumentCount) {\n return util.filledRange(argumentCount, \"_arg\", \"\");\n};\n\nvar parameterDeclaration = function(parameterCount) {\n return util.filledRange(\n Math.max(parameterCount, 3), \"_arg\", \"\");\n};\n\nvar parameterCount = function(fn) {\n if (typeof fn.length === \"number\") {\n return Math.max(Math.min(fn.length, 1023 + 1), 0);\n }\n return 0;\n};\n\nmakeNodePromisifiedEval =\nfunction(callback, receiver, originalName, fn, _, multiArgs) {\n var newParameterCount = Math.max(0, parameterCount(fn) - 1);\n var argumentOrder = switchCaseArgumentOrder(newParameterCount);\n var shouldProxyThis = typeof callback === \"string\" || receiver === THIS;\n\n function generateCallForArgumentCount(count) {\n var args = argumentSequence(count).join(\", \");\n var comma = count > 0 ? \", \" : \"\";\n var ret;\n if (shouldProxyThis) {\n ret = \"ret = callback.call(this, {{args}}, nodeback); break;\\n\";\n } else {\n ret = receiver === undefined\n ? \"ret = callback({{args}}, nodeback); break;\\n\"\n : \"ret = callback.call(receiver, {{args}}, nodeback); break;\\n\";\n }\n return ret.replace(\"{{args}}\", args).replace(\", \", comma);\n }\n\n function generateArgumentSwitchCase() {\n var ret = \"\";\n for (var i = 0; i < argumentOrder.length; ++i) {\n ret += \"case \" + argumentOrder[i] +\":\" +\n generateCallForArgumentCount(argumentOrder[i]);\n }\n\n ret += \" \\n\\\n default: \\n\\\n var args = new Array(len + 1); \\n\\\n var i = 0; \\n\\\n for (var i = 0; i < len; ++i) { \\n\\\n args[i] = arguments[i]; \\n\\\n } \\n\\\n args[i] = nodeback; \\n\\\n [CodeForCall] \\n\\\n break; \\n\\\n \".replace(\"[CodeForCall]\", (shouldProxyThis\n ? \"ret = callback.apply(this, args);\\n\"\n : \"ret = callback.apply(receiver, args);\\n\"));\n return ret;\n }\n\n var getFunctionCode = typeof callback === \"string\"\n ? (\"this != null ? this['\"+callback+\"'] : fn\")\n : \"fn\";\n var body = \"'use strict'; \\n\\\n var ret = function (Parameters) { \\n\\\n 'use strict'; \\n\\\n var len = arguments.length; \\n\\\n var promise = new Promise(INTERNAL); \\n\\\n promise._captureStackTrace(); \\n\\\n var nodeback = nodebackForPromise(promise, \" + multiArgs + \"); \\n\\\n var ret; \\n\\\n var callback = tryCatch([GetFunctionCode]); \\n\\\n switch(len) { \\n\\\n [CodeForSwitchCase] \\n\\\n } \\n\\\n if (ret === errorObj) { \\n\\\n promise._rejectCallback(maybeWrapAsError(ret.e), true, true);\\n\\\n } \\n\\\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed(); \\n\\\n return promise; \\n\\\n }; \\n\\\n notEnumerableProp(ret, '__isPromisified__', true); \\n\\\n return ret; \\n\\\n \".replace(\"[CodeForSwitchCase]\", generateArgumentSwitchCase())\n .replace(\"[GetFunctionCode]\", getFunctionCode);\n body = body.replace(\"Parameters\", parameterDeclaration(newParameterCount));\n return new Function(\"Promise\",\n \"fn\",\n \"receiver\",\n \"withAppended\",\n \"maybeWrapAsError\",\n \"nodebackForPromise\",\n \"tryCatch\",\n \"errorObj\",\n \"notEnumerableProp\",\n \"INTERNAL\",\n body)(\n Promise,\n fn,\n receiver,\n withAppended,\n maybeWrapAsError,\n nodebackForPromise,\n util.tryCatch,\n util.errorObj,\n util.notEnumerableProp,\n INTERNAL);\n};\n}\n\nfunction makeNodePromisifiedClosure(callback, receiver, _, fn, __, multiArgs) {\n var defaultThis = (function() {return this;})();\n var method = callback;\n if (typeof method === \"string\") {\n callback = fn;\n }\n function promisified() {\n var _receiver = receiver;\n if (receiver === THIS) _receiver = this;\n var promise = new Promise(INTERNAL);\n promise._captureStackTrace();\n var cb = typeof method === \"string\" && this !== defaultThis\n ? this[method] : callback;\n var fn = nodebackForPromise(promise, multiArgs);\n try {\n cb.apply(_receiver, withAppended(arguments, fn));\n } catch(e) {\n promise._rejectCallback(maybeWrapAsError(e), true, true);\n }\n if (!promise._isFateSealed()) promise._setAsyncGuaranteed();\n return promise;\n }\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n return promisified;\n}\n\nvar makeNodePromisified = canEvaluate\n ? makeNodePromisifiedEval\n : makeNodePromisifiedClosure;\n\nfunction promisifyAll(obj, suffix, filter, promisifier, multiArgs) {\n var suffixRegexp = new RegExp(escapeIdentRegex(suffix) + \"$\");\n var methods =\n promisifiableMethods(obj, suffix, suffixRegexp, filter);\n\n for (var i = 0, len = methods.length; i < len; i+= 2) {\n var key = methods[i];\n var fn = methods[i+1];\n var promisifiedKey = key + suffix;\n if (promisifier === makeNodePromisified) {\n obj[promisifiedKey] =\n makeNodePromisified(key, THIS, key, fn, suffix, multiArgs);\n } else {\n var promisified = promisifier(fn, function() {\n return makeNodePromisified(key, THIS, key,\n fn, suffix, multiArgs);\n });\n util.notEnumerableProp(promisified, \"__isPromisified__\", true);\n obj[promisifiedKey] = promisified;\n }\n }\n util.toFastProperties(obj);\n return obj;\n}\n\nfunction promisify(callback, receiver, multiArgs) {\n return makeNodePromisified(callback, receiver, undefined,\n callback, null, multiArgs);\n}\n\nPromise.promisify = function (fn, options) {\n if (typeof fn !== \"function\") {\n throw new TypeError(\"expecting a function but got \" + util.classString(fn));\n }\n if (isPromisified(fn)) {\n return fn;\n }\n options = Object(options);\n var receiver = options.context === undefined ? THIS : options.context;\n var multiArgs = !!options.multiArgs;\n var ret = promisify(fn, receiver, multiArgs);\n util.copyDescriptors(fn, ret, propsFilter);\n return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n if (typeof target !== \"function\" && typeof target !== \"object\") {\n throw new TypeError(\"the target of promisifyAll must be an object or a function\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n options = Object(options);\n var multiArgs = !!options.multiArgs;\n var suffix = options.suffix;\n if (typeof suffix !== \"string\") suffix = defaultSuffix;\n var filter = options.filter;\n if (typeof filter !== \"function\") filter = defaultFilter;\n var promisifier = options.promisifier;\n if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n if (!util.isIdentifier(suffix)) {\n throw new RangeError(\"suffix must be a valid identifier\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n\n var keys = util.inheritedDataKeys(target);\n for (var i = 0; i < keys.length; ++i) {\n var value = target[keys[i]];\n if (keys[i] !== \"constructor\" &&\n util.isClass(value)) {\n promisifyAll(value.prototype, suffix, filter, promisifier,\n multiArgs);\n promisifyAll(value, suffix, filter, promisifier, multiArgs);\n }\n }\n\n return promisifyAll(target, suffix, filter, promisifier, multiArgs);\n};\n};\n\n\n},{\"./errors\":12,\"./nodeback\":20,\"./util\":36}],25:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, PromiseArray, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar isObject = util.isObject;\nvar es5 = _dereq_(\"./es5\");\nvar Es6Map;\nif (typeof Map === \"function\") Es6Map = Map;\n\nvar mapToEntries = (function() {\n var index = 0;\n var size = 0;\n\n function extractEntry(value, key) {\n this[index] = value;\n this[index + size] = key;\n index++;\n }\n\n return function mapToEntries(map) {\n size = map.size;\n index = 0;\n var ret = new Array(map.size * 2);\n map.forEach(extractEntry, ret);\n return ret;\n };\n})();\n\nvar entriesToMap = function(entries) {\n var ret = new Es6Map();\n var length = entries.length / 2 | 0;\n for (var i = 0; i < length; ++i) {\n var key = entries[length + i];\n var value = entries[i];\n ret.set(key, value);\n }\n return ret;\n};\n\nfunction PropertiesPromiseArray(obj) {\n var isMap = false;\n var entries;\n if (Es6Map !== undefined && obj instanceof Es6Map) {\n entries = mapToEntries(obj);\n isMap = true;\n } else {\n var keys = es5.keys(obj);\n var len = keys.length;\n entries = new Array(len * 2);\n for (var i = 0; i < len; ++i) {\n var key = keys[i];\n entries[i] = obj[key];\n entries[i + len] = key;\n }\n }\n this.constructor$(entries);\n this._isMap = isMap;\n this._init$(undefined, isMap ? -6 : -3);\n}\nutil.inherits(PropertiesPromiseArray, PromiseArray);\n\nPropertiesPromiseArray.prototype._init = function () {};\n\nPropertiesPromiseArray.prototype._promiseFulfilled = function (value, index) {\n this._values[index] = value;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n var val;\n if (this._isMap) {\n val = entriesToMap(this._values);\n } else {\n val = {};\n var keyOffset = this.length();\n for (var i = 0, len = this.length(); i < len; ++i) {\n val[this._values[i + keyOffset]] = this._values[i];\n }\n }\n this._resolve(val);\n return true;\n }\n return false;\n};\n\nPropertiesPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nPropertiesPromiseArray.prototype.getActualLength = function (len) {\n return len >> 1;\n};\n\nfunction props(promises) {\n var ret;\n var castValue = tryConvertToPromise(promises);\n\n if (!isObject(castValue)) {\n return apiRejection(\"cannot await properties of a non-object\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n } else if (castValue instanceof Promise) {\n ret = castValue._then(\n Promise.props, undefined, undefined, undefined, undefined);\n } else {\n ret = new PropertiesPromiseArray(castValue).promise();\n }\n\n if (castValue instanceof Promise) {\n ret._propagateFrom(castValue, 2);\n }\n return ret;\n}\n\nPromise.prototype.props = function () {\n return props(this);\n};\n\nPromise.props = function (promises) {\n return props(promises);\n};\n};\n\n},{\"./es5\":13,\"./util\":36}],26:[function(_dereq_,module,exports){\n\"use strict\";\nfunction arrayMove(src, srcIndex, dst, dstIndex, len) {\n for (var j = 0; j < len; ++j) {\n dst[j + dstIndex] = src[j + srcIndex];\n src[j + srcIndex] = void 0;\n }\n}\n\nfunction Queue(capacity) {\n this._capacity = capacity;\n this._length = 0;\n this._front = 0;\n}\n\nQueue.prototype._willBeOverCapacity = function (size) {\n return this._capacity < size;\n};\n\nQueue.prototype._pushOne = function (arg) {\n var length = this.length();\n this._checkCapacity(length + 1);\n var i = (this._front + length) & (this._capacity - 1);\n this[i] = arg;\n this._length = length + 1;\n};\n\nQueue.prototype.push = function (fn, receiver, arg) {\n var length = this.length() + 3;\n if (this._willBeOverCapacity(length)) {\n this._pushOne(fn);\n this._pushOne(receiver);\n this._pushOne(arg);\n return;\n }\n var j = this._front + length - 3;\n this._checkCapacity(length);\n var wrapMask = this._capacity - 1;\n this[(j + 0) & wrapMask] = fn;\n this[(j + 1) & wrapMask] = receiver;\n this[(j + 2) & wrapMask] = arg;\n this._length = length;\n};\n\nQueue.prototype.shift = function () {\n var front = this._front,\n ret = this[front];\n\n this[front] = undefined;\n this._front = (front + 1) & (this._capacity - 1);\n this._length--;\n return ret;\n};\n\nQueue.prototype.length = function () {\n return this._length;\n};\n\nQueue.prototype._checkCapacity = function (size) {\n if (this._capacity < size) {\n this._resizeTo(this._capacity << 1);\n }\n};\n\nQueue.prototype._resizeTo = function (capacity) {\n var oldCapacity = this._capacity;\n this._capacity = capacity;\n var front = this._front;\n var length = this._length;\n var moveItemsCount = (front + length) & (oldCapacity - 1);\n arrayMove(this, 0, this, oldCapacity, moveItemsCount);\n};\n\nmodule.exports = Queue;\n\n},{}],27:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(\n Promise, INTERNAL, tryConvertToPromise, apiRejection) {\nvar util = _dereq_(\"./util\");\n\nvar raceLater = function (promise) {\n return promise.then(function(array) {\n return race(array, promise);\n });\n};\n\nfunction race(promises, parent) {\n var maybePromise = tryConvertToPromise(promises);\n\n if (maybePromise instanceof Promise) {\n return raceLater(maybePromise);\n } else {\n promises = util.asArray(promises);\n if (promises === null)\n return apiRejection(\"expecting an array or an iterable object but got \" + util.classString(promises));\n }\n\n var ret = new Promise(INTERNAL);\n if (parent !== undefined) {\n ret._propagateFrom(parent, 3);\n }\n var fulfill = ret._fulfill;\n var reject = ret._reject;\n for (var i = 0, len = promises.length; i < len; ++i) {\n var val = promises[i];\n\n if (val === undefined && !(i in promises)) {\n continue;\n }\n\n Promise.cast(val)._then(fulfill, reject, undefined, ret, null);\n }\n return ret;\n}\n\nPromise.race = function (promises) {\n return race(promises, undefined);\n};\n\nPromise.prototype.race = function () {\n return race(this, undefined);\n};\n\n};\n\n},{\"./util\":36}],28:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise,\n PromiseArray,\n apiRejection,\n tryConvertToPromise,\n INTERNAL,\n debug) {\nvar getDomain = Promise._getDomain;\nvar util = _dereq_(\"./util\");\nvar tryCatch = util.tryCatch;\n\nfunction ReductionPromiseArray(promises, fn, initialValue, _each) {\n this.constructor$(promises);\n var domain = getDomain();\n this._fn = domain === null ? fn : util.domainBind(domain, fn);\n if (initialValue !== undefined) {\n initialValue = Promise.resolve(initialValue);\n initialValue._attachCancellationCallback(this);\n }\n this._initialValue = initialValue;\n this._currentCancellable = null;\n if(_each === INTERNAL) {\n this._eachValues = Array(this._length);\n } else if (_each === 0) {\n this._eachValues = null;\n } else {\n this._eachValues = undefined;\n }\n this._promise._captureStackTrace();\n this._init$(undefined, -5);\n}\nutil.inherits(ReductionPromiseArray, PromiseArray);\n\nReductionPromiseArray.prototype._gotAccum = function(accum) {\n if (this._eachValues !== undefined && \n this._eachValues !== null && \n accum !== INTERNAL) {\n this._eachValues.push(accum);\n }\n};\n\nReductionPromiseArray.prototype._eachComplete = function(value) {\n if (this._eachValues !== null) {\n this._eachValues.push(value);\n }\n return this._eachValues;\n};\n\nReductionPromiseArray.prototype._init = function() {};\n\nReductionPromiseArray.prototype._resolveEmptyArray = function() {\n this._resolve(this._eachValues !== undefined ? this._eachValues\n : this._initialValue);\n};\n\nReductionPromiseArray.prototype.shouldCopyValues = function () {\n return false;\n};\n\nReductionPromiseArray.prototype._resolve = function(value) {\n this._promise._resolveCallback(value);\n this._values = null;\n};\n\nReductionPromiseArray.prototype._resultCancelled = function(sender) {\n if (sender === this._initialValue) return this._cancel();\n if (this._isResolved()) return;\n this._resultCancelled$();\n if (this._currentCancellable instanceof Promise) {\n this._currentCancellable.cancel();\n }\n if (this._initialValue instanceof Promise) {\n this._initialValue.cancel();\n }\n};\n\nReductionPromiseArray.prototype._iterate = function (values) {\n this._values = values;\n var value;\n var i;\n var length = values.length;\n if (this._initialValue !== undefined) {\n value = this._initialValue;\n i = 0;\n } else {\n value = Promise.resolve(values[0]);\n i = 1;\n }\n\n this._currentCancellable = value;\n\n if (!value.isRejected()) {\n for (; i < length; ++i) {\n var ctx = {\n accum: null,\n value: values[i],\n index: i,\n length: length,\n array: this\n };\n value = value._then(gotAccum, undefined, undefined, ctx, undefined);\n }\n }\n\n if (this._eachValues !== undefined) {\n value = value\n ._then(this._eachComplete, undefined, undefined, this, undefined);\n }\n value._then(completed, completed, undefined, value, this);\n};\n\nPromise.prototype.reduce = function (fn, initialValue) {\n return reduce(this, fn, initialValue, null);\n};\n\nPromise.reduce = function (promises, fn, initialValue, _each) {\n return reduce(promises, fn, initialValue, _each);\n};\n\nfunction completed(valueOrReason, array) {\n if (this.isFulfilled()) {\n array._resolve(valueOrReason);\n } else {\n array._reject(valueOrReason);\n }\n}\n\nfunction reduce(promises, fn, initialValue, _each) {\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var array = new ReductionPromiseArray(promises, fn, initialValue, _each);\n return array.promise();\n}\n\nfunction gotAccum(accum) {\n this.accum = accum;\n this.array._gotAccum(accum);\n var value = tryConvertToPromise(this.value, this.array._promise);\n if (value instanceof Promise) {\n this.array._currentCancellable = value;\n return value._then(gotValue, undefined, undefined, this, undefined);\n } else {\n return gotValue.call(this, value);\n }\n}\n\nfunction gotValue(value) {\n var array = this.array;\n var promise = array._promise;\n var fn = tryCatch(array._fn);\n promise._pushContext();\n var ret;\n if (array._eachValues !== undefined) {\n ret = fn.call(promise._boundValue(), value, this.index, this.length);\n } else {\n ret = fn.call(promise._boundValue(),\n this.accum, value, this.index, this.length);\n }\n if (ret instanceof Promise) {\n array._currentCancellable = ret;\n }\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret,\n promiseCreated,\n array._eachValues !== undefined ? \"Promise.each\" : \"Promise.reduce\",\n promise\n );\n return ret;\n}\n};\n\n},{\"./util\":36}],29:[function(_dereq_,module,exports){\n\"use strict\";\nvar util = _dereq_(\"./util\");\nvar schedule;\nvar noAsyncScheduler = function() {\n throw new Error(\"No async scheduler available\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n};\nvar NativePromise = util.getNativePromise();\nif (util.isNode && typeof MutationObserver === \"undefined\") {\n var GlobalSetImmediate = global.setImmediate;\n var ProcessNextTick = process.nextTick;\n schedule = util.isRecentNode\n ? function(fn) { GlobalSetImmediate.call(global, fn); }\n : function(fn) { ProcessNextTick.call(process, fn); };\n} else if (typeof NativePromise === \"function\" &&\n typeof NativePromise.resolve === \"function\") {\n var nativePromise = NativePromise.resolve();\n schedule = function(fn) {\n nativePromise.then(fn);\n };\n} else if ((typeof MutationObserver !== \"undefined\") &&\n !(typeof window !== \"undefined\" &&\n window.navigator &&\n (window.navigator.standalone || window.cordova))) {\n schedule = (function() {\n var div = document.createElement(\"div\");\n var opts = {attributes: true};\n var toggleScheduled = false;\n var div2 = document.createElement(\"div\");\n var o2 = new MutationObserver(function() {\n div.classList.toggle(\"foo\");\n toggleScheduled = false;\n });\n o2.observe(div2, opts);\n\n var scheduleToggle = function() {\n if (toggleScheduled) return;\n toggleScheduled = true;\n div2.classList.toggle(\"foo\");\n };\n\n return function schedule(fn) {\n var o = new MutationObserver(function() {\n o.disconnect();\n fn();\n });\n o.observe(div, opts);\n scheduleToggle();\n };\n })();\n} else if (typeof setImmediate !== \"undefined\") {\n schedule = function (fn) {\n setImmediate(fn);\n };\n} else if (typeof setTimeout !== \"undefined\") {\n schedule = function (fn) {\n setTimeout(fn, 0);\n };\n} else {\n schedule = noAsyncScheduler;\n}\nmodule.exports = schedule;\n\n},{\"./util\":36}],30:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\n function(Promise, PromiseArray, debug) {\nvar PromiseInspection = Promise.PromiseInspection;\nvar util = _dereq_(\"./util\");\n\nfunction SettledPromiseArray(values) {\n this.constructor$(values);\n}\nutil.inherits(SettledPromiseArray, PromiseArray);\n\nSettledPromiseArray.prototype._promiseResolved = function (index, inspection) {\n this._values[index] = inspection;\n var totalResolved = ++this._totalResolved;\n if (totalResolved >= this._length) {\n this._resolve(this._values);\n return true;\n }\n return false;\n};\n\nSettledPromiseArray.prototype._promiseFulfilled = function (value, index) {\n var ret = new PromiseInspection();\n ret._bitField = 33554432;\n ret._settledValueField = value;\n return this._promiseResolved(index, ret);\n};\nSettledPromiseArray.prototype._promiseRejected = function (reason, index) {\n var ret = new PromiseInspection();\n ret._bitField = 16777216;\n ret._settledValueField = reason;\n return this._promiseResolved(index, ret);\n};\n\nPromise.settle = function (promises) {\n debug.deprecated(\".settle()\", \".reflect()\");\n return new SettledPromiseArray(promises).promise();\n};\n\nPromise.prototype.settle = function () {\n return Promise.settle(this);\n};\n};\n\n},{\"./util\":36}],31:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports =\nfunction(Promise, PromiseArray, apiRejection) {\nvar util = _dereq_(\"./util\");\nvar RangeError = _dereq_(\"./errors\").RangeError;\nvar AggregateError = _dereq_(\"./errors\").AggregateError;\nvar isArray = util.isArray;\nvar CANCELLATION = {};\n\n\nfunction SomePromiseArray(values) {\n this.constructor$(values);\n this._howMany = 0;\n this._unwrap = false;\n this._initialized = false;\n}\nutil.inherits(SomePromiseArray, PromiseArray);\n\nSomePromiseArray.prototype._init = function () {\n if (!this._initialized) {\n return;\n }\n if (this._howMany === 0) {\n this._resolve([]);\n return;\n }\n this._init$(undefined, -5);\n var isArrayResolved = isArray(this._values);\n if (!this._isResolved() &&\n isArrayResolved &&\n this._howMany > this._canPossiblyFulfill()) {\n this._reject(this._getRangeError(this.length()));\n }\n};\n\nSomePromiseArray.prototype.init = function () {\n this._initialized = true;\n this._init();\n};\n\nSomePromiseArray.prototype.setUnwrap = function () {\n this._unwrap = true;\n};\n\nSomePromiseArray.prototype.howMany = function () {\n return this._howMany;\n};\n\nSomePromiseArray.prototype.setHowMany = function (count) {\n this._howMany = count;\n};\n\nSomePromiseArray.prototype._promiseFulfilled = function (value) {\n this._addFulfilled(value);\n if (this._fulfilled() === this.howMany()) {\n this._values.length = this.howMany();\n if (this.howMany() === 1 && this._unwrap) {\n this._resolve(this._values[0]);\n } else {\n this._resolve(this._values);\n }\n return true;\n }\n return false;\n\n};\nSomePromiseArray.prototype._promiseRejected = function (reason) {\n this._addRejected(reason);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._promiseCancelled = function () {\n if (this._values instanceof Promise || this._values == null) {\n return this._cancel();\n }\n this._addRejected(CANCELLATION);\n return this._checkOutcome();\n};\n\nSomePromiseArray.prototype._checkOutcome = function() {\n if (this.howMany() > this._canPossiblyFulfill()) {\n var e = new AggregateError();\n for (var i = this.length(); i < this._values.length; ++i) {\n if (this._values[i] !== CANCELLATION) {\n e.push(this._values[i]);\n }\n }\n if (e.length > 0) {\n this._reject(e);\n } else {\n this._cancel();\n }\n return true;\n }\n return false;\n};\n\nSomePromiseArray.prototype._fulfilled = function () {\n return this._totalResolved;\n};\n\nSomePromiseArray.prototype._rejected = function () {\n return this._values.length - this.length();\n};\n\nSomePromiseArray.prototype._addRejected = function (reason) {\n this._values.push(reason);\n};\n\nSomePromiseArray.prototype._addFulfilled = function (value) {\n this._values[this._totalResolved++] = value;\n};\n\nSomePromiseArray.prototype._canPossiblyFulfill = function () {\n return this.length() - this._rejected();\n};\n\nSomePromiseArray.prototype._getRangeError = function (count) {\n var message = \"Input array must contain at least \" +\n this._howMany + \" items but contains only \" + count + \" items\";\n return new RangeError(message);\n};\n\nSomePromiseArray.prototype._resolveEmptyArray = function () {\n this._reject(this._getRangeError(0));\n};\n\nfunction some(promises, howMany) {\n if ((howMany | 0) !== howMany || howMany < 0) {\n return apiRejection(\"expecting a positive integer\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n var ret = new SomePromiseArray(promises);\n var promise = ret.promise();\n ret.setHowMany(howMany);\n ret.init();\n return promise;\n}\n\nPromise.some = function (promises, howMany) {\n return some(promises, howMany);\n};\n\nPromise.prototype.some = function (howMany) {\n return some(this, howMany);\n};\n\nPromise._SomePromiseArray = SomePromiseArray;\n};\n\n},{\"./errors\":12,\"./util\":36}],32:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise) {\nfunction PromiseInspection(promise) {\n if (promise !== undefined) {\n promise = promise._target();\n this._bitField = promise._bitField;\n this._settledValueField = promise._isFateSealed()\n ? promise._settledValue() : undefined;\n }\n else {\n this._bitField = 0;\n this._settledValueField = undefined;\n }\n}\n\nPromiseInspection.prototype._settledValue = function() {\n return this._settledValueField;\n};\n\nvar value = PromiseInspection.prototype.value = function () {\n if (!this.isFulfilled()) {\n throw new TypeError(\"cannot get fulfillment value of a non-fulfilled promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar reason = PromiseInspection.prototype.error =\nPromiseInspection.prototype.reason = function () {\n if (!this.isRejected()) {\n throw new TypeError(\"cannot get rejection reason of a non-rejected promise\\u000a\\u000a See http://goo.gl/MqrFmX\\u000a\");\n }\n return this._settledValue();\n};\n\nvar isFulfilled = PromiseInspection.prototype.isFulfilled = function() {\n return (this._bitField & 33554432) !== 0;\n};\n\nvar isRejected = PromiseInspection.prototype.isRejected = function () {\n return (this._bitField & 16777216) !== 0;\n};\n\nvar isPending = PromiseInspection.prototype.isPending = function () {\n return (this._bitField & 50397184) === 0;\n};\n\nvar isResolved = PromiseInspection.prototype.isResolved = function () {\n return (this._bitField & 50331648) !== 0;\n};\n\nPromiseInspection.prototype.isCancelled = function() {\n return (this._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.__isCancelled = function() {\n return (this._bitField & 65536) === 65536;\n};\n\nPromise.prototype._isCancelled = function() {\n return this._target().__isCancelled();\n};\n\nPromise.prototype.isCancelled = function() {\n return (this._target()._bitField & 8454144) !== 0;\n};\n\nPromise.prototype.isPending = function() {\n return isPending.call(this._target());\n};\n\nPromise.prototype.isRejected = function() {\n return isRejected.call(this._target());\n};\n\nPromise.prototype.isFulfilled = function() {\n return isFulfilled.call(this._target());\n};\n\nPromise.prototype.isResolved = function() {\n return isResolved.call(this._target());\n};\n\nPromise.prototype.value = function() {\n return value.call(this._target());\n};\n\nPromise.prototype.reason = function() {\n var target = this._target();\n target._unsetRejectionIsUnhandled();\n return reason.call(target);\n};\n\nPromise.prototype._value = function() {\n return this._settledValue();\n};\n\nPromise.prototype._reason = function() {\n this._unsetRejectionIsUnhandled();\n return this._settledValue();\n};\n\nPromise.PromiseInspection = PromiseInspection;\n};\n\n},{}],33:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL) {\nvar util = _dereq_(\"./util\");\nvar errorObj = util.errorObj;\nvar isObject = util.isObject;\n\nfunction tryConvertToPromise(obj, context) {\n if (isObject(obj)) {\n if (obj instanceof Promise) return obj;\n var then = getThen(obj);\n if (then === errorObj) {\n if (context) context._pushContext();\n var ret = Promise.reject(then.e);\n if (context) context._popContext();\n return ret;\n } else if (typeof then === \"function\") {\n if (isAnyBluebirdPromise(obj)) {\n var ret = new Promise(INTERNAL);\n obj._then(\n ret._fulfill,\n ret._reject,\n undefined,\n ret,\n null\n );\n return ret;\n }\n return doThenable(obj, then, context);\n }\n }\n return obj;\n}\n\nfunction doGetThen(obj) {\n return obj.then;\n}\n\nfunction getThen(obj) {\n try {\n return doGetThen(obj);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\n\nvar hasProp = {}.hasOwnProperty;\nfunction isAnyBluebirdPromise(obj) {\n try {\n return hasProp.call(obj, \"_promise0\");\n } catch (e) {\n return false;\n }\n}\n\nfunction doThenable(x, then, context) {\n var promise = new Promise(INTERNAL);\n var ret = promise;\n if (context) context._pushContext();\n promise._captureStackTrace();\n if (context) context._popContext();\n var synchronous = true;\n var result = util.tryCatch(then).call(x, resolve, reject);\n synchronous = false;\n\n if (promise && result === errorObj) {\n promise._rejectCallback(result.e, true, true);\n promise = null;\n }\n\n function resolve(value) {\n if (!promise) return;\n promise._resolveCallback(value);\n promise = null;\n }\n\n function reject(reason) {\n if (!promise) return;\n promise._rejectCallback(reason, synchronous, true);\n promise = null;\n }\n return ret;\n}\n\nreturn tryConvertToPromise;\n};\n\n},{\"./util\":36}],34:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function(Promise, INTERNAL, debug) {\nvar util = _dereq_(\"./util\");\nvar TimeoutError = Promise.TimeoutError;\n\nfunction HandleWrapper(handle) {\n this.handle = handle;\n}\n\nHandleWrapper.prototype._resultCancelled = function() {\n clearTimeout(this.handle);\n};\n\nvar afterValue = function(value) { return delay(+this).thenReturn(value); };\nvar delay = Promise.delay = function (ms, value) {\n var ret;\n var handle;\n if (value !== undefined) {\n ret = Promise.resolve(value)\n ._then(afterValue, null, null, ms, undefined);\n if (debug.cancellation() && value instanceof Promise) {\n ret._setOnCancel(value);\n }\n } else {\n ret = new Promise(INTERNAL);\n handle = setTimeout(function() { ret._fulfill(); }, +ms);\n if (debug.cancellation()) {\n ret._setOnCancel(new HandleWrapper(handle));\n }\n ret._captureStackTrace();\n }\n ret._setAsyncGuaranteed();\n return ret;\n};\n\nPromise.prototype.delay = function (ms) {\n return delay(ms, this);\n};\n\nvar afterTimeout = function (promise, message, parent) {\n var err;\n if (typeof message !== \"string\") {\n if (message instanceof Error) {\n err = message;\n } else {\n err = new TimeoutError(\"operation timed out\");\n }\n } else {\n err = new TimeoutError(message);\n }\n util.markAsOriginatingFromRejection(err);\n promise._attachExtraTrace(err);\n promise._reject(err);\n\n if (parent != null) {\n parent.cancel();\n }\n};\n\nfunction successClear(value) {\n clearTimeout(this.handle);\n return value;\n}\n\nfunction failureClear(reason) {\n clearTimeout(this.handle);\n throw reason;\n}\n\nPromise.prototype.timeout = function (ms, message) {\n ms = +ms;\n var ret, parent;\n\n var handleWrapper = new HandleWrapper(setTimeout(function timeoutTimeout() {\n if (ret.isPending()) {\n afterTimeout(ret, message, parent);\n }\n }, ms));\n\n if (debug.cancellation()) {\n parent = this.then();\n ret = parent._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n ret._setOnCancel(handleWrapper);\n } else {\n ret = this._then(successClear, failureClear,\n undefined, handleWrapper, undefined);\n }\n\n return ret;\n};\n\n};\n\n},{\"./util\":36}],35:[function(_dereq_,module,exports){\n\"use strict\";\nmodule.exports = function (Promise, apiRejection, tryConvertToPromise,\n createContext, INTERNAL, debug) {\n var util = _dereq_(\"./util\");\n var TypeError = _dereq_(\"./errors\").TypeError;\n var inherits = _dereq_(\"./util\").inherits;\n var errorObj = util.errorObj;\n var tryCatch = util.tryCatch;\n var NULL = {};\n\n function thrower(e) {\n setTimeout(function(){throw e;}, 0);\n }\n\n function castPreservingDisposable(thenable) {\n var maybePromise = tryConvertToPromise(thenable);\n if (maybePromise !== thenable &&\n typeof thenable._isDisposable === \"function\" &&\n typeof thenable._getDisposer === \"function\" &&\n thenable._isDisposable()) {\n maybePromise._setDisposable(thenable._getDisposer());\n }\n return maybePromise;\n }\n function dispose(resources, inspection) {\n var i = 0;\n var len = resources.length;\n var ret = new Promise(INTERNAL);\n function iterator() {\n if (i >= len) return ret._fulfill();\n var maybePromise = castPreservingDisposable(resources[i++]);\n if (maybePromise instanceof Promise &&\n maybePromise._isDisposable()) {\n try {\n maybePromise = tryConvertToPromise(\n maybePromise._getDisposer().tryDispose(inspection),\n resources.promise);\n } catch (e) {\n return thrower(e);\n }\n if (maybePromise instanceof Promise) {\n return maybePromise._then(iterator, thrower,\n null, null, null);\n }\n }\n iterator();\n }\n iterator();\n return ret;\n }\n\n function Disposer(data, promise, context) {\n this._data = data;\n this._promise = promise;\n this._context = context;\n }\n\n Disposer.prototype.data = function () {\n return this._data;\n };\n\n Disposer.prototype.promise = function () {\n return this._promise;\n };\n\n Disposer.prototype.resource = function () {\n if (this.promise().isFulfilled()) {\n return this.promise().value();\n }\n return NULL;\n };\n\n Disposer.prototype.tryDispose = function(inspection) {\n var resource = this.resource();\n var context = this._context;\n if (context !== undefined) context._pushContext();\n var ret = resource !== NULL\n ? this.doDispose(resource, inspection) : null;\n if (context !== undefined) context._popContext();\n this._promise._unsetDisposable();\n this._data = null;\n return ret;\n };\n\n Disposer.isDisposer = function (d) {\n return (d != null &&\n typeof d.resource === \"function\" &&\n typeof d.tryDispose === \"function\");\n };\n\n function FunctionDisposer(fn, promise, context) {\n this.constructor$(fn, promise, context);\n }\n inherits(FunctionDisposer, Disposer);\n\n FunctionDisposer.prototype.doDispose = function (resource, inspection) {\n var fn = this.data();\n return fn.call(resource, resource, inspection);\n };\n\n function maybeUnwrapDisposer(value) {\n if (Disposer.isDisposer(value)) {\n this.resources[this.index]._setDisposable(value);\n return value.promise();\n }\n return value;\n }\n\n function ResourceList(length) {\n this.length = length;\n this.promise = null;\n this[length-1] = null;\n }\n\n ResourceList.prototype._resultCancelled = function() {\n var len = this.length;\n for (var i = 0; i < len; ++i) {\n var item = this[i];\n if (item instanceof Promise) {\n item.cancel();\n }\n }\n };\n\n Promise.using = function () {\n var len = arguments.length;\n if (len < 2) return apiRejection(\n \"you must pass at least 2 arguments to Promise.using\");\n var fn = arguments[len - 1];\n if (typeof fn !== \"function\") {\n return apiRejection(\"expecting a function but got \" + util.classString(fn));\n }\n var input;\n var spreadArgs = true;\n if (len === 2 && Array.isArray(arguments[0])) {\n input = arguments[0];\n len = input.length;\n spreadArgs = false;\n } else {\n input = arguments;\n len--;\n }\n var resources = new ResourceList(len);\n for (var i = 0; i < len; ++i) {\n var resource = input[i];\n if (Disposer.isDisposer(resource)) {\n var disposer = resource;\n resource = resource.promise();\n resource._setDisposable(disposer);\n } else {\n var maybePromise = tryConvertToPromise(resource);\n if (maybePromise instanceof Promise) {\n resource =\n maybePromise._then(maybeUnwrapDisposer, null, null, {\n resources: resources,\n index: i\n }, undefined);\n }\n }\n resources[i] = resource;\n }\n\n var reflectedResources = new Array(resources.length);\n for (var i = 0; i < reflectedResources.length; ++i) {\n reflectedResources[i] = Promise.resolve(resources[i]).reflect();\n }\n\n var resultPromise = Promise.all(reflectedResources)\n .then(function(inspections) {\n for (var i = 0; i < inspections.length; ++i) {\n var inspection = inspections[i];\n if (inspection.isRejected()) {\n errorObj.e = inspection.error();\n return errorObj;\n } else if (!inspection.isFulfilled()) {\n resultPromise.cancel();\n return;\n }\n inspections[i] = inspection.value();\n }\n promise._pushContext();\n\n fn = tryCatch(fn);\n var ret = spreadArgs\n ? fn.apply(undefined, inspections) : fn(inspections);\n var promiseCreated = promise._popContext();\n debug.checkForgottenReturns(\n ret, promiseCreated, \"Promise.using\", promise);\n return ret;\n });\n\n var promise = resultPromise.lastly(function() {\n var inspection = new Promise.PromiseInspection(resultPromise);\n return dispose(resources, inspection);\n });\n resources.promise = promise;\n promise._setOnCancel(resources);\n return promise;\n };\n\n Promise.prototype._setDisposable = function (disposer) {\n this._bitField = this._bitField | 131072;\n this._disposer = disposer;\n };\n\n Promise.prototype._isDisposable = function () {\n return (this._bitField & 131072) > 0;\n };\n\n Promise.prototype._getDisposer = function () {\n return this._disposer;\n };\n\n Promise.prototype._unsetDisposable = function () {\n this._bitField = this._bitField & (~131072);\n this._disposer = undefined;\n };\n\n Promise.prototype.disposer = function (fn) {\n if (typeof fn === \"function\") {\n return new FunctionDisposer(fn, this, createContext());\n }\n throw new TypeError();\n };\n\n};\n\n},{\"./errors\":12,\"./util\":36}],36:[function(_dereq_,module,exports){\n\"use strict\";\nvar es5 = _dereq_(\"./es5\");\nvar canEvaluate = typeof navigator == \"undefined\";\n\nvar errorObj = {e: {}};\nvar tryCatchTarget;\nvar globalObject = typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window :\n typeof global !== \"undefined\" ? global :\n this !== undefined ? this : null;\n\nfunction tryCatcher() {\n try {\n var target = tryCatchTarget;\n tryCatchTarget = null;\n return target.apply(this, arguments);\n } catch (e) {\n errorObj.e = e;\n return errorObj;\n }\n}\nfunction tryCatch(fn) {\n tryCatchTarget = fn;\n return tryCatcher;\n}\n\nvar inherits = function(Child, Parent) {\n var hasProp = {}.hasOwnProperty;\n\n function T() {\n this.constructor = Child;\n this.constructor$ = Parent;\n for (var propertyName in Parent.prototype) {\n if (hasProp.call(Parent.prototype, propertyName) &&\n propertyName.charAt(propertyName.length-1) !== \"$\"\n ) {\n this[propertyName + \"$\"] = Parent.prototype[propertyName];\n }\n }\n }\n T.prototype = Parent.prototype;\n Child.prototype = new T();\n return Child.prototype;\n};\n\n\nfunction isPrimitive(val) {\n return val == null || val === true || val === false ||\n typeof val === \"string\" || typeof val === \"number\";\n\n}\n\nfunction isObject(value) {\n return typeof value === \"function\" ||\n typeof value === \"object\" && value !== null;\n}\n\nfunction maybeWrapAsError(maybeError) {\n if (!isPrimitive(maybeError)) return maybeError;\n\n return new Error(safeToString(maybeError));\n}\n\nfunction withAppended(target, appendee) {\n var len = target.length;\n var ret = new Array(len + 1);\n var i;\n for (i = 0; i < len; ++i) {\n ret[i] = target[i];\n }\n ret[i] = appendee;\n return ret;\n}\n\nfunction getDataPropertyOrDefault(obj, key, defaultValue) {\n if (es5.isES5) {\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n\n if (desc != null) {\n return desc.get == null && desc.set == null\n ? desc.value\n : defaultValue;\n }\n } else {\n return {}.hasOwnProperty.call(obj, key) ? obj[key] : undefined;\n }\n}\n\nfunction notEnumerableProp(obj, name, value) {\n if (isPrimitive(obj)) return obj;\n var descriptor = {\n value: value,\n configurable: true,\n enumerable: false,\n writable: true\n };\n es5.defineProperty(obj, name, descriptor);\n return obj;\n}\n\nfunction thrower(r) {\n throw r;\n}\n\nvar inheritedDataKeys = (function() {\n var excludedPrototypes = [\n Array.prototype,\n Object.prototype,\n Function.prototype\n ];\n\n var isExcludedProto = function(val) {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (excludedPrototypes[i] === val) {\n return true;\n }\n }\n return false;\n };\n\n if (es5.isES5) {\n var getKeys = Object.getOwnPropertyNames;\n return function(obj) {\n var ret = [];\n var visitedKeys = Object.create(null);\n while (obj != null && !isExcludedProto(obj)) {\n var keys;\n try {\n keys = getKeys(obj);\n } catch (e) {\n return ret;\n }\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (visitedKeys[key]) continue;\n visitedKeys[key] = true;\n var desc = Object.getOwnPropertyDescriptor(obj, key);\n if (desc != null && desc.get == null && desc.set == null) {\n ret.push(key);\n }\n }\n obj = es5.getPrototypeOf(obj);\n }\n return ret;\n };\n } else {\n var hasProp = {}.hasOwnProperty;\n return function(obj) {\n if (isExcludedProto(obj)) return [];\n var ret = [];\n\n /*jshint forin:false */\n enumeration: for (var key in obj) {\n if (hasProp.call(obj, key)) {\n ret.push(key);\n } else {\n for (var i = 0; i < excludedPrototypes.length; ++i) {\n if (hasProp.call(excludedPrototypes[i], key)) {\n continue enumeration;\n }\n }\n ret.push(key);\n }\n }\n return ret;\n };\n }\n\n})();\n\nvar thisAssignmentPattern = /this\\s*\\.\\s*\\S+\\s*=/;\nfunction isClass(fn) {\n try {\n if (typeof fn === \"function\") {\n var keys = es5.names(fn.prototype);\n\n var hasMethods = es5.isES5 && keys.length > 1;\n var hasMethodsOtherThanConstructor = keys.length > 0 &&\n !(keys.length === 1 && keys[0] === \"constructor\");\n var hasThisAssignmentAndStaticMethods =\n thisAssignmentPattern.test(fn + \"\") && es5.names(fn).length > 0;\n\n if (hasMethods || hasMethodsOtherThanConstructor ||\n hasThisAssignmentAndStaticMethods) {\n return true;\n }\n }\n return false;\n } catch (e) {\n return false;\n }\n}\n\nfunction toFastProperties(obj) {\n /*jshint -W027,-W055,-W031*/\n function FakeConstructor() {}\n FakeConstructor.prototype = obj;\n var receiver = new FakeConstructor();\n function ic() {\n return typeof receiver.foo;\n }\n ic();\n ic();\n return obj;\n eval(obj);\n}\n\nvar rident = /^[a-z$_][a-z$_0-9]*$/i;\nfunction isIdentifier(str) {\n return rident.test(str);\n}\n\nfunction filledRange(count, prefix, suffix) {\n var ret = new Array(count);\n for(var i = 0; i < count; ++i) {\n ret[i] = prefix + i + suffix;\n }\n return ret;\n}\n\nfunction safeToString(obj) {\n try {\n return obj + \"\";\n } catch (e) {\n return \"[no string representation]\";\n }\n}\n\nfunction isError(obj) {\n return obj instanceof Error ||\n (obj !== null &&\n typeof obj === \"object\" &&\n typeof obj.message === \"string\" &&\n typeof obj.name === \"string\");\n}\n\nfunction markAsOriginatingFromRejection(e) {\n try {\n notEnumerableProp(e, \"isOperational\", true);\n }\n catch(ignore) {}\n}\n\nfunction originatesFromRejection(e) {\n if (e == null) return false;\n return ((e instanceof Error[\"__BluebirdErrorTypes__\"].OperationalError) ||\n e[\"isOperational\"] === true);\n}\n\nfunction canAttachTrace(obj) {\n return isError(obj) && es5.propertyIsWritable(obj, \"stack\");\n}\n\nvar ensureErrorObject = (function() {\n if (!(\"stack\" in new Error())) {\n return function(value) {\n if (canAttachTrace(value)) return value;\n try {throw new Error(safeToString(value));}\n catch(err) {return err;}\n };\n } else {\n return function(value) {\n if (canAttachTrace(value)) return value;\n return new Error(safeToString(value));\n };\n }\n})();\n\nfunction classString(obj) {\n return {}.toString.call(obj);\n}\n\nfunction copyDescriptors(from, to, filter) {\n var keys = es5.names(from);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (filter(key)) {\n try {\n es5.defineProperty(to, key, es5.getDescriptor(from, key));\n } catch (ignore) {}\n }\n }\n}\n\nvar asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n }\n return null;\n};\n\nif (typeof Symbol !== \"undefined\" && Symbol.iterator) {\n var ArrayFrom = typeof Array.from === \"function\" ? function(v) {\n return Array.from(v);\n } : function(v) {\n var ret = [];\n var it = v[Symbol.iterator]();\n var itResult;\n while (!((itResult = it.next()).done)) {\n ret.push(itResult.value);\n }\n return ret;\n };\n\n asArray = function(v) {\n if (es5.isArray(v)) {\n return v;\n } else if (v != null && typeof v[Symbol.iterator] === \"function\") {\n return ArrayFrom(v);\n }\n return null;\n };\n}\n\nvar isNode = typeof process !== \"undefined\" &&\n classString(process).toLowerCase() === \"[object process]\";\n\nvar hasEnvVariables = typeof process !== \"undefined\" &&\n typeof process.env !== \"undefined\";\n\nfunction env(key) {\n return hasEnvVariables ? process.env[key] : undefined;\n}\n\nfunction getNativePromise() {\n if (typeof Promise === \"function\") {\n try {\n var promise = new Promise(function(){});\n if ({}.toString.call(promise) === \"[object Promise]\") {\n return Promise;\n }\n } catch (e) {}\n }\n}\n\nfunction domainBind(self, cb) {\n return self.bind(cb);\n}\n\nvar ret = {\n isClass: isClass,\n isIdentifier: isIdentifier,\n inheritedDataKeys: inheritedDataKeys,\n getDataPropertyOrDefault: getDataPropertyOrDefault,\n thrower: thrower,\n isArray: es5.isArray,\n asArray: asArray,\n notEnumerableProp: notEnumerableProp,\n isPrimitive: isPrimitive,\n isObject: isObject,\n isError: isError,\n canEvaluate: canEvaluate,\n errorObj: errorObj,\n tryCatch: tryCatch,\n inherits: inherits,\n withAppended: withAppended,\n maybeWrapAsError: maybeWrapAsError,\n toFastProperties: toFastProperties,\n filledRange: filledRange,\n toString: safeToString,\n canAttachTrace: canAttachTrace,\n ensureErrorObject: ensureErrorObject,\n originatesFromRejection: originatesFromRejection,\n markAsOriginatingFromRejection: markAsOriginatingFromRejection,\n classString: classString,\n copyDescriptors: copyDescriptors,\n hasDevTools: typeof chrome !== \"undefined\" && chrome &&\n typeof chrome.loadTimes === \"function\",\n isNode: isNode,\n hasEnvVariables: hasEnvVariables,\n env: env,\n global: globalObject,\n getNativePromise: getNativePromise,\n domainBind: domainBind\n};\nret.isRecentNode = ret.isNode && (function() {\n var version = process.versions.node.split(\".\").map(Number);\n return (version[0] === 0 && version[1] > 10) || (version[0] > 0);\n})();\n\nif (ret.isNode) ret.toFastProperties(process);\n\ntry {throw new Error(); } catch (e) {ret.lastLineError = e;}\nmodule.exports = ret;\n\n},{\"./es5\":13}]},{},[4])(4)\n}); ;if (typeof window !== 'undefined' && window !== null) { window.P = window.Promise; } else if (typeof self !== 'undefined' && self !== null) { self.P = self.Promise; }","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// Browser Request\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n// UMD HEADER START \n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], factory);\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.returnExports = factory();\n }\n}(this, function () {\n// UMD HEADER END\n\nvar XHR = XMLHttpRequest\nif (!XHR) throw new Error('missing XMLHttpRequest')\nrequest.log = {\n 'trace': noop, 'debug': noop, 'info': noop, 'warn': noop, 'error': noop\n}\n\nvar DEFAULT_TIMEOUT = 3 * 60 * 1000 // 3 minutes\n\n//\n// request\n//\n\nfunction request(options, callback) {\n // The entry-point to the API: prep the options object and pass the real work to run_xhr.\n if(typeof callback !== 'function')\n throw new Error('Bad callback given: ' + callback)\n\n if(!options)\n throw new Error('No options given')\n\n var options_onResponse = options.onResponse; // Save this for later.\n\n if(typeof options === 'string')\n options = {'uri':options};\n else\n options = JSON.parse(JSON.stringify(options)); // Use a duplicate for mutating.\n\n options.onResponse = options_onResponse // And put it back.\n\n if (options.verbose) request.log = getLogger();\n\n if(options.url) {\n options.uri = options.url;\n delete options.url;\n }\n\n if(!options.uri && options.uri !== \"\")\n throw new Error(\"options.uri is a required argument\");\n\n if(typeof options.uri != \"string\")\n throw new Error(\"options.uri must be a string\");\n\n var unsupported_options = ['proxy', '_redirectsFollowed', 'maxRedirects', 'followRedirect']\n for (var i = 0; i < unsupported_options.length; i++)\n if(options[ unsupported_options[i] ])\n throw new Error(\"options.\" + unsupported_options[i] + \" is not supported\")\n\n options.callback = callback\n options.method = options.method || 'GET';\n options.headers = options.headers || {};\n options.body = options.body || null\n options.timeout = options.timeout || request.DEFAULT_TIMEOUT\n\n if(options.headers.host)\n throw new Error(\"Options.headers.host is not supported\");\n\n if(options.json) {\n options.headers.accept = options.headers.accept || 'application/json'\n if(options.method !== 'GET')\n options.headers['content-type'] = 'application/json'\n\n if(typeof options.json !== 'boolean')\n options.body = JSON.stringify(options.json)\n else if(typeof options.body !== 'string')\n options.body = JSON.stringify(options.body)\n }\n \n //BEGIN QS Hack\n var serialize = function(obj) {\n var str = [];\n for(var p in obj)\n if (obj.hasOwnProperty(p)) {\n str.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(obj[p]));\n }\n return str.join(\"&\");\n }\n \n if(options.qs){\n var qs = (typeof options.qs == 'string')? options.qs : serialize(options.qs);\n if(options.uri.indexOf('?') !== -1){ //no get params\n options.uri = options.uri+'&'+qs;\n }else{ //existing get params\n options.uri = options.uri+'?'+qs;\n }\n }\n //END QS Hack\n \n //BEGIN FORM Hack\n var multipart = function(obj) {\n //todo: support file type (useful?)\n var result = {};\n result.boundry = '-------------------------------'+Math.floor(Math.random()*1000000000);\n var lines = [];\n for(var p in obj){\n if (obj.hasOwnProperty(p)) {\n lines.push(\n '--'+result.boundry+\"\\n\"+\n 'Content-Disposition: form-data; name=\"'+p+'\"'+\"\\n\"+\n \"\\n\"+\n obj[p]+\"\\n\"\n );\n }\n }\n lines.push( '--'+result.boundry+'--' );\n result.body = lines.join('');\n result.length = result.body.length;\n result.type = 'multipart/form-data; boundary='+result.boundry;\n return result;\n }\n \n if(options.form){\n if(typeof options.form == 'string') throw('form name unsupported');\n if(options.method === 'POST'){\n var encoding = (options.encoding || 'application/x-www-form-urlencoded').toLowerCase();\n options.headers['content-type'] = encoding;\n switch(encoding){\n case 'application/x-www-form-urlencoded':\n options.body = serialize(options.form).replace(/%20/g, \"+\");\n break;\n case 'multipart/form-data':\n var multi = multipart(options.form);\n //options.headers['content-length'] = multi.length;\n options.body = multi.body;\n options.headers['content-type'] = multi.type;\n break;\n default : throw new Error('unsupported encoding:'+encoding);\n }\n }\n }\n //END FORM Hack\n\n // If onResponse is boolean true, call back immediately when the response is known,\n // not when the full request is complete.\n options.onResponse = options.onResponse || noop\n if(options.onResponse === true) {\n options.onResponse = callback\n options.callback = noop\n }\n\n // XXX Browsers do not like this.\n //if(options.body)\n // options.headers['content-length'] = options.body.length;\n\n // HTTP basic authentication\n if(!options.headers.authorization && options.auth)\n options.headers.authorization = 'Basic ' + b64_enc(options.auth.username + ':' + options.auth.password);\n\n return run_xhr(options)\n}\n\nvar req_seq = 0\nfunction run_xhr(options) {\n var xhr = new XHR\n , timed_out = false\n , is_cors = is_crossDomain(options.uri)\n , supports_cors = ('withCredentials' in xhr)\n\n req_seq += 1\n xhr.seq_id = req_seq\n xhr.id = req_seq + ': ' + options.method + ' ' + options.uri\n xhr._id = xhr.id // I know I will type \"_id\" from habit all the time.\n\n if(is_cors && !supports_cors) {\n var cors_err = new Error('Browser does not support cross-origin request: ' + options.uri)\n cors_err.cors = 'unsupported'\n return options.callback(cors_err, xhr)\n }\n\n xhr.timeoutTimer = setTimeout(too_late, options.timeout)\n function too_late() {\n timed_out = true\n var er = new Error('ETIMEDOUT')\n er.code = 'ETIMEDOUT'\n er.duration = options.timeout\n\n request.log.error('Timeout', { 'id':xhr._id, 'milliseconds':options.timeout })\n return options.callback(er, xhr)\n }\n\n // Some states can be skipped over, so remember what is still incomplete.\n var did = {'response':false, 'loading':false, 'end':false}\n\n xhr.onreadystatechange = on_state_change\n xhr.open(options.method, options.uri, true) // asynchronous\n if(is_cors)\n xhr.withCredentials = !! options.withCredentials\n xhr.send(options.body)\n return xhr\n\n function on_state_change(event) {\n if(timed_out)\n return request.log.debug('Ignoring timed out state change', {'state':xhr.readyState, 'id':xhr.id})\n\n request.log.debug('State change', {'state':xhr.readyState, 'id':xhr.id, 'timed_out':timed_out})\n\n if(xhr.readyState === XHR.OPENED) {\n request.log.debug('Request started', {'id':xhr.id})\n for (var key in options.headers)\n xhr.setRequestHeader(key, options.headers[key])\n }\n\n else if(xhr.readyState === XHR.HEADERS_RECEIVED)\n on_response()\n\n else if(xhr.readyState === XHR.LOADING) {\n on_response()\n on_loading()\n }\n\n else if(xhr.readyState === XHR.DONE) {\n on_response()\n on_loading()\n on_end()\n }\n }\n\n function on_response() {\n if(did.response)\n return\n\n did.response = true\n request.log.debug('Got response', {'id':xhr.id, 'status':xhr.status})\n clearTimeout(xhr.timeoutTimer)\n xhr.statusCode = xhr.status // Node request compatibility\n\n // Detect failed CORS requests.\n if(is_cors && xhr.statusCode == 0) {\n var cors_err = new Error('CORS request rejected: ' + options.uri)\n cors_err.cors = 'rejected'\n\n // Do not process this request further.\n did.loading = true\n did.end = true\n\n return options.callback(cors_err, xhr)\n }\n\n options.onResponse(null, xhr)\n }\n\n function on_loading() {\n if(did.loading)\n return\n\n did.loading = true\n request.log.debug('Response body loading', {'id':xhr.id})\n // TODO: Maybe simulate \"data\" events by watching xhr.responseText\n }\n\n function on_end() {\n if(did.end)\n return\n\n did.end = true\n request.log.debug('Request done', {'id':xhr.id})\n\n xhr.body = xhr.responseText\n if(options.json) {\n try { xhr.body = JSON.parse(xhr.responseText) }\n catch (er) { return options.callback(er, xhr) }\n }\n\n options.callback(null, xhr, xhr.body)\n }\n\n} // request\n\nrequest.withCredentials = false;\nrequest.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;\n\n//\n// defaults\n//\n\nrequest.defaults = function(options, requester) {\n var def = function (method) {\n var d = function (params, callback) {\n if(typeof params === 'string')\n params = {'uri': params};\n else {\n params = JSON.parse(JSON.stringify(params));\n }\n for (var i in options) {\n if (params[i] === undefined) params[i] = options[i]\n }\n return method(params, callback)\n }\n return d\n }\n var de = def(request)\n de.get = def(request.get)\n de.post = def(request.post)\n de.put = def(request.put)\n de.head = def(request.head)\n return de\n}\n\n//\n// HTTP method shortcuts\n//\n\nvar shortcuts = [ 'get', 'put', 'post', 'head' ];\nshortcuts.forEach(function(shortcut) {\n var method = shortcut.toUpperCase();\n var func = shortcut.toLowerCase();\n\n request[func] = function(opts) {\n if(typeof opts === 'string')\n opts = {'method':method, 'uri':opts};\n else {\n opts = JSON.parse(JSON.stringify(opts));\n opts.method = method;\n }\n\n var args = [opts].concat(Array.prototype.slice.apply(arguments, [1]));\n return request.apply(this, args);\n }\n})\n\n//\n// CouchDB shortcut\n//\n\nrequest.couch = function(options, callback) {\n if(typeof options === 'string')\n options = {'uri':options}\n\n // Just use the request API to do JSON.\n options.json = true\n if(options.body)\n options.json = options.body\n delete options.body\n\n callback = callback || noop\n\n var xhr = request(options, couch_handler)\n return xhr\n\n function couch_handler(er, resp, body) {\n if(er)\n return callback(er, resp, body)\n\n if((resp.statusCode < 200 || resp.statusCode > 299) && body.error) {\n // The body is a Couch JSON object indicating the error.\n er = new Error('CouchDB error: ' + (body.error.reason || body.error.error))\n for (var key in body)\n er[key] = body[key]\n return callback(er, resp, body);\n }\n\n return callback(er, resp, body);\n }\n}\n\n//\n// Utility\n//\n\nfunction noop() {}\n\nfunction getLogger() {\n var logger = {}\n , levels = ['trace', 'debug', 'info', 'warn', 'error']\n , level, i\n\n for(i = 0; i < levels.length; i++) {\n level = levels[i]\n\n logger[level] = noop\n if(typeof console !== 'undefined' && console && console[level])\n logger[level] = formatted(console, level)\n }\n\n return logger\n}\n\nfunction formatted(obj, method) {\n return formatted_logger\n\n function formatted_logger(str, context) {\n if(typeof context === 'object')\n str += ' ' + JSON.stringify(context)\n\n return obj[method].call(obj, str)\n }\n}\n\n// Return whether a URL is a cross-domain request.\nfunction is_crossDomain(url) {\n var rurl = /^([\\w\\+\\.\\-]+:)(?:\\/\\/([^\\/?#:]*)(?::(\\d+))?)?/\n\n // jQuery #8138, IE may throw an exception when accessing\n // a field from window.location if document.domain has been set\n var ajaxLocation\n try { ajaxLocation = location.href }\n catch (e) {\n // Use the href attribute of an A element since IE will modify it given document.location\n ajaxLocation = document.createElement( \"a\" );\n ajaxLocation.href = \"\";\n ajaxLocation = ajaxLocation.href;\n }\n\n var ajaxLocParts = rurl.exec(ajaxLocation.toLowerCase()) || []\n , parts = rurl.exec(url.toLowerCase() )\n\n var result = !!(\n parts &&\n ( parts[1] != ajaxLocParts[1]\n || parts[2] != ajaxLocParts[2]\n || (parts[3] || (parts[1] === \"http:\" ? 80 : 443)) != (ajaxLocParts[3] || (ajaxLocParts[1] === \"http:\" ? 80 : 443))\n )\n )\n\n //console.debug('is_crossDomain('+url+') -> ' + result)\n return result\n}\n\n// MIT License from http://phpjs.org/functions/base64_encode:358\nfunction b64_enc (data) {\n // Encodes string using MIME base64 algorithm\n var b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc=\"\", tmp_arr = [];\n\n if (!data) {\n return data;\n }\n\n // assume utf8 data\n // data = this.utf8_encode(data+'');\n\n do { // pack three octets into four hexets\n o1 = data.charCodeAt(i++);\n o2 = data.charCodeAt(i++);\n o3 = data.charCodeAt(i++);\n\n bits = o1<<16 | o2<<8 | o3;\n\n h1 = bits>>18 & 0x3f;\n h2 = bits>>12 & 0x3f;\n h3 = bits>>6 & 0x3f;\n h4 = bits & 0x3f;\n\n // use hexets to index into b64, and append result to encoded string\n tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);\n } while (i < data.length);\n\n enc = tmp_arr.join('');\n\n switch (data.length % 3) {\n case 1:\n enc = enc.slice(0, -2) + '==';\n break;\n case 2:\n enc = enc.slice(0, -1) + '=';\n break;\n }\n\n return enc;\n}\n return request;\n//UMD FOOTER START\n}));\n//UMD FOOTER END\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/olm.js b/riot/bundles/f5c70ee9a294f6e4590e/olm.js new file mode 100644 index 0000000..f0d37cd --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/olm.js @@ -0,0 +1,2 @@ +!function(e){var r={};function n(i){if(r[i])return r[i].exports;var t=r[i]={i:i,l:!1,exports:{}};return e[i].call(t.exports,t,t.exports,n),t.l=!0,t.exports}n.m=e,n.c=r,n.d=function(e,r,i){n.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,r){if(1&r&&(e=n(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var t in e)n.d(i,t,function(r){return e[r]}.bind(null,t));return i},n.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(r,"a",r),r},n.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},n.p="",n(n.s=1881)}({15:function(e,r){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},1881:function(e,r,n){"use strict";(function(e){e.OLM_OPTIONS={TOTAL_STACK:65536,TOTAL_MEMORY:262144},n(1882)}).call(this,n(15))},1882:function(module,exports){var N={},ra,process;if("undefined"!=typeof window)ra=function(e){window.crypto.getRandomValues(e)};else{if(!module.exports)throw Error("Cannot find global to attach library to");var cb=require("crypto");ra=function(e){var r=cb.randomBytes(e.length);e.set(r)},process=global.process}!function(){function P(e){eval.call(null,e)}function z(e,r){e||Q("Assertion failed: "+r)}function Ba(g){var b=a["_"+g];if(!b)try{b=eval("_"+g)}catch(e){}return z(b,"Cannot call unknown function "+g+" (perhaps LLVM optimizations or closure removed it?)"),b}function Ca(e,r,n){switch("*"===(n=n||"i8").charAt(n.length-1)&&(n="i32"),n){case"i1":case"i8":A[e>>0]=r;break;case"i16":fa[e>>1]=r;break;case"i32":D[e>>2]=r;break;case"i64":tempI64=[r>>>0,(tempDouble=r,1<=+db(tempDouble)?0<tempDouble?(0|eb(+fb(tempDouble/4294967296),4294967295))>>>0:~~+gb((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],D[e>>2]=tempI64[0],D[e+4>>2]=tempI64[1];break;case"float":ga[e>>2]=r;break;case"double":ha[e>>3]=r;break;default:Q("invalid type for setValue: "+n)}}function W(e,r){switch("*"===(r=r||"i8").charAt(r.length-1)&&(r="i32"),r){case"i1":case"i8":return A[e>>0];case"i16":return fa[e>>1];case"i32":case"i64":return D[e>>2];case"float":return ga[e>>2];case"double":return ha[e>>3];default:Q("invalid type for setValue: "+r)}return null}function K(r,n,i,t){var o,a;"number"==typeof r?(o=!0,a=r):(o=!1,a=r.length);var u,s,_="string"==typeof n?n:null;if(i=4==i?t:["function"==typeof X?X:e.p,e.j,e.p,e.e][void 0===i?2:i](Math.max(a,_?1:n.length)),o){for(t=i,z(0==(3&i)),r=i+(-4&a);t<r;t+=4)D[t>>2]=0;for(r=i+a;t<r;)A[t++>>0]=0;return i}if("i8"===_)return r.subarray||r.slice?B.set(r,i):B.set(new Uint8Array(r),i),i;for(t=0;t<a;){var l=r[t];"function"==typeof l&&(l=e.O(l)),0===(o=_||n[t])?t++:("i64"==o&&(o="i32"),Ca(i+t,l,o),s!==o&&(u=e.r(o),s=o),t+=u)}return i}function r(e,r){if(0===r||!e)return"";for(var n,i=0,t=0;(i|=n=B[e+t>>0],0!=n||r)&&(t++,!r||t!=r););if(r||(r=t),n="",128>i){for(;0<r;)i=String.fromCharCode.apply(String,B.subarray(e,e+Math.min(r,1024))),n=n?n+i:i,e+=1024,r-=1024;return n}return a.UTF8ToString(e)}function Ea(e,r){for(var n,i,t,o,a,u="";;){if(!(n=e[r++]))return u;128&n?(i=63&e[r++],192==(224&n)?u+=String.fromCharCode((31&n)<<6|i):(t=63&e[r++],224==(240&n)?n=(15&n)<<12|i<<6|t:(o=63&e[r++],240==(248&n)?n=(7&n)<<18|i<<12|t<<6|o:(a=63&e[r++],248==(252&n)?n=(3&n)<<24|i<<18|t<<12|o<<6|a:n=(1&n)<<30|i<<24|t<<18|o<<12|a<<6|63&e[r++])),65536>n?u+=String.fromCharCode(n):(n-=65536,u+=String.fromCharCode(55296|n>>10,56320|1023&n)))):u+=String.fromCharCode(n)}}function sa(e){return Ea(B,e)}function ta(e,r,n,i){if(!(0<i))return 0;var t=n;i=n+i-1;for(var o=0;o<e.length;++o){var a=e.charCodeAt(o);if(55296<=a&&57343>=a&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++o)),127>=a){if(n>=i)break;r[n++]=a}else{if(2047>=a){if(n+1>=i)break;r[n++]=192|a>>6}else{if(65535>=a){if(n+2>=i)break;r[n++]=224|a>>12}else{if(2097151>=a){if(n+3>=i)break;r[n++]=240|a>>18}else{if(67108863>=a){if(n+4>=i)break;r[n++]=248|a>>24}else{if(n+5>=i)break;r[n++]=252|a>>30,r[n++]=128|a>>24&63}r[n++]=128|a>>18&63}r[n++]=128|a>>12&63}r[n++]=128|a>>6&63}r[n++]=128|63&a}}return r[n]=0,n-t}function Fa(e){for(var r=0,n=0;n<e.length;++n){var i=e.charCodeAt(n);55296<=i&&57343>=i&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++n)),127>=i?++r:r=2047>=i?r+2:65535>=i?r+3:2097151>=i?r+4:67108863>=i?r+5:r+6}return r}function hb(n){return n.replace(/__Z[\w\d_]+/g,function(n){var i;e:{if(a.___cxa_demangle)try{var t=X(n.length);ua(n.substr(1),t);var o=X(4),u=a.___cxa_demangle(t,0,0,o);if(0===W(o,"i32")&&u){i=r(u);break e}}catch(e){i=n;break e}finally{t&&va(t),o&&va(o),u&&va(u)}e.g("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),i=n}return n===i?n:n+" ["+i+"]"})}function Ga(){var e,r=hb;e:{if(!(e=Error()).stack){try{throw Error(0)}catch(r){e=r}if(!e.stack){e="(no stack trace available)";break e}}e=e.stack.toString()}return r(e)}function ib(e){return 0<e%4096&&(e+=4096-e%4096),e}function S(r){for(;0<r.length;){var n=r.shift();if("function"==typeof n)n();else{var i=n.K;"number"==typeof i?void 0===n.l?e.m("v",i):e.m("vi",i,[n.l]):i(void 0===n.l?null:n.l)}}}function Ha(e){Ia.unshift(e)}function Ja(e){Ka.unshift(e)}function ia(e,r,n){return e=ta(e,n=Array(0<n?n:Fa(e)+1),0,n.length),r&&(n.length=e),n}function ua(e,r,n){for(e=ia(e,n),n=0;n<e.length;)A[r+n>>0]=e[n],n+=1}function La(e,r){for(var n=0;n<e.length;n++)A[r++>>0]=e[n]}function Ma(e,r,n){for(var i=0;i<e.length;++i)A[r++>>0]=e.charCodeAt(i);n||(A[r>>0]=0)}function Na(e){return a.___errno_location&&(D[a.___errno_location()>>2]=e),e}function ja(r){var n=ja;n.b||(E=ib(E),n.b=!0,z(e.e),n.v=e.e,e.e=function(){Q("cannot dynamically allocate, sbrk now has control")});var i=E;return 0==r||n.v(r)?i:4294967295}function wa(){var r=wa;return r.b||(r.b=[]),r.b.push(e.f()),r.b.length-1}function T(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function xa(e){function r(){if(!a.calledRun&&(a.calledRun=!0,!ka)){if(Y||(Y=!0,S(la)),S(Oa),a.onRuntimeInitialized&&a.onRuntimeInitialized(),a._main&&Pa&&a.callMain(e),a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ja(a.postRun.shift());S(Ka)}}if(e=e||a.arguments,null===Qa&&(Qa=Date.now()),!(0<R)){if(a.preRun)for("function"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Ha(a.preRun.shift());S(Ia),0<R||a.calledRun||(a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),r()},1)):r())}}function Ra(e,r){if(!r||!a.noExitRuntime)throw!a.noExitRuntime&&(ka=!0,H=jb,S(Sa),a.onExit)&&a.onExit(e),Z?process.exit(e):ma&&"function"==typeof quit&&quit(e),new T(e)}function Q(e){void 0!==e?(a.print(e),a.o(e),e=JSON.stringify(e)):e="",ka=!0;var r="abort("+e+") at "+Ga()+"\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";throw Ta&&Ta.forEach(function(n){r=n(r,e)}),r}function L(){var e=a._olm_outbound_group_session_size();this.c=u(e),this.a=a._olm_outbound_group_session(this.c)}function v(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_outbound_group_session_last_error(arguments[0])),Error("OLM."+n);return n}}function I(){var e=a._olm_inbound_group_session_size();this.c=u(e),this.a=a._olm_inbound_group_session(this.c)}function F(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_inbound_group_session_last_error(arguments[0])),Error("OLM."+n);return n}}function h(e){return a.allocate(e,"i8",a.ALLOC_STACK)}function m(e){return a.intArrayFromString(e,!0)}function ba(e){var r=h(e);return e=new Uint8Array(a.HEAPU8.buffer,r,e),ra(e),r}function k(e){return function(){var r=Ua.f();try{return e.apply(this,arguments)}finally{Ua.d(r)}}}function na(e,r){for(;0<r--;)a.HEAP8[e++]=0}function C(){var e=a._olm_account_size();this.c=u(e),this.a=a._olm_account(this.c)}function t(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_account_last_error(arguments[0])),Error("OLM."+n);return n}}function w(){var e=a._olm_session_size();this.c=u(e),this.a=a._olm_session(this.c)}function p(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_session_last_error(arguments[0])),Error("OLM."+n);return n}}function oa(){var e=a._olm_utility_size();this.c=u(e),this.a=a._olm_utility(this.c)}function ya(e){return function(){var n=e.apply(this,arguments);if(n===aa)throw n=r(a._olm_utility_last_error(arguments[0])),Error("OLM."+n);return n}}var a={};if("undefined"!=typeof OLM_OPTIONS)for(var G in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(G)&&(a[G]=OLM_OPTIONS[G]);a||(a=eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));var ca={};for(G in a)a.hasOwnProperty(G)&&(ca[G]=a[G]);var da=!1,U=!1,Z=!1,ma=!1,pa,qa;if(a.ENVIRONMENT)if("WEB"===a.ENVIRONMENT)da=!0;else if("WORKER"===a.ENVIRONMENT)U=!0;else if("NODE"===a.ENVIRONMENT)Z=!0;else{if("SHELL"!==a.ENVIRONMENT)throw Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");ma=!0}else da="object"==typeof window,U="function"==typeof importScripts,Z="object"==typeof process&&"function"==typeof require&&!da&&!U,ma=!da&&!Z&&!U;if(Z)a.print||(a.print=console.log),a.printErr||(a.printErr=console.warn),a.read=function(e,r){pa||(pa=require("fs")),qa||(qa=require("path")),e=qa.normalize(e);var n=pa.readFileSync(e);return n||e==qa.resolve(e)||(e=path.join(__dirname,"..","src",e),n=pa.readFileSync(e)),n&&!r&&(n=n.toString()),n},a.readBinary=function(e){return(e=a.read(e,!0)).buffer||(e=new Uint8Array(e)),z(e.buffer),e},a.load=function(e){P(read(e))},a.thisProgram||(a.thisProgram=1<process.argv.length?process.argv[1].replace(/\\/g,"/"):"unknown-program"),a.arguments=process.argv.slice(2),void 0!==module&&(module.exports=a),process.on("uncaughtException",function(e){if(!(e instanceof T))throw e}),a.inspect=function(){return"[Emscripten Module object]"};else if(ma)a.print||(a.print=print),"undefined"!=typeof printErr&&(a.printErr=printErr),a.read="undefined"!=typeof read?read:function(){throw"no read() available (jsc?)"},a.readBinary=function(e){return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(z("object"==typeof(e=read(e,"binary"))),e)},"undefined"!=typeof scriptArgs?a.arguments=scriptArgs:void 0!==arguments&&(a.arguments=arguments),eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined");else{if(!da&&!U)throw"Unknown runtime environment. Where are we?";a.read=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},a.readAsync=function(e,r,n){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=function(){200==i.status||0==i.status&&i.response?r(i.response):n()},i.onerror=n,i.send(null)},void 0!==arguments&&(a.arguments=arguments),"undefined"!=typeof console?(a.print||(a.print=function(e){console.log(e)}),a.printErr||(a.printErr=function(e){console.warn(e)})):a.print||(a.print=function(){}),U&&(a.load=importScripts),void 0===a.setWindowTitle&&(a.setWindowTitle=function(e){document.title=e})}for(G in!a.load&&a.read&&(a.load=function(e){P(a.read(e))}),a.print||(a.print=function(){}),a.printErr||(a.printErr=a.print),a.arguments||(a.arguments=[]),a.thisProgram||(a.thisProgram="./this.program"),a.print=a.print,a.o=a.printErr,a.preRun=[],a.postRun=[],ca)ca.hasOwnProperty(G)&&(a[G]=ca[G]);var ca=void 0,e={C:function(e){tempRet0=e},A:function(){return tempRet0},f:function(){return H},d:function(e){H=e},r:function(r){switch(r){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:return"*"===r[r.length-1]?e.k:"i"===r[0]?(z(0==(r=parseInt(r.substr(1)))%8),r/8):0}},w:function(r){return Math.max(e.r(r),e.k)},D:16,R:function(e,r){return"double"===r||"i64"===r?7&e&&(z(4==(7&e)),e+=4):z(0==(3&e)),e},L:function(r,n,i){return i||"i64"!=r&&"double"!=r?r?Math.min(n||(r?e.w(r):0),e.k):Math.min(n,8):8},m:function(e,r,n){return n&&n.length?(n.splice||(n=Array.prototype.slice.call(n)),n.splice(0,0,r),a["dynCall_"+e].apply(null,n)):a["dynCall_"+e].call(null,r)},i:[],s:function(r){for(var n=0;n<e.i.length;n++)if(!e.i[n])return e.i[n]=r,2*(1+n);throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."},B:function(r){e.i[(r-2)/2]=null},g:function(r){e.g.b||(e.g.b={}),e.g.b[r]||(e.g.b[r]=1,a.o(r))},n:{},N:function(r,n){z(n),e.n[n]||(e.n[n]={});var i=e.n[n];return i[r]||(i[r]=function(){return e.m(n,r,arguments)}),i[r]},M:function(){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"},j:function(e){var r=H;return H=(H=H+e|0)+15&-16,r},p:function(e){var r=J;return J=(J=J+e|0)+15&-16,r},e:function(e){var r=E;return(e=(E=(E=E+e|0)+15&-16)>=V)&&(Q("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+V+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 "),e=!0),e?(E=r,0):r},q:function(e,r){return Math.ceil(e/(r||16))*(r||16)},Q:function(e,r,n){return n?+(e>>>0)+4294967296*+(r>>>0):+(e>>>0)+4294967296*+(0|r)},h:8,k:4,F:0};a.Runtime=e,e.addFunction=e.s,e.removeFunction=e.B;var ka=!1,Va,Wa;!function(){function a(e){return{arguments:(e=e.toString().match(d).slice(1))[0],body:e[1],returnValue:e[2]}}function b(){if(!l)for(var e in l={},c)c.hasOwnProperty(e)&&(l[e]=a(c[e]))}var c={stackSave:function(){e.f()},stackRestore:function(){e.d()},arrayToC:function(r){var n=e.j(r.length);return La(r,n),n},stringToC:function(r){var n=0;return null!==r&&void 0!==r&&0!==r&&ua(r,n=e.j(1+(r.length<<2))),n}},f={string:c.stringToC,array:c.arrayToC};Wa=function(n,i,t,o,a){n=Ba(n);var u=[],s=0;if(o)for(var _=0;_<o.length;_++){var l=f[t[_]];l?(0===s&&(s=e.f()),u[_]=l(o[_])):u[_]=o[_]}if(t=n.apply(null,u),"string"===i&&(t=r(t)),0!==s){if(a&&a.async)return void EmterpreterAsync.G.push(function(){e.d(s)});e.d(s)}return t};var d=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/,l=null;Va=function(c,f,d){d=d||[];var O=Ba(c);c=d.every(function(e){return"number"===e});var h="string"!==f;if(h&&c)return O;var e=d.map(function(e,r){return"$"+r});f="(function("+e.join(",")+") {";var k=d.length;if(!c){b(),f+="var stack = "+l.stackSave.body+";";for(var m=0;m<k;m++){var q=e[m],p=d[m];"number"!==p&&(p=l[p+"ToC"],f+="var "+p.arguments+" = "+q+";",f+=p.body+";",f+=q+"=("+p.returnValue+");")}}return d=a(function(){return O}).returnValue,f+="var ret = "+d+"("+e.join(",")+");",h||(d=a(function(){return r}).returnValue,f+="ret = "+d+"(ret);"),c||(b(),f+=l.stackRestore.body.replace("()","(stack)")+";"),eval(f+"return ret})")}}(),a.ccall=Wa,a.cwrap=Va,a.setValue=Ca,a.getValue=W,a.ALLOC_NORMAL=0,a.ALLOC_STACK=1,a.ALLOC_STATIC=2,a.ALLOC_DYNAMIC=3,a.ALLOC_NONE=4,a.allocate=K,a.getMemory=function(r){return Xa?void 0!==ja&&!ja.b||!Y?e.e(r):X(r):e.p(r)},a.Pointer_stringify=r,a.AsciiToString=function(e){for(var r="";;){var n=A[e++>>0];if(!n)return r;r+=String.fromCharCode(n)}},a.stringToAscii=function(e,r){return Ma(e,r,!1)},a.UTF8ArrayToString=Ea,a.UTF8ToString=sa,a.stringToUTF8Array=ta,a.stringToUTF8=function(e,r,n){return ta(e,B,r,n)},a.lengthBytesUTF8=Fa,a.stackTrace=Ga;for(var x,A,B,fa,Ya,D,Za,ga,ha,$a=0,J=0,Xa=!1,ab=0,H=0,za=0,E=0,bb=a.TOTAL_STACK||5242880,V=a.TOTAL_MEMORY||16777216,M=65536;M<V||M<2*bb;)M=16777216>M?2*M:M+16777216;if(M!==V&&(V=M),x=a.buffer?a.buffer:new ArrayBuffer(V),a.HEAP8=A=new Int8Array(x),a.HEAP16=fa=new Int16Array(x),a.HEAP32=D=new Int32Array(x),a.HEAPU8=B=new Uint8Array(x),a.HEAPU16=Ya=new Uint16Array(x),a.HEAPU32=Za=new Uint32Array(x),a.HEAPF32=ga=new Float32Array(x),a.HEAPF64=ha=new Float64Array(x),D[0]=255,255!==B[0]||0!==B[3])throw"Typed arrays 2 must be run on a little-endian system";a.HEAP=void 0,a.buffer=x,a.HEAP8=A,a.HEAP16=fa,a.HEAP32=D,a.HEAPU8=B,a.HEAPU16=Ya,a.HEAPU32=Za,a.HEAPF32=ga,a.HEAPF64=ha;var Ia=[],la=[],Oa=[],Sa=[],Ka=[],Y=!1;a.addOnPreRun=Ha,a.addOnInit=function(e){la.unshift(e)},a.addOnPreMain=function(e){Oa.unshift(e)},a.addOnExit=function(e){Sa.unshift(e)},a.addOnPostRun=Ja,a.intArrayFromString=ia,a.intArrayToString=function(e){for(var r=[],n=0;n<e.length;n++){var i=e[n];255<i&&(i&=255),r.push(String.fromCharCode(i))}return r.join("")},a.writeStringToMemory=ua,a.writeArrayToMemory=La,a.writeAsciiToMemory=Ma,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,r){var n=65535&e,i=65535&r;return n*i+((e>>>16)*i+n*(r>>>16)<<16)|0}),Math.P=Math.imul,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var r=0;32>r;r++)if(e&1<<31-r)return r;return 32}),Math.I=Math.clz32;var db=Math.abs,gb=Math.ceil,fb=Math.floor,eb=Math.min,R=0,Aa=null,ea=null;a.addRunDependency=function(){R++,a.monitorRunDependencies&&a.monitorRunDependencies(R)},a.removeRunDependency=function(){if(R--,a.monitorRunDependencies&&a.monitorRunDependencies(R),0==R&&(null!==Aa&&(clearInterval(Aa),Aa=null),ea)){var e=ea;ea=null,e()}},a.preloadedImages={},a.preloadedAudios={},$a=8,J=$a+36128,la.push(),K([34,174,40,215,152,47,138,66,205,101,239,35,145,68,55,113,47,59,77,236,207,251,192,181,188,219,137,129,165,219,181,233,56,181,72,243,91,194,86,57,25,208,5,182,241,17,241,89,155,79,25,175,164,130,63,146,24,129,109,218,213,94,28,171,66,2,3,163,152,170,7,216,190,111,112,69,1,91,131,18,140,178,228,78,190,133,49,36,226,180,255,213,195,125,12,85,111,137,123,242,116,93,190,114,177,150,22,59,254,177,222,128,53,18,199,37,167,6,220,155,148,38,105,207,116,241,155,193,210,74,241,158,193,105,155,228,227,37,79,56,134,71,190,239,181,213,140,139,198,157,193,15,101,156,172,119,204,161,12,36,117,2,43,89,111,44,233,45,131,228,166,110,170,132,116,74,212,251,65,189,220,169,176,92,181,83,17,131,218,136,249,118,171,223,102,238,82,81,62,152,16,50,180,45,109,198,49,168,63,33,251,152,200,39,3,176,228,14,239,190,199,127,89,191,194,143,168,61,243,11,224,198,37,167,10,147,71,145,167,213,111,130,3,224,81,99,202,6,112,110,14,10,103,41,41,20,252,47,210,70,133,10,183,39,38,201,38,92,56,33,27,46,237,42,196,90,252,109,44,77,223,179,149,157,19,13,56,83,222,99,175,139,84,115,10,101,168,178,119,60,187,10,106,118,230,174,237,71,46,201,194,129,59,53,130,20,133,44,114,146,100,3,241,76,161,232,191,162,1,48,66,188,75,102,26,168,145,151,248,208,112,139,75,194,48,190,84,6,163,81,108,199,24,82,239,214,25,232,146,209,16,169,101,85,36,6,153,214,42,32,113,87,133,53,14,244,184,209,187,50,112,160,106,16,200,208,210,184,22,193,164,25,83,171,65,81,8,108,55,30,153,235,142,223,76,119,72,39,168,72,155,225,181,188,176,52,99,90,201,197,179,12,28,57,203,138,65,227,74,170,216,78,115,227,99,119,79,202,156,91,163,184,178,214,243,111,46,104,252,178,239,93,238,130,143,116,96,47,23,67,111,99,165,120,114,171,240,161,20,120,200,132,236,57,100,26,8,2,199,140,40,30,99,35,250,255,190,144,233,189,130,222,235,108,80,164,21,121,198,178,247,163,249,190,43,83,114,227,242,120,113,198,156,97,38,234,206,62,39,202,7,194,192,33,199,184,134,209,30,235,224,205,214,125,218,234,120,209,110,238,127,79,125,245,186,111,23,114,170,103,240,6,166,152,200,162,197,125,99,10,174,13,249,190,4,152,63,17,27,71,28,19,53,11,113,27,132,125,4,35,245,119,219,40,147,36,199,64,123,171,202,50,188,190,201,21,10,190,158,60,76,13,16,156,196,103,29,67,182,66,62,203,190,212,197,76,42,126,101,252,156,41,127,89,236,250,214,58,171,111,203,95,23,88,71,74,140,25,68,108,68,129,0,0,8,0,0,0,77,129,0,0,11,0,0,0,164,2,0,0,89,129,0,0,8,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,89,241,178,254,10,229,166,255,123,221,42,254,30,20,212,0,82,128,3,0,48,209,243,0,119,121,64,255,50,227,156,255,0,110,197,1,103,27,144,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,47,99,168,254,170,226,153,255,102,179,216,0,226,141,122,255,122,66,153,254,182,245,134,0,227,228,25,1,214,57,235,255,216,173,56,255,181,231,210,0,119,128,157,255,129,95,136,255,110,126,51,0,2,169,183,255,7,130,98,254,69,176,94,255,116,4,227,1,217,242,145,255,202,173,31,1,105,1,39,255,46,175,69,0,228,47,58,255,215,224,69,254,207,56,69,255,16,254,139,255,23,207,212,255,202,20,126,255,95,213,96,255,9,176,33,0,200,5,207,255,241,42,128,254,35,33,192,255,248,229,196,1,129,17,120,0,251,103,151,255,7,52,112,255,140,56,66,255,40,226,245,255,217,70,37,254,172,214,9,255,72,67,134,1,146,192,214,255,44,38,112,0,68,184,75,255,206,90,251,0,149,235,141,0,181,170,58,0,116,244,239,0,92,157,2,0,102,173,98,0,233,137,96,1,127,49,203,0,5,155,148,0,23,148,9,255,211,122,12,0,34,134,26,255,219,204,136,0,134,8,41,255,224,83,43,254,85,25,247,0,109,127,0,254,169,136,48,0,238,119,219,255,231,173,213,0,206,18,254,254,8,186,7,255,126,9,7,1,111,42,72,0,111,52,236,254,96,63,141,0,147,191,127,254,205,78,192,255,14,106,237,1,187,219,76,0,175,243,187,254,105,89,173,0,85,25,89,1,162,243,148,0,2,118,209,254,33,158,9,0,139,163,46,255,93,70,40,0,108,42,142,254,111,252,142,255,155,223,144,0,51,229,167,255,73,252,155,255,94,116,12,255,152,160,218,255,156,238,37,255,179,234,207,255,197,0,179,255,154,164,141,0,225,196,104,0,10,35,25,254,209,212,242,255,97,253,222,254,184,101,229,0,222,18,127,1,164,136,135,255,30,207,140,254,146,97,243,0,129,192,26,254,201,84,33,255,111,10,78,255,147,81,178,255,4,4,24,0,161,238,215,255,6,141,33,0,53,215,14,255,41,181,208,255,231,139,157,0,179,203,221,255,255,185,113,0,189,226,172,255,113,66,214,255,202,62,45,255,102,64,8,255,78,174,16,254,133,117,68,255,182,120,89,255,133,114,211,0,189,110,21,255,15,10,106,0,41,192,1,0,152,232,121,255,188,60,160,255,153,113,206,255,0,183,226,254,180,13,72,255,176,160,14,254,211,201,134,255,158,24,143,0,127,105,53,0,96,12,189,0,167,215,251,255,159,76,128,254,106,101,225,255,30,252,4,0,146,12,174,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,234,113,60,255,37,255,57,255,69,178,182,254,128,208,179,0,118,26,125,254,3,7,214,255,241,50,77,255,85,203,197,255,211,135,250,255,25,48,100,255,187,213,180,254,17,88,105,0,83,209,158,1,5,115,98,0,4,174,60,254,171,55,110,255,217,181,17,255,20,188,170,0,146,156,102,254,87,214,174,255,114,122,155,1,233,44,170,0,127,8,239,1,214,236,234,0,175,5,219,0,49,106,61,255,6,66,208,255,2,106,110,255,81,234,19,255,215,107,192,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,178,9,252,254,100,110,212,0,14,5,167,0,233,239,163,255,28,151,157,1,101,146,10,255,254,158,70,254,71,249,228,0,88,30,50,0,68,58,160,255,191,24,104,1,129,66,129,255,192,50,85,255,8,179,138,255,38,250,201,0,115,80,160,0,131,230,113,0,125,88,147,0,90,68,199,0,253,76,158,0,28,255,118,0,113,250,254,0,66,75,46,0,230,218,43,0,229,120,186,1,148,68,43,0,136,124,238,1,187,107,197,255,84,53,246,255,51,116,254,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,68,113,21,255,222,186,59,255,66,7,241,1,69,6,72,0,86,156,108,254,55,167,89,0,109,52,219,254,13,176,23,255,196,44,106,255,239,149,71,255,164,140,125,255,159,173,1,0,51,41,231,0,145,62,33,0,138,111,93,1,185,83,69,0,144,115,46,0,97,151,16,255,24,228,26,0,49,217,226,0,113,75,234,254,193,153,12,255,182,48,96,255,14,13,26,0,128,195,249,254,69,193,59,0,132,37,81,254,125,106,60,0,214,240,169,1,164,227,66,0,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,143,62,221,0,129,89,214,255,55,139,5,254,68,20,191,255,14,204,178,1,35,195,217,0,47,51,206,1,38,246,165,0,206,27,6,254,158,87,36,0,217,52,146,255,125,123,215,255,85,60,31,255,171,13,7,0,218,245,88,254,252,35,60,0,55,214,160,255,133,101,56,0,224,32,19,254,147,64,234,0,26,145,162,1,114,118,125,0,248,252,250,0,101,94,196,255,198,141,226,254,51,42,182,0,135,12,9,254,109,172,210,255,197,236,194,1,241,65,154,0,48,156,47,255,153,67,55,255,218,165,34,254,74,180,179,0,218,66,71,1,88,122,99,0,212,181,219,255,92,42,231,255,239,0,154,0,245,77,183,255,94,81,170,1,18,213,216,0,171,93,71,0,52,94,248,0,18,151,161,254,197,209,66,255,174,244,15,254,162,48,183,0,49,61,240,254,182,93,195,0,199,228,6,1,200,5,17,255,137,45,237,255,108,148,4,0,90,79,237,255,39,63,77,255,53,82,207,1,142,22,118,255,101,232,18,1,92,26,67,0,5,200,88,255,33,168,138,255,149,225,72,0,2,209,27,255,44,245,168,1,220,237,17,255,30,211,105,254,141,238,221,0,128,80,245,254,111,254,14,0,222,95,190,1,223,9,241,0,146,76,212,255,108,205,104,255,63,117,153,0,144,69,48,0,35,228,111,0,192,33,193,255,112,214,190,254,115,152,151,0,23,102,88,0,51,74,248,0,226,199,143,254,204,162,101,255,208,97,189,1,245,104,18,0,230,246,30,255,23,148,69,0,110,88,52,254,226,181,89,255,208,47,90,254,114,161,80,255,33,116,248,0,179,152,87,255,69,144,177,1,88,238,26,255,58,32,113,1,1,77,69,0,59,121,52,255,152,238,83,0,52,8,193,0,231,39,233,255,199,34,138,0,222,68,173,0,91,57,242,254,220,210,127,255,192,7,246,254,151,35,187,0,195,236,165,0,111,93,206,0,212,247,133,1,154,133,209,255,155,231,10,0,64,78,38,0,122,249,100,1,30,19,97,255,62,91,249,1,248,133,77,0,197,63,168,254,116,10,82,0,184,236,113,254,212,203,194,255,61,100,252,254,36,5,202,255,119,91,153,255,129,79,29,0,103,103,171,254,237,215,111,255,216,53,69,0,239,240,23,0,194,149,221,255,38,225,222,0,232,255,180,254,118,82,133,255,57,209,177,1,139,232,133,0,158,176,46,254,194,115,46,0,88,247,229,1,28,103,191,0,221,222,175,254,149,235,44,0,151,228,25,254,218,105,103,0,142,85,210,0,149,129,190,255,213,65,94,254,117,134,224,255,82,198,117,0,157,221,220,0,163,101,36,0,197,114,37,0,104,172,166,254,11,182,0,0,81,72,188,255,97,188,16,255,69,6,10,0,199,147,145,255,8,9,115,1,65,214,175,255,217,173,209,0,80,127,166,0,247,229,4,254,167,183,124,255,90,28,204,254,175,59,240,255,11,41,248,1,108,40,51,255,144,177,195,254,150,250,126,0,138,91,65,1,120,60,222,255,245,193,239,0,29,214,189,255,128,2,25,0,80,154,162,0,77,220,107,1,234,205,74,255,54,166,103,255,116,72,9,0,228,94,47,255,30,200,25,255,35,214,89,255,61,176,140,255,83,226,163,255,75,130,172,0,128,38,17,0,95,137,152,255,215,124,159,1,79,93,0,0,148,82,157,254,195,130,251,255,40,202,76,255,251,126,224,0,157,99,62,254,207,7,225,255,96,68,195,0,140,186,157,255,131,19,231,255,42,128,254,0,52,219,61,254,102,203,72,0,141,7,11,255,186,164,213,0,31,122,119,0,133,242,145,0,208,252,232,255,91,213,182,255,143,4,250,254,249,215,74,0,165,30,111,1,171,9,223,0,229,123,34,1,92,130,26,255,77,155,45,1,195,139,28,255,59,224,78,0,136,17,247,0,108,121,32,0,79,250,189,255,96,227,252,254,38,241,62,0,62,174,125,255,155,111,93,255,10,230,206,1,97,197,40,255,0,49,57,254,65,250,13,0,18,251,150,255,220,109,210,255,5,174,166,254,44,129,189,0,235,35,147,255,37,247,141,255,72,141,4,255,103,107,255,0,247,90,4,0,53,44,42,0,2,30,240,0,4,59,63,0,88,78,36,0,113,167,180,0,190,71,193,255,199,158,164,255,58,8,172,0,77,33,12,0,65,63,3,0,153,77,33,255,172,254,102,1,228,221,4,255,87,30,254,1,146,41,86,255,138,204,239,254,108,141,17,255,187,242,135,0,210,208,127,0,68,45,14,254,73,96,62,0,81,60,24,255,170,6,36,255,3,249,26,0,35,213,109,0,22,129,54,255,21,35,225,255,234,61,56,255,58,217,6,0,143,124,88,0,236,126,66,0,209,38,183,255,34,238,6,255,174,145,102,0,95,22,211,0,196,15,153,254,46,84,232,255,117,34,146,1,231,250,74,255,27,134,100,1,92,187,195,255,170,198,112,0,120,28,42,0,209,70,67,0,29,81,31,0,29,168,100,1,169,173,160,0,107,35,117,0,62,96,59,255,81,12,69,1,135,239,190,255,220,252,18,0,163,220,58,255,137,137,188,255,83,102,109,0,96,6,76,0,234,222,210,255,185,174,205,1,60,158,213,255,13,241,214,0,172,129,140,0,93,104,242,0,192,156,251,0,43,117,30,0,225,81,158,0,127,232,218,0,226,28,203,0,233,27,151,255,117,43,5,255,242,14,47,255,33,20,6,0,137,251,44,254,27,31,245,255,183,214,125,254,40,121,149,0,186,158,213,255,89,8,227,0,69,88,0,254,203,135,225,0,201,174,203,0,147,71,184,0,18,121,41,254,94,5,78,0,224,214,240,254,36,5,180,0,251,135,231,1,163,138,212,0,210,249,116,254,88,129,187,0,19,8,49,254,62,14,144,255,159,76,211,0,214,51,82,0,109,117,228,254,103,223,203,255,75,252,15,1,154,71,220,255,23,13,91,1,141,168,96,255,181,182,133,0,250,51,55,0,234,234,212,254,175,63,158,0,39,240,52,1,158,189,36,255,213,40,85,1,32,180,247,255,19,102,26,1,84,24,97,255,69,21,222,0,148,139,122,255,220,213,235,1,232,203,255,0,121,57,147,0,227,7,154,0,53,22,147,1,72,1,225,0,82,134,48,254,83,60,157,255,145,72,169,0,34,103,239,0,198,233,47,0,116,19,4,255,184,106,9,255,183,129,83,0,36,176,230,1,34,103,72,0,219,162,134,0,245,42,158,0,32,149,96,254,165,44,144,0,202,239,72,254,215,150,5,0,42,66,36,1,132,215,175,0,86,174,86,255,26,197,156,255,49,232,135,254,103,182,82,0,253,128,176,1,153,178,122,0,245,250,10,0,236,24,178,0,137,106,132,0,40,29,41,0,50,30,152,255,124,105,38,0,230,191,75,0,143,43,170,0,44,131,20,255,44,13,23,255,237,255,155,1,159,109,100,255,112,181,24,255,104,220,108,0,55,211,131,0,99,12,213,255,152,151,145,255,238,5,159,0,97,155,8,0,33,108,81,0,1,3,103,0,62,109,34,255,250,155,180,0,32,71,195,255,38,70,145,1,159,95,245,0,69,229,101,1,136,28,240,0,79,224,25,0,78,110,121,255,248,168,124,0,187,128,247,0,2,147,235,254,79,11,132,0,70,58,12,1,181,8,163,255,79,137,133,255,37,170,11,255,141,243,85,255,176,231,215,255,204,150,164,255,239,215,39,255,46,87,156,254,8,163,88,255,172,34,232,0,66,44,102,255,27,54,41,254,236,99,87,255,41,123,169,1,52,114,43,0,117,134,40,0,155,134,26,0,231,207,91,254,35,132,38,255,19,102,125,254,36,227,133,255,118,3,113,255,29,13,124,0,152,96,74,1,88,146,206,255,167,191,220,254,162,18,88,255,182,100,23,0,31,117,52,0,81,46,106,1,12,2,7,0,69,80,201,1,209,246,172,0,12,48,141,1,224,211,88,0,116,226,159,0,122,98,130,0,65,236,234,1,225,226,9,255,207,226,123,1,89,214,59,0,112,135,88,1,90,244,203,255,49,11,38,1,129,108,186,0,89,112,15,1,101,46,204,255,127,204,45,254,79,255,221,255,51,73,18,255,127,42,101,255,241,21,202,0,160,227,7,0,105,50,236,0,79,52,197,255,104,202,208,1,180,15,16,0,101,197,78,255,98,77,203,0,41,185,241,1,35,193,124,0,35,155,23,255,207,53,192,0,11,125,163,1,249,158,185,255,4,131,48,0,21,93,111,255,61,121,231,1,69,200,36,255,185,48,185,255,111,238,21,255,39,50,25,255,99,215,163,255,87,212,30,255,164,147,5,255,128,6,35,1,108,223,110,255,194,76,178,0,74,101,180,0,243,47,48,0,174,25,43,255,82,173,253,1,54,114,192,255,40,55,91,0,215,108,176,255,11,56,7,0,224,233,76,0,209,98,202,254,242,25,125,0,44,193,93,254,203,8,177,0,135,176,19,0,112,71,213,255,206,59,176,1,4,67,26,0,14,143,213,254,42,55,208,255,60,67,120,0,193,21,163,0,99,164,115,0,10,20,118,0,156,212,222,254,160,7,217,255,114,245,76,1,117,59,123,0,176,194,86,254,213,15,176,0,78,206,207,254,213,129,59,0,233,251,22,1,96,55,152,255,236,255,15,255,197,89,84,255,93,149,133,0,174,160,113,0,234,99,169,255,152,116,88,0,144,164,83,255,95,29,198,255,34,47,15,255,99,120,134,255,5,236,193,0,249,247,126,255,147,187,30,0,50,230,117,255,108,217,219,255,163,81,166,255,72,25,169,254,155,121,79,255,28,155,89,254,7,126,17,0,147,65,33,1,47,234,253,0,26,51,18,0,105,83,199,255,163,196,230,0,113,248,164,0,226,254,218,0,189,209,203,255,164,247,222,254,255,35,165,0,4,188,243,1,127,179,71,0,37,237,254,255,100,186,240,0,5,57,71,254,103,72,73,255,244,18,81,254,229,210,132,255,238,6,180,255,11,229,174,255,227,221,192,1,17,49,28,0,163,215,196,254,9,118,4,255,51,240,71,0,113,129,109,255,76,240,231,0,188,177,127,0,125,71,44,1,26,175,243,0,94,169,25,254,27,230,29,0,15,139,119,1,168,170,186,255,172,197,76,255,252,75,188,0,137,124,196,0,72,22,96,255,45,151,249,1,220,145,100,0,64,192,159,255,120,239,226,0,129,178,146,0,0,192,125,0,235,138,234,0,183,157,146,0,83,199,192,255,184,172,72,255,73,225,128,0,77,6,250,255,186,65,67,0,104,246,207,0,188,32,138,255,218,24,242,0,67,138,81,254,237,129,121,255,20,207,150,1,41,199,16,255,6,20,128,0,159,118,5,0,181,16,143,255,220,38,15,0,23,64,147,254,73,26,13,0,87,228,57,1,204,124,128,0,43,24,223,0,219,99,199,0,22,75,20,255,19,27,126,0,157,62,215,0,110,29,230,0,179,167,255,1,54,252,190,0,221,204,182,254,179,158,65,255,81,157,3,0,194,218,159,0,170,223,0,0,224,11,32,255,38,197,98,0,168,164,37,0,23,88,7,1,164,186,110,0,96,36,134,0,234,242,229,0,250,121,19,0,242,254,112,255,3,47,94,1,9,239,6,255,81,134,153,254,214,253,168,255,67,124,224,0,245,95,74,0,28,30,44,254,1,109,220,255,178,89,89,0,252,36,76,0,24,198,46,255,76,77,111,0,134,234,136,255,39,94,29,0,185,72,234,255,70,68,135,255,231,102,7,254,77,231,140,0,167,47,58,1,148,97,118,255,16,27,225,1,166,206,143,255,110,178,214,255,180,131,162,0,143,141,225,1,13,218,78,255,114,153,33,1,98,104,204,0,175,114,117,1,167,206,75,0,202,196,83,1,58,64,67,0,138,47,111,1,196,247,128,255,137,224,224,254,158,112,207,0,154,100,255,1,134,37,107,0,198,128,79,255,127,209,155,255,163,254,185,254,60,14,243,0,31,219,112,254,29,217,65,0,200,13,116,254,123,60,196,255,224,59,184,254,242,89,196,0,123,16,75,254,149,16,206,0,69,254,48,1,231,116,223,255,209,160,65,1,200,80,98,0,37,194,184,254,148,63,34,0,139,240,65,255,217,144,132,255,56,38,45,254,199,120,210,0,108,177,166,255,160,222,4,0,220,126,119,254,165,107,160,255,82,220,248,1,241,175,136,0,144,141,23,255,169,138,84,0,160,137,78,255,226,118,80,255,52,27,132,255,63,96,139,255,152,250,39,0,188,155,15,0,232,51,150,254,40,15,232,255,240,229,9,255,137,175,27,255,75,73,97,1,218,212,11,0,135,5,162,1,107,185,213,0,2,249,107,255,40,242,70,0,219,200,25,0,25,157,13,0,67,82,80,255,196,249,23,255,145,20,149,0,50,72,146,0,94,76,148,1,24,251,65,0,31,192,23,0,184,212,201,255,123,233,162,1,247,173,72,0,162,87,219,254,126,134,89,0,159,11,12,254,166,105,29,0,73,27,228,1,113,120,183,255,66,163,109,1,212,143,11,255,159,231,168,1,255,128,90,0,57,14,58,254,89,52,10,255,253,8,163,1,0,145,210,255,10,129,85,1,46,181,27,0,103,136,160,254,126,188,209,255,34,35,111,0,215,219,24,255,212,11,214,254,101,5,118,0,232,197,133,255,223,167,109,255,237,80,86,255,70,139,94,0,158,193,191,1,155,15,51,255,15,190,115,0,78,135,207,255,249,10,27,1,181,125,233,0,95,172,13,254,170,213,161,255,39,236,138,255,95,93,87,255,190,128,95,0,125,15,206,0,166,150,159,0,227,15,158,255,206,158,120,255,42,141,128,0,101,178,120,1,156,109,131,0,218,14,44,254,247,168,206,255,212,112,28,0,112,17,228,255,90,16,37,1,197,222,108,0,254,207,83,255,9,90,243,255,243,244,172,0,26,88,115,255,205,116,122,0,191,230,193,0,180,100,11,1,217,37,96,255,154,78,156,0,235,234,31,255,206,178,178,255,149,192,251,0,182,250,135,0,246,22,105,0,124,193,109,255,2,210,149,255,169,17,170,0,0,96,110,255,117,9,8,1,50,123,40,255,193,189,99,0,34,227,160,0,48,80,70,254,211,51,236,0,45,122,245,254,44,174,8,0,173,37,233,255,158,65,171,0,122,69,215,255,90,80,2,255,131,106,96,254,227,114,135,0,205,49,119,254,176,62,64,255,82,51,17,255,241,20,243,255,130,13,8,254,128,217,243,255,162,27,1,254,90,118,241,0,246,198,246,255,55,16,118,255,200,159,157,0,163,17,1,0,140,107,121,0,85,161,118,255,38,0,149,0,156,47,238,0,9,166,166,1,75,98,181,255,50,74,25,0,66,15,47,0,139,225,159,0,76,3,142,255,14,238,184,0,11,207,53,255,183,192,186,1,171,32,174,255,191,76,221,1,247,170,219,0,25,172,50,254,217,9,233,0,203,126,68,255,183,92,48,0,127,167,183,1,65,49,254,0,16,63,127,1,254,21,170,255,59,224,127,254,22,48,63,255,27,78,130,254,40,195,29,0,250,132,112,254,35,203,144,0,104,169,168,0,207,253,30,255,104,40,38,254,94,228,88,0,206,16,128,255,212,55,122,255,223,22,234,0,223,197,127,0,253,181,181,1,145,102,118,0,236,153,36,255,212,217,72,255,20,38,24,254,138,62,62,0,152,140,4,0,230,220,99,255,1,21,212,255,148,201,231,0,244,123,9,254,0,171,210,0,51,58,37,255,1,255,14,255,244,183,145,254,0,242,166,0,22,74,132,0,121,216,41,0,95,195,114,254,133,24,151,255,156,226,231,255,247,5,77,255,246,148,115,254,225,92,81,255,222,80,246,254,170,123,89,255,74,199,141,0,29,20,8,255,138,136,70,255,93,75,92,0,221,147,49,254,52,126,226,0,229,124,23,0,46,9,181,0,205,64,52,1,131,254,28,0,151,158,212,0,131,64,78,0,206,25,171,0,0,230,139,0,191,253,110,254,103,247,167,0,64,40,40,1,42,165,241,255,59,75,228,254,124,243,189,255,196,92,178,255,130,140,86,255,141,89,56,1,147,198,5,255,203,248,158,254,144,162,141,0,11,172,226,0,130,42,21,255,1,167,143,255,144,36,36,255,48,88,164,254,168,170,220,0,98,71,214,0,91,208,79,0,159,76,201,1,166,42,214,255,69,255,0,255,6,128,125,255,190,1,140,0,146,83,218,255,215,238,72,1,122,127,53,0,189,116,165,255,84,8,66,255,214,3,208,255,213,110,133,0,195,168,44,1,158,231,69,0,162,64,200,254,91,58,104,0,182,58,187,254,249,228,136,0,203,134,76,254,99,221,233,0,75,254,214,254,80,69,154,0,64,152,248,254,236,136,202,255,157,105,153,254,149,175,20,0,22,35,19,255,124,121,233,0,186,250,198,254,132,229,139,0,137,80,174,255,165,125,68,0,144,202,148,254,235,239,248,0,135,184,118,0,101,94,17,255,122,72,70,254,69,130,146,0,127,222,248,1,69,127,118,255,30,82,215,254,188,74,19,255,229,167,194,254,117,25,66,255,65,234,56,254,213,22,156,0,151,59,93,254,45,28,27,255,186,126,164,255,32,6,239,0,127,114,99,1,219,52,2,255,99,96,166,254,62,190,126,255,108,222,168,1,75,226,174,0,230,226,199,0,60,117,218,255,252,248,20,1,214,188,204,0,31,194,134,254,123,69,192,255,169,173,36,254,55,98,91,0,223,42,102,254,137,1,102,0,157,90,25,0,239,122,64,255,252,6,233,0,7,54,20,255,82,116,174,0,135,37,54,255,15,186,125,0,227,112,175,255,100,180,225,255,42,237,244,255,244,173,226,254,248,18,33,0,171,99,150,255,74,235,50,255,117,82,32,254,106,168,237,0,207,109,208,1,228,9,186,0,135,60,169,254,179,92,143,0,244,170,104,255,235,45,124,255,70,99,186,0,117,137,183,0,224,31,215,0,40,9,100,0,26,16,95,1,68,217,87,0,8,151,20,255,26,100,58,255,176,165,203,1,52,118,70,0,7,32,254,254,244,254,245,255,167,144,194,255,125,113,23,255,176,121,181,0,136,84,209,0,138,6,30,255,89,48,28,0,33,155,14,255,25,240,154,0,141,205,109,1,70,115,62,255,20,40,107,254,138,154,199,255,94,223,226,255,157,171,38,0,163,177,25,254,45,118,3,255,14,222,23,1,209,190,81,255,118,123,232,1,13,213,101,255,123,55,123,254,27,246,165,0,50,99,76,255,140,214,32,255,97,65,67,255,24,12,28,0,174,86,78,1,64,247,96,0,160,135,67,0,66,55,243,255,147,204,96,255,26,6,33,255,98,51,83,1,153,213,208,255,2,184,54,255,25,218,11,0,49,67,246,254,18,149,72,255,13,25,72,0,42,79,214,0,42,4,38,1,27,139,144,255,149,187,23,0,18,164,132,0,245,84,184,254,120,198,104,255,126,218,96,0,56,117,234,255,13,29,214,254,68,47,10,255,167,154,132,254,152,38,198,0,66,178,89,255,200,46,171,255,13,99,83,255,210,187,253,255,170,45,42,1,138,209,124,0,214,162,141,0,12,230,156,0,102,36,112,254,3,147,67,0,52,215,123,255,233,171,54,255,98,137,62,0,247,218,39,255,231,218,236,0,247,191,127,0,195,146,84,0,165,176,92,255,19,212,94,255,17,74,227,0,88,40,153,1,198,147,1,255,206,67,245,254,240,3,218,255,61,141,213,255,97,183,106,0,195,232,235,254,95,86,154,0,209,48,205,254,118,209,241,255,240,120,223,1,213,29,159,0,163,127,147,255,13,218,93,0,85,24,68,254,70,20,80,255,189,5,140,1,82,97,254,255,99,99,191,255,132,84,133,255,107,218,116,255,112,122,46,0,105,17,32,0,194,160,63,255,68,222,39,1,216,253,92,0,177,105,205,255,149,201,195,0,42,225,11,255,40,162,115,0,9,7,81,0,165,218,219,0,180,22,0,254,29,146,252,255,146,207,225,1,180,135,96,0,31,163,112,0,177,11,219,255,133,12,193,254,43,78,50,0,65,113,121,1,59,217,6,255,110,94,24,1,112,172,111,0,7,15,96,0,36,85,123,0,71,150,21,255,208,73,188,0,192,11,167,1,213,245,34,0,9,230,92,0,162,142,39,255,215,90,27,0,98,97,89,0,94,79,211,0,90,157,240,0,95,220,126,1,102,176,226,0,36,30,224,254,35,31,127,0,231,232,115,1,85,83,130,0,210,73,245,255,47,143,114,255,68,65,197,0,59,72,62,255,183,133,173,254,93,121,118,255,59,177,81,255,234,69,173,255,205,128,177,0,220,244,51,0,26,244,209,1,73,222,77,255,163,8,96,254,150,149,211,0,158,254,203,1,54,127,139,0,161,224,59,0,4,109,22,255,222,42,45,255,208,146,102,255,236,142,187,0,50,205,245,255,10,74,89,254,48,79,142,0,222,76,130,255,30,166,63,0,236,12,13,255,49,184,244,0,187,113,102,0,218,101,253,0,153,57,182,254,32,150,42,0,25,198,146,1,237,241,56,0,140,68,5,0,91,164,172,255,78,145,186,254,67,52,205,0,219,207,129,1,109,115,17,0,54,143,58,1,21,248,120,255,179,255,30,0,193,236,66,255,1,255,7,255,253,192,48,255,19,69,217,1,3,214,0,255,64,101,146,1,223,125,35,255,235,73,179,255,249,167,226,0,225,175,10,1,97,162,58,0,106,112,171,1,84,172,5,255,133,140,178,255,134,245,142,0,97,90,125,255,186,203,185,255,223,77,23,255,192,92,106,0,15,198,115,255,217,152,248,0,171,178,120,255,228,134,53,0,176,54,193,1,250,251,53,0,213,10,100,1,34,199,106,0,151,31,244,254,172,224,87,255,14,237,23,255,253,85,26,255,127,39,116,255,172,104,100,0,251,14,70,255,212,208,138,255,253,211,250,0,176,49,165,0,15,76,123,255,37,218,160,255,92,135,16,1,10,126,114,255,70,5,224,255,247,249,141,0,68,20,60,1,241,210,189,255,195,217,187,1,151,3,113,0,151,92,174,0,231,62,178,255,219,183,225,0,23,23,33,255,205,181,80,0,57,184,248,255,67,180,1,255,90,123,93,255,39,0,162,255,96,248,52,255,84,66,140,0,34,127,228,255,194,138,7,1,166,110,188,0,21,17,155,1,154,190,198,255,214,80,59,255,18,7,143,0,72,29,226,1,199,217,249,0,232,161,71,1,149,190,201,0,217,175,95,254,113,147,67,255,138,143,199,255,127,204,1,0,29,182,83,1,206,230,155,255,186,204,60,0,10,125,85,255,232,96,25,255,255,89,247,255,213,254,175,1,232,193,81,0,28,43,156,254,12,69,8,0,147,24,248,0,18,198,49,0,134,60,35,0,118,246,18,255,49,88,254,254,228,21,186,255,182,65,112,1,219,22,1,255,22,126,52,255,189,53,49,255,112,25,143,0,38,127,55,255,226,101,163,254,208,133,61,255,137,69,174,1,190,118,145,255,60,98,219,255,217,13,245,255,250,136,10,0,84,254,226,0,201,31,125,1,240,51,251,255,31,131,130,255,2,138,50,255,215,215,177,1,223,12,238,255,252,149,56,255,124,91,68,255,72,126,170,254,119,255,100,0,130,135,232,255,14,79,178,0,250,131,197,0,138,198,208,0,121,216,139,254,119,18,36,255,29,193,122,0,16,42,45,255,213,240,235,1,230,190,169,255,198,35,228,254,110,173,72,0,214,221,241,255,56,148,135,0,192,117,78,254,141,93,207,255,143,65,149,0,21,18,98,255,95,44,244,1,106,191,77,0,254,85,8,254,214,110,176,255,73,173,19,254,160,196,199,255,237,90,144,0,193,172,113,255,200,155,136,254,228,90,221,0,137,49,74,1,164,221,215,255,209,189,5,255,105,236,55,255,42,31,129,1,193,255,236,0,46,217,60,0,138,88,187,255,226,82,236,255,81,69,151,255,142,190,16,1,13,134,8,0,127,122,48,255,81,64,156,0,171,243,139,0,237,35,246,0,122,143,193,254,212,122,146,0,95,41,255,1,87,132,77,0,4,212,31,0,17,31,78,0,39,45,173,254,24,142,217,255,95,9,6,255,227,83,6,0,98,59,130,254,62,30,33,0,8,115,211,1,162,97,128,255,7,184,23,254,116,28,168,255,248,138,151,255,98,244,240,0,186,118,130,0,114,248,235,255,105,173,200,1,160,124,71,255,94,36,164,1,175,65,146,255,238,241,170,254,202,198,197,0,228,71,138,254,45,246,109,255,194,52,158,0,133,187,176,0,83,252,154,254,89,189,221,255,170,73,252,0,148,58,125,0,36,68,51,254,42,69,177,255,168,76,86,255,38,100,204,255,38,53,35,0,175,19,97,0,225,238,253,255,81,81,135,0,210,27,255,254,235,73,107,0,8,207,115,0,82,127,136,0,84,99,21,254,207,19,136,0,100,164,101,0,80,208,77,255,132,207,237,255,15,3,15,255,33,166,110,0,156,95,85,255,37,185,111,1,150,106,35,255,166,151,76,0,114,87,135,255,159,194,64,0,12,122,31,255,232,7,101,254,173,119,98,0,154,71,220,254,191,57,53,255,168,232,160,255,224,32,99,255,218,156,165,0,151,153,163,0,217,13,148,1,197,113,89,0,149,28,161,254,207,23,30,0,105,132,227,255,54,230,94,255,133,173,204,255,92,183,157,255,88,144,252,254,102,33,90,0,159,97,3,0,181,218,155,255,240,114,119,0,106,214,53,255,165,190,115,1,152,91,225,255,88,106,44,255,208,61,113,0,151,52,124,0,191,27,156,255,110,54,236,1,14,30,166,255,39,127,207,1,229,199,28,0,188,228,188,254,100,157,235,0,246,218,183,1,107,22,193,255,206,160,95,0,76,239,147,0,207,161,117,0,51,166,2,255,52,117,10,254,73,56,227,255,152,193,225,0,132,94,136,255,101,191,209,0,32,107,229,255,198,43,180,1,100,210,118,0,114,67,153,255,23,88,26,255,89,154,92,1,220,120,140,255,144,114,207,255,252,115,250,255,34,206,72,0,138,133,127,255,8,178,124,1,87,75,97,0,15,229,92,254,240,67,131,255,118,123,227,254,146,120,104,255,145,213,255,1,129,187,70,255,219,119,54,0,1,19,173,0,45,150,148,1,248,83,72,0,203,233,169,1,142,107,56,0,247,249,38,1,45,242,80,255,30,233,103,0,96,82,70,0,23,201,111,0,81,39,30,255,161,183,78,255,194,234,33,255,68,227,140,254,216,206,116,0,70,27,235,255,104,144,79,0,164,230,93,254,214,135,156,0,154,187,242,254,188,20,131,255,36,109,174,0,159,112,241,0,5,110,149,1,36,165,218,0,166,29,19,1,178,46,73,0,93,43,32,254,248,189,237,0,102,155,141,0,201,93,195,255,241,139,253,255,15,111,98,255,108,65,163,254,155,79,190,255,73,174,193,254,246,40,48,255,107,88,11,254,202,97,85,255,253,204,18,255,113,242,66,0,110,160,194,254,208,18,186,0,81,21,60,0,188,104,167,255,124,166,97,254,210,133,142,0,56,242,137,254,41,111,130,0,111,151,58,1,111,213,141,255,183,172,241,255,38,6,196,255,185,7,123,255,46,11,246,0,245,105,119,1,15,2,161,255,8,206,45,255,18,202,74,255,83,124,115,1,212,141,157,0,83,8,209,254,139,15,232,255,172,54,173,254,50,247,132,0,214,189,213,0,144,184,105,0,223,254,248,0,255,147,240,255,23,188,72,0,7,51,54,0,188,25,180,254,220,180,0,255,83,160,20,0,163,189,243,255,58,209,194,255,87,73,60,0,106,24,49,0,245,249,220,0,22,173,167,0,118,11,195,255,19,126,237,0,110,159,37,255,59,82,47,0,180,187,86,0,188,148,208,1,100,37,133,255,7,112,193,0,129,188,156,255,84,106,129,255,133,225,202,0,14,236,111,255,40,20,101,0,172,172,49,254,51,54,74,255,251,185,184,255,93,155,224,255,180,249,224,1,230,178,146,0,72,57,54,254,178,62,184,0,119,205,72,0,185,239,253,255,61,15,218,0,196,67,56,255,234,32,171,1,46,219,228,0,208,108,234,255,20,63,232,255,165,53,199,1,133,228,5,255,52,205,107,0,74,238,140,255,150,156,219,254,239,172,178,255,251,189,223,254,32,142,211,255,218,15,138,1,241,196,80,0,28,36,98,254,22,234,199,0,61,237,220,255,246,57,37,0,142,17,142,255,157,62,26,0,43,238,95,254,3,217,6,255,213,25,240,1,39,220,174,255,154,205,48,254,19,13,192,255,244,34,54,254,140,16,155,0,240,181,5,254,155,193,60,0,166,128,4,255,36,145,56,255,150,240,219,0,120,51,145,0,82,153,42,1,140,236,146,0,107,92,248,1,189,10,3,0,63,136,242,0,211,39,24,0,19,202,161,1,173,27,186,255,210,204,239,254,41,209,162,255,182,254,159,255,172,116,52,0,195,103,222,254,205,69,59,0,53,22,41,1,218,48,194,0,80,210,242,0,210,188,207,0,187,161,161,254,216,17,1,0,136,225,113,0,250,184,63,0,223,30,98,254,77,168,162,0,59,53,175,0,19,201,10,255,139,224,194,0,147,193,154,255,212,189,12,254,1,200,174,255,50,133,113,1,94,179,90,0,173,182,135,0,94,177,113,0,43,89,215,255,136,252,106,255,123,134,83,254,5,245,66,255,82,49,39,1,220,2,224,0,97,129,177,0,77,59,89,0,61,29,155,1,203,171,220,255,92,78,139,0,145,33,181,255,169,24,141,1,55,150,179,0,139,60,80,255,218,39,97,0,2,147,107,255,60,248,72,0,173,230,47,1,6,83,182,255,16,105,162,254,137,212,81,255,180,184,134,1,39,222,164,255,221,105,251,1,239,112,125,0,63,7,97,0,63,104,227,255,148,58,12,0,90,60,224,255,84,212,252,0,79,215,168,0,248,221,199,1,115,121,1,0,36,172,120,0,32,162,187,255,57,107,49,255,147,42,21,0,106,198,43,1,57,74,87,0,126,203,81,255,129,135,195,0,140,31,177,0,221,139,194,0,3,222,215,0,131,68,231,0,177,86,178,254,124,151,180,0,184,124,38,1,70,163,17,0,249,251,181,1,42,55,227,0,226,161,44,0,23,236,110,0,51,149,142,1,93,5,236,0,218,183,106,254,67,24,77,0,40,245,209,255,222,121,153,0,165,57,30,0,83,125,60,0,70,38,82,1,229,6,188,0,109,222,157,255,55,118,63,255,205,151,186,0,227,33,149,255,254,176,246,1,227,177,227,0,34,106,163,254,176,43,79,0,106,95,78,1,185,241,122,255,185,14,61,0,36,1,202,0,13,178,162,255,247,11,132,0,161,230,92,1,65,1,185,255,212,50,165,1,141,146,64,255,158,242,218,0,21,164,125,0,213,139,122,1,67,71,87,0,203,158,178,1,151,92,43,0,152,111,5,255,39,3,239,255,217,255,250,255,176,63,71,255,74,245,77,1,250,174,18,255,34,49,227,255,246,46,251,255,154,35,48,1,125,157,61,255,106,36,78,255,97,236,153,0,136,187,120,255,113,134,171,255,19,213,217,254,216,94,209,255,252,5,61,0,94,3,202,0,3,26,183,255,64,191,43,255,30,23,21,0,129,141,77,255,102,120,7,1,194,76,140,0,188,175,52,255,17,81,148,0,232,86,55,1,225,48,172,0,134,42,42,255,238,50,47,0,169,18,254,0,20,147,87,255,14,195,239,255,69,247,23,0,238,229,128,255,177,49,112,0,168,98,251,255,121,71,248,0,243,8,145,254,246,227,153,255,219,169,177,254,251,139,165,255,12,163,185,255,164,40,171,255,153,159,27,254,243,109,91,255,222,24,112,1,18,214,231,0,107,157,181,254,195,147,0,255,194,99,104,255,89,140,190,255,177,66,126,254,106,185,66,0,49,218,31,0,252,174,158,0,188,79,230,1,238,41,224,0,212,234,8,1,136,11,181,0,166,117,83,255,68,195,94,0,46,132,201,0,240,152,88,0,164,57,69,254,160,224,42,255,59,215,67,255,119,195,141,255,36,180,121,254,207,47,8,255,174,210,223,0,101,197,68,255,255,82,141,1,250,137,233,0,97,86,133,1,16,80,69,0,132,131,159,0,116,93,100,0,45,141,139,0,152,172,157,255,90,43,91,0,71,153,46,0,39,16,112,255,217,136,97,255,220,198,25,254,177,53,49,0,222,88,134,255,128,15,60,0,207,192,169,255,192,116,209,255,106,78,211,1,200,213,183,255,7,12,122,254,222,203,60,255,33,110,199,254,251,106,117,0,228,225,4,1,120,58,7,255,221,193,84,254,112,133,27,0,189,200,201,255,139,135,150,0,234,55,176,255,61,50,65,0,152,108,169,255,220,85,1,255,112,135,227,0,162,26,186,0,207,96,185,254,244,136,107,0,93,153,50,1,198,97,151,0,110,11,86,255,143,117,174,255,115,212,200,0,5,202,183,0,237,164,10,254,185,239,62,0,236,120,18,254,98,123,99,255,168,201,194,254,46,234,214,0,191,133,49,255,99,169,119,0,190,187,35,1,115,21,45,255,249,131,72,0,112,6,123,255,214,49,181,254,166,233,34,0,92,197,102,254,253,228,205,255,3,59,201,1,42,98,46,0,219,37,35,255,169,195,38,0,94,124,193,1,156,43,223,0,95,72,133,254,120,206,191,0,122,197,239,255,177,187,79,255,254,46,2,1,250,167,190,0,84,129,19,0,203,113,166,255,249,31,189,254,72,157,202,255,208,71,73,255,207,24,72,0,10,16,18,1,210,81,76,255,88,208,192,255,126,243,107,255,238,141,120,255,199,121,234,255,137,12,59,255,36,220,123,255,148,179,60,254,240,12,29,0,66,0,97,1,36,30,38,255,115,1,93,255,96,103,231,255,197,158,59,1,192,164,240,0,202,202,57,255,24,174,48],"i8",4,e.h),K([89,77,155,1,42,76,215,0,244,151,233,0,23,48,81,0,239,127,52,254,227,130,37,255,248,116,93,1,124,132,118,0,173,254,192,1,6,235,83,255,110,175,231,1,251,28,182,0,129,249,93,254,84,184,128,0,76,181,62,0,175,128,186,0,100,53,136,254,109,29,226,0,221,233,58,1,20,99,74,0,0,22,160,0,134,13,21,0,9,52,55,255,17,89,140,0,175,34,59,0,84,165,119,255,224,226,234,255,7,72,166,255,123,115,255,1,18,214,246,0,250,7,71,1,217,220,185,0,212,35,76,255,38,125,175,0,189,97,210,0,114,238,44,255,41,188,169,254,45,186,154,0,81,92,22,0,132,160,193,0,121,208,98,255,13,81,44,255,203,156,82,0,71,58,21,255,208,114,191,254,50,38,147,0,154,216,195,0,101,25,18,0,60,250,215,255,233,132,235,255,103,175,142,1,16,14,92,0,141,31,110,254,238,241,45,255,153,217,239,1,97,168,47,255,249,85,16,1,28,175,62,255,57,254,54,0,222,231,126,0,166,45,117,254,18,189,96,255,228,76,50,0,200,244,94,0,198,152,120,1,68,34,69,255,12,65,160,254,101,19,90,0,167,197,120,255,68,54,185,255,41,218,188,0,113,168,48,0,88,105,189,1,26,82,32,255,185,93,164,1,228,240,237,255,66,182,53,0,171,197,92,255,107,9,233,1,199,120,144,255,78,49,10,255,109,170,105,255,90,4,31,255,28,244,113,255,74,58,11,0,62,220,246,255,121,154,200,254,144,210,178,255,126,57,129,1,43,250,14,255,101,111,28,1,47,86,241,255,61,70,150,255,53,73,5,255,30,26,158,0,209,26,86,0,138,237,74,0,164,95,188,0,142,60,29,254,162,116,248,255,187,175,160,0,151,18,16,0,209,111,65,254,203,134,39,255,88,108,49,255,131,26,71,255,221,27,215,254,104,105,93,255,31,236,31,254,135,0,211,255,143,127,110,1,212,73,229,0,233,67,167,254,195,1,208,255,132,17,221,255,51,217,90,0,67,235,50,255,223,210,143,0,179,53,130,1,233,106,198,0,217,173,220,255,112,229,24,255,175,154,93,254,71,203,246,255,48,66,133,255,3,136,230,255,23,221,113,254,235,111,213,0,170,120,95,254,251,221,2,0,45,130,158,254,105,94,217,255,242,52,180,254,213,68,45,255,104,38,28,0,244,158,76,0,161,200,96,255,207,53,13,255,187,67,148,0,170,54,248,0,119,162,178,255,83,20,11,0,42,42,192,1,146,159,163,255,183,232,111,0,77,229,21,255,71,53,143,0,27,76,34,0,246,136,47,255,219,39,182,255,92,224,201,1,19,142,14,255,69,182,241,255,163,118,245,0,9,109,106,1,170,181,247,255,78,47,238,255,84,210,176,255,213,107,139,0,39,38,11,0,72,21,150,0,72,130,69,0,205,77,155,254,142,133,21,0,71,111,172,254,226,42,59,255,179,0,215,1,33,128,241,0,234,252,13,1,184,79,8,0,110,30,73,255,246,141,189,0,170,207,218,1,74,154,69,255,138,246,49,255,155,32,100,0,125,74,105,255,90,85,61,255,35,229,177,255,62,125,193,255,153,86,188,1,73,120,212,0,209,123,246,254,135,209,38,255,151,58,44,1,92,69,214,255,14,12,88,255,252,153,166,255,253,207,112,255,60,78,83,255,227,124,110,0,180,96,252,255,53,117,33,254,164,220,82,255,41,1,27,255,38,164,166,255,164,99,169,254,61,144,70,255,192,166,18,0,107,250,66,0,197,65,50,0,1,179,18,255,255,104,1,255,43,153,35,255,80,111,168,0,110,175,168,0,41,105,45,255,219,14,205,255,164,233,140,254,43,1,118,0,233,67,195,0,178,82,159,255,138,87,122,255,212,238,90,255,144,35,124,254,25,140,164,0,251,215,44,254,133,70,107,255,101,227,80,254,92,169,55,0,215,42,49,0,114,180,85,255,33,232,27,1,172,213,25,0,62,176,123,254,32,133,24,255,225,191,62,0,93,70,153,0,181,42,104,1,22,191,224,255,200,200,140,255,249,234,37,0,149,57,141,0,195,56,208,255,254,130,70,255,32,173,240,255,29,220,199,0,110,100,115,255,132,229,249,0,228,233,223,255,37,216,209,254,178,177,209,255,183,45,165,254,224,97,114,0,137,97,168,255,225,222,172,0,165,13,49,1,210,235,204,255,252,4,28,254,70,160,151,0,232,190,52,254,83,248,93,255,62,215,77,1,175,175,179,255,160,50,66,0,121,48,208,0,63,169,209,255,0,210,200,0,224,187,44,1,73,162,82,0,9,176,143,255,19,76,193,255,29,59,167,1,24,43,154,0,28,190,190,0,141,188,129,0,232,235,203,255,234,0,109,255,54,65,159,0,60,88,232,255,121,253,150,254,252,233,131,255,198,110,41,1,83,77,71,255,200,22,59,254,106,253,242,255,21,12,207,255,237,66,189,0,90,198,202,1,225,172,127,0,53,22,202,0,56,230,132,0,1,86,183,0,109,190,42,0,243,68,174,1,109,228,154,0,200,177,122,1,35,160,183,255,177,48,85,255,90,218,169,255,248,152,78,0,202,254,110,0,6,52,43,0,142,98,65,255,63,145,22,0,70,106,93,0,232,138,107,1,110,179,61,255,211,129,218,1,242,209,92,0,35,90,217,1,182,143,106,255,116,101,217,255,114,250,221,255,173,204,6,0,60,150,163,0,73,172,44,255,239,110,80,255,237,76,153,254,161,140,249,0,149,232,229,0,133,31,40,255,174,164,119,0,113,51,214,0,129,228,2,254,64,34,243,0,107,227,244,255,174,106,200,255,84,153,70,1,50,35,16,0,250,74,216,254,236,189,66,255,153,249,13,0,230,178,4,255,221,41,238,0,118,227,121,255,94,87,140,254,254,119,92,0,73,239,246,254,117,87,128,0,19,211,145,255,177,46,252,0,229,91,246,1,69,128,247,255,202,77,54,1,8,11,9,255,153,96,166,0,217,214,173,255,134,192,2,1,0,207,0,0,189,174,107,1,140,134,100,0,158,193,243,1,182,102,171,0,235,154,51,0,142,5,123,255,60,168,89,1,217,14,92,255,19,214,5,1,211,167,254,0,44,6,202,254,120,18,236,255,15,113,184,255,184,223,139,0,40,177,119,254,182,123,90,255,176,165,176,0,247,77,194,0,27,234,120,0,231,0,214,255,59,39,30,0,125,99,145,255,150,68,68,1,141,222,248,0,153,123,210,255,110,127,152,255,229,33,214,1,135,221,197,0,137,97,2,0,12,143,204,255,81,41,188,0,115,79,130,255,94,3,132,0,152,175,187,255,124,141,10,255,126,192,179,255,11,103,198,0,149,6,45,0,219,85,187,1,230,18,178,255,72,182,152,0,3,198,184,255,128,112,224,1,97,161,230,0,254,99,38,255,58,159,197,0,151,66,219,0,59,69,143,255,185,112,249,0,119,136,47,255,123,130,132,0,168,71,95,255,113,176,40,1,232,185,173,0,207,93,117,1,68,157,108,255,102,5,147,254,49,97,33,0,89,65,111,254,247,30,163,255,124,217,221,1,102,250,216,0,198,174,75,254,57,55,18,0,227,5,236,1,229,213,173,0,201,109,218,1,49,233,239,0,30,55,158,1,25,178,106,0,155,111,188,1,94,126,140,0,215,31,238,1,77,240,16,0,213,242,25,1,38,71,168,0,205,186,93,254,49,211,140,255,219,0,180,255,134,118,165,0,160,147,134,255,110,186,35,255,198,243,42,0,243,146,119,0,134,235,163,1,4,241,135,255,193,46,193,254,103,180,79,255,225,4,184,254,242,118,130,0,146,135,176,1,234,111,30,0,69,66,213,254,41,96,123,0,121,94,42,255,178,191,195,255,46,130,42,0,117,84,8,255,233,49,214,254,238,122,109,0,6,71,89,1,236,211,123,0,244,13,48,254,119,148,14,0,114,28,86,255,75,237,25,255,145,229,16,254,129,100,53,255,134,150,120,254,168,157,50,0,23,72,104,255,224,49,14,0,255,123,22,255,151,185,151,255,170,80,184,1,134,182,20,0,41,100,101,1,153,33,16,0,76,154,111,1,86,206,234,255,192,160,164,254,165,123,93,255,1,216,164,254,67,17,175,255,169,11,59,255,158,41,61,255,73,188,14,255,195,6,137,255,22,147,29,255,20,103,3,255,246,130,227,255,122,40,128,0,226,47,24,254,35,36,32,0,152,186,183,255,69,202,20,0,195,133,195,0,222,51,247,0,169,171,94,1,183,0,160,255,64,205,18,1,156,83,15,255,197,58,249,254,251,89,110,255,50,10,88,254,51,43,216,0,98,242,198,1,245,151,113,0,171,236,194,1,197,31,199,255,229,81,38,1,41,59,20,0,253,104,230,0,152,93,14,255,246,242,146,254,214,169,240,255,240,102,108,254,160,167,236,0,154,218,188,0,150,233,202,255,27,19,250,1,2,71,133,255,175,12,63,1,145,183,198,0,104,120,115,255,130,251,247,0,17,212,167,255,62,123,132,255,247,100,189,0,155,223,152,0,143,197,33,0,155,59,44,255,150,93,240,1,127,3,87,255,95,71,207,1,167,85,1,255,188,152,116,255,10,23,23,0,137,195,93,1,54,98,97,0,240,0,168,255,148,188,127,0,134,107,151,0,76,253,171,0,90,132,192,0,146,22,54,0,224,66,54,254,230,186,229,255,39,182,196,0,148,251,130,255,65,131,108,254,128,1,160,0,169,49,167,254,199,254,148,255,251,6,131,0,187,254,129,255,85,82,62,0,178,23,58,255,254,132,5,0,164,213,39,0,134,252,146,254,37,53,81,255,155,134,82,0,205,167,238,255,94,45,180,255,132,40,161,0,254,111,112,1,54,75,217,0,179,230,221,1,235,94,191,255,23,243,48,1,202,145,203,255,39,118,42,255,117,141,253,0,254,0,222,0,43,251,50,0,54,169,234,1,80,68,208,0,148,203,243,254,145,7,135,0,6,254,0,0,252,185,127,0,98,8,129,255,38,35,72,255,211,36,220,1,40,26,89,0,168,64,197,254,3,222,239,255,2,83,215,254,180,159,105,0,58,115,194,0,186,116,106,255,229,247,219,255,129,118,193,0,202,174,183,1,166,161,72,0,201,107,147,254,237,136,74,0,233,230,106,1,105,111,168,0,64,224,30,1,1,229,3,0,102,151,175,255,194,238,228,255,254,250,212,0,187,237,121,0,67,251,96,1,197,30,11,0,183,95,204,0,205,89,138,0,64,221,37,1,255,223,30,255,178,48,211,255,241,200,90,255,167,209,96,255,57,130,221,0,46,114,200,255,61,184,66,0,55,182,24,254,110,182,33,0,171,190,232,255,114,94,31,0,18,221,8,0,47,231,254,0,255,112,83,0,118,15,215,255,173,25,40,254,192,193,31,255,238,21,146,255,171,193,118,255,101,234,53,254,131,212,112,0,89,192,107,1,8,208,27,0,181,217,15,255,231,149,232,0,140,236,126,0,144,9,199,255,12,79,181,254,147,182,202,255,19,109,182,255,49,212,225,0,74,163,203,0,175,233,148,0,26,112,51,0,193,193,9,255,15,135,249,0,150,227,130,0,204,0,219,1,24,242,205,0,238,208,117,255,22,244,112,0,26,229,34,0,37,80,188,255,38,45,206,254,240,90,225,255,29,3,47,255,42,224,76,0,186,243,167,0,32,132,15,255,5,51,125,0,139,135,24,0,6,241,219,0,172,229,133,255,246,214,50,0,231,11,207,255,191,126,83,1,180,163,170,255,245,56,24,1,178,164,211,255,3,16,202,1,98,57,118,255,141,131,89,254,33,51,24,0,243,149,91,255,253,52,14,0,35,169,67,254,49,30,88,255,179,27,36,255,165,140,183,0,58,189,151,0,88,31,0,0,75,169,66,0,66,101,199,255,24,216,199,1,121,196,26,255,14,79,203,254,240,226,81,255,94,28,10,255,83,193,240,255,204,193,131,255,94,15,86,0,218,40,157,0,51,193,209,0,0,242,177,0,102,185,247,0,158,109,116,0,38,135,91,0,223,175,149,0,220,66,1,255,86,60,232,0,25,96,37,255,225,122,162,1,215,187,168,255,158,157,46,0,56,171,162,0,232,240,101,1,122,22,9,0,51,9,21,255,53,25,238,255,217,30,232,254,125,169,148,0,13,232,102,0,148,9,37,0,165,97,141,1,228,131,41,0,222,15,243,255,254,18,17,0,6,60,237,1,106,3,113,0,59,132,189,0,92,112,30,0,105,208,213,0,48,84,179,255,187,121,231,254,27,216,109,255,162,221,107,254,73,239,195,255,250,31,57,255,149,135,89,255,185,23,115,1,3,163,157,255,18,112,250,0,25,57,187,255,161,96,164,0,47,16,243,0,12,141,251,254,67,234,184,255,41,18,161,0,175,6,96,255,160,172,52,254,24,176,183,255,198,193,85,1,124,121,137,255,151,50,114,255,220,203,60,255,207,239,5,1,0,38,107,255,55,238,94,254,70,152,94,0,213,220,77,1,120,17,69,255,85,164,190,255,203,234,81,0,38,49,37,254,61,144,124,0,137,78,49,254,168,247,48,0,95,164,252,0,105,169,135,0,253,228,134,0,64,166,75,0,81,73,20,255,207,210,10,0,234,106,150,255,94,34,90,255,254,159,57,254,220,133,99,0,139,147,180,254,24,23,185,0,41,57,30,255,189,97,76,0,65,187,223,255,224,172,37,255,34,62,95,1,231,144,240,0,77,106,126,254,64,152,91,0,29,98,155,0,226,251,53,255,234,211,5,255,144,203,222,255,164,176,221,254,5,231,24,0,179,122,205,0,36,1,134,255,125,70,151,254,97,228,252,0,172,129,23,254,48,90,209,255,150,224,82,1,84,134,30,0,241,196,46,0,103,113,234,255,46,101,121,254,40,124,250,255,135,45,242,254,9,249,168,255,140,108,131,255,143,163,171,0,50,173,199,255,88,222,142,255,200,95,158,0,142,192,163,255,7,117,135,0,111,124,22,0,236,12,65,254,68,38,65,255,227,174,254,0,244,245,38,0,240,50,208,255,161,63,250,0,60,209,239,0,122,35,19,0,14,33,230,254,2,159,113,0,106,20,127,255,228,205,96,0,137,210,174,254,180,212,144,255,89,98,154,1,34,88,139,0,167,162,112,1,65,110,197,0,241,37,169,0,66,56,131,255,10,201,83,254,133,253,187,255,177,112,45,254,196,251,0,0,196,250,151,255,238,232,214,255,150,209,205,0,28,240,118,0,71,76,83,1,236,99,91,0,42,250,131,1,96,18,64,255,118,222,35,0,113,214,203,255,122,119,184,255,66,19,36,0,204,64,249,0,146,89,139,0,134,62,135,1,104,233,101,0,188,84,26,0,49,249,129,0,208,214,75,255,207,130,77,255,115,175,235,0,171,2,137,255,175,145,186,1,55,245,135,255,154,86,181,1,100,58,246,255,109,199,60,255,82,204,134,255,215,49,230,1,140,229,192,255,222,193,251,255,81,136,15,255,179,149,162,255,23,39,29,255,7,95,75,254,191,81,222,0,241,81,90,255,107,49,201,255,244,211,157,0,222,140,149,255,65,219,56,254,189,246,90,255,178,59,157,1,48,219,52,0,98,34,215,0,28,17,187,255,175,169,24,0,92,79,161,255,236,200,194,1,147,143,234,0,229,225,7,1,197,168,14,0,235,51,53,1,253,120,174,0,197,6,168,255,202,117,171,0,163,21,206,0,114,85,90,255,15,41,10,255,194,19,99,0,65,55,216,254,162,146,116,0,50,206,212,255,64,146,29,255,158,158,131,1,100,165,130,255,172,23,129,255,125,53,9,255,15,193,18,1,26,49,11,255,181,174,201,1,135,201,14,255,100,19,149,0,219,98,79,0,42,99,143,254,96,0,48,255,197,249,83,254,104,149,79,255,235,110,136,254,82,128,44,255,65,41,36,254,88,211,10,0,187,121,187,0,98,134,199,0,171,188,179,254,210,11,238,255,66,123,130,254,52,234,61,0,48,113,23,254,6,86,120,255,119,178,245,0,87,129,201,0,242,141,209,0,202,114,85,0,148,22,161,0,103,195,48,0,25,49,171,255,138,67,130,0,182,73,122,254,148,24,130,0,211,229,154,0,32,155,158,0,84,105,61,0,177,194,9,255,166,89,86,1,54,83,187,0,249,40,117,255,109,3,215,255,53,146,44,1,63,47,179,0,194,216,3,254,14,84,136,0,136,177,13,255,72,243,186,255,117,17,125,255,211,58,211,255,93,79,223,0,90,88,245,255,139,209,111,255,70,222,47,0,10,246,79,255,198,217,178,0,227,225,11,1,78,126,179,255,62,43,126,0,103,148,35,0,129,8,165,254,245,240,148,0,61,51,142,0,81,208,134,0,15,137,115,255,211,119,236,255,159,245,248,255,2,134,136,255,230,139,58,1,160,164,254,0,114,85,141,255,49,166,182,255,144,70,84,1,85,182,7,0,46,53,93,0,9,166,161,255,55,162,178,255,45,184,188,0,146,28,44,254,169,90,49,0,120,178,241,1,14,123,127,255,7,241,199,1,189,66,50,255,198,143,101,254,189,243,135,255,141,24,24,254,75,97,87,0,118,251,154,1,237,54,156,0,171,146,207,255,131,196,246,255,136,64,113,1,151,232,57,0,240,218,115,0,49,61,27,255,64,129,73,1,252,169,27,255,40,132,10,1,90,201,193,255,252,121,240,1,186,206,41,0,43,198,97,0,145,100,183,0,204,216,80,254,172,150,65,0,249,229,196,254,104,123,73,255,77,104,96,254,130,180,8,0,104,123,57,0,220,202,229,255,102,249,211,0,86,14,232,255,182,78,209,0,239,225,164,0,106,13,32,255,120,73,17,255,134,67,233,0,83,254,181,0,183,236,112,1,48,64,131,255,241,216,243,255,65,193,226,0,206,241,100,254,100,134,166,255,237,202,197,0,55,13,81,0,32,124,102,255,40,228,177,0,118,181,31,1,231,160,134,255,119,187,202,0,0,142,60,255,128,38,189,255,166,201,150,0,207,120,26,1,54,184,172,0,12,242,204,254,133,66,230,0,34,38,31,1,184,112,80,0,32,51,165,254,191,243,55,0,58,73,146,254,155,167,205,255,100,104,152,255,197,254,207,255,173,19,247,0,238,10,202,0,239,151,242,0,94,59,39,255,240,29,102,255,10,92,154,255,229,84,219,255,161,129,80,0,208,90,204,1,240,219,174,255,158,102,145,1,53,178,76,255,52,108,168,1,83,222,107,0,211,36,109,0,118,58,56,0,8,29,22,0,237,160,199,0,170,209,157,0,137,71,47,0,143,86,32,0,198,242,2,0,212,48,136,1,92,172,186,0,230,151,105,1,96,191,229,0,138,80,191,254,240,216,130,255,98,43,6,254,168,196,49,0,253,18,91,1,144,73,121,0,61,146,39,1,63,104,24,255,184,165,112,254,126,235,98,0,80,213,98,255,123,60,87,255,82,140,245,1,223,120,173,255,15,198,134,1,206,60,239,0,231,234,92,255,33,238,19,255,165,113,142,1,176,119,38,0,160,43,166,254,239,91,105,0,107,61,194,1,25,4,68,0,15,139,51,0,164,132,106,255,34,116,46,254,168,95,197,0,137,212,23,0,72,156,58,0,137,112,69,254,150,105,154,255,236,201,157,0,23,212,154,255,136,82,227,254,226,59,221,255,95,149,192,0,81,118,52,255,33,43,215,1,14,147,75,255,89,156,121,254,14,18,79,0,147,208,139,1,151,218,62,255,156,88,8,1,210,184,98,255,20,175,123,255,102,83,229,0,220,65,116,1,150,250,4,255,92,142,220,255,34,247,66,255,204,225,179,254,151,81,151,0,71,40,236,255,138,63,62,0,6,79,240,255,183,185,181,0,118,50,27,0,63,227,192,0,123,99,58,1,50,224,155,255,17,225,223,254,220,224,77,255,14,44,123,1,141,128,175,0,248,212,200,0,150,59,183,255,147,97,29,0,150,204,181,0,253,37,71,0,145,85,119,0,154,200,186,0,2,128,249,255,83,24,124,0,14,87,143,0,168,51,245,1,124,151,231,255,208,240,197,1,124,190,185,0,48,58,246,0,20,233,232,0,125,18,98,255,13,254,31,255,245,177,130,255,108,142,35,0,171,125,242,254,140,12,34,255,165,161,162,0,206,205,101,0,247,25,34,1,100,145,57,0,39,70,57,0,118,204,203,255,242,0,162,0,165,244,30,0,198,116,226,0,128,111,153,255,140,54,182,1,60,122,15,255,155,58,57,1,54,50,198,0,171,211,29,255,107,138,167,255,173,107,199,255,109,161,193,0,89,72,242,255,206,115,89,255,250,254,142,254,177,202,94,255,81,89,50,0,7,105,66,255,25,254,255,254,203,64,23,255,79,222,108,255,39,249,75,0,241,124,50,0,239,152,133,0,221,241,105,0,147,151,98,0,213,161,121,254,242,49,137,0,233,37,249,254,42,183,27,0,184,119,230,255,217,32,163,255,208,251,228,1,137,62,131,255,79,64,9,254,94,48,113,0,17,138,50,254,193,255,22,0,247,18,197,1,67,55,104,0,16,205,95,255,48,37,66,0,55,156,63,1,64,82,74,255,200,53,71,254,239,67,125,0,26,224,222,0,223,137,93,255,30,224,202,255,9,220,132,0,198,38,235,1,102,141,86,0,60,43,81,1,136,28,26,0,233,36,8,254,207,242,148,0,164,162,63,0,51,46,224,255,114,48,79,255,9,175,226,0,222,3,193,255,47,160,232,255,255,93,105,254,14,42,230,0,26,138,82,1,208,43,244,0,27,39,38,255,98,208,127,255,64,149,182,255,5,250,209,0,187,60,28,254,49,25,218,255,169,116,205,255,119,18,120,0,156,116,147,255,132,53,109,255,13,10,202,0,110,83,167,0,157,219,137,255,6,3,130,255,50,167,30,255,60,159,47,255,129,128,157,254,94,3,189,0,3,166,68,0,83,223,215,0,150,90,194,1,15,168,65,0,227,83,51,255,205,171,66,255,54,187,60,1,152,102,45,255,119,154,225,0,240,247,136,0,100,197,178,255,139,71,223,255,204,82,16,1,41,206,42,255,156,192,221,255,216,123,244,255,218,218,185,255,187,186,239,255,252,172,160,255,195,52,22,0,144,174,181,254,187,100,115,255,211,78,176,255,27,7,193,0,147,213,104,255,90,201,10,255,80,123,66,1,22,33,186,0,1,7,99,254,30,206,10,0,229,234,5,0,53,30,210,0,138,8,220,254,71,55,167,0,72,225,86,1,118,190,188,0,254,193,101,1,171,249,172,255,94,158,183,254,93,2,108,255,176,93,76,255,73,99,79,255,74,64,129,254,246,46,65,0,99,241,127,254,246,151,102,255,44,53,208,254,59,102,234,0,154,175,164,255,88,242,32,0,111,38,1,0,255,182,190,255,115,176,15,254,169,60,129,0,122,237,241,0,90,76,63,0,62,74,120,255,122,195,110,0,119,4,178,0,222,242,210,0,130,33,46,254,156,40,41,0,167,146,112,1,49,163,111,255,121,176,235,0,76,207,14,255,3,25,198,1,41,235,213,0,85,36,214,1,49,92,109,255,200,24,30,254,168,236,195,0,145,39,124,1,236,195,149,0,90,36,184,255,67,85,170,255,38,35,26,254,131,124,68,255,239,155,35,255,54,201,164,0,196,22,117,255,49,15,205,0,24,224,29,1,126,113,144,0,117,21,182,0,203,159,141,0,223,135,77,0,176,230,176,255,190,229,215,255,99,37,181,255,51,21,138,255,25,189,89,255,49,48,165,254,152,45,247,0,170,108,222,0,80,202,5,0,27,69,103,254,204,22,129,255,180,252,62,254,210,1,91,255,146,110,254,255,219,162,28,0,223,252,213,1,59,8,33,0,206,16,244,0,129,211,48,0,107,160,208,0,112,59,209,0,109,77,216,254,34,21,185,255,246,99,56,255,179,139,19,255,185,29,50,255,84,89,19,0,74,250,98,255,225,42,200,255,192,217,205,255,210,16,167,0,99,132,95,1,43,230,57,0,254,11,203,255,99,188,63,255,119,193,251,254,80,105,54,0,232,181,189,1,183,69,112,255,208,171,165,255,47,109,180,255,123,83,165,0,146,162,52,255,154,11,4,255,151,227,90,255,146,137,97,254,61,233,41,255,94,42,55,255,108,164,236,0,152,68,254,0,10,140,131,255,10,106,79,254,243,158,137,0,67,178,66,254,177,123,198,255,15,62,34,0,197,88,42,255,149,95,177,255,152,0,198,255,149,254,113,255,225,90,163,255,125,217,247,0,18,17,224,0,128,66,120,254,192,25,9,255,50,221,205,0,49,212,70,0,233,255,164,0,2,209,9,0,221,52,219,254,172,224,244,255,94,56,206,1,242,179,2,255,31,91,164,1,230,46,138,255,189,230,220,0,57,47,61,255,111,11,157,0,177,91,152,0,28,230,98,0,97,87,126,0,198,89,145,255,167,79,107,0,249,77,160,1,29,233,230,255,150,21,86,254,60,11,193,0,151,37,36,254,185,150,243,255,228,212,83,1,172,151,180,0,201,169,155,0,244,60,234,0,142,235,4,1,67,218,60,0,192,113,75,1,116,243,207,255,65,172,155,0,81,30,156,255,80,72,33,254,18,231,109,255,142,107,21,254,125,26,132,255,176,16,59,255,150,201,58,0,206,169,201,0,208,121,226,0,40,172,14,255,150,61,94,255,56,57,156,255,141,60,145,255,45,108,149,255,238,145,155,255,209,85,31,254,192,12,210,0,99,98,93,254,152,16,151,0,225,185,220,0,141,235,44,255,160,172,21,254,71,26,31,255,13,64,93,254,28,56,198,0,177,62,248,1,182,8,241,0,166,101,148,255,78,81,133,255,129,222,215,1,188,169,129,255,232,7,97,0,49,112,60,255,217,229,251,0,119,108,138,0,39,19,123,254,131,49,235,0,132,84,145,0,130,230,148,255,25,74,187,0,5,245,54,255,185,219,241,1,18,194,228,255,241,202,102,0,105,113,202,0,155,235,79,0,21,9,178,255,156,1,239,0,200,148,61,0,115,247,210,255,49,221,135,0,58,189,8,1,35,46,9,0,81,65,5,255,52,158,185,255,125,116,46,255,74,140,13,255,210,92,172,254,147,23,71,0,217,224,253,254,115,108,180,255,145,58,48,254,219,177,24,255,156,255,60,1,154,147,242,0,253,134,87,0,53,75,229,0,48,195,222,255,31,175,50,255,156,210,120,255,208,35,222,255,18,248,179,1,2,10,101,255,157,194,248,255,158,204,101,255,104,254,197,255,79,62,4,0,178,172,101,1,96,146,251,255,65,10,156,0,2,137,165,255,116,4,231,0,242,215,1,0,19,35,29,255,43,161,79,0,59,149,246,1,251,66,176,0,200,33,3,255,80,110,142,255,195,161,17,1,228,56,66,255,123,47,145,254,132,4,164,0,67,174,172,0,25,253,114,0,87,97,87,1,250,220,84,0,96,91,200,255,37,125,59,0,19,65,118,0,161,52,241,255,237,172,6,255,176,191,255,255,1,65,130,254,223,190,230,0,101,253,231,255,146,35,109,0,250,29,77,1,49,0,19,0,123,90,155,1,22,86,32,255,218,213,65,0,111,93,127,0,60,93,169,255,8,127,182,0,17,186,14,254,253,137,246,255,213,25,48,254,76,238,0,255,248,92,70,255,99,224,139,0,184,9,255,1,7,164,208,0,205,131,198,1,87,214,199,0,130,214,95,0,221,149,222,0,23,38,171,254,197,110,213,0,43,115,140,254,215,177,118,0,96,52,66,1,117,158,237,0,14,64,182,255,46,63,174,255,158,95,190,255,225,205,177,255,43,5,142,255,172,99,212,255,244,187,147,0,29,51,153,255,228,116,24,254,30,101,207,0,19,246,150,255,134,231,5,0,125,134,226,1,77,65,98,0,236,130,33,255,5,110,62,0,69,108,127,255,7,113,22,0,145,20,83,254,194,161,231,255,131,181,60,0,217,209,177,255,229,148,212,254,3,131,184,0,117,177,187,1,28,14,31,255,176,102,80,0,50,84,151,255,125,31,54,255,21,157,133,255,19,179,139,1,224,232,26,0,34,117,170,255,167,252,171,255,73,141,206,254,129,250,35,0,72,79,236,1,220,229,20,255,41,202,173,255,99,76,238,255,198,22,224,255,108,198,195,255,36,141,96,1,236,158,59,255,106,100,87,0,110,226,2,0,227,234,222,0,154,93,119,255,74,112,164,255,67,91,2,255,21,145,33,255,102,214,137,255,175,230,103,254,163,246,166,0,93,247,116,254,167,224,28,255,220,2,57,1,171,206,84,0,123,228,17,255,27,120,119,0,119,11,147,1,180,47,225,255,104,200,185,254,165,2,114,0,77,78,212,0,45,154,177,255,24,196,121,254,82,157,182,0,90,16,190,1,12,147,197,0,95,239,152,255,11,235,71,0,86,146,119,255,172,134,214,0,60,131,196,0,161,225,129,0,31,130,120,254,95,200,51,0,105,231,210,255,58,9,148,255,43,168,221,255,124,237,142,0,198,211,50,254,46,245,103,0,164,248,84,0,152,70,208,255,180,117,177,0,70,79,185,0,243,74,32,0,149,156,207,0,197,196,161,1,245,53,239,0,15,93,246,254,139,240,49,255,196,88,36,255,162,38,123,0,128,200,157,1,174,76,103,255,173,169,34,254,216,1,171,255,114,51,17,0,136,228,194,0,110,150,56,254,106,246,159,0,19,184,79,255,150,77,240,255,155,80,162,0,0,53,169,255,29,151,86,0,68,94,16,0,92,7,110,254,98,117,149,255,249,77,230,255,253,10,140,0,214,124,92,254,35,118,235,0,89,48,57,1,22,53,166,0,184,144,61,255,179,255,194,0,214,248,61,254,59,110,246,0,121,21,81,254,166,3,228,0,106,64,26,255,69,232,134,255,242,220,53,254,46,220,85,0,113,149,247,255,97,179,103,255,190,127,11,0,135,209,182,0,95,52,129,1,170,144,206,255,122,200,204,255,168,100,146,0,60,144,149,254,70,60,40,0,122,52,177,255,246,211,101,255,174,237,8,0,7,51,120,0,19,31,173,0,126,239,156,255,143,189,203,0,196,128,88,255,233,133,226,255,30,125,173,255,201,108,50,0,123,100,59,255,254,163,3,1,221,148,181,255,214,136,57,254,222,180,137,255,207,88,54,255,28,33,251,255,67,214,52,1,210,208,100,0,81,170,94,0,145,40,53,0,224,111,231,254,35,28,244,255,226,199,195,254,238,17,230,0,217,217,164,254,169,157,221,0,218,46,162,1,199,207,163,255,108,115,162,1,14,96,187,255,118,60,76,0,184,159,152,0,209,231,71,254,42,164,186,255,186,153,51,254,221,171,182,255,162,142,173,0,235,47,193,0,7,139,16,1,95,164,64,255,16,221,166,0,219,197,16,0,132,29,44,255,100,69,117,255,60,235,88,254,40,81,173,0,71,190,61,255,187,88,157,0,231,11,23,0,237,117,164,0,225,168,223,255,154,114,116,255,163,152,242,1,24,32,170,0,125,98,113,254,168,19,76,0,17,157,220,254,155,52,5,0,19,111,161,255,71,90,252,255,173,110,240,0,10,198,121,255,253,255,240,255,66,123,210,0,221,194,215,254,121,163,17,255,225,7,99,0,190,49,182,0,115,9,133,1,232,26,138,255,213,68,132,0,44,119,122,255,179,98,51,0,149,90,106,0,71,50,230,255,10,153,118,255,177,70,25,0,165,87,205,0,55,138,234,0,238,30,97,0,113,155,207,0,98,153,127,0,34,107,219,254,117,114,172,255,76,180,255,254,242,57,179,255,221,34,172,254,56,162,49,255,83,3,255,255,113,221,189,255,188,25,228,254,16,88,89,255,71,28,198,254,22,17,149,255,243,121,254,255,107,202,99,255,9,206,14,1,220,47,153,0,107,137,39,1,97,49,194,255,149,51,197,254,186,58,11,255,107,43,232,1,200,6,14,255,181,133,65,254,221,228,171,255,123,62,231,1,227,234,179,255,34,189,212,254,244,187,249,0,190,13,80,1,130,89,1,0,223,133,173,0,9,222,198,255,66,127,74,0,167,216,93,255,155,168,198,1,66,145,0,0,68,102,46,1,172,90,154,0,216,128,75,255,160,40,51,0,158,17,27,1,124,240,49,0,236,202,176,255,151,124,192,255,38,193,190,0,95,182,61,0,163,147,124,255,255,165,51,255,28,40,17,254,215,96,78,0,86,145,218,254,31,36,202,255,86,9,5,0,111,41,200,255,237,108,97,0,57,62,44,0,117,184,15,1,45,241,116,0,152,1,220,255,157,165,188,0,250,15,131,1,60,44,125,255,65,220,251,255,75,50,184,0,53,90,128,255,231,80,194,255,136,129,127,1,21,18,187,255,45,58,161,255,71,147,34,0,174,249,11,254,35,141,29,0,239,68,177,255,115,110,58,0,238,190,177,1,87,245,166,255,190,49,247,255,146,83,184,255,173,14,39,255,146,215,104,0,142,223,120,0,149,200,155,255,212,207,145,1,16,181,217,0,173,32,87,255,255,35,181,0,119,223,161,1,200,223,94,255,70,6,186,255,192,67,85,255,50,169,152,0,144,26,123,255,56,243,179,254,20,68,136,0,39,140,188,254,253,208,5,255,200,115,135,1,43,172,229,255,156,104,187,0,151,251,167,0,52,135,23,0,151,153,72,0,147,197,107,254,148,158,5,255,238,143,206,0,126,153,137,255,88,152,197,254,7,68,167,0,252,159,165,255,239,78,54,255,24,63,55,255,38,222,94,0,237,183,12,255,206,204,210,0,19,39,246,254,30,74,231,0,135,108,29,1,179,115,0,0,117,118,116,1,132,6,252,255,145,129,161,1,105,67,141,0,82,37,226,255,238,226,228,255,204,214,129,254,162,123,100,255,185,121,234,0,45,108,231,0,66,8,56,255,132,136,128,0,172,224,66,254,175,157,188,0,230,223,226,254,242,219,69,0,184,14,119,1,82,162,56,0,114,123,20,0,162,103,85,255,49,239,99,254,156,135,215,0,111,255,167,254,39,196,214,0,144,38,79,1,249,168,125,0,155,97,156,255,23,52,219,255,150,22,144,0,44,149,165,255,40,127,183,0,196,77,233,255,118,129,210,255,170,135,230,255,214,119,198,0,233,240,35,0,253,52,7,255,117,102,48,255,21,204,154,255,179,136,177,255,23,2,3,1,149,130,89,255,252,17,159,1,70,60,26,0,144,107,17,0,180,190,60,255,56,182,59,255,110,71,54,255,198,18,129,255,149,224,87,255,223,21,152,255,138,22,182,255,250,156,205,0,236,45,208,255,79,148,242,1,101,70,209,0,103,78,174,0,101,144,172,255,152,136,237,1,191,194,136,0,113,80,125,1,152,4,141,0,155,150,53,255,196,116,245,0,239,114,73,254,19,82,17,255,124,125,234,255,40,52,191,0,42,210,158,255,155,132,165,0,178,5,42,1,64,92,40,255,36,85,77,255,178,228,118,0,137,66,96,254,115,226,66,0,110,240,69,254,151,111,80,0,167,174,236,255,227,108,107,255,188,242,65,255,183,81,255,0,57,206,181,255,47,34,181,255,213,240,158,1,71,75,95,0,156,40,24,255,102,210,81,0,171,199,228,255,154,34,41,0,227,175,75,0,21,239,195,0,138,229,95,1,76,192,49,0,117,123,87,1,227,225,130,0,125,62,63,255,2,198,171,0,254,36,13,254,145,186,206,0,148,255,244,255,35,0,166,0,30,150,219,1,92,228,212,0,92,198,60,254,62,133,200,255,201,41,59,0,125,238,109,255,180,163,238,1,140,122,82,0,9,22,88,255,197,157,47,255,153,94,57,0,88,30,182,0,84,161,85,0,178,146,124,0,166,166,7,255,21,208,223,0,156,182,242,0,155,121,185,0,83,156,174,254,154,16,118,255,186,83,232,1,223,58,121,255,29,23,88,0,35,125,127,255,170,5,149,254,164,12,130,255,155,196,29,0,161,96,136,0,7,35,29,1,162,37,251,0,3,46,242,255,0,217,188,0,57,174,226,1,206,233,2,0,57,187,136,254,123,189,9,255,201,117,127,255,186,36,204,0,231,25,216,0,80,78,105,0,19,134,129,255,148,203,68,0,141,81,125,254,248,165,200,255,214,144,135,0,151,55,166,255,38,235,91,0,21,46,154,0,223,254,150,255,35,153,180,255,125,176,29,1,43,98,30,255,216,122,230,255,233,160,12,0,57,185,12,254,240,113,7,255,5,9,16,254,26,91,108,0,109,198,203,0,8,147,40,0,129,134,228,255,124,186,40,255,114,98,132,254,166,132,23,0,99,69,44,0,9,242,238,255,184,53,59,0,132,129,102,255,52,32,243,254,147,223,200,255,123,83,179,254,135,144,201,255,141,37,56,1,151,60,227,255,90,73,156,1,203,172,187,0,80,151,47,255,94,137,231,255,36,191,59,255,225,209,181,255,74,215,213,254,6,118,179,255,153,54,193,1,50,0,231,0,104,157,72,1,140,227,154,255,182,226,16,254,96,225,92,255,115,20,170,254,6,250,78,0,248,75,173,255,53,89,6,255,0,180,118,0,72,173,1,0,64,8,206,1,174,133,223,0,185,62,133,255,214,11,98,0,197,31,208,0,171,167,244,255,22,231,181,1,150,218,185,0,247,169,97,1,165,139,247,255,47,120,149,1,103,248,51,0,60,69,28,254,25,179,196,0,124,7,218,254,58,107,81,0,184,233,156,255,252,74,36,0,118,188,67,0,141,95,53,255,222,94,165,254,46,61,53,0,206,59,115,255,47,236,250,255,74,5,32,1,129,154,238,255,106,32,226,0,121,187,61,255,3,166,241,254,67,170,172,255,29,216,178,255,23,201,252,0,253,110,243,0,200,125,57,0,109,192,96,255,52,115,238,0,38,121,243,255,201,56,33,0,194,118,130,0,75,96,25,255,170,30,230,254,39,63,253,0,36,45,250,255,251,1,239,0,160,212,92,1,45,209,237,0,243,33,87,254,237,84,201,255,212,18,157,254,212,99,127,255,217,98,16,254,139,172,239,0,168,201,130,255,143,193,169,255,238,151,193,1,215,104,41,0,239,61,165,254,2,3,242,0,22,203,177,254,177,204,22,0,149,129,213,254,31,11,41,255,0,159,121,254,160,25,114,255,162,80,200,0,157,151,11,0,154,134,78,1,216,54,252,0,48,103,133,0,105,220,197,0,253,168,77,254,53,179,23,0,24,121,240,1,255,46,96,255,107,60,135,254,98,205,249,255,63,249,119,255,120,59,211,255,114,180,55,254,91,85,237,0,149,212,77,1,56,73,49,0,86,198,150,0,93,209,160,0,69,205,182,255,244,90,43,0,20,36,176,0,122,116,221,0,51,167,39,1,231,1,63,255,13,197,134,0,3,209,34,255,135,59,202,0,167,100,78,0,47,223,76,0,185,60,62,0,178,166,123,1,132,12,161,255,61,174,43,0,195,69,144,0,127,47,191,1,34,44,78,0,57,234,52,1,255,22,40,255,246,94,146,0,83,228,128,0,60,78,224,255,0,96,210,255,153,175,236,0,159,21,73,0,180,115,196,254,131,225,106,0,255,167,134,0,159,8,112,255,120,68,194,255,176,196,198,255,118,48,168,255,93,169,1,0,112,200,102,1,74,24,254,0,19,141,4,254,142,62,63,0,131,179,187,255,77,156,155,255,119,86,164,0,170,208,146,255,208,133,154,255,148,155,58,255,162,120,232,254,252,213,155,0,241,13,42,0,94,50,131,0,179,170,112,0,140,83,151,255,55,119,84,1,140,35,239,255,153,45,67,1,236,175,39,0,54,151,103,255,158,42,65,255,196,239,135,254,86,53,203,0,149,97,47,254,216,35,17,255,70,3,70,1,103,36,90,255,40,26,173,0,184,48,13,0,163,219,217,255,81,6,1,255,221,170,108,254,233,208,93,0,100,201,249,254,86,36,35,255,209,154,30,1,227,201,251,255,2,189,167,254,100,57,3,0,13,128,41,0,197,100,75,0,150,204,235,255,145,174,59,0,120,248,149,255,85,55,225,0,114,210,53,254,199,204,119,0,14,247,74,1,63,251,129,0,67,104,151,1,135,130,80,0,79,89,55,255,117,230,157,255,25,96,143,0,213,145,5,0,69,241,120,1,149,243,95,255,114,42,20,0,131,72,2,0,154,53,20,255,73,62,109,0,196,102,152,0,41,12,204,255,122,38,11,1,250,10,145,0,207,125,148,0,246,244,222,255,41,32,85,1,112,213,126,0,162,249,86,1,71,198,127,255,81,9,21,1,98,39,4,255,204,71,45,1,75,111,137,0,234,59,231,0,32,48,95,255,204,31,114,1,29,196,181,255,51,241,167,254,93,109,142,0,104,144,45,0,235,12,181,255,52,112,164,0,76,254,202,255,174,14,162,0,61,235,147,255,43,64,185,254,233,125,217,0,243,88,167,254,74,49,8,0,156,204,66,0,124,214,123,0,38,221,118,1,146,112,236,0,114,98,177,0,151,89,199,0,87,197,112,0,185,149,161,0,44,96,165,0,248,179,20,255,188,219,216,254,40,62,13,0,243,142,141,0,229,227,206,255,172,202,35,255,117,176,225,255,82,110,38,1,42,245,14,255,20,83,97,0,49,171,10,0,242,119,120,0,25,232,61,0,212,240,147,255,4,115,56,255,145,17,239,254,202,17,251,255,249,18,245,255,99,117,239,0,184,4,179,255,246,237,51,255,37,239,137,255,166,112,166,255,81,188,33,255,185,250,142,255,54,187,173,0,208,112,201,0,246,43,228,1,104,184,88,255,212,52,196,255,51,117,108,255,254,117,155,0,46,91,15,255,87,14,144,255,87,227,204,0,83,26,83,1,159,76,227,0,159,27,213,1,24,151,108,0,117,144,179,254,137,209,82,0,38,159,10,0,115,133,201,0,223,182,156,1,110,196,93,255,57,60,233,0,5,167,105,255,154,197,164,0,96,34,186,255,147,133,37,1,220,99,190,0,1,167,84,255,20,145,171,0,194,197,251,254,95,78,133,255,252,248,243,255,225,93,131,255,187,134,196,255,216,153,170,0,20,118,158,254,140,1,118,0,86,158,15,1,45,211,41,255,147,1,100,254,113,116,76,255,211,127,108,1,103,15,48,0,193,16,102,1,69,51,95,255,107,128,157,0,137,171,233,0,90,124,144,1,106,161,182,0,175,76,236,1,200,141,172,255,163,58,104,0,233,180,52,255,240,253,14,255,162,113,254,255,38,239,138,254,52,46,166,0,241,101,33,254,131,186,156,0,111,208,62,255,124,94,160,255,31,172,254,0,112,174,56,255,188,99,27,255,67,138,251,0,125,58,128,1,156,152,174,255,178,12,247,255,252,84,158,0,82,197,14,254,172,200,83,255,37,39,46,1,106,207,167,0,24,189,34,0,131,178,144,0,206,213,4,0,161,226,210,0,72,51,105,255,97,45,187,255,78,184,223,255,176,29,251,0,79,160,86,255,116,37,178,0,82,77,213,1,82,84,141,255,226,101,212,1,175,88,199,255,245,94,247,1,172,118,109,255,166,185,190,0,131,181,120,0,87,254,93,255,134,240,73,255,32,245,143,255,139,162,103,255,179,98,18,254,217,204,112,0,147,223,120,255,53,10,243,0,166,140,150,0,125,80,200,255,14,109,219,255,91,218,1,255,252,252,47,254,109,156,116,255,115,49,127,1,204,87,211,255,148,202,217,255,26,85,249,255,14,245,134,1,76,89,169,255,242,45,230,0,59,98,172,255,114,73,132,254,78,155,49,255,158,126,84,0,49,175,43,255,16,182,84,255,157,103,35,0,104,193,109,255,67,221,154,0,201,172,1,254,8,162,88,0,165,1,29,255,125,155,229,255,30,154,220,1,103,239,92,0,220,1,109,255,202,198,1,0,94,2,142,1,36,54,44,0,235,226,158,255,170,251,214,255,185,77,9,0,97,74,242,0,219,163,149,255,240,35,118,255,223,114,88,254,192,199,3,0,106,37,24,255,201,161,118,255,97,89,99,1,224,58,103,255,101,199,147,254,222,60,99,0,234,25,59,1,52,135,27,0,102,3,91,254,168,216,235,0,229,232,136,0,104,60,129,0,46,168,238,0,39,191,67,0,75,163,47,0,143,97,98,255,56,216,168,1,168,233,252,255,35,111,22,255,92,84,43,0,26,200,87,1,91,253,152,0,202,56,70,0,142,8,77,0,80,10,175,1,252,199,76,0,22,110,82,255,129,1,194,0,11,128,61,1,87,14,145,255,253,222,190,1,15,72,174,0,85,163,86,254,58,99,44,255,45,24,188,254,26,205,15,0,19,229,210,254,248,67,195,0,99,71,184,0,154,199,37,255,151,243,121,255,38,51,75,255,201,85,130,254,44,65,250,0,57,147,243,254,146,43,59,255,89,28,53,0,33,84,24,255,179,51,18,254,189,70,83,0,11,156,179,1,98,134,119,0,158,111,111,0,119,154,73,255,200,63,140,254,45,13,13,255,154,192,2,254,81,72,42,0,46,160,185,254,44,112,6,0,146,215,149,1,26,176,104,0,68,28,87,1,236,50,153,255,179,128,250,254,206,193,191,255,166,92,137,254,53,40,239,0,210,1,204,254,168,173,35,0,141,243,45,1,36,50,109,255,15,242,194,255,227,159,122,255,176,175,202,254,70,57,72,0,40,223,56,0,208,162,58,255,183,98,93,0,15,111,12,0,30,8,76,255,132,127,246,255,45,242,103,0,69,181,15,255,10,209,30,0,3,179,121,0,241,232,218,1,123,199,88,255,2,210,202,1,188,130,81,255,94,101,208,1,103,36,45,0,76,193,24,1,95,26,241,255,165,162,187,0,36,114,140],"i8",4,e.h+10240),K([202,66,5,255,37,56,147,0,152,11,243,1,127,85,232,255,250,135,212,1,185,177,113,0,90,220,75,255,69,248,146,0,50,111,50,0,92,22,80,0,244,36,115,254,163,100,82,255,25,193,6,1,127,61,36,0,253,67,30,254,65,236,170,255,161,17,215,254,63,175,140,0,55,127,4,0,79,112,233,0,109,160,40,0,143,83,7,255,65,26,238,255,217,169,140,255,78,94,189,255,0,147,190,255,147,71,186,254,106,77,127,255,233,157,233,1,135,87,237,255,208,13,236,1,155,109,36,255,180,100,218,0,180,163,18,0,190,110,9,1,17,63,123,255,179,136,180,255,165,123,123,255,144,188,81,254,71,240,108,255,25,112,11,255,227,218,51,255,167,50,234,255,114,79,108,255,31,19,115,255,183,240,99,0,227,87,143,255,72,217,248,255,102,169,95,1,129,149,149,0,238,133,12,1,227,204,35,0,208,115,26,1,102,8,234,0,112,88,143,1,144,249,14,0,240,158,172,254,100,112,119,0,194,141,153,254,40,56,83,255,121,176,46,0,42,53,76,255,158,191,154,0,91,209,92,0,173,13,16,1,5,72,226,255,204,254,149,0,80,184,207,0,100,9,122,254,118,101,171,255,252,203,0,254,160,207,54,0,56,72,249,1,56,140,13,255,10,64,107,254,91,101,52,255,225,181,248,1,139,255,132,0,230,145,17,0,233,56,23,0,119,1,241,255,213,169,151,255,99,99,9,254,185,15,191,255,173,103,109,1,174,13,251,255,178,88,7,254,27,59,68,255,10,33,2,255,248,97,59,0,26,30,146,1,176,147,10,0,95,121,207,1,188,88,24,0,185,94,254,254,115,55,201,0,24,50,70,0,120,53,6,0,142,66,146,0,228,226,249,255,104,192,222,1,173,68,219,0,162,184,36,255,143,102,137,255,157,11,23,0,125,45,98,0,235,93,225,254,56,112,160,255,70,116,243,1,153,249,55,255,129,39,17,1,241,80,244,0,87,69,21,1,94,228,73,255,78,66,65,255,194,227,231,0,61,146,87,255,173,155,23,255,112,116,219,254,216,38,11,255,131,186,133,0,94,212,187,0,100,47,91,0,204,254,175,255,222,18,215,254,173,68,108,255,227,228,79,255,38,221,213,0,163,227,150,254,31,190,18,0,160,179,11,1,10,90,94,255,220,174,88,0,163,211,229,255,199,136,52,0,130,95,221,255,140,188,231,254,139,113,128,255,117,171,236,254,49,220,20,255,59,20,171,255,228,109,188,0,20,225,32,254,195,16,174,0,227,254,136,1,135,39,105,0,150,77,206,255,210,238,226,0,55,212,132,254,239,57,124,0,170,194,93,255,249,16,247,255,24,151,62,255,10,151,10,0,79,139,178,255,120,242,202,0,26,219,213,0,62,125,35,255,144,2,108,255,230,33,83,255,81,45,216,1,224,62,17,0,214,217,125,0,98,153,153,255,179,176,106,254,131,93,138,255,109,62,36,255,178,121,32,255,120,252,70,0,220,248,37,0,204,88,103,1,128,220,251,255,236,227,7,1,106,49,198,255,60,56,107,0,99,114,238,0,220,204,94,1,73,187,1,0,89,154,34,0,78,217,165,255,14,195,249,255,9,230,253,255,205,135,245,0,26,252,7,255,84,205,27,1,134,2,112,0,37,158,32,0,231,91,237,255,191,170,204,255,152,7,222,0,109,192,49,0,193,166,146,255,232,19,181,255,105,142,52,255,103,16,27,1,253,200,165,0,195,217,4,255,52,189,144,255,123,155,160,254,87,130,54,255,78,120,61,255,14,56,41,0,25,41,125,255,87,168,245,0,214,165,70,0,212,169,6,255,219,211,194,254,72,93,164,255,197,33,103,255,43,142,141,0,131,225,172,0,244,105,28,0,68,68,225,0,136,84,13,255,130,57,40,254,139,77,56,0,84,150,53,0,54,95,157,0,144,13,177,254,95,115,186,0,117,23,118,255,244,166,241,255,11,186,135,0,178,106,203,255,97,218,93,0,43,253,45,0,164,152,4,0,139,118,239,0,96,1,24,254,235,153,211,255,168,110,20,255,50,239,176,0,114,41,232,0,193,250,53,0,254,160,111,254,136,122,41,255,97,108,67,0,215,152,23,255,140,209,212,0,42,189,163,0,202,42,50,255,106,106,189,255,190,68,217,255,233,58,117,0,229,220,243,1,197,3,4,0,37,120,54,254,4,156,134,255,36,61,171,254,165,136,100,255,212,232,14,0,90,174,10,0,216,198,65,255,12,3,64,0,116,113,115,255,248,103,8,0,231,125,18,255,160,28,197,0,30,184,35,1,223,73,249,255,123,20,46,254,135,56,37,255,173,13,229,1,119,161,34,255,245,61,73,0,205,125,112,0,137,104,134,0,217,246,30,255,237,142,143,0,65,159,102,255,108,164,190,0,219,117,173,255,34,37,120,254,200,69,80,0,31,124,218,254,74,27,160,255,186,154,199,255,71,199,252,0,104,81,159,1,17,200,39,0,211,61,192,1,26,238,91,0,148,217,12,0,59,91,213,255,11,81,183,255,129,230,122,255,114,203,145,1,119,180,66,255,72,138,180,0,224,149,106,0,119,82,104,255,208,140,43,0,98,9,182,255,205,101,134,255,18,101,38,0,95,197,166,255,203,241,147,0,62,208,145,255,133,246,251,0,2,169,14,0,13,247,184,0,142,7,254,0,36,200,23,255,88,205,223,0,91,129,52,255,21,186,30,0,143,228,210,1,247,234,248,255,230,69,31,254,176,186,135,255,238,205,52,1,139,79,43,0,17,176,217,254,32,243,67,0,242,111,233,0,44,35,9,255,227,114,81,1,4,71,12,255,38,105,191,0,7,117,50,255,81,79,16,0,63,68,65,255,157,36,110,255,77,241,3,255,226,45,251,1,142,25,206,0,120,123,209,1,28,254,238,255,5,128,126,255,91,222,215,255,162,15,191,0,86,240,73,0,135,185,81,254,44,241,163,0,212,219,210,255,112,162,155,0,207,101,118,0,168,72,56,255,196,5,52,0,72,172,242,255,126,22,157,255,146,96,59,255,162,121,152,254,140,16,95,0,195,254,200,254,82,150,162,0,119,43,145,254,204,172,78,255,166,224,159,0,104,19,237,255,245,126,208,255,226,59,213,0,117,217,197,0,152,72,237,0,220,31,23,254,14,90,231,255,188,212,64,1,60,101,246,255,85,24,86,0,1,177,109,0,146,83,32,1,75,182,192,0,119,241,224,0,185,237,27,255,184,101,82,1,235,37,77,255,253,134,19,0,232,246,122,0,60,106,179,0,195,11,12,0,109,66,235,1,125,113,59,0,61,40,164,0,175,104,240,0,2,47,187,255,50,12,141,0,194,139,181,255,135,250,104,0,97,92,222,255,217,149,201,255,203,241,118,255,79,151,67,0,122,142,218,255,149,245,239,0,138,42,200,254,80,37,97,255,124,112,167,255,36,138,87,255,130,29,147,255,241,87,78,255,204,97,19,1,177,209,22,255,247,227,127,254,99,119,83,255,212,25,198,1,16,179,179,0,145,77,172,254,89,153,14,255,218,189,167,0,107,233,59,255,35,33,243,254,44,112,112,255,161,127,79,1,204,175,10,0,40,21,138,254,104,116,228,0,199,95,137,255,133,190,168,255,146,165,234,1,183,99,39,0,183,220,54,254,255,222,133,0,162,219,121,254,63,239,6,0,225,102,54,255,251,18,246,0,4,34,129,1,135,36,131,0,206,50,59,1,15,97,183,0,171,216,135,255,101,152,43,255,150,251,91,0,38,145,95,0,34,204,38,254,178,140,83,255,25,129,243,255,76,144,37,0,106,36,26,254,118,144,172,255,68,186,229,255,107,161,213,255,46,163,68,255,149,170,253,0,187,17,15,0,218,160,165,255,171,35,246,1,96,13,19,0,165,203,117,0,214,107,192,255,244,123,177,1,100,3,104,0,178,242,97,255,251,76,130,255,211,77,42,1,250,79,70,255,63,244,80,1,105,101,246,0,61,136,58,1,238,91,213,0,14,59,98,255,167,84,77,0,17,132,46,254,57,175,197,255,185,62,184,0,76,64,207,0,172,175,208,254,175,74,37,0,138,27,211,254,148,125,194,0,10,89,81,0,168,203,101,255,43,213,209,1,235,245,54,0,30,35,226,255,9,126,70,0,226,125,94,254,156,117,20,255,57,248,112,1,230,48,64,255,164,92,166,1,224,214,230,255,36,120,143,0,55,8,43,255,251,1,245,1,106,98,165,0,74,107,106,254,53,4,54,255,90,178,150,1,3,120,123,255,244,5,89,1,114,250,61,255,254,153,82,1,77,15,17,0,57,238,90,1,95,223,230,0,236,52,47,254,103,148,164,255,121,207,36,1,18,16,185,255,75,20,74,0,187,11,101,0,46,48,129,255,22,239,210,255,77,236,129,255,111,77,204,255,61,72,97,255,199,217,251,255,42,215,204,0,133,145,201,255,57,230,146,1,235,100,198,0,146,73,35,254,108,198,20,255,182,79,210,255,82,103,136,0,246,108,176,0,34,17,60,255,19,74,114,254,168,170,78,255,157,239,20,255,149,41,168,0,58,121,28,0,79,179,134,255,231,121,135,255,174,209,98,255,243,122,190,0,171,166,205,0,212,116,48,0,29,108,66,255,162,222,182,1,14,119,21,0,213,39,249,255,254,223,228,255,183,165,198,0,133,190,48,0,124,208,109,255,119,175,85,255,9,209,121,1,48,171,189,255,195,71,134,1,136,219,51,255,182,91,141,254,49,159,72,0,35,118,245,255,112,186,227,255,59,137,31,0,137,44,163,0,114,103,60,254,8,213,150,0,162,10,113,255,194,104,72,0,220,131,116,255,178,79,92,0,203,250,213,254,93,193,189,255,130,255,34,254,212,188,151,0,136,17,20,255,20,101,83,255,212,206,166,0,229,238,73,255,151,74,3,255,168,87,215,0,155,188,133,255,166,129,73,0,240,79,133,255,178,211,81,255,203,72,163,254,193,168,165,0,14,164,199,254,30,255,204,0,65,72,91,1,166,74,102,255,200,42,0,255,194,113,227,255,66,23,208,0,229,216,100,255,24,239,26,0,10,233,62,255,123,10,178,1,26,36,174,255,119,219,199,1,45,163,190,0,16,168,42,0,166,57,198,255,28,26,26,0,126,165,231,0,251,108,100,255,61,229,121,255,58,118,138,0,76,207,17,0,13,34,112,254,89,16,168,0,37,208,105,255,35,201,215,255,40,106,101,254,6,239,114,0,40,103,226,254,246,127,110,255,63,167,58,0,132,240,142,0,5,158,88,255,129,73,158,255,94,89,146,0,230,54,146,0,8,45,173,0,79,169,1,0,115,186,247,0,84,64,131,0,67,224,253,255,207,189,64,0,154,28,81,1,45,184,54,255,87,212,224,255,0,96,73,255,129,33,235,1,52,66,80,255,251,174,155,255,4,179,37,0,234,164,93,254,93,175,253,0,198,69,87,255,224,106,46,0,99,29,210,0,62,188,114,255,44,234,8,0,169,175,247,255,23,109,137,255,229,182,39,0,192,165,94,254,245,101,217,0,191,88,96,0,196,94,99,255,106,238,11,254,53,126,243,0,94,1,101,255,46,147,2,0,201,124,124,255,141,12,218,0,13,166,157,1,48,251,237,255,155,250,124,255,106,148,146,255,182,13,202,0,28,61,167,0,217,152,8,254,220,130,45,255,200,230,255,1,55,65,87,255,93,191,97,254,114,251,14,0,32,105,92,1,26,207,141,0,24,207,13,254,21,50,48,255,186,148,116,255,211,43,225,0,37,34,162,254,164,210,42,255,68,23,96,255,182,214,8,255,245,117,137,255,66,195,50,0,75,12,83,254,80,140,164,0,9,165,36,1,228,110,227,0,241,17,90,1,25,52,212,0,6,223,12,255,139,243,57,0,12,113,75,1,246,183,191,255,213,191,69,255,230,15,142,0,1,195,196,255,138,171,47,255,64,63,106,1,16,169,214,255,207,174,56,1,88,73,133,255,182,133,140,0,177,14,25,255,147,184,53,255,10,227,161,255,120,216,244,255,73,77,233,0,157,238,139,1,59,65,233,0,70,251,216,1,41,184,153,255,32,203,112,0,146,147,253,0,87,101,109,1,44,82,133,255,244,150,53,255,94,152,232,255,59,93,39,255,88,147,220,255,78,81,13,1,32,47,252,255,160,19,114,255,93,107,39,255,118,16,211,1,185,119,209,255,227,219,127,254,88,105,236,255,162,110,23,255,36,166,110,255,91,236,221,255,66,234,116,0,111,19,244,254,10,233,26,0,32,183,6,254,2,191,242,0,218,156,53,254,41,60,70,255,168,236,111,0,121,185,126,255,238,142,207,255,55,126,52,0,220,129,208,254,80,204,164,255,67,23,144,254,218,40,108,255,127,202,164,0,203,33,3,255,2,158,0,0,37,96,188,255,192,49,74,0,109,4,0,0,111,167,10,254,91,218,135,255,203,66,173,255,150,194,226,0,201,253,6,255,174,102,121,0,205,191,110,0,53,194,4,0,81,40,45,254,35,102,143,255,12,108,198,255,16,27,232,255,252,71,186,1,176,110,114,0,142,3,117,1,113,77,142,0,19,156,197,1,92,47,252,0,53,232,22,1,54,18,235,0,46,35,189,255,236,212,129,0,2,96,208,254,200,238,199,255,59,175,164,255,146,43,231,0,194,217,52,255,3,223,12,0,138,54,178,254,85,235,207,0,232,207,34,0,49,52,50,255,166,113,89,255,10,45,216,255,62,173,28,0,111,165,246,0,118,115,91,255,128,84,60,0,167,144,203,0,87,13,243,0,22,30,228,1,177,113,146,255,129,170,230,254,252,153,129,255,145,225,43,0,70,231,5,255,122,105,126,254,86,246,148,255,110,37,154,254,209,3,91,0,68,145,62,0,228,16,165,255,55,221,249,254,178,210,91,0,83,146,226,254,69,146,186,0,93,210,104,254,16,25,173,0,231,186,38,0,189,122,140,255,251,13,112,255,105,110,93,0,251,72,170,0,192,23,223,255,24,3,202,1,225,93,228,0,153,147,199,254,109,170,22,0,248,101,246,255,178,124,12,255,178,254,102,254,55,4,65,0,125,214,180,0,183,96,147,0,45,117,23,254,132,191,249,0,143,176,203,254,136,183,54,255,146,234,177,0,146,101,86,255,44,123,143,1,33,209,152,0,192,90,41,254,83,15,125,255,213,172,82,0,215,169,144,0,16,13,34,0,32,209,100,255,84,18,249,1,197,17,236,255,217,186,230,0,49,160,176,255,111,118,97,255,237,104,235,0,79,59,92,254,69,249,11,255,35,172,74,1,19,118,68,0,222,124,165,255,180,66,35,255,86,174,246,0,43,74,111,255,126,144,86,255,228,234,91,0,242,213,24,254,69,44,235,255,220,180,35,0,8,248,7,255,102,47,92,255,240,205,102,255,113,230,171,1,31,185,201,255,194,246,70,255,122,17,187,0,134,70,199,255,149,3,150,255,117,63,103,0,65,104,123,255,212,54,19,1,6,141,88,0,83,134,243,255,136,53,103,0,169,27,180,0,177,49,24,0,111,54,167,0,195,61,215,255,31,1,108,1,60,42,70,0,185,3,162,255,194,149,40,255,246,127,38,254,190,119,38,255,61,119,8,1,96,161,219,255,42,203,221,1,177,242,164,255,245,159,10,0,116,196,0,0,5,93,205,254,128,127,179,0,125,237,246,255,149,162,217,255,87,37,20,254,140,238,192,0,9,9,193,0,97,1,226,0,29,38,10,0,0,136,63,255,229,72,210,254,38,134,92,255,78,218,208,1,104,36,84,255,12,5,193,255,242,175,61,255,191,169,46,1,179,147,147,255,113,190,139,254,125,172,31,0,3,75,252,254,215,36,15,0,193,27,24,1,255,69,149,255,110,129,118,0,203,93,249,0,138,137,64,254,38,70,6,0,153,116,222,0,161,74,123,0,193,99,79,255,118,59,94,255,61,12,43,1,146,177,157,0,46,147,191,0,16,255,38,0,11,51,31,1,60,58,98,255,111,194,77,1,154,91,244,0,140,40,144,1,173,10,251,0,203,209,50,254,108,130,78,0,228,180,90,0,174,7,250,0,31,174,60,0,41,171,30,0,116,99,82,255,118,193,139,255,187,173,198,254,218,111,56,0,185,123,216,0,249,158,52,0,52,180,93,255,201,9,91,255,56,45,166,254,132,155,203,255,58,232,110,0,52,211,89,255,253,0,162,1,9,87,183,0,145,136,44,1,94,122,245,0,85,188,171,1,147,92,198,0,0,8,104,0,30,95,174,0,221,230,52,1,247,247,235,255,137,174,53,255,35,21,204,255,71,227,214,1,232,82,194,0,11,48,227,255,170,73,184,255,198,251,252,254,44,112,34,0,131,101,131,255,72,168,187,0,132,135,125,255,138,104,97,255,238,184,168,255,243,104,84,255,135,216,226,255,139,144,237,0,188,137,150,1,80,56,140,255,86,169,167,255,194,78,25,255,220,17,180,255,17,13,193,0,117,137,212,255,141,224,151,0,49,244,175,0,193,99,175,255,19,99,154,1,255,65,62,255,156,210,55,255,242,244,3,255,250,14,149,0,158,88,217,255,157,207,134,254,251,232,28,0,46,156,251,255,171,56,184,255,239,51,234,0,142,138,131,255,25,254,243,1,10,201,194,0,63,97,75,0,210,239,162,0,192,200,31,1,117,214,243,0,24,71,222,254,54,40,232,255,76,183,111,254,144,14,87,255,214,79,136,255,216,196,212,0,132,27,140,254,131,5,253,0,124,108,19,255,28,215,75,0,76,222,55,254,233,182,63,0,68,171,191,254,52,111,222,255,10,105,77,255,80,170,235,0,143,24,88,255,45,231,121,0,148,129,224,1,61,246,84,0,253,46,219,255,239,76,33,0,49,148,18,254,230,37,69,0,67,134,22,254,142,155,94,0,31,157,211,254,213,42,30,255,4,228,247,254,252,176,13,255,39,0,31,254,241,244,255,255,170,45,10,254,253,222,249,0,222,114,132,0,255,47,6,255,180,163,179,1,84,94,151,255,89,209,82,254,229,52,169,255,213,236,0,1,214,56,228,255,135,119,151,255,112,201,193,0,83,160,53,254,6,151,66,0,18,162,17,0,233,97,91,0,131,5,78,1,181,120,53,255,117,95,63,255,237,117,185,0,191,126,136,255,144,119,233,0,183,57,97,1,47,201,187,255,167,165,119,1,45,100,126,0,21,98,6,254,145,150,95,255,120,54,152,0,209,98,104,0,143,111,30,254,184,148,249,0,235,216,46,0,248,202,148,255,57,95,22,0,242,225,163,0,233,247,232,255,71,171,19,255,103,244,49,255,84,103,93,255,68,121,244,1,82,224,13,0,41,79,43,255,249,206,167,255,215,52,21,254,192,32,22,255,247,111,60,0,101,74,38,255,22,91,84,254,29,28,13,255,198,231,215,254,244,154,200,0,223,137,237,0,211,132,14,0,95,64,206,255,17,62,247,255,233,131,121,1,93,23,77,0,205,204,52,254,81,189,136,0,180,219,138,1,143,18,94,0,204,43,140,254,188,175,219,0,111,98,143,255,151,63,162,255,211,50,71,254,19,146,53,0,146,45,83,254,178,82,238,255,16,133,84,255,226,198,93,255,201,97,20,255,120,118,35,255,114,50,231,255,162,229,156,255,211,26,12,0,114,39,115,255,206,212,134,0,197,217,160,255,116,129,94,254,199,215,219,255,75,223,249,1,253,116,181,255,232,215,104,255,228,130,246,255,185,117,86,0,14,5,8,0,239,29,61,1,237,87,133,255,125,146,137,254,204,168,223,0,46,168,245,0,154,105,22,0,220,212,161,255,107,69,24,255,137,218,181,255,241,84,198,255,130,122,211,255,141,8,153,255,190,177,118,0,96,89,178,0,255,16,48,254,122,96,105,255,117,54,232,255,34,126,105,255,204,67,166,0,232,52,138,255,211,147,12,0,25,54,7,0,44,15,215,254,51,236,45,0,190,68,129,1,106,147,225,0,28,93,45,254,236,141,15,255,17,61,161,0,220,115,192,0,236,145,24,254,111,168,169,0,224,58,63,255,127,164,188,0,82,234,75,1,224,158,134,0,209,68,110,1,217,166,217,0,70,225,166,1,187,193,143,255,16,7,88,255,10,205,140,0,117,192,156,1,17,56,38,0,27,124,108,1,171,215,55,255,95,253,212,0,155,135,168,255,246,178,153,254,154,68,74,0,232,61,96,254,105,132,59,0,33,76,199,1,189,176,130,255,9,104,25,254,75,198,102,255,233,1,112,0,108,220,20,255,114,230,70,0,140,194,133,255,57,158,164,254,146,6,80,255,169,196,97,1,85,183,130,0,70,158,222,1,59,237,234,255,96,25,26,255,232,175,97,255,11,121,248,254,88,35,194,0,219,180,252,254,74,8,227,0,195,227,73,1,184,110,161,255,49,233,164,1,128,53,47,0,82,14,121,255,193,190,58,0,48,174,117,255,132,23,32,0,40,10,134,1,22,51,25,255,240,11,176,255,110,57,146,0,117,143,239,1,157,101,118,255,54,84,76,0,205,184,18,255,47,4,72,255,78,112,85,255,193,50,66,1,93,16,52,255,8,105,134,0,12,109,72,255,58,156,251,0,144,35,204,0,44,160,117,254,50,107,194,0,1,68,165,255,111,110,162,0,158,83,40,254,76,214,234,0,58,216,205,255,171,96,147,255,40,227,114,1,176,227,241,0,70,249,183,1,136,84,139,255,60,122,247,254,143,9,117,255,177,174,137,254,73,247,143,0,236,185,126,255,62,25,247,255,45,64,56,255,161,244,6,0,34,57,56,1,105,202,83,0,128,147,208,0,6,103,10,255,74,138,65,255,97,80,100,255,214,174,33,255,50,134,74,255,110,151,130,254,111,84,172,0,84,199,75,254,248,59,112,255,8,216,178,1,9,183,95,0,238,27,8,254,170,205,220,0,195,229,135,0,98,76,237,255,226,91,26,1,82,219,39,255,225,190,199,1,217,200,121,255,81,179,8,255,140,65,206,0,178,207,87,254,250,252,46,255,104,89,110,1,253,189,158,255,144,214,158,255,160,245,54,255,53,183,92,1,21,200,194,255,146,33,113,1,209,1,255,0,235,106,43,255,167,52,232,0,157,229,221,0,51,30,25,0,250,221,27,1,65,147,87,255,79,123,196,0,65,196,223,255,76,44,17,1,85,241,68,0,202,183,249,255,65,212,212,255,9,33,154,1,71,59,80,0,175,194,59,255,141,72,9,0,100,160,244,0,230,208,56,0,59,25,75,254,80,194,194,0,18,3,200,254,160,159,115,0,132,143,247,1,111,93,57,255,58,237,11,1,134,222,135,255,122,163,108,1,123,43,190,255,251,189,206,254,80,182,72,255,208,246,224,1,17,60,9,0,161,207,38,0,141,109,91,0,216,15,211,255,136,78,110,0,98,163,104,255,21,80,121,255,173,178,183,1,127,143,4,0,104,60,82,254,214,16,13,255,96,238,33,1,158,148,230,255,127,129,62,255,51,255,210,255,62,141,236,254,157,55,224,255,114,39,244,0,192,188,250,255,228,76,53,0,98,84,81,255,173,203,61,254,147,50,55,255,204,235,191,0,52,197,244,0,88,43,211,254,27,191,119,0,188,231,154,0,66,81,161,0,92,193,160,1,250,227,120,0,123,55,226,0,184,17,72,0,133,168,10,254,22,135,156,255,41,25,103,255,48,202,58,0,186,149,81,255,188,134,239,0,235,181,189,254,217,139,188,255,74,48,82,0,46,218,229,0,189,253,251,0,50,229,12,255,211,141,191,1,128,244,25,255,169,231,122,254,86,47,189,255,132,183,23,255,37,178,150,255,51,137,253,0,200,78,31,0,22,105,50,0,130,60,0,0,132,163,91,254,23,231,187,0,192,79,239,0,157,102,164,255,192,82,20,1,24,181,103,255,240,9,234,0,1,123,164,255,133,233,0,255,202,242,242,0,60,186,245,0,241,16,199,255,224,116,158,254,191,125,91,255,224,86,207,0,121,37,231,255,227,9,198,255,15,153,239,255,121,232,217,254,75,112,82,0,95,12,57,254,51,214,105,255,148,220,97,1,199,98,36,0,156,209,12,254,10,212,52,0,217,180,55,254,212,170,232,255,216,20,84,255,157,250,135,0,157,99,127,254,1,206,41,0,149,36,70,1,54,196,201,255,87,116,0,254,235,171,150,0,27,163,234,0,202,135,180,0,208,95,0,254,123,156,93,0,183,62,75,0,137,235,182,0,204,225,255,255,214,139,210,255,2,115,8,255,29,12,111,0,52,156,1,0,253,21,251,255,37,165,31,254,12,130,211,0,106,18,53,254,42,99,154,0,14,217,61,254,216,11,92,255,200,197,112,254,147,38,199,0,36,252,120,254,107,169,77,0,1,123,159,255,207,75,102,0,163,175,196,0,44,1,240,0,120,186,176,254,13,98,76,255,237,124,241,255,232,146,188,255,200,96,224,0,204,31,41,0,208,200,13,0,21,225,96,255,175,156,196,0,247,208,126,0,62,184,244,254,2,171,81,0,85,115,158,0,54,64,45,255,19,138,114,0,135,71,205,0,227,47,147,1,218,231,66,0,253,209,28,0,244,15,173,255,6,15,118,254,16,150,208,255,185,22,50,255,86,112,207,255,75,113,215,1,63,146,43,255,4,225,19,254,227,23,62,255,14,255,214,254,45,8,205,255,87,197,151,254,210,82,215,255,245,248,247,255,128,248,70,0,225,247,87,0,90,120,70,0,213,245,92,0,13,133,226,0,47,181,5,1,92,163,105,255,6,30,133,254,232,178,61,255,230,149,24,255,18,49,158,0,228,100,61,254,116,243,251,255,77,75,92,1,81,219,147,255,76,163,254,254,141,213,246,0,232,37,152,254,97,44,100,0,201,37,50,1,212,244,57,0,174,171,183,255,249,74,112,0,166,156,30,0,222,221,97,255,243,93,73,254,251,101,100,255,216,217,93,255,254,138,187,255,142,190,52,255,59,203,177,255,200,94,52,0,115,114,158,255,165,152,104,1,126,99,226,255,118,157,244,1,107,200,16,0,193,90,229,0,121,6,88,0,156,32,93,254,125,241,211,255,14,237,157,255,165,154,21,255,184,224,22,255,250,24,152,255,113,77,31,0,247,171,23,255,237,177,204,255,52,137,145,255,194,182,114,0,224,234,149,0,10,111,103,1,201,129,4,0,238,142,78,0,52,6,40,255,110,213,165,254,60,207,253,0,62,215,69,0,96,97,0,255,49,45,202,0,120,121,22,255,235,139,48,1,198,45,34,255,182,50,27,1,131,210,91,255,46,54,128,0,175,123,105,255,198,141,78,254,67,244,239,255,245,54,103,254,78,38,242,255,2,92,249,254,251,174,87,255,139,63,144,0,24,108,27,255,34,102,18,1,34,22,152,0,66,229,118,254,50,143,99,0,144,169,149,1,118,30,152,0,178,8,121,1,8,159,18,0,90,101,230,255,129,29,119,0,68,36,11,1,232,183,55,0,23,255,96,255,161,41,193,255,63,139,222,0,15,179,243,0,255,100,15,255,82,53,135,0,137,57,149,1,99,240,170,255,22,230,228,254,49,180,82,255,61,82,43,0,110,245,217,0,199,125,61,0,46,253,52,0,141,197,219,0,211,159,193,0,55,121,105,254,183,20,129,0,169,119,170,255,203,178,139,255,135,40,182,255,172,13,202,255,65,178,148,0,8,207,43,0,122,53,127,1,74,161,48,0,227,214,128,254,86,11,243,255,100,86,7,1,245,68,134,255,61,43,21,1,152,84,94,255,190,60,250,254,239,118,232,255,214,136,37,1,113,76,107,255,93,104,100,1,144,206,23,255,110,150,154,1,228,103,185,0,218,49,50,254,135,77,139,255,185,1,78,0,0,161,148,255,97,29,233,255,207,148,149,255,160,168,0,0,91,128,171,255,6,28,19,254,11,111,247,0,39,187,150,255,138,232,149,0,117,62,68,255,63,216,188,255,235,234,32,254,29,57,160,255,25,12,241,1,169,60,191,0,32,131,141,255,237,159,123,255,94,197,94,254,116,254,3,255,92,179,97,254,121,97,92,255,170,112,14,0,21,149,248,0,248,227,3,0,80,96,109,0,75,192,74,1,12,90,226,255,161,106,68,1,208,114,127,255,114,42,255,254,74,26,74,255,247,179,150,254,121,140,60,0,147,70,200,255,214,40,161,255,161,188,201,255,141,65,135,255,242,115,252,0,62,47,202,0,180,149,255,254,130,55,237,0,165,17,186,255,10,169,194,0,156,109,218,255,112,140,123,255,104,128,223,254,177,142,108,255,121,37,219,255,128,77,18,255,111,108,23,1,91,192,75,0,174,245,22,255,4,236,62,255,43,64,153,1,227,173,254,0,237,122,132,1,127,89,186,255,142,82,128,254,252,84,174,0,90,179,177,1,243,214,87,255,103,60,162,255,208,130,14,255,11,130,139,0,206,129,219,255,94,217,157,255,239,230,230,255,116,115,159,254,164,107,95,0,51,218,2,1,216,125,198,255,140,202,128,254,11,95,68,255,55,9,93,254,174,153,6,255,204,172,96,0,69,160,110,0,213,38,49,254,27,80,213,0,118,125,114,0,70,70,67,255,15,142,73,255,131,122,185,255,243,20,50,254,130,237,40,0,210,159,140,1,197,151,65,255,84,153,66,0,195,126,90,0,16,238,236,1,118,187,102,255,3,24,133,255,187,69,230,0,56,197,92,1,213,69,94,255,80,138,229,1,206,7,230,0,222,111,230,1,91,233,119,255,9,89,7,1,2,98,1,0,148,74,133,255,51,246,180,255,228,177,112,1,58,189,108,255,194,203,237,254,21,209,195,0,147,10,35,1,86,157,226,0,31,163,139,254,56,7,75,255,62,90,116,0,181,60,169,0,138,162,212,254,81,167,31,0,205,90,112,255,33,112,227,0,83,151,117,1,177,224,73,255,174,144,217,255,230,204,79,255,22,77,232,255,114,78,234,0,224,57,126,254,9,49,141,0,242,147,165,1,104,182,140,255,167,132,12,1,123,68,127,0,225,87,39,1,251,108,8,0,198,193,143,1,121,135,207,255,172,22,70,0,50,68,116,255,101,175,40,255,248,105,233,0,166,203,7,0,110,197,218,0,215,254,26,254,168,226,253,0,31,143,96,0,11,103,41,0,183,129,203,254,100,247,74,255,213,126,132,0,210,147,44,0,199,234,27,1,148,47,181,0,155,91,158,1,54,105,175,255,2,78,145,254,102,154,95,0,128,207,127,254,52,124,236,255,130,84,71,0,221,243,211,0,152,170,207,0,222,106,199,0,183,84,94,254,92,200,56,255,138,182,115,1,142,96,146,0,133,136,228,0,97,18,150,0,55,251,66,0,140,102,4,0,202,103,151,0,30,19,248,255,51,184,207,0,202,198,89,0,55,197,225,254,169,95,249,255,66,65,68,255,188,234,126,0,166,223,100,1,112,239,244,0,144,23,194,0,58,39,182,0,244,44,24,254,175,68,179,255,152,118,154,1,176,162,130,0,217,114,204,254,173,126,78,255,33,222,30,255,36,2,91,255,2,143,243,0,9,235,215,0,3,171,151,1,24,215,245,255,168,47,164,254,241,146,207,0,69,129,180,0,68,243,113,0,144,53,72,254,251,45,14,0,23,110,168,0,68,68,79,255,110,70,95,254,174,91,144,255,33,206,95,255,137,41,7,255,19,187,153,254,35,255,112,255,9,145,185,254,50,157,37,0,11,112,49,1,102,8,190,255,234,243,169,1,60,85,23,0,74,39,189,0,116,49,239,0,173,213,210,0,46,161,108,255,159,150,37,0,196,120,185,255,34,98,6,255,153,195,62,255,97,230,71,255,102,61,76,0,26,212,236,255,164,97,16,0,198,59,146,0,163,23,196,0,56,24,61,0,181,98,193,0,251,147,229,255,98,189,24,255,46,54,206,255,234,82,246,0,183,103,38,1,109,62,204,0,10,240,224,0,146,22,117,255,142,154,120,0,69,212,35,0,208,99,118,1,121,255,3,255,72,6,194,0,117,17,197,255,125,15,23,0,154,79,153,0,214,94,197,255,185,55,147,255,62,254,78,254,127,82,153,0,110,102,63,255,108,82,161,255,105,187,212,1,80,138,39,0,60,255,93,255,72,12,186,0,210,251,31,1,190,167,144,255,228,44,19,254,128,67,232,0,214,249,107,254,136,145,86,255,132,46,176,0,189,187,227,255,208,22,140,0,217,211,116,0,50,81,186,254,139,250,31,0,30,64,198,1,135,155,100,0,160,206,23,254,187,162,211,255,16,188,63,0,254,208,49,0,85,84,191,0,241,192,242,255,153,126,145,1,234,162,162,255,230,97,216,1,64,135,126,0,190,148,223,1,52,0,43,255,28,39,189,1,64,136,238,0,175,196,185,0,98,226,213,255,127,159,244,1,226,175,60,0,160,233,142,1,180,243,207,255,69,152,89,1,31,101,21,0,144,25,164,254,139,191,209,0,91,25,121,0,32,147,5,0,39,186,123,255,63,115,230,255,93,167,198,255,143,213,220,255,179,156,19,255,25,66,122,0,214,160,217,255,2,45,62,255,106,79,146,254,51,137,99,255,87,100,231,255,175,145,232,255,101,184,1,255,174,9,125,0,82,37,161,1,36,114,141,255,48,222,142,255,245,186,154,0,5,174,221,254,63,114,155,255,135,55,160,1,80,31,135,0,126,250,179,1,236,218,45,0,20,28,145,1,16,147,73,0,249,189,132,1,17,189,192,255,223,142,198,255,72,20,15,255,250,53,237,254,15,11,18,0,27,211,113,254,213,107,56,255,174,147,146,255,96,126,48,0,23,193,109,1,37,162,94,0,199,157,249,254,24,128,187,255,205,49,178,254,93,164,42,255,43,119,235,1,88,183,237,255,218,210,1,255,107,254,42,0,230,10,99,255,162,0,226,0,219,237,91,0,129,178,203,0,208,50,95,254,206,208,95,255,247,191,89,254,110,234,79,255,165,61,243,0,20,122,112,255,246,246,185,254,103,4,123,0,233,99,230,1,219,91,252,255,199,222,22,255,179,245,233,255,211,241,234,0,111,250,192,255,85,84,136,0,101,58,50,255,131,173,156,254,119,45,51,255,118,233,16,254,242,90,214,0,94,159,219,1,3,3,234,255,98,76,92,254,80,54,230,0,5,228,231,254,53,24,223,255,113,56,118,1,20,132,1,255,171,210,236,0,56,241,158,255,186,115,19,255,8,229,174,0,48,44,0,1,114,114,166,255,6,73,226,255,205,89,244,0,137,227,75,1,248,173,56,0,74,120,246,254,119,3,11,255,81,120,198,255,136,122,98,255,146,241,221,1,109,194,78,255,223,241,70,1,214,200,169,255,97,190,47,255,47,103,174,255,99,92,72,254,118,233,180,255,193,35,233,254,26,229,32,255,222,252,198,0,204,43,71,255,199,84,172,0,134,102,190,0,111,238,97,254,230,40,230,0,227,205,64,254,200,12,225,0,166,25,222,0,113,69,51,255,143,159,24,0,167,184,74,0,29,224,116,254,158,208,233,0,193,116,126,255,212,11,133,255,22,58,140,1,204,36,51,255,232,30,43,0,235,70,181,255,64,56,146,254,169,18,84,255,226,1,13,255,200,50,176,255,52,213,245,254,168,209,97,0,191,71,55,0,34,78,156,0,232,144,58,1,185,74,189,0,186,142,149,254,64,69,127,255,161,203,147,255,176,151,191,0,136,231,203,254,163,182,137,0,161,126,251,254,233,32,66,0,68,207,66,0,30,28,37,0,93,114,96,1,254,92,247,255,44,171,69,0,202,119,11,255,188,118,50,1,255,83,136,255,71,82,26,0,70,227,2,0,32,235,121,1,181,41,154,0,71,134,229,254,202,255,36,0,41,152,5,0,154,63,73,255,34,182,124,0,121,221,150,255,26,204,213,1,41,172,87,0,90,157,146,255,109,130,20,0,71,107,200,255,243,102,189,0,1,195,145,254,46,88,117,0,8,206,227,0,191,110,253,255,109,128,20,254,134,85,51,255,137,177,112,1,216,34,22,255,131,16,208,255,121,149,170,0,114,19,23,1,166,80,31,255,113,240,122,0,232,179,250,0,68,110,180,254,210,170,119,0,223,108,164,255,207,79,233,255,27,229,226,254,209,98,81,255,79,68,7,0,131,185,100,0,170,29,162,255,17,162,107,255,57,21,11,1,100,200,181,255,127,65,166,1,165,134,204,0,104,167,168,0,1,164,79,0,146,135,59,1,70,50,128,255,102,119,13,254,227,6,135,0,162,142,179,255,160,100,222,0,27,224,219,1,158,93,195,255,234,141,137,0,16,24,125,255,238,206,47,255,97,17,98,255,116,110,12,255,96,115,77,0,91,227,232,255,248,254,79,255,92,229,6,254,88,198,139,0,206,75,129,0,250,77,206,255,141,244,123,1,138,69,220,0,32,151,6,1,131,167,22,255,237,68,167,254,199,189,150,0,163,171,138,255,51,188,6,255,95,29,137,254,148,226,179,0,181,107,208,255,134,31,82,255,151,101,45,255,129,202,225,0,224,72,147,0,48,138,151,255,195,64,206,254,237,218,158,0,106,29,137,254,253,189,233,255,103,15,17,255,194,97,255,0,178,45,169,254,198,225,155,0,39,48,117,255,135,106,115,0,97,38,181,0,150,47,65,255,83,130,229,254,246,38,129,0,92,239,154,254,91,99,127,0,161,111,33,255,238,217,242,255,131,185,195,255,213,191,158,255,41,150,218,0,132,169,131,0,89,84,252,1,171,70,128,255,163,248,203,254,1,50,180,255,124,76,85,1,251,111,80,0,99,66,239,255,154,237,182,255,221,126,133,254,74,204,99,255,65,147,119,255,99,56,167,255,79,248,149,255,116,155,228,255,237,43,14,254,69,137,11,255,22,250,241,1,91,122,143,255,205,249,243,0,212,26,60,255,48,182,176,1,48,23,191,255,203,121,152,254,45,74,213,255,62,90,18,254,245,163,230,255,185,106,116,255,83,35,159,0,12,33,2,255,80,34,62,0,16,87,174,255,173,101,85,0,202,36,81,254,160,69,204,255,64,225,187,0,58,206,94,0,86,144,47,0,229,86,245,0,63,145,190,1,37,5,39,0,109,251,26,0,137,147,234,0,162,121,145,255,144,116,206,255,197,232,185,255,183,190,140,255,73,12,254,255,139,20,242,255,170,90,239,255,97,66,187,255,245,181,135,254,222,136,52,0,245,5,51,254,203,47,78,0,152,101,216,0,73,23,125,0,254,96,33,1,235,210,73,255,43,209,88,1,7,129,109,0,122,104,228,254,170,242,203,0,242,204,135,255,202,28,233,255,65,6,127,0,159,144,71,0,100,140,95,0,78,150,13,0,251,107,118,1,182,58,125,255,1,38,108,255,141,189,209,255,8,155,125,1,113,163,91,255,121,79,190,255,134,239,108,255,76,47,248,0,163,228,239,0,17,111,10,0,88,149,75,255,215,235,239,0,167,159,24,255,47,151,108,255,107,209,188,0,233,231,99,254,28,202,148,255,174,35,138,255,110,24,68,255,2,69,181,0,107,102,82,0,102,237,7,0,92,36,237,255,221,162,83,1,55,202,6,255,135,234,135,255,24,250,222,0,65,94,168,254,245,248,210,255,167,108,201,254,255,161,111,0,205,8,254,0,136,13,116,0,100,176,132,255,43,215,126,255,177,133,130,255,158,79,148,0,67,224,37,1,12,206,21,255,62,34,110,1,237,104,175,255,80,132,111,255,142,174,72,0,84,229,180,254,105,179,140,0,64,248,15,255,233,138,16,0,245,67,123,254,218,121,212,255,63,95,218,1,213,133,137,255,143,182,82,255,48,28,11,0,244,114,141,1,209,175,76,255,157,181,150,255,186,229,3,255,164,157,111,1,231,189,139,0,119,202,190,255,218,106,64,255,68,235,63,254,96,26,172,255,187,47,11,1,215,18,251,255,81,84,89,0,68,58,128,0,94,113,5,1,92,129,208,255,97,15,83,254,9,28,188,0,239,9,164,0,60,205,152,0,192,163,98,255,184,18,60,0,217,182,139,0,109,59,120,255,4,192,251,0,169,210,240,255,37,172,92,254,148,211,245,255,179,65,52,0,253,13,115,0,185,174,206,1,114,188,149,255,237,90,173,0,43,199,192,255,88,108,113,0,52,35,76,0,66,25,148,255,221,4,7,255,151,241,114,255,190,209,232,0,98,50,199,0,151,150,213,255,18,74,36,1,53,40,7,0,19,135,65,255,26,172,69,0,174,237,85,0,99,95,41,0,3,56,16,0,39,160,177,255,200,106,218,254,185,68,84,255,91,186,61,254,67,143,141,255,13,244,166,255,99,114,198,0,199,110,163,255,193,18,186,0,124,239,246,1,110,68,22,0,2,235,46,1,212,60,107,0,105,42,105,1,14,230,152,0,7,5,131,0,141,104,154,255,213,3,6,0,131,228,162,255,179,100,28,1,231,123,85,255,206,14,223,1,253,96,230,0,38,152,149,1,98,137,122,0,214,205,3,255,226,152,179,255,6,133,137,0,158,69,140,255,113,162,154,255,180,243,172,255,27,189,115,255,143,46,220,255,213,134,225,255,126,29,69,0,188,43,137,1,242,70,9,0,90,204,255,255,231,170,147,0,23,56,19,254,56,125,157,255,48,179,218,255,79,182,253,255,38,212,191,1,41,235,124,0,96,151,28,0,135,148,190,0,205,249,39,254,52,96,136,255,212,44,136,255,67,209,131,255,252,130,23,255,219,128,20,255,198,129,118,0,108,101,11,0,178,5,146,1,62,7,100,255,181,236,94,254,28,26,164,0,76,22,112,255,120,102,79,0,202,192,229,1,200,176,215,0,41,64,244,255,206,184,78,0,167,45,63,1,160,35,0,255,59,12,142,255,204,9,144,255,219,94,229,1,122,27,112,0,189,105,109,255,64,208,74,255,251,127,55,1,2,226,198,0,44,76,209,0,151,152,77,255,210,23,46,1,201,171,69,255,44,211,231,0,190,37,224,255,245,196,62,255,169,181,222,255,34,211,17,0,119,241,197,255,229,35,152,1,21,69,40,255,178,226,161,0,148,179,193,0,219,194,254,1,40,206,51,255,231,92,250,1,67,153,170,0,21,148,241,0,170,69,82,255,121,18,231,255,92,114,3,0,184,62,230,0,225,201,87,255,146,96,162,255,181,242,220,0,173,187,221,1,226,62,170,255,56,126,217,1,117,13,227,255,179,44,239,0,157,141,155,255,144,221,83,0,235,209,208,0,42,17,165,1,251,81,133,0,124,245,201,254,97,211,24,255,83,214,166,0,154,36,9,255,248,47,127,0,90,219,140,255,161,217,38,254,212,147,63,255,66,84,148,1,207,3,1,0,230,134,89,1,127,78,122,255,224,155,1,255,82,136,74,0,178,156,208,255,186,25,49,255,222,3,210,1,229,150,190,255,85,162,52,255,41,84,141,255,73,123,84,254,93,17,150,0,119,19,28,1,32,22,215,255,28,23,204,255,142,241,52,255,228,52,125,0,29,76,207,0,215,167,250,254,175,164,230,0,55,207,105,1,109,187,245,255,161,44,220,1,41,101,128,255,167,16,94,0,93,214,107,255,118,72,0,254,80,61,234,255,121,175,125,0,139,169,251,0,97,39,147,254,250,196,49,255,165,179,110,254,223,70,187,255,22,142,125,1,154,179,138,255,118,176,42,1,10,174,153,0,156,92,102,0,168,13,161,255,143,16,32,0,250,197,180,255,203,163,44,1,87,32,36,0,161,153,20,255,123,252,15,0,25,227,80,0,60,88,142,0,17,22,201,1,154,205,77,255,39,63,47,0,8,122,141,0,128,23,182,254,204,39,19,255,4,112,29,255,23,36,140,255,210,234,116,254,53,50,63,255,121,171,104,255,160,219,94,0,87,82,14,254,231,42,5,0,165,139,127,254,86,78,38,0,130,60,66,254,203,30,45,255,46,196,122,1,249,53,162,255,136,143,103,254,215,210,114,0,231,7,160,254,169,152,42,255,111,45,246,0,142,131,135,255,131,71,204,255,36,226,11,0,0,28,242,255,225,138,213,255,247,46,216,254,245,3,183,0,108,252,74,1,206,26,48,255,205,54,246,255,211,198,36,255,121,35,50,0,52,216,202,255,38,139,129,254,242,73,148,0,67,231,141,255,42,47,204,0,78,116,25,1,4,225,191,255,6,147,228,0,58,88,177,0,122,165,229,255,252,83,201,255,224,167,96,1,177,184,158,255,242,105,179,1,248,198,240,0,133,66,203,1,254,36,47,0,45,24,115,255,119,62,254,0,196,225,186,254,123,141,172,0,26,85,41,255,226,111,183,0,213,231,151,0,4,59,7,255,238,138,148,0,66,147,33,255,31,246,141,255,209,141,116,255,104,112,31,0,88,161,172,0,83,215,230,254,47,111,151,0,45,38,52,1,132,45,204,0,138,128,109,254,233,117,134,255,243,190,173,254,241,236,240,0,82,127,236,254,40,223,161,255,110,182,225,255,123,174,239,0,135,242,145,1,51,209,154,0,150,3,115,254,217,164,252,255,55,156,69,1,84,94,255,255,232,73,45,1,20,19,212,255,96,197,59,254,96,251,33,0,38,199,73,1,64,172,247,255,117,116,56,255,228,17,18,0,62,138,103,1,246,229,164,255,244,118,201,254,86,32,159,255,109,34,137,1,85,211,186,0,10,193,193,254,122,194,177,0,122,238,102,255,162,218,171,0,108,217,161,1,158,170,34,0,176,47,155,1,181,228,11,255,8,156,0,0,16,75,93,0,206,98,255,1,58,154,35,0,12,243,184,254,67,117,66,255,230,229,123,0,201,42,110,0,134,228,178,254,186,108,118,255,58,19,154,255,82,169,62,255],"i8",4,e.h+20480),K([114,143,115,1,239,196,50,255,173,48,193,255,147,2,84,255,150,134,147,254,95,232,73,0,109,227,52,254,191,137,10,0,40,204,30,254,76,52,97,255,164,235,126,0,254,124,188,0,74,182,21,1,121,29,35,255,241,30,7,254,85,218,214,255,7,84,150,254,81,27,117,255,160,159,152,254,66,24,221,255,227,10,60,1,141,135,102,0,208,189,150,1,117,179,92,0,132,22,136,255,120,199,28,0,21,129,79,254,182,9,65,0,218,163,169,0,246,147,198,255,107,38,144,1,78,175,205,255,214,5,250,254,47,88,29,255,164,47,204,255,43,55,6,255,131,134,207,254,116,100,214,0,96,140,75,1,106,220,144,0,195,32,28,1,172,81,5,255,199,179,52,255,37,84,203,0,170,112,174,0,11,4,91,0,69,244,27,1,117,131,92,0,33,152,175,255,140,153,107,255,251,135,43,254,87,138,4,255,198,234,147,254,121,152,84,255,205,101,155,1,157,9,25,0,72,106,17,254,108,153,0,255,189,229,186,0,193,8,176,255,174,149,209,0,238,130,29,0,233,214,126,1,61,226,102,0,57,163,4,1,198,111,51,255,45,79,78,1,115,210,10,255,218,9,25,255,158,139,198,255,211,82,187,254,80,133,83,0,157,129,230,1,243,133,134,255,40,136,16,0,77,107,79,255,183,85,92,1,177,204,202,0,163,71,147,255,152,69,190,0,172,51,188,1,250,210,172,255,211,242,113,1,89,89,26,255,64,66,111,254,116,152,42,0,161,39,27,255,54,80,254,0,106,209,115,1,103,124,97,0,221,230,98,255,31,231,6,0,178,192,120,254,15,217,203,255,124,158,79,0,112,145,247,0,92,250,48,1,163,181,193,255,37,47,142,254,144,189,165,255,46,146,240,0,6,75,128,0,41,157,200,254,87,121,213,0,1,113,236,0,5,45,250,0,144,12,82,0,31,108,231,0,225,239,119,255,167,7,189,255,187,228,132,255,110,189,34,0,94,44,204,1,162,52,197,0,78,188,241,254,57,20,141,0,244,146,47,1,206,100,51,0,125,107,148,254,27,195,77,0,152,253,90,1,7,143,144,255,51,37,31,0,34,119,38,255,7,197,118,0,153,188,211,0,151,20,116,254,245,65,52,255,180,253,110,1,47,177,209,0,161,99,17,255,118,222,202,0,125,179,252,1,123,54,126,255,145,57,191,0,55,186,121,0,10,243,138,0,205,211,229,255,125,156,241,254,148,156,185,255,227,19,188,255,124,41,32,255,31,34,206,254,17,57,83,0,204,22,37,255,42,96,98,0,119,102,184,1,3,190,28,0,110,82,218,255,200,204,192,255,201,145,118,0,117,204,146,0,132,32,98,1,192,194,121,0,106,161,248,1,237,88,124,0,23,212,26,0,205,171,90,255,248,48,216,1,141,37,230,255,124,203,0,254,158,168,30,255,214,248,21,0,112,187,7,255,75,133,239,255,74,227,243,255,250,147,70,0,214,120,162,0,167,9,179,255,22,158,18,0,218,77,209,1,97,109,81,255,244,33,179,255,57,52,57,255,65,172,210,255,249,71,209,255,142,169,238,0,158,189,153,255,174,254,103,254,98,33,14,0,141,76,230,255,113,139,52,255,15,58,212,0,168,215,201,255,248,204,215,1,223,68,160,255,57,154,183,254,47,231,121,0,106,166,137,0,81,136,138,0,165,43,51,0,231,139,61,0,57,95,59,254,118,98,25,255,151,63,236,1,94,190,250,255,169,185,114,1,5,250,58,255,75,105,97,1,215,223,134,0,113,99,163,1,128,62,112,0,99,106,147,0,163,195,10,0,33,205,182,0,214,14,174,255,129,38,231,255,53,182,223,0,98,42,159,255,247,13,40,0,188,210,177,1,6,21,0,255,255,61,148,254,137,45,129,255,89,26,116,254,126,38,114,0,251,50,242,254,121,134,128,255,204,249,167,254,165,235,215,0,202,177,243,0,133,141,62,0,240,130,190,1,110,175,255,0,0,20,146,1,37,210,121,255,7,39,130,0,142,250,84,255,141,200,207,0,9,95,104,255,11,244,174,0,134,232,126,0,167,1,123,254,16,193,149,255,232,233,239,1,213,70,112,255,252,116,160,254,242,222,220,255,205,85,227,0,7,185,58,0,118,247,63,1,116,77,177,255,62,245,200,254,63,18,37,255,107,53,232,254,50,221,211,0,162,219,7,254,2,94,43,0,182,62,182,254,160,78,200,255,135,140,170,0,235,184,228,0,175,53,138,254,80,58,77,255,152,201,2,1,63,196,34,0,5,30,184,0,171,176,154,0,121,59,206,0,38,99,39,0,172,80,77,254,0,134,151,0,186,33,241,254,94,253,223,255,44,114,252,0,108,126,57,255,201,40,13,255,39,229,27,255,39,239,23,1,151,121,51,255,153,150,248,0,10,234,174,255,118,246,4,254,200,245,38,0,69,161,242,1,16,178,150,0,113,56,130,0,171,31,105,0,26,88,108,255,49,42,106,0,251,169,66,0,69,93,149,0,20,57,254,0,164,25,111,0,90,188,90,255,204,4,197,0,40,213,50,1,212,96,132,255,88,138,180,254,228,146,124,255,184,246,247,0,65,117,86,255,253,102,210,254,254,121,36,0,137,115,3,255,60,24,216,0,134,18,29,0,59,226,97,0,176,142,71,0,7,209,161,0,189,84,51,254,155,250,72,0,213,84,235,255,45,222,224,0,238,148,143,255,170,42,53,255,78,167,117,0,186,0,40,255,125,177,103,255,69,225,66,0,227,7,88,1,75,172,6,0,169,45,227,1,16,36,70,255,50,2,9,255,139,193,22,0,143,183,231,254,218,69,50,0,236,56,161,1,213,131,42,0,138,145,44,254,136,229,40,255,49,63,35,255,61,145,245,255,101,192,2,254,232,167,113,0,152,104,38,1,121,185,218,0,121,139,211,254,119,240,35,0,65,189,217,254,187,179,162,255,160,187,230,0,62,248,14,255,60,78,97,0,255,247,163,255,225,59,91,255,107,71,58,255,241,47,33,1,50,117,236,0,219,177,63,254,244,90,179,0,35,194,215,255,189,67,50,255,23,135,129,0,104,189,37,255,185,57,194,0,35,62,231,255,220,248,108,0,12,231,178,0,143,80,91,1,131,93,101,255,144,39,2,1,255,250,178,0,5,17,236,254,139,32,46,0,204,188,38,254,245,115,52,255,191,113,73,254,191,108,69,255,22,69,245,1,23,203,178,0,170,99,170,0,65,248,111,0,37,108,153,255,64,37,69,0,0,88,62,254,89,148,144,255,191,68,224,1,241,39,53,0,41,203,237,255,145,126,194,255,221,42,253,255,25,99,151,0,97,253,223,1,74,115,49,255,6,175,72,255,59,176,203,0,124,183,249,1,228,228,99,0,129,12,207,254,168,192,195,255,204,176,16,254,152,234,171,0,77,37,85,255,33,120,135,255,142,194,227,1,31,214,58,0,213,187,125,255,232,46,60,255,190,116,42,254,151,178,19,255,51,62,237,254,204,236,193,0,194,232,60,0,172,34,157,255,189,16,184,254,103,3,95,255,141,233,36,254,41,25,11,255,21,195,166,0,118,245,45,0,67,213,149,255,159,12,18,255,187,164,227,1,160,25,5,0,12,78,195,1,43,197,225,0,48,142,41,254,196,155,60,255,223,199,18,1,145,136,156,0,252,117,169,254,145,226,238,0,239,23,107,0,109,181,188,255,230,112,49,254,73,170,237,255,231,183,227,255,80,220,20,0,194,107,127,1,127,205,101,0,46,52,197,1,210,171,36,255,88,3,90,255,56,151,141,0,96,187,255,255,42,78,200,0,254,70,70,1,244,125,168,0,204,68,138,1,124,215,70,0,102,66,200,254,17,52,228,0,117,220,143,254,203,248,123,0,56,18,174,255,186,151,164,255,51,232,208,1,160,228,43,255,249,29,25,1,68,190,63,0,244,126,0,0,164,2,0,0,157,129,0,0,11,0,0,0,173,129,0,0,181,129,0,0,199,129,0,0,223,129,0,0,243,129,0,0,6,130,0,0,22,130,0,0,41,130,0,0,56,130,0,0,72,130,0,0,95,130,0,0,112,130,0,0,128,130,0,0,150,130,0,0,176,130,0,0,164,2,0,0,204,130,0,0,6,0,0,0,152,47,138,66,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,241,155,193,193,105,155,228,134,71,190,239,198,157,193,15,204,161,12,36,111,44,233,45,170,132,116,74,220,169,176,92,218,136,249,118,82,81,62,152,109,198,49,168,200,39,3,176,199,127,89,191,243,11,224,198,71,145,167,213,81,99,202,6,103,41,41,20,133,10,183,39,56,33,27,46,252,109,44,77,19,13,56,83,84,115,10,101,187,10,106,118,46,201,194,129,133,44,114,146,161,232,191,162,75,102,26,168,112,139,75,194,163,81,108,199,25,232,146,209,36,6,153,214,133,53,14,244,112,160,106,16,22,193,164,25,8,108,55,30,76,119,72,39,181,188,176,52,179,12,28,57,74,170,216,78,79,202,156,91,243,111,46,104,238,130,143,116,111,99,165,120,20,120,200,132,8,2,199,140,250,255,190,144,235,108,80,164,247,163,249,190,242,120,113,198,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,128,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,216,0,0,0,171,0,0,0,77,0,0,0,154,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,255,255,255,255,255,79,76,77,95,82,79,79,84,0,79,76,77,95,82,65,84,67,72,69,84,0,79,76,77,95,75,69,89,83,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,34,99,117,114,118,101,50,53,53,49,57,34,58,0,34,101,100,50,53,53,49,57,34,58,0,77,69,71,79,76,77,95,75,69,89,83,0,0,1,2,3,83,85,67,67,69,83,83,0,78,79,84,95,69,78,79,85,71,72,95,82,65,78,68,79,77,0,79,85,84,80,85,84,95,66,85,70,70,69,82,95,84,79,79,95,83,77,65,76,76,0,66,65,68,95,77,69,83,83,65,71,69,95,86,69,82,83,73,79,78,0,66,65,68,95,77,69,83,83,65,71,69,95,70,79,82,77,65,84,0,66,65,68,95,77,69,83,83,65,71,69,95,77,65,67,0,66,65,68,95,77,69,83,83,65,71,69,95,75,69,89,95,73,68,0,73,78,86,65,76,73,68,95,66,65,83,69,54,52,0,66,65,68,95,65,67,67,79,85,78,84,95,75,69,89,0,85,78,75,78,79,87,78,95,80,73,67,75,76,69,95,86,69,82,83,73,79,78,0,67,79,82,82,85,80,84,69,68,95,80,73,67,75,76,69,0,66,65,68,95,83,69,83,83,73,79,78,95,75,69,89,0,85,78,75,78,79,87,78,95,77,69,83,83,65,71,69,95,73,78,68,69,88,0,66,65,68,95,76,69,71,65,67,89,95,65,67,67,79,85,78,84,95,80,73,67,75,76,69,0,66,65,68,95,83,73,71,78,65,84,85,82,69,0,85,78,75,78,79,87,78,95,69,82,82,79,82,0,80,105,99,107,108,101,0,99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22,0,0,0,0,0,0,2,3,9,11,13,14,4,6,18,22,26,28,6,5,27,29,23,18,8,12,36,44,52,56,10,15,45,39,57,54,12,10,54,58,46,36,14,9,63,49,35,42,16,24,72,88,104,112,18,27,65,83,101,126,20,30,90,78,114,108,22,29,83,69,127,98,24,20,108,116,92,72,26,23,101,127,81,70,28,18,126,98,70,84,30,17,119,105,75,90,32,48,144,176,208,224,34,51,153,187,221,238,36,54,130,166,202,252,38,53,139,173,199,242,40,60,180,156,228,216,42,63,189,151,233,214,44,58,166,138,254,196,46,57,175,129,243,202,48,40,216,232,184,144,50,43,209,227,181,158,52,46,202,254,162,140,54,45,195,245,175,130,56,36,252,196,140,168,58,39,245,207,129,166,60,34,238,210,150,180,62,33,231,217,155,186,64,96,59,123,187,219,66,99,50,112,182,213,68,102,41,109,161,199,70,101,32,102,172,201,72,108,31,87,143,227,74,111,22,92,130,237,76,106,13,65,149,255,78,105,4,74,152,241,80,120,115,35,211,171,82,123,122,40,222,165,84,126,97,53,201,183,86,125,104,62,196,185,88,116,87,15,231,147,90,119,94,4,234,157,92,114,69,25,253,143,94,113,76,18,240,129,96,80,171,203,107,59,98,83,162,192,102,53,100,86,185,221,113,39,102,85,176,214,124,41,104,92,143,231,95,3,106,95,134,236,82,13,108,90,157,241,69,31,110,89,148,250,72,17,112,72,227,147,3,75,114,75,234,152,14,69,116,78,241,133,25,87,118,77,248,142,20,89,120,68,199,191,55,115,122,71,206,180,58,125,124,66,213,169,45,111,126,65,220,162,32,97,128,192,118,246,109,173,130,195,127,253,96,163,132,198,100,224,119,177,134,197,109,235,122,191,136,204,82,218,89,149,138,207,91,209,84,155,140,202,64,204,67,137,142,201,73,199,78,135,144,216,62,174,5,221,146,219,55,165,8,211,148,222,44,184,31,193,150,221,37,179,18,207,152,212,26,130,49,229,154,215,19,137,60,235,156,210,8,148,43,249,158,209,1,159,38,247,160,240,230,70,189,77,162,243,239,77,176,67,164,246,244,80,167,81,166,245,253,91,170,95,168,252,194,106,137,117,170,255,203,97,132,123,172,250,208,124,147,105,174,249,217,119,158,103,176,232,174,30,213,61,178,235,167,21,216,51,180,238,188,8,207,33,182,237,181,3,194,47,184,228,138,50,225,5,186,231,131,57,236,11,188,226,152,36,251,25,190,225,145,47,246,23,192,160,77,141,214,118,194,163,68,134,219,120,196,166,95,155,204,106,198,165,86,144,193,100,200,172,105,161,226,78,202,175,96,170,239,64,204,170,123,183,248,82,206,169,114,188,245,92,208,184,5,213,190,6,210,187,12,222,179,8,212,190,23,195,164,26,214,189,30,200,169,20,216,180,33,249,138,62,218,183,40,242,135,48,220,178,51,239,144,34,222,177,58,228,157,44,224,144,221,61,6,150,226,147,212,54,11,152,228,150,207,43,28,138,230,149,198,32,17,132,232,156,249,17,50,174,234,159,240,26,63,160,236,154,235,7,40,178,238,153,226,12,37,188,240,136,149,101,110,230,242,139,156,110,99,232,244,142,135,115,116,250,246,141,142,120,121,244,248,132,177,73,90,222,250,135,184,66,87,208,252,130,163,95,64,194,254,129,170,84,77,204,27,155,236,247,218,65,25,152,229,252,215,79,31,157,254,225,192,93,29,158,247,234,205,83,19,151,200,219,238,121,17,148,193,208,227,119,23,145,218,205,244,101,21,146,211,198,249,107,11,131,164,175,178,49,9,128,173,164,191,63,15,133,182,185,168,45,13,134,191,178,165,35,3,143,128,131,134,9,1,140,137,136,139,7,7,137,146,149,156,21,5,138,155,158,145,27,59,171,124,71,10,161,57,168,117,76,7,175,63,173,110,81,16,189,61,174,103,90,29,179,51,167,88,107,62,153,49,164,81,96,51,151,55,161,74,125,36,133,53,162,67,118,41,139,43,179,52,31,98,209,41,176,61,20,111,223,47,181,38,9,120,205,45,182,47,2,117,195,35,191,16,51,86,233,33,188,25,56,91,231,39,185,2,37,76,245,37,186,11,46,65,251,91,251,215,140,97,154,89,248,222,135,108,148,95,253,197,154,123,134,93,254,204,145,118,136,83,247,243,160,85,162,81,244,250,171,88,172,87,241,225,182,79,190,85,242,232,189,66,176,75,227,159,212,9,234,73,224,150,223,4,228,79,229,141,194,19,246,77,230,132,201,30,248,67,239,187,248,61,210,65,236,178,243,48,220,71,233,169,238,39,206,69,234,160,229,42,192,123,203,71,60,177,122,121,200,78,55,188,116,127,205,85,42,171,102,125,206,92,33,166,104,115,199,99,16,133,66,113,196,106,27,136,76,119,193,113,6,159,94,117,194,120,13,146,80,107,211,15,100,217,10,105,208,6,111,212,4,111,213,29,114,195,22,109,214,20,121,206,24,99,223,43,72,237,50,97,220,34,67,224,60,103,217,57,94,247,46,101,218,48,85,250,32,155,91,154,1,183,236,153,88,147,10,186,226,159,93,136,23,173,240,157,94,129,28,160,254,147,87,190,45,131,212,145,84,183,38,142,218,151,81,172,59,153,200,149,82,165,48,148,198,139,67,210,89,223,156,137,64,219,82,210,146,143,69,192,79,197,128,141,70,201,68,200,142,131,79,246,117,235,164,129,76,255,126,230,170,135,73,228,99,241,184,133,74,237,104,252,182,187,107,10,177,103,12,185,104,3,186,106,2,191,109,24,167,125,16,189,110,17,172,112,30,179,103,46,157,83,52,177,100,39,150,94,58,183,97,60,139,73,40,181,98,53,128,68,38,171,115,66,233,15,124,169,112,75,226,2,114,175,117,80,255,21,96,173,118,89,244,24,110,163,127,102,197,59,68,161,124,111,206,54,74,167,121,116,211,33,88,165,122,125,216,44,86,219,59,161,122,12,55,217,56,168,113,1,57,223,61,179,108,22,43,221,62,186,103,27,37,211,55,133,86,56,15,209,52,140,93,53,1,215,49,151,64,34,19,213,50,158,75,47,29,203,35,233,34,100,71,201,32,224,41,105,73,207,37,251,52,126,91,205,38,242,63,115,85,195,47,205,14,80,127,193,44,196,5,93,113,199,41,223,24,74,99,197,42,214,19,71,109,251,11,49,202,220,215,249,8,56,193,209,217,255,13,35,220,198,203,253,14,42,215,203,197,243,7,21,230,232,239,241,4,28,237,229,225,247,1,7,240,242,243,245,2,14,251,255,253,235,19,121,146,180,167,233,16,112,153,185,169,239,21,107,132,174,187,237,22,98,143,163,181,227,31,93,190,128,159,225,28,84,181,141,145,231,25,79,168,154,131,229,26,70,163,151,141,82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],"i8",4,e.h+30720);var kb=J,J=J+16;a._i64Subtract=lb,a._i64Add=mb,a._bitshift64Ashr=nb,a._memset=ob,a._bitshift64Lshr=pb,a._bitshift64Shl=qb,a._memcpy=rb;var ab=H=e.q(J),Xa=!0,za=ab+bb,E=e.q(za),sb=K([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",3);a.t={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:1/0},a.u={abort:Q,assert:z,invoke_ii:function(e,r){try{return a.dynCall_ii(e,r)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;d.setThrew(1,0)}},invoke_iiiiiiiiii:function(e,r,n,i,t,o,u,s,_,l){try{return a.dynCall_iiiiiiiiii(e,r,n,i,t,o,u,s,_,l)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;d.setThrew(1,0)}},invoke_iii:function(e,r,n){try{return a.dynCall_iii(e,r,n)}catch(e){if("number"!=typeof e&&"longjmp"!==e)throw e;d.setThrew(1,0)}},_pthread_self:function(){return 0},_abort:function(){a.abort()},___setErrNo:Na,_llvm_stacksave:wa,_sbrk:ja,_time:function(e){var r=Date.now()/1e3|0;return e&&(D[e>>2]=r),r},_emscripten_memcpy_big:function(e,r,n){return B.set(B.subarray(r,r+n),e),e},_llvm_stackrestore:function(r){var n=wa,i=n.b[r];n.b.splice(r,1),e.d(i)},_sysconf:function(e){switch(e){case 30:return 4096;case 85:return M/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return Na(22),-1},STACKTOP:H,STACK_MAX:za,tempDoublePtr:kb,ABORT:ka,cttz_i8:sb};var d=function(e,r,n){"use asm";var i=new e.Int8Array(n);var t=new e.Int16Array(n);var o=new e.Int32Array(n);var a=new e.Uint8Array(n);var u=new e.Uint16Array(n);var s=new e.Uint32Array(n);var _=new e.Float32Array(n);var l=new e.Float64Array(n);var f=r.STACKTOP|0;var c=r.STACK_MAX|0;var h=r.tempDoublePtr|0;var d=r.ABORT|0;var m=r.cttz_i8|0;var p=0;var b=0;var w=0;var v=0;var k=e.NaN,g=e.Infinity;var y=0,A=0,T=0,M=0,E=0.0,S=0,x=0,O=0,R=0.0;var C=0;var I=0;var L=0;var P=0;var N=0;var U=0;var F=0;var z=0;var q=0;var H=0;var j=e.Math.floor;var D=e.Math.abs;var V=e.Math.sqrt;var B=e.Math.pow;var G=e.Math.cos;var K=e.Math.sin;var W=e.Math.tan;var Y=e.Math.acos;var J=e.Math.asin;var X=e.Math.atan;var Q=e.Math.atan2;var Z=e.Math.exp;var $=e.Math.log;var ee=e.Math.ceil;var re=e.Math.imul;var ne=e.Math.min;var ie=e.Math.clz32;var te=r.abort;var oe=r.assert;var ae=r.invoke_ii;var ue=r.invoke_iiiiiiiiii;var se=r.invoke_iii;var _e=r._pthread_self;var le=r._abort;var fe=r.___setErrNo;var ce=r._llvm_stacksave;var he=r._sbrk;var de=r._time;var me=r._emscripten_memcpy_big;var pe=r._llvm_stackrestore;var be=r._sysconf;var we=0.0;function ve(e){e=e|0;var r=0;r=f;f=f+e|0;f=f+15&-16;return r|0}function ke(){return f|0}function ge(e){e=e|0;f=e}function ye(e,r){e=e|0;r=r|0;f=e;c=r}function Ae(e,r){e=e|0;r=r|0;if(!p){p=e;b=r}}function Te(e){e=e|0;i[h>>0]=i[e>>0];i[h+1>>0]=i[e+1>>0];i[h+2>>0]=i[e+2>>0];i[h+3>>0]=i[e+3>>0]}function Me(e){e=e|0;i[h>>0]=i[e>>0];i[h+1>>0]=i[e+1>>0];i[h+2>>0]=i[e+2>>0];i[h+3>>0]=i[e+3>>0];i[h+4>>0]=i[e+4>>0];i[h+5>>0]=i[e+5>>0];i[h+6>>0]=i[e+6>>0];i[h+7>>0]=i[e+7>>0]}function Ee(e){e=e|0;C=e}function Se(){return C|0}function xe(e){e=e|0;e=e+2|0;return(((e>>>0)/3|0)<<2|((e>>>0)%3|0))+-2|0}function Oe(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,u=0,s=0,_=0;u=(r>>>0)%3|0;t=e+(r-u)|0;if((u|0)==(r|0)){u=n;t=e}else{o=e;do{u=a[o>>0]|0;s=u<<8|(a[o+1>>0]|0);_=a[o+2>>0]|0;o=o+3|0;i[n+3>>0]=i[32900+(_&63)>>0]|0;i[n+2>>0]=i[32900+((s<<8|_)>>>6&63)>>0]|0;i[n+1>>0]=i[32900+(s>>>4&63)>>0]|0;i[n>>0]=i[32900+(u>>>2)>>0]|0;n=n+4|0}while((o|0)!=(t|0));u=n}n=e+r|0;if((n|0)==(t|0)){_=u;return _|0}o=a[t>>0]|0;if((n-t|0)==2){n=a[t+1>>0]|0;i[u+2>>0]=i[32900+(n<<2&60)>>0]|0;t=u+3|0;n=(n|o<<8)>>>4}else{t=u+2|0;n=o<<4}i[u+1>>0]=i[32900+(n&63)>>0]|0;i[u>>0]=i[32900+(n>>>6)>>0]|0;_=t;return _|0}function Re(e){e=e|0;if((e&3|0)==1){e=-1;return e|0}e=e+2|0;e=(e&3)+-2+((e>>>2)*3|0)|0;return e|0}function Ce(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,u=0,s=0,_=0,l=0,f=0;_=r&-4;o=e+_|0;if(!_)u=e;else{_=(r+-4|0)>>>2;u=(_*3|0)+3|0;_=(_<<2)+4|0;t=n;s=e;while(1){l=a[32964+((a[s+1>>0]|0)&127)>>0]|0|(a[32964+((a[s>>0]|0)&127)>>0]|0)<<6;f=l<<6|(a[32964+((a[s+2>>0]|0)&127)>>0]|0);i[t+2>>0]=f<<6|(a[32964+((a[s+3>>0]|0)&127)>>0]|0);s=s+4|0;i[t+1>>0]=f>>>2;i[t>>0]=l>>>4;if((s|0)==(o|0))break;else t=t+3|0}n=n+u|0;u=e+_|0}t=e+r|0;if((t|0)==(u|0))return t|0;o=a[32964+((a[u+1>>0]|0)&127)>>0]|0|(a[32964+((a[u>>0]|0)&127)>>0]|0)<<6;if((t-u|0)==3)i[n+1>>0]=(a[32964+((a[u+2>>0]|0)&127)>>0]|0|o<<6)>>>2;i[n>>0]=o>>>4;return t|0}function Ie(e){e=e|0;e=e+2|0;return(((e>>>0)/3|0)<<2|((e>>>0)%3|0))+-2|0}function Le(e,r,n){e=e|0;r=r|0;n=n|0;return(Oe(e,r,n)|0)-n|0}function Pe(e){e=e|0;if((e&3|0)==1){e=-1;return e|0}e=e+2|0;e=(e&3)+-2+((e>>>2)*3|0)|0;return e|0}function Ne(e,r,n){e=e|0;r=r|0;n=n|0;Ce(e,r,n)|0;if((r&3|0)==1){n=-1;return n|0}n=r+2|0;n=(n&3)+-2+((n>>>2)*3|0)|0;return n|0}function Ue(e,r){e=e|0;r=r|0;i[e+3>>0]=r;i[e+2>>0]=r>>>8;i[e+1>>0]=r>>>16;i[e>>0]=r>>>24;return e+4|0}function Fe(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;o[n>>2]=0;i=e+4|0;if(i>>>0>r>>>0){n=r;return n|0}o[n>>2]=0;r=(a[e>>0]|0)<<8;o[n>>2]=r;r=(a[e+1>>0]|0|r)<<8;o[n>>2]=r;r=(a[e+2>>0]|0|r)<<8;o[n>>2]=r;o[n>>2]=a[e+3>>0]|0|r;n=i;return n|0}function ze(e,r){e=e|0;r=r|0;i[e>>0]=r&1;return e+1|0}function qe(e,r,n){e=e|0;r=r|0;n=n|0;if((e|0)==(r|0)){n=e;return n|0}i[n>>0]=(i[e>>0]|0)!=0&1;n=e+1|0;return n|0}function He(e,r,n){e=e|0;r=r|0;n=n|0;bo(e|0,r|0,n|0)|0;return e+n|0}function je(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=e+i|0;if(t>>>0>r>>>0){e=r;return e|0}bo(n|0,e|0,i|0)|0;e=t;return e|0}function De(e){e=e|0;return 32}function Ve(e,r){e=e|0;r=r|0;var n=0,t=0;t=e;n=t+32|0;do{i[t>>0]=i[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(n|0));return e+32|0}function Be(e,r,n){e=e|0;r=r|0;n=n|0;var t=0;t=e+32|0;if(t>>>0>r>>>0){t=r;return t|0}r=e;e=n+32|0;do{i[n>>0]=i[r>>0]|0;n=n+1|0;r=r+1|0}while((n|0)<(e|0));return t|0}function Ge(e){e=e|0;return 64}function Ke(e,r){e=e|0;r=r|0;var n=0,t=0,o=0;n=e;t=r;o=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));n=e+32|0;t=r+32|0;o=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));return e+64|0}function We(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,a=0,u=0;t=e+32|0;if(t>>>0>r>>>0)t=r;else{u=n;a=u+32|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0))}o=t+32|0;if(o>>>0>r>>>0){u=r;return u|0}u=n+32|0;e=t;a=u+32|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0));u=o;return u|0}function Ye(e){e=e|0;return 32}function Je(e,r){e=e|0;r=r|0;var n=0,t=0;t=e;n=t+32|0;do{i[t>>0]=i[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(n|0));return e+32|0}function Xe(e,r,n){e=e|0;r=r|0;n=n|0;var t=0;t=e+32|0;if(t>>>0>r>>>0){t=r;return t|0}r=e;e=n+32|0;do{i[n>>0]=i[r>>0]|0;n=n+1|0;r=r+1|0}while((n|0)<(e|0));return t|0}function Qe(e){e=e|0;return 96}function Ze(e,r){e=e|0;r=r|0;var n=0,t=0,o=0;n=e;t=r;o=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));n=e+32|0;t=r+32|0;o=n+64|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(o|0));return e+96|0}function $e(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0,a=0,u=0;t=e+32|0;if(t>>>0>r>>>0)t=r;else{u=n;a=u+32|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0))}o=t+64|0;if(o>>>0>r>>>0){u=r;return u|0}u=n+32|0;e=t;a=u+64|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(a|0));u=o;return u|0}function er(e,r){e=e|0;r=r|0;i[e+3>>0]=r;i[e+2>>0]=r>>>8;i[e+1>>0]=r>>>16;i[e>>0]=r>>>24;return e+4|0}function rr(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;o[n>>2]=0;i=e+4|0;if(i>>>0>r>>>0){n=r;return n|0}o[n>>2]=0;r=(a[e>>0]|0)<<8;o[n>>2]=r;r=(a[e+1>>0]|0|r)<<8;o[n>>2]=r;r=(a[e+2>>0]|0|r)<<8;o[n>>2]=r;o[n>>2]=a[e+3>>0]|0|r;n=i;return n|0}function nr(e,r){e=e|0;r=r|0;i[e>>0]=(r|0)!=0&1;return e+1|0}function ir(e,r,n){e=e|0;r=r|0;n=n|0;if((e|0)==(r|0)){n=e;return n|0}i[n>>0]=(i[e>>0]|0)!=0&1;n=e+1|0;return n|0}function tr(e,r,n){e=e|0;r=r|0;n=n|0;bo(e|0,r|0,n|0)|0;return e+n|0}function or(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=e+i|0;if(t>>>0>r>>>0){e=r;return e|0}bo(n|0,e|0,i|0)|0;e=t;return e|0}function ar(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0,a=0;if(r>>>0>127){o=r;t=1;while(1){t=t+1|0;if(o>>>0>16383)o=o>>>7;else break}}else t=1;if(e>>>0>127){o=1;while(1){o=o+1|0;if(e>>>0>16383)e=e>>>7;else break}}else o=1;if(n>>>0>127){a=n;e=1;while(1){e=e+1|0;if(a>>>0>16383)a=a>>>7;else break}}else e=1;return r+4+n+i+t+o+e|0}function ur(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0;i[u>>0]=r;r=u+2|0;i[u+1>>0]=10;if(t>>>0>127){s=t;while(1){_=r+1|0;i[r>>0]=s|128;u=s>>>7;if(s>>>0>16383){r=_;s=u}else{r=_;break}}}else u=t;_=r+1|0;i[r>>0]=u;o[e>>2]=_;t=_+t|0;r=t+1|0;i[t>>0]=16;if(n>>>0>127){s=n;while(1){u=r+1|0;i[r>>0]=s|128;n=s>>>7;if(s>>>0>16383){r=u;s=n}else break}}else u=r;i[u>>0]=n;s=e+4|0;r=u+2|0;i[u+1>>0]=34;if(a>>>0>127)u=r;else{_=a;t=r;_=_&255;e=t+1|0;i[t>>0]=_;o[s>>2]=e;return}while(1){r=u+1|0;i[u>>0]=a|128;n=a>>>7;if(a>>>0>16383){u=r;a=n}else break}t=n&255;e=r+1|0;i[r>>0]=t;o[s>>2]=e;return}function sr(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0;l=r+n+(0-t)|0;o[e+8>>2]=r;o[e+12>>2]=n;f=e+1|0;i[f>>0]=0;c=e+16|0;h=e+20|0;d=e+24|0;m=e+28|0;o[c>>2]=0;o[c+4>>2]=0;o[c+8>>2]=0;o[c+12>>2]=0;if(n>>>0<t>>>0|(l|0)==(r|0))return;t=r+1|0;i[e>>0]=i[r>>0]|0;if((t|0)==(l|0))return;_=l;s=e+4|0;e:while(1){if((i[t>>0]|0)==10){u=t+1|0;n=u;while(1){if((n|0)==(l|0)){r=l;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){e=r;n=0;do{e=e+-1|0;n=a[e>>0]&127|n<<7}while((e|0)!=(u|0));if(n>>>0>(_-r|0)>>>0){n=44;break}}else n=0;o[c>>2]=r;o[h>>2]=n;n=r+n|0}else n=t;if((n|0)==(l|0)){n=44;break}if((i[n>>0]|0)==16){u=n+1|0;r=u;while(1){if((r|0)==(l|0)){n=l;break}n=r+1|0;if((i[r>>0]|0)>-1)break;else r=n}if((n|0)==(u|0))r=0;else{e=n;r=0;do{e=e+-1|0;r=a[e>>0]&127|r<<7}while((e|0)!=(u|0))}o[s>>2]=r;i[f>>0]=1}if((n|0)==(l|0)){n=44;break}if((i[n>>0]|0)==34){u=n+1|0;n=u;while(1){if((n|0)==(l|0)){r=l;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){e=r;n=0;do{e=e+-1|0;n=a[e>>0]&127|n<<7}while((e|0)!=(u|0));if(n>>>0>(_-r|0)>>>0){n=44;break}}else n=0;o[d>>2]=r;o[m>>2]=n;n=r+n|0}r:do{if(!((t|0)!=(n|0)|(n|0)==(l|0))){switch(a[t>>0]&7|0){case 0:{n=t;while(1){if((n|0)==(l|0)){t=l;break}t=n+1|0;if((i[n>>0]|0)>-1)break;else n=t}while(1){if((t|0)==(l|0)){n=44;break e}n=t+1|0;if((i[t>>0]|0)>-1)break r;else t=n}}case 2:break;default:{n=44;break e}}while(1){if((t|0)==(l|0)){n=l;break}n=t+1|0;if((i[t>>0]|0)>-1)break;else t=n}t=n;while(1){if((t|0)==(l|0)){r=l;break}r=t+1|0;if((i[t>>0]|0)>-1)break;else t=r}if((r|0)!=(n|0)){e=r;t=0;do{e=e+-1|0;t=a[e>>0]&127|t<<7}while((e|0)!=(n|0));n=t;if(n>>>0>(_-r|0)>>>0){n=44;break e}else n=r+n|0}}}while(0);if((n|0)==(l|0)){n=44;break}else t=n}if((n|0)==44)return}function _r(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0,a=0,u=0,s=0;if(e>>>0>127){o=e;t=1;while(1){t=t+1|0;if(o>>>0>16383)o=o>>>7;else break}}else t=1;if(r>>>0>127){a=r;o=1;while(1){o=o+1|0;if(a>>>0>16383)a=a>>>7;else break}}else o=1;if(n>>>0>127){u=n;a=1;while(1){a=a+1|0;if(u>>>0>16383)u=u>>>7;else break}}else a=1;if(i>>>0>127){s=i;u=1;while(1){u=u+1|0;if(s>>>0>16383)s=s>>>7;else break}}else u=1;return e+5+r+n+i+t+o+a+u|0}function lr(e,r,n,t,a,u,s){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,f=0;i[s>>0]=r;f=e+8|0;r=s+2|0;i[s+1>>0]=10;if(a>>>0>127){_=a;while(1){l=r+1|0;i[r>>0]=_|128;s=_>>>7;if(_>>>0>16383){r=l;_=s}else{r=l;break}}}else s=a;l=r+1|0;i[r>>0]=s;o[f>>2]=l;a=l+a|0;f=e+4|0;r=a+1|0;i[a>>0]=18;if(t>>>0>127){_=t;while(1){l=r+1|0;i[r>>0]=_|128;s=_>>>7;if(_>>>0>16383){r=l;_=s}else{r=l;break}}}else s=t;a=r+1|0;i[r>>0]=s;o[f>>2]=a;t=a+t|0;r=t+1|0;i[t>>0]=26;if(n>>>0>127){_=n;while(1){l=r+1|0;i[r>>0]=_|128;s=_>>>7;if(_>>>0>16383){r=l;_=s}else{r=l;break}}}else s=n;l=r+1|0;i[r>>0]=s;o[e>>2]=l;n=l+n|0;l=e+12|0;r=n+1|0;i[n>>0]=34;if(u>>>0>127)_=r;else{t=u;n=r;t=t&255;e=n+1|0;i[n>>0]=t;o[l>>2]=e;return}while(1){r=_+1|0;i[_>>0]=u|128;s=u>>>7;if(u>>>0>16383){_=r;u=s}else break}n=s&255;e=r+1|0;i[r>>0]=n;o[l>>2]=e;return}function fr(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0;_=r+n|0;l=e+20|0;f=e+24|0;c=e+4|0;h=e+8|0;d=e+12|0;m=e+16|0;p=e+28|0;b=e+32|0;o[c>>2]=0;o[c+4>>2]=0;o[c+8>>2]=0;o[c+12>>2]=0;o[c+16>>2]=0;o[c+20>>2]=0;o[c+24>>2]=0;o[c+28>>2]=0;if(!n)return;i[e>>0]=i[r>>0]|0;if((n|0)==1)return;s=_;e=r+1|0;e:while(1){if((i[e>>0]|0)==10){u=e+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[l>>2]=r;o[f>>2]=n;n=r+n|0}else n=e;if((n|0)==(_|0)){n=54;break}if((i[n>>0]|0)==18){u=n+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[d>>2]=r;o[m>>2]=n;n=r+n|0}if((n|0)==(_|0)){n=54;break}if((i[n>>0]|0)==26){u=n+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[c>>2]=r;o[h>>2]=n;n=r+n|0}if((n|0)==(_|0)){n=54;break}if((i[n>>0]|0)==34){u=n+1|0;n=u;while(1){if((n|0)==(_|0)){r=_;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)!=(u|0)){t=r;n=0;do{t=t+-1|0;n=a[t>>0]&127|n<<7}while((t|0)!=(u|0));if(n>>>0>(s-r|0)>>>0){n=54;break}}else n=0;o[p>>2]=r;o[b>>2]=n;n=r+n|0}r:do{if(!((e|0)!=(n|0)|(n|0)==(_|0))){switch(a[e>>0]&7|0){case 0:{n=e;while(1){if((n|0)==(_|0)){e=_;break}e=n+1|0;if((i[n>>0]|0)>-1)break;else n=e}while(1){if((e|0)==(_|0)){n=54;break e}n=e+1|0;if((i[e>>0]|0)>-1)break r;else e=n}}case 2:break;default:{n=54;break e}}while(1){if((e|0)==(_|0)){n=_;break}n=e+1|0;if((i[e>>0]|0)>-1)break;else e=n}e=n;while(1){if((e|0)==(_|0)){r=_;break}r=e+1|0;if((i[e>>0]|0)>-1)break;else e=r}if((r|0)!=(n|0)){t=r;e=0;do{t=t+-1|0;e=a[t>>0]&127|e<<7}while((t|0)!=(n|0));n=e;if(n>>>0>(s-r|0)>>>0){n=54;break e}else n=r+n|0}}}while(0);if((n|0)==(_|0)){n=54;break}else e=n}if((n|0)==54)return}function cr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0;if(e>>>0>127){t=1;while(1){t=t+1|0;if(e>>>0>16383)e=e>>>7;else break}}else t=1;if(r>>>0>127){o=r;e=1;while(1){e=e+1|0;if(o>>>0>16383)o=o>>>7;else break}}else e=1;return r+3+n+i+t+e|0}function hr(e,r,n,t,a){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;var u=0,s=0;i[t>>0]=e;u=t+2|0;i[t+1>>0]=8;if(r>>>0>127)while(1){s=u+1|0;i[u>>0]=r|128;e=r>>>7;if(r>>>0>16383){u=s;r=e}else{u=s;break}}else e=r;i[u>>0]=e;e=u+2|0;i[u+1>>0]=18;if(n>>>0>127){r=n;while(1){s=e+1|0;i[e>>0]=r|128;u=r>>>7;if(r>>>0>16383){e=s;r=u}else{e=s;break}}}else u=n;s=e+1|0;i[e>>0]=u;o[a>>2]=s;return s+n-t|0}function dr(e,r,n,t,u){e=e|0;r=r|0;n=n|0;t=t|0;u=u|0;var s=0,_=0,l=0,f=0,c=0,h=0,d=0;l=t+n|0;f=e+r+(0-l)|0;c=u+4|0;o[c>>2]=0;h=u+12|0;o[h>>2]=0;d=u+16|0;o[d>>2]=0;if(l>>>0>r>>>0|(f|0)==(e|0))return;t=e+1|0;i[u>>0]=i[e>>0]|0;e:do{if((t|0)==(f|0))n=0;else{l=f;n=0;do{if((i[t>>0]|0)==8){s=t+1|0;n=s;while(1){if((n|0)==(f|0)){r=f;break}r=n+1|0;if((i[n>>0]|0)>-1)break;else n=r}if((r|0)==(s|0))n=0;else{e=r;n=0;do{e=e+-1|0;n=a[e>>0]&127|n<<7}while((e|0)!=(s|0))}o[c>>2]=n;n=1}else r=t;if((r|0)==(f|0))break e;if((i[r>>0]|0)==18){_=r+1|0;r=_;while(1){if((r|0)==(f|0)){e=f;break}e=r+1|0;if((i[r>>0]|0)>-1)break;else r=e}if((e|0)!=(_|0)){s=e;r=0;do{s=s+-1|0;r=a[s>>0]&127|r<<7}while((s|0)!=(_|0));if(r>>>0>(l-e|0)>>>0)break e}else r=0;o[h>>2]=e;o[d>>2]=r;r=e+r|0}r:do{if(!((t|0)!=(r|0)|(r|0)==(f|0))){switch(a[t>>0]&7|0){case 0:{while(1){if((t|0)==(f|0)){r=f;break}r=t+1|0;if((i[t>>0]|0)>-1)break;else t=r}while(1){if((r|0)==(f|0))break e;t=r+1|0;if((i[r>>0]|0)>-1)break r;else r=t}}case 2:break;default:break e}while(1){if((t|0)==(f|0)){t=f;break}r=t+1|0;if((i[t>>0]|0)>-1){t=r;break}else t=r}r=t;while(1){if((r|0)==(f|0)){e=f;break}e=r+1|0;if((i[r>>0]|0)>-1)break;else r=e}if((e|0)!=(t|0)){s=e;r=0;do{s=s+-1|0;r=a[s>>0]&127|r<<7}while((s|0)!=(t|0));t=r;if(t>>>0>(l-e|0)>>>0)break e;else t=e+t|0}}else t=r}while(0)}while((t|0)!=(f|0))}}while(0);o[u+8>>2]=n&255;return}function mr(e){e=e|0;Jn(e,648,664);o[e+3216>>2]=0;i[e+3220>>0]=0;return}function pr(e){e=e|0;return 64}function br(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0,l=0,c=0,h=0;h=f;f=f+224|0;_=h+160|0;l=h+96|0;c=h;if(u>>>0<64){o[e+3216>>2]=1;e=-1;f=h;return e|0}else{Cr(a,_);Cr(a+32|0,l);r=r+96|0;i[e+3220>>0]=0;a=e+3221|0;u=r;s=a+32|0;do{i[a>>0]=i[u>>0]|0;a=a+1|0;u=u+1|0}while((a|0)<(s|0));a=e+3253|0;u=_;s=a+32|0;do{i[a>>0]=i[u>>0]|0;a=a+1|0;u=u+1|0}while((a|0)<(s|0));a=e+3285|0;u=t;s=a+32|0;do{i[a>>0]=i[u>>0]|0;a=a+1|0;u=u+1|0}while((a|0)<(s|0));Ir(r,t,c);Ir(_,n,c+32|0);Ir(_,t,c+64|0);Qn(e,c,96,l);Oi(_,64);Oi(l,64);Oi(c,96);e=0;f=h;return e|0}return 0}function wr(e,r,n,t,a){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0;w=f;f=f+208|0;d=w+32|0;m=w;p=w+168|0;b=w+72|0;fr(d,t,a);u=(n|0)!=0;a=o[d+4>>2]|0;s=(a|0)!=0;t=u|s;if(a)t=t&(o[d+8>>2]|0)==32;c=o[d+28>>2]|0;l=o[d+12>>2]|0;h=o[d+20>>2]|0;if(!(t&(c|0)!=0&(l|0)!=0&(o[d+16>>2]|0)==32&(h|0)!=0&(o[d+24>>2]|0)==32)){o[e+3216>>2]=4;e=-1;f=w;return e|0}if(u&s?ao(n,a,32)|0:0){o[e+3216>>2]=6;e=-1;f=w;return e|0}_=e+3221|0;n=_;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));s=e+3253|0;n=s;a=l;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));t=e+3285|0;n=t;a=h;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));d=o[d+32>>2]|0;a=o[e+4>>2]|0;sr(m,c,d,Io[o[o[a>>2]>>2]&1](a)|0);a=o[m+16>>2]|0;if((a|0)!=0?(o[m+20>>2]|0)==32:0){n=p;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));a=li(r,t)|0;if(!a){o[e+3216>>2]=6;a=-1}else{a=a+5|0;Ir(a,_,b);Ir(r+96|0,s,b+32|0);Ir(a,s,b+64|0);Xn(e,b,96,p);Oi(b,96);a=0}}else{o[e+3216>>2]=4;a=-1}e=a;f=w;return e|0}function vr(e){e=e|0;return 32}function kr(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0;s=f;f=f+96|0;u=s;if(n>>>0<32){o[e+3216>>2]=2;u=-1;f=s;return u|0}else{n=u;t=e+3221|0;a=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(a|0));n=u+32|0;t=e+3253|0;a=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(a|0));n=u+64|0;t=e+3285|0;a=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(a|0));qr(u,96,r);u=32;f=s;return u|0}return 0}function gr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0,u=0,s=0,_=0,l=0;l=f;f=f+48|0;_=l;fr(_,n,i);s=(r|0)!=0;t=o[_+4>>2]|0;i=s|(t|0)!=0;u=(t|0)==0;if(!u)i=i&(o[_+8>>2]|0)==32;n=o[_+12>>2]|0;a=o[_+20>>2]|0;if(!(i&(o[_+28>>2]|0)!=0&(n|0)!=0&(o[_+16>>2]|0)==32&(a|0)!=0&(o[_+24>>2]|0)==32)){e=0;f=l;return e|0}if(u)i=1;else i=(ao(t,e+3221|0,32)|0)==0;if(s){if(!i){e=0;f=l;return e|0}if(ao(r,e+3221|0,32)|0){e=0;f=l;return e|0}}else if(!i){e=0;f=l;return e|0}if(ao(n,e+3253|0,32)|0){e=0;f=l;return e|0}e=(ao(a,e+3285|0,32)|0)==0;f=l;return e|0}function yr(e){e=e|0;return a[e+3220>>0]|0|0}function Ar(e,r){e=e|0;r=r|0;r=ti(e,r)|0;if(i[e+3220>>0]|0){e=r;return e|0}e=_r(32,32,32,r)|0;return e|0}function Tr(e){e=e|0;return oi(e)|0}function Mr(e,r,n,t,a,u,s){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,c=0,h=0,d=0;d=f;f=f+16|0;h=d;_=ti(e,n)|0;l=e+3220|0;if(!(i[l>>0]|0))_=_r(32,32,32,_)|0;if(_>>>0>s>>>0){o[e+3216>>2]=2;e=-1;f=d;return e|0}c=ti(e,n)|0;if(!(i[l>>0]|0)){lr(h,3,32,32,32,c,u);u=o[h+8>>2]|0;_=e+3285|0;s=u+32|0;do{i[u>>0]=i[_>>0]|0;u=u+1|0;_=_+1|0}while((u|0)<(s|0));u=o[h>>2]|0;_=e+3221|0;s=u+32|0;do{i[u>>0]=i[_>>0]|0;u=u+1|0;_=_+1|0}while((u|0)<(s|0));u=o[h+4>>2]|0;_=e+3253|0;s=u+32|0;do{i[u>>0]=i[_>>0]|0;u=u+1|0;_=_+1|0}while((u|0)<(s|0));u=o[h+12>>2]|0}u=ai(e,r,n,t,a,u,c)|0;if((u|0)!=-1){e=u;f=d;return e|0}a=e+8|0;o[e+3216>>2]=o[a>>2];o[a>>2]=0;e=-1;f=d;return e|0}function Er(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0;a=f;f=f+48|0;t=a;do{if((r|0)!=1){fr(t,n,i);n=o[t+28>>2]|0;if(n|0){i=o[t+32>>2]|0;break}o[e+3216>>2]=4;e=-1;f=a;return e|0}}while(0);n=ui(e,n,i)|0;if((n|0)!=-1){e=n;f=a;return e|0}t=e+8|0;o[e+3216>>2]=o[t>>2];o[t>>2]=0;e=-1;f=a;return e|0}function Sr(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0;_=f;f=f+48|0;s=_;do{if((r|0)!=1){fr(s,n,t);n=o[s+28>>2]|0;if(n|0){t=o[s+32>>2]|0;break}o[e+3216>>2]=4;e=-1;f=_;return e|0}}while(0);n=si(e,n,t,a,u)|0;if((n|0)==-1){a=e+8|0;o[e+3216>>2]=o[a>>2];o[a>>2]=0;e=-1;f=_;return e|0}else{i[e+3220>>0]=1;e=n;f=_;return e|0}return 0}function xr(e){e=e|0;var r=0;r=(De(e+3221|0)|0)+5|0;r=r+(De(e+3253|0)|0)|0;r=r+(De(e+3285|0)|0)|0;return r+(Zn(e)|0)|0}function Or(e,r){e=e|0;r=r|0;e=Ue(e,1)|0;return $n(Ve(Ve(Ve(ze(e,(i[r+3220>>0]|0)!=0)|0,r+3221|0)|0,r+3253|0)|0,r+3285|0)|0,r)|0}function Rr(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0;a=f;f=f+16|0;i=a;t=Fe(e,r,i)|0;e=o[i>>2]|0;e:do{if((e|0)<1){switch(e|0){case-2147483647:break;default:{i=3;break e}}e=1;i=4}else switch(e|0){case 1:{e=0;i=4;break}default:i=3}}while(0);if((i|0)==3){o[n+3216>>2]=9;n=r;f=a;return n|0}else if((i|0)==4){n=ei(Be(Be(Be(qe(t,r,n+3220|0)|0,r,n+3221|0)|0,r,n+3253|0)|0,r,n+3285|0)|0,r,n,e)|0;f=a;return n|0}return 0}function Cr(e,r){e=e|0;r=r|0;var n=0,t=0,o=0;t=r+32|0;o=t;n=o+32|0;do{i[o>>0]=i[e>>0]|0;o=o+1|0;e=e+1|0}while((o|0)<(n|0));ro(r,t,33122)|0;return}function Ir(e,r,n){e=e|0;r=r|0;n=n|0;ro(n,e+32|0,r)|0;return}function Lr(e,r){e=e|0;r=r|0;Xi(r,r+32|0,e);return}function Pr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;rt(i,r,n,e,e+32|0);return}function Nr(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;return(et(i,r,n,e)|0)!=0|0}function Ur(e){e=e|0;return e+16-(e&15)|0}function Fr(e,r,n,t,o){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0;C=f;f=f+256|0;R=C;O=C+240|0;Zt(e,R,256);S=O;T=S+16|0;do{i[S>>0]=i[r>>0]|0;S=S+1|0;r=r+1|0}while((S|0)<(T|0));if(t>>>0>15){u=O+1|0;m=O+2|0;p=O+3|0;b=O+4|0;w=O+5|0;v=O+6|0;k=O+7|0;g=O+8|0;y=O+9|0;s=O+10|0;_=O+11|0;l=O+12|0;c=O+13|0;h=O+14|0;d=O+15|0;M=t+-16|0;E=M&-16;x=E+16|0;A=o+x|0;e=t;t=n;while(1){i[O>>0]=i[O>>0]^i[t>>0];i[u>>0]=i[u>>0]^i[t+1>>0];i[m>>0]=i[m>>0]^i[t+2>>0];i[p>>0]=i[p>>0]^i[t+3>>0];i[b>>0]=i[b>>0]^i[t+4>>0];i[w>>0]=i[w>>0]^i[t+5>>0];i[v>>0]=i[v>>0]^i[t+6>>0];i[k>>0]=i[k>>0]^i[t+7>>0];i[g>>0]=i[g>>0]^i[t+8>>0];i[y>>0]=i[y>>0]^i[t+9>>0];i[s>>0]=i[s>>0]^i[t+10>>0];i[_>>0]=i[_>>0]^i[t+11>>0];i[l>>0]=i[l>>0]^i[t+12>>0];i[c>>0]=i[c>>0]^i[t+13>>0];i[h>>0]=i[h>>0]^i[t+14>>0];i[d>>0]=i[d>>0]^i[t+15>>0];Xt(O,o,R,256);S=O;r=o;T=S+16|0;do{i[S>>0]=i[r>>0]|0;S=S+1|0;r=r+1|0}while((S|0)<(T|0));e=e+-16|0;if(e>>>0<=15)break;else{t=t+16|0;o=o+16|0}}o=A;r=M-E|0;n=n+x|0}else r=t;if(r){e=0;do{x=O+e|0;i[x>>0]=i[x>>0]^i[n+e>>0];e=e+1|0}while((e|0)!=(r|0));if(r>>>0<16)n=r;else{Xt(O,o,R,256);Oi(R,240);Oi(O,16);f=C;return}}else n=0;e=16-r|0;do{x=O+n|0;i[x>>0]=(a[x>>0]|0)^e;n=n+1|0}while((n|0)!=16);Xt(O,o,R,256);Oi(R,240);Oi(O,16);f=C;return}function zr(e,r,n,t,o){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;var a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0;x=f;f=f+272|0;S=x;M=x+256|0;E=x+240|0;Zt(e,S,256);T=M;A=T+16|0;do{i[T>>0]=i[r>>0]|0;T=T+1|0;r=r+1|0}while((T|0)<(A|0));if(!t){Oi(S,240);Oi(M,16);Oi(E,16);S=t+-1|0;o=o+S|0;o=i[o>>0]|0;o=o&255;S=o>>>0>t>>>0;o=t-o|0;o=S?-1:o;f=x;return o|0}e=M+1|0;h=M+2|0;m=M+3|0;p=M+4|0;b=M+5|0;w=M+6|0;v=M+7|0;k=M+8|0;g=M+9|0;a=M+10|0;u=M+11|0;s=M+12|0;_=M+13|0;l=M+14|0;c=M+15|0;y=0;do{d=n+y|0;T=E;r=d;A=T+16|0;do{i[T>>0]=i[r>>0]|0;T=T+1|0;r=r+1|0}while((T|0)<(A|0));T=o+y|0;eo(d,T,S,256);i[T>>0]=i[T>>0]^i[M>>0];r=T+1|0;i[r>>0]=i[r>>0]^i[e>>0];r=T+2|0;i[r>>0]=i[r>>0]^i[h>>0];r=T+3|0;i[r>>0]=i[r>>0]^i[m>>0];r=T+4|0;i[r>>0]=i[r>>0]^i[p>>0];r=T+5|0;i[r>>0]=i[r>>0]^i[b>>0];r=T+6|0;i[r>>0]=i[r>>0]^i[w>>0];r=T+7|0;i[r>>0]=i[r>>0]^i[v>>0];r=T+8|0;i[r>>0]=i[r>>0]^i[k>>0];r=T+9|0;i[r>>0]=i[r>>0]^i[g>>0];r=T+10|0;i[r>>0]=i[r>>0]^i[a>>0];r=T+11|0;i[r>>0]=i[r>>0]^i[u>>0];r=T+12|0;i[r>>0]=i[r>>0]^i[s>>0];r=T+13|0;i[r>>0]=i[r>>0]^i[_>>0];r=T+14|0;i[r>>0]=i[r>>0]^i[l>>0];T=T+15|0;i[T>>0]=i[T>>0]^i[c>>0];T=M;r=E;A=T+16|0;do{i[T>>0]=i[r>>0]|0;T=T+1|0;r=r+1|0}while((T|0)<(A|0));y=y+16|0}while(y>>>0<t>>>0);Oi(S,240);Oi(M,16);Oi(E,16);S=t+-1|0;o=o+S|0;o=i[o>>0]|0;o=o&255;S=o>>>0>t>>>0;o=t-o|0;o=S?-1:o;f=x;return o|0}function qr(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0;i=f;f=f+112|0;t=i;Wt(t);Yt(t,e,r);Jt(t,n);Oi(t,112);f=i;return}function Hr(e,r,n,t,o){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0;d=f;f=f+400|0;h=d+224|0;l=d+112|0;c=d+336|0;_=d;u=c;s=u+64|0;do{i[u>>0]=0;u=u+1|0}while((u|0)<(s|0));if(r>>>0>64){Wt(h);Yt(h,e,r);Jt(h,c)}else bo(c|0,e|0,r|0)|0;u=h;e=c;s=u+64|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(s|0));e=0;do{s=h+e|0;i[s>>0]=(a[s>>0]|0)^54;e=e+1|0}while((e|0)!=64);Wt(_);Yt(_,h,64);Oi(h,64);Yt(_,n,t);u=h;e=c;s=u+64|0;do{i[u>>0]=i[e>>0]|0;u=u+1|0;e=e+1|0}while((u|0)<(s|0));e=0;do{t=h+e|0;i[t>>0]=(a[t>>0]|0)^92;e=e+1|0}while((e|0)!=64);Jt(_,h+64|0);Wt(l);Yt(l,h,96);Jt(l,o);Oi(l,112);Oi(h,96);Oi(c,64);Oi(_,112);f=d;return}function jr(e,r,n,t,o,u,s,_){e=e|0;r=r|0;n=n|0;t=t|0;o=o|0;u=u|0;s=s|0;_=_|0;var l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0;g=f;f=f+432|0;p=g+112|0;v=g+328|0;m=g;b=g+264|0;k=g+232|0;w=g+224|0;i[w>>0]=1;h=(n|0)==0;l=h?32:t;t=h?36088:n;h=b;d=h+64|0;do{i[h>>0]=0;h=h+1|0}while((h|0)<(d|0));if(l>>>0>64){Wt(p);Yt(p,t,l);Jt(p,b)}else bo(b|0,t|0,l|0)|0;h=p;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=p+t|0;i[d>>0]=(a[d>>0]|0)^54;t=t+1|0}while((t|0)!=64);Wt(m);Yt(m,p,64);Oi(p,64);Yt(m,e,r);h=v;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=v+t|0;i[d>>0]=(a[d>>0]|0)^92;t=t+1|0}while((t|0)!=64);c=v+64|0;Jt(m,c);Wt(p);Yt(p,v,96);Jt(p,k);Oi(p,112);Oi(v,96);h=b+32|0;d=h+32|0;do{i[h>>0]=0;h=h+1|0}while((h|0)<(d|0));h=b;t=k;d=h+32|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));h=p;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=p+t|0;i[d>>0]=(a[d>>0]|0)^54;t=t+1|0}while((t|0)!=64);Wt(m);Yt(m,p,64);Oi(p,64);Yt(m,o,u);Yt(m,w,1);h=v;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=v+t|0;i[d>>0]=(a[d>>0]|0)^92;t=t+1|0}while((t|0)!=64);Jt(m,c);Wt(p);Yt(p,v,96);Jt(p,k);Oi(p,112);Oi(v,96);if(_>>>0<=32){bo(s|0,k|0,_|0)|0;Oi(m,112);Oi(b,64);Oi(k,32);f=g;return}l=_+-33&-32;e=l+32|0;n=s;r=_;do{h=n;t=k;d=h+32|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));n=n+32|0;i[w>>0]=(i[w>>0]|0)+1<<24>>24;h=p;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=p+t|0;i[d>>0]=(a[d>>0]|0)^54;t=t+1|0}while((t|0)!=64);Wt(m);Yt(m,p,64);Oi(p,64);Yt(m,k,32);Yt(m,o,u);Yt(m,w,1);h=v;t=b;d=h+64|0;do{i[h>>0]=i[t>>0]|0;h=h+1|0;t=t+1|0}while((h|0)<(d|0));t=0;do{d=v+t|0;i[d>>0]=(a[d>>0]|0)^92;t=t+1|0}while((t|0)!=64);r=r+-32|0;Jt(m,c);Wt(p);Yt(p,v,96);Jt(p,k);Oi(p,112);Oi(v,96)}while(r>>>0>32);s=s+e|0;_=_+-32-l|0;bo(s|0,k|0,_|0)|0;Oi(m,112);Oi(b,64);Oi(k,32);f=g;return}function Dr(e,r,n){e=e|0;r=r|0;n=n|0;if(e|0)i[e>>0]=2;if(r|0)i[r>>0]=2;if(!n)return;i[n>>0]=1;return}function Vr(){return-1}function Br(e){e=e|0;return st(o[e+7368>>2]|0)|0}function Gr(e){e=e|0;return st(o[e+3216>>2]|0)|0}function Kr(e){e=e|0;return st(o[e>>2]|0)|0}function Wr(){return 7372}function Yr(){return 3320}function Jr(){return 4}function Xr(e){e=e|0;Oi(e,7372);_i(e);return e|0}function Qr(e){e=e|0;Oi(e,3320);mr(e);return e|0}function Zr(e){e=e|0;Oi(e,4);Gn(e);return e|0}function $r(e){e=e|0;Oi(e,7372);_i(e);return 7372}function en(e){e=e|0;Oi(e,3320);mr(e);return 3320}function rn(e){e=e|0;Oi(e,4);Gn(e);return 4}function nn(e){e=e|0;return _t(Ti(e)|0)|0}function tn(e){e=e|0;return _t(xr(e)|0)|0}function on(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=Ti(e)|0;if((_t(a)|0)>>>0>t>>>0){o[e+7368>>2]=2;t=-1;return t|0}else{Mi(lt(i,a)|0,e)|0;t=ft(r,n,i,a)|0;return t|0}return 0}function an(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=xr(e)|0;if((_t(a)|0)>>>0>t>>>0){o[e+3216>>2]=2;e=-1;return e|0}else{Or(lt(i,a)|0,e)|0;e=ft(r,n,i,a)|0;return e|0}return 0}function un(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=e+7368|0;r=ct(r,n,i,t,a)|0;if((r|0)==-1){t=-1;return t|0}n=i+r|0;if((n|0)==(Ei(i,n+1|0,e)|0))return t|0;if(o[a>>2]|0){t=-1;return t|0}o[a>>2]=10;t=-1;return t|0}function sn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=e+3216|0;r=ct(r,n,i,t,a)|0;if((r|0)==-1){e=-1;return e|0}n=i+r|0;if((n|0)==(Rr(i,n+1|0,e)|0)){e=t;return e|0}if(o[a>>2]|0){e=-1;return e|0}o[a>>2]=10;e=-1;return e|0}function _n(e){e=e|0;return ci(e)|0}function ln(e,r,n){e=e|0;r=r|0;n=n|0;e=hi(e,r,n)|0;Oi(r,n);return e|0}function fn(e){e=e|0;return di(e)|0}function cn(e,r,n){e=e|0;r=r|0;n=n|0;return mi(e,r,n)|0}function hn(e){e=e|0;return xe(pi(e)|0)|0}function dn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0;a=pi(e)|0;if((xe(a)|0)>>>0>t>>>0){o[e+7368>>2]=2;t=-1;return t|0}else{u=0-a|0;bi(e,r,n,i+(xe(a)|0)+u|0,a)|0;t=xe(a)|0;Oe(i+t+u|0,a,i)|0;return t|0}return 0}function mn(e){e=e|0;return wi(e)|0}function pn(e,r,n){e=e|0;r=r|0;n=n|0;return vi(e,r,n)|0}function bn(e){e=e|0;return ki(e)|0}function wn(e){e=e|0;return gi(e)|0}function vn(e,r){e=e|0;r=r|0;return yi(e,r)|0}function kn(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;r=Ai(e,r,n,i)|0;Oi(n,i);return r|0}function gn(e){e=e|0;return pr(e)|0}function yn(e,r,n,i,t,a,u,s){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,c=0;c=f;f=f+64|0;_=c+32|0;l=c;if((Re(i)|0)==32?(Re(a)|0)==32:0){Ce(n,i,_)|0;Ce(t,a,l)|0;a=br(e,r,_,l,u,s)|0;Oi(u,s);f=c;return a|0}o[e+3216>>2]=7;a=-1;f=c;return a|0}function An(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=Re(i)|0;if((t|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(n,i,n)|0;e=wr(e,r,0,n,t)|0;return e|0}return 0}function Tn(e,r,n,i,t,a){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;var u=0,s=0;s=f;f=f+32|0;u=s;if((Re(i)|0)!=32){o[e+3216>>2]=7;e=-1;f=s;return e|0}Ce(n,i,u)|0;n=Re(a)|0;if((n|0)==-1){o[e+3216>>2]=7;n=-1}else{Ce(t,a,t)|0;n=wr(e,r,u,t,n)|0}e=n;f=s;return e|0}function Mn(e){e=e|0;return xe(vr(e)|0)|0}function En(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;i=vr(e)|0;if((xe(i)|0)>>>0>n>>>0){o[e+3216>>2]=2;e=-1;return e|0}n=0-i|0;if((kr(e,r+(xe(i)|0)+n|0,i)|0)==-1){e=-1;return e|0}e=xe(i)|0;Oe(r+e+n|0,i,r)|0;return e|0}function Sn(e){e=e|0;return a[e+3220>>0]|0|0}function xn(e,r,n){e=e|0;r=r|0;n=n|0;var i=0;i=Re(n)|0;if((i|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(r,n,r)|0;e=(gr(e,0,r,i)|0)&1;return e|0}return 0}function On(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0;u=f;f=f+32|0;a=u;if((Re(n)|0)!=32){o[e+3216>>2]=7;e=-1;f=u;return e|0}Ce(r,n,a)|0;r=Re(t)|0;if((r|0)==-1){o[e+3216>>2]=7;r=-1}else{Ce(i,t,i)|0;r=(gr(e,a,i,r)|0)&1}e=r;f=u;return e|0}function Rn(e,r){e=e|0;r=r|0;r=fi(e,r+3285|0)|0;if((r|0)!=-1)return r|0;o[e+7368>>2]=6;return r|0}function Cn(e){e=e|0;return yr(e)|0}function In(e){e=e|0;return Tr(e)|0}function Ln(e,r){e=e|0;r=r|0;return xe(Ar(e,r)|0)|0}function Pn(e,r,n,i,t,a,u){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;u=u|0;var s=0;s=Ar(e,n)|0;if((xe(s)|0)>>>0>u>>>0){o[e+3216>>2]=2;e=-1;return e|0}u=0-s|0;e=Mr(e,r,n,i,t,a+(xe(s)|0)+u|0,s)|0;Oi(i,t);if((e|0)==-1){e=-1;return e|0}e=xe(s)|0;Oe(a+e+u|0,s,a)|0;return e|0}function Nn(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=Re(i)|0;if((t|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(n,i,n)|0;e=Er(e,r,n,t)|0;return e|0}return 0}function Un(e,r,n,i,t,a){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;var u=0;u=Re(i)|0;if((u|0)==-1){o[e+3216>>2]=7;e=-1;return e|0}else{Ce(n,i,n)|0;e=Sr(e,r,n,u,t,a)|0;return e|0}return 0}function Fn(e){e=e|0;return xe(Kn(e)|0)|0}function zn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=Kn(e)|0;if((xe(a)|0)>>>0>t>>>0){o[e>>2]=2;e=-1;return e|0}t=0-a|0;if((Wn(e,r,n,i+(xe(a)|0)+t|0,a)|0)==-1){e=-1;return e|0}e=xe(a)|0;Oe(i+e+t|0,a,i)|0;return e|0}function qn(e,r,n,i,t,a,u){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;u=u|0;var s=0,_=0;_=f;f=f+32|0;s=_;if((Re(n)|0)!=32){o[e>>2]=7;s=-1;f=_;return s|0}Ce(r,n,s)|0;r=Re(u)|0;if((r|0)==-1){o[e>>2]=7;r=-1}else{Ce(a,u,a)|0;r=Yn(e,s,i,t,a,r)|0}s=r;f=_;return s|0}function Hn(e){e=e|0;return 8}function jn(e,r){e=e|0;r=r|0;return Ur(r)|0}function Dn(e,r,n,t,a,u,s,_,l){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;_=_|0;l=l|0;var c=0,h=0,d=0,m=0;m=f;f=f+192|0;c=m+112|0;h=m+32|0;d=m;if((Ur(a)|0)>>>0<s>>>0){a=-1;f=m;return a|0}jr(r,n,0,0,o[e+4>>2]|0,o[e+8>>2]|0,c,80);s=h;r=c;n=s+32|0;do{i[s>>0]=i[r>>0]|0;s=s+1|0;r=r+1|0}while((s|0)<(n|0));e=h+32|0;s=e;r=c+32|0;n=s+32|0;do{i[s>>0]=i[r>>0]|0;s=s+1|0;r=r+1|0}while((s|0)<(n|0));s=h+64|0;r=c+64|0;n=s+16|0;do{i[s>>0]=i[r>>0]|0;s=s+1|0;r=r+1|0}while((s|0)<(n|0));Oi(c,80);Fr(h,h+64|0,t,a,u);Hr(e,32,_,l+-8|0,d);t=d;d=o[t>>2]|0;t=o[t+4>>2]|0;a=_+l+-8|0;_=a;i[_>>0]=d;i[_+1>>0]=d>>8;i[_+2>>0]=d>>16;i[_+3>>0]=d>>24;a=a+4|0;i[a>>0]=t;i[a+1>>0]=t>>8;i[a+2>>0]=t>>16;i[a+3>>0]=t>>24;Oi(h,80);a=l;f=m;return a|0}function Vn(e,r){e=e|0;r=r|0;return r|0}function Bn(e,r,n,t,a,u,s,_,l){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;_=_|0;l=l|0;var c=0,h=0,d=0,m=0;m=f;f=f+192|0;c=m+112|0;h=m+32|0;d=m;jr(r,n,0,0,o[e+4>>2]|0,o[e+8>>2]|0,c,80);e=h;r=c;n=e+32|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));l=h+32|0;e=l;r=c+32|0;n=e+32|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));e=h+64|0;r=c+64|0;n=e+16|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));Oi(c,80);Hr(l,32,t,a+-8|0,d);if(Ri(t+a+-8|0,d,8)|0){_=zr(h,h+64|0,u,s,_)|0;Oi(h,80);f=m;return _|0}else{Oi(h,80);_=-1;f=m;return _|0}return 0}function Gn(e){e=e|0;o[e>>2]=0;return}function Kn(e){e=e|0;return 32}function Wn(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;if(t>>>0<32){o[e>>2]=2;e=-1;return e|0}else{qr(r,n,i);e=32;return e|0}return 0}function Yn(e,r,n,i,t,a){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;a=a|0;if(a>>>0<64){o[e>>2]=5;e=-1;return e|0}if(Nr(r,n,i,t)|0){e=0;return e|0}o[e>>2]=5;e=-1;return e|0}function Jn(e,r,n){e=e|0;r=r|0;n=n|0;o[e>>2]=r;o[e+4>>2]=n;o[e+8>>2]=0;o[e+44>>2]=e+48;o[e+148>>2]=e+152;o[e+492>>2]=e+496;return}function Xn(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,c=0;c=f;f=f+64|0;l=c;_=o[e>>2]|0;jr(r,n,0,0,o[_>>2]|0,o[_+4>>2]|0,l,64);_=e+152|0;n=e+148|0;r=o[n>>2]|0;if((r|0)==(e+492|0))s=(r|0)==(_|0)?e+84|0:_;else{r=r+68|0;o[n>>2]=r;s=_}r=r+-68|0;if((r|0)!=(s|0))do{n=r;r=r+-68|0;a=r;u=n+68|0;do{o[n>>2]=o[a>>2];n=n+4|0;a=a+4|0}while((n|0)<(u|0))}while((r|0)!=(s|0));o[e+184>>2]=0;n=e+12|0;a=l;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=e+188|0;a=l+32|0;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=_;a=t;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));Oi(l,64);f=c;return}function Qn(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,c=0;c=f;f=f+64|0;l=c;_=o[e>>2]|0;jr(r,n,0,0,o[_>>2]|0,o[_+4>>2]|0,l,64);_=e+48|0;n=e+44|0;r=o[n>>2]|0;if((r|0)==(e+148|0))s=(r|0)==(_|0)?e+-52|0:_;else{r=r+100|0;o[n>>2]=r;s=_}r=r+-100|0;if((r|0)!=(s|0))do{n=r;r=r+-100|0;a=r;u=n+100|0;do{o[n>>2]=o[a>>2];n=n+4|0;a=a+4|0}while((n|0)<(u|0))}while((r|0)!=(s|0));o[e+112>>2]=0;n=e+12|0;a=l;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=e+116|0;a=l+32|0;u=n+32|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));n=_;a=t;u=n+64|0;do{i[n>>0]=i[a>>0]|0;n=n+1|0;a=a+1|0}while((n|0)<(u|0));Oi(l,64);f=c;return}function Zn(e){e=e|0;var r=0,n=0,i=0,t=0;r=e+48|0;i=o[e+44>>2]|0;if((r|0)==(i|0))t=36;else{n=r;r=4;do{r=r+36+(Ge(n)|0)|0;n=n+100|0}while((n|0)!=(i|0));t=r+32|0}r=e+152|0;i=o[e+148>>2]|0;if((r|0)==(i|0))r=4;else{n=r;r=4;do{r=r+36+(De(n)|0)|0;n=n+68|0}while((n|0)!=(i|0))}t=t+r|0;r=e+496|0;i=o[e+492>>2]|0;if((r|0)==(i|0)){e=4;e=t+e|0;return e|0}else{n=r;r=4}do{r=r+36+(De(n)|0)|0;n=n+68|0}while((n|0)!=(i|0));e=t+r|0;return e|0}function $n(e,r){e=e|0;r=r|0;var n=0,i=0;e=He(e,r+12|0,32)|0;i=r+44|0;n=r+48|0;e=Ue(e,((o[i>>2]|0)-n|0)/100|0)|0;i=o[i>>2]|0;if((n|0)!=(i|0))do{e=He(Ke(e,n)|0,n+68|0,32)|0;e=Ue(e,o[n+64>>2]|0)|0;n=n+100|0}while((n|0)!=(i|0));i=r+148|0;n=r+152|0;e=Ue(e,((o[i>>2]|0)-n|0)/68|0)|0;i=o[i>>2]|0;if((n|0)!=(i|0))do{e=He(Ve(e,n)|0,n+36|0,32)|0;e=Ue(e,o[n+32>>2]|0)|0;n=n+68|0}while((n|0)!=(i|0));i=r+492|0;n=r+496|0;e=Ue(e,((o[i>>2]|0)-n|0)/68|0)|0;i=o[i>>2]|0;if((n|0)==(i|0)){r=e;return r|0}do{e=He(Ve(e,n)|0,n+36|0,32)|0;e=Ue(e,o[n+32>>2]|0)|0;n=n+68|0}while((n|0)!=(i|0));return e|0}function ei(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0;t=f;f=f+16|0;e=ii(ni(ri(je(e,r,n+12|0,32)|0,r,n+44|0)|0,r,n+148|0)|0,r,n+492|0)|0;if(!i){i=e;f=t;return i|0}i=Fe(e,r,t)|0;f=t;return i|0}function ri(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+104|0;l=n+4|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+100|0;o[n>>2]=t}t=t+-100|0;if((t|0)!=(i|0))do{a=t;t=t+-100|0;u=t;s=a+100|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=Fe(je(We(e,r,i)|0,r,i+68|0,32)|0,r,i+64|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function ni(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+344|0;l=n+276|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+68|0;o[n>>2]=t}t=t+-68|0;if((t|0)!=(i|0))do{a=t;t=t+-68|0;u=t;s=a+68|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=Fe(je(Be(e,r,i)|0,r,i+36|0,32)|0,r,i+32|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function ii(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+2724|0;l=n+2656|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+68|0;o[n>>2]=t}t=t+-68|0;if((t|0)!=(i|0))do{a=t;t=t+-68|0;u=t;s=a+68|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=Fe(je(Be(e,r,i)|0,r,i+36|0,32)|0,r,i+32|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function ti(e,r){e=e|0;r=r|0;var n=0,i=0;if((o[e+44>>2]|0)==(e+48|0))n=0;else n=o[e+112>>2]|0;e=e+4|0;i=o[e>>2]|0;r=Po[o[(o[i>>2]|0)+4>>2]&3](i,r)|0;e=o[e>>2]|0;return ar(n,32,r,Io[o[o[e>>2]>>2]&1](e)|0)|0}function oi(e){e=e|0;return((o[e+44>>2]|0)==(e+48|0)?32:0)|0}function ai(e,r,n,t,a,u,s){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;s=s|0;var _=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0;b=f;f=f+112|0;p=b+64|0;m=b;l=e+44|0;h=e+48|0;if((o[l>>2]|0)==(h|0))_=0;else _=o[e+112>>2]|0;d=e+4|0;w=o[d>>2]|0;w=Po[o[(o[w>>2]|0)+4>>2]&3](w,n)|0;c=o[d>>2]|0;c=ar(_,32,w,Io[o[o[c>>2]>>2]&1](c)|0)|0;_=(o[l>>2]|0)==(h|0);if((_?32:0)>>>0>a>>>0){o[e+8>>2]=1;w=-1;f=b;return w|0}if(c>>>0>s>>>0){o[e+8>>2]=2;w=-1;f=b;return w|0}if(_){o[l>>2]=e+148;Cr(t,h);t=o[e>>2]|0;Ir(h,e+152|0,p);l=e+12|0;jr(p,32,l,32,o[t+8>>2]|0,o[t+12>>2]|0,m,64);t=m;a=l+32|0;do{i[l>>0]=i[t>>0]|0;l=l+1|0;t=t+1|0}while((l|0)<(a|0));_=e+116|0;l=_;t=m+32|0;a=l+32|0;do{i[l>>0]=i[t>>0]|0;l=l+1|0;t=t+1|0}while((l|0)<(a|0));l=e+112|0;o[l>>2]=0;Oi(m,64);Oi(p,32)}else{l=e+112|0;_=e+116|0}s=p+4|0;Hr(_,32,33154,1,s);o[p>>2]=o[l>>2];Hr(_,32,33155,1,_);o[l>>2]=(o[l>>2]|0)+1;_=o[d>>2]|0;_=Po[o[(o[_>>2]|0)+4>>2]&3](_,n)|0;ur(m,3,o[p>>2]|0,32,_,u);l=o[m>>2]|0;t=h;a=l+32|0;do{i[l>>0]=i[t>>0]|0;l=l+1|0;t=t+1|0}while((l|0)<(a|0));w=o[d>>2]|0;Lo[o[(o[w>>2]|0)+8>>2]&3](w,s,32,r,n,o[m+4>>2]|0,_,u,c)|0;Oi(p,36);w=c;f=b;return w|0}function ui(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0;a=f;f=f+32|0;t=a;i=e+4|0;u=o[i>>2]|0;sr(t,r,n,Io[o[o[u>>2]>>2]&1](u)|0);if(!(o[t+24>>2]|0)){o[e+8>>2]=4;u=-1;f=a;return u|0}else{u=o[i>>2]|0;u=Po[o[(o[u>>2]|0)+12>>2]&3](u,o[t+28>>2]|0)|0;f=a;return u|0}return 0}function si(e,r,n,a,u){e=e|0;r=r|0;n=n|0;a=a|0;u=u|0;var s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0;O=f;f=f+240|0;E=O+168|0;M=O+104|0;m=O+208|0;d=O+32|0;S=O;g=e+4|0;A=o[g>>2]|0;sr(S,r,n,Io[o[o[A>>2]>>2]&1](A)|0);r=t[S>>1]|0;if((r&255)<<24>>24!=3){o[e+8>>2]=3;e=-1;f=O;return e|0}if(((r&65535)>=256?(T=S+16|0,o[T>>2]|0):0)?(y=S+24|0,o[y>>2]|0):0){A=o[g>>2]|0;k=S+28|0;if((Po[o[(o[A>>2]|0)+12>>2]&3](A,o[k>>2]|0)|0)>>>0>u>>>0){o[e+8>>2]=2;e=-1;f=O;return e|0}if((o[S+20>>2]|0)!=32){o[e+8>>2]=4;e=-1;f=O;return e|0}n=e+152|0;A=e+148|0;_=o[A>>2]|0;e:do{if((n|0)!=(_|0)){l=o[T>>2]|0;c=n;r=0;do{p=(ao(c,l,32)|0)==0;r=p?c:r;c=c+68|0}while(!(p|(c|0)==(_|0)));c=r;l=(c|0)!=0;if(l){_=c+32|0;r=o[_>>2]|0;p=S+4|0;d=o[p>>2]|0;if(d>>>0>=r>>>0){if((d-r|0)>>>0>2e3)break;v=E;b=_;w=v+36|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0));s=E+4|0;if((o[E>>2]|0)>>>0<d>>>0)do{Hr(s,32,33155,1,s);x=(o[E>>2]|0)+1|0;o[E>>2]=x}while(x>>>0<(o[p>>2]|0)>>>0);x=M+4|0;Hr(s,32,33154,1,x);o[M>>2]=o[E>>2];w=o[g>>2]|0;x=Lo[o[(o[w>>2]|0)+16>>2]&3](w,x,32,o[S+8>>2]|0,o[S+12>>2]|0,o[y>>2]|0,o[k>>2]|0,a,u)|0;Oi(E,36);w=l;v=c;b=37;break}r=e+496|0;m=e+492|0;l=o[m>>2]|0;if((r|0)!=(l|0)){c=S+8|0;h=S+12|0;_=d;while(1){if(((_|0)==(o[r+32>>2]|0)?(ao(r,o[T>>2]|0,32)|0)==0:0)?(s=o[g>>2]|0,s=Lo[o[(o[s>>2]|0)+16>>2]&3](s,r+36|0,32,o[c>>2]|0,o[h>>2]|0,o[y>>2]|0,o[k>>2]|0,a,u)|0,(s|0)!=-1):0){n=r;break}r=r+68|0;if((r|0)==(l|0))break e;_=o[p>>2]|0}Oi(n,68);e=(o[m>>2]|0)+-68|0;o[m>>2]=e;if((e|0)==(r|0)){e=s;f=O;return e|0}do{v=r;r=r+68|0;b=r;w=v+68|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((r|0)!=(o[m>>2]|0));f=O;return s|0}}else b=15}else b=15}while(0);if((b|0)==15){s=e+48|0;if((o[e+44>>2]|0)!=(s|0)?(h=S+4|0,(o[h>>2]|0)>>>0<=2e3):0){v=d;b=o[T>>2]|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));v=o[e>>2]|0;r=d+32|0;Ir(s,d,E);jr(E,32,e+12|0,32,o[v+8>>2]|0,o[v+12>>2]|0,M,64);v=m;b=M;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));v=d+36|0;b=M+32|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));o[r>>2]=0;Oi(M,64);Oi(E,32);_=o[h>>2]|0;x=o[r>>2]|0;if(_>>>0<x>>>0|(_-x|0)>>>0>2e3)s=-1;else{v=E;b=r;w=v+36|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0));s=E+4|0;if((o[E>>2]|0)>>>0<_>>>0)do{Hr(s,32,33155,1,s);x=(o[E>>2]|0)+1|0;o[E>>2]=x}while(x>>>0<(o[h>>2]|0)>>>0);x=M+4|0;Hr(s,32,33154,1,x);o[M>>2]=o[E>>2];s=o[g>>2]|0;s=Lo[o[(o[s>>2]|0)+16>>2]&3](s,x,32,o[S+8>>2]|0,o[S+12>>2]|0,o[y>>2]|0,o[k>>2]|0,a,u)|0;Oi(E,36)}Oi(m,32);Oi(d,68)}else s=-1;w=0;v=0;x=s;b=37}if((b|0)==37?(x|0)!=-1:0){if(!w){s=o[A>>2]|0;if((s|0)==(e+492|0))n=(s|0)==(n|0)?e+84|0:n;else{s=s+68|0;o[A>>2]=s}s=s+-68|0;if((s|0)!=(n|0))do{v=s;s=s+-68|0;b=s;w=v+68|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((s|0)!=(n|0));v=n;b=o[T>>2]|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));s=e+48|0;b=o[e>>2]|0;Ir(s,n,E);v=e+12|0;jr(E,32,v,32,o[b+8>>2]|0,o[b+12>>2]|0,M,64);b=M;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));v=n+36|0;b=M+32|0;w=v+32|0;do{i[v>>0]=i[b>>0]|0;v=v+1|0;b=b+1|0}while((v|0)<(w|0));o[n+32>>2]=0;Oi(M,64);Oi(E,32);Oi(s,100);r=e+44|0;E=(o[r>>2]|0)+-100|0;o[r>>2]=E;if((E|0)!=(s|0))do{v=s;s=s+100|0;b=s;w=v+100|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((s|0)!=(o[r>>2]|0))}else n=v;p=n+32|0;l=S+4|0;if((o[p>>2]|0)>>>0<(o[l>>2]|0)>>>0){c=e+496|0;h=e+492|0;d=e+3216|0;s=n+36|0;m=e+532|0;_=e+528|0;do{r=o[h>>2]|0;if((r|0)==(d|0))r=d;else{r=r+68|0;o[h>>2]=r}r=r+-68|0;if((r|0)!=(c|0))do{v=r;r=r+-68|0;b=r;w=v+68|0;do{o[v>>2]=o[b>>2];v=v+4|0;b=b+4|0}while((v|0)<(w|0))}while((r|0)!=(c|0));Hr(s,32,33154,1,m);o[_>>2]=o[p>>2];o[c>>2]=o[n>>2];o[c+4>>2]=o[n+4>>2];o[c+8>>2]=o[n+8>>2];o[c+12>>2]=o[n+12>>2];o[c+16>>2]=o[n+16>>2];o[c+20>>2]=o[n+20>>2];o[c+24>>2]=o[n+24>>2];o[c+28>>2]=o[n+28>>2];Hr(s,32,33155,1,s);e=(o[p>>2]|0)+1|0;o[p>>2]=e}while(e>>>0<(o[l>>2]|0)>>>0)}else s=n+36|0;Hr(s,32,33155,1,s);o[p>>2]=(o[p>>2]|0)+1;e=x;f=O;return e|0}o[e+8>>2]=5;e=-1;f=O;return e|0}o[e+8>>2]=4;e=-1;f=O;return e|0}function _i(e){e=e|0;o[e+160>>2]=e+164;o[e+7364>>2]=0;o[e+7368>>2]=0;return}function li(e,r){e=e|0;r=r|0;var n=0;n=e+164|0;e=o[e+160>>2]|0;if((n|0)==(e|0)){r=0;return r|0}while(1){if(Ri(n+5|0,r,32)|0){e=5;break}n=n+72|0;if((n|0)==(e|0)){n=0;e=5;break}}if((e|0)==5)return n|0;return 0}function fi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0;n=e+164|0;a=e+160|0;if((n|0)==(o[a>>2]|0)){a=-1;return a|0}while(1){if(Ri(n+5|0,r,32)|0){e=n;break}n=n+72|0;if((n|0)==(o[a>>2]|0)){n=-1;i=7;break}}if((i|0)==7)return n|0;n=o[e>>2]|0;t=(o[a>>2]|0)+-72|0;o[a>>2]=t;if((t|0)==(e|0)){a=n;return a|0}do{r=e;e=e+72|0;i=e;t=r+72|0;do{o[r>>2]=o[i>>2];r=r+4|0;i=i+4|0}while((r|0)<(t|0))}while((e|0)!=(o[a>>2]|0));return n|0}function ci(e){e=e|0;return 64}function hi(e,r,n){e=e|0;r=r|0;n=n|0;if(n>>>0<64){o[e+7368>>2]=1;e=-1;return e|0}else{Lr(r,e);Cr(r+32|0,e+96|0);e=0;return e|0}return 0}function di(e){e=e|0;e=xe(32)|0;return e+30+(xe(32)|0)|0}function mi(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0;u=xe(32)|0;if((u+30+(xe(32)|0)|0)>>>0>n>>>0){o[e+7368>>2]=2;e=-1;return e|0}else{i[r>>0]=123;t=r+1|0;a=33156;u=t+13|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));i[r+14>>0]=34;n=Oe(e+96|0,32,r+15|0)|0;i[n>>0]=34;i[n+1>>0]=44;t=n+2|0;a=33170;u=t+10|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));i[n+12>>0]=34;e=Oe(e,32,n+13|0)|0;i[e>>0]=34;i[e+1>>0]=125;e=e+2-r|0;return e|0}return 0}function pi(e){e=e|0;return 64}function bi(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;if(t>>>0<64){o[e+7368>>2]=2;e=-1;return e|0}else{Pr(e,r,n,i);e=64;return e|0}return 0}function wi(e){e=e|0;var r=0,n=0,t=0,a=0;r=e+164|0;t=o[e+160>>2]|0;if((r|0)!=(t|0)){n=1;e=0;do{if(!(i[r+4>>0]|0)){a=xe(4)|0;n=0;e=e+6+a+(xe(32)|0)|0}r=r+72|0}while((r|0)!=(t|0));if(!n){t=16;a=e;a=t+a|0;return a|0}}else e=0;t=17;a=e;a=t+a|0;return a|0}function vi(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0;h=f;l=e+164|0;_=e+160|0;u=o[_>>2]|0;if((l|0)!=(u|0)){s=l;a=1;t=0;do{if(!(i[s+4>>0]|0)){d=xe(4)|0;a=0;t=t+6+d+(xe(32)|0)|0}s=s+72|0}while((s|0)!=(u|0));if(a)c=3;else a=16}else{t=0;c=3}if((c|0)==3)a=17;if((a+t|0)>>>0>n>>>0){o[e+7368>>2]=2;d=-1;f=h;return d|0}i[r>>0]=123;t=r+1|0;a=33156;u=t+13|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));t=r+14|0;s=o[_>>2]|0;if((l|0)!=(s|0)){u=l;a=123;do{if(!(i[u+4>>0]|0)){i[t>>0]=a;i[t+1>>0]=34;a=ce()|0;d=f;f=f+16|0;Ue(d,o[u>>2]|0)|0;t=Oe(d,4,t+2|0)|0;i[t>>0]=34;i[t+1>>0]=58;i[t+2>>0]=34;t=Oe(u+5|0,32,t+3|0)|0;i[t>>0]=34;pe(a|0);t=t+1|0;a=44}u=u+72|0}while((u|0)!=(s|0));if(a<<24>>24!=44)c=14}else{a=123;c=14}if((c|0)==14){i[t>>0]=a;t=t+1|0}i[t>>0]=125;i[t+1>>0]=125;d=t+2-r|0;f=h;return d|0}function ki(e){e=e|0;var r=0,n=0,t=0;r=e+164|0;t=o[e+160>>2]|0;if((r|0)==(t|0)){t=0;return t|0}else e=0;do{n=r+4|0;if(!(i[n>>0]|0)){i[n>>0]=1;e=e+1|0}r=r+72|0}while((r|0)!=(t|0));return e|0}function gi(e){e=e|0;return 100}function yi(e,r){e=e|0;r=r|0;return r<<5|0}function Ai(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0;if(r<<5>>>0>t>>>0){o[e+7368>>2]=1;d=-1;return d|0}if(!r){d=0;return d|0}l=e+164|0;f=e+160|0;c=e+7364|0;h=e+7364|0;d=e+168|0;_=e+169|0;s=0;while(1){t=o[f>>2]|0;if((t|0)==(c|0))t=c;else{t=t+72|0;o[f>>2]=t}t=t+-72|0;if((t|0)!=(l|0))do{e=t;t=t+-72|0;a=t;u=e+72|0;do{o[e>>2]=o[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(u|0))}while((t|0)!=(l|0));u=(o[h>>2]|0)+1|0;o[h>>2]=u;o[l>>2]=u;i[d>>0]=0;Cr(n,_);s=s+1|0;if((s|0)==(r|0))break;else n=n+32|0}return r|0}function Ti(e){e=e|0;var r=0,n=0,i=0,t=0;i=Qe(e)|0;t=Ge(e+96|0)|0;r=e+164|0;n=o[e+160>>2]|0;if((r|0)==(n|0)){n=4;i=i+8|0;t=i+t|0;t=t+n|0;return t|0}else e=4;do{e=e+5+(Ge(r+5|0)|0)|0;r=r+72|0}while((r|0)!=(n|0));i=i+8|0;t=i+t|0;t=t+e|0;return t|0}function Mi(e,r){e=e|0;r=r|0;var n=0,t=0;e=Ke(Ze(Ue(e,2)|0,r)|0,r+96|0)|0;t=r+160|0;n=r+164|0;e=Ue(e,((o[t>>2]|0)-n|0)/72|0)|0;t=o[t>>2]|0;if((n|0)==(t|0)){t=e;r=r+7364|0;r=o[r>>2]|0;r=Ue(t,r)|0;return r|0}do{e=Ue(e,o[n>>2]|0)|0;e=Ke(ze(e,(i[n+4>>0]|0)!=0)|0,n+5|0)|0;n=n+72|0}while((n|0)!=(t|0));r=r+7364|0;r=o[r>>2]|0;r=Ue(e,r)|0;return r|0}function Ei(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0;i=f;f=f+16|0;t=i;e=Fe(e,r,t)|0;switch(o[t>>2]|0){case 2:{t=Fe(Si(We($e(e,r,n)|0,r,n+96|0)|0,r,n+160|0)|0,r,n+7364|0)|0;f=i;return t|0}case 1:{o[n+7368>>2]=13;t=r;f=i;return t|0}default:{o[n+7368>>2]=9;t=r;f=i;return t|0}}return 0}function Si(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0;h=f;f=f+16|0;c=h;e=Fe(e,r,c)|0;l=o[c>>2]|0;o[c>>2]=l+-1;if((e|0)==(r|0)|(l|0)==0){c=e;f=h;return c|0}_=n+7204|0;l=n+7132|0;do{i=o[n>>2]|0;if((i|0)==(_|0)){i=l;t=_}else{t=i+72|0;o[n>>2]=t}t=t+-72|0;if((t|0)!=(i|0))do{a=t;t=t+-72|0;u=t;s=a+72|0;do{o[a>>2]=o[u>>2];a=a+4|0;u=u+4|0}while((a|0)<(s|0))}while((t|0)!=(i|0));e=We(qe(Fe(e,r,i)|0,r,i+4|0)|0,r,i+5|0)|0;s=o[c>>2]|0;o[c>>2]=s+-1}while(!((e|0)==(r|0)|(s|0)==0));f=h;return e|0}function xi(e,r){e=e|0;r=r|0;var n=0;n=e+r|0;if(!r)return;do{i[e>>0]=0;e=e+1|0}while((e|0)!=(n|0));return}function Oi(e,r){e=e|0;r=r|0;var n=0;n=e+r|0;if(!r)return;do{i[e>>0]=0;e=e+1|0}while((e|0)!=(n|0));return}function Ri(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0;o=f;f=f+16|0;t=o;i[t>>0]=0;if(n|0)while(1){n=n+-1|0;i[t>>0]=i[t>>0]|i[r>>0]^i[e>>0];if(!n)break;else{r=r+1|0;e=e+1|0}}f=o;return(i[t>>0]|0)==0|0}function Ci(e,r){e=e|0;r=r|0;var n=0,t=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0;L=a[r>>0]|0;s=po(a[r+1>>0]|0|0,0,8)|0;f=C;x=po(a[r+2>>0]|0|0,0,16)|0;f=f|C;S=po(a[r+3>>0]|0|0,0,24)|0;f=f|C;c=i[r+6>>0]|0;_=a[r+4>>0]|0;O=po(a[r+5>>0]|0|0,0,8)|0;l=C;c=po(c&255|0,0,16)|0;l=po(O|_|c|0,l|C|0,6)|0;c=C;_=i[r+9>>0]|0;O=a[r+7>>0]|0;u=po(a[r+8>>0]|0|0,0,8)|0;A=C;_=po(_&255|0,0,16)|0;A=po(u|O|_|0,A|C|0,5)|0;_=C;O=i[r+12>>0]|0;u=a[r+10>>0]|0;g=po(a[r+11>>0]|0|0,0,8)|0;R=C;O=po(O&255|0,0,16)|0;R=po(g|u|O|0,R|C|0,3)|0;O=C;u=i[r+15>>0]|0;g=a[r+13>>0]|0;m=po(a[r+14>>0]|0|0,0,8)|0;v=C;u=po(u&255|0,0,16)|0;v=po(m|g|u|0,v|C|0,2)|0;u=C;g=a[r+16>>0]|0;m=po(a[r+17>>0]|0|0,0,8)|0;M=C;n=po(a[r+18>>0]|0|0,0,16)|0;M=M|C;E=po(a[r+19>>0]|0|0,0,24)|0;E=m|g|n|E;M=M|C;n=i[r+22>>0]|0;g=a[r+20>>0]|0;m=po(a[r+21>>0]|0|0,0,8)|0;p=C;n=po(n&255|0,0,16)|0;p=po(m|g|n|0,p|C|0,7)|0;n=C;g=i[r+25>>0]|0;m=a[r+23>>0]|0;t=po(a[r+24>>0]|0|0,0,8)|0;y=C;g=po(g&255|0,0,16)|0;y=po(t|m|g|0,y|C|0,5)|0;g=C;m=i[r+28>>0]|0;t=a[r+26>>0]|0;b=po(a[r+27>>0]|0|0,0,8)|0;d=C;m=po(m&255|0,0,16)|0;d=po(b|t|m|0,d|C|0,4)|0;m=C;t=i[r+31>>0]|0;b=a[r+29>>0]|0;T=po(a[r+30>>0]|0|0,0,8)|0;w=C;r=po(t&255|0,0,16)|0;w=po(T|b|r|0,w|C|0,2)|0;w=w&33554428;r=fo(w|0,0,16777216,0)|0;r=mo(r|0,C|0,25)|0;b=C;T=lo(0,0,r|0,b|0)|0;f=fo(T&19|0,0,s|L|x|S|0,f|0)|0;S=C;b=po(r|0,b|0,25)|0;r=C;x=fo(l|0,c|0,16777216,0)|0;x=mo(x|0,C|0,25)|0;L=C;_=fo(A|0,_|0,x|0,L|0)|0;A=C;L=po(x|0,L|0,25)|0;L=lo(l|0,c|0,L|0,C|0)|0;c=C;l=fo(R|0,O|0,16777216,0)|0;l=mo(l|0,C|0,25)|0;x=C;u=fo(v|0,u|0,l|0,x|0)|0;v=C;x=po(l|0,x|0,25)|0;l=C;s=fo(E|0,M|0,16777216,0)|0;s=mo(s|0,C|0,25)|0;T=C;n=fo(p|0,n|0,s|0,T|0)|0;p=C;T=po(s|0,T|0,25)|0;s=C;t=fo(y|0,g|0,16777216,0)|0;t=mo(t|0,C|0,25)|0;k=C;m=fo(d|0,m|0,t|0,k|0)|0;d=C;k=po(t|0,k|0,25)|0;t=C;I=fo(f|0,S|0,33554432,0)|0;I=co(I|0,C|0,26)|0;h=C;c=fo(L|0,c|0,I|0,h|0)|0;h=po(I|0,h|0,26)|0;h=lo(f|0,S|0,h|0,C|0)|0;S=fo(_|0,A|0,33554432,0)|0;S=co(S|0,C|0,26)|0;f=C;O=fo(S|0,f|0,R|0,O|0)|0;l=lo(O|0,C|0,x|0,l|0)|0;f=po(S|0,f|0,26)|0;f=lo(_|0,A|0,f|0,C|0)|0;A=fo(u|0,v|0,33554432,0)|0;A=co(A|0,C|0,26)|0;_=C;M=fo(A|0,_|0,E|0,M|0)|0;s=lo(M|0,C|0,T|0,s|0)|0;_=po(A|0,_|0,26)|0;_=lo(u|0,v|0,_|0,C|0)|0;v=fo(n|0,p|0,33554432,0)|0;v=co(v|0,C|0,26)|0;u=C;g=fo(v|0,u|0,y|0,g|0)|0;t=lo(g|0,C|0,k|0,t|0)|0;u=po(v|0,u|0,26)|0;u=lo(n|0,p|0,u|0,C|0)|0;p=fo(m|0,d|0,33554432,0)|0;p=co(p|0,C|0,26)|0;n=C;w=fo(w|0,0,p|0,n|0)|0;r=lo(w|0,C|0,b|0,r|0)|0;n=po(p|0,n|0,26)|0;n=lo(m|0,d|0,n|0,C|0)|0;o[e>>2]=h;o[e+4>>2]=c;o[e+8>>2]=f;o[e+12>>2]=l;o[e+16>>2]=_;o[e+20>>2]=s;o[e+24>>2]=u;o[e+28>>2]=t;o[e+32>>2]=n;o[e+36>>2]=r;return}function Ii(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,o=0,a=0;a=f;f=f+160|0;i=a+120|0;t=a+80|0;o=a+40|0;n=a;Li(i,r);Li(t,i);Li(t,t);Pi(t,r,t);Pi(i,i,t);Li(o,i);Pi(t,t,o);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(o,o,t);Li(n,o);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Li(n,n);Pi(o,n,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);r=1;do{Li(o,o);r=r+1|0}while((r|0)!=50);Pi(o,o,t);Li(n,o);r=1;do{Li(n,n);r=r+1|0}while((r|0)!=100);Pi(o,n,o);Li(o,o);r=1;do{Li(o,o);r=r+1|0}while((r|0)!=50);Pi(t,o,t);Li(t,t);Li(t,t);Li(t,t);Li(t,t);Li(t,t);Pi(e,t,i);f=a;return}function Li(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0;rr=o[r>>2]|0;ke=o[r+4>>2]|0;_=o[r+8>>2]|0;fe=o[r+12>>2]|0;i=o[r+16>>2]|0;ir=o[r+20>>2]|0;X=o[r+24>>2]|0;Fe=o[r+28>>2]|0;u=o[r+32>>2]|0;r=o[r+36>>2]|0;f=rr<<1;m=ke<<1;Je=_<<1;t=fe<<1;he=i<<1;S=ir<<1;c=X<<1;s=Fe<<1;Ue=ir*38|0;be=X*19|0;ge=Fe*38|0;ie=u*19|0;ar=r*38|0;nr=((rr|0)<0)<<31>>31;nr=yo(rr|0,nr|0,rr|0,nr|0)|0;rr=C;d=((f|0)<0)<<31>>31;ve=((ke|0)<0)<<31>>31;Pe=yo(f|0,d|0,ke|0,ve|0)|0;Le=C;l=((_|0)<0)<<31>>31;Ye=yo(_|0,l|0,f|0,d|0)|0;We=C;ce=((fe|0)<0)<<31>>31;Ke=yo(fe|0,ce|0,f|0,d|0)|0;Ge=C;x=((i|0)<0)<<31>>31;He=yo(i|0,x|0,f|0,d|0)|0;qe=C;tr=((ir|0)<0)<<31>>31;Te=yo(ir|0,tr|0,f|0,d|0)|0;Ae=C;a=((X|0)<0)<<31>>31;ae=yo(X|0,a|0,f|0,d|0)|0;oe=C;ze=((Fe|0)<0)<<31>>31;V=yo(Fe|0,ze|0,f|0,d|0)|0;D=C;E=((u|0)<0)<<31>>31;R=yo(u|0,E|0,f|0,d|0)|0;O=C;p=((r|0)<0)<<31>>31;d=yo(r|0,p|0,f|0,d|0)|0;f=C;h=((m|0)<0)<<31>>31;ve=yo(m|0,h|0,ke|0,ve|0)|0;ke=C;re=yo(m|0,h|0,_|0,l|0)|0;ne=C;j=((t|0)<0)<<31>>31;Be=yo(t|0,j|0,m|0,h|0)|0;Ve=C;xe=yo(i|0,x|0,m|0,h|0)|0;Se=C;n=((S|0)<0)<<31>>31;se=yo(S|0,n|0,m|0,h|0)|0;ue=C;G=yo(X|0,a|0,m|0,h|0)|0;B=C;H=((s|0)<0)<<31>>31;L=yo(s|0,H|0,m|0,h|0)|0;I=C;v=yo(u|0,E|0,m|0,h|0)|0;w=C;or=((ar|0)<0)<<31>>31;h=yo(ar|0,or|0,m|0,h|0)|0;m=C;De=yo(_|0,l|0,_|0,l|0)|0;je=C;Xe=((Je|0)<0)<<31>>31;Ee=yo(Je|0,Xe|0,fe|0,ce|0)|0;Me=C;le=yo(i|0,x|0,Je|0,Xe|0)|0;_e=C;J=yo(ir|0,tr|0,Je|0,Xe|0)|0;Y=C;q=yo(X|0,a|0,Je|0,Xe|0)|0;z=C;g=yo(Fe|0,ze|0,Je|0,Xe|0)|0;k=C;te=((ie|0)<0)<<31>>31;Xe=yo(ie|0,te|0,Je|0,Xe|0)|0;Je=C;l=yo(ar|0,or|0,_|0,l|0)|0;_=C;ce=yo(t|0,j|0,fe|0,ce|0)|0;fe=C;W=yo(t|0,j|0,i|0,x|0)|0;K=C;N=yo(S|0,n|0,t|0,j|0)|0;P=C;M=yo(X|0,a|0,t|0,j|0)|0;T=C;ye=((ge|0)<0)<<31>>31;Ze=yo(ge|0,ye|0,t|0,j|0)|0;Qe=C;Re=yo(ie|0,te|0,t|0,j|0)|0;Oe=C;j=yo(ar|0,or|0,t|0,j|0)|0;t=C;F=yo(i|0,x|0,i|0,x|0)|0;U=C;de=((he|0)<0)<<31>>31;A=yo(he|0,de|0,ir|0,tr|0)|0;y=C;we=((be|0)<0)<<31>>31;er=yo(be|0,we|0,he|0,de|0)|0;$e=C;Ie=yo(ge|0,ye|0,i|0,x|0)|0;Ce=C;de=yo(ie|0,te|0,he|0,de|0)|0;he=C;x=yo(ar|0,or|0,i|0,x|0)|0;i=C;tr=yo(Ue|0,((Ue|0)<0)<<31>>31|0,ir|0,tr|0)|0;ir=C;Ue=yo(be|0,we|0,S|0,n|0)|0;Ne=C;pe=yo(ge|0,ye|0,S|0,n|0)|0;me=C;Z=yo(ie|0,te|0,S|0,n|0)|0;Q=C;n=yo(ar|0,or|0,S|0,n|0)|0;S=C;we=yo(be|0,we|0,X|0,a|0)|0;be=C;ee=yo(ge|0,ye|0,X|0,a|0)|0;$=C;c=yo(ie|0,te|0,c|0,((c|0)<0)<<31>>31|0)|0;b=C;a=yo(ar|0,or|0,X|0,a|0)|0;X=C;ze=yo(ge|0,ye|0,Fe|0,ze|0)|0;Fe=C;ye=yo(ie|0,te|0,s|0,H|0)|0;ge=C;H=yo(ar|0,or|0,s|0,H|0)|0;s=C;te=yo(ie|0,te|0,u|0,E|0)|0;ie=C;E=yo(ar|0,or|0,u|0,E|0)|0;u=C;p=yo(ar|0,or|0,r|0,p|0)|0;r=C;rr=fo(tr|0,ir|0,nr|0,rr|0)|0;$e=fo(rr|0,C|0,er|0,$e|0)|0;Qe=fo($e|0,C|0,Ze|0,Qe|0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;m=fo(Je|0,C|0,h|0,m|0)|0;h=C;ke=fo(Ye|0,We|0,ve|0,ke|0)|0;ve=C;ne=fo(Ke|0,Ge|0,re|0,ne|0)|0;re=C;je=fo(Be|0,Ve|0,De|0,je|0)|0;qe=fo(je|0,C|0,He|0,qe|0)|0;Fe=fo(qe|0,C|0,ze|0,Fe|0)|0;b=fo(Fe|0,C|0,c|0,b|0)|0;S=fo(b|0,C|0,n|0,S|0)|0;n=C;b=fo(m|0,h|0,33554432,0)|0;b=co(b|0,C|0,26)|0;c=C;Le=fo(Ue|0,Ne|0,Pe|0,Le|0)|0;Ce=fo(Le|0,C|0,Ie|0,Ce|0)|0;Oe=fo(Ce|0,C|0,Re|0,Oe|0)|0;_=fo(Oe|0,C|0,l|0,_|0)|0;_=fo(_|0,C|0,b|0,c|0)|0;l=C;c=po(b|0,c|0,26)|0;c=lo(m|0,h|0,c|0,C|0)|0;h=C;m=fo(S|0,n|0,33554432,0)|0;m=co(m|0,C|0,26)|0;b=C;Me=fo(xe|0,Se|0,Ee|0,Me|0)|0;Ae=fo(Me|0,C|0,Te|0,Ae|0)|0;ge=fo(Ae|0,C|0,ye|0,ge|0)|0;X=fo(ge|0,C|0,a|0,X|0)|0;X=fo(X|0,C|0,m|0,b|0)|0;a=C;b=po(m|0,b|0,26)|0;b=lo(S|0,n|0,b|0,C|0)|0;n=C;S=fo(_|0,l|0,16777216,0)|0;S=co(S|0,C|0,25)|0;m=C;be=fo(ke|0,ve|0,we|0,be|0)|0;me=fo(be|0,C|0,pe|0,me|0)|0;he=fo(me|0,C|0,de|0,he|0)|0;t=fo(he|0,C|0,j|0,t|0)|0;t=fo(t|0,C|0,S|0,m|0)|0;j=C;m=po(S|0,m|0,25)|0;m=lo(_|0,l|0,m|0,C|0)|0;l=C;_=fo(X|0,a|0,16777216,0)|0;_=co(_|0,C|0,25)|0;S=C;_e=fo(ce|0,fe|0,le|0,_e|0)|0;ue=fo(_e|0,C|0,se|0,ue|0)|0;oe=fo(ue|0,C|0,ae|0,oe|0)|0;ie=fo(oe|0,C|0,te|0,ie|0)|0;s=fo(ie|0,C|0,H|0,s|0)|0;s=fo(s|0,C|0,_|0,S|0)|0;H=C;S=po(_|0,S|0,25)|0;S=lo(X|0,a|0,S|0,C|0)|0;a=C;X=fo(t|0,j|0,33554432,0)|0;X=co(X|0,C|0,26)|0;_=C;$=fo(ne|0,re|0,ee|0,$|0)|0;Q=fo($|0,C|0,Z|0,Q|0)|0;i=fo(Q|0,C|0,x|0,i|0)|0;i=fo(i|0,C|0,X|0,_|0)|0;x=C;_=po(X|0,_|0,26)|0;_=lo(t|0,j|0,_|0,C|0)|0;j=fo(s|0,H|0,33554432,0)|0;j=co(j|0,C|0,26)|0;t=C;K=fo(J|0,Y|0,W|0,K|0)|0;B=fo(K|0,C|0,G|0,B|0)|0;D=fo(B|0,C|0,V|0,D|0)|0;u=fo(D|0,C|0,E|0,u|0)|0;u=fo(u|0,C|0,j|0,t|0)|0;E=C;t=po(j|0,t|0,26)|0;t=lo(s|0,H|0,t|0,C|0)|0;H=fo(i|0,x|0,16777216,0)|0;H=co(H|0,C|0,25)|0;s=C;n=fo(H|0,s|0,b|0,n|0)|0;b=C;s=po(H|0,s|0,25)|0;s=lo(i|0,x|0,s|0,C|0)|0;x=fo(u|0,E|0,16777216,0)|0;x=co(x|0,C|0,25)|0;i=C;U=fo(q|0,z|0,F|0,U|0)|0;P=fo(U|0,C|0,N|0,P|0)|0;I=fo(P|0,C|0,L|0,I|0)|0;O=fo(I|0,C|0,R|0,O|0)|0;r=fo(O|0,C|0,p|0,r|0)|0;r=fo(r|0,C|0,x|0,i|0)|0;p=C;i=po(x|0,i|0,25)|0;i=lo(u|0,E|0,i|0,C|0)|0;E=fo(n|0,b|0,33554432,0)|0;E=co(E|0,C|0,26)|0;u=C;a=fo(S|0,a|0,E|0,u|0)|0;u=po(E|0,u|0,26)|0;u=lo(n|0,b|0,u|0,C|0)|0;b=fo(r|0,p|0,33554432,0)|0;b=co(b|0,C|0,26)|0;n=C;y=fo(M|0,T|0,A|0,y|0)|0;k=fo(y|0,C|0,g|0,k|0)|0;w=fo(k|0,C|0,v|0,w|0)|0;f=fo(w|0,C|0,d|0,f|0)|0;f=fo(f|0,C|0,b|0,n|0)|0;d=C;n=po(b|0,n|0,26)|0;n=lo(r|0,p|0,n|0,C|0)|0;p=fo(f|0,d|0,16777216,0)|0;p=co(p|0,C|0,25)|0;r=C;b=yo(p|0,r|0,19,0)|0;h=fo(b|0,C|0,c|0,h|0)|0;c=C;r=po(p|0,r|0,25)|0;r=lo(f|0,d|0,r|0,C|0)|0;d=fo(h|0,c|0,33554432,0)|0;d=co(d|0,C|0,26)|0;f=C;l=fo(m|0,l|0,d|0,f|0)|0;f=po(d|0,f|0,26)|0;f=lo(h|0,c|0,f|0,C|0)|0;o[e>>2]=f;o[e+4>>2]=l;o[e+8>>2]=_;o[e+12>>2]=s;o[e+16>>2]=u;o[e+20>>2]=a;o[e+24>>2]=t;o[e+28>>2]=i;o[e+32>>2]=n;o[e+36>>2]=r;return}function Pi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0,ur=0,sr=0,_r=0,lr=0,fr=0,cr=0,hr=0,dr=0,mr=0,pr=0,br=0,wr=0,vr=0,kr=0,gr=0,yr=0,Ar=0,Tr=0,Mr=0,Er=0,Sr=0,xr=0,Or=0,Rr=0,Cr=0,Ir=0,Lr=0,Pr=0,Nr=0,Ur=0,Fr=0,zr=0,qr=0,Hr=0,jr=0,Dr=0,Vr=0,Br=0,Gr=0,Kr=0,Wr=0,Yr=0,Jr=0,Xr=0,Qr=0,Zr=0,$r=0,en=0,rn=0,nn=0,tn=0,on=0,an=0,un=0,sn=0,_n=0,ln=0,fn=0,cn=0,hn=0,dn=0,mn=0,pn=0,bn=0,wn=0,vn=0,kn=0,gn=0,yn=0,An=0,Tn=0,Mn=0,En=0,Sn=0,xn=0,On=0,Rn=0,Cn=0,In=0,Ln=0,Pn=0,Nn=0,Un=0,Fn=0,zn=0,qn=0,Hn=0,jn=0,Dn=0,Vn=0,Bn=0,Gn=0;f=o[r>>2]|0;w=o[r+4>>2]|0;_=o[r+8>>2]|0;Vr=o[r+12>>2]|0;i=o[r+16>>2]|0;Me=o[r+20>>2]|0;Te=o[r+24>>2]|0;Mr=o[r+28>>2]|0;u=o[r+32>>2]|0;ae=o[r+36>>2]|0;L=o[n>>2]|0;N=o[n+4>>2]|0;R=o[n+8>>2]|0;x=o[n+12>>2]|0;E=o[n+16>>2]|0;T=o[n+20>>2]|0;y=o[n+24>>2]|0;k=o[n+28>>2]|0;l=o[n+32>>2]|0;v=o[n+36>>2]|0;jn=N*19|0;rn=R*19|0;br=x*19|0;Le=E*19|0;ln=T*19|0;Or=y*19|0;Ge=k*19|0;Gn=l*19|0;Vn=v*19|0;m=w<<1;t=Vr<<1;z=Me<<1;s=Mr<<1;n=ae<<1;d=((f|0)<0)<<31>>31;P=((L|0)<0)<<31>>31;qn=yo(L|0,P|0,f|0,d|0)|0;zn=C;U=((N|0)<0)<<31>>31;An=yo(N|0,U|0,f|0,d|0)|0;yn=C;I=((R|0)<0)<<31>>31;kr=yo(R|0,I|0,f|0,d|0)|0;vr=C;O=((x|0)<0)<<31>>31;Ue=yo(x|0,O|0,f|0,d|0)|0;Ne=C;S=((E|0)<0)<<31>>31;hn=yo(E|0,S|0,f|0,d|0)|0;cn=C;M=((T|0)<0)<<31>>31;Ir=yo(T|0,M|0,f|0,d|0)|0;Cr=C;A=((y|0)<0)<<31>>31;Ye=yo(y|0,A|0,f|0,d|0)|0;We=C;g=((k|0)<0)<<31>>31;_e=yo(k|0,g|0,f|0,d|0)|0;se=C;Dn=((l|0)<0)<<31>>31;j=yo(l|0,Dn|0,f|0,d|0)|0;H=C;d=yo(v|0,((v|0)<0)<<31>>31|0,f|0,d|0)|0;f=C;v=((w|0)<0)<<31>>31;tn=yo(L|0,P|0,w|0,v|0)|0;on=C;h=((m|0)<0)<<31>>31;Tr=yo(N|0,U|0,m|0,h|0)|0;Ar=C;ze=yo(R|0,I|0,w|0,v|0)|0;Fe=C;mn=yo(x|0,O|0,m|0,h|0)|0;dn=C;Pr=yo(E|0,S|0,w|0,v|0)|0;Lr=C;Xe=yo(T|0,M|0,m|0,h|0)|0;Je=C;fe=yo(y|0,A|0,w|0,v|0)|0;le=C;V=yo(k|0,g|0,m|0,h|0)|0;D=C;v=yo(l|0,Dn|0,w|0,v|0)|0;w=C;Dn=((Vn|0)<0)<<31>>31;h=yo(Vn|0,Dn|0,m|0,h|0)|0;m=C;l=((_|0)<0)<<31>>31;yr=yo(L|0,P|0,_|0,l|0)|0;gr=C;De=yo(N|0,U|0,_|0,l|0)|0;je=C;bn=yo(R|0,I|0,_|0,l|0)|0;pn=C;Ur=yo(x|0,O|0,_|0,l|0)|0;Nr=C;Ze=yo(E|0,S|0,_|0,l|0)|0;Qe=C;he=yo(T|0,M|0,_|0,l|0)|0;ce=C;G=yo(y|0,A|0,_|0,l|0)|0;B=C;g=yo(k|0,g|0,_|0,l|0)|0;k=C;Bn=((Gn|0)<0)<<31>>31;Mn=yo(Gn|0,Bn|0,_|0,l|0)|0;Tn=C;l=yo(Vn|0,Dn|0,_|0,l|0)|0;_=C;Br=((Vr|0)<0)<<31>>31;He=yo(L|0,P|0,Vr|0,Br|0)|0;qe=C;oe=((t|0)<0)<<31>>31;gn=yo(N|0,U|0,t|0,oe|0)|0;kn=C;zr=yo(R|0,I|0,Vr|0,Br|0)|0;Fr=C;er=yo(x|0,O|0,t|0,oe|0)|0;$e=C;me=yo(E|0,S|0,Vr|0,Br|0)|0;de=C;W=yo(T|0,M|0,t|0,oe|0)|0;K=C;A=yo(y|0,A|0,Vr|0,Br|0)|0;y=C;Ke=((Ge|0)<0)<<31>>31;Sn=yo(Ge|0,Ke|0,t|0,oe|0)|0;En=C;Br=yo(Gn|0,Bn|0,Vr|0,Br|0)|0;Vr=C;oe=yo(Vn|0,Dn|0,t|0,oe|0)|0;t=C;q=((i|0)<0)<<31>>31;vn=yo(L|0,P|0,i|0,q|0)|0;wn=C;Dr=yo(N|0,U|0,i|0,q|0)|0;jr=C;nr=yo(R|0,I|0,i|0,q|0)|0;rr=C;be=yo(x|0,O|0,i|0,q|0)|0;pe=C;J=yo(E|0,S|0,i|0,q|0)|0;Y=C;M=yo(T|0,M|0,i|0,q|0)|0;T=C;Rr=((Or|0)<0)<<31>>31;On=yo(Or|0,Rr|0,i|0,q|0)|0;xn=C;Kr=yo(Ge|0,Ke|0,i|0,q|0)|0;Gr=C;sr=yo(Gn|0,Bn|0,i|0,q|0)|0;ur=C;q=yo(Vn|0,Dn|0,i|0,q|0)|0;i=C;Ee=((Me|0)<0)<<31>>31;Hr=yo(L|0,P|0,Me|0,Ee|0)|0;qr=C;r=((z|0)<0)<<31>>31;ar=yo(N|0,U|0,z|0,r|0)|0;or=C;ve=yo(R|0,I|0,Me|0,Ee|0)|0;we=C;Q=yo(x|0,O|0,z|0,r|0)|0;X=C;S=yo(E|0,S|0,Me|0,Ee|0)|0;E=C;fn=((ln|0)<0)<<31>>31;Cn=yo(ln|0,fn|0,z|0,r|0)|0;Rn=C;Yr=yo(Or|0,Rr|0,Me|0,Ee|0)|0;Wr=C;lr=yo(Ge|0,Ke|0,z|0,r|0)|0;_r=C;Ee=yo(Gn|0,Bn|0,Me|0,Ee|0)|0;Me=C;r=yo(Vn|0,Dn|0,z|0,r|0)|0;z=C;a=((Te|0)<0)<<31>>31;tr=yo(L|0,P|0,Te|0,a|0)|0;ir=C;Ae=yo(N|0,U|0,Te|0,a|0)|0;ye=C;$=yo(R|0,I|0,Te|0,a|0)|0;Z=C;O=yo(x|0,O|0,Te|0,a|0)|0;x=C;Pe=((Le|0)<0)<<31>>31;Ln=yo(Le|0,Pe|0,Te|0,a|0)|0;In=C;Xr=yo(ln|0,fn|0,Te|0,a|0)|0;Jr=C;cr=yo(Or|0,Rr|0,Te|0,a|0)|0;fr=C;xe=yo(Ge|0,Ke|0,Te|0,a|0)|0;Se=C;c=yo(Gn|0,Bn|0,Te|0,a|0)|0;b=C;a=yo(Vn|0,Dn|0,Te|0,a|0)|0;Te=C;Er=((Mr|0)<0)<<31>>31;ge=yo(L|0,P|0,Mr|0,Er|0)|0;ke=C;te=((s|0)<0)<<31>>31;ie=yo(N|0,U|0,s|0,te|0)|0;ne=C;I=yo(R|0,I|0,Mr|0,Er|0)|0;R=C;wr=((br|0)<0)<<31>>31;Nn=yo(br|0,wr|0,s|0,te|0)|0;Pn=C;Zr=yo(Le|0,Pe|0,Mr|0,Er|0)|0;Qr=C;dr=yo(ln|0,fn|0,s|0,te|0)|0;hr=C;Re=yo(Or|0,Rr|0,Mr|0,Er|0)|0;Oe=C;un=yo(Ge|0,Ke|0,s|0,te|0)|0;an=C;Er=yo(Gn|0,Bn|0,Mr|0,Er|0)|0;Mr=C;te=yo(Vn|0,Dn|0,s|0,te|0)|0;s=C;F=((u|0)<0)<<31>>31;re=yo(L|0,P|0,u|0,F|0)|0;ee=C;U=yo(N|0,U|0,u|0,F|0)|0;N=C;nn=((rn|0)<0)<<31>>31;Fn=yo(rn|0,nn|0,u|0,F|0)|0;Un=C;en=yo(br|0,wr|0,u|0,F|0)|0;$r=C;pr=yo(Le|0,Pe|0,u|0,F|0)|0;mr=C;Ie=yo(ln|0,fn|0,u|0,F|0)|0;Ce=C;_n=yo(Or|0,Rr|0,u|0,F|0)|0;sn=C;xr=yo(Ge|0,Ke|0,u|0,F|0)|0;Sr=C;Be=yo(Gn|0,Bn|0,u|0,F|0)|0;Ve=C;F=yo(Vn|0,Dn|0,u|0,F|0)|0;u=C;ue=((ae|0)<0)<<31>>31;P=yo(L|0,P|0,ae|0,ue|0)|0;L=C;p=((n|0)<0)<<31>>31;jn=yo(jn|0,((jn|0)<0)<<31>>31|0,n|0,p|0)|0;Hn=C;nn=yo(rn|0,nn|0,ae|0,ue|0)|0;rn=C;wr=yo(br|0,wr|0,n|0,p|0)|0;br=C;Pe=yo(Le|0,Pe|0,ae|0,ue|0)|0;Le=C;fn=yo(ln|0,fn|0,n|0,p|0)|0;ln=C;Rr=yo(Or|0,Rr|0,ae|0,ue|0)|0;Or=C;Ke=yo(Ge|0,Ke|0,n|0,p|0)|0;Ge=C;ue=yo(Gn|0,Bn|0,ae|0,ue|0)|0;ae=C;p=yo(Vn|0,Dn|0,n|0,p|0)|0;n=C;zn=fo(jn|0,Hn|0,qn|0,zn|0)|0;Un=fo(zn|0,C|0,Fn|0,Un|0)|0;Pn=fo(Un|0,C|0,Nn|0,Pn|0)|0;In=fo(Pn|0,C|0,Ln|0,In|0)|0;Rn=fo(In|0,C|0,Cn|0,Rn|0)|0;xn=fo(Rn|0,C|0,On|0,xn|0)|0;En=fo(xn|0,C|0,Sn|0,En|0)|0;Tn=fo(En|0,C|0,Mn|0,Tn|0)|0;m=fo(Tn|0,C|0,h|0,m|0)|0;h=C;on=fo(An|0,yn|0,tn|0,on|0)|0;tn=C;wn=fo(gn|0,kn|0,vn|0,wn|0)|0;pn=fo(wn|0,C|0,bn|0,pn|0)|0;dn=fo(pn|0,C|0,mn|0,dn|0)|0;cn=fo(dn|0,C|0,hn|0,cn|0)|0;ln=fo(cn|0,C|0,fn|0,ln|0)|0;sn=fo(ln|0,C|0,_n|0,sn|0)|0;an=fo(sn|0,C|0,un|0,an|0)|0;b=fo(an|0,C|0,c|0,b|0)|0;z=fo(b|0,C|0,r|0,z|0)|0;r=C;b=fo(m|0,h|0,33554432,0)|0;b=co(b|0,C|0,26)|0;c=C;rn=fo(on|0,tn|0,nn|0,rn|0)|0;$r=fo(rn|0,C|0,en|0,$r|0)|0;Qr=fo($r|0,C|0,Zr|0,Qr|0)|0;Jr=fo(Qr|0,C|0,Xr|0,Jr|0)|0;Wr=fo(Jr|0,C|0,Yr|0,Wr|0)|0;Gr=fo(Wr|0,C|0,Kr|0,Gr|0)|0;Vr=fo(Gr|0,C|0,Br|0,Vr|0)|0;_=fo(Vr|0,C|0,l|0,_|0)|0;_=fo(_|0,C|0,b|0,c|0)|0;l=C;c=po(b|0,c|0,26)|0;c=lo(m|0,h|0,c|0,C|0)|0;h=C;m=fo(z|0,r|0,33554432,0)|0;m=co(m|0,C|0,26)|0;b=C;qr=fo(Dr|0,jr|0,Hr|0,qr|0)|0;Fr=fo(qr|0,C|0,zr|0,Fr|0)|0;Nr=fo(Fr|0,C|0,Ur|0,Nr|0)|0;Lr=fo(Nr|0,C|0,Pr|0,Lr|0)|0;Cr=fo(Lr|0,C|0,Ir|0,Cr|0)|0;Or=fo(Cr|0,C|0,Rr|0,Or|0)|0;Sr=fo(Or|0,C|0,xr|0,Sr|0)|0;Mr=fo(Sr|0,C|0,Er|0,Mr|0)|0;Te=fo(Mr|0,C|0,a|0,Te|0)|0;Te=fo(Te|0,C|0,m|0,b|0)|0;a=C;b=po(m|0,b|0,26)|0;b=lo(z|0,r|0,b|0,C|0)|0;r=C;z=fo(_|0,l|0,16777216,0)|0;z=co(z|0,C|0,25)|0;m=C;gr=fo(Tr|0,Ar|0,yr|0,gr|0)|0;vr=fo(gr|0,C|0,kr|0,vr|0)|0;br=fo(vr|0,C|0,wr|0,br|0)|0;mr=fo(br|0,C|0,pr|0,mr|0)|0;hr=fo(mr|0,C|0,dr|0,hr|0)|0;fr=fo(hr|0,C|0,cr|0,fr|0)|0;_r=fo(fr|0,C|0,lr|0,_r|0)|0;ur=fo(_r|0,C|0,sr|0,ur|0)|0;t=fo(ur|0,C|0,oe|0,t|0)|0;t=fo(t|0,C|0,z|0,m|0)|0;oe=C;m=po(z|0,m|0,25)|0;m=lo(_|0,l|0,m|0,C|0)|0;l=C;_=fo(Te|0,a|0,16777216,0)|0;_=co(_|0,C|0,25)|0;z=C;ir=fo(ar|0,or|0,tr|0,ir|0)|0;rr=fo(ir|0,C|0,nr|0,rr|0)|0;$e=fo(rr|0,C|0,er|0,$e|0)|0;Qe=fo($e|0,C|0,Ze|0,Qe|0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;We=fo(Je|0,C|0,Ye|0,We|0)|0;Ge=fo(We|0,C|0,Ke|0,Ge|0)|0;Ve=fo(Ge|0,C|0,Be|0,Ve|0)|0;s=fo(Ve|0,C|0,te|0,s|0)|0;s=fo(s|0,C|0,_|0,z|0)|0;te=C;z=po(_|0,z|0,25)|0;z=lo(Te|0,a|0,z|0,C|0)|0;a=C;Te=fo(t|0,oe|0,33554432,0)|0;Te=co(Te|0,C|0,26)|0;_=C;qe=fo(De|0,je|0,He|0,qe|0)|0;Fe=fo(qe|0,C|0,ze|0,Fe|0)|0;Ne=fo(Fe|0,C|0,Ue|0,Ne|0)|0;Le=fo(Ne|0,C|0,Pe|0,Le|0)|0;Ce=fo(Le|0,C|0,Ie|0,Ce|0)|0;Oe=fo(Ce|0,C|0,Re|0,Oe|0)|0;Se=fo(Oe|0,C|0,xe|0,Se|0)|0;Me=fo(Se|0,C|0,Ee|0,Me|0)|0;i=fo(Me|0,C|0,q|0,i|0)|0;i=fo(i|0,C|0,Te|0,_|0)|0;q=C;_=po(Te|0,_|0,26)|0;_=lo(t|0,oe|0,_|0,C|0)|0;oe=fo(s|0,te|0,33554432,0)|0;oe=co(oe|0,C|0,26)|0;t=C;ke=fo(Ae|0,ye|0,ge|0,ke|0)|0;we=fo(ke|0,C|0,ve|0,we|0)|0;pe=fo(we|0,C|0,be|0,pe|0)|0;de=fo(pe|0,C|0,me|0,de|0)|0;ce=fo(de|0,C|0,he|0,ce|0)|0;le=fo(ce|0,C|0,fe|0,le|0)|0;se=fo(le|0,C|0,_e|0,se|0)|0;ae=fo(se|0,C|0,ue|0,ae|0)|0;u=fo(ae|0,C|0,F|0,u|0)|0;u=fo(u|0,C|0,oe|0,t|0)|0;F=C;t=po(oe|0,t|0,26)|0;t=lo(s|0,te|0,t|0,C|0)|0;te=fo(i|0,q|0,16777216,0)|0;te=co(te|0,C|0,25)|0;s=C;r=fo(te|0,s|0,b|0,r|0)|0;b=C;s=po(te|0,s|0,25)|0;s=lo(i|0,q|0,s|0,C|0)|0;q=fo(u|0,F|0,16777216,0)|0;q=co(q|0,C|0,25)|0;i=C;ee=fo(ie|0,ne|0,re|0,ee|0)|0;Z=fo(ee|0,C|0,$|0,Z|0)|0;X=fo(Z|0,C|0,Q|0,X|0)|0;Y=fo(X|0,C|0,J|0,Y|0)|0;K=fo(Y|0,C|0,W|0,K|0)|0;B=fo(K|0,C|0,G|0,B|0)|0;D=fo(B|0,C|0,V|0,D|0)|0;H=fo(D|0,C|0,j|0,H|0)|0;n=fo(H|0,C|0,p|0,n|0)|0;n=fo(n|0,C|0,q|0,i|0)|0;p=C;i=po(q|0,i|0,25)|0;i=lo(u|0,F|0,i|0,C|0)|0;F=fo(r|0,b|0,33554432,0)|0;F=co(F|0,C|0,26)|0;u=C;a=fo(z|0,a|0,F|0,u|0)|0;u=po(F|0,u|0,26)|0;u=lo(r|0,b|0,u|0,C|0)|0;b=fo(n|0,p|0,33554432,0)|0;b=co(b|0,C|0,26)|0;r=C;L=fo(U|0,N|0,P|0,L|0)|0;R=fo(L|0,C|0,I|0,R|0)|0;x=fo(R|0,C|0,O|0,x|0)|0;E=fo(x|0,C|0,S|0,E|0)|0;T=fo(E|0,C|0,M|0,T|0)|0;y=fo(T|0,C|0,A|0,y|0)|0;k=fo(y|0,C|0,g|0,k|0)|0;w=fo(k|0,C|0,v|0,w|0)|0;f=fo(w|0,C|0,d|0,f|0)|0;f=fo(f|0,C|0,b|0,r|0)|0;d=C;r=po(b|0,r|0,26)|0;r=lo(n|0,p|0,r|0,C|0)|0;p=fo(f|0,d|0,16777216,0)|0;p=co(p|0,C|0,25)|0;n=C;b=yo(p|0,n|0,19,0)|0;h=fo(b|0,C|0,c|0,h|0)|0;c=C;n=po(p|0,n|0,25)|0;n=lo(f|0,d|0,n|0,C|0)|0;d=fo(h|0,c|0,33554432,0)|0;d=co(d|0,C|0,26)|0;f=C;l=fo(m|0,l|0,d|0,f|0)|0;f=po(d|0,f|0,26)|0;f=lo(h|0,c|0,f|0,C|0)|0;o[e>>2]=f;o[e+4>>2]=l;o[e+8>>2]=_;o[e+12>>2]=s;o[e+16>>2]=u;o[e+20>>2]=a;o[e+24>>2]=t;o[e+28>>2]=i;o[e+32>>2]=r;o[e+36>>2]=n;return}function Ni(e,r){e=e|0;r=r|0;var n=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0;c=o[r>>2]|0;f=o[r+4>>2]|0;l=o[r+8>>2]|0;_=o[r+12>>2]|0;s=o[r+16>>2]|0;u=o[r+20>>2]|0;a=o[r+24>>2]|0;t=o[r+28>>2]|0;d=o[r+32>>2]|0;n=o[r+36>>2]|0;c=(((((((((((((n*19|0)+16777216>>25)+c>>26)+f>>25)+l>>26)+_>>25)+s>>26)+u>>25)+a>>26)+t>>25)+d>>26)+n>>25)*19|0)+c|0;h=c>>26;f=h+f|0;h=c-(h<<26)|0;c=f>>25;l=c+l|0;c=f-(c<<25)|0;f=l>>26;_=f+_|0;f=l-(f<<26)|0;l=_>>25;s=l+s|0;l=_-(l<<25)|0;_=s>>26;u=_+u|0;_=s-(_<<26)|0;s=u>>25;a=s+a|0;s=u-(s<<25)|0;u=a>>26;t=u+t|0;u=a-(u<<26)|0;a=t>>25;r=a+d|0;a=t-(a<<25)|0;t=r>>26;n=t+n|0;t=r-(t<<26)|0;r=n&33554431;i[e>>0]=h;i[e+1>>0]=h>>>8;i[e+2>>0]=h>>>16;i[e+3>>0]=c<<2|h>>>24;i[e+4>>0]=c>>>6;i[e+5>>0]=c>>>14;i[e+6>>0]=f<<3|c>>>22;i[e+7>>0]=f>>>5;i[e+8>>0]=f>>>13;i[e+9>>0]=l<<5|f>>>21;i[e+10>>0]=l>>>3;i[e+11>>0]=l>>>11;i[e+12>>0]=_<<6|l>>>19;i[e+13>>0]=_>>>2;i[e+14>>0]=_>>>10;i[e+15>>0]=_>>>18;i[e+16>>0]=s;i[e+17>>0]=s>>>8;i[e+18>>0]=s>>>16;i[e+19>>0]=u<<1|s>>>24;i[e+20>>0]=u>>>7;i[e+21>>0]=u>>>15;i[e+22>>0]=a<<3|u>>>23;i[e+23>>0]=a>>>5;i[e+24>>0]=a>>>13;i[e+25>>0]=t<<4|a>>>21;i[e+26>>0]=t>>>4;i[e+27>>0]=t>>>12;i[e+28>>0]=t>>>20|r<<6;i[e+29>>0]=n>>>2;i[e+30>>0]=n>>>10;i[e+31>>0]=r>>>18;return}function Ui(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,o=0,a=0;a=f;f=f+128|0;t=a+80|0;o=a+40|0;i=a;Li(t,r);Li(o,t);Li(o,o);Pi(o,r,o);Pi(t,t,o);Li(t,t);Pi(t,o,t);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(o,o,t);Li(i,o);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Li(i,i);Pi(o,i,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Li(o,o);Pi(t,o,t);Li(o,t);n=1;do{Li(o,o);n=n+1|0}while((n|0)!=50);Pi(o,o,t);Li(i,o);n=1;do{Li(i,i);n=n+1|0}while((n|0)!=100);Pi(o,i,o);Li(o,o);n=1;do{Li(o,o);n=n+1|0}while((n|0)!=50);Pi(t,o,t);Li(t,t);Li(t,t);Pi(e,t,r);f=a;return}function Fi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0;rr=o[r>>2]|0;Fe=o[r+4>>2]|0;_=o[r+8>>2]|0;ie=o[r+12>>2]|0;i=o[r+16>>2]|0;ir=o[r+20>>2]|0;A=o[r+24>>2]|0;me=o[r+28>>2]|0;u=o[r+32>>2]|0;r=o[r+36>>2]|0;f=rr<<1;h=Fe<<1;Je=_<<1;t=ie<<1;Ce=i<<1;n=ir<<1;de=A<<1;s=me<<1;Ye=ir*38|0;Ne=A*19|0;oe=me*38|0;J=u*19|0;ar=r*38|0;nr=((rr|0)<0)<<31>>31;nr=yo(rr|0,nr|0,rr|0,nr|0)|0;rr=C;d=((f|0)<0)<<31>>31;ze=((Fe|0)<0)<<31>>31;Ke=yo(f|0,d|0,Fe|0,ze|0)|0;Ge=C;l=((_|0)<0)<<31>>31;He=yo(_|0,l|0,f|0,d|0)|0;qe=C;te=((ie|0)<0)<<31>>31;Re=yo(ie|0,te|0,f|0,d|0)|0;Oe=C;k=((i|0)<0)<<31>>31;we=yo(i|0,k|0,f|0,d|0)|0;be=C;tr=((ir|0)<0)<<31>>31;se=yo(ir|0,tr|0,f|0,d|0)|0;ue=C;a=((A|0)<0)<<31>>31;Z=yo(A|0,a|0,f|0,d|0)|0;Q=C;pe=((me|0)<0)<<31>>31;D=yo(me|0,pe|0,f|0,d|0)|0;j=C;w=((u|0)<0)<<31>>31;I=yo(u|0,w|0,f|0,d|0)|0;R=C;p=((r|0)<0)<<31>>31;d=yo(r|0,p|0,f|0,d|0)|0;f=C;m=((h|0)<0)<<31>>31;ze=yo(h|0,m|0,Fe|0,ze|0)|0;Fe=C;xe=yo(h|0,m|0,_|0,l|0)|0;Se=C;y=((t|0)<0)<<31>>31;ye=yo(t|0,y|0,h|0,m|0)|0;ge=C;ce=yo(i|0,k|0,h|0,m|0)|0;fe=C;v=((n|0)<0)<<31>>31;ee=yo(n|0,v|0,h|0,m|0)|0;$=C;B=yo(A|0,a|0,h|0,m|0)|0;V=C;g=((s|0)<0)<<31>>31;P=yo(s|0,g|0,h|0,m|0)|0;L=C;c=yo(u|0,w|0,h|0,m|0)|0;b=C;or=((ar|0)<0)<<31>>31;m=yo(ar|0,or|0,h|0,m|0)|0;h=C;ke=yo(_|0,l|0,_|0,l|0)|0;ve=C;Xe=((Je|0)<0)<<31>>31;le=yo(Je|0,Xe|0,ie|0,te|0)|0;_e=C;ne=yo(i|0,k|0,Je|0,Xe|0)|0;re=C;Y=yo(ir|0,tr|0,Je|0,Xe|0)|0;W=C;H=yo(A|0,a|0,Je|0,Xe|0)|0;q=C;M=yo(me|0,pe|0,Je|0,Xe|0)|0;T=C;X=((J|0)<0)<<31>>31;Xe=yo(J|0,X|0,Je|0,Xe|0)|0;Je=C;l=yo(ar|0,or|0,_|0,l|0)|0;_=C;te=yo(t|0,y|0,ie|0,te|0)|0;ie=C;K=yo(t|0,y|0,i|0,k|0)|0;G=C;U=yo(n|0,v|0,t|0,y|0)|0;N=C;O=yo(A|0,a|0,t|0,y|0)|0;x=C;ae=((oe|0)<0)<<31>>31;Ze=yo(oe|0,ae|0,t|0,y|0)|0;Qe=C;De=yo(J|0,X|0,t|0,y|0)|0;je=C;y=yo(ar|0,or|0,t|0,y|0)|0;t=C;z=yo(i|0,k|0,i|0,k|0)|0;F=C;Ie=((Ce|0)<0)<<31>>31;S=yo(Ce|0,Ie|0,ir|0,tr|0)|0;E=C;Ue=((Ne|0)<0)<<31>>31;er=yo(Ne|0,Ue|0,Ce|0,Ie|0)|0;$e=C;Be=yo(oe|0,ae|0,i|0,k|0)|0;Ve=C;Ie=yo(J|0,X|0,Ce|0,Ie|0)|0;Ce=C;k=yo(ar|0,or|0,i|0,k|0)|0;i=C;tr=yo(Ye|0,((Ye|0)<0)<<31>>31|0,ir|0,tr|0)|0;ir=C;Ye=yo(Ne|0,Ue|0,n|0,v|0)|0;We=C;Pe=yo(oe|0,ae|0,n|0,v|0)|0;Le=C;Te=yo(J|0,X|0,n|0,v|0)|0;Ae=C;v=yo(ar|0,or|0,n|0,v|0)|0;n=C;Ue=yo(Ne|0,Ue|0,A|0,a|0)|0;Ne=C;Ee=yo(oe|0,ae|0,A|0,a|0)|0;Me=C;de=yo(J|0,X|0,de|0,((de|0)<0)<<31>>31|0)|0;he=C;a=yo(ar|0,or|0,A|0,a|0)|0;A=C;pe=yo(oe|0,ae|0,me|0,pe|0)|0;me=C;ae=yo(J|0,X|0,s|0,g|0)|0;oe=C;g=yo(ar|0,or|0,s|0,g|0)|0;s=C;X=yo(J|0,X|0,u|0,w|0)|0;J=C;w=yo(ar|0,or|0,u|0,w|0)|0;u=C;p=yo(ar|0,or|0,r|0,p|0)|0;r=C;rr=fo(tr|0,ir|0,nr|0,rr|0)|0;$e=fo(rr|0,C|0,er|0,$e|0)|0;Qe=fo($e|0,C|0,Ze|0,Qe|0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;h=fo(Je|0,C|0,m|0,h|0)|0;m=C;Ge=fo(Ye|0,We|0,Ke|0,Ge|0)|0;Ve=fo(Ge|0,C|0,Be|0,Ve|0)|0;je=fo(Ve|0,C|0,De|0,je|0)|0;_=fo(je|0,C|0,l|0,_|0)|0;l=C;Fe=fo(He|0,qe|0,ze|0,Fe|0)|0;Ne=fo(Fe|0,C|0,Ue|0,Ne|0)|0;Le=fo(Ne|0,C|0,Pe|0,Le|0)|0;Ce=fo(Le|0,C|0,Ie|0,Ce|0)|0;t=fo(Ce|0,C|0,y|0,t|0)|0;y=C;Se=fo(Re|0,Oe|0,xe|0,Se|0)|0;Me=fo(Se|0,C|0,Ee|0,Me|0)|0;Ae=fo(Me|0,C|0,Te|0,Ae|0)|0;i=fo(Ae|0,C|0,k|0,i|0)|0;k=C;ve=fo(ye|0,ge|0,ke|0,ve|0)|0;be=fo(ve|0,C|0,we|0,be|0)|0;me=fo(be|0,C|0,pe|0,me|0)|0;he=fo(me|0,C|0,de|0,he|0)|0;n=fo(he|0,C|0,v|0,n|0)|0;v=C;_e=fo(ce|0,fe|0,le|0,_e|0)|0;ue=fo(_e|0,C|0,se|0,ue|0)|0;oe=fo(ue|0,C|0,ae|0,oe|0)|0;A=fo(oe|0,C|0,a|0,A|0)|0;a=C;re=fo(te|0,ie|0,ne|0,re|0)|0;$=fo(re|0,C|0,ee|0,$|0)|0;Q=fo($|0,C|0,Z|0,Q|0)|0;J=fo(Q|0,C|0,X|0,J|0)|0;s=fo(J|0,C|0,g|0,s|0)|0;g=C;G=fo(Y|0,W|0,K|0,G|0)|0;V=fo(G|0,C|0,B|0,V|0)|0;j=fo(V|0,C|0,D|0,j|0)|0;u=fo(j|0,C|0,w|0,u|0)|0;w=C;F=fo(H|0,q|0,z|0,F|0)|0;N=fo(F|0,C|0,U|0,N|0)|0;L=fo(N|0,C|0,P|0,L|0)|0;R=fo(L|0,C|0,I|0,R|0)|0;r=fo(R|0,C|0,p|0,r|0)|0;p=C;E=fo(O|0,x|0,S|0,E|0)|0;T=fo(E|0,C|0,M|0,T|0)|0;b=fo(T|0,C|0,c|0,b|0)|0;f=fo(b|0,C|0,d|0,f|0)|0;d=C;m=po(h|0,m|0,1)|0;h=C;l=po(_|0,l|0,1)|0;_=C;y=po(t|0,y|0,1)|0;t=C;k=po(i|0,k|0,1)|0;i=C;v=po(n|0,v|0,1)|0;n=C;a=po(A|0,a|0,1)|0;A=C;g=po(s|0,g|0,1)|0;s=C;w=po(u|0,w|0,1)|0;u=C;p=po(r|0,p|0,1)|0;r=C;d=po(f|0,d|0,1)|0;f=C;b=fo(m|0,h|0,33554432,0)|0;b=co(b|0,C|0,26)|0;c=C;_=fo(b|0,c|0,l|0,_|0)|0;l=C;c=po(b|0,c|0,26)|0;c=lo(m|0,h|0,c|0,C|0)|0;h=C;m=fo(v|0,n|0,33554432,0)|0;m=co(m|0,C|0,26)|0;b=C;A=fo(m|0,b|0,a|0,A|0)|0;a=C;b=po(m|0,b|0,26)|0;b=lo(v|0,n|0,b|0,C|0)|0;n=C;v=fo(_|0,l|0,16777216,0)|0;v=co(v|0,C|0,25)|0;m=C;t=fo(v|0,m|0,y|0,t|0)|0;y=C;m=po(v|0,m|0,25)|0;m=lo(_|0,l|0,m|0,C|0)|0;l=C;_=fo(A|0,a|0,16777216,0)|0;_=co(_|0,C|0,25)|0;v=C;s=fo(_|0,v|0,g|0,s|0)|0;g=C;v=po(_|0,v|0,25)|0;v=lo(A|0,a|0,v|0,C|0)|0;a=C;A=fo(t|0,y|0,33554432,0)|0;A=co(A|0,C|0,26)|0;_=C;i=fo(A|0,_|0,k|0,i|0)|0;k=C;_=po(A|0,_|0,26)|0;_=lo(t|0,y|0,_|0,C|0)|0;y=fo(s|0,g|0,33554432,0)|0;y=co(y|0,C|0,26)|0;t=C;u=fo(y|0,t|0,w|0,u|0)|0;w=C;t=po(y|0,t|0,26)|0;t=lo(s|0,g|0,t|0,C|0)|0;g=fo(i|0,k|0,16777216,0)|0;g=co(g|0,C|0,25)|0;s=C;n=fo(g|0,s|0,b|0,n|0)|0;b=C;s=po(g|0,s|0,25)|0;s=lo(i|0,k|0,s|0,C|0)|0;k=fo(u|0,w|0,16777216,0)|0;k=co(k|0,C|0,25)|0;i=C;r=fo(k|0,i|0,p|0,r|0)|0;p=C;i=po(k|0,i|0,25)|0;i=lo(u|0,w|0,i|0,C|0)|0;w=fo(n|0,b|0,33554432,0)|0;w=co(w|0,C|0,26)|0;u=C;a=fo(v|0,a|0,w|0,u|0)|0;u=po(w|0,u|0,26)|0;u=lo(n|0,b|0,u|0,C|0)|0;b=fo(r|0,p|0,33554432,0)|0;b=co(b|0,C|0,26)|0;n=C;f=fo(b|0,n|0,d|0,f|0)|0;d=C;n=po(b|0,n|0,26)|0;n=lo(r|0,p|0,n|0,C|0)|0;p=fo(f|0,d|0,16777216,0)|0;p=co(p|0,C|0,25)|0;r=C;b=yo(p|0,r|0,19,0)|0;h=fo(b|0,C|0,c|0,h|0)|0;c=C;r=po(p|0,r|0,25)|0;r=lo(f|0,d|0,r|0,C|0)|0;d=fo(h|0,c|0,33554432,0)|0;d=co(d|0,C|0,26)|0;f=C;l=fo(m|0,l|0,d|0,f|0)|0;f=po(d|0,f|0,26)|0;f=lo(h|0,c|0,f|0,C|0)|0;o[e>>2]=f;o[e+4>>2]=l;o[e+8>>2]=_;o[e+12>>2]=s;o[e+16>>2]=u;o[e+20>>2]=a;o[e+24>>2]=t;o[e+28>>2]=i;o[e+32>>2]=n;o[e+36>>2]=r;return}function zi(e){e=e|0;var r=0,n=0,t=0,o=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0;te=e+1|0;re=e+2|0;x=i[re>>0]|0;t=a[e>>0]|0;h=po(a[te>>0]|0|0,0,8)|0;ge=C;x=x&255;W=po(x|0,0,16)|0;ee=e+3|0;T=po(a[ee>>0]|0|0,0,8)|0;ae=C;$=e+4|0;K=po(a[$>>0]|0|0,0,16)|0;ae=ae|C;X=e+5|0;q=a[X>>0]|0;J=po(q|0,0,24)|0;ae=mo(T|x|K|J|0,ae|C|0,5)|0;J=e+6|0;K=e+7|0;x=i[K>>0]|0;T=po(a[J>>0]|0|0,0,8)|0;Se=C;x=x&255;G=po(x|0,0,16)|0;Se=mo(T|q|G|0,Se|C|0,2)|0;G=e+8|0;q=po(a[G>>0]|0|0,0,8)|0;T=C;B=e+9|0;xe=po(a[B>>0]|0|0,0,16)|0;T=T|C;j=e+10|0;Be=a[j>>0]|0;H=po(Be|0,0,24)|0;T=mo(q|x|xe|H|0,T|C|0,7)|0;H=e+11|0;xe=po(a[H>>0]|0|0,0,8)|0;x=C;q=e+12|0;I=po(a[q>>0]|0|0,0,16)|0;x=x|C;U=e+13|0;k=a[U>>0]|0;N=po(k|0,0,24)|0;x=mo(xe|Be|I|N|0,x|C|0,4)|0;N=e+14|0;I=e+15|0;Be=i[I>>0]|0;xe=po(a[N>>0]|0|0,0,8)|0;Oe=C;Be=Be&255;R=po(Be|0,0,16)|0;Oe=mo(xe|k|R|0,Oe|C|0,1)|0;R=e+16|0;k=po(a[R>>0]|0|0,0,8)|0;xe=C;O=e+17|0;y=po(a[O>>0]|0|0,0,16)|0;xe=xe|C;E=e+18|0;g=a[E>>0]|0;M=po(g|0,0,24)|0;xe=mo(k|Be|y|M|0,xe|C|0,6)|0;M=e+19|0;y=e+20|0;Be=i[y>>0]|0;k=po(a[M>>0]|0|0,0,8)|0;Ge=C;Be=po(Be&255|0,0,16)|0;Ge=mo(k|g|Be|0,Ge|C|0,3)|0;Be=C;g=e+21|0;k=e+22|0;b=e+23|0;he=i[b>>0]|0;er=a[g>>0]|0;rr=po(a[k>>0]|0|0,0,8)|0;Ze=C;he=he&255;$e=po(he|0,0,16)|0;p=e+24|0;Ue=po(a[p>>0]|0|0,0,8)|0;je=C;m=e+25|0;s=po(a[m>>0]|0|0,0,16)|0;je=je|C;c=e+26|0;Ae=a[c>>0]|0;f=po(Ae|0,0,24)|0;je=mo(Ue|he|s|f|0,je|C|0,5)|0;f=e+27|0;s=e+28|0;he=i[s>>0]|0;Ue=po(a[f>>0]|0|0,0,8)|0;Qe=C;he=he&255;u=po(he|0,0,16)|0;Qe=mo(Ue|Ae|u|0,Qe|C|0,2)|0;u=e+29|0;Ae=po(a[u>>0]|0|0,0,8)|0;Ue=C;o=e+30|0;or=po(a[o>>0]|0|0,0,16)|0;Ue=Ue|C;r=e+31|0;pe=a[r>>0]|0;de=po(pe|0,0,24)|0;Ue=mo(Ae|he|or|de|0,Ue|C|0,7)|0;de=po(a[e+32>>0]|0|0,0,8)|0;or=C;he=po(a[e+33>>0]|0|0,0,16)|0;or=or|C;Ae=a[e+34>>0]|0;fe=po(Ae|0,0,24)|0;or=mo(de|pe|he|fe|0,or|C|0,4)|0;fe=i[e+36>>0]|0;he=po(a[e+35>>0]|0|0,0,8)|0;pe=C;fe=fe&255;de=po(fe|0,0,16)|0;pe=mo(he|Ae|de|0,pe|C|0,1)|0;de=po(a[e+37>>0]|0|0,0,8)|0;Ae=C;he=po(a[e+38>>0]|0|0,0,16)|0;Ae=Ae|C;ze=a[e+39>>0]|0;oe=po(ze|0,0,24)|0;Ae=mo(de|fe|he|oe|0,Ae|C|0,6)|0;oe=i[e+41>>0]|0;he=po(a[e+40>>0]|0|0,0,8)|0;fe=C;oe=po(oe&255|0,0,16)|0;fe=mo(he|ze|oe|0,fe|C|0,3)|0;oe=C;ze=i[e+44>>0]|0;he=a[e+42>>0]|0;de=po(a[e+43>>0]|0|0,0,8)|0;_=C;ze=ze&255;Me=po(ze|0,0,16)|0;_e=po(a[e+45>>0]|0|0,0,8)|0;F=C;Y=po(a[e+46>>0]|0|0,0,16)|0;F=F|C;ar=a[e+47>>0]|0;d=po(ar|0,0,24)|0;F=mo(_e|ze|Y|d|0,F|C|0,5)|0;d=i[e+49>>0]|0;Y=po(a[e+48>>0]|0|0,0,8)|0;ze=C;d=d&255;_e=po(d|0,0,16)|0;ze=mo(Y|ar|_e|0,ze|C|0,2)|0;ze=ze&2097151;_e=po(a[e+50>>0]|0|0,0,8)|0;ar=C;Y=po(a[e+51>>0]|0|0,0,16)|0;ar=ar|C;Ee=a[e+52>>0]|0;z=po(Ee|0,0,24)|0;ar=mo(_e|d|Y|z|0,ar|C|0,7)|0;ar=ar&2097151;z=po(a[e+53>>0]|0|0,0,8)|0;Y=C;d=po(a[e+54>>0]|0|0,0,16)|0;Y=Y|C;_e=a[e+55>>0]|0;V=po(_e|0,0,24)|0;Y=mo(z|Ee|d|V|0,Y|C|0,4)|0;Y=Y&2097151;V=i[e+57>>0]|0;d=po(a[e+56>>0]|0|0,0,8)|0;Ee=C;V=V&255;z=po(V|0,0,16)|0;Ee=mo(d|_e|z|0,Ee|C|0,1)|0;Ee=Ee&2097151;z=po(a[e+58>>0]|0|0,0,8)|0;_e=C;d=po(a[e+59>>0]|0|0,0,16)|0;_e=_e|C;ue=a[e+60>>0]|0;D=po(ue|0,0,24)|0;_e=mo(z|V|d|D|0,_e|C|0,6)|0;_e=_e&2097151;D=po(a[e+61>>0]|0|0,0,8)|0;d=C;V=po(a[e+62>>0]|0|0,0,16)|0;d=d|C;z=po(a[e+63>>0]|0|0,0,24)|0;d=mo(D|ue|V|z|0,d|C|0,3)|0;z=C;V=yo(d|0,z|0,666643,0)|0;ue=C;D=yo(d|0,z|0,470296,0)|0;P=C;ne=yo(d|0,z|0,654183,0)|0;ve=C;Re=yo(d|0,z|0,-997805,-1)|0;v=C;l=yo(d|0,z|0,136657,0)|0;S=C;z=yo(d|0,z|0,-683901,-1)|0;_=fo(z|0,C|0,de|he|Me&2031616|0,_|0)|0;Me=C;he=yo(_e|0,0,666643,0)|0;de=C;z=yo(_e|0,0,470296,0)|0;d=C;We=yo(_e|0,0,654183,0)|0;w=C;ce=yo(_e|0,0,-997805,-1)|0;Z=C;Te=yo(_e|0,0,136657,0)|0;we=C;_e=yo(_e|0,0,-683901,-1)|0;L=C;n=yo(Ee|0,0,666643,0)|0;be=C;ye=yo(Ee|0,0,470296,0)|0;Fe=C;Ce=yo(Ee|0,0,654183,0)|0;ie=C;nr=yo(Ee|0,0,-997805,-1)|0;Ke=C;le=yo(Ee|0,0,136657,0)|0;A=C;Ee=yo(Ee|0,0,-683901,-1)|0;Ae=fo(Ee|0,C|0,Ae&2097151|0,0)|0;we=fo(Ae|0,C|0,Te|0,we|0)|0;v=fo(we|0,C|0,Re|0,v|0)|0;Re=C;we=yo(Y|0,0,666643,0)|0;Te=C;Ae=yo(Y|0,0,470296,0)|0;Ee=C;Ye=yo(Y|0,0,654183,0)|0;Q=C;Le=yo(Y|0,0,-997805,-1)|0;Ie=C;tr=yo(Y|0,0,136657,0)|0;ir=C;Y=yo(Y|0,0,-683901,-1)|0;me=C;se=yo(ar|0,0,666643,0)|0;ke=C;De=yo(ar|0,0,470296,0)|0;Ve=C;He=yo(ar|0,0,654183,0)|0;qe=C;Xe=yo(ar|0,0,-997805,-1)|0;Je=C;Ne=yo(ar|0,0,136657,0)|0;Pe=C;ar=yo(ar|0,0,-683901,-1)|0;or=fo(ar|0,C|0,or&2097151|0,0)|0;ir=fo(or|0,C|0,tr|0,ir|0)|0;Ke=fo(ir|0,C|0,nr|0,Ke|0)|0;w=fo(Ke|0,C|0,We|0,w|0)|0;P=fo(w|0,C|0,D|0,P|0)|0;D=C;w=yo(ze|0,0,666643,0)|0;xe=fo(w|0,C|0,xe&2097151|0,0)|0;w=C;We=yo(ze|0,0,470296,0)|0;Ke=C;nr=yo(ze|0,0,654183,0)|0;Ze=fo(nr|0,C|0,rr|er|$e&2031616|0,Ze|0)|0;Ve=fo(Ze|0,C|0,De|0,Ve|0)|0;Te=fo(Ve|0,C|0,we|0,Te|0)|0;we=C;Ve=yo(ze|0,0,-997805,-1)|0;De=C;Ze=yo(ze|0,0,136657,0)|0;Qe=fo(Ze|0,C|0,Qe&2097151|0,0)|0;Je=fo(Qe|0,C|0,Xe|0,Je|0)|0;Q=fo(Je|0,C|0,Ye|0,Q|0)|0;Fe=fo(Q|0,C|0,ye|0,Fe|0)|0;de=fo(Fe|0,C|0,he|0,de|0)|0;he=C;ze=yo(ze|0,0,-683901,-1)|0;Fe=C;ye=fo(xe|0,w|0,1048576,0)|0;ye=mo(ye|0,C|0,21)|0;Q=C;Be=fo(We|0,Ke|0,Ge|0,Be|0)|0;Be=fo(Be|0,C|0,ye|0,Q|0)|0;ke=fo(Be|0,C|0,se|0,ke|0)|0;se=C;Q=po(ye|0,Q|0,21)|0;Q=lo(xe|0,w|0,Q|0,C|0)|0;w=C;xe=fo(Te|0,we|0,1048576,0)|0;xe=mo(xe|0,C|0,21)|0;ye=C;je=fo(Ve|0,De|0,je&2097151|0,0)|0;qe=fo(je|0,C|0,He|0,qe|0)|0;Ee=fo(qe|0,C|0,Ae|0,Ee|0)|0;be=fo(Ee|0,C|0,n|0,be|0)|0;be=fo(be|0,C|0,xe|0,ye|0)|0;n=C;ye=po(xe|0,ye|0,21)|0;xe=C;Ee=fo(de|0,he|0,1048576,0)|0;Ee=co(Ee|0,C|0,21)|0;Ae=C;Ue=fo(ze|0,Fe|0,Ue&2097151|0,0)|0;Pe=fo(Ue|0,C|0,Ne|0,Pe|0)|0;Ie=fo(Pe|0,C|0,Le|0,Ie|0)|0;ie=fo(Ie|0,C|0,Ce|0,ie|0)|0;d=fo(ie|0,C|0,z|0,d|0)|0;ue=fo(d|0,C|0,V|0,ue|0)|0;ue=fo(ue|0,C|0,Ee|0,Ae|0)|0;V=C;Ae=po(Ee|0,Ae|0,21)|0;Ee=C;d=fo(P|0,D|0,1048576,0)|0;d=co(d|0,C|0,21)|0;z=C;pe=fo(Y|0,me|0,pe&2097151|0,0)|0;A=fo(pe|0,C|0,le|0,A|0)|0;Z=fo(A|0,C|0,ce|0,Z|0)|0;ve=fo(Z|0,C|0,ne|0,ve|0)|0;ve=fo(ve|0,C|0,d|0,z|0)|0;ne=C;z=po(d|0,z|0,21)|0;z=lo(P|0,D|0,z|0,C|0)|0;D=C;P=fo(v|0,Re|0,1048576,0)|0;P=co(P|0,C|0,21)|0;d=C;oe=fo(_e|0,L|0,fe|0,oe|0)|0;S=fo(oe|0,C|0,l|0,S|0)|0;S=fo(S|0,C|0,P|0,d|0)|0;l=C;d=po(P|0,d|0,21)|0;d=lo(v|0,Re|0,d|0,C|0)|0;Re=C;v=fo(_|0,Me|0,1048576,0)|0;v=co(v|0,C|0,21)|0;P=C;F=fo(v|0,P|0,F&2097151|0,0)|0;oe=C;P=po(v|0,P|0,21)|0;P=lo(_|0,Me|0,P|0,C|0)|0;Me=C;_=fo(ke|0,se|0,1048576,0)|0;_=mo(_|0,C|0,21)|0;v=C;fe=po(_|0,v|0,21)|0;fe=lo(ke|0,se|0,fe|0,C|0)|0;se=C;ke=fo(be|0,n|0,1048576,0)|0;ke=co(ke|0,C|0,21)|0;L=C;_e=po(ke|0,L|0,21)|0;_e=lo(be|0,n|0,_e|0,C|0)|0;n=C;be=fo(ue|0,V|0,1048576,0)|0;be=co(be|0,C|0,21)|0;Z=C;D=fo(z|0,D|0,be|0,Z|0)|0;z=C;Z=po(be|0,Z|0,21)|0;Z=lo(ue|0,V|0,Z|0,C|0)|0;V=C;ue=fo(ve|0,ne|0,1048576,0)|0;ue=co(ue|0,C|0,21)|0;be=C;Re=fo(ue|0,be|0,d|0,Re|0)|0;d=C;be=po(ue|0,be|0,21)|0;be=lo(ve|0,ne|0,be|0,C|0)|0;ne=C;ve=fo(S|0,l|0,1048576,0)|0;ve=co(ve|0,C|0,21)|0;ue=C;Me=fo(ve|0,ue|0,P|0,Me|0)|0;P=C;ue=po(ve|0,ue|0,21)|0;ue=lo(S|0,l|0,ue|0,C|0)|0;l=C;S=yo(F|0,oe|0,666643,0)|0;Oe=fo(S|0,C|0,Oe&2097151|0,0)|0;S=C;ve=yo(F|0,oe|0,470296,0)|0;ve=fo(Q|0,w|0,ve|0,C|0)|0;w=C;Q=yo(F|0,oe|0,654183,0)|0;Q=fo(fe|0,se|0,Q|0,C|0)|0;se=C;fe=yo(F|0,oe|0,-997805,-1)|0;ce=C;A=yo(F|0,oe|0,136657,0)|0;A=fo(_e|0,n|0,A|0,C|0)|0;n=C;oe=yo(F|0,oe|0,-683901,-1)|0;F=C;L=fo(de|0,he|0,ke|0,L|0)|0;Ee=lo(L|0,C|0,Ae|0,Ee|0)|0;F=fo(Ee|0,C|0,oe|0,F|0)|0;oe=C;Ee=yo(Me|0,P|0,666643,0)|0;x=fo(Ee|0,C|0,x&2097151|0,0)|0;Ee=C;Ae=yo(Me|0,P|0,470296,0)|0;Ae=fo(Oe|0,S|0,Ae|0,C|0)|0;S=C;Oe=yo(Me|0,P|0,654183,0)|0;Oe=fo(ve|0,w|0,Oe|0,C|0)|0;w=C;ve=yo(Me|0,P|0,-997805,-1)|0;ve=fo(Q|0,se|0,ve|0,C|0)|0;se=C;Q=yo(Me|0,P|0,136657,0)|0;L=C;P=yo(Me|0,P|0,-683901,-1)|0;P=fo(A|0,n|0,P|0,C|0)|0;n=C;A=yo(ue|0,l|0,666643,0)|0;T=fo(A|0,C|0,T&2097151|0,0)|0;A=C;Me=yo(ue|0,l|0,470296,0)|0;Me=fo(x|0,Ee|0,Me|0,C|0)|0;Ee=C;x=yo(ue|0,l|0,654183,0)|0;x=fo(Ae|0,S|0,x|0,C|0)|0;S=C;Ae=yo(ue|0,l|0,-997805,-1)|0;Ae=fo(Oe|0,w|0,Ae|0,C|0)|0;w=C;Oe=yo(ue|0,l|0,136657,0)|0;Oe=fo(ve|0,se|0,Oe|0,C|0)|0;se=C;l=yo(ue|0,l|0,-683901,-1)|0;ue=C;v=fo(Te|0,we|0,_|0,v|0)|0;xe=lo(v|0,C|0,ye|0,xe|0)|0;ce=fo(xe|0,C|0,fe|0,ce|0)|0;L=fo(ce|0,C|0,Q|0,L|0)|0;ue=fo(L|0,C|0,l|0,ue|0)|0;l=C;L=yo(Re|0,d|0,666643,0)|0;Q=C;ce=yo(Re|0,d|0,470296,0)|0;fe=C;xe=yo(Re|0,d|0,654183,0)|0;ye=C;v=yo(Re|0,d|0,-997805,-1)|0;_=C;we=yo(Re|0,d|0,136657,0)|0;we=fo(Ae|0,w|0,we|0,C|0)|0;w=C;d=yo(Re|0,d|0,-683901,-1)|0;d=fo(Oe|0,se|0,d|0,C|0)|0;se=C;Oe=yo(be|0,ne|0,666643,0)|0;Re=C;Ae=yo(be|0,ne|0,470296,0)|0;Te=C;ve=yo(be|0,ne|0,654183,0)|0;ke=C;he=yo(be|0,ne|0,-997805,-1)|0;de=C;_e=yo(be|0,ne|0,136657,0)|0;le=C;ne=yo(be|0,ne|0,-683901,-1)|0;ne=fo(we|0,w|0,ne|0,C|0)|0;w=C;we=yo(D|0,z|0,666643,0)|0;ge=fo(we|0,C|0,h|t|W&2031616|0,ge|0)|0;W=C;t=yo(D|0,z|0,470296,0)|0;h=C;we=yo(D|0,z|0,654183,0)|0;Se=fo(we|0,C|0,Se&2097151|0,0)|0;Q=fo(Se|0,C|0,L|0,Q|0)|0;Te=fo(Q|0,C|0,Ae|0,Te|0)|0;Ae=C;Q=yo(D|0,z|0,-997805,-1)|0;L=C;Se=yo(D|0,z|0,136657,0)|0;Se=fo(Me|0,Ee|0,Se|0,C|0)|0;ye=fo(Se|0,C|0,xe|0,ye|0)|0;de=fo(ye|0,C|0,he|0,de|0)|0;he=C;z=yo(D|0,z|0,-683901,-1)|0;D=C;ye=fo(ge|0,W|0,1048576,0)|0;ye=co(ye|0,C|0,21)|0;xe=C;ae=fo(t|0,h|0,ae&2097151|0,0)|0;Re=fo(ae|0,C|0,Oe|0,Re|0)|0;Re=fo(Re|0,C|0,ye|0,xe|0)|0;Oe=C;xe=po(ye|0,xe|0,21)|0;xe=lo(ge|0,W|0,xe|0,C|0)|0;W=C;ge=fo(Te|0,Ae|0,1048576,0)|0;ge=co(ge|0,C|0,21)|0;ye=C;L=fo(T|0,A|0,Q|0,L|0)|0;fe=fo(L|0,C|0,ce|0,fe|0)|0;ke=fo(fe|0,C|0,ve|0,ke|0)|0;ke=fo(ke|0,C|0,ge|0,ye|0)|0;ve=C;ye=po(ge|0,ye|0,21)|0;ge=C;fe=fo(de|0,he|0,1048576,0)|0;fe=co(fe|0,C|0,21)|0;ce=C;D=fo(x|0,S|0,z|0,D|0)|0;_=fo(D|0,C|0,v|0,_|0)|0;le=fo(_|0,C|0,_e|0,le|0)|0;le=fo(le|0,C|0,fe|0,ce|0)|0;_e=C;ce=po(fe|0,ce|0,21)|0;fe=C;_=fo(ne|0,w|0,1048576,0)|0;_=co(_|0,C|0,21)|0;v=C;se=fo(d|0,se|0,_|0,v|0)|0;d=C;v=po(_|0,v|0,21)|0;v=lo(ne|0,w|0,v|0,C|0)|0;w=C;ne=fo(ue|0,l|0,1048576,0)|0;ne=co(ne|0,C|0,21)|0;_=C;n=fo(P|0,n|0,ne|0,_|0)|0;P=C;_=po(ne|0,_|0,21)|0;_=lo(ue|0,l|0,_|0,C|0)|0;l=C;ue=fo(F|0,oe|0,1048576,0)|0;ue=co(ue|0,C|0,21)|0;ne=C;V=fo(Z|0,V|0,ue|0,ne|0)|0;Z=C;ne=po(ue|0,ne|0,21)|0;ne=lo(F|0,oe|0,ne|0,C|0)|0;oe=C;F=fo(Re|0,Oe|0,1048576,0)|0;F=co(F|0,C|0,21)|0;ue=C;D=po(F|0,ue|0,21)|0;z=C;S=fo(ke|0,ve|0,1048576,0)|0;S=co(S|0,C|0,21)|0;x=C;L=po(S|0,x|0,21)|0;Q=C;A=fo(le|0,_e|0,1048576,0)|0;A=co(A|0,C|0,21)|0;T=C;w=fo(v|0,w|0,A|0,T|0)|0;v=C;T=po(A|0,T|0,21)|0;A=C;ae=fo(se|0,d|0,1048576,0)|0;ae=co(ae|0,C|0,21)|0;h=C;l=fo(_|0,l|0,ae|0,h|0)|0;_=C;h=po(ae|0,h|0,21)|0;h=lo(se|0,d|0,h|0,C|0)|0;d=C;se=fo(n|0,P|0,1048576,0)|0;se=co(se|0,C|0,21)|0;ae=C;oe=fo(ne|0,oe|0,se|0,ae|0)|0;ne=C;ae=po(se|0,ae|0,21)|0;ae=lo(n|0,P|0,ae|0,C|0)|0;P=C;n=fo(V|0,Z|0,1048576,0)|0;n=co(n|0,C|0,21)|0;se=C;t=po(n|0,se|0,21)|0;t=lo(V|0,Z|0,t|0,C|0)|0;Z=C;V=yo(n|0,se|0,666643,0)|0;V=fo(xe|0,W|0,V|0,C|0)|0;W=C;xe=yo(n|0,se|0,470296,0)|0;Se=C;Ee=yo(n|0,se|0,654183,0)|0;Me=C;we=yo(n|0,se|0,-997805,-1)|0;be=C;pe=yo(n|0,se|0,136657,0)|0;me=C;se=yo(n|0,se|0,-683901,-1)|0;n=C;Y=co(V|0,W|0,21)|0;ie=C;Se=fo(Re|0,Oe|0,xe|0,Se|0)|0;Se=fo(Se|0,C|0,Y|0,ie|0)|0;z=lo(Se|0,C|0,D|0,z|0)|0;D=C;ie=po(Y|0,ie|0,21)|0;ie=lo(V|0,W|0,ie|0,C|0)|0;W=C;V=co(z|0,D|0,21)|0;Y=C;Ae=fo(Ee|0,Me|0,Te|0,Ae|0)|0;ge=lo(Ae|0,C|0,ye|0,ge|0)|0;ue=fo(ge|0,C|0,F|0,ue|0)|0;ue=fo(ue|0,C|0,V|0,Y|0)|0;F=C;Y=po(V|0,Y|0,21)|0;Y=lo(z|0,D|0,Y|0,C|0)|0;D=C;z=co(ue|0,F|0,21)|0;V=C;be=fo(ke|0,ve|0,we|0,be|0)|0;Q=lo(be|0,C|0,L|0,Q|0)|0;Q=fo(Q|0,C|0,z|0,V|0)|0;L=C;V=po(z|0,V|0,21)|0;V=lo(ue|0,F|0,V|0,C|0)|0;F=C;ue=co(Q|0,L|0,21)|0;z=C;he=fo(pe|0,me|0,de|0,he|0)|0;fe=lo(he|0,C|0,ce|0,fe|0)|0;x=fo(fe|0,C|0,S|0,x|0)|0;x=fo(x|0,C|0,ue|0,z|0)|0;S=C;z=po(ue|0,z|0,21)|0;z=lo(Q|0,L|0,z|0,C|0)|0;L=C;Q=co(x|0,S|0,21)|0;ue=C;n=fo(le|0,_e|0,se|0,n|0)|0;A=lo(n|0,C|0,T|0,A|0)|0;A=fo(A|0,C|0,Q|0,ue|0)|0;T=C;ue=po(Q|0,ue|0,21)|0;ue=lo(x|0,S|0,ue|0,C|0)|0;S=C;x=co(A|0,T|0,21)|0;Q=C;v=fo(w|0,v|0,x|0,Q|0)|0;w=C;Q=po(x|0,Q|0,21)|0;Q=lo(A|0,T|0,Q|0,C|0)|0;T=C;A=co(v|0,w|0,21)|0;x=C;d=fo(A|0,x|0,h|0,d|0)|0;h=C;x=po(A|0,x|0,21)|0;x=lo(v|0,w|0,x|0,C|0)|0;w=C;v=co(d|0,h|0,21)|0;A=C;_=fo(l|0,_|0,v|0,A|0)|0;l=C;A=po(v|0,A|0,21)|0;A=lo(d|0,h|0,A|0,C|0)|0;h=C;d=co(_|0,l|0,21)|0;v=C;P=fo(d|0,v|0,ae|0,P|0)|0;ae=C;v=po(d|0,v|0,21)|0;v=lo(_|0,l|0,v|0,C|0)|0;l=C;_=co(P|0,ae|0,21)|0;d=C;ne=fo(oe|0,ne|0,_|0,d|0)|0;oe=C;d=po(_|0,d|0,21)|0;d=lo(P|0,ae|0,d|0,C|0)|0;ae=C;P=co(ne|0,oe|0,21)|0;_=C;Z=fo(P|0,_|0,t|0,Z|0)|0;t=C;_=po(P|0,_|0,21)|0;_=lo(ne|0,oe|0,_|0,C|0)|0;oe=C;ne=co(Z|0,t|0,21)|0;P=C;n=po(ne|0,P|0,21)|0;n=lo(Z|0,t|0,n|0,C|0)|0;t=C;Z=yo(ne|0,P|0,666643,0)|0;W=fo(Z|0,C|0,ie|0,W|0)|0;ie=C;Z=yo(ne|0,P|0,470296,0)|0;Z=fo(Y|0,D|0,Z|0,C|0)|0;D=C;Y=yo(ne|0,P|0,654183,0)|0;Y=fo(V|0,F|0,Y|0,C|0)|0;F=C;V=yo(ne|0,P|0,-997805,-1)|0;V=fo(z|0,L|0,V|0,C|0)|0;L=C;z=yo(ne|0,P|0,136657,0)|0;z=fo(ue|0,S|0,z|0,C|0)|0;S=C;P=yo(ne|0,P|0,-683901,-1)|0;P=fo(Q|0,T|0,P|0,C|0)|0;T=C;Q=co(W|0,ie|0,21)|0;ne=C;D=fo(Z|0,D|0,Q|0,ne|0)|0;Z=C;ne=po(Q|0,ne|0,21)|0;ne=lo(W|0,ie|0,ne|0,C|0)|0;ie=C;W=co(D|0,Z|0,21)|0;Q=C;F=fo(Y|0,F|0,W|0,Q|0)|0;Y=C;Q=po(W|0,Q|0,21)|0;Q=lo(D|0,Z|0,Q|0,C|0)|0;Z=C;D=co(F|0,Y|0,21)|0;W=C;L=fo(V|0,L|0,D|0,W|0)|0;V=C;W=po(D|0,W|0,21)|0;W=lo(F|0,Y|0,W|0,C|0)|0;Y=C;F=co(L|0,V|0,21)|0;D=C;S=fo(z|0,S|0,F|0,D|0)|0;z=C;D=po(F|0,D|0,21)|0;D=lo(L|0,V|0,D|0,C|0)|0;V=C;L=co(S|0,z|0,21)|0;F=C;T=fo(P|0,T|0,L|0,F|0)|0;P=C;F=po(L|0,F|0,21)|0;F=lo(S|0,z|0,F|0,C|0)|0;z=C;S=co(T|0,P|0,21)|0;L=C;w=fo(S|0,L|0,x|0,w|0)|0;x=C;L=po(S|0,L|0,21)|0;L=lo(T|0,P|0,L|0,C|0)|0;P=C;T=co(w|0,x|0,21)|0;S=C;h=fo(T|0,S|0,A|0,h|0)|0;A=C;S=po(T|0,S|0,21)|0;S=lo(w|0,x|0,S|0,C|0)|0;x=C;w=co(h|0,A|0,21)|0;T=C;l=fo(w|0,T|0,v|0,l|0)|0;v=C;T=po(w|0,T|0,21)|0;T=lo(h|0,A|0,T|0,C|0)|0;A=C;h=co(l|0,v|0,21)|0;w=C;ae=fo(h|0,w|0,d|0,ae|0)|0;d=C;w=po(h|0,w|0,21)|0;w=lo(l|0,v|0,w|0,C|0)|0;v=C;l=co(ae|0,d|0,21)|0;h=C;oe=fo(l|0,h|0,_|0,oe|0)|0;_=C;h=po(l|0,h|0,21)|0;h=lo(ae|0,d|0,h|0,C|0)|0;d=C;ae=co(oe|0,_|0,21)|0;l=C;t=fo(ae|0,l|0,n|0,t|0)|0;n=C;l=po(ae|0,l|0,21)|0;l=lo(oe|0,_|0,l|0,C|0)|0;_=C;i[e>>0]=ne;e=mo(ne|0,ie|0,8)|0;i[te>>0]=e;e=mo(ne|0,ie|0,16)|0;ie=C;ne=po(Q|0,Z|0,5)|0;i[re>>0]=ne|e;e=mo(Q|0,Z|0,3)|0;i[ee>>0]=e;e=mo(Q|0,Z|0,11)|0;i[$>>0]=e;e=mo(Q|0,Z|0,19)|0;Z=C;Q=po(W|0,Y|0,2)|0;i[X>>0]=Q|e;e=mo(W|0,Y|0,6)|0;i[J>>0]=e;e=mo(W|0,Y|0,14)|0;Y=C;W=po(D|0,V|0,7)|0;i[K>>0]=W|e;e=mo(D|0,V|0,1)|0;i[G>>0]=e;e=mo(D|0,V|0,9)|0;i[B>>0]=e;e=mo(D|0,V|0,17)|0;V=C;D=po(F|0,z|0,4)|0;i[j>>0]=D|e;e=mo(F|0,z|0,4)|0;i[H>>0]=e;e=mo(F|0,z|0,12)|0;i[q>>0]=e;e=mo(F|0,z|0,20)|0;z=C;F=po(L|0,P|0,1)|0;i[U>>0]=F|e;e=mo(L|0,P|0,7)|0;i[N>>0]=e;e=mo(L|0,P|0,15)|0;P=C;L=po(S|0,x|0,6)|0;i[I>>0]=L|e;e=mo(S|0,x|0,2)|0;i[R>>0]=e;e=mo(S|0,x|0,10)|0;i[O>>0]=e;e=mo(S|0,x|0,18)|0;x=C;S=po(T|0,A|0,3)|0;i[E>>0]=S|e;e=mo(T|0,A|0,5)|0;i[M>>0]=e;e=mo(T|0,A|0,13)|0;i[y>>0]=e;i[g>>0]=w;e=mo(w|0,v|0,8)|0;i[k>>0]=e;e=mo(w|0,v|0,16)|0;v=C;w=po(h|0,d|0,5)|0;i[b>>0]=w|e;e=mo(h|0,d|0,3)|0;i[p>>0]=e;e=mo(h|0,d|0,11)|0;i[m>>0]=e;e=mo(h|0,d|0,19)|0;d=C;h=po(l|0,_|0,2)|0;i[c>>0]=h|e;e=mo(l|0,_|0,6)|0;i[f>>0]=e;_=mo(l|0,_|0,14)|0;l=C;e=po(t|0,n|0,7)|0;i[s>>0]=_|e;e=mo(t|0,n|0,1)|0;i[u>>0]=e;e=mo(t|0,n|0,9)|0;i[o>>0]=e;e=mo(t|0,n|0,17)|0;i[r>>0]=e;return}function qi(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var o=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0,ur=0,sr=0,_r=0,lr=0,fr=0,cr=0,hr=0,dr=0,mr=0,pr=0,br=0,wr=0,vr=0,kr=0,gr=0,yr=0,Ar=0,Tr=0,Mr=0,Er=0,Sr=0,xr=0,Or=0,Rr=0,Cr=0,Ir=0,Lr=0,Pr=0,Nr=0,Ur=0,Fr=0,zr=0,qr=0,Hr=0,jr=0,Dr=0,Vr=0,Br=0,Gr=0,Kr=0,Wr=0,Yr=0,Jr=0,Xr=0,Qr=0,Zr=0,$r=0,en=0,rn=0,nn=0,tn=0,on=0,an=0,un=0,sn=0,_n=0,ln=0,fn=0,cn=0,hn=0,dn=0,mn=0,pn=0,bn=0,wn=0,vn=0,kn=0,gn=0,yn=0;E=i[r+2>>0]|0;ze=a[r>>0]|0;pr=po(a[r+1>>0]|0|0,0,8)|0;_r=C;E=E&255;ir=po(E|0,0,16)|0;ir=pr|ze|ir&2031616;ze=po(a[r+3>>0]|0|0,0,8)|0;pr=C;M=po(a[r+4>>0]|0|0,0,16)|0;pr=pr|C;hr=a[r+5>>0]|0;Xe=po(hr|0,0,24)|0;pr=mo(ze|E|M|Xe|0,pr|C|0,5)|0;pr=pr&2097151;Xe=i[r+7>>0]|0;M=po(a[r+6>>0]|0|0,0,8)|0;E=C;Xe=Xe&255;ze=po(Xe|0,0,16)|0;E=mo(M|hr|ze|0,E|C|0,2)|0;E=E&2097151;ze=po(a[r+8>>0]|0|0,0,8)|0;hr=C;M=po(a[r+9>>0]|0|0,0,16)|0;hr=hr|C;_=a[r+10>>0]|0;Fe=po(_|0,0,24)|0;hr=mo(ze|Xe|M|Fe|0,hr|C|0,7)|0;hr=hr&2097151;Fe=po(a[r+11>>0]|0|0,0,8)|0;M=C;Xe=po(a[r+12>>0]|0|0,0,16)|0;M=M|C;ze=a[r+13>>0]|0;P=po(ze|0,0,24)|0;M=mo(Fe|_|Xe|P|0,M|C|0,4)|0;M=M&2097151;P=i[r+15>>0]|0;Xe=po(a[r+14>>0]|0|0,0,8)|0;_=C;P=P&255;Fe=po(P|0,0,16)|0;_=mo(Xe|ze|Fe|0,_|C|0,1)|0;_=_&2097151;Fe=po(a[r+16>>0]|0|0,0,8)|0;ze=C;Xe=po(a[r+17>>0]|0|0,0,16)|0;ze=ze|C;vn=a[r+18>>0]|0;ne=po(vn|0,0,24)|0;ze=mo(Fe|P|Xe|ne|0,ze|C|0,6)|0;ze=ze&2097151;ne=i[r+20>>0]|0;Xe=po(a[r+19>>0]|0|0,0,8)|0;P=C;ne=po(ne&255|0,0,16)|0;P=mo(Xe|vn|ne|0,P|C|0,3)|0;ne=C;vn=i[r+23>>0]|0;Xe=a[r+21>>0]|0;Fe=po(a[r+22>>0]|0|0,0,8)|0;fr=C;vn=vn&255;Ne=po(vn|0,0,16)|0;Ne=Fe|Xe|Ne&2031616;Xe=po(a[r+24>>0]|0|0,0,8)|0;Fe=C;p=po(a[r+25>>0]|0|0,0,16)|0;Fe=Fe|C;d=a[r+26>>0]|0;c=po(d|0,0,24)|0;Fe=mo(Xe|vn|p|c|0,Fe|C|0,5)|0;Fe=Fe&2097151;c=i[r+28>>0]|0;p=po(a[r+27>>0]|0|0,0,8)|0;vn=C;c=c&255;Xe=po(c|0,0,16)|0;vn=mo(p|d|Xe|0,vn|C|0,2)|0;vn=vn&2097151;Xe=po(a[r+29>>0]|0|0,0,8)|0;d=C;p=po(a[r+30>>0]|0|0,0,16)|0;d=d|C;Oe=po(a[r+31>>0]|0|0,0,24)|0;d=mo(Xe|c|p|Oe|0,d|C|0,7)|0;Oe=C;p=i[n+2>>0]|0;c=a[n>>0]|0;Xe=po(a[n+1>>0]|0|0,0,8)|0;re=C;p=p&255;ee=po(p|0,0,16)|0;ee=Xe|c|ee&2031616;c=po(a[n+3>>0]|0|0,0,8)|0;Xe=C;te=po(a[n+4>>0]|0|0,0,16)|0;Xe=Xe|C;m=a[n+5>>0]|0;pn=po(m|0,0,24)|0;Xe=mo(c|p|te|pn|0,Xe|C|0,5)|0;Xe=Xe&2097151;pn=i[n+7>>0]|0;te=po(a[n+6>>0]|0|0,0,8)|0;p=C;pn=pn&255;c=po(pn|0,0,16)|0;p=mo(te|m|c|0,p|C|0,2)|0;p=p&2097151;c=po(a[n+8>>0]|0|0,0,8)|0;m=C;te=po(a[n+9>>0]|0|0,0,16)|0;m=m|C;Ge=a[n+10>>0]|0;Pe=po(Ge|0,0,24)|0;m=mo(c|pn|te|Pe|0,m|C|0,7)|0;m=m&2097151;Pe=po(a[n+11>>0]|0|0,0,8)|0;te=C;pn=po(a[n+12>>0]|0|0,0,16)|0;te=te|C;c=a[n+13>>0]|0;yn=po(c|0,0,24)|0;te=mo(Pe|Ge|pn|yn|0,te|C|0,4)|0;te=te&2097151;yn=i[n+15>>0]|0;pn=po(a[n+14>>0]|0|0,0,8)|0;Ge=C;yn=yn&255;Pe=po(yn|0,0,16)|0;Ge=mo(pn|c|Pe|0,Ge|C|0,1)|0;Ge=Ge&2097151;Pe=po(a[n+16>>0]|0|0,0,8)|0;c=C;pn=po(a[n+17>>0]|0|0,0,16)|0;c=c|C;U=a[n+18>>0]|0;kr=po(U|0,0,24)|0;c=mo(Pe|yn|pn|kr|0,c|C|0,6)|0;c=c&2097151;kr=i[n+20>>0]|0;pn=po(a[n+19>>0]|0|0,0,8)|0;yn=C;kr=po(kr&255|0,0,16)|0;yn=mo(pn|U|kr|0,yn|C|0,3)|0;kr=C;U=i[n+23>>0]|0;pn=a[n+21>>0]|0;Pe=po(a[n+22>>0]|0|0,0,8)|0;ye=C;U=U&255;he=po(U|0,0,16)|0;he=Pe|pn|he&2031616;pn=po(a[n+24>>0]|0|0,0,8)|0;Pe=C;Ce=po(a[n+25>>0]|0|0,0,16)|0;Pe=Pe|C;A=a[n+26>>0]|0;bn=po(A|0,0,24)|0;Pe=mo(pn|U|Ce|bn|0,Pe|C|0,5)|0;Pe=Pe&2097151;bn=i[n+28>>0]|0;Ce=po(a[n+27>>0]|0|0,0,8)|0;U=C;bn=bn&255;pn=po(bn|0,0,16)|0;U=mo(Ce|A|pn|0,U|C|0,2)|0;U=U&2097151;pn=po(a[n+29>>0]|0|0,0,8)|0;A=C;Ce=po(a[n+30>>0]|0|0,0,16)|0;A=A|C;Se=po(a[n+31>>0]|0|0,0,24)|0;A=mo(pn|bn|Ce|Se|0,A|C|0,7)|0;Se=C;Ce=i[t+2>>0]|0;bn=a[t>>0]|0;pn=po(a[t+1>>0]|0|0,0,8)|0;Y=C;Ce=Ce&255;wn=po(Ce|0,0,16)|0;De=po(a[t+3>>0]|0|0,0,8)|0;Ae=C;Me=po(a[t+4>>0]|0|0,0,16)|0;Ae=Ae|C;sr=a[t+5>>0]|0;we=po(sr|0,0,24)|0;Ae=mo(De|Ce|Me|we|0,Ae|C|0,5)|0;we=i[t+7>>0]|0;Me=po(a[t+6>>0]|0|0,0,8)|0;Ce=C;we=we&255;De=po(we|0,0,16)|0;Ce=mo(Me|sr|De|0,Ce|C|0,2)|0;De=po(a[t+8>>0]|0|0,0,8)|0;sr=C;Me=po(a[t+9>>0]|0|0,0,16)|0;sr=sr|C;D=a[t+10>>0]|0;L=po(D|0,0,24)|0;sr=mo(De|we|Me|L|0,sr|C|0,7)|0;L=po(a[t+11>>0]|0|0,0,8)|0;Me=C;we=po(a[t+12>>0]|0|0,0,16)|0;Me=Me|C;De=a[t+13>>0]|0;S=po(De|0,0,24)|0;Me=mo(L|D|we|S|0,Me|C|0,4)|0;S=i[t+15>>0]|0;we=po(a[t+14>>0]|0|0,0,8)|0;D=C;S=S&255;L=po(S|0,0,16)|0;D=mo(we|De|L|0,D|C|0,1)|0;L=po(a[t+16>>0]|0|0,0,8)|0;De=C;we=po(a[t+17>>0]|0|0,0,16)|0;De=De|C;q=a[t+18>>0]|0;u=po(q|0,0,24)|0;De=mo(L|S|we|u|0,De|C|0,6)|0;u=i[t+20>>0]|0;we=po(a[t+19>>0]|0|0,0,8)|0;S=C;u=po(u&255|0,0,16)|0;S=mo(we|q|u|0,S|C|0,3)|0;u=C;q=i[t+23>>0]|0;we=a[t+21>>0]|0;L=po(a[t+22>>0]|0|0,0,8)|0;X=C;q=q&255;Q=po(q|0,0,16)|0;ke=po(a[t+24>>0]|0|0,0,8)|0;I=C;Ee=po(a[t+25>>0]|0|0,0,16)|0;I=I|C;r=a[t+26>>0]|0;ce=po(r|0,0,24)|0;I=mo(ke|q|Ee|ce|0,I|C|0,5)|0;ce=i[t+28>>0]|0;Ee=po(a[t+27>>0]|0|0,0,8)|0;q=C;ce=ce&255;ke=po(ce|0,0,16)|0;q=mo(Ee|r|ke|0,q|C|0,2)|0;ke=po(a[t+29>>0]|0|0,0,8)|0;r=C;Ee=po(a[t+30>>0]|0|0,0,16)|0;r=r|C;s=po(a[t+31>>0]|0|0,0,24)|0;r=mo(ke|ce|Ee|s|0,r|C|0,7)|0;s=C;Ee=yo(ee|0,re|0,ir|0,_r|0)|0;Ee=fo(pn|bn|wn&2031616|0,Y|0,Ee|0,C|0)|0;Y=C;wn=yo(Xe|0,0,ir|0,_r|0)|0;bn=C;pn=yo(ee|0,re|0,pr|0,0)|0;ce=C;ke=yo(p|0,0,ir|0,_r|0)|0;Re=C;ge=yo(Xe|0,0,pr|0,0)|0;fn=C;se=yo(ee|0,re|0,E|0,0)|0;se=fo(ge|0,fn|0,se|0,C|0)|0;Re=fo(se|0,C|0,ke|0,Re|0)|0;Ce=fo(Re|0,C|0,Ce&2097151|0,0)|0;Re=C;ke=yo(m|0,0,ir|0,_r|0)|0;se=C;fn=yo(p|0,0,pr|0,0)|0;ge=C;mn=yo(Xe|0,0,E|0,0)|0;dn=C;hn=yo(ee|0,re|0,hr|0,0)|0;cn=C;Le=yo(te|0,0,ir|0,_r|0)|0;Te=C;rn=yo(m|0,0,pr|0,0)|0;V=C;tn=yo(p|0,0,E|0,0)|0;Ie=C;on=yo(Xe|0,0,hr|0,0)|0;an=C;nn=yo(ee|0,re|0,M|0,0)|0;nn=fo(on|0,an|0,nn|0,C|0)|0;Ie=fo(nn|0,C|0,tn|0,Ie|0)|0;V=fo(Ie|0,C|0,rn|0,V|0)|0;Te=fo(V|0,C|0,Le|0,Te|0)|0;Me=fo(Te|0,C|0,Me&2097151|0,0)|0;Te=C;Le=yo(Ge|0,0,ir|0,_r|0)|0;V=C;rn=yo(te|0,0,pr|0,0)|0;Ie=C;tn=yo(m|0,0,E|0,0)|0;nn=C;an=yo(p|0,0,hr|0,0)|0;on=C;ln=yo(Xe|0,0,M|0,0)|0;_n=C;sn=yo(ee|0,re|0,_|0,0)|0;un=C;J=yo(c|0,0,ir|0,_r|0)|0;Ve=C;Dr=yo(Ge|0,0,pr|0,0)|0;ie=C;Br=yo(te|0,0,E|0,0)|0;jr=C;Kr=yo(m|0,0,hr|0,0)|0;Vr=C;Yr=yo(p|0,0,M|0,0)|0;Gr=C;Jr=yo(Xe|0,0,_|0,0)|0;Xr=C;Wr=yo(ee|0,re|0,ze|0,0)|0;Wr=fo(Jr|0,Xr|0,Wr|0,C|0)|0;Gr=fo(Wr|0,C|0,Yr|0,Gr|0)|0;Vr=fo(Gr|0,C|0,Kr|0,Vr|0)|0;jr=fo(Vr|0,C|0,Br|0,jr|0)|0;ie=fo(jr|0,C|0,Dr|0,ie|0)|0;Ve=fo(ie|0,C|0,J|0,Ve|0)|0;De=fo(Ve|0,C|0,De&2097151|0,0)|0;Ve=C;J=yo(yn|0,kr|0,ir|0,_r|0)|0;ie=C;Dr=yo(c|0,0,pr|0,0)|0;jr=C;Br=yo(Ge|0,0,E|0,0)|0;Vr=C;Kr=yo(te|0,0,hr|0,0)|0;Gr=C;Yr=yo(m|0,0,M|0,0)|0;Wr=C;Xr=yo(p|0,0,_|0,0)|0;Jr=C;en=yo(Xe|0,0,ze|0,0)|0;$r=C;Zr=yo(ee|0,re|0,P|0,ne|0)|0;Qr=C;ve=yo(he|0,ye|0,ir|0,_r|0)|0;Tr=C;Mr=yo(yn|0,kr|0,pr|0,0)|0;Er=C;Sr=yo(c|0,0,E|0,0)|0;xr=C;Or=yo(Ge|0,0,hr|0,0)|0;Rr=C;Cr=yo(te|0,0,M|0,0)|0;Ir=C;Lr=yo(m|0,0,_|0,0)|0;Pr=C;Nr=yo(p|0,0,ze|0,0)|0;Ur=C;zr=yo(Xe|0,0,P|0,ne|0)|0;qr=C;Hr=yo(ee|0,re|0,Ne|0,fr|0)|0;Hr=fo(zr|0,qr|0,Hr|0,C|0)|0;Ur=fo(Hr|0,C|0,Nr|0,Ur|0)|0;Pr=fo(Ur|0,C|0,Lr|0,Pr|0)|0;Ir=fo(Pr|0,C|0,Cr|0,Ir|0)|0;Rr=fo(Ir|0,C|0,Or|0,Rr|0)|0;xr=fo(Rr|0,C|0,Sr|0,xr|0)|0;Er=fo(xr|0,C|0,Mr|0,Er|0)|0;Tr=fo(Er|0,C|0,ve|0,Tr|0)|0;X=fo(Tr|0,C|0,L|we|Q&2031616|0,X|0)|0;Q=C;we=yo(Pe|0,0,ir|0,_r|0)|0;L=C;Tr=yo(he|0,ye|0,pr|0,0)|0;ve=C;Er=yo(yn|0,kr|0,E|0,0)|0;Mr=C;xr=yo(c|0,0,hr|0,0)|0;Sr=C;Rr=yo(Ge|0,0,M|0,0)|0;Or=C;Ir=yo(te|0,0,_|0,0)|0;Cr=C;Pr=yo(m|0,0,ze|0,0)|0;Lr=C;Ur=yo(p|0,0,P|0,ne|0)|0;Nr=C;Hr=yo(Xe|0,0,Ne|0,fr|0)|0;qr=C;zr=yo(ee|0,re|0,Fe|0,0)|0;Fr=C;H=yo(U|0,0,ir|0,_r|0)|0;z=C;er=yo(Pe|0,0,pr|0,0)|0;j=C;T=yo(he|0,ye|0,E|0,0)|0;rr=C;dr=yo(yn|0,kr|0,hr|0,0)|0;k=C;N=yo(c|0,0,M|0,0)|0;mr=C;He=yo(Ge|0,0,_|0,0)|0;x=C;ar=yo(te|0,0,ze|0,0)|0;je=C;K=yo(m|0,0,P|0,ne|0)|0;ur=C;Ye=yo(p|0,0,Ne|0,fr|0)|0;W=C;yr=yo(Xe|0,0,Fe|0,0)|0;Ar=C;Je=yo(ee|0,re|0,vn|0,0)|0;Je=fo(yr|0,Ar|0,Je|0,C|0)|0;W=fo(Je|0,C|0,Ye|0,W|0)|0;ur=fo(W|0,C|0,K|0,ur|0)|0;je=fo(ur|0,C|0,ar|0,je|0)|0;x=fo(je|0,C|0,He|0,x|0)|0;mr=fo(x|0,C|0,N|0,mr|0)|0;k=fo(mr|0,C|0,dr|0,k|0)|0;rr=fo(k|0,C|0,T|0,rr|0)|0;j=fo(rr|0,C|0,er|0,j|0)|0;z=fo(j|0,C|0,H|0,z|0)|0;q=fo(z|0,C|0,q&2097151|0,0)|0;z=C;_r=yo(A|0,Se|0,ir|0,_r|0)|0;ir=C;H=yo(U|0,0,pr|0,0)|0;j=C;er=yo(Pe|0,0,E|0,0)|0;rr=C;T=yo(he|0,ye|0,hr|0,0)|0;k=C;dr=yo(yn|0,kr|0,M|0,0)|0;mr=C;N=yo(c|0,0,_|0,0)|0;x=C;He=yo(Ge|0,0,ze|0,0)|0;je=C;ar=yo(te|0,0,P|0,ne|0)|0;ur=C;K=yo(m|0,0,Ne|0,fr|0)|0;W=C;Ye=yo(p|0,0,Fe|0,0)|0;Je=C;Ar=yo(Xe|0,0,vn|0,0)|0;yr=C;re=yo(ee|0,re|0,d|0,Oe|0)|0;ee=C;pr=yo(A|0,Se|0,pr|0,0)|0;br=C;tr=yo(U|0,0,E|0,0)|0;y=C;oe=yo(Pe|0,0,hr|0,0)|0;or=C;ue=yo(he|0,ye|0,M|0,0)|0;$=C;wr=yo(yn|0,kr|0,_|0,0)|0;lr=C;fe=yo(c|0,0,ze|0,0)|0;vr=C;pe=yo(Ge|0,0,P|0,ne|0)|0;le=C;qe=yo(te|0,0,Ne|0,fr|0)|0;me=C;Qe=yo(m|0,0,Fe|0,0)|0;ae=C;cr=yo(p|0,0,vn|0,0)|0;g=C;Xe=yo(Xe|0,0,d|0,Oe|0)|0;Xe=fo(cr|0,g|0,Xe|0,C|0)|0;ae=fo(Xe|0,C|0,Qe|0,ae|0)|0;me=fo(ae|0,C|0,qe|0,me|0)|0;le=fo(me|0,C|0,pe|0,le|0)|0;vr=fo(le|0,C|0,fe|0,vr|0)|0;lr=fo(vr|0,C|0,wr|0,lr|0)|0;$=fo(lr|0,C|0,ue|0,$|0)|0;or=fo($|0,C|0,oe|0,or|0)|0;y=fo(or|0,C|0,tr|0,y|0)|0;br=fo(y|0,C|0,pr|0,br|0)|0;pr=C;E=yo(A|0,Se|0,E|0,0)|0;y=C;tr=yo(U|0,0,hr|0,0)|0;or=C;oe=yo(Pe|0,0,M|0,0)|0;$=C;ue=yo(he|0,ye|0,_|0,0)|0;lr=C;wr=yo(yn|0,kr|0,ze|0,0)|0;vr=C;fe=yo(c|0,0,P|0,ne|0)|0;le=C;pe=yo(Ge|0,0,Ne|0,fr|0)|0;me=C;qe=yo(te|0,0,Fe|0,0)|0;ae=C;Qe=yo(m|0,0,vn|0,0)|0;Xe=C;p=yo(p|0,0,d|0,Oe|0)|0;g=C;hr=yo(A|0,Se|0,hr|0,0)|0;cr=C;Ze=yo(U|0,0,M|0,0)|0;b=C;O=yo(Pe|0,0,_|0,0)|0;$e=C;h=yo(he|0,ye|0,ze|0,0)|0;v=C;Z=yo(yn|0,kr|0,P|0,ne|0)|0;o=C;_e=yo(c|0,0,Ne|0,fr|0)|0;w=C;de=yo(Ge|0,0,Fe|0,0)|0;R=C;gr=yo(te|0,0,vn|0,0)|0;f=C;m=yo(m|0,0,d|0,Oe|0)|0;m=fo(gr|0,f|0,m|0,C|0)|0;R=fo(m|0,C|0,de|0,R|0)|0;w=fo(R|0,C|0,_e|0,w|0)|0;o=fo(w|0,C|0,Z|0,o|0)|0;v=fo(o|0,C|0,h|0,v|0)|0;$e=fo(v|0,C|0,O|0,$e|0)|0;b=fo($e|0,C|0,Ze|0,b|0)|0;cr=fo(b|0,C|0,hr|0,cr|0)|0;hr=C;M=yo(A|0,Se|0,M|0,0)|0;b=C;Ze=yo(U|0,0,_|0,0)|0;$e=C;O=yo(Pe|0,0,ze|0,0)|0;v=C;h=yo(he|0,ye|0,P|0,ne|0)|0;o=C;Z=yo(yn|0,kr|0,Ne|0,fr|0)|0;w=C;_e=yo(c|0,0,Fe|0,0)|0;R=C;de=yo(Ge|0,0,vn|0,0)|0;m=C;te=yo(te|0,0,d|0,Oe|0)|0;f=C;_=yo(A|0,Se|0,_|0,0)|0;gr=C;n=yo(U|0,0,ze|0,0)|0;F=C;G=yo(Pe|0,0,P|0,ne|0)|0;Ue=C;We=yo(he|0,ye|0,Ne|0,fr|0)|0;B=C;Be=yo(yn|0,kr|0,Fe|0,0)|0;Ke=C;t=yo(c|0,0,vn|0,0)|0;l=C;Ge=yo(Ge|0,0,d|0,Oe|0)|0;Ge=fo(t|0,l|0,Ge|0,C|0)|0;Ke=fo(Ge|0,C|0,Be|0,Ke|0)|0;B=fo(Ke|0,C|0,We|0,B|0)|0;Ue=fo(B|0,C|0,G|0,Ue|0)|0;F=fo(Ue|0,C|0,n|0,F|0)|0;gr=fo(F|0,C|0,_|0,gr|0)|0;_=C;ze=yo(A|0,Se|0,ze|0,0)|0;F=C;n=yo(U|0,0,P|0,ne|0)|0;Ue=C;G=yo(Pe|0,0,Ne|0,fr|0)|0;B=C;We=yo(he|0,ye|0,Fe|0,0)|0;Ke=C;Be=yo(yn|0,kr|0,vn|0,0)|0;Ge=C;c=yo(c|0,0,d|0,Oe|0)|0;l=C;ne=yo(A|0,Se|0,P|0,ne|0)|0;t=C;P=yo(U|0,0,Ne|0,fr|0)|0;xe=C;be=yo(Pe|0,0,Fe|0,0)|0;nr=C;kn=yo(he|0,ye|0,vn|0,0)|0;gn=C;kr=yo(yn|0,kr|0,d|0,Oe|0)|0;kr=fo(kn|0,gn|0,kr|0,C|0)|0;nr=fo(kr|0,C|0,be|0,nr|0)|0;xe=fo(nr|0,C|0,P|0,xe|0)|0;t=fo(xe|0,C|0,ne|0,t|0)|0;ne=C;fr=yo(A|0,Se|0,Ne|0,fr|0)|0;Ne=C;xe=yo(U|0,0,Fe|0,0)|0;P=C;nr=yo(Pe|0,0,vn|0,0)|0;be=C;ye=yo(he|0,ye|0,d|0,Oe|0)|0;he=C;Fe=yo(A|0,Se|0,Fe|0,0)|0;kr=C;gn=yo(U|0,0,vn|0,0)|0;kn=C;Pe=yo(Pe|0,0,d|0,Oe|0)|0;Pe=fo(gn|0,kn|0,Pe|0,C|0)|0;kr=fo(Pe|0,C|0,Fe|0,kr|0)|0;Fe=C;vn=yo(A|0,Se|0,vn|0,0)|0;Pe=C;U=yo(U|0,0,d|0,Oe|0)|0;U=fo(vn|0,Pe|0,U|0,C|0)|0;Pe=C;Oe=yo(A|0,Se|0,d|0,Oe|0)|0;d=C;Se=fo(Ee|0,Y|0,1048576,0)|0;Se=mo(Se|0,C|0,21)|0;A=C;ce=fo(wn|0,bn|0,pn|0,ce|0)|0;ce=fo(ce|0,C|0,Se|0,A|0)|0;Ae=fo(ce|0,C|0,Ae&2097151|0,0)|0;ce=C;A=po(Se|0,A|0,21)|0;A=lo(Ee|0,Y|0,A|0,C|0)|0;Y=C;Ee=fo(Ce|0,Re|0,1048576,0)|0;Ee=mo(Ee|0,C|0,21)|0;Se=C;cn=fo(mn|0,dn|0,hn|0,cn|0)|0;ge=fo(cn|0,C|0,fn|0,ge|0)|0;se=fo(ge|0,C|0,ke|0,se|0)|0;sr=fo(se|0,C|0,sr&2097151|0,0)|0;sr=fo(sr|0,C|0,Ee|0,Se|0)|0;se=C;Se=po(Ee|0,Se|0,21)|0;Ee=C;ke=fo(Me|0,Te|0,1048576,0)|0;ke=co(ke|0,C|0,21)|0;ge=C;un=fo(ln|0,_n|0,sn|0,un|0)|0;on=fo(un|0,C|0,an|0,on|0)|0;nn=fo(on|0,C|0,tn|0,nn|0)|0;Ie=fo(nn|0,C|0,rn|0,Ie|0)|0;V=fo(Ie|0,C|0,Le|0,V|0)|0;D=fo(V|0,C|0,D&2097151|0,0)|0;D=fo(D|0,C|0,ke|0,ge|0)|0;V=C;ge=po(ke|0,ge|0,21)|0;ke=C;Le=fo(De|0,Ve|0,1048576,0)|0;Le=co(Le|0,C|0,21)|0;Ie=C;Qr=fo(en|0,$r|0,Zr|0,Qr|0)|0;Jr=fo(Qr|0,C|0,Xr|0,Jr|0)|0;Wr=fo(Jr|0,C|0,Yr|0,Wr|0)|0;Gr=fo(Wr|0,C|0,Kr|0,Gr|0)|0;Vr=fo(Gr|0,C|0,Br|0,Vr|0)|0;jr=fo(Vr|0,C|0,Dr|0,jr|0)|0;ie=fo(jr|0,C|0,J|0,ie|0)|0;u=fo(ie|0,C|0,S|0,u|0)|0;u=fo(u|0,C|0,Le|0,Ie|0)|0;S=C;Ie=po(Le|0,Ie|0,21)|0;Le=C;ie=fo(X|0,Q|0,1048576,0)|0;ie=co(ie|0,C|0,21)|0;J=C;Fr=fo(Hr|0,qr|0,zr|0,Fr|0)|0;Nr=fo(Fr|0,C|0,Ur|0,Nr|0)|0;Lr=fo(Nr|0,C|0,Pr|0,Lr|0)|0;Cr=fo(Lr|0,C|0,Ir|0,Cr|0)|0;Or=fo(Cr|0,C|0,Rr|0,Or|0)|0;Sr=fo(Or|0,C|0,xr|0,Sr|0)|0;Mr=fo(Sr|0,C|0,Er|0,Mr|0)|0;ve=fo(Mr|0,C|0,Tr|0,ve|0)|0;L=fo(ve|0,C|0,we|0,L|0)|0;I=fo(L|0,C|0,I&2097151|0,0)|0;I=fo(I|0,C|0,ie|0,J|0)|0;L=C;J=po(ie|0,J|0,21)|0;ie=C;we=fo(q|0,z|0,1048576,0)|0;we=co(we|0,C|0,21)|0;ve=C;ee=fo(Ar|0,yr|0,re|0,ee|0)|0;Je=fo(ee|0,C|0,Ye|0,Je|0)|0;W=fo(Je|0,C|0,K|0,W|0)|0;ur=fo(W|0,C|0,ar|0,ur|0)|0;je=fo(ur|0,C|0,He|0,je|0)|0;x=fo(je|0,C|0,N|0,x|0)|0;mr=fo(x|0,C|0,dr|0,mr|0)|0;k=fo(mr|0,C|0,T|0,k|0)|0;rr=fo(k|0,C|0,er|0,rr|0)|0;j=fo(rr|0,C|0,H|0,j|0)|0;ir=fo(j|0,C|0,_r|0,ir|0)|0;s=fo(ir|0,C|0,r|0,s|0)|0;s=fo(s|0,C|0,we|0,ve|0)|0;r=C;ve=po(we|0,ve|0,21)|0;we=C;ir=fo(br|0,pr|0,1048576,0)|0;ir=co(ir|0,C|0,21)|0;_r=C;g=fo(Qe|0,Xe|0,p|0,g|0)|0;ae=fo(g|0,C|0,qe|0,ae|0)|0;me=fo(ae|0,C|0,pe|0,me|0)|0;le=fo(me|0,C|0,fe|0,le|0)|0;vr=fo(le|0,C|0,wr|0,vr|0)|0;lr=fo(vr|0,C|0,ue|0,lr|0)|0;$=fo(lr|0,C|0,oe|0,$|0)|0;or=fo($|0,C|0,tr|0,or|0)|0;y=fo(or|0,C|0,E|0,y|0)|0;y=fo(y|0,C|0,ir|0,_r|0)|0;E=C;_r=po(ir|0,_r|0,21)|0;ir=C;or=fo(cr|0,hr|0,1048576,0)|0;or=co(or|0,C|0,21)|0;tr=C;f=fo(de|0,m|0,te|0,f|0)|0;R=fo(f|0,C|0,_e|0,R|0)|0;w=fo(R|0,C|0,Z|0,w|0)|0;o=fo(w|0,C|0,h|0,o|0)|0;v=fo(o|0,C|0,O|0,v|0)|0;$e=fo(v|0,C|0,Ze|0,$e|0)|0;b=fo($e|0,C|0,M|0,b|0)|0;b=fo(b|0,C|0,or|0,tr|0)|0;M=C;tr=po(or|0,tr|0,21)|0;or=C;$e=fo(gr|0,_|0,1048576,0)|0;$e=co($e|0,C|0,21)|0;Ze=C;l=fo(Be|0,Ge|0,c|0,l|0)|0;Ke=fo(l|0,C|0,We|0,Ke|0)|0;B=fo(Ke|0,C|0,G|0,B|0)|0;Ue=fo(B|0,C|0,n|0,Ue|0)|0;F=fo(Ue|0,C|0,ze|0,F|0)|0;F=fo(F|0,C|0,$e|0,Ze|0)|0;ze=C;Ze=po($e|0,Ze|0,21)|0;$e=C;Ue=fo(t|0,ne|0,1048576,0)|0;Ue=co(Ue|0,C|0,21)|0;n=C;he=fo(nr|0,be|0,ye|0,he|0)|0;P=fo(he|0,C|0,xe|0,P|0)|0;Ne=fo(P|0,C|0,fr|0,Ne|0)|0;Ne=fo(Ne|0,C|0,Ue|0,n|0)|0;fr=C;n=po(Ue|0,n|0,21)|0;n=lo(t|0,ne|0,n|0,C|0)|0;ne=C;t=fo(kr|0,Fe|0,1048576,0)|0;t=mo(t|0,C|0,21)|0;Ue=C;Pe=fo(U|0,Pe|0,t|0,Ue|0)|0;U=C;Ue=po(t|0,Ue|0,21)|0;Ue=lo(kr|0,Fe|0,Ue|0,C|0)|0;Fe=C;kr=fo(Oe|0,d|0,1048576,0)|0;kr=mo(kr|0,C|0,21)|0;t=C;P=po(kr|0,t|0,21)|0;P=lo(Oe|0,d|0,P|0,C|0)|0;d=C;Oe=fo(Ae|0,ce|0,1048576,0)|0;Oe=mo(Oe|0,C|0,21)|0;xe=C;he=po(Oe|0,xe|0,21)|0;he=lo(Ae|0,ce|0,he|0,C|0)|0;ce=C;Ae=fo(sr|0,se|0,1048576,0)|0;Ae=co(Ae|0,C|0,21)|0;ye=C;be=po(Ae|0,ye|0,21)|0;be=lo(sr|0,se|0,be|0,C|0)|0;se=C;sr=fo(D|0,V|0,1048576,0)|0;sr=co(sr|0,C|0,21)|0;nr=C;B=po(sr|0,nr|0,21)|0;G=C;Ke=fo(u|0,S|0,1048576,0)|0;Ke=co(Ke|0,C|0,21)|0;We=C;l=po(Ke|0,We|0,21)|0;c=C;Ge=fo(I|0,L|0,1048576,0)|0;Ge=co(Ge|0,C|0,21)|0;Be=C;v=po(Ge|0,Be|0,21)|0;O=C;o=fo(s|0,r|0,1048576,0)|0;o=co(o|0,C|0,21)|0;h=C;w=po(o|0,h|0,21)|0;Z=C;R=fo(y|0,E|0,1048576,0)|0;R=co(R|0,C|0,21)|0;_e=C;f=po(R|0,_e|0,21)|0;te=C;m=fo(b|0,M|0,1048576,0)|0;m=co(m|0,C|0,21)|0;de=C;$=po(m|0,de|0,21)|0;oe=C;lr=fo(F|0,ze|0,1048576,0)|0;lr=co(lr|0,C|0,21)|0;ue=C;ne=fo(lr|0,ue|0,n|0,ne|0)|0;n=C;ue=po(lr|0,ue|0,21)|0;ue=lo(F|0,ze|0,ue|0,C|0)|0;ze=C;F=fo(Ne|0,fr|0,1048576,0)|0;F=co(F|0,C|0,21)|0;lr=C;Fe=fo(F|0,lr|0,Ue|0,Fe|0)|0;Ue=C;lr=po(F|0,lr|0,21)|0;lr=lo(Ne|0,fr|0,lr|0,C|0)|0;fr=C;Ne=fo(Pe|0,U|0,1048576,0)|0;Ne=mo(Ne|0,C|0,21)|0;F=C;d=fo(Ne|0,F|0,P|0,d|0)|0;P=C;F=po(Ne|0,F|0,21)|0;F=lo(Pe|0,U|0,F|0,C|0)|0;U=C;Pe=yo(kr|0,t|0,666643,0)|0;Ne=C;vr=yo(kr|0,t|0,470296,0)|0;wr=C;le=yo(kr|0,t|0,654183,0)|0;fe=C;me=yo(kr|0,t|0,-997805,-1)|0;pe=C;ae=yo(kr|0,t|0,136657,0)|0;qe=C;t=yo(kr|0,t|0,-683901,-1)|0;t=fo(gr|0,_|0,t|0,C|0)|0;$e=lo(t|0,C|0,Ze|0,$e|0)|0;de=fo($e|0,C|0,m|0,de|0)|0;m=C;$e=yo(d|0,P|0,666643,0)|0;Ze=C;t=yo(d|0,P|0,470296,0)|0;_=C;gr=yo(d|0,P|0,654183,0)|0;kr=C;g=yo(d|0,P|0,-997805,-1)|0;p=C;Xe=yo(d|0,P|0,136657,0)|0;Qe=C;P=yo(d|0,P|0,-683901,-1)|0;d=C;j=yo(F|0,U|0,666643,0)|0;H=C;rr=yo(F|0,U|0,470296,0)|0;er=C;k=yo(F|0,U|0,654183,0)|0;T=C;mr=yo(F|0,U|0,-997805,-1)|0;dr=C;x=yo(F|0,U|0,136657,0)|0;N=C;U=yo(F|0,U|0,-683901,-1)|0;F=C;pe=fo(cr|0,hr|0,me|0,pe|0)|0;Qe=fo(pe|0,C|0,Xe|0,Qe|0)|0;F=fo(Qe|0,C|0,U|0,F|0)|0;or=lo(F|0,C|0,tr|0,or|0)|0;_e=fo(or|0,C|0,R|0,_e|0)|0;R=C;or=yo(Fe|0,Ue|0,666643,0)|0;tr=C;F=yo(Fe|0,Ue|0,470296,0)|0;U=C;Qe=yo(Fe|0,Ue|0,654183,0)|0;Xe=C;pe=yo(Fe|0,Ue|0,-997805,-1)|0;me=C;hr=yo(Fe|0,Ue|0,136657,0)|0;cr=C;Ue=yo(Fe|0,Ue|0,-683901,-1)|0;Fe=C;je=yo(lr|0,fr|0,666643,0)|0;He=C;ur=yo(lr|0,fr|0,470296,0)|0;ar=C;W=yo(lr|0,fr|0,654183,0)|0;K=C;Je=yo(lr|0,fr|0,-997805,-1)|0;Ye=C;ee=yo(lr|0,fr|0,136657,0)|0;re=C;fr=yo(lr|0,fr|0,-683901,-1)|0;lr=C;wr=fo(gr|0,kr|0,vr|0,wr|0)|0;pr=fo(wr|0,C|0,br|0,pr|0)|0;dr=fo(pr|0,C|0,mr|0,dr|0)|0;cr=fo(dr|0,C|0,hr|0,cr|0)|0;lr=fo(cr|0,C|0,fr|0,lr|0)|0;ir=lo(lr|0,C|0,_r|0,ir|0)|0;h=fo(ir|0,C|0,o|0,h|0)|0;o=C;ir=yo(ne|0,n|0,666643,0)|0;ir=fo(sr|0,nr|0,ir|0,C|0)|0;Ve=fo(ir|0,C|0,De|0,Ve|0)|0;Le=lo(Ve|0,C|0,Ie|0,Le|0)|0;Ie=C;Ve=yo(ne|0,n|0,470296,0)|0;De=C;ir=yo(ne|0,n|0,654183,0)|0;nr=C;tr=fo(ur|0,ar|0,or|0,tr|0)|0;nr=fo(tr|0,C|0,ir|0,nr|0)|0;We=fo(nr|0,C|0,Ke|0,We|0)|0;Q=fo(We|0,C|0,X|0,Q|0)|0;ie=lo(Q|0,C|0,J|0,ie|0)|0;J=C;Q=yo(ne|0,n|0,-997805,-1)|0;X=C;We=yo(ne|0,n|0,136657,0)|0;Ke=C;Ze=fo(rr|0,er|0,$e|0,Ze|0)|0;Xe=fo(Ze|0,C|0,Qe|0,Xe|0)|0;Ye=fo(Xe|0,C|0,Je|0,Ye|0)|0;Ke=fo(Ye|0,C|0,We|0,Ke|0)|0;Be=fo(Ke|0,C|0,Ge|0,Be|0)|0;z=fo(Be|0,C|0,q|0,z|0)|0;we=lo(z|0,C|0,ve|0,we|0)|0;ve=C;n=yo(ne|0,n|0,-683901,-1)|0;ne=C;z=fo(Le|0,Ie|0,1048576,0)|0;z=co(z|0,C|0,21)|0;q=C;He=fo(Ve|0,De|0,je|0,He|0)|0;S=fo(He|0,C|0,u|0,S|0)|0;c=lo(S|0,C|0,l|0,c|0)|0;c=fo(c|0,C|0,z|0,q|0)|0;l=C;q=po(z|0,q|0,21)|0;z=C;S=fo(ie|0,J|0,1048576,0)|0;S=co(S|0,C|0,21)|0;u=C;H=fo(F|0,U|0,j|0,H|0)|0;K=fo(H|0,C|0,W|0,K|0)|0;X=fo(K|0,C|0,Q|0,X|0)|0;L=fo(X|0,C|0,I|0,L|0)|0;O=lo(L|0,C|0,v|0,O|0)|0;O=fo(O|0,C|0,S|0,u|0)|0;v=C;u=po(S|0,u|0,21)|0;S=C;L=fo(we|0,ve|0,1048576,0)|0;L=co(L|0,C|0,21)|0;I=C;Ne=fo(t|0,_|0,Pe|0,Ne|0)|0;T=fo(Ne|0,C|0,k|0,T|0)|0;me=fo(T|0,C|0,pe|0,me|0)|0;re=fo(me|0,C|0,ee|0,re|0)|0;ne=fo(re|0,C|0,n|0,ne|0)|0;r=fo(ne|0,C|0,s|0,r|0)|0;Z=lo(r|0,C|0,w|0,Z|0)|0;Z=fo(Z|0,C|0,L|0,I|0)|0;w=C;I=po(L|0,I|0,21)|0;L=C;r=fo(h|0,o|0,1048576,0)|0;r=co(r|0,C|0,21)|0;s=C;fe=fo(g|0,p|0,le|0,fe|0)|0;N=fo(fe|0,C|0,x|0,N|0)|0;Fe=fo(N|0,C|0,Ue|0,Fe|0)|0;E=fo(Fe|0,C|0,y|0,E|0)|0;te=lo(E|0,C|0,f|0,te|0)|0;te=fo(te|0,C|0,r|0,s|0)|0;f=C;s=po(r|0,s|0,21)|0;s=lo(h|0,o|0,s|0,C|0)|0;o=C;h=fo(_e|0,R|0,1048576,0)|0;h=co(h|0,C|0,21)|0;r=C;qe=fo(P|0,d|0,ae|0,qe|0)|0;M=fo(qe|0,C|0,b|0,M|0)|0;oe=lo(M|0,C|0,$|0,oe|0)|0;oe=fo(oe|0,C|0,h|0,r|0)|0;$=C;r=po(h|0,r|0,21)|0;r=lo(_e|0,R|0,r|0,C|0)|0;R=C;_e=fo(de|0,m|0,1048576,0)|0;_e=co(_e|0,C|0,21)|0;h=C;ze=fo(_e|0,h|0,ue|0,ze|0)|0;ue=C;h=po(_e|0,h|0,21)|0;h=lo(de|0,m|0,h|0,C|0)|0;m=C;de=fo(c|0,l|0,1048576,0)|0;de=co(de|0,C|0,21)|0;_e=C;M=po(de|0,_e|0,21)|0;b=C;qe=fo(O|0,v|0,1048576,0)|0;qe=co(qe|0,C|0,21)|0;ae=C;d=po(qe|0,ae|0,21)|0;P=C;E=fo(Z|0,w|0,1048576,0)|0;E=co(E|0,C|0,21)|0;y=C;o=fo(E|0,y|0,s|0,o|0)|0;s=C;y=po(E|0,y|0,21)|0;y=lo(Z|0,w|0,y|0,C|0)|0;w=C;Z=fo(te|0,f|0,1048576,0)|0;Z=co(Z|0,C|0,21)|0;E=C;R=fo(Z|0,E|0,r|0,R|0)|0;r=C;E=po(Z|0,E|0,21)|0;E=lo(te|0,f|0,E|0,C|0)|0;f=C;te=fo(oe|0,$|0,1048576,0)|0;te=co(te|0,C|0,21)|0;Z=C;m=fo(te|0,Z|0,h|0,m|0)|0;h=C;Z=po(te|0,Z|0,21)|0;Z=lo(oe|0,$|0,Z|0,C|0)|0;$=C;oe=yo(ze|0,ue|0,666643,0)|0;te=C;Fe=yo(ze|0,ue|0,470296,0)|0;Ue=C;N=yo(ze|0,ue|0,654183,0)|0;x=C;fe=yo(ze|0,ue|0,-997805,-1)|0;le=C;p=yo(ze|0,ue|0,136657,0)|0;g=C;ue=yo(ze|0,ue|0,-683901,-1)|0;ue=fo(qe|0,ae|0,ue|0,C|0)|0;ve=fo(ue|0,C|0,we|0,ve|0)|0;L=lo(ve|0,C|0,I|0,L|0)|0;I=C;ve=yo(m|0,h|0,666643,0)|0;we=C;ue=yo(m|0,h|0,470296,0)|0;ae=C;qe=yo(m|0,h|0,654183,0)|0;ze=C;ne=yo(m|0,h|0,-997805,-1)|0;n=C;re=yo(m|0,h|0,136657,0)|0;ee=C;h=yo(m|0,h|0,-683901,-1)|0;m=C;me=yo(Z|0,$|0,666643,0)|0;me=fo(be|0,se|0,me|0,C|0)|0;se=C;be=yo(Z|0,$|0,470296,0)|0;pe=C;T=yo(Z|0,$|0,654183,0)|0;k=C;Ne=yo(Z|0,$|0,-997805,-1)|0;Pe=C;_=yo(Z|0,$|0,136657,0)|0;t=C;$=yo(Z|0,$|0,-683901,-1)|0;Z=C;le=fo(re|0,ee|0,fe|0,le|0)|0;Z=fo(le|0,C|0,$|0,Z|0)|0;_e=fo(Z|0,C|0,de|0,_e|0)|0;J=fo(_e|0,C|0,ie|0,J|0)|0;S=lo(J|0,C|0,u|0,S|0)|0;u=C;J=yo(R|0,r|0,666643,0)|0;ie=C;_e=yo(R|0,r|0,470296,0)|0;_e=fo(me|0,se|0,_e|0,C|0)|0;se=C;me=yo(R|0,r|0,654183,0)|0;de=C;Z=yo(R|0,r|0,-997805,-1)|0;$=C;le=yo(R|0,r|0,136657,0)|0;fe=C;r=yo(R|0,r|0,-683901,-1)|0;R=C;ee=yo(E|0,f|0,666643,0)|0;re=C;X=yo(E|0,f|0,470296,0)|0;Q=C;K=yo(E|0,f|0,654183,0)|0;W=C;H=yo(E|0,f|0,-997805,-1)|0;j=C;U=yo(E|0,f|0,136657,0)|0;F=C;f=yo(E|0,f|0,-683901,-1)|0;E=C;Ue=fo(qe|0,ze|0,Fe|0,Ue|0)|0;Pe=fo(Ue|0,C|0,Ne|0,Pe|0)|0;Ie=fo(Pe|0,C|0,Le|0,Ie|0)|0;z=lo(Ie|0,C|0,q|0,z|0)|0;fe=fo(z|0,C|0,le|0,fe|0)|0;E=fo(fe|0,C|0,f|0,E|0)|0;f=C;fe=yo(o|0,s|0,666643,0)|0;Y=fo(fe|0,C|0,A|0,Y|0)|0;A=C;fe=yo(o|0,s|0,470296,0)|0;le=C;z=yo(o|0,s|0,654183,0)|0;q=C;xe=fo(Ce|0,Re|0,Oe|0,xe|0)|0;Ee=lo(xe|0,C|0,Se|0,Ee|0)|0;ie=fo(Ee|0,C|0,J|0,ie|0)|0;q=fo(ie|0,C|0,z|0,q|0)|0;Q=fo(q|0,C|0,X|0,Q|0)|0;X=C;q=yo(o|0,s|0,-997805,-1)|0;z=C;ie=yo(o|0,s|0,136657,0)|0;J=C;ye=fo(Me|0,Te|0,Ae|0,ye|0)|0;ke=lo(ye|0,C|0,ge|0,ke|0)|0;we=fo(ke|0,C|0,ve|0,we|0)|0;pe=fo(we|0,C|0,be|0,pe|0)|0;de=fo(pe|0,C|0,me|0,de|0)|0;J=fo(de|0,C|0,ie|0,J|0)|0;j=fo(J|0,C|0,H|0,j|0)|0;H=C;s=yo(o|0,s|0,-683901,-1)|0;o=C;J=fo(Y|0,A|0,1048576,0)|0;J=co(J|0,C|0,21)|0;ie=C;le=fo(he|0,ce|0,fe|0,le|0)|0;re=fo(le|0,C|0,ee|0,re|0)|0;re=fo(re|0,C|0,J|0,ie|0)|0;ee=C;ie=po(J|0,ie|0,21)|0;ie=lo(Y|0,A|0,ie|0,C|0)|0;A=C;Y=fo(Q|0,X|0,1048576,0)|0;Y=co(Y|0,C|0,21)|0;J=C;z=fo(_e|0,se|0,q|0,z|0)|0;W=fo(z|0,C|0,K|0,W|0)|0;W=fo(W|0,C|0,Y|0,J|0)|0;K=C;J=po(Y|0,J|0,21)|0;Y=C;z=fo(j|0,H|0,1048576,0)|0;z=co(z|0,C|0,21)|0;q=C;te=fo(ue|0,ae|0,oe|0,te|0)|0;k=fo(te|0,C|0,T|0,k|0)|0;V=fo(k|0,C|0,D|0,V|0)|0;G=lo(V|0,C|0,B|0,G|0)|0;$=fo(G|0,C|0,Z|0,$|0)|0;o=fo($|0,C|0,s|0,o|0)|0;F=fo(o|0,C|0,U|0,F|0)|0;F=fo(F|0,C|0,z|0,q|0)|0;U=C;q=po(z|0,q|0,21)|0;z=C;o=fo(E|0,f|0,1048576,0)|0;o=co(o|0,C|0,21)|0;s=C;x=fo(ne|0,n|0,N|0,x|0)|0;t=fo(x|0,C|0,_|0,t|0)|0;l=fo(t|0,C|0,c|0,l|0)|0;b=lo(l|0,C|0,M|0,b|0)|0;R=fo(b|0,C|0,r|0,R|0)|0;R=fo(R|0,C|0,o|0,s|0)|0;r=C;s=po(o|0,s|0,21)|0;s=lo(E|0,f|0,s|0,C|0)|0;f=C;E=fo(S|0,u|0,1048576,0)|0;E=co(E|0,C|0,21)|0;o=C;g=fo(h|0,m|0,p|0,g|0)|0;v=fo(g|0,C|0,O|0,v|0)|0;v=fo(v|0,C|0,E|0,o|0)|0;P=lo(v|0,C|0,d|0,P|0)|0;d=C;o=po(E|0,o|0,21)|0;o=lo(S|0,u|0,o|0,C|0)|0;u=C;S=fo(L|0,I|0,1048576,0)|0;S=co(S|0,C|0,21)|0;E=C;w=fo(y|0,w|0,S|0,E|0)|0;y=C;E=po(S|0,E|0,21)|0;S=C;v=fo(re|0,ee|0,1048576,0)|0;v=co(v|0,C|0,21)|0;O=C;g=po(v|0,O|0,21)|0;p=C;m=fo(W|0,K|0,1048576,0)|0;m=co(m|0,C|0,21)|0;h=C;b=po(m|0,h|0,21)|0;M=C;l=fo(F|0,U|0,1048576,0)|0;l=co(l|0,C|0,21)|0;c=C;f=fo(s|0,f|0,l|0,c|0)|0;s=C;c=po(l|0,c|0,21)|0;l=C;t=fo(R|0,r|0,1048576,0)|0;t=co(t|0,C|0,21)|0;_=C;u=fo(o|0,u|0,t|0,_|0)|0;o=C;_=po(t|0,_|0,21)|0;_=lo(R|0,r|0,_|0,C|0)|0;r=C;R=fo(P|0,d|0,1048576,0)|0;R=co(R|0,C|0,21)|0;t=C;x=po(R|0,t|0,21)|0;x=lo(P|0,d|0,x|0,C|0)|0;d=C;P=fo(w|0,y|0,1048576,0)|0;P=co(P|0,C|0,21)|0;N=C;n=po(P|0,N|0,21)|0;n=lo(w|0,y|0,n|0,C|0)|0;y=C;w=yo(P|0,N|0,666643,0)|0;w=fo(ie|0,A|0,w|0,C|0)|0;A=C;ie=yo(P|0,N|0,470296,0)|0;ne=C;$=yo(P|0,N|0,654183,0)|0;Z=C;G=yo(P|0,N|0,-997805,-1)|0;B=C;V=yo(P|0,N|0,136657,0)|0;D=C;N=yo(P|0,N|0,-683901,-1)|0;P=C;k=co(w|0,A|0,21)|0;T=C;ee=fo(ie|0,ne|0,re|0,ee|0)|0;p=lo(ee|0,C|0,g|0,p|0)|0;p=fo(p|0,C|0,k|0,T|0)|0;g=C;T=po(k|0,T|0,21)|0;T=lo(w|0,A|0,T|0,C|0)|0;A=C;w=co(p|0,g|0,21)|0;k=C;X=fo($|0,Z|0,Q|0,X|0)|0;Y=lo(X|0,C|0,J|0,Y|0)|0;O=fo(Y|0,C|0,v|0,O|0)|0;O=fo(O|0,C|0,w|0,k|0)|0;v=C;k=po(w|0,k|0,21)|0;k=lo(p|0,g|0,k|0,C|0)|0;g=C;p=co(O|0,v|0,21)|0;w=C;B=fo(W|0,K|0,G|0,B|0)|0;M=lo(B|0,C|0,b|0,M|0)|0;M=fo(M|0,C|0,p|0,w|0)|0;b=C;w=po(p|0,w|0,21)|0;w=lo(O|0,v|0,w|0,C|0)|0;v=C;O=co(M|0,b|0,21)|0;p=C;H=fo(V|0,D|0,j|0,H|0)|0;z=lo(H|0,C|0,q|0,z|0)|0;h=fo(z|0,C|0,m|0,h|0)|0;h=fo(h|0,C|0,O|0,p|0)|0;m=C;p=po(O|0,p|0,21)|0;p=lo(M|0,b|0,p|0,C|0)|0;b=C;M=co(h|0,m|0,21)|0;O=C;P=fo(F|0,U|0,N|0,P|0)|0;l=lo(P|0,C|0,c|0,l|0)|0;l=fo(l|0,C|0,M|0,O|0)|0;c=C;O=po(M|0,O|0,21)|0;O=lo(h|0,m|0,O|0,C|0)|0;m=C;h=co(l|0,c|0,21)|0;M=C;s=fo(f|0,s|0,h|0,M|0)|0;f=C;M=po(h|0,M|0,21)|0;M=lo(l|0,c|0,M|0,C|0)|0;c=C;l=co(s|0,f|0,21)|0;h=C;r=fo(l|0,h|0,_|0,r|0)|0;_=C;h=po(l|0,h|0,21)|0;h=lo(s|0,f|0,h|0,C|0)|0;f=C;s=co(r|0,_|0,21)|0;l=C;o=fo(u|0,o|0,s|0,l|0)|0;u=C;l=po(s|0,l|0,21)|0;l=lo(r|0,_|0,l|0,C|0)|0;_=C;r=co(o|0,u|0,21)|0;s=C;d=fo(r|0,s|0,x|0,d|0)|0;x=C;s=po(r|0,s|0,21)|0;s=lo(o|0,u|0,s|0,C|0)|0;u=C;o=co(d|0,x|0,21)|0;r=C;t=fo(L|0,I|0,R|0,t|0)|0;S=lo(t|0,C|0,E|0,S|0)|0;S=fo(S|0,C|0,o|0,r|0)|0;E=C;r=po(o|0,r|0,21)|0;r=lo(d|0,x|0,r|0,C|0)|0;x=C;d=co(S|0,E|0,21)|0;o=C;y=fo(d|0,o|0,n|0,y|0)|0;n=C;o=po(d|0,o|0,21)|0;o=lo(S|0,E|0,o|0,C|0)|0;E=C;S=co(y|0,n|0,21)|0;d=C;t=po(S|0,d|0,21)|0;t=lo(y|0,n|0,t|0,C|0)|0;n=C;y=yo(S|0,d|0,666643,0)|0;A=fo(y|0,C|0,T|0,A|0)|0;T=C;y=yo(S|0,d|0,470296,0)|0;y=fo(k|0,g|0,y|0,C|0)|0;g=C;k=yo(S|0,d|0,654183,0)|0;k=fo(w|0,v|0,k|0,C|0)|0;v=C;w=yo(S|0,d|0,-997805,-1)|0;w=fo(p|0,b|0,w|0,C|0)|0;b=C;p=yo(S|0,d|0,136657,0)|0;p=fo(O|0,m|0,p|0,C|0)|0;m=C;d=yo(S|0,d|0,-683901,-1)|0;d=fo(M|0,c|0,d|0,C|0)|0;c=C;M=co(A|0,T|0,21)|0;S=C;g=fo(y|0,g|0,M|0,S|0)|0;y=C;S=po(M|0,S|0,21)|0;S=lo(A|0,T|0,S|0,C|0)|0;T=C;A=co(g|0,y|0,21)|0;M=C;v=fo(k|0,v|0,A|0,M|0)|0;k=C;M=po(A|0,M|0,21)|0;M=lo(g|0,y|0,M|0,C|0)|0;y=C;g=co(v|0,k|0,21)|0;A=C;b=fo(w|0,b|0,g|0,A|0)|0;w=C;A=po(g|0,A|0,21)|0;A=lo(v|0,k|0,A|0,C|0)|0;k=C;v=co(b|0,w|0,21)|0;g=C;m=fo(p|0,m|0,v|0,g|0)|0;p=C;g=po(v|0,g|0,21)|0;g=lo(b|0,w|0,g|0,C|0)|0;w=C;b=co(m|0,p|0,21)|0;v=C;c=fo(d|0,c|0,b|0,v|0)|0;d=C;v=po(b|0,v|0,21)|0;v=lo(m|0,p|0,v|0,C|0)|0;p=C;m=co(c|0,d|0,21)|0;b=C;f=fo(m|0,b|0,h|0,f|0)|0;h=C;b=po(m|0,b|0,21)|0;b=lo(c|0,d|0,b|0,C|0)|0;d=C;c=co(f|0,h|0,21)|0;m=C;_=fo(c|0,m|0,l|0,_|0)|0;l=C;m=po(c|0,m|0,21)|0;m=lo(f|0,h|0,m|0,C|0)|0;h=C;f=co(_|0,l|0,21)|0;c=C;u=fo(f|0,c|0,s|0,u|0)|0;s=C;c=po(f|0,c|0,21)|0;c=lo(_|0,l|0,c|0,C|0)|0;l=C;_=co(u|0,s|0,21)|0;f=C;x=fo(_|0,f|0,r|0,x|0)|0;r=C;f=po(_|0,f|0,21)|0;f=lo(u|0,s|0,f|0,C|0)|0;s=C;u=co(x|0,r|0,21)|0;_=C;E=fo(u|0,_|0,o|0,E|0)|0;o=C;_=po(u|0,_|0,21)|0;_=lo(x|0,r|0,_|0,C|0)|0;r=C;x=co(E|0,o|0,21)|0;u=C;n=fo(x|0,u|0,t|0,n|0)|0;t=C;u=po(x|0,u|0,21)|0;u=lo(E|0,o|0,u|0,C|0)|0;o=C;i[e>>0]=S;E=mo(S|0,T|0,8)|0;i[e+1>>0]=E;T=mo(S|0,T|0,16)|0;S=C;E=po(M|0,y|0,5)|0;i[e+2>>0]=E|T;T=mo(M|0,y|0,3)|0;i[e+3>>0]=T;T=mo(M|0,y|0,11)|0;i[e+4>>0]=T;y=mo(M|0,y|0,19)|0;M=C;T=po(A|0,k|0,2)|0;i[e+5>>0]=T|y;y=mo(A|0,k|0,6)|0;i[e+6>>0]=y;k=mo(A|0,k|0,14)|0;A=C;y=po(g|0,w|0,7)|0;i[e+7>>0]=y|k;k=mo(g|0,w|0,1)|0;i[e+8>>0]=k;k=mo(g|0,w|0,9)|0;i[e+9>>0]=k;w=mo(g|0,w|0,17)|0;g=C;k=po(v|0,p|0,4)|0;i[e+10>>0]=k|w;w=mo(v|0,p|0,4)|0;i[e+11>>0]=w;w=mo(v|0,p|0,12)|0;i[e+12>>0]=w;p=mo(v|0,p|0,20)|0;v=C;w=po(b|0,d|0,1)|0;i[e+13>>0]=w|p;p=mo(b|0,d|0,7)|0;i[e+14>>0]=p;d=mo(b|0,d|0,15)|0;b=C;p=po(m|0,h|0,6)|0;i[e+15>>0]=p|d;d=mo(m|0,h|0,2)|0;i[e+16>>0]=d;d=mo(m|0,h|0,10)|0;i[e+17>>0]=d;h=mo(m|0,h|0,18)|0;m=C;d=po(c|0,l|0,3)|0;i[e+18>>0]=d|h;h=mo(c|0,l|0,5)|0;i[e+19>>0]=h;l=mo(c|0,l|0,13)|0;i[e+20>>0]=l;i[e+21>>0]=f;l=mo(f|0,s|0,8)|0;i[e+22>>0]=l;s=mo(f|0,s|0,16)|0;f=C;l=po(_|0,r|0,5)|0;i[e+23>>0]=l|s;s=mo(_|0,r|0,3)|0;i[e+24>>0]=s;s=mo(_|0,r|0,11)|0;i[e+25>>0]=s;r=mo(_|0,r|0,19)|0;_=C;s=po(u|0,o|0,2)|0;i[e+26>>0]=s|r;r=mo(u|0,o|0,6)|0;i[e+27>>0]=r;o=mo(u|0,o|0,14)|0;u=C;r=po(n|0,t|0,7)|0;i[e+28>>0]=o|r;r=mo(n|0,t|0,1)|0;i[e+29>>0]=r;r=mo(n|0,t|0,9)|0;i[e+30>>0]=r;t=mo(n|0,t|0,17)|0;i[e+31>>0]=t;return}function Hi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;_=r+44|0;c=r+48|0;m=r+52|0;w=r+56|0;g=r+60|0;T=r+64|0;S=r+68|0;R=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;f=r+16|0;h=r+20|0;k=r+24|0;y=r+28|0;O=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[_>>2]|0)|0;oe=(o[j>>2]|0)+(o[c>>2]|0)|0;te=(o[i>>2]|0)+(o[m>>2]|0)|0;ie=(o[f>>2]|0)+(o[w>>2]|0)|0;ne=(o[h>>2]|0)+(o[g>>2]|0)|0;re=(o[k>>2]|0)+(o[T>>2]|0)|0;ee=(o[y>>2]|0)+(o[S>>2]|0)|0;$=(o[O>>2]|0)+(o[R>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[_>>2]|0)-(o[B>>2]|0)|0;j=(o[c>>2]|0)-(o[j>>2]|0)|0;i=(o[m>>2]|0)-(o[i>>2]|0)|0;f=(o[w>>2]|0)-(o[f>>2]|0)|0;h=(o[g>>2]|0)-(o[h>>2]|0)|0;k=(o[T>>2]|0)-(o[k>>2]|0)|0;y=(o[S>>2]|0)-(o[y>>2]|0)|0;O=(o[R>>2]|0)-(o[O>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=f;f=e+60|0;o[f>>2]=h;h=e+64|0;o[h>>2]=k;k=e+68|0;o[k>>2]=y;y=e+72|0;o[y>>2]=O;O=e+76|0;o[O>>2]=H;H=e+80|0;Pi(H,e,n);Pi(X,X,n+40|0);x=e+120|0;Pi(x,n+120|0,r+120|0);Pi(e,r+80|0,n+80|0);R=o[e>>2]<<1;S=o[ue>>2]<<1;T=o[ae>>2]<<1;g=o[oe>>2]<<1;w=o[te>>2]<<1;m=o[ie>>2]<<1;c=o[ne>>2]<<1;_=o[re>>2]<<1;a=o[ee>>2]<<1;r=o[$>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;t=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;d=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;A=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;n=o[i>>2]|0;s=o[f>>2]|0;l=o[h>>2]|0;b=o[k>>2]|0;v=o[y>>2]|0;E=o[O>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=t-n;o[ie>>2]=u-s;o[ne>>2]=d-l;o[re>>2]=p-b;o[ee>>2]=A-v;o[$>>2]=M-E;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=n+t;o[f>>2]=s+u;o[h>>2]=l+d;o[k>>2]=b+p;o[y>>2]=v+A;o[O>>2]=E+M;O=o[x>>2]|0;M=e+124|0;E=o[M>>2]|0;y=e+128|0;A=o[y>>2]|0;v=e+132|0;k=o[v>>2]|0;p=e+136|0;b=o[p>>2]|0;h=e+140|0;d=o[h>>2]|0;l=e+144|0;f=o[l>>2]|0;u=e+148|0;s=o[u>>2]|0;i=e+152|0;t=o[i>>2]|0;e=e+156|0;n=o[e>>2]|0;o[H>>2]=O+R;o[q>>2]=E+S;o[z>>2]=A+T;o[F>>2]=k+g;o[U>>2]=b+w;o[N>>2]=d+m;o[P>>2]=f+c;o[L>>2]=s+_;o[I>>2]=t+a;o[C>>2]=n+r;o[x>>2]=R-O;o[M>>2]=S-E;o[y>>2]=T-A;o[v>>2]=g-k;o[p>>2]=w-b;o[h>>2]=m-d;o[l>>2]=c-f;o[u>>2]=_-s;o[i>>2]=a-t;o[e>>2]=r-n;return}function ji(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0;A=f;f=f+2400|0;p=A+1760|0;v=A+2136|0;k=A+1880|0;w=A+480|0;g=A+320|0;y=A+160|0;b=A;u=0;do{i[v+u>>0]=(a[r+(u>>3)>>0]|0)>>>(u&7)&1;u=u+1|0}while((u|0)!=256);m=0;while(1){h=v+m|0;e:do{if(i[h>>0]|0){d=1;do{u=d+m|0;if((u|0)>=256)break e;r=v+u|0;c=i[r>>0]|0;r:do{if(c<<24>>24){s=i[h>>0]|0;_=c<<24>>24<<d;l=s+_|0;if((l|0)<16){i[h>>0]=l;i[r>>0]=0;break}r=s-_|0;if((r|0)<=-16)break e;i[h>>0]=r;r=v+u|0;if(c<<24>>24)do{i[r>>0]=0;u=u+1|0;if((u|0)>=256)break r;r=v+u|0}while((i[v+u>>0]|0)!=0);i[r>>0]=1}}while(0);d=d+1|0}while((d|0)<7)}}while(0);m=m+1|0;if((m|0)==256){r=0;break}}do{i[k+r>>0]=(a[t+(r>>3)>>0]|0)>>>(r&7)&1;r=r+1|0}while((r|0)!=256);m=0;do{h=k+m|0;e:do{if(i[h>>0]|0){d=1;do{u=d+m|0;if((u|0)>=256)break e;r=k+u|0;c=i[r>>0]|0;r:do{if(c<<24>>24){s=i[h>>0]|0;_=c<<24>>24<<d;l=s+_|0;if((l|0)<16){i[h>>0]=l;i[r>>0]=0;break}r=s-_|0;if((r|0)<=-16)break e;i[h>>0]=r;r=k+u|0;if(c<<24>>24)do{i[r>>0]=0;u=u+1|0;if((u|0)>=256)break r;r=k+u|0}while((i[k+u>>0]|0)!=0);i[r>>0]=1}}while(0);d=d+1|0}while((d|0)<7)}}while(0);m=m+1|0}while((m|0)!=256);Di(w,n);_=o[n+4>>2]|0;u=o[n+8>>2]|0;r=o[n+12>>2]|0;t=o[n+16>>2]|0;m=o[n+20>>2]|0;d=o[n+24>>2]|0;h=o[n+28>>2]|0;c=o[n+32>>2]|0;l=o[n+36>>2]|0;o[p>>2]=o[n>>2];o[p+4>>2]=_;o[p+8>>2]=u;o[p+12>>2]=r;o[p+16>>2]=t;o[p+20>>2]=m;o[p+24>>2]=d;o[p+28>>2]=h;o[p+32>>2]=c;o[p+36>>2]=l;l=o[n+44>>2]|0;c=o[n+48>>2]|0;h=o[n+52>>2]|0;d=o[n+56>>2]|0;m=o[n+60>>2]|0;t=o[n+64>>2]|0;r=o[n+68>>2]|0;u=o[n+72>>2]|0;_=o[n+76>>2]|0;o[p+40>>2]=o[n+40>>2];o[p+44>>2]=l;o[p+48>>2]=c;o[p+52>>2]=h;o[p+56>>2]=d;o[p+60>>2]=m;o[p+64>>2]=t;o[p+68>>2]=r;o[p+72>>2]=u;o[p+76>>2]=_;_=o[n+84>>2]|0;u=o[n+88>>2]|0;r=o[n+92>>2]|0;t=o[n+96>>2]|0;m=o[n+100>>2]|0;d=o[n+104>>2]|0;h=o[n+108>>2]|0;c=o[n+112>>2]|0;l=o[n+116>>2]|0;o[p+80>>2]=o[n+80>>2];o[p+84>>2]=_;o[p+88>>2]=u;o[p+92>>2]=r;o[p+96>>2]=t;o[p+100>>2]=m;o[p+104>>2]=d;o[p+108>>2]=h;o[p+112>>2]=c;o[p+116>>2]=l;Vi(g,p);l=g+120|0;Pi(b,g,l);c=g+40|0;h=g+80|0;Pi(b+40|0,c,h);Pi(b+80|0,h,l);Pi(b+120|0,g,c);Hi(g,b,w);Pi(y,g,l);d=y+40|0;Pi(d,c,h);m=y+80|0;Pi(m,h,l);t=y+120|0;Pi(t,g,c);r=w+160|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+320|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+480|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+640|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+800|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);r=w+960|0;Di(r,y);Hi(g,b,r);Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Di(w+1120|0,y);r=e;u=r+40|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(u|0));s=e+40|0;o[s>>2]=1;r=e+44|0;u=r+36|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(u|0));_=e+80|0;o[_>>2]=1;r=e+84|0;u=r+36|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(u|0));u=255;while(1){if(i[v+u>>0]|0){r=u;break}if(i[k+u>>0]|0){r=u;break}r=u+-1|0;if((u|0)>0)u=r;else break}if((r|0)<=-1){f=A;return}while(1){Vi(g,e);u=i[v+r>>0]|0;if(u<<24>>24<=0){if(u<<24>>24<0){Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Bi(g,y,w+(((u<<24>>24|0)/-2|0)*160|0)|0)}}else{Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Hi(g,y,w+(((u<<24>>24|0)/2|0)*160|0)|0)}u=i[k+r>>0]|0;if(u<<24>>24<=0){if(u<<24>>24<0){Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Ki(g,y,736+(((u<<24>>24|0)/-2|0)*120|0)|0)}}else{Pi(y,g,l);Pi(d,c,h);Pi(m,h,l);Pi(t,g,c);Gi(g,y,736+(((u<<24>>24|0)/2|0)*120|0)|0)}Pi(e,g,l);Pi(s,c,h);Pi(_,h,l);if((r|0)>0)r=r+-1|0;else break}f=A;return}function Di(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0;c=r+40|0;g=r+44|0;k=r+48|0;v=r+52|0;w=r+56|0;b=r+60|0;p=r+64|0;m=r+68|0;d=r+72|0;h=r+76|0;n=r+4|0;i=r+8|0;t=r+12|0;a=r+16|0;u=r+20|0;s=r+24|0;_=r+28|0;l=r+32|0;f=r+36|0;R=(o[n>>2]|0)+(o[g>>2]|0)|0;O=(o[i>>2]|0)+(o[k>>2]|0)|0;x=(o[t>>2]|0)+(o[v>>2]|0)|0;S=(o[a>>2]|0)+(o[w>>2]|0)|0;E=(o[u>>2]|0)+(o[b>>2]|0)|0;M=(o[s>>2]|0)+(o[p>>2]|0)|0;T=(o[_>>2]|0)+(o[m>>2]|0)|0;A=(o[l>>2]|0)+(o[d>>2]|0)|0;y=(o[f>>2]|0)+(o[h>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[c>>2]|0);o[e+4>>2]=R;o[e+8>>2]=O;o[e+12>>2]=x;o[e+16>>2]=S;o[e+20>>2]=E;o[e+24>>2]=M;o[e+28>>2]=T;o[e+32>>2]=A;o[e+36>>2]=y;n=(o[g>>2]|0)-(o[n>>2]|0)|0;i=(o[k>>2]|0)-(o[i>>2]|0)|0;t=(o[v>>2]|0)-(o[t>>2]|0)|0;a=(o[w>>2]|0)-(o[a>>2]|0)|0;u=(o[b>>2]|0)-(o[u>>2]|0)|0;s=(o[p>>2]|0)-(o[s>>2]|0)|0;_=(o[m>>2]|0)-(o[_>>2]|0)|0;l=(o[d>>2]|0)-(o[l>>2]|0)|0;f=(o[h>>2]|0)-(o[f>>2]|0)|0;o[e+40>>2]=(o[c>>2]|0)-(o[r>>2]|0);o[e+44>>2]=n;o[e+48>>2]=i;o[e+52>>2]=t;o[e+56>>2]=a;o[e+60>>2]=u;o[e+64>>2]=s;o[e+68>>2]=_;o[e+72>>2]=l;o[e+76>>2]=f;f=o[r+84>>2]|0;l=o[r+88>>2]|0;_=o[r+92>>2]|0;s=o[r+96>>2]|0;u=o[r+100>>2]|0;a=o[r+104>>2]|0;t=o[r+108>>2]|0;i=o[r+112>>2]|0;n=o[r+116>>2]|0;o[e+80>>2]=o[r+80>>2];o[e+84>>2]=f;o[e+88>>2]=l;o[e+92>>2]=_;o[e+96>>2]=s;o[e+100>>2]=u;o[e+104>>2]=a;o[e+108>>2]=t;o[e+112>>2]=i;o[e+116>>2]=n;Pi(e+120|0,r+120|0,696);return}function Vi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0;n=f;f=f+48|0;P=n;Li(e,r);B=e+80|0;_e=r+40|0;Li(B,_e);g=e+120|0;Fi(g,r+80|0);le=e+40|0;se=(o[r+44>>2]|0)+(o[r+4>>2]|0)|0;ue=(o[r+48>>2]|0)+(o[r+8>>2]|0)|0;ae=(o[r+52>>2]|0)+(o[r+12>>2]|0)|0;oe=(o[r+56>>2]|0)+(o[r+16>>2]|0)|0;te=(o[r+60>>2]|0)+(o[r+20>>2]|0)|0;ie=(o[r+64>>2]|0)+(o[r+24>>2]|0)|0;ne=(o[r+68>>2]|0)+(o[r+28>>2]|0)|0;re=(o[r+72>>2]|0)+(o[r+32>>2]|0)|0;ee=(o[r+76>>2]|0)+(o[r+36>>2]|0)|0;o[le>>2]=(o[_e>>2]|0)+(o[r>>2]|0);_e=e+44|0;o[_e>>2]=se;se=e+48|0;o[se>>2]=ue;ue=e+52|0;o[ue>>2]=ae;ae=e+56|0;o[ae>>2]=oe;oe=e+60|0;o[oe>>2]=te;te=e+64|0;o[te>>2]=ie;ie=e+68|0;o[ie>>2]=ne;ne=e+72|0;o[ne>>2]=re;re=e+76|0;o[re>>2]=ee;Li(P,le);ee=o[B>>2]|0;V=e+84|0;$=o[V>>2]|0;D=e+88|0;Z=o[D>>2]|0;j=e+92|0;Q=o[j>>2]|0;H=e+96|0;X=o[H>>2]|0;q=e+100|0;J=o[q>>2]|0;z=e+104|0;Y=o[z>>2]|0;F=e+108|0;W=o[F>>2]|0;U=e+112|0;K=o[U>>2]|0;N=e+116|0;G=o[N>>2]|0;y=o[e>>2]|0;C=e+4|0;k=o[C>>2]|0;O=e+8|0;w=o[O>>2]|0;S=e+12|0;p=o[S>>2]|0;M=e+16|0;d=o[M>>2]|0;A=e+20|0;c=o[A>>2]|0;a=e+24|0;_=o[a>>2]|0;l=e+28|0;u=o[l>>2]|0;m=e+32|0;t=o[m>>2]|0;v=e+36|0;r=o[v>>2]|0;L=y+ee|0;I=k+$|0;R=w+Z|0;x=p+Q|0;E=d+X|0;T=c+J|0;i=_+Y|0;s=u+W|0;h=t+K|0;b=r+G|0;o[le>>2]=L;o[_e>>2]=I;o[se>>2]=R;o[ue>>2]=x;o[ae>>2]=E;o[oe>>2]=T;o[te>>2]=i;o[ie>>2]=s;o[ne>>2]=h;o[re>>2]=b;y=ee-y|0;k=$-k|0;w=Z-w|0;p=Q-p|0;d=X-d|0;c=J-c|0;_=Y-_|0;u=W-u|0;t=K-t|0;r=G-r|0;o[B>>2]=y;o[V>>2]=k;o[D>>2]=w;o[j>>2]=p;o[H>>2]=d;o[q>>2]=c;o[z>>2]=_;o[F>>2]=u;o[U>>2]=t;o[N>>2]=r;I=(o[P+4>>2]|0)-I|0;R=(o[P+8>>2]|0)-R|0;x=(o[P+12>>2]|0)-x|0;E=(o[P+16>>2]|0)-E|0;T=(o[P+20>>2]|0)-T|0;i=(o[P+24>>2]|0)-i|0;s=(o[P+28>>2]|0)-s|0;h=(o[P+32>>2]|0)-h|0;b=(o[P+36>>2]|0)-b|0;o[e>>2]=(o[P>>2]|0)-L;o[C>>2]=I;o[O>>2]=R;o[S>>2]=x;o[M>>2]=E;o[A>>2]=T;o[a>>2]=i;o[l>>2]=s;o[m>>2]=h;o[v>>2]=b;v=e+124|0;b=e+128|0;m=e+132|0;h=e+136|0;l=e+140|0;s=e+144|0;a=e+148|0;i=e+152|0;e=e+156|0;k=(o[v>>2]|0)-k|0;w=(o[b>>2]|0)-w|0;p=(o[m>>2]|0)-p|0;d=(o[h>>2]|0)-d|0;c=(o[l>>2]|0)-c|0;_=(o[s>>2]|0)-_|0;u=(o[a>>2]|0)-u|0;t=(o[i>>2]|0)-t|0;r=(o[e>>2]|0)-r|0;o[g>>2]=(o[g>>2]|0)-y;o[v>>2]=k;o[b>>2]=w;o[m>>2]=p;o[h>>2]=d;o[l>>2]=c;o[s>>2]=_;o[a>>2]=u;o[i>>2]=t;o[e>>2]=r;f=n;return}function Bi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;s=r+44|0;f=r+48|0;d=r+52|0;b=r+56|0;k=r+60|0;A=r+64|0;E=r+68|0;O=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;c=r+16|0;h=r+20|0;g=r+24|0;y=r+28|0;R=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[s>>2]|0)|0;oe=(o[j>>2]|0)+(o[f>>2]|0)|0;te=(o[i>>2]|0)+(o[d>>2]|0)|0;ie=(o[c>>2]|0)+(o[b>>2]|0)|0;ne=(o[h>>2]|0)+(o[k>>2]|0)|0;re=(o[g>>2]|0)+(o[A>>2]|0)|0;ee=(o[y>>2]|0)+(o[E>>2]|0)|0;$=(o[R>>2]|0)+(o[O>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[s>>2]|0)-(o[B>>2]|0)|0;j=(o[f>>2]|0)-(o[j>>2]|0)|0;i=(o[d>>2]|0)-(o[i>>2]|0)|0;c=(o[b>>2]|0)-(o[c>>2]|0)|0;h=(o[k>>2]|0)-(o[h>>2]|0)|0;g=(o[A>>2]|0)-(o[g>>2]|0)|0;y=(o[E>>2]|0)-(o[y>>2]|0)|0;R=(o[O>>2]|0)-(o[R>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=c;c=e+60|0;o[c>>2]=h;h=e+64|0;o[h>>2]=g;g=e+68|0;o[g>>2]=y;y=e+72|0;o[y>>2]=R;R=e+76|0;o[R>>2]=H;H=e+80|0;Pi(H,e,n+40|0);Pi(X,X,n);x=e+120|0;Pi(x,n+120|0,r+120|0);Pi(e,r+80|0,n+80|0);O=o[e>>2]<<1;E=o[ue>>2]<<1;A=o[ae>>2]<<1;k=o[oe>>2]<<1;b=o[te>>2]<<1;d=o[ie>>2]<<1;f=o[ne>>2]<<1;s=o[re>>2]<<1;t=o[ee>>2]<<1;n=o[$>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;a=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;m=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;T=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;r=o[i>>2]|0;_=o[c>>2]|0;l=o[h>>2]|0;w=o[g>>2]|0;v=o[y>>2]|0;S=o[R>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=a-r;o[ie>>2]=u-_;o[ne>>2]=m-l;o[re>>2]=p-w;o[ee>>2]=T-v;o[$>>2]=M-S;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=r+a;o[c>>2]=_+u;o[h>>2]=l+m;o[g>>2]=w+p;o[y>>2]=v+T;o[R>>2]=S+M;R=o[x>>2]|0;M=e+124|0;S=o[M>>2]|0;y=e+128|0;T=o[y>>2]|0;v=e+132|0;g=o[v>>2]|0;p=e+136|0;w=o[p>>2]|0;h=e+140|0;m=o[h>>2]|0;l=e+144|0;c=o[l>>2]|0;u=e+148|0;_=o[u>>2]|0;i=e+152|0;a=o[i>>2]|0;e=e+156|0;r=o[e>>2]|0;o[H>>2]=O-R;o[q>>2]=E-S;o[z>>2]=A-T;o[F>>2]=k-g;o[U>>2]=b-w;o[N>>2]=d-m;o[P>>2]=f-c;o[L>>2]=s-_;o[I>>2]=t-a;o[C>>2]=n-r;o[x>>2]=R+O;o[M>>2]=S+E;o[y>>2]=T+A;o[v>>2]=g+k;o[p>>2]=w+b;o[h>>2]=m+d;o[l>>2]=c+f;o[u>>2]=_+s;o[i>>2]=a+t;o[e>>2]=r+n;return}function Gi(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;_=r+44|0;c=r+48|0;m=r+52|0;w=r+56|0;g=r+60|0;T=r+64|0;S=r+68|0;R=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;f=r+16|0;h=r+20|0;k=r+24|0;y=r+28|0;O=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[_>>2]|0)|0;oe=(o[j>>2]|0)+(o[c>>2]|0)|0;te=(o[i>>2]|0)+(o[m>>2]|0)|0;ie=(o[f>>2]|0)+(o[w>>2]|0)|0;ne=(o[h>>2]|0)+(o[g>>2]|0)|0;re=(o[k>>2]|0)+(o[T>>2]|0)|0;ee=(o[y>>2]|0)+(o[S>>2]|0)|0;$=(o[O>>2]|0)+(o[R>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[_>>2]|0)-(o[B>>2]|0)|0;j=(o[c>>2]|0)-(o[j>>2]|0)|0;i=(o[m>>2]|0)-(o[i>>2]|0)|0;f=(o[w>>2]|0)-(o[f>>2]|0)|0;h=(o[g>>2]|0)-(o[h>>2]|0)|0;k=(o[T>>2]|0)-(o[k>>2]|0)|0;y=(o[S>>2]|0)-(o[y>>2]|0)|0;O=(o[R>>2]|0)-(o[O>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=f;f=e+60|0;o[f>>2]=h;h=e+64|0;o[h>>2]=k;k=e+68|0;o[k>>2]=y;y=e+72|0;o[y>>2]=O;O=e+76|0;o[O>>2]=H;H=e+80|0;Pi(H,e,n);Pi(X,X,n+40|0);x=e+120|0;Pi(x,n+80|0,r+120|0);R=o[r+80>>2]<<1;S=o[r+84>>2]<<1;T=o[r+88>>2]<<1;g=o[r+92>>2]<<1;w=o[r+96>>2]<<1;m=o[r+100>>2]<<1;c=o[r+104>>2]<<1;_=o[r+108>>2]<<1;a=o[r+112>>2]<<1;r=o[r+116>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;t=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;d=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;A=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;n=o[i>>2]|0;s=o[f>>2]|0;l=o[h>>2]|0;b=o[k>>2]|0;v=o[y>>2]|0;E=o[O>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=t-n;o[ie>>2]=u-s;o[ne>>2]=d-l;o[re>>2]=p-b;o[ee>>2]=A-v;o[$>>2]=M-E;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=n+t;o[f>>2]=s+u;o[h>>2]=l+d;o[k>>2]=b+p;o[y>>2]=v+A;o[O>>2]=E+M;O=o[x>>2]|0;M=e+124|0;E=o[M>>2]|0;y=e+128|0;A=o[y>>2]|0;v=e+132|0;k=o[v>>2]|0;p=e+136|0;b=o[p>>2]|0;h=e+140|0;d=o[h>>2]|0;l=e+144|0;f=o[l>>2]|0;u=e+148|0;s=o[u>>2]|0;i=e+152|0;t=o[i>>2]|0;e=e+156|0;n=o[e>>2]|0;o[H>>2]=O+R;o[q>>2]=E+S;o[z>>2]=A+T;o[F>>2]=k+g;o[U>>2]=b+w;o[N>>2]=d+m;o[P>>2]=f+c;o[L>>2]=s+_;o[I>>2]=t+a;o[C>>2]=n+r;o[x>>2]=R-O;o[M>>2]=S-E;o[y>>2]=T-A;o[v>>2]=g-k;o[p>>2]=w-b;o[h>>2]=m-d;o[l>>2]=c-f;o[u>>2]=_-s;o[i>>2]=a-t;o[e>>2]=r-n;return}function Ki(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0;W=r+40|0;s=r+44|0;f=r+48|0;d=r+52|0;b=r+56|0;k=r+60|0;A=r+64|0;E=r+68|0;O=r+72|0;x=r+76|0;B=r+4|0;j=r+8|0;i=r+12|0;c=r+16|0;h=r+20|0;g=r+24|0;y=r+28|0;R=r+32|0;H=r+36|0;ae=(o[B>>2]|0)+(o[s>>2]|0)|0;oe=(o[j>>2]|0)+(o[f>>2]|0)|0;te=(o[i>>2]|0)+(o[d>>2]|0)|0;ie=(o[c>>2]|0)+(o[b>>2]|0)|0;ne=(o[h>>2]|0)+(o[k>>2]|0)|0;re=(o[g>>2]|0)+(o[A>>2]|0)|0;ee=(o[y>>2]|0)+(o[E>>2]|0)|0;$=(o[R>>2]|0)+(o[O>>2]|0)|0;X=(o[H>>2]|0)+(o[x>>2]|0)|0;o[e>>2]=(o[r>>2]|0)+(o[W>>2]|0);ue=e+4|0;o[ue>>2]=ae;ae=e+8|0;o[ae>>2]=oe;oe=e+12|0;o[oe>>2]=te;te=e+16|0;o[te>>2]=ie;ie=e+20|0;o[ie>>2]=ne;ne=e+24|0;o[ne>>2]=re;re=e+28|0;o[re>>2]=ee;ee=e+32|0;o[ee>>2]=$;$=e+36|0;o[$>>2]=X;X=e+40|0;B=(o[s>>2]|0)-(o[B>>2]|0)|0;j=(o[f>>2]|0)-(o[j>>2]|0)|0;i=(o[d>>2]|0)-(o[i>>2]|0)|0;c=(o[b>>2]|0)-(o[c>>2]|0)|0;h=(o[k>>2]|0)-(o[h>>2]|0)|0;g=(o[A>>2]|0)-(o[g>>2]|0)|0;y=(o[E>>2]|0)-(o[y>>2]|0)|0;R=(o[O>>2]|0)-(o[R>>2]|0)|0;H=(o[x>>2]|0)-(o[H>>2]|0)|0;o[X>>2]=(o[W>>2]|0)-(o[r>>2]|0);W=e+44|0;o[W>>2]=B;B=e+48|0;o[B>>2]=j;j=e+52|0;o[j>>2]=i;i=e+56|0;o[i>>2]=c;c=e+60|0;o[c>>2]=h;h=e+64|0;o[h>>2]=g;g=e+68|0;o[g>>2]=y;y=e+72|0;o[y>>2]=R;R=e+76|0;o[R>>2]=H;H=e+80|0;Pi(H,e,n+40|0);Pi(X,X,n);x=e+120|0;Pi(x,n+80|0,r+120|0);O=o[r+80>>2]<<1;E=o[r+84>>2]<<1;A=o[r+88>>2]<<1;k=o[r+92>>2]<<1;b=o[r+96>>2]<<1;d=o[r+100>>2]<<1;f=o[r+104>>2]<<1;s=o[r+108>>2]<<1;t=o[r+112>>2]<<1;n=o[r+116>>2]<<1;Q=o[H>>2]|0;q=e+84|0;Y=o[q>>2]|0;z=e+88|0;G=o[z>>2]|0;F=e+92|0;D=o[F>>2]|0;U=e+96|0;a=o[U>>2]|0;N=e+100|0;u=o[N>>2]|0;P=e+104|0;m=o[P>>2]|0;L=e+108|0;p=o[L>>2]|0;I=e+112|0;T=o[I>>2]|0;C=e+116|0;M=o[C>>2]|0;Z=o[X>>2]|0;J=o[W>>2]|0;K=o[B>>2]|0;V=o[j>>2]|0;r=o[i>>2]|0;_=o[c>>2]|0;l=o[h>>2]|0;w=o[g>>2]|0;v=o[y>>2]|0;S=o[R>>2]|0;o[e>>2]=Q-Z;o[ue>>2]=Y-J;o[ae>>2]=G-K;o[oe>>2]=D-V;o[te>>2]=a-r;o[ie>>2]=u-_;o[ne>>2]=m-l;o[re>>2]=p-w;o[ee>>2]=T-v;o[$>>2]=M-S;o[X>>2]=Z+Q;o[W>>2]=J+Y;o[B>>2]=K+G;o[j>>2]=V+D;o[i>>2]=r+a;o[c>>2]=_+u;o[h>>2]=l+m;o[g>>2]=w+p;o[y>>2]=v+T;o[R>>2]=S+M;R=o[x>>2]|0;M=e+124|0;S=o[M>>2]|0;y=e+128|0;T=o[y>>2]|0;v=e+132|0;g=o[v>>2]|0;p=e+136|0;w=o[p>>2]|0;h=e+140|0;m=o[h>>2]|0;l=e+144|0;c=o[l>>2]|0;u=e+148|0;_=o[u>>2]|0;i=e+152|0;a=o[i>>2]|0;e=e+156|0;r=o[e>>2]|0;o[H>>2]=O-R;o[q>>2]=E-S;o[z>>2]=A-T;o[F>>2]=k-g;o[U>>2]=b-w;o[N>>2]=d-m;o[P>>2]=f-c;o[L>>2]=s-_;o[I>>2]=t-a;o[C>>2]=n-r;o[x>>2]=R+O;o[M>>2]=S+E;o[y>>2]=T+A;o[v>>2]=g+k;o[p>>2]=w+b;o[h>>2]=m+d;o[l>>2]=c+f;o[u>>2]=_+s;o[i>>2]=a+t;o[e>>2]=r+n;return}function Wi(e,r){e=e|0;r=r|0;var n=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0;me=f;f=f+240|0;ce=me+200|0;he=me+160|0;_=me+120|0;l=me+80|0;de=me+40|0;fe=me;le=e+40|0;Ci(le,r);u=e+80|0;o[u>>2]=1;s=e+84|0;n=s;t=n+36|0;do{o[n>>2]=0;n=n+4|0}while((n|0)<(t|0));Li(he,le);Pi(_,he,1696);ue=he+4|0;se=he+8|0;_e=he+12|0;re=he+16|0;ne=he+20|0;ie=he+24|0;te=he+28|0;oe=he+32|0;ae=he+36|0;S=o[u>>2]|0;E=o[s>>2]|0;T=o[e+88>>2]|0;y=o[e+92>>2]|0;k=o[e+96>>2]|0;w=o[e+100>>2]|0;$=o[e+104>>2]|0;Q=o[e+108>>2]|0;J=o[e+112>>2]|0;W=o[e+116>>2]|0;n=(o[he>>2]|0)-S|0;t=(o[ue>>2]|0)-E|0;u=(o[se>>2]|0)-T|0;s=(o[_e>>2]|0)-y|0;b=(o[re>>2]|0)-k|0;p=(o[ne>>2]|0)-w|0;c=(o[ie>>2]|0)-$|0;h=(o[te>>2]|0)-Q|0;d=(o[oe>>2]|0)-J|0;m=(o[ae>>2]|0)-W|0;o[he>>2]=n;o[ue>>2]=t;o[se>>2]=u;o[_e>>2]=s;o[re>>2]=b;o[ne>>2]=p;o[ie>>2]=c;o[te>>2]=h;o[oe>>2]=d;o[ae>>2]=m;M=_+4|0;A=_+8|0;g=_+12|0;v=_+16|0;ee=_+20|0;Z=_+24|0;X=_+28|0;Y=_+32|0;K=_+36|0;E=E+(o[M>>2]|0)|0;T=T+(o[A>>2]|0)|0;y=y+(o[g>>2]|0)|0;k=k+(o[v>>2]|0)|0;w=w+(o[ee>>2]|0)|0;$=$+(o[Z>>2]|0)|0;Q=Q+(o[X>>2]|0)|0;J=J+(o[Y>>2]|0)|0;W=W+(o[K>>2]|0)|0;o[_>>2]=S+(o[_>>2]|0);o[M>>2]=E;o[A>>2]=T;o[g>>2]=y;o[v>>2]=k;o[ee>>2]=w;o[Z>>2]=$;o[X>>2]=Q;o[Y>>2]=J;o[K>>2]=W;Li(l,_);Pi(l,l,_);Li(e,l);Pi(e,e,_);Pi(e,e,he);Ui(e,e);Pi(e,e,l);Pi(e,e,he);Li(de,e);Pi(de,de,_);K=de+4|0;W=de+8|0;Y=de+12|0;J=de+16|0;X=de+20|0;Q=de+24|0;Z=de+28|0;$=de+32|0;ee=de+36|0;t=(o[K>>2]|0)-t|0;u=(o[W>>2]|0)-u|0;s=(o[Y>>2]|0)-s|0;_=(o[J>>2]|0)-b|0;l=(o[X>>2]|0)-p|0;c=(o[Q>>2]|0)-c|0;h=(o[Z>>2]|0)-h|0;d=(o[$>>2]|0)-d|0;m=(o[ee>>2]|0)-m|0;o[fe>>2]=(o[de>>2]|0)-n;n=fe+4|0;o[n>>2]=t;t=fe+8|0;o[t>>2]=u;u=fe+12|0;o[u>>2]=s;s=fe+16|0;o[s>>2]=_;_=fe+20|0;o[_>>2]=l;l=fe+24|0;o[l>>2]=c;c=fe+28|0;o[c>>2]=h;h=fe+32|0;o[h>>2]=d;d=fe+36|0;o[d>>2]=m;Ni(ce,fe);m=ce+1|0;p=ce+2|0;b=ce+3|0;w=ce+4|0;v=ce+5|0;k=ce+6|0;g=ce+7|0;y=ce+8|0;A=ce+9|0;T=ce+10|0;M=ce+11|0;E=ce+12|0;S=ce+13|0;x=ce+14|0;O=ce+15|0;R=ce+16|0;C=ce+17|0;I=ce+18|0;L=ce+19|0;P=ce+20|0;N=ce+21|0;U=ce+22|0;F=ce+23|0;z=ce+24|0;q=ce+25|0;H=ce+26|0;j=ce+27|0;D=ce+28|0;V=ce+29|0;B=ce+30|0;G=ce+31|0;do{if((i[m>>0]|i[ce>>0]|i[p>>0]|i[b>>0]|i[w>>0]|i[v>>0]|i[k>>0]|i[g>>0]|i[y>>0]|i[A>>0]|i[T>>0]|i[M>>0]|i[E>>0]|i[S>>0]|i[x>>0]|i[O>>0]|i[R>>0]|i[C>>0]|i[I>>0]|i[L>>0]|i[P>>0]|i[N>>0]|i[U>>0]|i[F>>0]|i[z>>0]|i[q>>0]|i[H>>0]|i[j>>0]|i[D>>0]|i[V>>0]|i[B>>0]|i[G>>0])<<24>>24){K=(o[ue>>2]|0)+(o[K>>2]|0)|0;W=(o[se>>2]|0)+(o[W>>2]|0)|0;Y=(o[_e>>2]|0)+(o[Y>>2]|0)|0;re=(o[re>>2]|0)+(o[J>>2]|0)|0;ne=(o[ne>>2]|0)+(o[X>>2]|0)|0;ie=(o[ie>>2]|0)+(o[Q>>2]|0)|0;ue=(o[te>>2]|0)+(o[Z>>2]|0)|0;se=(o[oe>>2]|0)+(o[$>>2]|0)|0;_e=(o[ae>>2]|0)+(o[ee>>2]|0)|0;o[fe>>2]=(o[he>>2]|0)+(o[de>>2]|0);o[n>>2]=K;o[t>>2]=W;o[u>>2]=Y;o[s>>2]=re;o[_>>2]=ne;o[l>>2]=ie;o[c>>2]=ue;o[h>>2]=se;o[d>>2]=_e;Ni(ce,fe);if(!((i[m>>0]|i[ce>>0]|i[p>>0]|i[b>>0]|i[w>>0]|i[v>>0]|i[k>>0]|i[g>>0]|i[y>>0]|i[A>>0]|i[T>>0]|i[M>>0]|i[E>>0]|i[S>>0]|i[x>>0]|i[O>>0]|i[R>>0]|i[C>>0]|i[I>>0]|i[L>>0]|i[P>>0]|i[N>>0]|i[U>>0]|i[F>>0]|i[z>>0]|i[q>>0]|i[H>>0]|i[j>>0]|i[D>>0]|i[V>>0]|i[B>>0]|i[G>>0])<<24>>24)){Pi(e,e,1736);break}else{de=-1;f=me;return de|0}}}while(0);Ni(ce,e);if(((a[ce>>0]|0)&1|0)==((a[r+31>>0]|0)>>>7|0)){Z=e+4|0;ee=e+8|0;ne=e+12|0;te=e+16|0;ae=e+20|0;se=e+24|0;fe=e+28|0;ce=e+32|0;de=e+36|0;Q=0-(o[Z>>2]|0)|0;$=0-(o[ee>>2]|0)|0;re=0-(o[ne>>2]|0)|0;ie=0-(o[te>>2]|0)|0;oe=0-(o[ae>>2]|0)|0;ue=0-(o[se>>2]|0)|0;_e=0-(o[fe>>2]|0)|0;r=0-(o[ce>>2]|0)|0;he=0-(o[de>>2]|0)|0;o[e>>2]=0-(o[e>>2]|0);o[Z>>2]=Q;o[ee>>2]=$;o[ne>>2]=re;o[te>>2]=ie;o[ae>>2]=oe;o[se>>2]=ue;o[fe>>2]=_e;o[ce>>2]=r;o[de>>2]=he}Pi(e+120|0,e,le);de=0;f=me;return de|0}function Yi(e,r){e=e|0;r=r|0;var n=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0;v=f;f=f+592|0;d=v+400|0;p=v+520|0;b=v+240|0;m=v+120|0;w=v;n=0;do{c=i[r+n>>0]|0;h=n<<1;i[p+h>>0]=c&15;i[p+(h|1)>>0]=(c&255)>>>4;n=n+1|0}while((n|0)!=32);r=0;n=0;do{h=p+n|0;c=(a[h>>0]|0)+r|0;r=(c<<24)+134217728>>28;i[h>>0]=c-(r<<4);n=n+1|0}while((n|0)!=63);n=p+63|0;i[n>>0]=(a[n>>0]|0)+r;r=e;n=r+40|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(n|0));c=e+40|0;o[c>>2]=1;_=e+44|0;r=_;n=r+36|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(n|0));h=e+80|0;o[h>>2]=1;l=e+84|0;r=l;n=r+76|0;do{o[r>>2]=0;r=r+4|0}while((r|0)<(n|0));n=b+120|0;t=b+40|0;u=b+80|0;s=e+120|0;r=1;do{Ji(w,(r|0)/2|0,i[p+r>>0]|0);Gi(b,e,w);Pi(e,b,n);Pi(c,t,u);Pi(h,u,n);Pi(s,b,t);r=r+2|0}while((r|0)<64);S=o[e+4>>2]|0;M=o[e+8>>2]|0;T=o[e+12>>2]|0;A=o[e+16>>2]|0;y=o[e+20>>2]|0;g=o[e+24>>2]|0;k=o[e+28>>2]|0;r=o[e+32>>2]|0;E=o[e+36>>2]|0;o[d>>2]=o[e>>2];o[d+4>>2]=S;o[d+8>>2]=M;o[d+12>>2]=T;o[d+16>>2]=A;o[d+20>>2]=y;o[d+24>>2]=g;o[d+28>>2]=k;o[d+32>>2]=r;o[d+36>>2]=E;E=o[_>>2]|0;r=o[e+48>>2]|0;_=o[e+52>>2]|0;k=o[e+56>>2]|0;g=o[e+60>>2]|0;y=o[e+64>>2]|0;A=o[e+68>>2]|0;T=o[e+72>>2]|0;M=o[e+76>>2]|0;o[d+40>>2]=o[c>>2];o[d+44>>2]=E;o[d+48>>2]=r;o[d+52>>2]=_;o[d+56>>2]=k;o[d+60>>2]=g;o[d+64>>2]=y;o[d+68>>2]=A;o[d+72>>2]=T;o[d+76>>2]=M;M=o[l>>2]|0;T=o[e+88>>2]|0;A=o[e+92>>2]|0;y=o[e+96>>2]|0;g=o[e+100>>2]|0;k=o[e+104>>2]|0;_=o[e+108>>2]|0;l=o[e+112>>2]|0;r=o[e+116>>2]|0;o[d+80>>2]=o[h>>2];o[d+84>>2]=M;o[d+88>>2]=T;o[d+92>>2]=A;o[d+96>>2]=y;o[d+100>>2]=g;o[d+104>>2]=k;o[d+108>>2]=_;o[d+112>>2]=l;o[d+116>>2]=r;Vi(b,d);Pi(m,b,n);d=m+40|0;Pi(d,t,u);r=m+80|0;Pi(r,u,n);Vi(b,m);Pi(m,b,n);Pi(d,t,u);Pi(r,u,n);Vi(b,m);Pi(m,b,n);Pi(d,t,u);Pi(r,u,n);Vi(b,m);Pi(e,b,n);Pi(c,t,u);Pi(h,u,n);Pi(s,b,t);r=0;do{Ji(w,(r|0)/2|0,i[p+r>>0]|0);Gi(b,e,w);Pi(e,b,n);Pi(c,t,u);Pi(h,u,n);Pi(s,b,t);r=r+2|0}while((r|0)<64);f=v;return}function Ji(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,re=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0;w=n<<24>>24;w=mo(w|0,((w|0)<0)<<31>>31|0,63)|0;n=n<<24>>24;w=0-w|0;n=n-((n&w)<<1)&255;o[e>>2]=1;i=e+4|0;v=i;k=v+36|0;do{o[v>>2]=0;v=v+4|0}while((v|0)<(k|0));t=e+40|0;o[t>>2]=1;a=e+44|0;u=e+80|0;s=fo((n^1)&255|0,0,-1,-1)|0;s=mo(s|0,C|0,63)|0;_=1776+(r*960|0)|0;l=e+8|0;f=e+12|0;c=e+16|0;h=e+20|0;d=e+24|0;m=e+28|0;p=e+32|0;b=e+36|0;v=a;k=v+76|0;do{o[v>>2]=0;v=v+4|0}while((v|0)<(k|0));E=0-s|0;se=o[1776+(r*960|0)+4>>2]&E;N=o[1776+(r*960|0)+8>>2]&E;F=o[1776+(r*960|0)+12>>2]&E;q=o[1776+(r*960|0)+16>>2]&E;j=o[1776+(r*960|0)+20>>2]&E;V=o[1776+(r*960|0)+24>>2]&E;G=o[1776+(r*960|0)+28>>2]&E;W=o[1776+(r*960|0)+32>>2]&E;J=o[1776+(r*960|0)+36>>2]&E;o[e>>2]=(o[_>>2]^1)&E^1;o[i>>2]=se;o[l>>2]=N;o[f>>2]=F;o[c>>2]=q;o[h>>2]=j;o[d>>2]=V;o[m>>2]=G;o[p>>2]=W;o[b>>2]=J;J=e+48|0;W=e+52|0;G=e+56|0;V=e+60|0;j=e+64|0;q=e+68|0;F=e+72|0;N=e+76|0;se=o[1776+(r*960|0)+44>>2]&E;M=o[1776+(r*960|0)+48>>2]&E;x=o[1776+(r*960|0)+52>>2]&E;S=o[1776+(r*960|0)+56>>2]&E;$=o[1776+(r*960|0)+60>>2]&E;O=o[1776+(r*960|0)+64>>2]&E;ie=o[1776+(r*960|0)+68>>2]&E;I=o[1776+(r*960|0)+72>>2]&E;ue=o[1776+(r*960|0)+76>>2]&E;o[t>>2]=(o[1776+(r*960|0)+40>>2]^1)&E^1;o[a>>2]=se;o[J>>2]=M;o[W>>2]=x;o[G>>2]=S;o[V>>2]=$;o[j>>2]=O;o[q>>2]=ie;o[F>>2]=I;o[N>>2]=ue;ue=o[u>>2]|0;I=e+84|0;ie=o[I>>2]|0;O=e+88|0;$=o[O>>2]|0;S=e+92|0;x=o[S>>2]|0;M=e+96|0;se=o[M>>2]|0;A=e+100|0;te=o[A>>2]|0;g=e+104|0;ee=o[g>>2]|0;s=e+108|0;y=o[s>>2]|0;v=e+112|0;R=o[v>>2]|0;k=e+116|0;_=o[k>>2]|0;oe=(o[1776+(r*960|0)+84>>2]^ie)&E;re=(o[1776+(r*960|0)+88>>2]^$)&E;T=(o[1776+(r*960|0)+92>>2]^x)&E;L=(o[1776+(r*960|0)+96>>2]^se)&E;ae=(o[1776+(r*960|0)+100>>2]^te)&E;ne=(o[1776+(r*960|0)+104>>2]^ee)&E;_e=(o[1776+(r*960|0)+108>>2]^y)&E;Z=(o[1776+(r*960|0)+112>>2]^R)&E;P=(o[1776+(r*960|0)+116>>2]^_)&E;o[u>>2]=(o[1776+(r*960|0)+80>>2]^ue)&E^ue;o[I>>2]=oe^ie;o[O>>2]=re^$;o[S>>2]=T^x;o[M>>2]=L^se;o[A>>2]=ae^te;o[g>>2]=ne^ee;o[s>>2]=_e^y;o[v>>2]=Z^R;o[k>>2]=P^_;_=fo((n^2)&255|0,0,-1,-1)|0;_=mo(_|0,C|0,63)|0;P=o[e>>2]|0;R=o[i>>2]|0;Z=o[l>>2]|0;y=o[f>>2]|0;_e=o[c>>2]|0;ee=o[h>>2]|0;ne=o[d>>2]|0;te=o[m>>2]|0;ae=o[p>>2]|0;se=o[b>>2]|0;_=0-_|0;L=(o[1776+(r*960|0)+124>>2]^R)&_;x=(o[1776+(r*960|0)+128>>2]^Z)&_;T=(o[1776+(r*960|0)+132>>2]^y)&_;$=(o[1776+(r*960|0)+136>>2]^_e)&_;re=(o[1776+(r*960|0)+140>>2]^ee)&_;ie=(o[1776+(r*960|0)+144>>2]^ne)&_;oe=(o[1776+(r*960|0)+148>>2]^te)&_;ue=(o[1776+(r*960|0)+152>>2]^ae)&_;E=(o[1776+(r*960|0)+156>>2]^se)&_;o[e>>2]=(o[1776+(r*960|0)+120>>2]^P)&_^P;o[i>>2]=L^R;o[l>>2]=x^Z;o[f>>2]=T^y;o[c>>2]=$^_e;o[h>>2]=re^ee;o[d>>2]=ie^ne;o[m>>2]=oe^te;o[p>>2]=ue^ae;o[b>>2]=E^se;se=o[t>>2]|0;E=o[a>>2]|0;ae=o[J>>2]|0;ue=o[W>>2]|0;te=o[G>>2]|0;oe=o[V>>2]|0;ne=o[j>>2]|0;ie=o[q>>2]|0;ee=o[F>>2]|0;re=o[N>>2]|0;_e=(o[1776+(r*960|0)+164>>2]^E)&_;$=(o[1776+(r*960|0)+168>>2]^ae)&_;y=(o[1776+(r*960|0)+172>>2]^ue)&_;T=(o[1776+(r*960|0)+176>>2]^te)&_;Z=(o[1776+(r*960|0)+180>>2]^oe)&_;x=(o[1776+(r*960|0)+184>>2]^ne)&_;R=(o[1776+(r*960|0)+188>>2]^ie)&_;L=(o[1776+(r*960|0)+192>>2]^ee)&_;P=(o[1776+(r*960|0)+196>>2]^re)&_;o[t>>2]=(o[1776+(r*960|0)+160>>2]^se)&_^se;o[a>>2]=_e^E;o[J>>2]=$^ae;o[W>>2]=y^ue;o[G>>2]=T^te;o[V>>2]=Z^oe;o[j>>2]=x^ne;o[q>>2]=R^ie;o[F>>2]=L^ee;o[N>>2]=P^re;re=o[u>>2]|0;P=o[I>>2]|0;ee=o[O>>2]|0;L=o[S>>2]|0;ie=o[M>>2]|0;R=o[A>>2]|0;ne=o[g>>2]|0;x=o[s>>2]|0;oe=o[v>>2]|0;Z=o[k>>2]|0;te=(o[1776+(r*960|0)+204>>2]^P)&_;T=(o[1776+(r*960|0)+208>>2]^ee)&_;ue=(o[1776+(r*960|0)+212>>2]^L)&_;y=(o[1776+(r*960|0)+216>>2]^ie)&_;ae=(o[1776+(r*960|0)+220>>2]^R)&_;$=(o[1776+(r*960|0)+224>>2]^ne)&_;E=(o[1776+(r*960|0)+228>>2]^x)&_;_e=(o[1776+(r*960|0)+232>>2]^oe)&_;se=(o[1776+(r*960|0)+236>>2]^Z)&_;o[u>>2]=(o[1776+(r*960|0)+200>>2]^re)&_^re;o[I>>2]=te^P;o[O>>2]=T^ee;o[S>>2]=ue^L;o[M>>2]=y^ie;o[A>>2]=ae^R;o[g>>2]=$^ne;o[s>>2]=E^x;o[v>>2]=_e^oe;o[k>>2]=se^Z;Z=fo((n^3)&255|0,0,-1,-1)|0;Z=mo(Z|0,C|0,63)|0;se=o[e>>2]|0;oe=o[i>>2]|0;_e=o[l>>2]|0;x=o[f>>2]|0;E=o[c>>2]|0;ne=o[h>>2]|0;$=o[d>>2]|0;R=o[m>>2]|0;ae=o[p>>2]|0;ie=o[b>>2]|0;Z=0-Z|0;y=(o[1776+(r*960|0)+244>>2]^oe)&Z;L=(o[1776+(r*960|0)+248>>2]^_e)&Z;ue=(o[1776+(r*960|0)+252>>2]^x)&Z;ee=(o[1776+(r*960|0)+256>>2]^E)&Z;T=(o[1776+(r*960|0)+260>>2]^ne)&Z;P=(o[1776+(r*960|0)+264>>2]^$)&Z;te=(o[1776+(r*960|0)+268>>2]^R)&Z;re=(o[1776+(r*960|0)+272>>2]^ae)&Z;_=(o[1776+(r*960|0)+276>>2]^ie)&Z;o[e>>2]=(o[1776+(r*960|0)+240>>2]^se)&Z^se;o[i>>2]=y^oe;o[l>>2]=L^_e;o[f>>2]=ue^x;o[c>>2]=ee^E;o[h>>2]=T^ne;o[d>>2]=P^$;o[m>>2]=te^R;o[p>>2]=re^ae;o[b>>2]=_^ie;ie=o[t>>2]|0;_=o[a>>2]|0;ae=o[J>>2]|0;re=o[W>>2]|0;R=o[G>>2]|0;te=o[V>>2]|0;$=o[j>>2]|0;P=o[q>>2]|0;ne=o[F>>2]|0;T=o[N>>2]|0;E=(o[1776+(r*960|0)+284>>2]^_)&Z;ee=(o[1776+(r*960|0)+288>>2]^ae)&Z;x=(o[1776+(r*960|0)+292>>2]^re)&Z;ue=(o[1776+(r*960|0)+296>>2]^R)&Z;_e=(o[1776+(r*960|0)+300>>2]^te)&Z;L=(o[1776+(r*960|0)+304>>2]^$)&Z;oe=(o[1776+(r*960|0)+308>>2]^P)&Z;y=(o[1776+(r*960|0)+312>>2]^ne)&Z;se=(o[1776+(r*960|0)+316>>2]^T)&Z;o[t>>2]=(o[1776+(r*960|0)+280>>2]^ie)&Z^ie;o[a>>2]=E^_;o[J>>2]=ee^ae;o[W>>2]=x^re;o[G>>2]=ue^R;o[V>>2]=_e^te;o[j>>2]=L^$;o[q>>2]=oe^P;o[F>>2]=y^ne;o[N>>2]=se^T;T=o[u>>2]|0;se=o[I>>2]|0;ne=o[O>>2]|0;y=o[S>>2]|0;P=o[M>>2]|0;oe=o[A>>2]|0;$=o[g>>2]|0;L=o[s>>2]|0;te=o[v>>2]|0;_e=o[k>>2]|0;R=(o[1776+(r*960|0)+324>>2]^se)&Z;ue=(o[1776+(r*960|0)+328>>2]^ne)&Z;re=(o[1776+(r*960|0)+332>>2]^y)&Z;x=(o[1776+(r*960|0)+336>>2]^P)&Z;ae=(o[1776+(r*960|0)+340>>2]^oe)&Z;ee=(o[1776+(r*960|0)+344>>2]^$)&Z;_=(o[1776+(r*960|0)+348>>2]^L)&Z;E=(o[1776+(r*960|0)+352>>2]^te)&Z;ie=(o[1776+(r*960|0)+356>>2]^_e)&Z;o[u>>2]=(o[1776+(r*960|0)+320>>2]^T)&Z^T;o[I>>2]=R^se;o[O>>2]=ue^ne;o[S>>2]=re^y;o[M>>2]=x^P;o[A>>2]=ae^oe;o[g>>2]=ee^$;o[s>>2]=_^L;o[v>>2]=E^te;o[k>>2]=ie^_e;_e=fo((n^4)&255|0,0,-1,-1)|0;_e=mo(_e|0,C|0,63)|0;ie=o[e>>2]|0;te=o[i>>2]|0;E=o[l>>2]|0;L=o[f>>2]|0;_=o[c>>2]|0;$=o[h>>2]|0;ee=o[d>>2]|0;oe=o[m>>2]|0;ae=o[p>>2]|0;P=o[b>>2]|0;_e=0-_e|0;x=(o[1776+(r*960|0)+364>>2]^te)&_e;y=(o[1776+(r*960|0)+368>>2]^E)&_e;re=(o[1776+(r*960|0)+372>>2]^L)&_e;ne=(o[1776+(r*960|0)+376>>2]^_)&_e;ue=(o[1776+(r*960|0)+380>>2]^$)&_e;se=(o[1776+(r*960|0)+384>>2]^ee)&_e;R=(o[1776+(r*960|0)+388>>2]^oe)&_e;T=(o[1776+(r*960|0)+392>>2]^ae)&_e;Z=(o[1776+(r*960|0)+396>>2]^P)&_e;o[e>>2]=(o[1776+(r*960|0)+360>>2]^ie)&_e^ie;o[i>>2]=x^te;o[l>>2]=y^E;o[f>>2]=re^L;o[c>>2]=ne^_;o[h>>2]=ue^$;o[d>>2]=se^ee;o[m>>2]=R^oe;o[p>>2]=T^ae;o[b>>2]=Z^P;P=o[t>>2]|0;Z=o[a>>2]|0;ae=o[J>>2]|0;T=o[W>>2]|0;oe=o[G>>2]|0;R=o[V>>2]|0;ee=o[j>>2]|0;se=o[q>>2]|0;$=o[F>>2]|0;ue=o[N>>2]|0;_=(o[1776+(r*960|0)+404>>2]^Z)&_e;ne=(o[1776+(r*960|0)+408>>2]^ae)&_e;L=(o[1776+(r*960|0)+412>>2]^T)&_e;re=(o[1776+(r*960|0)+416>>2]^oe)&_e;E=(o[1776+(r*960|0)+420>>2]^R)&_e;y=(o[1776+(r*960|0)+424>>2]^ee)&_e;te=(o[1776+(r*960|0)+428>>2]^se)&_e;x=(o[1776+(r*960|0)+432>>2]^$)&_e;ie=(o[1776+(r*960|0)+436>>2]^ue)&_e;o[t>>2]=(o[1776+(r*960|0)+400>>2]^P)&_e^P;o[a>>2]=_^Z;o[J>>2]=ne^ae;o[W>>2]=L^T;o[G>>2]=re^oe;o[V>>2]=E^R;o[j>>2]=y^ee;o[q>>2]=te^se;o[F>>2]=x^$;o[N>>2]=ie^ue;ue=o[u>>2]|0;ie=o[I>>2]|0;$=o[O>>2]|0;x=o[S>>2]|0;se=o[M>>2]|0;te=o[A>>2]|0;ee=o[g>>2]|0;y=o[s>>2]|0;R=o[v>>2]|0;E=o[k>>2]|0;oe=(o[1776+(r*960|0)+444>>2]^ie)&_e;re=(o[1776+(r*960|0)+448>>2]^$)&_e;T=(o[1776+(r*960|0)+452>>2]^x)&_e;L=(o[1776+(r*960|0)+456>>2]^se)&_e;ae=(o[1776+(r*960|0)+460>>2]^te)&_e;ne=(o[1776+(r*960|0)+464>>2]^ee)&_e;Z=(o[1776+(r*960|0)+468>>2]^y)&_e;_=(o[1776+(r*960|0)+472>>2]^R)&_e;P=(o[1776+(r*960|0)+476>>2]^E)&_e;o[u>>2]=(o[1776+(r*960|0)+440>>2]^ue)&_e^ue;o[I>>2]=oe^ie;o[O>>2]=re^$;o[S>>2]=T^x;o[M>>2]=L^se;o[A>>2]=ae^te;o[g>>2]=ne^ee;o[s>>2]=Z^y;o[v>>2]=_^R;o[k>>2]=P^E;E=fo((n^5)&255|0,0,-1,-1)|0;E=mo(E|0,C|0,63)|0;P=o[e>>2]|0;R=o[i>>2]|0;_=o[l>>2]|0;y=o[f>>2]|0;Z=o[c>>2]|0;ee=o[h>>2]|0;ne=o[d>>2]|0;te=o[m>>2]|0;ae=o[p>>2]|0;se=o[b>>2]|0;E=0-E|0;L=(o[1776+(r*960|0)+484>>2]^R)&E;x=(o[1776+(r*960|0)+488>>2]^_)&E;T=(o[1776+(r*960|0)+492>>2]^y)&E;$=(o[1776+(r*960|0)+496>>2]^Z)&E;re=(o[1776+(r*960|0)+500>>2]^ee)&E;ie=(o[1776+(r*960|0)+504>>2]^ne)&E;oe=(o[1776+(r*960|0)+508>>2]^te)&E;ue=(o[1776+(r*960|0)+512>>2]^ae)&E;_e=(o[1776+(r*960|0)+516>>2]^se)&E;o[e>>2]=(o[1776+(r*960|0)+480>>2]^P)&E^P;o[i>>2]=L^R;o[l>>2]=x^_;o[f>>2]=T^y;o[c>>2]=$^Z;o[h>>2]=re^ee;o[d>>2]=ie^ne;o[m>>2]=oe^te;o[p>>2]=ue^ae;o[b>>2]=_e^se;se=o[t>>2]|0;_e=o[a>>2]|0;ae=o[J>>2]|0;ue=o[W>>2]|0;te=o[G>>2]|0;oe=o[V>>2]|0;ne=o[j>>2]|0;ie=o[q>>2]|0;ee=o[F>>2]|0;re=o[N>>2]|0;Z=(o[1776+(r*960|0)+524>>2]^_e)&E;$=(o[1776+(r*960|0)+528>>2]^ae)&E;y=(o[1776+(r*960|0)+532>>2]^ue)&E;T=(o[1776+(r*960|0)+536>>2]^te)&E;_=(o[1776+(r*960|0)+540>>2]^oe)&E;x=(o[1776+(r*960|0)+544>>2]^ne)&E;R=(o[1776+(r*960|0)+548>>2]^ie)&E;L=(o[1776+(r*960|0)+552>>2]^ee)&E;P=(o[1776+(r*960|0)+556>>2]^re)&E;o[t>>2]=(o[1776+(r*960|0)+520>>2]^se)&E^se;o[a>>2]=Z^_e;o[J>>2]=$^ae;o[W>>2]=y^ue;o[G>>2]=T^te;o[V>>2]=_^oe;o[j>>2]=x^ne;o[q>>2]=R^ie;o[F>>2]=L^ee;o[N>>2]=P^re;re=o[u>>2]|0;P=o[I>>2]|0;ee=o[O>>2]|0;L=o[S>>2]|0;ie=o[M>>2]|0;R=o[A>>2]|0;ne=o[g>>2]|0;x=o[s>>2]|0;oe=o[v>>2]|0;_=o[k>>2]|0;te=(o[1776+(r*960|0)+564>>2]^P)&E;T=(o[1776+(r*960|0)+568>>2]^ee)&E;ue=(o[1776+(r*960|0)+572>>2]^L)&E;y=(o[1776+(r*960|0)+576>>2]^ie)&E;ae=(o[1776+(r*960|0)+580>>2]^R)&E;$=(o[1776+(r*960|0)+584>>2]^ne)&E;_e=(o[1776+(r*960|0)+588>>2]^x)&E;Z=(o[1776+(r*960|0)+592>>2]^oe)&E;se=(o[1776+(r*960|0)+596>>2]^_)&E;o[u>>2]=(o[1776+(r*960|0)+560>>2]^re)&E^re;o[I>>2]=te^P;o[O>>2]=T^ee;o[S>>2]=ue^L;o[M>>2]=y^ie;o[A>>2]=ae^R;o[g>>2]=$^ne;o[s>>2]=_e^x;o[v>>2]=Z^oe;o[k>>2]=se^_;_=fo((n^6)&255|0,0,-1,-1)|0;_=mo(_|0,C|0,63)|0;se=o[e>>2]|0;oe=o[i>>2]|0;Z=o[l>>2]|0;x=o[f>>2]|0;_e=o[c>>2]|0;ne=o[h>>2]|0;$=o[d>>2]|0;R=o[m>>2]|0;ae=o[p>>2]|0;ie=o[b>>2]|0;_=0-_|0;y=(o[1776+(r*960|0)+604>>2]^oe)&_;L=(o[1776+(r*960|0)+608>>2]^Z)&_;ue=(o[1776+(r*960|0)+612>>2]^x)&_;ee=(o[1776+(r*960|0)+616>>2]^_e)&_;T=(o[1776+(r*960|0)+620>>2]^ne)&_;P=(o[1776+(r*960|0)+624>>2]^$)&_;te=(o[1776+(r*960|0)+628>>2]^R)&_;re=(o[1776+(r*960|0)+632>>2]^ae)&_;E=(o[1776+(r*960|0)+636>>2]^ie)&_;o[e>>2]=(o[1776+(r*960|0)+600>>2]^se)&_^se;o[i>>2]=y^oe;o[l>>2]=L^Z;o[f>>2]=ue^x;o[c>>2]=ee^_e;o[h>>2]=T^ne;o[d>>2]=P^$;o[m>>2]=te^R;o[p>>2]=re^ae;o[b>>2]=E^ie;ie=o[t>>2]|0;E=o[a>>2]|0;ae=o[J>>2]|0;re=o[W>>2]|0;R=o[G>>2]|0;te=o[V>>2]|0;$=o[j>>2]|0;P=o[q>>2]|0;ne=o[F>>2]|0;T=o[N>>2]|0;_e=(o[1776+(r*960|0)+644>>2]^E)&_;ee=(o[1776+(r*960|0)+648>>2]^ae)&_;x=(o[1776+(r*960|0)+652>>2]^re)&_;ue=(o[1776+(r*960|0)+656>>2]^R)&_;Z=(o[1776+(r*960|0)+660>>2]^te)&_;L=(o[1776+(r*960|0)+664>>2]^$)&_;oe=(o[1776+(r*960|0)+668>>2]^P)&_;y=(o[1776+(r*960|0)+672>>2]^ne)&_;se=(o[1776+(r*960|0)+676>>2]^T)&_;o[t>>2]=(o[1776+(r*960|0)+640>>2]^ie)&_^ie;o[a>>2]=_e^E;o[J>>2]=ee^ae;o[W>>2]=x^re;o[G>>2]=ue^R;o[V>>2]=Z^te;o[j>>2]=L^$;o[q>>2]=oe^P;o[F>>2]=y^ne;o[N>>2]=se^T;T=o[u>>2]|0;se=o[I>>2]|0;ne=o[O>>2]|0;y=o[S>>2]|0;P=o[M>>2]|0;oe=o[A>>2]|0;$=o[g>>2]|0;L=o[s>>2]|0;te=o[v>>2]|0;Z=o[k>>2]|0;R=(o[1776+(r*960|0)+684>>2]^se)&_;ue=(o[1776+(r*960|0)+688>>2]^ne)&_;re=(o[1776+(r*960|0)+692>>2]^y)&_;x=(o[1776+(r*960|0)+696>>2]^P)&_;ae=(o[1776+(r*960|0)+700>>2]^oe)&_;ee=(o[1776+(r*960|0)+704>>2]^$)&_;E=(o[1776+(r*960|0)+708>>2]^L)&_;_e=(o[1776+(r*960|0)+712>>2]^te)&_;ie=(o[1776+(r*960|0)+716>>2]^Z)&_;o[u>>2]=(o[1776+(r*960|0)+680>>2]^T)&_^T;o[I>>2]=R^se;o[O>>2]=ue^ne;o[S>>2]=re^y;o[M>>2]=x^P;o[A>>2]=ae^oe;o[g>>2]=ee^$;o[s>>2]=E^L;o[v>>2]=_e^te;o[k>>2]=ie^Z;Z=fo((n^7)&255|0,0,-1,-1)|0;Z=mo(Z|0,C|0,63)|0;ie=o[e>>2]|0;te=o[i>>2]|0;_e=o[l>>2]|0;L=o[f>>2]|0;E=o[c>>2]|0;$=o[h>>2]|0;ee=o[d>>2]|0;oe=o[m>>2]|0;ae=o[p>>2]|0;P=o[b>>2]|0;Z=0-Z|0;x=(o[1776+(r*960|0)+724>>2]^te)&Z;y=(o[1776+(r*960|0)+728>>2]^_e)&Z;re=(o[1776+(r*960|0)+732>>2]^L)&Z;ne=(o[1776+(r*960|0)+736>>2]^E)&Z;ue=(o[1776+(r*960|0)+740>>2]^$)&Z;se=(o[1776+(r*960|0)+744>>2]^ee)&Z;R=(o[1776+(r*960|0)+748>>2]^oe)&Z;T=(o[1776+(r*960|0)+752>>2]^ae)&Z;_=(o[1776+(r*960|0)+756>>2]^P)&Z;o[e>>2]=(o[1776+(r*960|0)+720>>2]^ie)&Z^ie;o[i>>2]=x^te;o[l>>2]=y^_e;o[f>>2]=re^L;o[c>>2]=ne^E;o[h>>2]=ue^$;o[d>>2]=se^ee;o[m>>2]=R^oe;o[p>>2]=T^ae;o[b>>2]=_^P;P=o[t>>2]|0;_=o[a>>2]|0;ae=o[J>>2]|0;T=o[W>>2]|0;oe=o[G>>2]|0;R=o[V>>2]|0;ee=o[j>>2]|0;se=o[q>>2]|0;$=o[F>>2]|0;ue=o[N>>2]|0;E=(o[1776+(r*960|0)+764>>2]^_)&Z;ne=(o[1776+(r*960|0)+768>>2]^ae)&Z;L=(o[1776+(r*960|0)+772>>2]^T)&Z;re=(o[1776+(r*960|0)+776>>2]^oe)&Z;_e=(o[1776+(r*960|0)+780>>2]^R)&Z;y=(o[1776+(r*960|0)+784>>2]^ee)&Z;te=(o[1776+(r*960|0)+788>>2]^se)&Z;x=(o[1776+(r*960|0)+792>>2]^$)&Z;ie=(o[1776+(r*960|0)+796>>2]^ue)&Z;o[t>>2]=(o[1776+(r*960|0)+760>>2]^P)&Z^P;o[a>>2]=E^_;o[J>>2]=ne^ae;o[W>>2]=L^T;o[G>>2]=re^oe;o[V>>2]=_e^R;o[j>>2]=y^ee;o[q>>2]=te^se;o[F>>2]=x^$;o[N>>2]=ie^ue;ue=o[u>>2]|0;ie=o[I>>2]|0;$=o[O>>2]|0;x=o[S>>2]|0;se=o[M>>2]|0;te=o[A>>2]|0;ee=o[g>>2]|0;y=o[s>>2]|0;R=o[v>>2]|0;_e=o[k>>2]|0;oe=(o[1776+(r*960|0)+804>>2]^ie)&Z;re=(o[1776+(r*960|0)+808>>2]^$)&Z;T=(o[1776+(r*960|0)+812>>2]^x)&Z;L=(o[1776+(r*960|0)+816>>2]^se)&Z;ae=(o[1776+(r*960|0)+820>>2]^te)&Z;ne=(o[1776+(r*960|0)+824>>2]^ee)&Z;_=(o[1776+(r*960|0)+828>>2]^y)&Z;E=(o[1776+(r*960|0)+832>>2]^R)&Z;P=(o[1776+(r*960|0)+836>>2]^_e)&Z;o[u>>2]=(o[1776+(r*960|0)+800>>2]^ue)&Z^ue;o[I>>2]=oe^ie;o[O>>2]=re^$;o[S>>2]=T^x;o[M>>2]=L^se;o[A>>2]=ae^te;o[g>>2]=ne^ee;o[s>>2]=_^y;o[v>>2]=E^R;o[k>>2]=P^_e;_e=fo((n^8)&255|0,0,-1,-1)|0;_e=mo(_e|0,C|0,63)|0;P=o[e>>2]|0;R=o[i>>2]|0;E=o[l>>2]|0;y=o[f>>2]|0;_=o[c>>2]|0;ee=o[h>>2]|0;ne=o[d>>2]|0;te=o[m>>2]|0;ae=o[p>>2]|0;se=o[b>>2]|0;_e=0-_e|0;L=(o[1776+(r*960|0)+844>>2]^R)&_e;x=(o[1776+(r*960|0)+848>>2]^E)&_e;T=(o[1776+(r*960|0)+852>>2]^y)&_e;n=(o[1776+(r*960|0)+856>>2]^_)&_e;$=(o[1776+(r*960|0)+860>>2]^ee)&_e;re=(o[1776+(r*960|0)+864>>2]^ne)&_e;ie=(o[1776+(r*960|0)+868>>2]^te)&_e;oe=(o[1776+(r*960|0)+872>>2]^ae)&_e;ue=(o[1776+(r*960|0)+876>>2]^se)&_e;o[e>>2]=(o[1776+(r*960|0)+840>>2]^P)&_e^P;o[i>>2]=L^R;o[l>>2]=x^E;o[f>>2]=T^y;o[c>>2]=n^_;o[h>>2]=$^ee;o[d>>2]=re^ne;o[m>>2]=ie^te;o[p>>2]=oe^ae;o[b>>2]=ue^se;se=o[t>>2]|0;ue=o[a>>2]|0;ae=o[J>>2]|0;oe=o[W>>2]|0;te=o[G>>2]|0;ie=o[V>>2]|0;ne=o[j>>2]|0;re=o[q>>2]|0;ee=o[F>>2]|0;$=o[N>>2]|0;_=(o[1776+(r*960|0)+884>>2]^ue)&_e;n=(o[1776+(r*960|0)+888>>2]^ae)&_e;y=(o[1776+(r*960|0)+892>>2]^oe)&_e;T=(o[1776+(r*960|0)+896>>2]^te)&_e;E=(o[1776+(r*960|0)+900>>2]^ie)&_e;x=(o[1776+(r*960|0)+904>>2]^ne)&_e;R=(o[1776+(r*960|0)+908>>2]^re)&_e;L=(o[1776+(r*960|0)+912>>2]^ee)&_e;P=(o[1776+(r*960|0)+916>>2]^$)&_e;se=(o[1776+(r*960|0)+880>>2]^se)&_e^se;o[t>>2]=se;ue=_^ue;o[a>>2]=ue;ae=n^ae;o[J>>2]=ae;oe=y^oe;o[W>>2]=oe;te=T^te;o[G>>2]=te;ie=E^ie;o[V>>2]=ie;ne=x^ne;o[j>>2]=ne;re=R^re;o[q>>2]=re;ee=L^ee;o[F>>2]=ee;$=P^$;o[N>>2]=$;P=o[u>>2]|0;L=o[I>>2]|0;R=o[O>>2]|0;x=o[S>>2]|0;E=o[M>>2]|0;T=o[A>>2]|0;y=o[g>>2]|0;n=o[s>>2]|0;_=o[v>>2]|0;Z=o[k>>2]|0;U=(o[1776+(r*960|0)+924>>2]^L)&_e;z=(o[1776+(r*960|0)+928>>2]^R)&_e;H=(o[1776+(r*960|0)+932>>2]^x)&_e;D=(o[1776+(r*960|0)+936>>2]^E)&_e;B=(o[1776+(r*960|0)+940>>2]^T)&_e;K=(o[1776+(r*960|0)+944>>2]^y)&_e;Y=(o[1776+(r*960|0)+948>>2]^n)&_e;X=(o[1776+(r*960|0)+952>>2]^_)&_e;Q=(o[1776+(r*960|0)+956>>2]^Z)&_e;P=(o[1776+(r*960|0)+920>>2]^P)&_e^P;o[u>>2]=P;L=U^L;o[I>>2]=L;R=z^R;o[O>>2]=R;x=H^x;o[S>>2]=x;E=D^E;o[M>>2]=E;T=B^T;o[A>>2]=T;y=K^y;o[g>>2]=y;n=Y^n;o[s>>2]=n;_=X^_;o[v>>2]=_;r=Q^Z;o[k>>2]=r;Z=o[e>>2]|0;Q=o[i>>2]|0;X=o[l>>2]|0;Y=o[f>>2]|0;K=o[c>>2]|0;B=o[h>>2]|0;D=o[d>>2]|0;H=o[m>>2]|0;z=o[p>>2]|0;U=o[b>>2]|0;o[e>>2]=(Z^se)&w^Z;o[i>>2]=(Q^ue)&w^Q;o[l>>2]=(X^ae)&w^X;o[f>>2]=(Y^oe)&w^Y;o[c>>2]=(K^te)&w^K;o[h>>2]=(B^ie)&w^B;o[d>>2]=(D^ne)&w^D;o[m>>2]=(H^re)&w^H;o[p>>2]=(z^ee)&w^z;o[b>>2]=(U^$)&w^U;i=o[t>>2]|0;e=o[a>>2]|0;b=o[J>>2]|0;p=o[W>>2]|0;m=o[G>>2]|0;d=o[V>>2]|0;h=o[j>>2]|0;c=o[q>>2]|0;f=o[F>>2]|0;l=o[N>>2]|0;o[t>>2]=(i^Z)&w^i;o[a>>2]=(e^Q)&w^e;o[J>>2]=(b^X)&w^b;o[W>>2]=(p^Y)&w^p;o[G>>2]=(m^K)&w^m;o[V>>2]=(d^B)&w^d;o[j>>2]=(h^D)&w^h;o[q>>2]=(c^H)&w^c;o[F>>2]=(f^z)&w^f;o[N>>2]=(l^U)&w^l;a=o[u>>2]|0;l=o[I>>2]|0;f=o[O>>2]|0;c=o[S>>2]|0;h=o[M>>2]|0;d=o[A>>2]|0;m=o[g>>2]|0;p=o[s>>2]|0;b=o[v>>2]|0;e=o[k>>2]|0;o[u>>2]=(a^0-P)&w^a;o[I>>2]=(l^0-L)&w^l;o[O>>2]=(f^0-R)&w^f;o[S>>2]=(c^0-x)&w^c;o[M>>2]=(h^0-E)&w^h;o[A>>2]=(d^0-T)&w^d;o[g>>2]=(m^0-y)&w^m;o[s>>2]=(p^0-n)&w^p;o[v>>2]=(b^0-_)&w^b;o[k>>2]=(e^0-r)&w^e;return}function Xi(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0;p=f;f=f+496|0;h=p;c=p+448|0;d=p+408|0;m=p+368|0;l=p+208|0;s=h+72|0;o[s>>2]=0;_=h;o[_>>2]=0;o[_+4>>2]=0;_=h+8|0;o[_>>2]=-205731576;o[_+4>>2]=1779033703;_=h+16|0;o[_>>2]=-2067093701;o[_+4>>2]=-1150833019;_=h+24|0;o[_>>2]=-23791573;o[_+4>>2]=1013904242;_=h+32|0;o[_>>2]=1595750129;o[_+4>>2]=-1521486534;_=h+40|0;o[_>>2]=-1377402159;o[_+4>>2]=1359893119;_=h+48|0;o[_>>2]=725511199;o[_+4>>2]=-1694144372;_=h+56|0;o[_>>2]=-79577749;o[_+4>>2]=528734635;_=h+64|0;o[_>>2]=327033209;o[_+4>>2]=1541459225;if(n|0){_=h+76|0;t=0;u=0;do{i[u+t+(h+76)>>0]=i[n+u>>0]|0;u=u+1|0;t=o[s>>2]|0}while(u>>>0<32);n=t+32|0;o[s>>2]=n;if((n|0)==128){Qi(h,_);n=h;n=fo(o[n>>2]|0,o[n+4>>2]|0,1024,0)|0;_=h;o[_>>2]=n;o[_+4>>2]=C;o[s>>2]=0}Zi(h,r)|0}i[r>>0]=(a[r>>0]|0)&248;_=r+31|0;i[_>>0]=(a[_>>0]|0)&63|64;Yi(l,r);Ii(c,l+80|0);Pi(d,l,c);Pi(m,l+40|0,c);Ni(e,m);Ni(h,d);m=e+31|0;i[m>>0]=(a[m>>0]|0)^(a[h>>0]|0)<<7;f=p;return}function Qi(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0;A=f;f=f+704|0;u=A+640|0;g=A;y=e+8|0;n=u;i=y;t=n+64|0;do{o[n>>2]=o[i>>2];n=n+4|0;i=i+4|0}while((n|0)<(t|0));n=0;do{w=r+(n<<3)|0;h=po(a[w>>0]|0|0,0,56)|0;v=C;c=po(a[w+1>>0]|0|0,0,48)|0;v=C|v;d=po(a[w+2>>0]|0|0,0,40)|0;v=v|C|(a[w+3>>0]|0);m=po(a[w+4>>0]|0|0,0,24)|0;v=v|C;p=po(a[w+5>>0]|0|0,0,16)|0;v=v|C;b=po(a[w+6>>0]|0|0,0,8)|0;k=g+(n<<3)|0;o[k>>2]=c|h|d|m|p|b|(a[w+7>>0]|0);o[k+4>>2]=v|C;n=n+1|0}while((n|0)!=16);i=g;n=o[i>>2]|0;i=o[i+4>>2]|0;t=16;do{l=g+(t+-2<<3)|0;T=o[l>>2]|0;l=o[l+4>>2]|0;c=mo(T|0,l|0,19)|0;d=C;h=po(T|0,l|0,45)|0;d=d|C;s=mo(T|0,l|0,61)|0;r=C;_=po(T|0,l|0,3)|0;r=r|C;l=mo(T|0,l|0,6)|0;d=r^C^d;r=g+(t+-7<<3)|0;T=o[r>>2]|0;r=o[r+4>>2]|0;w=g+(t+-15<<3)|0;E=n;n=o[w>>2]|0;M=i;i=o[w+4>>2]|0;w=mo(n|0,i|0,1)|0;v=C;k=po(n|0,i|0,63)|0;v=v|C;m=mo(n|0,i|0,8)|0;S=C;p=po(n|0,i|0,56)|0;S=S|C;b=mo(n|0,i|0,7)|0;v=S^C^v;r=fo(E|0,M|0,T|0,r|0)|0;d=fo(r|0,C|0,(s|_)^l^(c|h)|0,d|0)|0;v=fo(d|0,C|0,(m|p)^b^(w|k)|0,v|0)|0;k=g+(t<<3)|0;o[k>>2]=v;o[k+4>>2]=C;t=t+1|0}while((t|0)!=80);n=u+56|0;d=u+32|0;t=u+48|0;_=u+40|0;w=u;m=u+8|0;l=u+16|0;r=u+24|0;p=o[d>>2]|0;d=o[d+4>>2]|0;u=o[t>>2]|0;c=o[_>>2]|0;t=o[t+4>>2]|0;_=o[_+4>>2]|0;i=o[n>>2]|0;n=o[n+4>>2]|0;v=o[w>>2]|0;w=o[w+4>>2]|0;b=o[m>>2]|0;m=o[m+4>>2]|0;h=o[l>>2]|0;l=o[l+4>>2]|0;s=o[r>>2]|0;r=o[r+4>>2]|0;k=0;do{L=mo(p|0,d|0,14)|0;O=C;T=po(p|0,d|0,50)|0;O=O|C;R=mo(p|0,d|0,18)|0;P=C;S=po(p|0,d|0,46)|0;P=O^(P|C);O=mo(p|0,d|0,41)|0;M=C;I=po(p|0,d|0,23)|0;M=P^(M|C);P=8+(k<<3)|0;E=g+(k<<3)|0;x=o[E>>2]|0;E=o[E+4>>2]|0;n=fo(o[P>>2]|0,o[P+4>>2]|0,i|0,n|0)|0;M=fo(n|0,C|0,(L|T)^(R|S)^(O|I)|0,M|0)|0;E=fo(M|0,C|0,x|0,E|0)|0;E=fo(E|0,C|0,(c^u)&p^u|0,(_^t)&d^t|0)|0;x=C;M=mo(v|0,w|0,28)|0;I=C;O=po(v|0,w|0,36)|0;I=I|C;S=mo(v|0,w|0,34)|0;R=C;T=po(v|0,w|0,30)|0;R=I^(R|C);I=mo(v|0,w|0,39)|0;n=C;i=po(v|0,w|0,25)|0;n=R^(n|C);R=fo(s|0,r|0,E|0,x|0)|0;r=C;x=fo((b|v)&h|b&v|0,(m|w)&l|m&w|0,E|0,x|0)|0;n=fo(x|0,C|0,(M|O)^(S|T)^(I|i)|0,n|0)|0;i=C;I=mo(R|0,r|0,14)|0;T=C;S=po(R|0,r|0,50)|0;T=T|C;O=mo(R|0,r|0,18)|0;M=C;x=po(R|0,r|0,46)|0;M=T^(M|C);T=mo(R|0,r|0,41)|0;s=C;E=po(R|0,r|0,23)|0;s=fo((I|S)^(O|x)^(T|E)|0,M^(s|C)|0,u|0,t|0)|0;u=k|1;M=8+(u<<3)|0;u=g+(u<<3)|0;t=o[u>>2]|0;u=o[u+4>>2]|0;M=fo(s|0,C|0,o[M>>2]|0,o[M+4>>2]|0)|0;u=fo(M|0,C|0,t|0,u|0)|0;u=fo(u|0,C|0,(p^c)&R^c|0,(d^_)&r^_|0)|0;t=C;M=mo(n|0,i|0,28)|0;s=C;E=po(n|0,i|0,36)|0;s=s|C;T=mo(n|0,i|0,34)|0;x=C;O=po(n|0,i|0,30)|0;x=s^(x|C);s=mo(n|0,i|0,39)|0;S=C;I=po(n|0,i|0,25)|0;S=fo((v|n)&b|v&n|0,(w|i)&m|w&i|0,(M|E)^(T|O)^(s|I)|0,x^(S|C)|0)|0;x=C;I=fo(u|0,t|0,h|0,l|0)|0;l=C;t=fo(S|0,x|0,u|0,t|0)|0;u=C;x=mo(I|0,l|0,14)|0;S=C;s=po(I|0,l|0,50)|0;S=S|C;h=mo(I|0,l|0,18)|0;O=C;T=po(I|0,l|0,46)|0;O=S^(O|C);S=mo(I|0,l|0,41)|0;E=C;M=po(I|0,l|0,23)|0;E=fo((x|s)^(h|T)^(S|M)|0,O^(E|C)|0,c|0,_|0)|0;c=k|2;O=8+(c<<3)|0;c=g+(c<<3)|0;_=o[c>>2]|0;c=o[c+4>>2]|0;O=fo(E|0,C|0,o[O>>2]|0,o[O+4>>2]|0)|0;c=fo(O|0,C|0,_|0,c|0)|0;c=fo(c|0,C|0,(R^p)&I^p|0,(r^d)&l^d|0)|0;_=C;O=mo(t|0,u|0,28)|0;E=C;M=po(t|0,u|0,36)|0;E=E|C;S=mo(t|0,u|0,34)|0;T=C;h=po(t|0,u|0,30)|0;T=E^(T|C);E=mo(t|0,u|0,39)|0;s=C;x=po(t|0,u|0,25)|0;s=fo((n|t)&v|n&t|0,(i|u)&w|i&u|0,(O|M)^(S|h)^(E|x)|0,T^(s|C)|0)|0;T=C;m=fo(c|0,_|0,b|0,m|0)|0;x=C;_=fo(s|0,T|0,c|0,_|0)|0;c=C;T=mo(m|0,x|0,14)|0;s=C;E=po(m|0,x|0,50)|0;s=s|C;h=mo(m|0,x|0,18)|0;b=C;S=po(m|0,x|0,46)|0;b=s^(b|C);s=mo(m|0,x|0,41)|0;M=C;O=po(m|0,x|0,23)|0;M=fo((T|E)^(h|S)^(s|O)|0,b^(M|C)|0,p|0,d|0)|0;p=k|3;b=8+(p<<3)|0;p=g+(p<<3)|0;d=o[p>>2]|0;p=o[p+4>>2]|0;b=fo(M|0,C|0,o[b>>2]|0,o[b+4>>2]|0)|0;p=fo(b|0,C|0,d|0,p|0)|0;p=fo(p|0,C|0,(I^R)&m^R|0,(l^r)&x^r|0)|0;d=C;b=mo(_|0,c|0,28)|0;M=C;O=po(_|0,c|0,36)|0;M=M|C;s=mo(_|0,c|0,34)|0;S=C;h=po(_|0,c|0,30)|0;S=M^(S|C);M=mo(_|0,c|0,39)|0;E=C;T=po(_|0,c|0,25)|0;E=fo((t|_)&n|t&_|0,(u|c)&i|u&c|0,(b|O)^(s|h)^(M|T)|0,S^(E|C)|0)|0;S=C;w=fo(p|0,d|0,v|0,w|0)|0;T=C;d=fo(E|0,S|0,p|0,d|0)|0;p=C;S=mo(w|0,T|0,14)|0;E=C;M=po(w|0,T|0,50)|0;E=E|C;h=mo(w|0,T|0,18)|0;s=C;O=po(w|0,T|0,46)|0;s=E^(s|C);E=mo(w|0,T|0,41)|0;b=C;v=po(w|0,T|0,23)|0;b=fo((S|M)^(h|O)^(E|v)|0,s^(b|C)|0,R|0,r|0)|0;r=k|4;R=8+(r<<3)|0;r=g+(r<<3)|0;s=o[r>>2]|0;r=o[r+4>>2]|0;R=fo(b|0,C|0,o[R>>2]|0,o[R+4>>2]|0)|0;r=fo(R|0,C|0,s|0,r|0)|0;r=fo(r|0,C|0,(m^I)&w^I|0,(x^l)&T^l|0)|0;s=C;R=mo(d|0,p|0,28)|0;b=C;v=po(d|0,p|0,36)|0;b=b|C;E=mo(d|0,p|0,34)|0;O=C;h=po(d|0,p|0,30)|0;O=b^(O|C);b=mo(d|0,p|0,39)|0;M=C;S=po(d|0,p|0,25)|0;M=fo((_|d)&t|_&d|0,(c|p)&u|c&p|0,(R|v)^(E|h)^(b|S)|0,O^(M|C)|0)|0;O=C;i=fo(r|0,s|0,n|0,i|0)|0;n=C;s=fo(M|0,O|0,r|0,s|0)|0;r=C;O=mo(i|0,n|0,14)|0;M=C;S=po(i|0,n|0,50)|0;M=M|C;b=mo(i|0,n|0,18)|0;h=C;E=po(i|0,n|0,46)|0;h=M^(h|C);M=mo(i|0,n|0,41)|0;v=C;R=po(i|0,n|0,23)|0;v=fo((O|S)^(b|E)^(M|R)|0,h^(v|C)|0,I|0,l|0)|0;l=k|5;I=8+(l<<3)|0;l=g+(l<<3)|0;h=o[l>>2]|0;l=o[l+4>>2]|0;I=fo(v|0,C|0,o[I>>2]|0,o[I+4>>2]|0)|0;l=fo(I|0,C|0,h|0,l|0)|0;l=fo(l|0,C|0,(w^m)&i^m|0,(T^x)&n^x|0)|0;h=C;I=mo(s|0,r|0,28)|0;v=C;R=po(s|0,r|0,36)|0;v=v|C;M=mo(s|0,r|0,34)|0;E=C;b=po(s|0,r|0,30)|0;E=v^(E|C);v=mo(s|0,r|0,39)|0;S=C;O=po(s|0,r|0,25)|0;S=fo((d|s)&_|d&s|0,(p|r)&c|p&r|0,(I|R)^(M|b)^(v|O)|0,E^(S|C)|0)|0;E=C;u=fo(l|0,h|0,t|0,u|0)|0;t=C;h=fo(S|0,E|0,l|0,h|0)|0;l=C;E=mo(u|0,t|0,14)|0;S=C;O=po(u|0,t|0,50)|0;S=S|C;v=mo(u|0,t|0,18)|0;b=C;M=po(u|0,t|0,46)|0;b=S^(b|C);S=mo(u|0,t|0,41)|0;R=C;I=po(u|0,t|0,23)|0;x=fo((E|O)^(v|M)^(S|I)|0,b^(R|C)|0,m|0,x|0)|0;m=k|6;R=8+(m<<3)|0;m=g+(m<<3)|0;b=o[m>>2]|0;m=o[m+4>>2]|0;R=fo(x|0,C|0,o[R>>2]|0,o[R+4>>2]|0)|0;m=fo(R|0,C|0,b|0,m|0)|0;m=fo(m|0,C|0,(i^w)&u^w|0,(n^T)&t^T|0)|0;b=C;R=mo(h|0,l|0,28)|0;x=C;I=po(h|0,l|0,36)|0;x=x|C;S=mo(h|0,l|0,34)|0;M=C;v=po(h|0,l|0,30)|0;M=x^(M|C);x=mo(h|0,l|0,39)|0;O=C;E=po(h|0,l|0,25)|0;O=fo((s|h)&d|s&h|0,(r|l)&p|r&l|0,(R|I)^(S|v)^(x|E)|0,M^(O|C)|0)|0;M=C;c=fo(m|0,b|0,_|0,c|0)|0;_=C;b=fo(O|0,M|0,m|0,b|0)|0;m=C;M=mo(c|0,_|0,14)|0;O=C;E=po(c|0,_|0,50)|0;O=O|C;x=mo(c|0,_|0,18)|0;v=C;S=po(c|0,_|0,46)|0;v=O^(v|C);O=mo(c|0,_|0,41)|0;I=C;R=po(c|0,_|0,23)|0;T=fo((M|E)^(x|S)^(O|R)|0,v^(I|C)|0,w|0,T|0)|0;w=k|7;I=8+(w<<3)|0;w=g+(w<<3)|0;v=o[w>>2]|0;w=o[w+4>>2]|0;I=fo(T|0,C|0,o[I>>2]|0,o[I+4>>2]|0)|0;w=fo(I|0,C|0,v|0,w|0)|0;w=fo(w|0,C|0,(u^i)&c^i|0,(t^n)&_^n|0)|0;v=C;I=mo(b|0,m|0,28)|0;T=C;R=po(b|0,m|0,36)|0;T=T|C;O=mo(b|0,m|0,34)|0;S=C;x=po(b|0,m|0,30)|0;S=T^(S|C);T=mo(b|0,m|0,39)|0;E=C;M=po(b|0,m|0,25)|0;E=fo((h|b)&s|h&b|0,(l|m)&r|l&m|0,(I|R)^(O|x)^(T|M)|0,S^(E|C)|0)|0;S=C;p=fo(w|0,v|0,d|0,p|0)|0;d=C;v=fo(E|0,S|0,w|0,v|0)|0;w=C;k=k+8|0}while((k|0)<80);L=y;L=fo(v|0,w|0,o[L>>2]|0,o[L+4>>2]|0)|0;P=y;o[P>>2]=L;o[P+4>>2]=C;P=e+16|0;L=P;L=fo(b|0,m|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+24|0;L=P;L=fo(h|0,l|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+32|0;L=P;L=fo(s|0,r|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+40|0;L=P;L=fo(p|0,d|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+48|0;L=P;L=fo(c|0,_|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+56|0;L=P;L=fo(u|0,t|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;P=e+64|0;L=P;L=fo(i|0,n|0,o[L>>2]|0,o[L+4>>2]|0)|0;o[P>>2]=L;o[P+4>>2]=C;f=A;return}function Zi(e,r){e=e|0;r=r|0;var n=0,t=0,a=0,u=0;if((e|0)==0|(r|0)==0){r=1;return r|0}t=e+72|0;n=o[t>>2]|0;if(n>>>0>127){r=1;return r|0}u=po(n|0,0,3)|0;a=e;u=fo(o[a>>2]|0,o[a+4>>2]|0,u|0,C|0)|0;a=e;o[a>>2]=u;o[a+4>>2]=C;o[t>>2]=n+1;a=e+76|0;i[e+76+n>>0]=-128;n=o[t>>2]|0;if(n>>>0>112){if(n>>>0<128)do{o[t>>2]=n+1;i[e+76+n>>0]=0;n=o[t>>2]|0}while(n>>>0<128);Qi(e,a);o[t>>2]=0;n=0}do{o[t>>2]=n+1;i[e+76+n>>0]=0;n=o[t>>2]|0}while(n>>>0<120);u=e;n=o[u>>2]|0;u=o[u+4>>2]|0;t=mo(n|0,u|0,56)|0;i[e+196>>0]=t;t=mo(n|0,u|0,48)|0;i[e+197>>0]=t;t=mo(n|0,u|0,40)|0;i[e+198>>0]=t;i[e+199>>0]=u;t=mo(n|0,u|0,24)|0;i[e+200>>0]=t;t=mo(n|0,u|0,16)|0;i[e+201>>0]=t;u=mo(n|0,u|0,8)|0;i[e+202>>0]=u;i[e+203>>0]=n;Qi(e,a);n=0;do{a=e+8+(n<<3)|0;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,56)|0;u=r+(n<<3)|0;i[u>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,48)|0;i[u+1>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,40)|0;i[u+2>>0]=t;i[u+3>>0]=o[a+4>>2];t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,24)|0;i[u+4>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,16)|0;i[u+5>>0]=t;t=a;t=mo(o[t>>2]|0,o[t+4>>2]|0,8)|0;i[u+6>>0]=t;i[u+7>>0]=o[a>>2];n=n+1|0}while((n|0)!=8);n=0;return n|0}function $i(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0;if((e|0)==0|(r|0)==0){e=1;return e|0}s=e+72|0;t=o[s>>2]|0;if(t>>>0>128){e=1;return e|0}if(!n){e=0;return e|0}_=e+76|0;while(1){if(!(n>>>0>127&(t|0)==0)){u=128-t|0;u=n>>>0<u>>>0?n:u;if(u){a=0;do{i[t+a+(e+76)>>0]=i[r+a>>0]|0;a=a+1|0;t=o[s>>2]|0}while(a>>>0<u>>>0)}a=t+u|0;o[s>>2]=a;r=r+u|0;n=n-u|0;if((a|0)==128){Qi(e,_);a=e;a=fo(o[a>>2]|0,o[a+4>>2]|0,1024,0)|0;u=e;o[u>>2]=a;o[u+4>>2]=C;o[s>>2]=0}}else{Qi(e,r);a=e;a=fo(o[a>>2]|0,o[a+4>>2]|0,1024,0)|0;u=e;o[u>>2]=a;o[u+4>>2]=C;n=n+-128|0;r=r+128|0}if(!n){n=0;break}t=o[s>>2]|0}return n|0}function et(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0;A=f;f=f+736|0;k=A+704|0;v=A+568|0;g=A+528|0;y=A+488|0;b=A+640|0;p=A+608|0;w=A;d=A+328|0;m=A+208|0;if((a[e+63>>0]|0)>31){y=0;f=A;return y|0}if(Wi(d,t)|0){y=0;f=A;return y|0}h=w+72|0;o[h>>2]=0;l=w;o[l>>2]=0;o[l+4>>2]=0;l=w+8|0;o[l>>2]=-205731576;o[l+4>>2]=1779033703;l=w+16|0;o[l>>2]=-2067093701;o[l+4>>2]=-1150833019;l=w+24|0;o[l>>2]=-23791573;o[l+4>>2]=1013904242;l=w+32|0;o[l>>2]=1595750129;o[l+4>>2]=-1521486534;l=w+40|0;o[l>>2]=-1377402159;o[l+4>>2]=1359893119;l=w+48|0;o[l>>2]=725511199;o[l+4>>2]=-1694144372;l=w+56|0;o[l>>2]=-79577749;o[l+4>>2]=528734635;l=w+64|0;o[l>>2]=327033209;o[l+4>>2]=1541459225;l=w+76|0;u=0;_=0;do{i[_+u+(w+76)>>0]=i[e+_>>0]|0;_=_+1|0;u=o[h>>2]|0}while(_>>>0<32);c=u+32|0;o[h>>2]=c;if((c|0)==128){Qi(w,l);l=w;l=fo(o[l>>2]|0,o[l+4>>2]|0,1024,0)|0;c=w;o[c>>2]=l;o[c+4>>2]=C;o[h>>2]=0}e:do{if(t|0?(s=o[h>>2]|0,s>>>0<=128):0){c=w+76|0;u=32;while(1){if(!((s|0)==0&u>>>0>127)){l=128-s|0;l=u>>>0<l>>>0?u:l;if(l){_=0;do{i[_+s+(w+76)>>0]=i[t+_>>0]|0;_=_+1|0;s=o[h>>2]|0}while(_>>>0<l>>>0)}_=s+l|0;o[h>>2]=_;t=t+l|0;u=u-l|0;if((_|0)==128){Qi(w,c);_=w;_=fo(o[_>>2]|0,o[_+4>>2]|0,1024,0)|0;l=w;o[l>>2]=_;o[l+4>>2]=C;o[h>>2]=0}}else{Qi(w,t);_=w;_=fo(o[_>>2]|0,o[_+4>>2]|0,1024,0)|0;l=w;o[l>>2]=_;o[l+4>>2]=C;u=u+-128|0;t=t+128|0}if(!u)break e;s=o[h>>2]|0}}}while(0);$i(w,r,n)|0;Zi(w,b)|0;zi(b);ji(m,b,d,e+32|0);Ii(v,m+80|0);Pi(g,m,v);Pi(y,m+40|0,v);Ni(p,y);Ni(k,g);y=p+31|0;i[y>>0]=(a[y>>0]|0)^(a[k>>0]|0)<<7;y=(i[e+1>>0]^i[p+1>>0]|i[e>>0]^i[p>>0]|i[e+2>>0]^i[p+2>>0]|i[e+3>>0]^i[p+3>>0]|i[e+4>>0]^i[p+4>>0]|i[e+5>>0]^i[p+5>>0]|i[e+6>>0]^i[p+6>>0]|i[e+7>>0]^i[p+7>>0]|i[e+8>>0]^i[p+8>>0]|i[e+9>>0]^i[p+9>>0]|i[e+10>>0]^i[p+10>>0]|i[e+11>>0]^i[p+11>>0]|i[e+12>>0]^i[p+12>>0]|i[e+13>>0]^i[p+13>>0]|i[e+14>>0]^i[p+14>>0]|i[e+15>>0]^i[p+15>>0]|i[e+16>>0]^i[p+16>>0]|i[e+17>>0]^i[p+17>>0]|i[e+18>>0]^i[p+18>>0]|i[e+19>>0]^i[p+19>>0]|i[e+20>>0]^i[p+20>>0]|i[e+21>>0]^i[p+21>>0]|i[e+22>>0]^i[p+22>>0]|i[e+23>>0]^i[p+23>>0]|i[e+24>>0]^i[p+24>>0]|i[e+25>>0]^i[p+25>>0]|i[e+26>>0]^i[p+26>>0]|i[e+27>>0]^i[p+27>>0]|i[e+28>>0]^i[p+28>>0]|i[e+29>>0]^i[p+29>>0]|i[e+30>>0]^i[p+30>>0]|i[e+31>>0]^i[y>>0])<<24>>24==0&1;f=A;return y|0}function rt(e,r,n,t,u){e=e|0;r=r|0;n=n|0;t=t|0;u=u|0;var s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0;R=f;f=f+656|0;A=R+616|0;y=R+448|0;T=R+408|0;M=R+368|0;S=R;x=R+552|0;O=R+488|0;g=R+208|0;E=S+72|0;o[E>>2]=0;k=S;o[k>>2]=0;o[k+4>>2]=0;k=S+8|0;c=k;o[c>>2]=-205731576;o[c+4>>2]=1779033703;c=S+16|0;h=c;o[h>>2]=-2067093701;o[h+4>>2]=-1150833019;h=S+24|0;d=h;o[d>>2]=-23791573;o[d+4>>2]=1013904242;d=S+32|0;m=d;o[m>>2]=1595750129;o[m+4>>2]=-1521486534;m=S+40|0;p=m;o[p>>2]=-1377402159;o[p+4>>2]=1359893119;p=S+48|0;b=p;o[b>>2]=725511199;o[b+4>>2]=-1694144372;b=S+56|0;w=b;o[w>>2]=-79577749;o[w+4>>2]=528734635;w=S+64|0;_=w;o[_>>2]=327033209;o[_+4>>2]=1541459225;_=u+32|0;v=S+76|0;s=0;l=0;do{i[l+s+(S+76)>>0]=i[_+l>>0]|0;l=l+1|0;s=o[E>>2]|0}while(l>>>0<32);l=s+32|0;o[E>>2]=l;if((l|0)==128){Qi(S,v);l=S;l=fo(o[l>>2]|0,o[l+4>>2]|0,1024,0)|0;v=S;o[v>>2]=l;o[v+4>>2]=C;o[E>>2]=0}$i(S,r,n)|0;Zi(S,O)|0;zi(O);Yi(g,O);Ii(y,g+80|0);Pi(T,g,y);Pi(M,g+40|0,y);Ni(e,M);Ni(A,T);M=e+31|0;i[M>>0]=(a[M>>0]|0)^(a[A>>0]|0)<<7;o[E>>2]=0;M=S;o[M>>2]=0;o[M+4>>2]=0;M=k;o[M>>2]=-205731576;o[M+4>>2]=1779033703;M=c;o[M>>2]=-2067093701;o[M+4>>2]=-1150833019;M=h;o[M>>2]=-23791573;o[M+4>>2]=1013904242;M=d;o[M>>2]=1595750129;o[M+4>>2]=-1521486534;M=m;o[M>>2]=-1377402159;o[M+4>>2]=1359893119;M=p;o[M>>2]=725511199;o[M+4>>2]=-1694144372;M=b;o[M>>2]=-79577749;o[M+4>>2]=528734635;M=w;o[M>>2]=327033209;o[M+4>>2]=1541459225;if(e|0){l=S+76|0;s=0;_=0;do{i[_+s+(S+76)>>0]=i[e+_>>0]|0;_=_+1|0;s=o[E>>2]|0}while(_>>>0<32);M=s+32|0;o[E>>2]=M;if((M|0)==128){Qi(S,l);T=S;T=fo(o[T>>2]|0,o[T+4>>2]|0,1024,0)|0;M=S;o[M>>2]=T;o[M+4>>2]=C;o[E>>2]=0}}if(!t){$i(S,r,n)|0;Zi(S,x)|0;zi(x);e=e+32|0;qi(e,x,u,O);f=R;return}_=o[E>>2]|0;if(_>>>0>128){$i(S,r,n)|0;Zi(S,x)|0;zi(x);e=e+32|0;qi(e,x,u,O);f=R;return}h=S+76|0;s=32;while(1){if(!((_|0)==0&s>>>0>127)){c=128-_|0;c=s>>>0<c>>>0?s:c;if(c){l=0;do{i[l+_+(S+76)>>0]=i[t+l>>0]|0;l=l+1|0;_=o[E>>2]|0}while(l>>>0<c>>>0)}M=_+c|0;o[E>>2]=M;t=t+c|0;s=s-c|0;if((M|0)==128){Qi(S,h);T=S;T=fo(o[T>>2]|0,o[T+4>>2]|0,1024,0)|0;M=S;o[M>>2]=T;o[M+4>>2]=C;o[E>>2]=0}}else{Qi(S,t);T=S;T=fo(o[T>>2]|0,o[T+4>>2]|0,1024,0)|0;M=S;o[M>>2]=T;o[M+4>>2]=C;s=s+-128|0;t=t+128|0}if(!s)break;_=o[E>>2]|0}$i(S,r,n)|0;Zi(S,x)|0;zi(x);e=e+32|0;qi(e,x,u,O);f=R;return}function nt(e,r,n){e=e|0;r=r|0;n=n|0;o[e+128>>2]=n;n=r;r=e+128|0;do{i[e>>0]=i[n>>0]|0;e=e+1|0;n=n+1|0}while((e|0)<(r|0));return}function it(e){e=e|0;return 132}function tt(e,r){e=e|0;r=r|0;r=tr(r,e,128)|0;return er(r,o[e+128>>2]|0)|0}function ot(e,r,n){e=e|0;r=r|0;n=n|0;return rr(or(r,n,e,128)|0,n,e+128|0)|0}function at(e){e=e|0;var r=0,n=0,i=0;i=e+128|0;r=(o[i>>2]|0)+1|0;o[i>>2]=r;if(r&16777215)if(!(r&65535))n=1;else n=(r&255|0)==0?2:3;else n=0;r=e+(n<<5)|0;i=3;while(1){Hr(r,32,33193+i|0,1,e+(i<<5)|0);if((i|0)>(n|0))i=i+-1|0;else break}return}function ut(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0;u=e+128|0;n=o[u>>2]|0;s=0;do{i=(4-s<<3)+-8|0;a=-1<<i;i=(r>>>i)-(n>>>i)&255;if(!i){if(n>>>0>r>>>0){i=256;t=5}}else if(i>>>0>1)t=5;else t=6;if((t|0)==5){n=e+(s<<5)|0;t=33193+s|0;do{Hr(n,32,t,1,n);i=i+-1|0}while(i>>>0>1);t=6}if((t|0)==6){t=0;n=e+(s<<5)|0;i=3;while(1){Hr(n,32,33193+i|0,1,e+(i<<5)|0);if((i|0)>(s|0))i=i+-1|0;else break}n=a&r;o[u>>2]=n}s=s+1|0}while((s|0)!=4);return}function st(e){e=e|0;if(e>>>0>=15){e=33470;return e|0}e=o[32512+(e<<2)>>2]|0;return e|0}function _t(e){e=e|0;e=Po[o[680>>2]&3](32572,e)|0;return Ie((Io[o[169]&1](32572)|0)+e|0)|0}function lt(e,r){e=e|0;r=r|0;r=Po[o[680>>2]&3](32572,r)|0;r=(Io[o[169]&1](32572)|0)+r|0;return e+(Ie(r)|0)+(0-r)|0}function ft(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0,u=0,s=0;s=Po[o[680>>2]&3](32572,i)|0;a=(Io[o[169]&1](32572)|0)+s|0;t=Ie(a)|0;u=n+t+(0-a)|0;Lo[o[684>>2]&3](32572,e,r,u,i,u,s,u,a)|0;Le(u,a,n)|0;return t|0}function ct(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0;a=Pe(i)|0;if((a|0)==-1){if(!t){t=-1;return t|0}o[t>>2]=7;t=-1;return t|0}else{Ne(n,i,n)|0;i=a-(Io[o[169]&1](32572)|0)|0;a=Lo[o[692>>2]&3](32572,e,r,n,a,n,i,n,i)|0;if(!((t|0)!=0&(a|0)==-1)){t=a;return t|0}o[t>>2]=8;t=-1;return t|0}return 0}function ht(){return 304}function dt(e){e=e|0;xi(e,304);return e|0}function mt(e){e=e|0;xi(e,304);return 304}function pt(e){e=e|0;return st(o[e+300>>2]|0)|0}function bt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0;_=f;f=f+240|0;s=_;switch(Pe(n)|0){case-1:{o[e+300>>2]=7;s=-1;f=_;return s|0}case 229:{Ne(r,n,s)|0;do{if((i[s>>0]|0)==2){n=s+5|0;r=((a[s+2>>0]|a[s+1>>0]<<8)<<8|a[s+3>>0])<<8|a[s+4>>0];nt(e,n,r);nt(e+132|0,n,r);r=e+264|0;n=r;t=s+133|0;u=n+32|0;do{i[n>>0]=i[t>>0]|0;n=n+1|0;t=t+1|0}while((n|0)<(u|0));if(!(Nr(r,s,165,s+165|0)|0)){o[e+300>>2]=14;r=-1;break}else{o[e+296>>2]=1;r=0;break}}else{o[e+300>>2]=11;r=-1}}while(0);xi(s,229);s=r;f=_;return s|0}default:{o[e+300>>2]=11;s=-1;f=_;return s|0}}return 0}function wt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0;u=f;f=f+176|0;t=u;switch(Pe(n)|0){case-1:{o[e+300>>2]=7;t=-1;f=u;return t|0}case 165:{Ne(r,n,t)|0;if((i[t>>0]|0)==1){n=t+5|0;r=((a[t+2>>0]|a[t+1>>0]<<8)<<8|a[t+3>>0])<<8|a[t+4>>0];nt(e,n,r);nt(e+132|0,n,r);e=e+264|0;r=t+133|0;n=e+32|0;do{i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0}while((e|0)<(n|0));e=0}else{o[e+300>>2]=11;e=-1}xi(t,165);t=e;f=u;return t|0}default:{o[e+300>>2]=11;t=-1;f=u;return t|0}}return 0}function vt(e){e=e|0;var r=0,n=0;n=it(e)|0;r=it(e+132|0)|0;return _t(n+5+r+(Ye(e+264|0)|0)|0)|0}function kt(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0;_=it(e)|0;a=e+132|0;s=it(a)|0;u=e+264|0;s=_+5+s+(Ye(u)|0)|0;if((_t(s)|0)>>>0>t>>>0){o[e+300>>2]=2;_=-1;return _|0}else{_=Je(tt(a,tt(e,er(lt(i,s)|0,2)|0)|0)|0,u)|0;nr(_,o[e+296>>2]|0)|0;_=ft(r,n,i,s)|0;return _|0}return 0}function gt(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0;_=f;f=f+16|0;u=_;s=e+300|0;r=ct(r,n,i,t,s)|0;if((r|0)==-1){t=-1;f=_;return t|0}a=i+r|0;r=rr(i,a,u)|0;if(((o[u>>2]|0)+-1|0)>>>0>1){o[s>>2]=9;t=-1;f=_;return t|0}r=Xe(ot(e+132|0,ot(e,r,a)|0,a)|0,a,e+264|0)|0;n=e+296|0;if((o[u>>2]|0)==1)o[n>>2]=1;else r=ir(r,a,n)|0;if((a|0)==(r|0)){f=_;return t|0}o[s>>2]=10;t=-1;f=_;return t|0}function yt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0;a=f;f=f+32|0;t=a;n=Ne(r,n,r)|0;if((n|0)==-1){o[e+300>>2]=7;e=-1;f=a;return e|0}u=o[8124]|0;dr(r,n,Io[o[o[u>>2]>>2]&1](u)|0,64,t);do{if((i[t>>0]|0)==3)if(!(o[t+12>>2]|0)){o[e+300>>2]=4;n=-1;break}else{n=o[8124]|0;n=Po[o[(o[n>>2]|0)+12>>2]&3](n,o[t+16>>2]|0)|0;break}else{o[e+300>>2]=3;n=-1}}while(0);u=n;f=a;return u|0}function At(e,r,n,t,a,u){e=e|0;r=r|0;n=n|0;t=t|0;a=a|0;u=u|0;var s=0,_=0,l=0,c=0,h=0,d=0;d=f;f=f+160|0;l=d+132|0;h=d;n=Ne(r,n,r)|0;if((n|0)==-1){o[e+300>>2]=7;e=-1;f=d;return e|0}_=o[8124]|0;dr(r,n,Io[o[o[_>>2]>>2]&1](_)|0,64,l);e:do{if((i[l>>0]|0)==3){if(o[l+8>>2]|0?(c=l+12|0,o[c>>2]|0):0){if(u|0)o[u>>2]=o[l+4>>2];s=n+-64|0;if(!(Nr(e+264|0,r,s,r+s|0)|0)){o[e+300>>2]=14;n=-1;break}u=o[8124]|0;_=l+16|0;if((Po[o[(o[u>>2]|0)+12>>2]&3](u,o[_>>2]|0)|0)>>>0>a>>>0){o[e+300>>2]=2;n=-1;break}n=o[l+4>>2]|0;u=e+132|0;do{if((n-(o[e+260>>2]|0)|0)<=-1)if((n-(o[e+128>>2]|0)|0)<0){o[e+300>>2]=12;n=-1;break e}else{bo(h|0,e|0,132)|0;ut(h,n);break}else{ut(u,n);bo(h|0,u|0,132)|0}}while(0);n=o[8124]|0;n=Lo[o[(o[n>>2]|0)+16>>2]&3](n,h,128,r,s,o[c>>2]|0,o[_>>2]|0,t,a)|0;xi(h,132);if((n|0)==-1){o[e+300>>2]=5;n=-1;break}else{o[e+296>>2]=1;break}}o[e+300>>2]=4;n=-1}else{o[e+300>>2]=3;n=-1}}while(0);e=n;f=d;return e|0}function Tt(e){e=e|0;return Ie(32)|0}function Mt(e,r,n){e=e|0;r=r|0;n=n|0;if((Ie(32)|0)>>>0>n>>>0){o[e+300>>2]=2;e=-1;return e|0}else{e=Le(e+264|0,32,r)|0;return e|0}return 0}function Et(e){e=e|0;return o[e+128>>2]|0}function St(e){e=e|0;return o[e+296>>2]|0}function xt(e){e=e|0;return Ie(165)|0}function Ot(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var a=0,u=0,s=0,_=0,l=0;l=f;f=f+144|0;_=l;a=Ie(165)|0;if(a>>>0>n>>>0){o[e+300>>2]=2;e=-1;f=l;return e|0}n=e+132|0;do{if((t-(o[e+260>>2]|0)|0)>-1){ut(n,t);bo(_|0,n|0,132)|0}else{if((t-(o[e+128>>2]|0)|0)>=0){bo(_|0,e|0,132)|0;ut(_,t);break}o[e+300>>2]=12;e=-1;f=l;return e|0}}while(0);s=r+a+-165|0;i[s>>0]=1;u=s+1|0;i[u>>0]=t>>>24;u=u+1|0;i[u>>0]=t>>>16;u=u+1|0;i[u>>0]=t>>>8;i[u+1>>0]=t;u=r+(a+-161)|0;a=r+(a+-160)|0;n=_;t=a+128|0;do{i[a>>0]=i[n>>0]|0;a=a+1|0;n=n+1|0}while((a|0)<(t|0));a=u+129|0;n=e+264|0;t=a+32|0;do{i[a>>0]=i[n>>0]|0;a=a+1|0;n=n+1|0}while((a|0)<(t|0));e=Le(s,165,r)|0;f=l;return e|0}function Rt(){return 232}function Ct(e){e=e|0;xi(e,232);return e|0}function It(e){e=e|0;xi(e,232);return 232}function Lt(e){e=e|0;return st(o[e+228>>2]|0)|0}function Pt(e){e=e|0;var r=0;r=(it(e)|0)+4|0;return _t(r+(Qe(e+132|0)|0)|0)|0}function Nt(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0;u=(it(e)|0)+4|0;a=e+132|0;u=u+(Qe(a)|0)|0;if((_t(u)|0)>>>0>t>>>0){o[e+228>>2]=2;e=-1;return e|0}else{Ze(tt(e,er(lt(i,u)|0,1)|0)|0,a)|0;e=ft(r,n,i,u)|0;return e|0}return 0}function Ut(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0;s=f;f=f+16|0;u=s;a=e+228|0;r=ct(r,n,i,t,a)|0;if((r|0)==-1){e=-1;f=s;return e|0}n=i+r|0;r=rr(i,n,u)|0;if((o[u>>2]|0)!=1){o[a>>2]=9;e=-1;f=s;return e|0}if((n|0)==($e(ot(e,r,n)|0,n,e+132|0)|0)){e=t;f=s;return e|0}o[a>>2]=10;e=-1;f=s;return e|0}function Ft(e){e=e|0;return 160}function zt(e,r,n){e=e|0;r=r|0;n=n|0;if(n>>>0<160){o[e+228>>2]=1;e=-1;return e|0}else{nt(e,r,0);Lr(r+128|0,e+132|0);xi(r,n);e=0;return e|0}return 0}function qt(e,r){e=e|0;r=r|0;var n=0;n=o[8124]|0;n=Po[o[(o[n>>2]|0)+4>>2]&3](n,r)|0;r=o[8124]|0;r=Io[o[o[r>>2]>>2]&1](r)|0;return Ie(cr(o[e+128>>2]|0,n,r,64)|0)|0}function Ht(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,c=0;l=f;f=f+16|0;_=l;a=o[8124]|0;a=Po[o[(o[a>>2]|0)+4>>2]&3](a,n)|0;s=o[8124]|0;s=Io[o[o[s>>2]>>2]&1](s)|0;u=e+128|0;s=cr(o[u>>2]|0,a,s,64)|0;if((Ie(s)|0)>>>0>t>>>0){o[e+228>>2]=2;e=-1;f=l;return e|0}a=i+(Ie(s)|0)+(0-s)|0;c=o[8124]|0;c=Po[o[(o[c>>2]|0)+4>>2]&3](c,n)|0;t=o[8124]|0;t=Io[o[o[t>>2]>>2]&1](t)|0;t=(hr(3,o[u>>2]|0,c,a,_)|0)+t|0;u=o[8124]|0;if((Lo[o[(o[u>>2]|0)+8>>2]&3](u,e,128,r,n,o[_>>2]|0,c,a,t)|0)==-1){c=-1;f=l;return c|0}else{at(e);Pr(e+132|0,a,t,a+t|0);c=Le(a,s,i)|0;f=l;return c|0}return 0}function jt(e){e=e|0;return Ie(32)|0}function Dt(e,r,n){e=e|0;r=r|0;n=n|0;if((Ie(32)|0)>>>0>n>>>0){o[e+228>>2]=2;e=-1;return e|0}else{e=Le(e+132|0,32,r)|0;return e|0}return 0}function Vt(e){e=e|0;return o[e+128>>2]|0}function Bt(e){e=e|0;return Ie(229)|0}function Gt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0;t=Ie(229)|0;if(t>>>0>n>>>0){o[e+228>>2]=2;r=-1;return r|0}else{s=r+t+-229|0;i[s>>0]=2;a=o[e+128>>2]|0;_=s+1|0;i[_>>0]=a>>>24;_=_+1|0;i[_>>0]=a>>>16;_=_+1|0;i[_>>0]=a>>>8;i[_+1>>0]=a;_=r+(t+-225)|0;t=r+(t+-224)|0;a=e;u=t+128|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));n=e+132|0;t=_+129|0;a=n;u=t+32|0;do{i[t>>0]=i[a>>0]|0;t=t+1|0;a=a+1|0}while((t|0)<(u|0));e=_+161|0;Pr(n,s,e-s|0,e);r=Le(s,229,r)|0;return r|0}return 0}function Kt(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0;O=f;f=f+256|0;c=O;n=0;i=0;while(1){o[c+(n<<2)>>2]=(a[r+(i|1)>>0]|0)<<16|(a[r+i>>0]|0)<<24|(a[r+(i|2)>>0]|0)<<8|(a[r+(i|3)>>0]|0);n=n+1|0;if((n|0)==16)break;else i=i+4|0}r=o[c>>2]|0;n=16;do{x=o[c+(n+-2<<2)>>2]|0;S=r;r=o[c+(n+-15<<2)>>2]|0;o[c+(n<<2)>>2]=S+(o[c+(n+-7<<2)>>2]|0)+((x>>>19|x<<13)^x>>>10^(x>>>17|x<<15))+((r>>>18|r<<14)^r>>>3^(r>>>7|r<<25));n=n+1|0}while((n|0)!=64);m=e+80|0;p=o[m>>2]|0;b=e+84|0;w=o[b>>2]|0;v=e+88|0;k=o[v>>2]|0;g=e+92|0;y=o[g>>2]|0;A=e+96|0;T=o[A>>2]|0;M=e+100|0;E=o[M>>2]|0;S=e+104|0;x=o[S>>2]|0;h=e+108|0;d=o[h>>2]|0;l=p;s=w;u=k;i=y;e=T;n=E;r=x;t=d;_=0;while(1){t=((e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7))+t+(r&~e^n&e)+(o[32584+(_<<2)>>2]|0)+(o[c+(_<<2)>>2]|0)|0;i=t+i|0;t=((l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10))+(l&(s^u)^s&u)+t|0;_=_+1|0;if((_|0)==64){_=l;break}else{C=e;R=l;l=t;e=i;t=r;r=n;n=C;i=u;u=s;s=R}}o[m>>2]=p+t;o[b>>2]=w+_;o[v>>2]=k+s;o[g>>2]=y+u;o[A>>2]=T+i;o[M>>2]=E+e;o[S>>2]=x+n;o[h>>2]=d+r;f=O;return}function Wt(e){e=e|0;var r=0;o[e+64>>2]=0;r=e+72|0;o[r>>2]=0;o[r+4>>2]=0;o[e+80>>2]=1779033703;o[e+84>>2]=-1150833019;o[e+88>>2]=1013904242;o[e+92>>2]=-1521486534;o[e+96>>2]=1359893119;o[e+100>>2]=-1694144372;o[e+104>>2]=528734635;o[e+108>>2]=1541459225;return}function Yt(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0,_=0;if(!n)return;a=e+64|0;u=e+72|0;t=o[a>>2]|0;s=0;do{i[e+t>>0]=i[r+s>>0]|0;t=(o[a>>2]|0)+1|0;o[a>>2]=t;if((t|0)==64){Kt(e,e);_=u;_=fo(o[_>>2]|0,o[_+4>>2]|0,512,0)|0;t=u;o[t>>2]=_;o[t+4>>2]=C;o[a>>2]=0;t=0}s=s+1|0}while((s|0)!=(n|0));return}function Jt(e,r){e=e|0;r=r|0;var n=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0;a=e+64|0;n=o[a>>2]|0;t=n+1|0;i[e+n>>0]=-128;if(n>>>0<56){if(t>>>0<56)ho(e+t|0,0,55-n|0)|0}else{if(t>>>0<64)ho(e+t|0,0,63-n|0)|0;Kt(e,e);n=e;t=n+56|0;do{o[n>>2]=0;n=n+4|0}while((n|0)<(t|0))}s=e+72|0;u=s;u=fo(o[a>>2]<<3|0,0,o[u>>2]|0,o[u+4>>2]|0)|0;a=C;o[s>>2]=u;o[s+4>>2]=a;i[e+63>>0]=u;s=mo(u|0,a|0,8)|0;i[e+62>>0]=s;s=mo(u|0,a|0,16)|0;i[e+61>>0]=s;s=mo(u|0,a|0,24)|0;i[e+60>>0]=s;i[e+59>>0]=a;s=mo(u|0,a|0,40)|0;i[e+58>>0]=s;s=mo(u|0,a|0,48)|0;i[e+57>>0]=s;a=mo(u|0,a|0,56)|0;i[e+56>>0]=a;Kt(e,e);a=e+80|0;u=e+84|0;s=e+88|0;_=e+92|0;l=e+96|0;f=e+100|0;c=e+104|0;n=e+108|0;t=0;do{e=24-(t<<3)|0;i[r+t>>0]=(o[a>>2]|0)>>>e;i[r+(t+4)>>0]=(o[u>>2]|0)>>>e;i[r+(t+8)>>0]=(o[s>>2]|0)>>>e;i[r+(t+12)>>0]=(o[_>>2]|0)>>>e;i[r+(t+16)>>0]=(o[l>>2]|0)>>>e;i[r+(t+20)>>0]=(o[f>>2]|0)>>>e;i[r+(t+24)>>0]=(o[c>>2]|0)>>>e;i[r+(t+28)>>0]=(o[n>>2]|0)>>>e;t=t+1|0}while((t|0)!=4);return}function Xt(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0;F=f;f=f+16|0;U=F;S=U+4|0;P=U+8|0;H=i[e+3>>0]|0;N=U+12|0;p=i[e+4>>0]|0;g=U+1|0;d=i[e+5>>0]|0;y=U+5|0;q=i[e+6>>0]|0;A=U+9|0;z=i[e+7>>0]|0;T=U+13|0;k=i[e+8>>0]|0;M=U+2|0;u=i[e+9>>0]|0;E=U+6|0;b=i[e+10>>0]|0;x=U+10|0;v=i[e+11>>0]|0;O=U+14|0;_=i[e+12>>0]|0;R=U+3|0;w=i[e+13>>0]|0;C=U+7|0;m=i[e+14>>0]|0;I=U+11|0;h=i[e+15>>0]|0;L=U+15|0;l=o[n>>2]|0;c=(a[e>>0]|0)^l>>>24;s=(a[e+1>>0]|0)^l>>>16;i[P>>0]=(a[e+2>>0]|0)^l>>>8;i[N>>0]=H&255^l;l=o[n+4>>2]|0;p=p&255^l>>>24;d=d&255^l>>>16;i[A>>0]=q&255^l>>>8;i[T>>0]=z&255^l;l=o[n+8>>2]|0;k=k&255^l>>>24;u=u&255^l>>>16;b=b&255^l>>>8;i[O>>0]=v&255^l;l=o[n+12>>2]|0;_=_&255^l>>>24;e=w&255^l>>>16;m=m&255^l>>>8;l=h&255^l;i[U>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[g>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;i[M>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[R>>0]=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;_=a[P>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;k=a[A>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;p=a[N>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;c=a[T>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;h=a[O>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;i[S>>0]=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;i[y>>0]=u;i[E>>0]=e;i[C>>0]=s;i[P>>0]=b;i[x>>0]=_;i[A>>0]=m;i[I>>0]=k;i[N>>0]=l;i[L>>0]=h;i[O>>0]=c;i[T>>0]=p;Qt(U);p=o[n+16>>2]|0;c=(a[U>>0]|0)^p>>>24;i[S>>0]=(a[S>>0]|0)^p>>>16;i[P>>0]=(a[P>>0]|0)^p>>>8;i[N>>0]=(a[N>>0]|0)^p;p=o[n+20>>2]|0;h=(a[g>>0]|0)^p>>>24;l=(a[y>>0]|0)^p>>>16;i[A>>0]=(a[A>>0]|0)^p>>>8;i[T>>0]=(a[T>>0]|0)^p;p=o[n+24>>2]|0;k=(a[M>>0]|0)^p>>>24;m=(a[E>>0]|0)^p>>>16;_=(a[x>>0]|0)^p>>>8;i[O>>0]=(a[O>>0]|0)^p;p=o[n+28>>2]|0;b=(a[R>>0]|0)^p>>>24;s=(a[C>>0]|0)^p>>>16;e=(a[I>>0]|0)^p>>>8;p=(a[L>>0]|0)^p;i[U>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[g>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[M>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[R>>0]=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;b=a[S>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;k=a[P>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;h=a[A>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;c=a[N>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;u=a[T>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;d=a[O>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;i[S>>0]=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;i[y>>0]=m;i[E>>0]=s;i[C>>0]=b;i[P>>0]=_;i[x>>0]=k;i[A>>0]=e;i[I>>0]=h;i[N>>0]=p;i[L>>0]=d;i[O>>0]=u;i[T>>0]=c;Qt(U);c=o[n+32>>2]|0;u=(a[U>>0]|0)^c>>>24;i[S>>0]=(a[S>>0]|0)^c>>>16;i[P>>0]=(a[P>>0]|0)^c>>>8;i[N>>0]=(a[N>>0]|0)^c;c=o[n+36>>2]|0;d=(a[g>>0]|0)^c>>>24;p=(a[y>>0]|0)^c>>>16;i[A>>0]=(a[A>>0]|0)^c>>>8;i[T>>0]=(a[T>>0]|0)^c;c=o[n+40>>2]|0;h=(a[M>>0]|0)^c>>>24;e=(a[E>>0]|0)^c>>>16;k=(a[x>>0]|0)^c>>>8;i[O>>0]=(a[O>>0]|0)^c;c=o[n+44>>2]|0;_=(a[R>>0]|0)^c>>>24;b=(a[C>>0]|0)^c>>>16;s=(a[I>>0]|0)^c>>>8;c=(a[L>>0]|0)^c;i[U>>0]=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[g>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;i[M>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[R>>0]=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;_=a[S>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;h=a[P>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;d=a[A>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;u=a[N>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;m=a[T>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;l=a[O>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;i[S>>0]=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;i[y>>0]=e;i[E>>0]=b;i[C>>0]=_;i[P>>0]=k;i[x>>0]=h;i[A>>0]=s;i[I>>0]=d;i[N>>0]=c;i[L>>0]=l;i[O>>0]=m;i[T>>0]=u;Qt(U);u=o[n+48>>2]|0;m=(a[U>>0]|0)^u>>>24;i[S>>0]=(a[S>>0]|0)^u>>>16;i[P>>0]=(a[P>>0]|0)^u>>>8;i[N>>0]=(a[N>>0]|0)^u;u=o[n+52>>2]|0;l=(a[g>>0]|0)^u>>>24;c=(a[y>>0]|0)^u>>>16;i[A>>0]=(a[A>>0]|0)^u>>>8;i[T>>0]=(a[T>>0]|0)^u;u=o[n+56>>2]|0;d=(a[M>>0]|0)^u>>>24;s=(a[E>>0]|0)^u>>>16;h=(a[x>>0]|0)^u>>>8;i[O>>0]=(a[O>>0]|0)^u;u=o[n+60>>2]|0;k=(a[R>>0]|0)^u>>>24;_=(a[C>>0]|0)^u>>>16;b=(a[I>>0]|0)^u>>>8;u=(a[L>>0]|0)^u;i[U>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[g>>0]=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;i[M>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;i[R>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;k=a[S>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;d=a[P>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;l=a[A>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;m=a[N>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;e=a[T>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;p=a[O>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;i[S>>0]=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;i[y>>0]=s;i[E>>0]=_;i[C>>0]=k;i[P>>0]=h;i[x>>0]=d;i[A>>0]=b;i[I>>0]=l;i[N>>0]=u;i[L>>0]=p;i[O>>0]=e;i[T>>0]=m;Qt(U);m=o[n+64>>2]|0;e=(a[U>>0]|0)^m>>>24;i[S>>0]=(a[S>>0]|0)^m>>>16;i[P>>0]=(a[P>>0]|0)^m>>>8;i[N>>0]=(a[N>>0]|0)^m;m=o[n+68>>2]|0;p=(a[g>>0]|0)^m>>>24;u=(a[y>>0]|0)^m>>>16;i[A>>0]=(a[A>>0]|0)^m>>>8;i[T>>0]=(a[T>>0]|0)^m;m=o[n+72>>2]|0;l=(a[M>>0]|0)^m>>>24;b=(a[E>>0]|0)^m>>>16;d=(a[x>>0]|0)^m>>>8;i[O>>0]=(a[O>>0]|0)^m;m=o[n+76>>2]|0;h=(a[R>>0]|0)^m>>>24;k=(a[C>>0]|0)^m>>>16;_=(a[I>>0]|0)^m>>>8;m=(a[L>>0]|0)^m;i[U>>0]=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[g>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;i[M>>0]=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;i[R>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;h=a[S>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;l=a[P>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;p=a[A>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;e=a[N>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;s=a[T>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;c=a[O>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;i[S>>0]=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;i[y>>0]=b;i[E>>0]=k;i[C>>0]=h;i[P>>0]=d;i[x>>0]=l;i[A>>0]=_;i[I>>0]=p;i[N>>0]=m;i[L>>0]=c;i[O>>0]=s;i[T>>0]=e;Qt(U);e=o[n+80>>2]|0;s=(a[U>>0]|0)^e>>>24;i[S>>0]=(a[S>>0]|0)^e>>>16;i[P>>0]=(a[P>>0]|0)^e>>>8;i[N>>0]=(a[N>>0]|0)^e;e=o[n+84>>2]|0;c=(a[g>>0]|0)^e>>>24;m=(a[y>>0]|0)^e>>>16;i[A>>0]=(a[A>>0]|0)^e>>>8;i[T>>0]=(a[T>>0]|0)^e;e=o[n+88>>2]|0;p=(a[M>>0]|0)^e>>>24;_=(a[E>>0]|0)^e>>>16;l=(a[x>>0]|0)^e>>>8;i[O>>0]=(a[O>>0]|0)^e;e=o[n+92>>2]|0;d=(a[R>>0]|0)^e>>>24;h=(a[C>>0]|0)^e>>>16;k=(a[I>>0]|0)^e>>>8;e=(a[L>>0]|0)^e;i[U>>0]=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;i[g>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[M>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;i[R>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;d=a[S>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;p=a[P>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;c=a[A>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;s=a[N>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;b=a[T>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;u=a[O>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;e=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;i[S>>0]=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;i[y>>0]=_;i[E>>0]=h;i[C>>0]=d;i[P>>0]=l;i[x>>0]=p;i[A>>0]=k;i[I>>0]=c;i[N>>0]=e;i[L>>0]=u;i[O>>0]=b;i[T>>0]=s;Qt(U);s=o[n+96>>2]|0;b=(a[U>>0]|0)^s>>>24;i[S>>0]=(a[S>>0]|0)^s>>>16;i[P>>0]=(a[P>>0]|0)^s>>>8;i[N>>0]=(a[N>>0]|0)^s;s=o[n+100>>2]|0;u=(a[g>>0]|0)^s>>>24;e=(a[y>>0]|0)^s>>>16;i[A>>0]=(a[A>>0]|0)^s>>>8;i[T>>0]=(a[T>>0]|0)^s;s=o[n+104>>2]|0;c=(a[M>>0]|0)^s>>>24;k=(a[E>>0]|0)^s>>>16;p=(a[x>>0]|0)^s>>>8;i[O>>0]=(a[O>>0]|0)^s;s=o[n+108>>2]|0;l=(a[R>>0]|0)^s>>>24;d=(a[C>>0]|0)^s>>>16;h=(a[I>>0]|0)^s>>>8;s=(a[L>>0]|0)^s;i[U>>0]=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;i[g>>0]=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[M>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;i[R>>0]=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;l=a[S>>0]|0;l=i[(l&15)+(33491+(l>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;c=a[P>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;u=a[A>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;b=a[N>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;_=a[T>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;m=a[O>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;s=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;i[S>>0]=i[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0;i[y>>0]=k;i[E>>0]=d;i[C>>0]=l;i[P>>0]=p;i[x>>0]=c;i[A>>0]=h;i[I>>0]=u;i[N>>0]=s;i[L>>0]=m;i[O>>0]=_;i[T>>0]=b;Qt(U);b=o[n+112>>2]|0;_=(a[U>>0]|0)^b>>>24;i[S>>0]=(a[S>>0]|0)^b>>>16;i[P>>0]=(a[P>>0]|0)^b>>>8;i[N>>0]=(a[N>>0]|0)^b;b=o[n+116>>2]|0;m=(a[g>>0]|0)^b>>>24;s=(a[y>>0]|0)^b>>>16;i[A>>0]=(a[A>>0]|0)^b>>>8;i[T>>0]=(a[T>>0]|0)^b;b=o[n+120>>2]|0;u=(a[M>>0]|0)^b>>>24;h=(a[E>>0]|0)^b>>>16;c=(a[x>>0]|0)^b>>>8;i[O>>0]=(a[O>>0]|0)^b;b=o[n+124>>2]|0;p=(a[R>>0]|0)^b>>>24;l=(a[C>>0]|0)^b>>>16;d=(a[I>>0]|0)^b>>>8;b=(a[L>>0]|0)^b;i[U>>0]=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;i[g>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[M>>0]=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[R>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;p=a[S>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;h=i[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=a[P>>0]|0;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;m=a[A>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;_=a[N>>0]|0;_=i[(_&15)+(33491+(_>>>4<<4))>>0]|0;k=a[T>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;e=a[O>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;b=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[S>>0]=i[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;i[y>>0]=h;i[E>>0]=l;i[C>>0]=p;i[P>>0]=c;i[x>>0]=u;i[A>>0]=d;i[I>>0]=m;i[N>>0]=b;i[L>>0]=e;i[O>>0]=k;i[T>>0]=_;Qt(U);_=o[n+128>>2]|0;k=(a[U>>0]|0)^_>>>24;i[S>>0]=(a[S>>0]|0)^_>>>16;i[P>>0]=(a[P>>0]|0)^_>>>8;i[N>>0]=(a[N>>0]|0)^_;_=o[n+132>>2]|0;e=(a[g>>0]|0)^_>>>24;b=(a[y>>0]|0)^_>>>16;i[A>>0]=(a[A>>0]|0)^_>>>8;i[T>>0]=(a[T>>0]|0)^_;_=o[n+136>>2]|0;m=(a[M>>0]|0)^_>>>24;d=(a[E>>0]|0)^_>>>16;u=(a[x>>0]|0)^_>>>8;i[O>>0]=(a[O>>0]|0)^_;_=o[n+140>>2]|0;c=(a[R>>0]|0)^_>>>24;p=(a[C>>0]|0)^_>>>16;l=(a[I>>0]|0)^_>>>8;_=(a[L>>0]|0)^_;i[U>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[g>>0]=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[R>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;c=a[S>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;m=a[P>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;e=a[A>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;k=a[N>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;h=a[T>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;s=a[O>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;i[S>>0]=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[y>>0]=d;i[E>>0]=p;i[C>>0]=c;i[P>>0]=u;i[x>>0]=m;i[A>>0]=l;i[I>>0]=e;i[N>>0]=_;i[L>>0]=s;i[O>>0]=h;i[T>>0]=k;Qt(U);k=o[n+144>>2]|0;h=(a[U>>0]|0)^k>>>24;i[S>>0]=(a[S>>0]|0)^k>>>16;i[P>>0]=(a[P>>0]|0)^k>>>8;i[N>>0]=(a[N>>0]|0)^k;k=o[n+148>>2]|0;s=(a[g>>0]|0)^k>>>24;_=(a[y>>0]|0)^k>>>16;i[A>>0]=(a[A>>0]|0)^k>>>8;i[T>>0]=(a[T>>0]|0)^k;k=o[n+152>>2]|0;e=(a[M>>0]|0)^k>>>24;l=(a[E>>0]|0)^k>>>16;m=(a[x>>0]|0)^k>>>8;i[O>>0]=(a[O>>0]|0)^k;k=o[n+156>>2]|0;u=(a[R>>0]|0)^k>>>24;c=(a[C>>0]|0)^k>>>16;p=(a[I>>0]|0)^k>>>8;k=(a[L>>0]|0)^k;i[U>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[g>>0]=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=e;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[R>>0]=u;s=a[S>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;h=a[P>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;d=a[A>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;b=a[N>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;w=a[T>>0]|0;w=i[(w&15)+(33491+(w>>>4<<4))>>0]|0;v=a[O>>0]|0;v=i[(v&15)+(33491+(v>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;i[S>>0]=_;i[y>>0]=l;i[E>>0]=c;i[C>>0]=s;i[P>>0]=m;i[x>>0]=h;i[A>>0]=p;i[I>>0]=d;i[N>>0]=k;i[L>>0]=v;i[O>>0]=w;i[T>>0]=b;if((t|0)==128){q=o[n+160>>2]|0;H=((a[U>>0]|0)^q>>>24)&255;i[U>>0]=H;_=(_&255^q>>>16)&255;i[S>>0]=_;S=(m&255^q>>>8)&255;i[P>>0]=S;m=(k&255^q)&255;i[N>>0]=m;q=o[n+164>>2]|0;k=((a[g>>0]|0)^q>>>24)&255;i[g>>0]=k;g=(l&255^q>>>16)&255;i[y>>0]=g;y=(p&255^q>>>8)&255;i[A>>0]=y;A=(b&255^q)&255;i[T>>0]=A;q=o[n+168>>2]|0;T=(e&255^q>>>24)&255;i[M>>0]=T;P=(c&255^q>>>16)&255;i[E>>0]=P;N=(h&255^q>>>8)&255;i[x>>0]=N;M=(w&255^q)&255;i[O>>0]=M;q=o[n+172>>2]|0;t=(u&255^q>>>24)&255;i[R>>0]=t;U=(s&255^q>>>16)&255;i[C>>0]=U;z=(d&255^q>>>8)&255;i[I>>0]=z;q=(v&255^q)&255;i[L>>0]=q;E=_;x=m;O=k;R=g;C=y;I=A;L=T;n=M;i[r>>0]=H;H=r+1|0;i[H>>0]=E;H=r+2|0;i[H>>0]=S;H=r+3|0;i[H>>0]=x;H=r+4|0;i[H>>0]=O;H=r+5|0;i[H>>0]=R;H=r+6|0;i[H>>0]=C;H=r+7|0;i[H>>0]=I;H=r+8|0;i[H>>0]=L;H=r+9|0;i[H>>0]=P;H=r+10|0;i[H>>0]=N;H=r+11|0;i[H>>0]=n;H=r+12|0;i[H>>0]=t;H=r+13|0;i[H>>0]=U;H=r+14|0;i[H>>0]=z;H=r+15|0;i[H>>0]=q;f=F;return}Qt(U);_=o[n+160>>2]|0;k=(a[U>>0]|0)^_>>>24;i[S>>0]=(a[S>>0]|0)^_>>>16;i[P>>0]=(a[P>>0]|0)^_>>>8;i[N>>0]=(a[N>>0]|0)^_;_=o[n+164>>2]|0;e=(a[g>>0]|0)^_>>>24;b=(a[y>>0]|0)^_>>>16;i[A>>0]=(a[A>>0]|0)^_>>>8;i[T>>0]=(a[T>>0]|0)^_;_=o[n+168>>2]|0;m=(a[M>>0]|0)^_>>>24;d=(a[E>>0]|0)^_>>>16;u=(a[x>>0]|0)^_>>>8;i[O>>0]=(a[O>>0]|0)^_;_=o[n+172>>2]|0;c=(a[R>>0]|0)^_>>>24;p=(a[C>>0]|0)^_>>>16;l=(a[I>>0]|0)^_>>>8;_=(a[L>>0]|0)^_;i[U>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[g>>0]=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[R>>0]=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;c=a[S>>0]|0;c=i[(c&15)+(33491+(c>>>4<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;m=a[P>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;e=a[A>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;u=i[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;k=a[N>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;h=a[T>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;s=a[O>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;i[S>>0]=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[y>>0]=d;i[E>>0]=p;i[C>>0]=c;i[P>>0]=u;i[x>>0]=m;i[A>>0]=l;i[I>>0]=e;i[N>>0]=_;i[L>>0]=s;i[O>>0]=h;i[T>>0]=k;Qt(U);k=o[n+176>>2]|0;h=(a[U>>0]|0)^k>>>24;i[S>>0]=(a[S>>0]|0)^k>>>16;i[P>>0]=(a[P>>0]|0)^k>>>8;i[N>>0]=(a[N>>0]|0)^k;k=o[n+180>>2]|0;s=(a[g>>0]|0)^k>>>24;_=(a[y>>0]|0)^k>>>16;i[A>>0]=(a[A>>0]|0)^k>>>8;i[T>>0]=(a[T>>0]|0)^k;k=o[n+184>>2]|0;e=(a[M>>0]|0)^k>>>24;l=(a[E>>0]|0)^k>>>16;m=(a[x>>0]|0)^k>>>8;i[O>>0]=(a[O>>0]|0)^k;k=o[n+188>>2]|0;u=(a[R>>0]|0)^k>>>24;c=(a[C>>0]|0)^k>>>16;p=(a[I>>0]|0)^k>>>8;k=(a[L>>0]|0)^k;i[U>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[g>>0]=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;e=i[(e&15)+(33491+(e>>>4<<4))>>0]|0;i[M>>0]=e;u=i[(u&15)+(33491+(u>>>4<<4))>>0]|0;i[R>>0]=u;s=a[S>>0]|0;s=i[(s&15)+(33491+(s>>>4<<4))>>0]|0;_=i[(_&15)+(33491+((_>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;h=a[P>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;d=a[A>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;m=i[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;b=a[N>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;w=a[T>>0]|0;w=i[(w&15)+(33491+(w>>>4<<4))>>0]|0;v=a[O>>0]|0;v=i[(v&15)+(33491+(v>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;i[S>>0]=_;i[y>>0]=l;i[E>>0]=c;i[C>>0]=s;i[P>>0]=m;i[x>>0]=h;i[A>>0]=p;i[I>>0]=d;i[N>>0]=k;i[L>>0]=v;i[O>>0]=w;i[T>>0]=b;if((t|0)==192){q=o[n+192>>2]|0;H=((a[U>>0]|0)^q>>>24)&255;i[U>>0]=H;_=(_&255^q>>>16)&255;i[S>>0]=_;S=(m&255^q>>>8)&255;i[P>>0]=S;m=(k&255^q)&255;i[N>>0]=m;q=o[n+196>>2]|0;k=((a[g>>0]|0)^q>>>24)&255;i[g>>0]=k;g=(l&255^q>>>16)&255;i[y>>0]=g;y=(p&255^q>>>8)&255;i[A>>0]=y;A=(b&255^q)&255;i[T>>0]=A;q=o[n+200>>2]|0;T=(e&255^q>>>24)&255;i[M>>0]=T;P=(c&255^q>>>16)&255;i[E>>0]=P;N=(h&255^q>>>8)&255;i[x>>0]=N;M=(w&255^q)&255;i[O>>0]=M;q=o[n+204>>2]|0;t=(u&255^q>>>24)&255;i[R>>0]=t;U=(s&255^q>>>16)&255;i[C>>0]=U;z=(d&255^q>>>8)&255;i[I>>0]=z;q=(v&255^q)&255;i[L>>0]=q;E=_;x=m;O=k;R=g;C=y;I=A;L=T;n=M;i[r>>0]=H;H=r+1|0;i[H>>0]=E;H=r+2|0;i[H>>0]=S;H=r+3|0;i[H>>0]=x;H=r+4|0;i[H>>0]=O;H=r+5|0;i[H>>0]=R;H=r+6|0;i[H>>0]=C;H=r+7|0;i[H>>0]=I;H=r+8|0;i[H>>0]=L;H=r+9|0;i[H>>0]=P;H=r+10|0;i[H>>0]=N;H=r+11|0;i[H>>0]=n;H=r+12|0;i[H>>0]=t;H=r+13|0;i[H>>0]=U;H=r+14|0;i[H>>0]=z;H=r+15|0;i[H>>0]=q;f=F;return}else{Qt(U);w=o[n+192>>2]|0;q=(a[U>>0]|0)^w>>>24;i[S>>0]=(a[S>>0]|0)^w>>>16;i[P>>0]=(a[P>>0]|0)^w>>>8;i[N>>0]=(a[N>>0]|0)^w;w=o[n+196>>2]|0;m=(a[g>>0]|0)^w>>>24;b=(a[y>>0]|0)^w>>>16;i[A>>0]=(a[A>>0]|0)^w>>>8;i[T>>0]=(a[T>>0]|0)^w;w=o[n+200>>2]|0;k=(a[M>>0]|0)^w>>>24;t=(a[E>>0]|0)^w>>>16;p=(a[x>>0]|0)^w>>>8;i[O>>0]=(a[O>>0]|0)^w;w=o[n+204>>2]|0;d=(a[R>>0]|0)^w>>>24;c=(a[C>>0]|0)^w>>>16;l=(a[I>>0]|0)^w>>>8;w=(a[L>>0]|0)^w;i[U>>0]=i[(q&15)+(33491+(q>>>4<<4))>>0]|0;i[g>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[M>>0]=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;i[R>>0]=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;d=a[S>>0]|0;d=i[(d&15)+(33491+(d>>>4<<4))>>0]|0;t=i[(t&15)+(33491+((t>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;k=a[P>>0]|0;k=i[(k&15)+(33491+(k>>>4<<4))>>0]|0;m=a[A>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;p=i[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;q=a[N>>0]|0;q=i[(q&15)+(33491+(q>>>4<<4))>>0]|0;h=a[T>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;z=a[O>>0]|0;z=i[(z&15)+(33491+(z>>>4<<4))>>0]|0;w=i[(w&15)+(33491+((w>>>4&15)<<4))>>0]|0;i[S>>0]=i[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;i[y>>0]=t;i[E>>0]=c;i[C>>0]=d;i[P>>0]=p;i[x>>0]=k;i[A>>0]=l;i[I>>0]=m;i[N>>0]=w;i[L>>0]=z;i[O>>0]=h;i[T>>0]=q;Qt(U);q=o[n+208>>2]|0;h=(a[U>>0]|0)^q>>>24;i[S>>0]=(a[S>>0]|0)^q>>>16;i[P>>0]=(a[P>>0]|0)^q>>>8;i[N>>0]=(a[N>>0]|0)^q;q=o[n+212>>2]|0;z=(a[g>>0]|0)^q>>>24;w=(a[y>>0]|0)^q>>>16;i[A>>0]=(a[A>>0]|0)^q>>>8;i[T>>0]=(a[T>>0]|0)^q;q=o[n+216>>2]|0;m=(a[M>>0]|0)^q>>>24;l=(a[E>>0]|0)^q>>>16;k=(a[x>>0]|0)^q>>>8;i[O>>0]=(a[O>>0]|0)^q;q=o[n+220>>2]|0;p=(a[R>>0]|0)^q>>>24;d=(a[C>>0]|0)^q>>>16;c=(a[I>>0]|0)^q>>>8;q=(a[L>>0]|0)^q;i[U>>0]=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;i[g>>0]=i[(z&15)+(33491+(z>>>4<<4))>>0]|0;i[M>>0]=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;i[R>>0]=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;p=a[S>>0]|0;p=i[(p&15)+(33491+(p>>>4<<4))>>0]|0;w=i[(w&15)+(33491+((w>>>4&15)<<4))>>0]|0;l=i[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;d=i[(d&15)+(33491+((d>>>4&15)<<4))>>0]|0;m=a[P>>0]|0;m=i[(m&15)+(33491+(m>>>4<<4))>>0]|0;z=a[A>>0]|0;z=i[(z&15)+(33491+(z>>>4<<4))>>0]|0;k=i[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;c=i[(c&15)+(33491+((c>>>4&15)<<4))>>0]|0;h=a[N>>0]|0;h=i[(h&15)+(33491+(h>>>4<<4))>>0]|0;t=a[T>>0]|0;t=i[(t&15)+(33491+(t>>>4<<4))>>0]|0;b=a[O>>0]|0;b=i[(b&15)+(33491+(b>>>4<<4))>>0]|0;q=i[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;v=o[n+224>>2]|0;H=((a[U>>0]|0)^v>>>24)&255;i[U>>0]=H;w=(w&255^v>>>16)&255;i[S>>0]=w;S=(k&255^v>>>8)&255;i[P>>0]=S;v=(q&255^v)&255;i[N>>0]=v;q=o[n+228>>2]|0;k=((a[g>>0]|0)^q>>>24)&255;i[g>>0]=k;g=(l&255^q>>>16)&255;i[y>>0]=g;y=(c&255^q>>>8)&255;i[A>>0]=y;A=(h&255^q)&255;i[T>>0]=A;q=o[n+232>>2]|0;T=((a[M>>0]|0)^q>>>24)&255;i[M>>0]=T;P=(d&255^q>>>16)&255;i[E>>0]=P;N=(m&255^q>>>8)&255;i[x>>0]=N;M=(t&255^q)&255;i[O>>0]=M;q=o[n+236>>2]|0;t=((a[R>>0]|0)^q>>>24)&255;i[R>>0]=t;U=(p&255^q>>>16)&255;i[C>>0]=U;z=(z&255^q>>>8)&255;i[I>>0]=z;q=(b&255^q)&255;i[L>>0]=q;E=w;x=v;O=k;R=g;C=y;I=A;L=T;n=M;i[r>>0]=H;H=r+1|0;i[H>>0]=E;H=r+2|0;i[H>>0]=S;H=r+3|0;i[H>>0]=x;H=r+4|0;i[H>>0]=O;H=r+5|0;i[H>>0]=R;H=r+6|0;i[H>>0]=C;H=r+7|0;i[H>>0]=I;H=r+8|0;i[H>>0]=L;H=r+9|0;i[H>>0]=P;H=r+10|0;i[H>>0]=N;H=r+11|0;i[H>>0]=n;H=r+12|0;i[H>>0]=t;H=r+13|0;i[H>>0]=U;H=r+14|0;i[H>>0]=z;H=r+15|0;i[H>>0]=q;f=F;return}}function Qt(e){e=e|0;var r=0,n=0,t=0,o=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0;h=i[e>>0]|0;f=e+4|0;t=i[f>>0]|0;o=e+8|0;a=i[o>>0]|0;u=e+12|0;n=i[u>>0]|0;_=h&255;s=t&255;r=a&255;c=n&255;i[e>>0]=n^a^i[33747+(_*6|0)>>0]^i[33747+(s*6|0)+1>>0];i[f>>0]=i[33747+(s*6|0)>>0]^h^n^i[33747+(r*6|0)+1>>0];i[o>>0]=i[33747+(c*6|0)+1>>0]^(i[33747+(r*6|0)>>0]^(t^h));i[u>>0]=a^t^i[33747+(_*6|0)+1>>0]^i[33747+(c*6|0)>>0];u=e+1|0;c=i[u>>0]|0;_=e+5|0;t=i[_>>0]|0;a=e+9|0;o=i[a>>0]|0;h=e+13|0;r=i[h>>0]|0;f=c&255;n=t&255;s=o&255;l=r&255;i[u>>0]=r^o^i[33747+(f*6|0)>>0]^i[33747+(n*6|0)+1>>0];i[_>>0]=i[33747+(n*6|0)>>0]^c^r^i[33747+(s*6|0)+1>>0];i[a>>0]=i[33747+(l*6|0)+1>>0]^(i[33747+(s*6|0)>>0]^(t^c));i[h>>0]=o^t^i[33747+(f*6|0)+1>>0]^i[33747+(l*6|0)>>0];h=e+2|0;l=i[h>>0]|0;f=e+6|0;t=i[f>>0]|0;o=e+10|0;a=i[o>>0]|0;c=e+14|0;s=i[c>>0]|0;_=l&255;r=t&255;n=a&255;u=s&255;i[h>>0]=s^a^i[33747+(_*6|0)>>0]^i[33747+(r*6|0)+1>>0];i[f>>0]=i[33747+(r*6|0)>>0]^l^s^i[33747+(n*6|0)+1>>0];i[o>>0]=i[33747+(u*6|0)+1>>0]^(i[33747+(n*6|0)>>0]^(t^l));i[c>>0]=a^t^i[33747+(_*6|0)+1>>0]^i[33747+(u*6|0)>>0];c=e+3|0;u=i[c>>0]|0;_=e+7|0;t=i[_>>0]|0;a=e+11|0;o=i[a>>0]|0;e=e+15|0;l=i[e>>0]|0;n=u&255;f=t&255;s=o&255;r=l&255;i[c>>0]=l^o^i[33747+(n*6|0)>>0]^i[33747+(f*6|0)+1>>0];i[_>>0]=i[33747+(f*6|0)>>0]^u^l^i[33747+(s*6|0)+1>>0];i[a>>0]=i[33747+(r*6|0)+1>>0]^(i[33747+(s*6|0)>>0]^(t^u));i[e>>0]=o^t^i[33747+(n*6|0)+1>>0]^i[33747+(r*6|0)>>0];return}function Zt(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,u=0;switch(n|0){case 128:{t=4;u=44;break}case 192:{t=6;u=52;break}case 256:{t=8;u=60;break}default:return}n=0;do{i=n<<2;o[r+(n<<2)>>2]=(a[e+(i|1)>>0]|0)<<16|(a[e+i>>0]|0)<<24|(a[e+(i|2)>>0]|0)<<8|(a[e+(i|3)>>0]|0);n=n+1|0}while((n|0)<(t|0));if(t>>>0>6)i=t;else{i=t;do{e=i+-1|0;n=o[r+(e<<2)>>2]|0;if(!((i|0)%(t|0)|0))n=((a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0)<<8|(a[(n>>>24&15)+(33491+(n>>>28<<4))>>0]|0)|(a[(n>>>8&15)+(33491+((n>>>12&15)<<4))>>0]|0)<<16|(a[(n>>>16&15)+(33491+((n>>>20&15)<<4))>>0]|0)<<24)^o[32840+(((e|0)/(t|0)|0)<<2)>>2];o[r+(i<<2)>>2]=o[r+(i-t<<2)>>2]^n;i=i+1|0}while((i|0)<(u|0));return}do{e=i+-1|0;n=o[r+(e<<2)>>2]|0;switch((i|0)%(t|0)|0|0){case 0:{n=((a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0)<<8|(a[(n>>>24&15)+(33491+(n>>>28<<4))>>0]|0)|(a[(n>>>8&15)+(33491+((n>>>12&15)<<4))>>0]|0)<<16|(a[(n>>>16&15)+(33491+((n>>>20&15)<<4))>>0]|0)<<24)^o[32840+(((e|0)/(t|0)|0)<<2)>>2];break}case 4:{n=(a[(n>>>8&15)+(33491+((n>>>12&15)<<4))>>0]|0)<<8|(a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0)|(a[(n>>>16&15)+(33491+((n>>>20&15)<<4))>>0]|0)<<16|(a[(n>>>24&15)+(33491+(n>>>28<<4))>>0]|0)<<24;break}default:{}}o[r+(i<<2)>>2]=o[r+(i-t<<2)>>2]^n;i=i+1|0}while((i|0)<(u|0));return}function $t(e){e=e|0;var r=0,n=0,t=0,o=0,u=0,s=0,_=0,l=0;_=e+4|0;t=e+8|0;n=e+12|0;r=a[e>>0]|0;u=a[_>>0]|0;l=a[t>>0]|0;o=a[n>>0]|0;i[e>>0]=i[33747+(o*6|0)+2>>0]^(i[33747+(l*6|0)+4>>0]^(i[33747+(u*6|0)+3>>0]^i[33747+(r*6|0)+5>>0]));i[_>>0]=i[33747+(o*6|0)+4>>0]^(i[33747+(l*6|0)+3>>0]^(i[33747+(u*6|0)+5>>0]^i[33747+(r*6|0)+2>>0]));i[t>>0]=i[33747+(o*6|0)+3>>0]^(i[33747+(l*6|0)+5>>0]^(i[33747+(u*6|0)+2>>0]^i[33747+(r*6|0)+4>>0]));i[n>>0]=i[33747+(o*6|0)+5>>0]^(i[33747+(l*6|0)+2>>0]^(i[33747+(u*6|0)+4>>0]^i[33747+(r*6|0)+3>>0]));n=e+1|0;r=e+5|0;u=e+9|0;l=e+13|0;o=a[n>>0]|0;t=a[r>>0]|0;_=a[u>>0]|0;s=a[l>>0]|0;i[n>>0]=i[33747+(s*6|0)+2>>0]^(i[33747+(_*6|0)+4>>0]^(i[33747+(t*6|0)+3>>0]^i[33747+(o*6|0)+5>>0]));i[r>>0]=i[33747+(s*6|0)+4>>0]^(i[33747+(_*6|0)+3>>0]^(i[33747+(t*6|0)+5>>0]^i[33747+(o*6|0)+2>>0]));i[u>>0]=i[33747+(s*6|0)+3>>0]^(i[33747+(_*6|0)+5>>0]^(i[33747+(t*6|0)+2>>0]^i[33747+(o*6|0)+4>>0]));i[l>>0]=i[33747+(s*6|0)+5>>0]^(i[33747+(_*6|0)+2>>0]^(i[33747+(t*6|0)+4>>0]^i[33747+(o*6|0)+3>>0]));l=e+2|0;o=e+6|0;t=e+10|0;_=e+14|0;s=a[l>>0]|0;u=a[o>>0]|0;r=a[t>>0]|0;n=a[_>>0]|0;i[l>>0]=i[33747+(n*6|0)+2>>0]^(i[33747+(r*6|0)+4>>0]^(i[33747+(u*6|0)+3>>0]^i[33747+(s*6|0)+5>>0]));i[o>>0]=i[33747+(n*6|0)+4>>0]^(i[33747+(r*6|0)+3>>0]^(i[33747+(u*6|0)+5>>0]^i[33747+(s*6|0)+2>>0]));i[t>>0]=i[33747+(n*6|0)+3>>0]^(i[33747+(r*6|0)+5>>0]^(i[33747+(u*6|0)+2>>0]^i[33747+(s*6|0)+4>>0]));i[_>>0]=i[33747+(n*6|0)+5>>0]^(i[33747+(r*6|0)+2>>0]^(i[33747+(u*6|0)+4>>0]^i[33747+(s*6|0)+3>>0]));_=e+3|0;s=e+7|0;u=e+11|0;e=e+15|0;r=a[_>>0]|0;n=a[s>>0]|0;t=a[u>>0]|0;o=a[e>>0]|0;i[_>>0]=i[33747+(o*6|0)+2>>0]^(i[33747+(t*6|0)+4>>0]^(i[33747+(n*6|0)+3>>0]^i[33747+(r*6|0)+5>>0]));i[s>>0]=i[33747+(o*6|0)+4>>0]^(i[33747+(t*6|0)+3>>0]^(i[33747+(n*6|0)+5>>0]^i[33747+(r*6|0)+2>>0]));i[u>>0]=i[33747+(o*6|0)+3>>0]^(i[33747+(t*6|0)+5>>0]^(i[33747+(n*6|0)+2>>0]^i[33747+(r*6|0)+4>>0]));i[e>>0]=i[33747+(o*6|0)+5>>0]^(i[33747+(t*6|0)+2>>0]^(i[33747+(n*6|0)+4>>0]^i[33747+(r*6|0)+3>>0]));return}function eo(e,r,n,t){e=e|0;r=r|0;n=n|0;t=t|0;var u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0;q=f;f=f+16|0;z=q;u=i[e>>0]|0;i[z>>0]=u;c=i[e+1>>0]|0;R=z+4|0;i[R>>0]=c;g=i[e+2>>0]|0;U=z+8|0;i[U>>0]=g;y=i[e+3>>0]|0;F=z+12|0;i[F>>0]=y;s=i[e+4>>0]|0;T=z+1|0;i[T>>0]=s;_=i[e+5>>0]|0;M=z+5|0;i[M>>0]=_;l=i[e+6>>0]|0;E=z+9|0;i[E>>0]=l;h=i[e+7>>0]|0;S=z+13|0;i[S>>0]=h;d=i[e+8>>0]|0;x=z+2|0;i[x>>0]=d;m=i[e+9>>0]|0;O=z+6|0;i[O>>0]=m;p=i[e+10>>0]|0;C=z+10|0;i[C>>0]=p;b=i[e+11>>0]|0;I=z+14|0;i[I>>0]=b;w=i[e+12>>0]|0;L=z+3|0;i[L>>0]=w;v=i[e+13>>0]|0;P=z+7|0;i[P>>0]=v;k=i[e+14>>0]|0;N=z+11|0;i[N>>0]=k;e=i[e+15>>0]|0;A=z+15|0;i[A>>0]=e;if((t|0)>128){if((t|0)>192){V=o[n+224>>2]|0;B=u&255^V>>>24;j=c&255^V>>>16;t=g&255^V>>>8;g=y&255^V;c=o[n+228>>2]|0;V=s&255^c>>>24;H=_&255^c>>>16;y=l&255^c>>>8;_=h&255^c;c=o[n+232>>2]|0;D=d&255^c>>>24;h=m&255^c>>>16;s=p&255^c>>>8;c=b&255^c;b=o[n+236>>2]|0;m=w&255^b>>>24;d=v&255^b>>>16;u=k&255^b>>>8;b=e&255^b;l=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;i[T>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;i[x>>0]=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;i[L>>0]=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;d=i[(d&15)+(35283+((d>>>4&15)<<4))>>0]|0;m=i[(j&15)+(35283+((j>>>4&15)<<4))>>0]|0;i[O>>0]=i[(H&15)+(35283+((H>>>4&15)<<4))>>0]|0;i[P>>0]=i[(h&15)+(35283+((h>>>4&15)<<4))>>0]|0;s=i[(s&15)+(35283+((s>>>4&15)<<4))>>0]|0;u=i[(u&15)+(35283+((u>>>4&15)<<4))>>0]|0;h=i[(t&15)+(35283+((t>>>4&15)<<4))>>0]|0;i[N>>0]=i[(y&15)+(35283+((y>>>4&15)<<4))>>0]|0;_=i[(_&15)+(35283+((_>>>4&15)<<4))>>0]|0;c=i[(c&15)+(35283+((c>>>4&15)<<4))>>0]|0;b=i[(b&15)+(35283+((b>>>4&15)<<4))>>0]|0;e=i[(g&15)+(35283+((g>>>4&15)<<4))>>0]|0;p=o[n+208>>2]|0;i[z>>0]=l&255^p>>>24;i[R>>0]=d&255^p>>>16;i[U>>0]=s&255^p>>>8;i[F>>0]=_&255^p;p=o[n+212>>2]|0;i[T>>0]=(a[T>>0]|0)^p>>>24;i[M>>0]=m&255^p>>>16;i[E>>0]=u&255^p>>>8;i[S>>0]=c&255^p;p=o[n+216>>2]|0;i[x>>0]=(a[x>>0]|0)^p>>>24;i[O>>0]=(a[O>>0]|0)^p>>>16;i[C>>0]=h&255^p>>>8;i[I>>0]=b&255^p;p=o[n+220>>2]|0;i[L>>0]=(a[L>>0]|0)^p>>>24;i[P>>0]=(a[P>>0]|0)^p>>>16;i[N>>0]=(a[N>>0]|0)^p>>>8;i[A>>0]=e&255^p;$t(z);p=i[P>>0]|0;e=i[O>>0]|0;b=i[M>>0]|0;h=i[R>>0]|0;c=i[N>>0]|0;u=i[E>>0]|0;m=i[C>>0]|0;_=i[U>>0]|0;s=i[A>>0]|0;i[A>>0]=i[F>>0]|0;d=i[S>>0]|0;l=i[I>>0]|0;w=a[z>>0]|0;i[z>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[T>>0]|0;i[T>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[x>>0]|0;i[x>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[L>>0]|0;i[L>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;p=p&255;p=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;h=h&255;h=i[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=b&255;i[O>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;e=e&255;i[P>>0]=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;m=m&255;m=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;c=c&255;c=i[(c&15)+(35283+(c>>>4<<4))>>0]|0;_=_&255;_=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;u=u&255;i[N>>0]=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;d=d&255;d=i[(d&15)+(35283+(d>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;s=s&255;s=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;u=a[A>>0]|0;u=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;e=o[n+192>>2]|0;i[z>>0]=(a[z>>0]|0)^e>>>24;i[R>>0]=p&255^e>>>16;i[U>>0]=m&255^e>>>8;i[F>>0]=d&255^e;e=o[n+196>>2]|0;i[T>>0]=(a[T>>0]|0)^e>>>24;i[M>>0]=h&255^e>>>16;i[E>>0]=c&255^e>>>8;i[S>>0]=l&255^e;e=o[n+200>>2]|0;i[x>>0]=(a[x>>0]|0)^e>>>24;i[O>>0]=(a[O>>0]|0)^e>>>16;i[C>>0]=_&255^e>>>8;i[I>>0]=s&255^e;e=o[n+204>>2]|0;i[L>>0]=(a[L>>0]|0)^e>>>24;i[P>>0]=(a[P>>0]|0)^e>>>16;i[N>>0]=(a[N>>0]|0)^e>>>8;i[A>>0]=u&255^e;$t(z);e=i[z>>0]|0;u=i[T>>0]|0;s=i[x>>0]|0;_=i[L>>0]|0;l=i[P>>0]|0;c=i[R>>0]|0;h=i[M>>0]|0;d=i[O>>0]|0;m=i[C>>0]|0;p=i[N>>0]|0;b=i[U>>0]|0;w=i[E>>0]|0;v=i[S>>0]|0;k=i[I>>0]|0;g=i[A>>0]|0;y=i[F>>0]|0}else{V=o[n+192>>2]|0;t=(u&255^V>>>24)&255;i[z>>0]=t;c=(c&255^V>>>16)&255;i[R>>0]=c;j=(g&255^V>>>8)&255;i[U>>0]=j;y=(y&255^V)&255;i[F>>0]=y;V=o[n+196>>2]|0;u=(s&255^V>>>24)&255;i[T>>0]=u;H=(_&255^V>>>16)&255;i[M>>0]=H;D=(l&255^V>>>8)&255;i[E>>0]=D;V=(h&255^V)&255;i[S>>0]=V;B=o[n+200>>2]|0;s=(d&255^B>>>24)&255;i[x>>0]=s;d=(m&255^B>>>16)&255;i[O>>0]=d;m=(p&255^B>>>8)&255;i[C>>0]=m;B=(b&255^B)&255;i[I>>0]=B;g=o[n+204>>2]|0;_=(w&255^g>>>24)&255;i[L>>0]=_;l=(v&255^g>>>16)&255;i[P>>0]=l;p=(k&255^g>>>8)&255;i[N>>0]=p;g=(e&255^g)&255;i[A>>0]=g;e=t;h=H;b=j;w=D;v=V;k=B}B=e&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;u=u&255;i[T>>0]=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;s=s&255;i[x>>0]=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;_=_&255;i[L>>0]=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;_=c&255;_=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;s=h&255;i[O>>0]=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d&255;i[P>>0]=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=m&255;s=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;u=p&255;u=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;h=b&255;h=i[(h&15)+(35283+(h>>>4<<4))>>0]|0;m=w&255;i[N>>0]=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;m=v&255;m=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;c=k&255;c=i[(c&15)+(35283+(c>>>4<<4))>>0]|0;b=g&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;e=y&255;e=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;p=o[n+176>>2]|0;i[z>>0]=B&255^p>>>24;i[R>>0]=l&255^p>>>16;i[U>>0]=s&255^p>>>8;i[F>>0]=m&255^p;p=o[n+180>>2]|0;i[T>>0]=(a[T>>0]|0)^p>>>24;i[M>>0]=_&255^p>>>16;i[E>>0]=u&255^p>>>8;i[S>>0]=c&255^p;p=o[n+184>>2]|0;i[x>>0]=(a[x>>0]|0)^p>>>24;i[O>>0]=(a[O>>0]|0)^p>>>16;i[C>>0]=h&255^p>>>8;i[I>>0]=b&255^p;p=o[n+188>>2]|0;i[L>>0]=(a[L>>0]|0)^p>>>24;i[P>>0]=(a[P>>0]|0)^p>>>16;i[N>>0]=(a[N>>0]|0)^p>>>8;i[A>>0]=e&255^p;$t(z);p=i[P>>0]|0;e=i[O>>0]|0;b=i[M>>0]|0;h=i[R>>0]|0;c=i[N>>0]|0;u=i[E>>0]|0;m=i[C>>0]|0;_=i[U>>0]|0;s=i[A>>0]|0;i[A>>0]=i[F>>0]|0;d=i[S>>0]|0;l=i[I>>0]|0;w=a[z>>0]|0;i[z>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[T>>0]|0;i[T>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[x>>0]|0;i[x>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=a[L>>0]|0;i[L>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;p=p&255;p=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;h=h&255;h=i[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=b&255;i[O>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;e=e&255;i[P>>0]=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;m=m&255;m=i[(m&15)+(35283+(m>>>4<<4))>>0]|0;c=c&255;c=i[(c&15)+(35283+(c>>>4<<4))>>0]|0;_=_&255;_=i[(_&15)+(35283+(_>>>4<<4))>>0]|0;u=u&255;i[N>>0]=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;d=d&255;d=i[(d&15)+(35283+(d>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;s=s&255;s=i[(s&15)+(35283+(s>>>4<<4))>>0]|0;u=a[A>>0]|0;u=i[(u&15)+(35283+(u>>>4<<4))>>0]|0;e=o[n+160>>2]|0;i[z>>0]=(a[z>>0]|0)^e>>>24;i[R>>0]=p&255^e>>>16;i[U>>0]=m&255^e>>>8;i[F>>0]=d&255^e;e=o[n+164>>2]|0;i[T>>0]=(a[T>>0]|0)^e>>>24;i[M>>0]=h&255^e>>>16;i[E>>0]=c&255^e>>>8;i[S>>0]=l&255^e;e=o[n+168>>2]|0;i[x>>0]=(a[x>>0]|0)^e>>>24;i[O>>0]=(a[O>>0]|0)^e>>>16;i[C>>0]=_&255^e>>>8;i[I>>0]=s&255^e;e=o[n+172>>2]|0;i[L>>0]=(a[L>>0]|0)^e>>>24;i[P>>0]=(a[P>>0]|0)^e>>>16;i[N>>0]=(a[N>>0]|0)^e>>>8;i[A>>0]=u&255^e;$t(z);e=i[z>>0]|0;u=i[T>>0]|0;s=i[x>>0]|0;_=i[L>>0]|0;l=i[P>>0]|0;c=i[R>>0]|0;h=i[M>>0]|0;d=i[O>>0]|0;m=i[C>>0]|0;p=i[N>>0]|0;b=i[U>>0]|0;w=i[E>>0]|0;v=i[S>>0]|0;k=i[I>>0]|0;g=i[A>>0]|0;y=i[F>>0]|0}else{V=o[n+160>>2]|0;t=(u&255^V>>>24)&255;i[z>>0]=t;c=(c&255^V>>>16)&255;i[R>>0]=c;j=(g&255^V>>>8)&255;i[U>>0]=j;y=(y&255^V)&255;i[F>>0]=y;V=o[n+164>>2]|0;u=(s&255^V>>>24)&255;i[T>>0]=u;H=(_&255^V>>>16)&255;i[M>>0]=H;D=(l&255^V>>>8)&255;i[E>>0]=D;V=(h&255^V)&255;i[S>>0]=V;B=o[n+168>>2]|0;s=(d&255^B>>>24)&255;i[x>>0]=s;d=(m&255^B>>>16)&255;i[O>>0]=d;m=(p&255^B>>>8)&255;i[C>>0]=m;B=(b&255^B)&255;i[I>>0]=B;g=o[n+172>>2]|0;_=(w&255^g>>>24)&255;i[L>>0]=_;l=(v&255^g>>>16)&255;i[P>>0]=l;p=(k&255^g>>>8)&255;i[N>>0]=p;g=(e&255^g)&255;i[A>>0]=g;e=t;h=H;b=j;w=D;v=V;k=B}e=e&255;e=i[(e&15)+(35283+(e>>>4<<4))>>0]|0;H=u&255;i[T>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;H=s&255;i[x>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;H=_&255;i[L>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;l=l&255;l=i[(l&15)+(35283+(l>>>4<<4))>>0]|0;H=c&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;V=h&255;i[O>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;V=d&255;i[P>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;V=m&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;t=p&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;B=b&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;w=w&255;i[N>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;w=v&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;b=k&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;v=g&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;j=y&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;D=o[n+144>>2]|0;i[z>>0]=e&255^D>>>24;i[R>>0]=l&255^D>>>16;i[U>>0]=V&255^D>>>8;i[F>>0]=w&255^D;D=o[n+148>>2]|0;i[T>>0]=(a[T>>0]|0)^D>>>24;i[M>>0]=H&255^D>>>16;i[E>>0]=t&255^D>>>8;i[S>>0]=b&255^D;D=o[n+152>>2]|0;i[x>>0]=(a[x>>0]|0)^D>>>24;i[O>>0]=(a[O>>0]|0)^D>>>16;i[C>>0]=B&255^D>>>8;i[I>>0]=v&255^D;D=o[n+156>>2]|0;i[L>>0]=(a[L>>0]|0)^D>>>24;i[P>>0]=(a[P>>0]|0)^D>>>16;i[N>>0]=(a[N>>0]|0)^D>>>8;i[A>>0]=j&255^D;$t(z);D=i[P>>0]|0;j=i[O>>0]|0;v=i[M>>0]|0;g=i[R>>0]|0;B=i[N>>0]|0;b=i[E>>0]|0;w=i[C>>0]|0;t=i[U>>0]|0;H=i[A>>0]|0;i[A>>0]=i[F>>0]|0;V=i[S>>0]|0;y=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=v&255;i[O>>0]=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;j=j&255;i[P>>0]=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;b=b&255;i[N>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;b=a[A>>0]|0;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;j=o[n+128>>2]|0;i[z>>0]=(a[z>>0]|0)^j>>>24;i[R>>0]=D&255^j>>>16;i[U>>0]=w&255^j>>>8;i[F>>0]=V&255^j;j=o[n+132>>2]|0;i[T>>0]=(a[T>>0]|0)^j>>>24;i[M>>0]=g&255^j>>>16;i[E>>0]=B&255^j>>>8;i[S>>0]=y&255^j;j=o[n+136>>2]|0;i[x>>0]=(a[x>>0]|0)^j>>>24;i[O>>0]=(a[O>>0]|0)^j>>>16;i[C>>0]=t&255^j>>>8;i[I>>0]=H&255^j;j=o[n+140>>2]|0;i[L>>0]=(a[L>>0]|0)^j>>>24;i[P>>0]=(a[P>>0]|0)^j>>>16;i[N>>0]=(a[N>>0]|0)^j>>>8;i[A>>0]=b&255^j;$t(z);j=i[P>>0]|0;b=i[O>>0]|0;H=i[M>>0]|0;t=i[R>>0]|0;y=i[N>>0]|0;B=i[E>>0]|0;g=i[C>>0]|0;V=i[U>>0]|0;w=i[A>>0]|0;i[A>>0]=i[F>>0]|0;D=i[S>>0]|0;v=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;H=H&255;i[O>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;b=b&255;i[P>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;B=B&255;i[N>>0]=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;B=a[A>>0]|0;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;b=o[n+112>>2]|0;i[z>>0]=(a[z>>0]|0)^b>>>24;i[R>>0]=j&255^b>>>16;i[U>>0]=g&255^b>>>8;i[F>>0]=D&255^b;b=o[n+116>>2]|0;i[T>>0]=(a[T>>0]|0)^b>>>24;i[M>>0]=t&255^b>>>16;i[E>>0]=y&255^b>>>8;i[S>>0]=v&255^b;b=o[n+120>>2]|0;i[x>>0]=(a[x>>0]|0)^b>>>24;i[O>>0]=(a[O>>0]|0)^b>>>16;i[C>>0]=V&255^b>>>8;i[I>>0]=w&255^b;b=o[n+124>>2]|0;i[L>>0]=(a[L>>0]|0)^b>>>24;i[P>>0]=(a[P>>0]|0)^b>>>16;i[N>>0]=(a[N>>0]|0)^b>>>8;i[A>>0]=B&255^b;$t(z);b=i[P>>0]|0;B=i[O>>0]|0;w=i[M>>0]|0;V=i[R>>0]|0;v=i[N>>0]|0;y=i[E>>0]|0;t=i[C>>0]|0;D=i[U>>0]|0;g=i[A>>0]|0;i[A>>0]=i[F>>0]|0;j=i[S>>0]|0;H=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;w=w&255;i[O>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;B=B&255;i[P>>0]=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;y=y&255;i[N>>0]=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;y=a[A>>0]|0;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;B=o[n+96>>2]|0;i[z>>0]=(a[z>>0]|0)^B>>>24;i[R>>0]=b&255^B>>>16;i[U>>0]=t&255^B>>>8;i[F>>0]=j&255^B;B=o[n+100>>2]|0;i[T>>0]=(a[T>>0]|0)^B>>>24;i[M>>0]=V&255^B>>>16;i[E>>0]=v&255^B>>>8;i[S>>0]=H&255^B;B=o[n+104>>2]|0;i[x>>0]=(a[x>>0]|0)^B>>>24;i[O>>0]=(a[O>>0]|0)^B>>>16;i[C>>0]=D&255^B>>>8;i[I>>0]=g&255^B;B=o[n+108>>2]|0;i[L>>0]=(a[L>>0]|0)^B>>>24;i[P>>0]=(a[P>>0]|0)^B>>>16;i[N>>0]=(a[N>>0]|0)^B>>>8;i[A>>0]=y&255^B;$t(z);B=i[P>>0]|0;y=i[O>>0]|0;g=i[M>>0]|0;D=i[R>>0]|0;H=i[N>>0]|0;v=i[E>>0]|0;V=i[C>>0]|0;j=i[U>>0]|0;t=i[A>>0]|0;i[A>>0]=i[F>>0]|0;b=i[S>>0]|0;w=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;g=g&255;i[O>>0]=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;y=y&255;i[P>>0]=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;v=v&255;i[N>>0]=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;v=a[A>>0]|0;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;y=o[n+80>>2]|0;i[z>>0]=(a[z>>0]|0)^y>>>24;i[R>>0]=B&255^y>>>16;i[U>>0]=V&255^y>>>8;i[F>>0]=b&255^y;y=o[n+84>>2]|0;i[T>>0]=(a[T>>0]|0)^y>>>24;i[M>>0]=D&255^y>>>16;i[E>>0]=H&255^y>>>8;i[S>>0]=w&255^y;y=o[n+88>>2]|0;i[x>>0]=(a[x>>0]|0)^y>>>24;i[O>>0]=(a[O>>0]|0)^y>>>16;i[C>>0]=j&255^y>>>8;i[I>>0]=t&255^y;y=o[n+92>>2]|0;i[L>>0]=(a[L>>0]|0)^y>>>24;i[P>>0]=(a[P>>0]|0)^y>>>16;i[N>>0]=(a[N>>0]|0)^y>>>8;i[A>>0]=v&255^y;$t(z);y=i[P>>0]|0;v=i[O>>0]|0;t=i[M>>0]|0;j=i[R>>0]|0;w=i[N>>0]|0;H=i[E>>0]|0;D=i[C>>0]|0;b=i[U>>0]|0;V=i[A>>0]|0;i[A>>0]=i[F>>0]|0;B=i[S>>0]|0;g=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;t=t&255;i[O>>0]=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;v=v&255;i[P>>0]=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;H=H&255;i[N>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;H=a[A>>0]|0;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;v=o[n+64>>2]|0;i[z>>0]=(a[z>>0]|0)^v>>>24;i[R>>0]=y&255^v>>>16;i[U>>0]=D&255^v>>>8;i[F>>0]=B&255^v;v=o[n+68>>2]|0;i[T>>0]=(a[T>>0]|0)^v>>>24;i[M>>0]=j&255^v>>>16;i[E>>0]=w&255^v>>>8;i[S>>0]=g&255^v;v=o[n+72>>2]|0;i[x>>0]=(a[x>>0]|0)^v>>>24;i[O>>0]=(a[O>>0]|0)^v>>>16;i[C>>0]=b&255^v>>>8;i[I>>0]=V&255^v;v=o[n+76>>2]|0;i[L>>0]=(a[L>>0]|0)^v>>>24;i[P>>0]=(a[P>>0]|0)^v>>>16;i[N>>0]=(a[N>>0]|0)^v>>>8;i[A>>0]=H&255^v;$t(z);v=i[P>>0]|0;H=i[O>>0]|0;V=i[M>>0]|0;b=i[R>>0]|0;g=i[N>>0]|0;w=i[E>>0]|0;j=i[C>>0]|0;B=i[U>>0]|0;D=i[A>>0]|0;i[A>>0]=i[F>>0]|0;y=i[S>>0]|0;t=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;V=V&255;i[O>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;H=H&255;i[P>>0]=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;w=w&255;i[N>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;w=a[A>>0]|0;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;H=o[n+48>>2]|0;i[z>>0]=(a[z>>0]|0)^H>>>24;i[R>>0]=v&255^H>>>16;i[U>>0]=j&255^H>>>8;i[F>>0]=y&255^H;H=o[n+52>>2]|0;i[T>>0]=(a[T>>0]|0)^H>>>24;i[M>>0]=b&255^H>>>16;i[E>>0]=g&255^H>>>8;i[S>>0]=t&255^H;H=o[n+56>>2]|0;i[x>>0]=(a[x>>0]|0)^H>>>24;i[O>>0]=(a[O>>0]|0)^H>>>16;i[C>>0]=B&255^H>>>8;i[I>>0]=D&255^H;H=o[n+60>>2]|0;i[L>>0]=(a[L>>0]|0)^H>>>24;i[P>>0]=(a[P>>0]|0)^H>>>16;i[N>>0]=(a[N>>0]|0)^H>>>8;i[A>>0]=w&255^H;$t(z);H=i[P>>0]|0;w=i[O>>0]|0;D=i[M>>0]|0;B=i[R>>0]|0;t=i[N>>0]|0;g=i[E>>0]|0;b=i[C>>0]|0;y=i[U>>0]|0;j=i[A>>0]|0;i[A>>0]=i[F>>0]|0;v=i[S>>0]|0;V=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;D=D&255;i[O>>0]=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;w=w&255;i[P>>0]=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;t=t&255;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;g=g&255;i[N>>0]=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;g=a[A>>0]|0;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;w=o[n+32>>2]|0;i[z>>0]=(a[z>>0]|0)^w>>>24;i[R>>0]=H&255^w>>>16;i[U>>0]=b&255^w>>>8;i[F>>0]=v&255^w;w=o[n+36>>2]|0;i[T>>0]=(a[T>>0]|0)^w>>>24;i[M>>0]=B&255^w>>>16;i[E>>0]=t&255^w>>>8;i[S>>0]=V&255^w;w=o[n+40>>2]|0;i[x>>0]=(a[x>>0]|0)^w>>>24;i[O>>0]=(a[O>>0]|0)^w>>>16;i[C>>0]=y&255^w>>>8;i[I>>0]=j&255^w;w=o[n+44>>2]|0;i[L>>0]=(a[L>>0]|0)^w>>>24;i[P>>0]=(a[P>>0]|0)^w>>>16;i[N>>0]=(a[N>>0]|0)^w>>>8;i[A>>0]=g&255^w;$t(z);w=i[P>>0]|0;g=i[O>>0]|0;j=i[M>>0]|0;y=i[R>>0]|0;V=i[N>>0]|0;t=i[E>>0]|0;B=i[C>>0]|0;v=i[U>>0]|0;b=i[A>>0]|0;i[A>>0]=i[F>>0]|0;H=i[S>>0]|0;D=i[I>>0]|0;k=a[z>>0]|0;i[z>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[T>>0]|0;i[T>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[x>>0]|0;i[x>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;k=a[L>>0]|0;i[L>>0]=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;j=j&255;i[O>>0]=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;g=g&255;i[P>>0]=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;V=V&255;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;i[N>>0]=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;b=b&255;b=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;t=a[A>>0]|0;t=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;g=o[n+16>>2]|0;i[z>>0]=(a[z>>0]|0)^g>>>24;i[R>>0]=w&255^g>>>16;i[U>>0]=B&255^g>>>8;i[F>>0]=H&255^g;g=o[n+20>>2]|0;i[T>>0]=(a[T>>0]|0)^g>>>24;i[M>>0]=y&255^g>>>16;i[E>>0]=V&255^g>>>8;i[S>>0]=D&255^g;g=o[n+24>>2]|0;i[x>>0]=(a[x>>0]|0)^g>>>24;i[O>>0]=(a[O>>0]|0)^g>>>16;i[C>>0]=v&255^g>>>8;i[I>>0]=b&255^g;g=o[n+28>>2]|0;i[L>>0]=(a[L>>0]|0)^g>>>24;i[P>>0]=(a[P>>0]|0)^g>>>16;i[N>>0]=(a[N>>0]|0)^g>>>8;i[A>>0]=t&255^g;$t(z);g=i[P>>0]|0;t=i[O>>0]|0;b=i[M>>0]|0;v=i[R>>0]|0;D=i[N>>0]|0;V=i[E>>0]|0;y=i[C>>0]|0;H=i[U>>0]|0;B=i[A>>0]|0;i[A>>0]=i[F>>0]|0;w=i[S>>0]|0;j=i[I>>0]|0;k=a[z>>0]|0;k=i[(k&15)+(35283+(k>>>4<<4))>>0]|0;i[z>>0]=k;p=a[T>>0]|0;i[T>>0]=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;p=a[x>>0]|0;i[x>>0]=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;p=a[L>>0]|0;i[L>>0]=i[(p&15)+(35283+(p>>>4<<4))>>0]|0;g=g&255;g=i[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=v&255;v=i[(v&15)+(35283+(v>>>4<<4))>>0]|0;b=b&255;i[O>>0]=i[(b&15)+(35283+(b>>>4<<4))>>0]|0;t=t&255;i[P>>0]=i[(t&15)+(35283+(t>>>4<<4))>>0]|0;y=y&255;y=i[(y&15)+(35283+(y>>>4<<4))>>0]|0;D=D&255;D=i[(D&15)+(35283+(D>>>4<<4))>>0]|0;H=H&255;H=i[(H&15)+(35283+(H>>>4<<4))>>0]|0;V=V&255;i[N>>0]=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;w=w&255;w=i[(w&15)+(35283+(w>>>4<<4))>>0]|0;j=j&255;j=i[(j&15)+(35283+(j>>>4<<4))>>0]|0;B=B&255;B=i[(B&15)+(35283+(B>>>4<<4))>>0]|0;V=a[A>>0]|0;V=i[(V&15)+(35283+(V>>>4<<4))>>0]|0;t=o[n>>2]|0;k=(k&255^t>>>24)&255;i[z>>0]=k;g=(g&255^t>>>16)&255;i[R>>0]=g;y=(y&255^t>>>8)&255;i[U>>0]=y;t=(w&255^t)&255;i[F>>0]=t;z=o[n+4>>2]|0;A=((a[T>>0]|0)^z>>>24)&255;i[T>>0]=A;T=(v&255^z>>>16)&255;i[M>>0]=T;M=(D&255^z>>>8)&255;i[E>>0]=M;E=(j&255^z)&255;i[S>>0]=E;z=o[n+8>>2]|0;R=((a[x>>0]|0)^z>>>24)&255;i[x>>0]=R;U=((a[O>>0]|0)^z>>>16)&255;i[O>>0]=U;F=(H&255^z>>>8)&255;i[C>>0]=F;z=(B&255^z)&255;i[I>>0]=z;B=o[n+12>>2]|0;H=((a[L>>0]|0)^B>>>24)&255;i[L>>0]=H;j=((a[P>>0]|0)^B>>>16)&255;i[P>>0]=j;D=((a[N>>0]|0)^B>>>8)&255;i[r>>0]=k;i[r+1>>0]=g;i[r+2>>0]=y;i[r+3>>0]=t;i[r+4>>0]=A;i[r+5>>0]=T;i[r+6>>0]=M;i[r+7>>0]=E;i[r+8>>0]=R;i[r+9>>0]=U;i[r+10>>0]=F;i[r+11>>0]=z;i[r+12>>0]=H;i[r+13>>0]=j;i[r+14>>0]=D;i[r+15>>0]=V&255^B;f=q;return}function ro(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0,B=0,G=0,K=0,W=0,Y=0,J=0,X=0,Q=0,Z=0,$=0,ee=0,ne=0,ie=0,te=0,oe=0,ae=0,ue=0,se=0,_e=0,le=0,fe=0,ce=0,he=0,de=0,me=0,pe=0,be=0,we=0,ve=0,ke=0,ge=0,ye=0,Ae=0,Te=0,Me=0,Ee=0,Se=0,xe=0,Oe=0,Re=0,Ce=0,Ie=0,Le=0,Pe=0,Ne=0,Ue=0,Fe=0,ze=0,qe=0,He=0,je=0,De=0,Ve=0,Be=0,Ge=0,Ke=0,We=0,Ye=0,Je=0,Xe=0,Qe=0,Ze=0,$e=0,er=0,rr=0,nr=0,ir=0,tr=0,or=0,ar=0,ur=0,sr=0,_r=0,lr=0,fr=0,cr=0,hr=0,dr=0,mr=0,pr=0,br=0,wr=0,vr=0,kr=0,gr=0,yr=0,Ar=0,Tr=0,Mr=0,Er=0,Sr=0,xr=0,Or=0,Rr=0,Cr=0,Ir=0,Lr=0,Pr=0,Nr=0,Ur=0,Fr=0,zr=0,qr=0,Hr=0,jr=0,Dr=0;Lr=f;f=f+2640|0;Ir=Lr+2456|0;Ar=Lr+2304|0;xr=Lr+2152|0;yr=Lr+2e3|0;kr=Lr+1848|0;gr=Lr+1696|0;Or=Lr+1544|0;Tr=Lr+1392|0;Mr=Lr+1240|0;Er=Lr+1088|0;t=Lr+936|0;u=Lr+784|0;s=Lr+632|0;_=Lr+480|0;h=Lr+328|0;wr=Lr+248|0;Sr=Lr+168|0;Cr=Lr+80|0;Rr=Lr;vr=Lr+2608|0;Z=vr;d=r;Q=Z+32|0;do{i[Z>>0]=i[d>>0]|0;Z=Z+1|0;d=d+1|0}while((Z|0)<(Q|0));i[vr>>0]=(a[vr>>0]|0)&248;Z=vr+31|0;i[Z>>0]=(a[Z>>0]|0)&63|64;Z=a[n>>0]|0;dr=po(a[n+1>>0]|0|0,0,8)|0;hr=C;pr=po(a[n+2>>0]|0|0,0,16)|0;hr=hr|C;mr=a[n+3>>0]|0;Q=po(mr|0,0,24)|0;br=wr;o[br>>2]=dr|Z|pr|Q&50331648;o[br+4>>2]=hr;br=po(a[n+4>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+5>>0]|0|0,0,16)|0;hr=hr|C;pr=a[n+6>>0]|0;Z=po(pr|0,0,24)|0;hr=mo(br|mr|Q|Z|0,hr|C|0,2)|0;Z=wr+8|0;o[Z>>2]=hr&33554431;o[Z+4>>2]=0;Z=po(a[n+7>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+8>>0]|0|0,0,16)|0;hr=hr|C;mr=a[n+9>>0]|0;br=po(mr|0,0,24)|0;hr=mo(Z|pr|Q|br|0,hr|C|0,3)|0;br=wr+16|0;o[br>>2]=hr&67108863;o[br+4>>2]=0;br=po(a[n+10>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+11>>0]|0|0,0,16)|0;hr=hr|C;pr=a[n+12>>0]|0;Z=po(pr|0,0,24)|0;hr=mo(br|mr|Q|Z|0,hr|C|0,5)|0;Z=wr+24|0;o[Z>>2]=hr&33554431;o[Z+4>>2]=0;Z=po(a[n+13>>0]|0|0,0,8)|0;hr=C;Q=po(a[n+14>>0]|0|0,0,16)|0;hr=hr|C;mr=po(a[n+15>>0]|0|0,0,24)|0;hr=mo(Z|pr|Q|mr|0,hr|C|0,6)|0;mr=wr+32|0;o[mr>>2]=hr&67108863;o[mr+4>>2]=0;mr=a[n+16>>0]|0;hr=po(a[n+17>>0]|0|0,0,8)|0;Q=C;pr=po(a[n+18>>0]|0|0,0,16)|0;Q=Q|C;Z=a[n+19>>0]|0;br=po(Z|0,0,24)|0;dr=wr+40|0;o[dr>>2]=hr|mr|pr|br&16777216;o[dr+4>>2]=Q;dr=po(a[n+20>>0]|0|0,0,8)|0;Q=C;br=po(a[n+21>>0]|0|0,0,16)|0;Q=Q|C;pr=a[n+22>>0]|0;mr=po(pr|0,0,24)|0;Q=mo(dr|Z|br|mr|0,Q|C|0,1)|0;mr=wr+48|0;o[mr>>2]=Q&67108863;o[mr+4>>2]=0;mr=po(a[n+23>>0]|0|0,0,8)|0;Q=C;br=po(a[n+24>>0]|0|0,0,16)|0;Q=Q|C;Z=a[n+25>>0]|0;dr=po(Z|0,0,24)|0;Q=mo(mr|pr|br|dr|0,Q|C|0,3)|0;dr=wr+56|0;o[dr>>2]=Q&33554431;o[dr+4>>2]=0;dr=po(a[n+26>>0]|0|0,0,8)|0;Q=C;br=po(a[n+27>>0]|0|0,0,16)|0;Q=Q|C;pr=a[n+28>>0]|0;mr=po(pr|0,0,24)|0;Q=mo(dr|Z|br|mr|0,Q|C|0,4)|0;mr=wr+64|0;o[mr>>2]=Q&67108863;o[mr+4>>2]=0;mr=po(a[n+29>>0]|0|0,0,8)|0;Q=C;br=po(a[n+30>>0]|0|0,0,16)|0;Q=Q|C;Z=po(a[n+31>>0]|0|0,0,24)|0;Q=mo(mr|pr|br|Z|0,Q|C|0,6)|0;Z=wr+72|0;o[Z>>2]=Q&33554431;o[Z+4>>2]=0;ho(Mr|0,0,152)|0;Z=Mr;o[Z>>2]=1;o[Z+4>>2]=0;ho(Er|0,0,152)|0;Z=Er;o[Z>>2]=1;o[Z+4>>2]=0;ho(t|0,0,152)|0;ho(u|0,0,152)|0;ho(s|0,0,152)|0;Z=s;o[Z>>2]=1;o[Z+4>>2]=0;ho(_|0,0,152)|0;ho(h|0,0,152)|0;Z=h;o[Z>>2]=1;o[Z+4>>2]=0;Z=Tr+80|0;Q=Z+72|0;do{o[Z>>2]=0;Z=Z+4|0}while((Z|0)<(Q|0));Z=Tr;d=wr;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));se=yr+144|0;_e=yr+64|0;le=yr+136|0;fe=yr+56|0;ce=yr+128|0;he=yr+48|0;de=yr+120|0;me=yr+40|0;pe=yr+112|0;be=yr+32|0;we=yr+104|0;ve=yr+24|0;ke=yr+96|0;ge=yr+16|0;ye=yr+88|0;Ae=yr+8|0;Te=yr+80|0;Me=kr+144|0;Ee=kr+64|0;Se=kr+136|0;xe=kr+56|0;Oe=kr+128|0;Re=kr+48|0;Ce=kr+120|0;Ie=kr+40|0;Le=kr+112|0;Pe=kr+32|0;Ne=kr+104|0;Ue=kr+24|0;Fe=kr+96|0;ze=kr+16|0;qe=kr+88|0;He=kr+8|0;je=kr+80|0;De=yr+72|0;Ve=kr+72|0;Be=Ar+8|0;Ge=xr+8|0;Ke=Ar+16|0;We=xr+16|0;Ye=Ar+24|0;Je=xr+24|0;Xe=Ar+32|0;Qe=xr+32|0;Ze=Ar+40|0;$e=xr+40|0;er=Ar+48|0;rr=xr+48|0;nr=Ar+56|0;ir=xr+56|0;tr=Ar+64|0;or=xr+64|0;ar=Ar+72|0;ur=xr+72|0;sr=Ir+80|0;_r=Ir+8|0;lr=Ir+16|0;fr=Ir+24|0;cr=Ir+32|0;hr=Ir+40|0;dr=Ir+48|0;mr=Ir+56|0;pr=Ir+64|0;br=Ir+72|0;n=0;l=Tr;c=Mr;r=Er;do{d=i[vr+(31-n)>>0]|0;ue=0;ie=u;te=s;oe=_;ae=h;while(1){$=d&255;ee=lo(0,0,$>>>7|0,0)|0;ne=C;u=0;do{W=r+(u<<3)|0;G=W;K=o[G>>2]|0;G=o[G+4>>2]|0;Z=l+(u<<3)|0;J=Z;Q=o[J>>2]|0;J=o[J+4>>2]|0;X=(Q^K)ⅇY=(J^G)≠K=co(0,X^K|0,32)|0;o[W>>2]=K;o[W+4>>2]=C;Q=co(0,X^Q|0,32)|0;o[Z>>2]=Q;o[Z+4>>2]=C;u=u+1|0}while((u|0)!=10);u=0;do{W=t+(u<<3)|0;G=W;K=o[G>>2]|0;G=o[G+4>>2]|0;Z=c+(u<<3)|0;J=Z;Q=o[J>>2]|0;J=o[J+4>>2]|0;X=(Q^K)ⅇY=(J^G)≠K=co(0,X^K|0,32)|0;o[W>>2]=K;o[W+4>>2]=C;Q=co(0,X^Q|0,32)|0;o[Z>>2]=Q;o[Z+4>>2]=C;u=u+1|0}while((u|0)!=10);Y=r;s=o[Y>>2]|0;Y=o[Y+4>>2]|0;b=r+8|0;z=b;B=o[z>>2]|0;z=o[z+4>>2]|0;Fr=r+16|0;x=Fr;S=o[x>>2]|0;x=o[x+4>>2]|0;K=r+24|0;Pr=K;w=o[Pr>>2]|0;Pr=o[Pr+4>>2]|0;X=r+32|0;Q=X;zr=o[Q>>2]|0;Q=o[Q+4>>2]|0;I=r+40|0;u=I;W=o[u>>2]|0;u=o[u+4>>2]|0;k=r+48|0;F=k;U=o[F>>2]|0;F=o[F+4>>2]|0;T=r+56|0;M=T;H=o[M>>2]|0;M=o[M+4>>2]|0;qr=r+64|0;O=qr;g=o[O>>2]|0;O=o[O+4>>2]|0;_=r+72|0;Nr=_;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;J=t;V=o[J>>2]|0;J=o[J+4>>2]|0;L=fo(V|0,J|0,s|0,Y|0)|0;P=r;o[P>>2]=L;o[P+4>>2]=C;P=t+8|0;L=P;q=o[L>>2]|0;L=o[L+4>>2]|0;A=fo(q|0,L|0,B|0,z|0)|0;o[b>>2]=A;o[b+4>>2]=C;b=t+16|0;A=b;y=o[A>>2]|0;A=o[A+4>>2]|0;h=fo(y|0,A|0,S|0,x|0)|0;o[Fr>>2]=h;o[Fr+4>>2]=C;Fr=t+24|0;h=Fr;d=o[h>>2]|0;h=o[h+4>>2]|0;jr=fo(d|0,h|0,w|0,Pr|0)|0;o[K>>2]=jr;o[K+4>>2]=C;K=t+32|0;jr=K;Z=o[jr>>2]|0;jr=o[jr+4>>2]|0;D=fo(Z|0,jr|0,zr|0,Q|0)|0;o[X>>2]=D;o[X+4>>2]=C;X=t+40|0;D=X;j=o[D>>2]|0;D=o[D+4>>2]|0;R=fo(j|0,D|0,W|0,u|0)|0;o[I>>2]=R;o[I+4>>2]=C;I=t+48|0;R=I;G=o[R>>2]|0;R=o[R+4>>2]|0;N=fo(G|0,R|0,U|0,F|0)|0;o[k>>2]=N;o[k+4>>2]=C;k=t+56|0;N=k;E=o[N>>2]|0;N=o[N+4>>2]|0;p=fo(E|0,N|0,H|0,M|0)|0;o[T>>2]=p;o[T+4>>2]=C;T=t+64|0;p=T;m=o[p>>2]|0;p=o[p+4>>2]|0;Hr=fo(m|0,p|0,g|0,O|0)|0;o[qr>>2]=Hr;o[qr+4>>2]=C;qr=t+72|0;Hr=qr;v=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=fo(v|0,Hr|0,Ur|0,Nr|0)|0;o[_>>2]=Dr;o[_+4>>2]=C;J=lo(s|0,Y|0,V|0,J|0)|0;V=t;o[V>>2]=J;o[V+4>>2]=C;L=lo(B|0,z|0,q|0,L|0)|0;o[P>>2]=L;o[P+4>>2]=C;A=lo(S|0,x|0,y|0,A|0)|0;o[b>>2]=A;o[b+4>>2]=C;h=lo(w|0,Pr|0,d|0,h|0)|0;o[Fr>>2]=h;o[Fr+4>>2]=C;jr=lo(zr|0,Q|0,Z|0,jr|0)|0;o[K>>2]=jr;o[K+4>>2]=C;D=lo(W|0,u|0,j|0,D|0)|0;o[X>>2]=D;o[X+4>>2]=C;R=lo(U|0,F|0,G|0,R|0)|0;o[I>>2]=R;o[I+4>>2]=C;N=lo(H|0,M|0,E|0,N|0)|0;o[k>>2]=N;o[k+4>>2]=C;p=lo(g|0,O|0,m|0,p|0)|0;o[T>>2]=p;o[T+4>>2]=C;Hr=lo(Ur|0,Nr|0,v|0,Hr|0)|0;o[qr>>2]=Hr;o[qr+4>>2]=C;qr=l;Hr=o[qr>>2]|0;qr=o[qr+4>>2]|0;v=l+8|0;Nr=v;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;T=l+16|0;p=T;m=o[p>>2]|0;p=o[p+4>>2]|0;O=l+24|0;g=O;k=o[g>>2]|0;g=o[g+4>>2]|0;N=l+32|0;E=N;M=o[E>>2]|0;E=o[E+4>>2]|0;H=l+40|0;I=H;R=o[I>>2]|0;I=o[I+4>>2]|0;G=l+48|0;F=G;U=o[F>>2]|0;F=o[F+4>>2]|0;X=l+56|0;D=X;j=o[D>>2]|0;D=o[D+4>>2]|0;u=l+64|0;W=u;K=o[W>>2]|0;W=o[W+4>>2]|0;jr=l+72|0;Z=jr;Q=o[Z>>2]|0;Z=o[Z+4>>2]|0;zr=c;Fr=o[zr>>2]|0;zr=o[zr+4>>2]|0;h=fo(Fr|0,zr|0,Hr|0,qr|0)|0;d=l;o[d>>2]=h;o[d+4>>2]=C;d=c+8|0;h=d;Pr=o[h>>2]|0;h=o[h+4>>2]|0;w=fo(Pr|0,h|0,Ur|0,Nr|0)|0;o[v>>2]=w;o[v+4>>2]=C;v=c+16|0;w=v;b=o[w>>2]|0;w=o[w+4>>2]|0;A=fo(b|0,w|0,m|0,p|0)|0;o[T>>2]=A;o[T+4>>2]=C;T=c+24|0;A=T;y=o[A>>2]|0;A=o[A+4>>2]|0;x=fo(y|0,A|0,k|0,g|0)|0;o[O>>2]=x;o[O+4>>2]=C;O=c+32|0;x=O;S=o[x>>2]|0;x=o[x+4>>2]|0;P=fo(S|0,x|0,M|0,E|0)|0;o[N>>2]=P;o[N+4>>2]=C;N=c+40|0;P=N;L=o[P>>2]|0;P=o[P+4>>2]|0;q=fo(L|0,P|0,R|0,I|0)|0;o[H>>2]=q;o[H+4>>2]=C;H=c+48|0;q=H;z=o[q>>2]|0;q=o[q+4>>2]|0;B=fo(z|0,q|0,U|0,F|0)|0;o[G>>2]=B;o[G+4>>2]=C;G=c+56|0;B=G;V=o[B>>2]|0;B=o[B+4>>2]|0;J=fo(V|0,B|0,j|0,D|0)|0;o[X>>2]=J;o[X+4>>2]=C;X=c+64|0;J=X;Y=o[J>>2]|0;J=o[J+4>>2]|0;s=fo(Y|0,J|0,K|0,W|0)|0;o[u>>2]=s;o[u+4>>2]=C;u=c+72|0;s=u;_=o[s>>2]|0;s=o[s+4>>2]|0;Dr=fo(_|0,s|0,Q|0,Z|0)|0;o[jr>>2]=Dr;o[jr+4>>2]=C;zr=lo(Hr|0,qr|0,Fr|0,zr|0)|0;Fr=c;o[Fr>>2]=zr;o[Fr+4>>2]=C;h=lo(Ur|0,Nr|0,Pr|0,h|0)|0;o[d>>2]=h;o[d+4>>2]=C;w=lo(m|0,p|0,b|0,w|0)|0;o[v>>2]=w;o[v+4>>2]=C;A=lo(k|0,g|0,y|0,A|0)|0;o[T>>2]=A;o[T+4>>2]=C;x=lo(M|0,E|0,S|0,x|0)|0;o[O>>2]=x;o[O+4>>2]=C;P=lo(R|0,I|0,L|0,P|0)|0;o[N>>2]=P;o[N+4>>2]=C;q=lo(U|0,F|0,z|0,q|0)|0;o[H>>2]=q;o[H+4>>2]=C;B=lo(j|0,D|0,V|0,B|0)|0;o[G>>2]=B;o[G+4>>2]=C;J=lo(K|0,W|0,Y|0,J|0)|0;o[X>>2]=J;o[X+4>>2]=C;s=lo(Q|0,Z|0,_|0,s|0)|0;o[u>>2]=s;o[u+4>>2]=C;no(yr,l,t);no(kr,r,c);u=se;s=o[u>>2]|0;u=o[u+4>>2]|0;_=_e;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yo(s|0,u|0,18,0)|0;X=C;u=fo(Z|0,_|0,s|0,u|0)|0;X=fo(u|0,C|0,Q|0,X|0)|0;Q=_e;o[Q>>2]=X;o[Q+4>>2]=C;Q=le;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=fe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(X|0,Q|0,18,0)|0;Z=C;Q=fo(s|0,u|0,X|0,Q|0)|0;Z=fo(Q|0,C|0,_|0,Z|0)|0;_=fe;o[_>>2]=Z;o[_+4>>2]=C;_=ce;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=he;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=yo(Z|0,_|0,18,0)|0;s=C;_=fo(X|0,Q|0,Z|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=he;o[u>>2]=s;o[u+4>>2]=C;u=de;s=o[u>>2]|0;u=o[u+4>>2]|0;_=me;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yo(s|0,u|0,18,0)|0;X=C;u=fo(Z|0,_|0,s|0,u|0)|0;X=fo(u|0,C|0,Q|0,X|0)|0;Q=me;o[Q>>2]=X;o[Q+4>>2]=C;Q=pe;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=be;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(X|0,Q|0,18,0)|0;Z=C;Q=fo(s|0,u|0,X|0,Q|0)|0;Z=fo(Q|0,C|0,_|0,Z|0)|0;_=be;o[_>>2]=Z;o[_+4>>2]=C;_=we;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=ve;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=yo(Z|0,_|0,18,0)|0;s=C;_=fo(X|0,Q|0,Z|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=ve;o[u>>2]=s;o[u+4>>2]=C;u=ke;s=o[u>>2]|0;u=o[u+4>>2]|0;_=ge;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yo(s|0,u|0,18,0)|0;X=C;u=fo(Z|0,_|0,s|0,u|0)|0;X=fo(u|0,C|0,Q|0,X|0)|0;Q=ge;o[Q>>2]=X;o[Q+4>>2]=C;Q=ye;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=Ae;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(X|0,Q|0,18,0)|0;Z=C;Q=fo(s|0,u|0,X|0,Q|0)|0;Z=fo(Q|0,C|0,_|0,Z|0)|0;_=Ae;o[_>>2]=Z;o[_+4>>2]=C;_=Te;Z=o[_>>2]|0;_=o[_+4>>2]|0;Q=yr;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;u=yo(Z|0,_|0,18,0)|0;s=C;_=fo(X|0,Q|0,Z|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=C;_=yr;o[_>>2]=s;o[_+4>>2]=u;_=Te;o[_>>2]=0;o[_+4>>2]=0;_=0;do{qr=fo(u>>31>>>6|0,0,s|0,u|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(s|0,u|0,Fr|0,C|0)|0;Dr=yr+(_<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=yr+((_|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;_=_+2|0;Dr=yr+(_<<3)|0;jr=Dr;s=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;u=C;o[Dr>>2]=s;o[Dr+4>>2]=u}while(_>>>0<10);d=Te;h=o[d>>2]|0;d=o[d+4>>2]|0;u=yr;m=o[u>>2]|0;u=o[u+4>>2]|0;s=yo(h|0,d|0,18,0)|0;_=C;d=fo(m|0,u|0,h|0,d|0)|0;_=fo(d|0,C|0,s|0,_|0)|0;s=C;d=Te;o[d>>2]=0;o[d+4>>2]=0;d=fo(s>>31>>>6|0,0,_|0,s|0)|0;d=co(d|0,C|0,26)|0;h=C;u=po(d|0,h|0,26)|0;u=lo(_|0,s|0,u|0,C|0)|0;s=C;_=yr;o[_>>2]=u;o[_+4>>2]=s;_=Ae;_=fo(d|0,h|0,o[_>>2]|0,o[_+4>>2]|0)|0;h=C;d=Ae;o[d>>2]=_;o[d+4>>2]=h;d=Me;m=o[d>>2]|0;d=o[d+4>>2]|0;p=Ee;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=yo(m|0,d|0,18,0)|0;Hr=C;d=fo(Dr|0,p|0,m|0,d|0)|0;Hr=fo(d|0,C|0,jr|0,Hr|0)|0;jr=Ee;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Se;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=xe;m=o[d>>2]|0;d=o[d+4>>2]|0;p=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(m|0,d|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,p|0,Dr|0)|0;p=xe;o[p>>2]=Dr;o[p+4>>2]=C;p=Oe;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=Re;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=yo(Dr|0,p|0,18,0)|0;m=C;p=fo(Hr|0,jr|0,Dr|0,p|0)|0;m=fo(p|0,C|0,d|0,m|0)|0;d=Re;o[d>>2]=m;o[d+4>>2]=C;d=Ce;m=o[d>>2]|0;d=o[d+4>>2]|0;p=Ie;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=yo(m|0,d|0,18,0)|0;Hr=C;d=fo(Dr|0,p|0,m|0,d|0)|0;Hr=fo(d|0,C|0,jr|0,Hr|0)|0;jr=Ie;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Le;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=Pe;m=o[d>>2]|0;d=o[d+4>>2]|0;p=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(m|0,d|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,p|0,Dr|0)|0;p=Pe;o[p>>2]=Dr;o[p+4>>2]=C;p=Ne;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=Ue;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=yo(Dr|0,p|0,18,0)|0;m=C;p=fo(Hr|0,jr|0,Dr|0,p|0)|0;m=fo(p|0,C|0,d|0,m|0)|0;d=Ue;o[d>>2]=m;o[d+4>>2]=C;d=Fe;m=o[d>>2]|0;d=o[d+4>>2]|0;p=ze;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=yo(m|0,d|0,18,0)|0;Hr=C;d=fo(Dr|0,p|0,m|0,d|0)|0;Hr=fo(d|0,C|0,jr|0,Hr|0)|0;jr=ze;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=qe;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=He;m=o[d>>2]|0;d=o[d+4>>2]|0;p=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(m|0,d|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,p|0,Dr|0)|0;p=He;o[p>>2]=Dr;o[p+4>>2]=C;p=je;Dr=o[p>>2]|0;p=o[p+4>>2]|0;jr=kr;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;d=yo(Dr|0,p|0,18,0)|0;m=C;p=fo(Hr|0,jr|0,Dr|0,p|0)|0;m=fo(p|0,C|0,d|0,m|0)|0;d=C;p=kr;o[p>>2]=m;o[p+4>>2]=d;p=je;o[p>>2]=0;o[p+4>>2]=0;p=0;do{qr=fo(d>>31>>>6|0,0,m|0,d|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(m|0,d|0,Fr|0,C|0)|0;Dr=kr+(p<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=kr+((p|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;p=p+2|0;Dr=kr+(p<<3)|0;jr=Dr;m=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;d=C;o[Dr>>2]=m;o[Dr+4>>2]=d}while(p>>>0<10);R=je;x=o[R>>2]|0;R=o[R+4>>2]|0;M=kr;O=o[M>>2]|0;M=o[M+4>>2]|0;E=yo(x|0,R|0,18,0)|0;S=C;R=fo(O|0,M|0,x|0,R|0)|0;S=fo(R|0,C|0,E|0,S|0)|0;E=C;R=je;o[R>>2]=0;o[R+4>>2]=0;R=fo(E>>31>>>6|0,0,S|0,E|0)|0;R=co(R|0,C|0,26)|0;x=C;M=po(R|0,x|0,26)|0;M=lo(S|0,E|0,M|0,C|0)|0;E=C;S=He;S=fo(R|0,x|0,o[S>>2]|0,o[S+4>>2]|0)|0;x=C;R=ge;O=o[R>>2]|0;R=o[R+4>>2]|0;N=ve;P=o[N>>2]|0;N=o[N+4>>2]|0;q=be;z=o[q>>2]|0;q=o[q+4>>2]|0;V=me;D=o[V>>2]|0;V=o[V+4>>2]|0;W=he;K=o[W>>2]|0;W=o[W+4>>2]|0;Q=fe;X=o[Q>>2]|0;Q=o[Q+4>>2]|0;Ur=_e;Nr=o[Ur>>2]|0;Ur=o[Ur+4>>2]|0;Hr=De;qr=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;L=fo(M|0,E|0,u|0,s|0)|0;I=yr;o[I>>2]=L;o[I+4>>2]=C;I=fo(S|0,x|0,_|0,h|0)|0;L=Ae;o[L>>2]=I;o[L+4>>2]=C;L=ze;I=o[L>>2]|0;L=o[L+4>>2]|0;U=fo(I|0,L|0,O|0,R|0)|0;F=ge;o[F>>2]=U;o[F+4>>2]=C;F=Ue;U=o[F>>2]|0;F=o[F+4>>2]|0;H=fo(U|0,F|0,P|0,N|0)|0;j=ve;o[j>>2]=H;o[j+4>>2]=C;j=Pe;H=o[j>>2]|0;j=o[j+4>>2]|0;B=fo(H|0,j|0,z|0,q|0)|0;G=be;o[G>>2]=B;o[G+4>>2]=C;G=Ie;B=o[G>>2]|0;G=o[G+4>>2]|0;Y=fo(B|0,G|0,D|0,V|0)|0;J=me;o[J>>2]=Y;o[J+4>>2]=C;J=Re;Y=o[J>>2]|0;J=o[J+4>>2]|0;Z=fo(Y|0,J|0,K|0,W|0)|0;Pr=he;o[Pr>>2]=Z;o[Pr+4>>2]=C;Pr=xe;Z=o[Pr>>2]|0;Pr=o[Pr+4>>2]|0;Fr=fo(Z|0,Pr|0,X|0,Q|0)|0;zr=fe;o[zr>>2]=Fr;o[zr+4>>2]=C;zr=Ee;Fr=o[zr>>2]|0;zr=o[zr+4>>2]|0;jr=fo(Fr|0,zr|0,Nr|0,Ur|0)|0;Dr=_e;o[Dr>>2]=jr;o[Dr+4>>2]=C;Dr=Ve;jr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;A=fo(jr|0,Dr|0,qr|0,Hr|0)|0;T=De;o[T>>2]=A;o[T+4>>2]=C;u=lo(u|0,s|0,M|0,E|0)|0;s=kr;o[s>>2]=u;o[s+4>>2]=C;s=lo(_|0,h|0,S|0,x|0)|0;u=He;o[u>>2]=s;o[u+4>>2]=C;u=lo(O|0,R|0,I|0,L|0)|0;s=ze;o[s>>2]=u;o[s+4>>2]=C;s=lo(P|0,N|0,U|0,F|0)|0;u=Ue;o[u>>2]=s;o[u+4>>2]=C;u=lo(z|0,q|0,H|0,j|0)|0;s=Pe;o[s>>2]=u;o[s+4>>2]=C;s=lo(D|0,V|0,B|0,G|0)|0;u=Ie;o[u>>2]=s;o[u+4>>2]=C;u=lo(K|0,W|0,Y|0,J|0)|0;s=Re;o[s>>2]=u;o[s+4>>2]=C;s=lo(X|0,Q|0,Z|0,Pr|0)|0;u=xe;o[u>>2]=s;o[u+4>>2]=C;u=lo(Nr|0,Ur|0,Fr|0,zr|0)|0;s=Ee;o[s>>2]=u;o[s+4>>2]=C;s=lo(qr|0,Hr|0,jr|0,Dr|0)|0;u=Ve;o[u>>2]=s;o[u+4>>2]=C;io(Or,yr);io(gr,kr);no(kr,gr,wr);u=Me;s=o[u>>2]|0;u=o[u+4>>2]|0;_=Ee;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=yo(s|0,u|0,18,0)|0;Hr=C;u=fo(Dr|0,_|0,s|0,u|0)|0;Hr=fo(u|0,C|0,jr|0,Hr|0)|0;jr=Ee;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Se;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=xe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(s|0,u|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,_|0,Dr|0)|0;_=xe;o[_>>2]=Dr;o[_+4>>2]=C;_=Oe;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=Re;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=yo(Dr|0,_|0,18,0)|0;s=C;_=fo(Hr|0,jr|0,Dr|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=Re;o[u>>2]=s;o[u+4>>2]=C;u=Ce;s=o[u>>2]|0;u=o[u+4>>2]|0;_=Ie;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=yo(s|0,u|0,18,0)|0;Hr=C;u=fo(Dr|0,_|0,s|0,u|0)|0;Hr=fo(u|0,C|0,jr|0,Hr|0)|0;jr=Ie;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=Le;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=Pe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(s|0,u|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,_|0,Dr|0)|0;_=Pe;o[_>>2]=Dr;o[_+4>>2]=C;_=Ne;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=Ue;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=yo(Dr|0,_|0,18,0)|0;s=C;_=fo(Hr|0,jr|0,Dr|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=Ue;o[u>>2]=s;o[u+4>>2]=C;u=Fe;s=o[u>>2]|0;u=o[u+4>>2]|0;_=ze;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=yo(s|0,u|0,18,0)|0;Hr=C;u=fo(Dr|0,_|0,s|0,u|0)|0;Hr=fo(u|0,C|0,jr|0,Hr|0)|0;jr=ze;o[jr>>2]=Hr;o[jr+4>>2]=C;jr=qe;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=He;s=o[u>>2]|0;u=o[u+4>>2]|0;_=yo(Hr|0,jr|0,18,0)|0;Dr=C;jr=fo(s|0,u|0,Hr|0,jr|0)|0;Dr=fo(jr|0,C|0,_|0,Dr|0)|0;_=He;o[_>>2]=Dr;o[_+4>>2]=C;_=je;Dr=o[_>>2]|0;_=o[_+4>>2]|0;jr=kr;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;u=yo(Dr|0,_|0,18,0)|0;s=C;_=fo(Hr|0,jr|0,Dr|0,_|0)|0;s=fo(_|0,C|0,u|0,s|0)|0;u=C;_=kr;o[_>>2]=s;o[_+4>>2]=u;_=je;o[_>>2]=0;o[_+4>>2]=0;_=0;do{qr=fo(u>>31>>>6|0,0,s|0,u|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(s|0,u|0,Fr|0,C|0)|0;Dr=kr+(_<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=kr+((_|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;_=_+2|0;Dr=kr+(_<<3)|0;jr=Dr;s=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;u=C;o[Dr>>2]=s;o[Dr+4>>2]=u}while(_>>>0<10);Q=je;Z=o[Q>>2]|0;Q=o[Q+4>>2]|0;Dr=kr;Hr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;d=yo(Z|0,Q|0,18,0)|0;jr=C;Q=fo(Hr|0,Dr|0,Z|0,Q|0)|0;jr=fo(Q|0,C|0,d|0,jr|0)|0;d=C;Q=je;o[Q>>2]=0;o[Q+4>>2]=0;Q=fo(d>>31>>>6|0,0,jr|0,d|0)|0;Q=co(Q|0,C|0,26)|0;Z=C;Dr=po(Q|0,Z|0,26)|0;Dr=lo(jr|0,d|0,Dr|0,C|0)|0;d=kr;o[d>>2]=Dr;o[d+4>>2]=C;d=He;d=fo(Q|0,Z|0,o[d>>2]|0,o[d+4>>2]|0)|0;Z=He;o[Z>>2]=d;o[Z+4>>2]=C;Z=ie;d=Or;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));Z=te;d=kr;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));io(Ar,r);io(xr,t);no(oe,Ar,xr);u=oe+144|0;_=o[u>>2]|0;u=o[u+4>>2]|0;s=oe+64|0;Dr=s;d=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(_|0,u|0,18,0)|0;jr=C;u=fo(d|0,Dr|0,_|0,u|0)|0;jr=fo(u|0,C|0,Hr|0,jr|0)|0;o[s>>2]=jr;o[s+4>>2]=C;s=oe+136|0;jr=o[s>>2]|0;s=o[s+4>>2]|0;Hr=oe+56|0;u=Hr;_=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(jr|0,s|0,18,0)|0;d=C;s=fo(_|0,u|0,jr|0,s|0)|0;d=fo(s|0,C|0,Dr|0,d|0)|0;o[Hr>>2]=d;o[Hr+4>>2]=C;Hr=oe+128|0;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=oe+48|0;s=Dr;jr=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(d|0,Hr|0,18,0)|0;_=C;Hr=fo(jr|0,s|0,d|0,Hr|0)|0;_=fo(Hr|0,C|0,u|0,_|0)|0;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=oe+120|0;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=oe+40|0;Hr=u;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(_|0,Dr|0,18,0)|0;jr=C;Dr=fo(d|0,Hr|0,_|0,Dr|0)|0;jr=fo(Dr|0,C|0,s|0,jr|0)|0;o[u>>2]=jr;o[u+4>>2]=C;u=oe+112|0;jr=o[u>>2]|0;u=o[u+4>>2]|0;s=oe+32|0;Dr=s;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(jr|0,u|0,18,0)|0;d=C;u=fo(_|0,Dr|0,jr|0,u|0)|0;d=fo(u|0,C|0,Hr|0,d|0)|0;o[s>>2]=d;o[s+4>>2]=C;s=oe+104|0;d=o[s>>2]|0;s=o[s+4>>2]|0;Hr=oe+24|0;u=Hr;jr=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(d|0,s|0,18,0)|0;_=C;s=fo(jr|0,u|0,d|0,s|0)|0;_=fo(s|0,C|0,Dr|0,_|0)|0;o[Hr>>2]=_;o[Hr+4>>2]=C;Hr=oe+96|0;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=oe+16|0;s=Dr;d=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(_|0,Hr|0,18,0)|0;jr=C;Hr=fo(d|0,s|0,_|0,Hr|0)|0;jr=fo(Hr|0,C|0,u|0,jr|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;Dr=oe+88|0;jr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=oe+8|0;Hr=u;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(jr|0,Dr|0,18,0)|0;d=C;Dr=fo(_|0,Hr|0,jr|0,Dr|0)|0;d=fo(Dr|0,C|0,s|0,d|0)|0;s=u;o[s>>2]=d;o[s+4>>2]=C;s=oe+80|0;d=s;Dr=o[d>>2]|0;d=o[d+4>>2]|0;jr=oe;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;_=yo(Dr|0,d|0,18,0)|0;h=C;d=fo(Hr|0,jr|0,Dr|0,d|0)|0;h=fo(d|0,C|0,_|0,h|0)|0;_=C;d=oe;o[d>>2]=h;o[d+4>>2]=_;d=s;o[d>>2]=0;o[d+4>>2]=0;d=0;do{qr=fo(_>>31>>>6|0,0,h|0,_|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(h|0,_|0,Fr|0,C|0)|0;Dr=oe+(d<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=oe+((d|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;d=d+2|0;Dr=oe+(d<<3)|0;jr=Dr;h=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;_=C;o[Dr>>2]=h;o[Dr+4>>2]=_}while(d>>>0<10);I=s;P=o[I>>2]|0;I=o[I+4>>2]|0;_=oe;h=o[_>>2]|0;_=o[_+4>>2]|0;R=yo(P|0,I|0,18,0)|0;L=C;I=fo(h|0,_|0,P|0,I|0)|0;L=fo(I|0,C|0,R|0,L|0)|0;R=C;o[s>>2]=0;o[s+4>>2]=0;s=fo(R>>31>>>6|0,0,L|0,R|0)|0;s=co(s|0,C|0,26)|0;I=C;P=po(s|0,I|0,26)|0;P=lo(L|0,R|0,P|0,C|0)|0;R=oe;o[R>>2]=P;o[R+4>>2]=C;R=u;R=fo(s|0,I|0,o[R>>2]|0,o[R+4>>2]|0)|0;I=u;o[I>>2]=R;o[I+4>>2]=C;I=Ar;R=o[I>>2]|0;I=o[I+4>>2]|0;u=xr;u=lo(R|0,I|0,o[u>>2]|0,o[u+4>>2]|0)|0;s=C;P=xr;o[P>>2]=u;o[P+4>>2]=s;P=Be;L=o[P>>2]|0;P=o[P+4>>2]|0;_=Ge;_=lo(L|0,P|0,o[_>>2]|0,o[_+4>>2]|0)|0;h=C;U=Ge;o[U>>2]=_;o[U+4>>2]=h;U=Ke;N=o[U>>2]|0;U=o[U+4>>2]|0;d=We;d=lo(N|0,U|0,o[d>>2]|0,o[d+4>>2]|0)|0;m=C;z=We;o[z>>2]=d;o[z+4>>2]=m;z=Ye;F=o[z>>2]|0;z=o[z+4>>2]|0;p=Je;p=lo(F|0,z|0,o[p>>2]|0,o[p+4>>2]|0)|0;b=C;H=Je;o[H>>2]=p;o[H+4>>2]=b;H=Xe;q=o[H>>2]|0;H=o[H+4>>2]|0;w=Qe;w=lo(q|0,H|0,o[w>>2]|0,o[w+4>>2]|0)|0;v=C;D=Qe;o[D>>2]=w;o[D+4>>2]=v;D=Ze;j=o[D>>2]|0;D=o[D+4>>2]|0;k=$e;k=lo(j|0,D|0,o[k>>2]|0,o[k+4>>2]|0)|0;g=C;B=$e;o[B>>2]=k;o[B+4>>2]=g;B=er;V=o[B>>2]|0;B=o[B+4>>2]|0;y=rr;y=lo(V|0,B|0,o[y>>2]|0,o[y+4>>2]|0)|0;A=C;K=rr;o[K>>2]=y;o[K+4>>2]=A;K=nr;G=o[K>>2]|0;K=o[K+4>>2]|0;T=ir;T=lo(G|0,K|0,o[T>>2]|0,o[T+4>>2]|0)|0;M=C;Y=ir;o[Y>>2]=T;o[Y+4>>2]=M;Y=tr;W=o[Y>>2]|0;Y=o[Y+4>>2]|0;E=or;E=lo(W|0,Y|0,o[E>>2]|0,o[E+4>>2]|0)|0;S=C;X=or;o[X>>2]=E;o[X+4>>2]=S;X=ar;J=o[X>>2]|0;X=o[X+4>>2]|0;x=ur;x=lo(J|0,X|0,o[x>>2]|0,o[x+4>>2]|0)|0;O=C;Z=ur;o[Z>>2]=x;o[Z+4>>2]=O;Z=sr;Q=Z+72|0;do{o[Z>>2]=0;Z=Z+4|0}while((Z|0)<(Q|0));s=yo(u|0,s|0,121665,0)|0;u=C;Dr=Ir;o[Dr>>2]=s;o[Dr+4>>2]=u;Dr=yo(_|0,h|0,121665,0)|0;_=_r;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(d|0,m|0,121665,0)|0;Dr=lr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(p|0,b|0,121665,0)|0;_=fr;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(w|0,v|0,121665,0)|0;Dr=cr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(k|0,g|0,121665,0)|0;_=hr;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(y|0,A|0,121665,0)|0;Dr=dr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(T|0,M|0,121665,0)|0;_=mr;o[_>>2]=Dr;o[_+4>>2]=C;_=yo(E|0,S|0,121665,0)|0;Dr=pr;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=yo(x|0,O|0,121665,0)|0;_=br;o[_>>2]=Dr;o[_+4>>2]=C;_=sr;o[_>>2]=0;o[_+4>>2]=0;_=0;do{qr=fo(u>>31>>>6|0,0,s|0,u|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(s|0,u|0,Fr|0,C|0)|0;Dr=Ir+(_<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=Ir+((_|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;_=_+2|0;Dr=Ir+(_<<3)|0;jr=Dr;s=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;u=C;o[Dr>>2]=s;o[Dr+4>>2]=u}while(_>>>0<10);u=sr;_=o[u>>2]|0;u=o[u+4>>2]|0;d=Ir;Hr=o[d>>2]|0;d=o[d+4>>2]|0;jr=yo(_|0,u|0,18,0)|0;h=C;u=fo(Hr|0,d|0,_|0,u|0)|0;h=fo(u|0,C|0,jr|0,h|0)|0;jr=C;u=sr;o[u>>2]=0;o[u+4>>2]=0;u=fo(jr>>31>>>6|0,0,h|0,jr|0)|0;u=co(u|0,C|0,26)|0;_=C;d=po(u|0,_|0,26)|0;Hr=C;s=_r;Dr=o[s>>2]|0;s=o[s+4>>2]|0;jr=fo(h|0,jr|0,R|0,I|0)|0;Hr=lo(jr|0,C|0,d|0,Hr|0)|0;d=Ir;o[d>>2]=Hr;o[d+4>>2]=C;s=fo(Dr|0,s|0,L|0,P|0)|0;_=fo(s|0,C|0,u|0,_|0)|0;u=_r;o[u>>2]=_;o[u+4>>2]=C;u=lr;u=fo(o[u>>2]|0,o[u+4>>2]|0,N|0,U|0)|0;_=lr;o[_>>2]=u;o[_+4>>2]=C;_=fr;_=fo(o[_>>2]|0,o[_+4>>2]|0,F|0,z|0)|0;u=fr;o[u>>2]=_;o[u+4>>2]=C;u=cr;u=fo(o[u>>2]|0,o[u+4>>2]|0,q|0,H|0)|0;_=cr;o[_>>2]=u;o[_+4>>2]=C;_=hr;_=fo(o[_>>2]|0,o[_+4>>2]|0,j|0,D|0)|0;u=hr;o[u>>2]=_;o[u+4>>2]=C;u=dr;u=fo(o[u>>2]|0,o[u+4>>2]|0,V|0,B|0)|0;_=dr;o[_>>2]=u;o[_+4>>2]=C;_=mr;_=fo(o[_>>2]|0,o[_+4>>2]|0,G|0,K|0)|0;u=mr;o[u>>2]=_;o[u+4>>2]=C;u=pr;u=fo(o[u>>2]|0,o[u+4>>2]|0,W|0,Y|0)|0;_=pr;o[_>>2]=u;o[_+4>>2]=C;_=br;_=fo(o[_>>2]|0,o[_+4>>2]|0,J|0,X|0)|0;u=br;o[u>>2]=_;o[u+4>>2]=C;no(ae,xr,Ir);u=ae+144|0;_=o[u>>2]|0;u=o[u+4>>2]|0;s=ae+64|0;Dr=s;d=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(_|0,u|0,18,0)|0;jr=C;u=fo(d|0,Dr|0,_|0,u|0)|0;jr=fo(u|0,C|0,Hr|0,jr|0)|0;o[s>>2]=jr;o[s+4>>2]=C;s=ae+136|0;jr=o[s>>2]|0;s=o[s+4>>2]|0;Hr=ae+56|0;u=Hr;_=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(jr|0,s|0,18,0)|0;d=C;s=fo(_|0,u|0,jr|0,s|0)|0;d=fo(s|0,C|0,Dr|0,d|0)|0;o[Hr>>2]=d;o[Hr+4>>2]=C;Hr=ae+128|0;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=ae+48|0;s=Dr;jr=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(d|0,Hr|0,18,0)|0;_=C;Hr=fo(jr|0,s|0,d|0,Hr|0)|0;_=fo(Hr|0,C|0,u|0,_|0)|0;o[Dr>>2]=_;o[Dr+4>>2]=C;Dr=ae+120|0;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=ae+40|0;Hr=u;d=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(_|0,Dr|0,18,0)|0;jr=C;Dr=fo(d|0,Hr|0,_|0,Dr|0)|0;jr=fo(Dr|0,C|0,s|0,jr|0)|0;o[u>>2]=jr;o[u+4>>2]=C;u=ae+112|0;jr=o[u>>2]|0;u=o[u+4>>2]|0;s=ae+32|0;Dr=s;_=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;Hr=yo(jr|0,u|0,18,0)|0;d=C;u=fo(_|0,Dr|0,jr|0,u|0)|0;d=fo(u|0,C|0,Hr|0,d|0)|0;o[s>>2]=d;o[s+4>>2]=C;s=ae+104|0;d=o[s>>2]|0;s=o[s+4>>2]|0;Hr=ae+24|0;u=Hr;jr=o[u>>2]|0;u=o[u+4>>2]|0;Dr=yo(d|0,s|0,18,0)|0;_=C;s=fo(jr|0,u|0,d|0,s|0)|0;_=fo(s|0,C|0,Dr|0,_|0)|0;o[Hr>>2]=_;o[Hr+4>>2]=C;Hr=ae+96|0;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;Dr=ae+16|0;s=Dr;d=o[s>>2]|0;s=o[s+4>>2]|0;u=yo(_|0,Hr|0,18,0)|0;jr=C;Hr=fo(d|0,s|0,_|0,Hr|0)|0;jr=fo(Hr|0,C|0,u|0,jr|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;Dr=ae+88|0;jr=o[Dr>>2]|0;Dr=o[Dr+4>>2]|0;u=ae+8|0;Hr=u;_=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;s=yo(jr|0,Dr|0,18,0)|0;d=C;Dr=fo(_|0,Hr|0,jr|0,Dr|0)|0;d=fo(Dr|0,C|0,s|0,d|0)|0;s=u;o[s>>2]=d;o[s+4>>2]=C;s=ae+80|0;d=s;Dr=o[d>>2]|0;d=o[d+4>>2]|0;jr=ae;Hr=o[jr>>2]|0;jr=o[jr+4>>2]|0;_=yo(Dr|0,d|0,18,0)|0;h=C;d=fo(Hr|0,jr|0,Dr|0,d|0)|0;h=fo(d|0,C|0,_|0,h|0)|0;_=C;d=ae;o[d>>2]=h;o[d+4>>2]=_;d=s;o[d>>2]=0;o[d+4>>2]=0;d=0;do{qr=fo(_>>31>>>6|0,0,h|0,_|0)|0;qr=co(qr|0,C|0,26)|0;zr=C;Fr=po(qr|0,zr|0,26)|0;Fr=lo(h|0,_|0,Fr|0,C|0)|0;Dr=ae+(d<<3)|0;o[Dr>>2]=Fr;o[Dr+4>>2]=C;Dr=ae+((d|1)<<3)|0;Fr=Dr;Fr=fo(qr|0,zr|0,o[Fr>>2]|0,o[Fr+4>>2]|0)|0;zr=C;qr=fo(zr>>31>>>7|0,0,Fr|0,zr|0)|0;qr=co(qr|0,C|0,25)|0;Hr=C;jr=po(qr|0,Hr|0,25)|0;jr=lo(Fr|0,zr|0,jr|0,C|0)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;d=d+2|0;Dr=ae+(d<<3)|0;jr=Dr;h=fo(qr|0,Hr|0,o[jr>>2]|0,o[jr+4>>2]|0)|0;_=C;o[Dr>>2]=h;o[Dr+4>>2]=_}while(d>>>0<10);Hr=s;jr=o[Hr>>2]|0;Hr=o[Hr+4>>2]|0;qr=ae;Fr=o[qr>>2]|0;qr=o[qr+4>>2]|0;Dr=yo(jr|0,Hr|0,18,0)|0;zr=C;Hr=fo(Fr|0,qr|0,jr|0,Hr|0)|0;zr=fo(Hr|0,C|0,Dr|0,zr|0)|0;Dr=C;Hr=s;o[Hr>>2]=0;o[Hr+4>>2]=0;Hr=fo(Dr>>31>>>6|0,0,zr|0,Dr|0)|0;Hr=co(Hr|0,C|0,26)|0;jr=C;qr=po(Hr|0,jr|0,26)|0;qr=lo(zr|0,Dr|0,qr|0,C|0)|0;Dr=ae;o[Dr>>2]=qr;o[Dr+4>>2]=C;Dr=u;Dr=fo(Hr|0,jr|0,o[Dr>>2]|0,o[Dr+4>>2]|0)|0;o[u>>2]=Dr;o[u+4>>2]=C;u=0;do{Fr=oe+(u<<3)|0;Nr=Fr;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;Dr=ie+(u<<3)|0;qr=Dr;jr=o[qr>>2]|0;qr=o[qr+4>>2]|0;Hr=(jr^Ur)ⅇzr=(qr^Nr)≠Ur=co(0,Hr^Ur|0,32)|0;o[Fr>>2]=Ur;o[Fr+4>>2]=C;jr=co(0,Hr^jr|0,32)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;u=u+1|0}while((u|0)!=10);u=0;do{Fr=ae+(u<<3)|0;Nr=Fr;Ur=o[Nr>>2]|0;Nr=o[Nr+4>>2]|0;Dr=te+(u<<3)|0;qr=Dr;jr=o[qr>>2]|0;qr=o[qr+4>>2]|0;Hr=(jr^Ur)ⅇzr=(qr^Nr)≠Ur=co(0,Hr^Ur|0,32)|0;o[Fr>>2]=Ur;o[Fr+4>>2]=C;jr=co(0,Hr^jr|0,32)|0;o[Dr>>2]=jr;o[Dr+4>>2]=C;u=u+1|0}while((u|0)!=10);ue=ue+1|0;if((ue|0)==8){u=l;l=ie;s=c;c=te;_=r;r=oe;h=t;t=ae;break}else{qr=ae;Hr=oe;jr=te;Dr=ie;d=$<<1&255;ae=t;t=qr;oe=r;r=Hr;te=c;c=jr;ie=l;l=Dr}}n=n+1|0}while((n|0)!=32);Z=Sr;d=r;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));Z=Cr;d=t;Q=Z+80|0;do{o[Z>>2]=o[d>>2];Z=Z+4|0;d=d+4|0}while((Z|0)<(Q|0));io(Ir,Cr);io(Er,Ir);io(Mr,Er);to(Ar,Mr,Cr);to(xr,Ar,Ir);io(Mr,xr);to(yr,Mr,Ar);io(Mr,yr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);to(kr,Mr,yr);io(Mr,kr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);to(gr,Er,kr);io(Mr,gr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);to(Mr,Er,gr);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);to(Or,Mr,kr);io(Mr,Or);io(Er,Mr);r=2;do{io(Mr,Er);io(Er,Mr);r=r+2|0}while((r|0)<50);to(Tr,Er,Or);io(Er,Tr);io(Mr,Er);r=2;do{io(Er,Mr);io(Mr,Er);r=r+2|0}while((r|0)<100);to(Er,Mr,Tr);io(Mr,Er);io(Er,Mr);r=2;do{io(Mr,Er);io(Er,Mr);r=r+2|0}while((r|0)<50);to(Mr,Er,Or);io(Er,Mr);io(Mr,Er);io(Er,Mr);io(Mr,Er);io(Er,Mr);to(Rr,Er,xr);to(Cr,Sr,Rr);r=o[Cr>>2]|0;o[Ir>>2]=r;_=Ir+4|0;o[_>>2]=o[Cr+8>>2];l=Ir+8|0;o[l>>2]=o[Cr+16>>2];c=Ir+12|0;o[c>>2]=o[Cr+24>>2];h=Ir+16|0;o[h>>2]=o[Cr+32>>2];d=Ir+20|0;o[d>>2]=o[Cr+40>>2];m=Ir+24|0;o[m>>2]=o[Cr+48>>2];p=Ir+28|0;o[p>>2]=o[Cr+56>>2];b=Ir+32|0;o[b>>2]=o[Cr+64>>2];w=Ir+36|0;o[w>>2]=o[Cr+72>>2];t=0;do{n=Ir+(t<<2)|0;u=r>>31&r;if(!(t&1)){jr=u>>26;o[n>>2]=(re(jr,-67108864)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}else{jr=u>>25;o[n>>2]=(re(jr,-33554432)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}}while((t|0)!=9);t=o[w>>2]|0;r=(t>>31&t)>>25;o[w>>2]=(re(r,-33554432)|0)+t;r=(r*19|0)+(o[Ir>>2]|0)|0;o[Ir>>2]=r;t=0;do{n=Ir+(t<<2)|0;u=r>>31&r;if(!(t&1)){jr=u>>26;o[n>>2]=(re(jr,-67108864)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}else{jr=u>>25;o[n>>2]=(re(jr,-33554432)|0)+r;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+jr|0;o[Dr>>2]=r}}while((t|0)!=9);t=o[w>>2]|0;r=(t>>31&t)>>25;o[w>>2]=(re(r,-33554432)|0)+t;r=(r*19|0)+(o[Ir>>2]|0)|0;t=(r>>31&r)>>26;r=(re(t,-67108864)|0)+r|0;o[Ir>>2]=r;o[_>>2]=t+(o[_>>2]|0);t=0;do{n=Ir+(t<<2)|0;if(!(t&1)){o[n>>2]=r&67108863;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>26)|0;o[Dr>>2]=r}else{o[n>>2]=r&33554431;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>25)|0;o[Dr>>2]=r}}while((t|0)!=9);r=o[w>>2]|0;o[w>>2]=r&33554431;r=(o[Ir>>2]|0)+((r>>25)*19|0)|0;o[Ir>>2]=r;t=0;do{n=Ir+(t<<2)|0;if(!(t&1)){o[n>>2]=r&67108863;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>26)|0;o[Dr>>2]=r}else{o[n>>2]=r&33554431;t=t+1|0;Dr=Ir+(t<<2)|0;r=(o[Dr>>2]|0)+(r>>25)|0;o[Dr>>2]=r}}while((t|0)!=9);s=o[w>>2]|0;u=s&33554431;o[w>>2]=u;s=(o[Ir>>2]|0)+((s>>25)*19|0)|0;o[Ir>>2]=s;n=1;r=~(s+-67108845>>31);do{t=o[Ir+(n<<2)>>2]|0;if(!(n&1)){t=t<<16&(t^-67108864);t=t<<8&t;t=t<<4&t;t=t<<2&t;t=t<<1&t}else{t=t<<16&(t^-33554432);t=t<<8&t;t=t<<4&t;t=t<<2&t;t=t<<1&t}r=t>>31&r;n=n+1|0}while((n|0)!=10);Or=s-(r&67108845)|0;o[Ir>>2]=Or;Er=r&67108863;Sr=r&33554431;Cr=(o[_>>2]|0)-Sr|0;Pr=(o[l>>2]|0)-Er|0;Ur=(o[c>>2]|0)-Sr|0;Fr=(o[h>>2]|0)-Er|0;zr=(o[d>>2]|0)-Sr|0;o[d>>2]=zr;jr=(o[m>>2]|0)-Er|0;Dr=(o[p>>2]|0)-Sr|0;Er=(o[b>>2]|0)-Er|0;xr=Cr<<2;o[_>>2]=xr;Rr=Pr<<3;o[l>>2]=Rr;Ir=Ur<<5;o[c>>2]=Ir;Nr=Fr<<6;o[h>>2]=Nr;qr=jr<<1;o[m>>2]=qr;Hr=Dr<<3;o[p>>2]=Hr;o[b>>2]=Er<<4;o[w>>2]=u-Sr<<6;i[e>>0]=Or;i[e+1>>0]=Or>>>8;i[e+2>>0]=Or>>>16;i[e+3>>0]=xr|Or>>>24;i[e+4>>0]=Cr>>>6;i[e+5>>0]=Cr>>>14;i[e+6>>0]=Rr|Cr>>>22;i[e+7>>0]=Pr>>>5;i[e+8>>0]=Pr>>>13;i[e+9>>0]=Ir|Pr>>>21;i[e+10>>0]=Ur>>>3;i[e+11>>0]=Ur>>>11;i[e+12>>0]=Nr|Ur>>>19;i[e+13>>0]=Fr>>>2;i[e+14>>0]=Fr>>>10;i[e+15>>0]=Fr>>>18;i[e+16>>0]=zr;i[e+17>>0]=zr>>>8;i[e+18>>0]=zr>>>16;i[e+19>>0]=zr>>>24|qr;i[e+20>>0]=jr>>>7;i[e+21>>0]=jr>>>15;i[e+22>>0]=Hr|jr>>>23;i[e+23>>0]=Dr>>>5;i[e+24>>0]=Dr>>>13;jr=o[b>>2]|0;i[e+25>>0]=jr|Dr>>>21;i[e+26>>0]=jr>>>8;i[e+27>>0]=jr>>>16;Dr=o[w>>2]|0;i[e+28>>0]=Dr|jr>>>24;i[e+29>>0]=Dr>>>8;i[e+30>>0]=Dr>>>16;i[e+31>>0]=Dr>>>24;f=Lr;return 0}function no(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0;u=co(0,o[r>>2]|0,32)|0;h=C;y=co(0,o[n>>2]|0,32)|0;h=yo(y|0,C|0,u|0,h|0)|0;u=e;o[u>>2]=h;o[u+4>>2]=C;u=co(0,o[r>>2]|0,32)|0;h=C;y=n+8|0;w=co(0,o[y>>2]|0,32)|0;h=yo(w|0,C|0,u|0,h|0)|0;u=C;w=r+8|0;b=co(0,o[w>>2]|0,32)|0;m=C;g=co(0,o[n>>2]|0,32)|0;m=yo(g|0,C|0,b|0,m|0)|0;u=fo(m|0,C|0,h|0,u|0)|0;h=e+8|0;o[h>>2]=u;o[h+4>>2]=C;h=co(0,o[w>>2]|0,31)|0;u=C;m=co(0,o[y>>2]|0,32)|0;u=yo(m|0,C|0,h|0,u|0)|0;h=C;m=co(0,o[r>>2]|0,32)|0;b=C;g=n+16|0;f=co(0,o[g>>2]|0,32)|0;b=yo(f|0,C|0,m|0,b|0)|0;h=fo(b|0,C|0,u|0,h|0)|0;u=C;b=r+16|0;m=co(0,o[b>>2]|0,32)|0;f=C;k=co(0,o[n>>2]|0,32)|0;f=yo(k|0,C|0,m|0,f|0)|0;f=fo(h|0,u|0,f|0,C|0)|0;u=e+16|0;o[u>>2]=f;o[u+4>>2]=C;u=co(0,o[w>>2]|0,32)|0;f=C;h=co(0,o[g>>2]|0,32)|0;f=yo(h|0,C|0,u|0,f|0)|0;u=C;h=co(0,o[b>>2]|0,32)|0;m=C;k=co(0,o[y>>2]|0,32)|0;m=yo(k|0,C|0,h|0,m|0)|0;u=fo(m|0,C|0,f|0,u|0)|0;f=C;m=co(0,o[r>>2]|0,32)|0;h=C;k=n+24|0;a=co(0,o[k>>2]|0,32)|0;h=yo(a|0,C|0,m|0,h|0)|0;h=fo(u|0,f|0,h|0,C|0)|0;f=C;u=r+24|0;m=co(0,o[u>>2]|0,32)|0;a=C;_=co(0,o[n>>2]|0,32)|0;a=yo(_|0,C|0,m|0,a|0)|0;a=fo(h|0,f|0,a|0,C|0)|0;f=e+24|0;o[f>>2]=a;o[f+4>>2]=C;f=co(0,o[b>>2]|0,32)|0;a=C;h=co(0,o[g>>2]|0,32)|0;a=yo(h|0,C|0,f|0,a|0)|0;f=C;h=co(0,o[w>>2]|0,32)|0;m=C;_=co(0,o[k>>2]|0,32)|0;m=yo(_|0,C|0,h|0,m|0)|0;h=C;_=co(0,o[u>>2]|0,32)|0;p=C;d=co(0,o[y>>2]|0,32)|0;p=yo(d|0,C|0,_|0,p|0)|0;h=fo(p|0,C|0,m|0,h|0)|0;h=po(h|0,C|0,1)|0;f=fo(h|0,C|0,a|0,f|0)|0;a=C;h=co(0,o[r>>2]|0,32)|0;m=C;p=n+32|0;_=co(0,o[p>>2]|0,32)|0;m=yo(_|0,C|0,h|0,m|0)|0;m=fo(f|0,a|0,m|0,C|0)|0;a=C;f=r+32|0;h=co(0,o[f>>2]|0,32)|0;_=C;d=co(0,o[n>>2]|0,32)|0;_=yo(d|0,C|0,h|0,_|0)|0;_=fo(m|0,a|0,_|0,C|0)|0;a=e+32|0;o[a>>2]=_;o[a+4>>2]=C;a=co(0,o[b>>2]|0,32)|0;_=C;m=co(0,o[k>>2]|0,32)|0;_=yo(m|0,C|0,a|0,_|0)|0;a=C;m=co(0,o[u>>2]|0,32)|0;h=C;d=co(0,o[g>>2]|0,32)|0;h=yo(d|0,C|0,m|0,h|0)|0;a=fo(h|0,C|0,_|0,a|0)|0;_=C;h=co(0,o[w>>2]|0,32)|0;m=C;d=co(0,o[p>>2]|0,32)|0;m=yo(d|0,C|0,h|0,m|0)|0;m=fo(a|0,_|0,m|0,C|0)|0;_=C;a=co(0,o[f>>2]|0,32)|0;h=C;d=co(0,o[y>>2]|0,32)|0;h=yo(d|0,C|0,a|0,h|0)|0;h=fo(m|0,_|0,h|0,C|0)|0;_=C;m=co(0,o[r>>2]|0,32)|0;a=C;d=n+40|0;v=co(0,o[d>>2]|0,32)|0;a=yo(v|0,C|0,m|0,a|0)|0;a=fo(h|0,_|0,a|0,C|0)|0;_=C;h=r+40|0;m=co(0,o[h>>2]|0,32)|0;v=C;l=co(0,o[n>>2]|0,32)|0;v=yo(l|0,C|0,m|0,v|0)|0;v=fo(a|0,_|0,v|0,C|0)|0;_=e+40|0;o[_>>2]=v;o[_+4>>2]=C;_=co(0,o[u>>2]|0,32)|0;v=C;a=co(0,o[k>>2]|0,32)|0;v=yo(a|0,C|0,_|0,v|0)|0;_=C;a=co(0,o[w>>2]|0,32)|0;m=C;l=co(0,o[d>>2]|0,32)|0;m=yo(l|0,C|0,a|0,m|0)|0;_=fo(m|0,C|0,v|0,_|0)|0;v=C;m=co(0,o[h>>2]|0,32)|0;a=C;l=co(0,o[y>>2]|0,32)|0;a=yo(l|0,C|0,m|0,a|0)|0;a=fo(_|0,v|0,a|0,C|0)|0;a=po(a|0,C|0,1)|0;v=C;_=co(0,o[b>>2]|0,32)|0;m=C;l=co(0,o[p>>2]|0,32)|0;m=yo(l|0,C|0,_|0,m|0)|0;m=fo(a|0,v|0,m|0,C|0)|0;v=C;a=co(0,o[f>>2]|0,32)|0;_=C;l=co(0,o[g>>2]|0,32)|0;_=yo(l|0,C|0,a|0,_|0)|0;_=fo(m|0,v|0,_|0,C|0)|0;v=C;m=co(0,o[r>>2]|0,32)|0;a=C;l=n+48|0;A=co(0,o[l>>2]|0,32)|0;a=yo(A|0,C|0,m|0,a|0)|0;a=fo(_|0,v|0,a|0,C|0)|0;v=C;_=r+48|0;m=co(0,o[_>>2]|0,32)|0;A=C;c=co(0,o[n>>2]|0,32)|0;A=yo(c|0,C|0,m|0,A|0)|0;A=fo(a|0,v|0,A|0,C|0)|0;v=e+48|0;o[v>>2]=A;o[v+4>>2]=C;v=co(0,o[u>>2]|0,32)|0;A=C;a=co(0,o[p>>2]|0,32)|0;A=yo(a|0,C|0,v|0,A|0)|0;v=C;a=co(0,o[f>>2]|0,32)|0;m=C;c=co(0,o[k>>2]|0,32)|0;m=yo(c|0,C|0,a|0,m|0)|0;v=fo(m|0,C|0,A|0,v|0)|0;A=C;m=co(0,o[b>>2]|0,32)|0;a=C;c=co(0,o[d>>2]|0,32)|0;a=yo(c|0,C|0,m|0,a|0)|0;a=fo(v|0,A|0,a|0,C|0)|0;A=C;v=co(0,o[h>>2]|0,32)|0;m=C;c=co(0,o[g>>2]|0,32)|0;m=yo(c|0,C|0,v|0,m|0)|0;m=fo(a|0,A|0,m|0,C|0)|0;A=C;a=co(0,o[w>>2]|0,32)|0;v=C;c=co(0,o[l>>2]|0,32)|0;v=yo(c|0,C|0,a|0,v|0)|0;v=fo(m|0,A|0,v|0,C|0)|0;A=C;m=co(0,o[_>>2]|0,32)|0;a=C;c=co(0,o[y>>2]|0,32)|0;a=yo(c|0,C|0,m|0,a|0)|0;a=fo(v|0,A|0,a|0,C|0)|0;A=C;v=co(0,o[r>>2]|0,32)|0;m=C;c=n+56|0;T=co(0,o[c>>2]|0,32)|0;m=yo(T|0,C|0,v|0,m|0)|0;m=fo(a|0,A|0,m|0,C|0)|0;A=C;a=r+56|0;v=co(0,o[a>>2]|0,32)|0;T=C;s=co(0,o[n>>2]|0,32)|0;T=yo(s|0,C|0,v|0,T|0)|0;T=fo(m|0,A|0,T|0,C|0)|0;A=e+56|0;o[A>>2]=T;o[A+4>>2]=C;A=co(0,o[f>>2]|0,32)|0;T=C;m=co(0,o[p>>2]|0,32)|0;T=yo(m|0,C|0,A|0,T|0)|0;A=C;m=co(0,o[u>>2]|0,32)|0;v=C;s=co(0,o[d>>2]|0,32)|0;v=yo(s|0,C|0,m|0,v|0)|0;m=C;s=co(0,o[h>>2]|0,32)|0;t=C;i=co(0,o[k>>2]|0,32)|0;t=yo(i|0,C|0,s|0,t|0)|0;m=fo(t|0,C|0,v|0,m|0)|0;v=C;t=co(0,o[w>>2]|0,32)|0;s=C;i=co(0,o[c>>2]|0,32)|0;s=yo(i|0,C|0,t|0,s|0)|0;s=fo(m|0,v|0,s|0,C|0)|0;v=C;m=co(0,o[a>>2]|0,32)|0;t=C;i=co(0,o[y>>2]|0,32)|0;t=yo(i|0,C|0,m|0,t|0)|0;t=fo(s|0,v|0,t|0,C|0)|0;t=po(t|0,C|0,1)|0;A=fo(t|0,C|0,T|0,A|0)|0;T=C;t=co(0,o[b>>2]|0,32)|0;v=C;s=co(0,o[l>>2]|0,32)|0;v=yo(s|0,C|0,t|0,v|0)|0;v=fo(A|0,T|0,v|0,C|0)|0;T=C;A=co(0,o[_>>2]|0,32)|0;t=C;s=co(0,o[g>>2]|0,32)|0;t=yo(s|0,C|0,A|0,t|0)|0;t=fo(v|0,T|0,t|0,C|0)|0;T=C;v=co(0,o[r>>2]|0,32)|0;A=C;s=n+64|0;m=co(0,o[s>>2]|0,32)|0;A=yo(m|0,C|0,v|0,A|0)|0;A=fo(t|0,T|0,A|0,C|0)|0;T=C;t=r+64|0;v=co(0,o[t>>2]|0,32)|0;m=C;i=co(0,o[n>>2]|0,32)|0;m=yo(i|0,C|0,v|0,m|0)|0;m=fo(A|0,T|0,m|0,C|0)|0;T=e+64|0;o[T>>2]=m;o[T+4>>2]=C;T=co(0,o[f>>2]|0,32)|0;m=C;A=co(0,o[d>>2]|0,32)|0;m=yo(A|0,C|0,T|0,m|0)|0;T=C;A=co(0,o[h>>2]|0,32)|0;v=C;i=co(0,o[p>>2]|0,32)|0;v=yo(i|0,C|0,A|0,v|0)|0;T=fo(v|0,C|0,m|0,T|0)|0;m=C;v=co(0,o[u>>2]|0,32)|0;A=C;i=co(0,o[l>>2]|0,32)|0;A=yo(i|0,C|0,v|0,A|0)|0;A=fo(T|0,m|0,A|0,C|0)|0;m=C;T=co(0,o[_>>2]|0,32)|0;v=C;i=co(0,o[k>>2]|0,32)|0;v=yo(i|0,C|0,T|0,v|0)|0;v=fo(A|0,m|0,v|0,C|0)|0;m=C;A=co(0,o[b>>2]|0,32)|0;T=C;i=co(0,o[c>>2]|0,32)|0;T=yo(i|0,C|0,A|0,T|0)|0;T=fo(v|0,m|0,T|0,C|0)|0;m=C;v=co(0,o[a>>2]|0,32)|0;A=C;i=co(0,o[g>>2]|0,32)|0;A=yo(i|0,C|0,v|0,A|0)|0;A=fo(T|0,m|0,A|0,C|0)|0;m=C;T=co(0,o[w>>2]|0,32)|0;v=C;i=co(0,o[s>>2]|0,32)|0;v=yo(i|0,C|0,T|0,v|0)|0;v=fo(A|0,m|0,v|0,C|0)|0;m=C;A=co(0,o[t>>2]|0,32)|0;T=C;i=co(0,o[y>>2]|0,32)|0;T=yo(i|0,C|0,A|0,T|0)|0;T=fo(v|0,m|0,T|0,C|0)|0;m=C;v=co(0,o[r>>2]|0,32)|0;A=C;i=n+72|0;M=co(0,o[i>>2]|0,32)|0;A=yo(M|0,C|0,v|0,A|0)|0;A=fo(T|0,m|0,A|0,C|0)|0;m=C;r=r+72|0;T=co(0,o[r>>2]|0,32)|0;v=C;n=co(0,o[n>>2]|0,32)|0;v=yo(n|0,C|0,T|0,v|0)|0;v=fo(A|0,m|0,v|0,C|0)|0;n=e+72|0;o[n>>2]=v;o[n+4>>2]=C;n=co(0,o[h>>2]|0,32)|0;v=C;m=co(0,o[d>>2]|0,32)|0;v=yo(m|0,C|0,n|0,v|0)|0;n=C;m=co(0,o[u>>2]|0,32)|0;A=C;T=co(0,o[c>>2]|0,32)|0;A=yo(T|0,C|0,m|0,A|0)|0;n=fo(A|0,C|0,v|0,n|0)|0;v=C;A=co(0,o[a>>2]|0,32)|0;m=C;T=co(0,o[k>>2]|0,32)|0;m=yo(T|0,C|0,A|0,m|0)|0;m=fo(n|0,v|0,m|0,C|0)|0;v=C;n=co(0,o[w>>2]|0,32)|0;w=C;A=co(0,o[i>>2]|0,32)|0;w=yo(A|0,C|0,n|0,w|0)|0;w=fo(m|0,v|0,w|0,C|0)|0;v=C;m=co(0,o[r>>2]|0,32)|0;n=C;y=co(0,o[y>>2]|0,32)|0;n=yo(y|0,C|0,m|0,n|0)|0;n=fo(w|0,v|0,n|0,C|0)|0;n=po(n|0,C|0,1)|0;v=C;w=co(0,o[f>>2]|0,32)|0;m=C;y=co(0,o[l>>2]|0,32)|0;m=yo(y|0,C|0,w|0,m|0)|0;m=fo(n|0,v|0,m|0,C|0)|0;v=C;n=co(0,o[_>>2]|0,32)|0;w=C;y=co(0,o[p>>2]|0,32)|0;w=yo(y|0,C|0,n|0,w|0)|0;w=fo(m|0,v|0,w|0,C|0)|0;v=C;m=co(0,o[b>>2]|0,32)|0;n=C;y=co(0,o[s>>2]|0,32)|0;n=yo(y|0,C|0,m|0,n|0)|0;n=fo(w|0,v|0,n|0,C|0)|0;v=C;w=co(0,o[t>>2]|0,32)|0;m=C;y=co(0,o[g>>2]|0,32)|0;m=yo(y|0,C|0,w|0,m|0)|0;m=fo(n|0,v|0,m|0,C|0)|0;v=e+80|0;o[v>>2]=m;o[v+4>>2]=C;v=co(0,o[h>>2]|0,32)|0;m=C;n=co(0,o[l>>2]|0,32)|0;m=yo(n|0,C|0,v|0,m|0)|0;v=C;n=co(0,o[_>>2]|0,32)|0;w=C;y=co(0,o[d>>2]|0,32)|0;w=yo(y|0,C|0,n|0,w|0)|0;v=fo(w|0,C|0,m|0,v|0)|0;m=C;w=co(0,o[f>>2]|0,32)|0;n=C;y=co(0,o[c>>2]|0,32)|0;n=yo(y|0,C|0,w|0,n|0)|0;n=fo(v|0,m|0,n|0,C|0)|0;m=C;v=co(0,o[a>>2]|0,32)|0;w=C;y=co(0,o[p>>2]|0,32)|0;w=yo(y|0,C|0,v|0,w|0)|0;w=fo(n|0,m|0,w|0,C|0)|0;m=C;n=co(0,o[u>>2]|0,32)|0;v=C;y=co(0,o[s>>2]|0,32)|0;v=yo(y|0,C|0,n|0,v|0)|0;v=fo(w|0,m|0,v|0,C|0)|0;m=C;w=co(0,o[t>>2]|0,32)|0;n=C;y=co(0,o[k>>2]|0,32)|0;n=yo(y|0,C|0,w|0,n|0)|0;n=fo(v|0,m|0,n|0,C|0)|0;m=C;b=co(0,o[b>>2]|0,32)|0;v=C;w=co(0,o[i>>2]|0,32)|0;v=yo(w|0,C|0,b|0,v|0)|0;v=fo(n|0,m|0,v|0,C|0)|0;m=C;n=co(0,o[r>>2]|0,32)|0;b=C;g=co(0,o[g>>2]|0,32)|0;b=yo(g|0,C|0,n|0,b|0)|0;b=fo(v|0,m|0,b|0,C|0)|0;m=e+88|0;o[m>>2]=b;o[m+4>>2]=C;m=co(0,o[_>>2]|0,32)|0;b=C;v=co(0,o[l>>2]|0,32)|0;b=yo(v|0,C|0,m|0,b|0)|0;m=C;v=co(0,o[h>>2]|0,32)|0;n=C;g=co(0,o[c>>2]|0,32)|0;n=yo(g|0,C|0,v|0,n|0)|0;v=C;g=co(0,o[a>>2]|0,32)|0;w=C;y=co(0,o[d>>2]|0,32)|0;w=yo(y|0,C|0,g|0,w|0)|0;v=fo(w|0,C|0,n|0,v|0)|0;n=C;u=co(0,o[u>>2]|0,32)|0;w=C;g=co(0,o[i>>2]|0,32)|0;w=yo(g|0,C|0,u|0,w|0)|0;w=fo(v|0,n|0,w|0,C|0)|0;n=C;v=co(0,o[r>>2]|0,32)|0;u=C;k=co(0,o[k>>2]|0,32)|0;u=yo(k|0,C|0,v|0,u|0)|0;u=fo(w|0,n|0,u|0,C|0)|0;u=po(u|0,C|0,1)|0;m=fo(u|0,C|0,b|0,m|0)|0;b=C;u=co(0,o[f>>2]|0,32)|0;n=C;w=co(0,o[s>>2]|0,32)|0;n=yo(w|0,C|0,u|0,n|0)|0;n=fo(m|0,b|0,n|0,C|0)|0;b=C;m=co(0,o[t>>2]|0,32)|0;u=C;w=co(0,o[p>>2]|0,32)|0;u=yo(w|0,C|0,m|0,u|0)|0;u=fo(n|0,b|0,u|0,C|0)|0;b=e+96|0;o[b>>2]=u;o[b+4>>2]=C;b=co(0,o[_>>2]|0,32)|0;u=C;n=co(0,o[c>>2]|0,32)|0;u=yo(n|0,C|0,b|0,u|0)|0;b=C;n=co(0,o[a>>2]|0,32)|0;m=C;w=co(0,o[l>>2]|0,32)|0;m=yo(w|0,C|0,n|0,m|0)|0;b=fo(m|0,C|0,u|0,b|0)|0;u=C;m=co(0,o[h>>2]|0,32)|0;n=C;w=co(0,o[s>>2]|0,32)|0;n=yo(w|0,C|0,m|0,n|0)|0;n=fo(b|0,u|0,n|0,C|0)|0;u=C;b=co(0,o[t>>2]|0,32)|0;m=C;w=co(0,o[d>>2]|0,32)|0;m=yo(w|0,C|0,b|0,m|0)|0;m=fo(n|0,u|0,m|0,C|0)|0;u=C;f=co(0,o[f>>2]|0,32)|0;n=C;b=co(0,o[i>>2]|0,32)|0;n=yo(b|0,C|0,f|0,n|0)|0;n=fo(m|0,u|0,n|0,C|0)|0;u=C;m=co(0,o[r>>2]|0,32)|0;f=C;p=co(0,o[p>>2]|0,32)|0;f=yo(p|0,C|0,m|0,f|0)|0;f=fo(n|0,u|0,f|0,C|0)|0;u=e+104|0;o[u>>2]=f;o[u+4>>2]=C;u=co(0,o[a>>2]|0,32)|0;f=C;n=co(0,o[c>>2]|0,32)|0;f=yo(n|0,C|0,u|0,f|0)|0;u=C;n=co(0,o[h>>2]|0,32)|0;h=C;m=co(0,o[i>>2]|0,32)|0;h=yo(m|0,C|0,n|0,h|0)|0;u=fo(h|0,C|0,f|0,u|0)|0;f=C;h=co(0,o[r>>2]|0,32)|0;n=C;d=co(0,o[d>>2]|0,32)|0;n=yo(d|0,C|0,h|0,n|0)|0;n=fo(u|0,f|0,n|0,C|0)|0;n=po(n|0,C|0,1)|0;f=C;u=co(0,o[_>>2]|0,32)|0;h=C;d=co(0,o[s>>2]|0,32)|0;h=yo(d|0,C|0,u|0,h|0)|0;h=fo(n|0,f|0,h|0,C|0)|0;f=C;n=co(0,o[t>>2]|0,32)|0;u=C;d=co(0,o[l>>2]|0,32)|0;u=yo(d|0,C|0,n|0,u|0)|0;u=fo(h|0,f|0,u|0,C|0)|0;f=e+112|0;o[f>>2]=u;o[f+4>>2]=C;f=co(0,o[a>>2]|0,32)|0;u=C;h=co(0,o[s>>2]|0,32)|0;u=yo(h|0,C|0,f|0,u|0)|0;f=C;h=co(0,o[t>>2]|0,32)|0;n=C;d=co(0,o[c>>2]|0,32)|0;n=yo(d|0,C|0,h|0,n|0)|0;f=fo(n|0,C|0,u|0,f|0)|0;u=C;n=co(0,o[_>>2]|0,32)|0;_=C;h=co(0,o[i>>2]|0,32)|0;_=yo(h|0,C|0,n|0,_|0)|0;_=fo(f|0,u|0,_|0,C|0)|0;u=C;f=co(0,o[r>>2]|0,32)|0;n=C;l=co(0,o[l>>2]|0,32)|0;n=yo(l|0,C|0,f|0,n|0)|0;n=fo(_|0,u|0,n|0,C|0)|0;u=e+120|0;o[u>>2]=n;o[u+4>>2]=C;u=co(0,o[t>>2]|0,32)|0;n=C;_=co(0,o[s>>2]|0,32)|0;n=yo(_|0,C|0,u|0,n|0)|0;u=C;a=co(0,o[a>>2]|0,32)|0;_=C;f=co(0,o[i>>2]|0,32)|0;_=yo(f|0,C|0,a|0,_|0)|0;a=C;f=co(0,o[r>>2]|0,32)|0;l=C;c=co(0,o[c>>2]|0,32)|0;l=yo(c|0,C|0,f|0,l|0)|0;a=fo(l|0,C|0,_|0,a|0)|0;a=po(a|0,C|0,1)|0;u=fo(a|0,C|0,n|0,u|0)|0;n=e+128|0;o[n>>2]=u;o[n+4>>2]=C;t=co(0,o[t>>2]|0,32)|0;n=C;u=co(0,o[i>>2]|0,32)|0;n=yo(u|0,C|0,t|0,n|0)|0;t=C;u=co(0,o[r>>2]|0,32)|0;a=C;s=co(0,o[s>>2]|0,32)|0;a=yo(s|0,C|0,u|0,a|0)|0;t=fo(a|0,C|0,n|0,t|0)|0;n=e+136|0;o[n>>2]=t;o[n+4>>2]=C;n=co(0,o[r>>2]|0,31)|0;r=C;i=co(0,o[i>>2]|0,32)|0;r=yo(i|0,C|0,n|0,r|0)|0;e=e+144|0;o[e>>2]=r;o[e+4>>2]=C;return}function io(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,I=0,L=0,P=0,N=0,U=0,F=0,z=0,q=0,H=0,j=0,D=0,V=0;s=f;f=f+160|0;n=s;k=o[r>>2]|0;V=co(0,k|0,32)|0;q=C;M=yo(V|0,q|0,V|0,q|0)|0;O=n;o[O>>2]=M;o[O+4>>2]=C;k=co(0,k|0,31)|0;O=C;M=r+8|0;R=o[M>>2]|0;x=co(0,R|0,32)|0;A=C;T=yo(x|0,A|0,k|0,O|0)|0;u=n+8|0;i=u;o[i>>2]=T;o[i+4>>2]=C;i=yo(x|0,A|0,x|0,A|0)|0;T=C;l=r+16|0;c=co(0,o[l>>2]|0,32)|0;L=C;p=yo(c|0,L|0,V|0,q|0)|0;T=fo(p|0,C|0,i|0,T|0)|0;T=po(T|0,C|0,1)|0;i=n+16|0;p=i;o[p>>2]=T;o[p+4>>2]=C;p=yo(c|0,L|0,x|0,A|0)|0;T=C;I=r+24|0;U=co(0,o[I>>2]|0,32)|0;H=C;v=yo(U|0,H|0,V|0,q|0)|0;T=fo(v|0,C|0,p|0,T|0)|0;T=po(T|0,C|0,1)|0;p=n+24|0;v=p;o[v>>2]=T;o[v+4>>2]=C;v=yo(c|0,L|0,c|0,L|0)|0;T=C;t=co(0,R|0,30)|0;t=yo(U|0,H|0,t|0,C|0)|0;T=fo(t|0,C|0,v|0,T|0)|0;v=C;t=r+32|0;b=co(0,o[t>>2]|0,32)|0;_=C;O=yo(b|0,_|0,k|0,O|0)|0;O=fo(T|0,v|0,O|0,C|0)|0;v=n+32|0;T=v;o[T>>2]=O;o[T+4>>2]=C;T=yo(U|0,H|0,c|0,L|0)|0;O=C;k=yo(b|0,_|0,x|0,A|0)|0;O=fo(k|0,C|0,T|0,O|0)|0;T=C;k=r+40|0;g=co(0,o[k>>2]|0,32)|0;a=C;z=yo(g|0,a|0,V|0,q|0)|0;z=fo(O|0,T|0,z|0,C|0)|0;z=po(z|0,C|0,1)|0;T=n+40|0;O=T;o[O>>2]=z;o[O+4>>2]=C;O=yo(U|0,H|0,U|0,H|0)|0;z=C;S=yo(b|0,_|0,c|0,L|0)|0;z=fo(S|0,C|0,O|0,z|0)|0;O=C;S=r+48|0;m=co(0,o[S>>2]|0,32)|0;d=C;N=yo(m|0,d|0,V|0,q|0)|0;N=fo(z|0,O|0,N|0,C|0)|0;O=C;R=co(0,R|0,31)|0;R=yo(g|0,a|0,R|0,C|0)|0;R=fo(N|0,O|0,R|0,C|0)|0;R=po(R|0,C|0,1)|0;O=n+48|0;N=O;o[N>>2]=R;o[N+4>>2]=C;N=yo(b|0,_|0,U|0,H|0)|0;R=C;z=yo(g|0,a|0,c|0,L|0)|0;R=fo(z|0,C|0,N|0,R|0)|0;N=C;z=yo(m|0,d|0,x|0,A|0)|0;z=fo(R|0,N|0,z|0,C|0)|0;N=C;R=r+56|0;w=co(0,o[R>>2]|0,32)|0;h=C;E=yo(w|0,h|0,V|0,q|0)|0;E=fo(z|0,N|0,E|0,C|0)|0;E=po(E|0,C|0,1)|0;N=n+56|0;z=N;o[z>>2]=E;o[z+4>>2]=C;z=yo(b|0,_|0,b|0,_|0)|0;E=C;j=yo(m|0,d|0,c|0,L|0)|0;D=C;F=r+64|0;P=co(0,o[F>>2]|0,32)|0;y=C;q=yo(P|0,y|0,V|0,q|0)|0;D=fo(q|0,C|0,j|0,D|0)|0;j=C;A=yo(w|0,h|0,x|0,A|0)|0;x=C;q=yo(g|0,a|0,U|0,H|0)|0;x=fo(q|0,C|0,A|0,x|0)|0;x=po(x|0,C|0,1)|0;x=fo(D|0,j|0,x|0,C|0)|0;x=po(x|0,C|0,1)|0;E=fo(x|0,C|0,z|0,E|0)|0;z=n+64|0;x=z;o[x>>2]=E;o[x+4>>2]=C;x=yo(g|0,a|0,b|0,_|0)|0;E=C;H=yo(m|0,d|0,U|0,H|0)|0;E=fo(H|0,C|0,x|0,E|0)|0;x=C;L=yo(w|0,h|0,c|0,L|0)|0;L=fo(E|0,x|0,L|0,C|0)|0;x=C;M=co(0,o[M>>2]|0,32)|0;E=C;c=yo(P|0,y|0,M|0,E|0)|0;c=fo(L|0,x|0,c|0,C|0)|0;x=C;L=co(0,o[r>>2]|0,32)|0;H=C;U=o[r+72>>2]|0;j=co(0,U|0,32)|0;D=C;H=yo(j|0,D|0,L|0,H|0)|0;H=fo(c|0,x|0,H|0,C|0)|0;H=po(H|0,C|0,1)|0;r=n+72|0;o[r>>2]=H;o[r+4>>2]=C;r=yo(g|0,a|0,g|0,a|0)|0;H=C;_=yo(m|0,d|0,b|0,_|0)|0;H=fo(_|0,C|0,r|0,H|0)|0;r=C;l=co(0,o[l>>2]|0,32)|0;_=C;b=yo(P|0,y|0,l|0,_|0)|0;b=fo(H|0,r|0,b|0,C|0)|0;r=C;I=co(0,o[I>>2]|0,32)|0;H=C;x=yo(w|0,h|0,I|0,H|0)|0;c=C;E=yo(j|0,D|0,M|0,E|0)|0;c=fo(E|0,C|0,x|0,c|0)|0;c=po(c|0,C|0,1)|0;c=fo(b|0,r|0,c|0,C|0)|0;c=po(c|0,C|0,1)|0;r=n+80|0;b=r;o[b>>2]=c;o[b+4>>2]=C;a=yo(m|0,d|0,g|0,a|0)|0;g=C;t=co(0,o[t>>2]|0,32)|0;b=C;c=yo(w|0,h|0,t|0,b|0)|0;g=fo(c|0,C|0,a|0,g|0)|0;a=C;c=yo(P|0,y|0,I|0,H|0)|0;c=fo(g|0,a|0,c|0,C|0)|0;a=C;_=yo(j|0,D|0,l|0,_|0)|0;_=fo(c|0,a|0,_|0,C|0)|0;a=C;c=po(_|0,a|0,1)|0;l=C;g=n+88|0;o[g>>2]=c;o[g+4>>2]=l;d=yo(m|0,d|0,m|0,d|0)|0;m=C;g=yo(P|0,y|0,t|0,b|0)|0;x=C;k=o[k>>2]|0;E=co(0,k|0,32)|0;M=C;L=yo(w|0,h|0,E|0,M|0)|0;A=C;H=yo(j|0,D|0,I|0,H|0)|0;A=fo(H|0,C|0,L|0,A|0)|0;A=po(A|0,C|0,1)|0;x=fo(A|0,C|0,g|0,x|0)|0;x=po(x|0,C|0,1)|0;m=fo(x|0,C|0,d|0,m|0)|0;d=C;x=n+96|0;o[x>>2]=m;o[x+4>>2]=d;S=co(0,o[S>>2]|0,32)|0;x=C;h=yo(w|0,h|0,S|0,x|0)|0;w=C;M=yo(P|0,y|0,E|0,M|0)|0;w=fo(M|0,C|0,h|0,w|0)|0;h=C;b=yo(j|0,D|0,t|0,b|0)|0;b=fo(w|0,h|0,b|0,C|0)|0;h=C;w=po(b|0,h|0,1)|0;t=C;M=n+104|0;o[M>>2]=w;o[M+4>>2]=t;R=o[R>>2]|0;M=co(0,R|0,32)|0;E=C;g=yo(M|0,E|0,M|0,E|0)|0;A=C;y=yo(P|0,y|0,S|0,x|0)|0;A=fo(y|0,C|0,g|0,A|0)|0;g=C;k=co(0,k|0,31)|0;k=yo(j|0,D|0,k|0,C|0)|0;k=fo(A|0,g|0,k|0,C|0)|0;g=C;A=po(k|0,g|0,1)|0;y=C;P=n+112|0;o[P>>2]=A;o[P+4>>2]=y;F=o[F>>2]|0;P=co(0,F|0,32)|0;L=C;E=yo(P|0,L|0,M|0,E|0)|0;M=C;x=yo(j|0,D|0,S|0,x|0)|0;M=fo(x|0,C|0,E|0,M|0)|0;E=C;x=po(M|0,E|0,1)|0;S=C;H=n+120|0;o[H>>2]=x;o[H+4>>2]=S;L=yo(P|0,L|0,P|0,L|0)|0;P=C;R=co(0,R|0,30)|0;R=yo(j|0,D|0,R|0,C|0)|0;P=fo(R|0,C|0,L|0,P|0)|0;L=C;R=n+128|0;o[R>>2]=P;o[R+4>>2]=L;F=co(0,F|0,31)|0;F=yo(j|0,D|0,F|0,C|0)|0;R=C;H=n+136|0;o[H>>2]=F;o[H+4>>2]=R;U=co(0,U|0,31)|0;D=yo(U|0,C|0,j|0,D|0)|0;j=C;U=n+144|0;o[U>>2]=D;o[U+4>>2]=j;U=z;H=o[U>>2]|0;U=o[U+4>>2]|0;I=yo(D|0,j|0,18,0)|0;q=C;U=fo(D|0,j|0,H|0,U|0)|0;q=fo(U|0,C|0,I|0,q|0)|0;o[z>>2]=q;o[z+4>>2]=C;z=N;q=o[z>>2]|0;z=o[z+4>>2]|0;I=yo(F|0,R|0,18,0)|0;U=C;R=fo(q|0,z|0,F|0,R|0)|0;U=fo(R|0,C|0,I|0,U|0)|0;o[N>>2]=U;o[N+4>>2]=C;N=O;U=o[N>>2]|0;N=o[N+4>>2]|0;I=yo(P|0,L|0,18,0)|0;R=C;L=fo(U|0,N|0,P|0,L|0)|0;R=fo(L|0,C|0,I|0,R|0)|0;o[O>>2]=R;o[O+4>>2]=C;O=T;R=o[O>>2]|0;O=o[O+4>>2]|0;E=yo(M|0,E|0,36,0)|0;M=C;S=fo(R|0,O|0,x|0,S|0)|0;M=fo(S|0,C|0,E|0,M|0)|0;o[T>>2]=M;o[T+4>>2]=C;T=v;M=o[T>>2]|0;T=o[T+4>>2]|0;g=yo(k|0,g|0,36,0)|0;k=C;y=fo(M|0,T|0,A|0,y|0)|0;k=fo(y|0,C|0,g|0,k|0)|0;o[v>>2]=k;o[v+4>>2]=C;v=p;k=o[v>>2]|0;v=o[v+4>>2]|0;h=yo(b|0,h|0,36,0)|0;b=C;t=fo(k|0,v|0,w|0,t|0)|0;b=fo(t|0,C|0,h|0,b|0)|0;o[p>>2]=b;o[p+4>>2]=C;p=i;b=o[p>>2]|0;p=o[p+4>>2]|0;h=yo(m|0,d|0,18,0)|0;t=C;d=fo(b|0,p|0,m|0,d|0)|0;t=fo(d|0,C|0,h|0,t|0)|0;o[i>>2]=t;o[i+4>>2]=C;i=u;t=o[i>>2]|0;i=o[i+4>>2]|0;a=yo(_|0,a|0,36,0)|0;_=C;l=fo(t|0,i|0,c|0,l|0)|0;_=fo(l|0,C|0,a|0,_|0)|0;a=u;o[a>>2]=_;o[a+4>>2]=C;a=r;_=o[a>>2]|0;a=o[a+4>>2]|0;l=n;c=o[l>>2]|0;l=o[l+4>>2]|0;i=yo(_|0,a|0,18,0)|0;t=C;a=fo(c|0,l|0,_|0,a|0)|0;t=fo(a|0,C|0,i|0,t|0)|0;i=C;a=n;o[a>>2]=t;o[a+4>>2]=i;a=r;o[a>>2]=0;o[a+4>>2]=0;a=0;do{H=fo(i>>31>>>6|0,0,t|0,i|0)|0;H=co(H|0,C|0,26)|0;q=C;z=po(H|0,q|0,26)|0;z=lo(t|0,i|0,z|0,C|0)|0;V=n+(a<<3)|0;o[V>>2]=z;o[V+4>>2]=C;V=n+((a|1)<<3)|0;z=V;z=fo(H|0,q|0,o[z>>2]|0,o[z+4>>2]|0)|0;q=C;H=fo(q>>31>>>7|0,0,z|0,q|0)|0;H=co(H|0,C|0,25)|0;j=C;D=po(H|0,j|0,25)|0;D=lo(z|0,q|0,D|0,C|0)|0;o[V>>2]=D;o[V+4>>2]=C;a=a+2|0;V=n+(a<<3)|0;D=V;t=fo(H|0,j|0,o[D>>2]|0,o[D+4>>2]|0)|0;i=C;o[V>>2]=t;o[V+4>>2]=i}while(a>>>0<10);D=r;j=o[D>>2]|0;D=o[D+4>>2]|0;q=n;z=o[q>>2]|0;q=o[q+4>>2]|0;V=yo(j|0,D|0,18,0)|0;H=C;D=fo(z|0,q|0,j|0,D|0)|0;H=fo(D|0,C|0,V|0,H|0)|0;V=C;D=r;o[D>>2]=0;o[D+4>>2]=0;D=fo(V>>31>>>6|0,0,H|0,V|0)|0;D=co(D|0,C|0,26)|0;r=C;j=po(D|0,r|0,26)|0;j=lo(H|0,V|0,j|0,C|0)|0;V=n;o[V>>2]=j;o[V+4>>2]=C;V=u;V=fo(D|0,r|0,o[V>>2]|0,o[V+4>>2]|0)|0;r=u;o[r>>2]=V;o[r+4>>2]=C;r=e+80|0;do{o[e>>2]=o[n>>2];e=e+4|0;n=n+4|0}while((e|0)<(r|0));f=s;return}function to(e,r,n){e=e|0;r=r|0;n=n|0;var i=0,t=0,a=0,u=0,s=0,_=0,l=0,c=0,h=0,d=0,m=0;s=f;f=f+160|0;i=s;no(i,r,n);r=i+144|0;t=o[r>>2]|0;r=o[r+4>>2]|0;n=i+64|0;_=n;u=o[_>>2]|0;_=o[_+4>>2]|0;c=yo(t|0,r|0,18,0)|0;l=C;r=fo(u|0,_|0,t|0,r|0)|0;l=fo(r|0,C|0,c|0,l|0)|0;o[n>>2]=l;o[n+4>>2]=C;n=i+136|0;l=o[n>>2]|0;n=o[n+4>>2]|0;c=i+56|0;r=c;t=o[r>>2]|0;r=o[r+4>>2]|0;_=yo(l|0,n|0,18,0)|0;u=C;n=fo(t|0,r|0,l|0,n|0)|0;u=fo(n|0,C|0,_|0,u|0)|0;o[c>>2]=u;o[c+4>>2]=C;c=i+128|0;u=o[c>>2]|0;c=o[c+4>>2]|0;_=i+48|0;n=_;l=o[n>>2]|0;n=o[n+4>>2]|0;r=yo(u|0,c|0,18,0)|0;t=C;c=fo(l|0,n|0,u|0,c|0)|0;t=fo(c|0,C|0,r|0,t|0)|0;o[_>>2]=t;o[_+4>>2]=C;_=i+120|0;t=o[_>>2]|0;_=o[_+4>>2]|0;r=i+40|0;c=r;u=o[c>>2]|0;c=o[c+4>>2]|0;n=yo(t|0,_|0,18,0)|0;l=C;_=fo(u|0,c|0,t|0,_|0)|0;l=fo(_|0,C|0,n|0,l|0)|0;o[r>>2]=l;o[r+4>>2]=C;r=i+112|0;l=o[r>>2]|0;r=o[r+4>>2]|0;n=i+32|0;_=n;t=o[_>>2]|0;_=o[_+4>>2]|0;c=yo(l|0,r|0,18,0)|0;u=C;r=fo(t|0,_|0,l|0,r|0)|0;u=fo(r|0,C|0,c|0,u|0)|0;o[n>>2]=u;o[n+4>>2]=C;n=i+104|0;u=o[n>>2]|0;n=o[n+4>>2]|0;c=i+24|0;r=c;l=o[r>>2]|0;r=o[r+4>>2]|0;_=yo(u|0,n|0,18,0)|0;t=C;n=fo(l|0,r|0,u|0,n|0)|0;t=fo(n|0,C|0,_|0,t|0)|0;o[c>>2]=t;o[c+4>>2]=C;c=i+96|0;t=o[c>>2]|0;c=o[c+4>>2]|0;_=i+16|0;n=_;u=o[n>>2]|0;n=o[n+4>>2]|0;r=yo(t|0,c|0,18,0)|0;l=C;c=fo(u|0,n|0,t|0,c|0)|0;l=fo(c|0,C|0,r|0,l|0)|0;o[_>>2]=l;o[_+4>>2]=C;_=i+88|0;l=o[_>>2]|0;_=o[_+4>>2]|0;r=i+8|0;c=r;t=o[c>>2]|0;c=o[c+4>>2]|0;n=yo(l|0,_|0,18,0)|0;u=C;_=fo(t|0,c|0,l|0,_|0)|0;u=fo(_|0,C|0,n|0,u|0)|0;n=r;o[n>>2]=u;o[n+4>>2]=C;n=i+80|0;u=n;_=o[u>>2]|0;u=o[u+4>>2]|0;l=i;c=o[l>>2]|0;l=o[l+4>>2]|0;t=yo(_|0,u|0,18,0)|0;a=C;u=fo(c|0,l|0,_|0,u|0)|0;a=fo(u|0,C|0,t|0,a|0)|0;t=C;u=i;o[u>>2]=a;o[u+4>>2]=t;u=n;o[u>>2]=0;o[u+4>>2]=0;u=0;do{h=fo(t>>31>>>6|0,0,a|0,t|0)|0;h=co(h|0,C|0,26)|0;d=C;m=po(h|0,d|0,26)|0;m=lo(a|0,t|0,m|0,C|0)|0;c=i+(u<<3)|0;o[c>>2]=m;o[c+4>>2]=C;c=i+((u|1)<<3)|0;m=c;m=fo(h|0,d|0,o[m>>2]|0,o[m+4>>2]|0)|0;d=C;h=fo(d>>31>>>7|0,0,m|0,d|0)|0;h=co(h|0,C|0,25)|0;_=C;l=po(h|0,_|0,25)|0;l=lo(m|0,d|0,l|0,C|0)|0;o[c>>2]=l;o[c+4>>2]=C;u=u+2|0;c=i+(u<<3)|0;l=c;a=fo(h|0,_|0,o[l>>2]|0,o[l+4>>2]|0)|0;t=C;o[c>>2]=a;o[c+4>>2]=t}while(u>>>0<10);d=n;h=o[d>>2]|0;d=o[d+4>>2]|0;l=i;_=o[l>>2]|0;l=o[l+4>>2]|0;m=yo(h|0,d|0,18,0)|0;c=C;d=fo(_|0,l|0,h|0,d|0)|0;c=fo(d|0,C|0,m|0,c|0)|0;m=C;d=n;o[d>>2]=0;o[d+4>>2]=0;d=fo(m>>31>>>6|0,0,c|0,m|0)|0;d=co(d|0,C|0,26)|0;n=C;h=po(d|0,n|0,26)|0;h=lo(c|0,m|0,h|0,C|0)|0;m=i;o[m>>2]=h;o[m+4>>2]=C;m=r;m=fo(d|0,n|0,o[m>>2]|0,o[m+4>>2]|0)|0;n=r;o[n>>2]=m;o[n+4>>2]=C;n=e;r=n+80|0;do{o[n>>2]=o[i>>2];n=n+4|0;i=i+4|0}while((n|0)<(r|0));f=s;return}function oo(){var e=0;if(!(o[8886]|0))e=35588;else e=o[(_e()|0)+64>>2]|0;return e|0}function ao(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,o=0;e:do{if(!n)n=0;else{o=n;t=e;while(1){e=i[t>>0]|0;n=i[r>>0]|0;if(e<<24>>24!=n<<24>>24)break;o=o+-1|0;if(!o){n=0;break e}else{t=t+1|0;r=r+1|0}}n=(e&255)-(n&255)|0}}while(0);return n|0}function uo(e){e=e|0;var r=0,n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0,b=0,w=0,v=0,k=0,g=0,y=0,A=0,T=0,M=0,E=0,S=0,x=0,O=0,R=0,C=0,I=0,L=0,P=0,N=0,U=0,F=0;do{if(e>>>0<245){d=e>>>0<11?16:e+11&-8;e=d>>>3;_=o[8898]|0;r=_>>>e;if(r&3|0){r=(r&1^1)+e|0;n=35632+(r<<1<<2)|0;i=n+8|0;t=o[i>>2]|0;a=t+8|0;u=o[a>>2]|0;do{if((n|0)!=(u|0)){if(u>>>0<(o[8902]|0)>>>0)le();e=u+12|0;if((o[e>>2]|0)==(t|0)){o[e>>2]=n;o[i>>2]=u;break}else le()}else o[8898]=_&~(1<<r)}while(0);F=r<<3;o[t+4>>2]=F|3;F=t+F+4|0;o[F>>2]=o[F>>2]|1;F=a;return F|0}u=o[8900]|0;if(d>>>0>u>>>0){if(r|0){n=2<<e;n=r<<e&(n|0-n);n=(n&0-n)+-1|0;s=n>>>12&16;n=n>>>s;t=n>>>5&8;n=n>>>t;a=n>>>2&4;n=n>>>a;i=n>>>1&2;n=n>>>i;r=n>>>1&1;r=(t|s|a|i|r)+(n>>>r)|0;n=35632+(r<<1<<2)|0;i=n+8|0;a=o[i>>2]|0;s=a+8|0;t=o[s>>2]|0;do{if((n|0)!=(t|0)){if(t>>>0<(o[8902]|0)>>>0)le();e=t+12|0;if((o[e>>2]|0)==(a|0)){o[e>>2]=n;o[i>>2]=t;l=o[8900]|0;break}else le()}else{o[8898]=_&~(1<<r);l=u}}while(0);u=(r<<3)-d|0;o[a+4>>2]=d|3;i=a+d|0;o[i+4>>2]=u|1;o[i+u>>2]=u;if(l|0){t=o[8903]|0;r=l>>>3;n=35632+(r<<1<<2)|0;e=o[8898]|0;r=1<<r;if(e&r){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{f=e;c=r}}else{o[8898]=e|r;f=n+8|0;c=n}o[f>>2]=t;o[c+12>>2]=t;o[t+8>>2]=c;o[t+12>>2]=n}o[8900]=u;o[8903]=i;F=s;return F|0}e=o[8899]|0;if(e){n=(e&0-e)+-1|0;U=n>>>12&16;n=n>>>U;N=n>>>5&8;n=n>>>N;F=n>>>2&4;n=n>>>F;r=n>>>1&2;n=n>>>r;i=n>>>1&1;i=o[35896+((N|U|F|r|i)+(n>>>i)<<2)>>2]|0;n=(o[i+4>>2]&-8)-d|0;r=i;while(1){e=o[r+16>>2]|0;if(!e){e=o[r+20>>2]|0;if(!e){_=i;break}}r=(o[e+4>>2]&-8)-d|0;F=r>>>0<n>>>0;n=F?r:n;r=e;i=F?e:i}a=o[8902]|0;if(_>>>0<a>>>0)le();s=_+d|0;if(_>>>0>=s>>>0)le();u=o[_+24>>2]|0;i=o[_+12>>2]|0;do{if((i|0)==(_|0)){r=_+20|0;e=o[r>>2]|0;if(!e){r=_+16|0;e=o[r>>2]|0;if(!e){h=0;break}}while(1){i=e+20|0;t=o[i>>2]|0;if(t|0){e=t;r=i;continue}i=e+16|0;t=o[i>>2]|0;if(!t)break;else{e=t;r=i}}if(r>>>0<a>>>0)le();else{o[r>>2]=0;h=e;break}}else{t=o[_+8>>2]|0;if(t>>>0<a>>>0)le();e=t+12|0;if((o[e>>2]|0)!=(_|0))le();r=i+8|0;if((o[r>>2]|0)==(_|0)){o[e>>2]=i;o[r>>2]=t;h=i;break}else le()}}while(0);do{if(u|0){e=o[_+28>>2]|0;r=35896+(e<<2)|0;if((_|0)==(o[r>>2]|0)){o[r>>2]=h;if(!h){o[8899]=o[8899]&~(1<<e);break}}else{if(u>>>0<(o[8902]|0)>>>0)le();e=u+16|0;if((o[e>>2]|0)==(_|0))o[e>>2]=h;else o[u+20>>2]=h;if(!h)break}r=o[8902]|0;if(h>>>0<r>>>0)le();o[h+24>>2]=u;e=o[_+16>>2]|0;do{if(e|0)if(e>>>0<r>>>0)le();else{o[h+16>>2]=e;o[e+24>>2]=h;break}}while(0);e=o[_+20>>2]|0;if(e|0)if(e>>>0<(o[8902]|0)>>>0)le();else{o[h+20>>2]=e;o[e+24>>2]=h;break}}}while(0);if(n>>>0<16){F=n+d|0;o[_+4>>2]=F|3;F=_+F+4|0;o[F>>2]=o[F>>2]|1}else{o[_+4>>2]=d|3;o[s+4>>2]=n|1;o[s+n>>2]=n;e=o[8900]|0;if(e|0){t=o[8903]|0;r=e>>>3;i=35632+(r<<1<<2)|0;e=o[8898]|0;r=1<<r;if(e&r){e=i+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{m=e;p=r}}else{o[8898]=e|r;m=i+8|0;p=i}o[m>>2]=t;o[p+12>>2]=t;o[t+8>>2]=p;o[t+12>>2]=i}o[8900]=n;o[8903]=s}F=_+8|0;return F|0}}}else if(e>>>0<=4294967231){e=e+11|0;d=e&-8;_=o[8899]|0;if(_){n=0-d|0;e=e>>>8;if(e)if(d>>>0>16777215)s=31;else{p=(e+1048320|0)>>>16&8;R=e<<p;m=(R+520192|0)>>>16&4;R=R<<m;s=(R+245760|0)>>>16&2;s=14-(m|p|s)+(R<<s>>>15)|0;s=d>>>(s+7|0)&1|s<<1}else s=0;r=o[35896+(s<<2)>>2]|0;e:do{if(!r){e=0;r=0;R=86}else{t=n;e=0;a=d<<((s|0)==31?0:25-(s>>>1)|0);u=r;r=0;while(1){i=o[u+4>>2]&-8;n=i-d|0;if(n>>>0<t>>>0)if((i|0)==(d|0)){e=u;r=u;R=90;break e}else r=u;else n=t;i=o[u+20>>2]|0;u=o[u+16+(a>>>31<<2)>>2]|0;e=(i|0)==0|(i|0)==(u|0)?e:i;i=(u|0)==0;if(i){R=86;break}else{t=n;a=a<<(i&1^1)}}}}while(0);if((R|0)==86){if((e|0)==0&(r|0)==0){e=2<<s;e=_&(e|0-e);if(!e)break;p=(e&0-e)+-1|0;c=p>>>12&16;p=p>>>c;f=p>>>5&8;p=p>>>f;h=p>>>2&4;p=p>>>h;m=p>>>1&2;p=p>>>m;e=p>>>1&1;e=o[35896+((f|c|h|m|e)+(p>>>e)<<2)>>2]|0}if(!e){s=n;_=r}else R=90}if((R|0)==90)while(1){R=0;p=(o[e+4>>2]&-8)-d|0;i=p>>>0<n>>>0;n=i?p:n;r=i?e:r;i=o[e+16>>2]|0;if(i|0){e=i;R=90;continue}e=o[e+20>>2]|0;if(!e){s=n;_=r;break}else R=90}if((_|0)!=0?s>>>0<((o[8900]|0)-d|0)>>>0:0){t=o[8902]|0;if(_>>>0<t>>>0)le();u=_+d|0;if(_>>>0>=u>>>0)le();a=o[_+24>>2]|0;n=o[_+12>>2]|0;do{if((n|0)==(_|0)){r=_+20|0;e=o[r>>2]|0;if(!e){r=_+16|0;e=o[r>>2]|0;if(!e){w=0;break}}while(1){n=e+20|0;i=o[n>>2]|0;if(i|0){e=i;r=n;continue}n=e+16|0;i=o[n>>2]|0;if(!i)break;else{e=i;r=n}}if(r>>>0<t>>>0)le();else{o[r>>2]=0;w=e;break}}else{i=o[_+8>>2]|0;if(i>>>0<t>>>0)le();e=i+12|0;if((o[e>>2]|0)!=(_|0))le();r=n+8|0;if((o[r>>2]|0)==(_|0)){o[e>>2]=n;o[r>>2]=i;w=n;break}else le()}}while(0);do{if(a|0){e=o[_+28>>2]|0;r=35896+(e<<2)|0;if((_|0)==(o[r>>2]|0)){o[r>>2]=w;if(!w){o[8899]=o[8899]&~(1<<e);break}}else{if(a>>>0<(o[8902]|0)>>>0)le();e=a+16|0;if((o[e>>2]|0)==(_|0))o[e>>2]=w;else o[a+20>>2]=w;if(!w)break}r=o[8902]|0;if(w>>>0<r>>>0)le();o[w+24>>2]=a;e=o[_+16>>2]|0;do{if(e|0)if(e>>>0<r>>>0)le();else{o[w+16>>2]=e;o[e+24>>2]=w;break}}while(0);e=o[_+20>>2]|0;if(e|0)if(e>>>0<(o[8902]|0)>>>0)le();else{o[w+20>>2]=e;o[e+24>>2]=w;break}}}while(0);do{if(s>>>0>=16){o[_+4>>2]=d|3;o[u+4>>2]=s|1;o[u+s>>2]=s;e=s>>>3;if(s>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;if(r&e){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{k=e;g=r}}else{o[8898]=r|e;k=n+8|0;g=n}o[k>>2]=u;o[g+12>>2]=u;o[u+8>>2]=g;o[u+12>>2]=n;break}e=s>>>8;if(e)if(s>>>0>16777215)n=31;else{U=(e+1048320|0)>>>16&8;F=e<<U;N=(F+520192|0)>>>16&4;F=F<<N;n=(F+245760|0)>>>16&2;n=14-(N|U|n)+(F<<n>>>15)|0;n=s>>>(n+7|0)&1|n<<1}else n=0;i=35896+(n<<2)|0;o[u+28>>2]=n;e=u+16|0;o[e+4>>2]=0;o[e>>2]=0;e=o[8899]|0;r=1<<n;if(!(e&r)){o[8899]=e|r;o[i>>2]=u;o[u+24>>2]=i;o[u+12>>2]=u;o[u+8>>2]=u;break}t=s<<((n|0)==31?0:25-(n>>>1)|0);e=o[i>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(s|0)){n=e;R=148;break}r=e+16+(t>>>31<<2)|0;n=o[r>>2]|0;if(!n){R=145;break}else{t=t<<1;e=n}}if((R|0)==145)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=u;o[u+24>>2]=e;o[u+12>>2]=u;o[u+8>>2]=u;break}else if((R|0)==148){e=n+8|0;r=o[e>>2]|0;F=o[8902]|0;if(r>>>0>=F>>>0&n>>>0>=F>>>0){o[r+12>>2]=u;o[e>>2]=u;o[u+8>>2]=r;o[u+12>>2]=n;o[u+24>>2]=0;break}else le()}}else{F=s+d|0;o[_+4>>2]=F|3;F=_+F+4|0;o[F>>2]=o[F>>2]|1}}while(0);F=_+8|0;return F|0}}}else d=-1}while(0);n=o[8900]|0;if(n>>>0>=d>>>0){e=n-d|0;r=o[8903]|0;if(e>>>0>15){F=r+d|0;o[8903]=F;o[8900]=e;o[F+4>>2]=e|1;o[F+e>>2]=e;o[r+4>>2]=d|3}else{o[8900]=0;o[8903]=0;o[r+4>>2]=n|3;F=r+n+4|0;o[F>>2]=o[F>>2]|1}F=r+8|0;return F|0}e=o[8901]|0;if(e>>>0>d>>>0){N=e-d|0;o[8901]=N;F=o[8904]|0;U=F+d|0;o[8904]=U;o[U+4>>2]=N|1;o[F+4>>2]=d|3;F=F+8|0;return F|0}do{if(!(o[9016]|0)){e=be(30)|0;if(!(e+-1&e)){o[9018]=e;o[9017]=e;o[9019]=-1;o[9020]=-1;o[9021]=0;o[9009]=0;o[9016]=(de(0)|0)&-16^1431655768;break}else le()}}while(0);u=d+48|0;a=o[9018]|0;s=d+47|0;t=a+s|0;a=0-a|0;_=t&a;if(_>>>0<=d>>>0){F=0;return F|0}e=o[9008]|0;if(e|0?(k=o[9006]|0,g=k+_|0,g>>>0<=k>>>0|g>>>0>e>>>0):0){F=0;return F|0}e:do{if(!(o[9009]&4)){e=o[8904]|0;r:do{if(e){n=36040;while(1){r=o[n>>2]|0;if(r>>>0<=e>>>0?(b=n+4|0,(r+(o[b>>2]|0)|0)>>>0>e>>>0):0){i=n;n=b;break}n=o[n+8>>2]|0;if(!n){R=173;break r}}e=t-(o[8901]|0)&a;if(e>>>0<2147483647){r=he(e|0)|0;if((r|0)==((o[i>>2]|0)+(o[n>>2]|0)|0)){if((r|0)!=(-1|0)){u=r;t=e;R=193;break e}}else R=183}}else R=173}while(0);do{if((R|0)==173?(v=he(0)|0,(v|0)!=(-1|0)):0){e=v;r=o[9017]|0;n=r+-1|0;if(!(n&e))e=_;else e=_-e+(n+e&0-r)|0;r=o[9006]|0;n=r+e|0;if(e>>>0>d>>>0&e>>>0<2147483647){g=o[9008]|0;if(g|0?n>>>0<=r>>>0|n>>>0>g>>>0:0)break;r=he(e|0)|0;if((r|0)==(v|0)){u=v;t=e;R=193;break e}else R=183}}}while(0);r:do{if((R|0)==183){n=0-e|0;do{if(u>>>0>e>>>0&(e>>>0<2147483647&(r|0)!=(-1|0))?(y=o[9018]|0,y=s-e+y&0-y,y>>>0<2147483647):0)if((he(y|0)|0)==(-1|0)){he(n|0)|0;break r}else{e=y+e|0;break}}while(0);if((r|0)!=(-1|0)){u=r;t=e;R=193;break e}}}while(0);o[9009]=o[9009]|4;R=190}else R=190}while(0);if((((R|0)==190?_>>>0<2147483647:0)?(A=he(_|0)|0,T=he(0)|0,A>>>0<T>>>0&((A|0)!=(-1|0)&(T|0)!=(-1|0))):0)?(M=T-A|0,M>>>0>(d+40|0)>>>0):0){u=A;t=M;R=193}if((R|0)==193){e=(o[9006]|0)+t|0;o[9006]=e;if(e>>>0>(o[9007]|0)>>>0)o[9007]=e;s=o[8904]|0;do{if(s){i=36040;do{e=o[i>>2]|0;r=i+4|0;n=o[r>>2]|0;if((u|0)==(e+n|0)){E=e;S=r;x=n;O=i;R=203;break}i=o[i+8>>2]|0}while((i|0)!=0);if(((R|0)==203?(o[O+12>>2]&8|0)==0:0)?s>>>0<u>>>0&s>>>0>=E>>>0:0){o[S>>2]=x+t;F=s+8|0;F=(F&7|0)==0?0:0-F&7;U=s+F|0;F=t-F+(o[8901]|0)|0;o[8904]=U;o[8901]=F;o[U+4>>2]=F|1;o[U+F+4>>2]=40;o[8905]=o[9020];break}e=o[8902]|0;if(u>>>0<e>>>0){o[8902]=u;_=u}else _=e;n=u+t|0;e=36040;while(1){if((o[e>>2]|0)==(n|0)){r=e;R=211;break}e=o[e+8>>2]|0;if(!e){r=36040;break}}if((R|0)==211)if(!(o[e+12>>2]&8)){o[r>>2]=u;f=e+4|0;o[f>>2]=(o[f>>2]|0)+t;f=u+8|0;f=u+((f&7|0)==0?0:0-f&7)|0;e=n+8|0;e=n+((e&7|0)==0?0:0-e&7)|0;l=f+d|0;a=e-f-d|0;o[f+4>>2]=d|3;do{if((e|0)!=(s|0)){if((e|0)==(o[8903]|0)){F=(o[8900]|0)+a|0;o[8900]=F;o[8903]=l;o[l+4>>2]=F|1;o[l+F>>2]=F;break}r=o[e+4>>2]|0;if((r&3|0)==1){s=r&-8;t=r>>>3;e:do{if(r>>>0>=256){u=o[e+24>>2]|0;i=o[e+12>>2]|0;do{if((i|0)==(e|0)){n=e+16|0;i=n+4|0;r=o[i>>2]|0;if(!r){r=o[n>>2]|0;if(!r){N=0;break}}else n=i;while(1){i=r+20|0;t=o[i>>2]|0;if(t|0){r=t;n=i;continue}i=r+16|0;t=o[i>>2]|0;if(!t)break;else{r=t;n=i}}if(n>>>0<_>>>0)le();else{o[n>>2]=0;N=r;break}}else{t=o[e+8>>2]|0;if(t>>>0<_>>>0)le();r=t+12|0;if((o[r>>2]|0)!=(e|0))le();n=i+8|0;if((o[n>>2]|0)==(e|0)){o[r>>2]=i;o[n>>2]=t;N=i;break}else le()}}while(0);if(!u)break;r=o[e+28>>2]|0;n=35896+(r<<2)|0;do{if((e|0)!=(o[n>>2]|0)){if(u>>>0<(o[8902]|0)>>>0)le();r=u+16|0;if((o[r>>2]|0)==(e|0))o[r>>2]=N;else o[u+20>>2]=N;if(!N)break e}else{o[n>>2]=N;if(N|0)break;o[8899]=o[8899]&~(1<<r);break e}}while(0);i=o[8902]|0;if(N>>>0<i>>>0)le();o[N+24>>2]=u;r=e+16|0;n=o[r>>2]|0;do{if(n|0)if(n>>>0<i>>>0)le();else{o[N+16>>2]=n;o[n+24>>2]=N;break}}while(0);r=o[r+4>>2]|0;if(!r)break;if(r>>>0<(o[8902]|0)>>>0)le();else{o[N+20>>2]=r;o[r+24>>2]=N;break}}else{n=o[e+8>>2]|0;i=o[e+12>>2]|0;r=35632+(t<<1<<2)|0;do{if((n|0)!=(r|0)){if(n>>>0<_>>>0)le();if((o[n+12>>2]|0)==(e|0))break;le()}}while(0);if((i|0)==(n|0)){o[8898]=o[8898]&~(1<<t);break}do{if((i|0)==(r|0))I=i+8|0;else{if(i>>>0<_>>>0)le();r=i+8|0;if((o[r>>2]|0)==(e|0)){I=r;break}le()}}while(0);o[n+12>>2]=i;o[I>>2]=n}}while(0);e=e+s|0;a=s+a|0}e=e+4|0;o[e>>2]=o[e>>2]&-2;o[l+4>>2]=a|1;o[l+a>>2]=a;e=a>>>3;if(a>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;do{if(!(r&e)){o[8898]=r|e;U=n+8|0;F=n}else{e=n+8|0;r=o[e>>2]|0;if(r>>>0>=(o[8902]|0)>>>0){U=e;F=r;break}le()}}while(0);o[U>>2]=l;o[F+12>>2]=l;o[l+8>>2]=F;o[l+12>>2]=n;break}e=a>>>8;do{if(!e)n=0;else{if(a>>>0>16777215){n=31;break}U=(e+1048320|0)>>>16&8;F=e<<U;N=(F+520192|0)>>>16&4;F=F<<N;n=(F+245760|0)>>>16&2;n=14-(N|U|n)+(F<<n>>>15)|0;n=a>>>(n+7|0)&1|n<<1}}while(0);i=35896+(n<<2)|0;o[l+28>>2]=n;e=l+16|0;o[e+4>>2]=0;o[e>>2]=0;e=o[8899]|0;r=1<<n;if(!(e&r)){o[8899]=e|r;o[i>>2]=l;o[l+24>>2]=i;o[l+12>>2]=l;o[l+8>>2]=l;break}t=a<<((n|0)==31?0:25-(n>>>1)|0);e=o[i>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(a|0)){n=e;R=281;break}r=e+16+(t>>>31<<2)|0;n=o[r>>2]|0;if(!n){R=278;break}else{t=t<<1;e=n}}if((R|0)==278)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=l;o[l+24>>2]=e;o[l+12>>2]=l;o[l+8>>2]=l;break}else if((R|0)==281){e=n+8|0;r=o[e>>2]|0;F=o[8902]|0;if(r>>>0>=F>>>0&n>>>0>=F>>>0){o[r+12>>2]=l;o[e>>2]=l;o[l+8>>2]=r;o[l+12>>2]=n;o[l+24>>2]=0;break}else le()}}else{F=(o[8901]|0)+a|0;o[8901]=F;o[8904]=l;o[l+4>>2]=F|1}}while(0);F=f+8|0;return F|0}else r=36040;while(1){e=o[r>>2]|0;if(e>>>0<=s>>>0?(C=e+(o[r+4>>2]|0)|0,C>>>0>s>>>0):0){r=C;break}r=o[r+8>>2]|0}a=r+-47|0;n=a+8|0;n=a+((n&7|0)==0?0:0-n&7)|0;a=s+16|0;n=n>>>0<a>>>0?s:n;e=n+8|0;i=u+8|0;i=(i&7|0)==0?0:0-i&7;F=u+i|0;i=t+-40-i|0;o[8904]=F;o[8901]=i;o[F+4>>2]=i|1;o[F+i+4>>2]=40;o[8905]=o[9020];i=n+4|0;o[i>>2]=27;o[e>>2]=o[9010];o[e+4>>2]=o[9011];o[e+8>>2]=o[9012];o[e+12>>2]=o[9013];o[9010]=u;o[9011]=t;o[9013]=0;o[9012]=e;e=n+24|0;do{e=e+4|0;o[e>>2]=7}while((e+4|0)>>>0<r>>>0);if((n|0)!=(s|0)){u=n-s|0;o[i>>2]=o[i>>2]&-2;o[s+4>>2]=u|1;o[n>>2]=u;e=u>>>3;if(u>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;if(r&e){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{L=e;P=r}}else{o[8898]=r|e;L=n+8|0;P=n}o[L>>2]=s;o[P+12>>2]=s;o[s+8>>2]=P;o[s+12>>2]=n;break}e=u>>>8;if(e)if(u>>>0>16777215)n=31;else{U=(e+1048320|0)>>>16&8;F=e<<U;N=(F+520192|0)>>>16&4;F=F<<N;n=(F+245760|0)>>>16&2;n=14-(N|U|n)+(F<<n>>>15)|0;n=u>>>(n+7|0)&1|n<<1}else n=0;t=35896+(n<<2)|0;o[s+28>>2]=n;o[s+20>>2]=0;o[a>>2]=0;e=o[8899]|0;r=1<<n;if(!(e&r)){o[8899]=e|r;o[t>>2]=s;o[s+24>>2]=t;o[s+12>>2]=s;o[s+8>>2]=s;break}i=u<<((n|0)==31?0:25-(n>>>1)|0);e=o[t>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(u|0)){n=e;R=307;break}r=e+16+(i>>>31<<2)|0;n=o[r>>2]|0;if(!n){R=304;break}else{i=i<<1;e=n}}if((R|0)==304)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=s;o[s+24>>2]=e;o[s+12>>2]=s;o[s+8>>2]=s;break}else if((R|0)==307){e=n+8|0;r=o[e>>2]|0;F=o[8902]|0;if(r>>>0>=F>>>0&n>>>0>=F>>>0){o[r+12>>2]=s;o[e>>2]=s;o[s+8>>2]=r;o[s+12>>2]=n;o[s+24>>2]=0;break}else le()}}}else{F=o[8902]|0;if((F|0)==0|u>>>0<F>>>0)o[8902]=u;o[9010]=u;o[9011]=t;o[9013]=0;o[8907]=o[9016];o[8906]=-1;e=0;do{F=35632+(e<<1<<2)|0;o[F+12>>2]=F;o[F+8>>2]=F;e=e+1|0}while((e|0)!=32);F=u+8|0;F=(F&7|0)==0?0:0-F&7;U=u+F|0;F=t+-40-F|0;o[8904]=U;o[8901]=F;o[U+4>>2]=F|1;o[U+F+4>>2]=40;o[8905]=o[9020]}}while(0);e=o[8901]|0;if(e>>>0>d>>>0){N=e-d|0;o[8901]=N;F=o[8904]|0;U=F+d|0;o[8904]=U;o[U+4>>2]=N|1;o[F+4>>2]=d|3;F=F+8|0;return F|0}}o[(oo()|0)>>2]=12;F=0;return F|0}function so(e){e=e|0;var r=0,n=0,i=0,t=0,a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0,p=0;if(!e)return;n=e+-8|0;u=o[8902]|0;if(n>>>0<u>>>0)le();e=o[e+-4>>2]|0;r=e&3;if((r|0)==1)le();i=e&-8;c=n+i|0;do{if(!(e&1)){e=o[n>>2]|0;if(!r)return;l=n+(0-e)|0;_=e+i|0;if(l>>>0<u>>>0)le();if((l|0)==(o[8903]|0)){e=c+4|0;r=o[e>>2]|0;if((r&3|0)!=3){p=l;a=_;break}o[8900]=_;o[e>>2]=r&-2;o[l+4>>2]=_|1;o[l+_>>2]=_;return}i=e>>>3;if(e>>>0<256){r=o[l+8>>2]|0;n=o[l+12>>2]|0;e=35632+(i<<1<<2)|0;if((r|0)!=(e|0)){if(r>>>0<u>>>0)le();if((o[r+12>>2]|0)!=(l|0))le()}if((n|0)==(r|0)){o[8898]=o[8898]&~(1<<i);p=l;a=_;break}if((n|0)!=(e|0)){if(n>>>0<u>>>0)le();e=n+8|0;if((o[e>>2]|0)==(l|0))t=e;else le()}else t=n+8|0;o[r+12>>2]=n;o[t>>2]=r;p=l;a=_;break}t=o[l+24>>2]|0;n=o[l+12>>2]|0;do{if((n|0)==(l|0)){r=l+16|0;n=r+4|0;e=o[n>>2]|0;if(!e){e=o[r>>2]|0;if(!e){s=0;break}}else r=n;while(1){n=e+20|0;i=o[n>>2]|0;if(i|0){e=i;r=n;continue}n=e+16|0;i=o[n>>2]|0;if(!i)break;else{e=i;r=n}}if(r>>>0<u>>>0)le();else{o[r>>2]=0;s=e;break}}else{i=o[l+8>>2]|0;if(i>>>0<u>>>0)le();e=i+12|0;if((o[e>>2]|0)!=(l|0))le();r=n+8|0;if((o[r>>2]|0)==(l|0)){o[e>>2]=n;o[r>>2]=i;s=n;break}else le()}}while(0);if(t){e=o[l+28>>2]|0;r=35896+(e<<2)|0;if((l|0)==(o[r>>2]|0)){o[r>>2]=s;if(!s){o[8899]=o[8899]&~(1<<e);p=l;a=_;break}}else{if(t>>>0<(o[8902]|0)>>>0)le();e=t+16|0;if((o[e>>2]|0)==(l|0))o[e>>2]=s;else o[t+20>>2]=s;if(!s){p=l;a=_;break}}n=o[8902]|0;if(s>>>0<n>>>0)le();o[s+24>>2]=t;e=l+16|0;r=o[e>>2]|0;do{if(r|0)if(r>>>0<n>>>0)le();else{o[s+16>>2]=r;o[r+24>>2]=s;break}}while(0);e=o[e+4>>2]|0;if(e)if(e>>>0<(o[8902]|0)>>>0)le();else{o[s+20>>2]=e;o[e+24>>2]=s;p=l;a=_;break}else{p=l;a=_}}else{p=l;a=_}}else{p=n;a=i}}while(0);if(p>>>0>=c>>>0)le();e=c+4|0;r=o[e>>2]|0;if(!(r&1))le();if(!(r&2)){if((c|0)==(o[8904]|0)){m=(o[8901]|0)+a|0;o[8901]=m;o[8904]=p;o[p+4>>2]=m|1;if((p|0)!=(o[8903]|0))return;o[8903]=0;o[8900]=0;return}if((c|0)==(o[8903]|0)){m=(o[8900]|0)+a|0;o[8900]=m;o[8903]=p;o[p+4>>2]=m|1;o[p+m>>2]=m;return}a=(r&-8)+a|0;i=r>>>3;do{if(r>>>0>=256){t=o[c+24>>2]|0;e=o[c+12>>2]|0;do{if((e|0)==(c|0)){r=c+16|0;n=r+4|0;e=o[n>>2]|0;if(!e){e=o[r>>2]|0;if(!e){h=0;break}}else r=n;while(1){n=e+20|0;i=o[n>>2]|0;if(i|0){e=i;r=n;continue}n=e+16|0;i=o[n>>2]|0;if(!i)break;else{e=i;r=n}}if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=0;h=e;break}}else{r=o[c+8>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();n=r+12|0;if((o[n>>2]|0)!=(c|0))le();i=e+8|0;if((o[i>>2]|0)==(c|0)){o[n>>2]=e;o[i>>2]=r;h=e;break}else le()}}while(0);if(t|0){e=o[c+28>>2]|0;r=35896+(e<<2)|0;if((c|0)==(o[r>>2]|0)){o[r>>2]=h;if(!h){o[8899]=o[8899]&~(1<<e);break}}else{if(t>>>0<(o[8902]|0)>>>0)le();e=t+16|0;if((o[e>>2]|0)==(c|0))o[e>>2]=h;else o[t+20>>2]=h;if(!h)break}n=o[8902]|0;if(h>>>0<n>>>0)le();o[h+24>>2]=t;e=c+16|0;r=o[e>>2]|0;do{if(r|0)if(r>>>0<n>>>0)le();else{o[h+16>>2]=r;o[r+24>>2]=h;break}}while(0);e=o[e+4>>2]|0;if(e|0)if(e>>>0<(o[8902]|0)>>>0)le();else{o[h+20>>2]=e;o[e+24>>2]=h;break}}}else{r=o[c+8>>2]|0;n=o[c+12>>2]|0;e=35632+(i<<1<<2)|0;if((r|0)!=(e|0)){if(r>>>0<(o[8902]|0)>>>0)le();if((o[r+12>>2]|0)!=(c|0))le()}if((n|0)==(r|0)){o[8898]=o[8898]&~(1<<i);break}if((n|0)!=(e|0)){if(n>>>0<(o[8902]|0)>>>0)le();e=n+8|0;if((o[e>>2]|0)==(c|0))f=e;else le()}else f=n+8|0;o[r+12>>2]=n;o[f>>2]=r}}while(0);o[p+4>>2]=a|1;o[p+a>>2]=a;if((p|0)==(o[8903]|0)){o[8900]=a;return}}else{o[e>>2]=r&-2;o[p+4>>2]=a|1;o[p+a>>2]=a}e=a>>>3;if(a>>>0<256){n=35632+(e<<1<<2)|0;r=o[8898]|0;e=1<<e;if(r&e){e=n+8|0;r=o[e>>2]|0;if(r>>>0<(o[8902]|0)>>>0)le();else{d=e;m=r}}else{o[8898]=r|e;d=n+8|0;m=n}o[d>>2]=p;o[m+12>>2]=p;o[p+8>>2]=m;o[p+12>>2]=n;return}e=a>>>8;if(e)if(a>>>0>16777215)n=31;else{d=(e+1048320|0)>>>16&8;m=e<<d;h=(m+520192|0)>>>16&4;m=m<<h;n=(m+245760|0)>>>16&2;n=14-(h|d|n)+(m<<n>>>15)|0;n=a>>>(n+7|0)&1|n<<1}else n=0;i=35896+(n<<2)|0;o[p+28>>2]=n;o[p+20>>2]=0;o[p+16>>2]=0;e=o[8899]|0;r=1<<n;do{if(e&r){t=a<<((n|0)==31?0:25-(n>>>1)|0);e=o[i>>2]|0;while(1){if((o[e+4>>2]&-8|0)==(a|0)){n=e;i=130;break}r=e+16+(t>>>31<<2)|0;n=o[r>>2]|0;if(!n){i=127;break}else{t=t<<1;e=n}}if((i|0)==127)if(r>>>0<(o[8902]|0)>>>0)le();else{o[r>>2]=p;o[p+24>>2]=e;o[p+12>>2]=p;o[p+8>>2]=p;break}else if((i|0)==130){e=n+8|0;r=o[e>>2]|0;m=o[8902]|0;if(r>>>0>=m>>>0&n>>>0>=m>>>0){o[r+12>>2]=p;o[e>>2]=p;o[p+8>>2]=r;o[p+12>>2]=n;o[p+24>>2]=0;break}else le()}}else{o[8899]=e|r;o[i>>2]=p;o[p+24>>2]=i;o[p+12>>2]=p;o[p+8>>2]=p}}while(0);p=(o[8906]|0)+-1|0;o[8906]=p;if(!p)e=36048;else return;while(1){e=o[e>>2]|0;if(!e)break;else e=e+8|0}o[8906]=-1;return}function _o(){}function lo(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;i=r-i-(n>>>0>e>>>0|0)>>>0;return(C=i,e-n>>>0|0)|0}function fo(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;n=e+n>>>0;return(C=r+i+(n>>>0<e>>>0|0)>>>0,n|0)|0}function co(e,r,n){e=e|0;r=r|0;n=n|0;if((n|0)<32){C=r>>n;return e>>>n|(r&(1<<n)-1)<<32-n}C=(r|0)<0?-1:0;return r>>n-32|0}function ho(e,r,n){e=e|0;r=r|0;n=n|0;var t=0,a=0,u=0,s=0;t=e+n|0;if((n|0)>=20){r=r&255;u=e&3;s=r|r<<8|r<<16|r<<24;a=t&~3;if(u){u=e+4-u|0;while((e|0)<(u|0)){i[e>>0]=r;e=e+1|0}}while((e|0)<(a|0)){o[e>>2]=s;e=e+4|0}}while((e|0)<(t|0)){i[e>>0]=r;e=e+1|0}return e-n|0}function mo(e,r,n){e=e|0;r=r|0;n=n|0;if((n|0)<32){C=r>>>n;return e>>>n|(r&(1<<n)-1)<<32-n}C=0;return r>>>n-32|0}function po(e,r,n){e=e|0;r=r|0;n=n|0;if((n|0)<32){C=r<<n|(e&(1<<n)-1<<32-n)>>>32-n;return e<<n}C=e<<n-32;return 0}function bo(e,r,n){e=e|0;r=r|0;n=n|0;var t=0;if((n|0)>=4096)return me(e|0,r|0,n|0)|0;t=e|0;if((e&3)==(r&3)){while(e&3){if(!n)return t|0;i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0;n=n-1|0}while((n|0)>=4){o[e>>2]=o[r>>2];e=e+4|0;r=r+4|0;n=n-4|0}}while((n|0)>0){i[e>>0]=i[r>>0]|0;e=e+1|0;r=r+1|0;n=n-1|0}return t|0}function wo(e){e=e|0;var r=0;r=i[m+(e&255)>>0]|0;if((r|0)<8)return r|0;r=i[m+(e>>8&255)>>0]|0;if((r|0)<8)return r+8|0;r=i[m+(e>>16&255)>>0]|0;if((r|0)<8)return r+16|0;return(i[m+(e>>>24)>>0]|0)+24|0}function vo(e,r){e=e|0;r=r|0;var n=0,i=0,t=0,o=0;o=e&65535;t=r&65535;n=re(t,o)|0;i=e>>>16;e=(n>>>16)+(re(t,i)|0)|0;t=r>>>16;r=re(t,o)|0;return(C=(e>>>16)+(re(t,i)|0)+(((e&65535)+r|0)>>>16)|0,e+r<<16|n&65535|0)|0}function ko(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0,a=0,u=0,s=0,_=0;_=r>>31|((r|0)<0?-1:0)<<1;s=((r|0)<0?-1:0)>>31|((r|0)<0?-1:0)<<1;o=i>>31|((i|0)<0?-1:0)<<1;t=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;u=lo(_^e|0,s^r|0,_|0,s|0)|0;a=C;e=o^_;r=t^s;return lo((Mo(u,a,lo(o^n|0,t^i|0,o|0,t|0)|0,C,0)|0)^e|0,C^r|0,e|0,r|0)|0}function go(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0,u=0,s=0,_=0,l=0;t=f;f=f+16|0;s=t|0;u=r>>31|((r|0)<0?-1:0)<<1;a=((r|0)<0?-1:0)>>31|((r|0)<0?-1:0)<<1;l=i>>31|((i|0)<0?-1:0)<<1;_=((i|0)<0?-1:0)>>31|((i|0)<0?-1:0)<<1;e=lo(u^e|0,a^r|0,u|0,a|0)|0;r=C;Mo(e,r,lo(l^n|0,_^i|0,l|0,_|0)|0,C,s)|0;i=lo(o[s>>2]^u|0,o[s+4>>2]^a|0,u|0,a|0)|0;n=C;f=t;return(C=n,i)|0}function yo(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,o=0;t=e;o=n;n=vo(t,o)|0;e=C;return(C=(re(r,o)|0)+(re(i,t)|0)+e|e&0,n|0|0)|0}function Ao(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;return Mo(e,r,n,i,0)|0}function To(e,r,n,i){e=e|0;r=r|0;n=n|0;i=i|0;var t=0,a=0;a=f;f=f+16|0;t=a|0;Mo(e,r,n,i,t)|0;f=a;return(C=o[t+4>>2]|0,o[t>>2]|0)|0}function Mo(e,r,n,i,t){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;var a=0,u=0,s=0,_=0,l=0,f=0,c=0,h=0,d=0,m=0;f=e;_=r;l=_;u=n;h=i;s=h;if(!l){a=(t|0)!=0;if(!s){if(a){o[t>>2]=(f>>>0)%(u>>>0);o[t+4>>2]=0}h=0;t=(f>>>0)/(u>>>0)>>>0;return(C=h,t)|0}else{if(!a){h=0;t=0;return(C=h,t)|0}o[t>>2]=e|0;o[t+4>>2]=r&0;h=0;t=0;return(C=h,t)|0}}a=(s|0)==0;do{if(u){if(!a){a=(ie(s|0)|0)-(ie(l|0)|0)|0;if(a>>>0<=31){c=a+1|0;s=31-a|0;r=a-31>>31;u=c;e=f>>>(c>>>0)&r|l<<s;r=l>>>(c>>>0)&r;a=0;s=f<<s;break}if(!t){h=0;t=0;return(C=h,t)|0}o[t>>2]=e|0;o[t+4>>2]=_|r&0;h=0;t=0;return(C=h,t)|0}a=u-1|0;if(a&u|0){s=(ie(u|0)|0)+33-(ie(l|0)|0)|0;m=64-s|0;c=32-s|0;_=c>>31;d=s-32|0;r=d>>31;u=s;e=c-1>>31&l>>>(d>>>0)|(l<<c|f>>>(s>>>0))&r;r=r&l>>>(s>>>0);a=f<<m&_;s=(l<<m|f>>>(d>>>0))&_|f<<c&s-33>>31;break}if(t|0){o[t>>2]=a&f;o[t+4>>2]=0}if((u|0)==1){d=_|r&0;m=e|0|0;return(C=d,m)|0}else{m=wo(u|0)|0;d=l>>>(m>>>0)|0;m=l<<32-m|f>>>(m>>>0)|0;return(C=d,m)|0}}else{if(a){if(t|0){o[t>>2]=(l>>>0)%(u>>>0);o[t+4>>2]=0}d=0;m=(l>>>0)/(u>>>0)>>>0;return(C=d,m)|0}if(!f){if(t|0){o[t>>2]=0;o[t+4>>2]=(l>>>0)%(s>>>0)}d=0;m=(l>>>0)/(s>>>0)>>>0;return(C=d,m)|0}a=s-1|0;if(!(a&s)){if(t|0){o[t>>2]=e|0;o[t+4>>2]=a&l|r&0}d=0;m=l>>>((wo(s|0)|0)>>>0);return(C=d,m)|0}a=(ie(s|0)|0)-(ie(l|0)|0)|0;if(a>>>0<=30){r=a+1|0;s=31-a|0;u=r;e=l<<s|f>>>(r>>>0);r=l>>>(r>>>0);a=0;s=f<<s;break}if(!t){d=0;m=0;return(C=d,m)|0}o[t>>2]=e|0;o[t+4>>2]=_|r&0;d=0;m=0;return(C=d,m)|0}}while(0);if(!u){l=s;_=0;s=0}else{c=n|0|0;f=h|i&0;l=fo(c|0,f|0,-1,-1)|0;n=C;_=s;s=0;do{i=_;_=a>>>31|_<<1;a=s|a<<1;i=e<<1|i>>>31|0;h=e>>>31|r<<1|0;lo(l|0,n|0,i|0,h|0)|0;m=C;d=m>>31|((m|0)<0?-1:0)<<1;s=d&1;e=lo(i|0,h|0,d&c|0,(((m|0)<0?-1:0)>>31|((m|0)<0?-1:0)<<1)&f|0)|0;r=C;u=u-1|0}while((u|0)!=0);l=_;_=0}u=0;if(t|0){o[t>>2]=e;o[t+4>>2]=r}d=(a|0)>>>31|(l|u)<<1|(u<<1|a>>>31)&0|_;m=(a<<1|0>>>31)&-2|s;return(C=d,m)|0}function Eo(e,r){e=e|0;r=r|0;return Io[e&1](r|0)|0}function So(e,r,n,i,t,o,a,u,s,_){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;o=o|0;a=a|0;u=u|0;s=s|0;_=_|0;return Lo[e&3](r|0,n|0,i|0,t|0,o|0,a|0,u|0,s|0,_|0)|0}function xo(e,r,n){e=e|0;r=r|0;n=n|0;return Po[e&3](r|0,n|0)|0}function Oo(e){e=e|0;te(0);return 0}function Ro(e,r,n,i,t,o,a,u,s){e=e|0;r=r|0;n=n|0;i=i|0;t=t|0;o=o|0;a=a|0;u=u|0;s=s|0;te(1);return 0}function Co(e,r){e=e|0;r=r|0;te(2);return 0}var Io=[Oo,Hn];var Lo=[Ro,Dn,Bn,Ro];var Po=[Co,jn,Vn,Co];return{_olm_create_inbound_session_from:Tn,_olm_unpickle_outbound_group_session:Ut,_olm_clear_utility:rn,_olm_outbound_group_session_message_index:Vt,_olm_account_sign:dn,_bitshift64Lshr:mo,_olm_account_one_time_keys:pn,_olm_encrypt_random_length:In,_olm_init_inbound_group_session:bt,_olm_matches_inbound_session:xn,_bitshift64Ashr:co,_memcpy:bo,_olm_error:Vr,_olm_session_has_received_message:Sn,_olm_create_account_random_length:_n,_olm_inbound_group_session:dt,_olm_outbound_group_session_last_error:Lt,_olm_utility_last_error:Kr,_olm_pickle_inbound_group_session:kt,_free:so,_olm_inbound_group_session_id_length:Tt,_olm_unpickle_session:sn,_olm_encrypt_message_type:Cn,_olm_init_outbound_group_session_random_length:Ft,_olm_get_library_version:Dr,_olm_pickle_inbound_group_session_length:vt,_olm_clear_account:$r,_olm_decrypt_max_plaintext_length:Nn,_olm_group_decrypt:At,_olm_group_decrypt_max_plaintext_length:yt,_olm_remove_one_time_keys:Rn,_olm_inbound_group_session_id:Mt,_olm_import_inbound_group_session:wt,_olm_clear_inbound_group_session:mt,_olm_export_inbound_group_session_length:xt,_olm_export_inbound_group_session:Ot,_olm_account_one_time_keys_length:mn,_olm_unpickle_inbound_group_session:gt,_olm_inbound_group_session_first_known_index:Et,_olm_inbound_group_session_last_error:pt,_olm_pickle_session:an,_olm_encrypt:Pn,_olm_session_id:En,_olm_sha256:zn,_olm_account_signature_length:hn,_olm_decrypt:Un,_olm_account_max_number_of_one_time_keys:wn,_olm_matches_inbound_session_from:On,_olm_outbound_group_session_size:Rt,_olm_account_identity_keys_length:fn,_olm_utility:Zr,_olm_create_account:ln,_olm_account_generate_one_time_keys:kn,_olm_utility_size:Jr,_olm_account_size:Wr,_olm_ed25519_verify:qn,_memset:ho,_olm_create_outbound_session_random_length:gn,_olm_pickle_outbound_group_session:Nt,_olm_group_encrypt_message_length:qt,_olm_pickle_outbound_group_session_length:Pt,_olm_account_generate_one_time_keys_random_length:vn,_olm_outbound_group_session_key:Gt,_olm_group_encrypt:Ht,_olm_account_identity_keys:cn,_i64Subtract:lo,_olm_unpickle_account:un,_olm_clear_session:en,_olm_pickle_session_length:tn,_olm_create_outbound_session:yn,_olm_inbound_group_session_size:ht,_olm_sha256_length:Fn,_malloc:uo,_olm_account:Xr,_olm_pickle_account_length:nn,_olm_session_size:Yr,_olm_inbound_group_session_is_verified:St,_olm_session:Qr,_bitshift64Shl:po,_olm_outbound_group_session_id_length:jt,_olm_create_inbound_session:An,_olm_clear_outbound_group_session:It,_olm_session_id_length:Mn,_i64Add:fo,_olm_account_last_error:Br,_olm_outbound_group_session:Ct,_olm_encrypt_message_length:Ln,_olm_pickle_account:on,_olm_account_mark_keys_as_published:bn,_olm_init_outbound_group_session:zt,_olm_outbound_group_session_key_length:Bt,_olm_session_last_error:Gr,_olm_outbound_group_session_id:Dt,runPostSets:_o,stackAlloc:ve,stackSave:ke,stackRestore:ge,establishStackSpace:ye,setThrew:Ae,setTempRet0:Ee,getTempRet0:Se,dynCall_ii:Eo,dynCall_iiiiiiiiii:So,dynCall_iii:xo}}(a.t,a.u,x);a._olm_create_inbound_session_from=d._olm_create_inbound_session_from,a._olm_unpickle_outbound_group_session=d._olm_unpickle_outbound_group_session,a._olm_clear_utility=d._olm_clear_utility,a._olm_outbound_group_session_message_index=d._olm_outbound_group_session_message_index,a._olm_account_sign=d._olm_account_sign;var pb=a._bitshift64Lshr=d._bitshift64Lshr;a._olm_account_one_time_keys=d._olm_account_one_time_keys,a._olm_encrypt_random_length=d._olm_encrypt_random_length,a._olm_init_inbound_group_session=d._olm_init_inbound_group_session,a._olm_matches_inbound_session=d._olm_matches_inbound_session;var nb=a._bitshift64Ashr=d._bitshift64Ashr,rb=a._memcpy=d._memcpy;a._olm_error=d._olm_error,a._olm_account_generate_one_time_keys=d._olm_account_generate_one_time_keys,a._olm_create_account_random_length=d._olm_create_account_random_length,a._olm_inbound_group_session=d._olm_inbound_group_session,a._olm_outbound_group_session_last_error=d._olm_outbound_group_session_last_error,a._olm_utility_last_error=d._olm_utility_last_error,a._olm_pickle_inbound_group_session=d._olm_pickle_inbound_group_session;var va=a._free=d._free;a.runPostSets=d.runPostSets,a._olm_inbound_group_session_id_length=d._olm_inbound_group_session_id_length,a._olm_unpickle_session=d._olm_unpickle_session,a._olm_encrypt_message_type=d._olm_encrypt_message_type,a._olm_init_outbound_group_session_random_length=d._olm_init_outbound_group_session_random_length,a._olm_get_library_version=d._olm_get_library_version,a._olm_pickle_inbound_group_session_length=d._olm_pickle_inbound_group_session_length,a._olm_clear_account=d._olm_clear_account,a._olm_decrypt_max_plaintext_length=d._olm_decrypt_max_plaintext_length,a._olm_group_decrypt=d._olm_group_decrypt,a._olm_account_last_error=d._olm_account_last_error,a._olm_remove_one_time_keys=d._olm_remove_one_time_keys,a._olm_inbound_group_session_id=d._olm_inbound_group_session_id,a._olm_import_inbound_group_session=d._olm_import_inbound_group_session,a._olm_clear_inbound_group_session=d._olm_clear_inbound_group_session,a._olm_export_inbound_group_session_length=d._olm_export_inbound_group_session_length,a._olm_export_inbound_group_session=d._olm_export_inbound_group_session,a._olm_account_one_time_keys_length=d._olm_account_one_time_keys_length,a._olm_unpickle_inbound_group_session=d._olm_unpickle_inbound_group_session,a._olm_inbound_group_session_first_known_index=d._olm_inbound_group_session_first_known_index,a._olm_inbound_group_session_last_error=d._olm_inbound_group_session_last_error,a._olm_pickle_session=d._olm_pickle_session,a._olm_encrypt=d._olm_encrypt,a._olm_session_id=d._olm_session_id,a._olm_sha256=d._olm_sha256,a._olm_account_signature_length=d._olm_account_signature_length,a._olm_decrypt=d._olm_decrypt,a._olm_account_max_number_of_one_time_keys=d._olm_account_max_number_of_one_time_keys,a._olm_matches_inbound_session_from=d._olm_matches_inbound_session_from,a._olm_outbound_group_session_size=d._olm_outbound_group_session_size,a._olm_account_identity_keys_length=d._olm_account_identity_keys_length,a._olm_utility=d._olm_utility,a._olm_create_account=d._olm_create_account,a._olm_session_has_received_message=d._olm_session_has_received_message,a._olm_utility_size=d._olm_utility_size,a._olm_account_size=d._olm_account_size,a._olm_ed25519_verify=d._olm_ed25519_verify;var ob=a._memset=d._memset;a._olm_create_outbound_session_random_length=d._olm_create_outbound_session_random_length,a._olm_pickle_outbound_group_session=d._olm_pickle_outbound_group_session,a._olm_group_encrypt_message_length=d._olm_group_encrypt_message_length,a._olm_pickle_outbound_group_session_length=d._olm_pickle_outbound_group_session_length,a._olm_account_generate_one_time_keys_random_length=d._olm_account_generate_one_time_keys_random_length,a._olm_outbound_group_session_key=d._olm_outbound_group_session_key,a._olm_group_encrypt=d._olm_group_encrypt,a._olm_pickle_account_length=d._olm_pickle_account_length;var lb=a._i64Subtract=d._i64Subtract;a._olm_unpickle_account=d._olm_unpickle_account,a._olm_clear_session=d._olm_clear_session,a._olm_pickle_session_length=d._olm_pickle_session_length,a._olm_create_outbound_session=d._olm_create_outbound_session,a._olm_inbound_group_session_size=d._olm_inbound_group_session_size,a._olm_sha256_length=d._olm_sha256_length;var X=a._malloc=d._malloc;a._olm_account=d._olm_account,a._olm_account_identity_keys=d._olm_account_identity_keys,a._olm_session_size=d._olm_session_size,a._olm_inbound_group_session_is_verified=d._olm_inbound_group_session_is_verified,a._olm_session=d._olm_session;var qb=a._bitshift64Shl=d._bitshift64Shl;a._olm_outbound_group_session_id_length=d._olm_outbound_group_session_id_length,a._olm_create_inbound_session=d._olm_create_inbound_session,a._olm_clear_outbound_group_session=d._olm_clear_outbound_group_session,a._olm_session_id_length=d._olm_session_id_length;var mb=a._i64Add=d._i64Add;a._olm_group_decrypt_max_plaintext_length=d._olm_group_decrypt_max_plaintext_length,a._olm_outbound_group_session=d._olm_outbound_group_session,a._olm_encrypt_message_length=d._olm_encrypt_message_length,a._olm_pickle_account=d._olm_pickle_account,a._olm_account_mark_keys_as_published=d._olm_account_mark_keys_as_published,a._olm_init_outbound_group_session=d._olm_init_outbound_group_session,a._olm_outbound_group_session_key_length=d._olm_outbound_group_session_key_length,a._olm_session_last_error=d._olm_session_last_error,a._olm_outbound_group_session_id=d._olm_outbound_group_session_id,a.dynCall_ii=d.dynCall_ii,a.dynCall_iiiiiiiiii=d.dynCall_iiiiiiiiii,a.dynCall_iii=d.dynCall_iii,e.j=d.stackAlloc,e.f=d.stackSave,e.d=d.stackRestore,e.J=d.establishStackSpace,e.C=d.setTempRet0,e.A=d.getTempRet0,T.prototype=Error(),T.prototype.constructor=T;var jb,Qa=null,ea=function e(){a.calledRun||xa(),a.calledRun||(ea=e)};a.callMain=a.H=function(e){function r(){for(var e=0;3>e;e++)i.push(0)}e=e||[],Y||(Y=!0,S(la));var n=e.length+1,i=[K(ia(a.thisProgram),"i8",0)];r();for(var t=0;t<n-1;t+=1)i.push(K(ia(e[t]),"i8",0)),r();i.push(0),i=K(i,"i32",0);try{Ra(a._main(n,i,0),!0)}catch(e){if(!(e instanceof T)){if("SimulateInfiniteLoop"!=e)throw e&&"object"==typeof e&&e.stack&&a.o("exception thrown: "+[e,e.stack]),e;a.noExitRuntime=!0}}},a.run=a.run=xa,a.exit=a.exit=Ra;var Ta=[];if(a.abort=a.abort=Q,a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();var Pa=!1;a.noInitialRun&&(Pa=!1),xa();var q=1;L.prototype.free=function(){a._olm_clear_outbound_group_session(this.a),y(this.a)},L.prototype.pickle=k(function(e){e=m(e);var n=v(a._olm_pickle_outbound_group_session_length)(this.a),i=h(e),t=h(n+q);return v(a._olm_pickle_outbound_group_session)(this.a,i,e.length,t,n),r(t)}),L.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);v(a._olm_unpickle_outbound_group_session)(this.a,i,n.length,o,t.length)}),L.prototype.create=k(function(){var e=v(a._olm_init_outbound_group_session_random_length)(this.a),r=ba(e);v(a._olm_init_outbound_group_session)(this.a,r,e)}),L.prototype.encrypt=function(e){var r,n,i;try{i=a.lengthBytesUTF8(e);var t=v(a._olm_group_encrypt_message_length)(this.a,i);return r=u(i+1),a.stringToUTF8(e,r,i+1),n=u(t+q),v(a._olm_group_encrypt)(this.a,r,i,n,t),a.setValue(n+t,0,"i8"),a.UTF8ToString(n)}finally{void 0!==r&&(na(r,i+1),y(r)),void 0!==n&&y(n)}},L.prototype.session_id=k(function(){var e=v(a._olm_outbound_group_session_id_length)(this.a),n=h(e+q);return v(a._olm_outbound_group_session_id)(this.a,n,e),r(n)}),L.prototype.session_key=k(function(){var e=v(a._olm_outbound_group_session_key_length)(this.a),n=h(e+q);return v(a._olm_outbound_group_session_key)(this.a,n,e),r(n)}),L.prototype.message_index=function(){return v(a._olm_outbound_group_session_message_index)(this.a)},N.OutboundGroupSession=L,q=1,I.prototype.free=function(){a._olm_clear_inbound_group_session(this.a),y(this.a)},I.prototype.pickle=k(function(e){e=m(e);var n=F(a._olm_pickle_inbound_group_session_length)(this.a),i=h(e),t=h(n+q);return F(a._olm_pickle_inbound_group_session)(this.a,i,e.length,t,n),r(t)}),I.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);F(a._olm_unpickle_inbound_group_session)(this.a,i,n.length,o,t.length)}),I.prototype.create=k(function(e){var r=h(e=m(e));F(a._olm_init_inbound_group_session)(this.a,r,e.length)}),I.prototype.import_session=k(function(e){var r=h(e=m(e));F(a._olm_import_inbound_group_session)(this.a,r,e.length)}),I.prototype.decrypt=k(function(e){var r,n,i;try{r=u(e.length),a.writeAsciiToMemory(e,r,!0);var t=F(a._olm_group_decrypt_max_plaintext_length)(this.a,r,e.length);a.writeAsciiToMemory(e,r,!0),n=u(t+q);var o=h(4);return i=F(a._olm_group_decrypt)(this.a,r,e.length,n,t,o),a.setValue(n+i,0,"i8"),{plaintext:sa(n),message_index:a.getValue(o,"i32")}}finally{void 0!==r&&y(r),void 0!==n&&(na(n,i+q),y(n))}}),I.prototype.session_id=k(function(){var e=F(a._olm_inbound_group_session_id_length)(this.a),n=h(e+q);return F(a._olm_inbound_group_session_id)(this.a,n,e),r(n)}),I.prototype.first_known_index=k(function(){return F(a._olm_inbound_group_session_first_known_index)(this.a)}),I.prototype.export_session=k(function(e){var n=F(a._olm_export_inbound_group_session_length)(this.a),i=h(n+q);return v(a._olm_export_inbound_group_session)(this.a,i,n,e),r(i)}),N.InboundGroupSession=I;var Ua=a.Runtime,u=a._malloc,y=a._free,r=a.Pointer_stringify,aa=a._olm_error(),q=1;C.prototype.free=function(){a._olm_clear_account(this.a),y(this.a)},C.prototype.create=k(function(){var e=t(a._olm_create_account_random_length)(this.a),r=ba(e);t(a._olm_create_account)(this.a,r,e)}),C.prototype.identity_keys=k(function(){var e=t(a._olm_account_identity_keys_length)(this.a),n=h(e+q);return t(a._olm_account_identity_keys)(this.a,n,e),r(n)}),C.prototype.sign=k(function(e){var n=t(a._olm_account_signature_length)(this.a),i=h(e=m(e)),o=h(n+q);return t(a._olm_account_sign)(this.a,i,e.length,o,n),r(o)}),C.prototype.one_time_keys=k(function(){var e=t(a._olm_account_one_time_keys_length)(this.a),n=h(e+q);return t(a._olm_account_one_time_keys)(this.a,n,e),r(n)}),C.prototype.mark_keys_as_published=k(function(){t(a._olm_account_mark_keys_as_published)(this.a)}),C.prototype.max_number_of_one_time_keys=k(function(){return t(a._olm_account_max_number_of_one_time_keys)(this.a)}),C.prototype.generate_one_time_keys=k(function(e){var r=t(a._olm_account_generate_one_time_keys_random_length)(this.a,e),n=ba(r);t(a._olm_account_generate_one_time_keys)(this.a,e,n,r)}),C.prototype.remove_one_time_keys=k(function(e){t(a._olm_remove_one_time_keys)(this.a,e.a)}),C.prototype.pickle=k(function(e){e=m(e);var n=t(a._olm_pickle_account_length)(this.a),i=h(e),o=h(n+q);return t(a._olm_pickle_account)(this.a,i,e.length,o,n),r(o)}),C.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),o=m(r),u=h(o);t(a._olm_unpickle_account)(this.a,i,n.length,u,o.length)}),w.prototype.free=function(){a._olm_clear_session(this.a),y(this.a)},w.prototype.pickle=k(function(e){e=m(e);var n=p(a._olm_pickle_session_length)(this.a),i=h(e),t=h(n+q);return p(a._olm_pickle_session)(this.a,i,e.length,t,n),r(t)}),w.prototype.unpickle=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);p(a._olm_unpickle_session)(this.a,i,n.length,o,t.length)}),w.prototype.create_outbound=k(function(e,r,n){var i=p(a._olm_create_outbound_session_random_length)(this.a),t=ba(i);r=m(r),n=m(n);var o=h(r),u=h(n);p(a._olm_create_outbound_session)(this.a,e.a,o,r.length,u,n.length,t,i)}),w.prototype.create_inbound=k(function(e,r){var n=m(r),i=h(n);p(a._olm_create_inbound_session)(this.a,e.a,i,n.length)}),w.prototype.create_inbound_from=k(function(e,r,n){var i=h(r=m(r)),t=h(n=m(n));p(a._olm_create_inbound_session_from)(this.a,e.a,i,r.length,t,n.length)}),w.prototype.session_id=k(function(){var e=p(a._olm_session_id_length)(this.a),n=h(e+q);return p(a._olm_session_id)(this.a,n,e),r(n)}),w.prototype.has_received_message=function(){return!!p(a._olm_session_has_received_message)(this.a)},w.prototype.matches_inbound=k(function(e){var r=h(e=m(e));return!!p(a._olm_matches_inbound_session)(this.a,r,e.length)}),w.prototype.matches_inbound_from=k(function(e,r){var n=m(e),i=h(n),t=m(r),o=h(t);return!!p(a._olm_matches_inbound_session_from)(this.a,i,n.length,o,t.length)}),w.prototype.encrypt=k(function(e){var r,n,i;try{var t=p(a._olm_encrypt_random_length)(this.a),o=p(a._olm_encrypt_message_type)(this.a);i=a.lengthBytesUTF8(e);var s=p(a._olm_encrypt_message_length)(this.a,i),_=ba(t);return r=u(i+1),a.stringToUTF8(e,r,i+1),n=u(s+q),p(a._olm_encrypt)(this.a,r,i,_,t,n,s),a.setValue(n+s,0,"i8"),{type:o,body:a.UTF8ToString(n)}}finally{void 0!==r&&(na(r,i+1),y(r)),void 0!==n&&y(n)}}),w.prototype.decrypt=k(function(e,r){var n,i,t;try{n=u(r.length),a.writeAsciiToMemory(r,n,!0),t=p(a._olm_decrypt_max_plaintext_length)(this.a,e,n,r.length),a.writeAsciiToMemory(r,n,!0),i=u(t+q);var o=p(a._olm_decrypt)(this.a,e,n,r.length,i,t);return a.setValue(i+o,0,"i8"),sa(i)}finally{void 0!==n&&y(n),void 0!==i&&(na(i,t+q),y(i))}}),oa.prototype.free=function(){a._olm_clear_utility(this.a),y(this.a)},oa.prototype.sha256=k(function(e){var n=ya(a._olm_sha256_length)(this.a),i=h(e=m(e)),t=h(n+q);return ya(a._olm_sha2516)(this.a,i,e.length(),t,n),r(t)}),oa.prototype.ed25519_verify=k(function(e,r,n){var i=h(e=m(e)),t=h(r=m(r)),o=h(n=m(n));ya(a._olm_ed25519_verify)(this.a,i,e.length,t,r.length,o,n.length)}),N.Account=C,N.Session=w,N.Utility=oa,N.get_library_version=k(function(){var e=h(3);return a._olm_get_library_version(e,e+1,e+2),[W(e,"i8"),W(e+1,"i8"),W(e+2,"i8")]})}(),void 0!==module&&module.exports&&(module.exports=N),"undefined"!=typeof window&&(window.Olm=N)}}); +//# sourceMappingURL=olm.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/olm.js.map b/riot/bundles/f5c70ee9a294f6e4590e/olm.js.map new file mode 100644 index 0000000..bf57a2f --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/olm.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap","(webpack)/buildin/global.js","src/vector/olm-loader.js","node_modules/olm/olm.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","g","this","Function","eval","e","window","global","OLM_OPTIONS","TOTAL_STACK","TOTAL_MEMORY","require","N","ra","process","P","crypto","getRandomValues","Error","cb","z","randomBytes","length","set","a","b","Q","Ba","Ca","charAt","A","fa","D","tempI64","tempDouble","db","eb","fb","gb","ga","ha","W","K","f","Da","h","X","j","Math","max","subarray","slice","B","Uint8Array","k","O","String","fromCharCode","apply","min","UTF8ToString","Ea","sa","ta","charCodeAt","Fa","hb","replace","___cxa_demangle","ua","substr","va","Ga","stack","toString","ib","S","shift","Ha","Ia","unshift","Ja","Ka","ia","Array","La","Ma","Na","___errno_location","ja","E","v","wa","push","T","message","status","xa","calledRun","ka","Y","la","Oa","onRuntimeInitialized","_main","Pa","callMain","postRun","arguments","Qa","Date","now","R","preRun","setStatus","setTimeout","Ra","noExitRuntime","H","jb","Sa","onExit","Z","exit","ma","quit","print","JSON","stringify","Ta","forEach","L","_olm_outbound_group_session_size","u","_olm_outbound_group_session","aa","_olm_outbound_group_session_last_error","I","_olm_inbound_group_session_size","_olm_inbound_group_session","F","_olm_inbound_group_session_last_error","allocate","ALLOC_STACK","intArrayFromString","ba","HEAPU8","buffer","Ua","na","HEAP8","C","_olm_account_size","_olm_account","_olm_account_last_error","w","_olm_session_size","_olm_session","_olm_session_last_error","oa","_olm_utility_size","_olm_utility","ya","_olm_utility_last_error","G","ca","da","U","pa","qa","ENVIRONMENT","importScripts","console","log","printErr","warn","read","normalize","readFileSync","resolve","path","join","__dirname","readBinary","load","thisProgram","argv","on","inspect","readbuffer","scriptArgs","XMLHttpRequest","open","send","responseText","readAsync","responseType","onload","response","onerror","setWindowTitle","document","title","tempRet0","parseInt","splice","M","J","V","q","ceil","Runtime","addFunction","removeFunction","Va","Wa","match","body","returnValue","stackSave","stackRestore","arrayToC","stringToC","string","array","async","EmterpreterAsync","every","map","ccall","cwrap","setValue","getValue","ALLOC_NORMAL","ALLOC_STATIC","ALLOC_DYNAMIC","ALLOC_NONE","getMemory","Xa","Pointer_stringify","AsciiToString","stringToAscii","UTF8ArrayToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","stackTrace","x","Ya","Za","$a","ab","za","bb","ArrayBuffer","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU16","Uint16Array","HEAPU32","Uint32Array","HEAPF32","Float32Array","HEAPF64","Float64Array","HEAP","addOnPreRun","addOnInit","addOnPreMain","addOnExit","addOnPostRun","intArrayToString","writeStringToMemory","writeArrayToMemory","writeAsciiToMemory","imul","clz32","abs","floor","Aa","ea","addRunDependency","monitorRunDependencies","removeRunDependency","clearInterval","preloadedImages","preloadedAudios","kb","_i64Subtract","lb","_i64Add","mb","_bitshift64Ashr","nb","_memset","ob","_bitshift64Lshr","pb","_bitshift64Shl","qb","_memcpy","rb","sb","NaN","Infinity","abort","assert","invoke_ii","dynCall_ii","setThrew","invoke_iiiiiiiiii","dynCall_iiiiiiiiii","invoke_iii","dynCall_iii","_pthread_self","_abort","___setErrNo","_llvm_stacksave","_sbrk","_time","_emscripten_memcpy_big","_llvm_stackrestore","_sysconf","navigator","hardwareConcurrency","STACKTOP","STACK_MAX","tempDoublePtr","ABORT","cttz_i8","env","y","sqrt","pow","cos","sin","tan","acos","asin","atan","atan2","exp","_","$","qf","_a","Wc","Fb","Gb","Yc","Cd","ff","jd","Xc","tb","ub","Nb","vb","wb","xb","dd","yb","ed","zb","fd","Ab","gd","Bb","hd","Cb","Zc","Db","_c","Eb","$c","af","Hb","Xd","Ib","ae","Jb","$d","Kb","Lb","Ze","Xe","Mb","$e","Ue","Ve","We","Ob","Pb","Qb","Rb","Sb","he","Tb","Ub","Vb","Wb","Xb","Yb","id","Zb","_b","Sc","$b","ac","bc","cc","ie","xd","dc","ec","yd","je","ke","fc","gc","le","zd","hc","ic","ld","jc","md","kc","nd","lc","od","mc","pd","nc","qd","oc","rd","pc","sd","qc","td","rc","ud","sc","vd","tc","wd","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","kd","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Tc","Lc","Uc","Mc","Vc","Nc","Oc","Pc","Qc","Rc","Dd","cd","bd","ad","Ad","Bd","Ed","pf","lf","of","kf","mf","Fd","Gd","Hd","vf","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Td","Sd","Ud","Vd","Wd","Yd","Zd","_d","be","ce","de","ee","fe","ge","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","nf","Ye","_e","bf","cf","df","ef","gf","hf","jf","rf","sf","tf","yf","uf","wf","xf","zf","Af","Bf","Cf","Df","Ef","_olm_create_inbound_session_from","_olm_unpickle_outbound_group_session","_olm_clear_utility","_olm_outbound_group_session_message_index","_olm_account_sign","_olm_account_one_time_keys","_olm_encrypt_random_length","_olm_init_inbound_group_session","_olm_matches_inbound_session","_olm_error","_olm_session_has_received_message","_olm_create_account_random_length","_olm_pickle_inbound_group_session","_free","_olm_inbound_group_session_id_length","_olm_unpickle_session","_olm_encrypt_message_type","_olm_init_outbound_group_session_random_length","_olm_get_library_version","_olm_pickle_inbound_group_session_length","_olm_clear_account","_olm_decrypt_max_plaintext_length","_olm_group_decrypt","_olm_group_decrypt_max_plaintext_length","_olm_remove_one_time_keys","_olm_inbound_group_session_id","_olm_import_inbound_group_session","_olm_clear_inbound_group_session","_olm_export_inbound_group_session_length","_olm_export_inbound_group_session","_olm_account_one_time_keys_length","_olm_unpickle_inbound_group_session","_olm_inbound_group_session_first_known_index","_olm_pickle_session","_olm_encrypt","_olm_session_id","_olm_sha256","_olm_account_signature_length","_olm_decrypt","_olm_account_max_number_of_one_time_keys","_olm_matches_inbound_session_from","_olm_account_identity_keys_length","_olm_create_account","_olm_account_generate_one_time_keys","_olm_ed25519_verify","_olm_create_outbound_session_random_length","_olm_pickle_outbound_group_session","_olm_group_encrypt_message_length","_olm_pickle_outbound_group_session_length","_olm_account_generate_one_time_keys_random_length","_olm_outbound_group_session_key","_olm_group_encrypt","_olm_account_identity_keys","_olm_unpickle_account","_olm_clear_session","_olm_pickle_session_length","_olm_create_outbound_session","_olm_sha256_length","_malloc","_olm_pickle_account_length","_olm_inbound_group_session_is_verified","_olm_outbound_group_session_id_length","_olm_create_inbound_session","_olm_clear_outbound_group_session","_olm_session_id_length","_olm_encrypt_message_length","_olm_pickle_account","_olm_account_mark_keys_as_published","_olm_init_outbound_group_session","_olm_outbound_group_session_key_length","_olm_outbound_group_session_id","runPostSets","stackAlloc","establishStackSpace","setTempRet0","getTempRet0","constructor","run","preInit","pop","noInitialRun","free","pickle","unpickle","encrypt","session_id","session_key","message_index","OutboundGroupSession","import_session","decrypt","plaintext","first_known_index","export_session","InboundGroupSession","identity_keys","sign","one_time_keys","mark_keys_as_published","max_number_of_one_time_keys","generate_one_time_keys","remove_one_time_keys","create_outbound","create_inbound","create_inbound_from","has_received_message","matches_inbound","matches_inbound_from","type","sha256","_olm_sha2516","ed25519_verify","Account","Session","Utility","get_library_version","Olm"],"mappings":"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CA,sfACA,wfACA,sfACA,wfACA,sfACA,sfACA,wfACA,ufACA,ufACA,sfACA,ufACA,sfACA,qfACA,qfACA,wfACA,wfACA,qfACA,sfACA,ufACA,qfACA,wfACA,wfACA,qfACA,sfACA,sfACA,ufACA,sfACA,wfACA,qfACA,sfACA,qfACA,sfACA,6RAAArC,EAAAwC,GAAkSH,GAAA,gNAClS,wfACA,qfACA,sfACA,qfACA,ufACA,ufACA,qfACA,sfACA,ufACA,sfACA,wfACA,wfACA,sfACA,qfACA,ufACA,ufACA,ufACA,wfACA,sfACA,ufACA,sfACA,qfACA,sfACA,ufACA,wfACA,ufACA,wfACA,qfACA,sfACA,qfACA,qfACA,qfACA,qfACA,ufACA,sfACA,sfACA,wfACA,wfACA,qfACA,sfACA,sfACA,sfACA,wfACA,wfACA,sfACA,ufACA,qfACA,ufACA,wfACA,wfACA,ufACA,qfACA,ufACA,ufACA,qfACA,ufACA,sfACA,ufACA,wfACA,qfACA,sfACA,qfACA,sfACA,sfACA,ufACA,wfACA,wfACA,ufACA,sfACA,oOAAArC,EAAAwC,EAAA,OAA+OH,GAAA,mQAC/O,ufACA,wfACA,sfACA,qfACA,sfACA,qfACA,ufACA,qfACA,ufACA,ufACA,qfACA,ufACA,qfACA,wfACA,wfACA,qfACA,qfACA,qfACA,wfACA,qfACA,qfACA,sfACA,qfACA,qfACA,wfACA,wfACA,sfACA,wfACA,qfACA,ufACA,sfACA,ufACA,sfACA,qfACA,qfACA,qfACA,ufACA,wfACA,ufACA,sfACA,sfACA,ufACA,sfACA,ufACA,sfACA,sfACA,sfACA,wfACA,qfACA,ufACA,ufACA,ufACA,ufACA,qfACA,qfACA,sfACA,sfACA,qfACA,qfACA,qfACA,sfACA,ufACA,qfACA,wfACA,ufACA,wfACA,sfACA,ufACA,wfACA,gWAAArC,EAAAwC,EAAA,OAA2WH,GAAA,wIAC3W,ufACA,qfACA,wfACA,sfACA,wfACA,sfACA,ufACA,qfACA,qfACA,sfACA,wfACA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","file":"bundles/f5c70ee9a294f6e4590e/olm.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1881);\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","/*\nCopyright 2016 OpenMarket Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n/* a very thin shim for loading olm.js: just sets the global OLM_OPTIONS and\n * requires the actual olm.js library.\n *\n * olm.js reads global.OLM_OPTIONS and defines global.Olm. The latter is fine for us,\n * but we need to prepare the former.\n *\n * We can't use webpack's definePlugin to do this, because we tell webpack not\n * to parse olm.js. We also can't put this code in index.js, because olm and\n * index.js are loaded in parallel, and we need to make sure OLM_OPTIONS is set\n * before olm.js is loaded.\n */\n\n/* total_memory must be a power of two, and at least twice the stack.\n *\n * We don't need a lot of stack, but we do need about 128K of heap to encrypt a\n * 64K event (enough to store the ciphertext and the plaintext, bearing in mind\n * that the plaintext can only be 48K because base64). We also have about 36K\n * of statics. So let's have 256K of memory.\n */\nglobal.OLM_OPTIONS = {\n TOTAL_STACK: 64*1024,\n TOTAL_MEMORY: 256*1024,\n};\n\nrequire('olm/olm.js');\n","var N={},ra,process;if(\"undefined\"!==typeof window)ra=function(P){window.crypto.getRandomValues(P)};else if(module.exports){var cb=require(\"crypto\");ra=function(P){var z=cb.randomBytes(P.length);P.set(z)};process=global.process}else throw Error(\"Cannot find global to attach library to\");\n(function(){function P(a){eval.call(null,a)}function z(a,b){a||Q(\"Assertion failed: \"+b)}function Ba(g){var b=a[\"_\"+g];if(!b)try{b=eval(\"_\"+g)}catch(c){}z(b,\"Cannot call unknown function \"+g+\" (perhaps LLVM optimizations or closure removed it?)\");return b}function Ca(a,b,c){c=c||\"i8\";\"*\"===c.charAt(c.length-1)&&(c=\"i32\");switch(c){case \"i1\":A[a>>0]=b;break;case \"i8\":A[a>>0]=b;break;case \"i16\":fa[a>>1]=b;break;case \"i32\":D[a>>2]=b;break;case \"i64\":tempI64=[b>>>0,(tempDouble=b,1<=+db(tempDouble)?0<\ntempDouble?(eb(+fb(tempDouble/4294967296),4294967295)|0)>>>0:~~+gb((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)];D[a>>2]=tempI64[0];D[a+4>>2]=tempI64[1];break;case \"float\":ga[a>>2]=b;break;case \"double\":ha[a>>3]=b;break;default:Q(\"invalid type for setValue: \"+c)}}function W(a,b){b=b||\"i8\";\"*\"===b.charAt(b.length-1)&&(b=\"i32\");switch(b){case \"i1\":return A[a>>0];case \"i8\":return A[a>>0];case \"i16\":return fa[a>>1];case \"i32\":return D[a>>2];case \"i64\":return D[a>>2];case \"float\":return ga[a>>2];\ncase \"double\":return ha[a>>3];default:Q(\"invalid type for setValue: \"+b)}return null}function K(a,b,c,f){var d,l;\"number\"===typeof a?(d=!0,l=a):(d=!1,l=a.length);var n=\"string\"===typeof b?b:null;c=4==c?f:[\"function\"===typeof X?X:e.p,e.j,e.p,e.e][void 0===c?2:c](Math.max(l,n?1:b.length));if(d){f=c;z(0==(c&3));for(a=c+(l&-4);f<a;f+=4)D[f>>2]=0;for(a=c+l;f<a;)A[f++>>0]=0;return c}if(\"i8\"===n)return a.subarray||a.slice?B.set(a,c):B.set(new Uint8Array(a),c),c;f=0;for(var Da,h;f<l;){var k=a[f];\"function\"===\ntypeof k&&(k=e.O(k));d=n||b[f];0===d?f++:(\"i64\"==d&&(d=\"i32\"),Ca(c+f,k,d),h!==d&&(Da=e.r(d),h=d),f+=Da)}return c}function r(g,b){if(0===b||!g)return\"\";for(var c=0,f,d=0;;){f=B[g+d>>0];c|=f;if(0==f&&!b)break;d++;if(b&&d==b)break}b||(b=d);f=\"\";if(128>c){for(;0<b;)c=String.fromCharCode.apply(String,B.subarray(g,g+Math.min(b,1024))),f=f?f+c:c,g+=1024,b-=1024;return f}return a.UTF8ToString(g)}function Ea(a,b){for(var c,f,d,l,n,e,h=\"\";;){c=a[b++];if(!c)return h;c&128?(f=a[b++]&63,192==(c&224)?h+=String.fromCharCode((c&\n31)<<6|f):(d=a[b++]&63,224==(c&240)?c=(c&15)<<12|f<<6|d:(l=a[b++]&63,240==(c&248)?c=(c&7)<<18|f<<12|d<<6|l:(n=a[b++]&63,248==(c&252)?c=(c&3)<<24|f<<18|d<<12|l<<6|n:(e=a[b++]&63,c=(c&1)<<30|f<<24|d<<18|l<<12|n<<6|e))),65536>c?h+=String.fromCharCode(c):(c-=65536,h+=String.fromCharCode(55296|c>>10,56320|c&1023)))):h+=String.fromCharCode(c)}}function sa(a){return Ea(B,a)}function ta(a,b,c,f){if(!(0<f))return 0;var d=c;f=c+f-1;for(var l=0;l<a.length;++l){var n=a.charCodeAt(l);55296<=n&&57343>=n&&(n=65536+\n((n&1023)<<10)|a.charCodeAt(++l)&1023);if(127>=n){if(c>=f)break;b[c++]=n}else{if(2047>=n){if(c+1>=f)break;b[c++]=192|n>>6}else{if(65535>=n){if(c+2>=f)break;b[c++]=224|n>>12}else{if(2097151>=n){if(c+3>=f)break;b[c++]=240|n>>18}else{if(67108863>=n){if(c+4>=f)break;b[c++]=248|n>>24}else{if(c+5>=f)break;b[c++]=252|n>>30;b[c++]=128|n>>24&63}b[c++]=128|n>>18&63}b[c++]=128|n>>12&63}b[c++]=128|n>>6&63}b[c++]=128|n&63}}b[c]=0;return c-d}function Fa(a){for(var b=0,c=0;c<a.length;++c){var f=a.charCodeAt(c);\n55296<=f&&57343>=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++c)&1023);127>=f?++b:b=2047>=f?b+2:65535>=f?b+3:2097151>=f?b+4:67108863>=f?b+5:b+6}return b}function hb(g){return g.replace(/__Z[\\w\\d_]+/g,function(b){var c;a:{if(a.___cxa_demangle)try{var g=X(b.length);ua(b.substr(1),g);var d=X(4),l=a.___cxa_demangle(g,0,0,d);if(0===W(d,\"i32\")&&l){c=r(l);break a}}catch(n){c=b;break a}finally{g&&va(g),d&&va(d),l&&va(l)}e.g(\"warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling\");c=b}return b===\nc?b:b+\" [\"+c+\"]\"})}function Ga(){var a=hb,b;a:{b=Error();if(!b.stack){try{throw Error(0);}catch(c){b=c}if(!b.stack){b=\"(no stack trace available)\";break a}}b=b.stack.toString()}return a(b)}function ib(a){0<a%4096&&(a+=4096-a%4096);return a}function S(a){for(;0<a.length;){var b=a.shift();if(\"function\"==typeof b)b();else{var c=b.K;\"number\"===typeof c?void 0===b.l?e.m(\"v\",c):e.m(\"vi\",c,[b.l]):c(void 0===b.l?null:b.l)}}}function Ha(a){Ia.unshift(a)}function Ja(a){Ka.unshift(a)}function ia(a,b,c){c=Array(0<\nc?c:Fa(a)+1);a=ta(a,c,0,c.length);b&&(c.length=a);return c}function ua(a,b,c){a=ia(a,c);for(c=0;c<a.length;)A[b+c>>0]=a[c],c+=1}function La(a,b){for(var c=0;c<a.length;c++)A[b++>>0]=a[c]}function Ma(a,b,c){for(var f=0;f<a.length;++f)A[b++>>0]=a.charCodeAt(f);c||(A[b>>0]=0)}function Na(g){a.___errno_location&&(D[a.___errno_location()>>2]=g);return g}function ja(a){var b=ja;b.b||(E=ib(E),b.b=!0,z(e.e),b.v=e.e,e.e=function(){Q(\"cannot dynamically allocate, sbrk now has control\")});var c=E;return 0==\na||b.v(a)?c:4294967295}function wa(){var a=wa;a.b||(a.b=[]);a.b.push(e.f());return a.b.length-1}function T(a){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+a+\")\";this.status=a}function xa(g){function b(){if(!a.calledRun&&(a.calledRun=!0,!ka)){Y||(Y=!0,S(la));S(Oa);if(a.onRuntimeInitialized)a.onRuntimeInitialized();a._main&&Pa&&a.callMain(g);if(a.postRun)for(\"function\"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)Ja(a.postRun.shift());S(Ka)}}g=g||a.arguments;null===\nQa&&(Qa=Date.now());if(!(0<R)){if(a.preRun)for(\"function\"==typeof a.preRun&&(a.preRun=[a.preRun]);a.preRun.length;)Ha(a.preRun.shift());S(Ia);0<R||a.calledRun||(a.setStatus?(a.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){a.setStatus(\"\")},1);b()},1)):b())}}function Ra(g,b){if(!b||!a.noExitRuntime){if(!a.noExitRuntime&&(ka=!0,H=jb,S(Sa),a.onExit))a.onExit(g);Z?process.exit(g):ma&&\"function\"===typeof quit&&quit(g);throw new T(g);}}function Q(g){void 0!==g?(a.print(g),a.o(g),g=\nJSON.stringify(g)):g=\"\";ka=!0;var b=\"abort(\"+g+\") at \"+Ga()+\"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";Ta&&Ta.forEach(function(a){b=a(b,g)});throw b;}function L(){var g=a._olm_outbound_group_session_size();this.c=u(g);this.a=a._olm_outbound_group_session(this.c)}function v(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_outbound_group_session_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function I(){var g=a._olm_inbound_group_session_size();\nthis.c=u(g);this.a=a._olm_inbound_group_session(this.c)}function F(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_inbound_group_session_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function h(g){return a.allocate(g,\"i8\",a.ALLOC_STACK)}function m(g){return a.intArrayFromString(g,!0)}function ba(g){var b=h(g);g=new Uint8Array(a.HEAPU8.buffer,b,g);ra(g);return b}function k(a){return function(){var b=Ua.f();try{return a.apply(this,arguments)}finally{Ua.d(b)}}}function na(g,\nb){for(;0<b--;)a.HEAP8[g++]=0}function C(){var g=a._olm_account_size();this.c=u(g);this.a=a._olm_account(this.c)}function t(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_account_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function w(){var g=a._olm_session_size();this.c=u(g);this.a=a._olm_session(this.c)}function p(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_session_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}function oa(){var g=\na._olm_utility_size();this.c=u(g);this.a=a._olm_utility(this.c)}function ya(g){return function(){var b=g.apply(this,arguments);if(b===aa)throw b=r(a._olm_utility_last_error(arguments[0])),Error(\"OLM.\"+b);return b}}var a={};if(\"undefined\"!==typeof OLM_OPTIONS)for(var G in OLM_OPTIONS)OLM_OPTIONS.hasOwnProperty(G)&&(a[G]=OLM_OPTIONS[G]);a||(a=eval(\"(function() { try { return Module || {} } catch(e) { return {} } })()\"));var ca={};for(G in a)a.hasOwnProperty(G)&&(ca[G]=a[G]);var da=!1,U=!1,Z=!1,ma=!1;\nif(a.ENVIRONMENT)if(\"WEB\"===a.ENVIRONMENT)da=!0;else if(\"WORKER\"===a.ENVIRONMENT)U=!0;else if(\"NODE\"===a.ENVIRONMENT)Z=!0;else if(\"SHELL\"===a.ENVIRONMENT)ma=!0;else throw Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\");else da=\"object\"===typeof window,U=\"function\"===typeof importScripts,Z=\"object\"===typeof process&&\"function\"===typeof require&&!da&&!U,ma=!da&&!Z&&!U;if(Z){a.print||(a.print=console.log);a.printErr||(a.printErr=console.warn);\nvar pa,qa;a.read=function(a,b){pa||(pa=require(\"fs\"));qa||(qa=require(\"path\"));a=qa.normalize(a);var c=pa.readFileSync(a);c||a==qa.resolve(a)||(a=path.join(__dirname,\"..\",\"src\",a),c=pa.readFileSync(a));c&&!b&&(c=c.toString());return c};a.readBinary=function(g){g=a.read(g,!0);g.buffer||(g=new Uint8Array(g));z(g.buffer);return g};a.load=function(a){P(read(a))};a.thisProgram||(a.thisProgram=1<process.argv.length?process.argv[1].replace(/\\\\/g,\"/\"):\"unknown-program\");a.arguments=process.argv.slice(2);\n\"undefined\"!==typeof module&&(module.exports=a);process.on(\"uncaughtException\",function(a){if(!(a instanceof T))throw a;});a.inspect=function(){return\"[Emscripten Module object]\"}}else if(ma)a.print||(a.print=print),\"undefined\"!=typeof printErr&&(a.printErr=printErr),a.read=\"undefined\"!=typeof read?read:function(){throw\"no read() available (jsc?)\";},a.readBinary=function(a){if(\"function\"===typeof readbuffer)return new Uint8Array(readbuffer(a));a=read(a,\"binary\");z(\"object\"===typeof a);return a},\"undefined\"!=\ntypeof scriptArgs?a.arguments=scriptArgs:\"undefined\"!=typeof arguments&&(a.arguments=arguments),eval(\"if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined\");else if(da||U)a.read=function(a){var b=new XMLHttpRequest;b.open(\"GET\",a,!1);b.send(null);return b.responseText},a.readAsync=function(a,b,c){var f=new XMLHttpRequest;f.open(\"GET\",a,!0);f.responseType=\"arraybuffer\";f.onload=function(){200==f.status||0==f.status&&f.response?b(f.response):c()};f.onerror=\nc;f.send(null)},\"undefined\"!=typeof arguments&&(a.arguments=arguments),\"undefined\"!==typeof console?(a.print||(a.print=function(a){console.log(a)}),a.printErr||(a.printErr=function(a){console.warn(a)})):a.print||(a.print=function(){}),U&&(a.load=importScripts),\"undefined\"===typeof a.setWindowTitle&&(a.setWindowTitle=function(a){document.title=a});else throw\"Unknown runtime environment. Where are we?\";!a.load&&a.read&&(a.load=function(g){P(a.read(g))});a.print||(a.print=function(){});a.printErr||(a.printErr=\na.print);a.arguments||(a.arguments=[]);a.thisProgram||(a.thisProgram=\"./this.program\");a.print=a.print;a.o=a.printErr;a.preRun=[];a.postRun=[];for(G in ca)ca.hasOwnProperty(G)&&(a[G]=ca[G]);var ca=void 0,e={C:function(a){tempRet0=a},A:function(){return tempRet0},f:function(){return H},d:function(a){H=a},r:function(a){switch(a){case \"i1\":case \"i8\":return 1;case \"i16\":return 2;case \"i32\":return 4;case \"i64\":return 8;case \"float\":return 4;case \"double\":return 8;default:return\"*\"===a[a.length-1]?e.k:\n\"i\"===a[0]?(a=parseInt(a.substr(1)),z(0===a%8),a/8):0}},w:function(a){return Math.max(e.r(a),e.k)},D:16,R:function(a,b){\"double\"===b||\"i64\"===b?a&7&&(z(4===(a&7)),a+=4):z(0===(a&3));return a},L:function(a,b,c){return c||\"i64\"!=a&&\"double\"!=a?a?Math.min(b||(a?e.w(a):0),e.k):Math.min(b,8):8},m:function(g,b,c){return c&&c.length?(c.splice||(c=Array.prototype.slice.call(c)),c.splice(0,0,b),a[\"dynCall_\"+g].apply(null,c)):a[\"dynCall_\"+g].call(null,b)},i:[],s:function(a){for(var b=0;b<e.i.length;b++)if(!e.i[b])return e.i[b]=\na,2*(1+b);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\";},B:function(a){e.i[(a-2)/2]=null},g:function(g){e.g.b||(e.g.b={});e.g.b[g]||(e.g.b[g]=1,a.o(g))},n:{},N:function(a,b){z(b);e.n[b]||(e.n[b]={});var c=e.n[b];c[a]||(c[a]=function(){return e.m(b,a,arguments)});return c[a]},M:function(){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\";},j:function(a){var b=H;\nH=H+a|0;H=H+15&-16;return b},p:function(a){var b=J;J=J+a|0;J=J+15&-16;return b},e:function(a){var b=E;E=E+a|0;E=E+15&-16;if(a=E>=V)Q(\"Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value \"+V+\", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 \"),\na=!0;return a?(E=b,0):b},q:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},Q:function(a,b,c){return c?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},h:8,k:4,F:0};a.Runtime=e;e.addFunction=e.s;e.removeFunction=e.B;var ka=!1,Va,Wa;(function(){function a(b){b=b.toString().match(d).slice(1);return{arguments:b[0],body:b[1],returnValue:b[2]}}function b(){if(!l){l={};for(var b in c)c.hasOwnProperty(b)&&(l[b]=a(c[b]))}}var c={stackSave:function(){e.f()},stackRestore:function(){e.d()},arrayToC:function(a){var b=\ne.j(a.length);La(a,b);return b},stringToC:function(a){var b=0;null!==a&&void 0!==a&&0!==a&&(b=e.j((a.length<<2)+1),ua(a,b));return b}},f={string:c.stringToC,array:c.arrayToC};Wa=function(a,b,c,d,g){a=Ba(a);var O=[],l=0;if(d)for(var h=0;h<d.length;h++){var k=f[c[h]];k?(0===l&&(l=e.f()),O[h]=k(d[h])):O[h]=d[h]}c=a.apply(null,O);\"string\"===b&&(c=r(c));if(0!==l){if(g&&g.async){EmterpreterAsync.G.push(function(){e.d(l)});return}e.d(l)}return c};var d=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/,\nl=null;Va=function(c,f,d){d=d||[];var O=Ba(c);c=d.every(function(a){return\"number\"===a});var h=\"string\"!==f;if(h&&c)return O;var e=d.map(function(a,b){return\"$\"+b});f=\"(function(\"+e.join(\",\")+\") {\";var k=d.length;if(!c){b();f+=\"var stack = \"+l.stackSave.body+\";\";for(var m=0;m<k;m++){var q=e[m],p=d[m];\"number\"!==p&&(p=l[p+\"ToC\"],f+=\"var \"+p.arguments+\" = \"+q+\";\",f+=p.body+\";\",f+=q+\"=(\"+p.returnValue+\");\")}}d=a(function(){return O}).returnValue;f+=\"var ret = \"+d+\"(\"+e.join(\",\")+\");\";h||(d=a(function(){return r}).returnValue,\nf+=\"ret = \"+d+\"(ret);\");c||(b(),f+=l.stackRestore.body.replace(\"()\",\"(stack)\")+\";\");return eval(f+\"return ret})\")}})();a.ccall=Wa;a.cwrap=Va;a.setValue=Ca;a.getValue=W;a.ALLOC_NORMAL=0;a.ALLOC_STACK=1;a.ALLOC_STATIC=2;a.ALLOC_DYNAMIC=3;a.ALLOC_NONE=4;a.allocate=K;a.getMemory=function(a){return Xa?\"undefined\"!==typeof ja&&!ja.b||!Y?e.e(a):X(a):e.p(a)};a.Pointer_stringify=r;a.AsciiToString=function(a){for(var b=\"\";;){var c=A[a++>>0];if(!c)return b;b+=String.fromCharCode(c)}};a.stringToAscii=function(a,\nb){return Ma(a,b,!1)};a.UTF8ArrayToString=Ea;a.UTF8ToString=sa;a.stringToUTF8Array=ta;a.stringToUTF8=function(a,b,c){return ta(a,B,b,c)};a.lengthBytesUTF8=Fa;a.stackTrace=Ga;for(var x,A,B,fa,Ya,D,Za,ga,ha,$a=0,J=0,Xa=!1,ab=0,H=0,za=0,E=0,bb=a.TOTAL_STACK||5242880,V=a.TOTAL_MEMORY||16777216,M=65536;M<V||M<2*bb;)M=16777216>M?2*M:M+16777216;M!==V&&(V=M);a.buffer?x=a.buffer:x=new ArrayBuffer(V);a.HEAP8=A=new Int8Array(x);a.HEAP16=fa=new Int16Array(x);a.HEAP32=D=new Int32Array(x);a.HEAPU8=B=new Uint8Array(x);\na.HEAPU16=Ya=new Uint16Array(x);a.HEAPU32=Za=new Uint32Array(x);a.HEAPF32=ga=new Float32Array(x);a.HEAPF64=ha=new Float64Array(x);D[0]=255;if(255!==B[0]||0!==B[3])throw\"Typed arrays 2 must be run on a little-endian system\";a.HEAP=void 0;a.buffer=x;a.HEAP8=A;a.HEAP16=fa;a.HEAP32=D;a.HEAPU8=B;a.HEAPU16=Ya;a.HEAPU32=Za;a.HEAPF32=ga;a.HEAPF64=ha;var Ia=[],la=[],Oa=[],Sa=[],Ka=[],Y=!1;a.addOnPreRun=Ha;a.addOnInit=function(a){la.unshift(a)};a.addOnPreMain=function(a){Oa.unshift(a)};a.addOnExit=function(a){Sa.unshift(a)};\na.addOnPostRun=Ja;a.intArrayFromString=ia;a.intArrayToString=function(a){for(var b=[],c=0;c<a.length;c++){var f=a[c];255<f&&(f&=255);b.push(String.fromCharCode(f))}return b.join(\"\")};a.writeStringToMemory=ua;a.writeArrayToMemory=La;a.writeAsciiToMemory=Ma;Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(a,b){var c=a&65535,f=b&65535;return c*f+((a>>>16)*f+c*(b>>>16)<<16)|0});Math.P=Math.imul;Math.clz32||(Math.clz32=function(a){a=a>>>0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});\nMath.I=Math.clz32;var db=Math.abs,gb=Math.ceil,fb=Math.floor,eb=Math.min,R=0,Aa=null,ea=null;a.addRunDependency=function(){R++;a.monitorRunDependencies&&a.monitorRunDependencies(R)};a.removeRunDependency=function(){R--;a.monitorRunDependencies&&a.monitorRunDependencies(R);if(0==R&&(null!==Aa&&(clearInterval(Aa),Aa=null),ea)){var d=ea;ea=null;d()}};a.preloadedImages={};a.preloadedAudios={};$a=8;J=$a+36128;la.push();K([34,174,40,215,152,47,138,66,205,101,239,35,145,68,55,113,47,59,77,236,207,251,192,\n181,188,219,137,129,165,219,181,233,56,181,72,243,91,194,86,57,25,208,5,182,241,17,241,89,155,79,25,175,164,130,63,146,24,129,109,218,213,94,28,171,66,2,3,163,152,170,7,216,190,111,112,69,1,91,131,18,140,178,228,78,190,133,49,36,226,180,255,213,195,125,12,85,111,137,123,242,116,93,190,114,177,150,22,59,254,177,222,128,53,18,199,37,167,6,220,155,148,38,105,207,116,241,155,193,210,74,241,158,193,105,155,228,227,37,79,56,134,71,190,239,181,213,140,139,198,157,193,15,101,156,172,119,204,161,12,36,117,\n2,43,89,111,44,233,45,131,228,166,110,170,132,116,74,212,251,65,189,220,169,176,92,181,83,17,131,218,136,249,118,171,223,102,238,82,81,62,152,16,50,180,45,109,198,49,168,63,33,251,152,200,39,3,176,228,14,239,190,199,127,89,191,194,143,168,61,243,11,224,198,37,167,10,147,71,145,167,213,111,130,3,224,81,99,202,6,112,110,14,10,103,41,41,20,252,47,210,70,133,10,183,39,38,201,38,92,56,33,27,46,237,42,196,90,252,109,44,77,223,179,149,157,19,13,56,83,222,99,175,139,84,115,10,101,168,178,119,60,187,10,106,\n118,230,174,237,71,46,201,194,129,59,53,130,20,133,44,114,146,100,3,241,76,161,232,191,162,1,48,66,188,75,102,26,168,145,151,248,208,112,139,75,194,48,190,84,6,163,81,108,199,24,82,239,214,25,232,146,209,16,169,101,85,36,6,153,214,42,32,113,87,133,53,14,244,184,209,187,50,112,160,106,16,200,208,210,184,22,193,164,25,83,171,65,81,8,108,55,30,153,235,142,223,76,119,72,39,168,72,155,225,181,188,176,52,99,90,201,197,179,12,28,57,203,138,65,227,74,170,216,78,115,227,99,119,79,202,156,91,163,184,178,214,\n243,111,46,104,252,178,239,93,238,130,143,116,96,47,23,67,111,99,165,120,114,171,240,161,20,120,200,132,236,57,100,26,8,2,199,140,40,30,99,35,250,255,190,144,233,189,130,222,235,108,80,164,21,121,198,178,247,163,249,190,43,83,114,227,242,120,113,198,156,97,38,234,206,62,39,202,7,194,192,33,199,184,134,209,30,235,224,205,214,125,218,234,120,209,110,238,127,79,125,245,186,111,23,114,170,103,240,6,166,152,200,162,197,125,99,10,174,13,249,190,4,152,63,17,27,71,28,19,53,11,113,27,132,125,4,35,245,119,\n219,40,147,36,199,64,123,171,202,50,188,190,201,21,10,190,158,60,76,13,16,156,196,103,29,67,182,66,62,203,190,212,197,76,42,126,101,252,156,41,127,89,236,250,214,58,171,111,203,95,23,88,71,74,140,25,68,108,68,129,0,0,8,0,0,0,77,129,0,0,11,0,0,0,164,2,0,0,89,129,0,0,8,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,89,241,178,254,10,229,166,255,123,221,42,254,30,20,212,0,82,128,3,0,48,209,243,0,119,121,64,255,50,227,156,255,0,110,197,1,103,27,144,0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,\n0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,\n41,250,71,0,204,170,79,255,14,46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,\n62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,0,187,179,150,254,250,170,14,255,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,\n44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,47,99,168,254,170,226,153,255,102,179,216,0,226,141,122,255,122,66,153,254,182,245,134,0,227,228,25,1,214,57,235,255,216,173,56,255,181,231,210,0,119,128,157,255,129,95,136,255,110,126,51,0,2,169,183,255,7,130,98,254,69,176,94,255,116,4,227,1,217,242,145,255,202,173,31,1,105,1,39,255,46,175,69,0,228,47,58,255,215,224,69,254,207,56,69,255,16,254,139,255,23,207,212,255,202,20,126,255,95,213,96,255,9,176,33,0,200,5,207,255,241,42,128,254,35,33,\n192,255,248,229,196,1,129,17,120,0,251,103,151,255,7,52,112,255,140,56,66,255,40,226,245,255,217,70,37,254,172,214,9,255,72,67,134,1,146,192,214,255,44,38,112,0,68,184,75,255,206,90,251,0,149,235,141,0,181,170,58,0,116,244,239,0,92,157,2,0,102,173,98,0,233,137,96,1,127,49,203,0,5,155,148,0,23,148,9,255,211,122,12,0,34,134,26,255,219,204,136,0,134,8,41,255,224,83,43,254,85,25,247,0,109,127,0,254,169,136,48,0,238,119,219,255,231,173,213,0,206,18,254,254,8,186,7,255,126,9,7,1,111,42,72,0,111,52,236,\n254,96,63,141,0,147,191,127,254,205,78,192,255,14,106,237,1,187,219,76,0,175,243,187,254,105,89,173,0,85,25,89,1,162,243,148,0,2,118,209,254,33,158,9,0,139,163,46,255,93,70,40,0,108,42,142,254,111,252,142,255,155,223,144,0,51,229,167,255,73,252,155,255,94,116,12,255,152,160,218,255,156,238,37,255,179,234,207,255,197,0,179,255,154,164,141,0,225,196,104,0,10,35,25,254,209,212,242,255,97,253,222,254,184,101,229,0,222,18,127,1,164,136,135,255,30,207,140,254,146,97,243,0,129,192,26,254,201,84,33,255,111,\n10,78,255,147,81,178,255,4,4,24,0,161,238,215,255,6,141,33,0,53,215,14,255,41,181,208,255,231,139,157,0,179,203,221,255,255,185,113,0,189,226,172,255,113,66,214,255,202,62,45,255,102,64,8,255,78,174,16,254,133,117,68,255,182,120,89,255,133,114,211,0,189,110,21,255,15,10,106,0,41,192,1,0,152,232,121,255,188,60,160,255,153,113,206,255,0,183,226,254,180,13,72,255,176,160,14,254,211,201,134,255,158,24,143,0,127,105,53,0,96,12,189,0,167,215,251,255,159,76,128,254,106,101,225,255,30,252,4,0,146,12,174,\n0,133,59,140,1,189,241,36,255,248,37,195,1,96,220,55,0,183,76,62,255,195,66,61,0,50,76,164,1,225,164,76,255,76,61,163,255,117,62,31,0,81,145,64,255,118,65,14,0,162,115,214,255,6,138,46,0,124,230,244,255,10,138,143,0,52,26,194,0,184,244,76,0,129,143,41,1,190,244,19,255,123,170,122,255,98,129,68,0,121,213,147,0,86,101,30,255,161,103,155,0,140,89,67,255,239,229,190,1,67,11,181,0,198,240,137,254,238,69,188,255,234,113,60,255,37,255,57,255,69,178,182,254,128,208,179,0,118,26,125,254,3,7,214,255,241,50,\n77,255,85,203,197,255,211,135,250,255,25,48,100,255,187,213,180,254,17,88,105,0,83,209,158,1,5,115,98,0,4,174,60,254,171,55,110,255,217,181,17,255,20,188,170,0,146,156,102,254,87,214,174,255,114,122,155,1,233,44,170,0,127,8,239,1,214,236,234,0,175,5,219,0,49,106,61,255,6,66,208,255,2,106,110,255,81,234,19,255,215,107,192,255,67,151,238,0,19,42,108,255,229,85,113,1,50,68,135,255,17,106,9,0,50,103,1,255,80,1,168,1,35,152,30,255,16,168,185,1,56,89,232,255,101,210,252,0,41,250,71,0,204,170,79,255,14,\n46,239,255,80,77,239,0,189,214,75,255,17,141,249,0,38,80,76,255,190,85,117,0,86,228,170,0,156,216,208,1,195,207,164,255,150,66,76,255,175,225,16,255,141,80,98,1,76,219,242,0,198,162,114,0,46,218,152,0,155,43,241,254,155,160,104,255,178,9,252,254,100,110,212,0,14,5,167,0,233,239,163,255,28,151,157,1,101,146,10,255,254,158,70,254,71,249,228,0,88,30,50,0,68,58,160,255,191,24,104,1,129,66,129,255,192,50,85,255,8,179,138,255,38,250,201,0,115,80,160,0,131,230,113,0,125,88,147,0,90,68,199,0,253,76,158,0,\n28,255,118,0,113,250,254,0,66,75,46,0,230,218,43,0,229,120,186,1,148,68,43,0,136,124,238,1,187,107,197,255,84,53,246,255,51,116,254,255,51,187,165,0,2,17,175,0,66,84,160,1,247,58,30,0,35,65,53,254,69,236,191,0,45,134,245,1,163,123,221,0,32,110,20,255,52,23,165,0,186,214,71,0,233,176,96,0,242,239,54,1,57,89,138,0,83,0,84,255,136,160,100,0,92,142,120,254,104,124,190,0,181,177,62,255,250,41,85,0,152,130,42,1,96,252,246,0,151,151,63,254,239,133,62,0,32,56,156,0,45,167,189,255,142,133,179,1,131,86,211,\n0,187,179,150,254,250,170,14,255,68,113,21,255,222,186,59,255,66,7,241,1,69,6,72,0,86,156,108,254,55,167,89,0,109,52,219,254,13,176,23,255,196,44,106,255,239,149,71,255,164,140,125,255,159,173,1,0,51,41,231,0,145,62,33,0,138,111,93,1,185,83,69,0,144,115,46,0,97,151,16,255,24,228,26,0,49,217,226,0,113,75,234,254,193,153,12,255,182,48,96,255,14,13,26,0,128,195,249,254,69,193,59,0,132,37,81,254,125,106,60,0,214,240,169,1,164,227,66,0,210,163,78,0,37,52,151,0,99,77,26,0,238,156,213,255,213,192,209,1,\n73,46,84,0,20,65,41,1,54,206,79,0,201,131,146,254,170,111,24,255,177,33,50,254,171,38,203,255,78,247,116,0,209,221,153,0,133,128,178,1,58,44,25,0,201,39,59,1,189,19,252,0,49,229,210,1,117,187,117,0,181,179,184,1,0,114,219,0,48,94,147,0,245,41,56,0,125,13,204,254,244,173,119,0,44,221,32,254,84,234,20,0,249,160,198,1,236,126,234,255,143,62,221,0,129,89,214,255,55,139,5,254,68,20,191,255,14,204,178,1,35,195,217,0,47,51,206,1,38,246,165,0,206,27,6,254,158,87,36,0,217,52,146,255,125,123,215,255,85,60,\n31,255,171,13,7,0,218,245,88,254,252,35,60,0,55,214,160,255,133,101,56,0,224,32,19,254,147,64,234,0,26,145,162,1,114,118,125,0,248,252,250,0,101,94,196,255,198,141,226,254,51,42,182,0,135,12,9,254,109,172,210,255,197,236,194,1,241,65,154,0,48,156,47,255,153,67,55,255,218,165,34,254,74,180,179,0,218,66,71,1,88,122,99,0,212,181,219,255,92,42,231,255,239,0,154,0,245,77,183,255,94,81,170,1,18,213,216,0,171,93,71,0,52,94,248,0,18,151,161,254,197,209,66,255,174,244,15,254,162,48,183,0,49,61,240,254,182,\n93,195,0,199,228,6,1,200,5,17,255,137,45,237,255,108,148,4,0,90,79,237,255,39,63,77,255,53,82,207,1,142,22,118,255,101,232,18,1,92,26,67,0,5,200,88,255,33,168,138,255,149,225,72,0,2,209,27,255,44,245,168,1,220,237,17,255,30,211,105,254,141,238,221,0,128,80,245,254,111,254,14,0,222,95,190,1,223,9,241,0,146,76,212,255,108,205,104,255,63,117,153,0,144,69,48,0,35,228,111,0,192,33,193,255,112,214,190,254,115,152,151,0,23,102,88,0,51,74,248,0,226,199,143,254,204,162,101,255,208,97,189,1,245,104,18,0,230,\n246,30,255,23,148,69,0,110,88,52,254,226,181,89,255,208,47,90,254,114,161,80,255,33,116,248,0,179,152,87,255,69,144,177,1,88,238,26,255,58,32,113,1,1,77,69,0,59,121,52,255,152,238,83,0,52,8,193,0,231,39,233,255,199,34,138,0,222,68,173,0,91,57,242,254,220,210,127,255,192,7,246,254,151,35,187,0,195,236,165,0,111,93,206,0,212,247,133,1,154,133,209,255,155,231,10,0,64,78,38,0,122,249,100,1,30,19,97,255,62,91,249,1,248,133,77,0,197,63,168,254,116,10,82,0,184,236,113,254,212,203,194,255,61,100,252,254,\n36,5,202,255,119,91,153,255,129,79,29,0,103,103,171,254,237,215,111,255,216,53,69,0,239,240,23,0,194,149,221,255,38,225,222,0,232,255,180,254,118,82,133,255,57,209,177,1,139,232,133,0,158,176,46,254,194,115,46,0,88,247,229,1,28,103,191,0,221,222,175,254,149,235,44,0,151,228,25,254,218,105,103,0,142,85,210,0,149,129,190,255,213,65,94,254,117,134,224,255,82,198,117,0,157,221,220,0,163,101,36,0,197,114,37,0,104,172,166,254,11,182,0,0,81,72,188,255,97,188,16,255,69,6,10,0,199,147,145,255,8,9,115,1,65,\n214,175,255,217,173,209,0,80,127,166,0,247,229,4,254,167,183,124,255,90,28,204,254,175,59,240,255,11,41,248,1,108,40,51,255,144,177,195,254,150,250,126,0,138,91,65,1,120,60,222,255,245,193,239,0,29,214,189,255,128,2,25,0,80,154,162,0,77,220,107,1,234,205,74,255,54,166,103,255,116,72,9,0,228,94,47,255,30,200,25,255,35,214,89,255,61,176,140,255,83,226,163,255,75,130,172,0,128,38,17,0,95,137,152,255,215,124,159,1,79,93,0,0,148,82,157,254,195,130,251,255,40,202,76,255,251,126,224,0,157,99,62,254,207,\n7,225,255,96,68,195,0,140,186,157,255,131,19,231,255,42,128,254,0,52,219,61,254,102,203,72,0,141,7,11,255,186,164,213,0,31,122,119,0,133,242,145,0,208,252,232,255,91,213,182,255,143,4,250,254,249,215,74,0,165,30,111,1,171,9,223,0,229,123,34,1,92,130,26,255,77,155,45,1,195,139,28,255,59,224,78,0,136,17,247,0,108,121,32,0,79,250,189,255,96,227,252,254,38,241,62,0,62,174,125,255,155,111,93,255,10,230,206,1,97,197,40,255,0,49,57,254,65,250,13,0,18,251,150,255,220,109,210,255,5,174,166,254,44,129,189,\n0,235,35,147,255,37,247,141,255,72,141,4,255,103,107,255,0,247,90,4,0,53,44,42,0,2,30,240,0,4,59,63,0,88,78,36,0,113,167,180,0,190,71,193,255,199,158,164,255,58,8,172,0,77,33,12,0,65,63,3,0,153,77,33,255,172,254,102,1,228,221,4,255,87,30,254,1,146,41,86,255,138,204,239,254,108,141,17,255,187,242,135,0,210,208,127,0,68,45,14,254,73,96,62,0,81,60,24,255,170,6,36,255,3,249,26,0,35,213,109,0,22,129,54,255,21,35,225,255,234,61,56,255,58,217,6,0,143,124,88,0,236,126,66,0,209,38,183,255,34,238,6,255,174,\n145,102,0,95,22,211,0,196,15,153,254,46,84,232,255,117,34,146,1,231,250,74,255,27,134,100,1,92,187,195,255,170,198,112,0,120,28,42,0,209,70,67,0,29,81,31,0,29,168,100,1,169,173,160,0,107,35,117,0,62,96,59,255,81,12,69,1,135,239,190,255,220,252,18,0,163,220,58,255,137,137,188,255,83,102,109,0,96,6,76,0,234,222,210,255,185,174,205,1,60,158,213,255,13,241,214,0,172,129,140,0,93,104,242,0,192,156,251,0,43,117,30,0,225,81,158,0,127,232,218,0,226,28,203,0,233,27,151,255,117,43,5,255,242,14,47,255,33,20,\n6,0,137,251,44,254,27,31,245,255,183,214,125,254,40,121,149,0,186,158,213,255,89,8,227,0,69,88,0,254,203,135,225,0,201,174,203,0,147,71,184,0,18,121,41,254,94,5,78,0,224,214,240,254,36,5,180,0,251,135,231,1,163,138,212,0,210,249,116,254,88,129,187,0,19,8,49,254,62,14,144,255,159,76,211,0,214,51,82,0,109,117,228,254,103,223,203,255,75,252,15,1,154,71,220,255,23,13,91,1,141,168,96,255,181,182,133,0,250,51,55,0,234,234,212,254,175,63,158,0,39,240,52,1,158,189,36,255,213,40,85,1,32,180,247,255,19,102,\n26,1,84,24,97,255,69,21,222,0,148,139,122,255,220,213,235,1,232,203,255,0,121,57,147,0,227,7,154,0,53,22,147,1,72,1,225,0,82,134,48,254,83,60,157,255,145,72,169,0,34,103,239,0,198,233,47,0,116,19,4,255,184,106,9,255,183,129,83,0,36,176,230,1,34,103,72,0,219,162,134,0,245,42,158,0,32,149,96,254,165,44,144,0,202,239,72,254,215,150,5,0,42,66,36,1,132,215,175,0,86,174,86,255,26,197,156,255,49,232,135,254,103,182,82,0,253,128,176,1,153,178,122,0,245,250,10,0,236,24,178,0,137,106,132,0,40,29,41,0,50,30,\n152,255,124,105,38,0,230,191,75,0,143,43,170,0,44,131,20,255,44,13,23,255,237,255,155,1,159,109,100,255,112,181,24,255,104,220,108,0,55,211,131,0,99,12,213,255,152,151,145,255,238,5,159,0,97,155,8,0,33,108,81,0,1,3,103,0,62,109,34,255,250,155,180,0,32,71,195,255,38,70,145,1,159,95,245,0,69,229,101,1,136,28,240,0,79,224,25,0,78,110,121,255,248,168,124,0,187,128,247,0,2,147,235,254,79,11,132,0,70,58,12,1,181,8,163,255,79,137,133,255,37,170,11,255,141,243,85,255,176,231,215,255,204,150,164,255,239,215,\n39,255,46,87,156,254,8,163,88,255,172,34,232,0,66,44,102,255,27,54,41,254,236,99,87,255,41,123,169,1,52,114,43,0,117,134,40,0,155,134,26,0,231,207,91,254,35,132,38,255,19,102,125,254,36,227,133,255,118,3,113,255,29,13,124,0,152,96,74,1,88,146,206,255,167,191,220,254,162,18,88,255,182,100,23,0,31,117,52,0,81,46,106,1,12,2,7,0,69,80,201,1,209,246,172,0,12,48,141,1,224,211,88,0,116,226,159,0,122,98,130,0,65,236,234,1,225,226,9,255,207,226,123,1,89,214,59,0,112,135,88,1,90,244,203,255,49,11,38,1,129,\n108,186,0,89,112,15,1,101,46,204,255,127,204,45,254,79,255,221,255,51,73,18,255,127,42,101,255,241,21,202,0,160,227,7,0,105,50,236,0,79,52,197,255,104,202,208,1,180,15,16,0,101,197,78,255,98,77,203,0,41,185,241,1,35,193,124,0,35,155,23,255,207,53,192,0,11,125,163,1,249,158,185,255,4,131,48,0,21,93,111,255,61,121,231,1,69,200,36,255,185,48,185,255,111,238,21,255,39,50,25,255,99,215,163,255,87,212,30,255,164,147,5,255,128,6,35,1,108,223,110,255,194,76,178,0,74,101,180,0,243,47,48,0,174,25,43,255,82,\n173,253,1,54,114,192,255,40,55,91,0,215,108,176,255,11,56,7,0,224,233,76,0,209,98,202,254,242,25,125,0,44,193,93,254,203,8,177,0,135,176,19,0,112,71,213,255,206,59,176,1,4,67,26,0,14,143,213,254,42,55,208,255,60,67,120,0,193,21,163,0,99,164,115,0,10,20,118,0,156,212,222,254,160,7,217,255,114,245,76,1,117,59,123,0,176,194,86,254,213,15,176,0,78,206,207,254,213,129,59,0,233,251,22,1,96,55,152,255,236,255,15,255,197,89,84,255,93,149,133,0,174,160,113,0,234,99,169,255,152,116,88,0,144,164,83,255,95,29,\n198,255,34,47,15,255,99,120,134,255,5,236,193,0,249,247,126,255,147,187,30,0,50,230,117,255,108,217,219,255,163,81,166,255,72,25,169,254,155,121,79,255,28,155,89,254,7,126,17,0,147,65,33,1,47,234,253,0,26,51,18,0,105,83,199,255,163,196,230,0,113,248,164,0,226,254,218,0,189,209,203,255,164,247,222,254,255,35,165,0,4,188,243,1,127,179,71,0,37,237,254,255,100,186,240,0,5,57,71,254,103,72,73,255,244,18,81,254,229,210,132,255,238,6,180,255,11,229,174,255,227,221,192,1,17,49,28,0,163,215,196,254,9,118,\n4,255,51,240,71,0,113,129,109,255,76,240,231,0,188,177,127,0,125,71,44,1,26,175,243,0,94,169,25,254,27,230,29,0,15,139,119,1,168,170,186,255,172,197,76,255,252,75,188,0,137,124,196,0,72,22,96,255,45,151,249,1,220,145,100,0,64,192,159,255,120,239,226,0,129,178,146,0,0,192,125,0,235,138,234,0,183,157,146,0,83,199,192,255,184,172,72,255,73,225,128,0,77,6,250,255,186,65,67,0,104,246,207,0,188,32,138,255,218,24,242,0,67,138,81,254,237,129,121,255,20,207,150,1,41,199,16,255,6,20,128,0,159,118,5,0,181,16,\n143,255,220,38,15,0,23,64,147,254,73,26,13,0,87,228,57,1,204,124,128,0,43,24,223,0,219,99,199,0,22,75,20,255,19,27,126,0,157,62,215,0,110,29,230,0,179,167,255,1,54,252,190,0,221,204,182,254,179,158,65,255,81,157,3,0,194,218,159,0,170,223,0,0,224,11,32,255,38,197,98,0,168,164,37,0,23,88,7,1,164,186,110,0,96,36,134,0,234,242,229,0,250,121,19,0,242,254,112,255,3,47,94,1,9,239,6,255,81,134,153,254,214,253,168,255,67,124,224,0,245,95,74,0,28,30,44,254,1,109,220,255,178,89,89,0,252,36,76,0,24,198,46,255,\n76,77,111,0,134,234,136,255,39,94,29,0,185,72,234,255,70,68,135,255,231,102,7,254,77,231,140,0,167,47,58,1,148,97,118,255,16,27,225,1,166,206,143,255,110,178,214,255,180,131,162,0,143,141,225,1,13,218,78,255,114,153,33,1,98,104,204,0,175,114,117,1,167,206,75,0,202,196,83,1,58,64,67,0,138,47,111,1,196,247,128,255,137,224,224,254,158,112,207,0,154,100,255,1,134,37,107,0,198,128,79,255,127,209,155,255,163,254,185,254,60,14,243,0,31,219,112,254,29,217,65,0,200,13,116,254,123,60,196,255,224,59,184,254,\n242,89,196,0,123,16,75,254,149,16,206,0,69,254,48,1,231,116,223,255,209,160,65,1,200,80,98,0,37,194,184,254,148,63,34,0,139,240,65,255,217,144,132,255,56,38,45,254,199,120,210,0,108,177,166,255,160,222,4,0,220,126,119,254,165,107,160,255,82,220,248,1,241,175,136,0,144,141,23,255,169,138,84,0,160,137,78,255,226,118,80,255,52,27,132,255,63,96,139,255,152,250,39,0,188,155,15,0,232,51,150,254,40,15,232,255,240,229,9,255,137,175,27,255,75,73,97,1,218,212,11,0,135,5,162,1,107,185,213,0,2,249,107,255,40,\n242,70,0,219,200,25,0,25,157,13,0,67,82,80,255,196,249,23,255,145,20,149,0,50,72,146,0,94,76,148,1,24,251,65,0,31,192,23,0,184,212,201,255,123,233,162,1,247,173,72,0,162,87,219,254,126,134,89,0,159,11,12,254,166,105,29,0,73,27,228,1,113,120,183,255,66,163,109,1,212,143,11,255,159,231,168,1,255,128,90,0,57,14,58,254,89,52,10,255,253,8,163,1,0,145,210,255,10,129,85,1,46,181,27,0,103,136,160,254,126,188,209,255,34,35,111,0,215,219,24,255,212,11,214,254,101,5,118,0,232,197,133,255,223,167,109,255,237,\n80,86,255,70,139,94,0,158,193,191,1,155,15,51,255,15,190,115,0,78,135,207,255,249,10,27,1,181,125,233,0,95,172,13,254,170,213,161,255,39,236,138,255,95,93,87,255,190,128,95,0,125,15,206,0,166,150,159,0,227,15,158,255,206,158,120,255,42,141,128,0,101,178,120,1,156,109,131,0,218,14,44,254,247,168,206,255,212,112,28,0,112,17,228,255,90,16,37,1,197,222,108,0,254,207,83,255,9,90,243,255,243,244,172,0,26,88,115,255,205,116,122,0,191,230,193,0,180,100,11,1,217,37,96,255,154,78,156,0,235,234,31,255,206,178,\n178,255,149,192,251,0,182,250,135,0,246,22,105,0,124,193,109,255,2,210,149,255,169,17,170,0,0,96,110,255,117,9,8,1,50,123,40,255,193,189,99,0,34,227,160,0,48,80,70,254,211,51,236,0,45,122,245,254,44,174,8,0,173,37,233,255,158,65,171,0,122,69,215,255,90,80,2,255,131,106,96,254,227,114,135,0,205,49,119,254,176,62,64,255,82,51,17,255,241,20,243,255,130,13,8,254,128,217,243,255,162,27,1,254,90,118,241,0,246,198,246,255,55,16,118,255,200,159,157,0,163,17,1,0,140,107,121,0,85,161,118,255,38,0,149,0,156,\n47,238,0,9,166,166,1,75,98,181,255,50,74,25,0,66,15,47,0,139,225,159,0,76,3,142,255,14,238,184,0,11,207,53,255,183,192,186,1,171,32,174,255,191,76,221,1,247,170,219,0,25,172,50,254,217,9,233,0,203,126,68,255,183,92,48,0,127,167,183,1,65,49,254,0,16,63,127,1,254,21,170,255,59,224,127,254,22,48,63,255,27,78,130,254,40,195,29,0,250,132,112,254,35,203,144,0,104,169,168,0,207,253,30,255,104,40,38,254,94,228,88,0,206,16,128,255,212,55,122,255,223,22,234,0,223,197,127,0,253,181,181,1,145,102,118,0,236,153,\n36,255,212,217,72,255,20,38,24,254,138,62,62,0,152,140,4,0,230,220,99,255,1,21,212,255,148,201,231,0,244,123,9,254,0,171,210,0,51,58,37,255,1,255,14,255,244,183,145,254,0,242,166,0,22,74,132,0,121,216,41,0,95,195,114,254,133,24,151,255,156,226,231,255,247,5,77,255,246,148,115,254,225,92,81,255,222,80,246,254,170,123,89,255,74,199,141,0,29,20,8,255,138,136,70,255,93,75,92,0,221,147,49,254,52,126,226,0,229,124,23,0,46,9,181,0,205,64,52,1,131,254,28,0,151,158,212,0,131,64,78,0,206,25,171,0,0,230,139,\n0,191,253,110,254,103,247,167,0,64,40,40,1,42,165,241,255,59,75,228,254,124,243,189,255,196,92,178,255,130,140,86,255,141,89,56,1,147,198,5,255,203,248,158,254,144,162,141,0,11,172,226,0,130,42,21,255,1,167,143,255,144,36,36,255,48,88,164,254,168,170,220,0,98,71,214,0,91,208,79,0,159,76,201,1,166,42,214,255,69,255,0,255,6,128,125,255,190,1,140,0,146,83,218,255,215,238,72,1,122,127,53,0,189,116,165,255,84,8,66,255,214,3,208,255,213,110,133,0,195,168,44,1,158,231,69,0,162,64,200,254,91,58,104,0,182,\n58,187,254,249,228,136,0,203,134,76,254,99,221,233,0,75,254,214,254,80,69,154,0,64,152,248,254,236,136,202,255,157,105,153,254,149,175,20,0,22,35,19,255,124,121,233,0,186,250,198,254,132,229,139,0,137,80,174,255,165,125,68,0,144,202,148,254,235,239,248,0,135,184,118,0,101,94,17,255,122,72,70,254,69,130,146,0,127,222,248,1,69,127,118,255,30,82,215,254,188,74,19,255,229,167,194,254,117,25,66,255,65,234,56,254,213,22,156,0,151,59,93,254,45,28,27,255,186,126,164,255,32,6,239,0,127,114,99,1,219,52,2,255,\n99,96,166,254,62,190,126,255,108,222,168,1,75,226,174,0,230,226,199,0,60,117,218,255,252,248,20,1,214,188,204,0,31,194,134,254,123,69,192,255,169,173,36,254,55,98,91,0,223,42,102,254,137,1,102,0,157,90,25,0,239,122,64,255,252,6,233,0,7,54,20,255,82,116,174,0,135,37,54,255,15,186,125,0,227,112,175,255,100,180,225,255,42,237,244,255,244,173,226,254,248,18,33,0,171,99,150,255,74,235,50,255,117,82,32,254,106,168,237,0,207,109,208,1,228,9,186,0,135,60,169,254,179,92,143,0,244,170,104,255,235,45,124,255,\n70,99,186,0,117,137,183,0,224,31,215,0,40,9,100,0,26,16,95,1,68,217,87,0,8,151,20,255,26,100,58,255,176,165,203,1,52,118,70,0,7,32,254,254,244,254,245,255,167,144,194,255,125,113,23,255,176,121,181,0,136,84,209,0,138,6,30,255,89,48,28,0,33,155,14,255,25,240,154,0,141,205,109,1,70,115,62,255,20,40,107,254,138,154,199,255,94,223,226,255,157,171,38,0,163,177,25,254,45,118,3,255,14,222,23,1,209,190,81,255,118,123,232,1,13,213,101,255,123,55,123,254,27,246,165,0,50,99,76,255,140,214,32,255,97,65,67,255,\n24,12,28,0,174,86,78,1,64,247,96,0,160,135,67,0,66,55,243,255,147,204,96,255,26,6,33,255,98,51,83,1,153,213,208,255,2,184,54,255,25,218,11,0,49,67,246,254,18,149,72,255,13,25,72,0,42,79,214,0,42,4,38,1,27,139,144,255,149,187,23,0,18,164,132,0,245,84,184,254,120,198,104,255,126,218,96,0,56,117,234,255,13,29,214,254,68,47,10,255,167,154,132,254,152,38,198,0,66,178,89,255,200,46,171,255,13,99,83,255,210,187,253,255,170,45,42,1,138,209,124,0,214,162,141,0,12,230,156,0,102,36,112,254,3,147,67,0,52,215,\n123,255,233,171,54,255,98,137,62,0,247,218,39,255,231,218,236,0,247,191,127,0,195,146,84,0,165,176,92,255,19,212,94,255,17,74,227,0,88,40,153,1,198,147,1,255,206,67,245,254,240,3,218,255,61,141,213,255,97,183,106,0,195,232,235,254,95,86,154,0,209,48,205,254,118,209,241,255,240,120,223,1,213,29,159,0,163,127,147,255,13,218,93,0,85,24,68,254,70,20,80,255,189,5,140,1,82,97,254,255,99,99,191,255,132,84,133,255,107,218,116,255,112,122,46,0,105,17,32,0,194,160,63,255,68,222,39,1,216,253,92,0,177,105,205,\n255,149,201,195,0,42,225,11,255,40,162,115,0,9,7,81,0,165,218,219,0,180,22,0,254,29,146,252,255,146,207,225,1,180,135,96,0,31,163,112,0,177,11,219,255,133,12,193,254,43,78,50,0,65,113,121,1,59,217,6,255,110,94,24,1,112,172,111,0,7,15,96,0,36,85,123,0,71,150,21,255,208,73,188,0,192,11,167,1,213,245,34,0,9,230,92,0,162,142,39,255,215,90,27,0,98,97,89,0,94,79,211,0,90,157,240,0,95,220,126,1,102,176,226,0,36,30,224,254,35,31,127,0,231,232,115,1,85,83,130,0,210,73,245,255,47,143,114,255,68,65,197,0,59,\n72,62,255,183,133,173,254,93,121,118,255,59,177,81,255,234,69,173,255,205,128,177,0,220,244,51,0,26,244,209,1,73,222,77,255,163,8,96,254,150,149,211,0,158,254,203,1,54,127,139,0,161,224,59,0,4,109,22,255,222,42,45,255,208,146,102,255,236,142,187,0,50,205,245,255,10,74,89,254,48,79,142,0,222,76,130,255,30,166,63,0,236,12,13,255,49,184,244,0,187,113,102,0,218,101,253,0,153,57,182,254,32,150,42,0,25,198,146,1,237,241,56,0,140,68,5,0,91,164,172,255,78,145,186,254,67,52,205,0,219,207,129,1,109,115,17,\n0,54,143,58,1,21,248,120,255,179,255,30,0,193,236,66,255,1,255,7,255,253,192,48,255,19,69,217,1,3,214,0,255,64,101,146,1,223,125,35,255,235,73,179,255,249,167,226,0,225,175,10,1,97,162,58,0,106,112,171,1,84,172,5,255,133,140,178,255,134,245,142,0,97,90,125,255,186,203,185,255,223,77,23,255,192,92,106,0,15,198,115,255,217,152,248,0,171,178,120,255,228,134,53,0,176,54,193,1,250,251,53,0,213,10,100,1,34,199,106,0,151,31,244,254,172,224,87,255,14,237,23,255,253,85,26,255,127,39,116,255,172,104,100,0,\n251,14,70,255,212,208,138,255,253,211,250,0,176,49,165,0,15,76,123,255,37,218,160,255,92,135,16,1,10,126,114,255,70,5,224,255,247,249,141,0,68,20,60,1,241,210,189,255,195,217,187,1,151,3,113,0,151,92,174,0,231,62,178,255,219,183,225,0,23,23,33,255,205,181,80,0,57,184,248,255,67,180,1,255,90,123,93,255,39,0,162,255,96,248,52,255,84,66,140,0,34,127,228,255,194,138,7,1,166,110,188,0,21,17,155,1,154,190,198,255,214,80,59,255,18,7,143,0,72,29,226,1,199,217,249,0,232,161,71,1,149,190,201,0,217,175,95,254,\n113,147,67,255,138,143,199,255,127,204,1,0,29,182,83,1,206,230,155,255,186,204,60,0,10,125,85,255,232,96,25,255,255,89,247,255,213,254,175,1,232,193,81,0,28,43,156,254,12,69,8,0,147,24,248,0,18,198,49,0,134,60,35,0,118,246,18,255,49,88,254,254,228,21,186,255,182,65,112,1,219,22,1,255,22,126,52,255,189,53,49,255,112,25,143,0,38,127,55,255,226,101,163,254,208,133,61,255,137,69,174,1,190,118,145,255,60,98,219,255,217,13,245,255,250,136,10,0,84,254,226,0,201,31,125,1,240,51,251,255,31,131,130,255,2,138,\n50,255,215,215,177,1,223,12,238,255,252,149,56,255,124,91,68,255,72,126,170,254,119,255,100,0,130,135,232,255,14,79,178,0,250,131,197,0,138,198,208,0,121,216,139,254,119,18,36,255,29,193,122,0,16,42,45,255,213,240,235,1,230,190,169,255,198,35,228,254,110,173,72,0,214,221,241,255,56,148,135,0,192,117,78,254,141,93,207,255,143,65,149,0,21,18,98,255,95,44,244,1,106,191,77,0,254,85,8,254,214,110,176,255,73,173,19,254,160,196,199,255,237,90,144,0,193,172,113,255,200,155,136,254,228,90,221,0,137,49,74,\n1,164,221,215,255,209,189,5,255,105,236,55,255,42,31,129,1,193,255,236,0,46,217,60,0,138,88,187,255,226,82,236,255,81,69,151,255,142,190,16,1,13,134,8,0,127,122,48,255,81,64,156,0,171,243,139,0,237,35,246,0,122,143,193,254,212,122,146,0,95,41,255,1,87,132,77,0,4,212,31,0,17,31,78,0,39,45,173,254,24,142,217,255,95,9,6,255,227,83,6,0,98,59,130,254,62,30,33,0,8,115,211,1,162,97,128,255,7,184,23,254,116,28,168,255,248,138,151,255,98,244,240,0,186,118,130,0,114,248,235,255,105,173,200,1,160,124,71,255,\n94,36,164,1,175,65,146,255,238,241,170,254,202,198,197,0,228,71,138,254,45,246,109,255,194,52,158,0,133,187,176,0,83,252,154,254,89,189,221,255,170,73,252,0,148,58,125,0,36,68,51,254,42,69,177,255,168,76,86,255,38,100,204,255,38,53,35,0,175,19,97,0,225,238,253,255,81,81,135,0,210,27,255,254,235,73,107,0,8,207,115,0,82,127,136,0,84,99,21,254,207,19,136,0,100,164,101,0,80,208,77,255,132,207,237,255,15,3,15,255,33,166,110,0,156,95,85,255,37,185,111,1,150,106,35,255,166,151,76,0,114,87,135,255,159,194,\n64,0,12,122,31,255,232,7,101,254,173,119,98,0,154,71,220,254,191,57,53,255,168,232,160,255,224,32,99,255,218,156,165,0,151,153,163,0,217,13,148,1,197,113,89,0,149,28,161,254,207,23,30,0,105,132,227,255,54,230,94,255,133,173,204,255,92,183,157,255,88,144,252,254,102,33,90,0,159,97,3,0,181,218,155,255,240,114,119,0,106,214,53,255,165,190,115,1,152,91,225,255,88,106,44,255,208,61,113,0,151,52,124,0,191,27,156,255,110,54,236,1,14,30,166,255,39,127,207,1,229,199,28,0,188,228,188,254,100,157,235,0,246,\n218,183,1,107,22,193,255,206,160,95,0,76,239,147,0,207,161,117,0,51,166,2,255,52,117,10,254,73,56,227,255,152,193,225,0,132,94,136,255,101,191,209,0,32,107,229,255,198,43,180,1,100,210,118,0,114,67,153,255,23,88,26,255,89,154,92,1,220,120,140,255,144,114,207,255,252,115,250,255,34,206,72,0,138,133,127,255,8,178,124,1,87,75,97,0,15,229,92,254,240,67,131,255,118,123,227,254,146,120,104,255,145,213,255,1,129,187,70,255,219,119,54,0,1,19,173,0,45,150,148,1,248,83,72,0,203,233,169,1,142,107,56,0,247,249,\n38,1,45,242,80,255,30,233,103,0,96,82,70,0,23,201,111,0,81,39,30,255,161,183,78,255,194,234,33,255,68,227,140,254,216,206,116,0,70,27,235,255,104,144,79,0,164,230,93,254,214,135,156,0,154,187,242,254,188,20,131,255,36,109,174,0,159,112,241,0,5,110,149,1,36,165,218,0,166,29,19,1,178,46,73,0,93,43,32,254,248,189,237,0,102,155,141,0,201,93,195,255,241,139,253,255,15,111,98,255,108,65,163,254,155,79,190,255,73,174,193,254,246,40,48,255,107,88,11,254,202,97,85,255,253,204,18,255,113,242,66,0,110,160,194,\n254,208,18,186,0,81,21,60,0,188,104,167,255,124,166,97,254,210,133,142,0,56,242,137,254,41,111,130,0,111,151,58,1,111,213,141,255,183,172,241,255,38,6,196,255,185,7,123,255,46,11,246,0,245,105,119,1,15,2,161,255,8,206,45,255,18,202,74,255,83,124,115,1,212,141,157,0,83,8,209,254,139,15,232,255,172,54,173,254,50,247,132,0,214,189,213,0,144,184,105,0,223,254,248,0,255,147,240,255,23,188,72,0,7,51,54,0,188,25,180,254,220,180,0,255,83,160,20,0,163,189,243,255,58,209,194,255,87,73,60,0,106,24,49,0,245,\n249,220,0,22,173,167,0,118,11,195,255,19,126,237,0,110,159,37,255,59,82,47,0,180,187,86,0,188,148,208,1,100,37,133,255,7,112,193,0,129,188,156,255,84,106,129,255,133,225,202,0,14,236,111,255,40,20,101,0,172,172,49,254,51,54,74,255,251,185,184,255,93,155,224,255,180,249,224,1,230,178,146,0,72,57,54,254,178,62,184,0,119,205,72,0,185,239,253,255,61,15,218,0,196,67,56,255,234,32,171,1,46,219,228,0,208,108,234,255,20,63,232,255,165,53,199,1,133,228,5,255,52,205,107,0,74,238,140,255,150,156,219,254,239,\n172,178,255,251,189,223,254,32,142,211,255,218,15,138,1,241,196,80,0,28,36,98,254,22,234,199,0,61,237,220,255,246,57,37,0,142,17,142,255,157,62,26,0,43,238,95,254,3,217,6,255,213,25,240,1,39,220,174,255,154,205,48,254,19,13,192,255,244,34,54,254,140,16,155,0,240,181,5,254,155,193,60,0,166,128,4,255,36,145,56,255,150,240,219,0,120,51,145,0,82,153,42,1,140,236,146,0,107,92,248,1,189,10,3,0,63,136,242,0,211,39,24,0,19,202,161,1,173,27,186,255,210,204,239,254,41,209,162,255,182,254,159,255,172,116,52,\n0,195,103,222,254,205,69,59,0,53,22,41,1,218,48,194,0,80,210,242,0,210,188,207,0,187,161,161,254,216,17,1,0,136,225,113,0,250,184,63,0,223,30,98,254,77,168,162,0,59,53,175,0,19,201,10,255,139,224,194,0,147,193,154,255,212,189,12,254,1,200,174,255,50,133,113,1,94,179,90,0,173,182,135,0,94,177,113,0,43,89,215,255,136,252,106,255,123,134,83,254,5,245,66,255,82,49,39,1,220,2,224,0,97,129,177,0,77,59,89,0,61,29,155,1,203,171,220,255,92,78,139,0,145,33,181,255,169,24,141,1,55,150,179,0,139,60,80,255,218,\n39,97,0,2,147,107,255,60,248,72,0,173,230,47,1,6,83,182,255,16,105,162,254,137,212,81,255,180,184,134,1,39,222,164,255,221,105,251,1,239,112,125,0,63,7,97,0,63,104,227,255,148,58,12,0,90,60,224,255,84,212,252,0,79,215,168,0,248,221,199,1,115,121,1,0,36,172,120,0,32,162,187,255,57,107,49,255,147,42,21,0,106,198,43,1,57,74,87,0,126,203,81,255,129,135,195,0,140,31,177,0,221,139,194,0,3,222,215,0,131,68,231,0,177,86,178,254,124,151,180,0,184,124,38,1,70,163,17,0,249,251,181,1,42,55,227,0,226,161,44,0,\n23,236,110,0,51,149,142,1,93,5,236,0,218,183,106,254,67,24,77,0,40,245,209,255,222,121,153,0,165,57,30,0,83,125,60,0,70,38,82,1,229,6,188,0,109,222,157,255,55,118,63,255,205,151,186,0,227,33,149,255,254,176,246,1,227,177,227,0,34,106,163,254,176,43,79,0,106,95,78,1,185,241,122,255,185,14,61,0,36,1,202,0,13,178,162,255,247,11,132,0,161,230,92,1,65,1,185,255,212,50,165,1,141,146,64,255,158,242,218,0,21,164,125,0,213,139,122,1,67,71,87,0,203,158,178,1,151,92,43,0,152,111,5,255,39,3,239,255,217,255,250,\n255,176,63,71,255,74,245,77,1,250,174,18,255,34,49,227,255,246,46,251,255,154,35,48,1,125,157,61,255,106,36,78,255,97,236,153,0,136,187,120,255,113,134,171,255,19,213,217,254,216,94,209,255,252,5,61,0,94,3,202,0,3,26,183,255,64,191,43,255,30,23,21,0,129,141,77,255,102,120,7,1,194,76,140,0,188,175,52,255,17,81,148,0,232,86,55,1,225,48,172,0,134,42,42,255,238,50,47,0,169,18,254,0,20,147,87,255,14,195,239,255,69,247,23,0,238,229,128,255,177,49,112,0,168,98,251,255,121,71,248,0,243,8,145,254,246,227,\n153,255,219,169,177,254,251,139,165,255,12,163,185,255,164,40,171,255,153,159,27,254,243,109,91,255,222,24,112,1,18,214,231,0,107,157,181,254,195,147,0,255,194,99,104,255,89,140,190,255,177,66,126,254,106,185,66,0,49,218,31,0,252,174,158,0,188,79,230,1,238,41,224,0,212,234,8,1,136,11,181,0,166,117,83,255,68,195,94,0,46,132,201,0,240,152,88,0,164,57,69,254,160,224,42,255,59,215,67,255,119,195,141,255,36,180,121,254,207,47,8,255,174,210,223,0,101,197,68,255,255,82,141,1,250,137,233,0,97,86,133,1,16,\n80,69,0,132,131,159,0,116,93,100,0,45,141,139,0,152,172,157,255,90,43,91,0,71,153,46,0,39,16,112,255,217,136,97,255,220,198,25,254,177,53,49,0,222,88,134,255,128,15,60,0,207,192,169,255,192,116,209,255,106,78,211,1,200,213,183,255,7,12,122,254,222,203,60,255,33,110,199,254,251,106,117,0,228,225,4,1,120,58,7,255,221,193,84,254,112,133,27,0,189,200,201,255,139,135,150,0,234,55,176,255,61,50,65,0,152,108,169,255,220,85,1,255,112,135,227,0,162,26,186,0,207,96,185,254,244,136,107,0,93,153,50,1,198,97,\n151,0,110,11,86,255,143,117,174,255,115,212,200,0,5,202,183,0,237,164,10,254,185,239,62,0,236,120,18,254,98,123,99,255,168,201,194,254,46,234,214,0,191,133,49,255,99,169,119,0,190,187,35,1,115,21,45,255,249,131,72,0,112,6,123,255,214,49,181,254,166,233,34,0,92,197,102,254,253,228,205,255,3,59,201,1,42,98,46,0,219,37,35,255,169,195,38,0,94,124,193,1,156,43,223,0,95,72,133,254,120,206,191,0,122,197,239,255,177,187,79,255,254,46,2,1,250,167,190,0,84,129,19,0,203,113,166,255,249,31,189,254,72,157,202,\n255,208,71,73,255,207,24,72,0,10,16,18,1,210,81,76,255,88,208,192,255,126,243,107,255,238,141,120,255,199,121,234,255,137,12,59,255,36,220,123,255,148,179,60,254,240,12,29,0,66,0,97,1,36,30,38,255,115,1,93,255,96,103,231,255,197,158,59,1,192,164,240,0,202,202,57,255,24,174,48],\"i8\",4,e.h);K([89,77,155,1,42,76,215,0,244,151,233,0,23,48,81,0,239,127,52,254,227,130,37,255,248,116,93,1,124,132,118,0,173,254,192,1,6,235,83,255,110,175,231,1,251,28,182,0,129,249,93,254,84,184,128,0,76,181,62,0,175,128,\n186,0,100,53,136,254,109,29,226,0,221,233,58,1,20,99,74,0,0,22,160,0,134,13,21,0,9,52,55,255,17,89,140,0,175,34,59,0,84,165,119,255,224,226,234,255,7,72,166,255,123,115,255,1,18,214,246,0,250,7,71,1,217,220,185,0,212,35,76,255,38,125,175,0,189,97,210,0,114,238,44,255,41,188,169,254,45,186,154,0,81,92,22,0,132,160,193,0,121,208,98,255,13,81,44,255,203,156,82,0,71,58,21,255,208,114,191,254,50,38,147,0,154,216,195,0,101,25,18,0,60,250,215,255,233,132,235,255,103,175,142,1,16,14,92,0,141,31,110,254,238,\n241,45,255,153,217,239,1,97,168,47,255,249,85,16,1,28,175,62,255,57,254,54,0,222,231,126,0,166,45,117,254,18,189,96,255,228,76,50,0,200,244,94,0,198,152,120,1,68,34,69,255,12,65,160,254,101,19,90,0,167,197,120,255,68,54,185,255,41,218,188,0,113,168,48,0,88,105,189,1,26,82,32,255,185,93,164,1,228,240,237,255,66,182,53,0,171,197,92,255,107,9,233,1,199,120,144,255,78,49,10,255,109,170,105,255,90,4,31,255,28,244,113,255,74,58,11,0,62,220,246,255,121,154,200,254,144,210,178,255,126,57,129,1,43,250,14,\n255,101,111,28,1,47,86,241,255,61,70,150,255,53,73,5,255,30,26,158,0,209,26,86,0,138,237,74,0,164,95,188,0,142,60,29,254,162,116,248,255,187,175,160,0,151,18,16,0,209,111,65,254,203,134,39,255,88,108,49,255,131,26,71,255,221,27,215,254,104,105,93,255,31,236,31,254,135,0,211,255,143,127,110,1,212,73,229,0,233,67,167,254,195,1,208,255,132,17,221,255,51,217,90,0,67,235,50,255,223,210,143,0,179,53,130,1,233,106,198,0,217,173,220,255,112,229,24,255,175,154,93,254,71,203,246,255,48,66,133,255,3,136,230,\n255,23,221,113,254,235,111,213,0,170,120,95,254,251,221,2,0,45,130,158,254,105,94,217,255,242,52,180,254,213,68,45,255,104,38,28,0,244,158,76,0,161,200,96,255,207,53,13,255,187,67,148,0,170,54,248,0,119,162,178,255,83,20,11,0,42,42,192,1,146,159,163,255,183,232,111,0,77,229,21,255,71,53,143,0,27,76,34,0,246,136,47,255,219,39,182,255,92,224,201,1,19,142,14,255,69,182,241,255,163,118,245,0,9,109,106,1,170,181,247,255,78,47,238,255,84,210,176,255,213,107,139,0,39,38,11,0,72,21,150,0,72,130,69,0,205,\n77,155,254,142,133,21,0,71,111,172,254,226,42,59,255,179,0,215,1,33,128,241,0,234,252,13,1,184,79,8,0,110,30,73,255,246,141,189,0,170,207,218,1,74,154,69,255,138,246,49,255,155,32,100,0,125,74,105,255,90,85,61,255,35,229,177,255,62,125,193,255,153,86,188,1,73,120,212,0,209,123,246,254,135,209,38,255,151,58,44,1,92,69,214,255,14,12,88,255,252,153,166,255,253,207,112,255,60,78,83,255,227,124,110,0,180,96,252,255,53,117,33,254,164,220,82,255,41,1,27,255,38,164,166,255,164,99,169,254,61,144,70,255,192,\n166,18,0,107,250,66,0,197,65,50,0,1,179,18,255,255,104,1,255,43,153,35,255,80,111,168,0,110,175,168,0,41,105,45,255,219,14,205,255,164,233,140,254,43,1,118,0,233,67,195,0,178,82,159,255,138,87,122,255,212,238,90,255,144,35,124,254,25,140,164,0,251,215,44,254,133,70,107,255,101,227,80,254,92,169,55,0,215,42,49,0,114,180,85,255,33,232,27,1,172,213,25,0,62,176,123,254,32,133,24,255,225,191,62,0,93,70,153,0,181,42,104,1,22,191,224,255,200,200,140,255,249,234,37,0,149,57,141,0,195,56,208,255,254,130,70,\n255,32,173,240,255,29,220,199,0,110,100,115,255,132,229,249,0,228,233,223,255,37,216,209,254,178,177,209,255,183,45,165,254,224,97,114,0,137,97,168,255,225,222,172,0,165,13,49,1,210,235,204,255,252,4,28,254,70,160,151,0,232,190,52,254,83,248,93,255,62,215,77,1,175,175,179,255,160,50,66,0,121,48,208,0,63,169,209,255,0,210,200,0,224,187,44,1,73,162,82,0,9,176,143,255,19,76,193,255,29,59,167,1,24,43,154,0,28,190,190,0,141,188,129,0,232,235,203,255,234,0,109,255,54,65,159,0,60,88,232,255,121,253,150,\n254,252,233,131,255,198,110,41,1,83,77,71,255,200,22,59,254,106,253,242,255,21,12,207,255,237,66,189,0,90,198,202,1,225,172,127,0,53,22,202,0,56,230,132,0,1,86,183,0,109,190,42,0,243,68,174,1,109,228,154,0,200,177,122,1,35,160,183,255,177,48,85,255,90,218,169,255,248,152,78,0,202,254,110,0,6,52,43,0,142,98,65,255,63,145,22,0,70,106,93,0,232,138,107,1,110,179,61,255,211,129,218,1,242,209,92,0,35,90,217,1,182,143,106,255,116,101,217,255,114,250,221,255,173,204,6,0,60,150,163,0,73,172,44,255,239,110,\n80,255,237,76,153,254,161,140,249,0,149,232,229,0,133,31,40,255,174,164,119,0,113,51,214,0,129,228,2,254,64,34,243,0,107,227,244,255,174,106,200,255,84,153,70,1,50,35,16,0,250,74,216,254,236,189,66,255,153,249,13,0,230,178,4,255,221,41,238,0,118,227,121,255,94,87,140,254,254,119,92,0,73,239,246,254,117,87,128,0,19,211,145,255,177,46,252,0,229,91,246,1,69,128,247,255,202,77,54,1,8,11,9,255,153,96,166,0,217,214,173,255,134,192,2,1,0,207,0,0,189,174,107,1,140,134,100,0,158,193,243,1,182,102,171,0,235,\n154,51,0,142,5,123,255,60,168,89,1,217,14,92,255,19,214,5,1,211,167,254,0,44,6,202,254,120,18,236,255,15,113,184,255,184,223,139,0,40,177,119,254,182,123,90,255,176,165,176,0,247,77,194,0,27,234,120,0,231,0,214,255,59,39,30,0,125,99,145,255,150,68,68,1,141,222,248,0,153,123,210,255,110,127,152,255,229,33,214,1,135,221,197,0,137,97,2,0,12,143,204,255,81,41,188,0,115,79,130,255,94,3,132,0,152,175,187,255,124,141,10,255,126,192,179,255,11,103,198,0,149,6,45,0,219,85,187,1,230,18,178,255,72,182,152,0,\n3,198,184,255,128,112,224,1,97,161,230,0,254,99,38,255,58,159,197,0,151,66,219,0,59,69,143,255,185,112,249,0,119,136,47,255,123,130,132,0,168,71,95,255,113,176,40,1,232,185,173,0,207,93,117,1,68,157,108,255,102,5,147,254,49,97,33,0,89,65,111,254,247,30,163,255,124,217,221,1,102,250,216,0,198,174,75,254,57,55,18,0,227,5,236,1,229,213,173,0,201,109,218,1,49,233,239,0,30,55,158,1,25,178,106,0,155,111,188,1,94,126,140,0,215,31,238,1,77,240,16,0,213,242,25,1,38,71,168,0,205,186,93,254,49,211,140,255,219,\n0,180,255,134,118,165,0,160,147,134,255,110,186,35,255,198,243,42,0,243,146,119,0,134,235,163,1,4,241,135,255,193,46,193,254,103,180,79,255,225,4,184,254,242,118,130,0,146,135,176,1,234,111,30,0,69,66,213,254,41,96,123,0,121,94,42,255,178,191,195,255,46,130,42,0,117,84,8,255,233,49,214,254,238,122,109,0,6,71,89,1,236,211,123,0,244,13,48,254,119,148,14,0,114,28,86,255,75,237,25,255,145,229,16,254,129,100,53,255,134,150,120,254,168,157,50,0,23,72,104,255,224,49,14,0,255,123,22,255,151,185,151,255,170,\n80,184,1,134,182,20,0,41,100,101,1,153,33,16,0,76,154,111,1,86,206,234,255,192,160,164,254,165,123,93,255,1,216,164,254,67,17,175,255,169,11,59,255,158,41,61,255,73,188,14,255,195,6,137,255,22,147,29,255,20,103,3,255,246,130,227,255,122,40,128,0,226,47,24,254,35,36,32,0,152,186,183,255,69,202,20,0,195,133,195,0,222,51,247,0,169,171,94,1,183,0,160,255,64,205,18,1,156,83,15,255,197,58,249,254,251,89,110,255,50,10,88,254,51,43,216,0,98,242,198,1,245,151,113,0,171,236,194,1,197,31,199,255,229,81,38,1,\n41,59,20,0,253,104,230,0,152,93,14,255,246,242,146,254,214,169,240,255,240,102,108,254,160,167,236,0,154,218,188,0,150,233,202,255,27,19,250,1,2,71,133,255,175,12,63,1,145,183,198,0,104,120,115,255,130,251,247,0,17,212,167,255,62,123,132,255,247,100,189,0,155,223,152,0,143,197,33,0,155,59,44,255,150,93,240,1,127,3,87,255,95,71,207,1,167,85,1,255,188,152,116,255,10,23,23,0,137,195,93,1,54,98,97,0,240,0,168,255,148,188,127,0,134,107,151,0,76,253,171,0,90,132,192,0,146,22,54,0,224,66,54,254,230,186,\n229,255,39,182,196,0,148,251,130,255,65,131,108,254,128,1,160,0,169,49,167,254,199,254,148,255,251,6,131,0,187,254,129,255,85,82,62,0,178,23,58,255,254,132,5,0,164,213,39,0,134,252,146,254,37,53,81,255,155,134,82,0,205,167,238,255,94,45,180,255,132,40,161,0,254,111,112,1,54,75,217,0,179,230,221,1,235,94,191,255,23,243,48,1,202,145,203,255,39,118,42,255,117,141,253,0,254,0,222,0,43,251,50,0,54,169,234,1,80,68,208,0,148,203,243,254,145,7,135,0,6,254,0,0,252,185,127,0,98,8,129,255,38,35,72,255,211,36,\n220,1,40,26,89,0,168,64,197,254,3,222,239,255,2,83,215,254,180,159,105,0,58,115,194,0,186,116,106,255,229,247,219,255,129,118,193,0,202,174,183,1,166,161,72,0,201,107,147,254,237,136,74,0,233,230,106,1,105,111,168,0,64,224,30,1,1,229,3,0,102,151,175,255,194,238,228,255,254,250,212,0,187,237,121,0,67,251,96,1,197,30,11,0,183,95,204,0,205,89,138,0,64,221,37,1,255,223,30,255,178,48,211,255,241,200,90,255,167,209,96,255,57,130,221,0,46,114,200,255,61,184,66,0,55,182,24,254,110,182,33,0,171,190,232,255,\n114,94,31,0,18,221,8,0,47,231,254,0,255,112,83,0,118,15,215,255,173,25,40,254,192,193,31,255,238,21,146,255,171,193,118,255,101,234,53,254,131,212,112,0,89,192,107,1,8,208,27,0,181,217,15,255,231,149,232,0,140,236,126,0,144,9,199,255,12,79,181,254,147,182,202,255,19,109,182,255,49,212,225,0,74,163,203,0,175,233,148,0,26,112,51,0,193,193,9,255,15,135,249,0,150,227,130,0,204,0,219,1,24,242,205,0,238,208,117,255,22,244,112,0,26,229,34,0,37,80,188,255,38,45,206,254,240,90,225,255,29,3,47,255,42,224,76,\n0,186,243,167,0,32,132,15,255,5,51,125,0,139,135,24,0,6,241,219,0,172,229,133,255,246,214,50,0,231,11,207,255,191,126,83,1,180,163,170,255,245,56,24,1,178,164,211,255,3,16,202,1,98,57,118,255,141,131,89,254,33,51,24,0,243,149,91,255,253,52,14,0,35,169,67,254,49,30,88,255,179,27,36,255,165,140,183,0,58,189,151,0,88,31,0,0,75,169,66,0,66,101,199,255,24,216,199,1,121,196,26,255,14,79,203,254,240,226,81,255,94,28,10,255,83,193,240,255,204,193,131,255,94,15,86,0,218,40,157,0,51,193,209,0,0,242,177,0,102,\n185,247,0,158,109,116,0,38,135,91,0,223,175,149,0,220,66,1,255,86,60,232,0,25,96,37,255,225,122,162,1,215,187,168,255,158,157,46,0,56,171,162,0,232,240,101,1,122,22,9,0,51,9,21,255,53,25,238,255,217,30,232,254,125,169,148,0,13,232,102,0,148,9,37,0,165,97,141,1,228,131,41,0,222,15,243,255,254,18,17,0,6,60,237,1,106,3,113,0,59,132,189,0,92,112,30,0,105,208,213,0,48,84,179,255,187,121,231,254,27,216,109,255,162,221,107,254,73,239,195,255,250,31,57,255,149,135,89,255,185,23,115,1,3,163,157,255,18,112,\n250,0,25,57,187,255,161,96,164,0,47,16,243,0,12,141,251,254,67,234,184,255,41,18,161,0,175,6,96,255,160,172,52,254,24,176,183,255,198,193,85,1,124,121,137,255,151,50,114,255,220,203,60,255,207,239,5,1,0,38,107,255,55,238,94,254,70,152,94,0,213,220,77,1,120,17,69,255,85,164,190,255,203,234,81,0,38,49,37,254,61,144,124,0,137,78,49,254,168,247,48,0,95,164,252,0,105,169,135,0,253,228,134,0,64,166,75,0,81,73,20,255,207,210,10,0,234,106,150,255,94,34,90,255,254,159,57,254,220,133,99,0,139,147,180,254,24,\n23,185,0,41,57,30,255,189,97,76,0,65,187,223,255,224,172,37,255,34,62,95,1,231,144,240,0,77,106,126,254,64,152,91,0,29,98,155,0,226,251,53,255,234,211,5,255,144,203,222,255,164,176,221,254,5,231,24,0,179,122,205,0,36,1,134,255,125,70,151,254,97,228,252,0,172,129,23,254,48,90,209,255,150,224,82,1,84,134,30,0,241,196,46,0,103,113,234,255,46,101,121,254,40,124,250,255,135,45,242,254,9,249,168,255,140,108,131,255,143,163,171,0,50,173,199,255,88,222,142,255,200,95,158,0,142,192,163,255,7,117,135,0,111,\n124,22,0,236,12,65,254,68,38,65,255,227,174,254,0,244,245,38,0,240,50,208,255,161,63,250,0,60,209,239,0,122,35,19,0,14,33,230,254,2,159,113,0,106,20,127,255,228,205,96,0,137,210,174,254,180,212,144,255,89,98,154,1,34,88,139,0,167,162,112,1,65,110,197,0,241,37,169,0,66,56,131,255,10,201,83,254,133,253,187,255,177,112,45,254,196,251,0,0,196,250,151,255,238,232,214,255,150,209,205,0,28,240,118,0,71,76,83,1,236,99,91,0,42,250,131,1,96,18,64,255,118,222,35,0,113,214,203,255,122,119,184,255,66,19,36,0,\n204,64,249,0,146,89,139,0,134,62,135,1,104,233,101,0,188,84,26,0,49,249,129,0,208,214,75,255,207,130,77,255,115,175,235,0,171,2,137,255,175,145,186,1,55,245,135,255,154,86,181,1,100,58,246,255,109,199,60,255,82,204,134,255,215,49,230,1,140,229,192,255,222,193,251,255,81,136,15,255,179,149,162,255,23,39,29,255,7,95,75,254,191,81,222,0,241,81,90,255,107,49,201,255,244,211,157,0,222,140,149,255,65,219,56,254,189,246,90,255,178,59,157,1,48,219,52,0,98,34,215,0,28,17,187,255,175,169,24,0,92,79,161,255,\n236,200,194,1,147,143,234,0,229,225,7,1,197,168,14,0,235,51,53,1,253,120,174,0,197,6,168,255,202,117,171,0,163,21,206,0,114,85,90,255,15,41,10,255,194,19,99,0,65,55,216,254,162,146,116,0,50,206,212,255,64,146,29,255,158,158,131,1,100,165,130,255,172,23,129,255,125,53,9,255,15,193,18,1,26,49,11,255,181,174,201,1,135,201,14,255,100,19,149,0,219,98,79,0,42,99,143,254,96,0,48,255,197,249,83,254,104,149,79,255,235,110,136,254,82,128,44,255,65,41,36,254,88,211,10,0,187,121,187,0,98,134,199,0,171,188,179,\n254,210,11,238,255,66,123,130,254,52,234,61,0,48,113,23,254,6,86,120,255,119,178,245,0,87,129,201,0,242,141,209,0,202,114,85,0,148,22,161,0,103,195,48,0,25,49,171,255,138,67,130,0,182,73,122,254,148,24,130,0,211,229,154,0,32,155,158,0,84,105,61,0,177,194,9,255,166,89,86,1,54,83,187,0,249,40,117,255,109,3,215,255,53,146,44,1,63,47,179,0,194,216,3,254,14,84,136,0,136,177,13,255,72,243,186,255,117,17,125,255,211,58,211,255,93,79,223,0,90,88,245,255,139,209,111,255,70,222,47,0,10,246,79,255,198,217,178,\n0,227,225,11,1,78,126,179,255,62,43,126,0,103,148,35,0,129,8,165,254,245,240,148,0,61,51,142,0,81,208,134,0,15,137,115,255,211,119,236,255,159,245,248,255,2,134,136,255,230,139,58,1,160,164,254,0,114,85,141,255,49,166,182,255,144,70,84,1,85,182,7,0,46,53,93,0,9,166,161,255,55,162,178,255,45,184,188,0,146,28,44,254,169,90,49,0,120,178,241,1,14,123,127,255,7,241,199,1,189,66,50,255,198,143,101,254,189,243,135,255,141,24,24,254,75,97,87,0,118,251,154,1,237,54,156,0,171,146,207,255,131,196,246,255,136,\n64,113,1,151,232,57,0,240,218,115,0,49,61,27,255,64,129,73,1,252,169,27,255,40,132,10,1,90,201,193,255,252,121,240,1,186,206,41,0,43,198,97,0,145,100,183,0,204,216,80,254,172,150,65,0,249,229,196,254,104,123,73,255,77,104,96,254,130,180,8,0,104,123,57,0,220,202,229,255,102,249,211,0,86,14,232,255,182,78,209,0,239,225,164,0,106,13,32,255,120,73,17,255,134,67,233,0,83,254,181,0,183,236,112,1,48,64,131,255,241,216,243,255,65,193,226,0,206,241,100,254,100,134,166,255,237,202,197,0,55,13,81,0,32,124,102,\n255,40,228,177,0,118,181,31,1,231,160,134,255,119,187,202,0,0,142,60,255,128,38,189,255,166,201,150,0,207,120,26,1,54,184,172,0,12,242,204,254,133,66,230,0,34,38,31,1,184,112,80,0,32,51,165,254,191,243,55,0,58,73,146,254,155,167,205,255,100,104,152,255,197,254,207,255,173,19,247,0,238,10,202,0,239,151,242,0,94,59,39,255,240,29,102,255,10,92,154,255,229,84,219,255,161,129,80,0,208,90,204,1,240,219,174,255,158,102,145,1,53,178,76,255,52,108,168,1,83,222,107,0,211,36,109,0,118,58,56,0,8,29,22,0,237,\n160,199,0,170,209,157,0,137,71,47,0,143,86,32,0,198,242,2,0,212,48,136,1,92,172,186,0,230,151,105,1,96,191,229,0,138,80,191,254,240,216,130,255,98,43,6,254,168,196,49,0,253,18,91,1,144,73,121,0,61,146,39,1,63,104,24,255,184,165,112,254,126,235,98,0,80,213,98,255,123,60,87,255,82,140,245,1,223,120,173,255,15,198,134,1,206,60,239,0,231,234,92,255,33,238,19,255,165,113,142,1,176,119,38,0,160,43,166,254,239,91,105,0,107,61,194,1,25,4,68,0,15,139,51,0,164,132,106,255,34,116,46,254,168,95,197,0,137,212,\n23,0,72,156,58,0,137,112,69,254,150,105,154,255,236,201,157,0,23,212,154,255,136,82,227,254,226,59,221,255,95,149,192,0,81,118,52,255,33,43,215,1,14,147,75,255,89,156,121,254,14,18,79,0,147,208,139,1,151,218,62,255,156,88,8,1,210,184,98,255,20,175,123,255,102,83,229,0,220,65,116,1,150,250,4,255,92,142,220,255,34,247,66,255,204,225,179,254,151,81,151,0,71,40,236,255,138,63,62,0,6,79,240,255,183,185,181,0,118,50,27,0,63,227,192,0,123,99,58,1,50,224,155,255,17,225,223,254,220,224,77,255,14,44,123,1,\n141,128,175,0,248,212,200,0,150,59,183,255,147,97,29,0,150,204,181,0,253,37,71,0,145,85,119,0,154,200,186,0,2,128,249,255,83,24,124,0,14,87,143,0,168,51,245,1,124,151,231,255,208,240,197,1,124,190,185,0,48,58,246,0,20,233,232,0,125,18,98,255,13,254,31,255,245,177,130,255,108,142,35,0,171,125,242,254,140,12,34,255,165,161,162,0,206,205,101,0,247,25,34,1,100,145,57,0,39,70,57,0,118,204,203,255,242,0,162,0,165,244,30,0,198,116,226,0,128,111,153,255,140,54,182,1,60,122,15,255,155,58,57,1,54,50,198,0,\n171,211,29,255,107,138,167,255,173,107,199,255,109,161,193,0,89,72,242,255,206,115,89,255,250,254,142,254,177,202,94,255,81,89,50,0,7,105,66,255,25,254,255,254,203,64,23,255,79,222,108,255,39,249,75,0,241,124,50,0,239,152,133,0,221,241,105,0,147,151,98,0,213,161,121,254,242,49,137,0,233,37,249,254,42,183,27,0,184,119,230,255,217,32,163,255,208,251,228,1,137,62,131,255,79,64,9,254,94,48,113,0,17,138,50,254,193,255,22,0,247,18,197,1,67,55,104,0,16,205,95,255,48,37,66,0,55,156,63,1,64,82,74,255,200,\n53,71,254,239,67,125,0,26,224,222,0,223,137,93,255,30,224,202,255,9,220,132,0,198,38,235,1,102,141,86,0,60,43,81,1,136,28,26,0,233,36,8,254,207,242,148,0,164,162,63,0,51,46,224,255,114,48,79,255,9,175,226,0,222,3,193,255,47,160,232,255,255,93,105,254,14,42,230,0,26,138,82,1,208,43,244,0,27,39,38,255,98,208,127,255,64,149,182,255,5,250,209,0,187,60,28,254,49,25,218,255,169,116,205,255,119,18,120,0,156,116,147,255,132,53,109,255,13,10,202,0,110,83,167,0,157,219,137,255,6,3,130,255,50,167,30,255,60,\n159,47,255,129,128,157,254,94,3,189,0,3,166,68,0,83,223,215,0,150,90,194,1,15,168,65,0,227,83,51,255,205,171,66,255,54,187,60,1,152,102,45,255,119,154,225,0,240,247,136,0,100,197,178,255,139,71,223,255,204,82,16,1,41,206,42,255,156,192,221,255,216,123,244,255,218,218,185,255,187,186,239,255,252,172,160,255,195,52,22,0,144,174,181,254,187,100,115,255,211,78,176,255,27,7,193,0,147,213,104,255,90,201,10,255,80,123,66,1,22,33,186,0,1,7,99,254,30,206,10,0,229,234,5,0,53,30,210,0,138,8,220,254,71,55,167,\n0,72,225,86,1,118,190,188,0,254,193,101,1,171,249,172,255,94,158,183,254,93,2,108,255,176,93,76,255,73,99,79,255,74,64,129,254,246,46,65,0,99,241,127,254,246,151,102,255,44,53,208,254,59,102,234,0,154,175,164,255,88,242,32,0,111,38,1,0,255,182,190,255,115,176,15,254,169,60,129,0,122,237,241,0,90,76,63,0,62,74,120,255,122,195,110,0,119,4,178,0,222,242,210,0,130,33,46,254,156,40,41,0,167,146,112,1,49,163,111,255,121,176,235,0,76,207,14,255,3,25,198,1,41,235,213,0,85,36,214,1,49,92,109,255,200,24,30,\n254,168,236,195,0,145,39,124,1,236,195,149,0,90,36,184,255,67,85,170,255,38,35,26,254,131,124,68,255,239,155,35,255,54,201,164,0,196,22,117,255,49,15,205,0,24,224,29,1,126,113,144,0,117,21,182,0,203,159,141,0,223,135,77,0,176,230,176,255,190,229,215,255,99,37,181,255,51,21,138,255,25,189,89,255,49,48,165,254,152,45,247,0,170,108,222,0,80,202,5,0,27,69,103,254,204,22,129,255,180,252,62,254,210,1,91,255,146,110,254,255,219,162,28,0,223,252,213,1,59,8,33,0,206,16,244,0,129,211,48,0,107,160,208,0,112,\n59,209,0,109,77,216,254,34,21,185,255,246,99,56,255,179,139,19,255,185,29,50,255,84,89,19,0,74,250,98,255,225,42,200,255,192,217,205,255,210,16,167,0,99,132,95,1,43,230,57,0,254,11,203,255,99,188,63,255,119,193,251,254,80,105,54,0,232,181,189,1,183,69,112,255,208,171,165,255,47,109,180,255,123,83,165,0,146,162,52,255,154,11,4,255,151,227,90,255,146,137,97,254,61,233,41,255,94,42,55,255,108,164,236,0,152,68,254,0,10,140,131,255,10,106,79,254,243,158,137,0,67,178,66,254,177,123,198,255,15,62,34,0,197,\n88,42,255,149,95,177,255,152,0,198,255,149,254,113,255,225,90,163,255,125,217,247,0,18,17,224,0,128,66,120,254,192,25,9,255,50,221,205,0,49,212,70,0,233,255,164,0,2,209,9,0,221,52,219,254,172,224,244,255,94,56,206,1,242,179,2,255,31,91,164,1,230,46,138,255,189,230,220,0,57,47,61,255,111,11,157,0,177,91,152,0,28,230,98,0,97,87,126,0,198,89,145,255,167,79,107,0,249,77,160,1,29,233,230,255,150,21,86,254,60,11,193,0,151,37,36,254,185,150,243,255,228,212,83,1,172,151,180,0,201,169,155,0,244,60,234,0,142,\n235,4,1,67,218,60,0,192,113,75,1,116,243,207,255,65,172,155,0,81,30,156,255,80,72,33,254,18,231,109,255,142,107,21,254,125,26,132,255,176,16,59,255,150,201,58,0,206,169,201,0,208,121,226,0,40,172,14,255,150,61,94,255,56,57,156,255,141,60,145,255,45,108,149,255,238,145,155,255,209,85,31,254,192,12,210,0,99,98,93,254,152,16,151,0,225,185,220,0,141,235,44,255,160,172,21,254,71,26,31,255,13,64,93,254,28,56,198,0,177,62,248,1,182,8,241,0,166,101,148,255,78,81,133,255,129,222,215,1,188,169,129,255,232,\n7,97,0,49,112,60,255,217,229,251,0,119,108,138,0,39,19,123,254,131,49,235,0,132,84,145,0,130,230,148,255,25,74,187,0,5,245,54,255,185,219,241,1,18,194,228,255,241,202,102,0,105,113,202,0,155,235,79,0,21,9,178,255,156,1,239,0,200,148,61,0,115,247,210,255,49,221,135,0,58,189,8,1,35,46,9,0,81,65,5,255,52,158,185,255,125,116,46,255,74,140,13,255,210,92,172,254,147,23,71,0,217,224,253,254,115,108,180,255,145,58,48,254,219,177,24,255,156,255,60,1,154,147,242,0,253,134,87,0,53,75,229,0,48,195,222,255,31,\n175,50,255,156,210,120,255,208,35,222,255,18,248,179,1,2,10,101,255,157,194,248,255,158,204,101,255,104,254,197,255,79,62,4,0,178,172,101,1,96,146,251,255,65,10,156,0,2,137,165,255,116,4,231,0,242,215,1,0,19,35,29,255,43,161,79,0,59,149,246,1,251,66,176,0,200,33,3,255,80,110,142,255,195,161,17,1,228,56,66,255,123,47,145,254,132,4,164,0,67,174,172,0,25,253,114,0,87,97,87,1,250,220,84,0,96,91,200,255,37,125,59,0,19,65,118,0,161,52,241,255,237,172,6,255,176,191,255,255,1,65,130,254,223,190,230,0,101,\n253,231,255,146,35,109,0,250,29,77,1,49,0,19,0,123,90,155,1,22,86,32,255,218,213,65,0,111,93,127,0,60,93,169,255,8,127,182,0,17,186,14,254,253,137,246,255,213,25,48,254,76,238,0,255,248,92,70,255,99,224,139,0,184,9,255,1,7,164,208,0,205,131,198,1,87,214,199,0,130,214,95,0,221,149,222,0,23,38,171,254,197,110,213,0,43,115,140,254,215,177,118,0,96,52,66,1,117,158,237,0,14,64,182,255,46,63,174,255,158,95,190,255,225,205,177,255,43,5,142,255,172,99,212,255,244,187,147,0,29,51,153,255,228,116,24,254,30,\n101,207,0,19,246,150,255,134,231,5,0,125,134,226,1,77,65,98,0,236,130,33,255,5,110,62,0,69,108,127,255,7,113,22,0,145,20,83,254,194,161,231,255,131,181,60,0,217,209,177,255,229,148,212,254,3,131,184,0,117,177,187,1,28,14,31,255,176,102,80,0,50,84,151,255,125,31,54,255,21,157,133,255,19,179,139,1,224,232,26,0,34,117,170,255,167,252,171,255,73,141,206,254,129,250,35,0,72,79,236,1,220,229,20,255,41,202,173,255,99,76,238,255,198,22,224,255,108,198,195,255,36,141,96,1,236,158,59,255,106,100,87,0,110,226,\n2,0,227,234,222,0,154,93,119,255,74,112,164,255,67,91,2,255,21,145,33,255,102,214,137,255,175,230,103,254,163,246,166,0,93,247,116,254,167,224,28,255,220,2,57,1,171,206,84,0,123,228,17,255,27,120,119,0,119,11,147,1,180,47,225,255,104,200,185,254,165,2,114,0,77,78,212,0,45,154,177,255,24,196,121,254,82,157,182,0,90,16,190,1,12,147,197,0,95,239,152,255,11,235,71,0,86,146,119,255,172,134,214,0,60,131,196,0,161,225,129,0,31,130,120,254,95,200,51,0,105,231,210,255,58,9,148,255,43,168,221,255,124,237,142,\n0,198,211,50,254,46,245,103,0,164,248,84,0,152,70,208,255,180,117,177,0,70,79,185,0,243,74,32,0,149,156,207,0,197,196,161,1,245,53,239,0,15,93,246,254,139,240,49,255,196,88,36,255,162,38,123,0,128,200,157,1,174,76,103,255,173,169,34,254,216,1,171,255,114,51,17,0,136,228,194,0,110,150,56,254,106,246,159,0,19,184,79,255,150,77,240,255,155,80,162,0,0,53,169,255,29,151,86,0,68,94,16,0,92,7,110,254,98,117,149,255,249,77,230,255,253,10,140,0,214,124,92,254,35,118,235,0,89,48,57,1,22,53,166,0,184,144,61,\n255,179,255,194,0,214,248,61,254,59,110,246,0,121,21,81,254,166,3,228,0,106,64,26,255,69,232,134,255,242,220,53,254,46,220,85,0,113,149,247,255,97,179,103,255,190,127,11,0,135,209,182,0,95,52,129,1,170,144,206,255,122,200,204,255,168,100,146,0,60,144,149,254,70,60,40,0,122,52,177,255,246,211,101,255,174,237,8,0,7,51,120,0,19,31,173,0,126,239,156,255,143,189,203,0,196,128,88,255,233,133,226,255,30,125,173,255,201,108,50,0,123,100,59,255,254,163,3,1,221,148,181,255,214,136,57,254,222,180,137,255,207,\n88,54,255,28,33,251,255,67,214,52,1,210,208,100,0,81,170,94,0,145,40,53,0,224,111,231,254,35,28,244,255,226,199,195,254,238,17,230,0,217,217,164,254,169,157,221,0,218,46,162,1,199,207,163,255,108,115,162,1,14,96,187,255,118,60,76,0,184,159,152,0,209,231,71,254,42,164,186,255,186,153,51,254,221,171,182,255,162,142,173,0,235,47,193,0,7,139,16,1,95,164,64,255,16,221,166,0,219,197,16,0,132,29,44,255,100,69,117,255,60,235,88,254,40,81,173,0,71,190,61,255,187,88,157,0,231,11,23,0,237,117,164,0,225,168,\n223,255,154,114,116,255,163,152,242,1,24,32,170,0,125,98,113,254,168,19,76,0,17,157,220,254,155,52,5,0,19,111,161,255,71,90,252,255,173,110,240,0,10,198,121,255,253,255,240,255,66,123,210,0,221,194,215,254,121,163,17,255,225,7,99,0,190,49,182,0,115,9,133,1,232,26,138,255,213,68,132,0,44,119,122,255,179,98,51,0,149,90,106,0,71,50,230,255,10,153,118,255,177,70,25,0,165,87,205,0,55,138,234,0,238,30,97,0,113,155,207,0,98,153,127,0,34,107,219,254,117,114,172,255,76,180,255,254,242,57,179,255,221,34,172,\n254,56,162,49,255,83,3,255,255,113,221,189,255,188,25,228,254,16,88,89,255,71,28,198,254,22,17,149,255,243,121,254,255,107,202,99,255,9,206,14,1,220,47,153,0,107,137,39,1,97,49,194,255,149,51,197,254,186,58,11,255,107,43,232,1,200,6,14,255,181,133,65,254,221,228,171,255,123,62,231,1,227,234,179,255,34,189,212,254,244,187,249,0,190,13,80,1,130,89,1,0,223,133,173,0,9,222,198,255,66,127,74,0,167,216,93,255,155,168,198,1,66,145,0,0,68,102,46,1,172,90,154,0,216,128,75,255,160,40,51,0,158,17,27,1,124,240,\n49,0,236,202,176,255,151,124,192,255,38,193,190,0,95,182,61,0,163,147,124,255,255,165,51,255,28,40,17,254,215,96,78,0,86,145,218,254,31,36,202,255,86,9,5,0,111,41,200,255,237,108,97,0,57,62,44,0,117,184,15,1,45,241,116,0,152,1,220,255,157,165,188,0,250,15,131,1,60,44,125,255,65,220,251,255,75,50,184,0,53,90,128,255,231,80,194,255,136,129,127,1,21,18,187,255,45,58,161,255,71,147,34,0,174,249,11,254,35,141,29,0,239,68,177,255,115,110,58,0,238,190,177,1,87,245,166,255,190,49,247,255,146,83,184,255,173,\n14,39,255,146,215,104,0,142,223,120,0,149,200,155,255,212,207,145,1,16,181,217,0,173,32,87,255,255,35,181,0,119,223,161,1,200,223,94,255,70,6,186,255,192,67,85,255,50,169,152,0,144,26,123,255,56,243,179,254,20,68,136,0,39,140,188,254,253,208,5,255,200,115,135,1,43,172,229,255,156,104,187,0,151,251,167,0,52,135,23,0,151,153,72,0,147,197,107,254,148,158,5,255,238,143,206,0,126,153,137,255,88,152,197,254,7,68,167,0,252,159,165,255,239,78,54,255,24,63,55,255,38,222,94,0,237,183,12,255,206,204,210,0,19,\n39,246,254,30,74,231,0,135,108,29,1,179,115,0,0,117,118,116,1,132,6,252,255,145,129,161,1,105,67,141,0,82,37,226,255,238,226,228,255,204,214,129,254,162,123,100,255,185,121,234,0,45,108,231,0,66,8,56,255,132,136,128,0,172,224,66,254,175,157,188,0,230,223,226,254,242,219,69,0,184,14,119,1,82,162,56,0,114,123,20,0,162,103,85,255,49,239,99,254,156,135,215,0,111,255,167,254,39,196,214,0,144,38,79,1,249,168,125,0,155,97,156,255,23,52,219,255,150,22,144,0,44,149,165,255,40,127,183,0,196,77,233,255,118,\n129,210,255,170,135,230,255,214,119,198,0,233,240,35,0,253,52,7,255,117,102,48,255,21,204,154,255,179,136,177,255,23,2,3,1,149,130,89,255,252,17,159,1,70,60,26,0,144,107,17,0,180,190,60,255,56,182,59,255,110,71,54,255,198,18,129,255,149,224,87,255,223,21,152,255,138,22,182,255,250,156,205,0,236,45,208,255,79,148,242,1,101,70,209,0,103,78,174,0,101,144,172,255,152,136,237,1,191,194,136,0,113,80,125,1,152,4,141,0,155,150,53,255,196,116,245,0,239,114,73,254,19,82,17,255,124,125,234,255,40,52,191,0,42,\n210,158,255,155,132,165,0,178,5,42,1,64,92,40,255,36,85,77,255,178,228,118,0,137,66,96,254,115,226,66,0,110,240,69,254,151,111,80,0,167,174,236,255,227,108,107,255,188,242,65,255,183,81,255,0,57,206,181,255,47,34,181,255,213,240,158,1,71,75,95,0,156,40,24,255,102,210,81,0,171,199,228,255,154,34,41,0,227,175,75,0,21,239,195,0,138,229,95,1,76,192,49,0,117,123,87,1,227,225,130,0,125,62,63,255,2,198,171,0,254,36,13,254,145,186,206,0,148,255,244,255,35,0,166,0,30,150,219,1,92,228,212,0,92,198,60,254,62,\n133,200,255,201,41,59,0,125,238,109,255,180,163,238,1,140,122,82,0,9,22,88,255,197,157,47,255,153,94,57,0,88,30,182,0,84,161,85,0,178,146,124,0,166,166,7,255,21,208,223,0,156,182,242,0,155,121,185,0,83,156,174,254,154,16,118,255,186,83,232,1,223,58,121,255,29,23,88,0,35,125,127,255,170,5,149,254,164,12,130,255,155,196,29,0,161,96,136,0,7,35,29,1,162,37,251,0,3,46,242,255,0,217,188,0,57,174,226,1,206,233,2,0,57,187,136,254,123,189,9,255,201,117,127,255,186,36,204,0,231,25,216,0,80,78,105,0,19,134,\n129,255,148,203,68,0,141,81,125,254,248,165,200,255,214,144,135,0,151,55,166,255,38,235,91,0,21,46,154,0,223,254,150,255,35,153,180,255,125,176,29,1,43,98,30,255,216,122,230,255,233,160,12,0,57,185,12,254,240,113,7,255,5,9,16,254,26,91,108,0,109,198,203,0,8,147,40,0,129,134,228,255,124,186,40,255,114,98,132,254,166,132,23,0,99,69,44,0,9,242,238,255,184,53,59,0,132,129,102,255,52,32,243,254,147,223,200,255,123,83,179,254,135,144,201,255,141,37,56,1,151,60,227,255,90,73,156,1,203,172,187,0,80,151,47,\n255,94,137,231,255,36,191,59,255,225,209,181,255,74,215,213,254,6,118,179,255,153,54,193,1,50,0,231,0,104,157,72,1,140,227,154,255,182,226,16,254,96,225,92,255,115,20,170,254,6,250,78,0,248,75,173,255,53,89,6,255,0,180,118,0,72,173,1,0,64,8,206,1,174,133,223,0,185,62,133,255,214,11,98,0,197,31,208,0,171,167,244,255,22,231,181,1,150,218,185,0,247,169,97,1,165,139,247,255,47,120,149,1,103,248,51,0,60,69,28,254,25,179,196,0,124,7,218,254,58,107,81,0,184,233,156,255,252,74,36,0,118,188,67,0,141,95,53,\n255,222,94,165,254,46,61,53,0,206,59,115,255,47,236,250,255,74,5,32,1,129,154,238,255,106,32,226,0,121,187,61,255,3,166,241,254,67,170,172,255,29,216,178,255,23,201,252,0,253,110,243,0,200,125,57,0,109,192,96,255,52,115,238,0,38,121,243,255,201,56,33,0,194,118,130,0,75,96,25,255,170,30,230,254,39,63,253,0,36,45,250,255,251,1,239,0,160,212,92,1,45,209,237,0,243,33,87,254,237,84,201,255,212,18,157,254,212,99,127,255,217,98,16,254,139,172,239,0,168,201,130,255,143,193,169,255,238,151,193,1,215,104,41,\n0,239,61,165,254,2,3,242,0,22,203,177,254,177,204,22,0,149,129,213,254,31,11,41,255,0,159,121,254,160,25,114,255,162,80,200,0,157,151,11,0,154,134,78,1,216,54,252,0,48,103,133,0,105,220,197,0,253,168,77,254,53,179,23,0,24,121,240,1,255,46,96,255,107,60,135,254,98,205,249,255,63,249,119,255,120,59,211,255,114,180,55,254,91,85,237,0,149,212,77,1,56,73,49,0,86,198,150,0,93,209,160,0,69,205,182,255,244,90,43,0,20,36,176,0,122,116,221,0,51,167,39,1,231,1,63,255,13,197,134,0,3,209,34,255,135,59,202,0,167,\n100,78,0,47,223,76,0,185,60,62,0,178,166,123,1,132,12,161,255,61,174,43,0,195,69,144,0,127,47,191,1,34,44,78,0,57,234,52,1,255,22,40,255,246,94,146,0,83,228,128,0,60,78,224,255,0,96,210,255,153,175,236,0,159,21,73,0,180,115,196,254,131,225,106,0,255,167,134,0,159,8,112,255,120,68,194,255,176,196,198,255,118,48,168,255,93,169,1,0,112,200,102,1,74,24,254,0,19,141,4,254,142,62,63,0,131,179,187,255,77,156,155,255,119,86,164,0,170,208,146,255,208,133,154,255,148,155,58,255,162,120,232,254,252,213,155,\n0,241,13,42,0,94,50,131,0,179,170,112,0,140,83,151,255,55,119,84,1,140,35,239,255,153,45,67,1,236,175,39,0,54,151,103,255,158,42,65,255,196,239,135,254,86,53,203,0,149,97,47,254,216,35,17,255,70,3,70,1,103,36,90,255,40,26,173,0,184,48,13,0,163,219,217,255,81,6,1,255,221,170,108,254,233,208,93,0,100,201,249,254,86,36,35,255,209,154,30,1,227,201,251,255,2,189,167,254,100,57,3,0,13,128,41,0,197,100,75,0,150,204,235,255,145,174,59,0,120,248,149,255,85,55,225,0,114,210,53,254,199,204,119,0,14,247,74,1,\n63,251,129,0,67,104,151,1,135,130,80,0,79,89,55,255,117,230,157,255,25,96,143,0,213,145,5,0,69,241,120,1,149,243,95,255,114,42,20,0,131,72,2,0,154,53,20,255,73,62,109,0,196,102,152,0,41,12,204,255,122,38,11,1,250,10,145,0,207,125,148,0,246,244,222,255,41,32,85,1,112,213,126,0,162,249,86,1,71,198,127,255,81,9,21,1,98,39,4,255,204,71,45,1,75,111,137,0,234,59,231,0,32,48,95,255,204,31,114,1,29,196,181,255,51,241,167,254,93,109,142,0,104,144,45,0,235,12,181,255,52,112,164,0,76,254,202,255,174,14,162,\n0,61,235,147,255,43,64,185,254,233,125,217,0,243,88,167,254,74,49,8,0,156,204,66,0,124,214,123,0,38,221,118,1,146,112,236,0,114,98,177,0,151,89,199,0,87,197,112,0,185,149,161,0,44,96,165,0,248,179,20,255,188,219,216,254,40,62,13,0,243,142,141,0,229,227,206,255,172,202,35,255,117,176,225,255,82,110,38,1,42,245,14,255,20,83,97,0,49,171,10,0,242,119,120,0,25,232,61,0,212,240,147,255,4,115,56,255,145,17,239,254,202,17,251,255,249,18,245,255,99,117,239,0,184,4,179,255,246,237,51,255,37,239,137,255,166,\n112,166,255,81,188,33,255,185,250,142,255,54,187,173,0,208,112,201,0,246,43,228,1,104,184,88,255,212,52,196,255,51,117,108,255,254,117,155,0,46,91,15,255,87,14,144,255,87,227,204,0,83,26,83,1,159,76,227,0,159,27,213,1,24,151,108,0,117,144,179,254,137,209,82,0,38,159,10,0,115,133,201,0,223,182,156,1,110,196,93,255,57,60,233,0,5,167,105,255,154,197,164,0,96,34,186,255,147,133,37,1,220,99,190,0,1,167,84,255,20,145,171,0,194,197,251,254,95,78,133,255,252,248,243,255,225,93,131,255,187,134,196,255,216,\n153,170,0,20,118,158,254,140,1,118,0,86,158,15,1,45,211,41,255,147,1,100,254,113,116,76,255,211,127,108,1,103,15,48,0,193,16,102,1,69,51,95,255,107,128,157,0,137,171,233,0,90,124,144,1,106,161,182,0,175,76,236,1,200,141,172,255,163,58,104,0,233,180,52,255,240,253,14,255,162,113,254,255,38,239,138,254,52,46,166,0,241,101,33,254,131,186,156,0,111,208,62,255,124,94,160,255,31,172,254,0,112,174,56,255,188,99,27,255,67,138,251,0,125,58,128,1,156,152,174,255,178,12,247,255,252,84,158,0,82,197,14,254,172,\n200,83,255,37,39,46,1,106,207,167,0,24,189,34,0,131,178,144,0,206,213,4,0,161,226,210,0,72,51,105,255,97,45,187,255,78,184,223,255,176,29,251,0,79,160,86,255,116,37,178,0,82,77,213,1,82,84,141,255,226,101,212,1,175,88,199,255,245,94,247,1,172,118,109,255,166,185,190,0,131,181,120,0,87,254,93,255,134,240,73,255,32,245,143,255,139,162,103,255,179,98,18,254,217,204,112,0,147,223,120,255,53,10,243,0,166,140,150,0,125,80,200,255,14,109,219,255,91,218,1,255,252,252,47,254,109,156,116,255,115,49,127,1,204,\n87,211,255,148,202,217,255,26,85,249,255,14,245,134,1,76,89,169,255,242,45,230,0,59,98,172,255,114,73,132,254,78,155,49,255,158,126,84,0,49,175,43,255,16,182,84,255,157,103,35,0,104,193,109,255,67,221,154,0,201,172,1,254,8,162,88,0,165,1,29,255,125,155,229,255,30,154,220,1,103,239,92,0,220,1,109,255,202,198,1,0,94,2,142,1,36,54,44,0,235,226,158,255,170,251,214,255,185,77,9,0,97,74,242,0,219,163,149,255,240,35,118,255,223,114,88,254,192,199,3,0,106,37,24,255,201,161,118,255,97,89,99,1,224,58,103,255,\n101,199,147,254,222,60,99,0,234,25,59,1,52,135,27,0,102,3,91,254,168,216,235,0,229,232,136,0,104,60,129,0,46,168,238,0,39,191,67,0,75,163,47,0,143,97,98,255,56,216,168,1,168,233,252,255,35,111,22,255,92,84,43,0,26,200,87,1,91,253,152,0,202,56,70,0,142,8,77,0,80,10,175,1,252,199,76,0,22,110,82,255,129,1,194,0,11,128,61,1,87,14,145,255,253,222,190,1,15,72,174,0,85,163,86,254,58,99,44,255,45,24,188,254,26,205,15,0,19,229,210,254,248,67,195,0,99,71,184,0,154,199,37,255,151,243,121,255,38,51,75,255,201,\n85,130,254,44,65,250,0,57,147,243,254,146,43,59,255,89,28,53,0,33,84,24,255,179,51,18,254,189,70,83,0,11,156,179,1,98,134,119,0,158,111,111,0,119,154,73,255,200,63,140,254,45,13,13,255,154,192,2,254,81,72,42,0,46,160,185,254,44,112,6,0,146,215,149,1,26,176,104,0,68,28,87,1,236,50,153,255,179,128,250,254,206,193,191,255,166,92,137,254,53,40,239,0,210,1,204,254,168,173,35,0,141,243,45,1,36,50,109,255,15,242,194,255,227,159,122,255,176,175,202,254,70,57,72,0,40,223,56,0,208,162,58,255,183,98,93,0,15,\n111,12,0,30,8,76,255,132,127,246,255,45,242,103,0,69,181,15,255,10,209,30,0,3,179,121,0,241,232,218,1,123,199,88,255,2,210,202,1,188,130,81,255,94,101,208,1,103,36,45,0,76,193,24,1,95,26,241,255,165,162,187,0,36,114,140],\"i8\",4,e.h+10240);K([202,66,5,255,37,56,147,0,152,11,243,1,127,85,232,255,250,135,212,1,185,177,113,0,90,220,75,255,69,248,146,0,50,111,50,0,92,22,80,0,244,36,115,254,163,100,82,255,25,193,6,1,127,61,36,0,253,67,30,254,65,236,170,255,161,17,215,254,63,175,140,0,55,127,4,0,79,112,\n233,0,109,160,40,0,143,83,7,255,65,26,238,255,217,169,140,255,78,94,189,255,0,147,190,255,147,71,186,254,106,77,127,255,233,157,233,1,135,87,237,255,208,13,236,1,155,109,36,255,180,100,218,0,180,163,18,0,190,110,9,1,17,63,123,255,179,136,180,255,165,123,123,255,144,188,81,254,71,240,108,255,25,112,11,255,227,218,51,255,167,50,234,255,114,79,108,255,31,19,115,255,183,240,99,0,227,87,143,255,72,217,248,255,102,169,95,1,129,149,149,0,238,133,12,1,227,204,35,0,208,115,26,1,102,8,234,0,112,88,143,1,144,\n249,14,0,240,158,172,254,100,112,119,0,194,141,153,254,40,56,83,255,121,176,46,0,42,53,76,255,158,191,154,0,91,209,92,0,173,13,16,1,5,72,226,255,204,254,149,0,80,184,207,0,100,9,122,254,118,101,171,255,252,203,0,254,160,207,54,0,56,72,249,1,56,140,13,255,10,64,107,254,91,101,52,255,225,181,248,1,139,255,132,0,230,145,17,0,233,56,23,0,119,1,241,255,213,169,151,255,99,99,9,254,185,15,191,255,173,103,109,1,174,13,251,255,178,88,7,254,27,59,68,255,10,33,2,255,248,97,59,0,26,30,146,1,176,147,10,0,95,121,\n207,1,188,88,24,0,185,94,254,254,115,55,201,0,24,50,70,0,120,53,6,0,142,66,146,0,228,226,249,255,104,192,222,1,173,68,219,0,162,184,36,255,143,102,137,255,157,11,23,0,125,45,98,0,235,93,225,254,56,112,160,255,70,116,243,1,153,249,55,255,129,39,17,1,241,80,244,0,87,69,21,1,94,228,73,255,78,66,65,255,194,227,231,0,61,146,87,255,173,155,23,255,112,116,219,254,216,38,11,255,131,186,133,0,94,212,187,0,100,47,91,0,204,254,175,255,222,18,215,254,173,68,108,255,227,228,79,255,38,221,213,0,163,227,150,254,\n31,190,18,0,160,179,11,1,10,90,94,255,220,174,88,0,163,211,229,255,199,136,52,0,130,95,221,255,140,188,231,254,139,113,128,255,117,171,236,254,49,220,20,255,59,20,171,255,228,109,188,0,20,225,32,254,195,16,174,0,227,254,136,1,135,39,105,0,150,77,206,255,210,238,226,0,55,212,132,254,239,57,124,0,170,194,93,255,249,16,247,255,24,151,62,255,10,151,10,0,79,139,178,255,120,242,202,0,26,219,213,0,62,125,35,255,144,2,108,255,230,33,83,255,81,45,216,1,224,62,17,0,214,217,125,0,98,153,153,255,179,176,106,\n254,131,93,138,255,109,62,36,255,178,121,32,255,120,252,70,0,220,248,37,0,204,88,103,1,128,220,251,255,236,227,7,1,106,49,198,255,60,56,107,0,99,114,238,0,220,204,94,1,73,187,1,0,89,154,34,0,78,217,165,255,14,195,249,255,9,230,253,255,205,135,245,0,26,252,7,255,84,205,27,1,134,2,112,0,37,158,32,0,231,91,237,255,191,170,204,255,152,7,222,0,109,192,49,0,193,166,146,255,232,19,181,255,105,142,52,255,103,16,27,1,253,200,165,0,195,217,4,255,52,189,144,255,123,155,160,254,87,130,54,255,78,120,61,255,14,\n56,41,0,25,41,125,255,87,168,245,0,214,165,70,0,212,169,6,255,219,211,194,254,72,93,164,255,197,33,103,255,43,142,141,0,131,225,172,0,244,105,28,0,68,68,225,0,136,84,13,255,130,57,40,254,139,77,56,0,84,150,53,0,54,95,157,0,144,13,177,254,95,115,186,0,117,23,118,255,244,166,241,255,11,186,135,0,178,106,203,255,97,218,93,0,43,253,45,0,164,152,4,0,139,118,239,0,96,1,24,254,235,153,211,255,168,110,20,255,50,239,176,0,114,41,232,0,193,250,53,0,254,160,111,254,136,122,41,255,97,108,67,0,215,152,23,255,\n140,209,212,0,42,189,163,0,202,42,50,255,106,106,189,255,190,68,217,255,233,58,117,0,229,220,243,1,197,3,4,0,37,120,54,254,4,156,134,255,36,61,171,254,165,136,100,255,212,232,14,0,90,174,10,0,216,198,65,255,12,3,64,0,116,113,115,255,248,103,8,0,231,125,18,255,160,28,197,0,30,184,35,1,223,73,249,255,123,20,46,254,135,56,37,255,173,13,229,1,119,161,34,255,245,61,73,0,205,125,112,0,137,104,134,0,217,246,30,255,237,142,143,0,65,159,102,255,108,164,190,0,219,117,173,255,34,37,120,254,200,69,80,0,31,124,\n218,254,74,27,160,255,186,154,199,255,71,199,252,0,104,81,159,1,17,200,39,0,211,61,192,1,26,238,91,0,148,217,12,0,59,91,213,255,11,81,183,255,129,230,122,255,114,203,145,1,119,180,66,255,72,138,180,0,224,149,106,0,119,82,104,255,208,140,43,0,98,9,182,255,205,101,134,255,18,101,38,0,95,197,166,255,203,241,147,0,62,208,145,255,133,246,251,0,2,169,14,0,13,247,184,0,142,7,254,0,36,200,23,255,88,205,223,0,91,129,52,255,21,186,30,0,143,228,210,1,247,234,248,255,230,69,31,254,176,186,135,255,238,205,52,\n1,139,79,43,0,17,176,217,254,32,243,67,0,242,111,233,0,44,35,9,255,227,114,81,1,4,71,12,255,38,105,191,0,7,117,50,255,81,79,16,0,63,68,65,255,157,36,110,255,77,241,3,255,226,45,251,1,142,25,206,0,120,123,209,1,28,254,238,255,5,128,126,255,91,222,215,255,162,15,191,0,86,240,73,0,135,185,81,254,44,241,163,0,212,219,210,255,112,162,155,0,207,101,118,0,168,72,56,255,196,5,52,0,72,172,242,255,126,22,157,255,146,96,59,255,162,121,152,254,140,16,95,0,195,254,200,254,82,150,162,0,119,43,145,254,204,172,78,\n255,166,224,159,0,104,19,237,255,245,126,208,255,226,59,213,0,117,217,197,0,152,72,237,0,220,31,23,254,14,90,231,255,188,212,64,1,60,101,246,255,85,24,86,0,1,177,109,0,146,83,32,1,75,182,192,0,119,241,224,0,185,237,27,255,184,101,82,1,235,37,77,255,253,134,19,0,232,246,122,0,60,106,179,0,195,11,12,0,109,66,235,1,125,113,59,0,61,40,164,0,175,104,240,0,2,47,187,255,50,12,141,0,194,139,181,255,135,250,104,0,97,92,222,255,217,149,201,255,203,241,118,255,79,151,67,0,122,142,218,255,149,245,239,0,138,42,\n200,254,80,37,97,255,124,112,167,255,36,138,87,255,130,29,147,255,241,87,78,255,204,97,19,1,177,209,22,255,247,227,127,254,99,119,83,255,212,25,198,1,16,179,179,0,145,77,172,254,89,153,14,255,218,189,167,0,107,233,59,255,35,33,243,254,44,112,112,255,161,127,79,1,204,175,10,0,40,21,138,254,104,116,228,0,199,95,137,255,133,190,168,255,146,165,234,1,183,99,39,0,183,220,54,254,255,222,133,0,162,219,121,254,63,239,6,0,225,102,54,255,251,18,246,0,4,34,129,1,135,36,131,0,206,50,59,1,15,97,183,0,171,216,\n135,255,101,152,43,255,150,251,91,0,38,145,95,0,34,204,38,254,178,140,83,255,25,129,243,255,76,144,37,0,106,36,26,254,118,144,172,255,68,186,229,255,107,161,213,255,46,163,68,255,149,170,253,0,187,17,15,0,218,160,165,255,171,35,246,1,96,13,19,0,165,203,117,0,214,107,192,255,244,123,177,1,100,3,104,0,178,242,97,255,251,76,130,255,211,77,42,1,250,79,70,255,63,244,80,1,105,101,246,0,61,136,58,1,238,91,213,0,14,59,98,255,167,84,77,0,17,132,46,254,57,175,197,255,185,62,184,0,76,64,207,0,172,175,208,254,\n175,74,37,0,138,27,211,254,148,125,194,0,10,89,81,0,168,203,101,255,43,213,209,1,235,245,54,0,30,35,226,255,9,126,70,0,226,125,94,254,156,117,20,255,57,248,112,1,230,48,64,255,164,92,166,1,224,214,230,255,36,120,143,0,55,8,43,255,251,1,245,1,106,98,165,0,74,107,106,254,53,4,54,255,90,178,150,1,3,120,123,255,244,5,89,1,114,250,61,255,254,153,82,1,77,15,17,0,57,238,90,1,95,223,230,0,236,52,47,254,103,148,164,255,121,207,36,1,18,16,185,255,75,20,74,0,187,11,101,0,46,48,129,255,22,239,210,255,77,236,\n129,255,111,77,204,255,61,72,97,255,199,217,251,255,42,215,204,0,133,145,201,255,57,230,146,1,235,100,198,0,146,73,35,254,108,198,20,255,182,79,210,255,82,103,136,0,246,108,176,0,34,17,60,255,19,74,114,254,168,170,78,255,157,239,20,255,149,41,168,0,58,121,28,0,79,179,134,255,231,121,135,255,174,209,98,255,243,122,190,0,171,166,205,0,212,116,48,0,29,108,66,255,162,222,182,1,14,119,21,0,213,39,249,255,254,223,228,255,183,165,198,0,133,190,48,0,124,208,109,255,119,175,85,255,9,209,121,1,48,171,189,255,\n195,71,134,1,136,219,51,255,182,91,141,254,49,159,72,0,35,118,245,255,112,186,227,255,59,137,31,0,137,44,163,0,114,103,60,254,8,213,150,0,162,10,113,255,194,104,72,0,220,131,116,255,178,79,92,0,203,250,213,254,93,193,189,255,130,255,34,254,212,188,151,0,136,17,20,255,20,101,83,255,212,206,166,0,229,238,73,255,151,74,3,255,168,87,215,0,155,188,133,255,166,129,73,0,240,79,133,255,178,211,81,255,203,72,163,254,193,168,165,0,14,164,199,254,30,255,204,0,65,72,91,1,166,74,102,255,200,42,0,255,194,113,227,\n255,66,23,208,0,229,216,100,255,24,239,26,0,10,233,62,255,123,10,178,1,26,36,174,255,119,219,199,1,45,163,190,0,16,168,42,0,166,57,198,255,28,26,26,0,126,165,231,0,251,108,100,255,61,229,121,255,58,118,138,0,76,207,17,0,13,34,112,254,89,16,168,0,37,208,105,255,35,201,215,255,40,106,101,254,6,239,114,0,40,103,226,254,246,127,110,255,63,167,58,0,132,240,142,0,5,158,88,255,129,73,158,255,94,89,146,0,230,54,146,0,8,45,173,0,79,169,1,0,115,186,247,0,84,64,131,0,67,224,253,255,207,189,64,0,154,28,81,1,\n45,184,54,255,87,212,224,255,0,96,73,255,129,33,235,1,52,66,80,255,251,174,155,255,4,179,37,0,234,164,93,254,93,175,253,0,198,69,87,255,224,106,46,0,99,29,210,0,62,188,114,255,44,234,8,0,169,175,247,255,23,109,137,255,229,182,39,0,192,165,94,254,245,101,217,0,191,88,96,0,196,94,99,255,106,238,11,254,53,126,243,0,94,1,101,255,46,147,2,0,201,124,124,255,141,12,218,0,13,166,157,1,48,251,237,255,155,250,124,255,106,148,146,255,182,13,202,0,28,61,167,0,217,152,8,254,220,130,45,255,200,230,255,1,55,65,\n87,255,93,191,97,254,114,251,14,0,32,105,92,1,26,207,141,0,24,207,13,254,21,50,48,255,186,148,116,255,211,43,225,0,37,34,162,254,164,210,42,255,68,23,96,255,182,214,8,255,245,117,137,255,66,195,50,0,75,12,83,254,80,140,164,0,9,165,36,1,228,110,227,0,241,17,90,1,25,52,212,0,6,223,12,255,139,243,57,0,12,113,75,1,246,183,191,255,213,191,69,255,230,15,142,0,1,195,196,255,138,171,47,255,64,63,106,1,16,169,214,255,207,174,56,1,88,73,133,255,182,133,140,0,177,14,25,255,147,184,53,255,10,227,161,255,120,\n216,244,255,73,77,233,0,157,238,139,1,59,65,233,0,70,251,216,1,41,184,153,255,32,203,112,0,146,147,253,0,87,101,109,1,44,82,133,255,244,150,53,255,94,152,232,255,59,93,39,255,88,147,220,255,78,81,13,1,32,47,252,255,160,19,114,255,93,107,39,255,118,16,211,1,185,119,209,255,227,219,127,254,88,105,236,255,162,110,23,255,36,166,110,255,91,236,221,255,66,234,116,0,111,19,244,254,10,233,26,0,32,183,6,254,2,191,242,0,218,156,53,254,41,60,70,255,168,236,111,0,121,185,126,255,238,142,207,255,55,126,52,0,220,\n129,208,254,80,204,164,255,67,23,144,254,218,40,108,255,127,202,164,0,203,33,3,255,2,158,0,0,37,96,188,255,192,49,74,0,109,4,0,0,111,167,10,254,91,218,135,255,203,66,173,255,150,194,226,0,201,253,6,255,174,102,121,0,205,191,110,0,53,194,4,0,81,40,45,254,35,102,143,255,12,108,198,255,16,27,232,255,252,71,186,1,176,110,114,0,142,3,117,1,113,77,142,0,19,156,197,1,92,47,252,0,53,232,22,1,54,18,235,0,46,35,189,255,236,212,129,0,2,96,208,254,200,238,199,255,59,175,164,255,146,43,231,0,194,217,52,255,3,\n223,12,0,138,54,178,254,85,235,207,0,232,207,34,0,49,52,50,255,166,113,89,255,10,45,216,255,62,173,28,0,111,165,246,0,118,115,91,255,128,84,60,0,167,144,203,0,87,13,243,0,22,30,228,1,177,113,146,255,129,170,230,254,252,153,129,255,145,225,43,0,70,231,5,255,122,105,126,254,86,246,148,255,110,37,154,254,209,3,91,0,68,145,62,0,228,16,165,255,55,221,249,254,178,210,91,0,83,146,226,254,69,146,186,0,93,210,104,254,16,25,173,0,231,186,38,0,189,122,140,255,251,13,112,255,105,110,93,0,251,72,170,0,192,23,\n223,255,24,3,202,1,225,93,228,0,153,147,199,254,109,170,22,0,248,101,246,255,178,124,12,255,178,254,102,254,55,4,65,0,125,214,180,0,183,96,147,0,45,117,23,254,132,191,249,0,143,176,203,254,136,183,54,255,146,234,177,0,146,101,86,255,44,123,143,1,33,209,152,0,192,90,41,254,83,15,125,255,213,172,82,0,215,169,144,0,16,13,34,0,32,209,100,255,84,18,249,1,197,17,236,255,217,186,230,0,49,160,176,255,111,118,97,255,237,104,235,0,79,59,92,254,69,249,11,255,35,172,74,1,19,118,68,0,222,124,165,255,180,66,35,\n255,86,174,246,0,43,74,111,255,126,144,86,255,228,234,91,0,242,213,24,254,69,44,235,255,220,180,35,0,8,248,7,255,102,47,92,255,240,205,102,255,113,230,171,1,31,185,201,255,194,246,70,255,122,17,187,0,134,70,199,255,149,3,150,255,117,63,103,0,65,104,123,255,212,54,19,1,6,141,88,0,83,134,243,255,136,53,103,0,169,27,180,0,177,49,24,0,111,54,167,0,195,61,215,255,31,1,108,1,60,42,70,0,185,3,162,255,194,149,40,255,246,127,38,254,190,119,38,255,61,119,8,1,96,161,219,255,42,203,221,1,177,242,164,255,245,\n159,10,0,116,196,0,0,5,93,205,254,128,127,179,0,125,237,246,255,149,162,217,255,87,37,20,254,140,238,192,0,9,9,193,0,97,1,226,0,29,38,10,0,0,136,63,255,229,72,210,254,38,134,92,255,78,218,208,1,104,36,84,255,12,5,193,255,242,175,61,255,191,169,46,1,179,147,147,255,113,190,139,254,125,172,31,0,3,75,252,254,215,36,15,0,193,27,24,1,255,69,149,255,110,129,118,0,203,93,249,0,138,137,64,254,38,70,6,0,153,116,222,0,161,74,123,0,193,99,79,255,118,59,94,255,61,12,43,1,146,177,157,0,46,147,191,0,16,255,38,\n0,11,51,31,1,60,58,98,255,111,194,77,1,154,91,244,0,140,40,144,1,173,10,251,0,203,209,50,254,108,130,78,0,228,180,90,0,174,7,250,0,31,174,60,0,41,171,30,0,116,99,82,255,118,193,139,255,187,173,198,254,218,111,56,0,185,123,216,0,249,158,52,0,52,180,93,255,201,9,91,255,56,45,166,254,132,155,203,255,58,232,110,0,52,211,89,255,253,0,162,1,9,87,183,0,145,136,44,1,94,122,245,0,85,188,171,1,147,92,198,0,0,8,104,0,30,95,174,0,221,230,52,1,247,247,235,255,137,174,53,255,35,21,204,255,71,227,214,1,232,82,194,\n0,11,48,227,255,170,73,184,255,198,251,252,254,44,112,34,0,131,101,131,255,72,168,187,0,132,135,125,255,138,104,97,255,238,184,168,255,243,104,84,255,135,216,226,255,139,144,237,0,188,137,150,1,80,56,140,255,86,169,167,255,194,78,25,255,220,17,180,255,17,13,193,0,117,137,212,255,141,224,151,0,49,244,175,0,193,99,175,255,19,99,154,1,255,65,62,255,156,210,55,255,242,244,3,255,250,14,149,0,158,88,217,255,157,207,134,254,251,232,28,0,46,156,251,255,171,56,184,255,239,51,234,0,142,138,131,255,25,254,243,\n1,10,201,194,0,63,97,75,0,210,239,162,0,192,200,31,1,117,214,243,0,24,71,222,254,54,40,232,255,76,183,111,254,144,14,87,255,214,79,136,255,216,196,212,0,132,27,140,254,131,5,253,0,124,108,19,255,28,215,75,0,76,222,55,254,233,182,63,0,68,171,191,254,52,111,222,255,10,105,77,255,80,170,235,0,143,24,88,255,45,231,121,0,148,129,224,1,61,246,84,0,253,46,219,255,239,76,33,0,49,148,18,254,230,37,69,0,67,134,22,254,142,155,94,0,31,157,211,254,213,42,30,255,4,228,247,254,252,176,13,255,39,0,31,254,241,244,\n255,255,170,45,10,254,253,222,249,0,222,114,132,0,255,47,6,255,180,163,179,1,84,94,151,255,89,209,82,254,229,52,169,255,213,236,0,1,214,56,228,255,135,119,151,255,112,201,193,0,83,160,53,254,6,151,66,0,18,162,17,0,233,97,91,0,131,5,78,1,181,120,53,255,117,95,63,255,237,117,185,0,191,126,136,255,144,119,233,0,183,57,97,1,47,201,187,255,167,165,119,1,45,100,126,0,21,98,6,254,145,150,95,255,120,54,152,0,209,98,104,0,143,111,30,254,184,148,249,0,235,216,46,0,248,202,148,255,57,95,22,0,242,225,163,0,233,\n247,232,255,71,171,19,255,103,244,49,255,84,103,93,255,68,121,244,1,82,224,13,0,41,79,43,255,249,206,167,255,215,52,21,254,192,32,22,255,247,111,60,0,101,74,38,255,22,91,84,254,29,28,13,255,198,231,215,254,244,154,200,0,223,137,237,0,211,132,14,0,95,64,206,255,17,62,247,255,233,131,121,1,93,23,77,0,205,204,52,254,81,189,136,0,180,219,138,1,143,18,94,0,204,43,140,254,188,175,219,0,111,98,143,255,151,63,162,255,211,50,71,254,19,146,53,0,146,45,83,254,178,82,238,255,16,133,84,255,226,198,93,255,201,\n97,20,255,120,118,35,255,114,50,231,255,162,229,156,255,211,26,12,0,114,39,115,255,206,212,134,0,197,217,160,255,116,129,94,254,199,215,219,255,75,223,249,1,253,116,181,255,232,215,104,255,228,130,246,255,185,117,86,0,14,5,8,0,239,29,61,1,237,87,133,255,125,146,137,254,204,168,223,0,46,168,245,0,154,105,22,0,220,212,161,255,107,69,24,255,137,218,181,255,241,84,198,255,130,122,211,255,141,8,153,255,190,177,118,0,96,89,178,0,255,16,48,254,122,96,105,255,117,54,232,255,34,126,105,255,204,67,166,0,232,\n52,138,255,211,147,12,0,25,54,7,0,44,15,215,254,51,236,45,0,190,68,129,1,106,147,225,0,28,93,45,254,236,141,15,255,17,61,161,0,220,115,192,0,236,145,24,254,111,168,169,0,224,58,63,255,127,164,188,0,82,234,75,1,224,158,134,0,209,68,110,1,217,166,217,0,70,225,166,1,187,193,143,255,16,7,88,255,10,205,140,0,117,192,156,1,17,56,38,0,27,124,108,1,171,215,55,255,95,253,212,0,155,135,168,255,246,178,153,254,154,68,74,0,232,61,96,254,105,132,59,0,33,76,199,1,189,176,130,255,9,104,25,254,75,198,102,255,233,\n1,112,0,108,220,20,255,114,230,70,0,140,194,133,255,57,158,164,254,146,6,80,255,169,196,97,1,85,183,130,0,70,158,222,1,59,237,234,255,96,25,26,255,232,175,97,255,11,121,248,254,88,35,194,0,219,180,252,254,74,8,227,0,195,227,73,1,184,110,161,255,49,233,164,1,128,53,47,0,82,14,121,255,193,190,58,0,48,174,117,255,132,23,32,0,40,10,134,1,22,51,25,255,240,11,176,255,110,57,146,0,117,143,239,1,157,101,118,255,54,84,76,0,205,184,18,255,47,4,72,255,78,112,85,255,193,50,66,1,93,16,52,255,8,105,134,0,12,109,\n72,255,58,156,251,0,144,35,204,0,44,160,117,254,50,107,194,0,1,68,165,255,111,110,162,0,158,83,40,254,76,214,234,0,58,216,205,255,171,96,147,255,40,227,114,1,176,227,241,0,70,249,183,1,136,84,139,255,60,122,247,254,143,9,117,255,177,174,137,254,73,247,143,0,236,185,126,255,62,25,247,255,45,64,56,255,161,244,6,0,34,57,56,1,105,202,83,0,128,147,208,0,6,103,10,255,74,138,65,255,97,80,100,255,214,174,33,255,50,134,74,255,110,151,130,254,111,84,172,0,84,199,75,254,248,59,112,255,8,216,178,1,9,183,95,0,\n238,27,8,254,170,205,220,0,195,229,135,0,98,76,237,255,226,91,26,1,82,219,39,255,225,190,199,1,217,200,121,255,81,179,8,255,140,65,206,0,178,207,87,254,250,252,46,255,104,89,110,1,253,189,158,255,144,214,158,255,160,245,54,255,53,183,92,1,21,200,194,255,146,33,113,1,209,1,255,0,235,106,43,255,167,52,232,0,157,229,221,0,51,30,25,0,250,221,27,1,65,147,87,255,79,123,196,0,65,196,223,255,76,44,17,1,85,241,68,0,202,183,249,255,65,212,212,255,9,33,154,1,71,59,80,0,175,194,59,255,141,72,9,0,100,160,244,\n0,230,208,56,0,59,25,75,254,80,194,194,0,18,3,200,254,160,159,115,0,132,143,247,1,111,93,57,255,58,237,11,1,134,222,135,255,122,163,108,1,123,43,190,255,251,189,206,254,80,182,72,255,208,246,224,1,17,60,9,0,161,207,38,0,141,109,91,0,216,15,211,255,136,78,110,0,98,163,104,255,21,80,121,255,173,178,183,1,127,143,4,0,104,60,82,254,214,16,13,255,96,238,33,1,158,148,230,255,127,129,62,255,51,255,210,255,62,141,236,254,157,55,224,255,114,39,244,0,192,188,250,255,228,76,53,0,98,84,81,255,173,203,61,254,\n147,50,55,255,204,235,191,0,52,197,244,0,88,43,211,254,27,191,119,0,188,231,154,0,66,81,161,0,92,193,160,1,250,227,120,0,123,55,226,0,184,17,72,0,133,168,10,254,22,135,156,255,41,25,103,255,48,202,58,0,186,149,81,255,188,134,239,0,235,181,189,254,217,139,188,255,74,48,82,0,46,218,229,0,189,253,251,0,50,229,12,255,211,141,191,1,128,244,25,255,169,231,122,254,86,47,189,255,132,183,23,255,37,178,150,255,51,137,253,0,200,78,31,0,22,105,50,0,130,60,0,0,132,163,91,254,23,231,187,0,192,79,239,0,157,102,\n164,255,192,82,20,1,24,181,103,255,240,9,234,0,1,123,164,255,133,233,0,255,202,242,242,0,60,186,245,0,241,16,199,255,224,116,158,254,191,125,91,255,224,86,207,0,121,37,231,255,227,9,198,255,15,153,239,255,121,232,217,254,75,112,82,0,95,12,57,254,51,214,105,255,148,220,97,1,199,98,36,0,156,209,12,254,10,212,52,0,217,180,55,254,212,170,232,255,216,20,84,255,157,250,135,0,157,99,127,254,1,206,41,0,149,36,70,1,54,196,201,255,87,116,0,254,235,171,150,0,27,163,234,0,202,135,180,0,208,95,0,254,123,156,93,\n0,183,62,75,0,137,235,182,0,204,225,255,255,214,139,210,255,2,115,8,255,29,12,111,0,52,156,1,0,253,21,251,255,37,165,31,254,12,130,211,0,106,18,53,254,42,99,154,0,14,217,61,254,216,11,92,255,200,197,112,254,147,38,199,0,36,252,120,254,107,169,77,0,1,123,159,255,207,75,102,0,163,175,196,0,44,1,240,0,120,186,176,254,13,98,76,255,237,124,241,255,232,146,188,255,200,96,224,0,204,31,41,0,208,200,13,0,21,225,96,255,175,156,196,0,247,208,126,0,62,184,244,254,2,171,81,0,85,115,158,0,54,64,45,255,19,138,114,\n0,135,71,205,0,227,47,147,1,218,231,66,0,253,209,28,0,244,15,173,255,6,15,118,254,16,150,208,255,185,22,50,255,86,112,207,255,75,113,215,1,63,146,43,255,4,225,19,254,227,23,62,255,14,255,214,254,45,8,205,255,87,197,151,254,210,82,215,255,245,248,247,255,128,248,70,0,225,247,87,0,90,120,70,0,213,245,92,0,13,133,226,0,47,181,5,1,92,163,105,255,6,30,133,254,232,178,61,255,230,149,24,255,18,49,158,0,228,100,61,254,116,243,251,255,77,75,92,1,81,219,147,255,76,163,254,254,141,213,246,0,232,37,152,254,97,\n44,100,0,201,37,50,1,212,244,57,0,174,171,183,255,249,74,112,0,166,156,30,0,222,221,97,255,243,93,73,254,251,101,100,255,216,217,93,255,254,138,187,255,142,190,52,255,59,203,177,255,200,94,52,0,115,114,158,255,165,152,104,1,126,99,226,255,118,157,244,1,107,200,16,0,193,90,229,0,121,6,88,0,156,32,93,254,125,241,211,255,14,237,157,255,165,154,21,255,184,224,22,255,250,24,152,255,113,77,31,0,247,171,23,255,237,177,204,255,52,137,145,255,194,182,114,0,224,234,149,0,10,111,103,1,201,129,4,0,238,142,78,\n0,52,6,40,255,110,213,165,254,60,207,253,0,62,215,69,0,96,97,0,255,49,45,202,0,120,121,22,255,235,139,48,1,198,45,34,255,182,50,27,1,131,210,91,255,46,54,128,0,175,123,105,255,198,141,78,254,67,244,239,255,245,54,103,254,78,38,242,255,2,92,249,254,251,174,87,255,139,63,144,0,24,108,27,255,34,102,18,1,34,22,152,0,66,229,118,254,50,143,99,0,144,169,149,1,118,30,152,0,178,8,121,1,8,159,18,0,90,101,230,255,129,29,119,0,68,36,11,1,232,183,55,0,23,255,96,255,161,41,193,255,63,139,222,0,15,179,243,0,255,\n100,15,255,82,53,135,0,137,57,149,1,99,240,170,255,22,230,228,254,49,180,82,255,61,82,43,0,110,245,217,0,199,125,61,0,46,253,52,0,141,197,219,0,211,159,193,0,55,121,105,254,183,20,129,0,169,119,170,255,203,178,139,255,135,40,182,255,172,13,202,255,65,178,148,0,8,207,43,0,122,53,127,1,74,161,48,0,227,214,128,254,86,11,243,255,100,86,7,1,245,68,134,255,61,43,21,1,152,84,94,255,190,60,250,254,239,118,232,255,214,136,37,1,113,76,107,255,93,104,100,1,144,206,23,255,110,150,154,1,228,103,185,0,218,49,50,\n254,135,77,139,255,185,1,78,0,0,161,148,255,97,29,233,255,207,148,149,255,160,168,0,0,91,128,171,255,6,28,19,254,11,111,247,0,39,187,150,255,138,232,149,0,117,62,68,255,63,216,188,255,235,234,32,254,29,57,160,255,25,12,241,1,169,60,191,0,32,131,141,255,237,159,123,255,94,197,94,254,116,254,3,255,92,179,97,254,121,97,92,255,170,112,14,0,21,149,248,0,248,227,3,0,80,96,109,0,75,192,74,1,12,90,226,255,161,106,68,1,208,114,127,255,114,42,255,254,74,26,74,255,247,179,150,254,121,140,60,0,147,70,200,255,\n214,40,161,255,161,188,201,255,141,65,135,255,242,115,252,0,62,47,202,0,180,149,255,254,130,55,237,0,165,17,186,255,10,169,194,0,156,109,218,255,112,140,123,255,104,128,223,254,177,142,108,255,121,37,219,255,128,77,18,255,111,108,23,1,91,192,75,0,174,245,22,255,4,236,62,255,43,64,153,1,227,173,254,0,237,122,132,1,127,89,186,255,142,82,128,254,252,84,174,0,90,179,177,1,243,214,87,255,103,60,162,255,208,130,14,255,11,130,139,0,206,129,219,255,94,217,157,255,239,230,230,255,116,115,159,254,164,107,95,\n0,51,218,2,1,216,125,198,255,140,202,128,254,11,95,68,255,55,9,93,254,174,153,6,255,204,172,96,0,69,160,110,0,213,38,49,254,27,80,213,0,118,125,114,0,70,70,67,255,15,142,73,255,131,122,185,255,243,20,50,254,130,237,40,0,210,159,140,1,197,151,65,255,84,153,66,0,195,126,90,0,16,238,236,1,118,187,102,255,3,24,133,255,187,69,230,0,56,197,92,1,213,69,94,255,80,138,229,1,206,7,230,0,222,111,230,1,91,233,119,255,9,89,7,1,2,98,1,0,148,74,133,255,51,246,180,255,228,177,112,1,58,189,108,255,194,203,237,254,\n21,209,195,0,147,10,35,1,86,157,226,0,31,163,139,254,56,7,75,255,62,90,116,0,181,60,169,0,138,162,212,254,81,167,31,0,205,90,112,255,33,112,227,0,83,151,117,1,177,224,73,255,174,144,217,255,230,204,79,255,22,77,232,255,114,78,234,0,224,57,126,254,9,49,141,0,242,147,165,1,104,182,140,255,167,132,12,1,123,68,127,0,225,87,39,1,251,108,8,0,198,193,143,1,121,135,207,255,172,22,70,0,50,68,116,255,101,175,40,255,248,105,233,0,166,203,7,0,110,197,218,0,215,254,26,254,168,226,253,0,31,143,96,0,11,103,41,0,\n183,129,203,254,100,247,74,255,213,126,132,0,210,147,44,0,199,234,27,1,148,47,181,0,155,91,158,1,54,105,175,255,2,78,145,254,102,154,95,0,128,207,127,254,52,124,236,255,130,84,71,0,221,243,211,0,152,170,207,0,222,106,199,0,183,84,94,254,92,200,56,255,138,182,115,1,142,96,146,0,133,136,228,0,97,18,150,0,55,251,66,0,140,102,4,0,202,103,151,0,30,19,248,255,51,184,207,0,202,198,89,0,55,197,225,254,169,95,249,255,66,65,68,255,188,234,126,0,166,223,100,1,112,239,244,0,144,23,194,0,58,39,182,0,244,44,24,\n254,175,68,179,255,152,118,154,1,176,162,130,0,217,114,204,254,173,126,78,255,33,222,30,255,36,2,91,255,2,143,243,0,9,235,215,0,3,171,151,1,24,215,245,255,168,47,164,254,241,146,207,0,69,129,180,0,68,243,113,0,144,53,72,254,251,45,14,0,23,110,168,0,68,68,79,255,110,70,95,254,174,91,144,255,33,206,95,255,137,41,7,255,19,187,153,254,35,255,112,255,9,145,185,254,50,157,37,0,11,112,49,1,102,8,190,255,234,243,169,1,60,85,23,0,74,39,189,0,116,49,239,0,173,213,210,0,46,161,108,255,159,150,37,0,196,120,185,\n255,34,98,6,255,153,195,62,255,97,230,71,255,102,61,76,0,26,212,236,255,164,97,16,0,198,59,146,0,163,23,196,0,56,24,61,0,181,98,193,0,251,147,229,255,98,189,24,255,46,54,206,255,234,82,246,0,183,103,38,1,109,62,204,0,10,240,224,0,146,22,117,255,142,154,120,0,69,212,35,0,208,99,118,1,121,255,3,255,72,6,194,0,117,17,197,255,125,15,23,0,154,79,153,0,214,94,197,255,185,55,147,255,62,254,78,254,127,82,153,0,110,102,63,255,108,82,161,255,105,187,212,1,80,138,39,0,60,255,93,255,72,12,186,0,210,251,31,1,\n190,167,144,255,228,44,19,254,128,67,232,0,214,249,107,254,136,145,86,255,132,46,176,0,189,187,227,255,208,22,140,0,217,211,116,0,50,81,186,254,139,250,31,0,30,64,198,1,135,155,100,0,160,206,23,254,187,162,211,255,16,188,63,0,254,208,49,0,85,84,191,0,241,192,242,255,153,126,145,1,234,162,162,255,230,97,216,1,64,135,126,0,190,148,223,1,52,0,43,255,28,39,189,1,64,136,238,0,175,196,185,0,98,226,213,255,127,159,244,1,226,175,60,0,160,233,142,1,180,243,207,255,69,152,89,1,31,101,21,0,144,25,164,254,139,\n191,209,0,91,25,121,0,32,147,5,0,39,186,123,255,63,115,230,255,93,167,198,255,143,213,220,255,179,156,19,255,25,66,122,0,214,160,217,255,2,45,62,255,106,79,146,254,51,137,99,255,87,100,231,255,175,145,232,255,101,184,1,255,174,9,125,0,82,37,161,1,36,114,141,255,48,222,142,255,245,186,154,0,5,174,221,254,63,114,155,255,135,55,160,1,80,31,135,0,126,250,179,1,236,218,45,0,20,28,145,1,16,147,73,0,249,189,132,1,17,189,192,255,223,142,198,255,72,20,15,255,250,53,237,254,15,11,18,0,27,211,113,254,213,107,\n56,255,174,147,146,255,96,126,48,0,23,193,109,1,37,162,94,0,199,157,249,254,24,128,187,255,205,49,178,254,93,164,42,255,43,119,235,1,88,183,237,255,218,210,1,255,107,254,42,0,230,10,99,255,162,0,226,0,219,237,91,0,129,178,203,0,208,50,95,254,206,208,95,255,247,191,89,254,110,234,79,255,165,61,243,0,20,122,112,255,246,246,185,254,103,4,123,0,233,99,230,1,219,91,252,255,199,222,22,255,179,245,233,255,211,241,234,0,111,250,192,255,85,84,136,0,101,58,50,255,131,173,156,254,119,45,51,255,118,233,16,254,\n242,90,214,0,94,159,219,1,3,3,234,255,98,76,92,254,80,54,230,0,5,228,231,254,53,24,223,255,113,56,118,1,20,132,1,255,171,210,236,0,56,241,158,255,186,115,19,255,8,229,174,0,48,44,0,1,114,114,166,255,6,73,226,255,205,89,244,0,137,227,75,1,248,173,56,0,74,120,246,254,119,3,11,255,81,120,198,255,136,122,98,255,146,241,221,1,109,194,78,255,223,241,70,1,214,200,169,255,97,190,47,255,47,103,174,255,99,92,72,254,118,233,180,255,193,35,233,254,26,229,32,255,222,252,198,0,204,43,71,255,199,84,172,0,134,102,\n190,0,111,238,97,254,230,40,230,0,227,205,64,254,200,12,225,0,166,25,222,0,113,69,51,255,143,159,24,0,167,184,74,0,29,224,116,254,158,208,233,0,193,116,126,255,212,11,133,255,22,58,140,1,204,36,51,255,232,30,43,0,235,70,181,255,64,56,146,254,169,18,84,255,226,1,13,255,200,50,176,255,52,213,245,254,168,209,97,0,191,71,55,0,34,78,156,0,232,144,58,1,185,74,189,0,186,142,149,254,64,69,127,255,161,203,147,255,176,151,191,0,136,231,203,254,163,182,137,0,161,126,251,254,233,32,66,0,68,207,66,0,30,28,37,\n0,93,114,96,1,254,92,247,255,44,171,69,0,202,119,11,255,188,118,50,1,255,83,136,255,71,82,26,0,70,227,2,0,32,235,121,1,181,41,154,0,71,134,229,254,202,255,36,0,41,152,5,0,154,63,73,255,34,182,124,0,121,221,150,255,26,204,213,1,41,172,87,0,90,157,146,255,109,130,20,0,71,107,200,255,243,102,189,0,1,195,145,254,46,88,117,0,8,206,227,0,191,110,253,255,109,128,20,254,134,85,51,255,137,177,112,1,216,34,22,255,131,16,208,255,121,149,170,0,114,19,23,1,166,80,31,255,113,240,122,0,232,179,250,0,68,110,180,\n254,210,170,119,0,223,108,164,255,207,79,233,255,27,229,226,254,209,98,81,255,79,68,7,0,131,185,100,0,170,29,162,255,17,162,107,255,57,21,11,1,100,200,181,255,127,65,166,1,165,134,204,0,104,167,168,0,1,164,79,0,146,135,59,1,70,50,128,255,102,119,13,254,227,6,135,0,162,142,179,255,160,100,222,0,27,224,219,1,158,93,195,255,234,141,137,0,16,24,125,255,238,206,47,255,97,17,98,255,116,110,12,255,96,115,77,0,91,227,232,255,248,254,79,255,92,229,6,254,88,198,139,0,206,75,129,0,250,77,206,255,141,244,123,\n1,138,69,220,0,32,151,6,1,131,167,22,255,237,68,167,254,199,189,150,0,163,171,138,255,51,188,6,255,95,29,137,254,148,226,179,0,181,107,208,255,134,31,82,255,151,101,45,255,129,202,225,0,224,72,147,0,48,138,151,255,195,64,206,254,237,218,158,0,106,29,137,254,253,189,233,255,103,15,17,255,194,97,255,0,178,45,169,254,198,225,155,0,39,48,117,255,135,106,115,0,97,38,181,0,150,47,65,255,83,130,229,254,246,38,129,0,92,239,154,254,91,99,127,0,161,111,33,255,238,217,242,255,131,185,195,255,213,191,158,255,\n41,150,218,0,132,169,131,0,89,84,252,1,171,70,128,255,163,248,203,254,1,50,180,255,124,76,85,1,251,111,80,0,99,66,239,255,154,237,182,255,221,126,133,254,74,204,99,255,65,147,119,255,99,56,167,255,79,248,149,255,116,155,228,255,237,43,14,254,69,137,11,255,22,250,241,1,91,122,143,255,205,249,243,0,212,26,60,255,48,182,176,1,48,23,191,255,203,121,152,254,45,74,213,255,62,90,18,254,245,163,230,255,185,106,116,255,83,35,159,0,12,33,2,255,80,34,62,0,16,87,174,255,173,101,85,0,202,36,81,254,160,69,204,\n255,64,225,187,0,58,206,94,0,86,144,47,0,229,86,245,0,63,145,190,1,37,5,39,0,109,251,26,0,137,147,234,0,162,121,145,255,144,116,206,255,197,232,185,255,183,190,140,255,73,12,254,255,139,20,242,255,170,90,239,255,97,66,187,255,245,181,135,254,222,136,52,0,245,5,51,254,203,47,78,0,152,101,216,0,73,23,125,0,254,96,33,1,235,210,73,255,43,209,88,1,7,129,109,0,122,104,228,254,170,242,203,0,242,204,135,255,202,28,233,255,65,6,127,0,159,144,71,0,100,140,95,0,78,150,13,0,251,107,118,1,182,58,125,255,1,38,\n108,255,141,189,209,255,8,155,125,1,113,163,91,255,121,79,190,255,134,239,108,255,76,47,248,0,163,228,239,0,17,111,10,0,88,149,75,255,215,235,239,0,167,159,24,255,47,151,108,255,107,209,188,0,233,231,99,254,28,202,148,255,174,35,138,255,110,24,68,255,2,69,181,0,107,102,82,0,102,237,7,0,92,36,237,255,221,162,83,1,55,202,6,255,135,234,135,255,24,250,222,0,65,94,168,254,245,248,210,255,167,108,201,254,255,161,111,0,205,8,254,0,136,13,116,0,100,176,132,255,43,215,126,255,177,133,130,255,158,79,148,0,\n67,224,37,1,12,206,21,255,62,34,110,1,237,104,175,255,80,132,111,255,142,174,72,0,84,229,180,254,105,179,140,0,64,248,15,255,233,138,16,0,245,67,123,254,218,121,212,255,63,95,218,1,213,133,137,255,143,182,82,255,48,28,11,0,244,114,141,1,209,175,76,255,157,181,150,255,186,229,3,255,164,157,111,1,231,189,139,0,119,202,190,255,218,106,64,255,68,235,63,254,96,26,172,255,187,47,11,1,215,18,251,255,81,84,89,0,68,58,128,0,94,113,5,1,92,129,208,255,97,15,83,254,9,28,188,0,239,9,164,0,60,205,152,0,192,163,\n98,255,184,18,60,0,217,182,139,0,109,59,120,255,4,192,251,0,169,210,240,255,37,172,92,254,148,211,245,255,179,65,52,0,253,13,115,0,185,174,206,1,114,188,149,255,237,90,173,0,43,199,192,255,88,108,113,0,52,35,76,0,66,25,148,255,221,4,7,255,151,241,114,255,190,209,232,0,98,50,199,0,151,150,213,255,18,74,36,1,53,40,7,0,19,135,65,255,26,172,69,0,174,237,85,0,99,95,41,0,3,56,16,0,39,160,177,255,200,106,218,254,185,68,84,255,91,186,61,254,67,143,141,255,13,244,166,255,99,114,198,0,199,110,163,255,193,18,\n186,0,124,239,246,1,110,68,22,0,2,235,46,1,212,60,107,0,105,42,105,1,14,230,152,0,7,5,131,0,141,104,154,255,213,3,6,0,131,228,162,255,179,100,28,1,231,123,85,255,206,14,223,1,253,96,230,0,38,152,149,1,98,137,122,0,214,205,3,255,226,152,179,255,6,133,137,0,158,69,140,255,113,162,154,255,180,243,172,255,27,189,115,255,143,46,220,255,213,134,225,255,126,29,69,0,188,43,137,1,242,70,9,0,90,204,255,255,231,170,147,0,23,56,19,254,56,125,157,255,48,179,218,255,79,182,253,255,38,212,191,1,41,235,124,0,96,\n151,28,0,135,148,190,0,205,249,39,254,52,96,136,255,212,44,136,255,67,209,131,255,252,130,23,255,219,128,20,255,198,129,118,0,108,101,11,0,178,5,146,1,62,7,100,255,181,236,94,254,28,26,164,0,76,22,112,255,120,102,79,0,202,192,229,1,200,176,215,0,41,64,244,255,206,184,78,0,167,45,63,1,160,35,0,255,59,12,142,255,204,9,144,255,219,94,229,1,122,27,112,0,189,105,109,255,64,208,74,255,251,127,55,1,2,226,198,0,44,76,209,0,151,152,77,255,210,23,46,1,201,171,69,255,44,211,231,0,190,37,224,255,245,196,62,255,\n169,181,222,255,34,211,17,0,119,241,197,255,229,35,152,1,21,69,40,255,178,226,161,0,148,179,193,0,219,194,254,1,40,206,51,255,231,92,250,1,67,153,170,0,21,148,241,0,170,69,82,255,121,18,231,255,92,114,3,0,184,62,230,0,225,201,87,255,146,96,162,255,181,242,220,0,173,187,221,1,226,62,170,255,56,126,217,1,117,13,227,255,179,44,239,0,157,141,155,255,144,221,83,0,235,209,208,0,42,17,165,1,251,81,133,0,124,245,201,254,97,211,24,255,83,214,166,0,154,36,9,255,248,47,127,0,90,219,140,255,161,217,38,254,212,\n147,63,255,66,84,148,1,207,3,1,0,230,134,89,1,127,78,122,255,224,155,1,255,82,136,74,0,178,156,208,255,186,25,49,255,222,3,210,1,229,150,190,255,85,162,52,255,41,84,141,255,73,123,84,254,93,17,150,0,119,19,28,1,32,22,215,255,28,23,204,255,142,241,52,255,228,52,125,0,29,76,207,0,215,167,250,254,175,164,230,0,55,207,105,1,109,187,245,255,161,44,220,1,41,101,128,255,167,16,94,0,93,214,107,255,118,72,0,254,80,61,234,255,121,175,125,0,139,169,251,0,97,39,147,254,250,196,49,255,165,179,110,254,223,70,187,\n255,22,142,125,1,154,179,138,255,118,176,42,1,10,174,153,0,156,92,102,0,168,13,161,255,143,16,32,0,250,197,180,255,203,163,44,1,87,32,36,0,161,153,20,255,123,252,15,0,25,227,80,0,60,88,142,0,17,22,201,1,154,205,77,255,39,63,47,0,8,122,141,0,128,23,182,254,204,39,19,255,4,112,29,255,23,36,140,255,210,234,116,254,53,50,63,255,121,171,104,255,160,219,94,0,87,82,14,254,231,42,5,0,165,139,127,254,86,78,38,0,130,60,66,254,203,30,45,255,46,196,122,1,249,53,162,255,136,143,103,254,215,210,114,0,231,7,160,\n254,169,152,42,255,111,45,246,0,142,131,135,255,131,71,204,255,36,226,11,0,0,28,242,255,225,138,213,255,247,46,216,254,245,3,183,0,108,252,74,1,206,26,48,255,205,54,246,255,211,198,36,255,121,35,50,0,52,216,202,255,38,139,129,254,242,73,148,0,67,231,141,255,42,47,204,0,78,116,25,1,4,225,191,255,6,147,228,0,58,88,177,0,122,165,229,255,252,83,201,255,224,167,96,1,177,184,158,255,242,105,179,1,248,198,240,0,133,66,203,1,254,36,47,0,45,24,115,255,119,62,254,0,196,225,186,254,123,141,172,0,26,85,41,255,\n226,111,183,0,213,231,151,0,4,59,7,255,238,138,148,0,66,147,33,255,31,246,141,255,209,141,116,255,104,112,31,0,88,161,172,0,83,215,230,254,47,111,151,0,45,38,52,1,132,45,204,0,138,128,109,254,233,117,134,255,243,190,173,254,241,236,240,0,82,127,236,254,40,223,161,255,110,182,225,255,123,174,239,0,135,242,145,1,51,209,154,0,150,3,115,254,217,164,252,255,55,156,69,1,84,94,255,255,232,73,45,1,20,19,212,255,96,197,59,254,96,251,33,0,38,199,73,1,64,172,247,255,117,116,56,255,228,17,18,0,62,138,103,1,246,\n229,164,255,244,118,201,254,86,32,159,255,109,34,137,1,85,211,186,0,10,193,193,254,122,194,177,0,122,238,102,255,162,218,171,0,108,217,161,1,158,170,34,0,176,47,155,1,181,228,11,255,8,156,0,0,16,75,93,0,206,98,255,1,58,154,35,0,12,243,184,254,67,117,66,255,230,229,123,0,201,42,110,0,134,228,178,254,186,108,118,255,58,19,154,255,82,169,62,255],\"i8\",4,e.h+20480);K([114,143,115,1,239,196,50,255,173,48,193,255,147,2,84,255,150,134,147,254,95,232,73,0,109,227,52,254,191,137,10,0,40,204,30,254,76,52,97,\n255,164,235,126,0,254,124,188,0,74,182,21,1,121,29,35,255,241,30,7,254,85,218,214,255,7,84,150,254,81,27,117,255,160,159,152,254,66,24,221,255,227,10,60,1,141,135,102,0,208,189,150,1,117,179,92,0,132,22,136,255,120,199,28,0,21,129,79,254,182,9,65,0,218,163,169,0,246,147,198,255,107,38,144,1,78,175,205,255,214,5,250,254,47,88,29,255,164,47,204,255,43,55,6,255,131,134,207,254,116,100,214,0,96,140,75,1,106,220,144,0,195,32,28,1,172,81,5,255,199,179,52,255,37,84,203,0,170,112,174,0,11,4,91,0,69,244,27,\n1,117,131,92,0,33,152,175,255,140,153,107,255,251,135,43,254,87,138,4,255,198,234,147,254,121,152,84,255,205,101,155,1,157,9,25,0,72,106,17,254,108,153,0,255,189,229,186,0,193,8,176,255,174,149,209,0,238,130,29,0,233,214,126,1,61,226,102,0,57,163,4,1,198,111,51,255,45,79,78,1,115,210,10,255,218,9,25,255,158,139,198,255,211,82,187,254,80,133,83,0,157,129,230,1,243,133,134,255,40,136,16,0,77,107,79,255,183,85,92,1,177,204,202,0,163,71,147,255,152,69,190,0,172,51,188,1,250,210,172,255,211,242,113,1,\n89,89,26,255,64,66,111,254,116,152,42,0,161,39,27,255,54,80,254,0,106,209,115,1,103,124,97,0,221,230,98,255,31,231,6,0,178,192,120,254,15,217,203,255,124,158,79,0,112,145,247,0,92,250,48,1,163,181,193,255,37,47,142,254,144,189,165,255,46,146,240,0,6,75,128,0,41,157,200,254,87,121,213,0,1,113,236,0,5,45,250,0,144,12,82,0,31,108,231,0,225,239,119,255,167,7,189,255,187,228,132,255,110,189,34,0,94,44,204,1,162,52,197,0,78,188,241,254,57,20,141,0,244,146,47,1,206,100,51,0,125,107,148,254,27,195,77,0,152,\n253,90,1,7,143,144,255,51,37,31,0,34,119,38,255,7,197,118,0,153,188,211,0,151,20,116,254,245,65,52,255,180,253,110,1,47,177,209,0,161,99,17,255,118,222,202,0,125,179,252,1,123,54,126,255,145,57,191,0,55,186,121,0,10,243,138,0,205,211,229,255,125,156,241,254,148,156,185,255,227,19,188,255,124,41,32,255,31,34,206,254,17,57,83,0,204,22,37,255,42,96,98,0,119,102,184,1,3,190,28,0,110,82,218,255,200,204,192,255,201,145,118,0,117,204,146,0,132,32,98,1,192,194,121,0,106,161,248,1,237,88,124,0,23,212,26,0,\n205,171,90,255,248,48,216,1,141,37,230,255,124,203,0,254,158,168,30,255,214,248,21,0,112,187,7,255,75,133,239,255,74,227,243,255,250,147,70,0,214,120,162,0,167,9,179,255,22,158,18,0,218,77,209,1,97,109,81,255,244,33,179,255,57,52,57,255,65,172,210,255,249,71,209,255,142,169,238,0,158,189,153,255,174,254,103,254,98,33,14,0,141,76,230,255,113,139,52,255,15,58,212,0,168,215,201,255,248,204,215,1,223,68,160,255,57,154,183,254,47,231,121,0,106,166,137,0,81,136,138,0,165,43,51,0,231,139,61,0,57,95,59,254,\n118,98,25,255,151,63,236,1,94,190,250,255,169,185,114,1,5,250,58,255,75,105,97,1,215,223,134,0,113,99,163,1,128,62,112,0,99,106,147,0,163,195,10,0,33,205,182,0,214,14,174,255,129,38,231,255,53,182,223,0,98,42,159,255,247,13,40,0,188,210,177,1,6,21,0,255,255,61,148,254,137,45,129,255,89,26,116,254,126,38,114,0,251,50,242,254,121,134,128,255,204,249,167,254,165,235,215,0,202,177,243,0,133,141,62,0,240,130,190,1,110,175,255,0,0,20,146,1,37,210,121,255,7,39,130,0,142,250,84,255,141,200,207,0,9,95,104,\n255,11,244,174,0,134,232,126,0,167,1,123,254,16,193,149,255,232,233,239,1,213,70,112,255,252,116,160,254,242,222,220,255,205,85,227,0,7,185,58,0,118,247,63,1,116,77,177,255,62,245,200,254,63,18,37,255,107,53,232,254,50,221,211,0,162,219,7,254,2,94,43,0,182,62,182,254,160,78,200,255,135,140,170,0,235,184,228,0,175,53,138,254,80,58,77,255,152,201,2,1,63,196,34,0,5,30,184,0,171,176,154,0,121,59,206,0,38,99,39,0,172,80,77,254,0,134,151,0,186,33,241,254,94,253,223,255,44,114,252,0,108,126,57,255,201,40,\n13,255,39,229,27,255,39,239,23,1,151,121,51,255,153,150,248,0,10,234,174,255,118,246,4,254,200,245,38,0,69,161,242,1,16,178,150,0,113,56,130,0,171,31,105,0,26,88,108,255,49,42,106,0,251,169,66,0,69,93,149,0,20,57,254,0,164,25,111,0,90,188,90,255,204,4,197,0,40,213,50,1,212,96,132,255,88,138,180,254,228,146,124,255,184,246,247,0,65,117,86,255,253,102,210,254,254,121,36,0,137,115,3,255,60,24,216,0,134,18,29,0,59,226,97,0,176,142,71,0,7,209,161,0,189,84,51,254,155,250,72,0,213,84,235,255,45,222,224,\n0,238,148,143,255,170,42,53,255,78,167,117,0,186,0,40,255,125,177,103,255,69,225,66,0,227,7,88,1,75,172,6,0,169,45,227,1,16,36,70,255,50,2,9,255,139,193,22,0,143,183,231,254,218,69,50,0,236,56,161,1,213,131,42,0,138,145,44,254,136,229,40,255,49,63,35,255,61,145,245,255,101,192,2,254,232,167,113,0,152,104,38,1,121,185,218,0,121,139,211,254,119,240,35,0,65,189,217,254,187,179,162,255,160,187,230,0,62,248,14,255,60,78,97,0,255,247,163,255,225,59,91,255,107,71,58,255,241,47,33,1,50,117,236,0,219,177,\n63,254,244,90,179,0,35,194,215,255,189,67,50,255,23,135,129,0,104,189,37,255,185,57,194,0,35,62,231,255,220,248,108,0,12,231,178,0,143,80,91,1,131,93,101,255,144,39,2,1,255,250,178,0,5,17,236,254,139,32,46,0,204,188,38,254,245,115,52,255,191,113,73,254,191,108,69,255,22,69,245,1,23,203,178,0,170,99,170,0,65,248,111,0,37,108,153,255,64,37,69,0,0,88,62,254,89,148,144,255,191,68,224,1,241,39,53,0,41,203,237,255,145,126,194,255,221,42,253,255,25,99,151,0,97,253,223,1,74,115,49,255,6,175,72,255,59,176,\n203,0,124,183,249,1,228,228,99,0,129,12,207,254,168,192,195,255,204,176,16,254,152,234,171,0,77,37,85,255,33,120,135,255,142,194,227,1,31,214,58,0,213,187,125,255,232,46,60,255,190,116,42,254,151,178,19,255,51,62,237,254,204,236,193,0,194,232,60,0,172,34,157,255,189,16,184,254,103,3,95,255,141,233,36,254,41,25,11,255,21,195,166,0,118,245,45,0,67,213,149,255,159,12,18,255,187,164,227,1,160,25,5,0,12,78,195,1,43,197,225,0,48,142,41,254,196,155,60,255,223,199,18,1,145,136,156,0,252,117,169,254,145,226,\n238,0,239,23,107,0,109,181,188,255,230,112,49,254,73,170,237,255,231,183,227,255,80,220,20,0,194,107,127,1,127,205,101,0,46,52,197,1,210,171,36,255,88,3,90,255,56,151,141,0,96,187,255,255,42,78,200,0,254,70,70,1,244,125,168,0,204,68,138,1,124,215,70,0,102,66,200,254,17,52,228,0,117,220,143,254,203,248,123,0,56,18,174,255,186,151,164,255,51,232,208,1,160,228,43,255,249,29,25,1,68,190,63,0,244,126,0,0,164,2,0,0,157,129,0,0,11,0,0,0,173,129,0,0,181,129,0,0,199,129,0,0,223,129,0,0,243,129,0,0,6,130,0,\n0,22,130,0,0,41,130,0,0,56,130,0,0,72,130,0,0,95,130,0,0,112,130,0,0,128,130,0,0,150,130,0,0,176,130,0,0,164,2,0,0,204,130,0,0,6,0,0,0,152,47,138,66,145,68,55,113,207,251,192,181,165,219,181,233,91,194,86,57,241,17,241,89,164,130,63,146,213,94,28,171,152,170,7,216,1,91,131,18,190,133,49,36,195,125,12,85,116,93,190,114,254,177,222,128,167,6,220,155,116,241,155,193,193,105,155,228,134,71,190,239,198,157,193,15,204,161,12,36,111,44,233,45,170,132,116,74,220,169,176,92,218,136,249,118,82,81,62,152,109,\n198,49,168,200,39,3,176,199,127,89,191,243,11,224,198,71,145,167,213,81,99,202,6,103,41,41,20,133,10,183,39,56,33,27,46,252,109,44,77,19,13,56,83,84,115,10,101,187,10,106,118,46,201,194,129,133,44,114,146,161,232,191,162,75,102,26,168,112,139,75,194,163,81,108,199,25,232,146,209,36,6,153,214,133,53,14,244,112,160,106,16,22,193,164,25,8,108,55,30,76,119,72,39,181,188,176,52,179,12,28,57,74,170,216,78,79,202,156,91,243,111,46,104,238,130,143,116,111,99,165,120,20,120,200,132,8,2,199,140,250,255,190,\n144,235,108,80,164,247,163,249,190,242,120,113,198,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,8,0,0,0,16,0,0,0,32,0,0,0,64,0,0,0,128,0,0,0,27,0,0,0,54,0,0,0,108,0,0,0,216,0,0,0,171,0,0,0,77,0,0,0,154,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,\n255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,62,255,255,255,63,52,53,54,55,56,57,58,59,60,61,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,255,255,255,255,255,255,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,255,255,255,255,255,79,76,77,95,82,79,79,84,0,79,76,77,95,82,65,84,67,72,69,84,0,79,76,77,95,75,69,89,83,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,34,99,117,\n114,118,101,50,53,53,49,57,34,58,0,34,101,100,50,53,53,49,57,34,58,0,77,69,71,79,76,77,95,75,69,89,83,0,0,1,2,3,83,85,67,67,69,83,83,0,78,79,84,95,69,78,79,85,71,72,95,82,65,78,68,79,77,0,79,85,84,80,85,84,95,66,85,70,70,69,82,95,84,79,79,95,83,77,65,76,76,0,66,65,68,95,77,69,83,83,65,71,69,95,86,69,82,83,73,79,78,0,66,65,68,95,77,69,83,83,65,71,69,95,70,79,82,77,65,84,0,66,65,68,95,77,69,83,83,65,71,69,95,77,65,67,0,66,65,68,95,77,69,83,83,65,71,69,95,75,69,89,95,73,68,0,73,78,86,65,76,73,68,95,\n66,65,83,69,54,52,0,66,65,68,95,65,67,67,79,85,78,84,95,75,69,89,0,85,78,75,78,79,87,78,95,80,73,67,75,76,69,95,86,69,82,83,73,79,78,0,67,79,82,82,85,80,84,69,68,95,80,73,67,75,76,69,0,66,65,68,95,83,69,83,83,73,79,78,95,75,69,89,0,85,78,75,78,79,87,78,95,77,69,83,83,65,71,69,95,73,78,68,69,88,0,66,65,68,95,76,69,71,65,67,89,95,65,67,67,79,85,78,84,95,80,73,67,75,76,69,0,66,65,68,95,83,73,71,78,65,84,85,82,69,0,85,78,75,78,79,87,78,95,69,82,82,79,82,0,80,105,99,107,108,101,0,99,124,119,123,242,107,\n111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,\n34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22,0,0,0,0,0,0,2,3,9,11,13,14,4,6,18,22,26,28,6,5,27,29,23,18,8,12,36,44,52,56,10,15,45,39,57,54,12,10,54,58,46,36,14,\n9,63,49,35,42,16,24,72,88,104,112,18,27,65,83,101,126,20,30,90,78,114,108,22,29,83,69,127,98,24,20,108,116,92,72,26,23,101,127,81,70,28,18,126,98,70,84,30,17,119,105,75,90,32,48,144,176,208,224,34,51,153,187,221,238,36,54,130,166,202,252,38,53,139,173,199,242,40,60,180,156,228,216,42,63,189,151,233,214,44,58,166,138,254,196,46,57,175,129,243,202,48,40,216,232,184,144,50,43,209,227,181,158,52,46,202,254,162,140,54,45,195,245,175,130,56,36,252,196,140,168,58,39,245,207,129,166,60,34,238,210,150,180,\n62,33,231,217,155,186,64,96,59,123,187,219,66,99,50,112,182,213,68,102,41,109,161,199,70,101,32,102,172,201,72,108,31,87,143,227,74,111,22,92,130,237,76,106,13,65,149,255,78,105,4,74,152,241,80,120,115,35,211,171,82,123,122,40,222,165,84,126,97,53,201,183,86,125,104,62,196,185,88,116,87,15,231,147,90,119,94,4,234,157,92,114,69,25,253,143,94,113,76,18,240,129,96,80,171,203,107,59,98,83,162,192,102,53,100,86,185,221,113,39,102,85,176,214,124,41,104,92,143,231,95,3,106,95,134,236,82,13,108,90,157,241,\n69,31,110,89,148,250,72,17,112,72,227,147,3,75,114,75,234,152,14,69,116,78,241,133,25,87,118,77,248,142,20,89,120,68,199,191,55,115,122,71,206,180,58,125,124,66,213,169,45,111,126,65,220,162,32,97,128,192,118,246,109,173,130,195,127,253,96,163,132,198,100,224,119,177,134,197,109,235,122,191,136,204,82,218,89,149,138,207,91,209,84,155,140,202,64,204,67,137,142,201,73,199,78,135,144,216,62,174,5,221,146,219,55,165,8,211,148,222,44,184,31,193,150,221,37,179,18,207,152,212,26,130,49,229,154,215,19,137,\n60,235,156,210,8,148,43,249,158,209,1,159,38,247,160,240,230,70,189,77,162,243,239,77,176,67,164,246,244,80,167,81,166,245,253,91,170,95,168,252,194,106,137,117,170,255,203,97,132,123,172,250,208,124,147,105,174,249,217,119,158,103,176,232,174,30,213,61,178,235,167,21,216,51,180,238,188,8,207,33,182,237,181,3,194,47,184,228,138,50,225,5,186,231,131,57,236,11,188,226,152,36,251,25,190,225,145,47,246,23,192,160,77,141,214,118,194,163,68,134,219,120,196,166,95,155,204,106,198,165,86,144,193,100,200,\n172,105,161,226,78,202,175,96,170,239,64,204,170,123,183,248,82,206,169,114,188,245,92,208,184,5,213,190,6,210,187,12,222,179,8,212,190,23,195,164,26,214,189,30,200,169,20,216,180,33,249,138,62,218,183,40,242,135,48,220,178,51,239,144,34,222,177,58,228,157,44,224,144,221,61,6,150,226,147,212,54,11,152,228,150,207,43,28,138,230,149,198,32,17,132,232,156,249,17,50,174,234,159,240,26,63,160,236,154,235,7,40,178,238,153,226,12,37,188,240,136,149,101,110,230,242,139,156,110,99,232,244,142,135,115,116,\n250,246,141,142,120,121,244,248,132,177,73,90,222,250,135,184,66,87,208,252,130,163,95,64,194,254,129,170,84,77,204,27,155,236,247,218,65,25,152,229,252,215,79,31,157,254,225,192,93,29,158,247,234,205,83,19,151,200,219,238,121,17,148,193,208,227,119,23,145,218,205,244,101,21,146,211,198,249,107,11,131,164,175,178,49,9,128,173,164,191,63,15,133,182,185,168,45,13,134,191,178,165,35,3,143,128,131,134,9,1,140,137,136,139,7,7,137,146,149,156,21,5,138,155,158,145,27,59,171,124,71,10,161,57,168,117,76,7,\n175,63,173,110,81,16,189,61,174,103,90,29,179,51,167,88,107,62,153,49,164,81,96,51,151,55,161,74,125,36,133,53,162,67,118,41,139,43,179,52,31,98,209,41,176,61,20,111,223,47,181,38,9,120,205,45,182,47,2,117,195,35,191,16,51,86,233,33,188,25,56,91,231,39,185,2,37,76,245,37,186,11,46,65,251,91,251,215,140,97,154,89,248,222,135,108,148,95,253,197,154,123,134,93,254,204,145,118,136,83,247,243,160,85,162,81,244,250,171,88,172,87,241,225,182,79,190,85,242,232,189,66,176,75,227,159,212,9,234,73,224,150,223,\n4,228,79,229,141,194,19,246,77,230,132,201,30,248,67,239,187,248,61,210,65,236,178,243,48,220,71,233,169,238,39,206,69,234,160,229,42,192,123,203,71,60,177,122,121,200,78,55,188,116,127,205,85,42,171,102,125,206,92,33,166,104,115,199,99,16,133,66,113,196,106,27,136,76,119,193,113,6,159,94,117,194,120,13,146,80,107,211,15,100,217,10,105,208,6,111,212,4,111,213,29,114,195,22,109,214,20,121,206,24,99,223,43,72,237,50,97,220,34,67,224,60,103,217,57,94,247,46,101,218,48,85,250,32,155,91,154,1,183,236,\n153,88,147,10,186,226,159,93,136,23,173,240,157,94,129,28,160,254,147,87,190,45,131,212,145,84,183,38,142,218,151,81,172,59,153,200,149,82,165,48,148,198,139,67,210,89,223,156,137,64,219,82,210,146,143,69,192,79,197,128,141,70,201,68,200,142,131,79,246,117,235,164,129,76,255,126,230,170,135,73,228,99,241,184,133,74,237,104,252,182,187,107,10,177,103,12,185,104,3,186,106,2,191,109,24,167,125,16,189,110,17,172,112,30,179,103,46,157,83,52,177,100,39,150,94,58,183,97,60,139,73,40,181,98,53,128,68,38,\n171,115,66,233,15,124,169,112,75,226,2,114,175,117,80,255,21,96,173,118,89,244,24,110,163,127,102,197,59,68,161,124,111,206,54,74,167,121,116,211,33,88,165,122,125,216,44,86,219,59,161,122,12,55,217,56,168,113,1,57,223,61,179,108,22,43,221,62,186,103,27,37,211,55,133,86,56,15,209,52,140,93,53,1,215,49,151,64,34,19,213,50,158,75,47,29,203,35,233,34,100,71,201,32,224,41,105,73,207,37,251,52,126,91,205,38,242,63,115,85,195,47,205,14,80,127,193,44,196,5,93,113,199,41,223,24,74,99,197,42,214,19,71,109,\n251,11,49,202,220,215,249,8,56,193,209,217,255,13,35,220,198,203,253,14,42,215,203,197,243,7,21,230,232,239,241,4,28,237,229,225,247,1,7,240,242,243,245,2,14,251,255,253,235,19,121,146,180,167,233,16,112,153,185,169,239,21,107,132,174,187,237,22,98,143,163,181,227,31,93,190,128,159,225,28,84,181,141,145,231,25,79,168,154,131,229,26,70,163,151,141,82,9,106,213,48,54,165,56,191,64,163,158,129,243,215,251,124,227,57,130,155,47,255,135,52,142,67,68,196,222,233,203,84,123,148,50,166,194,35,61,238,76,149,\n11,66,250,195,78,8,46,161,102,40,217,36,178,118,91,162,73,109,139,209,37,114,248,246,100,134,104,152,22,212,164,92,204,93,101,182,146,108,112,72,80,253,237,185,218,94,21,70,87,167,141,157,132,144,216,171,0,140,188,211,10,247,228,88,5,184,179,69,6,208,44,30,143,202,63,15,2,193,175,189,3,1,19,138,107,58,145,17,65,79,103,220,234,151,242,207,206,240,180,230,115,150,172,116,34,231,173,53,133,226,249,55,232,28,117,223,110,71,241,26,113,29,41,197,137,111,183,98,14,170,24,190,27,252,86,62,75,198,210,121,\n32,154,219,192,254,120,205,90,244,31,221,168,51,136,7,199,49,177,18,16,89,39,128,236,95,96,81,127,169,25,181,74,13,45,229,122,159,147,201,156,239,160,224,59,77,174,42,245,176,200,235,187,60,131,83,153,97,23,43,4,126,186,119,214,38,225,105,20,99,85,33,12,125],\"i8\",4,e.h+30720);var kb=J,J=J+16;a._i64Subtract=lb;a._i64Add=mb;a._bitshift64Ashr=nb;a._memset=ob;a._bitshift64Lshr=pb;a._bitshift64Shl=qb;a._memcpy=rb;var ab=H=e.q(J),Xa=!0,za=ab+bb,E=e.q(za),sb=K([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,\n0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",3);a.t={Math:Math,Int8Array:Int8Array,\nInt16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:Infinity};a.u={abort:Q,assert:z,invoke_ii:function(g,b){try{return a.dynCall_ii(g,b)}catch(c){if(\"number\"!==typeof c&&\"longjmp\"!==c)throw c;d.setThrew(1,0)}},invoke_iiiiiiiiii:function(g,b,c,f,O,l,h,e,k,m){try{return a.dynCall_iiiiiiiiii(g,b,c,f,O,l,h,e,k,m)}catch(p){if(\"number\"!==typeof p&&\"longjmp\"!==p)throw p;d.setThrew(1,\n0)}},invoke_iii:function(g,b,c){try{return a.dynCall_iii(g,b,c)}catch(f){if(\"number\"!==typeof f&&\"longjmp\"!==f)throw f;d.setThrew(1,0)}},_pthread_self:function(){return 0},_abort:function(){a.abort()},___setErrNo:Na,_llvm_stacksave:wa,_sbrk:ja,_time:function(a){var b=Date.now()/1E3|0;a&&(D[a>>2]=b);return b},_emscripten_memcpy_big:function(a,b,c){B.set(B.subarray(b,b+c),a);return a},_llvm_stackrestore:function(a){var b=wa,c=b.b[a];b.b.splice(a,1);e.d(c)},_sysconf:function(a){switch(a){case 30:return 4096;\ncase 85:return M/4096;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 79:return 0;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;\ncase 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1E3;case 89:return 700;case 71:return 256;\ncase 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return\"object\"===typeof navigator?navigator.hardwareConcurrency||1:1}Na(22);return-1},STACKTOP:H,STACK_MAX:za,tempDoublePtr:kb,ABORT:ka,cttz_i8:sb};// EMSCRIPTEN_START_ASM\nvar d=(function(global,env,buffer) {\n\"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=0;var o=0;var p=0;var q=0;var r=global.NaN,s=global.Infinity;var t=0,u=0,v=0,w=0,x=0.0,y=0,z=0,A=0,B=0.0;var C=0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=global.Math.floor;var N=global.Math.abs;var O=global.Math.sqrt;var P=global.Math.pow;var Q=global.Math.cos;var R=global.Math.sin;var S=global.Math.tan;var T=global.Math.acos;var U=global.Math.asin;var V=global.Math.atan;var W=global.Math.atan2;var X=global.Math.exp;var Y=global.Math.log;var Z=global.Math.ceil;var _=global.Math.imul;var $=global.Math.min;var aa=global.Math.clz32;var ba=env.abort;var ca=env.assert;var da=env.invoke_ii;var ea=env.invoke_iiiiiiiiii;var fa=env.invoke_iii;var ga=env._pthread_self;var ha=env._abort;var ia=env.___setErrNo;var ja=env._llvm_stacksave;var ka=env._sbrk;var la=env._time;var ma=env._emscripten_memcpy_big;var na=env._llvm_stackrestore;var oa=env._sysconf;var pa=0.0;\n// EMSCRIPTEN_START_FUNCS\nfunction ta(a){a=a|0;var b=0;b=i;i=i+a|0;i=i+15&-16;return b|0}function ua(){return i|0}function va(a){a=a|0;i=a}function wa(a,b){a=a|0;b=b|0;i=a;j=b}function xa(a,b){a=a|0;b=b|0;if(!n){n=a;o=b}}function ya(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0]}function za(b){b=b|0;a[k>>0]=a[b>>0];a[k+1>>0]=a[b+1>>0];a[k+2>>0]=a[b+2>>0];a[k+3>>0]=a[b+3>>0];a[k+4>>0]=a[b+4>>0];a[k+5>>0]=a[b+5>>0];a[k+6>>0]=a[b+6>>0];a[k+7>>0]=a[b+7>>0]}function Aa(a){a=a|0;C=a}function Ba(){return C|0}function Ca(a){a=a|0;a=a+2|0;return (((a>>>0)/3|0)<<2|((a>>>0)%3|0))+-2|0}function Da(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=(c>>>0)%3|0;f=b+(c-h)|0;if((h|0)==(c|0)){h=e;f=b}else{g=b;do{h=d[g>>0]|0;i=h<<8|(d[g+1>>0]|0);j=d[g+2>>0]|0;g=g+3|0;a[e+3>>0]=a[32900+(j&63)>>0]|0;a[e+2>>0]=a[32900+((i<<8|j)>>>6&63)>>0]|0;a[e+1>>0]=a[32900+(i>>>4&63)>>0]|0;a[e>>0]=a[32900+(h>>>2)>>0]|0;e=e+4|0}while((g|0)!=(f|0));h=e}e=b+c|0;if((e|0)==(f|0)){j=h;return j|0}g=d[f>>0]|0;if((e-f|0)==2){e=d[f+1>>0]|0;a[h+2>>0]=a[32900+(e<<2&60)>>0]|0;f=h+3|0;e=(e|g<<8)>>>4}else{f=h+2|0;e=g<<4}a[h+1>>0]=a[32900+(e&63)>>0]|0;a[h>>0]=a[32900+(e>>>6)>>0]|0;j=f;return j|0}function Ea(a){a=a|0;if((a&3|0)==1){a=-1;return a|0}a=a+2|0;a=(a&3)+-2+((a>>>2)*3|0)|0;return a|0}function Fa(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=c&-4;g=b+j|0;if(!j)h=b;else{j=(c+-4|0)>>>2;h=(j*3|0)+3|0;j=(j<<2)+4|0;f=e;i=b;while(1){k=d[32964+((d[i+1>>0]|0)&127)>>0]|0|(d[32964+((d[i>>0]|0)&127)>>0]|0)<<6;l=k<<6|(d[32964+((d[i+2>>0]|0)&127)>>0]|0);a[f+2>>0]=l<<6|(d[32964+((d[i+3>>0]|0)&127)>>0]|0);i=i+4|0;a[f+1>>0]=l>>>2;a[f>>0]=k>>>4;if((i|0)==(g|0))break;else f=f+3|0}e=e+h|0;h=b+j|0}f=b+c|0;if((f|0)==(h|0))return f|0;g=d[32964+((d[h+1>>0]|0)&127)>>0]|0|(d[32964+((d[h>>0]|0)&127)>>0]|0)<<6;if((f-h|0)==3)a[e+1>>0]=(d[32964+((d[h+2>>0]|0)&127)>>0]|0|g<<6)>>>2;a[e>>0]=g>>>4;return f|0}function Ga(a){a=a|0;a=a+2|0;return (((a>>>0)/3|0)<<2|((a>>>0)%3|0))+-2|0}function Ha(a,b,c){a=a|0;b=b|0;c=c|0;return (Da(a,b,c)|0)-c|0}function Ia(a){a=a|0;if((a&3|0)==1){a=-1;return a|0}a=a+2|0;a=(a&3)+-2+((a>>>2)*3|0)|0;return a|0}function Ja(a,b,c){a=a|0;b=b|0;c=c|0;Fa(a,b,c)|0;if((b&3|0)==1){c=-1;return c|0}c=b+2|0;c=(c&3)+-2+((c>>>2)*3|0)|0;return c|0}function Ka(b,c){b=b|0;c=c|0;a[b+3>>0]=c;a[b+2>>0]=c>>>8;a[b+1>>0]=c>>>16;a[b>>0]=c>>>24;return b+4|0}function La(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;c[e>>2]=0;f=a+4|0;if(f>>>0>b>>>0){e=b;return e|0}c[e>>2]=0;b=(d[a>>0]|0)<<8;c[e>>2]=b;b=(d[a+1>>0]|0|b)<<8;c[e>>2]=b;b=(d[a+2>>0]|0|b)<<8;c[e>>2]=b;c[e>>2]=d[a+3>>0]|0|b;e=f;return e|0}function Ma(b,c){b=b|0;c=c|0;a[b>>0]=c&1;return b+1|0}function Na(b,c,d){b=b|0;c=c|0;d=d|0;if((b|0)==(c|0)){d=b;return d|0}a[d>>0]=(a[b>>0]|0)!=0&1;d=b+1|0;return d|0}function Oa(a,b,c){a=a|0;b=b|0;c=c|0;qf(a|0,b|0,c|0)|0;return a+c|0}function Pa(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+d|0;if(e>>>0>b>>>0){a=b;return a|0}qf(c|0,a|0,d|0)|0;a=e;return a|0}function Qa(a){a=a|0;return 32}function Ra(b,c){b=b|0;c=c|0;var d=0,e=0;e=b;d=e+32|0;do{a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}while((e|0)<(d|0));return b+32|0}function Sa(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=b+32|0;if(e>>>0>c>>>0){e=c;return e|0}c=b;b=d+32|0;do{a[d>>0]=a[c>>0]|0;d=d+1|0;c=c+1|0}while((d|0)<(b|0));return e|0}function Ta(a){a=a|0;return 64}function Ua(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=c;f=d+32|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));d=b+32|0;e=c+32|0;f=d+32|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));return b+64|0}function Va(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=b+32|0;if(e>>>0>c>>>0)e=c;else{h=d;g=h+32|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0))}f=e+32|0;if(f>>>0>c>>>0){h=c;return h|0}h=d+32|0;b=e;g=h+32|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0));h=f;return h|0}function Wa(a){a=a|0;return 32}function Xa(b,c){b=b|0;c=c|0;var d=0,e=0;e=b;d=e+32|0;do{a[e>>0]=a[c>>0]|0;e=e+1|0;c=c+1|0}while((e|0)<(d|0));return b+32|0}function Ya(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=b+32|0;if(e>>>0>c>>>0){e=c;return e|0}c=b;b=d+32|0;do{a[d>>0]=a[c>>0]|0;d=d+1|0;c=c+1|0}while((d|0)<(b|0));return e|0}function Za(a){a=a|0;return 96}function _a(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=c;f=d+32|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));d=b+32|0;e=c+32|0;f=d+64|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));return b+96|0}function $a(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=b+32|0;if(e>>>0>c>>>0)e=c;else{h=d;g=h+32|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0))}f=e+64|0;if(f>>>0>c>>>0){h=c;return h|0}h=d+32|0;b=e;g=h+64|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(g|0));h=f;return h|0}function ab(b,c){b=b|0;c=c|0;a[b+3>>0]=c;a[b+2>>0]=c>>>8;a[b+1>>0]=c>>>16;a[b>>0]=c>>>24;return b+4|0}function bb(a,b,e){a=a|0;b=b|0;e=e|0;var f=0;c[e>>2]=0;f=a+4|0;if(f>>>0>b>>>0){e=b;return e|0}c[e>>2]=0;b=(d[a>>0]|0)<<8;c[e>>2]=b;b=(d[a+1>>0]|0|b)<<8;c[e>>2]=b;b=(d[a+2>>0]|0|b)<<8;c[e>>2]=b;c[e>>2]=d[a+3>>0]|0|b;e=f;return e|0}function cb(b,c){b=b|0;c=c|0;a[b>>0]=(c|0)!=0&1;return b+1|0}function db(b,c,d){b=b|0;c=c|0;d=d|0;if((b|0)==(c|0)){d=b;return d|0}a[d>>0]=(a[b>>0]|0)!=0&1;d=b+1|0;return d|0}function eb(a,b,c){a=a|0;b=b|0;c=c|0;qf(a|0,b|0,c|0)|0;return a+c|0}function fb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=a+d|0;if(e>>>0>b>>>0){a=b;return a|0}qf(c|0,a|0,d|0)|0;a=e;return a|0}function gb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if(b>>>0>127){f=b;e=1;while(1){e=e+1|0;if(f>>>0>16383)f=f>>>7;else break}}else e=1;if(a>>>0>127){f=1;while(1){f=f+1|0;if(a>>>0>16383)a=a>>>7;else break}}else f=1;if(c>>>0>127){g=c;a=1;while(1){a=a+1|0;if(g>>>0>16383)g=g>>>7;else break}}else a=1;return b+4+c+d+e+f+a|0}function hb(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0;a[h>>0]=d;d=h+2|0;a[h+1>>0]=10;if(f>>>0>127){i=f;while(1){j=d+1|0;a[d>>0]=i|128;h=i>>>7;if(i>>>0>16383){d=j;i=h}else{d=j;break}}}else h=f;j=d+1|0;a[d>>0]=h;c[b>>2]=j;f=j+f|0;d=f+1|0;a[f>>0]=16;if(e>>>0>127){i=e;while(1){h=d+1|0;a[d>>0]=i|128;e=i>>>7;if(i>>>0>16383){d=h;i=e}else break}}else h=d;a[h>>0]=e;i=b+4|0;d=h+2|0;a[h+1>>0]=34;if(g>>>0>127)h=d;else{j=g;f=d;j=j&255;b=f+1|0;a[f>>0]=j;c[i>>2]=b;return}while(1){d=h+1|0;a[h>>0]=g|128;e=g>>>7;if(g>>>0>16383){h=d;g=e}else break}f=e&255;b=d+1|0;a[d>>0]=f;c[i>>2]=b;return}function ib(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;k=e+f+(0-g)|0;c[b+8>>2]=e;c[b+12>>2]=f;l=b+1|0;a[l>>0]=0;m=b+16|0;n=b+20|0;o=b+24|0;p=b+28|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;if(f>>>0<g>>>0|(k|0)==(e|0))return;g=e+1|0;a[b>>0]=a[e>>0]|0;if((g|0)==(k|0))return;j=k;i=b+4|0;a:while(1){if((a[g>>0]|0)==10){h=g+1|0;f=h;while(1){if((f|0)==(k|0)){e=k;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){b=e;f=0;do{b=b+-1|0;f=d[b>>0]&127|f<<7}while((b|0)!=(h|0));if(f>>>0>(j-e|0)>>>0){f=44;break}}else f=0;c[m>>2]=e;c[n>>2]=f;f=e+f|0}else f=g;if((f|0)==(k|0)){f=44;break}if((a[f>>0]|0)==16){h=f+1|0;e=h;while(1){if((e|0)==(k|0)){f=k;break}f=e+1|0;if((a[e>>0]|0)>-1)break;else e=f}if((f|0)==(h|0))e=0;else{b=f;e=0;do{b=b+-1|0;e=d[b>>0]&127|e<<7}while((b|0)!=(h|0))}c[i>>2]=e;a[l>>0]=1}if((f|0)==(k|0)){f=44;break}if((a[f>>0]|0)==34){h=f+1|0;f=h;while(1){if((f|0)==(k|0)){e=k;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){b=e;f=0;do{b=b+-1|0;f=d[b>>0]&127|f<<7}while((b|0)!=(h|0));if(f>>>0>(j-e|0)>>>0){f=44;break}}else f=0;c[o>>2]=e;c[p>>2]=f;f=e+f|0}b:do if(!((g|0)!=(f|0)|(f|0)==(k|0))){switch(d[g>>0]&7|0){case 0:{f=g;while(1){if((f|0)==(k|0)){g=k;break}g=f+1|0;if((a[f>>0]|0)>-1)break;else f=g}while(1){if((g|0)==(k|0)){f=44;break a}f=g+1|0;if((a[g>>0]|0)>-1)break b;else g=f}}case 2:break;default:{f=44;break a}}while(1){if((g|0)==(k|0)){f=k;break}f=g+1|0;if((a[g>>0]|0)>-1)break;else g=f}g=f;while(1){if((g|0)==(k|0)){e=k;break}e=g+1|0;if((a[g>>0]|0)>-1)break;else g=e}if((e|0)!=(f|0)){b=e;g=0;do{b=b+-1|0;g=d[b>>0]&127|g<<7}while((b|0)!=(f|0));f=g;if(f>>>0>(j-e|0)>>>0){f=44;break a}else f=e+f|0}}while(0);if((f|0)==(k|0)){f=44;break}else g=f}if((f|0)==44)return}function jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(a>>>0>127){f=a;e=1;while(1){e=e+1|0;if(f>>>0>16383)f=f>>>7;else break}}else e=1;if(b>>>0>127){g=b;f=1;while(1){f=f+1|0;if(g>>>0>16383)g=g>>>7;else break}}else f=1;if(c>>>0>127){h=c;g=1;while(1){g=g+1|0;if(h>>>0>16383)h=h>>>7;else break}}else g=1;if(d>>>0>127){i=d;h=1;while(1){h=h+1|0;if(i>>>0>16383)i=i>>>7;else break}}else h=1;return a+5+b+c+d+e+f+g+h|0}function kb(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;a[i>>0]=d;l=b+8|0;d=i+2|0;a[i+1>>0]=10;if(g>>>0>127){j=g;while(1){k=d+1|0;a[d>>0]=j|128;i=j>>>7;if(j>>>0>16383){d=k;j=i}else{d=k;break}}}else i=g;k=d+1|0;a[d>>0]=i;c[l>>2]=k;g=k+g|0;l=b+4|0;d=g+1|0;a[g>>0]=18;if(f>>>0>127){j=f;while(1){k=d+1|0;a[d>>0]=j|128;i=j>>>7;if(j>>>0>16383){d=k;j=i}else{d=k;break}}}else i=f;g=d+1|0;a[d>>0]=i;c[l>>2]=g;f=g+f|0;d=f+1|0;a[f>>0]=26;if(e>>>0>127){j=e;while(1){k=d+1|0;a[d>>0]=j|128;i=j>>>7;if(j>>>0>16383){d=k;j=i}else{d=k;break}}}else i=e;k=d+1|0;a[d>>0]=i;c[b>>2]=k;e=k+e|0;k=b+12|0;d=e+1|0;a[e>>0]=34;if(h>>>0>127)j=d;else{f=h;e=d;f=f&255;b=e+1|0;a[e>>0]=f;c[k>>2]=b;return}while(1){d=j+1|0;a[j>>0]=h|128;i=h>>>7;if(h>>>0>16383){j=d;h=i}else break}e=i&255;b=d+1|0;a[d>>0]=e;c[k>>2]=b;return}function lb(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;j=e+f|0;k=b+20|0;l=b+24|0;m=b+4|0;n=b+8|0;o=b+12|0;p=b+16|0;q=b+28|0;r=b+32|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[m+24>>2]=0;c[m+28>>2]=0;if(!f)return;a[b>>0]=a[e>>0]|0;if((f|0)==1)return;i=j;b=e+1|0;a:while(1){if((a[b>>0]|0)==10){h=b+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[k>>2]=e;c[l>>2]=f;f=e+f|0}else f=b;if((f|0)==(j|0)){f=54;break}if((a[f>>0]|0)==18){h=f+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[o>>2]=e;c[p>>2]=f;f=e+f|0}if((f|0)==(j|0)){f=54;break}if((a[f>>0]|0)==26){h=f+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[m>>2]=e;c[n>>2]=f;f=e+f|0}if((f|0)==(j|0)){f=54;break}if((a[f>>0]|0)==34){h=f+1|0;f=h;while(1){if((f|0)==(j|0)){e=j;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)!=(h|0)){g=e;f=0;do{g=g+-1|0;f=d[g>>0]&127|f<<7}while((g|0)!=(h|0));if(f>>>0>(i-e|0)>>>0){f=54;break}}else f=0;c[q>>2]=e;c[r>>2]=f;f=e+f|0}b:do if(!((b|0)!=(f|0)|(f|0)==(j|0))){switch(d[b>>0]&7|0){case 0:{f=b;while(1){if((f|0)==(j|0)){b=j;break}b=f+1|0;if((a[f>>0]|0)>-1)break;else f=b}while(1){if((b|0)==(j|0)){f=54;break a}f=b+1|0;if((a[b>>0]|0)>-1)break b;else b=f}}case 2:break;default:{f=54;break a}}while(1){if((b|0)==(j|0)){f=j;break}f=b+1|0;if((a[b>>0]|0)>-1)break;else b=f}b=f;while(1){if((b|0)==(j|0)){e=j;break}e=b+1|0;if((a[b>>0]|0)>-1)break;else b=e}if((e|0)!=(f|0)){g=e;b=0;do{g=g+-1|0;b=d[g>>0]&127|b<<7}while((g|0)!=(f|0));f=b;if(f>>>0>(i-e|0)>>>0){f=54;break a}else f=e+f|0}}while(0);if((f|0)==(j|0)){f=54;break}else b=f}if((f|0)==54)return}function mb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;if(a>>>0>127){e=1;while(1){e=e+1|0;if(a>>>0>16383)a=a>>>7;else break}}else e=1;if(b>>>0>127){f=b;a=1;while(1){a=a+1|0;if(f>>>0>16383)f=f>>>7;else break}}else a=1;return b+3+c+d+e+a|0}function nb(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;a[f>>0]=b;h=f+2|0;a[f+1>>0]=8;if(d>>>0>127)while(1){i=h+1|0;a[h>>0]=d|128;b=d>>>7;if(d>>>0>16383){h=i;d=b}else{h=i;break}}else b=d;a[h>>0]=b;b=h+2|0;a[h+1>>0]=18;if(e>>>0>127){d=e;while(1){i=b+1|0;a[b>>0]=d|128;h=d>>>7;if(d>>>0>16383){b=i;d=h}else{b=i;break}}}else h=e;i=b+1|0;a[b>>0]=h;c[g>>2]=i;return i+e-f|0}function ob(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=g+f|0;l=b+e+(0-k)|0;m=h+4|0;c[m>>2]=0;n=h+12|0;c[n>>2]=0;o=h+16|0;c[o>>2]=0;if(k>>>0>e>>>0|(l|0)==(b|0))return;g=b+1|0;a[h>>0]=a[b>>0]|0;a:do if((g|0)==(l|0))f=0;else{k=l;f=0;do{if((a[g>>0]|0)==8){i=g+1|0;f=i;while(1){if((f|0)==(l|0)){e=l;break}e=f+1|0;if((a[f>>0]|0)>-1)break;else f=e}if((e|0)==(i|0))f=0;else{b=e;f=0;do{b=b+-1|0;f=d[b>>0]&127|f<<7}while((b|0)!=(i|0))}c[m>>2]=f;f=1}else e=g;if((e|0)==(l|0))break a;if((a[e>>0]|0)==18){j=e+1|0;e=j;while(1){if((e|0)==(l|0)){b=l;break}b=e+1|0;if((a[e>>0]|0)>-1)break;else e=b}if((b|0)!=(j|0)){i=b;e=0;do{i=i+-1|0;e=d[i>>0]&127|e<<7}while((i|0)!=(j|0));if(e>>>0>(k-b|0)>>>0)break a}else e=0;c[n>>2]=b;c[o>>2]=e;e=b+e|0}b:do if(!((g|0)!=(e|0)|(e|0)==(l|0))){switch(d[g>>0]&7|0){case 0:{while(1){if((g|0)==(l|0)){e=l;break}e=g+1|0;if((a[g>>0]|0)>-1)break;else g=e}while(1){if((e|0)==(l|0))break a;g=e+1|0;if((a[e>>0]|0)>-1)break b;else e=g}}case 2:break;default:break a}while(1){if((g|0)==(l|0)){g=l;break}e=g+1|0;if((a[g>>0]|0)>-1){g=e;break}else g=e}e=g;while(1){if((e|0)==(l|0)){b=l;break}b=e+1|0;if((a[e>>0]|0)>-1)break;else e=b}if((b|0)!=(g|0)){i=b;e=0;do{i=i+-1|0;e=d[i>>0]&127|e<<7}while((i|0)!=(g|0));g=e;if(g>>>0>(k-b|0)>>>0)break a;else g=b+g|0}}else g=e;while(0)}while((g|0)!=(l|0))}while(0);c[h+8>>2]=f&255;return}function pb(b){b=b|0;Wc(b,648,664);c[b+3216>>2]=0;a[b+3220>>0]=0;return}function qb(a){a=a|0;return 64}function rb(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0;n=i;i=i+224|0;k=n+160|0;l=n+96|0;m=n;if(h>>>0<64){c[b+3216>>2]=1;b=-1;i=n;return b|0}else{Fb(g,k);Fb(g+32|0,l);d=d+96|0;a[b+3220>>0]=0;g=b+3221|0;h=d;j=g+32|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));g=b+3253|0;h=k;j=g+32|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));g=b+3285|0;h=f;j=g+32|0;do{a[g>>0]=a[h>>0]|0;g=g+1|0;h=h+1|0}while((g|0)<(j|0));Gb(d,f,m);Gb(k,e,m+32|0);Gb(k,f,m+64|0);Yc(b,m,96,l);Cd(k,64);Cd(l,64);Cd(m,96);b=0;i=n;return b|0}return 0}function sb(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=i;i=i+208|0;o=s+32|0;p=s;q=s+168|0;r=s+72|0;lb(o,f,g);h=(e|0)!=0;g=c[o+4>>2]|0;j=(g|0)!=0;f=h|j;if(g)f=f&(c[o+8>>2]|0)==32;m=c[o+28>>2]|0;l=c[o+12>>2]|0;n=c[o+20>>2]|0;if(!(f&(m|0)!=0&(l|0)!=0&(c[o+16>>2]|0)==32&(n|0)!=0&(c[o+24>>2]|0)==32)){c[b+3216>>2]=4;b=-1;i=s;return b|0}if(h&j?ff(e,g,32)|0:0){c[b+3216>>2]=6;b=-1;i=s;return b|0}k=b+3221|0;e=k;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));j=b+3253|0;e=j;g=l;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));f=b+3285|0;e=f;g=n;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));o=c[o+32>>2]|0;g=c[b+4>>2]|0;ib(p,m,o,qa[c[c[g>>2]>>2]&1](g)|0);g=c[p+16>>2]|0;if((g|0)!=0?(c[p+20>>2]|0)==32:0){e=q;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));g=jd(d,f)|0;if(!g){c[b+3216>>2]=6;g=-1}else{g=g+5|0;Gb(g,k,r);Gb(d+96|0,j,r+32|0);Gb(g,j,r+64|0);Xc(b,r,96,q);Cd(r,96);g=0}}else{c[b+3216>>2]=4;g=-1}b=g;i=s;return b|0}function tb(a){a=a|0;return 32}function ub(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0;j=i;i=i+96|0;h=j;if(e>>>0<32){c[b+3216>>2]=2;h=-1;i=j;return h|0}else{e=h;f=b+3221|0;g=e+32|0;do{a[e>>0]=a[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));e=h+32|0;f=b+3253|0;g=e+32|0;do{a[e>>0]=a[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));e=h+64|0;f=b+3285|0;g=e+32|0;do{a[e>>0]=a[f>>0]|0;e=e+1|0;f=f+1|0}while((e|0)<(g|0));Nb(h,96,d);h=32;i=j;return h|0}return 0}function vb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;l=i;i=i+48|0;k=l;lb(k,d,e);j=(b|0)!=0;f=c[k+4>>2]|0;e=j|(f|0)!=0;h=(f|0)==0;if(!h)e=e&(c[k+8>>2]|0)==32;d=c[k+12>>2]|0;g=c[k+20>>2]|0;if(!(e&(c[k+28>>2]|0)!=0&(d|0)!=0&(c[k+16>>2]|0)==32&(g|0)!=0&(c[k+24>>2]|0)==32)){a=0;i=l;return a|0}if(h)e=1;else e=(ff(f,a+3221|0,32)|0)==0;if(j){if(!e){a=0;i=l;return a|0}if(ff(b,a+3221|0,32)|0){a=0;i=l;return a|0}}else if(!e){a=0;i=l;return a|0}if(ff(d,a+3253|0,32)|0){a=0;i=l;return a|0}a=(ff(g,a+3285|0,32)|0)==0;i=l;return a|0}function wb(a){a=a|0;return d[a+3220>>0]|0|0}function xb(b,c){b=b|0;c=c|0;c=dd(b,c)|0;if(a[b+3220>>0]|0){b=c;return b|0}b=jb(32,32,32,c)|0;return b|0}function yb(a){a=a|0;return ed(a)|0}function zb(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=i;i=i+16|0;n=o;k=dd(b,e)|0;l=b+3220|0;if(!(a[l>>0]|0))k=jb(32,32,32,k)|0;if(k>>>0>j>>>0){c[b+3216>>2]=2;b=-1;i=o;return b|0}m=dd(b,e)|0;if(!(a[l>>0]|0)){kb(n,3,32,32,32,m,h);h=c[n+8>>2]|0;k=b+3285|0;j=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(j|0));h=c[n>>2]|0;k=b+3221|0;j=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(j|0));h=c[n+4>>2]|0;k=b+3253|0;j=h+32|0;do{a[h>>0]=a[k>>0]|0;h=h+1|0;k=k+1|0}while((h|0)<(j|0));h=c[n+12>>2]|0}h=fd(b,d,e,f,g,h,m)|0;if((h|0)!=-1){b=h;i=o;return b|0}g=b+8|0;c[b+3216>>2]=c[g>>2];c[g>>2]=0;b=-1;i=o;return b|0}function Ab(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+48|0;f=g;do if((b|0)!=1){lb(f,d,e);d=c[f+28>>2]|0;if(d|0){e=c[f+32>>2]|0;break}c[a+3216>>2]=4;a=-1;i=g;return a|0}while(0);d=gd(a,d,e)|0;if((d|0)!=-1){a=d;i=g;return a|0}f=a+8|0;c[a+3216>>2]=c[f>>2];c[f>>2]=0;a=-1;i=g;return a|0}function Bb(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;i=i+48|0;j=k;do if((d|0)!=1){lb(j,e,f);e=c[j+28>>2]|0;if(e|0){f=c[j+32>>2]|0;break}c[b+3216>>2]=4;b=-1;i=k;return b|0}while(0);e=hd(b,e,f,g,h)|0;if((e|0)==-1){g=b+8|0;c[b+3216>>2]=c[g>>2];c[g>>2]=0;b=-1;i=k;return b|0}else{a[b+3220>>0]=1;b=e;i=k;return b|0}return 0}function Cb(a){a=a|0;var b=0;b=(Qa(a+3221|0)|0)+5|0;b=b+(Qa(a+3253|0)|0)|0;b=b+(Qa(a+3285|0)|0)|0;return b+(Zc(a)|0)|0}function Db(b,c){b=b|0;c=c|0;b=Ka(b,1)|0;return _c(Ra(Ra(Ra(Ma(b,(a[c+3220>>0]|0)!=0)|0,c+3221|0)|0,c+3253|0)|0,c+3285|0)|0,c)|0}function Eb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=i;i=i+16|0;e=g;f=La(a,b,e)|0;a=c[e>>2]|0;a:do if((a|0)<1){switch(a|0){case -2147483647:break;default:{e=3;break a}}a=1;e=4}else switch(a|0){case 1:{a=0;e=4;break}default:e=3}while(0);if((e|0)==3){c[d+3216>>2]=9;d=b;i=g;return d|0}else if((e|0)==4){d=$c(Sa(Sa(Sa(Na(f,b,d+3220|0)|0,b,d+3221|0)|0,b,d+3253|0)|0,b,d+3285|0)|0,b,d,a)|0;i=g;return d|0}return 0}function Fb(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;e=c+32|0;f=e;d=f+32|0;do{a[f>>0]=a[b>>0]|0;f=f+1|0;b=b+1|0}while((f|0)<(d|0));af(c,e,33122)|0;return}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;af(c,a+32|0,b)|0;return}function Hb(a,b){a=a|0;b=b|0;Xd(b,b+32|0,a);return}function Ib(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ae(d,b,c,a,a+32|0);return}function Jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ($d(d,b,c,a)|0)!=0|0}function Kb(a){a=a|0;return a+16-(a&15)|0}function Lb(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=i;i=i+256|0;E=F;D=F+240|0;Ze(b,E,256);B=D;y=B+16|0;do{a[B>>0]=a[c>>0]|0;B=B+1|0;c=c+1|0}while((B|0)<(y|0));if(f>>>0>15){h=D+1|0;p=D+2|0;q=D+3|0;r=D+4|0;s=D+5|0;t=D+6|0;u=D+7|0;v=D+8|0;w=D+9|0;j=D+10|0;k=D+11|0;l=D+12|0;m=D+13|0;n=D+14|0;o=D+15|0;z=f+-16|0;A=z&-16;C=A+16|0;x=g+C|0;b=f;f=e;while(1){a[D>>0]=a[D>>0]^a[f>>0];a[h>>0]=a[h>>0]^a[f+1>>0];a[p>>0]=a[p>>0]^a[f+2>>0];a[q>>0]=a[q>>0]^a[f+3>>0];a[r>>0]=a[r>>0]^a[f+4>>0];a[s>>0]=a[s>>0]^a[f+5>>0];a[t>>0]=a[t>>0]^a[f+6>>0];a[u>>0]=a[u>>0]^a[f+7>>0];a[v>>0]=a[v>>0]^a[f+8>>0];a[w>>0]=a[w>>0]^a[f+9>>0];a[j>>0]=a[j>>0]^a[f+10>>0];a[k>>0]=a[k>>0]^a[f+11>>0];a[l>>0]=a[l>>0]^a[f+12>>0];a[m>>0]=a[m>>0]^a[f+13>>0];a[n>>0]=a[n>>0]^a[f+14>>0];a[o>>0]=a[o>>0]^a[f+15>>0];Xe(D,g,E,256);B=D;c=g;y=B+16|0;do{a[B>>0]=a[c>>0]|0;B=B+1|0;c=c+1|0}while((B|0)<(y|0));b=b+-16|0;if(b>>>0<=15)break;else{f=f+16|0;g=g+16|0}}g=x;c=z-A|0;e=e+C|0}else c=f;if(c){b=0;do{C=D+b|0;a[C>>0]=a[C>>0]^a[e+b>>0];b=b+1|0}while((b|0)!=(c|0));if(c>>>0<16)e=c;else{Xe(D,g,E,256);Cd(E,240);Cd(D,16);i=F;return}}else e=0;b=16-c|0;do{C=D+e|0;a[C>>0]=(d[C>>0]|0)^b;e=e+1|0}while((e|0)!=16);Xe(D,g,E,256);Cd(E,240);Cd(D,16);i=F;return}function Mb(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=i;i=i+272|0;B=C;z=C+256|0;A=C+240|0;Ze(b,B,256);y=z;x=y+16|0;do{a[y>>0]=a[c>>0]|0;y=y+1|0;c=c+1|0}while((y|0)<(x|0));if(!e){Cd(B,240);Cd(z,16);Cd(A,16);B=e+-1|0;f=f+B|0;f=a[f>>0]|0;f=f&255;B=f>>>0>e>>>0;f=e-f|0;f=B?-1:f;i=C;return f|0}b=z+1|0;n=z+2|0;p=z+3|0;q=z+4|0;r=z+5|0;s=z+6|0;t=z+7|0;u=z+8|0;v=z+9|0;g=z+10|0;h=z+11|0;j=z+12|0;k=z+13|0;l=z+14|0;m=z+15|0;w=0;do{o=d+w|0;y=A;c=o;x=y+16|0;do{a[y>>0]=a[c>>0]|0;y=y+1|0;c=c+1|0}while((y|0)<(x|0));y=f+w|0;$e(o,y,B,256);a[y>>0]=a[y>>0]^a[z>>0];c=y+1|0;a[c>>0]=a[c>>0]^a[b>>0];c=y+2|0;a[c>>0]=a[c>>0]^a[n>>0];c=y+3|0;a[c>>0]=a[c>>0]^a[p>>0];c=y+4|0;a[c>>0]=a[c>>0]^a[q>>0];c=y+5|0;a[c>>0]=a[c>>0]^a[r>>0];c=y+6|0;a[c>>0]=a[c>>0]^a[s>>0];c=y+7|0;a[c>>0]=a[c>>0]^a[t>>0];c=y+8|0;a[c>>0]=a[c>>0]^a[u>>0];c=y+9|0;a[c>>0]=a[c>>0]^a[v>>0];c=y+10|0;a[c>>0]=a[c>>0]^a[g>>0];c=y+11|0;a[c>>0]=a[c>>0]^a[h>>0];c=y+12|0;a[c>>0]=a[c>>0]^a[j>>0];c=y+13|0;a[c>>0]=a[c>>0]^a[k>>0];c=y+14|0;a[c>>0]=a[c>>0]^a[l>>0];y=y+15|0;a[y>>0]=a[y>>0]^a[m>>0];y=z;c=A;x=y+16|0;do{a[y>>0]=a[c>>0]|0;y=y+1|0;c=c+1|0}while((y|0)<(x|0));w=w+16|0}while(w>>>0<e>>>0);Cd(B,240);Cd(z,16);Cd(A,16);B=e+-1|0;f=f+B|0;f=a[f>>0]|0;f=f&255;B=f>>>0>e>>>0;f=e-f|0;f=B?-1:f;i=C;return f|0}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=i;i=i+112|0;e=d;Ue(e);Ve(e,a,b);We(e,c);Cd(e,112);i=d;return}function Ob(b,c,e,f,g){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+400|0;n=o+224|0;l=o+112|0;m=o+336|0;k=o;h=m;j=h+64|0;do{a[h>>0]=0;h=h+1|0}while((h|0)<(j|0));if(c>>>0>64){Ue(n);Ve(n,b,c);We(n,m)}else qf(m|0,b|0,c|0)|0;h=n;b=m;j=h+64|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(j|0));b=0;do{j=n+b|0;a[j>>0]=(d[j>>0]|0)^54;b=b+1|0}while((b|0)!=64);Ue(k);Ve(k,n,64);Cd(n,64);Ve(k,e,f);h=n;b=m;j=h+64|0;do{a[h>>0]=a[b>>0]|0;h=h+1|0;b=b+1|0}while((h|0)<(j|0));b=0;do{f=n+b|0;a[f>>0]=(d[f>>0]|0)^92;b=b+1|0}while((b|0)!=64);We(k,n+64|0);Ue(l);Ve(l,n,96);We(l,g);Cd(l,112);Cd(n,96);Cd(m,64);Cd(k,112);i=o;return}function Pb(b,c,e,f,g,h,j,k){b=b|0;c=c|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=i;i=i+432|0;q=v+112|0;t=v+328|0;p=v;r=v+264|0;u=v+232|0;s=v+224|0;a[s>>0]=1;n=(e|0)==0;l=n?32:f;f=n?36088:e;n=r;o=n+64|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));if(l>>>0>64){Ue(q);Ve(q,f,l);We(q,r)}else qf(r|0,f|0,l|0)|0;n=q;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=q+f|0;a[o>>0]=(d[o>>0]|0)^54;f=f+1|0}while((f|0)!=64);Ue(p);Ve(p,q,64);Cd(q,64);Ve(p,b,c);n=t;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=t+f|0;a[o>>0]=(d[o>>0]|0)^92;f=f+1|0}while((f|0)!=64);m=t+64|0;We(p,m);Ue(q);Ve(q,t,96);We(q,u);Cd(q,112);Cd(t,96);n=r+32|0;o=n+32|0;do{a[n>>0]=0;n=n+1|0}while((n|0)<(o|0));n=r;f=u;o=n+32|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));n=q;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=q+f|0;a[o>>0]=(d[o>>0]|0)^54;f=f+1|0}while((f|0)!=64);Ue(p);Ve(p,q,64);Cd(q,64);Ve(p,g,h);Ve(p,s,1);n=t;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=t+f|0;a[o>>0]=(d[o>>0]|0)^92;f=f+1|0}while((f|0)!=64);We(p,m);Ue(q);Ve(q,t,96);We(q,u);Cd(q,112);Cd(t,96);if(k>>>0<=32){qf(j|0,u|0,k|0)|0;Cd(p,112);Cd(r,64);Cd(u,32);i=v;return}l=k+-33&-32;b=l+32|0;e=j;c=k;do{n=e;f=u;o=n+32|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));e=e+32|0;a[s>>0]=(a[s>>0]|0)+1<<24>>24;n=q;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=q+f|0;a[o>>0]=(d[o>>0]|0)^54;f=f+1|0}while((f|0)!=64);Ue(p);Ve(p,q,64);Cd(q,64);Ve(p,u,32);Ve(p,g,h);Ve(p,s,1);n=t;f=r;o=n+64|0;do{a[n>>0]=a[f>>0]|0;n=n+1|0;f=f+1|0}while((n|0)<(o|0));f=0;do{o=t+f|0;a[o>>0]=(d[o>>0]|0)^92;f=f+1|0}while((f|0)!=64);c=c+-32|0;We(p,m);Ue(q);Ve(q,t,96);We(q,u);Cd(q,112);Cd(t,96)}while(c>>>0>32);j=j+b|0;k=k+-32-l|0;qf(j|0,u|0,k|0)|0;Cd(p,112);Cd(r,64);Cd(u,32);i=v;return}function Qb(b,c,d){b=b|0;c=c|0;d=d|0;if(b|0)a[b>>0]=2;if(c|0)a[c>>0]=2;if(!d)return;a[d>>0]=1;return}function Rb(){return -1}function Sb(a){a=a|0;return he(c[a+7368>>2]|0)|0}function Tb(a){a=a|0;return he(c[a+3216>>2]|0)|0}function Ub(a){a=a|0;return he(c[a>>2]|0)|0}function Vb(){return 7372}function Wb(){return 3320}function Xb(){return 4}function Yb(a){a=a|0;Cd(a,7372);id(a);return a|0}function Zb(a){a=a|0;Cd(a,3320);pb(a);return a|0}function _b(a){a=a|0;Cd(a,4);Sc(a);return a|0}function $b(a){a=a|0;Cd(a,7372);id(a);return 7372}function ac(a){a=a|0;Cd(a,3320);pb(a);return 3320}function bc(a){a=a|0;Cd(a,4);Sc(a);return 4}function cc(a){a=a|0;return ie(xd(a)|0)|0}function dc(a){a=a|0;return ie(Cb(a)|0)|0}function ec(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=xd(a)|0;if((ie(g)|0)>>>0>f>>>0){c[a+7368>>2]=2;f=-1;return f|0}else{yd(je(e,g)|0,a)|0;f=ke(b,d,e,g)|0;return f|0}return 0}function fc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=Cb(a)|0;if((ie(g)|0)>>>0>f>>>0){c[a+3216>>2]=2;a=-1;return a|0}else{Db(je(e,g)|0,a)|0;a=ke(b,d,e,g)|0;return a|0}return 0}function gc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+7368|0;b=le(b,d,e,f,g)|0;if((b|0)==-1){f=-1;return f|0}d=e+b|0;if((d|0)==(zd(e,d+1|0,a)|0))return f|0;if(c[g>>2]|0){f=-1;return f|0}c[g>>2]=10;f=-1;return f|0}function hc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+3216|0;b=le(b,d,e,f,g)|0;if((b|0)==-1){a=-1;return a|0}d=e+b|0;if((d|0)==(Eb(e,d+1|0,a)|0)){a=f;return a|0}if(c[g>>2]|0){a=-1;return a|0}c[g>>2]=10;a=-1;return a|0}function ic(a){a=a|0;return ld(a)|0}function jc(a,b,c){a=a|0;b=b|0;c=c|0;a=md(a,b,c)|0;Cd(b,c);return a|0}function kc(a){a=a|0;return nd(a)|0}function lc(a,b,c){a=a|0;b=b|0;c=c|0;return od(a,b,c)|0}function mc(a){a=a|0;return Ca(pd(a)|0)|0}function nc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=pd(a)|0;if((Ca(g)|0)>>>0>f>>>0){c[a+7368>>2]=2;f=-1;return f|0}else{h=0-g|0;qd(a,b,d,e+(Ca(g)|0)+h|0,g)|0;f=Ca(g)|0;Da(e+f+h|0,g,e)|0;return f|0}return 0}function oc(a){a=a|0;return rd(a)|0}function pc(a,b,c){a=a|0;b=b|0;c=c|0;return sd(a,b,c)|0}function qc(a){a=a|0;return td(a)|0}function rc(a){a=a|0;return ud(a)|0}function sc(a,b){a=a|0;b=b|0;return vd(a,b)|0}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=wd(a,b,c,d)|0;Cd(c,d);return b|0}function uc(a){a=a|0;return qb(a)|0}function vc(a,b,d,e,f,g,h,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0;m=i;i=i+64|0;k=m+32|0;l=m;if((Ea(e)|0)==32?(Ea(g)|0)==32:0){Fa(d,e,k)|0;Fa(f,g,l)|0;g=rb(a,b,k,l,h,j)|0;Cd(h,j);i=m;return g|0}c[a+3216>>2]=7;g=-1;i=m;return g|0}function wc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ea(e)|0;if((f|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(d,e,d)|0;a=sb(a,b,0,d,f)|0;return a|0}return 0}function xc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,j=0;j=i;i=i+32|0;h=j;if((Ea(e)|0)!=32){c[a+3216>>2]=7;a=-1;i=j;return a|0}Fa(d,e,h)|0;d=Ea(g)|0;if((d|0)==-1){c[a+3216>>2]=7;d=-1}else{Fa(f,g,f)|0;d=sb(a,b,h,f,d)|0}a=d;i=j;return a|0}function yc(a){a=a|0;return Ca(tb(a)|0)|0}function zc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=tb(a)|0;if((Ca(e)|0)>>>0>d>>>0){c[a+3216>>2]=2;a=-1;return a|0}d=0-e|0;if((ub(a,b+(Ca(e)|0)+d|0,e)|0)==-1){a=-1;return a|0}a=Ca(e)|0;Da(b+a+d|0,e,b)|0;return a|0}function Ac(a){a=a|0;return d[a+3220>>0]|0|0}function Bc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Ea(d)|0;if((e|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(b,d,b)|0;a=(vb(a,0,b,e)|0)&1;return a|0}return 0}function Cc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+32|0;g=h;if((Ea(d)|0)!=32){c[a+3216>>2]=7;a=-1;i=h;return a|0}Fa(b,d,g)|0;b=Ea(f)|0;if((b|0)==-1){c[a+3216>>2]=7;b=-1}else{Fa(e,f,e)|0;b=(vb(a,g,e,b)|0)&1}a=b;i=h;return a|0}function Dc(a,b){a=a|0;b=b|0;b=kd(a,b+3285|0)|0;if((b|0)!=-1)return b|0;c[a+7368>>2]=6;return b|0}function Ec(a){a=a|0;return wb(a)|0}function Fc(a){a=a|0;return yb(a)|0}function Gc(a,b){a=a|0;b=b|0;return Ca(xb(a,b)|0)|0}function Hc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0;i=xb(a,d)|0;if((Ca(i)|0)>>>0>h>>>0){c[a+3216>>2]=2;a=-1;return a|0}h=0-i|0;a=zb(a,b,d,e,f,g+(Ca(i)|0)+h|0,i)|0;Cd(e,f);if((a|0)==-1){a=-1;return a|0}a=Ca(i)|0;Da(g+a+h|0,i,g)|0;return a|0}function Ic(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Ea(e)|0;if((f|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(d,e,d)|0;a=Ab(a,b,d,f)|0;return a|0}return 0}function Jc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Ea(e)|0;if((h|0)==-1){c[a+3216>>2]=7;a=-1;return a|0}else{Fa(d,e,d)|0;a=Bb(a,b,d,h,f,g)|0;return a|0}return 0}function Kc(a){a=a|0;return Ca(Tc(a)|0)|0}function Lc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=Tc(a)|0;if((Ca(g)|0)>>>0>f>>>0){c[a>>2]=2;a=-1;return a|0}f=0-g|0;if((Uc(a,b,d,e+(Ca(g)|0)+f|0,g)|0)==-1){a=-1;return a|0}a=Ca(g)|0;Da(e+a+f|0,g,e)|0;return a|0}function Mc(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0;k=i;i=i+32|0;j=k;if((Ea(d)|0)!=32){c[a>>2]=7;j=-1;i=k;return j|0}Fa(b,d,j)|0;b=Ea(h)|0;if((b|0)==-1){c[a>>2]=7;b=-1}else{Fa(g,h,g)|0;b=Vc(a,j,e,f,g,b)|0}j=b;i=k;return j|0}function Nc(a){a=a|0;return 8}function Oc(a,b){a=a|0;b=b|0;return Kb(b)|0}function Pc(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=i;i=i+192|0;m=p+112|0;n=p+32|0;o=p;if((Kb(g)|0)>>>0<j>>>0){g=-1;i=p;return g|0}Pb(d,e,0,0,c[b+4>>2]|0,c[b+8>>2]|0,m,80);j=n;d=m;e=j+32|0;do{a[j>>0]=a[d>>0]|0;j=j+1|0;d=d+1|0}while((j|0)<(e|0));b=n+32|0;j=b;d=m+32|0;e=j+32|0;do{a[j>>0]=a[d>>0]|0;j=j+1|0;d=d+1|0}while((j|0)<(e|0));j=n+64|0;d=m+64|0;e=j+16|0;do{a[j>>0]=a[d>>0]|0;j=j+1|0;d=d+1|0}while((j|0)<(e|0));Cd(m,80);Lb(n,n+64|0,f,g,h);Ob(b,32,k,l+-8|0,o);f=o;o=c[f>>2]|0;f=c[f+4>>2]|0;g=k+l+-8|0;k=g;a[k>>0]=o;a[k+1>>0]=o>>8;a[k+2>>0]=o>>16;a[k+3>>0]=o>>24;g=g+4|0;a[g>>0]=f;a[g+1>>0]=f>>8;a[g+2>>0]=f>>16;a[g+3>>0]=f>>24;Cd(n,80);g=l;i=p;return g|0}function Qc(a,b){a=a|0;b=b|0;return b|0}function Rc(b,d,e,f,g,h,j,k,l){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0,p=0;p=i;i=i+192|0;m=p+112|0;n=p+32|0;o=p;Pb(d,e,0,0,c[b+4>>2]|0,c[b+8>>2]|0,m,80);b=n;d=m;e=b+32|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));l=n+32|0;b=l;d=m+32|0;e=b+32|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));b=n+64|0;d=m+64|0;e=b+16|0;do{a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}while((b|0)<(e|0));Cd(m,80);Ob(l,32,f,g+-8|0,o);if(Dd(f+g+-8|0,o,8)|0){k=Mb(n,n+64|0,h,j,k)|0;Cd(n,80);i=p;return k|0}else{Cd(n,80);k=-1;i=p;return k|0}return 0}function Sc(a){a=a|0;c[a>>2]=0;return}function Tc(a){a=a|0;return 32}function Uc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(f>>>0<32){c[a>>2]=2;a=-1;return a|0}else{Nb(b,d,e);a=32;return a|0}return 0}function Vc(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(g>>>0<64){c[a>>2]=5;a=-1;return a|0}if(Jb(b,d,e,f)|0){a=0;return a|0}c[a>>2]=5;a=-1;return a|0}function Wc(a,b,d){a=a|0;b=b|0;d=d|0;c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=0;c[a+44>>2]=a+48;c[a+148>>2]=a+152;c[a+492>>2]=a+496;return}function Xc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+64|0;l=m;k=c[b>>2]|0;Pb(d,e,0,0,c[k>>2]|0,c[k+4>>2]|0,l,64);k=b+152|0;e=b+148|0;d=c[e>>2]|0;if((d|0)==(b+492|0))j=(d|0)==(k|0)?b+84|0:k;else{d=d+68|0;c[e>>2]=d;j=k}d=d+-68|0;if((d|0)!=(j|0))do{e=d;d=d+-68|0;g=d;h=e+68|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0))}while((d|0)!=(j|0));c[b+184>>2]=0;e=b+12|0;g=l;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=b+188|0;g=l+32|0;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=k;g=f;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));Cd(l,64);i=m;return}function Yc(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;m=i;i=i+64|0;l=m;k=c[b>>2]|0;Pb(d,e,0,0,c[k>>2]|0,c[k+4>>2]|0,l,64);k=b+48|0;e=b+44|0;d=c[e>>2]|0;if((d|0)==(b+148|0))j=(d|0)==(k|0)?b+-52|0:k;else{d=d+100|0;c[e>>2]=d;j=k}d=d+-100|0;if((d|0)!=(j|0))do{e=d;d=d+-100|0;g=d;h=e+100|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(h|0))}while((d|0)!=(j|0));c[b+112>>2]=0;e=b+12|0;g=l;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=b+116|0;g=l+32|0;h=e+32|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));e=k;g=f;h=e+64|0;do{a[e>>0]=a[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));Cd(l,64);i=m;return}function Zc(a){a=a|0;var b=0,d=0,e=0,f=0;b=a+48|0;e=c[a+44>>2]|0;if((b|0)==(e|0))f=36;else{d=b;b=4;do{b=b+36+(Ta(d)|0)|0;d=d+100|0}while((d|0)!=(e|0));f=b+32|0}b=a+152|0;e=c[a+148>>2]|0;if((b|0)==(e|0))b=4;else{d=b;b=4;do{b=b+36+(Qa(d)|0)|0;d=d+68|0}while((d|0)!=(e|0))}f=f+b|0;b=a+496|0;e=c[a+492>>2]|0;if((b|0)==(e|0)){a=4;a=f+a|0;return a|0}else{d=b;b=4}do{b=b+36+(Qa(d)|0)|0;d=d+68|0}while((d|0)!=(e|0));a=f+b|0;return a|0}function _c(a,b){a=a|0;b=b|0;var d=0,e=0;a=Oa(a,b+12|0,32)|0;e=b+44|0;d=b+48|0;a=Ka(a,((c[e>>2]|0)-d|0)/100|0)|0;e=c[e>>2]|0;if((d|0)!=(e|0))do{a=Oa(Ua(a,d)|0,d+68|0,32)|0;a=Ka(a,c[d+64>>2]|0)|0;d=d+100|0}while((d|0)!=(e|0));e=b+148|0;d=b+152|0;a=Ka(a,((c[e>>2]|0)-d|0)/68|0)|0;e=c[e>>2]|0;if((d|0)!=(e|0))do{a=Oa(Ra(a,d)|0,d+36|0,32)|0;a=Ka(a,c[d+32>>2]|0)|0;d=d+68|0}while((d|0)!=(e|0));e=b+492|0;d=b+496|0;a=Ka(a,((c[e>>2]|0)-d|0)/68|0)|0;e=c[e>>2]|0;if((d|0)==(e|0)){b=a;return b|0}do{a=Oa(Ra(a,d)|0,d+36|0,32)|0;a=Ka(a,c[d+32>>2]|0)|0;d=d+68|0}while((d|0)!=(e|0));return a|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=i;i=i+16|0;a=cd(bd(ad(Pa(a,b,c+12|0,32)|0,b,c+44|0)|0,b,c+148|0)|0,b,c+492|0)|0;if(!d){d=a;i=e;return d|0}d=La(a,b,e)|0;i=e;return d|0}function ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+104|0;l=d+4|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+100|0;c[d>>2]=f}f=f+-100|0;if((f|0)!=(e|0))do{g=f;f=f+-100|0;h=f;j=g+100|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=La(Pa(Va(a,b,e)|0,b,e+68|0,32)|0,b,e+64|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function bd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+344|0;l=d+276|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+68|0;c[d>>2]=f}f=f+-68|0;if((f|0)!=(e|0))do{g=f;f=f+-68|0;h=f;j=g+68|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=La(Pa(Sa(a,b,e)|0,b,e+36|0,32)|0,b,e+32|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function cd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+2724|0;l=d+2656|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+68|0;c[d>>2]=f}f=f+-68|0;if((f|0)!=(e|0))do{g=f;f=f+-68|0;h=f;j=g+68|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=La(Pa(Sa(a,b,e)|0,b,e+36|0,32)|0,b,e+32|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function dd(a,b){a=a|0;b=b|0;var d=0,e=0;if((c[a+44>>2]|0)==(a+48|0))d=0;else d=c[a+112>>2]|0;a=a+4|0;e=c[a>>2]|0;b=sa[c[(c[e>>2]|0)+4>>2]&3](e,b)|0;a=c[a>>2]|0;return gb(d,32,b,qa[c[c[a>>2]>>2]&1](a)|0)|0}function ed(a){a=a|0;return ((c[a+44>>2]|0)==(a+48|0)?32:0)|0}function fd(b,d,e,f,g,h,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=i;i=i+112|0;q=r+64|0;p=r;l=b+44|0;n=b+48|0;if((c[l>>2]|0)==(n|0))k=0;else k=c[b+112>>2]|0;o=b+4|0;s=c[o>>2]|0;s=sa[c[(c[s>>2]|0)+4>>2]&3](s,e)|0;m=c[o>>2]|0;m=gb(k,32,s,qa[c[c[m>>2]>>2]&1](m)|0)|0;k=(c[l>>2]|0)==(n|0);if((k?32:0)>>>0>g>>>0){c[b+8>>2]=1;s=-1;i=r;return s|0}if(m>>>0>j>>>0){c[b+8>>2]=2;s=-1;i=r;return s|0}if(k){c[l>>2]=b+148;Fb(f,n);f=c[b>>2]|0;Gb(n,b+152|0,q);l=b+12|0;Pb(q,32,l,32,c[f+8>>2]|0,c[f+12>>2]|0,p,64);f=p;g=l+32|0;do{a[l>>0]=a[f>>0]|0;l=l+1|0;f=f+1|0}while((l|0)<(g|0));k=b+116|0;l=k;f=p+32|0;g=l+32|0;do{a[l>>0]=a[f>>0]|0;l=l+1|0;f=f+1|0}while((l|0)<(g|0));l=b+112|0;c[l>>2]=0;Cd(p,64);Cd(q,32)}else{l=b+112|0;k=b+116|0}j=q+4|0;Ob(k,32,33154,1,j);c[q>>2]=c[l>>2];Ob(k,32,33155,1,k);c[l>>2]=(c[l>>2]|0)+1;k=c[o>>2]|0;k=sa[c[(c[k>>2]|0)+4>>2]&3](k,e)|0;hb(p,3,c[q>>2]|0,32,k,h);l=c[p>>2]|0;f=n;g=l+32|0;do{a[l>>0]=a[f>>0]|0;l=l+1|0;f=f+1|0}while((l|0)<(g|0));s=c[o>>2]|0;ra[c[(c[s>>2]|0)+8>>2]&3](s,j,32,d,e,c[p+4>>2]|0,k,h,m)|0;Cd(q,36);s=m;i=r;return s|0}function gd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=a+4|0;h=c[e>>2]|0;ib(f,b,d,qa[c[c[h>>2]>>2]&1](h)|0);if(!(c[f+24>>2]|0)){c[a+8>>2]=4;h=-1;i=g;return h|0}else{h=c[e>>2]|0;h=sa[c[(c[h>>2]|0)+12>>2]&3](h,c[f+28>>2]|0)|0;i=g;return h|0}return 0}function hd(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=i;i=i+240|0;A=D+168|0;z=D+104|0;p=D+208|0;o=D+32|0;B=D;v=d+4|0;x=c[v>>2]|0;ib(B,e,f,qa[c[c[x>>2]>>2]&1](x)|0);e=b[B>>1]|0;if((e&255)<<24>>24!=3){c[d+8>>2]=3;d=-1;i=D;return d|0}if(((e&65535)>=256?(y=B+16|0,c[y>>2]|0):0)?(w=B+24|0,c[w>>2]|0):0){x=c[v>>2]|0;u=B+28|0;if((sa[c[(c[x>>2]|0)+12>>2]&3](x,c[u>>2]|0)|0)>>>0>h>>>0){c[d+8>>2]=2;d=-1;i=D;return d|0}if((c[B+20>>2]|0)!=32){c[d+8>>2]=4;d=-1;i=D;return d|0}f=d+152|0;x=d+148|0;k=c[x>>2]|0;a:do if((f|0)!=(k|0)){l=c[y>>2]|0;m=f;e=0;do{q=(ff(m,l,32)|0)==0;e=q?m:e;m=m+68|0}while(!(q|(m|0)==(k|0)));m=e;l=(m|0)!=0;if(l){k=m+32|0;e=c[k>>2]|0;q=B+4|0;o=c[q>>2]|0;if(o>>>0>=e>>>0){if((o-e|0)>>>0>2e3)break;t=A;r=k;s=t+36|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0));j=A+4|0;if((c[A>>2]|0)>>>0<o>>>0)do{Ob(j,32,33155,1,j);C=(c[A>>2]|0)+1|0;c[A>>2]=C}while(C>>>0<(c[q>>2]|0)>>>0);C=z+4|0;Ob(j,32,33154,1,C);c[z>>2]=c[A>>2];s=c[v>>2]|0;C=ra[c[(c[s>>2]|0)+16>>2]&3](s,C,32,c[B+8>>2]|0,c[B+12>>2]|0,c[w>>2]|0,c[u>>2]|0,g,h)|0;Cd(A,36);s=l;t=m;r=37;break}e=d+496|0;p=d+492|0;l=c[p>>2]|0;if((e|0)!=(l|0)){m=B+8|0;n=B+12|0;k=o;while(1){if(((k|0)==(c[e+32>>2]|0)?(ff(e,c[y>>2]|0,32)|0)==0:0)?(j=c[v>>2]|0,j=ra[c[(c[j>>2]|0)+16>>2]&3](j,e+36|0,32,c[m>>2]|0,c[n>>2]|0,c[w>>2]|0,c[u>>2]|0,g,h)|0,(j|0)!=-1):0){f=e;break}e=e+68|0;if((e|0)==(l|0))break a;k=c[q>>2]|0}Cd(f,68);d=(c[p>>2]|0)+-68|0;c[p>>2]=d;if((d|0)==(e|0)){d=j;i=D;return d|0}do{t=e;e=e+68|0;r=e;s=t+68|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((e|0)!=(c[p>>2]|0));i=D;return j|0}}else r=15}else r=15;while(0);if((r|0)==15){j=d+48|0;if((c[d+44>>2]|0)!=(j|0)?(n=B+4|0,(c[n>>2]|0)>>>0<=2e3):0){t=o;r=c[y>>2]|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));t=c[d>>2]|0;e=o+32|0;Gb(j,o,A);Pb(A,32,d+12|0,32,c[t+8>>2]|0,c[t+12>>2]|0,z,64);t=p;r=z;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));t=o+36|0;r=z+32|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));c[e>>2]=0;Cd(z,64);Cd(A,32);k=c[n>>2]|0;C=c[e>>2]|0;if(k>>>0<C>>>0|(k-C|0)>>>0>2e3)j=-1;else{t=A;r=e;s=t+36|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0));j=A+4|0;if((c[A>>2]|0)>>>0<k>>>0)do{Ob(j,32,33155,1,j);C=(c[A>>2]|0)+1|0;c[A>>2]=C}while(C>>>0<(c[n>>2]|0)>>>0);C=z+4|0;Ob(j,32,33154,1,C);c[z>>2]=c[A>>2];j=c[v>>2]|0;j=ra[c[(c[j>>2]|0)+16>>2]&3](j,C,32,c[B+8>>2]|0,c[B+12>>2]|0,c[w>>2]|0,c[u>>2]|0,g,h)|0;Cd(A,36)}Cd(p,32);Cd(o,68)}else j=-1;s=0;t=0;C=j;r=37}if((r|0)==37?(C|0)!=-1:0){if(!s){j=c[x>>2]|0;if((j|0)==(d+492|0))f=(j|0)==(f|0)?d+84|0:f;else{j=j+68|0;c[x>>2]=j}j=j+-68|0;if((j|0)!=(f|0))do{t=j;j=j+-68|0;r=j;s=t+68|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((j|0)!=(f|0));t=f;r=c[y>>2]|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));j=d+48|0;r=c[d>>2]|0;Gb(j,f,A);t=d+12|0;Pb(A,32,t,32,c[r+8>>2]|0,c[r+12>>2]|0,z,64);r=z;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));t=f+36|0;r=z+32|0;s=t+32|0;do{a[t>>0]=a[r>>0]|0;t=t+1|0;r=r+1|0}while((t|0)<(s|0));c[f+32>>2]=0;Cd(z,64);Cd(A,32);Cd(j,100);e=d+44|0;A=(c[e>>2]|0)+-100|0;c[e>>2]=A;if((A|0)!=(j|0))do{t=j;j=j+100|0;r=j;s=t+100|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((j|0)!=(c[e>>2]|0))}else f=t;q=f+32|0;l=B+4|0;if((c[q>>2]|0)>>>0<(c[l>>2]|0)>>>0){m=d+496|0;n=d+492|0;o=d+3216|0;j=f+36|0;p=d+532|0;k=d+528|0;do{e=c[n>>2]|0;if((e|0)==(o|0))e=o;else{e=e+68|0;c[n>>2]=e}e=e+-68|0;if((e|0)!=(m|0))do{t=e;e=e+-68|0;r=e;s=t+68|0;do{c[t>>2]=c[r>>2];t=t+4|0;r=r+4|0}while((t|0)<(s|0))}while((e|0)!=(m|0));Ob(j,32,33154,1,p);c[k>>2]=c[q>>2];c[m>>2]=c[f>>2];c[m+4>>2]=c[f+4>>2];c[m+8>>2]=c[f+8>>2];c[m+12>>2]=c[f+12>>2];c[m+16>>2]=c[f+16>>2];c[m+20>>2]=c[f+20>>2];c[m+24>>2]=c[f+24>>2];c[m+28>>2]=c[f+28>>2];Ob(j,32,33155,1,j);d=(c[q>>2]|0)+1|0;c[q>>2]=d}while(d>>>0<(c[l>>2]|0)>>>0)}else j=f+36|0;Ob(j,32,33155,1,j);c[q>>2]=(c[q>>2]|0)+1;d=C;i=D;return d|0}c[d+8>>2]=5;d=-1;i=D;return d|0}c[d+8>>2]=4;d=-1;i=D;return d|0}function id(a){a=a|0;c[a+160>>2]=a+164;c[a+7364>>2]=0;c[a+7368>>2]=0;return}function jd(a,b){a=a|0;b=b|0;var d=0;d=a+164|0;a=c[a+160>>2]|0;if((d|0)==(a|0)){b=0;return b|0}while(1){if(Dd(d+5|0,b,32)|0){a=5;break}d=d+72|0;if((d|0)==(a|0)){d=0;a=5;break}}if((a|0)==5)return d|0;return 0}function kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+164|0;g=a+160|0;if((d|0)==(c[g>>2]|0)){g=-1;return g|0}while(1){if(Dd(d+5|0,b,32)|0){a=d;break}d=d+72|0;if((d|0)==(c[g>>2]|0)){d=-1;e=7;break}}if((e|0)==7)return d|0;d=c[a>>2]|0;f=(c[g>>2]|0)+-72|0;c[g>>2]=f;if((f|0)==(a|0)){g=d;return g|0}do{b=a;a=a+72|0;e=a;f=b+72|0;do{c[b>>2]=c[e>>2];b=b+4|0;e=e+4|0}while((b|0)<(f|0))}while((a|0)!=(c[g>>2]|0));return d|0}function ld(a){a=a|0;return 64}function md(a,b,d){a=a|0;b=b|0;d=d|0;if(d>>>0<64){c[a+7368>>2]=1;a=-1;return a|0}else{Hb(b,a);Fb(b+32|0,a+96|0);a=0;return a|0}return 0}function nd(a){a=a|0;a=Ca(32)|0;return a+30+(Ca(32)|0)|0}function od(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=Ca(32)|0;if((h+30+(Ca(32)|0)|0)>>>0>e>>>0){c[b+7368>>2]=2;b=-1;return b|0}else{a[d>>0]=123;f=d+1|0;g=33156;h=f+13|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[d+14>>0]=34;e=Da(b+96|0,32,d+15|0)|0;a[e>>0]=34;a[e+1>>0]=44;f=e+2|0;g=33170;h=f+10|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));a[e+12>>0]=34;b=Da(b,32,e+13|0)|0;a[b>>0]=34;a[b+1>>0]=125;b=b+2-d|0;return b|0}return 0}function pd(a){a=a|0;return 64}function qd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(f>>>0<64){c[a+7368>>2]=2;a=-1;return a|0}else{Ib(a,b,d,e);a=64;return a|0}return 0}function rd(b){b=b|0;var d=0,e=0,f=0,g=0;d=b+164|0;f=c[b+160>>2]|0;if((d|0)!=(f|0)){e=1;b=0;do{if(!(a[d+4>>0]|0)){g=Ca(4)|0;e=0;b=b+6+g+(Ca(32)|0)|0}d=d+72|0}while((d|0)!=(f|0));if(!e){f=16;g=b;g=f+g|0;return g|0}}else b=0;f=17;g=b;g=f+g|0;return g|0}function sd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0;n=i;l=b+164|0;k=b+160|0;h=c[k>>2]|0;if((l|0)!=(h|0)){j=l;g=1;f=0;do{if(!(a[j+4>>0]|0)){o=Ca(4)|0;g=0;f=f+6+o+(Ca(32)|0)|0}j=j+72|0}while((j|0)!=(h|0));if(g)m=3;else g=16}else{f=0;m=3}if((m|0)==3)g=17;if((g+f|0)>>>0>e>>>0){c[b+7368>>2]=2;o=-1;i=n;return o|0}a[d>>0]=123;f=d+1|0;g=33156;h=f+13|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));f=d+14|0;j=c[k>>2]|0;if((l|0)!=(j|0)){h=l;g=123;do{if(!(a[h+4>>0]|0)){a[f>>0]=g;a[f+1>>0]=34;g=ja()|0;o=i;i=i+16|0;Ka(o,c[h>>2]|0)|0;f=Da(o,4,f+2|0)|0;a[f>>0]=34;a[f+1>>0]=58;a[f+2>>0]=34;f=Da(h+5|0,32,f+3|0)|0;a[f>>0]=34;na(g|0);f=f+1|0;g=44}h=h+72|0}while((h|0)!=(j|0));if(g<<24>>24!=44)m=14}else{g=123;m=14}if((m|0)==14){a[f>>0]=g;f=f+1|0}a[f>>0]=125;a[f+1>>0]=125;o=f+2-d|0;i=n;return o|0}function td(b){b=b|0;var d=0,e=0,f=0;d=b+164|0;f=c[b+160>>2]|0;if((d|0)==(f|0)){f=0;return f|0}else b=0;do{e=d+4|0;if(!(a[e>>0]|0)){a[e>>0]=1;b=b+1|0}d=d+72|0}while((d|0)!=(f|0));return b|0}function ud(a){a=a|0;return 100}function vd(a,b){a=a|0;b=b|0;return b<<5|0}function wd(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if(d<<5>>>0>f>>>0){c[b+7368>>2]=1;o=-1;return o|0}if(!d){o=0;return o|0}k=b+164|0;l=b+160|0;m=b+7364|0;n=b+7364|0;o=b+168|0;j=b+169|0;i=0;while(1){f=c[l>>2]|0;if((f|0)==(m|0))f=m;else{f=f+72|0;c[l>>2]=f}f=f+-72|0;if((f|0)!=(k|0))do{b=f;f=f+-72|0;g=f;h=b+72|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}while((f|0)!=(k|0));h=(c[n>>2]|0)+1|0;c[n>>2]=h;c[k>>2]=h;a[o>>0]=0;Fb(e,j);i=i+1|0;if((i|0)==(d|0))break;else e=e+32|0}return d|0}function xd(a){a=a|0;var b=0,d=0,e=0,f=0;e=Za(a)|0;f=Ta(a+96|0)|0;b=a+164|0;d=c[a+160>>2]|0;if((b|0)==(d|0)){d=4;e=e+8|0;f=e+f|0;f=f+d|0;return f|0}else a=4;do{a=a+5+(Ta(b+5|0)|0)|0;b=b+72|0}while((b|0)!=(d|0));e=e+8|0;f=e+f|0;f=f+a|0;return f|0}function yd(b,d){b=b|0;d=d|0;var e=0,f=0;b=Ua(_a(Ka(b,2)|0,d)|0,d+96|0)|0;f=d+160|0;e=d+164|0;b=Ka(b,((c[f>>2]|0)-e|0)/72|0)|0;f=c[f>>2]|0;if((e|0)==(f|0)){f=b;d=d+7364|0;d=c[d>>2]|0;d=Ka(f,d)|0;return d|0}do{b=Ka(b,c[e>>2]|0)|0;b=Ua(Ma(b,(a[e+4>>0]|0)!=0)|0,e+5|0)|0;e=e+72|0}while((e|0)!=(f|0));d=d+7364|0;d=c[d>>2]|0;d=Ka(b,d)|0;return d|0}function zd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=i;i=i+16|0;f=e;a=La(a,b,f)|0;switch(c[f>>2]|0){case 2:{f=La(Ad(Va($a(a,b,d)|0,b,d+96|0)|0,b,d+160|0)|0,b,d+7364|0)|0;i=e;return f|0}case 1:{c[d+7368>>2]=13;f=b;i=e;return f|0}default:{c[d+7368>>2]=9;f=b;i=e;return f|0}}return 0}function Ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0;n=i;i=i+16|0;m=n;a=La(a,b,m)|0;l=c[m>>2]|0;c[m>>2]=l+-1;if((a|0)==(b|0)|(l|0)==0){m=a;i=n;return m|0}k=d+7204|0;l=d+7132|0;do{e=c[d>>2]|0;if((e|0)==(k|0)){e=l;f=k}else{f=e+72|0;c[d>>2]=f}f=f+-72|0;if((f|0)!=(e|0))do{g=f;f=f+-72|0;h=f;j=g+72|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(j|0))}while((f|0)!=(e|0));a=Va(Na(La(a,b,e)|0,b,e+4|0)|0,b,e+5|0)|0;j=c[m>>2]|0;c[m>>2]=j+-1}while(!((a|0)==(b|0)|(j|0)==0));i=n;return a|0}function Bd(b,c){b=b|0;c=c|0;var d=0;d=b+c|0;if(!c)return;do{a[b>>0]=0;b=b+1|0}while((b|0)!=(d|0));return}function Cd(b,c){b=b|0;c=c|0;var d=0;d=b+c|0;if(!c)return;do{a[b>>0]=0;b=b+1|0}while((b|0)!=(d|0));return}function Dd(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;f=i;i=i+16|0;e=f;a[e>>0]=0;if(d|0)while(1){d=d+-1|0;a[e>>0]=a[e>>0]|a[c>>0]^a[b>>0];if(!d)break;else{c=c+1|0;b=b+1|0}}i=f;return (a[e>>0]|0)==0|0}function Ed(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0;H=d[e>>0]|0;i=pf(d[e+1>>0]|0|0,0,8)|0;l=C;D=pf(d[e+2>>0]|0|0,0,16)|0;l=l|C;B=pf(d[e+3>>0]|0|0,0,24)|0;l=l|C;m=a[e+6>>0]|0;j=d[e+4>>0]|0;E=pf(d[e+5>>0]|0|0,0,8)|0;k=C;m=pf(m&255|0,0,16)|0;k=pf(E|j|m|0,k|C|0,6)|0;m=C;j=a[e+9>>0]|0;E=d[e+7>>0]|0;h=pf(d[e+8>>0]|0|0,0,8)|0;x=C;j=pf(j&255|0,0,16)|0;x=pf(h|E|j|0,x|C|0,5)|0;j=C;E=a[e+12>>0]|0;h=d[e+10>>0]|0;v=pf(d[e+11>>0]|0|0,0,8)|0;F=C;E=pf(E&255|0,0,16)|0;F=pf(v|h|E|0,F|C|0,3)|0;E=C;h=a[e+15>>0]|0;v=d[e+13>>0]|0;p=pf(d[e+14>>0]|0|0,0,8)|0;t=C;h=pf(h&255|0,0,16)|0;t=pf(p|v|h|0,t|C|0,2)|0;h=C;v=d[e+16>>0]|0;p=pf(d[e+17>>0]|0|0,0,8)|0;z=C;f=pf(d[e+18>>0]|0|0,0,16)|0;z=z|C;A=pf(d[e+19>>0]|0|0,0,24)|0;A=p|v|f|A;z=z|C;f=a[e+22>>0]|0;v=d[e+20>>0]|0;p=pf(d[e+21>>0]|0|0,0,8)|0;q=C;f=pf(f&255|0,0,16)|0;q=pf(p|v|f|0,q|C|0,7)|0;f=C;v=a[e+25>>0]|0;p=d[e+23>>0]|0;g=pf(d[e+24>>0]|0|0,0,8)|0;w=C;v=pf(v&255|0,0,16)|0;w=pf(g|p|v|0,w|C|0,5)|0;v=C;p=a[e+28>>0]|0;g=d[e+26>>0]|0;r=pf(d[e+27>>0]|0|0,0,8)|0;o=C;p=pf(p&255|0,0,16)|0;o=pf(r|g|p|0,o|C|0,4)|0;p=C;g=a[e+31>>0]|0;r=d[e+29>>0]|0;y=pf(d[e+30>>0]|0|0,0,8)|0;s=C;e=pf(g&255|0,0,16)|0;s=pf(y|r|e|0,s|C|0,2)|0;s=s&33554428;e=lf(s|0,0,16777216,0)|0;e=of(e|0,C|0,25)|0;r=C;y=kf(0,0,e|0,r|0)|0;l=lf(y&19|0,0,i|H|D|B|0,l|0)|0;B=C;r=pf(e|0,r|0,25)|0;e=C;D=lf(k|0,m|0,16777216,0)|0;D=of(D|0,C|0,25)|0;H=C;j=lf(x|0,j|0,D|0,H|0)|0;x=C;H=pf(D|0,H|0,25)|0;H=kf(k|0,m|0,H|0,C|0)|0;m=C;k=lf(F|0,E|0,16777216,0)|0;k=of(k|0,C|0,25)|0;D=C;h=lf(t|0,h|0,k|0,D|0)|0;t=C;D=pf(k|0,D|0,25)|0;k=C;i=lf(A|0,z|0,16777216,0)|0;i=of(i|0,C|0,25)|0;y=C;f=lf(q|0,f|0,i|0,y|0)|0;q=C;y=pf(i|0,y|0,25)|0;i=C;g=lf(w|0,v|0,16777216,0)|0;g=of(g|0,C|0,25)|0;u=C;p=lf(o|0,p|0,g|0,u|0)|0;o=C;u=pf(g|0,u|0,25)|0;g=C;G=lf(l|0,B|0,33554432,0)|0;G=mf(G|0,C|0,26)|0;n=C;m=lf(H|0,m|0,G|0,n|0)|0;n=pf(G|0,n|0,26)|0;n=kf(l|0,B|0,n|0,C|0)|0;B=lf(j|0,x|0,33554432,0)|0;B=mf(B|0,C|0,26)|0;l=C;E=lf(B|0,l|0,F|0,E|0)|0;k=kf(E|0,C|0,D|0,k|0)|0;l=pf(B|0,l|0,26)|0;l=kf(j|0,x|0,l|0,C|0)|0;x=lf(h|0,t|0,33554432,0)|0;x=mf(x|0,C|0,26)|0;j=C;z=lf(x|0,j|0,A|0,z|0)|0;i=kf(z|0,C|0,y|0,i|0)|0;j=pf(x|0,j|0,26)|0;j=kf(h|0,t|0,j|0,C|0)|0;t=lf(f|0,q|0,33554432,0)|0;t=mf(t|0,C|0,26)|0;h=C;v=lf(t|0,h|0,w|0,v|0)|0;g=kf(v|0,C|0,u|0,g|0)|0;h=pf(t|0,h|0,26)|0;h=kf(f|0,q|0,h|0,C|0)|0;q=lf(p|0,o|0,33554432,0)|0;q=mf(q|0,C|0,26)|0;f=C;s=lf(s|0,0,q|0,f|0)|0;e=kf(s|0,C|0,r|0,e|0)|0;f=pf(q|0,f|0,26)|0;f=kf(p|0,o|0,f|0,C|0)|0;c[b>>2]=n;c[b+4>>2]=m;c[b+8>>2]=l;c[b+12>>2]=k;c[b+16>>2]=j;c[b+20>>2]=i;c[b+24>>2]=h;c[b+28>>2]=g;c[b+32>>2]=f;c[b+36>>2]=e;return}function Fd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+160|0;d=g+120|0;e=g+80|0;f=g+40|0;c=g;Gd(d,b);Gd(e,d);Gd(e,e);Hd(e,b,e);Hd(d,d,e);Gd(f,d);Hd(e,e,f);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(f,f,e);Gd(c,f);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Gd(c,c);Hd(f,c,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);b=1;do{Gd(f,f);b=b+1|0}while((b|0)!=50);Hd(f,f,e);Gd(c,f);b=1;do{Gd(c,c);b=b+1|0}while((b|0)!=100);Hd(f,c,f);Gd(f,f);b=1;do{Gd(f,f);b=b+1|0}while((b|0)!=50);Hd(e,f,e);Gd(e,e);Gd(e,e);Gd(e,e);Gd(e,e);Gd(e,e);Hd(a,e,d);i=g;return}function Gd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;bb=c[b>>2]|0;ua=c[b+4>>2]|0;j=c[b+8>>2]|0;la=c[b+12>>2]|0;e=c[b+16>>2]|0;db=c[b+20>>2]|0;Y=c[b+24>>2]|0;La=c[b+28>>2]|0;h=c[b+32>>2]|0;b=c[b+36>>2]|0;l=bb<<1;p=ua<<1;Xa=j<<1;f=la<<1;na=e<<1;B=db<<1;m=Y<<1;i=La<<1;Ka=db*38|0;ra=Y*19|0;va=La*38|0;da=h*19|0;gb=b*38|0;cb=((bb|0)<0)<<31>>31;cb=vf(bb|0,cb|0,bb|0,cb|0)|0;bb=C;o=((l|0)<0)<<31>>31;ta=((ua|0)<0)<<31>>31;Ia=vf(l|0,o|0,ua|0,ta|0)|0;Ha=C;k=((j|0)<0)<<31>>31;Wa=vf(j|0,k|0,l|0,o|0)|0;Va=C;ma=((la|0)<0)<<31>>31;Ua=vf(la|0,ma|0,l|0,o|0)|0;Ta=C;D=((e|0)<0)<<31>>31;Oa=vf(e|0,D|0,l|0,o|0)|0;Na=C;eb=((db|0)<0)<<31>>31;ya=vf(db|0,eb|0,l|0,o|0)|0;xa=C;g=((Y|0)<0)<<31>>31;ga=vf(Y|0,g|0,l|0,o|0)|0;fa=C;Ma=((La|0)<0)<<31>>31;R=vf(La|0,Ma|0,l|0,o|0)|0;Q=C;A=((h|0)<0)<<31>>31;F=vf(h|0,A|0,l|0,o|0)|0;E=C;q=((b|0)<0)<<31>>31;o=vf(b|0,q|0,l|0,o|0)|0;l=C;n=((p|0)<0)<<31>>31;ta=vf(p|0,n|0,ua|0,ta|0)|0;ua=C;ba=vf(p|0,n|0,j|0,k|0)|0;ca=C;P=((f|0)<0)<<31>>31;Sa=vf(f|0,P|0,p|0,n|0)|0;Ra=C;Ca=vf(e|0,D|0,p|0,n|0)|0;Ba=C;d=((B|0)<0)<<31>>31;ia=vf(B|0,d|0,p|0,n|0)|0;ha=C;T=vf(Y|0,g|0,p|0,n|0)|0;S=C;O=((i|0)<0)<<31>>31;H=vf(i|0,O|0,p|0,n|0)|0;G=C;t=vf(h|0,A|0,p|0,n|0)|0;s=C;fb=((gb|0)<0)<<31>>31;n=vf(gb|0,fb|0,p|0,n|0)|0;p=C;Qa=vf(j|0,k|0,j|0,k|0)|0;Pa=C;Ya=((Xa|0)<0)<<31>>31;Aa=vf(Xa|0,Ya|0,la|0,ma|0)|0;za=C;ka=vf(e|0,D|0,Xa|0,Ya|0)|0;ja=C;X=vf(db|0,eb|0,Xa|0,Ya|0)|0;W=C;N=vf(Y|0,g|0,Xa|0,Ya|0)|0;M=C;v=vf(La|0,Ma|0,Xa|0,Ya|0)|0;u=C;ea=((da|0)<0)<<31>>31;Ya=vf(da|0,ea|0,Xa|0,Ya|0)|0;Xa=C;k=vf(gb|0,fb|0,j|0,k|0)|0;j=C;ma=vf(f|0,P|0,la|0,ma|0)|0;la=C;V=vf(f|0,P|0,e|0,D|0)|0;U=C;J=vf(B|0,d|0,f|0,P|0)|0;I=C;z=vf(Y|0,g|0,f|0,P|0)|0;y=C;wa=((va|0)<0)<<31>>31;_a=vf(va|0,wa|0,f|0,P|0)|0;Za=C;Ea=vf(da|0,ea|0,f|0,P|0)|0;Da=C;P=vf(gb|0,fb|0,f|0,P|0)|0;f=C;L=vf(e|0,D|0,e|0,D|0)|0;K=C;oa=((na|0)<0)<<31>>31;x=vf(na|0,oa|0,db|0,eb|0)|0;w=C;sa=((ra|0)<0)<<31>>31;ab=vf(ra|0,sa|0,na|0,oa|0)|0;$a=C;Ga=vf(va|0,wa|0,e|0,D|0)|0;Fa=C;oa=vf(da|0,ea|0,na|0,oa|0)|0;na=C;D=vf(gb|0,fb|0,e|0,D|0)|0;e=C;eb=vf(Ka|0,((Ka|0)<0)<<31>>31|0,db|0,eb|0)|0;db=C;Ka=vf(ra|0,sa|0,B|0,d|0)|0;Ja=C;qa=vf(va|0,wa|0,B|0,d|0)|0;pa=C;_=vf(da|0,ea|0,B|0,d|0)|0;Z=C;d=vf(gb|0,fb|0,B|0,d|0)|0;B=C;sa=vf(ra|0,sa|0,Y|0,g|0)|0;ra=C;aa=vf(va|0,wa|0,Y|0,g|0)|0;$=C;m=vf(da|0,ea|0,m|0,((m|0)<0)<<31>>31|0)|0;r=C;g=vf(gb|0,fb|0,Y|0,g|0)|0;Y=C;Ma=vf(va|0,wa|0,La|0,Ma|0)|0;La=C;wa=vf(da|0,ea|0,i|0,O|0)|0;va=C;O=vf(gb|0,fb|0,i|0,O|0)|0;i=C;ea=vf(da|0,ea|0,h|0,A|0)|0;da=C;A=vf(gb|0,fb|0,h|0,A|0)|0;h=C;q=vf(gb|0,fb|0,b|0,q|0)|0;b=C;bb=lf(eb|0,db|0,cb|0,bb|0)|0;$a=lf(bb|0,C|0,ab|0,$a|0)|0;Za=lf($a|0,C|0,_a|0,Za|0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;p=lf(Xa|0,C|0,n|0,p|0)|0;n=C;ua=lf(Wa|0,Va|0,ta|0,ua|0)|0;ta=C;ca=lf(Ua|0,Ta|0,ba|0,ca|0)|0;ba=C;Pa=lf(Sa|0,Ra|0,Qa|0,Pa|0)|0;Na=lf(Pa|0,C|0,Oa|0,Na|0)|0;La=lf(Na|0,C|0,Ma|0,La|0)|0;r=lf(La|0,C|0,m|0,r|0)|0;B=lf(r|0,C|0,d|0,B|0)|0;d=C;r=lf(p|0,n|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;m=C;Ha=lf(Ka|0,Ja|0,Ia|0,Ha|0)|0;Fa=lf(Ha|0,C|0,Ga|0,Fa|0)|0;Da=lf(Fa|0,C|0,Ea|0,Da|0)|0;j=lf(Da|0,C|0,k|0,j|0)|0;j=lf(j|0,C|0,r|0,m|0)|0;k=C;m=pf(r|0,m|0,26)|0;m=kf(p|0,n|0,m|0,C|0)|0;n=C;p=lf(B|0,d|0,33554432,0)|0;p=mf(p|0,C|0,26)|0;r=C;za=lf(Ca|0,Ba|0,Aa|0,za|0)|0;xa=lf(za|0,C|0,ya|0,xa|0)|0;va=lf(xa|0,C|0,wa|0,va|0)|0;Y=lf(va|0,C|0,g|0,Y|0)|0;Y=lf(Y|0,C|0,p|0,r|0)|0;g=C;r=pf(p|0,r|0,26)|0;r=kf(B|0,d|0,r|0,C|0)|0;d=C;B=lf(j|0,k|0,16777216,0)|0;B=mf(B|0,C|0,25)|0;p=C;ra=lf(ua|0,ta|0,sa|0,ra|0)|0;pa=lf(ra|0,C|0,qa|0,pa|0)|0;na=lf(pa|0,C|0,oa|0,na|0)|0;f=lf(na|0,C|0,P|0,f|0)|0;f=lf(f|0,C|0,B|0,p|0)|0;P=C;p=pf(B|0,p|0,25)|0;p=kf(j|0,k|0,p|0,C|0)|0;k=C;j=lf(Y|0,g|0,16777216,0)|0;j=mf(j|0,C|0,25)|0;B=C;ja=lf(ma|0,la|0,ka|0,ja|0)|0;ha=lf(ja|0,C|0,ia|0,ha|0)|0;fa=lf(ha|0,C|0,ga|0,fa|0)|0;da=lf(fa|0,C|0,ea|0,da|0)|0;i=lf(da|0,C|0,O|0,i|0)|0;i=lf(i|0,C|0,j|0,B|0)|0;O=C;B=pf(j|0,B|0,25)|0;B=kf(Y|0,g|0,B|0,C|0)|0;g=C;Y=lf(f|0,P|0,33554432,0)|0;Y=mf(Y|0,C|0,26)|0;j=C;$=lf(ca|0,ba|0,aa|0,$|0)|0;Z=lf($|0,C|0,_|0,Z|0)|0;e=lf(Z|0,C|0,D|0,e|0)|0;e=lf(e|0,C|0,Y|0,j|0)|0;D=C;j=pf(Y|0,j|0,26)|0;j=kf(f|0,P|0,j|0,C|0)|0;P=lf(i|0,O|0,33554432,0)|0;P=mf(P|0,C|0,26)|0;f=C;U=lf(X|0,W|0,V|0,U|0)|0;S=lf(U|0,C|0,T|0,S|0)|0;Q=lf(S|0,C|0,R|0,Q|0)|0;h=lf(Q|0,C|0,A|0,h|0)|0;h=lf(h|0,C|0,P|0,f|0)|0;A=C;f=pf(P|0,f|0,26)|0;f=kf(i|0,O|0,f|0,C|0)|0;O=lf(e|0,D|0,16777216,0)|0;O=mf(O|0,C|0,25)|0;i=C;d=lf(O|0,i|0,r|0,d|0)|0;r=C;i=pf(O|0,i|0,25)|0;i=kf(e|0,D|0,i|0,C|0)|0;D=lf(h|0,A|0,16777216,0)|0;D=mf(D|0,C|0,25)|0;e=C;K=lf(N|0,M|0,L|0,K|0)|0;I=lf(K|0,C|0,J|0,I|0)|0;G=lf(I|0,C|0,H|0,G|0)|0;E=lf(G|0,C|0,F|0,E|0)|0;b=lf(E|0,C|0,q|0,b|0)|0;b=lf(b|0,C|0,D|0,e|0)|0;q=C;e=pf(D|0,e|0,25)|0;e=kf(h|0,A|0,e|0,C|0)|0;A=lf(d|0,r|0,33554432,0)|0;A=mf(A|0,C|0,26)|0;h=C;g=lf(B|0,g|0,A|0,h|0)|0;h=pf(A|0,h|0,26)|0;h=kf(d|0,r|0,h|0,C|0)|0;r=lf(b|0,q|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;d=C;w=lf(z|0,y|0,x|0,w|0)|0;u=lf(w|0,C|0,v|0,u|0)|0;s=lf(u|0,C|0,t|0,s|0)|0;l=lf(s|0,C|0,o|0,l|0)|0;l=lf(l|0,C|0,r|0,d|0)|0;o=C;d=pf(r|0,d|0,26)|0;d=kf(b|0,q|0,d|0,C|0)|0;q=lf(l|0,o|0,16777216,0)|0;q=mf(q|0,C|0,25)|0;b=C;r=vf(q|0,b|0,19,0)|0;n=lf(r|0,C|0,m|0,n|0)|0;m=C;b=pf(q|0,b|0,25)|0;b=kf(l|0,o|0,b|0,C|0)|0;o=lf(n|0,m|0,33554432,0)|0;o=mf(o|0,C|0,26)|0;l=C;k=lf(p|0,k|0,o|0,l|0)|0;l=pf(o|0,l|0,26)|0;l=kf(n|0,m|0,l|0,C|0)|0;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=j;c[a+12>>2]=i;c[a+16>>2]=h;c[a+20>>2]=g;c[a+24>>2]=f;c[a+28>>2]=e;c[a+32>>2]=d;c[a+36>>2]=b;return}function Hd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0,wc=0,xc=0,yc=0,zc=0,Ac=0,Bc=0,Cc=0,Dc=0,Ec=0,Fc=0,Gc=0,Hc=0,Ic=0,Jc=0,Kc=0,Lc=0,Mc=0,Nc=0,Oc=0,Pc=0,Qc=0,Rc=0,Sc=0;l=c[b>>2]|0;s=c[b+4>>2]|0;j=c[b+8>>2]|0;Rb=c[b+12>>2]|0;e=c[b+16>>2]|0;za=c[b+20>>2]|0;ya=c[b+24>>2]|0;zb=c[b+28>>2]|0;h=c[b+32>>2]|0;ga=c[b+36>>2]|0;H=c[d>>2]|0;J=c[d+4>>2]|0;F=c[d+8>>2]|0;D=c[d+12>>2]|0;A=c[d+16>>2]|0;y=c[d+20>>2]|0;w=c[d+24>>2]|0;u=c[d+28>>2]|0;k=c[d+32>>2]|0;t=c[d+36>>2]|0;Oc=J*19|0;bc=F*19|0;rb=D*19|0;Ha=A*19|0;jc=y*19|0;Db=w*19|0;Ta=u*19|0;Sc=k*19|0;Qc=t*19|0;p=s<<1;f=Rb<<1;M=za<<1;i=zb<<1;d=ga<<1;o=((l|0)<0)<<31>>31;I=((H|0)<0)<<31>>31;Mc=vf(H|0,I|0,l|0,o|0)|0;Lc=C;K=((J|0)<0)<<31>>31;wc=vf(J|0,K|0,l|0,o|0)|0;vc=C;G=((F|0)<0)<<31>>31;ub=vf(F|0,G|0,l|0,o|0)|0;tb=C;E=((D|0)<0)<<31>>31;Ka=vf(D|0,E|0,l|0,o|0)|0;Ja=C;B=((A|0)<0)<<31>>31;mc=vf(A|0,B|0,l|0,o|0)|0;lc=C;z=((y|0)<0)<<31>>31;Gb=vf(y|0,z|0,l|0,o|0)|0;Fb=C;x=((w|0)<0)<<31>>31;Wa=vf(w|0,x|0,l|0,o|0)|0;Va=C;v=((u|0)<0)<<31>>31;ja=vf(u|0,v|0,l|0,o|0)|0;ia=C;Pc=((k|0)<0)<<31>>31;P=vf(k|0,Pc|0,l|0,o|0)|0;O=C;o=vf(t|0,((t|0)<0)<<31>>31|0,l|0,o|0)|0;l=C;t=((s|0)<0)<<31>>31;dc=vf(H|0,I|0,s|0,t|0)|0;ec=C;n=((p|0)<0)<<31>>31;yb=vf(J|0,K|0,p|0,n|0)|0;xb=C;Ma=vf(F|0,G|0,s|0,t|0)|0;La=C;oc=vf(D|0,E|0,p|0,n|0)|0;nc=C;Ib=vf(A|0,B|0,s|0,t|0)|0;Hb=C;Ya=vf(y|0,z|0,p|0,n|0)|0;Xa=C;la=vf(w|0,x|0,s|0,t|0)|0;ka=C;R=vf(u|0,v|0,p|0,n|0)|0;Q=C;t=vf(k|0,Pc|0,s|0,t|0)|0;s=C;Pc=((Qc|0)<0)<<31>>31;n=vf(Qc|0,Pc|0,p|0,n|0)|0;p=C;k=((j|0)<0)<<31>>31;wb=vf(H|0,I|0,j|0,k|0)|0;vb=C;Qa=vf(J|0,K|0,j|0,k|0)|0;Pa=C;qc=vf(F|0,G|0,j|0,k|0)|0;pc=C;Kb=vf(D|0,E|0,j|0,k|0)|0;Jb=C;_a=vf(A|0,B|0,j|0,k|0)|0;Za=C;na=vf(y|0,z|0,j|0,k|0)|0;ma=C;T=vf(w|0,x|0,j|0,k|0)|0;S=C;v=vf(u|0,v|0,j|0,k|0)|0;u=C;Rc=((Sc|0)<0)<<31>>31;yc=vf(Sc|0,Rc|0,j|0,k|0)|0;xc=C;k=vf(Qc|0,Pc|0,j|0,k|0)|0;j=C;Sb=((Rb|0)<0)<<31>>31;Oa=vf(H|0,I|0,Rb|0,Sb|0)|0;Na=C;fa=((f|0)<0)<<31>>31;uc=vf(J|0,K|0,f|0,fa|0)|0;tc=C;Mb=vf(F|0,G|0,Rb|0,Sb|0)|0;Lb=C;ab=vf(D|0,E|0,f|0,fa|0)|0;$a=C;pa=vf(A|0,B|0,Rb|0,Sb|0)|0;oa=C;V=vf(y|0,z|0,f|0,fa|0)|0;U=C;x=vf(w|0,x|0,Rb|0,Sb|0)|0;w=C;Ua=((Ta|0)<0)<<31>>31;Ac=vf(Ta|0,Ua|0,f|0,fa|0)|0;zc=C;Sb=vf(Sc|0,Rc|0,Rb|0,Sb|0)|0;Rb=C;fa=vf(Qc|0,Pc|0,f|0,fa|0)|0;f=C;N=((e|0)<0)<<31>>31;sc=vf(H|0,I|0,e|0,N|0)|0;rc=C;Qb=vf(J|0,K|0,e|0,N|0)|0;Pb=C;cb=vf(F|0,G|0,e|0,N|0)|0;bb=C;ra=vf(D|0,E|0,e|0,N|0)|0;qa=C;X=vf(A|0,B|0,e|0,N|0)|0;W=C;z=vf(y|0,z|0,e|0,N|0)|0;y=C;Eb=((Db|0)<0)<<31>>31;Cc=vf(Db|0,Eb|0,e|0,N|0)|0;Bc=C;Ub=vf(Ta|0,Ua|0,e|0,N|0)|0;Tb=C;ib=vf(Sc|0,Rc|0,e|0,N|0)|0;hb=C;N=vf(Qc|0,Pc|0,e|0,N|0)|0;e=C;Aa=((za|0)<0)<<31>>31;Ob=vf(H|0,I|0,za|0,Aa|0)|0;Nb=C;b=((M|0)<0)<<31>>31;gb=vf(J|0,K|0,M|0,b|0)|0;fb=C;ta=vf(F|0,G|0,za|0,Aa|0)|0;sa=C;Z=vf(D|0,E|0,M|0,b|0)|0;Y=C;B=vf(A|0,B|0,za|0,Aa|0)|0;A=C;kc=((jc|0)<0)<<31>>31;Ec=vf(jc|0,kc|0,M|0,b|0)|0;Dc=C;Wb=vf(Db|0,Eb|0,za|0,Aa|0)|0;Vb=C;kb=vf(Ta|0,Ua|0,M|0,b|0)|0;jb=C;Aa=vf(Sc|0,Rc|0,za|0,Aa|0)|0;za=C;b=vf(Qc|0,Pc|0,M|0,b|0)|0;M=C;g=((ya|0)<0)<<31>>31;eb=vf(H|0,I|0,ya|0,g|0)|0;db=C;xa=vf(J|0,K|0,ya|0,g|0)|0;wa=C;$=vf(F|0,G|0,ya|0,g|0)|0;_=C;E=vf(D|0,E|0,ya|0,g|0)|0;D=C;Ia=((Ha|0)<0)<<31>>31;Gc=vf(Ha|0,Ia|0,ya|0,g|0)|0;Fc=C;Yb=vf(jc|0,kc|0,ya|0,g|0)|0;Xb=C;mb=vf(Db|0,Eb|0,ya|0,g|0)|0;lb=C;Ca=vf(Ta|0,Ua|0,ya|0,g|0)|0;Ba=C;m=vf(Sc|0,Rc|0,ya|0,g|0)|0;r=C;g=vf(Qc|0,Pc|0,ya|0,g|0)|0;ya=C;Ab=((zb|0)<0)<<31>>31;va=vf(H|0,I|0,zb|0,Ab|0)|0;ua=C;ea=((i|0)<0)<<31>>31;da=vf(J|0,K|0,i|0,ea|0)|0;ca=C;G=vf(F|0,G|0,zb|0,Ab|0)|0;F=C;sb=((rb|0)<0)<<31>>31;Ic=vf(rb|0,sb|0,i|0,ea|0)|0;Hc=C;_b=vf(Ha|0,Ia|0,zb|0,Ab|0)|0;Zb=C;ob=vf(jc|0,kc|0,i|0,ea|0)|0;nb=C;Ea=vf(Db|0,Eb|0,zb|0,Ab|0)|0;Da=C;gc=vf(Ta|0,Ua|0,i|0,ea|0)|0;fc=C;Ab=vf(Sc|0,Rc|0,zb|0,Ab|0)|0;zb=C;ea=vf(Qc|0,Pc|0,i|0,ea|0)|0;i=C;L=((h|0)<0)<<31>>31;ba=vf(H|0,I|0,h|0,L|0)|0;aa=C;K=vf(J|0,K|0,h|0,L|0)|0;J=C;cc=((bc|0)<0)<<31>>31;Kc=vf(bc|0,cc|0,h|0,L|0)|0;Jc=C;ac=vf(rb|0,sb|0,h|0,L|0)|0;$b=C;qb=vf(Ha|0,Ia|0,h|0,L|0)|0;pb=C;Ga=vf(jc|0,kc|0,h|0,L|0)|0;Fa=C;ic=vf(Db|0,Eb|0,h|0,L|0)|0;hc=C;Cb=vf(Ta|0,Ua|0,h|0,L|0)|0;Bb=C;Sa=vf(Sc|0,Rc|0,h|0,L|0)|0;Ra=C;L=vf(Qc|0,Pc|0,h|0,L|0)|0;h=C;ha=((ga|0)<0)<<31>>31;I=vf(H|0,I|0,ga|0,ha|0)|0;H=C;q=((d|0)<0)<<31>>31;Oc=vf(Oc|0,((Oc|0)<0)<<31>>31|0,d|0,q|0)|0;Nc=C;cc=vf(bc|0,cc|0,ga|0,ha|0)|0;bc=C;sb=vf(rb|0,sb|0,d|0,q|0)|0;rb=C;Ia=vf(Ha|0,Ia|0,ga|0,ha|0)|0;Ha=C;kc=vf(jc|0,kc|0,d|0,q|0)|0;jc=C;Eb=vf(Db|0,Eb|0,ga|0,ha|0)|0;Db=C;Ua=vf(Ta|0,Ua|0,d|0,q|0)|0;Ta=C;ha=vf(Sc|0,Rc|0,ga|0,ha|0)|0;ga=C;q=vf(Qc|0,Pc|0,d|0,q|0)|0;d=C;Lc=lf(Oc|0,Nc|0,Mc|0,Lc|0)|0;Jc=lf(Lc|0,C|0,Kc|0,Jc|0)|0;Hc=lf(Jc|0,C|0,Ic|0,Hc|0)|0;Fc=lf(Hc|0,C|0,Gc|0,Fc|0)|0;Dc=lf(Fc|0,C|0,Ec|0,Dc|0)|0;Bc=lf(Dc|0,C|0,Cc|0,Bc|0)|0;zc=lf(Bc|0,C|0,Ac|0,zc|0)|0;xc=lf(zc|0,C|0,yc|0,xc|0)|0;p=lf(xc|0,C|0,n|0,p|0)|0;n=C;ec=lf(wc|0,vc|0,dc|0,ec|0)|0;dc=C;rc=lf(uc|0,tc|0,sc|0,rc|0)|0;pc=lf(rc|0,C|0,qc|0,pc|0)|0;nc=lf(pc|0,C|0,oc|0,nc|0)|0;lc=lf(nc|0,C|0,mc|0,lc|0)|0;jc=lf(lc|0,C|0,kc|0,jc|0)|0;hc=lf(jc|0,C|0,ic|0,hc|0)|0;fc=lf(hc|0,C|0,gc|0,fc|0)|0;r=lf(fc|0,C|0,m|0,r|0)|0;M=lf(r|0,C|0,b|0,M|0)|0;b=C;r=lf(p|0,n|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;m=C;bc=lf(ec|0,dc|0,cc|0,bc|0)|0;$b=lf(bc|0,C|0,ac|0,$b|0)|0;Zb=lf($b|0,C|0,_b|0,Zb|0)|0;Xb=lf(Zb|0,C|0,Yb|0,Xb|0)|0;Vb=lf(Xb|0,C|0,Wb|0,Vb|0)|0;Tb=lf(Vb|0,C|0,Ub|0,Tb|0)|0;Rb=lf(Tb|0,C|0,Sb|0,Rb|0)|0;j=lf(Rb|0,C|0,k|0,j|0)|0;j=lf(j|0,C|0,r|0,m|0)|0;k=C;m=pf(r|0,m|0,26)|0;m=kf(p|0,n|0,m|0,C|0)|0;n=C;p=lf(M|0,b|0,33554432,0)|0;p=mf(p|0,C|0,26)|0;r=C;Nb=lf(Qb|0,Pb|0,Ob|0,Nb|0)|0;Lb=lf(Nb|0,C|0,Mb|0,Lb|0)|0;Jb=lf(Lb|0,C|0,Kb|0,Jb|0)|0;Hb=lf(Jb|0,C|0,Ib|0,Hb|0)|0;Fb=lf(Hb|0,C|0,Gb|0,Fb|0)|0;Db=lf(Fb|0,C|0,Eb|0,Db|0)|0;Bb=lf(Db|0,C|0,Cb|0,Bb|0)|0;zb=lf(Bb|0,C|0,Ab|0,zb|0)|0;ya=lf(zb|0,C|0,g|0,ya|0)|0;ya=lf(ya|0,C|0,p|0,r|0)|0;g=C;r=pf(p|0,r|0,26)|0;r=kf(M|0,b|0,r|0,C|0)|0;b=C;M=lf(j|0,k|0,16777216,0)|0;M=mf(M|0,C|0,25)|0;p=C;vb=lf(yb|0,xb|0,wb|0,vb|0)|0;tb=lf(vb|0,C|0,ub|0,tb|0)|0;rb=lf(tb|0,C|0,sb|0,rb|0)|0;pb=lf(rb|0,C|0,qb|0,pb|0)|0;nb=lf(pb|0,C|0,ob|0,nb|0)|0;lb=lf(nb|0,C|0,mb|0,lb|0)|0;jb=lf(lb|0,C|0,kb|0,jb|0)|0;hb=lf(jb|0,C|0,ib|0,hb|0)|0;f=lf(hb|0,C|0,fa|0,f|0)|0;f=lf(f|0,C|0,M|0,p|0)|0;fa=C;p=pf(M|0,p|0,25)|0;p=kf(j|0,k|0,p|0,C|0)|0;k=C;j=lf(ya|0,g|0,16777216,0)|0;j=mf(j|0,C|0,25)|0;M=C;db=lf(gb|0,fb|0,eb|0,db|0)|0;bb=lf(db|0,C|0,cb|0,bb|0)|0;$a=lf(bb|0,C|0,ab|0,$a|0)|0;Za=lf($a|0,C|0,_a|0,Za|0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;Va=lf(Xa|0,C|0,Wa|0,Va|0)|0;Ta=lf(Va|0,C|0,Ua|0,Ta|0)|0;Ra=lf(Ta|0,C|0,Sa|0,Ra|0)|0;i=lf(Ra|0,C|0,ea|0,i|0)|0;i=lf(i|0,C|0,j|0,M|0)|0;ea=C;M=pf(j|0,M|0,25)|0;M=kf(ya|0,g|0,M|0,C|0)|0;g=C;ya=lf(f|0,fa|0,33554432,0)|0;ya=mf(ya|0,C|0,26)|0;j=C;Na=lf(Qa|0,Pa|0,Oa|0,Na|0)|0;La=lf(Na|0,C|0,Ma|0,La|0)|0;Ja=lf(La|0,C|0,Ka|0,Ja|0)|0;Ha=lf(Ja|0,C|0,Ia|0,Ha|0)|0;Fa=lf(Ha|0,C|0,Ga|0,Fa|0)|0;Da=lf(Fa|0,C|0,Ea|0,Da|0)|0;Ba=lf(Da|0,C|0,Ca|0,Ba|0)|0;za=lf(Ba|0,C|0,Aa|0,za|0)|0;e=lf(za|0,C|0,N|0,e|0)|0;e=lf(e|0,C|0,ya|0,j|0)|0;N=C;j=pf(ya|0,j|0,26)|0;j=kf(f|0,fa|0,j|0,C|0)|0;fa=lf(i|0,ea|0,33554432,0)|0;fa=mf(fa|0,C|0,26)|0;f=C;ua=lf(xa|0,wa|0,va|0,ua|0)|0;sa=lf(ua|0,C|0,ta|0,sa|0)|0;qa=lf(sa|0,C|0,ra|0,qa|0)|0;oa=lf(qa|0,C|0,pa|0,oa|0)|0;ma=lf(oa|0,C|0,na|0,ma|0)|0;ka=lf(ma|0,C|0,la|0,ka|0)|0;ia=lf(ka|0,C|0,ja|0,ia|0)|0;ga=lf(ia|0,C|0,ha|0,ga|0)|0;h=lf(ga|0,C|0,L|0,h|0)|0;h=lf(h|0,C|0,fa|0,f|0)|0;L=C;f=pf(fa|0,f|0,26)|0;f=kf(i|0,ea|0,f|0,C|0)|0;ea=lf(e|0,N|0,16777216,0)|0;ea=mf(ea|0,C|0,25)|0;i=C;b=lf(ea|0,i|0,r|0,b|0)|0;r=C;i=pf(ea|0,i|0,25)|0;i=kf(e|0,N|0,i|0,C|0)|0;N=lf(h|0,L|0,16777216,0)|0;N=mf(N|0,C|0,25)|0;e=C;aa=lf(da|0,ca|0,ba|0,aa|0)|0;_=lf(aa|0,C|0,$|0,_|0)|0;Y=lf(_|0,C|0,Z|0,Y|0)|0;W=lf(Y|0,C|0,X|0,W|0)|0;U=lf(W|0,C|0,V|0,U|0)|0;S=lf(U|0,C|0,T|0,S|0)|0;Q=lf(S|0,C|0,R|0,Q|0)|0;O=lf(Q|0,C|0,P|0,O|0)|0;d=lf(O|0,C|0,q|0,d|0)|0;d=lf(d|0,C|0,N|0,e|0)|0;q=C;e=pf(N|0,e|0,25)|0;e=kf(h|0,L|0,e|0,C|0)|0;L=lf(b|0,r|0,33554432,0)|0;L=mf(L|0,C|0,26)|0;h=C;g=lf(M|0,g|0,L|0,h|0)|0;h=pf(L|0,h|0,26)|0;h=kf(b|0,r|0,h|0,C|0)|0;r=lf(d|0,q|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;b=C;H=lf(K|0,J|0,I|0,H|0)|0;F=lf(H|0,C|0,G|0,F|0)|0;D=lf(F|0,C|0,E|0,D|0)|0;A=lf(D|0,C|0,B|0,A|0)|0;y=lf(A|0,C|0,z|0,y|0)|0;w=lf(y|0,C|0,x|0,w|0)|0;u=lf(w|0,C|0,v|0,u|0)|0;s=lf(u|0,C|0,t|0,s|0)|0;l=lf(s|0,C|0,o|0,l|0)|0;l=lf(l|0,C|0,r|0,b|0)|0;o=C;b=pf(r|0,b|0,26)|0;b=kf(d|0,q|0,b|0,C|0)|0;q=lf(l|0,o|0,16777216,0)|0;q=mf(q|0,C|0,25)|0;d=C;r=vf(q|0,d|0,19,0)|0;n=lf(r|0,C|0,m|0,n|0)|0;m=C;d=pf(q|0,d|0,25)|0;d=kf(l|0,o|0,d|0,C|0)|0;o=lf(n|0,m|0,33554432,0)|0;o=mf(o|0,C|0,26)|0;l=C;k=lf(p|0,k|0,o|0,l|0)|0;l=pf(o|0,l|0,26)|0;l=kf(n|0,m|0,l|0,C|0)|0;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=j;c[a+12>>2]=i;c[a+16>>2]=h;c[a+20>>2]=g;c[a+24>>2]=f;c[a+28>>2]=e;c[a+32>>2]=b;c[a+36>>2]=d;return}function Id(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=c[d>>2]|0;l=c[d+4>>2]|0;k=c[d+8>>2]|0;j=c[d+12>>2]|0;i=c[d+16>>2]|0;h=c[d+20>>2]|0;g=c[d+24>>2]|0;f=c[d+28>>2]|0;o=c[d+32>>2]|0;e=c[d+36>>2]|0;m=(((((((((((((e*19|0)+16777216>>25)+m>>26)+l>>25)+k>>26)+j>>25)+i>>26)+h>>25)+g>>26)+f>>25)+o>>26)+e>>25)*19|0)+m|0;n=m>>26;l=n+l|0;n=m-(n<<26)|0;m=l>>25;k=m+k|0;m=l-(m<<25)|0;l=k>>26;j=l+j|0;l=k-(l<<26)|0;k=j>>25;i=k+i|0;k=j-(k<<25)|0;j=i>>26;h=j+h|0;j=i-(j<<26)|0;i=h>>25;g=i+g|0;i=h-(i<<25)|0;h=g>>26;f=h+f|0;h=g-(h<<26)|0;g=f>>25;d=g+o|0;g=f-(g<<25)|0;f=d>>26;e=f+e|0;f=d-(f<<26)|0;d=e&33554431;a[b>>0]=n;a[b+1>>0]=n>>>8;a[b+2>>0]=n>>>16;a[b+3>>0]=m<<2|n>>>24;a[b+4>>0]=m>>>6;a[b+5>>0]=m>>>14;a[b+6>>0]=l<<3|m>>>22;a[b+7>>0]=l>>>5;a[b+8>>0]=l>>>13;a[b+9>>0]=k<<5|l>>>21;a[b+10>>0]=k>>>3;a[b+11>>0]=k>>>11;a[b+12>>0]=j<<6|k>>>19;a[b+13>>0]=j>>>2;a[b+14>>0]=j>>>10;a[b+15>>0]=j>>>18;a[b+16>>0]=i;a[b+17>>0]=i>>>8;a[b+18>>0]=i>>>16;a[b+19>>0]=h<<1|i>>>24;a[b+20>>0]=h>>>7;a[b+21>>0]=h>>>15;a[b+22>>0]=g<<3|h>>>23;a[b+23>>0]=g>>>5;a[b+24>>0]=g>>>13;a[b+25>>0]=f<<4|g>>>21;a[b+26>>0]=f>>>4;a[b+27>>0]=f>>>12;a[b+28>>0]=f>>>20|d<<6;a[b+29>>0]=e>>>2;a[b+30>>0]=e>>>10;a[b+31>>0]=d>>>18;return}function Jd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=i;i=i+128|0;e=g+80|0;f=g+40|0;d=g;Gd(e,b);Gd(f,e);Gd(f,f);Hd(f,b,f);Hd(e,e,f);Gd(e,e);Hd(e,f,e);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(f,f,e);Gd(d,f);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Gd(d,d);Hd(f,d,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Gd(f,f);Hd(e,f,e);Gd(f,e);c=1;do{Gd(f,f);c=c+1|0}while((c|0)!=50);Hd(f,f,e);Gd(d,f);c=1;do{Gd(d,d);c=c+1|0}while((c|0)!=100);Hd(f,d,f);Gd(f,f);c=1;do{Gd(f,f);c=c+1|0}while((c|0)!=50);Hd(e,f,e);Gd(e,e);Gd(e,e);Hd(a,e,b);i=g;return}function Kd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;bb=c[b>>2]|0;La=c[b+4>>2]|0;j=c[b+8>>2]|0;da=c[b+12>>2]|0;e=c[b+16>>2]|0;db=c[b+20>>2]|0;x=c[b+24>>2]|0;pa=c[b+28>>2]|0;h=c[b+32>>2]|0;b=c[b+36>>2]|0;l=bb<<1;n=La<<1;Xa=j<<1;f=da<<1;Fa=e<<1;d=db<<1;oa=x<<1;i=pa<<1;Wa=db*38|0;Ja=x*19|0;fa=pa*38|0;X=h*19|0;gb=b*38|0;cb=((bb|0)<0)<<31>>31;cb=vf(bb|0,cb|0,bb|0,cb|0)|0;bb=C;o=((l|0)<0)<<31>>31;Ma=((La|0)<0)<<31>>31;Ua=vf(l|0,o|0,La|0,Ma|0)|0;Ta=C;k=((j|0)<0)<<31>>31;Oa=vf(j|0,k|0,l|0,o|0)|0;Na=C;ea=((da|0)<0)<<31>>31;Ea=vf(da|0,ea|0,l|0,o|0)|0;Da=C;u=((e|0)<0)<<31>>31;sa=vf(e|0,u|0,l|0,o|0)|0;ra=C;eb=((db|0)<0)<<31>>31;ia=vf(db|0,eb|0,l|0,o|0)|0;ha=C;g=((x|0)<0)<<31>>31;_=vf(x|0,g|0,l|0,o|0)|0;Z=C;qa=((pa|0)<0)<<31>>31;Q=vf(pa|0,qa|0,l|0,o|0)|0;P=C;s=((h|0)<0)<<31>>31;G=vf(h|0,s|0,l|0,o|0)|0;F=C;q=((b|0)<0)<<31>>31;o=vf(b|0,q|0,l|0,o|0)|0;l=C;p=((n|0)<0)<<31>>31;Ma=vf(n|0,p|0,La|0,Ma|0)|0;La=C;Ca=vf(n|0,p|0,j|0,k|0)|0;Ba=C;w=((f|0)<0)<<31>>31;wa=vf(f|0,w|0,n|0,p|0)|0;va=C;ma=vf(e|0,u|0,n|0,p|0)|0;la=C;t=((d|0)<0)<<31>>31;aa=vf(d|0,t|0,n|0,p|0)|0;$=C;S=vf(x|0,g|0,n|0,p|0)|0;R=C;v=((i|0)<0)<<31>>31;I=vf(i|0,v|0,n|0,p|0)|0;H=C;m=vf(h|0,s|0,n|0,p|0)|0;r=C;fb=((gb|0)<0)<<31>>31;p=vf(gb|0,fb|0,n|0,p|0)|0;n=C;ua=vf(j|0,k|0,j|0,k|0)|0;ta=C;Ya=((Xa|0)<0)<<31>>31;ka=vf(Xa|0,Ya|0,da|0,ea|0)|0;ja=C;ca=vf(e|0,u|0,Xa|0,Ya|0)|0;ba=C;W=vf(db|0,eb|0,Xa|0,Ya|0)|0;V=C;O=vf(x|0,g|0,Xa|0,Ya|0)|0;N=C;z=vf(pa|0,qa|0,Xa|0,Ya|0)|0;y=C;Y=((X|0)<0)<<31>>31;Ya=vf(X|0,Y|0,Xa|0,Ya|0)|0;Xa=C;k=vf(gb|0,fb|0,j|0,k|0)|0;j=C;ea=vf(f|0,w|0,da|0,ea|0)|0;da=C;U=vf(f|0,w|0,e|0,u|0)|0;T=C;K=vf(d|0,t|0,f|0,w|0)|0;J=C;E=vf(x|0,g|0,f|0,w|0)|0;D=C;ga=((fa|0)<0)<<31>>31;_a=vf(fa|0,ga|0,f|0,w|0)|0;Za=C;Qa=vf(X|0,Y|0,f|0,w|0)|0;Pa=C;w=vf(gb|0,fb|0,f|0,w|0)|0;f=C;M=vf(e|0,u|0,e|0,u|0)|0;L=C;Ga=((Fa|0)<0)<<31>>31;B=vf(Fa|0,Ga|0,db|0,eb|0)|0;A=C;Ka=((Ja|0)<0)<<31>>31;ab=vf(Ja|0,Ka|0,Fa|0,Ga|0)|0;$a=C;Sa=vf(fa|0,ga|0,e|0,u|0)|0;Ra=C;Ga=vf(X|0,Y|0,Fa|0,Ga|0)|0;Fa=C;u=vf(gb|0,fb|0,e|0,u|0)|0;e=C;eb=vf(Wa|0,((Wa|0)<0)<<31>>31|0,db|0,eb|0)|0;db=C;Wa=vf(Ja|0,Ka|0,d|0,t|0)|0;Va=C;Ia=vf(fa|0,ga|0,d|0,t|0)|0;Ha=C;ya=vf(X|0,Y|0,d|0,t|0)|0;xa=C;t=vf(gb|0,fb|0,d|0,t|0)|0;d=C;Ka=vf(Ja|0,Ka|0,x|0,g|0)|0;Ja=C;Aa=vf(fa|0,ga|0,x|0,g|0)|0;za=C;oa=vf(X|0,Y|0,oa|0,((oa|0)<0)<<31>>31|0)|0;na=C;g=vf(gb|0,fb|0,x|0,g|0)|0;x=C;qa=vf(fa|0,ga|0,pa|0,qa|0)|0;pa=C;ga=vf(X|0,Y|0,i|0,v|0)|0;fa=C;v=vf(gb|0,fb|0,i|0,v|0)|0;i=C;Y=vf(X|0,Y|0,h|0,s|0)|0;X=C;s=vf(gb|0,fb|0,h|0,s|0)|0;h=C;q=vf(gb|0,fb|0,b|0,q|0)|0;b=C;bb=lf(eb|0,db|0,cb|0,bb|0)|0;$a=lf(bb|0,C|0,ab|0,$a|0)|0;Za=lf($a|0,C|0,_a|0,Za|0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;n=lf(Xa|0,C|0,p|0,n|0)|0;p=C;Ta=lf(Wa|0,Va|0,Ua|0,Ta|0)|0;Ra=lf(Ta|0,C|0,Sa|0,Ra|0)|0;Pa=lf(Ra|0,C|0,Qa|0,Pa|0)|0;j=lf(Pa|0,C|0,k|0,j|0)|0;k=C;La=lf(Oa|0,Na|0,Ma|0,La|0)|0;Ja=lf(La|0,C|0,Ka|0,Ja|0)|0;Ha=lf(Ja|0,C|0,Ia|0,Ha|0)|0;Fa=lf(Ha|0,C|0,Ga|0,Fa|0)|0;f=lf(Fa|0,C|0,w|0,f|0)|0;w=C;Ba=lf(Ea|0,Da|0,Ca|0,Ba|0)|0;za=lf(Ba|0,C|0,Aa|0,za|0)|0;xa=lf(za|0,C|0,ya|0,xa|0)|0;e=lf(xa|0,C|0,u|0,e|0)|0;u=C;ta=lf(wa|0,va|0,ua|0,ta|0)|0;ra=lf(ta|0,C|0,sa|0,ra|0)|0;pa=lf(ra|0,C|0,qa|0,pa|0)|0;na=lf(pa|0,C|0,oa|0,na|0)|0;d=lf(na|0,C|0,t|0,d|0)|0;t=C;ja=lf(ma|0,la|0,ka|0,ja|0)|0;ha=lf(ja|0,C|0,ia|0,ha|0)|0;fa=lf(ha|0,C|0,ga|0,fa|0)|0;x=lf(fa|0,C|0,g|0,x|0)|0;g=C;ba=lf(ea|0,da|0,ca|0,ba|0)|0;$=lf(ba|0,C|0,aa|0,$|0)|0;Z=lf($|0,C|0,_|0,Z|0)|0;X=lf(Z|0,C|0,Y|0,X|0)|0;i=lf(X|0,C|0,v|0,i|0)|0;v=C;T=lf(W|0,V|0,U|0,T|0)|0;R=lf(T|0,C|0,S|0,R|0)|0;P=lf(R|0,C|0,Q|0,P|0)|0;h=lf(P|0,C|0,s|0,h|0)|0;s=C;L=lf(O|0,N|0,M|0,L|0)|0;J=lf(L|0,C|0,K|0,J|0)|0;H=lf(J|0,C|0,I|0,H|0)|0;F=lf(H|0,C|0,G|0,F|0)|0;b=lf(F|0,C|0,q|0,b|0)|0;q=C;A=lf(E|0,D|0,B|0,A|0)|0;y=lf(A|0,C|0,z|0,y|0)|0;r=lf(y|0,C|0,m|0,r|0)|0;l=lf(r|0,C|0,o|0,l|0)|0;o=C;p=pf(n|0,p|0,1)|0;n=C;k=pf(j|0,k|0,1)|0;j=C;w=pf(f|0,w|0,1)|0;f=C;u=pf(e|0,u|0,1)|0;e=C;t=pf(d|0,t|0,1)|0;d=C;g=pf(x|0,g|0,1)|0;x=C;v=pf(i|0,v|0,1)|0;i=C;s=pf(h|0,s|0,1)|0;h=C;q=pf(b|0,q|0,1)|0;b=C;o=pf(l|0,o|0,1)|0;l=C;r=lf(p|0,n|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;m=C;j=lf(r|0,m|0,k|0,j|0)|0;k=C;m=pf(r|0,m|0,26)|0;m=kf(p|0,n|0,m|0,C|0)|0;n=C;p=lf(t|0,d|0,33554432,0)|0;p=mf(p|0,C|0,26)|0;r=C;x=lf(p|0,r|0,g|0,x|0)|0;g=C;r=pf(p|0,r|0,26)|0;r=kf(t|0,d|0,r|0,C|0)|0;d=C;t=lf(j|0,k|0,16777216,0)|0;t=mf(t|0,C|0,25)|0;p=C;f=lf(t|0,p|0,w|0,f|0)|0;w=C;p=pf(t|0,p|0,25)|0;p=kf(j|0,k|0,p|0,C|0)|0;k=C;j=lf(x|0,g|0,16777216,0)|0;j=mf(j|0,C|0,25)|0;t=C;i=lf(j|0,t|0,v|0,i|0)|0;v=C;t=pf(j|0,t|0,25)|0;t=kf(x|0,g|0,t|0,C|0)|0;g=C;x=lf(f|0,w|0,33554432,0)|0;x=mf(x|0,C|0,26)|0;j=C;e=lf(x|0,j|0,u|0,e|0)|0;u=C;j=pf(x|0,j|0,26)|0;j=kf(f|0,w|0,j|0,C|0)|0;w=lf(i|0,v|0,33554432,0)|0;w=mf(w|0,C|0,26)|0;f=C;h=lf(w|0,f|0,s|0,h|0)|0;s=C;f=pf(w|0,f|0,26)|0;f=kf(i|0,v|0,f|0,C|0)|0;v=lf(e|0,u|0,16777216,0)|0;v=mf(v|0,C|0,25)|0;i=C;d=lf(v|0,i|0,r|0,d|0)|0;r=C;i=pf(v|0,i|0,25)|0;i=kf(e|0,u|0,i|0,C|0)|0;u=lf(h|0,s|0,16777216,0)|0;u=mf(u|0,C|0,25)|0;e=C;b=lf(u|0,e|0,q|0,b|0)|0;q=C;e=pf(u|0,e|0,25)|0;e=kf(h|0,s|0,e|0,C|0)|0;s=lf(d|0,r|0,33554432,0)|0;s=mf(s|0,C|0,26)|0;h=C;g=lf(t|0,g|0,s|0,h|0)|0;h=pf(s|0,h|0,26)|0;h=kf(d|0,r|0,h|0,C|0)|0;r=lf(b|0,q|0,33554432,0)|0;r=mf(r|0,C|0,26)|0;d=C;l=lf(r|0,d|0,o|0,l|0)|0;o=C;d=pf(r|0,d|0,26)|0;d=kf(b|0,q|0,d|0,C|0)|0;q=lf(l|0,o|0,16777216,0)|0;q=mf(q|0,C|0,25)|0;b=C;r=vf(q|0,b|0,19,0)|0;n=lf(r|0,C|0,m|0,n|0)|0;m=C;b=pf(q|0,b|0,25)|0;b=kf(l|0,o|0,b|0,C|0)|0;o=lf(n|0,m|0,33554432,0)|0;o=mf(o|0,C|0,26)|0;l=C;k=lf(p|0,k|0,o|0,l|0)|0;l=pf(o|0,l|0,26)|0;l=kf(n|0,m|0,l|0,C|0)|0;c[a>>2]=l;c[a+4>>2]=k;c[a+8>>2]=j;c[a+12>>2]=i;c[a+16>>2]=h;c[a+20>>2]=g;c[a+24>>2]=f;c[a+28>>2]=e;c[a+32>>2]=d;c[a+36>>2]=b;return}function Ld(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0;ea=b+1|0;ba=b+2|0;D=a[ba>>0]|0;f=d[b>>0]|0;n=pf(d[ea>>0]|0|0,0,8)|0;va=C;D=D&255;V=pf(D|0,0,16)|0;aa=b+3|0;y=pf(d[aa>>0]|0|0,0,8)|0;ga=C;$=b+4|0;U=pf(d[$>>0]|0|0,0,16)|0;ga=ga|C;Y=b+5|0;N=d[Y>>0]|0;X=pf(N|0,0,24)|0;ga=of(y|D|U|X|0,ga|C|0,5)|0;X=b+6|0;U=b+7|0;D=a[U>>0]|0;y=pf(d[X>>0]|0|0,0,8)|0;Ba=C;D=D&255;T=pf(D|0,0,16)|0;Ba=of(y|N|T|0,Ba|C|0,2)|0;T=b+8|0;N=pf(d[T>>0]|0|0,0,8)|0;y=C;S=b+9|0;Ca=pf(d[S>>0]|0|0,0,16)|0;y=y|C;P=b+10|0;Sa=d[P>>0]|0;O=pf(Sa|0,0,24)|0;y=of(N|D|Ca|O|0,y|C|0,7)|0;O=b+11|0;Ca=pf(d[O>>0]|0|0,0,8)|0;D=C;N=b+12|0;G=pf(d[N>>0]|0|0,0,16)|0;D=D|C;K=b+13|0;u=d[K>>0]|0;J=pf(u|0,0,24)|0;D=of(Ca|Sa|G|J|0,D|C|0,4)|0;J=b+14|0;G=b+15|0;Sa=a[G>>0]|0;Ca=pf(d[J>>0]|0|0,0,8)|0;Da=C;Sa=Sa&255;F=pf(Sa|0,0,16)|0;Da=of(Ca|u|F|0,Da|C|0,1)|0;F=b+16|0;u=pf(d[F>>0]|0|0,0,8)|0;Ca=C;E=b+17|0;w=pf(d[E>>0]|0|0,0,16)|0;Ca=Ca|C;A=b+18|0;v=d[A>>0]|0;z=pf(v|0,0,24)|0;Ca=of(u|Sa|w|z|0,Ca|C|0,6)|0;z=b+19|0;w=b+20|0;Sa=a[w>>0]|0;u=pf(d[z>>0]|0|0,0,8)|0;Ta=C;Sa=pf(Sa&255|0,0,16)|0;Ta=of(u|v|Sa|0,Ta|C|0,3)|0;Sa=C;v=b+21|0;u=b+22|0;r=b+23|0;na=a[r>>0]|0;ab=d[v>>0]|0;bb=pf(d[u>>0]|0|0,0,8)|0;_a=C;na=na&255;$a=pf(na|0,0,16)|0;q=b+24|0;Ka=pf(d[q>>0]|0|0,0,8)|0;Pa=C;p=b+25|0;i=pf(d[p>>0]|0|0,0,16)|0;Pa=Pa|C;m=b+26|0;xa=d[m>>0]|0;l=pf(xa|0,0,24)|0;Pa=of(Ka|na|i|l|0,Pa|C|0,5)|0;l=b+27|0;i=b+28|0;na=a[i>>0]|0;Ka=pf(d[l>>0]|0|0,0,8)|0;Za=C;na=na&255;h=pf(na|0,0,16)|0;Za=of(Ka|xa|h|0,Za|C|0,2)|0;h=b+29|0;xa=pf(d[h>>0]|0|0,0,8)|0;Ka=C;g=b+30|0;fb=pf(d[g>>0]|0|0,0,16)|0;Ka=Ka|C;c=b+31|0;qa=d[c>>0]|0;oa=pf(qa|0,0,24)|0;Ka=of(xa|na|fb|oa|0,Ka|C|0,7)|0;oa=pf(d[b+32>>0]|0|0,0,8)|0;fb=C;na=pf(d[b+33>>0]|0|0,0,16)|0;fb=fb|C;xa=d[b+34>>0]|0;la=pf(xa|0,0,24)|0;fb=of(oa|qa|na|la|0,fb|C|0,4)|0;la=a[b+36>>0]|0;na=pf(d[b+35>>0]|0|0,0,8)|0;qa=C;la=la&255;oa=pf(la|0,0,16)|0;qa=of(na|xa|oa|0,qa|C|0,1)|0;oa=pf(d[b+37>>0]|0|0,0,8)|0;xa=C;na=pf(d[b+38>>0]|0|0,0,16)|0;xa=xa|C;Ma=d[b+39>>0]|0;fa=pf(Ma|0,0,24)|0;xa=of(oa|la|na|fa|0,xa|C|0,6)|0;fa=a[b+41>>0]|0;na=pf(d[b+40>>0]|0|0,0,8)|0;la=C;fa=pf(fa&255|0,0,16)|0;la=of(na|Ma|fa|0,la|C|0,3)|0;fa=C;Ma=a[b+44>>0]|0;na=d[b+42>>0]|0;oa=pf(d[b+43>>0]|0|0,0,8)|0;j=C;Ma=Ma&255;za=pf(Ma|0,0,16)|0;ja=pf(d[b+45>>0]|0|0,0,8)|0;L=C;W=pf(d[b+46>>0]|0|0,0,16)|0;L=L|C;gb=d[b+47>>0]|0;o=pf(gb|0,0,24)|0;L=of(ja|Ma|W|o|0,L|C|0,5)|0;o=a[b+49>>0]|0;W=pf(d[b+48>>0]|0|0,0,8)|0;Ma=C;o=o&255;ja=pf(o|0,0,16)|0;Ma=of(W|gb|ja|0,Ma|C|0,2)|0;Ma=Ma&2097151;ja=pf(d[b+50>>0]|0|0,0,8)|0;gb=C;W=pf(d[b+51>>0]|0|0,0,16)|0;gb=gb|C;Aa=d[b+52>>0]|0;M=pf(Aa|0,0,24)|0;gb=of(ja|o|W|M|0,gb|C|0,7)|0;gb=gb&2097151;M=pf(d[b+53>>0]|0|0,0,8)|0;W=C;o=pf(d[b+54>>0]|0|0,0,16)|0;W=W|C;ja=d[b+55>>0]|0;R=pf(ja|0,0,24)|0;W=of(M|Aa|o|R|0,W|C|0,4)|0;W=W&2097151;R=a[b+57>>0]|0;o=pf(d[b+56>>0]|0|0,0,8)|0;Aa=C;R=R&255;M=pf(R|0,0,16)|0;Aa=of(o|ja|M|0,Aa|C|0,1)|0;Aa=Aa&2097151;M=pf(d[b+58>>0]|0|0,0,8)|0;ja=C;o=pf(d[b+59>>0]|0|0,0,16)|0;ja=ja|C;ha=d[b+60>>0]|0;Q=pf(ha|0,0,24)|0;ja=of(M|R|o|Q|0,ja|C|0,6)|0;ja=ja&2097151;Q=pf(d[b+61>>0]|0|0,0,8)|0;o=C;R=pf(d[b+62>>0]|0|0,0,16)|0;o=o|C;M=pf(d[b+63>>0]|0|0,0,24)|0;o=of(Q|ha|R|M|0,o|C|0,3)|0;M=C;R=vf(o|0,M|0,666643,0)|0;ha=C;Q=vf(o|0,M|0,470296,0)|0;I=C;ca=vf(o|0,M|0,654183,0)|0;ta=C;Ea=vf(o|0,M|0,-997805,-1)|0;t=C;k=vf(o|0,M|0,136657,0)|0;B=C;M=vf(o|0,M|0,-683901,-1)|0;j=lf(M|0,C|0,oa|na|za&2031616|0,j|0)|0;za=C;na=vf(ja|0,0,666643,0)|0;oa=C;M=vf(ja|0,0,470296,0)|0;o=C;Va=vf(ja|0,0,654183,0)|0;s=C;ma=vf(ja|0,0,-997805,-1)|0;_=C;ya=vf(ja|0,0,136657,0)|0;sa=C;ja=vf(ja|0,0,-683901,-1)|0;H=C;e=vf(Aa|0,0,666643,0)|0;ra=C;wa=vf(Aa|0,0,470296,0)|0;La=C;Fa=vf(Aa|0,0,654183,0)|0;da=C;cb=vf(Aa|0,0,-997805,-1)|0;Ua=C;ka=vf(Aa|0,0,136657,0)|0;x=C;Aa=vf(Aa|0,0,-683901,-1)|0;xa=lf(Aa|0,C|0,xa&2097151|0,0)|0;sa=lf(xa|0,C|0,ya|0,sa|0)|0;t=lf(sa|0,C|0,Ea|0,t|0)|0;Ea=C;sa=vf(W|0,0,666643,0)|0;ya=C;xa=vf(W|0,0,470296,0)|0;Aa=C;Wa=vf(W|0,0,654183,0)|0;Z=C;Ha=vf(W|0,0,-997805,-1)|0;Ga=C;eb=vf(W|0,0,136657,0)|0;db=C;W=vf(W|0,0,-683901,-1)|0;pa=C;ia=vf(gb|0,0,666643,0)|0;ua=C;Qa=vf(gb|0,0,470296,0)|0;Ra=C;Oa=vf(gb|0,0,654183,0)|0;Na=C;Ya=vf(gb|0,0,-997805,-1)|0;Xa=C;Ja=vf(gb|0,0,136657,0)|0;Ia=C;gb=vf(gb|0,0,-683901,-1)|0;fb=lf(gb|0,C|0,fb&2097151|0,0)|0;db=lf(fb|0,C|0,eb|0,db|0)|0;Ua=lf(db|0,C|0,cb|0,Ua|0)|0;s=lf(Ua|0,C|0,Va|0,s|0)|0;I=lf(s|0,C|0,Q|0,I|0)|0;Q=C;s=vf(Ma|0,0,666643,0)|0;Ca=lf(s|0,C|0,Ca&2097151|0,0)|0;s=C;Va=vf(Ma|0,0,470296,0)|0;Ua=C;cb=vf(Ma|0,0,654183,0)|0;_a=lf(cb|0,C|0,bb|ab|$a&2031616|0,_a|0)|0;Ra=lf(_a|0,C|0,Qa|0,Ra|0)|0;ya=lf(Ra|0,C|0,sa|0,ya|0)|0;sa=C;Ra=vf(Ma|0,0,-997805,-1)|0;Qa=C;_a=vf(Ma|0,0,136657,0)|0;Za=lf(_a|0,C|0,Za&2097151|0,0)|0;Xa=lf(Za|0,C|0,Ya|0,Xa|0)|0;Z=lf(Xa|0,C|0,Wa|0,Z|0)|0;La=lf(Z|0,C|0,wa|0,La|0)|0;oa=lf(La|0,C|0,na|0,oa|0)|0;na=C;Ma=vf(Ma|0,0,-683901,-1)|0;La=C;wa=lf(Ca|0,s|0,1048576,0)|0;wa=of(wa|0,C|0,21)|0;Z=C;Sa=lf(Va|0,Ua|0,Ta|0,Sa|0)|0;Sa=lf(Sa|0,C|0,wa|0,Z|0)|0;ua=lf(Sa|0,C|0,ia|0,ua|0)|0;ia=C;Z=pf(wa|0,Z|0,21)|0;Z=kf(Ca|0,s|0,Z|0,C|0)|0;s=C;Ca=lf(ya|0,sa|0,1048576,0)|0;Ca=of(Ca|0,C|0,21)|0;wa=C;Pa=lf(Ra|0,Qa|0,Pa&2097151|0,0)|0;Na=lf(Pa|0,C|0,Oa|0,Na|0)|0;Aa=lf(Na|0,C|0,xa|0,Aa|0)|0;ra=lf(Aa|0,C|0,e|0,ra|0)|0;ra=lf(ra|0,C|0,Ca|0,wa|0)|0;e=C;wa=pf(Ca|0,wa|0,21)|0;Ca=C;Aa=lf(oa|0,na|0,1048576,0)|0;Aa=mf(Aa|0,C|0,21)|0;xa=C;Ka=lf(Ma|0,La|0,Ka&2097151|0,0)|0;Ia=lf(Ka|0,C|0,Ja|0,Ia|0)|0;Ga=lf(Ia|0,C|0,Ha|0,Ga|0)|0;da=lf(Ga|0,C|0,Fa|0,da|0)|0;o=lf(da|0,C|0,M|0,o|0)|0;ha=lf(o|0,C|0,R|0,ha|0)|0;ha=lf(ha|0,C|0,Aa|0,xa|0)|0;R=C;xa=pf(Aa|0,xa|0,21)|0;Aa=C;o=lf(I|0,Q|0,1048576,0)|0;o=mf(o|0,C|0,21)|0;M=C;qa=lf(W|0,pa|0,qa&2097151|0,0)|0;x=lf(qa|0,C|0,ka|0,x|0)|0;_=lf(x|0,C|0,ma|0,_|0)|0;ta=lf(_|0,C|0,ca|0,ta|0)|0;ta=lf(ta|0,C|0,o|0,M|0)|0;ca=C;M=pf(o|0,M|0,21)|0;M=kf(I|0,Q|0,M|0,C|0)|0;Q=C;I=lf(t|0,Ea|0,1048576,0)|0;I=mf(I|0,C|0,21)|0;o=C;fa=lf(ja|0,H|0,la|0,fa|0)|0;B=lf(fa|0,C|0,k|0,B|0)|0;B=lf(B|0,C|0,I|0,o|0)|0;k=C;o=pf(I|0,o|0,21)|0;o=kf(t|0,Ea|0,o|0,C|0)|0;Ea=C;t=lf(j|0,za|0,1048576,0)|0;t=mf(t|0,C|0,21)|0;I=C;L=lf(t|0,I|0,L&2097151|0,0)|0;fa=C;I=pf(t|0,I|0,21)|0;I=kf(j|0,za|0,I|0,C|0)|0;za=C;j=lf(ua|0,ia|0,1048576,0)|0;j=of(j|0,C|0,21)|0;t=C;la=pf(j|0,t|0,21)|0;la=kf(ua|0,ia|0,la|0,C|0)|0;ia=C;ua=lf(ra|0,e|0,1048576,0)|0;ua=mf(ua|0,C|0,21)|0;H=C;ja=pf(ua|0,H|0,21)|0;ja=kf(ra|0,e|0,ja|0,C|0)|0;e=C;ra=lf(ha|0,R|0,1048576,0)|0;ra=mf(ra|0,C|0,21)|0;_=C;Q=lf(M|0,Q|0,ra|0,_|0)|0;M=C;_=pf(ra|0,_|0,21)|0;_=kf(ha|0,R|0,_|0,C|0)|0;R=C;ha=lf(ta|0,ca|0,1048576,0)|0;ha=mf(ha|0,C|0,21)|0;ra=C;Ea=lf(ha|0,ra|0,o|0,Ea|0)|0;o=C;ra=pf(ha|0,ra|0,21)|0;ra=kf(ta|0,ca|0,ra|0,C|0)|0;ca=C;ta=lf(B|0,k|0,1048576,0)|0;ta=mf(ta|0,C|0,21)|0;ha=C;za=lf(ta|0,ha|0,I|0,za|0)|0;I=C;ha=pf(ta|0,ha|0,21)|0;ha=kf(B|0,k|0,ha|0,C|0)|0;k=C;B=vf(L|0,fa|0,666643,0)|0;Da=lf(B|0,C|0,Da&2097151|0,0)|0;B=C;ta=vf(L|0,fa|0,470296,0)|0;ta=lf(Z|0,s|0,ta|0,C|0)|0;s=C;Z=vf(L|0,fa|0,654183,0)|0;Z=lf(la|0,ia|0,Z|0,C|0)|0;ia=C;la=vf(L|0,fa|0,-997805,-1)|0;ma=C;x=vf(L|0,fa|0,136657,0)|0;x=lf(ja|0,e|0,x|0,C|0)|0;e=C;fa=vf(L|0,fa|0,-683901,-1)|0;L=C;H=lf(oa|0,na|0,ua|0,H|0)|0;Aa=kf(H|0,C|0,xa|0,Aa|0)|0;L=lf(Aa|0,C|0,fa|0,L|0)|0;fa=C;Aa=vf(za|0,I|0,666643,0)|0;D=lf(Aa|0,C|0,D&2097151|0,0)|0;Aa=C;xa=vf(za|0,I|0,470296,0)|0;xa=lf(Da|0,B|0,xa|0,C|0)|0;B=C;Da=vf(za|0,I|0,654183,0)|0;Da=lf(ta|0,s|0,Da|0,C|0)|0;s=C;ta=vf(za|0,I|0,-997805,-1)|0;ta=lf(Z|0,ia|0,ta|0,C|0)|0;ia=C;Z=vf(za|0,I|0,136657,0)|0;H=C;I=vf(za|0,I|0,-683901,-1)|0;I=lf(x|0,e|0,I|0,C|0)|0;e=C;x=vf(ha|0,k|0,666643,0)|0;y=lf(x|0,C|0,y&2097151|0,0)|0;x=C;za=vf(ha|0,k|0,470296,0)|0;za=lf(D|0,Aa|0,za|0,C|0)|0;Aa=C;D=vf(ha|0,k|0,654183,0)|0;D=lf(xa|0,B|0,D|0,C|0)|0;B=C;xa=vf(ha|0,k|0,-997805,-1)|0;xa=lf(Da|0,s|0,xa|0,C|0)|0;s=C;Da=vf(ha|0,k|0,136657,0)|0;Da=lf(ta|0,ia|0,Da|0,C|0)|0;ia=C;k=vf(ha|0,k|0,-683901,-1)|0;ha=C;t=lf(ya|0,sa|0,j|0,t|0)|0;Ca=kf(t|0,C|0,wa|0,Ca|0)|0;ma=lf(Ca|0,C|0,la|0,ma|0)|0;H=lf(ma|0,C|0,Z|0,H|0)|0;ha=lf(H|0,C|0,k|0,ha|0)|0;k=C;H=vf(Ea|0,o|0,666643,0)|0;Z=C;ma=vf(Ea|0,o|0,470296,0)|0;la=C;Ca=vf(Ea|0,o|0,654183,0)|0;wa=C;t=vf(Ea|0,o|0,-997805,-1)|0;j=C;sa=vf(Ea|0,o|0,136657,0)|0;sa=lf(xa|0,s|0,sa|0,C|0)|0;s=C;o=vf(Ea|0,o|0,-683901,-1)|0;o=lf(Da|0,ia|0,o|0,C|0)|0;ia=C;Da=vf(ra|0,ca|0,666643,0)|0;Ea=C;xa=vf(ra|0,ca|0,470296,0)|0;ya=C;ta=vf(ra|0,ca|0,654183,0)|0;ua=C;na=vf(ra|0,ca|0,-997805,-1)|0;oa=C;ja=vf(ra|0,ca|0,136657,0)|0;ka=C;ca=vf(ra|0,ca|0,-683901,-1)|0;ca=lf(sa|0,s|0,ca|0,C|0)|0;s=C;sa=vf(Q|0,M|0,666643,0)|0;va=lf(sa|0,C|0,n|f|V&2031616|0,va|0)|0;V=C;f=vf(Q|0,M|0,470296,0)|0;n=C;sa=vf(Q|0,M|0,654183,0)|0;Ba=lf(sa|0,C|0,Ba&2097151|0,0)|0;Z=lf(Ba|0,C|0,H|0,Z|0)|0;ya=lf(Z|0,C|0,xa|0,ya|0)|0;xa=C;Z=vf(Q|0,M|0,-997805,-1)|0;H=C;Ba=vf(Q|0,M|0,136657,0)|0;Ba=lf(za|0,Aa|0,Ba|0,C|0)|0;wa=lf(Ba|0,C|0,Ca|0,wa|0)|0;oa=lf(wa|0,C|0,na|0,oa|0)|0;na=C;M=vf(Q|0,M|0,-683901,-1)|0;Q=C;wa=lf(va|0,V|0,1048576,0)|0;wa=mf(wa|0,C|0,21)|0;Ca=C;ga=lf(f|0,n|0,ga&2097151|0,0)|0;Ea=lf(ga|0,C|0,Da|0,Ea|0)|0;Ea=lf(Ea|0,C|0,wa|0,Ca|0)|0;Da=C;Ca=pf(wa|0,Ca|0,21)|0;Ca=kf(va|0,V|0,Ca|0,C|0)|0;V=C;va=lf(ya|0,xa|0,1048576,0)|0;va=mf(va|0,C|0,21)|0;wa=C;H=lf(y|0,x|0,Z|0,H|0)|0;la=lf(H|0,C|0,ma|0,la|0)|0;ua=lf(la|0,C|0,ta|0,ua|0)|0;ua=lf(ua|0,C|0,va|0,wa|0)|0;ta=C;wa=pf(va|0,wa|0,21)|0;va=C;la=lf(oa|0,na|0,1048576,0)|0;la=mf(la|0,C|0,21)|0;ma=C;Q=lf(D|0,B|0,M|0,Q|0)|0;j=lf(Q|0,C|0,t|0,j|0)|0;ka=lf(j|0,C|0,ja|0,ka|0)|0;ka=lf(ka|0,C|0,la|0,ma|0)|0;ja=C;ma=pf(la|0,ma|0,21)|0;la=C;j=lf(ca|0,s|0,1048576,0)|0;j=mf(j|0,C|0,21)|0;t=C;ia=lf(o|0,ia|0,j|0,t|0)|0;o=C;t=pf(j|0,t|0,21)|0;t=kf(ca|0,s|0,t|0,C|0)|0;s=C;ca=lf(ha|0,k|0,1048576,0)|0;ca=mf(ca|0,C|0,21)|0;j=C;e=lf(I|0,e|0,ca|0,j|0)|0;I=C;j=pf(ca|0,j|0,21)|0;j=kf(ha|0,k|0,j|0,C|0)|0;k=C;ha=lf(L|0,fa|0,1048576,0)|0;ha=mf(ha|0,C|0,21)|0;ca=C;R=lf(_|0,R|0,ha|0,ca|0)|0;_=C;ca=pf(ha|0,ca|0,21)|0;ca=kf(L|0,fa|0,ca|0,C|0)|0;fa=C;L=lf(Ea|0,Da|0,1048576,0)|0;L=mf(L|0,C|0,21)|0;ha=C;Q=pf(L|0,ha|0,21)|0;M=C;B=lf(ua|0,ta|0,1048576,0)|0;B=mf(B|0,C|0,21)|0;D=C;H=pf(B|0,D|0,21)|0;Z=C;x=lf(ka|0,ja|0,1048576,0)|0;x=mf(x|0,C|0,21)|0;y=C;s=lf(t|0,s|0,x|0,y|0)|0;t=C;y=pf(x|0,y|0,21)|0;x=C;ga=lf(ia|0,o|0,1048576,0)|0;ga=mf(ga|0,C|0,21)|0;n=C;k=lf(j|0,k|0,ga|0,n|0)|0;j=C;n=pf(ga|0,n|0,21)|0;n=kf(ia|0,o|0,n|0,C|0)|0;o=C;ia=lf(e|0,I|0,1048576,0)|0;ia=mf(ia|0,C|0,21)|0;ga=C;fa=lf(ca|0,fa|0,ia|0,ga|0)|0;ca=C;ga=pf(ia|0,ga|0,21)|0;ga=kf(e|0,I|0,ga|0,C|0)|0;I=C;e=lf(R|0,_|0,1048576,0)|0;e=mf(e|0,C|0,21)|0;ia=C;f=pf(e|0,ia|0,21)|0;f=kf(R|0,_|0,f|0,C|0)|0;_=C;R=vf(e|0,ia|0,666643,0)|0;R=lf(Ca|0,V|0,R|0,C|0)|0;V=C;Ca=vf(e|0,ia|0,470296,0)|0;Ba=C;Aa=vf(e|0,ia|0,654183,0)|0;za=C;sa=vf(e|0,ia|0,-997805,-1)|0;ra=C;qa=vf(e|0,ia|0,136657,0)|0;pa=C;ia=vf(e|0,ia|0,-683901,-1)|0;e=C;W=mf(R|0,V|0,21)|0;da=C;Ba=lf(Ea|0,Da|0,Ca|0,Ba|0)|0;Ba=lf(Ba|0,C|0,W|0,da|0)|0;M=kf(Ba|0,C|0,Q|0,M|0)|0;Q=C;da=pf(W|0,da|0,21)|0;da=kf(R|0,V|0,da|0,C|0)|0;V=C;R=mf(M|0,Q|0,21)|0;W=C;xa=lf(Aa|0,za|0,ya|0,xa|0)|0;va=kf(xa|0,C|0,wa|0,va|0)|0;ha=lf(va|0,C|0,L|0,ha|0)|0;ha=lf(ha|0,C|0,R|0,W|0)|0;L=C;W=pf(R|0,W|0,21)|0;W=kf(M|0,Q|0,W|0,C|0)|0;Q=C;M=mf(ha|0,L|0,21)|0;R=C;ra=lf(ua|0,ta|0,sa|0,ra|0)|0;Z=kf(ra|0,C|0,H|0,Z|0)|0;Z=lf(Z|0,C|0,M|0,R|0)|0;H=C;R=pf(M|0,R|0,21)|0;R=kf(ha|0,L|0,R|0,C|0)|0;L=C;ha=mf(Z|0,H|0,21)|0;M=C;na=lf(qa|0,pa|0,oa|0,na|0)|0;la=kf(na|0,C|0,ma|0,la|0)|0;D=lf(la|0,C|0,B|0,D|0)|0;D=lf(D|0,C|0,ha|0,M|0)|0;B=C;M=pf(ha|0,M|0,21)|0;M=kf(Z|0,H|0,M|0,C|0)|0;H=C;Z=mf(D|0,B|0,21)|0;ha=C;e=lf(ka|0,ja|0,ia|0,e|0)|0;x=kf(e|0,C|0,y|0,x|0)|0;x=lf(x|0,C|0,Z|0,ha|0)|0;y=C;ha=pf(Z|0,ha|0,21)|0;ha=kf(D|0,B|0,ha|0,C|0)|0;B=C;D=mf(x|0,y|0,21)|0;Z=C;t=lf(s|0,t|0,D|0,Z|0)|0;s=C;Z=pf(D|0,Z|0,21)|0;Z=kf(x|0,y|0,Z|0,C|0)|0;y=C;x=mf(t|0,s|0,21)|0;D=C;o=lf(x|0,D|0,n|0,o|0)|0;n=C;D=pf(x|0,D|0,21)|0;D=kf(t|0,s|0,D|0,C|0)|0;s=C;t=mf(o|0,n|0,21)|0;x=C;j=lf(k|0,j|0,t|0,x|0)|0;k=C;x=pf(t|0,x|0,21)|0;x=kf(o|0,n|0,x|0,C|0)|0;n=C;o=mf(j|0,k|0,21)|0;t=C;I=lf(o|0,t|0,ga|0,I|0)|0;ga=C;t=pf(o|0,t|0,21)|0;t=kf(j|0,k|0,t|0,C|0)|0;k=C;j=mf(I|0,ga|0,21)|0;o=C;ca=lf(fa|0,ca|0,j|0,o|0)|0;fa=C;o=pf(j|0,o|0,21)|0;o=kf(I|0,ga|0,o|0,C|0)|0;ga=C;I=mf(ca|0,fa|0,21)|0;j=C;_=lf(I|0,j|0,f|0,_|0)|0;f=C;j=pf(I|0,j|0,21)|0;j=kf(ca|0,fa|0,j|0,C|0)|0;fa=C;ca=mf(_|0,f|0,21)|0;I=C;e=pf(ca|0,I|0,21)|0;e=kf(_|0,f|0,e|0,C|0)|0;f=C;_=vf(ca|0,I|0,666643,0)|0;V=lf(_|0,C|0,da|0,V|0)|0;da=C;_=vf(ca|0,I|0,470296,0)|0;_=lf(W|0,Q|0,_|0,C|0)|0;Q=C;W=vf(ca|0,I|0,654183,0)|0;W=lf(R|0,L|0,W|0,C|0)|0;L=C;R=vf(ca|0,I|0,-997805,-1)|0;R=lf(M|0,H|0,R|0,C|0)|0;H=C;M=vf(ca|0,I|0,136657,0)|0;M=lf(ha|0,B|0,M|0,C|0)|0;B=C;I=vf(ca|0,I|0,-683901,-1)|0;I=lf(Z|0,y|0,I|0,C|0)|0;y=C;Z=mf(V|0,da|0,21)|0;ca=C;Q=lf(_|0,Q|0,Z|0,ca|0)|0;_=C;ca=pf(Z|0,ca|0,21)|0;ca=kf(V|0,da|0,ca|0,C|0)|0;da=C;V=mf(Q|0,_|0,21)|0;Z=C;L=lf(W|0,L|0,V|0,Z|0)|0;W=C;Z=pf(V|0,Z|0,21)|0;Z=kf(Q|0,_|0,Z|0,C|0)|0;_=C;Q=mf(L|0,W|0,21)|0;V=C;H=lf(R|0,H|0,Q|0,V|0)|0;R=C;V=pf(Q|0,V|0,21)|0;V=kf(L|0,W|0,V|0,C|0)|0;W=C;L=mf(H|0,R|0,21)|0;Q=C;B=lf(M|0,B|0,L|0,Q|0)|0;M=C;Q=pf(L|0,Q|0,21)|0;Q=kf(H|0,R|0,Q|0,C|0)|0;R=C;H=mf(B|0,M|0,21)|0;L=C;y=lf(I|0,y|0,H|0,L|0)|0;I=C;L=pf(H|0,L|0,21)|0;L=kf(B|0,M|0,L|0,C|0)|0;M=C;B=mf(y|0,I|0,21)|0;H=C;s=lf(B|0,H|0,D|0,s|0)|0;D=C;H=pf(B|0,H|0,21)|0;H=kf(y|0,I|0,H|0,C|0)|0;I=C;y=mf(s|0,D|0,21)|0;B=C;n=lf(y|0,B|0,x|0,n|0)|0;x=C;B=pf(y|0,B|0,21)|0;B=kf(s|0,D|0,B|0,C|0)|0;D=C;s=mf(n|0,x|0,21)|0;y=C;k=lf(s|0,y|0,t|0,k|0)|0;t=C;y=pf(s|0,y|0,21)|0;y=kf(n|0,x|0,y|0,C|0)|0;x=C;n=mf(k|0,t|0,21)|0;s=C;ga=lf(n|0,s|0,o|0,ga|0)|0;o=C;s=pf(n|0,s|0,21)|0;s=kf(k|0,t|0,s|0,C|0)|0;t=C;k=mf(ga|0,o|0,21)|0;n=C;fa=lf(k|0,n|0,j|0,fa|0)|0;j=C;n=pf(k|0,n|0,21)|0;n=kf(ga|0,o|0,n|0,C|0)|0;o=C;ga=mf(fa|0,j|0,21)|0;k=C;f=lf(ga|0,k|0,e|0,f|0)|0;e=C;k=pf(ga|0,k|0,21)|0;k=kf(fa|0,j|0,k|0,C|0)|0;j=C;a[b>>0]=ca;b=of(ca|0,da|0,8)|0;a[ea>>0]=b;b=of(ca|0,da|0,16)|0;da=C;ca=pf(Z|0,_|0,5)|0;a[ba>>0]=ca|b;b=of(Z|0,_|0,3)|0;a[aa>>0]=b;b=of(Z|0,_|0,11)|0;a[$>>0]=b;b=of(Z|0,_|0,19)|0;_=C;Z=pf(V|0,W|0,2)|0;a[Y>>0]=Z|b;b=of(V|0,W|0,6)|0;a[X>>0]=b;b=of(V|0,W|0,14)|0;W=C;V=pf(Q|0,R|0,7)|0;a[U>>0]=V|b;b=of(Q|0,R|0,1)|0;a[T>>0]=b;b=of(Q|0,R|0,9)|0;a[S>>0]=b;b=of(Q|0,R|0,17)|0;R=C;Q=pf(L|0,M|0,4)|0;a[P>>0]=Q|b;b=of(L|0,M|0,4)|0;a[O>>0]=b;b=of(L|0,M|0,12)|0;a[N>>0]=b;b=of(L|0,M|0,20)|0;M=C;L=pf(H|0,I|0,1)|0;a[K>>0]=L|b;b=of(H|0,I|0,7)|0;a[J>>0]=b;b=of(H|0,I|0,15)|0;I=C;H=pf(B|0,D|0,6)|0;a[G>>0]=H|b;b=of(B|0,D|0,2)|0;a[F>>0]=b;b=of(B|0,D|0,10)|0;a[E>>0]=b;b=of(B|0,D|0,18)|0;D=C;B=pf(y|0,x|0,3)|0;a[A>>0]=B|b;b=of(y|0,x|0,5)|0;a[z>>0]=b;b=of(y|0,x|0,13)|0;a[w>>0]=b;a[v>>0]=s;b=of(s|0,t|0,8)|0;a[u>>0]=b;b=of(s|0,t|0,16)|0;t=C;s=pf(n|0,o|0,5)|0;a[r>>0]=s|b;b=of(n|0,o|0,3)|0;a[q>>0]=b;b=of(n|0,o|0,11)|0;a[p>>0]=b;b=of(n|0,o|0,19)|0;o=C;n=pf(k|0,j|0,2)|0;a[m>>0]=n|b;b=of(k|0,j|0,6)|0;a[l>>0]=b;j=of(k|0,j|0,14)|0;k=C;b=pf(f|0,e|0,7)|0;a[i>>0]=j|b;b=of(f|0,e|0,1)|0;a[h>>0]=b;b=of(f|0,e|0,9)|0;a[g>>0]=b;b=of(f|0,e|0,17)|0;a[c>>0]=b;return}function Md(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0,ac=0,bc=0,cc=0,dc=0,ec=0,fc=0,gc=0,hc=0,ic=0,jc=0,kc=0,lc=0,mc=0,nc=0,oc=0,pc=0,qc=0,rc=0,sc=0,tc=0,uc=0,vc=0;A=a[c+2>>0]|0;Ma=d[c>>0]|0;qb=pf(d[c+1>>0]|0|0,0,8)|0;jb=C;A=A&255;db=pf(A|0,0,16)|0;db=qb|Ma|db&2031616;Ma=pf(d[c+3>>0]|0|0,0,8)|0;qb=C;z=pf(d[c+4>>0]|0|0,0,16)|0;qb=qb|C;nb=d[c+5>>0]|0;Ya=pf(nb|0,0,24)|0;qb=of(Ma|A|z|Ya|0,qb|C|0,5)|0;qb=qb&2097151;Ya=a[c+7>>0]|0;z=pf(d[c+6>>0]|0|0,0,8)|0;A=C;Ya=Ya&255;Ma=pf(Ya|0,0,16)|0;A=of(z|nb|Ma|0,A|C|0,2)|0;A=A&2097151;Ma=pf(d[c+8>>0]|0|0,0,8)|0;nb=C;z=pf(d[c+9>>0]|0|0,0,16)|0;nb=nb|C;j=d[c+10>>0]|0;La=pf(j|0,0,24)|0;nb=of(Ma|Ya|z|La|0,nb|C|0,7)|0;nb=nb&2097151;La=pf(d[c+11>>0]|0|0,0,8)|0;z=C;Ya=pf(d[c+12>>0]|0|0,0,16)|0;z=z|C;Ma=d[c+13>>0]|0;I=pf(Ma|0,0,24)|0;z=of(La|j|Ya|I|0,z|C|0,4)|0;z=z&2097151;I=a[c+15>>0]|0;Ya=pf(d[c+14>>0]|0|0,0,8)|0;j=C;I=I&255;La=pf(I|0,0,16)|0;j=of(Ya|Ma|La|0,j|C|0,1)|0;j=j&2097151;La=pf(d[c+16>>0]|0|0,0,8)|0;Ma=C;Ya=pf(d[c+17>>0]|0|0,0,16)|0;Ma=Ma|C;sc=d[c+18>>0]|0;ca=pf(sc|0,0,24)|0;Ma=of(La|I|Ya|ca|0,Ma|C|0,6)|0;Ma=Ma&2097151;ca=a[c+20>>0]|0;Ya=pf(d[c+19>>0]|0|0,0,8)|0;I=C;ca=pf(ca&255|0,0,16)|0;I=of(Ya|sc|ca|0,I|C|0,3)|0;ca=C;sc=a[c+23>>0]|0;Ya=d[c+21>>0]|0;La=pf(d[c+22>>0]|0|0,0,8)|0;lb=C;sc=sc&255;Ja=pf(sc|0,0,16)|0;Ja=La|Ya|Ja&2031616;Ya=pf(d[c+24>>0]|0|0,0,8)|0;La=C;q=pf(d[c+25>>0]|0|0,0,16)|0;La=La|C;o=d[c+26>>0]|0;m=pf(o|0,0,24)|0;La=of(Ya|sc|q|m|0,La|C|0,5)|0;La=La&2097151;m=a[c+28>>0]|0;q=pf(d[c+27>>0]|0|0,0,8)|0;sc=C;m=m&255;Ya=pf(m|0,0,16)|0;sc=of(q|o|Ya|0,sc|C|0,2)|0;sc=sc&2097151;Ya=pf(d[c+29>>0]|0|0,0,8)|0;o=C;q=pf(d[c+30>>0]|0|0,0,16)|0;o=o|C;Da=pf(d[c+31>>0]|0|0,0,24)|0;o=of(Ya|m|q|Da|0,o|C|0,7)|0;Da=C;q=a[e+2>>0]|0;m=d[e>>0]|0;Ya=pf(d[e+1>>0]|0|0,0,8)|0;ba=C;q=q&255;aa=pf(q|0,0,16)|0;aa=Ya|m|aa&2031616;m=pf(d[e+3>>0]|0|0,0,8)|0;Ya=C;ea=pf(d[e+4>>0]|0|0,0,16)|0;Ya=Ya|C;p=d[e+5>>0]|0;pc=pf(p|0,0,24)|0;Ya=of(m|q|ea|pc|0,Ya|C|0,5)|0;Ya=Ya&2097151;pc=a[e+7>>0]|0;ea=pf(d[e+6>>0]|0|0,0,8)|0;q=C;pc=pc&255;m=pf(pc|0,0,16)|0;q=of(ea|p|m|0,q|C|0,2)|0;q=q&2097151;m=pf(d[e+8>>0]|0|0,0,8)|0;p=C;ea=pf(d[e+9>>0]|0|0,0,16)|0;p=p|C;Ta=d[e+10>>0]|0;Ia=pf(Ta|0,0,24)|0;p=of(m|pc|ea|Ia|0,p|C|0,7)|0;p=p&2097151;Ia=pf(d[e+11>>0]|0|0,0,8)|0;ea=C;pc=pf(d[e+12>>0]|0|0,0,16)|0;ea=ea|C;m=d[e+13>>0]|0;vc=pf(m|0,0,24)|0;ea=of(Ia|Ta|pc|vc|0,ea|C|0,4)|0;ea=ea&2097151;vc=a[e+15>>0]|0;pc=pf(d[e+14>>0]|0|0,0,8)|0;Ta=C;vc=vc&255;Ia=pf(vc|0,0,16)|0;Ta=of(pc|m|Ia|0,Ta|C|0,1)|0;Ta=Ta&2097151;Ia=pf(d[e+16>>0]|0|0,0,8)|0;m=C;pc=pf(d[e+17>>0]|0|0,0,16)|0;m=m|C;K=d[e+18>>0]|0;ub=pf(K|0,0,24)|0;m=of(Ia|vc|pc|ub|0,m|C|0,6)|0;m=m&2097151;ub=a[e+20>>0]|0;pc=pf(d[e+19>>0]|0|0,0,8)|0;vc=C;ub=pf(ub&255|0,0,16)|0;vc=of(pc|K|ub|0,vc|C|0,3)|0;ub=C;K=a[e+23>>0]|0;pc=d[e+21>>0]|0;Ia=pf(d[e+22>>0]|0|0,0,8)|0;wa=C;K=K&255;na=pf(K|0,0,16)|0;na=Ia|pc|na&2031616;pc=pf(d[e+24>>0]|0|0,0,8)|0;Ia=C;Fa=pf(d[e+25>>0]|0|0,0,16)|0;Ia=Ia|C;x=d[e+26>>0]|0;qc=pf(x|0,0,24)|0;Ia=of(pc|K|Fa|qc|0,Ia|C|0,5)|0;Ia=Ia&2097151;qc=a[e+28>>0]|0;Fa=pf(d[e+27>>0]|0|0,0,8)|0;K=C;qc=qc&255;pc=pf(qc|0,0,16)|0;K=of(Fa|x|pc|0,K|C|0,2)|0;K=K&2097151;pc=pf(d[e+29>>0]|0|0,0,8)|0;x=C;Fa=pf(d[e+30>>0]|0|0,0,16)|0;x=x|C;Ba=pf(d[e+31>>0]|0|0,0,24)|0;x=of(pc|qc|Fa|Ba|0,x|C|0,7)|0;Ba=C;Fa=a[f+2>>0]|0;qc=d[f>>0]|0;pc=pf(d[f+1>>0]|0|0,0,8)|0;W=C;Fa=Fa&255;rc=pf(Fa|0,0,16)|0;Qa=pf(d[f+3>>0]|0|0,0,8)|0;xa=C;za=pf(d[f+4>>0]|0|0,0,16)|0;xa=xa|C;ib=d[f+5>>0]|0;sa=pf(ib|0,0,24)|0;xa=of(Qa|Fa|za|sa|0,xa|C|0,5)|0;sa=a[f+7>>0]|0;za=pf(d[f+6>>0]|0|0,0,8)|0;Fa=C;sa=sa&255;Qa=pf(sa|0,0,16)|0;Fa=of(za|ib|Qa|0,Fa|C|0,2)|0;Qa=pf(d[f+8>>0]|0|0,0,8)|0;ib=C;za=pf(d[f+9>>0]|0|0,0,16)|0;ib=ib|C;Q=d[f+10>>0]|0;H=pf(Q|0,0,24)|0;ib=of(Qa|sa|za|H|0,ib|C|0,7)|0;H=pf(d[f+11>>0]|0|0,0,8)|0;za=C;sa=pf(d[f+12>>0]|0|0,0,16)|0;za=za|C;Qa=d[f+13>>0]|0;B=pf(Qa|0,0,24)|0;za=of(H|Q|sa|B|0,za|C|0,4)|0;B=a[f+15>>0]|0;sa=pf(d[f+14>>0]|0|0,0,8)|0;Q=C;B=B&255;H=pf(B|0,0,16)|0;Q=of(sa|Qa|H|0,Q|C|0,1)|0;H=pf(d[f+16>>0]|0|0,0,8)|0;Qa=C;sa=pf(d[f+17>>0]|0|0,0,16)|0;Qa=Qa|C;N=d[f+18>>0]|0;h=pf(N|0,0,24)|0;Qa=of(H|B|sa|h|0,Qa|C|0,6)|0;h=a[f+20>>0]|0;sa=pf(d[f+19>>0]|0|0,0,8)|0;B=C;h=pf(h&255|0,0,16)|0;B=of(sa|N|h|0,B|C|0,3)|0;h=C;N=a[f+23>>0]|0;sa=d[f+21>>0]|0;H=pf(d[f+22>>0]|0|0,0,8)|0;Y=C;N=N&255;Z=pf(N|0,0,16)|0;ua=pf(d[f+24>>0]|0|0,0,8)|0;G=C;Aa=pf(d[f+25>>0]|0|0,0,16)|0;G=G|C;c=d[f+26>>0]|0;ma=pf(c|0,0,24)|0;G=of(ua|N|Aa|ma|0,G|C|0,5)|0;ma=a[f+28>>0]|0;Aa=pf(d[f+27>>0]|0|0,0,8)|0;N=C;ma=ma&255;ua=pf(ma|0,0,16)|0;N=of(Aa|c|ua|0,N|C|0,2)|0;ua=pf(d[f+29>>0]|0|0,0,8)|0;c=C;Aa=pf(d[f+30>>0]|0|0,0,16)|0;c=c|C;i=pf(d[f+31>>0]|0|0,0,24)|0;c=of(ua|ma|Aa|i|0,c|C|0,7)|0;i=C;Aa=vf(aa|0,ba|0,db|0,jb|0)|0;Aa=lf(pc|qc|rc&2031616|0,W|0,Aa|0,C|0)|0;W=C;rc=vf(Ya|0,0,db|0,jb|0)|0;qc=C;pc=vf(aa|0,ba|0,qb|0,0)|0;ma=C;ua=vf(q|0,0,db|0,jb|0)|0;Ea=C;va=vf(Ya|0,0,qb|0,0)|0;kc=C;ia=vf(aa|0,ba|0,A|0,0)|0;ia=lf(va|0,kc|0,ia|0,C|0)|0;Ea=lf(ia|0,C|0,ua|0,Ea|0)|0;Fa=lf(Ea|0,C|0,Fa&2097151|0,0)|0;Ea=C;ua=vf(p|0,0,db|0,jb|0)|0;ia=C;kc=vf(q|0,0,qb|0,0)|0;va=C;oc=vf(Ya|0,0,A|0,0)|0;nc=C;mc=vf(aa|0,ba|0,nb|0,0)|0;lc=C;Ha=vf(ea|0,0,db|0,jb|0)|0;ya=C;bc=vf(p|0,0,qb|0,0)|0;R=C;dc=vf(q|0,0,A|0,0)|0;Ga=C;ec=vf(Ya|0,0,nb|0,0)|0;fc=C;cc=vf(aa|0,ba|0,z|0,0)|0;cc=lf(ec|0,fc|0,cc|0,C|0)|0;Ga=lf(cc|0,C|0,dc|0,Ga|0)|0;R=lf(Ga|0,C|0,bc|0,R|0)|0;ya=lf(R|0,C|0,Ha|0,ya|0)|0;za=lf(ya|0,C|0,za&2097151|0,0)|0;ya=C;Ha=vf(Ta|0,0,db|0,jb|0)|0;R=C;bc=vf(ea|0,0,qb|0,0)|0;Ga=C;dc=vf(p|0,0,A|0,0)|0;cc=C;fc=vf(q|0,0,nb|0,0)|0;ec=C;jc=vf(Ya|0,0,z|0,0)|0;ic=C;hc=vf(aa|0,ba|0,j|0,0)|0;gc=C;X=vf(m|0,0,db|0,jb|0)|0;Ra=C;Qb=vf(Ta|0,0,qb|0,0)|0;da=C;Sb=vf(ea|0,0,A|0,0)|0;Pb=C;Ub=vf(p|0,0,nb|0,0)|0;Rb=C;Wb=vf(q|0,0,z|0,0)|0;Tb=C;Xb=vf(Ya|0,0,j|0,0)|0;Yb=C;Vb=vf(aa|0,ba|0,Ma|0,0)|0;Vb=lf(Xb|0,Yb|0,Vb|0,C|0)|0;Tb=lf(Vb|0,C|0,Wb|0,Tb|0)|0;Rb=lf(Tb|0,C|0,Ub|0,Rb|0)|0;Pb=lf(Rb|0,C|0,Sb|0,Pb|0)|0;da=lf(Pb|0,C|0,Qb|0,da|0)|0;Ra=lf(da|0,C|0,X|0,Ra|0)|0;Qa=lf(Ra|0,C|0,Qa&2097151|0,0)|0;Ra=C;X=vf(vc|0,ub|0,db|0,jb|0)|0;da=C;Qb=vf(m|0,0,qb|0,0)|0;Pb=C;Sb=vf(Ta|0,0,A|0,0)|0;Rb=C;Ub=vf(ea|0,0,nb|0,0)|0;Tb=C;Wb=vf(p|0,0,z|0,0)|0;Vb=C;Yb=vf(q|0,0,j|0,0)|0;Xb=C;ac=vf(Ya|0,0,Ma|0,0)|0;$b=C;_b=vf(aa|0,ba|0,I|0,ca|0)|0;Zb=C;ta=vf(na|0,wa|0,db|0,jb|0)|0;yb=C;zb=vf(vc|0,ub|0,qb|0,0)|0;Ab=C;Bb=vf(m|0,0,A|0,0)|0;Cb=C;Db=vf(Ta|0,0,nb|0,0)|0;Eb=C;Fb=vf(ea|0,0,z|0,0)|0;Gb=C;Hb=vf(p|0,0,j|0,0)|0;Ib=C;Jb=vf(q|0,0,Ma|0,0)|0;Kb=C;Mb=vf(Ya|0,0,I|0,ca|0)|0;Nb=C;Ob=vf(aa|0,ba|0,Ja|0,lb|0)|0;Ob=lf(Mb|0,Nb|0,Ob|0,C|0)|0;Kb=lf(Ob|0,C|0,Jb|0,Kb|0)|0;Ib=lf(Kb|0,C|0,Hb|0,Ib|0)|0;Gb=lf(Ib|0,C|0,Fb|0,Gb|0)|0;Eb=lf(Gb|0,C|0,Db|0,Eb|0)|0;Cb=lf(Eb|0,C|0,Bb|0,Cb|0)|0;Ab=lf(Cb|0,C|0,zb|0,Ab|0)|0;yb=lf(Ab|0,C|0,ta|0,yb|0)|0;Y=lf(yb|0,C|0,H|sa|Z&2031616|0,Y|0)|0;Z=C;sa=vf(Ia|0,0,db|0,jb|0)|0;H=C;yb=vf(na|0,wa|0,qb|0,0)|0;ta=C;Ab=vf(vc|0,ub|0,A|0,0)|0;zb=C;Cb=vf(m|0,0,nb|0,0)|0;Bb=C;Eb=vf(Ta|0,0,z|0,0)|0;Db=C;Gb=vf(ea|0,0,j|0,0)|0;Fb=C;Ib=vf(p|0,0,Ma|0,0)|0;Hb=C;Kb=vf(q|0,0,I|0,ca|0)|0;Jb=C;Ob=vf(Ya|0,0,Ja|0,lb|0)|0;Nb=C;Mb=vf(aa|0,ba|0,La|0,0)|0;Lb=C;O=vf(K|0,0,db|0,jb|0)|0;M=C;ab=vf(Ia|0,0,qb|0,0)|0;P=C;y=vf(na|0,wa|0,A|0,0)|0;bb=C;ob=vf(vc|0,ub|0,nb|0,0)|0;u=C;J=vf(m|0,0,z|0,0)|0;pb=C;Oa=vf(Ta|0,0,j|0,0)|0;D=C;gb=vf(ea|0,0,Ma|0,0)|0;Pa=C;U=vf(p|0,0,I|0,ca|0)|0;hb=C;Wa=vf(q|0,0,Ja|0,lb|0)|0;V=C;wb=vf(Ya|0,0,La|0,0)|0;xb=C;Xa=vf(aa|0,ba|0,sc|0,0)|0;Xa=lf(wb|0,xb|0,Xa|0,C|0)|0;V=lf(Xa|0,C|0,Wa|0,V|0)|0;hb=lf(V|0,C|0,U|0,hb|0)|0;Pa=lf(hb|0,C|0,gb|0,Pa|0)|0;D=lf(Pa|0,C|0,Oa|0,D|0)|0;pb=lf(D|0,C|0,J|0,pb|0)|0;u=lf(pb|0,C|0,ob|0,u|0)|0;bb=lf(u|0,C|0,y|0,bb|0)|0;P=lf(bb|0,C|0,ab|0,P|0)|0;M=lf(P|0,C|0,O|0,M|0)|0;N=lf(M|0,C|0,N&2097151|0,0)|0;M=C;jb=vf(x|0,Ba|0,db|0,jb|0)|0;db=C;O=vf(K|0,0,qb|0,0)|0;P=C;ab=vf(Ia|0,0,A|0,0)|0;bb=C;y=vf(na|0,wa|0,nb|0,0)|0;u=C;ob=vf(vc|0,ub|0,z|0,0)|0;pb=C;J=vf(m|0,0,j|0,0)|0;D=C;Oa=vf(Ta|0,0,Ma|0,0)|0;Pa=C;gb=vf(ea|0,0,I|0,ca|0)|0;hb=C;U=vf(p|0,0,Ja|0,lb|0)|0;V=C;Wa=vf(q|0,0,La|0,0)|0;Xa=C;xb=vf(Ya|0,0,sc|0,0)|0;wb=C;ba=vf(aa|0,ba|0,o|0,Da|0)|0;aa=C;qb=vf(x|0,Ba|0,qb|0,0)|0;rb=C;eb=vf(K|0,0,A|0,0)|0;w=C;fa=vf(Ia|0,0,nb|0,0)|0;fb=C;ha=vf(na|0,wa|0,z|0,0)|0;$=C;sb=vf(vc|0,ub|0,j|0,0)|0;kb=C;la=vf(m|0,0,Ma|0,0)|0;tb=C;qa=vf(Ta|0,0,I|0,ca|0)|0;ka=C;Na=vf(ea|0,0,Ja|0,lb|0)|0;pa=C;Za=vf(p|0,0,La|0,0)|0;ga=C;mb=vf(q|0,0,sc|0,0)|0;v=C;Ya=vf(Ya|0,0,o|0,Da|0)|0;Ya=lf(mb|0,v|0,Ya|0,C|0)|0;ga=lf(Ya|0,C|0,Za|0,ga|0)|0;pa=lf(ga|0,C|0,Na|0,pa|0)|0;ka=lf(pa|0,C|0,qa|0,ka|0)|0;tb=lf(ka|0,C|0,la|0,tb|0)|0;kb=lf(tb|0,C|0,sb|0,kb|0)|0;$=lf(kb|0,C|0,ha|0,$|0)|0;fb=lf($|0,C|0,fa|0,fb|0)|0;w=lf(fb|0,C|0,eb|0,w|0)|0;rb=lf(w|0,C|0,qb|0,rb|0)|0;qb=C;A=vf(x|0,Ba|0,A|0,0)|0;w=C;eb=vf(K|0,0,nb|0,0)|0;fb=C;fa=vf(Ia|0,0,z|0,0)|0;$=C;ha=vf(na|0,wa|0,j|0,0)|0;kb=C;sb=vf(vc|0,ub|0,Ma|0,0)|0;tb=C;la=vf(m|0,0,I|0,ca|0)|0;ka=C;qa=vf(Ta|0,0,Ja|0,lb|0)|0;pa=C;Na=vf(ea|0,0,La|0,0)|0;ga=C;Za=vf(p|0,0,sc|0,0)|0;Ya=C;q=vf(q|0,0,o|0,Da|0)|0;v=C;nb=vf(x|0,Ba|0,nb|0,0)|0;mb=C;_a=vf(K|0,0,z|0,0)|0;r=C;E=vf(Ia|0,0,j|0,0)|0;$a=C;n=vf(na|0,wa|0,Ma|0,0)|0;t=C;_=vf(vc|0,ub|0,I|0,ca|0)|0;g=C;ja=vf(m|0,0,Ja|0,lb|0)|0;s=C;oa=vf(Ta|0,0,La|0,0)|0;F=C;vb=vf(ea|0,0,sc|0,0)|0;l=C;p=vf(p|0,0,o|0,Da|0)|0;p=lf(vb|0,l|0,p|0,C|0)|0;F=lf(p|0,C|0,oa|0,F|0)|0;s=lf(F|0,C|0,ja|0,s|0)|0;g=lf(s|0,C|0,_|0,g|0)|0;t=lf(g|0,C|0,n|0,t|0)|0;$a=lf(t|0,C|0,E|0,$a|0)|0;r=lf($a|0,C|0,_a|0,r|0)|0;mb=lf(r|0,C|0,nb|0,mb|0)|0;nb=C;z=vf(x|0,Ba|0,z|0,0)|0;r=C;_a=vf(K|0,0,j|0,0)|0;$a=C;E=vf(Ia|0,0,Ma|0,0)|0;t=C;n=vf(na|0,wa|0,I|0,ca|0)|0;g=C;_=vf(vc|0,ub|0,Ja|0,lb|0)|0;s=C;ja=vf(m|0,0,La|0,0)|0;F=C;oa=vf(Ta|0,0,sc|0,0)|0;p=C;ea=vf(ea|0,0,o|0,Da|0)|0;l=C;j=vf(x|0,Ba|0,j|0,0)|0;vb=C;e=vf(K|0,0,Ma|0,0)|0;L=C;T=vf(Ia|0,0,I|0,ca|0)|0;Ka=C;Va=vf(na|0,wa|0,Ja|0,lb|0)|0;S=C;Sa=vf(vc|0,ub|0,La|0,0)|0;Ua=C;f=vf(m|0,0,sc|0,0)|0;k=C;Ta=vf(Ta|0,0,o|0,Da|0)|0;Ta=lf(f|0,k|0,Ta|0,C|0)|0;Ua=lf(Ta|0,C|0,Sa|0,Ua|0)|0;S=lf(Ua|0,C|0,Va|0,S|0)|0;Ka=lf(S|0,C|0,T|0,Ka|0)|0;L=lf(Ka|0,C|0,e|0,L|0)|0;vb=lf(L|0,C|0,j|0,vb|0)|0;j=C;Ma=vf(x|0,Ba|0,Ma|0,0)|0;L=C;e=vf(K|0,0,I|0,ca|0)|0;Ka=C;T=vf(Ia|0,0,Ja|0,lb|0)|0;S=C;Va=vf(na|0,wa|0,La|0,0)|0;Ua=C;Sa=vf(vc|0,ub|0,sc|0,0)|0;Ta=C;m=vf(m|0,0,o|0,Da|0)|0;k=C;ca=vf(x|0,Ba|0,I|0,ca|0)|0;f=C;I=vf(K|0,0,Ja|0,lb|0)|0;Ca=C;ra=vf(Ia|0,0,La|0,0)|0;cb=C;tc=vf(na|0,wa|0,sc|0,0)|0;uc=C;ub=vf(vc|0,ub|0,o|0,Da|0)|0;ub=lf(tc|0,uc|0,ub|0,C|0)|0;cb=lf(ub|0,C|0,ra|0,cb|0)|0;Ca=lf(cb|0,C|0,I|0,Ca|0)|0;f=lf(Ca|0,C|0,ca|0,f|0)|0;ca=C;lb=vf(x|0,Ba|0,Ja|0,lb|0)|0;Ja=C;Ca=vf(K|0,0,La|0,0)|0;I=C;cb=vf(Ia|0,0,sc|0,0)|0;ra=C;wa=vf(na|0,wa|0,o|0,Da|0)|0;na=C;La=vf(x|0,Ba|0,La|0,0)|0;ub=C;uc=vf(K|0,0,sc|0,0)|0;tc=C;Ia=vf(Ia|0,0,o|0,Da|0)|0;Ia=lf(uc|0,tc|0,Ia|0,C|0)|0;ub=lf(Ia|0,C|0,La|0,ub|0)|0;La=C;sc=vf(x|0,Ba|0,sc|0,0)|0;Ia=C;K=vf(K|0,0,o|0,Da|0)|0;K=lf(sc|0,Ia|0,K|0,C|0)|0;Ia=C;Da=vf(x|0,Ba|0,o|0,Da|0)|0;o=C;Ba=lf(Aa|0,W|0,1048576,0)|0;Ba=of(Ba|0,C|0,21)|0;x=C;ma=lf(rc|0,qc|0,pc|0,ma|0)|0;ma=lf(ma|0,C|0,Ba|0,x|0)|0;xa=lf(ma|0,C|0,xa&2097151|0,0)|0;ma=C;x=pf(Ba|0,x|0,21)|0;x=kf(Aa|0,W|0,x|0,C|0)|0;W=C;Aa=lf(Fa|0,Ea|0,1048576,0)|0;Aa=of(Aa|0,C|0,21)|0;Ba=C;lc=lf(oc|0,nc|0,mc|0,lc|0)|0;va=lf(lc|0,C|0,kc|0,va|0)|0;ia=lf(va|0,C|0,ua|0,ia|0)|0;ib=lf(ia|0,C|0,ib&2097151|0,0)|0;ib=lf(ib|0,C|0,Aa|0,Ba|0)|0;ia=C;Ba=pf(Aa|0,Ba|0,21)|0;Aa=C;ua=lf(za|0,ya|0,1048576,0)|0;ua=mf(ua|0,C|0,21)|0;va=C;gc=lf(jc|0,ic|0,hc|0,gc|0)|0;ec=lf(gc|0,C|0,fc|0,ec|0)|0;cc=lf(ec|0,C|0,dc|0,cc|0)|0;Ga=lf(cc|0,C|0,bc|0,Ga|0)|0;R=lf(Ga|0,C|0,Ha|0,R|0)|0;Q=lf(R|0,C|0,Q&2097151|0,0)|0;Q=lf(Q|0,C|0,ua|0,va|0)|0;R=C;va=pf(ua|0,va|0,21)|0;ua=C;Ha=lf(Qa|0,Ra|0,1048576,0)|0;Ha=mf(Ha|0,C|0,21)|0;Ga=C;Zb=lf(ac|0,$b|0,_b|0,Zb|0)|0;Xb=lf(Zb|0,C|0,Yb|0,Xb|0)|0;Vb=lf(Xb|0,C|0,Wb|0,Vb|0)|0;Tb=lf(Vb|0,C|0,Ub|0,Tb|0)|0;Rb=lf(Tb|0,C|0,Sb|0,Rb|0)|0;Pb=lf(Rb|0,C|0,Qb|0,Pb|0)|0;da=lf(Pb|0,C|0,X|0,da|0)|0;h=lf(da|0,C|0,B|0,h|0)|0;h=lf(h|0,C|0,Ha|0,Ga|0)|0;B=C;Ga=pf(Ha|0,Ga|0,21)|0;Ha=C;da=lf(Y|0,Z|0,1048576,0)|0;da=mf(da|0,C|0,21)|0;X=C;Lb=lf(Ob|0,Nb|0,Mb|0,Lb|0)|0;Jb=lf(Lb|0,C|0,Kb|0,Jb|0)|0;Hb=lf(Jb|0,C|0,Ib|0,Hb|0)|0;Fb=lf(Hb|0,C|0,Gb|0,Fb|0)|0;Db=lf(Fb|0,C|0,Eb|0,Db|0)|0;Bb=lf(Db|0,C|0,Cb|0,Bb|0)|0;zb=lf(Bb|0,C|0,Ab|0,zb|0)|0;ta=lf(zb|0,C|0,yb|0,ta|0)|0;H=lf(ta|0,C|0,sa|0,H|0)|0;G=lf(H|0,C|0,G&2097151|0,0)|0;G=lf(G|0,C|0,da|0,X|0)|0;H=C;X=pf(da|0,X|0,21)|0;da=C;sa=lf(N|0,M|0,1048576,0)|0;sa=mf(sa|0,C|0,21)|0;ta=C;aa=lf(xb|0,wb|0,ba|0,aa|0)|0;Xa=lf(aa|0,C|0,Wa|0,Xa|0)|0;V=lf(Xa|0,C|0,U|0,V|0)|0;hb=lf(V|0,C|0,gb|0,hb|0)|0;Pa=lf(hb|0,C|0,Oa|0,Pa|0)|0;D=lf(Pa|0,C|0,J|0,D|0)|0;pb=lf(D|0,C|0,ob|0,pb|0)|0;u=lf(pb|0,C|0,y|0,u|0)|0;bb=lf(u|0,C|0,ab|0,bb|0)|0;P=lf(bb|0,C|0,O|0,P|0)|0;db=lf(P|0,C|0,jb|0,db|0)|0;i=lf(db|0,C|0,c|0,i|0)|0;i=lf(i|0,C|0,sa|0,ta|0)|0;c=C;ta=pf(sa|0,ta|0,21)|0;sa=C;db=lf(rb|0,qb|0,1048576,0)|0;db=mf(db|0,C|0,21)|0;jb=C;v=lf(Za|0,Ya|0,q|0,v|0)|0;ga=lf(v|0,C|0,Na|0,ga|0)|0;pa=lf(ga|0,C|0,qa|0,pa|0)|0;ka=lf(pa|0,C|0,la|0,ka|0)|0;tb=lf(ka|0,C|0,sb|0,tb|0)|0;kb=lf(tb|0,C|0,ha|0,kb|0)|0;$=lf(kb|0,C|0,fa|0,$|0)|0;fb=lf($|0,C|0,eb|0,fb|0)|0;w=lf(fb|0,C|0,A|0,w|0)|0;w=lf(w|0,C|0,db|0,jb|0)|0;A=C;jb=pf(db|0,jb|0,21)|0;db=C;fb=lf(mb|0,nb|0,1048576,0)|0;fb=mf(fb|0,C|0,21)|0;eb=C;l=lf(oa|0,p|0,ea|0,l|0)|0;F=lf(l|0,C|0,ja|0,F|0)|0;s=lf(F|0,C|0,_|0,s|0)|0;g=lf(s|0,C|0,n|0,g|0)|0;t=lf(g|0,C|0,E|0,t|0)|0;$a=lf(t|0,C|0,_a|0,$a|0)|0;r=lf($a|0,C|0,z|0,r|0)|0;r=lf(r|0,C|0,fb|0,eb|0)|0;z=C;eb=pf(fb|0,eb|0,21)|0;fb=C;$a=lf(vb|0,j|0,1048576,0)|0;$a=mf($a|0,C|0,21)|0;_a=C;k=lf(Sa|0,Ta|0,m|0,k|0)|0;Ua=lf(k|0,C|0,Va|0,Ua|0)|0;S=lf(Ua|0,C|0,T|0,S|0)|0;Ka=lf(S|0,C|0,e|0,Ka|0)|0;L=lf(Ka|0,C|0,Ma|0,L|0)|0;L=lf(L|0,C|0,$a|0,_a|0)|0;Ma=C;_a=pf($a|0,_a|0,21)|0;$a=C;Ka=lf(f|0,ca|0,1048576,0)|0;Ka=mf(Ka|0,C|0,21)|0;e=C;na=lf(cb|0,ra|0,wa|0,na|0)|0;I=lf(na|0,C|0,Ca|0,I|0)|0;Ja=lf(I|0,C|0,lb|0,Ja|0)|0;Ja=lf(Ja|0,C|0,Ka|0,e|0)|0;lb=C;e=pf(Ka|0,e|0,21)|0;e=kf(f|0,ca|0,e|0,C|0)|0;ca=C;f=lf(ub|0,La|0,1048576,0)|0;f=of(f|0,C|0,21)|0;Ka=C;Ia=lf(K|0,Ia|0,f|0,Ka|0)|0;K=C;Ka=pf(f|0,Ka|0,21)|0;Ka=kf(ub|0,La|0,Ka|0,C|0)|0;La=C;ub=lf(Da|0,o|0,1048576,0)|0;ub=of(ub|0,C|0,21)|0;f=C;I=pf(ub|0,f|0,21)|0;I=kf(Da|0,o|0,I|0,C|0)|0;o=C;Da=lf(xa|0,ma|0,1048576,0)|0;Da=of(Da|0,C|0,21)|0;Ca=C;na=pf(Da|0,Ca|0,21)|0;na=kf(xa|0,ma|0,na|0,C|0)|0;ma=C;xa=lf(ib|0,ia|0,1048576,0)|0;xa=mf(xa|0,C|0,21)|0;wa=C;ra=pf(xa|0,wa|0,21)|0;ra=kf(ib|0,ia|0,ra|0,C|0)|0;ia=C;ib=lf(Q|0,R|0,1048576,0)|0;ib=mf(ib|0,C|0,21)|0;cb=C;S=pf(ib|0,cb|0,21)|0;T=C;Ua=lf(h|0,B|0,1048576,0)|0;Ua=mf(Ua|0,C|0,21)|0;Va=C;k=pf(Ua|0,Va|0,21)|0;m=C;Ta=lf(G|0,H|0,1048576,0)|0;Ta=mf(Ta|0,C|0,21)|0;Sa=C;t=pf(Ta|0,Sa|0,21)|0;E=C;g=lf(i|0,c|0,1048576,0)|0;g=mf(g|0,C|0,21)|0;n=C;s=pf(g|0,n|0,21)|0;_=C;F=lf(w|0,A|0,1048576,0)|0;F=mf(F|0,C|0,21)|0;ja=C;l=pf(F|0,ja|0,21)|0;ea=C;p=lf(r|0,z|0,1048576,0)|0;p=mf(p|0,C|0,21)|0;oa=C;$=pf(p|0,oa|0,21)|0;fa=C;kb=lf(L|0,Ma|0,1048576,0)|0;kb=mf(kb|0,C|0,21)|0;ha=C;ca=lf(kb|0,ha|0,e|0,ca|0)|0;e=C;ha=pf(kb|0,ha|0,21)|0;ha=kf(L|0,Ma|0,ha|0,C|0)|0;Ma=C;L=lf(Ja|0,lb|0,1048576,0)|0;L=mf(L|0,C|0,21)|0;kb=C;La=lf(L|0,kb|0,Ka|0,La|0)|0;Ka=C;kb=pf(L|0,kb|0,21)|0;kb=kf(Ja|0,lb|0,kb|0,C|0)|0;lb=C;Ja=lf(Ia|0,K|0,1048576,0)|0;Ja=of(Ja|0,C|0,21)|0;L=C;o=lf(Ja|0,L|0,I|0,o|0)|0;I=C;L=pf(Ja|0,L|0,21)|0;L=kf(Ia|0,K|0,L|0,C|0)|0;K=C;Ia=vf(ub|0,f|0,666643,0)|0;Ja=C;tb=vf(ub|0,f|0,470296,0)|0;sb=C;ka=vf(ub|0,f|0,654183,0)|0;la=C;pa=vf(ub|0,f|0,-997805,-1)|0;qa=C;ga=vf(ub|0,f|0,136657,0)|0;Na=C;f=vf(ub|0,f|0,-683901,-1)|0;f=lf(vb|0,j|0,f|0,C|0)|0;$a=kf(f|0,C|0,_a|0,$a|0)|0;oa=lf($a|0,C|0,p|0,oa|0)|0;p=C;$a=vf(o|0,I|0,666643,0)|0;_a=C;f=vf(o|0,I|0,470296,0)|0;j=C;vb=vf(o|0,I|0,654183,0)|0;ub=C;v=vf(o|0,I|0,-997805,-1)|0;q=C;Ya=vf(o|0,I|0,136657,0)|0;Za=C;I=vf(o|0,I|0,-683901,-1)|0;o=C;P=vf(L|0,K|0,666643,0)|0;O=C;bb=vf(L|0,K|0,470296,0)|0;ab=C;u=vf(L|0,K|0,654183,0)|0;y=C;pb=vf(L|0,K|0,-997805,-1)|0;ob=C;D=vf(L|0,K|0,136657,0)|0;J=C;K=vf(L|0,K|0,-683901,-1)|0;L=C;qa=lf(mb|0,nb|0,pa|0,qa|0)|0;Za=lf(qa|0,C|0,Ya|0,Za|0)|0;L=lf(Za|0,C|0,K|0,L|0)|0;fb=kf(L|0,C|0,eb|0,fb|0)|0;ja=lf(fb|0,C|0,F|0,ja|0)|0;F=C;fb=vf(La|0,Ka|0,666643,0)|0;eb=C;L=vf(La|0,Ka|0,470296,0)|0;K=C;Za=vf(La|0,Ka|0,654183,0)|0;Ya=C;qa=vf(La|0,Ka|0,-997805,-1)|0;pa=C;nb=vf(La|0,Ka|0,136657,0)|0;mb=C;Ka=vf(La|0,Ka|0,-683901,-1)|0;La=C;Pa=vf(kb|0,lb|0,666643,0)|0;Oa=C;hb=vf(kb|0,lb|0,470296,0)|0;gb=C;V=vf(kb|0,lb|0,654183,0)|0;U=C;Xa=vf(kb|0,lb|0,-997805,-1)|0;Wa=C;aa=vf(kb|0,lb|0,136657,0)|0;ba=C;lb=vf(kb|0,lb|0,-683901,-1)|0;kb=C;sb=lf(vb|0,ub|0,tb|0,sb|0)|0;qb=lf(sb|0,C|0,rb|0,qb|0)|0;ob=lf(qb|0,C|0,pb|0,ob|0)|0;mb=lf(ob|0,C|0,nb|0,mb|0)|0;kb=lf(mb|0,C|0,lb|0,kb|0)|0;db=kf(kb|0,C|0,jb|0,db|0)|0;n=lf(db|0,C|0,g|0,n|0)|0;g=C;db=vf(ca|0,e|0,666643,0)|0;db=lf(ib|0,cb|0,db|0,C|0)|0;Ra=lf(db|0,C|0,Qa|0,Ra|0)|0;Ha=kf(Ra|0,C|0,Ga|0,Ha|0)|0;Ga=C;Ra=vf(ca|0,e|0,470296,0)|0;Qa=C;db=vf(ca|0,e|0,654183,0)|0;cb=C;eb=lf(hb|0,gb|0,fb|0,eb|0)|0;cb=lf(eb|0,C|0,db|0,cb|0)|0;Va=lf(cb|0,C|0,Ua|0,Va|0)|0;Z=lf(Va|0,C|0,Y|0,Z|0)|0;da=kf(Z|0,C|0,X|0,da|0)|0;X=C;Z=vf(ca|0,e|0,-997805,-1)|0;Y=C;Va=vf(ca|0,e|0,136657,0)|0;Ua=C;_a=lf(bb|0,ab|0,$a|0,_a|0)|0;Ya=lf(_a|0,C|0,Za|0,Ya|0)|0;Wa=lf(Ya|0,C|0,Xa|0,Wa|0)|0;Ua=lf(Wa|0,C|0,Va|0,Ua|0)|0;Sa=lf(Ua|0,C|0,Ta|0,Sa|0)|0;M=lf(Sa|0,C|0,N|0,M|0)|0;sa=kf(M|0,C|0,ta|0,sa|0)|0;ta=C;e=vf(ca|0,e|0,-683901,-1)|0;ca=C;M=lf(Ha|0,Ga|0,1048576,0)|0;M=mf(M|0,C|0,21)|0;N=C;Oa=lf(Ra|0,Qa|0,Pa|0,Oa|0)|0;B=lf(Oa|0,C|0,h|0,B|0)|0;m=kf(B|0,C|0,k|0,m|0)|0;m=lf(m|0,C|0,M|0,N|0)|0;k=C;N=pf(M|0,N|0,21)|0;M=C;B=lf(da|0,X|0,1048576,0)|0;B=mf(B|0,C|0,21)|0;h=C;O=lf(L|0,K|0,P|0,O|0)|0;U=lf(O|0,C|0,V|0,U|0)|0;Y=lf(U|0,C|0,Z|0,Y|0)|0;H=lf(Y|0,C|0,G|0,H|0)|0;E=kf(H|0,C|0,t|0,E|0)|0;E=lf(E|0,C|0,B|0,h|0)|0;t=C;h=pf(B|0,h|0,21)|0;B=C;H=lf(sa|0,ta|0,1048576,0)|0;H=mf(H|0,C|0,21)|0;G=C;Ja=lf(f|0,j|0,Ia|0,Ja|0)|0;y=lf(Ja|0,C|0,u|0,y|0)|0;pa=lf(y|0,C|0,qa|0,pa|0)|0;ba=lf(pa|0,C|0,aa|0,ba|0)|0;ca=lf(ba|0,C|0,e|0,ca|0)|0;c=lf(ca|0,C|0,i|0,c|0)|0;_=kf(c|0,C|0,s|0,_|0)|0;_=lf(_|0,C|0,H|0,G|0)|0;s=C;G=pf(H|0,G|0,21)|0;H=C;c=lf(n|0,g|0,1048576,0)|0;c=mf(c|0,C|0,21)|0;i=C;la=lf(v|0,q|0,ka|0,la|0)|0;J=lf(la|0,C|0,D|0,J|0)|0;La=lf(J|0,C|0,Ka|0,La|0)|0;A=lf(La|0,C|0,w|0,A|0)|0;ea=kf(A|0,C|0,l|0,ea|0)|0;ea=lf(ea|0,C|0,c|0,i|0)|0;l=C;i=pf(c|0,i|0,21)|0;i=kf(n|0,g|0,i|0,C|0)|0;g=C;n=lf(ja|0,F|0,1048576,0)|0;n=mf(n|0,C|0,21)|0;c=C;Na=lf(I|0,o|0,ga|0,Na|0)|0;z=lf(Na|0,C|0,r|0,z|0)|0;fa=kf(z|0,C|0,$|0,fa|0)|0;fa=lf(fa|0,C|0,n|0,c|0)|0;$=C;c=pf(n|0,c|0,21)|0;c=kf(ja|0,F|0,c|0,C|0)|0;F=C;ja=lf(oa|0,p|0,1048576,0)|0;ja=mf(ja|0,C|0,21)|0;n=C;Ma=lf(ja|0,n|0,ha|0,Ma|0)|0;ha=C;n=pf(ja|0,n|0,21)|0;n=kf(oa|0,p|0,n|0,C|0)|0;p=C;oa=lf(m|0,k|0,1048576,0)|0;oa=mf(oa|0,C|0,21)|0;ja=C;z=pf(oa|0,ja|0,21)|0;r=C;Na=lf(E|0,t|0,1048576,0)|0;Na=mf(Na|0,C|0,21)|0;ga=C;o=pf(Na|0,ga|0,21)|0;I=C;A=lf(_|0,s|0,1048576,0)|0;A=mf(A|0,C|0,21)|0;w=C;g=lf(A|0,w|0,i|0,g|0)|0;i=C;w=pf(A|0,w|0,21)|0;w=kf(_|0,s|0,w|0,C|0)|0;s=C;_=lf(ea|0,l|0,1048576,0)|0;_=mf(_|0,C|0,21)|0;A=C;F=lf(_|0,A|0,c|0,F|0)|0;c=C;A=pf(_|0,A|0,21)|0;A=kf(ea|0,l|0,A|0,C|0)|0;l=C;ea=lf(fa|0,$|0,1048576,0)|0;ea=mf(ea|0,C|0,21)|0;_=C;p=lf(ea|0,_|0,n|0,p|0)|0;n=C;_=pf(ea|0,_|0,21)|0;_=kf(fa|0,$|0,_|0,C|0)|0;$=C;fa=vf(Ma|0,ha|0,666643,0)|0;ea=C;La=vf(Ma|0,ha|0,470296,0)|0;Ka=C;J=vf(Ma|0,ha|0,654183,0)|0;D=C;la=vf(Ma|0,ha|0,-997805,-1)|0;ka=C;q=vf(Ma|0,ha|0,136657,0)|0;v=C;ha=vf(Ma|0,ha|0,-683901,-1)|0;ha=lf(Na|0,ga|0,ha|0,C|0)|0;ta=lf(ha|0,C|0,sa|0,ta|0)|0;H=kf(ta|0,C|0,G|0,H|0)|0;G=C;ta=vf(p|0,n|0,666643,0)|0;sa=C;ha=vf(p|0,n|0,470296,0)|0;ga=C;Na=vf(p|0,n|0,654183,0)|0;Ma=C;ca=vf(p|0,n|0,-997805,-1)|0;e=C;ba=vf(p|0,n|0,136657,0)|0;aa=C;n=vf(p|0,n|0,-683901,-1)|0;p=C;pa=vf(_|0,$|0,666643,0)|0;pa=lf(ra|0,ia|0,pa|0,C|0)|0;ia=C;ra=vf(_|0,$|0,470296,0)|0;qa=C;y=vf(_|0,$|0,654183,0)|0;u=C;Ja=vf(_|0,$|0,-997805,-1)|0;Ia=C;j=vf(_|0,$|0,136657,0)|0;f=C;$=vf(_|0,$|0,-683901,-1)|0;_=C;ka=lf(ba|0,aa|0,la|0,ka|0)|0;_=lf(ka|0,C|0,$|0,_|0)|0;ja=lf(_|0,C|0,oa|0,ja|0)|0;X=lf(ja|0,C|0,da|0,X|0)|0;B=kf(X|0,C|0,h|0,B|0)|0;h=C;X=vf(F|0,c|0,666643,0)|0;da=C;ja=vf(F|0,c|0,470296,0)|0;ja=lf(pa|0,ia|0,ja|0,C|0)|0;ia=C;pa=vf(F|0,c|0,654183,0)|0;oa=C;_=vf(F|0,c|0,-997805,-1)|0;$=C;ka=vf(F|0,c|0,136657,0)|0;la=C;c=vf(F|0,c|0,-683901,-1)|0;F=C;aa=vf(A|0,l|0,666643,0)|0;ba=C;Y=vf(A|0,l|0,470296,0)|0;Z=C;U=vf(A|0,l|0,654183,0)|0;V=C;O=vf(A|0,l|0,-997805,-1)|0;P=C;K=vf(A|0,l|0,136657,0)|0;L=C;l=vf(A|0,l|0,-683901,-1)|0;A=C;Ka=lf(Na|0,Ma|0,La|0,Ka|0)|0;Ia=lf(Ka|0,C|0,Ja|0,Ia|0)|0;Ga=lf(Ia|0,C|0,Ha|0,Ga|0)|0;M=kf(Ga|0,C|0,N|0,M|0)|0;la=lf(M|0,C|0,ka|0,la|0)|0;A=lf(la|0,C|0,l|0,A|0)|0;l=C;la=vf(g|0,i|0,666643,0)|0;W=lf(la|0,C|0,x|0,W|0)|0;x=C;la=vf(g|0,i|0,470296,0)|0;ka=C;M=vf(g|0,i|0,654183,0)|0;N=C;Ca=lf(Fa|0,Ea|0,Da|0,Ca|0)|0;Aa=kf(Ca|0,C|0,Ba|0,Aa|0)|0;da=lf(Aa|0,C|0,X|0,da|0)|0;N=lf(da|0,C|0,M|0,N|0)|0;Z=lf(N|0,C|0,Y|0,Z|0)|0;Y=C;N=vf(g|0,i|0,-997805,-1)|0;M=C;da=vf(g|0,i|0,136657,0)|0;X=C;wa=lf(za|0,ya|0,xa|0,wa|0)|0;ua=kf(wa|0,C|0,va|0,ua|0)|0;sa=lf(ua|0,C|0,ta|0,sa|0)|0;qa=lf(sa|0,C|0,ra|0,qa|0)|0;oa=lf(qa|0,C|0,pa|0,oa|0)|0;X=lf(oa|0,C|0,da|0,X|0)|0;P=lf(X|0,C|0,O|0,P|0)|0;O=C;i=vf(g|0,i|0,-683901,-1)|0;g=C;X=lf(W|0,x|0,1048576,0)|0;X=mf(X|0,C|0,21)|0;da=C;ka=lf(na|0,ma|0,la|0,ka|0)|0;ba=lf(ka|0,C|0,aa|0,ba|0)|0;ba=lf(ba|0,C|0,X|0,da|0)|0;aa=C;da=pf(X|0,da|0,21)|0;da=kf(W|0,x|0,da|0,C|0)|0;x=C;W=lf(Z|0,Y|0,1048576,0)|0;W=mf(W|0,C|0,21)|0;X=C;M=lf(ja|0,ia|0,N|0,M|0)|0;V=lf(M|0,C|0,U|0,V|0)|0;V=lf(V|0,C|0,W|0,X|0)|0;U=C;X=pf(W|0,X|0,21)|0;W=C;M=lf(P|0,O|0,1048576,0)|0;M=mf(M|0,C|0,21)|0;N=C;ea=lf(ha|0,ga|0,fa|0,ea|0)|0;u=lf(ea|0,C|0,y|0,u|0)|0;R=lf(u|0,C|0,Q|0,R|0)|0;T=kf(R|0,C|0,S|0,T|0)|0;$=lf(T|0,C|0,_|0,$|0)|0;g=lf($|0,C|0,i|0,g|0)|0;L=lf(g|0,C|0,K|0,L|0)|0;L=lf(L|0,C|0,M|0,N|0)|0;K=C;N=pf(M|0,N|0,21)|0;M=C;g=lf(A|0,l|0,1048576,0)|0;g=mf(g|0,C|0,21)|0;i=C;D=lf(ca|0,e|0,J|0,D|0)|0;f=lf(D|0,C|0,j|0,f|0)|0;k=lf(f|0,C|0,m|0,k|0)|0;r=kf(k|0,C|0,z|0,r|0)|0;F=lf(r|0,C|0,c|0,F|0)|0;F=lf(F|0,C|0,g|0,i|0)|0;c=C;i=pf(g|0,i|0,21)|0;i=kf(A|0,l|0,i|0,C|0)|0;l=C;A=lf(B|0,h|0,1048576,0)|0;A=mf(A|0,C|0,21)|0;g=C;v=lf(n|0,p|0,q|0,v|0)|0;t=lf(v|0,C|0,E|0,t|0)|0;t=lf(t|0,C|0,A|0,g|0)|0;I=kf(t|0,C|0,o|0,I|0)|0;o=C;g=pf(A|0,g|0,21)|0;g=kf(B|0,h|0,g|0,C|0)|0;h=C;B=lf(H|0,G|0,1048576,0)|0;B=mf(B|0,C|0,21)|0;A=C;s=lf(w|0,s|0,B|0,A|0)|0;w=C;A=pf(B|0,A|0,21)|0;B=C;t=lf(ba|0,aa|0,1048576,0)|0;t=mf(t|0,C|0,21)|0;E=C;v=pf(t|0,E|0,21)|0;q=C;p=lf(V|0,U|0,1048576,0)|0;p=mf(p|0,C|0,21)|0;n=C;r=pf(p|0,n|0,21)|0;z=C;k=lf(L|0,K|0,1048576,0)|0;k=mf(k|0,C|0,21)|0;m=C;l=lf(i|0,l|0,k|0,m|0)|0;i=C;m=pf(k|0,m|0,21)|0;k=C;f=lf(F|0,c|0,1048576,0)|0;f=mf(f|0,C|0,21)|0;j=C;h=lf(g|0,h|0,f|0,j|0)|0;g=C;j=pf(f|0,j|0,21)|0;j=kf(F|0,c|0,j|0,C|0)|0;c=C;F=lf(I|0,o|0,1048576,0)|0;F=mf(F|0,C|0,21)|0;f=C;D=pf(F|0,f|0,21)|0;D=kf(I|0,o|0,D|0,C|0)|0;o=C;I=lf(s|0,w|0,1048576,0)|0;I=mf(I|0,C|0,21)|0;J=C;e=pf(I|0,J|0,21)|0;e=kf(s|0,w|0,e|0,C|0)|0;w=C;s=vf(I|0,J|0,666643,0)|0;s=lf(da|0,x|0,s|0,C|0)|0;x=C;da=vf(I|0,J|0,470296,0)|0;ca=C;$=vf(I|0,J|0,654183,0)|0;_=C;T=vf(I|0,J|0,-997805,-1)|0;S=C;R=vf(I|0,J|0,136657,0)|0;Q=C;J=vf(I|0,J|0,-683901,-1)|0;I=C;u=mf(s|0,x|0,21)|0;y=C;aa=lf(da|0,ca|0,ba|0,aa|0)|0;q=kf(aa|0,C|0,v|0,q|0)|0;q=lf(q|0,C|0,u|0,y|0)|0;v=C;y=pf(u|0,y|0,21)|0;y=kf(s|0,x|0,y|0,C|0)|0;x=C;s=mf(q|0,v|0,21)|0;u=C;Y=lf($|0,_|0,Z|0,Y|0)|0;W=kf(Y|0,C|0,X|0,W|0)|0;E=lf(W|0,C|0,t|0,E|0)|0;E=lf(E|0,C|0,s|0,u|0)|0;t=C;u=pf(s|0,u|0,21)|0;u=kf(q|0,v|0,u|0,C|0)|0;v=C;q=mf(E|0,t|0,21)|0;s=C;S=lf(V|0,U|0,T|0,S|0)|0;z=kf(S|0,C|0,r|0,z|0)|0;z=lf(z|0,C|0,q|0,s|0)|0;r=C;s=pf(q|0,s|0,21)|0;s=kf(E|0,t|0,s|0,C|0)|0;t=C;E=mf(z|0,r|0,21)|0;q=C;O=lf(R|0,Q|0,P|0,O|0)|0;M=kf(O|0,C|0,N|0,M|0)|0;n=lf(M|0,C|0,p|0,n|0)|0;n=lf(n|0,C|0,E|0,q|0)|0;p=C;q=pf(E|0,q|0,21)|0;q=kf(z|0,r|0,q|0,C|0)|0;r=C;z=mf(n|0,p|0,21)|0;E=C;I=lf(L|0,K|0,J|0,I|0)|0;k=kf(I|0,C|0,m|0,k|0)|0;k=lf(k|0,C|0,z|0,E|0)|0;m=C;E=pf(z|0,E|0,21)|0;E=kf(n|0,p|0,E|0,C|0)|0;p=C;n=mf(k|0,m|0,21)|0;z=C;i=lf(l|0,i|0,n|0,z|0)|0;l=C;z=pf(n|0,z|0,21)|0;z=kf(k|0,m|0,z|0,C|0)|0;m=C;k=mf(i|0,l|0,21)|0;n=C;c=lf(k|0,n|0,j|0,c|0)|0;j=C;n=pf(k|0,n|0,21)|0;n=kf(i|0,l|0,n|0,C|0)|0;l=C;i=mf(c|0,j|0,21)|0;k=C;g=lf(h|0,g|0,i|0,k|0)|0;h=C;k=pf(i|0,k|0,21)|0;k=kf(c|0,j|0,k|0,C|0)|0;j=C;c=mf(g|0,h|0,21)|0;i=C;o=lf(c|0,i|0,D|0,o|0)|0;D=C;i=pf(c|0,i|0,21)|0;i=kf(g|0,h|0,i|0,C|0)|0;h=C;g=mf(o|0,D|0,21)|0;c=C;f=lf(H|0,G|0,F|0,f|0)|0;B=kf(f|0,C|0,A|0,B|0)|0;B=lf(B|0,C|0,g|0,c|0)|0;A=C;c=pf(g|0,c|0,21)|0;c=kf(o|0,D|0,c|0,C|0)|0;D=C;o=mf(B|0,A|0,21)|0;g=C;w=lf(o|0,g|0,e|0,w|0)|0;e=C;g=pf(o|0,g|0,21)|0;g=kf(B|0,A|0,g|0,C|0)|0;A=C;B=mf(w|0,e|0,21)|0;o=C;f=pf(B|0,o|0,21)|0;f=kf(w|0,e|0,f|0,C|0)|0;e=C;w=vf(B|0,o|0,666643,0)|0;x=lf(w|0,C|0,y|0,x|0)|0;y=C;w=vf(B|0,o|0,470296,0)|0;w=lf(u|0,v|0,w|0,C|0)|0;v=C;u=vf(B|0,o|0,654183,0)|0;u=lf(s|0,t|0,u|0,C|0)|0;t=C;s=vf(B|0,o|0,-997805,-1)|0;s=lf(q|0,r|0,s|0,C|0)|0;r=C;q=vf(B|0,o|0,136657,0)|0;q=lf(E|0,p|0,q|0,C|0)|0;p=C;o=vf(B|0,o|0,-683901,-1)|0;o=lf(z|0,m|0,o|0,C|0)|0;m=C;z=mf(x|0,y|0,21)|0;B=C;v=lf(w|0,v|0,z|0,B|0)|0;w=C;B=pf(z|0,B|0,21)|0;B=kf(x|0,y|0,B|0,C|0)|0;y=C;x=mf(v|0,w|0,21)|0;z=C;t=lf(u|0,t|0,x|0,z|0)|0;u=C;z=pf(x|0,z|0,21)|0;z=kf(v|0,w|0,z|0,C|0)|0;w=C;v=mf(t|0,u|0,21)|0;x=C;r=lf(s|0,r|0,v|0,x|0)|0;s=C;x=pf(v|0,x|0,21)|0;x=kf(t|0,u|0,x|0,C|0)|0;u=C;t=mf(r|0,s|0,21)|0;v=C;p=lf(q|0,p|0,t|0,v|0)|0;q=C;v=pf(t|0,v|0,21)|0;v=kf(r|0,s|0,v|0,C|0)|0;s=C;r=mf(p|0,q|0,21)|0;t=C;m=lf(o|0,m|0,r|0,t|0)|0;o=C;t=pf(r|0,t|0,21)|0;t=kf(p|0,q|0,t|0,C|0)|0;q=C;p=mf(m|0,o|0,21)|0;r=C;l=lf(p|0,r|0,n|0,l|0)|0;n=C;r=pf(p|0,r|0,21)|0;r=kf(m|0,o|0,r|0,C|0)|0;o=C;m=mf(l|0,n|0,21)|0;p=C;j=lf(m|0,p|0,k|0,j|0)|0;k=C;p=pf(m|0,p|0,21)|0;p=kf(l|0,n|0,p|0,C|0)|0;n=C;l=mf(j|0,k|0,21)|0;m=C;h=lf(l|0,m|0,i|0,h|0)|0;i=C;m=pf(l|0,m|0,21)|0;m=kf(j|0,k|0,m|0,C|0)|0;k=C;j=mf(h|0,i|0,21)|0;l=C;D=lf(j|0,l|0,c|0,D|0)|0;c=C;l=pf(j|0,l|0,21)|0;l=kf(h|0,i|0,l|0,C|0)|0;i=C;h=mf(D|0,c|0,21)|0;j=C;A=lf(h|0,j|0,g|0,A|0)|0;g=C;j=pf(h|0,j|0,21)|0;j=kf(D|0,c|0,j|0,C|0)|0;c=C;D=mf(A|0,g|0,21)|0;h=C;e=lf(D|0,h|0,f|0,e|0)|0;f=C;h=pf(D|0,h|0,21)|0;h=kf(A|0,g|0,h|0,C|0)|0;g=C;a[b>>0]=B;A=of(B|0,y|0,8)|0;a[b+1>>0]=A;y=of(B|0,y|0,16)|0;B=C;A=pf(z|0,w|0,5)|0;a[b+2>>0]=A|y;y=of(z|0,w|0,3)|0;a[b+3>>0]=y;y=of(z|0,w|0,11)|0;a[b+4>>0]=y;w=of(z|0,w|0,19)|0;z=C;y=pf(x|0,u|0,2)|0;a[b+5>>0]=y|w;w=of(x|0,u|0,6)|0;a[b+6>>0]=w;u=of(x|0,u|0,14)|0;x=C;w=pf(v|0,s|0,7)|0;a[b+7>>0]=w|u;u=of(v|0,s|0,1)|0;a[b+8>>0]=u;u=of(v|0,s|0,9)|0;a[b+9>>0]=u;s=of(v|0,s|0,17)|0;v=C;u=pf(t|0,q|0,4)|0;a[b+10>>0]=u|s;s=of(t|0,q|0,4)|0;a[b+11>>0]=s;s=of(t|0,q|0,12)|0;a[b+12>>0]=s;q=of(t|0,q|0,20)|0;t=C;s=pf(r|0,o|0,1)|0;a[b+13>>0]=s|q;q=of(r|0,o|0,7)|0;a[b+14>>0]=q;o=of(r|0,o|0,15)|0;r=C;q=pf(p|0,n|0,6)|0;a[b+15>>0]=q|o;o=of(p|0,n|0,2)|0;a[b+16>>0]=o;o=of(p|0,n|0,10)|0;a[b+17>>0]=o;n=of(p|0,n|0,18)|0;p=C;o=pf(m|0,k|0,3)|0;a[b+18>>0]=o|n;n=of(m|0,k|0,5)|0;a[b+19>>0]=n;k=of(m|0,k|0,13)|0;a[b+20>>0]=k;a[b+21>>0]=l;k=of(l|0,i|0,8)|0;a[b+22>>0]=k;i=of(l|0,i|0,16)|0;l=C;k=pf(j|0,c|0,5)|0;a[b+23>>0]=k|i;i=of(j|0,c|0,3)|0;a[b+24>>0]=i;i=of(j|0,c|0,11)|0;a[b+25>>0]=i;c=of(j|0,c|0,19)|0;j=C;i=pf(h|0,g|0,2)|0;a[b+26>>0]=i|c;c=of(h|0,g|0,6)|0;a[b+27>>0]=c;g=of(h|0,g|0,14)|0;h=C;c=pf(e|0,f|0,7)|0;a[b+28>>0]=g|c;c=of(e|0,f|0,1)|0;a[b+29>>0]=c;c=of(e|0,f|0,9)|0;a[b+30>>0]=c;f=of(e|0,f|0,17)|0;a[b+31>>0]=f;return}function Nd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;j=b+44|0;m=b+48|0;p=b+52|0;s=b+56|0;v=b+60|0;y=b+64|0;B=b+68|0;E=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;l=b+16|0;n=b+20|0;u=b+24|0;w=b+28|0;D=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[j>>2]|0)|0;fa=(c[P>>2]|0)+(c[m>>2]|0)|0;ea=(c[e>>2]|0)+(c[p>>2]|0)|0;da=(c[l>>2]|0)+(c[s>>2]|0)|0;ca=(c[n>>2]|0)+(c[v>>2]|0)|0;ba=(c[u>>2]|0)+(c[y>>2]|0)|0;aa=(c[w>>2]|0)+(c[B>>2]|0)|0;$=(c[D>>2]|0)+(c[E>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[j>>2]|0)-(c[S>>2]|0)|0;P=(c[m>>2]|0)-(c[P>>2]|0)|0;e=(c[p>>2]|0)-(c[e>>2]|0)|0;l=(c[s>>2]|0)-(c[l>>2]|0)|0;n=(c[v>>2]|0)-(c[n>>2]|0)|0;u=(c[y>>2]|0)-(c[u>>2]|0)|0;w=(c[B>>2]|0)-(c[w>>2]|0)|0;D=(c[E>>2]|0)-(c[D>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=l;l=a+60|0;c[l>>2]=n;n=a+64|0;c[n>>2]=u;u=a+68|0;c[u>>2]=w;w=a+72|0;c[w>>2]=D;D=a+76|0;c[D>>2]=O;O=a+80|0;Hd(O,a,d);Hd(Y,Y,d+40|0);C=a+120|0;Hd(C,d+120|0,b+120|0);Hd(a,b+80|0,d+80|0);E=c[a>>2]<<1;B=c[ha>>2]<<1;y=c[ga>>2]<<1;v=c[fa>>2]<<1;s=c[ea>>2]<<1;p=c[da>>2]<<1;m=c[ca>>2]<<1;j=c[ba>>2]<<1;g=c[aa>>2]<<1;b=c[$>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;f=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;o=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;x=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;d=c[e>>2]|0;i=c[l>>2]|0;k=c[n>>2]|0;r=c[u>>2]|0;t=c[w>>2]|0;A=c[D>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=f-d;c[da>>2]=h-i;c[ca>>2]=o-k;c[ba>>2]=q-r;c[aa>>2]=x-t;c[$>>2]=z-A;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=d+f;c[l>>2]=i+h;c[n>>2]=k+o;c[u>>2]=r+q;c[w>>2]=t+x;c[D>>2]=A+z;D=c[C>>2]|0;z=a+124|0;A=c[z>>2]|0;w=a+128|0;x=c[w>>2]|0;t=a+132|0;u=c[t>>2]|0;q=a+136|0;r=c[q>>2]|0;n=a+140|0;o=c[n>>2]|0;k=a+144|0;l=c[k>>2]|0;h=a+148|0;i=c[h>>2]|0;e=a+152|0;f=c[e>>2]|0;a=a+156|0;d=c[a>>2]|0;c[O>>2]=D+E;c[N>>2]=A+B;c[M>>2]=x+y;c[L>>2]=u+v;c[K>>2]=r+s;c[J>>2]=o+p;c[I>>2]=l+m;c[H>>2]=i+j;c[G>>2]=f+g;c[F>>2]=d+b;c[C>>2]=E-D;c[z>>2]=B-A;c[w>>2]=y-x;c[t>>2]=v-u;c[q>>2]=s-r;c[n>>2]=p-o;c[k>>2]=m-l;c[h>>2]=j-i;c[e>>2]=g-f;c[a>>2]=b-d;return}function Od(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+2400|0;q=x+1760|0;t=x+2136|0;u=x+1880|0;s=x+480|0;v=x+320|0;w=x+160|0;r=x;h=0;do{a[t+h>>0]=(d[e+(h>>3)>>0]|0)>>>(h&7)&1;h=h+1|0}while((h|0)!=256);p=0;while(1){n=t+p|0;a:do if(a[n>>0]|0){o=1;do{h=o+p|0;if((h|0)>=256)break a;e=t+h|0;m=a[e>>0]|0;b:do if(m<<24>>24){j=a[n>>0]|0;k=m<<24>>24<<o;l=j+k|0;if((l|0)<16){a[n>>0]=l;a[e>>0]=0;break}e=j-k|0;if((e|0)<=-16)break a;a[n>>0]=e;e=t+h|0;if(m<<24>>24)do{a[e>>0]=0;h=h+1|0;if((h|0)>=256)break b;e=t+h|0}while((a[t+h>>0]|0)!=0);a[e>>0]=1}while(0);o=o+1|0}while((o|0)<7)}while(0);p=p+1|0;if((p|0)==256){e=0;break}}do{a[u+e>>0]=(d[g+(e>>3)>>0]|0)>>>(e&7)&1;e=e+1|0}while((e|0)!=256);p=0;do{n=u+p|0;c:do if(a[n>>0]|0){o=1;do{h=o+p|0;if((h|0)>=256)break c;e=u+h|0;m=a[e>>0]|0;d:do if(m<<24>>24){j=a[n>>0]|0;k=m<<24>>24<<o;l=j+k|0;if((l|0)<16){a[n>>0]=l;a[e>>0]=0;break}e=j-k|0;if((e|0)<=-16)break c;a[n>>0]=e;e=u+h|0;if(m<<24>>24)do{a[e>>0]=0;h=h+1|0;if((h|0)>=256)break d;e=u+h|0}while((a[u+h>>0]|0)!=0);a[e>>0]=1}while(0);o=o+1|0}while((o|0)<7)}while(0);p=p+1|0}while((p|0)!=256);Pd(s,f);k=c[f+4>>2]|0;h=c[f+8>>2]|0;e=c[f+12>>2]|0;g=c[f+16>>2]|0;p=c[f+20>>2]|0;o=c[f+24>>2]|0;n=c[f+28>>2]|0;m=c[f+32>>2]|0;l=c[f+36>>2]|0;c[q>>2]=c[f>>2];c[q+4>>2]=k;c[q+8>>2]=h;c[q+12>>2]=e;c[q+16>>2]=g;c[q+20>>2]=p;c[q+24>>2]=o;c[q+28>>2]=n;c[q+32>>2]=m;c[q+36>>2]=l;l=c[f+44>>2]|0;m=c[f+48>>2]|0;n=c[f+52>>2]|0;o=c[f+56>>2]|0;p=c[f+60>>2]|0;g=c[f+64>>2]|0;e=c[f+68>>2]|0;h=c[f+72>>2]|0;k=c[f+76>>2]|0;c[q+40>>2]=c[f+40>>2];c[q+44>>2]=l;c[q+48>>2]=m;c[q+52>>2]=n;c[q+56>>2]=o;c[q+60>>2]=p;c[q+64>>2]=g;c[q+68>>2]=e;c[q+72>>2]=h;c[q+76>>2]=k;k=c[f+84>>2]|0;h=c[f+88>>2]|0;e=c[f+92>>2]|0;g=c[f+96>>2]|0;p=c[f+100>>2]|0;o=c[f+104>>2]|0;n=c[f+108>>2]|0;m=c[f+112>>2]|0;l=c[f+116>>2]|0;c[q+80>>2]=c[f+80>>2];c[q+84>>2]=k;c[q+88>>2]=h;c[q+92>>2]=e;c[q+96>>2]=g;c[q+100>>2]=p;c[q+104>>2]=o;c[q+108>>2]=n;c[q+112>>2]=m;c[q+116>>2]=l;Qd(v,q);l=v+120|0;Hd(r,v,l);m=v+40|0;n=v+80|0;Hd(r+40|0,m,n);Hd(r+80|0,n,l);Hd(r+120|0,v,m);Nd(v,r,s);Hd(w,v,l);o=w+40|0;Hd(o,m,n);p=w+80|0;Hd(p,n,l);g=w+120|0;Hd(g,v,m);e=s+160|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+320|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+480|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+640|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+800|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);e=s+960|0;Pd(e,w);Nd(v,r,e);Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Pd(s+1120|0,w);e=b;h=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));j=b+40|0;c[j>>2]=1;e=b+44|0;h=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));k=b+80|0;c[k>>2]=1;e=b+84|0;h=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(h|0));h=255;while(1){if(a[t+h>>0]|0){e=h;break}if(a[u+h>>0]|0){e=h;break}e=h+-1|0;if((h|0)>0)h=e;else break}if((e|0)<=-1){i=x;return}while(1){Qd(v,b);h=a[t+e>>0]|0;if(h<<24>>24<=0){if(h<<24>>24<0){Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Rd(v,w,s+(((h<<24>>24|0)/-2|0)*160|0)|0)}}else{Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Nd(v,w,s+(((h<<24>>24|0)/2|0)*160|0)|0)}h=a[u+e>>0]|0;if(h<<24>>24<=0){if(h<<24>>24<0){Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Td(v,w,736+(((h<<24>>24|0)/-2|0)*120|0)|0)}}else{Hd(w,v,l);Hd(o,m,n);Hd(p,n,l);Hd(g,v,m);Sd(v,w,736+(((h<<24>>24|0)/2|0)*120|0)|0)}Hd(b,v,l);Hd(j,m,n);Hd(k,n,l);if((e|0)>0)e=e+-1|0;else break}i=x;return}function Pd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;m=b+40|0;v=b+44|0;u=b+48|0;t=b+52|0;s=b+56|0;r=b+60|0;q=b+64|0;p=b+68|0;o=b+72|0;n=b+76|0;d=b+4|0;e=b+8|0;f=b+12|0;g=b+16|0;h=b+20|0;i=b+24|0;j=b+28|0;k=b+32|0;l=b+36|0;E=(c[d>>2]|0)+(c[v>>2]|0)|0;D=(c[e>>2]|0)+(c[u>>2]|0)|0;C=(c[f>>2]|0)+(c[t>>2]|0)|0;B=(c[g>>2]|0)+(c[s>>2]|0)|0;A=(c[h>>2]|0)+(c[r>>2]|0)|0;z=(c[i>>2]|0)+(c[q>>2]|0)|0;y=(c[j>>2]|0)+(c[p>>2]|0)|0;x=(c[k>>2]|0)+(c[o>>2]|0)|0;w=(c[l>>2]|0)+(c[n>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[m>>2]|0);c[a+4>>2]=E;c[a+8>>2]=D;c[a+12>>2]=C;c[a+16>>2]=B;c[a+20>>2]=A;c[a+24>>2]=z;c[a+28>>2]=y;c[a+32>>2]=x;c[a+36>>2]=w;d=(c[v>>2]|0)-(c[d>>2]|0)|0;e=(c[u>>2]|0)-(c[e>>2]|0)|0;f=(c[t>>2]|0)-(c[f>>2]|0)|0;g=(c[s>>2]|0)-(c[g>>2]|0)|0;h=(c[r>>2]|0)-(c[h>>2]|0)|0;i=(c[q>>2]|0)-(c[i>>2]|0)|0;j=(c[p>>2]|0)-(c[j>>2]|0)|0;k=(c[o>>2]|0)-(c[k>>2]|0)|0;l=(c[n>>2]|0)-(c[l>>2]|0)|0;c[a+40>>2]=(c[m>>2]|0)-(c[b>>2]|0);c[a+44>>2]=d;c[a+48>>2]=e;c[a+52>>2]=f;c[a+56>>2]=g;c[a+60>>2]=h;c[a+64>>2]=i;c[a+68>>2]=j;c[a+72>>2]=k;c[a+76>>2]=l;l=c[b+84>>2]|0;k=c[b+88>>2]|0;j=c[b+92>>2]|0;i=c[b+96>>2]|0;h=c[b+100>>2]|0;g=c[b+104>>2]|0;f=c[b+108>>2]|0;e=c[b+112>>2]|0;d=c[b+116>>2]|0;c[a+80>>2]=c[b+80>>2];c[a+84>>2]=l;c[a+88>>2]=k;c[a+92>>2]=j;c[a+96>>2]=i;c[a+100>>2]=h;c[a+104>>2]=g;c[a+108>>2]=f;c[a+112>>2]=e;c[a+116>>2]=d;Hd(a+120|0,b+120|0,696);return}function Qd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;d=i;i=i+48|0;I=d;Gd(a,b);S=a+80|0;ja=b+40|0;Gd(S,ja);v=a+120|0;Kd(v,b+80|0);ka=a+40|0;ia=(c[b+44>>2]|0)+(c[b+4>>2]|0)|0;ha=(c[b+48>>2]|0)+(c[b+8>>2]|0)|0;ga=(c[b+52>>2]|0)+(c[b+12>>2]|0)|0;fa=(c[b+56>>2]|0)+(c[b+16>>2]|0)|0;ea=(c[b+60>>2]|0)+(c[b+20>>2]|0)|0;da=(c[b+64>>2]|0)+(c[b+24>>2]|0)|0;ca=(c[b+68>>2]|0)+(c[b+28>>2]|0)|0;ba=(c[b+72>>2]|0)+(c[b+32>>2]|0)|0;aa=(c[b+76>>2]|0)+(c[b+36>>2]|0)|0;c[ka>>2]=(c[ja>>2]|0)+(c[b>>2]|0);ja=a+44|0;c[ja>>2]=ia;ia=a+48|0;c[ia>>2]=ha;ha=a+52|0;c[ha>>2]=ga;ga=a+56|0;c[ga>>2]=fa;fa=a+60|0;c[fa>>2]=ea;ea=a+64|0;c[ea>>2]=da;da=a+68|0;c[da>>2]=ca;ca=a+72|0;c[ca>>2]=ba;ba=a+76|0;c[ba>>2]=aa;Gd(I,ka);aa=c[S>>2]|0;R=a+84|0;$=c[R>>2]|0;Q=a+88|0;_=c[Q>>2]|0;P=a+92|0;Z=c[P>>2]|0;O=a+96|0;Y=c[O>>2]|0;N=a+100|0;X=c[N>>2]|0;M=a+104|0;W=c[M>>2]|0;L=a+108|0;V=c[L>>2]|0;K=a+112|0;U=c[K>>2]|0;J=a+116|0;T=c[J>>2]|0;w=c[a>>2]|0;F=a+4|0;u=c[F>>2]|0;D=a+8|0;s=c[D>>2]|0;B=a+12|0;q=c[B>>2]|0;z=a+16|0;o=c[z>>2]|0;x=a+20|0;m=c[x>>2]|0;g=a+24|0;k=c[g>>2]|0;l=a+28|0;h=c[l>>2]|0;p=a+32|0;f=c[p>>2]|0;t=a+36|0;b=c[t>>2]|0;H=w+aa|0;G=u+$|0;E=s+_|0;C=q+Z|0;A=o+Y|0;y=m+X|0;e=k+W|0;j=h+V|0;n=f+U|0;r=b+T|0;c[ka>>2]=H;c[ja>>2]=G;c[ia>>2]=E;c[ha>>2]=C;c[ga>>2]=A;c[fa>>2]=y;c[ea>>2]=e;c[da>>2]=j;c[ca>>2]=n;c[ba>>2]=r;w=aa-w|0;u=$-u|0;s=_-s|0;q=Z-q|0;o=Y-o|0;m=X-m|0;k=W-k|0;h=V-h|0;f=U-f|0;b=T-b|0;c[S>>2]=w;c[R>>2]=u;c[Q>>2]=s;c[P>>2]=q;c[O>>2]=o;c[N>>2]=m;c[M>>2]=k;c[L>>2]=h;c[K>>2]=f;c[J>>2]=b;G=(c[I+4>>2]|0)-G|0;E=(c[I+8>>2]|0)-E|0;C=(c[I+12>>2]|0)-C|0;A=(c[I+16>>2]|0)-A|0;y=(c[I+20>>2]|0)-y|0;e=(c[I+24>>2]|0)-e|0;j=(c[I+28>>2]|0)-j|0;n=(c[I+32>>2]|0)-n|0;r=(c[I+36>>2]|0)-r|0;c[a>>2]=(c[I>>2]|0)-H;c[F>>2]=G;c[D>>2]=E;c[B>>2]=C;c[z>>2]=A;c[x>>2]=y;c[g>>2]=e;c[l>>2]=j;c[p>>2]=n;c[t>>2]=r;t=a+124|0;r=a+128|0;p=a+132|0;n=a+136|0;l=a+140|0;j=a+144|0;g=a+148|0;e=a+152|0;a=a+156|0;u=(c[t>>2]|0)-u|0;s=(c[r>>2]|0)-s|0;q=(c[p>>2]|0)-q|0;o=(c[n>>2]|0)-o|0;m=(c[l>>2]|0)-m|0;k=(c[j>>2]|0)-k|0;h=(c[g>>2]|0)-h|0;f=(c[e>>2]|0)-f|0;b=(c[a>>2]|0)-b|0;c[v>>2]=(c[v>>2]|0)-w;c[t>>2]=u;c[r>>2]=s;c[p>>2]=q;c[n>>2]=o;c[l>>2]=m;c[j>>2]=k;c[g>>2]=h;c[e>>2]=f;c[a>>2]=b;i=d;return}function Rd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;i=b+44|0;l=b+48|0;o=b+52|0;r=b+56|0;u=b+60|0;x=b+64|0;A=b+68|0;D=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;m=b+16|0;n=b+20|0;v=b+24|0;w=b+28|0;E=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[i>>2]|0)|0;fa=(c[P>>2]|0)+(c[l>>2]|0)|0;ea=(c[e>>2]|0)+(c[o>>2]|0)|0;da=(c[m>>2]|0)+(c[r>>2]|0)|0;ca=(c[n>>2]|0)+(c[u>>2]|0)|0;ba=(c[v>>2]|0)+(c[x>>2]|0)|0;aa=(c[w>>2]|0)+(c[A>>2]|0)|0;$=(c[E>>2]|0)+(c[D>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[i>>2]|0)-(c[S>>2]|0)|0;P=(c[l>>2]|0)-(c[P>>2]|0)|0;e=(c[o>>2]|0)-(c[e>>2]|0)|0;m=(c[r>>2]|0)-(c[m>>2]|0)|0;n=(c[u>>2]|0)-(c[n>>2]|0)|0;v=(c[x>>2]|0)-(c[v>>2]|0)|0;w=(c[A>>2]|0)-(c[w>>2]|0)|0;E=(c[D>>2]|0)-(c[E>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=m;m=a+60|0;c[m>>2]=n;n=a+64|0;c[n>>2]=v;v=a+68|0;c[v>>2]=w;w=a+72|0;c[w>>2]=E;E=a+76|0;c[E>>2]=O;O=a+80|0;Hd(O,a,d+40|0);Hd(Y,Y,d);C=a+120|0;Hd(C,d+120|0,b+120|0);Hd(a,b+80|0,d+80|0);D=c[a>>2]<<1;A=c[ha>>2]<<1;x=c[ga>>2]<<1;u=c[fa>>2]<<1;r=c[ea>>2]<<1;o=c[da>>2]<<1;l=c[ca>>2]<<1;i=c[ba>>2]<<1;f=c[aa>>2]<<1;d=c[$>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;g=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;p=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;y=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;b=c[e>>2]|0;j=c[m>>2]|0;k=c[n>>2]|0;s=c[v>>2]|0;t=c[w>>2]|0;B=c[E>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=g-b;c[da>>2]=h-j;c[ca>>2]=p-k;c[ba>>2]=q-s;c[aa>>2]=y-t;c[$>>2]=z-B;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=b+g;c[m>>2]=j+h;c[n>>2]=k+p;c[v>>2]=s+q;c[w>>2]=t+y;c[E>>2]=B+z;E=c[C>>2]|0;z=a+124|0;B=c[z>>2]|0;w=a+128|0;y=c[w>>2]|0;t=a+132|0;v=c[t>>2]|0;q=a+136|0;s=c[q>>2]|0;n=a+140|0;p=c[n>>2]|0;k=a+144|0;m=c[k>>2]|0;h=a+148|0;j=c[h>>2]|0;e=a+152|0;g=c[e>>2]|0;a=a+156|0;b=c[a>>2]|0;c[O>>2]=D-E;c[N>>2]=A-B;c[M>>2]=x-y;c[L>>2]=u-v;c[K>>2]=r-s;c[J>>2]=o-p;c[I>>2]=l-m;c[H>>2]=i-j;c[G>>2]=f-g;c[F>>2]=d-b;c[C>>2]=E+D;c[z>>2]=B+A;c[w>>2]=y+x;c[t>>2]=v+u;c[q>>2]=s+r;c[n>>2]=p+o;c[k>>2]=m+l;c[h>>2]=j+i;c[e>>2]=g+f;c[a>>2]=b+d;return}function Sd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;j=b+44|0;m=b+48|0;p=b+52|0;s=b+56|0;v=b+60|0;y=b+64|0;B=b+68|0;E=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;l=b+16|0;n=b+20|0;u=b+24|0;w=b+28|0;D=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[j>>2]|0)|0;fa=(c[P>>2]|0)+(c[m>>2]|0)|0;ea=(c[e>>2]|0)+(c[p>>2]|0)|0;da=(c[l>>2]|0)+(c[s>>2]|0)|0;ca=(c[n>>2]|0)+(c[v>>2]|0)|0;ba=(c[u>>2]|0)+(c[y>>2]|0)|0;aa=(c[w>>2]|0)+(c[B>>2]|0)|0;$=(c[D>>2]|0)+(c[E>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[j>>2]|0)-(c[S>>2]|0)|0;P=(c[m>>2]|0)-(c[P>>2]|0)|0;e=(c[p>>2]|0)-(c[e>>2]|0)|0;l=(c[s>>2]|0)-(c[l>>2]|0)|0;n=(c[v>>2]|0)-(c[n>>2]|0)|0;u=(c[y>>2]|0)-(c[u>>2]|0)|0;w=(c[B>>2]|0)-(c[w>>2]|0)|0;D=(c[E>>2]|0)-(c[D>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=l;l=a+60|0;c[l>>2]=n;n=a+64|0;c[n>>2]=u;u=a+68|0;c[u>>2]=w;w=a+72|0;c[w>>2]=D;D=a+76|0;c[D>>2]=O;O=a+80|0;Hd(O,a,d);Hd(Y,Y,d+40|0);C=a+120|0;Hd(C,d+80|0,b+120|0);E=c[b+80>>2]<<1;B=c[b+84>>2]<<1;y=c[b+88>>2]<<1;v=c[b+92>>2]<<1;s=c[b+96>>2]<<1;p=c[b+100>>2]<<1;m=c[b+104>>2]<<1;j=c[b+108>>2]<<1;g=c[b+112>>2]<<1;b=c[b+116>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;f=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;o=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;x=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;d=c[e>>2]|0;i=c[l>>2]|0;k=c[n>>2]|0;r=c[u>>2]|0;t=c[w>>2]|0;A=c[D>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=f-d;c[da>>2]=h-i;c[ca>>2]=o-k;c[ba>>2]=q-r;c[aa>>2]=x-t;c[$>>2]=z-A;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=d+f;c[l>>2]=i+h;c[n>>2]=k+o;c[u>>2]=r+q;c[w>>2]=t+x;c[D>>2]=A+z;D=c[C>>2]|0;z=a+124|0;A=c[z>>2]|0;w=a+128|0;x=c[w>>2]|0;t=a+132|0;u=c[t>>2]|0;q=a+136|0;r=c[q>>2]|0;n=a+140|0;o=c[n>>2]|0;k=a+144|0;l=c[k>>2]|0;h=a+148|0;i=c[h>>2]|0;e=a+152|0;f=c[e>>2]|0;a=a+156|0;d=c[a>>2]|0;c[O>>2]=D+E;c[N>>2]=A+B;c[M>>2]=x+y;c[L>>2]=u+v;c[K>>2]=r+s;c[J>>2]=o+p;c[I>>2]=l+m;c[H>>2]=i+j;c[G>>2]=f+g;c[F>>2]=d+b;c[C>>2]=E-D;c[z>>2]=B-A;c[w>>2]=y-x;c[t>>2]=v-u;c[q>>2]=s-r;c[n>>2]=p-o;c[k>>2]=m-l;c[h>>2]=j-i;c[e>>2]=g-f;c[a>>2]=b-d;return}function Td(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;V=b+40|0;i=b+44|0;l=b+48|0;o=b+52|0;r=b+56|0;u=b+60|0;x=b+64|0;A=b+68|0;D=b+72|0;C=b+76|0;S=b+4|0;P=b+8|0;e=b+12|0;m=b+16|0;n=b+20|0;v=b+24|0;w=b+28|0;E=b+32|0;O=b+36|0;ga=(c[S>>2]|0)+(c[i>>2]|0)|0;fa=(c[P>>2]|0)+(c[l>>2]|0)|0;ea=(c[e>>2]|0)+(c[o>>2]|0)|0;da=(c[m>>2]|0)+(c[r>>2]|0)|0;ca=(c[n>>2]|0)+(c[u>>2]|0)|0;ba=(c[v>>2]|0)+(c[x>>2]|0)|0;aa=(c[w>>2]|0)+(c[A>>2]|0)|0;$=(c[E>>2]|0)+(c[D>>2]|0)|0;Y=(c[O>>2]|0)+(c[C>>2]|0)|0;c[a>>2]=(c[b>>2]|0)+(c[V>>2]|0);ha=a+4|0;c[ha>>2]=ga;ga=a+8|0;c[ga>>2]=fa;fa=a+12|0;c[fa>>2]=ea;ea=a+16|0;c[ea>>2]=da;da=a+20|0;c[da>>2]=ca;ca=a+24|0;c[ca>>2]=ba;ba=a+28|0;c[ba>>2]=aa;aa=a+32|0;c[aa>>2]=$;$=a+36|0;c[$>>2]=Y;Y=a+40|0;S=(c[i>>2]|0)-(c[S>>2]|0)|0;P=(c[l>>2]|0)-(c[P>>2]|0)|0;e=(c[o>>2]|0)-(c[e>>2]|0)|0;m=(c[r>>2]|0)-(c[m>>2]|0)|0;n=(c[u>>2]|0)-(c[n>>2]|0)|0;v=(c[x>>2]|0)-(c[v>>2]|0)|0;w=(c[A>>2]|0)-(c[w>>2]|0)|0;E=(c[D>>2]|0)-(c[E>>2]|0)|0;O=(c[C>>2]|0)-(c[O>>2]|0)|0;c[Y>>2]=(c[V>>2]|0)-(c[b>>2]|0);V=a+44|0;c[V>>2]=S;S=a+48|0;c[S>>2]=P;P=a+52|0;c[P>>2]=e;e=a+56|0;c[e>>2]=m;m=a+60|0;c[m>>2]=n;n=a+64|0;c[n>>2]=v;v=a+68|0;c[v>>2]=w;w=a+72|0;c[w>>2]=E;E=a+76|0;c[E>>2]=O;O=a+80|0;Hd(O,a,d+40|0);Hd(Y,Y,d);C=a+120|0;Hd(C,d+80|0,b+120|0);D=c[b+80>>2]<<1;A=c[b+84>>2]<<1;x=c[b+88>>2]<<1;u=c[b+92>>2]<<1;r=c[b+96>>2]<<1;o=c[b+100>>2]<<1;l=c[b+104>>2]<<1;i=c[b+108>>2]<<1;f=c[b+112>>2]<<1;d=c[b+116>>2]<<1;Z=c[O>>2]|0;N=a+84|0;W=c[N>>2]|0;M=a+88|0;T=c[M>>2]|0;L=a+92|0;Q=c[L>>2]|0;K=a+96|0;g=c[K>>2]|0;J=a+100|0;h=c[J>>2]|0;I=a+104|0;p=c[I>>2]|0;H=a+108|0;q=c[H>>2]|0;G=a+112|0;y=c[G>>2]|0;F=a+116|0;z=c[F>>2]|0;_=c[Y>>2]|0;X=c[V>>2]|0;U=c[S>>2]|0;R=c[P>>2]|0;b=c[e>>2]|0;j=c[m>>2]|0;k=c[n>>2]|0;s=c[v>>2]|0;t=c[w>>2]|0;B=c[E>>2]|0;c[a>>2]=Z-_;c[ha>>2]=W-X;c[ga>>2]=T-U;c[fa>>2]=Q-R;c[ea>>2]=g-b;c[da>>2]=h-j;c[ca>>2]=p-k;c[ba>>2]=q-s;c[aa>>2]=y-t;c[$>>2]=z-B;c[Y>>2]=_+Z;c[V>>2]=X+W;c[S>>2]=U+T;c[P>>2]=R+Q;c[e>>2]=b+g;c[m>>2]=j+h;c[n>>2]=k+p;c[v>>2]=s+q;c[w>>2]=t+y;c[E>>2]=B+z;E=c[C>>2]|0;z=a+124|0;B=c[z>>2]|0;w=a+128|0;y=c[w>>2]|0;t=a+132|0;v=c[t>>2]|0;q=a+136|0;s=c[q>>2]|0;n=a+140|0;p=c[n>>2]|0;k=a+144|0;m=c[k>>2]|0;h=a+148|0;j=c[h>>2]|0;e=a+152|0;g=c[e>>2]|0;a=a+156|0;b=c[a>>2]|0;c[O>>2]=D-E;c[N>>2]=A-B;c[M>>2]=x-y;c[L>>2]=u-v;c[K>>2]=r-s;c[J>>2]=o-p;c[I>>2]=l-m;c[H>>2]=i-j;c[G>>2]=f-g;c[F>>2]=d-b;c[C>>2]=E+D;c[z>>2]=B+A;c[w>>2]=y+x;c[t>>2]=v+u;c[q>>2]=s+r;c[n>>2]=p+o;c[k>>2]=m+l;c[h>>2]=j+i;c[e>>2]=g+f;c[a>>2]=b+d;return}\nfunction Ud(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;pa=i;i=i+240|0;ma=pa+200|0;na=pa+160|0;k=pa+120|0;l=pa+80|0;oa=pa+40|0;la=pa;ka=b+40|0;Ed(ka,e);h=b+80|0;c[h>>2]=1;j=b+84|0;f=j;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));Gd(na,ka);Hd(k,na,1696);ha=na+4|0;ia=na+8|0;ja=na+12|0;ba=na+16|0;ca=na+20|0;da=na+24|0;ea=na+28|0;fa=na+32|0;ga=na+36|0;B=c[h>>2]|0;A=c[j>>2]|0;y=c[b+88>>2]|0;w=c[b+92>>2]|0;u=c[b+96>>2]|0;s=c[b+100>>2]|0;$=c[b+104>>2]|0;Z=c[b+108>>2]|0;X=c[b+112>>2]|0;V=c[b+116>>2]|0;f=(c[na>>2]|0)-B|0;g=(c[ha>>2]|0)-A|0;h=(c[ia>>2]|0)-y|0;j=(c[ja>>2]|0)-w|0;r=(c[ba>>2]|0)-u|0;q=(c[ca>>2]|0)-s|0;m=(c[da>>2]|0)-$|0;n=(c[ea>>2]|0)-Z|0;o=(c[fa>>2]|0)-X|0;p=(c[ga>>2]|0)-V|0;c[na>>2]=f;c[ha>>2]=g;c[ia>>2]=h;c[ja>>2]=j;c[ba>>2]=r;c[ca>>2]=q;c[da>>2]=m;c[ea>>2]=n;c[fa>>2]=o;c[ga>>2]=p;z=k+4|0;x=k+8|0;v=k+12|0;t=k+16|0;aa=k+20|0;_=k+24|0;Y=k+28|0;W=k+32|0;U=k+36|0;A=A+(c[z>>2]|0)|0;y=y+(c[x>>2]|0)|0;w=w+(c[v>>2]|0)|0;u=u+(c[t>>2]|0)|0;s=s+(c[aa>>2]|0)|0;$=$+(c[_>>2]|0)|0;Z=Z+(c[Y>>2]|0)|0;X=X+(c[W>>2]|0)|0;V=V+(c[U>>2]|0)|0;c[k>>2]=B+(c[k>>2]|0);c[z>>2]=A;c[x>>2]=y;c[v>>2]=w;c[t>>2]=u;c[aa>>2]=s;c[_>>2]=$;c[Y>>2]=Z;c[W>>2]=X;c[U>>2]=V;Gd(l,k);Hd(l,l,k);Gd(b,l);Hd(b,b,k);Hd(b,b,na);Jd(b,b);Hd(b,b,l);Hd(b,b,na);Gd(oa,b);Hd(oa,oa,k);U=oa+4|0;V=oa+8|0;W=oa+12|0;X=oa+16|0;Y=oa+20|0;Z=oa+24|0;_=oa+28|0;$=oa+32|0;aa=oa+36|0;g=(c[U>>2]|0)-g|0;h=(c[V>>2]|0)-h|0;j=(c[W>>2]|0)-j|0;k=(c[X>>2]|0)-r|0;l=(c[Y>>2]|0)-q|0;m=(c[Z>>2]|0)-m|0;n=(c[_>>2]|0)-n|0;o=(c[$>>2]|0)-o|0;p=(c[aa>>2]|0)-p|0;c[la>>2]=(c[oa>>2]|0)-f;f=la+4|0;c[f>>2]=g;g=la+8|0;c[g>>2]=h;h=la+12|0;c[h>>2]=j;j=la+16|0;c[j>>2]=k;k=la+20|0;c[k>>2]=l;l=la+24|0;c[l>>2]=m;m=la+28|0;c[m>>2]=n;n=la+32|0;c[n>>2]=o;o=la+36|0;c[o>>2]=p;Id(ma,la);p=ma+1|0;q=ma+2|0;r=ma+3|0;s=ma+4|0;t=ma+5|0;u=ma+6|0;v=ma+7|0;w=ma+8|0;x=ma+9|0;y=ma+10|0;z=ma+11|0;A=ma+12|0;B=ma+13|0;C=ma+14|0;D=ma+15|0;E=ma+16|0;F=ma+17|0;G=ma+18|0;H=ma+19|0;I=ma+20|0;J=ma+21|0;K=ma+22|0;L=ma+23|0;M=ma+24|0;N=ma+25|0;O=ma+26|0;P=ma+27|0;Q=ma+28|0;R=ma+29|0;S=ma+30|0;T=ma+31|0;do if((a[p>>0]|a[ma>>0]|a[q>>0]|a[r>>0]|a[s>>0]|a[t>>0]|a[u>>0]|a[v>>0]|a[w>>0]|a[x>>0]|a[y>>0]|a[z>>0]|a[A>>0]|a[B>>0]|a[C>>0]|a[D>>0]|a[E>>0]|a[F>>0]|a[G>>0]|a[H>>0]|a[I>>0]|a[J>>0]|a[K>>0]|a[L>>0]|a[M>>0]|a[N>>0]|a[O>>0]|a[P>>0]|a[Q>>0]|a[R>>0]|a[S>>0]|a[T>>0])<<24>>24){U=(c[ha>>2]|0)+(c[U>>2]|0)|0;V=(c[ia>>2]|0)+(c[V>>2]|0)|0;W=(c[ja>>2]|0)+(c[W>>2]|0)|0;ba=(c[ba>>2]|0)+(c[X>>2]|0)|0;ca=(c[ca>>2]|0)+(c[Y>>2]|0)|0;da=(c[da>>2]|0)+(c[Z>>2]|0)|0;ha=(c[ea>>2]|0)+(c[_>>2]|0)|0;ia=(c[fa>>2]|0)+(c[$>>2]|0)|0;ja=(c[ga>>2]|0)+(c[aa>>2]|0)|0;c[la>>2]=(c[na>>2]|0)+(c[oa>>2]|0);c[f>>2]=U;c[g>>2]=V;c[h>>2]=W;c[j>>2]=ba;c[k>>2]=ca;c[l>>2]=da;c[m>>2]=ha;c[n>>2]=ia;c[o>>2]=ja;Id(ma,la);if(!((a[p>>0]|a[ma>>0]|a[q>>0]|a[r>>0]|a[s>>0]|a[t>>0]|a[u>>0]|a[v>>0]|a[w>>0]|a[x>>0]|a[y>>0]|a[z>>0]|a[A>>0]|a[B>>0]|a[C>>0]|a[D>>0]|a[E>>0]|a[F>>0]|a[G>>0]|a[H>>0]|a[I>>0]|a[J>>0]|a[K>>0]|a[L>>0]|a[M>>0]|a[N>>0]|a[O>>0]|a[P>>0]|a[Q>>0]|a[R>>0]|a[S>>0]|a[T>>0])<<24>>24)){Hd(b,b,1736);break}else{oa=-1;i=pa;return oa|0}}while(0);Id(ma,b);if(((d[ma>>0]|0)&1|0)==((d[e+31>>0]|0)>>>7|0)){_=b+4|0;aa=b+8|0;ca=b+12|0;ea=b+16|0;ga=b+20|0;ia=b+24|0;la=b+28|0;ma=b+32|0;oa=b+36|0;Z=0-(c[_>>2]|0)|0;$=0-(c[aa>>2]|0)|0;ba=0-(c[ca>>2]|0)|0;da=0-(c[ea>>2]|0)|0;fa=0-(c[ga>>2]|0)|0;ha=0-(c[ia>>2]|0)|0;ja=0-(c[la>>2]|0)|0;e=0-(c[ma>>2]|0)|0;na=0-(c[oa>>2]|0)|0;c[b>>2]=0-(c[b>>2]|0);c[_>>2]=Z;c[aa>>2]=$;c[ca>>2]=ba;c[ea>>2]=da;c[ga>>2]=fa;c[ia>>2]=ha;c[la>>2]=ja;c[ma>>2]=e;c[oa>>2]=na}Hd(b+120|0,b,ka);oa=0;i=pa;return oa|0}function Vd(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;t=i;i=i+592|0;o=t+400|0;q=t+520|0;r=t+240|0;p=t+120|0;s=t;f=0;do{m=a[e+f>>0]|0;n=f<<1;a[q+n>>0]=m&15;a[q+(n|1)>>0]=(m&255)>>>4;f=f+1|0}while((f|0)!=32);e=0;f=0;do{n=q+f|0;m=(d[n>>0]|0)+e|0;e=(m<<24)+134217728>>28;a[n>>0]=m-(e<<4);f=f+1|0}while((f|0)!=63);f=q+63|0;a[f>>0]=(d[f>>0]|0)+e;e=b;f=e+40|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));m=b+40|0;c[m>>2]=1;k=b+44|0;e=k;f=e+36|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));n=b+80|0;c[n>>2]=1;l=b+84|0;e=l;f=e+76|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0));f=r+120|0;g=r+40|0;h=r+80|0;j=b+120|0;e=1;do{Wd(s,(e|0)/2|0,a[q+e>>0]|0);Sd(r,b,s);Hd(b,r,f);Hd(m,g,h);Hd(n,h,f);Hd(j,r,g);e=e+2|0}while((e|0)<64);B=c[b+4>>2]|0;z=c[b+8>>2]|0;y=c[b+12>>2]|0;x=c[b+16>>2]|0;w=c[b+20>>2]|0;v=c[b+24>>2]|0;u=c[b+28>>2]|0;e=c[b+32>>2]|0;A=c[b+36>>2]|0;c[o>>2]=c[b>>2];c[o+4>>2]=B;c[o+8>>2]=z;c[o+12>>2]=y;c[o+16>>2]=x;c[o+20>>2]=w;c[o+24>>2]=v;c[o+28>>2]=u;c[o+32>>2]=e;c[o+36>>2]=A;A=c[k>>2]|0;e=c[b+48>>2]|0;k=c[b+52>>2]|0;u=c[b+56>>2]|0;v=c[b+60>>2]|0;w=c[b+64>>2]|0;x=c[b+68>>2]|0;y=c[b+72>>2]|0;z=c[b+76>>2]|0;c[o+40>>2]=c[m>>2];c[o+44>>2]=A;c[o+48>>2]=e;c[o+52>>2]=k;c[o+56>>2]=u;c[o+60>>2]=v;c[o+64>>2]=w;c[o+68>>2]=x;c[o+72>>2]=y;c[o+76>>2]=z;z=c[l>>2]|0;y=c[b+88>>2]|0;x=c[b+92>>2]|0;w=c[b+96>>2]|0;v=c[b+100>>2]|0;u=c[b+104>>2]|0;k=c[b+108>>2]|0;l=c[b+112>>2]|0;e=c[b+116>>2]|0;c[o+80>>2]=c[n>>2];c[o+84>>2]=z;c[o+88>>2]=y;c[o+92>>2]=x;c[o+96>>2]=w;c[o+100>>2]=v;c[o+104>>2]=u;c[o+108>>2]=k;c[o+112>>2]=l;c[o+116>>2]=e;Qd(r,o);Hd(p,r,f);o=p+40|0;Hd(o,g,h);e=p+80|0;Hd(e,h,f);Qd(r,p);Hd(p,r,f);Hd(o,g,h);Hd(e,h,f);Qd(r,p);Hd(p,r,f);Hd(o,g,h);Hd(e,h,f);Qd(r,p);Hd(b,r,f);Hd(m,g,h);Hd(n,h,f);Hd(j,r,g);e=0;do{Wd(s,(e|0)/2|0,a[q+e>>0]|0);Sd(r,b,s);Hd(b,r,f);Hd(m,g,h);Hd(n,h,f);Hd(j,r,g);e=e+2|0}while((e|0)<64);i=t;return}function Wd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;s=d<<24>>24;s=of(s|0,((s|0)<0)<<31>>31|0,63)|0;d=d<<24>>24;s=0-s|0;d=d-((d&s)<<1)&255;c[a>>2]=1;e=a+4|0;t=e;u=t+36|0;do{c[t>>2]=0;t=t+4|0}while((t|0)<(u|0));f=a+40|0;c[f>>2]=1;g=a+44|0;h=a+80|0;i=lf((d^1)&255|0,0,-1,-1)|0;i=of(i|0,C|0,63)|0;j=1776+(b*960|0)|0;k=a+8|0;l=a+12|0;m=a+16|0;n=a+20|0;o=a+24|0;p=a+28|0;q=a+32|0;r=a+36|0;t=g;u=t+76|0;do{c[t>>2]=0;t=t+4|0}while((t|0)<(u|0));A=0-i|0;ia=c[1776+(b*960|0)+4>>2]&A;J=c[1776+(b*960|0)+8>>2]&A;L=c[1776+(b*960|0)+12>>2]&A;N=c[1776+(b*960|0)+16>>2]&A;P=c[1776+(b*960|0)+20>>2]&A;R=c[1776+(b*960|0)+24>>2]&A;T=c[1776+(b*960|0)+28>>2]&A;V=c[1776+(b*960|0)+32>>2]&A;X=c[1776+(b*960|0)+36>>2]&A;c[a>>2]=(c[j>>2]^1)&A^1;c[e>>2]=ia;c[k>>2]=J;c[l>>2]=L;c[m>>2]=N;c[n>>2]=P;c[o>>2]=R;c[p>>2]=T;c[q>>2]=V;c[r>>2]=X;X=a+48|0;V=a+52|0;T=a+56|0;R=a+60|0;P=a+64|0;N=a+68|0;L=a+72|0;J=a+76|0;ia=c[1776+(b*960|0)+44>>2]&A;z=c[1776+(b*960|0)+48>>2]&A;D=c[1776+(b*960|0)+52>>2]&A;B=c[1776+(b*960|0)+56>>2]&A;$=c[1776+(b*960|0)+60>>2]&A;E=c[1776+(b*960|0)+64>>2]&A;da=c[1776+(b*960|0)+68>>2]&A;G=c[1776+(b*960|0)+72>>2]&A;ha=c[1776+(b*960|0)+76>>2]&A;c[f>>2]=(c[1776+(b*960|0)+40>>2]^1)&A^1;c[g>>2]=ia;c[X>>2]=z;c[V>>2]=D;c[T>>2]=B;c[R>>2]=$;c[P>>2]=E;c[N>>2]=da;c[L>>2]=G;c[J>>2]=ha;ha=c[h>>2]|0;G=a+84|0;da=c[G>>2]|0;E=a+88|0;$=c[E>>2]|0;B=a+92|0;D=c[B>>2]|0;z=a+96|0;ia=c[z>>2]|0;x=a+100|0;ea=c[x>>2]|0;v=a+104|0;aa=c[v>>2]|0;i=a+108|0;w=c[i>>2]|0;t=a+112|0;F=c[t>>2]|0;u=a+116|0;j=c[u>>2]|0;fa=(c[1776+(b*960|0)+84>>2]^da)&A;ba=(c[1776+(b*960|0)+88>>2]^$)&A;y=(c[1776+(b*960|0)+92>>2]^D)&A;H=(c[1776+(b*960|0)+96>>2]^ia)&A;ga=(c[1776+(b*960|0)+100>>2]^ea)&A;ca=(c[1776+(b*960|0)+104>>2]^aa)&A;ja=(c[1776+(b*960|0)+108>>2]^w)&A;_=(c[1776+(b*960|0)+112>>2]^F)&A;I=(c[1776+(b*960|0)+116>>2]^j)&A;c[h>>2]=(c[1776+(b*960|0)+80>>2]^ha)&A^ha;c[G>>2]=fa^da;c[E>>2]=ba^$;c[B>>2]=y^D;c[z>>2]=H^ia;c[x>>2]=ga^ea;c[v>>2]=ca^aa;c[i>>2]=ja^w;c[t>>2]=_^F;c[u>>2]=I^j;j=lf((d^2)&255|0,0,-1,-1)|0;j=of(j|0,C|0,63)|0;I=c[a>>2]|0;F=c[e>>2]|0;_=c[k>>2]|0;w=c[l>>2]|0;ja=c[m>>2]|0;aa=c[n>>2]|0;ca=c[o>>2]|0;ea=c[p>>2]|0;ga=c[q>>2]|0;ia=c[r>>2]|0;j=0-j|0;H=(c[1776+(b*960|0)+124>>2]^F)&j;D=(c[1776+(b*960|0)+128>>2]^_)&j;y=(c[1776+(b*960|0)+132>>2]^w)&j;$=(c[1776+(b*960|0)+136>>2]^ja)&j;ba=(c[1776+(b*960|0)+140>>2]^aa)&j;da=(c[1776+(b*960|0)+144>>2]^ca)&j;fa=(c[1776+(b*960|0)+148>>2]^ea)&j;ha=(c[1776+(b*960|0)+152>>2]^ga)&j;A=(c[1776+(b*960|0)+156>>2]^ia)&j;c[a>>2]=(c[1776+(b*960|0)+120>>2]^I)&j^I;c[e>>2]=H^F;c[k>>2]=D^_;c[l>>2]=y^w;c[m>>2]=$^ja;c[n>>2]=ba^aa;c[o>>2]=da^ca;c[p>>2]=fa^ea;c[q>>2]=ha^ga;c[r>>2]=A^ia;ia=c[f>>2]|0;A=c[g>>2]|0;ga=c[X>>2]|0;ha=c[V>>2]|0;ea=c[T>>2]|0;fa=c[R>>2]|0;ca=c[P>>2]|0;da=c[N>>2]|0;aa=c[L>>2]|0;ba=c[J>>2]|0;ja=(c[1776+(b*960|0)+164>>2]^A)&j;$=(c[1776+(b*960|0)+168>>2]^ga)&j;w=(c[1776+(b*960|0)+172>>2]^ha)&j;y=(c[1776+(b*960|0)+176>>2]^ea)&j;_=(c[1776+(b*960|0)+180>>2]^fa)&j;D=(c[1776+(b*960|0)+184>>2]^ca)&j;F=(c[1776+(b*960|0)+188>>2]^da)&j;H=(c[1776+(b*960|0)+192>>2]^aa)&j;I=(c[1776+(b*960|0)+196>>2]^ba)&j;c[f>>2]=(c[1776+(b*960|0)+160>>2]^ia)&j^ia;c[g>>2]=ja^A;c[X>>2]=$^ga;c[V>>2]=w^ha;c[T>>2]=y^ea;c[R>>2]=_^fa;c[P>>2]=D^ca;c[N>>2]=F^da;c[L>>2]=H^aa;c[J>>2]=I^ba;ba=c[h>>2]|0;I=c[G>>2]|0;aa=c[E>>2]|0;H=c[B>>2]|0;da=c[z>>2]|0;F=c[x>>2]|0;ca=c[v>>2]|0;D=c[i>>2]|0;fa=c[t>>2]|0;_=c[u>>2]|0;ea=(c[1776+(b*960|0)+204>>2]^I)&j;y=(c[1776+(b*960|0)+208>>2]^aa)&j;ha=(c[1776+(b*960|0)+212>>2]^H)&j;w=(c[1776+(b*960|0)+216>>2]^da)&j;ga=(c[1776+(b*960|0)+220>>2]^F)&j;$=(c[1776+(b*960|0)+224>>2]^ca)&j;A=(c[1776+(b*960|0)+228>>2]^D)&j;ja=(c[1776+(b*960|0)+232>>2]^fa)&j;ia=(c[1776+(b*960|0)+236>>2]^_)&j;c[h>>2]=(c[1776+(b*960|0)+200>>2]^ba)&j^ba;c[G>>2]=ea^I;c[E>>2]=y^aa;c[B>>2]=ha^H;c[z>>2]=w^da;c[x>>2]=ga^F;c[v>>2]=$^ca;c[i>>2]=A^D;c[t>>2]=ja^fa;c[u>>2]=ia^_;_=lf((d^3)&255|0,0,-1,-1)|0;_=of(_|0,C|0,63)|0;ia=c[a>>2]|0;fa=c[e>>2]|0;ja=c[k>>2]|0;D=c[l>>2]|0;A=c[m>>2]|0;ca=c[n>>2]|0;$=c[o>>2]|0;F=c[p>>2]|0;ga=c[q>>2]|0;da=c[r>>2]|0;_=0-_|0;w=(c[1776+(b*960|0)+244>>2]^fa)&_;H=(c[1776+(b*960|0)+248>>2]^ja)&_;ha=(c[1776+(b*960|0)+252>>2]^D)&_;aa=(c[1776+(b*960|0)+256>>2]^A)&_;y=(c[1776+(b*960|0)+260>>2]^ca)&_;I=(c[1776+(b*960|0)+264>>2]^$)&_;ea=(c[1776+(b*960|0)+268>>2]^F)&_;ba=(c[1776+(b*960|0)+272>>2]^ga)&_;j=(c[1776+(b*960|0)+276>>2]^da)&_;c[a>>2]=(c[1776+(b*960|0)+240>>2]^ia)&_^ia;c[e>>2]=w^fa;c[k>>2]=H^ja;c[l>>2]=ha^D;c[m>>2]=aa^A;c[n>>2]=y^ca;c[o>>2]=I^$;c[p>>2]=ea^F;c[q>>2]=ba^ga;c[r>>2]=j^da;da=c[f>>2]|0;j=c[g>>2]|0;ga=c[X>>2]|0;ba=c[V>>2]|0;F=c[T>>2]|0;ea=c[R>>2]|0;$=c[P>>2]|0;I=c[N>>2]|0;ca=c[L>>2]|0;y=c[J>>2]|0;A=(c[1776+(b*960|0)+284>>2]^j)&_;aa=(c[1776+(b*960|0)+288>>2]^ga)&_;D=(c[1776+(b*960|0)+292>>2]^ba)&_;ha=(c[1776+(b*960|0)+296>>2]^F)&_;ja=(c[1776+(b*960|0)+300>>2]^ea)&_;H=(c[1776+(b*960|0)+304>>2]^$)&_;fa=(c[1776+(b*960|0)+308>>2]^I)&_;w=(c[1776+(b*960|0)+312>>2]^ca)&_;ia=(c[1776+(b*960|0)+316>>2]^y)&_;c[f>>2]=(c[1776+(b*960|0)+280>>2]^da)&_^da;c[g>>2]=A^j;c[X>>2]=aa^ga;c[V>>2]=D^ba;c[T>>2]=ha^F;c[R>>2]=ja^ea;c[P>>2]=H^$;c[N>>2]=fa^I;c[L>>2]=w^ca;c[J>>2]=ia^y;y=c[h>>2]|0;ia=c[G>>2]|0;ca=c[E>>2]|0;w=c[B>>2]|0;I=c[z>>2]|0;fa=c[x>>2]|0;$=c[v>>2]|0;H=c[i>>2]|0;ea=c[t>>2]|0;ja=c[u>>2]|0;F=(c[1776+(b*960|0)+324>>2]^ia)&_;ha=(c[1776+(b*960|0)+328>>2]^ca)&_;ba=(c[1776+(b*960|0)+332>>2]^w)&_;D=(c[1776+(b*960|0)+336>>2]^I)&_;ga=(c[1776+(b*960|0)+340>>2]^fa)&_;aa=(c[1776+(b*960|0)+344>>2]^$)&_;j=(c[1776+(b*960|0)+348>>2]^H)&_;A=(c[1776+(b*960|0)+352>>2]^ea)&_;da=(c[1776+(b*960|0)+356>>2]^ja)&_;c[h>>2]=(c[1776+(b*960|0)+320>>2]^y)&_^y;c[G>>2]=F^ia;c[E>>2]=ha^ca;c[B>>2]=ba^w;c[z>>2]=D^I;c[x>>2]=ga^fa;c[v>>2]=aa^$;c[i>>2]=j^H;c[t>>2]=A^ea;c[u>>2]=da^ja;ja=lf((d^4)&255|0,0,-1,-1)|0;ja=of(ja|0,C|0,63)|0;da=c[a>>2]|0;ea=c[e>>2]|0;A=c[k>>2]|0;H=c[l>>2]|0;j=c[m>>2]|0;$=c[n>>2]|0;aa=c[o>>2]|0;fa=c[p>>2]|0;ga=c[q>>2]|0;I=c[r>>2]|0;ja=0-ja|0;D=(c[1776+(b*960|0)+364>>2]^ea)&ja;w=(c[1776+(b*960|0)+368>>2]^A)&ja;ba=(c[1776+(b*960|0)+372>>2]^H)&ja;ca=(c[1776+(b*960|0)+376>>2]^j)&ja;ha=(c[1776+(b*960|0)+380>>2]^$)&ja;ia=(c[1776+(b*960|0)+384>>2]^aa)&ja;F=(c[1776+(b*960|0)+388>>2]^fa)&ja;y=(c[1776+(b*960|0)+392>>2]^ga)&ja;_=(c[1776+(b*960|0)+396>>2]^I)&ja;c[a>>2]=(c[1776+(b*960|0)+360>>2]^da)&ja^da;c[e>>2]=D^ea;c[k>>2]=w^A;c[l>>2]=ba^H;c[m>>2]=ca^j;c[n>>2]=ha^$;c[o>>2]=ia^aa;c[p>>2]=F^fa;c[q>>2]=y^ga;c[r>>2]=_^I;I=c[f>>2]|0;_=c[g>>2]|0;ga=c[X>>2]|0;y=c[V>>2]|0;fa=c[T>>2]|0;F=c[R>>2]|0;aa=c[P>>2]|0;ia=c[N>>2]|0;$=c[L>>2]|0;ha=c[J>>2]|0;j=(c[1776+(b*960|0)+404>>2]^_)&ja;ca=(c[1776+(b*960|0)+408>>2]^ga)&ja;H=(c[1776+(b*960|0)+412>>2]^y)&ja;ba=(c[1776+(b*960|0)+416>>2]^fa)&ja;A=(c[1776+(b*960|0)+420>>2]^F)&ja;w=(c[1776+(b*960|0)+424>>2]^aa)&ja;ea=(c[1776+(b*960|0)+428>>2]^ia)&ja;D=(c[1776+(b*960|0)+432>>2]^$)&ja;da=(c[1776+(b*960|0)+436>>2]^ha)&ja;c[f>>2]=(c[1776+(b*960|0)+400>>2]^I)&ja^I;c[g>>2]=j^_;c[X>>2]=ca^ga;c[V>>2]=H^y;c[T>>2]=ba^fa;c[R>>2]=A^F;c[P>>2]=w^aa;c[N>>2]=ea^ia;c[L>>2]=D^$;c[J>>2]=da^ha;ha=c[h>>2]|0;da=c[G>>2]|0;$=c[E>>2]|0;D=c[B>>2]|0;ia=c[z>>2]|0;ea=c[x>>2]|0;aa=c[v>>2]|0;w=c[i>>2]|0;F=c[t>>2]|0;A=c[u>>2]|0;fa=(c[1776+(b*960|0)+444>>2]^da)&ja;ba=(c[1776+(b*960|0)+448>>2]^$)&ja;y=(c[1776+(b*960|0)+452>>2]^D)&ja;H=(c[1776+(b*960|0)+456>>2]^ia)&ja;ga=(c[1776+(b*960|0)+460>>2]^ea)&ja;ca=(c[1776+(b*960|0)+464>>2]^aa)&ja;_=(c[1776+(b*960|0)+468>>2]^w)&ja;j=(c[1776+(b*960|0)+472>>2]^F)&ja;I=(c[1776+(b*960|0)+476>>2]^A)&ja;c[h>>2]=(c[1776+(b*960|0)+440>>2]^ha)&ja^ha;c[G>>2]=fa^da;c[E>>2]=ba^$;c[B>>2]=y^D;c[z>>2]=H^ia;c[x>>2]=ga^ea;c[v>>2]=ca^aa;c[i>>2]=_^w;c[t>>2]=j^F;c[u>>2]=I^A;A=lf((d^5)&255|0,0,-1,-1)|0;A=of(A|0,C|0,63)|0;I=c[a>>2]|0;F=c[e>>2]|0;j=c[k>>2]|0;w=c[l>>2]|0;_=c[m>>2]|0;aa=c[n>>2]|0;ca=c[o>>2]|0;ea=c[p>>2]|0;ga=c[q>>2]|0;ia=c[r>>2]|0;A=0-A|0;H=(c[1776+(b*960|0)+484>>2]^F)&A;D=(c[1776+(b*960|0)+488>>2]^j)&A;y=(c[1776+(b*960|0)+492>>2]^w)&A;$=(c[1776+(b*960|0)+496>>2]^_)&A;ba=(c[1776+(b*960|0)+500>>2]^aa)&A;da=(c[1776+(b*960|0)+504>>2]^ca)&A;fa=(c[1776+(b*960|0)+508>>2]^ea)&A;ha=(c[1776+(b*960|0)+512>>2]^ga)&A;ja=(c[1776+(b*960|0)+516>>2]^ia)&A;c[a>>2]=(c[1776+(b*960|0)+480>>2]^I)&A^I;c[e>>2]=H^F;c[k>>2]=D^j;c[l>>2]=y^w;c[m>>2]=$^_;c[n>>2]=ba^aa;c[o>>2]=da^ca;c[p>>2]=fa^ea;c[q>>2]=ha^ga;c[r>>2]=ja^ia;ia=c[f>>2]|0;ja=c[g>>2]|0;ga=c[X>>2]|0;ha=c[V>>2]|0;ea=c[T>>2]|0;fa=c[R>>2]|0;ca=c[P>>2]|0;da=c[N>>2]|0;aa=c[L>>2]|0;ba=c[J>>2]|0;_=(c[1776+(b*960|0)+524>>2]^ja)&A;$=(c[1776+(b*960|0)+528>>2]^ga)&A;w=(c[1776+(b*960|0)+532>>2]^ha)&A;y=(c[1776+(b*960|0)+536>>2]^ea)&A;j=(c[1776+(b*960|0)+540>>2]^fa)&A;D=(c[1776+(b*960|0)+544>>2]^ca)&A;F=(c[1776+(b*960|0)+548>>2]^da)&A;H=(c[1776+(b*960|0)+552>>2]^aa)&A;I=(c[1776+(b*960|0)+556>>2]^ba)&A;c[f>>2]=(c[1776+(b*960|0)+520>>2]^ia)&A^ia;c[g>>2]=_^ja;c[X>>2]=$^ga;c[V>>2]=w^ha;c[T>>2]=y^ea;c[R>>2]=j^fa;c[P>>2]=D^ca;c[N>>2]=F^da;c[L>>2]=H^aa;c[J>>2]=I^ba;ba=c[h>>2]|0;I=c[G>>2]|0;aa=c[E>>2]|0;H=c[B>>2]|0;da=c[z>>2]|0;F=c[x>>2]|0;ca=c[v>>2]|0;D=c[i>>2]|0;fa=c[t>>2]|0;j=c[u>>2]|0;ea=(c[1776+(b*960|0)+564>>2]^I)&A;y=(c[1776+(b*960|0)+568>>2]^aa)&A;ha=(c[1776+(b*960|0)+572>>2]^H)&A;w=(c[1776+(b*960|0)+576>>2]^da)&A;ga=(c[1776+(b*960|0)+580>>2]^F)&A;$=(c[1776+(b*960|0)+584>>2]^ca)&A;ja=(c[1776+(b*960|0)+588>>2]^D)&A;_=(c[1776+(b*960|0)+592>>2]^fa)&A;ia=(c[1776+(b*960|0)+596>>2]^j)&A;c[h>>2]=(c[1776+(b*960|0)+560>>2]^ba)&A^ba;c[G>>2]=ea^I;c[E>>2]=y^aa;c[B>>2]=ha^H;c[z>>2]=w^da;c[x>>2]=ga^F;c[v>>2]=$^ca;c[i>>2]=ja^D;c[t>>2]=_^fa;c[u>>2]=ia^j;j=lf((d^6)&255|0,0,-1,-1)|0;j=of(j|0,C|0,63)|0;ia=c[a>>2]|0;fa=c[e>>2]|0;_=c[k>>2]|0;D=c[l>>2]|0;ja=c[m>>2]|0;ca=c[n>>2]|0;$=c[o>>2]|0;F=c[p>>2]|0;ga=c[q>>2]|0;da=c[r>>2]|0;j=0-j|0;w=(c[1776+(b*960|0)+604>>2]^fa)&j;H=(c[1776+(b*960|0)+608>>2]^_)&j;ha=(c[1776+(b*960|0)+612>>2]^D)&j;aa=(c[1776+(b*960|0)+616>>2]^ja)&j;y=(c[1776+(b*960|0)+620>>2]^ca)&j;I=(c[1776+(b*960|0)+624>>2]^$)&j;ea=(c[1776+(b*960|0)+628>>2]^F)&j;ba=(c[1776+(b*960|0)+632>>2]^ga)&j;A=(c[1776+(b*960|0)+636>>2]^da)&j;c[a>>2]=(c[1776+(b*960|0)+600>>2]^ia)&j^ia;c[e>>2]=w^fa;c[k>>2]=H^_;c[l>>2]=ha^D;c[m>>2]=aa^ja;c[n>>2]=y^ca;c[o>>2]=I^$;c[p>>2]=ea^F;c[q>>2]=ba^ga;c[r>>2]=A^da;da=c[f>>2]|0;A=c[g>>2]|0;ga=c[X>>2]|0;ba=c[V>>2]|0;F=c[T>>2]|0;ea=c[R>>2]|0;$=c[P>>2]|0;I=c[N>>2]|0;ca=c[L>>2]|0;y=c[J>>2]|0;ja=(c[1776+(b*960|0)+644>>2]^A)&j;aa=(c[1776+(b*960|0)+648>>2]^ga)&j;D=(c[1776+(b*960|0)+652>>2]^ba)&j;ha=(c[1776+(b*960|0)+656>>2]^F)&j;_=(c[1776+(b*960|0)+660>>2]^ea)&j;H=(c[1776+(b*960|0)+664>>2]^$)&j;fa=(c[1776+(b*960|0)+668>>2]^I)&j;w=(c[1776+(b*960|0)+672>>2]^ca)&j;ia=(c[1776+(b*960|0)+676>>2]^y)&j;c[f>>2]=(c[1776+(b*960|0)+640>>2]^da)&j^da;c[g>>2]=ja^A;c[X>>2]=aa^ga;c[V>>2]=D^ba;c[T>>2]=ha^F;c[R>>2]=_^ea;c[P>>2]=H^$;c[N>>2]=fa^I;c[L>>2]=w^ca;c[J>>2]=ia^y;y=c[h>>2]|0;ia=c[G>>2]|0;ca=c[E>>2]|0;w=c[B>>2]|0;I=c[z>>2]|0;fa=c[x>>2]|0;$=c[v>>2]|0;H=c[i>>2]|0;ea=c[t>>2]|0;_=c[u>>2]|0;F=(c[1776+(b*960|0)+684>>2]^ia)&j;ha=(c[1776+(b*960|0)+688>>2]^ca)&j;ba=(c[1776+(b*960|0)+692>>2]^w)&j;D=(c[1776+(b*960|0)+696>>2]^I)&j;ga=(c[1776+(b*960|0)+700>>2]^fa)&j;aa=(c[1776+(b*960|0)+704>>2]^$)&j;A=(c[1776+(b*960|0)+708>>2]^H)&j;ja=(c[1776+(b*960|0)+712>>2]^ea)&j;da=(c[1776+(b*960|0)+716>>2]^_)&j;c[h>>2]=(c[1776+(b*960|0)+680>>2]^y)&j^y;c[G>>2]=F^ia;c[E>>2]=ha^ca;c[B>>2]=ba^w;c[z>>2]=D^I;c[x>>2]=ga^fa;c[v>>2]=aa^$;c[i>>2]=A^H;c[t>>2]=ja^ea;c[u>>2]=da^_;_=lf((d^7)&255|0,0,-1,-1)|0;_=of(_|0,C|0,63)|0;da=c[a>>2]|0;ea=c[e>>2]|0;ja=c[k>>2]|0;H=c[l>>2]|0;A=c[m>>2]|0;$=c[n>>2]|0;aa=c[o>>2]|0;fa=c[p>>2]|0;ga=c[q>>2]|0;I=c[r>>2]|0;_=0-_|0;D=(c[1776+(b*960|0)+724>>2]^ea)&_;w=(c[1776+(b*960|0)+728>>2]^ja)&_;ba=(c[1776+(b*960|0)+732>>2]^H)&_;ca=(c[1776+(b*960|0)+736>>2]^A)&_;ha=(c[1776+(b*960|0)+740>>2]^$)&_;ia=(c[1776+(b*960|0)+744>>2]^aa)&_;F=(c[1776+(b*960|0)+748>>2]^fa)&_;y=(c[1776+(b*960|0)+752>>2]^ga)&_;j=(c[1776+(b*960|0)+756>>2]^I)&_;c[a>>2]=(c[1776+(b*960|0)+720>>2]^da)&_^da;c[e>>2]=D^ea;c[k>>2]=w^ja;c[l>>2]=ba^H;c[m>>2]=ca^A;c[n>>2]=ha^$;c[o>>2]=ia^aa;c[p>>2]=F^fa;c[q>>2]=y^ga;c[r>>2]=j^I;I=c[f>>2]|0;j=c[g>>2]|0;ga=c[X>>2]|0;y=c[V>>2]|0;fa=c[T>>2]|0;F=c[R>>2]|0;aa=c[P>>2]|0;ia=c[N>>2]|0;$=c[L>>2]|0;ha=c[J>>2]|0;A=(c[1776+(b*960|0)+764>>2]^j)&_;ca=(c[1776+(b*960|0)+768>>2]^ga)&_;H=(c[1776+(b*960|0)+772>>2]^y)&_;ba=(c[1776+(b*960|0)+776>>2]^fa)&_;ja=(c[1776+(b*960|0)+780>>2]^F)&_;w=(c[1776+(b*960|0)+784>>2]^aa)&_;ea=(c[1776+(b*960|0)+788>>2]^ia)&_;D=(c[1776+(b*960|0)+792>>2]^$)&_;da=(c[1776+(b*960|0)+796>>2]^ha)&_;c[f>>2]=(c[1776+(b*960|0)+760>>2]^I)&_^I;c[g>>2]=A^j;c[X>>2]=ca^ga;c[V>>2]=H^y;c[T>>2]=ba^fa;c[R>>2]=ja^F;c[P>>2]=w^aa;c[N>>2]=ea^ia;c[L>>2]=D^$;c[J>>2]=da^ha;ha=c[h>>2]|0;da=c[G>>2]|0;$=c[E>>2]|0;D=c[B>>2]|0;ia=c[z>>2]|0;ea=c[x>>2]|0;aa=c[v>>2]|0;w=c[i>>2]|0;F=c[t>>2]|0;ja=c[u>>2]|0;fa=(c[1776+(b*960|0)+804>>2]^da)&_;ba=(c[1776+(b*960|0)+808>>2]^$)&_;y=(c[1776+(b*960|0)+812>>2]^D)&_;H=(c[1776+(b*960|0)+816>>2]^ia)&_;ga=(c[1776+(b*960|0)+820>>2]^ea)&_;ca=(c[1776+(b*960|0)+824>>2]^aa)&_;j=(c[1776+(b*960|0)+828>>2]^w)&_;A=(c[1776+(b*960|0)+832>>2]^F)&_;I=(c[1776+(b*960|0)+836>>2]^ja)&_;c[h>>2]=(c[1776+(b*960|0)+800>>2]^ha)&_^ha;c[G>>2]=fa^da;c[E>>2]=ba^$;c[B>>2]=y^D;c[z>>2]=H^ia;c[x>>2]=ga^ea;c[v>>2]=ca^aa;c[i>>2]=j^w;c[t>>2]=A^F;c[u>>2]=I^ja;ja=lf((d^8)&255|0,0,-1,-1)|0;ja=of(ja|0,C|0,63)|0;I=c[a>>2]|0;F=c[e>>2]|0;A=c[k>>2]|0;w=c[l>>2]|0;j=c[m>>2]|0;aa=c[n>>2]|0;ca=c[o>>2]|0;ea=c[p>>2]|0;ga=c[q>>2]|0;ia=c[r>>2]|0;ja=0-ja|0;H=(c[1776+(b*960|0)+844>>2]^F)&ja;D=(c[1776+(b*960|0)+848>>2]^A)&ja;y=(c[1776+(b*960|0)+852>>2]^w)&ja;d=(c[1776+(b*960|0)+856>>2]^j)&ja;$=(c[1776+(b*960|0)+860>>2]^aa)&ja;ba=(c[1776+(b*960|0)+864>>2]^ca)&ja;da=(c[1776+(b*960|0)+868>>2]^ea)&ja;fa=(c[1776+(b*960|0)+872>>2]^ga)&ja;ha=(c[1776+(b*960|0)+876>>2]^ia)&ja;c[a>>2]=(c[1776+(b*960|0)+840>>2]^I)&ja^I;c[e>>2]=H^F;c[k>>2]=D^A;c[l>>2]=y^w;c[m>>2]=d^j;c[n>>2]=$^aa;c[o>>2]=ba^ca;c[p>>2]=da^ea;c[q>>2]=fa^ga;c[r>>2]=ha^ia;ia=c[f>>2]|0;ha=c[g>>2]|0;ga=c[X>>2]|0;fa=c[V>>2]|0;ea=c[T>>2]|0;da=c[R>>2]|0;ca=c[P>>2]|0;ba=c[N>>2]|0;aa=c[L>>2]|0;$=c[J>>2]|0;j=(c[1776+(b*960|0)+884>>2]^ha)&ja;d=(c[1776+(b*960|0)+888>>2]^ga)&ja;w=(c[1776+(b*960|0)+892>>2]^fa)&ja;y=(c[1776+(b*960|0)+896>>2]^ea)&ja;A=(c[1776+(b*960|0)+900>>2]^da)&ja;D=(c[1776+(b*960|0)+904>>2]^ca)&ja;F=(c[1776+(b*960|0)+908>>2]^ba)&ja;H=(c[1776+(b*960|0)+912>>2]^aa)&ja;I=(c[1776+(b*960|0)+916>>2]^$)&ja;ia=(c[1776+(b*960|0)+880>>2]^ia)&ja^ia;c[f>>2]=ia;ha=j^ha;c[g>>2]=ha;ga=d^ga;c[X>>2]=ga;fa=w^fa;c[V>>2]=fa;ea=y^ea;c[T>>2]=ea;da=A^da;c[R>>2]=da;ca=D^ca;c[P>>2]=ca;ba=F^ba;c[N>>2]=ba;aa=H^aa;c[L>>2]=aa;$=I^$;c[J>>2]=$;I=c[h>>2]|0;H=c[G>>2]|0;F=c[E>>2]|0;D=c[B>>2]|0;A=c[z>>2]|0;y=c[x>>2]|0;w=c[v>>2]|0;d=c[i>>2]|0;j=c[t>>2]|0;_=c[u>>2]|0;K=(c[1776+(b*960|0)+924>>2]^H)&ja;M=(c[1776+(b*960|0)+928>>2]^F)&ja;O=(c[1776+(b*960|0)+932>>2]^D)&ja;Q=(c[1776+(b*960|0)+936>>2]^A)&ja;S=(c[1776+(b*960|0)+940>>2]^y)&ja;U=(c[1776+(b*960|0)+944>>2]^w)&ja;W=(c[1776+(b*960|0)+948>>2]^d)&ja;Y=(c[1776+(b*960|0)+952>>2]^j)&ja;Z=(c[1776+(b*960|0)+956>>2]^_)&ja;I=(c[1776+(b*960|0)+920>>2]^I)&ja^I;c[h>>2]=I;H=K^H;c[G>>2]=H;F=M^F;c[E>>2]=F;D=O^D;c[B>>2]=D;A=Q^A;c[z>>2]=A;y=S^y;c[x>>2]=y;w=U^w;c[v>>2]=w;d=W^d;c[i>>2]=d;j=Y^j;c[t>>2]=j;b=Z^_;c[u>>2]=b;_=c[a>>2]|0;Z=c[e>>2]|0;Y=c[k>>2]|0;W=c[l>>2]|0;U=c[m>>2]|0;S=c[n>>2]|0;Q=c[o>>2]|0;O=c[p>>2]|0;M=c[q>>2]|0;K=c[r>>2]|0;c[a>>2]=(_^ia)&s^_;c[e>>2]=(Z^ha)&s^Z;c[k>>2]=(Y^ga)&s^Y;c[l>>2]=(W^fa)&s^W;c[m>>2]=(U^ea)&s^U;c[n>>2]=(S^da)&s^S;c[o>>2]=(Q^ca)&s^Q;c[p>>2]=(O^ba)&s^O;c[q>>2]=(M^aa)&s^M;c[r>>2]=(K^$)&s^K;e=c[f>>2]|0;a=c[g>>2]|0;r=c[X>>2]|0;q=c[V>>2]|0;p=c[T>>2]|0;o=c[R>>2]|0;n=c[P>>2]|0;m=c[N>>2]|0;l=c[L>>2]|0;k=c[J>>2]|0;c[f>>2]=(e^_)&s^e;c[g>>2]=(a^Z)&s^a;c[X>>2]=(r^Y)&s^r;c[V>>2]=(q^W)&s^q;c[T>>2]=(p^U)&s^p;c[R>>2]=(o^S)&s^o;c[P>>2]=(n^Q)&s^n;c[N>>2]=(m^O)&s^m;c[L>>2]=(l^M)&s^l;c[J>>2]=(k^K)&s^k;g=c[h>>2]|0;k=c[G>>2]|0;l=c[E>>2]|0;m=c[B>>2]|0;n=c[z>>2]|0;o=c[x>>2]|0;p=c[v>>2]|0;q=c[i>>2]|0;r=c[t>>2]|0;a=c[u>>2]|0;c[h>>2]=(g^0-I)&s^g;c[G>>2]=(k^0-H)&s^k;c[E>>2]=(l^0-F)&s^l;c[B>>2]=(m^0-D)&s^m;c[z>>2]=(n^0-A)&s^n;c[x>>2]=(o^0-y)&s^o;c[v>>2]=(p^0-w)&s^p;c[i>>2]=(q^0-d)&s^q;c[t>>2]=(r^0-j)&s^r;c[u>>2]=(a^0-b)&s^a;return}function Xd(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=i;i=i+496|0;n=q;m=q+448|0;o=q+408|0;p=q+368|0;l=q+208|0;j=n+72|0;c[j>>2]=0;k=n;c[k>>2]=0;c[k+4>>2]=0;k=n+8|0;c[k>>2]=-205731576;c[k+4>>2]=1779033703;k=n+16|0;c[k>>2]=-2067093701;c[k+4>>2]=-1150833019;k=n+24|0;c[k>>2]=-23791573;c[k+4>>2]=1013904242;k=n+32|0;c[k>>2]=1595750129;c[k+4>>2]=-1521486534;k=n+40|0;c[k>>2]=-1377402159;c[k+4>>2]=1359893119;k=n+48|0;c[k>>2]=725511199;c[k+4>>2]=-1694144372;k=n+56|0;c[k>>2]=-79577749;c[k+4>>2]=528734635;k=n+64|0;c[k>>2]=327033209;c[k+4>>2]=1541459225;if(f|0){k=n+76|0;g=0;h=0;do{a[h+g+(n+76)>>0]=a[f+h>>0]|0;h=h+1|0;g=c[j>>2]|0}while(h>>>0<32);f=g+32|0;c[j>>2]=f;if((f|0)==128){Yd(n,k);f=n;f=lf(c[f>>2]|0,c[f+4>>2]|0,1024,0)|0;k=n;c[k>>2]=f;c[k+4>>2]=C;c[j>>2]=0}Zd(n,e)|0}a[e>>0]=(d[e>>0]|0)&248;k=e+31|0;a[k>>0]=(d[k>>0]|0)&63|64;Vd(l,e);Fd(m,l+80|0);Hd(o,l,m);Hd(p,l+40|0,m);Id(b,p);Id(n,o);p=b+31|0;a[p>>0]=(d[p>>0]|0)^(d[n>>0]|0)<<7;i=q;return}function Yd(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0;x=i;i=i+704|0;h=x+640|0;v=x;w=a+8|0;e=h;f=w;g=e+64|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));e=0;do{s=b+(e<<3)|0;n=pf(d[s>>0]|0|0,0,56)|0;t=C;m=pf(d[s+1>>0]|0|0,0,48)|0;t=C|t;o=pf(d[s+2>>0]|0|0,0,40)|0;t=t|C|(d[s+3>>0]|0);p=pf(d[s+4>>0]|0|0,0,24)|0;t=t|C;q=pf(d[s+5>>0]|0|0,0,16)|0;t=t|C;r=pf(d[s+6>>0]|0|0,0,8)|0;u=v+(e<<3)|0;c[u>>2]=m|n|o|p|q|r|(d[s+7>>0]|0);c[u+4>>2]=t|C;e=e+1|0}while((e|0)!=16);f=v;e=c[f>>2]|0;f=c[f+4>>2]|0;g=16;do{l=v+(g+-2<<3)|0;y=c[l>>2]|0;l=c[l+4>>2]|0;m=of(y|0,l|0,19)|0;o=C;n=pf(y|0,l|0,45)|0;o=o|C;j=of(y|0,l|0,61)|0;b=C;k=pf(y|0,l|0,3)|0;b=b|C;l=of(y|0,l|0,6)|0;o=b^C^o;b=v+(g+-7<<3)|0;y=c[b>>2]|0;b=c[b+4>>2]|0;s=v+(g+-15<<3)|0;A=e;e=c[s>>2]|0;z=f;f=c[s+4>>2]|0;s=of(e|0,f|0,1)|0;t=C;u=pf(e|0,f|0,63)|0;t=t|C;p=of(e|0,f|0,8)|0;B=C;q=pf(e|0,f|0,56)|0;B=B|C;r=of(e|0,f|0,7)|0;t=B^C^t;b=lf(A|0,z|0,y|0,b|0)|0;o=lf(b|0,C|0,(j|k)^l^(m|n)|0,o|0)|0;t=lf(o|0,C|0,(p|q)^r^(s|u)|0,t|0)|0;u=v+(g<<3)|0;c[u>>2]=t;c[u+4>>2]=C;g=g+1|0}while((g|0)!=80);e=h+56|0;o=h+32|0;g=h+48|0;k=h+40|0;s=h;p=h+8|0;l=h+16|0;b=h+24|0;q=c[o>>2]|0;o=c[o+4>>2]|0;h=c[g>>2]|0;m=c[k>>2]|0;g=c[g+4>>2]|0;k=c[k+4>>2]|0;f=c[e>>2]|0;e=c[e+4>>2]|0;t=c[s>>2]|0;s=c[s+4>>2]|0;r=c[p>>2]|0;p=c[p+4>>2]|0;n=c[l>>2]|0;l=c[l+4>>2]|0;j=c[b>>2]|0;b=c[b+4>>2]|0;u=0;do{H=of(q|0,o|0,14)|0;E=C;y=pf(q|0,o|0,50)|0;E=E|C;F=of(q|0,o|0,18)|0;I=C;B=pf(q|0,o|0,46)|0;I=E^(I|C);E=of(q|0,o|0,41)|0;z=C;G=pf(q|0,o|0,23)|0;z=I^(z|C);I=8+(u<<3)|0;A=v+(u<<3)|0;D=c[A>>2]|0;A=c[A+4>>2]|0;e=lf(c[I>>2]|0,c[I+4>>2]|0,f|0,e|0)|0;z=lf(e|0,C|0,(H|y)^(F|B)^(E|G)|0,z|0)|0;A=lf(z|0,C|0,D|0,A|0)|0;A=lf(A|0,C|0,(m^h)&q^h|0,(k^g)&o^g|0)|0;D=C;z=of(t|0,s|0,28)|0;G=C;E=pf(t|0,s|0,36)|0;G=G|C;B=of(t|0,s|0,34)|0;F=C;y=pf(t|0,s|0,30)|0;F=G^(F|C);G=of(t|0,s|0,39)|0;e=C;f=pf(t|0,s|0,25)|0;e=F^(e|C);F=lf(j|0,b|0,A|0,D|0)|0;b=C;D=lf((r|t)&n|r&t|0,(p|s)&l|p&s|0,A|0,D|0)|0;e=lf(D|0,C|0,(z|E)^(B|y)^(G|f)|0,e|0)|0;f=C;G=of(F|0,b|0,14)|0;y=C;B=pf(F|0,b|0,50)|0;y=y|C;E=of(F|0,b|0,18)|0;z=C;D=pf(F|0,b|0,46)|0;z=y^(z|C);y=of(F|0,b|0,41)|0;j=C;A=pf(F|0,b|0,23)|0;j=lf((G|B)^(E|D)^(y|A)|0,z^(j|C)|0,h|0,g|0)|0;h=u|1;z=8+(h<<3)|0;h=v+(h<<3)|0;g=c[h>>2]|0;h=c[h+4>>2]|0;z=lf(j|0,C|0,c[z>>2]|0,c[z+4>>2]|0)|0;h=lf(z|0,C|0,g|0,h|0)|0;h=lf(h|0,C|0,(q^m)&F^m|0,(o^k)&b^k|0)|0;g=C;z=of(e|0,f|0,28)|0;j=C;A=pf(e|0,f|0,36)|0;j=j|C;y=of(e|0,f|0,34)|0;D=C;E=pf(e|0,f|0,30)|0;D=j^(D|C);j=of(e|0,f|0,39)|0;B=C;G=pf(e|0,f|0,25)|0;B=lf((t|e)&r|t&e|0,(s|f)&p|s&f|0,(z|A)^(y|E)^(j|G)|0,D^(B|C)|0)|0;D=C;G=lf(h|0,g|0,n|0,l|0)|0;l=C;g=lf(B|0,D|0,h|0,g|0)|0;h=C;D=of(G|0,l|0,14)|0;B=C;j=pf(G|0,l|0,50)|0;B=B|C;n=of(G|0,l|0,18)|0;E=C;y=pf(G|0,l|0,46)|0;E=B^(E|C);B=of(G|0,l|0,41)|0;A=C;z=pf(G|0,l|0,23)|0;A=lf((D|j)^(n|y)^(B|z)|0,E^(A|C)|0,m|0,k|0)|0;m=u|2;E=8+(m<<3)|0;m=v+(m<<3)|0;k=c[m>>2]|0;m=c[m+4>>2]|0;E=lf(A|0,C|0,c[E>>2]|0,c[E+4>>2]|0)|0;m=lf(E|0,C|0,k|0,m|0)|0;m=lf(m|0,C|0,(F^q)&G^q|0,(b^o)&l^o|0)|0;k=C;E=of(g|0,h|0,28)|0;A=C;z=pf(g|0,h|0,36)|0;A=A|C;B=of(g|0,h|0,34)|0;y=C;n=pf(g|0,h|0,30)|0;y=A^(y|C);A=of(g|0,h|0,39)|0;j=C;D=pf(g|0,h|0,25)|0;j=lf((e|g)&t|e&g|0,(f|h)&s|f&h|0,(E|z)^(B|n)^(A|D)|0,y^(j|C)|0)|0;y=C;p=lf(m|0,k|0,r|0,p|0)|0;D=C;k=lf(j|0,y|0,m|0,k|0)|0;m=C;y=of(p|0,D|0,14)|0;j=C;A=pf(p|0,D|0,50)|0;j=j|C;n=of(p|0,D|0,18)|0;r=C;B=pf(p|0,D|0,46)|0;r=j^(r|C);j=of(p|0,D|0,41)|0;z=C;E=pf(p|0,D|0,23)|0;z=lf((y|A)^(n|B)^(j|E)|0,r^(z|C)|0,q|0,o|0)|0;q=u|3;r=8+(q<<3)|0;q=v+(q<<3)|0;o=c[q>>2]|0;q=c[q+4>>2]|0;r=lf(z|0,C|0,c[r>>2]|0,c[r+4>>2]|0)|0;q=lf(r|0,C|0,o|0,q|0)|0;q=lf(q|0,C|0,(G^F)&p^F|0,(l^b)&D^b|0)|0;o=C;r=of(k|0,m|0,28)|0;z=C;E=pf(k|0,m|0,36)|0;z=z|C;j=of(k|0,m|0,34)|0;B=C;n=pf(k|0,m|0,30)|0;B=z^(B|C);z=of(k|0,m|0,39)|0;A=C;y=pf(k|0,m|0,25)|0;A=lf((g|k)&e|g&k|0,(h|m)&f|h&m|0,(r|E)^(j|n)^(z|y)|0,B^(A|C)|0)|0;B=C;s=lf(q|0,o|0,t|0,s|0)|0;y=C;o=lf(A|0,B|0,q|0,o|0)|0;q=C;B=of(s|0,y|0,14)|0;A=C;z=pf(s|0,y|0,50)|0;A=A|C;n=of(s|0,y|0,18)|0;j=C;E=pf(s|0,y|0,46)|0;j=A^(j|C);A=of(s|0,y|0,41)|0;r=C;t=pf(s|0,y|0,23)|0;r=lf((B|z)^(n|E)^(A|t)|0,j^(r|C)|0,F|0,b|0)|0;b=u|4;F=8+(b<<3)|0;b=v+(b<<3)|0;j=c[b>>2]|0;b=c[b+4>>2]|0;F=lf(r|0,C|0,c[F>>2]|0,c[F+4>>2]|0)|0;b=lf(F|0,C|0,j|0,b|0)|0;b=lf(b|0,C|0,(p^G)&s^G|0,(D^l)&y^l|0)|0;j=C;F=of(o|0,q|0,28)|0;r=C;t=pf(o|0,q|0,36)|0;r=r|C;A=of(o|0,q|0,34)|0;E=C;n=pf(o|0,q|0,30)|0;E=r^(E|C);r=of(o|0,q|0,39)|0;z=C;B=pf(o|0,q|0,25)|0;z=lf((k|o)&g|k&o|0,(m|q)&h|m&q|0,(F|t)^(A|n)^(r|B)|0,E^(z|C)|0)|0;E=C;f=lf(b|0,j|0,e|0,f|0)|0;e=C;j=lf(z|0,E|0,b|0,j|0)|0;b=C;E=of(f|0,e|0,14)|0;z=C;B=pf(f|0,e|0,50)|0;z=z|C;r=of(f|0,e|0,18)|0;n=C;A=pf(f|0,e|0,46)|0;n=z^(n|C);z=of(f|0,e|0,41)|0;t=C;F=pf(f|0,e|0,23)|0;t=lf((E|B)^(r|A)^(z|F)|0,n^(t|C)|0,G|0,l|0)|0;l=u|5;G=8+(l<<3)|0;l=v+(l<<3)|0;n=c[l>>2]|0;l=c[l+4>>2]|0;G=lf(t|0,C|0,c[G>>2]|0,c[G+4>>2]|0)|0;l=lf(G|0,C|0,n|0,l|0)|0;l=lf(l|0,C|0,(s^p)&f^p|0,(y^D)&e^D|0)|0;n=C;G=of(j|0,b|0,28)|0;t=C;F=pf(j|0,b|0,36)|0;t=t|C;z=of(j|0,b|0,34)|0;A=C;r=pf(j|0,b|0,30)|0;A=t^(A|C);t=of(j|0,b|0,39)|0;B=C;E=pf(j|0,b|0,25)|0;B=lf((o|j)&k|o&j|0,(q|b)&m|q&b|0,(G|F)^(z|r)^(t|E)|0,A^(B|C)|0)|0;A=C;h=lf(l|0,n|0,g|0,h|0)|0;g=C;n=lf(B|0,A|0,l|0,n|0)|0;l=C;A=of(h|0,g|0,14)|0;B=C;E=pf(h|0,g|0,50)|0;B=B|C;t=of(h|0,g|0,18)|0;r=C;z=pf(h|0,g|0,46)|0;r=B^(r|C);B=of(h|0,g|0,41)|0;F=C;G=pf(h|0,g|0,23)|0;D=lf((A|E)^(t|z)^(B|G)|0,r^(F|C)|0,p|0,D|0)|0;p=u|6;F=8+(p<<3)|0;p=v+(p<<3)|0;r=c[p>>2]|0;p=c[p+4>>2]|0;F=lf(D|0,C|0,c[F>>2]|0,c[F+4>>2]|0)|0;p=lf(F|0,C|0,r|0,p|0)|0;p=lf(p|0,C|0,(f^s)&h^s|0,(e^y)&g^y|0)|0;r=C;F=of(n|0,l|0,28)|0;D=C;G=pf(n|0,l|0,36)|0;D=D|C;B=of(n|0,l|0,34)|0;z=C;t=pf(n|0,l|0,30)|0;z=D^(z|C);D=of(n|0,l|0,39)|0;E=C;A=pf(n|0,l|0,25)|0;E=lf((j|n)&o|j&n|0,(b|l)&q|b&l|0,(F|G)^(B|t)^(D|A)|0,z^(E|C)|0)|0;z=C;m=lf(p|0,r|0,k|0,m|0)|0;k=C;r=lf(E|0,z|0,p|0,r|0)|0;p=C;z=of(m|0,k|0,14)|0;E=C;A=pf(m|0,k|0,50)|0;E=E|C;D=of(m|0,k|0,18)|0;t=C;B=pf(m|0,k|0,46)|0;t=E^(t|C);E=of(m|0,k|0,41)|0;G=C;F=pf(m|0,k|0,23)|0;y=lf((z|A)^(D|B)^(E|F)|0,t^(G|C)|0,s|0,y|0)|0;s=u|7;G=8+(s<<3)|0;s=v+(s<<3)|0;t=c[s>>2]|0;s=c[s+4>>2]|0;G=lf(y|0,C|0,c[G>>2]|0,c[G+4>>2]|0)|0;s=lf(G|0,C|0,t|0,s|0)|0;s=lf(s|0,C|0,(h^f)&m^f|0,(g^e)&k^e|0)|0;t=C;G=of(r|0,p|0,28)|0;y=C;F=pf(r|0,p|0,36)|0;y=y|C;E=of(r|0,p|0,34)|0;B=C;D=pf(r|0,p|0,30)|0;B=y^(B|C);y=of(r|0,p|0,39)|0;A=C;z=pf(r|0,p|0,25)|0;A=lf((n|r)&j|n&r|0,(l|p)&b|l&p|0,(G|F)^(E|D)^(y|z)|0,B^(A|C)|0)|0;B=C;q=lf(s|0,t|0,o|0,q|0)|0;o=C;t=lf(A|0,B|0,s|0,t|0)|0;s=C;u=u+8|0}while((u|0)<80);H=w;H=lf(t|0,s|0,c[H>>2]|0,c[H+4>>2]|0)|0;I=w;c[I>>2]=H;c[I+4>>2]=C;I=a+16|0;H=I;H=lf(r|0,p|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+24|0;H=I;H=lf(n|0,l|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+32|0;H=I;H=lf(j|0,b|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+40|0;H=I;H=lf(q|0,o|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+48|0;H=I;H=lf(m|0,k|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+56|0;H=I;H=lf(h|0,g|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;I=a+64|0;H=I;H=lf(f|0,e|0,c[H>>2]|0,c[H+4>>2]|0)|0;c[I>>2]=H;c[I+4>>2]=C;i=x;return}function Zd(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;if((b|0)==0|(d|0)==0){d=1;return d|0}f=b+72|0;e=c[f>>2]|0;if(e>>>0>127){d=1;return d|0}h=pf(e|0,0,3)|0;g=b;h=lf(c[g>>2]|0,c[g+4>>2]|0,h|0,C|0)|0;g=b;c[g>>2]=h;c[g+4>>2]=C;c[f>>2]=e+1;g=b+76|0;a[b+76+e>>0]=-128;e=c[f>>2]|0;if(e>>>0>112){if(e>>>0<128)do{c[f>>2]=e+1;a[b+76+e>>0]=0;e=c[f>>2]|0}while(e>>>0<128);Yd(b,g);c[f>>2]=0;e=0}do{c[f>>2]=e+1;a[b+76+e>>0]=0;e=c[f>>2]|0}while(e>>>0<120);h=b;e=c[h>>2]|0;h=c[h+4>>2]|0;f=of(e|0,h|0,56)|0;a[b+196>>0]=f;f=of(e|0,h|0,48)|0;a[b+197>>0]=f;f=of(e|0,h|0,40)|0;a[b+198>>0]=f;a[b+199>>0]=h;f=of(e|0,h|0,24)|0;a[b+200>>0]=f;f=of(e|0,h|0,16)|0;a[b+201>>0]=f;h=of(e|0,h|0,8)|0;a[b+202>>0]=h;a[b+203>>0]=e;Yd(b,g);e=0;do{g=b+8+(e<<3)|0;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,56)|0;h=d+(e<<3)|0;a[h>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,48)|0;a[h+1>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,40)|0;a[h+2>>0]=f;a[h+3>>0]=c[g+4>>2];f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,24)|0;a[h+4>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,16)|0;a[h+5>>0]=f;f=g;f=of(c[f>>2]|0,c[f+4>>2]|0,8)|0;a[h+6>>0]=f;a[h+7>>0]=c[g>>2];e=e+1|0}while((e|0)!=8);e=0;return e|0}function _d(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if((b|0)==0|(d|0)==0){b=1;return b|0}i=b+72|0;f=c[i>>2]|0;if(f>>>0>128){b=1;return b|0}if(!e){b=0;return b|0}j=b+76|0;while(1){if(!(e>>>0>127&(f|0)==0)){h=128-f|0;h=e>>>0<h>>>0?e:h;if(h){g=0;do{a[f+g+(b+76)>>0]=a[d+g>>0]|0;g=g+1|0;f=c[i>>2]|0}while(g>>>0<h>>>0)}g=f+h|0;c[i>>2]=g;d=d+h|0;e=e-h|0;if((g|0)==128){Yd(b,j);g=b;g=lf(c[g>>2]|0,c[g+4>>2]|0,1024,0)|0;h=b;c[h>>2]=g;c[h+4>>2]=C;c[i>>2]=0}}else{Yd(b,d);g=b;g=lf(c[g>>2]|0,c[g+4>>2]|0,1024,0)|0;h=b;c[h>>2]=g;c[h+4>>2]=C;e=e+-128|0;d=d+128|0}if(!e){e=0;break}f=c[i>>2]|0}return e|0}function $d(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=i;i=i+736|0;u=x+704|0;t=x+568|0;v=x+528|0;w=x+488|0;r=x+640|0;q=x+608|0;s=x;o=x+328|0;p=x+208|0;if((d[b+63>>0]|0)>31){w=0;i=x;return w|0}if(Ud(o,g)|0){w=0;i=x;return w|0}n=s+72|0;c[n>>2]=0;l=s;c[l>>2]=0;c[l+4>>2]=0;l=s+8|0;c[l>>2]=-205731576;c[l+4>>2]=1779033703;l=s+16|0;c[l>>2]=-2067093701;c[l+4>>2]=-1150833019;l=s+24|0;c[l>>2]=-23791573;c[l+4>>2]=1013904242;l=s+32|0;c[l>>2]=1595750129;c[l+4>>2]=-1521486534;l=s+40|0;c[l>>2]=-1377402159;c[l+4>>2]=1359893119;l=s+48|0;c[l>>2]=725511199;c[l+4>>2]=-1694144372;l=s+56|0;c[l>>2]=-79577749;c[l+4>>2]=528734635;l=s+64|0;c[l>>2]=327033209;c[l+4>>2]=1541459225;l=s+76|0;h=0;k=0;do{a[k+h+(s+76)>>0]=a[b+k>>0]|0;k=k+1|0;h=c[n>>2]|0}while(k>>>0<32);m=h+32|0;c[n>>2]=m;if((m|0)==128){Yd(s,l);l=s;l=lf(c[l>>2]|0,c[l+4>>2]|0,1024,0)|0;m=s;c[m>>2]=l;c[m+4>>2]=C;c[n>>2]=0}a:do if(g|0?(j=c[n>>2]|0,j>>>0<=128):0){m=s+76|0;h=32;while(1){if(!((j|0)==0&h>>>0>127)){l=128-j|0;l=h>>>0<l>>>0?h:l;if(l){k=0;do{a[k+j+(s+76)>>0]=a[g+k>>0]|0;k=k+1|0;j=c[n>>2]|0}while(k>>>0<l>>>0)}k=j+l|0;c[n>>2]=k;g=g+l|0;h=h-l|0;if((k|0)==128){Yd(s,m);k=s;k=lf(c[k>>2]|0,c[k+4>>2]|0,1024,0)|0;l=s;c[l>>2]=k;c[l+4>>2]=C;c[n>>2]=0}}else{Yd(s,g);k=s;k=lf(c[k>>2]|0,c[k+4>>2]|0,1024,0)|0;l=s;c[l>>2]=k;c[l+4>>2]=C;h=h+-128|0;g=g+128|0}if(!h)break a;j=c[n>>2]|0}}while(0);_d(s,e,f)|0;Zd(s,r)|0;Ld(r);Od(p,r,o,b+32|0);Fd(t,p+80|0);Hd(v,p,t);Hd(w,p+40|0,t);Id(q,w);Id(u,v);w=q+31|0;a[w>>0]=(d[w>>0]|0)^(d[u>>0]|0)<<7;w=(a[b+1>>0]^a[q+1>>0]|a[b>>0]^a[q>>0]|a[b+2>>0]^a[q+2>>0]|a[b+3>>0]^a[q+3>>0]|a[b+4>>0]^a[q+4>>0]|a[b+5>>0]^a[q+5>>0]|a[b+6>>0]^a[q+6>>0]|a[b+7>>0]^a[q+7>>0]|a[b+8>>0]^a[q+8>>0]|a[b+9>>0]^a[q+9>>0]|a[b+10>>0]^a[q+10>>0]|a[b+11>>0]^a[q+11>>0]|a[b+12>>0]^a[q+12>>0]|a[b+13>>0]^a[q+13>>0]|a[b+14>>0]^a[q+14>>0]|a[b+15>>0]^a[q+15>>0]|a[b+16>>0]^a[q+16>>0]|a[b+17>>0]^a[q+17>>0]|a[b+18>>0]^a[q+18>>0]|a[b+19>>0]^a[q+19>>0]|a[b+20>>0]^a[q+20>>0]|a[b+21>>0]^a[q+21>>0]|a[b+22>>0]^a[q+22>>0]|a[b+23>>0]^a[q+23>>0]|a[b+24>>0]^a[q+24>>0]|a[b+25>>0]^a[q+25>>0]|a[b+26>>0]^a[q+26>>0]|a[b+27>>0]^a[q+27>>0]|a[b+28>>0]^a[q+28>>0]|a[b+29>>0]^a[q+29>>0]|a[b+30>>0]^a[q+30>>0]|a[b+31>>0]^a[w>>0])<<24>>24==0&1;i=x;return w|0}function ae(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0;F=i;i=i+656|0;x=F+616|0;w=F+448|0;y=F+408|0;z=F+368|0;B=F;D=F+552|0;E=F+488|0;v=F+208|0;A=B+72|0;c[A>>2]=0;u=B;c[u>>2]=0;c[u+4>>2]=0;u=B+8|0;m=u;c[m>>2]=-205731576;c[m+4>>2]=1779033703;m=B+16|0;n=m;c[n>>2]=-2067093701;c[n+4>>2]=-1150833019;n=B+24|0;o=n;c[o>>2]=-23791573;c[o+4>>2]=1013904242;o=B+32|0;p=o;c[p>>2]=1595750129;c[p+4>>2]=-1521486534;p=B+40|0;q=p;c[q>>2]=-1377402159;c[q+4>>2]=1359893119;q=B+48|0;r=q;c[r>>2]=725511199;c[r+4>>2]=-1694144372;r=B+56|0;s=r;c[s>>2]=-79577749;c[s+4>>2]=528734635;s=B+64|0;k=s;c[k>>2]=327033209;c[k+4>>2]=1541459225;k=h+32|0;t=B+76|0;j=0;l=0;do{a[l+j+(B+76)>>0]=a[k+l>>0]|0;l=l+1|0;j=c[A>>2]|0}while(l>>>0<32);l=j+32|0;c[A>>2]=l;if((l|0)==128){Yd(B,t);l=B;l=lf(c[l>>2]|0,c[l+4>>2]|0,1024,0)|0;t=B;c[t>>2]=l;c[t+4>>2]=C;c[A>>2]=0}_d(B,e,f)|0;Zd(B,E)|0;Ld(E);Vd(v,E);Fd(w,v+80|0);Hd(y,v,w);Hd(z,v+40|0,w);Id(b,z);Id(x,y);z=b+31|0;a[z>>0]=(d[z>>0]|0)^(d[x>>0]|0)<<7;c[A>>2]=0;z=B;c[z>>2]=0;c[z+4>>2]=0;z=u;c[z>>2]=-205731576;c[z+4>>2]=1779033703;z=m;c[z>>2]=-2067093701;c[z+4>>2]=-1150833019;z=n;c[z>>2]=-23791573;c[z+4>>2]=1013904242;z=o;c[z>>2]=1595750129;c[z+4>>2]=-1521486534;z=p;c[z>>2]=-1377402159;c[z+4>>2]=1359893119;z=q;c[z>>2]=725511199;c[z+4>>2]=-1694144372;z=r;c[z>>2]=-79577749;c[z+4>>2]=528734635;z=s;c[z>>2]=327033209;c[z+4>>2]=1541459225;if(b|0){l=B+76|0;j=0;k=0;do{a[k+j+(B+76)>>0]=a[b+k>>0]|0;k=k+1|0;j=c[A>>2]|0}while(k>>>0<32);z=j+32|0;c[A>>2]=z;if((z|0)==128){Yd(B,l);y=B;y=lf(c[y>>2]|0,c[y+4>>2]|0,1024,0)|0;z=B;c[z>>2]=y;c[z+4>>2]=C;c[A>>2]=0}}if(!g){_d(B,e,f)|0;Zd(B,D)|0;Ld(D);b=b+32|0;Md(b,D,h,E);i=F;return}k=c[A>>2]|0;if(k>>>0>128){_d(B,e,f)|0;Zd(B,D)|0;Ld(D);b=b+32|0;Md(b,D,h,E);i=F;return}n=B+76|0;j=32;while(1){if(!((k|0)==0&j>>>0>127)){m=128-k|0;m=j>>>0<m>>>0?j:m;if(m){l=0;do{a[l+k+(B+76)>>0]=a[g+l>>0]|0;l=l+1|0;k=c[A>>2]|0}while(l>>>0<m>>>0)}z=k+m|0;c[A>>2]=z;g=g+m|0;j=j-m|0;if((z|0)==128){Yd(B,n);y=B;y=lf(c[y>>2]|0,c[y+4>>2]|0,1024,0)|0;z=B;c[z>>2]=y;c[z+4>>2]=C;c[A>>2]=0}}else{Yd(B,g);y=B;y=lf(c[y>>2]|0,c[y+4>>2]|0,1024,0)|0;z=B;c[z>>2]=y;c[z+4>>2]=C;j=j+-128|0;g=g+128|0}if(!j)break;k=c[A>>2]|0}_d(B,e,f)|0;Zd(B,D)|0;Ld(D);b=b+32|0;Md(b,D,h,E);i=F;return}function be(b,d,e){b=b|0;d=d|0;e=e|0;c[b+128>>2]=e;e=d;d=b+128|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(d|0));return}function ce(a){a=a|0;return 132}function de(a,b){a=a|0;b=b|0;b=eb(b,a,128)|0;return ab(b,c[a+128>>2]|0)|0}function ee(a,b,c){a=a|0;b=b|0;c=c|0;return bb(fb(b,c,a,128)|0,c,a+128|0)|0}function fe(a){a=a|0;var b=0,d=0,e=0;e=a+128|0;b=(c[e>>2]|0)+1|0;c[e>>2]=b;if(b&16777215)if(!(b&65535))d=1;else d=(b&255|0)==0?2:3;else d=0;b=a+(d<<5)|0;e=3;while(1){Ob(b,32,33193+e|0,1,a+(e<<5)|0);if((e|0)>(d|0))e=e+-1|0;else break}return}function ge(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+128|0;d=c[h>>2]|0;i=0;do{e=(4-i<<3)+-8|0;g=-1<<e;e=(b>>>e)-(d>>>e)&255;if(!e){if(d>>>0>b>>>0){e=256;f=5}}else if(e>>>0>1)f=5;else f=6;if((f|0)==5){d=a+(i<<5)|0;f=33193+i|0;do{Ob(d,32,f,1,d);e=e+-1|0}while(e>>>0>1);f=6}if((f|0)==6){f=0;d=a+(i<<5)|0;e=3;while(1){Ob(d,32,33193+e|0,1,a+(e<<5)|0);if((e|0)>(i|0))e=e+-1|0;else break}d=g&b;c[h>>2]=d}i=i+1|0}while((i|0)!=4);return}function he(a){a=a|0;if(a>>>0>=15){a=33470;return a|0}a=c[32512+(a<<2)>>2]|0;return a|0}function ie(a){a=a|0;a=sa[c[680>>2]&3](32572,a)|0;return Ga((qa[c[169]&1](32572)|0)+a|0)|0}function je(a,b){a=a|0;b=b|0;b=sa[c[680>>2]&3](32572,b)|0;b=(qa[c[169]&1](32572)|0)+b|0;return a+(Ga(b)|0)+(0-b)|0}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=sa[c[680>>2]&3](32572,e)|0;g=(qa[c[169]&1](32572)|0)+i|0;f=Ga(g)|0;h=d+f+(0-g)|0;ra[c[684>>2]&3](32572,a,b,h,e,h,i,h,g)|0;Ha(h,g,d)|0;return f|0}function le(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=Ia(e)|0;if((g|0)==-1){if(!f){f=-1;return f|0}c[f>>2]=7;f=-1;return f|0}else{Ja(d,e,d)|0;e=g-(qa[c[169]&1](32572)|0)|0;g=ra[c[692>>2]&3](32572,a,b,d,g,d,e,d,e)|0;if(!((f|0)!=0&(g|0)==-1)){f=g;return f|0}c[f>>2]=8;f=-1;return f|0}return 0}function me(){return 304}function ne(a){a=a|0;Bd(a,304);return a|0}function oe(a){a=a|0;Bd(a,304);return 304}function pe(a){a=a|0;return he(c[a+300>>2]|0)|0}function qe(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+240|0;j=k;switch(Ia(f)|0){case -1:{c[b+300>>2]=7;j=-1;i=k;return j|0}case 229:{Ja(e,f,j)|0;do if((a[j>>0]|0)==2){f=j+5|0;e=((d[j+2>>0]|d[j+1>>0]<<8)<<8|d[j+3>>0])<<8|d[j+4>>0];be(b,f,e);be(b+132|0,f,e);e=b+264|0;f=e;g=j+133|0;h=f+32|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));if(!(Jb(e,j,165,j+165|0)|0)){c[b+300>>2]=14;e=-1;break}else{c[b+296>>2]=1;e=0;break}}else{c[b+300>>2]=11;e=-1}while(0);Bd(j,229);j=e;i=k;return j|0}default:{c[b+300>>2]=11;j=-1;i=k;return j|0}}return 0}function re(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0;h=i;i=i+176|0;g=h;switch(Ia(f)|0){case -1:{c[b+300>>2]=7;g=-1;i=h;return g|0}case 165:{Ja(e,f,g)|0;if((a[g>>0]|0)==1){f=g+5|0;e=((d[g+2>>0]|d[g+1>>0]<<8)<<8|d[g+3>>0])<<8|d[g+4>>0];be(b,f,e);be(b+132|0,f,e);b=b+264|0;e=g+133|0;f=b+32|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));b=0}else{c[b+300>>2]=11;b=-1}Bd(g,165);g=b;i=h;return g|0}default:{c[b+300>>2]=11;g=-1;i=h;return g|0}}return 0}function se(a){a=a|0;var b=0,c=0;c=ce(a)|0;b=ce(a+132|0)|0;return ie(c+5+b+(Wa(a+264|0)|0)|0)|0}function te(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=ce(a)|0;g=a+132|0;i=ce(g)|0;h=a+264|0;i=j+5+i+(Wa(h)|0)|0;if((ie(i)|0)>>>0>f>>>0){c[a+300>>2]=2;j=-1;return j|0}else{j=Xa(de(g,de(a,ab(je(e,i)|0,2)|0)|0)|0,h)|0;cb(j,c[a+296>>2]|0)|0;j=ke(b,d,e,i)|0;return j|0}return 0}function ue(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0;k=i;i=i+16|0;h=k;j=a+300|0;b=le(b,d,e,f,j)|0;if((b|0)==-1){f=-1;i=k;return f|0}g=e+b|0;b=bb(e,g,h)|0;if(((c[h>>2]|0)+-1|0)>>>0>1){c[j>>2]=9;f=-1;i=k;return f|0}b=Ya(ee(a+132|0,ee(a,b,g)|0,g)|0,g,a+264|0)|0;d=a+296|0;if((c[h>>2]|0)==1)c[d>>2]=1;else b=db(b,g,d)|0;if((g|0)==(b|0)){i=k;return f|0}c[j>>2]=10;f=-1;i=k;return f|0}function ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=i;i=i+32|0;f=g;e=Ja(d,e,d)|0;if((e|0)==-1){c[b+300>>2]=7;b=-1;i=g;return b|0}h=c[8124]|0;ob(d,e,qa[c[c[h>>2]>>2]&1](h)|0,64,f);do if((a[f>>0]|0)==3)if(!(c[f+12>>2]|0)){c[b+300>>2]=4;e=-1;break}else{e=c[8124]|0;e=sa[c[(c[e>>2]|0)+12>>2]&3](e,c[f+16>>2]|0)|0;break}else{c[b+300>>2]=3;e=-1}while(0);h=e;i=g;return h|0}function we(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var j=0,k=0,l=0,m=0,n=0,o=0;o=i;i=i+160|0;l=o+132|0;n=o;e=Ja(d,e,d)|0;if((e|0)==-1){c[b+300>>2]=7;b=-1;i=o;return b|0}k=c[8124]|0;ob(d,e,qa[c[c[k>>2]>>2]&1](k)|0,64,l);a:do if((a[l>>0]|0)==3){if(c[l+8>>2]|0?(m=l+12|0,c[m>>2]|0):0){if(h|0)c[h>>2]=c[l+4>>2];j=e+-64|0;if(!(Jb(b+264|0,d,j,d+j|0)|0)){c[b+300>>2]=14;e=-1;break}h=c[8124]|0;k=l+16|0;if((sa[c[(c[h>>2]|0)+12>>2]&3](h,c[k>>2]|0)|0)>>>0>g>>>0){c[b+300>>2]=2;e=-1;break}e=c[l+4>>2]|0;h=b+132|0;do if((e-(c[b+260>>2]|0)|0)<=-1)if((e-(c[b+128>>2]|0)|0)<0){c[b+300>>2]=12;e=-1;break a}else{qf(n|0,b|0,132)|0;ge(n,e);break}else{ge(h,e);qf(n|0,h|0,132)|0}while(0);e=c[8124]|0;e=ra[c[(c[e>>2]|0)+16>>2]&3](e,n,128,d,j,c[m>>2]|0,c[k>>2]|0,f,g)|0;Bd(n,132);if((e|0)==-1){c[b+300>>2]=5;e=-1;break}else{c[b+296>>2]=1;break}}c[b+300>>2]=4;e=-1}else{c[b+300>>2]=3;e=-1}while(0);b=e;i=o;return b|0}function xe(a){a=a|0;return Ga(32)|0}function ye(a,b,d){a=a|0;b=b|0;d=d|0;if((Ga(32)|0)>>>0>d>>>0){c[a+300>>2]=2;a=-1;return a|0}else{a=Ha(a+264|0,32,b)|0;return a|0}return 0}function ze(a){a=a|0;return c[a+128>>2]|0}function Ae(a){a=a|0;return c[a+296>>2]|0}function Be(a){a=a|0;return Ga(165)|0}function Ce(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0;l=i;i=i+144|0;k=l;g=Ga(165)|0;if(g>>>0>e>>>0){c[b+300>>2]=2;b=-1;i=l;return b|0}e=b+132|0;do if((f-(c[b+260>>2]|0)|0)>-1){ge(e,f);qf(k|0,e|0,132)|0}else{if((f-(c[b+128>>2]|0)|0)>=0){qf(k|0,b|0,132)|0;ge(k,f);break}c[b+300>>2]=12;b=-1;i=l;return b|0}while(0);j=d+g+-165|0;a[j>>0]=1;h=j+1|0;a[h>>0]=f>>>24;h=h+1|0;a[h>>0]=f>>>16;h=h+1|0;a[h>>0]=f>>>8;a[h+1>>0]=f;h=d+(g+-161)|0;g=d+(g+-160)|0;e=k;f=g+128|0;do{a[g>>0]=a[e>>0]|0;g=g+1|0;e=e+1|0}while((g|0)<(f|0));g=h+129|0;e=b+264|0;f=g+32|0;do{a[g>>0]=a[e>>0]|0;g=g+1|0;e=e+1|0}while((g|0)<(f|0));b=Ha(j,165,d)|0;i=l;return b|0}function De(){return 232}function Ee(a){a=a|0;Bd(a,232);return a|0}function Fe(a){a=a|0;Bd(a,232);return 232}function Ge(a){a=a|0;return he(c[a+228>>2]|0)|0}function He(a){a=a|0;var b=0;b=(ce(a)|0)+4|0;return ie(b+(Za(a+132|0)|0)|0)|0}function Ie(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=(ce(a)|0)+4|0;g=a+132|0;h=h+(Za(g)|0)|0;if((ie(h)|0)>>>0>f>>>0){c[a+228>>2]=2;a=-1;return a|0}else{_a(de(a,ab(je(e,h)|0,1)|0)|0,g)|0;a=ke(b,d,e,h)|0;return a|0}return 0}function Je(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0;j=i;i=i+16|0;h=j;g=a+228|0;b=le(b,d,e,f,g)|0;if((b|0)==-1){a=-1;i=j;return a|0}d=e+b|0;b=bb(e,d,h)|0;if((c[h>>2]|0)!=1){c[g>>2]=9;a=-1;i=j;return a|0}if((d|0)==($a(ee(a,b,d)|0,d,a+132|0)|0)){a=f;i=j;return a|0}c[g>>2]=10;a=-1;i=j;return a|0}function Ke(a){a=a|0;return 160}function Le(a,b,d){a=a|0;b=b|0;d=d|0;if(d>>>0<160){c[a+228>>2]=1;a=-1;return a|0}else{be(a,b,0);Hb(b+128|0,a+132|0);Bd(b,d);a=0;return a|0}return 0}function Me(a,b){a=a|0;b=b|0;var d=0;d=c[8124]|0;d=sa[c[(c[d>>2]|0)+4>>2]&3](d,b)|0;b=c[8124]|0;b=qa[c[c[b>>2]>>2]&1](b)|0;return Ga(mb(c[a+128>>2]|0,d,b,64)|0)|0}function Ne(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0;l=i;i=i+16|0;k=l;g=c[8124]|0;g=sa[c[(c[g>>2]|0)+4>>2]&3](g,d)|0;j=c[8124]|0;j=qa[c[c[j>>2]>>2]&1](j)|0;h=a+128|0;j=mb(c[h>>2]|0,g,j,64)|0;if((Ga(j)|0)>>>0>f>>>0){c[a+228>>2]=2;a=-1;i=l;return a|0}g=e+(Ga(j)|0)+(0-j)|0;m=c[8124]|0;m=sa[c[(c[m>>2]|0)+4>>2]&3](m,d)|0;f=c[8124]|0;f=qa[c[c[f>>2]>>2]&1](f)|0;f=(nb(3,c[h>>2]|0,m,g,k)|0)+f|0;h=c[8124]|0;if((ra[c[(c[h>>2]|0)+8>>2]&3](h,a,128,b,d,c[k>>2]|0,m,g,f)|0)==-1){m=-1;i=l;return m|0}else{fe(a);Ib(a+132|0,g,f,g+f|0);m=Ha(g,j,e)|0;i=l;return m|0}return 0}function Oe(a){a=a|0;return Ga(32)|0}function Pe(a,b,d){a=a|0;b=b|0;d=d|0;if((Ga(32)|0)>>>0>d>>>0){c[a+228>>2]=2;a=-1;return a|0}else{a=Ha(a+132|0,32,b)|0;return a|0}return 0}function Qe(a){a=a|0;return c[a+128>>2]|0}function Re(a){a=a|0;return Ga(229)|0}function Se(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=Ga(229)|0;if(f>>>0>e>>>0){c[b+228>>2]=2;d=-1;return d|0}else{i=d+f+-229|0;a[i>>0]=2;g=c[b+128>>2]|0;j=i+1|0;a[j>>0]=g>>>24;j=j+1|0;a[j>>0]=g>>>16;j=j+1|0;a[j>>0]=g>>>8;a[j+1>>0]=g;j=d+(f+-225)|0;f=d+(f+-224)|0;g=b;h=f+128|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));e=b+132|0;f=j+129|0;g=e;h=f+32|0;do{a[f>>0]=a[g>>0]|0;f=f+1|0;g=g+1|0}while((f|0)<(h|0));b=j+161|0;Ib(e,i,b-i|0,b);d=Ha(i,229,d)|0;return d|0}return 0}function Te(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;D=i;i=i+256|0;m=D;e=0;f=0;while(1){c[m+(e<<2)>>2]=(d[b+(f|1)>>0]|0)<<16|(d[b+f>>0]|0)<<24|(d[b+(f|2)>>0]|0)<<8|(d[b+(f|3)>>0]|0);e=e+1|0;if((e|0)==16)break;else f=f+4|0}b=c[m>>2]|0;e=16;do{C=c[m+(e+-2<<2)>>2]|0;B=b;b=c[m+(e+-15<<2)>>2]|0;c[m+(e<<2)>>2]=B+(c[m+(e+-7<<2)>>2]|0)+((C>>>19|C<<13)^C>>>10^(C>>>17|C<<15))+((b>>>18|b<<14)^b>>>3^(b>>>7|b<<25));e=e+1|0}while((e|0)!=64);p=a+80|0;q=c[p>>2]|0;r=a+84|0;s=c[r>>2]|0;t=a+88|0;u=c[t>>2]|0;v=a+92|0;w=c[v>>2]|0;x=a+96|0;y=c[x>>2]|0;z=a+100|0;A=c[z>>2]|0;B=a+104|0;C=c[B>>2]|0;n=a+108|0;o=c[n>>2]|0;l=q;j=s;h=u;f=w;a=y;e=A;b=C;g=o;k=0;while(1){g=((a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7))+g+(b&~a^e&a)+(c[32584+(k<<2)>>2]|0)+(c[m+(k<<2)>>2]|0)|0;f=g+f|0;g=((l>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10))+(l&(j^h)^j&h)+g|0;k=k+1|0;if((k|0)==64){k=l;break}else{F=a;E=l;l=g;a=f;g=b;b=e;e=F;f=h;h=j;j=E}}c[p>>2]=q+g;c[r>>2]=s+k;c[t>>2]=u+j;c[v>>2]=w+h;c[x>>2]=y+f;c[z>>2]=A+a;c[B>>2]=C+e;c[n>>2]=o+b;i=D;return}function Ue(a){a=a|0;var b=0;c[a+64>>2]=0;b=a+72|0;c[b>>2]=0;c[b+4>>2]=0;c[a+80>>2]=1779033703;c[a+84>>2]=-1150833019;c[a+88>>2]=1013904242;c[a+92>>2]=-1521486534;c[a+96>>2]=1359893119;c[a+100>>2]=-1694144372;c[a+104>>2]=528734635;c[a+108>>2]=1541459225;return}function Ve(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;if(!e)return;g=b+64|0;h=b+72|0;f=c[g>>2]|0;i=0;do{a[b+f>>0]=a[d+i>>0]|0;f=(c[g>>2]|0)+1|0;c[g>>2]=f;if((f|0)==64){Te(b,b);j=h;j=lf(c[j>>2]|0,c[j+4>>2]|0,512,0)|0;f=h;c[f>>2]=j;c[f+4>>2]=C;c[g>>2]=0;f=0}i=i+1|0}while((i|0)!=(e|0));return}function We(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;g=b+64|0;e=c[g>>2]|0;f=e+1|0;a[b+e>>0]=-128;if(e>>>0<56){if(f>>>0<56)nf(b+f|0,0,55-e|0)|0}else{if(f>>>0<64)nf(b+f|0,0,63-e|0)|0;Te(b,b);e=b;f=e+56|0;do{c[e>>2]=0;e=e+4|0}while((e|0)<(f|0))}i=b+72|0;h=i;h=lf(c[g>>2]<<3|0,0,c[h>>2]|0,c[h+4>>2]|0)|0;g=C;c[i>>2]=h;c[i+4>>2]=g;a[b+63>>0]=h;i=of(h|0,g|0,8)|0;a[b+62>>0]=i;i=of(h|0,g|0,16)|0;a[b+61>>0]=i;i=of(h|0,g|0,24)|0;a[b+60>>0]=i;a[b+59>>0]=g;i=of(h|0,g|0,40)|0;a[b+58>>0]=i;i=of(h|0,g|0,48)|0;a[b+57>>0]=i;g=of(h|0,g|0,56)|0;a[b+56>>0]=g;Te(b,b);g=b+80|0;h=b+84|0;i=b+88|0;j=b+92|0;k=b+96|0;l=b+100|0;m=b+104|0;e=b+108|0;f=0;do{b=24-(f<<3)|0;a[d+f>>0]=(c[g>>2]|0)>>>b;a[d+(f+4)>>0]=(c[h>>2]|0)>>>b;a[d+(f+8)>>0]=(c[i>>2]|0)>>>b;a[d+(f+12)>>0]=(c[j>>2]|0)>>>b;a[d+(f+16)>>0]=(c[k>>2]|0)>>>b;a[d+(f+20)>>0]=(c[l>>2]|0)>>>b;a[d+(f+24)>>0]=(c[m>>2]|0)>>>b;a[d+(f+28)>>0]=(c[e>>2]|0)>>>b;f=f+1|0}while((f|0)!=4);return}function Xe(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;L=i;i=i+16|0;K=L;B=K+4|0;I=K+8|0;O=a[b+3>>0]|0;J=K+12|0;q=a[b+4>>0]|0;v=K+1|0;o=a[b+5>>0]|0;w=K+5|0;N=a[b+6>>0]|0;x=K+9|0;M=a[b+7>>0]|0;y=K+13|0;u=a[b+8>>0]|0;z=K+2|0;h=a[b+9>>0]|0;A=K+6|0;r=a[b+10>>0]|0;C=K+10|0;t=a[b+11>>0]|0;D=K+14|0;k=a[b+12>>0]|0;E=K+3|0;s=a[b+13>>0]|0;F=K+7|0;p=a[b+14>>0]|0;G=K+11|0;n=a[b+15>>0]|0;H=K+15|0;l=c[f>>2]|0;m=(d[b>>0]|0)^l>>>24;j=(d[b+1>>0]|0)^l>>>16;a[I>>0]=(d[b+2>>0]|0)^l>>>8;a[J>>0]=O&255^l;l=c[f+4>>2]|0;q=q&255^l>>>24;o=o&255^l>>>16;a[x>>0]=N&255^l>>>8;a[y>>0]=M&255^l;l=c[f+8>>2]|0;u=u&255^l>>>24;h=h&255^l>>>16;r=r&255^l>>>8;a[D>>0]=t&255^l;l=c[f+12>>2]|0;k=k&255^l>>>24;b=s&255^l>>>16;p=p&255^l>>>8;l=n&255^l;a[K>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[v>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;a[z>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[E>>0]=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;k=d[I>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;u=d[x>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;q=d[J>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;m=d[y>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;n=d[D>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;a[B>>0]=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;a[w>>0]=h;a[A>>0]=b;a[F>>0]=j;a[I>>0]=r;a[C>>0]=k;a[x>>0]=p;a[G>>0]=u;a[J>>0]=l;a[H>>0]=n;a[D>>0]=m;a[y>>0]=q;Ye(K);q=c[f+16>>2]|0;m=(d[K>>0]|0)^q>>>24;a[B>>0]=(d[B>>0]|0)^q>>>16;a[I>>0]=(d[I>>0]|0)^q>>>8;a[J>>0]=(d[J>>0]|0)^q;q=c[f+20>>2]|0;n=(d[v>>0]|0)^q>>>24;l=(d[w>>0]|0)^q>>>16;a[x>>0]=(d[x>>0]|0)^q>>>8;a[y>>0]=(d[y>>0]|0)^q;q=c[f+24>>2]|0;u=(d[z>>0]|0)^q>>>24;p=(d[A>>0]|0)^q>>>16;k=(d[C>>0]|0)^q>>>8;a[D>>0]=(d[D>>0]|0)^q;q=c[f+28>>2]|0;r=(d[E>>0]|0)^q>>>24;j=(d[F>>0]|0)^q>>>16;b=(d[G>>0]|0)^q>>>8;q=(d[H>>0]|0)^q;a[K>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[v>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[z>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[E>>0]=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;r=d[B>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;u=d[I>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;n=d[x>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;m=d[J>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;h=d[y>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;o=d[D>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;a[B>>0]=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;a[w>>0]=p;a[A>>0]=j;a[F>>0]=r;a[I>>0]=k;a[C>>0]=u;a[x>>0]=b;a[G>>0]=n;a[J>>0]=q;a[H>>0]=o;a[D>>0]=h;a[y>>0]=m;Ye(K);m=c[f+32>>2]|0;h=(d[K>>0]|0)^m>>>24;a[B>>0]=(d[B>>0]|0)^m>>>16;a[I>>0]=(d[I>>0]|0)^m>>>8;a[J>>0]=(d[J>>0]|0)^m;m=c[f+36>>2]|0;o=(d[v>>0]|0)^m>>>24;q=(d[w>>0]|0)^m>>>16;a[x>>0]=(d[x>>0]|0)^m>>>8;a[y>>0]=(d[y>>0]|0)^m;m=c[f+40>>2]|0;n=(d[z>>0]|0)^m>>>24;b=(d[A>>0]|0)^m>>>16;u=(d[C>>0]|0)^m>>>8;a[D>>0]=(d[D>>0]|0)^m;m=c[f+44>>2]|0;k=(d[E>>0]|0)^m>>>24;r=(d[F>>0]|0)^m>>>16;j=(d[G>>0]|0)^m>>>8;m=(d[H>>0]|0)^m;a[K>>0]=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[v>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;a[z>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[E>>0]=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;k=d[B>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;n=d[I>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;o=d[x>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;h=d[J>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;p=d[y>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;l=d[D>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;a[B>>0]=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;a[w>>0]=b;a[A>>0]=r;a[F>>0]=k;a[I>>0]=u;a[C>>0]=n;a[x>>0]=j;a[G>>0]=o;a[J>>0]=m;a[H>>0]=l;a[D>>0]=p;a[y>>0]=h;Ye(K);h=c[f+48>>2]|0;p=(d[K>>0]|0)^h>>>24;a[B>>0]=(d[B>>0]|0)^h>>>16;a[I>>0]=(d[I>>0]|0)^h>>>8;a[J>>0]=(d[J>>0]|0)^h;h=c[f+52>>2]|0;l=(d[v>>0]|0)^h>>>24;m=(d[w>>0]|0)^h>>>16;a[x>>0]=(d[x>>0]|0)^h>>>8;a[y>>0]=(d[y>>0]|0)^h;h=c[f+56>>2]|0;o=(d[z>>0]|0)^h>>>24;j=(d[A>>0]|0)^h>>>16;n=(d[C>>0]|0)^h>>>8;a[D>>0]=(d[D>>0]|0)^h;h=c[f+60>>2]|0;u=(d[E>>0]|0)^h>>>24;k=(d[F>>0]|0)^h>>>16;r=(d[G>>0]|0)^h>>>8;h=(d[H>>0]|0)^h;a[K>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[v>>0]=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;a[z>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;a[E>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;u=d[B>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;o=d[I>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;l=d[x>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;p=d[J>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;b=d[y>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;q=d[D>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;a[B>>0]=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;a[w>>0]=j;a[A>>0]=k;a[F>>0]=u;a[I>>0]=n;a[C>>0]=o;a[x>>0]=r;a[G>>0]=l;a[J>>0]=h;a[H>>0]=q;a[D>>0]=b;a[y>>0]=p;Ye(K);p=c[f+64>>2]|0;b=(d[K>>0]|0)^p>>>24;a[B>>0]=(d[B>>0]|0)^p>>>16;a[I>>0]=(d[I>>0]|0)^p>>>8;a[J>>0]=(d[J>>0]|0)^p;p=c[f+68>>2]|0;q=(d[v>>0]|0)^p>>>24;h=(d[w>>0]|0)^p>>>16;a[x>>0]=(d[x>>0]|0)^p>>>8;a[y>>0]=(d[y>>0]|0)^p;p=c[f+72>>2]|0;l=(d[z>>0]|0)^p>>>24;r=(d[A>>0]|0)^p>>>16;o=(d[C>>0]|0)^p>>>8;a[D>>0]=(d[D>>0]|0)^p;p=c[f+76>>2]|0;n=(d[E>>0]|0)^p>>>24;u=(d[F>>0]|0)^p>>>16;k=(d[G>>0]|0)^p>>>8;p=(d[H>>0]|0)^p;a[K>>0]=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[v>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;a[z>>0]=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;a[E>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;n=d[B>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;l=d[I>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;q=d[x>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;b=d[J>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;j=d[y>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;m=d[D>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;a[B>>0]=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;a[w>>0]=r;a[A>>0]=u;a[F>>0]=n;a[I>>0]=o;a[C>>0]=l;a[x>>0]=k;a[G>>0]=q;a[J>>0]=p;a[H>>0]=m;a[D>>0]=j;a[y>>0]=b;Ye(K);b=c[f+80>>2]|0;j=(d[K>>0]|0)^b>>>24;a[B>>0]=(d[B>>0]|0)^b>>>16;a[I>>0]=(d[I>>0]|0)^b>>>8;a[J>>0]=(d[J>>0]|0)^b;b=c[f+84>>2]|0;m=(d[v>>0]|0)^b>>>24;p=(d[w>>0]|0)^b>>>16;a[x>>0]=(d[x>>0]|0)^b>>>8;a[y>>0]=(d[y>>0]|0)^b;b=c[f+88>>2]|0;q=(d[z>>0]|0)^b>>>24;k=(d[A>>0]|0)^b>>>16;l=(d[C>>0]|0)^b>>>8;a[D>>0]=(d[D>>0]|0)^b;b=c[f+92>>2]|0;o=(d[E>>0]|0)^b>>>24;n=(d[F>>0]|0)^b>>>16;u=(d[G>>0]|0)^b>>>8;b=(d[H>>0]|0)^b;a[K>>0]=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;a[v>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[z>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;a[E>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;o=d[B>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;q=d[I>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;m=d[x>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;j=d[J>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;r=d[y>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;h=d[D>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;b=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;a[B>>0]=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;a[w>>0]=k;a[A>>0]=n;a[F>>0]=o;a[I>>0]=l;a[C>>0]=q;a[x>>0]=u;a[G>>0]=m;a[J>>0]=b;a[H>>0]=h;a[D>>0]=r;a[y>>0]=j;Ye(K);j=c[f+96>>2]|0;r=(d[K>>0]|0)^j>>>24;a[B>>0]=(d[B>>0]|0)^j>>>16;a[I>>0]=(d[I>>0]|0)^j>>>8;a[J>>0]=(d[J>>0]|0)^j;j=c[f+100>>2]|0;h=(d[v>>0]|0)^j>>>24;b=(d[w>>0]|0)^j>>>16;a[x>>0]=(d[x>>0]|0)^j>>>8;a[y>>0]=(d[y>>0]|0)^j;j=c[f+104>>2]|0;m=(d[z>>0]|0)^j>>>24;u=(d[A>>0]|0)^j>>>16;q=(d[C>>0]|0)^j>>>8;a[D>>0]=(d[D>>0]|0)^j;j=c[f+108>>2]|0;l=(d[E>>0]|0)^j>>>24;o=(d[F>>0]|0)^j>>>16;n=(d[G>>0]|0)^j>>>8;j=(d[H>>0]|0)^j;a[K>>0]=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;a[v>>0]=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[z>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;a[E>>0]=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;l=d[B>>0]|0;l=a[(l&15)+(33491+(l>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;m=d[I>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;h=d[x>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;r=d[J>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;k=d[y>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;p=d[D>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;j=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;a[B>>0]=a[(b&15)+(33491+((b>>>4&15)<<4))>>0]|0;a[w>>0]=u;a[A>>0]=o;a[F>>0]=l;a[I>>0]=q;a[C>>0]=m;a[x>>0]=n;a[G>>0]=h;a[J>>0]=j;a[H>>0]=p;a[D>>0]=k;a[y>>0]=r;Ye(K);r=c[f+112>>2]|0;k=(d[K>>0]|0)^r>>>24;a[B>>0]=(d[B>>0]|0)^r>>>16;a[I>>0]=(d[I>>0]|0)^r>>>8;a[J>>0]=(d[J>>0]|0)^r;r=c[f+116>>2]|0;p=(d[v>>0]|0)^r>>>24;j=(d[w>>0]|0)^r>>>16;a[x>>0]=(d[x>>0]|0)^r>>>8;a[y>>0]=(d[y>>0]|0)^r;r=c[f+120>>2]|0;h=(d[z>>0]|0)^r>>>24;n=(d[A>>0]|0)^r>>>16;m=(d[C>>0]|0)^r>>>8;a[D>>0]=(d[D>>0]|0)^r;r=c[f+124>>2]|0;q=(d[E>>0]|0)^r>>>24;l=(d[F>>0]|0)^r>>>16;o=(d[G>>0]|0)^r>>>8;r=(d[H>>0]|0)^r;a[K>>0]=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;a[v>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[z>>0]=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[E>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;q=d[B>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;n=a[(n&15)+(33491+((n>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;h=d[I>>0]|0;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;p=d[x>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;k=d[J>>0]|0;k=a[(k&15)+(33491+(k>>>4<<4))>>0]|0;u=d[y>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;b=d[D>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;r=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[B>>0]=a[(j&15)+(33491+((j>>>4&15)<<4))>>0]|0;a[w>>0]=n;a[A>>0]=l;a[F>>0]=q;a[I>>0]=m;a[C>>0]=h;a[x>>0]=o;a[G>>0]=p;a[J>>0]=r;a[H>>0]=b;a[D>>0]=u;a[y>>0]=k;Ye(K);k=c[f+128>>2]|0;u=(d[K>>0]|0)^k>>>24;a[B>>0]=(d[B>>0]|0)^k>>>16;a[I>>0]=(d[I>>0]|0)^k>>>8;a[J>>0]=(d[J>>0]|0)^k;k=c[f+132>>2]|0;b=(d[v>>0]|0)^k>>>24;r=(d[w>>0]|0)^k>>>16;a[x>>0]=(d[x>>0]|0)^k>>>8;a[y>>0]=(d[y>>0]|0)^k;k=c[f+136>>2]|0;p=(d[z>>0]|0)^k>>>24;o=(d[A>>0]|0)^k>>>16;h=(d[C>>0]|0)^k>>>8;a[D>>0]=(d[D>>0]|0)^k;k=c[f+140>>2]|0;m=(d[E>>0]|0)^k>>>24;q=(d[F>>0]|0)^k>>>16;l=(d[G>>0]|0)^k>>>8;k=(d[H>>0]|0)^k;a[K>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[v>>0]=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[E>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;m=d[B>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;p=d[I>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;b=d[x>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=d[J>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;n=d[y>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;j=d[D>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;a[B>>0]=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[w>>0]=o;a[A>>0]=q;a[F>>0]=m;a[I>>0]=h;a[C>>0]=p;a[x>>0]=l;a[G>>0]=b;a[J>>0]=k;a[H>>0]=j;a[D>>0]=n;a[y>>0]=u;Ye(K);u=c[f+144>>2]|0;n=(d[K>>0]|0)^u>>>24;a[B>>0]=(d[B>>0]|0)^u>>>16;a[I>>0]=(d[I>>0]|0)^u>>>8;a[J>>0]=(d[J>>0]|0)^u;u=c[f+148>>2]|0;j=(d[v>>0]|0)^u>>>24;k=(d[w>>0]|0)^u>>>16;a[x>>0]=(d[x>>0]|0)^u>>>8;a[y>>0]=(d[y>>0]|0)^u;u=c[f+152>>2]|0;b=(d[z>>0]|0)^u>>>24;l=(d[A>>0]|0)^u>>>16;p=(d[C>>0]|0)^u>>>8;a[D>>0]=(d[D>>0]|0)^u;u=c[f+156>>2]|0;h=(d[E>>0]|0)^u>>>24;m=(d[F>>0]|0)^u>>>16;q=(d[G>>0]|0)^u>>>8;u=(d[H>>0]|0)^u;a[K>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[v>>0]=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=b;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[E>>0]=h;j=d[B>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;n=d[I>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;o=d[x>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;r=d[J>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;s=d[y>>0]|0;s=a[(s&15)+(33491+(s>>>4<<4))>>0]|0;t=d[D>>0]|0;t=a[(t&15)+(33491+(t>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;a[B>>0]=k;a[w>>0]=l;a[A>>0]=m;a[F>>0]=j;a[I>>0]=p;a[C>>0]=n;a[x>>0]=q;a[G>>0]=o;a[J>>0]=u;a[H>>0]=t;a[D>>0]=s;a[y>>0]=r;if((g|0)==128){N=c[f+160>>2]|0;O=((d[K>>0]|0)^N>>>24)&255;a[K>>0]=O;k=(k&255^N>>>16)&255;a[B>>0]=k;B=(p&255^N>>>8)&255;a[I>>0]=B;p=(u&255^N)&255;a[J>>0]=p;N=c[f+164>>2]|0;u=((d[v>>0]|0)^N>>>24)&255;a[v>>0]=u;v=(l&255^N>>>16)&255;a[w>>0]=v;w=(q&255^N>>>8)&255;a[x>>0]=w;x=(r&255^N)&255;a[y>>0]=x;N=c[f+168>>2]|0;y=(b&255^N>>>24)&255;a[z>>0]=y;I=(m&255^N>>>16)&255;a[A>>0]=I;J=(n&255^N>>>8)&255;a[C>>0]=J;z=(s&255^N)&255;a[D>>0]=z;N=c[f+172>>2]|0;g=(h&255^N>>>24)&255;a[E>>0]=g;K=(j&255^N>>>16)&255;a[F>>0]=K;M=(o&255^N>>>8)&255;a[G>>0]=M;N=(t&255^N)&255;a[H>>0]=N;A=k;C=p;D=u;E=v;F=w;G=x;H=y;f=z;a[e>>0]=O;O=e+1|0;a[O>>0]=A;O=e+2|0;a[O>>0]=B;O=e+3|0;a[O>>0]=C;O=e+4|0;a[O>>0]=D;O=e+5|0;a[O>>0]=E;O=e+6|0;a[O>>0]=F;O=e+7|0;a[O>>0]=G;O=e+8|0;a[O>>0]=H;O=e+9|0;a[O>>0]=I;O=e+10|0;a[O>>0]=J;O=e+11|0;a[O>>0]=f;O=e+12|0;a[O>>0]=g;O=e+13|0;a[O>>0]=K;O=e+14|0;a[O>>0]=M;O=e+15|0;a[O>>0]=N;i=L;return}Ye(K);k=c[f+160>>2]|0;u=(d[K>>0]|0)^k>>>24;a[B>>0]=(d[B>>0]|0)^k>>>16;a[I>>0]=(d[I>>0]|0)^k>>>8;a[J>>0]=(d[J>>0]|0)^k;k=c[f+164>>2]|0;b=(d[v>>0]|0)^k>>>24;r=(d[w>>0]|0)^k>>>16;a[x>>0]=(d[x>>0]|0)^k>>>8;a[y>>0]=(d[y>>0]|0)^k;k=c[f+168>>2]|0;p=(d[z>>0]|0)^k>>>24;o=(d[A>>0]|0)^k>>>16;h=(d[C>>0]|0)^k>>>8;a[D>>0]=(d[D>>0]|0)^k;k=c[f+172>>2]|0;m=(d[E>>0]|0)^k>>>24;q=(d[F>>0]|0)^k>>>16;l=(d[G>>0]|0)^k>>>8;k=(d[H>>0]|0)^k;a[K>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[v>>0]=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[E>>0]=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;m=d[B>>0]|0;m=a[(m&15)+(33491+(m>>>4<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;p=d[I>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;b=d[x>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;h=a[(h&15)+(33491+((h>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;u=d[J>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;n=d[y>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;j=d[D>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;a[B>>0]=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[w>>0]=o;a[A>>0]=q;a[F>>0]=m;a[I>>0]=h;a[C>>0]=p;a[x>>0]=l;a[G>>0]=b;a[J>>0]=k;a[H>>0]=j;a[D>>0]=n;a[y>>0]=u;Ye(K);u=c[f+176>>2]|0;n=(d[K>>0]|0)^u>>>24;a[B>>0]=(d[B>>0]|0)^u>>>16;a[I>>0]=(d[I>>0]|0)^u>>>8;a[J>>0]=(d[J>>0]|0)^u;u=c[f+180>>2]|0;j=(d[v>>0]|0)^u>>>24;k=(d[w>>0]|0)^u>>>16;a[x>>0]=(d[x>>0]|0)^u>>>8;a[y>>0]=(d[y>>0]|0)^u;u=c[f+184>>2]|0;b=(d[z>>0]|0)^u>>>24;l=(d[A>>0]|0)^u>>>16;p=(d[C>>0]|0)^u>>>8;a[D>>0]=(d[D>>0]|0)^u;u=c[f+188>>2]|0;h=(d[E>>0]|0)^u>>>24;m=(d[F>>0]|0)^u>>>16;q=(d[G>>0]|0)^u>>>8;u=(d[H>>0]|0)^u;a[K>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[v>>0]=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;b=a[(b&15)+(33491+(b>>>4<<4))>>0]|0;a[z>>0]=b;h=a[(h&15)+(33491+(h>>>4<<4))>>0]|0;a[E>>0]=h;j=d[B>>0]|0;j=a[(j&15)+(33491+(j>>>4<<4))>>0]|0;k=a[(k&15)+(33491+((k>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;n=d[I>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;o=d[x>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;p=a[(p&15)+(33491+((p>>>4&15)<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;r=d[J>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;s=d[y>>0]|0;s=a[(s&15)+(33491+(s>>>4<<4))>>0]|0;t=d[D>>0]|0;t=a[(t&15)+(33491+(t>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;a[B>>0]=k;a[w>>0]=l;a[A>>0]=m;a[F>>0]=j;a[I>>0]=p;a[C>>0]=n;a[x>>0]=q;a[G>>0]=o;a[J>>0]=u;a[H>>0]=t;a[D>>0]=s;a[y>>0]=r;if((g|0)==192){N=c[f+192>>2]|0;O=((d[K>>0]|0)^N>>>24)&255;a[K>>0]=O;k=(k&255^N>>>16)&255;a[B>>0]=k;B=(p&255^N>>>8)&255;a[I>>0]=B;p=(u&255^N)&255;a[J>>0]=p;N=c[f+196>>2]|0;u=((d[v>>0]|0)^N>>>24)&255;a[v>>0]=u;v=(l&255^N>>>16)&255;a[w>>0]=v;w=(q&255^N>>>8)&255;a[x>>0]=w;x=(r&255^N)&255;a[y>>0]=x;N=c[f+200>>2]|0;y=(b&255^N>>>24)&255;a[z>>0]=y;I=(m&255^N>>>16)&255;a[A>>0]=I;J=(n&255^N>>>8)&255;a[C>>0]=J;z=(s&255^N)&255;a[D>>0]=z;N=c[f+204>>2]|0;g=(h&255^N>>>24)&255;a[E>>0]=g;K=(j&255^N>>>16)&255;a[F>>0]=K;M=(o&255^N>>>8)&255;a[G>>0]=M;N=(t&255^N)&255;a[H>>0]=N;A=k;C=p;D=u;E=v;F=w;G=x;H=y;f=z;a[e>>0]=O;O=e+1|0;a[O>>0]=A;O=e+2|0;a[O>>0]=B;O=e+3|0;a[O>>0]=C;O=e+4|0;a[O>>0]=D;O=e+5|0;a[O>>0]=E;O=e+6|0;a[O>>0]=F;O=e+7|0;a[O>>0]=G;O=e+8|0;a[O>>0]=H;O=e+9|0;a[O>>0]=I;O=e+10|0;a[O>>0]=J;O=e+11|0;a[O>>0]=f;O=e+12|0;a[O>>0]=g;O=e+13|0;a[O>>0]=K;O=e+14|0;a[O>>0]=M;O=e+15|0;a[O>>0]=N;i=L;return}else{Ye(K);s=c[f+192>>2]|0;N=(d[K>>0]|0)^s>>>24;a[B>>0]=(d[B>>0]|0)^s>>>16;a[I>>0]=(d[I>>0]|0)^s>>>8;a[J>>0]=(d[J>>0]|0)^s;s=c[f+196>>2]|0;p=(d[v>>0]|0)^s>>>24;r=(d[w>>0]|0)^s>>>16;a[x>>0]=(d[x>>0]|0)^s>>>8;a[y>>0]=(d[y>>0]|0)^s;s=c[f+200>>2]|0;u=(d[z>>0]|0)^s>>>24;g=(d[A>>0]|0)^s>>>16;q=(d[C>>0]|0)^s>>>8;a[D>>0]=(d[D>>0]|0)^s;s=c[f+204>>2]|0;o=(d[E>>0]|0)^s>>>24;m=(d[F>>0]|0)^s>>>16;l=(d[G>>0]|0)^s>>>8;s=(d[H>>0]|0)^s;a[K>>0]=a[(N&15)+(33491+(N>>>4<<4))>>0]|0;a[v>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[z>>0]=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;a[E>>0]=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;o=d[B>>0]|0;o=a[(o&15)+(33491+(o>>>4<<4))>>0]|0;g=a[(g&15)+(33491+((g>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;u=d[I>>0]|0;u=a[(u&15)+(33491+(u>>>4<<4))>>0]|0;p=d[x>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;q=a[(q&15)+(33491+((q>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;N=d[J>>0]|0;N=a[(N&15)+(33491+(N>>>4<<4))>>0]|0;n=d[y>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;M=d[D>>0]|0;M=a[(M&15)+(33491+(M>>>4<<4))>>0]|0;s=a[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;a[B>>0]=a[(r&15)+(33491+((r>>>4&15)<<4))>>0]|0;a[w>>0]=g;a[A>>0]=m;a[F>>0]=o;a[I>>0]=q;a[C>>0]=u;a[x>>0]=l;a[G>>0]=p;a[J>>0]=s;a[H>>0]=M;a[D>>0]=n;a[y>>0]=N;Ye(K);N=c[f+208>>2]|0;n=(d[K>>0]|0)^N>>>24;a[B>>0]=(d[B>>0]|0)^N>>>16;a[I>>0]=(d[I>>0]|0)^N>>>8;a[J>>0]=(d[J>>0]|0)^N;N=c[f+212>>2]|0;M=(d[v>>0]|0)^N>>>24;s=(d[w>>0]|0)^N>>>16;a[x>>0]=(d[x>>0]|0)^N>>>8;a[y>>0]=(d[y>>0]|0)^N;N=c[f+216>>2]|0;p=(d[z>>0]|0)^N>>>24;l=(d[A>>0]|0)^N>>>16;u=(d[C>>0]|0)^N>>>8;a[D>>0]=(d[D>>0]|0)^N;N=c[f+220>>2]|0;q=(d[E>>0]|0)^N>>>24;o=(d[F>>0]|0)^N>>>16;m=(d[G>>0]|0)^N>>>8;N=(d[H>>0]|0)^N;a[K>>0]=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;a[v>>0]=a[(M&15)+(33491+(M>>>4<<4))>>0]|0;a[z>>0]=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;a[E>>0]=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;q=d[B>>0]|0;q=a[(q&15)+(33491+(q>>>4<<4))>>0]|0;s=a[(s&15)+(33491+((s>>>4&15)<<4))>>0]|0;l=a[(l&15)+(33491+((l>>>4&15)<<4))>>0]|0;o=a[(o&15)+(33491+((o>>>4&15)<<4))>>0]|0;p=d[I>>0]|0;p=a[(p&15)+(33491+(p>>>4<<4))>>0]|0;M=d[x>>0]|0;M=a[(M&15)+(33491+(M>>>4<<4))>>0]|0;u=a[(u&15)+(33491+((u>>>4&15)<<4))>>0]|0;m=a[(m&15)+(33491+((m>>>4&15)<<4))>>0]|0;n=d[J>>0]|0;n=a[(n&15)+(33491+(n>>>4<<4))>>0]|0;g=d[y>>0]|0;g=a[(g&15)+(33491+(g>>>4<<4))>>0]|0;r=d[D>>0]|0;r=a[(r&15)+(33491+(r>>>4<<4))>>0]|0;N=a[(N&15)+(33491+((N>>>4&15)<<4))>>0]|0;t=c[f+224>>2]|0;O=((d[K>>0]|0)^t>>>24)&255;a[K>>0]=O;s=(s&255^t>>>16)&255;a[B>>0]=s;B=(u&255^t>>>8)&255;a[I>>0]=B;t=(N&255^t)&255;a[J>>0]=t;N=c[f+228>>2]|0;u=((d[v>>0]|0)^N>>>24)&255;a[v>>0]=u;v=(l&255^N>>>16)&255;a[w>>0]=v;w=(m&255^N>>>8)&255;a[x>>0]=w;x=(n&255^N)&255;a[y>>0]=x;N=c[f+232>>2]|0;y=((d[z>>0]|0)^N>>>24)&255;a[z>>0]=y;I=(o&255^N>>>16)&255;a[A>>0]=I;J=(p&255^N>>>8)&255;a[C>>0]=J;z=(g&255^N)&255;a[D>>0]=z;N=c[f+236>>2]|0;g=((d[E>>0]|0)^N>>>24)&255;a[E>>0]=g;K=(q&255^N>>>16)&255;a[F>>0]=K;M=(M&255^N>>>8)&255;a[G>>0]=M;N=(r&255^N)&255;a[H>>0]=N;A=s;C=t;D=u;E=v;F=w;G=x;H=y;f=z;a[e>>0]=O;O=e+1|0;a[O>>0]=A;O=e+2|0;a[O>>0]=B;O=e+3|0;a[O>>0]=C;O=e+4|0;a[O>>0]=D;O=e+5|0;a[O>>0]=E;O=e+6|0;a[O>>0]=F;O=e+7|0;a[O>>0]=G;O=e+8|0;a[O>>0]=H;O=e+9|0;a[O>>0]=I;O=e+10|0;a[O>>0]=J;O=e+11|0;a[O>>0]=f;O=e+12|0;a[O>>0]=g;O=e+13|0;a[O>>0]=K;O=e+14|0;a[O>>0]=M;O=e+15|0;a[O>>0]=N;i=L;return}}function Ye(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a[b>>0]|0;l=b+4|0;e=a[l>>0]|0;f=b+8|0;g=a[f>>0]|0;h=b+12|0;d=a[h>>0]|0;j=n&255;i=e&255;c=g&255;m=d&255;a[b>>0]=d^g^a[33747+(j*6|0)>>0]^a[33747+(i*6|0)+1>>0];a[l>>0]=a[33747+(i*6|0)>>0]^n^d^a[33747+(c*6|0)+1>>0];a[f>>0]=a[33747+(m*6|0)+1>>0]^(a[33747+(c*6|0)>>0]^(e^n));a[h>>0]=g^e^a[33747+(j*6|0)+1>>0]^a[33747+(m*6|0)>>0];h=b+1|0;m=a[h>>0]|0;j=b+5|0;e=a[j>>0]|0;g=b+9|0;f=a[g>>0]|0;n=b+13|0;c=a[n>>0]|0;l=m&255;d=e&255;i=f&255;k=c&255;a[h>>0]=c^f^a[33747+(l*6|0)>>0]^a[33747+(d*6|0)+1>>0];a[j>>0]=a[33747+(d*6|0)>>0]^m^c^a[33747+(i*6|0)+1>>0];a[g>>0]=a[33747+(k*6|0)+1>>0]^(a[33747+(i*6|0)>>0]^(e^m));a[n>>0]=f^e^a[33747+(l*6|0)+1>>0]^a[33747+(k*6|0)>>0];n=b+2|0;k=a[n>>0]|0;l=b+6|0;e=a[l>>0]|0;f=b+10|0;g=a[f>>0]|0;m=b+14|0;i=a[m>>0]|0;j=k&255;c=e&255;d=g&255;h=i&255;a[n>>0]=i^g^a[33747+(j*6|0)>>0]^a[33747+(c*6|0)+1>>0];a[l>>0]=a[33747+(c*6|0)>>0]^k^i^a[33747+(d*6|0)+1>>0];a[f>>0]=a[33747+(h*6|0)+1>>0]^(a[33747+(d*6|0)>>0]^(e^k));a[m>>0]=g^e^a[33747+(j*6|0)+1>>0]^a[33747+(h*6|0)>>0];m=b+3|0;h=a[m>>0]|0;j=b+7|0;e=a[j>>0]|0;g=b+11|0;f=a[g>>0]|0;b=b+15|0;k=a[b>>0]|0;d=h&255;l=e&255;i=f&255;c=k&255;a[m>>0]=k^f^a[33747+(d*6|0)>>0]^a[33747+(l*6|0)+1>>0];a[j>>0]=a[33747+(l*6|0)>>0]^h^k^a[33747+(i*6|0)+1>>0];a[g>>0]=a[33747+(c*6|0)+1>>0]^(a[33747+(i*6|0)>>0]^(e^h));a[b>>0]=f^e^a[33747+(d*6|0)+1>>0]^a[33747+(c*6|0)>>0];return}function Ze(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;switch(e|0){case 128:{g=4;h=44;break}case 192:{g=6;h=52;break}case 256:{g=8;h=60;break}default:return}e=0;do{f=e<<2;c[b+(e<<2)>>2]=(d[a+(f|1)>>0]|0)<<16|(d[a+f>>0]|0)<<24|(d[a+(f|2)>>0]|0)<<8|(d[a+(f|3)>>0]|0);e=e+1|0}while((e|0)<(g|0));if(g>>>0>6)f=g;else{f=g;do{a=f+-1|0;e=c[b+(a<<2)>>2]|0;if(!((f|0)%(g|0)|0))e=((d[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0)<<8|(d[(e>>>24&15)+(33491+(e>>>28<<4))>>0]|0)|(d[(e>>>8&15)+(33491+((e>>>12&15)<<4))>>0]|0)<<16|(d[(e>>>16&15)+(33491+((e>>>20&15)<<4))>>0]|0)<<24)^c[32840+(((a|0)/(g|0)|0)<<2)>>2];c[b+(f<<2)>>2]=c[b+(f-g<<2)>>2]^e;f=f+1|0}while((f|0)<(h|0));return}do{a=f+-1|0;e=c[b+(a<<2)>>2]|0;switch((f|0)%(g|0)|0|0){case 0:{e=((d[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0)<<8|(d[(e>>>24&15)+(33491+(e>>>28<<4))>>0]|0)|(d[(e>>>8&15)+(33491+((e>>>12&15)<<4))>>0]|0)<<16|(d[(e>>>16&15)+(33491+((e>>>20&15)<<4))>>0]|0)<<24)^c[32840+(((a|0)/(g|0)|0)<<2)>>2];break}case 4:{e=(d[(e>>>8&15)+(33491+((e>>>12&15)<<4))>>0]|0)<<8|(d[(e&15)+(33491+((e>>>4&15)<<4))>>0]|0)|(d[(e>>>16&15)+(33491+((e>>>20&15)<<4))>>0]|0)<<16|(d[(e>>>24&15)+(33491+(e>>>28<<4))>>0]|0)<<24;break}default:{}}c[b+(f<<2)>>2]=c[b+(f-g<<2)>>2]^e;f=f+1|0}while((f|0)<(h|0));return}function _e(b){b=b|0;var c=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=b+4|0;f=b+8|0;e=b+12|0;c=d[b>>0]|0;h=d[j>>0]|0;k=d[f>>0]|0;g=d[e>>0]|0;a[b>>0]=a[33747+(g*6|0)+2>>0]^(a[33747+(k*6|0)+4>>0]^(a[33747+(h*6|0)+3>>0]^a[33747+(c*6|0)+5>>0]));a[j>>0]=a[33747+(g*6|0)+4>>0]^(a[33747+(k*6|0)+3>>0]^(a[33747+(h*6|0)+5>>0]^a[33747+(c*6|0)+2>>0]));a[f>>0]=a[33747+(g*6|0)+3>>0]^(a[33747+(k*6|0)+5>>0]^(a[33747+(h*6|0)+2>>0]^a[33747+(c*6|0)+4>>0]));a[e>>0]=a[33747+(g*6|0)+5>>0]^(a[33747+(k*6|0)+2>>0]^(a[33747+(h*6|0)+4>>0]^a[33747+(c*6|0)+3>>0]));e=b+1|0;c=b+5|0;h=b+9|0;k=b+13|0;g=d[e>>0]|0;f=d[c>>0]|0;j=d[h>>0]|0;i=d[k>>0]|0;a[e>>0]=a[33747+(i*6|0)+2>>0]^(a[33747+(j*6|0)+4>>0]^(a[33747+(f*6|0)+3>>0]^a[33747+(g*6|0)+5>>0]));a[c>>0]=a[33747+(i*6|0)+4>>0]^(a[33747+(j*6|0)+3>>0]^(a[33747+(f*6|0)+5>>0]^a[33747+(g*6|0)+2>>0]));a[h>>0]=a[33747+(i*6|0)+3>>0]^(a[33747+(j*6|0)+5>>0]^(a[33747+(f*6|0)+2>>0]^a[33747+(g*6|0)+4>>0]));a[k>>0]=a[33747+(i*6|0)+5>>0]^(a[33747+(j*6|0)+2>>0]^(a[33747+(f*6|0)+4>>0]^a[33747+(g*6|0)+3>>0]));k=b+2|0;g=b+6|0;f=b+10|0;j=b+14|0;i=d[k>>0]|0;h=d[g>>0]|0;c=d[f>>0]|0;e=d[j>>0]|0;a[k>>0]=a[33747+(e*6|0)+2>>0]^(a[33747+(c*6|0)+4>>0]^(a[33747+(h*6|0)+3>>0]^a[33747+(i*6|0)+5>>0]));a[g>>0]=a[33747+(e*6|0)+4>>0]^(a[33747+(c*6|0)+3>>0]^(a[33747+(h*6|0)+5>>0]^a[33747+(i*6|0)+2>>0]));a[f>>0]=a[33747+(e*6|0)+3>>0]^(a[33747+(c*6|0)+5>>0]^(a[33747+(h*6|0)+2>>0]^a[33747+(i*6|0)+4>>0]));a[j>>0]=a[33747+(e*6|0)+5>>0]^(a[33747+(c*6|0)+2>>0]^(a[33747+(h*6|0)+4>>0]^a[33747+(i*6|0)+3>>0]));j=b+3|0;i=b+7|0;h=b+11|0;b=b+15|0;c=d[j>>0]|0;e=d[i>>0]|0;f=d[h>>0]|0;g=d[b>>0]|0;a[j>>0]=a[33747+(g*6|0)+2>>0]^(a[33747+(f*6|0)+4>>0]^(a[33747+(e*6|0)+3>>0]^a[33747+(c*6|0)+5>>0]));a[i>>0]=a[33747+(g*6|0)+4>>0]^(a[33747+(f*6|0)+3>>0]^(a[33747+(e*6|0)+5>>0]^a[33747+(c*6|0)+2>>0]));a[h>>0]=a[33747+(g*6|0)+3>>0]^(a[33747+(f*6|0)+5>>0]^(a[33747+(e*6|0)+2>>0]^a[33747+(c*6|0)+4>>0]));a[b>>0]=a[33747+(g*6|0)+5>>0]^(a[33747+(f*6|0)+2>>0]^(a[33747+(e*6|0)+4>>0]^a[33747+(c*6|0)+3>>0]));return}function $e(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;N=i;i=i+16|0;M=N;h=a[b>>0]|0;a[M>>0]=h;m=a[b+1>>0]|0;E=M+4|0;a[E>>0]=m;v=a[b+2>>0]|0;K=M+8|0;a[K>>0]=v;w=a[b+3>>0]|0;L=M+12|0;a[L>>0]=w;j=a[b+4>>0]|0;y=M+1|0;a[y>>0]=j;k=a[b+5>>0]|0;z=M+5|0;a[z>>0]=k;l=a[b+6>>0]|0;A=M+9|0;a[A>>0]=l;n=a[b+7>>0]|0;B=M+13|0;a[B>>0]=n;o=a[b+8>>0]|0;C=M+2|0;a[C>>0]=o;p=a[b+9>>0]|0;D=M+6|0;a[D>>0]=p;q=a[b+10>>0]|0;F=M+10|0;a[F>>0]=q;r=a[b+11>>0]|0;G=M+14|0;a[G>>0]=r;s=a[b+12>>0]|0;H=M+3|0;a[H>>0]=s;t=a[b+13>>0]|0;I=M+7|0;a[I>>0]=t;u=a[b+14>>0]|0;J=M+11|0;a[J>>0]=u;b=a[b+15>>0]|0;x=M+15|0;a[x>>0]=b;if((g|0)>128){if((g|0)>192){R=c[f+224>>2]|0;S=h&255^R>>>24;P=m&255^R>>>16;g=v&255^R>>>8;v=w&255^R;m=c[f+228>>2]|0;R=j&255^m>>>24;O=k&255^m>>>16;w=l&255^m>>>8;k=n&255^m;m=c[f+232>>2]|0;Q=o&255^m>>>24;n=p&255^m>>>16;j=q&255^m>>>8;m=r&255^m;r=c[f+236>>2]|0;p=s&255^r>>>24;o=t&255^r>>>16;h=u&255^r>>>8;r=b&255^r;l=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;a[y>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;a[C>>0]=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;a[H>>0]=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;o=a[(o&15)+(35283+((o>>>4&15)<<4))>>0]|0;p=a[(P&15)+(35283+((P>>>4&15)<<4))>>0]|0;a[D>>0]=a[(O&15)+(35283+((O>>>4&15)<<4))>>0]|0;a[I>>0]=a[(n&15)+(35283+((n>>>4&15)<<4))>>0]|0;j=a[(j&15)+(35283+((j>>>4&15)<<4))>>0]|0;h=a[(h&15)+(35283+((h>>>4&15)<<4))>>0]|0;n=a[(g&15)+(35283+((g>>>4&15)<<4))>>0]|0;a[J>>0]=a[(w&15)+(35283+((w>>>4&15)<<4))>>0]|0;k=a[(k&15)+(35283+((k>>>4&15)<<4))>>0]|0;m=a[(m&15)+(35283+((m>>>4&15)<<4))>>0]|0;r=a[(r&15)+(35283+((r>>>4&15)<<4))>>0]|0;b=a[(v&15)+(35283+((v>>>4&15)<<4))>>0]|0;q=c[f+208>>2]|0;a[M>>0]=l&255^q>>>24;a[E>>0]=o&255^q>>>16;a[K>>0]=j&255^q>>>8;a[L>>0]=k&255^q;q=c[f+212>>2]|0;a[y>>0]=(d[y>>0]|0)^q>>>24;a[z>>0]=p&255^q>>>16;a[A>>0]=h&255^q>>>8;a[B>>0]=m&255^q;q=c[f+216>>2]|0;a[C>>0]=(d[C>>0]|0)^q>>>24;a[D>>0]=(d[D>>0]|0)^q>>>16;a[F>>0]=n&255^q>>>8;a[G>>0]=r&255^q;q=c[f+220>>2]|0;a[H>>0]=(d[H>>0]|0)^q>>>24;a[I>>0]=(d[I>>0]|0)^q>>>16;a[J>>0]=(d[J>>0]|0)^q>>>8;a[x>>0]=b&255^q;_e(M);q=a[I>>0]|0;b=a[D>>0]|0;r=a[z>>0]|0;n=a[E>>0]|0;m=a[J>>0]|0;h=a[A>>0]|0;p=a[F>>0]|0;k=a[K>>0]|0;j=a[x>>0]|0;a[x>>0]=a[L>>0]|0;o=a[B>>0]|0;l=a[G>>0]|0;s=d[M>>0]|0;a[M>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[y>>0]|0;a[y>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[C>>0]|0;a[C>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[H>>0]|0;a[H>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;q=q&255;q=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;n=n&255;n=a[(n&15)+(35283+(n>>>4<<4))>>0]|0;r=r&255;a[D>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;b=b&255;a[I>>0]=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;p=p&255;p=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;m=m&255;m=a[(m&15)+(35283+(m>>>4<<4))>>0]|0;k=k&255;k=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;h=h&255;a[J>>0]=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;o=o&255;o=a[(o&15)+(35283+(o>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;j=j&255;j=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;h=d[x>>0]|0;h=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=c[f+192>>2]|0;a[M>>0]=(d[M>>0]|0)^b>>>24;a[E>>0]=q&255^b>>>16;a[K>>0]=p&255^b>>>8;a[L>>0]=o&255^b;b=c[f+196>>2]|0;a[y>>0]=(d[y>>0]|0)^b>>>24;a[z>>0]=n&255^b>>>16;a[A>>0]=m&255^b>>>8;a[B>>0]=l&255^b;b=c[f+200>>2]|0;a[C>>0]=(d[C>>0]|0)^b>>>24;a[D>>0]=(d[D>>0]|0)^b>>>16;a[F>>0]=k&255^b>>>8;a[G>>0]=j&255^b;b=c[f+204>>2]|0;a[H>>0]=(d[H>>0]|0)^b>>>24;a[I>>0]=(d[I>>0]|0)^b>>>16;a[J>>0]=(d[J>>0]|0)^b>>>8;a[x>>0]=h&255^b;_e(M);b=a[M>>0]|0;h=a[y>>0]|0;j=a[C>>0]|0;k=a[H>>0]|0;l=a[I>>0]|0;m=a[E>>0]|0;n=a[z>>0]|0;o=a[D>>0]|0;p=a[F>>0]|0;q=a[J>>0]|0;r=a[K>>0]|0;s=a[A>>0]|0;t=a[B>>0]|0;u=a[G>>0]|0;v=a[x>>0]|0;w=a[L>>0]|0}else{R=c[f+192>>2]|0;g=(h&255^R>>>24)&255;a[M>>0]=g;m=(m&255^R>>>16)&255;a[E>>0]=m;P=(v&255^R>>>8)&255;a[K>>0]=P;w=(w&255^R)&255;a[L>>0]=w;R=c[f+196>>2]|0;h=(j&255^R>>>24)&255;a[y>>0]=h;O=(k&255^R>>>16)&255;a[z>>0]=O;Q=(l&255^R>>>8)&255;a[A>>0]=Q;R=(n&255^R)&255;a[B>>0]=R;S=c[f+200>>2]|0;j=(o&255^S>>>24)&255;a[C>>0]=j;o=(p&255^S>>>16)&255;a[D>>0]=o;p=(q&255^S>>>8)&255;a[F>>0]=p;S=(r&255^S)&255;a[G>>0]=S;v=c[f+204>>2]|0;k=(s&255^v>>>24)&255;a[H>>0]=k;l=(t&255^v>>>16)&255;a[I>>0]=l;q=(u&255^v>>>8)&255;a[J>>0]=q;v=(b&255^v)&255;a[x>>0]=v;b=g;n=O;r=P;s=Q;t=R;u=S}S=b&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;h=h&255;a[y>>0]=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;j=j&255;a[C>>0]=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;k=k&255;a[H>>0]=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;k=m&255;k=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;j=n&255;a[D>>0]=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;j=o&255;a[I>>0]=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;j=p&255;j=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;h=q&255;h=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;n=r&255;n=a[(n&15)+(35283+(n>>>4<<4))>>0]|0;p=s&255;a[J>>0]=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;p=t&255;p=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;m=u&255;m=a[(m&15)+(35283+(m>>>4<<4))>>0]|0;r=v&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;b=w&255;b=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;q=c[f+176>>2]|0;a[M>>0]=S&255^q>>>24;a[E>>0]=l&255^q>>>16;a[K>>0]=j&255^q>>>8;a[L>>0]=p&255^q;q=c[f+180>>2]|0;a[y>>0]=(d[y>>0]|0)^q>>>24;a[z>>0]=k&255^q>>>16;a[A>>0]=h&255^q>>>8;a[B>>0]=m&255^q;q=c[f+184>>2]|0;a[C>>0]=(d[C>>0]|0)^q>>>24;a[D>>0]=(d[D>>0]|0)^q>>>16;a[F>>0]=n&255^q>>>8;a[G>>0]=r&255^q;q=c[f+188>>2]|0;a[H>>0]=(d[H>>0]|0)^q>>>24;a[I>>0]=(d[I>>0]|0)^q>>>16;a[J>>0]=(d[J>>0]|0)^q>>>8;a[x>>0]=b&255^q;_e(M);q=a[I>>0]|0;b=a[D>>0]|0;r=a[z>>0]|0;n=a[E>>0]|0;m=a[J>>0]|0;h=a[A>>0]|0;p=a[F>>0]|0;k=a[K>>0]|0;j=a[x>>0]|0;a[x>>0]=a[L>>0]|0;o=a[B>>0]|0;l=a[G>>0]|0;s=d[M>>0]|0;a[M>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[y>>0]|0;a[y>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[C>>0]|0;a[C>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=d[H>>0]|0;a[H>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;q=q&255;q=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;n=n&255;n=a[(n&15)+(35283+(n>>>4<<4))>>0]|0;r=r&255;a[D>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;b=b&255;a[I>>0]=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;p=p&255;p=a[(p&15)+(35283+(p>>>4<<4))>>0]|0;m=m&255;m=a[(m&15)+(35283+(m>>>4<<4))>>0]|0;k=k&255;k=a[(k&15)+(35283+(k>>>4<<4))>>0]|0;h=h&255;a[J>>0]=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;o=o&255;o=a[(o&15)+(35283+(o>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;j=j&255;j=a[(j&15)+(35283+(j>>>4<<4))>>0]|0;h=d[x>>0]|0;h=a[(h&15)+(35283+(h>>>4<<4))>>0]|0;b=c[f+160>>2]|0;a[M>>0]=(d[M>>0]|0)^b>>>24;a[E>>0]=q&255^b>>>16;a[K>>0]=p&255^b>>>8;a[L>>0]=o&255^b;b=c[f+164>>2]|0;a[y>>0]=(d[y>>0]|0)^b>>>24;a[z>>0]=n&255^b>>>16;a[A>>0]=m&255^b>>>8;a[B>>0]=l&255^b;b=c[f+168>>2]|0;a[C>>0]=(d[C>>0]|0)^b>>>24;a[D>>0]=(d[D>>0]|0)^b>>>16;a[F>>0]=k&255^b>>>8;a[G>>0]=j&255^b;b=c[f+172>>2]|0;a[H>>0]=(d[H>>0]|0)^b>>>24;a[I>>0]=(d[I>>0]|0)^b>>>16;a[J>>0]=(d[J>>0]|0)^b>>>8;a[x>>0]=h&255^b;_e(M);b=a[M>>0]|0;h=a[y>>0]|0;j=a[C>>0]|0;k=a[H>>0]|0;l=a[I>>0]|0;m=a[E>>0]|0;n=a[z>>0]|0;o=a[D>>0]|0;p=a[F>>0]|0;q=a[J>>0]|0;r=a[K>>0]|0;s=a[A>>0]|0;t=a[B>>0]|0;u=a[G>>0]|0;v=a[x>>0]|0;w=a[L>>0]|0}else{R=c[f+160>>2]|0;g=(h&255^R>>>24)&255;a[M>>0]=g;m=(m&255^R>>>16)&255;a[E>>0]=m;P=(v&255^R>>>8)&255;a[K>>0]=P;w=(w&255^R)&255;a[L>>0]=w;R=c[f+164>>2]|0;h=(j&255^R>>>24)&255;a[y>>0]=h;O=(k&255^R>>>16)&255;a[z>>0]=O;Q=(l&255^R>>>8)&255;a[A>>0]=Q;R=(n&255^R)&255;a[B>>0]=R;S=c[f+168>>2]|0;j=(o&255^S>>>24)&255;a[C>>0]=j;o=(p&255^S>>>16)&255;a[D>>0]=o;p=(q&255^S>>>8)&255;a[F>>0]=p;S=(r&255^S)&255;a[G>>0]=S;v=c[f+172>>2]|0;k=(s&255^v>>>24)&255;a[H>>0]=k;l=(t&255^v>>>16)&255;a[I>>0]=l;q=(u&255^v>>>8)&255;a[J>>0]=q;v=(b&255^v)&255;a[x>>0]=v;b=g;n=O;r=P;s=Q;t=R;u=S}b=b&255;b=a[(b&15)+(35283+(b>>>4<<4))>>0]|0;O=h&255;a[y>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;O=j&255;a[C>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;O=k&255;a[H>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;l=l&255;l=a[(l&15)+(35283+(l>>>4<<4))>>0]|0;O=m&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;R=n&255;a[D>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;R=o&255;a[I>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;R=p&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;g=q&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;S=r&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;s=s&255;a[J>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;s=t&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;r=u&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;t=v&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;P=w&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;Q=c[f+144>>2]|0;a[M>>0]=b&255^Q>>>24;a[E>>0]=l&255^Q>>>16;a[K>>0]=R&255^Q>>>8;a[L>>0]=s&255^Q;Q=c[f+148>>2]|0;a[y>>0]=(d[y>>0]|0)^Q>>>24;a[z>>0]=O&255^Q>>>16;a[A>>0]=g&255^Q>>>8;a[B>>0]=r&255^Q;Q=c[f+152>>2]|0;a[C>>0]=(d[C>>0]|0)^Q>>>24;a[D>>0]=(d[D>>0]|0)^Q>>>16;a[F>>0]=S&255^Q>>>8;a[G>>0]=t&255^Q;Q=c[f+156>>2]|0;a[H>>0]=(d[H>>0]|0)^Q>>>24;a[I>>0]=(d[I>>0]|0)^Q>>>16;a[J>>0]=(d[J>>0]|0)^Q>>>8;a[x>>0]=P&255^Q;_e(M);Q=a[I>>0]|0;P=a[D>>0]|0;t=a[z>>0]|0;v=a[E>>0]|0;S=a[J>>0]|0;r=a[A>>0]|0;s=a[F>>0]|0;g=a[K>>0]|0;O=a[x>>0]|0;a[x>>0]=a[L>>0]|0;R=a[B>>0]|0;w=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;a[D>>0]=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;P=P&255;a[I>>0]=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;r=r&255;a[J>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;r=d[x>>0]|0;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;P=c[f+128>>2]|0;a[M>>0]=(d[M>>0]|0)^P>>>24;a[E>>0]=Q&255^P>>>16;a[K>>0]=s&255^P>>>8;a[L>>0]=R&255^P;P=c[f+132>>2]|0;a[y>>0]=(d[y>>0]|0)^P>>>24;a[z>>0]=v&255^P>>>16;a[A>>0]=S&255^P>>>8;a[B>>0]=w&255^P;P=c[f+136>>2]|0;a[C>>0]=(d[C>>0]|0)^P>>>24;a[D>>0]=(d[D>>0]|0)^P>>>16;a[F>>0]=g&255^P>>>8;a[G>>0]=O&255^P;P=c[f+140>>2]|0;a[H>>0]=(d[H>>0]|0)^P>>>24;a[I>>0]=(d[I>>0]|0)^P>>>16;a[J>>0]=(d[J>>0]|0)^P>>>8;a[x>>0]=r&255^P;_e(M);P=a[I>>0]|0;r=a[D>>0]|0;O=a[z>>0]|0;g=a[E>>0]|0;w=a[J>>0]|0;S=a[A>>0]|0;v=a[F>>0]|0;R=a[K>>0]|0;s=a[x>>0]|0;a[x>>0]=a[L>>0]|0;Q=a[B>>0]|0;t=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;O=O&255;a[D>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;r=r&255;a[I>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;S=S&255;a[J>>0]=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;S=d[x>>0]|0;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;r=c[f+112>>2]|0;a[M>>0]=(d[M>>0]|0)^r>>>24;a[E>>0]=P&255^r>>>16;a[K>>0]=v&255^r>>>8;a[L>>0]=Q&255^r;r=c[f+116>>2]|0;a[y>>0]=(d[y>>0]|0)^r>>>24;a[z>>0]=g&255^r>>>16;a[A>>0]=w&255^r>>>8;a[B>>0]=t&255^r;r=c[f+120>>2]|0;a[C>>0]=(d[C>>0]|0)^r>>>24;a[D>>0]=(d[D>>0]|0)^r>>>16;a[F>>0]=R&255^r>>>8;a[G>>0]=s&255^r;r=c[f+124>>2]|0;a[H>>0]=(d[H>>0]|0)^r>>>24;a[I>>0]=(d[I>>0]|0)^r>>>16;a[J>>0]=(d[J>>0]|0)^r>>>8;a[x>>0]=S&255^r;_e(M);r=a[I>>0]|0;S=a[D>>0]|0;s=a[z>>0]|0;R=a[E>>0]|0;t=a[J>>0]|0;w=a[A>>0]|0;g=a[F>>0]|0;Q=a[K>>0]|0;v=a[x>>0]|0;a[x>>0]=a[L>>0]|0;P=a[B>>0]|0;O=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;s=s&255;a[D>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;S=S&255;a[I>>0]=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;w=w&255;a[J>>0]=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=d[x>>0]|0;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;S=c[f+96>>2]|0;a[M>>0]=(d[M>>0]|0)^S>>>24;a[E>>0]=r&255^S>>>16;a[K>>0]=g&255^S>>>8;a[L>>0]=P&255^S;S=c[f+100>>2]|0;a[y>>0]=(d[y>>0]|0)^S>>>24;a[z>>0]=R&255^S>>>16;a[A>>0]=t&255^S>>>8;a[B>>0]=O&255^S;S=c[f+104>>2]|0;a[C>>0]=(d[C>>0]|0)^S>>>24;a[D>>0]=(d[D>>0]|0)^S>>>16;a[F>>0]=Q&255^S>>>8;a[G>>0]=v&255^S;S=c[f+108>>2]|0;a[H>>0]=(d[H>>0]|0)^S>>>24;a[I>>0]=(d[I>>0]|0)^S>>>16;a[J>>0]=(d[J>>0]|0)^S>>>8;a[x>>0]=w&255^S;_e(M);S=a[I>>0]|0;w=a[D>>0]|0;v=a[z>>0]|0;Q=a[E>>0]|0;O=a[J>>0]|0;t=a[A>>0]|0;R=a[F>>0]|0;P=a[K>>0]|0;g=a[x>>0]|0;a[x>>0]=a[L>>0]|0;r=a[B>>0]|0;s=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;v=v&255;a[D>>0]=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;w=w&255;a[I>>0]=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;t=t&255;a[J>>0]=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;t=d[x>>0]|0;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;w=c[f+80>>2]|0;a[M>>0]=(d[M>>0]|0)^w>>>24;a[E>>0]=S&255^w>>>16;a[K>>0]=R&255^w>>>8;a[L>>0]=r&255^w;w=c[f+84>>2]|0;a[y>>0]=(d[y>>0]|0)^w>>>24;a[z>>0]=Q&255^w>>>16;a[A>>0]=O&255^w>>>8;a[B>>0]=s&255^w;w=c[f+88>>2]|0;a[C>>0]=(d[C>>0]|0)^w>>>24;a[D>>0]=(d[D>>0]|0)^w>>>16;a[F>>0]=P&255^w>>>8;a[G>>0]=g&255^w;w=c[f+92>>2]|0;a[H>>0]=(d[H>>0]|0)^w>>>24;a[I>>0]=(d[I>>0]|0)^w>>>16;a[J>>0]=(d[J>>0]|0)^w>>>8;a[x>>0]=t&255^w;_e(M);w=a[I>>0]|0;t=a[D>>0]|0;g=a[z>>0]|0;P=a[E>>0]|0;s=a[J>>0]|0;O=a[A>>0]|0;Q=a[F>>0]|0;r=a[K>>0]|0;R=a[x>>0]|0;a[x>>0]=a[L>>0]|0;S=a[B>>0]|0;v=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;g=g&255;a[D>>0]=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;t=t&255;a[I>>0]=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;O=O&255;a[J>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;O=d[x>>0]|0;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;t=c[f+64>>2]|0;a[M>>0]=(d[M>>0]|0)^t>>>24;a[E>>0]=w&255^t>>>16;a[K>>0]=Q&255^t>>>8;a[L>>0]=S&255^t;t=c[f+68>>2]|0;a[y>>0]=(d[y>>0]|0)^t>>>24;a[z>>0]=P&255^t>>>16;a[A>>0]=s&255^t>>>8;a[B>>0]=v&255^t;t=c[f+72>>2]|0;a[C>>0]=(d[C>>0]|0)^t>>>24;a[D>>0]=(d[D>>0]|0)^t>>>16;a[F>>0]=r&255^t>>>8;a[G>>0]=R&255^t;t=c[f+76>>2]|0;a[H>>0]=(d[H>>0]|0)^t>>>24;a[I>>0]=(d[I>>0]|0)^t>>>16;a[J>>0]=(d[J>>0]|0)^t>>>8;a[x>>0]=O&255^t;_e(M);t=a[I>>0]|0;O=a[D>>0]|0;R=a[z>>0]|0;r=a[E>>0]|0;v=a[J>>0]|0;s=a[A>>0]|0;P=a[F>>0]|0;S=a[K>>0]|0;Q=a[x>>0]|0;a[x>>0]=a[L>>0]|0;w=a[B>>0]|0;g=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;R=R&255;a[D>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;O=O&255;a[I>>0]=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;s=s&255;a[J>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;s=d[x>>0]|0;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;O=c[f+48>>2]|0;a[M>>0]=(d[M>>0]|0)^O>>>24;a[E>>0]=t&255^O>>>16;a[K>>0]=P&255^O>>>8;a[L>>0]=w&255^O;O=c[f+52>>2]|0;a[y>>0]=(d[y>>0]|0)^O>>>24;a[z>>0]=r&255^O>>>16;a[A>>0]=v&255^O>>>8;a[B>>0]=g&255^O;O=c[f+56>>2]|0;a[C>>0]=(d[C>>0]|0)^O>>>24;a[D>>0]=(d[D>>0]|0)^O>>>16;a[F>>0]=S&255^O>>>8;a[G>>0]=Q&255^O;O=c[f+60>>2]|0;a[H>>0]=(d[H>>0]|0)^O>>>24;a[I>>0]=(d[I>>0]|0)^O>>>16;a[J>>0]=(d[J>>0]|0)^O>>>8;a[x>>0]=s&255^O;_e(M);O=a[I>>0]|0;s=a[D>>0]|0;Q=a[z>>0]|0;S=a[E>>0]|0;g=a[J>>0]|0;v=a[A>>0]|0;r=a[F>>0]|0;w=a[K>>0]|0;P=a[x>>0]|0;a[x>>0]=a[L>>0]|0;t=a[B>>0]|0;R=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;Q=Q&255;a[D>>0]=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;s=s&255;a[I>>0]=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;g=g&255;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;v=v&255;a[J>>0]=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;v=d[x>>0]|0;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;s=c[f+32>>2]|0;a[M>>0]=(d[M>>0]|0)^s>>>24;a[E>>0]=O&255^s>>>16;a[K>>0]=r&255^s>>>8;a[L>>0]=t&255^s;s=c[f+36>>2]|0;a[y>>0]=(d[y>>0]|0)^s>>>24;a[z>>0]=S&255^s>>>16;a[A>>0]=g&255^s>>>8;a[B>>0]=R&255^s;s=c[f+40>>2]|0;a[C>>0]=(d[C>>0]|0)^s>>>24;a[D>>0]=(d[D>>0]|0)^s>>>16;a[F>>0]=w&255^s>>>8;a[G>>0]=P&255^s;s=c[f+44>>2]|0;a[H>>0]=(d[H>>0]|0)^s>>>24;a[I>>0]=(d[I>>0]|0)^s>>>16;a[J>>0]=(d[J>>0]|0)^s>>>8;a[x>>0]=v&255^s;_e(M);s=a[I>>0]|0;v=a[D>>0]|0;P=a[z>>0]|0;w=a[E>>0]|0;R=a[J>>0]|0;g=a[A>>0]|0;S=a[F>>0]|0;t=a[K>>0]|0;r=a[x>>0]|0;a[x>>0]=a[L>>0]|0;O=a[B>>0]|0;Q=a[G>>0]|0;u=d[M>>0]|0;a[M>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[y>>0]|0;a[y>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[C>>0]|0;a[C>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;u=d[H>>0]|0;a[H>>0]=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;P=P&255;a[D>>0]=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;v=v&255;a[I>>0]=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;R=R&255;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;g=g&255;a[J>>0]=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;r=r&255;r=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;g=d[x>>0]|0;g=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;v=c[f+16>>2]|0;a[M>>0]=(d[M>>0]|0)^v>>>24;a[E>>0]=s&255^v>>>16;a[K>>0]=S&255^v>>>8;a[L>>0]=O&255^v;v=c[f+20>>2]|0;a[y>>0]=(d[y>>0]|0)^v>>>24;a[z>>0]=w&255^v>>>16;a[A>>0]=R&255^v>>>8;a[B>>0]=Q&255^v;v=c[f+24>>2]|0;a[C>>0]=(d[C>>0]|0)^v>>>24;a[D>>0]=(d[D>>0]|0)^v>>>16;a[F>>0]=t&255^v>>>8;a[G>>0]=r&255^v;v=c[f+28>>2]|0;a[H>>0]=(d[H>>0]|0)^v>>>24;a[I>>0]=(d[I>>0]|0)^v>>>16;a[J>>0]=(d[J>>0]|0)^v>>>8;a[x>>0]=g&255^v;_e(M);v=a[I>>0]|0;g=a[D>>0]|0;r=a[z>>0]|0;t=a[E>>0]|0;Q=a[J>>0]|0;R=a[A>>0]|0;w=a[F>>0]|0;O=a[K>>0]|0;S=a[x>>0]|0;a[x>>0]=a[L>>0]|0;s=a[B>>0]|0;P=a[G>>0]|0;u=d[M>>0]|0;u=a[(u&15)+(35283+(u>>>4<<4))>>0]|0;a[M>>0]=u;q=d[y>>0]|0;a[y>>0]=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;q=d[C>>0]|0;a[C>>0]=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;q=d[H>>0]|0;a[H>>0]=a[(q&15)+(35283+(q>>>4<<4))>>0]|0;v=v&255;v=a[(v&15)+(35283+(v>>>4<<4))>>0]|0;t=t&255;t=a[(t&15)+(35283+(t>>>4<<4))>>0]|0;r=r&255;a[D>>0]=a[(r&15)+(35283+(r>>>4<<4))>>0]|0;g=g&255;a[I>>0]=a[(g&15)+(35283+(g>>>4<<4))>>0]|0;w=w&255;w=a[(w&15)+(35283+(w>>>4<<4))>>0]|0;Q=Q&255;Q=a[(Q&15)+(35283+(Q>>>4<<4))>>0]|0;O=O&255;O=a[(O&15)+(35283+(O>>>4<<4))>>0]|0;R=R&255;a[J>>0]=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;s=s&255;s=a[(s&15)+(35283+(s>>>4<<4))>>0]|0;P=P&255;P=a[(P&15)+(35283+(P>>>4<<4))>>0]|0;S=S&255;S=a[(S&15)+(35283+(S>>>4<<4))>>0]|0;R=d[x>>0]|0;R=a[(R&15)+(35283+(R>>>4<<4))>>0]|0;g=c[f>>2]|0;u=(u&255^g>>>24)&255;a[M>>0]=u;v=(v&255^g>>>16)&255;a[E>>0]=v;w=(w&255^g>>>8)&255;a[K>>0]=w;g=(s&255^g)&255;a[L>>0]=g;M=c[f+4>>2]|0;x=((d[y>>0]|0)^M>>>24)&255;a[y>>0]=x;y=(t&255^M>>>16)&255;a[z>>0]=y;z=(Q&255^M>>>8)&255;a[A>>0]=z;A=(P&255^M)&255;a[B>>0]=A;M=c[f+8>>2]|0;E=((d[C>>0]|0)^M>>>24)&255;a[C>>0]=E;K=((d[D>>0]|0)^M>>>16)&255;a[D>>0]=K;L=(O&255^M>>>8)&255;a[F>>0]=L;M=(S&255^M)&255;a[G>>0]=M;S=c[f+12>>2]|0;O=((d[H>>0]|0)^S>>>24)&255;a[H>>0]=O;P=((d[I>>0]|0)^S>>>16)&255;a[I>>0]=P;Q=((d[J>>0]|0)^S>>>8)&255;a[e>>0]=u;a[e+1>>0]=v;a[e+2>>0]=w;a[e+3>>0]=g;a[e+4>>0]=x;a[e+5>>0]=y;a[e+6>>0]=z;a[e+7>>0]=A;a[e+8>>0]=E;a[e+9>>0]=K;a[e+10>>0]=L;a[e+11>>0]=M;a[e+12>>0]=O;a[e+13>>0]=P;a[e+14>>0]=Q;a[e+15>>0]=R&255^S;i=N;return}\nfunction af(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=0,nb=0,ob=0,pb=0,qb=0,rb=0,sb=0,tb=0,ub=0,vb=0,wb=0,xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Fb=0,Gb=0,Hb=0,Ib=0,Jb=0,Kb=0,Lb=0,Mb=0,Nb=0,Ob=0,Pb=0,Qb=0;Hb=i;i=i+2640|0;Gb=Hb+2456|0;xb=Hb+2304|0;Cb=Hb+2152|0;wb=Hb+2e3|0;ub=Hb+1848|0;vb=Hb+1696|0;Db=Hb+1544|0;yb=Hb+1392|0;zb=Hb+1240|0;Ab=Hb+1088|0;g=Hb+936|0;h=Hb+784|0;j=Hb+632|0;k=Hb+480|0;n=Hb+328|0;sb=Hb+248|0;Bb=Hb+168|0;Fb=Hb+80|0;Eb=Hb;tb=Hb+2608|0;$=tb;o=e;Z=$+32|0;do{a[$>>0]=a[o>>0]|0;$=$+1|0;o=o+1|0}while(($|0)<(Z|0));a[tb>>0]=(d[tb>>0]|0)&248;$=tb+31|0;a[$>>0]=(d[$>>0]|0)&63|64;$=d[f>>0]|0;ob=pf(d[f+1>>0]|0|0,0,8)|0;nb=C;qb=pf(d[f+2>>0]|0|0,0,16)|0;nb=nb|C;pb=d[f+3>>0]|0;Z=pf(pb|0,0,24)|0;rb=sb;c[rb>>2]=ob|$|qb|Z&50331648;c[rb+4>>2]=nb;rb=pf(d[f+4>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+5>>0]|0|0,0,16)|0;nb=nb|C;qb=d[f+6>>0]|0;$=pf(qb|0,0,24)|0;nb=of(rb|pb|Z|$|0,nb|C|0,2)|0;$=sb+8|0;c[$>>2]=nb&33554431;c[$+4>>2]=0;$=pf(d[f+7>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+8>>0]|0|0,0,16)|0;nb=nb|C;pb=d[f+9>>0]|0;rb=pf(pb|0,0,24)|0;nb=of($|qb|Z|rb|0,nb|C|0,3)|0;rb=sb+16|0;c[rb>>2]=nb&67108863;c[rb+4>>2]=0;rb=pf(d[f+10>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+11>>0]|0|0,0,16)|0;nb=nb|C;qb=d[f+12>>0]|0;$=pf(qb|0,0,24)|0;nb=of(rb|pb|Z|$|0,nb|C|0,5)|0;$=sb+24|0;c[$>>2]=nb&33554431;c[$+4>>2]=0;$=pf(d[f+13>>0]|0|0,0,8)|0;nb=C;Z=pf(d[f+14>>0]|0|0,0,16)|0;nb=nb|C;pb=pf(d[f+15>>0]|0|0,0,24)|0;nb=of($|qb|Z|pb|0,nb|C|0,6)|0;pb=sb+32|0;c[pb>>2]=nb&67108863;c[pb+4>>2]=0;pb=d[f+16>>0]|0;nb=pf(d[f+17>>0]|0|0,0,8)|0;Z=C;qb=pf(d[f+18>>0]|0|0,0,16)|0;Z=Z|C;$=d[f+19>>0]|0;rb=pf($|0,0,24)|0;ob=sb+40|0;c[ob>>2]=nb|pb|qb|rb&16777216;c[ob+4>>2]=Z;ob=pf(d[f+20>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+21>>0]|0|0,0,16)|0;Z=Z|C;qb=d[f+22>>0]|0;pb=pf(qb|0,0,24)|0;Z=of(ob|$|rb|pb|0,Z|C|0,1)|0;pb=sb+48|0;c[pb>>2]=Z&67108863;c[pb+4>>2]=0;pb=pf(d[f+23>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+24>>0]|0|0,0,16)|0;Z=Z|C;$=d[f+25>>0]|0;ob=pf($|0,0,24)|0;Z=of(pb|qb|rb|ob|0,Z|C|0,3)|0;ob=sb+56|0;c[ob>>2]=Z&33554431;c[ob+4>>2]=0;ob=pf(d[f+26>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+27>>0]|0|0,0,16)|0;Z=Z|C;qb=d[f+28>>0]|0;pb=pf(qb|0,0,24)|0;Z=of(ob|$|rb|pb|0,Z|C|0,4)|0;pb=sb+64|0;c[pb>>2]=Z&67108863;c[pb+4>>2]=0;pb=pf(d[f+29>>0]|0|0,0,8)|0;Z=C;rb=pf(d[f+30>>0]|0|0,0,16)|0;Z=Z|C;$=pf(d[f+31>>0]|0|0,0,24)|0;Z=of(pb|qb|rb|$|0,Z|C|0,6)|0;$=sb+72|0;c[$>>2]=Z&33554431;c[$+4>>2]=0;nf(zb|0,0,152)|0;$=zb;c[$>>2]=1;c[$+4>>2]=0;nf(Ab|0,0,152)|0;$=Ab;c[$>>2]=1;c[$+4>>2]=0;nf(g|0,0,152)|0;nf(h|0,0,152)|0;nf(j|0,0,152)|0;$=j;c[$>>2]=1;c[$+4>>2]=0;nf(k|0,0,152)|0;nf(n|0,0,152)|0;$=n;c[$>>2]=1;c[$+4>>2]=0;$=yb+80|0;Z=$+72|0;do{c[$>>2]=0;$=$+4|0}while(($|0)<(Z|0));$=yb;o=sb;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));ia=wb+144|0;ja=wb+64|0;ka=wb+136|0;la=wb+56|0;ma=wb+128|0;na=wb+48|0;oa=wb+120|0;pa=wb+40|0;qa=wb+112|0;ra=wb+32|0;sa=wb+104|0;ta=wb+24|0;ua=wb+96|0;va=wb+16|0;wa=wb+88|0;xa=wb+8|0;ya=wb+80|0;za=ub+144|0;Aa=ub+64|0;Ba=ub+136|0;Ca=ub+56|0;Da=ub+128|0;Ea=ub+48|0;Fa=ub+120|0;Ga=ub+40|0;Ha=ub+112|0;Ia=ub+32|0;Ja=ub+104|0;Ka=ub+24|0;La=ub+96|0;Ma=ub+16|0;Na=ub+88|0;Oa=ub+8|0;Pa=ub+80|0;Qa=wb+72|0;Ra=ub+72|0;Sa=xb+8|0;Ta=Cb+8|0;Ua=xb+16|0;Va=Cb+16|0;Wa=xb+24|0;Xa=Cb+24|0;Ya=xb+32|0;Za=Cb+32|0;_a=xb+40|0;$a=Cb+40|0;ab=xb+48|0;bb=Cb+48|0;cb=xb+56|0;db=Cb+56|0;eb=xb+64|0;fb=Cb+64|0;gb=xb+72|0;hb=Cb+72|0;ib=Gb+80|0;jb=Gb+8|0;kb=Gb+16|0;lb=Gb+24|0;mb=Gb+32|0;nb=Gb+40|0;ob=Gb+48|0;pb=Gb+56|0;qb=Gb+64|0;rb=Gb+72|0;f=0;l=yb;m=zb;e=Ab;do{o=a[tb+(31-f)>>0]|0;ha=0;da=h;ea=j;fa=k;ga=n;while(1){aa=o&255;ba=kf(0,0,aa>>>7|0,0)|0;ca=C;h=0;do{V=e+(h<<3)|0;T=V;U=c[T>>2]|0;T=c[T+4>>2]|0;$=l+(h<<3)|0;X=$;Z=c[X>>2]|0;X=c[X+4>>2]|0;Y=(Z^U)&ba;W=(X^T)&ca;U=mf(0,Y^U|0,32)|0;c[V>>2]=U;c[V+4>>2]=C;Z=mf(0,Y^Z|0,32)|0;c[$>>2]=Z;c[$+4>>2]=C;h=h+1|0}while((h|0)!=10);h=0;do{V=g+(h<<3)|0;T=V;U=c[T>>2]|0;T=c[T+4>>2]|0;$=m+(h<<3)|0;X=$;Z=c[X>>2]|0;X=c[X+4>>2]|0;Y=(Z^U)&ba;W=(X^T)&ca;U=mf(0,Y^U|0,32)|0;c[V>>2]=U;c[V+4>>2]=C;Z=mf(0,Y^Z|0,32)|0;c[$>>2]=Z;c[$+4>>2]=C;h=h+1|0}while((h|0)!=10);W=e;j=c[W>>2]|0;W=c[W+4>>2]|0;r=e+8|0;M=r;S=c[M>>2]|0;M=c[M+4>>2]|0;Lb=e+16|0;D=Lb;B=c[D>>2]|0;D=c[D+4>>2]|0;U=e+24|0;Ib=U;s=c[Ib>>2]|0;Ib=c[Ib+4>>2]|0;Y=e+32|0;Z=Y;Mb=c[Z>>2]|0;Z=c[Z+4>>2]|0;G=e+40|0;h=G;V=c[h>>2]|0;h=c[h+4>>2]|0;u=e+48|0;L=u;K=c[L>>2]|0;L=c[L+4>>2]|0;y=e+56|0;z=y;O=c[z>>2]|0;z=c[z+4>>2]|0;Nb=e+64|0;E=Nb;v=c[E>>2]|0;E=c[E+4>>2]|0;k=e+72|0;Jb=k;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;X=g;R=c[X>>2]|0;X=c[X+4>>2]|0;H=lf(R|0,X|0,j|0,W|0)|0;I=e;c[I>>2]=H;c[I+4>>2]=C;I=g+8|0;H=I;N=c[H>>2]|0;H=c[H+4>>2]|0;x=lf(N|0,H|0,S|0,M|0)|0;c[r>>2]=x;c[r+4>>2]=C;r=g+16|0;x=r;w=c[x>>2]|0;x=c[x+4>>2]|0;n=lf(w|0,x|0,B|0,D|0)|0;c[Lb>>2]=n;c[Lb+4>>2]=C;Lb=g+24|0;n=Lb;o=c[n>>2]|0;n=c[n+4>>2]|0;Pb=lf(o|0,n|0,s|0,Ib|0)|0;c[U>>2]=Pb;c[U+4>>2]=C;U=g+32|0;Pb=U;$=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;Q=lf($|0,Pb|0,Mb|0,Z|0)|0;c[Y>>2]=Q;c[Y+4>>2]=C;Y=g+40|0;Q=Y;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;F=lf(P|0,Q|0,V|0,h|0)|0;c[G>>2]=F;c[G+4>>2]=C;G=g+48|0;F=G;T=c[F>>2]|0;F=c[F+4>>2]|0;J=lf(T|0,F|0,K|0,L|0)|0;c[u>>2]=J;c[u+4>>2]=C;u=g+56|0;J=u;A=c[J>>2]|0;J=c[J+4>>2]|0;q=lf(A|0,J|0,O|0,z|0)|0;c[y>>2]=q;c[y+4>>2]=C;y=g+64|0;q=y;p=c[q>>2]|0;q=c[q+4>>2]|0;Ob=lf(p|0,q|0,v|0,E|0)|0;c[Nb>>2]=Ob;c[Nb+4>>2]=C;Nb=g+72|0;Ob=Nb;t=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=lf(t|0,Ob|0,Kb|0,Jb|0)|0;c[k>>2]=Qb;c[k+4>>2]=C;X=kf(j|0,W|0,R|0,X|0)|0;R=g;c[R>>2]=X;c[R+4>>2]=C;H=kf(S|0,M|0,N|0,H|0)|0;c[I>>2]=H;c[I+4>>2]=C;x=kf(B|0,D|0,w|0,x|0)|0;c[r>>2]=x;c[r+4>>2]=C;n=kf(s|0,Ib|0,o|0,n|0)|0;c[Lb>>2]=n;c[Lb+4>>2]=C;Pb=kf(Mb|0,Z|0,$|0,Pb|0)|0;c[U>>2]=Pb;c[U+4>>2]=C;Q=kf(V|0,h|0,P|0,Q|0)|0;c[Y>>2]=Q;c[Y+4>>2]=C;F=kf(K|0,L|0,T|0,F|0)|0;c[G>>2]=F;c[G+4>>2]=C;J=kf(O|0,z|0,A|0,J|0)|0;c[u>>2]=J;c[u+4>>2]=C;q=kf(v|0,E|0,p|0,q|0)|0;c[y>>2]=q;c[y+4>>2]=C;Ob=kf(Kb|0,Jb|0,t|0,Ob|0)|0;c[Nb>>2]=Ob;c[Nb+4>>2]=C;Nb=l;Ob=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;t=l+8|0;Jb=t;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;y=l+16|0;q=y;p=c[q>>2]|0;q=c[q+4>>2]|0;E=l+24|0;v=E;u=c[v>>2]|0;v=c[v+4>>2]|0;J=l+32|0;A=J;z=c[A>>2]|0;A=c[A+4>>2]|0;O=l+40|0;G=O;F=c[G>>2]|0;G=c[G+4>>2]|0;T=l+48|0;L=T;K=c[L>>2]|0;L=c[L+4>>2]|0;Y=l+56|0;Q=Y;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;h=l+64|0;V=h;U=c[V>>2]|0;V=c[V+4>>2]|0;Pb=l+72|0;$=Pb;Z=c[$>>2]|0;$=c[$+4>>2]|0;Mb=m;Lb=c[Mb>>2]|0;Mb=c[Mb+4>>2]|0;n=lf(Lb|0,Mb|0,Ob|0,Nb|0)|0;o=l;c[o>>2]=n;c[o+4>>2]=C;o=m+8|0;n=o;Ib=c[n>>2]|0;n=c[n+4>>2]|0;s=lf(Ib|0,n|0,Kb|0,Jb|0)|0;c[t>>2]=s;c[t+4>>2]=C;t=m+16|0;s=t;r=c[s>>2]|0;s=c[s+4>>2]|0;x=lf(r|0,s|0,p|0,q|0)|0;c[y>>2]=x;c[y+4>>2]=C;y=m+24|0;x=y;w=c[x>>2]|0;x=c[x+4>>2]|0;D=lf(w|0,x|0,u|0,v|0)|0;c[E>>2]=D;c[E+4>>2]=C;E=m+32|0;D=E;B=c[D>>2]|0;D=c[D+4>>2]|0;I=lf(B|0,D|0,z|0,A|0)|0;c[J>>2]=I;c[J+4>>2]=C;J=m+40|0;I=J;H=c[I>>2]|0;I=c[I+4>>2]|0;N=lf(H|0,I|0,F|0,G|0)|0;c[O>>2]=N;c[O+4>>2]=C;O=m+48|0;N=O;M=c[N>>2]|0;N=c[N+4>>2]|0;S=lf(M|0,N|0,K|0,L|0)|0;c[T>>2]=S;c[T+4>>2]=C;T=m+56|0;S=T;R=c[S>>2]|0;S=c[S+4>>2]|0;X=lf(R|0,S|0,P|0,Q|0)|0;c[Y>>2]=X;c[Y+4>>2]=C;Y=m+64|0;X=Y;W=c[X>>2]|0;X=c[X+4>>2]|0;j=lf(W|0,X|0,U|0,V|0)|0;c[h>>2]=j;c[h+4>>2]=C;h=m+72|0;j=h;k=c[j>>2]|0;j=c[j+4>>2]|0;Qb=lf(k|0,j|0,Z|0,$|0)|0;c[Pb>>2]=Qb;c[Pb+4>>2]=C;Mb=kf(Ob|0,Nb|0,Lb|0,Mb|0)|0;Lb=m;c[Lb>>2]=Mb;c[Lb+4>>2]=C;n=kf(Kb|0,Jb|0,Ib|0,n|0)|0;c[o>>2]=n;c[o+4>>2]=C;s=kf(p|0,q|0,r|0,s|0)|0;c[t>>2]=s;c[t+4>>2]=C;x=kf(u|0,v|0,w|0,x|0)|0;c[y>>2]=x;c[y+4>>2]=C;D=kf(z|0,A|0,B|0,D|0)|0;c[E>>2]=D;c[E+4>>2]=C;I=kf(F|0,G|0,H|0,I|0)|0;c[J>>2]=I;c[J+4>>2]=C;N=kf(K|0,L|0,M|0,N|0)|0;c[O>>2]=N;c[O+4>>2]=C;S=kf(P|0,Q|0,R|0,S|0)|0;c[T>>2]=S;c[T+4>>2]=C;X=kf(U|0,V|0,W|0,X|0)|0;c[Y>>2]=X;c[Y+4>>2]=C;j=kf(Z|0,$|0,k|0,j|0)|0;c[h>>2]=j;c[h+4>>2]=C;bf(wb,l,g);bf(ub,e,m);h=ia;j=c[h>>2]|0;h=c[h+4>>2]|0;k=ja;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=vf(j|0,h|0,18,0)|0;Y=C;h=lf($|0,k|0,j|0,h|0)|0;Y=lf(h|0,C|0,Z|0,Y|0)|0;Z=ja;c[Z>>2]=Y;c[Z+4>>2]=C;Z=ka;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=la;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Y|0,Z|0,18,0)|0;$=C;Z=lf(j|0,h|0,Y|0,Z|0)|0;$=lf(Z|0,C|0,k|0,$|0)|0;k=la;c[k>>2]=$;c[k+4>>2]=C;k=ma;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=na;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=vf($|0,k|0,18,0)|0;j=C;k=lf(Y|0,Z|0,$|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=na;c[h>>2]=j;c[h+4>>2]=C;h=oa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=pa;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=vf(j|0,h|0,18,0)|0;Y=C;h=lf($|0,k|0,j|0,h|0)|0;Y=lf(h|0,C|0,Z|0,Y|0)|0;Z=pa;c[Z>>2]=Y;c[Z+4>>2]=C;Z=qa;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=ra;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Y|0,Z|0,18,0)|0;$=C;Z=lf(j|0,h|0,Y|0,Z|0)|0;$=lf(Z|0,C|0,k|0,$|0)|0;k=ra;c[k>>2]=$;c[k+4>>2]=C;k=sa;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=ta;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=vf($|0,k|0,18,0)|0;j=C;k=lf(Y|0,Z|0,$|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=ta;c[h>>2]=j;c[h+4>>2]=C;h=ua;j=c[h>>2]|0;h=c[h+4>>2]|0;k=va;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=vf(j|0,h|0,18,0)|0;Y=C;h=lf($|0,k|0,j|0,h|0)|0;Y=lf(h|0,C|0,Z|0,Y|0)|0;Z=va;c[Z>>2]=Y;c[Z+4>>2]=C;Z=wa;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=xa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Y|0,Z|0,18,0)|0;$=C;Z=lf(j|0,h|0,Y|0,Z|0)|0;$=lf(Z|0,C|0,k|0,$|0)|0;k=xa;c[k>>2]=$;c[k+4>>2]=C;k=ya;$=c[k>>2]|0;k=c[k+4>>2]|0;Z=wb;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;h=vf($|0,k|0,18,0)|0;j=C;k=lf(Y|0,Z|0,$|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=C;k=wb;c[k>>2]=j;c[k+4>>2]=h;k=ya;c[k>>2]=0;c[k+4>>2]=0;k=0;do{Nb=lf(h>>31>>>6|0,0,j|0,h|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(j|0,h|0,Lb|0,C|0)|0;Qb=wb+(k<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=wb+((k|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;k=k+2|0;Qb=wb+(k<<3)|0;Pb=Qb;j=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;h=C;c[Qb>>2]=j;c[Qb+4>>2]=h}while(k>>>0<10);o=ya;n=c[o>>2]|0;o=c[o+4>>2]|0;h=wb;p=c[h>>2]|0;h=c[h+4>>2]|0;j=vf(n|0,o|0,18,0)|0;k=C;o=lf(p|0,h|0,n|0,o|0)|0;k=lf(o|0,C|0,j|0,k|0)|0;j=C;o=ya;c[o>>2]=0;c[o+4>>2]=0;o=lf(j>>31>>>6|0,0,k|0,j|0)|0;o=mf(o|0,C|0,26)|0;n=C;h=pf(o|0,n|0,26)|0;h=kf(k|0,j|0,h|0,C|0)|0;j=C;k=wb;c[k>>2]=h;c[k+4>>2]=j;k=xa;k=lf(o|0,n|0,c[k>>2]|0,c[k+4>>2]|0)|0;n=C;o=xa;c[o>>2]=k;c[o+4>>2]=n;o=za;p=c[o>>2]|0;o=c[o+4>>2]|0;q=Aa;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=vf(p|0,o|0,18,0)|0;Ob=C;o=lf(Qb|0,q|0,p|0,o|0)|0;Ob=lf(o|0,C|0,Pb|0,Ob|0)|0;Pb=Aa;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ba;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=Ca;p=c[o>>2]|0;o=c[o+4>>2]|0;q=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(p|0,o|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,q|0,Qb|0)|0;q=Ca;c[q>>2]=Qb;c[q+4>>2]=C;q=Da;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=Ea;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=vf(Qb|0,q|0,18,0)|0;p=C;q=lf(Ob|0,Pb|0,Qb|0,q|0)|0;p=lf(q|0,C|0,o|0,p|0)|0;o=Ea;c[o>>2]=p;c[o+4>>2]=C;o=Fa;p=c[o>>2]|0;o=c[o+4>>2]|0;q=Ga;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=vf(p|0,o|0,18,0)|0;Ob=C;o=lf(Qb|0,q|0,p|0,o|0)|0;Ob=lf(o|0,C|0,Pb|0,Ob|0)|0;Pb=Ga;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ha;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=Ia;p=c[o>>2]|0;o=c[o+4>>2]|0;q=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(p|0,o|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,q|0,Qb|0)|0;q=Ia;c[q>>2]=Qb;c[q+4>>2]=C;q=Ja;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=Ka;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=vf(Qb|0,q|0,18,0)|0;p=C;q=lf(Ob|0,Pb|0,Qb|0,q|0)|0;p=lf(q|0,C|0,o|0,p|0)|0;o=Ka;c[o>>2]=p;c[o+4>>2]=C;o=La;p=c[o>>2]|0;o=c[o+4>>2]|0;q=Ma;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=vf(p|0,o|0,18,0)|0;Ob=C;o=lf(Qb|0,q|0,p|0,o|0)|0;Ob=lf(o|0,C|0,Pb|0,Ob|0)|0;Pb=Ma;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Na;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=Oa;p=c[o>>2]|0;o=c[o+4>>2]|0;q=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(p|0,o|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,q|0,Qb|0)|0;q=Oa;c[q>>2]=Qb;c[q+4>>2]=C;q=Pa;Qb=c[q>>2]|0;q=c[q+4>>2]|0;Pb=ub;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;o=vf(Qb|0,q|0,18,0)|0;p=C;q=lf(Ob|0,Pb|0,Qb|0,q|0)|0;p=lf(q|0,C|0,o|0,p|0)|0;o=C;q=ub;c[q>>2]=p;c[q+4>>2]=o;q=Pa;c[q>>2]=0;c[q+4>>2]=0;q=0;do{Nb=lf(o>>31>>>6|0,0,p|0,o|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(p|0,o|0,Lb|0,C|0)|0;Qb=ub+(q<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=ub+((q|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;q=q+2|0;Qb=ub+(q<<3)|0;Pb=Qb;p=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;o=C;c[Qb>>2]=p;c[Qb+4>>2]=o}while(q>>>0<10);F=Pa;D=c[F>>2]|0;F=c[F+4>>2]|0;z=ub;E=c[z>>2]|0;z=c[z+4>>2]|0;A=vf(D|0,F|0,18,0)|0;B=C;F=lf(E|0,z|0,D|0,F|0)|0;B=lf(F|0,C|0,A|0,B|0)|0;A=C;F=Pa;c[F>>2]=0;c[F+4>>2]=0;F=lf(A>>31>>>6|0,0,B|0,A|0)|0;F=mf(F|0,C|0,26)|0;D=C;z=pf(F|0,D|0,26)|0;z=kf(B|0,A|0,z|0,C|0)|0;A=C;B=Oa;B=lf(F|0,D|0,c[B>>2]|0,c[B+4>>2]|0)|0;D=C;F=va;E=c[F>>2]|0;F=c[F+4>>2]|0;J=ta;I=c[J>>2]|0;J=c[J+4>>2]|0;N=ra;M=c[N>>2]|0;N=c[N+4>>2]|0;R=pa;Q=c[R>>2]|0;R=c[R+4>>2]|0;V=na;U=c[V>>2]|0;V=c[V+4>>2]|0;Z=la;Y=c[Z>>2]|0;Z=c[Z+4>>2]|0;Kb=ja;Jb=c[Kb>>2]|0;Kb=c[Kb+4>>2]|0;Ob=Qa;Nb=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;H=lf(z|0,A|0,h|0,j|0)|0;G=wb;c[G>>2]=H;c[G+4>>2]=C;G=lf(B|0,D|0,k|0,n|0)|0;H=xa;c[H>>2]=G;c[H+4>>2]=C;H=Ma;G=c[H>>2]|0;H=c[H+4>>2]|0;K=lf(G|0,H|0,E|0,F|0)|0;L=va;c[L>>2]=K;c[L+4>>2]=C;L=Ka;K=c[L>>2]|0;L=c[L+4>>2]|0;O=lf(K|0,L|0,I|0,J|0)|0;P=ta;c[P>>2]=O;c[P+4>>2]=C;P=Ia;O=c[P>>2]|0;P=c[P+4>>2]|0;S=lf(O|0,P|0,M|0,N|0)|0;T=ra;c[T>>2]=S;c[T+4>>2]=C;T=Ga;S=c[T>>2]|0;T=c[T+4>>2]|0;W=lf(S|0,T|0,Q|0,R|0)|0;X=pa;c[X>>2]=W;c[X+4>>2]=C;X=Ea;W=c[X>>2]|0;X=c[X+4>>2]|0;$=lf(W|0,X|0,U|0,V|0)|0;Ib=na;c[Ib>>2]=$;c[Ib+4>>2]=C;Ib=Ca;$=c[Ib>>2]|0;Ib=c[Ib+4>>2]|0;Lb=lf($|0,Ib|0,Y|0,Z|0)|0;Mb=la;c[Mb>>2]=Lb;c[Mb+4>>2]=C;Mb=Aa;Lb=c[Mb>>2]|0;Mb=c[Mb+4>>2]|0;Pb=lf(Lb|0,Mb|0,Jb|0,Kb|0)|0;Qb=ja;c[Qb>>2]=Pb;c[Qb+4>>2]=C;Qb=Ra;Pb=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;x=lf(Pb|0,Qb|0,Nb|0,Ob|0)|0;y=Qa;c[y>>2]=x;c[y+4>>2]=C;h=kf(h|0,j|0,z|0,A|0)|0;j=ub;c[j>>2]=h;c[j+4>>2]=C;j=kf(k|0,n|0,B|0,D|0)|0;h=Oa;c[h>>2]=j;c[h+4>>2]=C;h=kf(E|0,F|0,G|0,H|0)|0;j=Ma;c[j>>2]=h;c[j+4>>2]=C;j=kf(I|0,J|0,K|0,L|0)|0;h=Ka;c[h>>2]=j;c[h+4>>2]=C;h=kf(M|0,N|0,O|0,P|0)|0;j=Ia;c[j>>2]=h;c[j+4>>2]=C;j=kf(Q|0,R|0,S|0,T|0)|0;h=Ga;c[h>>2]=j;c[h+4>>2]=C;h=kf(U|0,V|0,W|0,X|0)|0;j=Ea;c[j>>2]=h;c[j+4>>2]=C;j=kf(Y|0,Z|0,$|0,Ib|0)|0;h=Ca;c[h>>2]=j;c[h+4>>2]=C;h=kf(Jb|0,Kb|0,Lb|0,Mb|0)|0;j=Aa;c[j>>2]=h;c[j+4>>2]=C;j=kf(Nb|0,Ob|0,Pb|0,Qb|0)|0;h=Ra;c[h>>2]=j;c[h+4>>2]=C;cf(Db,wb);cf(vb,ub);bf(ub,vb,sb);h=za;j=c[h>>2]|0;h=c[h+4>>2]|0;k=Aa;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=vf(j|0,h|0,18,0)|0;Ob=C;h=lf(Qb|0,k|0,j|0,h|0)|0;Ob=lf(h|0,C|0,Pb|0,Ob|0)|0;Pb=Aa;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ba;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=Ca;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(j|0,h|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,k|0,Qb|0)|0;k=Ca;c[k>>2]=Qb;c[k+4>>2]=C;k=Da;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=Ea;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=vf(Qb|0,k|0,18,0)|0;j=C;k=lf(Ob|0,Pb|0,Qb|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=Ea;c[h>>2]=j;c[h+4>>2]=C;h=Fa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=Ga;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=vf(j|0,h|0,18,0)|0;Ob=C;h=lf(Qb|0,k|0,j|0,h|0)|0;Ob=lf(h|0,C|0,Pb|0,Ob|0)|0;Pb=Ga;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Ha;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=Ia;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(j|0,h|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,k|0,Qb|0)|0;k=Ia;c[k>>2]=Qb;c[k+4>>2]=C;k=Ja;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=Ka;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=vf(Qb|0,k|0,18,0)|0;j=C;k=lf(Ob|0,Pb|0,Qb|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=Ka;c[h>>2]=j;c[h+4>>2]=C;h=La;j=c[h>>2]|0;h=c[h+4>>2]|0;k=Ma;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=vf(j|0,h|0,18,0)|0;Ob=C;h=lf(Qb|0,k|0,j|0,h|0)|0;Ob=lf(h|0,C|0,Pb|0,Ob|0)|0;Pb=Ma;c[Pb>>2]=Ob;c[Pb+4>>2]=C;Pb=Na;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=Oa;j=c[h>>2]|0;h=c[h+4>>2]|0;k=vf(Ob|0,Pb|0,18,0)|0;Qb=C;Pb=lf(j|0,h|0,Ob|0,Pb|0)|0;Qb=lf(Pb|0,C|0,k|0,Qb|0)|0;k=Oa;c[k>>2]=Qb;c[k+4>>2]=C;k=Pa;Qb=c[k>>2]|0;k=c[k+4>>2]|0;Pb=ub;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;h=vf(Qb|0,k|0,18,0)|0;j=C;k=lf(Ob|0,Pb|0,Qb|0,k|0)|0;j=lf(k|0,C|0,h|0,j|0)|0;h=C;k=ub;c[k>>2]=j;c[k+4>>2]=h;k=Pa;c[k>>2]=0;c[k+4>>2]=0;k=0;do{Nb=lf(h>>31>>>6|0,0,j|0,h|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(j|0,h|0,Lb|0,C|0)|0;Qb=ub+(k<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=ub+((k|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;k=k+2|0;Qb=ub+(k<<3)|0;Pb=Qb;j=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;h=C;c[Qb>>2]=j;c[Qb+4>>2]=h}while(k>>>0<10);Z=Pa;$=c[Z>>2]|0;Z=c[Z+4>>2]|0;Qb=ub;Ob=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;o=vf($|0,Z|0,18,0)|0;Pb=C;Z=lf(Ob|0,Qb|0,$|0,Z|0)|0;Pb=lf(Z|0,C|0,o|0,Pb|0)|0;o=C;Z=Pa;c[Z>>2]=0;c[Z+4>>2]=0;Z=lf(o>>31>>>6|0,0,Pb|0,o|0)|0;Z=mf(Z|0,C|0,26)|0;$=C;Qb=pf(Z|0,$|0,26)|0;Qb=kf(Pb|0,o|0,Qb|0,C|0)|0;o=ub;c[o>>2]=Qb;c[o+4>>2]=C;o=Oa;o=lf(Z|0,$|0,c[o>>2]|0,c[o+4>>2]|0)|0;$=Oa;c[$>>2]=o;c[$+4>>2]=C;$=da;o=Db;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));$=ea;o=ub;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));cf(xb,e);cf(Cb,g);bf(fa,xb,Cb);h=fa+144|0;k=c[h>>2]|0;h=c[h+4>>2]|0;j=fa+64|0;Qb=j;o=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(k|0,h|0,18,0)|0;Pb=C;h=lf(o|0,Qb|0,k|0,h|0)|0;Pb=lf(h|0,C|0,Ob|0,Pb|0)|0;c[j>>2]=Pb;c[j+4>>2]=C;j=fa+136|0;Pb=c[j>>2]|0;j=c[j+4>>2]|0;Ob=fa+56|0;h=Ob;k=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(Pb|0,j|0,18,0)|0;o=C;j=lf(k|0,h|0,Pb|0,j|0)|0;o=lf(j|0,C|0,Qb|0,o|0)|0;c[Ob>>2]=o;c[Ob+4>>2]=C;Ob=fa+128|0;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=fa+48|0;j=Qb;Pb=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(o|0,Ob|0,18,0)|0;k=C;Ob=lf(Pb|0,j|0,o|0,Ob|0)|0;k=lf(Ob|0,C|0,h|0,k|0)|0;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=fa+120|0;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=fa+40|0;Ob=h;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(k|0,Qb|0,18,0)|0;Pb=C;Qb=lf(o|0,Ob|0,k|0,Qb|0)|0;Pb=lf(Qb|0,C|0,j|0,Pb|0)|0;c[h>>2]=Pb;c[h+4>>2]=C;h=fa+112|0;Pb=c[h>>2]|0;h=c[h+4>>2]|0;j=fa+32|0;Qb=j;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(Pb|0,h|0,18,0)|0;o=C;h=lf(k|0,Qb|0,Pb|0,h|0)|0;o=lf(h|0,C|0,Ob|0,o|0)|0;c[j>>2]=o;c[j+4>>2]=C;j=fa+104|0;o=c[j>>2]|0;j=c[j+4>>2]|0;Ob=fa+24|0;h=Ob;Pb=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(o|0,j|0,18,0)|0;k=C;j=lf(Pb|0,h|0,o|0,j|0)|0;k=lf(j|0,C|0,Qb|0,k|0)|0;c[Ob>>2]=k;c[Ob+4>>2]=C;Ob=fa+96|0;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=fa+16|0;j=Qb;o=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(k|0,Ob|0,18,0)|0;Pb=C;Ob=lf(o|0,j|0,k|0,Ob|0)|0;Pb=lf(Ob|0,C|0,h|0,Pb|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;Qb=fa+88|0;Pb=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=fa+8|0;Ob=h;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(Pb|0,Qb|0,18,0)|0;o=C;Qb=lf(k|0,Ob|0,Pb|0,Qb|0)|0;o=lf(Qb|0,C|0,j|0,o|0)|0;j=h;c[j>>2]=o;c[j+4>>2]=C;j=fa+80|0;o=j;Qb=c[o>>2]|0;o=c[o+4>>2]|0;Pb=fa;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;k=vf(Qb|0,o|0,18,0)|0;n=C;o=lf(Ob|0,Pb|0,Qb|0,o|0)|0;n=lf(o|0,C|0,k|0,n|0)|0;k=C;o=fa;c[o>>2]=n;c[o+4>>2]=k;o=j;c[o>>2]=0;c[o+4>>2]=0;o=0;do{Nb=lf(k>>31>>>6|0,0,n|0,k|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(n|0,k|0,Lb|0,C|0)|0;Qb=fa+(o<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=fa+((o|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;o=o+2|0;Qb=fa+(o<<3)|0;Pb=Qb;n=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;k=C;c[Qb>>2]=n;c[Qb+4>>2]=k}while(o>>>0<10);G=j;I=c[G>>2]|0;G=c[G+4>>2]|0;k=fa;n=c[k>>2]|0;k=c[k+4>>2]|0;F=vf(I|0,G|0,18,0)|0;H=C;G=lf(n|0,k|0,I|0,G|0)|0;H=lf(G|0,C|0,F|0,H|0)|0;F=C;c[j>>2]=0;c[j+4>>2]=0;j=lf(F>>31>>>6|0,0,H|0,F|0)|0;j=mf(j|0,C|0,26)|0;G=C;I=pf(j|0,G|0,26)|0;I=kf(H|0,F|0,I|0,C|0)|0;F=fa;c[F>>2]=I;c[F+4>>2]=C;F=h;F=lf(j|0,G|0,c[F>>2]|0,c[F+4>>2]|0)|0;G=h;c[G>>2]=F;c[G+4>>2]=C;G=xb;F=c[G>>2]|0;G=c[G+4>>2]|0;h=Cb;h=kf(F|0,G|0,c[h>>2]|0,c[h+4>>2]|0)|0;j=C;I=Cb;c[I>>2]=h;c[I+4>>2]=j;I=Sa;H=c[I>>2]|0;I=c[I+4>>2]|0;k=Ta;k=kf(H|0,I|0,c[k>>2]|0,c[k+4>>2]|0)|0;n=C;K=Ta;c[K>>2]=k;c[K+4>>2]=n;K=Ua;J=c[K>>2]|0;K=c[K+4>>2]|0;o=Va;o=kf(J|0,K|0,c[o>>2]|0,c[o+4>>2]|0)|0;p=C;M=Va;c[M>>2]=o;c[M+4>>2]=p;M=Wa;L=c[M>>2]|0;M=c[M+4>>2]|0;q=Xa;q=kf(L|0,M|0,c[q>>2]|0,c[q+4>>2]|0)|0;r=C;O=Xa;c[O>>2]=q;c[O+4>>2]=r;O=Ya;N=c[O>>2]|0;O=c[O+4>>2]|0;s=Za;s=kf(N|0,O|0,c[s>>2]|0,c[s+4>>2]|0)|0;t=C;Q=Za;c[Q>>2]=s;c[Q+4>>2]=t;Q=_a;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;u=$a;u=kf(P|0,Q|0,c[u>>2]|0,c[u+4>>2]|0)|0;v=C;S=$a;c[S>>2]=u;c[S+4>>2]=v;S=ab;R=c[S>>2]|0;S=c[S+4>>2]|0;w=bb;w=kf(R|0,S|0,c[w>>2]|0,c[w+4>>2]|0)|0;x=C;U=bb;c[U>>2]=w;c[U+4>>2]=x;U=cb;T=c[U>>2]|0;U=c[U+4>>2]|0;y=db;y=kf(T|0,U|0,c[y>>2]|0,c[y+4>>2]|0)|0;z=C;W=db;c[W>>2]=y;c[W+4>>2]=z;W=eb;V=c[W>>2]|0;W=c[W+4>>2]|0;A=fb;A=kf(V|0,W|0,c[A>>2]|0,c[A+4>>2]|0)|0;B=C;Y=fb;c[Y>>2]=A;c[Y+4>>2]=B;Y=gb;X=c[Y>>2]|0;Y=c[Y+4>>2]|0;D=hb;D=kf(X|0,Y|0,c[D>>2]|0,c[D+4>>2]|0)|0;E=C;$=hb;c[$>>2]=D;c[$+4>>2]=E;$=ib;Z=$+72|0;do{c[$>>2]=0;$=$+4|0}while(($|0)<(Z|0));j=vf(h|0,j|0,121665,0)|0;h=C;Qb=Gb;c[Qb>>2]=j;c[Qb+4>>2]=h;Qb=vf(k|0,n|0,121665,0)|0;k=jb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(o|0,p|0,121665,0)|0;Qb=kb;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(q|0,r|0,121665,0)|0;k=lb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(s|0,t|0,121665,0)|0;Qb=mb;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(u|0,v|0,121665,0)|0;k=nb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(w|0,x|0,121665,0)|0;Qb=ob;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(y|0,z|0,121665,0)|0;k=pb;c[k>>2]=Qb;c[k+4>>2]=C;k=vf(A|0,B|0,121665,0)|0;Qb=qb;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=vf(D|0,E|0,121665,0)|0;k=rb;c[k>>2]=Qb;c[k+4>>2]=C;k=ib;c[k>>2]=0;c[k+4>>2]=0;k=0;do{Nb=lf(h>>31>>>6|0,0,j|0,h|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(j|0,h|0,Lb|0,C|0)|0;Qb=Gb+(k<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=Gb+((k|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;k=k+2|0;Qb=Gb+(k<<3)|0;Pb=Qb;j=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;h=C;c[Qb>>2]=j;c[Qb+4>>2]=h}while(k>>>0<10);h=ib;k=c[h>>2]|0;h=c[h+4>>2]|0;o=Gb;Ob=c[o>>2]|0;o=c[o+4>>2]|0;Pb=vf(k|0,h|0,18,0)|0;n=C;h=lf(Ob|0,o|0,k|0,h|0)|0;n=lf(h|0,C|0,Pb|0,n|0)|0;Pb=C;h=ib;c[h>>2]=0;c[h+4>>2]=0;h=lf(Pb>>31>>>6|0,0,n|0,Pb|0)|0;h=mf(h|0,C|0,26)|0;k=C;o=pf(h|0,k|0,26)|0;Ob=C;j=jb;Qb=c[j>>2]|0;j=c[j+4>>2]|0;Pb=lf(n|0,Pb|0,F|0,G|0)|0;Ob=kf(Pb|0,C|0,o|0,Ob|0)|0;o=Gb;c[o>>2]=Ob;c[o+4>>2]=C;j=lf(Qb|0,j|0,H|0,I|0)|0;k=lf(j|0,C|0,h|0,k|0)|0;h=jb;c[h>>2]=k;c[h+4>>2]=C;h=kb;h=lf(c[h>>2]|0,c[h+4>>2]|0,J|0,K|0)|0;k=kb;c[k>>2]=h;c[k+4>>2]=C;k=lb;k=lf(c[k>>2]|0,c[k+4>>2]|0,L|0,M|0)|0;h=lb;c[h>>2]=k;c[h+4>>2]=C;h=mb;h=lf(c[h>>2]|0,c[h+4>>2]|0,N|0,O|0)|0;k=mb;c[k>>2]=h;c[k+4>>2]=C;k=nb;k=lf(c[k>>2]|0,c[k+4>>2]|0,P|0,Q|0)|0;h=nb;c[h>>2]=k;c[h+4>>2]=C;h=ob;h=lf(c[h>>2]|0,c[h+4>>2]|0,R|0,S|0)|0;k=ob;c[k>>2]=h;c[k+4>>2]=C;k=pb;k=lf(c[k>>2]|0,c[k+4>>2]|0,T|0,U|0)|0;h=pb;c[h>>2]=k;c[h+4>>2]=C;h=qb;h=lf(c[h>>2]|0,c[h+4>>2]|0,V|0,W|0)|0;k=qb;c[k>>2]=h;c[k+4>>2]=C;k=rb;k=lf(c[k>>2]|0,c[k+4>>2]|0,X|0,Y|0)|0;h=rb;c[h>>2]=k;c[h+4>>2]=C;bf(ga,Cb,Gb);h=ga+144|0;k=c[h>>2]|0;h=c[h+4>>2]|0;j=ga+64|0;Qb=j;o=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(k|0,h|0,18,0)|0;Pb=C;h=lf(o|0,Qb|0,k|0,h|0)|0;Pb=lf(h|0,C|0,Ob|0,Pb|0)|0;c[j>>2]=Pb;c[j+4>>2]=C;j=ga+136|0;Pb=c[j>>2]|0;j=c[j+4>>2]|0;Ob=ga+56|0;h=Ob;k=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(Pb|0,j|0,18,0)|0;o=C;j=lf(k|0,h|0,Pb|0,j|0)|0;o=lf(j|0,C|0,Qb|0,o|0)|0;c[Ob>>2]=o;c[Ob+4>>2]=C;Ob=ga+128|0;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=ga+48|0;j=Qb;Pb=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(o|0,Ob|0,18,0)|0;k=C;Ob=lf(Pb|0,j|0,o|0,Ob|0)|0;k=lf(Ob|0,C|0,h|0,k|0)|0;c[Qb>>2]=k;c[Qb+4>>2]=C;Qb=ga+120|0;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=ga+40|0;Ob=h;o=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(k|0,Qb|0,18,0)|0;Pb=C;Qb=lf(o|0,Ob|0,k|0,Qb|0)|0;Pb=lf(Qb|0,C|0,j|0,Pb|0)|0;c[h>>2]=Pb;c[h+4>>2]=C;h=ga+112|0;Pb=c[h>>2]|0;h=c[h+4>>2]|0;j=ga+32|0;Qb=j;k=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;Ob=vf(Pb|0,h|0,18,0)|0;o=C;h=lf(k|0,Qb|0,Pb|0,h|0)|0;o=lf(h|0,C|0,Ob|0,o|0)|0;c[j>>2]=o;c[j+4>>2]=C;j=ga+104|0;o=c[j>>2]|0;j=c[j+4>>2]|0;Ob=ga+24|0;h=Ob;Pb=c[h>>2]|0;h=c[h+4>>2]|0;Qb=vf(o|0,j|0,18,0)|0;k=C;j=lf(Pb|0,h|0,o|0,j|0)|0;k=lf(j|0,C|0,Qb|0,k|0)|0;c[Ob>>2]=k;c[Ob+4>>2]=C;Ob=ga+96|0;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Qb=ga+16|0;j=Qb;o=c[j>>2]|0;j=c[j+4>>2]|0;h=vf(k|0,Ob|0,18,0)|0;Pb=C;Ob=lf(o|0,j|0,k|0,Ob|0)|0;Pb=lf(Ob|0,C|0,h|0,Pb|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;Qb=ga+88|0;Pb=c[Qb>>2]|0;Qb=c[Qb+4>>2]|0;h=ga+8|0;Ob=h;k=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;j=vf(Pb|0,Qb|0,18,0)|0;o=C;Qb=lf(k|0,Ob|0,Pb|0,Qb|0)|0;o=lf(Qb|0,C|0,j|0,o|0)|0;j=h;c[j>>2]=o;c[j+4>>2]=C;j=ga+80|0;o=j;Qb=c[o>>2]|0;o=c[o+4>>2]|0;Pb=ga;Ob=c[Pb>>2]|0;Pb=c[Pb+4>>2]|0;k=vf(Qb|0,o|0,18,0)|0;n=C;o=lf(Ob|0,Pb|0,Qb|0,o|0)|0;n=lf(o|0,C|0,k|0,n|0)|0;k=C;o=ga;c[o>>2]=n;c[o+4>>2]=k;o=j;c[o>>2]=0;c[o+4>>2]=0;o=0;do{Nb=lf(k>>31>>>6|0,0,n|0,k|0)|0;Nb=mf(Nb|0,C|0,26)|0;Mb=C;Lb=pf(Nb|0,Mb|0,26)|0;Lb=kf(n|0,k|0,Lb|0,C|0)|0;Qb=ga+(o<<3)|0;c[Qb>>2]=Lb;c[Qb+4>>2]=C;Qb=ga+((o|1)<<3)|0;Lb=Qb;Lb=lf(Nb|0,Mb|0,c[Lb>>2]|0,c[Lb+4>>2]|0)|0;Mb=C;Nb=lf(Mb>>31>>>7|0,0,Lb|0,Mb|0)|0;Nb=mf(Nb|0,C|0,25)|0;Ob=C;Pb=pf(Nb|0,Ob|0,25)|0;Pb=kf(Lb|0,Mb|0,Pb|0,C|0)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;o=o+2|0;Qb=ga+(o<<3)|0;Pb=Qb;n=lf(Nb|0,Ob|0,c[Pb>>2]|0,c[Pb+4>>2]|0)|0;k=C;c[Qb>>2]=n;c[Qb+4>>2]=k}while(o>>>0<10);Ob=j;Pb=c[Ob>>2]|0;Ob=c[Ob+4>>2]|0;Nb=ga;Lb=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;Qb=vf(Pb|0,Ob|0,18,0)|0;Mb=C;Ob=lf(Lb|0,Nb|0,Pb|0,Ob|0)|0;Mb=lf(Ob|0,C|0,Qb|0,Mb|0)|0;Qb=C;Ob=j;c[Ob>>2]=0;c[Ob+4>>2]=0;Ob=lf(Qb>>31>>>6|0,0,Mb|0,Qb|0)|0;Ob=mf(Ob|0,C|0,26)|0;Pb=C;Nb=pf(Ob|0,Pb|0,26)|0;Nb=kf(Mb|0,Qb|0,Nb|0,C|0)|0;Qb=ga;c[Qb>>2]=Nb;c[Qb+4>>2]=C;Qb=h;Qb=lf(Ob|0,Pb|0,c[Qb>>2]|0,c[Qb+4>>2]|0)|0;c[h>>2]=Qb;c[h+4>>2]=C;h=0;do{Lb=fa+(h<<3)|0;Jb=Lb;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;Qb=da+(h<<3)|0;Nb=Qb;Pb=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;Ob=(Pb^Kb)&ba;Mb=(Nb^Jb)&ca;Kb=mf(0,Ob^Kb|0,32)|0;c[Lb>>2]=Kb;c[Lb+4>>2]=C;Pb=mf(0,Ob^Pb|0,32)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;h=h+1|0}while((h|0)!=10);h=0;do{Lb=ga+(h<<3)|0;Jb=Lb;Kb=c[Jb>>2]|0;Jb=c[Jb+4>>2]|0;Qb=ea+(h<<3)|0;Nb=Qb;Pb=c[Nb>>2]|0;Nb=c[Nb+4>>2]|0;Ob=(Pb^Kb)&ba;Mb=(Nb^Jb)&ca;Kb=mf(0,Ob^Kb|0,32)|0;c[Lb>>2]=Kb;c[Lb+4>>2]=C;Pb=mf(0,Ob^Pb|0,32)|0;c[Qb>>2]=Pb;c[Qb+4>>2]=C;h=h+1|0}while((h|0)!=10);ha=ha+1|0;if((ha|0)==8){h=l;l=da;j=m;m=ea;k=e;e=fa;n=g;g=ga;break}else{Nb=ga;Ob=fa;Pb=ea;Qb=da;o=aa<<1&255;ga=g;g=Nb;fa=e;e=Ob;ea=m;m=Pb;da=l;l=Qb}}f=f+1|0}while((f|0)!=32);$=Bb;o=e;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));$=Fb;o=g;Z=$+80|0;do{c[$>>2]=c[o>>2];$=$+4|0;o=o+4|0}while(($|0)<(Z|0));cf(Gb,Fb);cf(Ab,Gb);cf(zb,Ab);df(xb,zb,Fb);df(Cb,xb,Gb);cf(zb,Cb);df(wb,zb,xb);cf(zb,wb);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);df(ub,zb,wb);cf(zb,ub);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);df(vb,Ab,ub);cf(zb,vb);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);df(zb,Ab,vb);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);df(Db,zb,ub);cf(zb,Db);cf(Ab,zb);e=2;do{cf(zb,Ab);cf(Ab,zb);e=e+2|0}while((e|0)<50);df(yb,Ab,Db);cf(Ab,yb);cf(zb,Ab);e=2;do{cf(Ab,zb);cf(zb,Ab);e=e+2|0}while((e|0)<100);df(Ab,zb,yb);cf(zb,Ab);cf(Ab,zb);e=2;do{cf(zb,Ab);cf(Ab,zb);e=e+2|0}while((e|0)<50);df(zb,Ab,Db);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);cf(zb,Ab);cf(Ab,zb);df(Eb,Ab,Cb);df(Fb,Bb,Eb);e=c[Fb>>2]|0;c[Gb>>2]=e;k=Gb+4|0;c[k>>2]=c[Fb+8>>2];l=Gb+8|0;c[l>>2]=c[Fb+16>>2];m=Gb+12|0;c[m>>2]=c[Fb+24>>2];n=Gb+16|0;c[n>>2]=c[Fb+32>>2];o=Gb+20|0;c[o>>2]=c[Fb+40>>2];p=Gb+24|0;c[p>>2]=c[Fb+48>>2];q=Gb+28|0;c[q>>2]=c[Fb+56>>2];r=Gb+32|0;c[r>>2]=c[Fb+64>>2];s=Gb+36|0;c[s>>2]=c[Fb+72>>2];g=0;do{f=Gb+(g<<2)|0;h=e>>31&e;if(!(g&1)){Pb=h>>26;c[f>>2]=(_(Pb,-67108864)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}else{Pb=h>>25;c[f>>2]=(_(Pb,-33554432)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}}while((g|0)!=9);g=c[s>>2]|0;e=(g>>31&g)>>25;c[s>>2]=(_(e,-33554432)|0)+g;e=(e*19|0)+(c[Gb>>2]|0)|0;c[Gb>>2]=e;g=0;do{f=Gb+(g<<2)|0;h=e>>31&e;if(!(g&1)){Pb=h>>26;c[f>>2]=(_(Pb,-67108864)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}else{Pb=h>>25;c[f>>2]=(_(Pb,-33554432)|0)+e;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+Pb|0;c[Qb>>2]=e}}while((g|0)!=9);g=c[s>>2]|0;e=(g>>31&g)>>25;c[s>>2]=(_(e,-33554432)|0)+g;e=(e*19|0)+(c[Gb>>2]|0)|0;g=(e>>31&e)>>26;e=(_(g,-67108864)|0)+e|0;c[Gb>>2]=e;c[k>>2]=g+(c[k>>2]|0);g=0;do{f=Gb+(g<<2)|0;if(!(g&1)){c[f>>2]=e&67108863;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>26)|0;c[Qb>>2]=e}else{c[f>>2]=e&33554431;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>25)|0;c[Qb>>2]=e}}while((g|0)!=9);e=c[s>>2]|0;c[s>>2]=e&33554431;e=(c[Gb>>2]|0)+((e>>25)*19|0)|0;c[Gb>>2]=e;g=0;do{f=Gb+(g<<2)|0;if(!(g&1)){c[f>>2]=e&67108863;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>26)|0;c[Qb>>2]=e}else{c[f>>2]=e&33554431;g=g+1|0;Qb=Gb+(g<<2)|0;e=(c[Qb>>2]|0)+(e>>25)|0;c[Qb>>2]=e}}while((g|0)!=9);j=c[s>>2]|0;h=j&33554431;c[s>>2]=h;j=(c[Gb>>2]|0)+((j>>25)*19|0)|0;c[Gb>>2]=j;f=1;e=~(j+-67108845>>31);do{g=c[Gb+(f<<2)>>2]|0;if(!(f&1)){g=g<<16&(g^-67108864);g=g<<8&g;g=g<<4&g;g=g<<2&g;g=g<<1&g}else{g=g<<16&(g^-33554432);g=g<<8&g;g=g<<4&g;g=g<<2&g;g=g<<1&g}e=g>>31&e;f=f+1|0}while((f|0)!=10);Db=j-(e&67108845)|0;c[Gb>>2]=Db;Ab=e&67108863;Bb=e&33554431;Fb=(c[k>>2]|0)-Bb|0;Ib=(c[l>>2]|0)-Ab|0;Kb=(c[m>>2]|0)-Bb|0;Lb=(c[n>>2]|0)-Ab|0;Mb=(c[o>>2]|0)-Bb|0;c[o>>2]=Mb;Pb=(c[p>>2]|0)-Ab|0;Qb=(c[q>>2]|0)-Bb|0;Ab=(c[r>>2]|0)-Ab|0;Cb=Fb<<2;c[k>>2]=Cb;Eb=Ib<<3;c[l>>2]=Eb;Gb=Kb<<5;c[m>>2]=Gb;Jb=Lb<<6;c[n>>2]=Jb;Nb=Pb<<1;c[p>>2]=Nb;Ob=Qb<<3;c[q>>2]=Ob;c[r>>2]=Ab<<4;c[s>>2]=h-Bb<<6;a[b>>0]=Db;a[b+1>>0]=Db>>>8;a[b+2>>0]=Db>>>16;a[b+3>>0]=Cb|Db>>>24;a[b+4>>0]=Fb>>>6;a[b+5>>0]=Fb>>>14;a[b+6>>0]=Eb|Fb>>>22;a[b+7>>0]=Ib>>>5;a[b+8>>0]=Ib>>>13;a[b+9>>0]=Gb|Ib>>>21;a[b+10>>0]=Kb>>>3;a[b+11>>0]=Kb>>>11;a[b+12>>0]=Jb|Kb>>>19;a[b+13>>0]=Lb>>>2;a[b+14>>0]=Lb>>>10;a[b+15>>0]=Lb>>>18;a[b+16>>0]=Mb;a[b+17>>0]=Mb>>>8;a[b+18>>0]=Mb>>>16;a[b+19>>0]=Mb>>>24|Nb;a[b+20>>0]=Pb>>>7;a[b+21>>0]=Pb>>>15;a[b+22>>0]=Ob|Pb>>>23;a[b+23>>0]=Qb>>>5;a[b+24>>0]=Qb>>>13;Pb=c[r>>2]|0;a[b+25>>0]=Pb|Qb>>>21;a[b+26>>0]=Pb>>>8;a[b+27>>0]=Pb>>>16;Qb=c[s>>2]|0;a[b+28>>0]=Qb|Pb>>>24;a[b+29>>0]=Qb>>>8;a[b+30>>0]=Qb>>>16;a[b+31>>0]=Qb>>>24;i=Hb;return 0}function bf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;h=mf(0,c[b>>2]|0,32)|0;n=C;w=mf(0,c[d>>2]|0,32)|0;n=vf(w|0,C|0,h|0,n|0)|0;h=a;c[h>>2]=n;c[h+4>>2]=C;h=mf(0,c[b>>2]|0,32)|0;n=C;w=d+8|0;s=mf(0,c[w>>2]|0,32)|0;n=vf(s|0,C|0,h|0,n|0)|0;h=C;s=b+8|0;r=mf(0,c[s>>2]|0,32)|0;p=C;v=mf(0,c[d>>2]|0,32)|0;p=vf(v|0,C|0,r|0,p|0)|0;h=lf(p|0,C|0,n|0,h|0)|0;n=a+8|0;c[n>>2]=h;c[n+4>>2]=C;n=mf(0,c[s>>2]|0,31)|0;h=C;p=mf(0,c[w>>2]|0,32)|0;h=vf(p|0,C|0,n|0,h|0)|0;n=C;p=mf(0,c[b>>2]|0,32)|0;r=C;v=d+16|0;l=mf(0,c[v>>2]|0,32)|0;r=vf(l|0,C|0,p|0,r|0)|0;n=lf(r|0,C|0,h|0,n|0)|0;h=C;r=b+16|0;p=mf(0,c[r>>2]|0,32)|0;l=C;u=mf(0,c[d>>2]|0,32)|0;l=vf(u|0,C|0,p|0,l|0)|0;l=lf(n|0,h|0,l|0,C|0)|0;h=a+16|0;c[h>>2]=l;c[h+4>>2]=C;h=mf(0,c[s>>2]|0,32)|0;l=C;n=mf(0,c[v>>2]|0,32)|0;l=vf(n|0,C|0,h|0,l|0)|0;h=C;n=mf(0,c[r>>2]|0,32)|0;p=C;u=mf(0,c[w>>2]|0,32)|0;p=vf(u|0,C|0,n|0,p|0)|0;h=lf(p|0,C|0,l|0,h|0)|0;l=C;p=mf(0,c[b>>2]|0,32)|0;n=C;u=d+24|0;g=mf(0,c[u>>2]|0,32)|0;n=vf(g|0,C|0,p|0,n|0)|0;n=lf(h|0,l|0,n|0,C|0)|0;l=C;h=b+24|0;p=mf(0,c[h>>2]|0,32)|0;g=C;j=mf(0,c[d>>2]|0,32)|0;g=vf(j|0,C|0,p|0,g|0)|0;g=lf(n|0,l|0,g|0,C|0)|0;l=a+24|0;c[l>>2]=g;c[l+4>>2]=C;l=mf(0,c[r>>2]|0,32)|0;g=C;n=mf(0,c[v>>2]|0,32)|0;g=vf(n|0,C|0,l|0,g|0)|0;l=C;n=mf(0,c[s>>2]|0,32)|0;p=C;j=mf(0,c[u>>2]|0,32)|0;p=vf(j|0,C|0,n|0,p|0)|0;n=C;j=mf(0,c[h>>2]|0,32)|0;q=C;o=mf(0,c[w>>2]|0,32)|0;q=vf(o|0,C|0,j|0,q|0)|0;n=lf(q|0,C|0,p|0,n|0)|0;n=pf(n|0,C|0,1)|0;l=lf(n|0,C|0,g|0,l|0)|0;g=C;n=mf(0,c[b>>2]|0,32)|0;p=C;q=d+32|0;j=mf(0,c[q>>2]|0,32)|0;p=vf(j|0,C|0,n|0,p|0)|0;p=lf(l|0,g|0,p|0,C|0)|0;g=C;l=b+32|0;n=mf(0,c[l>>2]|0,32)|0;j=C;o=mf(0,c[d>>2]|0,32)|0;j=vf(o|0,C|0,n|0,j|0)|0;j=lf(p|0,g|0,j|0,C|0)|0;g=a+32|0;c[g>>2]=j;c[g+4>>2]=C;g=mf(0,c[r>>2]|0,32)|0;j=C;p=mf(0,c[u>>2]|0,32)|0;j=vf(p|0,C|0,g|0,j|0)|0;g=C;p=mf(0,c[h>>2]|0,32)|0;n=C;o=mf(0,c[v>>2]|0,32)|0;n=vf(o|0,C|0,p|0,n|0)|0;g=lf(n|0,C|0,j|0,g|0)|0;j=C;n=mf(0,c[s>>2]|0,32)|0;p=C;o=mf(0,c[q>>2]|0,32)|0;p=vf(o|0,C|0,n|0,p|0)|0;p=lf(g|0,j|0,p|0,C|0)|0;j=C;g=mf(0,c[l>>2]|0,32)|0;n=C;o=mf(0,c[w>>2]|0,32)|0;n=vf(o|0,C|0,g|0,n|0)|0;n=lf(p|0,j|0,n|0,C|0)|0;j=C;p=mf(0,c[b>>2]|0,32)|0;g=C;o=d+40|0;t=mf(0,c[o>>2]|0,32)|0;g=vf(t|0,C|0,p|0,g|0)|0;g=lf(n|0,j|0,g|0,C|0)|0;j=C;n=b+40|0;p=mf(0,c[n>>2]|0,32)|0;t=C;k=mf(0,c[d>>2]|0,32)|0;t=vf(k|0,C|0,p|0,t|0)|0;t=lf(g|0,j|0,t|0,C|0)|0;j=a+40|0;c[j>>2]=t;c[j+4>>2]=C;j=mf(0,c[h>>2]|0,32)|0;t=C;g=mf(0,c[u>>2]|0,32)|0;t=vf(g|0,C|0,j|0,t|0)|0;j=C;g=mf(0,c[s>>2]|0,32)|0;p=C;k=mf(0,c[o>>2]|0,32)|0;p=vf(k|0,C|0,g|0,p|0)|0;j=lf(p|0,C|0,t|0,j|0)|0;t=C;p=mf(0,c[n>>2]|0,32)|0;g=C;k=mf(0,c[w>>2]|0,32)|0;g=vf(k|0,C|0,p|0,g|0)|0;g=lf(j|0,t|0,g|0,C|0)|0;g=pf(g|0,C|0,1)|0;t=C;j=mf(0,c[r>>2]|0,32)|0;p=C;k=mf(0,c[q>>2]|0,32)|0;p=vf(k|0,C|0,j|0,p|0)|0;p=lf(g|0,t|0,p|0,C|0)|0;t=C;g=mf(0,c[l>>2]|0,32)|0;j=C;k=mf(0,c[v>>2]|0,32)|0;j=vf(k|0,C|0,g|0,j|0)|0;j=lf(p|0,t|0,j|0,C|0)|0;t=C;p=mf(0,c[b>>2]|0,32)|0;g=C;k=d+48|0;x=mf(0,c[k>>2]|0,32)|0;g=vf(x|0,C|0,p|0,g|0)|0;g=lf(j|0,t|0,g|0,C|0)|0;t=C;j=b+48|0;p=mf(0,c[j>>2]|0,32)|0;x=C;m=mf(0,c[d>>2]|0,32)|0;x=vf(m|0,C|0,p|0,x|0)|0;x=lf(g|0,t|0,x|0,C|0)|0;t=a+48|0;c[t>>2]=x;c[t+4>>2]=C;t=mf(0,c[h>>2]|0,32)|0;x=C;g=mf(0,c[q>>2]|0,32)|0;x=vf(g|0,C|0,t|0,x|0)|0;t=C;g=mf(0,c[l>>2]|0,32)|0;p=C;m=mf(0,c[u>>2]|0,32)|0;p=vf(m|0,C|0,g|0,p|0)|0;t=lf(p|0,C|0,x|0,t|0)|0;x=C;p=mf(0,c[r>>2]|0,32)|0;g=C;m=mf(0,c[o>>2]|0,32)|0;g=vf(m|0,C|0,p|0,g|0)|0;g=lf(t|0,x|0,g|0,C|0)|0;x=C;t=mf(0,c[n>>2]|0,32)|0;p=C;m=mf(0,c[v>>2]|0,32)|0;p=vf(m|0,C|0,t|0,p|0)|0;p=lf(g|0,x|0,p|0,C|0)|0;x=C;g=mf(0,c[s>>2]|0,32)|0;t=C;m=mf(0,c[k>>2]|0,32)|0;t=vf(m|0,C|0,g|0,t|0)|0;t=lf(p|0,x|0,t|0,C|0)|0;x=C;p=mf(0,c[j>>2]|0,32)|0;g=C;m=mf(0,c[w>>2]|0,32)|0;g=vf(m|0,C|0,p|0,g|0)|0;g=lf(t|0,x|0,g|0,C|0)|0;x=C;t=mf(0,c[b>>2]|0,32)|0;p=C;m=d+56|0;y=mf(0,c[m>>2]|0,32)|0;p=vf(y|0,C|0,t|0,p|0)|0;p=lf(g|0,x|0,p|0,C|0)|0;x=C;g=b+56|0;t=mf(0,c[g>>2]|0,32)|0;y=C;i=mf(0,c[d>>2]|0,32)|0;y=vf(i|0,C|0,t|0,y|0)|0;y=lf(p|0,x|0,y|0,C|0)|0;x=a+56|0;c[x>>2]=y;c[x+4>>2]=C;x=mf(0,c[l>>2]|0,32)|0;y=C;p=mf(0,c[q>>2]|0,32)|0;y=vf(p|0,C|0,x|0,y|0)|0;x=C;p=mf(0,c[h>>2]|0,32)|0;t=C;i=mf(0,c[o>>2]|0,32)|0;t=vf(i|0,C|0,p|0,t|0)|0;p=C;i=mf(0,c[n>>2]|0,32)|0;f=C;e=mf(0,c[u>>2]|0,32)|0;f=vf(e|0,C|0,i|0,f|0)|0;p=lf(f|0,C|0,t|0,p|0)|0;t=C;f=mf(0,c[s>>2]|0,32)|0;i=C;e=mf(0,c[m>>2]|0,32)|0;i=vf(e|0,C|0,f|0,i|0)|0;i=lf(p|0,t|0,i|0,C|0)|0;t=C;p=mf(0,c[g>>2]|0,32)|0;f=C;e=mf(0,c[w>>2]|0,32)|0;f=vf(e|0,C|0,p|0,f|0)|0;f=lf(i|0,t|0,f|0,C|0)|0;f=pf(f|0,C|0,1)|0;x=lf(f|0,C|0,y|0,x|0)|0;y=C;f=mf(0,c[r>>2]|0,32)|0;t=C;i=mf(0,c[k>>2]|0,32)|0;t=vf(i|0,C|0,f|0,t|0)|0;t=lf(x|0,y|0,t|0,C|0)|0;y=C;x=mf(0,c[j>>2]|0,32)|0;f=C;i=mf(0,c[v>>2]|0,32)|0;f=vf(i|0,C|0,x|0,f|0)|0;f=lf(t|0,y|0,f|0,C|0)|0;y=C;t=mf(0,c[b>>2]|0,32)|0;x=C;i=d+64|0;p=mf(0,c[i>>2]|0,32)|0;x=vf(p|0,C|0,t|0,x|0)|0;x=lf(f|0,y|0,x|0,C|0)|0;y=C;f=b+64|0;t=mf(0,c[f>>2]|0,32)|0;p=C;e=mf(0,c[d>>2]|0,32)|0;p=vf(e|0,C|0,t|0,p|0)|0;p=lf(x|0,y|0,p|0,C|0)|0;y=a+64|0;c[y>>2]=p;c[y+4>>2]=C;y=mf(0,c[l>>2]|0,32)|0;p=C;x=mf(0,c[o>>2]|0,32)|0;p=vf(x|0,C|0,y|0,p|0)|0;y=C;x=mf(0,c[n>>2]|0,32)|0;t=C;e=mf(0,c[q>>2]|0,32)|0;t=vf(e|0,C|0,x|0,t|0)|0;y=lf(t|0,C|0,p|0,y|0)|0;p=C;t=mf(0,c[h>>2]|0,32)|0;x=C;e=mf(0,c[k>>2]|0,32)|0;x=vf(e|0,C|0,t|0,x|0)|0;x=lf(y|0,p|0,x|0,C|0)|0;p=C;y=mf(0,c[j>>2]|0,32)|0;t=C;e=mf(0,c[u>>2]|0,32)|0;t=vf(e|0,C|0,y|0,t|0)|0;t=lf(x|0,p|0,t|0,C|0)|0;p=C;x=mf(0,c[r>>2]|0,32)|0;y=C;e=mf(0,c[m>>2]|0,32)|0;y=vf(e|0,C|0,x|0,y|0)|0;y=lf(t|0,p|0,y|0,C|0)|0;p=C;t=mf(0,c[g>>2]|0,32)|0;x=C;e=mf(0,c[v>>2]|0,32)|0;x=vf(e|0,C|0,t|0,x|0)|0;x=lf(y|0,p|0,x|0,C|0)|0;p=C;y=mf(0,c[s>>2]|0,32)|0;t=C;e=mf(0,c[i>>2]|0,32)|0;t=vf(e|0,C|0,y|0,t|0)|0;t=lf(x|0,p|0,t|0,C|0)|0;p=C;x=mf(0,c[f>>2]|0,32)|0;y=C;e=mf(0,c[w>>2]|0,32)|0;y=vf(e|0,C|0,x|0,y|0)|0;y=lf(t|0,p|0,y|0,C|0)|0;p=C;t=mf(0,c[b>>2]|0,32)|0;x=C;e=d+72|0;z=mf(0,c[e>>2]|0,32)|0;x=vf(z|0,C|0,t|0,x|0)|0;x=lf(y|0,p|0,x|0,C|0)|0;p=C;b=b+72|0;y=mf(0,c[b>>2]|0,32)|0;t=C;d=mf(0,c[d>>2]|0,32)|0;t=vf(d|0,C|0,y|0,t|0)|0;t=lf(x|0,p|0,t|0,C|0)|0;d=a+72|0;c[d>>2]=t;c[d+4>>2]=C;d=mf(0,c[n>>2]|0,32)|0;t=C;p=mf(0,c[o>>2]|0,32)|0;t=vf(p|0,C|0,d|0,t|0)|0;d=C;p=mf(0,c[h>>2]|0,32)|0;x=C;y=mf(0,c[m>>2]|0,32)|0;x=vf(y|0,C|0,p|0,x|0)|0;d=lf(x|0,C|0,t|0,d|0)|0;t=C;x=mf(0,c[g>>2]|0,32)|0;p=C;y=mf(0,c[u>>2]|0,32)|0;p=vf(y|0,C|0,x|0,p|0)|0;p=lf(d|0,t|0,p|0,C|0)|0;t=C;d=mf(0,c[s>>2]|0,32)|0;s=C;x=mf(0,c[e>>2]|0,32)|0;s=vf(x|0,C|0,d|0,s|0)|0;s=lf(p|0,t|0,s|0,C|0)|0;t=C;p=mf(0,c[b>>2]|0,32)|0;d=C;w=mf(0,c[w>>2]|0,32)|0;d=vf(w|0,C|0,p|0,d|0)|0;d=lf(s|0,t|0,d|0,C|0)|0;d=pf(d|0,C|0,1)|0;t=C;s=mf(0,c[l>>2]|0,32)|0;p=C;w=mf(0,c[k>>2]|0,32)|0;p=vf(w|0,C|0,s|0,p|0)|0;p=lf(d|0,t|0,p|0,C|0)|0;t=C;d=mf(0,c[j>>2]|0,32)|0;s=C;w=mf(0,c[q>>2]|0,32)|0;s=vf(w|0,C|0,d|0,s|0)|0;s=lf(p|0,t|0,s|0,C|0)|0;t=C;p=mf(0,c[r>>2]|0,32)|0;d=C;w=mf(0,c[i>>2]|0,32)|0;d=vf(w|0,C|0,p|0,d|0)|0;d=lf(s|0,t|0,d|0,C|0)|0;t=C;s=mf(0,c[f>>2]|0,32)|0;p=C;w=mf(0,c[v>>2]|0,32)|0;p=vf(w|0,C|0,s|0,p|0)|0;p=lf(d|0,t|0,p|0,C|0)|0;t=a+80|0;c[t>>2]=p;c[t+4>>2]=C;t=mf(0,c[n>>2]|0,32)|0;p=C;d=mf(0,c[k>>2]|0,32)|0;p=vf(d|0,C|0,t|0,p|0)|0;t=C;d=mf(0,c[j>>2]|0,32)|0;s=C;w=mf(0,c[o>>2]|0,32)|0;s=vf(w|0,C|0,d|0,s|0)|0;t=lf(s|0,C|0,p|0,t|0)|0;p=C;s=mf(0,c[l>>2]|0,32)|0;d=C;w=mf(0,c[m>>2]|0,32)|0;d=vf(w|0,C|0,s|0,d|0)|0;d=lf(t|0,p|0,d|0,C|0)|0;p=C;t=mf(0,c[g>>2]|0,32)|0;s=C;w=mf(0,c[q>>2]|0,32)|0;s=vf(w|0,C|0,t|0,s|0)|0;s=lf(d|0,p|0,s|0,C|0)|0;p=C;d=mf(0,c[h>>2]|0,32)|0;t=C;w=mf(0,c[i>>2]|0,32)|0;t=vf(w|0,C|0,d|0,t|0)|0;t=lf(s|0,p|0,t|0,C|0)|0;p=C;s=mf(0,c[f>>2]|0,32)|0;d=C;w=mf(0,c[u>>2]|0,32)|0;d=vf(w|0,C|0,s|0,d|0)|0;d=lf(t|0,p|0,d|0,C|0)|0;p=C;r=mf(0,c[r>>2]|0,32)|0;t=C;s=mf(0,c[e>>2]|0,32)|0;t=vf(s|0,C|0,r|0,t|0)|0;t=lf(d|0,p|0,t|0,C|0)|0;p=C;d=mf(0,c[b>>2]|0,32)|0;r=C;v=mf(0,c[v>>2]|0,32)|0;r=vf(v|0,C|0,d|0,r|0)|0;r=lf(t|0,p|0,r|0,C|0)|0;p=a+88|0;c[p>>2]=r;c[p+4>>2]=C;p=mf(0,c[j>>2]|0,32)|0;r=C;t=mf(0,c[k>>2]|0,32)|0;r=vf(t|0,C|0,p|0,r|0)|0;p=C;t=mf(0,c[n>>2]|0,32)|0;d=C;v=mf(0,c[m>>2]|0,32)|0;d=vf(v|0,C|0,t|0,d|0)|0;t=C;v=mf(0,c[g>>2]|0,32)|0;s=C;w=mf(0,c[o>>2]|0,32)|0;s=vf(w|0,C|0,v|0,s|0)|0;t=lf(s|0,C|0,d|0,t|0)|0;d=C;h=mf(0,c[h>>2]|0,32)|0;s=C;v=mf(0,c[e>>2]|0,32)|0;s=vf(v|0,C|0,h|0,s|0)|0;s=lf(t|0,d|0,s|0,C|0)|0;d=C;t=mf(0,c[b>>2]|0,32)|0;h=C;u=mf(0,c[u>>2]|0,32)|0;h=vf(u|0,C|0,t|0,h|0)|0;h=lf(s|0,d|0,h|0,C|0)|0;h=pf(h|0,C|0,1)|0;p=lf(h|0,C|0,r|0,p|0)|0;r=C;h=mf(0,c[l>>2]|0,32)|0;d=C;s=mf(0,c[i>>2]|0,32)|0;d=vf(s|0,C|0,h|0,d|0)|0;d=lf(p|0,r|0,d|0,C|0)|0;r=C;p=mf(0,c[f>>2]|0,32)|0;h=C;s=mf(0,c[q>>2]|0,32)|0;h=vf(s|0,C|0,p|0,h|0)|0;h=lf(d|0,r|0,h|0,C|0)|0;r=a+96|0;c[r>>2]=h;c[r+4>>2]=C;r=mf(0,c[j>>2]|0,32)|0;h=C;d=mf(0,c[m>>2]|0,32)|0;h=vf(d|0,C|0,r|0,h|0)|0;r=C;d=mf(0,c[g>>2]|0,32)|0;p=C;s=mf(0,c[k>>2]|0,32)|0;p=vf(s|0,C|0,d|0,p|0)|0;r=lf(p|0,C|0,h|0,r|0)|0;h=C;p=mf(0,c[n>>2]|0,32)|0;d=C;s=mf(0,c[i>>2]|0,32)|0;d=vf(s|0,C|0,p|0,d|0)|0;d=lf(r|0,h|0,d|0,C|0)|0;h=C;r=mf(0,c[f>>2]|0,32)|0;p=C;s=mf(0,c[o>>2]|0,32)|0;p=vf(s|0,C|0,r|0,p|0)|0;p=lf(d|0,h|0,p|0,C|0)|0;h=C;l=mf(0,c[l>>2]|0,32)|0;d=C;r=mf(0,c[e>>2]|0,32)|0;d=vf(r|0,C|0,l|0,d|0)|0;d=lf(p|0,h|0,d|0,C|0)|0;h=C;p=mf(0,c[b>>2]|0,32)|0;l=C;q=mf(0,c[q>>2]|0,32)|0;l=vf(q|0,C|0,p|0,l|0)|0;l=lf(d|0,h|0,l|0,C|0)|0;h=a+104|0;c[h>>2]=l;c[h+4>>2]=C;h=mf(0,c[g>>2]|0,32)|0;l=C;d=mf(0,c[m>>2]|0,32)|0;l=vf(d|0,C|0,h|0,l|0)|0;h=C;d=mf(0,c[n>>2]|0,32)|0;n=C;p=mf(0,c[e>>2]|0,32)|0;n=vf(p|0,C|0,d|0,n|0)|0;h=lf(n|0,C|0,l|0,h|0)|0;l=C;n=mf(0,c[b>>2]|0,32)|0;d=C;o=mf(0,c[o>>2]|0,32)|0;d=vf(o|0,C|0,n|0,d|0)|0;d=lf(h|0,l|0,d|0,C|0)|0;d=pf(d|0,C|0,1)|0;l=C;h=mf(0,c[j>>2]|0,32)|0;n=C;o=mf(0,c[i>>2]|0,32)|0;n=vf(o|0,C|0,h|0,n|0)|0;n=lf(d|0,l|0,n|0,C|0)|0;l=C;d=mf(0,c[f>>2]|0,32)|0;h=C;o=mf(0,c[k>>2]|0,32)|0;h=vf(o|0,C|0,d|0,h|0)|0;h=lf(n|0,l|0,h|0,C|0)|0;l=a+112|0;c[l>>2]=h;c[l+4>>2]=C;l=mf(0,c[g>>2]|0,32)|0;h=C;n=mf(0,c[i>>2]|0,32)|0;h=vf(n|0,C|0,l|0,h|0)|0;l=C;n=mf(0,c[f>>2]|0,32)|0;d=C;o=mf(0,c[m>>2]|0,32)|0;d=vf(o|0,C|0,n|0,d|0)|0;l=lf(d|0,C|0,h|0,l|0)|0;h=C;d=mf(0,c[j>>2]|0,32)|0;j=C;n=mf(0,c[e>>2]|0,32)|0;j=vf(n|0,C|0,d|0,j|0)|0;j=lf(l|0,h|0,j|0,C|0)|0;h=C;l=mf(0,c[b>>2]|0,32)|0;d=C;k=mf(0,c[k>>2]|0,32)|0;d=vf(k|0,C|0,l|0,d|0)|0;d=lf(j|0,h|0,d|0,C|0)|0;h=a+120|0;c[h>>2]=d;c[h+4>>2]=C;h=mf(0,c[f>>2]|0,32)|0;d=C;j=mf(0,c[i>>2]|0,32)|0;d=vf(j|0,C|0,h|0,d|0)|0;h=C;g=mf(0,c[g>>2]|0,32)|0;j=C;l=mf(0,c[e>>2]|0,32)|0;j=vf(l|0,C|0,g|0,j|0)|0;g=C;l=mf(0,c[b>>2]|0,32)|0;k=C;m=mf(0,c[m>>2]|0,32)|0;k=vf(m|0,C|0,l|0,k|0)|0;g=lf(k|0,C|0,j|0,g|0)|0;g=pf(g|0,C|0,1)|0;h=lf(g|0,C|0,d|0,h|0)|0;d=a+128|0;c[d>>2]=h;c[d+4>>2]=C;f=mf(0,c[f>>2]|0,32)|0;d=C;h=mf(0,c[e>>2]|0,32)|0;d=vf(h|0,C|0,f|0,d|0)|0;f=C;h=mf(0,c[b>>2]|0,32)|0;g=C;i=mf(0,c[i>>2]|0,32)|0;g=vf(i|0,C|0,h|0,g|0)|0;f=lf(g|0,C|0,d|0,f|0)|0;d=a+136|0;c[d>>2]=f;c[d+4>>2]=C;d=mf(0,c[b>>2]|0,31)|0;b=C;e=mf(0,c[e>>2]|0,32)|0;b=vf(e|0,C|0,d|0,b|0)|0;a=a+144|0;c[a>>2]=b;c[a+4>>2]=C;return}function cf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;j=i;i=i+160|0;d=j;u=c[b>>2]|0;R=mf(0,u|0,32)|0;N=C;z=vf(R|0,N|0,R|0,N|0)|0;E=d;c[E>>2]=z;c[E+4>>2]=C;u=mf(0,u|0,31)|0;E=C;z=b+8|0;F=c[z>>2]|0;D=mf(0,F|0,32)|0;x=C;y=vf(D|0,x|0,u|0,E|0)|0;h=d+8|0;e=h;c[e>>2]=y;c[e+4>>2]=C;e=vf(D|0,x|0,D|0,x|0)|0;y=C;l=b+16|0;m=mf(0,c[l>>2]|0,32)|0;H=C;q=vf(m|0,H|0,R|0,N|0)|0;y=lf(q|0,C|0,e|0,y|0)|0;y=pf(y|0,C|0,1)|0;e=d+16|0;q=e;c[q>>2]=y;c[q+4>>2]=C;q=vf(m|0,H|0,D|0,x|0)|0;y=C;G=b+24|0;K=mf(0,c[G>>2]|0,32)|0;O=C;t=vf(K|0,O|0,R|0,N|0)|0;y=lf(t|0,C|0,q|0,y|0)|0;y=pf(y|0,C|0,1)|0;q=d+24|0;t=q;c[t>>2]=y;c[t+4>>2]=C;t=vf(m|0,H|0,m|0,H|0)|0;y=C;f=mf(0,F|0,30)|0;f=vf(K|0,O|0,f|0,C|0)|0;y=lf(f|0,C|0,t|0,y|0)|0;t=C;f=b+32|0;r=mf(0,c[f>>2]|0,32)|0;k=C;E=vf(r|0,k|0,u|0,E|0)|0;E=lf(y|0,t|0,E|0,C|0)|0;t=d+32|0;y=t;c[y>>2]=E;c[y+4>>2]=C;y=vf(K|0,O|0,m|0,H|0)|0;E=C;u=vf(r|0,k|0,D|0,x|0)|0;E=lf(u|0,C|0,y|0,E|0)|0;y=C;u=b+40|0;v=mf(0,c[u>>2]|0,32)|0;g=C;M=vf(v|0,g|0,R|0,N|0)|0;M=lf(E|0,y|0,M|0,C|0)|0;M=pf(M|0,C|0,1)|0;y=d+40|0;E=y;c[E>>2]=M;c[E+4>>2]=C;E=vf(K|0,O|0,K|0,O|0)|0;M=C;B=vf(r|0,k|0,m|0,H|0)|0;M=lf(B|0,C|0,E|0,M|0)|0;E=C;B=b+48|0;p=mf(0,c[B>>2]|0,32)|0;o=C;J=vf(p|0,o|0,R|0,N|0)|0;J=lf(M|0,E|0,J|0,C|0)|0;E=C;F=mf(0,F|0,31)|0;F=vf(v|0,g|0,F|0,C|0)|0;F=lf(J|0,E|0,F|0,C|0)|0;F=pf(F|0,C|0,1)|0;E=d+48|0;J=E;c[J>>2]=F;c[J+4>>2]=C;J=vf(r|0,k|0,K|0,O|0)|0;F=C;M=vf(v|0,g|0,m|0,H|0)|0;F=lf(M|0,C|0,J|0,F|0)|0;J=C;M=vf(p|0,o|0,D|0,x|0)|0;M=lf(F|0,J|0,M|0,C|0)|0;J=C;F=b+56|0;s=mf(0,c[F>>2]|0,32)|0;n=C;A=vf(s|0,n|0,R|0,N|0)|0;A=lf(M|0,J|0,A|0,C|0)|0;A=pf(A|0,C|0,1)|0;J=d+56|0;M=J;c[M>>2]=A;c[M+4>>2]=C;M=vf(r|0,k|0,r|0,k|0)|0;A=C;P=vf(p|0,o|0,m|0,H|0)|0;Q=C;L=b+64|0;I=mf(0,c[L>>2]|0,32)|0;w=C;N=vf(I|0,w|0,R|0,N|0)|0;Q=lf(N|0,C|0,P|0,Q|0)|0;P=C;x=vf(s|0,n|0,D|0,x|0)|0;D=C;N=vf(v|0,g|0,K|0,O|0)|0;D=lf(N|0,C|0,x|0,D|0)|0;D=pf(D|0,C|0,1)|0;D=lf(Q|0,P|0,D|0,C|0)|0;D=pf(D|0,C|0,1)|0;A=lf(D|0,C|0,M|0,A|0)|0;M=d+64|0;D=M;c[D>>2]=A;c[D+4>>2]=C;D=vf(v|0,g|0,r|0,k|0)|0;A=C;O=vf(p|0,o|0,K|0,O|0)|0;A=lf(O|0,C|0,D|0,A|0)|0;D=C;H=vf(s|0,n|0,m|0,H|0)|0;H=lf(A|0,D|0,H|0,C|0)|0;D=C;z=mf(0,c[z>>2]|0,32)|0;A=C;m=vf(I|0,w|0,z|0,A|0)|0;m=lf(H|0,D|0,m|0,C|0)|0;D=C;H=mf(0,c[b>>2]|0,32)|0;O=C;K=c[b+72>>2]|0;P=mf(0,K|0,32)|0;Q=C;O=vf(P|0,Q|0,H|0,O|0)|0;O=lf(m|0,D|0,O|0,C|0)|0;O=pf(O|0,C|0,1)|0;b=d+72|0;c[b>>2]=O;c[b+4>>2]=C;b=vf(v|0,g|0,v|0,g|0)|0;O=C;k=vf(p|0,o|0,r|0,k|0)|0;O=lf(k|0,C|0,b|0,O|0)|0;b=C;l=mf(0,c[l>>2]|0,32)|0;k=C;r=vf(I|0,w|0,l|0,k|0)|0;r=lf(O|0,b|0,r|0,C|0)|0;b=C;G=mf(0,c[G>>2]|0,32)|0;O=C;D=vf(s|0,n|0,G|0,O|0)|0;m=C;A=vf(P|0,Q|0,z|0,A|0)|0;m=lf(A|0,C|0,D|0,m|0)|0;m=pf(m|0,C|0,1)|0;m=lf(r|0,b|0,m|0,C|0)|0;m=pf(m|0,C|0,1)|0;b=d+80|0;r=b;c[r>>2]=m;c[r+4>>2]=C;g=vf(p|0,o|0,v|0,g|0)|0;v=C;f=mf(0,c[f>>2]|0,32)|0;r=C;m=vf(s|0,n|0,f|0,r|0)|0;v=lf(m|0,C|0,g|0,v|0)|0;g=C;m=vf(I|0,w|0,G|0,O|0)|0;m=lf(v|0,g|0,m|0,C|0)|0;g=C;k=vf(P|0,Q|0,l|0,k|0)|0;k=lf(m|0,g|0,k|0,C|0)|0;g=C;m=pf(k|0,g|0,1)|0;l=C;v=d+88|0;c[v>>2]=m;c[v+4>>2]=l;o=vf(p|0,o|0,p|0,o|0)|0;p=C;v=vf(I|0,w|0,f|0,r|0)|0;D=C;u=c[u>>2]|0;A=mf(0,u|0,32)|0;z=C;H=vf(s|0,n|0,A|0,z|0)|0;x=C;O=vf(P|0,Q|0,G|0,O|0)|0;x=lf(O|0,C|0,H|0,x|0)|0;x=pf(x|0,C|0,1)|0;D=lf(x|0,C|0,v|0,D|0)|0;D=pf(D|0,C|0,1)|0;p=lf(D|0,C|0,o|0,p|0)|0;o=C;D=d+96|0;c[D>>2]=p;c[D+4>>2]=o;B=mf(0,c[B>>2]|0,32)|0;D=C;n=vf(s|0,n|0,B|0,D|0)|0;s=C;z=vf(I|0,w|0,A|0,z|0)|0;s=lf(z|0,C|0,n|0,s|0)|0;n=C;r=vf(P|0,Q|0,f|0,r|0)|0;r=lf(s|0,n|0,r|0,C|0)|0;n=C;s=pf(r|0,n|0,1)|0;f=C;z=d+104|0;c[z>>2]=s;c[z+4>>2]=f;F=c[F>>2]|0;z=mf(0,F|0,32)|0;A=C;v=vf(z|0,A|0,z|0,A|0)|0;x=C;w=vf(I|0,w|0,B|0,D|0)|0;x=lf(w|0,C|0,v|0,x|0)|0;v=C;u=mf(0,u|0,31)|0;u=vf(P|0,Q|0,u|0,C|0)|0;u=lf(x|0,v|0,u|0,C|0)|0;v=C;x=pf(u|0,v|0,1)|0;w=C;I=d+112|0;c[I>>2]=x;c[I+4>>2]=w;L=c[L>>2]|0;I=mf(0,L|0,32)|0;H=C;A=vf(I|0,H|0,z|0,A|0)|0;z=C;D=vf(P|0,Q|0,B|0,D|0)|0;z=lf(D|0,C|0,A|0,z|0)|0;A=C;D=pf(z|0,A|0,1)|0;B=C;O=d+120|0;c[O>>2]=D;c[O+4>>2]=B;H=vf(I|0,H|0,I|0,H|0)|0;I=C;F=mf(0,F|0,30)|0;F=vf(P|0,Q|0,F|0,C|0)|0;I=lf(F|0,C|0,H|0,I|0)|0;H=C;F=d+128|0;c[F>>2]=I;c[F+4>>2]=H;L=mf(0,L|0,31)|0;L=vf(P|0,Q|0,L|0,C|0)|0;F=C;O=d+136|0;c[O>>2]=L;c[O+4>>2]=F;K=mf(0,K|0,31)|0;Q=vf(K|0,C|0,P|0,Q|0)|0;P=C;K=d+144|0;c[K>>2]=Q;c[K+4>>2]=P;K=M;O=c[K>>2]|0;K=c[K+4>>2]|0;G=vf(Q|0,P|0,18,0)|0;N=C;K=lf(Q|0,P|0,O|0,K|0)|0;N=lf(K|0,C|0,G|0,N|0)|0;c[M>>2]=N;c[M+4>>2]=C;M=J;N=c[M>>2]|0;M=c[M+4>>2]|0;G=vf(L|0,F|0,18,0)|0;K=C;F=lf(N|0,M|0,L|0,F|0)|0;K=lf(F|0,C|0,G|0,K|0)|0;c[J>>2]=K;c[J+4>>2]=C;J=E;K=c[J>>2]|0;J=c[J+4>>2]|0;G=vf(I|0,H|0,18,0)|0;F=C;H=lf(K|0,J|0,I|0,H|0)|0;F=lf(H|0,C|0,G|0,F|0)|0;c[E>>2]=F;c[E+4>>2]=C;E=y;F=c[E>>2]|0;E=c[E+4>>2]|0;A=vf(z|0,A|0,36,0)|0;z=C;B=lf(F|0,E|0,D|0,B|0)|0;z=lf(B|0,C|0,A|0,z|0)|0;c[y>>2]=z;c[y+4>>2]=C;y=t;z=c[y>>2]|0;y=c[y+4>>2]|0;v=vf(u|0,v|0,36,0)|0;u=C;w=lf(z|0,y|0,x|0,w|0)|0;u=lf(w|0,C|0,v|0,u|0)|0;c[t>>2]=u;c[t+4>>2]=C;t=q;u=c[t>>2]|0;t=c[t+4>>2]|0;n=vf(r|0,n|0,36,0)|0;r=C;f=lf(u|0,t|0,s|0,f|0)|0;r=lf(f|0,C|0,n|0,r|0)|0;c[q>>2]=r;c[q+4>>2]=C;q=e;r=c[q>>2]|0;q=c[q+4>>2]|0;n=vf(p|0,o|0,18,0)|0;f=C;o=lf(r|0,q|0,p|0,o|0)|0;f=lf(o|0,C|0,n|0,f|0)|0;c[e>>2]=f;c[e+4>>2]=C;e=h;f=c[e>>2]|0;e=c[e+4>>2]|0;g=vf(k|0,g|0,36,0)|0;k=C;l=lf(f|0,e|0,m|0,l|0)|0;k=lf(l|0,C|0,g|0,k|0)|0;g=h;c[g>>2]=k;c[g+4>>2]=C;g=b;k=c[g>>2]|0;g=c[g+4>>2]|0;l=d;m=c[l>>2]|0;l=c[l+4>>2]|0;e=vf(k|0,g|0,18,0)|0;f=C;g=lf(m|0,l|0,k|0,g|0)|0;f=lf(g|0,C|0,e|0,f|0)|0;e=C;g=d;c[g>>2]=f;c[g+4>>2]=e;g=b;c[g>>2]=0;c[g+4>>2]=0;g=0;do{O=lf(e>>31>>>6|0,0,f|0,e|0)|0;O=mf(O|0,C|0,26)|0;N=C;M=pf(O|0,N|0,26)|0;M=kf(f|0,e|0,M|0,C|0)|0;R=d+(g<<3)|0;c[R>>2]=M;c[R+4>>2]=C;R=d+((g|1)<<3)|0;M=R;M=lf(O|0,N|0,c[M>>2]|0,c[M+4>>2]|0)|0;N=C;O=lf(N>>31>>>7|0,0,M|0,N|0)|0;O=mf(O|0,C|0,25)|0;P=C;Q=pf(O|0,P|0,25)|0;Q=kf(M|0,N|0,Q|0,C|0)|0;c[R>>2]=Q;c[R+4>>2]=C;g=g+2|0;R=d+(g<<3)|0;Q=R;f=lf(O|0,P|0,c[Q>>2]|0,c[Q+4>>2]|0)|0;e=C;c[R>>2]=f;c[R+4>>2]=e}while(g>>>0<10);Q=b;P=c[Q>>2]|0;Q=c[Q+4>>2]|0;N=d;M=c[N>>2]|0;N=c[N+4>>2]|0;R=vf(P|0,Q|0,18,0)|0;O=C;Q=lf(M|0,N|0,P|0,Q|0)|0;O=lf(Q|0,C|0,R|0,O|0)|0;R=C;Q=b;c[Q>>2]=0;c[Q+4>>2]=0;Q=lf(R>>31>>>6|0,0,O|0,R|0)|0;Q=mf(Q|0,C|0,26)|0;b=C;P=pf(Q|0,b|0,26)|0;P=kf(O|0,R|0,P|0,C|0)|0;R=d;c[R>>2]=P;c[R+4>>2]=C;R=h;R=lf(Q|0,b|0,c[R>>2]|0,c[R+4>>2]|0)|0;b=h;c[b>>2]=R;c[b+4>>2]=C;b=a+80|0;do{c[a>>2]=c[d>>2];a=a+4|0;d=d+4|0}while((a|0)<(b|0));i=j;return}function df(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=i;i=i+160|0;e=j;bf(e,b,d);b=e+144|0;f=c[b>>2]|0;b=c[b+4>>2]|0;d=e+64|0;k=d;h=c[k>>2]|0;k=c[k+4>>2]|0;m=vf(f|0,b|0,18,0)|0;l=C;b=lf(h|0,k|0,f|0,b|0)|0;l=lf(b|0,C|0,m|0,l|0)|0;c[d>>2]=l;c[d+4>>2]=C;d=e+136|0;l=c[d>>2]|0;d=c[d+4>>2]|0;m=e+56|0;b=m;f=c[b>>2]|0;b=c[b+4>>2]|0;k=vf(l|0,d|0,18,0)|0;h=C;d=lf(f|0,b|0,l|0,d|0)|0;h=lf(d|0,C|0,k|0,h|0)|0;c[m>>2]=h;c[m+4>>2]=C;m=e+128|0;h=c[m>>2]|0;m=c[m+4>>2]|0;k=e+48|0;d=k;l=c[d>>2]|0;d=c[d+4>>2]|0;b=vf(h|0,m|0,18,0)|0;f=C;m=lf(l|0,d|0,h|0,m|0)|0;f=lf(m|0,C|0,b|0,f|0)|0;c[k>>2]=f;c[k+4>>2]=C;k=e+120|0;f=c[k>>2]|0;k=c[k+4>>2]|0;b=e+40|0;m=b;h=c[m>>2]|0;m=c[m+4>>2]|0;d=vf(f|0,k|0,18,0)|0;l=C;k=lf(h|0,m|0,f|0,k|0)|0;l=lf(k|0,C|0,d|0,l|0)|0;c[b>>2]=l;c[b+4>>2]=C;b=e+112|0;l=c[b>>2]|0;b=c[b+4>>2]|0;d=e+32|0;k=d;f=c[k>>2]|0;k=c[k+4>>2]|0;m=vf(l|0,b|0,18,0)|0;h=C;b=lf(f|0,k|0,l|0,b|0)|0;h=lf(b|0,C|0,m|0,h|0)|0;c[d>>2]=h;c[d+4>>2]=C;d=e+104|0;h=c[d>>2]|0;d=c[d+4>>2]|0;m=e+24|0;b=m;l=c[b>>2]|0;b=c[b+4>>2]|0;k=vf(h|0,d|0,18,0)|0;f=C;d=lf(l|0,b|0,h|0,d|0)|0;f=lf(d|0,C|0,k|0,f|0)|0;c[m>>2]=f;c[m+4>>2]=C;m=e+96|0;f=c[m>>2]|0;m=c[m+4>>2]|0;k=e+16|0;d=k;h=c[d>>2]|0;d=c[d+4>>2]|0;b=vf(f|0,m|0,18,0)|0;l=C;m=lf(h|0,d|0,f|0,m|0)|0;l=lf(m|0,C|0,b|0,l|0)|0;c[k>>2]=l;c[k+4>>2]=C;k=e+88|0;l=c[k>>2]|0;k=c[k+4>>2]|0;b=e+8|0;m=b;f=c[m>>2]|0;m=c[m+4>>2]|0;d=vf(l|0,k|0,18,0)|0;h=C;k=lf(f|0,m|0,l|0,k|0)|0;h=lf(k|0,C|0,d|0,h|0)|0;d=b;c[d>>2]=h;c[d+4>>2]=C;d=e+80|0;h=d;k=c[h>>2]|0;h=c[h+4>>2]|0;l=e;m=c[l>>2]|0;l=c[l+4>>2]|0;f=vf(k|0,h|0,18,0)|0;g=C;h=lf(m|0,l|0,k|0,h|0)|0;g=lf(h|0,C|0,f|0,g|0)|0;f=C;h=e;c[h>>2]=g;c[h+4>>2]=f;h=d;c[h>>2]=0;c[h+4>>2]=0;h=0;do{n=lf(f>>31>>>6|0,0,g|0,f|0)|0;n=mf(n|0,C|0,26)|0;o=C;p=pf(n|0,o|0,26)|0;p=kf(g|0,f|0,p|0,C|0)|0;m=e+(h<<3)|0;c[m>>2]=p;c[m+4>>2]=C;m=e+((h|1)<<3)|0;p=m;p=lf(n|0,o|0,c[p>>2]|0,c[p+4>>2]|0)|0;o=C;n=lf(o>>31>>>7|0,0,p|0,o|0)|0;n=mf(n|0,C|0,25)|0;k=C;l=pf(n|0,k|0,25)|0;l=kf(p|0,o|0,l|0,C|0)|0;c[m>>2]=l;c[m+4>>2]=C;h=h+2|0;m=e+(h<<3)|0;l=m;g=lf(n|0,k|0,c[l>>2]|0,c[l+4>>2]|0)|0;f=C;c[m>>2]=g;c[m+4>>2]=f}while(h>>>0<10);o=d;n=c[o>>2]|0;o=c[o+4>>2]|0;l=e;k=c[l>>2]|0;l=c[l+4>>2]|0;p=vf(n|0,o|0,18,0)|0;m=C;o=lf(k|0,l|0,n|0,o|0)|0;m=lf(o|0,C|0,p|0,m|0)|0;p=C;o=d;c[o>>2]=0;c[o+4>>2]=0;o=lf(p>>31>>>6|0,0,m|0,p|0)|0;o=mf(o|0,C|0,26)|0;d=C;n=pf(o|0,d|0,26)|0;n=kf(m|0,p|0,n|0,C|0)|0;p=e;c[p>>2]=n;c[p+4>>2]=C;p=b;p=lf(o|0,d|0,c[p>>2]|0,c[p+4>>2]|0)|0;d=b;c[d>>2]=p;c[d+4>>2]=C;d=a;b=d+80|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(b|0));i=j;return}function ef(){var a=0;if(!(c[8886]|0))a=35588;else a=c[(ga()|0)+64>>2]|0;return a|0}function ff(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)d=0;else{f=d;e=b;while(1){b=a[e>>0]|0;d=a[c>>0]|0;if(b<<24>>24!=d<<24>>24)break;f=f+-1|0;if(!f){d=0;break a}else{e=e+1|0;c=c+1|0}}d=(b&255)-(d&255)|0}while(0);return d|0}function gf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;do if(a>>>0<245){o=a>>>0<11?16:a+11&-8;a=o>>>3;j=c[8898]|0;b=j>>>a;if(b&3|0){b=(b&1^1)+a|0;d=35632+(b<<1<<2)|0;e=d+8|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[8902]|0)>>>0)ha();a=h+12|0;if((c[a>>2]|0)==(f|0)){c[a>>2]=d;c[e>>2]=h;break}else ha()}else c[8898]=j&~(1<<b);while(0);L=b<<3;c[f+4>>2]=L|3;L=f+L+4|0;c[L>>2]=c[L>>2]|1;L=g;return L|0}h=c[8900]|0;if(o>>>0>h>>>0){if(b|0){d=2<<a;d=b<<a&(d|0-d);d=(d&0-d)+-1|0;i=d>>>12&16;d=d>>>i;f=d>>>5&8;d=d>>>f;g=d>>>2&4;d=d>>>g;e=d>>>1&2;d=d>>>e;b=d>>>1&1;b=(f|i|g|e|b)+(d>>>b)|0;d=35632+(b<<1<<2)|0;e=d+8|0;g=c[e>>2]|0;i=g+8|0;f=c[i>>2]|0;do if((d|0)!=(f|0)){if(f>>>0<(c[8902]|0)>>>0)ha();a=f+12|0;if((c[a>>2]|0)==(g|0)){c[a>>2]=d;c[e>>2]=f;k=c[8900]|0;break}else ha()}else{c[8898]=j&~(1<<b);k=h}while(0);h=(b<<3)-o|0;c[g+4>>2]=o|3;e=g+o|0;c[e+4>>2]=h|1;c[e+h>>2]=h;if(k|0){f=c[8903]|0;b=k>>>3;d=35632+(b<<1<<2)|0;a=c[8898]|0;b=1<<b;if(a&b){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{l=a;m=b}}else{c[8898]=a|b;l=d+8|0;m=d}c[l>>2]=f;c[m+12>>2]=f;c[f+8>>2]=m;c[f+12>>2]=d}c[8900]=h;c[8903]=e;L=i;return L|0}a=c[8899]|0;if(a){d=(a&0-a)+-1|0;K=d>>>12&16;d=d>>>K;J=d>>>5&8;d=d>>>J;L=d>>>2&4;d=d>>>L;b=d>>>1&2;d=d>>>b;e=d>>>1&1;e=c[35896+((J|K|L|b|e)+(d>>>e)<<2)>>2]|0;d=(c[e+4>>2]&-8)-o|0;b=e;while(1){a=c[b+16>>2]|0;if(!a){a=c[b+20>>2]|0;if(!a){j=e;break}}b=(c[a+4>>2]&-8)-o|0;L=b>>>0<d>>>0;d=L?b:d;b=a;e=L?a:e}g=c[8902]|0;if(j>>>0<g>>>0)ha();i=j+o|0;if(j>>>0>=i>>>0)ha();h=c[j+24>>2]|0;e=c[j+12>>2]|0;do if((e|0)==(j|0)){b=j+20|0;a=c[b>>2]|0;if(!a){b=j+16|0;a=c[b>>2]|0;if(!a){n=0;break}}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;b=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;b=e}}if(b>>>0<g>>>0)ha();else{c[b>>2]=0;n=a;break}}else{f=c[j+8>>2]|0;if(f>>>0<g>>>0)ha();a=f+12|0;if((c[a>>2]|0)!=(j|0))ha();b=e+8|0;if((c[b>>2]|0)==(j|0)){c[a>>2]=e;c[b>>2]=f;n=e;break}else ha()}while(0);do if(h|0){a=c[j+28>>2]|0;b=35896+(a<<2)|0;if((j|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[8899]=c[8899]&~(1<<a);break}}else{if(h>>>0<(c[8902]|0)>>>0)ha();a=h+16|0;if((c[a>>2]|0)==(j|0))c[a>>2]=n;else c[h+20>>2]=n;if(!n)break}b=c[8902]|0;if(n>>>0<b>>>0)ha();c[n+24>>2]=h;a=c[j+16>>2]|0;do if(a|0)if(a>>>0<b>>>0)ha();else{c[n+16>>2]=a;c[a+24>>2]=n;break}while(0);a=c[j+20>>2]|0;if(a|0)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}while(0);if(d>>>0<16){L=d+o|0;c[j+4>>2]=L|3;L=j+L+4|0;c[L>>2]=c[L>>2]|1}else{c[j+4>>2]=o|3;c[i+4>>2]=d|1;c[i+d>>2]=d;a=c[8900]|0;if(a|0){f=c[8903]|0;b=a>>>3;e=35632+(b<<1<<2)|0;a=c[8898]|0;b=1<<b;if(a&b){a=e+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{p=a;q=b}}else{c[8898]=a|b;p=e+8|0;q=e}c[p>>2]=f;c[q+12>>2]=f;c[f+8>>2]=q;c[f+12>>2]=e}c[8900]=d;c[8903]=i}L=j+8|0;return L|0}}}else if(a>>>0<=4294967231){a=a+11|0;o=a&-8;j=c[8899]|0;if(j){d=0-o|0;a=a>>>8;if(a)if(o>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;E=a<<q;p=(E+520192|0)>>>16&4;E=E<<p;i=(E+245760|0)>>>16&2;i=14-(p|q|i)+(E<<i>>>15)|0;i=o>>>(i+7|0)&1|i<<1}else i=0;b=c[35896+(i<<2)>>2]|0;a:do if(!b){a=0;b=0;E=86}else{f=d;a=0;g=o<<((i|0)==31?0:25-(i>>>1)|0);h=b;b=0;while(1){e=c[h+4>>2]&-8;d=e-o|0;if(d>>>0<f>>>0)if((e|0)==(o|0)){a=h;b=h;E=90;break a}else b=h;else d=f;e=c[h+20>>2]|0;h=c[h+16+(g>>>31<<2)>>2]|0;a=(e|0)==0|(e|0)==(h|0)?a:e;e=(h|0)==0;if(e){E=86;break}else{f=d;g=g<<(e&1^1)}}}while(0);if((E|0)==86){if((a|0)==0&(b|0)==0){a=2<<i;a=j&(a|0-a);if(!a)break;q=(a&0-a)+-1|0;m=q>>>12&16;q=q>>>m;l=q>>>5&8;q=q>>>l;n=q>>>2&4;q=q>>>n;p=q>>>1&2;q=q>>>p;a=q>>>1&1;a=c[35896+((l|m|n|p|a)+(q>>>a)<<2)>>2]|0}if(!a){i=d;j=b}else E=90}if((E|0)==90)while(1){E=0;q=(c[a+4>>2]&-8)-o|0;e=q>>>0<d>>>0;d=e?q:d;b=e?a:b;e=c[a+16>>2]|0;if(e|0){a=e;E=90;continue}a=c[a+20>>2]|0;if(!a){i=d;j=b;break}else E=90}if((j|0)!=0?i>>>0<((c[8900]|0)-o|0)>>>0:0){f=c[8902]|0;if(j>>>0<f>>>0)ha();h=j+o|0;if(j>>>0>=h>>>0)ha();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){b=j+20|0;a=c[b>>2]|0;if(!a){b=j+16|0;a=c[b>>2]|0;if(!a){s=0;break}}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<f>>>0)ha();else{c[b>>2]=0;s=a;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)ha();a=e+12|0;if((c[a>>2]|0)!=(j|0))ha();b=d+8|0;if((c[b>>2]|0)==(j|0)){c[a>>2]=d;c[b>>2]=e;s=d;break}else ha()}while(0);do if(g|0){a=c[j+28>>2]|0;b=35896+(a<<2)|0;if((j|0)==(c[b>>2]|0)){c[b>>2]=s;if(!s){c[8899]=c[8899]&~(1<<a);break}}else{if(g>>>0<(c[8902]|0)>>>0)ha();a=g+16|0;if((c[a>>2]|0)==(j|0))c[a>>2]=s;else c[g+20>>2]=s;if(!s)break}b=c[8902]|0;if(s>>>0<b>>>0)ha();c[s+24>>2]=g;a=c[j+16>>2]|0;do if(a|0)if(a>>>0<b>>>0)ha();else{c[s+16>>2]=a;c[a+24>>2]=s;break}while(0);a=c[j+20>>2]|0;if(a|0)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[s+20>>2]=a;c[a+24>>2]=s;break}}while(0);do if(i>>>0>=16){c[j+4>>2]=o|3;c[h+4>>2]=i|1;c[h+i>>2]=i;a=i>>>3;if(i>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{u=a;v=b}}else{c[8898]=b|a;u=d+8|0;v=d}c[u>>2]=h;c[v+12>>2]=h;c[h+8>>2]=v;c[h+12>>2]=d;break}a=i>>>8;if(a)if(i>>>0>16777215)d=31;else{K=(a+1048320|0)>>>16&8;L=a<<K;J=(L+520192|0)>>>16&4;L=L<<J;d=(L+245760|0)>>>16&2;d=14-(J|K|d)+(L<<d>>>15)|0;d=i>>>(d+7|0)&1|d<<1}else d=0;e=35896+(d<<2)|0;c[h+28>>2]=d;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[8899]|0;b=1<<d;if(!(a&b)){c[8899]=a|b;c[e>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;break}f=i<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(i|0)){d=a;E=148;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=145;break}else{f=f<<1;a=d}}if((E|0)==145)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=h;c[h+24>>2]=a;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((E|0)==148){a=d+8|0;b=c[a>>2]|0;L=c[8902]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=h;c[a>>2]=h;c[h+8>>2]=b;c[h+12>>2]=d;c[h+24>>2]=0;break}else ha()}}else{L=i+o|0;c[j+4>>2]=L|3;L=j+L+4|0;c[L>>2]=c[L>>2]|1}while(0);L=j+8|0;return L|0}}}else o=-1;while(0);d=c[8900]|0;if(d>>>0>=o>>>0){a=d-o|0;b=c[8903]|0;if(a>>>0>15){L=b+o|0;c[8903]=L;c[8900]=a;c[L+4>>2]=a|1;c[L+a>>2]=a;c[b+4>>2]=o|3}else{c[8900]=0;c[8903]=0;c[b+4>>2]=d|3;L=b+d+4|0;c[L>>2]=c[L>>2]|1}L=b+8|0;return L|0}a=c[8901]|0;if(a>>>0>o>>>0){J=a-o|0;c[8901]=J;L=c[8904]|0;K=L+o|0;c[8904]=K;c[K+4>>2]=J|1;c[L+4>>2]=o|3;L=L+8|0;return L|0}do if(!(c[9016]|0)){a=oa(30)|0;if(!(a+-1&a)){c[9018]=a;c[9017]=a;c[9019]=-1;c[9020]=-1;c[9021]=0;c[9009]=0;c[9016]=(la(0)|0)&-16^1431655768;break}else ha()}while(0);h=o+48|0;g=c[9018]|0;i=o+47|0;f=g+i|0;g=0-g|0;j=f&g;if(j>>>0<=o>>>0){L=0;return L|0}a=c[9008]|0;if(a|0?(u=c[9006]|0,v=u+j|0,v>>>0<=u>>>0|v>>>0>a>>>0):0){L=0;return L|0}b:do if(!(c[9009]&4)){a=c[8904]|0;c:do if(a){d=36040;while(1){b=c[d>>2]|0;if(b>>>0<=a>>>0?(r=d+4|0,(b+(c[r>>2]|0)|0)>>>0>a>>>0):0){e=d;d=r;break}d=c[d+8>>2]|0;if(!d){E=173;break c}}a=f-(c[8901]|0)&g;if(a>>>0<2147483647){b=ka(a|0)|0;if((b|0)==((c[e>>2]|0)+(c[d>>2]|0)|0)){if((b|0)!=(-1|0)){h=b;f=a;E=193;break b}}else E=183}}else E=173;while(0);do if((E|0)==173?(t=ka(0)|0,(t|0)!=(-1|0)):0){a=t;b=c[9017]|0;d=b+-1|0;if(!(d&a))a=j;else a=j-a+(d+a&0-b)|0;b=c[9006]|0;d=b+a|0;if(a>>>0>o>>>0&a>>>0<2147483647){v=c[9008]|0;if(v|0?d>>>0<=b>>>0|d>>>0>v>>>0:0)break;b=ka(a|0)|0;if((b|0)==(t|0)){h=t;f=a;E=193;break b}else E=183}}while(0);d:do if((E|0)==183){d=0-a|0;do if(h>>>0>a>>>0&(a>>>0<2147483647&(b|0)!=(-1|0))?(w=c[9018]|0,w=i-a+w&0-w,w>>>0<2147483647):0)if((ka(w|0)|0)==(-1|0)){ka(d|0)|0;break d}else{a=w+a|0;break}while(0);if((b|0)!=(-1|0)){h=b;f=a;E=193;break b}}while(0);c[9009]=c[9009]|4;E=190}else E=190;while(0);if((((E|0)==190?j>>>0<2147483647:0)?(x=ka(j|0)|0,y=ka(0)|0,x>>>0<y>>>0&((x|0)!=(-1|0)&(y|0)!=(-1|0))):0)?(z=y-x|0,z>>>0>(o+40|0)>>>0):0){h=x;f=z;E=193}if((E|0)==193){a=(c[9006]|0)+f|0;c[9006]=a;if(a>>>0>(c[9007]|0)>>>0)c[9007]=a;i=c[8904]|0;do if(i){e=36040;do{a=c[e>>2]|0;b=e+4|0;d=c[b>>2]|0;if((h|0)==(a+d|0)){A=a;B=b;C=d;D=e;E=203;break}e=c[e+8>>2]|0}while((e|0)!=0);if(((E|0)==203?(c[D+12>>2]&8|0)==0:0)?i>>>0<h>>>0&i>>>0>=A>>>0:0){c[B>>2]=C+f;L=i+8|0;L=(L&7|0)==0?0:0-L&7;K=i+L|0;L=f-L+(c[8901]|0)|0;c[8904]=K;c[8901]=L;c[K+4>>2]=L|1;c[K+L+4>>2]=40;c[8905]=c[9020];break}a=c[8902]|0;if(h>>>0<a>>>0){c[8902]=h;j=h}else j=a;d=h+f|0;a=36040;while(1){if((c[a>>2]|0)==(d|0)){b=a;E=211;break}a=c[a+8>>2]|0;if(!a){b=36040;break}}if((E|0)==211)if(!(c[a+12>>2]&8)){c[b>>2]=h;l=a+4|0;c[l>>2]=(c[l>>2]|0)+f;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;a=d+8|0;a=d+((a&7|0)==0?0:0-a&7)|0;k=l+o|0;g=a-l-o|0;c[l+4>>2]=o|3;do if((a|0)!=(i|0)){if((a|0)==(c[8903]|0)){L=(c[8900]|0)+g|0;c[8900]=L;c[8903]=k;c[k+4>>2]=L|1;c[k+L>>2]=L;break}b=c[a+4>>2]|0;if((b&3|0)==1){i=b&-8;f=b>>>3;e:do if(b>>>0>=256){h=c[a+24>>2]|0;e=c[a+12>>2]|0;do if((e|0)==(a|0)){d=a+16|0;e=d+4|0;b=c[e>>2]|0;if(!b){b=c[d>>2]|0;if(!b){J=0;break}}else d=e;while(1){e=b+20|0;f=c[e>>2]|0;if(f|0){b=f;d=e;continue}e=b+16|0;f=c[e>>2]|0;if(!f)break;else{b=f;d=e}}if(d>>>0<j>>>0)ha();else{c[d>>2]=0;J=b;break}}else{f=c[a+8>>2]|0;if(f>>>0<j>>>0)ha();b=f+12|0;if((c[b>>2]|0)!=(a|0))ha();d=e+8|0;if((c[d>>2]|0)==(a|0)){c[b>>2]=e;c[d>>2]=f;J=e;break}else ha()}while(0);if(!h)break;b=c[a+28>>2]|0;d=35896+(b<<2)|0;do if((a|0)!=(c[d>>2]|0)){if(h>>>0<(c[8902]|0)>>>0)ha();b=h+16|0;if((c[b>>2]|0)==(a|0))c[b>>2]=J;else c[h+20>>2]=J;if(!J)break e}else{c[d>>2]=J;if(J|0)break;c[8899]=c[8899]&~(1<<b);break e}while(0);e=c[8902]|0;if(J>>>0<e>>>0)ha();c[J+24>>2]=h;b=a+16|0;d=c[b>>2]|0;do if(d|0)if(d>>>0<e>>>0)ha();else{c[J+16>>2]=d;c[d+24>>2]=J;break}while(0);b=c[b+4>>2]|0;if(!b)break;if(b>>>0<(c[8902]|0)>>>0)ha();else{c[J+20>>2]=b;c[b+24>>2]=J;break}}else{d=c[a+8>>2]|0;e=c[a+12>>2]|0;b=35632+(f<<1<<2)|0;do if((d|0)!=(b|0)){if(d>>>0<j>>>0)ha();if((c[d+12>>2]|0)==(a|0))break;ha()}while(0);if((e|0)==(d|0)){c[8898]=c[8898]&~(1<<f);break}do if((e|0)==(b|0))G=e+8|0;else{if(e>>>0<j>>>0)ha();b=e+8|0;if((c[b>>2]|0)==(a|0)){G=b;break}ha()}while(0);c[d+12>>2]=e;c[G>>2]=d}while(0);a=a+i|0;g=i+g|0}a=a+4|0;c[a>>2]=c[a>>2]&-2;c[k+4>>2]=g|1;c[k+g>>2]=g;a=g>>>3;if(g>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;do if(!(b&a)){c[8898]=b|a;K=d+8|0;L=d}else{a=d+8|0;b=c[a>>2]|0;if(b>>>0>=(c[8902]|0)>>>0){K=a;L=b;break}ha()}while(0);c[K>>2]=k;c[L+12>>2]=k;c[k+8>>2]=L;c[k+12>>2]=d;break}a=g>>>8;do if(!a)d=0;else{if(g>>>0>16777215){d=31;break}K=(a+1048320|0)>>>16&8;L=a<<K;J=(L+520192|0)>>>16&4;L=L<<J;d=(L+245760|0)>>>16&2;d=14-(J|K|d)+(L<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}while(0);e=35896+(d<<2)|0;c[k+28>>2]=d;a=k+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[8899]|0;b=1<<d;if(!(a&b)){c[8899]=a|b;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}f=g<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(g|0)){d=a;E=281;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=278;break}else{f=f<<1;a=d}}if((E|0)==278)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=k;c[k+24>>2]=a;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((E|0)==281){a=d+8|0;b=c[a>>2]|0;L=c[8902]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=k;c[a>>2]=k;c[k+8>>2]=b;c[k+12>>2]=d;c[k+24>>2]=0;break}else ha()}}else{L=(c[8901]|0)+g|0;c[8901]=L;c[8904]=k;c[k+4>>2]=L|1}while(0);L=l+8|0;return L|0}else b=36040;while(1){a=c[b>>2]|0;if(a>>>0<=i>>>0?(F=a+(c[b+4>>2]|0)|0,F>>>0>i>>>0):0){b=F;break}b=c[b+8>>2]|0}g=b+-47|0;d=g+8|0;d=g+((d&7|0)==0?0:0-d&7)|0;g=i+16|0;d=d>>>0<g>>>0?i:d;a=d+8|0;e=h+8|0;e=(e&7|0)==0?0:0-e&7;L=h+e|0;e=f+-40-e|0;c[8904]=L;c[8901]=e;c[L+4>>2]=e|1;c[L+e+4>>2]=40;c[8905]=c[9020];e=d+4|0;c[e>>2]=27;c[a>>2]=c[9010];c[a+4>>2]=c[9011];c[a+8>>2]=c[9012];c[a+12>>2]=c[9013];c[9010]=h;c[9011]=f;c[9013]=0;c[9012]=a;a=d+24|0;do{a=a+4|0;c[a>>2]=7}while((a+4|0)>>>0<b>>>0);if((d|0)!=(i|0)){h=d-i|0;c[e>>2]=c[e>>2]&-2;c[i+4>>2]=h|1;c[d>>2]=h;a=h>>>3;if(h>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{H=a;I=b}}else{c[8898]=b|a;H=d+8|0;I=d}c[H>>2]=i;c[I+12>>2]=i;c[i+8>>2]=I;c[i+12>>2]=d;break}a=h>>>8;if(a)if(h>>>0>16777215)d=31;else{K=(a+1048320|0)>>>16&8;L=a<<K;J=(L+520192|0)>>>16&4;L=L<<J;d=(L+245760|0)>>>16&2;d=14-(J|K|d)+(L<<d>>>15)|0;d=h>>>(d+7|0)&1|d<<1}else d=0;f=35896+(d<<2)|0;c[i+28>>2]=d;c[i+20>>2]=0;c[g>>2]=0;a=c[8899]|0;b=1<<d;if(!(a&b)){c[8899]=a|b;c[f>>2]=i;c[i+24>>2]=f;c[i+12>>2]=i;c[i+8>>2]=i;break}e=h<<((d|0)==31?0:25-(d>>>1)|0);a=c[f>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(h|0)){d=a;E=307;break}b=a+16+(e>>>31<<2)|0;d=c[b>>2]|0;if(!d){E=304;break}else{e=e<<1;a=d}}if((E|0)==304)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=i;c[i+24>>2]=a;c[i+12>>2]=i;c[i+8>>2]=i;break}else if((E|0)==307){a=d+8|0;b=c[a>>2]|0;L=c[8902]|0;if(b>>>0>=L>>>0&d>>>0>=L>>>0){c[b+12>>2]=i;c[a>>2]=i;c[i+8>>2]=b;c[i+12>>2]=d;c[i+24>>2]=0;break}else ha()}}}else{L=c[8902]|0;if((L|0)==0|h>>>0<L>>>0)c[8902]=h;c[9010]=h;c[9011]=f;c[9013]=0;c[8907]=c[9016];c[8906]=-1;a=0;do{L=35632+(a<<1<<2)|0;c[L+12>>2]=L;c[L+8>>2]=L;a=a+1|0}while((a|0)!=32);L=h+8|0;L=(L&7|0)==0?0:0-L&7;K=h+L|0;L=f+-40-L|0;c[8904]=K;c[8901]=L;c[K+4>>2]=L|1;c[K+L+4>>2]=40;c[8905]=c[9020]}while(0);a=c[8901]|0;if(a>>>0>o>>>0){J=a-o|0;c[8901]=J;L=c[8904]|0;K=L+o|0;c[8904]=K;c[K+4>>2]=J|1;c[L+4>>2]=o|3;L=L+8|0;return L|0}}c[(ef()|0)>>2]=12;L=0;return L|0}function hf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!a)return;d=a+-8|0;h=c[8902]|0;if(d>>>0<h>>>0)ha();a=c[a+-4>>2]|0;b=a&3;if((b|0)==1)ha();e=a&-8;m=d+e|0;do if(!(a&1)){a=c[d>>2]|0;if(!b)return;k=d+(0-a)|0;j=a+e|0;if(k>>>0<h>>>0)ha();if((k|0)==(c[8903]|0)){a=m+4|0;b=c[a>>2]|0;if((b&3|0)!=3){q=k;g=j;break}c[8900]=j;c[a>>2]=b&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;return}e=a>>>3;if(a>>>0<256){b=c[k+8>>2]|0;d=c[k+12>>2]|0;a=35632+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<h>>>0)ha();if((c[b+12>>2]|0)!=(k|0))ha()}if((d|0)==(b|0)){c[8898]=c[8898]&~(1<<e);q=k;g=j;break}if((d|0)!=(a|0)){if(d>>>0<h>>>0)ha();a=d+8|0;if((c[a>>2]|0)==(k|0))f=a;else ha()}else f=d+8|0;c[b+12>>2]=d;c[f>>2]=b;q=k;g=j;break}f=c[k+24>>2]|0;d=c[k+12>>2]|0;do if((d|0)==(k|0)){b=k+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){i=0;break}}else b=d;while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<h>>>0)ha();else{c[b>>2]=0;i=a;break}}else{e=c[k+8>>2]|0;if(e>>>0<h>>>0)ha();a=e+12|0;if((c[a>>2]|0)!=(k|0))ha();b=d+8|0;if((c[b>>2]|0)==(k|0)){c[a>>2]=d;c[b>>2]=e;i=d;break}else ha()}while(0);if(f){a=c[k+28>>2]|0;b=35896+(a<<2)|0;if((k|0)==(c[b>>2]|0)){c[b>>2]=i;if(!i){c[8899]=c[8899]&~(1<<a);q=k;g=j;break}}else{if(f>>>0<(c[8902]|0)>>>0)ha();a=f+16|0;if((c[a>>2]|0)==(k|0))c[a>>2]=i;else c[f+20>>2]=i;if(!i){q=k;g=j;break}}d=c[8902]|0;if(i>>>0<d>>>0)ha();c[i+24>>2]=f;a=k+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)ha();else{c[i+16>>2]=b;c[b+24>>2]=i;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[i+20>>2]=a;c[a+24>>2]=i;q=k;g=j;break}else{q=k;g=j}}else{q=k;g=j}}else{q=d;g=e}while(0);if(q>>>0>=m>>>0)ha();a=m+4|0;b=c[a>>2]|0;if(!(b&1))ha();if(!(b&2)){if((m|0)==(c[8904]|0)){p=(c[8901]|0)+g|0;c[8901]=p;c[8904]=q;c[q+4>>2]=p|1;if((q|0)!=(c[8903]|0))return;c[8903]=0;c[8900]=0;return}if((m|0)==(c[8903]|0)){p=(c[8900]|0)+g|0;c[8900]=p;c[8903]=q;c[q+4>>2]=p|1;c[q+p>>2]=p;return}g=(b&-8)+g|0;e=b>>>3;do if(b>>>0>=256){f=c[m+24>>2]|0;a=c[m+12>>2]|0;do if((a|0)==(m|0)){b=m+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){n=0;break}}else b=d;while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=0;n=a;break}}else{b=c[m+8>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();d=b+12|0;if((c[d>>2]|0)!=(m|0))ha();e=a+8|0;if((c[e>>2]|0)==(m|0)){c[d>>2]=a;c[e>>2]=b;n=a;break}else ha()}while(0);if(f|0){a=c[m+28>>2]|0;b=35896+(a<<2)|0;if((m|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[8899]=c[8899]&~(1<<a);break}}else{if(f>>>0<(c[8902]|0)>>>0)ha();a=f+16|0;if((c[a>>2]|0)==(m|0))c[a>>2]=n;else c[f+20>>2]=n;if(!n)break}d=c[8902]|0;if(n>>>0<d>>>0)ha();c[n+24>>2]=f;a=m+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)ha();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[8902]|0)>>>0)ha();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{b=c[m+8>>2]|0;d=c[m+12>>2]|0;a=35632+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(c[8902]|0)>>>0)ha();if((c[b+12>>2]|0)!=(m|0))ha()}if((d|0)==(b|0)){c[8898]=c[8898]&~(1<<e);break}if((d|0)!=(a|0)){if(d>>>0<(c[8902]|0)>>>0)ha();a=d+8|0;if((c[a>>2]|0)==(m|0))l=a;else ha()}else l=d+8|0;c[b+12>>2]=d;c[l>>2]=b}while(0);c[q+4>>2]=g|1;c[q+g>>2]=g;if((q|0)==(c[8903]|0)){c[8900]=g;return}}else{c[a>>2]=b&-2;c[q+4>>2]=g|1;c[q+g>>2]=g}a=g>>>3;if(g>>>0<256){d=35632+(a<<1<<2)|0;b=c[8898]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[8902]|0)>>>0)ha();else{o=a;p=b}}else{c[8898]=b|a;o=d+8|0;p=d}c[o>>2]=q;c[p+12>>2]=q;c[q+8>>2]=p;c[q+12>>2]=d;return}a=g>>>8;if(a)if(g>>>0>16777215)d=31;else{o=(a+1048320|0)>>>16&8;p=a<<o;n=(p+520192|0)>>>16&4;p=p<<n;d=(p+245760|0)>>>16&2;d=14-(n|o|d)+(p<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=35896+(d<<2)|0;c[q+28>>2]=d;c[q+20>>2]=0;c[q+16>>2]=0;a=c[8899]|0;b=1<<d;do if(a&b){f=g<<((d|0)==31?0:25-(d>>>1)|0);a=c[e>>2]|0;while(1){if((c[a+4>>2]&-8|0)==(g|0)){d=a;e=130;break}b=a+16+(f>>>31<<2)|0;d=c[b>>2]|0;if(!d){e=127;break}else{f=f<<1;a=d}}if((e|0)==127)if(b>>>0<(c[8902]|0)>>>0)ha();else{c[b>>2]=q;c[q+24>>2]=a;c[q+12>>2]=q;c[q+8>>2]=q;break}else if((e|0)==130){a=d+8|0;b=c[a>>2]|0;p=c[8902]|0;if(b>>>0>=p>>>0&d>>>0>=p>>>0){c[b+12>>2]=q;c[a>>2]=q;c[q+8>>2]=b;c[q+12>>2]=d;c[q+24>>2]=0;break}else ha()}}else{c[8899]=a|b;c[e>>2]=q;c[q+24>>2]=e;c[q+12>>2]=q;c[q+8>>2]=q}while(0);q=(c[8906]|0)+-1|0;c[8906]=q;if(!q)a=36048;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[8906]=-1;return}function jf(){}function kf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (C=d,a-c>>>0|0)|0}function lf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (C=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function mf(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>c;return a>>>c|(b&(1<<c)-1)<<32-c}C=(b|0)<0?-1:0;return b>>c-32|0}function nf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=b+e|0;if((e|0)>=20){d=d&255;h=b&3;i=d|d<<8|d<<16|d<<24;g=f&~3;if(h){h=b+4-h|0;while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}}while((b|0)<(g|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(f|0)){a[b>>0]=d;b=b+1|0}return b-e|0}function of(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}C=0;return b>>>c-32|0}function pf(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){C=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}C=a<<c-32;return 0}function qf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if((e|0)>=4096)return ma(b|0,d|0,e|0)|0;f=b|0;if((b&3)==(d&3)){while(b&3){if(!e)return f|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}while((e|0)>=4){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0;e=e-4|0}}while((e|0)>0){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}return f|0}function rf(b){b=b|0;var c=0;c=a[m+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[m+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[m+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[m+(b>>>24)>>0]|0)+24|0}function sf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=_(e,f)|0;d=a>>>16;a=(c>>>16)+(_(e,d)|0)|0;e=b>>>16;b=_(e,f)|0;return (C=(a>>>16)+(_(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function tf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=kf(j^a|0,i^b|0,j|0,i|0)|0;g=C;a=f^j;b=e^i;return kf((yf(h,g,kf(f^c|0,e^d|0,f|0,e|0)|0,C,0)|0)^a|0,C^b|0,a|0,b|0)|0}function uf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,j=0,k=0,l=0;f=i;i=i+16|0;j=f|0;h=b>>31|((b|0)<0?-1:0)<<1;g=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;l=e>>31|((e|0)<0?-1:0)<<1;k=((e|0)<0?-1:0)>>31|((e|0)<0?-1:0)<<1;a=kf(h^a|0,g^b|0,h|0,g|0)|0;b=C;yf(a,b,kf(l^d|0,k^e|0,l|0,k|0)|0,C,j)|0;e=kf(c[j>>2]^h|0,c[j+4>>2]^g|0,h|0,g|0)|0;d=C;i=f;return (C=d,e)|0}function vf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=sf(e,f)|0;a=C;return (C=(_(b,f)|0)+(_(d,e)|0)+a|a&0,c|0|0)|0}function wf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return yf(a,b,c,d,0)|0}function xf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=i;i=i+16|0;f=g|0;yf(a,b,d,e,f)|0;i=g;return (C=c[f+4>>2]|0,c[f>>2]|0)|0}function yf(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (C=n,f)|0}else{if(!g){n=0;f=0;return (C=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (C=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (C=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (C=n,f)|0}g=h-1|0;if(g&h|0){i=(aa(h|0)|0)+33-(aa(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (C=o,p)|0}else{p=rf(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (C=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (C=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (C=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((rf(i|0)|0)>>>0);return (C=o,p)|0}g=(aa(i|0)|0)-(aa(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (C=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (C=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=lf(m|0,l|0,-1,-1)|0;d=C;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;kf(k|0,d|0,e|0,n|0)|0;p=C;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=kf(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=C;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (C=o,p)|0}function zf(a,b){a=a|0;b=b|0;return qa[a&1](b|0)|0}function Af(a,b,c,d,e,f,g,h,i,j){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;return ra[a&3](b|0,c|0,d|0,e|0,f|0,g|0,h|0,i|0,j|0)|0}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;return sa[a&3](b|0,c|0)|0}function Cf(a){a=a|0;ba(0);return 0}function Df(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;ba(1);return 0}function Ef(a,b){a=a|0;b=b|0;ba(2);return 0}\n\n// EMSCRIPTEN_END_FUNCS\nvar qa=[Cf,Nc];var ra=[Df,Pc,Rc,Df];var sa=[Ef,Oc,Qc,Ef];return{_olm_create_inbound_session_from:xc,_olm_unpickle_outbound_group_session:Je,_olm_clear_utility:bc,_olm_outbound_group_session_message_index:Qe,_olm_account_sign:nc,_bitshift64Lshr:of,_olm_account_one_time_keys:pc,_olm_encrypt_random_length:Fc,_olm_init_inbound_group_session:qe,_olm_matches_inbound_session:Bc,_bitshift64Ashr:mf,_memcpy:qf,_olm_error:Rb,_olm_session_has_received_message:Ac,_olm_create_account_random_length:ic,_olm_inbound_group_session:ne,_olm_outbound_group_session_last_error:Ge,_olm_utility_last_error:Ub,_olm_pickle_inbound_group_session:te,_free:hf,_olm_inbound_group_session_id_length:xe,_olm_unpickle_session:hc,_olm_encrypt_message_type:Ec,_olm_init_outbound_group_session_random_length:Ke,_olm_get_library_version:Qb,_olm_pickle_inbound_group_session_length:se,_olm_clear_account:$b,_olm_decrypt_max_plaintext_length:Ic,_olm_group_decrypt:we,_olm_group_decrypt_max_plaintext_length:ve,_olm_remove_one_time_keys:Dc,_olm_inbound_group_session_id:ye,_olm_import_inbound_group_session:re,_olm_clear_inbound_group_session:oe,_olm_export_inbound_group_session_length:Be,_olm_export_inbound_group_session:Ce,_olm_account_one_time_keys_length:oc,_olm_unpickle_inbound_group_session:ue,_olm_inbound_group_session_first_known_index:ze,_olm_inbound_group_session_last_error:pe,_olm_pickle_session:fc,_olm_encrypt:Hc,_olm_session_id:zc,_olm_sha256:Lc,_olm_account_signature_length:mc,_olm_decrypt:Jc,_olm_account_max_number_of_one_time_keys:rc,_olm_matches_inbound_session_from:Cc,_olm_outbound_group_session_size:De,_olm_account_identity_keys_length:kc,_olm_utility:_b,_olm_create_account:jc,_olm_account_generate_one_time_keys:tc,_olm_utility_size:Xb,_olm_account_size:Vb,_olm_ed25519_verify:Mc,_memset:nf,_olm_create_outbound_session_random_length:uc,_olm_pickle_outbound_group_session:Ie,_olm_group_encrypt_message_length:Me,_olm_pickle_outbound_group_session_length:He,_olm_account_generate_one_time_keys_random_length:sc,_olm_outbound_group_session_key:Se,_olm_group_encrypt:Ne,_olm_account_identity_keys:lc,_i64Subtract:kf,_olm_unpickle_account:gc,_olm_clear_session:ac,_olm_pickle_session_length:dc,_olm_create_outbound_session:vc,_olm_inbound_group_session_size:me,_olm_sha256_length:Kc,_malloc:gf,_olm_account:Yb,_olm_pickle_account_length:cc,_olm_session_size:Wb,_olm_inbound_group_session_is_verified:Ae,_olm_session:Zb,_bitshift64Shl:pf,_olm_outbound_group_session_id_length:Oe,_olm_create_inbound_session:wc,_olm_clear_outbound_group_session:Fe,_olm_session_id_length:yc,_i64Add:lf,_olm_account_last_error:Sb,_olm_outbound_group_session:Ee,_olm_encrypt_message_length:Gc,_olm_pickle_account:ec,_olm_account_mark_keys_as_published:qc,_olm_init_outbound_group_session:Le,_olm_outbound_group_session_key_length:Re,_olm_session_last_error:Tb,_olm_outbound_group_session_id:Pe,runPostSets:jf,stackAlloc:ta,stackSave:ua,stackRestore:va,establishStackSpace:wa,setThrew:xa,setTempRet0:Aa,getTempRet0:Ba,dynCall_ii:zf,dynCall_iiiiiiiiii:Af,dynCall_iii:Bf}})\n\n\n// EMSCRIPTEN_END_ASM\n(a.t,a.u,x);a._olm_create_inbound_session_from=d._olm_create_inbound_session_from;a._olm_unpickle_outbound_group_session=d._olm_unpickle_outbound_group_session;a._olm_clear_utility=\nd._olm_clear_utility;a._olm_outbound_group_session_message_index=d._olm_outbound_group_session_message_index;a._olm_account_sign=d._olm_account_sign;var pb=a._bitshift64Lshr=d._bitshift64Lshr;a._olm_account_one_time_keys=d._olm_account_one_time_keys;a._olm_encrypt_random_length=d._olm_encrypt_random_length;a._olm_init_inbound_group_session=d._olm_init_inbound_group_session;a._olm_matches_inbound_session=d._olm_matches_inbound_session;var nb=a._bitshift64Ashr=d._bitshift64Ashr,rb=a._memcpy=d._memcpy;\na._olm_error=d._olm_error;a._olm_account_generate_one_time_keys=d._olm_account_generate_one_time_keys;a._olm_create_account_random_length=d._olm_create_account_random_length;a._olm_inbound_group_session=d._olm_inbound_group_session;a._olm_outbound_group_session_last_error=d._olm_outbound_group_session_last_error;a._olm_utility_last_error=d._olm_utility_last_error;a._olm_pickle_inbound_group_session=d._olm_pickle_inbound_group_session;var va=a._free=d._free;a.runPostSets=d.runPostSets;a._olm_inbound_group_session_id_length=\nd._olm_inbound_group_session_id_length;a._olm_unpickle_session=d._olm_unpickle_session;a._olm_encrypt_message_type=d._olm_encrypt_message_type;a._olm_init_outbound_group_session_random_length=d._olm_init_outbound_group_session_random_length;a._olm_get_library_version=d._olm_get_library_version;a._olm_pickle_inbound_group_session_length=d._olm_pickle_inbound_group_session_length;a._olm_clear_account=d._olm_clear_account;a._olm_decrypt_max_plaintext_length=d._olm_decrypt_max_plaintext_length;a._olm_group_decrypt=\nd._olm_group_decrypt;a._olm_account_last_error=d._olm_account_last_error;a._olm_remove_one_time_keys=d._olm_remove_one_time_keys;a._olm_inbound_group_session_id=d._olm_inbound_group_session_id;a._olm_import_inbound_group_session=d._olm_import_inbound_group_session;a._olm_clear_inbound_group_session=d._olm_clear_inbound_group_session;a._olm_export_inbound_group_session_length=d._olm_export_inbound_group_session_length;a._olm_export_inbound_group_session=d._olm_export_inbound_group_session;a._olm_account_one_time_keys_length=\nd._olm_account_one_time_keys_length;a._olm_unpickle_inbound_group_session=d._olm_unpickle_inbound_group_session;a._olm_inbound_group_session_first_known_index=d._olm_inbound_group_session_first_known_index;a._olm_inbound_group_session_last_error=d._olm_inbound_group_session_last_error;a._olm_pickle_session=d._olm_pickle_session;a._olm_encrypt=d._olm_encrypt;a._olm_session_id=d._olm_session_id;a._olm_sha256=d._olm_sha256;a._olm_account_signature_length=d._olm_account_signature_length;a._olm_decrypt=\nd._olm_decrypt;a._olm_account_max_number_of_one_time_keys=d._olm_account_max_number_of_one_time_keys;a._olm_matches_inbound_session_from=d._olm_matches_inbound_session_from;a._olm_outbound_group_session_size=d._olm_outbound_group_session_size;a._olm_account_identity_keys_length=d._olm_account_identity_keys_length;a._olm_utility=d._olm_utility;a._olm_create_account=d._olm_create_account;a._olm_session_has_received_message=d._olm_session_has_received_message;a._olm_utility_size=d._olm_utility_size;\na._olm_account_size=d._olm_account_size;a._olm_ed25519_verify=d._olm_ed25519_verify;var ob=a._memset=d._memset;a._olm_create_outbound_session_random_length=d._olm_create_outbound_session_random_length;a._olm_pickle_outbound_group_session=d._olm_pickle_outbound_group_session;a._olm_group_encrypt_message_length=d._olm_group_encrypt_message_length;a._olm_pickle_outbound_group_session_length=d._olm_pickle_outbound_group_session_length;a._olm_account_generate_one_time_keys_random_length=d._olm_account_generate_one_time_keys_random_length;\na._olm_outbound_group_session_key=d._olm_outbound_group_session_key;a._olm_group_encrypt=d._olm_group_encrypt;a._olm_pickle_account_length=d._olm_pickle_account_length;var lb=a._i64Subtract=d._i64Subtract;a._olm_unpickle_account=d._olm_unpickle_account;a._olm_clear_session=d._olm_clear_session;a._olm_pickle_session_length=d._olm_pickle_session_length;a._olm_create_outbound_session=d._olm_create_outbound_session;a._olm_inbound_group_session_size=d._olm_inbound_group_session_size;a._olm_sha256_length=\nd._olm_sha256_length;var X=a._malloc=d._malloc;a._olm_account=d._olm_account;a._olm_account_identity_keys=d._olm_account_identity_keys;a._olm_session_size=d._olm_session_size;a._olm_inbound_group_session_is_verified=d._olm_inbound_group_session_is_verified;a._olm_session=d._olm_session;var qb=a._bitshift64Shl=d._bitshift64Shl;a._olm_outbound_group_session_id_length=d._olm_outbound_group_session_id_length;a._olm_create_inbound_session=d._olm_create_inbound_session;a._olm_clear_outbound_group_session=\nd._olm_clear_outbound_group_session;a._olm_session_id_length=d._olm_session_id_length;var mb=a._i64Add=d._i64Add;a._olm_group_decrypt_max_plaintext_length=d._olm_group_decrypt_max_plaintext_length;a._olm_outbound_group_session=d._olm_outbound_group_session;a._olm_encrypt_message_length=d._olm_encrypt_message_length;a._olm_pickle_account=d._olm_pickle_account;a._olm_account_mark_keys_as_published=d._olm_account_mark_keys_as_published;a._olm_init_outbound_group_session=d._olm_init_outbound_group_session;\na._olm_outbound_group_session_key_length=d._olm_outbound_group_session_key_length;a._olm_session_last_error=d._olm_session_last_error;a._olm_outbound_group_session_id=d._olm_outbound_group_session_id;a.dynCall_ii=d.dynCall_ii;a.dynCall_iiiiiiiiii=d.dynCall_iiiiiiiiii;a.dynCall_iii=d.dynCall_iii;e.j=d.stackAlloc;e.f=d.stackSave;e.d=d.stackRestore;e.J=d.establishStackSpace;e.C=d.setTempRet0;e.A=d.getTempRet0;T.prototype=Error();T.prototype.constructor=T;var jb,Qa=null,ea=function b(){a.calledRun||xa();\na.calledRun||(ea=b)};a.callMain=a.H=function(b){function c(){for(var a=0;3>a;a++)d.push(0)}b=b||[];Y||(Y=!0,S(la));var f=b.length+1,d=[K(ia(a.thisProgram),\"i8\",0)];c();for(var l=0;l<f-1;l+=1)d.push(K(ia(b[l]),\"i8\",0)),c();d.push(0);d=K(d,\"i32\",0);try{var h=a._main(f,d,0);Ra(h,!0)}catch(e){if(!(e instanceof T))if(\"SimulateInfiniteLoop\"==e)a.noExitRuntime=!0;else throw e&&\"object\"===typeof e&&e.stack&&a.o(\"exception thrown: \"+[e,e.stack]),e;}finally{}};a.run=a.run=xa;a.exit=a.exit=Ra;var Ta=[];a.abort=\na.abort=Q;if(a.preInit)for(\"function\"==typeof a.preInit&&(a.preInit=[a.preInit]);0<a.preInit.length;)a.preInit.pop()();var Pa=!1;a.noInitialRun&&(Pa=!1);xa();var q=1;L.prototype.free=function(){a._olm_clear_outbound_group_session(this.a);y(this.a)};L.prototype.pickle=k(function(b){b=m(b);var c=v(a._olm_pickle_outbound_group_session_length)(this.a),f=h(b),d=h(c+q);v(a._olm_pickle_outbound_group_session)(this.a,f,b.length,d,c);return r(d)});L.prototype.unpickle=k(function(b,c){var f=m(b),d=h(f),l=m(c),\ne=h(l);v(a._olm_unpickle_outbound_group_session)(this.a,d,f.length,e,l.length)});L.prototype.create=k(function(){var b=v(a._olm_init_outbound_group_session_random_length)(this.a),c=ba(b);v(a._olm_init_outbound_group_session)(this.a,c,b)});L.prototype.encrypt=function(b){var c,f,d;try{d=a.lengthBytesUTF8(b);var e=v(a._olm_group_encrypt_message_length)(this.a,d);c=u(d+1);a.stringToUTF8(b,c,d+1);f=u(e+q);v(a._olm_group_encrypt)(this.a,c,d,f,e);a.setValue(f+e,0,\"i8\");return a.UTF8ToString(f)}finally{void 0!==\nc&&(na(c,d+1),y(c)),void 0!==f&&y(f)}};L.prototype.session_id=k(function(){var b=v(a._olm_outbound_group_session_id_length)(this.a),c=h(b+q);v(a._olm_outbound_group_session_id)(this.a,c,b);return r(c)});L.prototype.session_key=k(function(){var b=v(a._olm_outbound_group_session_key_length)(this.a),c=h(b+q);v(a._olm_outbound_group_session_key)(this.a,c,b);return r(c)});L.prototype.message_index=function(){return v(a._olm_outbound_group_session_message_index)(this.a)};N.OutboundGroupSession=L;q=1;I.prototype.free=\nfunction(){a._olm_clear_inbound_group_session(this.a);y(this.a)};I.prototype.pickle=k(function(b){b=m(b);var c=F(a._olm_pickle_inbound_group_session_length)(this.a),f=h(b),d=h(c+q);F(a._olm_pickle_inbound_group_session)(this.a,f,b.length,d,c);return r(d)});I.prototype.unpickle=k(function(b,c){var f=m(b),d=h(f),e=m(c),k=h(e);F(a._olm_unpickle_inbound_group_session)(this.a,d,f.length,k,e.length)});I.prototype.create=k(function(b){b=m(b);var c=h(b);F(a._olm_init_inbound_group_session)(this.a,c,b.length)});\nI.prototype.import_session=k(function(b){b=m(b);var c=h(b);F(a._olm_import_inbound_group_session)(this.a,c,b.length)});I.prototype.decrypt=k(function(b){var c,f,d;try{c=u(b.length);a.writeAsciiToMemory(b,c,!0);var e=F(a._olm_group_decrypt_max_plaintext_length)(this.a,c,b.length);a.writeAsciiToMemory(b,c,!0);f=u(e+q);var k=h(4);d=F(a._olm_group_decrypt)(this.a,c,b.length,f,e,k);a.setValue(f+d,0,\"i8\");return{plaintext:sa(f),message_index:a.getValue(k,\"i32\")}}finally{void 0!==c&&y(c),void 0!==f&&(na(f,\nd+q),y(f))}});I.prototype.session_id=k(function(){var b=F(a._olm_inbound_group_session_id_length)(this.a),c=h(b+q);F(a._olm_inbound_group_session_id)(this.a,c,b);return r(c)});I.prototype.first_known_index=k(function(){return F(a._olm_inbound_group_session_first_known_index)(this.a)});I.prototype.export_session=k(function(b){var c=F(a._olm_export_inbound_group_session_length)(this.a),d=h(c+q);v(a._olm_export_inbound_group_session)(this.a,d,c,b);return r(d)});N.InboundGroupSession=I;var Ua=a.Runtime,\nu=a._malloc,y=a._free,r=a.Pointer_stringify,aa=a._olm_error(),q=1;C.prototype.free=function(){a._olm_clear_account(this.a);y(this.a)};C.prototype.create=k(function(){var b=t(a._olm_create_account_random_length)(this.a),c=ba(b);t(a._olm_create_account)(this.a,c,b)});C.prototype.identity_keys=k(function(){var b=t(a._olm_account_identity_keys_length)(this.a),c=h(b+q);t(a._olm_account_identity_keys)(this.a,c,b);return r(c)});C.prototype.sign=k(function(b){var c=t(a._olm_account_signature_length)(this.a);\nb=m(b);var d=h(b),e=h(c+q);t(a._olm_account_sign)(this.a,d,b.length,e,c);return r(e)});C.prototype.one_time_keys=k(function(){var b=t(a._olm_account_one_time_keys_length)(this.a),c=h(b+q);t(a._olm_account_one_time_keys)(this.a,c,b);return r(c)});C.prototype.mark_keys_as_published=k(function(){t(a._olm_account_mark_keys_as_published)(this.a)});C.prototype.max_number_of_one_time_keys=k(function(){return t(a._olm_account_max_number_of_one_time_keys)(this.a)});C.prototype.generate_one_time_keys=k(function(b){var c=\nt(a._olm_account_generate_one_time_keys_random_length)(this.a,b),d=ba(c);t(a._olm_account_generate_one_time_keys)(this.a,b,d,c)});C.prototype.remove_one_time_keys=k(function(b){t(a._olm_remove_one_time_keys)(this.a,b.a)});C.prototype.pickle=k(function(b){b=m(b);var c=t(a._olm_pickle_account_length)(this.a),d=h(b),e=h(c+q);t(a._olm_pickle_account)(this.a,d,b.length,e,c);return r(e)});C.prototype.unpickle=k(function(b,c){var d=m(b),e=h(d),l=m(c),k=h(l);t(a._olm_unpickle_account)(this.a,e,d.length,k,\nl.length)});w.prototype.free=function(){a._olm_clear_session(this.a);y(this.a)};w.prototype.pickle=k(function(b){b=m(b);var c=p(a._olm_pickle_session_length)(this.a),d=h(b),e=h(c+q);p(a._olm_pickle_session)(this.a,d,b.length,e,c);return r(e)});w.prototype.unpickle=k(function(b,c){var d=m(b),e=h(d),l=m(c),k=h(l);p(a._olm_unpickle_session)(this.a,e,d.length,k,l.length)});w.prototype.create_outbound=k(function(b,c,d){var e=p(a._olm_create_outbound_session_random_length)(this.a),l=ba(e);c=m(c);d=m(d);\nvar k=h(c),q=h(d);p(a._olm_create_outbound_session)(this.a,b.a,k,c.length,q,d.length,l,e)});w.prototype.create_inbound=k(function(b,c){var d=m(c),e=h(d);p(a._olm_create_inbound_session)(this.a,b.a,e,d.length)});w.prototype.create_inbound_from=k(function(b,c,d){c=m(c);var e=h(c);d=m(d);var l=h(d);p(a._olm_create_inbound_session_from)(this.a,b.a,e,c.length,l,d.length)});w.prototype.session_id=k(function(){var b=p(a._olm_session_id_length)(this.a),c=h(b+q);p(a._olm_session_id)(this.a,c,b);return r(c)});\nw.prototype.has_received_message=function(){return p(a._olm_session_has_received_message)(this.a)?!0:!1};w.prototype.matches_inbound=k(function(b){b=m(b);var c=h(b);return p(a._olm_matches_inbound_session)(this.a,c,b.length)?!0:!1});w.prototype.matches_inbound_from=k(function(b,c){var d=m(b),e=h(d),l=m(c),k=h(l);return p(a._olm_matches_inbound_session_from)(this.a,e,d.length,k,l.length)?!0:!1});w.prototype.encrypt=k(function(b){var c,d,e;try{var h=p(a._olm_encrypt_random_length)(this.a),k=p(a._olm_encrypt_message_type)(this.a);\ne=a.lengthBytesUTF8(b);var m=p(a._olm_encrypt_message_length)(this.a,e),r=ba(h);c=u(e+1);a.stringToUTF8(b,c,e+1);d=u(m+q);p(a._olm_encrypt)(this.a,c,e,r,h,d,m);a.setValue(d+m,0,\"i8\");return{type:k,body:a.UTF8ToString(d)}}finally{void 0!==c&&(na(c,e+1),y(c)),void 0!==d&&y(d)}});w.prototype.decrypt=k(function(b,c){var d,e,h;try{d=u(c.length);a.writeAsciiToMemory(c,d,!0);h=p(a._olm_decrypt_max_plaintext_length)(this.a,b,d,c.length);a.writeAsciiToMemory(c,d,!0);e=u(h+q);var k=p(a._olm_decrypt)(this.a,\nb,d,c.length,e,h);a.setValue(e+k,0,\"i8\");return sa(e)}finally{void 0!==d&&y(d),void 0!==e&&(na(e,h+q),y(e))}});oa.prototype.free=function(){a._olm_clear_utility(this.a);y(this.a)};oa.prototype.sha256=k(function(b){var c=ya(a._olm_sha256_length)(this.a);b=m(b);var d=h(b),e=h(c+q);ya(a._olm_sha2516)(this.a,d,b.length(),e,c);return r(e)});oa.prototype.ed25519_verify=k(function(b,c,d){b=m(b);var e=h(b);c=m(c);var k=h(c);d=m(d);var n=h(d);ya(a._olm_ed25519_verify)(this.a,e,b.length,k,c.length,n,d.length)});\nN.Account=C;N.Session=w;N.Utility=oa;N.get_library_version=k(function(){var b=h(3);a._olm_get_library_version(b,b+1,b+2);return[W(b,\"i8\"),W(b+1,\"i8\"),W(b+2,\"i8\")]})})();\"undefined\"!==typeof module&&module.exports&&(module.exports=N);\"undefined\"!==typeof window&&(window.Olm=N);\n\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css new file mode 100644 index 0000000..8f04733 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css @@ -0,0 +1,9215 @@ +/* Open Sans lacks combining diacritics, so these will fall through + to the next font. Helevetica's diacritics however do not combine + nicely with Open Sans (on OSX, at least) and result in a huge + horizontal mess. Arial empirically gets it right, hence prioritising + Arial here. */ +/*** ImageView ***/ +#mx_theme_secondaryAccentColor { + color: #c0ffee ! important; +} +#mx_theme_tertiaryAccentColor { + color: #c0ffee ! important; +} +/*** ImageView ***/ +.mx_filterFlipColor { + -webkit-filter: invert(1); + filter: invert(1); +} +.gm-scrollbar .thumb { + -webkit-filter: invert(1); + filter: invert(1); +} +.mx_EventTile_content .markdown-body pre:hover { + border-color: #808080 !important; +} +.mx_EventTile_content .markdown-body pre, .mx_EventTile_content .markdown-body code { + -webkit-filter: invert(1); + filter: invert(1); + } +.mx_EventTile_content .markdown-body pre code { + -webkit-filter: none; + filter: none; + } +.mx_EventTile_content .markdown-body table tr { + background-color: #000000; + } +.mx_EventTile_content .markdown-body table tr:nth-child(2n) { + background-color: #080808; + } +.mx_LeftPanel { + border-right: 1px solid #454545; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +html { + /* hack to stop overscroll bounce on OSX and iOS. + N.B. Breaks things when we have legitimate horizontal overscroll */ + height: 100%; + overflow: hidden; +} +body { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 15px; + background-color: #2d2d2d; + color: #dddddd; + border: 0px; + margin: 0px; + /* This should render the fonts the same accross browsers */ + -webkit-font-smoothing: subpixel-antialiased; +} +div.error, div.warning { + color: #ff0064; +} +h2 { + color: #dddddd; + font-weight: 400; + font-size: 18px; + margin-top: 16px; + margin-bottom: 16px; +} +a:hover, a:link, a:visited { + color: #76CFA6; +} +input[type=text], input[type=password], textarea { + background-color: transparent; + color: #dddddd; +} +input[type=text].error, input[type=password].error { + border: 1px solid #ff0064; +} +input[type=text]:focus, input[type=password]:focus, textarea:focus { + border: 1px solid #76CFA6; + outline: none; + box-shadow: none; +} +/* Required by Firefox */ +textarea { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; +} +/* Prevent ugly dotted highlight around selected elements in Firefox */ +::-moz-focus-inner { + border: 0; +} +/* applied to side-panels and messagepanel when in RoomSettings */ +.mx_fadable { + opacity: 1; + transition: opacity 0.2s ease-in-out; +} +.mx_fadable.mx_fadable_faded { + opacity: 0.3; + pointer-events: none; +} +/* XXX: critical hack to GeminiScrollbar to allow them to work in FF 42 and Chrome 48. + Stop the scrollbar view from pushing out the container's overall sizing, which causes + flexbox to adapt to the new size and cause the view to keep growing. + */ +.gm-scrollbar-container .gm-scroll-view { + position: absolute; +} +/* Expand thumbs on hoverover */ +.gm-scrollbar { + border-radius: 5px ! important; +} +.gm-scrollbar.-vertical { + width: 6px; + transition: width 120ms ease-out ! important; +} +.gm-scrollbar.-vertical:hover, .gm-scrollbar.-vertical:active { + width: 8px; + transition: width 120ms ease-out ! important; +} +.gm-scrollbar.-horizontal { + height: 6px; + transition: height 120ms ease-out ! important; +} +.gm-scrollbar.-horizontal:hover, .gm-scrollbar.-horizontal:active { + height: 8px; + transition: height 120ms ease-out ! important; +} +#mx_theme_accentColor { + color: #76CFA6; +} +#mx_theme_secondaryAccentColor { + color: #2d2d2d; +} +#mx_theme_tertiaryAccentColor { + color: #454545; +} +.mx_Dialog_wrapper { + position: fixed; + z-index: 4000; + top: 0; + left: 0; + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +/* Spinner Dialog overide */ +.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { + width: auto; + border-radius: 8px; + padding: 0px; + box-shadow: none; +} +/* View Source Dialog overide */ +.mx_Dialog_wrapper.mx_Dialog_viewsource .mx_Dialog { + padding-left: 10px; + padding-right: 10px; +} +.mx_Dialog { + background-color: #2d2d2d; + color: #747474; + z-index: 4010; + font-weight: 300; + font-size: 15px; + position: relative; + padding-left: 58px; + padding-bottom: 36px; + width: 60%; + max-width: 704px; + box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2); + max-height: 80%; + overflow-y: auto; +} +.mx_Dialog_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #000; + opacity: 0.8; +} +.mx_Dialog_lightbox .mx_Dialog_background { + opacity: 0.85; + background-color: #000; +} +.mx_Dialog_lightbox .mx_Dialog { + border-radius: 0px; + background-color: transparent; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + pointer-events: none; +} +.mx_Dialog_cancelButton { + position: absolute; + right: 11px; + top: 13px; + cursor: pointer; +} +.mx_Dialog_cancelButton object { + pointer-events: none; +} +.mx_Dialog_content { + margin: 24px 58px 68px 0; + font-size: 14px; + color: #dddddd; + word-wrap: break-word; +} +.mx_Dialog_buttons { + padding-right: 58px; + text-align: right; +} +.mx_Dialog button, .mx_Dialog input[type="submit"] { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin-left: 0px; + margin-right: 8px; + font-weight: 600; + border: 1px solid #76CFA6 ! important; + color: #76CFA6; + background-color: #2d2d2d; +} +.mx_Dialog button:hover, .mx_Dialog input[type="submit"]:hover { +} +.mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { + -webkit-filter: brightness(200%); + filter: brightness(200%); +} +.mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { + color: #2d2d2d; + background-color: #76CFA6; +} +.mx_Dialog button.danger, .mx_Dialog input[type="submit"].danger { + background-color: #ff0064; + border: solid 1px #ff0064; + color: #2d2d2d; +} +.mx_Dialog button:disabled, .mx_Dialog input[type="submit"]:disabled { + background-color: #747474; + border: solid 1px #747474; + opacity: 0.7; +} +.mx_Dialog_title { + min-height: 16px; + padding-top: 40px; + font-weight: bold; + font-size: 22px; + line-height: 1.4; + color: #dddddd; +} +.mx_Dialog_title.danger { + color: #ff0064; +} +.mx_TextInputDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_TextInputDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; +} +.mx_emojione { + height: 1em; + vertical-align: middle; +} +.mx_emojione_selected { + background-color: #76CFA6; +} +::-moz-selection { + background-color: #76CFA6; + color: #dddddd; +} +::selection { + background-color: #76CFA6; + color: #dddddd; +} +.mx_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; +} +.mx_textButton:hover { +} +.mx_button_row { + margin-top: 69px; +} +.mx_Beta { + color: red; + margin-right: 10px; + position: relative; + top: -3px; + background-color: white; + padding: 0 4px; + border-radius: 3px; + border: 1px solid darkred; + cursor: help; + transition-duration: 200ms; + font-size: smaller; + -webkit-filter: opacity(0.5); + filter: opacity(0.5); +} +.mx_Beta:hover { + color: white; + border: 1px solid gray; + background-color: darkred; +} +.mx_TintableSvgButton { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-line-pack: center; + align-content: center; +} +.mx_TintableSvgButton object { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; +} +.mx_TintableSvgButton span { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 0; + cursor: pointer; +} +/* + * Open Sans + * Includes extended Latin, Greek, Cyrillic and Vietnamese character sets + */ +/* the 'src' links are relative to the bundle.css, which is in a subdirectory. + */ +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); + font-weight: 400; + font-style: italic; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); + font-weight: 600; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); + font-weight: 600; + font-style: italic; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); + font-weight: 700; + font-style: italic; +} +/* + * Fira Mono + * Used for monospace copy, i.e. code + */ +@font-face { + font-family: 'Fira Mono'; + src: url('../../fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Fira Mono'; + src: url('../../fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} +.mx_CompatibilityPage { + width: 100%; + height: 100%; + background-color: #e55; +} +.mx_CompatibilityPage_box { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 500px; + height: 300px; + border: 1px solid; + padding: 10px; + background-color: #fcc; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ContextualMenu_wrapper { + position: fixed; + z-index: 5000; +} +.mx_ContextualMenu_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1.0; + z-index: 5000; +} +.mx_ContextualMenu { + border: solid 1px rgba(187, 187, 187, 0.5); + border-radius: 4px; + background-color: #373737; + color: #dddddd; + position: absolute; + padding: 6px; + font-size: 14px; + z-index: 5001; +} +.mx_ContextualMenu.mx_ContextualMenu_right { + right: 8px; +} +.mx_ContextualMenu_chevron_right { + position: absolute; + right: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-left: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_chevron_right:after { + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-left: 7px solid #373737; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + right: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_left { + left: 8px; +} +.mx_ContextualMenu_chevron_left { + position: absolute; + left: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_chevron_left:after{ + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #373737; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + left: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_top { + top: 8px; +} +.mx_ContextualMenu_chevron_top { + position: absolute; + left: 0px; + top: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-bottom: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid transparent; +} +.mx_ContextualMenu_chevron_top:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-bottom: 7px solid #373737; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + top: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_bottom { + bottom: 8px; +} +.mx_ContextualMenu_chevron_bottom { + position: absolute; + left: 0px; + bottom: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-top: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid transparent; +} +.mx_ContextualMenu_chevron_bottom:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-top: 7px solid #373737; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + bottom: 1px; +} +.mx_ContextualMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} +.mx_ContextualMenu_spinner { + display: block; + margin: 0 auto; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateRoom { + width: 960px; + margin-left: auto; + margin-right: auto; + color: #dddddd; +} +.mx_CreateRoom input, .mx_CreateRoom textarea { + border-radius: 3px; + border: 1px solid #656565; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-top: 6px; +} +.mx_CreateRoom_description { + width: 330px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_FilePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + width: 100%; + + overflow-y: auto; +} +.mx_FilePanel .mx_RoomView_messageListWrapper { + margin-right: 20px; +} +.mx_FilePanel .mx_RoomView_MessageList h2 { + display: none; +} +/* FIXME: rather than having EventTile's default CSS be for MessagePanel, + we should make EventTile a base CSS class and customise it specifically + for usage in {Message,File,Notification}Panel. */ +.mx_FilePanel .mx_EventTile_avatar { + display: none; +} +/* Overrides for the attachment body tiles */ +.mx_FilePanel .mx_EventTile { + word-break: break-word; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody { + margin-right: 0px; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_download { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 14px; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + color: #747474; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody_size { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + font-size: 11px; + text-align: right; + white-space: nowrap; +} +/* Overides for the sender details line */ +.mx_FilePanel .mx_EventTile_senderDetails { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: -2px; +} +.mx_FilePanel .mx_EventTile_senderDetailsLink { + text-decoration: none; +} +.mx_FilePanel .mx_EventTile .mx_SenderProfile { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + line-height: initial; + padding: 0px; + font-size: 11px; + opacity: 1.0; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MessageTimestamp { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + text-align: right; + visibility: visible; + position: initial; + font-size: 11px; + opacity: 1.0; + color: #acacac; +} +/* Overrides for the wrappers around the body tile */ +.mx_FilePanel .mx_EventTile_line { + margin-right: 0px; + padding-left: 0px; +} +.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #2d2d2d; +} +.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupView { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow: hidden; +} +.mx_GroupView_error { + margin: auto; +} +.mx_GroupView_header { + max-width: 960px; + min-height: 70px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-bottom: 10px; +} +.mx_GroupView_header_view { + border-bottom: 1px solid #474747; + padding-bottom: 0px; +} +.mx_GroupView_header_avatar, .mx_GroupView_header_info { + display: table-cell; + vertical-align: middle; +} +.mx_GroupHeader_button { + margin-left: 12px; + cursor: pointer; +} +.mx_GroupHeader_button object { + pointer-events: none; +} +.mx_GroupView_editable { + border-bottom: 1px solid #656565 ! important; + min-width: 150px; + cursor: text; +} +.mx_GroupView_editable:focus { + border-bottom: 1px solid #76CFA6 ! important; + outline: none; + box-shadow: none; +} +.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable) { + color: #76CFA6; + cursor: pointer; +} +.mx_GroupView_avatarPicker { + position: relative; +} +.mx_GroupView_avatarPicker_edit { + position: absolute; + top: 50px; + left: 15px; +} +.mx_GroupView_avatarPicker .mx_Spinner { + width: 48px; + height: 48px ! important; +} +.mx_GroupView_header_leftCol { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + overflow: hidden; +} +.mx_GroupView_header_rightCol { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_GroupView_textButton { + display: inline-block; +} +.mx_GroupView_header_groupid { + font-weight: normal; + font-size: initial; + padding-left: 10px; +} +.mx_GroupView_header_name { + vertical-align: middle; + width: 100%; + height: 31px; + overflow: hidden; + color: #dddddd; + font-weight: bold; + font-size: 22px; + padding-left: 19px; + padding-right: 16px; + /* why isn't text-overflow working? */ + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_GroupView_header_shortDesc { + vertical-align: bottom; + float: left; + max-height: 42px; + color: #a2a2a2; + font-weight: 300; + font-size: 13px; + padding-left: 19px; + margin-right: 16px; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_GroupView_avatarPicker_label { + cursor: pointer; +} +.mx_GroupView_cancelButton { + padding-left: 8px; +} +.mx_GroupView_cancelButton img { + position: relative; + top: 5px; +} +.mx_GroupView input[type='radio'] { + margin: 10px 10px 0px 10px; +} +.mx_GroupView_label_text { + display: inline-block; + max-width: 80%; + vertical-align: 0.1em; + line-height: 2em; +} +.mx_GroupView_body { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_GroupView_rooms { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 200px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView h3 { + text-transform: uppercase; + color: #dddddd; + font-weight: 600; + font-size: 13px; + margin-bottom: 10px; +} +.mx_GroupView_rooms_header .mx_AccessibleButton { + padding-left: 14px; + margin-bottom: 14px; + height: 24px; +} +.mx_GroupView_group { + border-top: 1px solid #474747; +} +.mx_GroupView_group_disabled { + opacity: 0.3; + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_button { + display: inline-block; +} +.mx_GroupView_rooms_header_addRow_button object { + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_label { + display: inline-block; + vertical-align: top; + line-height: 24px; + padding-left: 28px; + color: #76CFA6; +} +.mx_GroupView_rooms .mx_RoomDetailList { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-top: 1px solid #474747; + padding-top: 10px; + word-break: break-word; +} +.mx_GroupView .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_GroupView_membershipSection { + color: #888; + margin-top: 10px; +} +.mx_GroupView_membershipSubSection { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupView_membershipSubSection .mx_Spinner { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_GroupView_membershipSection_description { + /* To match textButton */ + line-height: 34px; +} +.mx_GroupView_membershipSection_description .mx_BaseAvatar { + margin-right: 10px; +} +.mx_GroupView_membershipSection .mx_GroupView_textButton { + margin-right: 0px; + margin-top: 0px; + margin-left: 8px; +} +.mx_GroupView_memberSettings_toggle label { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView_memberSettings input { + margin-right: 6px; +} +.mx_GroupView_featuredThings { + margin-top: 20px; +} +.mx_GroupView_featuredThings_header { + font-weight: bold; + font-size: 120%; + margin-bottom: 20px; +} +.mx_GroupView_featuredThings_category { + font-weight: bold; + font-size: 110%; + margin-top: 10px; +} +.mx_GroupView_featuredThings_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupView_featuredThings_addButton, .mx_GroupView_featuredThing { + display: table-cell; + text-align: center; + + width: 100px; + margin: 0px 20px; +} +.mx_GroupView_featuredThing { + position: relative; +} +.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton { + position: absolute; + top: -7px; + right: 11px; + opacity: 0.4; +} +.mx_GroupView_featuredThing .mx_BaseAvatar { + /* To prevent misalignment with mx_TintableSvg (in addButton) */ + vertical-align: initial; +} +.mx_GroupView_featuredThings_addButton object { + pointer-events: none; +} +.mx_GroupView_featuredThing_name { + word-wrap: break-word; +} +.mx_GroupView_uploadInput { + display: none; +} +.mx_GroupView_body .gm-scroll-view > *{ + margin: 11px 50px 0px 68px; +} +.mx_GroupView_groupDesc textarea { + width: 100%; + max-width: 100%; + height: 150px; +} +.mx_GroupView_groupDesc_placeholder, .mx_GroupView_changeDelayWarning { + background-color: #454545; + color: #888; + border-radius: 10px; + text-align: center; + + margin: 20px 0px; +} +.mx_GroupView_groupDesc_placeholder { + padding: 100px 20px; + cursor: pointer; +} +.mx_GroupView_changeDelayWarning { + padding: 40px 20px; +} +/* +Copyright 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_HomePage { + max-width: 960px; + width: 100%; + height: 100%; + margin-left: auto; + margin-right: auto; +} +.mx_HomePage iframe { + display: block; + width: 100%; + height: 100%; + border: 0px; +} +.mx_HomePage_body { +} +.mx_HomePage_guest_warning { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #2d2d2d; + border: 1px solid #76CFA6; + margin: 20px; + padding: 20px 40px; + border-radius: 5px; +} +.mx_HomePage_guest_warning img { + padding-right: 10px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LeftPanel { + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_LeftPanel_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + /* LeftPanel 235px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 235px; + flex: 0 0 235px; +} +.mx_LeftPanel_container.mx_LeftPanel_container_hasTagPanel { + /* TagPanel 60px + LeftPanel 235px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 295px; + flex: 0 0 295px; +} +.mx_LeftPanel_container_collapsed { + /* Collapsed LeftPanel 60px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; +} +.mx_LeftPanel_container_collapsed.mx_LeftPanel_container_hasTagPanel { + /* TagPanel 60px + Collapsed LeftPanel 60px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 120px; + flex: 0 0 120px; +} +.mx_LeftPanel_hideButton { + position: absolute; + top: 10px; + right: 0px; + padding: 8px; + cursor: pointer; +} +.mx_LeftPanel_callView { + +} +.mx_LeftPanel .mx_AppTile_mini { + height: 132px; +} +.mx_LeftPanel .mx_RoomList_scrollbar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + overflow-y: auto; + z-index: 6; +} +.mx_LeftPanel.collapsed .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 160px; + flex: 0 0 160px; + margin-bottom: 9px; +} +.mx_LeftPanel .mx_BottomLeftMenu { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + border-top: 1px solid rgba(118, 207, 166, 0.2); + margin-left: 16px; /* gutter */ + margin-right: 16px; /* gutter */ + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; + z-index: 1; +} +.mx_LeftPanel .mx_BottomLeftMenu_options { + margin-top: 18px; +} +.mx_BottomLeftMenu_options object { + pointer-events: none; +} +.collapsed .mx_RoleButton { + margin-right: 0px ! important; + padding-top: 3px ! important; + padding-bottom: 3px ! important; +} +.mx_BottomLeftMenu_options > div { + display: inline-block; +} +.mx_BottomLeftMenu_options .mx_RoleButton { + margin-left: 0px; + margin-right: 10px; + height: 30px; +} +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings { + float: right; +} +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings .mx_RoleButton { + margin-right: 0px; +} +.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings { + float: none; +} +.mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 50px; + flex: 0 0 50px; + } +.mx_MatrixChat_useCompactLayout .mx_LeftPanel.collapsed .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 160px; + flex: 0 0 160px; + } +.mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu_options { + margin-top: 12px; + } +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LoginBox { + min-height: 24px; + height: unset !important; + padding-top: 13px !important; + padding-bottom: 14px !important; + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_LoginBox_loginButton_wrapper { + text-align: center; + width: 100%; +} +.mx_LoginBox_loginButton, .mx_LoginBox_registerButton { + margin-top: 3px; + height: 40px; + border: 0px; + border-radius: 40px; + margin-left: 4px; + margin-right: 4px; + min-width: 80px; + + background-color: #76CFA6; + color: #2d2d2d; + + cursor: pointer; + + font-size: 15px; + padding: 0 11px; + word-break: break-word; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MatrixChat_splash { + position: relative; + height: 100%; +} +.mx_MatrixChat_splashButtons { + text-align: center; + width: 100%; + position: absolute; + bottom: 30px; +} +.mx_MatrixChat_wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; + + width: 100%; + height: 100%; +} +.mx_MatrixToolbar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + height: 40px; +} +.mx_MatrixChat_toolbarShowing { + height: auto; +} +.mx_MatrixChat { + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-ordinal-group: 3; + + -ms-flex-order: 2; + + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; +} +.mx_MatrixChat_syncError { + color: #2d2d2d; + background-color: #DF2A8B; + border-radius: 5px; + display: table; + padding: 30px; + position: absolute; + top: 100px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} +.mx_MatrixChat .mx_LeftPanel { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + background-color: #2d2d2d; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 235px; + + flex: 0 0 235px; +} +.mx_MatrixChat .mx_LeftPanel.collapsed { + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; +} +.mx_MatrixChat .mx_MatrixChat_middlePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + padding-left: 20px; + padding-right: 22px; + background-color: #2d2d2d; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; + + /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 + and https://github.com/vector-im/vector-web/issues/946. + Empirically this stops the MessagePanel's width exploding outwards when + gemini is in 'prevented' mode + */ + overflow-x: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + /* To fix https://github.com/vector-im/riot-web/issues/3298 where Safari + needed height 100% all the way down to the HomePage. Height does not + have to be auto, empirically. + */ + height: 100%; +} +.mx_MatrixChat .mx_RightPanel { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 235px; + + flex: 0 0 235px; +} +.mx_MatrixChat .mx_RightPanel.collapsed { + -webkit-box-flex: 0; + -ms-flex: 0 0 122px; + flex: 0 0 122px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MyGroups { + max-width: 960px; + margin-left: auto; + margin-right: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MyGroups .mx_RoomHeader_simpleHeader { + margin-left: 0px; +} +.mx_MyGroups_header { + /* Keep mid-point of create button aligned with icon in page header */ + margin-left: 2px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_MyGroups_headerCard { + -webkit-box-flex: 1; + -ms-flex: 1 0 50%; + flex: 1 0 50%; + margin-bottom: 30px; + min-width: 400px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { + margin-right: 13px; + height: 50px; +} +.mx_MyGroups_headerCard_button object { + /* Otherwise the SVG object absorbs clicks and the button doesn't work */ + pointer-events: none; +} +.mx_MyGroups_headerCard_header { + font-weight: bold; + margin-bottom: 10px; +} +.mx_MyGroups_headerCard_content { + padding-right: 15px; +} +/* Until the button is wired up */ +.mx_MyGroups_joinBox { + visibility: hidden; + + /* When joinBox wraps onto its own row, it should take up zero height so + that there isn't an awkward gap between MyGroups_createBox and + MyGroups_content. + */ + height: 0px; + margin: 0px; +} +.mx_MyGroups_content { + margin-left: 2px; + + -webkit-box-flex: 1; + + -ms-flex: 1 0 0px; + + flex: 1 0 0; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MyGroups_placeholder { + background-color: #454545; + color: #888; + line-height: 400px; + border-radius: 10px; + text-align: center; +} +.mx_MyGroups_joinedGroups { + border-top: 1px solid #474747; + overflow-x: hidden; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-flow: wrap; + flex-flow: wrap; + -ms-flex-line-pack: start; + align-content: flex-start; +} +.mx_MyGroups_joinedGroups .mx_GroupTile { + min-width: 300px; + max-width: 33%; + -webkit-box-flex: 1; + -ms-flex: 1 0 300px; + flex: 1 0 300px; + height: 75px; + margin: 10px 0px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; +} +.mx_GroupTile_avatar { + cursor: -webkit-grab, -webkit-grab; + cursor: grab, -webkit-grab; +} +.mx_GroupTile_profile { + margin-left: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_GroupTile_profile .mx_GroupTile_name, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_desc { + padding-right: 10px; +} +.mx_GroupTile_profile .mx_GroupTile_name { + margin: 0px; + font-size: 15px; +} +.mx_GroupTile_profile .mx_GroupTile_groupId { + font-size: 13px; +} +.mx_GroupTile_profile .mx_GroupTile_desc { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + font-size: 13px; + max-height: 36px; + overflow: hidden; +} +.mx_GroupTile_profile .mx_GroupTile_groupId { + opacity: 0.7; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NotificationPanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + width: 100%; + + overflow-y: auto; +} +.mx_NotificationPanel .mx_RoomView_messageListWrapper { + margin-right: 20px; +} +.mx_NotificationPanel .mx_RoomView_MessageList h2 { + margin-left: 0px; +} +/* FIXME: rather than having EventTile's default CSS be for MessagePanel, + we should make EventTile a base CSS class and customise it specifically + for usage in {Message,File,Notification}Panel. */ +.mx_NotificationPanel .mx_EventTile { + word-break: break-word; +} +.mx_NotificationPanel .mx_EventTile_roomName { + font-weight: bold; + font-size: 14px; +} +.mx_NotificationPanel .mx_EventTile_roomName a { + color: #dddddd; +} +.mx_NotificationPanel .mx_EventTile_avatar { + top: 8px; + left: 0px; +} +.mx_NotificationPanel .mx_EventTile .mx_SenderProfile, .mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { + color: #dddddd; + font-size: 12px; + display: inline; + padding-left: 0px; +} +.mx_NotificationPanel .mx_EventTile_senderDetails { + padding-left: 32px; + padding-top: 8px; + position: relative; +} +.mx_NotificationPanel .mx_EventTile_roomName a, .mx_NotificationPanel .mx_EventTile_senderDetails a { + text-decoration: none ! important; +} +.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { + visibility: visible; + position: initial; + display: inline; +} +.mx_NotificationPanel .mx_EventTile_line { + margin-right: 0px; + padding-left: 32px; + padding-top: 0px; + padding-bottom: 0px; + padding-right: 0px; +} +.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #2d2d2d; +} +.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0px; +} +.mx_NotificationPanel .mx_EventTile_content { + margin-right: 0px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RightPanel { + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RightPanel_header { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + border-bottom: 1px solid #474747; + margin-right: 20px; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +/** Fixme - factor this out with the main header **/ +.mx_RightPanel_headerButtonGroup { + margin-top: 6px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + background-color: #2d2d2d; + margin-left: 0px; +} +.mx_RightPanel_headerButton { + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + vertical-align: top; + padding-left: 4px; + padding-right: 5px; + text-align: center; + position: relative; +} +.mx_RightPanel_headerButton object { + pointer-events: none; + padding-bottom: 3px; +} +.mx_RightPanel_headerButton_highlight { + width: 25px; + height: 5px; + border-radius: 5px; + background-color: #76CFA6; + opacity: 0.2; +} +.mx_RightPanel_headerButton_badge { + font-size: 11px; + color: #76CFA6; + font-weight: bold; + padding-bottom: 2px; +} +.mx_RightPanel_collapsebutton { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + margin-top: 20px; +} +.mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel .mx_GroupRoomList, .mx_RightPanel_blank { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RightPanel .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + margin: auto; +} +.mx_RightPanel_footer { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + border-top: 1px solid #474747; + margin-right: 20px; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 60px; + + flex: 0 0 60px; +} +.mx_RightPanel_footer .mx_RightPanel_invite { + font-size: 14px; + color: #dddddd; + padding-top: 13px; + padding-left: 5px; + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.collapsed .mx_RightPanel_footer .mx_RightPanel_invite { + display: none; +} +.mx_RightPanel_invite .mx_RightPanel_icon object { + pointer-events: none; +} +.mx_RightPanel_invite .mx_RightPanel_message { + padding-left: 10px; + line-height: 18px; +} +.mx_MatrixChat_useCompactLayout .mx_RightPanel_footer { + -webkit-box-flex: 0; + -ms-flex: 0 0 50px; + flex: 0 0 50px; + } +.mx_MatrixChat_useCompactLayout .mx_RightPanel_footer .mx_RightPanel_invite { + line-height: 25px; + padding-top: 8px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomDirectory { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + margin-bottom: 12px; + color: #dddddd; + word-break: break-word; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomDirectory .mx_RoomHeader_simpleHeader { + margin-left: 0px; +} +.mx_RoomDirectory_list { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomDirectory_list .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomDirectory_listheader { + display: table; + table-layout: fixed; + width: 100%; + margin-top: 12px; + margin-bottom: 12px; + border-spacing: 5px; +} +.mx_RoomDirectory_searchbox { + display: table-cell; + vertical-align: middle; +} +.mx_RoomDirectory_listheader .mx_NetworkDropdown { + display: table-cell; + width: 200px; +} +.mx_RoomDirectory_tableWrapper { + overflow-y: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RoomDirectory_table { + font-size: 14px; + color: #dddddd; + width: 100%; + text-align: left; + table-layout: fixed; +} +.mx_RoomDirectory_roomAvatar { + width: 24px; + padding-left: 12px; + padding-right: 24px; + vertical-align: top; +} +.mx_RoomDirectory_roomDescription { + padding-bottom: 16px; +} +.mx_RoomDirectory_name { + display: inline-block; + font-weight: 600; +} +.mx_RoomDirectory_perms { + display: inline-block; +} +.mx_RoomDirectory_perm { + display: inline; + padding-left: 5px; + padding-right: 5px; + margin-right: 5px; + height: 15px; + border-radius: 11px; + background-color: #474747; + text-transform: uppercase; + font-weight: 600; + font-size: 11px; + color: #76CFA6; +} +.mx_RoomDirectory_topic { + cursor: initial; +} +.mx_RoomDirectory_alias { + font-size: 12px; + color: #a2a2a2; +} +.mx_RoomDirectory_roomMemberCount { + text-align: right; + width: 100px; + padding-right: 10px; +} +.mx_RoomDirectory_table tr { + padding-bottom: 10px; + cursor: pointer; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomStatusBar { + margin-left: 65px; + min-height: 50px; +} +/* position the indicator in the same place horizontally as .mx_EventTile_avatar. */ +.mx_RoomStatusBar_indicator { + padding-left: 17px; + padding-right: 12px; + margin-left: -73px; + margin-top: 15px; + float: left; + width: 24px; + text-align: center; +} +.mx_RoomStatusBar_callBar { + height: 50px; + line-height: 50px; +} +.mx_RoomStatusBar_placeholderIndicator span { + color: #dddddd; + opacity: 0.5; + position: relative; + top: -4px; +/* + animation-duration: 1s; + animation-name: bounce; + animation-direction: alternate; + animation-iteration-count: infinite; +*/ +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(2) { + -webkit-animation-delay: 0.6s; + animation-delay: 0.6s; +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(3) { + -webkit-animation-delay: 0.9s; + animation-delay: 0.9s; +} +@-webkit-keyframes bounce { + from { + opacity: 0.5; + top: 0; + } + + to { + opacity: 0.2; + top: -3px; + } +} +@keyframes bounce { + from { + opacity: 0.5; + top: 0; + } + + to { + opacity: 0.2; + top: -3px; + } +} +.mx_RoomStatusBar_typingIndicatorAvatars { + width: 52px; + margin-top: -1px; + text-align: left; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { + margin-right: -12px; + border: 1px solid #2d2d2d; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { + padding-left: 1px; + padding-top: 1px; +} +.mx_RoomStatusBar_typingIndicatorRemaining { + display: inline-block; + color: #acacac; + background-color: #ddd; + border: 1px solid #2d2d2d; + border-radius: 40px; + width: 24px; + height: 24px; + line-height: 24px; + font-size: 0.8em; + vertical-align: top; + text-align: center; + position: absolute; +} +.mx_RoomStatusBar_scrollDownIndicator { + cursor: pointer; + padding-left: 1px; +} +.mx_RoomStatusBar_unreadMessagesBar { + padding-top: 10px; + color: #ff0064; + cursor: pointer; +} +.mx_RoomStatusBar_connectionLostBar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + margin-top: 19px; + min-height: 58px; +} +.mx_RoomStatusBar_connectionLostBar img { + padding-left: 10px; + padding-right: 22px; + vertical-align: middle; + float: left; +} +.mx_RoomStatusBar_connectionLostBar_title { + color: #ff0064; +} +.mx_RoomStatusBar_connectionLostBar_desc { + color: #dddddd; + font-size: 13px; + opacity: 0.5; + padding-bottom: 20px; +} +.mx_RoomStatusBar_resend_link { + color: #dddddd ! important; + text-decoration: underline ! important; + cursor: pointer; +} +.mx_RoomStatusBar_typingBar { + height: 50px; + line-height: 50px; + + color: #dddddd; + opacity: 0.5; + overflow-y: hidden; + display: block; +} +.mx_RoomStatusBar_isAlone { + height: 50px; + line-height: 50px; + + color: #dddddd; + opacity: 0.5; + overflow-y: hidden; + display: block; +} +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar { + min-height: 40px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator { + margin-top: 10px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_callBar { + height: 40px; + line-height: 40px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar { + height: 40px; + line-height: 40px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomSubList { + display: table; + table-layout: fixed; + width: 100%; + + background-color: rgba(0, 0, 0, 0.2); +} +.mx_RoomSubList_labelContainer { + height: 31px; /* mx_RoomSubList_label height including border */ + width: 235px; /* LHS Panel width */ + position: relative; +} +.mx_RoomSubList_label { + position: relative; + text-transform: uppercase; + color: #dddddd; + font-weight: 600; + font-size: 12px; + width: 203px; /* padding + width = LHS Panel width */ + height: 19px; /* height + padding = 31px = mx_RoomSubList_label height */ + padding-left: 16px; /* gutter */ + padding-right: 16px; /* gutter */ + padding-top: 6px; + padding-bottom: 6px; + cursor: pointer; + background-color: #2d2d2d; +} +.mx_RoomSubList_label.mx_RoomSubList_fixed { + position: fixed; + top: 0; + z-index: 5; + /* pointer-events: none; */ +} +.collapsed .mx_RoomSubList_label { + height: 17px; + width: 28px; /* collapsed LHS Panel width */ +} +.collapsed .mx_RoomSubList_labelContainer { + width: 28px; /* collapsed LHS Panel width */ +} +.mx_RoomSubList_roomCount { + display: inline-block; + font-size: 12px; + font-weight: normal; + color: #76CFA6; + padding-left: 5px; + text-transform: none; +} +.collapsed .mx_RoomSubList_roomCount { + display: none; +} +.mx_RoomSubList_badge { + display: inline-block; + min-width: 15px; + height: 15px; + position: absolute; + right: 8px; /*gutter */ + top: 7px; + border-radius: 8px; + color: #2d2d2d; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; + background-color: #76CFA6; +} +.mx_RoomSubList_label .mx_RoomSubList_badge:hover { + -webkit-filter: brightness(200%); + filter: brightness(200%); +} +/* +.collapsed .mx_RoomSubList_badge { + display: none; +} +*/ +.mx_RoomSubList_badgeHighlight { + background-color: #ff0064; +} +/* This is the bottom of the speech bubble */ +.mx_RoomSubList_badgeHighlight:after { + content: ""; + position: absolute; + display: block; + width: 0; + height: 0; + margin-left: 5px; + border-top: 5px solid #ff0064; + border-right: 7px solid transparent; +} +/* Hide the bottom of speech bubble */ +.collapsed .mx_RoomSubList_badgeHighlight:after { + display: none; +} +.mx_RoomSubList_chevron { + pointer-events: none; + position: absolute; + right: 41px; + top: 11px; +} +.mx_RoomSubList_chevronDown { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #76CFA6; +} +.mx_RoomSubList_chevronUp { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 6px solid #76CFA6; +} +.mx_RoomSubList_chevronRight { + width: 0; + height: 0; + border-top: 5px solid transparent; + border-left: 6px solid #76CFA6; + border-bottom: 5px solid transparent; +} +/* The overflow section */ +.mx_RoomSubList_ellipsis { + display: block; + line-height: 11px; + height: 18px; + position: relative; + cursor: pointer; + font-size: 13px; + + background-color: #2d2d2d; +} +.collapsed .mx_RoomSubList_ellipsis { + height: 20px; +} +.mx_RoomSubList_line { + display: inline-block; + width: 159px; + border-top: dotted 2px #76CFA6; + vertical-align: middle; +} +.collapsed .mx_RoomSubList_line { + display: none; +} +.mx_RoomSubList_more { + display: inline-block; + text-transform: uppercase; + font-size: 10px; + font-weight: 600; + text-align: left; + color: #76CFA6; + padding-left: 7px; + padding-right: 7px; + padding-left: 7px; + vertical-align: middle; +} +.collapsed .mx_RoomSubList_more { + display: none; +} +.mx_RoomSubList_moreBadge { + display: inline-block; + min-width: 15px; + height: 13px; + position: absolute; + right: 8px; /*gutter */ + top: -2px; + border-radius: 8px; + border: solid 1px #76CFA6; + color: #2d2d2d; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 3px; + padding-right: 3px; + background-color: #2d2d2d; + vertical-align: middle; +} +.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeNotify { + background-color: #76CFA6; + border: 0; + padding-top: 3px; + padding-left: 4px; + padding-right: 4px; +} +.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeHighlight { + background-color: #ff0064; + border: 0; + padding-top: 3px; + padding-left: 4px; + padding-right: 4px; +} +.collapsed .mx_RoomSubList_moreBadge { + position: static; + margin-left: 16px; + margin-top: 2px; +} +.mx_RoomSubList_ellipsis .mx_RoomSubList_chevronDown { + position: relative; + top: 4px; + left: 2px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomView { + word-wrap: break-word; + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + width: 100%; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomView .mx_RoomHeader { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +.mx_RoomView_fileDropTarget { + min-width: 0px; + max-width: 960px; + width: 100%; + font-size: 18px; + text-align: center; + + pointer-events: none; + + padding-left: 12px; + padding-right: 12px; + margin-left: -12px; + + border-top-left-radius: 10px; + border-top-right-radius: 10px; + + background-color: rgba(45,45,45,0.5); + border: 2px #e1dddd solid; + border-bottom: none; + position: absolute; + top: 70px; + bottom: 0px; + z-index: 3000; +} +.mx_RoomView_fileDropTargetLabel { + top: 50%; + width: 100%; + margin-top: -50px; + position: absolute; +} +.mx_RoomView_auxPanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + min-width: 0px; + max-width: 960px; + width: 100%; + margin: 0px auto; + + overflow: auto; + border-bottom: 1px solid #474747; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 auto; + + flex: 0 0 auto; +} +.mx_RoomView_auxPanel_apps { + max-width: 1920px ! important; +} +.mx_RoomView_body { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomView_body .mx_RoomView_topUnreadMessagesBar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; +} +.mx_RoomView_body .mx_RoomView_messagePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_RoomView_body .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + margin: auto; +} +.mx_RoomView_body .mx_RoomView_statusArea { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; +} +.mx_RoomView_body .mx_MessageComposer { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_RoomView_messagePanel { + width: 100%; + overflow-y: auto; +} +.mx_RoomView_messageListWrapper { + max-width: 960px; + margin: auto; + + min-height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; + + -webkit-box-pack: end; + + -ms-flex-pack: end; + + justify-content: flex-end; +} +.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomView_empty { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + font-size: 13px; + padding-left: 3em; + padding-right: 3em; + margin-right: 20px; + margin-top: 33%; + text-align: center; +} +.mx_RoomView_MessageList { + width: 100%; + list-style-type: none; + padding: 0px; +} +.mx_RoomView_MessageList li { + clear: both; +} +li.mx_RoomView_myReadMarker_container { + height: 0px; + margin: 0px; + padding: 0px; + border: 0px; +} +hr.mx_RoomView_myReadMarker { + border-top: solid 1px #76CFA6; + border-bottom: solid 1px #76CFA6; + margin-top: 0px; + position: relative; + top: -1px; + z-index: 1; +} +.mx_RoomView_statusArea { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + + max-height: 0px; + background-color: #2d2d2d; + z-index: 1000; + overflow: hidden; + + transition: all .2s ease-out; +} +.mx_RoomView_statusArea_expanded { + max-height: 100px; +} +.mx_RoomView_statusAreaBox { + max-width: 960px; + margin: auto; + min-height: 50px; +} +.mx_RoomView_statusAreaBox_line { + margin-left: 65px; + border-top: 1px solid #474747; + height: 1px; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { + background-color: #2d2d2d; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { + color: #2d2d2d; + opacity: 1.0; +} +.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line { + margin-top: 2px; + border: none; + height: 0px; +} +.mx_RoomView_inCall .mx_MessageComposer_wrapper { + border-top: 2px hidden; + padding-top: 1px; +} +.mx_RoomView_inCall .mx_RoomView_statusAreaBox { + background-color: #76CFA6; + color: #2d2d2d; + position: relative; +} +.mx_RoomView_voipChevron { + position: absolute; + bottom: -11px; + right: 11px; +} +.mx_RoomView_voipButton { + float: right; + margin-right: 13px; + margin-top: 10px; + cursor: pointer; +} +.mx_RoomView_voipButton object { + pointer-events: none; +} +.mx_RoomView .mx_MessageComposer { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 2px; +} +.mx_RoomView_ongoingConfCallNotification { + width: 100%; + text-align: center; + background-color: #ff0064; + color: #2d2d2d; + font-weight: bold; + padding: 6px 0; + cursor: pointer; +} +.mx_RoomView_ongoingConfCallNotification a { + color: #2d2d2d ! important; +} +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList { + margin-bottom: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox { + min-height: 42px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchBox { + height: 24px; + margin-left: 16px; + margin-right: 16px; + padding-top: 24px; + padding-bottom: 22px; + + border-bottom: 1px solid rgba(118, 207, 166, 0.2); + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; +} +.mx_SearchBox_searchButton { + margin-right: 10px; + margin-top: 5px; + pointer-events: none; +} +.mx_SearchBox_closeButton { + cursor: pointer; + margin-top: -5px; +} +.mx_SearchBox_search { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 0px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 12px; + margin-top: -2px; + height: 24px; + border: 0px ! important; + /* border-bottom: 1px solid rgba(0, 0, 0, 0.1) ! important; */ + border: 0px; +} +.mx_SearchBox_minimise, .mx_SearchBox_maximise { + margin-top: 3px; + cursor: pointer; +} +.mx_SearchBox_minimise { + margin-left: 10px; +} +.mx_SearchBox_maximise { + margin-left: 9px; +} +.mx_SearchBox object { + pointer-events: none; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TagPanel { + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; + background-color: #454545; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_TagPanel_items_selected { + cursor: pointer; +} +.mx_TagPanel .mx_TagPanel_clearButton_container { + /* Constant height within flex mx_TagPanel */ + height: 70px; + width: 60px; + + -webkit-box-flex: 0; + + -ms-flex: none; + + flex: none; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_TagPanel .mx_TagPanel_clearButton object { + /* Same as .mx_SearchBox padding-top */ + margin-top: 24px; + pointer-events: none; +} +.mx_TagPanel .mx_TagPanel_divider { + height: 0px; + width: 42px; + border-bottom: 1px solid rgba(118, 207, 166, 0.2); +} +.mx_TagPanel .mx_TagPanel_scroller { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_TagPanel .mx_TagPanel_tagTileContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + + height: 100%; +} +.mx_TagPanel .mx_TagTile { + padding: 6px 3px; + opacity: 0.5; + position: relative; +} +.mx_TagPanel .mx_TagTile:focus, .mx_TagPanel .mx_TagTile:hover, .mx_TagPanel .mx_TagTile.mx_TagTile_selected { + opacity: 1; +} +.mx_TagPanel .mx_TagTile.mx_TagTile_selected { + /* To offset border of mx_TagTile_avatar */ + padding: 3px 0px; +} +.mx_TagPanel .mx_TagTile.mx_TagTile_selected .mx_TagTile_avatar .mx_BaseAvatar { + border: 3px solid #76CFA6; + background-color: #76CFA6; + border-radius: 60px; + + /* In case this is a "initial" avatar */ + display: block; + height: 35px; + width: 35px; +} +.mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_TagTile_tooltip { + position: relative; + top: -30px; + left: 5px; +} +.mx_TagTile_context_button { + min-width: 15px; + height: 15px; + position: absolute; + right: -5px; + top: 1px; + border-radius: 8px; + background-color: #888; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; +} +.mx_TagPanel_groupsButton { + margin-bottom: 17px; + margin-top: 18px; + height: 25px; +} +.mx_TagPanel_groupsButton object { + pointer-events: none; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UploadBar { + position: relative; +} +.mx_UploadBar_uploadProgressOuter { + height: 5px; + margin-left: 63px; + margin-top: -1px; + padding-bottom: 5px; +} +.mx_UploadBar_uploadProgressInner { + background-color: #76CFA6; + height: 5px; +} +.mx_UploadBar_uploadFilename { + margin-top: 5px; + margin-left: 65px; + opacity: 0.5; + color: #dddddd; +} +.mx_UploadBar_uploadIcon { + float: left; + margin-top: 5px; + margin-left: 14px; +} +.mx_UploadBar_uploadCancel { + float: right; + margin-top: 5px; + margin-right: 10px; + position: relative; + opacity: 0.6; + cursor: pointer; + z-index: 1; +} +.mx_UploadBar_uploadBytes { + float: right; + margin-top: 5px; + margin-right: 30px; + color: #76CFA6; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UserSettings { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_UserSettings .mx_RoomHeader { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +.mx_UserSettings_body { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + margin-top: -20px; + overflow-y: auto; +} +.mx_UserSettings h3 { + clear: both; + margin-left: 63px; + text-transform: uppercase; + color: #dddddd; + font-weight: 600; + font-size: 13px; + margin-top: 26px; + margin-bottom: 10px; +} +.mx_UserSettings_section h3 { + margin-left: 0px; +} +.mx_UserSettings_spinner { + display: inline-block; + vertical-align: middle; + margin-right: 12px; + width: 32px; + height: 32px; +} +.mx_UserSettings_button { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + display: inline; + margin: auto; +} +.mx_UserSettings_button:hover { +} +.mx_UserSettings_button.danger { + background-color: #ff0064; +} +.mx_UserSettings_section { + margin-left: 63px; + margin-top: 28px; + margin-bottom: 28px; +} +.mx_UserSettings_cryptoSection ul { + display: table; +} +.mx_UserSettings_cryptoSection li { + display: table-row; +} +.mx_UserSettings_cryptoSection label, .mx_UserSettings_cryptoSection span { + display: table-cell; + padding-right: 1em; +} +.mx_UserSettings_passwordWarning { + /* To move the "Sign out" button out of the way */ + clear: both; + color: #ff0064; + margin-bottom: 5px; +} +.mx_UserSettings_importExportButtons { + padding-top: 10px; + padding-left: 40px; +} +.mx_UserSettings_importExportButtons .mx_UserSettings_button { + margin-right: 1em; +} +.mx_UserSettings_toggle input { + width: 16px; + margin-right: 8px; + margin-bottom: 8px; +} +.mx_UserSettings_toggle label { + padding-bottom: 21px; +} +.mx_UserSettings_accountTable +.mx_UserSettings_notifTable +{ + display: table; +} +.mx_UserSettings_notifTable .mx_Spinner { + position: absolute; +} +.mx_UserSettings_language { + width: 200px; +} +.mx_UserSettings_webRtcDevices_dropdown { + width: 50%; +} +.mx_UserSettings_profileTable +{ + display: table; + float: left; +} +.mx_UserSettings_profileTableRow +{ + display: table-row; +} +.mx_UserSettings_profileLabelCell +{ + padding-bottom: 21px; + display: table-cell; + font-weight: bold; + padding-right: 24px; +} +.mx_UserSettings_profileInputCell { + display: table-cell; + padding-bottom: 21px; + width: 240px; +} +.mx_UserSettings_profileInputCell input, .mx_UserSettings_profileInputCell .mx_EditableText +{ + display: inline-block; + border: 0px; + border-bottom: 1px solid #dddddd; + padding: 0px; + width: 240px; + color: #dddddd; + font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; + font-size: 16px; +} +.mx_UserSettings_threepidButton { + display: table-cell; + padding-left: 0.5em; + position: relative; + cursor: pointer; +} +.mx_UserSettings_phoneSection { + display:table; +} +.mx_UserSettings_phoneCountry { + width: 70px; + display: table-cell; +} +input.mx_UserSettings_phoneNumberField { + margin-left: 3px; + width: 172px; + border: 1px solid transparent; +} +.mx_UserSettings_changePasswordButton { + float: right; + margin-right: 32px; + margin-left: 32px; +} +.mx_UserSettings_logout { + float: right; + margin-right: 32px; + margin-left: 32px; +} +.mx_UserSettings_avatarPicker { + margin-left: 32px; + margin-right: 32px; + float: right; + cursor: pointer; +} +.mx_UserSettings_avatarPicker_img .mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; +} +.mx_UserSettings_avatarPicker_edit { + text-align: center; + margin-top: 10px; +} +.mx_UserSettings_avatarPicker_edit img { + cursor: pointer; +} +.mx_UserSettings_avatarPicker_edit > input { + display: none; +} +.mx_UserSettings_avatarPicker_imgContainer { + display: inline-block; +} +.mx_UserSettings_avatarPicker_remove { + display: inline-block; + float: right; + margin-right: -15px; +} +.mx_UserSettings_advanced_spoiler, .mx_UserSettings_link { + cursor: pointer; + color: #76CFA6; + word-break: break-all; +} +.mx_UserSettings_analyticsModal table { + margin: 10px 0px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ViewSource pre { + text-align: left; + font-size: 12px; + padding: 0.5em 1em 0.5em 1em; + word-wrap: break-word; + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Login { + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + + overflow: auto; +} +.mx_Login h2 { + font-weight: 300; + margin-top: 32px; + margin-bottom: 20px; +} +.mx_Login_box { + width: 300px; + min-height: 450px; + padding-top: 50px; + padding-bottom: 50px; + margin: auto; +} +.mx_Login_logo { + text-align: center; + height: 150px; + margin-bottom: 45px; +} +.mx_Login_logo img { + max-height: 100% +} +.mx_Login_support { + text-align: center; + font-size: 13px; + margin-top: 0px; + opacity: 0.7; +} +.mx_Login_field { + width: 280px; + border-radius: 3px; + border: 1px solid #656565; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-bottom: 14px; +} +.mx_Login_field_disabled { + opacity: 0.3; +} +.mx_Login_fieldLabel { + margin-top: -10px; + margin-left: 8px; + margin-bottom: 14px; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_submit { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + width: 100%; + margin-top: 35px; + margin-bottom: 24px; +} +.mx_Login_submit:hover { +} +.mx_Login_submit:disabled { + opacity: 0.3; +} +.mx_Login_label { + font-size: 13px; + opacity: 0.8; +} +.mx_Login_checkbox, .mx_Login_radio { + margin-right: 10px; +} +.mx_Login_create { + display: block; + text-align: center; + width: 100%; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_create:link { + color: #dddddd; +} +.mx_Login_links { + display: block; + text-align: center; + margin-top: 15px; + width: 100%; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_links a:link { + color: #dddddd; +} +.mx_Login_prompt { + padding-top: 15px; + padding-bottom: 15px; + font-size: 13px; +} +.mx_Login_forgot { + font-size: 15px; +} +.mx_Login_forgot:link { + color: #dddddd; +} +.mx_Login_loader { + display: inline; + position: relative; + top: 2px; + left: 8px; +} +.mx_Login_loader .mx_Spinner { + display: inline; +} +.mx_Login_loader .mx_Spinner img { + width: 16px; + height: 16px; +} +.mx_Login_error { + color: #ff0064; + font-weight: bold; + text-align: center; +/* + height: 24px; +*/ + margin-top: 12px; + margin-bottom: 12px; +} +.mx_Login_type_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 14px; +} +.mx_Login_type_label { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + line-height: 35px; +} +.mx_Login_type_dropdown { + display: inline-block; + min-width: 170px; + -ms-flex-item-align: end; + align-self: flex-end; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_Login_field_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_Login_field_prefix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-right: 0px; + border-radius: 3px 0px 0px 3px; + + text-align: center; +} +.mx_Login_field_suffix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-left: 0px; + border-radius: 0px 3px 3px 0px; + + text-align: center; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_Login_username { + height: 16px; + -ms-flex-negative: 1; + flex-shrink: 1; + min-width: 0px; +} +.mx_Login_phoneNumberField { + height: 16px; +} +.mx_Login_field_has_prefix { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.mx_Login_field_has_suffix { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.mx_Login_phoneSection { + display:-webkit-box; + display:-ms-flexbox; + display:flex; +} +.mx_Login_phoneCountry { + margin-bottom: 14px; + width: 150px; + + /* To override mx_Login_field_prefix */ + text-align: left; + padding: 0px; + background-color: #2d2d2d; +} +.mx_Login_field_prefix .mx_Dropdown_input { + /* To use prefix border instead of dropdown border */ + border: 0; +} +.mx_Login_phoneCountry .mx_Dropdown_option { + /* + To match height of mx_Login_field + 33px + 2px border from mx_Dropdown_option = 35px + */ + height: 33px; + line-height: 33px; +} +.mx_Login_phoneCountry .mx_Dropdown_option img { + margin: 3px; + vertical-align: top; +} +.mx_Login_language { + margin-left: auto; + margin-right: auto; + min-width: 60%; +} +.mx_Login_language_div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 12px; + margin-bottom: 12px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_BaseAvatar { + position: relative; +} +.mx_BaseAvatar_initial { + position: absolute; + left: 0px; + color: #2d2d2d; + text-align: center; + speak: none; + pointer-events: none; + font-weight: normal; +} +.mx_BaseAvatar_image { + border-radius: 40px; + vertical-align: top; + background-color: #ffffff; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageContextMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} +.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet { + font-weight: bold; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTileContextMenu_tag_field, .mx_RoomTileContextMenu_leave { + padding-top: 8px; + padding-right: 20px; + padding-bottom: 8px; + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 16px; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { + font-weight: bold; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { + display: none; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon_set { + display: inline-block; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldDisabled { + color: rgba(0, 0, 0, 0.2); +} +.mx_RoomTileContextMenu_tag_icon { + padding-right: 8px; + padding-left: 4px; + display: inline-block +} +.mx_RoomTileContextMenu_tag_icon_set { + padding-right: 8px; + padding-left: 4px; + display: none; +} +.mx_RoomTileContextMenu_separator { + margin-top: 0; + margin-bottom: 0; + border-bottom-style: none; + border-left-style: none; + border-right-style: none; + border-top-style: solid; + border-top-width: 1px; + border-color: rgba(187, 187, 187, 0.5); +} +.mx_RoomTileContextMenu_leave { + color: #ff0064; +} +.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { + /* Something to indicate that the icon is the set tag */ +} +.mx_RoomTileContextMenu_notif_picker { + position: absolute; + top: 16px; + left: 5px; +} +.mx_RoomTileContextMenu_notif_field { + padding-top: 4px; + padding-right: 6px; + padding-bottom: 10px; + padding-left: 8px; /* 20px */ + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { + font-weight: bold; +} +.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldDisabled { + color: rgba(0, 0, 0, 0.2); +} +.mx_RoomTileContextMenu_notif_icon { + padding-right: 4px; + padding-left: 4px; +} +.mx_RoomTileContextMenu_notif_activeIcon { + display: inline-block; + opacity: 0; + position: relative; + left: -5px; +} +.mx_RoomTileContextMenu_notif_fieldSet .mx_RoomTileContextMenu_notif_activeIcon { + opacity: 1; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TagTileContextMenu_item { + padding-top: 8px; + padding-right: 20px; + padding-bottom: 8px; + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 16px; +} +.mx_TagTileContextMenu_item_icon { + padding-right: 8px; + padding-left: 4px; + display: inline-block +} +.mx_TagTileContextMenu_separator { + margin-top: 0; + margin-bottom: 0; + border-bottom-style: none; + border-left-style: none; + border-right-style: none; + border-top-style: solid; + border-top-width: 1px; + border-color: rgba(187, 187, 187, 0.5); +} +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_BugReportDialog_field_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_BugReportDialog_field_label { + -ms-flex-preferred-size: 150px; + flex-basis: 150px; + + text-align: right; + + padding-top: 9px; + padding-right: 4px; + + line-height: 18px; +} +.mx_BugReportDialog_field_input { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + + /* taken from mx_ChatInviteDialog_inputContainer */ + border-radius: 3px; + border: solid 1px #3a3a3a; + + font-size: 14px; + + padding-left: 4px; + padding-right: 4px; + padding-top: 7px; + padding-bottom: 7px; + + margin-bottom: 4px; +} +.mx_BugReportDialog_field_input[type="text" i] { + padding-top: 9px; + padding-bottom: 9px; +} +/* +Copyright 2016 Aviral Dasgupta + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ChangelogDialog_content { + max-height: 300px; + overflow: auto; +} +.mx_ChangelogDialog_li { + padding: 0.2em; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles { + margin-top: 24px; +} +.mx_ChatCreateOrReuseDialog .mx_Dialog_content { + margin-bottom: 24px; + + /* + To stop spinner that mx_ChatCreateOrReuseDialog_profile replaces from causing a + height change + */ + min-height: 100px; +} +.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge { + display: none; +} +.mx_ChatCreateOrReuseDialog_profile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_ChatCreateOrReuseDialog_profile_name { + padding: 14px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* Using a textarea for this element, to circumvent autofill */ +.mx_ChatInviteDialog_input, .mx_ChatInviteDialog_input:focus +{ + height: 26px; + font-size: 14px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + padding-left: 12px; + padding-right: 12px; + margin: 0 !important; + border: 0 !important; + outline: 0 !important; + width: 1000%; /* Pretend that this is an "input type=text" */ + resize: none; + overflow: hidden; + vertical-align: middle; + box-sizing: border-box; + word-wrap: nowrap; +} +.mx_ChatInviteDialog .mx_Dialog_content { + min-height: 50px +} +.mx_ChatInviteDialog_inputContainer { + border-radius: 3px; + border: solid 1px #3a3a3a; + line-height: 36px; + padding-left: 4px; + padding-right: 4px; + padding-top: 1px; + padding-bottom: 1px; + max-height: 150px; + overflow-x: hidden; + overflow-y: auto; +} +.mx_ChatInviteDialog_error { + margin-top: 10px; + color: #ff0064; +} +.mx_ChatInviteDialog_cancel { + position: absolute; + right: 11px; + top: 13px; + cursor: pointer; +} +.mx_ChatInviteDialog_cancel object { + pointer-events: none; +} +/* +Copyright 2017 Vector Creations Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ConfirmUserActionDialog .mx_Dialog_content { + min-height: 48px; + margin-bottom: 24px; +} +.mx_ConfirmUserActionDialog_avatar { + float: left; + margin-right: 20px; + margin-top: -2px; +} +.mx_ConfirmUserActionDialog_name { + font-size: 18px; +} +.mx_ConfirmUserActionDialog_userId { + font-size: 13px; +} +.mx_ConfirmUserActionDialog_reasonField { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #dddddd; + background-color: #2d2d2d; + + border-radius: 3px; + border: solid 1px #3a3a3a; + line-height: 36px; + padding-left: 16px; + padding-right: 16px; + padding-top: 1px; + padding-bottom: 1px; + + margin-bottom: 24px; + + width: 90%; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateGroupDialog_inputRow { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_CreateGroupDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateGroupDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; +} +.mx_CreateGroupDialog_input_hasPrefixAndSuffix { + border-radius: 0px; +} +.mx_CreateGroupDialog_input_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_CreateGroupDialog_prefix, .mx_CreateGroupDialog_suffix { + height: 35px; + padding: 0px 5px; + line-height: 37px; + background-color: #3a3a3a; + border: 1px solid #3a3a3a; + text-align: center; +} +.mx_CreateGroupDialog_prefix { + border-right: 0px; + border-radius: 3px 0px 0px 3px; +} +.mx_CreateGroupDialog_suffix { + border-left: 0px; + border-radius: 0px 3px 3px 0px; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateRoomDialog_details_summary { + outline: none; +} +.mx_CreateRoomDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateRoomDialog_input_container { + padding-right: 20px; +} +.mx_CreateRoomDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; + width: 100%; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DeactivateAccountDialog .mx_Dialog_content { + margin-bottom: 30px; +} +.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section { + margin-top: 60px; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DevTools_dialog { + padding-right: 58px; +} +.mx_DevTools_content { + margin: 10px 0; +} +.mx_DevTools_RoomStateExplorer_button, .mx_DevTools_RoomStateExplorer_query { + margin-bottom: 10px; + width: 100%; +} +.mx_DevTools_label_left { + float: left; +} +.mx_DevTools_label_right { + float: right; +} +.mx_DevTools_label_bottom { + clear: both; + border-bottom: 1px solid #e5e5e5; +} +.mx_DevTools_inputRow +{ + display: table-row; +} +.mx_DevTools_inputLabelCell +{ + display: table-cell; + font-weight: bold; + padding-right: 24px; +} +.mx_DevTools_inputCell { + display: table-cell; + width: 240px; +} +.mx_DevTools_inputCell input +{ + display: inline-block; + border: 0; + border-bottom: 1px solid #dddddd; + padding: 0; + width: 240px; + color: #dddddd; + font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; + font-size: 16px; +} +.mx_DevTools_textarea { + font-size: 12px; + max-width: 624px; + min-height: 250px; + padding: 10px; + width: 100%; +} +.mx_DevTools_tgl { + display: none; +} +.mx_DevTools_tgl, .mx_DevTools_tgl:after, .mx_DevTools_tgl:before, .mx_DevTools_tgl *, .mx_DevTools_tgl *:after, .mx_DevTools_tgl *:before, .mx_DevTools_tgl + .mx_DevTools_tgl-btn { + box-sizing: border-box; + } +.mx_DevTools_tgl::-moz-selection, .mx_DevTools_tgl:after::-moz-selection, .mx_DevTools_tgl:before::-moz-selection, .mx_DevTools_tgl *::-moz-selection, .mx_DevTools_tgl *:after::-moz-selection, .mx_DevTools_tgl *:before::-moz-selection, .mx_DevTools_tgl + .mx_DevTools_tgl-btn::-moz-selection { + background: none; + } +.mx_DevTools_tgl::selection, .mx_DevTools_tgl:after::selection, .mx_DevTools_tgl:before::selection, .mx_DevTools_tgl *::selection, .mx_DevTools_tgl *:after::selection, .mx_DevTools_tgl *:before::selection, .mx_DevTools_tgl + .mx_DevTools_tgl-btn::selection { + background: none; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn { + outline: 0; + display: block; + width: 7em; + height: 2em; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + position: relative; + display: block; + content: ""; + width: 50%; + height: 100%; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after { + left: 0; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + display: none; + } +.mx_DevTools_tgl:checked + .mx_DevTools_tgl-btn:after { + left: 50%; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn { + padding: 2px; + transition: all .2s ease; + font-family: sans-serif; + -webkit-perspective: 100px; + perspective: 100px; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + display: inline-block; + transition: all .4s ease; + width: 100%; + text-align: center; + position: absolute; + line-height: 2em; + font-weight: bold; + color: #fff; + top: 0; + left: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + border-radius: 4px; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { + content: attr(data-tg-on); + background: #02C66F; + -webkit-transform: rotateY(-180deg); + transform: rotateY(-180deg); + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + background: #FF3A19; + content: attr(data-tg-off); + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { + -webkit-transform: rotateY(-20deg); + transform: rotateY(-20deg); + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { + -webkit-transform: rotateY(0); + transform: rotateY(0); + left: 0; + background: #7FC6A6; + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { + -webkit-transform: rotateY(20deg); + transform: rotateY(20deg); + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EncryptedEventDialog .mx_MemberDeviceInfo { + float: right; + padding: 0px; + margin-right: 42px; +} +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + background-color: #2d2d2d; + color: #76CFA6; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupAddressPicker_checkboxContainer{ + margin-top: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupAddressPicker_checkboxContainer input[type="checkbox"] { + /* Stop flex from shrinking the checkbox */ + width: 20px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomUpgradeDialog { + padding-right: 70px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetEmailDialog_email_input { + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; + font-size: 15px; + width: 100%; + max-width: 280px; + margin-bottom: 10px; +} +.mx_SetEmailDialog_email_input:focus { + outline: none; + box-shadow: none; + border: 1px solid #76CFA6; +} +.mx_SetEmailDialog_email_input_placeholder { +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetMxIdDialog .mx_Dialog_title { + padding-right: 40px; +} +.mx_SetMxIdDialog_input_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_SetMxIdDialog_input { + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; + font-size: 15px; + width: 100%; + max-width: 280px; +} +.mx_SetMxIdDialog_input.error, .mx_SetMxIdDialog_input.error:focus { + border: 1px solid #ff0064; +} +.mx_SetMxIdDialog_input_group .mx_Spinner { + height: 37px; + padding-left: 10px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_SetMxIdDialog .success { + color: #76CFA6; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetPasswordDialog_change_password input { + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; + font-size: 15px; + width: 100%; + max-width: 280px; + margin-bottom: 10px; +} +.mx_SetPasswordDialog_change_password_button { + margin-top: 68px; +} +.mx_SetPasswordDialog .mx_Dialog_content { + margin-bottom: 0px; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ShareDialog { + padding-right: 58px; +} +.mx_ShareDialog hr { + margin-top: 25px; + margin-bottom: 25px; + border-color: #747474; +} +.mx_ShareDialog_content { + margin: 10px 0; +} +.mx_ShareDialog_matrixto { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + border-radius: 5px; + border: solid 1px #747474; + margin-bottom: 10px; + margin-top: 30px; + padding: 10px; +} +.mx_ShareDialog_matrixto a { + text-decoration: none; +} +.mx_ShareDialog_matrixto_link { + -ms-flex-negative: 1; + flex-shrink: 1; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_ShareDialog_matrixto_copy { + -ms-flex-negative: 0; + flex-shrink: 0; + cursor: pointer; + margin-left: 20px; + display: inherit; +} +.mx_ShareDialog_matrixto_copy > div { + background-image: url("../../img/icon_copy_message_dark.svg"); + margin-left: 5px; + width: 20px; + height: 20px; +} +.mx_ShareDialog_split { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_ShareDialog_qrcode_container { + float: left; + background-color: #ffffff; + padding: 5px; + border-radius: 5px; + height: 256px; + width: 256px; + margin-right: 64px; +} +.mx_ShareDialog_social_container { + display: inline-block; + width: 299px; +} +.mx_ShareDialog_social_icon { + display: -ms-inline-grid; + display: inline-grid; + margin-right: 10px; + margin-bottom: 10px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Dialog_unknownDevice .mx_Dialog { + height: 100%; + padding-right: 58px; +} +.mx_UnknownDeviceDialog { + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_UnknownDeviceDialog .mx_Dialog_content { + margin-bottom: 24px; +} +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo { + float: right; + clear: both; + padding: 0px; + padding-top: 8px; +} +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; + background-color: #2d2d2d; + color: #76CFA6; +} +.mx_UnknownDeviceDialog .mx_UnknownDeviceDialog_deviceList li { + height: 40px; + border-bottom: 1px solid #474747; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NetworkDropdown { + position: relative; +} +.mx_NetworkDropdown_input { + position: relative; + border-radius: 3px; + border: 1px solid #656565; + font-weight: 300; + font-size: 13px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_NetworkDropdown_arrow { + border-color: #dddddd transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + display: block; + height: 0; + position: absolute; + right: 10px; + top: 14px; + width: 0 +} +.mx_NetworkDropdown_networkoption { + height: 35px; + line-height: 35px; + padding-left: 8px; + padding-right: 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mx_NetworkDropdown_networkoption img { + margin: 5px; + width: 25px; + vertical-align: middle; +} +input.mx_NetworkDropdown_networkoption, input.mx_NetworkDropdown_networkoption:focus { + border: 0; + padding-top: 0; + padding-bottom: 0; +} +.mx_NetworkDropdown_menu { + position: absolute; + left: -1px; + right: -1px; + top: 100%; + z-index: 2; + margin: 0; + padding: 0px; + border-radius: 3px; + border: 1px solid #76CFA6; + background-color: #2d2d2d; +} +.mx_NetworkDropdown_menu .mx_NetworkDropdown_networkoption:hover { + background-color: #101010; +} +.mx_NetworkDropdown_menu_network { + font-weight: bold; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AccessibleButton:focus { + outline: 0; + -webkit-filter: brightness(200%); + filter: brightness(200%); +} +.mx_AccessibleButton { + cursor: pointer; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AddressSelector { + position: absolute; + background-color: #2d2d2d; + width: 485px; + max-height: 116px; + overflow-y: auto; + border-radius: 3px; + background-color: #2d2d2d; + border: solid 1px #76CFA6; + cursor: pointer; +} +.mx_AddressSelector.mx_AddressSelector_empty { + display: none; +} +.mx_AddressSelector_addressListElement .mx_AddressTile { + background-color: #2d2d2d; + border: solid 1px #2d2d2d; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected { + background-color: #000000; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile { + background-color: #000000; + border: solid 1px #000000; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AddressTile { + display: inline-block; + border-radius: 3px; + background-color: rgba(74, 73, 74, 0.1); + border: solid 1px #3a3a3a; + line-height: 26px; + color: #dddddd; + font-size: 14px; + font-weight: normal; + margin-right: 4px; +} +.mx_AddressTile.mx_AddressTile_error { + background-color: rgba(255, 0, 100, 0.1); + color: #ff0064; + border-color: #ff0064; +} +.mx_AddressTile_network { + display: inline-block; + position: relative; + padding-left: 2px; + padding-right: 4px; + vertical-align: middle; +} +.mx_AddressTile_avatar { + display: inline-block; + position: relative; + padding-left: 2px; + padding-right: 7px; + vertical-align: middle; +} +.mx_AddressTile_mx { + display: inline-block; + margin: 0; + border: 0; + padding: 0; +} +.mx_AddressTile_name { + display: inline-block; + padding-right: 4px; + font-weight: 600; + overflow: hidden; + height: 26px; + vertical-align: middle; +} +.mx_AddressTile_name.mx_AddressTile_justified { + width: 180px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_id { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_id.mx_AddressTile_justified { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknownMx { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_unknownMxl.mx_AddressTile_justified { + width: 380px; /* name + id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_email { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_email.mx_AddressTile_justified { + width: 200px; /* same as id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknown { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_unknown.mx_AddressTile_justified { + width: 380px; /* name + id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_dismiss { + display: inline-block; + padding-right: 11px; + padding-left: 1px; + cursor: pointer; +} +.mx_AddressTile_dismiss object { + pointer-events: none; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DirectorySearchBox { + position: relative; + border-radius: 3px; + border: 1px solid #656565; +} +.mx_DirectorySearchBox_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-left: 9px; + padding-right: 9px; +} +.mx_DirectorySearchBox_input { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border: 0; + padding: 0; + font-weight: 300; + font-size: 13px; +} +input[type=text].mx_DirectorySearchBox_input:focus { + border: 0; +} +.mx_DirectorySearchBox_joinButton { + display: table-cell; + padding: 3px; + padding-left: 10px; + padding-right: 10px; + background-color: #474747; + border-radius: 3px; + background-image: url('../../img/icon-return.svg'); + background-position: 8px 70%; + background-repeat: no-repeat; + text-indent: 18px; + font-weight: 600; + font-size: 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.mx_DirectorySearchBox_clear_wrapper { + display: table-cell; +} +.mx_DirectorySearchBox_clear { + display: inline-block; + vertical-align: middle; + background: url('../../img/icon_context_delete.svg'); + background-position: 0 50%; + background-repeat: no-repeat; + width: 15px; + height: 15px; + cursor: pointer; +} +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Dropdown { + position: relative; +} +.mx_Dropdown_disabled { + opacity: 0.3; +} +.mx_Dropdown_input { + position: relative; + border-radius: 3px; + border: 1px solid #656565; + font-weight: 300; + font-size: 13px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_Dropdown_input:focus { + border-color: #76CFA6; +} +/* Disable dropdown highlight on focus */ +.mx_Dropdown_input.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_Dropdown_arrow { + border-color: #dddddd transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + display: block; + height: 0; + position: absolute; + right: 10px; + top: 14px; + width: 0 +} +.mx_Dropdown.left_aligned .mx_Dropdown_arrow { + left: 10px; +} +.mx_Dropdown_input > .mx_Dropdown_option { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_Dropdown.left_aligned .mx_Dropdown_input > .mx_Dropdown_option { + padding-left: 25px; +} +.mx_Dropdown_option { + height: 35px; + line-height: 35px; + padding-left: 8px; + padding-right: 8px; +} +.mx_Dropdown_option div { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_Dropdown_option img { + margin: 5px; + width: 27px; + vertical-align: middle; +} +input.mx_Dropdown_option, input.mx_Dropdown_option:focus { + border: 0; + padding-top: 0; + padding-bottom: 0; + width: 60%; +} +.mx_Dropdown_menu { + position: absolute; + left: -1px; + right: -1px; + top: 100%; + z-index: 2; + margin: 0; + padding: 0px; + border-radius: 3px; + border: 1px solid #76CFA6; + background-color: #2d2d2d; + max-height: 200px; + overflow-y: auto; +} +.mx_Dropdown_menu .mx_Dropdown_option { + height: auto; + min-height: 35px; +} +.mx_Dropdown_menu .mx_Dropdown_option_highlight { + background-color: #101010; +} +.mx_Dropdown_menu { + font-weight: bold; +} +.mx_Dropdown_searchPrompt { + font-weight: normal; + margin-left: 5px; + margin-bottom: 5px; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EditableItemList { + margin-top: 12px; + margin-bottom: 0px; +} +.mx_EditableItem { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-left: 56px; +} +.mx_EditableItem .mx_EditableItem_editable { + border: 0px; + border-bottom: 1px solid #656565; + padding: 0px; + min-width: 240px; + max-width: 400px; + margin-bottom: 16px; +} +.mx_EditableItem .mx_EditableItem_editable:focus { + border-bottom: 1px solid #76CFA6; + outline: none; + box-shadow: none; +} +.mx_EditableItem .mx_EditableItem_editablePlaceholder { + color: #a2a2a2; +} +.mx_EditableItem .mx_EditableItem_addButton, .mx_EditableItem .mx_EditableItem_removeButton { + padding-left: 0.5em; + position: relative; + cursor: pointer; + + visibility: hidden; +} +.mx_EditableItem:hover .mx_EditableItem_addButton, .mx_EditableItem:hover .mx_EditableItem_removeButton { + visibility: visible; +} +.mx_EditableItemList_label { + margin-bottom: 8px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* This has got to be the most fragile piece of CSS ever written. + But empirically it works on Chrome/FF/Safari + */ +.mx_ImageView { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + height: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_ImageView_lhs { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; + min-width: 60px; +} +.mx_ImageView_content { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + /* min-width hack needed for FF */ + min-width: 0px; + height: 90%; + -webkit-box-flex: 15; + -ms-flex: 15 15 0px; + flex: 15 15 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_ImageView_content img { + max-width: 100%; + /* XXX: max-height interacts badly with flex on Chrome and doesn't relayout properly until you refresh */ + max-height: 100%; + /* object-fit hack needed for Chrome due to Chrome not re-laying-out until you refresh */ + -o-object-fit: contain; + object-fit: contain; + /* background-image: url('../../img/trans.png'); */ + pointer-events: all; +} +.mx_ImageView_labelWrapper { + position: absolute; + top: 0px; + right: 0px; + height: 100%; + overflow: auto; + pointer-events: all; +} +.mx_ImageView_label { + text-align: left; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 30px; + padding-right: 30px; + min-height: 100%; + max-width: 240px; + color: #ffffff; +} +.mx_ImageView_cancel { + position: absolute; + top: 0px; + right: 0px; + padding: 35px; + cursor: pointer; +} +.mx_ImageView_name { + font-size: 18px; + margin-bottom: 6px; + word-wrap: break-word; +} +.mx_ImageView_metadata { + font-size: 15px; + opacity: 0.5; +} +.mx_ImageView_download { + display: table; + margin-top: 24px; + margin-bottom: 6px; + border-radius: 5px; + background-color: #454545; + font-size: 14px; + padding: 9px; + border: 1px solid #ffffff; +} +.mx_ImageView_size { + font-size: 11px; +} +.mx_ImageView_link { + color: #ffffff ! important; + text-decoration: none ! important; +} +.mx_ImageView_button { + font-size: 15px; + opacity: 0.5; + margin-top: 18px; + cursor: pointer; +} +.mx_ImageView_shim { + height: 30px; +} +.mx_ImageView_rhs { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + -webkit-box-flex: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; + min-width: 300px; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_InlineSpinner { + display: inline; +} +.mx_InlineSpinner img { + margin: 0px 6px; + vertical-align: -3px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberEventListSummary { + position: relative; +} +.mx_TextualEvent.mx_MemberEventListSummary_summary { + font-size: 14px; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.mx_MemberEventListSummary_avatars { + display: inline-block; + margin-right: 8px; + padding-top: 8px; + line-height: 12px; +} +.mx_MemberEventListSummary_avatars .mx_BaseAvatar { + margin-right: -4px; + cursor: pointer; +} +.mx_MemberEventListSummary_toggle { + color: #76CFA6; + cursor: pointer; + float: right; + margin-right: 10px; + margin-top: 8px; +} +.mx_MemberEventListSummary_line { + border-bottom: 1px solid #474747; + margin-left: 63px; + line-height: 30px; +} +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary { + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary .mx_EventTile_line { + line-height: 20px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary_line { + line-height: 22px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary_toggle { + margin-top: 3px; + } +.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_MemberEventListSummary_summary { + font-size: 13px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ProgressBar { + height: 5px; + border: 1px solid #000; +} +.mx_ProgressBar_fill { + height: 100%; + background-color: #000; +} +/* +Copyright 2018 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ReplyThread { + margin-top: 0; +} +.mx_ReplyThread .mx_DateSeparator { + font-size: 1em !important; + margin-top: 0; + margin-bottom: 0; + padding-bottom: 1px; + bottom: -5px; +} +.mx_ReplyThread_show { + cursor: pointer; +} +blockquote.mx_ReplyThread { + margin-left: 0; + padding-left: 10px; + border-left: 4px solid #ddd; +} +.mx_UserPill, .mx_RoomPill, .mx_GroupPill, .mx_AtRoomPill { + border-radius: 16px; + display: inline-block; + height: 20px; + line-height: 20px; + padding-left: 5px; +} +.mx_EventTile_body .mx_UserPill, .mx_EventTile_body .mx_RoomPill, .mx_EventTile_body .mx_GroupPill { + cursor: pointer; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_UserPill, .mx_UserPill { + color: #dddddd; + background-color: rgba(255, 255, 255, 0.1); + padding-right: 5px; +} +.mx_UserPill_selected { + background-color: #76CFA6 ! important; +} +.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me, .mx_EventTile_content .mx_AtRoomPill, .mx_MessageComposer_input .mx_AtRoomPill { + color: #2d2d2d; + background-color: #ff0064; + padding-right: 5px; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_RoomPill, .mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_RoomPill, .mx_GroupPill { + color: #2d2d2d; + background-color: #aaa; + padding-right: 5px; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_GroupPill { + color: #2d2d2d; + background-color: #aaa; + padding-right: 5px; +} +.mx_UserPill .mx_BaseAvatar, .mx_RoomPill .mx_BaseAvatar, .mx_GroupPill .mx_BaseAvatar, .mx_AtRoomPill .mx_BaseAvatar { + position: relative; + left: -3px; + top: 2px; +} +.mx_Markdown_BOLD { + font-weight: bold; +} +.mx_Markdown_ITALIC { + font-style: italic; +} +.mx_Markdown_CODE { + padding: .2em 0; + margin: 0; + font-size: 85%; + background-color: #000; + border-radius: 3px; +} +.mx_Markdown_HR { + display: block; + background: #353535; +} +.mx_Markdown_STRIKETHROUGH { + text-decoration: line-through; +} +/* +Copyright 2107 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoleButton { + margin-left: 4px; + margin-right: 4px; + cursor: pointer; + display: inline-block; +} +.mx_RoleButton object { + pointer-events: none; +} +.mx_RoleButton_tooltip { + display: inline-block; + position: relative; + top: -25px; + left: 6px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Spinner { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 100%; + height: 100%; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MatrixChat_middlePanel .mx_Spinner { + height: auto; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SyntaxHighlight { + /* inhibit hljs styling */ + background: none !important; + color: #747474 !important; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ToolTipButton { + display: inline-block; + width: 11px; + height: 11px; + margin-left: 5px; + + border: 2px solid #888; + border-radius: 20px; + color: #888; + + transition: opacity 0.2s ease-in; + opacity: 0.6; + + line-height: 11px; + text-align: center; + + cursor: pointer; +} +.mx_ToolTipButton:hover { + opacity: 1.0; +} +.mx_ToolTipButton_container { + position: relative; + top: -18px; + left: 4px; +} +.mx_ToolTipButton_helpText { + width: 400px; + text-align: start; + line-height: 17px !important; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MatrixToolbar { + background-color: #76CFA6; + color: #2d2d2d; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MatrixToolbar_warning { + margin-left: 16px; + margin-right: 8px; + margin-top: -2px; +} +.mx_MatrixToolbar_info { + padding-left: 16px; + padding-right: 8px; + background-color: #2A9EDF; +} +.mx_MatrixToolbar_error { + padding-left: 16px; + padding-right: 8px; + background-color: #DF2A8B; +} +.mx_MatrixToolbar_content { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MatrixToolbar_link +{ + color: #2d2d2d ! important; + text-decoration: underline ! important; + cursor: pointer; +} +.mx_MatrixToolbar_clickable { + cursor: pointer; +} +.mx_MatrixToolbar_close { + cursor: pointer; +} +.mx_MatrixToolbar_close img { + display: block; + float: right; + margin-right: 10px; +} +.mx_MatrixToolbar_action { + margin-right: 16px; +} +.mx_MatrixToolbar_changelog { + white-space: pre; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupPublicity_toggle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 8px; +} +.mx_GroupPublicity_toggle > label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_GroupPublicity_toggle > label, .mx_GroupPublicity_toggle .mx_GroupTile { + width: 50%; +} +.mx_GroupPublicity_toggle input { + margin-right: 8px; + vertical-align: -4px; +} +.mx_GroupPublicity_toggle .mx_GroupTile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupRoomTile { + position: relative; + color: #dddddd; + cursor: pointer; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupUserSettings_groupPublicity_scrollbox { + height: 200px; + border: 1px solid #474747; + border-radius: 3px; + margin-right: 32px; + overflow: hidden; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_InteractiveAuthEntryComponents_msisdnWrapper { + text-align: center; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry { + font-size: 200%; + font-weight: bold; + border: 1px solid #656565; + border-radius: 3px; + width: 6em; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry:focus { + border: 1px solid #76CFA6; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit { + margin-top: 4px; + margin-bottom: 5px; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { + background-color: #747474; + cursor: default; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ServerConfig { + margin-top: 7px; +} +.mx_ServerConfig .mx_Login_field { + margin-top: 4px; + margin-bottom: 5px; +} +.mx_ServerConfig_help:link { + opacity: 0.8; + font-size: 13px; + font-weight: 300; + color: #dddddd; +} +.mx_ServerConfig_selector { + text-align: center; + width: 302px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateEvent { + background-color: #454545; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; +} +.mx_CreateEvent_image { + float: left; + padding-right: 20px; + width: 72px; + height: 34px; +} +.mx_CreateEvent_header { + font-weight: bold; +} +.mx_CreateEvent_link { +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DateSeparator { + clear: both; + margin-top: 32px; + margin-bottom: 8px; + margin-left: 63px; + padding-bottom: 6px; + border-bottom: 1px solid #474747; +} +/* +Copyright 2017 Vector Creations Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MEmoteBody { + white-space: pre-wrap; +} +.mx_MEmoteBody_sender { + cursor: pointer; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MFileBody_download { + color: #76CFA6; +} +.mx_MFileBody_download a { + color: #76CFA6; + text-decoration: none; + cursor: pointer; +} +.mx_MFileBody_download object { + margin-left: -16px; + padding-right: 4px; + margin-top: -4px; + vertical-align: middle; + pointer-events: none; +} +/* Remove the border and padding for iframes for download links. */ +.mx_MFileBody_download iframe { + margin: 0px; + padding: 0px; + border: none; + width: 100%; + /* Set the height of the iframe to be 1 line of text. + * Iframes don't automatically size themselves to fit their content. + * So either we have to fix the height of the iframe using CSS or + * use javascript's cross-origin postMessage API to communicate how + * big the content of the iframe is. */ + height: 1.5em; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MImageBody { + display: block; + margin-right: 34px; +} +.mx_MImageBody_thumbnail { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; +} +.mx_MImageBody_thumbnail_container { + overflow: hidden; + position: relative; +} +.mx_MImageBody_thumbnail_spinner { + position: absolute; + left: 50%; + top: 50%; +} +.mx_MImageBody_thumbnail_spinner > * { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MNoticeBody { + white-space: pre-wrap; + opacity: 0.6; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MStickerBody_wrapper { + padding: 20px 0px; +} +.mx_MStickerBody_tooltip { + position: absolute; + top: 50%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MTextBody { + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageTimestamp { +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomAvatarEvent { + opacity: 0.5; + overflow-y: hidden; +} +.mx_RoomAvatarEvent_avatar { + display: inline; + position: relative; + top: 5px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TextualEvent { + opacity: 0.5; + overflow-y: hidden; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UnknownBody { + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AppsDrawer { + margin: 5px; +} +.mx_AppsDrawer_hidden { + display: none; +} +.mx_AppsContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_AddWidget_button { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + cursor: pointer; + padding-right: 12px; + padding: 0; + margin: 5px auto 5px auto; + color: #76CFA6; + font-size: 12px; +} +.mx_AddWidget_button_full_width { + max-width: 960px; +} +.mx_SetAppURLDialog_input { + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #474747; + background-color: #2d2d2d; + font-size: 15px; +} +.mx_AppTile { + max-width: 960px; + width: 50%; + margin-right: 5px; + border: 1px solid #474747; + border-radius: 2px; + background-color: #000; +} +.mx_AppTile:last-child { + margin-right: 1px; +} +.mx_AppTileFullWidth { + max-width: 960px; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border: 1px solid #474747; + border-radius: 2px; +} +.mx_AppTile_mini { + max-width: 960px; + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} +.mx_AppTile_persistedWrapper { + height: 280px; +} +.mx_AppTile_mini .mx_AppTile_persistedWrapper { + height: 114px; +} +.mx_AppTileMenuBar { + margin: 0; + padding: 2px 10px; + border-bottom: 1px solid #474747; + font-size: 10px; + background-color: #454545; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + cursor: pointer; +} +.mx_AppTileMenuBarTitle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + pointer-events: none; +} +.mx_AppTileMenuBarWidgets { + float: right; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AppTileMenuBarWidget { + cursor: pointer; + width: 10px; + height: 10px; + padding: 1px; + transition-duration: 500ms; + border: 1px solid transparent; +} +.mx_AppTileMenuBarWidgetDelete { + -webkit-filter: none; + filter: none; +} +.mx_AppTileMenuBarWidget:hover { + border: 1px solid #dddddd; + border-radius: 2px; +} +.mx_AppTileBody{ + height: 280px; + width: 100%; + overflow: hidden; +} +.mx_AppTileBody_mini { + height: 112px; + width: 100%; + overflow: hidden; +} +.mx_AppTileBody_mini iframe { + border: none; + width: 100%; + height: 100%; +} +.mx_AppTileBody iframe { + width: 100%; + height: 280px; + overflow: hidden; + border: none; + padding: 0; + margin: 0; + display: block; +} +.mx_AppTileMenuBarWidgetPadding { + margin-right: 5px; +} +.mx_AppIconTile { + background-color: #454545; + border: 1px solid rgba(0, 0, 0, 0); + width: 200px; + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); + transition: 0.3s; + border-radius: 3px; + margin: 5px; + display: inline-block; +} +.mx_AppIconTile.mx_AppIconTile_active { + color: #76CFA6; + border-color: #76CFA6; +} +.mx_AppIconTile:hover { + border: 1px solid #76CFA6; + box-shadow: 0 0 10px 5px rgba(200,200,200,0.5); +} +.mx_AppIconTile_content { + padding: 2px 16px; + height: 60px; + overflow: hidden; +} +.mx_AppIconTile_content h4 { + margin-top: 5px; + margin-bottom: 2px; +} +.mx_AppIconTile_content p { + margin-top: 0; + margin-bottom: 5px; + font-size: smaller; +} +.mx_AppIconTile_image { + padding: 10px; + width: 75%; + max-width:100px; + max-height:100px; + width: auto; + height: auto; +} +.mx_AppIconTile_imageContainer { + text-align: center; + width: 100%; + background-color: white; + border-radius: 3px 3px 0 0; + height: 155px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +form.mx_Custom_Widget_Form div { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_AppPermissionWarning { + text-align: center; + background-color: #2d2d2d; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AppPermissionWarningImage { + margin: 10px 0; +} +.mx_AppPermissionWarningImage img { + width: 100px; +} +.mx_AppPermissionWarningText { + max-width: 400px; + margin: 10px auto 10px auto; + color: #dddddd; +} +.mx_AppPermissionWarningTextLabel { + font-weight: bold; + display: block; +} +.mx_AppPermissionWarningTextURL { + color: #76CFA6; +} +.mx_AppPermissionButton { + padding: 5px; + border-radius: 5px; + color: #ff0064; + background-color: #2d2d2d; +} +.mx_AppPermissionButton:hover { + background-color: #dddddd; + cursor: pointer; +} +.mx_AppLoading { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-weight: bold; + position: relative; + height: 280px; +} +.mx_AppLoading .mx_Spinner { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_AppLoading_spinner_fadeIn { + -webkit-animation-fill-mode: backwards; + animation-fill-mode: backwards; + -webkit-animation-duration: 200ms; + animation-duration: 200ms; + -webkit-animation-delay: 500ms; + animation-delay: 500ms; + -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; + animation-name: mx_AppLoading_spinner_fadeIn_animation; +} +@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { + from { opacity: 0 } + to { opacity: 1 } +} +@keyframes mx_AppLoading_spinner_fadeIn_animation { + from { opacity: 0 } + to { opacity: 1 } +} +.mx_AppLoading iframe { + display: none; +} +.mx_Autocomplete { + position: absolute; + bottom: 0; + z-index: 1001; + width: 100%; + border: 1px solid #474747; + background: #2d2d2d; + border-bottom: none; + border-radius: 4px 4px 0 0; + max-height: 50vh; + overflow: auto +} +.mx_Autocomplete_ProviderSection { + border-bottom: 1px solid #474747; +} +.mx_Autocomplete_Completion_container_pill { + margin: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +/* a "block" completion takes up a whole line */ +.mx_Autocomplete_Completion_block { + height: 34px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 0 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #dddddd; +} +.mx_Autocomplete_Completion_block * { + margin: 0 3px; +} +.mx_Autocomplete_Completion_pill { + border-radius: 17px; + height: 34px; + padding: 0px 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #dddddd; +} +.mx_Autocomplete_Completion_pill > * { + margin: 0 3px; +} +.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title, .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle, .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description { + /* Ellipsis for long names/subtitles/descriptions*/ + max-width: 150px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +/* container for pill-style completions */ +.mx_Autocomplete_Completion_container_pill { + margin: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-flow: wrap; + flex-flow: wrap; +} +.mx_Autocomplete_Completion.selected, .mx_Autocomplete_Completion:hover { + background: #373737; + outline: none; +} +.mx_Autocomplete_provider_name { + margin: 12px; + color: #dddddd; + font-weight: 400; + opacity: 0.4; +} +/* styling for common completion elements */ +.mx_Autocomplete_Completion_subtitle { + font-style: italic; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_Autocomplete_Completion_description { + color: gray; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EntityTile { + display: table-row; + position: relative; + color: #dddddd; + cursor: pointer; +} +.mx_EntityTile_invite { + display: table-cell; + vertical-align: middle; + margin-left: 10px; + width: 26px; +} +.mx_EntityTile_avatar, .mx_GroupRoomTile_avatar { + display: table-cell; + padding-left: 3px; + padding-right: 12px; + padding-top: 4px; + padding-bottom: 4px; + vertical-align: middle; + width: 36px; + height: 36px; + position: relative; +} +.mx_EntityTile_power { + position: absolute; + width: 16px; + height: 17px; + top: 0px; + right: 6px; +} +.mx_EntityTile_name, .mx_GroupRoomTile_name { + display: table-cell; + vertical-align: middle; + overflow: hidden; + font-size: 14px; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 155px; +} +.mx_EntityTile_details { + display: table-cell; + padding-right: 14px; + vertical-align: middle; +} +.mx_EntityTile_name_hover { + font-size: 13px; +} +.mx_EntityTile_chevron { + margin-top: 8px; + margin-right: -4px; + margin-left: 6px; + float: right; +} +.mx_EntityTile_ellipsis .mx_EntityTile_name { + font-style: italic; + color: #dddddd; +} +.mx_EntityTile_invitePlaceholder .mx_EntityTile_name { + font-style: italic; + color: #dddddd; +} +.mx_EntityTile_unavailable .mx_EntityTile_avatar, .mx_EntityTile_unavailable .mx_EntityTile_name, .mx_EntityTile_unavailable .mx_EntityTile_name_hover, .mx_EntityTile_offline_beenactive .mx_EntityTile_avatar, .mx_EntityTile_offline_beenactive .mx_EntityTile_name, .mx_EntityTile_offline_beenactive .mx_EntityTile_name_hover +{ + opacity: 0.66; +} +.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar, .mx_EntityTile_offline_neveractive .mx_EntityTile_name, .mx_EntityTile_offline_neveractive .mx_EntityTile_name_hover +{ + opacity: 0.25; +} +.mx_EntityTile_unknown .mx_EntityTile_avatar, .mx_EntityTile_unknown .mx_EntityTile_name, .mx_EntityTile_unknown .mx_EntityTile_name_hover +{ + opacity: 0.25; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EventTile { + max-width: 100%; + clear: both; + padding-top: 18px; + font-size: 14px; + position: relative; +} +.mx_EventTile.mx_EventTile_info { + padding-top: 0px; +} +.mx_EventTile_avatar { + position: absolute; + top: 14px; + left: 8px; + cursor: pointer; +} +.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + top: 8px; + left: 65px; +} +.mx_EventTile_continuation { + padding-top: 0px ! important; +} +.mx_EventTile .mx_SenderProfile { + color: #dddddd; + font-size: 14px; + display: block; /* anti-zalgo, with overflow hidden */ + overflow-y: hidden; + cursor: pointer; + padding-left: 65px; /* left gutter */ + padding-bottom: 0px; + padding-top: 0px; + margin: 0px; + line-height: 22px; +} +.mx_EventTile .mx_SenderProfile .mx_SenderProfile_name, .mx_EventTile .mx_SenderProfile .mx_SenderProfile_aux { + opacity: 0.5; +} +.mx_EventTile .mx_SenderProfile .mx_Flair { + opacity: 0.7; + margin-left: 5px; +} +.mx_EventTile .mx_SenderProfile .mx_Flair img { + vertical-align: -2px; + margin-right: 2px; + border-radius: 8px; +} +.mx_EventTile .mx_MessageTimestamp { + display: block; + visibility: hidden; + white-space: nowrap; + color: #acacac; + font-size: 10px; + left: 0px; + width: 46px; /* 8 + 30 (avatar) + 8 */ + text-align: center; + position: absolute; +} +.mx_EventTile_line, .mx_EventTile_reply { + position: relative; + /* ideally should be 100px, but 95px gives us a max thumbnail size of 800x600, which is nice */ + margin-right: 110px; + padding-left: 65px; /* left gutter */ + padding-top: 4px; + padding-bottom: 2px; + border-radius: 4px; + min-height: 24px; + line-height: 22px; +} +.mx_EventTile_reply { + margin-right: 10px; +} +.mx_EventTile_info .mx_EventTile_line { + padding-left: 83px; +} +/* HACK to override line-height which is already marked important elsewhere */ +.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { + font-size: 48px ! important; + line-height: 48px ! important; +} +/* this is used for the tile for the event which is selected via the URL. + * TODO: ultimately we probably want some transition on here. + */ +.mx_EventTile_selected > .mx_EventTile_line { + border-left: #76CFA6 5px solid; + padding-left: 60px; + background-color: #353535; +} +.mx_EventTile:hover .mx_EventTile_line, .mx_EventTile.menu .mx_EventTile_line +{ + background-color: #353535; +} +.mx_EventTile_searchHighlight { + background-color: #76CFA6; + color: #2d2d2d; + border-radius: 5px; + padding-left: 2px; + padding-right: 2px; + cursor: pointer; +} +.mx_EventTile_searchHighlight a { + background-color: #76CFA6; + color: #2d2d2d; +} +.mx_EventTile_encrypting { + color: rgba(171, 221, 188, 0.4) ! important; +} +.mx_EventTile_sending { + color: #888; +} +.mx_EventTile_sending .mx_UserPill, .mx_EventTile_sending .mx_RoomPill, .mx_EventTile_sending .mx_emojione { + opacity: 0.5; +} +.mx_EventTile_notSent { + color: #f44; +} +.mx_EventTile_redacted .mx_EventTile_line .mx_UnknownBody, .mx_EventTile_redacted .mx_EventTile_reply .mx_UnknownBody { + display: block; + width: 100%; + height: 22px; + width: 250px; + border-radius: 11px; + background: repeating-linear-gradient( + -45deg, + #606060, + #606060 3px, + transparent 3px, + transparent 6px + ); + box-shadow: 0px 0px 3px #000000 inset; +} +.mx_EventTile_highlight, .mx_EventTile_highlight .markdown-body + { + color: #ff0064; +} +.mx_EventTile_contextual { + opacity: 0.4; +} +.mx_EventTile_msgOption { + float: right; + text-align: right; + position: relative; + width: 90px; + + /* Hack to stop the height of this pushing the messages apart. + Replaces margin-top: -6px. This interacts better with a read + marker being in between. Content overflows. */ + height: 1px; + + margin-right: 10px; +} +.mx_EventTile_msgOption a { + text-decoration: none; +} +.mx_EventTile_last > div > a > .mx_MessageTimestamp, .mx_EventTile:hover > div > a > .mx_MessageTimestamp, .mx_EventTile.menu > div > a > .mx_MessageTimestamp { + visibility: visible; +} +.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp { + visibility: visible; +} +.mx_EventTile_selected > div > a > .mx_MessageTimestamp { + left: 3px; + width: auto; +} +.mx_EventTile_editButton { + position: absolute; + display: inline-block; + visibility: hidden; + cursor: pointer; + top: 6px; + right: 6px; + width: 19px; + height: 19px; + background-image: url("../../img/icon_context_message_dark.svg"); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_EventTile:hover .mx_EventTile_editButton, .mx_EventTile.menu .mx_EventTile_editButton { + visibility: visible; +} +.mx_EventTile_readAvatars { + position: relative; + display: inline-block; + width: 14px; + height: 14px; + top: 29px; +} +.mx_EventTile_continuation .mx_EventTile_readAvatars, .mx_EventTile_info .mx_EventTile_readAvatars, .mx_EventTile_emote .mx_EventTile_readAvatars { + top: 7px; +} +.mx_EventTile_readAvatars .mx_BaseAvatar { + position: absolute; + display: inline-block; +} +.mx_EventTile_readAvatarRemainder { + color: #acacac; + font-size: 11px; + position: absolute; +} +/* all the overflow-y: hidden; are to trap Zalgos - + but they introduce an implicit overflow-x: auto. + so make that explicitly hidden too to avoid random + horizontal scrollbars occasionally appearing, like in + https://github.com/vector-im/vector-web/issues/1154 + */ +.mx_EventTile_content { + display: block; + overflow-y: hidden; + overflow-x: hidden; + margin-right: 34px; +} +/* De-zalgoing */ +.mx_EventTile_body { + overflow-y: hidden; +} +/* End to end encryption stuff */ +.mx_EventTile_e2eIcon { + display: block; + position: absolute; + top: 9px; + left: 46px; + cursor: pointer; +} +.mx_EventTile_e2eIcon_hidden { + display: none; +} +/* always override hidden attribute for blocked and warning */ +.mx_EventTile_e2eIcon_hidden[src="img/e2e-blocked.svg"], .mx_EventTile_e2eIcon_hidden[src="img/e2e-warning.svg"] { + display: block; +} +.mx_EventTile_keyRequestInfo { + font-size: 12px; +} +.mx_EventTile_keyRequestInfo_text { + opacity: 0.5; +} +.mx_EventTile_keyRequestInfo_text a { + color: #dddddd; + text-decoration: underline; + cursor: pointer; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p { + text-align: auto; + margin-left: 3px; + margin-right: 3px; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child { + margin-top: 0px; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child { + margin-bottom: 0px; +} +.mx_EventTile_12hr .mx_EventTile_e2eIcon { + padding-left: 5px; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { + padding-left: 60px; +} +.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line { + padding-left: 78px; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { + border-left: #76cfa5 5px solid; +} +.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { + border-left: #e8bf37 5px solid; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line > a > .mx_MessageTimestamp, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line > a > .mx_MessageTimestamp { + left: 3px; + width: auto; +} +/* +.mx_EventTile_verified .mx_EventTile_e2eIcon { + display: none; +} +*/ +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line > .mx_EventTile_e2eIcon, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line > .mx_EventTile_e2eIcon { + display: block; + left: 41px; +} +/* Various markdown overrides */ +.mx_EventTile_content .markdown-body { + font-family: inherit ! important; + white-space: normal ! important; + line-height: inherit ! important; + color: inherit; + font-size: 14px; +} +/* have to use overlay rather than auto otherwise Linux and Windows + Chrome gets very confused about vertical spacing: + https://github.com/vector-im/vector-web/issues/754 +*/ +.mx_EventTile_content .markdown-body pre { + overflow-x: overlay; + overflow-y: visible; + max-height: 30vh; +} +.mx_EventTile_content .markdown-body code { + background-color: #f8f8f8; + color: #333; +} +.mx_EventTile_pre_container { + position: relative; +} +.mx_EventTile_copyButton { + position: absolute; + display: inline-block; + visibility: hidden; + cursor: pointer; + top: 6px; + right: 6px; + width: 19px; + height: 19px; + background-image: url("../../img/icon_copy_message_dark.svg"); +} +.mx_EventTile_body pre { + border: 1px solid transparent; +} +.mx_EventTile:hover .mx_EventTile_body pre +{ + border: 1px solid #e5e5e5; +} +.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton +{ + visibility: visible; +} +.mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2, .mx_EventTile_content .markdown-body h3, .mx_EventTile_content .markdown-body h4, .mx_EventTile_content .markdown-body h5, .mx_EventTile_content .markdown-body h6 +{ + font-family: inherit ! important; + color: inherit; +} +/* Make h1 and h2 the same size as h3. */ +.mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2 +{ + font-size: 1.5em; + border-bottom: none ! important; +} +.mx_EventTile_content .markdown-body a { + color: #76CFA6; +} +.mx_EventTile_content .markdown-body .hljs { + display: inline ! important; +} +/* end of overrides */ +.mx_MatrixChat_useCompactLayout .mx_EventTile { + padding-top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info { + padding-top: 0px; + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_reply { + line-height: 20px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile { + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote { + padding-top: 8px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar { + top: 2px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 1px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation { + padding-top: 0; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 0px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 0px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_avatar { + top: 2px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_e2eIcon { + top: 7px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_editButton { + top: 3px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_readAvatars { + top: 27px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_continuation .mx_EventTile_readAvatars, .mx_MatrixChat_useCompactLayout .mx_EventTile_emote .mx_EventTile_readAvatars { + top: 5px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_info .mx_EventTile_readAvatars { + top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2 { + margin-top: 6px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body p, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body ul, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body ol, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body dl, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body blockquote, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body pre, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body table { + margin-bottom: 4px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LinkPreviewWidget { + margin-top: 15px; + margin-right: 15px; + margin-bottom: 15px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-left: 4px solid #373737; + color: #888; +} +.mx_LinkPreviewWidget_image { + -webkit-box-flex: 0; + -ms-flex: 0 0 100px; + flex: 0 0 100px; + margin-left: 15px; + text-align: center; + cursor: pointer; +} +.mx_LinkPreviewWidget_caption { + margin-left: 15px; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_LinkPreviewWidget_title { + display: inline; + font-weight: bold; + white-space: normal; +} +.mx_LinkPreviewWidget_siteName { + display: inline; +} +.mx_LinkPreviewWidget_description { + margin-top: 8px; + white-space: normal; + word-wrap: break-word; +} +.mx_LinkPreviewWidget_cancel { + visibility: hidden; + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 40px; + flex: 0 0 40px; +} +.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel { + visibility: visible; +} +.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget { + margin-top: 6px; + margin-bottom: 6px; + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberDeviceInfo { + padding: 10px 0px; +} +.mx_MemberDeviceInfo.mx_DeviceVerifyButtons { + padding: 6px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; + margin: 2px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MemberDeviceInfo_textButton:hover { +} +.mx_MemberDeviceInfo_deviceId { + font-size: 13px; +} +.mx_MemberDeviceInfo_deviceInfo { + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid rgba(0,0,0,0.1); +} +/* "Unblacklist" is too long for a regular button: make it wider and + reduce the padding. */ +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_blacklist, .mx_EncryptedEventDialog .mx_MemberDeviceInfo_unblacklist { + width: 8em; + padding-left: 1em; + padding-right: 1em; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { + float: right; + padding-left: 1em; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified { + color: #76cfa5; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified { + color: #e8bf37; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { + color: #ba6363; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberInfo { + margin-top: 20px; + padding-right: 20px; + height: 100%; + overflow-y: auto; +} +.mx_MemberInfo h2 { + margin-top: 6px; +} +.mx_MemberInfo .mx_RoomTile_nameContainer { + width: 154px; +} +.mx_MemberInfo .mx_RoomTile_badge { + display: none; +} +.mx_MemberInfo .mx_RoomTile_name { + width: 160px; +} +.mx_MemberInfo_cancel { + float: right; + margin-right: 10px; + cursor: pointer; +} +.mx_MemberInfo_avatar { + clear: both; +} +.mx_MemberInfo_avatar .mx_BaseAvatar { +} +.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { + cursor: zoom-in; +} +.mx_MemberInfo_profile { + margin-bottom: 16px; +} +.mx_MemberInfo h3 { + text-transform: uppercase; + color: #dddddd; + font-weight: 600; + font-size: 13px; + margin-top: 16px; + margin-bottom: 14px; +} +.mx_MemberInfo_profileField { + font-size: 13px; + position: relative; + background-color: #2d2d2d; +} +.mx_MemberInfo_buttons { + margin-bottom: 16px; +} +.mx_MemberInfo_field { + cursor: pointer; + font-size: 13px; + color: #76CFA6; + margin-left: 8px; + line-height: 23px; +} +.mx_MemberInfo_createRoom { + cursor: pointer; +} +.mx_MemberInfo_createRoom_label { + width: initial ! important; + cursor: pointer; +} +.mx_MemberInfo label { + font-size: 13px; +} +.mx_MemberInfo label .mx_MemberInfo_label_text { + display: inline-block; + max-width: 180px; + vertical-align: text-top; +} +.mx_MemberInfo input[type="radio"] { + vertical-align: -2px; + margin-right: 5px; + margin-left: 8px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberList, .mx_GroupMemberList, .mx_GroupRoomList { + height: 100%; + + margin-top: 12px; + margin-right: 20px; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_MemberList .mx_Spinner { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_MemberList_chevron { + position: absolute; + right: 35px; + margin-top: -15px; +} +.mx_MemberList_border { + overflow-y: auto; + + -webkit-box-ordinal-group: 2; + + -ms-flex-order: 1; + + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0px; +} +.mx_MemberList_query, .mx_GroupMemberList_query, .mx_GroupRoomList_query { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; + margin-left: 3px; + font-size: 14px; + margin-bottom: 8px; + width: 189px; +} +.mx_MemberList_query::-moz-placeholder, .mx_GroupMemberList_query::-moz-placeholder, .mx_GroupRoomList_query::-moz-placeholder { + color: #dddddd; + opacity: 0.5; + font-size: 14px; +} +.mx_MemberList_query::-webkit-input-placeholder, .mx_GroupMemberList_query::-webkit-input-placeholder, .mx_GroupRoomList_query::-webkit-input-placeholder { + color: #dddddd; + opacity: 0.5; + font-size: 14px; +} +.mx_MemberList_joined { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + + overflow-y: auto; +} +/* +.mx_MemberList_invited { + order: 3; + flex: 0 0 100px; + overflow-y: auto; +} +*/ +.mx_GroupMemberList_invited h2, .mx_MemberList_invited h2 { + text-transform: uppercase; + color: #dddddd; + font-weight: 600; + font-size: 13px; + padding-left: 3px; + padding-right: 12px; + margin-top: 8px; + margin-bottom: 4px; +} +/* we have to have display: table in order for the horizontal wrapping to work */ +.mx_MemberList_wrapper { + display: table; + table-layout: fixed; + width: 100%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageComposer_wrapper { + max-width: 960px; + vertical-align: middle; + margin: auto; + border-top: 1px solid #474747; + position: relative; +} +.mx_MessageComposer_replaced_wrapper { + margin-left: auto; + margin-right: auto; +} +.mx_MessageComposer_replaced_valign { + height: 60px; + display: table-cell; + vertical-align: middle; +} +.mx_MessageComposer_roomReplaced_icon { + float: left; + margin-right: 20px; + margin-top: 5px; + width: 31px; + height: 31px; +} +.mx_MessageComposer_roomReplaced_header { + font-weight: bold; +} +.mx_MessageComposer_autocomplete_wrapper { + position: relative; + height: 0; +} +.mx_MessageComposer_row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; +} +.mx_MessageComposer_row > div:last-child{ + padding-right: 0; +} +.mx_MessageComposer .mx_MessageComposer_avatar { + padding-left: 10px; + padding-right: 28px; +} +.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar { + display: block; +} +.mx_MessageComposer_composecontrols { + width: 100%; +} +.mx_MessageComposer_e2eIcon { + position: absolute; + left: 44px; +} +.mx_MessageComposer_noperm_error { + width: 100%; + height: 60px; + font-style: italic; + color: #888; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_MessageComposer_input_wrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + cursor: text; +} +.mx_MessageComposer_input { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + vertical-align: middle; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 60px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + font-size: 14px; + margin-right: 6px; +} +.mx_MessageComposer_editor { + width: 100%; + max-height: 120px; + min-height: 19px; + overflow: auto; + word-break: break-word; +} +.mx_MessageComposer_editor > :first-child { + margin-top: 0 ! important; +} +.mx_MessageComposer_editor > :last-child { + margin-bottom: 0 ! important; +} +@-webkit-keyframes visualbell +{ + from { background-color: #faa } + to { background-color: #2d2d2d } +} +@keyframes visualbell +{ + from { background-color: #faa } + to { background-color: #2d2d2d } +} +.mx_MessageComposer_input_error { + -webkit-animation: 0.2s visualbell; + animation: 0.2s visualbell; +} +.mx_MessageComposer_input blockquote { + color: #777; + margin: 0 0 16px; + padding: 0 15px; + border-left: 4px solid #ddd; +} +.mx_MessageComposer_input pre { + background-color: #000; + border-radius: 3px; + padding: 10px; +} +.mx_MessageComposer_input textarea { + display: block; + width: 100%; + padding: 0px; + margin-top: 6px; + margin-bottom: 6px; + border: 0px; + resize: none; + outline: none; + box-shadow: none; + color: #dddddd; + background-color: #2d2d2d; + font-size: 14px; + max-height: 120px; + overflow: auto; + /* needed for FF */ + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; +} +/* hack for FF as vertical alignment of custom placeholder text is broken */ +.mx_MessageComposer_input textarea::-moz-placeholder { + line-height: 100%; + color: #76CFA6; + opacity: 1.0; +} +.mx_MessageComposer_input textarea::-webkit-input-placeholder { + color: #76CFA6; +} +.mx_MessageComposer_upload, .mx_MessageComposer_hangup, .mx_MessageComposer_voicecall, .mx_MessageComposer_videocall, .mx_MessageComposer_apps, .mx_MessageComposer_stickers { + /*display: table-cell;*/ + /*vertical-align: middle;*/ + /*padding-left: 10px;*/ + padding-right: 5px; + cursor: pointer; + padding-top: 4px; +} +.mx_MessageComposer_upload object, .mx_MessageComposer_hangup object, .mx_MessageComposer_voicecall object, .mx_MessageComposer_videocall object, .mx_MessageComposer_apps object, .mx_MessageComposer_stickers object { + pointer-events: none; +} +.mx_MessageComposer_formatting { + cursor: pointer; + margin: 0 11px; + width: 24px; + height: 18px; +} +.mx_MessageComposer_formatbar_wrapper { + width: 100%; + background-color: #373737; + box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); +} +.mx_MessageComposer_formatbar { + margin: auto; + max-width: 960px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + height: 30px; + + box-sizing: border-box; + padding-left: 62px; + + -webkit-box-orient: horizontal; + + -webkit-box-direction: normal; + + -ms-flex-direction: row; + + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 10px; + color: #888; +} +.mx_MessageComposer_formatbar * { + margin-right: 4px; +} +.mx_MessageComposer_format_button, .mx_MessageComposer_formatbar_cancel, .mx_MessageComposer_formatbar_markdown { + cursor: pointer; +} +.mx_MessageComposer_formatbar_cancel { + margin-right: 22px; +} +.mx_MessageComposer_formatbar_markdown { + margin-right: 64px; +} +.mx_MessageComposer_input_markdownIndicator { + cursor: pointer; + height: 10px; + padding: 4px 4px 4px 0; + opacity: 0.8; +} +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input { + min-height: 50px; + } +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error { + height: 50px; + } +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PinnedEventTile { + min-height: 40px; + margin-bottom: 5px; + width: 100%; + border-radius: 5px; +} +.mx_PinnedEventTile:hover { + background-color: #353535; +} +.mx_PinnedEventTile .mx_PinnedEventTile_sender, .mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + color: #868686; + font-size: 0.8em; + vertical-align: top; + display: inline-block; + padding-bottom: 3px; +} +.mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + padding-left: 15px; + display: none; +} +.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar { + float: left; + margin-right: 10px; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp { + display: inline-block; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions { + display: block; +} +.mx_PinnedEventTile_actions { + float: right; + margin-right: 10px; + display: none; +} +.mx_PinnedEventTile_unpinButton { + display: inline-block; + cursor: pointer; + margin-left: 10px; +} +.mx_PinnedEventTile_gotoButton { + display: inline-block; + font-size: 0.7em; +} +.mx_PinnedEventTile_message { + margin-left: 50px; + position: relative; + top: 0; + left: 0; +} +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PinnedEventsPanel { + border-top: 1px solid #474747; +} +.mx_PinnedEventsPanel_body { + max-height: 300px; + overflow-y: auto; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_header { + margin: 0; + padding-top: 8px; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_cancel { + margin: 12px; + float: right; + display: inline-block; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PresenceLabel { + font-size: 11px; + opacity: 0.5; +} +/* +Copyright 2018 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ReplyPreview { + position: absolute; + bottom: 0; + z-index: 1000; + width: 100%; + border: 1px solid #474747; + background: #2d2d2d; + border-bottom: none; + border-radius: 4px 4px 0 0; + max-height: 50vh; + overflow: auto +} +.mx_ReplyPreview_section { + border-bottom: 1px solid #474747; +} +.mx_ReplyPreview_header { + margin: 12px; + color: #dddddd; + font-weight: 400; + opacity: 0.4; +} +.mx_ReplyPreview_title { + float: left; +} +.mx_ReplyPreview_cancel { + float: right; + cursor: pointer; +} +.mx_ReplyPreview_clear { + clear: both; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomDropTarget_container { + background-color: #2d2d2d; + padding-left: 18px; + padding-right: 18px; + padding-top: 8px; + padding-bottom: 7px; +} +.collapsed .mx_RoomDropTarget_container { + padding-right: 10px; + padding-left: 10px; +} +.mx_RoomDropTarget { + font-size: 13px; + padding-top: 5px; + padding-bottom: 5px; + border: 1px dashed #76CFA6; + color: #dddddd; + background-color: rgba(45,45,45,0.5); + border-radius: 4px; +} +.mx_RoomDropTarget_label { + position: relative; + margin-top: 3px; + line-height: 21px; + z-index: 1; + text-align: center; +} +.collapsed .mx_RoomDropTarget_avatar { + float: none; +} +.collapsed .mx_RoomDropTarget_label { + display: none; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* add 20px to the height of the header when editing */ +.mx_RoomHeader_editing { + -webkit-box-flex: 0 ! important; + -ms-flex: 0 0 93px ! important; + flex: 0 0 93px ! important; +} +.mx_RoomHeader_wrapper { + max-width: 960px; + margin: auto; + height: 70px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomHeader_leftRow { + margin-left: -2px; + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; +} +.mx_RoomHeader_spinner { + height: 36px; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin-right: 8px; + margin-top: -5px; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_RoomHeader_textButton:hover { +} +.mx_RoomHeader_textButton_danger { + background-color: #ff0064; +} +.mx_RoomHeader_cancelButton { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + cursor: pointer; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_rightRow { + margin-top: 4px; + background-color: #2d2d2d; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; +} +.mx_RoomHeader_info { + display: table-cell; + width: 100%; + vertical-align: middle; +} +.mx_RoomHeader_simpleHeader { + line-height: 70px; + color: #dddddd; + font-size: 22px; + font-weight: bold; + overflow: hidden; + margin-left: 63px; + text-overflow: ellipsis; + width: 100%; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton { + float: right; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon { + margin-left: 14px; + margin-right: 24px; + vertical-align: -4px; +} +.mx_RoomHeader_name { + vertical-align: middle; + width: 100%; + height: 31px; + overflow: hidden; + color: #dddddd; + font-weight: bold; + font-size: 22px; + padding-left: 19px; + padding-right: 16px; + /* why isn't text-overflow working? */ + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_RoomHeader_nametext { + display: inline-block; +} +.mx_RoomHeader_settingsHint { + color: #a2a2a2 ! important; +} +.mx_RoomHeader_searchStatus { + display: inline-block; + font-weight: normal; + opacity: 0.6; +} +.mx_RoomHeader_settingsButton object { + pointer-events: none; +} +.mx_RoomHeader_name, .mx_RoomHeader_avatar, .mx_RoomHeader_avatarPicker, .mx_RoomHeader_avatarPicker_edit, .mx_RoomHeader_avatarPicker_remove { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_remove { + position: absolute; + top: -11px; + right: -9px; +} +.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { + color: #76CFA6; +} +.mx_RoomHeader_placeholder { + color: #a2a2a2 ! important; +} +.mx_RoomHeader_editable { + border-bottom: 1px solid #656565 ! important; + min-width: 150px; + cursor: text; +} +.mx_RoomHeader_editable:focus { + border-bottom: 1px solid #76CFA6 ! important; + outline: none; + box-shadow: none; +} +.mx_RoomHeader_topic { + vertical-align: bottom; + float: left; + max-height: 38px; + color: #a2a2a2; + font-weight: 300; + font-size: 13px; + margin-left: 19px; + margin-right: 16px; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; + -webkit-column-width: 960px; + column-width: 960px; +} +.mx_RoomHeader_avatar { + display: table-cell; + width: 48px; + height: 50px; + vertical-align: middle; +} +.mx_RoomHeader_avatar .mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; +} +.mx_RoomHeader_avatarPicker { + margin-top: 23px; + position: relative; +} +.mx_RoomHeader_avatarPicker_edit { + margin-left: 16px; + margin-top: 4px; +} +.mx_RoomHeader_avatarPicker_edit > label { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_edit > input { + display: none; +} +.mx_RoomHeader_button { + margin-left: 12px; + cursor: pointer; +} +.mx_RoomHeader_button object { + pointer-events: none; +} +.mx_RoomHeader_voipButton { + display: table-cell; +} +.mx_RoomHeader_voipButtons { + margin-top: 18px; +} +.mx_RoomHeader_pinnedButton { + position: relative; +} +.mx_RoomHeader_pinsIndicator { + position: absolute; + right: 0; + bottom: 4px; + width: 8px; + height: 8px; + border-radius: 8px; + background-color: #888; +} +.mx_RoomHeader_pinsIndicatorUnread { + background-color: #ff0064; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2107 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomList { + padding-bottom: 12px; + min-height: 400px; +} +.mx_RoomList_expandButton { + margin-left: 8px; + cursor: pointer; + padding-left: 12px; + padding-right: 12px; +} +/* Evil hacky override until Chrome fixes drop and drag table cells + and we can correctly fix horizontal wrapping in the sidebar again */ +.mx_RoomList_scrollbar .gm-scroll-view { + overflow-x: hidden ! important; + overflow-y: scroll ! important; +} +/* Make sure the scrollbar is above the sticky headers from RoomList */ +.mx_RoomList_scrollbar .gm-scrollbar.-vertical { + z-index: 6; +} +.mx_RoomList_emptySubListTip_container { + background-color: #2d2d2d; + padding-left: 18px; + padding-right: 18px; + padding-top: 8px; + padding-bottom: 7px; +} +.mx_RoomList_emptySubListTip { + font-size: 13px; + padding: 5px; + border: 1px dashed #76CFA6; + color: #dddddd; + background-color: rgba(45,45,45,0.5); + border-radius: 4px; + line-height: 16px; +} +.mx_RoomList_emptySubListTip .mx_RoleButton { + vertical-align: -2px; +} +.mx_RoomList_headerButtons { + position: absolute; + right: 60px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomPreviewBar { + text-align: center; + height: 176px; + background-color: #353535; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #333; + -webkit-align-items: center; +} +.mx_RoomPreviewBar_wrapper { +} +.mx_RoomPreviewBar_invite_text { + color: #dddddd; +} +.mx_RoomPreviewBar_join_text { + color: #ff0064; +} +.mx_RoomPreviewBar_preview_text { + margin-top: 25px; + color: #a2a2a2; +} +.mx_RoomPreviewBar_join_text a { + text-decoration: underline; + cursor: pointer; +} +.mx_RoomPreviewBar_warning { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 8px; +} +.mx_RoomPreviewBar_warningIcon { + padding: 12px; +} +.mx_RoomPreviewBar_spinnerIntro { + margin-top: 50px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomSettings { + margin-left: 65px; + margin-bottom: 20px; +} +.mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton, .mx_RoomSettings_unbanButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + position: relative; + margin-right: 8px; +} +.mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton:hover, .mx_RoomSettings_unbanButton:hover { +} +.mx_RoomSettings_upgradeButton.danger { + background-color: #ff0064; +} +.mx_RoomSettings_integrationsButton_error { + position: relative; + cursor: not-allowed; +} +.mx_RoomSettings_integrationsButton_error img { + position: absolute; + right: -5px; + top: -5px; +} +.mx_RoomSettings_leaveButton, .mx_RoomSettings_integrationsButton_error { + float: right; +} +.mx_RoomSettings_integrationsButton_error .mx_RoomSettings_integrationsButton_errorPopup { + display: none; +} +.mx_RoomSettings_integrationsButton_error:hover .mx_RoomSettings_integrationsButton_errorPopup { + display: inline; +} +.mx_RoomSettings_integrationsButton_errorPopup { + position: absolute; + top: 110%; + left: -125%; + width: 348%; + padding: 2%; + font-size: 10pt; + line-height: 1.5em; + border-radius: 5px; + background-color: #76CFA6; + color: #2d2d2d; + text-align: center; +} +.mx_RoomSettings_unbanButton { + display: inline; +} +.mx_RoomSettings_e2eIcon { + padding-left: 4px; + padding-right: 7px; +} +.mx_RoomSettings_leaveButton { + margin-right: 32px; +} +.mx_RoomSettings_powerLevels { + display: table; +} +.mx_RoomSettings_powerLevel { + display: table-row; +} +.mx_RoomSettings_powerLevelKey, .mx_RoomSettings_powerLevel .mx_PowerSelector { + display: table-cell; + padding-bottom: 5px; +} +.mx_RoomSettings_powerLevelKey { + text-align: right; + padding-right: 0.3em; +} +.mx_RoomSettings h3 { + text-transform: uppercase; + color: #dddddd; + font-weight: 600; + font-size: 13px; + margin-top: 36px; + margin-bottom: 10px; +} +.mx_RoomSettings .mx_RoomSettings_toggles label { + margin-bottom: 8px; + display: block; +} +.mx_RoomSettings .mx_RoomSettings_toggles input[type="checkbox"], .mx_RoomSettings .mx_RoomSettings_toggles input[type="radio"] { + margin-right: 7px; +} +.mx_RoomSettings .mx_RoomSettings_tags input[type="checkbox"] { + margin-left: 1em; + margin-right: 7px; +} +.mx_RoomSettings .mx_RoomSettings_tags { + margin-bottom: 8px; +} +.mx_RoomSettings .mx_RoomSettings_roomColor { + display: inline-block; + position: relative; + width: 37px; + height: 37px; + border: 1px solid #979797; + margin-right: 13px; + cursor: pointer; +} +.mx_RoomSettings .mx_RoomSettings_roomColor_selected { + position: absolute; + left: 10px; + top: 4px; + cursor: default ! important; +} +.mx_RoomSettings .mx_RoomSettings_roomColorPrimary { + height: 10px; + position: absolute; + bottom: 0px; + width: 100%; +} +.mx_RoomSettings .mx_RoomSettings_aliasLabel { + margin-bottom: 8px; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTable { + margin-top: 12px; + margin-bottom: 0px; + margin-left: 56px; + display: table; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTableRow { + display: table-row; + margin-bottom: 16px; +} +.mx_RoomSettings .mx_RoomSettings_alias { + max-width: 400px; + margin-bottom: 16px; + /* + commented out so margin applies + display: table-cell; */ +} +.mx_RoomSettings .mx_RoomSettings_addAlias, .mx_RoomSettings .mx_RoomSettings_deleteAlias { + display: table-cell; + padding-left: 0.5em; + position: relative; + cursor: pointer; +} +.mx_RoomSettings .mx_RoomSettings_addAlias img, .mx_RoomSettings .mx_RoomSettings_deleteAlias img { + visibility: hidden; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_addAlias img, .mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_deleteAlias img { + visibility: visible; +} +.mx_RoomSettings_warning { + color: #ff0064; + font-weight: bold; + margin-top: 8px; + margin-bottom: 8px; +} +.mx_RoomSettings_editable { + border: 0px; + border-bottom: 1px solid #656565; + padding: 0px; + min-width: 240px; +} +.mx_RoomSettings_editable:focus { + border-bottom: 1px solid #76CFA6; + outline: none; + box-shadow: none; +} +.mx_RoomSettings_deleteAlias, .mx_RoomSettings_addAlias { + display: table-cell; + visibility: visible; +} +.mx_RoomSettings_deleteAlias:hover, .mx_RoomSettings_addAlias:hover { + visibility: visible; +} +.mx_RoomSettings_aliasPlaceholder { + color: #a2a2a2; +} +.mx_RoomSettings_buttons { + text-align: right; + margin-bottom: 16px; +} +.mx_RoomSettings_button { + display: inline; + border: 0px; + height: 36px; + border-radius: 36px; + font-weight: 400; + font-size: 15px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + margin: auto; + padding: 6px; + padding-left: 1em; + padding-right: 1em; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTile { + position: relative; + cursor: pointer; + font-size: 13px; + display: block; + height: 34px; + + background-color: #2d2d2d; +} +.mx_RoomTile_tooltip { + display: inline-block; + position: relative; + top: -54px; + left: -12px; +} +.mx_RoomTile_nameContainer { + display: inline-block; + width: 180px; + height: 24px; +} +.mx_RoomTile_avatar_container { + position: relative; +} +.mx_RoomTile_avatar { + display: inline-block; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 16px; + padding-right: 6px; + width: 24px; + height: 24px; + vertical-align: middle; +} +.mx_RoomTile_dm { + display: block; + position: absolute; + bottom: 0; + right: -5px; + z-index: 2; +} +.mx_RoomTile_name { + display: inline-block; + position: relative; + width: 165px; + vertical-align: middle; + padding-left: 6px; + padding-right: 6px; + padding-top: 2px; + padding-bottom: 3px; + color: rgba(186, 186, 186, 0.8); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_RoomTile_invite { +/* color: rgba(69, 69, 69, 0.5); */ +} +.collapsed .mx_RoomTile_nameContainer { + width: 60px; /* colapsed panel width */ +} +.collapsed .mx_RoomTile_name { + display: none; +} +.collapsed .mx_RoomTile_badge { + top: 0px; + min-width: 12px; + border-radius: 16px; + padding: 0px 4px 0px 4px; + z-index: 3; +} +/* Hide the bottom of speech bubble */ +.collapsed .mx_RoomTile_highlight .mx_RoomTile_badge:after { + display: none; +} +/* This is the bottom of the speech bubble */ +.mx_RoomTile_highlight .mx_RoomTile_badge:after { + content: ""; + position: absolute; + display: block; + width: 0; + height: 0; + margin-left: 5px; + border-top: 5px solid #ff0064; + border-right: 7px solid transparent; +} +.mx_RoomTile_badge { + display: inline-block; + min-width: 15px; + height: 15px; + position: absolute; + right: 8px; /*gutter */ + top: 9px; + border-radius: 8px; + color: #2d2d2d; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; +} +.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_menuDisplayed .mx_RoomTile_badge { + letter-spacing: 0.1em; + opacity: 1; +} +.mx_RoomTile.mx_RoomTile_noBadges .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_menuDisplayed.mx_RoomTile_noBadges .mx_RoomTile_badge { + background-color: #888; +} +.mx_RoomTile_unreadNotify .mx_RoomTile_badge { + background-color: #76CFA6; +} +.mx_RoomTile_highlight .mx_RoomTile_badge { + background-color: #ff0064; +} +.mx_RoomTile_unread, .mx_RoomTile_highlight { + font-weight: 800; +} +.mx_RoomTile_selected { + background-color: #333; +} +.mx_DNDRoomTile { + -webkit-transform: none; + transform: none; + transition: -webkit-transform 0.2s; + transition: transform 0.2s; + transition: transform 0.2s, -webkit-transform 0.2s; +} +.mx_DNDRoomTile_dragging { + -webkit-transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); +} +.mx_RoomTile:focus { + -webkit-filter: none ! important; + filter: none ! important; + background-color: rgba(255, 255, 255, 0.2); +} +.mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { + width: 140px; +} +.mx_RoomTile_arrow { + position: absolute; + right: 0px; +} +.mx_RoomTile.mx_RoomTile_transparent { + background-color: transparent; +} +.mx_RoomTile.mx_RoomTile_transparent:focus { + background-color: rgba(0, 0, 0, 0.1); +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTooltip_chevron { + position: absolute; + left: -8px; + top: 4px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_RoomTooltip_chevron:after { + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #2d2d2d; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + left: 1px; +} +.mx_RoomTooltip { + display: none; + position: fixed; + border: 1px solid rgba(187, 187, 187, 0.5); + border-radius: 5px; + background-color: #2d2d2d; + z-index: 2000; + padding: 5px; + pointer-events: none; + line-height: 14px; + font-size: 13px; + color: #dddddd; + max-width: 600px; + margin-right: 50px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomUpgradeWarningBar { + text-align: center; + height: 176px; + background-color: #353535; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #333; + -webkit-align-items: center; + padding-left: 20px; + padding-right: 20px; +} +.mx_RoomUpgradeWarningBar_header { + color: #ff0064; + font-weight: bold; +} +.mx_RoomUpgradeWarningBar_body { + color: #ff0064; +} +.mx_RoomUpgradeWarningBar_upgradelink { + color: #ff0064; + text-decoration: underline; +} +.mx_RoomUpgradeWarningBar_small { + color: #888; + font-size: 70%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchBar { + padding-top: 5px; + padding-bottom: 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_SearchBar_input { + display: inline block; + border-radius: 3px 0px 0px 3px; + border: 1px solid #3a3a3a; + font-size: 15px; + padding: 9px; + padding-left: 11px; + width: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_SearchBar_searchButton { + cursor: pointer; + margin-right: 10px; + width: 37px; + height: 37px; + border-radius: 0px 3px 3px 0px; + background-color: #76CFA6; +} +@-webkit-keyframes pulsate { + 0% { opacity: 1.0; } + 50% { opacity: 0.1; } + 100% { opacity: 1.0; } +} +@keyframes pulsate { + 0% { opacity: 1.0; } + 50% { opacity: 0.1; } + 100% { opacity: 1.0; } +} +.mx_SearchBar_searching img { + -webkit-animation: pulsate 0.5s ease-out; + animation: pulsate 0.5s ease-out; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} +.mx_SearchBar_button { + display: inline; + border: 0px; + border-radius: 36px; + font-weight: 400; + font-size: 15px; + color: #2d2d2d; + background-color: #76CFA6; + width: auto; + margin: auto; + margin-left: 7px; + padding-top: 6px; + padding-bottom: 4px; + padding-left: 24px; + padding-right: 24px; + cursor: pointer; +} +.mx_SearchBar_unselected { + background-color: #2d2d2d; + color: #76CFA6; + border: #76CFA6 1px solid; +} +.mx_SearchBar_cancel { + padding-left: 14px; + padding-right: 14px; + cursor: pointer; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchableEntityList { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_SearchableEntityList_query { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + border-radius: 3px; + border: 1px solid #3a3a3a; + padding: 9px; + color: #dddddd; + background-color: #2d2d2d; + margin-left: 3px; + font-size: 15px; + margin-bottom: 8px; + width: 189px; +} +.mx_SearchableEntityList_query::-moz-placeholder { + color: #dddddd; + opacity: 0.5; + font-size: 12px; +} +.mx_SearchableEntityList_query::-webkit-input-placeholder { + color: #dddddd; + opacity: 0.5; + font-size: 12px; +} +.mx_SearchableEntityList_listWrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + overflow-y: auto; +} +.mx_SearchableEntityList_list { + display: table; + table-layout: fixed; + width: 100%; +} +.mx_SearchableEntityList_list .mx_EntityTile_chevron { + display: none; +} +.mx_SearchableEntityList_hrWrapper { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_SearchableEntityList hr { + height: 1px; + border: 0px; + color: #dddddd; + background-color: #dddddd; + margin-right: 15px; + margin-top: 11px; + margin-bottom: 11px; +} +.mx_Stickers_content { + overflow: hidden; +} +.mx_Stickers_content_container { + overflow: hidden; + height: 300px; +} +.mx_Stickers_content .mx_AppTileFullWidth { + border: none; +} +.mx_Stickers_contentPlaceholder { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; +} +.mx_Stickers_contentPlaceholder p { + max-width: 200px; +} +.mx_Stickers_addLink { + display: inline; + cursor: pointer; + text-decoration: underline; +} +.mx_Stickers_hideStickers { + z-index: 2001; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TopUnreadMessagesBar { + margin: auto; /* centre horizontally */ + max-width: 960px; + padding-top: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #474747; +} +.mx_TopUnreadMessagesBar_scrollUp { + display: inline; + cursor: pointer; + text-decoration: underline; +} +.mx_TopUnreadMessagesBar_scrollUp img { + padding-left: 10px; + padding-right: 31px; + vertical-align: middle; +} +.mx_TopUnreadMessagesBar_scrollUp span { + opacity: 0.5; +} +.mx_TopUnreadMessagesBar_close { + float: right; + padding-right: 14px; + padding-top: 3px; + cursor: pointer; +} +.mx_MatrixChat_useCompactLayout .mx_TopUnreadMessagesBar { + padding-top: 4px; + padding-bottom: 4px; + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DevicesPanel { + display: table; + table-layout: fixed; + width: 880px; + border-spacing: 2px; +} +.mx_DevicesPanel_header { + display: table-header-group; + font-weight: bold; +} +.mx_DevicesPanel_header > div { + display: table-cell; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen { + width: 30%; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons { + width: 20%; +} +.mx_DevicesPanel_device { + display: table-row; +} +.mx_DevicesPanel_device > div { + display: table-cell; +} +.mx_DevicesPanel_myDevice { + font-weight: bold; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_IntegrationsManager .mx_Dialog { + width: 60%; + height: 70%; + overflow: hidden; + padding: 0px; + max-width: initial; + max-height: initial; +} +.mx_IntegrationsManager iframe { + background-color: #fff; + border: 0px; + width: 100%; + height: 100%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UserNotifSettings_tableRow +{ + display: table-row; +} +.mx_UserNotifSettings_inputCell { + display: table-cell; + padding-bottom: 8px; + padding-right: 8px; + width: 16px; +} +.mx_UserNotifSettings_labelCell +{ + padding-bottom: 8px; + width: 400px; + display: table-cell; +} +.mx_UserNotifSettings_pushRulesTableWrapper { + padding-bottom: 8px; +} +.mx_UserNotifSettings_pushRulesTable { + width: 100%; + table-layout: fixed; +} +.mx_UserNotifSettings_pushRulesTable thead { + font-weight: bold; + font-size: 15px; +} +.mx_UserNotifSettings_pushRulesTable tbody th { + font-weight: 400; + font-size: 15px; +} +.mx_UserNotifSettings_pushRulesTable tbody th:first-child { + text-align: left; +} +.mx_UserNotifSettings_keywords { + cursor: pointer; + color: #76CFA6; +} +.mx_UserSettings_devicesTable td { + padding-left: 20px; + padding-right: 20px; +} +.mx_UserSettings_devicesTable_nodevices { + font-style: italic; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CallView_voice { + background-color: #76CFA6; + color: #2d2d2d; + cursor: pointer; + text-align: center; + padding: 6px; + font-weight: bold; + font-size: 13px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_IncomingCallBox { + text-align: center; + border: 1px solid #a4a4a4; + border-radius: 8px; + background-color: #2d2d2d; + position: fixed; + z-index: 1000; + padding: 6px; + margin-top: -3px; + margin-left: -20px; + width: 200px; +} +.mx_IncomingCallBox_chevron { + padding: 12px; + position: absolute; + left: -21px; + top: 0px; +} +.mx_IncomingCallBox_title { + padding: 6px; + font-weight: bold; +} +.mx_IncomingCallBox_buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_IncomingCallBox_buttons_cell { + vertical-align: middle; + padding: 6px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_IncomingCallBox_buttons_decline, .mx_IncomingCallBox_buttons_accept { + vertical-align: middle; + width: 80px; + height: 36px; + line-height: 36px; + border-radius: 36px; + color: #2d2d2d; + margin: auto; +} +.mx_IncomingCallBox_buttons_decline { + background-color: #f48080; +} +.mx_IncomingCallBox_buttons_accept { + background-color: #80f480; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_VideoView { + width: 100%; + position: relative; + z-index: 30; +} +.mx_VideoView video { + width: 100%; +} +.mx_VideoView_remoteVideoFeed { + width: 100%; + background-color: #000; + z-index: 50; +} +.mx_VideoView_localVideoFeed { + width: 25%; + height: 25%; + position: absolute; + left: 10px; + bottom: 10px; + z-index: 100; +} +.mx_VideoView_localVideoFeed video { + width: auto; + height: 100%; +} +.mx_VideoView_localVideoFeed.mx_VideoView_localVideoFeed_flipped video { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} + + +/*# sourceMappingURL=theme-dark.css.map*/ \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css.map b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css.map new file mode 100644 index 0000000..71fb002 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/theme-dark.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js new file mode 100644 index 0000000..9dce776 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js @@ -0,0 +1,2 @@ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1889)}({1889:function(e,t){}}); +//# sourceMappingURL=theme-dark.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js.map b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js.map new file mode 100644 index 0000000..9b5f106 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-dark.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/f5c70ee9a294f6e4590e/theme-dark.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1889);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css new file mode 100644 index 0000000..66807a9 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css @@ -0,0 +1,9180 @@ +/* Open Sans lacks combining diacritics, so these will fall through + to the next font. Helevetica's diacritics however do not combine + nicely with Open Sans (on OSX, at least) and result in a huge + horizontal mess. Arial empirically gets it right, hence prioritising + Arial here. */ +/*** ImageView ***/ +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +html { + /* hack to stop overscroll bounce on OSX and iOS. + N.B. Breaks things when we have legitimate horizontal overscroll */ + height: 100%; + overflow: hidden; +} +body { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 15px; + background-color: #ffffff; + color: #454545; + border: 0px; + margin: 0px; + /* This should render the fonts the same accross browsers */ + -webkit-font-smoothing: subpixel-antialiased; +} +div.error, div.warning { + color: #ff0064; +} +h2 { + color: #454545; + font-weight: 400; + font-size: 18px; + margin-top: 16px; + margin-bottom: 16px; +} +a:hover, a:link, a:visited { + color: #76CFA6; +} +input[type=text], input[type=password], textarea { + background-color: transparent; + color: #454545; +} +input[type=text].error, input[type=password].error { + border: 1px solid #ff0064; +} +input[type=text]:focus, input[type=password]:focus, textarea:focus { + border: 1px solid #76CFA6; + outline: none; + box-shadow: none; +} +/* Required by Firefox */ +textarea { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; +} +/* Prevent ugly dotted highlight around selected elements in Firefox */ +::-moz-focus-inner { + border: 0; +} +/* applied to side-panels and messagepanel when in RoomSettings */ +.mx_fadable { + opacity: 1; + transition: opacity 0.2s ease-in-out; +} +.mx_fadable.mx_fadable_faded { + opacity: 0.3; + pointer-events: none; +} +/* XXX: critical hack to GeminiScrollbar to allow them to work in FF 42 and Chrome 48. + Stop the scrollbar view from pushing out the container's overall sizing, which causes + flexbox to adapt to the new size and cause the view to keep growing. + */ +.gm-scrollbar-container .gm-scroll-view { + position: absolute; +} +/* Expand thumbs on hoverover */ +.gm-scrollbar { + border-radius: 5px ! important; +} +.gm-scrollbar.-vertical { + width: 6px; + transition: width 120ms ease-out ! important; +} +.gm-scrollbar.-vertical:hover, .gm-scrollbar.-vertical:active { + width: 8px; + transition: width 120ms ease-out ! important; +} +.gm-scrollbar.-horizontal { + height: 6px; + transition: height 120ms ease-out ! important; +} +.gm-scrollbar.-horizontal:hover, .gm-scrollbar.-horizontal:active { + height: 8px; + transition: height 120ms ease-out ! important; +} +#mx_theme_accentColor { + color: #76CFA6; +} +#mx_theme_secondaryAccentColor { + color: #eaf5f0; +} +#mx_theme_tertiaryAccentColor { + color: #d3efe1; +} +.mx_Dialog_wrapper { + position: fixed; + z-index: 4000; + top: 0; + left: 0; + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +/* Spinner Dialog overide */ +.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { + width: auto; + border-radius: 8px; + padding: 0px; + box-shadow: none; +} +/* View Source Dialog overide */ +.mx_Dialog_wrapper.mx_Dialog_viewsource .mx_Dialog { + padding-left: 10px; + padding-right: 10px; +} +.mx_Dialog { + background-color: #ffffff; + color: #747474; + z-index: 4010; + font-weight: 300; + font-size: 15px; + position: relative; + padding-left: 58px; + padding-bottom: 36px; + width: 60%; + max-width: 704px; + box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2); + max-height: 80%; + overflow-y: auto; +} +.mx_Dialog_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #e9e9e9; + opacity: 0.8; +} +.mx_Dialog_lightbox .mx_Dialog_background { + opacity: 0.85; + background-color: #000; +} +.mx_Dialog_lightbox .mx_Dialog { + border-radius: 0px; + background-color: transparent; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + pointer-events: none; +} +.mx_Dialog_cancelButton { + position: absolute; + right: 11px; + top: 13px; + cursor: pointer; +} +.mx_Dialog_cancelButton object { + pointer-events: none; +} +.mx_Dialog_content { + margin: 24px 58px 68px 0; + font-size: 14px; + color: #454545; + word-wrap: break-word; +} +.mx_Dialog_buttons { + padding-right: 58px; + text-align: right; +} +.mx_Dialog button, .mx_Dialog input[type="submit"] { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin-left: 0px; + margin-right: 8px; + font-weight: 600; + border: 1px solid #76CFA6 ! important; + color: #76CFA6; + background-color: #ffffff; +} +.mx_Dialog button:hover, .mx_Dialog input[type="submit"]:hover { +} +.mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { + -webkit-filter: brightness(125%); + filter: brightness(125%); +} +.mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { + color: #ffffff; + background-color: #76CFA6; +} +.mx_Dialog button.danger, .mx_Dialog input[type="submit"].danger { + background-color: #ff0064; + border: solid 1px #ff0064; + color: #ffffff; +} +.mx_Dialog button:disabled, .mx_Dialog input[type="submit"]:disabled { + background-color: #747474; + border: solid 1px #747474; + opacity: 0.7; +} +.mx_Dialog_title { + min-height: 16px; + padding-top: 40px; + font-weight: bold; + font-size: 22px; + line-height: 1.4; + color: #454545; +} +.mx_Dialog_title.danger { + color: #ff0064; +} +.mx_TextInputDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_TextInputDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #454545; + background-color: #ffffff; +} +.mx_emojione { + height: 1em; + vertical-align: middle; +} +.mx_emojione_selected { + background-color: #76CFA6; +} +::-moz-selection { + background-color: #76CFA6; + color: #ffffff; +} +::selection { + background-color: #76CFA6; + color: #ffffff; +} +.mx_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; +} +.mx_textButton:hover { +} +.mx_button_row { + margin-top: 69px; +} +.mx_Beta { + color: red; + margin-right: 10px; + position: relative; + top: -3px; + background-color: white; + padding: 0 4px; + border-radius: 3px; + border: 1px solid darkred; + cursor: help; + transition-duration: 200ms; + font-size: smaller; + -webkit-filter: opacity(0.5); + filter: opacity(0.5); +} +.mx_Beta:hover { + color: white; + border: 1px solid gray; + background-color: darkred; +} +.mx_TintableSvgButton { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-line-pack: center; + align-content: center; +} +.mx_TintableSvgButton object { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; +} +.mx_TintableSvgButton span { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 0; + cursor: pointer; +} +/* + * Open Sans + * Includes extended Latin, Greek, Cyrillic and Vietnamese character sets + */ +/* the 'src' links are relative to the bundle.css, which is in a subdirectory. + */ +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); + font-weight: 400; + font-style: italic; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); + font-weight: 600; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); + font-weight: 600; + font-style: italic; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); + font-weight: 700; + font-style: italic; +} +/* + * Fira Mono + * Used for monospace copy, i.e. code + */ +@font-face { + font-family: 'Fira Mono'; + src: url('../../fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Fira Mono'; + src: url('../../fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} +.mx_CompatibilityPage { + width: 100%; + height: 100%; + background-color: #e55; +} +.mx_CompatibilityPage_box { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 500px; + height: 300px; + border: 1px solid; + padding: 10px; + background-color: #fcc; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ContextualMenu_wrapper { + position: fixed; + z-index: 5000; +} +.mx_ContextualMenu_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1.0; + z-index: 5000; +} +.mx_ContextualMenu { + border: solid 1px rgba(187, 187, 187, 0.5); + border-radius: 4px; + background-color: #f6f6f6; + color: #454545; + position: absolute; + padding: 6px; + font-size: 14px; + z-index: 5001; +} +.mx_ContextualMenu.mx_ContextualMenu_right { + right: 8px; +} +.mx_ContextualMenu_chevron_right { + position: absolute; + right: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-left: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_chevron_right:after { + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-left: 7px solid #f6f6f6; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + right: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_left { + left: 8px; +} +.mx_ContextualMenu_chevron_left { + position: absolute; + left: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_chevron_left:after{ + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #f6f6f6; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + left: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_top { + top: 8px; +} +.mx_ContextualMenu_chevron_top { + position: absolute; + left: 0px; + top: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-bottom: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid transparent; +} +.mx_ContextualMenu_chevron_top:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-bottom: 7px solid #f6f6f6; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + top: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_bottom { + bottom: 8px; +} +.mx_ContextualMenu_chevron_bottom { + position: absolute; + left: 0px; + bottom: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-top: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid transparent; +} +.mx_ContextualMenu_chevron_bottom:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-top: 7px solid #f6f6f6; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + bottom: 1px; +} +.mx_ContextualMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} +.mx_ContextualMenu_spinner { + display: block; + margin: 0 auto; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateRoom { + width: 960px; + margin-left: auto; + margin-right: auto; + color: #454545; +} +.mx_CreateRoom input, .mx_CreateRoom textarea { + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-top: 6px; +} +.mx_CreateRoom_description { + width: 330px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_FilePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + width: 100%; + + overflow-y: auto; +} +.mx_FilePanel .mx_RoomView_messageListWrapper { + margin-right: 20px; +} +.mx_FilePanel .mx_RoomView_MessageList h2 { + display: none; +} +/* FIXME: rather than having EventTile's default CSS be for MessagePanel, + we should make EventTile a base CSS class and customise it specifically + for usage in {Message,File,Notification}Panel. */ +.mx_FilePanel .mx_EventTile_avatar { + display: none; +} +/* Overrides for the attachment body tiles */ +.mx_FilePanel .mx_EventTile { + word-break: break-word; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody { + margin-right: 0px; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_download { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 14px; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + color: #747474; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody_size { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + font-size: 11px; + text-align: right; + white-space: nowrap; +} +/* Overides for the sender details line */ +.mx_FilePanel .mx_EventTile_senderDetails { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: -2px; +} +.mx_FilePanel .mx_EventTile_senderDetailsLink { + text-decoration: none; +} +.mx_FilePanel .mx_EventTile .mx_SenderProfile { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + line-height: initial; + padding: 0px; + font-size: 11px; + opacity: 1.0; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MessageTimestamp { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + text-align: right; + visibility: visible; + position: initial; + font-size: 11px; + opacity: 1.0; + color: #acacac; +} +/* Overrides for the wrappers around the body tile */ +.mx_FilePanel .mx_EventTile_line { + margin-right: 0px; + padding-left: 0px; +} +.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #ffffff; +} +.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupView { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow: hidden; +} +.mx_GroupView_error { + margin: auto; +} +.mx_GroupView_header { + max-width: 960px; + min-height: 70px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-bottom: 10px; +} +.mx_GroupView_header_view { + border-bottom: 1px solid #e5e5e5; + padding-bottom: 0px; +} +.mx_GroupView_header_avatar, .mx_GroupView_header_info { + display: table-cell; + vertical-align: middle; +} +.mx_GroupHeader_button { + margin-left: 12px; + cursor: pointer; +} +.mx_GroupHeader_button object { + pointer-events: none; +} +.mx_GroupView_editable { + border-bottom: 1px solid #c7c7c7 ! important; + min-width: 150px; + cursor: text; +} +.mx_GroupView_editable:focus { + border-bottom: 1px solid #76CFA6 ! important; + outline: none; + box-shadow: none; +} +.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable) { + color: #76CFA6; + cursor: pointer; +} +.mx_GroupView_avatarPicker { + position: relative; +} +.mx_GroupView_avatarPicker_edit { + position: absolute; + top: 50px; + left: 15px; +} +.mx_GroupView_avatarPicker .mx_Spinner { + width: 48px; + height: 48px ! important; +} +.mx_GroupView_header_leftCol { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + overflow: hidden; +} +.mx_GroupView_header_rightCol { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_GroupView_textButton { + display: inline-block; +} +.mx_GroupView_header_groupid { + font-weight: normal; + font-size: initial; + padding-left: 10px; +} +.mx_GroupView_header_name { + vertical-align: middle; + width: 100%; + height: 31px; + overflow: hidden; + color: #454545; + font-weight: bold; + font-size: 22px; + padding-left: 19px; + padding-right: 16px; + /* why isn't text-overflow working? */ + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_GroupView_header_shortDesc { + vertical-align: bottom; + float: left; + max-height: 42px; + color: #a2a2a2; + font-weight: 300; + font-size: 13px; + padding-left: 19px; + margin-right: 16px; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_GroupView_avatarPicker_label { + cursor: pointer; +} +.mx_GroupView_cancelButton { + padding-left: 8px; +} +.mx_GroupView_cancelButton img { + position: relative; + top: 5px; +} +.mx_GroupView input[type='radio'] { + margin: 10px 10px 0px 10px; +} +.mx_GroupView_label_text { + display: inline-block; + max-width: 80%; + vertical-align: 0.1em; + line-height: 2em; +} +.mx_GroupView_body { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_GroupView_rooms { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 200px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView h3 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-bottom: 10px; +} +.mx_GroupView_rooms_header .mx_AccessibleButton { + padding-left: 14px; + margin-bottom: 14px; + height: 24px; +} +.mx_GroupView_group { + border-top: 1px solid #e5e5e5; +} +.mx_GroupView_group_disabled { + opacity: 0.3; + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_button { + display: inline-block; +} +.mx_GroupView_rooms_header_addRow_button object { + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_label { + display: inline-block; + vertical-align: top; + line-height: 24px; + padding-left: 28px; + color: #76CFA6; +} +.mx_GroupView_rooms .mx_RoomDetailList { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-top: 1px solid #e5e5e5; + padding-top: 10px; + word-break: break-word; +} +.mx_GroupView .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_GroupView_membershipSection { + color: #888; + margin-top: 10px; +} +.mx_GroupView_membershipSubSection { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupView_membershipSubSection .mx_Spinner { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_GroupView_membershipSection_description { + /* To match textButton */ + line-height: 34px; +} +.mx_GroupView_membershipSection_description .mx_BaseAvatar { + margin-right: 10px; +} +.mx_GroupView_membershipSection .mx_GroupView_textButton { + margin-right: 0px; + margin-top: 0px; + margin-left: 8px; +} +.mx_GroupView_memberSettings_toggle label { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView_memberSettings input { + margin-right: 6px; +} +.mx_GroupView_featuredThings { + margin-top: 20px; +} +.mx_GroupView_featuredThings_header { + font-weight: bold; + font-size: 120%; + margin-bottom: 20px; +} +.mx_GroupView_featuredThings_category { + font-weight: bold; + font-size: 110%; + margin-top: 10px; +} +.mx_GroupView_featuredThings_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupView_featuredThings_addButton, .mx_GroupView_featuredThing { + display: table-cell; + text-align: center; + + width: 100px; + margin: 0px 20px; +} +.mx_GroupView_featuredThing { + position: relative; +} +.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton { + position: absolute; + top: -7px; + right: 11px; + opacity: 0.4; +} +.mx_GroupView_featuredThing .mx_BaseAvatar { + /* To prevent misalignment with mx_TintableSvg (in addButton) */ + vertical-align: initial; +} +.mx_GroupView_featuredThings_addButton object { + pointer-events: none; +} +.mx_GroupView_featuredThing_name { + word-wrap: break-word; +} +.mx_GroupView_uploadInput { + display: none; +} +.mx_GroupView_body .gm-scroll-view > *{ + margin: 11px 50px 0px 68px; +} +.mx_GroupView_groupDesc textarea { + width: 100%; + max-width: 100%; + height: 150px; +} +.mx_GroupView_groupDesc_placeholder, .mx_GroupView_changeDelayWarning { + background-color: #f7f7f7; + color: #888; + border-radius: 10px; + text-align: center; + + margin: 20px 0px; +} +.mx_GroupView_groupDesc_placeholder { + padding: 100px 20px; + cursor: pointer; +} +.mx_GroupView_changeDelayWarning { + padding: 40px 20px; +} +/* +Copyright 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_HomePage { + max-width: 960px; + width: 100%; + height: 100%; + margin-left: auto; + margin-right: auto; +} +.mx_HomePage iframe { + display: block; + width: 100%; + height: 100%; + border: 0px; +} +.mx_HomePage_body { +} +.mx_HomePage_guest_warning { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #eaf5f0; + border: 1px solid #76CFA6; + margin: 20px; + padding: 20px 40px; + border-radius: 5px; +} +.mx_HomePage_guest_warning img { + padding-right: 10px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LeftPanel { + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_LeftPanel_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + /* LeftPanel 235px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 235px; + flex: 0 0 235px; +} +.mx_LeftPanel_container.mx_LeftPanel_container_hasTagPanel { + /* TagPanel 60px + LeftPanel 235px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 295px; + flex: 0 0 295px; +} +.mx_LeftPanel_container_collapsed { + /* Collapsed LeftPanel 60px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; +} +.mx_LeftPanel_container_collapsed.mx_LeftPanel_container_hasTagPanel { + /* TagPanel 60px + Collapsed LeftPanel 60px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 120px; + flex: 0 0 120px; +} +.mx_LeftPanel_hideButton { + position: absolute; + top: 10px; + right: 0px; + padding: 8px; + cursor: pointer; +} +.mx_LeftPanel_callView { + +} +.mx_LeftPanel .mx_AppTile_mini { + height: 132px; +} +.mx_LeftPanel .mx_RoomList_scrollbar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + overflow-y: auto; + z-index: 6; +} +.mx_LeftPanel.collapsed .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 160px; + flex: 0 0 160px; + margin-bottom: 9px; +} +.mx_LeftPanel .mx_BottomLeftMenu { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + border-top: 1px solid rgba(118, 207, 166, 0.2); + margin-left: 16px; /* gutter */ + margin-right: 16px; /* gutter */ + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; + z-index: 1; +} +.mx_LeftPanel .mx_BottomLeftMenu_options { + margin-top: 18px; +} +.mx_BottomLeftMenu_options object { + pointer-events: none; +} +.collapsed .mx_RoleButton { + margin-right: 0px ! important; + padding-top: 3px ! important; + padding-bottom: 3px ! important; +} +.mx_BottomLeftMenu_options > div { + display: inline-block; +} +.mx_BottomLeftMenu_options .mx_RoleButton { + margin-left: 0px; + margin-right: 10px; + height: 30px; +} +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings { + float: right; +} +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings .mx_RoleButton { + margin-right: 0px; +} +.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings { + float: none; +} +.mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 50px; + flex: 0 0 50px; + } +.mx_MatrixChat_useCompactLayout .mx_LeftPanel.collapsed .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 160px; + flex: 0 0 160px; + } +.mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu_options { + margin-top: 12px; + } +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LoginBox { + min-height: 24px; + height: unset !important; + padding-top: 13px !important; + padding-bottom: 14px !important; + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_LoginBox_loginButton_wrapper { + text-align: center; + width: 100%; +} +.mx_LoginBox_loginButton, .mx_LoginBox_registerButton { + margin-top: 3px; + height: 40px; + border: 0px; + border-radius: 40px; + margin-left: 4px; + margin-right: 4px; + min-width: 80px; + + background-color: #76CFA6; + color: #ffffff; + + cursor: pointer; + + font-size: 15px; + padding: 0 11px; + word-break: break-word; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MatrixChat_splash { + position: relative; + height: 100%; +} +.mx_MatrixChat_splashButtons { + text-align: center; + width: 100%; + position: absolute; + bottom: 30px; +} +.mx_MatrixChat_wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; + + width: 100%; + height: 100%; +} +.mx_MatrixToolbar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + height: 40px; +} +.mx_MatrixChat_toolbarShowing { + height: auto; +} +.mx_MatrixChat { + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-ordinal-group: 3; + + -ms-flex-order: 2; + + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; +} +.mx_MatrixChat_syncError { + color: #ffffff; + background-color: #DF2A8B; + border-radius: 5px; + display: table; + padding: 30px; + position: absolute; + top: 100px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} +.mx_MatrixChat .mx_LeftPanel { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + background-color: #eaf5f0; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 235px; + + flex: 0 0 235px; +} +.mx_MatrixChat .mx_LeftPanel.collapsed { + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; +} +.mx_MatrixChat .mx_MatrixChat_middlePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + padding-left: 20px; + padding-right: 22px; + background-color: #ffffff; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; + + /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 + and https://github.com/vector-im/vector-web/issues/946. + Empirically this stops the MessagePanel's width exploding outwards when + gemini is in 'prevented' mode + */ + overflow-x: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + /* To fix https://github.com/vector-im/riot-web/issues/3298 where Safari + needed height 100% all the way down to the HomePage. Height does not + have to be auto, empirically. + */ + height: 100%; +} +.mx_MatrixChat .mx_RightPanel { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 235px; + + flex: 0 0 235px; +} +.mx_MatrixChat .mx_RightPanel.collapsed { + -webkit-box-flex: 0; + -ms-flex: 0 0 122px; + flex: 0 0 122px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MyGroups { + max-width: 960px; + margin-left: auto; + margin-right: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MyGroups .mx_RoomHeader_simpleHeader { + margin-left: 0px; +} +.mx_MyGroups_header { + /* Keep mid-point of create button aligned with icon in page header */ + margin-left: 2px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_MyGroups_headerCard { + -webkit-box-flex: 1; + -ms-flex: 1 0 50%; + flex: 1 0 50%; + margin-bottom: 30px; + min-width: 400px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { + margin-right: 13px; + height: 50px; +} +.mx_MyGroups_headerCard_button object { + /* Otherwise the SVG object absorbs clicks and the button doesn't work */ + pointer-events: none; +} +.mx_MyGroups_headerCard_header { + font-weight: bold; + margin-bottom: 10px; +} +.mx_MyGroups_headerCard_content { + padding-right: 15px; +} +/* Until the button is wired up */ +.mx_MyGroups_joinBox { + visibility: hidden; + + /* When joinBox wraps onto its own row, it should take up zero height so + that there isn't an awkward gap between MyGroups_createBox and + MyGroups_content. + */ + height: 0px; + margin: 0px; +} +.mx_MyGroups_content { + margin-left: 2px; + + -webkit-box-flex: 1; + + -ms-flex: 1 0 0px; + + flex: 1 0 0; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MyGroups_placeholder { + background-color: #f7f7f7; + color: #888; + line-height: 400px; + border-radius: 10px; + text-align: center; +} +.mx_MyGroups_joinedGroups { + border-top: 1px solid #e5e5e5; + overflow-x: hidden; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-flow: wrap; + flex-flow: wrap; + -ms-flex-line-pack: start; + align-content: flex-start; +} +.mx_MyGroups_joinedGroups .mx_GroupTile { + min-width: 300px; + max-width: 33%; + -webkit-box-flex: 1; + -ms-flex: 1 0 300px; + flex: 1 0 300px; + height: 75px; + margin: 10px 0px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; +} +.mx_GroupTile_avatar { + cursor: -webkit-grab, -webkit-grab; + cursor: grab, -webkit-grab; +} +.mx_GroupTile_profile { + margin-left: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_GroupTile_profile .mx_GroupTile_name, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_desc { + padding-right: 10px; +} +.mx_GroupTile_profile .mx_GroupTile_name { + margin: 0px; + font-size: 15px; +} +.mx_GroupTile_profile .mx_GroupTile_groupId { + font-size: 13px; +} +.mx_GroupTile_profile .mx_GroupTile_desc { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + font-size: 13px; + max-height: 36px; + overflow: hidden; +} +.mx_GroupTile_profile .mx_GroupTile_groupId { + opacity: 0.7; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NotificationPanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + width: 100%; + + overflow-y: auto; +} +.mx_NotificationPanel .mx_RoomView_messageListWrapper { + margin-right: 20px; +} +.mx_NotificationPanel .mx_RoomView_MessageList h2 { + margin-left: 0px; +} +/* FIXME: rather than having EventTile's default CSS be for MessagePanel, + we should make EventTile a base CSS class and customise it specifically + for usage in {Message,File,Notification}Panel. */ +.mx_NotificationPanel .mx_EventTile { + word-break: break-word; +} +.mx_NotificationPanel .mx_EventTile_roomName { + font-weight: bold; + font-size: 14px; +} +.mx_NotificationPanel .mx_EventTile_roomName a { + color: #454545; +} +.mx_NotificationPanel .mx_EventTile_avatar { + top: 8px; + left: 0px; +} +.mx_NotificationPanel .mx_EventTile .mx_SenderProfile, .mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { + color: #454545; + font-size: 12px; + display: inline; + padding-left: 0px; +} +.mx_NotificationPanel .mx_EventTile_senderDetails { + padding-left: 32px; + padding-top: 8px; + position: relative; +} +.mx_NotificationPanel .mx_EventTile_roomName a, .mx_NotificationPanel .mx_EventTile_senderDetails a { + text-decoration: none ! important; +} +.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { + visibility: visible; + position: initial; + display: inline; +} +.mx_NotificationPanel .mx_EventTile_line { + margin-right: 0px; + padding-left: 32px; + padding-top: 0px; + padding-bottom: 0px; + padding-right: 0px; +} +.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #ffffff; +} +.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0px; +} +.mx_NotificationPanel .mx_EventTile_content { + margin-right: 0px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RightPanel { + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RightPanel_header { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + border-bottom: 1px solid #e5e5e5; + margin-right: 20px; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +/** Fixme - factor this out with the main header **/ +.mx_RightPanel_headerButtonGroup { + margin-top: 6px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + background-color: #ffffff; + margin-left: 0px; +} +.mx_RightPanel_headerButton { + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + vertical-align: top; + padding-left: 4px; + padding-right: 5px; + text-align: center; + position: relative; +} +.mx_RightPanel_headerButton object { + pointer-events: none; + padding-bottom: 3px; +} +.mx_RightPanel_headerButton_highlight { + width: 25px; + height: 5px; + border-radius: 5px; + background-color: #76CFA6; + opacity: 0.2; +} +.mx_RightPanel_headerButton_badge { + font-size: 11px; + color: #76CFA6; + font-weight: bold; + padding-bottom: 2px; +} +.mx_RightPanel_collapsebutton { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + margin-top: 20px; +} +.mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel .mx_GroupRoomList, .mx_RightPanel_blank { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RightPanel .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + margin: auto; +} +.mx_RightPanel_footer { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + border-top: 1px solid #e5e5e5; + margin-right: 20px; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 60px; + + flex: 0 0 60px; +} +.mx_RightPanel_footer .mx_RightPanel_invite { + font-size: 14px; + color: #454545; + padding-top: 13px; + padding-left: 5px; + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.collapsed .mx_RightPanel_footer .mx_RightPanel_invite { + display: none; +} +.mx_RightPanel_invite .mx_RightPanel_icon object { + pointer-events: none; +} +.mx_RightPanel_invite .mx_RightPanel_message { + padding-left: 10px; + line-height: 18px; +} +.mx_MatrixChat_useCompactLayout .mx_RightPanel_footer { + -webkit-box-flex: 0; + -ms-flex: 0 0 50px; + flex: 0 0 50px; + } +.mx_MatrixChat_useCompactLayout .mx_RightPanel_footer .mx_RightPanel_invite { + line-height: 25px; + padding-top: 8px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomDirectory { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + margin-bottom: 12px; + color: #454545; + word-break: break-word; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomDirectory .mx_RoomHeader_simpleHeader { + margin-left: 0px; +} +.mx_RoomDirectory_list { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomDirectory_list .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomDirectory_listheader { + display: table; + table-layout: fixed; + width: 100%; + margin-top: 12px; + margin-bottom: 12px; + border-spacing: 5px; +} +.mx_RoomDirectory_searchbox { + display: table-cell; + vertical-align: middle; +} +.mx_RoomDirectory_listheader .mx_NetworkDropdown { + display: table-cell; + width: 200px; +} +.mx_RoomDirectory_tableWrapper { + overflow-y: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RoomDirectory_table { + font-size: 14px; + color: #454545; + width: 100%; + text-align: left; + table-layout: fixed; +} +.mx_RoomDirectory_roomAvatar { + width: 24px; + padding-left: 12px; + padding-right: 24px; + vertical-align: top; +} +.mx_RoomDirectory_roomDescription { + padding-bottom: 16px; +} +.mx_RoomDirectory_name { + display: inline-block; + font-weight: 600; +} +.mx_RoomDirectory_perms { + display: inline-block; +} +.mx_RoomDirectory_perm { + display: inline; + padding-left: 5px; + padding-right: 5px; + margin-right: 5px; + height: 15px; + border-radius: 11px; + background-color: #eaf5f0; + text-transform: uppercase; + font-weight: 600; + font-size: 11px; + color: #76CFA6; +} +.mx_RoomDirectory_topic { + cursor: initial; +} +.mx_RoomDirectory_alias { + font-size: 12px; + color: #a2a2a2; +} +.mx_RoomDirectory_roomMemberCount { + text-align: right; + width: 100px; + padding-right: 10px; +} +.mx_RoomDirectory_table tr { + padding-bottom: 10px; + cursor: pointer; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomStatusBar { + margin-left: 65px; + min-height: 50px; +} +/* position the indicator in the same place horizontally as .mx_EventTile_avatar. */ +.mx_RoomStatusBar_indicator { + padding-left: 17px; + padding-right: 12px; + margin-left: -73px; + margin-top: 15px; + float: left; + width: 24px; + text-align: center; +} +.mx_RoomStatusBar_callBar { + height: 50px; + line-height: 50px; +} +.mx_RoomStatusBar_placeholderIndicator span { + color: #454545; + opacity: 0.5; + position: relative; + top: -4px; +/* + animation-duration: 1s; + animation-name: bounce; + animation-direction: alternate; + animation-iteration-count: infinite; +*/ +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(2) { + -webkit-animation-delay: 0.6s; + animation-delay: 0.6s; +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(3) { + -webkit-animation-delay: 0.9s; + animation-delay: 0.9s; +} +@-webkit-keyframes bounce { + from { + opacity: 0.5; + top: 0; + } + + to { + opacity: 0.2; + top: -3px; + } +} +@keyframes bounce { + from { + opacity: 0.5; + top: 0; + } + + to { + opacity: 0.2; + top: -3px; + } +} +.mx_RoomStatusBar_typingIndicatorAvatars { + width: 52px; + margin-top: -1px; + text-align: left; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { + margin-right: -12px; + border: 1px solid #ffffff; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { + padding-left: 1px; + padding-top: 1px; +} +.mx_RoomStatusBar_typingIndicatorRemaining { + display: inline-block; + color: #acacac; + background-color: #ddd; + border: 1px solid #ffffff; + border-radius: 40px; + width: 24px; + height: 24px; + line-height: 24px; + font-size: 0.8em; + vertical-align: top; + text-align: center; + position: absolute; +} +.mx_RoomStatusBar_scrollDownIndicator { + cursor: pointer; + padding-left: 1px; +} +.mx_RoomStatusBar_unreadMessagesBar { + padding-top: 10px; + color: #ff0064; + cursor: pointer; +} +.mx_RoomStatusBar_connectionLostBar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + margin-top: 19px; + min-height: 58px; +} +.mx_RoomStatusBar_connectionLostBar img { + padding-left: 10px; + padding-right: 22px; + vertical-align: middle; + float: left; +} +.mx_RoomStatusBar_connectionLostBar_title { + color: #ff0064; +} +.mx_RoomStatusBar_connectionLostBar_desc { + color: #454545; + font-size: 13px; + opacity: 0.5; + padding-bottom: 20px; +} +.mx_RoomStatusBar_resend_link { + color: #454545 ! important; + text-decoration: underline ! important; + cursor: pointer; +} +.mx_RoomStatusBar_typingBar { + height: 50px; + line-height: 50px; + + color: #454545; + opacity: 0.5; + overflow-y: hidden; + display: block; +} +.mx_RoomStatusBar_isAlone { + height: 50px; + line-height: 50px; + + color: #454545; + opacity: 0.5; + overflow-y: hidden; + display: block; +} +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar { + min-height: 40px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator { + margin-top: 10px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_callBar { + height: 40px; + line-height: 40px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar { + height: 40px; + line-height: 40px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomSubList { + display: table; + table-layout: fixed; + width: 100%; + + background-color: rgba(0, 0, 0, 0.05); +} +.mx_RoomSubList_labelContainer { + height: 31px; /* mx_RoomSubList_label height including border */ + width: 235px; /* LHS Panel width */ + position: relative; +} +.mx_RoomSubList_label { + position: relative; + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 12px; + width: 203px; /* padding + width = LHS Panel width */ + height: 19px; /* height + padding = 31px = mx_RoomSubList_label height */ + padding-left: 16px; /* gutter */ + padding-right: 16px; /* gutter */ + padding-top: 6px; + padding-bottom: 6px; + cursor: pointer; + background-color: #eaf5f0; +} +.mx_RoomSubList_label.mx_RoomSubList_fixed { + position: fixed; + top: 0; + z-index: 5; + /* pointer-events: none; */ +} +.collapsed .mx_RoomSubList_label { + height: 17px; + width: 28px; /* collapsed LHS Panel width */ +} +.collapsed .mx_RoomSubList_labelContainer { + width: 28px; /* collapsed LHS Panel width */ +} +.mx_RoomSubList_roomCount { + display: inline-block; + font-size: 12px; + font-weight: normal; + color: #76CFA6; + padding-left: 5px; + text-transform: none; +} +.collapsed .mx_RoomSubList_roomCount { + display: none; +} +.mx_RoomSubList_badge { + display: inline-block; + min-width: 15px; + height: 15px; + position: absolute; + right: 8px; /*gutter */ + top: 7px; + border-radius: 8px; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; + background-color: #76CFA6; +} +.mx_RoomSubList_label .mx_RoomSubList_badge:hover { + -webkit-filter: brightness(125%); + filter: brightness(125%); +} +/* +.collapsed .mx_RoomSubList_badge { + display: none; +} +*/ +.mx_RoomSubList_badgeHighlight { + background-color: #ff0064; +} +/* This is the bottom of the speech bubble */ +.mx_RoomSubList_badgeHighlight:after { + content: ""; + position: absolute; + display: block; + width: 0; + height: 0; + margin-left: 5px; + border-top: 5px solid #ff0064; + border-right: 7px solid transparent; +} +/* Hide the bottom of speech bubble */ +.collapsed .mx_RoomSubList_badgeHighlight:after { + display: none; +} +.mx_RoomSubList_chevron { + pointer-events: none; + position: absolute; + right: 41px; + top: 11px; +} +.mx_RoomSubList_chevronDown { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #76CFA6; +} +.mx_RoomSubList_chevronUp { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 6px solid #76CFA6; +} +.mx_RoomSubList_chevronRight { + width: 0; + height: 0; + border-top: 5px solid transparent; + border-left: 6px solid #76CFA6; + border-bottom: 5px solid transparent; +} +/* The overflow section */ +.mx_RoomSubList_ellipsis { + display: block; + line-height: 11px; + height: 18px; + position: relative; + cursor: pointer; + font-size: 13px; + + background-color: #eaf5f0; +} +.collapsed .mx_RoomSubList_ellipsis { + height: 20px; +} +.mx_RoomSubList_line { + display: inline-block; + width: 159px; + border-top: dotted 2px #76CFA6; + vertical-align: middle; +} +.collapsed .mx_RoomSubList_line { + display: none; +} +.mx_RoomSubList_more { + display: inline-block; + text-transform: uppercase; + font-size: 10px; + font-weight: 600; + text-align: left; + color: #76CFA6; + padding-left: 7px; + padding-right: 7px; + padding-left: 7px; + vertical-align: middle; +} +.collapsed .mx_RoomSubList_more { + display: none; +} +.mx_RoomSubList_moreBadge { + display: inline-block; + min-width: 15px; + height: 13px; + position: absolute; + right: 8px; /*gutter */ + top: -2px; + border-radius: 8px; + border: solid 1px #76CFA6; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 3px; + padding-right: 3px; + background-color: #ffffff; + vertical-align: middle; +} +.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeNotify { + background-color: #76CFA6; + border: 0; + padding-top: 3px; + padding-left: 4px; + padding-right: 4px; +} +.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeHighlight { + background-color: #ff0064; + border: 0; + padding-top: 3px; + padding-left: 4px; + padding-right: 4px; +} +.collapsed .mx_RoomSubList_moreBadge { + position: static; + margin-left: 16px; + margin-top: 2px; +} +.mx_RoomSubList_ellipsis .mx_RoomSubList_chevronDown { + position: relative; + top: 4px; + left: 2px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomView { + word-wrap: break-word; + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + width: 100%; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomView .mx_RoomHeader { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +.mx_RoomView_fileDropTarget { + min-width: 0px; + max-width: 960px; + width: 100%; + font-size: 18px; + text-align: center; + + pointer-events: none; + + padding-left: 12px; + padding-right: 12px; + margin-left: -12px; + + border-top-left-radius: 10px; + border-top-right-radius: 10px; + + background-color: rgba(255,255,255,0.5); + border: 2px #e1dddd solid; + border-bottom: none; + position: absolute; + top: 70px; + bottom: 0px; + z-index: 3000; +} +.mx_RoomView_fileDropTargetLabel { + top: 50%; + width: 100%; + margin-top: -50px; + position: absolute; +} +.mx_RoomView_auxPanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + min-width: 0px; + max-width: 960px; + width: 100%; + margin: 0px auto; + + overflow: auto; + border-bottom: 1px solid #e5e5e5; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 auto; + + flex: 0 0 auto; +} +.mx_RoomView_auxPanel_apps { + max-width: 1920px ! important; +} +.mx_RoomView_body { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomView_body .mx_RoomView_topUnreadMessagesBar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; +} +.mx_RoomView_body .mx_RoomView_messagePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_RoomView_body .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + margin: auto; +} +.mx_RoomView_body .mx_RoomView_statusArea { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; +} +.mx_RoomView_body .mx_MessageComposer { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_RoomView_messagePanel { + width: 100%; + overflow-y: auto; +} +.mx_RoomView_messageListWrapper { + max-width: 960px; + margin: auto; + + min-height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; + + -webkit-box-pack: end; + + -ms-flex-pack: end; + + justify-content: flex-end; +} +.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomView_empty { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + font-size: 13px; + padding-left: 3em; + padding-right: 3em; + margin-right: 20px; + margin-top: 33%; + text-align: center; +} +.mx_RoomView_MessageList { + width: 100%; + list-style-type: none; + padding: 0px; +} +.mx_RoomView_MessageList li { + clear: both; +} +li.mx_RoomView_myReadMarker_container { + height: 0px; + margin: 0px; + padding: 0px; + border: 0px; +} +hr.mx_RoomView_myReadMarker { + border-top: solid 1px #76CFA6; + border-bottom: solid 1px #76CFA6; + margin-top: 0px; + position: relative; + top: -1px; + z-index: 1; +} +.mx_RoomView_statusArea { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + + max-height: 0px; + background-color: #ffffff; + z-index: 1000; + overflow: hidden; + + transition: all .2s ease-out; +} +.mx_RoomView_statusArea_expanded { + max-height: 100px; +} +.mx_RoomView_statusAreaBox { + max-width: 960px; + margin: auto; + min-height: 50px; +} +.mx_RoomView_statusAreaBox_line { + margin-left: 65px; + border-top: 1px solid #e5e5e5; + height: 1px; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { + background-color: #ffffff; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { + color: #ffffff; + opacity: 1.0; +} +.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line { + margin-top: 2px; + border: none; + height: 0px; +} +.mx_RoomView_inCall .mx_MessageComposer_wrapper { + border-top: 2px hidden; + padding-top: 1px; +} +.mx_RoomView_inCall .mx_RoomView_statusAreaBox { + background-color: #76CFA6; + color: #ffffff; + position: relative; +} +.mx_RoomView_voipChevron { + position: absolute; + bottom: -11px; + right: 11px; +} +.mx_RoomView_voipButton { + float: right; + margin-right: 13px; + margin-top: 10px; + cursor: pointer; +} +.mx_RoomView_voipButton object { + pointer-events: none; +} +.mx_RoomView .mx_MessageComposer { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 2px; +} +.mx_RoomView_ongoingConfCallNotification { + width: 100%; + text-align: center; + background-color: #ff0064; + color: #ffffff; + font-weight: bold; + padding: 6px 0; + cursor: pointer; +} +.mx_RoomView_ongoingConfCallNotification a { + color: #ffffff ! important; +} +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList { + margin-bottom: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox { + min-height: 42px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchBox { + height: 24px; + margin-left: 16px; + margin-right: 16px; + padding-top: 24px; + padding-bottom: 22px; + + border-bottom: 1px solid rgba(118, 207, 166, 0.2); + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; +} +.mx_SearchBox_searchButton { + margin-right: 10px; + margin-top: 5px; + pointer-events: none; +} +.mx_SearchBox_closeButton { + cursor: pointer; + margin-top: -5px; +} +.mx_SearchBox_search { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 0px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 12px; + margin-top: -2px; + height: 24px; + border: 0px ! important; + /* border-bottom: 1px solid rgba(0, 0, 0, 0.1) ! important; */ + border: 0px; +} +.mx_SearchBox_minimise, .mx_SearchBox_maximise { + margin-top: 3px; + cursor: pointer; +} +.mx_SearchBox_minimise { + margin-left: 10px; +} +.mx_SearchBox_maximise { + margin-left: 9px; +} +.mx_SearchBox object { + pointer-events: none; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TagPanel { + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; + background-color: #d3efe1; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_TagPanel_items_selected { + cursor: pointer; +} +.mx_TagPanel .mx_TagPanel_clearButton_container { + /* Constant height within flex mx_TagPanel */ + height: 70px; + width: 60px; + + -webkit-box-flex: 0; + + -ms-flex: none; + + flex: none; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_TagPanel .mx_TagPanel_clearButton object { + /* Same as .mx_SearchBox padding-top */ + margin-top: 24px; + pointer-events: none; +} +.mx_TagPanel .mx_TagPanel_divider { + height: 0px; + width: 42px; + border-bottom: 1px solid rgba(118, 207, 166, 0.2); +} +.mx_TagPanel .mx_TagPanel_scroller { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_TagPanel .mx_TagPanel_tagTileContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + + height: 100%; +} +.mx_TagPanel .mx_TagTile { + padding: 6px 3px; + opacity: 0.5; + position: relative; +} +.mx_TagPanel .mx_TagTile:focus, .mx_TagPanel .mx_TagTile:hover, .mx_TagPanel .mx_TagTile.mx_TagTile_selected { + opacity: 1; +} +.mx_TagPanel .mx_TagTile.mx_TagTile_selected { + /* To offset border of mx_TagTile_avatar */ + padding: 3px 0px; +} +.mx_TagPanel .mx_TagTile.mx_TagTile_selected .mx_TagTile_avatar .mx_BaseAvatar { + border: 3px solid #76CFA6; + background-color: #76CFA6; + border-radius: 60px; + + /* In case this is a "initial" avatar */ + display: block; + height: 35px; + width: 35px; +} +.mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_TagTile_tooltip { + position: relative; + top: -30px; + left: 5px; +} +.mx_TagTile_context_button { + min-width: 15px; + height: 15px; + position: absolute; + right: -5px; + top: 1px; + border-radius: 8px; + background-color: #dbdbdb; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; +} +.mx_TagPanel_groupsButton { + margin-bottom: 17px; + margin-top: 18px; + height: 25px; +} +.mx_TagPanel_groupsButton object { + pointer-events: none; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UploadBar { + position: relative; +} +.mx_UploadBar_uploadProgressOuter { + height: 5px; + margin-left: 63px; + margin-top: -1px; + padding-bottom: 5px; +} +.mx_UploadBar_uploadProgressInner { + background-color: #76CFA6; + height: 5px; +} +.mx_UploadBar_uploadFilename { + margin-top: 5px; + margin-left: 65px; + opacity: 0.5; + color: #454545; +} +.mx_UploadBar_uploadIcon { + float: left; + margin-top: 5px; + margin-left: 14px; +} +.mx_UploadBar_uploadCancel { + float: right; + margin-top: 5px; + margin-right: 10px; + position: relative; + opacity: 0.6; + cursor: pointer; + z-index: 1; +} +.mx_UploadBar_uploadBytes { + float: right; + margin-top: 5px; + margin-right: 30px; + color: #76CFA6; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UserSettings { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_UserSettings .mx_RoomHeader { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +.mx_UserSettings_body { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + margin-top: -20px; + overflow-y: auto; +} +.mx_UserSettings h3 { + clear: both; + margin-left: 63px; + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-top: 26px; + margin-bottom: 10px; +} +.mx_UserSettings_section h3 { + margin-left: 0px; +} +.mx_UserSettings_spinner { + display: inline-block; + vertical-align: middle; + margin-right: 12px; + width: 32px; + height: 32px; +} +.mx_UserSettings_button { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + display: inline; + margin: auto; +} +.mx_UserSettings_button:hover { +} +.mx_UserSettings_button.danger { + background-color: #ff0064; +} +.mx_UserSettings_section { + margin-left: 63px; + margin-top: 28px; + margin-bottom: 28px; +} +.mx_UserSettings_cryptoSection ul { + display: table; +} +.mx_UserSettings_cryptoSection li { + display: table-row; +} +.mx_UserSettings_cryptoSection label, .mx_UserSettings_cryptoSection span { + display: table-cell; + padding-right: 1em; +} +.mx_UserSettings_passwordWarning { + /* To move the "Sign out" button out of the way */ + clear: both; + color: #ff0064; + margin-bottom: 5px; +} +.mx_UserSettings_importExportButtons { + padding-top: 10px; + padding-left: 40px; +} +.mx_UserSettings_importExportButtons .mx_UserSettings_button { + margin-right: 1em; +} +.mx_UserSettings_toggle input { + width: 16px; + margin-right: 8px; + margin-bottom: 8px; +} +.mx_UserSettings_toggle label { + padding-bottom: 21px; +} +.mx_UserSettings_accountTable +.mx_UserSettings_notifTable +{ + display: table; +} +.mx_UserSettings_notifTable .mx_Spinner { + position: absolute; +} +.mx_UserSettings_language { + width: 200px; +} +.mx_UserSettings_webRtcDevices_dropdown { + width: 50%; +} +.mx_UserSettings_profileTable +{ + display: table; + float: left; +} +.mx_UserSettings_profileTableRow +{ + display: table-row; +} +.mx_UserSettings_profileLabelCell +{ + padding-bottom: 21px; + display: table-cell; + font-weight: bold; + padding-right: 24px; +} +.mx_UserSettings_profileInputCell { + display: table-cell; + padding-bottom: 21px; + width: 240px; +} +.mx_UserSettings_profileInputCell input, .mx_UserSettings_profileInputCell .mx_EditableText +{ + display: inline-block; + border: 0px; + border-bottom: 1px solid rgba(151, 151, 151, 0.5); + padding: 0px; + width: 240px; + color: rgba(74, 74, 74, 0.9); + font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; + font-size: 16px; +} +.mx_UserSettings_threepidButton { + display: table-cell; + padding-left: 0.5em; + position: relative; + cursor: pointer; +} +.mx_UserSettings_phoneSection { + display:table; +} +.mx_UserSettings_phoneCountry { + width: 70px; + display: table-cell; +} +input.mx_UserSettings_phoneNumberField { + margin-left: 3px; + width: 172px; + border: 1px solid transparent; +} +.mx_UserSettings_changePasswordButton { + float: right; + margin-right: 32px; + margin-left: 32px; +} +.mx_UserSettings_logout { + float: right; + margin-right: 32px; + margin-left: 32px; +} +.mx_UserSettings_avatarPicker { + margin-left: 32px; + margin-right: 32px; + float: right; + cursor: pointer; +} +.mx_UserSettings_avatarPicker_img .mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; +} +.mx_UserSettings_avatarPicker_edit { + text-align: center; + margin-top: 10px; +} +.mx_UserSettings_avatarPicker_edit img { + cursor: pointer; +} +.mx_UserSettings_avatarPicker_edit > input { + display: none; +} +.mx_UserSettings_avatarPicker_imgContainer { + display: inline-block; +} +.mx_UserSettings_avatarPicker_remove { + display: inline-block; + float: right; + margin-right: -15px; +} +.mx_UserSettings_advanced_spoiler, .mx_UserSettings_link { + cursor: pointer; + color: #76CFA6; + word-break: break-all; +} +.mx_UserSettings_analyticsModal table { + margin: 10px 0px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ViewSource pre { + text-align: left; + font-size: 12px; + padding: 0.5em 1em 0.5em 1em; + word-wrap: break-word; + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Login { + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + + overflow: auto; +} +.mx_Login h2 { + font-weight: 300; + margin-top: 32px; + margin-bottom: 20px; +} +.mx_Login_box { + width: 300px; + min-height: 450px; + padding-top: 50px; + padding-bottom: 50px; + margin: auto; +} +.mx_Login_logo { + text-align: center; + height: 150px; + margin-bottom: 45px; +} +.mx_Login_logo img { + max-height: 100% +} +.mx_Login_support { + text-align: center; + font-size: 13px; + margin-top: 0px; + opacity: 0.7; +} +.mx_Login_field { + width: 280px; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-bottom: 14px; +} +.mx_Login_field_disabled { + opacity: 0.3; +} +.mx_Login_fieldLabel { + margin-top: -10px; + margin-left: 8px; + margin-bottom: 14px; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_submit { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + width: 100%; + margin-top: 35px; + margin-bottom: 24px; +} +.mx_Login_submit:hover { +} +.mx_Login_submit:disabled { + opacity: 0.3; +} +.mx_Login_label { + font-size: 13px; + opacity: 0.8; +} +.mx_Login_checkbox, .mx_Login_radio { + margin-right: 10px; +} +.mx_Login_create { + display: block; + text-align: center; + width: 100%; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_create:link { + color: #454545; +} +.mx_Login_links { + display: block; + text-align: center; + margin-top: 15px; + width: 100%; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_links a:link { + color: #454545; +} +.mx_Login_prompt { + padding-top: 15px; + padding-bottom: 15px; + font-size: 13px; +} +.mx_Login_forgot { + font-size: 15px; +} +.mx_Login_forgot:link { + color: #454545; +} +.mx_Login_loader { + display: inline; + position: relative; + top: 2px; + left: 8px; +} +.mx_Login_loader .mx_Spinner { + display: inline; +} +.mx_Login_loader .mx_Spinner img { + width: 16px; + height: 16px; +} +.mx_Login_error { + color: #ff0064; + font-weight: bold; + text-align: center; +/* + height: 24px; +*/ + margin-top: 12px; + margin-bottom: 12px; +} +.mx_Login_type_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 14px; +} +.mx_Login_type_label { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + line-height: 35px; +} +.mx_Login_type_dropdown { + display: inline-block; + min-width: 170px; + -ms-flex-item-align: end; + align-self: flex-end; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_Login_field_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_Login_field_prefix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-right: 0px; + border-radius: 3px 0px 0px 3px; + + text-align: center; +} +.mx_Login_field_suffix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-left: 0px; + border-radius: 0px 3px 3px 0px; + + text-align: center; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_Login_username { + height: 16px; + -ms-flex-negative: 1; + flex-shrink: 1; + min-width: 0px; +} +.mx_Login_phoneNumberField { + height: 16px; +} +.mx_Login_field_has_prefix { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.mx_Login_field_has_suffix { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.mx_Login_phoneSection { + display:-webkit-box; + display:-ms-flexbox; + display:flex; +} +.mx_Login_phoneCountry { + margin-bottom: 14px; + width: 150px; + + /* To override mx_Login_field_prefix */ + text-align: left; + padding: 0px; + background-color: #ffffff; +} +.mx_Login_field_prefix .mx_Dropdown_input { + /* To use prefix border instead of dropdown border */ + border: 0; +} +.mx_Login_phoneCountry .mx_Dropdown_option { + /* + To match height of mx_Login_field + 33px + 2px border from mx_Dropdown_option = 35px + */ + height: 33px; + line-height: 33px; +} +.mx_Login_phoneCountry .mx_Dropdown_option img { + margin: 3px; + vertical-align: top; +} +.mx_Login_language { + margin-left: auto; + margin-right: auto; + min-width: 60%; +} +.mx_Login_language_div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 12px; + margin-bottom: 12px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_BaseAvatar { + position: relative; +} +.mx_BaseAvatar_initial { + position: absolute; + left: 0px; + color: #ffffff; + text-align: center; + speak: none; + pointer-events: none; + font-weight: normal; +} +.mx_BaseAvatar_image { + border-radius: 40px; + vertical-align: top; + background-color: #ffffff; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageContextMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} +.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet { + font-weight: bold; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTileContextMenu_tag_field, .mx_RoomTileContextMenu_leave { + padding-top: 8px; + padding-right: 20px; + padding-bottom: 8px; + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 16px; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { + font-weight: bold; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { + display: none; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon_set { + display: inline-block; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldDisabled { + color: rgba(0, 0, 0, 0.2); +} +.mx_RoomTileContextMenu_tag_icon { + padding-right: 8px; + padding-left: 4px; + display: inline-block +} +.mx_RoomTileContextMenu_tag_icon_set { + padding-right: 8px; + padding-left: 4px; + display: none; +} +.mx_RoomTileContextMenu_separator { + margin-top: 0; + margin-bottom: 0; + border-bottom-style: none; + border-left-style: none; + border-right-style: none; + border-top-style: solid; + border-top-width: 1px; + border-color: rgba(187, 187, 187, 0.5); +} +.mx_RoomTileContextMenu_leave { + color: #ff0064; +} +.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { + /* Something to indicate that the icon is the set tag */ +} +.mx_RoomTileContextMenu_notif_picker { + position: absolute; + top: 16px; + left: 5px; +} +.mx_RoomTileContextMenu_notif_field { + padding-top: 4px; + padding-right: 6px; + padding-bottom: 10px; + padding-left: 8px; /* 20px */ + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { + font-weight: bold; +} +.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldDisabled { + color: rgba(0, 0, 0, 0.2); +} +.mx_RoomTileContextMenu_notif_icon { + padding-right: 4px; + padding-left: 4px; +} +.mx_RoomTileContextMenu_notif_activeIcon { + display: inline-block; + opacity: 0; + position: relative; + left: -5px; +} +.mx_RoomTileContextMenu_notif_fieldSet .mx_RoomTileContextMenu_notif_activeIcon { + opacity: 1; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TagTileContextMenu_item { + padding-top: 8px; + padding-right: 20px; + padding-bottom: 8px; + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 16px; +} +.mx_TagTileContextMenu_item_icon { + padding-right: 8px; + padding-left: 4px; + display: inline-block +} +.mx_TagTileContextMenu_separator { + margin-top: 0; + margin-bottom: 0; + border-bottom-style: none; + border-left-style: none; + border-right-style: none; + border-top-style: solid; + border-top-width: 1px; + border-color: rgba(187, 187, 187, 0.5); +} +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_BugReportDialog_field_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_BugReportDialog_field_label { + -ms-flex-preferred-size: 150px; + flex-basis: 150px; + + text-align: right; + + padding-top: 9px; + padding-right: 4px; + + line-height: 18px; +} +.mx_BugReportDialog_field_input { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + + /* taken from mx_ChatInviteDialog_inputContainer */ + border-radius: 3px; + border: solid 1px #f0f0f0; + + font-size: 14px; + + padding-left: 4px; + padding-right: 4px; + padding-top: 7px; + padding-bottom: 7px; + + margin-bottom: 4px; +} +.mx_BugReportDialog_field_input[type="text" i] { + padding-top: 9px; + padding-bottom: 9px; +} +/* +Copyright 2016 Aviral Dasgupta + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ChangelogDialog_content { + max-height: 300px; + overflow: auto; +} +.mx_ChangelogDialog_li { + padding: 0.2em; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles { + margin-top: 24px; +} +.mx_ChatCreateOrReuseDialog .mx_Dialog_content { + margin-bottom: 24px; + + /* + To stop spinner that mx_ChatCreateOrReuseDialog_profile replaces from causing a + height change + */ + min-height: 100px; +} +.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge { + display: none; +} +.mx_ChatCreateOrReuseDialog_profile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_ChatCreateOrReuseDialog_profile_name { + padding: 14px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* Using a textarea for this element, to circumvent autofill */ +.mx_ChatInviteDialog_input, .mx_ChatInviteDialog_input:focus +{ + height: 26px; + font-size: 14px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + padding-left: 12px; + padding-right: 12px; + margin: 0 !important; + border: 0 !important; + outline: 0 !important; + width: 1000%; /* Pretend that this is an "input type=text" */ + resize: none; + overflow: hidden; + vertical-align: middle; + box-sizing: border-box; + word-wrap: nowrap; +} +.mx_ChatInviteDialog .mx_Dialog_content { + min-height: 50px +} +.mx_ChatInviteDialog_inputContainer { + border-radius: 3px; + border: solid 1px #f0f0f0; + line-height: 36px; + padding-left: 4px; + padding-right: 4px; + padding-top: 1px; + padding-bottom: 1px; + max-height: 150px; + overflow-x: hidden; + overflow-y: auto; +} +.mx_ChatInviteDialog_error { + margin-top: 10px; + color: #ff0064; +} +.mx_ChatInviteDialog_cancel { + position: absolute; + right: 11px; + top: 13px; + cursor: pointer; +} +.mx_ChatInviteDialog_cancel object { + pointer-events: none; +} +/* +Copyright 2017 Vector Creations Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ConfirmUserActionDialog .mx_Dialog_content { + min-height: 48px; + margin-bottom: 24px; +} +.mx_ConfirmUserActionDialog_avatar { + float: left; + margin-right: 20px; + margin-top: -2px; +} +.mx_ConfirmUserActionDialog_name { + font-size: 18px; +} +.mx_ConfirmUserActionDialog_userId { + font-size: 13px; +} +.mx_ConfirmUserActionDialog_reasonField { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #454545; + background-color: #ffffff; + + border-radius: 3px; + border: solid 1px #f0f0f0; + line-height: 36px; + padding-left: 16px; + padding-right: 16px; + padding-top: 1px; + padding-bottom: 1px; + + margin-bottom: 24px; + + width: 90%; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateGroupDialog_inputRow { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_CreateGroupDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateGroupDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #454545; + background-color: #ffffff; +} +.mx_CreateGroupDialog_input_hasPrefixAndSuffix { + border-radius: 0px; +} +.mx_CreateGroupDialog_input_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_CreateGroupDialog_prefix, .mx_CreateGroupDialog_suffix { + height: 35px; + padding: 0px 5px; + line-height: 37px; + background-color: #f0f0f0; + border: 1px solid #f0f0f0; + text-align: center; +} +.mx_CreateGroupDialog_prefix { + border-right: 0px; + border-radius: 3px 0px 0px 3px; +} +.mx_CreateGroupDialog_suffix { + border-left: 0px; + border-radius: 0px 3px 3px 0px; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateRoomDialog_details_summary { + outline: none; +} +.mx_CreateRoomDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateRoomDialog_input_container { + padding-right: 20px; +} +.mx_CreateRoomDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #454545; + background-color: #ffffff; + width: 100%; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DeactivateAccountDialog .mx_Dialog_content { + margin-bottom: 30px; +} +.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section { + margin-top: 60px; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DevTools_dialog { + padding-right: 58px; +} +.mx_DevTools_content { + margin: 10px 0; +} +.mx_DevTools_RoomStateExplorer_button, .mx_DevTools_RoomStateExplorer_query { + margin-bottom: 10px; + width: 100%; +} +.mx_DevTools_label_left { + float: left; +} +.mx_DevTools_label_right { + float: right; +} +.mx_DevTools_label_bottom { + clear: both; + border-bottom: 1px solid #e5e5e5; +} +.mx_DevTools_inputRow +{ + display: table-row; +} +.mx_DevTools_inputLabelCell +{ + display: table-cell; + font-weight: bold; + padding-right: 24px; +} +.mx_DevTools_inputCell { + display: table-cell; + width: 240px; +} +.mx_DevTools_inputCell input +{ + display: inline-block; + border: 0; + border-bottom: 1px solid rgba(151, 151, 151, 0.5); + padding: 0; + width: 240px; + color: rgba(74, 74, 74, 0.9); + font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; + font-size: 16px; +} +.mx_DevTools_textarea { + font-size: 12px; + max-width: 624px; + min-height: 250px; + padding: 10px; + width: 100%; +} +.mx_DevTools_tgl { + display: none; +} +.mx_DevTools_tgl, .mx_DevTools_tgl:after, .mx_DevTools_tgl:before, .mx_DevTools_tgl *, .mx_DevTools_tgl *:after, .mx_DevTools_tgl *:before, .mx_DevTools_tgl + .mx_DevTools_tgl-btn { + box-sizing: border-box; + } +.mx_DevTools_tgl::-moz-selection, .mx_DevTools_tgl:after::-moz-selection, .mx_DevTools_tgl:before::-moz-selection, .mx_DevTools_tgl *::-moz-selection, .mx_DevTools_tgl *:after::-moz-selection, .mx_DevTools_tgl *:before::-moz-selection, .mx_DevTools_tgl + .mx_DevTools_tgl-btn::-moz-selection { + background: none; + } +.mx_DevTools_tgl::selection, .mx_DevTools_tgl:after::selection, .mx_DevTools_tgl:before::selection, .mx_DevTools_tgl *::selection, .mx_DevTools_tgl *:after::selection, .mx_DevTools_tgl *:before::selection, .mx_DevTools_tgl + .mx_DevTools_tgl-btn::selection { + background: none; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn { + outline: 0; + display: block; + width: 7em; + height: 2em; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + position: relative; + display: block; + content: ""; + width: 50%; + height: 100%; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after { + left: 0; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + display: none; + } +.mx_DevTools_tgl:checked + .mx_DevTools_tgl-btn:after { + left: 50%; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn { + padding: 2px; + transition: all .2s ease; + font-family: sans-serif; + -webkit-perspective: 100px; + perspective: 100px; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + display: inline-block; + transition: all .4s ease; + width: 100%; + text-align: center; + position: absolute; + line-height: 2em; + font-weight: bold; + color: #fff; + top: 0; + left: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + border-radius: 4px; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { + content: attr(data-tg-on); + background: #02C66F; + -webkit-transform: rotateY(-180deg); + transform: rotateY(-180deg); + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + background: #FF3A19; + content: attr(data-tg-off); + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { + -webkit-transform: rotateY(-20deg); + transform: rotateY(-20deg); + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { + -webkit-transform: rotateY(0); + transform: rotateY(0); + left: 0; + background: #7FC6A6; + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { + -webkit-transform: rotateY(20deg); + transform: rotateY(20deg); + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EncryptedEventDialog .mx_MemberDeviceInfo { + float: right; + padding: 0px; + margin-right: 42px; +} +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + background-color: #ffffff; + color: #76CFA6; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupAddressPicker_checkboxContainer{ + margin-top: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupAddressPicker_checkboxContainer input[type="checkbox"] { + /* Stop flex from shrinking the checkbox */ + width: 20px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomUpgradeDialog { + padding-right: 70px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetEmailDialog_email_input { + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: rgba(74, 74, 74, 0.9); + background-color: #ffffff; + font-size: 15px; + width: 100%; + max-width: 280px; + margin-bottom: 10px; +} +.mx_SetEmailDialog_email_input:focus { + outline: none; + box-shadow: none; + border: 1px solid #76CFA6; +} +.mx_SetEmailDialog_email_input_placeholder { +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetMxIdDialog .mx_Dialog_title { + padding-right: 40px; +} +.mx_SetMxIdDialog_input_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_SetMxIdDialog_input { + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #454545; + background-color: #ffffff; + font-size: 15px; + width: 100%; + max-width: 280px; +} +.mx_SetMxIdDialog_input.error, .mx_SetMxIdDialog_input.error:focus { + border: 1px solid #ff0064; +} +.mx_SetMxIdDialog_input_group .mx_Spinner { + height: 37px; + padding-left: 10px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_SetMxIdDialog .success { + color: #76CFA6; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetPasswordDialog_change_password input { + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #454545; + background-color: #ffffff; + font-size: 15px; + width: 100%; + max-width: 280px; + margin-bottom: 10px; +} +.mx_SetPasswordDialog_change_password_button { + margin-top: 68px; +} +.mx_SetPasswordDialog .mx_Dialog_content { + margin-bottom: 0px; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ShareDialog { + padding-right: 58px; +} +.mx_ShareDialog hr { + margin-top: 25px; + margin-bottom: 25px; + border-color: #747474; +} +.mx_ShareDialog_content { + margin: 10px 0; +} +.mx_ShareDialog_matrixto { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + border-radius: 5px; + border: solid 1px #747474; + margin-bottom: 10px; + margin-top: 30px; + padding: 10px; +} +.mx_ShareDialog_matrixto a { + text-decoration: none; +} +.mx_ShareDialog_matrixto_link { + -ms-flex-negative: 1; + flex-shrink: 1; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_ShareDialog_matrixto_copy { + -ms-flex-negative: 0; + flex-shrink: 0; + cursor: pointer; + margin-left: 20px; + display: inherit; +} +.mx_ShareDialog_matrixto_copy > div { + background-image: url("../../img/icon_copy_message.svg"); + margin-left: 5px; + width: 20px; + height: 20px; +} +.mx_ShareDialog_split { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_ShareDialog_qrcode_container { + float: left; + background-color: #ffffff; + padding: 5px; + border-radius: 5px; + height: 256px; + width: 256px; + margin-right: 64px; +} +.mx_ShareDialog_social_container { + display: inline-block; + width: 299px; +} +.mx_ShareDialog_social_icon { + display: -ms-inline-grid; + display: inline-grid; + margin-right: 10px; + margin-bottom: 10px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Dialog_unknownDevice .mx_Dialog { + height: 100%; + padding-right: 58px; +} +.mx_UnknownDeviceDialog { + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_UnknownDeviceDialog .mx_Dialog_content { + margin-bottom: 24px; +} +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo { + float: right; + clear: both; + padding: 0px; + padding-top: 8px; +} +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; + background-color: #ffffff; + color: #76CFA6; +} +.mx_UnknownDeviceDialog .mx_UnknownDeviceDialog_deviceList li { + height: 40px; + border-bottom: 1px solid #e5e5e5; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NetworkDropdown { + position: relative; +} +.mx_NetworkDropdown_input { + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_NetworkDropdown_arrow { + border-color: #454545 transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + display: block; + height: 0; + position: absolute; + right: 10px; + top: 14px; + width: 0 +} +.mx_NetworkDropdown_networkoption { + height: 35px; + line-height: 35px; + padding-left: 8px; + padding-right: 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mx_NetworkDropdown_networkoption img { + margin: 5px; + width: 25px; + vertical-align: middle; +} +input.mx_NetworkDropdown_networkoption, input.mx_NetworkDropdown_networkoption:focus { + border: 0; + padding-top: 0; + padding-bottom: 0; +} +.mx_NetworkDropdown_menu { + position: absolute; + left: -1px; + right: -1px; + top: 100%; + z-index: 2; + margin: 0; + padding: 0px; + border-radius: 3px; + border: 1px solid #76CFA6; + background-color: #ffffff; +} +.mx_NetworkDropdown_menu .mx_NetworkDropdown_networkoption:hover { + background-color: #dddddd; +} +.mx_NetworkDropdown_menu_network { + font-weight: bold; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AccessibleButton:focus { + outline: 0; + -webkit-filter: brightness(125%); + filter: brightness(125%); +} +.mx_AccessibleButton { + cursor: pointer; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AddressSelector { + position: absolute; + background-color: #ffffff; + width: 485px; + max-height: 116px; + overflow-y: auto; + border-radius: 3px; + background-color: #ffffff; + border: solid 1px #76CFA6; + cursor: pointer; +} +.mx_AddressSelector.mx_AddressSelector_empty { + display: none; +} +.mx_AddressSelector_addressListElement .mx_AddressTile { + background-color: #ffffff; + border: solid 1px #ffffff; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected { + background-color: #eaf5f0; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile { + background-color: #eaf5f0; + border: solid 1px #eaf5f0; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AddressTile { + display: inline-block; + border-radius: 3px; + background-color: rgba(74, 73, 74, 0.1); + border: solid 1px #f0f0f0; + line-height: 26px; + color: #454545; + font-size: 14px; + font-weight: normal; + margin-right: 4px; +} +.mx_AddressTile.mx_AddressTile_error { + background-color: rgba(255, 0, 100, 0.1); + color: #ff0064; + border-color: #ff0064; +} +.mx_AddressTile_network { + display: inline-block; + position: relative; + padding-left: 2px; + padding-right: 4px; + vertical-align: middle; +} +.mx_AddressTile_avatar { + display: inline-block; + position: relative; + padding-left: 2px; + padding-right: 7px; + vertical-align: middle; +} +.mx_AddressTile_mx { + display: inline-block; + margin: 0; + border: 0; + padding: 0; +} +.mx_AddressTile_name { + display: inline-block; + padding-right: 4px; + font-weight: 600; + overflow: hidden; + height: 26px; + vertical-align: middle; +} +.mx_AddressTile_name.mx_AddressTile_justified { + width: 180px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_id { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_id.mx_AddressTile_justified { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknownMx { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_unknownMxl.mx_AddressTile_justified { + width: 380px; /* name + id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_email { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_email.mx_AddressTile_justified { + width: 200px; /* same as id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknown { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_unknown.mx_AddressTile_justified { + width: 380px; /* name + id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_dismiss { + display: inline-block; + padding-right: 11px; + padding-left: 1px; + cursor: pointer; +} +.mx_AddressTile_dismiss object { + pointer-events: none; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DirectorySearchBox { + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; +} +.mx_DirectorySearchBox_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-left: 9px; + padding-right: 9px; +} +.mx_DirectorySearchBox_input { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border: 0; + padding: 0; + font-weight: 300; + font-size: 13px; +} +input[type=text].mx_DirectorySearchBox_input:focus { + border: 0; +} +.mx_DirectorySearchBox_joinButton { + display: table-cell; + padding: 3px; + padding-left: 10px; + padding-right: 10px; + background-color: #eaf5f0; + border-radius: 3px; + background-image: url('../../img/icon-return.svg'); + background-position: 8px 70%; + background-repeat: no-repeat; + text-indent: 18px; + font-weight: 600; + font-size: 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.mx_DirectorySearchBox_clear_wrapper { + display: table-cell; +} +.mx_DirectorySearchBox_clear { + display: inline-block; + vertical-align: middle; + background: url('../../img/icon_context_delete.svg'); + background-position: 0 50%; + background-repeat: no-repeat; + width: 15px; + height: 15px; + cursor: pointer; +} +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Dropdown { + position: relative; +} +.mx_Dropdown_disabled { + opacity: 0.3; +} +.mx_Dropdown_input { + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_Dropdown_input:focus { + border-color: #76CFA6; +} +/* Disable dropdown highlight on focus */ +.mx_Dropdown_input.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_Dropdown_arrow { + border-color: #454545 transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + display: block; + height: 0; + position: absolute; + right: 10px; + top: 14px; + width: 0 +} +.mx_Dropdown.left_aligned .mx_Dropdown_arrow { + left: 10px; +} +.mx_Dropdown_input > .mx_Dropdown_option { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_Dropdown.left_aligned .mx_Dropdown_input > .mx_Dropdown_option { + padding-left: 25px; +} +.mx_Dropdown_option { + height: 35px; + line-height: 35px; + padding-left: 8px; + padding-right: 8px; +} +.mx_Dropdown_option div { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_Dropdown_option img { + margin: 5px; + width: 27px; + vertical-align: middle; +} +input.mx_Dropdown_option, input.mx_Dropdown_option:focus { + border: 0; + padding-top: 0; + padding-bottom: 0; + width: 60%; +} +.mx_Dropdown_menu { + position: absolute; + left: -1px; + right: -1px; + top: 100%; + z-index: 2; + margin: 0; + padding: 0px; + border-radius: 3px; + border: 1px solid #76CFA6; + background-color: #ffffff; + max-height: 200px; + overflow-y: auto; +} +.mx_Dropdown_menu .mx_Dropdown_option { + height: auto; + min-height: 35px; +} +.mx_Dropdown_menu .mx_Dropdown_option_highlight { + background-color: #dddddd; +} +.mx_Dropdown_menu { + font-weight: bold; +} +.mx_Dropdown_searchPrompt { + font-weight: normal; + margin-left: 5px; + margin-bottom: 5px; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EditableItemList { + margin-top: 12px; + margin-bottom: 0px; +} +.mx_EditableItem { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-left: 56px; +} +.mx_EditableItem .mx_EditableItem_editable { + border: 0px; + border-bottom: 1px solid #c7c7c7; + padding: 0px; + min-width: 240px; + max-width: 400px; + margin-bottom: 16px; +} +.mx_EditableItem .mx_EditableItem_editable:focus { + border-bottom: 1px solid #76CFA6; + outline: none; + box-shadow: none; +} +.mx_EditableItem .mx_EditableItem_editablePlaceholder { + color: #a2a2a2; +} +.mx_EditableItem .mx_EditableItem_addButton, .mx_EditableItem .mx_EditableItem_removeButton { + padding-left: 0.5em; + position: relative; + cursor: pointer; + + visibility: hidden; +} +.mx_EditableItem:hover .mx_EditableItem_addButton, .mx_EditableItem:hover .mx_EditableItem_removeButton { + visibility: visible; +} +.mx_EditableItemList_label { + margin-bottom: 8px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* This has got to be the most fragile piece of CSS ever written. + But empirically it works on Chrome/FF/Safari + */ +.mx_ImageView { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + height: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_ImageView_lhs { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; + min-width: 60px; +} +.mx_ImageView_content { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + /* min-width hack needed for FF */ + min-width: 0px; + height: 90%; + -webkit-box-flex: 15; + -ms-flex: 15 15 0px; + flex: 15 15 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_ImageView_content img { + max-width: 100%; + /* XXX: max-height interacts badly with flex on Chrome and doesn't relayout properly until you refresh */ + max-height: 100%; + /* object-fit hack needed for Chrome due to Chrome not re-laying-out until you refresh */ + -o-object-fit: contain; + object-fit: contain; + /* background-image: url('../../img/trans.png'); */ + pointer-events: all; +} +.mx_ImageView_labelWrapper { + position: absolute; + top: 0px; + right: 0px; + height: 100%; + overflow: auto; + pointer-events: all; +} +.mx_ImageView_label { + text-align: left; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 30px; + padding-right: 30px; + min-height: 100%; + max-width: 240px; + color: #ffffff; +} +.mx_ImageView_cancel { + position: absolute; + top: 0px; + right: 0px; + padding: 35px; + cursor: pointer; +} +.mx_ImageView_name { + font-size: 18px; + margin-bottom: 6px; + word-wrap: break-word; +} +.mx_ImageView_metadata { + font-size: 15px; + opacity: 0.5; +} +.mx_ImageView_download { + display: table; + margin-top: 24px; + margin-bottom: 6px; + border-radius: 5px; + background-color: #454545; + font-size: 14px; + padding: 9px; + border: 1px solid #ffffff; +} +.mx_ImageView_size { + font-size: 11px; +} +.mx_ImageView_link { + color: #ffffff ! important; + text-decoration: none ! important; +} +.mx_ImageView_button { + font-size: 15px; + opacity: 0.5; + margin-top: 18px; + cursor: pointer; +} +.mx_ImageView_shim { + height: 30px; +} +.mx_ImageView_rhs { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + -webkit-box-flex: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; + min-width: 300px; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_InlineSpinner { + display: inline; +} +.mx_InlineSpinner img { + margin: 0px 6px; + vertical-align: -3px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberEventListSummary { + position: relative; +} +.mx_TextualEvent.mx_MemberEventListSummary_summary { + font-size: 14px; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.mx_MemberEventListSummary_avatars { + display: inline-block; + margin-right: 8px; + padding-top: 8px; + line-height: 12px; +} +.mx_MemberEventListSummary_avatars .mx_BaseAvatar { + margin-right: -4px; + cursor: pointer; +} +.mx_MemberEventListSummary_toggle { + color: #76CFA6; + cursor: pointer; + float: right; + margin-right: 10px; + margin-top: 8px; +} +.mx_MemberEventListSummary_line { + border-bottom: 1px solid #e5e5e5; + margin-left: 63px; + line-height: 30px; +} +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary { + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary .mx_EventTile_line { + line-height: 20px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary_line { + line-height: 22px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary_toggle { + margin-top: 3px; + } +.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_MemberEventListSummary_summary { + font-size: 13px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ProgressBar { + height: 5px; + border: 1px solid #000; +} +.mx_ProgressBar_fill { + height: 100%; + background-color: #000; +} +/* +Copyright 2018 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ReplyThread { + margin-top: 0; +} +.mx_ReplyThread .mx_DateSeparator { + font-size: 1em !important; + margin-top: 0; + margin-bottom: 0; + padding-bottom: 1px; + bottom: -5px; +} +.mx_ReplyThread_show { + cursor: pointer; +} +blockquote.mx_ReplyThread { + margin-left: 0; + padding-left: 10px; + border-left: 4px solid #ddd; +} +.mx_UserPill, .mx_RoomPill, .mx_GroupPill, .mx_AtRoomPill { + border-radius: 16px; + display: inline-block; + height: 20px; + line-height: 20px; + padding-left: 5px; +} +.mx_EventTile_body .mx_UserPill, .mx_EventTile_body .mx_RoomPill, .mx_EventTile_body .mx_GroupPill { + cursor: pointer; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_UserPill, .mx_UserPill { + color: #454545; + background-color: rgba(0, 0, 0, 0.1); + padding-right: 5px; +} +.mx_UserPill_selected { + background-color: #76CFA6 ! important; +} +.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me, .mx_EventTile_content .mx_AtRoomPill, .mx_MessageComposer_input .mx_AtRoomPill { + color: #ffffff; + background-color: #ff0064; + padding-right: 5px; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_RoomPill, .mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_RoomPill, .mx_GroupPill { + color: #ffffff; + background-color: #aaa; + padding-right: 5px; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_GroupPill { + color: #ffffff; + background-color: #aaa; + padding-right: 5px; +} +.mx_UserPill .mx_BaseAvatar, .mx_RoomPill .mx_BaseAvatar, .mx_GroupPill .mx_BaseAvatar, .mx_AtRoomPill .mx_BaseAvatar { + position: relative; + left: -3px; + top: 2px; +} +.mx_Markdown_BOLD { + font-weight: bold; +} +.mx_Markdown_ITALIC { + font-style: italic; +} +.mx_Markdown_CODE { + padding: .2em 0; + margin: 0; + font-size: 85%; + background-color: rgba(0, 0, 0, 0.04); + border-radius: 3px; +} +.mx_Markdown_HR { + display: block; + background: #e9e9e9; +} +.mx_Markdown_STRIKETHROUGH { + text-decoration: line-through; +} +/* +Copyright 2107 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoleButton { + margin-left: 4px; + margin-right: 4px; + cursor: pointer; + display: inline-block; +} +.mx_RoleButton object { + pointer-events: none; +} +.mx_RoleButton_tooltip { + display: inline-block; + position: relative; + top: -25px; + left: 6px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Spinner { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 100%; + height: 100%; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MatrixChat_middlePanel .mx_Spinner { + height: auto; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SyntaxHighlight { + /* inhibit hljs styling */ + background: none !important; + color: #747474 !important; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ToolTipButton { + display: inline-block; + width: 11px; + height: 11px; + margin-left: 5px; + + border: 2px solid #dbdbdb; + border-radius: 20px; + color: #dbdbdb; + + transition: opacity 0.2s ease-in; + opacity: 0.6; + + line-height: 11px; + text-align: center; + + cursor: pointer; +} +.mx_ToolTipButton:hover { + opacity: 1.0; +} +.mx_ToolTipButton_container { + position: relative; + top: -18px; + left: 4px; +} +.mx_ToolTipButton_helpText { + width: 400px; + text-align: start; + line-height: 17px !important; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MatrixToolbar { + background-color: #76CFA6; + color: #ffffff; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MatrixToolbar_warning { + margin-left: 16px; + margin-right: 8px; + margin-top: -2px; +} +.mx_MatrixToolbar_info { + padding-left: 16px; + padding-right: 8px; + background-color: #2A9EDF; +} +.mx_MatrixToolbar_error { + padding-left: 16px; + padding-right: 8px; + background-color: #DF2A8B; +} +.mx_MatrixToolbar_content { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MatrixToolbar_link +{ + color: #ffffff ! important; + text-decoration: underline ! important; + cursor: pointer; +} +.mx_MatrixToolbar_clickable { + cursor: pointer; +} +.mx_MatrixToolbar_close { + cursor: pointer; +} +.mx_MatrixToolbar_close img { + display: block; + float: right; + margin-right: 10px; +} +.mx_MatrixToolbar_action { + margin-right: 16px; +} +.mx_MatrixToolbar_changelog { + white-space: pre; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupPublicity_toggle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 8px; +} +.mx_GroupPublicity_toggle > label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_GroupPublicity_toggle > label, .mx_GroupPublicity_toggle .mx_GroupTile { + width: 50%; +} +.mx_GroupPublicity_toggle input { + margin-right: 8px; + vertical-align: -4px; +} +.mx_GroupPublicity_toggle .mx_GroupTile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupRoomTile { + position: relative; + color: #454545; + cursor: pointer; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupUserSettings_groupPublicity_scrollbox { + height: 200px; + border: 1px solid #e5e5e5; + border-radius: 3px; + margin-right: 32px; + overflow: hidden; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_InteractiveAuthEntryComponents_msisdnWrapper { + text-align: center; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry { + font-size: 200%; + font-weight: bold; + border: 1px solid #c7c7c7; + border-radius: 3px; + width: 6em; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry:focus { + border: 1px solid #76CFA6; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit { + margin-top: 4px; + margin-bottom: 5px; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { + background-color: #747474; + cursor: default; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ServerConfig { + margin-top: 7px; +} +.mx_ServerConfig .mx_Login_field { + margin-top: 4px; + margin-bottom: 5px; +} +.mx_ServerConfig_help:link { + opacity: 0.8; + font-size: 13px; + font-weight: 300; + color: #454545; +} +.mx_ServerConfig_selector { + text-align: center; + width: 302px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateEvent { + background-color: #f7f7f7; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; +} +.mx_CreateEvent_image { + float: left; + padding-right: 20px; + width: 72px; + height: 34px; +} +.mx_CreateEvent_header { + font-weight: bold; +} +.mx_CreateEvent_link { +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DateSeparator { + clear: both; + margin-top: 32px; + margin-bottom: 8px; + margin-left: 63px; + padding-bottom: 6px; + border-bottom: 1px solid #e5e5e5; +} +/* +Copyright 2017 Vector Creations Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MEmoteBody { + white-space: pre-wrap; +} +.mx_MEmoteBody_sender { + cursor: pointer; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MFileBody_download { + color: #76CFA6; +} +.mx_MFileBody_download a { + color: #76CFA6; + text-decoration: none; + cursor: pointer; +} +.mx_MFileBody_download object { + margin-left: -16px; + padding-right: 4px; + margin-top: -4px; + vertical-align: middle; + pointer-events: none; +} +/* Remove the border and padding for iframes for download links. */ +.mx_MFileBody_download iframe { + margin: 0px; + padding: 0px; + border: none; + width: 100%; + /* Set the height of the iframe to be 1 line of text. + * Iframes don't automatically size themselves to fit their content. + * So either we have to fix the height of the iframe using CSS or + * use javascript's cross-origin postMessage API to communicate how + * big the content of the iframe is. */ + height: 1.5em; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MImageBody { + display: block; + margin-right: 34px; +} +.mx_MImageBody_thumbnail { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; +} +.mx_MImageBody_thumbnail_container { + overflow: hidden; + position: relative; +} +.mx_MImageBody_thumbnail_spinner { + position: absolute; + left: 50%; + top: 50%; +} +.mx_MImageBody_thumbnail_spinner > * { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MNoticeBody { + white-space: pre-wrap; + opacity: 0.6; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MStickerBody_wrapper { + padding: 20px 0px; +} +.mx_MStickerBody_tooltip { + position: absolute; + top: 50%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MTextBody { + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageTimestamp { +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomAvatarEvent { + opacity: 0.5; + overflow-y: hidden; +} +.mx_RoomAvatarEvent_avatar { + display: inline; + position: relative; + top: 5px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TextualEvent { + opacity: 0.5; + overflow-y: hidden; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UnknownBody { + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AppsDrawer { + margin: 5px; +} +.mx_AppsDrawer_hidden { + display: none; +} +.mx_AppsContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_AddWidget_button { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + cursor: pointer; + padding-right: 12px; + padding: 0; + margin: 5px auto 5px auto; + color: #76CFA6; + font-size: 12px; +} +.mx_AddWidget_button_full_width { + max-width: 960px; +} +.mx_SetAppURLDialog_input { + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #e5e5e5; + background-color: #ffffff; + font-size: 15px; +} +.mx_AppTile { + max-width: 960px; + width: 50%; + margin-right: 5px; + border: 1px solid #e5e5e5; + border-radius: 2px; + background-color: #e9e9e9; +} +.mx_AppTile:last-child { + margin-right: 1px; +} +.mx_AppTileFullWidth { + max-width: 960px; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border: 1px solid #e5e5e5; + border-radius: 2px; +} +.mx_AppTile_mini { + max-width: 960px; + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} +.mx_AppTile_persistedWrapper { + height: 280px; +} +.mx_AppTile_mini .mx_AppTile_persistedWrapper { + height: 114px; +} +.mx_AppTileMenuBar { + margin: 0; + padding: 2px 10px; + border-bottom: 1px solid #e5e5e5; + font-size: 10px; + background-color: #d3efe1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + cursor: pointer; +} +.mx_AppTileMenuBarTitle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + pointer-events: none; +} +.mx_AppTileMenuBarWidgets { + float: right; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AppTileMenuBarWidget { + cursor: pointer; + width: 10px; + height: 10px; + padding: 1px; + transition-duration: 500ms; + border: 1px solid transparent; +} +.mx_AppTileMenuBarWidgetDelete { + -webkit-filter: none; + filter: none; +} +.mx_AppTileMenuBarWidget:hover { + border: 1px solid #454545; + border-radius: 2px; +} +.mx_AppTileBody{ + height: 280px; + width: 100%; + overflow: hidden; +} +.mx_AppTileBody_mini { + height: 112px; + width: 100%; + overflow: hidden; +} +.mx_AppTileBody_mini iframe { + border: none; + width: 100%; + height: 100%; +} +.mx_AppTileBody iframe { + width: 100%; + height: 280px; + overflow: hidden; + border: none; + padding: 0; + margin: 0; + display: block; +} +.mx_AppTileMenuBarWidgetPadding { + margin-right: 5px; +} +.mx_AppIconTile { + background-color: #454545; + border: 1px solid rgba(0, 0, 0, 0); + width: 200px; + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); + transition: 0.3s; + border-radius: 3px; + margin: 5px; + display: inline-block; +} +.mx_AppIconTile.mx_AppIconTile_active { + color: #76CFA6; + border-color: #76CFA6; +} +.mx_AppIconTile:hover { + border: 1px solid #76CFA6; + box-shadow: 0 0 10px 5px rgba(200,200,200,0.5); +} +.mx_AppIconTile_content { + padding: 2px 16px; + height: 60px; + overflow: hidden; +} +.mx_AppIconTile_content h4 { + margin-top: 5px; + margin-bottom: 2px; +} +.mx_AppIconTile_content p { + margin-top: 0; + margin-bottom: 5px; + font-size: smaller; +} +.mx_AppIconTile_image { + padding: 10px; + width: 75%; + max-width:100px; + max-height:100px; + width: auto; + height: auto; +} +.mx_AppIconTile_imageContainer { + text-align: center; + width: 100%; + background-color: white; + border-radius: 3px 3px 0 0; + height: 155px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +form.mx_Custom_Widget_Form div { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_AppPermissionWarning { + text-align: center; + background-color: #ffffff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AppPermissionWarningImage { + margin: 10px 0; +} +.mx_AppPermissionWarningImage img { + width: 100px; +} +.mx_AppPermissionWarningText { + max-width: 400px; + margin: 10px auto 10px auto; + color: #454545; +} +.mx_AppPermissionWarningTextLabel { + font-weight: bold; + display: block; +} +.mx_AppPermissionWarningTextURL { + color: #76CFA6; +} +.mx_AppPermissionButton { + padding: 5px; + border-radius: 5px; + color: #ff0064; + background-color: #ffffff; +} +.mx_AppPermissionButton:hover { + background-color: #454545; + cursor: pointer; +} +.mx_AppLoading { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-weight: bold; + position: relative; + height: 280px; +} +.mx_AppLoading .mx_Spinner { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_AppLoading_spinner_fadeIn { + -webkit-animation-fill-mode: backwards; + animation-fill-mode: backwards; + -webkit-animation-duration: 200ms; + animation-duration: 200ms; + -webkit-animation-delay: 500ms; + animation-delay: 500ms; + -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; + animation-name: mx_AppLoading_spinner_fadeIn_animation; +} +@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { + from { opacity: 0 } + to { opacity: 1 } +} +@keyframes mx_AppLoading_spinner_fadeIn_animation { + from { opacity: 0 } + to { opacity: 1 } +} +.mx_AppLoading iframe { + display: none; +} +.mx_Autocomplete { + position: absolute; + bottom: 0; + z-index: 1001; + width: 100%; + border: 1px solid #e5e5e5; + background: #ffffff; + border-bottom: none; + border-radius: 4px 4px 0 0; + max-height: 50vh; + overflow: auto +} +.mx_Autocomplete_ProviderSection { + border-bottom: 1px solid #e5e5e5; +} +.mx_Autocomplete_Completion_container_pill { + margin: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +/* a "block" completion takes up a whole line */ +.mx_Autocomplete_Completion_block { + height: 34px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 0 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #454545; +} +.mx_Autocomplete_Completion_block * { + margin: 0 3px; +} +.mx_Autocomplete_Completion_pill { + border-radius: 17px; + height: 34px; + padding: 0px 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #454545; +} +.mx_Autocomplete_Completion_pill > * { + margin: 0 3px; +} +.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title, .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle, .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description { + /* Ellipsis for long names/subtitles/descriptions*/ + max-width: 150px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +/* container for pill-style completions */ +.mx_Autocomplete_Completion_container_pill { + margin: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-flow: wrap; + flex-flow: wrap; +} +.mx_Autocomplete_Completion.selected, .mx_Autocomplete_Completion:hover { + background: #f6f6f6; + outline: none; +} +.mx_Autocomplete_provider_name { + margin: 12px; + color: #454545; + font-weight: 400; + opacity: 0.4; +} +/* styling for common completion elements */ +.mx_Autocomplete_Completion_subtitle { + font-style: italic; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_Autocomplete_Completion_description { + color: gray; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EntityTile { + display: table-row; + position: relative; + color: #454545; + cursor: pointer; +} +.mx_EntityTile_invite { + display: table-cell; + vertical-align: middle; + margin-left: 10px; + width: 26px; +} +.mx_EntityTile_avatar, .mx_GroupRoomTile_avatar { + display: table-cell; + padding-left: 3px; + padding-right: 12px; + padding-top: 4px; + padding-bottom: 4px; + vertical-align: middle; + width: 36px; + height: 36px; + position: relative; +} +.mx_EntityTile_power { + position: absolute; + width: 16px; + height: 17px; + top: 0px; + right: 6px; +} +.mx_EntityTile_name, .mx_GroupRoomTile_name { + display: table-cell; + vertical-align: middle; + overflow: hidden; + font-size: 14px; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 155px; +} +.mx_EntityTile_details { + display: table-cell; + padding-right: 14px; + vertical-align: middle; +} +.mx_EntityTile_name_hover { + font-size: 13px; +} +.mx_EntityTile_chevron { + margin-top: 8px; + margin-right: -4px; + margin-left: 6px; + float: right; +} +.mx_EntityTile_ellipsis .mx_EntityTile_name { + font-style: italic; + color: #454545; +} +.mx_EntityTile_invitePlaceholder .mx_EntityTile_name { + font-style: italic; + color: #454545; +} +.mx_EntityTile_unavailable .mx_EntityTile_avatar, .mx_EntityTile_unavailable .mx_EntityTile_name, .mx_EntityTile_unavailable .mx_EntityTile_name_hover, .mx_EntityTile_offline_beenactive .mx_EntityTile_avatar, .mx_EntityTile_offline_beenactive .mx_EntityTile_name, .mx_EntityTile_offline_beenactive .mx_EntityTile_name_hover +{ + opacity: 0.66; +} +.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar, .mx_EntityTile_offline_neveractive .mx_EntityTile_name, .mx_EntityTile_offline_neveractive .mx_EntityTile_name_hover +{ + opacity: 0.25; +} +.mx_EntityTile_unknown .mx_EntityTile_avatar, .mx_EntityTile_unknown .mx_EntityTile_name, .mx_EntityTile_unknown .mx_EntityTile_name_hover +{ + opacity: 0.25; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EventTile { + max-width: 100%; + clear: both; + padding-top: 18px; + font-size: 14px; + position: relative; +} +.mx_EventTile.mx_EventTile_info { + padding-top: 0px; +} +.mx_EventTile_avatar { + position: absolute; + top: 14px; + left: 8px; + cursor: pointer; +} +.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + top: 8px; + left: 65px; +} +.mx_EventTile_continuation { + padding-top: 0px ! important; +} +.mx_EventTile .mx_SenderProfile { + color: #454545; + font-size: 14px; + display: block; /* anti-zalgo, with overflow hidden */ + overflow-y: hidden; + cursor: pointer; + padding-left: 65px; /* left gutter */ + padding-bottom: 0px; + padding-top: 0px; + margin: 0px; + line-height: 22px; +} +.mx_EventTile .mx_SenderProfile .mx_SenderProfile_name, .mx_EventTile .mx_SenderProfile .mx_SenderProfile_aux { + opacity: 0.5; +} +.mx_EventTile .mx_SenderProfile .mx_Flair { + opacity: 0.7; + margin-left: 5px; +} +.mx_EventTile .mx_SenderProfile .mx_Flair img { + vertical-align: -2px; + margin-right: 2px; + border-radius: 8px; +} +.mx_EventTile .mx_MessageTimestamp { + display: block; + visibility: hidden; + white-space: nowrap; + color: #acacac; + font-size: 10px; + left: 0px; + width: 46px; /* 8 + 30 (avatar) + 8 */ + text-align: center; + position: absolute; +} +.mx_EventTile_line, .mx_EventTile_reply { + position: relative; + /* ideally should be 100px, but 95px gives us a max thumbnail size of 800x600, which is nice */ + margin-right: 110px; + padding-left: 65px; /* left gutter */ + padding-top: 4px; + padding-bottom: 2px; + border-radius: 4px; + min-height: 24px; + line-height: 22px; +} +.mx_EventTile_reply { + margin-right: 10px; +} +.mx_EventTile_info .mx_EventTile_line { + padding-left: 83px; +} +/* HACK to override line-height which is already marked important elsewhere */ +.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { + font-size: 48px ! important; + line-height: 48px ! important; +} +/* this is used for the tile for the event which is selected via the URL. + * TODO: ultimately we probably want some transition on here. + */ +.mx_EventTile_selected > .mx_EventTile_line { + border-left: #76CFA6 5px solid; + padding-left: 60px; + background-color: #f7f7f7; +} +.mx_EventTile:hover .mx_EventTile_line, .mx_EventTile.menu .mx_EventTile_line +{ + background-color: #f7f7f7; +} +.mx_EventTile_searchHighlight { + background-color: #76CFA6; + color: #ffffff; + border-radius: 5px; + padding-left: 2px; + padding-right: 2px; + cursor: pointer; +} +.mx_EventTile_searchHighlight a { + background-color: #76CFA6; + color: #ffffff; +} +.mx_EventTile_encrypting { + color: #abddbc ! important; +} +.mx_EventTile_sending { + color: #ddd; +} +.mx_EventTile_sending .mx_UserPill, .mx_EventTile_sending .mx_RoomPill, .mx_EventTile_sending .mx_emojione { + opacity: 0.5; +} +.mx_EventTile_notSent { + color: #f44; +} +.mx_EventTile_redacted .mx_EventTile_line .mx_UnknownBody, .mx_EventTile_redacted .mx_EventTile_reply .mx_UnknownBody { + display: block; + width: 100%; + height: 22px; + width: 250px; + border-radius: 11px; + background: repeating-linear-gradient( + -45deg, + #e2e2e2, + #e2e2e2 3px, + transparent 3px, + transparent 6px + ); + box-shadow: 0px 0px 3px #cccccc inset; +} +.mx_EventTile_highlight, .mx_EventTile_highlight .markdown-body + { + color: #ff0064; +} +.mx_EventTile_contextual { + opacity: 0.4; +} +.mx_EventTile_msgOption { + float: right; + text-align: right; + position: relative; + width: 90px; + + /* Hack to stop the height of this pushing the messages apart. + Replaces margin-top: -6px. This interacts better with a read + marker being in between. Content overflows. */ + height: 1px; + + margin-right: 10px; +} +.mx_EventTile_msgOption a { + text-decoration: none; +} +.mx_EventTile_last > div > a > .mx_MessageTimestamp, .mx_EventTile:hover > div > a > .mx_MessageTimestamp, .mx_EventTile.menu > div > a > .mx_MessageTimestamp { + visibility: visible; +} +.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp { + visibility: visible; +} +.mx_EventTile_selected > div > a > .mx_MessageTimestamp { + left: 3px; + width: auto; +} +.mx_EventTile_editButton { + position: absolute; + display: inline-block; + visibility: hidden; + cursor: pointer; + top: 6px; + right: 6px; + width: 19px; + height: 19px; + background-image: url("../../img/icon_context_message.svg"); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_EventTile:hover .mx_EventTile_editButton, .mx_EventTile.menu .mx_EventTile_editButton { + visibility: visible; +} +.mx_EventTile_readAvatars { + position: relative; + display: inline-block; + width: 14px; + height: 14px; + top: 29px; +} +.mx_EventTile_continuation .mx_EventTile_readAvatars, .mx_EventTile_info .mx_EventTile_readAvatars, .mx_EventTile_emote .mx_EventTile_readAvatars { + top: 7px; +} +.mx_EventTile_readAvatars .mx_BaseAvatar { + position: absolute; + display: inline-block; +} +.mx_EventTile_readAvatarRemainder { + color: #acacac; + font-size: 11px; + position: absolute; +} +/* all the overflow-y: hidden; are to trap Zalgos - + but they introduce an implicit overflow-x: auto. + so make that explicitly hidden too to avoid random + horizontal scrollbars occasionally appearing, like in + https://github.com/vector-im/vector-web/issues/1154 + */ +.mx_EventTile_content { + display: block; + overflow-y: hidden; + overflow-x: hidden; + margin-right: 34px; +} +/* De-zalgoing */ +.mx_EventTile_body { + overflow-y: hidden; +} +/* End to end encryption stuff */ +.mx_EventTile_e2eIcon { + display: block; + position: absolute; + top: 9px; + left: 46px; + cursor: pointer; +} +.mx_EventTile_e2eIcon_hidden { + display: none; +} +/* always override hidden attribute for blocked and warning */ +.mx_EventTile_e2eIcon_hidden[src="img/e2e-blocked.svg"], .mx_EventTile_e2eIcon_hidden[src="img/e2e-warning.svg"] { + display: block; +} +.mx_EventTile_keyRequestInfo { + font-size: 12px; +} +.mx_EventTile_keyRequestInfo_text { + opacity: 0.5; +} +.mx_EventTile_keyRequestInfo_text a { + color: #454545; + text-decoration: underline; + cursor: pointer; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p { + text-align: auto; + margin-left: 3px; + margin-right: 3px; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child { + margin-top: 0px; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child { + margin-bottom: 0px; +} +.mx_EventTile_12hr .mx_EventTile_e2eIcon { + padding-left: 5px; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { + padding-left: 60px; +} +.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line { + padding-left: 78px; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { + border-left: #76cfa5 5px solid; +} +.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { + border-left: #e8bf37 5px solid; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line > a > .mx_MessageTimestamp, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line > a > .mx_MessageTimestamp { + left: 3px; + width: auto; +} +/* +.mx_EventTile_verified .mx_EventTile_e2eIcon { + display: none; +} +*/ +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line > .mx_EventTile_e2eIcon, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line > .mx_EventTile_e2eIcon { + display: block; + left: 41px; +} +/* Various markdown overrides */ +.mx_EventTile_content .markdown-body { + font-family: inherit ! important; + white-space: normal ! important; + line-height: inherit ! important; + color: inherit; + font-size: 14px; +} +/* have to use overlay rather than auto otherwise Linux and Windows + Chrome gets very confused about vertical spacing: + https://github.com/vector-im/vector-web/issues/754 +*/ +.mx_EventTile_content .markdown-body pre { + overflow-x: overlay; + overflow-y: visible; + max-height: 30vh; +} +.mx_EventTile_content .markdown-body code { + background-color: #f8f8f8; + color: #333; +} +.mx_EventTile_pre_container { + position: relative; +} +.mx_EventTile_copyButton { + position: absolute; + display: inline-block; + visibility: hidden; + cursor: pointer; + top: 6px; + right: 6px; + width: 19px; + height: 19px; + background-image: url("../../img/icon_copy_message.svg"); +} +.mx_EventTile_body pre { + border: 1px solid transparent; +} +.mx_EventTile:hover .mx_EventTile_body pre +{ + border: 1px solid #e5e5e5; +} +.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton +{ + visibility: visible; +} +.mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2, .mx_EventTile_content .markdown-body h3, .mx_EventTile_content .markdown-body h4, .mx_EventTile_content .markdown-body h5, .mx_EventTile_content .markdown-body h6 +{ + font-family: inherit ! important; + color: inherit; +} +/* Make h1 and h2 the same size as h3. */ +.mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2 +{ + font-size: 1.5em; + border-bottom: none ! important; +} +.mx_EventTile_content .markdown-body a { + color: #76CFA6; +} +.mx_EventTile_content .markdown-body .hljs { + display: inline ! important; +} +/* end of overrides */ +.mx_MatrixChat_useCompactLayout .mx_EventTile { + padding-top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info { + padding-top: 0px; + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_reply { + line-height: 20px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile { + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote { + padding-top: 8px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar { + top: 2px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 1px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation { + padding-top: 0; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 0px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 0px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_avatar { + top: 2px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_e2eIcon { + top: 7px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_editButton { + top: 3px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_readAvatars { + top: 27px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_continuation .mx_EventTile_readAvatars, .mx_MatrixChat_useCompactLayout .mx_EventTile_emote .mx_EventTile_readAvatars { + top: 5px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_info .mx_EventTile_readAvatars { + top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2 { + margin-top: 6px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body p, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body ul, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body ol, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body dl, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body blockquote, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body pre, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body table { + margin-bottom: 4px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LinkPreviewWidget { + margin-top: 15px; + margin-right: 15px; + margin-bottom: 15px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-left: 4px solid #ddd; + color: #888; +} +.mx_LinkPreviewWidget_image { + -webkit-box-flex: 0; + -ms-flex: 0 0 100px; + flex: 0 0 100px; + margin-left: 15px; + text-align: center; + cursor: pointer; +} +.mx_LinkPreviewWidget_caption { + margin-left: 15px; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_LinkPreviewWidget_title { + display: inline; + font-weight: bold; + white-space: normal; +} +.mx_LinkPreviewWidget_siteName { + display: inline; +} +.mx_LinkPreviewWidget_description { + margin-top: 8px; + white-space: normal; + word-wrap: break-word; +} +.mx_LinkPreviewWidget_cancel { + visibility: hidden; + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 40px; + flex: 0 0 40px; +} +.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel { + visibility: visible; +} +.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget { + margin-top: 6px; + margin-bottom: 6px; + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberDeviceInfo { + padding: 10px 0px; +} +.mx_MemberDeviceInfo.mx_DeviceVerifyButtons { + padding: 6px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; + margin: 2px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MemberDeviceInfo_textButton:hover { +} +.mx_MemberDeviceInfo_deviceId { + font-size: 13px; +} +.mx_MemberDeviceInfo_deviceInfo { + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid rgba(0,0,0,0.1); +} +/* "Unblacklist" is too long for a regular button: make it wider and + reduce the padding. */ +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_blacklist, .mx_EncryptedEventDialog .mx_MemberDeviceInfo_unblacklist { + width: 8em; + padding-left: 1em; + padding-right: 1em; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { + float: right; + padding-left: 1em; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified { + color: #76cfa5; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified { + color: #e8bf37; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { + color: #ba6363; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberInfo { + margin-top: 20px; + padding-right: 20px; + height: 100%; + overflow-y: auto; +} +.mx_MemberInfo h2 { + margin-top: 6px; +} +.mx_MemberInfo .mx_RoomTile_nameContainer { + width: 154px; +} +.mx_MemberInfo .mx_RoomTile_badge { + display: none; +} +.mx_MemberInfo .mx_RoomTile_name { + width: 160px; +} +.mx_MemberInfo_cancel { + float: right; + margin-right: 10px; + cursor: pointer; +} +.mx_MemberInfo_avatar { + clear: both; +} +.mx_MemberInfo_avatar .mx_BaseAvatar { +} +.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { + cursor: zoom-in; +} +.mx_MemberInfo_profile { + margin-bottom: 16px; +} +.mx_MemberInfo h3 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-top: 16px; + margin-bottom: 14px; +} +.mx_MemberInfo_profileField { + font-size: 13px; + position: relative; + background-color: #ffffff; +} +.mx_MemberInfo_buttons { + margin-bottom: 16px; +} +.mx_MemberInfo_field { + cursor: pointer; + font-size: 13px; + color: #76CFA6; + margin-left: 8px; + line-height: 23px; +} +.mx_MemberInfo_createRoom { + cursor: pointer; +} +.mx_MemberInfo_createRoom_label { + width: initial ! important; + cursor: pointer; +} +.mx_MemberInfo label { + font-size: 13px; +} +.mx_MemberInfo label .mx_MemberInfo_label_text { + display: inline-block; + max-width: 180px; + vertical-align: text-top; +} +.mx_MemberInfo input[type="radio"] { + vertical-align: -2px; + margin-right: 5px; + margin-left: 8px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberList, .mx_GroupMemberList, .mx_GroupRoomList { + height: 100%; + + margin-top: 12px; + margin-right: 20px; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_MemberList .mx_Spinner { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_MemberList_chevron { + position: absolute; + right: 35px; + margin-top: -15px; +} +.mx_MemberList_border { + overflow-y: auto; + + -webkit-box-ordinal-group: 2; + + -ms-flex-order: 1; + + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0px; +} +.mx_MemberList_query, .mx_GroupMemberList_query, .mx_GroupRoomList_query { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #454545; + background-color: #ffffff; + margin-left: 3px; + font-size: 14px; + margin-bottom: 8px; + width: 189px; +} +.mx_MemberList_query::-moz-placeholder, .mx_GroupMemberList_query::-moz-placeholder, .mx_GroupRoomList_query::-moz-placeholder { + color: #454545; + opacity: 0.5; + font-size: 14px; +} +.mx_MemberList_query::-webkit-input-placeholder, .mx_GroupMemberList_query::-webkit-input-placeholder, .mx_GroupRoomList_query::-webkit-input-placeholder { + color: #454545; + opacity: 0.5; + font-size: 14px; +} +.mx_MemberList_joined { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + + overflow-y: auto; +} +/* +.mx_MemberList_invited { + order: 3; + flex: 0 0 100px; + overflow-y: auto; +} +*/ +.mx_GroupMemberList_invited h2, .mx_MemberList_invited h2 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + padding-left: 3px; + padding-right: 12px; + margin-top: 8px; + margin-bottom: 4px; +} +/* we have to have display: table in order for the horizontal wrapping to work */ +.mx_MemberList_wrapper { + display: table; + table-layout: fixed; + width: 100%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageComposer_wrapper { + max-width: 960px; + vertical-align: middle; + margin: auto; + border-top: 1px solid #e5e5e5; + position: relative; +} +.mx_MessageComposer_replaced_wrapper { + margin-left: auto; + margin-right: auto; +} +.mx_MessageComposer_replaced_valign { + height: 60px; + display: table-cell; + vertical-align: middle; +} +.mx_MessageComposer_roomReplaced_icon { + float: left; + margin-right: 20px; + margin-top: 5px; + width: 31px; + height: 31px; +} +.mx_MessageComposer_roomReplaced_header { + font-weight: bold; +} +.mx_MessageComposer_autocomplete_wrapper { + position: relative; + height: 0; +} +.mx_MessageComposer_row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; +} +.mx_MessageComposer_row > div:last-child{ + padding-right: 0; +} +.mx_MessageComposer .mx_MessageComposer_avatar { + padding-left: 10px; + padding-right: 28px; +} +.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar { + display: block; +} +.mx_MessageComposer_composecontrols { + width: 100%; +} +.mx_MessageComposer_e2eIcon { + position: absolute; + left: 44px; +} +.mx_MessageComposer_noperm_error { + width: 100%; + height: 60px; + font-style: italic; + color: #888; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_MessageComposer_input_wrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + cursor: text; +} +.mx_MessageComposer_input { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + vertical-align: middle; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 60px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + font-size: 14px; + margin-right: 6px; +} +.mx_MessageComposer_editor { + width: 100%; + max-height: 120px; + min-height: 19px; + overflow: auto; + word-break: break-word; +} +.mx_MessageComposer_editor > :first-child { + margin-top: 0 ! important; +} +.mx_MessageComposer_editor > :last-child { + margin-bottom: 0 ! important; +} +@-webkit-keyframes visualbell +{ + from { background-color: #faa } + to { background-color: #ffffff } +} +@keyframes visualbell +{ + from { background-color: #faa } + to { background-color: #ffffff } +} +.mx_MessageComposer_input_error { + -webkit-animation: 0.2s visualbell; + animation: 0.2s visualbell; +} +.mx_MessageComposer_input blockquote { + color: #777; + margin: 0 0 16px; + padding: 0 15px; + border-left: 4px solid #ddd; +} +.mx_MessageComposer_input pre { + background-color: rgba(0, 0, 0, 0.04); + border-radius: 3px; + padding: 10px; +} +.mx_MessageComposer_input textarea { + display: block; + width: 100%; + padding: 0px; + margin-top: 6px; + margin-bottom: 6px; + border: 0px; + resize: none; + outline: none; + box-shadow: none; + color: #454545; + background-color: #ffffff; + font-size: 14px; + max-height: 120px; + overflow: auto; + /* needed for FF */ + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; +} +/* hack for FF as vertical alignment of custom placeholder text is broken */ +.mx_MessageComposer_input textarea::-moz-placeholder { + line-height: 100%; + color: #76CFA6; + opacity: 1.0; +} +.mx_MessageComposer_input textarea::-webkit-input-placeholder { + color: #76CFA6; +} +.mx_MessageComposer_upload, .mx_MessageComposer_hangup, .mx_MessageComposer_voicecall, .mx_MessageComposer_videocall, .mx_MessageComposer_apps, .mx_MessageComposer_stickers { + /*display: table-cell;*/ + /*vertical-align: middle;*/ + /*padding-left: 10px;*/ + padding-right: 5px; + cursor: pointer; + padding-top: 4px; +} +.mx_MessageComposer_upload object, .mx_MessageComposer_hangup object, .mx_MessageComposer_voicecall object, .mx_MessageComposer_videocall object, .mx_MessageComposer_apps object, .mx_MessageComposer_stickers object { + pointer-events: none; +} +.mx_MessageComposer_formatting { + cursor: pointer; + margin: 0 11px; + width: 24px; + height: 18px; +} +.mx_MessageComposer_formatbar_wrapper { + width: 100%; + background-color: #f6f6f6; + box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); +} +.mx_MessageComposer_formatbar { + margin: auto; + max-width: 960px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + height: 30px; + + box-sizing: border-box; + padding-left: 62px; + + -webkit-box-orient: horizontal; + + -webkit-box-direction: normal; + + -ms-flex-direction: row; + + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 10px; + color: #888; +} +.mx_MessageComposer_formatbar * { + margin-right: 4px; +} +.mx_MessageComposer_format_button, .mx_MessageComposer_formatbar_cancel, .mx_MessageComposer_formatbar_markdown { + cursor: pointer; +} +.mx_MessageComposer_formatbar_cancel { + margin-right: 22px; +} +.mx_MessageComposer_formatbar_markdown { + margin-right: 64px; +} +.mx_MessageComposer_input_markdownIndicator { + cursor: pointer; + height: 10px; + padding: 4px 4px 4px 0; + opacity: 0.8; +} +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input { + min-height: 50px; + } +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error { + height: 50px; + } +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PinnedEventTile { + min-height: 40px; + margin-bottom: 5px; + width: 100%; + border-radius: 5px; +} +.mx_PinnedEventTile:hover { + background-color: #f7f7f7; +} +.mx_PinnedEventTile .mx_PinnedEventTile_sender, .mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + color: #868686; + font-size: 0.8em; + vertical-align: top; + display: inline-block; + padding-bottom: 3px; +} +.mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + padding-left: 15px; + display: none; +} +.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar { + float: left; + margin-right: 10px; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp { + display: inline-block; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions { + display: block; +} +.mx_PinnedEventTile_actions { + float: right; + margin-right: 10px; + display: none; +} +.mx_PinnedEventTile_unpinButton { + display: inline-block; + cursor: pointer; + margin-left: 10px; +} +.mx_PinnedEventTile_gotoButton { + display: inline-block; + font-size: 0.7em; +} +.mx_PinnedEventTile_message { + margin-left: 50px; + position: relative; + top: 0; + left: 0; +} +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PinnedEventsPanel { + border-top: 1px solid #e5e5e5; +} +.mx_PinnedEventsPanel_body { + max-height: 300px; + overflow-y: auto; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_header { + margin: 0; + padding-top: 8px; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_cancel { + margin: 12px; + float: right; + display: inline-block; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PresenceLabel { + font-size: 11px; + opacity: 0.5; +} +/* +Copyright 2018 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ReplyPreview { + position: absolute; + bottom: 0; + z-index: 1000; + width: 100%; + border: 1px solid #e5e5e5; + background: #ffffff; + border-bottom: none; + border-radius: 4px 4px 0 0; + max-height: 50vh; + overflow: auto +} +.mx_ReplyPreview_section { + border-bottom: 1px solid #e5e5e5; +} +.mx_ReplyPreview_header { + margin: 12px; + color: #454545; + font-weight: 400; + opacity: 0.4; +} +.mx_ReplyPreview_title { + float: left; +} +.mx_ReplyPreview_cancel { + float: right; + cursor: pointer; +} +.mx_ReplyPreview_clear { + clear: both; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomDropTarget_container { + background-color: #eaf5f0; + padding-left: 18px; + padding-right: 18px; + padding-top: 8px; + padding-bottom: 7px; +} +.collapsed .mx_RoomDropTarget_container { + padding-right: 10px; + padding-left: 10px; +} +.mx_RoomDropTarget { + font-size: 13px; + padding-top: 5px; + padding-bottom: 5px; + border: 1px dashed #76CFA6; + color: #454545; + background-color: rgba(255,255,255,0.5); + border-radius: 4px; +} +.mx_RoomDropTarget_label { + position: relative; + margin-top: 3px; + line-height: 21px; + z-index: 1; + text-align: center; +} +.collapsed .mx_RoomDropTarget_avatar { + float: none; +} +.collapsed .mx_RoomDropTarget_label { + display: none; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* add 20px to the height of the header when editing */ +.mx_RoomHeader_editing { + -webkit-box-flex: 0 ! important; + -ms-flex: 0 0 93px ! important; + flex: 0 0 93px ! important; +} +.mx_RoomHeader_wrapper { + max-width: 960px; + margin: auto; + height: 70px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomHeader_leftRow { + margin-left: -2px; + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; +} +.mx_RoomHeader_spinner { + height: 36px; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + margin-right: 8px; + margin-top: -5px; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_RoomHeader_textButton:hover { +} +.mx_RoomHeader_textButton_danger { + background-color: #ff0064; +} +.mx_RoomHeader_cancelButton { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + cursor: pointer; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_rightRow { + margin-top: 4px; + background-color: #ffffff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; +} +.mx_RoomHeader_info { + display: table-cell; + width: 100%; + vertical-align: middle; +} +.mx_RoomHeader_simpleHeader { + line-height: 70px; + color: #454545; + font-size: 22px; + font-weight: bold; + overflow: hidden; + margin-left: 63px; + text-overflow: ellipsis; + width: 100%; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton { + float: right; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon { + margin-left: 14px; + margin-right: 24px; + vertical-align: -4px; +} +.mx_RoomHeader_name { + vertical-align: middle; + width: 100%; + height: 31px; + overflow: hidden; + color: #454545; + font-weight: bold; + font-size: 22px; + padding-left: 19px; + padding-right: 16px; + /* why isn't text-overflow working? */ + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_RoomHeader_nametext { + display: inline-block; +} +.mx_RoomHeader_settingsHint { + color: #a2a2a2 ! important; +} +.mx_RoomHeader_searchStatus { + display: inline-block; + font-weight: normal; + opacity: 0.6; +} +.mx_RoomHeader_settingsButton object { + pointer-events: none; +} +.mx_RoomHeader_name, .mx_RoomHeader_avatar, .mx_RoomHeader_avatarPicker, .mx_RoomHeader_avatarPicker_edit, .mx_RoomHeader_avatarPicker_remove { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_remove { + position: absolute; + top: -11px; + right: -9px; +} +.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { + color: #76CFA6; +} +.mx_RoomHeader_placeholder { + color: #a2a2a2 ! important; +} +.mx_RoomHeader_editable { + border-bottom: 1px solid #c7c7c7 ! important; + min-width: 150px; + cursor: text; +} +.mx_RoomHeader_editable:focus { + border-bottom: 1px solid #76CFA6 ! important; + outline: none; + box-shadow: none; +} +.mx_RoomHeader_topic { + vertical-align: bottom; + float: left; + max-height: 38px; + color: #a2a2a2; + font-weight: 300; + font-size: 13px; + margin-left: 19px; + margin-right: 16px; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; + -webkit-column-width: 960px; + column-width: 960px; +} +.mx_RoomHeader_avatar { + display: table-cell; + width: 48px; + height: 50px; + vertical-align: middle; +} +.mx_RoomHeader_avatar .mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; +} +.mx_RoomHeader_avatarPicker { + margin-top: 23px; + position: relative; +} +.mx_RoomHeader_avatarPicker_edit { + margin-left: 16px; + margin-top: 4px; +} +.mx_RoomHeader_avatarPicker_edit > label { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_edit > input { + display: none; +} +.mx_RoomHeader_button { + margin-left: 12px; + cursor: pointer; +} +.mx_RoomHeader_button object { + pointer-events: none; +} +.mx_RoomHeader_voipButton { + display: table-cell; +} +.mx_RoomHeader_voipButtons { + margin-top: 18px; +} +.mx_RoomHeader_pinnedButton { + position: relative; +} +.mx_RoomHeader_pinsIndicator { + position: absolute; + right: 0; + bottom: 4px; + width: 8px; + height: 8px; + border-radius: 8px; + background-color: #888; +} +.mx_RoomHeader_pinsIndicatorUnread { + background-color: #ff0064; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2107 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomList { + padding-bottom: 12px; + min-height: 400px; +} +.mx_RoomList_expandButton { + margin-left: 8px; + cursor: pointer; + padding-left: 12px; + padding-right: 12px; +} +/* Evil hacky override until Chrome fixes drop and drag table cells + and we can correctly fix horizontal wrapping in the sidebar again */ +.mx_RoomList_scrollbar .gm-scroll-view { + overflow-x: hidden ! important; + overflow-y: scroll ! important; +} +/* Make sure the scrollbar is above the sticky headers from RoomList */ +.mx_RoomList_scrollbar .gm-scrollbar.-vertical { + z-index: 6; +} +.mx_RoomList_emptySubListTip_container { + background-color: #eaf5f0; + padding-left: 18px; + padding-right: 18px; + padding-top: 8px; + padding-bottom: 7px; +} +.mx_RoomList_emptySubListTip { + font-size: 13px; + padding: 5px; + border: 1px dashed #76CFA6; + color: #454545; + background-color: rgba(255,255,255,0.5); + border-radius: 4px; + line-height: 16px; +} +.mx_RoomList_emptySubListTip .mx_RoleButton { + vertical-align: -2px; +} +.mx_RoomList_headerButtons { + position: absolute; + right: 60px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomPreviewBar { + text-align: center; + height: 176px; + background-color: #f7f7f7; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #f7f7f7; + -webkit-align-items: center; +} +.mx_RoomPreviewBar_wrapper { +} +.mx_RoomPreviewBar_invite_text { + color: #454545; +} +.mx_RoomPreviewBar_join_text { + color: #ff0064; +} +.mx_RoomPreviewBar_preview_text { + margin-top: 25px; + color: #a2a2a2; +} +.mx_RoomPreviewBar_join_text a { + text-decoration: underline; + cursor: pointer; +} +.mx_RoomPreviewBar_warning { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 8px; +} +.mx_RoomPreviewBar_warningIcon { + padding: 12px; +} +.mx_RoomPreviewBar_spinnerIntro { + margin-top: 50px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomSettings { + margin-left: 65px; + margin-bottom: 20px; +} +.mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton, .mx_RoomSettings_unbanButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; + position: relative; + margin-right: 8px; +} +.mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton:hover, .mx_RoomSettings_unbanButton:hover { +} +.mx_RoomSettings_upgradeButton.danger { + background-color: #ff0064; +} +.mx_RoomSettings_integrationsButton_error { + position: relative; + cursor: not-allowed; +} +.mx_RoomSettings_integrationsButton_error img { + position: absolute; + right: -5px; + top: -5px; +} +.mx_RoomSettings_leaveButton, .mx_RoomSettings_integrationsButton_error { + float: right; +} +.mx_RoomSettings_integrationsButton_error .mx_RoomSettings_integrationsButton_errorPopup { + display: none; +} +.mx_RoomSettings_integrationsButton_error:hover .mx_RoomSettings_integrationsButton_errorPopup { + display: inline; +} +.mx_RoomSettings_integrationsButton_errorPopup { + position: absolute; + top: 110%; + left: -125%; + width: 348%; + padding: 2%; + font-size: 10pt; + line-height: 1.5em; + border-radius: 5px; + background-color: #76CFA6; + color: #ffffff; + text-align: center; +} +.mx_RoomSettings_unbanButton { + display: inline; +} +.mx_RoomSettings_e2eIcon { + padding-left: 4px; + padding-right: 7px; +} +.mx_RoomSettings_leaveButton { + margin-right: 32px; +} +.mx_RoomSettings_powerLevels { + display: table; +} +.mx_RoomSettings_powerLevel { + display: table-row; +} +.mx_RoomSettings_powerLevelKey, .mx_RoomSettings_powerLevel .mx_PowerSelector { + display: table-cell; + padding-bottom: 5px; +} +.mx_RoomSettings_powerLevelKey { + text-align: right; + padding-right: 0.3em; +} +.mx_RoomSettings h3 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-top: 36px; + margin-bottom: 10px; +} +.mx_RoomSettings .mx_RoomSettings_toggles label { + margin-bottom: 8px; + display: block; +} +.mx_RoomSettings .mx_RoomSettings_toggles input[type="checkbox"], .mx_RoomSettings .mx_RoomSettings_toggles input[type="radio"] { + margin-right: 7px; +} +.mx_RoomSettings .mx_RoomSettings_tags input[type="checkbox"] { + margin-left: 1em; + margin-right: 7px; +} +.mx_RoomSettings .mx_RoomSettings_tags { + margin-bottom: 8px; +} +.mx_RoomSettings .mx_RoomSettings_roomColor { + display: inline-block; + position: relative; + width: 37px; + height: 37px; + border: 1px solid #979797; + margin-right: 13px; + cursor: pointer; +} +.mx_RoomSettings .mx_RoomSettings_roomColor_selected { + position: absolute; + left: 10px; + top: 4px; + cursor: default ! important; +} +.mx_RoomSettings .mx_RoomSettings_roomColorPrimary { + height: 10px; + position: absolute; + bottom: 0px; + width: 100%; +} +.mx_RoomSettings .mx_RoomSettings_aliasLabel { + margin-bottom: 8px; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTable { + margin-top: 12px; + margin-bottom: 0px; + margin-left: 56px; + display: table; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTableRow { + display: table-row; + margin-bottom: 16px; +} +.mx_RoomSettings .mx_RoomSettings_alias { + max-width: 400px; + margin-bottom: 16px; + /* + commented out so margin applies + display: table-cell; */ +} +.mx_RoomSettings .mx_RoomSettings_addAlias, .mx_RoomSettings .mx_RoomSettings_deleteAlias { + display: table-cell; + padding-left: 0.5em; + position: relative; + cursor: pointer; +} +.mx_RoomSettings .mx_RoomSettings_addAlias img, .mx_RoomSettings .mx_RoomSettings_deleteAlias img { + visibility: hidden; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_addAlias img, .mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_deleteAlias img { + visibility: visible; +} +.mx_RoomSettings_warning { + color: #ff0064; + font-weight: bold; + margin-top: 8px; + margin-bottom: 8px; +} +.mx_RoomSettings_editable { + border: 0px; + border-bottom: 1px solid #c7c7c7; + padding: 0px; + min-width: 240px; +} +.mx_RoomSettings_editable:focus { + border-bottom: 1px solid #76CFA6; + outline: none; + box-shadow: none; +} +.mx_RoomSettings_deleteAlias, .mx_RoomSettings_addAlias { + display: table-cell; + visibility: visible; +} +.mx_RoomSettings_deleteAlias:hover, .mx_RoomSettings_addAlias:hover { + visibility: visible; +} +.mx_RoomSettings_aliasPlaceholder { + color: #a2a2a2; +} +.mx_RoomSettings_buttons { + text-align: right; + margin-bottom: 16px; +} +.mx_RoomSettings_button { + display: inline; + border: 0px; + height: 36px; + border-radius: 36px; + font-weight: 400; + font-size: 15px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + margin: auto; + padding: 6px; + padding-left: 1em; + padding-right: 1em; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTile { + position: relative; + cursor: pointer; + font-size: 13px; + display: block; + height: 34px; + + background-color: #eaf5f0; +} +.mx_RoomTile_tooltip { + display: inline-block; + position: relative; + top: -54px; + left: -12px; +} +.mx_RoomTile_nameContainer { + display: inline-block; + width: 180px; + height: 24px; +} +.mx_RoomTile_avatar_container { + position: relative; +} +.mx_RoomTile_avatar { + display: inline-block; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 16px; + padding-right: 6px; + width: 24px; + height: 24px; + vertical-align: middle; +} +.mx_RoomTile_dm { + display: block; + position: absolute; + bottom: 0; + right: -5px; + z-index: 2; +} +.mx_RoomTile_name { + display: inline-block; + position: relative; + width: 165px; + vertical-align: middle; + padding-left: 6px; + padding-right: 6px; + padding-top: 2px; + padding-bottom: 3px; + color: rgba(69, 69, 69, 0.8); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_RoomTile_invite { +/* color: rgba(69, 69, 69, 0.5); */ +} +.collapsed .mx_RoomTile_nameContainer { + width: 60px; /* colapsed panel width */ +} +.collapsed .mx_RoomTile_name { + display: none; +} +.collapsed .mx_RoomTile_badge { + top: 0px; + min-width: 12px; + border-radius: 16px; + padding: 0px 4px 0px 4px; + z-index: 3; +} +/* Hide the bottom of speech bubble */ +.collapsed .mx_RoomTile_highlight .mx_RoomTile_badge:after { + display: none; +} +/* This is the bottom of the speech bubble */ +.mx_RoomTile_highlight .mx_RoomTile_badge:after { + content: ""; + position: absolute; + display: block; + width: 0; + height: 0; + margin-left: 5px; + border-top: 5px solid #ff0064; + border-right: 7px solid transparent; +} +.mx_RoomTile_badge { + display: inline-block; + min-width: 15px; + height: 15px; + position: absolute; + right: 8px; /*gutter */ + top: 9px; + border-radius: 8px; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; +} +.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_menuDisplayed .mx_RoomTile_badge { + letter-spacing: 0.1em; + opacity: 1; +} +.mx_RoomTile.mx_RoomTile_noBadges .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_menuDisplayed.mx_RoomTile_noBadges .mx_RoomTile_badge { + background-color: #dbdbdb; +} +.mx_RoomTile_unreadNotify .mx_RoomTile_badge { + background-color: #76CFA6; +} +.mx_RoomTile_highlight .mx_RoomTile_badge { + background-color: #ff0064; +} +.mx_RoomTile_unread, .mx_RoomTile_highlight { + font-weight: 800; +} +.mx_RoomTile_selected { + background-color: rgba(255, 255, 255, 0.8); +} +.mx_DNDRoomTile { + -webkit-transform: none; + transform: none; + transition: -webkit-transform 0.2s; + transition: transform 0.2s; + transition: transform 0.2s, -webkit-transform 0.2s; +} +.mx_DNDRoomTile_dragging { + -webkit-transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); +} +.mx_RoomTile:focus { + -webkit-filter: none ! important; + filter: none ! important; + background-color: rgba(255, 255, 255, 0.9); +} +.mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { + width: 140px; +} +.mx_RoomTile_arrow { + position: absolute; + right: 0px; +} +.mx_RoomTile.mx_RoomTile_transparent { + background-color: transparent; +} +.mx_RoomTile.mx_RoomTile_transparent:focus { + background-color: rgba(0, 0, 0, 0.1); +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTooltip_chevron { + position: absolute; + left: -8px; + top: 4px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_RoomTooltip_chevron:after { + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #ffffff; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + left: 1px; +} +.mx_RoomTooltip { + display: none; + position: fixed; + border: 1px solid rgba(187, 187, 187, 0.5); + border-radius: 5px; + background-color: #ffffff; + z-index: 2000; + padding: 5px; + pointer-events: none; + line-height: 14px; + font-size: 13px; + color: #454545; + max-width: 600px; + margin-right: 50px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomUpgradeWarningBar { + text-align: center; + height: 176px; + background-color: #f7f7f7; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #f7f7f7; + -webkit-align-items: center; + padding-left: 20px; + padding-right: 20px; +} +.mx_RoomUpgradeWarningBar_header { + color: #ff0064; + font-weight: bold; +} +.mx_RoomUpgradeWarningBar_body { + color: #ff0064; +} +.mx_RoomUpgradeWarningBar_upgradelink { + color: #ff0064; + text-decoration: underline; +} +.mx_RoomUpgradeWarningBar_small { + color: #888; + font-size: 70%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchBar { + padding-top: 5px; + padding-bottom: 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_SearchBar_input { + display: inline block; + border-radius: 3px 0px 0px 3px; + border: 1px solid #f0f0f0; + font-size: 15px; + padding: 9px; + padding-left: 11px; + width: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_SearchBar_searchButton { + cursor: pointer; + margin-right: 10px; + width: 37px; + height: 37px; + border-radius: 0px 3px 3px 0px; + background-color: #76CFA6; +} +@-webkit-keyframes pulsate { + 0% { opacity: 1.0; } + 50% { opacity: 0.1; } + 100% { opacity: 1.0; } +} +@keyframes pulsate { + 0% { opacity: 1.0; } + 50% { opacity: 0.1; } + 100% { opacity: 1.0; } +} +.mx_SearchBar_searching img { + -webkit-animation: pulsate 0.5s ease-out; + animation: pulsate 0.5s ease-out; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} +.mx_SearchBar_button { + display: inline; + border: 0px; + border-radius: 36px; + font-weight: 400; + font-size: 15px; + color: #ffffff; + background-color: #76CFA6; + width: auto; + margin: auto; + margin-left: 7px; + padding-top: 6px; + padding-bottom: 4px; + padding-left: 24px; + padding-right: 24px; + cursor: pointer; +} +.mx_SearchBar_unselected { + background-color: #ffffff; + color: #76CFA6; + border: #76CFA6 1px solid; +} +.mx_SearchBar_cancel { + padding-left: 14px; + padding-right: 14px; + cursor: pointer; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchableEntityList { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_SearchableEntityList_query { + font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + border-radius: 3px; + border: 1px solid #f0f0f0; + padding: 9px; + color: #454545; + background-color: #ffffff; + margin-left: 3px; + font-size: 15px; + margin-bottom: 8px; + width: 189px; +} +.mx_SearchableEntityList_query::-moz-placeholder { + color: #454545; + opacity: 0.5; + font-size: 12px; +} +.mx_SearchableEntityList_query::-webkit-input-placeholder { + color: #454545; + opacity: 0.5; + font-size: 12px; +} +.mx_SearchableEntityList_listWrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + overflow-y: auto; +} +.mx_SearchableEntityList_list { + display: table; + table-layout: fixed; + width: 100%; +} +.mx_SearchableEntityList_list .mx_EntityTile_chevron { + display: none; +} +.mx_SearchableEntityList_hrWrapper { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_SearchableEntityList hr { + height: 1px; + border: 0px; + color: #454545; + background-color: #454545; + margin-right: 15px; + margin-top: 11px; + margin-bottom: 11px; +} +.mx_Stickers_content { + overflow: hidden; +} +.mx_Stickers_content_container { + overflow: hidden; + height: 300px; +} +.mx_Stickers_content .mx_AppTileFullWidth { + border: none; +} +.mx_Stickers_contentPlaceholder { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; +} +.mx_Stickers_contentPlaceholder p { + max-width: 200px; +} +.mx_Stickers_addLink { + display: inline; + cursor: pointer; + text-decoration: underline; +} +.mx_Stickers_hideStickers { + z-index: 2001; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TopUnreadMessagesBar { + margin: auto; /* centre horizontally */ + max-width: 960px; + padding-top: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #e5e5e5; +} +.mx_TopUnreadMessagesBar_scrollUp { + display: inline; + cursor: pointer; + text-decoration: underline; +} +.mx_TopUnreadMessagesBar_scrollUp img { + padding-left: 10px; + padding-right: 31px; + vertical-align: middle; +} +.mx_TopUnreadMessagesBar_scrollUp span { + opacity: 0.5; +} +.mx_TopUnreadMessagesBar_close { + float: right; + padding-right: 14px; + padding-top: 3px; + cursor: pointer; +} +.mx_MatrixChat_useCompactLayout .mx_TopUnreadMessagesBar { + padding-top: 4px; + padding-bottom: 4px; + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DevicesPanel { + display: table; + table-layout: fixed; + width: 880px; + border-spacing: 2px; +} +.mx_DevicesPanel_header { + display: table-header-group; + font-weight: bold; +} +.mx_DevicesPanel_header > div { + display: table-cell; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen { + width: 30%; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons { + width: 20%; +} +.mx_DevicesPanel_device { + display: table-row; +} +.mx_DevicesPanel_device > div { + display: table-cell; +} +.mx_DevicesPanel_myDevice { + font-weight: bold; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_IntegrationsManager .mx_Dialog { + width: 60%; + height: 70%; + overflow: hidden; + padding: 0px; + max-width: initial; + max-height: initial; +} +.mx_IntegrationsManager iframe { + background-color: #fff; + border: 0px; + width: 100%; + height: 100%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UserNotifSettings_tableRow +{ + display: table-row; +} +.mx_UserNotifSettings_inputCell { + display: table-cell; + padding-bottom: 8px; + padding-right: 8px; + width: 16px; +} +.mx_UserNotifSettings_labelCell +{ + padding-bottom: 8px; + width: 400px; + display: table-cell; +} +.mx_UserNotifSettings_pushRulesTableWrapper { + padding-bottom: 8px; +} +.mx_UserNotifSettings_pushRulesTable { + width: 100%; + table-layout: fixed; +} +.mx_UserNotifSettings_pushRulesTable thead { + font-weight: bold; + font-size: 15px; +} +.mx_UserNotifSettings_pushRulesTable tbody th { + font-weight: 400; + font-size: 15px; +} +.mx_UserNotifSettings_pushRulesTable tbody th:first-child { + text-align: left; +} +.mx_UserNotifSettings_keywords { + cursor: pointer; + color: #76CFA6; +} +.mx_UserSettings_devicesTable td { + padding-left: 20px; + padding-right: 20px; +} +.mx_UserSettings_devicesTable_nodevices { + font-style: italic; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CallView_voice { + background-color: #76CFA6; + color: #ffffff; + cursor: pointer; + text-align: center; + padding: 6px; + font-weight: bold; + font-size: 13px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_IncomingCallBox { + text-align: center; + border: 1px solid #a4a4a4; + border-radius: 8px; + background-color: #ffffff; + position: fixed; + z-index: 1000; + padding: 6px; + margin-top: -3px; + margin-left: -20px; + width: 200px; +} +.mx_IncomingCallBox_chevron { + padding: 12px; + position: absolute; + left: -21px; + top: 0px; +} +.mx_IncomingCallBox_title { + padding: 6px; + font-weight: bold; +} +.mx_IncomingCallBox_buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_IncomingCallBox_buttons_cell { + vertical-align: middle; + padding: 6px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_IncomingCallBox_buttons_decline, .mx_IncomingCallBox_buttons_accept { + vertical-align: middle; + width: 80px; + height: 36px; + line-height: 36px; + border-radius: 36px; + color: #ffffff; + margin: auto; +} +.mx_IncomingCallBox_buttons_decline { + background-color: #f48080; +} +.mx_IncomingCallBox_buttons_accept { + background-color: #80f480; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_VideoView { + width: 100%; + position: relative; + z-index: 30; +} +.mx_VideoView video { + width: 100%; +} +.mx_VideoView_remoteVideoFeed { + width: 100%; + background-color: #000; + z-index: 50; +} +.mx_VideoView_localVideoFeed { + width: 25%; + height: 25%; + position: absolute; + left: 10px; + bottom: 10px; + z-index: 100; +} +.mx_VideoView_localVideoFeed video { + width: auto; + height: 100%; +} +.mx_VideoView_localVideoFeed.mx_VideoView_localVideoFeed_flipped video { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} + + +/*# sourceMappingURL=theme-light.css.map*/ \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css.map b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css.map new file mode 100644 index 0000000..b6829e8 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/theme-light.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js new file mode 100644 index 0000000..283c609 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js @@ -0,0 +1,2 @@ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1888)}({1888:function(e,t){}}); +//# sourceMappingURL=theme-light.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js.map b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js.map new file mode 100644 index 0000000..06c9421 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-light.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/f5c70ee9a294f6e4590e/theme-light.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1888);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css new file mode 100644 index 0000000..2ad99a7 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css @@ -0,0 +1,9502 @@ +/* Open Sans lacks combining diacritics, so these will fall through + to the next font. Helevetica's diacritics however do not combine + nicely with Open Sans (on OSX, at least) and result in a huge + horizontal mess. Arial empirically gets it right, hence prioritising + Arial here. */ +/*** ImageView ***/ +@font-face { + font-family:PostGrotesk-Medium; + src:url('https://status.im/fonts/PostGrotesk-Medium.eot'); + src:url('https://status.im/fonts/PostGrotesk-Medium.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Medium.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium') format("svg"); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family:PostGrotesk-Book; + src:url('https://status.im/fonts/PostGrotesk-Book.eot'); + src:url('https://status.im/fonts/PostGrotesk-Book.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Book.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Book.svg#PostGrotesk-Book') format("svg"); + font-weight: 400; + font-style: normal; +} +a { + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +h1, h2, h3, h4, h5 { + color: #49555F; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + font-weight: 400 ! important; +} +#mx_theme_secondaryAccentColor { + color: #c0ffee ! important; +} +#mx_theme_tertiaryAccentColor { + color: #c0ffee ! important; +} +/*** ImageView ***/ +.mx_RoomSubList_label { + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + letter-spacing: 1px; +} +.mx_SearchBox_search { + color: #fff ! important; +} +.mx_SearchBox_search::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.6) ! important; +} +.mx_SearchBox_search::-moz-placeholder { + color: rgba(255, 255, 255, 0.6) ! important; +} +.mx_RoomList_emptySubListTip, .mx_RoomDropTarget { + font-size: 14px ! important; + border: 1.5px dashed rgba(0,0,0,0.2) ! important; + color: #fff ! important; + background-color: transparent ! important; + border-radius: 6px ! important; + margin-left: 6px ! important; + margin-right: 6px ! important; + margin-top: 8px ! important; + margin-bottom: 7px ! important; + padding: 8px ! important; +} +.mx_RoomDirectory_perm { + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif ! important; + background-color: #fff ! important; +} +.mx_RoomTile_badge, .mx_RoomSubList_badge { + height: 12px ! important; + padding-top: 1px ! important; + padding-bottom: 1px ! important; +} +.mx_RoomSubList_chevron { + top: 8px ! important; +} +.mx_MemberInfo .mx_RoomTile_name { + color: #70808D ! important; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +html { + /* hack to stop overscroll bounce on OSX and iOS. + N.B. Breaks things when we have legitimate horizontal overscroll */ + height: 100%; + overflow: hidden; +} +body { + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + font-size: 15px; + background-color: #EEF2F5; + color: #70808D; + border: 0px; + margin: 0px; + /* This should render the fonts the same accross browsers */ + -webkit-font-smoothing: subpixel-antialiased; +} +div.error, div.warning { + color: #F69E98; +} +h2 { + color: #70808D; + font-weight: 400; + font-size: 18px; + margin-top: 16px; + margin-bottom: 16px; +} +a:hover, a:link, a:visited { + color: #6CC1F6; +} +input[type=text], input[type=password], textarea { + background-color: transparent; + color: #70808D; +} +input[type=text].error, input[type=password].error { + border: 1px solid #F69E98; +} +input[type=text]:focus, input[type=password]:focus, textarea:focus { + border: 1px solid #6CC1F6; + outline: none; + box-shadow: none; +} +/* Required by Firefox */ +textarea { + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; +} +/* Prevent ugly dotted highlight around selected elements in Firefox */ +::-moz-focus-inner { + border: 0; +} +/* applied to side-panels and messagepanel when in RoomSettings */ +.mx_fadable { + opacity: 1; + transition: opacity 0.2s ease-in-out; +} +.mx_fadable.mx_fadable_faded { + opacity: 0.3; + pointer-events: none; +} +/* XXX: critical hack to GeminiScrollbar to allow them to work in FF 42 and Chrome 48. + Stop the scrollbar view from pushing out the container's overall sizing, which causes + flexbox to adapt to the new size and cause the view to keep growing. + */ +.gm-scrollbar-container .gm-scroll-view { + position: absolute; +} +/* Expand thumbs on hoverover */ +.gm-scrollbar { + border-radius: 5px ! important; +} +.gm-scrollbar.-vertical { + width: 6px; + transition: width 120ms ease-out ! important; +} +.gm-scrollbar.-vertical:hover, .gm-scrollbar.-vertical:active { + width: 8px; + transition: width 120ms ease-out ! important; +} +.gm-scrollbar.-horizontal { + height: 6px; + transition: height 120ms ease-out ! important; +} +.gm-scrollbar.-horizontal:hover, .gm-scrollbar.-horizontal:active { + height: 8px; + transition: height 120ms ease-out ! important; +} +#mx_theme_accentColor { + color: #6CC1F6; +} +#mx_theme_secondaryAccentColor { + color: #586C7B; +} +#mx_theme_tertiaryAccentColor { + color: #586C7B; +} +.mx_Dialog_wrapper { + position: fixed; + z-index: 4000; + top: 0; + left: 0; + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +/* Spinner Dialog overide */ +.mx_Dialog_wrapper.mx_Dialog_spinner .mx_Dialog { + width: auto; + border-radius: 8px; + padding: 0px; + box-shadow: none; +} +/* View Source Dialog overide */ +.mx_Dialog_wrapper.mx_Dialog_viewsource .mx_Dialog { + padding-left: 10px; + padding-right: 10px; +} +.mx_Dialog { + background-color: #EEF2F5; + color: #747474; + z-index: 4010; + font-weight: 300; + font-size: 15px; + position: relative; + padding-left: 58px; + padding-bottom: 36px; + width: 60%; + max-width: 704px; + box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2); + max-height: 80%; + overflow-y: auto; +} +.mx_Dialog_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #e9e9e9; + opacity: 0.8; +} +.mx_Dialog_lightbox .mx_Dialog_background { + opacity: 0.85; + background-color: #000; +} +.mx_Dialog_lightbox .mx_Dialog { + border-radius: 0px; + background-color: transparent; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; + pointer-events: none; +} +.mx_Dialog_cancelButton { + position: absolute; + right: 11px; + top: 13px; + cursor: pointer; +} +.mx_Dialog_cancelButton object { + pointer-events: none; +} +.mx_Dialog_content { + margin: 24px 58px 68px 0; + font-size: 14px; + color: #70808D; + word-wrap: break-word; +} +.mx_Dialog_buttons { + padding-right: 58px; + text-align: right; +} +.mx_Dialog button, .mx_Dialog input[type="submit"] { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + margin-left: 0px; + margin-right: 8px; + font-weight: 600; + border: 1px solid #6CC1F6 ! important; + color: #6CC1F6; + background-color: #ffffff; +} +.mx_Dialog button:hover, .mx_Dialog input[type="submit"]:hover { + background-color: #84cfff; +} +.mx_Dialog button:focus, .mx_Dialog input[type="submit"]:focus { + -webkit-filter: brightness(125%); + filter: brightness(125%); +} +.mx_Dialog button.mx_Dialog_primary, .mx_Dialog input[type="submit"].mx_Dialog_primary { + color: #ffffff; + background-color: #6CC1F6; +} +.mx_Dialog button.danger, .mx_Dialog input[type="submit"].danger { + background-color: #F69E98; + border: solid 1px #F69E98; + color: #ffffff; +} +.mx_Dialog button:disabled, .mx_Dialog input[type="submit"]:disabled { + background-color: #747474; + border: solid 1px #747474; + opacity: 0.7; +} +.mx_Dialog_title { + min-height: 16px; + padding-top: 40px; + font-weight: bold; + font-size: 22px; + line-height: 1.4; + color: #70808D; +} +.mx_Dialog_title.danger { + color: #F69E98; +} +.mx_TextInputDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_TextInputDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #70808D; + background-color: #EEF2F5; +} +.mx_emojione { + height: 1em; + vertical-align: middle; +} +.mx_emojione_selected { + background-color: #6CC1F6; +} +::-moz-selection { + background-color: #6CC1F6; + color: #EEF2F5; +} +::selection { + background-color: #6CC1F6; + color: #EEF2F5; +} +.mx_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + height: auto; + padding-top: 7px; + padding-bottom: 7px; + padding-left: 1em; + padding-right: 1em; +} +.mx_textButton:hover { + background-color: #84cfff; +} +.mx_button_row { + margin-top: 69px; +} +.mx_Beta { + color: red; + margin-right: 10px; + position: relative; + top: -3px; + background-color: white; + padding: 0 4px; + border-radius: 3px; + border: 1px solid darkred; + cursor: help; + transition-duration: 200ms; + font-size: smaller; + -webkit-filter: opacity(0.5); + filter: opacity(0.5); +} +.mx_Beta:hover { + color: white; + border: 1px solid gray; + background-color: darkred; +} +.mx_TintableSvgButton { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -ms-flex-line-pack: center; + align-content: center; +} +.mx_TintableSvgButton object { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + max-width: 100%; + max-height: 100%; +} +.mx_TintableSvgButton span { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 0; + cursor: pointer; +} +/* + * Open Sans + * Includes extended Latin, Greek, Cyrillic and Vietnamese character sets + */ +/* the 'src' links are relative to the bundle.css, which is in a subdirectory. + */ +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Italic.ttf') format('truetype'); + font-weight: 400; + font-style: italic; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Semibold.ttf') format('truetype'); + font-weight: 600; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-SemiboldItalic.ttf') format('truetype'); + font-weight: 600; + font-style: italic; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} +@font-face { + font-family: 'Open Sans'; + src: url('../../fonts/Open_Sans/OpenSans-BoldItalic.ttf') format('truetype'); + font-weight: 700; + font-style: italic; +} +/* + * Fira Mono + * Used for monospace copy, i.e. code + */ +@font-face { + font-family: 'Fira Mono'; + src: url('../../fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype'); + font-weight: 400; + font-style: normal; +} +@font-face { + font-family: 'Fira Mono'; + src: url('../../fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype'); + font-weight: 700; + font-style: normal; +} +.mx_CompatibilityPage { + width: 100%; + height: 100%; + background-color: #e55; +} +.mx_CompatibilityPage_box { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: auto; + width: 500px; + height: 300px; + border: 1px solid; + padding: 10px; + background-color: #fcc; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ContextualMenu_wrapper { + position: fixed; + z-index: 5000; +} +.mx_ContextualMenu_background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1.0; + z-index: 5000; +} +.mx_ContextualMenu { + border: solid 1px rgba(187, 187, 187, 0.5); + border-radius: 4px; + background-color: #f6f6f6; + color: #70808D; + position: absolute; + padding: 6px; + font-size: 14px; + z-index: 5001; +} +.mx_ContextualMenu.mx_ContextualMenu_right { + right: 8px; +} +.mx_ContextualMenu_chevron_right { + position: absolute; + right: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-left: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_chevron_right:after { + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-left: 7px solid #f6f6f6; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + right: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_left { + left: 8px; +} +.mx_ContextualMenu_chevron_left { + position: absolute; + left: -8px; + top: 0px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_ContextualMenu_chevron_left:after{ + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #f6f6f6; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + left: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_top { + top: 8px; +} +.mx_ContextualMenu_chevron_top { + position: absolute; + left: 0px; + top: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-bottom: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid transparent; +} +.mx_ContextualMenu_chevron_top:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-bottom: 7px solid #f6f6f6; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + top: 1px; +} +.mx_ContextualMenu.mx_ContextualMenu_bottom { + bottom: 8px; +} +.mx_ContextualMenu_chevron_bottom { + position: absolute; + left: 0px; + bottom: -8px; + width: 0; + height: 0; + border-left: 8px solid transparent; + border-top: 8px solid rgba(187, 187, 187, 0.5); + border-right: 8px solid transparent; +} +.mx_ContextualMenu_chevron_bottom:after{ + content:''; + width: 0; + height: 0; + border-left: 7px solid transparent; + border-top: 7px solid #f6f6f6; + border-right: 7px solid transparent; + position:absolute; + left: -7px; + bottom: 1px; +} +.mx_ContextualMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} +.mx_ContextualMenu_spinner { + display: block; + margin: 0 auto; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateRoom { + width: 960px; + margin-left: auto; + margin-right: auto; + color: #70808D; +} +.mx_CreateRoom input, .mx_CreateRoom textarea { + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-top: 6px; +} +.mx_CreateRoom_description { + width: 330px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_FilePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + width: 100%; + + overflow-y: auto; +} +.mx_FilePanel .mx_RoomView_messageListWrapper { + margin-right: 20px; +} +.mx_FilePanel .mx_RoomView_MessageList h2 { + display: none; +} +/* FIXME: rather than having EventTile's default CSS be for MessagePanel, + we should make EventTile a base CSS class and customise it specifically + for usage in {Message,File,Notification}Panel. */ +.mx_FilePanel .mx_EventTile_avatar { + display: none; +} +/* Overrides for the attachment body tiles */ +.mx_FilePanel .mx_EventTile { + word-break: break-word; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody { + margin-right: 0px; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_download { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 14px; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MFileBody_downloadLink { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + color: #747474; +} +.mx_FilePanel .mx_EventTile .mx_MImageBody_size { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + font-size: 11px; + text-align: right; + white-space: nowrap; +} +/* Overides for the sender details line */ +.mx_FilePanel .mx_EventTile_senderDetails { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: -2px; +} +.mx_FilePanel .mx_EventTile_senderDetailsLink { + text-decoration: none; +} +.mx_FilePanel .mx_EventTile .mx_SenderProfile { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + line-height: initial; + padding: 0px; + font-size: 11px; + opacity: 1.0; + color: #acacac; +} +.mx_FilePanel .mx_EventTile .mx_MessageTimestamp { + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + text-align: right; + visibility: visible; + position: initial; + font-size: 11px; + opacity: 1.0; + color: #acacac; +} +/* Overrides for the wrappers around the body tile */ +.mx_FilePanel .mx_EventTile_line { + margin-right: 0px; + padding-left: 0px; +} +.mx_FilePanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #EEF2F5; +} +.mx_FilePanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupView { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + overflow: hidden; +} +.mx_GroupView_error { + margin: auto; +} +.mx_GroupView_header { + max-width: 960px; + min-height: 70px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-bottom: 10px; +} +.mx_GroupView_header_view { + border-bottom: 1px solid #e5e5e5; + padding-bottom: 0px; +} +.mx_GroupView_header_avatar, .mx_GroupView_header_info { + display: table-cell; + vertical-align: middle; +} +.mx_GroupHeader_button { + margin-left: 12px; + cursor: pointer; +} +.mx_GroupHeader_button object { + pointer-events: none; +} +.mx_GroupView_editable { + border-bottom: 1px solid #c7c7c7 ! important; + min-width: 150px; + cursor: text; +} +.mx_GroupView_editable:focus { + border-bottom: 1px solid #6CC1F6 ! important; + outline: none; + box-shadow: none; +} +.mx_GroupView_header_isUserMember .mx_GroupView_header_name:hover div:not(.mx_GroupView_editable) { + color: #6CC1F6; + cursor: pointer; +} +.mx_GroupView_avatarPicker { + position: relative; +} +.mx_GroupView_avatarPicker_edit { + position: absolute; + top: 50px; + left: 15px; +} +.mx_GroupView_avatarPicker .mx_Spinner { + width: 48px; + height: 48px ! important; +} +.mx_GroupView_header_leftCol { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + overflow: hidden; +} +.mx_GroupView_header_rightCol { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_GroupView_textButton { + display: inline-block; +} +.mx_GroupView_header_groupid { + font-weight: normal; + font-size: initial; + padding-left: 10px; +} +.mx_GroupView_header_name { + vertical-align: middle; + width: 100%; + height: 31px; + overflow: hidden; + color: #70808D; + font-weight: bold; + font-size: 22px; + padding-left: 19px; + padding-right: 16px; + /* why isn't text-overflow working? */ + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_GroupView_header_shortDesc { + vertical-align: bottom; + float: left; + max-height: 42px; + color: #a2a2a2; + font-weight: 300; + font-size: 13px; + padding-left: 19px; + margin-right: 16px; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_GroupView_avatarPicker_label { + cursor: pointer; +} +.mx_GroupView_cancelButton { + padding-left: 8px; +} +.mx_GroupView_cancelButton img { + position: relative; + top: 5px; +} +.mx_GroupView input[type='radio'] { + margin: 10px 10px 0px 10px; +} +.mx_GroupView_label_text { + display: inline-block; + max-width: 80%; + vertical-align: 0.1em; + line-height: 2em; +} +.mx_GroupView_body { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_GroupView_rooms { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 200px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView h3 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-bottom: 10px; +} +.mx_GroupView_rooms_header .mx_AccessibleButton { + padding-left: 14px; + margin-bottom: 14px; + height: 24px; +} +.mx_GroupView_group { + border-top: 1px solid #e5e5e5; +} +.mx_GroupView_group_disabled { + opacity: 0.3; + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_button { + display: inline-block; +} +.mx_GroupView_rooms_header_addRow_button object { + pointer-events: none; +} +.mx_GroupView_rooms_header_addRow_label { + display: inline-block; + vertical-align: top; + line-height: 24px; + padding-left: 28px; + color: #6CC1F6; +} +.mx_GroupView_rooms .mx_RoomDetailList { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border-top: 1px solid #e5e5e5; + padding-top: 10px; + word-break: break-word; +} +.mx_GroupView .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_GroupView_membershipSection { + color: #888; + margin-top: 10px; +} +.mx_GroupView_membershipSubSection { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupView_membershipSubSection .mx_Spinner { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} +.mx_GroupView_membershipSection_description { + /* To match textButton */ + line-height: 34px; +} +.mx_GroupView_membershipSection_description .mx_BaseAvatar { + margin-right: 10px; +} +.mx_GroupView_membershipSection .mx_GroupView_textButton { + margin-right: 0px; + margin-top: 0px; + margin-left: 8px; +} +.mx_GroupView_memberSettings_toggle label { + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_GroupView_memberSettings input { + margin-right: 6px; +} +.mx_GroupView_featuredThings { + margin-top: 20px; +} +.mx_GroupView_featuredThings_header { + font-weight: bold; + font-size: 120%; + margin-bottom: 20px; +} +.mx_GroupView_featuredThings_category { + font-weight: bold; + font-size: 110%; + margin-top: 10px; +} +.mx_GroupView_featuredThings_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupView_featuredThings_addButton, .mx_GroupView_featuredThing { + display: table-cell; + text-align: center; + + width: 100px; + margin: 0px 20px; +} +.mx_GroupView_featuredThing { + position: relative; +} +.mx_GroupView_featuredThing .mx_GroupView_featuredThing_deleteButton { + position: absolute; + top: -7px; + right: 11px; + opacity: 0.4; +} +.mx_GroupView_featuredThing .mx_BaseAvatar { + /* To prevent misalignment with mx_TintableSvg (in addButton) */ + vertical-align: initial; +} +.mx_GroupView_featuredThings_addButton object { + pointer-events: none; +} +.mx_GroupView_featuredThing_name { + word-wrap: break-word; +} +.mx_GroupView_uploadInput { + display: none; +} +.mx_GroupView_body .gm-scroll-view > *{ + margin: 11px 50px 0px 68px; +} +.mx_GroupView_groupDesc textarea { + width: 100%; + max-width: 100%; + height: 150px; +} +.mx_GroupView_groupDesc_placeholder, .mx_GroupView_changeDelayWarning { + background-color: #f7f7f7; + color: #888; + border-radius: 10px; + text-align: center; + + margin: 20px 0px; +} +.mx_GroupView_groupDesc_placeholder { + padding: 100px 20px; + cursor: pointer; +} +.mx_GroupView_changeDelayWarning { + padding: 40px 20px; +} +/* +Copyright 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_HomePage { + max-width: 960px; + width: 100%; + height: 100%; + margin-left: auto; + margin-right: auto; +} +.mx_HomePage iframe { + display: block; + width: 100%; + height: 100%; + border: 0px; +} +.mx_HomePage_body { +} +.mx_HomePage_guest_warning { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #586C7B; + border: 1px solid #6CC1F6; + margin: 20px; + padding: 20px 40px; + border-radius: 5px; +} +.mx_HomePage_guest_warning img { + padding-right: 10px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LeftPanel { + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_LeftPanel_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + /* LeftPanel 235px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 235px; + flex: 0 0 235px; +} +.mx_LeftPanel_container.mx_LeftPanel_container_hasTagPanel { + /* TagPanel 60px + LeftPanel 235px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 295px; + flex: 0 0 295px; +} +.mx_LeftPanel_container_collapsed { + /* Collapsed LeftPanel 60px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; +} +.mx_LeftPanel_container_collapsed.mx_LeftPanel_container_hasTagPanel { + /* TagPanel 60px + Collapsed LeftPanel 60px */ + -webkit-box-flex: 0; + -ms-flex: 0 0 120px; + flex: 0 0 120px; +} +.mx_LeftPanel_hideButton { + position: absolute; + top: 10px; + right: 0px; + padding: 8px; + cursor: pointer; +} +.mx_LeftPanel_callView { + +} +.mx_LeftPanel .mx_AppTile_mini { + height: 132px; +} +.mx_LeftPanel .mx_RoomList_scrollbar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + overflow-y: auto; + z-index: 6; +} +.mx_LeftPanel.collapsed .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 160px; + flex: 0 0 160px; + margin-bottom: 9px; +} +.mx_LeftPanel .mx_BottomLeftMenu { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + border-top: 1px solid rgba(0, 0, 0, 0.2); + margin-left: 16px; /* gutter */ + margin-right: 16px; /* gutter */ + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; + z-index: 1; +} +.mx_LeftPanel .mx_BottomLeftMenu_options { + margin-top: 18px; +} +.mx_BottomLeftMenu_options object { + pointer-events: none; +} +.collapsed .mx_RoleButton { + margin-right: 0px ! important; + padding-top: 3px ! important; + padding-bottom: 3px ! important; +} +.mx_BottomLeftMenu_options > div { + display: inline-block; +} +.mx_BottomLeftMenu_options .mx_RoleButton { + margin-left: 0px; + margin-right: 10px; + height: 30px; +} +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings { + float: right; +} +.mx_BottomLeftMenu_options .mx_BottomLeftMenu_settings .mx_RoleButton { + margin-right: 0px; +} +.mx_LeftPanel.collapsed .mx_BottomLeftMenu_settings { + float: none; +} +.mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 50px; + flex: 0 0 50px; + } +.mx_MatrixChat_useCompactLayout .mx_LeftPanel.collapsed .mx_BottomLeftMenu { + -webkit-box-flex: 0; + -ms-flex: 0 0 160px; + flex: 0 0 160px; + } +.mx_MatrixChat_useCompactLayout .mx_LeftPanel .mx_BottomLeftMenu_options { + margin-top: 12px; + } +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LoginBox { + min-height: 24px; + height: unset !important; + padding-top: 13px !important; + padding-bottom: 14px !important; + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_LoginBox_loginButton_wrapper { + text-align: center; + width: 100%; +} +.mx_LoginBox_loginButton, .mx_LoginBox_registerButton { + margin-top: 3px; + height: 40px; + border: 0px; + border-radius: 40px; + margin-left: 4px; + margin-right: 4px; + min-width: 80px; + + background-color: #6CC1F6; + color: #EEF2F5; + + cursor: pointer; + + font-size: 15px; + padding: 0 11px; + word-break: break-word; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MatrixChat_splash { + position: relative; + height: 100%; +} +.mx_MatrixChat_splashButtons { + text-align: center; + width: 100%; + position: absolute; + bottom: 30px; +} +.mx_MatrixChat_wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; + + width: 100%; + height: 100%; +} +.mx_MatrixToolbar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + height: 40px; +} +.mx_MatrixChat_toolbarShowing { + height: auto; +} +.mx_MatrixChat { + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-ordinal-group: 3; + + -ms-flex-order: 2; + + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; +} +.mx_MatrixChat_syncError { + color: #ffffff; + background-color: #DF2A8B; + border-radius: 5px; + display: table; + padding: 30px; + position: absolute; + top: 100px; + left: 50%; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); +} +.mx_MatrixChat .mx_LeftPanel { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + background-color: #586C7B; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 235px; + + flex: 0 0 235px; +} +.mx_MatrixChat .mx_LeftPanel.collapsed { + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; +} +.mx_MatrixChat .mx_MatrixChat_middlePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + padding-left: 20px; + padding-right: 22px; + background-color: #EEF2F5; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; + + /* Experimental fix for https://github.com/vector-im/vector-web/issues/947 + and https://github.com/vector-im/vector-web/issues/946. + Empirically this stops the MessagePanel's width exploding outwards when + gemini is in 'prevented' mode + */ + overflow-x: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + /* To fix https://github.com/vector-im/riot-web/issues/3298 where Safari + needed height 100% all the way down to the HomePage. Height does not + have to be auto, empirically. + */ + height: 100%; +} +.mx_MatrixChat .mx_RightPanel { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 235px; + + flex: 0 0 235px; +} +.mx_MatrixChat .mx_RightPanel.collapsed { + -webkit-box-flex: 0; + -ms-flex: 0 0 122px; + flex: 0 0 122px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MyGroups { + max-width: 960px; + margin-left: auto; + margin-right: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MyGroups .mx_RoomHeader_simpleHeader { + margin-left: 0px; +} +.mx_MyGroups_header { + /* Keep mid-point of create button aligned with icon in page header */ + margin-left: 2px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_MyGroups_headerCard { + -webkit-box-flex: 1; + -ms-flex: 1 0 50%; + flex: 1 0 50%; + margin-bottom: 30px; + min-width: 400px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MyGroups_headerCard .mx_MyGroups_headerCard_button { + margin-right: 13px; + height: 50px; +} +.mx_MyGroups_headerCard_button object { + /* Otherwise the SVG object absorbs clicks and the button doesn't work */ + pointer-events: none; +} +.mx_MyGroups_headerCard_header { + font-weight: bold; + margin-bottom: 10px; +} +.mx_MyGroups_headerCard_content { + padding-right: 15px; +} +/* Until the button is wired up */ +.mx_MyGroups_joinBox { + visibility: hidden; + + /* When joinBox wraps onto its own row, it should take up zero height so + that there isn't an awkward gap between MyGroups_createBox and + MyGroups_content. + */ + height: 0px; + margin: 0px; +} +.mx_MyGroups_content { + margin-left: 2px; + + -webkit-box-flex: 1; + + -ms-flex: 1 0 0px; + + flex: 1 0 0; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_MyGroups_placeholder { + background-color: #f7f7f7; + color: #888; + line-height: 400px; + border-radius: 10px; + text-align: center; +} +.mx_MyGroups_joinedGroups { + border-top: 1px solid #e5e5e5; + overflow-x: hidden; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-flow: wrap; + flex-flow: wrap; + -ms-flex-line-pack: start; + align-content: flex-start; +} +.mx_MyGroups_joinedGroups .mx_GroupTile { + min-width: 300px; + max-width: 33%; + -webkit-box-flex: 1; + -ms-flex: 1 0 300px; + flex: 1 0 300px; + height: 75px; + margin: 10px 0px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; +} +.mx_GroupTile_avatar { + cursor: -webkit-grab, -webkit-grab; + cursor: grab, -webkit-grab; +} +.mx_GroupTile_profile { + margin-left: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_GroupTile_profile .mx_GroupTile_name, .mx_GroupTile_profile .mx_GroupTile_groupId, .mx_GroupTile_profile .mx_GroupTile_desc { + padding-right: 10px; +} +.mx_GroupTile_profile .mx_GroupTile_name { + margin: 0px; + font-size: 15px; +} +.mx_GroupTile_profile .mx_GroupTile_groupId { + font-size: 13px; +} +.mx_GroupTile_profile .mx_GroupTile_desc { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + font-size: 13px; + max-height: 36px; + overflow: hidden; +} +.mx_GroupTile_profile .mx_GroupTile_groupId { + opacity: 0.7; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NotificationPanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + width: 100%; + + overflow-y: auto; +} +.mx_NotificationPanel .mx_RoomView_messageListWrapper { + margin-right: 20px; +} +.mx_NotificationPanel .mx_RoomView_MessageList h2 { + margin-left: 0px; +} +/* FIXME: rather than having EventTile's default CSS be for MessagePanel, + we should make EventTile a base CSS class and customise it specifically + for usage in {Message,File,Notification}Panel. */ +.mx_NotificationPanel .mx_EventTile { + word-break: break-word; +} +.mx_NotificationPanel .mx_EventTile_roomName { + font-weight: bold; + font-size: 14px; +} +.mx_NotificationPanel .mx_EventTile_roomName a { + color: #70808D; +} +.mx_NotificationPanel .mx_EventTile_avatar { + top: 8px; + left: 0px; +} +.mx_NotificationPanel .mx_EventTile .mx_SenderProfile, .mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { + color: #70808D; + font-size: 12px; + display: inline; + padding-left: 0px; +} +.mx_NotificationPanel .mx_EventTile_senderDetails { + padding-left: 32px; + padding-top: 8px; + position: relative; +} +.mx_NotificationPanel .mx_EventTile_roomName a, .mx_NotificationPanel .mx_EventTile_senderDetails a { + text-decoration: none ! important; +} +.mx_NotificationPanel .mx_EventTile .mx_MessageTimestamp { + visibility: visible; + position: initial; + display: inline; +} +.mx_NotificationPanel .mx_EventTile_line { + margin-right: 0px; + padding-left: 32px; + padding-top: 0px; + padding-bottom: 0px; + padding-right: 0px; +} +.mx_NotificationPanel .mx_EventTile:hover .mx_EventTile_line { + background-color: #EEF2F5; +} +.mx_NotificationPanel .mx_EventTile_selected .mx_EventTile_line { + padding-left: 0px; +} +.mx_NotificationPanel .mx_EventTile_content { + margin-right: 0px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RightPanel { + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_RightPanel_header { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + border-bottom: 1px solid #e5e5e5; + margin-right: 20px; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +/** Fixme - factor this out with the main header **/ +.mx_RightPanel_headerButtonGroup { + margin-top: 6px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + background-color: #EEF2F5; + margin-left: 0px; +} +.mx_RightPanel_headerButton { + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + vertical-align: top; + padding-left: 4px; + padding-right: 5px; + text-align: center; + position: relative; +} +.mx_RightPanel_headerButton object { + pointer-events: none; + padding-bottom: 3px; +} +.mx_RightPanel_headerButton_highlight { + width: 25px; + height: 5px; + border-radius: 5px; + background-color: #6CC1F6; + opacity: 0.2; +} +.mx_RightPanel_headerButton_badge { + font-size: 11px; + color: #6CC1F6; + font-weight: bold; + padding-bottom: 2px; +} +.mx_RightPanel_collapsebutton { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + text-align: right; + margin-top: 20px; +} +.mx_RightPanel .mx_MemberList, .mx_RightPanel .mx_MemberInfo, .mx_RightPanel .mx_GroupRoomList, .mx_RightPanel_blank { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RightPanel .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + margin: auto; +} +.mx_RightPanel_footer { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + + border-top: 1px solid #e5e5e5; + margin-right: 20px; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 60px; + + flex: 0 0 60px; +} +.mx_RightPanel_footer .mx_RightPanel_invite { + font-size: 14px; + color: #70808D; + padding-top: 13px; + padding-left: 5px; + cursor: pointer; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.collapsed .mx_RightPanel_footer .mx_RightPanel_invite { + display: none; +} +.mx_RightPanel_invite .mx_RightPanel_icon object { + pointer-events: none; +} +.mx_RightPanel_invite .mx_RightPanel_message { + padding-left: 10px; + line-height: 18px; +} +.mx_MatrixChat_useCompactLayout .mx_RightPanel_footer { + -webkit-box-flex: 0; + -ms-flex: 0 0 50px; + flex: 0 0 50px; + } +.mx_MatrixChat_useCompactLayout .mx_RightPanel_footer .mx_RightPanel_invite { + line-height: 25px; + padding-top: 8px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomDirectory { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + margin-bottom: 12px; + color: #70808D; + word-break: break-word; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomDirectory .mx_RoomHeader_simpleHeader { + margin-left: 0px; +} +.mx_RoomDirectory_list { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomDirectory_list .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomDirectory_listheader { + display: table; + table-layout: fixed; + width: 100%; + margin-top: 12px; + margin-bottom: 12px; + border-spacing: 5px; +} +.mx_RoomDirectory_searchbox { + display: table-cell; + vertical-align: middle; +} +.mx_RoomDirectory_listheader .mx_NetworkDropdown { + display: table-cell; + width: 200px; +} +.mx_RoomDirectory_tableWrapper { + overflow-y: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_RoomDirectory_table { + font-size: 14px; + color: #70808D; + width: 100%; + text-align: left; + table-layout: fixed; +} +.mx_RoomDirectory_roomAvatar { + width: 24px; + padding-left: 12px; + padding-right: 24px; + vertical-align: top; +} +.mx_RoomDirectory_roomDescription { + padding-bottom: 16px; +} +.mx_RoomDirectory_name { + display: inline-block; + font-weight: 600; +} +.mx_RoomDirectory_perms { + display: inline-block; +} +.mx_RoomDirectory_perm { + display: inline; + padding-left: 5px; + padding-right: 5px; + margin-right: 5px; + height: 15px; + border-radius: 11px; + background-color: #586C7B; + text-transform: uppercase; + font-weight: 600; + font-size: 11px; + color: #6CC1F6; +} +.mx_RoomDirectory_topic { + cursor: initial; +} +.mx_RoomDirectory_alias { + font-size: 12px; + color: #a2a2a2; +} +.mx_RoomDirectory_roomMemberCount { + text-align: right; + width: 100px; + padding-right: 10px; +} +.mx_RoomDirectory_table tr { + padding-bottom: 10px; + cursor: pointer; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomStatusBar { + margin-left: 65px; + min-height: 50px; +} +/* position the indicator in the same place horizontally as .mx_EventTile_avatar. */ +.mx_RoomStatusBar_indicator { + padding-left: 17px; + padding-right: 12px; + margin-left: -73px; + margin-top: 15px; + float: left; + width: 24px; + text-align: center; +} +.mx_RoomStatusBar_callBar { + height: 50px; + line-height: 50px; +} +.mx_RoomStatusBar_placeholderIndicator span { + color: #70808D; + opacity: 0.5; + position: relative; + top: -4px; +/* + animation-duration: 1s; + animation-name: bounce; + animation-direction: alternate; + animation-iteration-count: infinite; +*/ +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(1) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(2) { + -webkit-animation-delay: 0.6s; + animation-delay: 0.6s; +} +.mx_RoomStatusBar_placeholderIndicator span:nth-child(3) { + -webkit-animation-delay: 0.9s; + animation-delay: 0.9s; +} +@-webkit-keyframes bounce { + from { + opacity: 0.5; + top: 0; + } + + to { + opacity: 0.2; + top: -3px; + } +} +@keyframes bounce { + from { + opacity: 0.5; + top: 0; + } + + to { + opacity: 0.2; + top: -3px; + } +} +.mx_RoomStatusBar_typingIndicatorAvatars { + width: 52px; + margin-top: -1px; + text-align: left; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_image { + margin-right: -12px; + border: 1px solid #EEF2F5; +} +.mx_RoomStatusBar_typingIndicatorAvatars .mx_BaseAvatar_initial { + padding-left: 1px; + padding-top: 1px; +} +.mx_RoomStatusBar_typingIndicatorRemaining { + display: inline-block; + color: #acacac; + background-color: #ddd; + border: 1px solid #EEF2F5; + border-radius: 40px; + width: 24px; + height: 24px; + line-height: 24px; + font-size: 0.8em; + vertical-align: top; + text-align: center; + position: absolute; +} +.mx_RoomStatusBar_scrollDownIndicator { + cursor: pointer; + padding-left: 1px; +} +.mx_RoomStatusBar_unreadMessagesBar { + padding-top: 10px; + color: #F69E98; + cursor: pointer; +} +.mx_RoomStatusBar_connectionLostBar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + margin-top: 19px; + min-height: 58px; +} +.mx_RoomStatusBar_connectionLostBar img { + padding-left: 10px; + padding-right: 22px; + vertical-align: middle; + float: left; +} +.mx_RoomStatusBar_connectionLostBar_title { + color: #F69E98; +} +.mx_RoomStatusBar_connectionLostBar_desc { + color: #70808D; + font-size: 13px; + opacity: 0.5; + padding-bottom: 20px; +} +.mx_RoomStatusBar_resend_link { + color: #70808D ! important; + text-decoration: underline ! important; + cursor: pointer; +} +.mx_RoomStatusBar_typingBar { + height: 50px; + line-height: 50px; + + color: #70808D; + opacity: 0.5; + overflow-y: hidden; + display: block; +} +.mx_RoomStatusBar_isAlone { + height: 50px; + line-height: 50px; + + color: #70808D; + opacity: 0.5; + overflow-y: hidden; + display: block; +} +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar { + min-height: 40px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_indicator { + margin-top: 10px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_callBar { + height: 40px; + line-height: 40px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomStatusBar_typingBar { + height: 40px; + line-height: 40px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomSubList { + display: table; + table-layout: fixed; + width: 100%; + + background-color: rgba(0, 0, 0, 0.2); +} +.mx_RoomSubList_labelContainer { + height: 31px; /* mx_RoomSubList_label height including border */ + width: 235px; /* LHS Panel width */ + position: relative; +} +.mx_RoomSubList_label { + position: relative; + text-transform: uppercase; + color: #ffffff; + font-weight: 600; + font-size: 12px; + width: 203px; /* padding + width = LHS Panel width */ + height: 19px; /* height + padding = 31px = mx_RoomSubList_label height */ + padding-left: 16px; /* gutter */ + padding-right: 16px; /* gutter */ + padding-top: 6px; + padding-bottom: 6px; + cursor: pointer; + background-color: #586C7B; +} +.mx_RoomSubList_label.mx_RoomSubList_fixed { + position: fixed; + top: 0; + z-index: 5; + /* pointer-events: none; */ +} +.collapsed .mx_RoomSubList_label { + height: 17px; + width: 28px; /* collapsed LHS Panel width */ +} +.collapsed .mx_RoomSubList_labelContainer { + width: 28px; /* collapsed LHS Panel width */ +} +.mx_RoomSubList_roomCount { + display: inline-block; + font-size: 12px; + font-weight: normal; + color: #6CC1F6; + padding-left: 5px; + text-transform: none; +} +.collapsed .mx_RoomSubList_roomCount { + display: none; +} +.mx_RoomSubList_badge { + display: inline-block; + min-width: 15px; + height: 15px; + position: absolute; + right: 8px; /*gutter */ + top: 7px; + border-radius: 8px; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; + background-color: #6CC1F6; +} +.mx_RoomSubList_label .mx_RoomSubList_badge:hover { + -webkit-filter: brightness(125%); + filter: brightness(125%); +} +/* +.collapsed .mx_RoomSubList_badge { + display: none; +} +*/ +.mx_RoomSubList_badgeHighlight { + background-color: #F69E98; +} +/* This is the bottom of the speech bubble */ +.mx_RoomSubList_badgeHighlight:after { + content: ""; + position: absolute; + display: block; + width: 0; + height: 0; + margin-left: 5px; + border-top: 5px solid #F69E98; + border-right: 7px solid transparent; +} +/* Hide the bottom of speech bubble */ +.collapsed .mx_RoomSubList_badgeHighlight:after { + display: none; +} +.mx_RoomSubList_chevron { + pointer-events: none; + position: absolute; + right: 41px; + top: 11px; +} +.mx_RoomSubList_chevronDown { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 6px solid #ffffff; +} +.mx_RoomSubList_chevronUp { + width: 0; + height: 0; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 6px solid #ffffff; +} +.mx_RoomSubList_chevronRight { + width: 0; + height: 0; + border-top: 5px solid transparent; + border-left: 6px solid #ffffff; + border-bottom: 5px solid transparent; +} +/* The overflow section */ +.mx_RoomSubList_ellipsis { + display: block; + line-height: 11px; + height: 18px; + position: relative; + cursor: pointer; + font-size: 13px; + + background-color: #586C7B; +} +.collapsed .mx_RoomSubList_ellipsis { + height: 20px; +} +.mx_RoomSubList_line { + display: inline-block; + width: 159px; + border-top: dotted 2px #6CC1F6; + vertical-align: middle; +} +.collapsed .mx_RoomSubList_line { + display: none; +} +.mx_RoomSubList_more { + display: inline-block; + text-transform: uppercase; + font-size: 10px; + font-weight: 600; + text-align: left; + color: #6CC1F6; + padding-left: 7px; + padding-right: 7px; + padding-left: 7px; + vertical-align: middle; +} +.collapsed .mx_RoomSubList_more { + display: none; +} +.mx_RoomSubList_moreBadge { + display: inline-block; + min-width: 15px; + height: 13px; + position: absolute; + right: 8px; /*gutter */ + top: -2px; + border-radius: 8px; + border: solid 1px #6CC1F6; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 3px; + padding-right: 3px; + background-color: #EEF2F5; + vertical-align: middle; +} +.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeNotify { + background-color: #6CC1F6; + border: 0; + padding-top: 3px; + padding-left: 4px; + padding-right: 4px; +} +.mx_RoomSubList_moreBadge.mx_RoomSubList_moreBadgeHighlight { + background-color: #F69E98; + border: 0; + padding-top: 3px; + padding-left: 4px; + padding-right: 4px; +} +.collapsed .mx_RoomSubList_moreBadge { + position: static; + margin-left: 16px; + margin-top: 2px; +} +.mx_RoomSubList_ellipsis .mx_RoomSubList_chevronDown { + position: relative; + top: 4px; + left: 2px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomView { + word-wrap: break-word; + position: relative; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + width: 100%; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_RoomView .mx_RoomHeader { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +.mx_RoomView_fileDropTarget { + min-width: 0px; + max-width: 960px; + width: 100%; + font-size: 18px; + text-align: center; + + pointer-events: none; + + padding-left: 12px; + padding-right: 12px; + margin-left: -12px; + + border-top-left-radius: 10px; + border-top-right-radius: 10px; + + background-color: rgba(255,255,255,0.5); + border: 2px #e1dddd solid; + border-bottom: none; + position: absolute; + top: 70px; + bottom: 0px; + z-index: 3000; +} +.mx_RoomView_fileDropTargetLabel { + top: 50%; + width: 100%; + margin-top: -50px; + position: absolute; +} +.mx_RoomView_auxPanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + min-width: 0px; + max-width: 960px; + width: 100%; + margin: 0px auto; + + overflow: auto; + border-bottom: 1px solid #e5e5e5; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 auto; + + flex: 0 0 auto; +} +.mx_RoomView_auxPanel_apps { + max-width: 1920px ! important; +} +.mx_RoomView_body { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomView_body .mx_RoomView_topUnreadMessagesBar { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; +} +.mx_RoomView_body .mx_RoomView_messagePanel { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_RoomView_body .mx_RoomView_messagePanelSpinner { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + margin: auto; +} +.mx_RoomView_body .mx_RoomView_statusArea { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; +} +.mx_RoomView_body .mx_MessageComposer { + -webkit-box-ordinal-group: 5; + -ms-flex-order: 4; + order: 4; +} +.mx_RoomView_messagePanel { + width: 100%; + overflow-y: auto; +} +.mx_RoomView_messageListWrapper { + max-width: 960px; + margin: auto; + + min-height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; + + -webkit-box-pack: end; + + -ms-flex-pack: end; + + justify-content: flex-end; +} +.mx_RoomView_searchResultsPanel .mx_RoomView_messageListWrapper { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_RoomView_empty { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + font-size: 13px; + padding-left: 3em; + padding-right: 3em; + margin-right: 20px; + margin-top: 33%; + text-align: center; +} +.mx_RoomView_MessageList { + width: 100%; + list-style-type: none; + padding: 0px; +} +.mx_RoomView_MessageList li { + clear: both; +} +li.mx_RoomView_myReadMarker_container { + height: 0px; + margin: 0px; + padding: 0px; + border: 0px; +} +hr.mx_RoomView_myReadMarker { + border-top: solid 1px #6CC1F6; + border-bottom: solid 1px #6CC1F6; + margin-top: 0px; + position: relative; + top: -1px; + z-index: 1; +} +.mx_RoomView_statusArea { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + + max-height: 0px; + background-color: #EEF2F5; + z-index: 1000; + overflow: hidden; + + transition: all .2s ease-out; +} +.mx_RoomView_statusArea_expanded { + max-height: 100px; +} +.mx_RoomView_statusAreaBox { + max-width: 960px; + margin: auto; + min-height: 50px; +} +.mx_RoomView_statusAreaBox_line { + margin-left: 65px; + border-top: 1px solid #e5e5e5; + height: 1px; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadProgressInner { + background-color: #EEF2F5; +} +.mx_RoomView_callStatusBar .mx_UploadBar_uploadFilename { + color: #ffffff; + opacity: 1.0; +} +.mx_RoomView_inCall .mx_RoomView_statusAreaBox_line { + margin-top: 2px; + border: none; + height: 0px; +} +.mx_RoomView_inCall .mx_MessageComposer_wrapper { + border-top: 2px hidden; + padding-top: 1px; +} +.mx_RoomView_inCall .mx_RoomView_statusAreaBox { + background-color: #6CC1F6; + color: #ffffff; + position: relative; +} +.mx_RoomView_voipChevron { + position: absolute; + bottom: -11px; + right: 11px; +} +.mx_RoomView_voipButton { + float: right; + margin-right: 13px; + margin-top: 10px; + cursor: pointer; +} +.mx_RoomView_voipButton object { + pointer-events: none; +} +.mx_RoomView .mx_MessageComposer { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 2px; +} +.mx_RoomView_ongoingConfCallNotification { + width: 100%; + text-align: center; + background-color: #F69E98; + color: #ffffff; + font-weight: bold; + padding: 6px 0; + cursor: pointer; +} +.mx_RoomView_ongoingConfCallNotification a { + color: #ffffff ! important; +} +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList { + margin-bottom: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomView_statusAreaBox { + min-height: 42px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchBox { + height: 24px; + margin-left: 16px; + margin-right: 16px; + padding-top: 24px; + padding-bottom: 22px; + + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; +} +.mx_SearchBox_searchButton { + margin-right: 10px; + margin-top: 5px; + pointer-events: none; +} +.mx_SearchBox_closeButton { + cursor: pointer; + margin-top: -5px; +} +.mx_SearchBox_search { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 0px; + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + font-size: 12px; + margin-top: -2px; + height: 24px; + border: 0px ! important; + /* border-bottom: 1px solid rgba(0, 0, 0, 0.1) ! important; */ + border: 0px; +} +.mx_SearchBox_minimise, .mx_SearchBox_maximise { + margin-top: 3px; + cursor: pointer; +} +.mx_SearchBox_minimise { + margin-left: 10px; +} +.mx_SearchBox_maximise { + margin-left: 9px; +} +.mx_SearchBox object { + pointer-events: none; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TagPanel { + -webkit-box-flex: 0; + -ms-flex: 0 0 60px; + flex: 0 0 60px; + background-color: #DBEBF6; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_TagPanel_items_selected { + cursor: pointer; +} +.mx_TagPanel .mx_TagPanel_clearButton_container { + /* Constant height within flex mx_TagPanel */ + height: 70px; + width: 60px; + + -webkit-box-flex: 0; + + -ms-flex: none; + + flex: none; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_TagPanel .mx_TagPanel_clearButton object { + /* Same as .mx_SearchBox padding-top */ + margin-top: 24px; + pointer-events: none; +} +.mx_TagPanel .mx_TagPanel_divider { + height: 0px; + width: 42px; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); +} +.mx_TagPanel .mx_TagPanel_scroller { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_TagPanel .mx_TagPanel_tagTileContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + + height: 100%; +} +.mx_TagPanel .mx_TagTile { + padding: 6px 3px; + opacity: 0.5; + position: relative; +} +.mx_TagPanel .mx_TagTile:focus, .mx_TagPanel .mx_TagTile:hover, .mx_TagPanel .mx_TagTile.mx_TagTile_selected { + opacity: 1; +} +.mx_TagPanel .mx_TagTile.mx_TagTile_selected { + /* To offset border of mx_TagTile_avatar */ + padding: 3px 0px; +} +.mx_TagPanel .mx_TagTile.mx_TagTile_selected .mx_TagTile_avatar .mx_BaseAvatar { + border: 3px solid #6CC1F6; + background-color: #6CC1F6; + border-radius: 60px; + + /* In case this is a "initial" avatar */ + display: block; + height: 35px; + width: 35px; +} +.mx_TagPanel .mx_TagTile.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_TagTile_tooltip { + position: relative; + top: -30px; + left: 5px; +} +.mx_TagTile_context_button { + min-width: 15px; + height: 15px; + position: absolute; + right: -5px; + top: 1px; + border-radius: 8px; + background-color: #dbdbdb; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; +} +.mx_TagPanel_groupsButton { + margin-bottom: 17px; + margin-top: 18px; + height: 25px; +} +.mx_TagPanel_groupsButton object { + pointer-events: none; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UploadBar { + position: relative; +} +.mx_UploadBar_uploadProgressOuter { + height: 5px; + margin-left: 63px; + margin-top: -1px; + padding-bottom: 5px; +} +.mx_UploadBar_uploadProgressInner { + background-color: #6CC1F6; + height: 5px; +} +.mx_UploadBar_uploadFilename { + margin-top: 5px; + margin-left: 65px; + opacity: 0.5; + color: #70808D; +} +.mx_UploadBar_uploadIcon { + float: left; + margin-top: 5px; + margin-left: 14px; +} +.mx_UploadBar_uploadCancel { + float: right; + margin-top: 5px; + margin-right: 10px; + position: relative; + opacity: 0.6; + cursor: pointer; + z-index: 1; +} +.mx_UploadBar_uploadBytes { + float: right; + margin-top: 5px; + margin-right: 30px; + color: #6CC1F6; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UserSettings { + max-width: 960px; + width: 100%; + margin-left: auto; + margin-right: auto; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_UserSettings .mx_RoomHeader { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + + -webkit-box-flex: 0; + + -ms-flex: 0 0 70px; + + flex: 0 0 70px; +} +.mx_UserSettings_body { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + + -webkit-box-flex: 1; + + -ms-flex: 1 1 0px; + + flex: 1 1 0; + + margin-top: -20px; + overflow-y: auto; +} +.mx_UserSettings h3 { + clear: both; + margin-left: 63px; + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-top: 26px; + margin-bottom: 10px; +} +.mx_UserSettings_section h3 { + margin-left: 0px; +} +.mx_UserSettings_spinner { + display: inline-block; + vertical-align: middle; + margin-right: 12px; + width: 32px; + height: 32px; +} +.mx_UserSettings_button { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + display: inline; + margin: auto; +} +.mx_UserSettings_button:hover { + background-color: #84cfff; +} +.mx_UserSettings_button.danger { + background-color: #F69E98; +} +.mx_UserSettings_section { + margin-left: 63px; + margin-top: 28px; + margin-bottom: 28px; +} +.mx_UserSettings_cryptoSection ul { + display: table; +} +.mx_UserSettings_cryptoSection li { + display: table-row; +} +.mx_UserSettings_cryptoSection label, .mx_UserSettings_cryptoSection span { + display: table-cell; + padding-right: 1em; +} +.mx_UserSettings_passwordWarning { + /* To move the "Sign out" button out of the way */ + clear: both; + color: #F69E98; + margin-bottom: 5px; +} +.mx_UserSettings_importExportButtons { + padding-top: 10px; + padding-left: 40px; +} +.mx_UserSettings_importExportButtons .mx_UserSettings_button { + margin-right: 1em; +} +.mx_UserSettings_toggle input { + width: 16px; + margin-right: 8px; + margin-bottom: 8px; +} +.mx_UserSettings_toggle label { + padding-bottom: 21px; +} +.mx_UserSettings_accountTable +.mx_UserSettings_notifTable +{ + display: table; +} +.mx_UserSettings_notifTable .mx_Spinner { + position: absolute; +} +.mx_UserSettings_language { + width: 200px; +} +.mx_UserSettings_webRtcDevices_dropdown { + width: 50%; +} +.mx_UserSettings_profileTable +{ + display: table; + float: left; +} +.mx_UserSettings_profileTableRow +{ + display: table-row; +} +.mx_UserSettings_profileLabelCell +{ + padding-bottom: 21px; + display: table-cell; + font-weight: bold; + padding-right: 24px; +} +.mx_UserSettings_profileInputCell { + display: table-cell; + padding-bottom: 21px; + width: 240px; +} +.mx_UserSettings_profileInputCell input, .mx_UserSettings_profileInputCell .mx_EditableText +{ + display: inline-block; + border: 0px; + border-bottom: 1px solid rgba(151, 151, 151, 0.5); + padding: 0px; + width: 240px; + color: rgba(74, 74, 74, 0.9); + font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; + font-size: 16px; +} +.mx_UserSettings_threepidButton { + display: table-cell; + padding-left: 0.5em; + position: relative; + cursor: pointer; +} +.mx_UserSettings_phoneSection { + display:table; +} +.mx_UserSettings_phoneCountry { + width: 70px; + display: table-cell; +} +input.mx_UserSettings_phoneNumberField { + margin-left: 3px; + width: 172px; + border: 1px solid transparent; +} +.mx_UserSettings_changePasswordButton { + float: right; + margin-right: 32px; + margin-left: 32px; +} +.mx_UserSettings_logout { + float: right; + margin-right: 32px; + margin-left: 32px; +} +.mx_UserSettings_avatarPicker { + margin-left: 32px; + margin-right: 32px; + float: right; + cursor: pointer; +} +.mx_UserSettings_avatarPicker_img .mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; +} +.mx_UserSettings_avatarPicker_edit { + text-align: center; + margin-top: 10px; +} +.mx_UserSettings_avatarPicker_edit img { + cursor: pointer; +} +.mx_UserSettings_avatarPicker_edit > input { + display: none; +} +.mx_UserSettings_avatarPicker_imgContainer { + display: inline-block; +} +.mx_UserSettings_avatarPicker_remove { + display: inline-block; + float: right; + margin-right: -15px; +} +.mx_UserSettings_advanced_spoiler, .mx_UserSettings_link { + cursor: pointer; + color: #6CC1F6; + word-break: break-all; +} +.mx_UserSettings_analyticsModal table { + margin: 10px 0px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ViewSource pre { + text-align: left; + font-size: 12px; + padding: 0.5em 1em 0.5em 1em; + word-wrap: break-word; + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Login { + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + + overflow: auto; +} +.mx_Login h2 { + font-weight: 300; + margin-top: 32px; + margin-bottom: 20px; +} +.mx_Login_box { + width: 300px; + min-height: 450px; + padding-top: 50px; + padding-bottom: 50px; + margin: auto; +} +.mx_Login_logo { + text-align: center; + height: 150px; + margin-bottom: 45px; +} +.mx_Login_logo img { + max-height: 100% +} +.mx_Login_support { + text-align: center; + font-size: 13px; + margin-top: 0px; + opacity: 0.7; +} +.mx_Login_field { + width: 280px; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + padding: 9px; + margin-bottom: 14px; +} +.mx_Login_field_disabled { + opacity: 0.3; +} +.mx_Login_fieldLabel { + margin-top: -10px; + margin-left: 8px; + margin-bottom: 14px; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_submit { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + width: 100%; + margin-top: 35px; + margin-bottom: 24px; +} +.mx_Login_submit:hover { + background-color: #84cfff; +} +.mx_Login_submit:disabled { + opacity: 0.3; +} +.mx_Login_label { + font-size: 13px; + opacity: 0.8; +} +.mx_Login_checkbox, .mx_Login_radio { + margin-right: 10px; +} +.mx_Login_create { + display: block; + text-align: center; + width: 100%; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_create:link { + color: #70808D; +} +.mx_Login_links { + display: block; + text-align: center; + margin-top: 15px; + width: 100%; + font-size: 13px; + opacity: 0.8; +} +.mx_Login_links a:link { + color: #70808D; +} +.mx_Login_prompt { + padding-top: 15px; + padding-bottom: 15px; + font-size: 13px; +} +.mx_Login_forgot { + font-size: 15px; +} +.mx_Login_forgot:link { + color: #70808D; +} +.mx_Login_loader { + display: inline; + position: relative; + top: 2px; + left: 8px; +} +.mx_Login_loader .mx_Spinner { + display: inline; +} +.mx_Login_loader .mx_Spinner img { + width: 16px; + height: 16px; +} +.mx_Login_error { + color: #F69E98; + font-weight: bold; + text-align: center; +/* + height: 24px; +*/ + margin-top: 12px; + margin-bottom: 12px; +} +.mx_Login_type_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 14px; +} +.mx_Login_type_label { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + line-height: 35px; +} +.mx_Login_type_dropdown { + display: inline-block; + min-width: 170px; + -ms-flex-item-align: end; + align-self: flex-end; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_Login_field_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_Login_field_prefix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-right: 0px; + border-radius: 3px 0px 0px 3px; + + text-align: center; +} +.mx_Login_field_suffix { + height: 34px; + padding: 0px 5px; + line-height: 33px; + + background-color: #eee; + border: 1px solid #c7c7c7; + border-left: 0px; + border-radius: 0px 3px 3px 0px; + + text-align: center; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; +} +.mx_Login_username { + height: 16px; + -ms-flex-negative: 1; + flex-shrink: 1; + min-width: 0px; +} +.mx_Login_phoneNumberField { + height: 16px; +} +.mx_Login_field_has_prefix { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.mx_Login_field_has_suffix { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.mx_Login_phoneSection { + display:-webkit-box; + display:-ms-flexbox; + display:flex; +} +.mx_Login_phoneCountry { + margin-bottom: 14px; + width: 150px; + + /* To override mx_Login_field_prefix */ + text-align: left; + padding: 0px; + background-color: #EEF2F5; +} +.mx_Login_field_prefix .mx_Dropdown_input { + /* To use prefix border instead of dropdown border */ + border: 0; +} +.mx_Login_phoneCountry .mx_Dropdown_option { + /* + To match height of mx_Login_field + 33px + 2px border from mx_Dropdown_option = 35px + */ + height: 33px; + line-height: 33px; +} +.mx_Login_phoneCountry .mx_Dropdown_option img { + margin: 3px; + vertical-align: top; +} +.mx_Login_language { + margin-left: auto; + margin-right: auto; + min-width: 60%; +} +.mx_Login_language_div { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 12px; + margin-bottom: 12px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_BaseAvatar { + position: relative; +} +.mx_BaseAvatar_initial { + position: absolute; + left: 0px; + color: #ffffff; + text-align: center; + speak: none; + pointer-events: none; + font-weight: normal; +} +.mx_BaseAvatar_image { + border-radius: 40px; + vertical-align: top; + background-color: transparent; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageContextMenu_field { + padding: 3px 6px 3px 6px; + cursor: pointer; + white-space: nowrap; +} +.mx_MessageContextMenu_field.mx_MessageContextMenu_fieldSet { + font-weight: bold; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTileContextMenu_tag_field, .mx_RoomTileContextMenu_leave { + padding-top: 8px; + padding-right: 20px; + padding-bottom: 8px; + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 16px; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet { + font-weight: bold; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { + display: none; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon_set { + display: inline-block; +} +.mx_RoomTileContextMenu_tag_field.mx_RoomTileContextMenu_tag_fieldDisabled { + color: rgba(0, 0, 0, 0.2); +} +.mx_RoomTileContextMenu_tag_icon { + padding-right: 8px; + padding-left: 4px; + display: inline-block +} +.mx_RoomTileContextMenu_tag_icon_set { + padding-right: 8px; + padding-left: 4px; + display: none; +} +.mx_RoomTileContextMenu_separator { + margin-top: 0; + margin-bottom: 0; + border-bottom-style: none; + border-left-style: none; + border-right-style: none; + border-top-style: solid; + border-top-width: 1px; + border-color: rgba(187, 187, 187, 0.5); +} +.mx_RoomTileContextMenu_leave { + color: #F69E98; +} +.mx_RoomTileContextMenu_tag_fieldSet .mx_RoomTileContextMenu_tag_icon { + /* Something to indicate that the icon is the set tag */ +} +.mx_RoomTileContextMenu_notif_picker { + position: absolute; + top: 16px; + left: 5px; +} +.mx_RoomTileContextMenu_notif_field { + padding-top: 4px; + padding-right: 6px; + padding-bottom: 10px; + padding-left: 8px; /* 20px */ + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldSet { + font-weight: bold; +} +.mx_RoomTileContextMenu_notif_field.mx_RoomTileContextMenu_notif_fieldDisabled { + color: rgba(0, 0, 0, 0.2); +} +.mx_RoomTileContextMenu_notif_icon { + padding-right: 4px; + padding-left: 4px; +} +.mx_RoomTileContextMenu_notif_activeIcon { + display: inline-block; + opacity: 0; + position: relative; + left: -5px; +} +.mx_RoomTileContextMenu_notif_fieldSet .mx_RoomTileContextMenu_notif_activeIcon { + opacity: 1; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TagTileContextMenu_item { + padding-top: 8px; + padding-right: 20px; + padding-bottom: 8px; + cursor: pointer; + white-space: nowrap; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 16px; +} +.mx_TagTileContextMenu_item_icon { + padding-right: 8px; + padding-left: 4px; + display: inline-block +} +.mx_TagTileContextMenu_separator { + margin-top: 0; + margin-bottom: 0; + border-bottom-style: none; + border-left-style: none; + border-right-style: none; + border-top-style: solid; + border-top-width: 1px; + border-color: rgba(187, 187, 187, 0.5); +} +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_BugReportDialog_field_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_BugReportDialog_field_label { + -ms-flex-preferred-size: 150px; + flex-basis: 150px; + + text-align: right; + + padding-top: 9px; + padding-right: 4px; + + line-height: 18px; +} +.mx_BugReportDialog_field_input { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + + /* taken from mx_ChatInviteDialog_inputContainer */ + border-radius: 3px; + border: solid 1px #c9cfd4; + + font-size: 14px; + + padding-left: 4px; + padding-right: 4px; + padding-top: 7px; + padding-bottom: 7px; + + margin-bottom: 4px; +} +.mx_BugReportDialog_field_input[type="text" i] { + padding-top: 9px; + padding-bottom: 9px; +} +/* +Copyright 2016 Aviral Dasgupta + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ChangelogDialog_content { + max-height: 300px; + overflow: auto; +} +.mx_ChangelogDialog_li { + padding: 0.2em; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ChatCreateOrReuseDialog .mx_ChatCreateOrReuseDialog_tiles { + margin-top: 24px; +} +.mx_ChatCreateOrReuseDialog .mx_Dialog_content { + margin-bottom: 24px; + + /* + To stop spinner that mx_ChatCreateOrReuseDialog_profile replaces from causing a + height change + */ + min-height: 100px; +} +.mx_ChatCreateOrReuseDialog .mx_RoomTile_badge { + display: none; +} +.mx_ChatCreateOrReuseDialog_profile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_ChatCreateOrReuseDialog_profile_name { + padding: 14px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* Using a textarea for this element, to circumvent autofill */ +.mx_ChatInviteDialog_input, .mx_ChatInviteDialog_input:focus +{ + height: 26px; + font-size: 14px; + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + padding-left: 12px; + padding-right: 12px; + margin: 0 !important; + border: 0 !important; + outline: 0 !important; + width: 1000%; /* Pretend that this is an "input type=text" */ + resize: none; + overflow: hidden; + vertical-align: middle; + box-sizing: border-box; + word-wrap: nowrap; +} +.mx_ChatInviteDialog .mx_Dialog_content { + min-height: 50px +} +.mx_ChatInviteDialog_inputContainer { + border-radius: 3px; + border: solid 1px #c9cfd4; + line-height: 36px; + padding-left: 4px; + padding-right: 4px; + padding-top: 1px; + padding-bottom: 1px; + max-height: 150px; + overflow-x: hidden; + overflow-y: auto; +} +.mx_ChatInviteDialog_error { + margin-top: 10px; + color: #F69E98; +} +.mx_ChatInviteDialog_cancel { + position: absolute; + right: 11px; + top: 13px; + cursor: pointer; +} +.mx_ChatInviteDialog_cancel object { + pointer-events: none; +} +/* +Copyright 2017 Vector Creations Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ConfirmUserActionDialog .mx_Dialog_content { + min-height: 48px; + margin-bottom: 24px; +} +.mx_ConfirmUserActionDialog_avatar { + float: left; + margin-right: 20px; + margin-top: -2px; +} +.mx_ConfirmUserActionDialog_name { + font-size: 18px; +} +.mx_ConfirmUserActionDialog_userId { + font-size: 13px; +} +.mx_ConfirmUserActionDialog_reasonField { + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + font-size: 14px; + color: #70808D; + background-color: #EEF2F5; + + border-radius: 3px; + border: solid 1px #c9cfd4; + line-height: 36px; + padding-left: 16px; + padding-right: 16px; + padding-top: 1px; + padding-bottom: 1px; + + margin-bottom: 24px; + + width: 90%; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateGroupDialog_inputRow { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_CreateGroupDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateGroupDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #70808D; + background-color: #EEF2F5; +} +.mx_CreateGroupDialog_input_hasPrefixAndSuffix { + border-radius: 0px; +} +.mx_CreateGroupDialog_input_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_CreateGroupDialog_prefix, .mx_CreateGroupDialog_suffix { + height: 35px; + padding: 0px 5px; + line-height: 37px; + background-color: #c9cfd4; + border: 1px solid #c9cfd4; + text-align: center; +} +.mx_CreateGroupDialog_prefix { + border-right: 0px; + border-radius: 3px 0px 0px 3px; +} +.mx_CreateGroupDialog_suffix { + border-left: 0px; + border-radius: 0px 3px 3px 0px; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateRoomDialog_details_summary { + outline: none; +} +.mx_CreateRoomDialog_label { + text-align: left; + padding-bottom: 12px; +} +.mx_CreateRoomDialog_input_container { + padding-right: 20px; +} +.mx_CreateRoomDialog_input { + font-size: 15px; + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #70808D; + background-color: #EEF2F5; + width: 100%; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DeactivateAccountDialog .mx_Dialog_content { + margin-bottom: 30px; +} +.mx_DeactivateAccountDialog .mx_DeactivateAccountDialog_input_section { + margin-top: 60px; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DevTools_dialog { + padding-right: 58px; +} +.mx_DevTools_content { + margin: 10px 0; +} +.mx_DevTools_RoomStateExplorer_button, .mx_DevTools_RoomStateExplorer_query { + margin-bottom: 10px; + width: 100%; +} +.mx_DevTools_label_left { + float: left; +} +.mx_DevTools_label_right { + float: right; +} +.mx_DevTools_label_bottom { + clear: both; + border-bottom: 1px solid #e5e5e5; +} +.mx_DevTools_inputRow +{ + display: table-row; +} +.mx_DevTools_inputLabelCell +{ + display: table-cell; + font-weight: bold; + padding-right: 24px; +} +.mx_DevTools_inputCell { + display: table-cell; + width: 240px; +} +.mx_DevTools_inputCell input +{ + display: inline-block; + border: 0; + border-bottom: 1px solid rgba(151, 151, 151, 0.5); + padding: 0; + width: 240px; + color: rgba(74, 74, 74, 0.9); + font-family: 'Open Sans', Helvetica, Arial, Sans-Serif; + font-size: 16px; +} +.mx_DevTools_textarea { + font-size: 12px; + max-width: 624px; + min-height: 250px; + padding: 10px; + width: 100%; +} +.mx_DevTools_tgl { + display: none; +} +.mx_DevTools_tgl, .mx_DevTools_tgl:after, .mx_DevTools_tgl:before, .mx_DevTools_tgl *, .mx_DevTools_tgl *:after, .mx_DevTools_tgl *:before, .mx_DevTools_tgl + .mx_DevTools_tgl-btn { + box-sizing: border-box; + } +.mx_DevTools_tgl::-moz-selection, .mx_DevTools_tgl:after::-moz-selection, .mx_DevTools_tgl:before::-moz-selection, .mx_DevTools_tgl *::-moz-selection, .mx_DevTools_tgl *:after::-moz-selection, .mx_DevTools_tgl *:before::-moz-selection, .mx_DevTools_tgl + .mx_DevTools_tgl-btn::-moz-selection { + background: none; + } +.mx_DevTools_tgl::selection, .mx_DevTools_tgl:after::selection, .mx_DevTools_tgl:before::selection, .mx_DevTools_tgl *::selection, .mx_DevTools_tgl *:after::selection, .mx_DevTools_tgl *:before::selection, .mx_DevTools_tgl + .mx_DevTools_tgl-btn::selection { + background: none; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn { + outline: 0; + display: block; + width: 7em; + height: 2em; + position: relative; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + position: relative; + display: block; + content: ""; + width: 50%; + height: 100%; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:after { + left: 0; + } +.mx_DevTools_tgl + .mx_DevTools_tgl-btn:before { + display: none; + } +.mx_DevTools_tgl:checked + .mx_DevTools_tgl-btn:after { + left: 50%; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn { + padding: 2px; + transition: all .2s ease; + font-family: sans-serif; + -webkit-perspective: 100px; + perspective: 100px; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after, .mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + display: inline-block; + transition: all .4s ease; + width: 100%; + text-align: center; + position: absolute; + line-height: 2em; + font-weight: bold; + color: #fff; + top: 0; + left: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + border-radius: 4px; + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:after { + content: attr(data-tg-on); + background: #02C66F; + -webkit-transform: rotateY(-180deg); + transform: rotateY(-180deg); + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:before { + background: #FF3A19; + content: attr(data-tg-off); + } +.mx_DevTools_tgl-flip + .mx_DevTools_tgl-btn:active:before { + -webkit-transform: rotateY(-20deg); + transform: rotateY(-20deg); + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:before { + -webkit-transform: rotateY(180deg); + transform: rotateY(180deg); + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:after { + -webkit-transform: rotateY(0); + transform: rotateY(0); + left: 0; + background: #7FC6A6; + } +.mx_DevTools_tgl-flip:checked + .mx_DevTools_tgl-btn:active:after { + -webkit-transform: rotateY(20deg); + transform: rotateY(20deg); + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EncryptedEventDialog .mx_MemberDeviceInfo { + float: right; + padding: 0px; + margin-right: 42px; +} +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + background-color: #EEF2F5; + color: #6CC1F6; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupAddressPicker_checkboxContainer{ + margin-top: 10px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_GroupAddressPicker_checkboxContainer input[type="checkbox"] { + /* Stop flex from shrinking the checkbox */ + width: 20px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomUpgradeDialog { + padding-right: 70px; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetEmailDialog_email_input { + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: rgba(74, 74, 74, 0.9); + background-color: #EEF2F5; + font-size: 15px; + width: 100%; + max-width: 280px; + margin-bottom: 10px; +} +.mx_SetEmailDialog_email_input:focus { + outline: none; + box-shadow: none; + border: 1px solid #6CC1F6; +} +.mx_SetEmailDialog_email_input_placeholder { +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetMxIdDialog .mx_Dialog_title { + padding-right: 40px; +} +.mx_SetMxIdDialog_input_group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_SetMxIdDialog_input { + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #70808D; + background-color: #EEF2F5; + font-size: 15px; + width: 100%; + max-width: 280px; +} +.mx_SetMxIdDialog_input.error, .mx_SetMxIdDialog_input.error:focus { + border: 1px solid #F69E98; +} +.mx_SetMxIdDialog_input_group .mx_Spinner { + height: 37px; + padding-left: 10px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.mx_SetMxIdDialog .success { + color: #6CC1F6; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SetPasswordDialog_change_password input { + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #70808D; + background-color: #EEF2F5; + font-size: 15px; + width: 100%; + max-width: 280px; + margin-bottom: 10px; +} +.mx_SetPasswordDialog_change_password_button { + margin-top: 68px; +} +.mx_SetPasswordDialog .mx_Dialog_content { + margin-bottom: 0px; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ShareDialog { + padding-right: 58px; +} +.mx_ShareDialog hr { + margin-top: 25px; + margin-bottom: 25px; + border-color: #747474; +} +.mx_ShareDialog_content { + margin: 10px 0; +} +.mx_ShareDialog_matrixto { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + border-radius: 5px; + border: solid 1px #747474; + margin-bottom: 10px; + margin-top: 30px; + padding: 10px; +} +.mx_ShareDialog_matrixto a { + text-decoration: none; +} +.mx_ShareDialog_matrixto_link { + -ms-flex-negative: 1; + flex-shrink: 1; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_ShareDialog_matrixto_copy { + -ms-flex-negative: 0; + flex-shrink: 0; + cursor: pointer; + margin-left: 20px; + display: inherit; +} +.mx_ShareDialog_matrixto_copy > div { + background-image: url("../../img/icon_copy_message.svg"); + margin-left: 5px; + width: 20px; + height: 20px; +} +.mx_ShareDialog_split { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} +.mx_ShareDialog_qrcode_container { + float: left; + background-color: #ffffff; + padding: 5px; + border-radius: 5px; + height: 256px; + width: 256px; + margin-right: 64px; +} +.mx_ShareDialog_social_container { + display: inline-block; + width: 299px; +} +.mx_ShareDialog_social_icon { + display: -ms-inline-grid; + display: inline-grid; + margin-right: 10px; + margin-bottom: 10px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Dialog_unknownDevice .mx_Dialog { + height: 100%; + padding-right: 58px; +} +.mx_UnknownDeviceDialog { + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +.mx_UnknownDeviceDialog .mx_Dialog_content { + margin-bottom: 24px; +} +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo { + float: right; + clear: both; + padding: 0px; + padding-top: 8px; +} +.mx_UnknownDeviceDialog .mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + height: auto; + padding-top: 7px; + padding-bottom: 7px; + padding-left: 1em; + padding-right: 1em; + background-color: #EEF2F5; + color: #6CC1F6; +} +.mx_UnknownDeviceDialog .mx_UnknownDeviceDialog_deviceList li { + height: 40px; + border-bottom: 1px solid #e5e5e5; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_NetworkDropdown { + position: relative; +} +.mx_NetworkDropdown_input { + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_NetworkDropdown_arrow { + border-color: #70808D transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + display: block; + height: 0; + position: absolute; + right: 10px; + top: 14px; + width: 0 +} +.mx_NetworkDropdown_networkoption { + height: 35px; + line-height: 35px; + padding-left: 8px; + padding-right: 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.mx_NetworkDropdown_networkoption img { + margin: 5px; + width: 25px; + vertical-align: middle; +} +input.mx_NetworkDropdown_networkoption, input.mx_NetworkDropdown_networkoption:focus { + border: 0; + padding-top: 0; + padding-bottom: 0; +} +.mx_NetworkDropdown_menu { + position: absolute; + left: -1px; + right: -1px; + top: 100%; + z-index: 2; + margin: 0; + padding: 0px; + border-radius: 3px; + border: 1px solid #6CC1F6; + background-color: #EEF2F5; +} +.mx_NetworkDropdown_menu .mx_NetworkDropdown_networkoption:hover { + background-color: #dddddd; +} +.mx_NetworkDropdown_menu_network { + font-weight: bold; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AccessibleButton:focus { + outline: 0; + -webkit-filter: brightness(125%); + filter: brightness(125%); +} +.mx_AccessibleButton { + cursor: pointer; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AddressSelector { + position: absolute; + background-color: #EEF2F5; + width: 485px; + max-height: 116px; + overflow-y: auto; + border-radius: 3px; + background-color: #EEF2F5; + border: solid 1px #6CC1F6; + cursor: pointer; +} +.mx_AddressSelector.mx_AddressSelector_empty { + display: none; +} +.mx_AddressSelector_addressListElement .mx_AddressTile { + background-color: #EEF2F5; + border: solid 1px #EEF2F5; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected { + background-color: #eaf5f0; +} +.mx_AddressSelector_addressListElement.mx_AddressSelector_selected .mx_AddressTile { + background-color: #eaf5f0; + border: solid 1px #eaf5f0; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AddressTile { + display: inline-block; + border-radius: 3px; + background-color: rgba(74, 73, 74, 0.1); + border: solid 1px #c9cfd4; + line-height: 26px; + color: #70808D; + font-size: 14px; + font-weight: normal; + margin-right: 4px; +} +.mx_AddressTile.mx_AddressTile_error { + background-color: rgba(255, 0, 100, 0.1); + color: #F69E98; + border-color: #F69E98; +} +.mx_AddressTile_network { + display: inline-block; + position: relative; + padding-left: 2px; + padding-right: 4px; + vertical-align: middle; +} +.mx_AddressTile_avatar { + display: inline-block; + position: relative; + padding-left: 2px; + padding-right: 7px; + vertical-align: middle; +} +.mx_AddressTile_mx { + display: inline-block; + margin: 0; + border: 0; + padding: 0; +} +.mx_AddressTile_name { + display: inline-block; + padding-right: 4px; + font-weight: 600; + overflow: hidden; + height: 26px; + vertical-align: middle; +} +.mx_AddressTile_name.mx_AddressTile_justified { + width: 180px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_id { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_id.mx_AddressTile_justified { + width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknownMx { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_unknownMxl.mx_AddressTile_justified { + width: 380px; /* name + id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_email { + display: inline-block; + font-weight: 600; + padding-right: 11px; +} +.mx_AddressTile_email.mx_AddressTile_justified { + width: 200px; /* same as id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_unknown { + display: inline-block; + padding-right: 11px; +} +.mx_AddressTile_unknown.mx_AddressTile_justified { + width: 380px; /* name + id width */ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + vertical-align: middle; +} +.mx_AddressTile_dismiss { + display: inline-block; + padding-right: 11px; + padding-left: 1px; + cursor: pointer; +} +.mx_AddressTile_dismiss object { + pointer-events: none; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DirectorySearchBox { + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; +} +.mx_DirectorySearchBox_container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-left: 9px; + padding-right: 9px; +} +.mx_DirectorySearchBox_input { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + border: 0; + padding: 0; + font-weight: 300; + font-size: 13px; +} +input[type=text].mx_DirectorySearchBox_input:focus { + border: 0; +} +.mx_DirectorySearchBox_joinButton { + display: table-cell; + padding: 3px; + padding-left: 10px; + padding-right: 10px; + background-color: #586C7B; + border-radius: 3px; + background-image: url('../../img/icon-return.svg'); + background-position: 8px 70%; + background-repeat: no-repeat; + text-indent: 18px; + font-weight: 600; + font-size: 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; +} +.mx_DirectorySearchBox_clear_wrapper { + display: table-cell; +} +.mx_DirectorySearchBox_clear { + display: inline-block; + vertical-align: middle; + background: url('../../img/icon_context_delete.svg'); + background-position: 0 50%; + background-repeat: no-repeat; + width: 15px; + height: 15px; + cursor: pointer; +} +/* +Copyright 2017 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Dropdown { + position: relative; +} +.mx_Dropdown_disabled { + opacity: 0.3; +} +.mx_Dropdown_input { + position: relative; + border-radius: 3px; + border: 1px solid #c7c7c7; + font-weight: 300; + font-size: 13px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_Dropdown_input:focus { + border-color: #6CC1F6; +} +/* Disable dropdown highlight on focus */ +.mx_Dropdown_input.mx_AccessibleButton:focus { + -webkit-filter: none; + filter: none; +} +.mx_Dropdown_arrow { + border-color: #70808D transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + display: block; + height: 0; + position: absolute; + right: 10px; + top: 14px; + width: 0 +} +.mx_Dropdown.left_aligned .mx_Dropdown_arrow { + left: 10px; +} +.mx_Dropdown_input > .mx_Dropdown_option { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_Dropdown.left_aligned .mx_Dropdown_input > .mx_Dropdown_option { + padding-left: 25px; +} +.mx_Dropdown_option { + height: 35px; + line-height: 35px; + padding-left: 8px; + padding-right: 8px; +} +.mx_Dropdown_option div { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.mx_Dropdown_option img { + margin: 5px; + width: 27px; + vertical-align: middle; +} +input.mx_Dropdown_option, input.mx_Dropdown_option:focus { + border: 0; + padding-top: 0; + padding-bottom: 0; + width: 60%; +} +.mx_Dropdown_menu { + position: absolute; + left: -1px; + right: -1px; + top: 100%; + z-index: 2; + margin: 0; + padding: 0px; + border-radius: 3px; + border: 1px solid #6CC1F6; + background-color: #EEF2F5; + max-height: 200px; + overflow-y: auto; +} +.mx_Dropdown_menu .mx_Dropdown_option { + height: auto; + min-height: 35px; +} +.mx_Dropdown_menu .mx_Dropdown_option_highlight { + background-color: #dddddd; +} +.mx_Dropdown_menu { + font-weight: bold; +} +.mx_Dropdown_searchPrompt { + font-weight: normal; + margin-left: 5px; + margin-bottom: 5px; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EditableItemList { + margin-top: 12px; + margin-bottom: 0px; +} +.mx_EditableItem { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-left: 56px; +} +.mx_EditableItem .mx_EditableItem_editable { + border: 0px; + border-bottom: 1px solid #c7c7c7; + padding: 0px; + min-width: 240px; + max-width: 400px; + margin-bottom: 16px; +} +.mx_EditableItem .mx_EditableItem_editable:focus { + border-bottom: 1px solid #6CC1F6; + outline: none; + box-shadow: none; +} +.mx_EditableItem .mx_EditableItem_editablePlaceholder { + color: #a2a2a2; +} +.mx_EditableItem .mx_EditableItem_addButton, .mx_EditableItem .mx_EditableItem_removeButton { + padding-left: 0.5em; + position: relative; + cursor: pointer; + + visibility: hidden; +} +.mx_EditableItem:hover .mx_EditableItem_addButton, .mx_EditableItem:hover .mx_EditableItem_removeButton { + visibility: visible; +} +.mx_EditableItemList_label { + margin-bottom: 8px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* This has got to be the most fragile piece of CSS ever written. + But empirically it works on Chrome/FF/Safari + */ +.mx_ImageView { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + height: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_ImageView_lhs { + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; + min-width: 60px; +} +.mx_ImageView_content { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + /* min-width hack needed for FF */ + min-width: 0px; + height: 90%; + -webkit-box-flex: 15; + -ms-flex: 15 15 0px; + flex: 15 15 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_ImageView_content img { + max-width: 100%; + /* XXX: max-height interacts badly with flex on Chrome and doesn't relayout properly until you refresh */ + max-height: 100%; + /* object-fit hack needed for Chrome due to Chrome not re-laying-out until you refresh */ + -o-object-fit: contain; + object-fit: contain; + /* background-image: url('../../img/trans.png'); */ + pointer-events: all; +} +.mx_ImageView_labelWrapper { + position: absolute; + top: 0px; + right: 0px; + height: 100%; + overflow: auto; + pointer-events: all; +} +.mx_ImageView_label { + text-align: left; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 30px; + padding-right: 30px; + min-height: 100%; + max-width: 240px; + color: #ffffff; +} +.mx_ImageView_cancel { + position: absolute; + top: 0px; + right: 0px; + padding: 35px; + cursor: pointer; +} +.mx_ImageView_name { + font-size: 18px; + margin-bottom: 6px; + word-wrap: break-word; +} +.mx_ImageView_metadata { + font-size: 15px; + opacity: 0.5; +} +.mx_ImageView_download { + display: table; + margin-top: 24px; + margin-bottom: 6px; + border-radius: 5px; + background-color: #454545; + font-size: 14px; + padding: 9px; + border: 1px solid #ffffff; +} +.mx_ImageView_size { + font-size: 11px; +} +.mx_ImageView_link { + color: #ffffff ! important; + text-decoration: none ! important; +} +.mx_ImageView_button { + font-size: 15px; + opacity: 0.5; + margin-top: 18px; + cursor: pointer; +} +.mx_ImageView_shim { + height: 30px; +} +.mx_ImageView_rhs { + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; + -webkit-box-flex: 1; + -ms-flex: 1 1 10%; + flex: 1 1 10%; + min-width: 300px; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_InlineSpinner { + display: inline; +} +.mx_InlineSpinner img { + margin: 0px 6px; + vertical-align: -3px; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberEventListSummary { + position: relative; +} +.mx_TextualEvent.mx_MemberEventListSummary_summary { + font-size: 14px; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; +} +.mx_MemberEventListSummary_avatars { + display: inline-block; + margin-right: 8px; + padding-top: 8px; + line-height: 12px; +} +.mx_MemberEventListSummary_avatars .mx_BaseAvatar { + margin-right: -4px; + cursor: pointer; +} +.mx_MemberEventListSummary_toggle { + color: #6CC1F6; + cursor: pointer; + float: right; + margin-right: 10px; + margin-top: 8px; +} +.mx_MemberEventListSummary_line { + border-bottom: 1px solid #e5e5e5; + margin-left: 63px; + line-height: 30px; +} +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary { + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary .mx_EventTile_line { + line-height: 20px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary_line { + line-height: 22px; + } +.mx_MatrixChat_useCompactLayout .mx_MemberEventListSummary_toggle { + margin-top: 3px; + } +.mx_MatrixChat_useCompactLayout .mx_TextualEvent.mx_MemberEventListSummary_summary { + font-size: 13px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ProgressBar { + height: 5px; + border: 1px solid #000; +} +.mx_ProgressBar_fill { + height: 100%; + background-color: #000; +} +/* +Copyright 2018 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ReplyThread { + margin-top: 0; +} +.mx_ReplyThread .mx_DateSeparator { + font-size: 1em !important; + margin-top: 0; + margin-bottom: 0; + padding-bottom: 1px; + bottom: -5px; +} +.mx_ReplyThread_show { + cursor: pointer; +} +blockquote.mx_ReplyThread { + margin-left: 0; + padding-left: 10px; + border-left: 4px solid #ddd; +} +.mx_UserPill, .mx_RoomPill, .mx_GroupPill, .mx_AtRoomPill { + border-radius: 16px; + display: inline-block; + height: 20px; + line-height: 20px; + padding-left: 5px; +} +.mx_EventTile_body .mx_UserPill, .mx_EventTile_body .mx_RoomPill, .mx_EventTile_body .mx_GroupPill { + cursor: pointer; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_UserPill, .mx_UserPill { + color: #70808D; + background-color: rgba(0, 0, 0, 0.1); + padding-right: 5px; +} +.mx_UserPill_selected { + background-color: #6CC1F6 ! important; +} +.mx_EventTile_highlight .mx_EventTile_content .markdown-body a.mx_UserPill_me, .mx_EventTile_content .mx_AtRoomPill, .mx_MessageComposer_input .mx_AtRoomPill { + color: #ffffff; + background-color: #ff0064; + padding-right: 5px; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_RoomPill, .mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_RoomPill, .mx_GroupPill { + color: #ffffff; + background-color: #aaa; + padding-right: 5px; +} +/* More specific to override `.markdown-body a` color */ +.mx_EventTile_content .markdown-body a.mx_GroupPill, .mx_GroupPill { + color: #ffffff; + background-color: #aaa; + padding-right: 5px; +} +.mx_UserPill .mx_BaseAvatar, .mx_RoomPill .mx_BaseAvatar, .mx_GroupPill .mx_BaseAvatar, .mx_AtRoomPill .mx_BaseAvatar { + position: relative; + left: -3px; + top: 2px; +} +.mx_Markdown_BOLD { + font-weight: bold; +} +.mx_Markdown_ITALIC { + font-style: italic; +} +.mx_Markdown_CODE { + padding: .2em 0; + margin: 0; + font-size: 85%; + background-color: rgba(0, 0, 0, 0.04); + border-radius: 3px; +} +.mx_Markdown_HR { + display: block; + background: #e9e9e9; +} +.mx_Markdown_STRIKETHROUGH { + text-decoration: line-through; +} +/* +Copyright 2107 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoleButton { + margin-left: 4px; + margin-right: 4px; + cursor: pointer; + display: inline-block; +} +.mx_RoleButton object { + pointer-events: none; +} +.mx_RoleButton_tooltip { + display: inline-block; + position: relative; + top: -25px; + left: 6px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_Spinner { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 100%; + height: 100%; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MatrixChat_middlePanel .mx_Spinner { + height: auto; +} +/* +Copyright 2017 Michael Telatynski <7t3chguy@gmail.com> + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SyntaxHighlight { + /* inhibit hljs styling */ + background: none !important; + color: #747474 !important; +} +/* +Copyright 2017 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ToolTipButton { + display: inline-block; + width: 11px; + height: 11px; + margin-left: 5px; + + border: 2px solid #dbdbdb; + border-radius: 20px; + color: #dbdbdb; + + transition: opacity 0.2s ease-in; + opacity: 0.6; + + line-height: 11px; + text-align: center; + + cursor: pointer; +} +.mx_ToolTipButton:hover { + opacity: 1.0; +} +.mx_ToolTipButton_container { + position: relative; + top: -18px; + left: 4px; +} +.mx_ToolTipButton_helpText { + width: 400px; + text-align: start; + line-height: 17px !important; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MatrixToolbar { + background-color: #6CC1F6; + color: #ffffff; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_MatrixToolbar_warning { + margin-left: 16px; + margin-right: 8px; + margin-top: -2px; +} +.mx_MatrixToolbar_info { + padding-left: 16px; + padding-right: 8px; + background-color: #2A9EDF; +} +.mx_MatrixToolbar_error { + padding-left: 16px; + padding-right: 8px; + background-color: #DF2A8B; +} +.mx_MatrixToolbar_content { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MatrixToolbar_link +{ + color: #ffffff ! important; + text-decoration: underline ! important; + cursor: pointer; +} +.mx_MatrixToolbar_clickable { + cursor: pointer; +} +.mx_MatrixToolbar_close { + cursor: pointer; +} +.mx_MatrixToolbar_close img { + display: block; + float: right; + margin-right: 10px; +} +.mx_MatrixToolbar_action { + margin-right: 16px; +} +.mx_MatrixToolbar_changelog { + white-space: pre; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupPublicity_toggle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 8px; +} +.mx_GroupPublicity_toggle > label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} +.mx_GroupPublicity_toggle > label, .mx_GroupPublicity_toggle .mx_GroupTile { + width: 50%; +} +.mx_GroupPublicity_toggle input { + margin-right: 8px; + vertical-align: -4px; +} +.mx_GroupPublicity_toggle .mx_GroupTile { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + cursor: pointer; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupRoomTile { + position: relative; + color: #70808D; + cursor: pointer; +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_GroupUserSettings_groupPublicity_scrollbox { + height: 200px; + border: 1px solid #e5e5e5; + border-radius: 3px; + margin-right: 32px; + overflow: hidden; +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_InteractiveAuthEntryComponents_msisdnWrapper { + text-align: center; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry { + font-size: 200%; + font-weight: bold; + border: 1px solid #c7c7c7; + border-radius: 3px; + width: 6em; +} +.mx_InteractiveAuthEntryComponents_msisdnEntry:focus { + border: 1px solid #6CC1F6; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit { + margin-top: 4px; + margin-bottom: 5px; +} +.mx_InteractiveAuthEntryComponents_msisdnSubmit:disabled { + background-color: #747474; + cursor: default; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ServerConfig { + margin-top: 7px; +} +.mx_ServerConfig .mx_Login_field { + margin-top: 4px; + margin-bottom: 5px; +} +.mx_ServerConfig_help:link { + opacity: 0.8; + font-size: 13px; + font-weight: 300; + color: #70808D; +} +.mx_ServerConfig_selector { + text-align: center; + width: 302px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CreateEvent { + background-color: #f7f7f7; + padding-left: 20px; + padding-right: 20px; + padding-top: 10px; + padding-bottom: 10px; +} +.mx_CreateEvent_image { + float: left; + padding-right: 20px; + width: 72px; + height: 34px; +} +.mx_CreateEvent_header { + font-weight: bold; +} +.mx_CreateEvent_link { +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DateSeparator { + clear: both; + margin-top: 32px; + margin-bottom: 8px; + margin-left: 63px; + padding-bottom: 6px; + border-bottom: 1px solid #e5e5e5; +} +/* +Copyright 2017 Vector Creations Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MEmoteBody { + white-space: pre-wrap; +} +.mx_MEmoteBody_sender { + cursor: pointer; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MFileBody_download { + color: #6CC1F6; +} +.mx_MFileBody_download a { + color: #6CC1F6; + text-decoration: none; + cursor: pointer; +} +.mx_MFileBody_download object { + margin-left: -16px; + padding-right: 4px; + margin-top: -4px; + vertical-align: middle; + pointer-events: none; +} +/* Remove the border and padding for iframes for download links. */ +.mx_MFileBody_download iframe { + margin: 0px; + padding: 0px; + border: none; + width: 100%; + /* Set the height of the iframe to be 1 line of text. + * Iframes don't automatically size themselves to fit their content. + * So either we have to fix the height of the iframe using CSS or + * use javascript's cross-origin postMessage API to communicate how + * big the content of the iframe is. */ + height: 1.5em; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MImageBody { + display: block; + margin-right: 34px; +} +.mx_MImageBody_thumbnail { + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; +} +.mx_MImageBody_thumbnail_container { + overflow: hidden; + position: relative; +} +.mx_MImageBody_thumbnail_spinner { + position: absolute; + left: 50%; + top: 50%; +} +.mx_MImageBody_thumbnail_spinner > * { + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MNoticeBody { + white-space: pre-wrap; + opacity: 0.6; +} +/* +Copyright 2018 New Vector Ltd. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MStickerBody_wrapper { + padding: 20px 0px; +} +.mx_MStickerBody_tooltip { + position: absolute; + top: 50%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MTextBody { + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageTimestamp { +} +/* +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomAvatarEvent { + opacity: 0.5; + overflow-y: hidden; +} +.mx_RoomAvatarEvent_avatar { + display: inline; + position: relative; + top: 5px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TextualEvent { + opacity: 0.5; + overflow-y: hidden; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UnknownBody { + white-space: pre-wrap; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_AppsDrawer { + margin: 5px; +} +.mx_AppsDrawer_hidden { + display: none; +} +.mx_AppsContainer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_AddWidget_button { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + cursor: pointer; + padding-right: 12px; + padding: 0; + margin: 5px auto 5px auto; + color: #6CC1F6; + font-size: 12px; +} +.mx_AddWidget_button_full_width { + max-width: 960px; +} +.mx_SetAppURLDialog_input { + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #e5e5e5; + background-color: #EEF2F5; + font-size: 15px; +} +.mx_AppTile { + max-width: 960px; + width: 50%; + margin-right: 5px; + border: 1px solid #e5e5e5; + border-radius: 2px; + background-color: #e9e9e9; +} +.mx_AppTile:last-child { + margin-right: 1px; +} +.mx_AppTileFullWidth { + max-width: 960px; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border: 1px solid #e5e5e5; + border-radius: 2px; +} +.mx_AppTile_mini { + max-width: 960px; + width: 100%; + height: 100%; + margin: 0; + padding: 0; +} +.mx_AppTile_persistedWrapper { + height: 280px; +} +.mx_AppTile_mini .mx_AppTile_persistedWrapper { + height: 114px; +} +.mx_AppTileMenuBar { + margin: 0; + padding: 2px 10px; + border-bottom: 1px solid #e5e5e5; + font-size: 10px; + background-color: #f7f7f7; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + cursor: pointer; +} +.mx_AppTileMenuBarTitle { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + pointer-events: none; +} +.mx_AppTileMenuBarWidgets { + float: right; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AppTileMenuBarWidget { + cursor: pointer; + width: 10px; + height: 10px; + padding: 1px; + transition-duration: 500ms; + border: 1px solid transparent; +} +.mx_AppTileMenuBarWidgetDelete { + -webkit-filter: none; + filter: none; +} +.mx_AppTileMenuBarWidget:hover { + border: 1px solid #70808D; + border-radius: 2px; +} +.mx_AppTileBody{ + height: 280px; + width: 100%; + overflow: hidden; +} +.mx_AppTileBody_mini { + height: 112px; + width: 100%; + overflow: hidden; +} +.mx_AppTileBody_mini iframe { + border: none; + width: 100%; + height: 100%; +} +.mx_AppTileBody iframe { + width: 100%; + height: 280px; + overflow: hidden; + border: none; + padding: 0; + margin: 0; + display: block; +} +.mx_AppTileMenuBarWidgetPadding { + margin-right: 5px; +} +.mx_AppIconTile { + background-color: #454545; + border: 1px solid rgba(0, 0, 0, 0); + width: 200px; + box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); + transition: 0.3s; + border-radius: 3px; + margin: 5px; + display: inline-block; +} +.mx_AppIconTile.mx_AppIconTile_active { + color: #6CC1F6; + border-color: #6CC1F6; +} +.mx_AppIconTile:hover { + border: 1px solid #6CC1F6; + box-shadow: 0 0 10px 5px rgba(200,200,200,0.5); +} +.mx_AppIconTile_content { + padding: 2px 16px; + height: 60px; + overflow: hidden; +} +.mx_AppIconTile_content h4 { + margin-top: 5px; + margin-bottom: 2px; +} +.mx_AppIconTile_content p { + margin-top: 0; + margin-bottom: 5px; + font-size: smaller; +} +.mx_AppIconTile_image { + padding: 10px; + width: 75%; + max-width:100px; + max-height:100px; + width: auto; + height: auto; +} +.mx_AppIconTile_imageContainer { + text-align: center; + width: 100%; + background-color: white; + border-radius: 3px 3px 0 0; + height: 155px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +form.mx_Custom_Widget_Form div { + margin-top: 10px; + margin-bottom: 10px; +} +.mx_AppPermissionWarning { + text-align: center; + background-color: #EEF2F5; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_AppPermissionWarningImage { + margin: 10px 0; +} +.mx_AppPermissionWarningImage img { + width: 100px; +} +.mx_AppPermissionWarningText { + max-width: 400px; + margin: 10px auto 10px auto; + color: #70808D; +} +.mx_AppPermissionWarningTextLabel { + font-weight: bold; + display: block; +} +.mx_AppPermissionWarningTextURL { + color: #6CC1F6; +} +.mx_AppPermissionButton { + padding: 5px; + border-radius: 5px; + color: #F69E98; + background-color: #EEF2F5; +} +.mx_AppPermissionButton:hover { + background-color: #70808D; + cursor: pointer; +} +.mx_AppLoading { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-weight: bold; + position: relative; + height: 280px; +} +.mx_AppLoading .mx_Spinner { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; +} +.mx_AppLoading_spinner_fadeIn { + -webkit-animation-fill-mode: backwards; + animation-fill-mode: backwards; + -webkit-animation-duration: 200ms; + animation-duration: 200ms; + -webkit-animation-delay: 500ms; + animation-delay: 500ms; + -webkit-animation-name: mx_AppLoading_spinner_fadeIn_animation; + animation-name: mx_AppLoading_spinner_fadeIn_animation; +} +@-webkit-keyframes mx_AppLoading_spinner_fadeIn_animation { + from { opacity: 0 } + to { opacity: 1 } +} +@keyframes mx_AppLoading_spinner_fadeIn_animation { + from { opacity: 0 } + to { opacity: 1 } +} +.mx_AppLoading iframe { + display: none; +} +.mx_Autocomplete { + position: absolute; + bottom: 0; + z-index: 1001; + width: 100%; + border: 1px solid #e5e5e5; + background: #EEF2F5; + border-bottom: none; + border-radius: 4px 4px 0 0; + max-height: 50vh; + overflow: auto +} +.mx_Autocomplete_ProviderSection { + border-bottom: 1px solid #e5e5e5; +} +.mx_Autocomplete_Completion_container_pill { + margin: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +/* a "block" completion takes up a whole line */ +.mx_Autocomplete_Completion_block { + height: 34px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding: 0 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #70808D; +} +.mx_Autocomplete_Completion_block * { + margin: 0 3px; +} +.mx_Autocomplete_Completion_pill { + border-radius: 17px; + height: 34px; + padding: 0px 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + color: #70808D; +} +.mx_Autocomplete_Completion_pill > * { + margin: 0 3px; +} +.mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_title, .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_subtitle, .mx_Autocomplete_Completion_container_truncate .mx_Autocomplete_Completion_description { + /* Ellipsis for long names/subtitles/descriptions*/ + max-width: 150px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } +/* container for pill-style completions */ +.mx_Autocomplete_Completion_container_pill { + margin: 12px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-flow: wrap; + flex-flow: wrap; +} +.mx_Autocomplete_Completion.selected, .mx_Autocomplete_Completion:hover { + background: #f6f6f6; + outline: none; +} +.mx_Autocomplete_provider_name { + margin: 12px; + color: #70808D; + font-weight: 400; + opacity: 0.4; +} +/* styling for common completion elements */ +.mx_Autocomplete_Completion_subtitle { + font-style: italic; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_Autocomplete_Completion_description { + color: gray; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EntityTile { + display: table-row; + position: relative; + color: #70808D; + cursor: pointer; +} +.mx_EntityTile_invite { + display: table-cell; + vertical-align: middle; + margin-left: 10px; + width: 26px; +} +.mx_EntityTile_avatar, .mx_GroupRoomTile_avatar { + display: table-cell; + padding-left: 3px; + padding-right: 12px; + padding-top: 4px; + padding-bottom: 4px; + vertical-align: middle; + width: 36px; + height: 36px; + position: relative; +} +.mx_EntityTile_power { + position: absolute; + width: 16px; + height: 17px; + top: 0px; + right: 6px; +} +.mx_EntityTile_name, .mx_GroupRoomTile_name { + display: table-cell; + vertical-align: middle; + overflow: hidden; + font-size: 14px; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 155px; +} +.mx_EntityTile_details { + display: table-cell; + padding-right: 14px; + vertical-align: middle; +} +.mx_EntityTile_name_hover { + font-size: 13px; +} +.mx_EntityTile_chevron { + margin-top: 8px; + margin-right: -4px; + margin-left: 6px; + float: right; +} +.mx_EntityTile_ellipsis .mx_EntityTile_name { + font-style: italic; + color: #70808D; +} +.mx_EntityTile_invitePlaceholder .mx_EntityTile_name { + font-style: italic; + color: #70808D; +} +.mx_EntityTile_unavailable .mx_EntityTile_avatar, .mx_EntityTile_unavailable .mx_EntityTile_name, .mx_EntityTile_unavailable .mx_EntityTile_name_hover, .mx_EntityTile_offline_beenactive .mx_EntityTile_avatar, .mx_EntityTile_offline_beenactive .mx_EntityTile_name, .mx_EntityTile_offline_beenactive .mx_EntityTile_name_hover +{ + opacity: 0.66; +} +.mx_EntityTile_offline_neveractive .mx_EntityTile_avatar, .mx_EntityTile_offline_neveractive .mx_EntityTile_name, .mx_EntityTile_offline_neveractive .mx_EntityTile_name_hover +{ + opacity: 0.25; +} +.mx_EntityTile_unknown .mx_EntityTile_avatar, .mx_EntityTile_unknown .mx_EntityTile_name, .mx_EntityTile_unknown .mx_EntityTile_name_hover +{ + opacity: 0.25; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_EventTile { + max-width: 100%; + clear: both; + padding-top: 18px; + font-size: 14px; + position: relative; +} +.mx_EventTile.mx_EventTile_info { + padding-top: 0px; +} +.mx_EventTile_avatar { + position: absolute; + top: 14px; + left: 8px; + cursor: pointer; +} +.mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + top: 8px; + left: 65px; +} +.mx_EventTile_continuation { + padding-top: 0px ! important; +} +.mx_EventTile .mx_SenderProfile { + color: #70808D; + font-size: 14px; + display: block; /* anti-zalgo, with overflow hidden */ + overflow-y: hidden; + cursor: pointer; + padding-left: 65px; /* left gutter */ + padding-bottom: 0px; + padding-top: 0px; + margin: 0px; + line-height: 22px; +} +.mx_EventTile .mx_SenderProfile .mx_SenderProfile_name, .mx_EventTile .mx_SenderProfile .mx_SenderProfile_aux { + opacity: 0.5; +} +.mx_EventTile .mx_SenderProfile .mx_Flair { + opacity: 0.7; + margin-left: 5px; +} +.mx_EventTile .mx_SenderProfile .mx_Flair img { + vertical-align: -2px; + margin-right: 2px; + border-radius: 8px; +} +.mx_EventTile .mx_MessageTimestamp { + display: block; + visibility: hidden; + white-space: nowrap; + color: #acacac; + font-size: 10px; + left: 0px; + width: 46px; /* 8 + 30 (avatar) + 8 */ + text-align: center; + position: absolute; +} +.mx_EventTile_line, .mx_EventTile_reply { + position: relative; + /* ideally should be 100px, but 95px gives us a max thumbnail size of 800x600, which is nice */ + margin-right: 110px; + padding-left: 65px; /* left gutter */ + padding-top: 4px; + padding-bottom: 2px; + border-radius: 4px; + min-height: 24px; + line-height: 22px; +} +.mx_EventTile_reply { + margin-right: 10px; +} +.mx_EventTile_info .mx_EventTile_line { + padding-left: 83px; +} +/* HACK to override line-height which is already marked important elsewhere */ +.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji { + font-size: 48px ! important; + line-height: 48px ! important; +} +/* this is used for the tile for the event which is selected via the URL. + * TODO: ultimately we probably want some transition on here. + */ +.mx_EventTile_selected > .mx_EventTile_line { + border-left: #6CC1F6 5px solid; + padding-left: 60px; + background-color: #f7f7f7; +} +.mx_EventTile:hover .mx_EventTile_line, .mx_EventTile.menu .mx_EventTile_line +{ + background-color: #f7f7f7; +} +.mx_EventTile_searchHighlight { + background-color: #6CC1F6; + color: #ffffff; + border-radius: 5px; + padding-left: 2px; + padding-right: 2px; + cursor: pointer; +} +.mx_EventTile_searchHighlight a { + background-color: #6CC1F6; + color: #ffffff; +} +.mx_EventTile_encrypting { + color: #abddbc ! important; +} +.mx_EventTile_sending { + color: #ddd; +} +.mx_EventTile_sending .mx_UserPill, .mx_EventTile_sending .mx_RoomPill, .mx_EventTile_sending .mx_emojione { + opacity: 0.5; +} +.mx_EventTile_notSent { + color: #f44; +} +.mx_EventTile_redacted .mx_EventTile_line .mx_UnknownBody, .mx_EventTile_redacted .mx_EventTile_reply .mx_UnknownBody { + display: block; + width: 100%; + height: 22px; + width: 250px; + border-radius: 11px; + background: repeating-linear-gradient( + -45deg, + #e2e2e2, + #e2e2e2 3px, + transparent 3px, + transparent 6px + ); + box-shadow: 0px 0px 3px #cccccc inset; +} +.mx_EventTile_highlight, .mx_EventTile_highlight .markdown-body + { + color: #F69E98; +} +.mx_EventTile_contextual { + opacity: 0.4; +} +.mx_EventTile_msgOption { + float: right; + text-align: right; + position: relative; + width: 90px; + + /* Hack to stop the height of this pushing the messages apart. + Replaces margin-top: -6px. This interacts better with a read + marker being in between. Content overflows. */ + height: 1px; + + margin-right: 10px; +} +.mx_EventTile_msgOption a { + text-decoration: none; +} +.mx_EventTile_last > div > a > .mx_MessageTimestamp, .mx_EventTile:hover > div > a > .mx_MessageTimestamp, .mx_EventTile.menu > div > a > .mx_MessageTimestamp { + visibility: visible; +} +.mx_MessagePanel_alwaysShowTimestamps .mx_MessageTimestamp { + visibility: visible; +} +.mx_EventTile_selected > div > a > .mx_MessageTimestamp { + left: 3px; + width: auto; +} +.mx_EventTile_editButton { + position: absolute; + display: inline-block; + visibility: hidden; + cursor: pointer; + top: 6px; + right: 6px; + width: 19px; + height: 19px; + background-image: url("../../img/icon_context_message.svg"); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mx_EventTile:hover .mx_EventTile_editButton, .mx_EventTile.menu .mx_EventTile_editButton { + visibility: visible; +} +.mx_EventTile_readAvatars { + position: relative; + display: inline-block; + width: 14px; + height: 14px; + top: 29px; +} +.mx_EventTile_continuation .mx_EventTile_readAvatars, .mx_EventTile_info .mx_EventTile_readAvatars, .mx_EventTile_emote .mx_EventTile_readAvatars { + top: 7px; +} +.mx_EventTile_readAvatars .mx_BaseAvatar { + position: absolute; + display: inline-block; +} +.mx_EventTile_readAvatarRemainder { + color: #acacac; + font-size: 11px; + position: absolute; +} +/* all the overflow-y: hidden; are to trap Zalgos - + but they introduce an implicit overflow-x: auto. + so make that explicitly hidden too to avoid random + horizontal scrollbars occasionally appearing, like in + https://github.com/vector-im/vector-web/issues/1154 + */ +.mx_EventTile_content { + display: block; + overflow-y: hidden; + overflow-x: hidden; + margin-right: 34px; +} +/* De-zalgoing */ +.mx_EventTile_body { + overflow-y: hidden; +} +/* End to end encryption stuff */ +.mx_EventTile_e2eIcon { + display: block; + position: absolute; + top: 9px; + left: 46px; + cursor: pointer; +} +.mx_EventTile_e2eIcon_hidden { + display: none; +} +/* always override hidden attribute for blocked and warning */ +.mx_EventTile_e2eIcon_hidden[src="img/e2e-blocked.svg"], .mx_EventTile_e2eIcon_hidden[src="img/e2e-warning.svg"] { + display: block; +} +.mx_EventTile_keyRequestInfo { + font-size: 12px; +} +.mx_EventTile_keyRequestInfo_text { + opacity: 0.5; +} +.mx_EventTile_keyRequestInfo_text a { + color: #70808D; + text-decoration: underline; + cursor: pointer; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p { + text-align: auto; + margin-left: 3px; + margin-right: 3px; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:first-child { + margin-top: 0px; +} +.mx_EventTile_keyRequestInfo_tooltip_contents p:last-child { + margin-bottom: 0px; +} +.mx_EventTile_12hr .mx_EventTile_e2eIcon { + padding-left: 5px; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { + padding-left: 60px; +} +.mx_EventTile_selected.mx_EventTile_info .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_verified.mx_EventTile_info .mx_EventTile_line, .mx_EventTile:hover.mx_EventTile_unverified.mx_EventTile_info .mx_EventTile_line { + padding-left: 78px; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line { + border-left: #76cfa5 5px solid; +} +.mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line { + border-left: #e8bf37 5px solid; +} +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line > a > .mx_MessageTimestamp, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line > a > .mx_MessageTimestamp { + left: 3px; + width: auto; +} +/* +.mx_EventTile_verified .mx_EventTile_e2eIcon { + display: none; +} +*/ +.mx_EventTile:hover.mx_EventTile_verified .mx_EventTile_line > .mx_EventTile_e2eIcon, .mx_EventTile:hover.mx_EventTile_unverified .mx_EventTile_line > .mx_EventTile_e2eIcon { + display: block; + left: 41px; +} +/* Various markdown overrides */ +.mx_EventTile_content .markdown-body { + font-family: inherit ! important; + white-space: normal ! important; + line-height: inherit ! important; + color: inherit; + font-size: 14px; +} +/* have to use overlay rather than auto otherwise Linux and Windows + Chrome gets very confused about vertical spacing: + https://github.com/vector-im/vector-web/issues/754 +*/ +.mx_EventTile_content .markdown-body pre { + overflow-x: overlay; + overflow-y: visible; + max-height: 30vh; +} +.mx_EventTile_content .markdown-body code { + background-color: #f8f8f8; + color: #333; +} +.mx_EventTile_pre_container { + position: relative; +} +.mx_EventTile_copyButton { + position: absolute; + display: inline-block; + visibility: hidden; + cursor: pointer; + top: 6px; + right: 6px; + width: 19px; + height: 19px; + background-image: url("../../img/icon_copy_message.svg"); +} +.mx_EventTile_body pre { + border: 1px solid transparent; +} +.mx_EventTile:hover .mx_EventTile_body pre +{ + border: 1px solid #e5e5e5; +} +.mx_EventTile_body .mx_EventTile_pre_container:hover .mx_EventTile_copyButton +{ + visibility: visible; +} +.mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2, .mx_EventTile_content .markdown-body h3, .mx_EventTile_content .markdown-body h4, .mx_EventTile_content .markdown-body h5, .mx_EventTile_content .markdown-body h6 +{ + font-family: inherit ! important; + color: inherit; +} +/* Make h1 and h2 the same size as h3. */ +.mx_EventTile_content .markdown-body h1, .mx_EventTile_content .markdown-body h2 +{ + font-size: 1.5em; + border-bottom: none ! important; +} +.mx_EventTile_content .markdown-body a { + color: #6CC1F6; +} +.mx_EventTile_content .markdown-body .hljs { + display: inline ! important; +} +/* end of overrides */ +.mx_MatrixChat_useCompactLayout .mx_EventTile { + padding-top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info { + padding-top: 0px; + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_reply { + line-height: 20px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_info .mx_EventTile_avatar { + top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile .mx_SenderProfile { + font-size: 13px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote { + padding-top: 8px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_avatar { + top: 2px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 1px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation { + padding-top: 0; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile.mx_EventTile_emote.mx_EventTile_continuation .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 0px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_line, .mx_MatrixChat_useCompactLayout .mx_EventTile_reply { + padding-top: 0px; + padding-bottom: 0px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_avatar { + top: 2px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_e2eIcon { + top: 7px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_editButton { + top: 3px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_readAvatars { + top: 27px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_continuation .mx_EventTile_readAvatars, .mx_MatrixChat_useCompactLayout .mx_EventTile_emote .mx_EventTile_readAvatars { + top: 5px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_info .mx_EventTile_readAvatars { + top: 4px; + } +.mx_MatrixChat_useCompactLayout .mx_RoomView_MessageList h2 { + margin-top: 6px; + } +.mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body p, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body ul, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body ol, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body dl, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body blockquote, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body pre, .mx_MatrixChat_useCompactLayout .mx_EventTile_content .markdown-body table { + margin-bottom: 4px; + } +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_LinkPreviewWidget { + margin-top: 15px; + margin-right: 15px; + margin-bottom: 15px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + border-left: 4px solid #ddd; + color: #888; +} +.mx_LinkPreviewWidget_image { + -webkit-box-flex: 0; + -ms-flex: 0 0 100px; + flex: 0 0 100px; + margin-left: 15px; + text-align: center; + cursor: pointer; +} +.mx_LinkPreviewWidget_caption { + margin-left: 15px; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.mx_LinkPreviewWidget_title { + display: inline; + font-weight: bold; + white-space: normal; +} +.mx_LinkPreviewWidget_siteName { + display: inline; +} +.mx_LinkPreviewWidget_description { + margin-top: 8px; + white-space: normal; + word-wrap: break-word; +} +.mx_LinkPreviewWidget_cancel { + visibility: hidden; + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 40px; + flex: 0 0 40px; +} +.mx_LinkPreviewWidget:hover .mx_LinkPreviewWidget_cancel { + visibility: visible; +} +.mx_MatrixChat_useCompactLayout .mx_LinkPreviewWidget { + margin-top: 6px; + margin-bottom: 6px; + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberDeviceInfo { + padding: 10px 0px; +} +.mx_MemberDeviceInfo.mx_DeviceVerifyButtons { + padding: 6px 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.mx_MemberDeviceInfo_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + height: auto; + padding-top: 7px; + padding-bottom: 7px; + padding-left: 1em; + padding-right: 1em; + margin: 2px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_MemberDeviceInfo_textButton:hover { + background-color: #84cfff; +} +.mx_MemberDeviceInfo_deviceId { + font-size: 13px; +} +.mx_MemberDeviceInfo_deviceInfo { + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid rgba(0,0,0,0.1); +} +/* "Unblacklist" is too long for a regular button: make it wider and + reduce the padding. */ +.mx_EncryptedEventDialog .mx_MemberDeviceInfo_blacklist, .mx_EncryptedEventDialog .mx_MemberDeviceInfo_unblacklist { + width: 8em; + padding-left: 1em; + padding-right: 1em; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified, .mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { + float: right; + padding-left: 1em; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_verified { + color: #76cfa5; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_unverified { + color: #e8bf37; +} +.mx_MemberDeviceInfo div.mx_MemberDeviceInfo_blacklisted { + color: #ba6363; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberInfo { + margin-top: 20px; + padding-right: 20px; + height: 100%; + overflow-y: auto; +} +.mx_MemberInfo h2 { + margin-top: 6px; +} +.mx_MemberInfo .mx_RoomTile_nameContainer { + width: 154px; +} +.mx_MemberInfo .mx_RoomTile_badge { + display: none; +} +.mx_MemberInfo .mx_RoomTile_name { + width: 160px; +} +.mx_MemberInfo_cancel { + float: right; + margin-right: 10px; + cursor: pointer; +} +.mx_MemberInfo_avatar { + clear: both; +} +.mx_MemberInfo_avatar .mx_BaseAvatar { +} +.mx_MemberInfo_avatar .mx_BaseAvatar.mx_BaseAvatar_image { + cursor: zoom-in; +} +.mx_MemberInfo_profile { + margin-bottom: 16px; +} +.mx_MemberInfo h3 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-top: 16px; + margin-bottom: 14px; +} +.mx_MemberInfo_profileField { + font-size: 13px; + position: relative; + background-color: #EEF2F5; +} +.mx_MemberInfo_buttons { + margin-bottom: 16px; +} +.mx_MemberInfo_field { + cursor: pointer; + font-size: 13px; + color: #6CC1F6; + margin-left: 8px; + line-height: 23px; +} +.mx_MemberInfo_createRoom { + cursor: pointer; +} +.mx_MemberInfo_createRoom_label { + width: initial ! important; + cursor: pointer; +} +.mx_MemberInfo label { + font-size: 13px; +} +.mx_MemberInfo label .mx_MemberInfo_label_text { + display: inline-block; + max-width: 180px; + vertical-align: text-top; +} +.mx_MemberInfo input[type="radio"] { + vertical-align: -2px; + margin-right: 5px; + margin-left: 8px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MemberList, .mx_GroupMemberList, .mx_GroupRoomList { + height: 100%; + + margin-top: 12px; + margin-right: 20px; + + -webkit-box-flex: 1; + + -ms-flex: 1; + + flex: 1; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_MemberList .mx_Spinner { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_MemberList_chevron { + position: absolute; + right: 35px; + margin-top: -15px; +} +.mx_MemberList_border { + overflow-y: auto; + + -webkit-box-ordinal-group: 2; + + -ms-flex-order: 1; + + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0px; +} +.mx_MemberList_query, .mx_GroupMemberList_query, .mx_GroupRoomList_query { + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #70808D; + background-color: #EEF2F5; + margin-left: 3px; + font-size: 14px; + margin-bottom: 8px; + width: 189px; +} +.mx_MemberList_query::-moz-placeholder, .mx_GroupMemberList_query::-moz-placeholder, .mx_GroupRoomList_query::-moz-placeholder { + color: #70808D; + opacity: 0.5; + font-size: 14px; +} +.mx_MemberList_query::-webkit-input-placeholder, .mx_GroupMemberList_query::-webkit-input-placeholder, .mx_GroupRoomList_query::-webkit-input-placeholder { + color: #70808D; + opacity: 0.5; + font-size: 14px; +} +.mx_MemberList_joined { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + -webkit-box-flex: 1; + -ms-flex: 1 0 0px; + flex: 1 0 0; + + overflow-y: auto; +} +/* +.mx_MemberList_invited { + order: 3; + flex: 0 0 100px; + overflow-y: auto; +} +*/ +.mx_GroupMemberList_invited h2, .mx_MemberList_invited h2 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + padding-left: 3px; + padding-right: 12px; + margin-top: 8px; + margin-bottom: 4px; +} +/* we have to have display: table in order for the horizontal wrapping to work */ +.mx_MemberList_wrapper { + display: table; + table-layout: fixed; + width: 100%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_MessageComposer_wrapper { + max-width: 960px; + vertical-align: middle; + margin: auto; + border-top: 1px solid #e5e5e5; + position: relative; +} +.mx_MessageComposer_replaced_wrapper { + margin-left: auto; + margin-right: auto; +} +.mx_MessageComposer_replaced_valign { + height: 60px; + display: table-cell; + vertical-align: middle; +} +.mx_MessageComposer_roomReplaced_icon { + float: left; + margin-right: 20px; + margin-top: 5px; + width: 31px; + height: 31px; +} +.mx_MessageComposer_roomReplaced_header { + font-weight: bold; +} +.mx_MessageComposer_autocomplete_wrapper { + position: relative; + height: 0; +} +.mx_MessageComposer_row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; +} +.mx_MessageComposer_row > div:last-child{ + padding-right: 0; +} +.mx_MessageComposer .mx_MessageComposer_avatar { + padding-left: 10px; + padding-right: 28px; +} +.mx_MessageComposer .mx_MessageComposer_avatar .mx_BaseAvatar { + display: block; +} +.mx_MessageComposer_composecontrols { + width: 100%; +} +.mx_MessageComposer_e2eIcon { + position: absolute; + left: 44px; +} +.mx_MessageComposer_noperm_error { + width: 100%; + height: 60px; + font-style: italic; + color: #888; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.mx_MessageComposer_input_wrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + cursor: text; +} +.mx_MessageComposer_input { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + vertical-align: middle; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-height: 60px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + font-size: 14px; + margin-right: 6px; +} +.mx_MessageComposer_editor { + width: 100%; + max-height: 120px; + min-height: 19px; + overflow: auto; + word-break: break-word; +} +.mx_MessageComposer_editor > :first-child { + margin-top: 0 ! important; +} +.mx_MessageComposer_editor > :last-child { + margin-bottom: 0 ! important; +} +@-webkit-keyframes visualbell +{ + from { background-color: #faa } + to { background-color: #EEF2F5 } +} +@keyframes visualbell +{ + from { background-color: #faa } + to { background-color: #EEF2F5 } +} +.mx_MessageComposer_input_error { + -webkit-animation: 0.2s visualbell; + animation: 0.2s visualbell; +} +.mx_MessageComposer_input blockquote { + color: #777; + margin: 0 0 16px; + padding: 0 15px; + border-left: 4px solid #ddd; +} +.mx_MessageComposer_input pre { + background-color: rgba(0, 0, 0, 0.04); + border-radius: 3px; + padding: 10px; +} +.mx_MessageComposer_input textarea { + display: block; + width: 100%; + padding: 0px; + margin-top: 6px; + margin-bottom: 6px; + border: 0px; + resize: none; + outline: none; + box-shadow: none; + color: #70808D; + background-color: #EEF2F5; + font-size: 14px; + max-height: 120px; + overflow: auto; + /* needed for FF */ + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; +} +/* hack for FF as vertical alignment of custom placeholder text is broken */ +.mx_MessageComposer_input textarea::-moz-placeholder { + line-height: 100%; + color: #6CC1F6; + opacity: 1.0; +} +.mx_MessageComposer_input textarea::-webkit-input-placeholder { + color: #6CC1F6; +} +.mx_MessageComposer_upload, .mx_MessageComposer_hangup, .mx_MessageComposer_voicecall, .mx_MessageComposer_videocall, .mx_MessageComposer_apps, .mx_MessageComposer_stickers { + /*display: table-cell;*/ + /*vertical-align: middle;*/ + /*padding-left: 10px;*/ + padding-right: 5px; + cursor: pointer; + padding-top: 4px; +} +.mx_MessageComposer_upload object, .mx_MessageComposer_hangup object, .mx_MessageComposer_voicecall object, .mx_MessageComposer_videocall object, .mx_MessageComposer_apps object, .mx_MessageComposer_stickers object { + pointer-events: none; +} +.mx_MessageComposer_formatting { + cursor: pointer; + margin: 0 11px; + width: 24px; + height: 18px; +} +.mx_MessageComposer_formatbar_wrapper { + width: 100%; + background-color: #f6f6f6; + box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.08); +} +.mx_MessageComposer_formatbar { + margin: auto; + max-width: 960px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + height: 30px; + + box-sizing: border-box; + padding-left: 62px; + + -webkit-box-orient: horizontal; + + -webkit-box-direction: normal; + + -ms-flex-direction: row; + + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 10px; + color: #888; +} +.mx_MessageComposer_formatbar * { + margin-right: 4px; +} +.mx_MessageComposer_format_button, .mx_MessageComposer_formatbar_cancel, .mx_MessageComposer_formatbar_markdown { + cursor: pointer; +} +.mx_MessageComposer_formatbar_cancel { + margin-right: 22px; +} +.mx_MessageComposer_formatbar_markdown { + margin-right: 64px; +} +.mx_MessageComposer_input_markdownIndicator { + cursor: pointer; + height: 10px; + padding: 4px 4px 4px 0; + opacity: 0.8; +} +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_input { + min-height: 50px; + } +.mx_MatrixChat_useCompactLayout .mx_MessageComposer_noperm_error { + height: 50px; + } +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PinnedEventTile { + min-height: 40px; + margin-bottom: 5px; + width: 100%; + border-radius: 5px; +} +.mx_PinnedEventTile:hover { + background-color: #f7f7f7; +} +.mx_PinnedEventTile .mx_PinnedEventTile_sender, .mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + color: #868686; + font-size: 0.8em; + vertical-align: top; + display: inline-block; + padding-bottom: 3px; +} +.mx_PinnedEventTile .mx_PinnedEventTile_timestamp { + padding-left: 15px; + display: none; +} +.mx_PinnedEventTile .mx_PinnedEventTile_senderAvatar .mx_BaseAvatar { + float: left; + margin-right: 10px; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_timestamp { + display: inline-block; +} +.mx_PinnedEventTile:hover .mx_PinnedEventTile_actions { + display: block; +} +.mx_PinnedEventTile_actions { + float: right; + margin-right: 10px; + display: none; +} +.mx_PinnedEventTile_unpinButton { + display: inline-block; + cursor: pointer; + margin-left: 10px; +} +.mx_PinnedEventTile_gotoButton { + display: inline-block; + font-size: 0.7em; +} +.mx_PinnedEventTile_message { + margin-left: 50px; + position: relative; + top: 0; + left: 0; +} +/* +Copyright 2017 Travis Ralston + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PinnedEventsPanel { + border-top: 1px solid #e5e5e5; +} +.mx_PinnedEventsPanel_body { + max-height: 300px; + overflow-y: auto; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_header { + margin: 0; + padding-top: 8px; + padding-bottom: 15px; +} +.mx_PinnedEventsPanel_cancel { + margin: 12px; + float: right; + display: inline-block; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_PresenceLabel { + font-size: 11px; + opacity: 0.5; +} +/* +Copyright 2018 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_ReplyPreview { + position: absolute; + bottom: 0; + z-index: 1000; + width: 100%; + border: 1px solid #e5e5e5; + background: #EEF2F5; + border-bottom: none; + border-radius: 4px 4px 0 0; + max-height: 50vh; + overflow: auto +} +.mx_ReplyPreview_section { + border-bottom: 1px solid #e5e5e5; +} +.mx_ReplyPreview_header { + margin: 12px; + color: #70808D; + font-weight: 400; + opacity: 0.4; +} +.mx_ReplyPreview_title { + float: left; +} +.mx_ReplyPreview_cancel { + float: right; + cursor: pointer; +} +.mx_ReplyPreview_clear { + clear: both; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomDropTarget_container { + background-color: #586C7B; + padding-left: 18px; + padding-right: 18px; + padding-top: 8px; + padding-bottom: 7px; +} +.collapsed .mx_RoomDropTarget_container { + padding-right: 10px; + padding-left: 10px; +} +.mx_RoomDropTarget { + font-size: 13px; + padding-top: 5px; + padding-bottom: 5px; + border: 1px dashed #6CC1F6; + color: #70808D; + background-color: rgba(255,255,255,0.5); + border-radius: 4px; +} +.mx_RoomDropTarget_label { + position: relative; + margin-top: 3px; + line-height: 21px; + z-index: 1; + text-align: center; +} +.collapsed .mx_RoomDropTarget_avatar { + float: none; +} +.collapsed .mx_RoomDropTarget_label { + display: none; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +/* add 20px to the height of the header when editing */ +.mx_RoomHeader_editing { + -webkit-box-flex: 0 ! important; + -ms-flex: 0 0 93px ! important; + flex: 0 0 93px ! important; +} +.mx_RoomHeader_wrapper { + max-width: 960px; + margin: auto; + height: 70px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_RoomHeader_leftRow { + margin-left: -2px; + -webkit-box-ordinal-group: 2; + -ms-flex-order: 1; + order: 1; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + overflow: hidden; +} +.mx_RoomHeader_spinner { + height: 36px; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_textButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + margin-right: 8px; + margin-top: -5px; + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; +} +.mx_RoomHeader_textButton:hover { + background-color: #84cfff; +} +.mx_RoomHeader_textButton_danger { + background-color: #F69E98; +} +.mx_RoomHeader_cancelButton { + -webkit-box-ordinal-group: 3; + -ms-flex-order: 2; + order: 2; + cursor: pointer; + padding-left: 12px; + padding-right: 12px; +} +.mx_RoomHeader_rightRow { + margin-top: 4px; + background-color: #EEF2F5; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-ordinal-group: 4; + -ms-flex-order: 3; + order: 3; +} +.mx_RoomHeader_info { + display: table-cell; + width: 100%; + vertical-align: middle; +} +.mx_RoomHeader_simpleHeader { + line-height: 70px; + color: #70808D; + font-size: 22px; + font-weight: bold; + overflow: hidden; + margin-left: 63px; + text-overflow: ellipsis; + width: 100%; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_cancelButton { + float: right; +} +.mx_RoomHeader_simpleHeader .mx_RoomHeader_icon { + margin-left: 14px; + margin-right: 24px; + vertical-align: -4px; +} +.mx_RoomHeader_name { + vertical-align: middle; + width: 100%; + height: 31px; + overflow: hidden; + color: #70808D; + font-weight: bold; + font-size: 22px; + padding-left: 19px; + padding-right: 16px; + /* why isn't text-overflow working? */ + text-overflow: ellipsis; + border-bottom: 1px solid transparent; +} +.mx_RoomHeader_nametext { + display: inline-block; +} +.mx_RoomHeader_settingsHint { + color: #a2a2a2 ! important; +} +.mx_RoomHeader_searchStatus { + display: inline-block; + font-weight: normal; + opacity: 0.6; +} +.mx_RoomHeader_settingsButton object { + pointer-events: none; +} +.mx_RoomHeader_name, .mx_RoomHeader_avatar, .mx_RoomHeader_avatarPicker, .mx_RoomHeader_avatarPicker_edit, .mx_RoomHeader_avatarPicker_remove { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_remove { + position: absolute; + top: -11px; + right: -9px; +} +.mx_RoomHeader_name:hover div:not(.mx_RoomHeader_editable) { + color: #6CC1F6; +} +.mx_RoomHeader_placeholder { + color: #a2a2a2 ! important; +} +.mx_RoomHeader_editable { + border-bottom: 1px solid #c7c7c7 ! important; + min-width: 150px; + cursor: text; +} +.mx_RoomHeader_editable:focus { + border-bottom: 1px solid #6CC1F6 ! important; + outline: none; + box-shadow: none; +} +.mx_RoomHeader_topic { + vertical-align: bottom; + float: left; + max-height: 38px; + color: #a2a2a2; + font-weight: 300; + font-size: 13px; + margin-left: 19px; + margin-right: 16px; + overflow: hidden; + text-overflow: ellipsis; + border-bottom: 1px solid transparent; + -webkit-column-width: 960px; + column-width: 960px; +} +.mx_RoomHeader_avatar { + display: table-cell; + width: 48px; + height: 50px; + vertical-align: middle; +} +.mx_RoomHeader_avatar .mx_BaseAvatar_image { + -o-object-fit: cover; + object-fit: cover; +} +.mx_RoomHeader_avatarPicker { + margin-top: 23px; + position: relative; +} +.mx_RoomHeader_avatarPicker_edit { + margin-left: 16px; + margin-top: 4px; +} +.mx_RoomHeader_avatarPicker_edit > label { + cursor: pointer; +} +.mx_RoomHeader_avatarPicker_edit > input { + display: none; +} +.mx_RoomHeader_button { + margin-left: 12px; + cursor: pointer; +} +.mx_RoomHeader_button object { + pointer-events: none; +} +.mx_RoomHeader_voipButton { + display: table-cell; +} +.mx_RoomHeader_voipButtons { + margin-top: 18px; +} +.mx_RoomHeader_pinnedButton { + position: relative; +} +.mx_RoomHeader_pinsIndicator { + position: absolute; + right: 0; + bottom: 4px; + width: 8px; + height: 8px; + border-radius: 8px; + background-color: #888; +} +.mx_RoomHeader_pinsIndicatorUnread { + background-color: #ff0064; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2107 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomList { + padding-bottom: 12px; + min-height: 400px; +} +.mx_RoomList_expandButton { + margin-left: 8px; + cursor: pointer; + padding-left: 12px; + padding-right: 12px; +} +/* Evil hacky override until Chrome fixes drop and drag table cells + and we can correctly fix horizontal wrapping in the sidebar again */ +.mx_RoomList_scrollbar .gm-scroll-view { + overflow-x: hidden ! important; + overflow-y: scroll ! important; +} +/* Make sure the scrollbar is above the sticky headers from RoomList */ +.mx_RoomList_scrollbar .gm-scrollbar.-vertical { + z-index: 6; +} +.mx_RoomList_emptySubListTip_container { + background-color: #586C7B; + padding-left: 18px; + padding-right: 18px; + padding-top: 8px; + padding-bottom: 7px; +} +.mx_RoomList_emptySubListTip { + font-size: 13px; + padding: 5px; + border: 1px dashed #6CC1F6; + color: #70808D; + background-color: rgba(255,255,255,0.5); + border-radius: 4px; + line-height: 16px; +} +.mx_RoomList_emptySubListTip .mx_RoleButton { + vertical-align: -2px; +} +.mx_RoomList_headerButtons { + position: absolute; + right: 60px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomPreviewBar { + text-align: center; + height: 176px; + background-color: #f7f7f7; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #f7f7f7; + -webkit-align-items: center; +} +.mx_RoomPreviewBar_wrapper { +} +.mx_RoomPreviewBar_invite_text { + color: #70808D; +} +.mx_RoomPreviewBar_join_text { + color: #F69E98; +} +.mx_RoomPreviewBar_preview_text { + margin-top: 25px; + color: #a2a2a2; +} +.mx_RoomPreviewBar_join_text a { + text-decoration: underline; + cursor: pointer; +} +.mx_RoomPreviewBar_warning { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 8px; +} +.mx_RoomPreviewBar_warningIcon { + padding: 12px; +} +.mx_RoomPreviewBar_spinnerIntro { + margin-top: 50px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd +Copyright 2017 Vector Creations Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomSettings { + margin-left: 65px; + margin-bottom: 20px; +} +.mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton, .mx_RoomSettings_unbanButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + text-transform: uppercase; + letter-spacing: 1px; + color: #ffffff; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; + position: relative; + margin-right: 8px; +} +.mx_RoomSettings_upgradeButton, .mx_RoomSettings_leaveButton:hover, .mx_RoomSettings_unbanButton:hover { + background-color: #84cfff; +} +.mx_RoomSettings_upgradeButton.danger { + background-color: #ff0064; +} +.mx_RoomSettings_integrationsButton_error { + position: relative; + cursor: not-allowed; +} +.mx_RoomSettings_integrationsButton_error img { + position: absolute; + right: -5px; + top: -5px; +} +.mx_RoomSettings_leaveButton, .mx_RoomSettings_integrationsButton_error { + float: right; +} +.mx_RoomSettings_integrationsButton_error .mx_RoomSettings_integrationsButton_errorPopup { + display: none; +} +.mx_RoomSettings_integrationsButton_error:hover .mx_RoomSettings_integrationsButton_errorPopup { + display: inline; +} +.mx_RoomSettings_integrationsButton_errorPopup { + position: absolute; + top: 110%; + left: -125%; + width: 348%; + padding: 2%; + font-size: 10pt; + line-height: 1.5em; + border-radius: 5px; + background-color: #6CC1F6; + color: #ffffff; + text-align: center; +} +.mx_RoomSettings_unbanButton { + display: inline; +} +.mx_RoomSettings_e2eIcon { + padding-left: 4px; + padding-right: 7px; +} +.mx_RoomSettings_leaveButton { + margin-right: 32px; +} +.mx_RoomSettings_powerLevels { + display: table; +} +.mx_RoomSettings_powerLevel { + display: table-row; +} +.mx_RoomSettings_powerLevelKey, .mx_RoomSettings_powerLevel .mx_PowerSelector { + display: table-cell; + padding-bottom: 5px; +} +.mx_RoomSettings_powerLevelKey { + text-align: right; + padding-right: 0.3em; +} +.mx_RoomSettings h3 { + text-transform: uppercase; + color: #3d3b39; + font-weight: 600; + font-size: 13px; + margin-top: 36px; + margin-bottom: 10px; +} +.mx_RoomSettings .mx_RoomSettings_toggles label { + margin-bottom: 8px; + display: block; +} +.mx_RoomSettings .mx_RoomSettings_toggles input[type="checkbox"], .mx_RoomSettings .mx_RoomSettings_toggles input[type="radio"] { + margin-right: 7px; +} +.mx_RoomSettings .mx_RoomSettings_tags input[type="checkbox"] { + margin-left: 1em; + margin-right: 7px; +} +.mx_RoomSettings .mx_RoomSettings_tags { + margin-bottom: 8px; +} +.mx_RoomSettings .mx_RoomSettings_roomColor { + display: inline-block; + position: relative; + width: 37px; + height: 37px; + border: 1px solid #979797; + margin-right: 13px; + cursor: pointer; +} +.mx_RoomSettings .mx_RoomSettings_roomColor_selected { + position: absolute; + left: 10px; + top: 4px; + cursor: default ! important; +} +.mx_RoomSettings .mx_RoomSettings_roomColorPrimary { + height: 10px; + position: absolute; + bottom: 0px; + width: 100%; +} +.mx_RoomSettings .mx_RoomSettings_aliasLabel { + margin-bottom: 8px; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTable { + margin-top: 12px; + margin-bottom: 0px; + margin-left: 56px; + display: table; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTableRow { + display: table-row; + margin-bottom: 16px; +} +.mx_RoomSettings .mx_RoomSettings_alias { + max-width: 400px; + margin-bottom: 16px; + /* + commented out so margin applies + display: table-cell; */ +} +.mx_RoomSettings .mx_RoomSettings_addAlias, .mx_RoomSettings .mx_RoomSettings_deleteAlias { + display: table-cell; + padding-left: 0.5em; + position: relative; + cursor: pointer; +} +.mx_RoomSettings .mx_RoomSettings_addAlias img, .mx_RoomSettings .mx_RoomSettings_deleteAlias img { + visibility: hidden; +} +.mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_addAlias img, .mx_RoomSettings .mx_RoomSettings_aliasesTableRow:hover .mx_RoomSettings_deleteAlias img { + visibility: visible; +} +.mx_RoomSettings_warning { + color: #F69E98; + font-weight: bold; + margin-top: 8px; + margin-bottom: 8px; +} +.mx_RoomSettings_editable { + border: 0px; + border-bottom: 1px solid #c7c7c7; + padding: 0px; + min-width: 240px; +} +.mx_RoomSettings_editable:focus { + border-bottom: 1px solid #6CC1F6; + outline: none; + box-shadow: none; +} +.mx_RoomSettings_deleteAlias, .mx_RoomSettings_addAlias { + display: table-cell; + visibility: visible; +} +.mx_RoomSettings_deleteAlias:hover, .mx_RoomSettings_addAlias:hover { + visibility: visible; +} +.mx_RoomSettings_aliasPlaceholder { + color: #a2a2a2; +} +.mx_RoomSettings_buttons { + text-align: right; + margin-bottom: 16px; +} +.mx_RoomSettings_button { + display: inline; + border: 0px; + height: 36px; + border-radius: 36px; + font-weight: 400; + font-size: 15px; + color: #ffffff; + background-color: #6CC1F6; + width: auto; + margin: auto; + padding: 6px; + padding-left: 1em; + padding-right: 1em; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTile { + position: relative; + cursor: pointer; + font-size: 13px; + display: block; + height: 34px; + + background-color: #586C7B; +} +.mx_RoomTile_tooltip { + display: inline-block; + position: relative; + top: -54px; + left: -12px; +} +.mx_RoomTile_nameContainer { + display: inline-block; + width: 180px; + height: 24px; +} +.mx_RoomTile_avatar_container { + position: relative; +} +.mx_RoomTile_avatar { + display: inline-block; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 16px; + padding-right: 6px; + width: 24px; + height: 24px; + vertical-align: middle; +} +.mx_RoomTile_dm { + display: block; + position: absolute; + bottom: 0; + right: -5px; + z-index: 2; +} +.mx_RoomTile_name { + display: inline-block; + position: relative; + width: 165px; + vertical-align: middle; + padding-left: 6px; + padding-right: 6px; + padding-top: 2px; + padding-bottom: 3px; + color: #ffffff; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.mx_RoomTile_invite { +/* color: rgba(69, 69, 69, 0.5); */ +} +.collapsed .mx_RoomTile_nameContainer { + width: 60px; /* colapsed panel width */ +} +.collapsed .mx_RoomTile_name { + display: none; +} +.collapsed .mx_RoomTile_badge { + top: 0px; + min-width: 12px; + border-radius: 16px; + padding: 0px 4px 0px 4px; + z-index: 3; +} +/* Hide the bottom of speech bubble */ +.collapsed .mx_RoomTile_highlight .mx_RoomTile_badge:after { + display: none; +} +/* This is the bottom of the speech bubble */ +.mx_RoomTile_highlight .mx_RoomTile_badge:after { + content: ""; + position: absolute; + display: block; + width: 0; + height: 0; + margin-left: 5px; + border-top: 5px solid #F69E98; + border-right: 7px solid transparent; +} +.mx_RoomTile_badge { + display: inline-block; + min-width: 15px; + height: 15px; + position: absolute; + right: 8px; /*gutter */ + top: 9px; + border-radius: 8px; + color: #ffffff; + font-weight: 600; + font-size: 10px; + text-align: center; + padding-top: 1px; + padding-left: 4px; + padding-right: 4px; +} +.mx_RoomTile .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_menuDisplayed .mx_RoomTile_badge { + letter-spacing: 0.1em; + opacity: 1; +} +.mx_RoomTile.mx_RoomTile_noBadges .mx_RoomTile_badge.mx_RoomTile_badgeButton, .mx_RoomTile.mx_RoomTile_menuDisplayed.mx_RoomTile_noBadges .mx_RoomTile_badge { + background-color: #dbdbdb; +} +.mx_RoomTile_unreadNotify .mx_RoomTile_badge { + background-color: #6CC1F6; +} +.mx_RoomTile_highlight .mx_RoomTile_badge { + background-color: #F69E98; +} +.mx_RoomTile_unread, .mx_RoomTile_highlight { + font-weight: 800; +} +.mx_RoomTile_selected { + background-color: #465561; +} +.mx_DNDRoomTile { + -webkit-transform: none; + transform: none; + transition: -webkit-transform 0.2s; + transition: transform 0.2s; + transition: transform 0.2s, -webkit-transform 0.2s; +} +.mx_DNDRoomTile_dragging { + -webkit-transform: scale(1.05, 1.05); + transform: scale(1.05, 1.05); +} +.mx_RoomTile:focus { + -webkit-filter: none ! important; + filter: none ! important; + background-color: #6d8597; +} +.mx_RoomTile .mx_RoomTile_name.mx_RoomTile_badgeShown { + width: 140px; +} +.mx_RoomTile_arrow { + position: absolute; + right: 0px; +} +.mx_RoomTile.mx_RoomTile_transparent { + background-color: transparent; +} +.mx_RoomTile.mx_RoomTile_transparent:focus { + background-color: rgba(0, 0, 0, 0.1); +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomTooltip_chevron { + position: absolute; + left: -8px; + top: 4px; + width: 0; + height: 0; + border-top: 8px solid transparent; + border-right: 8px solid rgba(187, 187, 187, 0.5); + border-bottom: 8px solid transparent; +} +.mx_RoomTooltip_chevron:after { + content:''; + width: 0; + height: 0; + border-top: 7px solid transparent; + border-right: 7px solid #EEF2F5; + border-bottom: 7px solid transparent; + position:absolute; + top: -7px; + left: 1px; +} +.mx_RoomTooltip { + display: none; + position: fixed; + border: 1px solid rgba(187, 187, 187, 0.5); + border-radius: 5px; + background-color: #EEF2F5; + z-index: 2000; + padding: 5px; + pointer-events: none; + line-height: 14px; + font-size: 13px; + color: #70808D; + max-width: 600px; + margin-right: 50px; +} +/* +Copyright 2018 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_RoomUpgradeWarningBar { + text-align: center; + height: 176px; + background-color: #f7f7f7; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + background-color: #f7f7f7; + -webkit-align-items: center; + padding-left: 20px; + padding-right: 20px; +} +.mx_RoomUpgradeWarningBar_header { + color: #F69E98; + font-weight: bold; +} +.mx_RoomUpgradeWarningBar_body { + color: #F69E98; +} +.mx_RoomUpgradeWarningBar_upgradelink { + color: #F69E98; + text-decoration: underline; +} +.mx_RoomUpgradeWarningBar_small { + color: #888; + font-size: 70%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchBar { + padding-top: 5px; + padding-bottom: 5px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.mx_SearchBar_input { + display: inline block; + border-radius: 3px 0px 0px 3px; + border: 1px solid #c9cfd4; + font-size: 15px; + padding: 9px; + padding-left: 11px; + width: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 0px; + flex: 1 1 0; +} +.mx_SearchBar_searchButton { + cursor: pointer; + margin-right: 10px; + width: 37px; + height: 37px; + border-radius: 0px 3px 3px 0px; + background-color: #6CC1F6; +} +@-webkit-keyframes pulsate { + 0% { opacity: 1.0; } + 50% { opacity: 0.1; } + 100% { opacity: 1.0; } +} +@keyframes pulsate { + 0% { opacity: 1.0; } + 50% { opacity: 0.1; } + 100% { opacity: 1.0; } +} +.mx_SearchBar_searching img { + -webkit-animation: pulsate 0.5s ease-out; + animation: pulsate 0.5s ease-out; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; +} +.mx_SearchBar_button { + display: inline; + border: 0px; + border-radius: 36px; + font-weight: 400; + font-size: 15px; + color: #ffffff; + background-color: #6CC1F6; + width: auto; + margin: auto; + margin-left: 7px; + padding-top: 6px; + padding-bottom: 4px; + padding-left: 24px; + padding-right: 24px; + cursor: pointer; +} +.mx_SearchBar_unselected { + background-color: #EEF2F5; + color: #6CC1F6; + border: #6CC1F6 1px solid; +} +.mx_SearchBar_cancel { + padding-left: 14px; + padding-right: 14px; + cursor: pointer; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_SearchableEntityList { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + + -webkit-box-orient: vertical; + + -webkit-box-direction: normal; + + -ms-flex-direction: column; + + flex-direction: column; +} +.mx_SearchableEntityList_query { + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + border-radius: 3px; + border: 1px solid #c9cfd4; + padding: 9px; + color: #70808D; + background-color: #EEF2F5; + margin-left: 3px; + font-size: 15px; + margin-bottom: 8px; + width: 189px; +} +.mx_SearchableEntityList_query::-moz-placeholder { + color: #70808D; + opacity: 0.5; + font-size: 12px; +} +.mx_SearchableEntityList_query::-webkit-input-placeholder { + color: #70808D; + opacity: 0.5; + font-size: 12px; +} +.mx_SearchableEntityList_listWrapper { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + + overflow-y: auto; +} +.mx_SearchableEntityList_list { + display: table; + table-layout: fixed; + width: 100%; +} +.mx_SearchableEntityList_list .mx_EntityTile_chevron { + display: none; +} +.mx_SearchableEntityList_hrWrapper { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; +} +.mx_SearchableEntityList hr { + height: 1px; + border: 0px; + color: #70808D; + background-color: #70808D; + margin-right: 15px; + margin-top: 11px; + margin-bottom: 11px; +} +.mx_Stickers_content { + overflow: hidden; +} +.mx_Stickers_content_container { + overflow: hidden; + height: 300px; +} +.mx_Stickers_content .mx_AppTileFullWidth { + border: none; +} +.mx_Stickers_contentPlaceholder { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; +} +.mx_Stickers_contentPlaceholder p { + max-width: 200px; +} +.mx_Stickers_addLink { + display: inline; + cursor: pointer; + text-decoration: underline; +} +.mx_Stickers_hideStickers { + z-index: 2001; +} +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_TopUnreadMessagesBar { + margin: auto; /* centre horizontally */ + max-width: 960px; + padding-top: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #e5e5e5; +} +.mx_TopUnreadMessagesBar_scrollUp { + display: inline; + cursor: pointer; + text-decoration: underline; +} +.mx_TopUnreadMessagesBar_scrollUp img { + padding-left: 10px; + padding-right: 31px; + vertical-align: middle; +} +.mx_TopUnreadMessagesBar_scrollUp span { + opacity: 0.5; +} +.mx_TopUnreadMessagesBar_close { + float: right; + padding-right: 14px; + padding-top: 3px; + cursor: pointer; +} +.mx_MatrixChat_useCompactLayout .mx_TopUnreadMessagesBar { + padding-top: 4px; + padding-bottom: 4px; + } +/* +Copyright 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_DevicesPanel { + display: table; + table-layout: fixed; + width: 880px; + border-spacing: 2px; +} +.mx_DevicesPanel_header { + display: table-header-group; + font-weight: bold; +} +.mx_DevicesPanel_header > div { + display: table-cell; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceLastSeen { + width: 30%; +} +.mx_DevicesPanel_header .mx_DevicesPanel_deviceButtons { + width: 20%; +} +.mx_DevicesPanel_device { + display: table-row; +} +.mx_DevicesPanel_device > div { + display: table-cell; +} +.mx_DevicesPanel_myDevice { + font-weight: bold; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_IntegrationsManager .mx_Dialog { + width: 60%; + height: 70%; + overflow: hidden; + padding: 0px; + max-width: initial; + max-height: initial; +} +.mx_IntegrationsManager iframe { + background-color: #fff; + border: 0px; + width: 100%; + height: 100%; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_UserNotifSettings_tableRow +{ + display: table-row; +} +.mx_UserNotifSettings_inputCell { + display: table-cell; + padding-bottom: 8px; + padding-right: 8px; + width: 16px; +} +.mx_UserNotifSettings_labelCell +{ + padding-bottom: 8px; + width: 400px; + display: table-cell; +} +.mx_UserNotifSettings_pushRulesTableWrapper { + padding-bottom: 8px; +} +.mx_UserNotifSettings_pushRulesTable { + width: 100%; + table-layout: fixed; +} +.mx_UserNotifSettings_pushRulesTable thead { + font-weight: bold; + font-size: 15px; +} +.mx_UserNotifSettings_pushRulesTable tbody th { + font-weight: 400; + font-size: 15px; +} +.mx_UserNotifSettings_pushRulesTable tbody th:first-child { + text-align: left; +} +.mx_UserNotifSettings_keywords { + cursor: pointer; + color: #6CC1F6; +} +.mx_UserSettings_devicesTable td { + padding-left: 20px; + padding-right: 20px; +} +.mx_UserSettings_devicesTable_nodevices { + font-style: italic; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_CallView_voice { + background-color: #6CC1F6; + color: #ffffff; + cursor: pointer; + text-align: center; + padding: 6px; + font-weight: bold; + font-size: 13px; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_IncomingCallBox { + text-align: center; + border: 1px solid #a4a4a4; + border-radius: 8px; + background-color: #EEF2F5; + position: fixed; + z-index: 1000; + padding: 6px; + margin-top: -3px; + margin-left: -20px; + width: 200px; +} +.mx_IncomingCallBox_chevron { + padding: 12px; + position: absolute; + left: -21px; + top: 0px; +} +.mx_IncomingCallBox_title { + padding: 6px; + font-weight: bold; +} +.mx_IncomingCallBox_buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.mx_IncomingCallBox_buttons_cell { + vertical-align: middle; + padding: 6px; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} +.mx_IncomingCallBox_buttons_decline, .mx_IncomingCallBox_buttons_accept { + vertical-align: middle; + width: 80px; + height: 36px; + line-height: 36px; + border-radius: 36px; + color: #ffffff; + margin: auto; +} +.mx_IncomingCallBox_buttons_decline { + background-color: #f48080; +} +.mx_IncomingCallBox_buttons_accept { + background-color: #80f480; +} +/* +Copyright 2015, 2016 OpenMarket Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_VideoView { + width: 100%; + position: relative; + z-index: 30; +} +.mx_VideoView video { + width: 100%; +} +.mx_VideoView_remoteVideoFeed { + width: 100%; + background-color: #000; + z-index: 50; +} +.mx_VideoView_localVideoFeed { + width: 25%; + height: 25%; + position: absolute; + left: 10px; + bottom: 10px; + z-index: 100; +} +.mx_VideoView_localVideoFeed video { + width: auto; + height: 100%; +} +.mx_VideoView_localVideoFeed.mx_VideoView_localVideoFeed_flipped video { + -webkit-transform: scale(-1, 1); + transform: scale(-1, 1); +} +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +.mx_StatusLogin { + + width: 100%; + height: 100%; + + display: -webkit-box; + + display: -ms-flexbox; + + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + + overflow: auto; + +} +.mx_StatusLogin .mx_StatusLogin_brand { + position: absolute; + top: 30px; + left: 30px; + } +.mx_StatusLogin .mx_StatusLogin_content { + margin: auto; + } +.mx_StatusLogin .mx_StatusLogin_header { + text-align: center; + margin-top: 70px; + margin-bottom: 50px; + } +.mx_StatusLogin .mx_StatusLogin_header h1 { + font-size: 29px; + margin-bottom: 3px; + } +.mx_StatusLogin .mx_StatusLogin_subtitle { + font-size: 18px; + } +.mx_StatusLogin .mx_StatusLogin_subtitle a { + color: #A26988; + } +.mx_StatusLogin .mx_StatusLogin_footer { + margin-top: 30px; + margin-bottom: 30px; + text-align: center; + font-size: 16px; + color: #8D99A4; + } +.mx_StatusLogin .mx_StatusLogin_footer p { + margin-top: 0.5em; + margin-bottom: 0.5em; + } +.mx_StatusLogin .mx_StatusLogin_footer_cta { + color: #4360DF; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + letter-spacing: 1px; + font-size: 13px; + text-transform: uppercase; + opacity: 1.0; + transition: opacity .2s ease; + } +.mx_StatusLogin .mx_StatusLogin_footer_cta:hover { + opacity: 0.5; + text-decoration: none; + } +.mx_StatusLogin .mx_Login_box { + width: 330px; + min-height: initial; + padding-top: 40px; + padding-bottom: 20px; + padding-left: 10px; + padding-right: 10px; + border-radius: 8px; + color: #ffffff; + font-size: 16px; + line-height: 25px; + background-color: #4360DF; + background-image: url(../../themes/status/img/dot.svg); + box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); + position: relative; + text-align: center; + } +.mx_StatusLogin .mx_Login_logo { + background-color: #fff; + width: 74px; + height: 74px; + border-radius: 37px; + box-shadow: 0px 5px 16px 0px rgba(0,0,0,0.2); + position: absolute; + top: -36px; + left: 50%; + margin-left: -36px; + } +.mx_StatusLogin .mx_Login_logo img { + width: 36px; + height: 36px; + padding: 19px; + } +.mx_StatusLogin .mx_Login_box h2 { + text-align: center; + color: #ffffff; + font-size: 25px; + margin-bottom: 24px; + } +.mx_StatusLogin .mx_Login_field { + width: 260px; + height: 27px; + padding: 8px 20px 10px 20px; + border-radius: 10px; + text-align: left; + border: 1px solid transparent; + background-color: rgba(244, 242, 247, 0.12); + color: #ffffff; + font-weight: 300; + font-size: 15px; + margin-bottom: 14px; + transition: background-color .2s ease; + } +.mx_StatusLogin .mx_Login_field:focus { + border: 1px solid transparent; + background-color: rgba(255, 255, 255, 0.2); + } +.mx_StatusLogin .mx_Login_field::-webkit-input-placeholder { + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + color: #ffffff; + opacity: 0.6; + } +.mx_StatusLogin .mx_Login_field::-moz-placeholder { + font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + color: #ffffff; + opacity: 0.6; + } +.mx_StatusLogin .mx_Login_field_disabled { + opacity: 0.3; + } +.mx_StatusLogin .mx_Login_prompt { + font-size: 16px; + } +.mx_StatusLogin .mx_Login_submit { + min-width: 200px; + width: auto; + margin-top: 13px; + margin-bottom: 10px; + } +.mx_StatusLogin .mx_Login_submit:disabled { + opacity: 0.3; + } +.mx_StatusLogin .mx_Login_create { + margin-top: 10px; + display: block; + text-align: center; + width: 100%; + font-size: 15px; + opacity: 1.0; + } +.mx_StatusLogin .mx_Login_create:link, .mx_StatusLogin .mx_Login_create:hover, .mx_StatusLogin .mx_Login_create:visited + { + color: #ffffff; + } +.mx_StatusLogin .mx_Login_forgot { + display: block; + font-size: 15px; + } +.mx_StatusLogin .mx_Login_forgot:link, .mx_StatusLogin .mx_Login_forgot:hover, .mx_StatusLogin .mx_Login_forgot:visited + { + color: #ffffff; + } +.mx_StatusLogin .mx_Login_error { + color: #F69E98; + font-size: 18px; + width: 300px; + height: 44px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: auto; + text-align: center; + margin-top: 12px; + margin-bottom: 16px; + } +.mx_StatusLogin .mx_Login_smallError { + font-size: 13px; + line-height: initial; + } + +/*# sourceMappingURL=theme-status.css.map*/ \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css.map b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css.map new file mode 100644 index 0000000..00c3266 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundles/f5c70ee9a294f6e4590e/theme-status.css","sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js new file mode 100644 index 0000000..6c3a756 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js @@ -0,0 +1,2 @@ +!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1890)}({1890:function(e,t){}}); +//# sourceMappingURL=theme-status.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js.map b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js.map new file mode 100644 index 0000000..04173e3 --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/theme-status.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack/bootstrap"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s"],"mappings":"aACA,IAAAA,KAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,IACAG,EAAAH,EACAI,GAAA,EACAH,YAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QAKAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,GAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,oBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,aAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,iBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA","file":"bundles/f5c70ee9a294f6e4590e/theme-status.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1890);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js b/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js new file mode 100644 index 0000000..2e1fbbb --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{180:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=p(r(31)),a=p(r(65)),i=p(r(729)),o=p(r(0)),s=p(r(1)),l=r(2),u=d(r(17)),c=d(r(486)),f=p(r(3));function d(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function p(e){return e&&e.__esModule?e:{default:e}}t.default=o.default.createClass({displayName:"ExportE2eKeysDialog",propTypes:{matrixClient:s.default.instanceOf(u.MatrixClient).isRequired,onFinished:s.default.func.isRequired},getInitialState:function(){return{phase:1,errStr:null}},componentWillMount:function(){this._unmounted=!1},componentWillUnmount:function(){this._unmounted=!0},_onPassphraseFormSubmit:function(e){e.preventDefault();var t=this.refs.passphrase1.value;return t!==this.refs.passphrase2.value?(this.setState({errStr:(0,l._t)("Passphrases must match")}),!1):t?(this._startExport(t),!1):(this.setState({errStr:(0,l._t)("Passphrase must not be empty")}),!1)},_startExport:function(e){var t=this;a.default.resolve().then(function(){return t.props.matrixClient.exportRoomKeys()}).then(function(t){return c.encryptMegolmKeyFile((0,n.default)(t),e)}).then(function(e){var r=new Blob([e],{type:"text/plain;charset=us-ascii"});i.default.saveAs(r,"riot-keys.txt"),t.props.onFinished(!0)}).catch(function(e){if(console.error("Error exporting e2e keys:",e),!t._unmounted){var r=e.friendlyText||(0,l._t)("Unknown error");t.setState({errStr:r,phase:1})}}),this.setState({errStr:null,phase:2})},_onCancelClick:function(e){return e.preventDefault(),this.props.onFinished(!1),!1},render:function(){var e=f.default.getComponent("views.dialogs.BaseDialog"),t=2===this.state.phase;return o.default.createElement(e,{className:"mx_exportE2eKeysDialog",onFinished:this.props.onFinished,title:(0,l._t)("Export room keys")},o.default.createElement("form",{onSubmit:this._onPassphraseFormSubmit},o.default.createElement("div",{className:"mx_Dialog_content"},o.default.createElement("p",null,(0,l._t)("This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.")),o.default.createElement("p",null,(0,l._t)("The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.")),o.default.createElement("div",{className:"error"},this.state.errStr),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputTable"},o.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},o.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},o.default.createElement("label",{htmlFor:"passphrase1"},(0,l._t)("Enter passphrase"))),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},o.default.createElement("input",{ref:"passphrase1",id:"passphrase1",autoFocus:!0,size:"64",type:"password",disabled:t}))),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},o.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},o.default.createElement("label",{htmlFor:"passphrase2"},(0,l._t)("Confirm passphrase"))),o.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},o.default.createElement("input",{ref:"passphrase2",id:"passphrase2",size:"64",type:"password",disabled:t}))))),o.default.createElement("div",{className:"mx_Dialog_buttons"},o.default.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,l._t)("Export"),disabled:t}),o.default.createElement("button",{onClick:this._onCancelClick,disabled:t},(0,l._t)("Cancel")))))}}),e.exports=t.default},485:function(e,t,r){"use strict";function n(e,t,r){return t<=e&&e<=r}function a(e){if(void 0===e)return{};if(e===Object(e))return e;throw TypeError("Could not convert argument to dictionary")}r.r(t),r.d(t,"TextEncoder",function(){return f}),r.d(t,"TextDecoder",function(){return c});var i=-1;function o(e){this.tokens=[].slice.call(e)}o.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():i},prepend:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.unshift(t.pop());else this.tokens.unshift(e)},push:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.push(t.shift());else this.tokens.push(e)}};var s=-1;function l(e,t){if(e)throw TypeError("Decoder error");return t||65533}var u="utf-8";function c(e,t){if(!(this instanceof c))return new c(e,t);if((e=void 0!==e?String(e).toLowerCase():u)!==u)throw new Error("Encoding not supported. Only utf-8 is supported");t=a(t),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=Boolean(t.fatal),this._ignoreBOM=Boolean(t.ignoreBOM),Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}function f(e,t){if(!(this instanceof f))return new f(e,t);if((e=void 0!==e?String(e).toLowerCase():u)!==u)throw new Error("Encoding not supported. Only utf-8 is supported");t=a(t),this._streaming=!1,this._encoder=null,this._options={fatal:Boolean(t.fatal)},Object.defineProperty(this,"encoding",{value:"utf-8"})}c.prototype={decode:function(e,t){var r;r="object"==typeof e&&e instanceof ArrayBuffer?new Uint8Array(e):"object"==typeof e&&"buffer"in e&&e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0),t=a(t),this._streaming||(this._decoder=new function(e){var t=e.fatal,r=0,a=0,o=0,u=128,c=191;this.handler=function(e,f){if(f===i&&0!==o)return o=0,l(t);if(f===i)return s;if(0===o){if(n(f,0,127))return f;if(n(f,194,223))o=1,r=f-192;else if(n(f,224,239))224===f&&(u=160),237===f&&(c=159),o=2,r=f-224;else{if(!n(f,240,244))return l(t);240===f&&(u=144),244===f&&(c=143),o=3,r=f-240}return r<<=6*o,null}if(!n(f,u,c))return r=o=a=0,u=128,c=191,e.prepend(f),l(t);if(u=128,c=191,r+=f-128<<6*(o-(a+=1)),a!==o)return null;var d=r;return r=o=a=0,d}}({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(t.stream);for(var u,c=new o(r),f=[];!c.endOfStream()&&(u=this._decoder.handler(c,c.read()))!==s;)null!==u&&(Array.isArray(u)?f.push.apply(f,u):f.push(u));if(!this._streaming){do{if((u=this._decoder.handler(c,c.read()))===s)break;null!==u&&(Array.isArray(u)?f.push.apply(f,u):f.push(u))}while(!c.endOfStream());this._decoder=null}return f.length&&(-1===["utf-8"].indexOf(this.encoding)||this._ignoreBOM||this._BOMseen||(65279===f[0]?(this._BOMseen=!0,f.shift()):this._BOMseen=!0)),function(e){for(var t="",r=0;r<e.length;++r){var n=e[r];n<=65535?t+=String.fromCharCode(n):(n-=65536,t+=String.fromCharCode(55296+(n>>10),56320+(1023&n)))}return t}(f)}},f.prototype={encode:function(e,t){e=e?String(e):"",t=a(t),this._streaming||(this._encoder=new function(e){e.fatal;this.handler=function(e,t){if(t===i)return s;if(n(t,0,127))return t;var r,a;n(t,128,2047)?(r=1,a=192):n(t,2048,65535)?(r=2,a=224):n(t,65536,1114111)&&(r=3,a=240);for(var o=[(t>>6*r)+a];r>0;){var l=t>>6*(r-1);o.push(128|63&l),r-=1}return o}}(this._options)),this._streaming=Boolean(t.stream);for(var r,l=[],u=new o(function(e){for(var t=String(e),r=t.length,n=0,a=[];n<r;){var i=t.charCodeAt(n);if(i<55296||i>57343)a.push(i);else if(56320<=i&&i<=57343)a.push(65533);else if(55296<=i&&i<=56319)if(n===r-1)a.push(65533);else{var o=e.charCodeAt(n+1);if(56320<=o&&o<=57343){var s=1023&i,l=1023&o;a.push(65536+(s<<10)+l),n+=1}else a.push(65533)}n+=1}return a}(e));!u.endOfStream()&&(r=this._encoder.handler(u,u.read()))!==s;)Array.isArray(r)?l.push.apply(l,r):l.push(r);if(!this._streaming){for(;(r=this._encoder.handler(u,u.read()))!==s;)Array.isArray(r)?l.push.apply(l,r):l.push(r);this._encoder=null}return new Uint8Array(l)}}},486:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.encryptMegolmKeyFile=t.decryptMegolmKeyFile=void 0;var n=c(r(65)),a=c(r(19)),i=c(r(149)),o=r(9),s=(t.decryptMegolmKeyFile=function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r){var n,l,c,f,y,v,_,b,g,E,x,S,C,k;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!((n=w(t)).length<1)){e.next=3;break}throw h("Invalid file: too short",(0,u._t)("Not a valid Riot keyfile"));case 3:if(1===n[0]){e.next=6;break}throw h("Unsupported version",(0,u._t)("Not a valid Riot keyfile"));case 6:if(!((l=n.length-69)<0)){e.next=9;break}throw h("Invalid file: too short",(0,u._t)("Not a valid Riot keyfile"));case 9:return c=n.subarray(1,17),f=n.subarray(17,33),y=n[33]<<24|n[34]<<16|n[35]<<8|n[36],v=n.subarray(37,37+l),_=n.subarray(-32),e.next=16,(0,o.resolve)(s(c,y,r));case 16:return b=e.sent,g=(0,i.default)(b,2),E=g[0],x=g[1],S=n.subarray(0,-32),C=void 0,e.prev=22,e.next=25,(0,o.resolve)(p.verify({name:"HMAC"},x,_,S));case 25:C=e.sent,e.next=31;break;case 28:throw e.prev=28,e.t0=e.catch(22),h("subtleCrypto.verify failed: "+e.t0,m());case 31:if(C){e.next=33;break}throw h("hmac mismatch",(0,u._t)("Authentication check failed: incorrect password?"));case 33:return k=void 0,e.prev=34,e.next=37,(0,o.resolve)(p.decrypt({name:"AES-CTR",counter:f,length:64},E,v));case 37:k=e.sent,e.next=43;break;case 40:throw e.prev=40,e.t1=e.catch(34),h("subtleCrypto.decrypt failed: "+e.t1,m());case 43:return e.abrupt("return",(new d).decode(new Uint8Array(k)));case 44:case"end":return e.stop()}},e,this,[[22,28],[34,40]])}));return function(t,r){return e.apply(this,arguments)}}(),t.encryptMegolmKeyFile=function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r,n){var l,u,c,d,y,v,w,b,g,E,x,S,C,k,O,A;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=(n=n||{}).kdf_rounds||5e5,u=new Uint8Array(16),window.crypto.getRandomValues(u),c=new Uint8Array(16),window.crypto.getRandomValues(c),c[9]&=127,e.next=9,(0,o.resolve)(s(u,l,r));case 9:return d=e.sent,y=(0,i.default)(d,2),v=y[0],w=y[1],b=(new f).encode(t),g=void 0,e.prev=15,e.next=18,(0,o.resolve)(p.encrypt({name:"AES-CTR",counter:c,length:64},v,b));case 18:g=e.sent,e.next=24;break;case 21:throw e.prev=21,e.t0=e.catch(15),h("subtleCrypto.encrypt failed: "+e.t0,m());case 24:return E=new Uint8Array(g),x=1+u.length+c.length+4+E.length+32,S=new Uint8Array(x),C=0,S[C++]=1,S.set(u,C),C+=u.length,S.set(c,C),C+=c.length,S[C++]=l>>24,S[C++]=l>>16&255,S[C++]=l>>8&255,S[C++]=255&l,S.set(E,C),C+=E.length,k=S.subarray(0,C),O=void 0,e.prev=41,e.next=44,(0,o.resolve)(p.sign({name:"HMAC"},w,k));case 44:O=e.sent,e.next=50;break;case 47:throw e.prev=47,e.t1=e.catch(41),h("subtleCrypto.sign failed: "+e.t1,m());case 50:return A=new Uint8Array(O),S.set(A,C),e.abrupt("return",_(S));case 53:case"end":return e.stop()}},e,this,[[15,21],[41,47]])}));return function(t,r,n){return e.apply(this,arguments)}}(),function(){var e=(0,o.coroutine)(a.default.mark(function e(t,r,i){var s,l,u,c,d,y,v,w;return a.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=new Date,l=void 0,e.prev=2,e.next=5,(0,o.resolve)(p.importKey("raw",(new f).encode(i),{name:"PBKDF2"},!1,["deriveBits"]));case 5:l=e.sent,e.next=11;break;case 8:throw e.prev=8,e.t0=e.catch(2),h("subtleCrypto.importKey failed: "+e.t0,m());case 11:return u=void 0,e.prev=12,e.next=15,(0,o.resolve)(p.deriveBits({name:"PBKDF2",salt:t,iterations:r,hash:"SHA-512"},l,512));case 15:u=e.sent,e.next=21;break;case 18:throw e.prev=18,e.t1=e.catch(12),h("subtleCrypto.deriveBits failed: "+e.t1,m());case 21:return c=new Date,console.log("E2e import/export: deriveKeys took "+(c-s)+"ms"),d=u.slice(0,32),y=u.slice(32),v=p.importKey("raw",d,{name:"AES-CTR"},!1,["encrypt","decrypt"]).catch(function(e){throw h("subtleCrypto.importKey failed for AES key: "+e,m())}),w=p.importKey("raw",y,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign","verify"]).catch(function(e){throw h("subtleCrypto.importKey failed for HMAC key: "+e,m())}),e.next=29,(0,o.resolve)(n.default.all([v,w]));case 29:return e.abrupt("return",e.sent);case 30:case"end":return e.stop()}},e,this,[[2,8],[12,18]])}));return function(t,r,n){return e.apply(this,arguments)}}()),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(485)),u=r(2);function c(e){return e&&e.__esModule?e:{default:e}}var f=window.TextEncoder;f||(f=l.TextEncoder);var d=window.TextDecoder;d||(d=l.TextDecoder);var p=window.crypto.subtle||window.crypto.webkitSubtle;function h(e,t){var r=new Error(e);return r.friendlyText=t,r}function m(){return(0,u._t)("Your browser does not support the required cryptography extensions")}var y="-----BEGIN MEGOLM SESSION DATA-----",v="-----END MEGOLM SESSION DATA-----";function w(e){for(var t=(new d).decode(new Uint8Array(e)),r=0;;){var n=t.indexOf("\n",r);if(n<0)throw new Error("Header line not found");var a=t.slice(r,n).trim();if(r=n+1,a===y)break}for(var i=r;;){var o=t.indexOf("\n",r);if(t.slice(r,o<0?void 0:o).trim()===v)break;if(o<0)throw new Error("Trailer line not found");r=o+1}var s=r;return function(e){for(var t=window.atob(e),r=new Uint8Array(t.length),n=0;n<t.length;n++)r[n]=t.charCodeAt(n);return r}(t.slice(i,s))}function _(e){var t=Math.ceil(e.length/96),r=new Array(t+3);r[0]=y;var n=0,a=void 0;for(a=1;a<=t;a++)r[a]=b(e.subarray(n,n+96)),n+=96;return r[a++]=v,r[a]="",(new f).encode(r.join("\n")).buffer}function b(e){var t=String.fromCharCode.apply(null,e);return window.btoa(t)}},493:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=f(r(65)),a=f(r(0)),i=f(r(1)),o=c(r(17)),s=c(r(486)),l=f(r(3)),u=r(2);function c(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function f(e){return e&&e.__esModule?e:{default:e}}t.default=a.default.createClass({displayName:"ImportE2eKeysDialog",propTypes:{matrixClient:i.default.instanceOf(o.MatrixClient).isRequired,onFinished:i.default.func.isRequired},getInitialState:function(){return{enableSubmit:!1,phase:1,errStr:null}},componentWillMount:function(){this._unmounted=!1},componentWillUnmount:function(){this._unmounted=!0},_onFormChange:function(e){var t=this.refs.file.files||[];this.setState({enableSubmit:""!==this.refs.passphrase.value&&t.length>0})},_onFormSubmit:function(e){return e.preventDefault(),this._startImport(this.refs.file.files[0],this.refs.passphrase.value),!1},_startImport:function(e,t){var r=this;return this.setState({errStr:null,phase:2}),function(e){return new n.default(function(t,r){var n=new FileReader;n.onload=function(e){t(e.target.result)},n.onerror=r,n.readAsArrayBuffer(e)})}(e).then(function(e){return s.decryptMegolmKeyFile(e,t)}).then(function(e){return r.props.matrixClient.importRoomKeys(JSON.parse(e))}).then(function(){r.props.onFinished(!0)}).catch(function(e){if(console.error("Error importing e2e keys:",e),!r._unmounted){var t=e.friendlyText||(0,u._t)("Unknown error");r.setState({errStr:t,phase:1})}})},_onCancelClick:function(e){return e.preventDefault(),this.props.onFinished(!1),!1},render:function(){var e=l.default.getComponent("views.dialogs.BaseDialog"),t=1!==this.state.phase;return a.default.createElement(e,{className:"mx_importE2eKeysDialog",onFinished:this.props.onFinished,title:(0,u._t)("Import room keys")},a.default.createElement("form",{onSubmit:this._onFormSubmit},a.default.createElement("div",{className:"mx_Dialog_content"},a.default.createElement("p",null,(0,u._t)("This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.")),a.default.createElement("p",null,(0,u._t)("The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.")),a.default.createElement("div",{className:"error"},this.state.errStr),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputTable"},a.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},a.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},a.default.createElement("label",{htmlFor:"importFile"},(0,u._t)("File to import"))),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},a.default.createElement("input",{ref:"file",id:"importFile",type:"file",autoFocus:!0,onChange:this._onFormChange,disabled:t}))),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputRow"},a.default.createElement("div",{className:"mx_E2eKeysDialog_inputLabel"},a.default.createElement("label",{htmlFor:"passphrase"},(0,u._t)("Enter passphrase"))),a.default.createElement("div",{className:"mx_E2eKeysDialog_inputCell"},a.default.createElement("input",{ref:"passphrase",id:"passphrase",size:"64",type:"password",onChange:this._onFormChange,disabled:t}))))),a.default.createElement("div",{className:"mx_Dialog_buttons"},a.default.createElement("input",{className:"mx_Dialog_primary",type:"submit",value:(0,u._t)("Import"),disabled:!this.state.enableSubmit||t}),a.default.createElement("button",{onClick:this._onCancelClick,disabled:t},(0,u._t)("Cancel")))))}}),e.exports=t.default},729:function(e,t,r){var n,a=a||function(e){"use strict";if(!(void 0===e||"undefined"!=typeof navigator&&/MSIE [1-9]\./.test(navigator.userAgent))){var t=function(){return e.URL||e.webkitURL||e},r=e.document.createElementNS("http://www.w3.org/1999/xhtml","a"),n="download"in r,a=/constructor/i.test(e.HTMLElement)||e.safari,i=/CriOS\/[\d]+/.test(navigator.userAgent),o=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},s=function(e){setTimeout(function(){"string"==typeof e?t().revokeObjectURL(e):e.remove()},4e4)},l=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([String.fromCharCode(65279),e],{type:e.type}):e},u=function(u,c,f){f||(u=l(u));var d,p=this,h="application/octet-stream"===u.type,m=function(){!function(e,t,r){for(var n=(t=[].concat(t)).length;n--;){var a=e["on"+t[n]];if("function"==typeof a)try{a.call(e,r||e)}catch(e){o(e)}}}(p,"writestart progress write writeend".split(" "))};if(p.readyState=p.INIT,n)return d=t().createObjectURL(u),void setTimeout(function(){r.href=d,r.download=c,function(e){var t=new MouseEvent("click");e.dispatchEvent(t)}(r),m(),s(d),p.readyState=p.DONE});!function(){if((i||h&&a)&&e.FileReader){var r=new FileReader;return r.onloadend=function(){var t=i?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");e.open(t,"_blank")||(e.location.href=t),t=void 0,p.readyState=p.DONE,m()},r.readAsDataURL(u),void(p.readyState=p.INIT)}d||(d=t().createObjectURL(u)),h?e.location.href=d:e.open(d,"_blank")||(e.location.href=d);p.readyState=p.DONE,m(),s(d)}()},c=u.prototype;return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,r){return t=t||e.name||"download",r||(e=l(e)),navigator.msSaveOrOpenBlob(e,t)}:(c.abort=function(){},c.readyState=c.INIT=0,c.WRITING=1,c.DONE=2,c.error=c.onwritestart=c.onprogress=c.onwrite=c.onabort=c.onerror=c.onwriteend=null,function(e,t,r){return new u(e,t||e.name||"download",r)})}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content); +/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */void 0!==e&&e.exports?e.exports.saveAs=a:null!==r(730)&&null!==r(492)&&(void 0===(n=function(){return a}.call(t,r,t,e))||(e.exports=n))},730:function(e,t){e.exports=function(){throw new Error("define cannot be used indirect")}}}]); +//# sourceMappingURL=vendors~e2e-export.js.map \ No newline at end of file diff --git a/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js.map b/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js.map new file mode 100644 index 0000000..362351c --- /dev/null +++ b/riot/bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/matrix-react-sdk/lib/async-components/views/dialogs/ExportE2eKeysDialog.js","node_modules/text-encoding-utf-8/lib/encoding.lib.mjs","node_modules/matrix-react-sdk/lib/utils/MegolmExportEncryption.js","node_modules/matrix-react-sdk/lib/async-components/views/dialogs/ImportE2eKeysDialog.js","node_modules/file-saver/FileSaver.js","(webpack)/buildin/amd-define.js"],"names":["Object","defineProperty","exports","value","_stringify2","_interopRequireDefault","__webpack_require__","_promise2","_fileSaver2","_react2","_propTypes2","_languageHandler","Matrix","_interopRequireWildcard","MegolmExportEncryption","_index2","obj","__esModule","newObj","key","prototype","hasOwnProperty","call","default","createClass","displayName","propTypes","matrixClient","instanceOf","MatrixClient","isRequired","onFinished","func","getInitialState","phase","errStr","componentWillMount","this","_unmounted","componentWillUnmount","_onPassphraseFormSubmit","ev","preventDefault","passphrase","refs","passphrase1","passphrase2","setState","_t","_startExport","_this","resolve","then","props","exportRoomKeys","k","encryptMegolmKeyFile","f","blob","Blob","type","saveAs","catch","e","console","error","msg","friendlyText","_onCancelClick","render","BaseDialog","getComponent","disableForm","state","createElement","className","title","onSubmit","htmlFor","ref","id","autoFocus","size","disabled","onClick","module","inRange","a","min","max","ToDictionary","o","undefined","TypeError","r","__webpack_exports__","d","TextEncoder","TextDecoder","end_of_stream","Stream","tokens","slice","endOfStream","length","read","shift","prepend","token","Array","isArray","unshift","pop","push","finished","decoderError","fatal","opt_code_point","DEFAULT_ENCODING","encoding","options","String","toLowerCase","Error","_streaming","_BOMseen","_decoder","_fatal","Boolean","_ignoreBOM","_encoder","_options","decode","input","bytes","ArrayBuffer","Uint8Array","buffer","byteOffset","byteLength","utf8_code_point","utf8_bytes_seen","utf8_bytes_needed","utf8_lower_boundary","utf8_upper_boundary","handler","stream","bite","code_point","result","input_stream","code_points","apply","indexOf","s","i","cp","fromCharCode","codePointsToString","encode","opt_string","count","offset","temp","string","n","u","c","charCodeAt","b","stringToCodePoints","decryptMegolmKeyFile","_regenerator2","_slicedToArray3","_bluebird","deriveKeys","_ref","coroutine","mark","_callee","data","password","body","ciphertextLength","salt","iv","iterations","ciphertext","hmac","_ref2","_ref3","aesKey","hmacKey","toVerify","isValid","plaintext","wrap","_context","prev","next","unpackMegolmKeyFile","friendlyError","subarray","sent","subtleCrypto","verify","name","t0","cryptoFailMsg","decrypt","counter","t1","abrupt","stop","_x","_x2","arguments","_ref4","_callee2","kdfRounds","_ref5","_ref6","encodedData","cipherArray","bodyLength","resultBuffer","idx","toSign","hmacArray","_context2","kdf_rounds","window","crypto","getRandomValues","encrypt","set","sign","packMegolmKeyFile","_x3","_x4","_x5","_ref7","_callee3","start","keybits","now","aesProm","hmacProm","_context3","Date","importKey","deriveBits","hash","log","all","_x6","_x7","_x8","TextEncodingUtf8","subtle","webkitSubtle","HEADER_LINE","TRAILER_LINE","fileStr","lineStart","lineEnd","line","trim","dataStart","_lineEnd","dataEnd","base64","latin1String","atob","uint8Array","decodeBase64","nLines","Math","ceil","lines","encodeBase64","join","btoa","enableSubmit","_onFormChange","files","file","_onFormSubmit","_startImport","reject","reader","FileReader","onload","target","onerror","readAsArrayBuffer","readFileAsArrayBuffer","arrayBuffer","keys","importRoomKeys","JSON","parse","onChange","__WEBPACK_AMD_DEFINE_RESULT__","view","navigator","test","userAgent","get_URL","URL","webkitURL","save_link","document","createElementNS","can_use_save_link","is_safari","HTMLElement","safari","is_chrome_ios","throw_outside","ex","setImmediate","setTimeout","revoke","revokeObjectURL","remove","auto_bom","FileSaver","no_auto_bom","object_url","filesaver","force","dispatch_all","event_types","event","concat","listener","dispatch","split","readyState","INIT","createObjectURL","href","download","node","MouseEvent","dispatchEvent","click","DONE","onloadend","url","replace","open","location","readAsDataURL","fs_error","FS_proto","msSaveOrOpenBlob","abort","WRITING","onwritestart","onprogress","onwrite","onabort","onwriteend","self","content"],"mappings":"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","file":"bundles/f5c70ee9a294f6e4590e/vendors~e2e-export.js","sourcesContent":["'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = require('babel-runtime/core-js/json/stringify');\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _fileSaver = require('file-saver');\n\nvar _fileSaver2 = _interopRequireDefault(_fileSaver);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _languageHandler = require('../../../languageHandler');\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _MegolmExportEncryption = require('../../../utils/MegolmExportEncryption');\n\nvar MegolmExportEncryption = _interopRequireWildcard(_MegolmExportEncryption);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PHASE_EDIT = 1; /*\n Copyright 2017 Vector Creations Ltd\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n */\n\nvar PHASE_EXPORTING = 2;\n\nexports.default = _react2.default.createClass({\n displayName: 'ExportE2eKeysDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n phase: PHASE_EDIT,\n errStr: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onPassphraseFormSubmit: function _onPassphraseFormSubmit(ev) {\n ev.preventDefault();\n\n var passphrase = this.refs.passphrase1.value;\n if (passphrase !== this.refs.passphrase2.value) {\n this.setState({ errStr: (0, _languageHandler._t)('Passphrases must match') });\n return false;\n }\n if (!passphrase) {\n this.setState({ errStr: (0, _languageHandler._t)('Passphrase must not be empty') });\n return false;\n }\n\n this._startExport(passphrase);\n return false;\n },\n\n _startExport: function _startExport(passphrase) {\n var _this = this;\n\n // extra Promise.resolve() to turn synchronous exceptions into\n // asynchronous ones.\n _promise2.default.resolve().then(function () {\n return _this.props.matrixClient.exportRoomKeys();\n }).then(function (k) {\n return MegolmExportEncryption.encryptMegolmKeyFile((0, _stringify2.default)(k), passphrase);\n }).then(function (f) {\n var blob = new Blob([f], {\n type: 'text/plain;charset=us-ascii'\n });\n _fileSaver2.default.saveAs(blob, 'riot-keys.txt');\n _this.props.onFinished(true);\n }).catch(function (e) {\n console.error(\"Error exporting e2e keys:\", e);\n if (_this._unmounted) {\n return;\n }\n var msg = e.friendlyText || (0, _languageHandler._t)('Unknown error');\n _this.setState({\n errStr: msg,\n phase: PHASE_EDIT\n });\n });\n\n this.setState({\n errStr: null,\n phase: PHASE_EXPORTING\n });\n },\n\n _onCancelClick: function _onCancelClick(ev) {\n ev.preventDefault();\n this.props.onFinished(false);\n return false;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var disableForm = this.state.phase === PHASE_EXPORTING;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_exportE2eKeysDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Export room keys\")\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onPassphraseFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This process allows you to export the keys for messages ' + 'you have received in encrypted rooms to a local file. You ' + 'will then be able to import the file into another Matrix ' + 'client in the future, so that client will also be able to ' + 'decrypt these messages.')\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The exported file will allow anyone who can read it to decrypt ' + 'any encrypted messages that you can see, so you should be ' + 'careful to keep it secure. To help with this, you should enter ' + 'a passphrase below, which will be used to encrypt the exported ' + 'data. It will only be possible to import the data by using the ' + 'same passphrase.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputTable' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passphrase1' },\n (0, _languageHandler._t)(\"Enter passphrase\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'passphrase1', id: 'passphrase1',\n autoFocus: true, size: '64', type: 'password',\n disabled: disableForm\n })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passphrase2' },\n (0, _languageHandler._t)(\"Confirm passphrase\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'passphrase2', id: 'passphrase2',\n size: '64', type: 'password',\n disabled: disableForm\n })\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary', type: 'submit', value: (0, _languageHandler._t)('Export'),\n disabled: disableForm\n }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancelClick, disabled: disableForm },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ExportE2eKeysDialog.js.map","'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.<number>} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 ≤ c ≤ 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 ≤ c ≤ 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n−1, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n−1:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 ≤ d ≤ 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.<number>} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.<number>|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.<number>} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.<number>)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.<number>}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n/** @interface */\nfunction Decoder() {}\nDecoder.prototype = {\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point, or |finished|.\n */\n handler: function(stream, bite) {}\n};\n\n/** @interface */\nfunction Encoder() {}\nEncoder.prototype = {\n /**\n * @param {Stream} stream The stream of code points being encoded.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit, or |finished|.\n */\n handler: function(stream, code_point) {}\n};\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.<number>)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.<number>}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.<number>)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.<number>}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.<number>)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // − 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte − 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte − 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 × utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte − 0x80) << (6 × (utf-8 bytes\n // needed − utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.<number>)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 × count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 × (count − 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexport {TextEncoder, TextDecoder};\n","/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n\"use strict\";\n\n// polyfill textencoder if necessary\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.encryptMegolmKeyFile = exports.decryptMegolmKeyFile = undefined;\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = require('babel-runtime/regenerator');\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _bluebird = require('bluebird');\n\n/**\n * Decrypt a megolm key file\n *\n * @param {ArrayBuffer} data file to decrypt\n * @param {String} password\n * @return {Promise<String>} promise for decrypted output\n *\n *\n */\nvar decryptMegolmKeyFile = exports.decryptMegolmKeyFile = function () {\n var _ref = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee(data, password) {\n var body, version, ciphertextLength, salt, iv, iterations, ciphertext, hmac, _ref2, _ref3, aesKey, hmacKey, toVerify, isValid, plaintext;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n body = unpackMegolmKeyFile(data);\n\n // check we have a version byte\n\n if (!(body.length < 1)) {\n _context.next = 3;\n break;\n }\n\n throw friendlyError('Invalid file: too short', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 3:\n version = body[0];\n\n if (!(version !== 1)) {\n _context.next = 6;\n break;\n }\n\n throw friendlyError('Unsupported version', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 6:\n ciphertextLength = body.length - (1 + 16 + 16 + 4 + 32);\n\n if (!(ciphertextLength < 0)) {\n _context.next = 9;\n break;\n }\n\n throw friendlyError('Invalid file: too short', (0, _languageHandler._t)('Not a valid Riot keyfile'));\n\n case 9:\n salt = body.subarray(1, 1 + 16);\n iv = body.subarray(17, 17 + 16);\n iterations = body[33] << 24 | body[34] << 16 | body[35] << 8 | body[36];\n ciphertext = body.subarray(37, 37 + ciphertextLength);\n hmac = body.subarray(-32);\n _context.next = 16;\n return (0, _bluebird.resolve)(deriveKeys(salt, iterations, password));\n\n case 16:\n _ref2 = _context.sent;\n _ref3 = (0, _slicedToArray3.default)(_ref2, 2);\n aesKey = _ref3[0];\n hmacKey = _ref3[1];\n toVerify = body.subarray(0, -32);\n isValid = void 0;\n _context.prev = 22;\n _context.next = 25;\n return (0, _bluebird.resolve)(subtleCrypto.verify({ name: 'HMAC' }, hmacKey, hmac, toVerify));\n\n case 25:\n isValid = _context.sent;\n _context.next = 31;\n break;\n\n case 28:\n _context.prev = 28;\n _context.t0 = _context['catch'](22);\n throw friendlyError('subtleCrypto.verify failed: ' + _context.t0, cryptoFailMsg());\n\n case 31:\n if (isValid) {\n _context.next = 33;\n break;\n }\n\n throw friendlyError('hmac mismatch', (0, _languageHandler._t)('Authentication check failed: incorrect password?'));\n\n case 33:\n plaintext = void 0;\n _context.prev = 34;\n _context.next = 37;\n return (0, _bluebird.resolve)(subtleCrypto.decrypt({\n name: \"AES-CTR\",\n counter: iv,\n length: 64\n }, aesKey, ciphertext));\n\n case 37:\n plaintext = _context.sent;\n _context.next = 43;\n break;\n\n case 40:\n _context.prev = 40;\n _context.t1 = _context['catch'](34);\n throw friendlyError('subtleCrypto.decrypt failed: ' + _context.t1, cryptoFailMsg());\n\n case 43:\n return _context.abrupt('return', new TextDecoder().decode(new Uint8Array(plaintext)));\n\n case 44:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[22, 28], [34, 40]]);\n }));\n\n return function decryptMegolmKeyFile(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Encrypt a megolm key file\n *\n * @param {String} data\n * @param {String} password\n * @param {Object=} options\n * @param {Nunber=} options.kdf_rounds Number of iterations to perform of the\n * key-derivation function.\n * @return {Promise<ArrayBuffer>} promise for encrypted output\n */\n\n\nvar encryptMegolmKeyFile = exports.encryptMegolmKeyFile = function () {\n var _ref4 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(data, password, options) {\n var kdfRounds, salt, iv, _ref5, _ref6, aesKey, hmacKey, encodedData, ciphertext, cipherArray, bodyLength, resultBuffer, idx, toSign, hmac, hmacArray;\n\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n options = options || {};\n kdfRounds = options.kdf_rounds || 500000;\n salt = new Uint8Array(16);\n\n window.crypto.getRandomValues(salt);\n\n iv = new Uint8Array(16);\n\n window.crypto.getRandomValues(iv);\n\n // clear bit 63 of the IV to stop us hitting the 64-bit counter boundary\n // (which would mean we wouldn't be able to decrypt on Android). The loss\n // of a single bit of iv is a price we have to pay.\n iv[9] &= 0x7f;\n\n _context2.next = 9;\n return (0, _bluebird.resolve)(deriveKeys(salt, kdfRounds, password));\n\n case 9:\n _ref5 = _context2.sent;\n _ref6 = (0, _slicedToArray3.default)(_ref5, 2);\n aesKey = _ref6[0];\n hmacKey = _ref6[1];\n encodedData = new TextEncoder().encode(data);\n ciphertext = void 0;\n _context2.prev = 15;\n _context2.next = 18;\n return (0, _bluebird.resolve)(subtleCrypto.encrypt({\n name: \"AES-CTR\",\n counter: iv,\n length: 64\n }, aesKey, encodedData));\n\n case 18:\n ciphertext = _context2.sent;\n _context2.next = 24;\n break;\n\n case 21:\n _context2.prev = 21;\n _context2.t0 = _context2['catch'](15);\n throw friendlyError('subtleCrypto.encrypt failed: ' + _context2.t0, cryptoFailMsg());\n\n case 24:\n cipherArray = new Uint8Array(ciphertext);\n bodyLength = 1 + salt.length + iv.length + 4 + cipherArray.length + 32;\n resultBuffer = new Uint8Array(bodyLength);\n idx = 0;\n\n resultBuffer[idx++] = 1; // version\n resultBuffer.set(salt, idx);idx += salt.length;\n resultBuffer.set(iv, idx);idx += iv.length;\n resultBuffer[idx++] = kdfRounds >> 24;\n resultBuffer[idx++] = kdfRounds >> 16 & 0xff;\n resultBuffer[idx++] = kdfRounds >> 8 & 0xff;\n resultBuffer[idx++] = kdfRounds & 0xff;\n resultBuffer.set(cipherArray, idx);idx += cipherArray.length;\n\n toSign = resultBuffer.subarray(0, idx);\n hmac = void 0;\n _context2.prev = 41;\n _context2.next = 44;\n return (0, _bluebird.resolve)(subtleCrypto.sign({ name: 'HMAC' }, hmacKey, toSign));\n\n case 44:\n hmac = _context2.sent;\n _context2.next = 50;\n break;\n\n case 47:\n _context2.prev = 47;\n _context2.t1 = _context2['catch'](41);\n throw friendlyError('subtleCrypto.sign failed: ' + _context2.t1, cryptoFailMsg());\n\n case 50:\n hmacArray = new Uint8Array(hmac);\n\n resultBuffer.set(hmacArray, idx);\n return _context2.abrupt('return', packMegolmKeyFile(resultBuffer));\n\n case 53:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[15, 21], [41, 47]]);\n }));\n\n return function encryptMegolmKeyFile(_x3, _x4, _x5) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * Derive the AES and HMAC-SHA-256 keys for the file\n *\n * @param {Unit8Array} salt salt for pbkdf\n * @param {Number} iterations number of pbkdf iterations\n * @param {String} password password\n * @return {Promise<[CryptoKey, CryptoKey]>} promise for [aes key, hmac key]\n */\n\n\nvar deriveKeys = function () {\n var _ref7 = (0, _bluebird.coroutine)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(salt, iterations, password) {\n var start, key, keybits, now, aesKey, hmacKey, aesProm, hmacProm;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n start = new Date();\n key = void 0;\n _context3.prev = 2;\n _context3.next = 5;\n return (0, _bluebird.resolve)(subtleCrypto.importKey('raw', new TextEncoder().encode(password), { name: 'PBKDF2' }, false, ['deriveBits']));\n\n case 5:\n key = _context3.sent;\n _context3.next = 11;\n break;\n\n case 8:\n _context3.prev = 8;\n _context3.t0 = _context3['catch'](2);\n throw friendlyError('subtleCrypto.importKey failed: ' + _context3.t0, cryptoFailMsg());\n\n case 11:\n keybits = void 0;\n _context3.prev = 12;\n _context3.next = 15;\n return (0, _bluebird.resolve)(subtleCrypto.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: 'SHA-512'\n }, key, 512));\n\n case 15:\n keybits = _context3.sent;\n _context3.next = 21;\n break;\n\n case 18:\n _context3.prev = 18;\n _context3.t1 = _context3['catch'](12);\n throw friendlyError('subtleCrypto.deriveBits failed: ' + _context3.t1, cryptoFailMsg());\n\n case 21:\n now = new Date();\n\n console.log(\"E2e import/export: deriveKeys took \" + (now - start) + \"ms\");\n\n aesKey = keybits.slice(0, 32);\n hmacKey = keybits.slice(32);\n aesProm = subtleCrypto.importKey('raw', aesKey, { name: 'AES-CTR' }, false, ['encrypt', 'decrypt']).catch(function (e) {\n throw friendlyError('subtleCrypto.importKey failed for AES key: ' + e, cryptoFailMsg());\n });\n hmacProm = subtleCrypto.importKey('raw', hmacKey, {\n name: 'HMAC',\n hash: { name: 'SHA-256' }\n }, false, ['sign', 'verify']).catch(function (e) {\n throw friendlyError('subtleCrypto.importKey failed for HMAC key: ' + e, cryptoFailMsg());\n });\n _context3.next = 29;\n return (0, _bluebird.resolve)(_promise2.default.all([aesProm, hmacProm]));\n\n case 29:\n return _context3.abrupt('return', _context3.sent);\n\n case 30:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this, [[2, 8], [12, 18]]);\n }));\n\n return function deriveKeys(_x6, _x7, _x8) {\n return _ref7.apply(this, arguments);\n };\n}();\n\nvar _textEncodingUtf = require('text-encoding-utf-8');\n\nvar TextEncodingUtf8 = _interopRequireWildcard(_textEncodingUtf);\n\nvar _languageHandler = require('../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TextEncoder = window.TextEncoder;\nif (!TextEncoder) {\n TextEncoder = TextEncodingUtf8.TextEncoder;\n}\nvar TextDecoder = window.TextDecoder;\nif (!TextDecoder) {\n TextDecoder = TextEncodingUtf8.TextDecoder;\n}\n\nvar subtleCrypto = window.crypto.subtle || window.crypto.webkitSubtle;\n\n/**\n * Make an Error object which has a friendlyText property which is already\n * translated and suitable for showing to the user.\n *\n * @param {string} msg message for the exception\n * @param {string} friendlyText\n * @returns {Error}\n */\nfunction friendlyError(msg, friendlyText) {\n var e = new Error(msg);\n e.friendlyText = friendlyText;\n return e;\n}\n\nfunction cryptoFailMsg() {\n return (0, _languageHandler._t)('Your browser does not support the required cryptography extensions');\n}\n\nvar HEADER_LINE = '-----BEGIN MEGOLM SESSION DATA-----';\nvar TRAILER_LINE = '-----END MEGOLM SESSION DATA-----';\n\n/**\n * Unbase64 an ascii-armoured megolm key file\n *\n * Strips the header and trailer lines, and unbase64s the content\n *\n * @param {ArrayBuffer} data input file\n * @return {Uint8Array} unbase64ed content\n */\nfunction unpackMegolmKeyFile(data) {\n // parse the file as a great big String. This should be safe, because there\n // should be no non-ASCII characters, and it means that we can do string\n // comparisons to find the header and footer, and feed it into window.atob.\n var fileStr = new TextDecoder().decode(new Uint8Array(data));\n\n // look for the start line\n var lineStart = 0;\n while (1) {\n var lineEnd = fileStr.indexOf('\\n', lineStart);\n if (lineEnd < 0) {\n throw new Error('Header line not found');\n }\n var line = fileStr.slice(lineStart, lineEnd).trim();\n\n // start the next line after the newline\n lineStart = lineEnd + 1;\n\n if (line === HEADER_LINE) {\n break;\n }\n }\n\n var dataStart = lineStart;\n\n // look for the end line\n while (1) {\n var _lineEnd = fileStr.indexOf('\\n', lineStart);\n var _line = fileStr.slice(lineStart, _lineEnd < 0 ? undefined : _lineEnd).trim();\n if (_line === TRAILER_LINE) {\n break;\n }\n\n if (_lineEnd < 0) {\n throw new Error('Trailer line not found');\n }\n\n // start the next line after the newline\n lineStart = _lineEnd + 1;\n }\n\n var dataEnd = lineStart;\n return decodeBase64(fileStr.slice(dataStart, dataEnd));\n}\n\n/**\n * ascii-armour a megolm key file\n *\n * base64s the content, and adds header and trailer lines\n *\n * @param {Uint8Array} data raw data\n * @return {ArrayBuffer} formatted file\n */\nfunction packMegolmKeyFile(data) {\n // we split into lines before base64ing, because encodeBase64 doesn't deal\n // terribly well with large arrays.\n var LINE_LENGTH = 72 * 4 / 3;\n var nLines = Math.ceil(data.length / LINE_LENGTH);\n var lines = new Array(nLines + 3);\n lines[0] = HEADER_LINE;\n var o = 0;\n var i = void 0;\n for (i = 1; i <= nLines; i++) {\n lines[i] = encodeBase64(data.subarray(o, o + LINE_LENGTH));\n o += LINE_LENGTH;\n }\n lines[i++] = TRAILER_LINE;\n lines[i] = '';\n return new TextEncoder().encode(lines.join('\\n')).buffer;\n}\n\n/**\n * Encode a typed array of uint8 as base64.\n * @param {Uint8Array} uint8Array The data to encode.\n * @return {string} The base64.\n */\nfunction encodeBase64(uint8Array) {\n // Misinterpt the Uint8Array as Latin-1.\n // window.btoa expects a unicode string with codepoints in the range 0-255.\n var latin1String = String.fromCharCode.apply(null, uint8Array);\n // Use the builtin base64 encoder.\n return window.btoa(latin1String);\n}\n\n/**\n * Decode a base64 string to a typed array of uint8.\n * @param {string} base64 The base64 to decode.\n * @return {Uint8Array} The decoded data.\n */\nfunction decodeBase64(base64) {\n // window.atob returns a unicode string with codepoints in the range 0-255.\n var latin1String = window.atob(base64);\n // Encode the string as a Uint8Array\n var uint8Array = new Uint8Array(latin1String.length);\n for (var i = 0; i < latin1String.length; i++) {\n uint8Array[i] = latin1String.charCodeAt(i);\n }\n return uint8Array;\n}\n//# sourceMappingURL=MegolmExportEncryption.js.map","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = require('babel-runtime/core-js/promise');\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _matrixJsSdk = require('matrix-js-sdk');\n\nvar Matrix = _interopRequireWildcard(_matrixJsSdk);\n\nvar _MegolmExportEncryption = require('../../../utils/MegolmExportEncryption');\n\nvar MegolmExportEncryption = _interopRequireWildcard(_MegolmExportEncryption);\n\nvar _index = require('../../../index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _languageHandler = require('../../../languageHandler');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\nCopyright 2017 Vector Creations Ltd\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nfunction readFileAsArrayBuffer(file) {\n return new _promise2.default(function (resolve, reject) {\n var reader = new FileReader();\n reader.onload = function (e) {\n resolve(e.target.result);\n };\n reader.onerror = reject;\n\n reader.readAsArrayBuffer(file);\n });\n}\n\nvar PHASE_EDIT = 1;\nvar PHASE_IMPORTING = 2;\n\nexports.default = _react2.default.createClass({\n displayName: 'ImportE2eKeysDialog',\n\n propTypes: {\n matrixClient: _propTypes2.default.instanceOf(Matrix.MatrixClient).isRequired,\n onFinished: _propTypes2.default.func.isRequired\n },\n\n getInitialState: function getInitialState() {\n return {\n enableSubmit: false,\n phase: PHASE_EDIT,\n errStr: null\n };\n },\n\n componentWillMount: function componentWillMount() {\n this._unmounted = false;\n },\n\n componentWillUnmount: function componentWillUnmount() {\n this._unmounted = true;\n },\n\n _onFormChange: function _onFormChange(ev) {\n var files = this.refs.file.files || [];\n this.setState({\n enableSubmit: this.refs.passphrase.value !== \"\" && files.length > 0\n });\n },\n\n _onFormSubmit: function _onFormSubmit(ev) {\n ev.preventDefault();\n this._startImport(this.refs.file.files[0], this.refs.passphrase.value);\n return false;\n },\n\n _startImport: function _startImport(file, passphrase) {\n var _this = this;\n\n this.setState({\n errStr: null,\n phase: PHASE_IMPORTING\n });\n\n return readFileAsArrayBuffer(file).then(function (arrayBuffer) {\n return MegolmExportEncryption.decryptMegolmKeyFile(arrayBuffer, passphrase);\n }).then(function (keys) {\n return _this.props.matrixClient.importRoomKeys(JSON.parse(keys));\n }).then(function () {\n // TODO: it would probably be nice to give some feedback about what we've imported here.\n _this.props.onFinished(true);\n }).catch(function (e) {\n console.error(\"Error importing e2e keys:\", e);\n if (_this._unmounted) {\n return;\n }\n var msg = e.friendlyText || (0, _languageHandler._t)('Unknown error');\n _this.setState({\n errStr: msg,\n phase: PHASE_EDIT\n });\n });\n },\n\n _onCancelClick: function _onCancelClick(ev) {\n ev.preventDefault();\n this.props.onFinished(false);\n return false;\n },\n\n render: function render() {\n var BaseDialog = _index2.default.getComponent('views.dialogs.BaseDialog');\n\n var disableForm = this.state.phase !== PHASE_EDIT;\n\n return _react2.default.createElement(\n BaseDialog,\n { className: 'mx_importE2eKeysDialog',\n onFinished: this.props.onFinished,\n title: (0, _languageHandler._t)(\"Import room keys\")\n },\n _react2.default.createElement(\n 'form',\n { onSubmit: this._onFormSubmit },\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_content' },\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('This process allows you to import encryption keys ' + 'that you had previously exported from another Matrix ' + 'client. You will then be able to decrypt any ' + 'messages that the other client could decrypt.')\n ),\n _react2.default.createElement(\n 'p',\n null,\n (0, _languageHandler._t)('The export file will be protected with a passphrase. ' + 'You should enter the passphrase here, to decrypt the file.')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'error' },\n this.state.errStr\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputTable' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'importFile' },\n (0, _languageHandler._t)(\"File to import\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'file', id: 'importFile', type: 'file',\n autoFocus: true,\n onChange: this._onFormChange,\n disabled: disableForm })\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputRow' },\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputLabel' },\n _react2.default.createElement(\n 'label',\n { htmlFor: 'passphrase' },\n (0, _languageHandler._t)(\"Enter passphrase\")\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_E2eKeysDialog_inputCell' },\n _react2.default.createElement('input', { ref: 'passphrase', id: 'passphrase',\n size: '64', type: 'password',\n onChange: this._onFormChange,\n disabled: disableForm })\n )\n )\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mx_Dialog_buttons' },\n _react2.default.createElement('input', { className: 'mx_Dialog_primary', type: 'submit', value: (0, _languageHandler._t)('Import'),\n disabled: !this.state.enableSubmit || disableForm\n }),\n _react2.default.createElement(\n 'button',\n { onClick: this._onCancelClick, disabled: disableForm },\n (0, _languageHandler._t)(\"Cancel\")\n )\n )\n )\n );\n }\n});\nmodule.exports = exports['default'];\n//# sourceMappingURL=ImportE2eKeysDialog.js.map","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/riot/config.json b/riot/config.json new file mode 100644 index 0000000..98009ed --- /dev/null +++ b/riot/config.json @@ -0,0 +1,8 @@ +{ + "default_hs_url": "https://matrix.team-ep1.fr", + "disable_custom_urls": true, + "disable_guests": true, + "default_federate": false, + "welcomePageUrl": "home.html", + "default_theme": "light" +} diff --git a/riot/config.sample.json b/riot/config.sample.json new file mode 100644 index 0000000..a50eaf7 --- /dev/null +++ b/riot/config.sample.json @@ -0,0 +1,35 @@ +{ + "default_hs_url": "https://matrix.org", + "default_is_url": "https://vector.im", + "disable_custom_urls": false, + "disable_guests": false, + "disable_login_language_selector": false, + "disable_3pid_login": false, + "brand": "Riot", + "integrations_ui_url": "https://scalar.vector.im/", + "integrations_rest_url": "https://scalar.vector.im/api", + "integrations_jitsi_widget_url": "https://scalar.vector.im/api/widgets/jitsi.html", + "bug_report_endpoint_url": "https://riot.im/bugreports/submit", + "features": { + "feature_groups": "labs", + "feature_pinning": "labs" + }, + "default_federate": true, + "welcomePageUrl": "home.html", + "default_theme": "light", + "roomDirectory": { + "servers": [ + "matrix.org" + ] + }, + "welcomeUserId": "@riot-bot:matrix.org", + "piwik": { + "url": "https://piwik.riot.im/", + "whitelistedHSUrls": ["https://matrix.org"], + "whitelistedISUrls": ["https://vector.im", "https://matrix.org"], + "siteId": 1 + }, + "enable_presence_by_hs_url": { + "https://matrix.org": false + } +} diff --git a/riot/emojione/png/0023-20e3.png b/riot/emojione/png/0023-20e3.png new file mode 100644 index 0000000..6e26f00 Binary files /dev/null and b/riot/emojione/png/0023-20e3.png differ diff --git a/riot/emojione/png/0023.png b/riot/emojione/png/0023.png new file mode 100644 index 0000000..811f22a Binary files /dev/null and b/riot/emojione/png/0023.png differ diff --git a/riot/emojione/png/002a-20e3.png b/riot/emojione/png/002a-20e3.png new file mode 100644 index 0000000..2f8e511 Binary files /dev/null and b/riot/emojione/png/002a-20e3.png differ diff --git a/riot/emojione/png/002a.png b/riot/emojione/png/002a.png new file mode 100644 index 0000000..c39443e Binary files /dev/null and b/riot/emojione/png/002a.png differ diff --git a/riot/emojione/png/0030-20e3.png b/riot/emojione/png/0030-20e3.png new file mode 100644 index 0000000..13aca83 Binary files /dev/null and b/riot/emojione/png/0030-20e3.png differ diff --git a/riot/emojione/png/0030.png b/riot/emojione/png/0030.png new file mode 100644 index 0000000..e730b28 Binary files /dev/null and b/riot/emojione/png/0030.png differ diff --git a/riot/emojione/png/0031-20e3.png b/riot/emojione/png/0031-20e3.png new file mode 100644 index 0000000..e6d84b8 Binary files /dev/null and b/riot/emojione/png/0031-20e3.png differ diff --git a/riot/emojione/png/0031.png b/riot/emojione/png/0031.png new file mode 100644 index 0000000..9c4cbd6 Binary files /dev/null and b/riot/emojione/png/0031.png differ diff --git a/riot/emojione/png/0032-20e3.png b/riot/emojione/png/0032-20e3.png new file mode 100644 index 0000000..927339c Binary files /dev/null and b/riot/emojione/png/0032-20e3.png differ diff --git a/riot/emojione/png/0032.png b/riot/emojione/png/0032.png new file mode 100644 index 0000000..9a0b49a Binary files /dev/null and b/riot/emojione/png/0032.png differ diff --git a/riot/emojione/png/0033-20e3.png b/riot/emojione/png/0033-20e3.png new file mode 100644 index 0000000..dbaa618 Binary files /dev/null and b/riot/emojione/png/0033-20e3.png differ diff --git a/riot/emojione/png/0033.png b/riot/emojione/png/0033.png new file mode 100644 index 0000000..bc898b9 Binary files /dev/null and b/riot/emojione/png/0033.png differ diff --git a/riot/emojione/png/0034-20e3.png b/riot/emojione/png/0034-20e3.png new file mode 100644 index 0000000..b0e914a Binary files /dev/null and b/riot/emojione/png/0034-20e3.png differ diff --git a/riot/emojione/png/0034.png b/riot/emojione/png/0034.png new file mode 100644 index 0000000..7216ee3 Binary files /dev/null and b/riot/emojione/png/0034.png differ diff --git a/riot/emojione/png/0035-20e3.png b/riot/emojione/png/0035-20e3.png new file mode 100644 index 0000000..d14371f Binary files /dev/null and b/riot/emojione/png/0035-20e3.png differ diff --git a/riot/emojione/png/0035.png b/riot/emojione/png/0035.png new file mode 100644 index 0000000..c64709a Binary files /dev/null and b/riot/emojione/png/0035.png differ diff --git a/riot/emojione/png/0036-20e3.png b/riot/emojione/png/0036-20e3.png new file mode 100644 index 0000000..371b3ac Binary files /dev/null and b/riot/emojione/png/0036-20e3.png differ diff --git a/riot/emojione/png/0036.png b/riot/emojione/png/0036.png new file mode 100644 index 0000000..68e1e71 Binary files /dev/null and b/riot/emojione/png/0036.png differ diff --git a/riot/emojione/png/0037-20e3.png b/riot/emojione/png/0037-20e3.png new file mode 100644 index 0000000..9b3476a Binary files /dev/null and b/riot/emojione/png/0037-20e3.png differ diff --git a/riot/emojione/png/0037.png b/riot/emojione/png/0037.png new file mode 100644 index 0000000..e4aa065 Binary files /dev/null and b/riot/emojione/png/0037.png differ diff --git a/riot/emojione/png/0038-20e3.png b/riot/emojione/png/0038-20e3.png new file mode 100644 index 0000000..8c95874 Binary files /dev/null and b/riot/emojione/png/0038-20e3.png differ diff --git a/riot/emojione/png/0038.png b/riot/emojione/png/0038.png new file mode 100644 index 0000000..27eae28 Binary files /dev/null and b/riot/emojione/png/0038.png differ diff --git a/riot/emojione/png/0039-20e3.png b/riot/emojione/png/0039-20e3.png new file mode 100644 index 0000000..9fce3d1 Binary files /dev/null and b/riot/emojione/png/0039-20e3.png differ diff --git a/riot/emojione/png/0039.png b/riot/emojione/png/0039.png new file mode 100644 index 0000000..fd9e980 Binary files /dev/null and b/riot/emojione/png/0039.png differ diff --git a/riot/emojione/png/00a9.png b/riot/emojione/png/00a9.png new file mode 100644 index 0000000..6b9a6ad Binary files /dev/null and b/riot/emojione/png/00a9.png differ diff --git a/riot/emojione/png/00ae.png b/riot/emojione/png/00ae.png new file mode 100644 index 0000000..53ef9f2 Binary files /dev/null and b/riot/emojione/png/00ae.png differ diff --git a/riot/emojione/png/1f004.png b/riot/emojione/png/1f004.png new file mode 100644 index 0000000..66fd320 Binary files /dev/null and b/riot/emojione/png/1f004.png differ diff --git a/riot/emojione/png/1f0cf.png b/riot/emojione/png/1f0cf.png new file mode 100644 index 0000000..3d0924b Binary files /dev/null and b/riot/emojione/png/1f0cf.png differ diff --git a/riot/emojione/png/1f170.png b/riot/emojione/png/1f170.png new file mode 100644 index 0000000..8603ff0 Binary files /dev/null and b/riot/emojione/png/1f170.png differ diff --git a/riot/emojione/png/1f171.png b/riot/emojione/png/1f171.png new file mode 100644 index 0000000..25875bc Binary files /dev/null and b/riot/emojione/png/1f171.png differ diff --git a/riot/emojione/png/1f17e.png b/riot/emojione/png/1f17e.png new file mode 100644 index 0000000..73278ba Binary files /dev/null and b/riot/emojione/png/1f17e.png differ diff --git a/riot/emojione/png/1f17f.png b/riot/emojione/png/1f17f.png new file mode 100644 index 0000000..7be7dac Binary files /dev/null and b/riot/emojione/png/1f17f.png differ diff --git a/riot/emojione/png/1f18e.png b/riot/emojione/png/1f18e.png new file mode 100644 index 0000000..d9f2d17 Binary files /dev/null and b/riot/emojione/png/1f18e.png differ diff --git a/riot/emojione/png/1f191.png b/riot/emojione/png/1f191.png new file mode 100644 index 0000000..8b01b43 Binary files /dev/null and b/riot/emojione/png/1f191.png differ diff --git a/riot/emojione/png/1f192.png b/riot/emojione/png/1f192.png new file mode 100644 index 0000000..7467497 Binary files /dev/null and b/riot/emojione/png/1f192.png differ diff --git a/riot/emojione/png/1f193.png b/riot/emojione/png/1f193.png new file mode 100644 index 0000000..b71956e Binary files /dev/null and b/riot/emojione/png/1f193.png differ diff --git a/riot/emojione/png/1f194.png b/riot/emojione/png/1f194.png new file mode 100644 index 0000000..5bf69bf Binary files /dev/null and b/riot/emojione/png/1f194.png differ diff --git a/riot/emojione/png/1f195.png b/riot/emojione/png/1f195.png new file mode 100644 index 0000000..b4f8548 Binary files /dev/null and b/riot/emojione/png/1f195.png differ diff --git a/riot/emojione/png/1f196.png b/riot/emojione/png/1f196.png new file mode 100644 index 0000000..ee8d20f Binary files /dev/null and b/riot/emojione/png/1f196.png differ diff --git a/riot/emojione/png/1f197.png b/riot/emojione/png/1f197.png new file mode 100644 index 0000000..d0d7755 Binary files /dev/null and b/riot/emojione/png/1f197.png differ diff --git a/riot/emojione/png/1f198.png b/riot/emojione/png/1f198.png new file mode 100644 index 0000000..d7d8c99 Binary files /dev/null and b/riot/emojione/png/1f198.png differ diff --git a/riot/emojione/png/1f199.png b/riot/emojione/png/1f199.png new file mode 100644 index 0000000..0d42142 Binary files /dev/null and b/riot/emojione/png/1f199.png differ diff --git a/riot/emojione/png/1f19a.png b/riot/emojione/png/1f19a.png new file mode 100644 index 0000000..e1180f4 Binary files /dev/null and b/riot/emojione/png/1f19a.png differ diff --git a/riot/emojione/png/1f1e6-1f1e8.png b/riot/emojione/png/1f1e6-1f1e8.png new file mode 100644 index 0000000..2862399 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1e8.png differ diff --git a/riot/emojione/png/1f1e6-1f1e9.png b/riot/emojione/png/1f1e6-1f1e9.png new file mode 100644 index 0000000..20f4b14 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1e9.png differ diff --git a/riot/emojione/png/1f1e6-1f1ea.png b/riot/emojione/png/1f1e6-1f1ea.png new file mode 100644 index 0000000..d16ffe4 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1ea.png differ diff --git a/riot/emojione/png/1f1e6-1f1eb.png b/riot/emojione/png/1f1e6-1f1eb.png new file mode 100644 index 0000000..a51533b Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1eb.png differ diff --git a/riot/emojione/png/1f1e6-1f1ec.png b/riot/emojione/png/1f1e6-1f1ec.png new file mode 100644 index 0000000..07f2ce3 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1ec.png differ diff --git a/riot/emojione/png/1f1e6-1f1ee.png b/riot/emojione/png/1f1e6-1f1ee.png new file mode 100644 index 0000000..500b5ab Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1ee.png differ diff --git a/riot/emojione/png/1f1e6-1f1f1.png b/riot/emojione/png/1f1e6-1f1f1.png new file mode 100644 index 0000000..03a2013 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1f1.png differ diff --git a/riot/emojione/png/1f1e6-1f1f2.png b/riot/emojione/png/1f1e6-1f1f2.png new file mode 100644 index 0000000..2ad60a2 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1f2.png differ diff --git a/riot/emojione/png/1f1e6-1f1f4.png b/riot/emojione/png/1f1e6-1f1f4.png new file mode 100644 index 0000000..cb46c31 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1f4.png differ diff --git a/riot/emojione/png/1f1e6-1f1f6.png b/riot/emojione/png/1f1e6-1f1f6.png new file mode 100644 index 0000000..b272021 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1f6.png differ diff --git a/riot/emojione/png/1f1e6-1f1f7.png b/riot/emojione/png/1f1e6-1f1f7.png new file mode 100644 index 0000000..73136ca Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1f7.png differ diff --git a/riot/emojione/png/1f1e6-1f1f8.png b/riot/emojione/png/1f1e6-1f1f8.png new file mode 100644 index 0000000..3db45a0 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1f8.png differ diff --git a/riot/emojione/png/1f1e6-1f1f9.png b/riot/emojione/png/1f1e6-1f1f9.png new file mode 100644 index 0000000..c43769d Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1f9.png differ diff --git a/riot/emojione/png/1f1e6-1f1fa.png b/riot/emojione/png/1f1e6-1f1fa.png new file mode 100644 index 0000000..7794309 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1fa.png differ diff --git a/riot/emojione/png/1f1e6-1f1fc.png b/riot/emojione/png/1f1e6-1f1fc.png new file mode 100644 index 0000000..02c840d Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1fc.png differ diff --git a/riot/emojione/png/1f1e6-1f1fd.png b/riot/emojione/png/1f1e6-1f1fd.png new file mode 100644 index 0000000..fc54661 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1fd.png differ diff --git a/riot/emojione/png/1f1e6-1f1ff.png b/riot/emojione/png/1f1e6-1f1ff.png new file mode 100644 index 0000000..89d3d15 Binary files /dev/null and b/riot/emojione/png/1f1e6-1f1ff.png differ diff --git a/riot/emojione/png/1f1e6.png b/riot/emojione/png/1f1e6.png new file mode 100644 index 0000000..2b6c439 Binary files /dev/null and b/riot/emojione/png/1f1e6.png differ diff --git a/riot/emojione/png/1f1e7-1f1e6.png b/riot/emojione/png/1f1e7-1f1e6.png new file mode 100644 index 0000000..25fe407 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1e6.png differ diff --git a/riot/emojione/png/1f1e7-1f1e7.png b/riot/emojione/png/1f1e7-1f1e7.png new file mode 100644 index 0000000..bccd8c5 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1e7.png differ diff --git a/riot/emojione/png/1f1e7-1f1e9.png b/riot/emojione/png/1f1e7-1f1e9.png new file mode 100644 index 0000000..b0597a3 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1e9.png differ diff --git a/riot/emojione/png/1f1e7-1f1ea.png b/riot/emojione/png/1f1e7-1f1ea.png new file mode 100644 index 0000000..551f086 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1ea.png differ diff --git a/riot/emojione/png/1f1e7-1f1eb.png b/riot/emojione/png/1f1e7-1f1eb.png new file mode 100644 index 0000000..444d482 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1eb.png differ diff --git a/riot/emojione/png/1f1e7-1f1ec.png b/riot/emojione/png/1f1e7-1f1ec.png new file mode 100644 index 0000000..821eee5 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1ec.png differ diff --git a/riot/emojione/png/1f1e7-1f1ed.png b/riot/emojione/png/1f1e7-1f1ed.png new file mode 100644 index 0000000..f337242 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1ed.png differ diff --git a/riot/emojione/png/1f1e7-1f1ee.png b/riot/emojione/png/1f1e7-1f1ee.png new file mode 100644 index 0000000..ea20ac9 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1ee.png differ diff --git a/riot/emojione/png/1f1e7-1f1ef.png b/riot/emojione/png/1f1e7-1f1ef.png new file mode 100644 index 0000000..7cca4f8 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1ef.png differ diff --git a/riot/emojione/png/1f1e7-1f1f1.png b/riot/emojione/png/1f1e7-1f1f1.png new file mode 100644 index 0000000..1082e78 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f1.png differ diff --git a/riot/emojione/png/1f1e7-1f1f2.png b/riot/emojione/png/1f1e7-1f1f2.png new file mode 100644 index 0000000..ab8cafd Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f2.png differ diff --git a/riot/emojione/png/1f1e7-1f1f3.png b/riot/emojione/png/1f1e7-1f1f3.png new file mode 100644 index 0000000..caa9329 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f3.png differ diff --git a/riot/emojione/png/1f1e7-1f1f4.png b/riot/emojione/png/1f1e7-1f1f4.png new file mode 100644 index 0000000..98af62b Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f4.png differ diff --git a/riot/emojione/png/1f1e7-1f1f6.png b/riot/emojione/png/1f1e7-1f1f6.png new file mode 100644 index 0000000..cb978ef Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f6.png differ diff --git a/riot/emojione/png/1f1e7-1f1f7.png b/riot/emojione/png/1f1e7-1f1f7.png new file mode 100644 index 0000000..b139366 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f7.png differ diff --git a/riot/emojione/png/1f1e7-1f1f8.png b/riot/emojione/png/1f1e7-1f1f8.png new file mode 100644 index 0000000..d36bcd2 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f8.png differ diff --git a/riot/emojione/png/1f1e7-1f1f9.png b/riot/emojione/png/1f1e7-1f1f9.png new file mode 100644 index 0000000..ed57aa0 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1f9.png differ diff --git a/riot/emojione/png/1f1e7-1f1fb.png b/riot/emojione/png/1f1e7-1f1fb.png new file mode 100644 index 0000000..5884e64 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1fb.png differ diff --git a/riot/emojione/png/1f1e7-1f1fc.png b/riot/emojione/png/1f1e7-1f1fc.png new file mode 100644 index 0000000..cb12f34 Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1fc.png differ diff --git a/riot/emojione/png/1f1e7-1f1fe.png b/riot/emojione/png/1f1e7-1f1fe.png new file mode 100644 index 0000000..859c05b Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1fe.png differ diff --git a/riot/emojione/png/1f1e7-1f1ff.png b/riot/emojione/png/1f1e7-1f1ff.png new file mode 100644 index 0000000..34761cd Binary files /dev/null and b/riot/emojione/png/1f1e7-1f1ff.png differ diff --git a/riot/emojione/png/1f1e7.png b/riot/emojione/png/1f1e7.png new file mode 100644 index 0000000..8f69fa9 Binary files /dev/null and b/riot/emojione/png/1f1e7.png differ diff --git a/riot/emojione/png/1f1e8-1f1e6.png b/riot/emojione/png/1f1e8-1f1e6.png new file mode 100644 index 0000000..7c5b390 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1e6.png differ diff --git a/riot/emojione/png/1f1e8-1f1e8.png b/riot/emojione/png/1f1e8-1f1e8.png new file mode 100644 index 0000000..b6555a2 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1e8.png differ diff --git a/riot/emojione/png/1f1e8-1f1e9.png b/riot/emojione/png/1f1e8-1f1e9.png new file mode 100644 index 0000000..fa92009 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1e9.png differ diff --git a/riot/emojione/png/1f1e8-1f1eb.png b/riot/emojione/png/1f1e8-1f1eb.png new file mode 100644 index 0000000..b969ae2 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1eb.png differ diff --git a/riot/emojione/png/1f1e8-1f1ec.png b/riot/emojione/png/1f1e8-1f1ec.png new file mode 100644 index 0000000..3a38a40 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1ec.png differ diff --git a/riot/emojione/png/1f1e8-1f1ed.png b/riot/emojione/png/1f1e8-1f1ed.png new file mode 100644 index 0000000..5ff86b8 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1ed.png differ diff --git a/riot/emojione/png/1f1e8-1f1ee.png b/riot/emojione/png/1f1e8-1f1ee.png new file mode 100644 index 0000000..e3b4d15 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1ee.png differ diff --git a/riot/emojione/png/1f1e8-1f1f0.png b/riot/emojione/png/1f1e8-1f1f0.png new file mode 100644 index 0000000..b6b53db Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1f0.png differ diff --git a/riot/emojione/png/1f1e8-1f1f1.png b/riot/emojione/png/1f1e8-1f1f1.png new file mode 100644 index 0000000..c9390da Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1f1.png differ diff --git a/riot/emojione/png/1f1e8-1f1f2.png b/riot/emojione/png/1f1e8-1f1f2.png new file mode 100644 index 0000000..2d3f6ec Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1f2.png differ diff --git a/riot/emojione/png/1f1e8-1f1f3.png b/riot/emojione/png/1f1e8-1f1f3.png new file mode 100644 index 0000000..0a7f350 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1f3.png differ diff --git a/riot/emojione/png/1f1e8-1f1f4.png b/riot/emojione/png/1f1e8-1f1f4.png new file mode 100644 index 0000000..7e0f5e0 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1f4.png differ diff --git a/riot/emojione/png/1f1e8-1f1f5.png b/riot/emojione/png/1f1e8-1f1f5.png new file mode 100644 index 0000000..70c7610 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1f5.png differ diff --git a/riot/emojione/png/1f1e8-1f1f7.png b/riot/emojione/png/1f1e8-1f1f7.png new file mode 100644 index 0000000..a5fce12 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1f7.png differ diff --git a/riot/emojione/png/1f1e8-1f1fa.png b/riot/emojione/png/1f1e8-1f1fa.png new file mode 100644 index 0000000..447328f Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1fa.png differ diff --git a/riot/emojione/png/1f1e8-1f1fb.png b/riot/emojione/png/1f1e8-1f1fb.png new file mode 100644 index 0000000..43faf4d Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1fb.png differ diff --git a/riot/emojione/png/1f1e8-1f1fc.png b/riot/emojione/png/1f1e8-1f1fc.png new file mode 100644 index 0000000..eb39e8d Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1fc.png differ diff --git a/riot/emojione/png/1f1e8-1f1fd.png b/riot/emojione/png/1f1e8-1f1fd.png new file mode 100644 index 0000000..09d2135 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1fd.png differ diff --git a/riot/emojione/png/1f1e8-1f1fe.png b/riot/emojione/png/1f1e8-1f1fe.png new file mode 100644 index 0000000..154a7aa Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1fe.png differ diff --git a/riot/emojione/png/1f1e8-1f1ff.png b/riot/emojione/png/1f1e8-1f1ff.png new file mode 100644 index 0000000..9737ca2 Binary files /dev/null and b/riot/emojione/png/1f1e8-1f1ff.png differ diff --git a/riot/emojione/png/1f1e8.png b/riot/emojione/png/1f1e8.png new file mode 100644 index 0000000..f94e668 Binary files /dev/null and b/riot/emojione/png/1f1e8.png differ diff --git a/riot/emojione/png/1f1e9-1f1ea.png b/riot/emojione/png/1f1e9-1f1ea.png new file mode 100644 index 0000000..98ed76b Binary files /dev/null and b/riot/emojione/png/1f1e9-1f1ea.png differ diff --git a/riot/emojione/png/1f1e9-1f1ec.png b/riot/emojione/png/1f1e9-1f1ec.png new file mode 100644 index 0000000..aae927d Binary files /dev/null and b/riot/emojione/png/1f1e9-1f1ec.png differ diff --git a/riot/emojione/png/1f1e9-1f1ef.png b/riot/emojione/png/1f1e9-1f1ef.png new file mode 100644 index 0000000..73c2a2a Binary files /dev/null and b/riot/emojione/png/1f1e9-1f1ef.png differ diff --git a/riot/emojione/png/1f1e9-1f1f0.png b/riot/emojione/png/1f1e9-1f1f0.png new file mode 100644 index 0000000..e5a60b0 Binary files /dev/null and b/riot/emojione/png/1f1e9-1f1f0.png differ diff --git a/riot/emojione/png/1f1e9-1f1f2.png b/riot/emojione/png/1f1e9-1f1f2.png new file mode 100644 index 0000000..50f8a53 Binary files /dev/null and b/riot/emojione/png/1f1e9-1f1f2.png differ diff --git a/riot/emojione/png/1f1e9-1f1f4.png b/riot/emojione/png/1f1e9-1f1f4.png new file mode 100644 index 0000000..037a45d Binary files /dev/null and b/riot/emojione/png/1f1e9-1f1f4.png differ diff --git a/riot/emojione/png/1f1e9-1f1ff.png b/riot/emojione/png/1f1e9-1f1ff.png new file mode 100644 index 0000000..24945b1 Binary files /dev/null and b/riot/emojione/png/1f1e9-1f1ff.png differ diff --git a/riot/emojione/png/1f1e9.png b/riot/emojione/png/1f1e9.png new file mode 100644 index 0000000..4a36666 Binary files /dev/null and b/riot/emojione/png/1f1e9.png differ diff --git a/riot/emojione/png/1f1ea-1f1e6.png b/riot/emojione/png/1f1ea-1f1e6.png new file mode 100644 index 0000000..356ff34 Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1e6.png differ diff --git a/riot/emojione/png/1f1ea-1f1e8.png b/riot/emojione/png/1f1ea-1f1e8.png new file mode 100644 index 0000000..1381459 Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1e8.png differ diff --git a/riot/emojione/png/1f1ea-1f1ea.png b/riot/emojione/png/1f1ea-1f1ea.png new file mode 100644 index 0000000..84f317e Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1ea.png differ diff --git a/riot/emojione/png/1f1ea-1f1ec.png b/riot/emojione/png/1f1ea-1f1ec.png new file mode 100644 index 0000000..5778606 Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1ec.png differ diff --git a/riot/emojione/png/1f1ea-1f1ed.png b/riot/emojione/png/1f1ea-1f1ed.png new file mode 100644 index 0000000..4d7a766 Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1ed.png differ diff --git a/riot/emojione/png/1f1ea-1f1f7.png b/riot/emojione/png/1f1ea-1f1f7.png new file mode 100644 index 0000000..0c3c724 Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1f7.png differ diff --git a/riot/emojione/png/1f1ea-1f1f8.png b/riot/emojione/png/1f1ea-1f1f8.png new file mode 100644 index 0000000..3e73597 Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1f8.png differ diff --git a/riot/emojione/png/1f1ea-1f1f9.png b/riot/emojione/png/1f1ea-1f1f9.png new file mode 100644 index 0000000..9560a13 Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1f9.png differ diff --git a/riot/emojione/png/1f1ea-1f1fa.png b/riot/emojione/png/1f1ea-1f1fa.png new file mode 100644 index 0000000..0b456cf Binary files /dev/null and b/riot/emojione/png/1f1ea-1f1fa.png differ diff --git a/riot/emojione/png/1f1ea.png b/riot/emojione/png/1f1ea.png new file mode 100644 index 0000000..66f7e8d Binary files /dev/null and b/riot/emojione/png/1f1ea.png differ diff --git a/riot/emojione/png/1f1eb-1f1ee.png b/riot/emojione/png/1f1eb-1f1ee.png new file mode 100644 index 0000000..ebcf58a Binary files /dev/null and b/riot/emojione/png/1f1eb-1f1ee.png differ diff --git a/riot/emojione/png/1f1eb-1f1ef.png b/riot/emojione/png/1f1eb-1f1ef.png new file mode 100644 index 0000000..9cc8c37 Binary files /dev/null and b/riot/emojione/png/1f1eb-1f1ef.png differ diff --git a/riot/emojione/png/1f1eb-1f1f0.png b/riot/emojione/png/1f1eb-1f1f0.png new file mode 100644 index 0000000..61372fd Binary files /dev/null and b/riot/emojione/png/1f1eb-1f1f0.png differ diff --git a/riot/emojione/png/1f1eb-1f1f2.png b/riot/emojione/png/1f1eb-1f1f2.png new file mode 100644 index 0000000..0889825 Binary files /dev/null and b/riot/emojione/png/1f1eb-1f1f2.png differ diff --git a/riot/emojione/png/1f1eb-1f1f4.png b/riot/emojione/png/1f1eb-1f1f4.png new file mode 100644 index 0000000..9a4431b Binary files /dev/null and b/riot/emojione/png/1f1eb-1f1f4.png differ diff --git a/riot/emojione/png/1f1eb-1f1f7.png b/riot/emojione/png/1f1eb-1f1f7.png new file mode 100644 index 0000000..62ca19c Binary files /dev/null and b/riot/emojione/png/1f1eb-1f1f7.png differ diff --git a/riot/emojione/png/1f1eb.png b/riot/emojione/png/1f1eb.png new file mode 100644 index 0000000..913b230 Binary files /dev/null and b/riot/emojione/png/1f1eb.png differ diff --git a/riot/emojione/png/1f1ec-1f1e6.png b/riot/emojione/png/1f1ec-1f1e6.png new file mode 100644 index 0000000..2e68e52 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1e6.png differ diff --git a/riot/emojione/png/1f1ec-1f1e7.png b/riot/emojione/png/1f1ec-1f1e7.png new file mode 100644 index 0000000..3ed10f6 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1e7.png differ diff --git a/riot/emojione/png/1f1ec-1f1e9.png b/riot/emojione/png/1f1ec-1f1e9.png new file mode 100644 index 0000000..527aad3 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1e9.png differ diff --git a/riot/emojione/png/1f1ec-1f1ea.png b/riot/emojione/png/1f1ec-1f1ea.png new file mode 100644 index 0000000..a75d142 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1ea.png differ diff --git a/riot/emojione/png/1f1ec-1f1eb.png b/riot/emojione/png/1f1ec-1f1eb.png new file mode 100644 index 0000000..0cf96f3 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1eb.png differ diff --git a/riot/emojione/png/1f1ec-1f1ec.png b/riot/emojione/png/1f1ec-1f1ec.png new file mode 100644 index 0000000..970002c Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1ec.png differ diff --git a/riot/emojione/png/1f1ec-1f1ed.png b/riot/emojione/png/1f1ec-1f1ed.png new file mode 100644 index 0000000..f31b5eb Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1ed.png differ diff --git a/riot/emojione/png/1f1ec-1f1ee.png b/riot/emojione/png/1f1ec-1f1ee.png new file mode 100644 index 0000000..e554a2a Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1ee.png differ diff --git a/riot/emojione/png/1f1ec-1f1f1.png b/riot/emojione/png/1f1ec-1f1f1.png new file mode 100644 index 0000000..2e795dd Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f1.png differ diff --git a/riot/emojione/png/1f1ec-1f1f2.png b/riot/emojione/png/1f1ec-1f1f2.png new file mode 100644 index 0000000..bb69c09 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f2.png differ diff --git a/riot/emojione/png/1f1ec-1f1f3.png b/riot/emojione/png/1f1ec-1f1f3.png new file mode 100644 index 0000000..1981f61 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f3.png differ diff --git a/riot/emojione/png/1f1ec-1f1f5.png b/riot/emojione/png/1f1ec-1f1f5.png new file mode 100644 index 0000000..10e42e6 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f5.png differ diff --git a/riot/emojione/png/1f1ec-1f1f6.png b/riot/emojione/png/1f1ec-1f1f6.png new file mode 100644 index 0000000..11475e6 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f6.png differ diff --git a/riot/emojione/png/1f1ec-1f1f7.png b/riot/emojione/png/1f1ec-1f1f7.png new file mode 100644 index 0000000..0f6bb1b Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f7.png differ diff --git a/riot/emojione/png/1f1ec-1f1f8.png b/riot/emojione/png/1f1ec-1f1f8.png new file mode 100644 index 0000000..6fc9278 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f8.png differ diff --git a/riot/emojione/png/1f1ec-1f1f9.png b/riot/emojione/png/1f1ec-1f1f9.png new file mode 100644 index 0000000..7213d41 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1f9.png differ diff --git a/riot/emojione/png/1f1ec-1f1fa.png b/riot/emojione/png/1f1ec-1f1fa.png new file mode 100644 index 0000000..4027549 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1fa.png differ diff --git a/riot/emojione/png/1f1ec-1f1fc.png b/riot/emojione/png/1f1ec-1f1fc.png new file mode 100644 index 0000000..6357f62 Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1fc.png differ diff --git a/riot/emojione/png/1f1ec-1f1fe.png b/riot/emojione/png/1f1ec-1f1fe.png new file mode 100644 index 0000000..746e2fb Binary files /dev/null and b/riot/emojione/png/1f1ec-1f1fe.png differ diff --git a/riot/emojione/png/1f1ec.png b/riot/emojione/png/1f1ec.png new file mode 100644 index 0000000..2711630 Binary files /dev/null and b/riot/emojione/png/1f1ec.png differ diff --git a/riot/emojione/png/1f1ed-1f1f0.png b/riot/emojione/png/1f1ed-1f1f0.png new file mode 100644 index 0000000..cf0c715 Binary files /dev/null and b/riot/emojione/png/1f1ed-1f1f0.png differ diff --git a/riot/emojione/png/1f1ed-1f1f2.png b/riot/emojione/png/1f1ed-1f1f2.png new file mode 100644 index 0000000..b613509 Binary files /dev/null and b/riot/emojione/png/1f1ed-1f1f2.png differ diff --git a/riot/emojione/png/1f1ed-1f1f3.png b/riot/emojione/png/1f1ed-1f1f3.png new file mode 100644 index 0000000..402cdce Binary files /dev/null and b/riot/emojione/png/1f1ed-1f1f3.png differ diff --git a/riot/emojione/png/1f1ed-1f1f7.png b/riot/emojione/png/1f1ed-1f1f7.png new file mode 100644 index 0000000..46f4f06 Binary files /dev/null and b/riot/emojione/png/1f1ed-1f1f7.png differ diff --git a/riot/emojione/png/1f1ed-1f1f9.png b/riot/emojione/png/1f1ed-1f1f9.png new file mode 100644 index 0000000..d8d0c88 Binary files /dev/null and b/riot/emojione/png/1f1ed-1f1f9.png differ diff --git a/riot/emojione/png/1f1ed-1f1fa.png b/riot/emojione/png/1f1ed-1f1fa.png new file mode 100644 index 0000000..a898de6 Binary files /dev/null and b/riot/emojione/png/1f1ed-1f1fa.png differ diff --git a/riot/emojione/png/1f1ed.png b/riot/emojione/png/1f1ed.png new file mode 100644 index 0000000..ca88e46 Binary files /dev/null and b/riot/emojione/png/1f1ed.png differ diff --git a/riot/emojione/png/1f1ee-1f1e8.png b/riot/emojione/png/1f1ee-1f1e8.png new file mode 100644 index 0000000..69fd990 Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1e8.png differ diff --git a/riot/emojione/png/1f1ee-1f1e9.png b/riot/emojione/png/1f1ee-1f1e9.png new file mode 100644 index 0000000..85b4c06 Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1e9.png differ diff --git a/riot/emojione/png/1f1ee-1f1ea.png b/riot/emojione/png/1f1ee-1f1ea.png new file mode 100644 index 0000000..a282958 Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1ea.png differ diff --git a/riot/emojione/png/1f1ee-1f1f1.png b/riot/emojione/png/1f1ee-1f1f1.png new file mode 100644 index 0000000..85c410d Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f1.png differ diff --git a/riot/emojione/png/1f1ee-1f1f2.png b/riot/emojione/png/1f1ee-1f1f2.png new file mode 100644 index 0000000..60a2458 Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f2.png differ diff --git a/riot/emojione/png/1f1ee-1f1f3.png b/riot/emojione/png/1f1ee-1f1f3.png new file mode 100644 index 0000000..feccc89 Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f3.png differ diff --git a/riot/emojione/png/1f1ee-1f1f4.png b/riot/emojione/png/1f1ee-1f1f4.png new file mode 100644 index 0000000..aae927d Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f4.png differ diff --git a/riot/emojione/png/1f1ee-1f1f6.png b/riot/emojione/png/1f1ee-1f1f6.png new file mode 100644 index 0000000..41fd1db Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f6.png differ diff --git a/riot/emojione/png/1f1ee-1f1f7.png b/riot/emojione/png/1f1ee-1f1f7.png new file mode 100644 index 0000000..ff7aaf6 Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f7.png differ diff --git a/riot/emojione/png/1f1ee-1f1f8.png b/riot/emojione/png/1f1ee-1f1f8.png new file mode 100644 index 0000000..ad8d413 Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f8.png differ diff --git a/riot/emojione/png/1f1ee-1f1f9.png b/riot/emojione/png/1f1ee-1f1f9.png new file mode 100644 index 0000000..f21563e Binary files /dev/null and b/riot/emojione/png/1f1ee-1f1f9.png differ diff --git a/riot/emojione/png/1f1ee.png b/riot/emojione/png/1f1ee.png new file mode 100644 index 0000000..48dc167 Binary files /dev/null and b/riot/emojione/png/1f1ee.png differ diff --git a/riot/emojione/png/1f1ef-1f1ea.png b/riot/emojione/png/1f1ef-1f1ea.png new file mode 100644 index 0000000..198a918 Binary files /dev/null and b/riot/emojione/png/1f1ef-1f1ea.png differ diff --git a/riot/emojione/png/1f1ef-1f1f2.png b/riot/emojione/png/1f1ef-1f1f2.png new file mode 100644 index 0000000..f84e4f9 Binary files /dev/null and b/riot/emojione/png/1f1ef-1f1f2.png differ diff --git a/riot/emojione/png/1f1ef-1f1f4.png b/riot/emojione/png/1f1ef-1f1f4.png new file mode 100644 index 0000000..20bfa14 Binary files /dev/null and b/riot/emojione/png/1f1ef-1f1f4.png differ diff --git a/riot/emojione/png/1f1ef-1f1f5.png b/riot/emojione/png/1f1ef-1f1f5.png new file mode 100644 index 0000000..8d8838e Binary files /dev/null and b/riot/emojione/png/1f1ef-1f1f5.png differ diff --git a/riot/emojione/png/1f1ef.png b/riot/emojione/png/1f1ef.png new file mode 100644 index 0000000..16599da Binary files /dev/null and b/riot/emojione/png/1f1ef.png differ diff --git a/riot/emojione/png/1f1f0-1f1ea.png b/riot/emojione/png/1f1f0-1f1ea.png new file mode 100644 index 0000000..9e417ab Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1ea.png differ diff --git a/riot/emojione/png/1f1f0-1f1ec.png b/riot/emojione/png/1f1f0-1f1ec.png new file mode 100644 index 0000000..2f2d848 Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1ec.png differ diff --git a/riot/emojione/png/1f1f0-1f1ed.png b/riot/emojione/png/1f1f0-1f1ed.png new file mode 100644 index 0000000..9a2877d Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1ed.png differ diff --git a/riot/emojione/png/1f1f0-1f1ee.png b/riot/emojione/png/1f1f0-1f1ee.png new file mode 100644 index 0000000..10e507e Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1ee.png differ diff --git a/riot/emojione/png/1f1f0-1f1f2.png b/riot/emojione/png/1f1f0-1f1f2.png new file mode 100644 index 0000000..bd5a058 Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1f2.png differ diff --git a/riot/emojione/png/1f1f0-1f1f3.png b/riot/emojione/png/1f1f0-1f1f3.png new file mode 100644 index 0000000..776207c Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1f3.png differ diff --git a/riot/emojione/png/1f1f0-1f1f5.png b/riot/emojione/png/1f1f0-1f1f5.png new file mode 100644 index 0000000..6b3fd89 Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1f5.png differ diff --git a/riot/emojione/png/1f1f0-1f1f7.png b/riot/emojione/png/1f1f0-1f1f7.png new file mode 100644 index 0000000..833a881 Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1f7.png differ diff --git a/riot/emojione/png/1f1f0-1f1fc.png b/riot/emojione/png/1f1f0-1f1fc.png new file mode 100644 index 0000000..4d19bfa Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1fc.png differ diff --git a/riot/emojione/png/1f1f0-1f1fe.png b/riot/emojione/png/1f1f0-1f1fe.png new file mode 100644 index 0000000..40daa4d Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1fe.png differ diff --git a/riot/emojione/png/1f1f0-1f1ff.png b/riot/emojione/png/1f1f0-1f1ff.png new file mode 100644 index 0000000..2f97a8f Binary files /dev/null and b/riot/emojione/png/1f1f0-1f1ff.png differ diff --git a/riot/emojione/png/1f1f0.png b/riot/emojione/png/1f1f0.png new file mode 100644 index 0000000..204b95d Binary files /dev/null and b/riot/emojione/png/1f1f0.png differ diff --git a/riot/emojione/png/1f1f1-1f1e6.png b/riot/emojione/png/1f1f1-1f1e6.png new file mode 100644 index 0000000..4d4179f Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1e6.png differ diff --git a/riot/emojione/png/1f1f1-1f1e7.png b/riot/emojione/png/1f1f1-1f1e7.png new file mode 100644 index 0000000..3d59446 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1e7.png differ diff --git a/riot/emojione/png/1f1f1-1f1e8.png b/riot/emojione/png/1f1f1-1f1e8.png new file mode 100644 index 0000000..45547b1 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1e8.png differ diff --git a/riot/emojione/png/1f1f1-1f1ee.png b/riot/emojione/png/1f1f1-1f1ee.png new file mode 100644 index 0000000..0eafa6a Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1ee.png differ diff --git a/riot/emojione/png/1f1f1-1f1f0.png b/riot/emojione/png/1f1f1-1f1f0.png new file mode 100644 index 0000000..ab4fe10 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1f0.png differ diff --git a/riot/emojione/png/1f1f1-1f1f7.png b/riot/emojione/png/1f1f1-1f1f7.png new file mode 100644 index 0000000..f66f267 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1f7.png differ diff --git a/riot/emojione/png/1f1f1-1f1f8.png b/riot/emojione/png/1f1f1-1f1f8.png new file mode 100644 index 0000000..2474563 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1f8.png differ diff --git a/riot/emojione/png/1f1f1-1f1f9.png b/riot/emojione/png/1f1f1-1f1f9.png new file mode 100644 index 0000000..d644b56 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1f9.png differ diff --git a/riot/emojione/png/1f1f1-1f1fa.png b/riot/emojione/png/1f1f1-1f1fa.png new file mode 100644 index 0000000..a2df9c9 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1fa.png differ diff --git a/riot/emojione/png/1f1f1-1f1fb.png b/riot/emojione/png/1f1f1-1f1fb.png new file mode 100644 index 0000000..ae680d5 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1fb.png differ diff --git a/riot/emojione/png/1f1f1-1f1fe.png b/riot/emojione/png/1f1f1-1f1fe.png new file mode 100644 index 0000000..f6e77b0 Binary files /dev/null and b/riot/emojione/png/1f1f1-1f1fe.png differ diff --git a/riot/emojione/png/1f1f1.png b/riot/emojione/png/1f1f1.png new file mode 100644 index 0000000..7992b4f Binary files /dev/null and b/riot/emojione/png/1f1f1.png differ diff --git a/riot/emojione/png/1f1f2-1f1e6.png b/riot/emojione/png/1f1f2-1f1e6.png new file mode 100644 index 0000000..c4a0567 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1e6.png differ diff --git a/riot/emojione/png/1f1f2-1f1e8.png b/riot/emojione/png/1f1f2-1f1e8.png new file mode 100644 index 0000000..d479eab Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1e8.png differ diff --git a/riot/emojione/png/1f1f2-1f1e9.png b/riot/emojione/png/1f1f2-1f1e9.png new file mode 100644 index 0000000..a7a7253 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1e9.png differ diff --git a/riot/emojione/png/1f1f2-1f1ea.png b/riot/emojione/png/1f1f2-1f1ea.png new file mode 100644 index 0000000..7c771e7 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1ea.png differ diff --git a/riot/emojione/png/1f1f2-1f1eb.png b/riot/emojione/png/1f1f2-1f1eb.png new file mode 100644 index 0000000..70c7610 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1eb.png differ diff --git a/riot/emojione/png/1f1f2-1f1ec.png b/riot/emojione/png/1f1f2-1f1ec.png new file mode 100644 index 0000000..2f3ccdd Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1ec.png differ diff --git a/riot/emojione/png/1f1f2-1f1ed.png b/riot/emojione/png/1f1f2-1f1ed.png new file mode 100644 index 0000000..5980164 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1ed.png differ diff --git a/riot/emojione/png/1f1f2-1f1f0.png b/riot/emojione/png/1f1f2-1f1f0.png new file mode 100644 index 0000000..7ba775e Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f0.png differ diff --git a/riot/emojione/png/1f1f2-1f1f1.png b/riot/emojione/png/1f1f2-1f1f1.png new file mode 100644 index 0000000..6834378 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f1.png differ diff --git a/riot/emojione/png/1f1f2-1f1f2.png b/riot/emojione/png/1f1f2-1f1f2.png new file mode 100644 index 0000000..37dc7d7 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f2.png differ diff --git a/riot/emojione/png/1f1f2-1f1f3.png b/riot/emojione/png/1f1f2-1f1f3.png new file mode 100644 index 0000000..1f146bb Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f3.png differ diff --git a/riot/emojione/png/1f1f2-1f1f4.png b/riot/emojione/png/1f1f2-1f1f4.png new file mode 100644 index 0000000..7edde31 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f4.png differ diff --git a/riot/emojione/png/1f1f2-1f1f5.png b/riot/emojione/png/1f1f2-1f1f5.png new file mode 100644 index 0000000..17ec1c4 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f5.png differ diff --git a/riot/emojione/png/1f1f2-1f1f6.png b/riot/emojione/png/1f1f2-1f1f6.png new file mode 100644 index 0000000..1e672dc Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f6.png differ diff --git a/riot/emojione/png/1f1f2-1f1f7.png b/riot/emojione/png/1f1f2-1f1f7.png new file mode 100644 index 0000000..f87de46 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f7.png differ diff --git a/riot/emojione/png/1f1f2-1f1f8.png b/riot/emojione/png/1f1f2-1f1f8.png new file mode 100644 index 0000000..480b0d4 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f8.png differ diff --git a/riot/emojione/png/1f1f2-1f1f9.png b/riot/emojione/png/1f1f2-1f1f9.png new file mode 100644 index 0000000..c9e1dbd Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1f9.png differ diff --git a/riot/emojione/png/1f1f2-1f1fa.png b/riot/emojione/png/1f1f2-1f1fa.png new file mode 100644 index 0000000..55b33cb Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1fa.png differ diff --git a/riot/emojione/png/1f1f2-1f1fb.png b/riot/emojione/png/1f1f2-1f1fb.png new file mode 100644 index 0000000..ce58671 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1fb.png differ diff --git a/riot/emojione/png/1f1f2-1f1fc.png b/riot/emojione/png/1f1f2-1f1fc.png new file mode 100644 index 0000000..003d854 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1fc.png differ diff --git a/riot/emojione/png/1f1f2-1f1fd.png b/riot/emojione/png/1f1f2-1f1fd.png new file mode 100644 index 0000000..42572bc Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1fd.png differ diff --git a/riot/emojione/png/1f1f2-1f1fe.png b/riot/emojione/png/1f1f2-1f1fe.png new file mode 100644 index 0000000..17526c2 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1fe.png differ diff --git a/riot/emojione/png/1f1f2-1f1ff.png b/riot/emojione/png/1f1f2-1f1ff.png new file mode 100644 index 0000000..2352a78 Binary files /dev/null and b/riot/emojione/png/1f1f2-1f1ff.png differ diff --git a/riot/emojione/png/1f1f2.png b/riot/emojione/png/1f1f2.png new file mode 100644 index 0000000..7b848b2 Binary files /dev/null and b/riot/emojione/png/1f1f2.png differ diff --git a/riot/emojione/png/1f1f3-1f1e6.png b/riot/emojione/png/1f1f3-1f1e6.png new file mode 100644 index 0000000..ed31c3d Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1e6.png differ diff --git a/riot/emojione/png/1f1f3-1f1e8.png b/riot/emojione/png/1f1f3-1f1e8.png new file mode 100644 index 0000000..90b3afe Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1e8.png differ diff --git a/riot/emojione/png/1f1f3-1f1ea.png b/riot/emojione/png/1f1f3-1f1ea.png new file mode 100644 index 0000000..f98a117 Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1ea.png differ diff --git a/riot/emojione/png/1f1f3-1f1eb.png b/riot/emojione/png/1f1f3-1f1eb.png new file mode 100644 index 0000000..9099e76 Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1eb.png differ diff --git a/riot/emojione/png/1f1f3-1f1ec.png b/riot/emojione/png/1f1f3-1f1ec.png new file mode 100644 index 0000000..ea0abef Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1ec.png differ diff --git a/riot/emojione/png/1f1f3-1f1ee.png b/riot/emojione/png/1f1f3-1f1ee.png new file mode 100644 index 0000000..772920d Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1ee.png differ diff --git a/riot/emojione/png/1f1f3-1f1f1.png b/riot/emojione/png/1f1f3-1f1f1.png new file mode 100644 index 0000000..83a0e81 Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1f1.png differ diff --git a/riot/emojione/png/1f1f3-1f1f4.png b/riot/emojione/png/1f1f3-1f1f4.png new file mode 100644 index 0000000..99d3142 Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1f4.png differ diff --git a/riot/emojione/png/1f1f3-1f1f5.png b/riot/emojione/png/1f1f3-1f1f5.png new file mode 100644 index 0000000..87425a8 Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1f5.png differ diff --git a/riot/emojione/png/1f1f3-1f1f7.png b/riot/emojione/png/1f1f3-1f1f7.png new file mode 100644 index 0000000..b3e3a5d Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1f7.png differ diff --git a/riot/emojione/png/1f1f3-1f1fa.png b/riot/emojione/png/1f1f3-1f1fa.png new file mode 100644 index 0000000..f036144 Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1fa.png differ diff --git a/riot/emojione/png/1f1f3-1f1ff.png b/riot/emojione/png/1f1f3-1f1ff.png new file mode 100644 index 0000000..a4eeeab Binary files /dev/null and b/riot/emojione/png/1f1f3-1f1ff.png differ diff --git a/riot/emojione/png/1f1f3.png b/riot/emojione/png/1f1f3.png new file mode 100644 index 0000000..4a11e50 Binary files /dev/null and b/riot/emojione/png/1f1f3.png differ diff --git a/riot/emojione/png/1f1f4-1f1f2.png b/riot/emojione/png/1f1f4-1f1f2.png new file mode 100644 index 0000000..ea824ba Binary files /dev/null and b/riot/emojione/png/1f1f4-1f1f2.png differ diff --git a/riot/emojione/png/1f1f4.png b/riot/emojione/png/1f1f4.png new file mode 100644 index 0000000..2a0760b Binary files /dev/null and b/riot/emojione/png/1f1f4.png differ diff --git a/riot/emojione/png/1f1f5-1f1e6.png b/riot/emojione/png/1f1f5-1f1e6.png new file mode 100644 index 0000000..c3091d8 Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1e6.png differ diff --git a/riot/emojione/png/1f1f5-1f1ea.png b/riot/emojione/png/1f1f5-1f1ea.png new file mode 100644 index 0000000..39223aa Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1ea.png differ diff --git a/riot/emojione/png/1f1f5-1f1eb.png b/riot/emojione/png/1f1f5-1f1eb.png new file mode 100644 index 0000000..113445f Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1eb.png differ diff --git a/riot/emojione/png/1f1f5-1f1ec.png b/riot/emojione/png/1f1f5-1f1ec.png new file mode 100644 index 0000000..825e9dc Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1ec.png differ diff --git a/riot/emojione/png/1f1f5-1f1ed.png b/riot/emojione/png/1f1f5-1f1ed.png new file mode 100644 index 0000000..8260e15 Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1ed.png differ diff --git a/riot/emojione/png/1f1f5-1f1f0.png b/riot/emojione/png/1f1f5-1f1f0.png new file mode 100644 index 0000000..a7b6a1c Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1f0.png differ diff --git a/riot/emojione/png/1f1f5-1f1f1.png b/riot/emojione/png/1f1f5-1f1f1.png new file mode 100644 index 0000000..19de2ed Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1f1.png differ diff --git a/riot/emojione/png/1f1f5-1f1f2.png b/riot/emojione/png/1f1f5-1f1f2.png new file mode 100644 index 0000000..2ca6055 Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1f2.png differ diff --git a/riot/emojione/png/1f1f5-1f1f3.png b/riot/emojione/png/1f1f5-1f1f3.png new file mode 100644 index 0000000..f2263b1 Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1f3.png differ diff --git a/riot/emojione/png/1f1f5-1f1f7.png b/riot/emojione/png/1f1f5-1f1f7.png new file mode 100644 index 0000000..d0209cd Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1f7.png differ diff --git a/riot/emojione/png/1f1f5-1f1f8.png b/riot/emojione/png/1f1f5-1f1f8.png new file mode 100644 index 0000000..7ccab09 Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1f8.png differ diff --git a/riot/emojione/png/1f1f5-1f1f9.png b/riot/emojione/png/1f1f5-1f1f9.png new file mode 100644 index 0000000..cc93f27 Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1f9.png differ diff --git a/riot/emojione/png/1f1f5-1f1fc.png b/riot/emojione/png/1f1f5-1f1fc.png new file mode 100644 index 0000000..154b2f1 Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1fc.png differ diff --git a/riot/emojione/png/1f1f5-1f1fe.png b/riot/emojione/png/1f1f5-1f1fe.png new file mode 100644 index 0000000..662ad2f Binary files /dev/null and b/riot/emojione/png/1f1f5-1f1fe.png differ diff --git a/riot/emojione/png/1f1f5.png b/riot/emojione/png/1f1f5.png new file mode 100644 index 0000000..bcb3298 Binary files /dev/null and b/riot/emojione/png/1f1f5.png differ diff --git a/riot/emojione/png/1f1f6-1f1e6.png b/riot/emojione/png/1f1f6-1f1e6.png new file mode 100644 index 0000000..a01d8b0 Binary files /dev/null and b/riot/emojione/png/1f1f6-1f1e6.png differ diff --git a/riot/emojione/png/1f1f6.png b/riot/emojione/png/1f1f6.png new file mode 100644 index 0000000..6c92a9d Binary files /dev/null and b/riot/emojione/png/1f1f6.png differ diff --git a/riot/emojione/png/1f1f7-1f1ea.png b/riot/emojione/png/1f1f7-1f1ea.png new file mode 100644 index 0000000..57f2bbe Binary files /dev/null and b/riot/emojione/png/1f1f7-1f1ea.png differ diff --git a/riot/emojione/png/1f1f7-1f1f4.png b/riot/emojione/png/1f1f7-1f1f4.png new file mode 100644 index 0000000..3e48c44 Binary files /dev/null and b/riot/emojione/png/1f1f7-1f1f4.png differ diff --git a/riot/emojione/png/1f1f7-1f1f8.png b/riot/emojione/png/1f1f7-1f1f8.png new file mode 100644 index 0000000..9df6c9a Binary files /dev/null and b/riot/emojione/png/1f1f7-1f1f8.png differ diff --git a/riot/emojione/png/1f1f7-1f1fa.png b/riot/emojione/png/1f1f7-1f1fa.png new file mode 100644 index 0000000..e50c9db Binary files /dev/null and b/riot/emojione/png/1f1f7-1f1fa.png differ diff --git a/riot/emojione/png/1f1f7-1f1fc.png b/riot/emojione/png/1f1f7-1f1fc.png new file mode 100644 index 0000000..c238c87 Binary files /dev/null and b/riot/emojione/png/1f1f7-1f1fc.png differ diff --git a/riot/emojione/png/1f1f7.png b/riot/emojione/png/1f1f7.png new file mode 100644 index 0000000..627892c Binary files /dev/null and b/riot/emojione/png/1f1f7.png differ diff --git a/riot/emojione/png/1f1f8-1f1e6.png b/riot/emojione/png/1f1f8-1f1e6.png new file mode 100644 index 0000000..4941be7 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1e6.png differ diff --git a/riot/emojione/png/1f1f8-1f1e7.png b/riot/emojione/png/1f1f8-1f1e7.png new file mode 100644 index 0000000..7d8f1ac Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1e7.png differ diff --git a/riot/emojione/png/1f1f8-1f1e8.png b/riot/emojione/png/1f1f8-1f1e8.png new file mode 100644 index 0000000..6ae4d90 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1e8.png differ diff --git a/riot/emojione/png/1f1f8-1f1e9.png b/riot/emojione/png/1f1f8-1f1e9.png new file mode 100644 index 0000000..963be1b Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1e9.png differ diff --git a/riot/emojione/png/1f1f8-1f1ea.png b/riot/emojione/png/1f1f8-1f1ea.png new file mode 100644 index 0000000..fc0d0e0 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1ea.png differ diff --git a/riot/emojione/png/1f1f8-1f1ec.png b/riot/emojione/png/1f1f8-1f1ec.png new file mode 100644 index 0000000..de3c773 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1ec.png differ diff --git a/riot/emojione/png/1f1f8-1f1ed.png b/riot/emojione/png/1f1f8-1f1ed.png new file mode 100644 index 0000000..40cd9e4 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1ed.png differ diff --git a/riot/emojione/png/1f1f8-1f1ee.png b/riot/emojione/png/1f1f8-1f1ee.png new file mode 100644 index 0000000..e308999 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1ee.png differ diff --git a/riot/emojione/png/1f1f8-1f1ef.png b/riot/emojione/png/1f1f8-1f1ef.png new file mode 100644 index 0000000..5884e64 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1ef.png differ diff --git a/riot/emojione/png/1f1f8-1f1f0.png b/riot/emojione/png/1f1f8-1f1f0.png new file mode 100644 index 0000000..4259d0e Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f0.png differ diff --git a/riot/emojione/png/1f1f8-1f1f1.png b/riot/emojione/png/1f1f8-1f1f1.png new file mode 100644 index 0000000..d2cc688 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f1.png differ diff --git a/riot/emojione/png/1f1f8-1f1f2.png b/riot/emojione/png/1f1f8-1f1f2.png new file mode 100644 index 0000000..03b8708 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f2.png differ diff --git a/riot/emojione/png/1f1f8-1f1f3.png b/riot/emojione/png/1f1f8-1f1f3.png new file mode 100644 index 0000000..5368bbe Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f3.png differ diff --git a/riot/emojione/png/1f1f8-1f1f4.png b/riot/emojione/png/1f1f8-1f1f4.png new file mode 100644 index 0000000..68a0597 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f4.png differ diff --git a/riot/emojione/png/1f1f8-1f1f7.png b/riot/emojione/png/1f1f8-1f1f7.png new file mode 100644 index 0000000..d325132 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f7.png differ diff --git a/riot/emojione/png/1f1f8-1f1f8.png b/riot/emojione/png/1f1f8-1f1f8.png new file mode 100644 index 0000000..122977e Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f8.png differ diff --git a/riot/emojione/png/1f1f8-1f1f9.png b/riot/emojione/png/1f1f8-1f1f9.png new file mode 100644 index 0000000..f83a863 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1f9.png differ diff --git a/riot/emojione/png/1f1f8-1f1fb.png b/riot/emojione/png/1f1f8-1f1fb.png new file mode 100644 index 0000000..efb83e2 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1fb.png differ diff --git a/riot/emojione/png/1f1f8-1f1fd.png b/riot/emojione/png/1f1f8-1f1fd.png new file mode 100644 index 0000000..94b760f Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1fd.png differ diff --git a/riot/emojione/png/1f1f8-1f1fe.png b/riot/emojione/png/1f1f8-1f1fe.png new file mode 100644 index 0000000..09a8ee8 Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1fe.png differ diff --git a/riot/emojione/png/1f1f8-1f1ff.png b/riot/emojione/png/1f1f8-1f1ff.png new file mode 100644 index 0000000..f74e82e Binary files /dev/null and b/riot/emojione/png/1f1f8-1f1ff.png differ diff --git a/riot/emojione/png/1f1f8.png b/riot/emojione/png/1f1f8.png new file mode 100644 index 0000000..9d0dbf9 Binary files /dev/null and b/riot/emojione/png/1f1f8.png differ diff --git a/riot/emojione/png/1f1f9-1f1e6.png b/riot/emojione/png/1f1f9-1f1e6.png new file mode 100644 index 0000000..b44283e Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1e6.png differ diff --git a/riot/emojione/png/1f1f9-1f1e8.png b/riot/emojione/png/1f1f9-1f1e8.png new file mode 100644 index 0000000..156b33d Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1e8.png differ diff --git a/riot/emojione/png/1f1f9-1f1e9.png b/riot/emojione/png/1f1f9-1f1e9.png new file mode 100644 index 0000000..ebe7f59 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1e9.png differ diff --git a/riot/emojione/png/1f1f9-1f1eb.png b/riot/emojione/png/1f1f9-1f1eb.png new file mode 100644 index 0000000..a1a3ad6 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1eb.png differ diff --git a/riot/emojione/png/1f1f9-1f1ec.png b/riot/emojione/png/1f1f9-1f1ec.png new file mode 100644 index 0000000..826b73c Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1ec.png differ diff --git a/riot/emojione/png/1f1f9-1f1ed.png b/riot/emojione/png/1f1f9-1f1ed.png new file mode 100644 index 0000000..93ff542 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1ed.png differ diff --git a/riot/emojione/png/1f1f9-1f1ef.png b/riot/emojione/png/1f1f9-1f1ef.png new file mode 100644 index 0000000..7a8a0b6 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1ef.png differ diff --git a/riot/emojione/png/1f1f9-1f1f0.png b/riot/emojione/png/1f1f9-1f1f0.png new file mode 100644 index 0000000..2fa5a21 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1f0.png differ diff --git a/riot/emojione/png/1f1f9-1f1f1.png b/riot/emojione/png/1f1f9-1f1f1.png new file mode 100644 index 0000000..5b120ec Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1f1.png differ diff --git a/riot/emojione/png/1f1f9-1f1f2.png b/riot/emojione/png/1f1f9-1f1f2.png new file mode 100644 index 0000000..c3c4f53 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1f2.png differ diff --git a/riot/emojione/png/1f1f9-1f1f3.png b/riot/emojione/png/1f1f9-1f1f3.png new file mode 100644 index 0000000..58ef161 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1f3.png differ diff --git a/riot/emojione/png/1f1f9-1f1f4.png b/riot/emojione/png/1f1f9-1f1f4.png new file mode 100644 index 0000000..1ffa7bb Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1f4.png differ diff --git a/riot/emojione/png/1f1f9-1f1f7.png b/riot/emojione/png/1f1f9-1f1f7.png new file mode 100644 index 0000000..325251f Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1f7.png differ diff --git a/riot/emojione/png/1f1f9-1f1f9.png b/riot/emojione/png/1f1f9-1f1f9.png new file mode 100644 index 0000000..ed3bb39 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1f9.png differ diff --git a/riot/emojione/png/1f1f9-1f1fb.png b/riot/emojione/png/1f1f9-1f1fb.png new file mode 100644 index 0000000..e82c65c Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1fb.png differ diff --git a/riot/emojione/png/1f1f9-1f1fc.png b/riot/emojione/png/1f1f9-1f1fc.png new file mode 100644 index 0000000..3a8f00b Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1fc.png differ diff --git a/riot/emojione/png/1f1f9-1f1ff.png b/riot/emojione/png/1f1f9-1f1ff.png new file mode 100644 index 0000000..2a02085 Binary files /dev/null and b/riot/emojione/png/1f1f9-1f1ff.png differ diff --git a/riot/emojione/png/1f1f9.png b/riot/emojione/png/1f1f9.png new file mode 100644 index 0000000..2d882f6 Binary files /dev/null and b/riot/emojione/png/1f1f9.png differ diff --git a/riot/emojione/png/1f1fa-1f1e6.png b/riot/emojione/png/1f1fa-1f1e6.png new file mode 100644 index 0000000..cd84d1b Binary files /dev/null and b/riot/emojione/png/1f1fa-1f1e6.png differ diff --git a/riot/emojione/png/1f1fa-1f1ec.png b/riot/emojione/png/1f1fa-1f1ec.png new file mode 100644 index 0000000..dc97690 Binary files /dev/null and b/riot/emojione/png/1f1fa-1f1ec.png differ diff --git a/riot/emojione/png/1f1fa-1f1f2.png b/riot/emojione/png/1f1fa-1f1f2.png new file mode 100644 index 0000000..4a7ee3c Binary files /dev/null and b/riot/emojione/png/1f1fa-1f1f2.png differ diff --git a/riot/emojione/png/1f1fa-1f1f8.png b/riot/emojione/png/1f1fa-1f1f8.png new file mode 100644 index 0000000..9f73030 Binary files /dev/null and b/riot/emojione/png/1f1fa-1f1f8.png differ diff --git a/riot/emojione/png/1f1fa-1f1fe.png b/riot/emojione/png/1f1fa-1f1fe.png new file mode 100644 index 0000000..b8002a6 Binary files /dev/null and b/riot/emojione/png/1f1fa-1f1fe.png differ diff --git a/riot/emojione/png/1f1fa-1f1ff.png b/riot/emojione/png/1f1fa-1f1ff.png new file mode 100644 index 0000000..d56ca9b Binary files /dev/null and b/riot/emojione/png/1f1fa-1f1ff.png differ diff --git a/riot/emojione/png/1f1fa.png b/riot/emojione/png/1f1fa.png new file mode 100644 index 0000000..ae0cabe Binary files /dev/null and b/riot/emojione/png/1f1fa.png differ diff --git a/riot/emojione/png/1f1fb-1f1e6.png b/riot/emojione/png/1f1fb-1f1e6.png new file mode 100644 index 0000000..ddaf5e3 Binary files /dev/null and b/riot/emojione/png/1f1fb-1f1e6.png differ diff --git a/riot/emojione/png/1f1fb-1f1e8.png b/riot/emojione/png/1f1fb-1f1e8.png new file mode 100644 index 0000000..43703c6 Binary files /dev/null and b/riot/emojione/png/1f1fb-1f1e8.png differ diff --git a/riot/emojione/png/1f1fb-1f1ea.png b/riot/emojione/png/1f1fb-1f1ea.png new file mode 100644 index 0000000..1b62796 Binary files /dev/null and b/riot/emojione/png/1f1fb-1f1ea.png differ diff --git a/riot/emojione/png/1f1fb-1f1ec.png b/riot/emojione/png/1f1fb-1f1ec.png new file mode 100644 index 0000000..536f780 Binary files /dev/null and b/riot/emojione/png/1f1fb-1f1ec.png differ diff --git a/riot/emojione/png/1f1fb-1f1ee.png b/riot/emojione/png/1f1fb-1f1ee.png new file mode 100644 index 0000000..6410201 Binary files /dev/null and b/riot/emojione/png/1f1fb-1f1ee.png differ diff --git a/riot/emojione/png/1f1fb-1f1f3.png b/riot/emojione/png/1f1fb-1f1f3.png new file mode 100644 index 0000000..4270360 Binary files /dev/null and b/riot/emojione/png/1f1fb-1f1f3.png differ diff --git a/riot/emojione/png/1f1fb-1f1fa.png b/riot/emojione/png/1f1fb-1f1fa.png new file mode 100644 index 0000000..706eba4 Binary files /dev/null and b/riot/emojione/png/1f1fb-1f1fa.png differ diff --git a/riot/emojione/png/1f1fb.png b/riot/emojione/png/1f1fb.png new file mode 100644 index 0000000..e01e179 Binary files /dev/null and b/riot/emojione/png/1f1fb.png differ diff --git a/riot/emojione/png/1f1fc-1f1eb.png b/riot/emojione/png/1f1fc-1f1eb.png new file mode 100644 index 0000000..70c7610 Binary files /dev/null and b/riot/emojione/png/1f1fc-1f1eb.png differ diff --git a/riot/emojione/png/1f1fc-1f1f8.png b/riot/emojione/png/1f1fc-1f1f8.png new file mode 100644 index 0000000..a1ea070 Binary files /dev/null and b/riot/emojione/png/1f1fc-1f1f8.png differ diff --git a/riot/emojione/png/1f1fc.png b/riot/emojione/png/1f1fc.png new file mode 100644 index 0000000..e8f614a Binary files /dev/null and b/riot/emojione/png/1f1fc.png differ diff --git a/riot/emojione/png/1f1fd-1f1f0.png b/riot/emojione/png/1f1fd-1f1f0.png new file mode 100644 index 0000000..e587a44 Binary files /dev/null and b/riot/emojione/png/1f1fd-1f1f0.png differ diff --git a/riot/emojione/png/1f1fd.png b/riot/emojione/png/1f1fd.png new file mode 100644 index 0000000..e3bedba Binary files /dev/null and b/riot/emojione/png/1f1fd.png differ diff --git a/riot/emojione/png/1f1fe-1f1ea.png b/riot/emojione/png/1f1fe-1f1ea.png new file mode 100644 index 0000000..eadfebd Binary files /dev/null and b/riot/emojione/png/1f1fe-1f1ea.png differ diff --git a/riot/emojione/png/1f1fe-1f1f9.png b/riot/emojione/png/1f1fe-1f1f9.png new file mode 100644 index 0000000..c81fa6d Binary files /dev/null and b/riot/emojione/png/1f1fe-1f1f9.png differ diff --git a/riot/emojione/png/1f1fe.png b/riot/emojione/png/1f1fe.png new file mode 100644 index 0000000..9bfa7f2 Binary files /dev/null and b/riot/emojione/png/1f1fe.png differ diff --git a/riot/emojione/png/1f1ff-1f1e6.png b/riot/emojione/png/1f1ff-1f1e6.png new file mode 100644 index 0000000..f397ef5 Binary files /dev/null and b/riot/emojione/png/1f1ff-1f1e6.png differ diff --git a/riot/emojione/png/1f1ff-1f1f2.png b/riot/emojione/png/1f1ff-1f1f2.png new file mode 100644 index 0000000..2494a31 Binary files /dev/null and b/riot/emojione/png/1f1ff-1f1f2.png differ diff --git a/riot/emojione/png/1f1ff-1f1fc.png b/riot/emojione/png/1f1ff-1f1fc.png new file mode 100644 index 0000000..e09b965 Binary files /dev/null and b/riot/emojione/png/1f1ff-1f1fc.png differ diff --git a/riot/emojione/png/1f1ff.png b/riot/emojione/png/1f1ff.png new file mode 100644 index 0000000..5bf03f1 Binary files /dev/null and b/riot/emojione/png/1f1ff.png differ diff --git a/riot/emojione/png/1f201.png b/riot/emojione/png/1f201.png new file mode 100644 index 0000000..6450eb4 Binary files /dev/null and b/riot/emojione/png/1f201.png differ diff --git a/riot/emojione/png/1f202.png b/riot/emojione/png/1f202.png new file mode 100644 index 0000000..900f963 Binary files /dev/null and b/riot/emojione/png/1f202.png differ diff --git a/riot/emojione/png/1f21a.png b/riot/emojione/png/1f21a.png new file mode 100644 index 0000000..d3a19b4 Binary files /dev/null and b/riot/emojione/png/1f21a.png differ diff --git a/riot/emojione/png/1f22f.png b/riot/emojione/png/1f22f.png new file mode 100644 index 0000000..078e23e Binary files /dev/null and b/riot/emojione/png/1f22f.png differ diff --git a/riot/emojione/png/1f232.png b/riot/emojione/png/1f232.png new file mode 100644 index 0000000..4c704e0 Binary files /dev/null and b/riot/emojione/png/1f232.png differ diff --git a/riot/emojione/png/1f233.png b/riot/emojione/png/1f233.png new file mode 100644 index 0000000..47966c1 Binary files /dev/null and b/riot/emojione/png/1f233.png differ diff --git a/riot/emojione/png/1f234.png b/riot/emojione/png/1f234.png new file mode 100644 index 0000000..8375ad9 Binary files /dev/null and b/riot/emojione/png/1f234.png differ diff --git a/riot/emojione/png/1f235.png b/riot/emojione/png/1f235.png new file mode 100644 index 0000000..f9dea8b Binary files /dev/null and b/riot/emojione/png/1f235.png differ diff --git a/riot/emojione/png/1f236.png b/riot/emojione/png/1f236.png new file mode 100644 index 0000000..a4510de Binary files /dev/null and b/riot/emojione/png/1f236.png differ diff --git a/riot/emojione/png/1f237.png b/riot/emojione/png/1f237.png new file mode 100644 index 0000000..c41bd36 Binary files /dev/null and b/riot/emojione/png/1f237.png differ diff --git a/riot/emojione/png/1f238.png b/riot/emojione/png/1f238.png new file mode 100644 index 0000000..6b7af0e Binary files /dev/null and b/riot/emojione/png/1f238.png differ diff --git a/riot/emojione/png/1f239.png b/riot/emojione/png/1f239.png new file mode 100644 index 0000000..c4f837f Binary files /dev/null and b/riot/emojione/png/1f239.png differ diff --git a/riot/emojione/png/1f23a.png b/riot/emojione/png/1f23a.png new file mode 100644 index 0000000..d21cb30 Binary files /dev/null and b/riot/emojione/png/1f23a.png differ diff --git a/riot/emojione/png/1f250.png b/riot/emojione/png/1f250.png new file mode 100644 index 0000000..0c0d589 Binary files /dev/null and b/riot/emojione/png/1f250.png differ diff --git a/riot/emojione/png/1f251.png b/riot/emojione/png/1f251.png new file mode 100644 index 0000000..8afd7ce Binary files /dev/null and b/riot/emojione/png/1f251.png differ diff --git a/riot/emojione/png/1f300.png b/riot/emojione/png/1f300.png new file mode 100644 index 0000000..ff00b1a Binary files /dev/null and b/riot/emojione/png/1f300.png differ diff --git a/riot/emojione/png/1f301.png b/riot/emojione/png/1f301.png new file mode 100644 index 0000000..57702d8 Binary files /dev/null and b/riot/emojione/png/1f301.png differ diff --git a/riot/emojione/png/1f302.png b/riot/emojione/png/1f302.png new file mode 100644 index 0000000..ecefba9 Binary files /dev/null and b/riot/emojione/png/1f302.png differ diff --git a/riot/emojione/png/1f303.png b/riot/emojione/png/1f303.png new file mode 100644 index 0000000..ca2018f Binary files /dev/null and b/riot/emojione/png/1f303.png differ diff --git a/riot/emojione/png/1f304.png b/riot/emojione/png/1f304.png new file mode 100644 index 0000000..2b99307 Binary files /dev/null and b/riot/emojione/png/1f304.png differ diff --git a/riot/emojione/png/1f305.png b/riot/emojione/png/1f305.png new file mode 100644 index 0000000..4ad3600 Binary files /dev/null and b/riot/emojione/png/1f305.png differ diff --git a/riot/emojione/png/1f306.png b/riot/emojione/png/1f306.png new file mode 100644 index 0000000..80cdff7 Binary files /dev/null and b/riot/emojione/png/1f306.png differ diff --git a/riot/emojione/png/1f307.png b/riot/emojione/png/1f307.png new file mode 100644 index 0000000..7cded0b Binary files /dev/null and b/riot/emojione/png/1f307.png differ diff --git a/riot/emojione/png/1f308.png b/riot/emojione/png/1f308.png new file mode 100644 index 0000000..154735d Binary files /dev/null and b/riot/emojione/png/1f308.png differ diff --git a/riot/emojione/png/1f309.png b/riot/emojione/png/1f309.png new file mode 100644 index 0000000..1d444e0 Binary files /dev/null and b/riot/emojione/png/1f309.png differ diff --git a/riot/emojione/png/1f30a.png b/riot/emojione/png/1f30a.png new file mode 100644 index 0000000..45ff1e8 Binary files /dev/null and b/riot/emojione/png/1f30a.png differ diff --git a/riot/emojione/png/1f30b.png b/riot/emojione/png/1f30b.png new file mode 100644 index 0000000..931d569 Binary files /dev/null and b/riot/emojione/png/1f30b.png differ diff --git a/riot/emojione/png/1f30c.png b/riot/emojione/png/1f30c.png new file mode 100644 index 0000000..b2b8ac5 Binary files /dev/null and b/riot/emojione/png/1f30c.png differ diff --git a/riot/emojione/png/1f30d.png b/riot/emojione/png/1f30d.png new file mode 100644 index 0000000..66c3348 Binary files /dev/null and b/riot/emojione/png/1f30d.png differ diff --git a/riot/emojione/png/1f30e.png b/riot/emojione/png/1f30e.png new file mode 100644 index 0000000..538c3cd Binary files /dev/null and b/riot/emojione/png/1f30e.png differ diff --git a/riot/emojione/png/1f30f.png b/riot/emojione/png/1f30f.png new file mode 100644 index 0000000..d8df97f Binary files /dev/null and b/riot/emojione/png/1f30f.png differ diff --git a/riot/emojione/png/1f310.png b/riot/emojione/png/1f310.png new file mode 100644 index 0000000..82450c1 Binary files /dev/null and b/riot/emojione/png/1f310.png differ diff --git a/riot/emojione/png/1f311.png b/riot/emojione/png/1f311.png new file mode 100644 index 0000000..ecff72c Binary files /dev/null and b/riot/emojione/png/1f311.png differ diff --git a/riot/emojione/png/1f312.png b/riot/emojione/png/1f312.png new file mode 100644 index 0000000..6871251 Binary files /dev/null and b/riot/emojione/png/1f312.png differ diff --git a/riot/emojione/png/1f313.png b/riot/emojione/png/1f313.png new file mode 100644 index 0000000..5dccaf7 Binary files /dev/null and b/riot/emojione/png/1f313.png differ diff --git a/riot/emojione/png/1f314.png b/riot/emojione/png/1f314.png new file mode 100644 index 0000000..3a80815 Binary files /dev/null and b/riot/emojione/png/1f314.png differ diff --git a/riot/emojione/png/1f315.png b/riot/emojione/png/1f315.png new file mode 100644 index 0000000..c9a2d6a Binary files /dev/null and b/riot/emojione/png/1f315.png differ diff --git a/riot/emojione/png/1f316.png b/riot/emojione/png/1f316.png new file mode 100644 index 0000000..24e1626 Binary files /dev/null and b/riot/emojione/png/1f316.png differ diff --git a/riot/emojione/png/1f317.png b/riot/emojione/png/1f317.png new file mode 100644 index 0000000..0842a0d Binary files /dev/null and b/riot/emojione/png/1f317.png differ diff --git a/riot/emojione/png/1f318.png b/riot/emojione/png/1f318.png new file mode 100644 index 0000000..cf68706 Binary files /dev/null and b/riot/emojione/png/1f318.png differ diff --git a/riot/emojione/png/1f319.png b/riot/emojione/png/1f319.png new file mode 100644 index 0000000..765420e Binary files /dev/null and b/riot/emojione/png/1f319.png differ diff --git a/riot/emojione/png/1f31a.png b/riot/emojione/png/1f31a.png new file mode 100644 index 0000000..150dd12 Binary files /dev/null and b/riot/emojione/png/1f31a.png differ diff --git a/riot/emojione/png/1f31b.png b/riot/emojione/png/1f31b.png new file mode 100644 index 0000000..cd8a3d7 Binary files /dev/null and b/riot/emojione/png/1f31b.png differ diff --git a/riot/emojione/png/1f31c.png b/riot/emojione/png/1f31c.png new file mode 100644 index 0000000..9409934 Binary files /dev/null and b/riot/emojione/png/1f31c.png differ diff --git a/riot/emojione/png/1f31d.png b/riot/emojione/png/1f31d.png new file mode 100644 index 0000000..a5c25bb Binary files /dev/null and b/riot/emojione/png/1f31d.png differ diff --git a/riot/emojione/png/1f31e.png b/riot/emojione/png/1f31e.png new file mode 100644 index 0000000..14a4ea9 Binary files /dev/null and b/riot/emojione/png/1f31e.png differ diff --git a/riot/emojione/png/1f31f.png b/riot/emojione/png/1f31f.png new file mode 100644 index 0000000..2f5cba5 Binary files /dev/null and b/riot/emojione/png/1f31f.png differ diff --git a/riot/emojione/png/1f320.png b/riot/emojione/png/1f320.png new file mode 100644 index 0000000..aa45384 Binary files /dev/null and b/riot/emojione/png/1f320.png differ diff --git a/riot/emojione/png/1f321.png b/riot/emojione/png/1f321.png new file mode 100644 index 0000000..b114739 Binary files /dev/null and b/riot/emojione/png/1f321.png differ diff --git a/riot/emojione/png/1f324.png b/riot/emojione/png/1f324.png new file mode 100644 index 0000000..cead0bf Binary files /dev/null and b/riot/emojione/png/1f324.png differ diff --git a/riot/emojione/png/1f325.png b/riot/emojione/png/1f325.png new file mode 100644 index 0000000..0a4cc10 Binary files /dev/null and b/riot/emojione/png/1f325.png differ diff --git a/riot/emojione/png/1f326.png b/riot/emojione/png/1f326.png new file mode 100644 index 0000000..491f9ca Binary files /dev/null and b/riot/emojione/png/1f326.png differ diff --git a/riot/emojione/png/1f327.png b/riot/emojione/png/1f327.png new file mode 100644 index 0000000..385685e Binary files /dev/null and b/riot/emojione/png/1f327.png differ diff --git a/riot/emojione/png/1f328.png b/riot/emojione/png/1f328.png new file mode 100644 index 0000000..9720384 Binary files /dev/null and b/riot/emojione/png/1f328.png differ diff --git a/riot/emojione/png/1f329.png b/riot/emojione/png/1f329.png new file mode 100644 index 0000000..0831e88 Binary files /dev/null and b/riot/emojione/png/1f329.png differ diff --git a/riot/emojione/png/1f32a.png b/riot/emojione/png/1f32a.png new file mode 100644 index 0000000..4821c89 Binary files /dev/null and b/riot/emojione/png/1f32a.png differ diff --git a/riot/emojione/png/1f32b.png b/riot/emojione/png/1f32b.png new file mode 100644 index 0000000..4e73c2d Binary files /dev/null and b/riot/emojione/png/1f32b.png differ diff --git a/riot/emojione/png/1f32c.png b/riot/emojione/png/1f32c.png new file mode 100644 index 0000000..df81b65 Binary files /dev/null and b/riot/emojione/png/1f32c.png differ diff --git a/riot/emojione/png/1f32d.png b/riot/emojione/png/1f32d.png new file mode 100644 index 0000000..3c3354d Binary files /dev/null and b/riot/emojione/png/1f32d.png differ diff --git a/riot/emojione/png/1f32e.png b/riot/emojione/png/1f32e.png new file mode 100644 index 0000000..10e847a Binary files /dev/null and b/riot/emojione/png/1f32e.png differ diff --git a/riot/emojione/png/1f32f.png b/riot/emojione/png/1f32f.png new file mode 100644 index 0000000..02bd560 Binary files /dev/null and b/riot/emojione/png/1f32f.png differ diff --git a/riot/emojione/png/1f330.png b/riot/emojione/png/1f330.png new file mode 100644 index 0000000..e9fb404 Binary files /dev/null and b/riot/emojione/png/1f330.png differ diff --git a/riot/emojione/png/1f331.png b/riot/emojione/png/1f331.png new file mode 100644 index 0000000..ae0948b Binary files /dev/null and b/riot/emojione/png/1f331.png differ diff --git a/riot/emojione/png/1f332.png b/riot/emojione/png/1f332.png new file mode 100644 index 0000000..f679d8d Binary files /dev/null and b/riot/emojione/png/1f332.png differ diff --git a/riot/emojione/png/1f333.png b/riot/emojione/png/1f333.png new file mode 100644 index 0000000..785fc1c Binary files /dev/null and b/riot/emojione/png/1f333.png differ diff --git a/riot/emojione/png/1f334.png b/riot/emojione/png/1f334.png new file mode 100644 index 0000000..4bbb10f Binary files /dev/null and b/riot/emojione/png/1f334.png differ diff --git a/riot/emojione/png/1f335.png b/riot/emojione/png/1f335.png new file mode 100644 index 0000000..9b48ccf Binary files /dev/null and b/riot/emojione/png/1f335.png differ diff --git a/riot/emojione/png/1f336.png b/riot/emojione/png/1f336.png new file mode 100644 index 0000000..266675b Binary files /dev/null and b/riot/emojione/png/1f336.png differ diff --git a/riot/emojione/png/1f337.png b/riot/emojione/png/1f337.png new file mode 100644 index 0000000..f799d75 Binary files /dev/null and b/riot/emojione/png/1f337.png differ diff --git a/riot/emojione/png/1f338.png b/riot/emojione/png/1f338.png new file mode 100644 index 0000000..282f3e7 Binary files /dev/null and b/riot/emojione/png/1f338.png differ diff --git a/riot/emojione/png/1f339.png b/riot/emojione/png/1f339.png new file mode 100644 index 0000000..52c286d Binary files /dev/null and b/riot/emojione/png/1f339.png differ diff --git a/riot/emojione/png/1f33a.png b/riot/emojione/png/1f33a.png new file mode 100644 index 0000000..39dd352 Binary files /dev/null and b/riot/emojione/png/1f33a.png differ diff --git a/riot/emojione/png/1f33b.png b/riot/emojione/png/1f33b.png new file mode 100644 index 0000000..08cc077 Binary files /dev/null and b/riot/emojione/png/1f33b.png differ diff --git a/riot/emojione/png/1f33c.png b/riot/emojione/png/1f33c.png new file mode 100644 index 0000000..4083026 Binary files /dev/null and b/riot/emojione/png/1f33c.png differ diff --git a/riot/emojione/png/1f33d.png b/riot/emojione/png/1f33d.png new file mode 100644 index 0000000..36e2012 Binary files /dev/null and b/riot/emojione/png/1f33d.png differ diff --git a/riot/emojione/png/1f33e.png b/riot/emojione/png/1f33e.png new file mode 100644 index 0000000..3564d9d Binary files /dev/null and b/riot/emojione/png/1f33e.png differ diff --git a/riot/emojione/png/1f33f.png b/riot/emojione/png/1f33f.png new file mode 100644 index 0000000..d984d15 Binary files /dev/null and b/riot/emojione/png/1f33f.png differ diff --git a/riot/emojione/png/1f340.png b/riot/emojione/png/1f340.png new file mode 100644 index 0000000..fdedfcc Binary files /dev/null and b/riot/emojione/png/1f340.png differ diff --git a/riot/emojione/png/1f341.png b/riot/emojione/png/1f341.png new file mode 100644 index 0000000..c49acea Binary files /dev/null and b/riot/emojione/png/1f341.png differ diff --git a/riot/emojione/png/1f342.png b/riot/emojione/png/1f342.png new file mode 100644 index 0000000..0d60e7b Binary files /dev/null and b/riot/emojione/png/1f342.png differ diff --git a/riot/emojione/png/1f343.png b/riot/emojione/png/1f343.png new file mode 100644 index 0000000..1e43e1a Binary files /dev/null and b/riot/emojione/png/1f343.png differ diff --git a/riot/emojione/png/1f344.png b/riot/emojione/png/1f344.png new file mode 100644 index 0000000..dd85742 Binary files /dev/null and b/riot/emojione/png/1f344.png differ diff --git a/riot/emojione/png/1f345.png b/riot/emojione/png/1f345.png new file mode 100644 index 0000000..497da8f Binary files /dev/null and b/riot/emojione/png/1f345.png differ diff --git a/riot/emojione/png/1f346.png b/riot/emojione/png/1f346.png new file mode 100644 index 0000000..fafd7c1 Binary files /dev/null and b/riot/emojione/png/1f346.png differ diff --git a/riot/emojione/png/1f347.png b/riot/emojione/png/1f347.png new file mode 100644 index 0000000..30d2221 Binary files /dev/null and b/riot/emojione/png/1f347.png differ diff --git a/riot/emojione/png/1f348.png b/riot/emojione/png/1f348.png new file mode 100644 index 0000000..c01232d Binary files /dev/null and b/riot/emojione/png/1f348.png differ diff --git a/riot/emojione/png/1f349.png b/riot/emojione/png/1f349.png new file mode 100644 index 0000000..0761488 Binary files /dev/null and b/riot/emojione/png/1f349.png differ diff --git a/riot/emojione/png/1f34a.png b/riot/emojione/png/1f34a.png new file mode 100644 index 0000000..ab14e53 Binary files /dev/null and b/riot/emojione/png/1f34a.png differ diff --git a/riot/emojione/png/1f34b.png b/riot/emojione/png/1f34b.png new file mode 100644 index 0000000..9a7d95c Binary files /dev/null and b/riot/emojione/png/1f34b.png differ diff --git a/riot/emojione/png/1f34c.png b/riot/emojione/png/1f34c.png new file mode 100644 index 0000000..f498727 Binary files /dev/null and b/riot/emojione/png/1f34c.png differ diff --git a/riot/emojione/png/1f34d.png b/riot/emojione/png/1f34d.png new file mode 100644 index 0000000..c89a160 Binary files /dev/null and b/riot/emojione/png/1f34d.png differ diff --git a/riot/emojione/png/1f34e.png b/riot/emojione/png/1f34e.png new file mode 100644 index 0000000..da650c6 Binary files /dev/null and b/riot/emojione/png/1f34e.png differ diff --git a/riot/emojione/png/1f34f.png b/riot/emojione/png/1f34f.png new file mode 100644 index 0000000..5fd51bd Binary files /dev/null and b/riot/emojione/png/1f34f.png differ diff --git a/riot/emojione/png/1f350.png b/riot/emojione/png/1f350.png new file mode 100644 index 0000000..3869f71 Binary files /dev/null and b/riot/emojione/png/1f350.png differ diff --git a/riot/emojione/png/1f351.png b/riot/emojione/png/1f351.png new file mode 100644 index 0000000..9ab57cb Binary files /dev/null and b/riot/emojione/png/1f351.png differ diff --git a/riot/emojione/png/1f352.png b/riot/emojione/png/1f352.png new file mode 100644 index 0000000..9b10cba Binary files /dev/null and b/riot/emojione/png/1f352.png differ diff --git a/riot/emojione/png/1f353.png b/riot/emojione/png/1f353.png new file mode 100644 index 0000000..7bb86f0 Binary files /dev/null and b/riot/emojione/png/1f353.png differ diff --git a/riot/emojione/png/1f354.png b/riot/emojione/png/1f354.png new file mode 100644 index 0000000..3573b28 Binary files /dev/null and b/riot/emojione/png/1f354.png differ diff --git a/riot/emojione/png/1f355.png b/riot/emojione/png/1f355.png new file mode 100644 index 0000000..e07365c Binary files /dev/null and b/riot/emojione/png/1f355.png differ diff --git a/riot/emojione/png/1f356.png b/riot/emojione/png/1f356.png new file mode 100644 index 0000000..b20a59d Binary files /dev/null and b/riot/emojione/png/1f356.png differ diff --git a/riot/emojione/png/1f357.png b/riot/emojione/png/1f357.png new file mode 100644 index 0000000..eea4a53 Binary files /dev/null and b/riot/emojione/png/1f357.png differ diff --git a/riot/emojione/png/1f358.png b/riot/emojione/png/1f358.png new file mode 100644 index 0000000..7fbd08e Binary files /dev/null and b/riot/emojione/png/1f358.png differ diff --git a/riot/emojione/png/1f359.png b/riot/emojione/png/1f359.png new file mode 100644 index 0000000..d3d8ee2 Binary files /dev/null and b/riot/emojione/png/1f359.png differ diff --git a/riot/emojione/png/1f35a.png b/riot/emojione/png/1f35a.png new file mode 100644 index 0000000..6e3ac79 Binary files /dev/null and b/riot/emojione/png/1f35a.png differ diff --git a/riot/emojione/png/1f35b.png b/riot/emojione/png/1f35b.png new file mode 100644 index 0000000..69657ca Binary files /dev/null and b/riot/emojione/png/1f35b.png differ diff --git a/riot/emojione/png/1f35c.png b/riot/emojione/png/1f35c.png new file mode 100644 index 0000000..c1cb7cd Binary files /dev/null and b/riot/emojione/png/1f35c.png differ diff --git a/riot/emojione/png/1f35d.png b/riot/emojione/png/1f35d.png new file mode 100644 index 0000000..89c24a3 Binary files /dev/null and b/riot/emojione/png/1f35d.png differ diff --git a/riot/emojione/png/1f35e.png b/riot/emojione/png/1f35e.png new file mode 100644 index 0000000..6676510 Binary files /dev/null and b/riot/emojione/png/1f35e.png differ diff --git a/riot/emojione/png/1f35f.png b/riot/emojione/png/1f35f.png new file mode 100644 index 0000000..4e2a4ca Binary files /dev/null and b/riot/emojione/png/1f35f.png differ diff --git a/riot/emojione/png/1f360.png b/riot/emojione/png/1f360.png new file mode 100644 index 0000000..92a425f Binary files /dev/null and b/riot/emojione/png/1f360.png differ diff --git a/riot/emojione/png/1f361.png b/riot/emojione/png/1f361.png new file mode 100644 index 0000000..f73f37b Binary files /dev/null and b/riot/emojione/png/1f361.png differ diff --git a/riot/emojione/png/1f362.png b/riot/emojione/png/1f362.png new file mode 100644 index 0000000..d38a849 Binary files /dev/null and b/riot/emojione/png/1f362.png differ diff --git a/riot/emojione/png/1f363.png b/riot/emojione/png/1f363.png new file mode 100644 index 0000000..f171fd2 Binary files /dev/null and b/riot/emojione/png/1f363.png differ diff --git a/riot/emojione/png/1f364.png b/riot/emojione/png/1f364.png new file mode 100644 index 0000000..752ba7f Binary files /dev/null and b/riot/emojione/png/1f364.png differ diff --git a/riot/emojione/png/1f365.png b/riot/emojione/png/1f365.png new file mode 100644 index 0000000..157bded Binary files /dev/null and b/riot/emojione/png/1f365.png differ diff --git a/riot/emojione/png/1f366.png b/riot/emojione/png/1f366.png new file mode 100644 index 0000000..8f6546e Binary files /dev/null and b/riot/emojione/png/1f366.png differ diff --git a/riot/emojione/png/1f367.png b/riot/emojione/png/1f367.png new file mode 100644 index 0000000..36dfb53 Binary files /dev/null and b/riot/emojione/png/1f367.png differ diff --git a/riot/emojione/png/1f368.png b/riot/emojione/png/1f368.png new file mode 100644 index 0000000..94267b9 Binary files /dev/null and b/riot/emojione/png/1f368.png differ diff --git a/riot/emojione/png/1f369.png b/riot/emojione/png/1f369.png new file mode 100644 index 0000000..0ca4cd0 Binary files /dev/null and b/riot/emojione/png/1f369.png differ diff --git a/riot/emojione/png/1f36a.png b/riot/emojione/png/1f36a.png new file mode 100644 index 0000000..1b6bcb1 Binary files /dev/null and b/riot/emojione/png/1f36a.png differ diff --git a/riot/emojione/png/1f36b.png b/riot/emojione/png/1f36b.png new file mode 100644 index 0000000..318bbd4 Binary files /dev/null and b/riot/emojione/png/1f36b.png differ diff --git a/riot/emojione/png/1f36c.png b/riot/emojione/png/1f36c.png new file mode 100644 index 0000000..8c67ace Binary files /dev/null and b/riot/emojione/png/1f36c.png differ diff --git a/riot/emojione/png/1f36d.png b/riot/emojione/png/1f36d.png new file mode 100644 index 0000000..ad76d7b Binary files /dev/null and b/riot/emojione/png/1f36d.png differ diff --git a/riot/emojione/png/1f36e.png b/riot/emojione/png/1f36e.png new file mode 100644 index 0000000..fa3df67 Binary files /dev/null and b/riot/emojione/png/1f36e.png differ diff --git a/riot/emojione/png/1f36f.png b/riot/emojione/png/1f36f.png new file mode 100644 index 0000000..9d8f592 Binary files /dev/null and b/riot/emojione/png/1f36f.png differ diff --git a/riot/emojione/png/1f370.png b/riot/emojione/png/1f370.png new file mode 100644 index 0000000..4368177 Binary files /dev/null and b/riot/emojione/png/1f370.png differ diff --git a/riot/emojione/png/1f371.png b/riot/emojione/png/1f371.png new file mode 100644 index 0000000..83d41ca Binary files /dev/null and b/riot/emojione/png/1f371.png differ diff --git a/riot/emojione/png/1f372.png b/riot/emojione/png/1f372.png new file mode 100644 index 0000000..6b3f010 Binary files /dev/null and b/riot/emojione/png/1f372.png differ diff --git a/riot/emojione/png/1f373.png b/riot/emojione/png/1f373.png new file mode 100644 index 0000000..918c980 Binary files /dev/null and b/riot/emojione/png/1f373.png differ diff --git a/riot/emojione/png/1f374.png b/riot/emojione/png/1f374.png new file mode 100644 index 0000000..09f1fea Binary files /dev/null and b/riot/emojione/png/1f374.png differ diff --git a/riot/emojione/png/1f375.png b/riot/emojione/png/1f375.png new file mode 100644 index 0000000..b53b98f Binary files /dev/null and b/riot/emojione/png/1f375.png differ diff --git a/riot/emojione/png/1f376.png b/riot/emojione/png/1f376.png new file mode 100644 index 0000000..2933f56 Binary files /dev/null and b/riot/emojione/png/1f376.png differ diff --git a/riot/emojione/png/1f377.png b/riot/emojione/png/1f377.png new file mode 100644 index 0000000..3cc9868 Binary files /dev/null and b/riot/emojione/png/1f377.png differ diff --git a/riot/emojione/png/1f378.png b/riot/emojione/png/1f378.png new file mode 100644 index 0000000..2e50c57 Binary files /dev/null and b/riot/emojione/png/1f378.png differ diff --git a/riot/emojione/png/1f379.png b/riot/emojione/png/1f379.png new file mode 100644 index 0000000..cd714f8 Binary files /dev/null and b/riot/emojione/png/1f379.png differ diff --git a/riot/emojione/png/1f37a.png b/riot/emojione/png/1f37a.png new file mode 100644 index 0000000..b6d73dc Binary files /dev/null and b/riot/emojione/png/1f37a.png differ diff --git a/riot/emojione/png/1f37b.png b/riot/emojione/png/1f37b.png new file mode 100644 index 0000000..b55deb6 Binary files /dev/null and b/riot/emojione/png/1f37b.png differ diff --git a/riot/emojione/png/1f37c.png b/riot/emojione/png/1f37c.png new file mode 100644 index 0000000..2bd1052 Binary files /dev/null and b/riot/emojione/png/1f37c.png differ diff --git a/riot/emojione/png/1f37d.png b/riot/emojione/png/1f37d.png new file mode 100644 index 0000000..7411755 Binary files /dev/null and b/riot/emojione/png/1f37d.png differ diff --git a/riot/emojione/png/1f37e.png b/riot/emojione/png/1f37e.png new file mode 100644 index 0000000..285a79a Binary files /dev/null and b/riot/emojione/png/1f37e.png differ diff --git a/riot/emojione/png/1f37f.png b/riot/emojione/png/1f37f.png new file mode 100644 index 0000000..36853e3 Binary files /dev/null and b/riot/emojione/png/1f37f.png differ diff --git a/riot/emojione/png/1f380.png b/riot/emojione/png/1f380.png new file mode 100644 index 0000000..0f253c3 Binary files /dev/null and b/riot/emojione/png/1f380.png differ diff --git a/riot/emojione/png/1f381.png b/riot/emojione/png/1f381.png new file mode 100644 index 0000000..844e216 Binary files /dev/null and b/riot/emojione/png/1f381.png differ diff --git a/riot/emojione/png/1f382.png b/riot/emojione/png/1f382.png new file mode 100644 index 0000000..317e9a4 Binary files /dev/null and b/riot/emojione/png/1f382.png differ diff --git a/riot/emojione/png/1f383.png b/riot/emojione/png/1f383.png new file mode 100644 index 0000000..44c3fc0 Binary files /dev/null and b/riot/emojione/png/1f383.png differ diff --git a/riot/emojione/png/1f384.png b/riot/emojione/png/1f384.png new file mode 100644 index 0000000..4197d37 Binary files /dev/null and b/riot/emojione/png/1f384.png differ diff --git a/riot/emojione/png/1f385-1f3fb.png b/riot/emojione/png/1f385-1f3fb.png new file mode 100644 index 0000000..5233ffb Binary files /dev/null and b/riot/emojione/png/1f385-1f3fb.png differ diff --git a/riot/emojione/png/1f385-1f3fc.png b/riot/emojione/png/1f385-1f3fc.png new file mode 100644 index 0000000..4e84543 Binary files /dev/null and b/riot/emojione/png/1f385-1f3fc.png differ diff --git a/riot/emojione/png/1f385-1f3fd.png b/riot/emojione/png/1f385-1f3fd.png new file mode 100644 index 0000000..7fc4f33 Binary files /dev/null and b/riot/emojione/png/1f385-1f3fd.png differ diff --git a/riot/emojione/png/1f385-1f3fe.png b/riot/emojione/png/1f385-1f3fe.png new file mode 100644 index 0000000..d1d5a15 Binary files /dev/null and b/riot/emojione/png/1f385-1f3fe.png differ diff --git a/riot/emojione/png/1f385-1f3ff.png b/riot/emojione/png/1f385-1f3ff.png new file mode 100644 index 0000000..4d697a0 Binary files /dev/null and b/riot/emojione/png/1f385-1f3ff.png differ diff --git a/riot/emojione/png/1f385.png b/riot/emojione/png/1f385.png new file mode 100644 index 0000000..bc83ab8 Binary files /dev/null and b/riot/emojione/png/1f385.png differ diff --git a/riot/emojione/png/1f386.png b/riot/emojione/png/1f386.png new file mode 100644 index 0000000..176c8b5 Binary files /dev/null and b/riot/emojione/png/1f386.png differ diff --git a/riot/emojione/png/1f387.png b/riot/emojione/png/1f387.png new file mode 100644 index 0000000..30339cd Binary files /dev/null and b/riot/emojione/png/1f387.png differ diff --git a/riot/emojione/png/1f388.png b/riot/emojione/png/1f388.png new file mode 100644 index 0000000..07916fe Binary files /dev/null and b/riot/emojione/png/1f388.png differ diff --git a/riot/emojione/png/1f389.png b/riot/emojione/png/1f389.png new file mode 100644 index 0000000..0244d60 Binary files /dev/null and b/riot/emojione/png/1f389.png differ diff --git a/riot/emojione/png/1f38a.png b/riot/emojione/png/1f38a.png new file mode 100644 index 0000000..ba4fd9b Binary files /dev/null and b/riot/emojione/png/1f38a.png differ diff --git a/riot/emojione/png/1f38b.png b/riot/emojione/png/1f38b.png new file mode 100644 index 0000000..46fcb3a Binary files /dev/null and b/riot/emojione/png/1f38b.png differ diff --git a/riot/emojione/png/1f38c.png b/riot/emojione/png/1f38c.png new file mode 100644 index 0000000..273bd0f Binary files /dev/null and b/riot/emojione/png/1f38c.png differ diff --git a/riot/emojione/png/1f38d.png b/riot/emojione/png/1f38d.png new file mode 100644 index 0000000..5d5e0e7 Binary files /dev/null and b/riot/emojione/png/1f38d.png differ diff --git a/riot/emojione/png/1f38e.png b/riot/emojione/png/1f38e.png new file mode 100644 index 0000000..1095561 Binary files /dev/null and b/riot/emojione/png/1f38e.png differ diff --git a/riot/emojione/png/1f38f.png b/riot/emojione/png/1f38f.png new file mode 100644 index 0000000..3b45103 Binary files /dev/null and b/riot/emojione/png/1f38f.png differ diff --git a/riot/emojione/png/1f390.png b/riot/emojione/png/1f390.png new file mode 100644 index 0000000..3c9ef3a Binary files /dev/null and b/riot/emojione/png/1f390.png differ diff --git a/riot/emojione/png/1f391.png b/riot/emojione/png/1f391.png new file mode 100644 index 0000000..1a28426 Binary files /dev/null and b/riot/emojione/png/1f391.png differ diff --git a/riot/emojione/png/1f392.png b/riot/emojione/png/1f392.png new file mode 100644 index 0000000..9997c86 Binary files /dev/null and b/riot/emojione/png/1f392.png differ diff --git a/riot/emojione/png/1f393.png b/riot/emojione/png/1f393.png new file mode 100644 index 0000000..8b17ddd Binary files /dev/null and b/riot/emojione/png/1f393.png differ diff --git a/riot/emojione/png/1f396.png b/riot/emojione/png/1f396.png new file mode 100644 index 0000000..ecd3fb0 Binary files /dev/null and b/riot/emojione/png/1f396.png differ diff --git a/riot/emojione/png/1f397.png b/riot/emojione/png/1f397.png new file mode 100644 index 0000000..3988bbd Binary files /dev/null and b/riot/emojione/png/1f397.png differ diff --git a/riot/emojione/png/1f399.png b/riot/emojione/png/1f399.png new file mode 100644 index 0000000..cd91676 Binary files /dev/null and b/riot/emojione/png/1f399.png differ diff --git a/riot/emojione/png/1f39a.png b/riot/emojione/png/1f39a.png new file mode 100644 index 0000000..720a3b3 Binary files /dev/null and b/riot/emojione/png/1f39a.png differ diff --git a/riot/emojione/png/1f39b.png b/riot/emojione/png/1f39b.png new file mode 100644 index 0000000..6635ac9 Binary files /dev/null and b/riot/emojione/png/1f39b.png differ diff --git a/riot/emojione/png/1f39e.png b/riot/emojione/png/1f39e.png new file mode 100644 index 0000000..30143ae Binary files /dev/null and b/riot/emojione/png/1f39e.png differ diff --git a/riot/emojione/png/1f39f.png b/riot/emojione/png/1f39f.png new file mode 100644 index 0000000..e510f4a Binary files /dev/null and b/riot/emojione/png/1f39f.png differ diff --git a/riot/emojione/png/1f3a0.png b/riot/emojione/png/1f3a0.png new file mode 100644 index 0000000..a17074e Binary files /dev/null and b/riot/emojione/png/1f3a0.png differ diff --git a/riot/emojione/png/1f3a1.png b/riot/emojione/png/1f3a1.png new file mode 100644 index 0000000..55c8ff0 Binary files /dev/null and b/riot/emojione/png/1f3a1.png differ diff --git a/riot/emojione/png/1f3a2.png b/riot/emojione/png/1f3a2.png new file mode 100644 index 0000000..5b849e0 Binary files /dev/null and b/riot/emojione/png/1f3a2.png differ diff --git a/riot/emojione/png/1f3a3.png b/riot/emojione/png/1f3a3.png new file mode 100644 index 0000000..dfcdf07 Binary files /dev/null and b/riot/emojione/png/1f3a3.png differ diff --git a/riot/emojione/png/1f3a4.png b/riot/emojione/png/1f3a4.png new file mode 100644 index 0000000..d4e6b0d Binary files /dev/null and b/riot/emojione/png/1f3a4.png differ diff --git a/riot/emojione/png/1f3a5.png b/riot/emojione/png/1f3a5.png new file mode 100644 index 0000000..4e73b13 Binary files /dev/null and b/riot/emojione/png/1f3a5.png differ diff --git a/riot/emojione/png/1f3a6.png b/riot/emojione/png/1f3a6.png new file mode 100644 index 0000000..65f27b3 Binary files /dev/null and b/riot/emojione/png/1f3a6.png differ diff --git a/riot/emojione/png/1f3a7.png b/riot/emojione/png/1f3a7.png new file mode 100644 index 0000000..e9fd340 Binary files /dev/null and b/riot/emojione/png/1f3a7.png differ diff --git a/riot/emojione/png/1f3a8.png b/riot/emojione/png/1f3a8.png new file mode 100644 index 0000000..bd6afe9 Binary files /dev/null and b/riot/emojione/png/1f3a8.png differ diff --git a/riot/emojione/png/1f3a9.png b/riot/emojione/png/1f3a9.png new file mode 100644 index 0000000..131b657 Binary files /dev/null and b/riot/emojione/png/1f3a9.png differ diff --git a/riot/emojione/png/1f3aa.png b/riot/emojione/png/1f3aa.png new file mode 100644 index 0000000..b037977 Binary files /dev/null and b/riot/emojione/png/1f3aa.png differ diff --git a/riot/emojione/png/1f3ab.png b/riot/emojione/png/1f3ab.png new file mode 100644 index 0000000..605936b Binary files /dev/null and b/riot/emojione/png/1f3ab.png differ diff --git a/riot/emojione/png/1f3ac.png b/riot/emojione/png/1f3ac.png new file mode 100644 index 0000000..8139088 Binary files /dev/null and b/riot/emojione/png/1f3ac.png differ diff --git a/riot/emojione/png/1f3ad.png b/riot/emojione/png/1f3ad.png new file mode 100644 index 0000000..685441f Binary files /dev/null and b/riot/emojione/png/1f3ad.png differ diff --git a/riot/emojione/png/1f3ae.png b/riot/emojione/png/1f3ae.png new file mode 100644 index 0000000..316a910 Binary files /dev/null and b/riot/emojione/png/1f3ae.png differ diff --git a/riot/emojione/png/1f3af.png b/riot/emojione/png/1f3af.png new file mode 100644 index 0000000..f6704ae Binary files /dev/null and b/riot/emojione/png/1f3af.png differ diff --git a/riot/emojione/png/1f3b0.png b/riot/emojione/png/1f3b0.png new file mode 100644 index 0000000..ee71b6c Binary files /dev/null and b/riot/emojione/png/1f3b0.png differ diff --git a/riot/emojione/png/1f3b1.png b/riot/emojione/png/1f3b1.png new file mode 100644 index 0000000..38ca662 Binary files /dev/null and b/riot/emojione/png/1f3b1.png differ diff --git a/riot/emojione/png/1f3b2.png b/riot/emojione/png/1f3b2.png new file mode 100644 index 0000000..ad3626f Binary files /dev/null and b/riot/emojione/png/1f3b2.png differ diff --git a/riot/emojione/png/1f3b3.png b/riot/emojione/png/1f3b3.png new file mode 100644 index 0000000..63add89 Binary files /dev/null and b/riot/emojione/png/1f3b3.png differ diff --git a/riot/emojione/png/1f3b4.png b/riot/emojione/png/1f3b4.png new file mode 100644 index 0000000..6766b04 Binary files /dev/null and b/riot/emojione/png/1f3b4.png differ diff --git a/riot/emojione/png/1f3b5.png b/riot/emojione/png/1f3b5.png new file mode 100644 index 0000000..06691ef Binary files /dev/null and b/riot/emojione/png/1f3b5.png differ diff --git a/riot/emojione/png/1f3b6.png b/riot/emojione/png/1f3b6.png new file mode 100644 index 0000000..57d499a Binary files /dev/null and b/riot/emojione/png/1f3b6.png differ diff --git a/riot/emojione/png/1f3b7.png b/riot/emojione/png/1f3b7.png new file mode 100644 index 0000000..a392fae Binary files /dev/null and b/riot/emojione/png/1f3b7.png differ diff --git a/riot/emojione/png/1f3b8.png b/riot/emojione/png/1f3b8.png new file mode 100644 index 0000000..43d752f Binary files /dev/null and b/riot/emojione/png/1f3b8.png differ diff --git a/riot/emojione/png/1f3b9.png b/riot/emojione/png/1f3b9.png new file mode 100644 index 0000000..442b745 Binary files /dev/null and b/riot/emojione/png/1f3b9.png differ diff --git a/riot/emojione/png/1f3ba.png b/riot/emojione/png/1f3ba.png new file mode 100644 index 0000000..864ccbc Binary files /dev/null and b/riot/emojione/png/1f3ba.png differ diff --git a/riot/emojione/png/1f3bb.png b/riot/emojione/png/1f3bb.png new file mode 100644 index 0000000..e1e76cc Binary files /dev/null and b/riot/emojione/png/1f3bb.png differ diff --git a/riot/emojione/png/1f3bc.png b/riot/emojione/png/1f3bc.png new file mode 100644 index 0000000..47dc05a Binary files /dev/null and b/riot/emojione/png/1f3bc.png differ diff --git a/riot/emojione/png/1f3bd.png b/riot/emojione/png/1f3bd.png new file mode 100644 index 0000000..6d83c06 Binary files /dev/null and b/riot/emojione/png/1f3bd.png differ diff --git a/riot/emojione/png/1f3be.png b/riot/emojione/png/1f3be.png new file mode 100644 index 0000000..7e68ba8 Binary files /dev/null and b/riot/emojione/png/1f3be.png differ diff --git a/riot/emojione/png/1f3bf.png b/riot/emojione/png/1f3bf.png new file mode 100644 index 0000000..4a2d2c1 Binary files /dev/null and b/riot/emojione/png/1f3bf.png differ diff --git a/riot/emojione/png/1f3c0.png b/riot/emojione/png/1f3c0.png new file mode 100644 index 0000000..64c76b7 Binary files /dev/null and b/riot/emojione/png/1f3c0.png differ diff --git a/riot/emojione/png/1f3c1.png b/riot/emojione/png/1f3c1.png new file mode 100644 index 0000000..5a71eec Binary files /dev/null and b/riot/emojione/png/1f3c1.png differ diff --git a/riot/emojione/png/1f3c2.png b/riot/emojione/png/1f3c2.png new file mode 100644 index 0000000..6361c0f Binary files /dev/null and b/riot/emojione/png/1f3c2.png differ diff --git a/riot/emojione/png/1f3c3-1f3fb.png b/riot/emojione/png/1f3c3-1f3fb.png new file mode 100644 index 0000000..9355239 Binary files /dev/null and b/riot/emojione/png/1f3c3-1f3fb.png differ diff --git a/riot/emojione/png/1f3c3-1f3fc.png b/riot/emojione/png/1f3c3-1f3fc.png new file mode 100644 index 0000000..6112fd5 Binary files /dev/null and b/riot/emojione/png/1f3c3-1f3fc.png differ diff --git a/riot/emojione/png/1f3c3-1f3fd.png b/riot/emojione/png/1f3c3-1f3fd.png new file mode 100644 index 0000000..625ec70 Binary files /dev/null and b/riot/emojione/png/1f3c3-1f3fd.png differ diff --git a/riot/emojione/png/1f3c3-1f3fe.png b/riot/emojione/png/1f3c3-1f3fe.png new file mode 100644 index 0000000..242f1b5 Binary files /dev/null and b/riot/emojione/png/1f3c3-1f3fe.png differ diff --git a/riot/emojione/png/1f3c3-1f3ff.png b/riot/emojione/png/1f3c3-1f3ff.png new file mode 100644 index 0000000..2976c6f Binary files /dev/null and b/riot/emojione/png/1f3c3-1f3ff.png differ diff --git a/riot/emojione/png/1f3c3.png b/riot/emojione/png/1f3c3.png new file mode 100644 index 0000000..e914915 Binary files /dev/null and b/riot/emojione/png/1f3c3.png differ diff --git a/riot/emojione/png/1f3c4-1f3fb.png b/riot/emojione/png/1f3c4-1f3fb.png new file mode 100644 index 0000000..b5faaa5 Binary files /dev/null and b/riot/emojione/png/1f3c4-1f3fb.png differ diff --git a/riot/emojione/png/1f3c4-1f3fc.png b/riot/emojione/png/1f3c4-1f3fc.png new file mode 100644 index 0000000..6d92e41 Binary files /dev/null and b/riot/emojione/png/1f3c4-1f3fc.png differ diff --git a/riot/emojione/png/1f3c4-1f3fd.png b/riot/emojione/png/1f3c4-1f3fd.png new file mode 100644 index 0000000..f05ef59 Binary files /dev/null and b/riot/emojione/png/1f3c4-1f3fd.png differ diff --git a/riot/emojione/png/1f3c4-1f3fe.png b/riot/emojione/png/1f3c4-1f3fe.png new file mode 100644 index 0000000..35e143d Binary files /dev/null and b/riot/emojione/png/1f3c4-1f3fe.png differ diff --git a/riot/emojione/png/1f3c4-1f3ff.png b/riot/emojione/png/1f3c4-1f3ff.png new file mode 100644 index 0000000..3891765 Binary files /dev/null and b/riot/emojione/png/1f3c4-1f3ff.png differ diff --git a/riot/emojione/png/1f3c4.png b/riot/emojione/png/1f3c4.png new file mode 100644 index 0000000..3ab017a Binary files /dev/null and b/riot/emojione/png/1f3c4.png differ diff --git a/riot/emojione/png/1f3c5.png b/riot/emojione/png/1f3c5.png new file mode 100644 index 0000000..b85896b Binary files /dev/null and b/riot/emojione/png/1f3c5.png differ diff --git a/riot/emojione/png/1f3c6.png b/riot/emojione/png/1f3c6.png new file mode 100644 index 0000000..ac2895c Binary files /dev/null and b/riot/emojione/png/1f3c6.png differ diff --git a/riot/emojione/png/1f3c7-1f3fb.png b/riot/emojione/png/1f3c7-1f3fb.png new file mode 100644 index 0000000..e9bf409 Binary files /dev/null and b/riot/emojione/png/1f3c7-1f3fb.png differ diff --git a/riot/emojione/png/1f3c7-1f3fc.png b/riot/emojione/png/1f3c7-1f3fc.png new file mode 100644 index 0000000..031bbc3 Binary files /dev/null and b/riot/emojione/png/1f3c7-1f3fc.png differ diff --git a/riot/emojione/png/1f3c7-1f3fd.png b/riot/emojione/png/1f3c7-1f3fd.png new file mode 100644 index 0000000..b40ef89 Binary files /dev/null and b/riot/emojione/png/1f3c7-1f3fd.png differ diff --git a/riot/emojione/png/1f3c7-1f3fe.png b/riot/emojione/png/1f3c7-1f3fe.png new file mode 100644 index 0000000..e286cb8 Binary files /dev/null and b/riot/emojione/png/1f3c7-1f3fe.png differ diff --git a/riot/emojione/png/1f3c7-1f3ff.png b/riot/emojione/png/1f3c7-1f3ff.png new file mode 100644 index 0000000..453c51c Binary files /dev/null and b/riot/emojione/png/1f3c7-1f3ff.png differ diff --git a/riot/emojione/png/1f3c7.png b/riot/emojione/png/1f3c7.png new file mode 100644 index 0000000..addf9ed Binary files /dev/null and b/riot/emojione/png/1f3c7.png differ diff --git a/riot/emojione/png/1f3c8.png b/riot/emojione/png/1f3c8.png new file mode 100644 index 0000000..10366f4 Binary files /dev/null and b/riot/emojione/png/1f3c8.png differ diff --git a/riot/emojione/png/1f3c9.png b/riot/emojione/png/1f3c9.png new file mode 100644 index 0000000..b187227 Binary files /dev/null and b/riot/emojione/png/1f3c9.png differ diff --git a/riot/emojione/png/1f3ca-1f3fb.png b/riot/emojione/png/1f3ca-1f3fb.png new file mode 100644 index 0000000..38441c9 Binary files /dev/null and b/riot/emojione/png/1f3ca-1f3fb.png differ diff --git a/riot/emojione/png/1f3ca-1f3fc.png b/riot/emojione/png/1f3ca-1f3fc.png new file mode 100644 index 0000000..b0d4311 Binary files /dev/null and b/riot/emojione/png/1f3ca-1f3fc.png differ diff --git a/riot/emojione/png/1f3ca-1f3fd.png b/riot/emojione/png/1f3ca-1f3fd.png new file mode 100644 index 0000000..211e77e Binary files /dev/null and b/riot/emojione/png/1f3ca-1f3fd.png differ diff --git a/riot/emojione/png/1f3ca-1f3fe.png b/riot/emojione/png/1f3ca-1f3fe.png new file mode 100644 index 0000000..f34c34d Binary files /dev/null and b/riot/emojione/png/1f3ca-1f3fe.png differ diff --git a/riot/emojione/png/1f3ca-1f3ff.png b/riot/emojione/png/1f3ca-1f3ff.png new file mode 100644 index 0000000..3e9231f Binary files /dev/null and b/riot/emojione/png/1f3ca-1f3ff.png differ diff --git a/riot/emojione/png/1f3ca.png b/riot/emojione/png/1f3ca.png new file mode 100644 index 0000000..55b4d72 Binary files /dev/null and b/riot/emojione/png/1f3ca.png differ diff --git a/riot/emojione/png/1f3cb-1f3fb.png b/riot/emojione/png/1f3cb-1f3fb.png new file mode 100644 index 0000000..febaad1 Binary files /dev/null and b/riot/emojione/png/1f3cb-1f3fb.png differ diff --git a/riot/emojione/png/1f3cb-1f3fc.png b/riot/emojione/png/1f3cb-1f3fc.png new file mode 100644 index 0000000..27ae794 Binary files /dev/null and b/riot/emojione/png/1f3cb-1f3fc.png differ diff --git a/riot/emojione/png/1f3cb-1f3fd.png b/riot/emojione/png/1f3cb-1f3fd.png new file mode 100644 index 0000000..45c4c22 Binary files /dev/null and b/riot/emojione/png/1f3cb-1f3fd.png differ diff --git a/riot/emojione/png/1f3cb-1f3fe.png b/riot/emojione/png/1f3cb-1f3fe.png new file mode 100644 index 0000000..67dd21d Binary files /dev/null and b/riot/emojione/png/1f3cb-1f3fe.png differ diff --git a/riot/emojione/png/1f3cb-1f3ff.png b/riot/emojione/png/1f3cb-1f3ff.png new file mode 100644 index 0000000..fa01520 Binary files /dev/null and b/riot/emojione/png/1f3cb-1f3ff.png differ diff --git a/riot/emojione/png/1f3cb.png b/riot/emojione/png/1f3cb.png new file mode 100644 index 0000000..afdeaa4 Binary files /dev/null and b/riot/emojione/png/1f3cb.png differ diff --git a/riot/emojione/png/1f3cc.png b/riot/emojione/png/1f3cc.png new file mode 100644 index 0000000..39c552d Binary files /dev/null and b/riot/emojione/png/1f3cc.png differ diff --git a/riot/emojione/png/1f3cd.png b/riot/emojione/png/1f3cd.png new file mode 100644 index 0000000..3d1d567 Binary files /dev/null and b/riot/emojione/png/1f3cd.png differ diff --git a/riot/emojione/png/1f3ce.png b/riot/emojione/png/1f3ce.png new file mode 100644 index 0000000..fe3f045 Binary files /dev/null and b/riot/emojione/png/1f3ce.png differ diff --git a/riot/emojione/png/1f3cf.png b/riot/emojione/png/1f3cf.png new file mode 100644 index 0000000..d602294 Binary files /dev/null and b/riot/emojione/png/1f3cf.png differ diff --git a/riot/emojione/png/1f3d0.png b/riot/emojione/png/1f3d0.png new file mode 100644 index 0000000..7a0e49d Binary files /dev/null and b/riot/emojione/png/1f3d0.png differ diff --git a/riot/emojione/png/1f3d1.png b/riot/emojione/png/1f3d1.png new file mode 100644 index 0000000..8396377 Binary files /dev/null and b/riot/emojione/png/1f3d1.png differ diff --git a/riot/emojione/png/1f3d2.png b/riot/emojione/png/1f3d2.png new file mode 100644 index 0000000..be94e9c Binary files /dev/null and b/riot/emojione/png/1f3d2.png differ diff --git a/riot/emojione/png/1f3d3.png b/riot/emojione/png/1f3d3.png new file mode 100644 index 0000000..ff3c517 Binary files /dev/null and b/riot/emojione/png/1f3d3.png differ diff --git a/riot/emojione/png/1f3d4.png b/riot/emojione/png/1f3d4.png new file mode 100644 index 0000000..76e1cfd Binary files /dev/null and b/riot/emojione/png/1f3d4.png differ diff --git a/riot/emojione/png/1f3d5.png b/riot/emojione/png/1f3d5.png new file mode 100644 index 0000000..d589cc1 Binary files /dev/null and b/riot/emojione/png/1f3d5.png differ diff --git a/riot/emojione/png/1f3d6.png b/riot/emojione/png/1f3d6.png new file mode 100644 index 0000000..69108c8 Binary files /dev/null and b/riot/emojione/png/1f3d6.png differ diff --git a/riot/emojione/png/1f3d7.png b/riot/emojione/png/1f3d7.png new file mode 100644 index 0000000..8206a20 Binary files /dev/null and b/riot/emojione/png/1f3d7.png differ diff --git a/riot/emojione/png/1f3d8.png b/riot/emojione/png/1f3d8.png new file mode 100644 index 0000000..6ab4a2a Binary files /dev/null and b/riot/emojione/png/1f3d8.png differ diff --git a/riot/emojione/png/1f3d9.png b/riot/emojione/png/1f3d9.png new file mode 100644 index 0000000..d7b9844 Binary files /dev/null and b/riot/emojione/png/1f3d9.png differ diff --git a/riot/emojione/png/1f3da.png b/riot/emojione/png/1f3da.png new file mode 100644 index 0000000..c55e81d Binary files /dev/null and b/riot/emojione/png/1f3da.png differ diff --git a/riot/emojione/png/1f3db.png b/riot/emojione/png/1f3db.png new file mode 100644 index 0000000..de7b559 Binary files /dev/null and b/riot/emojione/png/1f3db.png differ diff --git a/riot/emojione/png/1f3dc.png b/riot/emojione/png/1f3dc.png new file mode 100644 index 0000000..e9966ff Binary files /dev/null and b/riot/emojione/png/1f3dc.png differ diff --git a/riot/emojione/png/1f3dd.png b/riot/emojione/png/1f3dd.png new file mode 100644 index 0000000..7fd8343 Binary files /dev/null and b/riot/emojione/png/1f3dd.png differ diff --git a/riot/emojione/png/1f3de.png b/riot/emojione/png/1f3de.png new file mode 100644 index 0000000..63ec701 Binary files /dev/null and b/riot/emojione/png/1f3de.png differ diff --git a/riot/emojione/png/1f3df.png b/riot/emojione/png/1f3df.png new file mode 100644 index 0000000..00cd6db Binary files /dev/null and b/riot/emojione/png/1f3df.png differ diff --git a/riot/emojione/png/1f3e0.png b/riot/emojione/png/1f3e0.png new file mode 100644 index 0000000..01c98a0 Binary files /dev/null and b/riot/emojione/png/1f3e0.png differ diff --git a/riot/emojione/png/1f3e1.png b/riot/emojione/png/1f3e1.png new file mode 100644 index 0000000..0aae415 Binary files /dev/null and b/riot/emojione/png/1f3e1.png differ diff --git a/riot/emojione/png/1f3e2.png b/riot/emojione/png/1f3e2.png new file mode 100644 index 0000000..7eee927 Binary files /dev/null and b/riot/emojione/png/1f3e2.png differ diff --git a/riot/emojione/png/1f3e3.png b/riot/emojione/png/1f3e3.png new file mode 100644 index 0000000..a23848f Binary files /dev/null and b/riot/emojione/png/1f3e3.png differ diff --git a/riot/emojione/png/1f3e4.png b/riot/emojione/png/1f3e4.png new file mode 100644 index 0000000..3745aff Binary files /dev/null and b/riot/emojione/png/1f3e4.png differ diff --git a/riot/emojione/png/1f3e5.png b/riot/emojione/png/1f3e5.png new file mode 100644 index 0000000..1cbce4a Binary files /dev/null and b/riot/emojione/png/1f3e5.png differ diff --git a/riot/emojione/png/1f3e6.png b/riot/emojione/png/1f3e6.png new file mode 100644 index 0000000..dffdcef Binary files /dev/null and b/riot/emojione/png/1f3e6.png differ diff --git a/riot/emojione/png/1f3e7.png b/riot/emojione/png/1f3e7.png new file mode 100644 index 0000000..4d93530 Binary files /dev/null and b/riot/emojione/png/1f3e7.png differ diff --git a/riot/emojione/png/1f3e8.png b/riot/emojione/png/1f3e8.png new file mode 100644 index 0000000..ea8f4c4 Binary files /dev/null and b/riot/emojione/png/1f3e8.png differ diff --git a/riot/emojione/png/1f3e9.png b/riot/emojione/png/1f3e9.png new file mode 100644 index 0000000..5e136be Binary files /dev/null and b/riot/emojione/png/1f3e9.png differ diff --git a/riot/emojione/png/1f3ea.png b/riot/emojione/png/1f3ea.png new file mode 100644 index 0000000..26b53b5 Binary files /dev/null and b/riot/emojione/png/1f3ea.png differ diff --git a/riot/emojione/png/1f3eb.png b/riot/emojione/png/1f3eb.png new file mode 100644 index 0000000..2697595 Binary files /dev/null and b/riot/emojione/png/1f3eb.png differ diff --git a/riot/emojione/png/1f3ec.png b/riot/emojione/png/1f3ec.png new file mode 100644 index 0000000..58867c7 Binary files /dev/null and b/riot/emojione/png/1f3ec.png differ diff --git a/riot/emojione/png/1f3ed.png b/riot/emojione/png/1f3ed.png new file mode 100644 index 0000000..e1d2ddf Binary files /dev/null and b/riot/emojione/png/1f3ed.png differ diff --git a/riot/emojione/png/1f3ee.png b/riot/emojione/png/1f3ee.png new file mode 100644 index 0000000..dfd933f Binary files /dev/null and b/riot/emojione/png/1f3ee.png differ diff --git a/riot/emojione/png/1f3ef.png b/riot/emojione/png/1f3ef.png new file mode 100644 index 0000000..64b4e33 Binary files /dev/null and b/riot/emojione/png/1f3ef.png differ diff --git a/riot/emojione/png/1f3f0.png b/riot/emojione/png/1f3f0.png new file mode 100644 index 0000000..888d113 Binary files /dev/null and b/riot/emojione/png/1f3f0.png differ diff --git a/riot/emojione/png/1f3f3-1f308.png b/riot/emojione/png/1f3f3-1f308.png new file mode 100644 index 0000000..1bec5f2 Binary files /dev/null and b/riot/emojione/png/1f3f3-1f308.png differ diff --git a/riot/emojione/png/1f3f3.png b/riot/emojione/png/1f3f3.png new file mode 100644 index 0000000..86d6e96 Binary files /dev/null and b/riot/emojione/png/1f3f3.png differ diff --git a/riot/emojione/png/1f3f4.png b/riot/emojione/png/1f3f4.png new file mode 100644 index 0000000..0e28d05 Binary files /dev/null and b/riot/emojione/png/1f3f4.png differ diff --git a/riot/emojione/png/1f3f5.png b/riot/emojione/png/1f3f5.png new file mode 100644 index 0000000..8030e49 Binary files /dev/null and b/riot/emojione/png/1f3f5.png differ diff --git a/riot/emojione/png/1f3f7.png b/riot/emojione/png/1f3f7.png new file mode 100644 index 0000000..d41c9b4 Binary files /dev/null and b/riot/emojione/png/1f3f7.png differ diff --git a/riot/emojione/png/1f3f8.png b/riot/emojione/png/1f3f8.png new file mode 100644 index 0000000..7ba1570 Binary files /dev/null and b/riot/emojione/png/1f3f8.png differ diff --git a/riot/emojione/png/1f3f9.png b/riot/emojione/png/1f3f9.png new file mode 100644 index 0000000..6a538bf Binary files /dev/null and b/riot/emojione/png/1f3f9.png differ diff --git a/riot/emojione/png/1f3fa.png b/riot/emojione/png/1f3fa.png new file mode 100644 index 0000000..96de505 Binary files /dev/null and b/riot/emojione/png/1f3fa.png differ diff --git a/riot/emojione/png/1f3fb.png b/riot/emojione/png/1f3fb.png new file mode 100644 index 0000000..7c9d7cd Binary files /dev/null and b/riot/emojione/png/1f3fb.png differ diff --git a/riot/emojione/png/1f3fc.png b/riot/emojione/png/1f3fc.png new file mode 100644 index 0000000..c0fc833 Binary files /dev/null and b/riot/emojione/png/1f3fc.png differ diff --git a/riot/emojione/png/1f3fd.png b/riot/emojione/png/1f3fd.png new file mode 100644 index 0000000..4814822 Binary files /dev/null and b/riot/emojione/png/1f3fd.png differ diff --git a/riot/emojione/png/1f3fe.png b/riot/emojione/png/1f3fe.png new file mode 100644 index 0000000..60599fa Binary files /dev/null and b/riot/emojione/png/1f3fe.png differ diff --git a/riot/emojione/png/1f3ff.png b/riot/emojione/png/1f3ff.png new file mode 100644 index 0000000..4c528ea Binary files /dev/null and b/riot/emojione/png/1f3ff.png differ diff --git a/riot/emojione/png/1f400.png b/riot/emojione/png/1f400.png new file mode 100644 index 0000000..8621914 Binary files /dev/null and b/riot/emojione/png/1f400.png differ diff --git a/riot/emojione/png/1f401.png b/riot/emojione/png/1f401.png new file mode 100644 index 0000000..20fb041 Binary files /dev/null and b/riot/emojione/png/1f401.png differ diff --git a/riot/emojione/png/1f402.png b/riot/emojione/png/1f402.png new file mode 100644 index 0000000..badf570 Binary files /dev/null and b/riot/emojione/png/1f402.png differ diff --git a/riot/emojione/png/1f403.png b/riot/emojione/png/1f403.png new file mode 100644 index 0000000..8044661 Binary files /dev/null and b/riot/emojione/png/1f403.png differ diff --git a/riot/emojione/png/1f404.png b/riot/emojione/png/1f404.png new file mode 100644 index 0000000..4d0ca53 Binary files /dev/null and b/riot/emojione/png/1f404.png differ diff --git a/riot/emojione/png/1f405.png b/riot/emojione/png/1f405.png new file mode 100644 index 0000000..871a8b7 Binary files /dev/null and b/riot/emojione/png/1f405.png differ diff --git a/riot/emojione/png/1f406.png b/riot/emojione/png/1f406.png new file mode 100644 index 0000000..8aac3d4 Binary files /dev/null and b/riot/emojione/png/1f406.png differ diff --git a/riot/emojione/png/1f407.png b/riot/emojione/png/1f407.png new file mode 100644 index 0000000..2c8a29c Binary files /dev/null and b/riot/emojione/png/1f407.png differ diff --git a/riot/emojione/png/1f408.png b/riot/emojione/png/1f408.png new file mode 100644 index 0000000..46abe8c Binary files /dev/null and b/riot/emojione/png/1f408.png differ diff --git a/riot/emojione/png/1f409.png b/riot/emojione/png/1f409.png new file mode 100644 index 0000000..d6311cf Binary files /dev/null and b/riot/emojione/png/1f409.png differ diff --git a/riot/emojione/png/1f40a.png b/riot/emojione/png/1f40a.png new file mode 100644 index 0000000..3005c46 Binary files /dev/null and b/riot/emojione/png/1f40a.png differ diff --git a/riot/emojione/png/1f40b.png b/riot/emojione/png/1f40b.png new file mode 100644 index 0000000..0df9d3c Binary files /dev/null and b/riot/emojione/png/1f40b.png differ diff --git a/riot/emojione/png/1f40c.png b/riot/emojione/png/1f40c.png new file mode 100644 index 0000000..f4ea071 Binary files /dev/null and b/riot/emojione/png/1f40c.png differ diff --git a/riot/emojione/png/1f40d.png b/riot/emojione/png/1f40d.png new file mode 100644 index 0000000..d0278a2 Binary files /dev/null and b/riot/emojione/png/1f40d.png differ diff --git a/riot/emojione/png/1f40e.png b/riot/emojione/png/1f40e.png new file mode 100644 index 0000000..b3e73cc Binary files /dev/null and b/riot/emojione/png/1f40e.png differ diff --git a/riot/emojione/png/1f40f.png b/riot/emojione/png/1f40f.png new file mode 100644 index 0000000..52a4446 Binary files /dev/null and b/riot/emojione/png/1f40f.png differ diff --git a/riot/emojione/png/1f410.png b/riot/emojione/png/1f410.png new file mode 100644 index 0000000..f9d9e38 Binary files /dev/null and b/riot/emojione/png/1f410.png differ diff --git a/riot/emojione/png/1f411.png b/riot/emojione/png/1f411.png new file mode 100644 index 0000000..102b8a5 Binary files /dev/null and b/riot/emojione/png/1f411.png differ diff --git a/riot/emojione/png/1f412.png b/riot/emojione/png/1f412.png new file mode 100644 index 0000000..9fae294 Binary files /dev/null and b/riot/emojione/png/1f412.png differ diff --git a/riot/emojione/png/1f413.png b/riot/emojione/png/1f413.png new file mode 100644 index 0000000..bbf2bbf Binary files /dev/null and b/riot/emojione/png/1f413.png differ diff --git a/riot/emojione/png/1f414.png b/riot/emojione/png/1f414.png new file mode 100644 index 0000000..9a6992e Binary files /dev/null and b/riot/emojione/png/1f414.png differ diff --git a/riot/emojione/png/1f415.png b/riot/emojione/png/1f415.png new file mode 100644 index 0000000..976143d Binary files /dev/null and b/riot/emojione/png/1f415.png differ diff --git a/riot/emojione/png/1f416.png b/riot/emojione/png/1f416.png new file mode 100644 index 0000000..5f31c1a Binary files /dev/null and b/riot/emojione/png/1f416.png differ diff --git a/riot/emojione/png/1f417.png b/riot/emojione/png/1f417.png new file mode 100644 index 0000000..fead972 Binary files /dev/null and b/riot/emojione/png/1f417.png differ diff --git a/riot/emojione/png/1f418.png b/riot/emojione/png/1f418.png new file mode 100644 index 0000000..b8a6d14 Binary files /dev/null and b/riot/emojione/png/1f418.png differ diff --git a/riot/emojione/png/1f419.png b/riot/emojione/png/1f419.png new file mode 100644 index 0000000..72c8407 Binary files /dev/null and b/riot/emojione/png/1f419.png differ diff --git a/riot/emojione/png/1f41a.png b/riot/emojione/png/1f41a.png new file mode 100644 index 0000000..5572162 Binary files /dev/null and b/riot/emojione/png/1f41a.png differ diff --git a/riot/emojione/png/1f41b.png b/riot/emojione/png/1f41b.png new file mode 100644 index 0000000..e64e72f Binary files /dev/null and b/riot/emojione/png/1f41b.png differ diff --git a/riot/emojione/png/1f41c.png b/riot/emojione/png/1f41c.png new file mode 100644 index 0000000..994127e Binary files /dev/null and b/riot/emojione/png/1f41c.png differ diff --git a/riot/emojione/png/1f41d.png b/riot/emojione/png/1f41d.png new file mode 100644 index 0000000..4615606 Binary files /dev/null and b/riot/emojione/png/1f41d.png differ diff --git a/riot/emojione/png/1f41e.png b/riot/emojione/png/1f41e.png new file mode 100644 index 0000000..3d93174 Binary files /dev/null and b/riot/emojione/png/1f41e.png differ diff --git a/riot/emojione/png/1f41f.png b/riot/emojione/png/1f41f.png new file mode 100644 index 0000000..c2d2faa Binary files /dev/null and b/riot/emojione/png/1f41f.png differ diff --git a/riot/emojione/png/1f420.png b/riot/emojione/png/1f420.png new file mode 100644 index 0000000..2521052 Binary files /dev/null and b/riot/emojione/png/1f420.png differ diff --git a/riot/emojione/png/1f421.png b/riot/emojione/png/1f421.png new file mode 100644 index 0000000..a10f4f8 Binary files /dev/null and b/riot/emojione/png/1f421.png differ diff --git a/riot/emojione/png/1f422.png b/riot/emojione/png/1f422.png new file mode 100644 index 0000000..c22f751 Binary files /dev/null and b/riot/emojione/png/1f422.png differ diff --git a/riot/emojione/png/1f423.png b/riot/emojione/png/1f423.png new file mode 100644 index 0000000..c5b0e8f Binary files /dev/null and b/riot/emojione/png/1f423.png differ diff --git a/riot/emojione/png/1f424.png b/riot/emojione/png/1f424.png new file mode 100644 index 0000000..dccd965 Binary files /dev/null and b/riot/emojione/png/1f424.png differ diff --git a/riot/emojione/png/1f425.png b/riot/emojione/png/1f425.png new file mode 100644 index 0000000..31dfb51 Binary files /dev/null and b/riot/emojione/png/1f425.png differ diff --git a/riot/emojione/png/1f426.png b/riot/emojione/png/1f426.png new file mode 100644 index 0000000..e201c22 Binary files /dev/null and b/riot/emojione/png/1f426.png differ diff --git a/riot/emojione/png/1f427.png b/riot/emojione/png/1f427.png new file mode 100644 index 0000000..c0064fb Binary files /dev/null and b/riot/emojione/png/1f427.png differ diff --git a/riot/emojione/png/1f428.png b/riot/emojione/png/1f428.png new file mode 100644 index 0000000..a0aa437 Binary files /dev/null and b/riot/emojione/png/1f428.png differ diff --git a/riot/emojione/png/1f429.png b/riot/emojione/png/1f429.png new file mode 100644 index 0000000..8ec39e3 Binary files /dev/null and b/riot/emojione/png/1f429.png differ diff --git a/riot/emojione/png/1f42a.png b/riot/emojione/png/1f42a.png new file mode 100644 index 0000000..5271637 Binary files /dev/null and b/riot/emojione/png/1f42a.png differ diff --git a/riot/emojione/png/1f42b.png b/riot/emojione/png/1f42b.png new file mode 100644 index 0000000..b421d07 Binary files /dev/null and b/riot/emojione/png/1f42b.png differ diff --git a/riot/emojione/png/1f42c.png b/riot/emojione/png/1f42c.png new file mode 100644 index 0000000..8143480 Binary files /dev/null and b/riot/emojione/png/1f42c.png differ diff --git a/riot/emojione/png/1f42d.png b/riot/emojione/png/1f42d.png new file mode 100644 index 0000000..50afcd3 Binary files /dev/null and b/riot/emojione/png/1f42d.png differ diff --git a/riot/emojione/png/1f42e.png b/riot/emojione/png/1f42e.png new file mode 100644 index 0000000..718a398 Binary files /dev/null and b/riot/emojione/png/1f42e.png differ diff --git a/riot/emojione/png/1f42f.png b/riot/emojione/png/1f42f.png new file mode 100644 index 0000000..a4d3ef0 Binary files /dev/null and b/riot/emojione/png/1f42f.png differ diff --git a/riot/emojione/png/1f430.png b/riot/emojione/png/1f430.png new file mode 100644 index 0000000..ea75ab0 Binary files /dev/null and b/riot/emojione/png/1f430.png differ diff --git a/riot/emojione/png/1f431.png b/riot/emojione/png/1f431.png new file mode 100644 index 0000000..efd82c2 Binary files /dev/null and b/riot/emojione/png/1f431.png differ diff --git a/riot/emojione/png/1f432.png b/riot/emojione/png/1f432.png new file mode 100644 index 0000000..3c27204 Binary files /dev/null and b/riot/emojione/png/1f432.png differ diff --git a/riot/emojione/png/1f433.png b/riot/emojione/png/1f433.png new file mode 100644 index 0000000..9f19b44 Binary files /dev/null and b/riot/emojione/png/1f433.png differ diff --git a/riot/emojione/png/1f434.png b/riot/emojione/png/1f434.png new file mode 100644 index 0000000..7cb1172 Binary files /dev/null and b/riot/emojione/png/1f434.png differ diff --git a/riot/emojione/png/1f435.png b/riot/emojione/png/1f435.png new file mode 100644 index 0000000..7cab9b9 Binary files /dev/null and b/riot/emojione/png/1f435.png differ diff --git a/riot/emojione/png/1f436.png b/riot/emojione/png/1f436.png new file mode 100644 index 0000000..281b81d Binary files /dev/null and b/riot/emojione/png/1f436.png differ diff --git a/riot/emojione/png/1f437.png b/riot/emojione/png/1f437.png new file mode 100644 index 0000000..afe05ca Binary files /dev/null and b/riot/emojione/png/1f437.png differ diff --git a/riot/emojione/png/1f438.png b/riot/emojione/png/1f438.png new file mode 100644 index 0000000..8825d1a Binary files /dev/null and b/riot/emojione/png/1f438.png differ diff --git a/riot/emojione/png/1f439.png b/riot/emojione/png/1f439.png new file mode 100644 index 0000000..9a04388 Binary files /dev/null and b/riot/emojione/png/1f439.png differ diff --git a/riot/emojione/png/1f43a.png b/riot/emojione/png/1f43a.png new file mode 100644 index 0000000..ba7220f Binary files /dev/null and b/riot/emojione/png/1f43a.png differ diff --git a/riot/emojione/png/1f43b.png b/riot/emojione/png/1f43b.png new file mode 100644 index 0000000..272d56b Binary files /dev/null and b/riot/emojione/png/1f43b.png differ diff --git a/riot/emojione/png/1f43c.png b/riot/emojione/png/1f43c.png new file mode 100644 index 0000000..9783827 Binary files /dev/null and b/riot/emojione/png/1f43c.png differ diff --git a/riot/emojione/png/1f43d.png b/riot/emojione/png/1f43d.png new file mode 100644 index 0000000..3610ae4 Binary files /dev/null and b/riot/emojione/png/1f43d.png differ diff --git a/riot/emojione/png/1f43e.png b/riot/emojione/png/1f43e.png new file mode 100644 index 0000000..5fe568c Binary files /dev/null and b/riot/emojione/png/1f43e.png differ diff --git a/riot/emojione/png/1f43f.png b/riot/emojione/png/1f43f.png new file mode 100644 index 0000000..2aac560 Binary files /dev/null and b/riot/emojione/png/1f43f.png differ diff --git a/riot/emojione/png/1f440.png b/riot/emojione/png/1f440.png new file mode 100644 index 0000000..2102ada Binary files /dev/null and b/riot/emojione/png/1f440.png differ diff --git a/riot/emojione/png/1f441-1f5e8.png b/riot/emojione/png/1f441-1f5e8.png new file mode 100644 index 0000000..21bd22b Binary files /dev/null and b/riot/emojione/png/1f441-1f5e8.png differ diff --git a/riot/emojione/png/1f441.png b/riot/emojione/png/1f441.png new file mode 100644 index 0000000..9d989cd Binary files /dev/null and b/riot/emojione/png/1f441.png differ diff --git a/riot/emojione/png/1f442-1f3fb.png b/riot/emojione/png/1f442-1f3fb.png new file mode 100644 index 0000000..d09e1e4 Binary files /dev/null and b/riot/emojione/png/1f442-1f3fb.png differ diff --git a/riot/emojione/png/1f442-1f3fc.png b/riot/emojione/png/1f442-1f3fc.png new file mode 100644 index 0000000..300d60a Binary files /dev/null and b/riot/emojione/png/1f442-1f3fc.png differ diff --git a/riot/emojione/png/1f442-1f3fd.png b/riot/emojione/png/1f442-1f3fd.png new file mode 100644 index 0000000..2a56eeb Binary files /dev/null and b/riot/emojione/png/1f442-1f3fd.png differ diff --git a/riot/emojione/png/1f442-1f3fe.png b/riot/emojione/png/1f442-1f3fe.png new file mode 100644 index 0000000..bd270f7 Binary files /dev/null and b/riot/emojione/png/1f442-1f3fe.png differ diff --git a/riot/emojione/png/1f442-1f3ff.png b/riot/emojione/png/1f442-1f3ff.png new file mode 100644 index 0000000..b96bb44 Binary files /dev/null and b/riot/emojione/png/1f442-1f3ff.png differ diff --git a/riot/emojione/png/1f442.png b/riot/emojione/png/1f442.png new file mode 100644 index 0000000..f84f9ff Binary files /dev/null and b/riot/emojione/png/1f442.png differ diff --git a/riot/emojione/png/1f443-1f3fb.png b/riot/emojione/png/1f443-1f3fb.png new file mode 100644 index 0000000..8008d17 Binary files /dev/null and b/riot/emojione/png/1f443-1f3fb.png differ diff --git a/riot/emojione/png/1f443-1f3fc.png b/riot/emojione/png/1f443-1f3fc.png new file mode 100644 index 0000000..ac17f26 Binary files /dev/null and b/riot/emojione/png/1f443-1f3fc.png differ diff --git a/riot/emojione/png/1f443-1f3fd.png b/riot/emojione/png/1f443-1f3fd.png new file mode 100644 index 0000000..d8b6cbe Binary files /dev/null and b/riot/emojione/png/1f443-1f3fd.png differ diff --git a/riot/emojione/png/1f443-1f3fe.png b/riot/emojione/png/1f443-1f3fe.png new file mode 100644 index 0000000..004b263 Binary files /dev/null and b/riot/emojione/png/1f443-1f3fe.png differ diff --git a/riot/emojione/png/1f443-1f3ff.png b/riot/emojione/png/1f443-1f3ff.png new file mode 100644 index 0000000..7b33821 Binary files /dev/null and b/riot/emojione/png/1f443-1f3ff.png differ diff --git a/riot/emojione/png/1f443.png b/riot/emojione/png/1f443.png new file mode 100644 index 0000000..2f04ac5 Binary files /dev/null and b/riot/emojione/png/1f443.png differ diff --git a/riot/emojione/png/1f444.png b/riot/emojione/png/1f444.png new file mode 100644 index 0000000..35f3cc2 Binary files /dev/null and b/riot/emojione/png/1f444.png differ diff --git a/riot/emojione/png/1f445.png b/riot/emojione/png/1f445.png new file mode 100644 index 0000000..70ce9c1 Binary files /dev/null and b/riot/emojione/png/1f445.png differ diff --git a/riot/emojione/png/1f446-1f3fb.png b/riot/emojione/png/1f446-1f3fb.png new file mode 100644 index 0000000..a12a7e7 Binary files /dev/null and b/riot/emojione/png/1f446-1f3fb.png differ diff --git a/riot/emojione/png/1f446-1f3fc.png b/riot/emojione/png/1f446-1f3fc.png new file mode 100644 index 0000000..cdff40c Binary files /dev/null and b/riot/emojione/png/1f446-1f3fc.png differ diff --git a/riot/emojione/png/1f446-1f3fd.png b/riot/emojione/png/1f446-1f3fd.png new file mode 100644 index 0000000..a07ce9e Binary files /dev/null and b/riot/emojione/png/1f446-1f3fd.png differ diff --git a/riot/emojione/png/1f446-1f3fe.png b/riot/emojione/png/1f446-1f3fe.png new file mode 100644 index 0000000..4f86c88 Binary files /dev/null and b/riot/emojione/png/1f446-1f3fe.png differ diff --git a/riot/emojione/png/1f446-1f3ff.png b/riot/emojione/png/1f446-1f3ff.png new file mode 100644 index 0000000..ed1b26c Binary files /dev/null and b/riot/emojione/png/1f446-1f3ff.png differ diff --git a/riot/emojione/png/1f446.png b/riot/emojione/png/1f446.png new file mode 100644 index 0000000..bc496df Binary files /dev/null and b/riot/emojione/png/1f446.png differ diff --git a/riot/emojione/png/1f447-1f3fb.png b/riot/emojione/png/1f447-1f3fb.png new file mode 100644 index 0000000..140f157 Binary files /dev/null and b/riot/emojione/png/1f447-1f3fb.png differ diff --git a/riot/emojione/png/1f447-1f3fc.png b/riot/emojione/png/1f447-1f3fc.png new file mode 100644 index 0000000..d518544 Binary files /dev/null and b/riot/emojione/png/1f447-1f3fc.png differ diff --git a/riot/emojione/png/1f447-1f3fd.png b/riot/emojione/png/1f447-1f3fd.png new file mode 100644 index 0000000..018b688 Binary files /dev/null and b/riot/emojione/png/1f447-1f3fd.png differ diff --git a/riot/emojione/png/1f447-1f3fe.png b/riot/emojione/png/1f447-1f3fe.png new file mode 100644 index 0000000..98845bf Binary files /dev/null and b/riot/emojione/png/1f447-1f3fe.png differ diff --git a/riot/emojione/png/1f447-1f3ff.png b/riot/emojione/png/1f447-1f3ff.png new file mode 100644 index 0000000..9a9b039 Binary files /dev/null and b/riot/emojione/png/1f447-1f3ff.png differ diff --git a/riot/emojione/png/1f447.png b/riot/emojione/png/1f447.png new file mode 100644 index 0000000..00d3d13 Binary files /dev/null and b/riot/emojione/png/1f447.png differ diff --git a/riot/emojione/png/1f448-1f3fb.png b/riot/emojione/png/1f448-1f3fb.png new file mode 100644 index 0000000..88e2c30 Binary files /dev/null and b/riot/emojione/png/1f448-1f3fb.png differ diff --git a/riot/emojione/png/1f448-1f3fc.png b/riot/emojione/png/1f448-1f3fc.png new file mode 100644 index 0000000..d3c89d8 Binary files /dev/null and b/riot/emojione/png/1f448-1f3fc.png differ diff --git a/riot/emojione/png/1f448-1f3fd.png b/riot/emojione/png/1f448-1f3fd.png new file mode 100644 index 0000000..b23b916 Binary files /dev/null and b/riot/emojione/png/1f448-1f3fd.png differ diff --git a/riot/emojione/png/1f448-1f3fe.png b/riot/emojione/png/1f448-1f3fe.png new file mode 100644 index 0000000..3093f32 Binary files /dev/null and b/riot/emojione/png/1f448-1f3fe.png differ diff --git a/riot/emojione/png/1f448-1f3ff.png b/riot/emojione/png/1f448-1f3ff.png new file mode 100644 index 0000000..2b4cbfa Binary files /dev/null and b/riot/emojione/png/1f448-1f3ff.png differ diff --git a/riot/emojione/png/1f448.png b/riot/emojione/png/1f448.png new file mode 100644 index 0000000..599fa2e Binary files /dev/null and b/riot/emojione/png/1f448.png differ diff --git a/riot/emojione/png/1f449-1f3fb.png b/riot/emojione/png/1f449-1f3fb.png new file mode 100644 index 0000000..4a28c6b Binary files /dev/null and b/riot/emojione/png/1f449-1f3fb.png differ diff --git a/riot/emojione/png/1f449-1f3fc.png b/riot/emojione/png/1f449-1f3fc.png new file mode 100644 index 0000000..7cb1323 Binary files /dev/null and b/riot/emojione/png/1f449-1f3fc.png differ diff --git a/riot/emojione/png/1f449-1f3fd.png b/riot/emojione/png/1f449-1f3fd.png new file mode 100644 index 0000000..5514807 Binary files /dev/null and b/riot/emojione/png/1f449-1f3fd.png differ diff --git a/riot/emojione/png/1f449-1f3fe.png b/riot/emojione/png/1f449-1f3fe.png new file mode 100644 index 0000000..b8541d6 Binary files /dev/null and b/riot/emojione/png/1f449-1f3fe.png differ diff --git a/riot/emojione/png/1f449-1f3ff.png b/riot/emojione/png/1f449-1f3ff.png new file mode 100644 index 0000000..1b7aab0 Binary files /dev/null and b/riot/emojione/png/1f449-1f3ff.png differ diff --git a/riot/emojione/png/1f449.png b/riot/emojione/png/1f449.png new file mode 100644 index 0000000..93a3cd3 Binary files /dev/null and b/riot/emojione/png/1f449.png differ diff --git a/riot/emojione/png/1f44a-1f3fb.png b/riot/emojione/png/1f44a-1f3fb.png new file mode 100644 index 0000000..93c7d17 Binary files /dev/null and b/riot/emojione/png/1f44a-1f3fb.png differ diff --git a/riot/emojione/png/1f44a-1f3fc.png b/riot/emojione/png/1f44a-1f3fc.png new file mode 100644 index 0000000..c0a1af6 Binary files /dev/null and b/riot/emojione/png/1f44a-1f3fc.png differ diff --git a/riot/emojione/png/1f44a-1f3fd.png b/riot/emojione/png/1f44a-1f3fd.png new file mode 100644 index 0000000..1458b02 Binary files /dev/null and b/riot/emojione/png/1f44a-1f3fd.png differ diff --git a/riot/emojione/png/1f44a-1f3fe.png b/riot/emojione/png/1f44a-1f3fe.png new file mode 100644 index 0000000..c1466bf Binary files /dev/null and b/riot/emojione/png/1f44a-1f3fe.png differ diff --git a/riot/emojione/png/1f44a-1f3ff.png b/riot/emojione/png/1f44a-1f3ff.png new file mode 100644 index 0000000..00b4ddb Binary files /dev/null and b/riot/emojione/png/1f44a-1f3ff.png differ diff --git a/riot/emojione/png/1f44a.png b/riot/emojione/png/1f44a.png new file mode 100644 index 0000000..b14ca5f Binary files /dev/null and b/riot/emojione/png/1f44a.png differ diff --git a/riot/emojione/png/1f44b-1f3fb.png b/riot/emojione/png/1f44b-1f3fb.png new file mode 100644 index 0000000..6b2b34b Binary files /dev/null and b/riot/emojione/png/1f44b-1f3fb.png differ diff --git a/riot/emojione/png/1f44b-1f3fc.png b/riot/emojione/png/1f44b-1f3fc.png new file mode 100644 index 0000000..b857119 Binary files /dev/null and b/riot/emojione/png/1f44b-1f3fc.png differ diff --git a/riot/emojione/png/1f44b-1f3fd.png b/riot/emojione/png/1f44b-1f3fd.png new file mode 100644 index 0000000..6283b67 Binary files /dev/null and b/riot/emojione/png/1f44b-1f3fd.png differ diff --git a/riot/emojione/png/1f44b-1f3fe.png b/riot/emojione/png/1f44b-1f3fe.png new file mode 100644 index 0000000..fe6b2ba Binary files /dev/null and b/riot/emojione/png/1f44b-1f3fe.png differ diff --git a/riot/emojione/png/1f44b-1f3ff.png b/riot/emojione/png/1f44b-1f3ff.png new file mode 100644 index 0000000..4bd168e Binary files /dev/null and b/riot/emojione/png/1f44b-1f3ff.png differ diff --git a/riot/emojione/png/1f44b.png b/riot/emojione/png/1f44b.png new file mode 100644 index 0000000..e0cd79b Binary files /dev/null and b/riot/emojione/png/1f44b.png differ diff --git a/riot/emojione/png/1f44c-1f3fb.png b/riot/emojione/png/1f44c-1f3fb.png new file mode 100644 index 0000000..cecf7b2 Binary files /dev/null and b/riot/emojione/png/1f44c-1f3fb.png differ diff --git a/riot/emojione/png/1f44c-1f3fc.png b/riot/emojione/png/1f44c-1f3fc.png new file mode 100644 index 0000000..c19239b Binary files /dev/null and b/riot/emojione/png/1f44c-1f3fc.png differ diff --git a/riot/emojione/png/1f44c-1f3fd.png b/riot/emojione/png/1f44c-1f3fd.png new file mode 100644 index 0000000..94b65b0 Binary files /dev/null and b/riot/emojione/png/1f44c-1f3fd.png differ diff --git a/riot/emojione/png/1f44c-1f3fe.png b/riot/emojione/png/1f44c-1f3fe.png new file mode 100644 index 0000000..03d26f0 Binary files /dev/null and b/riot/emojione/png/1f44c-1f3fe.png differ diff --git a/riot/emojione/png/1f44c-1f3ff.png b/riot/emojione/png/1f44c-1f3ff.png new file mode 100644 index 0000000..d4b2408 Binary files /dev/null and b/riot/emojione/png/1f44c-1f3ff.png differ diff --git a/riot/emojione/png/1f44c.png b/riot/emojione/png/1f44c.png new file mode 100644 index 0000000..028d69b Binary files /dev/null and b/riot/emojione/png/1f44c.png differ diff --git a/riot/emojione/png/1f44d-1f3fb.png b/riot/emojione/png/1f44d-1f3fb.png new file mode 100644 index 0000000..39684cd Binary files /dev/null and b/riot/emojione/png/1f44d-1f3fb.png differ diff --git a/riot/emojione/png/1f44d-1f3fc.png b/riot/emojione/png/1f44d-1f3fc.png new file mode 100644 index 0000000..a9b5972 Binary files /dev/null and b/riot/emojione/png/1f44d-1f3fc.png differ diff --git a/riot/emojione/png/1f44d-1f3fd.png b/riot/emojione/png/1f44d-1f3fd.png new file mode 100644 index 0000000..c5e2916 Binary files /dev/null and b/riot/emojione/png/1f44d-1f3fd.png differ diff --git a/riot/emojione/png/1f44d-1f3fe.png b/riot/emojione/png/1f44d-1f3fe.png new file mode 100644 index 0000000..5bf4857 Binary files /dev/null and b/riot/emojione/png/1f44d-1f3fe.png differ diff --git a/riot/emojione/png/1f44d-1f3ff.png b/riot/emojione/png/1f44d-1f3ff.png new file mode 100644 index 0000000..d829f78 Binary files /dev/null and b/riot/emojione/png/1f44d-1f3ff.png differ diff --git a/riot/emojione/png/1f44d.png b/riot/emojione/png/1f44d.png new file mode 100644 index 0000000..f9e6f13 Binary files /dev/null and b/riot/emojione/png/1f44d.png differ diff --git a/riot/emojione/png/1f44e-1f3fb.png b/riot/emojione/png/1f44e-1f3fb.png new file mode 100644 index 0000000..a1631af Binary files /dev/null and b/riot/emojione/png/1f44e-1f3fb.png differ diff --git a/riot/emojione/png/1f44e-1f3fc.png b/riot/emojione/png/1f44e-1f3fc.png new file mode 100644 index 0000000..85fff82 Binary files /dev/null and b/riot/emojione/png/1f44e-1f3fc.png differ diff --git a/riot/emojione/png/1f44e-1f3fd.png b/riot/emojione/png/1f44e-1f3fd.png new file mode 100644 index 0000000..eeba3be Binary files /dev/null and b/riot/emojione/png/1f44e-1f3fd.png differ diff --git a/riot/emojione/png/1f44e-1f3fe.png b/riot/emojione/png/1f44e-1f3fe.png new file mode 100644 index 0000000..1addafd Binary files /dev/null and b/riot/emojione/png/1f44e-1f3fe.png differ diff --git a/riot/emojione/png/1f44e-1f3ff.png b/riot/emojione/png/1f44e-1f3ff.png new file mode 100644 index 0000000..37ec07b Binary files /dev/null and b/riot/emojione/png/1f44e-1f3ff.png differ diff --git a/riot/emojione/png/1f44e.png b/riot/emojione/png/1f44e.png new file mode 100644 index 0000000..b63da2f Binary files /dev/null and b/riot/emojione/png/1f44e.png differ diff --git a/riot/emojione/png/1f44f-1f3fb.png b/riot/emojione/png/1f44f-1f3fb.png new file mode 100644 index 0000000..de4bc83 Binary files /dev/null and b/riot/emojione/png/1f44f-1f3fb.png differ diff --git a/riot/emojione/png/1f44f-1f3fc.png b/riot/emojione/png/1f44f-1f3fc.png new file mode 100644 index 0000000..1323de7 Binary files /dev/null and b/riot/emojione/png/1f44f-1f3fc.png differ diff --git a/riot/emojione/png/1f44f-1f3fd.png b/riot/emojione/png/1f44f-1f3fd.png new file mode 100644 index 0000000..d448ca1 Binary files /dev/null and b/riot/emojione/png/1f44f-1f3fd.png differ diff --git a/riot/emojione/png/1f44f-1f3fe.png b/riot/emojione/png/1f44f-1f3fe.png new file mode 100644 index 0000000..c49f44e Binary files /dev/null and b/riot/emojione/png/1f44f-1f3fe.png differ diff --git a/riot/emojione/png/1f44f-1f3ff.png b/riot/emojione/png/1f44f-1f3ff.png new file mode 100644 index 0000000..29ee9bd Binary files /dev/null and b/riot/emojione/png/1f44f-1f3ff.png differ diff --git a/riot/emojione/png/1f44f.png b/riot/emojione/png/1f44f.png new file mode 100644 index 0000000..b0ffe92 Binary files /dev/null and b/riot/emojione/png/1f44f.png differ diff --git a/riot/emojione/png/1f450-1f3fb.png b/riot/emojione/png/1f450-1f3fb.png new file mode 100644 index 0000000..352d261 Binary files /dev/null and b/riot/emojione/png/1f450-1f3fb.png differ diff --git a/riot/emojione/png/1f450-1f3fc.png b/riot/emojione/png/1f450-1f3fc.png new file mode 100644 index 0000000..70824a5 Binary files /dev/null and b/riot/emojione/png/1f450-1f3fc.png differ diff --git a/riot/emojione/png/1f450-1f3fd.png b/riot/emojione/png/1f450-1f3fd.png new file mode 100644 index 0000000..d7d136b Binary files /dev/null and b/riot/emojione/png/1f450-1f3fd.png differ diff --git a/riot/emojione/png/1f450-1f3fe.png b/riot/emojione/png/1f450-1f3fe.png new file mode 100644 index 0000000..df4eaa7 Binary files /dev/null and b/riot/emojione/png/1f450-1f3fe.png differ diff --git a/riot/emojione/png/1f450-1f3ff.png b/riot/emojione/png/1f450-1f3ff.png new file mode 100644 index 0000000..7dc04ea Binary files /dev/null and b/riot/emojione/png/1f450-1f3ff.png differ diff --git a/riot/emojione/png/1f450.png b/riot/emojione/png/1f450.png new file mode 100644 index 0000000..1cf75c9 Binary files /dev/null and b/riot/emojione/png/1f450.png differ diff --git a/riot/emojione/png/1f451.png b/riot/emojione/png/1f451.png new file mode 100644 index 0000000..93b82d9 Binary files /dev/null and b/riot/emojione/png/1f451.png differ diff --git a/riot/emojione/png/1f452.png b/riot/emojione/png/1f452.png new file mode 100644 index 0000000..b837b6a Binary files /dev/null and b/riot/emojione/png/1f452.png differ diff --git a/riot/emojione/png/1f453.png b/riot/emojione/png/1f453.png new file mode 100644 index 0000000..865d827 Binary files /dev/null and b/riot/emojione/png/1f453.png differ diff --git a/riot/emojione/png/1f454.png b/riot/emojione/png/1f454.png new file mode 100644 index 0000000..1804e7f Binary files /dev/null and b/riot/emojione/png/1f454.png differ diff --git a/riot/emojione/png/1f455.png b/riot/emojione/png/1f455.png new file mode 100644 index 0000000..af08dec Binary files /dev/null and b/riot/emojione/png/1f455.png differ diff --git a/riot/emojione/png/1f456.png b/riot/emojione/png/1f456.png new file mode 100644 index 0000000..2a6869d Binary files /dev/null and b/riot/emojione/png/1f456.png differ diff --git a/riot/emojione/png/1f457.png b/riot/emojione/png/1f457.png new file mode 100644 index 0000000..a697ca5 Binary files /dev/null and b/riot/emojione/png/1f457.png differ diff --git a/riot/emojione/png/1f458.png b/riot/emojione/png/1f458.png new file mode 100644 index 0000000..abe8511 Binary files /dev/null and b/riot/emojione/png/1f458.png differ diff --git a/riot/emojione/png/1f459.png b/riot/emojione/png/1f459.png new file mode 100644 index 0000000..77a8a0a Binary files /dev/null and b/riot/emojione/png/1f459.png differ diff --git a/riot/emojione/png/1f45a.png b/riot/emojione/png/1f45a.png new file mode 100644 index 0000000..01410dc Binary files /dev/null and b/riot/emojione/png/1f45a.png differ diff --git a/riot/emojione/png/1f45b.png b/riot/emojione/png/1f45b.png new file mode 100644 index 0000000..9813461 Binary files /dev/null and b/riot/emojione/png/1f45b.png differ diff --git a/riot/emojione/png/1f45c.png b/riot/emojione/png/1f45c.png new file mode 100644 index 0000000..cbf75c5 Binary files /dev/null and b/riot/emojione/png/1f45c.png differ diff --git a/riot/emojione/png/1f45d.png b/riot/emojione/png/1f45d.png new file mode 100644 index 0000000..8795c6c Binary files /dev/null and b/riot/emojione/png/1f45d.png differ diff --git a/riot/emojione/png/1f45e.png b/riot/emojione/png/1f45e.png new file mode 100644 index 0000000..4bf7541 Binary files /dev/null and b/riot/emojione/png/1f45e.png differ diff --git a/riot/emojione/png/1f45f.png b/riot/emojione/png/1f45f.png new file mode 100644 index 0000000..423fa07 Binary files /dev/null and b/riot/emojione/png/1f45f.png differ diff --git a/riot/emojione/png/1f460.png b/riot/emojione/png/1f460.png new file mode 100644 index 0000000..b331cbc Binary files /dev/null and b/riot/emojione/png/1f460.png differ diff --git a/riot/emojione/png/1f461.png b/riot/emojione/png/1f461.png new file mode 100644 index 0000000..9d9f512 Binary files /dev/null and b/riot/emojione/png/1f461.png differ diff --git a/riot/emojione/png/1f462.png b/riot/emojione/png/1f462.png new file mode 100644 index 0000000..11f1065 Binary files /dev/null and b/riot/emojione/png/1f462.png differ diff --git a/riot/emojione/png/1f463.png b/riot/emojione/png/1f463.png new file mode 100644 index 0000000..b2673c5 Binary files /dev/null and b/riot/emojione/png/1f463.png differ diff --git a/riot/emojione/png/1f464.png b/riot/emojione/png/1f464.png new file mode 100644 index 0000000..123b2cb Binary files /dev/null and b/riot/emojione/png/1f464.png differ diff --git a/riot/emojione/png/1f465.png b/riot/emojione/png/1f465.png new file mode 100644 index 0000000..d765686 Binary files /dev/null and b/riot/emojione/png/1f465.png differ diff --git a/riot/emojione/png/1f466-1f3fb.png b/riot/emojione/png/1f466-1f3fb.png new file mode 100644 index 0000000..2fc436e Binary files /dev/null and b/riot/emojione/png/1f466-1f3fb.png differ diff --git a/riot/emojione/png/1f466-1f3fc.png b/riot/emojione/png/1f466-1f3fc.png new file mode 100644 index 0000000..09a5f18 Binary files /dev/null and b/riot/emojione/png/1f466-1f3fc.png differ diff --git a/riot/emojione/png/1f466-1f3fd.png b/riot/emojione/png/1f466-1f3fd.png new file mode 100644 index 0000000..3cfe675 Binary files /dev/null and b/riot/emojione/png/1f466-1f3fd.png differ diff --git a/riot/emojione/png/1f466-1f3fe.png b/riot/emojione/png/1f466-1f3fe.png new file mode 100644 index 0000000..780be0a Binary files /dev/null and b/riot/emojione/png/1f466-1f3fe.png differ diff --git a/riot/emojione/png/1f466-1f3ff.png b/riot/emojione/png/1f466-1f3ff.png new file mode 100644 index 0000000..f32fe22 Binary files /dev/null and b/riot/emojione/png/1f466-1f3ff.png differ diff --git a/riot/emojione/png/1f466.png b/riot/emojione/png/1f466.png new file mode 100644 index 0000000..8ecfb0a Binary files /dev/null and b/riot/emojione/png/1f466.png differ diff --git a/riot/emojione/png/1f467-1f3fb.png b/riot/emojione/png/1f467-1f3fb.png new file mode 100644 index 0000000..bb667e8 Binary files /dev/null and b/riot/emojione/png/1f467-1f3fb.png differ diff --git a/riot/emojione/png/1f467-1f3fc.png b/riot/emojione/png/1f467-1f3fc.png new file mode 100644 index 0000000..a59ed4a Binary files /dev/null and b/riot/emojione/png/1f467-1f3fc.png differ diff --git a/riot/emojione/png/1f467-1f3fd.png b/riot/emojione/png/1f467-1f3fd.png new file mode 100644 index 0000000..517e7f2 Binary files /dev/null and b/riot/emojione/png/1f467-1f3fd.png differ diff --git a/riot/emojione/png/1f467-1f3fe.png b/riot/emojione/png/1f467-1f3fe.png new file mode 100644 index 0000000..542d96c Binary files /dev/null and b/riot/emojione/png/1f467-1f3fe.png differ diff --git a/riot/emojione/png/1f467-1f3ff.png b/riot/emojione/png/1f467-1f3ff.png new file mode 100644 index 0000000..66b7c28 Binary files /dev/null and b/riot/emojione/png/1f467-1f3ff.png differ diff --git a/riot/emojione/png/1f467.png b/riot/emojione/png/1f467.png new file mode 100644 index 0000000..dc1d4d0 Binary files /dev/null and b/riot/emojione/png/1f467.png differ diff --git a/riot/emojione/png/1f468-1f3fb.png b/riot/emojione/png/1f468-1f3fb.png new file mode 100644 index 0000000..bb86e96 Binary files /dev/null and b/riot/emojione/png/1f468-1f3fb.png differ diff --git a/riot/emojione/png/1f468-1f3fc.png b/riot/emojione/png/1f468-1f3fc.png new file mode 100644 index 0000000..fdeeaff Binary files /dev/null and b/riot/emojione/png/1f468-1f3fc.png differ diff --git a/riot/emojione/png/1f468-1f3fd.png b/riot/emojione/png/1f468-1f3fd.png new file mode 100644 index 0000000..7ae0b5d Binary files /dev/null and b/riot/emojione/png/1f468-1f3fd.png differ diff --git a/riot/emojione/png/1f468-1f3fe.png b/riot/emojione/png/1f468-1f3fe.png new file mode 100644 index 0000000..db14cde Binary files /dev/null and b/riot/emojione/png/1f468-1f3fe.png differ diff --git a/riot/emojione/png/1f468-1f3ff.png b/riot/emojione/png/1f468-1f3ff.png new file mode 100644 index 0000000..7c67a70 Binary files /dev/null and b/riot/emojione/png/1f468-1f3ff.png differ diff --git a/riot/emojione/png/1f468-1f468-1f466-1f466.png b/riot/emojione/png/1f468-1f468-1f466-1f466.png new file mode 100644 index 0000000..81e6c0f Binary files /dev/null and b/riot/emojione/png/1f468-1f468-1f466-1f466.png differ diff --git a/riot/emojione/png/1f468-1f468-1f466.png b/riot/emojione/png/1f468-1f468-1f466.png new file mode 100644 index 0000000..7a2e4e2 Binary files /dev/null and b/riot/emojione/png/1f468-1f468-1f466.png differ diff --git a/riot/emojione/png/1f468-1f468-1f467-1f466.png b/riot/emojione/png/1f468-1f468-1f467-1f466.png new file mode 100644 index 0000000..41e3516 Binary files /dev/null and b/riot/emojione/png/1f468-1f468-1f467-1f466.png differ diff --git a/riot/emojione/png/1f468-1f468-1f467-1f467.png b/riot/emojione/png/1f468-1f468-1f467-1f467.png new file mode 100644 index 0000000..8e8ccfe Binary files /dev/null and b/riot/emojione/png/1f468-1f468-1f467-1f467.png differ diff --git a/riot/emojione/png/1f468-1f468-1f467.png b/riot/emojione/png/1f468-1f468-1f467.png new file mode 100644 index 0000000..932a85e Binary files /dev/null and b/riot/emojione/png/1f468-1f468-1f467.png differ diff --git a/riot/emojione/png/1f468-1f469-1f466-1f466.png b/riot/emojione/png/1f468-1f469-1f466-1f466.png new file mode 100644 index 0000000..b544fbe Binary files /dev/null and b/riot/emojione/png/1f468-1f469-1f466-1f466.png differ diff --git a/riot/emojione/png/1f468-1f469-1f467-1f466.png b/riot/emojione/png/1f468-1f469-1f467-1f466.png new file mode 100644 index 0000000..40dbf1f Binary files /dev/null and b/riot/emojione/png/1f468-1f469-1f467-1f466.png differ diff --git a/riot/emojione/png/1f468-1f469-1f467-1f467.png b/riot/emojione/png/1f468-1f469-1f467-1f467.png new file mode 100644 index 0000000..bfefa48 Binary files /dev/null and b/riot/emojione/png/1f468-1f469-1f467-1f467.png differ diff --git a/riot/emojione/png/1f468-1f469-1f467.png b/riot/emojione/png/1f468-1f469-1f467.png new file mode 100644 index 0000000..71d2681 Binary files /dev/null and b/riot/emojione/png/1f468-1f469-1f467.png differ diff --git a/riot/emojione/png/1f468-2764-1f468.png b/riot/emojione/png/1f468-2764-1f468.png new file mode 100644 index 0000000..8759fa5 Binary files /dev/null and b/riot/emojione/png/1f468-2764-1f468.png differ diff --git a/riot/emojione/png/1f468-2764-1f48b-1f468.png b/riot/emojione/png/1f468-2764-1f48b-1f468.png new file mode 100644 index 0000000..a9a0eda Binary files /dev/null and b/riot/emojione/png/1f468-2764-1f48b-1f468.png differ diff --git a/riot/emojione/png/1f468.png b/riot/emojione/png/1f468.png new file mode 100644 index 0000000..857a02e Binary files /dev/null and b/riot/emojione/png/1f468.png differ diff --git a/riot/emojione/png/1f469-1f3fb.png b/riot/emojione/png/1f469-1f3fb.png new file mode 100644 index 0000000..ff089b8 Binary files /dev/null and b/riot/emojione/png/1f469-1f3fb.png differ diff --git a/riot/emojione/png/1f469-1f3fc.png b/riot/emojione/png/1f469-1f3fc.png new file mode 100644 index 0000000..0719c37 Binary files /dev/null and b/riot/emojione/png/1f469-1f3fc.png differ diff --git a/riot/emojione/png/1f469-1f3fd.png b/riot/emojione/png/1f469-1f3fd.png new file mode 100644 index 0000000..5672e2f Binary files /dev/null and b/riot/emojione/png/1f469-1f3fd.png differ diff --git a/riot/emojione/png/1f469-1f3fe.png b/riot/emojione/png/1f469-1f3fe.png new file mode 100644 index 0000000..5754aab Binary files /dev/null and b/riot/emojione/png/1f469-1f3fe.png differ diff --git a/riot/emojione/png/1f469-1f3ff.png b/riot/emojione/png/1f469-1f3ff.png new file mode 100644 index 0000000..fc252af Binary files /dev/null and b/riot/emojione/png/1f469-1f3ff.png differ diff --git a/riot/emojione/png/1f469-1f469-1f466-1f466.png b/riot/emojione/png/1f469-1f469-1f466-1f466.png new file mode 100644 index 0000000..6c6ba45 Binary files /dev/null and b/riot/emojione/png/1f469-1f469-1f466-1f466.png differ diff --git a/riot/emojione/png/1f469-1f469-1f466.png b/riot/emojione/png/1f469-1f469-1f466.png new file mode 100644 index 0000000..836feae Binary files /dev/null and b/riot/emojione/png/1f469-1f469-1f466.png differ diff --git a/riot/emojione/png/1f469-1f469-1f467-1f466.png b/riot/emojione/png/1f469-1f469-1f467-1f466.png new file mode 100644 index 0000000..284d29a Binary files /dev/null and b/riot/emojione/png/1f469-1f469-1f467-1f466.png differ diff --git a/riot/emojione/png/1f469-1f469-1f467-1f467.png b/riot/emojione/png/1f469-1f469-1f467-1f467.png new file mode 100644 index 0000000..d8d3f49 Binary files /dev/null and b/riot/emojione/png/1f469-1f469-1f467-1f467.png differ diff --git a/riot/emojione/png/1f469-1f469-1f467.png b/riot/emojione/png/1f469-1f469-1f467.png new file mode 100644 index 0000000..41225c6 Binary files /dev/null and b/riot/emojione/png/1f469-1f469-1f467.png differ diff --git a/riot/emojione/png/1f469-2764-1f469.png b/riot/emojione/png/1f469-2764-1f469.png new file mode 100644 index 0000000..08fdabc Binary files /dev/null and b/riot/emojione/png/1f469-2764-1f469.png differ diff --git a/riot/emojione/png/1f469-2764-1f48b-1f469.png b/riot/emojione/png/1f469-2764-1f48b-1f469.png new file mode 100644 index 0000000..fdac73c Binary files /dev/null and b/riot/emojione/png/1f469-2764-1f48b-1f469.png differ diff --git a/riot/emojione/png/1f469.png b/riot/emojione/png/1f469.png new file mode 100644 index 0000000..ece440e Binary files /dev/null and b/riot/emojione/png/1f469.png differ diff --git a/riot/emojione/png/1f46a.png b/riot/emojione/png/1f46a.png new file mode 100644 index 0000000..2642196 Binary files /dev/null and b/riot/emojione/png/1f46a.png differ diff --git a/riot/emojione/png/1f46b.png b/riot/emojione/png/1f46b.png new file mode 100644 index 0000000..960323f Binary files /dev/null and b/riot/emojione/png/1f46b.png differ diff --git a/riot/emojione/png/1f46c.png b/riot/emojione/png/1f46c.png new file mode 100644 index 0000000..a511fda Binary files /dev/null and b/riot/emojione/png/1f46c.png differ diff --git a/riot/emojione/png/1f46d.png b/riot/emojione/png/1f46d.png new file mode 100644 index 0000000..b077cd3 Binary files /dev/null and b/riot/emojione/png/1f46d.png differ diff --git a/riot/emojione/png/1f46e-1f3fb.png b/riot/emojione/png/1f46e-1f3fb.png new file mode 100644 index 0000000..6ccba38 Binary files /dev/null and b/riot/emojione/png/1f46e-1f3fb.png differ diff --git a/riot/emojione/png/1f46e-1f3fc.png b/riot/emojione/png/1f46e-1f3fc.png new file mode 100644 index 0000000..7814ea9 Binary files /dev/null and b/riot/emojione/png/1f46e-1f3fc.png differ diff --git a/riot/emojione/png/1f46e-1f3fd.png b/riot/emojione/png/1f46e-1f3fd.png new file mode 100644 index 0000000..d78e88e Binary files /dev/null and b/riot/emojione/png/1f46e-1f3fd.png differ diff --git a/riot/emojione/png/1f46e-1f3fe.png b/riot/emojione/png/1f46e-1f3fe.png new file mode 100644 index 0000000..2e13c50 Binary files /dev/null and b/riot/emojione/png/1f46e-1f3fe.png differ diff --git a/riot/emojione/png/1f46e-1f3ff.png b/riot/emojione/png/1f46e-1f3ff.png new file mode 100644 index 0000000..2980d61 Binary files /dev/null and b/riot/emojione/png/1f46e-1f3ff.png differ diff --git a/riot/emojione/png/1f46e.png b/riot/emojione/png/1f46e.png new file mode 100644 index 0000000..0b16d7c Binary files /dev/null and b/riot/emojione/png/1f46e.png differ diff --git a/riot/emojione/png/1f46f.png b/riot/emojione/png/1f46f.png new file mode 100644 index 0000000..67e6ffa Binary files /dev/null and b/riot/emojione/png/1f46f.png differ diff --git a/riot/emojione/png/1f470-1f3fb.png b/riot/emojione/png/1f470-1f3fb.png new file mode 100644 index 0000000..c4fb141 Binary files /dev/null and b/riot/emojione/png/1f470-1f3fb.png differ diff --git a/riot/emojione/png/1f470-1f3fc.png b/riot/emojione/png/1f470-1f3fc.png new file mode 100644 index 0000000..c248769 Binary files /dev/null and b/riot/emojione/png/1f470-1f3fc.png differ diff --git a/riot/emojione/png/1f470-1f3fd.png b/riot/emojione/png/1f470-1f3fd.png new file mode 100644 index 0000000..962c0a6 Binary files /dev/null and b/riot/emojione/png/1f470-1f3fd.png differ diff --git a/riot/emojione/png/1f470-1f3fe.png b/riot/emojione/png/1f470-1f3fe.png new file mode 100644 index 0000000..740ca20 Binary files /dev/null and b/riot/emojione/png/1f470-1f3fe.png differ diff --git a/riot/emojione/png/1f470-1f3ff.png b/riot/emojione/png/1f470-1f3ff.png new file mode 100644 index 0000000..5cc5598 Binary files /dev/null and b/riot/emojione/png/1f470-1f3ff.png differ diff --git a/riot/emojione/png/1f470.png b/riot/emojione/png/1f470.png new file mode 100644 index 0000000..eaf4bd9 Binary files /dev/null and b/riot/emojione/png/1f470.png differ diff --git a/riot/emojione/png/1f471-1f3fb.png b/riot/emojione/png/1f471-1f3fb.png new file mode 100644 index 0000000..7d18ef2 Binary files /dev/null and b/riot/emojione/png/1f471-1f3fb.png differ diff --git a/riot/emojione/png/1f471-1f3fc.png b/riot/emojione/png/1f471-1f3fc.png new file mode 100644 index 0000000..dae1307 Binary files /dev/null and b/riot/emojione/png/1f471-1f3fc.png differ diff --git a/riot/emojione/png/1f471-1f3fd.png b/riot/emojione/png/1f471-1f3fd.png new file mode 100644 index 0000000..684677e Binary files /dev/null and b/riot/emojione/png/1f471-1f3fd.png differ diff --git a/riot/emojione/png/1f471-1f3fe.png b/riot/emojione/png/1f471-1f3fe.png new file mode 100644 index 0000000..012be0b Binary files /dev/null and b/riot/emojione/png/1f471-1f3fe.png differ diff --git a/riot/emojione/png/1f471-1f3ff.png b/riot/emojione/png/1f471-1f3ff.png new file mode 100644 index 0000000..d4ecc4c Binary files /dev/null and b/riot/emojione/png/1f471-1f3ff.png differ diff --git a/riot/emojione/png/1f471.png b/riot/emojione/png/1f471.png new file mode 100644 index 0000000..ad6f01a Binary files /dev/null and b/riot/emojione/png/1f471.png differ diff --git a/riot/emojione/png/1f472-1f3fb.png b/riot/emojione/png/1f472-1f3fb.png new file mode 100644 index 0000000..5b7b3de Binary files /dev/null and b/riot/emojione/png/1f472-1f3fb.png differ diff --git a/riot/emojione/png/1f472-1f3fc.png b/riot/emojione/png/1f472-1f3fc.png new file mode 100644 index 0000000..c8b9cf8 Binary files /dev/null and b/riot/emojione/png/1f472-1f3fc.png differ diff --git a/riot/emojione/png/1f472-1f3fd.png b/riot/emojione/png/1f472-1f3fd.png new file mode 100644 index 0000000..effdd0c Binary files /dev/null and b/riot/emojione/png/1f472-1f3fd.png differ diff --git a/riot/emojione/png/1f472-1f3fe.png b/riot/emojione/png/1f472-1f3fe.png new file mode 100644 index 0000000..f885ff4 Binary files /dev/null and b/riot/emojione/png/1f472-1f3fe.png differ diff --git a/riot/emojione/png/1f472-1f3ff.png b/riot/emojione/png/1f472-1f3ff.png new file mode 100644 index 0000000..a6d55ca Binary files /dev/null and b/riot/emojione/png/1f472-1f3ff.png differ diff --git a/riot/emojione/png/1f472.png b/riot/emojione/png/1f472.png new file mode 100644 index 0000000..7841e13 Binary files /dev/null and b/riot/emojione/png/1f472.png differ diff --git a/riot/emojione/png/1f473-1f3fb.png b/riot/emojione/png/1f473-1f3fb.png new file mode 100644 index 0000000..1e12ee4 Binary files /dev/null and b/riot/emojione/png/1f473-1f3fb.png differ diff --git a/riot/emojione/png/1f473-1f3fc.png b/riot/emojione/png/1f473-1f3fc.png new file mode 100644 index 0000000..37de4cc Binary files /dev/null and b/riot/emojione/png/1f473-1f3fc.png differ diff --git a/riot/emojione/png/1f473-1f3fd.png b/riot/emojione/png/1f473-1f3fd.png new file mode 100644 index 0000000..f607afd Binary files /dev/null and b/riot/emojione/png/1f473-1f3fd.png differ diff --git a/riot/emojione/png/1f473-1f3fe.png b/riot/emojione/png/1f473-1f3fe.png new file mode 100644 index 0000000..c056958 Binary files /dev/null and b/riot/emojione/png/1f473-1f3fe.png differ diff --git a/riot/emojione/png/1f473-1f3ff.png b/riot/emojione/png/1f473-1f3ff.png new file mode 100644 index 0000000..4b4ff64 Binary files /dev/null and b/riot/emojione/png/1f473-1f3ff.png differ diff --git a/riot/emojione/png/1f473.png b/riot/emojione/png/1f473.png new file mode 100644 index 0000000..51cf047 Binary files /dev/null and b/riot/emojione/png/1f473.png differ diff --git a/riot/emojione/png/1f474-1f3fb.png b/riot/emojione/png/1f474-1f3fb.png new file mode 100644 index 0000000..ab459ba Binary files /dev/null and b/riot/emojione/png/1f474-1f3fb.png differ diff --git a/riot/emojione/png/1f474-1f3fc.png b/riot/emojione/png/1f474-1f3fc.png new file mode 100644 index 0000000..f4dfc76 Binary files /dev/null and b/riot/emojione/png/1f474-1f3fc.png differ diff --git a/riot/emojione/png/1f474-1f3fd.png b/riot/emojione/png/1f474-1f3fd.png new file mode 100644 index 0000000..5ffd117 Binary files /dev/null and b/riot/emojione/png/1f474-1f3fd.png differ diff --git a/riot/emojione/png/1f474-1f3fe.png b/riot/emojione/png/1f474-1f3fe.png new file mode 100644 index 0000000..b350a76 Binary files /dev/null and b/riot/emojione/png/1f474-1f3fe.png differ diff --git a/riot/emojione/png/1f474-1f3ff.png b/riot/emojione/png/1f474-1f3ff.png new file mode 100644 index 0000000..05fe24a Binary files /dev/null and b/riot/emojione/png/1f474-1f3ff.png differ diff --git a/riot/emojione/png/1f474.png b/riot/emojione/png/1f474.png new file mode 100644 index 0000000..4ace4e6 Binary files /dev/null and b/riot/emojione/png/1f474.png differ diff --git a/riot/emojione/png/1f475-1f3fb.png b/riot/emojione/png/1f475-1f3fb.png new file mode 100644 index 0000000..b49e821 Binary files /dev/null and b/riot/emojione/png/1f475-1f3fb.png differ diff --git a/riot/emojione/png/1f475-1f3fc.png b/riot/emojione/png/1f475-1f3fc.png new file mode 100644 index 0000000..e86bf5a Binary files /dev/null and b/riot/emojione/png/1f475-1f3fc.png differ diff --git a/riot/emojione/png/1f475-1f3fd.png b/riot/emojione/png/1f475-1f3fd.png new file mode 100644 index 0000000..83fc14b Binary files /dev/null and b/riot/emojione/png/1f475-1f3fd.png differ diff --git a/riot/emojione/png/1f475-1f3fe.png b/riot/emojione/png/1f475-1f3fe.png new file mode 100644 index 0000000..e4aa8a4 Binary files /dev/null and b/riot/emojione/png/1f475-1f3fe.png differ diff --git a/riot/emojione/png/1f475-1f3ff.png b/riot/emojione/png/1f475-1f3ff.png new file mode 100644 index 0000000..4009012 Binary files /dev/null and b/riot/emojione/png/1f475-1f3ff.png differ diff --git a/riot/emojione/png/1f475.png b/riot/emojione/png/1f475.png new file mode 100644 index 0000000..52dc498 Binary files /dev/null and b/riot/emojione/png/1f475.png differ diff --git a/riot/emojione/png/1f476-1f3fb.png b/riot/emojione/png/1f476-1f3fb.png new file mode 100644 index 0000000..d20911d Binary files /dev/null and b/riot/emojione/png/1f476-1f3fb.png differ diff --git a/riot/emojione/png/1f476-1f3fc.png b/riot/emojione/png/1f476-1f3fc.png new file mode 100644 index 0000000..b0a9b30 Binary files /dev/null and b/riot/emojione/png/1f476-1f3fc.png differ diff --git a/riot/emojione/png/1f476-1f3fd.png b/riot/emojione/png/1f476-1f3fd.png new file mode 100644 index 0000000..7de5286 Binary files /dev/null and b/riot/emojione/png/1f476-1f3fd.png differ diff --git a/riot/emojione/png/1f476-1f3fe.png b/riot/emojione/png/1f476-1f3fe.png new file mode 100644 index 0000000..9b7a86a Binary files /dev/null and b/riot/emojione/png/1f476-1f3fe.png differ diff --git a/riot/emojione/png/1f476-1f3ff.png b/riot/emojione/png/1f476-1f3ff.png new file mode 100644 index 0000000..fe1be34 Binary files /dev/null and b/riot/emojione/png/1f476-1f3ff.png differ diff --git a/riot/emojione/png/1f476.png b/riot/emojione/png/1f476.png new file mode 100644 index 0000000..a4af92c Binary files /dev/null and b/riot/emojione/png/1f476.png differ diff --git a/riot/emojione/png/1f477-1f3fb.png b/riot/emojione/png/1f477-1f3fb.png new file mode 100644 index 0000000..2f24a2b Binary files /dev/null and b/riot/emojione/png/1f477-1f3fb.png differ diff --git a/riot/emojione/png/1f477-1f3fc.png b/riot/emojione/png/1f477-1f3fc.png new file mode 100644 index 0000000..93c8fec Binary files /dev/null and b/riot/emojione/png/1f477-1f3fc.png differ diff --git a/riot/emojione/png/1f477-1f3fd.png b/riot/emojione/png/1f477-1f3fd.png new file mode 100644 index 0000000..abc1f2a Binary files /dev/null and b/riot/emojione/png/1f477-1f3fd.png differ diff --git a/riot/emojione/png/1f477-1f3fe.png b/riot/emojione/png/1f477-1f3fe.png new file mode 100644 index 0000000..eed8328 Binary files /dev/null and b/riot/emojione/png/1f477-1f3fe.png differ diff --git a/riot/emojione/png/1f477-1f3ff.png b/riot/emojione/png/1f477-1f3ff.png new file mode 100644 index 0000000..acbb220 Binary files /dev/null and b/riot/emojione/png/1f477-1f3ff.png differ diff --git a/riot/emojione/png/1f477.png b/riot/emojione/png/1f477.png new file mode 100644 index 0000000..a9970a8 Binary files /dev/null and b/riot/emojione/png/1f477.png differ diff --git a/riot/emojione/png/1f478-1f3fb.png b/riot/emojione/png/1f478-1f3fb.png new file mode 100644 index 0000000..c28078c Binary files /dev/null and b/riot/emojione/png/1f478-1f3fb.png differ diff --git a/riot/emojione/png/1f478-1f3fc.png b/riot/emojione/png/1f478-1f3fc.png new file mode 100644 index 0000000..dcd20e6 Binary files /dev/null and b/riot/emojione/png/1f478-1f3fc.png differ diff --git a/riot/emojione/png/1f478-1f3fd.png b/riot/emojione/png/1f478-1f3fd.png new file mode 100644 index 0000000..cde6f31 Binary files /dev/null and b/riot/emojione/png/1f478-1f3fd.png differ diff --git a/riot/emojione/png/1f478-1f3fe.png b/riot/emojione/png/1f478-1f3fe.png new file mode 100644 index 0000000..c71e69c Binary files /dev/null and b/riot/emojione/png/1f478-1f3fe.png differ diff --git a/riot/emojione/png/1f478-1f3ff.png b/riot/emojione/png/1f478-1f3ff.png new file mode 100644 index 0000000..063e264 Binary files /dev/null and b/riot/emojione/png/1f478-1f3ff.png differ diff --git a/riot/emojione/png/1f478.png b/riot/emojione/png/1f478.png new file mode 100644 index 0000000..879e9fa Binary files /dev/null and b/riot/emojione/png/1f478.png differ diff --git a/riot/emojione/png/1f479.png b/riot/emojione/png/1f479.png new file mode 100644 index 0000000..fe8670f Binary files /dev/null and b/riot/emojione/png/1f479.png differ diff --git a/riot/emojione/png/1f47a.png b/riot/emojione/png/1f47a.png new file mode 100644 index 0000000..515c6a2 Binary files /dev/null and b/riot/emojione/png/1f47a.png differ diff --git a/riot/emojione/png/1f47b.png b/riot/emojione/png/1f47b.png new file mode 100644 index 0000000..5650bc0 Binary files /dev/null and b/riot/emojione/png/1f47b.png differ diff --git a/riot/emojione/png/1f47c-1f3fb.png b/riot/emojione/png/1f47c-1f3fb.png new file mode 100644 index 0000000..391694d Binary files /dev/null and b/riot/emojione/png/1f47c-1f3fb.png differ diff --git a/riot/emojione/png/1f47c-1f3fc.png b/riot/emojione/png/1f47c-1f3fc.png new file mode 100644 index 0000000..700cbe6 Binary files /dev/null and b/riot/emojione/png/1f47c-1f3fc.png differ diff --git a/riot/emojione/png/1f47c-1f3fd.png b/riot/emojione/png/1f47c-1f3fd.png new file mode 100644 index 0000000..be59743 Binary files /dev/null and b/riot/emojione/png/1f47c-1f3fd.png differ diff --git a/riot/emojione/png/1f47c-1f3fe.png b/riot/emojione/png/1f47c-1f3fe.png new file mode 100644 index 0000000..b06d3c8 Binary files /dev/null and b/riot/emojione/png/1f47c-1f3fe.png differ diff --git a/riot/emojione/png/1f47c-1f3ff.png b/riot/emojione/png/1f47c-1f3ff.png new file mode 100644 index 0000000..17bd677 Binary files /dev/null and b/riot/emojione/png/1f47c-1f3ff.png differ diff --git a/riot/emojione/png/1f47c.png b/riot/emojione/png/1f47c.png new file mode 100644 index 0000000..66ea97a Binary files /dev/null and b/riot/emojione/png/1f47c.png differ diff --git a/riot/emojione/png/1f47d.png b/riot/emojione/png/1f47d.png new file mode 100644 index 0000000..3b90e97 Binary files /dev/null and b/riot/emojione/png/1f47d.png differ diff --git a/riot/emojione/png/1f47e.png b/riot/emojione/png/1f47e.png new file mode 100644 index 0000000..2e73f5f Binary files /dev/null and b/riot/emojione/png/1f47e.png differ diff --git a/riot/emojione/png/1f47f.png b/riot/emojione/png/1f47f.png new file mode 100644 index 0000000..9f9a960 Binary files /dev/null and b/riot/emojione/png/1f47f.png differ diff --git a/riot/emojione/png/1f480.png b/riot/emojione/png/1f480.png new file mode 100644 index 0000000..26abb17 Binary files /dev/null and b/riot/emojione/png/1f480.png differ diff --git a/riot/emojione/png/1f481-1f3fb.png b/riot/emojione/png/1f481-1f3fb.png new file mode 100644 index 0000000..3d9e224 Binary files /dev/null and b/riot/emojione/png/1f481-1f3fb.png differ diff --git a/riot/emojione/png/1f481-1f3fc.png b/riot/emojione/png/1f481-1f3fc.png new file mode 100644 index 0000000..879e8b7 Binary files /dev/null and b/riot/emojione/png/1f481-1f3fc.png differ diff --git a/riot/emojione/png/1f481-1f3fd.png b/riot/emojione/png/1f481-1f3fd.png new file mode 100644 index 0000000..307514e Binary files /dev/null and b/riot/emojione/png/1f481-1f3fd.png differ diff --git a/riot/emojione/png/1f481-1f3fe.png b/riot/emojione/png/1f481-1f3fe.png new file mode 100644 index 0000000..297395d Binary files /dev/null and b/riot/emojione/png/1f481-1f3fe.png differ diff --git a/riot/emojione/png/1f481-1f3ff.png b/riot/emojione/png/1f481-1f3ff.png new file mode 100644 index 0000000..26f8f22 Binary files /dev/null and b/riot/emojione/png/1f481-1f3ff.png differ diff --git a/riot/emojione/png/1f481.png b/riot/emojione/png/1f481.png new file mode 100644 index 0000000..55fc629 Binary files /dev/null and b/riot/emojione/png/1f481.png differ diff --git a/riot/emojione/png/1f482-1f3fb.png b/riot/emojione/png/1f482-1f3fb.png new file mode 100644 index 0000000..cea9ba2 Binary files /dev/null and b/riot/emojione/png/1f482-1f3fb.png differ diff --git a/riot/emojione/png/1f482-1f3fc.png b/riot/emojione/png/1f482-1f3fc.png new file mode 100644 index 0000000..037464e Binary files /dev/null and b/riot/emojione/png/1f482-1f3fc.png differ diff --git a/riot/emojione/png/1f482-1f3fd.png b/riot/emojione/png/1f482-1f3fd.png new file mode 100644 index 0000000..0f6726f Binary files /dev/null and b/riot/emojione/png/1f482-1f3fd.png differ diff --git a/riot/emojione/png/1f482-1f3fe.png b/riot/emojione/png/1f482-1f3fe.png new file mode 100644 index 0000000..85fcf9a Binary files /dev/null and b/riot/emojione/png/1f482-1f3fe.png differ diff --git a/riot/emojione/png/1f482-1f3ff.png b/riot/emojione/png/1f482-1f3ff.png new file mode 100644 index 0000000..e5f9ca7 Binary files /dev/null and b/riot/emojione/png/1f482-1f3ff.png differ diff --git a/riot/emojione/png/1f482.png b/riot/emojione/png/1f482.png new file mode 100644 index 0000000..8d7ab3c Binary files /dev/null and b/riot/emojione/png/1f482.png differ diff --git a/riot/emojione/png/1f483-1f3fb.png b/riot/emojione/png/1f483-1f3fb.png new file mode 100644 index 0000000..2c7b11c Binary files /dev/null and b/riot/emojione/png/1f483-1f3fb.png differ diff --git a/riot/emojione/png/1f483-1f3fc.png b/riot/emojione/png/1f483-1f3fc.png new file mode 100644 index 0000000..cb04b1f Binary files /dev/null and b/riot/emojione/png/1f483-1f3fc.png differ diff --git a/riot/emojione/png/1f483-1f3fd.png b/riot/emojione/png/1f483-1f3fd.png new file mode 100644 index 0000000..98c5bca Binary files /dev/null and b/riot/emojione/png/1f483-1f3fd.png differ diff --git a/riot/emojione/png/1f483-1f3fe.png b/riot/emojione/png/1f483-1f3fe.png new file mode 100644 index 0000000..fdb1e00 Binary files /dev/null and b/riot/emojione/png/1f483-1f3fe.png differ diff --git a/riot/emojione/png/1f483-1f3ff.png b/riot/emojione/png/1f483-1f3ff.png new file mode 100644 index 0000000..0e34e0e Binary files /dev/null and b/riot/emojione/png/1f483-1f3ff.png differ diff --git a/riot/emojione/png/1f483.png b/riot/emojione/png/1f483.png new file mode 100644 index 0000000..04b1669 Binary files /dev/null and b/riot/emojione/png/1f483.png differ diff --git a/riot/emojione/png/1f484.png b/riot/emojione/png/1f484.png new file mode 100644 index 0000000..61a0c08 Binary files /dev/null and b/riot/emojione/png/1f484.png differ diff --git a/riot/emojione/png/1f485-1f3fb.png b/riot/emojione/png/1f485-1f3fb.png new file mode 100644 index 0000000..26e883d Binary files /dev/null and b/riot/emojione/png/1f485-1f3fb.png differ diff --git a/riot/emojione/png/1f485-1f3fc.png b/riot/emojione/png/1f485-1f3fc.png new file mode 100644 index 0000000..61257b4 Binary files /dev/null and b/riot/emojione/png/1f485-1f3fc.png differ diff --git a/riot/emojione/png/1f485-1f3fd.png b/riot/emojione/png/1f485-1f3fd.png new file mode 100644 index 0000000..29871b0 Binary files /dev/null and b/riot/emojione/png/1f485-1f3fd.png differ diff --git a/riot/emojione/png/1f485-1f3fe.png b/riot/emojione/png/1f485-1f3fe.png new file mode 100644 index 0000000..2881de0 Binary files /dev/null and b/riot/emojione/png/1f485-1f3fe.png differ diff --git a/riot/emojione/png/1f485-1f3ff.png b/riot/emojione/png/1f485-1f3ff.png new file mode 100644 index 0000000..a0b7c0a Binary files /dev/null and b/riot/emojione/png/1f485-1f3ff.png differ diff --git a/riot/emojione/png/1f485.png b/riot/emojione/png/1f485.png new file mode 100644 index 0000000..aa52af7 Binary files /dev/null and b/riot/emojione/png/1f485.png differ diff --git a/riot/emojione/png/1f486-1f3fb.png b/riot/emojione/png/1f486-1f3fb.png new file mode 100644 index 0000000..e0f415d Binary files /dev/null and b/riot/emojione/png/1f486-1f3fb.png differ diff --git a/riot/emojione/png/1f486-1f3fc.png b/riot/emojione/png/1f486-1f3fc.png new file mode 100644 index 0000000..0bb244a Binary files /dev/null and b/riot/emojione/png/1f486-1f3fc.png differ diff --git a/riot/emojione/png/1f486-1f3fd.png b/riot/emojione/png/1f486-1f3fd.png new file mode 100644 index 0000000..a117ee8 Binary files /dev/null and b/riot/emojione/png/1f486-1f3fd.png differ diff --git a/riot/emojione/png/1f486-1f3fe.png b/riot/emojione/png/1f486-1f3fe.png new file mode 100644 index 0000000..6f42ab0 Binary files /dev/null and b/riot/emojione/png/1f486-1f3fe.png differ diff --git a/riot/emojione/png/1f486-1f3ff.png b/riot/emojione/png/1f486-1f3ff.png new file mode 100644 index 0000000..6a388c0 Binary files /dev/null and b/riot/emojione/png/1f486-1f3ff.png differ diff --git a/riot/emojione/png/1f486.png b/riot/emojione/png/1f486.png new file mode 100644 index 0000000..b91d845 Binary files /dev/null and b/riot/emojione/png/1f486.png differ diff --git a/riot/emojione/png/1f487-1f3fb.png b/riot/emojione/png/1f487-1f3fb.png new file mode 100644 index 0000000..c743b74 Binary files /dev/null and b/riot/emojione/png/1f487-1f3fb.png differ diff --git a/riot/emojione/png/1f487-1f3fc.png b/riot/emojione/png/1f487-1f3fc.png new file mode 100644 index 0000000..f144f8e Binary files /dev/null and b/riot/emojione/png/1f487-1f3fc.png differ diff --git a/riot/emojione/png/1f487-1f3fd.png b/riot/emojione/png/1f487-1f3fd.png new file mode 100644 index 0000000..d5ad195 Binary files /dev/null and b/riot/emojione/png/1f487-1f3fd.png differ diff --git a/riot/emojione/png/1f487-1f3fe.png b/riot/emojione/png/1f487-1f3fe.png new file mode 100644 index 0000000..244fd3a Binary files /dev/null and b/riot/emojione/png/1f487-1f3fe.png differ diff --git a/riot/emojione/png/1f487-1f3ff.png b/riot/emojione/png/1f487-1f3ff.png new file mode 100644 index 0000000..20a94a8 Binary files /dev/null and b/riot/emojione/png/1f487-1f3ff.png differ diff --git a/riot/emojione/png/1f487.png b/riot/emojione/png/1f487.png new file mode 100644 index 0000000..91266b1 Binary files /dev/null and b/riot/emojione/png/1f487.png differ diff --git a/riot/emojione/png/1f488.png b/riot/emojione/png/1f488.png new file mode 100644 index 0000000..896f4d7 Binary files /dev/null and b/riot/emojione/png/1f488.png differ diff --git a/riot/emojione/png/1f489.png b/riot/emojione/png/1f489.png new file mode 100644 index 0000000..71c1a95 Binary files /dev/null and b/riot/emojione/png/1f489.png differ diff --git a/riot/emojione/png/1f48a.png b/riot/emojione/png/1f48a.png new file mode 100644 index 0000000..1d4530e Binary files /dev/null and b/riot/emojione/png/1f48a.png differ diff --git a/riot/emojione/png/1f48b.png b/riot/emojione/png/1f48b.png new file mode 100644 index 0000000..85e6dcf Binary files /dev/null and b/riot/emojione/png/1f48b.png differ diff --git a/riot/emojione/png/1f48c.png b/riot/emojione/png/1f48c.png new file mode 100644 index 0000000..3c3c767 Binary files /dev/null and b/riot/emojione/png/1f48c.png differ diff --git a/riot/emojione/png/1f48d.png b/riot/emojione/png/1f48d.png new file mode 100644 index 0000000..87d227a Binary files /dev/null and b/riot/emojione/png/1f48d.png differ diff --git a/riot/emojione/png/1f48e.png b/riot/emojione/png/1f48e.png new file mode 100644 index 0000000..db122d2 Binary files /dev/null and b/riot/emojione/png/1f48e.png differ diff --git a/riot/emojione/png/1f48f.png b/riot/emojione/png/1f48f.png new file mode 100644 index 0000000..9aa519d Binary files /dev/null and b/riot/emojione/png/1f48f.png differ diff --git a/riot/emojione/png/1f490.png b/riot/emojione/png/1f490.png new file mode 100644 index 0000000..11455af Binary files /dev/null and b/riot/emojione/png/1f490.png differ diff --git a/riot/emojione/png/1f491.png b/riot/emojione/png/1f491.png new file mode 100644 index 0000000..6211160 Binary files /dev/null and b/riot/emojione/png/1f491.png differ diff --git a/riot/emojione/png/1f492.png b/riot/emojione/png/1f492.png new file mode 100644 index 0000000..d0d8aa0 Binary files /dev/null and b/riot/emojione/png/1f492.png differ diff --git a/riot/emojione/png/1f493.png b/riot/emojione/png/1f493.png new file mode 100644 index 0000000..0bcf2d1 Binary files /dev/null and b/riot/emojione/png/1f493.png differ diff --git a/riot/emojione/png/1f494.png b/riot/emojione/png/1f494.png new file mode 100644 index 0000000..718e26e Binary files /dev/null and b/riot/emojione/png/1f494.png differ diff --git a/riot/emojione/png/1f495.png b/riot/emojione/png/1f495.png new file mode 100644 index 0000000..4d8c338 Binary files /dev/null and b/riot/emojione/png/1f495.png differ diff --git a/riot/emojione/png/1f496.png b/riot/emojione/png/1f496.png new file mode 100644 index 0000000..6709269 Binary files /dev/null and b/riot/emojione/png/1f496.png differ diff --git a/riot/emojione/png/1f497.png b/riot/emojione/png/1f497.png new file mode 100644 index 0000000..d6e694e Binary files /dev/null and b/riot/emojione/png/1f497.png differ diff --git a/riot/emojione/png/1f498.png b/riot/emojione/png/1f498.png new file mode 100644 index 0000000..2df0078 Binary files /dev/null and b/riot/emojione/png/1f498.png differ diff --git a/riot/emojione/png/1f499.png b/riot/emojione/png/1f499.png new file mode 100644 index 0000000..bdf1287 Binary files /dev/null and b/riot/emojione/png/1f499.png differ diff --git a/riot/emojione/png/1f49a.png b/riot/emojione/png/1f49a.png new file mode 100644 index 0000000..c52d60a Binary files /dev/null and b/riot/emojione/png/1f49a.png differ diff --git a/riot/emojione/png/1f49b.png b/riot/emojione/png/1f49b.png new file mode 100644 index 0000000..7901a9d Binary files /dev/null and b/riot/emojione/png/1f49b.png differ diff --git a/riot/emojione/png/1f49c.png b/riot/emojione/png/1f49c.png new file mode 100644 index 0000000..95c53a9 Binary files /dev/null and b/riot/emojione/png/1f49c.png differ diff --git a/riot/emojione/png/1f49d.png b/riot/emojione/png/1f49d.png new file mode 100644 index 0000000..902ceaf Binary files /dev/null and b/riot/emojione/png/1f49d.png differ diff --git a/riot/emojione/png/1f49e.png b/riot/emojione/png/1f49e.png new file mode 100644 index 0000000..7b9d194 Binary files /dev/null and b/riot/emojione/png/1f49e.png differ diff --git a/riot/emojione/png/1f49f.png b/riot/emojione/png/1f49f.png new file mode 100644 index 0000000..5443f60 Binary files /dev/null and b/riot/emojione/png/1f49f.png differ diff --git a/riot/emojione/png/1f4a0.png b/riot/emojione/png/1f4a0.png new file mode 100644 index 0000000..2a22a26 Binary files /dev/null and b/riot/emojione/png/1f4a0.png differ diff --git a/riot/emojione/png/1f4a1.png b/riot/emojione/png/1f4a1.png new file mode 100644 index 0000000..38e32e0 Binary files /dev/null and b/riot/emojione/png/1f4a1.png differ diff --git a/riot/emojione/png/1f4a2.png b/riot/emojione/png/1f4a2.png new file mode 100644 index 0000000..d63c2e0 Binary files /dev/null and b/riot/emojione/png/1f4a2.png differ diff --git a/riot/emojione/png/1f4a3.png b/riot/emojione/png/1f4a3.png new file mode 100644 index 0000000..c7f8f81 Binary files /dev/null and b/riot/emojione/png/1f4a3.png differ diff --git a/riot/emojione/png/1f4a4.png b/riot/emojione/png/1f4a4.png new file mode 100644 index 0000000..9bc72b4 Binary files /dev/null and b/riot/emojione/png/1f4a4.png differ diff --git a/riot/emojione/png/1f4a5.png b/riot/emojione/png/1f4a5.png new file mode 100644 index 0000000..9b0f027 Binary files /dev/null and b/riot/emojione/png/1f4a5.png differ diff --git a/riot/emojione/png/1f4a6.png b/riot/emojione/png/1f4a6.png new file mode 100644 index 0000000..4106117 Binary files /dev/null and b/riot/emojione/png/1f4a6.png differ diff --git a/riot/emojione/png/1f4a7.png b/riot/emojione/png/1f4a7.png new file mode 100644 index 0000000..71241ec Binary files /dev/null and b/riot/emojione/png/1f4a7.png differ diff --git a/riot/emojione/png/1f4a8.png b/riot/emojione/png/1f4a8.png new file mode 100644 index 0000000..064b852 Binary files /dev/null and b/riot/emojione/png/1f4a8.png differ diff --git a/riot/emojione/png/1f4a9.png b/riot/emojione/png/1f4a9.png new file mode 100644 index 0000000..10b15e7 Binary files /dev/null and b/riot/emojione/png/1f4a9.png differ diff --git a/riot/emojione/png/1f4aa-1f3fb.png b/riot/emojione/png/1f4aa-1f3fb.png new file mode 100644 index 0000000..1522942 Binary files /dev/null and b/riot/emojione/png/1f4aa-1f3fb.png differ diff --git a/riot/emojione/png/1f4aa-1f3fc.png b/riot/emojione/png/1f4aa-1f3fc.png new file mode 100644 index 0000000..569c6e8 Binary files /dev/null and b/riot/emojione/png/1f4aa-1f3fc.png differ diff --git a/riot/emojione/png/1f4aa-1f3fd.png b/riot/emojione/png/1f4aa-1f3fd.png new file mode 100644 index 0000000..0a76b00 Binary files /dev/null and b/riot/emojione/png/1f4aa-1f3fd.png differ diff --git a/riot/emojione/png/1f4aa-1f3fe.png b/riot/emojione/png/1f4aa-1f3fe.png new file mode 100644 index 0000000..f0cf313 Binary files /dev/null and b/riot/emojione/png/1f4aa-1f3fe.png differ diff --git a/riot/emojione/png/1f4aa-1f3ff.png b/riot/emojione/png/1f4aa-1f3ff.png new file mode 100644 index 0000000..4fda924 Binary files /dev/null and b/riot/emojione/png/1f4aa-1f3ff.png differ diff --git a/riot/emojione/png/1f4aa.png b/riot/emojione/png/1f4aa.png new file mode 100644 index 0000000..7e67c18 Binary files /dev/null and b/riot/emojione/png/1f4aa.png differ diff --git a/riot/emojione/png/1f4ab.png b/riot/emojione/png/1f4ab.png new file mode 100644 index 0000000..85f52ef Binary files /dev/null and b/riot/emojione/png/1f4ab.png differ diff --git a/riot/emojione/png/1f4ac.png b/riot/emojione/png/1f4ac.png new file mode 100644 index 0000000..a34ef74 Binary files /dev/null and b/riot/emojione/png/1f4ac.png differ diff --git a/riot/emojione/png/1f4ad.png b/riot/emojione/png/1f4ad.png new file mode 100644 index 0000000..72fe8fa Binary files /dev/null and b/riot/emojione/png/1f4ad.png differ diff --git a/riot/emojione/png/1f4ae.png b/riot/emojione/png/1f4ae.png new file mode 100644 index 0000000..d6af8b6 Binary files /dev/null and b/riot/emojione/png/1f4ae.png differ diff --git a/riot/emojione/png/1f4af.png b/riot/emojione/png/1f4af.png new file mode 100644 index 0000000..6903ff0 Binary files /dev/null and b/riot/emojione/png/1f4af.png differ diff --git a/riot/emojione/png/1f4b0.png b/riot/emojione/png/1f4b0.png new file mode 100644 index 0000000..b9296be Binary files /dev/null and b/riot/emojione/png/1f4b0.png differ diff --git a/riot/emojione/png/1f4b1.png b/riot/emojione/png/1f4b1.png new file mode 100644 index 0000000..4d46c60 Binary files /dev/null and b/riot/emojione/png/1f4b1.png differ diff --git a/riot/emojione/png/1f4b2.png b/riot/emojione/png/1f4b2.png new file mode 100644 index 0000000..ef2c2e2 Binary files /dev/null and b/riot/emojione/png/1f4b2.png differ diff --git a/riot/emojione/png/1f4b3.png b/riot/emojione/png/1f4b3.png new file mode 100644 index 0000000..372777d Binary files /dev/null and b/riot/emojione/png/1f4b3.png differ diff --git a/riot/emojione/png/1f4b4.png b/riot/emojione/png/1f4b4.png new file mode 100644 index 0000000..63ee479 Binary files /dev/null and b/riot/emojione/png/1f4b4.png differ diff --git a/riot/emojione/png/1f4b5.png b/riot/emojione/png/1f4b5.png new file mode 100644 index 0000000..a9904c2 Binary files /dev/null and b/riot/emojione/png/1f4b5.png differ diff --git a/riot/emojione/png/1f4b6.png b/riot/emojione/png/1f4b6.png new file mode 100644 index 0000000..a490208 Binary files /dev/null and b/riot/emojione/png/1f4b6.png differ diff --git a/riot/emojione/png/1f4b7.png b/riot/emojione/png/1f4b7.png new file mode 100644 index 0000000..a0d4c40 Binary files /dev/null and b/riot/emojione/png/1f4b7.png differ diff --git a/riot/emojione/png/1f4b8.png b/riot/emojione/png/1f4b8.png new file mode 100644 index 0000000..f022b04 Binary files /dev/null and b/riot/emojione/png/1f4b8.png differ diff --git a/riot/emojione/png/1f4b9.png b/riot/emojione/png/1f4b9.png new file mode 100644 index 0000000..9773f03 Binary files /dev/null and b/riot/emojione/png/1f4b9.png differ diff --git a/riot/emojione/png/1f4ba.png b/riot/emojione/png/1f4ba.png new file mode 100644 index 0000000..a6d72d9 Binary files /dev/null and b/riot/emojione/png/1f4ba.png differ diff --git a/riot/emojione/png/1f4bb.png b/riot/emojione/png/1f4bb.png new file mode 100644 index 0000000..c1fee27 Binary files /dev/null and b/riot/emojione/png/1f4bb.png differ diff --git a/riot/emojione/png/1f4bc.png b/riot/emojione/png/1f4bc.png new file mode 100644 index 0000000..b9912ba Binary files /dev/null and b/riot/emojione/png/1f4bc.png differ diff --git a/riot/emojione/png/1f4bd.png b/riot/emojione/png/1f4bd.png new file mode 100644 index 0000000..9fa94cf Binary files /dev/null and b/riot/emojione/png/1f4bd.png differ diff --git a/riot/emojione/png/1f4be.png b/riot/emojione/png/1f4be.png new file mode 100644 index 0000000..072a76d Binary files /dev/null and b/riot/emojione/png/1f4be.png differ diff --git a/riot/emojione/png/1f4bf.png b/riot/emojione/png/1f4bf.png new file mode 100644 index 0000000..e6b0144 Binary files /dev/null and b/riot/emojione/png/1f4bf.png differ diff --git a/riot/emojione/png/1f4c0.png b/riot/emojione/png/1f4c0.png new file mode 100644 index 0000000..045a6f7 Binary files /dev/null and b/riot/emojione/png/1f4c0.png differ diff --git a/riot/emojione/png/1f4c1.png b/riot/emojione/png/1f4c1.png new file mode 100644 index 0000000..addedaf Binary files /dev/null and b/riot/emojione/png/1f4c1.png differ diff --git a/riot/emojione/png/1f4c2.png b/riot/emojione/png/1f4c2.png new file mode 100644 index 0000000..3993b09 Binary files /dev/null and b/riot/emojione/png/1f4c2.png differ diff --git a/riot/emojione/png/1f4c3.png b/riot/emojione/png/1f4c3.png new file mode 100644 index 0000000..0635531 Binary files /dev/null and b/riot/emojione/png/1f4c3.png differ diff --git a/riot/emojione/png/1f4c4.png b/riot/emojione/png/1f4c4.png new file mode 100644 index 0000000..ba4ed75 Binary files /dev/null and b/riot/emojione/png/1f4c4.png differ diff --git a/riot/emojione/png/1f4c5.png b/riot/emojione/png/1f4c5.png new file mode 100644 index 0000000..f05b3da Binary files /dev/null and b/riot/emojione/png/1f4c5.png differ diff --git a/riot/emojione/png/1f4c6.png b/riot/emojione/png/1f4c6.png new file mode 100644 index 0000000..47353b7 Binary files /dev/null and b/riot/emojione/png/1f4c6.png differ diff --git a/riot/emojione/png/1f4c7.png b/riot/emojione/png/1f4c7.png new file mode 100644 index 0000000..151e11c Binary files /dev/null and b/riot/emojione/png/1f4c7.png differ diff --git a/riot/emojione/png/1f4c8.png b/riot/emojione/png/1f4c8.png new file mode 100644 index 0000000..f13cfcf Binary files /dev/null and b/riot/emojione/png/1f4c8.png differ diff --git a/riot/emojione/png/1f4c9.png b/riot/emojione/png/1f4c9.png new file mode 100644 index 0000000..5222ec7 Binary files /dev/null and b/riot/emojione/png/1f4c9.png differ diff --git a/riot/emojione/png/1f4ca.png b/riot/emojione/png/1f4ca.png new file mode 100644 index 0000000..53c8945 Binary files /dev/null and b/riot/emojione/png/1f4ca.png differ diff --git a/riot/emojione/png/1f4cb.png b/riot/emojione/png/1f4cb.png new file mode 100644 index 0000000..7edcfc5 Binary files /dev/null and b/riot/emojione/png/1f4cb.png differ diff --git a/riot/emojione/png/1f4cc.png b/riot/emojione/png/1f4cc.png new file mode 100644 index 0000000..57e07d7 Binary files /dev/null and b/riot/emojione/png/1f4cc.png differ diff --git a/riot/emojione/png/1f4cd.png b/riot/emojione/png/1f4cd.png new file mode 100644 index 0000000..28b9d72 Binary files /dev/null and b/riot/emojione/png/1f4cd.png differ diff --git a/riot/emojione/png/1f4ce.png b/riot/emojione/png/1f4ce.png new file mode 100644 index 0000000..8cd8d4f Binary files /dev/null and b/riot/emojione/png/1f4ce.png differ diff --git a/riot/emojione/png/1f4cf.png b/riot/emojione/png/1f4cf.png new file mode 100644 index 0000000..1017b74 Binary files /dev/null and b/riot/emojione/png/1f4cf.png differ diff --git a/riot/emojione/png/1f4d0.png b/riot/emojione/png/1f4d0.png new file mode 100644 index 0000000..77dee9e Binary files /dev/null and b/riot/emojione/png/1f4d0.png differ diff --git a/riot/emojione/png/1f4d1.png b/riot/emojione/png/1f4d1.png new file mode 100644 index 0000000..f8d9e01 Binary files /dev/null and b/riot/emojione/png/1f4d1.png differ diff --git a/riot/emojione/png/1f4d2.png b/riot/emojione/png/1f4d2.png new file mode 100644 index 0000000..13e7561 Binary files /dev/null and b/riot/emojione/png/1f4d2.png differ diff --git a/riot/emojione/png/1f4d3.png b/riot/emojione/png/1f4d3.png new file mode 100644 index 0000000..f6c28b4 Binary files /dev/null and b/riot/emojione/png/1f4d3.png differ diff --git a/riot/emojione/png/1f4d4.png b/riot/emojione/png/1f4d4.png new file mode 100644 index 0000000..03f566b Binary files /dev/null and b/riot/emojione/png/1f4d4.png differ diff --git a/riot/emojione/png/1f4d5.png b/riot/emojione/png/1f4d5.png new file mode 100644 index 0000000..6395cf2 Binary files /dev/null and b/riot/emojione/png/1f4d5.png differ diff --git a/riot/emojione/png/1f4d6.png b/riot/emojione/png/1f4d6.png new file mode 100644 index 0000000..0f4447e Binary files /dev/null and b/riot/emojione/png/1f4d6.png differ diff --git a/riot/emojione/png/1f4d7.png b/riot/emojione/png/1f4d7.png new file mode 100644 index 0000000..e5e411c Binary files /dev/null and b/riot/emojione/png/1f4d7.png differ diff --git a/riot/emojione/png/1f4d8.png b/riot/emojione/png/1f4d8.png new file mode 100644 index 0000000..e1e4554 Binary files /dev/null and b/riot/emojione/png/1f4d8.png differ diff --git a/riot/emojione/png/1f4d9.png b/riot/emojione/png/1f4d9.png new file mode 100644 index 0000000..ab40e6a Binary files /dev/null and b/riot/emojione/png/1f4d9.png differ diff --git a/riot/emojione/png/1f4da.png b/riot/emojione/png/1f4da.png new file mode 100644 index 0000000..59a8baf Binary files /dev/null and b/riot/emojione/png/1f4da.png differ diff --git a/riot/emojione/png/1f4db.png b/riot/emojione/png/1f4db.png new file mode 100644 index 0000000..ec5ee21 Binary files /dev/null and b/riot/emojione/png/1f4db.png differ diff --git a/riot/emojione/png/1f4dc.png b/riot/emojione/png/1f4dc.png new file mode 100644 index 0000000..50ee5dc Binary files /dev/null and b/riot/emojione/png/1f4dc.png differ diff --git a/riot/emojione/png/1f4dd.png b/riot/emojione/png/1f4dd.png new file mode 100644 index 0000000..edc6155 Binary files /dev/null and b/riot/emojione/png/1f4dd.png differ diff --git a/riot/emojione/png/1f4de.png b/riot/emojione/png/1f4de.png new file mode 100644 index 0000000..6938831 Binary files /dev/null and b/riot/emojione/png/1f4de.png differ diff --git a/riot/emojione/png/1f4df.png b/riot/emojione/png/1f4df.png new file mode 100644 index 0000000..b24b993 Binary files /dev/null and b/riot/emojione/png/1f4df.png differ diff --git a/riot/emojione/png/1f4e0.png b/riot/emojione/png/1f4e0.png new file mode 100644 index 0000000..6f929e2 Binary files /dev/null and b/riot/emojione/png/1f4e0.png differ diff --git a/riot/emojione/png/1f4e1.png b/riot/emojione/png/1f4e1.png new file mode 100644 index 0000000..db03727 Binary files /dev/null and b/riot/emojione/png/1f4e1.png differ diff --git a/riot/emojione/png/1f4e2.png b/riot/emojione/png/1f4e2.png new file mode 100644 index 0000000..5fd76a9 Binary files /dev/null and b/riot/emojione/png/1f4e2.png differ diff --git a/riot/emojione/png/1f4e3.png b/riot/emojione/png/1f4e3.png new file mode 100644 index 0000000..4e67351 Binary files /dev/null and b/riot/emojione/png/1f4e3.png differ diff --git a/riot/emojione/png/1f4e4.png b/riot/emojione/png/1f4e4.png new file mode 100644 index 0000000..46493ed Binary files /dev/null and b/riot/emojione/png/1f4e4.png differ diff --git a/riot/emojione/png/1f4e5.png b/riot/emojione/png/1f4e5.png new file mode 100644 index 0000000..41a6be2 Binary files /dev/null and b/riot/emojione/png/1f4e5.png differ diff --git a/riot/emojione/png/1f4e6.png b/riot/emojione/png/1f4e6.png new file mode 100644 index 0000000..8543175 Binary files /dev/null and b/riot/emojione/png/1f4e6.png differ diff --git a/riot/emojione/png/1f4e7.png b/riot/emojione/png/1f4e7.png new file mode 100644 index 0000000..d22e654 Binary files /dev/null and b/riot/emojione/png/1f4e7.png differ diff --git a/riot/emojione/png/1f4e8.png b/riot/emojione/png/1f4e8.png new file mode 100644 index 0000000..fd22e88 Binary files /dev/null and b/riot/emojione/png/1f4e8.png differ diff --git a/riot/emojione/png/1f4e9.png b/riot/emojione/png/1f4e9.png new file mode 100644 index 0000000..7448a6b Binary files /dev/null and b/riot/emojione/png/1f4e9.png differ diff --git a/riot/emojione/png/1f4ea.png b/riot/emojione/png/1f4ea.png new file mode 100644 index 0000000..ddc705d Binary files /dev/null and b/riot/emojione/png/1f4ea.png differ diff --git a/riot/emojione/png/1f4eb.png b/riot/emojione/png/1f4eb.png new file mode 100644 index 0000000..ef5174e Binary files /dev/null and b/riot/emojione/png/1f4eb.png differ diff --git a/riot/emojione/png/1f4ec.png b/riot/emojione/png/1f4ec.png new file mode 100644 index 0000000..5460616 Binary files /dev/null and b/riot/emojione/png/1f4ec.png differ diff --git a/riot/emojione/png/1f4ed.png b/riot/emojione/png/1f4ed.png new file mode 100644 index 0000000..f9aeee6 Binary files /dev/null and b/riot/emojione/png/1f4ed.png differ diff --git a/riot/emojione/png/1f4ee.png b/riot/emojione/png/1f4ee.png new file mode 100644 index 0000000..07c9c4a Binary files /dev/null and b/riot/emojione/png/1f4ee.png differ diff --git a/riot/emojione/png/1f4ef.png b/riot/emojione/png/1f4ef.png new file mode 100644 index 0000000..c173b8d Binary files /dev/null and b/riot/emojione/png/1f4ef.png differ diff --git a/riot/emojione/png/1f4f0.png b/riot/emojione/png/1f4f0.png new file mode 100644 index 0000000..2aa8f06 Binary files /dev/null and b/riot/emojione/png/1f4f0.png differ diff --git a/riot/emojione/png/1f4f1.png b/riot/emojione/png/1f4f1.png new file mode 100644 index 0000000..fd377ac Binary files /dev/null and b/riot/emojione/png/1f4f1.png differ diff --git a/riot/emojione/png/1f4f2.png b/riot/emojione/png/1f4f2.png new file mode 100644 index 0000000..e2f308f Binary files /dev/null and b/riot/emojione/png/1f4f2.png differ diff --git a/riot/emojione/png/1f4f3.png b/riot/emojione/png/1f4f3.png new file mode 100644 index 0000000..cc46510 Binary files /dev/null and b/riot/emojione/png/1f4f3.png differ diff --git a/riot/emojione/png/1f4f4.png b/riot/emojione/png/1f4f4.png new file mode 100644 index 0000000..8b661ec Binary files /dev/null and b/riot/emojione/png/1f4f4.png differ diff --git a/riot/emojione/png/1f4f5.png b/riot/emojione/png/1f4f5.png new file mode 100644 index 0000000..7b1ae6e Binary files /dev/null and b/riot/emojione/png/1f4f5.png differ diff --git a/riot/emojione/png/1f4f6.png b/riot/emojione/png/1f4f6.png new file mode 100644 index 0000000..ee2b5a4 Binary files /dev/null and b/riot/emojione/png/1f4f6.png differ diff --git a/riot/emojione/png/1f4f7.png b/riot/emojione/png/1f4f7.png new file mode 100644 index 0000000..0a3429f Binary files /dev/null and b/riot/emojione/png/1f4f7.png differ diff --git a/riot/emojione/png/1f4f8.png b/riot/emojione/png/1f4f8.png new file mode 100644 index 0000000..27471da Binary files /dev/null and b/riot/emojione/png/1f4f8.png differ diff --git a/riot/emojione/png/1f4f9.png b/riot/emojione/png/1f4f9.png new file mode 100644 index 0000000..85b300d Binary files /dev/null and b/riot/emojione/png/1f4f9.png differ diff --git a/riot/emojione/png/1f4fa.png b/riot/emojione/png/1f4fa.png new file mode 100644 index 0000000..999f1fb Binary files /dev/null and b/riot/emojione/png/1f4fa.png differ diff --git a/riot/emojione/png/1f4fb.png b/riot/emojione/png/1f4fb.png new file mode 100644 index 0000000..dec381f Binary files /dev/null and b/riot/emojione/png/1f4fb.png differ diff --git a/riot/emojione/png/1f4fc.png b/riot/emojione/png/1f4fc.png new file mode 100644 index 0000000..b9eb78e Binary files /dev/null and b/riot/emojione/png/1f4fc.png differ diff --git a/riot/emojione/png/1f4fd.png b/riot/emojione/png/1f4fd.png new file mode 100644 index 0000000..ce9ab0d Binary files /dev/null and b/riot/emojione/png/1f4fd.png differ diff --git a/riot/emojione/png/1f4ff.png b/riot/emojione/png/1f4ff.png new file mode 100644 index 0000000..a4b6dfc Binary files /dev/null and b/riot/emojione/png/1f4ff.png differ diff --git a/riot/emojione/png/1f500.png b/riot/emojione/png/1f500.png new file mode 100644 index 0000000..5904bad Binary files /dev/null and b/riot/emojione/png/1f500.png differ diff --git a/riot/emojione/png/1f501.png b/riot/emojione/png/1f501.png new file mode 100644 index 0000000..540ce4e Binary files /dev/null and b/riot/emojione/png/1f501.png differ diff --git a/riot/emojione/png/1f502.png b/riot/emojione/png/1f502.png new file mode 100644 index 0000000..9567e83 Binary files /dev/null and b/riot/emojione/png/1f502.png differ diff --git a/riot/emojione/png/1f503.png b/riot/emojione/png/1f503.png new file mode 100644 index 0000000..26e49c3 Binary files /dev/null and b/riot/emojione/png/1f503.png differ diff --git a/riot/emojione/png/1f504.png b/riot/emojione/png/1f504.png new file mode 100644 index 0000000..8d06d8e Binary files /dev/null and b/riot/emojione/png/1f504.png differ diff --git a/riot/emojione/png/1f505.png b/riot/emojione/png/1f505.png new file mode 100644 index 0000000..543011d Binary files /dev/null and b/riot/emojione/png/1f505.png differ diff --git a/riot/emojione/png/1f506.png b/riot/emojione/png/1f506.png new file mode 100644 index 0000000..c41f2d5 Binary files /dev/null and b/riot/emojione/png/1f506.png differ diff --git a/riot/emojione/png/1f507.png b/riot/emojione/png/1f507.png new file mode 100644 index 0000000..7c1788e Binary files /dev/null and b/riot/emojione/png/1f507.png differ diff --git a/riot/emojione/png/1f508.png b/riot/emojione/png/1f508.png new file mode 100644 index 0000000..7bcffb8 Binary files /dev/null and b/riot/emojione/png/1f508.png differ diff --git a/riot/emojione/png/1f509.png b/riot/emojione/png/1f509.png new file mode 100644 index 0000000..e75ddca Binary files /dev/null and b/riot/emojione/png/1f509.png differ diff --git a/riot/emojione/png/1f50a.png b/riot/emojione/png/1f50a.png new file mode 100644 index 0000000..8370033 Binary files /dev/null and b/riot/emojione/png/1f50a.png differ diff --git a/riot/emojione/png/1f50b.png b/riot/emojione/png/1f50b.png new file mode 100644 index 0000000..f593e2b Binary files /dev/null and b/riot/emojione/png/1f50b.png differ diff --git a/riot/emojione/png/1f50c.png b/riot/emojione/png/1f50c.png new file mode 100644 index 0000000..31d1eb2 Binary files /dev/null and b/riot/emojione/png/1f50c.png differ diff --git a/riot/emojione/png/1f50d.png b/riot/emojione/png/1f50d.png new file mode 100644 index 0000000..5548715 Binary files /dev/null and b/riot/emojione/png/1f50d.png differ diff --git a/riot/emojione/png/1f50e.png b/riot/emojione/png/1f50e.png new file mode 100644 index 0000000..0f4b1bc Binary files /dev/null and b/riot/emojione/png/1f50e.png differ diff --git a/riot/emojione/png/1f50f.png b/riot/emojione/png/1f50f.png new file mode 100644 index 0000000..19a07d1 Binary files /dev/null and b/riot/emojione/png/1f50f.png differ diff --git a/riot/emojione/png/1f510.png b/riot/emojione/png/1f510.png new file mode 100644 index 0000000..1c1cd5d Binary files /dev/null and b/riot/emojione/png/1f510.png differ diff --git a/riot/emojione/png/1f511.png b/riot/emojione/png/1f511.png new file mode 100644 index 0000000..319cd1b Binary files /dev/null and b/riot/emojione/png/1f511.png differ diff --git a/riot/emojione/png/1f512.png b/riot/emojione/png/1f512.png new file mode 100644 index 0000000..5a739c4 Binary files /dev/null and b/riot/emojione/png/1f512.png differ diff --git a/riot/emojione/png/1f513.png b/riot/emojione/png/1f513.png new file mode 100644 index 0000000..4a74a69 Binary files /dev/null and b/riot/emojione/png/1f513.png differ diff --git a/riot/emojione/png/1f514.png b/riot/emojione/png/1f514.png new file mode 100644 index 0000000..5b3b046 Binary files /dev/null and b/riot/emojione/png/1f514.png differ diff --git a/riot/emojione/png/1f515.png b/riot/emojione/png/1f515.png new file mode 100644 index 0000000..15cb38d Binary files /dev/null and b/riot/emojione/png/1f515.png differ diff --git a/riot/emojione/png/1f516.png b/riot/emojione/png/1f516.png new file mode 100644 index 0000000..bbb4446 Binary files /dev/null and b/riot/emojione/png/1f516.png differ diff --git a/riot/emojione/png/1f517.png b/riot/emojione/png/1f517.png new file mode 100644 index 0000000..ae20f0f Binary files /dev/null and b/riot/emojione/png/1f517.png differ diff --git a/riot/emojione/png/1f518.png b/riot/emojione/png/1f518.png new file mode 100644 index 0000000..3a23449 Binary files /dev/null and b/riot/emojione/png/1f518.png differ diff --git a/riot/emojione/png/1f519.png b/riot/emojione/png/1f519.png new file mode 100644 index 0000000..d32c5d4 Binary files /dev/null and b/riot/emojione/png/1f519.png differ diff --git a/riot/emojione/png/1f51a.png b/riot/emojione/png/1f51a.png new file mode 100644 index 0000000..ef3ccd5 Binary files /dev/null and b/riot/emojione/png/1f51a.png differ diff --git a/riot/emojione/png/1f51b.png b/riot/emojione/png/1f51b.png new file mode 100644 index 0000000..a0c371a Binary files /dev/null and b/riot/emojione/png/1f51b.png differ diff --git a/riot/emojione/png/1f51c.png b/riot/emojione/png/1f51c.png new file mode 100644 index 0000000..8cdfd86 Binary files /dev/null and b/riot/emojione/png/1f51c.png differ diff --git a/riot/emojione/png/1f51d.png b/riot/emojione/png/1f51d.png new file mode 100644 index 0000000..49dea8c Binary files /dev/null and b/riot/emojione/png/1f51d.png differ diff --git a/riot/emojione/png/1f51e.png b/riot/emojione/png/1f51e.png new file mode 100644 index 0000000..6dfe6da Binary files /dev/null and b/riot/emojione/png/1f51e.png differ diff --git a/riot/emojione/png/1f51f.png b/riot/emojione/png/1f51f.png new file mode 100644 index 0000000..782d400 Binary files /dev/null and b/riot/emojione/png/1f51f.png differ diff --git a/riot/emojione/png/1f520.png b/riot/emojione/png/1f520.png new file mode 100644 index 0000000..fe9482d Binary files /dev/null and b/riot/emojione/png/1f520.png differ diff --git a/riot/emojione/png/1f521.png b/riot/emojione/png/1f521.png new file mode 100644 index 0000000..0996a87 Binary files /dev/null and b/riot/emojione/png/1f521.png differ diff --git a/riot/emojione/png/1f522.png b/riot/emojione/png/1f522.png new file mode 100644 index 0000000..248dc7e Binary files /dev/null and b/riot/emojione/png/1f522.png differ diff --git a/riot/emojione/png/1f523.png b/riot/emojione/png/1f523.png new file mode 100644 index 0000000..ac2fc1f Binary files /dev/null and b/riot/emojione/png/1f523.png differ diff --git a/riot/emojione/png/1f524.png b/riot/emojione/png/1f524.png new file mode 100644 index 0000000..7688de6 Binary files /dev/null and b/riot/emojione/png/1f524.png differ diff --git a/riot/emojione/png/1f525.png b/riot/emojione/png/1f525.png new file mode 100644 index 0000000..bd3775a Binary files /dev/null and b/riot/emojione/png/1f525.png differ diff --git a/riot/emojione/png/1f526.png b/riot/emojione/png/1f526.png new file mode 100644 index 0000000..eee36c2 Binary files /dev/null and b/riot/emojione/png/1f526.png differ diff --git a/riot/emojione/png/1f527.png b/riot/emojione/png/1f527.png new file mode 100644 index 0000000..c16b743 Binary files /dev/null and b/riot/emojione/png/1f527.png differ diff --git a/riot/emojione/png/1f528.png b/riot/emojione/png/1f528.png new file mode 100644 index 0000000..00736cc Binary files /dev/null and b/riot/emojione/png/1f528.png differ diff --git a/riot/emojione/png/1f529.png b/riot/emojione/png/1f529.png new file mode 100644 index 0000000..4b9ae15 Binary files /dev/null and b/riot/emojione/png/1f529.png differ diff --git a/riot/emojione/png/1f52a.png b/riot/emojione/png/1f52a.png new file mode 100644 index 0000000..1acb9f3 Binary files /dev/null and b/riot/emojione/png/1f52a.png differ diff --git a/riot/emojione/png/1f52b.png b/riot/emojione/png/1f52b.png new file mode 100644 index 0000000..89c5c24 Binary files /dev/null and b/riot/emojione/png/1f52b.png differ diff --git a/riot/emojione/png/1f52c.png b/riot/emojione/png/1f52c.png new file mode 100644 index 0000000..90f5acf Binary files /dev/null and b/riot/emojione/png/1f52c.png differ diff --git a/riot/emojione/png/1f52d.png b/riot/emojione/png/1f52d.png new file mode 100644 index 0000000..d631546 Binary files /dev/null and b/riot/emojione/png/1f52d.png differ diff --git a/riot/emojione/png/1f52e.png b/riot/emojione/png/1f52e.png new file mode 100644 index 0000000..485d5c8 Binary files /dev/null and b/riot/emojione/png/1f52e.png differ diff --git a/riot/emojione/png/1f52f.png b/riot/emojione/png/1f52f.png new file mode 100644 index 0000000..2eb1707 Binary files /dev/null and b/riot/emojione/png/1f52f.png differ diff --git a/riot/emojione/png/1f530.png b/riot/emojione/png/1f530.png new file mode 100644 index 0000000..bc434fb Binary files /dev/null and b/riot/emojione/png/1f530.png differ diff --git a/riot/emojione/png/1f531.png b/riot/emojione/png/1f531.png new file mode 100644 index 0000000..777a1da Binary files /dev/null and b/riot/emojione/png/1f531.png differ diff --git a/riot/emojione/png/1f532.png b/riot/emojione/png/1f532.png new file mode 100644 index 0000000..a78fc2f Binary files /dev/null and b/riot/emojione/png/1f532.png differ diff --git a/riot/emojione/png/1f533.png b/riot/emojione/png/1f533.png new file mode 100644 index 0000000..934b1ce Binary files /dev/null and b/riot/emojione/png/1f533.png differ diff --git a/riot/emojione/png/1f534.png b/riot/emojione/png/1f534.png new file mode 100644 index 0000000..4bef930 Binary files /dev/null and b/riot/emojione/png/1f534.png differ diff --git a/riot/emojione/png/1f535.png b/riot/emojione/png/1f535.png new file mode 100644 index 0000000..84078ef Binary files /dev/null and b/riot/emojione/png/1f535.png differ diff --git a/riot/emojione/png/1f536.png b/riot/emojione/png/1f536.png new file mode 100644 index 0000000..73ff0ac Binary files /dev/null and b/riot/emojione/png/1f536.png differ diff --git a/riot/emojione/png/1f537.png b/riot/emojione/png/1f537.png new file mode 100644 index 0000000..416a58b Binary files /dev/null and b/riot/emojione/png/1f537.png differ diff --git a/riot/emojione/png/1f538.png b/riot/emojione/png/1f538.png new file mode 100644 index 0000000..e1c6ed9 Binary files /dev/null and b/riot/emojione/png/1f538.png differ diff --git a/riot/emojione/png/1f539.png b/riot/emojione/png/1f539.png new file mode 100644 index 0000000..b86b5bc Binary files /dev/null and b/riot/emojione/png/1f539.png differ diff --git a/riot/emojione/png/1f53a.png b/riot/emojione/png/1f53a.png new file mode 100644 index 0000000..785887c Binary files /dev/null and b/riot/emojione/png/1f53a.png differ diff --git a/riot/emojione/png/1f53b.png b/riot/emojione/png/1f53b.png new file mode 100644 index 0000000..a83beff Binary files /dev/null and b/riot/emojione/png/1f53b.png differ diff --git a/riot/emojione/png/1f53c.png b/riot/emojione/png/1f53c.png new file mode 100644 index 0000000..20a13dc Binary files /dev/null and b/riot/emojione/png/1f53c.png differ diff --git a/riot/emojione/png/1f53d.png b/riot/emojione/png/1f53d.png new file mode 100644 index 0000000..5870b9a Binary files /dev/null and b/riot/emojione/png/1f53d.png differ diff --git a/riot/emojione/png/1f549.png b/riot/emojione/png/1f549.png new file mode 100644 index 0000000..a35c63c Binary files /dev/null and b/riot/emojione/png/1f549.png differ diff --git a/riot/emojione/png/1f54a.png b/riot/emojione/png/1f54a.png new file mode 100644 index 0000000..9580c49 Binary files /dev/null and b/riot/emojione/png/1f54a.png differ diff --git a/riot/emojione/png/1f54b.png b/riot/emojione/png/1f54b.png new file mode 100644 index 0000000..1778c11 Binary files /dev/null and b/riot/emojione/png/1f54b.png differ diff --git a/riot/emojione/png/1f54c.png b/riot/emojione/png/1f54c.png new file mode 100644 index 0000000..ef770b2 Binary files /dev/null and b/riot/emojione/png/1f54c.png differ diff --git a/riot/emojione/png/1f54d.png b/riot/emojione/png/1f54d.png new file mode 100644 index 0000000..ee34790 Binary files /dev/null and b/riot/emojione/png/1f54d.png differ diff --git a/riot/emojione/png/1f54e.png b/riot/emojione/png/1f54e.png new file mode 100644 index 0000000..b429736 Binary files /dev/null and b/riot/emojione/png/1f54e.png differ diff --git a/riot/emojione/png/1f550.png b/riot/emojione/png/1f550.png new file mode 100644 index 0000000..d6e3494 Binary files /dev/null and b/riot/emojione/png/1f550.png differ diff --git a/riot/emojione/png/1f551.png b/riot/emojione/png/1f551.png new file mode 100644 index 0000000..a54253d Binary files /dev/null and b/riot/emojione/png/1f551.png differ diff --git a/riot/emojione/png/1f552.png b/riot/emojione/png/1f552.png new file mode 100644 index 0000000..27ec4b1 Binary files /dev/null and b/riot/emojione/png/1f552.png differ diff --git a/riot/emojione/png/1f553.png b/riot/emojione/png/1f553.png new file mode 100644 index 0000000..60a1ef4 Binary files /dev/null and b/riot/emojione/png/1f553.png differ diff --git a/riot/emojione/png/1f554.png b/riot/emojione/png/1f554.png new file mode 100644 index 0000000..c9382d1 Binary files /dev/null and b/riot/emojione/png/1f554.png differ diff --git a/riot/emojione/png/1f555.png b/riot/emojione/png/1f555.png new file mode 100644 index 0000000..8fd5d3f Binary files /dev/null and b/riot/emojione/png/1f555.png differ diff --git a/riot/emojione/png/1f556.png b/riot/emojione/png/1f556.png new file mode 100644 index 0000000..8c70840 Binary files /dev/null and b/riot/emojione/png/1f556.png differ diff --git a/riot/emojione/png/1f557.png b/riot/emojione/png/1f557.png new file mode 100644 index 0000000..fcddf72 Binary files /dev/null and b/riot/emojione/png/1f557.png differ diff --git a/riot/emojione/png/1f558.png b/riot/emojione/png/1f558.png new file mode 100644 index 0000000..dfbe011 Binary files /dev/null and b/riot/emojione/png/1f558.png differ diff --git a/riot/emojione/png/1f559.png b/riot/emojione/png/1f559.png new file mode 100644 index 0000000..e62b245 Binary files /dev/null and b/riot/emojione/png/1f559.png differ diff --git a/riot/emojione/png/1f55a.png b/riot/emojione/png/1f55a.png new file mode 100644 index 0000000..0983345 Binary files /dev/null and b/riot/emojione/png/1f55a.png differ diff --git a/riot/emojione/png/1f55b.png b/riot/emojione/png/1f55b.png new file mode 100644 index 0000000..e61caa4 Binary files /dev/null and b/riot/emojione/png/1f55b.png differ diff --git a/riot/emojione/png/1f55c.png b/riot/emojione/png/1f55c.png new file mode 100644 index 0000000..86b7689 Binary files /dev/null and b/riot/emojione/png/1f55c.png differ diff --git a/riot/emojione/png/1f55d.png b/riot/emojione/png/1f55d.png new file mode 100644 index 0000000..7a787e0 Binary files /dev/null and b/riot/emojione/png/1f55d.png differ diff --git a/riot/emojione/png/1f55e.png b/riot/emojione/png/1f55e.png new file mode 100644 index 0000000..c686039 Binary files /dev/null and b/riot/emojione/png/1f55e.png differ diff --git a/riot/emojione/png/1f55f.png b/riot/emojione/png/1f55f.png new file mode 100644 index 0000000..3c05b36 Binary files /dev/null and b/riot/emojione/png/1f55f.png differ diff --git a/riot/emojione/png/1f560.png b/riot/emojione/png/1f560.png new file mode 100644 index 0000000..c21fa92 Binary files /dev/null and b/riot/emojione/png/1f560.png differ diff --git a/riot/emojione/png/1f561.png b/riot/emojione/png/1f561.png new file mode 100644 index 0000000..2aec87f Binary files /dev/null and b/riot/emojione/png/1f561.png differ diff --git a/riot/emojione/png/1f562.png b/riot/emojione/png/1f562.png new file mode 100644 index 0000000..f7a1135 Binary files /dev/null and b/riot/emojione/png/1f562.png differ diff --git a/riot/emojione/png/1f563.png b/riot/emojione/png/1f563.png new file mode 100644 index 0000000..799b4ae Binary files /dev/null and b/riot/emojione/png/1f563.png differ diff --git a/riot/emojione/png/1f564.png b/riot/emojione/png/1f564.png new file mode 100644 index 0000000..4a2092e Binary files /dev/null and b/riot/emojione/png/1f564.png differ diff --git a/riot/emojione/png/1f565.png b/riot/emojione/png/1f565.png new file mode 100644 index 0000000..0802b3c Binary files /dev/null and b/riot/emojione/png/1f565.png differ diff --git a/riot/emojione/png/1f566.png b/riot/emojione/png/1f566.png new file mode 100644 index 0000000..d970d03 Binary files /dev/null and b/riot/emojione/png/1f566.png differ diff --git a/riot/emojione/png/1f567.png b/riot/emojione/png/1f567.png new file mode 100644 index 0000000..f2b1d26 Binary files /dev/null and b/riot/emojione/png/1f567.png differ diff --git a/riot/emojione/png/1f56f.png b/riot/emojione/png/1f56f.png new file mode 100644 index 0000000..0b56444 Binary files /dev/null and b/riot/emojione/png/1f56f.png differ diff --git a/riot/emojione/png/1f570.png b/riot/emojione/png/1f570.png new file mode 100644 index 0000000..ffdb451 Binary files /dev/null and b/riot/emojione/png/1f570.png differ diff --git a/riot/emojione/png/1f573.png b/riot/emojione/png/1f573.png new file mode 100644 index 0000000..517d2ae Binary files /dev/null and b/riot/emojione/png/1f573.png differ diff --git a/riot/emojione/png/1f574.png b/riot/emojione/png/1f574.png new file mode 100644 index 0000000..3dc315a Binary files /dev/null and b/riot/emojione/png/1f574.png differ diff --git a/riot/emojione/png/1f575-1f3fb.png b/riot/emojione/png/1f575-1f3fb.png new file mode 100644 index 0000000..2d1c022 Binary files /dev/null and b/riot/emojione/png/1f575-1f3fb.png differ diff --git a/riot/emojione/png/1f575-1f3fc.png b/riot/emojione/png/1f575-1f3fc.png new file mode 100644 index 0000000..548b9c2 Binary files /dev/null and b/riot/emojione/png/1f575-1f3fc.png differ diff --git a/riot/emojione/png/1f575-1f3fd.png b/riot/emojione/png/1f575-1f3fd.png new file mode 100644 index 0000000..b023f4b Binary files /dev/null and b/riot/emojione/png/1f575-1f3fd.png differ diff --git a/riot/emojione/png/1f575-1f3fe.png b/riot/emojione/png/1f575-1f3fe.png new file mode 100644 index 0000000..d8300af Binary files /dev/null and b/riot/emojione/png/1f575-1f3fe.png differ diff --git a/riot/emojione/png/1f575-1f3ff.png b/riot/emojione/png/1f575-1f3ff.png new file mode 100644 index 0000000..ca14625 Binary files /dev/null and b/riot/emojione/png/1f575-1f3ff.png differ diff --git a/riot/emojione/png/1f575.png b/riot/emojione/png/1f575.png new file mode 100644 index 0000000..a729e95 Binary files /dev/null and b/riot/emojione/png/1f575.png differ diff --git a/riot/emojione/png/1f576.png b/riot/emojione/png/1f576.png new file mode 100644 index 0000000..b1b6db0 Binary files /dev/null and b/riot/emojione/png/1f576.png differ diff --git a/riot/emojione/png/1f577.png b/riot/emojione/png/1f577.png new file mode 100644 index 0000000..3849fa9 Binary files /dev/null and b/riot/emojione/png/1f577.png differ diff --git a/riot/emojione/png/1f578.png b/riot/emojione/png/1f578.png new file mode 100644 index 0000000..ba448ee Binary files /dev/null and b/riot/emojione/png/1f578.png differ diff --git a/riot/emojione/png/1f579.png b/riot/emojione/png/1f579.png new file mode 100644 index 0000000..1ee1905 Binary files /dev/null and b/riot/emojione/png/1f579.png differ diff --git a/riot/emojione/png/1f57a-1f3fb.png b/riot/emojione/png/1f57a-1f3fb.png new file mode 100644 index 0000000..e0b9f82 Binary files /dev/null and b/riot/emojione/png/1f57a-1f3fb.png differ diff --git a/riot/emojione/png/1f57a-1f3fc.png b/riot/emojione/png/1f57a-1f3fc.png new file mode 100644 index 0000000..a5beed5 Binary files /dev/null and b/riot/emojione/png/1f57a-1f3fc.png differ diff --git a/riot/emojione/png/1f57a-1f3fd.png b/riot/emojione/png/1f57a-1f3fd.png new file mode 100644 index 0000000..2fa2018 Binary files /dev/null and b/riot/emojione/png/1f57a-1f3fd.png differ diff --git a/riot/emojione/png/1f57a-1f3fe.png b/riot/emojione/png/1f57a-1f3fe.png new file mode 100644 index 0000000..bd3528c Binary files /dev/null and b/riot/emojione/png/1f57a-1f3fe.png differ diff --git a/riot/emojione/png/1f57a-1f3ff.png b/riot/emojione/png/1f57a-1f3ff.png new file mode 100644 index 0000000..41fd4f8 Binary files /dev/null and b/riot/emojione/png/1f57a-1f3ff.png differ diff --git a/riot/emojione/png/1f57a.png b/riot/emojione/png/1f57a.png new file mode 100644 index 0000000..ccff3be Binary files /dev/null and b/riot/emojione/png/1f57a.png differ diff --git a/riot/emojione/png/1f587.png b/riot/emojione/png/1f587.png new file mode 100644 index 0000000..76021e8 Binary files /dev/null and b/riot/emojione/png/1f587.png differ diff --git a/riot/emojione/png/1f58a.png b/riot/emojione/png/1f58a.png new file mode 100644 index 0000000..6ef7a34 Binary files /dev/null and b/riot/emojione/png/1f58a.png differ diff --git a/riot/emojione/png/1f58b.png b/riot/emojione/png/1f58b.png new file mode 100644 index 0000000..3ca4bd2 Binary files /dev/null and b/riot/emojione/png/1f58b.png differ diff --git a/riot/emojione/png/1f58c.png b/riot/emojione/png/1f58c.png new file mode 100644 index 0000000..28bffba Binary files /dev/null and b/riot/emojione/png/1f58c.png differ diff --git a/riot/emojione/png/1f58d.png b/riot/emojione/png/1f58d.png new file mode 100644 index 0000000..8d7b427 Binary files /dev/null and b/riot/emojione/png/1f58d.png differ diff --git a/riot/emojione/png/1f590-1f3fb.png b/riot/emojione/png/1f590-1f3fb.png new file mode 100644 index 0000000..a7888e6 Binary files /dev/null and b/riot/emojione/png/1f590-1f3fb.png differ diff --git a/riot/emojione/png/1f590-1f3fc.png b/riot/emojione/png/1f590-1f3fc.png new file mode 100644 index 0000000..cc10fbc Binary files /dev/null and b/riot/emojione/png/1f590-1f3fc.png differ diff --git a/riot/emojione/png/1f590-1f3fd.png b/riot/emojione/png/1f590-1f3fd.png new file mode 100644 index 0000000..707236a Binary files /dev/null and b/riot/emojione/png/1f590-1f3fd.png differ diff --git a/riot/emojione/png/1f590-1f3fe.png b/riot/emojione/png/1f590-1f3fe.png new file mode 100644 index 0000000..1430df9 Binary files /dev/null and b/riot/emojione/png/1f590-1f3fe.png differ diff --git a/riot/emojione/png/1f590-1f3ff.png b/riot/emojione/png/1f590-1f3ff.png new file mode 100644 index 0000000..80bec97 Binary files /dev/null and b/riot/emojione/png/1f590-1f3ff.png differ diff --git a/riot/emojione/png/1f590.png b/riot/emojione/png/1f590.png new file mode 100644 index 0000000..fb5ae8e Binary files /dev/null and b/riot/emojione/png/1f590.png differ diff --git a/riot/emojione/png/1f595-1f3fb.png b/riot/emojione/png/1f595-1f3fb.png new file mode 100644 index 0000000..61ef12a Binary files /dev/null and b/riot/emojione/png/1f595-1f3fb.png differ diff --git a/riot/emojione/png/1f595-1f3fc.png b/riot/emojione/png/1f595-1f3fc.png new file mode 100644 index 0000000..c31a69b Binary files /dev/null and b/riot/emojione/png/1f595-1f3fc.png differ diff --git a/riot/emojione/png/1f595-1f3fd.png b/riot/emojione/png/1f595-1f3fd.png new file mode 100644 index 0000000..73ac216 Binary files /dev/null and b/riot/emojione/png/1f595-1f3fd.png differ diff --git a/riot/emojione/png/1f595-1f3fe.png b/riot/emojione/png/1f595-1f3fe.png new file mode 100644 index 0000000..80b8ab7 Binary files /dev/null and b/riot/emojione/png/1f595-1f3fe.png differ diff --git a/riot/emojione/png/1f595-1f3ff.png b/riot/emojione/png/1f595-1f3ff.png new file mode 100644 index 0000000..a8826b1 Binary files /dev/null and b/riot/emojione/png/1f595-1f3ff.png differ diff --git a/riot/emojione/png/1f595.png b/riot/emojione/png/1f595.png new file mode 100644 index 0000000..697f7a2 Binary files /dev/null and b/riot/emojione/png/1f595.png differ diff --git a/riot/emojione/png/1f596-1f3fb.png b/riot/emojione/png/1f596-1f3fb.png new file mode 100644 index 0000000..8aff5d8 Binary files /dev/null and b/riot/emojione/png/1f596-1f3fb.png differ diff --git a/riot/emojione/png/1f596-1f3fc.png b/riot/emojione/png/1f596-1f3fc.png new file mode 100644 index 0000000..82b7ad5 Binary files /dev/null and b/riot/emojione/png/1f596-1f3fc.png differ diff --git a/riot/emojione/png/1f596-1f3fd.png b/riot/emojione/png/1f596-1f3fd.png new file mode 100644 index 0000000..d1400e1 Binary files /dev/null and b/riot/emojione/png/1f596-1f3fd.png differ diff --git a/riot/emojione/png/1f596-1f3fe.png b/riot/emojione/png/1f596-1f3fe.png new file mode 100644 index 0000000..47e2b28 Binary files /dev/null and b/riot/emojione/png/1f596-1f3fe.png differ diff --git a/riot/emojione/png/1f596-1f3ff.png b/riot/emojione/png/1f596-1f3ff.png new file mode 100644 index 0000000..60b5c60 Binary files /dev/null and b/riot/emojione/png/1f596-1f3ff.png differ diff --git a/riot/emojione/png/1f596.png b/riot/emojione/png/1f596.png new file mode 100644 index 0000000..54728bc Binary files /dev/null and b/riot/emojione/png/1f596.png differ diff --git a/riot/emojione/png/1f5a4.png b/riot/emojione/png/1f5a4.png new file mode 100644 index 0000000..b4068c3 Binary files /dev/null and b/riot/emojione/png/1f5a4.png differ diff --git a/riot/emojione/png/1f5a5.png b/riot/emojione/png/1f5a5.png new file mode 100644 index 0000000..909bd42 Binary files /dev/null and b/riot/emojione/png/1f5a5.png differ diff --git a/riot/emojione/png/1f5a8.png b/riot/emojione/png/1f5a8.png new file mode 100644 index 0000000..027c830 Binary files /dev/null and b/riot/emojione/png/1f5a8.png differ diff --git a/riot/emojione/png/1f5b1.png b/riot/emojione/png/1f5b1.png new file mode 100644 index 0000000..e84e96f Binary files /dev/null and b/riot/emojione/png/1f5b1.png differ diff --git a/riot/emojione/png/1f5b2.png b/riot/emojione/png/1f5b2.png new file mode 100644 index 0000000..3bea84a Binary files /dev/null and b/riot/emojione/png/1f5b2.png differ diff --git a/riot/emojione/png/1f5bc.png b/riot/emojione/png/1f5bc.png new file mode 100644 index 0000000..9fe8460 Binary files /dev/null and b/riot/emojione/png/1f5bc.png differ diff --git a/riot/emojione/png/1f5c2.png b/riot/emojione/png/1f5c2.png new file mode 100644 index 0000000..46a7e40 Binary files /dev/null and b/riot/emojione/png/1f5c2.png differ diff --git a/riot/emojione/png/1f5c3.png b/riot/emojione/png/1f5c3.png new file mode 100644 index 0000000..f2e764c Binary files /dev/null and b/riot/emojione/png/1f5c3.png differ diff --git a/riot/emojione/png/1f5c4.png b/riot/emojione/png/1f5c4.png new file mode 100644 index 0000000..fddc65d Binary files /dev/null and b/riot/emojione/png/1f5c4.png differ diff --git a/riot/emojione/png/1f5d1.png b/riot/emojione/png/1f5d1.png new file mode 100644 index 0000000..2b3c484 Binary files /dev/null and b/riot/emojione/png/1f5d1.png differ diff --git a/riot/emojione/png/1f5d2.png b/riot/emojione/png/1f5d2.png new file mode 100644 index 0000000..85faa10 Binary files /dev/null and b/riot/emojione/png/1f5d2.png differ diff --git a/riot/emojione/png/1f5d3.png b/riot/emojione/png/1f5d3.png new file mode 100644 index 0000000..dec8d49 Binary files /dev/null and b/riot/emojione/png/1f5d3.png differ diff --git a/riot/emojione/png/1f5dc.png b/riot/emojione/png/1f5dc.png new file mode 100644 index 0000000..d7eda7f Binary files /dev/null and b/riot/emojione/png/1f5dc.png differ diff --git a/riot/emojione/png/1f5dd.png b/riot/emojione/png/1f5dd.png new file mode 100644 index 0000000..e11d706 Binary files /dev/null and b/riot/emojione/png/1f5dd.png differ diff --git a/riot/emojione/png/1f5de.png b/riot/emojione/png/1f5de.png new file mode 100644 index 0000000..f64748d Binary files /dev/null and b/riot/emojione/png/1f5de.png differ diff --git a/riot/emojione/png/1f5e1.png b/riot/emojione/png/1f5e1.png new file mode 100644 index 0000000..66e97b0 Binary files /dev/null and b/riot/emojione/png/1f5e1.png differ diff --git a/riot/emojione/png/1f5e3.png b/riot/emojione/png/1f5e3.png new file mode 100644 index 0000000..2df93aa Binary files /dev/null and b/riot/emojione/png/1f5e3.png differ diff --git a/riot/emojione/png/1f5e8.png b/riot/emojione/png/1f5e8.png new file mode 100644 index 0000000..00c0595 Binary files /dev/null and b/riot/emojione/png/1f5e8.png differ diff --git a/riot/emojione/png/1f5ef.png b/riot/emojione/png/1f5ef.png new file mode 100644 index 0000000..f5c97c4 Binary files /dev/null and b/riot/emojione/png/1f5ef.png differ diff --git a/riot/emojione/png/1f5f3.png b/riot/emojione/png/1f5f3.png new file mode 100644 index 0000000..9b6767a Binary files /dev/null and b/riot/emojione/png/1f5f3.png differ diff --git a/riot/emojione/png/1f5fa.png b/riot/emojione/png/1f5fa.png new file mode 100644 index 0000000..15efe32 Binary files /dev/null and b/riot/emojione/png/1f5fa.png differ diff --git a/riot/emojione/png/1f5fb.png b/riot/emojione/png/1f5fb.png new file mode 100644 index 0000000..88a5475 Binary files /dev/null and b/riot/emojione/png/1f5fb.png differ diff --git a/riot/emojione/png/1f5fc.png b/riot/emojione/png/1f5fc.png new file mode 100644 index 0000000..37df7fc Binary files /dev/null and b/riot/emojione/png/1f5fc.png differ diff --git a/riot/emojione/png/1f5fd.png b/riot/emojione/png/1f5fd.png new file mode 100644 index 0000000..05df828 Binary files /dev/null and b/riot/emojione/png/1f5fd.png differ diff --git a/riot/emojione/png/1f5fe.png b/riot/emojione/png/1f5fe.png new file mode 100644 index 0000000..d86d0a5 Binary files /dev/null and b/riot/emojione/png/1f5fe.png differ diff --git a/riot/emojione/png/1f5ff.png b/riot/emojione/png/1f5ff.png new file mode 100644 index 0000000..e6a7779 Binary files /dev/null and b/riot/emojione/png/1f5ff.png differ diff --git a/riot/emojione/png/1f600.png b/riot/emojione/png/1f600.png new file mode 100644 index 0000000..3e8e0da Binary files /dev/null and b/riot/emojione/png/1f600.png differ diff --git a/riot/emojione/png/1f601.png b/riot/emojione/png/1f601.png new file mode 100644 index 0000000..418d94c Binary files /dev/null and b/riot/emojione/png/1f601.png differ diff --git a/riot/emojione/png/1f602.png b/riot/emojione/png/1f602.png new file mode 100644 index 0000000..0ba3b18 Binary files /dev/null and b/riot/emojione/png/1f602.png differ diff --git a/riot/emojione/png/1f603.png b/riot/emojione/png/1f603.png new file mode 100644 index 0000000..30957a6 Binary files /dev/null and b/riot/emojione/png/1f603.png differ diff --git a/riot/emojione/png/1f604.png b/riot/emojione/png/1f604.png new file mode 100644 index 0000000..aa47ffe Binary files /dev/null and b/riot/emojione/png/1f604.png differ diff --git a/riot/emojione/png/1f605.png b/riot/emojione/png/1f605.png new file mode 100644 index 0000000..cb18d9c Binary files /dev/null and b/riot/emojione/png/1f605.png differ diff --git a/riot/emojione/png/1f606.png b/riot/emojione/png/1f606.png new file mode 100644 index 0000000..d94e950 Binary files /dev/null and b/riot/emojione/png/1f606.png differ diff --git a/riot/emojione/png/1f607.png b/riot/emojione/png/1f607.png new file mode 100644 index 0000000..57f5151 Binary files /dev/null and b/riot/emojione/png/1f607.png differ diff --git a/riot/emojione/png/1f608.png b/riot/emojione/png/1f608.png new file mode 100644 index 0000000..cc2c5f1 Binary files /dev/null and b/riot/emojione/png/1f608.png differ diff --git a/riot/emojione/png/1f609.png b/riot/emojione/png/1f609.png new file mode 100644 index 0000000..7ea7810 Binary files /dev/null and b/riot/emojione/png/1f609.png differ diff --git a/riot/emojione/png/1f60a.png b/riot/emojione/png/1f60a.png new file mode 100644 index 0000000..aac1a42 Binary files /dev/null and b/riot/emojione/png/1f60a.png differ diff --git a/riot/emojione/png/1f60b.png b/riot/emojione/png/1f60b.png new file mode 100644 index 0000000..2df1575 Binary files /dev/null and b/riot/emojione/png/1f60b.png differ diff --git a/riot/emojione/png/1f60c.png b/riot/emojione/png/1f60c.png new file mode 100644 index 0000000..715ad0b Binary files /dev/null and b/riot/emojione/png/1f60c.png differ diff --git a/riot/emojione/png/1f60d.png b/riot/emojione/png/1f60d.png new file mode 100644 index 0000000..73fbee2 Binary files /dev/null and b/riot/emojione/png/1f60d.png differ diff --git a/riot/emojione/png/1f60e.png b/riot/emojione/png/1f60e.png new file mode 100644 index 0000000..2001173 Binary files /dev/null and b/riot/emojione/png/1f60e.png differ diff --git a/riot/emojione/png/1f60f.png b/riot/emojione/png/1f60f.png new file mode 100644 index 0000000..8785210 Binary files /dev/null and b/riot/emojione/png/1f60f.png differ diff --git a/riot/emojione/png/1f610.png b/riot/emojione/png/1f610.png new file mode 100644 index 0000000..065d193 Binary files /dev/null and b/riot/emojione/png/1f610.png differ diff --git a/riot/emojione/png/1f611.png b/riot/emojione/png/1f611.png new file mode 100644 index 0000000..2954017 Binary files /dev/null and b/riot/emojione/png/1f611.png differ diff --git a/riot/emojione/png/1f612.png b/riot/emojione/png/1f612.png new file mode 100644 index 0000000..25e3677 Binary files /dev/null and b/riot/emojione/png/1f612.png differ diff --git a/riot/emojione/png/1f613.png b/riot/emojione/png/1f613.png new file mode 100644 index 0000000..f0dae7b Binary files /dev/null and b/riot/emojione/png/1f613.png differ diff --git a/riot/emojione/png/1f614.png b/riot/emojione/png/1f614.png new file mode 100644 index 0000000..490fb56 Binary files /dev/null and b/riot/emojione/png/1f614.png differ diff --git a/riot/emojione/png/1f615.png b/riot/emojione/png/1f615.png new file mode 100644 index 0000000..502b6bf Binary files /dev/null and b/riot/emojione/png/1f615.png differ diff --git a/riot/emojione/png/1f616.png b/riot/emojione/png/1f616.png new file mode 100644 index 0000000..aa4b29e Binary files /dev/null and b/riot/emojione/png/1f616.png differ diff --git a/riot/emojione/png/1f617.png b/riot/emojione/png/1f617.png new file mode 100644 index 0000000..39d325f Binary files /dev/null and b/riot/emojione/png/1f617.png differ diff --git a/riot/emojione/png/1f618.png b/riot/emojione/png/1f618.png new file mode 100644 index 0000000..0ff808f Binary files /dev/null and b/riot/emojione/png/1f618.png differ diff --git a/riot/emojione/png/1f619.png b/riot/emojione/png/1f619.png new file mode 100644 index 0000000..e181f17 Binary files /dev/null and b/riot/emojione/png/1f619.png differ diff --git a/riot/emojione/png/1f61a.png b/riot/emojione/png/1f61a.png new file mode 100644 index 0000000..b684d7d Binary files /dev/null and b/riot/emojione/png/1f61a.png differ diff --git a/riot/emojione/png/1f61b.png b/riot/emojione/png/1f61b.png new file mode 100644 index 0000000..2575734 Binary files /dev/null and b/riot/emojione/png/1f61b.png differ diff --git a/riot/emojione/png/1f61c.png b/riot/emojione/png/1f61c.png new file mode 100644 index 0000000..4817eaa Binary files /dev/null and b/riot/emojione/png/1f61c.png differ diff --git a/riot/emojione/png/1f61d.png b/riot/emojione/png/1f61d.png new file mode 100644 index 0000000..5c0401e Binary files /dev/null and b/riot/emojione/png/1f61d.png differ diff --git a/riot/emojione/png/1f61e.png b/riot/emojione/png/1f61e.png new file mode 100644 index 0000000..efe4e67 Binary files /dev/null and b/riot/emojione/png/1f61e.png differ diff --git a/riot/emojione/png/1f61f.png b/riot/emojione/png/1f61f.png new file mode 100644 index 0000000..7074afc Binary files /dev/null and b/riot/emojione/png/1f61f.png differ diff --git a/riot/emojione/png/1f620.png b/riot/emojione/png/1f620.png new file mode 100644 index 0000000..cfc4a6e Binary files /dev/null and b/riot/emojione/png/1f620.png differ diff --git a/riot/emojione/png/1f621.png b/riot/emojione/png/1f621.png new file mode 100644 index 0000000..9d739bd Binary files /dev/null and b/riot/emojione/png/1f621.png differ diff --git a/riot/emojione/png/1f622.png b/riot/emojione/png/1f622.png new file mode 100644 index 0000000..b7877f8 Binary files /dev/null and b/riot/emojione/png/1f622.png differ diff --git a/riot/emojione/png/1f623.png b/riot/emojione/png/1f623.png new file mode 100644 index 0000000..646a05f Binary files /dev/null and b/riot/emojione/png/1f623.png differ diff --git a/riot/emojione/png/1f624.png b/riot/emojione/png/1f624.png new file mode 100644 index 0000000..0be7a50 Binary files /dev/null and b/riot/emojione/png/1f624.png differ diff --git a/riot/emojione/png/1f625.png b/riot/emojione/png/1f625.png new file mode 100644 index 0000000..aef864d Binary files /dev/null and b/riot/emojione/png/1f625.png differ diff --git a/riot/emojione/png/1f626.png b/riot/emojione/png/1f626.png new file mode 100644 index 0000000..43ab6b0 Binary files /dev/null and b/riot/emojione/png/1f626.png differ diff --git a/riot/emojione/png/1f627.png b/riot/emojione/png/1f627.png new file mode 100644 index 0000000..f99026a Binary files /dev/null and b/riot/emojione/png/1f627.png differ diff --git a/riot/emojione/png/1f628.png b/riot/emojione/png/1f628.png new file mode 100644 index 0000000..eb8b347 Binary files /dev/null and b/riot/emojione/png/1f628.png differ diff --git a/riot/emojione/png/1f629.png b/riot/emojione/png/1f629.png new file mode 100644 index 0000000..98bfbd2 Binary files /dev/null and b/riot/emojione/png/1f629.png differ diff --git a/riot/emojione/png/1f62a.png b/riot/emojione/png/1f62a.png new file mode 100644 index 0000000..836b410 Binary files /dev/null and b/riot/emojione/png/1f62a.png differ diff --git a/riot/emojione/png/1f62b.png b/riot/emojione/png/1f62b.png new file mode 100644 index 0000000..4e01eff Binary files /dev/null and b/riot/emojione/png/1f62b.png differ diff --git a/riot/emojione/png/1f62c.png b/riot/emojione/png/1f62c.png new file mode 100644 index 0000000..871b2f0 Binary files /dev/null and b/riot/emojione/png/1f62c.png differ diff --git a/riot/emojione/png/1f62d.png b/riot/emojione/png/1f62d.png new file mode 100644 index 0000000..52e3517 Binary files /dev/null and b/riot/emojione/png/1f62d.png differ diff --git a/riot/emojione/png/1f62e.png b/riot/emojione/png/1f62e.png new file mode 100644 index 0000000..a62cd27 Binary files /dev/null and b/riot/emojione/png/1f62e.png differ diff --git a/riot/emojione/png/1f62f.png b/riot/emojione/png/1f62f.png new file mode 100644 index 0000000..cad0e23 Binary files /dev/null and b/riot/emojione/png/1f62f.png differ diff --git a/riot/emojione/png/1f630.png b/riot/emojione/png/1f630.png new file mode 100644 index 0000000..85b2231 Binary files /dev/null and b/riot/emojione/png/1f630.png differ diff --git a/riot/emojione/png/1f631.png b/riot/emojione/png/1f631.png new file mode 100644 index 0000000..c3bea9f Binary files /dev/null and b/riot/emojione/png/1f631.png differ diff --git a/riot/emojione/png/1f632.png b/riot/emojione/png/1f632.png new file mode 100644 index 0000000..bd0ac55 Binary files /dev/null and b/riot/emojione/png/1f632.png differ diff --git a/riot/emojione/png/1f633.png b/riot/emojione/png/1f633.png new file mode 100644 index 0000000..829220b Binary files /dev/null and b/riot/emojione/png/1f633.png differ diff --git a/riot/emojione/png/1f634.png b/riot/emojione/png/1f634.png new file mode 100644 index 0000000..9ecf600 Binary files /dev/null and b/riot/emojione/png/1f634.png differ diff --git a/riot/emojione/png/1f635.png b/riot/emojione/png/1f635.png new file mode 100644 index 0000000..3120316 Binary files /dev/null and b/riot/emojione/png/1f635.png differ diff --git a/riot/emojione/png/1f636.png b/riot/emojione/png/1f636.png new file mode 100644 index 0000000..b642f6c Binary files /dev/null and b/riot/emojione/png/1f636.png differ diff --git a/riot/emojione/png/1f637.png b/riot/emojione/png/1f637.png new file mode 100644 index 0000000..1e800ac Binary files /dev/null and b/riot/emojione/png/1f637.png differ diff --git a/riot/emojione/png/1f638.png b/riot/emojione/png/1f638.png new file mode 100644 index 0000000..6f25f11 Binary files /dev/null and b/riot/emojione/png/1f638.png differ diff --git a/riot/emojione/png/1f639.png b/riot/emojione/png/1f639.png new file mode 100644 index 0000000..aac3531 Binary files /dev/null and b/riot/emojione/png/1f639.png differ diff --git a/riot/emojione/png/1f63a.png b/riot/emojione/png/1f63a.png new file mode 100644 index 0000000..163b57a Binary files /dev/null and b/riot/emojione/png/1f63a.png differ diff --git a/riot/emojione/png/1f63b.png b/riot/emojione/png/1f63b.png new file mode 100644 index 0000000..bc5a833 Binary files /dev/null and b/riot/emojione/png/1f63b.png differ diff --git a/riot/emojione/png/1f63c.png b/riot/emojione/png/1f63c.png new file mode 100644 index 0000000..9ac5954 Binary files /dev/null and b/riot/emojione/png/1f63c.png differ diff --git a/riot/emojione/png/1f63d.png b/riot/emojione/png/1f63d.png new file mode 100644 index 0000000..6e0bcc7 Binary files /dev/null and b/riot/emojione/png/1f63d.png differ diff --git a/riot/emojione/png/1f63e.png b/riot/emojione/png/1f63e.png new file mode 100644 index 0000000..41ddfea Binary files /dev/null and b/riot/emojione/png/1f63e.png differ diff --git a/riot/emojione/png/1f63f.png b/riot/emojione/png/1f63f.png new file mode 100644 index 0000000..b4f4971 Binary files /dev/null and b/riot/emojione/png/1f63f.png differ diff --git a/riot/emojione/png/1f640.png b/riot/emojione/png/1f640.png new file mode 100644 index 0000000..15803ad Binary files /dev/null and b/riot/emojione/png/1f640.png differ diff --git a/riot/emojione/png/1f641.png b/riot/emojione/png/1f641.png new file mode 100644 index 0000000..b2f1d98 Binary files /dev/null and b/riot/emojione/png/1f641.png differ diff --git a/riot/emojione/png/1f642.png b/riot/emojione/png/1f642.png new file mode 100644 index 0000000..ddd7d65 Binary files /dev/null and b/riot/emojione/png/1f642.png differ diff --git a/riot/emojione/png/1f643.png b/riot/emojione/png/1f643.png new file mode 100644 index 0000000..128f31c Binary files /dev/null and b/riot/emojione/png/1f643.png differ diff --git a/riot/emojione/png/1f644.png b/riot/emojione/png/1f644.png new file mode 100644 index 0000000..2f77b9f Binary files /dev/null and b/riot/emojione/png/1f644.png differ diff --git a/riot/emojione/png/1f645-1f3fb.png b/riot/emojione/png/1f645-1f3fb.png new file mode 100644 index 0000000..5c1a3cb Binary files /dev/null and b/riot/emojione/png/1f645-1f3fb.png differ diff --git a/riot/emojione/png/1f645-1f3fc.png b/riot/emojione/png/1f645-1f3fc.png new file mode 100644 index 0000000..80d8021 Binary files /dev/null and b/riot/emojione/png/1f645-1f3fc.png differ diff --git a/riot/emojione/png/1f645-1f3fd.png b/riot/emojione/png/1f645-1f3fd.png new file mode 100644 index 0000000..635e6a0 Binary files /dev/null and b/riot/emojione/png/1f645-1f3fd.png differ diff --git a/riot/emojione/png/1f645-1f3fe.png b/riot/emojione/png/1f645-1f3fe.png new file mode 100644 index 0000000..b96e412 Binary files /dev/null and b/riot/emojione/png/1f645-1f3fe.png differ diff --git a/riot/emojione/png/1f645-1f3ff.png b/riot/emojione/png/1f645-1f3ff.png new file mode 100644 index 0000000..9a7084a Binary files /dev/null and b/riot/emojione/png/1f645-1f3ff.png differ diff --git a/riot/emojione/png/1f645.png b/riot/emojione/png/1f645.png new file mode 100644 index 0000000..ed57710 Binary files /dev/null and b/riot/emojione/png/1f645.png differ diff --git a/riot/emojione/png/1f646-1f3fb.png b/riot/emojione/png/1f646-1f3fb.png new file mode 100644 index 0000000..c99543e Binary files /dev/null and b/riot/emojione/png/1f646-1f3fb.png differ diff --git a/riot/emojione/png/1f646-1f3fc.png b/riot/emojione/png/1f646-1f3fc.png new file mode 100644 index 0000000..ad5fae8 Binary files /dev/null and b/riot/emojione/png/1f646-1f3fc.png differ diff --git a/riot/emojione/png/1f646-1f3fd.png b/riot/emojione/png/1f646-1f3fd.png new file mode 100644 index 0000000..51bf4fa Binary files /dev/null and b/riot/emojione/png/1f646-1f3fd.png differ diff --git a/riot/emojione/png/1f646-1f3fe.png b/riot/emojione/png/1f646-1f3fe.png new file mode 100644 index 0000000..ee3f9dc Binary files /dev/null and b/riot/emojione/png/1f646-1f3fe.png differ diff --git a/riot/emojione/png/1f646-1f3ff.png b/riot/emojione/png/1f646-1f3ff.png new file mode 100644 index 0000000..62a9d92 Binary files /dev/null and b/riot/emojione/png/1f646-1f3ff.png differ diff --git a/riot/emojione/png/1f646.png b/riot/emojione/png/1f646.png new file mode 100644 index 0000000..90a2c74 Binary files /dev/null and b/riot/emojione/png/1f646.png differ diff --git a/riot/emojione/png/1f647-1f3fb.png b/riot/emojione/png/1f647-1f3fb.png new file mode 100644 index 0000000..87afb7b Binary files /dev/null and b/riot/emojione/png/1f647-1f3fb.png differ diff --git a/riot/emojione/png/1f647-1f3fc.png b/riot/emojione/png/1f647-1f3fc.png new file mode 100644 index 0000000..3ccf7dc Binary files /dev/null and b/riot/emojione/png/1f647-1f3fc.png differ diff --git a/riot/emojione/png/1f647-1f3fd.png b/riot/emojione/png/1f647-1f3fd.png new file mode 100644 index 0000000..8b9eb64 Binary files /dev/null and b/riot/emojione/png/1f647-1f3fd.png differ diff --git a/riot/emojione/png/1f647-1f3fe.png b/riot/emojione/png/1f647-1f3fe.png new file mode 100644 index 0000000..683795f Binary files /dev/null and b/riot/emojione/png/1f647-1f3fe.png differ diff --git a/riot/emojione/png/1f647-1f3ff.png b/riot/emojione/png/1f647-1f3ff.png new file mode 100644 index 0000000..7969d97 Binary files /dev/null and b/riot/emojione/png/1f647-1f3ff.png differ diff --git a/riot/emojione/png/1f647.png b/riot/emojione/png/1f647.png new file mode 100644 index 0000000..d8f7930 Binary files /dev/null and b/riot/emojione/png/1f647.png differ diff --git a/riot/emojione/png/1f648.png b/riot/emojione/png/1f648.png new file mode 100644 index 0000000..5187e47 Binary files /dev/null and b/riot/emojione/png/1f648.png differ diff --git a/riot/emojione/png/1f649.png b/riot/emojione/png/1f649.png new file mode 100644 index 0000000..74b6be0 Binary files /dev/null and b/riot/emojione/png/1f649.png differ diff --git a/riot/emojione/png/1f64a.png b/riot/emojione/png/1f64a.png new file mode 100644 index 0000000..9d9e07c Binary files /dev/null and b/riot/emojione/png/1f64a.png differ diff --git a/riot/emojione/png/1f64b-1f3fb.png b/riot/emojione/png/1f64b-1f3fb.png new file mode 100644 index 0000000..1c90e3e Binary files /dev/null and b/riot/emojione/png/1f64b-1f3fb.png differ diff --git a/riot/emojione/png/1f64b-1f3fc.png b/riot/emojione/png/1f64b-1f3fc.png new file mode 100644 index 0000000..82c3ef2 Binary files /dev/null and b/riot/emojione/png/1f64b-1f3fc.png differ diff --git a/riot/emojione/png/1f64b-1f3fd.png b/riot/emojione/png/1f64b-1f3fd.png new file mode 100644 index 0000000..1b1da2a Binary files /dev/null and b/riot/emojione/png/1f64b-1f3fd.png differ diff --git a/riot/emojione/png/1f64b-1f3fe.png b/riot/emojione/png/1f64b-1f3fe.png new file mode 100644 index 0000000..e453855 Binary files /dev/null and b/riot/emojione/png/1f64b-1f3fe.png differ diff --git a/riot/emojione/png/1f64b-1f3ff.png b/riot/emojione/png/1f64b-1f3ff.png new file mode 100644 index 0000000..b86200f Binary files /dev/null and b/riot/emojione/png/1f64b-1f3ff.png differ diff --git a/riot/emojione/png/1f64b.png b/riot/emojione/png/1f64b.png new file mode 100644 index 0000000..2880708 Binary files /dev/null and b/riot/emojione/png/1f64b.png differ diff --git a/riot/emojione/png/1f64c-1f3fb.png b/riot/emojione/png/1f64c-1f3fb.png new file mode 100644 index 0000000..1168b82 Binary files /dev/null and b/riot/emojione/png/1f64c-1f3fb.png differ diff --git a/riot/emojione/png/1f64c-1f3fc.png b/riot/emojione/png/1f64c-1f3fc.png new file mode 100644 index 0000000..322de62 Binary files /dev/null and b/riot/emojione/png/1f64c-1f3fc.png differ diff --git a/riot/emojione/png/1f64c-1f3fd.png b/riot/emojione/png/1f64c-1f3fd.png new file mode 100644 index 0000000..2aa24e0 Binary files /dev/null and b/riot/emojione/png/1f64c-1f3fd.png differ diff --git a/riot/emojione/png/1f64c-1f3fe.png b/riot/emojione/png/1f64c-1f3fe.png new file mode 100644 index 0000000..f31bf0d Binary files /dev/null and b/riot/emojione/png/1f64c-1f3fe.png differ diff --git a/riot/emojione/png/1f64c-1f3ff.png b/riot/emojione/png/1f64c-1f3ff.png new file mode 100644 index 0000000..5e95067 Binary files /dev/null and b/riot/emojione/png/1f64c-1f3ff.png differ diff --git a/riot/emojione/png/1f64c.png b/riot/emojione/png/1f64c.png new file mode 100644 index 0000000..c0155f7 Binary files /dev/null and b/riot/emojione/png/1f64c.png differ diff --git a/riot/emojione/png/1f64d-1f3fb.png b/riot/emojione/png/1f64d-1f3fb.png new file mode 100644 index 0000000..21d3bb4 Binary files /dev/null and b/riot/emojione/png/1f64d-1f3fb.png differ diff --git a/riot/emojione/png/1f64d-1f3fc.png b/riot/emojione/png/1f64d-1f3fc.png new file mode 100644 index 0000000..973f5fc Binary files /dev/null and b/riot/emojione/png/1f64d-1f3fc.png differ diff --git a/riot/emojione/png/1f64d-1f3fd.png b/riot/emojione/png/1f64d-1f3fd.png new file mode 100644 index 0000000..41fbcc7 Binary files /dev/null and b/riot/emojione/png/1f64d-1f3fd.png differ diff --git a/riot/emojione/png/1f64d-1f3fe.png b/riot/emojione/png/1f64d-1f3fe.png new file mode 100644 index 0000000..5a37c74 Binary files /dev/null and b/riot/emojione/png/1f64d-1f3fe.png differ diff --git a/riot/emojione/png/1f64d-1f3ff.png b/riot/emojione/png/1f64d-1f3ff.png new file mode 100644 index 0000000..e08141f Binary files /dev/null and b/riot/emojione/png/1f64d-1f3ff.png differ diff --git a/riot/emojione/png/1f64d.png b/riot/emojione/png/1f64d.png new file mode 100644 index 0000000..5793249 Binary files /dev/null and b/riot/emojione/png/1f64d.png differ diff --git a/riot/emojione/png/1f64e-1f3fb.png b/riot/emojione/png/1f64e-1f3fb.png new file mode 100644 index 0000000..57e826b Binary files /dev/null and b/riot/emojione/png/1f64e-1f3fb.png differ diff --git a/riot/emojione/png/1f64e-1f3fc.png b/riot/emojione/png/1f64e-1f3fc.png new file mode 100644 index 0000000..3f317c0 Binary files /dev/null and b/riot/emojione/png/1f64e-1f3fc.png differ diff --git a/riot/emojione/png/1f64e-1f3fd.png b/riot/emojione/png/1f64e-1f3fd.png new file mode 100644 index 0000000..d2fbb6c Binary files /dev/null and b/riot/emojione/png/1f64e-1f3fd.png differ diff --git a/riot/emojione/png/1f64e-1f3fe.png b/riot/emojione/png/1f64e-1f3fe.png new file mode 100644 index 0000000..643ceb4 Binary files /dev/null and b/riot/emojione/png/1f64e-1f3fe.png differ diff --git a/riot/emojione/png/1f64e-1f3ff.png b/riot/emojione/png/1f64e-1f3ff.png new file mode 100644 index 0000000..b2eb685 Binary files /dev/null and b/riot/emojione/png/1f64e-1f3ff.png differ diff --git a/riot/emojione/png/1f64e.png b/riot/emojione/png/1f64e.png new file mode 100644 index 0000000..10eb057 Binary files /dev/null and b/riot/emojione/png/1f64e.png differ diff --git a/riot/emojione/png/1f64f-1f3fb.png b/riot/emojione/png/1f64f-1f3fb.png new file mode 100644 index 0000000..060ef25 Binary files /dev/null and b/riot/emojione/png/1f64f-1f3fb.png differ diff --git a/riot/emojione/png/1f64f-1f3fc.png b/riot/emojione/png/1f64f-1f3fc.png new file mode 100644 index 0000000..56dc607 Binary files /dev/null and b/riot/emojione/png/1f64f-1f3fc.png differ diff --git a/riot/emojione/png/1f64f-1f3fd.png b/riot/emojione/png/1f64f-1f3fd.png new file mode 100644 index 0000000..0f33b86 Binary files /dev/null and b/riot/emojione/png/1f64f-1f3fd.png differ diff --git a/riot/emojione/png/1f64f-1f3fe.png b/riot/emojione/png/1f64f-1f3fe.png new file mode 100644 index 0000000..2ea8dc1 Binary files /dev/null and b/riot/emojione/png/1f64f-1f3fe.png differ diff --git a/riot/emojione/png/1f64f-1f3ff.png b/riot/emojione/png/1f64f-1f3ff.png new file mode 100644 index 0000000..2128a6c Binary files /dev/null and b/riot/emojione/png/1f64f-1f3ff.png differ diff --git a/riot/emojione/png/1f64f.png b/riot/emojione/png/1f64f.png new file mode 100644 index 0000000..8347f24 Binary files /dev/null and b/riot/emojione/png/1f64f.png differ diff --git a/riot/emojione/png/1f680.png b/riot/emojione/png/1f680.png new file mode 100644 index 0000000..0d8da08 Binary files /dev/null and b/riot/emojione/png/1f680.png differ diff --git a/riot/emojione/png/1f681.png b/riot/emojione/png/1f681.png new file mode 100644 index 0000000..7ec5f39 Binary files /dev/null and b/riot/emojione/png/1f681.png differ diff --git a/riot/emojione/png/1f682.png b/riot/emojione/png/1f682.png new file mode 100644 index 0000000..9ac0d99 Binary files /dev/null and b/riot/emojione/png/1f682.png differ diff --git a/riot/emojione/png/1f683.png b/riot/emojione/png/1f683.png new file mode 100644 index 0000000..a9acbf1 Binary files /dev/null and b/riot/emojione/png/1f683.png differ diff --git a/riot/emojione/png/1f684.png b/riot/emojione/png/1f684.png new file mode 100644 index 0000000..ed61c67 Binary files /dev/null and b/riot/emojione/png/1f684.png differ diff --git a/riot/emojione/png/1f685.png b/riot/emojione/png/1f685.png new file mode 100644 index 0000000..4f698e0 Binary files /dev/null and b/riot/emojione/png/1f685.png differ diff --git a/riot/emojione/png/1f686.png b/riot/emojione/png/1f686.png new file mode 100644 index 0000000..367c7bc Binary files /dev/null and b/riot/emojione/png/1f686.png differ diff --git a/riot/emojione/png/1f687.png b/riot/emojione/png/1f687.png new file mode 100644 index 0000000..1de8f05 Binary files /dev/null and b/riot/emojione/png/1f687.png differ diff --git a/riot/emojione/png/1f688.png b/riot/emojione/png/1f688.png new file mode 100644 index 0000000..a64829f Binary files /dev/null and b/riot/emojione/png/1f688.png differ diff --git a/riot/emojione/png/1f689.png b/riot/emojione/png/1f689.png new file mode 100644 index 0000000..5c26fee Binary files /dev/null and b/riot/emojione/png/1f689.png differ diff --git a/riot/emojione/png/1f68a.png b/riot/emojione/png/1f68a.png new file mode 100644 index 0000000..b6f0e69 Binary files /dev/null and b/riot/emojione/png/1f68a.png differ diff --git a/riot/emojione/png/1f68b.png b/riot/emojione/png/1f68b.png new file mode 100644 index 0000000..3c80321 Binary files /dev/null and b/riot/emojione/png/1f68b.png differ diff --git a/riot/emojione/png/1f68c.png b/riot/emojione/png/1f68c.png new file mode 100644 index 0000000..641ddc5 Binary files /dev/null and b/riot/emojione/png/1f68c.png differ diff --git a/riot/emojione/png/1f68d.png b/riot/emojione/png/1f68d.png new file mode 100644 index 0000000..ad91e25 Binary files /dev/null and b/riot/emojione/png/1f68d.png differ diff --git a/riot/emojione/png/1f68e.png b/riot/emojione/png/1f68e.png new file mode 100644 index 0000000..139a993 Binary files /dev/null and b/riot/emojione/png/1f68e.png differ diff --git a/riot/emojione/png/1f68f.png b/riot/emojione/png/1f68f.png new file mode 100644 index 0000000..b2b6220 Binary files /dev/null and b/riot/emojione/png/1f68f.png differ diff --git a/riot/emojione/png/1f690.png b/riot/emojione/png/1f690.png new file mode 100644 index 0000000..c60dd8f Binary files /dev/null and b/riot/emojione/png/1f690.png differ diff --git a/riot/emojione/png/1f691.png b/riot/emojione/png/1f691.png new file mode 100644 index 0000000..6fb8076 Binary files /dev/null and b/riot/emojione/png/1f691.png differ diff --git a/riot/emojione/png/1f692.png b/riot/emojione/png/1f692.png new file mode 100644 index 0000000..2cd45b7 Binary files /dev/null and b/riot/emojione/png/1f692.png differ diff --git a/riot/emojione/png/1f693.png b/riot/emojione/png/1f693.png new file mode 100644 index 0000000..3da4253 Binary files /dev/null and b/riot/emojione/png/1f693.png differ diff --git a/riot/emojione/png/1f694.png b/riot/emojione/png/1f694.png new file mode 100644 index 0000000..c9109c8 Binary files /dev/null and b/riot/emojione/png/1f694.png differ diff --git a/riot/emojione/png/1f695.png b/riot/emojione/png/1f695.png new file mode 100644 index 0000000..55f4cc8 Binary files /dev/null and b/riot/emojione/png/1f695.png differ diff --git a/riot/emojione/png/1f696.png b/riot/emojione/png/1f696.png new file mode 100644 index 0000000..fea14e4 Binary files /dev/null and b/riot/emojione/png/1f696.png differ diff --git a/riot/emojione/png/1f697.png b/riot/emojione/png/1f697.png new file mode 100644 index 0000000..b3e6a77 Binary files /dev/null and b/riot/emojione/png/1f697.png differ diff --git a/riot/emojione/png/1f698.png b/riot/emojione/png/1f698.png new file mode 100644 index 0000000..3c7e1d5 Binary files /dev/null and b/riot/emojione/png/1f698.png differ diff --git a/riot/emojione/png/1f699.png b/riot/emojione/png/1f699.png new file mode 100644 index 0000000..e8ba817 Binary files /dev/null and b/riot/emojione/png/1f699.png differ diff --git a/riot/emojione/png/1f69a.png b/riot/emojione/png/1f69a.png new file mode 100644 index 0000000..130de04 Binary files /dev/null and b/riot/emojione/png/1f69a.png differ diff --git a/riot/emojione/png/1f69b.png b/riot/emojione/png/1f69b.png new file mode 100644 index 0000000..c821731 Binary files /dev/null and b/riot/emojione/png/1f69b.png differ diff --git a/riot/emojione/png/1f69c.png b/riot/emojione/png/1f69c.png new file mode 100644 index 0000000..c1bf8ca Binary files /dev/null and b/riot/emojione/png/1f69c.png differ diff --git a/riot/emojione/png/1f69d.png b/riot/emojione/png/1f69d.png new file mode 100644 index 0000000..11eb1f5 Binary files /dev/null and b/riot/emojione/png/1f69d.png differ diff --git a/riot/emojione/png/1f69e.png b/riot/emojione/png/1f69e.png new file mode 100644 index 0000000..ade2218 Binary files /dev/null and b/riot/emojione/png/1f69e.png differ diff --git a/riot/emojione/png/1f69f.png b/riot/emojione/png/1f69f.png new file mode 100644 index 0000000..a59d5f4 Binary files /dev/null and b/riot/emojione/png/1f69f.png differ diff --git a/riot/emojione/png/1f6a0.png b/riot/emojione/png/1f6a0.png new file mode 100644 index 0000000..1dea73c Binary files /dev/null and b/riot/emojione/png/1f6a0.png differ diff --git a/riot/emojione/png/1f6a1.png b/riot/emojione/png/1f6a1.png new file mode 100644 index 0000000..3eb4b61 Binary files /dev/null and b/riot/emojione/png/1f6a1.png differ diff --git a/riot/emojione/png/1f6a2.png b/riot/emojione/png/1f6a2.png new file mode 100644 index 0000000..62d54f7 Binary files /dev/null and b/riot/emojione/png/1f6a2.png differ diff --git a/riot/emojione/png/1f6a3-1f3fb.png b/riot/emojione/png/1f6a3-1f3fb.png new file mode 100644 index 0000000..5e5d185 Binary files /dev/null and b/riot/emojione/png/1f6a3-1f3fb.png differ diff --git a/riot/emojione/png/1f6a3-1f3fc.png b/riot/emojione/png/1f6a3-1f3fc.png new file mode 100644 index 0000000..9b123ef Binary files /dev/null and b/riot/emojione/png/1f6a3-1f3fc.png differ diff --git a/riot/emojione/png/1f6a3-1f3fd.png b/riot/emojione/png/1f6a3-1f3fd.png new file mode 100644 index 0000000..8ebd89a Binary files /dev/null and b/riot/emojione/png/1f6a3-1f3fd.png differ diff --git a/riot/emojione/png/1f6a3-1f3fe.png b/riot/emojione/png/1f6a3-1f3fe.png new file mode 100644 index 0000000..2b0d04f Binary files /dev/null and b/riot/emojione/png/1f6a3-1f3fe.png differ diff --git a/riot/emojione/png/1f6a3-1f3ff.png b/riot/emojione/png/1f6a3-1f3ff.png new file mode 100644 index 0000000..b346f2d Binary files /dev/null and b/riot/emojione/png/1f6a3-1f3ff.png differ diff --git a/riot/emojione/png/1f6a3.png b/riot/emojione/png/1f6a3.png new file mode 100644 index 0000000..dd4dfc0 Binary files /dev/null and b/riot/emojione/png/1f6a3.png differ diff --git a/riot/emojione/png/1f6a4.png b/riot/emojione/png/1f6a4.png new file mode 100644 index 0000000..74059d1 Binary files /dev/null and b/riot/emojione/png/1f6a4.png differ diff --git a/riot/emojione/png/1f6a5.png b/riot/emojione/png/1f6a5.png new file mode 100644 index 0000000..6b31228 Binary files /dev/null and b/riot/emojione/png/1f6a5.png differ diff --git a/riot/emojione/png/1f6a6.png b/riot/emojione/png/1f6a6.png new file mode 100644 index 0000000..8085973 Binary files /dev/null and b/riot/emojione/png/1f6a6.png differ diff --git a/riot/emojione/png/1f6a7.png b/riot/emojione/png/1f6a7.png new file mode 100644 index 0000000..ef8db5f Binary files /dev/null and b/riot/emojione/png/1f6a7.png differ diff --git a/riot/emojione/png/1f6a8.png b/riot/emojione/png/1f6a8.png new file mode 100644 index 0000000..cad66b0 Binary files /dev/null and b/riot/emojione/png/1f6a8.png differ diff --git a/riot/emojione/png/1f6a9.png b/riot/emojione/png/1f6a9.png new file mode 100644 index 0000000..c12d8b0 Binary files /dev/null and b/riot/emojione/png/1f6a9.png differ diff --git a/riot/emojione/png/1f6aa.png b/riot/emojione/png/1f6aa.png new file mode 100644 index 0000000..36ae3e2 Binary files /dev/null and b/riot/emojione/png/1f6aa.png differ diff --git a/riot/emojione/png/1f6ab.png b/riot/emojione/png/1f6ab.png new file mode 100644 index 0000000..d2efd65 Binary files /dev/null and b/riot/emojione/png/1f6ab.png differ diff --git a/riot/emojione/png/1f6ac.png b/riot/emojione/png/1f6ac.png new file mode 100644 index 0000000..910f648 Binary files /dev/null and b/riot/emojione/png/1f6ac.png differ diff --git a/riot/emojione/png/1f6ad.png b/riot/emojione/png/1f6ad.png new file mode 100644 index 0000000..586b8d2 Binary files /dev/null and b/riot/emojione/png/1f6ad.png differ diff --git a/riot/emojione/png/1f6ae.png b/riot/emojione/png/1f6ae.png new file mode 100644 index 0000000..82a84f9 Binary files /dev/null and b/riot/emojione/png/1f6ae.png differ diff --git a/riot/emojione/png/1f6af.png b/riot/emojione/png/1f6af.png new file mode 100644 index 0000000..341d257 Binary files /dev/null and b/riot/emojione/png/1f6af.png differ diff --git a/riot/emojione/png/1f6b0.png b/riot/emojione/png/1f6b0.png new file mode 100644 index 0000000..2c61004 Binary files /dev/null and b/riot/emojione/png/1f6b0.png differ diff --git a/riot/emojione/png/1f6b1.png b/riot/emojione/png/1f6b1.png new file mode 100644 index 0000000..827d419 Binary files /dev/null and b/riot/emojione/png/1f6b1.png differ diff --git a/riot/emojione/png/1f6b2.png b/riot/emojione/png/1f6b2.png new file mode 100644 index 0000000..556ed70 Binary files /dev/null and b/riot/emojione/png/1f6b2.png differ diff --git a/riot/emojione/png/1f6b3.png b/riot/emojione/png/1f6b3.png new file mode 100644 index 0000000..19c8542 Binary files /dev/null and b/riot/emojione/png/1f6b3.png differ diff --git a/riot/emojione/png/1f6b4-1f3fb.png b/riot/emojione/png/1f6b4-1f3fb.png new file mode 100644 index 0000000..decc2f7 Binary files /dev/null and b/riot/emojione/png/1f6b4-1f3fb.png differ diff --git a/riot/emojione/png/1f6b4-1f3fc.png b/riot/emojione/png/1f6b4-1f3fc.png new file mode 100644 index 0000000..0067717 Binary files /dev/null and b/riot/emojione/png/1f6b4-1f3fc.png differ diff --git a/riot/emojione/png/1f6b4-1f3fd.png b/riot/emojione/png/1f6b4-1f3fd.png new file mode 100644 index 0000000..a4f7b5e Binary files /dev/null and b/riot/emojione/png/1f6b4-1f3fd.png differ diff --git a/riot/emojione/png/1f6b4-1f3fe.png b/riot/emojione/png/1f6b4-1f3fe.png new file mode 100644 index 0000000..a3c8a79 Binary files /dev/null and b/riot/emojione/png/1f6b4-1f3fe.png differ diff --git a/riot/emojione/png/1f6b4-1f3ff.png b/riot/emojione/png/1f6b4-1f3ff.png new file mode 100644 index 0000000..1606a87 Binary files /dev/null and b/riot/emojione/png/1f6b4-1f3ff.png differ diff --git a/riot/emojione/png/1f6b4.png b/riot/emojione/png/1f6b4.png new file mode 100644 index 0000000..9274da1 Binary files /dev/null and b/riot/emojione/png/1f6b4.png differ diff --git a/riot/emojione/png/1f6b5-1f3fb.png b/riot/emojione/png/1f6b5-1f3fb.png new file mode 100644 index 0000000..e9f1daf Binary files /dev/null and b/riot/emojione/png/1f6b5-1f3fb.png differ diff --git a/riot/emojione/png/1f6b5-1f3fc.png b/riot/emojione/png/1f6b5-1f3fc.png new file mode 100644 index 0000000..555b9e2 Binary files /dev/null and b/riot/emojione/png/1f6b5-1f3fc.png differ diff --git a/riot/emojione/png/1f6b5-1f3fd.png b/riot/emojione/png/1f6b5-1f3fd.png new file mode 100644 index 0000000..7df5508 Binary files /dev/null and b/riot/emojione/png/1f6b5-1f3fd.png differ diff --git a/riot/emojione/png/1f6b5-1f3fe.png b/riot/emojione/png/1f6b5-1f3fe.png new file mode 100644 index 0000000..f94b345 Binary files /dev/null and b/riot/emojione/png/1f6b5-1f3fe.png differ diff --git a/riot/emojione/png/1f6b5-1f3ff.png b/riot/emojione/png/1f6b5-1f3ff.png new file mode 100644 index 0000000..16a4586 Binary files /dev/null and b/riot/emojione/png/1f6b5-1f3ff.png differ diff --git a/riot/emojione/png/1f6b5.png b/riot/emojione/png/1f6b5.png new file mode 100644 index 0000000..41d3dc3 Binary files /dev/null and b/riot/emojione/png/1f6b5.png differ diff --git a/riot/emojione/png/1f6b6-1f3fb.png b/riot/emojione/png/1f6b6-1f3fb.png new file mode 100644 index 0000000..4e391b4 Binary files /dev/null and b/riot/emojione/png/1f6b6-1f3fb.png differ diff --git a/riot/emojione/png/1f6b6-1f3fc.png b/riot/emojione/png/1f6b6-1f3fc.png new file mode 100644 index 0000000..31f94a1 Binary files /dev/null and b/riot/emojione/png/1f6b6-1f3fc.png differ diff --git a/riot/emojione/png/1f6b6-1f3fd.png b/riot/emojione/png/1f6b6-1f3fd.png new file mode 100644 index 0000000..f7ed8e3 Binary files /dev/null and b/riot/emojione/png/1f6b6-1f3fd.png differ diff --git a/riot/emojione/png/1f6b6-1f3fe.png b/riot/emojione/png/1f6b6-1f3fe.png new file mode 100644 index 0000000..e58dc04 Binary files /dev/null and b/riot/emojione/png/1f6b6-1f3fe.png differ diff --git a/riot/emojione/png/1f6b6-1f3ff.png b/riot/emojione/png/1f6b6-1f3ff.png new file mode 100644 index 0000000..ba4e1b5 Binary files /dev/null and b/riot/emojione/png/1f6b6-1f3ff.png differ diff --git a/riot/emojione/png/1f6b6.png b/riot/emojione/png/1f6b6.png new file mode 100644 index 0000000..06dc169 Binary files /dev/null and b/riot/emojione/png/1f6b6.png differ diff --git a/riot/emojione/png/1f6b7.png b/riot/emojione/png/1f6b7.png new file mode 100644 index 0000000..286aa57 Binary files /dev/null and b/riot/emojione/png/1f6b7.png differ diff --git a/riot/emojione/png/1f6b8.png b/riot/emojione/png/1f6b8.png new file mode 100644 index 0000000..fa4c091 Binary files /dev/null and b/riot/emojione/png/1f6b8.png differ diff --git a/riot/emojione/png/1f6b9.png b/riot/emojione/png/1f6b9.png new file mode 100644 index 0000000..f5a1e1b Binary files /dev/null and b/riot/emojione/png/1f6b9.png differ diff --git a/riot/emojione/png/1f6ba.png b/riot/emojione/png/1f6ba.png new file mode 100644 index 0000000..d4ecc22 Binary files /dev/null and b/riot/emojione/png/1f6ba.png differ diff --git a/riot/emojione/png/1f6bb.png b/riot/emojione/png/1f6bb.png new file mode 100644 index 0000000..9588e0f Binary files /dev/null and b/riot/emojione/png/1f6bb.png differ diff --git a/riot/emojione/png/1f6bc.png b/riot/emojione/png/1f6bc.png new file mode 100644 index 0000000..64a10b7 Binary files /dev/null and b/riot/emojione/png/1f6bc.png differ diff --git a/riot/emojione/png/1f6bd.png b/riot/emojione/png/1f6bd.png new file mode 100644 index 0000000..1392f76 Binary files /dev/null and b/riot/emojione/png/1f6bd.png differ diff --git a/riot/emojione/png/1f6be.png b/riot/emojione/png/1f6be.png new file mode 100644 index 0000000..aa433e8 Binary files /dev/null and b/riot/emojione/png/1f6be.png differ diff --git a/riot/emojione/png/1f6bf.png b/riot/emojione/png/1f6bf.png new file mode 100644 index 0000000..156776a Binary files /dev/null and b/riot/emojione/png/1f6bf.png differ diff --git a/riot/emojione/png/1f6c0-1f3fb.png b/riot/emojione/png/1f6c0-1f3fb.png new file mode 100644 index 0000000..2152eab Binary files /dev/null and b/riot/emojione/png/1f6c0-1f3fb.png differ diff --git a/riot/emojione/png/1f6c0-1f3fc.png b/riot/emojione/png/1f6c0-1f3fc.png new file mode 100644 index 0000000..2102e61 Binary files /dev/null and b/riot/emojione/png/1f6c0-1f3fc.png differ diff --git a/riot/emojione/png/1f6c0-1f3fd.png b/riot/emojione/png/1f6c0-1f3fd.png new file mode 100644 index 0000000..fae6618 Binary files /dev/null and b/riot/emojione/png/1f6c0-1f3fd.png differ diff --git a/riot/emojione/png/1f6c0-1f3fe.png b/riot/emojione/png/1f6c0-1f3fe.png new file mode 100644 index 0000000..1f8959d Binary files /dev/null and b/riot/emojione/png/1f6c0-1f3fe.png differ diff --git a/riot/emojione/png/1f6c0-1f3ff.png b/riot/emojione/png/1f6c0-1f3ff.png new file mode 100644 index 0000000..c8a08e8 Binary files /dev/null and b/riot/emojione/png/1f6c0-1f3ff.png differ diff --git a/riot/emojione/png/1f6c0.png b/riot/emojione/png/1f6c0.png new file mode 100644 index 0000000..43fba5c Binary files /dev/null and b/riot/emojione/png/1f6c0.png differ diff --git a/riot/emojione/png/1f6c1.png b/riot/emojione/png/1f6c1.png new file mode 100644 index 0000000..9a5f093 Binary files /dev/null and b/riot/emojione/png/1f6c1.png differ diff --git a/riot/emojione/png/1f6c2.png b/riot/emojione/png/1f6c2.png new file mode 100644 index 0000000..079e34e Binary files /dev/null and b/riot/emojione/png/1f6c2.png differ diff --git a/riot/emojione/png/1f6c3.png b/riot/emojione/png/1f6c3.png new file mode 100644 index 0000000..21b7ce2 Binary files /dev/null and b/riot/emojione/png/1f6c3.png differ diff --git a/riot/emojione/png/1f6c4.png b/riot/emojione/png/1f6c4.png new file mode 100644 index 0000000..409b593 Binary files /dev/null and b/riot/emojione/png/1f6c4.png differ diff --git a/riot/emojione/png/1f6c5.png b/riot/emojione/png/1f6c5.png new file mode 100644 index 0000000..887b23f Binary files /dev/null and b/riot/emojione/png/1f6c5.png differ diff --git a/riot/emojione/png/1f6cb.png b/riot/emojione/png/1f6cb.png new file mode 100644 index 0000000..27b19b1 Binary files /dev/null and b/riot/emojione/png/1f6cb.png differ diff --git a/riot/emojione/png/1f6cc.png b/riot/emojione/png/1f6cc.png new file mode 100644 index 0000000..c739e7f Binary files /dev/null and b/riot/emojione/png/1f6cc.png differ diff --git a/riot/emojione/png/1f6cd.png b/riot/emojione/png/1f6cd.png new file mode 100644 index 0000000..99f2a2b Binary files /dev/null and b/riot/emojione/png/1f6cd.png differ diff --git a/riot/emojione/png/1f6ce.png b/riot/emojione/png/1f6ce.png new file mode 100644 index 0000000..6b3297c Binary files /dev/null and b/riot/emojione/png/1f6ce.png differ diff --git a/riot/emojione/png/1f6cf.png b/riot/emojione/png/1f6cf.png new file mode 100644 index 0000000..86f964e Binary files /dev/null and b/riot/emojione/png/1f6cf.png differ diff --git a/riot/emojione/png/1f6d0.png b/riot/emojione/png/1f6d0.png new file mode 100644 index 0000000..207d59c Binary files /dev/null and b/riot/emojione/png/1f6d0.png differ diff --git a/riot/emojione/png/1f6d1.png b/riot/emojione/png/1f6d1.png new file mode 100644 index 0000000..5ed6100 Binary files /dev/null and b/riot/emojione/png/1f6d1.png differ diff --git a/riot/emojione/png/1f6d2.png b/riot/emojione/png/1f6d2.png new file mode 100644 index 0000000..1086fe6 Binary files /dev/null and b/riot/emojione/png/1f6d2.png differ diff --git a/riot/emojione/png/1f6e0.png b/riot/emojione/png/1f6e0.png new file mode 100644 index 0000000..3c60492 Binary files /dev/null and b/riot/emojione/png/1f6e0.png differ diff --git a/riot/emojione/png/1f6e1.png b/riot/emojione/png/1f6e1.png new file mode 100644 index 0000000..610bf03 Binary files /dev/null and b/riot/emojione/png/1f6e1.png differ diff --git a/riot/emojione/png/1f6e2.png b/riot/emojione/png/1f6e2.png new file mode 100644 index 0000000..c4c4d42 Binary files /dev/null and b/riot/emojione/png/1f6e2.png differ diff --git a/riot/emojione/png/1f6e3.png b/riot/emojione/png/1f6e3.png new file mode 100644 index 0000000..8c3d3d0 Binary files /dev/null and b/riot/emojione/png/1f6e3.png differ diff --git a/riot/emojione/png/1f6e4.png b/riot/emojione/png/1f6e4.png new file mode 100644 index 0000000..e1a7a0d Binary files /dev/null and b/riot/emojione/png/1f6e4.png differ diff --git a/riot/emojione/png/1f6e5.png b/riot/emojione/png/1f6e5.png new file mode 100644 index 0000000..0506db1 Binary files /dev/null and b/riot/emojione/png/1f6e5.png differ diff --git a/riot/emojione/png/1f6e9.png b/riot/emojione/png/1f6e9.png new file mode 100644 index 0000000..b731b15 Binary files /dev/null and b/riot/emojione/png/1f6e9.png differ diff --git a/riot/emojione/png/1f6eb.png b/riot/emojione/png/1f6eb.png new file mode 100644 index 0000000..a5766f9 Binary files /dev/null and b/riot/emojione/png/1f6eb.png differ diff --git a/riot/emojione/png/1f6ec.png b/riot/emojione/png/1f6ec.png new file mode 100644 index 0000000..d668419 Binary files /dev/null and b/riot/emojione/png/1f6ec.png differ diff --git a/riot/emojione/png/1f6f0.png b/riot/emojione/png/1f6f0.png new file mode 100644 index 0000000..4ba55d6 Binary files /dev/null and b/riot/emojione/png/1f6f0.png differ diff --git a/riot/emojione/png/1f6f3.png b/riot/emojione/png/1f6f3.png new file mode 100644 index 0000000..19d4acb Binary files /dev/null and b/riot/emojione/png/1f6f3.png differ diff --git a/riot/emojione/png/1f6f4.png b/riot/emojione/png/1f6f4.png new file mode 100644 index 0000000..4ab7ef5 Binary files /dev/null and b/riot/emojione/png/1f6f4.png differ diff --git a/riot/emojione/png/1f6f5.png b/riot/emojione/png/1f6f5.png new file mode 100644 index 0000000..c5afa72 Binary files /dev/null and b/riot/emojione/png/1f6f5.png differ diff --git a/riot/emojione/png/1f6f6.png b/riot/emojione/png/1f6f6.png new file mode 100644 index 0000000..e26cdb9 Binary files /dev/null and b/riot/emojione/png/1f6f6.png differ diff --git a/riot/emojione/png/1f910.png b/riot/emojione/png/1f910.png new file mode 100644 index 0000000..f8ced25 Binary files /dev/null and b/riot/emojione/png/1f910.png differ diff --git a/riot/emojione/png/1f911.png b/riot/emojione/png/1f911.png new file mode 100644 index 0000000..75fd1e9 Binary files /dev/null and b/riot/emojione/png/1f911.png differ diff --git a/riot/emojione/png/1f912.png b/riot/emojione/png/1f912.png new file mode 100644 index 0000000..8fc5738 Binary files /dev/null and b/riot/emojione/png/1f912.png differ diff --git a/riot/emojione/png/1f913.png b/riot/emojione/png/1f913.png new file mode 100644 index 0000000..7820bd5 Binary files /dev/null and b/riot/emojione/png/1f913.png differ diff --git a/riot/emojione/png/1f914.png b/riot/emojione/png/1f914.png new file mode 100644 index 0000000..c18f6fd Binary files /dev/null and b/riot/emojione/png/1f914.png differ diff --git a/riot/emojione/png/1f915.png b/riot/emojione/png/1f915.png new file mode 100644 index 0000000..0be7230 Binary files /dev/null and b/riot/emojione/png/1f915.png differ diff --git a/riot/emojione/png/1f916.png b/riot/emojione/png/1f916.png new file mode 100644 index 0000000..7cc6261 Binary files /dev/null and b/riot/emojione/png/1f916.png differ diff --git a/riot/emojione/png/1f917.png b/riot/emojione/png/1f917.png new file mode 100644 index 0000000..5bba6dc Binary files /dev/null and b/riot/emojione/png/1f917.png differ diff --git a/riot/emojione/png/1f918-1f3fb.png b/riot/emojione/png/1f918-1f3fb.png new file mode 100644 index 0000000..c080d2a Binary files /dev/null and b/riot/emojione/png/1f918-1f3fb.png differ diff --git a/riot/emojione/png/1f918-1f3fc.png b/riot/emojione/png/1f918-1f3fc.png new file mode 100644 index 0000000..1231352 Binary files /dev/null and b/riot/emojione/png/1f918-1f3fc.png differ diff --git a/riot/emojione/png/1f918-1f3fd.png b/riot/emojione/png/1f918-1f3fd.png new file mode 100644 index 0000000..ca9be6a Binary files /dev/null and b/riot/emojione/png/1f918-1f3fd.png differ diff --git a/riot/emojione/png/1f918-1f3fe.png b/riot/emojione/png/1f918-1f3fe.png new file mode 100644 index 0000000..abe28cb Binary files /dev/null and b/riot/emojione/png/1f918-1f3fe.png differ diff --git a/riot/emojione/png/1f918-1f3ff.png b/riot/emojione/png/1f918-1f3ff.png new file mode 100644 index 0000000..0c6b5dd Binary files /dev/null and b/riot/emojione/png/1f918-1f3ff.png differ diff --git a/riot/emojione/png/1f918.png b/riot/emojione/png/1f918.png new file mode 100644 index 0000000..4aa6e7e Binary files /dev/null and b/riot/emojione/png/1f918.png differ diff --git a/riot/emojione/png/1f919-1f3fb.png b/riot/emojione/png/1f919-1f3fb.png new file mode 100644 index 0000000..2c93201 Binary files /dev/null and b/riot/emojione/png/1f919-1f3fb.png differ diff --git a/riot/emojione/png/1f919-1f3fc.png b/riot/emojione/png/1f919-1f3fc.png new file mode 100644 index 0000000..c39f45a Binary files /dev/null and b/riot/emojione/png/1f919-1f3fc.png differ diff --git a/riot/emojione/png/1f919-1f3fd.png b/riot/emojione/png/1f919-1f3fd.png new file mode 100644 index 0000000..83a57f6 Binary files /dev/null and b/riot/emojione/png/1f919-1f3fd.png differ diff --git a/riot/emojione/png/1f919-1f3fe.png b/riot/emojione/png/1f919-1f3fe.png new file mode 100644 index 0000000..65b3468 Binary files /dev/null and b/riot/emojione/png/1f919-1f3fe.png differ diff --git a/riot/emojione/png/1f919-1f3ff.png b/riot/emojione/png/1f919-1f3ff.png new file mode 100644 index 0000000..94ef68f Binary files /dev/null and b/riot/emojione/png/1f919-1f3ff.png differ diff --git a/riot/emojione/png/1f919.png b/riot/emojione/png/1f919.png new file mode 100644 index 0000000..a10c59b Binary files /dev/null and b/riot/emojione/png/1f919.png differ diff --git a/riot/emojione/png/1f91a-1f3fb.png b/riot/emojione/png/1f91a-1f3fb.png new file mode 100644 index 0000000..813d284 Binary files /dev/null and b/riot/emojione/png/1f91a-1f3fb.png differ diff --git a/riot/emojione/png/1f91a-1f3fc.png b/riot/emojione/png/1f91a-1f3fc.png new file mode 100644 index 0000000..192ff79 Binary files /dev/null and b/riot/emojione/png/1f91a-1f3fc.png differ diff --git a/riot/emojione/png/1f91a-1f3fd.png b/riot/emojione/png/1f91a-1f3fd.png new file mode 100644 index 0000000..61a727a Binary files /dev/null and b/riot/emojione/png/1f91a-1f3fd.png differ diff --git a/riot/emojione/png/1f91a-1f3fe.png b/riot/emojione/png/1f91a-1f3fe.png new file mode 100644 index 0000000..2e83da5 Binary files /dev/null and b/riot/emojione/png/1f91a-1f3fe.png differ diff --git a/riot/emojione/png/1f91a-1f3ff.png b/riot/emojione/png/1f91a-1f3ff.png new file mode 100644 index 0000000..d7a5b95 Binary files /dev/null and b/riot/emojione/png/1f91a-1f3ff.png differ diff --git a/riot/emojione/png/1f91a.png b/riot/emojione/png/1f91a.png new file mode 100644 index 0000000..4792342 Binary files /dev/null and b/riot/emojione/png/1f91a.png differ diff --git a/riot/emojione/png/1f91b-1f3fb.png b/riot/emojione/png/1f91b-1f3fb.png new file mode 100644 index 0000000..1262a6b Binary files /dev/null and b/riot/emojione/png/1f91b-1f3fb.png differ diff --git a/riot/emojione/png/1f91b-1f3fc.png b/riot/emojione/png/1f91b-1f3fc.png new file mode 100644 index 0000000..40bf70b Binary files /dev/null and b/riot/emojione/png/1f91b-1f3fc.png differ diff --git a/riot/emojione/png/1f91b-1f3fd.png b/riot/emojione/png/1f91b-1f3fd.png new file mode 100644 index 0000000..93f5814 Binary files /dev/null and b/riot/emojione/png/1f91b-1f3fd.png differ diff --git a/riot/emojione/png/1f91b-1f3fe.png b/riot/emojione/png/1f91b-1f3fe.png new file mode 100644 index 0000000..d82b5ec Binary files /dev/null and b/riot/emojione/png/1f91b-1f3fe.png differ diff --git a/riot/emojione/png/1f91b-1f3ff.png b/riot/emojione/png/1f91b-1f3ff.png new file mode 100644 index 0000000..09ae4cd Binary files /dev/null and b/riot/emojione/png/1f91b-1f3ff.png differ diff --git a/riot/emojione/png/1f91b.png b/riot/emojione/png/1f91b.png new file mode 100644 index 0000000..a9d9fd8 Binary files /dev/null and b/riot/emojione/png/1f91b.png differ diff --git a/riot/emojione/png/1f91c-1f3fb.png b/riot/emojione/png/1f91c-1f3fb.png new file mode 100644 index 0000000..33ded2f Binary files /dev/null and b/riot/emojione/png/1f91c-1f3fb.png differ diff --git a/riot/emojione/png/1f91c-1f3fc.png b/riot/emojione/png/1f91c-1f3fc.png new file mode 100644 index 0000000..88054e3 Binary files /dev/null and b/riot/emojione/png/1f91c-1f3fc.png differ diff --git a/riot/emojione/png/1f91c-1f3fd.png b/riot/emojione/png/1f91c-1f3fd.png new file mode 100644 index 0000000..84b9f5d Binary files /dev/null and b/riot/emojione/png/1f91c-1f3fd.png differ diff --git a/riot/emojione/png/1f91c-1f3fe.png b/riot/emojione/png/1f91c-1f3fe.png new file mode 100644 index 0000000..e741cfe Binary files /dev/null and b/riot/emojione/png/1f91c-1f3fe.png differ diff --git a/riot/emojione/png/1f91c-1f3ff.png b/riot/emojione/png/1f91c-1f3ff.png new file mode 100644 index 0000000..cf66d76 Binary files /dev/null and b/riot/emojione/png/1f91c-1f3ff.png differ diff --git a/riot/emojione/png/1f91c.png b/riot/emojione/png/1f91c.png new file mode 100644 index 0000000..754ed06 Binary files /dev/null and b/riot/emojione/png/1f91c.png differ diff --git a/riot/emojione/png/1f91d-1f3fb.png b/riot/emojione/png/1f91d-1f3fb.png new file mode 100644 index 0000000..8f8fbb9 Binary files /dev/null and b/riot/emojione/png/1f91d-1f3fb.png differ diff --git a/riot/emojione/png/1f91d-1f3fc.png b/riot/emojione/png/1f91d-1f3fc.png new file mode 100644 index 0000000..336a77a Binary files /dev/null and b/riot/emojione/png/1f91d-1f3fc.png differ diff --git a/riot/emojione/png/1f91d-1f3fd.png b/riot/emojione/png/1f91d-1f3fd.png new file mode 100644 index 0000000..95f62d4 Binary files /dev/null and b/riot/emojione/png/1f91d-1f3fd.png differ diff --git a/riot/emojione/png/1f91d-1f3fe.png b/riot/emojione/png/1f91d-1f3fe.png new file mode 100644 index 0000000..2b0a643 Binary files /dev/null and b/riot/emojione/png/1f91d-1f3fe.png differ diff --git a/riot/emojione/png/1f91d-1f3ff.png b/riot/emojione/png/1f91d-1f3ff.png new file mode 100644 index 0000000..40189ee Binary files /dev/null and b/riot/emojione/png/1f91d-1f3ff.png differ diff --git a/riot/emojione/png/1f91d.png b/riot/emojione/png/1f91d.png new file mode 100644 index 0000000..c5d35fd Binary files /dev/null and b/riot/emojione/png/1f91d.png differ diff --git a/riot/emojione/png/1f91e-1f3fb.png b/riot/emojione/png/1f91e-1f3fb.png new file mode 100644 index 0000000..dd2384a Binary files /dev/null and b/riot/emojione/png/1f91e-1f3fb.png differ diff --git a/riot/emojione/png/1f91e-1f3fc.png b/riot/emojione/png/1f91e-1f3fc.png new file mode 100644 index 0000000..6228401 Binary files /dev/null and b/riot/emojione/png/1f91e-1f3fc.png differ diff --git a/riot/emojione/png/1f91e-1f3fd.png b/riot/emojione/png/1f91e-1f3fd.png new file mode 100644 index 0000000..b1074da Binary files /dev/null and b/riot/emojione/png/1f91e-1f3fd.png differ diff --git a/riot/emojione/png/1f91e-1f3fe.png b/riot/emojione/png/1f91e-1f3fe.png new file mode 100644 index 0000000..75e05e4 Binary files /dev/null and b/riot/emojione/png/1f91e-1f3fe.png differ diff --git a/riot/emojione/png/1f91e-1f3ff.png b/riot/emojione/png/1f91e-1f3ff.png new file mode 100644 index 0000000..761aebd Binary files /dev/null and b/riot/emojione/png/1f91e-1f3ff.png differ diff --git a/riot/emojione/png/1f91e.png b/riot/emojione/png/1f91e.png new file mode 100644 index 0000000..4cd1851 Binary files /dev/null and b/riot/emojione/png/1f91e.png differ diff --git a/riot/emojione/png/1f920.png b/riot/emojione/png/1f920.png new file mode 100644 index 0000000..70dd5d0 Binary files /dev/null and b/riot/emojione/png/1f920.png differ diff --git a/riot/emojione/png/1f921.png b/riot/emojione/png/1f921.png new file mode 100644 index 0000000..02b7ff7 Binary files /dev/null and b/riot/emojione/png/1f921.png differ diff --git a/riot/emojione/png/1f922.png b/riot/emojione/png/1f922.png new file mode 100644 index 0000000..a566c10 Binary files /dev/null and b/riot/emojione/png/1f922.png differ diff --git a/riot/emojione/png/1f923.png b/riot/emojione/png/1f923.png new file mode 100644 index 0000000..b1736fe Binary files /dev/null and b/riot/emojione/png/1f923.png differ diff --git a/riot/emojione/png/1f924.png b/riot/emojione/png/1f924.png new file mode 100644 index 0000000..a546053 Binary files /dev/null and b/riot/emojione/png/1f924.png differ diff --git a/riot/emojione/png/1f925.png b/riot/emojione/png/1f925.png new file mode 100644 index 0000000..02827e2 Binary files /dev/null and b/riot/emojione/png/1f925.png differ diff --git a/riot/emojione/png/1f926-1f3fb.png b/riot/emojione/png/1f926-1f3fb.png new file mode 100644 index 0000000..2f4b010 Binary files /dev/null and b/riot/emojione/png/1f926-1f3fb.png differ diff --git a/riot/emojione/png/1f926-1f3fc.png b/riot/emojione/png/1f926-1f3fc.png new file mode 100644 index 0000000..97fb683 Binary files /dev/null and b/riot/emojione/png/1f926-1f3fc.png differ diff --git a/riot/emojione/png/1f926-1f3fd.png b/riot/emojione/png/1f926-1f3fd.png new file mode 100644 index 0000000..b5b5c1e Binary files /dev/null and b/riot/emojione/png/1f926-1f3fd.png differ diff --git a/riot/emojione/png/1f926-1f3fe.png b/riot/emojione/png/1f926-1f3fe.png new file mode 100644 index 0000000..2840b11 Binary files /dev/null and b/riot/emojione/png/1f926-1f3fe.png differ diff --git a/riot/emojione/png/1f926-1f3ff.png b/riot/emojione/png/1f926-1f3ff.png new file mode 100644 index 0000000..6f070db Binary files /dev/null and b/riot/emojione/png/1f926-1f3ff.png differ diff --git a/riot/emojione/png/1f926.png b/riot/emojione/png/1f926.png new file mode 100644 index 0000000..defc796 Binary files /dev/null and b/riot/emojione/png/1f926.png differ diff --git a/riot/emojione/png/1f927.png b/riot/emojione/png/1f927.png new file mode 100644 index 0000000..ccf07d4 Binary files /dev/null and b/riot/emojione/png/1f927.png differ diff --git a/riot/emojione/png/1f930-1f3fb.png b/riot/emojione/png/1f930-1f3fb.png new file mode 100644 index 0000000..a78703b Binary files /dev/null and b/riot/emojione/png/1f930-1f3fb.png differ diff --git a/riot/emojione/png/1f930-1f3fc.png b/riot/emojione/png/1f930-1f3fc.png new file mode 100644 index 0000000..0068c6c Binary files /dev/null and b/riot/emojione/png/1f930-1f3fc.png differ diff --git a/riot/emojione/png/1f930-1f3fd.png b/riot/emojione/png/1f930-1f3fd.png new file mode 100644 index 0000000..3206296 Binary files /dev/null and b/riot/emojione/png/1f930-1f3fd.png differ diff --git a/riot/emojione/png/1f930-1f3fe.png b/riot/emojione/png/1f930-1f3fe.png new file mode 100644 index 0000000..120fda5 Binary files /dev/null and b/riot/emojione/png/1f930-1f3fe.png differ diff --git a/riot/emojione/png/1f930-1f3ff.png b/riot/emojione/png/1f930-1f3ff.png new file mode 100644 index 0000000..569bfdf Binary files /dev/null and b/riot/emojione/png/1f930-1f3ff.png differ diff --git a/riot/emojione/png/1f930.png b/riot/emojione/png/1f930.png new file mode 100644 index 0000000..084e83a Binary files /dev/null and b/riot/emojione/png/1f930.png differ diff --git a/riot/emojione/png/1f933-1f3fb.png b/riot/emojione/png/1f933-1f3fb.png new file mode 100644 index 0000000..290e075 Binary files /dev/null and b/riot/emojione/png/1f933-1f3fb.png differ diff --git a/riot/emojione/png/1f933-1f3fc.png b/riot/emojione/png/1f933-1f3fc.png new file mode 100644 index 0000000..fcd9595 Binary files /dev/null and b/riot/emojione/png/1f933-1f3fc.png differ diff --git a/riot/emojione/png/1f933-1f3fd.png b/riot/emojione/png/1f933-1f3fd.png new file mode 100644 index 0000000..f3a22fd Binary files /dev/null and b/riot/emojione/png/1f933-1f3fd.png differ diff --git a/riot/emojione/png/1f933-1f3fe.png b/riot/emojione/png/1f933-1f3fe.png new file mode 100644 index 0000000..cdecf6d Binary files /dev/null and b/riot/emojione/png/1f933-1f3fe.png differ diff --git a/riot/emojione/png/1f933-1f3ff.png b/riot/emojione/png/1f933-1f3ff.png new file mode 100644 index 0000000..86acbb6 Binary files /dev/null and b/riot/emojione/png/1f933-1f3ff.png differ diff --git a/riot/emojione/png/1f933.png b/riot/emojione/png/1f933.png new file mode 100644 index 0000000..6a1ba75 Binary files /dev/null and b/riot/emojione/png/1f933.png differ diff --git a/riot/emojione/png/1f934-1f3fb.png b/riot/emojione/png/1f934-1f3fb.png new file mode 100644 index 0000000..849930c Binary files /dev/null and b/riot/emojione/png/1f934-1f3fb.png differ diff --git a/riot/emojione/png/1f934-1f3fc.png b/riot/emojione/png/1f934-1f3fc.png new file mode 100644 index 0000000..23d8b3b Binary files /dev/null and b/riot/emojione/png/1f934-1f3fc.png differ diff --git a/riot/emojione/png/1f934-1f3fd.png b/riot/emojione/png/1f934-1f3fd.png new file mode 100644 index 0000000..db6dfff Binary files /dev/null and b/riot/emojione/png/1f934-1f3fd.png differ diff --git a/riot/emojione/png/1f934-1f3fe.png b/riot/emojione/png/1f934-1f3fe.png new file mode 100644 index 0000000..8e10f8b Binary files /dev/null and b/riot/emojione/png/1f934-1f3fe.png differ diff --git a/riot/emojione/png/1f934-1f3ff.png b/riot/emojione/png/1f934-1f3ff.png new file mode 100644 index 0000000..138d4ea Binary files /dev/null and b/riot/emojione/png/1f934-1f3ff.png differ diff --git a/riot/emojione/png/1f934.png b/riot/emojione/png/1f934.png new file mode 100644 index 0000000..38d6934 Binary files /dev/null and b/riot/emojione/png/1f934.png differ diff --git a/riot/emojione/png/1f935-1f3fb.png b/riot/emojione/png/1f935-1f3fb.png new file mode 100644 index 0000000..7b6b3ac Binary files /dev/null and b/riot/emojione/png/1f935-1f3fb.png differ diff --git a/riot/emojione/png/1f935-1f3fc.png b/riot/emojione/png/1f935-1f3fc.png new file mode 100644 index 0000000..7975191 Binary files /dev/null and b/riot/emojione/png/1f935-1f3fc.png differ diff --git a/riot/emojione/png/1f935-1f3fd.png b/riot/emojione/png/1f935-1f3fd.png new file mode 100644 index 0000000..a2816f6 Binary files /dev/null and b/riot/emojione/png/1f935-1f3fd.png differ diff --git a/riot/emojione/png/1f935-1f3fe.png b/riot/emojione/png/1f935-1f3fe.png new file mode 100644 index 0000000..ea82917 Binary files /dev/null and b/riot/emojione/png/1f935-1f3fe.png differ diff --git a/riot/emojione/png/1f935-1f3ff.png b/riot/emojione/png/1f935-1f3ff.png new file mode 100644 index 0000000..c743e05 Binary files /dev/null and b/riot/emojione/png/1f935-1f3ff.png differ diff --git a/riot/emojione/png/1f935.png b/riot/emojione/png/1f935.png new file mode 100644 index 0000000..5f7e930 Binary files /dev/null and b/riot/emojione/png/1f935.png differ diff --git a/riot/emojione/png/1f936-1f3fb.png b/riot/emojione/png/1f936-1f3fb.png new file mode 100644 index 0000000..d8a695d Binary files /dev/null and b/riot/emojione/png/1f936-1f3fb.png differ diff --git a/riot/emojione/png/1f936-1f3fc.png b/riot/emojione/png/1f936-1f3fc.png new file mode 100644 index 0000000..0e17e8c Binary files /dev/null and b/riot/emojione/png/1f936-1f3fc.png differ diff --git a/riot/emojione/png/1f936-1f3fd.png b/riot/emojione/png/1f936-1f3fd.png new file mode 100644 index 0000000..c3ee4d1 Binary files /dev/null and b/riot/emojione/png/1f936-1f3fd.png differ diff --git a/riot/emojione/png/1f936-1f3fe.png b/riot/emojione/png/1f936-1f3fe.png new file mode 100644 index 0000000..68a556d Binary files /dev/null and b/riot/emojione/png/1f936-1f3fe.png differ diff --git a/riot/emojione/png/1f936-1f3ff.png b/riot/emojione/png/1f936-1f3ff.png new file mode 100644 index 0000000..ccab3c4 Binary files /dev/null and b/riot/emojione/png/1f936-1f3ff.png differ diff --git a/riot/emojione/png/1f936.png b/riot/emojione/png/1f936.png new file mode 100644 index 0000000..9cf2458 Binary files /dev/null and b/riot/emojione/png/1f936.png differ diff --git a/riot/emojione/png/1f937-1f3fb.png b/riot/emojione/png/1f937-1f3fb.png new file mode 100644 index 0000000..1c895e6 Binary files /dev/null and b/riot/emojione/png/1f937-1f3fb.png differ diff --git a/riot/emojione/png/1f937-1f3fc.png b/riot/emojione/png/1f937-1f3fc.png new file mode 100644 index 0000000..4e3ca8f Binary files /dev/null and b/riot/emojione/png/1f937-1f3fc.png differ diff --git a/riot/emojione/png/1f937-1f3fd.png b/riot/emojione/png/1f937-1f3fd.png new file mode 100644 index 0000000..d1b16a1 Binary files /dev/null and b/riot/emojione/png/1f937-1f3fd.png differ diff --git a/riot/emojione/png/1f937-1f3fe.png b/riot/emojione/png/1f937-1f3fe.png new file mode 100644 index 0000000..5fbef3f Binary files /dev/null and b/riot/emojione/png/1f937-1f3fe.png differ diff --git a/riot/emojione/png/1f937-1f3ff.png b/riot/emojione/png/1f937-1f3ff.png new file mode 100644 index 0000000..4af2e28 Binary files /dev/null and b/riot/emojione/png/1f937-1f3ff.png differ diff --git a/riot/emojione/png/1f937.png b/riot/emojione/png/1f937.png new file mode 100644 index 0000000..76e63bf Binary files /dev/null and b/riot/emojione/png/1f937.png differ diff --git a/riot/emojione/png/1f938-1f3fb.png b/riot/emojione/png/1f938-1f3fb.png new file mode 100644 index 0000000..db6d658 Binary files /dev/null and b/riot/emojione/png/1f938-1f3fb.png differ diff --git a/riot/emojione/png/1f938-1f3fc.png b/riot/emojione/png/1f938-1f3fc.png new file mode 100644 index 0000000..e00ffbc Binary files /dev/null and b/riot/emojione/png/1f938-1f3fc.png differ diff --git a/riot/emojione/png/1f938-1f3fd.png b/riot/emojione/png/1f938-1f3fd.png new file mode 100644 index 0000000..49321be Binary files /dev/null and b/riot/emojione/png/1f938-1f3fd.png differ diff --git a/riot/emojione/png/1f938-1f3fe.png b/riot/emojione/png/1f938-1f3fe.png new file mode 100644 index 0000000..d4562b5 Binary files /dev/null and b/riot/emojione/png/1f938-1f3fe.png differ diff --git a/riot/emojione/png/1f938-1f3ff.png b/riot/emojione/png/1f938-1f3ff.png new file mode 100644 index 0000000..6e09a87 Binary files /dev/null and b/riot/emojione/png/1f938-1f3ff.png differ diff --git a/riot/emojione/png/1f938.png b/riot/emojione/png/1f938.png new file mode 100644 index 0000000..cbcaa57 Binary files /dev/null and b/riot/emojione/png/1f938.png differ diff --git a/riot/emojione/png/1f939-1f3fb.png b/riot/emojione/png/1f939-1f3fb.png new file mode 100644 index 0000000..c18eda4 Binary files /dev/null and b/riot/emojione/png/1f939-1f3fb.png differ diff --git a/riot/emojione/png/1f939-1f3fc.png b/riot/emojione/png/1f939-1f3fc.png new file mode 100644 index 0000000..de3b7a5 Binary files /dev/null and b/riot/emojione/png/1f939-1f3fc.png differ diff --git a/riot/emojione/png/1f939-1f3fd.png b/riot/emojione/png/1f939-1f3fd.png new file mode 100644 index 0000000..74ab6d8 Binary files /dev/null and b/riot/emojione/png/1f939-1f3fd.png differ diff --git a/riot/emojione/png/1f939-1f3fe.png b/riot/emojione/png/1f939-1f3fe.png new file mode 100644 index 0000000..1c57823 Binary files /dev/null and b/riot/emojione/png/1f939-1f3fe.png differ diff --git a/riot/emojione/png/1f939-1f3ff.png b/riot/emojione/png/1f939-1f3ff.png new file mode 100644 index 0000000..c343d6e Binary files /dev/null and b/riot/emojione/png/1f939-1f3ff.png differ diff --git a/riot/emojione/png/1f939.png b/riot/emojione/png/1f939.png new file mode 100644 index 0000000..a37f622 Binary files /dev/null and b/riot/emojione/png/1f939.png differ diff --git a/riot/emojione/png/1f93a.png b/riot/emojione/png/1f93a.png new file mode 100644 index 0000000..5288c92 Binary files /dev/null and b/riot/emojione/png/1f93a.png differ diff --git a/riot/emojione/png/1f93c-1f3fb.png b/riot/emojione/png/1f93c-1f3fb.png new file mode 100644 index 0000000..379070f Binary files /dev/null and b/riot/emojione/png/1f93c-1f3fb.png differ diff --git a/riot/emojione/png/1f93c-1f3fc.png b/riot/emojione/png/1f93c-1f3fc.png new file mode 100644 index 0000000..6863ea9 Binary files /dev/null and b/riot/emojione/png/1f93c-1f3fc.png differ diff --git a/riot/emojione/png/1f93c-1f3fd.png b/riot/emojione/png/1f93c-1f3fd.png new file mode 100644 index 0000000..b7e6291 Binary files /dev/null and b/riot/emojione/png/1f93c-1f3fd.png differ diff --git a/riot/emojione/png/1f93c-1f3fe.png b/riot/emojione/png/1f93c-1f3fe.png new file mode 100644 index 0000000..750f958 Binary files /dev/null and b/riot/emojione/png/1f93c-1f3fe.png differ diff --git a/riot/emojione/png/1f93c-1f3ff.png b/riot/emojione/png/1f93c-1f3ff.png new file mode 100644 index 0000000..36ab9bb Binary files /dev/null and b/riot/emojione/png/1f93c-1f3ff.png differ diff --git a/riot/emojione/png/1f93c.png b/riot/emojione/png/1f93c.png new file mode 100644 index 0000000..71e67cf Binary files /dev/null and b/riot/emojione/png/1f93c.png differ diff --git a/riot/emojione/png/1f93d-1f3fb.png b/riot/emojione/png/1f93d-1f3fb.png new file mode 100644 index 0000000..bed1a90 Binary files /dev/null and b/riot/emojione/png/1f93d-1f3fb.png differ diff --git a/riot/emojione/png/1f93d-1f3fc.png b/riot/emojione/png/1f93d-1f3fc.png new file mode 100644 index 0000000..ec5a43b Binary files /dev/null and b/riot/emojione/png/1f93d-1f3fc.png differ diff --git a/riot/emojione/png/1f93d-1f3fd.png b/riot/emojione/png/1f93d-1f3fd.png new file mode 100644 index 0000000..b081a4a Binary files /dev/null and b/riot/emojione/png/1f93d-1f3fd.png differ diff --git a/riot/emojione/png/1f93d-1f3fe.png b/riot/emojione/png/1f93d-1f3fe.png new file mode 100644 index 0000000..82cfbc3 Binary files /dev/null and b/riot/emojione/png/1f93d-1f3fe.png differ diff --git a/riot/emojione/png/1f93d-1f3ff.png b/riot/emojione/png/1f93d-1f3ff.png new file mode 100644 index 0000000..bd3366e Binary files /dev/null and b/riot/emojione/png/1f93d-1f3ff.png differ diff --git a/riot/emojione/png/1f93d.png b/riot/emojione/png/1f93d.png new file mode 100644 index 0000000..cb44576 Binary files /dev/null and b/riot/emojione/png/1f93d.png differ diff --git a/riot/emojione/png/1f93e-1f3fb.png b/riot/emojione/png/1f93e-1f3fb.png new file mode 100644 index 0000000..c26cac2 Binary files /dev/null and b/riot/emojione/png/1f93e-1f3fb.png differ diff --git a/riot/emojione/png/1f93e-1f3fc.png b/riot/emojione/png/1f93e-1f3fc.png new file mode 100644 index 0000000..7baaf95 Binary files /dev/null and b/riot/emojione/png/1f93e-1f3fc.png differ diff --git a/riot/emojione/png/1f93e-1f3fd.png b/riot/emojione/png/1f93e-1f3fd.png new file mode 100644 index 0000000..0e3a37c Binary files /dev/null and b/riot/emojione/png/1f93e-1f3fd.png differ diff --git a/riot/emojione/png/1f93e-1f3fe.png b/riot/emojione/png/1f93e-1f3fe.png new file mode 100644 index 0000000..e1233f3 Binary files /dev/null and b/riot/emojione/png/1f93e-1f3fe.png differ diff --git a/riot/emojione/png/1f93e-1f3ff.png b/riot/emojione/png/1f93e-1f3ff.png new file mode 100644 index 0000000..6b1eb9b Binary files /dev/null and b/riot/emojione/png/1f93e-1f3ff.png differ diff --git a/riot/emojione/png/1f93e.png b/riot/emojione/png/1f93e.png new file mode 100644 index 0000000..1152f13 Binary files /dev/null and b/riot/emojione/png/1f93e.png differ diff --git a/riot/emojione/png/1f940.png b/riot/emojione/png/1f940.png new file mode 100644 index 0000000..62412b1 Binary files /dev/null and b/riot/emojione/png/1f940.png differ diff --git a/riot/emojione/png/1f941.png b/riot/emojione/png/1f941.png new file mode 100644 index 0000000..b038727 Binary files /dev/null and b/riot/emojione/png/1f941.png differ diff --git a/riot/emojione/png/1f942.png b/riot/emojione/png/1f942.png new file mode 100644 index 0000000..31937ae Binary files /dev/null and b/riot/emojione/png/1f942.png differ diff --git a/riot/emojione/png/1f943.png b/riot/emojione/png/1f943.png new file mode 100644 index 0000000..7bf0922 Binary files /dev/null and b/riot/emojione/png/1f943.png differ diff --git a/riot/emojione/png/1f944.png b/riot/emojione/png/1f944.png new file mode 100644 index 0000000..3c4da76 Binary files /dev/null and b/riot/emojione/png/1f944.png differ diff --git a/riot/emojione/png/1f945.png b/riot/emojione/png/1f945.png new file mode 100644 index 0000000..df3a53d Binary files /dev/null and b/riot/emojione/png/1f945.png differ diff --git a/riot/emojione/png/1f947.png b/riot/emojione/png/1f947.png new file mode 100644 index 0000000..15612b6 Binary files /dev/null and b/riot/emojione/png/1f947.png differ diff --git a/riot/emojione/png/1f948.png b/riot/emojione/png/1f948.png new file mode 100644 index 0000000..17b0112 Binary files /dev/null and b/riot/emojione/png/1f948.png differ diff --git a/riot/emojione/png/1f949.png b/riot/emojione/png/1f949.png new file mode 100644 index 0000000..636e04a Binary files /dev/null and b/riot/emojione/png/1f949.png differ diff --git a/riot/emojione/png/1f94a.png b/riot/emojione/png/1f94a.png new file mode 100644 index 0000000..9838f24 Binary files /dev/null and b/riot/emojione/png/1f94a.png differ diff --git a/riot/emojione/png/1f94b.png b/riot/emojione/png/1f94b.png new file mode 100644 index 0000000..8d61147 Binary files /dev/null and b/riot/emojione/png/1f94b.png differ diff --git a/riot/emojione/png/1f950.png b/riot/emojione/png/1f950.png new file mode 100644 index 0000000..fb33feb Binary files /dev/null and b/riot/emojione/png/1f950.png differ diff --git a/riot/emojione/png/1f951.png b/riot/emojione/png/1f951.png new file mode 100644 index 0000000..06f0d12 Binary files /dev/null and b/riot/emojione/png/1f951.png differ diff --git a/riot/emojione/png/1f952.png b/riot/emojione/png/1f952.png new file mode 100644 index 0000000..5008070 Binary files /dev/null and b/riot/emojione/png/1f952.png differ diff --git a/riot/emojione/png/1f953.png b/riot/emojione/png/1f953.png new file mode 100644 index 0000000..f38a485 Binary files /dev/null and b/riot/emojione/png/1f953.png differ diff --git a/riot/emojione/png/1f954.png b/riot/emojione/png/1f954.png new file mode 100644 index 0000000..70350ca Binary files /dev/null and b/riot/emojione/png/1f954.png differ diff --git a/riot/emojione/png/1f955.png b/riot/emojione/png/1f955.png new file mode 100644 index 0000000..c68829b Binary files /dev/null and b/riot/emojione/png/1f955.png differ diff --git a/riot/emojione/png/1f956.png b/riot/emojione/png/1f956.png new file mode 100644 index 0000000..4c2c563 Binary files /dev/null and b/riot/emojione/png/1f956.png differ diff --git a/riot/emojione/png/1f957.png b/riot/emojione/png/1f957.png new file mode 100644 index 0000000..c89f934 Binary files /dev/null and b/riot/emojione/png/1f957.png differ diff --git a/riot/emojione/png/1f958.png b/riot/emojione/png/1f958.png new file mode 100644 index 0000000..663a100 Binary files /dev/null and b/riot/emojione/png/1f958.png differ diff --git a/riot/emojione/png/1f959.png b/riot/emojione/png/1f959.png new file mode 100644 index 0000000..a2e10df Binary files /dev/null and b/riot/emojione/png/1f959.png differ diff --git a/riot/emojione/png/1f95a.png b/riot/emojione/png/1f95a.png new file mode 100644 index 0000000..c171974 Binary files /dev/null and b/riot/emojione/png/1f95a.png differ diff --git a/riot/emojione/png/1f95b.png b/riot/emojione/png/1f95b.png new file mode 100644 index 0000000..e4fcf2e Binary files /dev/null and b/riot/emojione/png/1f95b.png differ diff --git a/riot/emojione/png/1f95c.png b/riot/emojione/png/1f95c.png new file mode 100644 index 0000000..b64fada Binary files /dev/null and b/riot/emojione/png/1f95c.png differ diff --git a/riot/emojione/png/1f95d.png b/riot/emojione/png/1f95d.png new file mode 100644 index 0000000..dfbd825 Binary files /dev/null and b/riot/emojione/png/1f95d.png differ diff --git a/riot/emojione/png/1f95e.png b/riot/emojione/png/1f95e.png new file mode 100644 index 0000000..6223d1a Binary files /dev/null and b/riot/emojione/png/1f95e.png differ diff --git a/riot/emojione/png/1f980.png b/riot/emojione/png/1f980.png new file mode 100644 index 0000000..19f3047 Binary files /dev/null and b/riot/emojione/png/1f980.png differ diff --git a/riot/emojione/png/1f981.png b/riot/emojione/png/1f981.png new file mode 100644 index 0000000..5062ab4 Binary files /dev/null and b/riot/emojione/png/1f981.png differ diff --git a/riot/emojione/png/1f982.png b/riot/emojione/png/1f982.png new file mode 100644 index 0000000..449a6b2 Binary files /dev/null and b/riot/emojione/png/1f982.png differ diff --git a/riot/emojione/png/1f983.png b/riot/emojione/png/1f983.png new file mode 100644 index 0000000..344af94 Binary files /dev/null and b/riot/emojione/png/1f983.png differ diff --git a/riot/emojione/png/1f984.png b/riot/emojione/png/1f984.png new file mode 100644 index 0000000..05a9796 Binary files /dev/null and b/riot/emojione/png/1f984.png differ diff --git a/riot/emojione/png/1f985.png b/riot/emojione/png/1f985.png new file mode 100644 index 0000000..4f277de Binary files /dev/null and b/riot/emojione/png/1f985.png differ diff --git a/riot/emojione/png/1f986.png b/riot/emojione/png/1f986.png new file mode 100644 index 0000000..74330b7 Binary files /dev/null and b/riot/emojione/png/1f986.png differ diff --git a/riot/emojione/png/1f987.png b/riot/emojione/png/1f987.png new file mode 100644 index 0000000..3152c04 Binary files /dev/null and b/riot/emojione/png/1f987.png differ diff --git a/riot/emojione/png/1f988.png b/riot/emojione/png/1f988.png new file mode 100644 index 0000000..c75076d Binary files /dev/null and b/riot/emojione/png/1f988.png differ diff --git a/riot/emojione/png/1f989.png b/riot/emojione/png/1f989.png new file mode 100644 index 0000000..fa68154 Binary files /dev/null and b/riot/emojione/png/1f989.png differ diff --git a/riot/emojione/png/1f98a.png b/riot/emojione/png/1f98a.png new file mode 100644 index 0000000..1ab339b Binary files /dev/null and b/riot/emojione/png/1f98a.png differ diff --git a/riot/emojione/png/1f98b.png b/riot/emojione/png/1f98b.png new file mode 100644 index 0000000..5631fe9 Binary files /dev/null and b/riot/emojione/png/1f98b.png differ diff --git a/riot/emojione/png/1f98c.png b/riot/emojione/png/1f98c.png new file mode 100644 index 0000000..d869819 Binary files /dev/null and b/riot/emojione/png/1f98c.png differ diff --git a/riot/emojione/png/1f98d.png b/riot/emojione/png/1f98d.png new file mode 100644 index 0000000..acc51e1 Binary files /dev/null and b/riot/emojione/png/1f98d.png differ diff --git a/riot/emojione/png/1f98e.png b/riot/emojione/png/1f98e.png new file mode 100644 index 0000000..8363876 Binary files /dev/null and b/riot/emojione/png/1f98e.png differ diff --git a/riot/emojione/png/1f98f.png b/riot/emojione/png/1f98f.png new file mode 100644 index 0000000..12f4e0d Binary files /dev/null and b/riot/emojione/png/1f98f.png differ diff --git a/riot/emojione/png/1f990.png b/riot/emojione/png/1f990.png new file mode 100644 index 0000000..49eff28 Binary files /dev/null and b/riot/emojione/png/1f990.png differ diff --git a/riot/emojione/png/1f991.png b/riot/emojione/png/1f991.png new file mode 100644 index 0000000..d2af223 Binary files /dev/null and b/riot/emojione/png/1f991.png differ diff --git a/riot/emojione/png/1f9c0.png b/riot/emojione/png/1f9c0.png new file mode 100644 index 0000000..00e9976 Binary files /dev/null and b/riot/emojione/png/1f9c0.png differ diff --git a/riot/emojione/png/203c.png b/riot/emojione/png/203c.png new file mode 100644 index 0000000..58a9c52 Binary files /dev/null and b/riot/emojione/png/203c.png differ diff --git a/riot/emojione/png/2049.png b/riot/emojione/png/2049.png new file mode 100644 index 0000000..509813e Binary files /dev/null and b/riot/emojione/png/2049.png differ diff --git a/riot/emojione/png/2122.png b/riot/emojione/png/2122.png new file mode 100644 index 0000000..7a0c44a Binary files /dev/null and b/riot/emojione/png/2122.png differ diff --git a/riot/emojione/png/2139.png b/riot/emojione/png/2139.png new file mode 100644 index 0000000..871f2db Binary files /dev/null and b/riot/emojione/png/2139.png differ diff --git a/riot/emojione/png/2194.png b/riot/emojione/png/2194.png new file mode 100644 index 0000000..7937f24 Binary files /dev/null and b/riot/emojione/png/2194.png differ diff --git a/riot/emojione/png/2195.png b/riot/emojione/png/2195.png new file mode 100644 index 0000000..dfa32b9 Binary files /dev/null and b/riot/emojione/png/2195.png differ diff --git a/riot/emojione/png/2196.png b/riot/emojione/png/2196.png new file mode 100644 index 0000000..f38718f Binary files /dev/null and b/riot/emojione/png/2196.png differ diff --git a/riot/emojione/png/2197.png b/riot/emojione/png/2197.png new file mode 100644 index 0000000..c43e12d Binary files /dev/null and b/riot/emojione/png/2197.png differ diff --git a/riot/emojione/png/2198.png b/riot/emojione/png/2198.png new file mode 100644 index 0000000..7e807da Binary files /dev/null and b/riot/emojione/png/2198.png differ diff --git a/riot/emojione/png/2199.png b/riot/emojione/png/2199.png new file mode 100644 index 0000000..88b3771 Binary files /dev/null and b/riot/emojione/png/2199.png differ diff --git a/riot/emojione/png/21a9.png b/riot/emojione/png/21a9.png new file mode 100644 index 0000000..ba45c2a Binary files /dev/null and b/riot/emojione/png/21a9.png differ diff --git a/riot/emojione/png/21aa.png b/riot/emojione/png/21aa.png new file mode 100644 index 0000000..e7258ad Binary files /dev/null and b/riot/emojione/png/21aa.png differ diff --git a/riot/emojione/png/231a.png b/riot/emojione/png/231a.png new file mode 100644 index 0000000..64819bc Binary files /dev/null and b/riot/emojione/png/231a.png differ diff --git a/riot/emojione/png/231b.png b/riot/emojione/png/231b.png new file mode 100644 index 0000000..a5db2d1 Binary files /dev/null and b/riot/emojione/png/231b.png differ diff --git a/riot/emojione/png/2328.png b/riot/emojione/png/2328.png new file mode 100644 index 0000000..75027cb Binary files /dev/null and b/riot/emojione/png/2328.png differ diff --git a/riot/emojione/png/23cf.png b/riot/emojione/png/23cf.png new file mode 100644 index 0000000..ec5cfc4 Binary files /dev/null and b/riot/emojione/png/23cf.png differ diff --git a/riot/emojione/png/23e9.png b/riot/emojione/png/23e9.png new file mode 100644 index 0000000..c406fed Binary files /dev/null and b/riot/emojione/png/23e9.png differ diff --git a/riot/emojione/png/23ea.png b/riot/emojione/png/23ea.png new file mode 100644 index 0000000..e22e2bd Binary files /dev/null and b/riot/emojione/png/23ea.png differ diff --git a/riot/emojione/png/23eb.png b/riot/emojione/png/23eb.png new file mode 100644 index 0000000..13543d5 Binary files /dev/null and b/riot/emojione/png/23eb.png differ diff --git a/riot/emojione/png/23ec.png b/riot/emojione/png/23ec.png new file mode 100644 index 0000000..90193bf Binary files /dev/null and b/riot/emojione/png/23ec.png differ diff --git a/riot/emojione/png/23ed.png b/riot/emojione/png/23ed.png new file mode 100644 index 0000000..f8880d3 Binary files /dev/null and b/riot/emojione/png/23ed.png differ diff --git a/riot/emojione/png/23ee.png b/riot/emojione/png/23ee.png new file mode 100644 index 0000000..1ffd056 Binary files /dev/null and b/riot/emojione/png/23ee.png differ diff --git a/riot/emojione/png/23ef.png b/riot/emojione/png/23ef.png new file mode 100644 index 0000000..a9f8571 Binary files /dev/null and b/riot/emojione/png/23ef.png differ diff --git a/riot/emojione/png/23f0.png b/riot/emojione/png/23f0.png new file mode 100644 index 0000000..cdbc2fb Binary files /dev/null and b/riot/emojione/png/23f0.png differ diff --git a/riot/emojione/png/23f1.png b/riot/emojione/png/23f1.png new file mode 100644 index 0000000..8fae1c9 Binary files /dev/null and b/riot/emojione/png/23f1.png differ diff --git a/riot/emojione/png/23f2.png b/riot/emojione/png/23f2.png new file mode 100644 index 0000000..8a3be57 Binary files /dev/null and b/riot/emojione/png/23f2.png differ diff --git a/riot/emojione/png/23f3.png b/riot/emojione/png/23f3.png new file mode 100644 index 0000000..b93b15e Binary files /dev/null and b/riot/emojione/png/23f3.png differ diff --git a/riot/emojione/png/23f8.png b/riot/emojione/png/23f8.png new file mode 100644 index 0000000..4f07e7e Binary files /dev/null and b/riot/emojione/png/23f8.png differ diff --git a/riot/emojione/png/23f9.png b/riot/emojione/png/23f9.png new file mode 100644 index 0000000..cfa9998 Binary files /dev/null and b/riot/emojione/png/23f9.png differ diff --git a/riot/emojione/png/23fa.png b/riot/emojione/png/23fa.png new file mode 100644 index 0000000..ada5283 Binary files /dev/null and b/riot/emojione/png/23fa.png differ diff --git a/riot/emojione/png/24c2.png b/riot/emojione/png/24c2.png new file mode 100644 index 0000000..8a3506f Binary files /dev/null and b/riot/emojione/png/24c2.png differ diff --git a/riot/emojione/png/25aa.png b/riot/emojione/png/25aa.png new file mode 100644 index 0000000..48595d3 Binary files /dev/null and b/riot/emojione/png/25aa.png differ diff --git a/riot/emojione/png/25ab.png b/riot/emojione/png/25ab.png new file mode 100644 index 0000000..d7ebdb0 Binary files /dev/null and b/riot/emojione/png/25ab.png differ diff --git a/riot/emojione/png/25b6.png b/riot/emojione/png/25b6.png new file mode 100644 index 0000000..4e2b682 Binary files /dev/null and b/riot/emojione/png/25b6.png differ diff --git a/riot/emojione/png/25c0.png b/riot/emojione/png/25c0.png new file mode 100644 index 0000000..ee38e3b Binary files /dev/null and b/riot/emojione/png/25c0.png differ diff --git a/riot/emojione/png/25fb.png b/riot/emojione/png/25fb.png new file mode 100644 index 0000000..8daacf5 Binary files /dev/null and b/riot/emojione/png/25fb.png differ diff --git a/riot/emojione/png/25fc.png b/riot/emojione/png/25fc.png new file mode 100644 index 0000000..05a30a6 Binary files /dev/null and b/riot/emojione/png/25fc.png differ diff --git a/riot/emojione/png/25fd.png b/riot/emojione/png/25fd.png new file mode 100644 index 0000000..ae87412 Binary files /dev/null and b/riot/emojione/png/25fd.png differ diff --git a/riot/emojione/png/25fe.png b/riot/emojione/png/25fe.png new file mode 100644 index 0000000..39765bb Binary files /dev/null and b/riot/emojione/png/25fe.png differ diff --git a/riot/emojione/png/2600.png b/riot/emojione/png/2600.png new file mode 100644 index 0000000..fd521ae Binary files /dev/null and b/riot/emojione/png/2600.png differ diff --git a/riot/emojione/png/2601.png b/riot/emojione/png/2601.png new file mode 100644 index 0000000..5b4f57f Binary files /dev/null and b/riot/emojione/png/2601.png differ diff --git a/riot/emojione/png/2602.png b/riot/emojione/png/2602.png new file mode 100644 index 0000000..97fe859 Binary files /dev/null and b/riot/emojione/png/2602.png differ diff --git a/riot/emojione/png/2603.png b/riot/emojione/png/2603.png new file mode 100644 index 0000000..896f285 Binary files /dev/null and b/riot/emojione/png/2603.png differ diff --git a/riot/emojione/png/2604.png b/riot/emojione/png/2604.png new file mode 100644 index 0000000..a99751f Binary files /dev/null and b/riot/emojione/png/2604.png differ diff --git a/riot/emojione/png/260e.png b/riot/emojione/png/260e.png new file mode 100644 index 0000000..a1e69f5 Binary files /dev/null and b/riot/emojione/png/260e.png differ diff --git a/riot/emojione/png/2611.png b/riot/emojione/png/2611.png new file mode 100644 index 0000000..284d957 Binary files /dev/null and b/riot/emojione/png/2611.png differ diff --git a/riot/emojione/png/2614.png b/riot/emojione/png/2614.png new file mode 100644 index 0000000..5b35b7f Binary files /dev/null and b/riot/emojione/png/2614.png differ diff --git a/riot/emojione/png/2615.png b/riot/emojione/png/2615.png new file mode 100644 index 0000000..5530614 Binary files /dev/null and b/riot/emojione/png/2615.png differ diff --git a/riot/emojione/png/2618.png b/riot/emojione/png/2618.png new file mode 100644 index 0000000..f202aec Binary files /dev/null and b/riot/emojione/png/2618.png differ diff --git a/riot/emojione/png/261d-1f3fb.png b/riot/emojione/png/261d-1f3fb.png new file mode 100644 index 0000000..6a9db21 Binary files /dev/null and b/riot/emojione/png/261d-1f3fb.png differ diff --git a/riot/emojione/png/261d-1f3fc.png b/riot/emojione/png/261d-1f3fc.png new file mode 100644 index 0000000..15aa9ea Binary files /dev/null and b/riot/emojione/png/261d-1f3fc.png differ diff --git a/riot/emojione/png/261d-1f3fd.png b/riot/emojione/png/261d-1f3fd.png new file mode 100644 index 0000000..652b73a Binary files /dev/null and b/riot/emojione/png/261d-1f3fd.png differ diff --git a/riot/emojione/png/261d-1f3fe.png b/riot/emojione/png/261d-1f3fe.png new file mode 100644 index 0000000..692bad9 Binary files /dev/null and b/riot/emojione/png/261d-1f3fe.png differ diff --git a/riot/emojione/png/261d-1f3ff.png b/riot/emojione/png/261d-1f3ff.png new file mode 100644 index 0000000..1e1b10f Binary files /dev/null and b/riot/emojione/png/261d-1f3ff.png differ diff --git a/riot/emojione/png/261d.png b/riot/emojione/png/261d.png new file mode 100644 index 0000000..f4978ff Binary files /dev/null and b/riot/emojione/png/261d.png differ diff --git a/riot/emojione/png/2620.png b/riot/emojione/png/2620.png new file mode 100644 index 0000000..b459df9 Binary files /dev/null and b/riot/emojione/png/2620.png differ diff --git a/riot/emojione/png/2622.png b/riot/emojione/png/2622.png new file mode 100644 index 0000000..3b46199 Binary files /dev/null and b/riot/emojione/png/2622.png differ diff --git a/riot/emojione/png/2623.png b/riot/emojione/png/2623.png new file mode 100644 index 0000000..007b4fc Binary files /dev/null and b/riot/emojione/png/2623.png differ diff --git a/riot/emojione/png/2626.png b/riot/emojione/png/2626.png new file mode 100644 index 0000000..0530e33 Binary files /dev/null and b/riot/emojione/png/2626.png differ diff --git a/riot/emojione/png/262a.png b/riot/emojione/png/262a.png new file mode 100644 index 0000000..e182636 Binary files /dev/null and b/riot/emojione/png/262a.png differ diff --git a/riot/emojione/png/262e.png b/riot/emojione/png/262e.png new file mode 100644 index 0000000..86033fa Binary files /dev/null and b/riot/emojione/png/262e.png differ diff --git a/riot/emojione/png/262f.png b/riot/emojione/png/262f.png new file mode 100644 index 0000000..f2900f6 Binary files /dev/null and b/riot/emojione/png/262f.png differ diff --git a/riot/emojione/png/2638.png b/riot/emojione/png/2638.png new file mode 100644 index 0000000..3666db0 Binary files /dev/null and b/riot/emojione/png/2638.png differ diff --git a/riot/emojione/png/2639.png b/riot/emojione/png/2639.png new file mode 100644 index 0000000..6ae71f2 Binary files /dev/null and b/riot/emojione/png/2639.png differ diff --git a/riot/emojione/png/263a.png b/riot/emojione/png/263a.png new file mode 100644 index 0000000..e9e53c0 Binary files /dev/null and b/riot/emojione/png/263a.png differ diff --git a/riot/emojione/png/2648.png b/riot/emojione/png/2648.png new file mode 100644 index 0000000..21a189d Binary files /dev/null and b/riot/emojione/png/2648.png differ diff --git a/riot/emojione/png/2649.png b/riot/emojione/png/2649.png new file mode 100644 index 0000000..b2a370d Binary files /dev/null and b/riot/emojione/png/2649.png differ diff --git a/riot/emojione/png/264a.png b/riot/emojione/png/264a.png new file mode 100644 index 0000000..1a09698 Binary files /dev/null and b/riot/emojione/png/264a.png differ diff --git a/riot/emojione/png/264b.png b/riot/emojione/png/264b.png new file mode 100644 index 0000000..a64af07 Binary files /dev/null and b/riot/emojione/png/264b.png differ diff --git a/riot/emojione/png/264c.png b/riot/emojione/png/264c.png new file mode 100644 index 0000000..30158d3 Binary files /dev/null and b/riot/emojione/png/264c.png differ diff --git a/riot/emojione/png/264d.png b/riot/emojione/png/264d.png new file mode 100644 index 0000000..a6b56c2 Binary files /dev/null and b/riot/emojione/png/264d.png differ diff --git a/riot/emojione/png/264e.png b/riot/emojione/png/264e.png new file mode 100644 index 0000000..8fd133a Binary files /dev/null and b/riot/emojione/png/264e.png differ diff --git a/riot/emojione/png/264f.png b/riot/emojione/png/264f.png new file mode 100644 index 0000000..c31a992 Binary files /dev/null and b/riot/emojione/png/264f.png differ diff --git a/riot/emojione/png/2650.png b/riot/emojione/png/2650.png new file mode 100644 index 0000000..f8d94ff Binary files /dev/null and b/riot/emojione/png/2650.png differ diff --git a/riot/emojione/png/2651.png b/riot/emojione/png/2651.png new file mode 100644 index 0000000..6293d31 Binary files /dev/null and b/riot/emojione/png/2651.png differ diff --git a/riot/emojione/png/2652.png b/riot/emojione/png/2652.png new file mode 100644 index 0000000..641a4f6 Binary files /dev/null and b/riot/emojione/png/2652.png differ diff --git a/riot/emojione/png/2653.png b/riot/emojione/png/2653.png new file mode 100644 index 0000000..7f6f646 Binary files /dev/null and b/riot/emojione/png/2653.png differ diff --git a/riot/emojione/png/2660.png b/riot/emojione/png/2660.png new file mode 100644 index 0000000..f822f18 Binary files /dev/null and b/riot/emojione/png/2660.png differ diff --git a/riot/emojione/png/2663.png b/riot/emojione/png/2663.png new file mode 100644 index 0000000..4f2abf7 Binary files /dev/null and b/riot/emojione/png/2663.png differ diff --git a/riot/emojione/png/2665.png b/riot/emojione/png/2665.png new file mode 100644 index 0000000..393c3ed Binary files /dev/null and b/riot/emojione/png/2665.png differ diff --git a/riot/emojione/png/2666.png b/riot/emojione/png/2666.png new file mode 100644 index 0000000..1f25f51 Binary files /dev/null and b/riot/emojione/png/2666.png differ diff --git a/riot/emojione/png/2668.png b/riot/emojione/png/2668.png new file mode 100644 index 0000000..3d9df2d Binary files /dev/null and b/riot/emojione/png/2668.png differ diff --git a/riot/emojione/png/267b.png b/riot/emojione/png/267b.png new file mode 100644 index 0000000..9221f09 Binary files /dev/null and b/riot/emojione/png/267b.png differ diff --git a/riot/emojione/png/267f.png b/riot/emojione/png/267f.png new file mode 100644 index 0000000..4e5b269 Binary files /dev/null and b/riot/emojione/png/267f.png differ diff --git a/riot/emojione/png/2692.png b/riot/emojione/png/2692.png new file mode 100644 index 0000000..3bee30e Binary files /dev/null and b/riot/emojione/png/2692.png differ diff --git a/riot/emojione/png/2693.png b/riot/emojione/png/2693.png new file mode 100644 index 0000000..b036f70 Binary files /dev/null and b/riot/emojione/png/2693.png differ diff --git a/riot/emojione/png/2694.png b/riot/emojione/png/2694.png new file mode 100644 index 0000000..907e960 Binary files /dev/null and b/riot/emojione/png/2694.png differ diff --git a/riot/emojione/png/2696.png b/riot/emojione/png/2696.png new file mode 100644 index 0000000..0757eda Binary files /dev/null and b/riot/emojione/png/2696.png differ diff --git a/riot/emojione/png/2697.png b/riot/emojione/png/2697.png new file mode 100644 index 0000000..307a732 Binary files /dev/null and b/riot/emojione/png/2697.png differ diff --git a/riot/emojione/png/2699.png b/riot/emojione/png/2699.png new file mode 100644 index 0000000..2a1cc2c Binary files /dev/null and b/riot/emojione/png/2699.png differ diff --git a/riot/emojione/png/269b.png b/riot/emojione/png/269b.png new file mode 100644 index 0000000..5f4567a Binary files /dev/null and b/riot/emojione/png/269b.png differ diff --git a/riot/emojione/png/269c.png b/riot/emojione/png/269c.png new file mode 100644 index 0000000..c9250d2 Binary files /dev/null and b/riot/emojione/png/269c.png differ diff --git a/riot/emojione/png/26a0.png b/riot/emojione/png/26a0.png new file mode 100644 index 0000000..35691c2 Binary files /dev/null and b/riot/emojione/png/26a0.png differ diff --git a/riot/emojione/png/26a1.png b/riot/emojione/png/26a1.png new file mode 100644 index 0000000..47e68e4 Binary files /dev/null and b/riot/emojione/png/26a1.png differ diff --git a/riot/emojione/png/26aa.png b/riot/emojione/png/26aa.png new file mode 100644 index 0000000..c19e156 Binary files /dev/null and b/riot/emojione/png/26aa.png differ diff --git a/riot/emojione/png/26ab.png b/riot/emojione/png/26ab.png new file mode 100644 index 0000000..b62b871 Binary files /dev/null and b/riot/emojione/png/26ab.png differ diff --git a/riot/emojione/png/26b0.png b/riot/emojione/png/26b0.png new file mode 100644 index 0000000..fb2932a Binary files /dev/null and b/riot/emojione/png/26b0.png differ diff --git a/riot/emojione/png/26b1.png b/riot/emojione/png/26b1.png new file mode 100644 index 0000000..6b5b350 Binary files /dev/null and b/riot/emojione/png/26b1.png differ diff --git a/riot/emojione/png/26bd.png b/riot/emojione/png/26bd.png new file mode 100644 index 0000000..28cfa21 Binary files /dev/null and b/riot/emojione/png/26bd.png differ diff --git a/riot/emojione/png/26be.png b/riot/emojione/png/26be.png new file mode 100644 index 0000000..f8463f1 Binary files /dev/null and b/riot/emojione/png/26be.png differ diff --git a/riot/emojione/png/26c4.png b/riot/emojione/png/26c4.png new file mode 100644 index 0000000..20c177c Binary files /dev/null and b/riot/emojione/png/26c4.png differ diff --git a/riot/emojione/png/26c5.png b/riot/emojione/png/26c5.png new file mode 100644 index 0000000..a55e59c Binary files /dev/null and b/riot/emojione/png/26c5.png differ diff --git a/riot/emojione/png/26c8.png b/riot/emojione/png/26c8.png new file mode 100644 index 0000000..31a26a1 Binary files /dev/null and b/riot/emojione/png/26c8.png differ diff --git a/riot/emojione/png/26ce.png b/riot/emojione/png/26ce.png new file mode 100644 index 0000000..0a780a7 Binary files /dev/null and b/riot/emojione/png/26ce.png differ diff --git a/riot/emojione/png/26cf.png b/riot/emojione/png/26cf.png new file mode 100644 index 0000000..6370fe6 Binary files /dev/null and b/riot/emojione/png/26cf.png differ diff --git a/riot/emojione/png/26d1.png b/riot/emojione/png/26d1.png new file mode 100644 index 0000000..7140a67 Binary files /dev/null and b/riot/emojione/png/26d1.png differ diff --git a/riot/emojione/png/26d3.png b/riot/emojione/png/26d3.png new file mode 100644 index 0000000..57f4613 Binary files /dev/null and b/riot/emojione/png/26d3.png differ diff --git a/riot/emojione/png/26d4.png b/riot/emojione/png/26d4.png new file mode 100644 index 0000000..476800f Binary files /dev/null and b/riot/emojione/png/26d4.png differ diff --git a/riot/emojione/png/26e9.png b/riot/emojione/png/26e9.png new file mode 100644 index 0000000..5a34497 Binary files /dev/null and b/riot/emojione/png/26e9.png differ diff --git a/riot/emojione/png/26ea.png b/riot/emojione/png/26ea.png new file mode 100644 index 0000000..8242fd2 Binary files /dev/null and b/riot/emojione/png/26ea.png differ diff --git a/riot/emojione/png/26f0.png b/riot/emojione/png/26f0.png new file mode 100644 index 0000000..6722ebd Binary files /dev/null and b/riot/emojione/png/26f0.png differ diff --git a/riot/emojione/png/26f1.png b/riot/emojione/png/26f1.png new file mode 100644 index 0000000..220a74f Binary files /dev/null and b/riot/emojione/png/26f1.png differ diff --git a/riot/emojione/png/26f2.png b/riot/emojione/png/26f2.png new file mode 100644 index 0000000..293f5d9 Binary files /dev/null and b/riot/emojione/png/26f2.png differ diff --git a/riot/emojione/png/26f3.png b/riot/emojione/png/26f3.png new file mode 100644 index 0000000..f65a21d Binary files /dev/null and b/riot/emojione/png/26f3.png differ diff --git a/riot/emojione/png/26f4.png b/riot/emojione/png/26f4.png new file mode 100644 index 0000000..41816b3 Binary files /dev/null and b/riot/emojione/png/26f4.png differ diff --git a/riot/emojione/png/26f5.png b/riot/emojione/png/26f5.png new file mode 100644 index 0000000..772ef11 Binary files /dev/null and b/riot/emojione/png/26f5.png differ diff --git a/riot/emojione/png/26f7.png b/riot/emojione/png/26f7.png new file mode 100644 index 0000000..2eb3bdc Binary files /dev/null and b/riot/emojione/png/26f7.png differ diff --git a/riot/emojione/png/26f8.png b/riot/emojione/png/26f8.png new file mode 100644 index 0000000..8c449b0 Binary files /dev/null and b/riot/emojione/png/26f8.png differ diff --git a/riot/emojione/png/26f9-1f3fb.png b/riot/emojione/png/26f9-1f3fb.png new file mode 100644 index 0000000..cd12c7a Binary files /dev/null and b/riot/emojione/png/26f9-1f3fb.png differ diff --git a/riot/emojione/png/26f9-1f3fc.png b/riot/emojione/png/26f9-1f3fc.png new file mode 100644 index 0000000..f892fd5 Binary files /dev/null and b/riot/emojione/png/26f9-1f3fc.png differ diff --git a/riot/emojione/png/26f9-1f3fd.png b/riot/emojione/png/26f9-1f3fd.png new file mode 100644 index 0000000..e109997 Binary files /dev/null and b/riot/emojione/png/26f9-1f3fd.png differ diff --git a/riot/emojione/png/26f9-1f3fe.png b/riot/emojione/png/26f9-1f3fe.png new file mode 100644 index 0000000..3b90b94 Binary files /dev/null and b/riot/emojione/png/26f9-1f3fe.png differ diff --git a/riot/emojione/png/26f9-1f3ff.png b/riot/emojione/png/26f9-1f3ff.png new file mode 100644 index 0000000..bafed78 Binary files /dev/null and b/riot/emojione/png/26f9-1f3ff.png differ diff --git a/riot/emojione/png/26f9.png b/riot/emojione/png/26f9.png new file mode 100644 index 0000000..8ce90c5 Binary files /dev/null and b/riot/emojione/png/26f9.png differ diff --git a/riot/emojione/png/26fa.png b/riot/emojione/png/26fa.png new file mode 100644 index 0000000..3fddcfc Binary files /dev/null and b/riot/emojione/png/26fa.png differ diff --git a/riot/emojione/png/26fd.png b/riot/emojione/png/26fd.png new file mode 100644 index 0000000..05b1879 Binary files /dev/null and b/riot/emojione/png/26fd.png differ diff --git a/riot/emojione/png/2702.png b/riot/emojione/png/2702.png new file mode 100644 index 0000000..270571c Binary files /dev/null and b/riot/emojione/png/2702.png differ diff --git a/riot/emojione/png/2705.png b/riot/emojione/png/2705.png new file mode 100644 index 0000000..e55f087 Binary files /dev/null and b/riot/emojione/png/2705.png differ diff --git a/riot/emojione/png/2708.png b/riot/emojione/png/2708.png new file mode 100644 index 0000000..268d2ac Binary files /dev/null and b/riot/emojione/png/2708.png differ diff --git a/riot/emojione/png/2709.png b/riot/emojione/png/2709.png new file mode 100644 index 0000000..ec77ac3 Binary files /dev/null and b/riot/emojione/png/2709.png differ diff --git a/riot/emojione/png/270a-1f3fb.png b/riot/emojione/png/270a-1f3fb.png new file mode 100644 index 0000000..02809e2 Binary files /dev/null and b/riot/emojione/png/270a-1f3fb.png differ diff --git a/riot/emojione/png/270a-1f3fc.png b/riot/emojione/png/270a-1f3fc.png new file mode 100644 index 0000000..5de3481 Binary files /dev/null and b/riot/emojione/png/270a-1f3fc.png differ diff --git a/riot/emojione/png/270a-1f3fd.png b/riot/emojione/png/270a-1f3fd.png new file mode 100644 index 0000000..0d52401 Binary files /dev/null and b/riot/emojione/png/270a-1f3fd.png differ diff --git a/riot/emojione/png/270a-1f3fe.png b/riot/emojione/png/270a-1f3fe.png new file mode 100644 index 0000000..a95c0dd Binary files /dev/null and b/riot/emojione/png/270a-1f3fe.png differ diff --git a/riot/emojione/png/270a-1f3ff.png b/riot/emojione/png/270a-1f3ff.png new file mode 100644 index 0000000..a2f092f Binary files /dev/null and b/riot/emojione/png/270a-1f3ff.png differ diff --git a/riot/emojione/png/270a.png b/riot/emojione/png/270a.png new file mode 100644 index 0000000..de33592 Binary files /dev/null and b/riot/emojione/png/270a.png differ diff --git a/riot/emojione/png/270b-1f3fb.png b/riot/emojione/png/270b-1f3fb.png new file mode 100644 index 0000000..3b75290 Binary files /dev/null and b/riot/emojione/png/270b-1f3fb.png differ diff --git a/riot/emojione/png/270b-1f3fc.png b/riot/emojione/png/270b-1f3fc.png new file mode 100644 index 0000000..44e2a51 Binary files /dev/null and b/riot/emojione/png/270b-1f3fc.png differ diff --git a/riot/emojione/png/270b-1f3fd.png b/riot/emojione/png/270b-1f3fd.png new file mode 100644 index 0000000..5bb62a7 Binary files /dev/null and b/riot/emojione/png/270b-1f3fd.png differ diff --git a/riot/emojione/png/270b-1f3fe.png b/riot/emojione/png/270b-1f3fe.png new file mode 100644 index 0000000..c7f8c9e Binary files /dev/null and b/riot/emojione/png/270b-1f3fe.png differ diff --git a/riot/emojione/png/270b-1f3ff.png b/riot/emojione/png/270b-1f3ff.png new file mode 100644 index 0000000..c601b58 Binary files /dev/null and b/riot/emojione/png/270b-1f3ff.png differ diff --git a/riot/emojione/png/270b.png b/riot/emojione/png/270b.png new file mode 100644 index 0000000..6b29543 Binary files /dev/null and b/riot/emojione/png/270b.png differ diff --git a/riot/emojione/png/270c-1f3fb.png b/riot/emojione/png/270c-1f3fb.png new file mode 100644 index 0000000..6ac54a7 Binary files /dev/null and b/riot/emojione/png/270c-1f3fb.png differ diff --git a/riot/emojione/png/270c-1f3fc.png b/riot/emojione/png/270c-1f3fc.png new file mode 100644 index 0000000..6dd9669 Binary files /dev/null and b/riot/emojione/png/270c-1f3fc.png differ diff --git a/riot/emojione/png/270c-1f3fd.png b/riot/emojione/png/270c-1f3fd.png new file mode 100644 index 0000000..a615e53 Binary files /dev/null and b/riot/emojione/png/270c-1f3fd.png differ diff --git a/riot/emojione/png/270c-1f3fe.png b/riot/emojione/png/270c-1f3fe.png new file mode 100644 index 0000000..33a34bd Binary files /dev/null and b/riot/emojione/png/270c-1f3fe.png differ diff --git a/riot/emojione/png/270c-1f3ff.png b/riot/emojione/png/270c-1f3ff.png new file mode 100644 index 0000000..45ad14b Binary files /dev/null and b/riot/emojione/png/270c-1f3ff.png differ diff --git a/riot/emojione/png/270c.png b/riot/emojione/png/270c.png new file mode 100644 index 0000000..70c5516 Binary files /dev/null and b/riot/emojione/png/270c.png differ diff --git a/riot/emojione/png/270d-1f3fb.png b/riot/emojione/png/270d-1f3fb.png new file mode 100644 index 0000000..7923d8e Binary files /dev/null and b/riot/emojione/png/270d-1f3fb.png differ diff --git a/riot/emojione/png/270d-1f3fc.png b/riot/emojione/png/270d-1f3fc.png new file mode 100644 index 0000000..bcb304e Binary files /dev/null and b/riot/emojione/png/270d-1f3fc.png differ diff --git a/riot/emojione/png/270d-1f3fd.png b/riot/emojione/png/270d-1f3fd.png new file mode 100644 index 0000000..fd885fd Binary files /dev/null and b/riot/emojione/png/270d-1f3fd.png differ diff --git a/riot/emojione/png/270d-1f3fe.png b/riot/emojione/png/270d-1f3fe.png new file mode 100644 index 0000000..d065b8c Binary files /dev/null and b/riot/emojione/png/270d-1f3fe.png differ diff --git a/riot/emojione/png/270d-1f3ff.png b/riot/emojione/png/270d-1f3ff.png new file mode 100644 index 0000000..a44b3dd Binary files /dev/null and b/riot/emojione/png/270d-1f3ff.png differ diff --git a/riot/emojione/png/270d.png b/riot/emojione/png/270d.png new file mode 100644 index 0000000..85639f8 Binary files /dev/null and b/riot/emojione/png/270d.png differ diff --git a/riot/emojione/png/270f.png b/riot/emojione/png/270f.png new file mode 100644 index 0000000..3833d59 Binary files /dev/null and b/riot/emojione/png/270f.png differ diff --git a/riot/emojione/png/2712.png b/riot/emojione/png/2712.png new file mode 100644 index 0000000..872d0ae Binary files /dev/null and b/riot/emojione/png/2712.png differ diff --git a/riot/emojione/png/2714.png b/riot/emojione/png/2714.png new file mode 100644 index 0000000..03bd695 Binary files /dev/null and b/riot/emojione/png/2714.png differ diff --git a/riot/emojione/png/2716.png b/riot/emojione/png/2716.png new file mode 100644 index 0000000..e47cc1b Binary files /dev/null and b/riot/emojione/png/2716.png differ diff --git a/riot/emojione/png/271d.png b/riot/emojione/png/271d.png new file mode 100644 index 0000000..42b10e8 Binary files /dev/null and b/riot/emojione/png/271d.png differ diff --git a/riot/emojione/png/2721.png b/riot/emojione/png/2721.png new file mode 100644 index 0000000..fc59d0d Binary files /dev/null and b/riot/emojione/png/2721.png differ diff --git a/riot/emojione/png/2728.png b/riot/emojione/png/2728.png new file mode 100644 index 0000000..169bc10 Binary files /dev/null and b/riot/emojione/png/2728.png differ diff --git a/riot/emojione/png/2733.png b/riot/emojione/png/2733.png new file mode 100644 index 0000000..3307ffa Binary files /dev/null and b/riot/emojione/png/2733.png differ diff --git a/riot/emojione/png/2734.png b/riot/emojione/png/2734.png new file mode 100644 index 0000000..820179b Binary files /dev/null and b/riot/emojione/png/2734.png differ diff --git a/riot/emojione/png/2744.png b/riot/emojione/png/2744.png new file mode 100644 index 0000000..db319a7 Binary files /dev/null and b/riot/emojione/png/2744.png differ diff --git a/riot/emojione/png/2747.png b/riot/emojione/png/2747.png new file mode 100644 index 0000000..6aa7b6e Binary files /dev/null and b/riot/emojione/png/2747.png differ diff --git a/riot/emojione/png/274c.png b/riot/emojione/png/274c.png new file mode 100644 index 0000000..9f9ed0f Binary files /dev/null and b/riot/emojione/png/274c.png differ diff --git a/riot/emojione/png/274e.png b/riot/emojione/png/274e.png new file mode 100644 index 0000000..dae487f Binary files /dev/null and b/riot/emojione/png/274e.png differ diff --git a/riot/emojione/png/2753.png b/riot/emojione/png/2753.png new file mode 100644 index 0000000..5a58f34 Binary files /dev/null and b/riot/emojione/png/2753.png differ diff --git a/riot/emojione/png/2754.png b/riot/emojione/png/2754.png new file mode 100644 index 0000000..6e7824c Binary files /dev/null and b/riot/emojione/png/2754.png differ diff --git a/riot/emojione/png/2755.png b/riot/emojione/png/2755.png new file mode 100644 index 0000000..9b64da8 Binary files /dev/null and b/riot/emojione/png/2755.png differ diff --git a/riot/emojione/png/2757.png b/riot/emojione/png/2757.png new file mode 100644 index 0000000..2c14406 Binary files /dev/null and b/riot/emojione/png/2757.png differ diff --git a/riot/emojione/png/2763.png b/riot/emojione/png/2763.png new file mode 100644 index 0000000..91b520b Binary files /dev/null and b/riot/emojione/png/2763.png differ diff --git a/riot/emojione/png/2764.png b/riot/emojione/png/2764.png new file mode 100644 index 0000000..638cb72 Binary files /dev/null and b/riot/emojione/png/2764.png differ diff --git a/riot/emojione/png/2795.png b/riot/emojione/png/2795.png new file mode 100644 index 0000000..4079979 Binary files /dev/null and b/riot/emojione/png/2795.png differ diff --git a/riot/emojione/png/2796.png b/riot/emojione/png/2796.png new file mode 100644 index 0000000..054211c Binary files /dev/null and b/riot/emojione/png/2796.png differ diff --git a/riot/emojione/png/2797.png b/riot/emojione/png/2797.png new file mode 100644 index 0000000..df32ab2 Binary files /dev/null and b/riot/emojione/png/2797.png differ diff --git a/riot/emojione/png/27a1.png b/riot/emojione/png/27a1.png new file mode 100644 index 0000000..4755670 Binary files /dev/null and b/riot/emojione/png/27a1.png differ diff --git a/riot/emojione/png/27b0.png b/riot/emojione/png/27b0.png new file mode 100644 index 0000000..440aa56 Binary files /dev/null and b/riot/emojione/png/27b0.png differ diff --git a/riot/emojione/png/27bf.png b/riot/emojione/png/27bf.png new file mode 100644 index 0000000..0b82c8f Binary files /dev/null and b/riot/emojione/png/27bf.png differ diff --git a/riot/emojione/png/2934.png b/riot/emojione/png/2934.png new file mode 100644 index 0000000..f29bfcf Binary files /dev/null and b/riot/emojione/png/2934.png differ diff --git a/riot/emojione/png/2935.png b/riot/emojione/png/2935.png new file mode 100644 index 0000000..2d9d24b Binary files /dev/null and b/riot/emojione/png/2935.png differ diff --git a/riot/emojione/png/2b05.png b/riot/emojione/png/2b05.png new file mode 100644 index 0000000..8c685e0 Binary files /dev/null and b/riot/emojione/png/2b05.png differ diff --git a/riot/emojione/png/2b06.png b/riot/emojione/png/2b06.png new file mode 100644 index 0000000..af8218a Binary files /dev/null and b/riot/emojione/png/2b06.png differ diff --git a/riot/emojione/png/2b07.png b/riot/emojione/png/2b07.png new file mode 100644 index 0000000..b8eefd0 Binary files /dev/null and b/riot/emojione/png/2b07.png differ diff --git a/riot/emojione/png/2b1b.png b/riot/emojione/png/2b1b.png new file mode 100644 index 0000000..162f2bb Binary files /dev/null and b/riot/emojione/png/2b1b.png differ diff --git a/riot/emojione/png/2b1c.png b/riot/emojione/png/2b1c.png new file mode 100644 index 0000000..6f06c1c Binary files /dev/null and b/riot/emojione/png/2b1c.png differ diff --git a/riot/emojione/png/2b50.png b/riot/emojione/png/2b50.png new file mode 100644 index 0000000..c930947 Binary files /dev/null and b/riot/emojione/png/2b50.png differ diff --git a/riot/emojione/png/2b55.png b/riot/emojione/png/2b55.png new file mode 100644 index 0000000..3fe75ce Binary files /dev/null and b/riot/emojione/png/2b55.png differ diff --git a/riot/emojione/png/3030.png b/riot/emojione/png/3030.png new file mode 100644 index 0000000..001c8d6 Binary files /dev/null and b/riot/emojione/png/3030.png differ diff --git a/riot/emojione/png/303d.png b/riot/emojione/png/303d.png new file mode 100644 index 0000000..70453d4 Binary files /dev/null and b/riot/emojione/png/303d.png differ diff --git a/riot/emojione/png/3297.png b/riot/emojione/png/3297.png new file mode 100644 index 0000000..ba8c89d Binary files /dev/null and b/riot/emojione/png/3297.png differ diff --git a/riot/emojione/png/3299.png b/riot/emojione/png/3299.png new file mode 100644 index 0000000..5fd7260 Binary files /dev/null and b/riot/emojione/png/3299.png differ diff --git a/riot/emojione/svg/0023-20e3.svg b/riot/emojione/svg/0023-20e3.svg new file mode 100644 index 0000000..a29d901 --- /dev/null +++ b/riot/emojione/svg/0023-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m49.4 24.9l1.6-6h-6.1l1.6-6h-6.1l-1.6 6h-8.1l1.6-6h-6.1l-1.6 6h-6.1l-1.6 6h6.1l-2.2 8h-6.1l-1.6 6h6.1l-1.6 6h6.1l1.6-6h8.1l-1.6 6h6.1l1.6-6h6.1l1.6-6h-6.1l2.2-8c0 0 6.1 0 6.1 0m-14.4 8h-8.1l2.2-8h8.1l-2.2 8" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0023.svg b/riot/emojione/svg/0023.svg new file mode 100644 index 0000000..76c606d --- /dev/null +++ b/riot/emojione/svg/0023.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m49.4 28l1.6-6h-6.1l1.6-6h-6.1l-1.6 6h-8.1l1.6-6h-6.1l-1.6 6h-6.1l-1.6 6h6.1l-2.2 8h-6.1l-1.7 6h6.1l-1.6 6h6.1l1.6-6h8.1l-1.6 6h6.1l1.6-6h6.1l1.6-6h-6.1l2.2-8h6.2m-14.4 8h-8.1l2.2-8h8.1l-2.2 8" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/002a-20e3.svg b/riot/emojione/svg/002a-20e3.svg new file mode 100644 index 0000000..bc3b2e6 --- /dev/null +++ b/riot/emojione/svg/002a-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m45.5 33.3c.4.2.5.5.5.9 0 .5-.3 1.2-1 2.3-.6 1.1-1.1 1.7-1.5 2-.4.2-.7.2-1.1 0l-8.6-6.2 1.2 10.5c.1.4-.1.7-.5.9-.4.2-1.3.3-2.5.3-1.2 0-2.1-.1-2.5-.3-.4-.2-.6-.5-.5-.9l1.1-10.5-8.5 6.2c-.3.2-.7.2-1.1 0-.4-.2-.9-.9-1.5-2-.6-1-.9-1.8-.9-2.3 0-.5.2-.8.5-.9l9.7-4.3-9.7-4.3c-.4-.2-.6-.5-.5-1 0-.5.3-1.2.9-2.3.6-1 1.1-1.7 1.5-1.9.4-.2.8-.2 1.1 0l8.5 6.2-1.1-10.4c-.1-.4.1-.7.5-1s1.3-.3 2.5-.3c1.2 0 2.1.1 2.5.3s.6.5.5 1l-1.1 10.5 8.6-6.2c.3-.2.7-.2 1.1 0 .4.2.9.9 1.5 2 .6 1 .9 1.8 1 2.2 0 .5-.1.8-.5 1l-9.8 4.2 9.7 4.3" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/002a.svg b/riot/emojione/svg/002a.svg new file mode 100644 index 0000000..2584149 --- /dev/null +++ b/riot/emojione/svg/002a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m45.5 36.3c.4.2.5.5.5.9 0 .5-.3 1.2-1 2.3-.6 1.1-1.1 1.7-1.5 2-.4.2-.7.2-1.1 0l-8.6-6.2 1.2 10.5c.1.4-.1.7-.5.9-.4.2-1.3.3-2.5.3-1.2 0-2.1-.1-2.5-.3-.4-.2-.6-.5-.5-.9l1.1-10.5-8.5 6.2c-.3.2-.7.2-1.1 0-.4-.2-.9-.9-1.5-2-.6-1-.9-1.8-.9-2.3 0-.5.2-.8.5-.9l9.7-4.3-9.7-4.3c-.4-.2-.6-.5-.5-1 0-.5.3-1.2.9-2.3.6-1 1.1-1.7 1.5-1.9s.8-.2 1.1 0l8.5 6.2-1.1-10.4c-.1-.4.1-.7.5-1s1.3-.3 2.5-.3c1.2 0 2.1.1 2.5.3.4.2.6.5.5 1l-1.1 10.5 8.6-6.2c.3-.2.7-.2 1.1 0s.9.9 1.5 2c.6 1 .9 1.8 1 2.2 0 .5-.1.8-.5 1l-9.8 4.2 9.7 4.3" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0030-20e3.svg b/riot/emojione/svg/0030-20e3.svg new file mode 100644 index 0000000..57dc889 --- /dev/null +++ b/riot/emojione/svg/0030-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m32 13c3 0 5.3 1.1 7 3.2 2 2.6 3 6.8 3 12.8 0 5.9-1 10.2-3 12.8-1.7 2.1-4 3.2-7 3.2-3 0-5.4-1.2-7.2-3.5-1.9-2.4-2.8-6.5-2.8-12.6 0-5.9 1-10.1 3-12.7 1.7-2.1 4-3.2 7-3.2m0 5c-.7 0-1.4.2-1.9.7s-1 1.3-1.3 2.5c-.4 1.6-.6 4.2-.6 7.8 0 3.7.2 6.2.5 7.6.4 1.4.8 2.3 1.4 2.7.6.5 1.2.7 1.9.7.7 0 1.4-.2 1.9-.7.6-.5 1-1.3 1.3-2.5.4-1.5.6-4.1.6-7.8 0-3.7-.2-6.2-.5-7.6-.4-1.4-.8-2.3-1.4-2.8-.6-.4-1.2-.6-1.9-.6" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0030.svg b/riot/emojione/svg/0030.svg new file mode 100644 index 0000000..8ea076c --- /dev/null +++ b/riot/emojione/svg/0030.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m32 16c3 0 5.3 1.1 7 3.2 2 2.6 3 6.8 3 12.8 0 5.9-1 10.2-3 12.8-1.7 2.1-4 3.2-7 3.2-3 0-5.4-1.2-7.2-3.5-1.9-2.4-2.8-6.5-2.8-12.6 0-5.9 1-10.1 3-12.7 1.7-2.1 4-3.2 7-3.2m0 5c-.7 0-1.4.2-1.9.7s-1 1.3-1.3 2.5c-.4 1.6-.6 4.2-.6 7.8 0 3.7.2 6.2.5 7.6.4 1.4.8 2.3 1.4 2.7.6.5 1.2.7 1.9.7.7 0 1.4-.2 1.9-.7.6-.5 1-1.3 1.3-2.5.4-1.5.6-4.1.6-7.8 0-3.7-.2-6.2-.5-7.6-.4-1.4-.8-2.3-1.4-2.8-.6-.4-1.2-.6-1.9-.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0031-20e3.svg b/riot/emojione/svg/0031-20e3.svg new file mode 100644 index 0000000..e18178a --- /dev/null +++ b/riot/emojione/svg/0031-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m38 45h-6.1v-23c-2.2 2.1-4.9 3.6-7.9 4.6v-5.5c1.6-.5 3.3-1.5 5.2-3 1.9-1.5 3.2-3.2 3.8-5.1h5v32" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0031.svg b/riot/emojione/svg/0031.svg new file mode 100644 index 0000000..c0ca63e --- /dev/null +++ b/riot/emojione/svg/0031.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m38 48h-6.1v-23c-2.2 2.1-4.9 3.6-7.9 4.6v-5.5c1.6-.5 3.3-1.5 5.2-3 1.9-1.5 3.2-3.2 3.8-5.1h5v32" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0032-20e3.svg b/riot/emojione/svg/0032-20e3.svg new file mode 100644 index 0000000..c2eb5bd --- /dev/null +++ b/riot/emojione/svg/0032-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m42 39.3v5.7h-20c.2-2.1.9-4.2 1.9-6.1 1.1-1.9 3.2-4.5 6.4-7.6 2.6-2.6 4.1-4.3 4.7-5.2.8-1.3 1.2-2.5 1.2-3.7 0-1.4-.3-2.4-1-3.1s-1.6-1.1-2.8-1.1c-1.2 0-2.1.4-2.8 1.2-.7.8-1.1 2-1.2 3.8l-5.7-.6c.3-3.4 1.4-5.8 3.2-7.2 1.8-1.5 4-2.2 6.7-2.2 2.9 0 5.2.8 6.9 2.5s2.5 3.8 2.5 6.3c0 1.4-.2 2.8-.7 4.1-.5 1.2-1.3 2.5-2.3 3.9-.7.9-1.9 2.3-3.7 4.1-1.8 1.8-2.9 2.9-3.4 3.5-.5.6-.9 1.1-1.2 1.7h11.3" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0032.svg b/riot/emojione/svg/0032.svg new file mode 100644 index 0000000..abd0137 --- /dev/null +++ b/riot/emojione/svg/0032.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m42 42.3v5.7h-20c.2-2.1.9-4.2 1.9-6.1 1.1-1.9 3.2-4.5 6.4-7.6 2.6-2.6 4.1-4.3 4.7-5.2.8-1.3 1.2-2.5 1.2-3.7 0-1.4-.3-2.4-1-3.1s-1.6-1.1-2.8-1.1c-1.2 0-2.1.4-2.8 1.2-.7.8-1.1 2-1.2 3.8l-5.7-.6c.3-3.4 1.4-5.8 3.2-7.2 1.8-1.5 4-2.2 6.7-2.2 2.9 0 5.2.8 6.9 2.5s2.5 3.8 2.5 6.3c0 1.4-.2 2.8-.7 4.1-.5 1.2-1.3 2.5-2.3 3.9-.7.9-1.9 2.3-3.7 4.1-1.8 1.8-2.9 2.9-3.4 3.5-.5.6-.9 1.1-1.2 1.7h11.3" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0033-20e3.svg b/riot/emojione/svg/0033-20e3.svg new file mode 100644 index 0000000..2952760 --- /dev/null +++ b/riot/emojione/svg/0033-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m22 36.1l5.6-.7c.2 1.5.7 2.6 1.4 3.4s1.7 1.2 2.8 1.2c1.2 0 2.2-.5 3-1.4.8-.9 1.2-2.2 1.2-3.8 0-1.5-.4-2.7-1.2-3.6-.8-.9-1.7-1.3-2.9-1.3-.7 0-1.6.1-2.6.4l.6-4.9c1.6 0 2.8-.3 3.6-1.1s1.2-1.7 1.2-3c0-1.1-.3-1.9-.9-2.5-.6-.6-1.4-.9-2.4-.9-1 0-1.8.4-2.5 1.1s-1.1 1.8-1.3 3.1l-5.3-.9c.4-1.9.9-3.4 1.7-4.5.7-1.1 1.8-2 3.1-2.7 1.3-.6 2.8-1 4.5-1 2.8 0 5.1.9 6.8 2.8 1.4 1.5 2.1 3.3 2.1 5.2 0 2.8-1.4 4.9-4.3 6.6 1.7.4 3.1 1.2 4.1 2.6 1 1.3 1.5 3 1.5 4.9 0 2.8-1 5.1-2.9 7-1.7 1.9-4.1 2.9-7 2.9-2.7 0-5-.8-6.8-2.4-1.8-1.7-2.8-3.8-3.1-6.5" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0033.svg b/riot/emojione/svg/0033.svg new file mode 100644 index 0000000..3136230 --- /dev/null +++ b/riot/emojione/svg/0033.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m22 39.2l5.6-.7c.2 1.5.7 2.6 1.4 3.4s1.7 1.2 2.8 1.2c1.2 0 2.2-.5 3-1.4.8-.9 1.2-2.2 1.2-3.8 0-1.5-.4-2.7-1.2-3.6-.8-.9-1.7-1.3-2.9-1.3-.7 0-1.6.1-2.6.4l.6-4.9c1.6 0 2.8-.3 3.6-1.1s1.2-1.7 1.2-3c0-1.1-.3-1.9-.9-2.5-.6-.6-1.4-.9-2.4-.9-1 0-1.8.4-2.5 1.1s-1.1 1.8-1.3 3.1l-5.3-.9c.4-1.9.9-3.4 1.7-4.5.7-1.1 1.8-2 3.1-2.7 1.3-.6 2.8-1 4.5-1 2.8 0 5.1.9 6.8 2.8 1.4 1.5 2.1 3.3 2.1 5.2 0 2.8-1.4 4.9-4.3 6.6 1.7.4 3.1 1.2 4.1 2.6 1 1.3 1.5 3 1.5 4.9 0 2.8-1 5.1-2.9 7-1.7 1.8-4.1 2.8-7 2.8-2.7 0-5-.8-6.8-2.4-1.8-1.7-2.8-3.8-3.1-6.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0034-20e3.svg b/riot/emojione/svg/0034-20e3.svg new file mode 100644 index 0000000..f530a75 --- /dev/null +++ b/riot/emojione/svg/0034-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="M33.7,45v-6.4H20v-5.3L34.5,13h5.4v20.2H44v5.4h-4.1V45H33.7z M33.7,33.2V22.3L26,33.2H33.7z" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0034.svg b/riot/emojione/svg/0034.svg new file mode 100644 index 0000000..1722ee9 --- /dev/null +++ b/riot/emojione/svg/0034.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M33.7,48v-6.4H20v-5.3L34.5,16h5.4v20.2H44v5.4h-4.1V48H33.7z M33.7,36.2V25.3L26,36.2H33.7z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0035-20e3.svg b/riot/emojione/svg/0035-20e3.svg new file mode 100644 index 0000000..dc4e1d8 --- /dev/null +++ b/riot/emojione/svg/0035-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m22 36.3l5.7-.6c.2 1.4.6 2.5 1.4 3.3.8.8 1.7 1.2 2.8 1.2 1.2 0 2.2-.5 3-1.6.8-1 1.2-2.6 1.2-4.7 0-2-.4-3.4-1.2-4.4-.8-1-1.9-1.5-3.2-1.5-1.6 0-3.1.8-4.4 2.3l-4.6-.7 2.9-16.6h15.1v5.7h-10.8l-.9 5.4c1.3-.7 2.6-1 3.9-1 2.5 0 4.7 1 6.4 3 1.8 2 2.6 4.5 2.6 7.7 0 2.6-.7 5-2.1 7-1.9 2.8-4.6 4.2-8.1 4.2-2.7 0-5-.8-6.7-2.4-1.6-1.6-2.7-3.7-3-6.3" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0035.svg b/riot/emojione/svg/0035.svg new file mode 100644 index 0000000..3e7717f --- /dev/null +++ b/riot/emojione/svg/0035.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m22 39.3l5.7-.6c.2 1.4.6 2.5 1.4 3.3.8.8 1.7 1.2 2.8 1.2 1.2 0 2.2-.5 3-1.6.8-1 1.2-2.6 1.2-4.7 0-2-.4-3.4-1.2-4.4-.8-1-1.9-1.5-3.2-1.5-1.6 0-3.1.8-4.4 2.3l-4.6-.7 2.9-16.6h15.1v5.7h-10.8l-.9 5.4c1.3-.7 2.6-1 3.9-1 2.5 0 4.7 1 6.4 3 1.8 2 2.6 4.5 2.6 7.7 0 2.6-.7 5-2.1 7-1.9 2.8-4.6 4.2-8.1 4.2-2.7 0-5-.8-6.7-2.4-1.6-1.6-2.7-3.7-3-6.3" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0036-20e3.svg b/riot/emojione/svg/0036-20e3.svg new file mode 100644 index 0000000..9ce3a59 --- /dev/null +++ b/riot/emojione/svg/0036-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m41.4 20.8l-5.6.6c-.1-1.2-.5-2.1-1.1-2.6-.6-.6-1.3-.9-2.2-.9-1.2 0-2.2.6-3.1 1.7-.8 1.1-1.4 3.5-1.6 7.1 1.4-1.8 3.2-2.7 5.3-2.7 2.4 0 4.5 1 6.2 2.9 1.7 1.9 2.6 4.4 2.6 7.4 0 3.2-.9 5.8-2.7 7.7s-4 3-6.8 3c-3 0-5.5-1.2-7.5-3.7-1.9-2.4-2.9-6.5-2.9-12.1 0-5.7 1-9.9 3-12.4 2-2.5 4.7-3.8 7.9-3.8 2.3 0 4.2.7 5.6 2 1.6 1.3 2.5 3.3 2.9 5.8m-13 13.1c0 2 .4 3.5 1.3 4.5.9 1.1 1.8 1.6 2.9 1.6 1.1 0 1.9-.4 2.7-1.3.7-.9 1.1-2.3 1.1-4.3 0-2-.4-3.5-1.1-4.5-.8-.9-1.7-1.4-2.9-1.4-1.1 0-2 .5-2.8 1.4s-1.2 2.2-1.2 4" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0036.svg b/riot/emojione/svg/0036.svg new file mode 100644 index 0000000..2ff6d93 --- /dev/null +++ b/riot/emojione/svg/0036.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m41.4 23.8l-5.6.6c-.1-1.2-.5-2.1-1.1-2.6-.6-.6-1.3-.9-2.2-.9-1.2 0-2.2.6-3.1 1.7-.8 1.1-1.4 3.5-1.6 7.1 1.4-1.8 3.2-2.7 5.3-2.7 2.4 0 4.5 1 6.2 2.9 1.7 1.9 2.6 4.4 2.6 7.4 0 3.2-.9 5.8-2.7 7.7s-4 3-6.8 3c-3 0-5.5-1.2-7.5-3.7-1.9-2.4-2.9-6.5-2.9-12.1 0-5.7 1-9.9 3-12.4 2-2.5 4.7-3.8 7.9-3.8 2.3 0 4.2.7 5.6 2 1.6 1.3 2.5 3.3 2.9 5.8m-13 13.1c0 2 .4 3.5 1.3 4.5.9 1.1 1.8 1.6 2.9 1.6 1.1 0 1.9-.4 2.7-1.3.7-.9 1.1-2.3 1.1-4.3 0-2-.4-3.5-1.1-4.5-.8-.9-1.7-1.4-2.9-1.4-1.1 0-2 .5-2.8 1.4-.8.9-1.2 2.2-1.2 4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0037-20e3.svg b/riot/emojione/svg/0037-20e3.svg new file mode 100644 index 0000000..1f01b9d --- /dev/null +++ b/riot/emojione/svg/0037-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m23 18.8v-5.8h20v4.5c-1.7 1.7-3.3 4.2-5 7.4-1.7 3.2-3 6.7-3.9 10.3s-1.3 6.9-1.3 9.7h-5.6c.1-4.5 1-9.1 2.6-13.7s3.8-8.8 6.6-12.5l-13.4.1" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0037.svg b/riot/emojione/svg/0037.svg new file mode 100644 index 0000000..6079e49 --- /dev/null +++ b/riot/emojione/svg/0037.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m23 21.8v-5.8h20v4.5c-1.7 1.7-3.3 4.2-5 7.4-1.7 3.2-3 6.7-3.9 10.3-.9 3.6-1.3 6.9-1.3 9.7h-5.6c.1-4.5 1-9.1 2.6-13.7 1.6-4.7 3.8-8.8 6.6-12.5l-13.4.1" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0038-20e3.svg b/riot/emojione/svg/0038-20e3.svg new file mode 100644 index 0000000..b6ed90a --- /dev/null +++ b/riot/emojione/svg/0038-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m27.1 27.5c-1.5-.7-2.6-1.6-3.3-2.7-.7-1.1-1-2.4-1-3.8 0-2.3.8-4.3 2.4-5.8 1.6-1.5 3.8-2.3 6.8-2.3 2.9 0 5.1.8 6.7 2.3s2.4 3.5 2.4 5.8c0 1.5-.4 2.7-1.1 3.9-.7 1.1-1.8 2-3.1 2.6 1.7.7 3 1.7 3.8 3.1.9 1.3 1.3 2.9 1.3 4.6 0 2.9-.9 5.2-2.7 7.1-1.8 1.8-4.2 2.7-7.1 2.7-2.8 0-5.1-.7-6.9-2.2-2.2-1.8-3.3-4.2-3.3-7.3 0-1.7.4-3.2 1.2-4.7.8-1.4 2.1-2.5 3.9-3.3m.6 7.4c0 1.7.4 2.9 1.2 3.9.8.9 1.9 1.4 3.1 1.4 1.2 0 2.2-.4 3-1.3.8-.9 1.2-2.2 1.2-3.9 0-1.5-.4-2.6-1.2-3.5-.8-.9-1.8-1.3-3-1.3-1.4 0-2.5.5-3.2 1.5-.7.9-1.1 2-1.1 3.2m.6-13.4c0 1.2.3 2.1 1 2.8.7.7 1.5 1 2.6 1 1.1 0 2-.3 2.7-1 .7-.7 1-1.6 1-2.8 0-1.1-.3-2-1-2.7-.7-.7-1.5-1-2.6-1-1.1 0-2 .3-2.7 1-.7.7-1 1.6-1 2.7" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0038.svg b/riot/emojione/svg/0038.svg new file mode 100644 index 0000000..014bf26 --- /dev/null +++ b/riot/emojione/svg/0038.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m27.1 30.5c-1.5-.7-2.6-1.6-3.3-2.7-.7-1.1-1-2.4-1-3.8 0-2.3.8-4.3 2.4-5.8 1.6-1.5 3.8-2.3 6.8-2.3 2.9 0 5.1.8 6.7 2.3s2.4 3.5 2.4 5.8c0 1.5-.4 2.7-1.1 3.9-.7 1.1-1.8 2-3.1 2.6 1.7.7 3 1.7 3.8 3.1.9 1.3 1.3 2.9 1.3 4.6 0 2.9-.9 5.2-2.7 7.1-1.8 1.8-4.2 2.7-7.1 2.7-2.8 0-5.1-.7-6.9-2.2-2.2-1.8-3.3-4.2-3.3-7.3 0-1.7.4-3.2 1.2-4.7.8-1.4 2.1-2.5 3.9-3.3m.6 7.4c0 1.7.4 2.9 1.2 3.9.8.9 1.9 1.4 3.1 1.4 1.2 0 2.2-.4 3-1.3.8-.9 1.2-2.2 1.2-3.9 0-1.5-.4-2.6-1.2-3.5-.8-.9-1.8-1.3-3-1.3-1.4 0-2.5.5-3.2 1.5-.7.9-1.1 2-1.1 3.2m.6-13.4c0 1.2.3 2.1 1 2.8.7.7 1.5 1 2.6 1 1.1 0 2-.3 2.7-1 .7-.7 1-1.6 1-2.8 0-1.1-.3-2-1-2.7-.7-.7-1.5-1-2.6-1-1.1 0-2 .3-2.7 1-.7.7-1 1.6-1 2.7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0039-20e3.svg b/riot/emojione/svg/0039-20e3.svg new file mode 100644 index 0000000..c883419 --- /dev/null +++ b/riot/emojione/svg/0039-20e3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><path d="m22.6 37.2l5.6-.6c.1 1.2.5 2.1 1.1 2.6s1.3.9 2.3.9c1.2 0 2.2-.6 3-1.7.8-1.1 1.4-3.5 1.6-7.1-1.4 1.8-3.2 2.6-5.4 2.6-2.4 0-4.4-1-6.1-2.9-1.7-1.9-2.6-4.4-2.6-7.4 0-3.2.9-5.7 2.7-7.7 1.8-1.9 4.1-2.9 6.9-2.9 3 0 5.5 1.2 7.5 3.7 1.8 2.4 2.8 6.5 2.8 12.1 0 5.7-1 9.9-3 12.4-2 2.5-4.7 3.8-7.9 3.8-2.3 0-4.2-.7-5.7-2-1.5-1.3-2.4-3.2-2.8-5.8m13-13.1c0-1.9-.4-3.4-1.3-4.5-.9-1.1-1.8-1.6-3-1.6-1.1 0-1.9.4-2.6 1.3-.7.9-1.1 2.3-1.1 4.3 0 2 .4 3.5 1.1 4.5.8.9 1.7 1.4 2.9 1.4 1.1 0 2-.5 2.8-1.4s1.2-2.2 1.2-4" fill="#9aa0a5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/0039.svg b/riot/emojione/svg/0039.svg new file mode 100644 index 0000000..afda6d7 --- /dev/null +++ b/riot/emojione/svg/0039.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m22.6 40.2l5.6-.6c.1 1.2.5 2.1 1.1 2.6s1.3.9 2.3.9c1.2 0 2.2-.6 3-1.7.8-1.1 1.4-3.5 1.6-7.1-1.4 1.8-3.2 2.6-5.4 2.6-2.4 0-4.4-1-6.1-2.8-1.7-1.9-2.6-4.4-2.6-7.4 0-3.2.9-5.7 2.7-7.7 1.8-1.9 4.1-2.9 6.9-2.9 3 0 5.5 1.2 7.5 3.7 1.8 2.3 2.8 6.4 2.8 12 0 5.7-1 9.9-3 12.4-2 2.5-4.7 3.8-7.9 3.8-2.3 0-4.2-.7-5.7-2s-2.4-3.2-2.8-5.8m13-13.1c0-1.9-.4-3.4-1.3-4.5-.9-1.1-1.8-1.6-3-1.6-1.1 0-1.9.4-2.6 1.3-.7.9-1.1 2.3-1.1 4.3 0 2 .4 3.5 1.1 4.5.8.9 1.7 1.4 2.9 1.4 1.1 0 2-.5 2.8-1.4.8-.9 1.2-2.2 1.2-4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/00a9.svg b/riot/emojione/svg/00a9.svg new file mode 100644 index 0000000..68a7702 --- /dev/null +++ b/riot/emojione/svg/00a9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m32 2c-13.8 0-25 11.2-25 25s11.2 25 25 25 25-11.2 25-25-11.2-25-25-25m0 45c-11 0-20-9-20-20 0-11 9-20 20-20 11 0 20 9 20 20 0 11-9 20-20 20"/><path d="m25.4 19.3c.9-1 2-1.8 3.3-2.3 1.3-.6 2.6-.9 4-.9 1.7 0 3.4.4 4.8 1.3 1.4.8 2.7 2 3.6 3.3l3.6-2.7c-1.4-1.8-3.1-3.4-5.1-4.4-2.1-1.1-4.3-1.6-6.8-1.6-2 0-4 .4-5.8 1.2-1.8.8-3.4 1.9-4.7 3.2-1.3 1.4-2.4 2.9-3.2 4.8-.8 1.8-1.2 3.8-1.2 5.8 0 2.1.4 4 1.2 5.8.8 1.8 1.8 3.4 3.2 4.8 1.3 1.4 2.9 2.4 4.7 3.2 1.8.8 3.7 1.2 5.8 1.2 2.5 0 4.8-.5 6.8-1.6 2-1.1 3.8-2.6 5.1-4.4l-3.6-2.7c-.9 1.4-2.1 2.5-3.6 3.3-1.5.8-3.1 1.2-4.8 1.2-1.4 0-2.7-.3-4-.9-1.2-.6-2.3-1.4-3.3-2.3-.9-1-1.7-2.1-2.2-3.4s-.8-2.7-.8-4.2c0-1.5.3-2.9.8-4.2s1.3-2.5 2.2-3.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/00ae.svg b/riot/emojione/svg/00ae.svg new file mode 100644 index 0000000..8b084f6 --- /dev/null +++ b/riot/emojione/svg/00ae.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m32 2c-13.8 0-25 11.2-25 25s11.2 25 25 25 25-11.2 25-25-11.2-25-25-25m0 45c-11 0-20-9-20-20 0-11 9-20 20-20 11 0 20 9 20 20 0 11-9 20-20 20"/><path d="m32.3 14h-9.3v26h4.2v-7.7h7l4.4 7.7h4.4l-5-9c7.7-3.4 7.7-17-5.7-17m.5 15h-5.6v-11.7h5.6c8.8 0 8.8 11.7 0 11.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f004.svg b/riot/emojione/svg/1f004.svg new file mode 100644 index 0000000..45867fb --- /dev/null +++ b/riot/emojione/svg/1f004.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 30.8v-8.4h-5.7v3l-17.9-14.4c-.9-.8-2.5-.8-3.4 0l-31.3 25v-2.8h-5.7v8.3c0 0 0 0 0 0v.2c.1.4.3.8.7 1.2l22.9 18.4c.9.8 2.5.8 3.4 0l36.2-29.1c.5-.4.8-.9.8-1.4" fill="#b69467"/><path d="m27.1 53c-.9.8-2.5.8-3.4 0l-23-18.4c-.9-.8-.9-2 0-2.8l36.2-29.1c.9-.8 2.5-.8 3.4 0l22.9 18.4c.9.8.9 2 0 2.8l-36.1 29.1" fill="#efdec2"/><path d="m46.5 13.5c.8 2.1.3 4.2.3 6.3-1.8 2.1-3.7 0-5.5 2.5 3.8 2 9.1 6.4 6.6 10.5-4.1-.6-8.3-1.6-12.3.6 0-1.2-2-2.4-3.5-3.7-6.4 2.1-9.5 10.3-16.3 11.3.3-4.6 11.3-9 13.4-13.6-1.6-2-3-1.1-4.6-2.8 4.2-3.6-3.1-7.6 3.4-11.1 2.1 1.6.1 3 1.3 4.5 2.5 1.5 4.9 1.9 7.4 3.3 3.8-2.6 3.2-5.3 5.3-7.9 1.5-.3 3.1.6 4.5.1m-8.5 10.5c-1.6 1.3-3.2 2.6-4.9 3.9 3.6 2.2 7.1 1.5 10.6-.2-.2-2.1-3.8-3-5.7-3.7m-7.9-3.8c-.9 1.9-2.3 3.8.8 5.9 1.5-1.5 4.8-2.9 3.2-4.4-1.4.2-2.7-.9-4-1.5" fill="#b70000"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f0cf.svg b/riot/emojione/svg/1f0cf.svg new file mode 100644 index 0000000..45ae8ab --- /dev/null +++ b/riot/emojione/svg/1f0cf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M13,62.5c-3,0-5.5-2.5-5.5-5.5V7c0-3,2.5-5.5,5.5-5.5h38c3,0,5.5,2.5,5.5,5.5v50c0,3-2.5,5.5-5.5,5.5H13z" fill="#efeded"/><path d="m51 3c2.2 0 4 1.8 4 4v50c0 2.2-1.8 4-4 4h-38c-2.2 0-4-1.8-4-4v-50c0-2.2 1.8-4 4-4h38m0-3h-38c-3.9 0-7 3.1-7 7v50c0 3.9 3.1 7 7 7h38c3.9 0 7-3.1 7-7v-50c0-3.9-3.1-7-7-7z" fill="#262626"/><path d="m43.6 55.2l-7.3-12.8c-1.2 1.3-2.7 4.2-4.4 4.2-1.7 0-3.2-2.9-4.3-4.2l-7.3 12.8 8.7-7.3-.9 7.3 3.9-7.7 3.9 7.7-.8-7.3 8.5 7.3" fill="#333"/><path d="m39.3 26.9h-14.6c0 0-3 5.8 2.6 15.3 1.8 3 3.3 4.5 4.8 4.5 1.4 0 3-1.5 4.8-4.5 5.5-9.6 2.4-15.3 2.4-15.3" fill="#fed0ac"/><g fill="#333"><path d="m35.6 39.6c0 0-.1.1-.3.2-.1.1-.2.2-.4.2-.1.1-.3.2-.5.3-.3.2-.7.4-1.2.5-.2.1-.4.1-.6.1-.1 0-.1 0-.2 0-.1 0-.1 0-.2 0h-.1-.2c-.5 0-.9-.1-1.3-.2-.4-.1-.8-.3-1.1-.5-.3-.2-.6-.4-.8-.5s-.3-.2-.3-.2 0 0 0 .1c0 .1 0 .2 0 .3.1.2.2.6.4 1 .1.2.3.4.5.6.2.2.4.4.7.5.3.1.6.3.9.3.3.1.7.1 1 .1h.1.1.1.1c.2 0 .3 0 .5-.1.3-.1.6-.2.9-.4.3-.2.5-.3.7-.5.2-.2.4-.4.5-.6.1-.2.2-.4.3-.5.1-.2.1-.3.1-.4.3-.1.3-.3.3-.3"/><path d="m30.3 33.4c0-.1-.1-.1-.1-.2 0 0 0-.1-.1-.1-.1-.1-.1-.1-.1-.1s-.1-.1-.1-.1c0 0-.1-.1-.1-.1-.1 0-.1-.1-.2-.1-.1 0-.1-.1-.2-.1-.1-.1-.3-.1-.5-.2 0 0-.1 0-.1 0 0 0-.1 0-.1 0-.1 0-.2 0-.3 0-.2 0-.3 0-.5.1-.2 0-.3.1-.4.2-.1.1-.3.1-.4.2-.1.1-.2.2-.3.2-.2.2-.2.3-.3.4 0 .1 0 .1-.1.1s.1 0 .2-.1c.1-.1.3-.1.5-.2.1 0 .2-.1.3-.1-.1.1-.1.3-.1.4 0 .5.5 1 1.1 1 .6 0 1.1-.4 1.1-1 0-.2 0-.3-.1-.4.1 0 .1 0 .1.1.1 0 .1 0 .1.1.1 0 .2.1.3.1.1 0 .2.1.2.1.1 0 .1 0 .1.1s0 0 0 0c.1-.2.1-.2.1-.3"/><path d="m37.6 33.5c0 0 0-.1-.1-.1 0-.1-.1-.1-.1-.2 0 0-.1-.1-.1-.1 0 0-.1-.1-.1-.1s-.1-.1-.1-.1c0 0-.1-.1-.1-.1-.1 0-.1-.1-.2-.1-.1 0-.1-.1-.2-.1-.1-.1-.3-.1-.5-.2 0 0-.1 0-.1 0 0 0-.1 0-.1 0-.1 0-.2 0-.3 0-.2 0-.3 0-.5.1-.2 0-.3.1-.4.2-.1.1-.3.1-.4.2-.1.1-.2.2-.3.2-.2.2-.2.3-.3.4 0 .1 0 .1-.1.1s.1 0 .2-.1.3-.1.5-.2c.1 0 .2-.1.3-.1-.1.1-.1.3-.1.4 0 .5.5 1 1.1 1 .6 0 1.1-.4 1.1-1 0-.2 0-.3-.1-.4.1 0 .1 0 .2.1 0 0 .1 0 .1.1.1 0 .2.1.3.1.1 0 .2.1.2.1.1-.1.1-.1.2-.1"/><path d="m46.4 14.9c-7.5-4-12.6 5.1-14.4 9.2-1.8-4.1-6.9-13.2-14.4-9.2-2.4 1.3-4.7 3.8-4.7 3.8s10.5-1.3 11.2 10c2.2-1.4 4.8-4.1 7.7-4.1 3 0 5.9 2.6 8.1 4.1.7-11.5 11.2-10 11.2-10s-2.2-2.5-4.7-3.8"/></g><path d="m39.3 26.5c-.5-1.8-2.5-9.3-7.3-15.8v-.1h-.1v.1c-5.4 7.5-7.4 16.2-7.4 16.2-.4 1-.7 2.2-.7 3.6 0 0 1.2-3.6 4.4-3.6 3.2 0 3.8 3.6 3.8 3.6s.5-3.6 3.8-3.6 4.4 3.6 4.4 3.6c-.1-1.6-.5-2.9-.9-4" fill="#94989b"/><ellipse cx="32" cy="10.6" rx="1.9" ry="1.7" fill="#333"/><g fill="#94989b"><ellipse cx="12.9" cy="18.7" rx="1.9" ry="1.7"/><ellipse cx="51.1" cy="18.7" rx="1.9" ry="1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f170.svg b/riot/emojione/svg/1f170.svg new file mode 100644 index 0000000..a2ed41f --- /dev/null +++ b/riot/emojione/svg/1f170.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><path d="M41.7,46H47L35,14h-6L17,46h5.3l4.2-11.2h11.1L41.7,46z M28.3,30l3.7-9.9l3.7,9.9H28.3z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f171.svg b/riot/emojione/svg/1f171.svg new file mode 100644 index 0000000..d0f8e64 --- /dev/null +++ b/riot/emojione/svg/1f171.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><path d="m43 25.3c0-5.1-4.2-9.2-9.4-9.2l-12.6-.1v32h12.6c5.2 0 9.4-4.1 9.4-9.2 0-2.6-1.1-5-3-6.7 1.9-1.8 3-4.2 3-6.8m-9.4 17.6h-7.7v-8.4h7.7c2.4 0 4.3 1.9 4.3 4.2s-1.9 4.2-4.3 4.2m0-13.4h-7.7v-8.4h7.7c2.4 0 4.3 1.9 4.3 4.2 0 2.3-1.9 4.2-4.3 4.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f17e.svg b/riot/emojione/svg/1f17e.svg new file mode 100644 index 0000000..8844efa --- /dev/null +++ b/riot/emojione/svg/1f17e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><path d="m32 48c-8.8 0-16-7.2-16-16 0-8.8 7.2-16 16-16s16 7.2 16 16c0 8.8-7.2 16-16 16m0-26.9c-6 0-10.9 4.9-10.9 10.9 0 6 4.9 10.9 10.9 10.9s10.9-4.9 10.9-10.9c0-6-4.9-10.9-10.9-10.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f17f.svg b/riot/emojione/svg/1f17f.svg new file mode 100644 index 0000000..5d85644 --- /dev/null +++ b/riot/emojione/svg/1f17f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><path d="m34 12h-13v40h7.4v-14.5h5.6c7.2 0 13-5.7 13-12.7 0-7.1-5.8-12.8-13-12.8m0 18.2h-5.6v-10.9h5.6c3.1 0 5.6 2.4 5.6 5.5 0 2.9-2.5 5.4-5.6 5.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f18e.svg b/riot/emojione/svg/1f18e.svg new file mode 100644 index 0000000..6c5e886 --- /dev/null +++ b/riot/emojione/svg/1f18e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><g fill="#fff"><path d="m28.1 45h3.9l-8.8-26h-4.4l-8.8 26h3.9l3.1-9.1h8.1l3 9.1m-9.8-13l2.7-8.1 2.7 8.1h-5.4"/><path d="m52 26.5c0-4.1-2.2-7.5-6-7.5h-10v26h9.2c3.8 0 6.8-3.4 6.8-7.5 0-2.2-.8-4.1-2.2-5.5 1.4-1.4 2.2-3.3 2.2-5.5m-6.8 14.4h-5.6v-6.8h5.6c1.7 0 3.1 1.5 3.1 3.4 0 1.8-1.4 3.4-3.1 3.4m0-10.9h-5.6v-6.8h5.6c1.7 0 3.1 1.5 3.1 3.4s-1.4 3.4-3.1 3.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f191.svg b/riot/emojione/svg/1f191.svg new file mode 100644 index 0000000..ef2cbf8 --- /dev/null +++ b/riot/emojione/svg/1f191.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><g fill="#fff"><path d="m23 43.1c-2.4 0-4.3-2-4.3-4.6v-13c0-2.5 1.9-4.6 4.3-4.6s4.3 2 4.3 4.6h3.7c0-1.1-.2-2.3-.6-3.3-.4-1-1-1.9-1.7-2.7-.7-.8-1.6-1.4-2.5-1.8-1-.4-2-.7-3.1-.7s-2.1.2-3.1.7c-1 .4-1.8 1-2.5 1.8-.7.8-1.3 1.7-1.7 2.7-.4 1-.6 2.2-.6 3.3v13c0 1.1.2 2.3.6 3.3.4 1 1 1.9 1.7 2.7.7.8 1.6 1.4 2.5 1.8 1 .4 2 .7 3.1.7s2.1-.2 3.1-.7c1-.4 1.8-1 2.5-1.8.7-.8 1.3-1.7 1.7-2.7.4-1 .6-2.2.6-3.3h-3.7c0 2.5-1.9 4.6-4.3 4.6"/><path d="m49 43.1h-8.3v-26.1h-3.7v30h12z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f192.svg b/riot/emojione/svg/1f192.svg new file mode 100644 index 0000000..4bcdb3b --- /dev/null +++ b/riot/emojione/svg/1f192.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><g fill="#fff"><path d="m15 37.7c-1.4 0-2.5-1-2.5-2.3v-6.9c0-1.3 1.1-2.3 2.5-2.3s2.5 1 2.5 2.3h2.5c0-2.5-2.2-4.6-5-4.6-2.8 0-5 2.1-5 4.6v6.9c0 2.5 2.2 4.6 5 4.6 2.8 0 5-2.1 5-4.6h-2.5c0 1.3-1.1 2.3-2.5 2.3"/><path d="m27 24c-2.8 0-5 2.1-5 4.6v6.9c0 2.5 2.2 4.6 5 4.6s5-2.1 5-4.6v-6.9c0-2.5-2.2-4.6-5-4.6m0 13.7c-1.4 0-2.5-1-2.5-2.3v-6.9c0-1.3 1.1-2.3 2.5-2.3s2.5 1 2.5 2.3v6.9c0 1.3-1.1 2.3-2.5 2.3"/><path d="m39 24c-2.8 0-5 2.1-5 4.6v6.9c0 2.5 2.2 4.6 5 4.6 2.8 0 5-2.1 5-4.6v-6.9c0-2.5-2.2-4.6-5-4.6m0 13.7c-1.4 0-2.5-1-2.5-2.3v-6.9c0-1.3 1.1-2.3 2.5-2.3s2.5 1 2.5 2.3v6.9c0 1.3-1.1 2.3-2.5 2.3"/><path d="m48.3 24h-2.3v16h8v-2.3h-5.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f193.svg b/riot/emojione/svg/1f193.svg new file mode 100644 index 0000000..d26b8c2 --- /dev/null +++ b/riot/emojione/svg/1f193.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><g fill="#fff"><path d="m34 41h8v-3h-5.1v-4.5h5.1v-3h-5.1v-4.5h5.1v-3h-8z"/><path d="m54 26v-3h-8v18h8v-3h-5.1v-4.5h5.1v-3h-5.1v-4.5z"/><path d="m23.9 41v-7.5h1.1l2.5 7.5h3l-2.6-7.9c1.8-.8 3.1-2.7 3.1-4.9 0-2.9-2.2-5.2-5-5.2h-5v18h2.9m0-15h2.1c1.2 0 2.1 1 2.1 2.2s-1 2.2-2.1 2.2h-2.1v-4.4"/><path d="m12.9 41v-7.5h5.1v-3h-5.1v-4.5h5.1v-3h-8v18z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f194.svg b/riot/emojione/svg/1f194.svg new file mode 100644 index 0000000..0c36d51 --- /dev/null +++ b/riot/emojione/svg/1f194.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#c28fef"/><g fill="#fff"><path d="m48.2 20.9c-.5-1.1-1.2-2.2-2.1-3.1-.9-.9-2-1.6-3.2-2.1-1.2-.4-2.6-.7-3.9-.7h-10v34h10c1.3 0 2.7-.3 3.9-.8 1.2-.5 2.3-1.2 3.2-2.1.9-.9 1.6-1.9 2.1-3.1.5-1.2.8-2.4.8-3.7v-14.7c0-1.3-.3-2.5-.8-3.7m-9.2 23.7h-5.4v-25.2h5.4c3 0 5.4 2.3 5.4 5.2v14.8c0 2.8-2.4 5.2-5.4 5.2"/><path d="m19 15h4v34h-4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f195.svg b/riot/emojione/svg/1f195.svg new file mode 100644 index 0000000..ad6466f --- /dev/null +++ b/riot/emojione/svg/1f195.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><g fill="#fff"><path d="M11,39V25h2.5l5.2,9.3V25H21v14h-2.6l-5.1-9.1V39H11z"/><path d="M25,39V25h9.8v2.4h-7.1v3.1h6.6v2.4h-6.6v3.8H35V39H25z"/><path d="M40.3,39L37,25h2.8l2.1,9.6l2.5-9.6h3.3l2.4,9.8l2.1-9.8H55l-3.3,14h-2.9L46,28.5L43.3,39H40.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f196.svg b/riot/emojione/svg/1f196.svg new file mode 100644 index 0000000..fe38c95 --- /dev/null +++ b/riot/emojione/svg/1f196.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><g fill="#fff"><path d="m44 42c-5.5 0-10-4.5-10-10 0-5.5 4.5-10 10-10 2.6 0 5 1 6.9 2.7l-2.3 2.4c-1.2-1.2-2.9-1.8-4.6-1.8-3.7 0-6.7 3-6.7 6.7 0 3.7 3 6.7 6.7 6.7 3.1 0 5.7-2.1 6.5-5h-6.5v-3.3h10v1.6c0 5.5-4.5 10-10 10"/><path d="m26.7 22v14.3l-14.3-14.3h-2.4v20h3.3v-14.3l14.3 14.3h2.4v-9-11z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f197.svg b/riot/emojione/svg/1f197.svg new file mode 100644 index 0000000..c45e4e1 --- /dev/null +++ b/riot/emojione/svg/1f197.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><g fill="#fff"><path d="m12 32.1c0-2 .3-3.6.9-5 .5-1 1.1-1.9 1.9-2.7.8-.8 1.7-1.4 2.7-1.7 1.3-.5 2.8-.8 4.4-.8 3 0 5.5.9 7.3 2.6 1.8 1.8 2.7 4.2 2.7 7.4 0 3.1-.9 5.6-2.7 7.3-1.7 1.9-4.1 2.8-7.2 2.8-3.1 0-5.5-.9-7.3-2.6-1.8-1.8-2.7-4.2-2.7-7.3m4.3-.1c0 2.2.5 3.8 1.6 5 1.1 1.1 2.4 1.7 4.1 1.7 1.7 0 3-.6 4.1-1.7 1.1-1.1 1.6-2.8 1.6-5 0-2.2-.5-3.9-1.6-5s-2.4-1.6-4.1-1.6c-1.7 0-3.1.6-4.1 1.7-1.1 1-1.6 2.7-1.6 4.9"/><path d="M34,42V22h4v8.9l8.1-8.9h5.4l-7.5,7.8L52,42h-5.2l-5.5-9.4L38,36v6H34z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f198.svg b/riot/emojione/svg/1f198.svg new file mode 100644 index 0000000..fef773a --- /dev/null +++ b/riot/emojione/svg/1f198.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><g fill="#fff"><path d="m23 34.6c-.4-.8-.9-1.5-1.5-2.1-.6-.6-1.4-1.1-2.2-1.5-.9-.4-1.7-.6-2.7-.6-1.9 0-3.9-1.9-3.9-3.7 0-2 1.7-3.6 3.7-3.6 2 0 3.9 1.6 3.9 3.6h3.2c0-.9-.2-1.8-.5-2.6-.3-.8-.8-1.5-1.5-2.2-.6-.6-1.4-1.1-2.2-1.5-.8-.4-2-.5-2.9-.5s-1.8.2-2.7.5c-.8.3-1.6.8-2.2 1.4-.6.6-1.1 1.3-1.5 2.2-.4.8-.5 1.7-.5 2.6 0 1.7.8 3.4 2.2 4.7 1.4 1.3 3.2 2.1 4.9 2.1 1.9 0 3.7 1.7 3.7 3.7 0 2-1.7 3.6-3.7 3.6-2 0-3.9-1.7-3.9-3.7h-3.1c0 .9.2 1.8.5 2.6.3.8.8 1.5 1.5 2.2.6.6 1.4 1.1 2.2 1.4.8.4 2 .6 2.9.6.9 0 1.8-.2 2.7-.5.8-.3 1.6-.8 2.2-1.5.6-.6 1.1-1.3 1.5-2.2.4-.8.5-1.7.5-2.6 0-.7-.2-1.5-.6-2.4"/><path d="m39 24.1c-.4-.8-.9-1.5-1.5-2.2s-1.4-1.1-2.2-1.5c-.9-.4-1.8-.5-2.7-.5s-1.9.2-2.7.5c-.8.3-1.6.8-2.2 1.5-.6.6-1.1 1.3-1.5 2.2-.4.8-.6 1.7-.6 2.6v10.4c0 .9.2 1.8.6 2.6.4.8.9 1.5 1.5 2.2.6.6 1.4 1.1 2.2 1.5.9.4 1.8.5 2.7.5.9 0 1.9-.2 2.7-.5.8-.3 1.6-.8 2.2-1.5.6-.6 1.1-1.3 1.5-2.2.4-.8.6-1.7.6-2.6v-10.3c0-.9-.2-1.8-.6-2.7m-6.4 16.8c-2.1 0-3.8-1.6-3.8-3.7v-10.4c0-2 1.7-3.7 3.8-3.7s3.8 1.6 3.8 3.7v10.4c-.1 2-1.8 3.7-3.8 3.7"/><path d="m55 34.6c-.4-.8-.9-1.5-1.5-2.1-.6-.6-1.4-1.1-2.2-1.5-.9-.4-1.8-.6-2.7-.6-1.9 0-3.9-1.9-3.9-3.7 0-2 1.7-3.6 3.7-3.6 2 0 3.9 1.6 3.9 3.6h3.2c0-.9-.2-1.8-.5-2.6-.3-.8-.8-1.5-1.5-2.2-.6-.6-1.4-1.1-2.2-1.5-.9-.4-2-.5-2.9-.5s-1.8.2-2.7.5c-.8.3-1.6.8-2.2 1.5-.6.6-1.1 1.3-1.5 2.2-.4.8-.5 1.7-.5 2.6 0 1.7.8 3.4 2.2 4.7 1.4 1.3 3.2 2.1 4.9 2.1 1.9 0 3.7 1.7 3.7 3.7 0 2-1.7 3.6-3.7 3.6-2 0-3.9-1.7-3.9-3.7h-3.2c0 .9.2 1.8.5 2.6.3.8.8 1.5 1.5 2.2.6.6 1.4 1.1 2.2 1.4.9.4 2 .6 2.9.6s1.8-.2 2.7-.5c.8-.3 1.6-.8 2.2-1.4.6-.6 1.1-1.3 1.5-2.2.4-.8.5-1.7.5-2.6.1-.9-.1-1.7-.5-2.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f199.svg b/riot/emojione/svg/1f199.svg new file mode 100644 index 0000000..f5bc638 --- /dev/null +++ b/riot/emojione/svg/1f199.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><g fill="#fff"><path d="m12 22h4.1v10.7c0 1.7.1 2.8.2 3.3.2.8.6 1.5 1.2 1.9.7.5 1.5.7 2.7.7 1.1 0 2-.2 2.6-.7.6-.5.9-1 1.1-1.7.1-.7.2-1.8.2-3.3v-10.9h4v10.3c0 2.4-.1 4-.3 5-.2 1-.6 1.8-1.2 2.5-.6.7-1.4 1.2-2.4 1.6-1 .4-2.3.6-3.9.6-1.9 0-3.4-.2-4.4-.7-1-.4-1.8-1-2.3-1.7-.6-.7-1-1.4-1.1-2.2-.3-1.1-.4-2.8-.4-5v-10.4z"/><path d="m31 42v-20h5.9c2.2 0 3.7.1 4.4.3 1 .3 1.9 1 2.6 2 .7 1 1.1 2.3 1.1 3.9 0 1.2-.2 2.3-.6 3.1-.4.8-.9 1.5-1.6 2-.6.5-1.3.8-1.9.9-.9.2-2.2.3-3.8.3h-2.4v7.5h-3.7m3.7-16.6v5.7h2c1.5 0 2.4-.1 2.9-.3.5-.2.9-.5 1.2-1 .3-.4.4-1 .4-1.6 0-.7-.2-1.3-.6-1.8-.4-.5-.9-.8-1.5-.9-.4-.1-1.3-.1-2.7-.1h-1.7"/><path d="m48 42v-4h4v4h-4"/><path d="m48 22h4v12h-4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f19a.svg b/riot/emojione/svg/1f19a.svg new file mode 100644 index 0000000..6d2545d --- /dev/null +++ b/riot/emojione/svg/1f19a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#eda454"/><g fill="#fff"><path d="m26.3 19.7h5.4l-8.4 24.6h-4.9l-8.4-24.6h5.5l5.4 18.7 5.4-18.7"/><path d="m38.4 36.8c.2 1.1.5 2 .9 2.5.9 1 2.3 1.5 4.4 1.5 1.2 0 2.3-.1 3-.4 1.5-.5 2.2-1.5 2.2-2.9 0-.8-.4-1.4-1.1-1.9-.7-.4-1.9-.8-3.4-1.2l-2.7-.6c-2.6-.6-4.4-1.2-5.4-1.9-1.7-1.1-2.5-2.9-2.5-5.3 0-2.2.8-4 2.4-5.5 1.6-1.5 4-2.2 7.2-2.2 2.6 0 4.9.7 6.7 2.1 1.9 1.4 2.8 3.4 2.9 6h-5c-.1-1.5-.8-2.5-2-3.2-.8-.4-1.8-.6-3.1-.6-1.4 0-2.5.3-3.3.8-.8.5-1.2 1.3-1.2 2.2 0 .9.4 1.5 1.2 2 .5.3 1.6.6 3.3 1l4.3 1c1.9.4 3.3 1 4.3 1.8 1.5 1.2 2.2 2.8 2.2 5 0 2.3-.9 4.1-2.6 5.6-1.5 1.7-3.9 2.4-7.1 2.4-3.3 0-5.8-.7-7.7-2.2-1.9-1.5-2.8-3.5-2.8-6 0 0 4.9 0 4.9 0"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1e8.svg b/riot/emojione/svg/1f1e6-1f1e8.svg new file mode 100644 index 0000000..23d7009 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><defs><linearGradient id="4" gradientUnits="userSpaceOnUse" x1="-1706.4161" x2="-1705.4159" gradientTransform="matrix(1.972-1.9014-2.3361-1.2306 7188.126-1233.3759)"><stop stop-color="#288549"/><stop offset="1" stop-color="#288549"/></linearGradient><linearGradient id="5" gradientUnits="userSpaceOnUse" x1="-1426.4875" x2="-1425.4875" gradientTransform="matrix(4.2109 1.6428-2.7757 3.3581 11406.1465-4099.3735)"><stop stop-color="#288549"/><stop offset="1" stop-color="#288549"/></linearGradient><linearGradient id="3" gradientUnits="userSpaceOnUse" x1="-1740.8667" x2="-1739.8663" gradientTransform="matrix(-.6286-2.665-2.2494 1.3805 3029.9341-7118.667)"><stop stop-color="#288549"/><stop offset="1" stop-color="#288549"/></linearGradient><linearGradient id="1" gradientUnits="userSpaceOnUse" x1="47.5603" x2="52.9101" gradientTransform="matrix(1 0 0-1 0 66)"><stop stop-color="#288549"/><stop offset="1" stop-color="#288549"/></linearGradient><linearGradient id="0" gradientUnits="userSpaceOnUse" x1="-1458.5909" x2="-1457.5909" gradientTransform="matrix(4.7034 4.7034-4.7034 4.7034 15636.8662-1834.8796)"><stop stop-color="#288549"/><stop offset="1" stop-color="#288549"/></linearGradient><linearGradient id="2" gradientUnits="userSpaceOnUse" x1="-1618.0094" x2="-1617.0095" gradientTransform="matrix(1.1995-5.0853 4.2924 2.6342-5986.9429-13088.627)"><stop stop-color="#288549"/><stop offset="1" stop-color="#288549"/></linearGradient></defs><path fill="#2a5f9e" d="m11.9 12h20.8v20.8h-20.8z"/><path fill="#fff" d="m18.8 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m31.9 2v30h-30c0 16.6 13.4 30 30 30s30-13.4 30-30-13.5-30-30-30" fill="#2a5f9e"/><path d="m10.9 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m31.9 27.1l-13-16.1h-6l17 21h2z"/><path d="m18.8 5v6h-7.9v3h21v-12c-4.7 0-9.2 1.1-13.1 3" fill="#fff"/><path d="m31.9 5h-13.1c-6.1 2.9-11 7.9-13.9 13.9v13.1h6v-21h21c0 0 0-6 0-6" fill="#ed4c5c"/><g fill="#fff"><path d="m49.9 27.9c.6-1.5 1.9-2.4 3-2 .3.1.6.3.7.6-.1-.9-.5-1.7-1.2-2-1.1-.4-2.5.5-3 2-.4 1.1-.3 2.2.2 2.9.1-.4.1-.9.3-1.5"/><path d="m42.1 24.5c-1.1-.4-2.4.5-3 2-.3.7-.3 1.3-.2 1.9-.5.4-1.2.6-2 .7-.6 0-1.1 0-1.5-.2.5.7 1.6 1.1 2.7 1.1 1.6-.1 2.9-1.1 2.8-2.3 0-.4-.2-.8-.5-1.1.6-.6 1.5-.9 2.2-.7.3.1.6.3.7.6 0-1-.5-1.7-1.2-2"/><path d="m59.6 27.6c-1-1.1-2.3-1.4-2.9-.5-.2.2-.3.5-.3.8-.3-.9-.2-1.7.2-2.3.7-.8 2-.6 2.9.5.7.8 1 1.9.9 2.7-.2-.4-.5-.9-.8-1.2"/><path d="m36.2 27.1c.5-1.1.2-2.2-.6-2.4-.2-.1-.5 0-.8 0 .5-.5 1.2-.8 1.8-.6.9.2 1.1 1.3.6 2.4-.4.8-1.1 1.4-1.8 1.6.4-.2.7-.6.8-1"/></g><path d="m42.6 31.8c0 0 .1 5.1.1 5.5.1.5.4 3.4 4.5 5.1 0 0 3.2-1.4 4-3.3.8-1.9.7-5.5.7-5.5v-2l-9.3.2"/><path d="m43 32.2c0 0 .1 4.7.1 5.1.1.4.3 3.1 4.2 4.7 0 0 3-1.3 3.8-3 .8-1.8.6-5.1.6-5.1v-1.8l-8.7.1" fill="#fff"/><g fill="#1b81b6"><path d="m51.7 33.7l-1.2-.4-1.6.7-1.6-.5-1.4.5-1.7-.7-1.2.5v1.6l1.2-.5 1.7.7 1.4-.5 1.6.5 1.6-.7 1.3.4-.1-1.6"/><path d="m43.9 39.4c.1 0 2.1.6 2.1.6l1.4-.6 1.6.6c0 0 1.8-.7 2-.7.5.1-2.7 2.7-3.6 2.7-.8.1-4-2.4-3.5-2.6"/><path d="m51.4 38c-.2-.1-1-.3-1-.3l-1.5.7-1.6-.6-1.4.6-1.6-.7c0 0-.8.2-1 .4-.1.1-.2-1.2-.2-1.2l1.2-.5 1.6.7 1.4-.6 1.6.6 1.5-.7 1.3.4c-.1 0-.2 1.3-.3 1.2"/></g><path d="m50.7 39.7l-.1.1.1-.1m-3.2-5.5l-4.1 4.4c.2.4.4.8.7 1.3l3.4-3.5 3.2 3.4c.3-.4.6-.9.7-1.4l-3.9-4.2" fill="url(#0)"/><path d="m44.6 28.3l.6 1.4h4.2l.6-1.4-2.7-6.4z"/><path fill="#7ed16d" d="m44.8 28.1l.6 1.4h3.8l.5-1.4-2.4-5.7z"/><path fill="#93695a" d="m44.1 26.9l2.1 2.6 2.6-.1.5-1.8-1.8-.1-1.2.6z"/><path d="m47.1 29.1l-3.2.9 1.5 1.8v1.7l1.6-.2c0 0 .8-1.5.9-1.5.1 0 1.5.5 1.5.5l.3-.8 1.8-.6-3.1-.9.1-.8-1.4-.1" fill="#6baaa7"/><path d="m51.9 29.8c-.6.3-1.2.5-1.8.4.7-.1 1.4-.7 1.6-1.4.2-.8 0-1.6-.6-2.1.1.4.1.7 0 1.1-.3 1.1-1.5 1.9-2.6 1.4-.5-.2-.6-.9-.6-1.2-.3.7-.4 1.5 0 2.2-.1.1-.1.2-.2.3-.4 1 .1 2.1 1.1 2.4.7.3 1.5.1 2-.4-.3.1-.7 0-1-.1-.6-.2-1-.7-1.1-1.2.9.7 2.1.8 3.1.2.9-.6 1.3-1.6 1.2-2.6-.3.3-.6.7-1.1 1" fill="url(#1)"/><path d="m42.6 25.9c.5 1.5.1 3.1-1 3.5-.3.1-.6.1-.9 0 .6.7 1.5 1 2.2.7 1.1-.4 1.6-1.9 1-3.5-.4-1.1-1.2-1.9-2-2.1.2.4.5.9.7 1.4" fill="url(#2)"/><path d="m36.1 27.2c-.3.8 0 1.6.5 1.8.2.1.3.1.5 0-.3.4-.8.5-1.1.4-.6-.2-.8-1-.5-1.8.2-.6.6-1 1.1-1.1-.3.2-.4.4-.5.7" fill="url(#3)"/><path d="m58 25.4c-.8.2-1.4.8-1.3 1.4 0 .2.1.3.2.4-.5-.1-.8-.4-.9-.8-.1-.6.5-1.2 1.3-1.4.6-.1 1.2 0 1.5.4-.2 0-.5 0-.8 0" fill="url(#4)"/><path d="m55.9 27.5c-1.3.3-2.5-.4-2.7-1.5-.1-.3 0-.6.1-.9-.6.5-1 1.3-.8 2.1.2 1.1 1.4 1.8 2.7 1.5.9-.2 1.7-.9 1.9-1.7-.3.1-.7.3-1.2.5" fill="url(#5)"/><path d="m36.1 43.3c-1.3-.5 2.9-2.7 4.7-2.6 1.4.1 4.2 2.5 3.2 2.8-4.9 1.3-4.8 1-7.9-.2" fill="#74948f"/><path d="m40.6 31.8c.1-.4.5-1.2.8-1.5.3-.3 1.1-.6 1.5-.5.3 0 1 .4.9.6h-.3c-.3.1-.4.9-.6 1.2-.2.2-.8.3-.9.5-.1.2.1 1 .1 1l-1.5.1c0 0-.1-1 0-1.4" fill="#e5c9bd"/><path d="m41 36.9c0 .1.7 1.8.9 2.5.3 1.2-1.6 3.3-1.5 2.3.2-1.3-.5-2.6-.5-2.6l1.1-2.2" fill="#c6a397"/><g fill="#e5c9bd"><path d="m40.5 37.9c-.1.1.1 1.9.1 2.6-.1 1.3-2.5 2.6-2.1 1.7.6-1.2.3-2.6.3-2.6l1.7-1.7"/><path d="m41.5 33.3c0 .1 1.6 1.1 2.1 1.5.9.9.5 3.6.1 2.7-.6-1.2-1.8-1.9-1.8-1.9l-.4-2.3"/></g><path d="m41 32.4c-1.2.1-2.9 2.5-3.4 3.6-.5 1.2-1.2 5-.5 5.2.9.3 3.9-2 4.6-3.3.6-1 .9-3.6.4-4.7 0-.2-.7-.8-1.1-.8" fill="#d66b3c"/><path d="m58.6 43.3c1.3-.5-2.9-2.7-4.7-2.6-1.4.1-4.2 2.5-3.2 2.8 4.9 1.3 4.7 1 7.9-.2" fill="#74948f"/><path d="m54.1 31.8c-.1-.4-.5-1.2-.8-1.5-.3-.3-1.1-.6-1.5-.5-.3 0-1 .4-.9.6h.3c.3.1.4.9.6 1.2.2.2.8.3.9.5.1.2-.1 1-.1 1l1.5.1c-.1 0 .1-1 0-1.4" fill="#e5c9bd"/><path d="m53.7 36.9c0 .1-.7 1.8-.9 2.5-.3 1.2 1.6 3.3 1.5 2.3-.2-1.3.5-2.6.5-2.6l-1.1-2.2" fill="#c6a397"/><g fill="#e5c9bd"><path d="m54.2 37.9c.1.1-.1 1.9-.1 2.6.1 1.3 2.5 2.6 2.1 1.7-.6-1.2-.3-2.6-.3-2.6l-1.7-1.7"/><path d="m53.2 33.3c0 .1-1.6 1.1-2.1 1.5-.9.9-.5 3.6-.1 2.7.6-1.2 1.8-1.9 1.8-1.9l.4-2.3"/></g><path d="m53.7 32.4c1.2.1 2.9 2.5 3.4 3.6.5 1.2 1.2 5 .5 5.2-.9.3-3.9-2-4.6-3.3-.6-1-.9-3.6-.4-4.7 0-.2.7-.8 1.1-.8" fill="#d66b3c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1e9.svg b/riot/emojione/svg/1f1e6-1f1e9.svg new file mode 100644 index 0000000..0340b9d --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 32c0 11.5 6.5 21.5 16 26.5v-53c-9.5 5-16 15-16 26.5" fill="#2a5f9e"/><path d="m62 32c0-11.5-6.5-21.5-16-26.5v53.1c9.5-5.1 16-15.1 16-26.6" fill="#c94747"/><path d="M32,2c-5.1,0-9.8,1.3-14,3.5v53.1c4.2,2.2,8.9,3.5,14,3.5s9.8-1.3,14-3.5V5.5C41.8,3.3,37.1,2,32,2z" fill="#ffe62e"/><path d="m29.2 17c1.2 0 2 1.2 3.3.9 1-.2 2.5-1.7 3.3-.3.3.5.2 1.1 0 1.7-.2.5-.7 1.2-.2 1.6.7.6 2.2.4 2.9-.3-.6 0-1-.7-.5-1.1.2-.2.4-.1.6-.2.1 0 .2-.2.3-.3.1-.1.2-.1.4-.1.2 0 .4.2.5.2.2 0 .6-.3.8.1.1.2.3.1.5 0 .3-.1.6.1.8.3.2.2.3.2.6.3.2.1.3.5.5.5.7.3.7.8.4 1.5-.4.9-2.5 2-1.7 3.2-.1-.8 1.1-.4.8.3 1.6-1 3.3 1.2 3.3 2.6 0 1.4-.6 2.5-2 2.8.4.2.8.6.5 1.1-.1.2-.3.3-.6.3-.4 0-.5-.3-.7.1-.5.8-.2 2.1.5 2.7.2-.3.7-.6 1-.2.2.2.2.7.4.9.2.3.4.6.1 1-.3.4-.6.2-1 .3.9.9 1.3 1.8.9 3.1-.3 1.2-1.3 2.1-2.5 2.6-1.2.4-2.5.5-3.8.5-1.3.1-2.6.1-3.5 1 .4.3.7.7.5 1.2-.1.2-.2.3-.4.5-.2.1-.5.1-.7.3-.3.5-1.1.3-1.4 0-.2-.2-.3.1-.5.3-.2.2-.5.5-.7.5-.2 0-.5-.2-.6-.4-.2-.2-.4-.5-.7-.4-.4.2-1.1.4-1.4 0 0-.1-.2 0-.4-.1-.2-.1-.4-.3-.5-.6-.2-.5.1-1 .6-1.2-.9-.9-2.1-.9-3.3-1-1.3-.1-2.8 0-4-.6-1-.5-1.9-1.2-2.4-2.2-.5-1.2-.3-2.4.7-3.3-.4-.1-.8-.1-1-.5-.2-.5.2-.7.2-1.1 0-.3.4-.7.6-.8.2-.1.5 0 .6.2.2.2.3 0 .5-.2.4-.7.7-1.9 0-2.6-.8.7-1.8-.9-.8-1.4-.3-.2-.7-.3-.9-.6-.2-.2-.4-.5-.6-.8-.4-.7-.4-1.5-.2-2.2.2-.7.6-1.4 1.2-1.8.7-.4 1.2-.3 1.9-.1-.1 0 .1-.6.2-.7.3-.3.6 0 .7.3.6-1.1-1.5-2.2-1.9-3.1-.2-.4-.3-1.4.4-1.4.2 0 .3-.3.5-.5.1-.1.3-.1.5-.2.1-.1.2-.2.3-.3.2-.2.5-.2.7-.2.4 0 .2.1.5 0 .3-.1.5 0 .7 0 .2 0 .3-.3.7-.2.3.1.3.3.5.4.2.1.4.1.6.3.5.5.1 1-.4 1.2.5.4 1.1.6 1.8.5.5 0 1.4-.3 1.2-1-.2-.8-.6-1.3-.5-2.1.2-.8.7-1.2 1.3-1.2" fill="#c7b37f"/><path fill="#c94747" d="m24 23.9h7.6v7.6h-7.6z"/><g fill="#fff"><path d="m27.5 29.9c0 0 0 .3-.1.5-.1.3-.1.3-.2.4-.1.2-.2.3-.4.4-.2.1-.4.2-.6.2-.5 0-.7-.6-.9-1-.1-.5-.5-.7-.7-.6-.1.1-.1.3 0 .4.1.2.4.3.4.3l-.3.3c0 0-.6-.1-.7-.7 0-.2.1-.7.5-.8.5-.2.8.2 1 .5.2.4.3 1.2.9 1 .3-.1.5-.5.5-.7l.2-.2h.4"/><path d="m28 29.9c0 0 0 .3.1.5.1.3.1.3.2.4.1.2.2.3.4.4.2.1.4.2.6.2.5 0 .7-.6.9-1 .1-.5.5-.7.7-.6.1.1.1.3 0 .4-.1.2-.4.3-.4.3l.3.3c0 0 .6-.1.7-.7 0-.2-.1-.7-.5-.8-.5-.2-.8.2-1 .5-.2.4-.3 1.2-.9 1-.3-.1-.5-.5-.5-.7l-.2-.2h-.4"/></g><path d="m28.5 26.7c.3-.3 1.2-.9 1.1-1.4-.5-.1 0-.2.1-.5-.1 0-.2 0-.3 0 .1-.4 1-.7 1.5-.6 1 .4.3 2-.5 1.3.1-.4.7-.2.6-.6 0-.3-.4-.5-.7-.4-.4.3-.1.9-.5 1.2-.3.5-.9 1-1.3 1.4-1.2 1.3-2.5 2.7-3.7 4-.7-.4 1.1-1.8 1.4-2.1.7-.6 1.5-1.5 2.3-2.3" fill="#ffce31"/><path d="m25.5 27.1c0 0 .2 1.2 1.1 3.1.4-.2.7-.3 1.1-.3s.7.1 1.1.3c.9-1.9 1.1-3.1 1.1-3.1l-2.2-2.9-2.2 2.9" fill="#fff"/><g fill="#ffce31"><path d="m28 25.2l1.6 2c0 0-.2 1-.8 2.4-.2-.1-.5-.1-.7-.1l-.1-4.3"/><path d="m27.5 25.2l-1.6 2c0 0 .2 1 .8 2.4.2-.1.5-.1.7-.1l.1-4.3"/><path d="m32.4 23.9h7.6v7.6h-7.6z"/></g><g fill="#c94747"><path d="m33.5 23.9h1.1v7.6h-1.1z"/><path d="m35.6 23.9h1.1v7.6h-1.1z"/><path d="m37.8 23.9h1.1v7.6h-1.1z"/></g><path d="m24 38.2c0 .1.1.4.2.6.1.2.1.2.4.6.2.2.4.3.6.4.2.1.3.2.6.2.6.2 1 .2 1.5.1.4 0 .7-.1 1-.1.4 0 .6-.1 1-.1.2 0 .4 0 .6 0 .2 0 .4 0 .7.1.5.1 1 .3 1 .3v-8h-7.6v5.4.5" fill="#ffce31"/><g fill="#c94747"><path d="m24.9 39.6l.3.2.5.1v-7.5h-.8z"/><path d="m29.1 39.9v-7.5h-.8v7.6c0 0 .5-.1.8-.1"/><path d="m30.8 32.4h-.8v7.6c.3 0 .6.1.8.2v-7.8"/><path d="m27.4 32.4v7.7c0 0-.6 0-.9 0v-7.7h.9"/></g><path d="m40 38.2c0 .1-.1.4-.2.6-.1.2-.1.2-.4.6-.2.2-.4.3-.6.4-.2.1-.3.2-.6.2-.6.2-1 .2-1.5.1-.4 0-.7-.1-1-.1-.4 0-.6-.1-1-.1-.2 0-.4 0-.6 0-.2 0-.4 0-.7.1-.5.1-1 .3-1 .3v-8h7.6v5.4.5" fill="#ffce31"/><g fill="#c94747"><path d="m34.3 33c-.3.2-.4.5-.7.7.2.4.6.3.9.5.2 0 .4.6.4.7-.3.3.1 1.2.2.9.1-.3-.4-.9.3-.7.2.1.3.8.1 1 .1.3.4.1.4-.2-.1-.5 0-.8.5-.8.6 0 .5.2.8.2h.3l.2-.2c0 .3-.4.7-.6.9.4.2 1-.6 1-.9.4.2.1.9-.1 1.1 1 .2.1-1.8.4-2 .9-.5-.5-.8-.9-.8-.8 0-1.9.4-2.6.1.2-.1.2-.2.3-.3-.2-.2-.6 0-.9-.2"/><path d="m34.3 36.4c-.3.2-.4.5-.7.7.2.4.6.3.9.5.2 0 .4.6.4.7-.3.3.1 1.2.2.9.1-.3-.4-.9.3-.7.2.1.3.8.1 1 .1.3.4.1.4-.2-.1-.5 0-.8.5-.8.6 0 .5.2.8.2h.3l.2-.2c0 .3-.4.7-.6.9.4.2 1-.6 1-.9.4.2.1.9-.1 1.1 1 .2.1-1.8.4-2 .9-.5-.5-.8-.9-.8-.8 0-1.9.4-2.6.1.2-.1.2-.2.3-.3-.2-.2-.6 0-.9-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1ea.svg b/riot/emojione/svg/1f1e6-1f1ea.svg new file mode 100644 index 0000000..6610e89 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#ed4c5c"/><path d="M32,2c-3.5,0-6.9,0.6-10,1.7V22h38.3C56.2,10.4,45.1,2,32,2z" fill="#699635"/><path d="m60.3 22h-38.3v20h38.3c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#f9f9f9"/><path d="M22,42v18.3c3.1,1.1,6.5,1.7,10,1.7c13.1,0,24.2-8.3,28.3-20H22z" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1eb.svg b/riot/emojione/svg/1f1e6-1f1eb.svg new file mode 100644 index 0000000..e1998a6 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 32c0 11.5 6.5 21.5 16 26.5v-53c-9.5 5-16 15-16 26.5" fill="#3e4347"/><path d="m62 32c0-11.5-6.5-21.5-16-26.5v53.1c9.5-5.1 16-15.1 16-26.6" fill="#699635"/><path d="M32,2c-5.1,0-9.8,1.3-14,3.5v53.1c4.2,2.2,8.9,3.5,14,3.5c5.1,0,9.8-1.3,14-3.5V5.5C41.8,3.3,37.1,2,32,2z" fill="#ed4c5c"/><g fill="#fff"><path d="m35.8 37h-1.1c0 .5-.1.9-.4 1.2h2.2c-.4-.3-.7-.8-.7-1.2"/><path d="m35.9 30.8l.6-.7h-2l-1-.7-3.1-.1-.9.8h-2l.6.7z"/><path d="m30.6 29.2h2.7c.4-.2.5-.9.5-1.2 0-1.1-.7-1.6-1.4-1.6-.1 0-.2-.1-.3-.2-.1-.2-.1-.4-.1-.4-.1 0 0 .1-.1.4 0 .1-.1.2-.3.2-.9 0-1.5.7-1.4 1.6 0 .6.1 1 .4 1.2"/><path d="m34.5 37.4l-.5-.3v-.6l-.3-.2v-.6l-.5-.2v-.5l-.4-.1v-.5l-.6-.2-.3-.2v-.4h-2v-.3c0-1 1.3-1.9 2.1-1.9 1 0 2.1.9 2.1 1.9v1h.1v-1c0-.9-1.1-2-2.1-2h3.6v-.1h-7.6v.1h3.6c-.6 0-2.1.7-2.1 2v3.6h.8v.7h-1c-.1 0-.2-.2-.2-.4h-1c0 .5-.3.9-.7 1.3h3v-.8h.8l.2.8h.7l-.3-.8h.7l.5.8h1l-.7-.8c0-.3 1.1-.3 1.1-.3m-4-1.3h.6l.1.7h-.7v-.7m1.4 1.3h-.6l-.1-.7h.5l-.2-.7h.1.1.1l.4.7h-.5l.2.7m.7 0l-.4-.7h.6l.6.7h-.8"/><path d="m34.1 34.7h.1v1h-.1z"/><path d="m28.3 35.8h1.1v-1.3h-1.1v.3l-2.2-3.8.1-.2c0-.2-.1-.3-.3-.3-.2 0-.3.1-.3.3s.1.3.3.3h.1l.1.1c-.2 0-.4.5-.9.9-.3.2-.5.9-.6 1.3 0 .1 0 .2 0 .3v.1c0 .2 0 .3 0 .5 0 .2-.2.6-.1.7.3.2.7.8.9 1 .1.1.3-.6.4-1.1v-.1c.1-.4.1-.9.4-1.2l.1-.1c.2-.2.6-.4.8-.6l1.3 2.3-.1.6"/><path d="m28.3 27.3h1v.2h-1z"/><path d="m28.3 27.7h1v2h-1z"/><path d="m28.8 26.2c-.2 0-.6.4-.5.8h1.1c0-.4-.4-.8-.6-.8"/><path d="m28.2 31.4h1.1v1.6h-1.1z"/><path d="m28.3 33.9h1.1v.3h-1.1z"/><path d="m28.2 36h1.2v.7h-1.2z"/><path d="m28.3 33.6h1l.2-.3h-1.3z"/><path d="m30.3 31.5h-.7v.9c.2-.4.4-.7.7-.9"/><path d="m39.5 33.8v-.1.1c0-.2 0-.3 0-.4 0-.4-.2-1-.6-1.3-.5-.4-.8-.9-.9-.9l.1-.1h.1c.2 0 .3-.1.3-.3s-.1-.3-.3-.3c-.2 0-.3.1-.3.3l.1.2-2.1 3.8v-.3h-1.1v1.3h1.1v-.7l1.3-2.3c.1.1.6.3.8.6l.1.1c.3.4.2.8.3 1.2v.1c.1.4.2 1.2.4 1.1.2-.2.6-.7.9-1 .1-.1-.1-.5-.1-.7-.2-.1-.1-.2-.1-.4"/><path d="m34.8 27.3h1v.2h-1z"/><path d="m34.8 27.7h1v2h-1z"/><path d="m35.8 27c0-.4-.3-.8-.5-.8-.2 0-.6.4-.5.8h1"/><path d="m34.7 31.4h1.1v1.6h-1.1z"/><path d="m34.7 33.9h1.1v.3h-1.1z"/><path d="m34.7 36h1.2v.7h-1.2z"/><path d="m34.5 33.3l.2.3h1l.2-.3z"/><path d="m34.4 32.4v-.9h-.7c.3.2.5.5.7.9"/><path d="m42.6 33.2c.4-.2.9-.5 1.2-.8.3-.5.2-1.4.2-1.4s-.7.3-1.3.6c0-.4-.2-.9-.4-1.3.3-.3.8-.7.9-1 .3-.6-.1-1.4-.1-1.4s-.6.4-1.1.9c-.1-.4-.4-.8-.7-1.2.2-.4.6-.9.6-1.2.1-.7-.5-1.4-.5-1.4s-.5.6-.8 1.2c-.3-.4-.8-.9-1.2-1.2.2-.3.2-.6.2-1 0-2.2-3.4-4-7.7-4-4.2 0-7.7 1.8-7.7 4 0 .3.1.7.2 1-.4.3-.9.7-1.2 1.2-.3-.6-.8-1.2-.8-1.2s-.6.7-.5 1.4c.1.4.4.9.6 1.2-.3.4-.6.8-.7 1.2-.4-.5-1.1-.9-1.1-.9s-.4.8-.1 1.4c.2.4.6.8.9 1-.2.4-.3.9-.4 1.3-.3-.3-1.1-.6-1.1-.6s-.2.9.2 1.4c.2.3.8.6 1.2.8-.1.4-.1 1 0 1.4-.6-.2-1.4-.3-1.4-.3s.1.9.6 1.3c.3.2.9.4 1.3.4.1.4.2 1 .4 1.3-.6-.1-1.4.1-1.4.1s.3.9.9 1.1c.4.1 1 .1 1.4.1.2.4.4.9.7 1.2-.6.1-1.3.4-1.3.4s.5.8 1.2.8c.4 0 1-.1 1.4-.3.3.4.6.7 1 1-.6.3-1.2.8-1.2.8s.7.6 1.4.5c.2 0 .3-.1.5-.2l-.9 1.2h12l-.8-.9c.2.1.3.1.5.2.7.1 1.4-.5 1.4-.5s-.6-.5-1.2-.8c.4-.2.7-.6 1-1 .4.2 1 .3 1.4.3.7-.1 1.2-.8 1.2-.8s-.7-.3-1.3-.4c.3-.3.5-.8.7-1.2.4 0 1 .1 1.4-.1.6-.3.9-1.1.9-1.1s-.8-.1-1.4-.1c.2-.4.3-.9.4-1.3.4-.1 1-.2 1.3-.4.5-.4.6-1.3.6-1.3s-.8.1-1.4.3c0-.7-.1-1.2-.1-1.7m-15.7 7.6c-.3-.2-.7-.4-1.1-.5.1-.3.3-.6.4-.9h.9c0 .3-.2.9-.2 1.4m8.9-.4c-.1.3-.1.7 0 1.1l-.6-.7h-6.5l-.6.7c.1-.4.1-.8 0-1.1-.1-.5-.6-.8-.9-.9h9.4c-.2.1-.6.4-.8.9m1.3.4c0-.5-.2-1.1-.2-1.4h.9c.1.3.3.7.4.9-.4.2-.8.3-1.1.5m4.1-6.4c-.5-.4-1.2-.9-1.2-.9s-.3.9 0 1.5c.2.4.8.8 1.1 1-.3.3-.5.6-.7.9-.3-.6-.9-1.2-.9-1.2s-.5.8-.4 1.4c.1.4.5.9.8 1.3-.3.2-.7.4-.9.7-.2-.6-.6-1.4-.6-1.4s-.7.6-.7 1.3c0 .1 0 .3.1.5l-1-.9h-9.5l-1 .9c0-.2.1-.3.1-.5 0-.7-.7-1.3-.7-1.3s-.4.7-.6 1.4c-.2-.3-.6-.5-.9-.7.3-.3.7-.8.8-1.3.2-.7-.4-1.4-.4-1.4s-.6.6-.9 1.2c-.2-.3-.4-.6-.7-.9.4-.2.9-.6 1.1-1 .3-.6 0-1.5 0-1.5s-.8.4-1.2.9c-.1-.3-.2-.7-.4-1 .4-.1 1-.4 1.3-.7.5-.5.4-1.4.4-1.4s-.8.2-1.4.5c0-.3 0-.7-.1-1.1.4 0 1.1-.1 1.5-.3.6-.4.7-1.3.7-1.3s-.9 0-1.5.2c.1-.3.1-.7.2-1.1.4.1 1.1.2 1.5.1.7-.2 1-1 1-1s-.8-.2-1.5-.2c.5-.8.7-2.3.7-2.3s-.1 0-.2.1c1.2-1.4 3.9-2.4 7-2.4s5.8 1 7 2.4c-.1-.1-.2-.1-.2-.1s.2 1.5.7 2.3c-.7 0-1.5.2-1.5.2s.4.8 1 1c.4.1 1.1 0 1.5-.1 0 .4 0 .8.2 1.1-.6-.2-1.5-.2-1.5-.2s.2.9.7 1.3c.4.2 1 .3 1.5.3-.1.4-.2.8-.1 1.1-.6-.3-1.4-.5-1.4-.5s-.1.9.4 1.4c.3.3.9.5 1.3.7-.2.3-.4.6-.5 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1ec.svg b/riot/emojione/svg/1f1e6-1f1ec.svg new file mode 100644 index 0000000..0bcf4eb --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m56 14h-48c-3.8 5-6 11.2-6 18 0 16.6 13.4 30 30 30s30-13.4 30-30c0-6.8-2.2-13-6-18" fill="#ed4c5c"/><path fill="#42ade2" d="m20.5 39h23l7-14h-37z" id="0"/><use xlink:href="#0"/><path d="M50.5,25L56,14C50.5,6.7,41.8,2,32,2S13.5,6.7,8,14l5.5,11H50.5z" fill="#3e4347"/><path fill="#fff" d="M20.5 39 32 62 43.5 39z"/><path fill="#ffce31" d="m36.2 22.2l5-6.4-6.4 5.1 2.2-7.9-4 7.1-.9-8.1-1.1 8.1-3.9-7.1 2.1 7.8-6.4-5 5.1 6.4-7.9-2.2 7.1 4-8.1.9.4.1h25.2l-7.7-1 7.1-3.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1ee.svg b/riot/emojione/svg/1f1e6-1f1ee.svg new file mode 100644 index 0000000..c117d60 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m12 12h20.4v20.4h-20.4z"/><path fill="#fff" d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#2a5f9e"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m50 33.4c-1.6 0-3-1.4-3-1.4s-1.4 1.4-3 1.4c-1.5 0-4-1.4-4-1.4s.4 8.8 2 11.8c1.8 3.2 5 6.2 5 6.2s3.2-3 5-6.2c1.6-3 2-11.8 2-11.8s-2.5 1.4-4 1.4" fill="#fff"/><path d="m42.9 43.3c1.2 2.1 3.1 4.3 4.1 5.3 1-1 2.9-3.2 4.1-5.3h-8.2" fill="#b4d7ee"/><g fill="#ff8736"><path d="m47 35.5c-.9 1-.4 3.6-1.3 2.7-.9-1-.9-2.5 0-3.5.9-1 2.4-1 3.3 0 .9 1-1.1-.1-2 .8"/><path d="m44.8 40c1.3.3 3.2-1.5 2.9-.2-.3 1.3-1.6 2.1-2.9 1.7-1.3-.3-2-1.7-1.7-3 .3-1.3.4 1.1 1.7 1.5"/><path d="m49.6 39.7c-.3-1.3-2.8-2.1-1.6-2.5 1.3-.3 2.6.4 2.9 1.7.3 1.3-.4 2.6-1.7 3-1.2.4.7-.9.4-2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1f1.svg b/riot/emojione/svg/1f1e6-1f1f1.svg new file mode 100644 index 0000000..62c373c --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f42f4c"/><path d="m48.9 41.9c-.9-1.6-3.4-.4-4.7-.4.7-.6 2.5-1.9 3.5-1.9-.7-.6-2-.1-2.5.5-1.8 2.1-2.9 1-5.5.2 2.1-2.2-6-3.8-3.4-5.6.5-.4 1.4 3.1 2.8 2.5.6-.2-2.3-2.5-.8-3 .5-.2 2.5 5.7 3.9 3.3.5-.9-3.1-1.7-2.1-3.5-.7 1.3 8.8 6.2 7.6 3-.6-1.5-6.4-.4-5.9-4.3-.1 1 6.7 4.2 6 1.3-.2-.7-6.9-.2-5.7-3.4.2-.5 5.9 3.9 5.7.7-.1-1.2-6.1-.3-5.5-2.9 0-.1 6.2 2.6 5.5-.2-.1-.4-6.9.4-5.6-2-.6 1.1 8.1.6 5.5-1.6-.9-.7-4.7 2.7-5.5-.3.1.4 7.5-.6 5.4-2.7-.5-.6-5.2 3.1-5.3.7 0-.5 6.2-3.4 5.3-4.9-1.1-1.8-7.2 3.2-7.9 3.5-4.7 2.2 0 .9-2.3 3.7-1.4 1.6-2.5-.9-2.1-2 .8-2.3 5.6-2 5.8-3.5-.7.5-1.4.4-2 0 .1 0 5.1-.7 3.4-1.4-.2-.1-.8.3-1.4.6.1-2.4-6.4-.6-7.1-.5 2.7 2.3-2.2 1 .6 2.2-.7.1-1.3.4-1.9.9 1.3.1-.7 1.6-.7 1.6s-2-1.4-.8-1.7c-.5-.5-1.2-.8-1.9-.9 2.8-1.2-2.1.1.6-2.2-.6 0-7.2-1.9-7.1.5-.6-.3-1.2-.6-1.4-.6-1.6.7 3.3 1.4 3.4 1.4-.6.5-1.3.5-2 0 .2 1.5 5 1.2 5.8 3.5.4 1.1-.7 3.6-2.1 2-2.4-2.8 2.3-1.5-2.3-3.7-.7-.3-6.8-5.3-7.9-3.5-.9 1.5 5.3 4.4 5.3 4.9-.2 2.4-4.8-1.3-5.3-.7-2.1 2.1 5.3 3.1 5.4 2.7-.7 3-4.6-.4-5.5.3-2.6 2.1 6.1 2.7 5.5 1.6 1.2 2.3-5.5 1.6-5.6 2-.7 2.8 5.5.1 5.5.2.6 2.7-5.4 1.7-5.5 2.9-.2 3.2 5.5-1.1 5.7-.7 1.2 3.2-5.5 2.7-5.7 3.4-.8 3 6.1-.2 6-1.3.5 3.9-5.3 2.8-5.9 4.3-1.2 3.2 8.3-1.7 7.6-3 1 1.8-2.6 2.6-2.1 3.5 1.4 2.4 3.4-3.5 3.9-3.3 1.5.5-1.4 2.8-.8 3 1.4.6 2.3-2.9 2.8-2.5 2.6 1.8-5.5 3.4-3.4 5.6-2.6.8-3.8 1.9-5.5-.2-.5-.6-1.9-1-2.5-.5 1 0 2.8 1.4 3.5 1.9-1.3 0-3.8-1.2-4.7.4 1.1-.5 3.6 0 4.7.1-1.2 1-3.4.3-3 2.8.6-2 6.6-3.5 7.3-.7.7-1.3-2.1-2-2.7-2.2.4-.1 5.1-.1 5.1-.1s2.6-5.1 3.8-3.9c2.8 3-4.6 4.7-4.9 5.3-.8 1.9 3.8.2 3.6.1 1.2 1.1-3 2.1-3 2.4.1 2.1 3.5-.8 3.7-.8 1.6.4-2.3 2.8-2.2 2.5-.3 2.2 3.4-.7 3.3-1.2.4.6.4 1.1-.1 1.8-1.3 2.3-.1 2.6 1.4 5 1.5-2.4 2.7-2.6 1.4-5-.4-.6-.4-1.2-.1-1.8-.1.5 3.7 3.4 3.3 1.2 0 .3-3.9-2.2-2.2-2.5.2 0 3.6 2.9 3.7.8 0-.4-4.3-1.3-3-2.4-.1.1 4.4 1.9 3.6-.1-.2-.6-7.7-2.2-4.9-5.3 1.2-1.3 3.8 3.9 3.8 3.9s4.7 0 5.1.1c-.6.2-3.5.9-2.7 2.2.7-2.9 6.7-1.3 7.3.7.4-2.5-1.8-1.7-3-2.8 1 0 3.5-.5 4.6 0m-7.9-23.6c-.6.3-1.2.5-1.6.4.3-.5 1.1-1 1.6-.4m-3.2-.4c1 .2 1 .5 0 .7-1-.3-1-.5 0-.7m-14.8.4c.5-.6 1.3-.1 1.6.4-.4.1-1-.1-1.6-.4m3.2.3c-1-.3-1-.5 0-.7 1 .2 1 .4 0 .7" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1f2.svg b/riot/emojione/svg/1f1e6-1f1f2.svg new file mode 100644 index 0000000..619935b --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ed4c5c"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#f2b200"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#2a5f9e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1f4.svg b/riot/emojione/svg/1f1e6-1f1f4.svg new file mode 100644 index 0000000..7440d2d --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#3e4347"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#ed4c5c"/><g fill="#ffe62e"><path d="m27.5 24.5l-1.3 4 3.4-2.5 3.5 2.5-1.3-4 3.4-2.5h-4.3l-1.3-4.1-1.3 4.1h-4.3z"/><path d="m48 48.6c-.5-.8-1.1-1.4-1.9-2.1s-1.9-1.5-2.8-2.3l-1.6 1.8c-.1.1 0 .3 0 .3 1.8.3 2.3.9 3 1.5 1 1 1.3 2.1 2 2.6 1.2.7 2.1-.6 1.3-1.8"/><path d="m33.8 41.7c-1.7.6-3.6.8-5.5.6-2.5-.3-4.8-1.2-6.7-2.8l-1.9 2.3c.8.7 1.7 1.2 2.5 1.7l-.6 1.2c1 .5 2 1 3.1 1.3l.4-1.2c1 .3 2 .5 3 .6l-.1 1.2c1.1.1 2.2.1 3.3 0l-.1-1.3c1-.1 2-.3 3-.6l.4 1.2c.5-.2 1-.3 1.6-.6l-.7-2.7-1.7-.9"/><path d="m42.3 31c-.4 3.4-2 6.3-4.4 8.4l3.6 2.5c.5-.5.9-.9 1.3-1.4l-1-.8c0 0 0 0 0 0 .7-.8 1.2-1.7 1.7-2.5l1.2.6c.5-1 1-2 1.3-3.1l-1.2-.4c.3-1 .5-2 .6-3l1.3.1c.1-1.1.1-2.2 0-3.3l-1.3.1c-.1-1-.3-2-.6-3l1.2-.4c-.3-1.1-.7-2.1-1.3-3.1l-1.2.6c-.5-.9-1-1.8-1.7-2.6l1-.8c-.7-.9-1.5-1.6-2.4-2.4l-.8 1c0 0 0 0 0 0-.8-.7-1.6-1.2-2.5-1.7l.6-1.2c-1-.5-2-1-3.1-1.3l-.4 1.3c-.9-.3-1.9-.5-2.9-.6l-.3 3c6.9.7 12 7 11.3 14"/><path d="m37.3 41.2c-3.4-2.4-6.8-4.8-9.8-7.6l.2-.2c2.9 2.7 6.4 5.2 9.7 7.5 1.7 1.2 3.4 2.4 5 3.6l.6-.5c-5.6-4-18.8-13.2-19-16.5-2.6 5.1.7 8.1 2.8 9.4 5.4 3.1 9 5.1 14.7 8.9l.8-.9c-1.6-1.4-3.3-2.6-5-3.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1f6.svg b/riot/emojione/svg/1f1e6-1f1f6.svg new file mode 100644 index 0000000..476eac8 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1f6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#3a7dce"/><path fill="#fff" d="m17.6 30.7l-.3-1.4h-.3l-.5.5-.1-1.3-.6-.5-.4.2v.2l-.7-.3-.5-.6 1.2-1-2-1.6-1-3.7 7.4 5.3 4.6-1.2-.2-.7.9-.2.4-1.5-.1-.5.3-.4.2-1-.2-.4.7-.6-.2-1.5 1.6-.7 1.3-1.3-.1-.7.9.5.8-.5.3-.8.4.6 4.3.2.9.8 3.5.7.7.7.5-.2.5 1.7h.3l.4-.5 3.2 1.1.2.5.8-.2.9.8.9 4.9-.8 2.7 3.4 1 .2 2.3-.7 1.7 1 .8-.5 2.9-1.7 1.3.4 2-1 .7-.6-.2v1.9h-.8l.3.7-1.7.7.5 1-1.1 1.2.3.3-.7-.2-3.2 1.9.2-.5-1 .2-.2-.5-.8.6-.3-.1-.5.6-3.6-.5-.5-.3-.6.3-1.3-1 .6-.6.9-1.8v-1.1l-.7-1.6-.8.8-4.7-1.2-1 .1-.8.5-2.3-.2v.4l-4.8-1.7v-1h-.8l-.2-2.9-.6.2-.9-2.1.2.5-1.7-1.8h1l-.3-2 .8-1.4h.5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1f7.svg b/riot/emojione/svg/1f1e6-1f1f7.svg new file mode 100644 index 0000000..040ef76 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#f9f9f9"/><g fill="#b4d7ee"><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z"/></g><path d="m45.7 31.8l-8.2-.3c0 0 0-.1 0-.1 1.3-.2 2.3-1 3.7-.9 1.7.2 2.7-.8 3.3-1 .7-.2 1.1.2 1.1 0 .1-.2-.4-.6-1.4-.5-.9.1-1.2.9-3.3.7-1.8-.1-2.4.6-3.7.6 0 0 0-.1 0-.1l7.4-3.4c0 0 .2-.1.2-.3-.1-.2-.3-.1-.3-.1l-7.5 3c0 0 0-.1 0-.1 1.1-.7 1.7-1.8 3.1-2.2 1.6-.5 2.2-1.7 2.7-2.2.5-.5 1.1-.2 1.1-.4 0-.2-.6-.4-1.4.1-.8.5-.8 1.3-2.8 1.9-1.7.5-2 1.4-3.2 2 0 0-.1-.1-.1-.1l5.6-6c0 0 .2-.2.1-.3-.1-.1-.3.1-.3.1l-6 5.6c0 0 0 0-.1-.1.8-1.1.9-2.3 2-3.2 1.3-1.1 1.3-2.4 1.6-3 .3-.6.9-.6.8-.8s-.7-.1-1.3.6c-.6.8-.3 1.5-1.8 2.8-1.3 1.1-1.3 2.1-2.1 3 0 0-.1 0-.1-.1l2.8-7.7c0 0 .1-.2-.1-.3-.2-.1-.3.2-.3.2l-3.4 7.4c0 0-.1 0-.1 0 .3-1.3 0-2.5.6-3.7.8-1.5.3-2.8.3-3.4.1-.7.6-.9.5-1-.1-.2-.7.2-1 1.1-.2.9.3 1.5-.6 3.3-.8 1.6-.4 2.4-.8 3.6 0 0-.1 0-.1 0l-.3-8.2c0 0 0-.3-.2-.3s-.2.3-.2.3l-.3 8.2c0 0-.1 0-.1 0-.2-1.3-1-2.3-.9-3.7.2-1.7-.8-2.7-1-3.3s.2-1.1 0-1.1c-.2-.1-.6.4-.5 1.4.1.9.9 1.2.7 3.3-.1 1.8.6 2.4.6 3.7 0 0-.1 0-.1 0l-3.4-7.4c0 0-.1-.2-.3-.2-.2.1-.1.3-.1.3l2.8 7.7c0 0-.1 0-.1 0-.7-1.1-1.8-1.7-2.2-3.1-.5-1.6-1.7-2.2-2.2-2.7-.5-.5-.2-1.1-.4-1.1-.2 0-.4.6.1 1.4s1.3.8 1.9 2.8c.5 1.7 1.4 2 2 3.2 0 0-.1.1-.1.1l-6-5.6c0 0-.2-.2-.3-.1-.1.1.1.3.1.3l5.6 6c0 0 0 0-.1.1-1.1-.8-2.3-.9-3.2-2-1.1-1.3-2.4-1.3-3-1.6-.6-.3-.6-.9-.8-.8-.2.1-.1.7.6 1.3.8.6 1.5.3 2.8 1.8 1.1 1.3 2.1 1.3 3 2.1 0 0 0 .1-.1.1l-7.7-2.8c0 0-.2-.1-.3.1-.1.2.2.3.2.3l7.4 3.4c0 0 0 .1 0 .1-1.3-.3-2.5 0-3.7-.6-1.5-.8-2.8-.3-3.4-.3-.7-.1-.9-.6-1-.5-.2.1.2.7 1.1 1 .9.2 1.5-.3 3.3.6 1.6.8 2.4.4 3.6.8 0 0 0 .1 0 .1l-8.2.3c0 0-.3 0-.3.2 0 .2.3.2.3.2l8.2.3c0 0 0 .1 0 .1-1.3.2-2.3 1-3.7.9-1.7-.2-2.7.8-3.3 1-.7.2-1.1-.2-1.1 0-.1.2.4.6 1.4.5s1.2-.8 3.3-.7c1.8.1 2.4-.6 3.7-.6 0 0 0 .1 0 .1l-7.4 3.4c0 0-.2.1-.2.3s.3.1.3.1l7.7-2.8c0 0 0 .1 0 .1-1.1.7-1.7 1.8-3.1 2.2-1.6.5-2.2 1.7-2.7 2.2-.5.5-1.1.2-1.1.4s.6.4 1.4-.1c.8-.5.8-1.3 2.8-1.9 1.7-.5 2-1.4 3.2-2 0 0 .1.1.1.1l-5.6 6c0 0-.2.2-.1.3.1.1.3-.1.3-.1l6-5.6c0 0 0 0 .1.1-.8 1.1-.9 2.3-2 3.2-1.3 1.1-1.3 2.4-1.6 3-.3.6-.9.6-.8.8.1.2.7.1 1.3-.6s.3-1.5 1.8-2.8c1.3-1.1 1.3-2.1 2.1-3 0 0 .1 0 .1.1l-2.8 7.7c0 0-.1.2.1.3.2.1.3-.2.3-.2l3.4-7.4c0 0 .1 0 .1 0-.3 1.3 0 2.5-.6 3.7-.8 1.5-.3 2.8-.4 3.4-.1.7-.6.9-.5 1 .1.2.7-.2 1-1.1.2-.9-.3-1.4.6-3.3.8-1.6.4-2.4.8-3.6 0 0 .1 0 .1 0l.3 8.2c0 0 0 .3.2.3.2 0 .2-.3.2-.3l.3-8.2c0 0 .1 0 .1 0 .2 1.3 1 2.3.9 3.7-.2 1.7.8 2.7 1 3.3.2.7-.2 1.1 0 1.1.2.1.6-.4.5-1.4-.1-.9-.9-1.2-.7-3.3.1-1.8-.6-2.4-.6-3.7 0 0 .1 0 .1 0l3.4 7.4c0 0 .1.2.3.2.2-.1.1-.3.1-.3l-2.9-7.8c0 0 .1 0 .1 0 .7 1.1 1.8 1.7 2.2 3.1.5 1.6 1.7 2.2 2.2 2.7.5.5.2 1.1.4 1.1s.4-.6-.1-1.4c-.5-.8-1.3-.8-1.9-2.8-.5-1.7-1.4-2-2-3.2 0 0 .1-.1.1-.1l6 5.6c0 0 .2.2.3.1.1-.1-.1-.3-.1-.3l-5.6-6c0 0 0 0 .1-.1 1.1.8 2.3.9 3.2 2 1.1 1.3 2.4 1.3 3 1.6.6.3.6.9.8.8.2-.1.1-.7-.6-1.3-.8-.6-1.5-.3-2.8-1.8-1.1-1.3-2.1-1.3-3-2.2 0 0 0-.1.1-.1l7.7 2.8c0 0 .2.1.3-.1.1-.2-.2-.3-.2-.3l-7.4-3.4c0 0 0-.1 0-.1 1.3.3 2.5 0 3.7.6 1.5.8 2.8.3 3.4.3.7.1.9.6 1 .5.2-.1-.2-.7-1.1-1-.9-.2-1.5.3-3.3-.6-1.6-.8-2.4-.4-3.6-.8 0 0 0-.1 0-.1l8.2-.3c0 0 .3 0 .3-.2 0-.2-.3-.2-.3-.2" fill="#f6b40e"/><g fill="#85340a"><path d="m35 31.3c-.3-.3-.7-.5-1.1-.5-.4 0-.7.2-1 .5.5.4 1.4.4 2.1 0m-.3-.1c-.2.2-.4.3-.6.3.1-.1.2-.2.2-.3 0-.1-.1-.2-.2-.3.3.1.5.2.6.3m-1.1-.3c-.1.1-.1.2-.1.3 0 .1.1.3.2.3-.2 0-.4-.1-.6-.3.2-.1.3-.2.5-.3"/><path d="m34 30.5c-.6 0-.7.1-.9.3-.3.2-.4.2-.4.2 0 0 0 .2.1.1.1 0 .3-.1.5-.3.3-.2.5-.2.8-.2.8 0 1.2.6 1.3.6s-.6-.7-1.4-.7"/><path d="m32.3 30.4c-.1.2-.1.3-.1.5-.1.6 0 1.3.4 2 0 0 .1-.1.2-.1-.4-.5-.5-1.1-.5-1.6 0-.3.2-.5.3-.7.7-.6 1.9-.5 2.9.3-.9-1.3-2.2-1.2-3.2-.4"/><path d="m33.3 31.7c-.3-.2-.4-.3-.5-.3s-.1.1.3.3 1.2.3 1.9-.3c-.8.4-1.4.4-1.7.3"/><path d="m32.8 33.3c-.1 0-.2-.1-.3-.2 0 .1-.2.3-.5.3-.3 0-.5-.3-.5-.3 0 .1-.1.2-.3.2-.1 0-.3-.1-.3-.3 0-.1.1-.2.2-.2-.2 0-.3.2-.3.4 0 .2.2.4.4.4.1 0 .2-.1.3-.2.1.1.4.1.5.1 0 0 0 0 .1 0 .1 0 .3 0 .5-.1.1.1.2.2.3.2.2 0 .4-.2.4-.4 0-.2-.1-.3-.3-.4.1 0 .2.1.2.2-.1.2-.2.3-.4.3"/><path d="m32 34.2c.2 0 .4-.2.7 0s.5.3.7.4c-.4-.3-.6-.6-1-.6-.1 0-.3 0-.4.1-.2-.1-.3-.1-.4-.1-.4 0-.6.4-1 .6.2-.1.4-.3.7-.4s.5 0 .7 0"/><path d="m32 34.5c-.2 0-.3-.1-.6 0-.2 0-.4 0-.7.1 0 0-.1 0-.1 0 .9.1.5.6 1.4.6.9 0 .5-.5 1.4-.6-.1 0-.1 0-.2 0-.8-.3-.9-.1-1.2-.1m0 .5c-.7 0-.5-.5-1.3-.5.8-.2.9.1 1.3.1.3 0 .5-.2 1.3-.1-.8.1-.6.5-1.3.5"/><path d="m32 35.2c-.4 0-.8.3-.8.8.1-.4.4-.6.8-.6.4 0 .7.3.8.6 0-.5-.4-.8-.8-.8"/><path d="m31.4 30.5c.2.2.3.5.3.7.1.5-.1 1-.5 1.6 0 0 .1 0 .2.1.3-.7.5-1.3.4-2 0-.2-.1-.3-.1-.5-.9-.8-2.2-.9-3.2.4 1-.9 2.3-1 2.9-.3"/><path d="m30.8 30.9c.3.2.4.3.5.3.1 0 .1-.1.1-.1 0 0-.2 0-.4-.2-.3-.2-.4-.3-.9-.3-.9 0-1.4.7-1.3.7.1 0 .5-.6 1.3-.6.2 0 .5 0 .7.2"/><path d="m29.1 31.3c.2.2.6.3 1 .3.3 0 .7-.1 1-.3-.3-.3-.7-.5-1.1-.5-.3 0-.7.2-.9.5m.2 0c.2-.2.4-.4.6-.4-.1.1-.2.2-.2.3 0 .2.1.3.2.3-.2.1-.5 0-.6-.2m1.5-.1c-.1.1-.3.2-.5.3.1-.1.1-.2.1-.3 0-.1-.1-.2-.1-.3.3.1.5.2.5.3"/><path d="m31.3 31.4c-.1 0-.2.1-.5.3s-.9.2-1.7-.2c.7.6 1.5.5 1.9.3.4-.3.4-.4.3-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1f8.svg b/riot/emojione/svg/1f1e6-1f1f8.svg new file mode 100644 index 0000000..158d0c6 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1f8.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c5.3,0,10.3-1.4,14.6-3.8l0.1-52.3C42.4,3.4,37.4,2,32,2C17.1,2,4.7,12.9,2.4,27.2v9.6 + C4.7,51.1,17.1,62,32,62z" fill="#2a5f9e"/><path d="m62 32c0-7.7-2.9-14.7-7.6-20-.9-1-1.8-1.9-2.9-2.8-.3-.3-.7-.6-1-.8h-3.7v-.4l-43.2 21.5c-.1.8-1.6 1.7-1.6 2.5 0 .8 1.9 1.6 1.9 2.4l42.7 21.6v-.4h3.8c.3-.3.7-.5 1-.8 1-.9 2-1.8 2.9-2.8 4.8-5.3 7.7-12.3 7.7-20" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="m50.5 55.6l-48.5-23.4c0 1.6.1 3.1.4 4.6l44.3 21.4c1.3-.8 2.6-1.6 3.8-2.6"/><path d="m2.4 27.2c-.3 1.5-.4 3-.4 4.6l48.5-23.4c-1.2-1-2.5-1.8-3.9-2.6l-44.2 21.4"/></g><path fill="#9c3900" d="m44.7 37.9l-1.6-.3-.1-2.3.2-.9-.2-.9-.1-.9-2.1-.7-1.6-.1-1.3-1 .4-2.9-4-.7 2.7-2.2.1-1.9 2.2-1.1 4.3-1.8.2.6 3.7-1.6v.6l3.2-.8 3.3-1.2-.3 3.6-1.1 1.5-.7 1.7-3.7 2.3 4.8 1.9-2 2.3-2.1.1 1.2.9-1.2.6.9.1-.6.7 1.2-.2-1.5 1.3.2 1.2-1.2-.5.8 1.3-1.5-.4.3 1.4-1.1-.3-.1 1.1z"/><path d="m53.9 18l-.4 3.4-1 1.4-.7 1.7-3.8 2.4 4.8 1.9-1.8 2.2-2.4.1 1.3 1-1.5.7 1.2.1-.7.7 1.1-.2-1.2 1 .2 1.1-1.3-.6.8 1.3-1.4-.3.2 1.3-1-.3-.1 1.1-1.5-.5-1.5-.2-.1-2.2.2-.9-.2-.9-.1-1-2.1-.6-1.7-.2-1.1-.9.4-2.9-3.9-.7 2.5-2.1.1-1.9 2.2-1 4.2-1.8.2.6 3.7-1.6v.6l3.3-.7 3.1-1.1m.3-.3l-.4.1-3.2 1.1-3 .7v-.2-.4l-.4.2-3.4 1.5-.1-.3v-.4l-.3.1-4.2 1.8-2.2 1-.1.1v.1l-.1 1.8-2.4 2-.4.4.5.1 3.7.6-.3 2.6v.1l.1.1 1.1.9h.1.1l1.7.2 1.9.6.1.9.2.9-.2.8.1 2.2v.2h.2l1.5.2 1.4.5.3.1v-.3l.1-.8.7.2.4.1-.1-.4-.2-.9 1 .2.6.1-.3-.5-.4-.7.6.2.4.2-.1-.5-.2-1 1.1-.9.7-.6-.9.1-.4.1.2-.2.4-.4h-.5-.2l.6-.3.4-.2-.4.1-.8-.6 1.7-.1h.1l.1-.1 1.9-2.1.2-.3-.3-.1-4.4-1.7 3.4-2.1h.1v-.1l.7-1.7 1-1.4v-.1-.1l.4-3.4.1-.3z" fill="#3e4347"/><path d="m46.4 42.9c0 0 0 0 0 0" fill="#ffc221"/><path d="m46.4 42.9c0 0 0 0 0 0m0 0" fill="#3e4347"/><path d="m41.5 44.4l.5.9-9-4.2 1.5-1.3.2.3 5.1.5-.1-.3 1.1-.5v-.3l-2.2.5-.1-1.2-2.5-.5-.1.7h-.7l-.2.6-1.3-.4.3-1.4-1.9.9-3.3-2.7 4.2-.8 1.3 1.5.4-1.3 1.3.3-.2.6.7.1-.2.8 2.5.6.4-1 2.5 1.6 1.4-1.1.3.1.6-1.2 1.1.2.3.9-.4 1.7.3.4 6 1.4-.3 1-.6-.1.1.8-12.7-.9-.3.4 4.5.2-.3.4 3-.4-.2.7 2.8-.2-2 .8 2.2 1h-2.6l1.4 1.3-2.7-1v1l-2.1-1.4m7.4-3.1l-4.1-.9-.9.5 5 .4" fill="#ffce31"/><path d="m32.9 35.4l1.4 1.6.4-1.4 1 .3-.2.6.7.1-.2.8 2.7.6.4-.9 2.5 1.5 1.4-1.1.3.2.6-1.2.9.2.3.9-.3 1.4.3.5 5.9 1.4-.2.7-6-1.4-1 .5-.1.3 6.4.5.1.8-12.6-.9-.4.7 4.5.2-.3.4 3.1-.4-.2.7 2.1-.2-1.4.7 1.9.9h-2.3l1.2 1.1-2.2-.9v1l-2.5-1.6.6 1-8.5-3.9 1.2-1 .1.3 5.4.5-.1-.3 1.1-.5v-.5l-2.3.5-.1-1.1-2.7-.6-.1.7h-.7l-.2.6-1-.3.3-1.5-2.1 1-3-2.5 3.9-1m.1-.3h-.1l-3.9.7-.5.1.4.3 3 2.5.1.1.1-.1 1.6-.8-.2 1v.2l.2.1 1 .3.2.1.1-.2.1-.4h.5.2v-.2l.1-.4 2.2.5.1.9v.3l.3-.1 2-.4-1 .5-.2.1v.2l-4.9-.4-.1-.1-.1-.3-.2.2-1.2 1-.3.3.4.2 8.5 3.9.7.3-.4-.7-.1-.1 1.6 1 .4.2v-.5-.6l1.9.7 1.2.5-1-.9-.7-.6h1.7 1.2l-.9-.4-1.4-.7.9-.3 1.6-.6-1.7.1-1.7.1.1-.4.1-.3 5.4.4h.3l-.1-.3-.1-.5.3.1.2.1.1-.2.2-.7.1-.3-.3-.1-5.8-1.4-.2-.3.5-1.3v-.1-.1l-.3-.9v-.1h-.1l-.9-.2h-.2l-.1.2-.5 1h-.1l-.1-.1-.2.1-1.3 1-2.3-1.5-.2-.1-.1.3-.3.8-2.3-.5.1-.6.1-.2h-.3l-.4-.1.1-.3.1-.2-.2-.1-1-.3-.2-.1-.1.2-.3.9-1.1-1.2-.3-.2zm11.3 5.7l.6-.3 2.3.5-2.9-.2m-6.6 1.1l.1-.2 6.6.4-2.4.3.3-.3h-.5l-4.1-.2" fill="#3e4347"/><path d="m32.4 35.1c-.5-.3-.8-.6-.9-1-.1-.8.8-1.6.8-1.6l.2-.1v.2c.1.4 1 .5 1.4.5 0 0 .1 0 .3 0 .3 0 .6.1.9.4v.1.1c-.5.8-1.3.9-1.8.9-.3 0-.6-.1-.7-.1 0 .1-.1.2-.1.6v.2l-.1-.2" fill="#ffce31"/><path d="m32.4 32.6c.1.6 1.5.6 1.5.6s.1 0 .3 0c.2 0 .5.1.8.4-.5.7-1.2.9-1.7.9-.4 0-.7-.1-.7-.1s-.1.1-.2.7c-1.8-1 0-2.5 0-2.5m.2-.3h-.2c-.2 0-.9.8-1 1.3-.1.5 0 1.1.9 1.6l.3.2v-.3c0-.2.1-.3.1-.4.1 0 .4.1.6.1.5 0 1.3-.2 1.9-1l.1-.1-.1-.1c-.2-.3-.6-.5-1-.5-.2 0-.3 0-.3 0-.5 0-1.2-.1-1.3-.4v-.4z" fill="#3e4347"/><path fill="#fff" d="m32.3 32.6l.4-.6.2-.9 4.4-2.2 1.4-1.6-.5 1.5 1.8-.4-1.5 1.1 2-.4-1.7 1.1 2.1-.2-1.6 1.1 1.4.1-1.7.8-2.3.6-1.6 1.1h-2.3z"/><path d="m38.4 27.9l-.4 1.1 1.4-.3-1.4 1 1.8-.4-1.5 1.1 2.1-.2-1.2.8-.7.1 1.8.2-1.3.6-2.3.6-1.7 1h-2.1l-.4-1 .3-.5.2-.9 4.4-2.2 1-1m.6-1.2l-.8 1-.9 1.1-4.4 2.2h-.1v.1l-.2.9-.3.5-.1.1v.1l.4 1 .1.2h.2 2.1.1.1l1.6-1 2.2-.6 1.3-.6.8-.4-.8-.3h-.6l.9-.6.9-.6-1 .1-1.2.1.8-.5 1.1-.7-1.3.3-.7.2.5-.4.9-.7-1.1.2-1 .2.2-.7.3-1.2z" fill="#3e4347"/><path fill="#fff" d="m50.8 31.2l-.7-.9.6-1.5-.3-.5.2-1 4.1-.7-.6 1.2 1.3 1.1-.9 1.6.7 1.6z"/><path d="m54.4 26.8l-.6 1.1 1.4 1-.9 1.6.7 1.4-4.2-.8-.6-.8.5-1.5-.3-.5.2-.8 3.8-.7m.5-.3l-.5.1-3.7.6h-.2v.2l-.2.8v.1.1l.2.4-.5 1.4v.1l.1.1.6.8.1.1h.1l4.2.8.5.1-.2-.4-.6-1.3.9-1.5.1-.2-.2-.1-1.2-.9.5-.9v-.4z" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1f9.svg b/riot/emojione/svg/1f1e6-1f1f9.svg new file mode 100644 index 0000000..407ac40 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z"/></g><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1fa.svg b/riot/emojione/svg/1f1e6-1f1fa.svg new file mode 100644 index 0000000..48ab1dc --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2v10H12v20H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#2a5f9e"/><path d="M32,2c-4.7,0-9.1,1.1-13.1,3v3.1V11H11v2.9V14v4.9H5c-1.9,4-3,8.4-3,13.1h12V17l12,15h6v-7.5L23.6,14H32V2z" fill="#fff"/><g fill="#ed4c5c"><path d="m15.4 14l14.6 18h2v-4.9l-10.6-13.1z"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z"/></g><g fill="#fff"><path d="m8 35.7l2.2-2.7-.7 3.5 3.5.1-3.1 1.6 2.1 2.8-3.1-1.4-.9 3.4-.9-3.4-3.1 1.4 2.1-2.8-3.1-1.6 3.5-.1-.7-3.5z"/><path d="m52 20.2l1.8-2.2-.6 2.8 2.8.1-2.5 1.3 1.7 2.2-2.5-1.2-.7 2.8-.7-2.8-2.5 1.2 1.7-2.2-2.5-1.3 2.8-.1-.6-2.8z"/><path d="m52 40.2l1.8-2.2-.6 2.8 2.8.1-2.5 1.3 1.7 2.2-2.5-1.2-.7 2.8-.7-2.8-2.5 1.2 1.7-2.2-2.5-1.3 2.8-.1-.6-2.8z"/><path d="m42 26.2l1.8-2.2-.6 2.8 2.8.1-2.5 1.3 1.7 2.2-2.5-1.2-.7 2.8-.7-2.8-2.5 1.2 1.7-2.2-2.5-1.3 2.8-.1-.6-2.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1fc.svg b/riot/emojione/svg/1f1e6-1f1fc.svg new file mode 100644 index 0000000..ab3f2d0 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.5 44v-4h1.4c.7-2.5 1.1-5.2 1.1-8 0-16.6-13.4-30-30-30s-30 13.4-30 30c0 2.8.4 5.5 1.1 8h1.4v4c.9 2.1 2.1 4.2 3.5 6h3.6v4c5.4 5 12.5 8 20.4 8 7.9 0 15-3 20.4-8v-4h3.6c1.4-1.8 2.6-3.9 3.5-6" fill="#42ade2"/><g fill="#ffe62e"><path d="m4.5 44h55c.6-1.3 1-2.6 1.4-4h-57.8c.4 1.4.8 2.7 1.4 4"/><path d="M8,50c1.1,1.4,2.3,2.8,3.6,4h40.8c1.3-1.2,2.5-2.6,3.6-4H8z"/></g><path d="m22 33.7l-3.7-10-10-3.7 10-3.7 3.7-10 3.7 10 10 3.7-10 3.7-3.7 10" fill="#fff"/><path fill="#c94747" d="M19.8 17.8 22 12 24.2 17.8 30 20 24.2 22.2 22 28 19.8 22.2 14 20z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1fd.svg b/riot/emojione/svg/1f1e6-1f1fd.svg new file mode 100644 index 0000000..81ab225 --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffce31"><path d="m61.7 28c-.1-1-.3-2-.6-3h-58.3c-.2 1-.4 2-.6 3h59.5"/><path d="m2.3 36c.1 1 .3 2 .6 3h58.3c.2-1 .4-2 .6-3h-59.5"/><path d="m20 4.5c-1 .5-2 1-3 1.5v52c1 .6 2 1.1 3 1.5v-55"/><path d="m28 2.3v59.5c1 .1 2 .2 3 .3v-60.1c-1 0-2 .1-3 .3"/></g><g fill="#ed4c5c"><path d="m2 32c0 1.4.1 2.7.3 4h59.5c.2-1.3.3-2.6.3-4 0-1.4-.1-2.7-.3-4h-59.5c-.2 1.3-.3 2.6-.3 4"/><path d="m20 59.5c2.5 1.1 5.2 1.9 8 2.2v-59.4c-2.8.4-5.5 1.1-8 2.2v55"/></g><g fill="#2a5f9e"><path d="M17,25V6C10,10.1,4.8,16.9,2.8,25H17z"/><path d="M17,39v19C10,53.9,4.8,47.1,2.8,39H17z"/><path d="M32,2c-0.3,0-0.7,0-1,0v23h30.2C58,11.8,46.2,2,32,2z"/><path d="m31 39v23c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6-1f1ff.svg b/riot/emojione/svg/1f1e6-1f1ff.svg new file mode 100644 index 0000000..4ac419f --- /dev/null +++ b/riot/emojione/svg/1f1e6-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#428bc1"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#83bf4f"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#ed4c5c"/><g fill="#fff"><path d="m31.6 40.2c-4.5 0-8.2-3.7-8.2-8.2 0-4.5 3.7-8.2 8.2-8.2 1.1 0 2.1.2 3 .6-1.6-1.2-3.6-2-5.8-2-5.3 0-9.5 4.3-9.5 9.6 0 5.3 4.3 9.6 9.5 9.6 2.2 0 4.2-.7 5.8-2-.9.4-1.9.6-3 .6"/><path d="m40.4 33.4l-2.2 1.5 1.4-2.3-2.6-.6 2.6-.6-1.5-2.2 2.3 1.4.6-2.6.6 2.6 2.2-1.5-1.4 2.3 2.6.6-2.6.6 1.5 2.2-2.3-1.4-.6 2.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e6.svg b/riot/emojione/svg/1f1e6.svg new file mode 100644 index 0000000..5670a81 --- /dev/null +++ b/riot/emojione/svg/1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m28.6 17.5h6.9l10.3 29h-6.6l-1.9-6h-10.7l-2 6h-6.3l10.3-29m-.4 18h7.4l-3.6-11.4-3.8 11.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1e6.svg b/riot/emojione/svg/1f1e7-1f1e6.svg new file mode 100644 index 0000000..9c14bd4 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m10.8 53.2c11.7 11.7 30.7 11.7 42.4 0l-42.4-42.4c-11.7 11.7-11.7 30.7 0 42.4" fill="#2a5f9e"/><path d="m10.8 10.8l42.4 42.4v-42.4c-11.7-11.7-30.7-11.7-42.4 0" fill="#ffce31"/><path d="m53.2 10.8v42.4c11.7-11.7 11.7-30.7 0-42.4" fill="#2a5f9e"/><g fill="#fff"><path d="m10.9 21l2.4 1.8-.9-3 2.4-1.8h-3l-.9-3-.9 3h-3l2.4 1.8-.9 3z"/><path d="m17.7 27.8l2.5 1.9-1-3 2.5-1.9h-3l-1-3-.9 3h-3l2.4 1.9-.9 3z"/><path d="m24.6 34.7l2.4 1.8-.9-3 2.4-1.8-3-.1-.9-2.9-.9 2.9-3 .1 2.4 1.8-.9 3z"/><path d="m31.4 41.5l2.4 1.8-.9-3 2.4-1.8h-3l-.9-3-.9 3h-3l2.4 1.8-.9 3z"/><path d="m38.3 48.3l2.4 1.9-.9-3 2.4-1.9h-3l-.9-3-1 3h-3l2.5 1.9-1 3z"/><path d="m45.1 55.2l2.4 1.8-.9-3 2.4-1.8h-3l-.9-3-.9 3h-3l2.4 1.8-.9 3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1e7.svg b/riot/emojione/svg/1f1e7-1f1e7.svg new file mode 100644 index 0000000..6bf8ae2 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1e7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="m2 32c0 11.5 6.5 21.5 16 26.5v-53c-9.5 5-16 15-16 26.5"/><path d="m62 32c0-11.5-6.5-21.5-16-26.5v53.1c9.5-5.1 16-15.1 16-26.6"/></g><path d="M32,2c-5.1,0-9.8,1.3-14,3.5v53.1c4.2,2.2,8.9,3.5,14,3.5s9.8-1.3,14-3.5V5.5C41.8,3.3,37.1,2,32,2z" fill="#ffce31"/><g fill="#3e4347"><path d="m43.8 20.2l-1.1-1.1c-.2.2-4.6 5.2-5.1 15.1h-4.2v-10.9h-3v10.9h-4.2c-.4-9.9-4.9-14.9-5.1-15.1l-2.1 2.1c0 0 4.3 5 4.3 14.5v1.6h7.2v10.8h3v-10.8h7.2v-1.6c0-9.6 4.2-14.5 4.3-14.5l-1.2-1"/><path d="m32 15.9l-3.2 9.6h6.4z"/><path d="m21.2 19.1l6.5 6.4h-4z"/><path d="m42.8 19.1l-6.5 6.4h4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1e9.svg b/riot/emojione/svg/1f1e7-1f1e9.svg new file mode 100644 index 0000000..e271337 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#75a843"/><circle cx="32" cy="32" r="30" fill="#699635"/><circle cx="26" cy="32" r="14.1" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1ea.svg b/riot/emojione/svg/1f1e7-1f1ea.svg new file mode 100644 index 0000000..085c2cd --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#3e4347"/><path d="M42,3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7v56.6c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7z" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1eb.svg b/riot/emojione/svg/1f1e7-1f1eb.svg new file mode 100644 index 0000000..eeb129a --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#83bf4f"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#ed4c5c"/><path fill="#ffce31" d="m32 36.8l5.6 4.2-2.1-6.9 5.5-4.2h-6.9l-2.1-6.9-2.1 6.9h-6.9l5.5 4.2-2.1 6.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1ec.svg b/riot/emojione/svg/1f1e7-1f1ec.svg new file mode 100644 index 0000000..f6a6723 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#f9f9f9"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#ed4c5c"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1ed.svg b/riot/emojione/svg/1f1e7-1f1ed.svg new file mode 100644 index 0000000..f708818 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1ed.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26.8,61.5L36,56l-10-6l10-6l-10-6l10-6l-10-6l10-6l-10-6l10-6l-9.2-5.5C12.7,4.9,2,17.2,2,32 + S12.7,59.1,26.8,61.5z" fill="#f9f9f9"/><path d="m32 2c-1.8 0-3.5.2-5.2.5l9.2 5.5-10 6 10 6-10 6 10 6-10 6 10 6-10 6 10 6-9.2 5.5c1.7.3 3.4.5 5.2.5 16.6 0 30-13.4 30-30s-13.4-30-30-30" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1ee.svg b/riot/emojione/svg/1f1e7-1f1ee.svg new file mode 100644 index 0000000..7ea0077 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.2 38.8c1-2 1.6-4.3 1.6-6.8 0-2.4-.6-4.7-1.6-6.8l11-11c-1.9-2.5-4.1-4.8-6.7-6.6l-11 11c-2-1-4.3-1.6-6.7-1.6s-4.7.6-6.7 1.6l-10.8-10.8c-2.5 1.9-4.8 4.1-6.6 6.7l10.7 10.7c-1 2-1.6 4.3-1.6 6.8 0 2.4.6 4.7 1.6 6.8l-10.8 10.7c1.8 2.6 4.1 4.8 6.6 6.7l10.8-10.8c2 1 4.3 1.6 6.7 1.6s4.7-.6 6.7-1.6l11 11c2.6-1.8 4.8-4.1 6.7-6.6l-10.9-11" fill="#fff"/><path d="m31.8 17c2.4 0 4.7.6 6.7 1.6l11-11c-4.9-3.5-11-5.6-17.5-5.6-6.6 0-12.8 2.2-17.7 5.8l10.8 10.8c2-1 4.3-1.6 6.7-1.6" fill="#ed4c5c"/><g fill="#83bf4f"><path d="m46.9 32c0 2.4-.6 4.7-1.6 6.8l11 11c3.6-5 5.8-11.1 5.8-17.7s-2.2-12.8-5.8-17.7l-11 11c1 1.9 1.6 4.2 1.6 6.6"/><path d="m16.8 32c0-2.4.6-4.7 1.6-6.8l-10.8-10.7c-3.5 4.9-5.6 11-5.6 17.5s2.1 12.6 5.6 17.5l10.7-10.7c-.9-2.1-1.5-4.4-1.5-6.8"/></g><g fill="#ed4c5c"><path d="m31.8 47c-2.4 0-4.7-.6-6.7-1.6l-10.8 10.8c5 3.6 11.1 5.8 17.7 5.8 6.5 0 12.6-2.1 17.5-5.6l-11-11c-2 1-4.3 1.6-6.7 1.6"/><path d="m34.8 25h-2l-1-2-1 2h-2l1 2-1 2h2l1 2 1-2h2l-1-2 1-2"/><path d="m28.8 35h-2l-1-2-1 2h-2l1 2-1 2h2l1 2 1-2h2l-1-2 1-2"/><path d="m40.8 35h-2l-1-2-1 2h-2l1 2-1 2h2l1 2 1-2h2l-1-2 1-2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1ef.svg b/riot/emojione/svg/1f1e7-1f1ef.svg new file mode 100644 index 0000000..0e99fb0 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M22,60.3V3.7C10.4,7.8,2,18.9,2,32C2,45.1,10.4,56.2,22,60.3z" fill="#83bf4f"/><path d="m22 32h40c0-16.6-13.4-30-30-30-3.5 0-6.9.6-10 1.7v28.3" fill="#ffce31"/><path d="m22 32v28.3c3.1 1.1 6.5 1.7 10 1.7 16.6 0 30-13.4 30-30h-40" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f1.svg b/riot/emojione/svg/1f1e7-1f1f1.svg new file mode 100644 index 0000000..ad59884 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f5f5f5"/><path d="m47.4 38.2l-.1-.2c-.3-.4-.4-.5-.7-.5h-.2l-.1.2c-.2.2-.1.4-.1.6 0 .1.1.3.1.6.1.5-3.2 1-4.2 1.1-.7.1-1.5.2-2.1.3h-.1c-.7.2-1.2.5-1.4.9-.1.3 0 .5.3 1 .3.5.8 1.3.8 1.9-.1.1-.2.1-.3.2-2.5 1.4-4.5 1.9-7.3 1.9-2.8 0-4.8-.5-7.3-1.9-.1-.1-.2-.1-.3-.2.1-.6.6-1.4.8-1.9.3-.5.4-.7.3-1-.2-.5-.7-.8-1.4-.9h-.1c-.6-.1-1.3-.2-2.1-.3-1.1-.2-4.3-.6-4.2-1.1 0-.2.1-.4.1-.6 0-.2.1-.4-.1-.6l-.2-.2h-.2c-.3 0-.4.1-.7.5l-.1.1c-.3.4-.4.7-.3 1.1 0 .1.1.3.3.6.1.3.3.7.5 1.2.2.7.4 1.2.4 1.7 0 .7.9 1 1.4 1.2.4.1 1 .2 1.5.2 0 .4-.1.8-.2 1.2-.1.3 0 .8.2 1.1.2.3.5.5.8.7l.1.1c3.3 2.1 7.1 3.3 10.7 3.3 3.6 0 7.4-1.2 10.7-3.3l.1-.1c.3-.2.6-.4.8-.7.2-.3.3-.7.2-1.1-.1-.5-.2-.8-.2-1.2.5 0 1.1 0 1.5-.2.5-.2 1.3-.4 1.4-1.2 0-.5.2-1 .4-1.7.2-.5.4-.9.5-1.2.1-.3.2-.5.3-.6.2-.3.1-.7-.2-1" fill="#3e4347"/><path d="m47 38.5c-.6-.8-.3-.5-.2.4.2 1.3-4.3 1.5-6.7 2h-.1c-.5.1-.9.3-1.1.7-.1.1 0 .3 0 .5.5.8 1.2 1.3 1.2 2.5-.2.1-.4.2-.5.3-2.7 1.5-4.8 1.9-7.6 1.9-2.8 0-4.9-.5-7.6-1.9-.2-.1-.4-.2-.5-.3 0-1.1.7-1.7 1.2-2.5.1-.1.1-.3 0-.5-.2-.3-.6-.6-1.1-.7h-.1c-2.5-.5-6.9-.7-6.7-2 .1-.9.3-1.2-.2-.4-.1.2-.2.4-.2.6.1.2.5.9.8 1.8.2.6.4 1.3.4 1.8 0 .3.4.5 1 .7.5.2 1.3.2 1.8.2 0 .5 0 1.1-.2 1.8-.1.2 0 .5.1.7.2.3.5.5.8.6 3.3 2.1 7.1 3.2 10.5 3.2 3.4 0 7.1-1.1 10.5-3.2.3-.2.6-.4.8-.6.1-.2.2-.4.1-.7-.2-.8-.2-1.3-.2-1.8.5 0 1.3 0 1.8-.2.6-.2 1-.4 1-.7 0-.6.2-1.2.4-1.8.3-.9.7-1.5.8-1.8.1-.2 0-.4-.2-.6" fill="#fff"/><path d="m40.5 21.8h-17c0 2.9 0 5.8 0 8.7 0 2.8.2 4.9 1.4 6.6 1.5 2 3.9 3.5 7.1 5 3.2-1.4 5.6-2.9 7.1-5 1.2-1.7 1.4-3.9 1.4-6.6 0-2.9 0-5.8 0-8.7" fill="#2a5f9e"/><path d="m40.3 34c0-.7.2-1.1.2-1.8.1-1.4.1-2.9.1-4.3h-17c0 1.4 0 2.9.1 4.3 0 .7.2 1.1.2 1.8h16.4" fill="#ed4c5c"/><path d="m21.6 17.3l1.9 4.5c5.2-1.6 11.6-1.5 17 0l2-4.6.6.2.7-1.6-1.3-.4-.3.8-.7-.2.3-.8-1.3-.3-.2.8-.6-.1.2-.8-1.3-.2-.2.8-.9-.1-.1.4h-.3l.1-.4-.7-.1-.1.4h-.3l.1-.4-.8-.2-.1.4h-.6l.1-1.2-1.3-.1v.8h-.6v-.8h-1.3v.8h-.6v-.8l-1.3.1.1 1.2h-.6l-.3-.4h-.7v.4h-.3l-.1-.4-.7.1.1.4h-.3l-.1-.4-.8.2-.2-.8-1.3.2.2.8-.6.1-.2-.8-1.3.3.3.7-.6.2-.3-.8-1.3.4.7 1.6.2.1" fill="#ffce31"/><path fill="#fff" d="m32.1 30.9l.8-2.1-.9.6-.9-.6.8 2.1-2-.9.6 1-.6.9 2-.9-.8 2.1.9-.6.9.6-.8-2.1 2.1.9-.7-.9.7-1z"/><path d="m23.8 31.9v-.5h-.4v-.2c.1-1.9-1.3-3.1-2.5-4.2-.3-.3-.7-.6-1-.9 1 .7 2 1.4 2.4 1.7l-.1.4.5.3h.1c.4 0 .7-.4.7-.6l.1-.1v-.1c-.1-.8-1.7-2.5-3.1-3.9 0-.5-.1-.8-.3-1.1-.2-.2-.4-.3-.6-.4.2-.2.4-.4.6-.5.2-.2.4-.3.4-.6-.1-.6-.8-.8-1.5-.3l-.2-.1c-.4-.2-.9-.1-1.3.4h-.1c-.2 0-.4 0-.6.3-.2.2-.3.4-.4.7h-.1c-.4.1-.9.4-.9 1.6-.3-.5-.5-.9-.6-1.2-.1-.3-.2-.6-.6-.6-.2 0-.4.1-.5.3-.1.1-.1.2-.2.5h-.1l-.1.1c-.2.2-.4.4-.4.7h-.1l-.4.1-.1.2c-.1.3-.1.7 0 1.1h-.3l-.1.2c-.1.2-.2.3.1 1l-.3.1c-.2.1-.3.4-.3.6 0 .2.1.5.3.7v.1c-.1.2-.2.4-.1.6 0 .2.2.4.4.6-.1.2-.1.4-.1.6.2.6 1.2 1.2 2.2 1.5-.5.6-.8 1.3-.8 1.6l.1.3.3.1h.2c.1 0 .2 0 .3-.1 0 .2 0 .4 0 .5.1.2.3.4.5.5h.1c.4 0 .5-.3.8-.7v.2c-.3.4-1.1 1.3-1.3 1.6-.3.3-.2.6-.1.7-.3.3-.6.6-.8.7-.4.2-.3.5-.3.7l.2.4h.1l.1.1.1.1c.3.2.7.2 1 0l.1.1h.1c.2 0 .4-.1.6-.2l.3.1.2-.1c.2-.1.9-.7 1.4-1.1.1.4.3.9.3 1.2l.1.4c0 1.3 0 1.6 0 1.6v.3l.2.2c.7.7 1 1.1 1.2 1.4.1.2.2.3.3.4l.4.5.4-.5c.1-.1.2-.2.4-.2h.1l.5.2.1-.6c.1-.3.5-.7.6-.8l1.1-.8-1.4-.1c-.8-.1-2.1-.4-2.4-.6 0-.1-.1-.4 0-1.2.2-.2.7-.7 1.4-1.4.3.1.6.2.9.4l.1.1c.2.1.4.1.6 0h.2l.1-.1.2-.2c.1-.2.5-.6.7-.7l.6.1v-.6c-.2-.7-.3-3.5-.3-3.6m-1.4 2.1c-.1.7-.3 1.3-.5 1.3 0 0-.1 0-.3-.2.4-.3.6-.7.8-1.1" fill="#3e4347"/><g fill="#ffce31"><path d="m18.9 37l-.8.5c0 2.5 0 2.6 0 2.6 1.1 1.1 1.2 1.5 1.5 1.8.4-.6 1.1-.4 1.1-.4.1-.6.8-1.1.8-1.1-1-.1-2.7-.6-2.8-.8-.4-.6.2-2.6.2-2.6"/><path d="m23.1 32.5c.1.8-.4 5.8-2.3 2.5l-1.8 1.2c0 0 1.4-.6 2.7.4.1 0 .2 0 .3 0 .3-.3.9-1.1 1.3-1 0-.7 0-3.6 0-3.6-.2.1-.2.5-.2.5"/><path d="m22.9 27.9l-.1.3c.2.1.3-.3.3-.3-.2-1-3.4-4-3.4-4l-1.4.3-.1.6c1.2.4 4.6 2.9 4.7 3.1"/></g><path d="m18.6 25.7c0 0-.5-1.4.4-.8.7-.1.6-.8.6-.8h.4c.2-1.4-1.2-1.2-1.3-1.2.3-.9 1.3-1.5 1.3-1.5-.1-.7-1.4.4-2 1.1.2-.7.6-1.1.5-1.2-.4-.2-.9.5-1.2 1.1 0-.4 0-.6 0-.6-.5 0-.8 1.4-.8 2.1-.1-.5-.2-1-.2-1.1-.6.1-.5 1.3-.4 1.9-.2-.2-.3-.3-.3-.3-.1.1-.1.4 0 .6-1.1-1.1-1.3-2.4-1.4-2.4-.5 0-.1 1.5.1 2.1-.6-.8-.7-1.5-.8-1.4-.8.7 1 2.8 1.4 3.2-2-1.2-2.1-2.5-2.3-2.4-.5 1.3 2.5 3.6-.4 1.4-.5-.4.6 1.7.6 1.7.5.4-.7-.5-1-.5-.5.4 1.2 1.8 1.2 1.8.2.2-1-.6-1.2-.5-.4.5 1.4 1.6 1.4 1.6.8.4-1.1-.5-1.1-.4-.6.7 2.5 1.7 2.5 1.7-1 .8-1.3 1.7-1.1 1.8.2.1 1.1-.8 1.5-1-.6.8-.9 1.9-.6 1.9.2 0 .8-1.6 1.7-1.9-.3.6-.6 1.4-.4 2 0 0-1.2 1.4-1.4 1.8-.3.4.3.3.3.3s-1 1-1.4 1.3c-.4.3.7 0 1-.1-.2.1-.8.5-.8.6.3.2 1.1-.4 1.1-.4s-.2.3 0 .4c.3 0 .9-.5.9-.5s-.1.3 0 .3c.2-.2 1.7-1.3 1.8-1.5.4.6.7 1.8.7 1.8h.8c0 0 4.2-4 4.2-6.5.1-2.4-2.6-3.4-4.3-5.5m.7 2.8c.2.4.2.8.1 1.2-.2 0-.6 0-1.1 0 0-.5-.1-1.6 0-2.3.5.7 1 1.1 1 1.1m-2.2 3.6c0 .2 0 .4 0 .6l-.6.5c.2-.4.4-1 .6-1.1" fill="#fff"/><path d="m40.1 35.5v.6l.6-.1c.1 0 .6.5.7.7l.2.2.1.1h.2c.2 0 .4 0 .6 0l.1-.1c.3-.2.5-.3.9-.4.6.7 1.2 1.3 1.4 1.4.1.7.1 1.1 0 1.2-.3.2-1.6.5-2.4.6l-1.5.1 1.1.8c.2.1.6.5.6.8l.1.6.5-.2h.1c.1 0 .3.1.4.2l.4.5.4-.5c.1-.1.2-.3.3-.4.2-.3.5-.7 1.2-1.4l.2-.2v-.3c0 0 0-.2 0-1.6l.1-.4c.1-.3.2-.8.3-1.2.5.4 1.2 1 1.4 1.1l.2.1.3-.1c.2.1.4.2.6.2h.1l.1-.1c.4.2.8.2 1 0l.1-.1.1-.1h.1l.2-.4c0-.1.1-.4-.3-.7-.2-.1-.5-.4-.8-.7.1-.1.1-.4-.1-.7-.2-.4-1-1.2-1.3-1.6v-.2c.3.4.5.7.8.7h.1c.2 0 .4-.2.5-.5.1-.1.1-.3 0-.5.1 0 .2.1.3.1h.2l.3-.1.1-.3c.1-.4-.2-1-.8-1.6.9-.4 2-.9 2.2-1.5.1-.2 0-.4-.1-.6.2-.2.3-.4.4-.6 0-.2 0-.4-.1-.6v-.1c.2-.2.3-.5.3-.7 0-.2-.1-.5-.3-.6l-.3-.1c.3-.7.2-.9.1-1l-.1-.2h-.3c.1-.3.1-.7 0-1.1l-.1-.2-.4-.1h-.1c0-.3-.2-.6-.4-.7l-.1-.1h-.1c0-.3-.1-.4-.2-.5-.1-.2-.3-.3-.5-.3-.4 0-.5.3-.6.6-.1.3-.3.7-.6 1.2 0-1.1-.5-1.5-.9-1.6h-.1c-.1-.3-.2-.5-.4-.7-.2-.2-.5-.3-.6-.3h-.1c-.4-.5-.9-.6-1.3-.4h-.2c-.7-.4-1.4-.3-1.5.3 0 .3.2.5.4.6.1.1.4.3.6.5-.2.1-.5.2-.6.4-.2.3-.4.6-.3 1.1-1.4 1.3-3 3-3.1 3.9v.1l.1.1c.1.2.3.6.7.6h.1l.5-.3-.1-.4c.4-.3 1.4-1.1 2.4-1.7-.3.3-.6.6-1 .9-1.3 1.1-2.6 2.2-2.5 4.2v.2h-.4v.5c-.1.2-.2 3-.2 3.7m2.2-.3c-.2.2-.3.2-.3.2-.2-.1-.4-.7-.5-1.3.3.3.5.7.8 1.1" fill="#3e4347"/><g fill="#ffce31"><path d="m45.1 37l.8.5c0 2.5 0 2.6 0 2.6-1.1 1.1-1.2 1.5-1.5 1.8-.4-.6-1.1-.4-1.1-.4-.1-.6-.8-1.1-.8-1.1 1-.1 2.7-.6 2.8-.8.4-.6-.2-2.6-.2-2.6"/><path d="m40.9 32.5c-.1.8.4 5.8 2.3 2.5l1.8 1.3c0 0-1.4-.6-2.7.4-.1 0-.2 0-.3 0-.3-.3-.9-1.1-1.3-1 0-.7 0-3.6 0-3.6.2 0 .2.4.2.4"/><path d="m41.1 27.9l.1.3c-.2.1-.3-.3-.3-.3.2-1 3.4-4 3.4-4l1.4.3.1.6c-1.2.4-4.6 2.9-4.7 3.1"/></g><path d="m41.1 31.4c-.1 2.5 4.2 6.5 4.2 6.5h.8c0 0 .2-1.3.7-1.8.1.1 1.6 1.3 1.8 1.5.1 0 0-.3 0-.3s.6.5.9.5c.2-.1 0-.4 0-.4s.8.6 1.1.4c0-.1-.5-.5-.8-.6.2.1 1.4.4 1 .1-.5-.3-1.4-1.3-1.4-1.3s.6.1.3-.3c-.2-.4-1.4-1.8-1.4-1.8.2-.5-.1-1.3-.4-2 .9.3 1.5 1.9 1.7 1.9.4-.1.1-1.2-.6-1.9.5.3 1.3 1.1 1.5 1 .2-.1-.2-.9-1.1-1.8 0 0 3.1-1.1 2.5-1.7 0-.1-1.9.9-1.1.4 0 0 1.8-1.1 1.4-1.6-.2-.1-1.3.7-1.2.5 0 0 1.8-1.4 1.2-1.8-.3-.1-1.5.9-1 .5 0 0 1.1-2.1.6-1.7-2.9 2.1.1-.1-.4-1.4-.2-.1-.3 1.2-2.3 2.4.4-.4 2.3-2.6 1.4-3.2-.1-.1-.2.6-.8 1.4.2-.6.6-2.2.1-2.1-.1 0-.3 1.2-1.4 2.4 0-.2 0-.5 0-.6 0 0-.1.1-.3.3.1-.5.2-1.8-.4-1.9 0 .1-.1.5-.2 1.1 0-.7-.3-2.1-.8-2.1 0 0 0 .3 0 .6-.3-.6-.8-1.3-1.2-1.1 0 0 .3.5.5 1.2-.6-.6-1.9-1.7-2-1.1 0 .1 1 .7 1.3 1.5-.1 0-1.5-.3-1.3 1.2h.4c0 0-.1.7.6.8.9-.6.4.8.4.8-1.7 1.9-4.4 2.9-4.3 5.5m4.6-3.9c.1.7 0 1.8 0 2.3-.5-.1-.9 0-1.1 0 0-.4 0-.9.1-1.2 0-.1.5-.5 1-1.1m1.8 5.7l-.6-.5c0-.2 0-.3 0-.6.2.1.4.7.6 1.1" fill="#fff"/><g fill="#ffce31"><path d="m37.6 22.6l-1.3 3.1.9.3-.4 1.1h1.6l-.4-1.1.8-.3-1.2-3.1"/><path d="m26.5 22.6l-1.3 3.1.9.3-.4 1.1h1.5l-.3-1.1.8-.3-1.2-3.1"/><path d="m32 22.6l-1.2 3.1.8.3-.4 1.1h1.6l-.4-1.1.9-.3-1.3-3.1"/><path d="m30.9 37.3h-4v-3l1.2 1.5.8-1.5.7 1.5 1.3-1.5z"/><path d="m37.2 37.3h-4v-3l1.2 1.5.8-1.5.7 1.5 1.3-1.5z"/><path d="m34 40.8h-4v-3l1.3 1.5.7-1.5.8 1.5 1.2-1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f2.svg b/riot/emojione/svg/1f1e7-1f1f2.svg new file mode 100644 index 0000000..ba96edd --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#428bc1" d="m12 12h20v20h-20z"/><path fill="#fff" d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#ed4c5c"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m32.5 27.6l-13.5-16.6h-6l17.5 21.6h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M33,5H18.9C12.9,7.9,7.9,12.9,5,18.9V33h6V11h22V5z" fill="#ed4c5c"/><path d="M47,47l-6.2-2.4c-1.3-0.5-3.8-1.5-3.8-4.1V21.1H57v19.4c0,2.6-2.5,3.6-3.8,4.1L47,47z" fill="#3e4347"/><path d="m38.4 22.5v18c0 1.5 1.4 2.2 2.9 2.8l5.7 2.2 5.7-2.2c1.5-.6 2.9-1.2 2.9-2.8v-18c0 0-17.2 0-17.2 0" fill="#fff"/><path d="m39.8 38.3v1.4c0 1.3 1.2 1.9 2.4 2.4l4.8 1.9 4.8-1.9c1.2-.5 2.4-1.1 2.4-2.4v-1.4h-14.4" fill="#83bf4f"/><g fill="#ed4c5c"><path d="m41.8 40.2c-.4-.2-.3-1.5.1-1.8.3-.2 1.4-.1 1.4-.1l.5-1.1 1.4.7-1 1.2c0 0-.2.9-.5 1-.1 0-.3-.4-.4-.3-.2 0-.3.8-.6.8-.3 0-.2-.9-.4-.9-.1-.1-.3.6-.5.5"/><path d="m51.9 40.4c.4-.2.3-1.5-.1-1.8-.3-.2-1.4-.1-1.4-.1l-.4-1.2-1.4.7 1 1.2c0 0 .2.9.5 1 .1 0 .3-.4.4-.3.2 0 .3.8.6.8.3 0 .2-.9.4-.9.1-.1.2.6.4.6"/><path d="m50.4 32.2c0 0 2.4.3 2.9.8.6.6.9 2.8.3 3.3-.3.3-1.8-.4-1.8-.4v-.7l-1.9-1.6.5-1.4"/><path d="m43.1 31.7c0 0-1.7.5-2.1.9-.6.6-1.4 3.1-.6 3.6.4.2 1.5-.9 1.5-.9l1.7-1.1-.5-2.5"/></g><path d="m43.4 33l-1.8-1.5c0 0-.5-1.6.8-1.8 1.2-.2 4.8-.4 4.8-.4s4.5.1 4.8.3c1.1.7 0 2.2 0 2.2l-1.5 1.4 1.1 2.7-8.4-.2.2-2.7" fill="#42ade2"/><path fill="#ffce31" d="m42.8 34.8l.5-3.1 2.3-.8 1.7 2.5-.1 4z"/><path fill="#3e4347" d="m45.2 35.8l.4-2.3 3.1-.8 1.7 3.2-2.7 1.9z"/><path d="m42.1 35.3l.8-.7c0 0 1.3 1 1.8 1.1.3.1 1.1-.3 1.4-.1.2.2.1 1 .4 1.1.6.2 1.4-1.2 2-1.3.3-.1 1 .5 1.3.4.4-.2.8-1.7.8-1.7l1.2 1.1-.6 2.3-1.7.4-2.7 2-2.5-2.1-1.6-.4-.6-2.1" fill="#fff"/><path d="m42.3 29.7c0 0-.9-.5-.7-.7.2-.4 1.4-.4 1.9-.2.2.1.5.6.5.6l1.2-.3.1-.8c0 0-.6-.4-.5-.6 0-.3.9-.6.9-.6s-.9-.1-.9-.4c0-.2.7-.4.7-.4s-.5-.5-.3-.7c.1-.1.6.2.6.2s-.3-.6-.2-.8c.1-.2.5-.5.5-.5s0-.7.2-.8c.1 0 .8.2.8.2s.5-.5.6-.5c.2 0 .3.5.3.5s.6-.2.6-.2c.1 0 .1.9.1.9s.4.2.5.3c0 .2-.3.6-.3.6s.7 0 .8.1c.1.2-.4.6-.4.6s.5.4.5.6c0 .2-.7.4-.7.4s.6.4.6.6c0 .2-.6.3-.6.3l.4.7.8.5c0 0 1.3-.5 1.7-.5.2 0 .5.2.5.3.1.2-.5.5-.5.5l-.7.8-2.8-.9-3.2.1-2.1.9-.9-.8" fill="#ed4c5c"/><g fill="#3e4347"><ellipse cx="46.7" cy="25.3" rx=".3" ry=".2"/><ellipse cx="47.8" cy="25.3" rx=".3" ry=".2"/></g><g fill="#ffce31"><path d="m42.3 29.7c0 0 .6 1.1 1.1 1.1.5 0 2-.8 2-.8s0 .3 0 .4c.5.5 2.5.6 2.9 0 .1-.1-.1-.6-.1-.6s2.2.9 2.9.8c.3 0 .7-.9.7-.9s-.6.4-1 .3c-.8-.1-2.2-1-3-.9-.2 0-.7.4-.7.4h-.8c0 0-.6-.3-.8-.3-.6 0-1.6.9-2.2 1-.3 0-1-.5-1-.5"/><path d="m52.5 31.5h-.9l-1.5 1.8.9 1.6.7.5-.6 1.8-.9.5-.5-.3-.7.1.3.5-1.2.7-.9.5-.2.6.5.4.4-.5-.1-.4 1.3-.4.6-.8 1 .1.7-.5.6-2.2.2-.4-.8-.5-.8-1.3 1.1-1.1.5.3.3-.2z"/><path d="m41.4 31.5h.9l1.5 1.8-.9 1.6-.7.5.6 1.8.9.5.5-.3.7.1-.3.5 1.2.7.9.5.2.6-.5.4-.4-.5.1-.4-1.3-.4-.6-.8-1 .1-.7-.5-.6-2.2-.2-.4.8-.5.8-1.3-1.1-1.1-.5.3-.4-.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f3.svg b/riot/emojione/svg/1f1e7-1f1f3.svg new file mode 100644 index 0000000..3271af9 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f3.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C21.2,2,11.7,7.7,6.4,16.3v19.1H2.2C3.9,50.4,16.6,62,32,62c10.8,0,20.3-5.7,25.6-14.3V28.6h4.2 + C60.1,13.6,47.4,2,32,2z" fill="#ffe62e"/><path d="m2.7 25.5l58.6 13c.5-2.1.7-4.3.7-6.5 0-1.1-.1-2.3-.2-3.4l-55.4-12.3c-1.7 2.8-3 5.9-3.7 9.2" fill="#fff"/><path d="m61.3 38.5l-58.6-13c-.4 2.1-.7 4.3-.7 6.5 0 1.1.1 2.3.2 3.4l55.4 12.3c1.7-2.8 3-5.9 3.7-9.2" fill="#3e4347"/><g fill="#ed4c5c"><path d="m22 33.3c0 5.6 4.4 10.2 9.9 10.2s9.9-4.6 9.9-10.2c0-2.1-.6-4.1-1.7-5.8.6 1.2.9 2.6.9 4.1 0 4.2-2.7 7.8-6.4 8.9l-2-4.9v-7.9c.4.2 1 .4 1.9.7 3.2 1.4 5.7-2.8 5.7-2.8s-2.3.3-4.1-1.5c-1.2-1.2-2.6-.6-3.4-.1v-1h1.6c0 0 .4-4.7-2.3-6v3.4h-1.5v2.6h.5v1c-.8-.5-2.1-.8-3.2.2-1.9 1.8-4.1 1.5-4.1 1.5s2.5 4.2 5.7 2.8c.7-.3 1.2-.5 1.7-.7v7.7l-2 4.9c-3.6-1.3-6.2-4.7-6.2-8.9 0-1.5.3-2.8.9-4.1-1.1 1.8-1.8 3.7-1.8 5.9"/><path d="m21.2 40.6v-8c-3.2-1.7-3.2-4.1-3.2-4.1h-2.5c0 4.5 2.5 5.1 2.5 5.1v7h3.2"/><path d="m46 28.5c0 0 0 2.4-3.2 4.2v8h3.2v-7c0 0 2.5-.6 2.5-5.1 0-.1-2.5-.1-2.5-.1"/><path d="m31.9 45.2c-3.6 0-6.7-1.8-8.7-4.6l-3 4.6c0 0 2.7-.2 5.2 1.2 2.5 1.4 3.2 0 6.5 0 3.3 0 4 1.4 6.5 0 2.5-1.4 5.2-1.2 5.2-1.2l-3-4.6c-2 2.8-5.1 4.6-8.7 4.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f4.svg b/riot/emojione/svg/1f1e7-1f1f4.svg new file mode 100644 index 0000000..49a94e9 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#c94747"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#83bf4f"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#ffce31"/><path fill="#ed1c24" d="m31.3 37.7h1.4v2.9h-1.4z"/><g fill="#ffe000"><path d="m30.2 38h1.4v2.9h-1.4z"/><path d="m32.4 38h1.4v2.9h-1.4z"/></g><g fill="#699635"><path d="m30 38h.9v3.7h-.9z"/><path d="m33.1 38h.9v3.7h-.9z"/><path d="m29.6 23.4c0 0-.3-.1-.6-.1.2-.3.3-.9.3-.9s-.5.3-.7.6c-.1-.2-.3-.5-.3-.5s-.2.3-.2.5c0 .3.4.7.4.7s.5.1.8.1c.1-.1.3-.4.3-.4"/></g><path d="m29.1 24.1c0 0-.3 0-.6.1.1-.4 0-1 0-1s-.4.5-.5.8c-.2-.2-.4-.4-.4-.4s-.2.3-.1.6c.1.2.5.5.5.5s.5 0 .8-.1c.3-.1.3-.5.3-.5" fill="#83bf4f"/><path d="m28.9 25c0 0-.3.1-.6.2 0-.4-.2-.9-.2-.9s-.3.5-.3.9c-.2-.1-.5-.2-.5-.2s-.1.4.1.6c.2.2.7.4.7.4s.5-.1.7-.3c.1-.3.1-.7.1-.7" fill="#699635"/><path d="m28.8 25.9c0 0-.3.2-.5.4-.1-.4-.5-.8-.5-.8s-.1.6-.1.9c-.2-.1-.5-.1-.5-.1s0 .4.2.5c.2.2.7.2.7.2s.5-.2.6-.5c.3-.3.1-.6.1-.6" fill="#83bf4f"/><path d="m29 26.8c0 0-.2.2-.4.5-.2-.3-.7-.7-.7-.7s0 .6.2.9c-.3 0-.6 0-.6 0s.1.3.4.4.8 0 .8 0 .4-.4.4-.6c.1-.2-.1-.5-.1-.5" fill="#699635"/><path d="m29.5 27.5c0 0-.2.3-.2.5-.3-.3-.8-.5-.8-.5s.2.6.4.9c-.2 0-.5.2-.5.2s.2.3.5.3c.3 0 .7-.2.7-.2s.3-.4.3-.7c-.2-.2-.4-.5-.4-.5" fill="#83bf4f"/><path d="m30.1 28.2c0 0-.1.3-.1.6-.3-.2-.9-.3-.9-.3s.3.5.6.7c-.2.1-.5.3-.5.3s.3.2.5.2c.3 0 .7-.4.7-.4s.1-.5.1-.8c-.1-.1-.4-.3-.4-.3" fill="#699635"/><path d="m30.8 28.7c0 0 0 .3.1.6-.4-.1-1 0-1 0s.4.4.8.5c-.2.2-.4.4-.4.4s.3.2.6.1c.2-.1.5-.5.5-.5s0-.5-.1-.7c-.1-.4-.5-.4-.5-.4" fill="#83bf4f"/><path d="m34.4 23.4c0 0 .3-.1.6-.1-.2-.3-.3-.9-.3-.9s.5.3.7.6c.1-.2.3-.5.3-.5s.2.3.2.5c0 .3-.4.7-.4.7s-.5.1-.8.1c-.1-.1-.3-.4-.3-.4" fill="#699635"/><path d="m34.9 24.1c0 0 .3 0 .6.1-.1-.4 0-1 0-1s.4.4.5.8c.2-.2.4-.4.4-.4s.2.3.1.6c-.1.2-.5.5-.5.5s-.5 0-.8-.1c-.3-.1-.3-.5-.3-.5" fill="#83bf4f"/><path d="m35.1 25c0 0 .3.1.6.2 0-.4.2-.9.2-.9s.3.5.3.9c.2-.1.5-.2.5-.2s.1.4-.1.6c-.2.2-.7.4-.7.4s-.5-.1-.7-.3c-.1-.3-.1-.7-.1-.7" fill="#699635"/><path d="m35.2 25.9c0 0 .3.2.5.4.1-.4.5-.8.5-.8s.1.6.1.9c.2-.1.5-.1.5-.1s0 .4-.2.5c-.2.2-.7.2-.7.2s-.5-.2-.6-.5c-.3-.3-.1-.6-.1-.6" fill="#83bf4f"/><path d="m35 26.8c0 0 .2.2.4.5.2-.3.7-.7.7-.7s0 .6-.2.9c.3 0 .6 0 .6 0s-.1.3-.4.4c-.2.1-.8 0-.8 0s-.4-.4-.4-.6.1-.5.1-.5" fill="#699635"/><path d="m34.5 27.5c0 0 .2.3.2.5.3-.3.8-.5.8-.5s-.2.6-.4.9c.2 0 .5.2.5.2s-.2.3-.5.3c-.3 0-.7-.2-.7-.2s-.3-.4-.3-.7.4-.5.4-.5" fill="#83bf4f"/><path d="m33.9 28.2c0 0 .1.3.1.6.3-.2.9-.3.9-.3s-.3.5-.6.7c.2.1.5.3.5.3s-.3.2-.5.2c-.3 0-.7-.4-.7-.4s-.1-.5-.1-.8c.1-.1.4-.3.4-.3" fill="#699635"/><path d="m33.2 28.7c0 0 0 .3-.1.6.4-.1 1 0 1 0s-.4.4-.8.5c.2.2.4.4.4.4s-.3.2-.6.1c-.2-.1-.5-.5-.5-.5s0-.5.1-.7c.1-.4.5-.4.5-.4" fill="#83bf4f"/><path d="m35.3 25.6c-1 0-2.2 1.2-3.3 1.2-1.1 0-2.3-1.2-3.3-1.2-1 0-5 1.2-5 1.2 5.5 0 8.3 3 8.3 3s2.8-3 8.3-3c0 0-4-1.2-5-1.2" fill="#594640"/><circle cx="32" cy="26.3" r=".7" fill="#fff"/><path d="m27.2 32.2l.6.5.3-.6.1-.3c0-1 0-2 0-2l.2.1c-.2-.2-.4-.4-.7-.6l-.4-.3c-.1.1-.1 2.1-.1 3.2" fill="#ffe000"/><path d="m28.2 31.8l.6-1.5-.6-.5c-.1 0-.1 1 0 2" fill="#699635"/><path d="m27.2 29.1l.4.3c-.7-.6-1.6-1.3-2-1.7-.1-.1-.1 1.4-.1 3.1l1.7 1.4c0-1.1 0-3.1 0-3.1" fill="#d52b1e"/><path d="m36.8 32.2l-.6.5-.3-.6-.1-.3c0-1 0-2 0-2l-.2.1c.2-.2.4-.4.7-.6l.4-.3c.1.1.1 2.1.1 3.2" fill="#ffe000"/><path d="m35.8 31.8l-.6-1.5.6-.5c.1 0 .1 1 0 2" fill="#699635"/><g fill="#d52b1e"><path d="m36.8 29.1l-.4.3c.7-.6 1.6-1.3 2-1.7.1-.1.1 1.4.1 3.1l-1.7 1.4c0-1.1 0-3.1 0-3.1"/><path d="m27.8 38c-1.3-.7-1.6-2.8-1.5-3.1 0-.3 0-3.7 0-3.7l.4.3c-.7-.6-1.6-1.3-2-1.7-.1-.1 0 4.5 0 6.5 0 1 .7 4.3 4.9 2.6 0 0 2.1-.6 2.7-1.4-.1 0-.3 0-.4 0l-.2.1c-2.5 1.4-3.9.4-3.9.4"/></g><path d="m26.2 34.9c0 .3.2 2.4 1.5 3.1 0 0 1.4 1 3.9-.4-.7.3-1.3.3-1.7.2-1.2-.3-2.4-1.4-2.6-2.6-.2-1.1-.1-3.4-.1-3.4l.2.1c-.2-.2-.4-.4-.7-.6l-.4-.3c0 .2 0 3.6-.1 3.9" fill="#ffe000"/><path d="m27.9 33.4c0-.1 0-.5 0-.9-.3-.2.1.1-.6-.5l-.2-.2v.2c0 .3 0 2.3.1 3.3.2 1.1 1.4 2.3 2.6 2.6.4.1 1 0 1.8-.2l.1-.1c-2-.3-3.5-1.9-3.8-4.2" fill="#699635"/><path d="m36.2 38.1c1.3-.7 1.6-2.8 1.5-3.1 0-.3 0-3.7 0-3.7l-.4.3c.7-.6 1.6-1.3 2-1.7.1-.1 0 4.5 0 6.5 0 1-.7 4.3-4.9 2.6 0 0-2.1-.6-2.7-1.4.1 0 .3 0 .4 0l.2.1c2.5 1.4 3.9.4 3.9.4" fill="#d52b1e"/><path d="m37.8 35c0 .3-.2 2.4-1.5 3.1 0 0-1.4 1-3.9-.4.7.3 1.3.3 1.7.2 1.2-.3 2.4-1.4 2.6-2.6.2-1.1.1-3.4.1-3.4l-.2.1c.2-.2.4-.4.7-.6l.4-.3c0 .2 0 3.6.1 3.9" fill="#ffe000"/><path d="m36.1 33.5c0-.1 0-.5 0-.9.3-.2-.1.1.6-.5l.2-.2v.1c0 .3 0 2.3-.1 3.3-.2 1.1-1.4 2.3-2.6 2.6-.4.1-1 0-1.8-.2l-.1-.1c2-.2 3.5-1.8 3.8-4.1" fill="#699635"/><ellipse cx="32" cy="33.3" rx="4.2" ry="4.9" fill="#00a6de"/><path d="m35.5 33.4c0 2.3-6.9 2.3-6.9 0 0-2.3 1.5-4.1 3.5-4.1s3.4 1.9 3.4 4.1" fill="#e8a30e"/><ellipse cx="31.9" cy="31.6" rx="1.7" ry="1.4" fill="#d52b1e"/><path d="m31.8 31.3c-1 0-3.3 2.2-3.3 2.2 0 2.1 1.5 3.8 3.5 3.8s3.5-1.7 3.5-3.8c0 0-2.6-2.2-3.7-2.2" fill="#699635"/><path fill="#e8a30e" d="m32.3 35h.9v1.4h-.9z"/><path fill="#fff" d="m33.6 33.4h.5v2.8h-.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f6.svg b/riot/emojione/svg/1f1e7-1f1f6.svg new file mode 100644 index 0000000..a835cb5 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M12.6,54.9l48-32C57.4,12.8,49,5,38.4,2.7l-36,24C2.2,28.4,2,30.2,2,32C2,41.2,6.1,49.4,12.6,54.9z" fill="#fff"/><path d="m62 32c0-3.2-.5-6.2-1.4-9.1l-48 32c5.2 4.4 12 7.1 19.4 7.1 16.6 0 30-13.4 30-30" fill="#2a5f9e"/><path d="M2.5,26.7l36-24C36.4,2.2,34.2,2,32,2C17.2,2,5,12.7,2.5,26.7z" fill="#ffce31"/><path d="m39.5 29.5l2.8-1.6-2.8-1.6c-.7-5.8-5.3-10.4-11.1-11.1l-1.6-2.8-1.6 2.8c-5.8.8-10.4 5.4-11.2 11.2l-2.8 1.6 2.8 1.6c.7 5.8 5.3 10.4 11.1 11.1l1.6 2.8 1.6-2.8c5.8-.8 10.4-5.4 11.2-11.2m-12.7 9.6c-6.2 0-11.2-5-11.2-11.2s5-11.2 11.2-11.2 11.2 5 11.2 11.2-5.1 11.2-11.2 11.2" fill="#3e4347"/><path fill="#ed4c5c" d="m31.2 28l2.2-3.9h-4.4l-2.2-3.8-2.3 3.8h-4.4l2.2 3.9-2.2 3.8h4.4l2.3 3.8 2.2-3.8h4.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f7.svg b/riot/emojione/svg/1f1e7-1f1f7.svg new file mode 100644 index 0000000..3191070 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#699635"><path d="M61.5,26.8C59.1,12.7,46.8,2,32,2S4.9,12.7,2.5,26.8L32,12L61.5,26.8z"/><path d="M2.5,37.2C4.9,51.3,17.2,62,32,62s27.1-10.7,29.5-24.8L32,52L2.5,37.2z"/></g><path d="m32 12l-29.5 14.8c-.3 1.7-.5 3.4-.5 5.2s.2 3.5.5 5.2l29.5 14.8 29.5-14.8c.3-1.7.5-3.4.5-5.2s-.2-3.5-.5-5.2l-29.5-14.8" fill="#ffe62e"/><g fill="#428bc1"><path d="m26 28.4c-3.2 0-6.2.7-8.9 1.9-.1.6-.1 1.1-.1 1.7 0 8.3 6.7 15 15 15 5.6 0 10.5-3.1 13.1-7.6-3.7-6.5-10.9-11-19.1-11"/><path d="m46.8 34.4c.1-.8.2-1.6.2-2.4 0-8.3-6.7-15-15-15-5.9 0-11 3.4-13.5 8.4 2.4-.7 4.9-1.1 7.5-1.1 8.5 0 16 4 20.8 10.1"/></g><g fill="#fff"><path d="m26 24.3c-2.6 0-5.1.4-7.5 1.1-.7 1.5-1.2 3.1-1.4 4.9 2.7-1.2 5.7-1.9 8.9-1.9 8.2 0 15.4 4.4 19.1 10.9.9-1.5 1.4-3.2 1.7-4.9-4.8-6.1-12.3-10.1-20.8-10.1"/><circle cx="22" cy="32" r="1"/><circle cx="26" cy="38" r="1"/><circle cx="32" cy="38" r="1"/><circle cx="32" cy="42" r="1"/><circle cx="40" cy="38" r="1"/><circle cx="40" cy="42" r="1"/><circle cx="36" cy="40" r="1"/><circle cx="22" cy="36" r="1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f8.svg b/riot/emojione/svg/1f1e7-1f1f8.svg new file mode 100644 index 0000000..a353225 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m60 42c-5.5 0-10-4.5-10-10h-39.2v21.2c5.4 5.4 12.9 8.8 21.2 8.8 13.1 0 24.2-8.4 28.3-20-.1 0-.2 0-.3 0"/><path d="m60 22c.1 0 .2 0 .3 0-4.1-11.6-15.2-20-28.3-20-8.3 0-15.8 3.4-21.2 8.8v21.2h39.2c0-5.5 4.5-10 10-10"/></g><path d="m60.3 22h-49.5v20h49.5c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#ffe62e"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1f9.svg b/riot/emojione/svg/1f1e7-1f1f9.svg new file mode 100644 index 0000000..fb5784c --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,6C2.7,14.3-2.3,32.7,6,47l52-30C49.7,2.7,31.3-2.3,17,6z" fill="#ffce31"/><path d="m47 58c14.3-8.3 19.3-26.6 11-41l-52 30c8.3 14.3 26.7 19.3 41 11" fill="#ed4c5c"/><path d="m57.7 18.4c0 0-1.5-.1-2.3-.1-.8 0-1.5.5-2.4.6.6-.3.9-.8 1.4-1.1.5-.2 1.3-.3 1.4-1-.5.4-1.2.3-1.8.2-.6 0-1 .5-1.4.8.2-.9.7-1.5.8-2.4.1-.8 1.4-1.4 1-2.3-.1.8-1.1.9-1.4 1.6-.3.9-1.1 1.6-1.2 2.6-.1 1.2-1 .6-1.8.9-.2.1-1.1-1-2.4-1-2 .1-2.8.1-5.4-2.5-.6-.6-2.7-.8-3.5-.3.8 0 1.5.2 2.1.6-.4.3-1-.4-1.5-.1.8 0 1.1.4 1 1.1-.7-.5-1.9-1.2-2.8-.8-.6.3-1.7-.1-2 .7.8-.4 1.6-.1 2.4.2-.4.1-1.4.1-1.7.5.4-.1.8-.1 1.1 0-.1.3-.2.6-.1.9-1.1-.4-2.6-1-3.6-.2-1.1.9.6 1.9.9 1.3-.7.3-1-.9 0-.9 1.4-.1 2.7.5 3.9 1.1-.6.2-2.5 0-2.8-.8-.1.3-.1.7.2.9-.9 0-1.7.9-2.5.8-.7 0-2.1 0-2.2.9 1.1-1 2.6-.2 3.9-.4-.3.6-.5 1.3-.7 2-.3.9-1.2 1.3-1.7 2.2.4-.4.9-.7 1.5-.8-.3.7-1.1 1.8-.7 2.5.2-1.1.9-.8 1.7-1.2-.2.5.2 1.4.9 1.2-.3.5 0 1.2.6 1.4-.4.5-1.4.2-1.6.7.7-.3 1.3.8 2.2.5-.1.4 0 .7.2 1-.5-.1-1.4.3-1.7-.4-.3.8 1.1.6.9 1.2-.3 0-.7-.8-.9-.2-.1 0-.3-.6-.6-.7-.4-.1-.9.2-1.1.1.4-.6-.7-1-1.1-.6.1-.9-1.6-1.5-1.6-2.2-.3.5.3.9.2 1.4-.2-.2-.4-.3-.6-.2-.6.1-.2-.1-.8-.2-.6-.1-.3.3-.8 0-.3-.2-.7-.1-.8.1-.3-1-1.6-.5-1.9-1.3-.1.5.6 1 .7 1.5-.6-.5-1.7.1-1.4.9-.2.1-1.6-.4-1.3.7-.4-.4-2.7-.1-2.7.6.4-.3 1.2-.1 1.5.1-.3.2-.4.9-.2 1.2-1.1-.1-.6 1.4-1.1 1.7-.7.4-1.4 1.4-2.3 1.1.5.8 1.5 0 2.1.1-.7.5-.1 1.3-.6 1.8-.4.5-.9 1.7-1.8 1.4.1.4.6.5 1 .5-.3.2-.6.6-1 .4 0 .3.2.5.4.6-.5 0-.9.2-1.4.1 0 .2.1.5.2.7-.6-.2-1.8-.5-2.2.2.3 0 .8 0 .9.4-.4-.3-.9-.1-1.4-.1-.7.1-1.1-.3-1.8-.5-.5-.2-2.8-.6-2.9.2.5-.4 1.6.4 2.2.3.9-.1 1.6.6 2.4.8-1.2-.1-1.9.5-3 .6-.5.1-1.6-.1-1.7.6.5-.3 1.1.1 1.7-.1.5-.1 1-.5 1.5-.3-.3.4-.8.6-1.3.7-.8.1-1.1.4-1.8.8-.5.3-1.2.2-1.7.6-.4.3-.8.8-1.4.8.7.4 1.4-.3 2-.5.8-.3 1.6-.2 2.3-.7-.4 1-1.8.8-2.6 1.4-1 .7-1.7 1.8-2.9 2 .5.6 1.6-.2 2-.4.9-.5 2-.3 2.8-1 .8-.7 1.7-.8 2.4-1.5.2-.2 2-1.4 2.2-1.4-.7.3-.8 1.4-1.7 1.6.7.3 2.2-.9 3-1.2-.4.6-1.7.9-1.8 1.6.7-.6 1.7-.4 2.3-.9.6-.5 1.8-1.3 2.2-2 .4-.6.8-.9 1.4-1.3.3-.2.6-.5 1-.6.4-.1.8.2 1.2 0 .1 1.8-.6.3-1.2 1.1-.1.1.6.3.7.5 0 0-1.1 1-1.2 1 .3.4 1 .1 1.3-.2-.1.3.3.6.2.9.2 0 .7-1.1.9-.9-.5.2.4.5.4.5-.3.2 0 .5.2.4-.3.1 0 .6-.2.8-.2.5-.6.4-1.1.8-.4.4-.5.9-.4 1.4.1.4.4 1.7.6.9-.4 1.9 2 3.1 3.4 1.8.7-.7 1.5-3.6.3-4.2.2.1.5 0 .6-.1.1.2.2.3.4.3.7.2.9 1.1.8 1.8.5-.6.4-2.1-.1-2.7-.2-.2-.9-.5-1.2-.6-.3 0-.5 0-.6.3-.2-.2-.5-.3-.8-.2.1-.4-.4-1.4-.8-1.6-.8-.5-.3-1.8-.1-2.5.3.2 1.2.5 1.6.7.4.2 2.6.7 1.7.3 2 .8 3.2-2.4 1.3-3.1.8.1.1-.7-.3-.9-.6-.2-1.8.1-2.3.5.1-.1.3-.8.4-.9.3-.3.6-.6 1.1-.4-1.9-2.5-2.5 2.1-3.4 1.7-.6-.3-.7-2-.4-2.4.2-.2 0-.5.1-.8.2-.3.6-.6.8-.9.7-1.2 3.6-.6 4.9 0 1.7.7 4 1 5.8 1.2-.2.4.1.6 0 .9-.2-.1-1.8-.1-1.9 0 .4 0 .8.5 1.3.5-.8.1-.9 1.2-1.5 1.2.4.3 2.7-1.1 1.7.6.4 0 .6-.5.7-.9.4.2 2.8 2.2 3.3 1.4 0 .5.7.5 1 .5.5 0 1.4.4 1.8.3-1.5 1.1 2.6 4.6 2.6 3.2 0-.9 1.3.8 2.6-.4 1.3-1.3.2-3.8-1.6-3.7.5-.1 1.6-.2 1.8.7.9-1.5-1.5-2.3-2.5-1.9.6-.3.2-.6.7-.9.4-.2.7-.6 1.2-.5-.6-.7-3-.5-2.8.7-.3-.1-.5 0-.7.2 0 .4-.2.5-.6.5-.2.4-.4.5-.6.1-.4-.2-.6-.1-1-.4-.3-.2-1-.2-1.3-.2-.5.1-.7-.6-1.3-.4-.1-1 .7-1.6 1.1-2.4.5-.9 1-1.8 1.2-2.9.1-.9-.2-1.7 1-1.8.9-.1 1.1 1 .2 1.3.4.3.9-.1 1.1-.5-.3.6-.3 1.7.5 1.9-.2-.5.4-.9.2-1.4.4.2.8.6.8 1.1.5-.6-.2-1.2-.2-1.8.9.1 1.5-.2 2.2-.8.8-.5.9-.5 1.5 0 1.1.8 3.5.6 4.2-.7.3-.7 1-.7.4-1.5-.4-.6-.9-1.1-1.2-1.7-.8-1.9-3.3.2-3.6.8-.4.6-.1.7-.9.6-1-.1-1.9.6-3 .4-1-.2-1.7-.7-2.5-1.2-1.1-.6-1.7-.6-2.5-1.7.6.1 1.3.2 1.8.7.4.4.8 1 1.5.8-.7-.2-1.4-1.3-2.1-1.7.7-.9 2.2-.6 3.3-.6.9 0 1.3 1 2 1.4-.4.2-.5.8-1 .8.4.2.9.1 1.3-.2-.1.4 0 .8.4 1-.3-.4.2-.7.4-.9.1.3.5.5.4.8 1-.2.3-2.6-.4-2.8 1.3-1.1 1.6.9 1.2 1.8.5-.4.5-1 .5-1.6 1 .3 5.8-1.1 5.6.8.7-.8-.6-1.4-1.2-1.5-.5-.1-.8-1.5-1.5-.9.8-.1.4 1-.1 1.2.2-.7-.5-1.2-1.2-1 1.7.5-.9 1.8-.7.9.1-.6.6-1 .5-1.6-.1-.3-.3-.7-.3-.9.4.1.4-.2.1-.4.3.1.6-.2.9-.2.7-.1 1.3-.4 2-.7 1-.3 3.5-.7 3.5-.7m-11.3 3.3c.3-.7 1.9-1.4 1.4-.2.2-.1.5-.8.8-.6.4.2.6.6.1.8.4 0 .8-.3 1.2-.2-.2.2-.2.6-.5.8-.6.4-2.1-.5-3-.6m1.8 1.6c-.4-.2-1.2-.6-1.5-1 .6.2 1.3.3 1.9.6 0 0-.3.2-.4.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1fb.svg b/riot/emojione/svg/1f1e7-1f1fb.svg new file mode 100644 index 0000000..e9f5672 --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m61.7 28c-.1-1-.3-2-.6-3h-58.3c-.2 1-.4 2-.6 3h59.5"/><path d="m2.3 36c.1 1 .3 2 .6 3h58.3c.2-1 .4-2 .6-3h-59.5"/><path d="m20 4.5c-1 .5-2 1-3 1.5v52c1 .6 2 1.1 3 1.5v-55"/><path d="m28 2.3v59.5c1 .1 2 .2 3 .3v-60.1c-1 0-2 .1-3 .3"/></g><g fill="#2a5f9e"><path d="m2 32c0 1.4.1 2.7.3 4h59.5c.2-1.3.3-2.6.3-4s-.1-2.7-.3-4h-59.5c-.2 1.3-.3 2.6-.3 4"/><path d="m20 59.5c2.5 1.1 5.2 1.9 8 2.2v-59.4c-2.8.4-5.5 1.1-8 2.2v55"/></g><g fill="#ed4c5c"><path d="M17,25V6C10,10.1,4.8,16.9,2.8,25H17z"/><path d="M17,39v19C10,53.9,4.8,47.1,2.8,39H17z"/><path d="M32,2c-0.3,0-0.7,0-1,0v23h30.2C58,11.8,46.2,2,32,2z"/><path d="m31 39v23c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1fc.svg b/riot/emojione/svg/1f1e7-1f1fc.svg new file mode 100644 index 0000000..05f152a --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.9 24c-3.5-12.7-15.1-22-28.9-22s-25.4 9.3-28.9 22v16c3.5 12.7 15.1 22 28.9 22 13.8 0 25.4-9.3 28.9-22 0 0 0-16 0-16" fill="#b4d7ee"/><g fill="#fff"><path d="m61.6 27c-.2-1-.4-2-.7-3h-57.8c-.3 1-.5 2-.7 3 0 0 59.2 0 59.2 0"/><path d="m2.4 37c.2 1 .4 2 .7 3h57.8c.3-1 .5-2 .7-3h-59.2"/></g><path d="m2 32c0 1.7.1 3.4.4 5h59.2c.3-1.6.4-3.3.4-5s-.1-3.4-.4-5h-59.2c-.3 1.6-.4 3.3-.4 5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1fe.svg b/riot/emojione/svg/1f1e7-1f1fe.svg new file mode 100644 index 0000000..f27068a --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m3.2 26.6v1h.6v1h.6v-1h.6v-1h.6v-1h.6v-1h.6v-1h.6v-1h-.8v-1h-.5v-1h-1.8v1h1.2v1h-.6v1h-.6v1h-.6v-1h-.5c-.2.8-.4 1.7-.6 2.5v.4h.6z"/><path d="m10.1 11.5c-.1.1-.2.2-.3.3h.3v-.3"/><path d="m14.8 7.9h-.6v1h-.6v1h-.6v1h-.6v1h-.6v-1h-.6v-.5c-.2.2-.4.4-.6.6v.9h.6v1h.6v1h-.6v1h-.6v1h-.6v-1h-.5v-1h-.5v-1c-.2.2-.4.5-.6.7v.3h-.2c-.2.1-.3.2-.4.4v.5h-.4c-.1.1-.1.2-.2.3v.6h-.4c-.2.3-.4.7-.6 1h.5v1h.6v1h.6v1h.6v1h.2.1.2v-1h.6v-1h.6v-1h.6v-1h.6v-1h.6v-1h.6v1h.4v1h.6v1h.6v1h.6v1h.6v-2h-.6v-1h.6v-2.9h-.6v1h-.6v1h-.6v-1h-.6v-1h-.6v-1h.6v-1h.6v-1h.6v1h.6v1h.6v-3h-.6v-1h.6v-1.7c-.2.1-.4.3-.6.4v.4m-5.8 9.8h-.3-.1-.2v-2h.2.1.3v2"/><path d="m2.6 35.4v-1h.6v-1h.6v-1h.6v-.4-.2-.4h-.7v-1h-.5v-1h-.6v-1h-.4c-.1 1.3-.2 2.4-.2 3.6 0 1.2.1 2.3.2 3.4h.4"/><path d="m14.8 29.5h-.6v1h-.6v1h-.6v.4.2.4h.6v1h.6v1h.6v.9h.5v-6.8h-.5z"/><path d="m9.5 12.1c-.2.2-.4.5-.6.7h.6v-.7"/><path d="m9.8 52.2c.1.1.2.2.3.3v-.3h-.3"/><path d="m9 51.2c.2.2.4.5.6.7v-.7h-.6"/><path d="m14.8 55.1v-1h.6v-3h-.6v1h-.6v1h-.6v-1h-.6v-1h-.6v-1h.6v-1h.6v-1h.6v1h.6v1h.6v-3h-.6v-1h.6v-2h-.6v1h-.6v1h-.6v1h-.6v1h-.6v1h-.6v-1h-.6v-1h-.6v-1h-.6v-1h-.5v-1h-.5v-1h-.3-.1-.2v1h-.6v1h-.6v1h-.6v1h-.4c.2.3.4.7.6 1h.4v.6c.1.1.1.2.2.3h.4v.5c.1.4.2.5.4.7h.2v.3c.2.2.4.5.6.7v-1h.6v-1h.6v-1h.6v1h.6v1h.6v1h-.6v1h-.6v.9c.2.2.4.4.6.6v-.5h.6v-1h.6v1h.4v1h.6v1h.6v1h.6v.4c.2.1.4.3.6.4v-1.8l-.6-.1m-5.8-6.9h-.3-.1-.2v-2h.2.1.3v2"/><path d="m14.8 37.4h-.6v-1h-.6v-1h-.6v1h-.6v1h-.5v1h-.6v1h-.6v1h-.6v.9h.6v1h.6v1h1.7v-1h-1.1v-1h.5v-.9h.6v-1h.6v1h.6v.9h.6v1h.5v-1.9h-.5v-1h.5v-1h-.5z"/><path d="m14.8 22.7h-.6v.9h-.6v1h-.6v-1h-.6v-.9h-.5v-1h1.1v-1h-1.7v1h-.6v1h-.6v.9h.6v1h.6v1h.6v1h.5v1h.6v1h.6v-1h.6v-1h.6v-1h.5v-1h-.5v-1h.5v-1.9h-.5z"/><path d="m3.7 39.4h.6v1h.6v1h.6v1h-1.2v1h1.7v-1h.6v-1h.6v-1h-.6v-1h-.5v-1h-.6v-1h-.6v-1h-.6v-1h-.6v1h-.5v1h-.6v.4c.2.9.4 1.7.6 2.5h.5c0 .1 0-.9 0-.9"/><path d="m10.1 26.6h-.6v-1h-.5v-1h-.3-.1-.2v1h-.6v1h-.6v1h-.6v1h-.5v1h-.6v2.4.2 2.4h.6v1h.6v1h.6v1h.6v1h.6v1h.2.1.2v-1h.6v-1h.6v-1h.6v-1h.6v-1h.6v-2.4-.2-2.4h-.6v-1h-.6v-1h-.6l-.1-1m-3.5 5.3v.2.4h-.5v-.4-.2-.4h.6v.4zm4.1.2v-.2-.4h.6v.4.2.4h-.6c0 0 0-.4 0-.4m-2.3-5.5h.2.1.3v1h-.3-.1-.2v-1m.6 10.8h-.3-.1-.2v-1h.2.1.3v1m1.1-6.9h-.6v1h-.5v.4.2.4h.6v1h.6v2h-.7v-1h-.5v-1h-.3-.1-.2v1h-.6v1h-.6v-2h.6v-1h.6v-.4-.2-.4h-.6v-1h-.6v-2h.6v1h.6v1h.2.1.3v-1h.6v-1h.6l-.1 2"/></g><g fill="#c8313e"><path d="m7.2 15.1c-.1.2-.3.4-.4.6h.4v-.6"/><path d="m7.8 14.8v-.5c-.1.2-.2.3-.4.5h.4"/><path d="m8.4 13.8v-.3c-.1.1-.1.2-.2.3h.2"/><path d="m6.1 31.9v.2.4h.5v-.4-.2-.4h-.5z"/><path d="m14.8 16.8h.6v1h-.6z"/><path d="m9.5 13.8v1h.6v1h.6v-1h.6v-1h.6v-1h-.6v-1h-.6v-.9c-.2.2-.4.4-.6.6v.3h-.3c-.1.1-.2.2-.3.3v.7h-.5c0 0 0 0 0 0v1c0 0 .5 0 .5 0"/><path d="m14.8 8.9h.6v1h-.6z"/><path d="m14.8 11.8h-.6v-.9h-.6v.9h-.6v1h-.6v1h.6v1h.6v1h.6v-1h.6v-1h.5v-1h-.5z"/><path d="m11.9 10.9v1h.6v-1h.5v-1h.6v-1h.6v-1h.6v-.4c-1.1.8-2.2 1.6-3.1 2.5-.1.1-.2.2-.4.3v.5h.6z"/><path d="m8.6 15.8h-.2v1.9h.2.1.3v-1.9h-.3z"/><path d="m9.5 29.5h-.5v1h-.3-.1-.2v-1h-.6v-.9h-.6v1.9h.6v1h.6v.4.2.4h-.6v1h-.6v1.9h.6v-.9h.6v-1h.2.1.3v1h.5v.9h.6v-1.9h-.6v-1h-.5v-.4-.2-.4h.5v-1h.6v-1.9h-.6z"/><path d="m14.8 23.6h.6v1h-.6z"/><path d="m14.8 18.7h-.6v-1h-.6v-1h-.6v-1h-.6v-1h-.6v1h-.6v1h-.6v1h-.6v1h-.5v1h-.5v1h-.3-.1-.2v-1h-.6v-1h-.6v-1h-.6v-1h-.4c-.6 1-1.2 2.1-1.7 3.2-.5 1.2-.9 2.4-1.3 3.6h.5v1h.6v-1h.6v-1h.6v-1h-1.2v-1h1.7v1h.6v1h.6v1h-.6v1h-.5v1h-.6v1h-.6v1h-.6v1h-.6v-1h-.5v-1h-.6v-.4c-.2.8-.3 1.6-.4 2.4h.4v1h.6v1h.6v1h.6v.4.2.4h-.7v1h-.5v1h-.6v1h-.4c.1.8.2 1.6.4 2.4v-.4h.6v-1h.6v-1h.6v1h.6v1h.6v1h.6v1h.6v1h.6v1h-.8v1h-.5v1h-1.8v-1h1.2v-1h-.6v-1h-.6v-1h-.6v1h-.5c.4 1.1.8 2.3 1.3 3.5.5 1.1 1.1 2.2 1.7 3.2h.5v-1h.6v-1h.6v-1h.6v-1h.2.1.2v1h.6v1h.6v1h.6v1h.6v1h.6v1h.6v-1h.4v-1h.6v-1h.6v-1h.6v-1h.6v-2h-.6v-1h-.6v-1h-.6v-1h-.6v1h-.6v1h-.6v1h1.2v1h-1.7v-1h-.6v-1h-.6v-1h.6v-1h.6v-1h.6v-1h.6v-1h.5v-1h.6v1h.6v1h.6v1h.6v-3h-.6v-1h-.6v-1h-.6v-1h-.6v-.4-.2-.4h.6v-1h.6v-1h.6v-1h.6v-3h-.6v1h-.6v1h-.6v1h-.6v-1h-.6v-1h-.6v-1h-.6v-1h-.6v-1h-.6v-1h.6v-1h.6v-1h1.8v1h-1.2v1h.6v1h.6v1h.6v-1h.6v-1h.6v-1h.6v-2h-.6v-.5m-4.1 8.9v1h.6v1h.6v2.4.2 2.4h-.6v1h-.6v1h-.6v1h-.6v1h-.5v1h-.3-.1-.2v-1h-.6v-1h-.6v-1h-.6v-1h-.5v-1h-.6v-2.4-.2-2.4h.6v-1h.6v-1h.6v-1h.6v-1h.6v-1h.2.1.2v1h.6v1h.6v1h.5"/><path d="m8.7 27.6h.3v-1h-.3-.1-.2v1h.2z"/><path d="m7.2 48.2h-.4c.1.2.3.4.4.6v-.6"/><path d="m7.8 49.2h-.4c.1.2.2.3.4.5v-.5"/><path d="m8.4 50.2h-.2c.1.1.1.2.2.3 0 0 0-.3 0-.3"/><path d="m14.8 46.3h.6v1h-.6z"/><path d="m14.8 49.2h-.6v-1h-.6v1h-.6v1h-.6v1h.6v1h.6v.9h.6v-.9h.6v-1h.5v-1h-.5z"/><path d="m9.5 51.2v.7c.1.1.2.2.3.3h.3v.3c.2.2.4.4.6.6v-.9h.6v-1h.6v-1h-.6v-1h-.6v-1h-.6v1h-.6v1h-.5v1c0 0 0 0 0 0h.5"/><path d="m14.8 54.1h.6v1h-.6z"/><path d="m11.6 54c1 .9 2 1.8 3.1 2.5v-.4h-.6v-1h-.6v-1h-.5v-1h-.6v-1h-.6v1h-.6v.5c.2.2.3.3.4.4"/><path d="m8.6 46.3h-.2v1.9h.2.1.3v-1.9h-.3z"/><path d="m14.8 39.4h.6v1h-.6z"/><path d="m11.3 32.1v-.2-.4h-.6v.4.2.4h.6z"/><path d="m8.6 36.4h-.2v1h.2.1.3v-1h-.3z"/></g><path d="m15.3 44v12.9c4.8 3.2 10.5 5.1 16.7 5.1 7.9 0 15-3 20.4-8 3-2.8 5.5-6.2 7.1-10h-44.2" fill="#83bf4f"/><path d="m59.5 44c1.6-3.7 2.5-7.7 2.5-12s-.9-8.3-2.5-12c-1.7-3.8-4.1-7.2-7.1-10-5.4-5-12.5-8-20.4-8-6.2 0-11.9 1.9-16.7 5.1v36.9h44.2" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7-1f1ff.svg b/riot/emojione/svg/1f1e7-1f1ff.svg new file mode 100644 index 0000000..a2e5cff --- /dev/null +++ b/riot/emojione/svg/1f1e7-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="M52.4,10C47,5,39.9,2,32,2c-7.9,0-15,3-20.4,8H52.4z"/><path d="m11.6 54c5.4 5 12.5 8 20.4 8 7.9 0 15-3 20.4-8h-40.8"/></g><path d="M2,32c0,8.7,3.7,16.5,9.6,22h40.8c5.9-5.5,9.6-13.3,9.6-22s-3.7-16.5-9.6-22H11.6C5.7,15.5,2,23.3,2,32z" fill="#428bc1"/><circle cx="32" cy="32" r="16" fill="#fff"/><path d="m32 44.5c-6.9 0-12.5-5.6-12.5-12.5s5.6-12.5 12.5-12.5 12.5 5.6 12.5 12.5-5.6 12.5-12.5 12.5m0-24c-6.3 0-11.5 5.2-11.5 11.5s5.2 11.5 11.5 11.5 11.5-5.2 11.5-11.5-5.2-11.5-11.5-11.5" fill="#89664c"/><g fill="#699635"><path d="m31 22v-1.3c.4 0 .7-.3.7-.7s-.3-.7-.7-.7v-1.3c1.1 0 2 .9 2 2s-.9 2-2 2"/><path d="m28.5 22.6l-.3-1.3c.4-.1.6-.5.5-.8-.1-.4-.5-.6-.8-.5l-.3-1.3c1.1-.3 2.2.4 2.4 1.4.3 1.1-.4 2.2-1.5 2.5"/><path d="m26.3 23.7l-.6-1.2c.3-.2.4-.6.3-.9-.2-.3-.6-.4-.9-.3l-.6-1.2c1-.5 2.2-.2 2.7.8.4 1.1.1 2.3-.9 2.8"/><path d="m24.4 25.4l-.9-1c.3-.3.3-.7 0-.9-.3-.3-.7-.3-.9 0l-.9-1c.8-.8 2.1-.7 2.8.1.8.8.7 2-.1 2.8"/><path d="m23 27.5l-1.1-.7c.2-.3.1-.7-.2-.9-.3-.2-.7-.1-.9.2l-1.1-.7c.6-.9 1.8-1.2 2.8-.6.8.5 1.1 1.8.5 2.7"/><path d="m22.2 29.9l-1.3-.4c.1-.4-.1-.7-.4-.8-.4-.1-.7.1-.8.4l-1.3-.4c.3-1 1.5-1.6 2.5-1.3 1 .3 1.6 1.4 1.3 2.5"/><path d="m22 32.4l-1.3-.1c0-.4-.3-.7-.6-.7-.4 0-.7.3-.7.6l-1.4-.1c.1-1.1 1-1.9 2.1-1.9 1.1.1 1.9 1.1 1.9 2.2"/><path d="m22.4 34.9l-1.3.2c-.1-.4-.4-.6-.8-.5-.4.1-.6.4-.5.8l-1.3.2c-.2-1.1.5-2.1 1.6-2.3 1-.2 2.1.5 2.3 1.6"/><path d="m23.4 37.2l-1.2.6c-.2-.3-.6-.5-.9-.3-.3.1-.5.5-.3.8l-1.2.6c-.5-1 0-2.2 1-2.7.9-.5 2.1 0 2.6 1"/><path d="m24.9 39.1l-1 .8c-.2-.3-.7-.3-.9-.1-.3.2-.3.7-.1.9l-1 .9c-.7-.9-.6-2.1.3-2.8.8-.6 2-.5 2.7.3"/><path d="m26.9 40.7l-.8 1.1c-.3-.2-.7-.1-.9.1s-.1.7.1.9l-.8 1.1c-.9-.6-1.1-1.9-.4-2.8.7-.9 1.9-1.1 2.8-.4"/><path d="m29.2 41.7l-.5 1.2c-.3-.1-.7 0-.9.4-.1.3 0 .7.4.9l-.5 1.2c-1-.4-1.5-1.6-1.1-2.6s1.6-1.5 2.6-1.1"/><path d="m31.7 42l-.2 1.3c-.4 0-.7.2-.7.6 0 .4.2.7.6.7l-.2 1.4c-1.1-.1-1.9-1.1-1.7-2.2.1-1.1 1.1-1.9 2.2-1.8"/><path d="m34.2 41.8l.2 1.3c-.4 0-.6.4-.6.7 0 .4.4.6.7.6l.2 1.3c-1.1.1-2.1-.6-2.2-1.7-.1-1.1.7-2.1 1.7-2.2"/><path d="m36.6 40.9l.5 1.2c-.3.1-.5.5-.4.9.1.3.5.5.9.4l.5 1.2c-1 .4-2.2-.1-2.6-1.1-.4-1 .1-2.2 1.1-2.6"/><path d="m38.7 39.5l.8 1.1c-.3.2-.4.6-.1.9.2.3.6.4.9.1l.8 1.1c-.9.6-2.1.4-2.8-.4-.7-.9-.5-2.1.4-2.8"/><path d="m40.3 37.6l1 .8c-.2.3-.2.7.1.9.3.2.7.2.9-.1l1 .8c-.7.9-2 1-2.8.3-.7-.6-.9-1.8-.2-2.7"/><path d="m41.5 35.4l1.2.6c-.2.3 0 .7.3.9.3.2.7 0 .9-.3l1.2.6c-.5 1-1.7 1.4-2.7 1s-1.4-1.9-.9-2.8"/><path d="m42 32.9l1.3.2c-.1.4.2.7.5.8.4.1.7-.2.8-.5l1.3.2c-.2 1.1-1.3 1.8-2.3 1.6-1.1-.2-1.8-1.2-1.6-2.3"/><path d="m41.9 30.4l1.3-.1c0 .4.3.6.7.6.4 0 .6-.3.6-.7l1.3-.1c.1 1.1-.8 2.1-1.9 2.1-1 .1-1.9-.7-2-1.8"/><path d="m41.2 28l1.3-.4c.1.4.5.5.8.4.3-.1.5-.5.4-.8l1.3-.4c.3 1-.2 2.2-1.3 2.5s-2.2-.3-2.5-1.3"/><path d="m39.9 25.8l1.1-.7c.2.3.6.4.9.2.3-.2.4-.6.2-.9l1.1-.7c.6.9.3 2.2-.6 2.8-.9.5-2.1.2-2.7-.7"/><path d="m38.1 24l.9-1c.3.3.7.2.9 0 .3-.3.2-.7 0-.9l.9-1c.8.8.8 2 .1 2.8-.7.8-2 .9-2.8.1"/><path d="m35.9 22.8l.6-1.2c.3.2.7.1.9-.3.2-.3.1-.7-.3-.9l.6-1.2c1 .5 1.3 1.8.8 2.7-.4 1-1.6 1.4-2.6.9"/><path d="m33.5 22.1l.3-1.3c.4.1.7-.1.8-.5.1-.4-.1-.7-.5-.8l.3-1.3c1.1.3 1.7 1.4 1.4 2.4-.1 1.1-1.2 1.7-2.3 1.5"/><ellipse cx="31.8" cy="38.7" rx="7.8" ry="1.6"/><path d="m37.3 24.9c0-.7-1.1-1.2-2.4-1.2.2-.1.3-.3.3-.5 0-.5-.8-.9-1.9-.9-.5 0-1 .1-1.4.3-.2 0-.4-.1-.6-.1-.9 0-1.7.3-1.9.8-.1 0-.3 0-.4 0-1 0-1.9.4-1.9.9 0 .4.5.7 1.1.8-.5.2-.8.5-.8.9 0 .7 1.1 1.2 2.5 1.2.7 0 1.3-.1 1.7-.3 0 .1-.1.2-.1.3 0 .3.3.6.7.9-.1 0-.2.1-.2.1-.3-.5-.9-.8-1.7-.8-1 0-1.9.5-1.9 1.2 0 .7.8 1.2 1.9 1.2.5 0 1-.2 1.4-.4.3.5.9.8 1.7.8 1 0 1.9-.5 1.9-1.2 0-.3-.1-.5-.3-.7.9-.2 1.6-.6 1.6-1.1 0-.4-.4-.8-1-1 .9-.2 1.7-.6 1.7-1.2m-4.7-.8c.1 0 .2 0 .3 0-.4.2-.6.5-.6.8 0 .4.4.8 1 1-.4.1-.7.2-1 .3 0-.1.1-.2.1-.3 0-.6-.8-1.1-1.9-1.2.2-.1.3-.2.3-.4.1 0 .3 0 .4 0 .5.1 1 0 1.4-.2"/></g><path d="m28.6 29.9c.1-.4-.2-.8-.1-1.2.1-1-.3-.6-.8-1.2-.5-.4.1-.9 0-1.4-.1-.9-.6-.5-1.2-.5-.5 0 .5 1.6-.2 2-.9.5-1 .7-1.3 1.6-.1-.3-.2-.2-.1-.6 0 0-.6.3-.7.3-.2.1.1 1 .2 1.2.4.7 1.4.3 1.4-.5.3 1 .1 1 1.3 1.1.4 0 1.1 0 .9-.7.2 1.3.9.5 1.5.1-.2.1-.9-.1-.9-.2" fill="#ff8736"/><path d="m26.3 25.9c-.5-.4.7-.8.9-.7.4 0 .6.5.6.9-.1.8-.1-.1-.2.2 0-.2-.1-.4 0-.6-.5.2-1.1-.1-1.3.2"/><path d="m28.2 34.9c0-1.4-.3-2.9-.3-4.2-.6.3-1.9-.1-1.9-.1s-.6 2.9-.6 3.6c0 1.2-.6 2.8-.4 3.9.1.7 1 0 1.2-.1.2-.2.1-1 .1-1.3 0-1.2.1-2.2.5-3.3 0 .7.4 1.3.3 2.1 0 .8 0 1.6 0 2.3 0 .1 1.1.2 1.2 0 .1-.9-.1-1.9-.1-2.9" fill="#d0d0d0"/><path d="m35.5 30c0 .1-.7.3-.8.3.6.5 1.3 1.2 1.5-.1-.2.7.4.7.8.7 1.2 0 1-.1 1.3-1.1 0 .8 1 1.1 1.4.5.1-.2.4-1 .2-1.2-.1 0-.7-.3-.7-.3.1.4-.1.3-.1.6-.3-1-.4-1.1-1.3-1.6-.7-.4.4-2-.2-2-.7 0-1.2-.4-1.2.5 0 .5.5.9 0 1.4-.6.5-.9.2-.8 1.2.1.3-.2.7-.1 1.1" fill="#89664c"/><path d="m37.8 25.9c-.2-.2-.8 0-1.2-.2.1.2 0 .4 0 .6-.2-.3-.2.5-.2-.2 0-.4.1-.9.6-.9.1 0 1.3.3.8.7"/><path d="m35.9 35c0-1.4.3-2.9.3-4.2.6.3 1.9-.1 1.9-.1s.6 2.9.6 3.6c0 1.2.7 2.8.4 3.9-.1.7-1 0-1.2-.1-.2-.2-.1-1-.1-1.3 0-1.2-.1-2.2-.5-3.3 0 .7-.4 1.3-.3 2.1 0 .8 0 1.6 0 2.3 0 .1-1.1.2-1.2 0 0-.9.1-1.9.1-2.9" fill="#d0d0d0"/><path d="m35.5 30.2v4.2c0 .8-.1 4.1-3.4 5.4-3.3-1.3-3.4-4.6-3.4-5.4v-4.2h6.8" fill="#9dd7ff"/><path d="m32.1 30.2v3.4l-3.1 2.9c-.3-.9-.3-1.8-.3-2.1v-4.2h3.4" fill="#d0d0d0"/><path d="m32.1 30.2v3.4l3.1 2.9c.3-.9.3-1.8.3-2.1v-4.2h-3.4" fill="#ffd83c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e7.svg b/riot/emojione/svg/1f1e7.svg new file mode 100644 index 0000000..7590fdd --- /dev/null +++ b/riot/emojione/svg/1f1e7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m42.6 20.6c.9 1.2 1.3 2.7 1.3 4.4 0 1.8-.4 3.2-1.3 4.3-.5.6-1.2 1.2-2.2 1.7 1.5.5 2.6 1.4 3.4 2.6.8 1.2 1.1 2.6 1.1 4.3 0 1.7-.4 3.3-1.3 4.6-.5.9-1.2 1.7-2.1 2.3-.9.7-2 1.2-3.3 1.5s-2.6.4-4.1.4h-13v-29h14c3.6-.2 6.1.9 7.5 2.9m-15.7 1.9v6.4h7.1c1.3 0 2.3-.2 3.1-.7s1.2-1.3 1.2-2.5c0-1.4-.5-2.2-1.6-2.7-.9-.3-2-.5-3.4-.5h-6.4m0 11.2v7.7h7c1.3 0 2.2-.2 2.9-.5 1.3-.6 1.9-1.8 1.9-3.6 0-1.5-.6-2.5-1.8-3.1-.7-.3-1.7-.5-2.9-.5 0 0-7.1 0-7.1 0" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1e6.svg b/riot/emojione/svg/1f1e8-1f1e6.svg new file mode 100644 index 0000000..886c66e --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M48,6.6C43.4,3.7,37.9,2,32,2S20.6,3.7,16,6.6v50.7c4.6,2.9,10.1,4.6,16,4.6s11.4-1.7,16-4.6V6.6z" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="m48 6.6v50.7c8.4-5.2 14-14.8 14-25.4s-5.6-20-14-25.3"/><path d="M16,6.6C7.6,11.9,2,21.5,2,32s5.6,20.1,14,25.4V6.6z"/><path d="m42.9 31.6c-.4-.2-.5-.6-.4-.8l1-3.6-3.5.7c-.1 0-.5 0-.6-.7l-.3-1.2-2.4 2.8c0 0-1.6 1.7-1.1-.9l1-5.5-1.9 1c-.1 0-.5.1-1-.9l-1.7-3.5-1.8 3.3c-.5 1-.9.9-1 .9l-1.9-1 1 5.5c.5 2.6-1.1.9-1.1.9l-2.4-2.8-.3 1.2c-.2.7-.5.7-.6.7l-3.5-.7 1 3.6c0 .3 0 .6-.4.8l-1 .6c0 0 4 3.2 5.3 4.3.3.2.9.8.7 1.5l-.5 1.4 5.5-.8c.3 0 .9 0 .8.9l-.3 5.7h1l-.3-5.7c0-.9.6-.9.8-.9l5.5.8-.5-1.4c-.2-.7.4-1.3.7-1.5 1.3-1.1 5.3-4.3 5.3-4.3l-1.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1e8.svg b/riot/emojione/svg/1f1e8-1f1e8.svg new file mode 100644 index 0000000..8d00280 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#699635"/><g fill="#ffce31"><path d="m35.6 39.9c-4.4 0-7.9-3.6-7.9-7.9 0-4.4 3.6-7.9 7.9-7.9 1.3 0 2.5.3 3.5.9-1.7-1.6-4-2.6-6.5-2.6-5.3 0-9.6 4.3-9.6 9.6s4.3 9.6 9.6 9.6c2.5 0 4.8-1 6.5-2.6-1.1.6-2.3.9-3.5.9"/><circle cx="13.1" cy="23.7" r="9"/></g><path d="m12.5 30.5h2.2c0 0 .1-.2 0-.3-.1-.1-.6-.1-.5-.5.3-.7.3-.5.5-2.3.2-1.8.2-4.6.2-4.6h-.3c0 0 .1.9-.1 2-.2 1.1-.2 1.2-.4 2.1-.2.9-.2.9-.4 1.4-.2.5-.2.5-.5 1-.3.5-.2.3-.4.6-.1.1-.2.1-.2.2-.1.2-.1.4-.1.4" fill="#802000"/><path d="m14.2 17.2c0 .4 0 .8-.2 1.2-.1.4-.3.8-.3 1.3-.2.1-.5-.5-.7-.2.2.5.6.9.8 1.3 0 .1.4.5.2.6-.6-.2-.7-.9-1-1.3-.4-.7-1.2-1.2-2-1.3-.3 0-1.3-.1-1.1.5.4.3.9.4 1.3.7.3 0 .8.5.8.7-.5-.2-.7-.5-1.3-.7-.7-.4-1.7-.2-2.1.6-.1.2-.2.8.1.8.3-.4.7-.9 1.3-.8.5 0-.5.9-.1.7.1-.1.4-.2.6-.3.2 0 .3.1.4.1.3 0 .4.2.3.2 0 .1-.1 0-.4.1-.1 0-.2.2-.4.2s-.5.1-.7 0c-.5-.2-1.2-.2-1.4.4 0 .3-.2 0-.3.1-.1.3-.1.6-.5.5-.3.3-.5.5-.8.7.2.4.9-.4.9-.1-.3.4.2.5.4.2.4-.4.8-.9 1.4-.5.3.2.4-.1.6-.1.1.3.3 0 .4-.1.2 0 .2.3.4.1.5-.3 1.2-.1 1.7-.4.5-.2.1.2-.1.4-.2.5 0 1.1-.6 1.4-.2.6.2 1.3-.2 1.7-.1.3.6.2.8.3.3 0 0-.8.3-.9.4.3.4-.5.3-.7 0-.5.1-1.1.3-1.6.3-.6.5.2.2.5-.2.5-.4 1.2 0 1.7.1 0 .2.3.4.4.2.1.4 0 .4-.3.2-.8.1-1.6.4-2.4.2-.2.5 0 .6.2.4.4.7 1 1.1 1.4.4.2.8.5 1 .9 0 .3 1 .4.7 0-.3-.4-.1-.7.2-1 .1 0 .1-.2 0-.1-.2 0-.2-.4.1-.2.4.1 0-.3-.2-.3-.4-.2-.8-.5-1-.9.5 0 1 .3 1.5.1.4-.2.8 0 .9.4.3 0 .2-.4 0-.5.2-.1.4-.3.1-.5-.1-.2.2-.5-.2-.5 0-.3-.1-.6-.5-.7-.3-.3-1.4.4-1.3-.2-.1-.4.4 0 .6-.2.1-.4-.7-.3-.4-.6.2-.1 1-.3.4-.4-.3.1-.6 0-.9-.1-.2.4-.9-.2-.8.5-.1.3-.7 1-.9.4.1-.4.9-.6.6-1.1 0-.4-.3.1-.5 0-.1-.2.2-.5.4-.5.4.3.4-.4.8-.3.3-.1-.1-.2-.2-.2.1-.2.5-.3.1-.5-.4-.3-.6.3-.9.3-.3-.3.3-.5.4-.6 0-.1-.3 0-.2-.1.1-.2.7-.2.4-.4-.4-.1-.9-.1-1.3.1-.2.1-.3.6-.5.6-.4-.2-.2-.6-.6-.7m2 5.4c.3-.1 0 .5-.1.5 0-.2-.4-.2-.2-.3.1-.1.2-.1.3-.2" fill="#699635"/><g fill="#ffce31"><path d="m48.2 42.9l.5 1.6 1.6-.6-1 1.4 1.5.9-1.7.1.2 1.7-1.1-1.3-1.2 1.3.2-1.7-1.7-.1 1.5-.9-1-1.4 1.6.6z"/><path d="m38.7 28l.6 1.6 1.5-.6-.9 1.4 1.5.9-1.7.1.2 1.7-1.2-1.2-1.1 1.2.2-1.7-1.7-.1 1.5-.9-1-1.4 1.6.6z"/><path d="m48.2 17.8l.5 1.6 1.6-.6-1 1.4 1.5.9-1.7.1.2 1.7-1.1-1.2-1.2 1.2.2-1.7-1.7-.1 1.5-.9-1-1.4 1.6.6z"/><path d="m56.5 25.5l.5 1.6 1.6-.6-.9 1.4 1.4.8-1.7.2.3 1.7-1.2-1.3-1.2 1.3.3-1.7-1.7-.2 1.4-.8-.9-1.4 1.6.6z"/><path d="m51.9 33l.4 1 1.1.1-.8.7.2 1-.9-.5-.9.5.3-1-.9-.7 1.1-.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1e9.svg b/riot/emojione/svg/1f1e8-1f1e9.svg new file mode 100644 index 0000000..c635b47 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="M10.8,10.8C2.1,19.5-0.1,32.2,4.1,43L43,4.1C32.2-0.1,19.5,2.1,10.8,10.8z"/><path d="m53.2 53.2c8.7-8.7 10.9-21.4 6.7-32.2l-38.9 38.9c10.8 4.2 23.5 2 32.2-6.7"/></g><path d="m53.2 10.8c-2-2-4.1-3.6-6.4-4.9l-40.9 40.9c1.3 2.3 2.9 4.5 4.9 6.4 2 2 4.1 3.6 6.4 4.9l40.9-40.9c-1.3-2.3-2.9-4.5-4.9-6.4" fill="#c94747"/><g fill="#ffce31"><path d="m17.2 58.1c.6.3 1.2.7 1.9 1 .6.3 1.3.6 2 .9l38.8-39c-.3-.7-.5-1.3-.9-2-.3-.6-.6-1.2-1-1.9l-40.8 41"/><path d="m44.9 4.9c-.7-.3-1.3-.6-2-.9l-38.8 39c.3.7.5 1.3.9 2 .3.6.6 1.2 1 1.9l40.8-41c-.6-.4-1.2-.7-1.9-1"/><path d="m18 19.2l3.7 2.8-1.4-4.6 3.7-2.9h-4.6l-1.4-4.5-1.4 4.5h-4.6l3.7 2.9-1.4 4.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1eb.svg b/riot/emojione/svg/1f1e8-1f1eb.svg new file mode 100644 index 0000000..919121c --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6.6,16C3.7,20.6,2,26.1,2,32h60c0-5.9-1.7-11.4-4.6-16H6.6z" fill="#fff"/><path d="M57.4,48c2.9-4.6,4.6-10.1,4.6-16H2c0,5.9,1.7,11.4,4.6,16H57.4z" fill="#699635"/><path d="M6.6,48c3.9,6.2,10.1,10.9,17.4,12.9h16c7.3-2,13.4-6.7,17.4-12.9H6.6z" fill="#ffe62e"/><path d="M40,3.1H24C16.7,5.1,10.6,9.8,6.6,16h50.7C53.4,9.8,47.3,5.1,40,3.1z" fill="#2a5f9e"/><path d="m40 3.1c-2.5-.7-5.2-1.1-8-1.1s-5.5.4-8 1.1v57.8c2.5.7 5.2 1.1 8 1.1s5.5-.4 8-1.1v-57.8" fill="#f42f4c"/><path fill="#ffe62e" d="m18 11.6l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1ec.svg b/riot/emojione/svg/1f1e8-1f1ec.svg new file mode 100644 index 0000000..d511520 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 15.5h-8.5l-33 33v8.5c4.7 3.1 10.4 5 16.5 5 16.6 0 30-13.4 30-30 0-6.1-1.8-11.8-5-16.5" fill="#ed4c5c"/><path d="M32,2C15.4,2,2,15.4,2,32c0,6.1,1.8,11.8,5,16.5h3.8h4.7l33.1-33.1v-4.7V7C43.8,3.8,38.1,2,32,2z" fill="#75a843"/><path d="M7,48.5c1.1,1.7,2.4,3.2,3.8,4.7l0,0c1.4,1.4,3,2.7,4.7,3.8L57,15.5c-2.2-3.4-5.1-6.3-8.5-8.5L7,48.5z" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1ed.svg b/riot/emojione/svg/1f1e8-1f1ed.svg new file mode 100644 index 0000000..507afb3 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ed4c5c"/><path fill="#fff" d="m47 27h-10v-10h-10v10h-10v10h10v10h10v-10h10z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1ee.svg b/riot/emojione/svg/1f1e8-1f1ee.svg new file mode 100644 index 0000000..4ae397b --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#f2b200"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#83bf4f"/><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1f0.svg b/riot/emojione/svg/1f1e8-1f1f0.svg new file mode 100644 index 0000000..683223e --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z"/><path d="m12 12h21v21h-21z"/></g><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><g fill="#fff"><path d="m52 21.1l-.2 1.8 1.7.8-1.8.4-.2 1.8-1-1.6-1.8.4 1.3-1.4-1-1.6 1.7.8z"/><path d="m56.4 24.3l-.9 1.6 1.2 1.4-1.8-.4-.9 1.6-.2-1.8-1.8-.4 1.7-.8-.2-1.8 1.2 1.4z"/><path d="m59.2 29.1l-1.5 1.1.6 1.7-1.5-1-1.5 1 .5-1.7-1.4-1.1h1.8l.6-1.8.5 1.8z"/><path d="m59.8 34.6l-1.8.4-.2 1.8-1-1.6-1.8.4 1.3-1.4-.9-1.6 1.6.8 1.3-1.4-.2 1.8z"/><path d="m58.1 39.8l-1.8-.4-1 1.6-.2-1.8-1.8-.4 1.7-.7-.2-1.9 1.3 1.4 1.6-.7-.9 1.6z"/><path d="m54.4 43.9l-1.5-1.1-1.5 1.1.6-1.7-1.5-1.1h1.8l.6-1.8.5 1.8h1.9l-1.5 1.1z"/><path d="m49.3 46.2l-.9-1.6-1.8.4 1.2-1.4-.9-1.6 1.7.7 1.2-1.3-.2 1.8 1.7.8-1.8.3z"/><path d="m43.8 46.2l-.2-1.9-1.8-.3 1.7-.8-.2-1.8 1.2 1.3 1.7-.7-.9 1.6 1.2 1.4-1.8-.4z"/><path d="m38.8 43.9l.5-1.7-1.4-1.1h1.8l.6-1.8.5 1.8h1.9l-1.5 1.1.6 1.7-1.5-1.1z"/><path d="m35.1 39.8l1.2-1.3-.9-1.6 1.7.7 1.2-1.4-.2 1.9 1.7.7-1.8.4-.2 1.8-.9-1.6z"/><path d="m33.4 34.6l1.7-.8-.2-1.8 1.2 1.4 1.7-.8-.9 1.6 1.2 1.4-1.8-.4-.9 1.6-.2-1.8z"/><path d="m34 29.1h1.8l.6-1.8.5 1.8h1.9l-1.5 1.1.6 1.7-1.5-1-1.5 1 .6-1.7z"/><path d="m36.7 24.3l1.7.8 1.2-1.4-.2 1.8 1.7.8-1.8.4-.2 1.8-.9-1.6-1.8.4 1.2-1.4z"/><path d="m41.2 21.1l1.2 1.4 1.7-.8-.9 1.6 1.2 1.4-1.8-.4-.9 1.6-.2-1.8-1.8-.4 1.7-.8z"/><path d="m46.6 19.9l.5 1.8h1.9l-1.5 1.1.6 1.7-1.5-1.1-1.5 1.1.6-1.7-1.5-1.1h1.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1f1.svg b/riot/emojione/svg/1f1e8-1f1f1.svg new file mode 100644 index 0000000..51be06e --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,16.6,13.4,30,30,30s30-13.4,30-30H2z" fill="#ed4c5c"/><path d="M32,2c16.6,0,30,13.4,30,30H32V2z" fill="#f9f9f9"/><path d="M32,2C15.4,2,2,15.4,2,32h30V2z" fill="#2a5f9e"/><path fill="#f9f9f9" d="m20 21.7l4.9 3.3-1.8-5.3 4.9-3.5h-6.1l-1.9-5.2-1.8 5.2h-6.2l4.9 3.5-1.8 5.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1f2.svg b/riot/emojione/svg/1f1e8-1f1f2.svg new file mode 100644 index 0000000..e86d029 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ffce31"/><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#83bf4f"/><path d="M42,3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7v56.6c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7z" fill="#c94747"/><path fill="#ffce31" d="m32 36.2l5.3 3.8-2-6.1 5.2-3.8h-6.5l-2-6.1-2 6.1h-6.5l5.2 3.8-2 6.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1f3.svg b/riot/emojione/svg/1f1e8-1f1f3.svg new file mode 100644 index 0000000..9e5bd66 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ed4c5c"/><g fill="#ffe62e"><path d="m22 28.4l8 5.6-3-9.2 8-5.8h-9.9l-3.1-9-3 9h-10l8 5.8-3 9.2z"/><path d="m35.3 35.3l-2.3.5 2.2.9v2.3l1.5-1.7 2.2.8-1.3-1.9 1.4-1.8-2.3.5-1.4-1.9z"/><path d="m38.7 28.5l-1.7 1.5 2.3-.2 1 2.2.4-2.3 2.3-.2-2-1.2.5-2.3-1.7 1.5-2-1.2z"/><path d="m39.3 20.7l.7 2.3.7-2.2h2.3l-1.8-1.4.7-2.3-1.9 1.4-1.8-1.5.7 2.3-1.9 1.3z"/><path d="m35.3 12.7v2.3l1.4-1.9 2.3.5-1.4-1.8 1.3-1.9-2.2.9-1.5-1.8v2.3l-2.2.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1f4.svg b/riot/emojione/svg/1f1e8-1f1f4.svg new file mode 100644 index 0000000..387be03 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32h-60c0 5.5 1.5 10.6 4 15h52c2.6-4.4 4-9.5 4-15" fill="#2a5f9e"/><path d="M32,2C15.5,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#ffe62e"/><path d="m32 62c11.1 0 20.8-6 26-15h-52c5.3 9 14.9 15 26 15" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1f5.svg b/riot/emojione/svg/1f1e8-1f1f5.svg new file mode 100644 index 0000000..16bfba0 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#428bc1"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1f7.svg b/riot/emojione/svg/1f1e8-1f1f7.svg new file mode 100644 index 0000000..e8510bc --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M52.4,10C47,5,39.9,2,32,2c-7.9,0-15,3-20.4,8H52.4z"/><path d="m11.6 54c5.4 5 12.5 8 20.4 8 7.9 0 15-3 20.4-8h-40.8"/></g><path d="m2 32c0 4.3.9 8.3 2.5 12h55c1.6-3.7 2.5-7.7 2.5-12s-.9-8.3-2.5-12h-55c-1.6 3.7-2.5 7.7-2.5 12" fill="#c94747"/><g fill="#f9f9f9"><path d="m11.6 54h40.7c3-2.8 5.5-6.2 7.1-10h-55c1.8 3.8 4.2 7.2 7.2 10"/><path d="m52.4 10h-40.8c-3 2.8-5.5 6.2-7.1 10h55c-1.7-3.8-4.1-7.2-7.1-10"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1fa.svg b/riot/emojione/svg/1f1e8-1f1fa.svg new file mode 100644 index 0000000..ae73709 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#f9f9f9"><path d="m10.8 26h50.6c-.9-4.4-2.8-8.5-5.4-12h-45.2v12"/><path d="M10.8,38v12H56c2.6-3.5,4.5-7.6,5.4-12H10.8z"/></g><g fill="#428bc1"><path d="m61.4 26h-50.6v12h50.6c.4-1.9.6-3.9.6-6s-.2-4.1-.6-6"/><path d="m10.8 14h45.2c-5.5-7.3-14.2-12-24-12-8.3 0-15.8 3.4-21.2 8.8 0 0 0 3.2 0 3.2"/><path d="M10.8,50v3.2C16.2,58.6,23.7,62,32,62c9.8,0,18.5-4.7,24-12H10.8z"/></g><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#ed4c5c"/><path fill="#f9f9f9" d="m10 38l4-2.8 4 2.8-1.5-4.6 4-2.9h-5l-1.5-4.5-1.5 4.5h-5l4 2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1fb.svg b/riot/emojione/svg/1f1e8-1f1fb.svg new file mode 100644 index 0000000..c3c11d6 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="m32 62c9.8 0 18.5-4.7 24-12h-48c5.5 7.3 14.2 12 24 12"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z"/></g><path d="m61.4 38c.4-1.9.6-3.9.6-6h-60c0 2.1.2 4.1.6 6h58.8" fill="#fff"/><path d="m4.5 44h55c.8-1.9 1.5-3.9 1.9-6h-58.8c.4 2.1 1.1 4.1 1.9 6" fill="#ed4c5c"/><path d="m4.5 44c.9 2.1 2.1 4.2 3.5 6h48c1.4-1.8 2.6-3.9 3.5-6h-55" fill="#fff"/><g fill="#ffce31"><path d="m25 26.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m25 56.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m36 36.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m18 29.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m32 29.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m13 36.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m36 48.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m13 48.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m31 54.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m18 54.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1fc.svg b/riot/emojione/svg/1f1e8-1f1fc.svg new file mode 100644 index 0000000..cecfdbf --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="m62 32c0-16.6-13.4-30-30-30s-30 13.4-30 30c0 4.3.9 8.3 2.5 12h55c1.6-3.7 2.5-7.7 2.5-12"/><path d="m32 62c9.8 0 18.5-4.7 24-12h-48c5.5 7.3 14.2 12 24 12"/></g><path d="m4.5 44c.9 2.1 2.1 4.2 3.5 6h48c1.4-1.8 2.6-3.9 3.5-6h-55" fill="#ffce31"/><g fill="#fff"><path d="m11.4 15.5l1.3 3.8h4l-3.3 2.4 1.3 3.8-3.3-2.4-3.2 2.4 1.2-3.8-3.2-2.4h4z"/><path d="m22.8 24.5l1.8 5.3h5.6l-4.6 3.3 1.8 5.4-4.6-3.3-4.5 3.3 1.7-5.4-4.5-3.3h5.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1fd.svg b/riot/emojione/svg/1f1e8-1f1fd.svg new file mode 100644 index 0000000..2811542 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,16.6,13.4,30,30,30c11.7,0,21.9-6.8,26.8-16.6L5.2,18.6C3.1,22.6,2,27.2,2,32z" fill="#2a5f9e"/><path d="M32,2C20.3,2,10.1,8.8,5.2,18.6l53.7,26.8c2-4,3.2-8.6,3.2-13.4C62,15.4,48.6,2,32,2z" fill="#699635"/><circle cx="32" cy="32" r="11.2" fill="#ffce31"/><path d="m25.1 27c.8 1.1 1.9 2.8 2.9 2.4.7 0 1.1.1 1.2.5 1.7.3 4.6-.4 6.4-2.8 0 0 .2 0 .1-.9 0-.4.5-.3.5-.2.1.2.1.3.2.3.2-.1.5-.6.8-.9.1-.1 0-.3 0-.5.1-.3.5-.3.5-.1.1.1.1.2.1.3.3.2 1 0 1 0 .2-.1.4-.1.4-.1.2 0 .1 0 .3 0-.1 1.5.3 1.6.3 2.3 0 .9-.3 1.1-.3 1.4.1.4 1.3.4.9.7-.4.2 0 .6-.6.7-1.7.9-2 1.6-2 1.6l-.5.8c-.3.5-.6.2-.8.5-.1.3-.2 1.1 0 1.4.1.5 0 .8-.1 1.3-.1 1.1-.5 1.3-.6 1.6-.2.4 0 2.3-.1 2.3-1.3 0-2.2-.2-2.7-.3.5-2.1.3-4 .3-4.2-.1-1.5-2.3-1.1-2.6-1.3-.3-.1-.4-.3-.5-.4-.3 0-.4-.1-.7-.1-.1.1-.1.2-.4.3-.9.1-1.2-.7-1.2-.7 0-.3-1.9.1-3-.2-.4.2-.6 1-1 1 0 .2-.6-.2-.7-.4 0-.6.6-.9.6-.9.5-.3.7-.4 1-.6.1-.6.1-1 .3-1.4.2-.3.5-.2.7-.3.2-.1.3-1.1.1-1.3l-.9-.8c-.6-.6 0-1.1.1-1" fill="#699635"/><path d="m60.5 26.7c-.1-.3-.6-.4-1-.7-.5-.1-.8-.1-1.2.1-.1.1-.2.1-.3.2l-.5-.1c-1.2 0-1.3-3.8-1.9-5.3-.3-1-2.9-3.1-4.8-4.4-.4-.3-.7-.1-.6.3.2.4.4.7.7 1.1.1.2.2.4.3.6l.1.5c.6.6.7 1.1.7 1.1.4.6.7 1 1.3 1.5.7.3.3 1.6.4 2.3 0 .4-.3.4-.5.4-2.2-1.7-4.2-1.6-6-2-.7 0-.7.3-.4.5 1.3 1.2 2.6 2 4.2 2.7.3.1.5.3.8.4.3.2.6.4.9.7.7.4.8.8.8.8.1.8-.3 1.5-.4 1.8-.2.8-3.1 2.8-8.2 3.8-.1 0-.7.1 0 .3 5.3-.4 9.5-3.2 9.7-3.3.8-.5 3.1-1.2 3.6-1.7.6-.1 1.2-.2 1.2-.8.2-.1.5-.1.7-.5.5-.1.4-.3.4-.3" fill="#ffce31"/><g fill="#fff"><path d="m12.2 28.2l-.8-.7-.7.7.1-1.1-1.1-.1.9-.6-.5-.9 1 .3.4-1 .3 1 1-.3-.5.9.9.6-1.1.2z"/><path d="m14.9 36.8l-.8-.5-.8.6.3-1-.8-.5h1l.3-1 .3.9h1l-.8.6z"/><path d="m12.4 44.3l-.8-.7-.8.7.1-1.1-1-.1.8-.6-.5-.9 1 .3.4-1 .4 1 1-.3-.5.9.8.6-1 .1z"/><path d="m5.5 35.6l-.8-.7-.7.7v-1.1l-1-.1.9-.6-.5-.9 1 .3.4-1 .3 1 1-.3-.5.9.9.6-1.1.1z"/><path d="m18.7 33.3l-.8-.7-.7.7v-1.1l-1-.1.9-.6-.5-.9 1 .3.3-1 .4 1 1-.3-.5.9.9.6-1.1.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1fe.svg b/riot/emojione/svg/1f1e8-1f1fe.svg new file mode 100644 index 0000000..4529030 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f5f5f5"/><g fill="#699635"><path d="m12.5 37c0 0-.2 1.4.4 2 .6.6 1.9 1.4 2.4 1.5.5.1-.6-1.8-.6-1.8s-1.5-2-2.2-1.7"/><path d="m12.7 40.4c0 0 .2 1.3 1 1.5.9.2 1.7.1 1.7.1s.1-1.5-2.7-1.6"/><path d="m15.6 37.8c0 0 .9.3.9 1.1 0 .8-.1 1.6-.1 1.6s-.6-.8-.6-1.2c0-.4-.2-1.5-.2-1.5"/><path d="m15.3 42.6c0 0-.1.8.8.8.9 0 .1-1-.8-.8"/><path d="m15.2 43.9c0 0 1-.3 2.1-.1 1.1.2 1.7 1.1 1.7 1.1s-1.2.3-2.6 0c-1.3-.3-1.2-1-1.2-1"/><path d="m15.9 41c0 0 1.4-.4 2.7 2.6 0 0-2.6-.6-2.7-2.6"/><path d="m17.3 40.4c0 0 1.5-.9 2.8 3.1 0 0-1.8-.7-2.8-3.1"/><path d="m19.4 44.1c0 0 1.5-.6 3.5 1.8-3.3-.1-3.5-1.8-3.5-1.8"/><path d="m20.4 43c0 0-.1.9.5.9s.1-1.1-.5-.9"/><path d="m19.3 45.4c0 0-.1.8.4.8s0-1.1-.4-.8"/><path d="m24 47.8c0 0-.1.9.5.9.6 0 .1-1.2-.5-.9"/><path d="m25.4 45.1c0 0-.1.9.5.9s.1-1.2-.5-.9"/><path d="m21.6 43.5c0 0 2.2-.6 3.1 2.2-2.6-.4-3.1-2.2-3.1-2.2"/><path d="m19.7 46.6c0 0 2.5-.6 3.6.2 1.1.8-2.2 1.2-3.6-.2"/><path d="m24 46.6c0 0 1.7-.8 3.5 1-3.5.4-3.5-1-3.5-1"/><path d="m26.8 45.5c0 0 1.7-.5 3.3 2.5-3.7-.5-3.3-2.5-3.3-2.5"/><path d="m29.6 48.8c0 0-1.8 1.3-4.1-.1 0 .1.8-1.5 4.1.1"/><path d="m51.5 36.9c0 0 .2 1.4-.4 2-.6.6-1.9 1.4-2.4 1.5-.5.1.6-1.8.6-1.8s1.5-1.9 2.2-1.7"/><path d="m51.3 40.4c0 0-.2 1.3-1.1 1.5-.9.2-1.7.1-1.7.1s0-1.5 2.8-1.6"/><path d="m48.4 37.7c0 0-.9.3-.9 1.1 0 .8.1 1.6.1 1.6s.6-.8.6-1.2.2-1.5.2-1.5"/><path d="m48.7 42.6c0 0 .1.8-.8.8s-.1-1 .8-.8"/><path d="m48.8 43.8c0 0-1-.3-2.1-.1-1.1.2-1.7 1.1-1.7 1.1s1.2.3 2.6 0c1.3-.3 1.2-1 1.2-1"/><path d="m48.1 41c0 0-1.4-.4-2.7 2.6 0 0 2.6-.7 2.7-2.6"/><path d="m46.7 40.4c0 0-1.5-.9-2.8 3.1 0 0 1.8-.7 2.8-3.1"/><path d="m44.7 44.1c0 0-1.5-.6-3.5 1.8 3.2-.2 3.5-1.8 3.5-1.8"/><path d="m43.6 43c0 0 .1.9-.5.9s-.1-1.2.5-.9"/><path d="m44.7 45.3c0 0 .1.8-.4.8-.5 0 0-1 .4-.8"/><path d="m40 47.8c0 0 .1.9-.5.9-.6 0-.1-1.2.5-.9"/><path d="m38.6 45.1c0 0 .1.9-.5.9-.6 0-.1-1.2.5-.9"/><path d="m42.4 43.5c0 0-2.2-.6-3.1 2.2 2.6-.4 3.1-2.2 3.1-2.2"/><path d="m44.3 46.5c0 0-2.5-.6-3.6.2-1.1.9 2.2 1.3 3.6-.2"/><path d="m40 46.6c0 0-1.7-.8-3.5 1 3.5.4 3.5-1 3.5-1"/><path d="m37.2 45.5c0 0-1.7-.5-3.3 2.5 3.7-.5 3.3-2.5 3.3-2.5"/><path d="m34.4 48.8c0 0 1.8 1.3 4.1-.1 0 .1-.8-1.5-4.1.1"/><path d="m31.7 49.5c0 0-1.3 1.7-1.3 1.5 0-.2-.9-.9-.9-.9l1.5-1.1-.6-.3.3-.4 1.1.5"/><path d="m32 49.5c0 0 1.3 1.7 1.3 1.5 0-.2.9-.9.9-.9l-1.5-1.1.6-.3-.3-.4-1.1.5"/><path d="m31.6 49.6h.5"/></g><path d="m18 29.5c0 0 .4 1.1.9 1.1s1.8.1 1.8.1.7-.1.9-.7c.2-.6.8-3.1 3.8-1.6 3 1.5 3.2-2.6 3.2-2.6l-.5-.7.1-1.4c0 0 1.6 1.1 2.7 1.1 1-.1 1.8.3 2.1.3.3 0 1.4.3 1.4.3l2.7.1c0 0 .4-.4.9-.3.4.1.4-.3 1.3-.3.8 0 1.6-1 1.6-1s.2-.2 1.4 0c0 0 .8-.7 2-1 1.2-.4 1-.9 1-.9s.9-.2 1.3-.1c.4.1.6-.7.6-.7l.9-.1.4-.5.9-.2c0 0 1.1-.8 1.3-1.3.2-.5 1.4-.1 1.4-.1s.5-.5.6-.8c.1-.3.5-.1.5-.1l-.1.9-.6.3v.5h-.9l-.1.5-.8.1-.1.7-.2.3-.2.1h-.5l-.2.3-.5.6-.4.5-.8-.1-.5.7h-.3l-.5.8-.4.5-.2.3-.4.1-.1.4-.7.2-.8.2-.3.4c0 0-.9 1.9.1 2.5 1 .7 1 1.4 1 1.4l.5.3.4.7.2.8c0 0-.2.1-.4.1-.3-.2-.7-.2-.7-.2l-.4-.4-.8-.1-.5.5c0 0-.2.3-.2.5s-.1.2-.4 0-.7-.4-.7-.4l-.6-.1-.1-.3-.4.2c0 0-.1.3-.3.2-.2-.1-.4-.1-.4-.1h-.4c0 0-.9.7-.8 2.8l-1 .2-.5.4-.2.3h-.7l-.3.3-.7.3-.3.4-1 .1-.3.2-.2.4-.6-.4-.8-.2-.7.2c0 0-.2.1-.4.2-.2.2-.8.3-.8.3s-.4.1-.4.3c0 .2-.1.6-.1.6v.8c0 0-.1.5-.5.5-.4 0-.3 0-.5-.1-.2-.1-.2-.5-.2-.5v-.6l-.9-.8-.6-.2-.6.1-.5.3-.5.3c0 0 .1.4-.3.1s-.7-.3-.7-.3l-.5-.3-.7-.2-.5-.6-1.3-.1-1.1-1.3-.3-.3-.1-1-.7-.1v-.5l-.3-.5.1-1-.7-.3-.3-.9v-1.4" fill="#ff8736"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8-1f1ff.svg b/riot/emojione/svg/1f1e8-1f1ff.svg new file mode 100644 index 0000000..3226720 --- /dev/null +++ b/riot/emojione/svg/1f1e8-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m10.8 10.8v21.2h51.2c0-16.6-13.4-30-30-30-8.3 0-15.8 3.4-21.2 8.8" fill="#f9f9f9"/><path d="m10.8 32v21.2c5.4 5.4 12.9 8.8 21.2 8.8 16.6 0 30-13.4 30-30h-51.2" fill="#ed4c5c"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#428bc1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e8.svg b/riot/emojione/svg/1f1e8.svg new file mode 100644 index 0000000..1aa1eab --- /dev/null +++ b/riot/emojione/svg/1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m23.3 20.4c2.3-2.4 5.3-3.6 8.9-3.6 4.8 0 8.4 1.6 10.6 4.8 1.2 1.8 1.9 3.6 2 5.4h-6.1c-.4-1.4-.9-2.4-1.5-3.1-1.1-1.3-2.7-1.9-4.8-1.9-2.2 0-3.9.9-5.1 2.7-1.2 1.8-1.9 4.3-1.9 7.5 0 3.3.7 5.7 2 7.3 1.3 1.6 3 2.4 5 2.4 2.1 0 3.7-.7 4.8-2.1.6-.7 1.1-1.9 1.5-3.4h6c-.5 3.2-1.8 5.7-4 7.7-2.1 2-4.9 3-8.2 3-4.1 0-7.4-1.3-9.7-4-2.4-2.7-3.5-6.4-3.5-11.1-.1-5 1.3-8.9 4-11.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9-1f1ea.svg b/riot/emojione/svg/1f1e9-1f1ea.svg new file mode 100644 index 0000000..b2015a7 --- /dev/null +++ b/riot/emojione/svg/1f1e9-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M31.9,2C18.8,2,7.7,10.4,3.6,22h56.6C56.1,10.4,45,2,31.9,2z" fill="#3e4347"/><path d="M31.9,62c13.1,0,24.2-8.3,28.3-20H3.6C7.7,53.7,18.8,62,31.9,62z" fill="#ffe62e"/><path d="m3.6 22c-1.1 3.1-1.7 6.5-1.7 10s.6 6.9 1.7 10h56.6c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10h-56.6" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9-1f1ec.svg b/riot/emojione/svg/1f1e9-1f1ec.svg new file mode 100644 index 0000000..04d9b4e --- /dev/null +++ b/riot/emojione/svg/1f1e9-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m26.8 6.1c-3.6 0-4.7-1-6.8-1.6-2.4 1-4.6 2.4-6.7 4 .8-.2 1.8-.3 3.1-.3 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 2 0 3.2-.3 4.3-.7-1.5-1.3-3.1-2.5-4.9-3.5-4.7-.1-4.8-2-9.8-2-5.2.1-5.2 2.1-10.4 2.1" fill="#fff"/><g fill="#2a5f9e"><path d="m47.6 10.2c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2 4.1 0 4.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 3.9 0 4.9-1.1 7.3-1.7-.9-1.1-2-2.1-3-3.1-1.1.4-2.3.7-4.3.7"/><path d="m37.2 4.1c5 0 5.2 1.8 9.9 2-4.4-2.6-9.6-4-15-4-4.3 0-8.8 4.1-5.2 4.1 5.1-.1 5.1-2.1 10.3-2.1"/></g><path d="m47.6 14.3c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-4.5 0-5.1 1.5-8.6 1.9-1 1.3-1.8 2.7-2.6 4.2.2 0 .5 0 .8 0 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.1 0 5.2-1.9 10.1-2-.8-1.4-1.7-2.6-2.8-3.8-2.4.6-3.4 1.7-7.3 1.7" fill="#fff"/><path d="m47.6 18.5c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2 4.1 0 4.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 .7 0 1.3 0 1.8.1-.6-1.5-1.3-2.9-2.1-4.2-4.9.1-5 2-10.1 2" fill="#2a5f9e"/><path d="m58 20.6c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1 0-1.8-.1-2.4-.2-.4 1.2-.8 2.5-1 3.8.9.3 2 .5 3.5.5 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.4 0 2.4.1 3.2.3-.4-1.5-.8-2.9-1.4-4.3-.6 0-1.2-.1-1.9-.1" fill="#fff"/><path d="m58 24.8c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2 4.1 0 4.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.8 0 2.9.2 3.9.5-.1-1.4-.3-2.9-.7-4.2-.8-.3-1.8-.4-3.2-.4" fill="#2a5f9e"/><path d="m58 28.9c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1.8 0-3-.2-4-.5 0 .5 0 1 0 1.6 0 .8 0 1.7.1 2.5 1 .3 2.1.6 3.9.6 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.8 0 3 .2 4 .5 0-.5 0-1 0-1.6 0-.8 0-1.6-.1-2.5-1-.3-2.1-.6-3.9-.6" fill="#fff"/><path d="m58 33.1c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1.8 0-2.9-.2-3.9-.5.1 1.4.3 2.9.7 4.2.8.2 1.8.4 3.2.4 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.5 0 2.6.2 3.5.4.2-1.3.4-2.6.5-3.9-1-.3-2.2-.6-4-.6" fill="#2a5f9e"/><path d="m58 37.2c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1.4 0-2.4-.1-3.2-.3.4 1.5.8 2.9 1.4 4.3.5.1 1.1.1 1.8.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1 0 1.8.1 2.4.2.4-1.2.8-2.5 1-3.8-.8-.3-1.9-.5-3.4-.5" fill="#fff"/><path d="m58 41.4c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-.7 0-1.3 0-1.8-.1.6 1.5 1.3 2.9 2.1 4.2 4.9-.1 5-2 10.1-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 .3 0 .5 0 .8 0 .6-1.3 1.2-2.6 1.7-3.9-.7-.2-1.5-.2-2.5-.2" fill="#2a5f9e"/><path d="m58 45.5c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.1 0-5.2 1.9-10.1 2 .8 1.4 1.7 2.6 2.8 3.8 2.5-.6 3.4-1.7 7.3-1.7 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 4.5 0 5.1-1.5 8.6-1.9 1-1.3 1.8-2.7 2.6-4.2-.3 0-.5 0-.8 0" fill="#fff"/><path d="m47.6 51.7c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-3.9 0-4.9 1.1-7.3 1.7.9 1.1 2 2.2 3 3.1 1.1-.4 2.3-.7 4.3-.7 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 1.3 0 2.3-.1 3.1-.3 2.1-1.7 3.9-3.6 5.5-5.7-3.5.3-4.1 1.9-8.6 1.9" fill="#2a5f9e"/><path d="m47.6 55.8c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-2 0-3.2.3-4.3.7 1.5 1.3 3.1 2.5 4.8 3.5 4.6.1 4.8 2 9.8 2 5.2 0 5.2-2 10.4-2 3.6 0 4.7 1 6.8 1.6 2.4-1 4.6-2.4 6.7-4-.8.1-1.7.2-3 .2" fill="#fff"/><path d="m26.8 59.9c-5 0-5.2-1.8-9.9-2 4.4 2.6 9.6 4 15 4 4.3 0 8.3-.9 12-2.5-2.1-.6-3.2-1.6-6.8-1.6-5.1.1-5.1 2.1-10.3 2.1" fill="#2a5f9e"/><path d="m54.4 24.6l3.9.1c-1-1.8-4.3-1.9-7-1.4 1.7-.5 3.7-1.1 4.1-1.2-.8-.6-4.3-2.8-8.7 1.6h-.1c-4.4-4.4-7.9-2.2-8.7-1.6.3.1 2.4.6 4.1 1.2-2.7-.4-6-.3-7 1.4l3.9-.1c-1.6.8-2.5.9-2.8 2.8.1 0 2.1-.6 4.2-1.1-1.1.6-2.2 1.3-2.6 2 1.9.1 3.5-.4 4.8-1-.8 1-1.2 2.1-1.2 2.7.9-.2 1.9-1 2.7-1.8-.5 1.8-.4 3.7.1 4.4.8-.6 1.3-1.6 1.7-2.7v1.1h1.7l-.1-1.5c.4 1.3 1 2.5 1.9 3.2.5-.8.6-2.6.1-4.4.8.8 1.7 1.6 2.7 1.8.1-.6-.4-1.7-1.2-2.7 1.2.6 2.9 1.1 4.8 1-.5-.7-1.5-1.4-2.6-2 2.1.6 4.1 1.1 4.2 1.1-.3-2-1.2-2.1-2.9-2.9" fill="#75a843"/><path fill="#c94747" d="m45.4 28.2h2.7v21.8h-2.7z"/><path d="m40.3 42.1l2.2 2.3h8.1l2.2-2.3.2-3.4-5.3-1.6.5-.4-1.7-1-1.7 1 .5.4-4.8 1.2-.2 3.8m11.5-2.8l-1.3 2-1.3-.5-1.6-.3v-2.9l4.2 1.7m-10.4 0l4.2-1.7v2.9l-1.6.3-1.3.5-1.3-2" fill="#f1bf31"/><path fill="#2a5f9e" d="m11 11h21v21h-21z"/><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9-1f1ef.svg b/riot/emojione/svg/1f1e9-1f1ef.svg new file mode 100644 index 0000000..f4ae5ea --- /dev/null +++ b/riot/emojione/svg/1f1e9-1f1ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11 32v21.4c5.4 5.3 12.8 8.6 21 8.6 16.6 0 30-13.4 30-30h-51" fill="#83bf4f"/><path d="m11 32h51c0-16.6-13.4-30-30-30-8.2 0-15.6 3.3-21 8.6 0 0 0 21.4 0 21.4" fill="#42ade2"/><path d="M11,10.6C5.4,16,2,23.6,2,32s3.4,16,9,21.4L32.4,32L11,10.6z" fill="#f9f9f9"/><path fill="#c94747" d="m14 35.7l4.3 3.3-1.6-5.3 4.3-3.5h-5.3l-1.7-5.2-1.6 5.2h-5.4l4.3 3.5-1.6 5.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9-1f1f0.svg b/riot/emojione/svg/1f1e9-1f1f0.svg new file mode 100644 index 0000000..fd2d704 --- /dev/null +++ b/riot/emojione/svg/1f1e9-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="m61.2 25c-3.2-13.2-15-23-29.2-23-.3 0-.7 0-1 0v23h30.2"/><path d="m17 6c-7 4.1-12.2 10.9-14.2 19h14.2v-19"/><path d="M2.8,39C4.8,47.1,10,53.9,17,58V39H2.8z"/><path d="m31 62c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2v23"/></g><path d="m61.2 25h-30.2v-23c-5.1.2-9.9 1.6-14 4v19h-14.2c-.5 2.2-.8 4.6-.8 7s.3 4.8.8 7h14.2v19c4.1 2.4 8.9 3.8 14 4v-23h30.2c.5-2.2.8-4.6.8-7s-.3-4.8-.8-7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9-1f1f2.svg b/riot/emojione/svg/1f1e9-1f1f2.svg new file mode 100644 index 0000000..27fc817 --- /dev/null +++ b/riot/emojione/svg/1f1e9-1f1f2.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M40.9,3.4H23.1C13.7,6.3,6.3,13.7,3.4,23v18c2.9,9.3,10.3,16.7,19.7,19.6H41c9.3-2.9,16.7-10.3,19.6-19.7V23 + C57.7,13.7,50.3,6.3,40.9,3.4z" fill="#699635"/><path d="m23 60.6c1.9.6 3.9 1 6 1.2v-59.6c-2.1.2-4.1.6-6 1.2v57.2" fill="#ffe62e"/><path d="m29 61.9c1 .1 2 .1 3 .1s2-.1 3-.1v-59.7c-1-.1-2-.2-3-.2s-2 .1-3 .2v59.7" fill="#3e4347"/><path d="m35 61.9c2.1-.2 4.1-.6 6-1.2v-57.3c-1.9-.6-3.9-1-6-1.2v59.7" fill="#fff"/><path d="m2.1 29h59.7c-.2-2.1-.6-4.1-1.2-6h-57.2c-.6 1.9-1 3.9-1.3 6" fill="#ffe62e"/><path d="m2 32c0 1 .1 2 .1 3h59.7c.1-1 .2-2 .2-3 0-1-.1-2-.2-3h-59.7c0 1-.1 2-.1 3" fill="#3e4347"/><path d="m3.4 41h57.2c.6-1.9 1-3.9 1.2-6h-59.6c.2 2.1.6 4.1 1.2 6" fill="#fff"/><circle cx="32" cy="32" r="15" fill="#c94747"/><g fill="#699635"><path d="m32 21.6l1.4 1.1-.5-1.8 1.4-1.1h-1.7l-.6-1.8-.6 1.8h-1.7l1.4 1.1-.5 1.8z"/><path d="m26.8 23l1.8.2-1.4-1.3.7-1.6-1.5.8-1.4-1.2.4 1.8-1.5.9 1.8.2.4 1.8z"/><path d="m23 26.8l1.6-.7-1.8-.4-.2-1.8-.9 1.5-1.8-.4 1.2 1.4-.8 1.5 1.6-.7 1.3 1.4z"/><path d="m21.6 32l1.1-1.4-1.8.5-1.1-1.4v1.7l-1.8.6 1.8.6v1.7l1.1-1.4 1.8.5z"/><path d="m23 37.2l.2-1.8-1.3 1.4-1.6-.7.8 1.5-1.2 1.4 1.8-.4.9 1.5.2-1.8 1.8-.4z"/><path d="m26.8 41l-.7-1.6-.4 1.8-1.8.2 1.5.9-.4 1.8 1.4-1.2 1.5.8-.7-1.6 1.4-1.3z"/><path d="m32 42.4l-1.4-1.1.5 1.8-1.4 1.1h1.7l.6 1.8.6-1.8h1.7l-1.4-1.1.5-1.8z"/><path d="m37.2 41l-1.8-.2 1.4 1.3-.7 1.6 1.5-.8 1.4 1.2-.4-1.8 1.5-.9-1.8-.2-.4-1.8z"/><path d="m41 37.2l-1.6.7 1.8.4.2 1.8.9-1.5 1.8.4-1.2-1.4.8-1.5-1.6.7-1.3-1.4z"/><path d="m42.4 32l-1.1 1.4 1.8-.5 1.1 1.4v-1.7l1.8-.6-1.8-.6v-1.7l-1.1 1.4-1.8-.5z"/><path d="m41 26.8l-.2 1.8 1.3-1.4 1.6.7-.8-1.5 1.2-1.4-1.8.4-.9-1.5-.2 1.8-1.8.4z"/><path d="m37.2 23l.7 1.6.4-1.8 1.8-.2-1.5-.9.4-1.8-1.4 1.2-1.5-.8.7 1.6-1.4 1.3z"/></g><path d="m36 38h-6.5c0 0 1-3.4 6.5 0" fill="#ffe62e"/><path d="m31.8 26.2c0 0-7.3 8.2 4.2 11.8l-4.2-11.8" fill="#c28fef"/><path d="m31.8 26.2c0 0 4.2 1 4.2 11.8 0 0-4.2-2.4-4.2-11.8" fill="#699635"/><path d="m29.5 26.4c0 0-1.4.3-1.5 2.2 0 0 1.3-.7 2.6-.7 1.4 0-1.1-1.5-1.1-1.5" fill="#ffe62e"/><path d="m29.5 26.4c0 0 .9 2.9 4.4 1.6 0 0-1.5-3.1-4.4-1.6" fill="#c28fef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9-1f1f4.svg b/riot/emojione/svg/1f1e9-1f1f4.svg new file mode 100644 index 0000000..133278c --- /dev/null +++ b/riot/emojione/svg/1f1e9-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c94747"><path d="M38,2.6V26h23.4C59,14.2,49.8,5,38,2.6z"/><path d="M26,61.4V38H2.6C5,49.8,14.2,59,26,61.4z"/></g><g fill="#2a5f9e"><path d="M38,38v23.4C49.8,59,59,49.8,61.4,38H38z"/><path d="M2.6,26H26V2.6C14.2,5,5,14.2,2.6,26z"/></g><path d="m61.4 26h-23.4v-23.4c-1.9-.4-3.9-.6-6-.6s-4.1.2-6 .6v23.4h-23.4c-.4 1.9-.6 3.9-.6 6s.2 4.1.6 6h23.4v23.4c1.9.4 3.9.6 6 .6s4.1-.2 6-.6v-23.4h23.4c.4-1.9.6-3.9.6-6s-.2-4.1-.6-6" fill="#f9f9f9"/><path d="m29 29.3c0 0-.4-.1-.8-.1.3-.4.4-1.2.4-1.2s-.7.4-.9.8c-.1-.3-.4-.6-.4-.6s-.3.4-.3.7c0 .3.5.8.5.8s.6.2 1 .1c.3 0 .5-.5.5-.5" fill="#699635"/><path d="m28.4 30.3c0 0-.4 0-.8.1.1-.5 0-1.2 0-1.2s-.5.5-.7 1c-.2-.2-.5-.5-.5-.5s-.2.4-.1.7c.1.3.7.7.7.7s.7 0 1-.2c.3-.1.4-.6.4-.6" fill="#83bf4f"/><path d="m28.1 31.4c0 0-.4.1-.7.3 0-.5-.3-1.2-.3-1.2s-.4.7-.4 1.1c-.3-.2-.6-.3-.6-.3s-.1.5.1.7c.2.3.8.5.8.5s.6-.2.9-.4c.2-.3.2-.7.2-.7" fill="#699635"/><path d="m28 32.5c0 0-.4.2-.6.4-.1-.5-.6-1.1-.6-1.1s-.2.7-.1 1.2c-.3 0-.7-.1-.7-.1s0 .5.3.7c.3.2.9.3.9.3s.6-.3.7-.6c.3-.3.1-.8.1-.8" fill="#83bf4f"/><path d="m28.3 33.6c0 0-.3.3-.5.6-.2-.4-.8-.9-.8-.9s0 .8.2 1.2c-.3 0-.7 0-.7 0s.1.4.5.6c.3.1 1 0 1 0s.5-.5.6-.8c-.1-.3-.3-.7-.3-.7" fill="#699635"/><path d="m28.8 34.6c0 0-.2.4-.3.7-.3-.4-1-.6-1-.6s.2.7.5 1.1c-.3.1-.7.2-.7.2s.3.4.6.4c.3 0 .9-.2.9-.2s.3-.6.3-.9c.1-.4-.3-.7-.3-.7" fill="#83bf4f"/><path d="m29.6 35.5c0 0-.1.4-.1.7-.4-.3-1.2-.3-1.2-.3s.4.6.8.9c-.3.1-.6.4-.6.4s.4.3.7.3c.3 0 .8-.5.8-.5s.2-.6.1-1c-.1-.3-.5-.5-.5-.5" fill="#699635"/><path d="m30.6 36.1c0 0 0 .4.1.8-.5-.1-1.2 0-1.2 0s.5.5 1 .7c-.2.2-.5.5-.5.5s.4.2.7.1c.3-.1.7-.7.7-.7s0-.7-.2-.9-.6-.5-.6-.5" fill="#83bf4f"/><path d="m35.1 29.3c0 0 .4-.1.8-.1-.3-.4-.4-1.2-.4-1.2s.7.4.9.8c.1-.3.4-.6.4-.6s.3.3.3.7c0 .3-.5.8-.5.8s-.6.2-1 .1-.5-.5-.5-.5" fill="#699635"/><path d="m35.7 30.3c0 0 .4 0 .8.1-.2-.5 0-1.2 0-1.2s.5.5.7 1c.2-.2.5-.5.5-.5s.2.4.1.7c-.1.3-.7.7-.7.7s-.7 0-1-.2c-.3-.1-.4-.6-.4-.6" fill="#83bf4f"/><path d="m36 31.4c0 0 .4.1.7.3 0-.5.3-1.2.3-1.2s.4.7.4 1.1c.3-.2.6-.3.6-.3s.1.5-.1.7c-.2.3-.8.5-.8.5s-.6-.2-.9-.4c-.2-.3-.2-.7-.2-.7" fill="#699635"/><path d="m36.1 32.5c0 0 .4.2.6.4.1-.5.6-1.1.6-1.1s.2.7.1 1.2c.3-.1.7-.1.7-.1s0 .5-.3.7c-.3.2-.9.3-.9.3s-.6-.3-.7-.6c-.3-.3-.1-.8-.1-.8" fill="#83bf4f"/><path d="m35.8 33.6c0 0 .3.3.5.6.2-.4.8-.9.8-.9s0 .8-.2 1.2c.3 0 .7 0 .7 0s-.1.4-.5.6c-.3.1-1 0-1 0s-.5-.5-.6-.8.3-.7.3-.7" fill="#699635"/><path d="m35.3 34.6c0 0 .2.4.3.7.3-.4 1-.6 1-.6s-.2.7-.5 1.1c.3.1.7.2.7.2s-.3.4-.6.4c-.3 0-.9-.2-.9-.2s-.3-.6-.3-.9c-.1-.4.3-.7.3-.7" fill="#83bf4f"/><path d="m34.5 35.5c0 0 .1.4.1.7.4-.3 1.2-.3 1.2-.3s-.4.6-.8.9c.3.1.6.4.6.4s-.4.3-.7.3c-.3 0-.8-.5-.8-.5s-.2-.6-.1-1c.1-.3.5-.5.5-.5" fill="#699635"/><path d="m33.5 36.1c0 0 0 .4-.1.8.5-.1 1.2 0 1.2 0s-.5.5-1 .7c.2.2.5.5.5.5s-.4.2-.7.1c-.3-.1-.7-.7-.7-.7s0-.7.2-.9c.2-.5.6-.5.6-.5" fill="#83bf4f"/><path d="m29 29.1c0 .1 0 4.4 0 4.8 0 .4 0 .7.2 1 .2.2.4.4.7.5.2 0 .9 0 1.2 0 .6 0 .6.1.8.4.2-.4.5-.4 1-.4.2 0 .8 0 1 0 .3-.1.5-.2.6-.4.3-.3.3-.7.3-1.1v-4.6c0-.2 0-.2.1-.3l.7-.7h-7.4l.8.8" fill="#fff"/><path fill="#002d62" d="m31.3 31.2v-2.9h-3l.8.8v2.1z"/><g fill="#ce1126"><path d="m32.6 31.2v-2.9h3.1l-.8.8v2.1z"/><path d="m31.3 32.4h-2.3v1.9c.1.8.7 1.1 1.2 1.1.4 0 .5 0 1.1 0v-3"/></g><g fill="#002d62"><path d="m32.6 32.4h2.3v1.9c-.1.8-.7 1.1-1.2 1.1h-1.1c0 0 0-3 0-3"/><path d="m30.2 25.9c-.9 0-1.9.2-2.6.7-.4.2-.4.3-.2.7l-.5.2c-.3.1-.6.2-.9.4-.2.1-.2.2-.3.3l.7-.1-.1.2c-.1.2-.2.3-.3.5.2-.1.4-.3.6-.4.5-.3 1.5-.3 1.9-.7.1-.1 0-.2 0-.4.3-.1.4-.2.7-.2.9-.2 1.4 0 1.8-.1.1 0 .3-.1.3-.2l-.1-.4h1.4c0 .2-.2.6.2.7.4.1 1.2-.1 1.8.1l.7.2-.1.2v.2c.1.1.2.2.3.2.2.1.5.2.8.3.8.2.9.2 1.5.6 0-.1-.3-.5-.4-.7l.7.1c-.1-.2-.5-.4-.7-.5l-.9-.3c.1-.2.2-.3.1-.4-.1-.2-.9-.6-1.1-.6-.3-.1-.7-.2-1-.2-.3-.1-.9-.1-.9-.1 0 0 .1-.3-.1-.5-.1-.1-.3-.1-.5-.1-.7-.1-1.6 0-2.3 0-.2 0-.3 0-.5.1 0-.1 0 0 0 .2"/></g><path d="m29 36.8c-.4.1-.6.2-1 .4-.1-.2-.3-.5-.5-.7-.1-.1-.2-.2-.3-.3-.2-.1-.3-.1-.4 0l-.1-.2c-.2-.3-.4-.5-.6-.7l-.1-.1-.1-.1c.1.3.1.5.2.8-.1-.1-.2-.1-.3-.2-.1 0-.3-.1-.4-.1l.1.1c.2.2.4.5.5.8.1.3.3.7.6.9 0 0 .2.2.3.2.3.1.3 0 .4-.1.2.4.3.5.6.8.3.3.7.3 1 .3.2 0 .3-.1.4-.2.5-.3.2-.5.2-.7.2 0 .8-.2 1-.3.8-.1 2.2-.2 3.1 0 .1 0 1 .3 1.1.3-.1.2-.1.2-.1.4 0 .2.2.2.3.3.1.1.2.1.4.2.2 0 .3 0 .5 0 .3-.1.5-.3.7-.4.2-.3.3-.5.5-.7l.1.1h.2c.1 0 .2-.1.3-.2.3-.2.5-.6.6-.9.1-.4.3-.6.6-.9-.4 0-.5.1-.7.2l.1-.4c0-.1.1-.3.1-.4-.2.2-.3.4-.5.6-.1.1-.2.2-.2.3-.2.2-.1.2-.2.3-.5-.3-.8.4-1.2.9-.7-.4-1.3-.5-2.1-.7-.2 0-.3 0-.5-.1-1-.1-2.1-.1-3.1 0-.7.3-1.1.4-1.5.5" fill="#ce1126"/><path fill="#eac102" d="m31.7 28.1v.6h-.7v.6h.7v2.4h.6v-2.4h.6v-.6h-.6v-.6z"/><path fill="#201b18" d="m29.9 32.2l2.7-1.6 1.5 2.1-2.9 1.9z"/><path fill="#c9c9c9" d="m30.2 31.7l2.3-1.3 1.2 1.7-2.4 1.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9-1f1ff.svg b/riot/emojione/svg/1f1e9-1f1ff.svg new file mode 100644 index 0000000..081674e --- /dev/null +++ b/riot/emojione/svg/1f1e9-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-16.6-13.4-30-30-30v60c16.6 0 30-13.4 30-30" fill="#f9f9f9"/><path d="M2,32c0,16.6,13.4,30,30,30V2C15.4,2,2,15.4,2,32z" fill="#699635"/><g fill="#ed4c5c"><path d="m40.7 39l-.1-5.4 5.4-1.6-5.4-1.6.1-5.4-3.3 4.3-5.4-1.6 3.3 4.3-3.3 4.3 5.4-1.6z"/><path d="m37.2 44c-6.6 0-11.9-5.4-11.9-12s5.3-12 11.9-12c2.5 0 4.8.8 6.8 2.1-2.7-3.1-6.7-5.1-11.2-5.1-8.2 0-14.8 6.7-14.8 15 0 8.3 6.6 15 14.8 15 4.5 0 8.5-2 11.2-5.1-1.9 1.3-4.2 2.1-6.8 2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1e9.svg b/riot/emojione/svg/1f1e9.svg new file mode 100644 index 0000000..e7085af --- /dev/null +++ b/riot/emojione/svg/1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m37.7 18.1c2 .7 3.7 1.9 4.9 3.7 1 1.4 1.7 3 2.1 4.7s.6 3.3.6 4.8c0 3.9-.8 7.1-2.3 9.8-2.1 3.6-5.3 5.4-9.7 5.4h-12.6v-29h12.5c1.8 0 3.3.2 4.5.6m-11.1 4.4v18.9h5.6c2.9 0 4.9-1.4 6-4.2.6-1.5.9-3.4.9-5.5 0-3-.5-5.2-1.4-6.8-.9-1.6-2.8-2.4-5.5-2.4h-5.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1e6.svg b/riot/emojione/svg/1f1ea-1f1e6.svg new file mode 100644 index 0000000..0a39cf6 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#ffce31"/><g fill="#ed4c5c"><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z"/></g><g fill="#c8b100"><path d="m9.2 28.7h3.2v1.8h-3.2z"/><path d="m9.2 41.9h3.3v1.7h-3.3z"/></g><path d="m8.9 39.1c-.3.2-.5.4-.5.5 0 .1.1.2.3.3.2.1.4.3.3.5.2-.2.3-.4.3-.6 0-.3-.2-.6-.4-.7" fill="#ed4c5c"/><path fill="#fff" d="m9.7 30.5h2.3v11.4h-2.3z"/><g fill="#ed4c5c"><path d="m14.4 34.7c-.5-.2-1.4-.4-2.4-.4-.3 0-.7 0-1.1.1-1.4.2-2.5.8-2.4 1.2l-.5-1.1c-.1-.5 1.1-1.1 2.6-1.4.5-.1 1-.1 1.4-.1 1 0 1.9.1 2.4.3v1.4"/><path d="m9.7 36.2c-.6 0-1.1-.2-1.1-.5 0-.2.2-.5.6-.7.2 0 .4 0 .6 0l-.1 1.2"/><path d="m12 35.3c.4.1.7.2.9.3.1.1-.3.5-.9.8v-1.1"/><path d="m8.2 38.4c-.1-.2.6-.6 1.5-.9.4-.1.7-.3 1.2-.5 1.2-.5 2.2-1.2 2-1.4l.2 1.2c.1.2-.7.8-1.9 1.4-.4.2-1.1.5-1.5.6-.7.2-1.3.6-1.3.7l-.2-1.1"/></g><g fill="#c8b100"><path d="m30.7 28.7h3.2v1.8h-3.2z"/><path d="m30.6 41.9h3.3v1.7h-3.3z"/></g><path d="m34.2 39.1c.3.2.5.4.5.5 0 .1-.1.2-.3.3-.2.2-.4.5-.3.6-.2-.2-.3-.4-.3-.6 0-.4.2-.7.4-.8" fill="#ed4c5c"/><path fill="#fff" d="m31.1 30.5h2.3v11.4h-2.3z"/><g fill="#ed4c5c"><path d="m28.7 34.7c.5-.2 1.4-.4 2.4-.4.3 0 .7 0 1.1.1 1.4.2 2.5.8 2.4 1.2l.5-1.2c.1-.5-1.1-1.1-2.6-1.4-.5 0-1 0-1.4 0-1 0-1.9.1-2.4.3v1.4"/><path d="m33.4 36.2c.6 0 1.1-.2 1.1-.5 0-.2-.2-.5-.6-.7-.2 0-.4 0-.6 0l.1 1.2"/><path d="m31.1 35.3c-.4.1-.7.2-.9.3-.1.1.3.5.9.8v-1.1"/><path d="m34.9 38.4c.1-.2-.6-.6-1.5-.9-.4-.1-.7-.3-1.2-.5-1.2-.5-2.2-1.2-2-1.4l-.2 1.2c-.1.2.7.8 1.9 1.4.4.2 1.1.5 1.5.6.7.2 1.3.7 1.2.8l.3-1.2"/><path d="m21.5 22.3c1.9 0 5.8.4 7.2 1.8-1.5 3.6-3.9 2.1-7.2 2.1-3.2 0-5.7 1.5-7.2-2.1 1.4-1.4 5.2-1.8 7.2-1.8"/></g><g fill="#c8b100"><path d="m26.4 26.3c-1.2-.7-3-.8-4.9-.8-1.9 0-3.7.2-4.9.8l.4 1.7c1.1.3 2.7.5 4.5.6 1.8 0 3.3-.2 4.5-.6l.4-1.7"/><path d="m28.1 22c-.4-.3-1.2-.6-1.9-.6-.3 0-.6 0-.9.1 0 0-.6-.8-2-.8-.5 0-.9.1-1.3.3v-.1c-.1-.2-.3-.4-.5-.4s-.5.3-.5.5v.1c-.4-.2-.8-.3-1.3-.3-1.4 0-2 .9-2 .8-.3-.1-.6-.1-.9-.1-4.6 0-2.3 3.1-2.3 3.1l.5-.6c-1.1-1.4-.1-2.2 1.9-2.2.3 0 .5 0 .7.1-.7 1 .6 1.9.6 1.9l.3-.5c-.7-.5-.8-2.2 1.2-2.2.5 0 .9.1 1.3.4 0 .1-.1 1.5-.2 1.7l.8.7.8-.7c-.1-.3-.2-1.6-.2-1.7.3-.2.8-.4 1.3-.4 2.1 0 2.1 1.7 1.2 2.2l.3.5c0 0 1.1-.9.6-1.9.2 0 .5-.1.7-.1 2.4 0 2.5 1.8 1.9 2.2l.4.6c-.2 0 .9-1.4-.5-2.6"/></g><path d="m20.9 20.1c0-.3.3-.6.6-.6s.6.3.6.6c0 .3-.3.6-.6.6s-.6-.3-.6-.6" fill="#005bbf"/><path fill="#c8b100" d="m21.3 18.4v.3h-.3v.3h.3v.5.5h-.4v.1.2h1.2l.1-.2-.1-.1h-.4v-.5-.5h.3v-.3h-.3v-.3z"/><path d="m21.5 28.3c-1.6 0-3-.2-4.1-.5 1.1-.3 2.5-.5 4.1-.5 1.6 0 3 .2 4.1.5-1 .3-2.5.5-4.1.5" fill="#ed4c5c"/><g fill="#fff"><path d="m21.6 45.6c-1.9 0-3.7-.5-5.3-1.2-1.2-.6-1.9-1.7-1.9-3v-4.8h14.4v4.8c0 1.3-.8 2.5-1.9 3-1.6.8-3.4 1.2-5.3 1.2"/><path d="m21.5 28.6h7.2v8h-7.2z"/></g><path d="m21.6 41.4c0 1.9-1.6 3.4-3.6 3.4s-3.6-1.5-3.6-3.4v-4.8h7.2v4.8" fill="#ed4c5c"/><g fill="#c8b100"><path d="m15.9 44.2c.2.1.5.3.9.4v-8.2h-.8l-.1 7.8"/><path d="m14.3 41.3c0 1 .4 1.8.8 2.2v-7.1h-.8v4.9"/></g><path d="m17.5 44.8c.3 0 .6 0 .8 0v-8.4h-.8v8.4" fill="#c7b500"/><path d="m19.1 44.6c.3-.1.7-.3.9-.4v-7.8h-.8l-.1 8.2" fill="#c8b100"/><path fill="#ed4c5c" d="m14.3 28.6h7.2v8h-7.2z"/><path d="m20.8 43.5c.4-.3.7-1 .8-1.8v-5.2h-.8v7" fill="#c8b100"/><g fill="#ed4c5c"><path d="m28.8 36.6v4.8c0 1.9-1.6 3.4-3.6 3.4-2 0-3.6-1.5-3.6-3.4v-4.8h7.2"/><path d="m26.2 30c.3.6.3 2.1-.6 1.8.2.1.3.8.6 1.2.5.6 1.1.1 1-.6-.2-1.1-.1-1.8.1-2.9 0 .1.5.1.7-.1-.1.3-.2.7 0 .7-.2.3-.7.8-.8 1.1-.1.7 1 2-.2 2.3-.8.2-.3.8 0 1.1 0 0-.4 1.3-.2 1.2-.8.3-.6-.4-.6-.4.4-1.2-.7-1.3-.6-1.5-1-.1.1.9-.8.9-.2 0-.6.2-.6.2-1.1-.1-.5-1.1-.1-1 .3.1.6.6.6-.1 0 0-.5-.8.8-.8-.5 0-.8-.4-1-.9-.2.1-.5.6-1.6.7 0 0-.3-1.1 0-.9.4.2.6.2 1-.2-.2-.3-1.4-.7-1.2-1.4 0-.2.6-.5.6-.5-.1.5.2 1 .8 1 .8.1.5-.2.6-.4.1-.2.7.1.5-.4 0-.1-.7-.2-.5-.5.4-.5 1-.1 1.5.4"/><path d="m21.6 44.6l-.2-.5.2-.6.2.6-.2.5"/></g><g fill="#c8b100"><path d="m16.5 30.3v.5h.2v.4h-.5v1h.3v2.2h-.6v1.1h4.1v-1.1h-.5v-2.2h.2v-1h-.5v-.4h.3v-.5h-1v.5h.2v.4h-.5v-1.2h.3v-.5h-1.1v.5h.3v1.2h-.5v-.4h.2v-.5z"/><path d="m27.8 42.6v-5h-5.2v5l2.4 1.1h.3l2.5-1.1m-2.8-4.6v1.7l-1.7-1.7h1.7m-2.1.1l2 2-2 2v-4m.2 4.4l1.9-1.9v2.8l-1.9-.9m2.2.8v-2.8l1.9 1.9-1.9.9m2.1-1.2l-2-2 2-2v4m-2.1-4.1h1.7l-1.7 1.7v-1.7"/></g><path d="m19.2 36.5c0-1.5 1-2.6 2.3-2.6s2.3 1.2 2.3 2.6-1 2.6-2.3 2.6-2.3-1.1-2.3-2.6" fill="#ed4c5c"/><path d="m19.9 36.5c0-1.1.7-1.9 1.6-1.9s1.6.9 1.6 1.9c0 1.1-.7 1.9-1.6 1.9s-1.6-.8-1.6-1.9" fill="#005bbf"/><g fill="#c8b100"><path d="m20.8 35.2l-.4 1.1.3.1-.2.4h.6l-.2-.4.3-.1-.4-1.1"/><path d="m22.3 35.2l-.4 1.1.3.1-.2.4h.6l-.1-.4.3-.1-.5-1.1"/><path d="m21.6 36.5l-.5 1.1.3.1-.1.4h.5l-.1-.4.3-.1-.4-1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1e8.svg b/riot/emojione/svg/1f1ea-1f1e8.svg new file mode 100644 index 0000000..2d7bf4d --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32h-60c0 5.5 1.5 10.6 4 15h52c2.5-4.4 4-9.5 4-15" fill="#2a5f9e"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#ffe62e"/><path d="m32 62c11.1 0 20.8-6 26-15h-52c5.2 9 14.9 15 26 15" fill="#ed4c5c"/><g transform="matrix(1.14637 0 0 1.17117 33.1783 82.1384)"><path d="m-6.8-44.9l.7.7.3-.8.1-.5c-.1-1.4 0-2.8 0-2.8l.2.2c-.2-.2-.5-.5-.8-.8l-.5-.5c0 0 0 3 0 4.5" fill="#034ea2"/><path d="m-5.7-45.5l.7-2.1-.7-.7c0 0 0 1.4 0 2.8" fill="#ed1c24"/><path d="m-6.8-49.4l.5.5c-.9-.9-1.9-1.9-2.4-2.4-.1-.1-.1 2.1-.1 4.5l2 2c0-1.6 0-4.6 0-4.6" fill="#fd0"/></g><g transform="matrix(-1.14637 0 0 1.17117 1405.8541 82.1384)"/><g transform="matrix(1.14637 0 0 1.17117 33.1783 82.1384)"><path d="m-6.1-36.4c-1.7-1-1.9-4.1-1.9-4.6 0-.4 0-5.4 0-5.4l.5.5c-.9-.9-1.9-1.9-2.4-2.4-.2-.2 0 6.5 0 9.4 0 1.4.9 6.3 5.9 3.8 0 0 2.5-.9 3.3-2-.2 0-.3 0-.5 0-.1.1-.2.1-.3.1-2.9 2-4.6.6-4.6.6" fill="#fd0"/><path d="m-8-41c0 .4.2 3.5 1.8 4.5 0 0 1.7 1.4 4.7-.5-.9.4-1.6.4-2.1.3-1.4-.4-2.9-2-3.1-3.7-.2-1.7-.2-4.9-.2-4.9l.2.2c-.2-.2-.5-.5-.8-.8l-.5-.4c0 0 0 4.9 0 5.3" fill="#034ea2"/><path d="m-5.9-43.1c0-.1 0-.7 0-1.3-.3-.3.1.1-.7-.7l-.2-.2c0 0 0 .1 0 .1 0 .4 0 3.3.2 4.8.2 1.7 1.7 3.3 3.1 3.7.5.1 1.2.1 2.1-.3.1 0 .1-.1.2-.1-2.7-.3-4.4-2.7-4.7-6" fill="#ed1c24"/></g><g transform="matrix(1.14637 0 0 1.17117 33.1783 82.1384)"><path d="m4.1-36.3c1.6-1 1.9-4.1 1.8-4.5 0-.4 0-5.4 0-5.4l-.5.5c.9-.9 1.9-1.9 2.4-2.4.2-.2 0 6.5 0 9.4 0 1.4-.9 6.3-5.9 3.8 0 0-2.5-.9-3.3-2 .2 0 .3 0 .5 0 .1 0 .2.1.2.1 3.1 1.9 4.8.5 4.8.5" fill="#fd0"/><path d="m5.9-40.9c0 .4-.2 3.5-1.8 4.5 0 0-1.7 1.4-4.7-.5.9.4 1.6.4 2.1.3 1.4-.4 2.9-2 3.1-3.7.2-1.7.2-4.9.2-4.9l-.2.2c.2-.2.5-.5.8-.8l.5-.5c0 .1 0 5 0 5.4" fill="#034ea2"/><path d="m3.9-43c0-.1 0-.7 0-1.3.3-.3-.1.1.7-.7l.2-.2c0 0 0 .1 0 .1 0 .4 0 3.3-.2 4.8-.2 1.7-1.6 3.3-3.1 3.8-.5.1-1.2.1-2.1-.3-.1 0-.1-.1-.2-.1 2.6-.4 4.4-2.8 4.7-6.1" fill="#ed1c24"/></g><path d="m26.3 31c0 4.1 2.6 7.4 5.7 7.4s5.7-3.3 5.7-7.4-2.6-7.4-5.7-7.4-5.7 3.4-5.7 7.4" fill="#8cddea"/><path d="M26.3,31.3c0,4.1,2.6,7.4,5.7,7.4c3.2,0,5.7-3.3,5.7-7.4H26.3" fill="#6dd337"/><path d="m26.5 31.5l10.8.2c0 0 .1-.8.1-.8 0-.1.2-.2-.1-.2-1.2-.1-.7-.2-1.4-.2-.2 0-4.8-1.1-5.2-1.1-.4-.1-4 .5-4 .5l-.2 1.6" fill="#557176"/><path d="m26.4 29.6l1.7.7c0 0 2.2-.4 2.4-.3.2.1 2.1.4 2.2.4.1 0 2.9 0 2.9 0h-.1c-.2-.1-2.4-.7-2.6-.8-.1-.1-1.8-.7-1.9-.9-.2-.2-1.4-.9-1.6-.9-.2-.1-3 1.8-3 1.8" fill="#fff"/><path d="m34.4 23.8c0 0-1.1-.7-2.5-.7-1.1 0-2.2.6-2.2.6-1.2.7-2.2 2-2.8 3.6-.4 1.1-.7 2.4-.7 3.7 0 3.9 2.1 6.9 4.8 7.7 0 0 .4.2.9.2.5 0 1-.1 1-.1 2.7-.7 4.9-3.8 4.9-7.7 0-5.1-3.9-7.7-3.4-7.3m-1.4 14.5c0 0-.5.1-1 .1-.5 0-1-.1-1-.1-2.4-.7-4.3-3.6-4.3-7.1 0-1.2.3-2.5.7-3.5.6-1.4 1.5-2.6 2.6-3.2 0 0 1.1-.7 2-.7 1.3 0 2.3.7 2.3.7 1.8 1.1 3.1 3.7 3.1 6.6-.1 3.6-2 6.6-4.4 7.2" fill="#b1babf"/><path d="m32.2 32.9c0 0 0 0 0 0m-3.6-1.7c0 0 1.7 2.3 1.7 2.3l-2.6 1.5c0 0 .2.6.7 1.3.5.6 1.7 1.9 2.8 2 1.2.1 2 .1 2.7-.3.6-.4 1.5-.9 2.1-1.9.6-.9.6-1.1.6-1.1s-3.8-.8-3.9-.8c-.1-.1-3.7-2.9-3.8-3-.1-.1.8-1.2.8-1.2l-1.1 1.2z" fill="#034ea2"/><path fill="#ed1c24" d="m31.1 39.8h1.9v4.9h-1.9z"/><g fill="#034ea2"><path d="m29.6 40.2h1.9v4.9h-1.9z"/><path d="m32.5 40.2h1.9v4.9h-1.9z"/></g><g fill="#fd0"><path d="m29.2 40.2h1.2v6.2h-1.2z"/><path d="m33.6 40.2h1.2v6.2h-1.2z"/></g><path fill="#fff" d="m27.5 38.1h9v2.4h-9z"/><path d="m37.6 18.5c-1.8 0-3.7 2-5.6 2s-3.8-2-5.6-2c-1.7 0-8.4 2-8.4 2 9.3 0 14 5 14 5s4.7-5 14-5c0 0-6.7-2-8.4-2" fill="#594640"/><circle cx="32" cy="19.7" r="1.2" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1ea.svg b/riot/emojione/svg/1f1ea-1f1ea.svg new file mode 100644 index 0000000..0f3f6d8 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#f9f9f9"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#42ade2"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1ec.svg b/riot/emojione/svg/1f1ea-1f1ec.svg new file mode 100644 index 0000000..ee47f26 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ed4c5c"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#3e4347"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32c0,3.5,0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10c0-3.5-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/><g fill="#fff"><path d="m30.6 25.1c.3-.2.5 0 .7.2.1.2.1.8-.1 1.5-.1.4-.4.8-.6 1.1.4 0 .9-.1 1.4-.3.5.2.9.3 1.4.3-.2-.4-.4-1.2-.3-1.8 0-.9-.1-1.2-.3-1.4-.2-.2-.7-.3-1-.3-.2 0-.2.1-.2.1-.4-.1-.7-.1-.9 0-.2.2-.2.7-.1.6"/><path d="m37.3 28.1c-.2-1.1-1.3-.8-2.2-.3-.4.2-.8.4-1.2.4-.1 0-.2 0-.3 0-.5 0-1.1-.1-1.6-.3-.5.2-1.1.3-1.6.3-.1 0-.1 0-.2 0-.5 0-.9-.2-1.3-.5-.8-.4-1.9-.7-2.2.3.2-.1.4-.3.5-.3l-.4 9.6.2-.2.4-9.3c.1.1.5.5.6.5l-.3 8.1.3-.3.3-7.7c.1.1.4.3.5.4l-.3 6.7.8-.7.8-2.7c-.7-1.5-.6-2.8-.6-2.8.1 0 .1 0 .2 0 .5 0 1.6-.3 2.1-.6.1 0 .1-.1.2-.1 0 .1.1.1.2.2.5.3 1.6.6 2.1.6.1 0 .1 0 .2 0 0 0 .1 1.3-.6 2.8l.7 2.6.8.7-.3-6.6c.1-.1.3-.3.5-.4l.3 7.5.3.3-.3-8c.1-.1.5-.4.6-.5l.4 9.2.2.2-.4-9.5c.1.1.4.3.6.4"/><path d="m31.1 29.7v3.5.3c0 0 0 0 0 .1 0 0 0 .1.1.1.1.2.3.3.4.5.1.1.2.2.3.3.1-.1.2-.2.3-.3.2-.2.3-.3.5-.5v-.1-.2-3.5c-.3-.1-.6-.2-.8-.4-.1-.1-.4 0-.8.2"/></g><path d="m36.3 37.9c0-.5-.5-.5-.9-.4-.1 0-.1 0-.2.1l-.6-2.2 3.3 3.2-.4-10.4c-.1-1.6-1.4-1.2-2.3-.6-.5.3-.9.5-1.4.5-.7-1.2-.3-2.8-.8-3.2-.2-.2-.9-.5-1.4-.5-.3 0-.2.2-.2.2-.5-.1-.9-.1-1.1.1-.2.1 0 1.1.1.9.3-.3.4-.2.6.1.2.3-.2 1.5-.7 2.4-.6 0-1.1-.2-1.6-.5-1-.6-2.3-.9-2.3.6l-.4 10.3 3.3-3.1-.6 2.1c-.1 0-.1 0-.2-.1-.4-.1-.9-.1-.9.4-.6-.1-.8.8-.2 1 0 .3 0 .5.4.5.9.3 2.5.4 4.1.4s3.2-.1 4.1-.4c.4-.1.4-.3.4-.5.8-.2.5-1.1-.1-.9m-5.1-4.3c0-.1 0-.1 0 0-.1-.1-.1-.1-.1-.1v-.3-3.5c.4-.1.7-.2.9-.4.2.2.5.3.8.4v3.5.2.1c0 0 0 0 0 0-.2.2-.3.4-.5.5-.1.1-.2.2-.3.3-.1-.1-.2-.2-.3-.3-.2-.1-.3-.3-.5-.4m0-6.7c.2-.7.2-1.3.1-1.5-.2-.2-.4-.4-.7-.2-.1.1-.1-.4.1-.5.2-.1.5-.1.9 0 0 0 0-.2.2-.1.3 0 .9.2 1 .3.1.1.3.5.3 1.4 0 .6.1 1.4.3 1.8-.4 0-.9-.1-1.4-.3-.5.2-.9.3-1.4.3.2-.4.5-.8.6-1.2m-2.6 8.9l.3-6.7c-.1-.1-.3-.3-.5-.4l-.4 7.6-.3.3.3-8.1c-.1-.1-.5-.4-.6-.5l-.4 9.3-.2.2.4-9.6c-.1 0-.4.1-.5.3.3-1 1.4-.7 2.2-.2.4.3.9.4 1.3.5.1 0 .1 0 .2 0 .5 0 1-.1 1.6-.3.6.2 1.1.3 1.6.3.1 0 .2 0 .3 0 .4-.1.8-.2 1.2-.4.9-.5 2-.8 2.2.3-.2-.1-.5-.3-.6-.3l.4 9.5-.2-.2-.4-9.4c-.1.1-.5.5-.6.5l.3 8-.3-.3-.3-7.5c-.1.1-.4.3-.5.4l.3 6.6-.8-.7-.7-2.6c.7-1.5.6-2.8.6-2.8-.1 0-.1 0-.2 0-.5 0-1.6-.2-2.1-.6-.1 0-.1-.1-.2-.2 0 0-.1.1-.2.1-.5.3-1.6.6-2.1.6-.1 0-.1 0-.2 0 0 0-.1 1.3.6 2.8l-.8 2.7-.7.8m3.4 2c-.4 0-.8 0-1.1 0l.7-3.4c.1.1.2.2.4.3.1-.1.3-.2.4-.3l.8 3.4c-.4 0-.8 0-1.2 0" fill="#c09300"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1ed.svg b/riot/emojione/svg/1f1ea-1f1ed.svg new file mode 100644 index 0000000..63f1fe8 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60 42c-5.5 0-10-4.5-10-10h-39.2v21.2c5.4 5.4 12.9 8.8 21.2 8.8 13.1 0 24.2-8.4 28.3-20-.1 0-.2 0-.3 0" fill="#83bf4f"/><path d="m60 22c.1 0 .2 0 .3 0-4.1-11.6-15.2-20-28.3-20-8.3 0-15.8 3.4-21.2 8.8v21.2h39.2c0-5.5 4.5-10 10-10" fill="#3e4347"/><path d="m60.3 22h-49.5v20h49.5c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z"/><path d="m44 38.9c-3-.6-5.3-3.5-5.3-6.9s2.3-6.2 5.3-6.9c-.4-.1-.9-.1-1.3-.1-3.7 0-6.7 3.1-6.7 7s3 7 6.7 7c.4 0 .9 0 1.3-.1"/><path d="m45 34.1l2.5 1.9-1-3.1 2.5-1.9h-3.1l-.9-3-.9 3h-3.1l2.5 1.9-1 3.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1f7.svg b/riot/emojione/svg/1f1ea-1f1f7.svg new file mode 100644 index 0000000..616efd6 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11 32v21.4c5.4 5.3 12.8 8.6 21 8.6 16.6 0 30-13.4 30-30h-51" fill="#42ade2"/><path d="m11 32h51c0-16.6-13.4-30-30-30-8.2 0-15.6 3.3-21 8.6 0 0 0 21.4 0 21.4" fill="#83bf4f"/><path d="M11,10.6C5.4,16,2,23.6,2,32s3.4,16,9,21.4L61.4,32L11,10.6z" fill="#ed4c5c"/><g fill="#ffce31"><path d="m17 23.4c1.2 0 2.3-1.2 2.3-2.6 0-1.4-1 .8-2.3.8-1.2 0-2.3-2.2-2.3-.8 0 1.5 1 2.6 2.3 2.6"/><path d="m27 35.5c.3-.7.5-1.5.6-2.3.8-.4 1.4-1.3 1.4-2.4 0-1-.5-.1-1.3.4 0-.8-.1-1.6-.3-2.4.5-.7.7-1.7.3-2.7-.4-.9-.5 0-1 .8-.3-.7-.7-1.5-1.2-2.1.2-.8-.1-1.7-.7-2.4-.6-.7-.5.1-.6 1-.6-.5-1.2-1-2-1.4-.2-.8-.7-1.5-1.6-1.9-1.3-.5.3 1.3-.1 2.4-.5 1.2-2.9 1.3-1.6 1.8 1 .4 2.1.2 2.8-.5.5.3 1 .7 1.4 1.1-1 .3-2.3-.1-1.5.7.8.8 1.8 1 2.7.7.3.5.6 1 .8 1.5-1-.2-2-.9-1.5.1.4 1 1.2 1.6 2.1 1.7.1.5.2 1.1.2 1.6-.8-.6-1.3-1.5-1.3-.4 0 1 .5 1.8 1.2 2.3-.1.5-.2 1-.4 1.5-.4-.8-.6-1.7-1-.8-.3.9-.3 1.8.2 2.5-.3.4-.6.8-.9 1.2-.1-.8 0-1.6-.6-.9-.6.6-.9 1.5-.8 2.2-.4.3-.8.5-1.2.8.2-.8.6-1.3-.2-1-.8.3-1.3 1-1.5 1.7-.7.2-1.5.3-2.3.3-.8 0-1.6-.1-2.3-.3-.2-.7-.8-1.3-1.5-1.7-.8-.3-.5.2-.2 1-.4-.2-.8-.5-1.2-.8.1-.8-.2-1.6-.8-2.2-.6-.7-.5.1-.6.9-.3-.4-.6-.8-.9-1.2.4-.7.5-1.6.2-2.5-.4-.9-.5 0-1 .8-.2-.5-.3-1-.4-1.5.7-.4 1.2-1.3 1.2-2.3 0-1-.5-.1-1.3.4 0-.6.1-1.1.2-1.6.9-.1 1.7-.7 2.1-1.7.4-1-.6-.2-1.6-.1.2-.5.5-1 .9-1.5.9.3 1.9.1 2.7-.7.8-.8-.5-.4-1.5-.7.4-.4.9-.8 1.4-1.1.7.7 1.8.9 2.8.5 1.3-.5-1.1-.6-1.6-1.8-.5-1.2 1.2-3-.1-2.4-.8.4-1.4 1.1-1.6 1.9-.7.4-1.4.9-2 1.4-.1-.9.1-1.6-.6-.9-.7.7-.9 1.6-.7 2.4-.5.6-.9 1.4-1.2 2.1-.4-.8-.6-1.7-1-.8-.4 1-.2 2 .3 2.7-.2.8-.3 1.6-.3 2.4-1-.6-1.5-1.5-1.5-.5 0 1.1.6 2 1.4 2.4.2.8.4 1.6.6 2.3-1-.2-1.9-.9-1.5.1.4 1.1 1.4 1.7 2.4 1.7.4.7.9 1.3 1.4 1.9-1 .3-2.3-.1-1.5.7.8.9 2 1 2.9.6.6.5 1.3.8 1.9 1.2-.8.7-2.3.8-1.2 1.3 1.1.5 2.3.2 2.9-.7.1 0 .3.1.4.1-.4.5-.6 1.1-.6 1.8h5.6c0-.7-.2-1.3-.6-1.8.1 0 .3-.1.4-.1.6.8 1.8 1.2 2.9.7 1.1-.5-.4-.6-1.2-1.3.7-.3 1.3-.7 1.9-1.2.9.5 2.1.3 2.9-.6.8-.8-.5-.4-1.5-.7.5-.6 1-1.2 1.4-1.9 1 .1 1.9-.6 2.4-1.7.6-1-.4-.3-1.3-.1"/><path d="m16 25.9c0 5.3 0 10.7 0 16 0 1.3 2 1.3 2 0 0-5.3 0-10.7 0-16 0-1.3-2-1.3-2 0"/><path d="m21 34c0 0-2.7-.1-3.4.7-.8.8-.8 2 0 2.7s2 .8 2.7 0 .7-3.4.7-3.4"/><path d="m13 32c0 0 2.7-.1 3.4.7.8.8.8 2 0 2.7s-2 .8-2.7 0-.7-3.4-.7-3.4"/><path d="m13 27c0 0 2.7-.1 3.4.7.8.8.8 2 0 2.7s-2 .8-2.7 0-.7-3.4-.7-3.4"/><path d="m21 29c0 0-2.7-.1-3.4.7-.8.8-.8 2 0 2.7s2 .8 2.7 0 .7-3.4.7-3.4"/><path d="m19 26c0 0-1.3 0-1.7.3-.4.4-.4 1 0 1.4s1 .4 1.4 0 .3-1.7.3-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1f8.svg b/riot/emojione/svg/1f1ea-1f1f8.svg new file mode 100644 index 0000000..891a259 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#ffce31"/><g fill="#ed4c5c"><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z"/></g><g fill="#c8b100"><path d="m9.2 28.7h3.2v1.8h-3.2z"/><path d="m9.2 41.9h3.3v1.7h-3.3z"/></g><path d="m8.9 39.1c-.3.2-.5.4-.5.5 0 .1.1.2.3.3.2.1.4.3.3.5.2-.2.3-.4.3-.6 0-.3-.2-.6-.4-.7" fill="#ed4c5c"/><path fill="#fff" d="m9.7 30.5h2.3v11.4h-2.3z"/><g fill="#ed4c5c"><path d="m14.4 34.7c-.5-.2-1.4-.4-2.4-.4-.3 0-.7 0-1.1.1-1.4.2-2.5.8-2.4 1.2l-.5-1.1c-.1-.5 1.1-1.1 2.6-1.4.5-.1 1-.1 1.4-.1 1 0 1.9.1 2.4.3v1.4"/><path d="m9.7 36.2c-.6 0-1.1-.2-1.1-.5 0-.2.2-.5.6-.7.2 0 .4 0 .6 0l-.1 1.2"/><path d="m12 35.3c.4.1.7.2.9.3.1.1-.3.5-.9.8v-1.1"/><path d="m8.2 38.4c-.1-.2.6-.6 1.5-.9.4-.1.7-.3 1.2-.5 1.2-.5 2.2-1.2 2-1.4l.2 1.2c.1.2-.7.8-1.9 1.4-.4.2-1.1.5-1.5.6-.7.2-1.3.6-1.3.7l-.2-1.1"/></g><g fill="#c8b100"><path d="m30.7 28.7h3.2v1.8h-3.2z"/><path d="m30.6 41.9h3.3v1.7h-3.3z"/></g><path d="m34.2 39.1c.3.2.5.4.5.5 0 .1-.1.2-.3.3-.2.2-.4.5-.3.6-.2-.2-.3-.4-.3-.6 0-.4.2-.7.4-.8" fill="#ed4c5c"/><path fill="#fff" d="m31.1 30.5h2.3v11.4h-2.3z"/><g fill="#ed4c5c"><path d="m28.7 34.7c.5-.2 1.4-.4 2.4-.4.3 0 .7 0 1.1.1 1.4.2 2.5.8 2.4 1.2l.5-1.2c.1-.5-1.1-1.1-2.6-1.4-.5 0-1 0-1.4 0-1 0-1.9.1-2.4.3v1.4"/><path d="m33.4 36.2c.6 0 1.1-.2 1.1-.5 0-.2-.2-.5-.6-.7-.2 0-.4 0-.6 0l.1 1.2"/><path d="m31.1 35.3c-.4.1-.7.2-.9.3-.1.1.3.5.9.8v-1.1"/><path d="m34.9 38.4c.1-.2-.6-.6-1.5-.9-.4-.1-.7-.3-1.2-.5-1.2-.5-2.2-1.2-2-1.4l-.2 1.2c-.1.2.7.8 1.9 1.4.4.2 1.1.5 1.5.6.7.2 1.3.7 1.2.8l.3-1.2"/><path d="m21.5 22.3c1.9 0 5.8.4 7.2 1.8-1.5 3.6-3.9 2.1-7.2 2.1-3.2 0-5.7 1.5-7.2-2.1 1.4-1.4 5.2-1.8 7.2-1.8"/></g><g fill="#c8b100"><path d="m26.4 26.3c-1.2-.7-3-.8-4.9-.8-1.9 0-3.7.2-4.9.8l.4 1.7c1.1.3 2.7.5 4.5.5 1.8 0 3.3-.2 4.5-.5l.4-1.7"/><path d="m28.1 22c-.4-.3-1.2-.6-1.9-.6-.3 0-.6 0-.9.1 0 0-.6-.8-2-.8-.5 0-.9.1-1.3.3v-.1c-.1-.2-.3-.4-.5-.4s-.5.3-.5.5v.1c-.4-.2-.8-.3-1.3-.3-1.4 0-2 .9-2 .8-.3-.1-.6-.1-.9-.1-4.6 0-2.3 3.1-2.3 3.1l.5-.6c-1.1-1.4-.1-2.2 1.9-2.2.3 0 .5 0 .7.1-.7 1 .6 1.9.6 1.9l.3-.5c-.7-.5-.8-2.2 1.2-2.2.5 0 .9.1 1.3.4 0 .1-.1 1.5-.2 1.7l.8.7.8-.7c-.1-.3-.2-1.6-.2-1.7.3-.2.8-.4 1.3-.4 2.1 0 2.1 1.7 1.2 2.2l.3.5c0 0 1.1-.9.6-1.9.2 0 .5-.1.7-.1 2.4 0 2.5 1.8 1.9 2.2l.4.6c-.2 0 .9-1.4-.5-2.6"/></g><path d="m20.9 20.1c0-.3.3-.6.6-.6.4 0 .6.3.6.6s-.3.6-.6.6c-.3 0-.6-.3-.6-.6" fill="#005bbf"/><path fill="#c8b100" d="m21.3 18.4v.3h-.3v.3h.3v.5.5h-.4v.1.2h1.2l.1-.2-.1-.1h-.4v-.5-.5h.3v-.3h-.3v-.3z"/><path d="m21.5 28.3c-1.6 0-3-.2-4.1-.5 1.1-.3 2.5-.5 4.1-.5 1.6 0 3 .2 4.1.5-1 .3-2.5.5-4.1.5" fill="#ed4c5c"/><g fill="#fff"><path d="m21.6 45.6c-1.9 0-3.7-.5-5.3-1.2-1.2-.6-1.9-1.7-1.9-3v-4.8h14.4v4.8c0 1.3-.8 2.5-1.9 3-1.6.8-3.4 1.2-5.3 1.2"/><path d="m21.5 28.6h7.2v8h-7.2z"/></g><path d="m21.6 41.4c0 1.9-1.6 3.4-3.6 3.4s-3.6-1.5-3.6-3.4v-4.8h7.2v4.8" fill="#ed4c5c"/><g fill="#c8b100"><path d="m15.9 44.2c.2.1.5.3.9.4v-8.2h-.8l-.1 7.8"/><path d="m14.3 41.3c0 1 .4 1.8.8 2.2v-7.1h-.8v4.9"/></g><path d="m17.5 44.8c.3 0 .6 0 .8 0v-8.4h-.8v8.4" fill="#c7b500"/><path d="m19.1 44.6c.3-.1.7-.3.9-.4v-7.8h-.8l-.1 8.2" fill="#c8b100"/><path fill="#ed4c5c" d="m14.3 28.6h7.2v8h-7.2z"/><path d="m20.8 43.5c.4-.3.7-1 .8-1.8v-5.2h-.8v7" fill="#c8b100"/><g fill="#ed4c5c"><path d="m28.8 36.6v4.8c0 1.9-1.6 3.4-3.6 3.4-2 0-3.6-1.5-3.6-3.4v-4.8h7.2"/><path d="m26.2 30c.3.6.3 2.1-.6 1.8.2.1.3.8.6 1.2.5.6 1.1.1 1-.6-.2-1.1-.1-1.8.1-2.9 0 .1.5.1.7-.1-.1.3-.2.7 0 .7-.2.3-.7.8-.8 1.1-.1.7 1 2-.2 2.3-.8.2-.3.8 0 1.1 0 0-.4 1.3-.2 1.2-.8.3-.6-.4-.6-.4.4-1.2-.7-1.3-.6-1.5-1-.1.1.9-.8.9-.2 0-.6.2-.6.2-1.1-.1-.5-1.1-.1-1 .3.1.6.6.6-.1 0 0-.5-.8.8-.8-.5 0-.8-.4-1-.9-.2.1-.5.6-1.6.7 0 0-.3-1.1 0-.9.4.2.6.2 1-.2-.2-.3-1.4-.7-1.2-1.4 0-.2.6-.5.6-.5-.1.5.2 1 .8 1 .8.1.5-.2.6-.4.1-.2.7.1.5-.4 0-.1-.7-.2-.5-.5.4-.5 1-.1 1.5.4"/><path d="m21.6 44.6l-.2-.5.2-.6.2.6-.2.5"/></g><g fill="#c8b100"><path d="m16.5 30.3v.5h.2v.4h-.5v1h.3v2.2h-.6v1.1h4.1v-1.1h-.5v-2.2h.2v-1h-.5v-.4h.3v-.5h-1v.5h.2v.4h-.5v-1.2h.3v-.5h-1.1v.5h.3v1.2h-.5v-.4h.2v-.5z"/><path d="m27.8 42.6v-5h-5.2v5l2.4 1.1h.3l2.5-1.1m-2.8-4.6v1.7l-1.7-1.7h1.7m-2.1.1l2 2-2 2v-4m.2 4.4l1.9-1.9v2.8l-1.9-.9m2.2.8v-2.8l1.9 1.9-1.9.9m2.1-1.2l-2-2 2-2v4m-2.1-4.1h1.7l-1.7 1.7v-1.7"/></g><path d="m19.2 36.5c0-1.5 1-2.6 2.3-2.6s2.3 1.2 2.3 2.6c0 1.4-1 2.6-2.3 2.6s-2.3-1.1-2.3-2.6" fill="#ed4c5c"/><path d="m19.9 36.5c0-1.1.7-1.9 1.6-1.9.9 0 1.6.9 1.6 1.9 0 1.1-.7 1.9-1.6 1.9-.8.1-1.6-.8-1.6-1.9" fill="#005bbf"/><g fill="#c8b100"><path d="m20.8 35.2l-.4 1.1.3.1-.2.4h.6l-.2-.4.3-.1-.4-1.1"/><path d="m22.3 35.2l-.4 1.1.3.1-.2.4h.6l-.1-.4.3-.1-.5-1.1"/><path d="m21.6 36.5l-.5 1.1.3.1-.1.4h.5l-.1-.4.3-.1-.4-1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1f9.svg b/riot/emojione/svg/1f1ea-1f1f9.svg new file mode 100644 index 0000000..ab72447 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#ed4c5c"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#699635"/><path d="m60.3 42c1.1-3.1 1.7-6.5 1.7-10 0-3.5-.6-6.9-1.7-10h-56.6c-1.1 3.1-1.7 6.5-1.7 10 0 3.5.6 6.9 1.7 10h56.6" fill="#ffce31"/><circle cx="32" cy="32" r="14" fill="#428bc1"/><g fill="#ffce31"><path d="m35.8 33.3l6.1-4.3h-7.5l-2.4-7-2.3 7h-7.5l6.1 4.3-2.3 7 6-4.3 6.1 4.3-2.3-7m3.5-3.5l-3.8 2.7-.9-2.7h4.7m-10.1 3.2l1.1-3.2h3.5l1.1 3.2-2.9 2-2.8-2m2.8-8.4l1.5 4.4h-2.9l1.4-4.4m-7.3 5.2h4.7l-.9 2.7-3.8-2.7m2.8 8.4l1.4-4.4 2.4 1.7-3.8 2.7m9 0l-3.8-2.7 2.4-1.7 1.4 4.4"/><path d="m31.6 37.3v4.7h.8v-4.7l-.4-.3z"/><path d="m25.9 32.7l-3.9 1.1.2.8 4.6-1.3z"/><path d="m29.1 28.1l.2-.8-3.1-3.8-.6.5 3.3 4.1z"/><path d="m35.1 28.1l3.3-4.1-.6-.5-3.1 3.8.2.8z"/><path d="m38.1 32.7l-.9.6 4.6 1.3.2-.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea-1f1fa.svg b/riot/emojione/svg/1f1ea-1f1fa.svg new file mode 100644 index 0000000..40416b4 --- /dev/null +++ b/riot/emojione/svg/1f1ea-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#2a5f9e"/><g fill="#ffce31"><path d="m32 11.8l.7 2.2h2.3l-1.8 1.4.7 2.2-1.9-1.4-1.9 1.4.7-2.2-1.8-1.4h2.3z"/><path d="m32 45.8l.7 2.2h2.3l-1.8 1.3.7 2.3-1.9-1.4-1.9 1.4.7-2.3-1.8-1.3h2.3z"/><path d="m40.4 43l.7 2.2h2.4l-1.9 1.4.7 2.2-1.9-1.4-1.9 1.4.8-2.2-1.9-1.4h2.3z"/><path d="m46.2 37.2l.7 2.2h2.4l-1.9 1.4.7 2.2-1.9-1.4-1.9 1.4.8-2.2-1.9-1.4h2.3z"/><path d="m49 28.8l.7 2.2h2.3l-1.9 1.4.7 2.2-1.8-1.4-1.9 1.4.7-2.2-1.9-1.4h2.3z"/><path d="m46.2 20.3l.7 2.3h2.4l-1.9 1.3.7 2.2-1.9-1.3-1.9 1.3.8-2.2-1.9-1.3h2.3z"/><path d="m40.4 14.5l.7 2.3h2.4l-1.9 1.3.7 2.2-1.9-1.3-1.9 1.3.8-2.2-1.9-1.3h2.3z"/><path d="m23.6 43l-.7 2.2h-2.4l1.9 1.4-.7 2.2 1.9-1.4 1.9 1.4-.8-2.2 1.9-1.4h-2.3z"/><path d="m17.8 37.2l-.7 2.2h-2.4l1.9 1.4-.7 2.2 1.9-1.4 1.9 1.4-.8-2.2 1.9-1.4h-2.3z"/><path d="m15 28.8l-.7 2.2h-2.3l1.9 1.4-.7 2.2 1.8-1.4 1.9 1.4-.7-2.2 1.9-1.4h-2.3z"/><path d="m17.8 20.3l-.7 2.3h-2.4l1.9 1.3-.7 2.2 1.9-1.3 1.9 1.3-.8-2.2 1.9-1.3h-2.3z"/><path d="m23.6 14.5l-.7 2.3h-2.4l1.9 1.3-.7 2.2 1.9-1.3 1.9 1.3-.8-2.2 1.9-1.3h-2.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ea.svg b/riot/emojione/svg/1f1ea.svg new file mode 100644 index 0000000..6727438 --- /dev/null +++ b/riot/emojione/svg/1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M42.3,22.6H26.9v6.2H41v5H26.9v7.5H43v5.2H21v-29h21.3V22.6z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1eb-1f1ee.svg b/riot/emojione/svg/1f1eb-1f1ee.svg new file mode 100644 index 0000000..0894ffc --- /dev/null +++ b/riot/emojione/svg/1f1eb-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#f9f9f9"><path d="m61.1 25c-3.1-13.2-15-23-29.1-23-.3 0-.7 0-1 0v23h30.1"/><path d="m17 6c-7 4.1-12.3 10.9-14.2 19h14.2v-19"/><path d="M2.8,39C4.7,47.1,10,53.9,17,58V39H2.8z"/><path d="m31 62c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2v23"/></g><path d="m61.1 25h-30.1v-23c-5.1.2-9.9 1.6-14 4v19h-14.2c-.5 2.2-.8 4.6-.8 7s.3 4.8.8 7h14.2v19c4.1 2.4 8.9 3.8 14 4v-23h30.2c.5-2.2.8-4.6.8-7s-.3-4.8-.9-7" fill="#428bc1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1eb-1f1ef.svg b/riot/emojione/svg/1f1eb-1f1ef.svg new file mode 100644 index 0000000..0bbbeae --- /dev/null +++ b/riot/emojione/svg/1f1eb-1f1ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m12 12h20v20h-20z"/><path fill="#fff" d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#42ade2"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="M39.1,26.9V40c0,4.3,7.8,6.9,7.8,6.9s7.8-2.6,7.8-6.9V26.9H39.1z" fill="#fff"/><path fill="#ed4c5c" d="m54.7 32v-5.1h-15.6v5.1h6.7v5.4h-6.7v2.2h6.7v6.9l1.1.4 1.1-.4v-6.9h6.7v-2.2h-6.7v-5.4z"/><path d="m54.2 30.6c0-.1-.3-.1-.4-.3-.1-.5-.2-.7-.5-.7-.3-.1-.4 0-.4 0-.1.1-.5.1-.7.1-.2 0-.7-.5-.7-.6.3 0 .5-.1.8-.5.4-.4.6-.2.6-.2-.2.3.1.3.1.3.5-.2-.1-1.1-.2-1.1-.6.9-.6-.1-1.5-.2-.5 0-1.5.2-1.9.4-.4.1-1.5-.2-2.1-.1-1.5.2-1.5-.6-1.5-.6s-.9.8.9 1.6c0 0-.7-.7 2.7-.5.8-.1 2.1-.7 2.5-.3 0 0 0 .3.2.3 0 0 0 .3-1 .2-2.5-.1-5.9 1.1-6.4.2-.3-.5.7-.7.7-.7-.2-.3-.7-.1-.7-.1 0-.3-.1-.7-.1-.7-.5.1-.7.4-.7.4 0-.4-.5-.6-.5-.6.2.2.1 2-1.2 1.5 0 0-.7-.4-.9-.4-.2 0-1.5.6-1.2.9 0 0 1-.6 1.5-.1.6.6 1.5.6 1.5.6-.1.3-.5 1.1-.5 1.1 0 0-.5.2-.8.4 0 0-1.7-1.4-1.8 0 0 .3 1.4.8 2.4.4.6-.1.8-.4.8-.4.2 0 2.8.2 5.6-1.2.6-.8 1.4-.4 1.4-.4s-1.4 0-1.3.9c0 .2.6.4.5.6-.3.4-1-.4-1.3-.5-.2 0-.7.1-.2.6.5.6 1.3 1.3 2.7-.1.2-.2-.3-.4-.4-.5-.1-.1 0-.1 0-.1.4.2.5-.5.5-.5 0 .4.4.5.4.5.2-.2.1-.7.1-.7.5 1 .9.8.9.8-.3-.2-.1-.4-.1-.4.3 1 1.3.1 1.3.1-.1.1 0 .2.1.3.1.1.2.1.2.3s-.8.4-.8.4-.5 0-.4.4c0 .1 1.8.2 1.8-.8" fill="#ffe62e"/><g fill="#cecece"><path d="m45.1 44.6c0 .1 0 .1 0 0"/><path d="m44.2 43.6c0-.3-.4-1-.4-1 1.1.1 1.5-1 1.5-1-.3.1-.9-.2-.9-.2 1-.1.9-1.1.9-1.1-.2.7-1.4.6-1.4.6.4-.2.6-.9.6-.9-.1.3-.8.5-1.2.7-.4.2-.2 1-.2 1-.1-.1-.4-.5-.4-.8 0-.3-.2-.5-.5-.5s-.5.3-.5.3l-.6.3h.5c0 0 .3.1.3.4 0 .3-.3 1.3.2 1.9.3.4 1.5.6 1.5.6l.4 1.1.4-.4h.8c-.2-.1-1-1-1-1"/></g><path d="m53.5 40.2c0 0-.3-.1-.8-.3s-1 .5-1 .5c-.2.4.4.4.4.3 0-.1.2-.3.4-.4.2-.1.5.3.7.3.3.1.3-.4.3-.4" fill="#c94747"/><path d="m50 41.2c0 0 0-.9.9-1 .5 0 1.7.6 1.8 1.1.1.5-.3.9-.6 1.1" fill="#ffe62e"/><path d="m53.2 33.4h.9c-.2-.4-1-.4-1.7-.3.4-.1.9-.3 1-.3-.2-.1-1-.7-2.1.4-1-1-1.9-.5-2.1-.4.1 0 .6.2 1 .3-.6-.1-1.4-.1-1.7.3h.9c-.4.2-.6.2-.7.7 0 0 .5-.1 1-.3-.3.1-.5.3-.6.5.4 0 .8-.1 1.1-.2-.2.2-.3.5-.3.6.2 0 .4-.2.6-.4-.1.4-.1.9 0 1 .2-.1.3-.4.4-.6v.3h.4v-.4c.1.3.2.6.4.7.1-.2.1-.6 0-1 .2.2.4.4.6.4 0-.1-.1-.4-.3-.6.3.1.7.3 1.1.2-.1-.2-.3-.3-.6-.5.5.1 1 .3 1 .3.3-.5.1-.5-.3-.7" fill="#75a843"/><path fill="#c94747" d="m51.1 34.2h.6v2.8h-.6z"/><g fill="#75a843"><path d="m50 41.2c-.6 0-.1 1.4-.4 1.2-.4-.2-.6 1.1 0 1.5 1 .7 1.8-.2 1.7-.4-.2-.4.9-.6.9-.9 0-.8-1.6-1.4-2.2-1.4"/><path d="m43.9 34.3c-.1-.1-.1-.1 0 0 0-.3-.1-.5-.3-.5-.2-.3-.5-.1-.7.2-.1.1-.2.2-.3.2 0-.9.1-1.7 1.3-.6 0 0 0-.4-.6-.9-.7-.5-.9.1-1 .9-.1-.1-.3-.4-.7-.6-.8-.3-.9.4-.8 1.1-.3-.4-.7-.6-1.1 0-.4.6-.2.9-.2.9.7-1.4 1.1-.5 1.5.1-.5-.4-1.1-.7-1.2 0-.1.5.1.6.1.6.1-1.6 1.2.1 1.5-.1 0 0 0 0 0-.1.1-.2.1-.6.2-1 .3.2.7.9.9.8 0 0 0 0 0-.1.1-.1.2-.4.3-.7.4-.1.4 1 .6 1 .4-.2 1.2-1.7 1.2-.2 0 0 .2-.2.1-.7-.1-.7-.6-.3-1 .2.3-.8.7-1.7 1.2-.4 0 0 .2-.3-.2-.9-.1-.3-.5.1-.8.8m-2.5-.1c-.1 0-.2 0-.3.1 0-.1 0-.2 0-.3.3-.3.5-.3.7-.1-.2-.1-.3.1-.4.3m-.2.4c.1 0 .1 0 0 0 .1 0 0 .1 0 .2.1-.1.1-.1 0-.2m1.5-.3c0 .1-.1.2-.1.3 0-.1 0-.1 0-.2.1-.1.1-.1.1-.1m-.4-.6c-.1 0-.1 0 0 0m-.6.6c.1-.1.2-.1.3-.1.1.2.1.4.1.5-.1-.1-.2-.2-.4-.4m1.3.1c.1-.1.2-.3.2-.3.4 0 .3.6.2 1-.1-.3-.2-.6-.4-.7"/></g><g fill="#c94747"><path d="m49.6 44.1c0 0 .1-.1.1-.1 0-.1-.1-.1-.1-.1 0 0-.1.2-.1.1-.6-.4-1 1.3-1 1.3s1.8-.7 1.1-1.2"/><path d="m41.1 35.4l.2 1.4.3-.1-.2-1.4z"/><path transform="matrix(.0769-.997.997.0769 3.3551 75.3688)" d="m41.6 35.7h1.6v.3h-1.6z"/><path d="m42.8 36.6l.3.1.6-1.2-.3-.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1eb-1f1f0.svg b/riot/emojione/svg/1f1eb-1f1f0.svg new file mode 100644 index 0000000..29f0c85 --- /dev/null +++ b/riot/emojione/svg/1f1eb-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m11.1 11.3h21.3v21.4h-21.3z"/><path fill="#fff" d="m18.6 8.2v5.8h-7.3l14.4 18h6v-7.5z"/><path d="m31.7 2v30h-30c0 16.6 13.4 30 30 30s30-13.4 30-30-13.4-30-30-30" fill="#2a5f9e"/><path d="m10.7 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m31.7 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.6,5v6h-7.9v3h21V2C27,2,22.6,3.1,18.6,5z" fill="#fff"/><path d="M31.7,5H18.6C12.6,8,7.7,12.9,4.7,18.9V32h6V11h21V5z" fill="#ed4c5c"/><g fill="#89664c"><path d="m38.8 35.6c0-.1-.9-.3-1.4-.2-.4.1-1.2 2.2-1.3 2.3 0 0 .8 1 .8 1 0 0 .5-.8 1.1-.9.3 0 .5.2.8.4 0 0-.8 2.9-1.8 3.1-.2 0-.3 0-.5 0-.1-.1-.1-1.6-.1-1.6s-.2-.9-1-.8c-.8.1-.8.8-.8 1 0 .2 1.5 3.3 1.8 3.4.5.2 2.1-.5 3-1.6 1-1.1 1.2-4.1 1.2-4.2.1.1-1.8-1.9-1.8-1.9"/><path d="m55.1 40c0-.2 0-.9-.8-1-.8-.1-1 .8-1 .8s0 1.5-.1 1.6c-.2 0-.3 0-.5 0-1-.2-1.8-3.1-1.8-3.1.2-.3.5-.5.8-.4.5.1 1.1.8 1.1.9 0 0 .8-.9.8-1 0 0-.8-2.2-1.3-2.3-.3-.2-1.3 0-1.3.1 0 0-1.9 2-1.9 2 0 .1.2 3.1 1.2 4.2s2.5 1.7 3 1.6c.4-.1 1.8-3.2 1.8-3.4"/></g><path d="m36.3 37.2c-.4.6-.7 1-.9 1.4-.2.3-.1.8.3 1.4.5.7 4.2 3.5 9.1 3.5 4.9 0 8.6-2.8 9.1-3.5.4-.7.5-1.1.3-1.4s-.4-.8-.9-1.4c0 .9-3.1 4-8.6 4-5.3 0-8.4-3.2-8.4-4" fill="#dbb471"/><path d="m37.2 20.5v13c0 3.9 3.5 7 7.7 7s7.7-3.1 7.7-7v-13h-15.4" fill="#42ade2"/><g fill="#fff"><path d="m52.6 30c0 0-2.9-2-3.9-2s-2.7 2-3.9 2-2.8-2-3.8-2c-1 0-3.9 2-3.9 2v2c0 0 2.9-2 3.9-2s2.7 2 3.9 2 2.9-2 3.9-2c1 0 3.9 2 3.9 2v-2z"/><path d="m52.5 34.5c0 0-2.8-2-3.8-2-1 0-2.7 2-3.9 2s-2.9-2-3.9-2c-.9 0-3.8 2-3.8 2 .1.7.3 1.4.7 2 0 0 2.3-2 3.1-2 1 0 2.7 2 3.9 2 1.1 0 2.9-2 3.9-2 .8 0 3.1 2 3.1 2 .4-.6.6-1.3.7-2"/><path d="m50.1 38.7c0 0-1-2-1.3-2-1 0-2.7 2-3.9 2-1.1 0-2.9-2-3.9-2-.3 0-1.3 2-1.3 2 1.4 1.1 3.2 1.8 5.2 1.8s3.8-.7 5.2-1.8"/><path d="m42.7 23.4c0 1.1 0 2-2.2 2-1.2 0-2.2-2-2.2-2s1-2 2.2-2c2.2 0 2.2.9 2.2 2"/><path d="m49.3 26.4c0 .6-.5 1-1.1 1h-6.6c-.6 0-1.1-.4-1.1-1v-2c0-.6.5-1 1.1-1h6.6c.6 0 1.1.4 1.1 1v2"/><path d="m41.6 28c0 .2.5.4 1.1.4.6 0 1.1-.2 1.1-.4v-1.2c0-.2-.5-.4-1.1-.4-.6 0-1.1.2-1.1.4v1.2"/><path d="m46 28c0 .2.5.4 1.1.4.6 0 1.1-.2 1.1-.4v-1.2c0-.2-.5-.4-1.1-.4-.6 0-1.1.2-1.1.4v1.2"/></g><path d="m50.9 35.9v-.4l.2-.4c0 0-3.2.4-3.2.4 0 0 0 .5 0 .7-.1.1-.2.2-.4.3 0-1.2.1-6.1.1-6.2h-.3l-.1 6.4c-.6.4-1.5.8-2.4.8-.2 0-.3 0-.5 0 0-1.2.1-7.4.1-7.4 0 0-.3 0-.3 0s-.1 6.1-.1 7.4c-1.2-.1-1.7-.4-2-.7-.4-.3-.8-.8-.8-.8 0-1 0-5.5 0-5.5h-.2v5.5l-2-.7.1.7.8.2c0 0 .4 3.1 4.6 3 3.6-.1 5-2.3 5.3-3h1.1c0 0 0-.3 0-.3" fill="#89664c"/><g fill="#ed4c5c"><path d="m41 30.6c-.1.1-2 .4-1.7.4.3 0 1.7.3 1.7.2 0-.1 0-.6 0-.6"/><path d="m44.2 30.1c-.1 0-1.1.3-1.1.3 0 0 1.2.3 1.2.2s-.1-.4-.1-.5"/><path d="m47.4 30.4c-.1 0-1.3.3-1.1.3.2 0 1.1.3 1.1.2s-.1-.5 0-.5"/></g><g fill="#ffe62e"><path d="m46.3 32.2c0 0-.4.3-.3.8.1.5.3.9.3.9 0 0 .4-.6.9-.6.4 0 1.3.3 1.3.3s-.1-.7-.1-1.1c0-.3.7-.9.7-.9l-2.8.6"/><path d="m39.9 32.4c0 0-.3.1-.2.6.1.5.4.9.4.9 0 0 .3-.5.8-.6.4-.1 1.2.3 1.2.3s-.1-.5 0-.9c.1-.5.5-.8.5-.8s-2.6.5-2.7.5"/><path d="m43.1 31.9c0 .1-.4.5-.3 1 .1.5.3.9.4.9 0 0 .6-.5 1.1-.6.5-.1 1.2.3 1.1.3 0 0-.2-.5-.2-.8s.6-1.4.6-1.4l-2.7.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1eb-1f1f2.svg b/riot/emojione/svg/1f1eb-1f1f2.svg new file mode 100644 index 0000000..ca329d0 --- /dev/null +++ b/riot/emojione/svg/1f1eb-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#428bc1"/><g fill="#fff"><path d="m32.8 21.6l2.4 1.8-.9-2.9 2.4-1.9h-3l-.9-2.9-.9 2.9h-3l2.4 1.9-.9 2.9z"/><path d="m32.8 42.4l2.4-1.8-.9 2.9 2.4 1.9h-3l-.9 2.9-.9-2.9h-3l2.4-1.9-.9-2.9z"/><path d="m21.9 29.9l2.4-1.8-.9 3 2.4 1.8h-3l-.9 3-.9-3h-3l2.4-1.8-.9-3z"/><path d="m42.1 29.9l-2.4-1.8.9 3-2.4 1.8h3l.9 3 .9-3h3l-2.4-1.8.9-3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1eb-1f1f4.svg b/riot/emojione/svg/1f1eb-1f1f4.svg new file mode 100644 index 0000000..d5b522e --- /dev/null +++ b/riot/emojione/svg/1f1eb-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#428bc1"><path d="m61.7 28c-.1-1-.3-2-.6-3h-58.3c-.2 1-.4 2-.6 3h59.5"/><path d="m2.3 36c.1 1 .3 2 .6 3h58.3c.2-1 .4-2 .6-3h-59.5"/><path d="m20 4.5c-1 .4-2 1-3 1.5v52c1 .6 2 1.1 3 1.5v-55"/><path d="m28 2.3v59.5c1 .1 2 .2 3 .3v-60.1c-1 0-2 .1-3 .3"/></g><g fill="#ed4c5c"><path d="m2 32c0 1.4.1 2.7.3 4h59.5c.2-1.3.3-2.6.3-4s-.1-2.7-.3-4h-59.5c-.2 1.3-.3 2.6-.3 4"/><path d="m20 59.5c2.5 1.1 5.2 1.9 8 2.2v-59.4c-2.8.4-5.5 1.1-8 2.2v55"/></g><g fill="#f9f9f9"><path d="M17,25V6C10,10.1,4.8,16.9,2.8,25H17z"/><path d="M17,39v19C10,53.9,4.8,47.1,2.8,39H17z"/><path d="M32,2c-0.3,0-0.7,0-1,0v23h30.2C58,11.8,46.2,2,32,2z"/><path d="m31 39v23c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1eb-1f1f7.svg b/riot/emojione/svg/1f1eb-1f1f7.svg new file mode 100644 index 0000000..7f9d0ab --- /dev/null +++ b/riot/emojione/svg/1f1eb-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M1.9,32c0,13.1,8.4,24.2,20,28.3V3.7C10.3,7.8,1.9,18.9,1.9,32z" fill="#428bc1"/><path d="m61.9 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="m21.9 60.3c3.1 1.1 6.5 1.7 10 1.7s6.9-.6 10-1.7v-56.6c-3.1-1.1-6.4-1.7-10-1.7s-6.9.6-10 1.7v56.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1eb.svg b/riot/emojione/svg/1f1eb.svg new file mode 100644 index 0000000..2d54ed2 --- /dev/null +++ b/riot/emojione/svg/1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m21.7 17.5h20.7v5.1h-14.7v6.7h12.9v5h-12.9v12.2h-6v-29" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1e6.svg b/riot/emojione/svg/1f1ec-1f1e6.svg new file mode 100644 index 0000000..f30f1e0 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#428bc1"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#699635"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10c0-3.5-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32c0,3.5,0.6,6.9,1.7,10H60.3z" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1e7.svg b/riot/emojione/svg/1f1ec-1f1e7.svg new file mode 100644 index 0000000..f745d65 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1e7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="m22 60.3v-13.8l-10.3 7.6c2.9 2.7 6.4 4.8 10.3 6.2"/><path d="m42 60.3c3.9-1.4 7.4-3.5 10.3-6.2l-10.3-7.7v13.9"/><path d="m3.7 42c.3 1 .7 1.9 1.2 2.9l3.9-2.9h-5.1"/><path d="m55.2 42l3.9 2.9c.4-.9.8-1.9 1.2-2.9h-5.1"/></g><g fill="#fff"><path d="m23.5 38h-9.2-11.7c.3 1.4.7 2.7 1.1 4h5.1l-3.9 2.9c.8 1.7 1.7 3.2 2.8 4.7l10.3-7.6h4v2l-11.7 8.6c.5.5.9.9 1.4 1.4l10.3-7.5v13.8c1.3.5 2.6.8 4 1.1v-17.9-2.4-3.1h-2.5"/><path d="m61.4 38h-11.6-3-6.8-2v5.5 17.9c1.4-.3 2.7-.7 4-1.1v-13.8l10.3 7.5c1.4-1.3 2.6-2.7 3.8-4.2l-10.7-7.8h6.8l6.1 4.5c.3-.5.6-1.1.8-1.6l-3.9-2.9h5.1c.4-1.3.8-2.6 1.1-4"/></g><g fill="#ed4c5c"><path d="m7.7 49.6c.8 1.1 1.6 2.1 2.5 3.1l11.8-8.6v-2h-4l-10.3 7.5"/><path d="m45.5 42l10.7 7.8c.4-.5.7-1 1.1-1.5.1-.1.1-.2.2-.2.3-.5.7-1.1 1-1.6l-6.3-4.5h-6.7"/></g><g fill="#2a5f9e"><path d="m42 3.7v13.8l10.3-7.6c-2.9-2.7-6.4-4.8-10.3-6.2"/><path d="m22 3.7c-3.9 1.4-7.4 3.5-10.3 6.2l10.3 7.7v-13.9"/><path d="m60.3 22c-.3-1-.7-1.9-1.2-2.9l-3.9 2.9h5.1"/><path d="m8.8 22l-3.9-2.9c-.4 1-.8 1.9-1.2 2.9h5.1"/></g><g fill="#fff"><path d="m40.5 26h9.2 11.6c-.3-1.4-.7-2.7-1.1-4h-5.1l3.9-2.9c-.8-1.7-1.7-3.2-2.8-4.7l-10.2 7.6h-4v-2l11.7-8.6c-.5-.5-.9-.9-1.4-1.4l-10.3 7.5v-13.8c-1.3-.5-2.6-.8-4-1.1v17.9 2.4 3.1h2.5"/><path d="m2.6 26h11.6 3 6.8 2v-5.5-17.9c-1.4.3-2.7.7-4 1.1v13.8l-10.3-7.5c-1.4 1.3-2.6 2.7-3.8 4.2l10.7 7.8h-6.8l-6.1-4.5c-.3.5-.6 1.1-.8 1.6l3.9 2.9h-5.1c-.4 1.3-.8 2.6-1.1 4"/></g><g fill="#ed4c5c"><path d="m56.3 14.4c-.8-1.1-1.6-2.1-2.5-3.1l-11.8 8.6v2h4l10.3-7.5"/><path d="m18.5 22l-10.6-7.8c-.4.5-.7 1-1.1 1.5-.1.1-.1.2-.2.2-.3.5-.7 1.1-1 1.6l6.1 4.5h6.8"/><path d="m61.4 26h-11.6-9.2-2.6v-3.1-2.4-17.9c-1.9-.4-3.9-.6-6-.6s-4.1.2-6 .6v17.9 5.5h-2-6.8-3-11.6c-.4 1.9-.6 3.9-.6 6s.2 4.1.6 6h11.6 9.2 2.6v3.1 2.4 17.9c1.9.4 3.9.6 6 .6s4.1-.2 6-.6v-17.9-5.5h2 6.8 3 11.6c.4-1.9.6-3.9.6-6s-.2-4.1-.6-6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1e9.svg b/riot/emojione/svg/1f1ec-1f1e9.svg new file mode 100644 index 0000000..c33b39d --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="M11.2,53.6C16.6,58.8,23.9,62,32,62c8.1,0,15.4-3.2,20.8-8.4H11.2z"/><path d="M52.8,10.4C47.4,5.2,40.1,2,32,2s-15.4,3.2-20.8,8.4H52.8z"/></g><g fill="#007168"><path d="M5.4,45.8L32,32L5.4,18.2C3.2,22.3,2,27,2,32C2,37,3.2,41.7,5.4,45.8z"/><path d="M62,32c0-5-1.2-9.7-3.4-13.8L32,32l26.6,13.8C60.8,41.7,62,37,62,32z"/></g><g fill="#ffce31"><path d="m58.6 45.8l-26.6-13.8-26.6 13.8c1.5 2.9 3.5 5.5 5.8 7.8h41.6c2.3-2.3 4.3-4.9 5.8-7.8"/><path d="M5.4,18.2L32,32l26.6-13.8c-1.5-2.9-3.5-5.5-5.8-7.8H11.2C8.9,12.6,6.9,15.3,5.4,18.2z"/></g><circle cx="32" cy="32" r="9" fill="#ed4c5c"/><path d="m8.3 34.4c.8.8 1.6 1.5 2.4 1.8 0-.9-.1-1.9-.4-2.9-.7-.6-1.5-1.2-2.2-1.5-.1.8 0 1.7.2 2.6" fill="#ce1126"/><g fill="#ffce31"><path d="m5 26.3c1.3 2.7-3.4 9.2 4.4 10.7-.5-.7-.9-1.7-1.2-2.7-.2-.9-.3-1.8-.2-2.6.8.3 1.5.8 2.2 1.5.8.7 1.5 1.6 1.9 2.4 2.1-7.4-5.2-6.9-7.1-9.3"/><path d="m22 4.9l.5 1.8h2l-1.6 1.1.6 1.8-1.5-1.1-1.6 1.1.6-1.8-1.5-1.1h1.9z"/><path d="m23 54.1l.5 1.8h2l-1.6 1.1.6 1.9-1.5-1.2-1.6 1.2.6-1.9-1.5-1.1h1.9z"/><path d="m32 23l1.9 6.3h6.3l-5.1 3.8 2 6.3-5.1-3.9-5.1 3.9 2-6.3-5.1-3.8h6.3z"/><path d="m32 4.9l.5 1.8h2l-1.6 1.1.6 1.8-1.5-1.1-1.6 1.1.6-1.8-1.5-1.1h1.9z"/><path d="m42 4.9l.5 1.8h2l-1.6 1.1.6 1.8-1.5-1.1-1.6 1.1.6-1.8-1.5-1.1h1.9z"/><path d="m32 54.1l.5 1.8h2l-1.6 1.1.6 1.9-1.5-1.2-1.6 1.2.6-1.9-1.5-1.1h1.9z"/><path d="m42 54.1l.5 1.8h2l-1.6 1.1.6 1.9-1.5-1.2-1.6 1.2.6-1.9-1.5-1.1h1.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1ea.svg b/riot/emojione/svg/1f1ec-1f1ea.svg new file mode 100644 index 0000000..044d07d --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1ea.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M38,2.6H26C14.3,5,5,14.2,2.6,26v12C5,49.8,14.3,59,26,61.4h12C49.8,59,59,49.7,61.4,38V26 + C59,14.2,49.7,5,38,2.6z" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="m38 26v-23.4c-1.9-.4-3.9-.6-6-.6s-4.1.2-6 .6v23.4h-23.4c-.4 1.9-.6 3.9-.6 6s.2 4.1.6 6h23.4v23.4c1.9.4 3.9.6 6 .6s4.1-.2 6-.6v-23.4h23.4c.4-1.9.6-3.9.6-6s-.2-4.1-.6-6h-23.4"/><path d="m18 20h-4l1-6-1-6h4l-1 6z"/><path d="m10 16v-4l6 1 6-1v4l-6-1z"/><path d="m50 20h-4l1-6-1-6h4l-1 6z"/><path d="m42 16v-4l6 1 6-1v4l-6-1z"/><path d="m18 56h-4c0 0 1-4.5 1-6s-1-6-1-6h4c0 0-1 4.5-1 6s1 6 1 6"/><path d="m10 52v-4l6 1 6-1v4l-6-1z"/><path d="m50 56h-4l1-6-1-6h4l-1 6z"/><path d="m42 52v-4l6 1 6-1v4l-6-1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1eb.svg b/riot/emojione/svg/1f1ec-1f1eb.svg new file mode 100644 index 0000000..328baf2 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,16.6,13.4,30,30,30c11.7,0,21.9-6.8,26.8-16.6L5.2,18.6C3.1,22.6,2,27.2,2,32z" fill="#ffce31"/><path d="M32,2C20.3,2,10.1,8.8,5.2,18.6l53.7,26.8c2-4,3.2-8.6,3.2-13.4C62,15.4,48.6,2,32,2z" fill="#699635"/><path fill="#da121a" d="m32 17.9l3.3 10.1h10.6l-8.6 6.3 3.3 10.1-8.6-6.2-8.6 6.2 3.3-10.1-8.6-6.3h10.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1ec.svg b/riot/emojione/svg/1f1ec-1f1ec.svg new file mode 100644 index 0000000..3e4098e --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1ec.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M38,2.6H26C14.3,5,5,14.2,2.6,26v12C5,49.8,14.3,59,26,61.4h12C49.8,59,59,49.7,61.4,38V26 + C59,14.2,49.7,5,38,2.6z" fill="#f5f5f5"/><path d="m38 26v-23.4c-1.9-.4-3.9-.6-6-.6s-4.1.2-6 .6v23.4h-23.4c-.4 1.9-.6 3.9-.6 6 0 2.1.2 4.1.6 6h23.4v23.4c1.9.4 3.9.6 6 .6s4.1-.2 6-.6v-23.4h23.4c.4-1.9.6-3.9.6-6 0-2.1-.2-4.1-.6-6h-23.4" fill="#ed4c5c"/><path fill="#ffce31" d="m52 29.5h-17.5v-17.5l2.5-2.5h-10l2.5 2.5v17.5h-17.5l-2.5-2.5v10l2.5-2.5h17.5v17.5l-2.5 2.5h10l-2.5-2.5v-17.5h17.5l2.5 2.5v-10z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1ed.svg b/riot/emojione/svg/1f1ec-1f1ed.svg new file mode 100644 index 0000000..f3558ad --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.3,3.7,22h56.6C56.2,10.3,45.1,2,32,2z" fill="#c94747"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#699635"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#ffce31"/><path fill="#3e4347" d="m32 37.3l6.2 4.7-2.4-7.6 6.2-4.9h-7.6l-2.4-7.5-2.3 7.5h-7.7l6.2 4.9-2.4 7.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1ee.svg b/riot/emojione/svg/1f1ec-1f1ee.svg new file mode 100644 index 0000000..c980311 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.3,42H3.7C7.8,53.7,18.9,62,32,62S56.2,53.7,60.3,42z" fill="#ed4c5c"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10C62,15.4,48.6,2,32,2S2,15.4,2,32c0,3.5,0.6,6.9,1.7,10H60.3z" fill="#f9f9f9"/><path d="m48.5 24.5v-1.1h1.2v-2.5h-1.2v1.4h-1.9v-1.4h-1.4v-8.4h.5v-1.1h.9v-2.2h-1.6v1.1h-1.6v-1.1h-2.4v1.1h-1.6v-1.1h-1.3v2.2h.5v1.1h.5v8.4h-.1v1.4h-2.2v-1.4h-.7v-10.6h.8v-1.5h.9v-1.8h-1.5v1h-1.6v-1h-1.9v1h-1.6v-1h-1.9v1h-1.6v-1h-1.5v1.8h.9v1.5h.8v10.7h-.7v1.4h-2.2v-1.4h-.2v-8.4h.5v-1.1h.5v-2.3h-1.3v1.1h-1.6v-1.1h-2.4v1.1h-1.5v-1.1h-1.6v2.2h.9v1.1h.5v8.4h-1.4v1.4h-1.9v-1.4h-1.1v2.5h1.1v1.1h.9v13.4l-2.1 1.4v1.4h8.8v.7h7.7 2.4 7.7v-.7h8.8v-1.4l-2.1-1.4v-13.4h.9" fill="#ed4c5c"/><g fill="#3e4347"><path d="m24.3 37.9v-3.5c0-3.8-4.9-3.8-4.9 0v3.5h4.9"/><path d="m23.4 18.6c0-2.1-3.2-2.1-3.2 0v3.7h3.2v-3.7"/><path d="m35.5 38.6v-4.9c0-4.8-6.9-4.8-6.9 0v4.9h6.9"/><path d="m44.6 37.9v-3.5c0-3.8-4.9-3.8-4.9 0v3.5h4.9"/><path d="m40.6 22.3h3.2v-3.7c0-2.1-3.2-2.1-3.2 0v3.7"/><path d="m31.7 11.5h.7v3.6h-.7z"/><path d="m29.7 12.2h.7v2.7h-.7z"/><path d="m30.1 17.8v4.5h3.8v-4.5c0-2.3-3.8-2.3-3.8 0"/><path d="m33.6 12.2h.7v2.7h-.7z"/></g><path d="m28.5 40.7h-.7v1.1h.7l2.8 1.6v1 6.9h-4.1v1.9h1.2v-1h1.6v1h1.3v.7h-1.3v1h-1.6v-1h-1.2v1.9h4.1v.5.7h1.2v-.7-12-1l2.8-1.6h.7v-1.1h-.7l-3.4-2-3.4 2.1m5.9.5l-2.5 1.5-2.5-1.5 2.5-1.5 2.5 1.5" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f1.svg b/riot/emojione/svg/1f1ec-1f1f1.svg new file mode 100644 index 0000000..484b80c --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#c94747"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#f9f9f9"/><path d="m24 17c8.3 0 15 6.7 15 15h-30c0-8.3 6.7-15 15-15" fill="#c94747"/><path d="m24 47c-8.3 0-15-6.7-15-15h30c0 8.3-6.7 15-15 15" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f2.svg b/riot/emojione/svg/1f1ec-1f1f2.svg new file mode 100644 index 0000000..5fa53d5 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C19.3,2,8.5,9.9,4.1,21h55.8C55.5,9.9,44.7,2,32,2z" fill="#f42f4c"/><path d="M32,62c12.7,0,23.5-7.9,27.9-19H4.1C8.5,54.1,19.3,62,32,62z" fill="#699635"/><path d="m62 32c0-3.1-.5-6.2-1.4-9h-57.2c-.9 2.8-1.4 5.9-1.4 9s.5 6.2 1.4 9h57.2c.9-2.8 1.4-5.9 1.4-9" fill="#2a5f9e"/><g fill="#fff"><path d="m60.3 22c-.1-.3-.3-.7-.4-1h-55.8c-.1.3-.3.7-.4 1-.1.3-.2.7-.3 1h57.2c-.1-.3-.2-.7-.3-1"/><path d="m3.7 42c.1.3.3.7.4 1h55.8c.1-.3.3-.7.4-1 .1-.3.2-.7.3-1h-57.2c.1.3.2.7.3 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f3.svg b/riot/emojione/svg/1f1ec-1f1f3.svg new file mode 100644 index 0000000..ea98260 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,13.1-8.3,24.2-20,28.3V3.7C53.7,7.8,62,18.9,62,32z" fill="#75a843"/><path d="M2,32C2,18.9,10.4,7.8,22,3.7v56.6C10.4,56.2,2,45.1,2,32z" fill="#ed4c5c"/><path d="m42 60.3c-3.1 1.1-6.5 1.7-10 1.7s-6.9-.6-10-1.7v-56.6c3.1-1.1 6.5-1.7 10-1.7s6.9.6 10 1.7v56.6" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f5.svg b/riot/emojione/svg/1f1ec-1f1f5.svg new file mode 100644 index 0000000..f044d48 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,16.6,13.4,30,30,30s30-13.4,30-30c0-3.5-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32z" fill="#3e4347"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#2a5f9e"/><g fill="#ffce31"><path d="m30.9 5.2c-1 1.6-1.1 2.9-.4 5 .3 1 .7 2.5.8 3.4.2 1.2.2 1.3.2 1.5.2 0 .8 0 1.1 0 0-.4.1-.9.2-1.5.1-.7.4-2.3.7-3.4.6-2.2.5-3.5-.5-5-.4-.6-.9-1-1.1-1-.2 0-.7.4-1 1m4.7 4.4c-1.4.6-2.2 2.2-2.6 4.4-.1.4-.1.6-.1 1 .3 0 .4 0 .7 0 .1-.3.1-.5.2-.9.5-1.7 2.2-2.4 2.1-.8 0 .4-.2.7-.4.9.3-.1.8-.3 1.3-.6 2.4-1.4 1.4-5.1-1.2-4m-5.5 6.1c1.1 0 3 0 3.9 0 0-.2 0-.1 0-.3-.7 0-3.2 0-3.9 0 0 .1 0 .2 0 .3m.3 1.3c-.4.4-1 .7-1 .7s.5.1 1.1 0 .8-.1 1.1-.2c-.1.6-.1 1.2-.1 1.2.1.8.2 1 .3 1.4.2.3.4.3.5 0 .2-.4.3-.8.3-1.4 0-.4 0-.6-.1-1.2.4.2.6.2 1.1.2.5 0 1 0 1 0s-.7-.4-1-.8c-.3-.4-.2-.4-.5-.9-.3 0-1.7 0-2.1 0-.3.5-.3.6-.6 1m-2-7.4c1.4.6 2.2 2.2 2.6 4.4.1.4.1.6.1 1-.3 0-.4 0-.7 0-.1-.3-.1-.5-.2-.9-.5-1.7-2.2-2.4-2.1-.8 0 .4.2.7.4.9-.3-.1-.8-.3-1.3-.6-2.4-1.4-1.4-5.1 1.2-4"/><path d="m13.6 13.6c.2 1.2.2 1.3.2 1.5.2 0 .8 0 1.1 0 0-.4.1-.9.2-1.5.1-.7.4-2.3.7-3.4.4-1.5.5-2.5.3-3.5-1.2.8-2.4 1.6-3.5 2.6.1.3.1.6.3 1 .2.9.5 2.5.7 3.3"/><path d="m16.2 15.7c0-.2 0-.1 0-.3-.7 0-3.2 0-3.9 0 0 .1 0 .2 0 .3 1.1 0 3 0 3.9 0"/><path d="m9.6 13.7c.4.3 1 .5 1.3.6-.2-.2-.4-.5-.4-.9-.1-1.6 1.5-.9 2.1.8.1.4.2.6.2.9.3 0 .4 0 .7 0 0-.5-.1-.6-.1-1-.4-1.8-.9-3.1-1.8-3.9-1 .9-1.9 1.9-2.7 2.9.1.2.3.4.7.6"/><path d="m15.9 17c-.3-.4-.2-.4-.5-.9-.3 0-1.7 0-2.1 0-.2.5-.3.6-.6 1-.4.4-1 .7-1 .7s.5.1 1.1 0 .8-.1 1.1-.2c-.1.6-.1 1.2-.1 1.2.1.8.2 1 .3 1.4.2.3.4.3.5 0 .2-.4.3-.8.3-1.4 0-.4 0-.6-.1-1.2.4.2.6.2 1.1.2.5 0 1 0 1 0s-.7-.4-1-.8"/><path d="m17.9 9.6c-1.4.6-2.2 2.2-2.6 4.4-.1.4-.1.6-.1 1 .3 0 .4 0 .7 0 .1-.3.1-.5.2-.9.5-1.7 2.2-2.4 2.1-.8 0 .4-.2.7-.4.9.3-.1.8-.3 1.3-.6 2.4-1.4 1.4-5.1-1.2-4"/><path d="m48.2 15.1c.3 0 .4 0 .7 0 0-.5-.1-.6-.1-1-.4-2.2-1.3-3.8-2.6-4.4-2.6-1.1-3.6 2.6-1.1 4.1.4.3 1 .5 1.3.6-.2-.2-.4-.5-.4-.9-.1-1.6 1.5-.9 2.1.8 0 .3 0 .5.1.8"/><path d="m48.2 10.2c.3 1 .7 2.5.8 3.4.2 1.2.2 1.3.2 1.5.2 0 .8 0 1 0 0-.4.1-.9.2-1.5.1-.7.4-2.3.7-3.4.1-.4.2-.7.3-1.1-1.1-.9-2.2-1.8-3.4-2.5-.3 1-.3 2.1.2 3.6"/><path d="m51.3 17c-.3-.4-.2-.4-.5-.9-.3 0-1.7 0-2.1 0-.2.5-.3.6-.6 1-.4.4-1 .7-1 .7s.5.1 1.1 0 .8-.1 1.1-.2c-.1.6-.1 1.2-.1 1.2.1.8.2 1 .3 1.4.2.3.4.3.5 0 .2-.4.3-.8.3-1.4 0-.4 0-.6-.1-1.2.4.2.6.2 1.1.2.5 0 1 0 1 0s-.7-.4-1-.8"/><path d="m47.8 15.7c1.1 0 3 0 3.9 0 0-.2 0-.1 0-.3-.7 0-3.2 0-3.9 0 0 .1 0 .2 0 .3"/><path d="m50.7 14.1c-.1.4-.1.6-.1 1 .3 0 .4 0 .7 0 .1-.3.1-.5.2-.9.5-1.7 2.2-2.4 2.1-.8 0 .4-.2.7-.4.9.3-.1.8-.3 1.3-.6.3-.2.6-.4.8-.7-.8-1-1.7-2-2.7-2.9-.9.9-1.5 2.2-1.9 4"/></g><g fill="#83bf4f"><path d="m53.8 50.8l-.2.7-15.8-6.9.2-.6z"/><path d="m54.3 49.1l-.2.7-16.1-5.9.2-.7z"/><path d="m54.7 47.7l-.1.6-16.4-5.2.2-.6z"/><path transform="matrix(.2789-.9603.9603.2789-8.6855 76.838)" d="m46.5 35.6h.7v17.1h-.7z"/><path d="m55.6 44.6l-.2.7-16.6-4.1.2-.7z"/><path d="m14.3 28.1l.4-.5 12.5 12-.4.5z"/><path d="m12 28.7l.4-.5 13 11.2-.4.5z"/><path d="m9.6 28.2l.4-.6 13.5 10.6-.4.6z"/><path transform="matrix(.5981-.8014.8014.5981-21.1883 26.9285)" d="m15.9 26h.7v17.1h-.7z"/><path d="m6.4 29.5l.4-.5 14.1 9.7-.4.5z"/><path d="m6.3 32.3v-.6l16.9 3.8-.1.6z"/><path d="m4.9 33.6v-.7l17 2.9-.1.6z"/><path d="m7 35.4l.1-.7 17 2-.1.7z"/><path transform="matrix(.0943-.9955.9955.0943-24.5925 46.8455)" d="m13.1 28.4h.7v17.1h-.7z"/><path d="m7.8 38.7l.1-.7 17.1.9-.1.7z"/></g><path d="m33.3 50.6l.7.5c1 .7 1.5 1.6 1.4 2.6v.8l.3-.8c.3-.8.3-2.1-.1-3l-.2-.5.8.3c1.1.5 1.8 1.3 1.9 2.2l.1.8.1-.8c.2-.9-.1-2.1-.7-2.9l-.3-.5.8.2c1.2.2 2 .9 2.4 1.8l.3.7v-.8c0-.9-.6-2-1.3-2.7l-.4-.4h.8c1.2 0 2.2.4 2.7 1.2l.4.7-.2-.8c-.2-.9-1-1.8-1.8-2.4l-.5-.3.8-.2c1.1-.3 2.2 0 2.9.6l.6.6-.4-.8c-.4-.8-1.3-1.6-2.3-1.9l-.6-.2.8-.3c1.1-.5 2.1-.5 3 0l.7.4-.5-.7c-.5-.7-1.6-1.3-2.6-1.4h-.9l.7-.5c.9-.7 2-.9 2.9-.6l.7.3-.6-.5c-.7-.6-1.9-.9-2.9-.8l-.6.1.5-.6c.8-.9 1.8-1.3 2.7-1.2l.8.1-.7-.4c-.8-.4-2-.5-3-.2l-.6.2.4-.7c.6-1 1.4-1.7 2.4-1.7h.8l-.8-.2c-.9-.3-2.1-.1-3 .4l-.5.3.2-.8c.3-1.1 1.1-1.9 2-2.2l.8-.2-.8-.1c-.9-.1-2.1.4-2.8 1l-.4.4.1-.8c.1-1.2.6-2.1 1.5-2.5l.7-.4h-.8c-.9.1-1.9.8-2.5 1.6l-.3.5-.1-.8c-.1-1.2.2-2.2.9-2.8l.6-.5-.8.3c-.8.3-1.7 1.2-2.1 2.1l-.2.5-.3-.8c-.4-1.1-.3-2.2.3-2.9l.5-.6-.8.4c-.8.5-1.5 1.5-1.7 2.5v.5l-.4-.7c-.6-1-.7-2.1-.3-2.9l.4-.7-.6.6c-.7.6-1.1 1.8-1.1 2.8v.6l-.7-.7c-.8-.9-1.1-1.9-.9-2.8l.2-.8-.5.7c-.5.7-.7 2-.5 2.9l.1.6-.7-.5c-1-.7-1.5-1.6-1.4-2.6v-.8l-.3.8c-.3.8-.3 2.1.1 3l.2.5-.8-.3c-1.1-.5-1.8-1.3-1.9-2.2l-.1-.8v.9c-.2.9.1 2.1.7 2.9l.3.5-.8-.2c-1.2-.2-2-.9-2.4-1.8l-.3-.7v.8c0 .9.6 2 1.3 2.7l.4.4h-.8c-1.2 0-2.2-.4-2.7-1.2l-.4-.7.2.8c.2.9 1 1.8 1.8 2.4l.5.3-.7.2c-1.1.3-2.2 0-2.9-.6l-.6-.6.4.8c.4.8 1.3 1.6 2.3 1.9l.6.2-.7.3c-1.1.5-2.1.5-3 0l-.7-.4.5.7c.5.7 1.6 1.3 2.6 1.4l.6.1-.7.5c-.9.7-2 .9-2.9.6l-.6-.5.6.5c.7.6 1.9.9 2.9.8l.6-.1-.5.6c-.8.9-1.8 1.3-2.7 1.2h-.9l.7.4c.8.4 2 .5 3 .2l.6-.2-.4.7c-.6 1-1.4 1.7-2.4 1.7h-.8l.8.2c.9.3 2.1.1 3-.4l.5-.3-.2.8c-.3 1.1-1.1 1.9-2 2.2l-.8.3.8.1c.9.1 2.1-.4 2.8-1l.4-.4v.7c-.1 1.2-.6 2.1-1.5 2.5l-.7.4.8-.1c.9-.1 1.9-.8 2.5-1.6l.3-.5.1.8c.1 1.2-.2 2.2-.9 2.8l-.6.6.8-.3c.8-.3 1.7-1.2 2.1-2.1l.2-.5.3.8c.4 1.1.3 2.2-.3 2.9l-.5.6.7-.5c.8-.5 1.5-1.5 1.7-2.5l.1-.6.4.7c.6 1 .7 2.1.3 2.9l-.4.7.6-.4c.7-.6 1.1-1.8 1.1-2.8v-.6l.6.6c.8.9 1.1 1.9.9 2.8l-.2.8.5-.7c.5-.7.7-2 .5-2.9l-.1-.6" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f6.svg b/riot/emojione/svg/1f1ec-1f1f6.svg new file mode 100644 index 0000000..6c4a158 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60 42c-5.5 0-10-4.5-10-10h-39.2v21.2c5.4 5.4 12.9 8.8 21.2 8.8 13.1 0 24.2-8.4 28.3-20-.1 0-.2 0-.3 0" fill="#ed4c5c"/><path d="m60 22c.1 0 .2 0 .3 0-4.1-11.6-15.2-20-28.3-20-8.3 0-15.8 3.4-21.2 8.8v21.2h39.2c0-5.5 4.5-10 10-10" fill="#83bf4f"/><path d="m60.3 22h-49.5v20h49.5c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#f9f9f9"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L21,32L10.8,10.8z" fill="#42ade2"/><g fill="#ffe62e"><path d="m33.7 24.1h-.6l-.3.5-.3-.5h-.6l.3-.5-.3-.5h.6l.3-.5.3.5h.6l-.3.5.3.5"/><path d="m31.2 24.3l-.6.1-.2.6-.4-.4-.6.1.2-.6-.4-.4.6-.1.2-.6.4.4.6-.1-.2.6.4.4"/><path d="m28.7 24.8l-.5.3v.6l-.5-.3-.5.3.1-.6-.5-.3.5-.3.1-.6.5.3.5-.3v.6l.3.3"/><path d="m34.4 24.1h.6l.3.5.3-.5h.6l-.3-.5.3-.5h-.6l-.3-.5-.3.5h-.6l.3.5-.3.5"/><path d="m36.9 24.3l.6.1.2.6.4-.4.6.1-.2-.6.4-.4-.6-.1-.2-.6-.4.4-.6-.1.2.6-.4.4"/><path d="m39.3 24.8l.5.3v.6l.5-.3.5.3v-.6l.5-.3-.5-.3v-.6l-.5.3-.5-.3.1.6-.6.3"/></g><path d="m28.9 25.6h10.2v10.7c0 3.6-4.7.8-5.1 2.7-.7-2-5.1.9-5.1-2.9 0-3.8 0-10.5 0-10.5" fill="#3e4347"/><path d="m29.3 26.1h9.4v9.8c0 3.3-4.3.8-4.7 2.5-.6-1.8-4.7.8-4.7-2.7 0-3.4 0-9.6 0-9.6" fill="#fff"/><path d="m35.3 30l-.3-.3c0 0-.3.1-.7.5 0-.2 0-.5.1-.7h-.5v.7c-.1-.1-.3-.4-.7-.5l-.1.4c.9.5.5 4.9-.5 6.8h2.4c-1-3.4-.8-6.3.3-6.9" fill="#89664c"/><path d="m35.5 27.8c.2-.2.2-.2.5-.2.1-.4.7-.4.8.1.5-.1.6.2.4.5.5-.1 1 0 .8.6.9.2.6.9.2 1-.1.4-.4.5-.9.4-.6.5-1 .3-1.3-.2-.7.1-.8-.1-1.1-.5-.6.2-.7.2-1.1-.1 0 .4-.2.3-.4.2 0 .5-.2.7-.6.5.3.7-.5 1-.9.4-.4 0-.4-.1-.6-.2-.2.5-.7.5-.9.2-.7-.1-.7-.5-.1-.5.1-.4.4-.3.7-.3 0-.3.2-.2.3-.2-.1-.2 0-.3.2-.3-.3-.5-.1-.6.2-.8-.2-.4.1-.4.4-.4 0-.5.1-.5.6-.6-.1-.2 0-.3.3-.3-.2-.5.1-.6.5-.5.1-.7 1.5-.3 1.4.6.3.2.4.2.6.6" fill="#83bf4f"/><path d="m41.4 33.5c-.2 1.2-1.5 1.7-1.4 2.5.2.2.6 1.1.6 1.1-.3.4-.5.7-1.6 1.2-1.4.5-3.3.2-3.3.2l.1 1.3h-3.7l.1-1.3c0 0-1.9.3-3.3-.2-.9-.4-1.4-.9-1.7-1.3 0 0 .7-1 .7-1 .2-.8-1.2-1.3-1.4-2.5-.1 2-1.1 2.7.2 3.3-.1.3-.2.7-.3.9.5 2.4 4.9 2.5 4.9 2.5v.5c0 .9 5.5.9 5.5 0v-.5c0 0 4.4-.1 4.9-2.5-.2-.4-.3-.9-.3-.9 1.1-.6.1-1.3 0-3.3" fill="#d3d3d3"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f7.svg b/riot/emojione/svg/1f1ec-1f1f7.svg new file mode 100644 index 0000000..75c9bc6 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56 14h-24v6h27.5c-.9-2.1-2.1-4.2-3.5-6" fill="#428bc1"/><g fill="#f9f9f9"><path d="m32 14h24c-1.7-2.3-3.7-4.3-6-6h-18v6"/><path d="m59.5 20h-27.5v6h29.4c-.4-2.1-1.1-4.1-1.9-6"/></g><path d="m4.5 44h55c.8-1.9 1.5-3.9 1.9-6h-58.8c.4 2.1 1.1 4.1 1.9 6" fill="#428bc1"/><path d="m8 50h48c1.4-1.8 2.6-3.9 3.5-6h-55c.9 2.1 2.1 4.2 3.5 6" fill="#f9f9f9"/><path d="M8,50c1.7,2.3,3.7,4.3,6,6h36c2.3-1.7,4.3-3.7,6-6H8z" fill="#428bc1"/><g fill="#f9f9f9"><path d="m14 56c5 3.8 11.2 6 18 6s13-2.2 18-6h-36"/><path d="m20 32v-12h12v-6h-12v-9.5c-2.1.9-4.2 2.1-6 3.5v6h-6c-1.4 1.8-2.6 3.9-3.5 6h9.5v12h-12c0 2.1.2 4.1.6 6h58.8c.4-1.9.6-3.9.6-6h-42"/></g><g fill="#428bc1"><path d="m61.4 26h-29.4v-6h-12v12h12 30c0-2.1-.2-4.1-.6-6"/><path d="m32 2c-4.3 0-8.3.9-12 2.5v9.5h12v-6h18c-5-3.8-11.2-6-18-6"/><path d="m14 14v-6c-2.3 1.7-4.3 3.7-6 6h6"/><path d="M4.5,20C2.9,23.7,2,27.7,2,32h12V20H4.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f8.svg b/riot/emojione/svg/1f1ec-1f1f8.svg new file mode 100644 index 0000000..68772ee --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><defs><linearGradient id="0" gradientUnits="userSpaceOnUse" x1="-1760.7915" x2="-1759.7915" gradientTransform="matrix(-.5968-1.5125-1.2072.7477 87.3848-3301.7146)"><stop stop-color="#d5dfff"/><stop offset="1" stop-color="#fff"/></linearGradient></defs><g fill="#2a5f9e"><path d="M32,2v30H2c0,16.6,13.4,30,30,30c16.6,0,30-13.4,30-30C62,15.4,48.6,2,32,2z"/><path d="m12 12h21v21h-21z"/></g><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m44.6 41.7c-.6.6-1.8 1.2-2.6.6-1.1.2-.5.5-1.5-.2-.7.2-.9.2-1.9-.2-.5.9-1.1 1.1-1.9.5.1-.2.3-.4.4-.6 0 .4-1.6.3-1.7.3.9-2.9 4.6-5.3 6.7-7.3 1 1.8 3.7 4.7 2.5 6.9" fill="#6a4c2d"/><path fill="#fff" d="m48.8 42h1.5l-.7-.3 5.9-.3-.8-.3-.8-1-3.6-.3-.3-.5-1.9-.2-1.1.8.8 2z"/><path d="m48.8 31.1c.1-.1.5-.2.4-.7 0-.5-.5-.6-.8-.6-.3 0-.5.2-.5.2l-.9-.5c0 0 .4-2.7.9-2.9.4-.3.5-.5.5-.5l-.2-.3-2.8-.3-2.7.3c0 0-.2.3-.2.4 0 .1 0 .3.5.6.5.4.9 2.7.9 2.7l-.8.3c0 0-.3-.1-.4-.1s-.5.2-.5.7c0 .5.4.8.4.8s2.6-.3 2.9.4c.5-.6 3-.3 3.3-.5" fill="#656263"/><path d="m51.5 28.3c.2-.6.6-.6 1.2-.6 1.2 0 1.1.4 1.5 1.4.5 1.4 1.4 2.8 1.5 4.4.1 1.7.1 4-.7 5.5-.6 1.1.7 1.4 1.5 1.8l-.6-.2.6.5-.7-.3.4.4-1-.5.4.4-.8-.4c.1.2.3.3.4.5-.2-.1-.4-.2-.7-.3v.2c-.8-.6-2-.7-2.3-1.6-.4-1-1.2-2.5-1.1-3.6.3-2.3 1-5.3.4-7.6" fill="#3e4347"/><path fill="#00713d" d="m44 39.7l-.3 1 .4-.5v1l.3-.5v1.2l.3-.6v1.1l.3-.5.2 1 .3-.7.4.8.1-.6.6.7v-.7l.7.6v-.4l.7.3v-.4l.8.2-.5-.5h.5l-.8-.5h.4l-.7-.6h.5l-.8-.6.4-.1z"/><path d="m41.9 31.4c.7 0 1.4 0 2.2 0 0 0 1.4 0 1.6.5.3-.6 1.5-.6 1.5-.6.7 0 1.5-.1 2.2-.1 0 1.8 0 3.6 0 5.4-.4 2.1-2 3.6-3.6 4.2-2-.6-3.3-2.3-3.7-4.2 0-1.8-.1-3.5-.2-5.2" fill="#fff"/><path d="m42.7 31.4l3.1 8.4 2.8-8.6c-.9.1-2.8-.1-3 .7-.3-.8-2.3-.5-2.9-.5" fill="#006b00"/><g fill="#cdad56"><path d="m44 17.8l1.8-1.5.3-1.1-.4.2-.1-.5-.1-.1-.1.2-.2-.4-.3.4.5 1-.5.8-.2-.5.2-.6-.3.1v-.6l-.4.4-.1-.1.4 1.2-.3.4-.5-1.3-.1.3-.2-.2.1.7h-.2l.3.4-.3.4.6-.2-.2.4z"/><path d="m42.6 17.8l-1.6-1.4-.1-1 .2.2.2-.5.2.3.3-.4.2.3-.6.9.4.7.2-.5-.3-.4h.4v-.5l.3.3.2-.3-.5 1.3.2.3.4-1 .2.2.2-.2-.1.6h.2l-.1.4.1.3-.5-.2.1.4z"/></g><path d="m48.2 32.6l-.3-.4.4-.5-.6.1-.1-.6-.3.8-.6-.3.4.5-1.1.8.3.1-.4.1.1.2-.3.1.2.1h-.8v-.6h.8l-.4-.8-.3.2-.2-.3-.7.2.4-.5-.6.3-.1-.7-.1.6-.6-.1.5.4-.4.5.5-.2.2.6.1-.4.3.2h.1l.1 2-.2.4.1-.1.3.7.1-.6.5-.2.3-.1.2.1.1.6-.5.7h-.6l-.2.3.6-.3v.3l.3-.3v.2l.2-.1-.5 1.4.5-.4v.6l.2-.4.2-.2.1.2v-.5l.2.1-.2-.7.3.2-.2-.9.8-.4v-.4h-.3l.2-.4.1-.6v.3-.5l.3.1-.2-.3.4-.2h-.2l.5-.5-1.3.9-.1 1.7-.4-1.9.2.3.2-.8.4.1-.2-.3.2.1-.3-.2.4-.1-.4-.3.5-.2v.6l.2-.6.7.2m-3.2 2.2l.1-.7.8-.1-.9.8" fill="#ffc900"/><g fill="#ed4c5c"><path d="m38.8 48.8c.3-.1 2 .4 2.7 1.1-.1-1.3-.5-2.2-.5-2.2s-1-.3-1.2-.2c-.2.2-.8.9-1 1.3"/><path d="m38.2 43c-.1 0-.2.1-.4.3-.1.3-.2 1.2-.4 1.4s-.4.2-.4.4 0 .6.6.8c.5 0 1.4-.9 1.4-.9s.4-.5.6-1c-1 .3-1.7-.6-1.4-1"/><path d="m53.4 48.6c-.3-.1-2.1.4-2.7 1.1.1-1.3.5-2.2.5-2.2.1 0 1-.3 1.1-.2.2.2.8.9 1.1 1.3"/><path d="m53.8 42.8c.1 0 .2.2.3.4.1.3.3.8.5 1 .2.2.4.5.4.7s0 .4-.6.6c-.5 0-1.3-.7-1.3-.7s-.4-.5-.6-1c1 .4 1.7-.6 1.3-1"/></g><path d="m52.3 45.4c.4-.4.7-.6.7-.6s-.5-.6-.6-1c1 .5 2.3-1.1.8-1.2-1 .1-1.9.9-2.5 1.9-3.1-1.5-6.7-1.4-9.6.1-.6-1-1.4-1.8-2.4-1.8-1.5.1-.1 1.7.8 1.2-.1.4-.6 1-.6 1s.3.1.7.5c-.8.6-1.5 1.3-2.1 2.2 0 0 1.1.7 1.1 1.1.5-.7 1.1-1.4 1.9-1.9.4.7.7 1.7.9 3.1 0 0 .6-1.6.9-1.6.2 0 0-1.1-.5-2.2 2.4-1.2 5.5-1.4 8.1-.2-.5 1.1-.6 2.1-.5 2.4.3 0 1 1.4 1 1.4.2-1.3.5-2.3.9-3 .7.5 1.3 1.1 1.9 1.8.6-.7 1.1-1 1.1-1-.5-.9-1.2-1.6-2-2.2" fill="#ffce31"/><g fill="#1e5aa6"><path d="m48.7 31.2h.4l-.8 1 .9 1.1-1.8 2.3 1.7 2c-.2.5-.4.9-.7 1.2l-1-1.1 1.8-2.2-1.4-1.6.9-2.7"/><path d="m42.6 31.4h-.5l.8.9-.9 1.1 1.9 2-1.5 2.1c.2.5.5 1 .7 1.3l.9-1.2-1.9-2.1 1.4-1.8-.9-2.3"/><path d="m44.7 36.8l-.7.9 2.4 2.8c.4-.2.8-.5 1.1-.7l-1.2-1.4.5-1.5.7.8-2.3 2.9c-.4-.2-.8-.4-1.2-.7l1.2-1.5-.5-1.6"/><path d="m44 35.5l.4.5-.3-.7z"/><path d="m47.1 35.9l.4-.4-.2-.2z"/></g><path d="m51.5 29.5c.2 0 1.4 0 1.4.2-.5.2-.8.5-1.1 1 .3.5.6.9.9 1.4.1 1-1.3 2-1.2 3.5.1 1.1.1 2.2 1 2.9 1.1 1 .6-2.1.7-2.4 0-.2 1.1 1 1.1 1.4-.1 1.1-.5.5-.5.8-.3 1.1-.3 1.8-1.3 1.8-1.4-.8-2.7-8.8-1-10.6" fill="#f5f5f5"/><g fill="#fff"><path d="m47.4 27.6c0 0 1.1 1.2 1.9 1.2.1.4-.3.7-.5.8-.4-.1-.7 0-1.6-1 .1-.6.3-.9.2-1"/><path d="m49 24.8c.1-.5.4-.8.7-.8-.1-.3.5-1.9 2.3-2.4.1.8-.7 1.5-.7 1.5s2.6-.4 3.1-1.1c-.1.3-.6 2.1-3.3 2.1 1 1-.3 1.8-.9 1.5.9-.8-.5-1.3-1.2-.8"/></g><g fill="#00f"><path d="m48.8 29.7c0 0 1.4.4 1.6-1.6-.3-.9-.7-2.8-.1-3.3-.6-.4-1.2 0-1.2 0 0 .1-.6.8.1 2.2-1.7-.4-1 1.2-1 1.2.1-.2 1-.5 1.2.8 0 .2-.7.7-.6.7"/><path d="m50.3 28.1c0 0 1.5-.8 1.4-2.7-1.3 0-1.7 1.7-1.7 1.7l.3 1"/></g><path d="m43.7 28c0 0-1.1 1-1.7.6-.5.3-1-.2-1-.2s.6 2.3 2.9.6c-.1-.5-.2-1-.2-1" fill="#fff"/><path d="m42 28.6c.1-.5.5-.7.8-.3.4.1.8-1.6-.6-1.3.4-2.2-.8-3-.8-3s-.4 2.4-.2 2.9c.2.5-.3-.8-1.9-1.2 0 1.8 1.8 2.7 1.8 2.7s.4.4.9.2" fill="#00f"/><path d="m41.1 24.9c0 0-1 0-.4 1.1-.5.1-1.5-.5-.8-1.4-2.3-.1-3.3-1.2-3.3-2.2.7.7 2.3.4 2.9.9-.7-.7-.6-1.6-.6-1.6s2 .6 2.4 2.4c-.1.2-.2.8-.2.8" fill="#fff"/><path d="m42.9 24.3c-.1.2-.1.4-.2.5 1.9 0 3.7.1 5.6.1-.1-.6-.5-1.2-.7-1.7.1-.4.1-1.1.2-1.6.1-.5-.7-.6-.5-1.1-.1.2.6 0 .6 0-.3 0-.4-1-.7-1.1-.7-.2-1 0-1.6 0-.8 0-2 0-1.8-1.2.4.1.9 0 1-.4-.1-.1-1.4-.3-1.6-.3-.2 0-1.6.4-1.7.5.4.5.8.4 1.2.8.2.2.3 1.1.1 1h.2c-.1.1-.2.2-.2.3.1 0 .2 0 .4 0-.1.2-.2.3-.3.5h.5c-.1.2-.1.3-.2.5.1 0 .2-.1.4-.1.4.9-.3 2.4-.7 3.3m4.2-1c.2-.1.2-.1 0 0m-.2-1.9c.8 0 .4 1.8.1 1.9-.8.1-.7-1.9-.1-1.9m-2 .6c-.3-1.6 2-1.1 1.3.1-.1.2-.6 1.3-.6 1.3-.6 0-.8-.9-.7-1.4m-1 1c.4-.5-.3-1.7.6-2 0 .7 0 1.7-.4 2.4-.1-.2-.2-.3-.4-.2.1 0 .2-.1.2-.2" fill="#923f00"/><path d="m42.7 26.4l2.8 1.8 2.5-1.7c0 0 .5-.3.5-.5 0-.2-.2-.1-.3-.1l-2.6 1.8-2.7-1.7c0 0-.2-.1-.2.1-.1.2 0 .3 0 .3" fill="#b4b6b9"/><g fill="#ff7000"><path d="m52 39.8l-1 .1.3.3h1.3z"/><path d="m51.6 28.4l-1.3.7.3.3h1.3z"/><path d="m51.3 40.4l.6.4 1.7-.3-.5-.3z"/></g><path d="m51 31.7c-.2-.1-.8-.2-1.6.3v1.7c0 0 1.1-.6 1.7-.5 0-.4 0-1.1-.1-1.5" fill="url(#0)"/><path d="m40 30c-.3.8.7 2 1 2.7.7-.8 1-.9 1 .2 0 .3.1.7 0 1-.1.3-.8.1-.5.5.6 1 .5 1.6.2 2.6-.1.4-.5 2.5-1.1 2.6 0 0 .1-1.5 0-1.7-.1-.3-.6-1-.4-1.3-.2.3-1 1.5-1.5 1.1.2.5 0 .7-.1 1.2-.1.3-.1.7-.1 1-.1.4-.7.8-.6 1.4-2.1-.7-3.5-2.3-2.8-4.6.2-.5.4-1 .9-1.3.5-.4.6-1 .8-1.7.1-.2.3-.5.3-.8-.1-.6.3-.8.3-1.2.1-.7.2-1.5.2-2.2 0-1.1.4-1 1.3-1.5.3-.1 1.5.1 1.8.3.2.3-.5 1.5-.7 1.7" fill="#8a9396"/><path fill="#fff" d="m42.6 24.7h5.9v1.2h-5.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1f9.svg b/riot/emojione/svg/1f1ec-1f1f9.svg new file mode 100644 index 0000000..bc4f584 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3"/><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z"/></g><path d="M42,3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7v56.6c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7z" fill="#f9f9f9"/><path d="m27.1 25.9c0 0-.7-.2-1.2-.2.4-.7.6-1.9.6-1.9s-1.1.6-1.5 1.3c-.2-.5-.6-1-.6-1s-.5.6-.4 1.1.8 1.4.8 1.4 1 .3 1.6.1c.3-.1.7-.8.7-.8" fill="#699635"/><path d="m26.1 27.5c0 0-.7 0-1.2.1.2-.7.1-2 .1-2s-.9.9-1.1 1.6c-.3-.4-.9-.8-.9-.8s-.3.7-.1 1.2c.2.5 1.1 1.1 1.1 1.1s1.1 0 1.5-.3c.4-.2.6-.9.6-.9" fill="#83bf4f"/><path d="m25.5 29.3c0 0-.7.2-1.2.4 0-.8-.5-1.9-.5-1.9s-.6 1.1-.6 1.8c-.4-.3-1-.5-1-.5s-.1.7.2 1.2c.3.4 1.4.8 1.4.8s1-.3 1.4-.7c.4-.4.3-1.1.3-1.1" fill="#699635"/><path d="m25.5 31.1c0 0-.6.3-1 .7-.2-.8-.9-1.7-.9-1.7s-.3 1.2-.1 1.9c-.5-.2-1.1-.2-1.1-.2s0 .7.5 1.1c.4.3 1.5.4 1.5.4s.9-.5 1.2-1c.1-.5-.1-1.2-.1-1.2" fill="#83bf4f"/><path d="m25.9 32.9c0 0-.5.5-.8 1-.4-.7-1.4-1.4-1.4-1.4s0 1.2.4 1.9c-.5 0-1.2.1-1.2.1s.2.7.8.9c.5.2 1.6 0 1.6 0s.8-.7.9-1.3-.3-1.2-.3-1.2" fill="#699635"/><path d="m26.8 34.5c0 0-.4.6-.5 1.1-.5-.6-1.7-1-1.7-1s.3 1.2.9 1.8c-.5.1-1.1.4-1.1.4s.4.6 1 .7c.6.1 1.5-.4 1.5-.4s.6-.9.5-1.5c0-.6-.6-1.1-.6-1.1" fill="#83bf4f"/><path d="m28 35.9c0 0-.2.7-.2 1.2-.7-.4-1.9-.6-1.9-.6s.6 1.1 1.3 1.5c-.5.2-1 .6-1 .6s.6.5 1.1.4 1.4-.8 1.4-.8.3-1 .1-1.6-.8-.7-.8-.7" fill="#699635"/><path d="m29.6 36.9c0 0 0 .7.1 1.2-.7-.2-2-.1-2-.1s.9.9 1.6 1.1c-.3.3-.7.9-.7.9s.7.3 1.2.1c.5-.2 1.1-1.1 1.1-1.1s0-1.1-.3-1.5c-.2-.5-1-.6-1-.6" fill="#83bf4f"/><path d="m36.9 25.9c0 0 .7-.2 1.2-.2-.4-.7-.6-1.9-.6-1.9s1.1.6 1.5 1.3c.2-.5.6-1 .6-1s.5.6.4 1.1-.8 1.4-.8 1.4-1 .3-1.6.1c-.3-.1-.7-.8-.7-.8" fill="#699635"/><path d="m37.9 27.5c0 0 .7 0 1.2.1-.2-.7-.1-2-.1-2s.9.9 1.1 1.6c.3-.4.9-.8.9-.8s.3.7.1 1.2c-.2.5-1.1 1.1-1.1 1.1s-1.1 0-1.5-.3c-.4-.2-.6-.9-.6-.9" fill="#83bf4f"/><path d="m38.5 29.3c0 0 .7.2 1.2.4 0-.8.5-1.9.5-1.9s.6 1.1.7 1.8c.4-.3 1-.5 1-.5s.1.7-.2 1.2c-.3.4-1.4.8-1.4.8s-1-.3-1.4-.7c-.5-.4-.4-1.1-.4-1.1" fill="#699635"/><path d="m38.5 31.1c0 0 .6.3 1 .7.2-.8.9-1.7.9-1.7s.3 1.2.1 1.9c.5-.2 1.1-.2 1.1-.2s0 .7-.5 1.1c-.4.3-1.5.4-1.5.4s-.9-.5-1.2-1c-.1-.5.1-1.2.1-1.2" fill="#83bf4f"/><path d="m38.1 32.9c0 0 .5.5.8 1 .4-.7 1.4-1.4 1.4-1.4s0 1.2-.4 1.9c.5 0 1.2.1 1.2.1s-.2.7-.8.9c-.5.2-1.6 0-1.6 0s-.8-.7-.9-1.3.3-1.2.3-1.2" fill="#699635"/><path d="m37.2 34.5c0 0 .4.6.5 1.1.5-.6 1.7-1 1.7-1s-.3 1.2-.9 1.8c.5.1 1.1.4 1.1.4s-.4.6-1 .7c-.6.1-1.5-.4-1.5-.4s-.6-.9-.5-1.5c.1-.6.6-1.1.6-1.1" fill="#83bf4f"/><path d="m36 35.9c0 0 .2.7.2 1.2.7-.4 1.9-.6 1.9-.6s-.6 1.1-1.3 1.5c.5.2 1 .6 1 .6s-.6.5-1.1.4-1.4-.8-1.4-.8-.3-1-.1-1.6c.1-.4.8-.7.8-.7" fill="#699635"/><path d="m34.4 36.9c0 0 0 .7-.1 1.2.7-.2 2-.1 2-.1s-.9.9-1.6 1.1c.4.3.8.9.8.9s-.7.3-1.2.1c-.5-.2-1.1-1.1-1.1-1.1s0-1.1.3-1.5c.1-.5.9-.6.9-.6" fill="#83bf4f"/><g fill="#94989b"><path d="M40 24.1 26 37 27.2 38.1z"/><path d="m24 24.1l14 12.9-1.2 1.1z"/></g><path d="m29.2 33h4c0 0 1-1 1-4 0-3-1-4-1-4h-4c0 0 1 1 1 4 0 3-1 4-1 4" fill="#ffdd7d"/><path d="m31 20.8c0 0 0 .1 0 .2 0 .1 0 .3.1.6 0 .1.1.2.1.4.1.1.1.3.2.4.1.1.2.3.3.4.1.1.2.3.4.4.3.3.6.5 1 .8.2.1.4.3.6.4.2.2.4.3.7.5.5.5.9.9 1.3 1.5.2.3.4.5.5.8.2.3.3.6.4.9.2.6.4 1.3.4 2 .1.7-.1 1.3-.2 2-.2.6-.5 1.2-.8 1.7-.1.2-.4.4-.5.6-.2.2-.4.4-.6.5-.2.1-.4.3-.6.4-.2.1-.4.2-.6.3-.3.2-.7.3-.9.3-.5.1-.8.1-.8.1s.2-.2.6-.5c.2-.1.4-.4.7-.6.3-.2.5-.5.8-.8.1-.1.2-.3.3-.5.1-.2.2-.3.3-.6.2-.4.3-.8.4-1.3.1-.5.1-.9 0-1.4-.1-.5-.2-1-.4-1.4-.1-.2-.2-.5-.3-.7-.1-.2-.2-.5-.4-.7-.3-.4-.5-.9-.8-1.2-.4-.4-.7-.8-1.1-1.1-.2-.2-.4-.4-.5-.6-.1-.2-.3-.4-.4-.6-.1-.2-.2-.4-.3-.6-.1-.2-.2-.4-.2-.6 0-.2-.1-.4-.1-.6 0-.2 0-.3 0-.5 0-.3.1-.5.2-.6.1-.2.2-.3.2-.3" fill="#699635"/><g fill="#594640"><path d="m25.4 39.9c-.3.3-.8.3-1.2 0-.3-.3-.3-.8 0-1.2l2.3-2.3c.3-.3.8-.3 1.2 0 .3.3.3.8 0 1.2l-2.3 2.3"/><path d="m38.6 39.9c.3.3.8.3 1.2 0 .3-.3.3-.8 0-1.2l-2.3-2.3c-.3-.3-.8-.3-1.2 0-.3.3-.3.8 0 1.2l2.3 2.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1fa.svg b/riot/emojione/svg/1f1ec-1f1fa.svg new file mode 100644 index 0000000..6cdd6bf --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M2,32c0,9.8,4.7,18.5,12,24h36c7.3-5.5,12-14.2,12-24S57.3,13.5,50,8H14C6.7,13.5,2,22.2,2,32z" fill="#2a5f9e"/><g fill="#ed4c5c"><path d="m14 8h36c-5-3.8-11.2-6-18-6s-13 2.2-18 6"/><path d="m32 62c6.8 0 13-2.2 18-6h-36c5 3.8 11.2 6 18 6"/><path d="M43.5,32C43.5,42.2,32,50.5,32,50.5S20.5,42.2,20.5,32S32,13.5,32,13.5S43.5,21.8,43.5,32z"/></g><path d="m42 32c0 8.8-10 16-10 16s-10-7.2-10-16c0-8.8 10-16 10-16s10 7.2 10 16" fill="#b4d7ee" id="0"/><use xlink:href="#0"/><path d="m26.6 39.4c2.4 3.4 5.4 5.6 5.4 5.6s8-5.8 8-13c-3.8 3.4-8.3 6-13.4 7.4" fill="#ffe62e"/><path d="m24 32c0 2.8 1.2 5.3 2.6 7.4 5.1-1.4 9.6-4 13.4-7.4 0 0-16 0-16 0" fill="#428bc1"/><path fill="#fff" d="m28 30v4h4z"/><path d="m34.9 39c-3.8-6.8-3.3-13.7-3.3-14l.8.1c0 .1-.5 6.9 3.1 13.4l-.6.5" fill="#89664c"/><path fill="#83bf4f" d="m32 22.2l2.5-2.2-.8 3.1 3.3.9-3.3.9.8 3.1-2.5-2.2-2.5 2.2.8-3.1-3.3-.9 3.3-.9-.8-3.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1fc.svg b/riot/emojione/svg/1f1ec-1f1fc.svg new file mode 100644 index 0000000..30ed7ef --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M22,60.3V3.7C10.4,7.8,2,18.9,2,32S10.4,56.2,22,60.3z" fill="#ed4c5c"/><path d="m22 32h40c0-16.6-13.4-30-30-30-3.5 0-6.9.6-10 1.7v28.3" fill="#ffce31"/><path d="m22 32v28.3c3.1 1.1 6.5 1.7 10 1.7 16.6 0 30-13.4 30-30h-40" fill="#699635"/><path fill="#3e4347" d="m13 35.7l4.3 3.3-1.6-5.3 4.3-3.5h-5.3l-1.7-5.2-1.6 5.2h-5.4l4.3 3.5-1.6 5.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec-1f1fe.svg b/riot/emojione/svg/1f1ec-1f1fe.svg new file mode 100644 index 0000000..b4f6743 --- /dev/null +++ b/riot/emojione/svg/1f1ec-1f1fe.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-5.3,0-10.3,1.4-14.6,3.8l-0.1,52.3C21.6,60.6,26.6,62,32,62c14.9,0,27.3-10.9,29.6-25.2v-9.6 + C59.3,12.9,46.9,2,32,2z" fill="#699635"/><path d="m60.1 29.6l-42.7-21.6v.4h-3.8c-.3.3-.7.5-1 .8v45.5c.3.3.7.6 1 .8h3.7v.5l43.2-21.5c.1-.8 1.6-1.7 1.6-2.5s-2-1.6-2-2.4" fill="#ffe62e"/><path d="m13.5 8.4l48.5 23.4c0-1.6-.1-3.1-.4-4.6l-44.2-21.4c-1.4.8-2.7 1.6-3.9 2.6" fill="#fff"/><path d="M12.5,12H9.6C4.9,17.3,2,24.3,2,32s2.9,14.7,7.6,20h2.8l20-20L12.5,12z" fill="#ed4c5c"/><path d="m12.5 9.2c-1 .9-2 1.8-2.9 2.8l20 20-20 20c.9 1 1.8 1.9 2.9 2.8l22.8-22.8-22.8-22.8" fill="#3e4347"/><path d="m61.6 36.8c.2-1.5.4-3.1.4-4.6l-48.5 23.4c1.2 1 2.5 1.8 3.9 2.6l44.2-21.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ec.svg b/riot/emojione/svg/1f1ec.svg new file mode 100644 index 0000000..2fb8014 --- /dev/null +++ b/riot/emojione/svg/1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m39.4 26.5c-.5-2-1.6-3.4-3.4-4.2-1-.4-2.1-.6-3.3-.6-2.3 0-4.3.9-5.8 2.6-1.5 1.8-2.3 4.4-2.3 7.9 0 3.6.8 6.1 2.4 7.6 1.6 1.5 3.5 2.2 5.6 2.2 2 0 3.7-.6 5-1.8 1.3-1.2 2.1-2.7 2.4-4.6h-6.7v-4.8h12.1v15.6h-4l-.6-3.6c-1.2 1.4-2.2 2.3-3.2 2.9-1.6 1-3.6 1.5-5.9 1.5-3.8 0-7-1.3-9.4-4-2.6-2.7-3.8-6.3-3.8-11 0-4.7 1.3-8.5 3.9-11.3 2.6-2.8 6-4.2 10.3-4.2 3.7 0 6.7.9 8.9 2.8s3.5 4.2 3.8 7h-6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ed-1f1f0.svg b/riot/emojione/svg/1f1ed-1f1f0.svg new file mode 100644 index 0000000..20f6508 --- /dev/null +++ b/riot/emojione/svg/1f1ed-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="31.9" cy="32" r="30" fill="#ed4c5c"/><path d="m29.9 27.8c.7-1.8 2.4-2.1 3.3-4.4.4-1-.3-3 .1-4 .9-2.3 3.2-1.9 3.2-1.9-4.1-1.5-8.7.6-10.2 4.6-1.5 4 .6 8.5 4.7 9.9-1.1-1.2-1.7-2.6-1.1-4.2" fill="#fff"/><circle cx="30.3" cy="21.3" r=".9" fill="#ed4c5c"/><path d="m26.5 31.8c-1.5-1.2-1.3-2.9-3.3-4.4-.9-.7-3-.6-3.9-1.3-2-1.5-.8-3.6-.8-3.6-2.7 3.4-2.1 8.3 1.4 10.9 3.4 2.6 8.4 2 11.1-1.3-1.6.6-3.1.7-4.5-.3" fill="#fff"/><circle cx="20.8" cy="29.5" r=".9" fill="#ed4c5c"/><path d="m29.4 36.2c-1.6 1.1-3.2.3-5.3 1.7-.9.6-1.5 2.6-2.4 3.2-2.1 1.4-3.8-.3-3.8-.3 2.4 3.6 7.4 4.5 11 2.1 3.6-2.4 4.6-7.2 2.2-10.8.1 1.7-.3 3.1-1.7 4.1" fill="#fff"/><path d="m25 40.3c.3-.4.9-.5 1.3-.2.4.3.5.9.2 1.3-.3.4-.9.5-1.3.2s-.5-.9-.2-1.3" fill="#ed4c5c"/><path d="m34.5 34.9c.5 1.8-.7 3.1 0 5.5.3 1 2 2.2 2.3 3.3.7 2.4-1.5 3.4-1.5 3.4 4.2-1.2 6.6-5.5 5.4-9.6-1.2-4.1-5.6-6.5-9.8-5.3 1.8.3 3.1 1 3.6 2.7" fill="#fff"/><path d="m37.6 40.2c-.3-.4-.2-1 .2-1.3.4-.3 1-.2 1.3.2.3.4.2 1-.2 1.3-.5.4-1 .3-1.3-.2" fill="#ed4c5c"/><path d="m34.8 29.7c2 .1 2.8 1.6 5.3 1.7 1.1 0 2.8-1.2 3.9-1.2 2.5.1 2.8 2.4 2.8 2.4.2-4.3-3.3-7.9-7.6-8-4.4-.1-8 3.2-8.2 7.5.9-1.5 2.1-2.5 3.8-2.4" fill="#fff"/><path d="m41.4 28.5c-.5.2-1-.1-1.2-.6-.2-.5.1-1 .6-1.2.5-.2 1 .1 1.2.6.2.5-.1 1.1-.6 1.2" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ed-1f1f2.svg b/riot/emojione/svg/1f1ed-1f1f2.svg new file mode 100644 index 0000000..ee741bb --- /dev/null +++ b/riot/emojione/svg/1f1ed-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z"/><path d="m12 12h21v21h-21z"/></g><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><g fill="#fff"><path d="m15.3 35.6l1.1 4.4 4.1-1.9-2.7 3.6 4 2.1-4.5.1.9 4.4-2.9-3.4-2.9 3.4.9-4.4-4.5-.1 4-2.1-2.7-3.6 4.1 1.9z"/><path d="m48.2 18.7l.5 1.9 1.7-.8-1.1 1.5 1.7.9h-2l.4 1.9-1.2-1.5-1.2 1.5.4-1.9h-2l1.7-.9-1.1-1.5 1.7.8z"/><path d="m56.5 26.3l.5 1.9 1.7-.8-1.1 1.5 1.7.9h-1.9l.3 1.9-1.2-1.5-1.2 1.5.4-1.9h-1.9l1.7-.9-1.2-1.5 1.7.8z"/><path d="m38.8 28.8l.5 1.9 1.8-.8-1.2 1.5 1.7.9h-1.9l.4 1.9-1.3-1.5-1.2 1.5.4-1.9h-1.9l1.7-.9-1.2-1.5 1.8.8z"/><path d="m48.2 43.6l.5 1.9 1.7-.8-1.1 1.5 1.7.9-2 .1.4 1.8-1.2-1.4-1.2 1.4.4-1.8-2-.1 1.7-.9-1.1-1.5 1.7.8z"/><path d="m51.9 34l.4 1.1h1.1l-.9.6.4 1.1-1-.7-.9.7.4-1.1-.9-.6h1.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ed-1f1f3.svg b/riot/emojione/svg/1f1ed-1f1f3.svg new file mode 100644 index 0000000..0b56c94 --- /dev/null +++ b/riot/emojione/svg/1f1ed-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z"/><path d="M32,2C18.9,2,7.8,10.3,3.7,22h56.6C56.2,10.3,45.1,2,32,2z"/></g><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z" fill="#f9f9f9"/><g fill="#42ade2"><path d="m32 33.6l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m22 28.6l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m42 28.6l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m22 38.6l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m42 38.6l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ed-1f1f7.svg b/riot/emojione/svg/1f1ed-1f1f7.svg new file mode 100644 index 0000000..938504a --- /dev/null +++ b/riot/emojione/svg/1f1ed-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ed4c5c"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#428bc1"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/><path d="m42.9 25.2l2.6-6-2-3.2-3.3 1.2-2.3-2.7-3.1 1.8-2.8-2.3-2.8 2.3-3.1-1.8-2.3 2.7-3.3-1.2-2 3.3 2.6 6c3.3-1.5 7-2.3 10.9-2.3 3.9-.2 7.6.7 10.9 2.2" fill="#fff"/><path d="m34.7 16.5l-2.7-2.2-2.7 2.2.5 6.2c.7-.1 1.5-.1 2.2-.1.7 0 1.5 0 2.2.1l.5-6.2" fill="#428bc1"/><path d="m32 50c6.2 0 11.3-5.1 11.3-11.3v-13.4h-22.6v13.4c0 6.2 5.1 11.3 11.3 11.3" fill="#ed4c5c"/><path d="m32 49.8c6.1 0 11.1-5 11.1-11.1v-13.2h-22.2v13.2c0 6.1 5 11.1 11.1 11.1" fill="#fff"/><g fill="#ed4c5c"><path d="m25.6 25.9h-4.3v4.7h4.3v-4.7"/><path d="m25.6 35.3h4.3v-4.7h-4.3v4.7"/><path d="m21.3 38.7c0 .4 0 .8.1 1.3h4.2v-4.7h-4.3v3.4"/><path d="m34.1 35.3h-4.3v4.7h4.3v-4.7"/><path d="m34.1 44.7h4.3v-4.7h-4.3v4.7"/><path d="m38.4 47.2c.9-.7 1.8-1.6 2.4-2.6h-2.4v2.6"/><path d="m25.6 44.7h4.3v-4.7h-4.3v4.7"/><path d="m23.2 44.7c.7 1 1.5 1.8 2.4 2.6v-2.6h-2.4"/><path d="m32.7 49.3c.5 0 .9-.1 1.4-.2v-4.5h-4.3v4.5c.5.1.9.2 1.4.2.5.1 1 .1 1.5 0"/><path d="m42.6 40c0-.4.1-.8.1-1.3v-3.4h-4.3v4.7h4.2"/><path d="m34.1 35.3h4.3v-4.7h-4.3v4.7"/><path d="m34.1 25.9h-4.3v4.7h4.3v-4.7"/><path d="m42.6 30.6v-4.7h-4.3v4.7h4.3"/></g><path d="m23.9 17.4l-3.3-1.2-1.9 3 .7 1.6 1.8 4.1c1.3-.6 2.7-1.1 4.2-1.4l-1.5-6.1" fill="#428bc1"/><path d="m23.7 20.4c.1.2.2.5.2.8 0 .9-.7 1.6-1.6 1.6-.8 0-1.4-.6-1.6-1.3.3.5.8.8 1.4.8.9 0 1.6-.7 1.6-1.6 0-.1 0-.2 0-.3" fill="#fff"/><path fill="#ffe62e" d="m22.2 18.1v.1l-.1.6.5.3v.1h-.1l-.5.2-.1.5v.1l-.1-.1-.4-.3-.6.2v-.1l.1-.5-.4-.4v-.1l.6-.2.1-.5v-.1.1l.4.3.6-.1z"/><path d="m29.3 16.5l-3.1-1.7-2.3 2.6 1.5 6c1.4-.4 2.9-.6 4.4-.7l-.5-6.2" fill="#2a5f9e"/><g fill="#ed4c5c"><path d="m25 21.9c1.5-.4 3-.6 4.6-.8l-.1-1.6c-1.7.1-3.3.4-4.9.8l.4 1.6"/><path d="m24.3 18.9c1.7-.4 3.4-.7 5.1-.9l-.1-1.5c-1.8.2-3.6.5-5.4.9l.4 1.5"/></g><g fill="#ffe62e"><path d="m32 19.3c-.2 0-.5.7-.9.2 0 0 .3.4.3.6 0 0-.3-.1-.3-.1 0 2.1 1.9 2 1.9 0 0 0-.3.1-.3.1 0-.1.3-.6.3-.6-.5.5-.7-.1-1-.2"/><path d="m33.2 16.4c-.2 0-.5.7-.9.2 0 0 .3.4.3.6 0 0-.3-.1-.3-.1 0 2.1 1.9 2 1.9 0 0 0-.3.1-.3.1 0-.1.3-.6.3-.6-.4.5-.7-.2-1-.2"/><path d="m30.7 16.4c-.2 0-.5.7-.9.2 0 0 .3.4.3.6 0 0-.3-.1-.3-.1 0 2.1 1.9 2 1.9 0 0 0-.3.1-.3.1 0-.1.3-.6.3-.6-.4.5-.7-.2-1-.2"/></g><path d="m40.1 17.4l-2.3-2.7-3.1 1.8-.5 6.2c1.5.1 3 .4 4.4.7l1.5-6" fill="#2a5f9e"/><path d="m35.3 17.8c.1 0 .2 0 .3 0 .2.1.2 0 .3-.1.2-.1.8-.2 1.4.1.1.1.7.1.7.1s-.5.2-1 0c.2.1.3.3.5.4.1 0 .8.2.8.2s-.6.3-1 0c-.3-.3-.6-.6-1.1-.5 0 0 .3.1.3.1-.1.1-.4.2-.5.1 0 .3 1 1.3 2.2 1 .5-.2.2.2.1.4-.1.1-.5 2.3-1.6 1.8 0 0 .6-.2.6-.6 0 0-.2-.2-.2-.2-.4 0-.7 1.2-1.2.6 0 0 .6-.3.5-.8-.1 0-.4 0-.4 0-.3.1-.2 1.2-.8.9 0 0 .7-1 .3-1-.1.2-.3.4-.3.6.2.2-.5.2-.4 0 0-.1.5-.6.4-1.1-.2-.1 0-1 .1-1.2-.6 0-.2-.2-.1-.6.2 0 .1 0 .1-.2" fill="#ffe62e"/><path d="m42.8 24.9l2.5-5.7-1.9-3-3.3 1.2-1.5 6c1.4.4 2.8.9 4.2 1.5" fill="#428bc1"/><path d="m39.6 19.6c1.7.4 3.3 1 4.8 1.7l-1 2.2c-1.4-.6-2.9-1.1-4.4-1.5l.6-2.4" fill="#fff"/><path d="m43.5 23.1l.6-1.5c-1.5-.7-3.1-1.2-4.7-1.6l-.4 1.5c1.6.4 3.1.9 4.5 1.6" fill="#ed4c5c"/><path d="m42 17.4l.1.6-.4.4.6.2.1.6.5-.4.6.2-.1-.6.4-.4-.6-.2-.1-.6-.4.4-.7-.2" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ed-1f1f9.svg b/riot/emojione/svg/1f1ed-1f1f9.svg new file mode 100644 index 0000000..6162c6a --- /dev/null +++ b/riot/emojione/svg/1f1ed-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#f42f4c"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#2a5f9e"/><path d="m20 22v17.4c.3-.2 23.7 0 24 .1v-17.5h-24" fill="#fff"/><g fill="#699635"><path d="m32.4 37.4c0 0 0 0 0 0"/><path d="m39.2 37.5h-14.5l-4.7 1.9v2.6h24v-2.5l-4.8-2m-1.8 3.1c0 0-1.9.7-5.5.7-3.5 0-5.5-.7-5.5-.7v-.8c0 0 1.5.7 5.5.7 4 0 5.5-.7 5.5-.7v.8"/></g><g fill="#f42f4c"><path d="m31.5 35.4c0-.3 0-.5-.1-.8l-2-2.2c-.6.1-.3 1-.1 1.4l2.2 1.6"/><path d="m28.7 33.6c-.6.2-.4 1-.2 1.5l2.6 1.5c.1-.1.3-.1.5-.1 0-.1 0-.3-.1-.6l-2.8-2.3"/><path d="m30.9 36.8l-2.6-1.5c-.3.1-.3.3-.3.6l1.2 1.8 1.6.5.1-1.4"/><path d="m34.6 33.8c.2-.4.5-1.3-.1-1.4l-2 2.3c0 .3 0 .5-.1.8l2.2-1.7"/><path d="m35.5 35.1c.2-.5.5-1.3-.2-1.5l-3 2.3c0 .2 0 .4-.1.5.2 0 .4.1.6.2l2.7-1.5"/><path d="m36 35.9c0-.3-.1-.5-.3-.5l-2.7 1.4.1 1.4 1.6-.5 1.3-1.8"/></g><path d="m32.3 27.8c0 0 0 .1 0 .4.2.5.4.9.8 1.2.2-.3.2-1.2 0-2 .3.4.8.7 1.2.8 0-.3-.2-.8-.5-1.2.6.3 1.3.5 2.1.4-.2-.3-.7-.6-1.2-.9.9.2 1.8.5 1.9.5-.1-.9-.5-.9-1.2-1.2h1.8c-.4-.8-1.9-.8-3.1-.6.7-.2 1.7-.5 1.8-.5-.3-.2-1.7-1.1-3.4.3 0 .5-.2 1-.5 1-.3 0-.5-.4-.5-1-1.7-1.3-3-.5-3.3-.2.1 0 1.1.3 1.8.5-1.2-.2-2.7-.1-3.1.6h1.8c-.7.4-1.1.4-1.2 1.2 0 0 1-.3 1.9-.5-.5.3-1 .6-1.2.9.8.1 1.6-.2 2.1-.4-.3.4-.6.9-.5 1.2.4-.1.8-.4 1.2-.8-.2.8-.2 1.6 0 2 .3-.2.5-.5.6-.9 0-.4 0-.7 0-.7h.7z" fill="#699635"/><path d="m26.5 39.8v.8c0 0 2 .7 5.5.7 3.5 0 5.5-.7 5.5-.7v-.8c0 0-1.5.7-5.5.7-4 0-5.5-.7-5.5-.7" fill="#fff"/><g fill="#2a5f9e"><path d="m29.5 32.4l-2.4-2.7c-.7.6-.7 1.5-.7 1.8l3 2.2c-.2-.3-.6-1.2.1-1.3"/><path d="m28.7 33.6l-3.6-2.8c-.5.6-.2 2.1-.1 2.4l3.5 1.9c-.2-.4-.5-1.3.2-1.5"/><path d="m23.9 34.3c0 .3-.1.6.1 1.2l3.9.4c0-.3.1-.5.3-.5l-4.5-2.5c-.2.5.1 1.3.2 1.4"/><path d="m37.6 31.5c0-.3 0-1.2-.7-1.8l-2.4 2.7c.6.1.3 1 .1 1.4l3-2.3"/><path d="m39 33.3c.1-.4.4-1.8-.1-2.4l-3.6 2.8c.6.2.4 1 .2 1.5l3.5-1.9"/><path d="m40.2 32.8l-4.5 2.5c.2.1.3.3.3.5l3.9-.4c.2-.6.1-.9.1-1.2.2 0 .5-.8.2-1.4"/><path d="m31.9 25.8c.3 0 .5-.4.5-1 0 0 0-.1 0-.1 0-.6-.2-1-.5-1-.3 0-.5.5-.5 1 0 .7.3 1.1.5 1.1"/></g><g fill="#ffe62e"><path d="m40.3 36.3l-.1-.8-1.7.2c-.2-.1-.5-.2-.8-.2-.4 0-.8.2-1.1.4l-2 .2.2.8.6-.1-.5.9-1.6.5v-1.2h-2.3v1.2l-1.6-.5-.5-.8-.1-.1.6.1.2-.8-2-.2c-.3-.3-.7-.4-1.1-.4-.3 0-.6.1-.8.2l-1.8-.2-.1.8 1.2.1c-.1.2-.2.5-.2.8 0 1 .8 1.8 1.8 1.8.8 0 1.5-.6 1.7-1.3l.3.4 2.5.7c0 .2.5.4 1.2.4.6 0 1.2-.2 1.2-.4l2.5-.7.3-.4c.2.8.9 1.3 1.7 1.3 1 0 1.8-.8 1.8-1.8 0-.3-.1-.6-.2-.8l.7-.1"/><path d="m24.6 30.5c0 .1-.1.2-.1.3l.4.2.2-.2 6.5 5.1.1.5h.7l.1-.5 6.6-5.1.2.2.4-.2c-.1-.1-.1-.2-.2-.3h.3l.6-.8-1 .4v.2h-.1c-.1-.1-.1-.1-.2-.2l-.3.3.2.2-6.4 4.7.1-.7 4.6-5.1.2.2.4-.3c-.1-.1-.1-.2-.2-.2l.3-.1.4-.9-.9.6v.2.1c-.1-.1-.2-.1-.3-.2l-.3.4.2.2-2.8 2.9.5-1.1-.3-.1-1.3 2.3 1-2.8h-.4l-1.1 3 .7-2.9h-.4l-.5 1.9c0-1-.2-5-.2-5h-.9c0 0-.1 3.6-.1 4.7l-.3-1.6h-.4l.7 2.9-1.1-3h-.4l1 2.8-1.3-2.3-.3.1.5 1.1-2.8-2.9.2-.2-.1-.4c-.1.1-.2.1-.3.2v-.1-.2l-.9-.6.4.9.3.1c-.1.1-.2.2-.2.2l.4.3.2-.2 4.5 5.1.1.7-6.3-4.7.2-.2-.4-.3c-.1.1-.2.1-.2.2h-.1v-.2l-1-.4.6.8h.3"/><path d="m23.6 33l.1-.2 7.1 4 .6-.2-7.6-4 .1-.2-.4-.3c-.1.1-.1.2-.2.2h-.1l-.1-.2-1.1-.3.7.7h.3.1c-.1.1-.1.2-.1.3l.6.2"/><path d="m41 32.6l.7-.7-1.1.3-.1.2h-.1c-.1-.1-.1-.2-.2-.2l-.2.2.1.2-7.5 4 .5.2 2.6-1.5 4.5-2.5.1.2.5-.1c0-.1-.1-.2-.1-.3h.1.2"/></g><ellipse cx="32" cy="37" rx="1.2" ry=".6" fill="#2a5f9e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ed-1f1fa.svg b/riot/emojione/svg/1f1ed-1f1fa.svg new file mode 100644 index 0000000..48b8ace --- /dev/null +++ b/riot/emojione/svg/1f1ed-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ed4c5c"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#83bf4f"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ed.svg b/riot/emojione/svg/1f1ed.svg new file mode 100644 index 0000000..6add3c7 --- /dev/null +++ b/riot/emojione/svg/1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M20.3,46.5v-29h6v11.1h11.3V17.5h6v29h-6v-13H26.4v13H20.3z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1e8.svg b/riot/emojione/svg/1f1ee-1f1e8.svg new file mode 100644 index 0000000..540234e --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 32c0 11.5 6.5 21.5 16 26.5v-53c-9.5 5-16 15-16 26.5" fill="#f9f9f9"/><path d="m62 32c0-11.5-6.5-21.5-16-26.5v53.1c9.5-5.1 16-15.1 16-26.6" fill="#ffce31"/><path d="M32,2c-5.1,0-9.8,1.3-14,3.5v53.1c4.2,2.2,8.9,3.5,14,3.5s9.8-1.3,14-3.5V5.5C41.8,3.3,37.1,2,32,2z" fill="#2a5f9e"/><path d="m23.9 38.8c0 0 0-.1 0 0m20.4-.7c.7-.7.6-2.1-.4-2.5-.2-.1-.5.2-.6.3-.2.5.5.9.1 1.3-.4.4-.5-.3-.6-.5-.2-.5-.6-.8-1.1-1.2-.9-.7-1.3-1.9-1.3-3 0-1.4.3-3.5-1.5-4-.5-.2-1 0-1.5-.1-.8-.3-1 .4-.9 1.1-.8-.2-.9.8-1.6.6.2-.4.4-.8.6-1.1.2.1.6-.1.6-.3 0-.4.5-.7.5-1.1 0-.4-.1-1-.5-1.2-.2-.7-1.3-.8-1.8-.9-.4 0-.3.2-.6-.1-.2-.2-.8-.2-1-.2.2-1.1-1.5-1.1-1.4 0-.2 0-.7 0-.9.1-.4.2-.2.4-.7.2-.2 0-.4 0-.6.1-.3-.1-1.1.2-1.3.6-.1.2-.3.3-.4.6-.1.2 0 .4-.1.6-.1.3.2 1.1.4 1.3-.1.3.2.4.5.4.3 0 .6.9.7 1.1-.3 0-.4.1-.6-.2-.2-.4-.6-.5-1-.4.1-.8-.2-1.3-1-1-.4.1-.4 0-.7-.1-.3 0-.8.2-1.1.3-1.6.9-.8 2.9-1.1 4.4-.1.6-.3 1.2-.7 1.7-.4.6-1 .9-1.4 1.4-.1.2-.4 1.1-.6 1.1-.7 0-.3-.7-.2-1 .4-.9-.9-.9-1.2-.2-.6 1.2.5 2.8 1.9 2.3 0 .3 0 .6-.4.7-.4.1-.2.9-.1 1.1.2.6.6 1.9 1.4 1.9.7 0 1.8-.1.9-1.1-.3-.4-1-.4-.8-1.1.2-.5.9-.6 1.1-1.2.3-.8.3.2.2.2-.1.2.5.6.6.8.5.8.8 1 1.7 1 .5 0 .4-.5.3-.9-.2-.4-1.1-.6-1.1-1 0-.4.4-.6.3-1.2-.1-.5-.5-.8-.9-1.1.5-.5 1.2-.7 1.7-1.2.4-.4.6-1 1-1.4 0 .8 0 1.6 0 2.3 0 .8-.1 1.8.2 2.5.7 1.5 3 1.9 4.5 1.9 1.5 0 3.8-.4 4.5-1.9.3-.7.2-1.6.2-2.3 0-.8 0-1.7 0-2.5.3 0 .6 1 .8 1.2.5.6 1.3.9 1.9 1.5-.6.4-1.4 1.3-.8 2 .5.5-.4.7-.6.9-.2.2-.8 1.3-.1 1.3.7.3 1.4-.2 1.7-.7.1-.2.8-.8.8-1 0-.3-.3-.4.1-.5.2.7 2.1 1.7.9 2.3-.3.2-1 .9-.6 1.3.2.2.7.1 1 .1.9 0 1.1-.9 1.4-1.6.1-.3.4-1 .1-1.3-.3-.3-.5-.3-.5-.9.6.1 1.3-.1 1.7-.5m-19.5-13.6c.2.3.4.6.8.8-.2.2-1.1.7-.3.9.4.1.9.1 1.3 0 .5 0 3.8-1 3.1-1.8 1.5-.2 3-.2 4.6 0-.4 1 2.5 1.8 3.1 1.8.4 0 .9.1 1.3 0 .8-.2-.1-.7-.3-.9.2-.1 1.4-1.3.6-1.4-.2 0-.5.1-.8.1-.4 0-.7-.1-1-.3-.7-.3-.5-1.2-1.2-1.5-.9-.4-2.2-.4-3.2-.4-1.1 0-2.2 0-3.4.1-.8.1-1.9.2-2.1 1.1-.2.7-.9.9-1.5.9-.4.1-1.5-.2-1 .6" fill="#fff"/><path d="m27.7 30.4h8.6v7.6c0 2.5-4.3 2.5-4.3 2.5s-4.3 0-4.3-2.5c0 0 0-7.6 0-7.6" fill="#4c86c7"/><g fill="#fff"><path d="m31.4 32.8l-1-1.1c-.2-.2-.5-.2-.6 0l-1 1.1h2.6"/><path d="m31.4 35l-1-1.1c-.2-.2-.5-.2-.6 0l-1 1.1h2.6"/><path d="m31.4 37.3l-1-1.1c-.2-.2-.5-.2-.6 0l-1 1.1h2.6"/><path d="m33.3 39.5l-1-1.1c-.2-.2-.5-.2-.6 0l-1 1.1h2.6"/><path d="m35.2 32.8l-1-1.1c-.2-.2-.5-.2-.6 0l-1 1.1h2.6"/><path d="m35.2 35l-1-1.1c-.2-.2-.5-.2-.6 0l-1 1.1h2.6"/><path d="m35.2 37.3l-1-1.1c-.2-.2-.5-.2-.6 0l-1 1.1h2.6"/></g><path d="m38.9 24.4l.1-.2c-.2.1-.4.1-.6.1-.4 0-1.6-.2-2-.9v-.1c0-.5-.3-.9-.8-.9-1.2-.2-2.4-.3-3.6-.3-1.2 0-2.4.1-3.6.3-.4.1-.8.5-.8.9v.1c-.3.7-1.6.9-2 .9-.2 0-.4 0-.6-.1l.1.2c.2.4.5.7.9.8-.1.4-.4.6-.8.7.4.1 2.6.3 4.1-1.2l-.2-.4v-.1c.9-.1 1.8-.2 2.8-.2h.1c1 0 1.9.1 2.8.2v.1l-.2.4c1.5 1.5 3.8 1.3 4.1 1.2-.3-.1-.6-.3-.8-.7.4-.2.8-.5 1-.8" fill="#a5a7a9"/><g fill="#c09b5a"><path d="m26.7 32.9c.3-.4.4-1.1.5-1.5.2-.7.4-.9 1.1-.9 0-.9-.9-.6-1.3-.1-.3.5-.6 1-1 1.5 0-.3 0-.6 0-.9.4-.4 1-.6 1.1-1.2 0-.2.2-.8 0-1-.1-.1-.5.1-.6.1-.5.1-.5-.1-.8-.1-2.1 0-1.8 2.4-1.8 3.8 0 1.2-.4 2.3-1.3 3.1-.3.3-.7.5-1 .9-.2.3-.3 1.2-.8 1.2-.6 0-.9-.7-.7-1.1.3-.7-.2-.8-.5-.1-.4 1.2.9 2.4 2 1.5-.1.5.2 1.1-.3 1.5-.4.3-.2.9.1 1.3.2.3.3 1.2.8 1.2.3.1.7 0 .9 0 0-.4-.3-.8-.8-.8-.3-.3-.4-.9-.2-1.2.1-.1 1.6-1.6 1.3-1.6.2 0 .7.1.8.4.1.3 0 .3-.1.5.2.1.4.3.5.5.2.3.4.9.8.9.2.1.6 0 .8 0 0-.9-1.5-.8-1.1-1.8.1-.3.5-.5.2-.9-.2-.4-.7-.8-1.1-.9.8-.9 2.2-1.3 2.5-2.5 1-.8 1-1.2 1-2.3-.3 0-.4.3-.4.5 0 .4-.2.6-.5.8-.1-.5-.1-.7-.1-.8"/><path d="m44 36c-.1-.1-.2-.1-.4 0-.2.2.1.4.1.6.2.5-.1 1.1-.7 1.1-.4 0-.4-.4-.5-.7-.2-.5-.5-.8-.8-1.1-1.5-1.1-1.7-2.8-1.7-4.5 0-.6.1-1.3-.3-1.9-.2-.4-.6-.6-1-.7-.2 0-.4-.1-.5-.1-.2 0-.4.2-.5.2-.2-.1-.8-.4-.9-.1-.1.3 0 .8.1 1.1.2.4.7.6 1 .9 0 .3 0 .6 0 .9-.3-.4-.6-.9-.9-1.3-.1-.1-.2-.3-.3-.4-.3-.5-1.1-.2-1.1.4.6 0 .9.2 1.1.9.1.6.5 1.4.4 1.9-.3-.2-.5-.4-.5-.8 0-.2-.1-.5-.4-.5 0 1.1 0 1.5 1 2.3.3 1.2 1.7 1.7 2.5 2.5-.5.2-.8.5-1.1.9-.2.5.1.6.2 1 .4 1-1.1.9-1.1 1.8.8 0 1 0 1.5-.7.1-.2.3-.4.5-.6.3-.2 0-.1 0-.4 0-.5.4-.5.8-.6.1 0 .2.6.3.7.2.4.6.4.9.7.3.4.3 1 0 1.4-.3.3-.8.2-.8.8.3 0 .7.1.9 0 .5 0 .6-.9.8-1.2.3-.4.5-1 .1-1.3-.5-.4-.3-.9-.3-1.5 1.2 1.3 2.7-.6 1.6-1.7"/></g><path d="m32 26.8c1 0 3.1.3 3.9 1-.8 2.1-2.1 1.3-3.9 1.3-1.8 0-3.1.9-3.9-1.3.8-.8 2.9-1 3.9-1" fill="#ed4c5c"/><g fill="#c8b100"><path d="m34.7 29.1c-.7-.4-1.6-.5-2.7-.5-1 0-2 .1-2.6.5l.2 1c.6.2 1.5.3 2.4.3.9 0 1.8-.1 2.4-.3l.3-1"/><path d="m35.6 26.6c-.2-.2-.6-.3-1-.3-.2 0-.3 0-.5.1 0 0-.3-.5-1.1-.5-.3 0-.5.1-.7.2 0-.1-.1-.2-.3-.2s-.3.1-.3.2c-.2-.1-.4-.2-.7-.2-.7 0-1.1.5-1.1.5-.1 0-.3-.1-.5-.1-2.5 0-1.2 1.8-1.2 1.8l.2-.4c-.6-.8-.1-1.3 1-1.3.1 0 .3 0 .4 0-.4.6.3 1.1.3 1.1l.2-.3c-.3-.2-.3-1.2.7-1.2.3 0 .5.1.7.2 0 .1-.1.9-.1 1l.4.4.4-.4c-.1-.2-.1-1-.1-1 .2-.1.4-.2.7-.2 1.1 0 1.1 1 .7 1.3l.2.3c0 0 .6-.5.3-1.1.1 0 .3 0 .4 0 1.3 0 1.4 1.1 1 1.3l.2.4c0-.1.5-.9-.2-1.6"/></g><path d="m31.7 25.5c0-.2.2-.4.3-.4s.3.2.3.4-.2.4-.3.4-.3-.2-.3-.4" fill="#005bbf"/><path fill="#c8b100" d="m31.9 24.5v.2h-.1v.2h.1v.2.3h-.2v.1.1h.7v-.1-.1h-.3v-.3-.2h.2v-.2h-.2v-.2z"/><path d="m32 30.3c-.9 0-1.6-.1-2.2-.3.6-.2 1.4-.3 2.2-.3.9 0 1.6.1 2.2.3-.5.2-1.3.3-2.2.3" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1e9.svg b/riot/emojione/svg/1f1ee-1f1e9.svg new file mode 100644 index 0000000..d92e0a0 --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 62c16.6 0 30-13.4 30-30h-60c0 16.6 13.4 30 30 30" fill="#f9f9f9"/><path d="m31.8 2c-16.6 0-30 13.4-30 30h60c0-16.6-13.4-30-30-30" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1ea.svg b/riot/emojione/svg/1f1ee-1f1ea.svg new file mode 100644 index 0000000..c3f32f7 --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M1.8,32c0,13.1,8.4,24.2,20,28.3V3.7C10.1,7.8,1.8,18.9,1.8,32z" fill="#83bf4f"/><path d="m61.8 32c0-13.1-8.4-24.2-20-28.3v56.6c11.6-4.1 20-15.2 20-28.3" fill="#ff8736"/><path d="m21.8 60.3c3.1 1.1 6.5 1.7 10 1.7s6.9-.6 10-1.7v-56.6c-3.2-1.1-6.5-1.7-10-1.7s-6.9.6-10 1.7v56.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f1.svg b/riot/emojione/svg/1f1ee-1f1f1.svg new file mode 100644 index 0000000..4118fdf --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#f9f9f9"><path d="m52.1 10c-5.4-5-12.5-8-20.4-8s-15 3-20.4 8h40.8"/><path d="m11.3 54c5.4 5 12.5 8 20.4 8s15-3 20.4-8h-40.8"/><path d="m1.7 32c0 4.3.9 8.3 2.5 12h55c1.6-3.7 2.5-7.7 2.5-12s-.9-8.3-2.5-12h-55c-1.6 3.7-2.5 7.7-2.5 12"/></g><g fill="#428bc1"><path d="m11.4 54h40.7c3-2.8 5.5-6.2 7.1-10h-55c1.7 3.8 4.2 7.2 7.2 10"/><path d="m52.1 10h-40.7c-3 2.8-5.5 6.2-7.1 10h55c-1.7-3.8-4.2-7.2-7.2-10"/><path d="m40.7 27h-6l-3-5-3 5h-6l3 5-3 5h6l3 5 3-5h6l-3-5 3-5m-9-2.1l1.3 2.1h-2.5l1.2-2.1m-6.3 3.6h2.5l-1.2 2.1-1.3-2.1m0 7l1.2-2.1 1.2 2.1h-2.4m6.3 3.6l-1.2-2.1h2.5l-1.3 2.1m2.2-3.6h-4.2l-2.2-3.5 2.1-3.5h4.2l2.2 3.5-2.1 3.5m4.2 0h-2.5l1.2-2.1 1.3 2.1m-1.2-5l-1.2-2.1h2.5l-1.3 2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f2.svg b/riot/emojione/svg/1f1ee-1f1f2.svg new file mode 100644 index 0000000..17632dc --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.6-13.4,30-30,30S2,48.6,2,32S15.4,2,32,2S62,15.4,62,32" fill="#ed4c5c"/><path fill="#fff" d="m49.3 22.8l-5.1-.3-.4-.3-1.1.9.2.8-.4 1.3-2.2 4.8-.2 1 .1 1-.5.2-5.1-2.7-.2.2.2-.2-1.7-5.2-2.2-3.7-1.9-.2-1.5 1.1-6.7 2.8-1.6-.5-2.6-2.4-.8.4 2.6 4.4v.5l1.3.4.6-.6 1.2-.4 5.3-.7.9-.4.9-.7.4.3.5 5.5-3.8 3.8-2.2 3.7.7 1.8 1.7.7 5.5 4.7.3 1.6-.9 3.5.7.5 2.7-4.3.4-.2-.2-1.4-.8-.2-.9-.9-3-4.4-.9-.7-.9-.4.1-.5 4.6-3h.1l5.2 1.5 4.3.2 1.2-1.6-.1-1.8 1.3-7.1 1.3-1 3.5-.9.1-.9"/><path fill="#ffe606" d="m24 37.6l1.7.1.6-.3.4-.5.4.1.1 1.5-.6.1-.4-.4-1-.1-.9.4-.5-.2z"/><g fill="#f9dd19"><path d="m32.9 47.4l-1.7.3-.2.8 1.7-.5.2-.6"/><path d="m46.5 22.7l-.7.1 1.1 1.3.8-.2-1.2-1.2"/><path d="m40.9 32.1l-1.2.8v.5l.6.1.6.4.8 1.5.7-.1-.1-.6-.4-.4-.3-.2-.5-.9.2-.6-.4-.5"/><path d="m17.4 22.5l-.3 1.7.5.4.4-1.6-.6-.5"/><path d="m29.8 20.7l-.4.4-.1.9-.5.9-.6.2-.1.6 1.3.6.4-.4-.3-.5v-.7l.9-1.5-.6-.5"/></g><path d="m32.4 34.4l-.1.1v.1h.5l-.4-.2m-3.2-4.7l-.2.6.2-.2v-.4m5.4-.9l-.2.1.2.6-.2.2.2-.2.1.1.1-.1-.2-.7" fill="#f9db17"/><path fill="#f9dd19" d="m34.4 28.9l-2.3 1.8-2.9-1 .1.4-.2.2 2.5 1.1.7 3.1.1-.1h.1l.4.2h.1l-.4-3.2 2.1-1.8-.1-.1-.2.2.2-.2-.2-.6"/><g fill="#f9dd16"><path d="m19.5 26l.5 1.5h1.6l-1.3.9.5 1.5-1.3-.9-1.3.9.5-1.5-1.3-.9h1.6z"/><path d="m41.7 20.5l.5 1.5h1.6l-1.3 1 .5 1.5-1.3-1-1.3 1 .5-1.5-1.3-1h1.6z"/><path d="m35.2 41.5l.5 1.5h1.6l-1.3 1 .5 1.5-1.3-.9-1.2.9.4-1.5-1.2-1h1.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f3.svg b/riot/emojione/svg/1f1ee-1f1f3.svg new file mode 100644 index 0000000..0f8b13d --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M31.8,2C18.8,2,7.7,10.4,3.6,22h56.6C56,10.4,44.9,2,31.8,2z" fill="#f2b200"/><path d="M31.8,62c13.1,0,24.2-8.3,28.3-20H3.6C7.7,53.7,18.8,62,31.8,62z" fill="#83bf4f"/><path d="m3.6 22c-1.1 3.1-1.7 6.5-1.7 10s.6 6.9 1.7 10h56.6c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10h-56.6" fill="#fff"/><circle cx="31.8" cy="32" r="8" fill="#428bc1"/><circle cx="31.8" cy="32" r="7" fill="#fff"/><g fill="#428bc1"><circle cx="29.2" cy="25.5" r=".5"/><circle cx="27.6" cy="26.4" r=".5"/><circle cx="26.3" cy="27.7" r=".5"/><circle cx="25.4" cy="29.3" r=".5"/><circle cx="24.9" cy="31.1" r=".5"/><circle cx="24.9" cy="32.9" r=".5"/><circle cx="25.4" cy="34.7" r=".5"/><circle cx="26.3" cy="36.3" r=".5"/><circle cx="27.6" cy="37.6" r=".5"/><circle cx="29.2" cy="38.5" r=".5"/><circle cx="30.9" cy="38.9" r=".5"/><path d="m32.3 39c0-.3.2-.5.4-.6.3 0 .5.2.6.4 0 .3-.2.5-.4.6-.4.1-.6-.1-.6-.4"/><circle cx="34.5" cy="38.5" r=".5"/><circle cx="36.1" cy="37.6" r=".5"/><circle cx="37.4" cy="36.3" r=".5"/><circle cx="38.3" cy="34.7" r=".5"/><circle cx="38.8" cy="32.9" r=".5"/><path d="m38.8 31.6c-.3 0-.5-.2-.6-.4 0-.3.2-.5.4-.6.3 0 .5.2.6.4.1.3-.1.5-.4.6"/><circle cx="38.3" cy="29.3" r=".5"/><circle cx="37.4" cy="27.7" r=".5"/><circle cx="36.1" cy="26.4" r=".5"/><path d="m35 25.7c-.1.3-.4.4-.7.3-.3-.1-.4-.4-.3-.7.1-.3.4-.4.7-.3.3.2.4.5.3.7"/><path d="m33.2 25.1c0 .3-.3.5-.6.4-.3 0-.5-.3-.4-.6 0-.3.3-.5.6-.4.3.1.5.4.4.6"/><path d="m31.4 25c0 .3-.2.5-.4.6-.3 0-.5-.2-.6-.4 0-.3.2-.5.4-.6.3-.1.6.1.6.4"/><circle cx="31.8" cy="32" r="1.5"/><path d="m31.8 25l-.2 4.3.2 2.7.3-2.7z"/><path d="m30 25.2l.9 4.3.9 2.5-.4-2.7z"/><path d="m28.3 25.9l2 3.9 1.5 2.2-1.1-2.5z"/><path d="m26.9 27l2.9 3.3 2 1.7-1.7-2.1z"/><path d="m25.8 28.5l3.6 2.4 2.4 1.1-2.2-1.6z"/><path d="m25.1 30.2l4.1 1.3 2.6.5-2.5-.9z"/><path d="m24.8 32l4.4.2 2.6-.2-2.6-.2z"/><path d="m25.1 33.8l4.2-.9 2.5-.9-2.6.5z"/><path d="m25.8 35.5l3.8-1.9 2.2-1.6-2.4 1.1z"/><path d="m26.9 36.9l3.2-2.8 1.7-2.1-2 1.7z"/><path d="m28.3 38.1l2.4-3.7 1.1-2.4-1.5 2.2z"/><path d="m30 38.8l1.4-4.1.4-2.7-.9 2.5z"/><path d="m31.8 39l.3-4.3-.3-2.7-.2 2.7z"/><path d="m33.6 38.8l-.8-4.3-1-2.5.5 2.7z"/><path d="m35.3 38.1l-1.9-3.9-1.6-2.2 1.2 2.5z"/><path d="m36.8 36.9l-2.9-3.2-2.1-1.7 1.8 2.1z"/><path d="m37.9 35.5l-3.6-2.4-2.5-1.1 2.2 1.6z"/><path d="m38.6 33.8l-4.1-1.3-2.7-.5 2.6.9z"/><path d="m38.8 32l-4.3-.3-2.7.3 2.7.2z"/><path d="m38.6 30.2l-4.2.9-2.6.9 2.7-.5z"/><path d="m37.9 28.5l-3.9 1.9-2.2 1.6 2.5-1.1z"/><path d="m36.8 27.1l-3.2 2.8-1.8 2.1 2.1-1.7z"/><path d="m35.3 25.9l-2.3 3.7-1.2 2.4 1.6-2.2z"/><path d="m33.7 25.2l-1.4 4.1-.5 2.7 1-2.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f4.svg b/riot/emojione/svg/1f1ee-1f1f4.svg new file mode 100644 index 0000000..04d9b4e --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m26.8 6.1c-3.6 0-4.7-1-6.8-1.6-2.4 1-4.6 2.4-6.7 4 .8-.2 1.8-.3 3.1-.3 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 2 0 3.2-.3 4.3-.7-1.5-1.3-3.1-2.5-4.9-3.5-4.7-.1-4.8-2-9.8-2-5.2.1-5.2 2.1-10.4 2.1" fill="#fff"/><g fill="#2a5f9e"><path d="m47.6 10.2c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2 4.1 0 4.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 3.9 0 4.9-1.1 7.3-1.7-.9-1.1-2-2.1-3-3.1-1.1.4-2.3.7-4.3.7"/><path d="m37.2 4.1c5 0 5.2 1.8 9.9 2-4.4-2.6-9.6-4-15-4-4.3 0-8.8 4.1-5.2 4.1 5.1-.1 5.1-2.1 10.3-2.1"/></g><path d="m47.6 14.3c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-4.5 0-5.1 1.5-8.6 1.9-1 1.3-1.8 2.7-2.6 4.2.2 0 .5 0 .8 0 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.1 0 5.2-1.9 10.1-2-.8-1.4-1.7-2.6-2.8-3.8-2.4.6-3.4 1.7-7.3 1.7" fill="#fff"/><path d="m47.6 18.5c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2 4.1 0 4.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 .7 0 1.3 0 1.8.1-.6-1.5-1.3-2.9-2.1-4.2-4.9.1-5 2-10.1 2" fill="#2a5f9e"/><path d="m58 20.6c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1 0-1.8-.1-2.4-.2-.4 1.2-.8 2.5-1 3.8.9.3 2 .5 3.5.5 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.4 0 2.4.1 3.2.3-.4-1.5-.8-2.9-1.4-4.3-.6 0-1.2-.1-1.9-.1" fill="#fff"/><path d="m58 24.8c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2 4.1 0 4.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.8 0 2.9.2 3.9.5-.1-1.4-.3-2.9-.7-4.2-.8-.3-1.8-.4-3.2-.4" fill="#2a5f9e"/><path d="m58 28.9c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1.8 0-3-.2-4-.5 0 .5 0 1 0 1.6 0 .8 0 1.7.1 2.5 1 .3 2.1.6 3.9.6 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.8 0 3 .2 4 .5 0-.5 0-1 0-1.6 0-.8 0-1.6-.1-2.5-1-.3-2.1-.6-3.9-.6" fill="#fff"/><path d="m58 33.1c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1.8 0-2.9-.2-3.9-.5.1 1.4.3 2.9.7 4.2.8.2 1.8.4 3.2.4 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1.5 0 2.6.2 3.5.4.2-1.3.4-2.6.5-3.9-1-.3-2.2-.6-4-.6" fill="#2a5f9e"/><path d="m58 37.2c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-1.4 0-2.4-.1-3.2-.3.4 1.5.8 2.9 1.4 4.3.5.1 1.1.1 1.8.1 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 1 0 1.8.1 2.4.2.4-1.2.8-2.5 1-3.8-.8-.3-1.9-.5-3.4-.5" fill="#fff"/><path d="m58 41.4c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-.7 0-1.3 0-1.8-.1.6 1.5 1.3 2.9 2.1 4.2 4.9-.1 5-2 10.1-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 .3 0 .5 0 .8 0 .6-1.3 1.2-2.6 1.7-3.9-.7-.2-1.5-.2-2.5-.2" fill="#2a5f9e"/><path d="m58 45.5c-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-5.1 0-5.2 1.9-10.1 2 .8 1.4 1.7 2.6 2.8 3.8 2.5-.6 3.4-1.7 7.3-1.7 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 4.5 0 5.1-1.5 8.6-1.9 1-1.3 1.8-2.7 2.6-4.2-.3 0-.5 0-.8 0" fill="#fff"/><path d="m47.6 51.7c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-3.9 0-4.9 1.1-7.3 1.7.9 1.1 2 2.2 3 3.1 1.1-.4 2.3-.7 4.3-.7 5.2 0 5.2 2 10.4 2 5.2 0 5.2-2 10.4-2 5.2 0 5.2 2 10.4 2 1.3 0 2.3-.1 3.1-.3 2.1-1.7 3.9-3.6 5.5-5.7-3.5.3-4.1 1.9-8.6 1.9" fill="#2a5f9e"/><path d="m47.6 55.8c-5.2 0-5.2-2-10.4-2-5.2 0-5.2 2-10.4 2-5.2 0-5.2-2-10.4-2-2 0-3.2.3-4.3.7 1.5 1.3 3.1 2.5 4.8 3.5 4.6.1 4.8 2 9.8 2 5.2 0 5.2-2 10.4-2 3.6 0 4.7 1 6.8 1.6 2.4-1 4.6-2.4 6.7-4-.8.1-1.7.2-3 .2" fill="#fff"/><path d="m26.8 59.9c-5 0-5.2-1.8-9.9-2 4.4 2.6 9.6 4 15 4 4.3 0 8.3-.9 12-2.5-2.1-.6-3.2-1.6-6.8-1.6-5.1.1-5.1 2.1-10.3 2.1" fill="#2a5f9e"/><path d="m54.4 24.6l3.9.1c-1-1.8-4.3-1.9-7-1.4 1.7-.5 3.7-1.1 4.1-1.2-.8-.6-4.3-2.8-8.7 1.6h-.1c-4.4-4.4-7.9-2.2-8.7-1.6.3.1 2.4.6 4.1 1.2-2.7-.4-6-.3-7 1.4l3.9-.1c-1.6.8-2.5.9-2.8 2.8.1 0 2.1-.6 4.2-1.1-1.1.6-2.2 1.3-2.6 2 1.9.1 3.5-.4 4.8-1-.8 1-1.2 2.1-1.2 2.7.9-.2 1.9-1 2.7-1.8-.5 1.8-.4 3.7.1 4.4.8-.6 1.3-1.6 1.7-2.7v1.1h1.7l-.1-1.5c.4 1.3 1 2.5 1.9 3.2.5-.8.6-2.6.1-4.4.8.8 1.7 1.6 2.7 1.8.1-.6-.4-1.7-1.2-2.7 1.2.6 2.9 1.1 4.8 1-.5-.7-1.5-1.4-2.6-2 2.1.6 4.1 1.1 4.2 1.1-.3-2-1.2-2.1-2.9-2.9" fill="#75a843"/><path fill="#c94747" d="m45.4 28.2h2.7v21.8h-2.7z"/><path d="m40.3 42.1l2.2 2.3h8.1l2.2-2.3.2-3.4-5.3-1.6.5-.4-1.7-1-1.7 1 .5.4-4.8 1.2-.2 3.8m11.5-2.8l-1.3 2-1.3-.5-1.6-.3v-2.9l4.2 1.7m-10.4 0l4.2-1.7v2.9l-1.6.3-1.3.5-1.3-2" fill="#f1bf31"/><path fill="#2a5f9e" d="m11 11h21v21h-21z"/><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f6.svg b/riot/emojione/svg/1f1ee-1f1f6.svg new file mode 100644 index 0000000..c260e29 --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.3,3.7,22h56.6C56.2,10.3,45.1,2,32,2z" fill="#c94747"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#3e4347"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/><g fill="#699635"><path d="m44.7 26.6c-.2-.1-.4-.2-.4-.3-.1-.1 0-.1.4 0 .7.2 1.2.1 1.7-.3l.4-.4.5.2c.3.1.6.2.6.2.2-.1.7-.6.6-.8 0-.2.2-.2.3.1.2.5-.1 1.1-.6 1.2-.2.1-.5 0-.8-.1-.5-.2-.5-.2-.8 0-.5.5-1.2.5-1.9.2"/><path d="m46.5 24.9c-.2-.2-.4-1.1-.3-1.3.1-.2.1-.2.3-.2.3.1.4.3.3 1 0 .6-.1.7-.3.5"/><path d="m25.1 24.3c-.1.4.7 1.5 1.1 1.6-.2.1-.5.1-.8.2-1.3 1.3-5.8 5.7-6.7 6.8 2.5 0 5.2 0 7.5-.1 0-1.7 1.6-1.8 2.7-2.4.5.9 1.9.8 2.1 2.1 0 1.6 0 3.9 0 5.6-7 0-14.2 0-21.2 0-.3 1.6-1.7 2.9-3.8 2.4.6-.7 1.7-.9 2.1-1.8.3-2-.7-3.3-1.3-4.4 1-.4 1.2-.5 2.3-1.2-.7 2.3 1.9 2 3.9 2 .1-.8 0-1.7-.6-1.8.8-.3.9-.4 2.1-1.4 0 .9 0 2.1 0 3 4.7 0 9.8 0 14.7 0 0-1 .3-2.5-.5-2.5-.7 0 0 2-.6 2s-7.5 0-11.3 0c0-.4 0-1.3 0-1.9.5-.5.4-.4 3.7-3.7.3-.5 2.6-2.6 4.6-4.5"/><path d="m53.4 24.2c.8.4 1.4 1 2.4 1.3-.1.4-.5.6-.6 1 0 2.8 0 5.7 0 8.5 1.1.2 1.3-.4 1.8-.7.1 1.4 1 2.7 1 3.8-1.5 0-3.1 0-4.6 0 0-4.6 0-9.3 0-13.9"/><path d="m47.2 28.8c0 0 1.7-1.4 1.7-1.5 0 2.4 0 5 0 7.5h1.2c0-2.8 0-5.7 0-8.4.5-.5 1.5-1.2 1.7-1.7 0 5.1 0 9.4 0 13.4-3.4 0-9.8 0-10.6 0-.2-2.8-.2-5.6 3-5 0-.5 0-.8 0-1.1-.1-.2-.3 0-.3-.2.5-.5.7-.6 2.1-1.9 0 1.5 0 4.9 0 4.9.3 0 1 0 1.2 0 0 0 0-5.8 0-6m-4 5.9c.2.3 1 .3 1-.2-.1-.5-1.1-.3-1 .2"/><circle cx="12.5" cy="39.7" r=".6"/><path d="m32.5 24.2c.8.4 1.4 1 2.4 1.3-.1.4-.5.6-.6 1 0 2.8 0 5.7 0 8.5 1.1.2 1.3-.4 1.8-.7.1 1.4 1 2.7 1 3.8-1.5 0-3.1 0-4.6 0 0-4.6 0-9.3 0-13.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f7.svg b/riot/emojione/svg/1f1ee-1f1f7.svg new file mode 100644 index 0000000..d7b36f5 --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.3,3.7,22h56.6C56.2,10.3,45.1,2,32,2z" fill="#83bf4f"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#ed4c5c"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/><g fill="#fff"><path d="m59.4 44.3c-.1.2-.2.4-.3.6h.3v-.6"/><path d="m4.9 44.9c-.1-.2-.2-.4-.3-.6v.6h.3"/><path d="m5.6 18.8h-.5c-.1.1-.2.2-.2.3h.7v-.3"/><path d="m5.6 21v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3v1.9h-.6v-1.9h-.3v1.9h-.6v-1.9h-.3v1h-1.6c-.1.2-.2.5-.3.7v.6h1.3"/><path d="m5.6 44.9h-.7c0 .1.1.2.2.3h.6l-.1-.3"/><path d="m4.6 44.3h1.5v.9h2.2v-2.3h-.3v1.9h-.6v-1.9h-.3v1.9h-.6v-1.9h-.3v1h-1.7c0 .2.1.3.1.4"/><path d="m5.6 43h-1.5c0 .1.1.2.1.3h1.4v-.3"/><path d="m13.6 21h1.4v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3v2h-.6v-2h-.4v2h-.6v-2h-.3v1h-1.9z"/><path d="m13 21v-1.3h-1.3v.4h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.5v.9z"/><path d="m9.8 20.7h.5v.3h-.5z"/><path d="m8.9 18.8h6.1v.3h-6.1z"/><path d="m11.7 44.3h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.5v.9h2.2v-1.3h-1.3z"/><path d="m9.8 44.9h.5v.3h-.5z"/><path d="m8.9 43h6.1v.3h-6.1z"/><path d="m17.4 44.9h-.6v-2h-.4v2h-.6v-2h-.3v1h-1.9v1.3h1.4v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3z"/><path d="m23 21h1.3v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3v2h-.6v-2h-.3v2h-.6v-2h-.4v1h-1.8z"/><path d="m22.4 21v-1.3h-1.4v.4h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.6v.9z"/><path d="m18.2 18.8h6.1v.3h-6.1z"/><path d="m19.2 20.7h.5v.3h-.5z"/><path d="m26.7 44.9h-.6v-2h-.3v2h-.6v-2h-.4v1h-1.8v1.3h1.3v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3z"/><path d="m19.2 44.9h.5v.3h-.5z"/><path d="m18.2 43h6.1v.3h-6.1z"/><path d="m21 44.3h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.6v.9h2.2v-1.3h-1.4z"/><path d="m31.7 21v-1.3h-1.3v.4h1v.6h-1.6v-1h-2.2v1.4h.4v-1h1.5v.9z"/><path d="m27.6 18.8h6.1v.3h-6.1z"/><path d="m28.5 20.7h.5v.3h-.5z"/><path d="m32.3 21h1.3v-.3h-1v-.6h1.6v.9h2.2v-2.3h-.4v2h-.6v-2h-.3v2h-.6v-2h-.3v1h-1.9z"/><path d="m27.6 43h6.1v.3h-6.1z"/><path d="m30.4 44.3h1v.6h-1.6v-1h-2.2v1.4h.4v-1h1.5v.9h2.2v-1.3h-1.3z"/><path d="m28.5 44.9h.5v.3h-.5z"/><path d="m36 44.9h-.6v-2h-.3v2h-.6v-2h-.3v1h-1.9v1.3h1.3v-.3h-1v-.6h1.6v.9h2.2v-2.3h-.4z"/><path d="m37.8 20.7h.5v.3h-.5z"/><path d="m36.9 18.8h6.1v.3h-6.1z"/><path d="m41.6 21h1.4v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3v2h-.6v-2h-.4v2h-.6v-2h-.3v1h-1.9z"/><path d="m41 21v-1.3h-1.3v.4h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.5v.9z"/><path d="m36.9 43h6.1v.3h-6.1z"/><path d="m45.4 44.9h-.6v-2h-.4v2h-.6v-2h-.3v1h-1.9v1.3h1.4v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3z"/><path d="m39.7 44.3h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.5v.9h2.2v-1.3h-1.3z"/><path d="m37.8 44.9h.5v.3h-.5z"/><path d="m50.4 21v-1.3h-1.4v.4h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.6v.9z"/><path d="m47.2 20.7h.5v.3h-.5z"/><path d="m46.2 18.8h6.1v.3h-6.1z"/><path d="m51 21h1.3v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3v2h-.6v-2h-.3v2h-.6v-2h-.4v1h-1.8z"/><path d="m47.2 44.9h.5v.3h-.5z"/><path d="m49 44.3h1v.6h-1.5v-1h-2.2v1.4h.3v-1h1.6v.9h2.2v-1.3h-1.4z"/><path d="m46.2 43h6.1v.3h-6.1z"/><path d="m54.7 44.9h-.6v-2h-.3v2h-.6v-2h-.4v1h-1.8v1.3h1.3v-.3h-1v-.6h1.5v.9h2.2v-2.3h-.3z"/><path d="m55.6 19.1h3.5c-.1-.1-.1-.2-.2-.3h-3.4c.1 0 .1.3.1.3"/><path d="m58.4 20.1h1v.6h-1.5v-.9h-2.2v1.3h.3v-1h1.5v.9h2.2v-.5c-.1-.2-.2-.5-.3-.7h-1v.3"/><path d="m56.5 20.7h.5v.3h-.5z"/><path d="m56.5 44.9h.5v.3h-.5z"/><path d="m55.6 43v.3h4.2c0-.1.1-.2.1-.3h-4.3"/><path d="m58.4 44.3h1c.1-.1.1-.2.2-.4h-1.2v.4"/><path d="m57.8 44.9v-.9h-2.2v1.3h.4v-1h1.5v.9h1.4c.1-.1.1-.2.2-.3 0 0-1.3 0-1.3 0"/></g><g fill="#ed4c5c"><path d="m36.5 33.9c.9-2.6 0-5.5-2-7.3 2.3 3.4 1.4 7.9-1.8 10.3l.2-5.6v-4.4c-.4-.2-.7-.4-.9-.7-.2.3-.5.6-.9.7v4.4l.2 5.6c-3.3-2.4-4.1-6.9-1.8-10.3-2.1 1.8-2.9 4.7-2 7.3.6 1.8 1.8 3.1 3.3 3.9-.9.3-1.9.5-2.9.5 1.2.4 2.4.4 3.5.2v.2l.6.8.6-.8v-.2c1.1.2 2.3.2 3.5-.2-1 0-2-.1-2.9-.5 1.5-.8 2.7-2.2 3.3-3.9"/><path d="m38.7 29.1c-.8-1.3-2.1-2.3-3.6-2.7 3.3 2.5 4 7.2 1.5 10.5 2.8-1.5 3.7-5 2.1-7.8"/><path d="m28.8 26.4c-1.5.4-2.8 1.3-3.6 2.7-1.6 2.7-.6 6.2 2.1 7.8-2.4-3.3-1.8-8 1.5-10.5"/><path d="m30.5 26c.5.3 1.2.2 1.5-.3.3.5 1 .6 1.5.3.4-.3.6-.8.4-1.3-.1.6-.6.9-1.2.8-.3-.1-.5-.2-.7-.5-.1.3-.4.4-.7.5-.6.1-1.1-.3-1.2-.8-.2.5 0 1 .4 1.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f8.svg b/riot/emojione/svg/1f1ee-1f1f8.svg new file mode 100644 index 0000000..485bbd0 --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m61.7 28c-.1-1-.3-2-.6-3h-58.3c-.2 1-.4 2-.6 3h59.5"/><path d="m2.3 36c.1 1 .3 2 .6 3h58.3c.2-1 .4-2 .6-3h-59.5"/><path d="m20 4.5c-1 .4-2 1-3 1.5v52c1 .6 2 1.1 3 1.5v-55"/><path d="m28 2.3v59.5c1 .1 2 .2 3 .3v-60.1c-1 0-2 .1-3 .3"/></g><g fill="#ed4c5c"><path d="m2 32c0 1.4.1 2.7.3 4h59.5c.2-1.3.3-2.6.3-4 0-1.4-.1-2.7-.3-4h-59.5c-.2 1.3-.3 2.6-.3 4"/><path d="m20 59.5c2.5 1.1 5.2 1.9 8 2.2v-59.4c-2.8.4-5.5 1.1-8 2.2v55"/></g><g fill="#2a5f9e"><path d="M17,25V6C10,10.1,4.8,16.9,2.8,25H17z"/><path d="M17,39v19C10,53.9,4.8,47.1,2.8,39H17z"/><path d="M32,2c-0.3,0-0.7,0-1,0v23h30.2C58,11.8,46.2,2,32,2z"/><path d="m31 39v23c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee-1f1f9.svg b/riot/emojione/svg/1f1ee-1f1f9.svg new file mode 100644 index 0000000..f14b065 --- /dev/null +++ b/riot/emojione/svg/1f1ee-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M1.7,32c0,13.1,8.4,24.2,20,28.3V3.7C10.1,7.8,1.7,18.9,1.7,32z" fill="#75a843"/><path d="m61.7 32c0-13.1-8.4-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="m21.7 60.3c3.1 1.1 6.5 1.7 10 1.7s6.9-.6 10-1.7v-56.6c-3.1-1.1-6.5-1.7-10-1.7s-6.9.6-10 1.7v56.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ee.svg b/riot/emojione/svg/1f1ee.svg new file mode 100644 index 0000000..dc8d231 --- /dev/null +++ b/riot/emojione/svg/1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m35 46.5h-6v-29h6v29" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ef-1f1ea.svg b/riot/emojione/svg/1f1ef-1f1ea.svg new file mode 100644 index 0000000..d71bf48 --- /dev/null +++ b/riot/emojione/svg/1f1ef-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55.2 13h-4.2v-4.2c-11-9-27-9-38 0v4.2h-4.2c-9 11-9 27 0 38h4.2v4.2c11 9 27 9 38 0v-4.2h4.2c9.1-11 9.1-27 0-38" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="m32 27.8l-19-19c-.8.6-1.5 1.3-2.2 2-.7.7-1.4 1.5-2 2.2l19 19-19 19c.6.8 1.3 1.5 2 2.2.7.7 1.5 1.4 2.2 2l19-19 19 19c.8-.6 1.5-1.3 2.2-2 .7-.7 1.4-1.5 2-2.2l-19-19 19-19c-.6-.8-1.3-1.5-2-2.2-.7-.7-1.5-1.4-2.2-2l-19 19"/><path d="m37.1 10.7c1.3 5.1.6 11.4-5.1 14.8-5.7-3.5-6.4-9.8-5.1-14.8 1.3-1.3 7.4-2 10.2 0"/></g><g fill="#ffe62e"><path d="m36.9 13.2c0-.1-.1-.2-.2-.1-.4.1-1.5.1-1.8-.2.5.2 1.2-.2 1.2-.6 0-.4-.5-.8-1.6-.5-1 .2-2.3.1-2.3-.2 0-.3.9-.4 1.4-.3.5.1.8.1 1.7-.2-.2.1-.9.1-1.5 0-.5-.2-1.9-.2-1.9.6 0 .7 1.4.7 2.7.5.7-.1 1.1 0 1.1.2 0 .2-.7.3-1.2.3s-1-.1-1.6.1c-1.1.4-2.3.1-2.7-.4 0-.1 0-.1 0-.2.1-.1.2-.2.2-.3.1-.3 0-.3-.3-.1-.1-.1-.3-.2-.6-.2-.3 0-.5.1-.6.2-.3-.1-.4-.1-.3.1 0 .1.1.3.2.3 0 .4.4 1 .4 1-.6-.1-1.3-1.1-1.5-1.6-.1-.2-.3-.3-.4-.3-.1 0-.2.1-.1.2s.2.1.2.3c-.1-.2-.3-.2-.4-.1-.1.1 0 .2.1.2.2 0 .1.2.2.3-.2-.2-.3-.2-.4-.1-.1.1 0 .2.1.2.2 0 .8.9 2.3 1.7 0 .1-.3.1-.5.1-.4 0-.8 0-1.1-.3-.2-.2-.5-.4-.7-.3-.1.1 0 .2.1.2.1 0 .2 0 .3.1-.2-.1-.3 0-.4 0-.1.1 0 .2.1.2.1 0 .3-.1.4 0-.1 0-.3 0-.3.1s0 .2.1.2c.2 0 1.8 1 3.1-.2.2 0 1.5 0 2-.4.3.4.4.4.7.4.3.1.5.1.3.2-.1.1-.4 0-.6 0-.5 0-.8-.4-.9-.2-.1.1 0 .2.2.2-.2 0-.4 0-.3.2.1.3.3-.1.4.1-.1 0-.2 0-.2.1 0 .1.2.2.4 0 .1-.1.3-.1.4-.1.4 0 1.2.2 1.5-.1.1-.1 0-.2-.1-.3-.1-.1-.1-.2-.1-.5.3.1.7.1 1.3 0 .7-.1.9.1.9.4 0 .2-.1.2-.2.2-.4 0-.5-.1-.7-.1-.1 0-.2.2 0 .2-.1.1-.1.2 0 .2.1 0 .2 0 .3 0-.1.1-.3.2-.2.3 0 .1.2.1.3 0 .1-.1.3-.2.5-.3.6 0 .8-.9.6-1.4"/><path d="m36.7 17.6c0-.1-.1-.2-.2-.1-.4.1-1.4.1-1.7-.2.5.2 1.1-.2 1.1-.6 0-.4-.5-.7-1.5-.5-1 .2-2.2.1-2.2-.2 0-.3.9-.4 1.3-.3.4.1.8.1 1.6-.2-.2.1-.9.1-1.4 0-.5-.1-1.8-.1-1.8.5 0 .7 1.4.6 2.5.5.7-.1 1.1 0 1.1.2 0 .2-.6.3-1.1.2-.5-.1-1-.1-1.6.1-1 .3-2.2.1-2.5-.4 0 0 0-.1 0-.2.1-.1.1-.2.2-.3.1-.2 0-.3-.3-.1-.1-.1-.3-.2-.5-.2-.3 0-.4.1-.5.2-.3-.1-.4-.1-.3.1 0 .1.1.3.2.3 0 .4.4.9.4 1-.5-.1-1.2-1.1-1.4-1.5-.1-.2-.3-.3-.4-.3-.1 0-.1.1-.1.2s.2.1.2.3c-.1-.1-.3-.2-.4-.1-.1.1 0 .2.1.2.2 0 .1.2.2.3-.2-.2-.3-.2-.4-.1-.1.1 0 .2.1.2.2 0 .8.8 2.2 1.6 0 .1-.2.1-.4.1-.3 0-.8 0-1-.3-.2-.2-.5-.4-.7-.2-.1.1 0 .2.1.2.1 0 .2 0 .3.1-.1-.1-.3 0-.4 0-.1.1 0 .2.1.2.1 0 .3-.1.4 0-.1 0-.2 0-.3 0-.1.1 0 .2.1.2.2 0 1.7 1 3-.2.2 0 1.4 0 1.9-.3.3.4.4.3.7.4.3.1.5.1.3.2-.1.1-.3 0-.6 0-.5 0-.7-.3-.9-.2-.1.1 0 .2.2.2-.2 0-.3 0-.3.1.1.3.3 0 .4.1-.1 0-.2 0-.2.1 0 .1.2.2.4 0 .1-.1.3-.1.4-.1.3 0 1.1.2 1.4-.1.1-.1 0-.2-.1-.3-.1-.1-.1-.2-.1-.5.3.1.7.1 1.2 0 .6-.1.8.1.8.4 0 .2-.1.2-.2.2-.3 0-.5-.1-.6-.1-.1 0-.1.2 0 .2-.1.1-.1.2 0 .2.1 0 .2 0 .3 0-.1.1-.3.2-.2.3 0 .1.2.1.3 0 .1-.1.3-.2.4-.2.3 0 .6-.8.4-1.3"/><path d="m35.4 21.4c0-.1-.1-.1-.2-.1-.3.1-1 0-1.3-.1.4.1.8-.2.8-.4 0-.3-.4-.5-1.1-.4-.7.2-1.6.1-1.6-.1 0-.2.6-.3 1-.2.3 0 .6.1 1.2-.1-.1.1-.6.1-1 0-.4-.1-1.3-.1-1.3.4 0 .5 1 .5 1.9.3.5-.1.8 0 .8.1 0 .2-.5.2-.8.2-.4 0-.7 0-1.1.1-.8.2-1.6.1-1.9-.3 0 0 0-.1 0-.2.1-.1.1-.2.1-.2.1-.2 0-.2-.2-.1-.1-.1-.2-.1-.4-.1-.2 0-.3 0-.4.1-.2-.1-.3-.1-.2.1 0 .1.1.2.1.2 0 .3.3.7.3.7-.4 0-.9-.8-1-1.1 0-.1-.2-.2-.3-.2-.1 0-.1.1 0 .1.1.1.2.1.2.2-.1-.1-.2-.1-.3-.1 0 0 0 .1.1.1.1 0 .1.1.1.2-.1-.1-.2-.1-.3 0 0 0 0 .1.1.1.1 0 .6.6 1.6 1.2 0 .1-.2.1-.3.1-.2 0-.6 0-.7-.2-.1-.2-.4-.3-.5-.2-.1.1 0 .2.1.1s.1 0 .2.1c-.1 0-.2 0-.3 0-.1.1 0 .2.1.1.1 0 .2-.1.3 0-.1 0-.2 0-.2 0s0 .1.1.1c.2 0 1.3.7 2.2-.1.1 0 1.1 0 1.4-.3 0 .5.1.5.3.5.2 0 .3 0 .2.2 0 0-.3 0-.4 0-.4 0-.5-.3-.6-.1-.1.1 0 .2.1.2-.1 0-.2 0-.2.1 0 .2.2 0 .3 0-.1 0-.2 0-.2.1 0 .1.1.1.3 0 .1-.1.2-.1.3-.1.3 0 .8.1 1-.1.1-.1 0-.1-.1-.2-.1-.1-.1-.2-.1-.3.2 0 .5 0 .9 0 .5-.1.6.1.6.3 0 .1-.1.2-.1.2-.3 0-.4-.1-.5-.1-.1 0-.1.1 0 .2-.1 0-.1.1 0 .1 0 0 .1 0 .2 0-.1 0-.2.1-.1.2 0 0 .1.1.2 0s.2-.2.3-.2c.3-.1.5-.7.3-1.1"/><path d="m32 9.6c2.1 0 4 .6 5.2 1.3.2-1.8 1-3.5 2-4.8-1 0-1.4.5-1.4 1-.2-.7-1.2-.7-1.5-.3 1.1.7.2 2-.7 1.7-.5-.1-.7-.4-.8-.9.3 0 .5-.3.5-.6 0-.3-.3-.5-.6-.5s-.5.3-.5.6c0 .2.1.4.3.5-.3.5-.9.6-1.2.5-.5-.1-.7-.6-.7-1 0-1.1 1-1.2 1.3-1 0-.7-1.1-1.3-1.5-.7.4-.7.4-1.7-.3-2.3-.7.7-.7 1.6-.3 2.3-.3-.6-1.5 0-1.5.7.3-.2 1.3 0 1.3 1 0 .4-.2.9-.7 1-.4.1-.9 0-1.2-.5.3-.1.4-.4.3-.7-.1-.3-.4-.4-.7-.3-.3.1-.4.4-.3.7.1.2.3.3.5.3-.1.5-.3.8-.8.9-1 .3-1.8-1-.7-1.7-.3-.4-1.3-.4-1.5.3 0-.5-.4-1.1-1.4-1 .9 1.3 1.7 3.1 2 4.8.9-.7 2.8-1.3 4.9-1.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ef-1f1f2.svg b/riot/emojione/svg/1f1ef-1f1f2.svg new file mode 100644 index 0000000..810f5ab --- /dev/null +++ b/riot/emojione/svg/1f1ef-1f1f2.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#699635"><path d="M53.1,10.7c-11.7-11.6-30.6-11.6-42.3,0L32,27L53.1,10.7z"/><path d="M10.9,53.3c11.7,11.6,30.6,11.6,42.3,0L32,37L10.9,53.3z"/></g><g fill="#3e4347"><path d="M58,47c5.3-9.2,5.3-20.7,0-29.9L38.6,32L58,47z"/><path d="M6,17C0.7,26.3,0.7,37.7,6,47l19.5-15L6,17z"/></g><path d="M53.1,10.7L32,27L10.9,10.7C9,12.6,7.3,14.7,6,17l19.4,15L6,47c1.3,2.3,3,4.5,4.9,6.3L32,37l21.1,16.3 + c1.9-1.9,3.5-4,4.9-6.3L38.6,32L58,17C56.7,14.7,55,12.6,53.1,10.7z" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ef-1f1f4.svg b/riot/emojione/svg/1f1ef-1f1f4.svg new file mode 100644 index 0000000..2acfb9a --- /dev/null +++ b/riot/emojione/svg/1f1ef-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M8,22h52.3C56.2,10.4,45.1,2,32,2C22.2,2,13.5,6.7,8,14V22z" fill="#3e4347"/><path d="m60.3 22h-52.3v20h52.3c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#f9f9f9"/><path d="M8,42v8c5.5,7.3,14.2,12,24,12c13.1,0,24.2-8.3,28.3-20H8z" fill="#75a843"/><path d="m8 14c-3.8 5-6 11.2-6 18s2.2 13 6 18l24-18-24-18" fill="#c94747"/><path fill="#fff" d="m11 29.7l1-2.7 1 2.7 2.5-1.2-1.2 2.5 2.7 1-2.7 1 1.2 2.5-2.5-1.2-1 2.7-1-2.7-2.5 1.2 1.2-2.5-2.7-1 2.7-1-1.2-2.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ef-1f1f5.svg b/riot/emojione/svg/1f1ef-1f1f5.svg new file mode 100644 index 0000000..8ffa66b --- /dev/null +++ b/riot/emojione/svg/1f1ef-1f1f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f5f5f5"/><circle cx="32" cy="32" r="12" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ef.svg b/riot/emojione/svg/1f1ef.svg new file mode 100644 index 0000000..249efde --- /dev/null +++ b/riot/emojione/svg/1f1ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m28.6 35.2v.7c0 2.2.3 3.8.7 4.7.4.9 1.3 1.4 2.7 1.4 1.3 0 2.2-.5 2.7-1.5.3-.6.4-1.6.4-3v-20.4h6.1v20.2c0 2.5-.4 4.4-1.3 5.9-1.4 2.4-4 3.7-7.6 3.7s-6.2-1-7.4-3c-1.3-2-1.9-4.7-1.9-8.1v-.7h5.6z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1ea.svg b/riot/emojione/svg/1f1f0-1f1ea.svg new file mode 100644 index 0000000..65828fd --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C19.7,2,9.1,9.4,4.5,20h55C54.9,9.4,44.3,2,32,2z" fill="#3e4347"/><path d="M32,62c12.3,0,22.9-7.4,27.5-18h-55C9.1,54.6,19.7,62,32,62z" fill="#75a843"/><path d="m62 32c0-2.8-.4-5.5-1.1-8h-57.8c-.7 2.5-1.1 5.2-1.1 8s.4 5.5 1.1 8h57.8c.7-2.5 1.1-5.2 1.1-8" fill="#c94747"/><g fill="#fff"><path d="m3.7 42c.2.7.5 1.3.8 2h55c.3-.7.6-1.3.8-2 .2-.7.4-1.3.6-2h-57.8c.2.7.4 1.3.6 2"/><path d="m60.3 22c-.2-.7-.5-1.3-.8-2h-55c-.3.7-.6 1.3-.8 2-.2.7-.4 1.3-.6 2h57.8c-.2-.7-.4-1.3-.6-2"/><path d="m20.2 52.3l.7.4 19.3-33.4c1.1-.3 1.7-1.4 2.4-2.4.4-.7 2.1-3.6 2.8-7.3-2.9 2.5-4.5 5.3-4.9 6.1-.6 1.1-1.2 2.1-.9 3.3l-19.4 33.3"/><path d="m43.8 52.3l-.7.4-19.3-33.4c-1.1-.3-1.7-1.4-2.4-2.4-.4-.7-2.1-3.6-2.8-7.3 2.9 2.5 4.5 5.3 4.9 6.1.6 1.1 1.2 2.1.9 3.3l19.4 33.3"/></g><path d="m40 32c0 11-8 20-8 20s-8-9-8-20c0-11 8-20 8-20s8 9 8 20" fill="#c94747"/><g fill="#3e4347"><path d="m26.1 40c1.7-1.7 2.9-4.6 2.9-8 0-3.4-1.1-6.3-2.9-8-.7 2.3-1.1 5.1-1.1 8 0 2.9.4 5.7 1.1 8"/><path d="m37.9 24c-1.7 1.7-2.9 4.6-2.9 8 0 3.4 1.1 6.3 2.9 8 .7-2.3 1.1-5.1 1.1-8 0-2.9-.4-5.7-1.1-8"/></g><g fill="#fff"><ellipse cx="32" cy="32" rx="1.6" ry="2.4"/><path d="m31.4 12.7c-.6 1.7-1 4.9-1 8.4 0 3.6.4 6.7 1 8.4.2-2.5.4-5.3.4-8.4 0-3-.1-5.9-.4-8.4"/><path d="m32.6 12.7c.6 1.7 1 4.9 1 8.4 0 3.6-.4 6.7-1 8.4-.2-2.5-.4-5.3-.4-8.4 0-3 .1-5.9.4-8.4"/><path d="m31.4 34.4c-.6 1.7-1 4.9-1 8.4 0 3.6.4 6.7 1 8.4.2-2.5.4-5.3.4-8.4 0-3-.1-5.9-.4-8.4"/><path d="m32.6 34.4c.6 1.7 1 4.9 1 8.4 0 3.6-.4 6.7-1 8.4-.2-2.5-.4-5.3-.4-8.4 0-3 .1-5.9.4-8.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1ec.svg b/riot/emojione/svg/1f1f0-1f1ec.svg new file mode 100644 index 0000000..c2b532f --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f42f4c"/><g fill="#ffe62e"><path d="m49.7 34.3c-1.3-1.1-3.6-.9-5.2-.8 1.8-.9 4.6-2.7 6.5-1.1-1.4-1.9-4.5-1.3-6.4-.9 1.6-1.2 4.1-3.3 6.2-2.1-1.7-1.7-4.7-.6-6.5.2 1.4-1.4 3.5-3.9 5.8-3.1-1.9-1.4-4.7.1-6.4 1.2 1.1-1.6 2.9-4.4 5.3-3.9-2.1-1.1-4.6.9-6.1 2.1.9-1.8 2.1-4.8 4.6-4.7-2.3-.7-4.4 1.6-5.7 3.1.6-1.9 1.3-5.1 3.8-5.4-2.3-.4-4.1 2.2-5.1 3.9.3-2 .5-5.3 2.9-5.9-2.4 0-3.7 2.9-4.5 4.7 0-2-.3-5.3 2-6.3-2.3.4-3.2 3.4-3.7 5.3-.3-2-1.1-5.2.9-6.5-2.3.7-2.6 3.9-2.8 5.8-.6-1.9-1.9-4.9-.1-6.6-2.1 1.1-2 4.2-1.9 6.2-.9-1.8-2.7-4.6-1.1-6.5-1.9 1.4-1.3 4.5-.9 6.4-1.2-1.6-3.3-4.1-2.1-6.2-1.7 1.7-.6 4.6.2 6.5-1.4-1.4-3.9-3.5-3.1-5.8-1.4 1.9.1 4.7 1.2 6.4-1.6-1.1-4.4-2.9-3.9-5.3-1.1 2.1.9 4.6 2.2 6.1-1.8-.9-4.8-2.1-4.7-4.6-.7 2.2 1.6 4.4 3.1 5.7-1.9-.6-5.1-1.3-5.4-3.8-.4 2.3 2.2 4.1 3.9 5.1-2-.3-5.3-.5-5.9-2.9 0 2.4 2.9 3.7 4.7 4.5-2 0-5.3.3-6.3-2 .4 2.3 3.4 3.2 5.3 3.7-2 .3-5.2 1.1-6.5-.9.7 2.3 3.9 2.6 5.8 2.8-1.9.6-4.9 1.9-6.6.1 1.1 2.1 4.2 2 6.2 1.9-1.8.9-4.6 2.7-6.5 1.1 1.4 1.9 4.5 1.3 6.4.9-1.6 1.2-4.1 3.3-6.2 2.1 1.7 1.7 4.6.6 6.5-.2-1.4 1.4-3.5 3.9-5.8 3.1 1.9 1.4 4.7-.1 6.4-1.2-1.1 1.6-2.9 4.4-5.3 3.9 2.1 1.1 4.6-.9 6.1-2.2-.9 1.8-2.1 4.8-4.6 4.7 2.3.7 4.4-1.6 5.7-3.1-.6 1.9-1.3 5.1-3.8 5.4 2.3.4 4.1-2.3 5.1-3.9-.3 2-.5 5.3-2.9 5.9 2.4 0 3.7-2.9 4.5-4.7 0 2 .3 5.3-2 6.3 2.3-.4 3.2-3.4 3.7-5.3.3 2 1.1 5.2-.9 6.5 2.3-.7 2.6-3.9 2.8-5.8.6 1.9 1.9 4.9.1 6.6 2.1-1.1 2-4.2 1.9-6.2.9 1.8 2.7 4.6 1.1 6.5 1.9-1.4 1.3-4.5.9-6.4 1.2 1.6 3.3 4.1 2.1 6.2 1.7-1.7.6-4.6-.2-6.5 1.4 1.4 3.9 3.5 3.1 5.8 1.4-1.9-.1-4.7-1.2-6.4 1.6 1.1 4.4 2.9 3.9 5.3 1.1-2.1-.9-4.6-2.1-6.1 1.8.9 4.8 2.1 4.7 4.6.7-2.3-1.6-4.4-3.1-5.7 1.9.6 5.1 1.3 5.4 3.8.4-2.4-2.3-4.1-3.9-5.1 2 .3 5.2.5 5.9 2.9 0-2.4-2.9-3.7-4.7-4.5 2 0 5.3-.3 6.3 2-.4-2.4-3.4-3.2-5.3-3.7 2-.3 5.2-1.1 6.5.9-.7-2.2-3.9-2.7-5.8-2.8 1.9-.7 4.9-1.9 6.6-.1-.3-.4-.7-.7-1.1-1m-17.7 9.7c-4.5 0-8.7-2.6-10.7-6.6-2.1-4-1.6-9 1.1-12.7 2.7-3.6 7.3-5.4 11.8-4.6 4.4.8 8 4.1 9.3 8.3 2.3 7.7-3.6 15.6-11.5 15.6"/><path d="m24.8 25c-1.8 1.8-2.8 4.3-2.8 7 0 2 .6 3.9 1.6 5.5.8-3.7 2.5-7.1 4.7-9.9-1-1-2.2-1.9-3.5-2.6"/><path d="m31.3 24.4c-.8-.7-1.7-1.3-2.6-1.9-.4.1-.8.3-1.2.5 1 .6 2 1.4 3 2.1.2-.1.5-.4.8-.7"/><path d="m29.8 25.9c-1-.9-2.1-1.6-3.3-2.3-.3.2-.6.5-.9.7 1.2.7 2.4 1.5 3.4 2.5.2-.3.5-.6.8-.9"/><path d="m29.1 28.2c-2.3 3-3.9 6.5-4.7 10.3.5.5 1 1 1.6 1.5.4-4 1.8-7.7 4-10.8-.3-.4-.6-.7-.9-1"/><path d="m34 29.2c2.2 3.1 3.7 6.8 4 10.8.6-.4 1.1-.9 1.6-1.5-.7-3.8-2.4-7.3-4.7-10.3-.3.3-.6.6-.9 1"/><path d="m31.2 29.2c.3.4.6.7.8 1.1.3-.4.5-.7.8-1.1-.3-.3-.5-.7-.8-1-.3.3-.6.6-.8 1"/><path d="m34.1 22.2c-.7-.1-1.4-.2-2.1-.2-.7 0-1.4.1-2.1.2.7.5 1.5 1 2.1 1.6.7-.6 1.4-1.1 2.1-1.6"/><path d="m31.5 31.2c-.3-.4-.6-.8-.9-1.2-2.1 3.1-3.5 6.7-3.8 10.6.6.3 1.2.6 1.8.9 0-.1 0-.2 0-.3.1-3.7 1.1-7.1 2.9-10"/><path d="m32 26.7c.3-.3.6-.6.9-.9-.3-.3-.6-.6-.9-.8-.3.3-.6.5-.9.8.3.3.6.6.9.9"/><path d="m33.5 28.4c.3-.3.6-.7.9-1-.3-.3-.5-.6-.8-.9-.3.3-.6.6-.9.9.2.4.5.7.8 1"/><path d="m30.5 26.6c-.3.3-.5.6-.8.9.3.3.6.6.9 1 .3-.3.5-.7.8-1-.3-.4-.6-.7-.9-.9"/><path d="m32 32.1c-1.5 2.7-2.4 5.8-2.4 9 0 .2 0 .4 0 .6.8.2 1.6.3 2.4.3s1.6-.1 2.4-.3c0-.2 0-.4 0-.6 0-3.3-.9-6.4-2.4-9"/><path d="m32.6 31.2c1.8 2.9 2.8 6.3 2.8 10 0 .1 0 .2 0 .3.6-.2 1.3-.5 1.8-.9-.3-3.9-1.6-7.5-3.8-10.6-.3.3-.6.7-.8 1.2"/><path d="m33.6 25.2c.9-.8 1.9-1.5 3-2.1-.4-.2-.8-.4-1.2-.5-.9.6-1.8 1.2-2.6 1.9.2.2.5.5.8.7"/><path d="m40.4 37.5c1-1.6 1.6-3.5 1.6-5.5 0-2.7-1.1-5.2-2.8-7-1.3.7-2.5 1.5-3.5 2.5 2.2 2.9 3.8 6.3 4.7 10"/><path d="m35 26.8c1-.9 2.2-1.8 3.4-2.5-.3-.3-.6-.5-.9-.7-1.2.7-2.2 1.4-3.3 2.3.3.3.6.6.8.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1ed.svg b/riot/emojione/svg/1f1f0-1f1ed.svg new file mode 100644 index 0000000..a28e024 --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#ed4c5c"/><g fill="#2a5f9e"><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z"/></g><path d="m45.9 35.7v-3.1c.1-.4.4-.7.7-.8v-2.7-.1c-.3 0-.5.4-.5.5v-1.2c-.1-.1-.3-.1-.5 0v.3h-.6v-1.3c-.2 0-.2.6-.6.6-.2 0-.2-.3-.1-.5.1-.2.2-.5.1-.9-.1.3-.4.5-.4.2.1-.4.4-.5.2-1.1-.1.5-.4.5-.3.2.1-.3.3-.5 0-1-.1.5-.3.5-.3.2 0-.5 0-1-.6-1.2 0 0 0-.5-.3-.5s-.3.5-.3.5c-.6.2-.6.7-.6 1.2 0 .3-.2.4-.3-.2-.2.5 0 .6 0 1 .1.3-.2.3-.3-.2-.2.6.1.7.2 1.1.1.2-.3.1-.4-.3-.2.5 0 .8.1.9.1.2.1.5-.1.5-.4 0-.4-.6-.6-.6v2.4h-4.7v-2.1c-.3.1-.4.4-.4.4v.4h-.3c0 0-.2 0-.2-.4 0-.4.1-.6.4-.6v-.8c0 0-.7.1-.7.9v-.7c-.2 0-.2.3-.2 1h-.2v-.7c0-.4.4-.4.4-.7 0 0 .1-.5-.1-.7-.2.6-.4.5-.4.2 0-.2.2-.4.5-1 .1-.2 0-.7-.1-.9-.1.5-.1.7-.3.7-.1 0-.2-.1-.2-.3 0-.3.2-.4.3-.7.1-.3 0-.6-.1-.8-.1.5-.1.6-.2.6-.4-.1 0-.7.1-.9.1-.3-.1-.5-.1-.5-.1.4-.2.4-.3.4-.2 0-.1-.3.1-.5.1-.1.1-.3 0-.5-.1.3-.4.3-.3.1l.1-.6h-.3v-1.3h-.4c0-.3-.2-.6-.6-.6-.4 0-.5.4-.6.6h-.6v1.3h-.3l.1.7c0 .2-.2.2-.3-.1-.1.2-.2.4 0 .5.2.2.2.5.1.5-.1 0-.2 0-.3-.4 0 0-.2.3-.1.5.1.1.5.7.1.9-.2 0-.2-.2-.2-.6-.2.2-.3.5-.1.8.1.3.3.4.3.7 0 .2-.1.3-.2.3-.2 0-.3-.2-.3-.7-.1.2-.2.7-.1.9.3.5.5.7.5 1 0 .2-.3.4-.4-.2-.1.2-.1.7-.1.7 0 .3.4.3.4.7v.8h-.2c0-.7 0-1-.3-1v.7c0-.8-.7-.9-.7-.9v.8c.3 0 .4.2.4.6s-.2.4-.2.4h-.4v-.4c0 0-.1-.3-.4-.4v2.1h-4.6v-2.4c-.2 0-.2.6-.6.6-.2 0-.2-.3-.1-.5.1-.2.2-.5.1-.9-.1.4-.4.5-.4.3.1-.4.4-.5.2-1.1-.1.5-.4.5-.3.2.1-.3.3-.5 0-1-.1.5-.3.5-.3.2 0-.5 0-1-.6-1.2 0 0 0-.5-.3-.5s-.4.3-.4.3c-.6.2-.6.7-.6 1.2 0 .3-.2.4-.3-.2-.2.5 0 .6 0 1 .1.3-.2.3-.3-.2-.2.6.1.7.2 1.1.1.2-.3.1-.4-.3-.2.5 0 .8.1.9.1.2.1.5-.1.5-.4 0-.4-.6-.6-.6v1.3h-.5v-.3c-.2-.1-.4-.1-.5 0v1.2c0 0-.2-.5-.5-.5v.2 2.7c.2.1.6.4.7.8v3.1c-.1.3-.4.7-.6.8h29.1c-.4-.1-.7-.4-.8-.8" fill="#e2e2e2"/><g fill="#fff"><path d="m49.7 42.1v-1.9h-1v-1.6h-.9v-1.2h-.5v-.9h-30.6v.9h-.5v1.2h-.9v1.6h-1v1.9h-.9v1.9h37.2v-1.9z"/><path d="m22.8 36.5c-.2-.1-.6-.4-.6-.8v-3.3l.3-.5h.1v-1c-.2.1-.3.2-.5.3 0-.1-.1-.2-.1-.3.1-.1.5-.6.6-.8v-.8c-.1 0-.2.1-.3.1.2-.2.3-.4.3-.6v-.8c-.2 0-.5.2-.6.5 0-.2-.1-.4-.2-.6.1-.1.4-.4.4-.6v-.5c-.2 0-.3.1-.5.3 0-.1 0-.1-.1-.2l.3-.4v-.5c-.1 0-.2.1-.3.2 0-.1-.1-.2-.1-.3l.1-.3v-.4c-.1 0-.1 0-.2.1 0-.1-.1-.2-.1-.2h.1l.3-.2v-.3c-.1 0-.1 0-.2.1-.1-.2-.2-.3-.4-.4-.2.1-.3.2-.4.4-.1-.1-.1-.1-.2-.1v.3l.3.2h.2c0 .1-.1.1-.1.2-.1-.1-.1-.1-.2-.1v.4l.1.3c0 .1-.1.1-.1.2-.1-.2-.2-.2-.3-.2v.5l.3.4c0 .1 0 .1-.1.2-.1-.2-.3-.3-.5-.3v.5c0 .2.3.5.4.6-.1.2-.1.4-.2.6-.2-.3-.4-.5-.6-.5v.8c0 .1.2.4.3.6-.1-.1-.2-.1-.3-.1v.8c.1.2.4.6.6.7 0 .1-.1.2-.1.3-.1.1-.2 0-.4 0v1l.3.5v3.3c0 .3-.4.6-.6.8h.5v7.4h2.3v-7.5h.5"/><path d="m33.7 28.3v-1c-.4.1-.6.4-.7.6 0-.2-.1-.4-.2-.6.1-.4.2-.6.4-.8h.1v-.9c-.3.1-.5.3-.6.5 0-.1-.1-.4-.2-.6l.3-.5h.4v-.9c-.3.1-.5.3-.5.5 0-.1-.1-.4-.2-.6l.5-.4v-.6c-.2.1-.5.1-.5.5 0-.2-.1-.4-.1-.5l.5-.4v-.6c-.2 0-.4.1-.4.3 0-.1-.1-.2-.1-.3l.3-.2v-.5c-.1 0-.3.1-.3.3 0-.3-.1-.3-.3-.4-.1.1-.2.1-.3.4 0-.2-.2-.2-.3-.3v.5l.3.2c0 .1-.1.2-.1.3 0-.3-.2-.3-.4-.3v.5l.5.4c-.1.1-.1.3-.1.5 0-.4-.3-.4-.5-.5v.7l.4.4c-.1.2-.2.5-.2.6-.1-.2-.3-.4-.5-.5v.9h.1l.3.5c-.1.2-.2.4-.2.6-.1-.2-.3-.4-.6-.5v.9h.1c.2.1.4.4.4.8 0 .2 0 .4 0 .5-.1-.2-.4-.5-.7-.6v1h.2c.3.4.4 1 .4 1.4-.1-.1-.2-.2-.3-.3v1h1c-.2.3-.3.6-.3 1-.3-.1-.3-.2-.6-.3v1l.2.3v3.5c0 .3-.4.6-.6.8h.5v7.4h2.3v-7.5h.5c-.2-.1-.6-.4-.6-.8v-3.5l.2-.3v-1c-.4.1-.4.2-.5.5 0-.3-.1-.7-.3-1h1v-1c-.1.1-.2.1-.3.2 0-.5.1-1 .4-1.4.1.1.2.1.2.1"/><path d="m44.4 36.5c-.2-.1-.6-.4-.6-.8v-3.3l.3-.5h.1v-1c-.2.1-.3.2-.5.2 0-.1-.1-.2-.1-.3.1-.2.5-.5.6-.7v-.8c-.1 0-.2.1-.3.1.2-.2.3-.5.3-.6v-.8c-.2 0-.5.2-.6.5 0-.2-.1-.4-.2-.6.1-.1.4-.4.4-.6v-.5c-.2 0-.3.1-.5.3 0-.1 0-.1-.1-.2l.3-.4v-.5c-.1 0-.2.1-.3.2 0-.1-.1-.2-.1-.2l.1-.3v-.4c-.1 0-.1 0-.2.1 0-.1-.1-.2-.1-.2h.1l.3-.2v-.3c-.1 0-.1 0-.2.1-.1-.2-.2-.3-.4-.4-.2.1-.3.2-.4.4-.1-.1-.1-.1-.2-.1v.3l.3.2h.1c0 .1-.1.1-.1.2-.1-.1-.1-.1-.2-.1v.4l.1.3c-.1.1-.1.1-.1.3-.1-.2-.2-.2-.3-.2v.5l.3.4c0 .1 0 .1-.1.2-.1-.2-.2-.2-.4-.3v.5c0 .2.3.5.4.6-.1.2-.1.4-.2.6-.2-.3-.4-.5-.6-.5v.8c0 .1.2.4.3.6-.1-.1-.2-.1-.3-.1v.8c.1.2.5.6.6.8 0 .1-.1.2-.1.3-.1-.1-.3-.2-.5-.3v1h.1l.3.5v3.3c0 .3-.4.6-.6.8h.5v7.4h2.3v-7.5h.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1ee.svg b/riot/emojione/svg/1f1f0-1f1ee.svg new file mode 100644 index 0000000..81f5fc9 --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m17.6 39c6.9 0 6.9-2 13.7-2s6.9 2 13.7 2c6.8 0 6.8-2 13.7-2 1.1 0 2 .1 2.8.1.3-1.7.5-3.4.5-5.2 0-16.5-13.4-29.9-30-29.9s-30 13.4-30 30c0 1.7.2 3.4.4 5.1.5 0 1 0 1.5 0 6.9-.1 6.9 1.9 13.7 1.9" fill="#ed4c5c"/><g fill="#ffce31"><path d="m44.3 33l3.7-1.7-4-.8 3.3-2.4-4.1-.1 2.7-3-3.9.8 2-3.5-3.8 1.6 1.3-3.8-3.3 2.3.3-4-2.7 3-.5-4-2 3.4-1.3-3.8-1.3 3.8-2-3.4-.5 4-2.7-3 .4 4-3.4-2.3 1.3 3.8-3.8-1.6 2 3.5-3.9-.8 2.7 3-4.1.1 3.3 2.4-4 .8 3.7 1.7-3.7 1.7 4 .8-3.3 2.4 4.1.1-2.7 3 6.2-1.3-1.5-2.6-.7-2-.2-2.1.2-2.1.7-2 1-1.8 1.4-1.6 1.7-1.2 2-.9 2-.4h2.2l2 .4 1.9.9 1.8 1.2 1.4 1.6 1 1.8.7 2 .2 2.1-.2 2.1-.7 2-1.5 2.6 6.2 1.3-2.7-3 4.1-.1-3.3-2.4 4-.8z"/><circle cx="32" cy="33" r="12"/></g><path d="m32 43c-5.5 0-10-4.5-10-10s4.5-10 10-10 10 4.5 10 10-4.5 10-10 10m0-18c-4.4 0-8 3.6-8 8 0 4.4 3.6 8 8 8s8-3.6 8-8c0-4.4-3.6-8-8-8" fill="#f27a52"/><path d="m43.1 9.3c-1.5 1.1-1.4 1.4-7.3 1.4-2.1 0-3.2.3-3.8.8-.6-.4-1.7-.8-3.8-.8-5.9 0-5.7-.4-7.3-1.4-2-1.4-.7 2.8 4.8 2.8 2.3 0 4.1.4 5.3.8-3.4.2-6 1.1-6 1.1s3.1 1.1 7 1.1 7-1.1 7-1.1-2.6-.9-6-1.1c1.2-.4 3-.8 5.3-.8 5.5-.1 6.8-4.2 4.8-2.8" fill="#ffce31"/><g fill="#428bc1"><path d="m31.3 49c-6.8 0-6.8 2-13.7 2-5.4 0-6.6-1.2-10.2-1.8 1.3 1.9 2.8 3.6 4.5 5.1 1.4.4 3 .7 5.6.7 6.9 0 6.9-2 13.7-2s6.9 2 13.7 2c3.9 0 5.6-.6 7.6-1.2 1.5-1.4 2.9-3 4.1-4.7-4.8.3-5.5 1.9-11.6 1.9-6.8 0-6.8-2-13.7-2"/><path d="m31.3 57c-6.4 0-6.8 1.7-12.5 2 4 1.9 8.4 3 13.2 3 4.7 0 9.2-1.1 13.1-3 0 0-.1 0-.1 0-6.8 0-6.8-2-13.7-2"/><path d="m58.7 41c-6.9 0-6.9 2-13.7 2-6.8 0-6.8-2-13.7-2s-6.8 2-13.7 2c-6.8 0-6.8-2-13.7-2-.2 0-.4 0-.5 0 .4 1.4 1 2.7 1.6 4 5.8.2 6.2 2 12.7 2 6.9 0 6.9-2 13.7-2s6.9 2 13.7 2c6.8 0 6.8-2 13.7-2 .1 0 .2 0 .3 0 .6-1.3 1.1-2.6 1.6-4-.7 0-1.3 0-2 0"/></g><g fill="#fff"><path d="m17.6 43c6.8 0 6.8-2 13.7-2 6.8 0 6.8 2 13.7 2 6.9 0 6.9-2 13.7-2 .7 0 1.3 0 1.9.1.4-1.3.7-2.6.9-3.9-.8-.1-1.7-.1-2.8-.1-6.8 0-6.8 2-13.7 2-6.8 0-6.8-2-13.7-2s-6.9 2-13.7 2c-6.8 0-6.8-2-13.7-2-.5 0-1 0-1.5 0 .3 1.3.6 2.6 1 3.9.2 0 .3 0 .5 0 6.9 0 6.9 2 13.7 2"/><path d="m45 47c-6.8 0-6.8-2-13.7-2s-6.9 2-13.7 2c-6.5 0-6.9-1.8-12.7-2 .7 1.5 1.5 2.9 2.5 4.2 3.6.5 4.8 1.8 10.2 1.8 6.8 0 6.8-2 13.7-2 6.8 0 6.8 2 13.7 2 6.1 0 6.8-1.6 11.7-1.9.9-1.3 1.7-2.6 2.4-4-.1 0-.2 0-.3 0-6.9-.1-6.9 1.9-13.8 1.9"/><path d="m31.3 53c-6.9 0-6.9 2-13.7 2-2.6 0-4.2-.3-5.6-.7 2 1.8 4.3 3.4 6.8 4.6 5.6-.2 6.1-2 12.5-2 6.8 0 6.8 2 13.7 2 0 0 .1 0 .1 0 2.8-1.3 5.3-3.1 7.5-5.2-2 .6-3.7 1.2-7.6 1.2-6.8.1-6.8-1.9-13.7-1.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1f2.svg b/riot/emojione/svg/1f1f0-1f1f2.svg new file mode 100644 index 0000000..8e9ba57 --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M11,48v5.4c5.4,5.3,12.8,8.6,21,8.6c10.7,0,20.1-5.6,25.4-14H11z" fill="#428bc1"/><path d="m11 32v16h46.4c2.9-4.6 4.6-10.1 4.6-16h-51" fill="#ed4c5c"/><path d="M11,32h51c0-5.9-1.7-11.4-4.6-16H11V32z" fill="#fff"/><path d="m11 16h46.4c-5.3-8.4-14.7-14-25.4-14-8.2 0-15.6 3.3-21 8.6 0 0 0 5.4 0 5.4" fill="#ffce31"/><path d="M11,10.6C5.5,16,2,23.6,2,32s3.5,16,9,21.4L32.4,32L11,10.6z" fill="#75a843"/><g fill="#f9f9f9"><path d="m18 41.8c-4.6-.9-8-5-8-9.8s3.4-8.9 8-9.8c-.6-.1-1.3-.2-2-.2-5.5 0-10 4.5-10 10 0 5.5 4.5 10 10 10 .7 0 1.4-.1 2-.2"/><path d="m16.8 36l1.2-.9 1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1z"/><path d="m16.8 40l1.2-.9 1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1z"/><path d="m16.8 28l1.2-.9 1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1z"/><path d="m16.8 32l1.2-.9 1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1f3.svg b/riot/emojione/svg/1f1f0-1f1f3.svg new file mode 100644 index 0000000..505ac74 --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6 47c1.9 3.4 4.4 6.2 7.3 8.5l48.4-27.9c-.6-3.6-1.8-7.2-3.7-10.6-1.9-3.4-4.4-6.2-7.3-8.5l-48.4 27.9c.6 3.7 1.8 7.2 3.7 10.6" fill="#3e4347"/><g fill="#ffe62e"><path d="m19.1 59.1l42.8-24.7c.2-2.3.1-4.5-.2-6.8l-48.4 27.9c1.8 1.4 3.8 2.6 5.8 3.6"/><path d="m2.3 36.4l48.4-27.9c-1.8-1.4-3.7-2.6-5.8-3.6l-42.8 24.7c-.2 2.3-.1 4.6.2 6.8"/></g><path d="M44.9,4.9c-8.6-4.1-19-4-27.9,1.1C8.1,11.1,2.9,20.1,2.1,29.6L44.9,4.9z" fill="#699635"/><path d="m19.1 59.1c8.6 4.1 19 4 27.9-1.1 8.9-5.1 14.1-14.1 14.9-23.6l-42.8 24.7" fill="#ed4c5c"/><g fill="#fff"><path d="m22 40.1l4.6.6-3.5-3.2 1.8-4.3-4 2.3-3.5-3.3 1.1 4.7-3.9 2.2 4.5.7 1.1 4.6z"/><path d="m44 27.4l4.6.6-3.5-3.3 1.8-4.2-3.9 2.2-3.5-3.2 1 4.6-3.9 2.3 4.6.6 1.1 4.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1f5.svg b/riot/emojione/svg/1f1f0-1f1f5.svg new file mode 100644 index 0000000..dc4d679 --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M32,2C21.7,2,12.7,7.1,7.3,15h49.4C51.3,7.1,42.3,2,32,2z"/><path d="M32,62c10.3,0,19.3-5.1,24.7-13H7.3C12.7,56.9,21.7,62,32,62z"/></g><path d="m59 19h-54c-1.9 3.9-3 8.3-3 13s1.1 9.1 3 13h54c1.9-3.9 3-8.3 3-13s-1.1-9.1-3-13" fill="#ed4c5c"/><g fill="#fff"><path d="m5 45c.7 1.4 1.5 2.7 2.3 4h49.4c.9-1.3 1.7-2.6 2.3-4h-54"/><path d="m59 19c-.7-1.4-1.5-2.7-2.3-4h-49.4c-.9 1.3-1.7 2.6-2.3 4h54"/><circle cx="18" cy="32" r="11"/></g><path fill="#ed4c5c" d="m18 35.9l4.9 3.8-1.8-6.1 4.9-3.8h-6.1l-1.9-6.1-1.9 6.1h-6.1l4.9 3.8-1.8 6.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1f7.svg b/riot/emojione/svg/1f1f0-1f1f7.svg new file mode 100644 index 0000000..5b28e35 --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f5f5f5"/><path d="m23.4 33.7c2.8 1.9 6.7 1.1 8.6-1.7 1.9-2.8 5.7-3.6 8.6-1.7 2.7 1.8 3.5 5.3 2 8 3.3-5.6 1.8-12.9-3.8-16.6-5.7-3.8-13.4-2.3-17.2 3.4-.1.2-.2.4-.3.5-1.4 2.9-.5 6.3 2.1 8.1" fill="#ed4c5c"/><path d="m42.3 38.9c.1-.2.2-.4.3-.5-.1.1-.2.3-.3.5" fill="#003478"/><path d="m40.6 30.3c-2.8-1.9-6.7-1.1-8.6 1.7-1.9 2.8-5.7 3.6-8.6 1.7-2.7-1.8-3.5-5.3-2-8-3.4 5.6-1.8 12.9 3.8 16.6 5.7 3.8 13.4 2.3 17.2-3.4.1-.2.2-.4.3-.5 1.4-2.9.5-6.3-2.1-8.1" fill="#428bc1"/><g fill="#3e4347"><path d="m7.8 23.3l6.9-10.3-.7-.5-.7-.4-6.9 10.3.7.4z"/><path d="m9.7 24.6l.7.4 6.8-10.3-.6-.4-.7-.5-6.9 10.3z"/><path d="m18.4 15.5l-6.8 10.3.7.5.7.4 6.8-10.3-.7-.4z"/><path d="m48.5 42.5l.7.5 3.2-4.8-.7-.5-.7-.4-3.2 4.8z"/><path d="m56.2 40.7l-3.2 4.8.7.5.7.4 3.2-4.8-.7-.4z"/><path d="m51.8 44.7l3.2-4.8-.7-.5-.7-.4-3.2 4.8.7.4z"/><path d="m48.1 43.2l-.7-.4-3.2 4.8.7.4.7.5 3.2-4.8z"/><path d="m50.6 44.9l-.6-.4-3.2 4.8.6.4.7.5 3.2-4.8z"/><path d="m52.5 46.2l-3.2 4.8.7.5.7.4 3.2-4.8-.7-.5z"/><path d="m7.1 41.2l-.7.4 6.9 10.3.7-.4.7-.5-6.9-10.3z"/><path d="m13.4 44.9l-.7.5 3.2 4.8.7-.5.6-.4-3.2-4.8z"/><path d="m12.3 37.7l-.7.5 6.8 10.3.7-.5.7-.4-6.8-10.3z"/><path d="m9 39.9l3.2 4.8.7-.5.7-.4-3.2-4.8-.7.4z"/><path d="m53.2 17.4l.7-.5-3.2-4.8-.7.4-.7.5 3.2 4.8z"/><path d="m48.1 20.8l.7-.5-3.2-4.8-.7.5-.7.4 3.2 4.8z"/><path d="m53 18.5l3.2 4.8.7-.5.7-.4-3.2-4.8-.7.4z"/><path d="m54.3 24.6l.7-.5-6.9-10.3-.7.5-.6.4 6.8 10.3z"/><path d="m51.7 26.3l.7-.5-3.2-4.8-.7.5-.7.4 3.2 4.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1fc.svg b/riot/emojione/svg/1f1f0-1f1fc.svg new file mode 100644 index 0000000..f3076ff --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60 42c-5.5 0-10-4.5-10-10h-39.2v21.2c5.4 5.4 12.9 8.8 21.2 8.8 13.1 0 24.2-8.4 28.3-20-.1 0-.2 0-.3 0" fill="#ed4c5c"/><path d="m60 22c.1 0 .2 0 .3 0-4.1-11.6-15.2-20-28.3-20-8.3 0-15.8 3.4-21.2 8.8v21.2h39.2c0-5.5 4.5-10 10-10" fill="#699635"/><path d="m60.3 22h-49.5v20h49.5c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#f9f9f9"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32c0,8.3,3.4,15.8,8.8,21.2L22,42V22L10.8,10.8z" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1fe.svg b/riot/emojione/svg/1f1f0-1f1fe.svg new file mode 100644 index 0000000..6d0432c --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m12 12h20.6v20.6h-20.6z"/><path fill="#fff" d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#2a5f9e"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m37.9 28.5v11.7c0 1.2 1 1.7 2.1 2.1l4.3 1.7 4.2-1.7c1.1-.4 2.1-1 2.1-2.1v-11.7h-12.7" fill="#fff"/><path d="m50.7 37c0 0-1.3-.9-3.2-.9-1.8 0-2.1.9-3.2.9-1.3 0-1.3-.9-3.2-.9s-3.2.9-3.2.9v-1.8c0 0 1.3-.9 3.2-.9s1.9.9 3.2.9c1.1 0 1.3-.9 3.2-.9 1.8 0 3.2.9 3.2.9v1.8" fill="#42ade2"/><path d="m37.9 27.4v6c0 0 1.3-1.5 3.2-1.5s1.9 1.5 3.2 1.5c1.1 0 1.3-1.5 3.2-1.5 1.8 0 3.2 1.5 3.2 1.5v-6h-12.8" fill="#ed4c5c"/><g fill="#42ade2"><path d="m50.7 40.2c0 0-1.3-.8-3.2-.8-1.8 0-2.1.8-3.2.8-1.3 0-1.3-.8-3.2-.8s-3.2.8-3.2.8v-1.7c0 0 1.3-.8 3.2-.8s1.9.8 3.2.8c1.1 0 1.3-.8 3.2-.8 1.8 0 3.2.8 3.2.8v1.7"/><path d="m41.1 41.2c-.9 0-1.7.2-2.2.5.3.2.7.4 1.2.6l4.3 1.7 4.2-1.7c.4-.2.8-.3 1.2-.6-.6-.3-1.3-.5-2.2-.5-1.8 0-2.1 1.1-3.2 1.1-1.4 0-1.4-1.1-3.3-1.1"/></g><g fill="#ed4c5c"><path d="m34.8 46.5l-1.1-2.3c1-.7 2.2-1.3 3.5-1.8l.7 2.6c-1.2.4-2.2.9-3.1 1.5"/><path d="m53.8 46.5c-.9-.6-1.9-1.2-3.1-1.6l.7-2.6c1.3.5 2.5 1.1 3.5 1.8l-1.1 2.4"/></g><g fill="#83bf4f"><path d="m44.3 40.2l1.3 1-.5-1.6 1.3-1h-1.6l-.5-1.6-.5 1.6h-1.6l1.3 1-.5 1.6z"/><path d="m41.1 36l1.3 1-.5-1.6 1.3-1.1h-1.6l-.5-1.6-.5 1.6h-1.6l1.3 1.1-.5 1.6z"/><path d="m47.5 36l1.3 1-.5-1.6 1.3-1.1h-1.6l-.5-1.6-.5 1.6h-1.6l1.3 1.1-.5 1.6z"/></g><g fill="#ffe62e"><path d="m44.3 47.7c-2.8 0-5.4-1.2-7.5-3.4l1.5-2c1.7 1.8 3.8 2.7 6 2.7 2.2 0 4.4-1 6.1-2.8l1.5 2c-2.1 2.3-4.8 3.5-7.6 3.5"/><path d="m35.9 48.6l-1.1-2.3c1-.7 2.2-1.3 3.5-1.8l.6 2.6c-1.1.4-2.1.9-3 1.5"/><path d="m52.7 48.7c-.9-.6-1.9-1.2-3.1-1.6l.7-2.6c1.3.5 2.5 1.1 3.5 1.8l-1.1 2.4"/><path d="m49.6 30.1c0-.1-.1-.2-.3-.1-.4.1-1.6.1-1.9-.2.6.2 1.3-.2 1.3-.6 0-.4-.5-.8-1.7-.5-1.1.2-2.5.1-2.5-.2 0-.3 1-.4 1.5-.3.5.1.9.1 1.8-.2-.2.1-1 .1-1.5 0-.6-.2-2-.2-2 .6 0 .7 1.5.7 2.9.5.8-.1 1.2 0 1.2.2 0 .2-.7.3-1.3.3-.5-.1-1.1-.1-1.8.1-1.2.4-2.5.1-2.8-.4 0-.1 0-.1 0-.2.1-.1.2-.2.2-.3.1-.3 0-.3-.3-.1-.1-.1-.3-.2-.6-.2s-.5.1-.6.2c-.3-.1-.4-.1-.3.1 0 .1.1.3.2.3 0 .4.5 1 .5 1-.6-.1-1.4-1.1-1.5-1.6-.1-.2-.3-.3-.4-.3-.1 0-.2.1-.1.2.1.1.2.1.3.3-.1-.2-.3-.2-.4-.1-.1.1 0 .2.1.2.2 0 .1.2.2.3-.2-.2-.3-.2-.4-.1-.1.1 0 .2.1.2.2 0 .9.9 2.5 1.7 0 .1-.3.1-.5.1-.4 0-.9 0-1.1-.3-.2-.2-.5-.4-.8-.3-.1.1 0 .2.1.2.1 0 .2 0 .3.1l-.4 0c-.1.1 0 .2.1.2.1 0 .3-.1.4 0-.1 0-.3 0-.3 0-.1.1 0 .2.1.2.2 0 1.9 1 3.3-.2.2 0 1.6 0 2.2-.4.4.4.4.3.7.4.3.1.5.1.3.2-.1.1-.4 0-.6 0-.6 0-.8-.4-1-.2-.1.2 0 .2.2.2-.2 0-.4 0-.3.2.1.3.4-.1.5.1-.1 0-.2 0-.2.1 0 .1.2.2.5 0 .1-.1.3-.1.4-.1.4 0 1.3.2 1.6-.1.1-.1 0-.2-.1-.3-.1-.1-.1-.2-.1-.5.3.1.8.1 1.3 0 .7-.1.9.1.9.4 0 .2-.1.2-.2.2-.4 0-.6-.1-.7-.1-.1 0-.2.2 0 .2-.1.1-.1.2 0 .2.1 0 .2 0 .3 0-.1.1-.3.2-.2.3.1.1.2.1.3 0 .1-.1.3-.2.5-.3 0 0 .3-.8.1-1.3"/><path d="m48.5 20.6h-2.3l2-2-2.5 1 .6-2.9-1.7 2.3-.9-2.5-.2 2.7-1.7-1.9.9 3.1h-1.7c0 0 1.8 1.3 2.2 1.7h2.8c.6-.8 2.5-1.5 2.5-1.5"/></g><g fill="#83bf4f"><path d="m41.1 23.2c0 .6-1.5 1.1-2.1 1.1-.6 0-1.1-.5-1.1-1.1s.5-1.1 1.1-1.1c.6 0 2.1.5 2.1 1.1"/><ellipse cx="41.1" cy="26.4" rx=".5" ry="1.1"/><ellipse cx="45.4" cy="26.4" rx=".5" ry="1.1"/><ellipse cx="47.5" cy="26.4" rx=".5" ry="1.1"/><path d="m48.6 23.8c0 2.3-1.9 2.4-4.2 2.4-2.3 0-4.3-.2-4.3-2.4 0-1.4 1.9-2.7 4.3-2.7 2.3-.1 4.2 1 4.2 2.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0-1f1ff.svg b/riot/emojione/svg/1f1f0-1f1ff.svg new file mode 100644 index 0000000..107bf17 --- /dev/null +++ b/riot/emojione/svg/1f1f0-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#00afca"/><g fill="#ffe62e"><path d="m56.7 33.1c-.7-.4-1.5.1-1.5.8-.3 4.9-8.9 6.2-13 6.2-4.1.1-12.9-1.4-13.2-6.2 0-.7-.8-1.1-1.5-.8-2.1 1.1-2.8 3.2-2.3 5.3.9 3.8 5.6 6.5 9.6 7.7-.3.7-.4 1.4-.5 2.1-.1.8 1.1 1.1 1.7.6 2.3-1.7 5.9-2.4 8.9-2.4 1.3 0 1.3-1.8 0-1.8-2.7 0-5.6.5-8 1.6.9-2.1 3-4.2 5.3-4.3 0 0 .1 0 .1 0 4.8.1 12.5-1.6 14.5-6.1.3.8.3 1.7 0 2.5-1 3.2-4.5 4.5-7.8 5.4-1.2.3-.7 2.1.5 1.7 4.2-1.1 7.5-2.8 9.2-6.6.8-2 0-4.4-2-5.7m-21.1 11.3c-3.3-.9-5.8-2.5-7.8-5.1-.8-1.1-1.1-2.6-.4-3.7 1.5 3.5 6.4 5.3 10.8 5.9-1 .8-1.9 1.8-2.6 2.9"/><circle cx="42" cy="27" r="7.7"/><path d="m42 18.3c.5 0 .6-.3.6-.6 0-.5-.6-2.6-.6-2.6s-.6 2.2-.6 2.6c0 .3.1.6.6.6"/></g><g transform="matrix(0 1-1 0 0 0)"/><g transform="scale(-1-1)"/><g transform="matrix(0-1 1 0 0 0)"/><g fill="#ffe62e"><path d="m45.3 18.9c.4.2.7 0 .8-.3.2-.4.4-2.7.4-2.7s-1.4 1.8-1.6 2.2c0 .3 0 .7.4.8"/><path d="m50.1 30.3c-.2.4 0 .7.3.8.4.2 2.7.4 2.7.4s-1.8-1.4-2.2-1.6c-.3 0-.7 0-.8.4"/><path d="m38.7 35.1c-.4-.2-.7 0-.8.3-.2.4-.4 2.7-.4 2.7s1.4-1.8 1.6-2.2c0-.3 0-.7-.4-.8"/><path d="m33.9 23.7c.2-.4 0-.7-.3-.8-.4-.2-2.7-.4-2.7-.4s1.8 1.4 2.2 1.6c.3 0 .7 0 .8-.4"/><path d="m48.2 20.8c.3.3.7.2.9 0 .3-.3 1.4-2.3 1.4-2.3s-2 1.1-2.3 1.4c-.3.3-.3.6 0 .9"/><path d="m48.2 33.2c-.3.3-.2.6 0 .9.3.3 2.3 1.4 2.3 1.4s-1.1-2-1.4-2.3c-.3-.3-.6-.3-.9 0"/><path d="m35.8 33.2c-.3-.3-.7-.2-.9 0-.3.3-1.4 2.3-1.4 2.3s2-1.1 2.3-1.4c.3-.3.3-.6 0-.9"/><path d="m35.8 20.8c.3-.3.2-.7 0-.9-.3-.3-2.3-1.4-2.3-1.4s1.1 2 1.4 2.3c.3.3.6.3.9 0"/><path d="m50.1 23.7c.2.4.5.5.8.3.4-.2 2.2-1.6 2.2-1.6s-2.3.3-2.7.4c-.3.2-.5.4-.3.9"/><path d="m45.3 35.1c-.4.2-.5.5-.3.8.2.4 1.6 2.2 1.6 2.2s-.3-2.3-.4-2.7c-.2-.3-.4-.5-.9-.3"/><path d="m33.9 30.3c-.2-.4-.5-.5-.8-.3-.4.2-2.2 1.6-2.2 1.6s2.3-.3 2.7-.4c.3-.2.5-.4.3-.9"/><path d="m38.7 18.9c.4-.2.5-.5.3-.8-.2-.4-1.6-2.2-1.6-2.2s.3 2.2.4 2.7c.2.3.4.5.9.3"/><path d="m43.7 18.4c.4.1.7-.2.7-.5.1-.4-.1-2.7-.1-2.7s-1 2-1.1 2.5c-.1.3.1.6.5.7"/><path d="m50.6 28.7c-.1.4.2.7.5.7.4.1 2.7-.1 2.7-.1s-2-1-2.5-1.1c-.3-.1-.6.1-.7.5"/><path d="m40.3 35.6c-.4-.1-.7.2-.7.5-.1.4.1 2.7.1 2.7s1-2 1.1-2.5c.1-.3-.1-.6-.5-.7"/><path d="m33.4 25.3c.1-.5-.2-.7-.5-.7-.4-.1-2.7.1-2.7.1s2 1 2.5 1.1c.3.1.6-.1.7-.5"/><path d="m46.9 19.7c.4.2.7.1.9-.2.3-.4.9-2.5.9-2.5s-1.7 1.5-2 1.8c-.2.3-.2.7.2.9"/><path d="m49.3 31.9c-.2.4-.1.7.2.9.4.3 2.5.9 2.5.9s-1.5-1.7-1.8-2c-.3-.2-.7-.2-.9.2"/><path d="m37.1 34.3c-.4-.2-.7-.1-.9.2-.2.3-.9 2.5-.9 2.5s1.7-1.5 2-1.8c.2-.3.2-.7-.2-.9"/><path d="m34.7 22.1c.2-.4.1-.7-.2-.9-.3-.2-2.5-.9-2.5-.9s1.5 1.7 1.8 2c.3.2.7.2.9-.2"/><path d="m49.3 22.1c.3.4.6.4.9.2.4-.3 1.8-2 1.8-2s-2.2.7-2.5.9c-.3.3-.5.6-.2.9"/><path d="m46.9 34.3c-.4.3-.4.6-.2.9.3.4 2 1.8 2 1.8s-.7-2.2-.9-2.5c-.3-.3-.6-.5-.9-.2"/><path d="m34.7 31.9c-.3-.4-.6-.4-.9-.2-.4.3-1.8 2-1.8 2s2.2-.7 2.5-.9c.3-.3.5-.6.2-.9"/><path d="m37.1 19.7c.4-.3.4-.6.2-.9-.3-.4-2-1.8-2-1.8s.7 2.2.9 2.5c.3.3.6.5.9.2"/><path d="m50.6 25.3c.1.4.4.6.7.5.4-.1 2.5-1.1 2.5-1.1s-2.3-.2-2.7-.1c-.4 0-.6.2-.5.7"/><path d="m43.7 35.6c-.4.1-.6.4-.5.7.1.4 1.1 2.5 1.1 2.5s.2-2.3.1-2.7c0-.4-.2-.6-.7-.5"/><path d="m33.4 28.7c-.1-.4-.4-.6-.7-.5-.4.1-2.5 1.1-2.5 1.1s2.3.2 2.7.1c.4 0 .6-.2.5-.7"/><path d="m40.3 18.4c.4-.1.6-.4.5-.7-.1-.4-1.1-2.5-1.1-2.5s-.2 2.3-.1 2.7c0 .4.2.6.7.5"/><path d="m16.5 51.6h-1.1v3.7h-2.2c1.1.9 2.2 1.6 3.4 2.4v-6.1z"/><path d="m15.4 8.7v3.7h1.1v-6.1c-1.2.7-2.3 1.5-3.4 2.4h2.3"/><path d="m12.9 8.8c-.3.2-.6.5-.9.8l3 6.5h-2.5v-3.7h-1.1v3.7h-2.5l2.9-6.3c-.8.7-1.6 1.5-2.3 2.4l-2.3 4.9 3.9 8.4h-2.5v-3.7h-1.1v9.8h1.1v-4.1h2.6l-1.5 4.5 1.5 4.4h-2.6v-4.1h-1.1v9.8h1.1v-3.7h2.5l-3.9 8.4 2.3 4.9c.7.8 1.5 1.6 2.3 2.4l-2.9-6.3h2.5v3.7h1.1v-3.7h2.5l-3 6.5c.3.3.6.5.9.8l3.8-8.3-3.9-8.4h2.5v3.7h1.1v-9.8h-1.1v4.1h-2.6l1.5-4.4-1.5-4.4h2.6v4.1h1.1v-9.8h-1.1v3.7h-2.5l3.9-8.4-3.8-8.4m2.2 37.1h-2.5v-3.7h-1.1v3.7h-2.6l3.1-6.6 3.1 6.6m-3.1-10.7l-.8-2.3h1.6l-.8 2.3m.8-4.1h-1.6l.8-2.3.8 2.3m-.8-6.3l-3.1-6.6h2.5v3.7h1.1v-3.7h2.5l-3 6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f0.svg b/riot/emojione/svg/1f1f0.svg new file mode 100644 index 0000000..0ae3f9a --- /dev/null +++ b/riot/emojione/svg/1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m20.2 17.5h6v12l11.2-12h7.8l-11.9 11.9 12.5 17.1h-7.8l-8.9-12.7-2.9 3v9.7h-6v-29" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1e6.svg b/riot/emojione/svg/1f1f1-1f1e6.svg new file mode 100644 index 0000000..a9ebf08 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#2a5f9e"/><g fill="#ed4c5c"><path d="M57.4,16C52.1,7.6,42.7,2,32,2C21.3,2,11.9,7.6,6.6,16H57.4z"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14c10.7,0,20.1-5.6,25.4-14H6.6z"/></g><circle cx="32" cy="32" r="10" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1e7.svg b/riot/emojione/svg/1f1f1-1f1e7.svg new file mode 100644 index 0000000..d000185 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1e7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16c0-5.9-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z"/></g><path d="m23.5 45c0 0 6.5-4.3 14.1-.5v-1.6c0 0-6.4-4.2-1-4.8 5.4-.6 8.4 2.2 8.4 2.2v-1.4c0 0-9.2-4.9-1.3-3v-1.4c0 0-7.1-2.5-2.8-2.5s1.8 0 1.8 0v-.9c0 0-7.3-1-1.2-1.4v-.7c0 0-11-5.1-2.8-3.1v-1c0 0-4-.8-.9-1.2 0 0-1.6-2.1-4.2-2.1-2.6 0-2.2-2.6-2.2-2.6l-3.3 3.5c0 0 2.3-.2-1.4 1.7 0 0 3.1.3-3.9 4.4 0 0 2.6-1 2.6.7s-4.6 4-4.6 4l.4 1.1c0 0 3.2-2.5 3-.8-.2 1.7-5.2 4.3-5.2 4.3l.5.8c0 0 4.1-2.4 4.2-1.4 0 0 .6.7-3.4 2l.5.8c0 0 6.1-3 7.7-.8s-5.1 4.5-5.1 4.5l.1 1.2" fill="#83bf4f"/><g fill="#f9f9f9"><ellipse cx="29.8" cy="26.6" rx=".9" ry=".9"/><ellipse cx="33.4" cy="28.1" rx=".9" ry=".9"/><ellipse cx="26" cy="32.9" rx=".9" ry=".9"/><ellipse cx="36" cy="33.8" rx=".9" ry=".9"/><ellipse cx="38.9" cy="34.7" rx=".9" ry=".9"/><ellipse cx="27.1" cy="28.8" rx=".9" ry=".9"/><ellipse cx="32.2" cy="32" rx=".9" ry=".9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1e8.svg b/riot/emojione/svg/1f1f1-1f1e8.svg new file mode 100644 index 0000000..9f52557 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#49c3f2"/><path fill="#fff" d="m32 15l-15 30h30z"/><path fill="#3e4347" d="m32 21l-12 24h24z"/><path fill="#ffce31" d="m32 33l-12 12h24z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1ee.svg b/riot/emojione/svg/1f1f1-1f1ee.svg new file mode 100644 index 0000000..51b1147 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#ed4c5c"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#2a5f9e"/><path d="m28.7 20.9c0-2.8-.7-5.2-5.2-5.2-1.2 0-2 .3-2.8.5-.2-.3-3.2-.3-3.4 0-.8-.2-1.6-.4-2.7-.4-5.3 0-5.1 2.3-5.1 5.1 0 .4-.4 1.3-.4 1.3l1.9 6.8h16.1l1.9-6.8c0 0-.3-.8-.3-1.3" fill="#ffce31"/><g fill="#3e4347"><ellipse cx="19" cy="29" rx="8" ry="1"/><path d="m25.7 25h-1.1c0-1.3-.7-2.4-1.5-2.4-.8 0-1.5 1.1-1.5 2.4h-1.1c0-1.3-.7-2.4-1.5-2.4-.8 0-1.5 1.1-1.5 2.4h-1.1c0-1.3-.7-2.4-1.5-2.4-.8 0-1.5 1.1-1.5 2.4h-1.1c0-4-3.3-2.8-3.3-2.8.5-.8 1.1-1.2 1.8-1.2.8 0 1.6.6 2 1.6.5-1 1.2-1.6 2-1.6.8 0 1.6.6 2 1.6.5-.9 1.2-1.6 2-1.6.8 0 1.6.6 2 1.6.5-.9 1.2-1.6 2-1.6.8 0 1.6.6 2 1.6.5-1 1.2-1.6 2-1.6.7 0 1.3.4 1.8 1.2.4 0-2.9-1.2-2.9 2.8"/></g><g fill="#ffce31"><ellipse cx="16.8" cy="15.9" rx=".5" ry=".5"/><ellipse cx="15.6" cy="15.6" rx=".5" ry=".5"/><ellipse cx="14.4" cy="15.4" rx=".5" ry=".5"/><ellipse cx="13.2" cy="15.2" rx=".5" ry=".5"/><ellipse cx="12" cy="15.3" rx=".5" ry=".5"/><ellipse cx="10.9" cy="15.7" rx=".5" ry=".5"/><ellipse cx="10" cy="16.4" rx=".5" ry=".5"/><ellipse cx="9.3" cy="17.4" rx=".5" ry=".5"/><ellipse cx="9" cy="18.6" rx=".5" ry=".5"/><ellipse cx="9" cy="19.8" rx=".5" ry=".5"/><ellipse cx="9.2" cy="20.9" rx=".5" ry=".5"/><ellipse cx="21.2" cy="15.9" rx=".5" ry=".5"/><ellipse cx="22.4" cy="15.6" rx=".5" ry=".5"/><ellipse cx="23.6" cy="15.4" rx=".5" ry=".5"/><ellipse cx="24.8" cy="15.2" rx=".5" ry=".5"/><ellipse cx="26" cy="15.3" rx=".5" ry=".5"/><ellipse cx="27.1" cy="15.7" rx=".5" ry=".5"/><ellipse cx="28" cy="16.4" rx=".5" ry=".5"/><ellipse cx="28.7" cy="17.4" rx=".5" ry=".5"/><ellipse cx="29" cy="18.6" rx=".5" ry=".5"/><ellipse cx="29" cy="19.8" rx=".5" ry=".5"/><ellipse cx="28.8" cy="20.9" rx=".5" ry=".5"/><path d="m18.3 11.2c.1.3.3.5.5.5l-.8 1.4.3.5c-.6.2-1 .7-1.1 1.2 0 .2-.1.3-.1.5 0 1 .8 1.8 1.8 1.8s1.8-.8 1.8-1.8c0-.2 0-.3-.1-.5-.2-.6-.6-1-1.1-1.2l.3-.5-.8-1.4c.3-.1.5-.2.5-.5l1.1.7 1.4-.9-1.4-.9-1.1.7c-.1-.2-.3-.4-.5-.5l.8-1.5-.8-1.6-.9 1.7.8 1.5c-.3 0-.5.2-.5.5l-1.1-.7-1.5.8 1.4.9 1.1-.7"/></g><g fill="#3e4347"><path d="m15.5 20.7c-.5.5-1.1.8-1.7.9.9.2 2 0 2.7-.7 1.1-1.1 1.1-3 0-4.1-.1-.1-.3-.2-.4-.3.7 1.4.5 3.1-.6 4.2"/><path d="m22.5 20.7c.5.5 1.1.8 1.7.9-.9.2-2 0-2.7-.7-1.1-1.1-1.1-3 0-4.1.1-.1.3-.2.4-.3-.7 1.4-.5 3.1.6 4.2"/><ellipse transform="matrix(.9918-.1281.1281.9918-3.1463 2.1329)" cx="15" cy="25.5" rx=".4" ry="1.6"/><ellipse transform="matrix(.9607-.2776.2776.9607-6.7054 4.1296)" cx="11.2" cy="25.7" rx=".4" ry="1.6"/><ellipse transform="matrix(.1281-.9918.9918.1281-5.2682 45.0593)" cx="23" cy="25.5" rx="1.6" ry=".4"/><ellipse transform="matrix(.2776-.9607.9607.2776-5.3957 44.3142)" cx="26.8" cy="25.7" rx="1.6" ry=".4"/><ellipse cx="19" cy="25.4" rx=".4" ry="1.7"/><circle cx="19" cy="20" r="1.1"/><circle cx="19" cy="18" r="1"/><circle cx="19" cy="16.4" r=".8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1f0.svg b/riot/emojione/svg/1f1f1-1f1f0.svg new file mode 100644 index 0000000..5eb3cd7 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M29.2,8H50c-5-3.8-11.2-6-18-6c-6.8,0-13,2.2-18,6h11.6v48H14c5,3.8,11.2,6,18,6c6.8,0,13-2.2,18-6H29.2V8z" fill="#ffce31"/><path d="m62 32c0-9.8-4.7-18.5-12-24h-20.8v48h20.8c7.3-5.5 12-14.2 12-24" fill="#c94747"/><path d="m25.6 8h-11.6c-.1.1-.3.2-.4.3v47.4c.1.1.3.2.4.3h11.6v-48" fill="#ff8736"/><path d="M2,32c0,9.6,4.5,18.2,11.6,23.7V8.3C6.5,13.8,2,22.4,2,32z" fill="#699635"/><g fill="#ffce31"><path d="m34.4 49.6c-1.1.8-3.2.7-4.1 1.7-1.1 1.1.1 2.5.1 2.7l-.1.8c0 0 .7 0 1.1.1.5.1.7.5 1.5.4 2.2-.1 2.1-2.1 2.2-3.8.1-.6.4-1.5.5-2.1.1-.6.2-1.4.2-1.4 0-.3-.7 1.1-1.4 1.6"/><path d="m35.1 12.7c-.1-1.7 0-3.7-2.2-3.8-.9-.1-1.1.3-1.5.4-.3 0-1.1.1-1.1.1l.1.8c0 .1-1.2 1.6-.1 2.7.9.9 3.1.9 4.1 1.7.7.5 1.4 1.8 1.4 1.8 0 0 0-.9-.2-1.4-.1-.8-.4-1.7-.5-2.3"/><path d="m61.8 28.7c-.8 0-1.5-.1-2.2-.1.3.2-.8-3.5-.2-4 .7-.6.2-4.2-.4-5 0-.1 0-.3.1-.4-.3-.7-.7-1.4-1.1-2-1.1-.4-2-1.1-2.4.5-.4-.5-1.5-1.6-2.2-1.3-.1.4-.2.8-.4 1.2-.5.2-2.3-.8-3.3-.6 0 2-1.2 1.2-2.6 1.9-2.6 1.2-1.3-1.1-3-1.1-3.2 0 1.3 4.9 2.1 5.4.1-.2-.3-.6 0-.8 0 0 1.1.9 1.1.6.1-.3.1-.6.3-.8.3.5 2.6 3.2 2.1 3.7-.1.1-2.3-.1-2.3-.1.1-.2.2-.7.2-.8-.7-.7-2-.8-2.7-.6-.6.2-1.7 1-1.8 2 .4-.1 1.8-.5 2-.3.1.1-.4.8-.4.9.6 0 1.8.3 2.1.3.1-.2.3-.5.4-.7.3.4.5.8.8 1.3.3.2.9-1.8 1.5-.4.2.5-4.9 5.3-5.2 7.1-.2 1 0 2 .4 2.9-.9-1-3.3-3.7-3.9-3.4-1.5.8-.2 5.4.5 6.3.8 1.1 5.5 3.8 5.5.2 0-.2-.2-.5-.4-.9 1.1.7 2.5 1.3 3.1 2 .7.8 1.3 3 1.2 4.2-.3 2.9-4.8.2-4.8 3.4 0-.4 4.4.2 4.7-.1.7-.5 2.9 1.2 2.5-1.2-.4-2.4 2.5-1.3 2.5-3.2 0-1-3.1.2-1.4-2.5.7-1 .2-2.4 1-1.3 1.3 1.6 3.4.5 5.7-.7.7-2.6 1.1-5.3 1.1-8.1 0-1.3-.1-2.4-.2-3.5"/><path d="m40 41.8c-.2.7-1.2-3.1-1-3.3.4.1.7.1 1.1.1.3-.2-.7-.7-1.6-1 .8 0 1.5-.3 1.5-.5 0-.2-.4-.4-1.1-.5.6-.1 1-.3 1-.5 0-.2-.5-.4-1.2-.5.7-.1 1.3-.3 1.3-.5 0-.2-.3-.4-.8-.5.6-.1 1-.3 1-.6 0-.2-.3-.4-.8-.5.5-.1.9-.2 1.2-.3 1.7-1.8-.5-3-.5-1.1 0 .8-2.2.5-2.6.3-.4-.2-.2-.4 0-.7.4.2 2.2.5 2.3-2.1.1-1.1.1-16.3 1.5-16.3-5.9-.3-3.3 14.6-3.8 17.9-.4-.7-2.1.1-1.6 1.2.3.6 1 .9 1.7 1.1-.5.1-.9.3-.9.5 0 .2.3.4.8.5-.6.1-1 .3-1 .5 0 .2.5.4 1.2.5-.7.1-1.3.3-1.3.5 0 .2.5.4 1.1.5-.6.1-1 .3-1 .5 0 .2.3.4.8.5-.4.1-.6.3-.6.6.4.2.8.4 1.2.6 0 .8-.4 2.5-.7 3.3-.1-.3-.4-.4-.6-.5-1.3.1 1 1.6 1 1.5 0 .5-.5.4-.7.7 0 0 1.6 1 1.6 1.2.2-.2 1.5-1.1 1.6-1.2-.2-.2-.7-.4-.7-.7 0-.2 1.3-.5 1.4-.9.1-.4-.7-.8-.8-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1f7.svg b/riot/emojione/svg/1f1f1-1f1f7.svg new file mode 100644 index 0000000..13995a6 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56 14h-24v6h27.5c-.9-2.1-2.1-4.2-3.5-6" fill="#ed4c5c"/><path d="m61.4 38c.4-1.9.6-3.9.6-6h-60c0 2.1.2 4.1.6 6h58.8" fill="#f9f9f9"/><path d="m32 2v6h18c-5-3.8-11.2-6-18-6" fill="#ed4c5c"/><g fill="#f9f9f9"><path d="m32 14h24c-1.7-2.3-3.7-4.3-6-6h-18v6"/><path d="m59.5 20h-27.5v6h29.4c-.4-2.1-1.1-4.1-1.9-6"/></g><g fill="#ed4c5c"><path d="m32 26v6h30c0-2.1-.2-4.1-.6-6h-29.4"/><path d="m4.5 44h55c.8-1.9 1.5-3.9 1.9-6h-58.8c.4 2.1 1.1 4.1 1.9 6"/></g><path d="m8 50h48c1.4-1.8 2.6-3.9 3.5-6h-55c.9 2.1 2.1 4.2 3.5 6" fill="#f9f9f9"/><path d="M8,50c1.7,2.3,3.7,4.3,6,6h36c2.3-1.7,4.3-3.7,6-6H8z" fill="#ed4c5c"/><path d="m14 56c5 3.8 11.2 6 18 6s13-2.2 18-6h-36" fill="#f9f9f9"/><path d="M32,2C15.4,2,2,15.4,2,32h30V2z" fill="#2a5f9e"/><path fill="#fff" d="m20 22.2l5.6 3.8-2.1-6.1 5.5-3.8h-6.9l-2.1-6.1-2.1 6.1h-6.9l5.5 3.8-2.1 6.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1f8.svg b/riot/emojione/svg/1f1f1-1f1f8.svg new file mode 100644 index 0000000..ef9b034 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#f9f9f9"/><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z" fill="#428bc1"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z" fill="#83bf4f"/><path d="m35.1 30.8c.9-1.1 1.4-2.7 1.4-4.5 0-3.5-2-6.2-4.5-6.2s-4.5 2.7-4.5 6.2c0 1.8.5 3.4 1.4 4.5l-6.9 8c0 0 0 5.3 10 5.3s10-5.3 10-5.3l-6.9-8m-.4-4.6c0 1.2-.3 2.3-.8 3.1l-1.5-1.7v-1.6l1.4-.7-1.4-.7v-2.8c1.3.4 2.3 2.3 2.3 4.4m-5.4 0c0-2.2 1-4 2.3-4.4v2.8l-1.4.7 1.4.7v1.6l-1.5 1.7c-.5-.8-.8-1.9-.8-3.1" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1f9.svg b/riot/emojione/svg/1f1f1-1f1f9.svg new file mode 100644 index 0000000..513d722 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ffce31"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#c94747"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1fa.svg b/riot/emojione/svg/1f1f1-1f1fa.svg new file mode 100644 index 0000000..78de148 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#428bc1"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#c94747"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1fb.svg b/riot/emojione/svg/1f1f1-1f1fb.svg new file mode 100644 index 0000000..b3fa271 --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.2 39v-14c-3.2-13.2-15-23-29.2-23s-26 9.8-29.2 23v14c3.2 13.2 15 23 29.2 23s26-9.8 29.2-23" fill="#c94747"/><path d="m61.2 39v-14c-3.2-13.2-15-23-29.2-23s-26 9.8-29.2 23v14c3.2 13.2 15 23 29.2 23s26-9.8 29.2-23" opacity=".15" fill="#c28fef"/><path d="m2 32c0 2.4.3 4.8.8 7h58.3c.5-2.2.8-4.6.8-7 0-2.4-.3-4.8-.8-7h-58.3c-.5 2.2-.8 4.6-.8 7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1-1f1fe.svg b/riot/emojione/svg/1f1f1-1f1fe.svg new file mode 100644 index 0000000..dd29b3b --- /dev/null +++ b/riot/emojione/svg/1f1f1-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#3e4347"/><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z" fill="#c94747"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z" fill="#83bf4f"/><g fill="#fff"><path d="m38.2 36.7v-3.6l-3.5-1.1 3.5-1.1v-3.6l2.2 2.9 3.6-1.1-2.2 2.9 2.2 2.9-3.6-1.1z"/><path d="m32.8 40c-4.4 0-7.9-3.6-7.9-8s3.5-8 7.9-8c1.7 0 3.2.5 4.5 1.4-1.8-2.1-4.5-3.4-7.4-3.4-5.5 0-9.9 4.5-9.9 10s4.4 10 9.9 10c3 0 5.6-1.3 7.4-3.4-1.2.9-2.8 1.4-4.5 1.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f1.svg b/riot/emojione/svg/1f1f1.svg new file mode 100644 index 0000000..9239d51 --- /dev/null +++ b/riot/emojione/svg/1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m22.7 17.5h6.1v23.8h14.5v5.2h-20.6v-29" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1e6.svg b/riot/emojione/svg/1f1f2-1f1e6.svg new file mode 100644 index 0000000..f2e7c5a --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f42f4c"/><path d="m23.3 44l3.3-9.9-8.6-6.2h10.7l3.3-9.9 3.3 9.9h10.7l-8.7 6.1 3.3 9.9-8.6-6-8.7 6.1m10.5-7.4l2.7 1.9-1-3.1-1.7 1.2m-5.3-1.2l-1 3.1 2.7-1.9-1.7-1.2m.7-2.1l2.8 2 2.8-2-1.1-3.2h-3.5l-1 3.2m-4.5-3.2l2.7 1.9.6-1.9h-3.3m11.9 1.9l2.7-1.9h-3.3l.6 1.9m-5.6-4.1h2l-1-3.1-1 3.1" fill="#4f682e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1e8.svg b/riot/emojione/svg/1f1f2-1f1e8.svg new file mode 100644 index 0000000..a022834 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#f9f9f9"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1e9.svg b/riot/emojione/svg/1f1f2-1f1e9.svg new file mode 100644 index 0000000..76845b6 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#2a5f9e"/><path d="m42 3.7c-3.1-1.1-6.5-1.7-10-1.7-3.5 0-6.9.6-10 1.7v56.6c3.1 1.1 6.5 1.7 10 1.7 3.5 0 6.9-.6 10-1.7v-56.6" fill="#ffe62e"/><path d="m41.2 30.9h.1v-1l-.8.6.1.1c0 0-.1.1-.1.1 0 0 0 .1 0 .1-.1 0-.1 0-.2 0-.2 0-.2 0-.3 0-.1.1-.1.2-.1.4 0 .1 0 .3 0 .4 0 .2-.1.3-.1.3 0 0 0 0-.1.1 0-3.5 0-6.8 0-6.9 0-.6-1.9-2.4-1.9-2.4l-1.9 1.5.1 1.2c-.4 0-1.9.9-2.1.9-1.6-.9-.5-2.9-.5-3l.2.2c0 0 .2-.8-.2-1.4 0 0 .8-.2.8-.2s-1.9-1.4-3.7-.7c0 0 0 0 0 0 0-.2 0-.3-.1-.4l-.2-.2-.1.3c0 .1-.1.1-.2.1h-.2v-.2c0-.1 0-.1.1-.2l.3-.1-.1-.1c-.2-.2-.7-.2-.9 0l-.2.2.3.1c.1 0 .1.1.1.2v.1h-.2c-.1 0-.1 0-.2-.1l-.1-.2-.2.2c-.1.1-.1.3-.1.4 0 .2 0 .3.1.4l.2.2.1-.2c0-.1.1-.1.2-.1h.2v1.4c0 .1 0 .1-.1.1l-.5.2.6.1c.1 0 .2.2.2.3l.1.4.1-.4c0-.1.1-.3.2-.3l.6-.1c0 .2.3 2.1-.8 2.9-.2-.1-1.7-.9-2.1-.9l.1-1.2-1.9-1.5c0 0-1.9 1.8-1.9 2.4 0 0 0 2.1 0 4.8l-.1-.1-.1.2c0 0-.1.1-.1.2-.2-.2-.4-.3-.5-.3l-.1-.1v.2c0 0-.1.5 0 .8-.1 0-.2 0-.2 0h-.2v.2c0 0 .1.5.5.8.2.2.5.2.6.2l.2.4c0 0 0 .1 0 .1-.2-.1-.4-.1-.5-.1-.1 0-.2 0-.2 0h-.2l.1.2c0 0 .1.1.1.2-.1 0-.1 0-.1 0h-.1l.1.1c0 0 .3.5.7.6 0 0 .1 0 .2 0 0 2.4-.3 6.8-.3 6.8s2.8-2.5 2.8-2.5c0 0-.5.7-.6 1-.1.4.2 1.3 1.3.9l-.1.5.9.5c-.1.1-.7.3-.7.3l4.4 2.9 4.4-2.9c0 0-2.4-.9-3.2-4.1 0 0 .7-.3.7-.3.3.2 2.3 2.8 2.3 2.8 0 0 0 0-.1.1-.1 0-.1 0-.1 0-.1 0-.1.1-.1.9v.2l.2-.1c.7-.5.7-.5.7-.6 0 0 0-.1-.1-.1 0 0 0 0 .1 0 .1 0 .6-.2.7-.4.5-.7.2-1.3.2-1.3.2.3 2.4 2.2 2.4 2.2s-.3-4.3-.3-6.6l.5-.9c0 0 0 0 .1 0 0 0 .1-.1.1-.1 0 0 0-.1 0-.1 0 0 .1 0 .1-.1.1-.1.1-.1.1-.2 0-.1 0-.1.2-.3.1-.1.2-.2.3-.2.2-.1.3-.2.3-.3 0 0 0-.1-.2-.4 0 0 .1-.1.1-.1.1.1.1 0 .1 0m-11.1-9.3c-.1 0-.2 0-.2.1v-.1h.2c0-.1.1 0 0 0m6.3 16.1c-.1-.2-.8-1.6-1-1.9.1-.1.2-.1.4-.2.2-.1.4-.3.5-.4.2.7.5 1.7.8 2.3 0 0-.7.3-.7.2m-9.3.1l-.1-.3c.1-.1.4-.3.5-.5.2-.4.1-.8.1-.9v-.2c0 0-.3.1-.3.1 0-.1.1-.7.2-1 .1.1.3.3.5.4.1.1.2.1.4.2-.2 1.2-1.3 2.2-1.3 2.2m2.9-14.6c-.1 0-.1-.1-.1-.1v-.4c.3.1.5.3.6.7l-.5-.2m-1.6 16.4l-.6-.4c0-.1 1.9-2.3 2.1-2.6 0 0 .7.3.7.3-.3.7-1.4 2.9-2.4 3.7l.2-1" fill="#997361"/><g fill="#ffd200"><path d="m27.5 39.2l.7.4-.2.9-.7-.5z"/><path d="m24 31.2l-.3.1 3 6.7h.3l-3-6.8m3.6 7.9l-.2.2.1.3.3-.1-.2-.4"/></g><g fill="#699635"><path d="m24.9 36.5l.4.6-.4.1 1.1.5.6-.2-.1-.4-1.6-.6"/><path d="m26.9 35.5l-.5.7.4 1.3.6-.5.1-.8-.4.2-.2-.9"/><path d="m25.7 35.4l-.8.1-.7-.3.5-.2-.4-.5h.6l.8.9"/><path d="m25.9 33.4l.1.6.3-.2v1.1l-.6.6-.5-.9.1-.6.6-.6"/><path d="m23.2 32.3l.8.1.6.8h-.8l-.6-.6.4-.1-.4-.2"/><path d="m24.6 31.5l.2.5.3-.3.2 1-.4.7-.6-1.4.3-.5"/><path d="m23.1 29.9l.1.7.2.3-.6-.2.4.7.7.2.3-.8-.4-.9-.1.5-.6-.5"/></g><path d="m40.7 30.5l.1.1-.1.1v.2h-.6v.7l-.3.4.1.2-.1.1v.3l-2.1 4-.5.5.1.5-.3.1.1.4.4-.1-.1-.3.4-.2.1-.7 2.1-4 .2-.2v-.1l.2-.1.2-.5.5-.4-.2-.5.2-.1v-.2h.1v-.6l-.5.4m-4.5 9v.1h-.2v.8l.6-.5-.1-.2.1-.1-.1-.2h-.1l-.2.1" fill="#ffd200"/><path d="m36.3 27.3c0-.3.4-.6.4-.6h-9.8c0 0 .4.3.4.6v7.3c0 .2.1.3.2.4.1.1.3.3.5.4.6.4 1.7.9 2.5 1.2.7.3 1 .4 1.3.9.4-.4.6-.6 1.3-.9.8-.4 1.9-.8 2.5-1.2.2-.1.4-.3.5-.4.1-.1.2-.2.2-.4v-7.3" fill="#f5d402"/><path d="m27.6 31.4v-4.1c0-.2-.1-.4-.1-.4h8.8c0 0-.1.1-.1.4v4.1l-4.3 1.3-4.3-1.3" fill="#ed4c5c"/><path d="m36.1 31.4h-2.6-3.2-2.6v3.2c0 .2.2.5 1.1 1 1.6.8 2.8 1.1 3.1 1.6.4-.4 1.6-.8 3.1-1.6 1-.5 1.1-.8 1.1-1v-3.2" fill="#428bc1"/><g fill="#ffe62e"><path d="m28.9 33.3l-.8 1 .7 1.1 1.3-.3.1-1.3-1.3-.5"/><path d="m33.5 34.5c0 .4.4.8.8.9-.1-.1-.1-.3-.1-.4-.1-.5.3-.9.9-.9.1 0 .2 0 .3 0-.2-.3-.6-.5-1-.5-.5 0-.9.4-.9.9"/><path d="m29.6 29.2l1.4 1.5.4-.2.5.2.5-.2.4.2 1.4-1.5-.5-1.6 1.1 1.7-1.5 1.9.3.8-.8.3-.1 2.9.4.4-1.2.7-1.2-.7.4-.4-.1-2.9-.8-.3.3-.8-1.5-1.9 1.1-1.7-.5 1.6"/><path d="m31.8 27.7l.2.5.5-.2-.2.5.5.2-.5.2.2.5-.5-.4-.2.5-.1-.5-.5.2.2-.5-.5-.2.5-.2-.2-.5.5.2.1-.3"/><path d="m29.7 31.4l-.8.6-.9-.6.9-.5.8.5"/><path d="m35.6 31.4l-.8.6-.8-.6.8-.5.8.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1ea.svg b/riot/emojione/svg/1f1f2-1f1ea.svg new file mode 100644 index 0000000..7eb38ad --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffce31"/><circle cx="32" cy="32" r="27" fill="#ed4c5c"/><path d="m45.6 31.3l2.5-1.2 1.1-1.6-.1-.4-1.4 1-1.2.5h-.2l1.7-1 1.1-2.1-.2-.4-1.2 1.3-1.3.9h-.1l2.1-2.5.4-2-.2-.1-1.4 2.3-.6.6-.1-.1 1.2-2 .4-2.1-.3-1.3-.2-.1-.8 2.4-.8 1.4-.1-.1.9-3.6-.3-2.7-.4-.4-.3 2.5-.7 2.2-.1-.1.3-1.6-.1-3-.8-1.5-.6 4.6-.3.1-.9 2.5-.9 1.3-.2-.4h-.2l-1.2 1.9-1.2 2 .8 1.3.5.8-.8.5-1 .1-.3.5-.4.3h-.1l.6-2.5-1.9-2.2-.3.1v-.2l-.3-1h.5v-.4l-.2-.8.1-.3.4.3.2-.4.4-.8.6.2 1.2-.4.4-.4 1.2.3 1.3-.6-.1-1.1h-.2l-.3.8-.9.1-1.2-.1-.5.1.8-.5.8.2h.3l-.1-1-.9-.4-.5.1-.7-.7-1.8.4h-.8l-.7-.4.1-.5.2-.1.1-.2-.2-.3.4-.5.4-.2h.3l.1-.1.2-.2v-.4-.2l.1-.3v-.1l.1-.3-.2-.3h-.1l-.1-.3-.2-.2v-.2l-.2-.3h-.2l-.5-.3-.2-.1-.1-.2-.2-.1h-.1l-.7-.3-.2-.1-.7-.3-.2-.1.2-.5-.4-.6-.3-.1v-.2h.4v-.6h-.4l.1-.4h-.7l.1.4h-.4v.6h.4v.2l-.3.1-.3.6.2.5-.2.1-.7.3-.2.1-.8.2h-.1l-.2.1-.1.2-.2.1-.5.3h-.2l-.2.3v.2l-.2.2-.1.3h-.1l-.2.3.1.3v.1l.1.3v.2.4l.2.2.1.1h.3l.4.2.4.5-.2.3.1.2.2.1.1.5-.7.4h-.8l-1.8-.5-.7.7-.5-.1-.9.4-.1 1h.3l.8-.2.8.5-.5-.1-1.2.1-.9-.1-.3-.8h-.2l-.1 1.1 1.3.6 1.2-.3.4.4 1.2.4.6-.2.4.8.2.4.4-.3.1.3-.1.9v.4h.5l-.3 1-.1.1-.3-.1-2 2.3.6 2.5h-.1l-.4-.3-.3-.5-1-.1-.8-.4.5-.8.8-1.3-1.2-2-1.2-1.9h-.2l-.2.4-.9-1.3-.9-2.5-.3-.1-.6-4.6-.8 1.5-.2 2.8.3 1.6-.1.1-.7-2.2-.2-2.3-.4.6-.3 2.7.9 3.6-.1.1-.9-1.6-.8-2.4-.2.1-.3 1.3.4 2.1 1.2 2-.1.1-.5-.8-1.4-2.3-.2.1.4 2 2.1 2.5h-.1l-1.3-.9-1.2-1.3-.2.4 1.1 2.1 1.7 1h-.2l-1.2-.5-1.4-1-.1.6 1.1 1.6 2.5 1.2.1.1-.9-.2-2.2-.9-.3.1 1.1 1.7 2.2.6.1.1-1.1-.1-1.4-.4-.1-.3h.1l-.2.1-.2-.1v-.4l-.1-.1-.6.3.1.3.2.3-.5.1-.1.2.2.6h.1l.4-.2.1.5-.3.2.1.4.7.7.5 2.8 1.2 2.2.1.2-.1.5.4.5.1.2v.9l.6 1.3.1.2-.2.1-.4.5v.6l.4.5-.1.2.3.6.5.2v.3l.4.3h.5l.3.1v.7.5l.4-.1.4.1.5.2v-.3l.1-.5.5-.1.2-.2-.4-.2-.5-.4-.1-.2.1-.2v-.2l.2-.2.3-.3.4-.6.5-.4.7-.6.8-.4.1.5 1-.6 1.1-.6.3.4 1.1-1.1 1.7-1.9.2.1v.1l-.3.7-.9.7-.3 1.1.2.5-.5.7-.2.9-.2.3-.8.7-1 .7-.1.4.6.4.6.1v.2l-.2.8.6.2.7-.2v.1l-.1.4.1.5.4-.1.6-.2.4-.2-.1.3v.7l.4.6.4-.1.4-.5.2.7.8 1.2.8-1.2.2-.7.4.5.4.1.4-.6v-.7l-.1-.3.4.2.6.2.4.1.1-.5-.1-.4v-.1l.7.2.6-.2v-.8-.2l.6-.1.6-.4-.1-.4-1-.7-.8-.7-.1-.3-.2-.9-.5-.7.2-.5-.3-1.1-.7-.8-.3-.7v-.1l.2-.1 1.7 1.9 1.1 1.1.3-.4 1.1.6 1 .6.1-.3.8.3.7.3 1 .7 1.7.1 2.8-1 1.1-.6.1-.6-.2-.3v-.2l-.1-.4-.1-.5-1.1-1.7-.1-.1-.1-.1v-.5h.1l.2.1.2-.2.2-.5-.1-.2h-.3l-.1-.1.1-.3-.1-.2-.4-.2-.1.1v.3h-.1-.3-.2l-.2.6v.2h.4l.1.1-.2.3-.2.1h-.3l-1.2.4-.7.8-.2.2-.3.4-.2.4-.1 1.1.5.8-.1.2-.4-.2-1.1-.8-.1-.2.2-.1v-.2l-.6-.3v-.3l.3-.4-.9-.2-.3-.2.2-.3v-.2l-1-.2-1.5-1.6 1 .9.6-.4-.4-.5h.1l1.6.7 1.1-.3-.3-.4.1-.1h1.5l1.1-.8-.8-.2-.1-.3h1.6l.8-.9-.9-.2-.3-.2 1.8-.1.9-1.2v-.2l-1.3.2-.8-.1 2.4-.5.9-1.5-1.5.4-1.1.1.1-.1 2.2-.6 1.1-1.7-.3-.1-2.2.9-.9.2.2-.1m-29.1 1.9l-.3.2-.2-.4v-.1l.3-.1.2.4m9.9 5.8l-1.1.9-1 .2v.2l.2.3-.3.2-.9.2.3.4v.3l-.6.3v.2l.6.2-.3.2-1.1.4h-1.5-.7l-.1-.6-.4-1-.5-.6v-.2l-.1-.4-.5-.5v-.4l-.3-1.4-1-1.8-.5-1.7v-.9l.1-.2.4.4 2.4.5-.8.1-1.4-.2v.2l.9 1.2 1.8.1-.3.2-.9.2.8.9h1.6l-.2.2-.8.2 1.1.8h1.5l.1.1-.3.4 1.1.3 1.6-.7h.1l-.4.5.6.4 1-.9-.2.8m8.6-23l-.1-.3.6.5.3.5v.6.4l.1.1-.4.2h-.5l-.1-.2.4-.6-.3-1.2m-2.2 1.3l.1-.9-.2-1.2.7.5.5 1-.1.6.1.4-.3.2-.5.1-.5-.2-.2-.1.4-.4m-2-1.6l.7-.5-.2 1.2.1.9.3.4-.2.1-.5.2-.5-.1-.3-.2.1-.4-.1-.6.6-1m-1.6 2.3h-.5l-.3-.1.1-.1v-.4-.6l.3-.5.6-.5-.2.2-.3 1.2.4.6-.1.2m5.7 4.1l-.6.4.4.3-.7.6-.7.3-.1.2.3.4.1.1-.8.7-.5.3-.1.5.3.4v.3l-.5.7-.5-.7v-.3l.3-.4-.1-.5-.5-.3-.8-.7.1-.1.3-.4-.1-.2-.6-.3-.7-.6.4-.3-.6-.4-.6-.5.7-.6.1-.5 2.5.4 2.5-.4.1.5.7.6-.3.5" fill="#ffce31"/><path fill="#428bc1" d="m27 31h10v6h-10z"/><path fill="#83bf4f" d="m32 43l4-4h-8z"/><path fill="#ffce31" d="m30.3 36.5l-.6.5h1.4l.3-.4 1.1-.9.6.9.2.4h1l-.2-.5.8-.8.4-.3.2-3-.8.5.2 1.6-1.1-.9h-2.2l.2-.6-.9-1-.9 1 .2.7-.7.8-.8-.4-.5.8 1.2.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1eb.svg b/riot/emojione/svg/1f1f2-1f1eb.svg new file mode 100644 index 0000000..16bfba0 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#428bc1"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1ec.svg b/riot/emojione/svg/1f1f2-1f1ec.svg new file mode 100644 index 0000000..3571c0a --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M22,60.3V3.7C10.4,7.8,2,18.9,2,32S10.4,56.2,22,60.3z" fill="#f9f9f9"/><path d="m22 32h40c0-16.6-13.4-30-30-30-3.5 0-6.9.6-10 1.7v28.3" fill="#ed4c5c"/><path d="m22 32v28.3c3.1 1.1 6.5 1.7 10 1.7 16.6 0 30-13.4 30-30h-40" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1ed.svg b/riot/emojione/svg/1f1f2-1f1ed.svg new file mode 100644 index 0000000..bc53ad9 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="m39.8 3c-16-4.3-32.5 5.2-36.8 21.2-1.3 4.9-1.3 9.9-.3 14.5l43.6-33c-1.9-1.1-4.2-2-6.5-2.7"/><path d="m11.6 54c3.5 3.2 7.7 5.7 12.6 7 16 4.3 32.5-5.2 36.7-21.2.6-2.3.9-4.6 1-6.9l-50.3 21.1"/></g><path d="m58 17.1c-2.7-4.7-6.7-8.7-11.6-11.4l-43.6 33c.6 3 1.8 5.8 3.2 8.3l52-29.9" fill="#ff8736"/><g fill="#fff"><path d="m58 17.1l-52 29.9c1.5 2.6 3.4 4.9 5.6 7l50.4-21.1c.2-5.6-1.3-11.1-4-15.8"/><path d="m19.6 18.1l6.7-.4-6.7-.4 3.7-1.4-3.9.7 3.2-2.3-3.6 1.6 2.5-3.1-3 2.5 1.6-3.6-2.3 3.2.6-3.9-1.4 3.7-.4-6.7-.4 6.7-1.4-3.7.6 3.9-2.3-3.2 1.6 3.6-3-2.5 2.5 3.1-3.6-1.6 3.2 2.3-3.9-.7 3.6 1.4-6.6.4 6.6.4-3.6 1.4 3.9-.6-3.2 2.3 3.6-1.6-2.5 3.1 3-2.5-1.6 3.6 2.3-3.2-.6 3.9 1.4-3.7.4 6.7.4-6.7 1.4 3.7-.6-3.9 2.3 3.2-1.6-3.6 3 2.5-2.5-3.1 3.6 1.6-3.2-2.3 3.9.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f0.svg b/riot/emojione/svg/1f1f2-1f1f0.svg new file mode 100644 index 0000000..8a3bc3e --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.6 33l16.3 1.1c0-.7.1-1.4.1-2.1 0-5.4-1.4-10.4-3.9-14.8l-14.3 8.1-2.6-3.3 11-12.1c-4.2-3.9-9.6-6.6-15.5-7.5l-2.6 16.2h-4.1l-2.7-16.2c-5.9.9-11.3 3.6-15.6 7.5l11 12.1-2.6 3.2-14.2-8c-2.5 4.4-3.9 9.4-3.9 14.8 0 .7 0 1.4.1 2.1l16.3-1.1.9 4-15.1 6.2c2.2 5.5 6 10.2 10.8 13.5l9.3-13.4 3.7 1.7-4.7 15.7c2.8.9 5.7 1.3 8.7 1.3 3 0 5.9-.4 8.7-1.3l-4.7-15.7 3.7-1.8 9.3 13.5c4.8-3.3 8.6-8 10.8-13.5l-15.1-6.2.9-4" fill="#ed4c5c"/><g fill="#ffce31"><path d="m34.1 18.6l2.6-16.2c-1.6-.3-3.1-.4-4.7-.4s-3.1.1-4.7.4l2.6 16.2h4.2"/><path d="m43.8 25.2l14.3-8.1c-1.6-2.7-3.5-5.2-5.8-7.3l-11.1 12.2 2.6 3.2"/><path d="m45.6 33l-.9 4 15.2 6.1c1.1-2.8 1.9-5.9 2.1-9.1l-16.4-1"/><path d="m36 45l4.7 15.7c3-.9 5.8-2.3 8.4-4l-9.3-13.4-3.8 1.7"/><path d="M24.3,43.2L15,56.7c2.5,1.8,5.4,3.1,8.4,4L28,45L24.3,43.2z"/><path d="m18.4 33l-16.3 1.1c.2 3.2.9 6.2 2.1 9.1l15.1-6.2-.9-4"/><path d="m22.8 22l-11-12.1c-2.3 2.1-4.3 4.6-5.8 7.3l14.3 8.1 2.5-3.3"/><circle cx="32" cy="32" r="9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f1.svg b/riot/emojione/svg/1f1f2-1f1f1.svg new file mode 100644 index 0000000..650d974 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#83bf4f"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#c94747"/><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f2.svg b/riot/emojione/svg/1f1f2-1f1f2.svg new file mode 100644 index 0000000..2df73cf --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#ed4c5c"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ffe62e"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z" fill="#699635"/><path fill="#fff" d="m32 41.1l11.7 8.9-4.4-14.5 11.7-9h-14.5l-4.5-14.5-4.5 14.5h-14.5l11.7 9-4.4 14.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f3.svg b/riot/emojione/svg/1f1f2-1f1f3.svg new file mode 100644 index 0000000..bfb46eb --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c94747"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3"/></g><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#2872a0"/><g transform="scale(5)"><circle cx="2.6" cy="4.8" r=".7" fill="#f9cf02"/><circle cx="2.6" cy="4.4" r=".8" fill="#c94747"/><g fill="#f9cf02"><circle cx="2.6" cy="4.6" r=".5"/><path d="m2.3 3.6c0 .2.1.3.3.3.2 0 .4-.1.4-.3 0-.1-.1-.1-.1-.2s0-.1 0-.2c0 .1 0 .1 0 .2 0 .1 0 .1 0 .1s0 .1-.1.1-.1 0-.1-.1c0-.1.1-.1.1-.2s0-.1-.1-.2c0-.1-.1-.1-.1-.2-.1 0 0 .2 0 .2s-.1.1-.1.2c0 .1 0 .1 0 .2 0 0 0 .1-.1.1s-.1 0-.1-.1c0-.1 0-.1 0-.1 0-.1-.1-.1 0-.2-.1.1 0 .1 0 .2s0 .1 0 .2"/><path d="m1.2 5.6v3.1h.6v-3.1c.1 0-.6 0-.6 0m2.2 0v3.1h.7v-3.1c0 0-.7 0-.7 0m-1.4.5v.3h1.3v-.3h-1.3m0 1.8v.3h1.3v-.3c0 0-1.3 0-1.3 0m0-2.3h1.3l-.7.4-.6-.4m0 2.7h1.3l-.7.4-.6-.4"/></g></g><circle cx="13.2" cy="35.8" r="3.4" fill="#f9cf02"/><g fill="#c94747"><path d="m13.2 39.5c-2 0-3.6-1.6-3.6-3.6s1.6-3.6 3.6-3.6 3.6 1.6 3.6 3.6-1.6 3.6-3.6 3.6m0-6.9c-1.8 0-3.3 1.5-3.3 3.3s1.5 3.3 3.3 3.3 3.3-1.5 3.3-3.3-1.5-3.3-3.3-3.3"/><path d="m13.2 39.5c-1.1 0-1.9-.9-1.9-1.9s.9-1.9 1.9-1.9c.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5v-.4c1.1 0 1.9.9 1.9 1.9 0 1.1-.9 1.9-1.9 1.9-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5v.4"/><circle cx="13.2" cy="34.1" r=".7"/><circle cx="13.2" cy="37.5" r=".6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f4.svg b/riot/emojione/svg/1f1f2-1f1f4.svg new file mode 100644 index 0000000..30c75b6 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#83bf4f"/><g fill="#fff"><path d="m37.5 30.4c-.7.2-1.4.5-2 .9.1-.6.2-1.2.2-1.9 0-3.6-3.6-7.4-3.6-7.4s-3.6 3.9-3.6 7.4c0 .7.1 1.3.2 1.9-.6-.4-1.3-.8-2.1-1-3.9-1.1-8.5 1.3-8.5 1.3s3.2 5 7.1 6.1c3.3.9 5.8-1.6 6.7-1.9.1 0 .3 0 .4 0 1 .4 3.4 2.8 6.7 1.9 3.9-1.1 7.1-6.1 7.1-6.1s-4.8-2.3-8.6-1.2"/><path d="m24.7 48c2.2 1.3 4.6 2 7.3 2s5.1-.7 7.3-2h-14.6"/><path d="m20.3 44c.5.7 1.1 1.4 1.8 2h19.8c.7-.6 1.3-1.3 1.8-2h-23.4"/></g><g fill="#ffe62e"><path d="m32 18.1l2.5 1.9-1-3 2.5-1.9-3-.1-1-3-1 3-3 .1 2.5 1.9-1 3z"/><path d="m24.7 19.3l1.8.3-1.4-1.3.7-1.8-1.6 1-1.4-1.3.4 1.8-1.5.9 1.8.3.4 1.9z"/><path d="m19.3 24.7l1.8-.8-1.9-.4-.3-1.8-.9 1.5-1.8-.4 1.3 1.4-1 1.6 1.8-.7 1.3 1.4z"/><path d="m44.7 24.7l-.3 1.8 1.3-1.4 1.8.7-1-1.6 1.3-1.4-1.8.4-.9-1.5-.3 1.8-1.9.4z"/><path d="m39.3 19.3l.8 1.8.4-1.9 1.8-.3-1.5-.9.4-1.8-1.4 1.3-1.6-1 .7 1.8-1.4 1.3z"/></g><path d="m46.3 40h-10.7c-2.4 0-2.6-1.7-2.6-2h-2c0 .2-.1 2-2.6 2h-10.7c.3.7.6 1.4 1 2h9.7c1.8 0 2.9-.6 3.6-1.4.7.8 1.8 1.4 3.6 1.4h9.7c.4-.6.7-1.3 1-2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f5.svg b/riot/emojione/svg/1f1f2-1f1f5.svg new file mode 100644 index 0000000..823a275 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#0071bc"/><path d="m37.4 47.9l-1.1-8.3-1.3-11.6c0 0-.1-.8-.1-1.5-.1-.8-.3-1-.5-1.2h-.1c1.7-.7 1.5-2.9 1.5-2.9s.5-.6.4-1.7-1.9-1.2-1.9-1.2c0 0-3.9-.1-5.2 0-1.3.1-1.5 1.1-1.5 1.1s.1 1.3.5 3.1c.4 1.8 1.2 1.6 1.2 1.6s.3 0 .7 0c-.3 0-.6 0-.7 0-.7.2-.8 1.9-.8 1.9l-1.3 12.2-1.4 9.7c0 0 .2 1 1.5 1.4.2.7 1.2 1.1 1.6 1.1.4.1 1.4-.3 2-.4.6-.1 1.5.3 1.8.4.3 0 3.3-.3 3.8-1.5.8-.1 1-1 1-1l-.1-1.2" fill="#8c8a8c"/><g fill="#fff"><path d="m51.3 31.3c0 0 1.8-1.8-.4-3.6 1-1.8-.2-2.3-.2-2.3s.6-1.5-1-1.5c.8-1.2-1-2.5-1-2.5s.3-1.8-2.4-2c.7-3-2.3-2.3-2.3-2.3s.6-2.5-3.3-2.1c-.8-2.1-2.6-1.2-2.6-1.2s-1.1-1.5-2.4-.7c-1-1.2-2.3-.3-2.6-.1-1-.2-2.5-1.4-3.2-.2-.6-.2-1.7.5-1.7.5s-1.8-1.2-3 1.1c-2.4-.9-2.9 1-2.9 1s-1.7-.3-2.2 1.3c-2.5-.2-2.6 1.6-2.6 1.6s-1.6.1-1.8 2.3c-2.3.9-1.5 3.1-1.5 3.1s-1.6.7-1.3 3.4c-1.8 1.3 0 3.1 0 3.1s-1.4.9-.1 2.8c-1.7 1.3.5 2.5.5 2.5s-1 1.1.6 2.1c-.9 2.2.8 2.2 1.1 2.3-.1.4.1.8.5.9 0 0-.1 1.9 1.8 1.7-.3.8.5 1.1.5 1.1 0 0 0 1.6 1.8 1.2.4 1.5 1.3 1.2 1.4 1.2 0 0-.6 1.8 2.2 1.9 1.2 1.3 2.8 1.3 2.8 1.3s1.1-4.9.8-5.6c-.2-.7-2.1-.2-2.1-.2s-.3-1.5-2.3-1.5c.4-.9-.7-.9-.7-.9s1.1-1.3-1.2-1.6c.3-1.5-.3-1.4-1.1-1.7 0-.6.4-1.5-.8-1.9 1.1-1.4-.6-2.1-.6-2.1s.9-2.1-.3-2.4c1.3-1.3.3-2.5.3-2.5s.9-1 .5-1.9c.9-.5.8-2 .8-2s1-.3 1.3-1.8c2-.3 1.8-1.7 1.8-1.7s1.7 0 2-1.5c1.4.4 2.3-1.2 2.3-1.2s1.1.5 2.2-.7c.7 1 2.7-.3 2.7-.3s.9 1 2.4 0c.8 1.2 2.1.6 2.1.6s.4.8 1.3.4c.5 1.8 2.8 1.1 2.8 1.1s.1 1.2 1.3 1c.2 1.5 2 1.2 2 1.2s.2 1.9 1.4 2.1c-.5 1.7.9 2 .9 2s-.4 1.2.9 2.3c-1.2.7.1 3.1.2 3.1 0 0-1.1 1.2-.3 2.7-1.3.4-1.1 2.4-1.1 2.4s-1.3 1-1.3 2.3c-2.1.4-1.9 2.3-1.9 2.3s-1.6.1-2.1 1.8c-1.4-.3-3 1.3-3 1.3l.6 4.3c.1 0 3 .6 3.6-1.4 2.5.7 2.7-1.8 2.7-1.8s2-.1 2.1-1.5c1.9-.9 1.4-1.8 1.4-1.8s1.9-.2 1.9-2.3c1.5-.5 1.2-2.2 1.2-2.2s1.3-.7 1-3.3c.8-1.6-.4-3-.4-3"/><path d="m31.8 36.2l6.7 4.8-2.5-7.8 6.7-4.9h-8.3l-2.6-7.9-2.5 7.9h-8.3l6.7 4.9-2.5 7.8z"/></g><g fill="#ffce31"><path d="m37.3 46.8c0 0 8.6-2.4 11.2-13-1.5 10.9-10.9 14.3-10.9 14.3l-.3-1.3"/><path d="m26 46.6c0 0-8.5-2.5-11.1-13.2 1.5 11 10.8 14.5 10.8 14.5l.3-1.3"/></g><g fill="#ed4c5c"><path d="m48.8 29.8h-.7l-.2.9.4.8.7-.1.2-.8z"/><path d="m48.9 29.7l.2-.9-.5-.8-.6.1-.2.9.4.8z"/><path d="m48.6 27.8l.1-.9-.5-.7-.6.1-.2.9.5.8z"/><path d="m48.2 25.9l-.1-.9-.7-.6-.6.3.1.9.7.6z"/><path d="m47.5 24.3l-.1-.9-.7-.6-.6.3.1.9.7.6z"/><path d="m46.4 21.9l-.7-.6-.6.4.2.9.7.5.6-.3z"/><path d="m45.3 20.3l-.8-.4-.5.4.3.9.7.4.6-.4z"/><path d="m44 18.9l-.8-.3-.5.5.4.8.8.3.5-.4z"/><path d="m42.5 17.6l-.8-.2-.4.5.4.8.9.2.4-.5z"/><path d="m41 16.6l-.9-.1-.3.5.5.8.9.1.4-.6z"/><path d="m39.2 15.7l-.9-.1-.2.6.6.7h.9l.3-.6z"/><path d="m37.5 15h-.9l-.2.6.7.6h.9l.2-.6z"/><path d="m35.8 14.4l-.9.1-.2.7.7.5.9-.1.2-.6z"/><path d="m33 14.3l-.1.7.8.4.9-.2.1-.7-.8-.4z"/><path d="m31.2 14.3l-.1.7.9.3.8-.3v-.6l-.8-.4z"/><path d="m29.4 14.4v.6l.8.4.9-.3v-.7l-.8-.3z"/><path d="m28.3 14.3l-.8.5.2.7.9.1.7-.5-.1-.7z"/><path d="m26.4 14.8l-.7.5.2.7h.9l.7-.5-.2-.7z"/><path d="m24.7 15.5l-.6.6.3.7.9-.1.6-.7-.3-.6z"/><path d="m23.1 16.3l-.6.7.3.6.9-.1.6-.7-.3-.6z"/><path d="m21.5 17.4l-.5.8.4.5.9-.2.5-.8-.4-.5z"/><path d="m20 18.5l-.4.8.4.5.9-.3.4-.8-.4-.5z"/><path d="m18.7 19.9l-.3.8.4.5.9-.4.3-.8-.4-.5z"/><path d="m17.6 21.4l-.3.8.5.5.8-.4.3-.9-.5-.4z"/><path d="m16.6 22.9l-.2.9.5.4.8-.5.2-.9-.6-.4z"/><path d="m15.7 24.7v.9l.6.3.7-.7v-.9l-.6-.3z"/><path d="m15.7 25.8l-.6.7v.9l.6.2.6-.7v-.9z"/><path d="m15.8 27.7l-.7-.1-.5.7.2.9.3.1h-.2l-.4.7.2.6.7.1.4-.7-.2-.6-.1-.1.4-.7z"/></g><g fill="#ffce31"><path d="m47.8 27.5l.7-.2-.5-.7z"/><path d="m48.2 29.3l.6-.1-.4-.8z"/><path d="m47.4 25.9l.6-.4-.7-.6z"/><path d="m46.6 24.2l.6-.4-.7-.5.1.9"/><path d="m44.7 21.2l.5-.5-.8-.4z"/><path d="m43.4 19.9l.5-.5-.8-.4z"/><path d="m40.7 17.6l.4-.6-.9-.1z"/><path d="m42.1 18.7l.4-.6-.8-.3z"/><path d="m39.2 16.8l.2-.7-.9-.1z"/><path d="m37.6 16.1l.1-.7h-.9z"/><path d="m35.8 15.5l.1-.7-.9.2z"/><path d="m28.8 15.3l-.2-.6-.8.4z"/><path d="m30.5 15.1l-.1-.7-.8.4z"/><path d="m23.8 17.2l-.4-.6-.5.7z"/><path d="m25.4 16.4l-.3-.6-.7.6z"/><path d="m20.9 19.2l-.5-.4-.4.8z"/><path d="m22.3 18.1l-.5-.5-.5.7z"/><path d="m19.6 20.5l-.5-.5-.3.9z"/><path d="m18.5 21.9l-.6-.4-.2.9z"/><path d="m17.6 23.4l-.7-.3-.1.9z"/><path d="m16.8 25l-.7-.2v.8z"/><path d="m16.1 26.6l-.7-.1.2.9z"/><path d="m15.7 28.4l-.7-.1.2.9z"/><path d="m15.5 29.9h-.7l.3.7z"/><path d="m45.9 22.7l.5-.4-.8-.5z"/><path d="m48.4 31.2l.6-.2-.4-.8z"/><path d="m36.5 18.2l1.4-1.4-1.1-.7z"/><path d="m27 18.5l.5-1.9h-1.2z"/><path d="m25.1 19.1l.6-1.9h-1.3z"/><path d="m23 19.7l.6-1.9h-1.3z"/><path d="m21.6 21.2l.5-1.9h-1.3z"/><path d="m20 22.6l.5-1.9h-1.2z"/><path d="m23.6 14.4l-1 1.7 1.2.3z"/><path d="m26.7 13.4l-1 1.7 1.2.4z"/><path d="m15.1 21.8l1 1.7.9-.9z"/><path d="m13.6 25.7l.7 1.9 1-.8z"/><path d="m17.2 30.2l-1.4-1.5-.7 1z"/><path d="m16.4 28.2l.6-1.9h-1.3z"/><path d="m38.7 19.1l1.4-1.4-1.1-.6z"/><path d="m42 20.8l.4-2-1.3.1z"/><path d="m50.9 30l-1.4-1.5-.7 1z"/><path d="m46.5 30.7l.8-1.9 1 .8z"/><path d="m45.8 18.1h-2l.4 1.2z"/><path d="m43.3 16h-2l.3 1.2z"/><path d="m39.5 14l-1 1.7 1.2.3z"/><path d="m37.1 13.4v2l1.2-.3z"/><path d="m30.1 17.6l.6-1.8-1.2-.2z"/><path d="m44.6 23.4l.3-1.9h-1.2z"/></g><g fill="#699635"><path d="m18.6 20.5c1 1-1 3.6.1 5.2-.1-.7.9-5.2-.1-5.2"/><path d="m18.3 20.8c-1.5 1.4-1.1 4.3-1.2 6.2.1-.6 1.7-5.7 1.2-6.2"/><path d="m46 21.3c-.9 0 0 4.8-.3 5.6 1.5-1.6-.8-4.5.3-5.6"/><path d="m47.2 24.1c-1.6 2 1.3 3.6 1.2 5.6.1-2.1-1.5-3.6-1.2-5.6"/><path d="m32.9 14.7c-.5-.4-1.3-.5-1.9.3 1.8-.4 2.4 1.6 1.3 2.8 1.5-.4 1.6-1.8 1-2.6 1.1.3 1.5 1.3 1.4 2.6 1.9-1-.3-4-1.8-3.1"/><path d="m48.9 31.9c-.3 1.7-1.9 5.9-.8 7.4-.3-1 .6-2.9.9-3.9 0 .6 0 1.2.4 1.7-.7-1.8 1.1-3.2-.5-5.2m0 .1c.3.6.3 1.3.3 1.9-.1-.7-.3-1.2-.3-1.9"/><path d="m14.3 32.3c0 .1 0 .1 0 .2v-.2"/><path d="m15.3 39.5c1.2-1.7-.7-5.4-1-7.3-.2 2.6 1.3 4.8 1 7.3"/><path d="m14.3 32.5c0 0 0 .1 0 0"/><path d="m14.4 38.8c1.2-1.7-1-4.3-.1-6.5-2.2 2.6 1 4.1.1 6.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f6.svg b/riot/emojione/svg/1f1f2-1f1f6.svg new file mode 100644 index 0000000..79c46fd --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f6.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M38,2.6H26C14.3,5,5,14.2,2.6,26v12C5,49.8,14.3,59,26,61.4h12C49.8,59,59,49.7,61.4,38V26 + C59,14.2,49.7,5,38,2.6z" fill="#2a5f9e"/><g fill="#fff"><path d="m38 26v-23.4c-1.9-.4-3.9-.6-6-.6s-4.1.2-6 .6v23.4h-23.4c-.4 1.9-.6 3.9-.6 6s.2 4.1.6 6h23.4v23.4c1.9.4 3.9.6 6 .6s4.1-.2 6-.6v-23.4h23.4c.4-1.9.6-3.9.6-6s-.2-4.1-.6-6h-23.4"/><path d="m15.6 9.8c-.4.2-.7.5-.7.7 0 .2.2.2-.1.3-.3.1-1 .3-1.6.2-.2 0-.6-.1-.7-.1-.1 0 .6.3.3.3-.4-.1-.6-.2-.3.1.2.2.7.2 1.4.1.3 0 1-.2 1.2-.2.2 0 .2.2.3.2.9.1 2.5 0 3.2-.1.6-.1.8-.1 1 .2.3.4 0 .8-1 1.1-1.2.3-1.6.5-2.1 1.1-1.1 1.3.2 2.9 2.5 3.1 1.4.1 2.3.4 2.1.7-.1.1-1 .2-2 .3-2.3.2-3.3.6-4.1 1.5-.5.5-.6.9-.6 1.3 0 .6 0 .6-.9.6-.5 0-1.1-.1-1.4-.2-.5-.1-.5-.1-.4.1.3.5 1.3.9 2.1.9.6 0 .9.1 1.5.6 1.1.9 2.3 1.2 4.3 1.2 2.6 0 4.1-.8 4.1-2.2 0-1-1-1.6-3.1-1.8-1-.1-3.1.1-4 .4-.2.1 0-.1.4-.3.5-.3 1.3-.5 2.4-.6 2.4-.2 3.5-.8 3.5-2 0-1.1-1.1-1.7-3.3-2-2.2-.2-2.4-.7-.5-1.4 1.3-.5 2-1.1 2-2.1 0-1.4-.7-1.9-2.9-2-1.6-.4-2-.4-2.6 0m1.2.4c0 .1-.2.2-.3.2-.1 0-.1-.1-.1-.2 0-.1.2-.2.3-.2.2 0 .2.1.1.2m4.8 10.7c.3.1.4.3.3.4-.3.3-2.1.6-3.2.5-1.2-.1-2.5-.6-2.2-.8 1.2-.5 4.1-.6 5.1-.1"/><path d="m44.6 9.8c-.4.2-.7.5-.7.7 0 .2.2.2-.1.3-.3.1-1 .3-1.6.2-.2 0-.6-.1-.7-.1-.1 0 .6.3.3.3-.4-.1-.6-.2-.3.1.2.2.7.2 1.4.1.3 0 1-.2 1.2-.2.2 0 .2.2.3.2.9.1 2.5 0 3.2-.1.6-.1.8-.1 1 .2.3.4 0 .8-1 1.1-1.2.3-1.6.5-2.1 1.1-1.1 1.3.2 2.9 2.5 3.1 1.4.1 2.3.4 2.1.7-.1.1-1 .2-2 .3-2.3.2-3.3.6-4.1 1.5-.5.5-.6.9-.6 1.3 0 .6 0 .6-.9.6-.5 0-1.1-.1-1.4-.2-.5-.1-.5-.1-.4.1.3.5 1.3.9 2.1.9.6 0 .9.1 1.5.6 1.1.9 2.3 1.2 4.3 1.2 2.6 0 4.1-.8 4.1-2.2 0-1-1-1.6-3.1-1.8-1-.1-3.1.1-4 .4-.2.1 0-.1.4-.3.5-.3 1.3-.5 2.4-.6 2.4-.2 3.5-.8 3.5-2 0-1.1-1.1-1.7-3.3-2-2.2-.2-2.4-.7-.5-1.4 1.3-.5 2-1.1 2-2.1 0-1.4-.7-1.9-2.9-2-1.7-.4-2-.4-2.6 0m1.2.4c-.1.1-.2.2-.3.2-.1 0-.1-.1-.1-.2.1-.1.2-.2.3-.2.1 0 .1.1.1.2m4.7 10.7c.3.1.4.3.3.4-.3.3-2.1.6-3.2.5-1.2-.1-2.5-.6-2.2-.8 1.2-.5 4.1-.6 5.1-.1"/><path d="m15.6 40.3c-.4.2-.7.5-.7.7 0 .2.2.2-.1.3-.3.1-1 .3-1.6.2-.2 0-.6-.1-.7-.1-.1 0 .6.3.3.3-.4-.1-.6-.2-.3.1.2.2.7.2 1.4.1.3 0 1-.2 1.2-.2.2 0 .2.2.3.2.9.1 2.5 0 3.2-.1.6-.1.8-.1 1 .2.3.4 0 .8-1 1.1-1.2.3-1.6.5-2.1 1.1-1.1 1.3.2 2.9 2.5 3.1 1.4.1 2.3.4 2.1.7-.1.1-1 .2-2 .3-2.3.2-3.3.6-4.1 1.5-.5.5-.6.9-.6 1.3 0 .6 0 .6-.9.6-.5 0-1.1-.1-1.4-.2-.5-.1-.5-.1-.4.1.3.5 1.3.9 2.1.9.6 0 .9.1 1.5.6 1.1.9 2.3 1.2 4.3 1.2 2.6 0 4.1-.8 4.1-2.2 0-1-1-1.6-3.1-1.8-1-.1-3.1.1-4 .4-.2.1 0-.1.4-.3.5-.3 1.3-.5 2.4-.6 2.4-.2 3.5-.8 3.5-2 0-1.1-1.1-1.7-3.3-2-2.2-.2-2.4-.7-.5-1.4 1.3-.5 2-1.1 2-2.1 0-1.4-.7-1.9-2.9-2-1.6-.4-2-.4-2.6 0m1.2.4c0 .1-.2.2-.3.2-.1 0-.1-.1-.1-.2 0-.1.2-.2.3-.2.2 0 .2 0 .1.2m4.8 10.7c.3.1.4.3.3.4-.3.3-2.1.6-3.2.5-1.2-.1-2.5-.6-2.2-.8 1.2-.5 4.1-.6 5.1-.1"/><path d="m44.6 40.3c-.4.2-.7.5-.7.7 0 .2.2.2-.1.3-.3.1-1 .3-1.6.2-.2 0-.6-.1-.7-.1-.1 0 .6.3.3.3-.4-.1-.6-.2-.3.1.2.2.7.2 1.4.1.3 0 1-.2 1.2-.2.2 0 .2.2.3.2.9.1 2.5 0 3.2-.1.6-.1.8-.1 1 .2.3.4 0 .8-1 1.1-1.2.3-1.6.5-2.1 1.1-1.1 1.3.2 2.9 2.5 3.1 1.4.1 2.3.4 2.1.7-.1.1-1 .2-2 .3-2.3.2-3.3.6-4.1 1.5-.5.5-.6.9-.6 1.3 0 .6 0 .6-.9.6-.5 0-1.1-.1-1.4-.2-.5-.1-.5-.1-.4.1.3.5 1.3.9 2.1.9.6 0 .9.1 1.5.6 1.1.9 2.3 1.2 4.3 1.2 2.6 0 4.1-.8 4.1-2.2 0-1-1-1.6-3.1-1.8-1-.1-3.1.1-4 .4-.2.1 0-.1.4-.3.5-.3 1.3-.5 2.4-.6 2.4-.2 3.5-.8 3.5-2 0-1.1-1.1-1.7-3.3-2-2.2-.2-2.4-.7-.5-1.4 1.3-.5 2-1.1 2-2.1 0-1.4-.7-1.9-2.9-2-1.7-.4-2-.4-2.6 0m1.2.4c-.1.1-.2.2-.3.2-.1 0-.1-.1-.1-.2.1-.1.2-.2.3-.2.1 0 .1 0 .1.2m4.7 10.7c.3.1.4.3.3.4-.3.3-2.1.6-3.2.5-1.2-.1-2.5-.6-2.2-.8 1.2-.5 4.1-.6 5.1-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f7.svg b/riot/emojione/svg/1f1f2-1f1f7.svg new file mode 100644 index 0000000..7878b6b --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#699635"/><g fill="#ffce31"><path d="m47.7 28.8c-1.5 7.3-7.9 12.8-15.7 12.8s-14.2-5.5-15.7-12.8c-.2 1-.3 2.1-.3 3.2 0 8.8 7.2 16 16 16s16-7.2 16-16c0-1.1-.1-2.2-.3-3.2"/><path d="m26.6 32l5.4-3.8 5.4 3.8-2-6.1 5.4-3.9h-6.7l-2.1-6-2 6h-6.8l5.4 3.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f8.svg b/riot/emojione/svg/1f1f2-1f1f8.svg new file mode 100644 index 0000000..97cb964 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m12 12h21v21h-21z"/><path fill="#fff" d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#2a5f9e"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m36.6 21.8h20v14.2c.2 5.7-3.4 9.3-9.9 10.9-4.7-1.2-10-3.5-10-10.7l-.1-14.4" fill="#fff"/><path d="m37 22.2h19.1v13.6c.2 5.5-3.2 8.9-9.5 10.4-4.5-1.1-9.6-3.4-9.6-10.2v-13.8" fill="#42ade2"/><path d="m37.2 37.5c.9 5.8 5.3 7.6 9.4 8.7 4.7-1.2 8.7-3.5 9.4-8.7h-18.8" fill="#c94747"/><path d="m45.8 24.7v-1.7h1.4v1.7h3.7v1.3h-3.7v15.7h-1.3v-15.7h-3.7v-1.4l3.6.1" fill="#231f20"/><path d="m44.7 33.9c-.9.4-.8 2-2 2.5-1.1.5-1.6 2.5-.1 1.9.1.3 3.5 5 3.9 4.7 2.5-1.4 1-8.9-1.8-9.1m1.5 7.7c-.7-.8-3.9-4.2-4-4.1.1.1 2.6-2.3 2.8-2.9 1.7 1 2.6 5.5 1.2 7" fill="#ff9a08"/><path d="m50.6 37.2c.1-1.2-.1-2.3-.4-2.8s-.3-1.2-.8-2c.3.1.5-.6.6-1.5 0-.5 0-.8.1-1.7.1-.8-.2-1.1-.4-1.3-.2-.2-.3-.2-.4-.2-.3-.1-1 0-1.2 0s-.3.1-.5 0-.3.1-.5.3v9.9c.1.9-.2 2.8-.7 4.1-.2.5-.1.8.2.9 1.2.8 2 0 2.8-.7.3-.2.4-.2.8.1.3.4.7.5.9.4-.9-1.7-.6-4.3-.5-5.5" fill="#699635"/><g fill="#fff"><path d="m47.6 27.1c.9.5 0 .7.5 1.5.4-.6 1.6-.5 1-1.3-.4-.6 1-2.2-.6-2.2-.5.1-1.5 1.7-.9 2"/><path d="m44.6 29.4c.9-.1 1.5.3 1.2-1-1.7 0 .7-2.9.5-3.4-.6-1.1-3 4.6-1.7 4.4"/><path d="m49.9 29.5c0-.2-2.8 2.1-3.3 2.4.3-.2-3.4 2.4-2.1 2.6.5.1.9-.7 1.2-1.1 1.2-2 4.2-.2 4.2-3.9"/><path d="m50.5 42.8c-.1-.5-.5-.8-.9-.5.1.5-.5 1.7-.2 1.9.4.4 1.2-1 1.1-1.4"/><path d="m46.3 43.3c.2.2.5.2.8-.1-.1 0-.3-.1-.4-.2-.1.1-.3.3-.4.3"/></g><path d="m47.9 25.5c.2-1.4 2.6.6 2.2 1.5-.7 1.3-1.9-2-2.2-1.5" fill="#870f00"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1f9.svg b/riot/emojione/svg/1f1f2-1f1f9.svg new file mode 100644 index 0000000..f244732 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,16.6,13.4,30,30,30V2C15.4,2,2,15.4,2,32z" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="m62 32c0-16.6-13.4-30-30-30v60c16.6 0 30-13.4 30-30"/><path d="m8.6 17v5.7h5.7c0 .9.9 1.9 1.9 1.9v5.7h5.7v-5.7c.9 0 1.9-.9 1.9-1.9h5.7v-5.7h-5.7c0-.9-.9-1.9-1.9-1.9v-5.6h-5.7v5.7c-.9 0-1.9.9-1.9 1.9h-5.7v-.1"/></g><path d="m9.2 17.6v4.5h5.7c0 .9.9 1.9 1.9 1.9v5.7h4.5v-5.7c.9 0 1.9-.9 1.9-1.9h5.7v-4.5h-5.7c0-.9-.9-1.9-1.9-1.9v-5.7h-4.5v5.7c-.9 0-1.9.9-1.9 1.9h-5.7" fill="#bcbcbc"/><path d="m16.4 15.7c.3.3.2 1-.2 1.4-.4.4-1.1.5-1.4.2-.3-.3-.2-1 .2-1.4.4-.5 1.1-.6 1.4-.2" fill="#94989b"/><g fill="#d0d0d0"><path d="m14.7 16.7l.1-.1.5.3-.3-.5.1-.1.5 1.1-.9-.7"/><path d="m15.5 15.9l.1-.1.8.8-.1.1-.8-.8"/></g><g transform="matrix(0 1-1 0 211.112.002)"/><g transform="matrix(-1 0 0-1 211.11 211.114)"/><g transform="matrix(0-1 1 0-.002 211.112)"/><g fill="#3e4347"><path d="m17.5 22.9l.2.2-.2.2-.2-.2z"/><path d="m20.5 22.9l.2.2-.2.2-.2-.2z"/><path d="m18.9 23.1v.2h-.3v.2h.3v.2h.2v-.2h.3v-.2h-.3v-.2h-.2"/></g><path d="m20.7 19.1c.3-.1.6.2.7.2.1.2.3 0 .3 0s-.2-.1-.4-.3c-.1 0-.4-.2-.6-.2-.1.1-.4.3-.4.3s-.1-.2-.2-.2c0-.1-.1-.3-.2-.4.1-.1.2-.2.3-.3.1 0 .1 0 .1-.1 0 0 .1 0 .1-.1 0-.1 0-.1 0-.2-.2 0-.5-.1-.7-.1 0-.1 0-.2 0-.2s-.1 0-.2.1c-.1 0-.1 0-.1 0 0-.2-.2-.4-.4-.4-.2 0-.4.1-.4.3-1.6-.4-2.4 1.2-2 1.6.1.1.5-.1.8-.2 0 .1 0 .2 0 .2 0 0-.1 0-.1 0 0 0 .4.3.4.3l.3.2c-.1.1-.3.2-.3.5-.2.1-.6-.3-.7-.1s-.1.4 0 .6c.1.1-.2.2-.2.3-.1.1.2.6.3.6 0-.1 0-.2 0-.2s.2 0 .2-.1 0-.2 0-.2.2-.2.2-.4-.3-.3-.2-.4c.1-.1.4.2.6.1.1.3.5.5.7.5 0 .1-.1.4-.1.5 0 .1.2 0 .5.1 0 .1-.1.1-.1.1h-.3l-.1.1h-.4-.6l.4.3h3.2l.2-.2-.4-.2c0 0 .1-.1.1-.1s.1 0 .2 0c.4.3.6 0 .6 0s-.1 0-.1-.1c0 0-.1-.1-.1-.1s0 .2-.1.2c0 0-.1 0-.2-.1.2-.1.3-.4.3-.4l.1-.2h.1c0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1 0-.1-.1 0-.1.3-.1.3s-.2.2-.3.2c0-.2-.3-.4-.2-.5.1-.1.2.2.4.1.1 0 .2-.1.2-.3.1.1.2.1.2.1s0 0 0-.1c0 0 .1 0 .1 0s-.1-.1-.1-.1c0 0 .1 0 .1 0s-.1 0-.1 0v-.1s-.1 0-.1 0c0-.1-.1-.2-.1-.2h-.1l-.6.2c0 0-.2.1-.2.2 0 .1.1.2.2.2-.1 0-.3-.1-.3-.1s.1.1.2.2c0 0 0 0-.1 0 0 .1.1.1.2.1 0 .1.1.1.1.1s0 .1-.1.1c-.1 0-.3-.3-.4-.2-.2.1.1.4.1.4s0 0-.1.1c0 0-.1-.1-.1-.1 0-.2.1-.6.3-.8-.1 0-.3.2-.5.3-.1-.1-.3-.2-.3-.3 0 0-.1-.1-.1-.2 0 0 .1 0 .1 0 .3 0 .6-.1.8-.2.1.1.1.1.2 0 .3.2.3.5.4.3.1.3.3.2.3.2l-.4-.3c0 0-.2-.2-.4-.3-.2-.1-.5-.1-.5-.1s.4-.2.4-.5m.2 1.3c0 0 0 0 0 0m-.9-2.2c0 0 0 0 0 0 0 .1-.1.1-.2.2-.1-.1-.1-.1-.1-.1s.2-.1.3-.1zm-.9-.1l-.1.1-.1-.1c0 0 0 0 .1 0-.1 0 0-.1.1 0 0-.1 0-.1 0-.1v.1m-.5-.4c0 .1 0 .1.1.2 0 0-.1 0-.1 0 0 0 0 0-.1 0 0 0-.1 0-.1 0 0-.1.1-.1.2-.2m-.9 1.6c-.1 0-.1 0 0 0 0 0 0-.1 0-.1 0 0-.1 0-.1-.1 0-.1 0-.2 0-.2s.1-.1.2-.2c.3-.1.4-.2.4-.2 0 .1 0 .3.1.4 0 .2.2.5.3.6-.1 0-.3.1-.4.1l-.5-.3m.8 1.8c.1 0 .2-.3.2-.4.1.2 0 .4.1.4.1.1.2 0 .2 0 .2 0 .5-.1.5-.1.1.1.1 0 .2 0 0 .1.1.1.1.1s-.3.1-.4.1c-.2-.1-.4 0-.5.1-.3 0-.4-.1-.4-.2m1.3-.7c0 0 0 .1 0 .1 0 0 .1 0 .2 0 0 0 .1 0 .1.1 0 0-.1.1-.1.1-.2-.1-.5-.2-.9-.1.4 0 .4.2.4.2s.2 0 .2.2c.1 0 .1.1.1.1s.1-.1.1.1c.1 0 .1 0 .2.1-.1-.1-.2-.1-.3-.1-.1-.1-.2-.2-.3-.2-.1.1-.4.1-.5.1-.1 0 0-.1-.1-.1.1-.1 0-.3 0-.4 0 0 .1 0 .2-.1.1 0 .2-.1.3-.2.2-.1.3 0 .4.1" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1fa.svg b/riot/emojione/svg/1f1f2-1f1fa.svg new file mode 100644 index 0000000..03c6388 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C21.3,2,11.9,7.6,6.6,16h50.7C52.1,7.6,42.7,2,32,2z" fill="#ed4c5c"/><path d="M6.6,16C3.7,20.6,2,26.1,2,32h60c0-5.9-1.7-11.4-4.6-16H6.6z" fill="#2a5f9e"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14c10.7,0,20.1-5.6,25.4-14H6.6z" fill="#699635"/><path d="M57.4,48c2.9-4.6,4.6-10.1,4.6-16H2c0,5.9,1.7,11.4,4.6,16H57.4z" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1fb.svg b/riot/emojione/svg/1f1f2-1f1fb.svg new file mode 100644 index 0000000..9326ae7 --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,9.8,4.7,18.5,12,24h36c7.3-5.5,12-14.2,12-24S57.3,13.5,50,8H14C6.7,13.5,2,22.2,2,32z" fill="#699635"/><g fill="#ed4c5c"><path d="m14 8h36c-5-3.8-11.2-6-18-6s-13 2.2-18 6"/><path d="m32 62c6.8 0 13-2.2 18-6h-36c5 3.8 11.2 6 18 6"/></g><path d="m43 49.6c-8.4-1.6-14.7-8.9-14.7-17.6s6.3-16 14.7-17.6c-1.2-.2-2.4-.4-3.7-.4-10.1 0-18.3 8.1-18.3 18 0 9.9 8.2 18 18.3 18 1.3 0 2.5-.1 3.7-.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1fc.svg b/riot/emojione/svg/1f1f2-1f1fc.svg new file mode 100644 index 0000000..4fd4f5a --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#3e4347"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#83bf4f"/><g fill="#ed4c5c"><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z"/><path d="m32 12.3c-5 0-9.3 3.2-10.9 7.7h21.8c-1.6-4.4-5.9-7.7-10.9-7.7"/><path d="m32.5 6.8c0-.6-.2-1.2-.5-1.2-.4 0-.5.6-.5 1.2 0 1.4.2 2.1.5 4.2.4-2.1.5-2.8.5-4.2"/><path d="m34 6.9c.1-.6-.1-1.2-.4-1.2-.4 0-.6.5-.6 1.1-.1 1.4 0 2.2.2 4.2.5-2 .7-2.7.8-4.1"/><path d="m34.2 11.2c.7-2 1-2.7 1.3-4.1.1-.6 0-1.2-.3-1.2-.4-.1-.6.5-.7 1.1-.3 1.4-.3 2.1-.3 4.2"/><path d="m36.9 7.5c.2-.6.1-1.2-.2-1.3-.4-.1-.7.4-.8 1-.4 1.4-.4 2.1-.6 4.2.9-1.9 1.3-2.5 1.6-3.9"/><path d="m38.4 8c.2-.6.2-1.2-.1-1.3-.4-.1-.7.4-.9.9-.5 1.3-.6 2.1-.9 4.1 1-1.7 1.4-2.4 1.9-3.7"/><path d="m39.7 8.6c.3-.5.3-1.1 0-1.3-.4-.2-.7.3-1 .8-.6 1.3-.7 2-1.3 4 1.2-1.6 1.7-2.2 2.3-3.5"/><path d="m41 9.4c.3-.5.4-1.1.1-1.3-.3-.2-.8.2-1 .7-.7 1.2-.9 1.9-1.6 3.9 1.3-1.6 1.8-2.1 2.5-3.3"/><path d="m42.2 10.2c.3-.5.5-1.1.2-1.3-.3-.2-.8.2-1.1.6-.8 1.2-1.1 1.9-2 3.8 1.6-1.4 2.1-2 2.9-3.1"/><path d="m40.3 14c1.6-1.3 2.2-1.8 3.1-2.9.4-.5.6-1 .3-1.2-.3-.3-.8.1-1.2.5-.8 1.1-1.2 1.8-2.2 3.6"/><path d="m41.1 14.8c1.7-1.2 2.4-1.6 3.4-2.6.4-.4.7-.9.4-1.2-.3-.3-.8 0-1.2.4-1 1-1.4 1.7-2.6 3.4"/><path d="m41.9 15.6c1.8-1 2.5-1.4 3.6-2.3.5-.4.8-.9.5-1.2-.3-.3-.8 0-1.2.3-1.1 1-1.6 1.6-2.9 3.2"/><path d="m42.6 16.5c1.9-.9 2.6-1.2 3.8-2 .5-.3.8-.8.6-1.1-.2-.3-.8-.1-1.3.2-1.2.9-1.7 1.4-3.1 2.9"/><path d="m43.2 17.4c2-.7 2.7-.9 3.9-1.6.5-.3.9-.7.7-1-.2-.3-.8-.2-1.3.1-1.2.7-1.7 1.2-3.3 2.5"/><path d="m43.7 18.4c2-.5 2.8-.7 4-1.3.5-.2 1-.7.8-1-.2-.4-.8-.2-1.3 0-1.2.7-1.8 1.1-3.5 2.3"/><path d="m44.1 19.5c2.1-.4 2.8-.5 4.1-.9.6-.2 1-.6.9-.9-.1-.4-.7-.3-1.3-.1-1.3.4-1.9.8-3.7 1.9"/><path d="m48.7 20c.6-.2 1.1-.5 1-.8-.1-.4-.7-.4-1.3-.2-1.1.3-1.7.6-2.8 1.1h2.9c0-.1.1-.1.2-.1"/><path d="m15.6 18.9c-.6-.2-1.2-.1-1.3.2-.1.4.4.7 1 .8.1 0 .1 0 .2.1h2.9c-1.1-.5-1.7-.8-2.8-1.1"/><path d="m15.8 18.5c1.3.5 2.1.6 4.1.9-1.8-1-2.4-1.5-3.8-1.9-.6-.2-1.2-.2-1.3.1-.1.4.4.7 1 .9"/><path d="m16.3 17.1c1.3.6 2 .7 4 1.3-1.7-1.2-2.3-1.7-3.6-2.3-.5-.2-1.1-.3-1.3 0-.1.4.4.8.9 1"/><path d="m16.9 15.8c1.2.7 2 .9 3.9 1.6-1.6-1.3-2.1-1.9-3.4-2.6-.5-.3-1.1-.4-1.3-.1-.1.4.3.8.8 1.1"/><path d="m17.7 14.5c1.2.8 1.9 1.1 3.8 2-1.5-1.5-2-2-3.1-2.9-.5-.3-1.1-.5-1.3-.2-.3.3.1.8.6 1.1"/><path d="m18.6 13.3c1.1.9 1.8 1.2 3.6 2.3-1.3-1.6-1.8-2.2-2.9-3.1-.5-.4-1-.6-1.2-.3-.3.2 0 .7.5 1.1"/><path d="m22.9 14.8c-1.2-1.7-1.6-2.4-2.6-3.4-.4-.4-.9-.7-1.2-.4-.3.3 0 .8.4 1.2 1 1 1.7 1.4 3.4 2.6"/><path d="m23.7 14c-1-1.8-1.4-2.5-2.3-3.6-.4-.4-.9-.7-1.1-.5-.3.3 0 .8.3 1.2.9 1.1 1.5 1.6 3.1 2.9"/><path d="m24.6 13.3c-.9-1.9-1.2-2.6-2-3.8-.3-.5-.8-.9-1.1-.6-.3.2-.1.8.2 1.3.9 1.2 1.4 1.6 2.9 3.1"/><path d="m25.6 12.7c-.7-2-.9-2.7-1.6-3.9-.3-.5-.7-.9-1-.7-.3.2-.2.8.1 1.3.6 1.2 1.1 1.7 2.5 3.3"/><path d="m26.6 12.2c-.5-2-.7-2.8-1.3-4-.2-.5-.7-1-1-.8-.4.2-.2.8 0 1.3.6 1.2 1.1 1.8 2.3 3.5"/><path d="m27.6 11.8c-.4-2.1-.5-2.8-.9-4.1-.2-.6-.6-1-.9-.9-.4.1-.3.7-.1 1.3.4 1.3.9 1.9 1.9 3.7"/><path d="m28.7 11.4c-.2-2.1-.2-2.8-.6-4.2-.2-.6-.5-1.1-.8-1-.4.1-.4.7-.2 1.3.3 1.4.7 2 1.6 3.9"/><path d="m29.8 11.2c0-2.1 0-2.8-.2-4.2-.1-.6-.4-1.1-.7-1.1-.4.1-.4.7-.3 1.2.2 1.5.5 2.1 1.2 4.1"/><path d="m30.9 11c.2-2 .3-2.8.1-4.2 0-.6-.3-1.1-.6-1.1-.4 0-.5.6-.4 1.2.1 1.4.3 2.1.9 4.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1fd.svg b/riot/emojione/svg/1f1f2-1f1fd.svg new file mode 100644 index 0000000..7ccbceb --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#75a843"/><path d="m42 3.7c-3.1-1.1-6.5-1.7-10-1.7-3.5 0-6.9.6-10 1.7v56.6c3.1 1.1 6.5 1.7 10 1.7 3.5 0 6.9-.6 10-1.7v-56.6" fill="#fff"/><g fill="#75a843"><path d="m40.7 31.7c-.1-.3-.2.1-.2.2 0-.3-.1-.5-.3-.8-.3.3-.4.7-.4 1.1-.1-.3-.2-.6-.5-.7.2.3.1.5.1.8 0 .4.3.7.3 1.1 0 .4-.2.7-.5 1 0-.1 0-.2 0-.3-1 .4-.8.9-.8 1.8 0 .9-.5.7-1.1 1.2.1-.2.1-.5 0-.7 0 .6-.8.6-.9 1.1-.1.2 0 .6-.3.7-.2.1-.5.3-.5.5-.2-.1-.4-.1-.7-.1.1-.1.2-.1.3-.2-1-.5-1.3.6-2.2.7-.3 0-1-.4-1 0 .9 0 1.3.8 2 .8.6 0 1.1-.5 1.7-.5-.1 0-.4-.2-.7-.2.5-.3.8-.9 1.4-.9 1 0 1.5-.2 1.8-1.2-.1 0-.2 0-.3.1 0-.4.4-.9.8-1.1 1-.2.9-1 1.5-1.7-.2 0-.4.1-.6.3 0-.6-.1-1.2.4-1.6 1-.5.9-.7.7-1.4m-2.3 5"/><path d="m23.3 31.7c-.2.8-.3 1 .5 1.5.6.4.4 1 .4 1.6-.2-.2-.3-.3-.6-.3.6.6.5 1.5 1.5 1.7.3.2.8.7.8 1.1-.1 0-.2-.1-.3-.1.3 1 .8 1.2 1.8 1.2.6 0 .9.6 1.4.9-.3 0-.6.1-.7.2.6 0 1.1.6 1.7.5.7 0 1.2-.8 2-.8 0-.4-.7 0-1 0-.8-.2-1.1-1.2-2.2-.8.1.1.2.2.3.2-.2 0-.5-.1-.7.1-.1-.2-.3-.4-.5-.5-.2-.2-.2-.5-.3-.7-.2-.5-.9-.6-.9-1.1-.1.2-.1.5 0 .7-.6-.5-1.1-.3-1.1-1.2 0-.8.2-1.4-.8-1.8 0 .1 0 .2 0 .3-.3-.3-.5-.5-.5-1 0-.4.4-.7.3-1.1 0-.3-.1-.5.1-.8-.3.1-.4.4-.5.7 0-.4-.1-.8-.4-1.1-.1.2-.2.5-.3.8.1-.2 0-.5 0-.2m2.3 5"/></g><path d="m34.7 37.7c-.2 0-.3-.2-.4-.3 0-.2.8-.4.9-.4 0-.1 0-.2 0-.2-1.3.4-5.2.7-6-.7-.4.6-1.1.2-1.8-.3.1.2.5 1.2.5 1.1.2.1 1.5.4 1.5.7-.1.1-.2.2-.3.3 2.1.7 3.4.9 5.6-.2" fill="#428bc1"/><path d="m33.4 37.7c.1-.1.1-.2.1-.4 0 0-.1-.3-.1-.3.2-.2 0-.7-.3-.6-.2.1-.1.1-.3 0-.1 0-.1-.1-.2-.1-.2 0-.5 0-.7 0-.2 0-.5 0-.7 0-.1 0-.3 0-.4 0-.2 0-.2-.1-.4-.1-.2-.1-.3.1-.4.2 0 .2.1.2.1.3 0 .1-.1.2-.1.4 0 .2.1.3.2.4-.4.3 0 .8.4.5.1.2.4.2.7.2.4 0 .7 0 1.1 0 .2 0 .6.1.7-.2.3.5.7-.1.3-.3" fill="#ed4c5c"/><path d="m36.6 35.1c-.8-1-1.2.5-2.1.4.2-1.2-1.6-.8-2.1-.5.1-.1.2-.3.3-.5-.4 0-.9.2-1.2-.1-.6-.4-1.4-.6-1.9.1-.4-.6-1.5-1.2-2.1-.6 0-.6-.6-1.5-1.3-1.4-.8.1-.5 1.1-.1 1.5.3.3.7.4 1.1.4 0 .2.1.3.2.4.5.4 1.5.5 2 .1 0 1 2 1 2.5.5-.2.5-.4 1.5.3 1.5.6 0 .4-.6.9-.8.4-.2.9-.3 1.3-.1.7.4 2.9.3 2.2-.9" fill="#428bc1"/><g fill="#75a843"><path d="m28.4 32.6c-.1-.2-.3-.4-.3-.4-.4.1-.4-.2-.5-.5-.1-.5-.8-.7-.8-1.1 0-.4.4-.8.1-1.2-.3-.4-.8-.6-.8-.4-.1.2.4.2.4.7 0 .6-.6 1.1.1 1.6.4.6.4 1.7 1.1 1.7.3 0 .6-.1.7-.4"/><path d="m29.9 32.1c-.2-.4 0-1-.4-1.3-.5-.4-1.5.4-1.6-.6 0-.2 1.1-1.4 1.3-1.5.3-.4.2-1.1-.1-1.3-.4-.2-.5 0-.8.4.1.1.5.3.5.4-.3.7-1.2.8-1.4 1.5-.2.5-.1 1.3.4 1.6.3.2.5.2.8.2.9-.1.4.1.5.3 0 .2.3.9.8.3"/><path d="m26.9 27.2c0 .6.6.5 1 .4 0-.2 0-.4.1-.6-.2.1-.5.1-.6 0-.3-.2.7-.6.6-.6 0 0-1 .5-.6-.1.1-.2.3-.4.4-.6.1-.2-.3 0-.3 0-.1 0-.2 0-.3.1-.6.5-.4.8-.3 1.4"/></g><path d="m37.5 27.2c-.5-.7-2.4-3-5.1-3.2-.3 0-1.1.3-1.4.4-.9.6 1 1.1 1.1 1.5 0 .2.1.3.1.5-.3-.5-.6-.8-.7-1-.5.2-1.3-.1-1.4-.6-.1.2-.1.3-.3.5 0-.3-.1-.3-.2-.5 0 .3 0 .7-.3.8.1-.2 0-.4-.1-.6 0 .3 0 .5-.2.7.1-.2-.1-.3-.1-.5-.1.8-1.2 1.1-.1 1.4.4.1.6 0 1 .2.1.1.3.3.3.2 0 .1-.4.5-.1.6-.1.1-.4.7-.4.7.3 0 .1.2-.1.4-.3.5 0 1 .1 1.6 0-.2.3.1.3.4 0 .4.4.6.5.9-.5-.5-.6 0 0 .3-.5 0-.6.3-.1.5-1.2 0-.2.5 0 .6.8.2 1.4-.4 1.4-.5 0 0 1.6 1.6 1.7 1.6.1 0 .9-.4 1.1-.2.2.3.4 0 .6.1.2.2 1 0 1.2-.1.1 0 1.1-.2.9-.4-.5-.4-1.1-.8-1.6-1.2-.5-.4-1-.7-1.4-1.1-.2-.2-.2-.6-.3-.9.9.9 1.8 1.4 1.7-.3.6.5 1.8 3.3 1.9 3.3.3 0 0-3 0-3.3.4.4.4 3.7.5 3.7.5.1 1.2-4.3-.5-6.5" fill="#89664c"/><g fill="#ffce31"><path d="m30.3 32.3c-.1 0-.6-.7-.6-.8.3 1.2-.9.5-.6 0-.4-.1-1.4.5-1 1.1-.2.4 1.4.1 1.5-.1.4.9 1.4-.1.7-.2"/><path d="m35 35.3c.5-.7-1.6-.9-1.4-1.7-.3.2-.7.9-1.1.7-.2-.1-1 .4-.6.7 0-.4.2-.1.5-.2-.1.3-.4.6.1.8-.2-.6.6-.3.5-.6-.2-.2.7-.2.8-.2.3 0 1.3.3.9.6 0 0 .2 0 .3-.1"/><path d="m28.3 26.7c-.1.2-.5.5-.5.8 0 .2.5.7.7.4-.6-.4.1-.7.4-.7.1 0 .1.2.1.2.1.1.9-.2.8-.4.1-.4-1.2-.4-1.5-.3m0 0"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1fe.svg b/riot/emojione/svg/1f1f2-1f1fe.svg new file mode 100644 index 0000000..580bc7f --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56 14h-24v6h27.5c-.9-2.1-2.1-4.2-3.5-6" fill="#ed4c5c"/><path d="m61.4 38c.4-1.9.6-3.9.6-6h-60c0 2.1.2 4.1.6 6h58.8" fill="#f9f9f9"/><path d="m32 2v6h18c-5-3.8-11.2-6-18-6" fill="#ed4c5c"/><g fill="#f9f9f9"><path d="m32 14h24c-1.7-2.3-3.7-4.3-6-6h-18v6"/><path d="m59.5 20h-27.5v6h29.4c-.4-2.1-1.1-4.1-1.9-6"/></g><g fill="#ed4c5c"><path d="m32 26v6h30c0-2.1-.2-4.1-.6-6 0 0-29.4 0-29.4 0"/><path d="m4.5 44h55c.8-1.9 1.5-3.9 1.9-6h-58.8c.4 2.1 1.1 4.1 1.9 6"/></g><path d="m8 50h48c1.4-1.8 2.6-3.9 3.5-6h-55c.9 2.1 2.1 4.2 3.5 6" fill="#f9f9f9"/><path d="M8,50c1.7,2.3,3.7,4.3,6,6h36c2.3-1.7,4.3-3.7,6-6H8z" fill="#ed4c5c"/><path d="m14 56c5 3.8 11.2 6 18 6s13-2.2 18-6h-36" fill="#f9f9f9"/><path d="M32,2C15.4,2,2,15.4,2,32h30V2z" fill="#2a5f9e"/><g fill="#ffe62e"><path d="m19.9 25.6c-3 0-5.5-2.5-5.5-5.6 0-3.1 2.5-5.6 5.5-5.6 1.2 0 2.2.4 3.1 1-1.3-1.5-3.1-2.4-5.2-2.4-3.8 0-6.8 3.1-6.8 7 0 3.9 3.1 7 6.8 7 2.1 0 3.9-.9 5.2-2.4-.9.6-2 1-3.1 1"/><path d="m26 18.8l.7-1.8-.2 1.9 1.4-1.3-1 1.7 1.8-.6-1.6 1 1.9.3-1.9.3 1.6 1-1.8-.6 1 1.7-1.4-1.3.2 1.9-.7-1.8-.7 1.8.2-1.9-1.4 1.3 1-1.7-1.8.6 1.6-1-1.9-.3 1.9-.3-1.6-1 1.8.6-1-1.7 1.4 1.3-.2-1.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2-1f1ff.svg b/riot/emojione/svg/1f1f2-1f1ff.svg new file mode 100644 index 0000000..42ff00c --- /dev/null +++ b/riot/emojione/svg/1f1f2-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m10.8 42v11.2c5.4 5.4 12.9 8.8 21.2 8.8 12.3 0 22.9-7.4 27.5-18h-47.7c-.4-.7-.7-1.3-1-2" fill="#ffe62e"/><path d="m11.8 20h47.7c-4.6-10.6-15.2-18-27.5-18-8.3 0-15.8 3.4-21.2 8.8v11.2c.3-.7.6-1.3 1-2" fill="#007168"/><path d="m62 32c0-2.8-.4-5.5-1.1-8h-50.1v16h50.1c.7-2.5 1.1-5.2 1.1-8" fill="#3e4347"/><g fill="#f9f9f9"><path d="m10 24h.8v-2c-.3.7-.5 1.3-.8 2"/><path d="m10 40c.2.7.5 1.3.8 2v-2h-.8"/></g><g fill="#fff"><path d="m60.3 22c-.2-.7-.5-1.4-.8-2h-47.7c-.4.7-.7 1.3-1 2 0 0 0 2 0 2h50.1c-.2-.7-.4-1.3-.6-2"/><path d="m60.3 42c.2-.7.4-1.3.6-2h-50.1v2c0 0 0 0 0 0 .3.7.6 1.4 1 2h47.7c.3-.7.5-1.3.8-2"/></g><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#ed4c5c"/><path d="m20.6 42l-6.5-4.8-6.5 4.8 2.5-7.7-6.5-4.7h8.1l2.5-7.7 2.5 7.7h8.1l-6.5 4.7 2.3 7.7" fill="#ffe62e"/><path d="m8.5 36.7h4.7c.4.4 1.2.6 2 0 1.5-.8 4.3 0 4.3 0l.6-.6-1.4-4.5-.5-.5c0 0-1.1-.6-3-.4-2 .2-2.7-.1-2.7-.1s-1.8.2-2.2.5c-.1 0-.6.6-.6.6l-1.2 5" fill="#fff"/><path d="m5.4 37.2l1.1 1.3c.1.1.2.1.4 0l1.6-2 .7-.9c.1-.1.1-.3.1-.4l1.3-1.2c.1 0 .2 0 .3 0-.1 0-.2-.1-.1-.2l.3-.2.2.3c0 0-.3.4-.4.4s-.4 0-.4 0l-.6.7.3.3.5 1.2.6-.4-.4-1.3.8-.9-.3-.5.2-.3c0 0 2.7 1.7 3.8 1.3 0 0 .1-1.2.1-1.2s-2.8-.3-2.9-.9c-.1-.6.6-.6.6-.6l-.3-.4.1-.2.5.6 1.1-.9 6.5 7.5c.4-.1.4-.2.5-.6 0 0-6.4-7.4-6.4-7.4l.5-.5c.1-.1.1-.2.1-.3l.8-.7c.2.1.4.2.5.4l2.1-1.8c.1.1.2.1.3 0l3.4-3.3-3.7 2.6-.1-.1c0-.1.1-.1 0-.3-.1-.2-.4.2-.4.2 0 0-.5-.2-.6-.4v.6l-.9.9h-.7l-1 1-.5.5.2.3c0 0-.6.5-.6.5 0 0-.1-.1-.1-.2l.5-.4v-.3l-.2-.2c0 0-.7.7-.7.6-.1-.1-1.8-2-1.8-2l.1-.4-1.1-1.2c-.4-.1-1-.2-1.2.7-.1.2-.9 0-.9 0l-.5.1-2.6 3.7 1.4 1.7 2.9-3.7.1-1.1.6.7c.2 0 .4 0 .6-.1l1.7 1.9-.3.3c.1.1.2.2.3.3.1-.1.2-.1.3-.2 0 0 .1.1.1.2-.1.1-.2.2-.4.3-.2-.2-.5-.3-.4-.6l-1 .8v.2l-2.9 2.4h-.3l.2.8 1.9-1.6v-.2l.2.2 1.5-1.2c0 0 .1.1.1.1s-1.3 1.2-1.3 1.2v.1l-.4.2-.1-.1-1.8 1.6h-.2l-1 1c-.3 0-.5 0-.7.2l-1.8 1.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f2.svg b/riot/emojione/svg/1f1f2.svg new file mode 100644 index 0000000..c04f371 --- /dev/null +++ b/riot/emojione/svg/1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m37.3 17.5h8.7v29h-5.7v-19.6c0-.6 0-1.4 0-2.4 0-1 0-1.8 0-2.4l-5.5 24.4h-5.8l-5.5-24.4c0 .6 0 1.3 0 2.4 0 1 0 1.8 0 2.4v19.6h-5.5v-29h8.8l5.3 22.8 5.2-22.8" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1e6.svg b/riot/emojione/svg/1f1f3-1f1e6.svg new file mode 100644 index 0000000..c53c7dd --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m17 6c-10.7 6.2-16.1 17.9-14.8 29.3l47.6-27.4c-9.3-6.9-22.2-8-32.8-1.9m8.5 11.4l-3.2-.9.9 3.2-2.2-2.4-.8 3.2-.8-3.2-2.3 2.4.9-3.2-3.2.9 2.4-2.3-3.2-.8 3.2-.8-2.4-2.3 3.2.9-.9-3.2 2.3 2.4.8-3.2.8 3.2 2.3-2.4-.9 3.2 3.2-.9-2.4 2.3 3.2.8-3.2.8 2.3 2.3" fill="#2a5f9e"/><path d="m14.2 56.1c9.3 6.9 22.2 8 32.8 1.8 10.7-6.2 16.1-17.8 14.8-29.3l-47.6 27.5" fill="#83bf4f"/><path d="m58 17c-1.4-2.4-3.1-4.5-5-6.4l-50 28.9c.7 2.6 1.7 5.1 3 7.5 1.4 2.4 3.1 4.5 5 6.4l50-28.9c-.6-2.6-1.6-5.1-3-7.5" fill="#ed4c5c"/><g fill="#fff"><path d="m61.5 26.5c-.1-.7-.3-1.4-.5-2l-50 28.9c.5.5 1 1 1.5 1.4.5.5 1.1.9 1.7 1.3l47.6-27.5c-.1-.7-.2-1.4-.3-2.1"/><path d="m51.5 9.2c-.5-.5-1.1-.9-1.7-1.3l-47.6 27.4c.1.7.2 1.4.3 2.1.1.7.3 1.4.5 2l50-28.8c-.5-.5-1-1-1.5-1.4"/></g><path fill="#ffce31" d="m23.2 13.5l2.3-2.3-3.1.9.9-3.1-2.3 2.3-.8-3.2-.8 3.2-2.3-2.3.9 3.1-3.2-.9 2.4 2.3-3.2.8 3.2.8-2.4 2.3 3.2-.9-.9 3.2 2.3-2.4.8 3.2.8-3.2 2.3 2.4-.9-3.2 3.1.9-2.3-2.3 3.2-.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1e8.svg b/riot/emojione/svg/1f1f3-1f1e8.svg new file mode 100644 index 0000000..7a9113f --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#83bf4f"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#2a5f9e"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z" fill="#ed4c5c"/><circle cx="24" cy="32" r="17.7" fill="#ffe62e"/><path d="m24 14c-9.9 0-18 8.1-18 18 0 9.9 8.1 18 18 18 9.9 0 18-8.1 18-18 0-9.9-8.1-18-18-18m-17.4 18c0-9.5 7.6-17.2 17-17.4v3.9c-1.1.5-1.9.9-2.1 1.9 0 .1-.1 1.4-.1 1.8 0 0 .2 0 .6-.3.2-.2.8-.3 1.6-.7v2c-1.2.2-2 1.2-2 2.4 0 1.2.9 2.2 2 2.4v.5c-.9 0-1.7-.3-2.4-1.7-.4-.8-1.4-2-1.4-2s.5 1.3.5 2.7c.1 2 1.9 2.2 3.2 2.2v.4h-2.5v.7h2.6v.4c-1.2.1-2 .7-2 1.5 0 .8.9 1.4 2 1.5v.4h-2.6v.4h2.6v.4c-2 .1-3 .9-3.1 2.1-.2 2.5-.7 4.5-.7 4.5s.8-.9 1.6-3.1c.4-1 1.3-1.6 2.2-1.8v.3c-.9.2-1.6 1.4-1.6 2.8 0 1.4.7 2.6 1.6 2.8v.8c-1.2 0-2.4.3-3 .8-.8.7-2.8 2.6-3.6 3.4-6.1-2.7-10.4-8.8-10.4-16m24 16.1c-.7-.8-2.5-2.7-3.6-3.5-.6-.5-1.6-.7-2.6-.8v-.8c.9-.2 1.6-1.4 1.6-2.8 0-1.4-.7-2.6-1.6-2.8v-.3c.9.1 1.8.8 2.2 1.8.9 2.2 1.6 3.1 1.6 3.1s-.5-2-.7-4.5c-.1-1.2-1.1-2-3.1-2.1v-.4h2.6v-.7h-2.6v-.4c1.2-.1 2-.7 2-1.5 0-.8-.9-1.4-2-1.5v-.4h2.6v-.7h-2.6v-.4c1.4 0 3.1-.2 3.2-2.2.1-1.4.5-2.7.5-2.7s-1 1.2-1.4 2c-.7 1.4-1.5 1.7-2.4 1.7v-.5c1.2-.2 2-1.2 2-2.4 0-1.2-.9-2.2-2-2.4v-2.5c.7-.6 1.5-1.5 2.3-2.9.4-.8.2-1.1.2-1.1 0 0 0 .1-.3.3-.7.6-1.5 1-2.2 1.4v-3.5c9.4.2 17 7.9 17 17.4.1 7.3-4.4 13.5-10.7 16.1" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1ea.svg b/riot/emojione/svg/1f1f3-1f1ea.svg new file mode 100644 index 0000000..b7f4707 --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#f27a52"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#83bf4f"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/><circle cx="32" cy="32" r="8" fill="#f27a52"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1eb.svg b/riot/emojione/svg/1f1f3-1f1eb.svg new file mode 100644 index 0000000..21005fb --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#699635"><path d="m2 32c0 11.5 6.5 21.5 16 26.5v-53c-9.5 5-16 15-16 26.5"/><path d="m62 32c0-11.5-6.5-21.5-16-26.5v53.1c9.5-5.1 16-15.1 16-26.6"/></g><path d="M32,2c-5.1,0-9.8,1.3-14,3.5v53.1c4.2,2.2,8.9,3.5,14,3.5s9.8-1.3,14-3.5V5.5C41.8,3.3,37.1,2,32,2z" fill="#fff"/><path d="m32.3 13.1c-.1.8-.2 1.7-.2 2.5-.3 0-.6.1-.8.1 0 0 .6.3.7.7v.1c-.2.1-.7.1-.7.1s.7.6.7.8c-.2.1-.9.2-.9.2s.8.6.9.9c0 .3 0 .5 0 .5-.1 0-1.4-1.1-2.2-.8l-.1.1c.1.2 1.3.4 2.1 1.1 0 .2-2.4-.6-2.5-.1.1.1 2.5.5 2.7.8-.9 0-2.8-.2-2.7.1-.2.3 1.8.1 2.6.4.2.3.2.5-.2.5-.8-.4-2.6-.7-2.6-.2.2.1 1.9.1 2.5.5-.9.2-3.9-.4-3.9-.1.1.1.6.7 1.4.7.8 0 2.7.3 2.8.6-.1.2-2.5-.5-3.4-.1-1 .5 2.8.2 3.4.7.6.6-1.2-.1-1.2-.1s-2.7-.2-3-.1c-.4.2-.8.6-.8.6s.3.5.5.4h.1l-.2.3c0 0 3.6.9 4.4 1.6.8.8-4.5-1.2-4.5-1.2s-2.1.8.1.8c-.3.4.1.6.1.6 0 0 3.8.8 4.1 1.4s-2.6-.6-3.2-.9c-.6-.3-2.4.2-2.5.3.1.1.9.3.9.5-.1.2-1 .3-1.1.5 0 .2 4.8 1.2 6 2.3 1.3 1.1-3.7-1.3-3.7-1.3s.3.4 0 .5c-.3.1-1.3-1.4-2.9-.5-.3.4 1.4.7 1.9.7-.1.4-.3.5.3.9l.1.1c-.1 0-1.2-.6-1.3-.6l.1.7c-.6-.5-1.2-.6-1.9-.1 0 0 0 .5.6.7-.4.7.4.5 1.6 1.2-1.8-.5-2 .4-.7.6s4.9.3 5.7 1.4c.2.2.2.3.2.4-.1.1-1.4-.8-1.6-.8 0 .1-.1.5-.1.5-.5-.3-1-.6-1.7-.7-.1.1 0 .2-.1.3-.6-.4-1.1-.7-2-.8 0 .1-.1.3-.1.4 0 0-.7-.9-2.1 0-.8.6 3 .2 3.6.9.6.7.1.8.1.8-.5-.2-1-.4-1.5-.6 0 0-1.8-.3-2.3.1-.5.4 7.4 1.4 7.7 2.5.2.6-1.9-.6-3.6-1.1-.1.2-.1.4-.2.6 0 0-.7-.7-1.5-.8l.2.7c0 0-2-.9-3-.4-1 .5 3.5.7 3.9 1.2l.1.1c-.1.1-1.4-.4-1.6-.1-.2.3-2.3-.6-2.3-.2 0 .4.3.6.3.6s4.5.4 4.7 1c.2.5-2.5-.3-2.5-.3s-.3.4-.1.6c-.1 0-1.5-1-1.4-.2-.6-.2-2-.9-1.8-.4.2.5 4 1.3 4.1 1.3-.1 0-1.7.1-1.6.6-2.1-1.3-2.1-.5-2.1-.5-.1 0-2.8-.7-.7.5 1.1.6 1.4.8 1.4.9h-.2l.2.6c-.1 0-1.5-.8-2-.8-.5-.1-2.8.6-.3 1.7 2.4 1.1 3.9-.3 5.3-.1 1.4.2 2 .4 1.9.8-.1.4-1.4-1.4-2.7.2-1.5-.3-2.5-.5-1.7.6-2.4-.9-3.9.3-.9.8 3 .1 4.9-.7 4.9-.7s.5.9 1.2.3c.7-.6.8.2.8.2l.7-.3h.2v6.1c.8 0 1.6 0 2.5 0 0 0-.8-5.3-.4-6 .4-.7.8-.6.8-.6 0 0 1.6.5 1.8.4.1-.1 0-.6.8-.5.3-.1.2-.5.3-.6.3 0 5.2 1.4 6.2 0-.3-.7-1.2-.1-1.5 0-.2 0-1.2-.5-1.8 0-.5-.4-2.8-.6-2.8-.6-.3-.3 5.5.2 5.9-.1.7-.7-1.3-.6-1.6-.4-.5-.3-1.2-.3-1.6-.1-.2-.5-2.1-.3-3.1-.4-.3-.2-.3-.3-.1-.4 2.2.1 4.4.4 6.6.3.6-.8-.8-1.1-1.6-.4-.5-.8-1.5 0-2.1-.1-.7-.1-.4-.9.5-.8.8.1 2.3-.1 2.6-.4.3-.4-.2-.8-1.6-.4-.5-.5-1.5 0-2 .2-.6-.4-2.1-.1-2.6.1-.5-.3 2.6-.8 2.6-.8 1.2 0 1.9-.2 2.3-.3 1.8-1 0-1.1-1-.4-.6-.5-1.2 0-1.7.2-.5.2-1.4.3-1.5.2.1-.1 1.4-1 1.4-1s1.8-.1 2.1-.2c.2 0 1-.4 1-.5 0-.1-.3-.1-1.3.2-.9.1-1.4 0-1.7.1-.5-.1-.8-.1-.8-.2.1-.1 1-.2 1-.2s2.6-.2 2.7-.4c.1-1-2.2-.6-2.2-.6 0-.7-2 0-2.1 0l-.1-.2v-.1c.1-.2.4-.3.4-.3.6-.1 1.4-.2 1.6-.4 0 0 1.6 0 1.8-.4-.4-1.1-3.3.2-3.7.4l-.2-.1c-.1-.2.5-.8.5-.8.1 0 2.5-.1 3.6-1.7.1-.9-1.3.5-1.3.5-.1-1.2-1.6.1-2.4.2-.8.1-.9-.4-.3-.5.6-.1 1.2 0 1.6-.9.3-.9 1.3.1 1.5-.3.2-.3-.3-.6-.4-.6 0 0 .7-.8-.5-.7-1.2 0-2.7-.1-2.7-.2.1 0 1.3-.5 2.4-.5 1.2 0 .5-.8-.6-.8-1.1 0-1.7-.4-1.7-.4.6-.2 1.3-.5 1.9-.7 0-.2-.1-.4-.1-.5 0 0 1.1-.9-.5-.7s-1.6.4-1.6.4l-3.2.5c0 0-.3-.1-.4-.2 0-.1.1-.1.4-.2.8-.2 3.7-.8 4.1-.6h.1c.2-.1-.4-1.1-1.7-1.2-1.5-.2-2.5.4-2.5.4s-1-.4-.1-.7c.9-.3 2.4.1 2.4.1s1.6-.5.3-.7c-1.3-.2-1.8.2-2.4.2-.2-.3 2.1-.4 2.3-.6-.2-.5-1.7 0-2.6 0-.4-.2-.4-.4 0-.6.9 0 1.7 0 2.6 0 0-.5 0-1 0-1.5-1.1-.2-2.4.1-3 .1.2-.5 2.6-.6 2.8-.8.5-.7-2.3 0-2.4 0-.5-.1-.5-.4-.2-.6.7-.1 2.4.1 2.3-.4-.1-.5-1.1-.2-1.6-.1-.4.1-1.1 0-1.1 0-.3-.4 2.5-.2 2.5-.5 0-.3-1.8-.1-2.3-.1-.4-.3 2.2-.5 2.3-.5.1-.8-1.8 0-2.1 0h-.1c-.1-.1 0-.5 0-.5l.7-.4-.6-.2v-.6c0 0 .5-.4.6-.6-.1-.1-.7.1-.7.1 0-.2 0-.3 0-.5 0 0 .5-.1.5-.3-.1-.1-.6-.2-.6-.2-.2-1-.3-1.9-.4-2.7m-.4 8.6v.4c0 0-.6 0-.7-.1.2-.2.6-.2.7-.3m.8.5c0 0 1.1 0 1.2.2-.1.2-1.2.3-1.2.3v-.5m-.1.7l.6.1c-.1.1-.5.1-.5.1l-.1-.2m-3.4.9c.4 0 1.1.1 2.4.4v.4c0 0-2.5-.7-2.7-.7 0 0 .1-.1.3-.1m1.3 1c.4 0 1.3.2 1.4.2v.5c-.1 0-1.5-.5-1.5-.6l.1-.1m3.8 1c.4 0 .6 0 .5.1-.3.3-2.1.6-2.1.6v-.6c.1 0 1-.1 1.6-.1m-5.3 1.7c.3 0 1 .2 2.7.8v.4c0 0-2.7-.8-2.8-1-.1.1-.2-.1.1-.2m5.4.6h.2c-.3.3-1.6.6-1.6.6v-.4c0 .1 1-.1 1.4-.2m-6 .1c.4 0 1.3.2 3.4 1.2v.4c-.1 0-3.7-1.3-3.7-1.3 0-.1-.1-.3.3-.3m6.9 1.6c.1 0 .2 0 .2 0-.3.3-2.4.6-2.5.7v-.3c.1 0 1.7-.4 2.3-.4m-6.2.9c.6 0 2.5.8 2.6.9v.4c-.1 0-2.6-1.1-2.7-1-.1-.2 0-.3.1-.3m5.6.2c.1 0 .2 0 .3 0-.2.2-2 .5-2 .5v-.4c0 .1 1.2-.1 1.7-.1m-.1 1.2c.1 0 .2 0 .2 0-.2.2-1.7.5-1.7.5v-.4c0 0 1-.1 1.5-.1m-6.4 0c.4 0 1.3.1 3.5.9l.1.4c0 0-3.7-1.2-3.8-1.2 0 0 0 0 .2-.1m4.9 1c0 0 .7 0 .8.1-.1.1-.7.2-.7.2s-.1-.2-.1-.3m1.5.8c.1 0 .2 0 .3.1l-.1.1c-.5.4-1.7.5-1.7.5v-.5c0 .1 1-.2 1.5-.2m1.5.5c.2 0 .3 0 .3.1l-.1.2c-.2.2-3.1 1.1-3.1 1.1v-.7c1.7-.5 2.5-.7 2.9-.7m-1.9 1.7c.2 0 .3 0 .4 0-.2.2-1.4.3-1.4.3v-.3c.1.1.6 0 1 0m1.2.5c-.4.4-2.2.8-2.2.8v-.3c0 0 1.8-.5 2.2-.5m1 .4c.2 0 .4 0 .5.1 0 .1-.1.4-.6.5-.6-.1-3.1.7-3.2.7v-.3c.9-.6 2.5-1 3.3-1m-6.4 1.4c1.1.1 1.5.5 1.6.7-.2.4-1.9-.5-1.8-.7h.2m6.2.1h.1v.1c-.1.2-.7.1-.7.1.1 0 .4-.2.6-.2m-2.3 1.2h.2v.1c-.2.3-.9.2-.9.2v-.2c0 0 .4-.1.7-.1m-4.4.8c.2 0 .4.1.6.3.5-.1 1.4.1 1.4.1v.4c-.1 0-1.2 0-1.5-.2-.2 0-.8-.3-.8-.5l.3-.1m4.9.2c.2 0 .3 0 .1.2-.4.5-1.4.3-1.4.3v-.3c.4 0 1-.2 1.3-.2m-3.7 1.1c.4 0 .8.1.8.1 0 0 .2.4 0 .6-.2.1-1.3-.1-1.4-.5.2-.1.4-.2.6-.2m-4.1.2c.4 0 .8.2.8.2v.4c0 0-.7-.2-1-.6h.2m6.9.1c.4 0 .9.1 1 .2v.1c-.2.2-1.4 0-1.4 0v-.3c.2 0 .3 0 .4 0" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1ec.svg b/riot/emojione/svg/1f1f3-1f1ec.svg new file mode 100644 index 0000000..0701d0c --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#83bf4f"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3"/></g><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1ee.svg b/riot/emojione/svg/1f1f3-1f1ee.svg new file mode 100644 index 0000000..8792edd --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><defs><linearGradient id="0" gradientUnits="userSpaceOnUse" x1="31.9021" y1="35.5122" x2="32.4944" y2="33.9449" gradientTransform="matrix(1 0 0-1 0 66)"><stop stop-color="#ff2a2a"/><stop offset="1" stop-color="#f00"/></linearGradient></defs><g fill="#428bc1"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z"/></g><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/><path fill="#42ade2" d="m32 25.3l-6.3 10.1h12.6z"/><path fill="#428bc1" d="m28.9 30.4l-3.2 5h12.6l-3.2-5z"/><path d="m33 31c0 0 0 0 0 0 0-.2 0-.3 0-.4 0-.3-.2-.7-.5-1.1-.2-.4-.5-.5-1-.2-.2.1-.3.2-.4.5 0 .1 0 .2 0 .3 0 0 .2.1.3-.1.1 0 .1-.1.1-.1-.1 0-.1.1-.1.1-.1.1-.2.2-.3.4-.1.2-.1.4-.1.5 0 0 .1.2.3.2.2.1.3.2.4.3.1.1.1.2.1.4 0 .1 0 .3.1.3.1 0 .2-.1.3-.2 0-.2.1-.3.1-.4.1-.1.1-.1.3-.1.1 0 .2 0 .2-.1 0 0 0 0 0-.1.2 0 .1-.1.2-.2" fill="url(#0)"/><path d="m37.6 34.4c-1-.1-1.9-1-2.1-1.9 0 0-.1-.1-.2-.1-.2 0-.2.1-.2.1-.1.3-.3.7-.6 1-.3-.3-.5-.7-.6-1 0 0-.1-.1-.2-.1-.2 0-.2.1-.2.1-.1.3-.3.7-.6 1-.3-.3-.5-.7-.6-1 0 0-.1-.1-.2-.1s-.2.1-.2.1c-.1.3-.3.7-.6 1-.3-.3-.5-.7-.6-1 0 0-.1-.1-.2-.1-.2 0-.2.1-.2.1-.1.3-.3.7-.6 1-.3-.3-.5-.7-.6-1 0 0-.1-.1-.2-.1-.2 0-.2.1-.2.1-.3.9-1.2 2-2.3 2.1l-.5.7h1.6 1.1 1.6.8.8.8 2.9 1.2 1.6l-.7-.9" fill="#83bf4f"/><path d="m32 23c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9m0 16.5c-4.1 0-7.5-3.4-7.5-7.5s3.4-7.5 7.5-7.5 7.5 3.4 7.5 7.5-3.4 7.5-7.5 7.5" fill="#dbb471"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1f1.svg b/riot/emojione/svg/1f1f3-1f1f1.svg new file mode 100644 index 0000000..c150ee5 --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.3,3.7,22h56.6C56.2,10.3,45.1,2,32,2z" fill="#ed4c5c"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#428bc1"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1f4.svg b/riot/emojione/svg/1f1f3-1f1f4.svg new file mode 100644 index 0000000..85182d9 --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m61.7 28c-.1-1-.3-2-.5-3h-58.4c-.2 1-.4 2-.5 3h59.4"/><path d="m2.3 36c.1 1 .3 2 .5 3h58.3c.2-1 .4-2 .5-3h-59.3"/><path d="m20 4.5c-1 .4-2 1-3 1.5v52c1 .6 2 1.1 3 1.5v-55"/><path d="m28 2.3v59.5c1 .1 2 .2 3 .3v-60.1c-1 0-2 .1-3 .3"/></g><g fill="#428bc1"><path d="m2 32c0 1.4.1 2.7.3 4h59.5c.2-1.3.3-2.6.3-4 0-1.4-.1-2.7-.3-4h-59.5c-.2 1.3-.3 2.6-.3 4"/><path d="m20 59.5c2.5 1.1 5.2 1.9 8 2.2v-59.4c-2.8.4-5.5 1.1-8 2.2v55"/></g><g fill="#ed4c5c"><path d="M17,25V6C10,10.1,4.8,16.9,2.8,25H17z"/><path d="M17,39v19C10,53.9,4.8,47.1,2.8,39H17z"/><path d="M32,2c-0.3,0-0.7,0-1,0v23h30.2C58,11.8,46.2,2,32,2z"/><path d="m31 39v23c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1f5.svg b/riot/emojione/svg/1f1f3-1f1f5.svg new file mode 100644 index 0000000..a1e7545 --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M44.5,56.5L20,32h24L18.7,6.7h-2.8v0C7.5,12,2,21.4,2,32c0,16.6,13.4,30,30,30c4.4,0,8.7-1,12.5-2.7V56.5z" fill="#ed4c5c"/><path d="M32,2c-4.4,0-8.7,1-12.5,2.7v4.8l21,21h-21v3.2l23.6,23.6h5C56.5,52,62,42.6,62,32C62,15.4,48.6,2,32,2z" fill="#f9f9f9"/><path d="M19.5,4.7c-1.3,0.6-2.5,1.2-3.7,2L39.2,30h-24l29.3,29.3c1.3-0.6,2.5-1.2,3.7-2L24.8,34h24L19.5,4.7z" fill="#428bc1"/><g fill="#fff"><path d="m19.6 21.8c.3-.5.4-1.2.4-1.8 0-2.2-1.8-4-4-4s-4 1.8-4 4c0 .7.2 1.3.4 1.8-1.9-.8-3.4-1.8-3.4-1.8s1.5 6 7 6c5.6 0 7-6 7-6s-1.5 1-3.4 1.8"/><path d="m16 39.6l1.6-1.6.6 2.2 2.2-.6-.6 2.2 2.2.6-1.6 1.6 1.6 1.6-2.2.6.6 2.2-2.2-.6-.6 2.2-1.6-1.6-1.6 1.6-.6-2.2-2.2.6.6-2.2-2.2-.6 1.6-1.6-1.6-1.6 2.2-.6-.6-2.2 2.2.6.6-2.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1f7.svg b/riot/emojione/svg/1f1f3-1f1f7.svg new file mode 100644 index 0000000..eba9292 --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M32,2C16.8,2,4.2,13.3,2.3,28h59.5C59.8,13.3,47.2,2,32,2z"/><path d="M32,62c15.2,0,27.8-11.3,29.7-26H2.3C4.2,50.7,16.8,62,32,62z"/></g><path d="m61.7 28h-59.4c-.2 1.3-.3 2.6-.3 4 0 1.4.1 2.7.3 4h59.5c.2-1.3.3-2.6.3-4s-.2-2.7-.4-4" fill="#ffe62e"/><path fill="#fff" d="m16 41.2l1.2-2.2.3 2.5 1.9-1.6-.7 2.4 2.4-.7-1.6 1.9 2.5.3-2.2 1.2 2.2 1.2-2.5.3 1.6 1.9-2.4-.7.7 2.4-1.9-1.6-.3 2.5-1.2-2.2-1.2 2.2-.3-2.5-1.9 1.6.7-2.4-2.4.7 1.6-1.9-2.5-.3 2.2-1.2-2.2-1.2 2.5-.3-1.6-1.9 2.4.7-.7-2.4 1.9 1.6.3-2.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1fa.svg b/riot/emojione/svg/1f1f3-1f1fa.svg new file mode 100644 index 0000000..f4b61fd --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m42.3 3.8c-1.4-.5-2.8-.9-4.2-1.2l-20.3 10.2h-6.1v-1l19.5-9.8c-1.1 0-2.2.1-3.3.3l-16.2 8.1v-.5c-.3.3-.7.6-1 1-.5.5-1 1-1.4 1.6v.5.9c.5.4 1 .9 1.4 1.4h2.3 11 18.4v-2.4h-13.6l13.5-6.9v-2.2"/><path d="m21.2 22.6h-8.2-2.3c-.4.5-.9 1-1.4 1.4v2.3 11.1h2.4v-9.8l19.7 9.8h11l-24.6-12.4h8.2l16.3 8.1v-1.4l-13.5-6.7h13.5v-2.4h-18.4-2.7"/></g><g fill="#ed4c5c"><path d="m8.5 13.4c0 0 0 0 0 0 .3.2.5.3.8.5v-.9-.5c-.3.2-.5.5-.8.9"/><path d="m17.8 25l24.5 12.3v-4.1l-16.2-8.2z"/><path d="m38.1 2.6c-2-.4-4-.6-6.1-.6-.3 0-.6 0-.8 0l-19.4 9.7v1h6.1l20.2-10.1"/><path d="m23.9 15.2h-11-2.3c.2.3.4.6.5.9.4.8.7 1.8.7 2.8 0 1-.2 2-.7 2.8-.2.3-.3.6-.5.9h2.3 8.2 2.7 18.4v-3.7-3.7h-18.3m5.3 7l-2.2-1.5-2.2 1.6.8-2.5-1.1-.8-1.1-.8h2.7l.8-2.5.8 2.5h2.7l-1.1.8-1.1.8 1 2.4"/><path d="m6.9 25c-.4.1-.8.1-1.3.1-.4 0-.9 0-1.3-.1-.5-.1-.9-.3-1.4-.5-.1.4-.2.9-.3 1.3-.4 2-.6 4-.6 6.1 0 1.8.2 3.6.5 5.3h3.1 3.7v-11-2.2c-.7.5-1.5.8-2.4 1m.9 9.5l-2.2-1.6-2.2 1.6.8-2.5-2.2-1.6h2.7l.8-2.5.8 2.5h2.7l-2.2 1.6 1 2.5"/></g><g fill="#2872a0"><path d="m28.8 12.8h13.5v-6.8z"/><path d="m11.7 9.9v.5l16.2-8.1c-6.2.8-11.8 3.6-16.2 7.6"/><path d="m11.7 37.3h19.7l-19.7-9.9z"/><path d="m42.3 31.8v-6.8h-13.5z"/><path d="m11.5 17l-2.7 1.9-1 .7.2.5 1.3 3.9c.5-.4 1-.9 1.4-1.4.2-.3.4-.6.5-.9.4-.8.7-1.8.7-2.8-.1-.7-.2-1.3-.4-1.9"/><path d="m10.6 15.2c-.4-.5-.9-1-1.4-1.4-.2-.2-.5-.3-.8-.5-.7.8-1.3 1.7-1.8 2.6l.4 1.1h2.5 2.1c-.1-.3-.2-.6-.4-.9-.2-.3-.3-.6-.6-.9"/><path d="m3.4 22.9c-.2.5-.3 1-.4 1.4 0 .1 0 .2-.1.2.4.2.9.4 1.4.5.4.1.8.1 1.3.1s.9 0 1.3-.1c.9-.2 1.7-.6 2.4-1.1l-3.7-2.7-2.2 1.7"/></g><g fill="#ffce31"><path d="m44.4 4.7c-.7-.3-1.4-.6-2.1-.8v2.1 6.8 2.4 3.7 3.7 2.4 6.8 1.4 4.1h-11-19.6-2.4-3.7-3.1c.6 3.2 1.6 6.2 3.1 9 .6 1.1 1.3 2.2 2 3.3 5.5 7.5 14.4 12.4 24.4 12.4 16.6 0 30-13.4 30-30 0-12.1-7.2-22.6-17.6-27.3"/><path d="m9.3 24l-1.3-3.9-.2-.5 1-.7 2.7-1.9h-2-2.5l-.3-1c-.2.3-.4.7-.6 1-.2.3-.3.5-.4.8-.2.3-.3.6-.5.9 0 .1-.1.2-.1.2-.1.1-.1.3-.2.4-.2.4-.3.7-.5 1.1-.4.8-.7 1.6-1 2.5l2.2-1.6 3.7 2.7"/><path d="m25.7 19.7l-.8 2.5 2.1-1.5 2.2 1.5-.8-2.5 1-.8 1.1-.8h-2.7l-.8-2.5-.8 2.5h-2.7l1.1.8z"/><path d="m3.4 34.5l2.2-1.6 2.2 1.6-.9-2.6 2.2-1.5h-2.7l-.8-2.6-.8 2.6h-2.7l2.2 1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3-1f1ff.svg b/riot/emojione/svg/1f1f3-1f1ff.svg new file mode 100644 index 0000000..688b145 --- /dev/null +++ b/riot/emojione/svg/1f1f3-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2v10H12v20H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#2a5f9e"/><g fill="#fff"><path d="M14,8C6.7,13.5,2,22.2,2,32h12V8z"/><path d="M8,14h24V2C22.2,2,13.5,6.7,8,14z"/><path d="M9.8,11.8L26,32h6v-7.5L17.1,5.9C14.4,7.5,11.9,9.5,9.8,11.8z"/></g><g fill="#ed4c5c"><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z"/><path d="m32 27.1l-13-16.1h-6l17 21h2z"/></g><path d="m37.1 32l1-2.9-2.7-1.9h3.4l1-2.8 1 2.8h3.4l-2.7 1.9 1 2.9-2.7-1.8-2.7 1.8" fill="#fff"/><path fill="#ed4c5c" d="m39.8 29.5l1.6 1.1-.6-1.8 1.6-1.1h-2l-.6-1.7-.6 1.7h-2l1.6 1.1-.6 1.8z"/><path d="m54.6 32l1-2.9-2.7-1.9h3.4l1-2.8 1 2.8h3.4l-2.7 1.9 1 2.9-2.7-1.8-2.7 1.8" fill="#fff"/><path fill="#ed4c5c" d="m57.3 29.5l1.6 1.1-.6-1.8 1.6-1.1h-2l-.6-1.7-.6 1.7h-2l1.6 1.1-.6 1.8z"/><path d="m45.9 21.7l1-2.9-2.7-1.9h3.4l1-2.8 1 2.8h3.4l-2.7 1.9 1 2.9-2.7-1.8-2.7 1.8" fill="#fff"/><path fill="#ed4c5c" d="m48.5 19.2l1.6 1.1-.6-1.8 1.6-1.1h-1.9l-.7-1.7-.5 1.7h-2l1.6 1.1-.6 1.8z"/><path d="m45 48.7l1.3-3.8-3.6-2.5h4.5l1.3-3.7 1.3 3.7h4.4l-3.6 2.5 1.3 3.8-3.5-2.4-3.4 2.4" fill="#fff"/><path fill="#ed4c5c" d="m48.5 45.4l2.1 1.4-.7-2.3 2-1.5h-2.5l-.9-2.2-.7 2.2h-2.6l2 1.5-.7 2.3z"/><path fill="#fff" d="m12.6 11h12.2v3h-12.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f3.svg b/riot/emojione/svg/1f1f3.svg new file mode 100644 index 0000000..a32f055 --- /dev/null +++ b/riot/emojione/svg/1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m20.2 17.5h6.4l11.5 20.2v-20.2h5.6v29h-6.1l-11.7-20.6v20.6h-5.6l-.1-29" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f4-1f1f2.svg b/riot/emojione/svg/1f1f4-1f1f2.svg new file mode 100644 index 0000000..3a23ddc --- /dev/null +++ b/riot/emojione/svg/1f1f4-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-3.5,0-6.9,0.6-10,1.7V22h38.3C56.2,10.4,45.1,2,32,2z" fill="#f9f9f9"/><path d="M60.3,22H22V3.7C10.4,7.8,2,18.9,2,32s8.4,24.2,20,28.3V42h38.3c1.1-3.1,1.7-6.5,1.7-10S61.4,25.1,60.3,22z" fill="#ed4c5c"/><path d="M22,42v18.3c3.1,1.1,6.5,1.7,10,1.7c13.1,0,24.2-8.3,28.3-20H22z" fill="#699635"/><path d="m19.1 22.4l-.2.1-1.6-1.4-1.8-2c.1-.2.1-.7 0-1l.3-.3h.3c.1.2.3.4.6.4.3 0 .5-.1.6-.4h.4v.5h2.7v-1.5h-2.7v.5h-.4c-.1-.2-.3-.4-.5-.4l.1-.1 2.2-4.5-.3-.3-3.1 4.2.2.2-.2.4h-.5l-.1-.2h.4v-.3l-.3-.1v-.6h.4l.1-.3-.8-.2v-2l.6-.7-1-.7-1 .7.6.7v2l-.8.2.1.3h.4v.6l-.3.1v.3h.4l-.1.2h-.5l-.2-.4.2-.2-3.1-4.2-.2.1 2.2 4.5.1.1c-.2 0-.4.2-.5.4h-.4v-.5h-2.9v1.5h2.7v-.5h.4c.1.2.3.4.6.4.3 0 .5-.1.6-.4h.3l.3.4v.2h-.4v.5l-2.4.2-.1-.2c0 0-1.3.2-1.5.5 0 .1 0 .2 0 .3.2.3 1.5.7 1.5.7v-.1c0 0 .9.2 1.9.3l-.6.7-1.6 1.4-.2-.1-1.4 1.4-.1.2 1.6-.5 1.1-.8-.2-.1 2.6-2.2c.1 0 .2 0 .2 0 .3 0 .9-.2 1.1-.4l.3.3 2.7 2.3-.2.1 1.1.8 1.6.5.1-.2-1.4-1.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f4.svg b/riot/emojione/svg/1f1f4.svg new file mode 100644 index 0000000..079e2b1 --- /dev/null +++ b/riot/emojione/svg/1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m41.5 44c-2.2 2.3-5.4 3.4-9.5 3.4s-7.3-1.1-9.5-3.4c-2.9-2.8-4.4-6.8-4.4-12 0-5.3 1.5-9.3 4.4-12 2.2-2.3 5.4-3.4 9.5-3.4s7.3 1.1 9.5 3.4c2.9 2.7 4.4 6.7 4.4 12 0 5.2-1.5 9.2-4.4 12m-3.8-4.4c1.4-1.8 2.1-4.3 2.1-7.6 0-3.3-.7-5.8-2.1-7.5s-3.3-2.7-5.7-2.7-4.3.9-5.7 2.7-2.1 4.3-2.1 7.6c0 3.3.7 5.8 2.1 7.6s3.3 2.7 5.7 2.7 4.3-1.1 5.7-2.8" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1e6.svg b/riot/emojione/svg/1f1f5-1f1e6.svg new file mode 100644 index 0000000..cbeb303 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2v30h30c0-16.6-13.4-30-30-30" fill="#ed4c5c"/><path d="M32,62V32H2C2,48.6,15.4,62,32,62z" fill="#2a5f9e"/><g fill="#f9f9f9"><path d="m32 62v-30h30c0 16.6-13.4 30-30 30"/><path d="M32,2v30H2C2,15.4,15.4,2,32,2z"/></g><path fill="#2a5f9e" d="m17 20.7l3.1 2.3-1.2-3.8 3.1-2.4h-3.8l-1.2-3.8-1.2 3.8h-3.8l3.1 2.4-1.2 3.8z"/><path fill="#ed4c5c" d="m47 46.7l3.1 2.3-1.2-3.8 3.1-2.4h-3.8l-1.2-3.8-1.2 3.8h-3.8l3.1 2.4-1.2 3.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1ea.svg b/riot/emojione/svg/1f1f5-1f1ea.svg new file mode 100644 index 0000000..dab27b6 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3"/><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z"/></g><path d="M42,3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7v56.6c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1eb.svg b/riot/emojione/svg/1f1f5-1f1eb.svg new file mode 100644 index 0000000..d68516d --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#f9f9f9"/><g fill="#ed4c5c"><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z"/><path d="m30.5 34.6c-1 1.6-4 1.2-4.6 0v-9.8h-1.5v10c.7 3.5 4.9 4.4 6.1-.2"/><path d="m37.8 24.8v9.8c-.7 1.1-3.5 1.6-4.5 0 1.2 4.6 5.4 3.7 6.1.2v-10c0 0-1.6 0-1.6 0"/></g><g fill="#ffce31"><path d="m29 19.9l-.4-.6c-1 .3-1.9.6-2.8 1.1.7 1.5 2.6 5 2.6 5s.1-5.2.6-5.5"/><path d="m35 22.7c0 0 0 2 0 2.7 1-1.7 2-3.5 3.1-5.2-.2-.1-.5-.2-.8-.4-.5-.2-1-.4-1.5-.5-.3-.1-.5-.2-.8-.2 0 0-.1 0-.1 0-.4 1.2-1.1 3.6-1.1 3.6s1.2 0 1.2 0"/></g><g fill="#2a5f9e"><path d="m34.5 42.4c-1.1 0-1.9 1.1-2.8 1-.9-.1-1.3-1.1-2.6-1.1 0 0-.1 0-.1 0-.9 0-2.2.6-2.7.9 0 0 2.1 1.7 5.5 1.7 3.4 0 5.6-1.7 5.6-1.7s-1.7-.8-2.9-.8"/><path d="m34.8 41c-1.3.1-1.7-.8-2.9-.7-1.2 0-1.9.7-2.8.8-.9 0-2.1-.9-2.8-.8-.6 0-2.3.7-2.9.9.2.2.4.4.6.6h16c.1-.1.2-.2.3-.2-.5-.4-1.6-1.3-2.9-1.3-1.8-.2-1.3.5-2.6.7"/><path d="m40.1 38.1c-1 0-1.8 1-2.6 1-.8 0-1.8-1-2.8-1-1 0-2 1-2.9 1s-1.7-1-2.9-1c-1.2 0-1.8 1.1-2.7 1-.9-.1-1.7-1.1-2.6-1.1-.6 0-1.5.6-2.1 1 .2.2.3.5.5.7h20c.1-.1.2-.3.3-.4-.2-.4-1.3-1.1-2.2-1.2"/><path d="m31.8 36.4c-1.4 0-2.4 1.4-2.3 1.4h4.7c0-.1-1.1-1.5-2.4-1.4"/><path d="m40.2 37.2c-.8 0-.7-.2-1.1-.5-.2.4-1.1 1-1.1 1h5.5c.1-.2.2-.5.3-.7-.4-.3-.8-.6-1.2-.6-.8 0-1.6.9-2.4.8"/><path d="m24.5 36.8c-.4.2-.3.4-1.1.5-.8 0-1.6-.9-2.4-.9-.3 0-.6.2-.8.4.1.3.3.7.5 1h5c-.1 0-1-.6-1.2-1"/><path d="m23.9 34.5c-1.2-.4-2.1.8-3 .9-.6 0-1.2-.4-1.5-.6.1.4.2.7.3 1.1h4.5c0-.1-.3-.7-.3-1.4"/><path d="m42.8 35.4c-.8 0-1.8-1.3-3-.9 0 .7-.3 1.3-.3 1.3h4.5l.5-1.3c0 0-.9.9-1.7.9"/><path d="m30.6 35.8h2.4c0 0 0-.7-1.2-.7-1.2 0-1.1.7-1.2.7"/></g><path d="m29.4 28.7l4.8 1.2v-6.5c-2.2.1-4.1-4-.1-4.2-3.8-.5-4.3.4-4.7 1.4v8.1" fill="#ed4c5c"/><g fill="#ffce31"><path d="m26.5 29.3v.8h2.1z"/><path d="m28.6 29.9v-1.1c-.6-.4-1.5-1.3-2.1-1.6v1.7l2.1 1"/><path d="m19 30.6c0 .3 0 .7 0 1 0 .7.1 1.3.1 1.9h4.4v-2.8l-4.5-.1"/><path d="m19.9 26.8c-.4.9-.7 1.9-.8 2.9l4.4.4v-2l-3.6-1.3"/><path d="m22 23.5c-.7.8-1.2 1.7-1.7 2.6l3.2 1.5v-2.8l-1.5-1.3"/><path d="m26.5 26.4l2 1.9v-2l-3.6-5.4c-.8.5-1.6 1.2-2.3 1.9.4.5 1.1 1.1 1.4 1.5h2.5v2.1"/><path d="m45 30.5l-5 .4v2.7h4.8c-.1-.1.2-1.3.2-3.1"/><path d="m44.8 29.7c-.2-1.8-.8-3.1-.8-3.1l-4 1.6v2l4.8-.5"/><path d="m43.6 25.8c-.5-.9-1-1.7-1.7-2.5-.7.5-1.3.9-2 1.4v2.9c1.3-.6 2.5-1.2 3.7-1.8"/><path d="m35 30.2l2-.1v-.8z"/><path d="m35 28.9v.9l2-.9v-1.7c-.7.5-2 1.7-2 1.7"/><path d="m39.7 24.2c0 0 1.2-1.2 1.6-1.6-.7-.7-1.6-1.4-2.5-1.9-1.3 1.9-2.5 3.7-3.8 5.6 0 .7 0 1.4 0 2.2.7-.6 1.4-1.2 2-1.9v-2.3l2.7-.1"/></g><g fill="#ed4c5c"><path d="m26.8 35.1h2.2c.9 0 1.3-1.2 1.3-1.2h-2c-1.1-.1-1.5 1.2-1.5 1.2"/><path d="m35.3 33.8h-2c0 0 .4 1.2 1.3 1.2h2.2c0 .1-.4-1.2-1.5-1.2"/><path d="m26.3 33.2h11v.4h-11z"/><path d="m31.1 32.7l.7-.6.7.6.2-.2-.7-.6.7-.7-.2-.2-.6.5v-.8h-.3v.8l-.5-.5-.2.2.7.7-.7.6z"/><path d="m37.3 31.2l-.2-.2-.6.5v-.8h-.3v.8l-.5-.5-.2.2.7.7-.7.6.2.2.7-.6.7.6.2-.2-.7-.6z"/><path d="m33.4 32.7l.7-.6.7.6.2-.2-.7-.6.7-.7-.2-.2-.6.5v-.8h-.3v.8l-.5-.5-.2.2.7.7-.7.6z"/><path d="m28.8 32.7l.7-.6.7.6.2-.2-.7-.6.7-.7-.2-.2-.6.5v-.8h-.3v.8l-.5-.5-.2.2.7.7-.7.6z"/><path d="m26.5 32.7l.7-.6.7.6.2-.2-.7-.6.7-.7-.2-.2-.6.5v-.8h-.3v.8l-.5-.5-.2.2.7.7-.7.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1ec.svg b/riot/emojione/svg/1f1f5-1f1ec.svg new file mode 100644 index 0000000..094bf89 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c9.8,0,18.5-4.7,24-12L8,14c-3.8,5-6,11.2-6,18C2,48.6,15.4,62,32,62z" fill="#3e4347"/><path d="m62 32c0-16.6-13.4-30-30-30-9.8 0-18.5 4.7-24 12l48 36c3.8-5 6-11.2 6-18" fill="#c94747"/><path d="m53 29.7c-.2-2.8-1.1-3.2-1.3-3.6-.1-.4.2.1.5.2.3.1-.1-.6-.1-.9-.1-.3.9.7 1.2.7.3.1-.6-2.3-.9-2.5-.3-.2.3.1.4.1s-1.6-2.7-1.9-2.7.3-.1.5-.1-2-1.8-2.4-1.8.8-.5.9-.5c.2 0-2.5-1.5-5 0-.1-.1 1.2-1 1.2-1.4 0-.1-.4-.3-.5-.4 0-.1.7-.5.7-.7 0-.2-.3-.1-.5-.1 0-.2.6-.7.5-1 0-.1-.5-.2-.6-.1s.3-.6.2-.8c-.1-.1-.3 0-.5 0-.1 0 .7-1.3.6-1.4-.2-.2-2.6 1.3-3.5 2.9-.9 1.6-.2 2.9-.3 3.4-.1.5-.3 1.1-.6 1.1-.4 0-1.2-.6-1.5-.9s-.3-.5-.7-.6c-.4-.1-1.3.2-1.7.3-.3 0-1.7-.3-1.8-.2-.1.1 1.3.6 1.6.8.3.2.3.4.6.5.2.1 2.4.8 1.7 1.7-.5.6-1.6-.6-3-.7-1.4 0-2.3 1.3-2.7 1.8-.4.5-1.7 2.9-1.7 3.1 0 .3.8-.7 1.1-.9 0 .3-.3.7-.2.9.1.1 1-.7 1.3-.7.1.2-.2.5-.1.8.1.1.6-.6 1-.7.1.3-.3.7-.1 1.1.1 0 1-1 1.3-1.1.3-.1-.1.9 0 1 .3-.2 1.1-1.1 1.3-1.2.3-.1 0 1.2.1 1.2.3-.2 1.1-1.3 1.2-1.5.1-.2-.1 1.7.8 2.6s2.2 2.1 2.4 2.1c.2-.3-.1-1 .1-.9.4.4 1.1 1.1 1.3 1.1s-.1-.7.1-.7c.5.4 1.8 2.1 4.3 2.9-.2-.5-.5-.9-.6-1.1.2 0 .8.3.9.3.1 0-1.3-1.7-1.2-1.9.3 0 .5.2.6 0-.1-.2-1.3-1.6-1.3-1.9 0-.3.4.1.5 0 .1-.1-.5-1.3-.3-1.4.1-.1 1.4.8 1.7.8.1 0 .2-.2.2-.4.9.7 2.5 2 3.7 3.7 0 .4-.1.7-.2 1.1-.9 2.1-2.6 3.2-5.1 2.3.1.2 1.5 1.3 2.9.9 1.2-.3 2.7-1.2 3-3.2.3.7.5 1.5.5 2.3 0 3.8-3.4 3.7-4.3 3.5 1.1.9 5.2.7 5.2-3.5-.1-1.3-.7-2.6-1.5-3.7m-4.3-4.1c0-.1 0-.2.1-.2.1-.1 1.2.6 1.4.6s.2-.5.3-.4c.1 0 1.4 1.4 1.8 3.2-1.4-1.6-2.9-2.8-3.6-3.2" fill="#ffce31"/><g fill="#fff"><path d="m19.4 41.2l-.4-1.2-.4 1.2h-1.2l1 .8-.4 1.2 1-.8 1 .8-.4-1.2 1-.8z"/><path d="m14.4 26.6l-.7 2.3 1.9-1.4 2 1.5-.8-2.4 2-1.5h-2.4l-.8-2.5-.7 2.5h-2.5z"/><path d="m8.9 34.7l-.8-2.4-.7 2.4h-2.5l2 1.5-.7 2.4 1.9-1.5 2 1.5-.8-2.4 2-1.5z"/><path d="m24.3 35.5l2-1.5h-2.4l-.8-2.4-.7 2.4h-2.5l2 1.5-.7 2.4 1.9-1.5 2 1.5z"/><path d="m16.4 47.7l-.8-2.5-.7 2.5h-2.5l2 1.5-.7 2.3 1.9-1.4 2 1.5-.8-2.4 2-1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1ed.svg b/riot/emojione/svg/1f1f5-1f1ed.svg new file mode 100644 index 0000000..57ebde4 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M33,32L11.3,53.7C16.7,58.8,24,62,32,62c16.6,0,30-13.4,30-30H33z" fill="#ed4c5c"/><path d="M62,32C62,15.4,48.6,2,32,2c-8,0-15.3,3.2-20.7,8.3L33,32H62z" fill="#428bc1"/><path d="M11.3,10.3C5.6,15.8,2,23.5,2,32s3.6,16.2,9.3,21.7L33,32L11.3,10.3z" fill="#f9f9f9"/><g fill="#ffce31"><path d="m13 13.6l-.8 1.4 1.1 1.1-1.5-.2-.8 1.4-.2-1.5-1.5-.2 1.4-.8-.2-1.5 1.1 1.1z"/><path d="m13.2 48l-1.1 1.2.8 1.3-1.4-.6-1.1 1.2.2-1.6-1.5-.6 1.6-.3.2-1.6.8 1.4z"/><path d="m30.5 32l-1.5.5v1.5l-1-1.2-1.5.4 1-1.2-1-1.2 1.5.4 1-1.2v1.5z"/><path d="m23.7 30.5l-.6-.5-6.5 1.4h.1l6.1-1.6-.8-.5-5.2 2 4.3-3.6-.1-.9-4.5 4.6h-.1l4.5-5-.1-.7-.7.1-4 5.2v-.1l3.7-5.3-.9.1-2.7 4.9 1-5.6-.6-.6-.6 6.5v.1l.2-6.8-.5-.5-.5.5.2 6.8v-.1l-.5-6.4-.6.6 1 5.6-2.7-4.9-.9-.1 3.7 5.3v.1l-4.1-5.4-.7-.1-.1.7 4.5 5h-.1l-4.5-4.6-.1.9 4.3 3.6-5.2-2-.7.5 6.1 1.6h.1l-6.6-1.3-.6.4.4.6 6.6.9h-.1l-6.3-.6.5.7 5.6-.1-5.2 2.1-.2.9 5.7-2.8h.1l-5.9 3.2-.2.7.7.2 5.7-3.6v.1l-5.2 3.7.8.2 4.2-3.7-2.9 4.9.4.8 2.6-5.8.1-.1-2.5 6.3.3.7.7-.3 2.1-6.5v.1l-1.7 6.2.8-.4.9-5.6.9 5.6.8.4-1.7-6.2v-.1l2.1 6.5.7.3.3-.7-2.5-6.3.1.1 2.6 5.8.4-.8-2.8-4.9 4.2 3.7.8-.2-5.2-3.7v-.1l5.7 3.6.7-.2-.2-.7-5.9-3.2h.1l5.7 2.8-.3-.9-5.3-1.9 5.6.1.5-.7-6.3.6h-.1l6.6-.9.5-.7m-7.2 1.6"/><circle cx="15.7" cy="32" r="4.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1f0.svg b/riot/emojione/svg/1f1f5-1f1f0.svg new file mode 100644 index 0000000..3a8cfd9 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,58V6C8,11.2,2,20.9,2,32S8,52.8,17,58z" fill="#f9f9f9"/><path d="M32,2c-5.5,0-10.6,1.5-15,4v52c4.4,2.6,9.5,4,15,4c16.6,0,30-13.4,30-30S48.6,2,32,2z" fill="#699635"/><g fill="#fff"><path d="m38 38.1c-6.1 0-11-4.8-11-10.8 0-2.9 1.1-5.4 3-7.4-4.1 2.1-7 6.4-7 11.3 0 7 5.8 12.7 13 12.7s13-5.7 13-12.7c0-.7-.1-1.4-.2-2-.9 5.1-5.4 8.9-10.8 8.9"/><path d="m40 19.9l2.5-1.9-1 3.1 2.5 1.8-3 .1-1 3-1-3-3-.1 2.5-1.8-1-3.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1f1.svg b/riot/emojione/svg/1f1f5-1f1f1.svg new file mode 100644 index 0000000..bf78dbb --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c16.6,0,30,13.4,30,30H2C2,15.4,15.4,2,32,2z" fill="#f9f9f9"/><path d="m32 62c-16.6 0-30-13.4-30-30h60c0 16.6-13.4 30-30 30" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1f2.svg b/riot/emojione/svg/1f1f5-1f1f2.svg new file mode 100644 index 0000000..517c668 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m25.8 9.3h-6.9-3.5v-2.2-.1c-.8.5-1.5 1.1-2.3 1.7-1.7 1.4-3.3 3-4.6 4.7h2.8v2.1 6h-7.4c-1.2 3.3-1.9 6.8-1.9 10.5 0 3.5.6 6.9 1.7 10h22v-20.4h-10.3v-6-2.2h3.5 6.9v-4.1" fill="#fff"/><path d="m32 2c-2.1 0-4.2.2-6.2.6v58.7c2 .4 4.1.6 6.2.6 16.6 0 30-13.4 30-30 0-16.5-13.4-29.9-30-29.9" fill="#0091c8"/><path d="m61.5 32.3c0-.2.3-.7.5-1.2 0-.3 0-.6 0-.9-.2.4-.4.7-.4.9-.2.6-.4.2-.4-1.6-.1-1.4 0-2.8.2-4.1-.7-3.3-2-6.4-3.8-9.2-.4.1-.7.2-.7.2 0 0 .2-.3.4-.7-.1-.1-.2-.3-.3-.4-.6.8-1.2 1.5-1.3 1.5-.2.1-.9.3-1.7.6l-1.4.6 1.1-1c.6-.5 1.7-1.6 2.5-2.3l.2-.2c-.1-.1-.2-.2-.2-.3l-1.5 1.4c-1.6 1.5-3.2 2.9-3.4 3-.2.1-.5.3-.5.5-.1.3 0 .7.3.8.2.1.1.3-.5 1.1-.8 1.1-1.5 2.4-2 3.7l-.4 1-.2-.9c-.3-1.1-.6-2.7-.6-3.8 0-1 0-1 .7-1.9.8-1.1 2.7-3.1 3.7-3.9.4-.3 1.1-.8 1.6-1 1-.5 1.3-.7 1.3-1 0-.4-.3-.6-.8-.5-.3.1-1.4-.1-3.3-.5-1.6-.3-2.9-.6-3-.6 0 0 .1-.6.3-1.2.2-.8.4-1.3.6-1.5.4-.4.4-.9 0-1.2-.6-.6-1.6-.1-1.5.8l.1.4-.8.1c-.5.1-1.6.3-2.4.5-1.8.5-3.1.6-4 .2-.3-.1-.5-.2-.5-.2 0 0 0 .1 0 .3 0 .5.3 1 .9 1.3l.5.3-.4.1c-.2.1-.8.1-1.3 0s-.9 0-.9 0c0 .3.6 1 1 1.2.9.5 2.7.3 4.8-.4 1-.4 2.4-.5 2.3-.2 0 .2-1.8 1.5-4.9 3.7-1.6 1.1-1.8 1.4-1.6 1.9.1.3.1.4-.3 1-.8 1.4-1.6 3.8-1.6 5 0 .6 0 .7-.9 1.6-1.7 1.8-5.1 6-5.8 7.3l-.2.3-.2-.3c-.5-.6-1.5-.3-1.5.5 0 .5.3.8.9.8.3 0 1 .3 2.1.8l1.7.8-.4.5c-.6.7-.7 1.2-.4 1.6.2.2.3.2 1.1.2.8 0 1 .1 1.9.5.9.4 1.2.7 2.5 2 3.8 3.9 4.8 4.9 6.9 6.2.6.3 1.1.5 1.3.5.2-.1.6-.4 1-.8 1.7-2 3.1-1.5 6.3.3 1.6.9 2.2 1.1 2.4 1.1v-.2c.4-1.8 1-2.4 2.4-2.6.8-1.7 1.5-3.5 2-5.4-.8 0-1.7 0-2.3 0l-1.3-.1.1-.4c.1-.6.5-1.3 1.1-1.9.3-.3.5-.6.6-.6 0 0 .4.2.9.5.4.3.9.6 1.3.8.2-1.1.4-2.3.5-3.4-.3-.8-.5-1.7-.4-2m-14.7-18c.3-1.2.6-2.3.7-2.3.1 0 1.1.2 2.3.5 2.7.5 2.7.6 2.2.7-.2.1-1.5.4-2.8.8l-2.5.7.1-.4m-10.7 20.9h-.4c-.5-.1-4.3-1.8-4.3-2 0-.5 3.6-5.1 5.7-7.3l.8-.8v.4c0 .2.1.8.2 1.2l.2.8-1.1 3.9-1.1 3.8m4 2c-.1 0-.8-.3-1.5-.8-.7-.4-1.5-.8-1.7-.9l-.4-.1 1-3.5c.5-1.9 1-3.5 1-3.5.1 0 .2.3.4.7.2.5.3.9.3 2v1.3h.4.4v1.1c0 .6.1 1.6.3 2.1.2 1 .2 1.6-.2 1.6m1.6-9.3l-.4 1.2h-.9c-.5 0-.9 0-1-.1-.2-.2 0-1.1.3-1.6.3-.5 1.2-1 1.8-1 .2 0 .4 0 .4.1.2.1 0 .7-.2 1.4m2.4 1.3h-1.2l.1-.4c.1-.2.2-.6.3-1l.2-.7.4.3c.3.2.6.6.9.9.2.3.4.6.4.7 0 .1-.5.2-1.1.2m.3-13.9c-.5.1-1.4.4-1.9.5-.5.1-.8.2-.8.2.1-.1 4.2-3.1 4.3-3.1v.2c0 .1-.2.6-.3 1.1l-.3.8-1 .3m4.8 21.8c-1.1-.8-2.2-2.2-2.8-3.7-.4-.9-.4-1-.1-1 .2 0 .2-.3.2-1.6v-1.6h-.4c-.3 0-.4-.1-.5-.5-.1-.3-.2-1.2-.2-2.3 0-1.9.2-2.7 1-4.5.4-1 .6-.9.6.1 0 .7.3 2.2.7 3.3.3.8.3 1 .2 1.5-.1.3-.2 1.1-.3 1.9-.2 2.4.2 4.7 1.2 6.9.3.6.6 1.3.6 1.5l.1.3-.3-.3m3.3-2.6c0 .1-.3.9-.6 1.8-.3.9-.6 1.7-.6 1.8 0 .1-.3 0-.6-.1-.4-.2-.5-.3-.7-.9-.2-.6-.2-.7.2-1.2.4-.7 1-1.2 1.7-1.3.6-.3.6-.3.6-.1m3.5 4.9c-.4 0-1.2-.2-1.9-.3l-1.3-.3.3-1c.2-.5.5-1.5.6-2.1.3-1.1.4-1.2.9-1 .2.1.3.3.5 1.1.2.7.5 1.5.9 2.4l.7 1.3-.7-.1m2.2-2.3c-.3.4-.7.9-.8 1.2-.1.3-.2.6-.3.7-.2.3-1.7-3.1-1.7-3.8 0-.3.5-.1 2 .6l1.3.6-.5.7" fill="#ffce31"/><g fill="#3e4347"><path d="m56.6 47.6v.2c-.2 0-.8-.2-2.4-1.1-3.2-1.9-4.6-2.4-6.3-.3-.4.4-.8.7-1 .8-.2-.1-.7-.2-1.3-.5-.2-.1-.5-.2-.7-.3-1.9-1-3.3-1.3-4.4-1-.7.2-1.2.6-1.5 1.3-.2.4-.4.7-.6.7-.5.1-2.2-.9-2.8-1.3-2.3-1.4-3.7-1.5-5.8-.1-.4.3-.8.5-1 .5-.1 0-.5-.1-.9-.2-.5-.2-.9-.4-1-.5-.2-.4-.6-.6-1-.5l-.1.1v1 .6c.3.3.8.6 1.5.8 1.6.6 2 .5 3.5-.5 1.4-.9 2.1-1 3.8.1 1.9 1.2 3.1 1.8 4.2 1.5.9-.2 1.4-1 1.7-1.6.2-.3.3-.4.5-.4.3-.1 1.1-.1 3 .8.2.1 2.1 1.1 2.9 1.1.5 0 1.1-.4 1.5-.7.4-.3.7-.6.8-.7.8-.9 1-1.1 4.1.7 1.3.8 2.3 1.2 3.1 1.3.3-.4.6-.8.9-1.3l.2-.3c.4-.6.8-1.3 1.1-2l.1-.2c.1-.3.3-.5.4-.8-1.5.4-2.1 1-2.5 2.8"/><path d="m25.5 34l.3.2v-.5z"/><path d="m23.1 34l1.3.3.3-.3-.3-.4z"/><path d="m24.8 33.3l.3.3.4-.3-.4-1.3z"/><path d="m25.8 37.2v-1.7l-.6-1.2h-.2l-1.3 2.9h.8l.5.7h.2l.5-.7h.1"/><path d="m17.5 34l.3.3 1.3-.3-1.3-.4z"/><path d="m15 34l1.3.3.3-.3-.3-.4z"/><path d="m16.7 33.3l.3.3.4-.3-.4-1.3z"/><path d="m16.9 34.3l-1.3 2.9h.9l.4.7h.2l.5-.7h.8l-1.3-2.9z"/><path d="m9.4 34l.3.3 1.3-.3-1.3-.4z"/><path d="m8.5 34l-.3-.4-1.3.4 1.3.3z"/><path d="m8.6 33.3l.4.3.3-.3-.3-1.3z"/><path d="m8.8 34.3l-1.2 2.9h.8l.4.7h.3l.4-.7h.9l-1.3-2.9z"/><path d="m25 23.7h.2l.5-.7h.1v-1.4h-1.4l-.7 1.4h.8z"/><path d="m16.9 23.7h.2l.5-.7h.8l-.6-1.4h-1.5l-.7 1.4h.9z"/><path d="m8.8 23.7h.3l.4-.7h.9l-.7-1.4h-1.5l-.6 1.4h.8z"/><path d="m6.9 27l-1.3-.4-.3.4.3.3z"/><path d="m4.5 27l-.3-.4-1.3.4 1.3.3z"/><path d="m5.3 26.3l-.4-1.3-.3 1.3.3.3z"/><path d="m4.8 27.3l-1.3 2.9h.8l.5.7h.2l.4-.7h.9l-1.3-2.9z"/><path d="m15 27l-1.3-.4-.3.4.3.3z"/><path d="m12.6 27l-.3-.4-1.3.4 1.3.3z"/><path d="m13.3 26.3l-.3-1.3-.3 1.3.3.3z"/><path d="m12.9 27.3l-1.3 2.9h.8l.5.7h.2l.4-.7h.9l-1.3-2.9z"/><path d="m23.1 27l-1.3-.4-.3.4.3.3z"/><path d="m20.7 27l-.3-.4-1.3.4 1.3.3z"/><path d="m21.4 26.3l-.3-1.3-.4 1.3.4.3z"/><path d="m21 27.3l-1.3 2.9h.8l.5.7h.2l.4-.7h.9l-1.3-2.9z"/><path d="m13.4 41.5l.3.3 1.3-.3-1.3-.4z"/><path d="m11 41.5l1.3.3.3-.3-.3-.4z"/><path d="m12.7 40.8l.3.3.3-.3-.3-1.3z"/><path d="m21.5 41.5l.3.3 1.3-.3-1.3-.4z"/><path d="m19.1 41.5l1.3.3.3-.3-.3-.4z"/><path d="m20.7 40.8l.4.3.3-.3-.3-1.3z"/></g><g fill="#ed4c5c"><path d="m22.7 21.6l-7.3-6v6h.9 1.5 6.6 1.4-1.4z"/><path d="m18.9 9.3h6.9v-5.6z"/><path d="m18.9 13.4l6.9 5.6v1.4-7z"/><path d="m3.9 21.5v.1h4.3 1.5 1.5v-6.1z"/></g><path fill="#dc241f" d="m25.8 2.6v.5-.5"/><g fill="#699635"><path d="m25.8 20.4v-1.4l-6.9-5.6h-3.5v2.2l7.3 6h1.7 1.4v-.3z"/><path d="m25.8 3.1v-.5c-3.5.7-6.9 2.1-9.8 4-.2.1-.4.2-.6.4v.1 2.2h3.5l6.9-5.6v-.6"/><path d="m8.5 13.4c-1.9 2.4-3.5 5.1-4.6 8.1l7.3-6v-2.1h-2.7"/></g><g fill="#fff"><path d="m53.3 48.2c-3.1-1.8-3.3-1.6-4.1-.7-.1.1-.4.4-.8.7-.4.4-1 .7-1.5.7-.8 0-2.7-1-2.9-1.1-1.9-1-2.7-.9-3-.8-.1 0-.3.1-.5.4-.3.6-.8 1.4-1.7 1.6-1.1.3-2.3-.3-4.2-1.5-1.8-1.1-2.5-1-3.8-.1-1.5 1-1.9 1-3.5.5-.7-.2-1.2-.5-1.5-.8v.5c.3.4.9.8 1.8 1.1 1.6.6 2 .5 3.5-.5 1.4-.9 2.1-1 3.8.1 1.9 1.2 3.1 1.8 4.2 1.5.9-.2 1.4-1 1.7-1.6.2-.3.3-.4.5-.4.3-.1 1.1-.1 3 .8.2.1 2.1 1.1 2.9 1.1.7 0 1.5-.7 2-1.2.1-.1.2-.2.3-.3.8-.9 1-1.1 4.1.7.9.5 1.7.9 2.3 1.2.2-.2.3-.4.5-.6-.8-.1-1.8-.6-3.1-1.3"/><path d="m32.7 51.7c.8-.1 1.4 0 2.5.7 2.2 1.2 3.1 1.3 4.5.4 1.7-1 2.4-1.2 3.8-.9 1 .2 1.1.2.7-.2-.9-.8-2.6-.8-4.1 0-1.8.9-2.6.9-4.6 0-1.8-.8-2.4-.9-3.3-.3-.6.4-.5.4.5.3"/><path d="m49.9 52.5c-1.4-.3-1.6-.1-.3.6 1 .5 2 .6 3.6.2.4-.4.8-.9 1.2-1.3-2 .6-3.4.8-4.5.5"/><path d="m47.4 55.9c-1.5 1.2-2.4 1.2-4 .1-1.4-1-2.4-1-4.2-.1-1.1.5-1.3.7-.9.8.3.1.9 0 1.5-.2 1.4-.6 2.1-.6 3.8.5.9.5 1.7 1 1.9 1s.8-.4 1.5-.8c1.4-.9 2.1-1.3 3-1.2.3-.2.5-.4.8-.6-1.6-.7-2.1-.6-3.4.5"/><path d="m41.6 59.2c-1.2-.9-2.4-.9-4.2 0-1.7.8-2.2.8-4.3-.7-1.7-1.2-1.8-1.2-2.8-.8-.4.2-.8.5-1 .8-.4.5-.3.5.2.3.8-.4 2.1-.4 2.4 0 .1.2.8.7 1.5 1.1 1.6 1 3 1.1 4.6.1 1.3-.7 2.1-.8 3.9-.2.5.1.4 0-.3-.6"/></g><g fill="#ed4c5c"><path d="m20.6 59.5c-.3-.1-.2-.4 0-.4.3-.1.6.2 1.4.2.2 0 .4 0 .4-.4 0-.5-.4-.9-1.8-.7-1.1.2-2 .2-2.6.1 0 .2 0 .4 0 .5.8.4 1.5.8 2.3 1.1.1-.3.2-.4.3-.4"/><path d="m3.7 42c.7 1.8 1.5 3.6 2.5 5.3.5.5 3.2 3.5 2.5 3.7 1.7 2 3.6 3.8 5.7 5.4.2 0 7.3 3.6 7.1 3.8 1.4.5 2.8.9 4.3 1.2v-13.8-.6-.8-1-3.2h-22.1"/></g><g fill="#ffe62e"><path d="m23.5 48.6c-.1-.2-.2-.3-.5-.2-.8.2-3 .1-3.7-.3 1.1.4 2.4-.4 2.4-1.1 0-.8-1-1.4-3.2-1-2.1.4-4.7.2-4.7-.4 0-.6 1.9-.7 2.8-.6 1 .1 1.6.2 3.4-.3-.4.1-1.9.2-3-.1-1.1-.3-3.9-.3-3.9 1 0 1.3 2.9 1.2 5.5.9 1.5-.2 2.3-.1 2.3.4 0 .4-1.4.6-2.4.5-1-.1-2.1-.1-3.4.2-2.2.6-4.8.2-5.4-.8 0-.1.1-.2.1-.4.2-.1.3-.4.4-.6.1-.5-.1-.5-.7-.3-.2-.2-.6-.3-1.2-.3-.6 0-.9.1-1.2.3-.6-.2-.8-.2-.7.3.1.2.2.5.4.6 0 .7.9 1.8.9 1.8-.5 0-1.1-.4-1.6-.9.5.8.9 1.5 1.5 2.2.2.2.3.3.4.5.2.3.5.6.7.9.7-.1 1.3-.4 2-.9.4 0 3.1-.1 4.2-.6.7.7.8.6 1.4.7.6.1 1 .1.6.4-.1.1-.8.1-1.2.1-1.1 0-1.6-.6-1.9-.3-.2.3 0 .4.4.4-.3 0-.7 0-.6.3.1.5.7-.1.9.1-.2 0-.5.1-.5.2 0 .2.4.4.9 0 .3-.2.6-.2.8-.2.7 0 2.4.3 3-.2.2-.2-.1-.4-.3-.6-.2-.2-.3-.4-.2-.9.6.1 1.4.1 2.6-.1 1.4-.2 1.8.2 1.8.7 0 .4-.3.4-.4.4-.8 0-1.1-.2-1.4-.2-.2.1-.3.3 0 .4-.2.1-.2.3-.1.4.1.1.4 0 .7-.1-.3.1-.6.3-.4.5.1.1.3.2.6 0 .2-.3.7-.4.9-.5.9.2 1.4-1.3 1-2.3"/><path d="m23.5 57.2c-.1-.2-.2-.3-.5-.2-.8.2-3 .1-3.7-.3 1.1.4 2.4-.4 2.4-1.1 0-.8-1-1.4-3.2-1-2.1.4-4.7.2-4.7-.4s1.9-.7 2.8-.6c1 .1 1.6.2 3.4-.3-.4.2-1.9.2-3-.1-1.1-.3-3.9-.3-3.9 1 0 1.3 2.9 1.2 5.5.9 1.5-.2 2.3-.1 2.3.4 0 .4-1.4.6-2.4.5-1-.1-2.1-.1-3.4.2-.2.1-.5.1-.7.2 1.2.8 2.4 1.6 3.7 2.3 0-.1 0-.3 0-.5.6.1 1.4.1 2.6-.1 1.4-.2 1.8.2 1.8.7 0 .4-.3.4-.4.4-.8 0-1.1-.2-1.4-.2-.2.1-.3.3 0 .4-.1.1-.2.1-.2.2.1.1.3.1.4.2h.1c.2.1.4.2.6.2.2-.2.6-.3.8-.3 1 0 1.5-1.5 1.1-2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1f3.svg b/riot/emojione/svg/1f1f5-1f1f3.svg new file mode 100644 index 0000000..adf57ca --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M32,2v30H2c0,16.6,13.4,30,30,30c16.6,0,30-13.4,30-30C62,15.4,48.6,2,32,2z"/><path d="m12 12h21v21h-21z"/></g><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m38.5 26.7c.1-.5-.1-1.1-.4-1.4-.7-.6-1.5-.4-2 .1-.8-.4-1.2 1.1-2.1.8.2.5.4.7.8.5-.5.4 0 1-.6 1.5 1 .3 1.6-.2 1.5-1.2.4.3 1 .3 1.3-.1-.5-.2-.5-.6-.3-1.1.3-.5 1.8-.5 1.8.9" fill="#ffce31"/><path d="m40.8 34.3c-1.2.6-3.3.3-3.5-1.2-.2-1.5 1.3-2.2 1.7-2.4.6-.3 1.1.2.9.9.7-.2.8-1 .5-1.5.9.1 1.7-.6 2.1-1.6-.3.3-1.2.1-1.9.1.2-.2.2-.7.2-.9-.7.8-1.8.4-3.2 2.6.2-.8.6-2.3.9-3.3 0-.1 0-.2.1-.3.1-1.4-1.4-1.5-1.8-.8.4.4.2.9 0 1.6-.2.8-.5 2.8-.8 3.5-.1-1-.8-1.1-.9-1.6-.2.1-.3.5-.3.7-.2-.3-1.1.1-1.4-.3-.3.7.2 1.3.7 1.6-.3 0-.4.4-.7.4.5.5.9.8 1.5.8.6 0 1 .2 1.3.9.6 1.1 2.7 1.8 4.6.8" fill="#699635"/><path d="m43.7 33c-.7 1.8-2.4 3.1-3.2 3.3-1.4.3-4.2 1.7-4.9 2.4-.1 0-.2-.1-.3-.1-.4-.3-.7-1.1 0-1.8 2-1.9 4.2-1.1 5.6-2.4-1.2.6-3.3.3-3.5-1.2 1.2.3 3.5.3 5.3-1.6.2.3.9 1.1 1 1.4" fill="#ffce31"/><g fill="#699635"><path d="m43 32.2c-.4.6-1.2 1.3-2 1.6.2-.2.2-.4.2-.7-1 .4-3.1.3-3.9 0 1.2.3 3.5.3 5.3-1.6.2.3.4.5.4.7"/><path d="m35.2 36.7c-1.7 1.6-.6 2.9.1 3.2-.2 1.1.8 1 .8 1.9.4-.2.5-.9.5-1.4.5.6 1.9-.1 2.1 1 .2-1.2-.7-2.3-1.8-2.2.5-.4.2-1.1-.2-1.3-.1.8-1 .8-1.4.6-.4-.2-.8-1.1-.1-1.8"/></g><path d="m50.9 36.7c2.7 2.2 2.9 4 2.4 5.1-.2-1-1.3-2.5-2.5-2.9l.1-2.2" fill="#ffce31"/><path d="m50.9 36.7c1.8 1.3 3.2 2.5 3.6 4.4.4 2 1.1 2.5 2 2-.2 1.1-1.4 1.3-2.3.4.1 1.3-.4 2.9-1.8 3.4-.1-.8.4-1.4.3-2-.1-.3-.1-.9.3-1.2-.7.2-1.9-.2-2-1.3.8.4 1.9.5 2.3-.6.5-1 .3-2.8-2.4-5.1" fill="#699635"/><path d="m52.8 47c.1-.2.2-.4 0-.5-.2-.1-.4-.1-.5.2-.1.4-.9.4-.7 1.1-.2 0-.4.2-.6.4-.2.3-1 .7-1.3.8.1.1.4.3.6.2-.1.5.2.7.4.6 0 .2.2.5.4.4.1.3.5.4.7.2.2.2.6.1.8.1-.3 0-.3-.9-.2-1.3.1-.4 0-.7 0-.9.5-.4.2-1 .4-1.3" fill="#ffce31"/><path d="m46.2 35.5h5c0 0 0 1.3 0 5.9 0 5-2.8 8-5.6 9.5-2.8-1.6-5.6-4.5-5.6-9.5 0-4.6 0-5.9 0-5.9h3.5c0 .3 0 .8.4 1.2.7-.1 1.6-.7 2.3-1.2" fill="#699635"/><path d="m51.1 35.5c0 0 0 1.3 0 5.9 0 1.5-.3 2.8-.7 4l-4.9-9-4.9 9c-.4-1.2-.7-2.5-.7-4 0-4.6 0-5.9 0-5.9h11.2" fill="#006ec7"/><path d="m50.6 44.9c-.1.3-.2.7-.4 1l-4.7-8.8-4.7 8.8c-.1-.3-.3-.7-.4-1l5.1-9.4 5.1 9.4" fill="#ffce31"/><path d="m48.4 46.5c-.3.7-1.2.7-1.5 1.1.2.1.3.2.4.3-.3.3-1.1.9-1.5 1v-4.6c.5 0 1.3-.1 1.6-.1.1 0 .2-.2.2-.4s-.1-.4-.2-.4c-.4 0-1.2-.1-1.7-.1 0-.2 0-.7 0-.9 0-.2 0-.5-.2-.5-.1 0-.2.1-.2.3-.1-.2-.2-.2-.3-.2-.4 0-.7.3-.7.6s.3.6.7.6c.1 0 .2 0 .3-.1v.1c-.5 0-1.4.1-1.7.1-.1 0-.2.2-.2.4s.1.4.2.4c.3 0 1.1.1 1.6.1v4.6c-.2-.7-1.2-.5-1.6-1.2.2 0 .4-.1.5 0-.3-1.1-1.2-1.2-1.4-1.5 0 .5-.2 1.5.1 2 .1-.1.2-.2.3-.2.4.8 2 .8 2.4 2.1.3-.5 1.4-1.1 2.2-1.9.1.1.4.2.5.2.3-.5.3-1.2.2-1.8m-3.4-3.4c-.2 0-.4-.2-.4-.4s.2-.4.4-.4c.1 0 .2 0 .3.1 0 .1 0 .4 0 .6-.1 0-.2.1-.3.1" fill="#f7e017"/><path fill="#fff" d="m44.5 39.3h1.9v2.1h-1.9z"/><path d="m39.5 37.2c-.8.7-1.6 1.7-1.8 2.7-.6 2.6-1.3 3.2-2.4 2.7 0 1.4 1.2 1.5 1.8.7 0 1.3.5 2.5 1.6 3.5.5.4.5.1.3-.3s-.2-1.9-.7-2.8c.7.5 1.7.2 1.6-1.2-.9.5-1.7.5-1.8-.8-.2-1.4.4-3.6 1.4-4.5" fill="#ffce31"/><path d="m39.5 37.2c-1 .9-1.6 3-1.5 4.5 0 .4.1.7.3.8.1-.8.7-3 2.1-3.9 1.2-.8 3.2-2.6 3.9-4.7-.1-.4-.3-.6-.8-.9-.6 2-2.5 3-4 4.2" fill="#699635"/><path d="m40.3 48.2c-.1-.2-.3-.3-.5-.3.2-.6-.5-.7-.6-1-.1-.3-.3-.3-.4-.2-.2.1-.2.3-.1.5.2.3-.1.8.4 1.1-.1 0-.1.3 0 .7 0 .3 0 1.1-.3 1.1.2.1.5.2.7 0 .1.2.5.2.6-.1.2.1.4-.1.4-.3.2.1.5 0 .4-.5.2.1.4-.1.5-.2-.3-.1-.9-.5-1.1-.8" fill="#ffce31"/><path d="m49 34.3c.3.3.4.7.2 1.1h-.4c.2-.5.1-1-.7-1.1-1.1-.1-2.4 2-4.3 2.3-.6-.7-.5-2 .2-2.6-.4-1.1-1.2-2.2-1.7-2.8-.4-.1-.8-.1-1-.1.3-.6 1.1-1.3 1.7-1.5.1-.2.2-.3.3-.4.1-.8 4.1-.4 4.9.1 0 1.1.4 4.2.8 5" fill="#96877d"/><g fill="#699635"><path d="m53.3 26.5c.6-1.5 2-1.3 2.5-.7 1.5-.8 1.7 1 2.9.7 0 .3-.4.7-.9.7.5.4-.2 1.1.8 1.5-.9.4-2.1 0-2.4-1.2-.3.6-1.3.6-1.7.1.9-.2.8-1.1.3-1.4-.5-.4-1.4-.2-1.5.3"/><path d="m48.8 29.8c.4 1.3 1.2 2.5 2.2 3.4 1 1 2.6.7 3.5-.2 0 1.8-1.9 2-2.9 1.4-.5-.3-.8-.1-.4.3.7.6 2.2 1.1 3.9 1.4 3 .7 2 3.1 1.1 3 .3 0 .5-.3.1-.6-2.6-2.4-8-1.4-7.9-6.8-.6 1.4-2.9.8-1.8-.8.3.3 1.5.2 1.1-1.1h1.1"/></g><g fill="#ffce31"><path d="m51.6 34.4c1.3.8 2.7.8 4-.7.4-.5 1.1-.9 1.5-.9.5 0 .4-.5.8-.6-.2-.1-.3-.3-.6-.3.8-.3.6-.9 1-1.3-.3.1-.8-.4-1.3.3.1-.3 0-.6-.2-.8 0 .3-.6.4-.8 1.2-.1.5-.3.4-.4-.3 0-.5-.3-2-.6-2.7-.3-.7-.4-1.8 0-1.9-.1-.1-.2-.2-.3-.3-.5-.3-1.4-.2-1.6.4-.6 1.5 1 2.3.9 3.9-.1-1.1-2-1.4-2-2.6-.6.3-.5.8-.3 1.2-.4-.6-1.3.4-2-.4-.1 1.1.9 1.5 1.7 1.5-.4.7.1 1.3.7 1.5 0-1.2 2.5-.7 2.5 1.4-.1 1.8-2 1.9-3 1.4"/><path d="m55.1 36.1c3 .7 2 3.1 1.1 3-.6 0-1.1-.5-1.1-.9-.7.3-.5 1 0 1.3-1.4-.2-1.9.7-2 1.7.3-.5 1-.5 1.3-.4.3.1 1 .2 1.3-.2-.2.2.2.7-.2 1.1 1.1 0 1.6-1.1 1.4-1.6 1.5-1.3 1.2-3.5-1.8-4"/></g><path fill="#96877d" d="m48.8 29h-5.5l-.8-3 7.4-1.9z"/><path fill="#ffce31" d="m43 28.7h5.9v1.3h-5.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1f7.svg b/riot/emojione/svg/1f1f5-1f1f7.svg new file mode 100644 index 0000000..9008a55 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m10.8 26h50.6c-.9-4.4-2.8-8.5-5.4-12h-45.2v12"/><path d="M10.8,38v12H56c2.6-3.5,4.5-7.6,5.4-12H10.8z"/></g><g fill="#ed4c5c"><path d="m61.4 26h-50.6v12h50.6c.4-1.9.6-3.9.6-6 0-2.1-.2-4.1-.6-6"/><path d="m10.8 14h45.2c-5.5-7.3-14.2-12-24-12-8.3 0-15.8 3.4-21.2 8.8 0 0 0 3.2 0 3.2"/><path d="M10.8,50v3.2C16.2,58.6,23.7,62,32,62c9.8,0,18.5-4.7,24-12H10.8z"/></g><path d="M10.8,10.8C5.3,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#428bc1"/><path fill="#fff" d="m10 38l4-2.8 4 2.8-1.5-4.6 4-2.9h-5l-1.5-4.5-1.5 4.5h-5l4 2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1f8.svg b/riot/emojione/svg/1f1f5-1f1f8.svg new file mode 100644 index 0000000..e3f5f42 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60 42c-5.5 0-10-4.5-10-10h-39.2v21.2c5.4 5.4 12.9 8.8 21.2 8.8 13.1 0 24.2-8.4 28.3-20-.1 0-.2 0-.3 0" fill="#699635"/><path d="m60 22c.1 0 .2 0 .3 0-4.1-11.6-15.2-20-28.3-20-8.3 0-15.8 3.4-21.2 8.8v21.2h39.2c0-5.5 4.5-10 10-10" fill="#3e4347"/><path d="m60.3 22h-49.5v20h49.5c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#f9f9f9"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1f9.svg b/riot/emojione/svg/1f1f5-1f1f9.svg new file mode 100644 index 0000000..f486607 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,58V6C8,11.2,2,20.9,2,32C2,43.1,8,52.8,17,58z" fill="#699635"/><path d="m32 2c-5.5 0-10.6 1.5-15 4v52c4.4 2.6 9.5 4 15 4 16.6 0 30-13.4 30-30 0-16.6-13.4-30-30-30" fill="#ed4c5c"/><g fill="#ffe62e"><path d="m17 20c-6.6 0-12 5.4-12 12s5.4 12 12 12 12-5.4 12-12-5.4-12-12-12m0 22.5c-5.8 0-10.5-4.7-10.5-10.5 0-5.8 4.7-10.5 10.5-10.5s10.5 4.7 10.5 10.5-4.7 10.5-10.5 10.5"/><path d="m21.1 43.7c-.2.2-.5.2-.7 0l-13.7-18.1c-.2-.2-.2-.5 0-.7l.3-.3c.2-.2.5-.2.7 0l13.7 18.1c.2.2.2.5 0 .7l-.3.3"/><path d="m17.2 19.5c.3 0 .5.2.5.5v24c0 .3-.2.5-.5.5h-.5c-.3 0-.5-.2-.5-.5v-24c0-.3.2-.5.5-.5h.5"/><path d="m28.9 33.3l-11.9-2.1v1.5l11.7 2.1c.3 0 .5-.1.6-.4l.1-.5c0-.2-.2-.5-.5-.6"/><path d="m17 31.1l-9.4-6.6c-.2-.2-.5-.1-.7.1l-.3.4c-.2.2-.1.5.1.7l10.3 7.2v-1.8"/><path d="m16.6 30l-9.4 9.4c-.2.2-.2.5 0 .7l.4.4c.2.2.5.2.7 0l8.3-8.3v-2.2"/><path d="m17 25.5l-12.5 5.9c-.2.1-.4.4-.2.7l.2.5c.1.2.4.4.7.2l11.8-5.6v-1.7"/><path d="m28.1 27.2l-11.9-2.1v1.5l11.7 2.1c.3 0 .5-.1.6-.4l.1-.5c-.1-.3-.3-.6-.5-.6"/><path d="m16.9 38.9c-.2.1-.4.4-.2.7l.2.5c.1.2.4.4.7.2l10-4.6.5-1.9-11.2 5.1"/><path d="m16.9 35.5l-11.2-4.1v1.6l11.2 4.1z"/><path d="m9.1 38.8v1.5l14.8 1c.6-.4 1.1-.9 1.6-1.4l-16.4-1.1"/></g><path d="m12 27v7c0 2.8 2.2 5 5 5s5-2.2 5-5v-7h-10" fill="#fff"/><path d="m17 41c-3.9 0-7-3.1-7-7v-9h14v9c0 3.9-3.1 7-7 7m-3-12v5c0 1.7 1.3 3 3 3s3-1.3 3-3v-5h-6" fill="#ed4c5c"/><g fill="#0071bc"><path d="m16.1 29.4v1.6c0 .3.2.5.5.5h.8c.3 0 .5-.2.5-.5v-1.7h-1.8z"/><path d="m16.1 31.9v1.7c0 .3.2.5.5.5h.8c.3 0 .5-.2.5-.5v-1.7h-1.8"/><path d="m14.1 31.9v1.7c0 .3.2.5.5.5h.8c.3 0 .5-.2.5-.5v-1.7h-1.8"/><path d="m18.1 31.9v1.7c0 .3.2.5.5.5h.8c.3 0 .5-.2.5-.5v-1.7h-1.8"/><path d="m16.1 34.3v1.7c0 .3.2.5.5.5h.8c.3 0 .5-.2.5-.5v-1.7h-1.8"/></g><g fill="#fff"><circle cx="17" cy="32.9" r=".2"/><circle cx="16.6" cy="33.4" r=".2"/><circle cx="17.4" cy="33.4" r=".2"/><circle cx="16.6" cy="32.4" r=".2"/><circle cx="17.4" cy="32.4" r=".2"/><circle cx="17" cy="30.4" r=".2"/><circle cx="16.6" cy="30.9" r=".2"/><circle cx="17.4" cy="30.9" r=".2"/><circle cx="16.6" cy="29.9" r=".2"/><circle cx="17.4" cy="29.9" r=".2"/><circle cx="19" cy="32.9" r=".2"/><circle cx="18.6" cy="33.4" r=".2"/><circle cx="19.4" cy="33.4" r=".2"/><circle cx="18.6" cy="32.4" r=".2"/><circle cx="19.4" cy="32.4" r=".2"/><circle cx="15" cy="32.9" r=".2"/><circle cx="14.6" cy="33.4" r=".2"/><circle cx="15.4" cy="33.4" r=".2"/><circle cx="14.6" cy="32.4" r=".2"/><circle cx="15.4" cy="32.4" r=".2"/><circle cx="17" cy="35.4" r=".2"/><circle cx="16.6" cy="35.9" r=".2"/><circle cx="17.4" cy="35.9" r=".2"/><circle cx="16.6" cy="34.9" r=".2"/><circle cx="17.4" cy="34.9" r=".2"/></g><path fill="#ffe62e" d="m16 28h2l-.2-1v-1h.2v-.5h-.3v.3h-.1v-.3h-.3v.3h-.2v-.3h-.2v.3h-.2v-.3h-.3v.3h-.2v-.3h-.2v.5h.1.1v1z"/><g fill="#3e4347"><path d="m17.3 28h-.1v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4h-.1v-.4c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.4"/><path d="m17 26.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/><path d="m17.6 26.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/></g><path fill="#ffe62e" d="m11 28h2l-.2-1v-1h.2v-.5h-.3v.3h-.1v-.3h-.3v.3h-.2v-.3h-.2v.3h-.2v-.3h-.3v.3h-.2v-.3h-.2v.5h.1.1v1z"/><g fill="#3e4347"><path d="m12.3 28h-.1v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4h-.1v-.4c0-.2.1-.3.3-.3.2 0 .3.1.3.3 0 0 0 .4 0 .4"/><path d="m12 26.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/><path d="m12.6 26.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/></g><path fill="#ffe62e" d="m11 33.9h2l-.2-1v-1h.2v-.5h-.2v.3h-.2v-.3h-.2v.3h-.3v-.3h-.2v.3h-.2v-.3h-.2v.3h-.2v-.3h-.3v.5h.2.1v1z"/><g fill="#3e4347"><path d="m12.3 33.9h-.1v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4h-.1v-.4c0-.2.1-.3.3-.3.2 0 .3.1.3.3 0 0 0 .4 0 .4"/><path d="m12 32.8h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/><path d="m12.7 32.8h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/></g><path fill="#ffe62e" d="m21 34h2l-.2-1v-1h.2v-.4h-.3v.2h-.1v-.2h-.3v.2h-.2v-.2h-.2v.2h-.2v-.2h-.3v.2h-.2v-.2h-.2v.4h.1.1v1z"/><g fill="#3e4347"><path d="m22.3 34h-.1v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4h-.1v-.4c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.4"/><path d="m22 32.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/><path d="m22.6 32.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/></g><path fill="#ffe62e" d="m21 28h2l-.2-1v-1h.2v-.5h-.3v.3h-.1v-.3h-.3v.3h-.2v-.3h-.2v.3h-.2v-.3h-.3v.3h-.2v-.3h-.2v.5h.1.1v1z"/><g fill="#3e4347"><path d="m22.3 28h-.1v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4h-.1v-.4c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.4"/><path d="m22 26.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/><path d="m22.6 26.9h-.6v-.5c0-.2.1-.3.3-.3.2 0 .3.1.3.3v.5m-.5-.1h.4v-.4c0-.1-.1-.2-.2-.2s-.2.1-.2.2v.4"/></g><path fill="#ffe62e" d="m14.2 39.6l1.4-1.5-.9-.5-.7-.7.2-.2-.3-.3-.2.2.2.2-.1.1-.2-.2-.2.2.2.1-.2.2-.1-.2-.2.2.2.2-.2.1-.1-.2-.2.2.1.2-.1.1-.1-.2-.2.2.3.3h.1l.1-.1.7.7z"/><g fill="#3e4347"><path d="m15.1 38.6l-.4-.2c-.1-.1-.2-.1-.3 0-.1.1-.1.2 0 .3l.3.3-.1.1-.3-.3c-.1-.1-.1-.3 0-.4s.3-.1.4 0l.4.2"/><path d="m14.1 38.1l-.4.4-.3-.3c-.1-.1-.1-.3 0-.4s.3-.1.4 0l.3.3m-.4.3l.3-.3-.3-.3c-.1-.1-.2-.1-.3 0s-.1.2 0 .3l.3.3"/><path d="m14.6 37.6l-.4.4-.3-.3c-.1-.1-.1-.3 0-.4s.3-.1.4 0l.3.3m-.4.3l.3-.3-.3-.3c-.1-.1-.2-.1-.3 0s-.1.2 0 .3l.3.3"/></g><path fill="#ffe62e" d="m19.8 39.6l-1.4-1.5.8-.5.7-.7-.1-.2.3-.3.2.2-.2.2.1.1.2-.2.2.2-.2.1.2.2.1-.2.2.2-.2.2.2.1.1-.2.2.2-.2.2.2.1.1-.2.2.2-.3.3h-.1l-.1-.1-.7.7z"/><g fill="#3e4347"><path d="m18.9 38.6l.4-.2c.1-.1.2-.1.3 0s.1.2 0 .3l-.4.3.1.1.3-.3c.1-.1.1-.3 0-.4-.1-.1-.3-.1-.4 0l-.3.2"/><path d="m20.2 37.8c.1-.1.3-.1.4 0 .1.1.1.3 0 .4l-.3.3-.4-.4.3-.3m.3.3c.1-.1.1-.2 0-.3-.1-.1-.2-.1-.3 0l-.2.3.3.3.2-.3"/><path d="m19.7 37.3c.1-.1.3-.1.4 0 .1.1.1.3 0 .4l-.3.3-.4-.4.3-.3m.4.3c.1-.1.1-.2 0-.3-.1-.1-.2-.1-.3 0l-.3.3.3.3.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1fc.svg b/riot/emojione/svg/1f1f5-1f1fc.svg new file mode 100644 index 0000000..a88c9f8 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#42ade2"/><circle cx="24" cy="32" r="16" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5-1f1fe.svg b/riot/emojione/svg/1f1f5-1f1fe.svg new file mode 100644 index 0000000..93e40d0 --- /dev/null +++ b/riot/emojione/svg/1f1f5-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#428bc1"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ed4c5c"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z" fill="#f9f9f9"/><path d="m32 41c-5 0-9-4-9-9s4-9 9-9 9 4 9 9-4 9-9 9m0-17.7c-4.8 0-8.7 3.9-8.7 8.7s3.9 8.7 8.7 8.7 8.7-3.9 8.7-8.7-3.9-8.7-8.7-8.7" fill="#3e4347"/><path d="m32 24.4c-4.2 0-7.6 3.4-7.6 7.6 0 4.2 3.4 7.6 7.6 7.6 4.2 0 7.6-3.4 7.6-7.6s-3.4-7.6-7.6-7.6m0 13.3c-3.1 0-5.7-2.6-5.7-5.7s2.6-5.7 5.7-5.7 5.7 2.6 5.7 5.7-2.6 5.7-5.7 5.7" fill="#ed4c5c"/><path d="M26,32c0-3.3,2.7-6,6-6s6,2.7,6,6h1.3c0-4-3.3-7.3-7.3-7.3S24.7,28,24.7,32H26z" fill="#ffce31"/><path d="m34.9 31.7c0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9s1.3-2.9 2.9-2.9c1.6 0 2.9 1.3 2.9 2.9" fill="#428bc1"/><path d="m33.6 33.6l-1.6-1.1-1.6 1.1.6-1.7-1.4-1.1h1.7l.6-1.7.6 1.7h1.7l-1.2 1.1.6 1.7" fill="#ffce31"/><path d="m29.4 29.5c0 0-.4-.1-.6-.1.2-.3.3-1 .3-1s-.6.3-.8.7c-.1-.2-.3-.5-.3-.5s-.3.3-.2.6c0 .3.4.7.4.7s.5.2.8.1c.2-.2.4-.5.4-.5" fill="#699635"/><path d="m28.9 30.3c0 0-.4 0-.6.1.1-.4 0-1 0-1s-.5.5-.6.8c-.2-.2-.5-.4-.5-.4s-.2.4-.1.6.6.6.6.6.6 0 .8-.1.4-.6.4-.6" fill="#83bf4f"/><path d="m28.6 31.2c0 0-.4.1-.6.2 0-.4-.2-1-.2-1s-.3.6-.3 1c-.2-.2-.5-.3-.5-.3s-.1.4.1.6c.2.2.7.4.7.4s.5-.1.7-.3c.2-.2.1-.6.1-.6" fill="#699635"/><path d="m28.6 32.2c0 0-.3.2-.5.4-.1-.4-.5-.9-.5-.9s-.2.6-.1 1c-.3-.1-.6-.1-.6-.1s0 .4.3.6c.2.2.8.2.8.2s.5-.3.6-.5 0-.7 0-.7" fill="#83bf4f"/><path d="m28.8 33.1c0 0-.3.3-.4.5-.2-.4-.7-.7-.7-.7s0 .6.2 1c-.3 0-.6 0-.6 0s.1.4.4.5c.3.1.8 0 .8 0s.4-.4.5-.7-.2-.6-.2-.6" fill="#699635"/><path d="m29.3 34c0 0-.2.3-.3.6-.3-.3-.9-.5-.9-.5s.2.6.4.9c-.3 0-.6.2-.6.2s.2.3.5.4c.3 0 .8-.2.8-.2s.3-.5.3-.8c.1-.4-.2-.6-.2-.6" fill="#83bf4f"/><path d="m29.9 34.7c0 0-.1.4-.1.6-.3-.2-1-.3-1-.3s.3.5.7.8c-.2.1-.5.3-.5.3s.3.3.6.2c.3 0 .7-.4.7-.4s.2-.5.1-.8c-.1-.2-.5-.4-.5-.4" fill="#699635"/><path d="m30.8 35.2c0 0 0 .4.1.6-.4-.1-1 0-1 0s.5.4.8.6c-.2.2-.4.4-.4.4s.4.2.6.1c.3-.1.6-.6.6-.6s0-.6-.1-.8c-.3-.2-.6-.3-.6-.3" fill="#83bf4f"/><path d="m34.6 29.5c0 0 .4-.1.6-.1-.2-.3-.3-1-.3-1s.6.3.8.7c.1-.2.3-.5.3-.5s.3.3.2.6c0 .3-.4.7-.4.7s-.5.1-.8 0c-.2-.1-.4-.4-.4-.4" fill="#699635"/><path d="m35.1 30.3c0 0 .4 0 .6.1-.1-.4 0-1 0-1s.5.5.6.8c.2-.2.5-.4.5-.4s.2.4.1.6-.7.6-.7.6-.6 0-.8-.1-.3-.6-.3-.6" fill="#83bf4f"/><path d="m35.4 31.2c0 0 .4.1.6.2 0-.4.2-1 .2-1s.3.6.3 1c.2-.2.5-.3.5-.3s.1.4-.1.6c-.2.2-.7.4-.7.4s-.5-.1-.7-.3c-.2-.2-.1-.6-.1-.6" fill="#699635"/><path d="m35.4 32.2c0 0 .3.2.5.4.1-.4.5-.9.5-.9s.2.6.1 1c.3-.1.6-.1.6-.1s0 .4-.3.6c-.2.2-.8.2-.8.2s-.5-.3-.6-.5c-.1-.3 0-.7 0-.7" fill="#83bf4f"/><path d="m35.2 33.1c0 0 .3.3.4.5.2-.4.7-.7.7-.7s0 .6-.2 1c.3 0 .6 0 .6 0s-.1.4-.4.5c-.3.1-.8 0-.8 0s-.4-.4-.5-.7.2-.6.2-.6" fill="#699635"/><path d="m34.7 34c0 0 .2.3.3.6.3-.3.9-.5.9-.5s-.2.6-.4.9c.3 0 .6.2.6.2s-.2.3-.5.4c-.3 0-.8-.2-.8-.2s-.3-.5-.3-.8c-.1-.4.2-.6.2-.6" fill="#83bf4f"/><path d="m34.1 34.7c0 0 .1.4.1.6.3-.2 1-.3 1-.3s-.3.5-.7.8c.2.1.5.3.5.3s-.3.3-.6.2c-.3 0-.7-.4-.7-.4s-.2-.5-.1-.8c.1-.2.5-.4.5-.4" fill="#699635"/><path d="m33.2 35.2c0 0 0 .4-.1.6.4-.1 1 0 1 0s-.5.4-.8.6c.2.2.4.4.4.4s-.4.2-.6.1c-.3-.1-.6-.6-.6-.6s0-.6.1-.8c.3-.2.6-.3.6-.3" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f5.svg b/riot/emojione/svg/1f1f5.svg new file mode 100644 index 0000000..2a769ae --- /dev/null +++ b/riot/emojione/svg/1f1f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m41.4 33.9c-1.7 1.4-4.1 2.1-7.3 2.1h-6v10.4h-6v-29h12.5c2.9 0 5.2.7 6.9 2.2 1.7 1.5 2.6 3.8 2.6 6.9-.2 3.6-1 6-2.7 7.4m-4.6-10.4c-.8-.6-1.8-1-3.2-1h-5.5v8.5h5.5c1.4 0 2.5-.3 3.2-1s1.2-1.8 1.2-3.3c-.1-1.5-.5-2.6-1.2-3.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f6-1f1e6.svg b/riot/emojione/svg/1f1f6-1f1e6.svg new file mode 100644 index 0000000..6c5ce79 --- /dev/null +++ b/riot/emojione/svg/1f1f6-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-5.3 0-10.2 1.4-14.5 3.7v52.5c4.3 2.4 9.2 3.8 14.5 3.8 16.6 0 30-13.4 30-30s-13.4-30-30-30" fill="#c94747"/><path d="m32 2c-5.3 0-10.2 1.4-14.5 3.7v52.5c4.3 2.4 9.2 3.8 14.5 3.8 16.6 0 30-13.4 30-30s-13.4-30-30-30" opacity=".33" fill="#9450e0"/><path d="m2 32c0 11.3 6.3 21.1 15.5 26.3l10.5-2.3-10-3 10-3-10-3 10-3-10-3 10-3-10-3 10-3-10-3 10-3-10-3 10-3-10-3 10-3-10-3 10-3-10.5-2.3c-9.2 5.2-15.5 15-15.5 26.3" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f6.svg b/riot/emojione/svg/1f1f6.svg new file mode 100644 index 0000000..ea3e84d --- /dev/null +++ b/riot/emojione/svg/1f1f6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m44.9 37.4c-.5 1.7-1.3 3-2.3 4.1l3.3 3.1-3.1 3.4-3.5-3.3c-1.1.6-2 1.1-2.8 1.4-1.3.4-2.9.7-4.7.7-3.8 0-6.9-1.1-9.4-3.4-3-2.7-4.5-6.7-4.5-12 0-5.3 1.5-9.3 4.6-12 2.5-2.2 5.6-3.3 9.4-3.3 3.8 0 6.9 1.2 9.4 3.5 2.9 2.7 4.4 6.5 4.4 11.4.1 2.5-.2 4.7-.8 6.4m-11 3.9c.4-.1.8-.3 1.4-.5l-3-2.8 3.1-3.3 2.9 2.8c.5-.9.8-1.8 1-2.5.3-1.1.4-2.3.4-3.7 0-3.3-.7-5.8-2-7.5-1.3-1.8-3.3-2.7-5.8-2.7-2.4 0-4.3.9-5.7 2.6-1.4 1.7-2.2 4.3-2.2 7.7 0 4 1 6.8 3.1 8.5 1.3 1.1 2.9 1.7 4.8 1.7.7 0 1.4-.1 2-.3" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f7-1f1ea.svg b/riot/emojione/svg/1f1f7-1f1ea.svg new file mode 100644 index 0000000..634a34f --- /dev/null +++ b/riot/emojione/svg/1f1f7-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m14 8v48l24-24z"/><path d="m56 14c-5.5-7.3-14.2-12-24-12-6.8 0-13 2.2-18 6l24 24 18-18" fill="#ffce31"/><path d="m56 50c3.8-5 6-11.2 6-18 0-6.8-2.2-13-6-18l-18 18 18 18" fill="#ed4c5c"/><path d="M38,32L14,56c5,3.8,11.2,6,18,6c9.8,0,18.5-4.7,24-12L38,32z" fill="#699635"/><path d="m6 17c-2.5 4.4-4 9.5-4 15s1.5 10.6 4 15v-30" fill="#2a5f9e"/><path d="m6 17v30c1.1 2 2.5 3.8 4 5.4v-40.8c-1.5 1.7-2.9 3.5-4 5.4" fill="#fff"/><path d="m10 11.6v40.8c1.2 1.3 2.6 2.5 4 3.6v-48c-1.4 1.1-2.8 2.3-4 3.6" fill="#ed4c5c"/><circle cx="38" cy="32" r="12" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f7-1f1f4.svg b/riot/emojione/svg/1f1f7-1f1f4.svg new file mode 100644 index 0000000..20553c7 --- /dev/null +++ b/riot/emojione/svg/1f1f7-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#2a5f9e"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#c94747"/><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f7-1f1f8.svg b/riot/emojione/svg/1f1f7-1f1f8.svg new file mode 100644 index 0000000..276ec5d --- /dev/null +++ b/riot/emojione/svg/1f1f7-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ed4c5c"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#f9f9f9"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#2872a0"/><path d="m15.5 21.7v16.2c0 5.6 4.7 10.1 10.5 10.1 5.8 0 10.5-4.5 10.5-10.1v-16.2h-21" fill="#ed4c5c"/><path d="m29.8 46.3l-.2-.9-.8-1.4.3-.2-.2-.9-.7-1.1.2-.1-.2-.9-.5-1 .8-1.5.5 1.6.4-.6.6.9.2-.6.6.3-.1-1.2 1.4.4-1-1.3h.1l-.8-1.6.2-.6.5 1 .2-.4.8 2.2v-.1l.4.8.2-.4.8 1.6.3-.9 1.2.9c0 0-.1-3-.1-3.9.2-2.6 1.1-7.9.4-10.3-.3-1.2-2.7-4.1-2.7-4.1s-.1 3.5-.7 4.6c-.2.4-2 1.5-2 1.5l-.7-.1.3-.1-1.3-1.3.5-2.6 1.3-1.9-2 .1-1.5.4.4.6-.9 3.2-.9-3.1.4-.6-1.5-.5-2-.1 1.3 1.9.5 2.6-1.3 1.3.3.1-.8.2c0 0-1.8-1.1-2-1.5-.6-1-.7-4.6-.7-4.6s-2.4 2.9-2.7 4.1c-.7 2.5.3 7.8.4 10.3.1 1-.1 3.9-.1 3.9l1.2-.9.3.9.8-1.6.2.4.4-.8v.1l.8-2.2.2.4.5-1 .2.6-.8 1.6h.1l-1 1.3 1.4-.4v1.2l.6-.3.2.6.6-.9.4.6.5-1.6.8 1.5-.5 1-.2.9.2.1-.7 1.1-.2.9.3.2-.7 1.5-.2.9 7.5-.2" fill="#fff"/><g fill="#ffce31"><path d="m20 41.7l.2-.4.9-.4.6-.2h.4l.1-.1-.6-.3-.1-.1-.5.2-.4.3.8-1 .7-1.6-1.1.7-1 1.8-.4.2h-1l-.5-.1-.6.3.1.1h.4l.4.2.9-.1-1 .3-.2.4v.6h.1l.1-.3h.5l.9-.8-.7 1.1-.1.5.3.7.2-.1v-.5l.4-.4z"/><path d="m31.9 41.7l-.1-.4-.9-.4-.6-.2h-.4l-.1-.1.6-.3.1-.1.5.2.4.3-.8-1-.7-1.6 1.1.7 1 1.8.4.2h1l.5-.1.6.3-.1.1h-.4l-.4.2-.9-.1 1 .3.2.4v.6h-.1l-.1-.3h-.5l-.9-.8.7 1.1.1.5-.3.7-.2-.1v-.5l-.4-.4z"/><path d="m21.4 22.2c-1 .1-.9.8 0 1.7.2.2.2.2.3 0 .1-.3.4-.5.6-.3.1.2.1.3.5.2.1.1.3.2.4.3-.1 0-.5.1-1.1.2-.5.1-.8-.1-1.2-.5.1.5 1.3.8 1.2.8.1.2.1.3.2.3.4.1.8-.2 1.2-.1.9.2-.6-2.3-.5-2.4.1-.2-1.3-.6-1.6-.2"/><path d="m29.6 25c.1 0 .1 0 .2-.3-.1 0 1.1-.3 1.2-.8-.3.4-.7.6-1.2.5-.6-.1-1-.3-1.1-.2.1-.1.2-.2.4-.3.4.1.4 0 .5-.2.2-.2.5-.1.6.3 0 .2.1.2.3 0 .9-.9 1-1.6 0-1.7-.2-.4-1.6 0-1.5.3 0 .1-1.4 2.6-.5 2.4.3-.2.7 0 1.1 0"/></g><path d="m21.6 28.6v7.3c0 2.2 2 4 4.4 4s4.4-1.8 4.4-4v-7.3h-8.8" fill="#ed4c5c"/><g fill="#fff"><path d="m24.8 27.3h2.5v15h-2.5z"/><path d="m19.1 32.3h13.8v2.5h-13.8z"/><path d="m24 30.4l-1 1 .3-1-.3-.9z"/><path d="m24 36.7l-1 1 .3-1-.3-1z"/><path d="m28 30.4l1 1-.2-1 .2-.9z"/><path d="m28 36.7l1 1-.2-1 .2-1z"/></g><path fill="#428bc1" d="m27 11.7h-2v2h2z"/><g fill="#ffce31"><path d="m25.1 10.4l.2.1.2-.1h.3v1.2h-.8v.3.1h1 1v-.1-.3h-.8v-1.2h.3l.2.1.2-.1.2-.2-.2-.2-.2-.2-.2.2h-.3v-.4l.2-.2-.2-.2-.2-.2-.2.2-.2.2.2.2v.4h-.3l-.2-.2-.2.2-.2.2z"/><path d="m32.5 14.4c-1.3-.7-2.1-.9-2.4-.4 0 0 0 .1-.1.1-1.6-.8-2.8-.9-4-.4-1.2-.5-2.3-.4-4 .4 0-.1 0-.1-.1-.1-.3-.5-1.1-.4-2.4.4-1.3.7-2.5 1.7-2.2 2.1.1.7.5 1.3 1.2 2 .8.4 2.4.5 4.1.4 2.2-.1 4.5-.1 6.7 0 1.7.1 3.3 0 4.1-.4.7-.7 1.1-1.3 1.2-2 .4-.3-.9-1.3-2.1-2.1"/></g><g fill="#ed4c5c"><path d="m27.4 17.2c.8-.7 1.3-1.4 1.7-2.1-.7-.2-1.4-.3-2-.2.1.8.2 1.6.3 2.3"/><path d="m24.6 17.2c.1-.8.2-1.6.4-2.4-.6-.1-1.3 0-2 .2.2.8.8 1.5 1.6 2.2"/><path d="m32.6 15.8c-.1-.1-.3-.3-.6-.4-.3-.1-.6-.2-.8-.2-.1.8-.4 1.6-1.1 2.4.3 0 .6-.1.8-.2.8-.4 1.3-.9 1.7-1.3.1-.1.1-.2 0-.3"/><path d="m20.8 15.1c-.2 0-.5.1-.8.2-.5.2-.8.6-.6.7.4.4.9.8 1.7 1.3.2.1.5.1.8.2-.7-.8-1-1.5-1.1-2.4"/></g><path fill="#ffce31" d="m18.6 18.5h14.8v2h-14.8z"/><g fill="#428bc1"><path d="m18.6 18.9l-.4.7.5.5.7-.7z"/><path d="m33.4 18.9l-.8.5.7.7.5-.5z"/><path d="m26 18.4l-.8.7.8.6.8-.6z"/></g><g fill="#ed4c5c"><path d="m22.3 19.8l.7-.7-.8-.5-.7.6z"/><path d="m29.7 19.8l.8-.6-.7-.6-.8.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f7-1f1fa.svg b/riot/emojione/svg/1f1f7-1f1fa.svg new file mode 100644 index 0000000..ba85d44 --- /dev/null +++ b/riot/emojione/svg/1f1f7-1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M31.9,2C18.9,2,7.8,10.4,3.7,22h56.6C56.1,10.4,45,2,31.9,2z" fill="#f9f9f9"/><path d="M31.9,62c13.1,0,24.2-8.4,28.3-20H3.7C7.8,53.7,18.9,62,31.9,62z" fill="#ed4c5c"/><path d="m3.7 22c-1.1 3.1-1.7 6.5-1.7 10s.6 6.9 1.7 10h56.6c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10c-.1 0-56.6 0-56.6 0" fill="#428bc1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f7-1f1fc.svg b/riot/emojione/svg/1f1f7-1f1fc.svg new file mode 100644 index 0000000..d02fc12 --- /dev/null +++ b/riot/emojione/svg/1f1f7-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#42ade2"/><path d="m58 47h-52c5.2 9 14.9 15 26 15s20.8-6 26-15" fill="#699635"/><g fill="#ffe62e"><path d="M58,47c2.6-4.4,4-9.5,4-15H2c0,5.5,1.5,10.6,4,15H58z"/><path d="m46.2 19.5l8.7-.5-8.7-.5 8.3-2.8-8.5 1.8 7.2-4.8-7.7 3.9 5.7-6.5-6.5 5.8 3.9-7.8-4.7 7.3 1.7-8.5-2.7 8.2-.5-8.7-.5 8.7-2.8-8.2 1.8 8.5-4.8-7.3 3.9 7.8-6.5-5.8 5.8 6.5-7.8-3.9 7.3 4.8-8.5-1.8 8.2 2.8-8.6.5 8.6.5-8.2 2.7 8.5-1.8-7.3 4.8 7.8-3.9-5.8 6.5 6.5-5.8-3.9 7.8 4.8-7.3-1.8 8.5 2.8-8.2.5 8.7.5-8.7 2.7 8.2-1.7-8.5 4.7 7.3-3.9-7.8 6.5 5.8-5.7-6.5 7.7 3.9-7.2-4.8 8.5 1.8z"/><circle cx="42.4" cy="19" r="3.7"/></g><path d="m42.4 23c-2.2 0-4.1-1.8-4.1-4.1 0-2.2 1.8-4.1 4.1-4.1s4.1 1.8 4.1 4.1c0 2.3-1.9 4.1-4.1 4.1m0-7.4c-1.8 0-3.3 1.5-3.3 3.3 0 1.8 1.5 3.3 3.3 3.3s3.3-1.5 3.3-3.3c0-1.8-1.5-3.3-3.3-3.3" fill="#42ade2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f7.svg b/riot/emojione/svg/1f1f7.svg new file mode 100644 index 0000000..1e8673f --- /dev/null +++ b/riot/emojione/svg/1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m39.6 18.2c1.1.5 2 1.1 2.7 2 .6.7 1.1 1.5 1.5 2.4.4.9.5 1.9.5 3.1 0 1.4-.3 2.7-1 4.1s-1.8 2.3-3.4 2.8c1.3.5 2.3 1.3 2.8 2.3.6 1 .8 2.5.8 4.5v1.9c0 1.3.1 2.2.2 2.7.2.7.5 1.3 1.1 1.7v.7h-6.7c-.2-.6-.3-1.2-.4-1.6-.2-.8-.2-1.6-.3-2.5v-2.7c0-1.8-.3-3.1-1-3.7-.6-.6-1.8-.9-3.5-.9h-5.9v11.4h-5.9v-29h13.9c2 .1 3.6.4 4.6.8m-12.5 4.3v7.8h6.5c1.3 0 2.3-.2 2.9-.5 1.1-.6 1.7-1.6 1.7-3.3 0-1.8-.6-2.9-1.7-3.5-.6-.3-1.6-.5-2.8-.5h-6.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1e6.svg b/riot/emojione/svg/1f1f8-1f1e6.svg new file mode 100644 index 0000000..73d0b05 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#699635"/><g fill="#fff"><path d="m31.7 26.7c-.1-.9.4-1.8 1.3-1.6.7.1 1.5.8 1.1 1.5-.6 1.1-2.2 1.1-3.2 1.7.1.6 3-.1 3.5-.1.5 0 1 .2.7.8-.3.6-1.3.6-1.9.7-.6.1-1.6.1-1.9.6-.6.8.6.9 1 1.1 1 .5-.6 1-1 .9-1.5-.3-1.8-1.1-2.7-2.1-.9 1.2-3.7 3.9-4.3 1.1-1 .4-2 .9-3.1 1 .5-.7 1.5-1 2.3-1.4 1-.5 1-1.4 1.6-2.2.2.3 0 .7.1 1.1.8-.4 1.8-1.2 1.4-2.2 0-.1-1.2-2.5-.2-2.1.9.4.6 1.3.8 2 .3 1.3-.3 2-1.3 2.8-.4.3-1.5 1.5-.2 1.5.9 0 1.7-1 2.2-1.6.6-.8.4-1.6 0-2.5-.3-.7-1-2.2-.1-2.7.7 1.1 1 2.4 1.3 3.7.2 1.1.4 2.2 1.6 2.5-.1-.8.4-1.4 1.1-1.7-.5-.4-3.3.1-2.2-1.4.1-.7 2.1-1 2.1-1.4"/><path d="m16.4 30.4c.5 1.4 2.2.9 3.2.5 1.6-.8 1.6-2 1.6-3.6-.6.3-.5 1.4-.7 1.9-.4.8-1.7 1.5-2.6 1.4-1.3-.2-1.9-2.4-.9-3.2.2.7-.3 2.2.9 2.3.9.1 2.7-1 2.4-2-1.2.4-1.9 0-1.5-1.3.3-1.2 1.5-.3 2 .3 1.9-1.1-1.5-5.3.5-6.4.4.7 1 1.6.5 2.3-.6.8 0 2.5.1 3.4 1-.9.2.7 1 .8.5.1.7-1.2 1-1.2.1.3.1 1.2.6 1.1.6-.2-.1-1 .5-1.2.2.5.1 2-.6 1.9-.6-.1-.5-.5-1.2-.1-.6.3-.8 0-1.2-.3-.1 1.2.3 2.5-.4 3.6-.6.9-1.8 1.4-2.8 1.6-2.6.5-3.3-2.1-2.4-4.2.2.6-.2 1.7 0 2.4"/><path d="m40.8 30.9c.5 1.3 1.5-1.4 1.8-1.8.8-1.2 2 1.9 2.5-.1.3-1.3-.1-2.6-.2-3.9-.1-.9-.4-1.7-1-2.4-.6-.8-1.2-1.5-.9-2.5 1 .4 1 1.2 1.5 2 .1-.6-.3-1.4.1-1.9.5-.7.9 1.2.9 1.4.1.5-.4.7-.1 1.5.2.6.6 1.2 1 1.7-.1-.6-1-4.7 0-4.7.3 0 .6 1.2.6 1.4.2.6-.2 1.1-.2 1.8-.1 1.2.1 2.6.9 3.5.4.5 1.9 2.3 1.1 2.9-.6-.7-1-1.5-1.5-2.2 0 .8.2 1.7-.2 2.3-.4-.2-.2-1.5-.2-1.8 0-1.1-.7-2-1.3-2.9-.2 1.5 1 4.3-.4 5.4-.9.8-2.1-1-2.4-.3-.3.5-1 2.3-1.8 2.1-1-.2-1.7-3-.6-3.3.1.5.1 1.2.4 1.8"/><path d="m19.4 24.1c.7.1 0-2.3 0-2.7.1-.4.4-.6.6-.2.3.6.3 1.3.4 1.9 0 .5.1 1.1-.3 1.5-.6.6-1.4.3-1.7-.5-1.4 1.2.4 3.3-.8 4.5-.2-1.1 0-2.3-.4-3.3-.2-.5-1.1-.3-1.2-1.2 0-.4.3-1.5-.1-1.8-.2.4-.4 3.5-1.4 2.6-.8-.6-.6-2.6-.3-3.4.6.3-.1 2.5.7 2.6.4.1.5-1.6.6-1.9.3-.5 1.3-1.9 1.1-.5-.1.6-.6 2.5.6 2.4-.1-1-.2-2-.4-3-.1-.5.2-1.5.6-.6.3.6.1.9 0 1.5-.1.7.2 1.4.3 2 .6-.5-.2-2.4.3-3.2 1.2.7-.1 3.1 1.4 3.3"/><path d="m32.3 24.3c-.5.7-1.4.1-1.8-.4-.5.6-1.5 1.6-2.3.8-.6-.6.1-1.7-.4-2.2-.3.5-.8 2.9-1.7 1.8-.5-.6-1.2-2.7-.1-3.2-.1.8-.3 1.7.2 2.4.5.7 1-1.1 1.2-1.5.3-.7 1.3-1.9 1.1-.4-.1.6-.3 2 .3 2.4.4.3.9-.2 1.1-.5.4-.5.2-1.3.1-1.9-.1-.5-.3-1.1 0-1.6.4-.6.7.8.7 1.1 0 .3.4 3.4 1.1 2.4.7-.9-1.2-2.9.1-3.4.5-.2 1.4 1.8.4 1.2.3.9.7 2.2 0 3"/><path d="m36.1 25.5c.1 1.3 1.2 4.9-.3 5.7-.2-.4 0-1 .1-1.5.1-.9-.1-1.8-.2-2.6-.2-1.9-.4-3.3-1.7-4.8-.3-.4-.8-.7-.9-1.3 0-.2-.1-1.1.3-.9.3.1 2 1.6 1.1 1.6.1.2.5 1 .7 1 0-.5-.6-2 0-2.3.5-.3 1.1 1.6.9 2-.2.5-.2.8 0 1.5.2.8.7 1.5 1.1 2.2.6 1 1.8 2.4 1.5 3.7-.6-.3-1-1.7-1.3-2.3-.2-.5-.4-1-.7-1.4-.1-.1-.7-.9-.6-.4 0-.1 0-.2 0-.2"/><path d="m50 27.4c.1 2.1-.6 4.8-3.2 4.8 0-.6 1.3-1.2 1.7-1.5 1-.8.9-2.3.8-3.4-.1-1.5-.2-3-.5-4.5-.1-.9-.6-2.2.2-2.8.5.4 1.2 1.5.9 1.9-.5.6 0 5.1.1 5.5"/><path d="m37.2 31.9c2.6-1.5 1.8-4.7 1.6-7.2-.1-.7-.1-1.4-.2-2.1 0-.5-.4-1.2-.2-1.7.5-1.3.9-.1 1 .7.1.5-.3.6-.2 1 .1.8.1 1.6.2 2.4.1 1.3.3 2.6.2 3.8-.2 1.9-1.2 4-3.5 3.6.1-.2.8-.3 1.1-.5"/><path d="m41.4 26.9c.1 1 .5 2.8 0 3.7-.4.6-.4-.4-.5-.5-.1-.8-.1-1.6-.1-2.5-.2-2.2-.9-4.4-.9-6.5 0-2.7 2.3 1.5 1 1.3.1 1.5.3 3 .5 4.5"/><path d="m25.1 21.8c.2.5-2.3 1.8-2.6 1.8-.1-.5 1.1-1.2 1.4-1.4.3-.3.5-.3.4-.7-.2-.4-.1-1.1.4-1.3 1-.3.3 1.2.4 1.6"/><path d="m14.8 30.7c0 .8.3.4.7.2.2.4-.3 1.5-.8 1-.7-.7-.1-2.3.2-3 .2.5-.2 1.3-.1 1.8"/><path d="m43 24.5c.1-.4-.2-.8.1-1.2.4-.5.8.1.6.3-.2.2-.5-.2-.5.4 0 .3.2.9-.1 1.2-.2-.1-1.1-1.4-1-1.6.4-.4.8.8.9.9"/><path d="m16.9 26.2c-.2.4-2.5 1.7-2.6 1.4 0-.3 2.9-2 2.6-1.4"/><path d="m33.9 31.3c-.3.9 1 .1 1.3 0-.4.7-1.8 1.3-1.6 0-.1 0-.3.1-.4.1-.2-.2 1-1 .7-.1"/><path d="m44.8 31c.3 0 .8.9.5 1.1-.2.2-1.1.3-.6-.1.6-.6.1-1 .1-1"/><path d="m30.7 25.9c.1-.2.1-.5.2-.7 1 .8-1.6 2.1-1.1.2.2.2.2.5.4.6 0-.2.1-.5.1-.7.2.2.2.5.4.6"/><path d="m42.4 27.2c-.3-.4 1.5-1.5 1.8-1.7.2.3-1.2 1.4-1.8 1.7"/><path d="m48 23.2c-.2-.6-.8-1.8-.2-2.3.4.3.6 1.8.2 2.3"/><path d="m37.1 21.2c-.1-.2-.4-.4-.4-.7.1-.4.3-.3.5-.1.3.4.5 1.5 0 1.8 0-.3.1-.7-.1-1"/><path d="m24.9 23.9c0 .6-1 1.2-1.1.4-.1-.3.4-1.4.6-1.1-.4.9-.4 1.2.5.7"/><path d="m37.4 22.8c.4 1 .2.1.6-.1.7 1.3-1.5 1-1 .2.1.1.2.3.2.4.1-.1.1-.3.2-.5"/><path d="m43.8 27.4c-.5-.4.1-.9.4-.4.2.3.2 1.1-.2 1.3 0-.3.1-.7-.2-.9"/><path d="m23.3 29.6c0-.2-.1-1.7.2-1.5.4.2.3 1.3-.2 1.5"/><path d="m19.1 20.2c.1.3.2.7.4.2.8.9-2 .6-1-.3 0 .1.2.7.6.1"/><path d="m29.3 22.4c0-.4-.6-2.1-.1-2.1.6.1.5 1.6.1 2.1"/><path d="m15.3 21.5c-.3-.1.2-.6 0-1-.2.1-.4-.2-.2-.4.8-.6.5 1.4.2 1.4"/><path d="m41.2 41.8l-.4-1.2-.4 1.2h-21.9c0 0 .2 1.8 2.4 1.8h19.4v1.4h5.3v-3.2h-4.4m3.4 2.4h-3.6v-1h3.6v1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1e7.svg b/riot/emojione/svg/1f1f8-1f1e7.svg new file mode 100644 index 0000000..1253585 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1e7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.4 22.5l-8.2-2.2-40.5 23.4-2.2 8.2c3.8 4.3 8.8 7.5 14.7 9.1 16 4.3 32.5-5.2 36.7-21.2 1.7-5.9 1.4-11.9-.5-17.3" fill="#699635"/><path d="m39.8 3c-16-4.3-32.5 5.2-36.8 21.2-1.6 5.9-1.3 11.9.5 17.3l3.7 1 4.5 1.2 40.5-23.4 1.2-4.5 1-3.7c-3.7-4.3-8.7-7.5-14.6-9.1" fill="#2a5f9e"/><path d="m3.5 41.5c.7 1.9 1.5 3.7 2.5 5.5 1 1.7 2.2 3.4 3.5 4.9l50.9-29.4c-1.3-3.8-3.3-7.4-6-10.4l-50.9 29.4" fill="#ffe62e"/><g fill="#fff"><path d="m19 20.5l2 1.4-.8-2.2 2-1.4h-2.4l-.8-2.2-.8 2.2h-2.4l2 1.4-.8 2.2z"/><path d="m13.6 14.8l2 1.3-.8-2.2 2-1.3h-2.4l-.8-2.2-.8 2.2h-2.4l2 1.3-.8 2.2z"/><path d="m24.4 14.8l2 1.3-.8-2.2 2-1.3h-2.4l-.8-2.2-.8 2.2h-2.5l2 1.3-.7 2.2z"/><path d="m13.6 26.3l2 1.3-.8-2.2 2-1.3h-2.4l-.8-2.2-.8 2.2h-2.4l2 1.3-.8 2.2z"/><path d="m24.4 26.3l2 1.3-.8-2.2 2-1.3h-2.4l-.8-2.2-.8 2.2h-2.5l2 1.3-.7 2.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1e8.svg b/riot/emojione/svg/1f1f8-1f1e8.svg new file mode 100644 index 0000000..c1632e6 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-5.4-1.4-10.5-4-14.9l-43.3 37.3-.7 1.6c.1.1.3.2.4.3l46.6-16.6c.7-2.4 1-5 1-7.7" fill="#ed4c5c"/><path d="M58,17.1C53.6,9.4,45.9,3.9,36.8,2.4L14,56L58,17.1z" fill="#fcd856"/><path d="m32 2c-8.2 0-15.6 3.3-21 8.6-5.5 5.4-9 13-9 21.4 0 9.5 4.4 18 11.4 23.5.1.1.2.2.4.3.1.1.2.1.3.2l.7-1.6 22.1-52c-1.7-.3-3.3-.4-4.9-.4" fill="#2872a0"/><path d="m14.4 56.3c.1 0 .1.1.2.1l40.3-4.9c2.9-3.4 5-7.4 6.2-11.8l-46.7 16.6" fill="#fff"/><path d="m32 62c9.1 0 17.3-4.1 22.8-10.5l-40.3 4.9c5 3.5 11 5.6 17.5 5.6" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1e9.svg b/riot/emojione/svg/1f1f8-1f1e9.svg new file mode 100644 index 0000000..4fe07ce --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60 42c-5.5 0-10-4.5-10-10h-39.2v21.2c5.4 5.4 12.9 8.8 21.2 8.8 13.1 0 24.2-8.4 28.3-20-.1 0-.2 0-.3 0" fill="#3e4347"/><path d="m60 22c.1 0 .2 0 .3 0-4.1-11.6-15.2-20-28.3-20-8.3 0-15.8 3.4-21.2 8.8v21.2h39.2c0-5.5 4.5-10 10-10" fill="#ed4c5c"/><path d="m60.3 22h-49.5v20h49.5c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#f9f9f9"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1ea.svg b/riot/emojione/svg/1f1f8-1f1ea.svg new file mode 100644 index 0000000..ccd3877 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#428bc1"><path d="m61.2 25c-3.2-13.2-15-23-29.2-23-.3 0-.7 0-1 0v23h30.2"/><path d="M17,6C10,10.1,4.8,16.9,2.8,25H17V6z"/><path d="M2.8,39C4.8,47.1,10,53.9,17,58V39H2.8z"/><path d="m31 62c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2v23"/></g><path d="m61.2 25h-30.2v-23c-5.1.2-9.9 1.6-14 4v19h-14.2c-.5 2.2-.8 4.6-.8 7 0 2.4.3 4.8.8 7h14.2v19c4.1 2.4 8.9 3.8 14 4v-23h30.2c.5-2.2.8-4.6.8-7 0-2.4-.3-4.8-.8-7" fill="#ffe62e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1ec.svg b/riot/emojione/svg/1f1f8-1f1ec.svg new file mode 100644 index 0000000..91caccd --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#f9f9f9"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#ed4c5c"/><g fill="#f9f9f9"><path d="m21.2 17.5l-1.2-1h1.5l.5-1.5.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9z"/><path d="m29.2 17.5l-1.2-1h1.5l.5-1.5.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9z"/><path d="m22.2 22.5l-1.2-1h1.5l.5-1.5.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9z"/><path d="m28.2 22.5l-1.2-1h1.5l.5-1.5.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9z"/><path d="m25.2 14.5l-1.2-1h1.5l.5-1.5.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9z"/><path d="m24.4 28c-4.8 0-8.6-4.1-8.6-9.1s3.9-9.1 8.6-9.1c.4 0 .7 0 1 .1-1.2-.6-2.5-.9-3.9-.9-5.2 0-9.5 4.5-9.5 10s4.3 10 9.5 10c1.6 0 3.2-.4 4.5-1.2-.5.1-1 .2-1.6.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1ed.svg b/riot/emojione/svg/1f1f8-1f1ed.svg new file mode 100644 index 0000000..ac8dfd1 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2v10H12v20H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#2a5f9e"/><path d="M32,2c-4.7,0-9.1,1.1-13.1,3v3.1V11H11v2.9V14v4.9H5c-1.9,4-3,8.4-3,13.1h12V17l12,15h6v-7.5L23.6,14H32V2z" fill="#fff"/><g fill="#ed4c5c"><path d="m15.4 14l14.6 18h2v-4.9l-10.6-13.1z"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z"/></g><path d="m57.9 29.2c0 7.4-1.2 15.3-10.7 19.1-9.5-3.8-10.7-11.7-10.7-19.1-.1 0 21.4 0 21.4 0" fill="#49c3f2"/><path d="m47.2 48.3c4.3-1.7 6.9-4.3 8.5-7.3-.2 0-.7 0-.9 0-.2 0-9.2-.9-10.2-1.3-.9-.3-4.4.3-6.1.9 1.5 3.2 4.1 5.9 8.7 7.7" fill="#428bc1"/><path d="m40.5 43.8c.1 0 2.6.4 3-.2.4-.6-1.2-1.9-1.1-2.6 0-.2.2-.6.4-.7.4-.2 1.7.3 1.8-.6.1-1.5-1.2-2.7-1.6-4.1-.3-.9-.3-1.7-.4-2.6 0-.4-.1-.6-.5-.7-.5-.2-.5-.6-.7-1.1-.2 0-.7.4-.7.6 0 .9-.8.9-1.2 1.6-.3-.4-.5-1.1-.8-1.5-.4-.4-.5-.4-.4-1-.6-.5-.6.3-1 .5-.1.2-.5.5-.8 1 .3 4.1 1.2 8.1 4 11.4" fill="#c94747"/><path d="m57.9 29.2c0-2.8-.1-5.5-.1-7.8-3.6-1.6-8.3-1.9-10.7-1.9-2.4 0-7.1.3-10.7 1.9.1 2.4-.1 5.1-.1 7.8h21.6" fill="#ffe62e"/><path d="m49.6 39.9c-1.4 0-2.7 0-3.7-.1-.9-.1-1.2-.3-1.9-.7-1-.6-1.2-.7-2.6-1.5-.2-.1-.4 0-.1.2 1.4.9 1.9 1.2 2.5 1.7.7.4 2.7 1.7 2.7 1.7h8.1l1.3-2.7c0-.2-.1-.4-.1-.5-1.5.1-2.9.1-4 .1-.1.1-.2.3-.3.5-.6.1-1 .2-1.2.2.1.1-.5.9-.7 1.1" fill="#3e4347"/><path d="m44.7 21.3c-.4 0-1.1 0-1.3.1-.2.1-.2.1.1.2.3.1.8.2 1 .4.3.2.5.5.4.9-.2 1.2.4 2.4 1.4 2.9.1 0 .1.1.1.2 0 .2-.1.4-.1.5-.1.1-.1.2.1.1-.1.2-.4.6-.4.7-.8-.1-1.4 0-1.4.8 0 .1 0 .2.1 0 .1-.2.2-.4.6-.4-.3.3-.4.5-.3.7 0 .2.1.3.2.1s.2-.4.4-.5c.1 0 .1-.1.1.1s0 .4.1.5c.1.1.1.1.1-.1 0-.2 0-.5.2-.6.3-.1.5-.1.6.1.1.2.2 0 .1-.2s-.3-.4-.5-.4c.2-.3.4-.7.4-.8 0-.1.1-.1.2-.1.1 0 .1 0 .2-.1.1-.1.2-.5.3-.7.1 0 .2 0 .2-.1.2.3.4.6.4.7 0 .1.1.1.1.2 0 .1-.2.6-.2.7-.6 0-.8 0-1 .3-.1.1 0 .2.2.1.1-.1.3-.1.4-.1.1 0 .1.1 0 .1-.3.2-.6.4-.5.7 0 .1.1.2.1 0 .1-.2.3-.4.6-.5 0 .2 0 .6.2.7.2.1.2 0 .1-.1-.1-.2 0-.5.1-.6.2-.3.8.1.9.2.1.1.2.1.1-.1-.1-.3-.5-.5-.9-.6.1-.5.4-1.6.5-1.9.2.1.4-.2.8-.1.6.2 1.6.8 1.7 1s.2.1.3 0c.1-.1.2 0 .3 0 .1 0 .2.1.1-.2-.1-.3-.5-.8-1.1-1.2.3 0 .8 0 .8-.1s-.5-.3-.8-.3c.2-.1.5-.2.7-.3.1-.1 0-.1-.3-.1-1 0-1.5 0-2-.3-.8-.5-1.3-1-1.7-1.2-.2-.1-.3-.4-.4-.6-.3-.7-.3-1-.9-1.3-.4 0-1.2.3-1.5.6" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1ee.svg b/riot/emojione/svg/1f1f8-1f1ee.svg new file mode 100644 index 0000000..85338c9 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#ed4c5c"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#f9f9f9"/><g fill="#428bc1"><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z"/><path d="m30.2 24.3l.8-11.2c-6.3-2.8-13.7-2.8-20 0l.8 11.2c.4 5 4 9.3 9.2 10.7 5.2-1.5 8.8-5.7 9.2-10.7"/></g><path d="m13.5 25.8c.9 3.6 3.7 6.6 7.5 7.8 3.8-1.2 6.6-4.2 7.5-7.8l-3.8-4.7-1.5 1.9-2.2-4.2-2.2 4.2-1.5-1.9-3.8 4.7" fill="#fff"/><g fill="#428bc1"><path d="m13.8 26.9c.7 1.1 2.2 1.5 3.4.9.8-.4 1.7-.4 2.5 0 .8.4 1.7.4 2.5 0 .8-.4 1.7-.4 2.5 0 1.2.6 2.7.3 3.4-.9v.7c-.7 1.1-2.2 1.5-3.4.9-.7-.5-1.7-.5-2.5 0-.8.4-1.7.4-2.5 0-.7-.5-1.7-.5-2.5 0-1.2.6-2.7.3-3.4-.9v-.7"/><path d="m13.8 28.3c.7 1.1 2.2 1.5 3.4.9.8-.4 1.7-.4 2.5 0 .8.4 1.7.4 2.5 0 .8-.4 1.7-.4 2.5 0 1.2.6 2.7.3 3.4-.9v.7c-.7 1.1-2.2 1.5-3.4.9-.8-.4-1.7-.4-2.5 0-.8.4-1.7.4-2.5 0-.8-.4-1.7-.4-2.5 0-1.2.6-2.7.3-3.4-.9v-.7"/></g><path d="m11.7 12.8l.8 11.4c.3 4.7 3.7 8.7 8.5 10.1 4.8-1.4 8.1-5.4 8.5-10.1l.8-11.4c.2.1.5.2.7.3l-.8 11.2c-.4 5-4 9.3-9.2 10.7-5.2-1.5-8.8-5.7-9.2-10.7l-.8-11.2c.2-.1.5-.2.7-.3" fill="#ed4c5c"/><g fill="#ffe62e"><path d="m17 11.9l.2.7.8-.2-.6.6.6.6-.8-.2-.2.7-.2-.7-.8.2.6-.6-.6-.6.8.2z"/><path d="m25 11.9l.2.7.8-.2-.6.6.6.6-.8-.2-.2.7-.2-.7-.8.2.6-.6-.6-.6.8.2z"/><path d="m21 14.8l.2.7.8-.1-.6.5.6.6-.8-.2-.2.7-.2-.7-.8.2.6-.6-.6-.5.8.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1ef.svg b/riot/emojione/svg/1f1f8-1f1ef.svg new file mode 100644 index 0000000..e9f5672 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m61.7 28c-.1-1-.3-2-.6-3h-58.3c-.2 1-.4 2-.6 3h59.5"/><path d="m2.3 36c.1 1 .3 2 .6 3h58.3c.2-1 .4-2 .6-3h-59.5"/><path d="m20 4.5c-1 .5-2 1-3 1.5v52c1 .6 2 1.1 3 1.5v-55"/><path d="m28 2.3v59.5c1 .1 2 .2 3 .3v-60.1c-1 0-2 .1-3 .3"/></g><g fill="#2a5f9e"><path d="m2 32c0 1.4.1 2.7.3 4h59.5c.2-1.3.3-2.6.3-4s-.1-2.7-.3-4h-59.5c-.2 1.3-.3 2.6-.3 4"/><path d="m20 59.5c2.5 1.1 5.2 1.9 8 2.2v-59.4c-2.8.4-5.5 1.1-8 2.2v55"/></g><g fill="#ed4c5c"><path d="M17,25V6C10,10.1,4.8,16.9,2.8,25H17z"/><path d="M17,39v19C10,53.9,4.8,47.1,2.8,39H17z"/><path d="M32,2c-0.3,0-0.7,0-1,0v23h30.2C58,11.8,46.2,2,32,2z"/><path d="m31 39v23c.3 0 .7 0 1 0 14.2 0 26-9.8 29.2-23h-30.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f0.svg b/riot/emojione/svg/1f1f8-1f1f0.svg new file mode 100644 index 0000000..5b0e543 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#f9f9f9"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#ed4c5c"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#428bc1"/><path d="m33.9 19h-19.8-.1c0 0 0 3.1 0 13.8 0 9.2 9.6 12 10 12.2.4-.2 10-3 10-12.2 0-10.7 0-13.8 0-13.8h-.1" fill="#f9f9f9"/><path d="M16,21v11.9c0,5.6,4.3,8.6,8,10.1c3.7-1.5,8-4.5,8-10.1V21H16z" fill="#ed4c5c"/><g fill="#f9f9f9"><path d="m23 23h2v14h-2z"/><path d="m19 29h10v2h-10z"/><path d="m21 25h6v2h-6z"/></g><path d="m24 35c-1.3 0-2.5.6-3.2 1.6-.5-.4-1.1-.6-1.8-.6-.8 0-1.6.3-2.1.9 1.4 3.1 4.4 5 7.1 6.1 2.7-1.1 5.7-3 7.1-6.1-.5-.6-1.3-.9-2.1-.9-.7 0-1.3.2-1.8.6-.7-1-1.9-1.6-3.2-1.6" fill="#428bc1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f1.svg b/riot/emojione/svg/1f1f8-1f1f1.svg new file mode 100644 index 0000000..50fafc2 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#83bf4f"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#428bc1"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f2.svg b/riot/emojione/svg/1f1f8-1f1f2.svg new file mode 100644 index 0000000..abe6318 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#a0cfeb"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#f9f9f9"/><path fill="#699635" d="m22.9 24.6l-2.3-.4h.1l1-3.5-2.7 2.4-1.2-1.8-.8 2.1 1.5 2.5 2.8.2z"/><path fill="#83bf4f" d="m21.1 27.5l-2.3.2h.1l.1-3.7-2.1 3-1.6-1.4-.2 2.2 2 2 2.9-.4z"/><path fill="#699635" d="m20.1 30.7l-2.1.8-.8-3.5-1.2 3.3-1.9-.9.3 2.2 2.5 1.4 2.6-1.2z"/><path fill="#83bf4f" d="m20 34.1l-1.8 1.3h-.1l-1.7-3.2-.3 3.6-2-.4.9 1.9 2.8.8 2.2-1.8z"/><path fill="#699635" d="m20.8 37.4l-1.5 1.8v-.1l-2.5-2.6.7 3.5-2.1.1 1.4 1.7 2.9.1 1.6-2.4z"/><path fill="#83bf4f" d="m22.4 40.4l-.9 2.1-.1-.1-3.1-1.9 1.6 3.3-2 .6 1.8 1.3 2.8-.7 1-2.7z"/><g fill="#699635"><path d="m24.7 42.9l-.3 2.2h-.1l-3.5-1.1 2.4 2.8-1.8 1.1 2.1.8 2.5-1.4.3-2.9z"/><path d="m41.1 24.6l2.3-.4h-.1l-1-3.5 2.7 2.4 1.2-1.8.8 2.1-1.5 2.5-2.8.2z"/></g><path fill="#83bf4f" d="m42.9 27.5l2.3.2h-.1l-.1-3.7 2.1 3 1.6-1.4.2 2.2-2 2-2.9-.4z"/><path fill="#699635" d="m43.9 30.7l2.1.8.8-3.5 1.2 3.3 1.9-.9-.3 2.2-2.5 1.4-2.6-1.2z"/><path fill="#83bf4f" d="m44 34.1l1.8 1.3h.1l1.7-3.2.2 3.6 2.1-.4-.9 1.9-2.8.8-2.2-1.8z"/><path fill="#699635" d="m43.2 37.4l1.5 1.8v-.1l2.5-2.6-.7 3.5 2.1.1-1.4 1.7-2.9.1-1.6-2.4z"/><path fill="#83bf4f" d="m41.6 40.4l.9 2.1.1-.1 3.1-1.9-1.6 3.3 2 .6-1.8 1.3-2.8-.7-1-2.7z"/><path fill="#699635" d="m39.3 42.9l.3 2.2h.1l3.5-1.1-2.4 2.8 1.8 1.1-2.1.8-2.5-1.4-.3-2.9z"/><g fill="#f1bf31"><path d="m25.7 16.1l2.2 2.3h8.1l2.2-2.3.2-3.4-5.2-1.7.5-.4-1.7-1-1.7 1 .5.4-4.8 1.2-.3 3.9m11.5-2.8l-1.3 2-1.3-.5-1.6-.3v-2.9l4.2 1.7m-10.4 0l4.2-1.7v2.9l-1.6.3-1.3.5-1.3-2"/><path d="m31.1 7.4h.6v.1l-.1 1.1h.8l-.1-1.1v-.1h.6l.3-.3-.3-.4-.6.1.1-.6-.4-.4-.4.4.1.6-.6-.1-.3.4z"/></g><path d="m31.8 22.5c1.9 0 9.8-1.4 9.8 9.7 0 10.6-9.6 14.8-9.6 14.8s-9.6-4.1-9.6-15.6c0-10.3 9.4-8.9 9.4-8.9" fill="#a0cfeb"/><path d="m35 39c.6-.3 1.2-.5 1.9-.5 1.1 0 2.1.5 2.9 1.2-2.8 5.1-7.7 7.2-7.7 7.2s-4.8-2-7.6-7.2c.7-.7 1.7-1.2 2.8-1.2.8 0 1.5.2 2.1.6.7-.8 1.7-1.2 2.9-1.2 1 0 1.9.4 2.7 1.1" fill="#83bf4f"/><path d="m43.5 29.5c-.3-3.9-1.4-6.4-2.9-7.8-1.4-1.2-3-1.5-4.2-1.1h-.1l-3.6 1.6c-.2-.2-.4-.3-.7-.3s-.5.1-.7.3l-3.6-1.6h-.1c-1.2-.4-2.8-.2-4.2 1-1.5 1.3-2.7 3.8-2.9 7.8-.5 6.3 2.2 10.9 5.2 13.6 1.6 1.4 4.1 3.2 6.3 4 2.2-.8 4.7-2.5 6.3-4 3-2.7 5.7-7.3 5.2-13.5m-20.2 1c.2-4.3 1.4-5.7 2-6.2.2.7.9 1.1 1.5 1.1.5 0 4.4-2.2 4.4-2.2.1.2.4.4.7.4s.6-.2.7-.4c0 0 3.7 2.2 4.4 2.2.6 0 1.3-.4 1.5-1.1.6.5 1.8 1.8 2 6.2.4 8.1-6.7 15.7-8.7 15.7-1.8 0-8.8-7.6-8.5-15.7" fill="#f1bf31"/><g fill="#fff"><path d="m31.9 37.9c.1 0 .2 0 .3 0 .5 0 .9.1 1.4.2l-.5-1.9v-3.8l.5-.7v-1.3l-.7-.2v.8l-.5-.1v-.9l-.4-.1-.4.2v.8l-.5.2v-.8l-.7.3v1.3l.5.6v3.8l-.5 2.1c.3-.3.9-.5 1.5-.5"/><path d="m36.6 38.5c.1 0 .1 0 .2 0 .5 0 1 .1 1.5.3l-.4-1.8v-3.8l.5-.7v-1.3l-.8-.2v.8l-.5-.2v-.8l-.4-.1-.4.1v.8l-.5.2v-.8l-.8.2v1.3l.5.7v3.8l-.5 2c.5-.3 1-.5 1.6-.5"/><path d="m27.1 38.5c.1 0 .1 0 .2 0 .5 0 1 .1 1.5.3l-.5-1.8v-3.8l.5-.7v-1.3l-.7-.2v.8l-.5-.2v-.8l-.4-.1-.4.1v.8l-.5.2v-.8l-.7.2v1.3l.5.7v3.8l-.6 2c.5-.3 1-.5 1.6-.5"/><path d="m27 27.2c.5-.1.7.4.8.8.8-.5.5-1.6-.5-1.6-.1 0-.3 0-.4.1-.3.1-.6.5-.7.8-.3 1.1.8 1.8.8 3 .9-.5.1-2.5 0-3.1"/><path d="m32.7 27.2c.8-.5.5-1.6-.5-1.6-.1 0-.3 0-.4.1-.3.1-.6.5-.7.8-.3 1.1.8 1.8.8 3 .8-.4 0-2.4-.1-3 .6-.2.8.3.9.7"/><path d="m36.7 27.2c.5-.1.7.4.8.8.8-.5.5-1.6-.5-1.6-.1 0-.3 0-.4.1-.3.1-.6.5-.7.8-.3 1.1.8 1.8.8 3 .8-.5 0-2.5 0-3.1"/><path d="m45.9 51.9c0 0 1.1-1 1.2-2.2-1 .7-2 .9-3 .9-1 0-1.6-.6-2.9-.8.1-.4.2-.9.3-1.5.1-.7-.1-1.2-1.1-1.4-2.2-.3-4.3 1-8.1 1.1-3.9-.1-6.5-1.3-8.7-1.1-1 .1-1.2.7-1.1 1.4.1.6.2 1.1.3 1.5-1.3.2-1.9.8-2.9.8-1 0-2-.1-3-.9.1 1.3 1.2 2.2 1.2 2.2-1.5.1-3-.2-3-.2 2 2.2 4.4 3.4 7.7 1.8 1.5-.8 3 .1 4.5.1 2 0 1.5-1.6 1.2-2.4 1.1.2 2.4.3 3.7.3 1.2 0 2.2-.1 3.2-.3-.2.8-.7 2.4 1.2 2.4 1.4 0 3-.9 4.5-.1 3.2 1.7 5.7.5 7.7-1.8 0 0-1.4.3-2.9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f3.svg b/riot/emojione/svg/1f1f8-1f1f3.svg new file mode 100644 index 0000000..548243e --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#699635"/><path d="m42 3.7c-3.1-1.1-6.5-1.7-10-1.7-3.5 0-6.9.6-10 1.7v56.6c3.1 1.1 6.5 1.7 10 1.7 3.5 0 6.9-.6 10-1.7v-56.6" fill="#ffe62e"/><path fill="#699635" d="m32 36.2l5.3 3.8-2-6.1 5.2-3.8h-6.5l-2-6.1-2 6.1h-6.5l5.2 3.8-2 6.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f4.svg b/riot/emojione/svg/1f1f8-1f1f4.svg new file mode 100644 index 0000000..967be61 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#42ade2"/><path fill="#fff" d="m32 39.2l9.9 7.1-3.8-11.5 9.9-7.1h-12.2l-3.8-11.4-3.8 11.4h-12.2l9.8 7.1-3.7 11.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f7.svg b/riot/emojione/svg/1f1f8-1f1f7.svg new file mode 100644 index 0000000..6348d1a --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,3.9,0.7,7.6,2.1,11h55.8c1.3-3.4,2.1-7.1,2.1-11s-0.7-7.6-2.1-11H4.1C2.7,24.4,2,28.1,2,32z" fill="#c94747"/><g fill="#fff"><path d="m7.3 49h49.4c1.3-1.9 2.4-3.9 3.2-6h-55.8c.8 2.1 1.9 4.1 3.2 6"/><path d="m4.1 21h55.8c-.8-2.1-1.9-4.1-3.2-6h-49.4c-1.3 1.9-2.4 3.9-3.2 6"/></g><path fill="#ffce31" d="m32 37.3l6.2 4.7-2.4-7.6 6.2-4.8h-7.6l-2.4-7.6-2.4 7.6h-7.6l6.2 4.8-2.4 7.6z"/><g fill="#699635"><path d="M56.7,15C51.3,7.2,42.3,2,32,2S12.7,7.2,7.3,15H56.7z"/><path d="M7.3,49c5.4,7.8,14.5,13,24.7,13s19.3-5.2,24.7-13H7.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f8.svg b/riot/emojione/svg/1f1f8-1f1f8.svg new file mode 100644 index 0000000..9bbb665 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C19.3,2,8.5,9.9,4.1,21h55.8C55.5,9.9,44.7,2,32,2z" fill="#3e4347"/><path d="M32,62c12.7,0,23.5-7.9,27.9-19H4.1C8.5,54.1,19.3,62,32,62z" fill="#699635"/><path d="m62 32c0-3.1-.5-6.2-1.4-9h-57.2c-.9 2.8-1.4 5.9-1.4 9 0 3.1.5 6.2 1.4 9h57.2c.9-2.8 1.4-5.9 1.4-9" fill="#ed4c5c"/><g fill="#fff"><path d="m60.3 22c-.1-.3-.3-.7-.4-1h-55.8c-.1.3-.3.7-.4 1-.1.3-.2.7-.3 1h57.2c-.1-.3-.2-.7-.3-1"/><path d="m3.7 42c.1.3.3.7.4 1h55.8c.1-.3.3-.7.4-1 .1-.3.2-.7.3-1h-57.2c.1.3.2.7.3 1"/></g><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32c0,8.3,3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#2a5f9e"/><path fill="#ffce31" d="m16.8 31l3.2-4.2-5.2 1.6-3.3-4.2v5.2l-5.1 1.6 5.1 1.6v5.2l3.3-4.2 5.2 1.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1f9.svg b/riot/emojione/svg/1f1f8-1f1f9.svg new file mode 100644 index 0000000..08a1d8f --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#83bf4f"><path d="m60 42c-5.5 0-10-4.5-10-10h-39.2v21.2c5.4 5.4 12.9 8.8 21.2 8.8 13.1 0 24.2-8.4 28.3-20-.1 0-.2 0-.3 0"/><path d="m60 22c.1 0 .2 0 .3 0-4.1-11.6-15.2-20-28.3-20-8.3 0-15.8 3.4-21.2 8.8v21.2h39.2c0-5.5 4.5-10 10-10"/></g><path d="m60.3 22h-49.5v20h49.5c1.1-3.1 1.7-6.5 1.7-10s-.6-6.9-1.7-10" fill="#ffe62e"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#ed4c5c"/><g fill="#3e4347"><path d="m40 34.1l2.5 1.9-1-3.1 2.5-1.8-3-.1-1-3-1 3-3 .1 2.5 1.8-1 3.1z"/><path d="m52 34.1l2.5 1.9-1-3.1 2.5-1.8-3-.1-1-3-1 3-3 .1 2.5 1.8-1 3.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1fb.svg b/riot/emojione/svg/1f1f8-1f1fb.svg new file mode 100644 index 0000000..9c93704 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#428bc1"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z"/></g><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/><g fill="#428bc1"><path d="m35.5 27.9l-1.2 1.2c.4.5.6 1.2.6 1.9 0 1.7-1.3 3-3 3-1.7 0-3-1.3-3-3 0-.7.2-1.3.6-1.9l-1.2-1.2c-.7.8-1.1 1.8-1.1 2.9 0 2.5 2.1 4.6 4.6 4.6s4.6-2.1 4.6-4.6c.2-1-.2-2.1-.9-2.9"/><path d="m34 25.4l-.7.7c.2.3.4.7.4 1.1 0 1-.8 1.7-1.7 1.7s-1.7-.8-1.7-1.7c0-.4.1-.8.4-1.1l-.7-.7c-.4.5-.6 1-.6 1.7 0 1.5 1.2 2.6 2.6 2.6s2.6-1.2 2.6-2.6c0-.7-.2-1.2-.6-1.7"/></g><path d="m28.4 29.5c0 0-.5-.1-.9-.1.3-.5.4-1.4.4-1.4s-.8.5-1.1.9c-.2-.3-.5-.7-.5-.7s-.3.4-.3.8c.1.4.6 1 .6 1s.8.2 1.2.1c.3-.1.6-.6.6-.6" fill="#699635"/><path d="m27.6 30.7c0 0-.5 0-.9.1.2-.5 0-1.4 0-1.4s-.6.6-.8 1.2c-.3-.3-.6-.6-.6-.6s-.2.5-.1.9c.2.4.8.8.8.8s.8 0 1.1-.2c.4-.3.5-.8.5-.8" fill="#83bf4f"/><path d="m27.2 32c0 0-.5.1-.8.3 0-.6-.3-1.4-.3-1.4s-.4.8-.5 1.4c-.3-.2-.8-.4-.8-.4s-.1.5.1.9c.3.3 1 .6 1 .6s.8-.2 1-.5c.4-.4.3-.9.3-.9" fill="#699635"/><path d="m27.2 33.3c0 0-.5.3-.7.5-.1-.6-.7-1.3-.7-1.3s-.2.9-.1 1.4c-.4-.1-.8-.2-.8-.2s0 .6.4.8c.3.2 1.1.3 1.1.3s.7-.4.9-.7c.1-.3-.1-.8-.1-.8" fill="#83bf4f"/><path d="m27.5 34.6c0 0-.4.4-.6.7-.3-.5-1-1.1-1-1.1s0 .9.3 1.4c-.4 0-.8 0-.8 0s.2.5.6.7c.4.2 1.2 0 1.2 0s.6-.5.7-.9c-.1-.3-.4-.8-.4-.8" fill="#699635"/><path d="m28.1 35.8c0 0-.3.4-.4.8-.4-.4-1.2-.8-1.2-.8s.2.9.6 1.3c-.4.1-.8.3-.8.3s.3.5.7.5c.4 0 1.1-.3 1.1-.3s.4-.7.4-1.1c.1-.3-.4-.7-.4-.7" fill="#83bf4f"/><path d="m29.1 36.8c0 0-.1.5-.1.9-.5-.3-1.4-.4-1.4-.4s.5.8.9 1.1c-.3.2-.7.5-.7.5s.4.4.8.3 1-.6 1-.6.2-.8.1-1.1c-.1-.4-.6-.7-.6-.7" fill="#699635"/><path d="m30.2 37.5c0 0 0 .5.1.9-.6-.2-1.5 0-1.5 0s.6.6 1.2.8c-.3.2-.6.6-.6.6s.5.2.9.1c.4-.2.8-.8.8-.8s0-.8-.2-1.1c-.1-.4-.7-.5-.7-.5" fill="#83bf4f"/><path d="m35.6 29.5c0 0 .5-.1.9-.1-.3-.5-.4-1.4-.4-1.4s.8.5 1.1.9c.2-.3.5-.7.5-.7s.3.4.3.8c-.1.4-.6 1-.6 1s-.8.2-1.2.1c-.3-.1-.6-.6-.6-.6" fill="#699635"/><path d="m36.4 30.7c0 0 .5 0 .9.1-.2-.5 0-1.4 0-1.4s.6.6.8 1.2c.3-.3.6-.6.6-.6s.2.5.1.9c-.2.4-.8.8-.8.8s-.8 0-1.1-.2c-.4-.3-.5-.8-.5-.8" fill="#83bf4f"/><path d="m36.8 32c0 0 .5.1.8.3 0-.6.3-1.4.3-1.4s.4.8.5 1.4c.3-.2.8-.4.8-.4s.1.5-.1.9c-.3.3-1 .6-1 .6s-.8-.2-1.1-.5c-.3-.4-.2-.9-.2-.9" fill="#699635"/><path d="m36.8 33.3c0 0 .5.3.7.5.1-.6.7-1.3.7-1.3s.2.9.1 1.4c.4-.1.8-.2.8-.2s0 .6-.4.8c-.3.2-1.1.3-1.1.3s-.7-.4-.9-.7c-.1-.3.1-.8.1-.8" fill="#83bf4f"/><path d="m36.5 34.6c0 0 .4.4.6.7.3-.5 1-1.1 1-1.1s0 .9-.3 1.4c.4 0 .8 0 .8 0s-.2.5-.6.7c-.4.2-1.2 0-1.2 0s-.6-.5-.7-.9c.1-.3.4-.8.4-.8" fill="#699635"/><path d="m35.9 35.8c0 0 .3.4.4.8.4-.4 1.2-.8 1.2-.8s-.2.9-.6 1.3c.4.1.8.3.8.3s-.3.5-.7.5c-.4 0-1.1-.3-1.1-.3s-.4-.7-.4-1.1c-.1-.3.4-.7.4-.7" fill="#83bf4f"/><path d="m34.9 36.8c0 0 .1.5.1.9.5-.3 1.4-.4 1.4-.4s-.5.8-.9 1.1c.3.2.7.5.7.5s-.4.4-.8.3-1-.6-1-.6-.2-.8-.1-1.1c.1-.4.6-.7.6-.7" fill="#699635"/><path d="m33.8 37.5c0 0 0 .5-.1.9.6-.2 1.5 0 1.5 0s-.6.6-1.2.8c.3.2.6.6.6.6s-.5.2-.9.1c-.4-.2-.8-.8-.8-.8s0-.8.2-1.1.7-.5.7-.5" fill="#83bf4f"/><path d="m38 36h-12l6-10 6 10m-10.2-1.1h8.3l-4.1-6.9-4.2 6.9" fill="#ffce31"/><path fill="#3e4347" d="m32.5 30.2l-.5.8-.5-.8v-2.4l.5-.8.5.8z"/><circle cx="32" cy="31" r="2" fill="#c94747"/><path d="m32 29.5c-.8 0-1.5.7-1.5 1.5h3c0-.9-.7-1.5-1.5-1.5" fill="#ffc7ce"/><path d="m41.7 32.4c0-5.4-4.4-9.7-9.7-9.7s-9.7 4.4-9.7 9.7c0 3.8 2.2 7.1 5.5 8.7l.7-1.2c-2.8-1.3-4.8-4.2-4.8-7.5 0-4.6 3.7-8.3 8.3-8.3s8.3 3.7 8.3 8.3c0 3.4-2 6.3-4.9 7.6l.5 1.3c3.4-1.5 5.8-4.9 5.8-8.9" fill="#fc0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1fd.svg b/riot/emojione/svg/1f1f8-1f1fd.svg new file mode 100644 index 0000000..b0cd97a --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m10.8 10.8v21.2h51.2c0-16.6-13.4-30-30-30-8.3 0-15.8 3.4-21.2 8.8" fill="#ed4c5c"/><path d="m10.8 32v21.2c5.4 5.4 12.9 8.8 21.2 8.8 16.6 0 30-13.4 30-30h-51.2" fill="#428bc1"/><path d="M10.8,10.8C5.4,16.2,2,23.7,2,32s3.4,15.8,8.8,21.2L32,32L10.8,10.8z" fill="#f9f9f9"/><path d="m18.5 25.5v-.4c0 0-.2-.3 0-.7 0 0-.5-.3-.4-.7 0 0-.4-.1-.4-.6 0 0-.5 0-.5-.4 0 0-.5.1-.7-.3 0 0-.5.1-.6-.2 0 0-.5.2-.7-.2 0 0-.5.2-.7-.2-.2.4-.7.2-.7.2-.3.4-.7.2-.7.2-.1.3-.6.2-.6.2-.2.4-.7.3-.7.3 0 .4-.5.4-.5.4 0 .5-.4.6-.4.6.1.4-.4.7-.4.7.2.3 0 .7 0 .7v.3l8 .1" fill="#ff0"/><path d="m18.5 25.5v-.4c0 0-.2-.3 0-.7 0 0-.5-.3-.4-.7 0 0-.4-.1-.4-.6 0 0-.5 0-.5-.4 0 0-.5.1-.7-.3 0 0-.5.1-.6-.2 0 0-.5.2-.7-.2 0 0-.5.2-.7-.2-.2.4-.7.2-.7.2-.3.4-.7.2-.7.2-.1.3-.6.2-.6.2-.2.4-.7.3-.7.3 0 .4-.5.4-.5.4 0 .5-.4.6-.4.6.1.4-.4.7-.4.7.2.3 0 .7 0 .7v.3l8 .1" fill="#ffce31"/><path d="m18.3 25.1c-1.3-.1-2.7-.4-3.8.2-.8-.4-1.8-.4-2.7-.3-.5.1-1.1.1-1.6.2h-.1c-.9.1-1.7-.2-2.5-.6.2 1.4.5 2.9.6 4.4.3 2.2-1.1 4.1-.5 6.3.3 1.1 1.5 1.7 2.6 1.8 1 .1 2.1.2 3 .4.2 0 .4.1.5.2.3.1.5.3.6.4.6-.6 1.4-.8 2.2-.9 1.5-.2 3.3-.1 4.3-1.4v-.1c.5-.8.4-1.9.2-2.7 0-.3-.1-.6-.1-.8-.9-2.4-.1-5.1.3-7.6-.5.3-1 .4-1.6.5-.4.1-.9 0-1.3 0h-.1m1.9 6.9" fill="#ed4c5c"/><path d="m20.2 32c0 .2.1.3.1.4.2 1.1.3 2.5-.7 3.1-1.2.8-2.8.4-4.2.8-.3.1-.7.3-.9.5-.1-.1-.3-.2-.4-.3-1.1-.6-2.6-.4-3.9-.7-.6-.2-1.3-.7-1.5-1.4-.4-1.7.6-3.2.5-5-.1-1.3-.3-2.6-.6-3.8 1 .5 2.2.5 3.3.3.8-.1 1.8-.1 2.6.2.4-.2.9-.3 1.4-.3.9.1 1.8.2 2.8.2.6 0 1.2-.2 1.7-.4-.4 2.2-1 4.3-.2 6.4" fill="#428bc1"/><g fill="#fff"><path d="m19.2 34.9h-.7v-2.1h.1v-.4h-.4v-2h.2l-2.9-1.9v-1h.3l-1.5-1.1-1.3 1.2h.3v1l-2.9 1.9h.2v1.9h-.4v.4h.2v2.1h-.6v.6h9.5l-.1-.6"/><path d="m18.4 26.4c.3 0 .3 1.1.3 1.7.2.1.8.4 1 .7h-2.7c.2-.3.8-.6 1-.7 0-.6.1-1.7.4-1.7"/></g><path d="m24.3 32.6h-.5c0-.5-.2-1-.4-1.6l-1.4.4.4 2.2.4.1c-.2 1.7-1.1 4.4-5.2 4.6v.2c-.8.3-2.1.5-3.3.5-1.1 0-2.6-.2-3.3-.5v-.2c-4.1-.2-5-2.9-5.2-4.6l.4-.1.4-2.2-1.2-.4c-.2.6-.3 1.2-.4 1.6h-.5c-.2 1.8.1 6.4 4.8 7.2v.5c1.3.7 4.4.9 5.1.9.7 0 3.7-.2 5-.9v-.5c4.8-.8 5.2-5.3 4.9-7.2" fill="#ffce31"/><path d="m9.6 23.9c.1-.3 1.1-.9 4.2-.6 0 0 .5.3.9.3.2 0-.1 0-.3-.2-.2-.2-.3-.6.3-.6.5 0 2.6.1 2.6.3 0 .2-1.1.3-1.5.3-.4 0-.4.2 0 .2 1.3 0 2.7-.5 4.2.6.2.1-.4.1-.9-.1 0 0-1.3.1-1.9 0 0 0-.4.4-1 .3.1.2-.2.9-2 .4-.3.1-1.4.3-1.3 0-.3 0-.8.1-.9-.1-.1-.2.9-.4 1-.6 0 0-2 0-2.4-.1.1-.2-1.1.1-1-.1" fill="#bc715f"/><path fill="#699635" d="m10.2 26.7l.2-.2 2 .2-.4.5.2.5-.1.3-.5-.2.1.2h-.2l-.1.2-.3-.2.1.2-.3.7-.2.1v-.5l-.3.5-.4-.5.2-.5-.3-.3-.6.1.2-.7-.7-.7 1.4.3"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1fe.svg b/riot/emojione/svg/1f1f8-1f1fe.svg new file mode 100644 index 0000000..62fbea4 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#3e4347"/><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ed4c5c"/><path d="M60.3,42c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10H60.3z" fill="#f9f9f9"/><g fill="#75a843"><path d="m21 35.2l4.3 2.8-1.6-4.6 4.3-2.9h-5.3l-1.7-4.5-1.6 4.5h-5.4l4.3 2.9-1.6 4.6z"/><path d="m43 35.2l4.3 2.8-1.6-4.6 4.3-2.9h-5.3l-1.7-4.5-1.6 4.5h-5.4l4.3 2.9-1.6 4.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8-1f1ff.svg b/riot/emojione/svg/1f1f8-1f1ff.svg new file mode 100644 index 0000000..deafce4 --- /dev/null +++ b/riot/emojione/svg/1f1f8-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M32,2C21.7,2,12.7,7.1,7.3,15h49.4C51.3,7.1,42.3,2,32,2z"/><path d="M32,62c10.3,0,19.3-5.1,24.7-13H7.3C12.7,56.9,21.7,62,32,62z"/></g><path d="m59 19h-54c-1.9 3.9-3 8.3-3 13s1.1 9.1 3 13h54c1.9-3.9 3-8.3 3-13s-1.1-9.1-3-13" fill="#c94747"/><g fill="#ffce31"><path d="m5 45c.7 1.4 1.5 2.7 2.3 4h49.4c.9-1.3 1.7-2.6 2.3-4h-54"/><path d="m59 19c-.7-1.4-1.5-2.7-2.3-4h-49.4c-.9 1.3-1.7 2.6-2.3 4h54"/><path d="m58.4 31.6h-52.8c-.3 0-.5.2-.5.4 0 .2.2.4.5.4h52.8c.3 0 .5-.2.5-.4 0-.2-.2-.4-.5-.4"/><path d="m12.4 28.5h38.8l1.8.6 2.7-.9-2.7-.9-1.8.6h-.6c0 0 0 0 0 0h-.3c0 0 0 0 0 0h-.3c0 0 0 0 0 0h-37.6c-.2 0-.3.1-.3.3s.2.3.3.3"/><path d="m9.9 30.2h37.6c0 0 0 0 0 0h.3c0 0 0 0 0 0h.3c0 0 0 0 0 0h.6l1.8.6 2.7-.9-2.7-.9-1.8.6h-38.8c-.2 0-.3.1-.3.3s.1.3.3.3"/></g><path d="m47.5 32c-3.2 2.9-7.4 8.8-15.8 8.8-7.4 0-4.9-8.8-4.9-8.8s-2.5-8.8 4.9-8.8c8.4 0 12.7 5.9 15.8 8.8" fill="#fff"/><path d="m30.6 26.3c.8.9.1 1.2 1 1.3.9.1.4.9 1.2 1 .6 0-.1 2.1.5 2.7.5.7 1 .2 1 .7 0 .5-1.5.5-1.5 2.1 0 .9-1.3 1-1.3 1.6-.1.6 2.4.9 2.3 1.4s-2.6.4-2.8 1c0 .4 3.7.9 4 2.3-.5.2-2.1.3-3.3.3-7.4 0-12.6-5.8-15.8-8.8 3.2-2.9 8.4-8.8 15.8-8.8 0 .1-2.2 2-1.1 3.2" fill="#3e4347"/><g fill="#fff"><path d="m21.8 28.9h.8v2.3h-.8z"/><path d="m21.8 32.8h.8v2.3h-.8z"/><path d="m23.3 28.9h.8v2.3h-.8z"/><path d="m23.3 32.8h.8v2.3h-.8z"/><path d="m24.9 28.9h.8v2.3h-.8z"/><path d="m24.9 32.8h.8v2.3h-.8z"/><path d="m26.4 28.9h.8v2.3h-.8z"/><path d="m26.4 32.8h.8v2.3h-.8z"/><path d="m27.9 28.9h.8v2.3h-.8z"/><path d="m27.9 32.8h.8v2.3h-.8z"/><path d="m29.5 28.9h.8v2.3h-.8z"/><path d="m29.5 32.8h.8v2.3h-.8z"/></g><g fill="#3e4347"><path d="m33.4 28.9h.8v2.3h-.8z"/><path d="m33.4 32.8h.8v2.3h-.8z"/><path d="m34.9 28.9h.8v2.3h-.8z"/><path d="m34.9 32.8h.8v2.3h-.8z"/><path d="m36.5 28.9h.8v2.3h-.8z"/><path d="m36.5 32.8h.8v2.3h-.8z"/><path d="m38 28.9h.8v2.3h-.8z"/><path d="m38 32.8h.8v2.3h-.8z"/><path d="m39.5 28.9h.8v2.3h-.8z"/><path d="m39.5 32.8h.8v2.3h-.8z"/><path d="m41.1 28.9h.8v2.3h-.8z"/><path d="m41.1 32.8h.8v2.3h-.8z"/></g><g fill="#428bc1"><path d="m29.2 25.8c-3.8-2.6-4.9 1.2-4.6 2.8.5-.5 2.8 1.6 4.2 1.8-1.1-.7 2.4-3.2.4-4.6"/><path d="m56.5 36.3c2.8-3.5-1.3-4.5-3.1-4.2.6.4-1.7 2.6-1.9 3.9.8-1.1 3.5 2.1 5 .3"/><path d="m9.2 31.8c-4.6.8-2.4 4.1-.8 5.1-.1-.7 3.2-.8 4.3-1.7-1.4.2-1.1-3.9-3.5-3.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f8.svg b/riot/emojione/svg/1f1f8.svg new file mode 100644 index 0000000..a39d201 --- /dev/null +++ b/riot/emojione/svg/1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m25.8 37.6c.2 1.3.6 2.3 1.1 3 1 1.2 2.7 1.8 5.2 1.8 1.5 0 2.6-.2 3.6-.5 1.7-.6 2.6-1.7 2.6-3.4 0-1-.4-1.7-1.3-2.2-.8-.5-2.2-1-4-1.4l-3.1-.7c-3.1-.7-5.2-1.4-6.4-2.2-2-1.3-2.9-3.4-2.9-6.3 0-2.6 1-4.8 2.9-6.5 1.9-1.7 4.7-2.6 8.4-2.6 3.1 0 5.7.8 7.9 2.4 2.2 1.6 3.3 4 3.4 7.1h-5.8c-.1-1.7-.9-3-2.3-3.7-1-.5-2.2-.7-3.6-.7-1.6 0-2.9.3-3.8.9s-1.4 1.5-1.4 2.6c0 1 .5 1.8 1.4 2.3.6.3 1.9.7 3.9 1.2l5.1 1.2c2.2.5 3.9 1.2 5 2.1 1.7 1.4 2.6 3.3 2.6 5.9 0 2.7-1 4.9-3.1 6.6-2 1.8-4.9 2.6-8.7 2.6-3.8 0-6.8-.9-9-2.6-2.4-1.5-3.5-3.9-3.5-6.9h5.8" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1e6.svg b/riot/emojione/svg/1f1f9-1f1e6.svg new file mode 100644 index 0000000..68e6e9c --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m12 12h21v21h-21z"/><path fill="#fff" d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#2a5f9e"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5" fill="#fff"/><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m48.3 24l-3.7 1.2.1-3.8.8-1.3 2.8 3.9m-6.8.5l2.9-2.9v3.6l-2.9-.7" fill="#bfe5e8"/><path d="m42.6 25.2c0 .6.2.7.2.7h5.4c0 0 .2-.5.2-.7-1.5.4-3.7.7-5.8 0" fill="#c7e8eb"/><path d="m49 26.2c0-.2.1-.3.1-.5.1-.3-.1-.4-.1-.7 0-.2 0-.3 0-.5-.2-.1-.4-.1-.6-.1-.2 0-.4-.1-.5.2.3 0 .6 0 .9 0-.6.5-1.7.5-2.4.6-.6 0-1.3.1-1.9 0-.3 0-.8-.1-1.1-.2-.2 0-.5-.1-.7-.2 0-.3 0-.3-.3-.3 0 .3-.2 1.5.4 1.3-.1-.2-.1-.6-.1-.8 1.2.4 3.4.8 6.1 0 0 .3-.1.6-.2.8 0 .1.2.2.4.4" fill="#00a3d6"/><path d="m44.6 20.9c0 0 0-.1 0 0-.2-.1-.2 0-.2 0l-.1 4.4h.2l.1-4.4" fill="#bc7e22"/><path d="m39.2 27.5c.8-.4 1.7-.2 2 .5.2 1-.3 1.8-1 2.5l.1.1c.4-.5.9-.9 1.8-.9-.1.3-.4 1.5-.5 1.7.1 0 .3 0 .4 0 .1.1.2.2.2.3-.4.1-.8 0-1.2-.1-.6-.3-1.1-.4-1.5.2-.2-.4-.3-.7-.2-1.1.2-.5.4-.9.5-1.4.4-1.2 0-1.7-.6-1.8m0 3.5c-.1.4 0 .9.1 1.3-.5-.1-1-.1-1.4.1 0-.4.2-.6.4-.8-.8-.2-1.4.1-1.7.9.1-.5.2-1 .2-1.5.6-.5 1.5-.4 2.4 0" fill="#00a3d6"/><g fill="#9ec1ff"><path d="m35.4 28.8c.1.3.4.6.9.9.3.3.5.3.7.3.7-.2 1.1-.6 1.5-1 .2-.3.4-.6.5-.8 0-.1.2-.1.1.1-.2.2-.3.5-.4.8-.1.3-.2.6 0 .9 0-.2.3-.4.5-.5.2-.2.4-.4.4-.7 0-.4 0-.7.3-.8-.1-.4-.3-.5-.7-.6-.3-.3-.7-.4-1.2-.4-.5 0-1 .3-1.5.1.1.4.4.8 1.6.9-.4.4-.9.8-1.8 1.1-.4 0-.7-.1-.9-.3"/><path d="m39.2 31.1c.1 1 1.8 1.7 2.7.9-1.5.1-1.4-.2-2.1-.4.2-.2.5-.3 1.2.1.3.1.7.1 1 .1l.1-.1c0-.2-.1-.2-.2-.3h.4c.3.5.6 1.1 1 1.6-.6.8-1.3 1.3-1.9 1.5 0-.5.2-.9.4-1.2-1.8.6-3-1-2.6-2.2"/><path d="m36.9 32c.1.5.5.8 1.1.8-.3.8-1.5.5-1.4-.2.1-.2.2-.5.3-.6"/></g><g fill="#00a3d6"><path d="m50.6 28.1c.3-1 1.1-1.1 2-.9.3-.1.6-.3 1.2-.2.4.1.8.1 1.2 0-.3.5-.8.8-1.7.8.6.5 1.2.9 1.9.9.1.3-.1.6-.4.9-.6 0-1.2-.3-1.7-1 .1.4.1.7 0 1.1-.3-.3-.7-.5-.8-.8-.2-.2-.2-.6-.2-1-.1-.8-1.3-.4-1.5.2"/><path d="m46.8 30c.4-.3.7-.6.9-.9h.1.2.1c.2.1.4.2.6.3.1.2.2.4.5.6.3.4.6.7 1.4.6-.2.1-.4.2-.5.3l-.2-.1.1.2v.1c.8.3 1.6.6 2.3.1.1.7-.2 1.2-.7 1.4-1.1.2-2.1-.5-2.5-1.5.1.5 0 1-.2 1.6-.4-.4-.7-.9-.7-1.9-.1.5-.3.9-.5 1.3-.4-.8-.4-1.5-.1-2.1-.4.1-.6.1-.8 0"/></g><path d="m49 29.8c.3.2.7 0 1.2.1-.2-.2-.4-.4-.4-.6.4-.1.8 0 1.2.3-.4-.5-.6-1.1-.4-1.5.3-.5.7-.8 1.3-.6-.2.3-.2.8-.1 1.2.1.6.4 1.2.6 1.8.4-.2.8-.4 1.2-.5.3-.1.5 0 .8.2.3.4.4.8.2 1.3-.2-.5-.7-.5-1.2-.4.3.2.4.4.3.8-.4-.2-.8-.2-1.1-.1 0 0-.4-.8-1-.9-.3 0-.6.2-.9.3-.3.1-.5 0-.7-.1.1-.3.4-.4.6-.5-.9.2-1.4-.1-1.6-.8m5.7-1.7c.2.2.5.4.5.7.1.3-.1.6-.5.9.3 0 .5-.2.8-.5.2-.2.3-.4.5-.6 0-.8-.9-.9-1.3-.5" fill="#9ec1ff"/><g fill="#d8a322"><path d="m45.1 26.9c0-.5 0-1 .1-1-.9-.8-1.8 0-1.8 0l.4 2.1c0 0-.8-1.3-.4-2.1 0 0-2.1-.5-2.5 1-.1.5.9 1.8.9 1.8 1.6-.9 3.4-.9 3.4-.9 0 .1-.1-.3-.1-.9"/><path d="m49.5 27c-.5-1.5-2.5-1-2.5-1 .4.8-.4 2.1-.4 2.1l.4-2.1c0 0-.9-.8-1.8 0 .1 0 .1.4.1 1 0 .5 0 1-.1 1 0 0 1.8-.1 3.4.9.1-.1 1.1-1.4.9-1.9"/></g><path d="m45.7 50c1 0 2-.2 2.9-.7.4-.2.9-.5 1.3-.8.1-.1.4-.4.6-.4.1 0 .5.3.6.3.7.2 1.5.1 1.7-.7.1-.3-.1-.7 0-1.1 0-.1.2-.2.2-.3.1-.2.1-.1 0-.3l-.1-.2c-.4-.4-1-.4-1.6-.2-.1 0-.3.2-.4.2-.1 0-.4-.2-.5-.3-.3-.1-.6-.2-1-.1-.6.1-1 .6-1.5 1-.4.3-1.1.5-.7 1.1.3.5 1.1 0 1.5-.1-1.8 1.3-4.1 1.2-5.9 0 .2 0 .4.1.6.1.2 0 .4.3.6.2.6-.1.5-.8.1-1-.5-.3-.8-.7-1.3-1-.7-.4-1.2-.2-2 .1-.2.1-.2.1-.4 0-.1-.1-.3-.1-.5-.2-.3-.1-.6-.1-.8 0-.2.1-.5.3-.6.5-.1.2 0 .2.2.4.1.1.1.2.1.4 0 .7-.1 1.5.9 1.6.4 0 .8-.1 1.2-.3.3-.2.3-.1.6.1.2.2.4.3.6.5 1 .7 2.3 1.2 3.6 1.2" fill="#fff"/><path d="m40.7 34.7h9.9v5.9c0 4.1-1.5 5.5-5 6.4-3.6-1-4.9-2.4-4.9-6.5 0 0 0-5.8 0-5.8" fill="#007dd4"/><path d="m41 34.9h9.5v5.6c0 3.9-1.4 5.2-4.8 6.1-3.4-.9-4.7-2.3-4.7-6.1v-5.6" fill="#1799f8"/><g fill="#fff"><path d="m50.4 40.5c0 3.9-1.4 5.2-4.8 6.1-3.4-.9-4.7-2.3-4.7-6.1h9.5"/><path d="m47.5 40.5l-1.8-3.4-1.9 3.4z"/></g><path fill="#1799f8" d="m43.8 40.5l1.9 3.5 1.8-3.5"/><g fill="#fff"><path d="m49.3 38.6c-.1-.1-.5-.5-1-.5 0 0 0-.1-.2-.1-.4-.1-.2-.4-.1-.6.1-.2.1-.5-.4-.8s-.9-.2-1.3-.6c-.1.3.7.6.6.7-.1.2.6.9 0 .7-.1-.1-.5-.1-.8 0 .5.1.8.9 1.7 1.1 0 .1.1.3.2.3 0 0 .4.1.6.6.1-.3-.2-.6-.3-.7 0 0 .4-.1.5.2.2.6.9 1.2 1.2 1.3-.3-.6-.5-1.2-.7-1.6"/><path d="m42.1 38.6c.1-.1.5-.5 1-.5 0 0 0-.1.2-.1.4-.1.2-.4.1-.6-.1-.2-.1-.5.4-.8.5-.3.9-.2 1.3-.6.1.3-.7.6-.6.7.1.2-.6.9 0 .7.1-.1.5-.1.8 0-.5.1-.8.9-1.7 1.1 0 .1-.1.3-.2.3 0 0-.4.1-.6.6-.1-.3.2-.6.3-.7 0 0-.4-.1-.5.2-.2.6-.9 1.2-1.2 1.3.3-.6.5-1.2.7-1.6"/></g><g fill="#1799f8"><path d="m42.1 42.6c.1.1.5.5 1 .5 0 0 0 .1.2.1.4.1.2.4.1.6-.1.2-.1.5.4.8.5.3.9.2 1.3.6.1-.3-.7-.6-.6-.7.1-.2-.6-.9 0-.7.1.1.5.1.8 0-.5-.1-.8-.9-1.7-1.1 0-.1-.1-.3-.2-.3 0 0-.4-.1-.6-.6-.1.3.2.6.3.7 0 0-.4.1-.5-.2-.2-.6-.9-1.2-1.2-1.3.3.6.5 1.2.7 1.6"/><path d="m49.3 42.6c-.1.1-.5.5-1 .5 0 0 0 .1-.2.1-.4.1-.2.4-.1.6.1.2.1.5-.4.8s-.9.2-1.3.6c-.1-.3.7-.6.6-.7-.1-.2.6-.9 0-.7-.1.1-.5.1-.8 0 .5-.1.8-.9 1.7-1.1 0-.1.1-.3.2-.3 0 0 .4-.1.6-.6.1.3-.2.6-.3.7 0 0 .4.1.5-.2.2-.6.9-1.2 1.2-1.3-.3.6-.5 1.2-.7 1.6"/></g><g fill="#d8a322"><path d="m50.4 39.5c-.4-.4.8-2.2 1-2 .3.3.7 1 .9 1.3.4.5-1-1-1.3-.5-.1.1-1.4 2.9.1 3.6-.7-1.9.2-3.9 1.5-1.9.4.6-.3.2-.5 0-1-.8-1 1.8-.1 2.7-.8-3 .4-2.1 1.5-1.1.6.5-1.3 2.7-1.3 2.6-.2-.3-.6-1-1-1-.5 0-1 1.1-.8 1.7.3.7 1.5.7 2.1.6 4.3-1.4 4.8-7.9 3.6-10.1-.2-.3.9-1.1 1.1-.8 2.3 2.9.1 9.3-.2 9.7 3.2-4.6 2.6-10.9-1-10.6-.7 0-2.1.4-3 2.3 0 0 .1-1.5-.9-1.3-.8.2-2.2.9-1.8 1.6.1-.2 1.4-1.1 1.8-1.2.3 0 .3 1.7.1 1.2-.1-.3-.5-.8-.8-.5-.3.2-1.9 1.4-1.1 2.2-.1-.8.9-1.6 1.2-1.8.3-.2 1.1 1.5 1 1.8-.1 0-1-1.3-1.4-1.1-.2.1-1.3 1.9-.7 2.6"/><path d="m41 39.5c.4-.4-.8-2.2-1-2-.3.3-.7 1-.9 1.3-.4.5 1-1 1.3-.5.1.1 1.4 2.9-.1 3.6.7-1.9-.2-3.9-1.5-1.9-.4.6.3.2.5 0 1-.8 1 1.8.1 2.7.8-3-.4-2.1-1.5-1.1-.6.5 1.3 2.7 1.3 2.6.2-.3.6-1 1-1 .5 0 1 1.1.8 1.7-.3.7-1.5.7-2.1.6-4.3-1.4-4.8-7.9-3.6-10.1.2-.3-.9-1.1-1.1-.8-2.3 2.9-.1 9.3.2 9.7-3.2-4.6-2.6-10.9 1-10.6.7 0 2.1.4 3 2.3 0 0-.1-1.5.9-1.3.8.2 2.2.9 1.8 1.6-.1-.2-1.4-1.1-1.8-1.2-.3 0-.3 1.7-.1 1.2.1-.3.5-.8.8-.5.3.2 1.9 1.4 1.1 2.2.1-.8-.9-1.6-1.2-1.8-.3-.2-1.1 1.5-1 1.8.1 0 1-1.3 1.4-1.1.2.1 1.3 1.9.7 2.6"/></g><path d="m47.8 33.6c.2.3.3.6.2 1h-.4c.2-.5.1-.9-.6-1-1-.1-2.1 1.8-3.8 2-.5-.6-.5-1.7.2-2.2-.3-.9-1-2-1.5-2.4-.3 0-.6 0-.9 0 .2-.5 1-1.1 1.5-1.3.1-.1.2-.3.3-.4.1-.7 3.5-.4 4.3.1 0 .8.4 3.5.7 4.2" fill="#8ca8c2"/><path d="m42.5 29.7c1.8-.8 3.9-.8 5.7 0 .1-.2.3-.5.4-.7-2.1-.9-4.5-.9-6.5 0 .1.3.2.5.4.7" fill="#d8a322"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1e8.svg b/riot/emojione/svg/1f1f9-1f1e8.svg new file mode 100644 index 0000000..ba12e33 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="M32,2v30H2c0,16.6,13.4,30,30,30c16.6,0,30-13.4,30-30S48.6,2,32,2z"/><path d="m12 12h21v21h-21z"/></g><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m58 26.5v9.3c0 7.6-3 14.6-11.9 18.8-8.9-4.2-11.9-11.2-11.9-18.8v-9.3h23.8" fill="#fff"/><path d="m57.2 27.4v8.6c0 7.1-2.8 13.6-11.1 17.5-8.3-3.9-11.1-10.4-11.1-17.5v-8.6h22.2" fill="#ffce31"/><path d="m41 31.2c-.5-.4-.4 0-.6-.6-.2-.4-.6-.5-.9-.7-.2-.1-1.2-1.5-1.5-1.4-.3.1-.4 1-.4 1.1-.2.6.1.5.2.9-.3 0 .1.4.2.4-.1.1-.1.2 0 .3-.6 0-1.1.6-1.5.9.3 0 .4-.2.7-.2.3 0 .5.3.8.2-.2.2-.5.4-.5.7-.1.6-.8.6-1 1.2.4.9 1.3 1 2.1 1.5.6.4 1 .8 1.4 1.4.4.7 1.3 1.7 2 .6.4-.7.2-2.2.2-3-.1-.8-.2-2.7-1.2-3.3" fill="#ff9e3d"/><path d="m41.7 29.1c-.8.9-.7 1.4-.7 2.5 0 1.1-.9 1.2-1.2 2.1-.3 1 1 1.6 1.2 2.5.1.5.1 1 .4 1.4.2.3 1.1.2 1.4 0 .3-.2.1-.7.3-1 .2-.4.7-.3.9-.6.5-.7.5-2 .1-2.7-.2-.4.1-.9-.4-1.2-.4-.3-.2-.7-.6-1-.7-.6-.4-1.6-1.4-2" fill="#ff927f"/><path d="m41.8 37.8c.9-.2.8-1.7.7-2.3s-.5-1.5-.2-2.2c.4-1-.5-1.9-.2-2.3.2-.4.2-.6.2-.7 0-.1-.2-.2-.2 0 0 .3-.1.3-.2.5s-.1.5 0 .9c.1.4.4 1 0 1.7-.4.8-.2 1.1-.1 1.5 0 .6.6 2.6 0 2.9" fill="#ff9ee1"/><g fill="#ff9e3d"><path d="m37.8 29.4c.1 0 .3 0 .3.1"/><path d="m37.6 30.1c.1-.1.3 0 .5-.1"/><path d="m37.8 30.6c.2 0 .4 0 .6-.2"/><path d="m38 31.1c.1 0 .4-.1.5-.3"/><path d="m38.1 31.4c.3 0 .7.1.7 0"/><path d="m38.1 32.3c.2-.2.7-.3.8-.5"/><path d="m38.6 29.3c.3.1.2.3.4.4.3.2 0 .5.3.5.2.1.2.1.2.4-.1.3.2.3.1.5"/><path d="m40.4 31c-.1 0-.5 0-.7.4"/><path d="m37.6 34.9c.2 0 .2-.1.3-.1 0-.1.1-.2.2-.2.1 0 .4 0 .4-.2s.2 0 .4-.3c.1-.3.2-.6.6-.7"/></g><path d="m48.1 40.7c.2.2 0 .5.2.6.3.1 0 .5.4.6.3.1 0 .5.3.7.3.2-.1.5.4.7s-.1.7.2.8-.1.6.3.8c.4.2-.2.5.2.8.3.3-.1.6.3.9s-.2.5.1.9c.3.3-.1.5.1.9.1.3-.1 1.3-.8 1.2-.3.4-1.2.8-1.6.7-.4.3-1.5.6-2.1.1-.6.6-1.7.2-2.1-.1-.4.1-1.3-.3-1.6-.7-.7.1-1-.9-.8-1.2.2-.4-.2-.6.1-.9.3-.3-.2-.6.1-.9s-.1-.6.3-.9c.3-.3-.2-.6.2-.8.4-.2-.1-.6.3-.8.3-.2-.2-.6.2-.8s.1-.6.4-.7c.3-.2 0-.5.3-.7.4-.1.1-.5.4-.6.3-.1.1-.3.3-.6.6.3 3 .5 3.9 0" fill="#699635"/><path d="m48.2 40.5c0 0-.1-.1-.2-.1-.1-2.4-.5-3.3-1.9-3.3s-1.8.9-1.9 3.3c-.1 0-.1 0-.2.1-.2.2-.2.4.4.6.4.2 1.1.3 1.7.3.6 0 1.2-.1 1.7-.3.5-.2.5-.3.4-.6" fill="#ed4c5c"/><path d="m54.6 33.4v-.7l2.2-.2-2.2-.2v-.3l-.1-.6 2.2-.4-2.3.1-.3-.6 1.6-1.3-1.9 1-.8-.4-.8-1.2.1-.4-.8 1.8v.6l.1.4-.1-.6v-.6l-.8-1.8.1.4-.8 1.2-.8.4-1.9-1 1.6 1.3-.3.6-2.2.1 2.2.4-.1.6v.3l-2.2.2 2.2.2v.7l-2 .8 2-.5.2 4.3-.5 2.8.8-2.6-.1-4.5 1.1.3.2.5.1.6.2.5v.1l.1.6.1.6.1.5.2.2-.9.9-.1.8.6-.2.1.7.3-.1.2.3.4-.8.4.8.2-.3.3.1.1-.7.6.2-.1-.7-.9-.9.2-.2.1-.5.1-.6.1-.6v-.1l.2-.5.1-.6.2-.5 1.1-.3-.1 4.5.8 2.6-.6-2.9.2-4.3 2 .5-2-.8m-3.5-2.5l-.7-.8.7.5v.3m-.2.3l-.1.1-1.2-.9.6-.2.7 1m0-2.6l.4 1.3v.2l-.9-.3.5-1.2m-1.6 2.1l1.2.9-.1.2-1.1-.5-.2-.1.2-.5m-.4 1.3l.1-.5 1.2.6v.3l-.1.3-.8-.3-.4-.1v-.3m0 1.4v-.6l1.2.4v.5l-1-.2-.2-.1m3.5-2.1l-.1-.1.8-1 .6.2-1.3.9m-.3-.4v-.2l.7-.5-.7.7m.8.9l-.1-.2 1.2-.9.2.5h-.2l-1.1.6m-.5-3.2l.5 1.1-.9.4v-.2l.4-1.3m.6 3.5l1.2-.6.1.5v.3l-.3.1-.8.3-.2-.3v-.3m1.2 1.3l-1 .2v-.5l1.2-.4v.6l-.2.1" fill="#b95a1e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1e9.svg b/riot/emojione/svg/1f1f9-1f1e9.svg new file mode 100644 index 0000000..3976073 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#2a5f9e"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1eb.svg b/riot/emojione/svg/1f1f9-1f1eb.svg new file mode 100644 index 0000000..f374f23 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1eb.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M39.1,2.9v24.7H2.3C2.1,29,2,30.5,2,32c0,16.6,13.4,30,30,30c16.6,0,30-13.4,30-30C62,17.9,52.2,6.1,39.1,2.9z + " fill="#2a5f9e"/><path d="m39.1 2.9c-.2-.1-.4-.1-.6-.1v24.2h-12.9v-24.3c-4.8 1-9.2 3.3-12.9 6.3v18h-10.3c0 .2-.1.4-.1.6h36.8c0 0 0-24.7 0-24.7" fill="#fff"/><path d="M2.4,27h10.3V9C7.4,13.5,3.6,19.8,2.4,27z" fill="#2a5f9e"/><path d="m25.6 2.7v24.3h12.9v-24.3c-2.1-.5-4.3-.7-6.5-.7-2.2 0-4.3.2-6.4.7" fill="#ed4c5c"/><g fill="#fff"><path d="m42.8 43.8v-4.7h1.9l1.4-2.3h-3.4v-1.5h4.3l1.5-2.4h-14.2l1.5 2.4h4.3v8.4l-3.2-5.1-4.4 6.9h2.1l.4-.8h3.6l2.8 5 2.8-5h3.6l.4.8h2.1l-4.4-6.9-3.1 5.2m-6.8-.6l.9-1.6.9 1.6h-1.8m9.2 0l.9-1.6.9 1.6h-1.8"/><path d="m42 53.2l-.5-1.7-.6 1.7h-1.8l1.5 1.1-.6 1.7 1.5-1.1 1.4 1.1-.5-1.7 1.4-1.1z"/><path d="m36.7 49.2l-.5-1.7-.6 1.7h-1.8l1.5 1.1-.6 1.7 1.5-1.1 1.4 1.1-.5-1.7 1.4-1.1z"/><path d="m47.3 49.2l-.5-1.7-.6 1.7h-1.8l1.5 1.1-.6 1.7 1.5-1.1 1.4 1.1-.5-1.7 1.4-1.1z"/><path d="m31.7 39l1.5 1.1-.6-1.7 1.5-1.1h-1.8l-.6-1.7-.5 1.7h-1.8l1.4 1.1-.5 1.7z"/><path d="m52.2 38.4l1.4-1.1h-1.8l-.5-1.7-.6 1.7h-1.8l1.5 1.1-.6 1.7 1.5-1.1 1.4 1.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1ec.svg b/riot/emojione/svg/1f1f9-1f1ec.svg new file mode 100644 index 0000000..1c9e70f --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8 50h48c2.6-3.5 4.5-7.6 5.4-12h-58.8c.9 4.4 2.8 8.5 5.4 12" fill="#ffce31"/><path d="m56 50h-48c5.5 7.3 14.2 12 24 12s18.5-4.7 24-12" fill="#83bf4f"/><path d="M2,32c0,2.1,0.2,4.1,0.6,6H32V2C15.4,2,2,15.4,2,32z" fill="#ed4c5c"/><path d="M32,2v12h24C50.5,6.7,41.8,2,32,2z" fill="#83bf4f"/><path d="m56 14h-24v12h29.4c-.9-4.4-2.8-8.5-5.4-12" fill="#ffce31"/><path d="m61.4 26h-29.4v12h29.4c.4-1.9.6-3.9.6-6s-.2-4.1-.6-6" fill="#83bf4f"/><path fill="#fff" d="m18 27.3l6.8 4.7-2.6-7.6 6.8-4.8h-8.4l-2.6-7.6-2.6 7.6h-8.4l6.8 4.8-2.6 7.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1ed.svg b/riot/emojione/svg/1f1f9-1f1ed.svg new file mode 100644 index 0000000..d5a54a4 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="M52.4,10C47,5,39.9,2,32,2s-15,3-20.4,8H52.4z"/><path d="m11.6 54c5.4 5 12.5 8 20.4 8s15-3 20.4-8h-40.8"/></g><path d="m2 32c0 4.3.9 8.3 2.5 12h55c1.6-3.7 2.5-7.7 2.5-12s-.9-8.3-2.5-12h-55c-1.6 3.7-2.5 7.7-2.5 12" fill="#2a5f9e"/><g fill="#f9f9f9"><path d="m11.6 54h40.7c3-2.8 5.5-6.2 7.1-10h-55c1.8 3.8 4.2 7.2 7.2 10"/><path d="m52.4 10h-40.8c-3 2.8-5.5 6.2-7.1 10h55c-1.7-3.8-4.1-7.2-7.1-10"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1ef.svg b/riot/emojione/svg/1f1f9-1f1ef.svg new file mode 100644 index 0000000..a7d29de --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,5.9,1.7,11.4,4.6,16h50.7c2.9-4.6,4.6-10.1,4.6-16s-1.7-11.4-4.6-16H6.6C3.7,20.6,2,26.1,2,32z" fill="#f9f9f9"/><path d="M57.4,16C52.1,7.6,42.7,2,32,2S11.9,7.6,6.6,16H57.4z" fill="#c94747"/><path d="M6.6,48c5.3,8.4,14.7,14,25.4,14s20.1-5.6,25.4-14H6.6z" fill="#699635"/><g fill="#ffce31"><path d="m38.3 36.4c-.6.5-1.3.8-2.1.9-1.9.2-3.6-1.2-3.8-3v-2.6c0-.6.5-1.1 1.2-1.1.4 0 .8.2 1 .5.5-1.4-.3-2.8-1.7-3.3-1.4-.5-2.9.3-3.4 1.7-.2.5-.2 1.1 0 1.6.3-.5 1-.7 1.6-.4.3.2.6.5.6.9v2.6c-.2 1.8-1.9 3.2-3.8 3-.8-.1-1.5-.4-2.1-.9-.7 1.8-2.8 2.7-4.7 1.9-.3-.1-.5-.2-.8-.4.3 3.2 5.3 2.6 5.7-.6 1.6 2.7 5 1.9 6-1.4 1 3.3 4.5 4 6 1.4.4 3.1 5.4 3.8 5.7.6-.2.2-.5.3-.8.4-1.8.9-3.9 0-4.6-1.8m-8.3-6.5c.1-.8.8-1.5 1.7-1.6 1.1-.1 2.1.6 2.2 1.6-.8-.2-1.6.2-2 .8-.3-.6-1.1-.9-1.9-.8"/><path d="m28.2 40c0 0-.4-.2-1.1-.1-.1-.5-.5-.9-.8-1-.3.3-.5.9-.4 1.3-.5.1-1 .4-1 .4 1.2 1.1 2.6.8 3.3-.6"/><path d="m33.7 39.8c0 0-.3-.3-1.1-.3 0-.5-.4-.9-.6-1.2-.3.3-.6.8-.6 1.2-.5 0-1.1.3-1.1.3 1 1.4 2.5 1.3 3.4 0"/><path d="m37.7 38.8c-.4.2-.7.7-.8 1.1-.5-.1-1.1.1-1.1.1.8 1.5 2.2 1.7 3.3.5 0 0-.3-.3-1-.4.1-.5-.2-1-.4-1.3"/><path d="m22.9 42.4l.5 1.6c5.7-1.6 11.6-1.6 17.3 0l.5-1.6c-6-1.7-12.4-1.7-18.3 0"/><path d="m31.2 22.5l-.5 1.5 1.3-1 1.3 1-.5-1.5 1.4-1h-1.7l-.5-1.5-.5 1.5h-1.7z"/><path d="m24.8 24.1l-.6 1.5 1.4-.9 1.3.9-.5-1.5 1.4-.9h-1.7l-.5-1.5-.5 1.5h-1.7z"/><path d="m20.1 28.6l-.6 1.6 1.4-1 1.3 1-.5-1.6 1.4-.9h-1.7l-.5-1.5-.5 1.5h-1.7z"/><path d="m19.2 35.4l1.3.9-.5-1.5 1.4-.9h-1.7l-.5-1.5-.5 1.5h-1.7l1.3.9-.5 1.5z"/><path d="m37.6 24.1l-.5 1.5 1.3-.9 1.4.9-.6-1.5 1.4-.9h-1.7l-.5-1.5-.5 1.5h-1.7z"/><path d="m42.3 28.6l-.5 1.6 1.3-1 1.4 1-.6-1.6 1.4-.9h-1.7l-.5-1.5-.5 1.5h-1.7z"/><path d="m45.7 34.8l1.3-.9h-1.7l-.5-1.5-.5 1.5h-1.7l1.4.9-.5 1.5 1.3-.9 1.4.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1f0.svg b/riot/emojione/svg/1f1f9-1f1f0.svg new file mode 100644 index 0000000..7c86959 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#2a5f9e"><path d="m53.4 53h-42c0 0 26-29.4 42.4-38.2 0 0-11.8 21.5 3 34.2 3.2-4.8 5.2-10.7 5.2-17 0-16.6-13.4-30-30-30s-30 13.4-30 30c0 9.8 4.7 18.5 12 24h36c1.2-.9 2.4-1.9 3.4-3"/><path d="m32 62c4.7 0 9.1-1.1 13.1-3h-26.2c4 1.9 8.4 3 13.1 3"/></g><g fill="#ffce31"><path d="m53.7 14.8c-16.3 8.8-42.3 38.2-42.3 38.2h42c1.2-1.2 2.3-2.6 3.3-4-14.8-12.7-3-34.2-3-34.2"/><path d="m14 56c1.5 1.1 3.2 2.2 4.9 3h26.2c1.7-.8 3.4-1.9 4.9-3h-36"/></g><g fill="#fff"><path d="m18.5 10.3l.5 1.7h1.8l-1.4 1 .5 1.7-1.4-1-1.4 1 .5-1.7-1.4-1h1.7z"/><path d="m27.1 18.1l.5 1.5h1.6l-1.3.9.5 1.5-1.3-.9-1.2.9.5-1.5-1.3-.9h1.6z"/><path d="m8.3 20.5l.5 1.7h1.8l-1.4 1 .5 1.7-1.4-1-1.4 1 .5-1.7-1.4-1h1.8z"/><path d="m18.5 33.3l.6 2h2.1l-1.7 1.2.6 2-1.6-1.2-1.7 1.2.6-2-1.7-1.2h2.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1f1.svg b/riot/emojione/svg/1f1f9-1f1f1.svg new file mode 100644 index 0000000..43e983a --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-7.6 0-14.6 2.9-19.9 7.6v44.9c5.3 4.6 12.3 7.5 19.9 7.5 16.6 0 30-13.4 30-30s-13.4-30-30-30" fill="#ed4c5c"/><path d="M12.1,9.6c-1.3,1.2-2.5,2.5-3.6,3.9v37.1c1.1,1.4,2.3,2.7,3.6,3.9L42,32L12.1,9.6z" fill="#ffce31"/><path d="M8.4,13.4C4.4,18.5,2,25,2,32s2.4,13.5,6.4,18.6L27,32L8.4,13.4z" fill="#3e4347"/><path fill="#fff" d="m10.3 33.9l2.4 5.1 1-5.3 5.3-.4-4.8-3 1-5.3-3.9 3.5-4.8-2.9 2.4 5.1-3.9 3.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1f2.svg b/riot/emojione/svg/1f1f9-1f1f2.svg new file mode 100644 index 0000000..785f91c --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#83bf4f"><path d="M2,32c0,6.1,1.8,11.8,5,16.6V15.4C3.8,20.2,2,25.9,2,32z"/><path d="M32,2c-5.5,0-10.6,1.5-15,4v52c4.4,2.6,9.5,4,15,4c16.6,0,30-13.4,30-30S48.6,2,32,2z"/></g><path d="m7 15.4v33.2c2.6 3.9 6 7.1 10 9.4v-52c-4 2.3-7.4 5.6-10 9.4" fill="#ed4c5c"/><g fill="#fff"><path d="m37.2 8.8c2.5 2.1 4 5.3 3.8 8.8-.3 6-5.4 10.7-11.4 10.5-1.4-.1-2.7-.4-3.8-.9 1.9 1.6 4.4 2.6 7.1 2.6 6.1 0 11-4.9 11-11-.1-4.4-2.8-8.3-6.7-10"/><path d="m26.7 16.9l.5-1.5h1.5l-1.2-.9.5-1.4-1.3.9-1.2-.9.5 1.4-1.3.9h1.5z"/><path d="m26.2 9.8l.5 1.5.5-1.5h1.5l-1.2-.9.5-1.5-1.3.9-1.2-.9.5 1.5-1.3.9z"/><path d="m31.8 12.7l.5 1.5.5-1.5h1.5l-1.2-.9.4-1.5-1.2.9-1.3-.9.5 1.5-1.2.9z"/><path d="m21.9 17.3l.5-1.5-1.3.9-1.2-.9.5 1.5-1.3.9h1.6l.4 1.5.5-1.5h1.6z"/><path d="m26.7 22.5l.5-1.4h1.5l-1.2-.9.5-1.5-1.3.9-1.2-.9.5 1.5-1.3.9h1.5z"/></g><g fill="#ffe62e"><path d="m7 15.4v6l3-3z"/><path d="m17 21.4v-6l-3 3z"/><path d="m7 29.9v5.9l3-2.9z"/><path d="m17 35.8v-5.9l-3 3z"/><path d="m7 42.6v6l3-3z"/><path d="m17 48.6v-6l-3 3z"/></g><path fill="#83bf4f" d="m9.8 42.6l-2.3-3.4 2.3-3.3h4.4l2.3 3.3-2.3 3.4z"/><path fill="#ffe62e" d="m9.8 28.8l-2.3-3.3 2.3-3.3h4.4l2.3 3.3-2.3 3.3z"/><path fill="#ed4c5c" d="m10.4 27.9l-1.7-2.4 1.7-2.4h3.2l1.7 2.4-1.7 2.4z"/><path fill="#fff" d="m11.3 26.5l-.6-1 .6-1h1.4l.6 1-.6 1z"/><path fill="#83bf4f" d="m9.2 14.6l-.7-1.1 5.5-5.2 2 3-2.2 3.3z"/><path fill="#ed4c5c" d="m9.9 13.7l-.8-1.1 4-3.8 1.7 2.5-1.7 2.4z"/><path fill="#ffe62e" d="m9 49l-.7 1.1 5.4 5.2 2-2.9-2.2-3.3z"/><g fill="#ed4c5c"><path d="m9.6 49.9l-.7 1.1 3.9 3.8 1.7-2.4-1.6-2.4z"/><path d="m10.4 41.6l-1.7-2.4 1.7-2.4h3.2l1.7 2.4-1.7 2.4z"/></g><g fill="#ffe62e"><path d="m11.3 40.2l-.7-1 .7-1h1.3l.7 1-.7 1z"/><path d="m10.9 11.9l-.4-.6 1.5-1.4.8 1-.6 1z"/></g><path fill="#fff" d="m10.4 51.7l-.4.6 1.6 1.5.8-1.1-.7-1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1f3.svg b/riot/emojione/svg/1f1f9-1f1f3.svg new file mode 100644 index 0000000..b27930a --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ed4c5c"/><circle cx="32" cy="32" r="17.3" fill="#fff"/><circle cx="32" cy="32" r="13" fill="#ed4c5c"/><circle cx="35.5" cy="32" r="10.4" fill="#fff"/><path fill="#ed4c5c" d="m38.4 32l3.4-4.6-5.4 1.8-3.3-4.6v5.7l-5.4 1.7 5.4 1.7v5.7l3.3-4.6 5.4 1.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1f4.svg b/riot/emojione/svg/1f1f9-1f1f4.svg new file mode 100644 index 0000000..4adcb03 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26,2.6C12.3,5.4,2,17.5,2,32h24V2.6z" fill="#f9f9f9"/><g fill="#c94747"><path d="M32,2c-2.1,0-4.1,0.2-6,0.6V32H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z"/><path d="m22 18h-5v-5h-4v5h-5v4h5v5h4v-5h5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1f7.svg b/riot/emojione/svg/1f1f9-1f1f7.svg new file mode 100644 index 0000000..57ab90b --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ed4c5c"/><g fill="#fff"><path d="m41.3 39l.1-5.4-5.4-1.6 5.4-1.6-.1-5.4 3.3 4.3 5.4-1.6-3.3 4.3 3.3 4.3-5.4-1.6z"/><path d="m33.2 44c-6.6 0-11.9-5.4-11.9-12s5.3-12 11.9-12c2.5 0 4.8.8 6.8 2.1-2.7-3.1-6.7-5.1-11.2-5.1-8.2 0-14.8 6.7-14.8 15 0 8.3 6.6 15 14.8 15 4.5 0 8.5-2 11.2-5.1-1.9 1.3-4.2 2.1-6.8 2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1f9.svg b/riot/emojione/svg/1f1f9-1f1f9.svg new file mode 100644 index 0000000..d0322a7 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="m53.2 10.8c-8.7-8.7-21.4-10.9-32.2-6.7l38.9 38.9c4.2-10.8 2-23.5-6.7-32.2"/><path d="m10.8 53.2c8.7 8.7 21.4 10.9 32.2 6.7l-38.9-38.9c-4.2 10.8-2 23.5 6.7 32.2"/></g><path d="m10.8 10.8c-2 2-3.6 4.1-4.9 6.4l40.9 40.9c2.3-1.3 4.5-2.9 6.4-4.9 2-2 3.6-4.1 4.9-6.4l-40.9-40.9c-2.3 1.3-4.5 2.9-6.4 4.9" fill="#3e4347"/><g fill="#fff"><path d="m4.9 19.1c-.3.6-.6 1.3-.9 2l39 38.8c.7-.3 1.3-.5 2-.9.6-.3 1.2-.6 1.8-1l-40.9-40.8c-.3.6-.7 1.2-1 1.9"/><path d="m21 4.1c-.7.3-1.3.5-2 .9-.6.3-1.2.6-1.8 1l40.9 40.9c.3-.6.7-1.2 1-1.8.3-.7.6-1.3.9-2l-39-39"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1fb.svg b/riot/emojione/svg/1f1f9-1f1fb.svg new file mode 100644 index 0000000..e911e86 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#2a5f9e" d="m12 12h21v21h-21z"/><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#5b97b1"/><path d="m32 2c-4.7 0-9.1 1.1-13.1 3v3.1 2.9h-7.9v2.9.1 4.9h-6c-1.9 4-3 8.4-3 13.1h12v-15l12 15h6v-7.5l-8.4-10.5h8.4v-12" fill="#fff"/><g fill="#ed4c5c"><path d="m15.4 14l14.6 18h2v-4.9l-10.6-13.1z"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z"/></g><g fill="#ffe62e"><path d="m28.9 50.2l-.6-2.1-.7 2.1h-2.2l1.8 1.2-.7 2.1 1.8-1.3 1.7 1.3-.7-2.1 1.8-1.2z"/><path d="m37.8 48.6l.6-2.1-1.7 1.3-1.7-1.3.6 2.1-1.7 1.2h2.1l.7 2.1.7-2.1h2.1z"/><path d="m38.4 39.3l-1.7 1.3-1.7-1.3.6 2-1.7 1.3h2.1l.7 2.1.7-2.1h2.1l-1.7-1.3z"/><path d="m45.2 46.7l.7-2-1.8 1.3-1.7-1.3.7 2-1.8 1.3h2.2l.6 2 .7-2h2.2z"/><path d="m43.5 32.3l.6 2 .7-2h2.2l-1.8-1.3.7-2-1.8 1.3-1.7-1.3.7 2-1.8 1.3z"/><path d="m49.7 41.2l-.7-2-.6 2h-2.2l1.7 1.3-.6 2 1.7-1.2 1.8 1.2-.7-2 1.7-1.3z"/><path d="m49.7 30.2l.7 2 .7-2h2.1l-1.7-1.3.7-2.1-1.8 1.3-1.7-1.3.6 2.1-1.7 1.3z"/><path d="m56 37.2l-.7-2.1-.7 2.1h-2.1l1.7 1.2-.6 2.1 1.7-1.3 1.8 1.3-.7-2.1 1.7-1.2z"/><path d="m54.2 24.6l-.6 2 1.7-1.2 1.8 1.2-.7-2 1.7-1.3h-2.1l-.7-2-.7 2h-2.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1fc.svg b/riot/emojione/svg/1f1f9-1f1fc.svg new file mode 100644 index 0000000..8ac4ed8 --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#ed4c5c"/><path d="M32,2C15.4,2,2,15.4,2,32h30V2z" fill="#2a5f9e"/><path d="m24 20.3l5-1.3-5-1.3 3.7-3.7-5 1.3 1.3-5-3.7 3.7-1.3-5-1.3 5-3.7-3.7 1.3 5-5-1.3 3.7 3.7-5 1.3 5 1.3-3.7 3.7 5-1.3-1.3 5 3.7-3.7 1.3 5 1.3-5 3.7 3.7-1.3-5 5 1.3-3.7-3.7" fill="#fff"/><circle cx="19" cy="19" r="5.7" fill="#428bc1"/><circle cx="19" cy="19" r="5" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9-1f1ff.svg b/riot/emojione/svg/1f1f9-1f1ff.svg new file mode 100644 index 0000000..9e65b4b --- /dev/null +++ b/riot/emojione/svg/1f1f9-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,6C6.3,12.2,0.9,23.9,2.2,35.3L49.8,7.9C40.5,1,27.7-0.1,17,6z" fill="#83bf4f"/><path d="m14.2 56.1c9.3 6.9 22.2 8 32.8 1.8 10.7-6.1 16.1-17.8 14.8-29.3l-47.6 27.5" fill="#428bc1"/><path d="m58 17c-1.4-2.4-3.1-4.5-5-6.4l-50 28.9c.7 2.6 1.7 5.1 3 7.5 1.4 2.4 3.1 4.5 5 6.4l50-28.9c-.6-2.6-1.6-5.1-3-7.5" fill="#3e4347"/><g fill="#ffce31"><path d="m61.5 26.5c-.1-.7-.3-1.4-.5-2l-50 28.9c.5.5 1 1 1.5 1.4.5.5 1.1.9 1.7 1.3l47.6-27.5c-.1-.7-.2-1.4-.3-2.1"/><path d="m51.5 9.2c-.5-.5-1.1-.9-1.7-1.3l-47.6 27.4c.1.7.2 1.4.3 2.1.1.7.3 1.4.5 2l50-28.8c-.5-.5-1-1-1.5-1.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1f9.svg b/riot/emojione/svg/1f1f9.svg new file mode 100644 index 0000000..6d8e6ed --- /dev/null +++ b/riot/emojione/svg/1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m43.8 17.5v5.1h-8.7v23.9h-6.1v-23.9h-8.7v-5.1c-.1 0 23.5 0 23.5 0" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fa-1f1e6.svg b/riot/emojione/svg/1f1fa-1f1e6.svg new file mode 100644 index 0000000..3d4e0e3 --- /dev/null +++ b/riot/emojione/svg/1f1fa-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,62c16.6,0,30-13.4,30-30H2C2,48.6,15.4,62,32,62z" fill="#ffe62e"/><path d="M32,2C15.4,2,2,15.4,2,32h60C62,15.4,48.6,2,32,2z" fill="#428bc1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fa-1f1ec.svg b/riot/emojione/svg/1f1fa-1f1ec.svg new file mode 100644 index 0000000..4509376 --- /dev/null +++ b/riot/emojione/svg/1f1fa-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C23.1,2,15.1,5.9,9.6,12h44.7C48.9,5.9,40.9,2,32,2z" fill="#3e4347"/><path d="m54.4 12h-44.8c-2.5 2.9-4.6 6.3-5.9 10h56.6c-1.3-3.7-3.4-7.1-5.9-10" fill="#ffe62e"/><path d="m60.3 22h-56.6c-1.1 3.1-1.7 6.5-1.7 10h60c0-3.5-.6-6.9-1.7-10" fill="#ed4c5c"/><path d="m62 32h-60c0 3.5.6 6.9 1.7 10h56.6c1.1-3.1 1.7-6.5 1.7-10" fill="#3e4347"/><path d="m60.3 42h-56.6c1.3 3.7 3.3 7.1 5.9 10h44.7c2.6-2.9 4.7-6.3 6-10" fill="#ffe62e"/><path d="m54.4 52h-44.8c5.5 6.1 13.5 10 22.4 10 8.9 0 16.9-3.9 22.4-10" fill="#ed4c5c"/><circle cx="32" cy="32" r="10" fill="#fff"/><g fill="#3e4347"><circle cx="31" cy="26" r="2"/><path d="m31.5 35l.5 6h.5v-6z"/><path d="m31 40.5v.5h2v-1z"/><path d="m34.9 37.2c-1.1-1.7-2.1-3.3-3.2-5-.3-.5-1.2 0-.9.5.9 1.4 1.8 2.8 2.7 4.3-1.4 0-2.2 0-3.6 0v.5c1.7 0 2.8.5 4.5.5.5 0 .7-.4.5-.8"/><path d="m33.9 32.1c-1.1-.4-3.4-.9-1.9-5.1h-1.8c0 0-4.4 8.7 3.8 8.7 1.8 0 2.6 1.5 2.6 3.3-.1 0 2.1-5.2-2.7-6.9"/><path d="m29.5 36.5l.5 2h.5v-2z"/><path d="m31 25l-4 2h4z"/></g><path d="m35 32.6v3.3c0 0 1.6.7.9 3.1l1.1.5c0 0 1.8-4.8-2-6.9" fill="#ed4c5c"/><g fill="#94989b"><path d="m31.5 32c0 0 0 2.6 2.5 2.6 0 0 1-2.6-2.5-2.6"/><ellipse cx="30.4" cy="31.7" rx=".9" ry="1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fa-1f1f2.svg b/riot/emojione/svg/1f1fa-1f1f2.svg new file mode 100644 index 0000000..48488ea --- /dev/null +++ b/riot/emojione/svg/1f1fa-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M48,6.6C43.3,3.7,37.9,2,32,2v4.6H48z" fill="#ed4c5c"/><path d="M32,11.2h21.6C51.9,9.5,50,7.9,48,6.6H32V11.2z" fill="#fff"/><path d="M32,15.8h25.3c-1.1-1.7-2.3-3.2-3.6-4.6H32V15.8z" fill="#ed4c5c"/><path d="m32 20.4h27.7c-.7-1.6-1.5-3.2-2.4-4.6h-25.3v4.6" fill="#fff"/><path d="M32,25h29.2c-0.4-1.6-0.9-3.1-1.5-4.6H32V25z" fill="#ed4c5c"/><path d="m32 29.7h29.9c-.1-1.6-.4-3.1-.7-4.6h-29.2v4.6" fill="#fff"/><path d="m61.9 29.7h-29.9v2.3h-30c0 .8 0 1.5.1 2.3h59.8c.1-.8.1-1.5.1-2.3 0-.8 0-1.6-.1-2.3" fill="#ed4c5c"/><path d="m2.8 38.9h58.4c.4-1.5.6-3 .7-4.6h-59.8c.1 1.5.4 3.1.7 4.6" fill="#fff"/><path d="m4.3 43.5h55.4c.6-1.5 1.1-3 1.5-4.6h-58.4c.4 1.6.9 3.1 1.5 4.6" fill="#ed4c5c"/><path d="m6.7 48.1h50.6c.9-1.5 1.7-3 2.4-4.6h-55.4c.7 1.6 1.5 3.1 2.4 4.6" fill="#fff"/><path d="m10.3 52.7h43.4c1.3-1.4 2.6-3 3.6-4.6h-50.6c1 1.7 2.3 3.2 3.6 4.6" fill="#ed4c5c"/><path d="m15.9 57.3h32.2c2.1-1.3 3.9-2.9 5.6-4.6h-43.4c1.7 1.8 3.6 3.3 5.6 4.6" fill="#fff"/><path d="m32 62c5.9 0 11.4-1.7 16.1-4.7h-32.2c4.7 3 10.2 4.7 16.1 4.7" fill="#ed4c5c"/><path d="m16 6.6c-2.1 1.3-4 2.9-5.7 4.6-1.4 1.4-2.6 3-3.6 4.6-.9 1.5-1.8 3-2.4 4.6-.6 1.5-1.1 3-1.5 4.6-.4 1.5-.6 3-.7 4.6-.1.8-.1 1.6-.1 2.4h30v-2.3-4.7-4.6-4.6-4.6-4.6-4.6c-5.9 0-11.3 1.7-16 4.6" fill="#428bc1"/><g fill="#fff"><path d="m25 3l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m29 9l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m21 9l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m25 15l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m17 15l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m9 15l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m29 21l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m21 21l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m13 21l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m25 27l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m17 27l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m9 27l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m11.8 13l1.2-.9 1.2.9-.5-1.5 1.2-1h-1.5l-.4-1.5-.5 1.5h-1.4c0 0 0 0 0 0l1.2.9-.5 1.6"/><path d="m3.8 25l1.2-.9 1.2.9-.5-1.5 1.2-1h-1.4l-.5-1.5-.5 1.5h-1c0 .1-.1.2-.1.3l.8.6-.4 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fa-1f1f8.svg b/riot/emojione/svg/1f1fa-1f1f8.svg new file mode 100644 index 0000000..28e8578 --- /dev/null +++ b/riot/emojione/svg/1f1fa-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48 6.6c-4.7-2.9-10.1-4.6-16-4.6v4.6h16" fill="#ed4c5c"/><path d="M32,11.2h21.6C51.9,9.5,50,7.9,48,6.6H32V11.2z" fill="#fff"/><path d="M32,15.8h25.3c-1.1-1.7-2.3-3.2-3.6-4.6H32V15.8z" fill="#ed4c5c"/><path d="m32 20.4h27.7c-.7-1.6-1.5-3.2-2.4-4.6h-25.3v4.6" fill="#fff"/><path d="M32,25h29.2c-0.4-1.6-0.9-3.1-1.5-4.6H32V25z" fill="#ed4c5c"/><path d="m32 29.7h29.9c-.1-1.6-.4-3.1-.7-4.6h-29.2v4.6" fill="#fff"/><path d="m61.9 29.7h-29.9v2.3h-30c0 .8 0 1.5.1 2.3h59.8c.1-.8.1-1.5.1-2.3 0-.8 0-1.6-.1-2.3" fill="#ed4c5c"/><path d="m2.8 38.9h58.4c.4-1.5.6-3 .7-4.6h-59.8c.1 1.5.3 3.1.7 4.6" fill="#fff"/><path d="m4.3 43.5h55.4c.6-1.5 1.1-3 1.5-4.6h-58.4c.4 1.6.9 3.1 1.5 4.6" fill="#ed4c5c"/><path d="m6.7 48.1h50.6c.9-1.5 1.7-3 2.4-4.6h-55.4c.7 1.6 1.5 3.1 2.4 4.6" fill="#fff"/><path d="m10.3 52.7h43.4c1.3-1.4 2.6-3 3.6-4.6h-50.6c1 1.7 2.3 3.2 3.6 4.6" fill="#ed4c5c"/><path d="m15.9 57.3h32.2c2.1-1.3 3.9-2.9 5.6-4.6h-43.4c1.7 1.8 3.6 3.3 5.6 4.6" fill="#fff"/><path d="m32 62c5.9 0 11.4-1.7 16.1-4.7h-32.2c4.7 3 10.2 4.7 16.1 4.7" fill="#ed4c5c"/><path d="m16 6.6c-2.1 1.3-4 2.9-5.7 4.6-1.4 1.4-2.6 3-3.6 4.6-.9 1.5-1.8 3-2.4 4.6-.6 1.5-1.1 3-1.5 4.6-.4 1.5-.6 3-.7 4.6-.1.8-.1 1.6-.1 2.4h30v-2.3-4.7-4.6-4.6-4.6-4.6-4.6c-5.9 0-11.3 1.7-16 4.6" fill="#428bc1"/><g fill="#fff"><path d="m25 3l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m29 9l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m21 9l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m25 15l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m17 15l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m9 15l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m29 21l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m21 21l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m13 21l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m25 27l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m17 27l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m9 27l.5 1.5h1.5l-1.2 1 .4 1.5-1.2-.9-1.2.9.4-1.5-1.2-1h1.5z"/><path d="m11.8 13l1.2-.9 1.2.9-.5-1.5 1.2-1h-1.5l-.4-1.5-.5 1.5h-1.4c0 0 0 0 0 0l1.2.9-.5 1.6"/><path d="m3.8 25l1.2-.9 1.2.9-.5-1.5 1.2-1h-1.4l-.5-1.5-.5 1.5h-1c0 .1-.1.2-.1.3l.8.6-.4 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fa-1f1fe.svg b/riot/emojione/svg/1f1fa-1f1fe.svg new file mode 100644 index 0000000..bc4ad70 --- /dev/null +++ b/riot/emojione/svg/1f1fa-1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.7 28h-1.4v-6c-1-2.9-2.5-5.6-4.3-8h-6v-6c-5-3.8-11.2-6-18-6-16.6 0-30 13.4-30 30 0 1.4.1 2.7.3 4h1.4v6c1 2.9 2.5 5.6 4.3 8h6v6c5 3.8 11.2 6 18 6 6.8 0 13-2.2 18-6v-6h6c1.8-2.4 3.3-5.1 4.3-8v-6h1.4c.2-1.3.3-2.6.3-4 0-1.4-.1-2.7-.3-4" fill="#f9f9f9"/><g fill="#428bc1"><path d="m3.7 42h56.6c.7-1.9 1.2-3.9 1.4-6h-59.4c.2 2.1.7 4.1 1.4 6"/><path d="M8,50c1.7,2.3,3.7,4.3,6,6h36c2.3-1.7,4.3-3.7,6-6H8z"/><path d="m32 14h24c-1.7-2.3-3.7-4.3-6-6h-18v6"/><path d="m32 28h29.7c-.3-2.1-.8-4.1-1.4-6h-28.3v6"/></g><g fill="#fcd116" stroke="#000" stroke-width=".1" stroke-miterlimit="20"><path d="m16.7 24.8c0-.1 0 0 0 0l-1.4 1c-.8 1.9-.5 2.7-.4 3.4l-.7 1.7c2.7-.9.4-2.5 4.1-5.2l-.9-1.4-.7.5z"/><path d="m15.9 23.3l-.8-.1h.1c0 0-.1 0-.1 0l-1.6-.3c-1.9.8-2.3 1.6-2.7 2.1l-1.8.6c2.5 1.3 2-1.5 6.6-.8l.3-1.5z"/><path d="m14.2 22.3l1.4-.9-.5-.7h.1c0 0-.1 0-.1-.1l-.9-1.4c-1.9-.8-2.7-.5-3.4-.4l-1.8-.6c.9 2.6 2.5.3 5.2 4.1z"/><path d="m15.1 19.4l1.6.3.1-.8v.1c0 0 0-.1 0-.1l.3-1.6c-.8-1.9-1.6-2.3-2.1-2.7l-.7-1.7c-1.3 2.5 1.5 2 .8 6.5z"/><path d="m21.8 13c-2.7.9-.4 2.5-4.1 5.2l.9 1.4 2.1-1.4c1.4-3.4-.5-3.6 1.1-5.2z"/><path d="m20.3 20.7l.8.1h-.1c0 0 .1 0 .1 0l1.6.3c1.9-.8 2.3-1.6 2.7-2.1l1.7-.7c-2.5-1.3-2 1.5-6.6.8l-.2 1.6z"/><path d="m21.9 21.7l-1.4.9.5.7h-.1c0 0 .1 0 .1.1l.9 1.4c1.9.8 2.7.5 3.4.4l1.7.7c-.8-2.7-2.4-.4-5.1-4.2z"/><path d="m20.8 24.5l-1.6-.3-.2.8v-.1c0 0 0 .1 0 .1l-.3 1.6c.8 1.9 1.6 2.3 2.1 2.7l.7 1.7c1.3-2.5-1.5-2-.7-6.5z"/><path d="m21 23.3l7-1.3-7-1.3 4.1-5.8-5.8 4.1-1.3-7-1.3 7-5.8-4.1 4 5.8-6.9 1.3 6.9 1.3-4 5.8 5.8-4 1.3 6.9 1.3-6.9 5.8 4z"/><circle cx="18" cy="22" r="3.3"/></g><path d="m20.5 20.7c-.2.2-.3-.2-1.1-.2-.8 0-.9.5-1 .4s.6-.6.9-.7c.2 0 .9.2 1.2.5m-.9.2c.2.2 0 .6-.2.6-.2 0-.6-.4-.4-.6"/><path d="m18.6 21.2c0-.4.3-.4.8-.4s.7.4.9.5c-.2 0-.4-.3-.9-.3-.5-.1-.5-.1-.8.2m.1.1c.1-.2.3.2.6.2.3 0 .5-.1.7-.2.2-.2-.3.4-.6.4-.4-.1-.8-.3-.7-.4"/><path d="m19.7 21.5c.4-.2.2-.5 0-.6.1.1.3.4 0 .6m-1.7 1.8c.2 0 .2-.1.5-.1s.8.3 1.2.2c-.7.3-.4.1-1.6.1h-.2m1.9.2c-.1-.2-.1-.2-.3-.5.2.2.2.3.3.5m-1.8.3c.8 0 .6-.2 1.6-.6-.7.1-.9.3-1.6.3h-.2m.2-.8c.2 0 .3-.2.5-.2.2 0 .6.1.7.2 0 0-.1-.2-.3-.3-.2 0-.2-.4-.4-.5 0 .1.1.1.1.3 0 .2-.3.2-.3 0 .1.2-.1.2-.3.2"/><path d="m15.5 20.7c.2.2.3-.2 1.1-.2s.9.5 1 .4-.6-.6-.9-.7c-.2 0-.9.2-1.2.5m.9.2c-.2.2 0 .6.2.6s.6-.4.4-.6"/><path d="m17.4 21.2c0-.4-.3-.4-.8-.4s-.7.4-.9.5c.2 0 .4-.3.9-.3s.5-.1.8.2m-.1.1c-.1-.2-.3.2-.6.2-.3 0-.5-.1-.7-.2-.2-.2.3.4.6.4.4-.1.8-.3.7-.4"/><path d="m16.3 21.5c-.4-.2-.2-.5 0-.6-.1.1-.3.4 0 .6m1.7 1.8c-.2 0-.2-.1-.5-.1s-.8.3-1.2.2c.7.3.4.1 1.6.1h.2m-1.9.2c.1-.2.1-.2.3-.5-.2.2-.2.3-.3.5m1.8.3c-.8 0-.6-.2-1.6-.6.7.1.9.3 1.6.3h.2m-.2-.8c-.2 0-.3-.2-.5-.2-.2 0-.6.1-.7.2 0 0 .1-.2.3-.3.2 0 .2-.4.4-.5 0 .1-.1.1-.1.3 0 .2.3.2.3 0-.1.2.1.2.3.2"/><path d="m18 24.3c-.2 0-.5.1 0 0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fa-1f1ff.svg b/riot/emojione/svg/1f1fa-1f1ff.svg new file mode 100644 index 0000000..a6bb6cb --- /dev/null +++ b/riot/emojione/svg/1f1fa-1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C19.3,2,8.5,9.9,4.1,21h55.8C55.5,9.9,44.7,2,32,2z" fill="#42ade2"/><path d="M32,62c12.7,0,23.5-7.9,27.9-19H4.1C8.5,54.1,19.3,62,32,62z" fill="#83bf4f"/><path d="m62 32c0-3.1-.5-6.2-1.4-9h-57.2c-.9 2.8-1.4 5.9-1.4 9s.5 6.2 1.4 9h57.2c.9-2.8 1.4-5.9 1.4-9" fill="#fff"/><g fill="#c94747"><path d="m59.9 21c.1.3.3.7.4 1 .1.3.2.7.3 1"/><path d="m60.3 22c-.1-.3-.3-.7-.4-1h-55.8c-.1.3-.3.7-.4 1-.1.3-.2.7-.3 1h57.2c-.1-.3-.2-.7-.3-1"/><path d="m3.7 42c.1.3.3.7.4 1h55.8c.1-.3.3-.7.4-1 .1-.3.2-.7.3-1h-57.2c.1.3.2.7.3 1"/></g><g fill="#fff"><path d="m20.4 17.3c-2.4 0-4.3-1.9-4.3-4.3 0-2.4 1.9-4.3 4.3-4.3.6 0 1.1.1 1.6.3-.8-.6-1.9-1-3-1-2.8 0-5 2.2-5 5s2.2 5 5 5c1.1 0 2.2-.4 3-1-.5.2-1 .3-1.6.3"/><path d="m24.7 15.2l.4 1.1h1.1l-.9.6.3 1.1-.9-.7-.9.7.4-1.1-.9-.6h1.1z"/><path d="m29 15.2l.3 1.1h1.2l-.9.6.3 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.1z"/><path d="m33.3 15.2l.3 1.1h1.1l-.9.6.4 1.1-.9-.7-1 .7.4-1.1-.9-.6h1.1z"/><path d="m37.5 15.2l.4 1.1h1.1l-.9.6.3 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.2z"/><path d="m41.8 15.2l.3 1.1h1.2l-1 .6.4 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.1z"/><path d="m29 11.6l.3 1.1h1.2l-.9.6.3 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.1z"/><path d="m33.3 11.6l.3 1.1h1.1l-.9.6.4 1.1-.9-.7-1 .7.4-1.1-.9-.6h1.1z"/><path d="m37.5 11.6l.4 1.1h1.1l-.9.6.3 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.2z"/><path d="m41.8 11.6l.3 1.1h1.2l-1 .6.4 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.1z"/><path d="m33.3 8l.3 1.1h1.1l-.9.6.4 1.1-.9-.7-1 .7.4-1.1-.9-.6h1.1z"/><path d="m37.5 8l.4 1.1h1.1l-.9.6.3 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.2z"/><path d="m41.8 8l.3 1.1h1.2l-1 .6.4 1.1-.9-.7-.9.7.3-1.1-.9-.6h1.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fa.svg b/riot/emojione/svg/1f1fa.svg new file mode 100644 index 0000000..9966d13 --- /dev/null +++ b/riot/emojione/svg/1f1fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m20.4 17.1h6.2v17.8c0 2 .2 3.4.7 4.4.7 1.6 2.3 2.4 4.8 2.4 2.4 0 4-.8 4.8-2.4.5-.9.7-2.4.7-4.4v-17.8h6.2v17.9c0 3.1-.5 5.5-1.4 7.2-1.8 3.1-5.2 4.7-10.2 4.7-5 0-8.4-1.6-10.2-4.7-1-1.7-1.4-4.1-1.4-7.2l-.2-17.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb-1f1e6.svg b/riot/emojione/svg/1f1fb-1f1e6.svg new file mode 100644 index 0000000..d0078ef --- /dev/null +++ b/riot/emojione/svg/1f1fb-1f1e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0-16.6-13.4-30-30-30v60c16.6 0 30-13.4 30-30" fill="#f9f9f9"/><path d="M2,32c0,16.6,13.4,30,30,30V2C15.4,2,2,15.4,2,32z" fill="#ffe62e"/><path d="m49 21.3c0 2.9 0 3.8-3 3.8s-3-.9-3-3.8c0-2.9 1.3-5.3 3-5.3 1.7 0 3 2.4 3 5.3" fill="#fff"/><g fill="#dbb471"><path d="m47.5 17.8l-1.5-1.2-1.5 1.2-1.5-1.2.5 2.4h5l.5-2.4z"/><path d="m47.5 20.6l-1.5-1.4-1.5 1.4-1.5-1.4v2.8h6v-2.8z"/><path d="m47.5 23.5l-1.5-1.5-1.5 1.5-1.5-1.5v3h6v-3z"/><ellipse cx="46" cy="15.1" rx=".5" ry="1.5"/></g><g fill="#fff"><ellipse cx="46" cy="25" rx="3" ry=".7"/><path d="m41.9 32.6c-1.4 0-2.5-2.1-2.6-2.8-.2-1 .3-2 .8-3.1.3-.5.7-1.6.7-1.9-.1-.4-1.2-1.5-2.3-2.3l1.2-1.6c.8.6 2.7 2.3 3 3.4.2 1-.3 2-.8 3.2-.3.6-.7 1.5-.7 1.9.1.3.4.8.7 1.1.5-.5 1.3-2.9 1.7-5.3l2 .3c-.4 2.5-1.4 6.7-3.4 7-.1.1-.2.1-.3.1"/><path d="m50.1 32.6c-.1 0-.1 0-.2 0-2.1-.3-3-4.5-3.4-7l2-.3c.4 2.3 1.1 4.6 1.7 5.2.3-.3.6-.8.7-1.1.1-.3-.4-1.3-.7-1.9-.5-1.1-1-2.2-.8-3.2.3-1.2 2.2-2.8 3-3.4l1.2 1.6c-1.1.9-2.2 2-2.3 2.3-.1.3.4 1.3.7 1.8.5 1.1 1 2.2.8 3.1-.3.8-1.3 2.9-2.7 2.9"/></g><path d="m41.5 36.6c-1.4-.9-3.2-.7-4.5.6-1.4 1.6-1.4 4.1 0 5.6 1.4 1.6 3.8 1.6 5.2 0 1.2-1.3 1.4-3.3.6-4.8l9.6-10.2 1.3 1.4 1.3-1.4-2.6-2.8-10.9 11.6" fill="#dbb471"/><path d="m40.3 39.4c.3-.3.3-.8 0-1.2s-.8-.3-1.2 0c-.3.3-.3.8 0 1.2-.3-.3-.8-.3-1.2 0-.3.3-.3.8 0 1.2.3.3.8.3 1.2 0-.3.3-.3.8 0 1.2.3.3.8.3 1.2 0s.3-.8 0-1.2c.3.3.8.3 1.2 0 .3-.3.3-.8 0-1.2-.4-.3-.9-.3-1.2 0" fill="#fff"/><path d="m50.5 36.6c1.4-.9 3.2-.7 4.5.6 1.4 1.6 1.4 4.1 0 5.6-1.4 1.6-3.8 1.6-5.2 0-1.2-1.3-1.4-3.3-.6-4.8l-9.6-10.2-1.3 1.4-1.3-1.4 2.6-2.8 10.9 11.6" fill="#d0d0d0"/><path d="m51.7 39.4c-.3-.3-.3-.8 0-1.2.3-.3.8-.3 1.2 0 .3.3.3.8 0 1.2.3-.3.8-.3 1.2 0 .3.3.3.8 0 1.2-.3.3-.8.3-1.2 0 .3.3.3.8 0 1.2-.3.3-.8.3-1.2 0s-.3-.8 0-1.2c-.3.3-.8.3-1.2 0-.3-.3-.3-.8 0-1.2.4-.3.9-.3 1.2 0" fill="#fff"/><g fill="#ed4c5c"><path d="m50.4 39.8c-2.9.4-5.9.4-8.8 0-.6-.1-.8.6-.2.7 3.1.5 6.2.5 9.3 0 .6-.2.3-.8-.3-.7"/><path d="m50.3 39.2c-1.8-1.3-3.4-2.9-4.7-4.7-.3-.4-.8-.1-.5.2 1.4 1.9 3.1 3.6 5 5 .3.3.6-.2.2-.5"/><path d="m46.4 34.5c-1.3 1.8-2.9 3.4-4.7 4.7-.4.3-.1.8.2.5 1.9-1.4 3.6-3.1 5-5 .3-.3-.2-.5-.5-.2"/><path d="m45.5 31h1v13h-1z"/><path transform="matrix(.7071-.7071.7071.7071-11.036 41.8509)" d="m44.5 32.6h1v3.4h-1z"/><path transform="matrix(.7071-.7071.7071.7071-10.4499 43.2645)" d="m45.3 33.7h3.4v1h-3.4z"/></g><g fill="#ff717f"><path d="m45.5 42.7c-.6 0-1 .4-1 1v3h2v-3c0-.5-.4-1-1-1"/><path d="m46.5 41.8c-.6 0-1 .4-1 1v3h2v-3c0-.6-.4-1-1-1"/></g><g fill="#94989b"><circle cx="42.6" cy="37.1" r="1.2"/><circle cx="36.8" cy="42.9" r="1.2"/><circle cx="36.8" cy="37.1" r="1.2"/><circle cx="42.6" cy="42.9" r="1.2"/></g><g fill="#dbb471"><circle cx="55.2" cy="37.1" r="1.2"/><circle cx="49.4" cy="42.9" r="1.2"/><circle cx="49.4" cy="37.1" r="1.2"/><circle cx="55.2" cy="42.9" r="1.2"/><path d="m38.1 20.9h2v2.2h-2z"/><path d="m51.9 20.9h2v2.2h-2z"/><path transform="matrix(.2641-.9645.9645.2641 5.8898 62.8879)" d="m43 27.3h2.3v.6h-2.3z"/><path transform="matrix(.2652-.9642.9642.2652 6.1929 62.7084)" d="m43.9 26.5h.6v1.6h-.6z"/><path transform="matrix(.9645-.2641.2641.9645-5.5866 13.6141)" d="m47.5 26.4h.6v2.3h-.6z"/><path transform="matrix(.9642-.2652.2652.9642-5.5273 13.6434)" d="m47 27h1.6v.6h-1.6z"/></g><g fill="#fff"><path d="m52.5 28.1l-1.7 1.5-1.1-3.1 1.7-.9z"/><path d="m39.5 28.1l1.7 1.5 1.1-3.1-1.7-.9z"/></g><g fill="#dbb471"><path d="m41.5 26.5l-.6-.2-.1.5-.4-.1-.2.6.4.1-.2 1.1.5.2.3-1.1.5.1.1-.6-.4-.1z"/><path d="m51.8 27.3l-.2-.6-.4.1-.1-.5-.6.2.1.5-.4.1.1.6.5-.1.3 1.1.5-.2-.2-1.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb-1f1e8.svg b/riot/emojione/svg/1f1fb-1f1e8.svg new file mode 100644 index 0000000..5cafb43 --- /dev/null +++ b/riot/emojione/svg/1f1fb-1f1e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 62c5.9 0 11.4-1.7 16-4.6v-50.8c-4.6-2.9-10.1-4.6-16-4.6-5.9 0-11.4 1.7-16 4.6v50.7c4.6 3 10.1 4.7 16 4.7" fill="#ffe62e"/><path d="M16,6.6C7.6,11.9,2,21.3,2,32s5.6,20.1,14,25.4V6.6z" fill="#2a5f9e"/><g fill="#699635"><path d="m48 57.4c8.4-5.3 14-14.7 14-25.4s-5.6-20.1-14-25.4v50.8"/><path d="m24.8 17.9l-6 10.4 6 10.3 6-10.3z"/><path d="m39.2 17.9l-6 10.4 6 10.3 6-10.3z"/><path d="m26 41.7l6 10.4 6-10.4-6-10.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb-1f1ea.svg b/riot/emojione/svg/1f1fb-1f1ea.svg new file mode 100644 index 0000000..8274ed0 --- /dev/null +++ b/riot/emojione/svg/1f1fb-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#ffe62e"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#ed4c5c"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#2a5f9e"/><g fill="#fff"><path d="m34.6 27.1l1 1.1-.2-1.5 1.3-.6-1.4-.3-.2-1.4-.7 1.3-1.5-.3 1 1.1-.7 1.3z"/><path d="m29.2 27.2l1.3.6-.7-1.3 1-1.1-1.5.3-.7-1.3-.2 1.5-1.5.2 1.4.7-.1 1.4z"/><path d="m24.2 29l1.5.2-1.2-1 .5-1.3-1.3.7-1.2-1 .5 1.5-1.3.7 1.5.1.4 1.5z"/><path d="m20.2 32.5l1.5-.4-1.5-.5v-1.5l-.9 1.2-1.5-.5.9 1.2-.8 1.1 1.4-.4 1 1.2z"/><path d="m17.9 37l1.2-.9-1.6.1-.5-1.4-.4 1.4h-1.6l1.3.8-.4 1.4 1.2-.9 1.4.8z"/><path d="m46.1 36.8l-.5 1.4 1.3-.9 1.2.9-.4-1.4 1.3-.8h-1.6l-.4-1.3-.5 1.3h-1.6z"/><path d="m43.6 32.3l.1 1.4.9-1.1 1.4.3-.9-1.1.9-1.2-1.4.5-1-1.1v1.4l-1.4.5z"/><path d="m39.6 28.9l.6 1.4.4-1.5 1.5-.1-1.3-.7.4-1.5-1.2 1-1.3-.7.6 1.3-1.2 1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb-1f1ec.svg b/riot/emojione/svg/1f1fb-1f1ec.svg new file mode 100644 index 0000000..e5afefc --- /dev/null +++ b/riot/emojione/svg/1f1fb-1f1ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><defs><linearGradient id="7" gradientUnits="userSpaceOnUse" x1="-2894.4624" x2="-2893.4604" gradientTransform="matrix(-.5685-.4287-.1896 1.2856-1429.1501-2349.261)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="B" gradientUnits="userSpaceOnUse" x1="-2893.6753" x2="-2892.6736" gradientTransform="matrix(-.5688-.4289-.1897 1.2862-1429.4056-2337.6003)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="8" gradientUnits="userSpaceOnUse" x1="-2889.7898" x2="-2888.7893" gradientTransform="matrix(-.5702-.43-.1901 1.2894-1430.8381-2352.7778)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="A" gradientUnits="userSpaceOnUse" x1="-2890.5715" x2="-2889.5715" gradientTransform="matrix(-.5699-.4298-.1901 1.2888-1430.4264-2345.3428)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="9" gradientUnits="userSpaceOnUse" x1="-2884.4304" x2="-2883.4304" gradientTransform="matrix(-.5722-.4314-.1908 1.2938-1432.4309-2357.3113)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="6" gradientUnits="userSpaceOnUse" x1="-2887.594" x2="-2886.5928" gradientTransform="matrix(-.571-.4306-.1904 1.2913-1431.3042-2362.3708)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="0" gradientUnits="userSpaceOnUse" x1="-2890.051" x2="-2889.051" gradientTransform="matrix(-.5701-.4299-.1901 1.2892-1441.8746-2358.8357)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="5" gradientUnits="userSpaceOnUse" x1="-2891.5195" x2="-2890.5203" gradientTransform="matrix(-.5696-.4295-.1899 1.288-1441.6945-2340.7271)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="1" gradientUnits="userSpaceOnUse" x1="-2892.8401" x2="-2891.8413" gradientTransform="matrix(-.5691-.4291-.1898 1.2869-1441.012-2351.5571)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="3" gradientUnits="userSpaceOnUse" x1="-2890.6372" x2="-2889.6379" gradientTransform="matrix(-.5699-.4297-.19 1.2887-1439.7017-2348.1484)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="4" gradientUnits="userSpaceOnUse" x1="-2890.6846" x2="-2889.6846" gradientTransform="matrix(-.5699-.4297-.19 1.2887-1442.0317-2345.2524)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient><linearGradient id="2" gradientUnits="userSpaceOnUse" x1="-2888.3748" x2="-2887.3772" gradientTransform="matrix(-.5707-.4304-.1903 1.2906-1442.5089-2354.9172)"><stop stop-color="#f00"/><stop offset="1" stop-color="#ff0"/></linearGradient></defs><g fill="#2a5f9e"><path d="M32,2v30H2c0,16.6,13.4,30,30,30c16.6,0,30-13.4,30-30S48.6,2,32,2z"/><path d="m12 12h21v21h-21z"/></g><g fill="#fff"><path d="m18.9 8.1v5.9h-7.3l14.4 18h6v-7.5z"/><path d="m11 18.9h-6c-1.9 4-3 8.4-3 13.1h12v-18.1h-3v5"/></g><path fill="#ed4c5c" d="m32 27.1l-13-16.1h-6l17 21h2z"/><path d="M18.9,5v6H11v3h21V2C27.3,2,22.9,3.1,18.9,5z" fill="#fff"/><path d="M32,5H18.9C12.9,7.9,7.9,12.9,5,18.9V32h6V11h21V5z" fill="#ed4c5c"/><path d="m35 22.2l19.5-.1v17.3c0 0 .7 2.6-8.2 6.6 3.2-.3 6.6-3.7 6.6-3.7s1.4-1.8 2.1-.8c.7 1 1.3 1.5 1.8 1.9.5.4.9 1.5.1 2.3-.8.8-2 .9-2.3-.1-.5.3-3.6 4-10 4.2-6.5-.1-10-4.2-10-4.2s-.9 1.4-2.1.3c-1.2-1.4-.3-2.3-.3-2.3s1-.6 1.3-1c.5-.5.6-1.3 1.4-1.3.9.1 1.3.8 1.3.8s3.3 3.4 6.8 3.9c-7.9-3.8-8.2-6.1-8.2-6.7l.2-17.1" fill="#fff"/><path d="m35.5 22.6l18.6-.1v16.7c0 2.2-3.6 4.4-9.3 7.2-5.9-3-9.3-4.9-9.3-7.2v-16.6" fill="#006129"/><path fill="url(#0)" d="m37.6 25.1l.3-.6-.4-1.1-.2 1.7z"/><path fill="url(#1)" d="m37.6 28.3l.2-.6-.3-1.1-.3 1.7z"/><path fill="url(#2)" d="m37.6 31.5l.2-.7-.4-1-.2 1.7z"/><path fill="url(#3)" d="m39.6 34.9l.3-.6-.4-1.1-.2 1.7z"/><path fill="url(#4)" d="m37.3 37.7l.2-.6-.3-1.1-.3 1.7z"/><path fill="url(#5)" d="m37.3 41l.3-.6-.4-1.1-.2 1.7z"/><path fill="url(#6)" d="m49 25.1l.3-.6-.4-1-.2 1.6z"/><path fill="url(#7)" d="m48.9 28.3l.3-.6-.4-1.1-.2 1.7z"/><path fill="url(#8)" d="m48.8 31.5l.2-.6-.3-1.1-.3 1.7z"/><path fill="url(#9)" d="m48.9 34.7l.3-.6-.4-1.1-.2 1.7z"/><path fill="url(#A)" d="m48.9 37.9l.2-.7-.3-1-.3 1.7z"/><path fill="url(#B)" d="m48.9 41l.3-.6-.4-1-.2 1.6z"/><g fill="#ffc6b5"><path d="m44.3 24.4c.1.4-.3.6-.3.8 0 .3.1.8.5.9.6.2.1.8-.1 1.3.6-.1 1.3-.1 1.9-.2-.6-.9-.5-1.6-.5-2.6 0-.7-1.6-1-1.5-.2"/><path d="m44 27.2c-.8.4-.7 1.6-.8 2.4-.1.6-1 1.3-1.3 1.8-.4.6-.9 1-.9 1.7 0 1.2.6.6.9-.1.2-.5-.3-.6.3-1 .5-.4 1.4-.8 1.6-1.4.3-.9.1-2.4.2-3.4"/></g><path d="m44.7 26.6c.4.8.8 0 1.3 0 .5 0 .8.4 1.1.8.5.6-.2.5-.5 1-.3.5.3 1.4 0 1.8-.3.3 0 1.8-.1 2.3 0 .8 0 1.4.2 2.2.4 1.8.7 3.3 1.2 5 .1.4 0 .9.1 1.3.1.4.5.9-.2.9-.3 0-.3.2-.5.1-.2 0-.4 0-.7 0 .2 0-.9.4-.7.1-.2.2.1.6-.5.4-.2-.1-.1-.8-.5-.6.1 0 .3.3.1.4-.4.3-.5-.4-.9-.3-.2 0-1.4.5-1.4 0 0-1.1.3-2 .3-3.2 0-.2 0-.4 0-.5 0-.1-.3-.1-.3-.3 0-.5.1-1 .2-1.5.1-1.1.3-2.2.5-3.2h-.2c-.2-.9.5-2.3.5-3.3 0-.7-.9-1.1-.3-1.8.4-.5.5-1.4 1.3-1.6" fill="#fff"/><path d="m47.2 27.8c.5 0 .6 3.2.4 3.6-.4.6-.7 1.2-1 1.8-.2.4 0 .9-.1 1.2-.3.9-1.3-.1-.8-.8.3-.4.5-1.1.7-1.6.3-.6.7-1.2.4-1.9-.4-.7-.7-2 .4-2.3" fill="#ffc6b5"/><path d="m44.3 24.3c1-.1 2 2.6 2.3 1.5.9-2.9-2.8-2.4-2.3-1.5" fill="#9c5100"/><g fill="#f7c600"><path d="m37.9 25.6c.4.6.3.1.3.7.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.4.3c-.4.5 0 .6 0 .2 0-.3.7-.2.6-.7-.2-.3-.9.1-1.1.2-.7.4-1.2-.7-1.6-.1-.2.3-1.3.1-1.6.1.3.5.5.6.9.7"/><path d="m37.8 28.8c.4.6.3 0 .3.7.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.4.3c-.4.5 0 .6 0 .2 0-.3.7-.2.6-.7-.2-.3-.9.1-1.1.2-.7.4-1.2-.7-1.6-.1-.2.3-1.3.1-1.6.1.3.6.6.7.9.7"/><path d="m37.8 32c.4.5.3.1.3.7.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.4.3c-.3.5 0 .6 0 .2 0-.3.7-.2.6-.7-.2-.3-.9.1-1.1.2-.7.4-1.2-.7-1.6-.1-.2.3-1.3.1-1.6.1.3.5.6.6.9.7"/><path d="m41.1 34.5c-.4 0-.4.4-.9.4-.4 0-.7 0-1.1 0 .1.2.1.3.4.4.6.2.7.2.7.8.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.7.6c-.2.4.8-.3.9-.5.3-.6-.9-.1-1 0-.6.4-.7-.3-1.2-.3"/><path d="m37.6 38.2c.4.6.3.1.3.7.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.4.3c-.4.5 0 .6 0 .2 0-.3.7-.2.6-.7-.2-.3-.9.1-1.1.2-.7.4-1.2-.7-1.6-.1-.2.3-1.3.1-1.6.1.2.6.5.7.9.7"/><path d="m40.5 41.2c-.3.2-.2.7-.1.5.2-.3.2-.3.5-.5 1-.7-1-.1-1.1-.2-.4 0-.5.1-.8-.2-.5-.5-.4.2-.7.2-.5.1-1.1 0-1.6 0 .1.2.1.3.4.4.6.2.7.2.7.8.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1 .3.1-.2.4-.2.4"/><path d="m49.3 25.6c.4.6.3 0 .3.7.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.4.3c-.4.5 0 .6 0 .2 0-.3.7-.2.6-.7-.2-.4-.9.1-1.1.2-.7.4-1.2-.7-1.6-.1-.2.3-1.3.1-1.6.1.2.6.5.7.9.7"/><path d="m49.2 28.8c.4.6.3.1.3.7.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.4.3c-.4.5 0 .6 0 .2 0-.3.7-.2.6-.7-.2-.3-.9.1-1.1.2-.7.4-1.2-.7-1.6-.1-.1.3-1.3.1-1.6.1.2.6.5.6.9.7"/><path d="m49 32c.4.6.3.1.3.7.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1l-.4.3c-.4.5 0 .6 0 .2 0-.3.7-.2.6-.7-.2-.3-.9.1-1.1.2-.7.4-1.2-.7-1.6-.1-.2.3-1.3.1-1.6.1.3.6.6.7.9.7"/><path d="m52.7 34.5c-.2-.4-.9.2-1.1.2-.2 0-.4 0-.6 0-.3 0-.2-.4-.5-.4-.4 0-.4.4-.9.4-.4 0-.7 0-1.1 0 .1.2.1.3.4.4.6.2.7.2.7.8.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1 0 0-.9.6-.6.8 0 .1.9-.6.8-.8"/><path d="m52 38.1c-.3.2-.2.7-.1.5.2-.3.2-.3.5-.5 1-.7-1-.2-1.1-.2-.4 0-.5.1-.8-.2-.5-.5-.4.2-.7.2-.5.1-1.1 0-1.6 0 .1.2.1.3.4.4.6.2.7.2.7.8.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1 .4.1-.2.4-.2.4"/><path d="m52.1 41.3c-.3.2-.2.7-.1.5.2-.3.2-.3.5-.5 1-.7-1-.1-1.1-.1-.4 0-.5.1-.8-.2-.5-.5-.4.2-.7.2-.5.1-1.1 0-1.6 0 .1.2.1.3.4.4.6.2.7.2.7.8.6 0 1.1 0 1.7 0 0-.1-.1-.3-.2-.4.7-.1.8-.9 1.4-1 .3 0-.2.3-.2.3"/><path d="m46.9 42.9c.5-.6.3-.9.3-.9l-1.2-.6-.3.7.2.4c0 0 .4 1.1 1 .4"/><path d="m43.1 43c.2 0 1.4-.7 1.4-.7l-.1-.2-.4-.3c0 0-1.3.5-1.2.4-.1.1.2.8.3.8"/><path d="m56.9 44c-1-.4-1.8-2.1-2.4-2.2s-1.3.9-1.3.9c0 0-3.3 3.8-8.5 3.9-4.7.3-8.9-4.5-8.9-4.5s-.7-.6-1-.3c-.2.7-1.8 1.9-1.8 1.9s-.7.4-.6 1 1 1.2 1.2 1.3c.2 0 .7-.4.7-.4l.4-.4c0 0 4.6 4.4 10.1 4.3 5.3.2 10-4.3 10-4.3s.3-.1.4.5 1.1.2 1.3 0c.3-.2.9-.9.4-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb-1f1ee.svg b/riot/emojione/svg/1f1fb-1f1ee.svg new file mode 100644 index 0000000..2364a0c --- /dev/null +++ b/riot/emojione/svg/1f1fb-1f1ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f5f5f5"/><g fill="#ffce31"><path d="m28.7 24.6c-.2.5-.6.7-.6.7s7.9.7 7.6 0c-.3-.7-.9-1.2-.9-1.2s.6-.1.8-.3c-1-.5-1.6-1.5-1.6-1.5.3.1.7 0 .7 0-1.1-1.6-.6-2-1-3-.4-1-1.1-1.2-1.3-1.3-.2-.1-1.3-.2-1.8 0-.4.2-.5.5-.5.5 0 0-.4-.1-.5.3 0 .1 0 .1 0 .1-.2 0-.4 0-.6 0-1.1.1-.9 1.5-.9 1.5.1-.1.3-.5.7-.4.4.1.5 0 .7 0 .7 0 .8.7.8.9 0 0-.1.1-.1.2-.3.4-.3.6-.3.6-.2 1.2-.9 1.3-.9 1.3.4.2.5.1.6.1-.4.2-.9.8-.9.8-.3.5-.6.4-.6.4.3.4.6.3.6.3"/><path d="m57.1 17c-.4-.8-1.7.1-3.2.6 0 0-3.6 1.1-5.7 1.6-.2 0-.4.1-.4.1-5.8 1.5-7.4 2.4-7.4 2.4-1.1.7-.8 2.3-.1 2.8.3.2.3.6.1.8-.3.2-.6 0-.6 0-1-.5-1.5-.1-1.5-.1s-.9 4.3.2 4.9l-.2 1.4c0 0 .8.7 1.6 0 0 0 .3.3.9.2.6-.1.7-.4.7-.6 0 0 .5.3.9.1.4-.2.4-.6.4-.6s.7.1 1.1-.4c.4-.5.1-1-.1-1 0 0 .8.2 1-.5.2-.6-.2-.9-.2-.9s1.7 0 2.3-.5c0 0 .6-.4.2-.7 0 0 1.5-.2 1.9-.8 0 0 .2-.2.1-.5 0 0 0-.2-.2-.2 0 0 1.7-.3 2.2-.8 0 0 .2-.3.1-.6 0 0 0-.1-.1-.2 0 0 1.6-.3 2.3-1 0 0 .4-.4.2-.9 0 0 2.6-.7 2-1.9 0 0 1.2-.4.8-1.5.1.1 1.1-.4.7-1.2"/><path d="m19.3 28.8c.2.7 1 .5 1 .5-.2.1-.4.5-.1 1 .4.5 1.1.4 1.1.4s0 .3.4.6c.4.2.9-.1.9-.1.1.2.1.5.7.6.6.1.9-.2.9-.2.7.7 1.6 0 1.6 0l-.2-1.4c1.1-.6.2-4.9.2-4.9s-.5-.4-1.5.1c0 0-.3.2-.6 0-.2-.2-.2-.6.1-.8.7-.5 1-2.1-.1-2.8 0 0-1.6-.9-7.4-2.4 0 0 0 0 0 0s-.2-.1-.4-.1c-2.1-.4-5.7-1.6-5.7-1.6-1.5-.4-2.8-1.3-3.2-.6-.4.8.6 1.3.6 1.3-.4 1.1.8 1.5.8 1.5-.6 1.1 2 1.9 2 1.9-.2.5.2.9.2.9.8.7 2.3 1 2.3 1 0 .1-.1.2-.1.2-.1.3.1.6.1.6.5.6 2.2.8 2.2.8-.2 0-.2.2-.2.2-.1.3.1.5.1.5.4.6 1.9.8 1.9.8-.3.4.2.7.2.7.7.5 2.3.5 2.3.5s-.3.2-.1.8"/><path d="m26.1 37.4c0 0 .2-.6 1.1-1.1 0 0 1.1-.4 1.1-.9 0-.5-2.4-3.4-2.4-3.4s-.2.9-1.6 2.1c0 0-1.1.9-1 2 0 1.1-.2 1.2-.6 1.6 0 0 .1 0 .3 0-.3.4-.8.9-1.4 1 0 0-1.4-.2-1.9.2-.3.3-.6.5-.7 1.2-.1.7.2.8.3.8 0 0 .1.5.5.4 0 0 0 .5.9.3.8-.2 1.2-.2 1.3-1 .2-.8.3-.8.5-.9.2-.1.6-.3.9-.4.2-.1 1-.5 1.4-.6 0 .1 0 .2.1.3 0 0 .1-.2.4-.3 0-.3.6-.4.8-1.3"/><path d="m44.3 38.9c-.4-.4-1.9-.2-1.9-.2-.6 0-1.1-.6-1.4-1 .2 0 .3 0 .3 0-.4-.4-.6-.5-.6-1.6 0-1.1-1-2-1-2-1.4-1.2-1.6-2.1-1.6-2.1s-2.4 2.9-2.4 3.4c0 .5 1.1.9 1.1.9 1 .5 1.1 1.1 1.1 1.1.2.9.8 1 .8 1 .3.1.4.3.4.3 0-.1.1-.2.1-.3.4.1 1.2.5 1.4.6.3.2.7.3.9.4.1.1.3.1.5.9.2.8.5.8 1.3 1 .8.2.9-.3.9-.3.5.1.5-.4.5-.4.1 0 .4-.2.3-.8-.2-.5-.5-.7-.7-.9"/><path d="m36.1 36.8c0-.2-.1-.5-.5-1-1-1.1-2.6 1.3-3 2-.1-.2-.3-.3-.5-.3-.2 0-.4.1-.5.3-.5-.7-2-3.1-3-2-.4.5-.5.8-.5 1-3.9 3.6-2 3.9-2 3.9 0 .9.8.7.8.7-.1 1 .7.9.7.9 0 1.1.8.9.8.9.1 1.2 1 .7 1 .7 0 1 .6 1.1.6 1.1.7.1 1-.7 1.1-.9 0 .2 0 .3 0 .5.1.8.5 1.4 1.1 1.4.6 0 1-.7 1.1-1.4 0-.2 0-.3 0-.5.1.3.4 1 1.1.9 0 0 .6-.1.6-1.1 0 0 .9.5 1-.7 0 0 .8.2.8-.9 0 0 .8.1.7-.9 0 0 .8.2.8-.7-.2.1 1.7-.2-2.2-3.9"/></g><path fill="#0081c6" d="m47.3 33.9l.8.4-4 4.6.5.5 3.9-4.7.5.8 1.9-4z"/><g fill="#428bc1"><path d="m47.6 32.2l.6.7 1-4.4-3 3.2.8.2-2.7 5.3.8-3.7.8.5-.1-4.5-2.2 3.9h.9l-1.3 5.4.6.4.1-.2.1.1z"/><path d="m43.4 42.3l-.4-.6.1-.5c0 0 0 0 0 0l.3-.4c0-.1 0-.2-.1-.3-.1-.1-.2-.2-.3-.2-.1-.1-.3-.1-.3-.1l-.5 1h-1l-.4.8-.3-.1-2.8 3.3 1.5.1.3 1.5 1-1.2-.3 1.1 1.4-.6.9 1.2 1-4.3-.4-.4.3-.3"/></g><g fill="#83bf4f"><path d="m20.9 39.1c0 0 0-.3.6-.6s.7-1.1.5-1.7c0 0-.3.6-.7.7 0 0-.6.3-.7 1 0 0 0 .2-.1.4 0 .1-.3-.8.2-1.5.6-.7.7-1.2.3-2.3 0 0 0 .7-.5 1-.4.4-.5.4-.5 1.3 0 0 0 .3-.2.4 0 0-.3-.5-.4-.8-.1-.3-.1-.5.3-.8 0 0 1.2-.8.3-2.5 0 0 0 .6-.5 1-.4.4-.4.6-.4 1.2 0 .6-.1.6-.1.7 0 0-.8-1.4-.2-2.2.6-.8.9-.9.3-2.3 0 0 0 .7-.5 1.1-.5.4-.4 1.2-.4 1.2s0 .3-.1.5c0 0-.8-1.5 0-2.3.6-.7.6-1.1.3-2.1 0 0 0 .4-.4.7-.3.2-.6.5-.5 1.4 0 0 0 .6-.1.8 0 0-.3-.6-.4-1s-.1-.6.1-1 1.2-1.5.1-3.1c0 0 0 .5-.3 1s-.1 1-.1 1.4c.1.4-.1.8-.1.8s-.5-.9-.4-1.9c.1-1-.3-1.8-1.2-2.4 0 0-.7 1.6.2 2.4 0 0 .8.8 1 1.7 0 0-.6-.1-1.1-1.1-.5-1.1-1.7-.9-1.7-.9 0 0 .2 1.6 1.9 2.1 0 0 1.1.2 1.3 1 0 0 .2.6.3.8 0 0-.3-.1-.7-.6-.3-.5-.3-.5-1.4-.6 0 0-.4 0-.7-.4 0 0 .5 1.7 1.6 1.7 0 0 1.1-.1 1.7 1.3 0 0-.1-.1-.3-.2-.2-.1-.6-.3-1.3-.2-.8.1-1 0-1.2-.1 0 0 .8 1.5 1.9 1 1.1-.4 1.7 1.1 1.7 1.2 0 0-.2-.1-.3-.3-.2-.2-.6-.4-1.4-.2 0 0-.6.2-1.1 0 0 0 .5 1.1 1.8.9 1.3-.2 1.6.9 1.6.9s-.2-.1-.3-.2c-.1-.1-.5-.3-1.5-.1-.9.3-1.3 0-1.3 0s.5.9 1.5 1c0 0 .5 0 .8-.1.2-.1.8-.2 1.3.4 0 0-.1 0-.3-.1 0 0-.7-.2-1.2.2 0 0-.4.5-1.1.4 0 0 .8.8 2.1.1 0 0 .4-.3.8-.1.5.4 1.2 0 1.2 0"/><path d="m20.8 41c0 0 0-.6.7-.6l2.2 3c0 0-.1.2-1.1.2 0 0-.1 0-.2.1 0 .2-1.6-2.7-1.6-2.7"/></g><path d="m31.9 38.4c0 0 6.6-2.9 6.6-9.7h-13.2c0 6.8 6.6 9.7 6.6 9.7" fill="#fff"/><g fill="#ed4c5c"><path d="m26.3 28.7v4.3c0 0 .5 1 1 1.6v-5.9h-1"/><path d="m28.4 28.7v7.1c0 0 .6.6 1 .9v-8c0 0-1 0-1 0"/><path d="m30.4 28.7v8.8c0 0 .7.5 1 .6v-9.4h-1"/><path d="m37.5 28.7v4.3c0 0-.5 1-1 1.6v-5.9h1"/><path d="m35.5 28.7v7.1c0 0-.6.6-1 .9v-8c0 0 1 0 1 0"/><path d="m33.5 28.7v8.8c0 0-.7.5-1 .6v-9.4h1"/></g><g fill="#428bc1"><path d="m38.5 23.8c0 0-3.2 1.7-6.6-.1-3.4 1.8-6.6.1-6.6.1v4.9h13.2v-4.9"/><path d="m8.4 36.4c.4-.1.6-.3.6-.6 0-.1 0-.3-.1-.5l-2.1-6.6c-.1-.4-.2-.6-.3-.7-.1-.2-.3-.3-.5-.4h.3 2.2.3c-.3.1-.6.3-.6.6 0 .1 0 .3.1.5l1.6 5.2 1.6-5.2c.1-.2.1-.4.1-.5 0-.3-.3-.4-.6-.6h.3 2.1.3c-.2.1-.4.2-.5.4 0 .1-.1.3-.3.7l-2.1 6.6c-.1.3-.1.5-.1.5 0 0-.1.4.6.6h-2.9"/><path d="m54.2 35.7v-7.4c0-.1 0-.2-.1-.3 0-.1-.2-.3-.5-.4h.3 1.9.3c-.3.1-.4.3-.5.4s-.1.2-.1.3v7.4c0 .1 0 .2.1.3 0 .1.2.2.5.4h-.3-1.9-.3c.3-.1.4-.3.5-.4.1-.1.1-.2.1-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb-1f1f3.svg b/riot/emojione/svg/1f1fb-1f1f3.svg new file mode 100644 index 0000000..a35b203 --- /dev/null +++ b/riot/emojione/svg/1f1fb-1f1f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f42f4c"/><path fill="#ffe62e" d="m32 39l9.9 7-3.7-11.4 9.8-7.4h-12.2l-3.8-11.2-3.7 11.2h-12.3l9.8 7.4-3.7 11.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb-1f1fa.svg b/riot/emojione/svg/1f1fb-1f1fa.svg new file mode 100644 index 0000000..51ac13f --- /dev/null +++ b/riot/emojione/svg/1f1fb-1f1fa.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C22.8,2,14.6,6.1,9.1,12.7V32h52.1v-7C58,11.8,46.2,2,32,2z" fill="#ed4c5c"/><path d="M9.1,32v19.3C14.6,57.9,22.8,62,32,62c14.2,0,26-9.8,29.2-23v-7H9.1z" fill="#83bf4f"/><g fill="#3e4347"><path d="M9.1,12.7c-0.9,1.1-1.8,2.3-2.6,3.5v3.7h-2C2.9,23.6,2,27.7,2,32s0.9,8.4,2.6,12.1h2v3.7 + c0.8,1.2,1.6,2.4,2.6,3.5L28.4,32L9.1,12.7z"/><path d="m61.9 34v-4c-.1-1.7-.4-3.4-.8-5h-52v14h52.1c.4-1.6.6-3.3.7-5"/></g><path d="m6.5 16.2c-.7 1.2-1.4 2.4-2 3.7l12.2 12.1-12.1 12.1c.6 1.3 1.2 2.5 2 3.7l13.7-13.8h41.6c0-.7.1-1.3.1-2s0-1.3-.1-2h-41.6l-13.8-13.8" fill="#ffce31"/><g fill="#fdce12"><path d="m7.3 26.7c-1.1 0-4.6.8-4.6 4.4s3.4 4 4.1 4c.7 0 3.2-.6 2.9-3.3 0 .8-.9 2.4-2.7 2.4-1.8 0-3-1.4-3-2.7s1.1-3.1 3-3.1 3.3 1.7 3.3 3.4c0 1.7-1.4 3.9-3.5 3.9 0 0 0 1.3 0 2.1 1.8 0 5.3-1.4 5.3-5.8.1-4.5-3.7-5.3-4.8-5.3"/><path d="m7.4 30.9c0-.1 0-.1 0 0v-.1c.1-.1.4-.1.5-.2.3-.2.5-.4.7-.9v-.1c-.5-.1-.9.1-1.1.4-.1.2-.2.4-.3.5 0 .1-.1.1-.1.1-.1 0-.1-.1-.1-.1-.1-.1-.2-.4-.3-.5-.2-.3-.6-.5-1.1-.4v.1c.2.4.4.7.7.9.2.1.4.1.5.2 0 0 .1.1.1.1 0 0 0 0-.1 0-.4.1-.7.4-.9.7-.2.3-.4.7-.3 1.1h.1c.4-.1.7-.4 1-.6.2-.3.4-.5.5-.9.1.3.3.6.5.9.3.2.5.5 1 .6h.1c0-.5-.1-.8-.3-1.1-.4-.3-.7-.6-1.1-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fb.svg b/riot/emojione/svg/1f1fb.svg new file mode 100644 index 0000000..fd7586d --- /dev/null +++ b/riot/emojione/svg/1f1fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m38.4 17.5h6.3l-9.9 29h-5.7l-9.8-29h6.5l6.3 22 6.3-22" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fc-1f1eb.svg b/riot/emojione/svg/1f1fc-1f1eb.svg new file mode 100644 index 0000000..16bfba0 --- /dev/null +++ b/riot/emojione/svg/1f1fc-1f1eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,13.1,8.4,24.2,20,28.3V3.7C10.4,7.8,2,18.9,2,32z" fill="#428bc1"/><path d="m62 32c0-13.1-8.3-24.2-20-28.3v56.6c11.7-4.1 20-15.2 20-28.3" fill="#ed4c5c"/><path d="M22,60.3c3.1,1.1,6.5,1.7,10,1.7s6.9-0.6,10-1.7V3.7C38.9,2.6,35.5,2,32,2s-6.9,0.6-10,1.7V60.3z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fc-1f1f8.svg b/riot/emojione/svg/1f1fc-1f1f8.svg new file mode 100644 index 0000000..67b769c --- /dev/null +++ b/riot/emojione/svg/1f1fc-1f1f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2v30H2c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2z" fill="#ed4c5c"/><path d="M32,2C15.4,2,2,15.4,2,32h30V2z" fill="#2a5f9e"/><g fill="#fff"><path d="m19 13.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m19 27.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m14 18.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m24 18.1l1.2.9-.4-1.5 1.2-1h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5z"/><path d="m22 22.5l.6.5-.2-.8.6-.4h-.8l-.2-.8-.2.8h-.8l.6.4-.2.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fc.svg b/riot/emojione/svg/1f1fc.svg new file mode 100644 index 0000000..3f2ce79 --- /dev/null +++ b/riot/emojione/svg/1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m20 17.5l3.8 16.6.8 4.6.8-4.5 3.3-16.7h6.4l3.4 16.6.9 4.6.9-4.4 3.9-16.8h6.2l-8.2 29h-5.8l-3.5-17-1-5.6-1 5.6-3.5 17h-5.6l-8.2-29c0 0 6.4 0 6.4 0" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fd-1f1f0.svg b/riot/emojione/svg/1f1fd-1f1f0.svg new file mode 100644 index 0000000..4a771e9 --- /dev/null +++ b/riot/emojione/svg/1f1fd-1f1f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#428bc1"/><path d="m29 26.8c0 0-1 1.5-2.7 2.2 0 0 .1 2.5-1.5 2.7-1.5.2-2.9 0-2.9 0s.2 2.3-.8 1.7c-1.1-.6-4.1-.5-2.9 1.3 1.2 1.8 3.1 2.6 3.6 6.8 0 0 5.2 1.8 5.6 5.5.4 3.6-.1 4.3-.1 4.3s3.2.2 3.2-2.4c0-2.5 1.9-2.4 2.8-2.5s1.7-2.4 2.9-1.4c1.2 1 2.2 1.2 3.1-.2.9-1.5 3.6-1.7 3.6-1.7s.1-4.3 3.1-6.9c0 0-1.5-2.6-4.9-2.6 0 0-.2-3.2-2.9-3.2 0 0-1.9-3.5-5-3.5 0 0-1.1-1.4-1.1-3.6 0 0-2 .3-2.8 1-.8.7-1.5.6-1.5.6s.7.6 1.2 1.9" fill="#dbb471"/><g fill="#fff"><path d="m28 17.5l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m21 19.5l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m36 17.5l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m14 23.5l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m50 22.5l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/><path d="m43 19.5l1.9 1.4-.7-2.3 1.8-1.4h-2.3l-.7-2.3-.7 2.3h-2.3l1.8 1.4-.7 2.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fd.svg b/riot/emojione/svg/1f1fd.svg new file mode 100644 index 0000000..0b95b59 --- /dev/null +++ b/riot/emojione/svg/1f1fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m26.2 46.5h-7l9.3-14.8-8.9-14.2h7.2l5.2 9.4 5.3-9.4h7l-8.9 14 9.4 15h-7.4l-5.4-9.9-5.8 9.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fe-1f1ea.svg b/riot/emojione/svg/1f1fe-1f1ea.svg new file mode 100644 index 0000000..beeca62 --- /dev/null +++ b/riot/emojione/svg/1f1fe-1f1ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C18.9,2,7.8,10.4,3.7,22h56.6C56.2,10.4,45.1,2,32,2z" fill="#c94747"/><path d="M32,62c13.1,0,24.2-8.3,28.3-20H3.7C7.8,53.7,18.9,62,32,62z" fill="#3e4347"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32s0.6,6.9,1.7,10h56.6c1.1-3.1,1.7-6.5,1.7-10s-0.6-6.9-1.7-10H3.7z" fill="#f9f9f9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fe-1f1f9.svg b/riot/emojione/svg/1f1fe-1f1f9.svg new file mode 100644 index 0000000..b2627bf --- /dev/null +++ b/riot/emojione/svg/1f1fe-1f1f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f5f5f5"/><path d="m17.8 21.2v-4.1h1.3l.9 3.1.9-3.1h1.3v4.1h-.8v-3.3l-.9 3.3h-.9l-.9-3.3v3.3h-.9m6.9-3.3l-.6 1.7h1.2l-.6-1.7m-.5-.8h1l1.6 4.1h-.9l-.3-.8h-1.7l-.3.8h-.9l1.5-4.1m5 4.1h-.9v-1.5l-1.6-2.5h1.1l.9 1.8.9-1.8h1l-1.4 2.5v1.5m2.5-2.1c0 .4.1.8.3 1 .2.2.5.4.9.4.4 0 .7-.1.9-.4.2-.2.3-.6.3-1 0-.4-.1-.8-.3-1-.2-.2-.5-.4-.9-.4-.4 0-.7.1-.9.4s-.3.6-.3 1m-.9 0c0-.7.2-1.2.6-1.6.4-.4.9-.6 1.6-.6.7 0 1.2.2 1.6.6.4.4.6.9.6 1.6 0 .7-.2 1.2-.6 1.6-.4.4-.9.6-1.6.6-.7 0-1.2-.2-1.6-.6-.4-.4-.6-.9-.6-1.6m5.9 2.1v-3.3h-1.3v-.7h3.5v.7h-1.3v3.3h-.9m3.6 0v-3.3h-1.3v-.7h3.5v.7h-1.3v3.3h-.9m2.7 0v-4.1h3.2v.7h-2.3v.9h2.1v.7h-2.1v1h2.4v.8h-3.3" fill="#ed4c5c"/><path d="m22.7 44.7c-1.3.4-3.1 1.3-3.8 1.8-.2.2-.2.4.1 1.1.3.5.5.9.6.9.1 0 .8-.3 1.6-.7.8-.4 1.8-.9 2.3-1 .4-.1.7-.1.9-.2.1.2 0 .1.2.4.2.4.1.4.4.6.4.1 1.3-.4 1.3-.4 1.1-.4 1.7-.4 5.7-.4s4.6 0 5.7.4c0 0 .9.3 1 .3.1 0 .2.1.3 0 .1 0 .2-.2.3-.3 0 0 .2-.6.3-.8.2.1.6.2 1 .4.4.2 1.4.6 2.2 1 .8.4 1.5.7 1.6.7 0 0 .3-.4.6-.9.5-1 .6-.9-1.3-1.9-2.5-1.3-4.9-1.9-5.2-1.2 0 .1-.1.2-.1.3-.2-.1-.9-.2-1.5-.3-2-.4-7.5-.4-9.5 0-.6.1-1.1.3-1.5.4-.2-.4-.2-.2-.2-.4-.3-.4-1.4-.3-3 .2" fill="#3e4347"/><g fill="#dfdfdf"><path d="m24.8 44.4c-.9 0-2.6.6-4.4 1.5-1.5.7-1.5.8-1.1 1.6.2.4.4.7.4.7.1 0 .7-.3 1.5-.7.8-.4 1.8-.8 2.3-1 .3-.1.6-.1.9-.2-.1-.3 0 0-.2-.6.2-.6.7-1.1 1.2-1.2-.3 0-.4-.1-.6-.1"/><path d="m31.8 44.5c-1.8 0-3.5.1-4.3.2-1.4.2-2.1.7-2.6.9-.2.1-.3.2-.5.3.2.4.2.6.3.9.1.3.1.5.5.6.4 0 1.2-.4 1.2-.4 1.1-.4 1.7-.4 5.7-.4 4 0 4.8.1 5.7.4.7.2.9.4 1.2.4.1 0 .2-.2.3-.5.1-.3.3-.8.4-1.3-.2 0-.1.1-.4-.1-.6-.3-.7-.3-1.1-.5-.5-.2-.9-.2-1.6-.3-.8-.1-2.7-.2-4.5-.2h-.3"/><path d="m39.2 44.5c-.1 0-.2 0-.3 0 .2.1.4.3.5.4.4.2.4.5.4.9 0 .2 0 .3-.1.5.2.1.6.2.9.4.4.1 1.4.6 2.3 1 .8.4 1.4.7 1.5.7 0 0 .2-.4.4-.7.3-.5.3-.7.1-.9-.5-.4-2.4-1.3-3.7-1.7-1-.5-1.6-.6-2-.6"/><path d="m38.6 44.6c-.1.1-.1.2-.1.3.1 0 .6.3.9.3h.1c0 0-.1-.1-.3-.2-.2-.1-.4-.3-.6-.4"/><path d="m25.4 44.6c-.1.1-.4.3-.5.4-.3.2-.3.3-.4.6 0 0 .2-.2.7-.4.4-.2.2-.1.5-.2-.2-.2-.3-.2-.3-.4"/></g><path d="m26.1 24.8c-.5.2-.7.6-.8 1.1 0 .5.1.9.4 1.2.1.1.3.3.3.3 0 0-.1.2-.2.3-.3.3-.5.7-.5 1.1 0 .4.1.7.5 1l.3.3-.3.3c-.6.7-.6 1.4 0 2l.3.3h6.1 6.1l.3-.3c.6-.6.6-1.3 0-2l-.4-.4.3-.3c.6-.7.6-1.4 0-2.1-.3-.3-.3-.4-.1-.5.4-.2.6-1 .4-1.5-.2-.7-1.3-1.2-1.9-.9-.1.1-.3.2-.5.4-.2.1-.3.3-.4.3 0 0-.2-.1-.3-.3-.6-.5-1.4-.5-2 .1l-.2.2-.3-.3c-.6-.6-1.4-.6-2.1.1l-.2.2-.3-.2c-.4-.4-.6-.5-1.1-.5-.4 0-.8.2-1.1.5l-.2.2-.3-.3c-.7-.6-1.2-.6-1.8-.3" fill="#2a5f9e"/><path d="m25.7 33.1c-.6.7-.6 1.4 0 2.1l.2.3-.3.3c-.1.2-.3.4-.4.5-.2.5-.1 1.2.4 1.5.2.2.3.3 0 .6-.1.1-.2.3-.3.4-.5.9.2 2.1 1.3 2.1.4 0 .8-.1 1-.4.2-.2.4-.3.6 0 .3.3.7.5 1 .5.4 0 .6-.1 1-.5l.3-.3.3.3c.6.6 1.2.7 2 .1l.3-.2.3.3c.4.3.6.4 1 .4.4 0 .6-.1 1-.5l.3-.3.3.2c.5.4.8.6 1.1.6.4 0 .6-.1 1-.5.4-.3.5-.7.5-1 0-.3-.3-.9-.6-1.1l-.2-.2.3-.3c.6-.7.6-1.3 0-2.1l-.3-.3.3-.3c.6-.7.6-1.4 0-2l-.3-.3h-6.1-6.1l.1.1" fill="#ed4c5c"/><path d="m24.4 32.2c0 0 0 6.1 0 8.4 0 .3.2.4.5.7.5.4 1 .8 3.7.5 2.5 0 3 .2 3.3 1.2l.1.6.1-.6c.2-1 .8-1.2 3.2-1.2 3.1 0 3.4-.1 3.8-.5 0 0 .3-.2.4-.5.1-.3 0-.5 0-.5v-8.1-8.5h-7.5-7.6c0 0 0 8.5 0 8.5m15 .1v7c0 .9.1 1.2 0 1.4-.1.2-.3.4-.3.4-.5.5-.9.6-3 .5-1.4 0-2.1 0-3.2.2-.2.2-.6.1-.9 1-.3-.9-.5-.9-.5-.9-1.2-.5-1.7-.4-3.5-.4-1.2.2-2.5-.1-3-.5 0 0-.1 0-.4-.4 0-1.7 0-8.4 0-8.4v-8.4h7.4 7.4v8.5" fill="#3e4347"/><path d="m30.9 29.4c.8.5 2.1.4 2.8-.4.3-.3.4-.8.5-1 .1-.2.1-.3.1-.5.1.2.2.3.2.7.1.5 0 .9-.2 1.3-.6 1.6-2.6 2.1-3.8.9-.6-.5-1.1-1.6-.8-2.3.1-.2.1-.4.2-.6 0 .2 0 .4.2.8.2.5.5.8.8 1.1" fill="#fff"/><path d="m29 35.7c0 .4 0 .6.1.8-.2-.2-.4-.3-.6-.5-.3-.2-.8-.4-.9-.1-.1.2.3.5.6.7.3.2.5.2.8.3-.2.1-.4.2-.7.3-.3.2-.7.5-.5.8.2.2.6 0 .9-.2.2-.1.5-.4.6-.5 0 .2-.1.5-.1.8 0 .4.1.8.4.8.3 0 .4-.5.4-.9 0-.4 0-.6-.1-.8.1.1.3.3.6.5.2.2.7.4.9.2.2-.2-.1-.5-.5-.8-.3-.2-.5-.3-.7-.4.2-.1.4-.1.8-.3.5-.3.7-.5.6-.8-.1-.2-.4-.1-.9.2-.2.2-.5.4-.6.5 0-.2.1-.6.1-.8 0-.4-.1-.9-.3-.9-.8.2-.8.6-.9 1.1" fill="#ffce31"/><path d="m29.8 36.9c0 .2-.2.4-.4.4-.2 0-.4-.2-.4-.4 0-.2.2-.4.4-.4.2 0 .4.2.4.4" fill="#fff"/><path d="m34.3 35.7c0 .4 0 .6.1.8-.2-.2-.4-.3-.6-.5-.3-.2-.8-.4-.9-.1-.1.2.3.5.6.7.3.2.5.2.8.3-.2.1-.4.2-.7.3-.3.2-.7.5-.5.8.2.2.6 0 .9-.2.2-.1.5-.4.6-.5 0 .2-.1.5-.1.8 0 .4.1.8.3.8.3 0 .4-.5.4-.9 0-.4 0-.6-.1-.8.1.1.3.3.6.5.2.2.7.4.9.2.2-.2-.1-.5-.5-.8-.3-.2-.5-.3-.7-.4.2-.1.4-.1.8-.3.5-.3.7-.5.6-.8-.1-.2-.4-.1-.9.2-.2.2-.5.4-.6.5 0-.2.1-.6.1-.8 0-.4-.1-.9-.3-.9-.8.2-.8.6-.8 1.1" fill="#ffce31"/><path d="m35 36.9c0 .2-.2.4-.4.4-.2 0-.4-.2-.4-.4 0-.2.2-.4.4-.4.2 0 .4.2.4.4" fill="#fff"/><path d="m23.4 34.7c-.4-1.8-1.4-3.2-2.7-4 .6 0 1.1 0 1.1 0l1.5-.1-1.3-.8c-.4-.2-1.4-1.1-1.4-1.8 0-.2 0-.4.4-.7l.9-.7-1-.1.4-1-1.1.3-.1-1 .4-.3-.9-.8-.8-.1-.9.4-.3-.8-.5.8-.6-.8-.3 1.2-.7-.4-.2 1-1-.8.1 1.6-1.5-.3.4 1.2-1.3-.1 1 1.9-1.2.7 1.7 1.7v.5l-3.5-.8 2.1 2.1-.6 2.1 2.4.2-.9 1.8 2.9-.7.7 1.9c-.1 0-.3-.1-.4-.1-1.6 0-3 2.5-3 3.9 0 1.4 2.4 3.8 4.8 3.8 1 0 1.9-.4 2.7-1.2 2.5-2.4 3.5-6.2 2.7-9.7m-5.4 1.7c.6.6 1.8 2 1.9 4.1 0 .7-.4 1.6-1.1 2.4-.5.5-.9.7-1.1.7-1.9-.4-2.9-1.2-2.8-2.4.1-.9.7-1.5.9-1.5.4 0 .4.1.4.5 0 .2.1.5.4.7l.2.1h.1c.4 0 .7-.3.9-.7.2-.5.2-1.2-.4-1.8-.2-.2-.4-.3-.6-.4l1.2-1.7" fill="#3e4347"/><path d="m18.9 24.3l-1.3.5-.1-.3-.3.5-.4-.5-.2.8-.7-.4-.2 1.1-.8-.6.1 1.2-1.4-.2.3 1.1-1.1-.1.8 1.5-1 .6 1.4 1.4.1 1.3-2.4-.6 1 1.1-.5 1.8 2.5.2-.8 1.6 2.3-.6.6 1.6 1.1-1.5c0 0 2.4 1.6 2.5 4.8 0 1.8-1.9 3.8-2.8 3.6-5-1-2.9-4.9-1.8-4.9 1.2 0 .8 1.1 1 1.2.4.2.9-.8.2-1.6-1.4-1.4-3.4 1.4-3.4 3.1 0 1.4 3.8 5.1 6.6 2.3 4.3-4.3 3.5-12.1-.9-13.4-4.4-1.3-3.3-3.2-3.3-3.2.5 3.2 5.6 2.8 5.6 2.8s-2.6-2-.9-3.5h-.5l.3-.6-.7.2-.1-.9-.5.5-.8-.2-.2-.5 1.5-1-.3-.2h-.5" fill="#dfdfdf"/><path d="m43.4 44.5c.8.8 1.7 1.2 2.7 1.2 2.4 0 4.8-2.4 4.8-3.8 0-1.5-1.4-3.9-3-3.9-.1 0-.3 0-.4.1l.7-1.9 2.9.7-1-1.9 2.4-.2-.5-2.1 2.1-2.1-3.5.8v-.5l1.7-1.7-1.2-.7 1-1.9-1.3.1.4-1.2-1.5.3.1-1.6-1 .8-.2-1-.8.4-.3-1.2-.6.8-.5-.8-.3.8-.9-.4-.8.1-.9.8.4.3-.1 1-1.1-.3.4 1-1 .1.9.7c.4.3.4.5.4.7 0 .7-1.1 1.5-1.4 1.8l-1.2.8 1.5.1c0 0 .5 0 1.1 0-1.3.8-2.2 2.2-2.7 4-.9 3.5.1 7.3 2.7 9.8m3.8-6.5c-.2.1-.4.2-.6.4-.6.6-.6 1.3-.4 1.8.2.4.5.7.9.7h.1l.2-.1c.3-.1.4-.5.4-.7 0-.4.1-.5.4-.5.2 0 .9.6.9 1.5.1 1.2-.9 2-2.8 2.4-.2 0-.7-.2-1.1-.7-.7-.7-1.1-1.7-1.1-2.4.1-2.1 1.3-3.5 1.9-4.1l1.2 1.7" fill="#3e4347"/><path d="m45.1 24.3h-.5l-.2.2 1.5 1-.3.5-.8.2-.5-.5-.1.9-.7-.2.3.6h-.5c1.7 1.4-1.1 3.3-1.1 3.3s5.2.4 5.6-2.8c0 0 1.1 1.9-3.3 3.2-4.4 1.4-5.2 9.1-.9 13.4 2.9 2.9 6.6-.9 6.6-2.3 0-1.7-2-4.4-3.4-3.1-.7.7-.2 1.7.2 1.6.2-.1-.1-1.2 1-1.2 1.2 0 3.3 3.9-1.8 4.9-.9.2-2.9-1.8-2.8-3.6.1-3.1 2.5-4.8 2.5-4.8l1.1 1.5.6-1.6 2.3.6-.8-1.6 2.5-.2-.5-1.8 1-1.1-2.4.6.1-1.3 1.4-1.4-1-.6.8-1.5-1.1.1.3-1.1-1.2.3.1-1.2-.8.6-.2-1.1-.7.4-.2-.8-.4.6-.3-.5-.1.3-1.3-.5" fill="#dfdfdf"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1fe.svg b/riot/emojione/svg/1f1fe.svg new file mode 100644 index 0000000..fe9e109 --- /dev/null +++ b/riot/emojione/svg/1f1fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M38,17.5h6.9l-9.7,18.1v10.9h-6.1V35.6l-10-18.1h7.1l6,12.6L38,17.5z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ff-1f1e6.svg b/riot/emojione/svg/1f1ff-1f1e6.svg new file mode 100644 index 0000000..5253e63 --- /dev/null +++ b/riot/emojione/svg/1f1ff-1f1e6.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,40c0.7-2.5,1.1-5.2,1.1-8c0-2.8-0.4-5.5-1.1-8H31.7L14.8,7.4c-4,2.8-7.3,6.6-9.6,11L19,32L5.3,45.6 + c2.2,4.4,5.5,8.2,9.6,11L31.7,40H60.9z" fill="#699635"/><path d="m3.5 22.5c-1 3-1.5 6.2-1.5 9.5s.5 6.5 1.5 9.5l9.6-9.5-9.6-9.5" fill="#3e4347"/><path d="M18.3,58.7C22.4,60.8,27.1,62,32,62c12.3,0,22.9-7.4,27.5-18.1H33.4L18.3,58.7z" fill="#428bc1"/><path d="m59.5 20.1c-4.6-10.7-15.2-18.1-27.5-18.1-4.9 0-9.6 1.2-13.7 3.3l15.1 14.8h26.1" fill="#ed4c5c"/><path d="m60.5 22.7c-.3-.9-.6-1.8-1-2.6h-26.1l-15.1-14.8c-.7.3-1.3.7-2 1.1-.5.3-1 .7-1.5 1l16.9 16.6h29.2c-.1-.4-.2-.9-.4-1.3" fill="#fff"/><path d="m5.3 18.4c-.1.2-.2.4-.3.7-.5 1.1-1 2.2-1.4 3.4l9.6 9.5-9.6 9.5c.4 1.2.8 2.3 1.4 3.4.1.2.2.4.3.7l13.7-13.6-13.7-13.6" fill="#ffce31"/><path d="m31.7 40l-16.9 16.6c.3.2.7.5 1 .7.8.5 1.6 1 2.5 1.4l15.1-14.8h26.1c.4-1 .8-2 1.2-3.1.1-.3.1-.5.2-.8h-29.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ff-1f1f2.svg b/riot/emojione/svg/1f1ff-1f1f2.svg new file mode 100644 index 0000000..16306c7 --- /dev/null +++ b/riot/emojione/svg/1f1ff-1f1f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M42,32h10h10C62,15.4,48.6,2,32,2S2,15.4,2,32s13.4,30,30,30V32H42z" fill="#83bf4f"/><path d="m52 54.4c6.1-5.5 10-13.5 10-22.4h-10v22.4" fill="#ff8736"/><path d="M42,32v28.3c3.7-1.3,7.1-3.3,10-5.9V32H42z" fill="#3e4347"/><path d="M42,32H32v30c3.5,0,6.9-0.6,10-1.7V32z" fill="#c94747"/><g fill="#ff8736" stroke="#2b2b2b" stroke-width=".25" stroke-miterlimit="10"><path d="m57.5 22.3c1.3-.7 1.5-1.4 1.5-1.4 0-.1-.9.5-2.5 1.2 2-1 2-1.8 1.9-1.8-.3 0-1.5.8-3.1 1.5 1.4-.7 2.1-1.5 2-1.6-.3.3-3.4 1.5-3.4 1.5.4-.2.7-.7.4-.7-.5.4-2.4.7-3 .8-.4.1-1.5.5-1.8.5-2-.1-2.5.1-2.5.1 0 0 0 0 .1.1 0 0 0 0-.1 0 0-.1-.1-.1-.1-.1-.3-.6.1-.8.3-.9.2 0 .2 0 .4-.1-.1 0-.2-.1-.3-.1.2 0 .5 0 .4.4.2-.1.7-.6-.6-.7-.4-.4-2.1-.7-2.6 1.2 0 0 .1 0 .2.1-.5-.2-2-.4-2.5-.5-1.4-.4-2.9-1.3-3.1-1.2-.2.1.9 1 .8 1-.9-.5-1.8-.8-2.5-1.2-.5-.2-1.1-.6-1.2-.5-.2.4.9 1.3 1.1 1.5.2.1 1.8.8 1.8.8-2.4-1-2.8-1.2-2.9-1.3-.2 0-.7-.7-.9-.6-.1.1.1 1.1 1.2 1.5 0 0 .2.1.3.1l-.6-.2c-.5-.2-1.1-.8-1.2-.7-.1.1.3.7.8 1 .2.1.6.3 1.2.5-.5-.2-1.1-.4-1.4-.5-.4-.2-.5-.4-.6-.4-.1 0 .1 1 2.7 1.6 0 0 0 0 .1 0 0 0-.1 0-.1 0-.1 0-.5 0-.5.1 0 .1.2.4 1.5.4.2 0 1.1-.3 1-.2 0 0-1.3.4-1.4.4-.1 0-.5.1-.5.1 0 .1.3.3 1 .4.6 0 1.9-.4 1.8-.3 0 0-1.2.4-1.2.4 0 0-.5 0-.5.1 0 .1.6.6 2.5 0-.2.2-1.1.4-1.1.4 0 0 .2.2.5.3.2 0 .4 0 .6 0 .4-.1.7-.2 1.2-.6.1.1-1.2.7-1.1.8.3.2 1.2 0 1.2-.1.1 0 1.8-.9 1.7-1 0 .1-2.2 1.2-2.2 1.3.1.2.9 0 .9 0 0 0 1-.5 1-.5 0 0-1.1.6-1 .7 0 .3 1.3-.1 1.7-.3-.2.1-.7.4-.7.5.3.5 1.3.3 1.4.2.1-.1-.1.3 0 .3 0 0 .2-.2.3-.4 0 .1-.1.3-.2.6-.1.2-.1.5-.2.8 0 .1.4-.1.5-.8 0 .4-.2 1-.1 1 0 0 .1 0 .2-.1v.1c0 .1-.1.5-.6.5-.6 0-.6.5-.6.5s-.1 0 0 .3c.1-.2.2-.2.2-.2.1 0 .4.1.8-.2-.4.4-.2.5-.2.5s-.1.3.2.4c-.1-.1 0-.2 0-.2s.4 0 .4-.5c0 .4.3.6.3.6s0 .2.3.3c-.2-.1-.1-.3-.1-.3s.4-.2.1-.7c.1 0 .1-.1.2-.1 0 0 0 .1 0 .2 0 .3 0 .3.2.5-.1-.2 0-.3 0-.3s.3.1.5-.2c-.2.4-.1.5 0 .5 0 .1-.1.4.3.4-.1-.1-.1-.3-.1-.3s.4-.1.2-.7c.1-.1.2 0 .2 0s0 .4.4.3c.1.1 0 .3 0 .3s.2 0 .3-.2c.1-.2.1-.5-.2-.6 0-.1.1-.1.1-.1s.2.1.3.2c.1.1 0-.3-.3-.3-.4 0-.4-.1-.4-.1 0 0 0-.1 0-.3.3.2.6.2.6.2 0-.1-.6-.8-.5-.9.2 0 .4.4.6.3-.1-.1-.3-.1-.5-.4 0-.1-.1-.1-.1-.2 0 0 .5.5.9.5.2-.1-.3-.4-.3-.5.2.2.9.7 1.4.5.2-.3-.3-.2-.9-.9.4.3 1.4.8 1.9.6.1-.1-.4-.4-.8-.8.2.1.3.2.4.2.5.2 1-.1 1-.1 0-.1-.2-.1-.5-.2.6.1 1 0 1.1-.1 0-.1-.1-.1-.7-.2 1.2.2 2.2-.5 2.2-.5s.3-.1-.2-.1c3.4-.4 4-1.9 4-1.9-.1 0-.7.4-1.5.7 1.5-.7 2.2-1.6 2.2-1.7-.1-.8-.6-.5-1.3-.2zm-19.4.7c.3-.1.6-.1.5-.1 0 0-.3.1-.5.1zm-1.1-1.1c.7.3 2 .7 1.9.7.1.1-1.1-.4-1.9-.7zm11.7 3c-.1-.1-.2-.3-.2-.3 0 .1.1.2.2.3zm6.5-.9c-1 .3-2.2.4-3.7 0 1.5.3 2.7.2 3.7 0zm.6-1c-.2.1-.4.2-.6.2.2 0 .4-.1.6-.2zm-9.6 3.4c0-.1 0-.2 0-.3 0 .1 0 .2 0 .3zm1.6 1.5c0 0-.4 0-.7.1-.1 0-.3-.1-.4-.2-.1-.1 0-.7 0-.7.1.1.2.2.3.3 0-.3 0-.3-.1-.5 0-.3.1-.8.1-1.4.5.9.7 1.3.6 2 .1 0 .1-.1.2-.2v.5c.1 0 0 0 0 .1zm.3-2.7c.1.1.1.1 0 0h0zm7.4-1.3c.1 0 .1 0 .2-.1-.1.1-.1.1-.2.1z"/><path d="m46.2 27.5c0 0 0 0 0 0z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ff-1f1fc.svg b/riot/emojione/svg/1f1ff-1f1fc.svg new file mode 100644 index 0000000..77f539e --- /dev/null +++ b/riot/emojione/svg/1f1ff-1f1fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#75a843"><path d="M32,2c-6.2,0-11.9,1.9-16.6,5h33.3C43.9,3.9,38.2,2,32,2z"/><path d="m32 62c6.2 0 11.9-1.9 16.6-5h-33.2c4.7 3.1 10.4 5 16.6 5"/></g><path d="M7,47H58c1.8-3.1,3-6.5,3.6-10.1H3.4C4,40.6,5.3,44,7,47z" fill="#ed4c5c"/><path d="m3 32c0 1.7.2 3.4.4 5h58.1c.3-1.6.4-3.3.4-5s-.2-3.4-.4-5h-58.1c-.2 1.6-.4 3.3-.4 5" fill="#3e4347"/><path d="m3.4 27h58.2c-.6-3.6-1.9-7-3.6-10h-51c-1.7 3-3 6.4-3.6 10" fill="#ed4c5c"/><g fill="#ffce31"><path d="m12.3 17h45.7c-2.3-4-5.6-7.5-9.5-10h-33c-1.1.7-2.2 1.6-3.2 2.4v7.6"/><path d="m12.3 47v7.6c1 .9 2.1 1.7 3.2 2.4h33c3.9-2.6 7.1-6 9.5-10.1h-45.7z"/></g><path d="M12.6,12.2H9.5C4.8,17.5,2,24.4,2,32c0,7.7,2.9,14.8,7.8,20.1h2.5L32.4,32L12.6,12.2z" fill="#f9f9f9"/><path d="M12.3,9.4c-1,0.9-2,1.8-2.8,2.8L29.3,32L9.5,51.8c0.9,1,1.8,1.9,2.8,2.8L34.9,32L12.3,9.4z" fill="#3e4347"/><path fill="#ed4c5c" d="m17.5 33.9l5.3-4.5-6.3-1.1-3.3-6.6-3.3 6.6-6.3 1.1 5.4 4.5-1.4 6.7 5.6-3.2 5.7 3.2z"/><g fill="#ffce31"><path d="m11.3 30.1c.7 1.5.9 1.6 2.6 2.2 1.7.6 6.6 1.2 7.1 1.2-.3-.3-5.8-4.4-6.9-5.2-1.1-.8-1.4-1.2-1.4-1.2s-1-1.8-1.4-2.4c-.4-.5-1-1.3-1.8-1.3s-1.4.6-1.7 1.5c-.1 0-.9.5-.8.9.2 0 1.5-.4 2 1.1.5 1.5.5 3.9 0 5.1-.5 1.2-1.2 2.1-1.2 3.2 0 .1.1.4.3.4.1.5.8 3.8.8 3.8h9.8l1.6-6"/><g stroke="#000" stroke-linejoin="round" stroke-linecap="round" stroke-width=".2"><path d="m11.3 30.1c.7 1.5.9 1.6 2.6 2.2 1.7.6 6.6 1.2 7.1 1.2-.3-.3-5.8-4.4-6.9-5.2-1.1-.8-1.4-1.2-1.4-1.2s-1-1.8-1.4-2.4c-.4-.5-1-1.3-1.8-1.3s-1.4.6-1.7 1.5c-.1 0-.9.5-.8.9.2 0 1.5-.4 2 1.1.5 1.5.5 3.9 0 5.1-.5 1.2-1.2 2.1-1.2 3.2 0 .1.1.4.3.4.1.5.8 3.8.8 3.8h9.8l1.6-6"/><path d="m8.1 35.7c0 0 2.1-.1 2.7-.1.6 0 5.8 0 8.8.7"/><path d="m8.9 35.6c0 0-.2-.3-.1-.8.1-.5 1.6-1.8 1.6-3.7"/><path d="m10.1 35.5c0 0-.2-.8 1.7-1.5.5-.2 2-1 2.1-1.7"/><path d="m11.6 34.1c0 0 4.6 0 8.3.8"/><path d="m12.8 33.5c0 0 1.6.1 1.8 0 .3-.1.7-.3.9-.8"/><path d="m13.7 33.6c0 0 .9-.4 1-1"/><path d="m11.2 39.5c0 0-.4-2.5-.4-3.9l.9.9 1-.9.9.9 1-.8.9 1 1-.8.8.9 1-.7 1.2 1.1"/><path d="m19.1 37.9c-3.5-.5-8.2-.5-8.2-.5"/><path d="m9.3 28.7c0 0 2.9-1.4 3.4-1.6"/><path d="m10.8 36.5l1 .9.8-.9.9.9 1-.8.8.9 1-.8.8 1 1-.8 1 .9"/><circle cx="13.5" cy="34.9" r=".4"/><circle cx="15.2" cy="35" r=".4"/><circle cx="9.2" cy="24.7" r=".3"/></g></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f1ff.svg b/riot/emojione/svg/1f1ff.svg new file mode 100644 index 0000000..133cd3c --- /dev/null +++ b/riot/emojione/svg/1f1ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M20.8,41.4l14.8-18.8H21.2v-5.1h22v4.9l-15,19h15.1v5.1H20.8V41.4z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f201.svg b/riot/emojione/svg/1f201.svg new file mode 100644 index 0000000..44714e7 --- /dev/null +++ b/riot/emojione/svg/1f201.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><g fill="#fff"><path d="m14.1 47v-6.4h10.3v-17.4h-10.3v-6.2h15.9v30z"/><path d="m34.1 47v-6.4h10.3v-17.4h-10.3v-6.2h15.9v30z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f202.svg b/riot/emojione/svg/1f202.svg new file mode 100644 index 0000000..a6e36bc --- /dev/null +++ b/riot/emojione/svg/1f202.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4fd1d9"/><path d="m20.1 30.4c-1.8 0-3.3.1-4.1.1v-5.8c.7.1 2.4.3 4.1.3h2.4v-3.2c0-1.3-.2-2.9-.2-3.6h5.9c0 .8-.2 2.3-.2 3.7v3.1h8.2v-3.4c0-1.4-.1-2.9-.2-3.7h6.1c-.1.7-.3 2.3-.3 3.7v3.4h2c1.8 0 3.2-.2 4.1-.3v5.7c-.7-.1-2.3-.1-4.1-.1h-2v.4c0 9-2.7 15.2-12 19.2l-4.4-4.4c7-2.4 10.7-5.7 10.7-14.6v-.6h-8.1v4c0 1.6.2 3.3.2 4h-5.9c.1-.7.2-2.5.2-4v-4h-2.4z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f21a.svg b/riot/emojione/svg/1f21a.svg new file mode 100644 index 0000000..74c92f2 --- /dev/null +++ b/riot/emojione/svg/1f21a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#eda454"/><path d="m20 24.2c-.8.7-1.5 1.4-2.3 2-.8-.8-2.7-2.3-3.7-3 3.2-2.1 6.2-5.6 7.9-9.2l4.4 1.3c-.4.9-.9 1.8-1.5 2.7h23v4h-3.6v5h5v4.1h-5v4.9h4.4v4h-33.2v-4.1h4.6v-4.9h-5.1v-4h5.1v-2.8m-5.5 24c1.7-1.6 3.4-4.6 4.3-7.4l4.4 1.1c-.8 2.9-2.5 6.1-4.4 8.1l-4.3-1.8m9.5-21.2h2.8v-5h-2.8v5m0 8.9h2.8v-4.9h-2.8v4.9m5.9 5.8c.5 2.3.9 5.4.9 7.2l-4.4.7c0-1.8-.3-5-.7-7.4l4.2-.5m3.5-14.7v-5h-2.8v5h2.8m-2.8 4.1v4.9h2.8v-4.9h-2.8m6.9 10.4c.9 2.3 1.9 5.3 2.2 7.2l-4.6.9c-.2-1.8-1.1-5-2-7.3l4.4-.8m2.6-19.5h-2.9v5h2.9v-5m0 9.1h-2.9v4.9h2.9v-4.9m5.1 9.6c1.7 2.3 3.9 5.6 4.8 7.7l-4.7 1.6c-.8-2-2.8-5.4-4.5-7.9l4.4-1.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f22f.svg b/riot/emojione/svg/1f22f.svg new file mode 100644 index 0000000..07d785a --- /dev/null +++ b/riot/emojione/svg/1f22f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#4bd37b"/><path d="m28.3 34.4c-1.5.4-3 .8-4.5 1.3v9.3c0 2.3-.4 3.4-1.7 4.1-1.3.7-3.1.8-5.8.8-.1-1.2-.7-3-1.3-4.2 1.5.1 3 .1 3.5.1.5 0 .7-.2.7-.7v-8.2l-4.2 1.1-1-4.4c1.5-.3 3.4-.8 5.3-1.2v-6.9h-4.7v-4.2h4.7v-7.3h4.5v7.2h3.9v4.2h-3.9v5.8c1.3-.3 2.7-.7 4-1l.5 4.2m1.3-2h18.6v17.4h-4.5v-1.5h-9.7v1.7h-4.3l-.1-17.6m13.8-6.3c1.9 0 2.2-.6 2.5-4.4 1 .7 2.9 1.4 4.1 1.7-.6 5.4-1.9 6.9-6.3 6.9h-7.4c-5.3 0-6.7-1.3-6.7-5.8v-10.5h4.5v5.1c3.8-1 7.6-2.2 10.2-3.4l3.4 3.3c-3.9 1.6-9 2.9-13.5 3.8v1.6c0 1.5.4 1.7 2.6 1.7h6.6m-9.5 10.1v2.4h9.7v-2.4h-9.7m9.7 8.5v-2.5h-9.7v2.5c0 0 9.7 0 9.7 0" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f232.svg b/riot/emojione/svg/1f232.svg new file mode 100644 index 0000000..5cc5826 --- /dev/null +++ b/riot/emojione/svg/1f232.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><path d="m20.1 24.6c-1.5 2.1-3.3 3.9-5.1 5.1-.7-1-2-2.7-3-3.5 2.5-1.4 5-3.9 6.8-6.4h-5.1v-4.1h6.5v-3.7h4.7v3.7h5.4v4.1h-5.4c1.7.9 5.3 3.2 6.3 3.9l-2.6 3.4c-.8-.8-2.3-2-3.7-3.1v5.6h-4.7l-.1-5m4.7 19c-2.1 3-5.5 6.1-8.5 7.9-.9-.9-2.9-2.4-4-3.1 3-1.5 6-3.9 7.7-6.2l4.8 1.4m-11.4-6.5h37.4v4.3h-16.1v5.8c0 2.4-.5 3.5-2.3 4.2-1.8.6-4.1.6-7.2.6-.3-1.4-1.1-3.2-1.7-4.4 2.1.1 4.6.1 5.2.1.7 0 .9-.2.9-.7v-5.6h-16.2v-4.3m4.6-6.3h28.5v4.1h-28.5v-4.1m26.6-11c2 2.4 4.9 5 7.4 6.3-1 .8-2.4 2.4-3.2 3.5-1.7-1.2-3.6-3.2-5.3-5.3v5.3h-4.8v-5.5c-1.7 2.2-3.7 4.2-5.7 5.4-.7-1-2-2.6-3-3.4 2.6-1.3 5.4-3.8 7.2-6.3h-5.6v-4.1h7.1v-3.7h4.8v3.7h7v4.1h-5.9m-2.4 22.1c2.9 1.8 6.6 4.7 8.5 6.7l-4.3 2.7c-1.6-1.9-5.2-5-8.2-7l4-2.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f233.svg b/riot/emojione/svg/1f233.svg new file mode 100644 index 0000000..ae8c7bd --- /dev/null +++ b/riot/emojione/svg/1f233.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#c28fef"/><path d="m30.1 21.9c-.7 6.6-2.8 10.8-12.7 12.9-.4-1.1-1.5-3-2.5-4 8.4-1.5 9.8-4.3 10.4-9h-5.3v4.6h-4.5v-8.9h14v-3.5h4.7v3.6h14.4v8.2h-4.8v-3.9h-5.5v6.3c0 1.1.2 1.2 1.4 1.2h3.4c1 0 1.2-.4 1.3-2.9.9.7 2.7 1.4 4 1.6-.5 4.2-1.7 5.3-4.8 5.3h-4.6c-4.3 0-5.3-1.3-5.3-5.2v-6.3h-3.6m18.9 23.8v4.3h-33.9v-4.3h14.4v-5.9h-10.3v-4.2h26.5v4.2h-11.4v5.9c0 0 14.7 0 14.7 0" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f234.svg b/riot/emojione/svg/1f234.svg new file mode 100644 index 0000000..ea346b6 --- /dev/null +++ b/riot/emojione/svg/1f234.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><g fill="#fff"><path d="M32,12c0,0-10,8.6-22.2,14.6l3.2,6.1c0,0,7.9-2.6,19-11.5c11.1,8.9,19,11.5,19,11.5l3.2-6.1 + C42,20.6,32,12,32,12z"/><path d="m20.9 29.5h22.3v5.1h-22.3z"/><path d="m16 36.8v15.2h32v-15.2h-32m25.6 9.8h-19.2v-4.3h19.1l.1 4.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f235.svg b/riot/emojione/svg/1f235.svg new file mode 100644 index 0000000..ed4265d --- /dev/null +++ b/riot/emojione/svg/1f235.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><path d="m19.6 32c-1.6-1.4-5-3.1-7.6-4.2l2.7-3.9c2.6.8 6 2.4 7.7 3.8l-2.8 4.3m-6.5 16.5c1.9-3.3 4.7-8.7 6.8-13.7l4 3c-1.9 4.6-4.1 9.5-6.4 13.7l-4.4-3m3.9-36.2c2.5 1.2 5.7 3 7.4 4.6l-3.2 4c-1.5-1.5-4.6-3.6-7.2-4.9l3-3.7m22.8 15.2v2.6h11.2v17c0 2.2-.4 3.4-1.9 4.1-1.5.7-3.5.7-6.4.7-.1-1.2-.6-3-1.2-4.2 1.6.1 3.4.1 4 .1.6 0 .7-.2.7-.7v-12.6h-7.1v6.8h2.1v-5.1h2.9v10.2h-2.9v-1.4h-7.7v2.5h-3v-11.2h3v5.1h1.9v-6.8h-6.7v17.4h-4.5v-21.9h10.8v-2.6h-11.9v-4.5h6.8v-3.2h-5.5v-4.4h5.5v-3.4h4.7v3.5h5.7v-3.5h4.9v3.5h5.6v4.4h-5.6v3.2h6.8v4.5h-12.2zm-5.2-4.4h5.7v-3.2h-5.7v3.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f236.svg b/riot/emojione/svg/1f236.svg new file mode 100644 index 0000000..8d2d4e3 --- /dev/null +++ b/riot/emojione/svg/1f236.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#eda454"/><path d="m29 23c-.5 1-1 2-1.6 3h18.2v19c0 2.3-.4 3.5-2 4.2-1.6.8-3.8.8-7 .8-.2-1.3-.8-3.2-1.4-4.4 2 .1 4.3.1 4.9.1.7 0 .9-.2.9-.8v-2.3h-14.1v7.4h-4.6v-16.8c-1.6 1.7-3.3 3.2-5.2 4.5-.7-1-2.2-2.7-3.1-3.5 4.2-2.7 7.4-6.8 9.8-11.2h-8.6v-4.3h10.6c.6-1.6 1.1-3.1 1.5-4.7l4.8 1.1c-.4 1.2-.8 2.4-1.3 3.6h19.2v4.3h-21m12 7h-14.1v2.5h14.1v-2.5m0 8.8v-2.5h-14.1v2.5h14.1" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f237.svg b/riot/emojione/svg/1f237.svg new file mode 100644 index 0000000..01c87d7 --- /dev/null +++ b/riot/emojione/svg/1f237.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#eda454"/><path d="m47 42.5c0 2.6-.6 3.8-2.3 4.5-1.8.8-4.3.8-8.1.8-.3-1.3-1.1-3.3-1.8-4.5 2.6.1 5.7.1 6.5.1.9 0 1.2-.3 1.2-1v-5.2h-15.9c-1 4-2.8 8-6.2 10.8-.7-.9-2.4-2.5-3.4-3.1 5.6-4.7 6.1-11.5 6.1-17v-11.9h23.9v26.5m-4.6-9.4v-4.4h-14.8c0 1.4-.1 2.9-.3 4.4h15.1m-14.8-12.9v4.4h14.8v-4.4h-14.8" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f238.svg b/riot/emojione/svg/1f238.svg new file mode 100644 index 0000000..2bec669 --- /dev/null +++ b/riot/emojione/svg/1f238.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#eda454"/><path d="m47 20.6v20.3h-4.6v-1.6h-8.3v8.7h-4.6v-8.8h-8.1v1.8h-4.4v-20.4h12.5v-4.6h4.6v4.6h12.9m-25.6 3.9v3.5h8.1v-3.5h-8.1m8.1 10.8v-3.6h-8.1v3.6h8.1m4.6-10.8v3.5h8.3v-3.5h-8.3m8.3 10.8v-3.6h-8.3v3.6h8.3" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f239.svg b/riot/emojione/svg/1f239.svg new file mode 100644 index 0000000..c989838 --- /dev/null +++ b/riot/emojione/svg/1f239.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#c28fef"/><path d="m27.1 17.2h8v6.7h-2v3h-6.1v1.6h5.6v3.1h-5.6v1.7h7.7v3.5h-19.6v-3.5h7.8v-1.7h-5.6v-3.1h5.6v-1.6h-6v-3h-1.9v-6.7h7.8v-3.2h4.3c0 0 0 3.2 0 3.2m-10 20.9h16v11.5h-4.3v-1.3h-7.6v1.7h-4.1c0 0 0-11.9 0-11.9m13.8-17.4h-11.9v2.9h3.9v-2.1h4.1v2.1h3.9v-2.9m-9.7 20.8v3.3h7.6v-3.3h-7.6m19.8-1.9h-4.3v-21.7h4.3v21.7m8-25.1v29.9c0 2.6-.5 3.8-2 4.6-1.5.8-3.8.9-7 .9-.2-1.3-.8-3.5-1.5-4.8 2.2.1 4.4.1 5.1.1.6 0 .9-.2.9-.9v-29.8h4.5" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f23a.svg b/riot/emojione/svg/1f23a.svg new file mode 100644 index 0000000..2c743f7 --- /dev/null +++ b/riot/emojione/svg/1f23a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#eda454"/><path d="m48 20.1v8.2h-4.3v-4.3h-23.6v4.3h-4.1v-8.2h4.6c-.7-1.2-1.6-2.6-2.5-3.8l3.9-1.7c1.2 1.5 2.7 3.5 3.4 4.9l-1.2.5h5.8c-.5-1.4-1.5-3.3-2.5-4.7l3.9-1.3c1.1 1.5 2.3 3.7 2.9 5.1l-2.6 1h6.2c1.2-1.6 2.6-4 3.4-5.8l4.8 1.5c-1.1 1.5-2.2 3-3.3 4.3-.1 0 5.2 0 5.2 0m-14.2 15.1c-.3.8-.6 1.6-1 2.3h12.5v12.5h-4.5v-1.3h-17.7v1.3h-4.3v-12.5h9.5c.2-.8.4-1.6.6-2.3h-6.9v-9.4h19.7v9.4h-7.9m7 6.2h-17.7v3.3h17.7v-3.3m-14.6-9.5h11.2v-2.7h-11.2v2.7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f250.svg b/riot/emojione/svg/1f250.svg new file mode 100644 index 0000000..0518c4a --- /dev/null +++ b/riot/emojione/svg/1f250.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m32 2c-16.6 0-30 13.4-30 30 0 16.6 13.4 30 30 30s30-13.4 30-30c0-16.6-13.4-30-30-30m0 54c-13.3 0-24-10.7-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.3-10.7 24-24 24"/><path d="m23.2 22.8c-1.9 3.3-5.2 6.6-8.2 8.8.7 1.2 1.8 3.9 2 5 1.1-.9 2.1-1.8 3.2-2.9v15.1h4.4v-20.2c1.1-1.4 2-2.8 2.8-4.2l-4.2-1.6"/><path d="m26.8 16.8l-4.2-1.7c-1.5 2.4-4.5 5.2-7 6.9.6 1 1.6 2.9 2 3.9 3.1-2.1 6.7-5.8 9.2-9.1"/><path d="m44.3 35.8v-1.8h3.8v-3.8h-20.8v3.8h12.3v1.8h-13.2v3.9h4.6l-2.5 1.6c1.5 1.5 3.3 3.6 4.1 5l3.4-2.4c-.7-1.2-2.2-2.8-3.6-4.2h7.2v4.5c0 .5-.2.6-.7.6-.5 0-2 0-3.5-.1.6 1.2 1.2 2.9 1.4 4.1 2.6 0 4.4-.1 5.7-.7 1.4-.7 1.8-1.8 1.8-3.9v-4.6h4.7v-3.9l-4.7.1"/><path d="m47.3 16.2h-18.5v12.5h18.6v-12.5zm-4.9 9.5h-8.9v-1.8h8.9c0 0 0 1.8 0 1.8m0-4.7h-8.9v-1.7h8.9c0 0 0 1.7 0 1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f251.svg b/riot/emojione/svg/1f251.svg new file mode 100644 index 0000000..4da18fa --- /dev/null +++ b/riot/emojione/svg/1f251.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.5-13.5,30-30,30C15.5,62,2,48.5,2,32C2,15.5,15.5,2,32,2C48.5,2,62,15.5,62,32z" fill="#eda454"/><g fill="#fff"><path d="m48 18v4.9h-3.6v21.3c0 2.7-.5 4.1-2.4 5-1.8.8-4.5.9-8.3.9-.2-1.5-1-3.7-1.7-5.1 2.6.2 5.4.2 6.2.1.8 0 1.1-.3 1.1-1v-21.2h-23.3v-4.9h32"/><path d="m19 26.5v17h4.6v-2.7h11.4v-14.3h-16m11.1 9.9h-6.4v-5.5h6.4v5.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f300.svg b/riot/emojione/svg/1f300.svg new file mode 100644 index 0000000..00f6030 --- /dev/null +++ b/riot/emojione/svg/1f300.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4fd1d9"><path d="m58 33.2c-.4-14.1-12.6-24.7-26.7-22.1-12 2.2-19.3 15.1-13.9 26.1 2.6 5.4 9.1 7.8 14.8 6.5 6-1.3 9.2-8.5 6.9-13.9-1.3-3-6.3-1.7-5 1.4 2.4 5.7-3.6 9.1-8.5 7-3.7-1.6-4.9-5.9-4.9-9.6.1-9.1 10.7-14 18.7-12.6 10.2 1.9 14.6 13.6 13 22.8-1.7 9.9-10.8 16.5-20.3 18.2-3.3.6-1.9 5.6 1.4 5 14.1-2.6 24.9-14.2 24.5-28.8"/><path d="m46.6 25.5c-6.4-11.2-25.6-4.9-21 8.2 1.1 3.1 6.1 1.8 5-1.4-1.7-4.9 1.7-8.3 6.9-7.6 4 .6 6 5.1 6.4 8.6 1.5 11.7-12.1 17.8-21.4 13.7-8.8-3.9-12.7-13.9-10.6-22.9 2.2-9 10.7-16.2 19.9-16.9 3.3-.3 3.3-5.4 0-5.2-13.8 1.1-24.7 12.4-25.7 26-1.1 13.6 10.7 26.1 24.4 25.6 14-.5 23-16.1 16.1-28.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f301.svg b/riot/emojione/svg/1f301.svg new file mode 100644 index 0000000..a94c77a --- /dev/null +++ b/riot/emojione/svg/1f301.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b4d7ee" d="m0 0h64v64h-64z"/><g fill="#dae3ea"><path d="m19.7 6.4c0 .8-.7 1.5-1.5 1.5h-12.9c-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5h12.9c.8 0 1.5.7 1.5 1.5"/><path d="m25.4 3.5c0 .8-.7 1.5-1.5 1.5h-12.9c-.8 0-1.5-.7-1.5-1.5.1-.8.7-1.5 1.5-1.5h13c.8 0 1.4.7 1.4 1.5"/><path d="m60.2 19.6c0 .8-.7 1.5-1.5 1.5h-12.9c-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5h12.9c.8 0 1.5.7 1.5 1.5"/><path d="m56.8 16.7c0 .8-.7 1.5-1.5 1.5h-12.9c-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5h12.9c.8 0 1.5.7 1.5 1.5"/></g><path d="m48 30.7c3.2 0 16 0 16 0v18.3h-20v-14.3c0-2.2 1.8-4 4-4" fill="#7c8d93"/><g fill="#d6eef0"><path d="m60.8 34h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/><path d="m55.8 34h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/></g><g fill="#7c8d93"><path d="m51.3 28h11v2.9h-11z"/><path d="m0 28.1h13.1v-5.2l-13.1 3z"/><path d="m0 28h13v21h-13z"/></g><g fill="#d6eef0"><path d="m9.5 36c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/><path d="m9.5 44c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/></g><path fill="#62727a" d="m23 4l-10 11.3v33.7h20v-33.7z"/><path d="m30 28c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2" fill="#d6eef0"/><path d="m30 44c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2" fill="#ffdd7d"/><path d="m30 20c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2" fill="#d6eef0"/><path fill="#62727a" d="m50 23v-4l-6-2v-11h-2v11l-6 2v4h-3v26h20v-26z"/><g fill="#d6eef0"><path d="m41.5 30c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 38c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/></g><g fill="#6adbc6"><path d="m41.5 46c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 46c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/></g><path d="m30 36c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2" fill="#d6eef0"/><path fill="#d0d0d0" d="m0 56l64-10v18h-64z"/><path d="m47 40.9c.4 0 .7.1 1.1.2.4-2.4 2.4-4.2 4.9-4.2 2 0 3.7 1.2 4.5 2.9.7-.5 1.5-.9 2.5-.9 2.2 0 4 1.8 4 4 0 2.2-1.8 4-4 4h-13c-1.7 0-3-1.3-3-3 0-1.6 1.3-3 3-3" fill="#e8e8e8"/><ellipse cx="8" cy="52.9" rx="8" ry="8" fill="#d0d0d0"/><g fill="#e8e8e8"><path d="m8.9 42.5c.5 0 1 .1 1.4.3.5-3.3 3.2-5.9 6.4-5.9 2.6 0 4.8 1.7 5.9 4 .9-.8 2-1.2 3.2-1.2 2.9 0 5.2 2.5 5.2 5.6 0 3.1-2.3 5.6-5.2 5.6h-16.9c-2.2 0-3.9-1.9-3.9-4.2 0-2.3 1.7-4.2 3.9-4.2"/><path d="m0 54c2.5 0 4.5 1.8 4.9 4.2.4-.2.7-.3 1.1-.3 1.7 0 3 1.3 3 3 0 1.6-1.3 3-3 3h-6v-9.9"/></g><path d="m58.2 41.6c-2.7 0-5.1.9-7 2.5-2.3-4.8-7.1-8.1-12.8-8.1-7 0-12.8 5.1-13.9 11.7-.9-.4-2-.6-3-.6-4.7 0-8.5 3.8-8.5 8.4 0 4.6 3.8 8.4 8.5 8.4h42.5v-20.7c-1.7-1-3.7-1.6-5.8-1.6" fill="#d0d0d0"/><g fill="#e8e8e8"><path d="m59.2 50.3c-.6 0-1.2.1-1.7.3-.6-3.8-3.9-6.7-7.9-6.7-3.2 0-6 1.9-7.2 4.6-1.1-.9-2.5-1.4-4-1.4-3.5 0-6.4 2.9-6.4 6.4 0 3.5 2.9 6.4 6.4 6.4h20.8c2.7 0 4.8-2.1 4.8-4.8 0-2.6-2.1-4.8-4.8-4.8"/><path d="m28 58c-.4 0-.7.1-1.1.2-.4-2.4-2.4-4.2-4.9-4.2-2 0-3.7 1.2-4.5 2.9-.7-.6-1.6-.9-2.5-.9-2.2 0-4 1.8-4 4 0 2.2 1.8 4 4 4h13c1.7 0 3-1.3 3-3s-1.3-3-3-3"/></g><g fill="#d0d0d0"><path d="m47 63.9c-.9-4.6-5.1-8-10-8s-9.1 3.4-10 8h20"/><path d="m21.5 64c-1.7-3.6-4.9-6-8.5-6s-6.8 2.4-8.5 6h17"/><path d="m0 42.9v8h9.8c-.9-4.5-5-8-9.8-8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f302.svg b/riot/emojione/svg/1f302.svg new file mode 100644 index 0000000..2e02d28 --- /dev/null +++ b/riot/emojione/svg/1f302.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7071-.7071.7071.7071-2.0487 35.6909)" fill="#d0d0d0" d="m34 19h16v2.6h-16z"/><path d="m36.7 26.3c-4.8-4.8-3.9-9.2-2.3-12.5l-31.7 46.2 47-32c-3.2 1.5-8.4 2.8-13-1.7" fill="#f2b200"/><path d="m21.6 11.1c-2.9-2.9-4.3-6.7-3.7-9.8l-15.2 58.7 32.1-46.9c-3 3.1-9 2.2-13.2-2" fill="#ffce31"/><path d="m61.6 45c-3.1.5-6.9-.8-9.8-3.7-4.2-4.2-5.1-10.2-2-13.3l-47 32 58.8-15" fill="#ff8736"/><g fill="#3e4347"><path d="m46.8 13.7l.1.1 1.7 1.7.3.3 6.3-6.3c1-1 3-.7 4.4.6 1.4 1.4 1.7 3.3.6 4.4-.5.5-.4 1.5.3 2.2.7.7 1.7.8 2.2.3 2.1-2.1 1.5-6-1.3-8.7-2.8-2.8-6.7-3.4-8.7-1.3l-6.3 6.3.4.4"/><path d="m.5 62.3c.5.5 1.2.6 1.6.2 0 0 1.4-1.4 3.1-3.1-.2-.4-.4-.8-.7-1.1-.3-.3-.7-.6-1.1-.7-1.8 1.8-3.1 3.1-3.1 3.1-.4.3-.3 1.1.2 1.6"/><path d="m44.4 21.3c-.1 0-.3-.1-.4-.3l-.4-.4 1.2-1.2c-.2 1.1.1 1.9-.4 1.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f303.svg b/riot/emojione/svg/1f303.svg new file mode 100644 index 0000000..cb533e5 --- /dev/null +++ b/riot/emojione/svg/1f303.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#42ade2" d="m0 0h64v64h-64z"/><path d="m48 45.7c3.2 0 16 0 16 0v18.3h-20v-14.3c0-2.2 1.8-4 4-4" fill="#3e4347"/><g fill="#d0d0d0"><path d="m60.8 49h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/><path d="m55.8 49h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/></g><g fill="#3e4347"><path d="m51.3 43h11v2.9h-11z"/><path d="m0 43.1h13.1v-5.2l-13.1 3z"/></g><path d="m57.7 1.6c0 0 .5 6.9-3.3 11.1-3.9 4.1-10.6 3.9-10.6 3.9 4.2 3.6 10.7 3.2 14.6-1 3.8-4.1 3.5-10.4-.7-14" fill="#ffdd7d"/><path fill="#6adbc6" d="m10.6 14.3l-1.7-3.3-1.7 3.3-3.3 1.7 3.3 1.7 1.7 3.3 1.7-3.3 3.3-1.7z"/><path transform="matrix(.7071-.7071.7071.7071-8.7102 10.9723)" fill="#fff" d="m7.1 14.2h3.5v3.5h-3.5z"/><path fill="#6adbc6" d="m34.2 8.7l-1.6-3.4-1.7 3.4-3.3 1.6 3.3 1.7 1.7 3.3 1.6-3.3 3.4-1.7z"/><path transform="matrix(.7071-.7071.7071.7071 2.2377 26.066)" fill="#fff" d="m30.8 8.6h3.5v3.5h-3.5z"/><path fill="#6adbc6" d="m56.7 25.8l-1.7-3.4-1.7 3.4-3.3 1.6 3.3 1.7 1.7 3.3 1.7-3.3 3.3-1.7z"/><path transform="matrix(.7071-.7071.7071.7071-3.2773 46.9215)" fill="#fff" d="m53.2 25.6h3.5v3.5h-3.5z"/><path fill="#3e4347" d="m0 43h13v21h-13z"/><g fill="#ed4c5c"><path d="m9.5 51c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/><path d="m9.5 59c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/></g><path fill="#121314" d="m23 19l-10 11.3v33.7h20v-33.7z"/><g fill="#ffdd7d"><path d="m30 43c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 59c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 35c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/></g><path fill="#121314" d="m50 38v-4l-6-2v-11h-2v11l-6 2v4h-3v26h20v-26z"/><g fill="#6adbc6"><path d="m41.5 45c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 53c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m41.5 61c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 61c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/></g><path d="m30 51c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2" fill="#ffdd7d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f304.svg b/riot/emojione/svg/1f304.svg new file mode 100644 index 0000000..1d032f0 --- /dev/null +++ b/riot/emojione/svg/1f304.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#f2b200" d="m0 0h64v64h-64z"/><g fill="#ffdf99"><circle cx="32" cy="32" r="10.7"/><path d="m3.5 4.2c2.3 4.5 5.6 8.4 9.2 11.8 3.3 3.2 7.2 6.4 11.5 8.2-1.9-4.6-5.4-8.8-8.9-12.3-3.6-3.5-7.7-7.1-12.4-9 .2.4.4.9.6 1.3"/><path d="m42.2 19.9c-.9 1.4-1.7 2.8-2.4 4.3 4.6-1.9 8.8-5.5 12.3-8.9 3.5-3.5 7-7.6 8.9-12.3-3.6 1.5-6.9 4.1-9.9 6.6-3.3 3-6.4 6.4-8.9 10.3"/><path d="m29.9.4c-.4 3.7-.4 7.4 0 11 .3 3.2.8 6.5 2.1 9.5 2-4.7 2.4-10.3 2.4-15.4 0-1.4-.1-2.7-.2-4.1 0-.1-.1-1.4-.2-1.4-.2 0-.4 0-.6 0-.7 0-1.5 0-2.2 0-.6 0-1.2-.2-1.3.4"/><path d="m18.7 3.2c1 3.5 2.3 7 4 10.3 1.4 2.9 3.1 5.8 5.4 8.1.2-5.1-1.5-10.5-3.3-15.2-.5-1.4-1.1-2.7-1.8-4.1-.4-.6-.8-2.3-1.6-2.3-1.2 0-2.3 0-3.5 0 .3 1.1.5 2.2.8 3.2"/><path d="m43 2.2c-1.8 3.2-3.3 6.6-4.5 10.1-1 3-1.9 6.3-1.9 9.5 2.8-2.6 4.9-6.1 6.6-9.4 2.1-3.9 3.7-8.1 4.7-12.4-.8 0-1.7 0-2.5 0-.4 0-.7 0-1.1 0-.3 0-1.2 1.9-1.3 2.2"/><path d="m63.6 29.9c-3.7-.4-7.4-.4-11 0-3.2.3-6.6.8-9.5 2.1 4.7 2 10.3 2.4 15.4 2.4 1.4 0 2.7-.1 4.1-.2.2 0 1.4-.1 1.4-.2 0-.2 0-.4 0-.6 0-.7 0-1.5 0-2.2 0-.6.2-1.2-.4-1.3"/><path d="m60.8 18.7c-3.5 1-7 2.3-10.3 4-2.9 1.4-5.8 3.1-8.1 5.4 5.1.2 10.5-1.5 15.2-3.3 1.4-.5 2.7-1.1 4.1-1.8.6-.3 2.3-.8 2.3-1.5 0-1.2 0-2.3 0-3.5-1.1.2-2.2.4-3.2.7"/><path d="m.4 34.1c3.7.4 7.4.4 11 0 3.2-.3 6.5-.8 9.5-2.1-4.7-2-10.3-2.4-15.4-2.4-1.4 0-2.7.1-4.1.2-.1 0-1.4.1-1.4.2 0 .2 0 .4 0 .6 0 .8 0 1.5 0 2.3 0 .5-.2 1.1.4 1.2"/><path d="m2.2 21c3.2 1.8 6.6 3.3 10.1 4.5 3 1 6.3 1.9 9.5 1.9-2.6-2.8-6.1-4.9-9.4-6.6-3.9-2-8.1-3.7-12.4-4.7 0 .8 0 1.6 0 2.5 0 .4 0 .7 0 1.1 0 .3 1.9 1.2 2.2 1.3"/></g><path fill="#3e4347" d="m0 29.8v11.3l16.7-4.4z"/><path fill="#d0d0d0" d="m64 31.8l-16.7-9.5-15.3 12.7-15.3-7.7-16.7 11.2v4.2h64z"/><path fill="#3e4347" d="m47.3 22.3l5.6 6.6-10.2 3.6 12.9 4.2-12.9 3.8-26-13.2-4.2 7.7 8.8 1.7-4.6 6h47.3v-10.9z"/><path d="m64 39.8c-1.8.3-3.6.9-5.1 1.7-.9-1.2-2.4-2-4-2-1.4 0-2.7.6-3.6 1.5-.4-.3-.8-.5-1.3-.5-.8 0-1.5.5-1.8 1.1-.7-.3-1.5-.5-2.3-.5-1.2 0-2.2.4-3.1 1-1.4-1.6-3.4-2.6-5.6-2.6-2.2 0-4.2 1-5.5 2.5-.6-.9-1.5-1.5-2.7-1.5-1.4 0-2.6.9-3 2.2-1-1-2.3-1.7-3.8-1.7-1.1 0-2.1.3-2.9.9-.1-2.9-2.4-5.2-5.4-5.2-2.7 0-4.9 1.9-5.3 4.5-1.3-1.1-2.9-1.7-4.7-1.7-1.4 0-2.6.4-3.7 1v23.5h64l-.2-24.2" fill="#83bf4f"/><g fill="#699635"><path d="m63.5 47.2c-2.4-1.2-5.4-1.2-7.7.3-.6-2.4-2.8-4.4-5.4-4.4-2.5 0-6.1 1.8-6.1 4.7-1.9-.8-4.3-.7-5.9.6-1-1.6-3.1-2.1-4.8-1.5-.7.3-.9 1-1.7.4-.8-.6-1.7-1.1-2.7-1.3-1.9-.5-3.9-.4-5.6.4-.4.2-.8.4-1.2.7-.4.3-.8.8-1.2 1-.2.1-.7-.2-.9-.3-.5-.2-1.1-.3-1.7-.4-.9-.1-1.6.2-2.4.4-.3.1-.5-.3-.7-.4-.3-.2-.8-.4-1.2-.4-.6 0-1.1.4-1.7.3-.2 0-.7-.4-.9-.5-.5-.2-1-.4-1.5-.6-1.8-.4-3.8.2-5.1 1.6-.5.5-1.5-.2-2.1-.4-1.1-.3-2.1-.6-3.2-.7 1.7.5 3.4 1 4.9 1.9.5.3.8-.5 1.2-.8.8-.6 1.7-.9 2.7-1 .9 0 1.7.2 2.5.6.5.3.8.9 1.3 1.2.2.1.5-.2.6-.3.3-.3.7-.3 1.1-.2.4.1.7.3.9.6.2.2.2.6.6.6.9-.2 1.6-.6 2.6-.5 1 .1 1.9.5 2.7 1 .4.3.6-.1 1-.4.4-.4.8-.7 1.3-1.1 3.1-2.4 6.9-.5 9.2 1.9.8-1 1.7-2.2 3.2-1.8 1.3.3 1.7 1.7 2.1 2.8 1-1 2.1-2 3.5-2.2 1.6-.2 2.9.5 4.2 1.3.2-2.8 1.1-5.3 4.1-5.8 3-.5 5 1.9 5.7 4.5 2.5-2.1 5.6-2.7 8.6-1.3 0-.3-.1-.4-.3-.5m-49.4.8c0 0 0 0 0 0m27.9.8"/><path d="m64 58.4c-2.3-1.8-5.6-2.2-8.3-1-.7.3-1.4.8-2 1.3-.7.6-1 .1-1.9-.1-.7-.2-1.5-.2-2.2-.1-.1 0-1.5.4-1.5.4-.4-.6-1.2-.9-1.9-.9-.3 0-.6.1-.9.2-.6.2-.5.2-1.1-.2-1.3-.8-2.8-1-4.2-.7-.6.2-1.3.5-1.8.8-.4.3-.9 1.1-1.4.9-1.6-.6-3.1-1-4.7-1.3 1.6.4 3.3.9 4.8 1.8.5.4.7 0 1-.4.6-.7 1.6-1 2.4-1.2.9-.1 1.7-.1 2.5.3.7.3 1.1.8 1.6 1.2.5.4.8 0 1.3-.3.8-.4 1.5.3 1.8.9.3.5 1.2-.1 1.7-.2 1-.2 2.1-.1 3 .4.2.1 1.1.9 1.4.8.5-.4.9-1 1.4-1.4 2.8-2.1 6.7-1.5 9.1 1-.1-.8-.1-1.7-.1-2.2m-17.9.5c0 0 0 0 0 0m4.1.7c0 0 .1 0 0 0"/><path d="m35.1 55.1c-2.4-1.3-5.4-1.2-7.7.3-.6-2.4-2.8-4.4-5.4-4.4-1.6 0-3.2.5-4.3 1.6-.5.5-1 1.1-1.3 1.7-.2.4-.2 1.1-.5 1.4-1.4-.6-3.2-.7-4.6-.1-.4.2-1.2.9-1.5.5-.4-.6-1.1-1-1.7-1.3-.7-.3-1.5-.3-2.2-.2-.3.2-.6.3-.9.4-.2.1-.8.7-1 .6-.2 0-.5-.4-.7-.5-.4-.3-.7-.5-1.1-.7-.7-.3-1.4-.6-2.2-.7 0 .5 0 1 0 1.4 0 .2 1.3.6 1.6.7 1 .5 1.8 1.4 2.6 2.2.8-1 1.7-2.2 3.2-1.8 1.3.3 1.7 1.7 2.1 2.8 1-1 2.1-2 3.5-2.2 1.6-.2 2.9.5 4.2 1.3.2-2.8 1.1-5.3 4.1-5.8 3-.5 5 1.9 5.7 4.5 2.5-2.1 5.6-2.7 8.6-1.3-.1-.2-.3-.3-.5-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f305.svg b/riot/emojione/svg/1f305.svg new file mode 100644 index 0000000..dfc8498 --- /dev/null +++ b/riot/emojione/svg/1f305.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#f2b200" d="m0 0h64v64h-64z"/><g fill="#ffdf99"><circle cx="32" cy="32" r="10.7"/><path d="m3.5 4.2c.4.8 1 1.8 1.8 3 .7 1.2 1.7 2.5 2.8 3.9 1.1 1.4 2.4 2.8 3.7 4.1 1.3 1.3 2.7 2.6 4.1 3.7 1.4 1.1 2.7 2.1 3.9 2.9.6.4 1.2.7 1.7 1 .5.3 1 .5 1.4.7.4.2.7.3.9.4.2.1.3.1.3.1s0-.1-.1-.3c-.1-.2-.2-.5-.4-.9-.2-.4-.4-.8-.7-1.4-.3-.5-.6-1.1-1-1.7-.8-1.2-1.8-2.5-2.9-3.9-1.1-1.4-2.4-2.8-3.7-4.1-1.3-1.3-2.7-2.6-4.1-3.7-1.5-1-2.8-2-4-2.7-1.2-.8-2.3-1.4-3-1.8-.4-.2-.7-.4-1-.4-.2-.1-.3-.2-.3-.2s.1.1.2.3c0 .3.2.6.4 1"/><path d="m42.2 19.9c-.4.6-.7 1.2-1 1.7-.3.5-.5 1-.7 1.4-.2.4-.3.7-.4.9-.1.2-.1.3-.1.3s.1 0 .3-.1c.2-.1.5-.2.9-.4.4-.2.8-.4 1.4-.7.5-.3 1.1-.6 1.7-1 1.2-.8 2.5-1.8 3.9-2.9 1.4-1.1 2.8-2.4 4.1-3.7 1.3-1.3 2.6-2.7 3.7-4.1 1-1.6 2-2.9 2.7-4.1.8-1.2 1.4-2.3 1.8-3 .2-.4.3-.7.4-.9.1-.3.2-.4.2-.4s-.1.1-.3.1c-.2.1-.5.2-.9.4-.8.4-1.8 1-3 1.8-1.3.8-2.6 1.8-4 2.9-1.4 1.1-2.8 2.4-4.1 3.7-1.3 1.3-2.6 2.7-3.7 4.1-1.1 1.4-2.1 2.8-2.9 4"/><path d="m29.9.4c-.2 1.8-.3 3.6-.3 5.5 0 1.9.1 3.8.3 5.5.2 1.8.4 3.4.7 4.8.3 1.4.6 2.6.9 3.4.1.4.3.7.3 1 .1.2.1.3.1.3s.1-.1.1-.3c.1-.2.2-.5.3-1 .3-.8.6-2 .9-3.4.3-1.4.6-3.1.7-4.8.2-1.8.3-3.6.3-5.5 0-1.9-.1-3.8-.3-5.5 0-.1 0-.2 0-.4h-4.1c.1.1.1.2.1.4"/><path d="m18.7 3.2c.5 1.7 1.1 3.5 1.7 5.2.7 1.8 1.4 3.5 2.2 5.1.8 1.6 1.6 3 2.4 4.2.4.6.8 1.2 1.1 1.6.3.5.7.9.9 1.2.3.3.5.6.7.8s.2.3.2.3 0-.1 0-.4c0-.2 0-.6 0-1 0-.4-.1-1-.1-1.5-.1-.6-.1-1.2-.3-2-.2-1.4-.6-3-1-4.8-.5-1.7-1.1-3.5-1.7-5.2-.7-1.8-1.4-3.5-2.2-5.1-.3-.5-.6-1.1-.9-1.6h-3.8c.2 1 .5 2.1.8 3.2"/><path d="m43 2.2c-.9 1.5-1.7 3.2-2.5 4.9-.8 1.7-1.4 3.5-2 5.1-.6 1.7-1 3.3-1.3 4.7-.3 1.4-.5 2.6-.6 3.5 0 .4-.1.8-.1 1s0 .4 0 .4.1-.1.3-.3c.2-.2.4-.4.7-.7.6-.6 1.4-1.6 2.2-2.7.8-1.2 1.7-2.6 2.6-4.1.9-1.5 1.7-3.2 2.5-4.9.8-1.7 1.4-3.5 2-5.1.5-1.4.8-2.7 1.1-3.9h-3.6c-.4.6-.9 1.4-1.3 2.1"/><path d="m63.6 29.9c-1.8-.2-3.6-.3-5.5-.3-1.9 0-3.8.1-5.5.3-1.8.2-3.4.4-4.8.7-1.4.3-2.6.6-3.4.9-.4.1-.7.3-1 .3-.2.1-.3.1-.3.1s.1.1.3.1c.2.1.5.2 1 .3.8.3 2 .6 3.4.9 1.4.3 3 .6 4.8.7 1.8.2 3.6.3 5.5.3 1.9 0 3.8-.1 5.5-.3.1 0 .2 0 .4 0v-4.1c-.1.1-.2.1-.4.1"/><path d="m60.8 18.7c-1.7.5-3.5 1.1-5.2 1.7-1.8.7-3.5 1.4-5.1 2.2-1.6.8-3 1.6-4.2 2.4-.6.4-1.2.8-1.6 1.1-.5.3-.9.7-1.2.9-.3.3-.6.5-.8.7-.2.2-.3.2-.3.2s.1 0 .4 0 .6 0 1 0c.4 0 1-.1 1.5-.1.6-.1 1.2-.1 2-.3 1.4-.2 3-.6 4.8-1 1.7-.5 3.5-1.1 5.2-1.7 1.8-.7 3.5-1.4 5.1-2.2.6-.3 1.2-.6 1.7-.9v-3.8c-1.1.2-2.2.5-3.3.8"/><path d="m.4 34.1c1.8.2 3.6.3 5.5.3 1.9 0 3.8-.1 5.5-.3 1.8-.2 3.4-.4 4.8-.7.7-.1 1.3-.3 1.9-.5.6-.2 1.1-.3 1.5-.4.4-.1.7-.3 1-.3.2-.1.3-.1.3-.1s-.1 0-.3-.1c-.2-.1-.5-.2-1-.3-.4-.1-.9-.3-1.5-.4-.6-.2-1.2-.3-1.9-.5-1.4-.3-3.1-.6-4.8-.7-1.8-.2-3.6-.3-5.5-.3-1.9 0-3.8.1-5.5.3-.1 0-.2 0-.4 0v4.1c.1-.1.2-.1.4-.1"/><path d="m2.2 21c1.5.9 3.2 1.7 4.9 2.5 1.7.8 3.5 1.4 5.1 2 1.7.6 3.3 1 4.7 1.3 1.4.3 2.6.5 3.5.6.4 0 .8.1 1 .1.2 0 .4 0 .4 0s-.1-.1-.3-.3c-.2-.2-.4-.4-.7-.7-.6-.6-1.6-1.4-2.7-2.2-1.2-.8-2.6-1.7-4.1-2.6-1.5-.9-3.2-1.7-4.9-2.5-1.7-.8-3.5-1.4-5.1-2-1.4-.5-2.7-.8-3.9-1.1v3.6c.6.4 1.4.9 2.1 1.3"/></g><path fill="#42ade2" d="m0 32h64v32h-64z"/><g fill="#ffdf99"><ellipse cx="31" cy="36.2" rx="12.9" ry="1.4"/><ellipse cx="34" cy="41.1" rx="10.3" ry="1.1"/><ellipse cx="30.1" cy="45.5" rx="8.2" ry=".9"/><ellipse cx="32.6" cy="49.5" rx="6.6" ry=".7"/><ellipse cx="30.2" cy="53.1" rx="5.3" ry=".6"/><ellipse cx="32.6" cy="56.2" rx="4.2" ry=".5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f306.svg b/riot/emojione/svg/1f306.svg new file mode 100644 index 0000000..0bf2b32 --- /dev/null +++ b/riot/emojione/svg/1f306.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fbbf67" d="m0 0h64v64h-64z"/><path opacity=".7" fill="#f15744" d="m0 0h64v64h-64z"/><path d="m48 45.7c3.2 0 16 0 16 0v18.3h-20v-14.3c0-2.2 1.8-4 4-4" fill="#62727a"/><g fill="#d0d0d0"><path d="m60.8 49h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/><path d="m55.8 49h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/></g><g fill="#62727a"><path d="m51.3 43h11v2.9h-11z"/><path d="m0 43.1h13.1v-5.2l-13.1 3z"/><path d="m0 43h13v21h-13z"/></g><g fill="#ed4c5c"><path d="m9.5 51c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/><path d="m9.5 59c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/></g><path fill="#3e4347" d="m50 38v-4l-6-2v-11h-2v11l-6 2v4h-3v-7.7l-10-11.3-10 11.3v33.7h20 20v-26z"/><g fill="#6adbc6"><path d="m41.5 45c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 53c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m41.5 61c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 61c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/></g><g fill="#ffdd7d"><path d="m30 43c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 59c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 35c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 51c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f307.svg b/riot/emojione/svg/1f307.svg new file mode 100644 index 0000000..d6648a4 --- /dev/null +++ b/riot/emojione/svg/1f307.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ef8a45" d="m0 0h64v64h-64z"/><g fill="#f9b04e"><path opacity=".5" d="m28.2 0l1.8 28h4l1.8-28z"/><path opacity=".5" d="M46.8 0 37 28.6 40.7 30.1 56.5 0z"/><path opacity=".5" d="M64 8.4 43.3 31.9 46.1 34.7 64 18.9z"/><path opacity=".5" d="M64 29.4 47.9 37.3 49.4 41 64 36z"/><path opacity=".5" d="M23.3 30.1 27 28.6 17.2 0 7.5 0z"/><path opacity=".5" d="M0 18.9 17.9 34.7 20.7 31.9 0 8.4z"/><path opacity=".5" d="m0 36l14.6 5 1.5-3.7-16.1-7.9z"/><path d="m0 48.9l14-.9v-4l-14-.9z"/></g><circle cx="32" cy="38.7" r="25.3" fill="#ffc466"/><path d="m48 45.7c3.2 0 16 0 16 0v18.3h-20v-14.3c0-2.2 1.8-4 4-4" fill="#62727a"/><g fill="#d0d0d0"><path d="m60.8 49h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/><path d="m55.8 49h.4c.4 0 .8.4.8 1v14h-2v-14c0-.6.4-1 .8-1"/></g><g fill="#62727a"><path d="m51.3 43h11v2.9h-11z"/><path d="m0 43.1h13.1v-5.2l-13.1 3z"/><path d="m0 43h13v21h-13z"/></g><g fill="#ed4c5c"><path d="m9.5 51c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/><path d="m9.5 59c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/></g><path fill="#3e4347" d="m50 38v-4l-6-2v-11h-2v11l-6 2v4h-3v-7.7l-10-11.3-10 11.3v33.7h20 20v-26z"/><g fill="#6adbc6"><path d="m41.5 45c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 53c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m41.5 61c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m49.5 61c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/></g><g fill="#ffdd7d"><path d="m30 43c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 59c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 35c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 51c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f308.svg b/riot/emojione/svg/1f308.svg new file mode 100644 index 0000000..22ae3f5 --- /dev/null +++ b/riot/emojione/svg/1f308.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,6.5V2C35,2,13.2,23.8,13.2,50.6h4.5C17.7,26.3,37.5,6.5,62,6.5z" fill="#f66"/><path d="M17.7,50.6h4.5C22.2,28.8,40,11,62,11V6.5C37.5,6.5,17.7,26.3,17.7,50.6z" fill="#fffb80"/><path d="m62 15.5v-4.5c-22 0-39.8 17.7-39.8 39.6h4.5c0-19.4 15.8-35.1 35.3-35.1" fill="#a3e66f"/><path d="M26.7,50.6h4.5C31.3,33.7,45,20,62,20v-4.5C42.5,15.5,26.7,31.2,26.7,50.6z" fill="#66c2ff"/><path d="m62 24.5v-4.5c-17 0-30.7 13.7-30.7 30.6h4.5c0-14.4 11.7-26.1 26.2-26.1" fill="#9180ff"/><path d="m10.1 60.7c-.7 0-1.4-.1-2.1-.3-2.8-.9-4.7-3.5-4.7-6.4 0-1.9.8-3.8 2.3-5.1.4-.3.8-.6 1.2-.9l.4-1.6c1.1-3.9 4.8-6.6 8.8-6.6.4 0 .8 0 1.3.1.4.1.7.1 1.1.2l.2-.3c1.6-2.9 4.8-4.8 8.1-4.8 5.1 0 9.3 4.2 9.3 9.3 0 .2 0 .5 0 .7v.2c.4.2.8.3 1.2.5 2.5 1.4 4 4.1 4 6.9 0 3.7-2.6 6.9-6.2 7.8-.6.1-1.2.2-1.8.2l-23.1.1" fill="#fff"/><path d="m26.9 36.4c4.4 0 8 3.5 8 7.9 0 .2 0 .4 0 .6-1.8.1-3.5.9-4.8 2 1-.6 2.1-.9 3.3-.9.4 0 .9 0 1.3.1.7.1 1.4.4 2 .8 2 1.1 3.3 3.3 3.3 5.7 0 3.1-2.2 5.8-5.2 6.5-.5.1-1 .2-1.5.2h-23.2c-.6 0-1.2-.1-1.7-.3-2.2-.7-3.7-2.7-3.7-5.1 0-1.6.7-3.1 1.9-4.1.5-.5 1.1-.8 1.8-1 .6-.2 1.2-.3 1.8-.3 1.7 0 3.3.8 4.3 2.1-1.2-2.1-3.3-3.6-5.8-3.8.9-3.2 3.9-5.6 7.5-5.6.4 0 .8 0 1.1.1.7.1 1.4.3 2.1.6 2.4 1.1 4.2 3.3 4.6 6 0-3.1-1.6-5.7-4-7.3 1.3-2.6 3.9-4.2 6.9-4.2m0-2.7c-3.7 0-7.1 1.9-9 4.9-.1 0-.2 0-.2 0-.6-.1-1-.1-1.5-.1-4.7 0-8.8 3.1-10.1 7.6l-.3 1.1c-.3.2-.7.5-1 .7-1.8 1.5-2.8 3.7-2.8 6 0 3.5 2.2 6.6 5.6 7.7.8.3 1.7.4 2.6.4h23.2c.7 0 1.4-.1 2.1-.2 4.3-1 7.3-4.7 7.3-9.1 0-3.3-1.8-6.4-4.7-8.1-.1-.1-.3-.2-.4-.2 0 0 0 0 0-.1-.1-5.9-4.9-10.6-10.8-10.6z" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f309.svg b/riot/emojione/svg/1f309.svg new file mode 100644 index 0000000..cdaab31 --- /dev/null +++ b/riot/emojione/svg/1f309.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#42ade2" d="m0 0h64v64h-64z"/><path fill="#428bc1" d="m0 52h64v12h-64z"/><path d="m64 28.9v-2c-4.8-.5-9.1-3-12-6.6v-10.3h-6v10.3c-3.3 4.1-8.3 6.7-14 6.7-5.7 0-10.7-2.6-14-6.7v-10.3h-6v10.3c-2.9 3.6-7.2 6.1-12 6.6v2c1.7-.2 3.4-.6 5-1.2v6.3h-5v6h9l1.2 6h1.8v6h6v-6h1.8l1.2-6h22l1.2 6h1.8v6h6v-6h1.8l1.2-6h9v-6h-5v-6.3c1.6.6 3.3 1 5 1.2m-18-5.7v4.8c0 3-2.2 5.4-5 5.9v-7.1c1.8-.9 3.5-2.1 5-3.6m-23 3.6v7.1c-2.8-.5-5-2.9-5-5.9v-4.8c1.5 1.5 3.1 2.7 5 3.6m-11-3.5v4.7c0 3-2.2 5.4-5 5.9v-7.1c1.9-.9 3.5-2.1 5-3.5m13 10.7v-6.3c1.9.7 3.9 1.1 6 1.2v5h-6zm8 0v-5c2.1-.1 4.1-.5 6-1.2v6.2h-6m24-.1c-2.8-.5-5-2.9-5-5.9v-4.7c1.5 1.4 3.2 2.6 5 3.6v7" fill="#3e4347"/><circle cx="32" cy="12" r="8" fill="#fff"/><g fill="#d0d0d0"><circle cx="35" cy="9" r="2"/><circle cx="29" cy="15" r="2"/><circle cx="29" cy="9" r="1"/><circle cx="35" cy="15" r="1"/></g><g fill="#fff"><path d="m40 53c0 .6-.5 1-1 1h-14c-.6 0-1-.4-1-1 0-.5.4-1 1-1h14c.5 0 1 .5 1 1"/><path d="m38 57c0 .6-.5 1-1 1h-10c-.6 0-1-.4-1-1 0-.5.4-1 1-1h10c.5 0 1 .5 1 1"/><path d="m36 61c0-.5-.5-1-1-1h-6c-.6 0-1 .5-1 1 0 .6.4 1 1 1h6c.5 0 1-.4 1-1"/><path transform="matrix(.7078-.7064.7064.7078-2.4606 4.0513)" d="m3 4.3h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078-8.2677 9.2859)" d="m6.4 13.9h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078 2.7844 15.7931)" d="m19.8 3.8h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078-2.1674 33.9877)" d="m39.3 18.9h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078 13.7929 42.4078)" d="m57.5 3.8h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078-13.6838 55.7724)" d="m59.9 43.7h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078-23.0967 40.1627)" d="m36.3 47.3h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078-23.2023 32.7612)" d="m27.3 43.7h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078-31.8562 18.2149)" d="m5.4 46.9h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078 6.787 42.4103)" d="m54 12.3h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078 5.1352 47.6433)" d="m59.5 16.9h1.4v1.4h-1.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f30a.svg b/riot/emojione/svg/1f30a.svg new file mode 100644 index 0000000..efdfafc --- /dev/null +++ b/riot/emojione/svg/1f30a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.9 2.6c-.4-.1-.7-.2-1.1-.3-1-.2-2.2-.3-3.8-.3-15.3 0-27.5 8.8-33.4 22.5-7.6 18-7.2 33.2-18.6 33.2 0 2.4 1.9 4.3 4.3 4.3s4.3-1.9 4.3-4.3c0 2.4 1.9 4.3 4.3 4.3 2.4 0 4.3-1.9 4.3-4.3 0 2.4 1.9 4.3 4.3 4.3 2.4 0 4.3-1.9 4.3-4.3 0 2.4 1.9 4.3 4.3 4.3s4.3-1.9 4.3-4.3c0 2.4 1.9 4.3 4.3 4.3 2.4 0 4.3-1.9 4.3-4.3 0 2.4 1.9 4.3 4.3 4.3s4.3-1.9 4.3-4.3c0 2.4 1.9 4.3 4.3 4.3 2.4 0 4.2-2 4.2-4.3 0 0-28.8-4.5-19.7-23.8 1.2-2.4 2.9-3.6 3.9-4.1.5.7 1.2 1.3 2.1 1.6 2.4.9 5.1-.4 6-2.9.5-1.3.3-2.7-.2-3.8 1.1-.5 2.1-1.5 2.5-2.8.4-1.1.4-2.2 0-3.2 1.2-.5 2.2-1.5 2.7-2.8.5-1.4.3-2.8-.3-4 1.2-.5 2.3-1.5 2.7-2.9.8-2.7-.5-5.5-2.9-6.4" fill="#75d6ff"/><path d="m50.4 23.1c-.1.6.9 2.3.4 3.7-.7 1.9-4 2.4-2.1 3.1 1.8.7 3.9-.3 4.6-2.2.5-1.4.1-3-.9-4 1.4-.1 2.6-1 3.2-2.4.5-1.4.1-3-.9-4 1.4-.1 2.6-1 3.2-2.4.5-1.5.1-3.1-1-4 1.4 0 2.7-1 3.3-2.4.7-1.9-.3-4-2.1-4.7-1.8-.7.4 1.9-.3 3.8-.8 1.5-2.8 2.1-2.9 2.7-.3.5.9 2.3.4 3.8-.5 1.4-2.4 2.1-2.6 2.6-.1.6.9 2.3.4 3.7s-2.4 2.1-2.7 2.7c0-.1 0-.1 0 0" fill="#fff"/><g fill="#4fa1d9"><path d="m54.9 4.5c-1.4-.1-2.8 0-4.2.1-3.6.4-7 1.3-10.3 2.8-4 1.8-7.7 4.6-10.7 7.9-4 4.5-6.8 10.1-8.6 15.9-.6 1.8 2.2 2.6 2.7.8 1.8-6 4.7-11.5 9-15.9 1.8-1.8 3.4-3 5.5-4.4.9-.6 1.9-1.1 2.8-1.5.2-.1.4-.2.7-.3.4-.2-.3.1.1 0 .1 0 .2-.1.3-.1.5-.2.9-.4 1.4-.6 1.5-.5 3-.9 4.5-1.3.3-.1.7-.1 1-.2.1 0 .3 0 .4-.1.1 0 .7-.1.2 0 .6-.1 1.1-.1 1.7-.2 1.1-.1 2.2-.2 3.3-.1.8.1 1.4-.7 1.4-1.5.3-.7-.4-1.3-1.2-1.3"/><path d="m52.5 11.6c-1.8-.3-3.8 0-5.6.3-4.3.8-8.3 2.8-11.6 5.7-4.2 3.6-7 8.5-9 13.6-.3.7.3 1.6 1 1.8.8.2 1.5-.3 1.7-1 1.2-3.1 2.8-6.2 4.9-8.8 1.7-2.1 3.6-3.9 5.7-5.3.9-.6 1.9-1.2 2.9-1.6 0 0 .4-.2.1-.1.1 0 .2-.1.3-.1.2-.1.5-.2.7-.3.5-.2.9-.3 1.4-.5.8-.3 1.7-.5 2.5-.6.2 0 .4-.1.6-.1.1 0 .2 0 .3 0 .3 0 .7-.1 1.1-.1 1-.1 2-.1 3 0 .8.1 1.4-.7 1.4-1.5 0-.8-.7-1.3-1.4-1.4"/><path d="m50 17.6c-2.4-.1-5 .6-7.2 1.5-5.3 2.2-9 6.6-10.9 12.1-.3.8.3 1.6 1 1.8.8.2 1.5-.3 1.7-1 .9-2.6 2.3-4.9 4.2-6.8.8-.8 1.5-1.3 2.4-2 .4-.3.9-.5 1.3-.8.2-.1.5-.2.7-.4.1-.1.2-.1.4-.2-.3.1.1 0 .1-.1.8-.3 1.6-.6 2.4-.8.4-.1.7-.2 1.1-.2.2 0 .4-.1.5-.1.1 0 .7-.1.2 0 .6-.1 1.3-.2 2-.1 1.9.1 1.9-2.9.1-2.9"/><path d="m47.7 24.2c-4.4 0-8.5 3-10.3 7-.3.7-.2 1.6.5 2 .6.4 1.6.2 1.9-.5.6-1.3 1.4-2.4 2.4-3.3.4-.4.8-.6 1.3-.9.2-.1.4-.2.6-.4.1-.1.3-.1.4-.2-.3.1.1-.1.2-.1.7-.3 1.5-.5 2.3-.6.2 0-.3 0 .1 0 .1 0 .2 0 .3 0 .1 0 .2 0 .3 0 1.8-.1 1.8-3 0-3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f30b.svg b/riot/emojione/svg/1f30b.svg new file mode 100644 index 0000000..51ce7a8 --- /dev/null +++ b/riot/emojione/svg/1f30b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.5 31.9c-1.4-3.2-1.9-1.1-3.2-2.1-1.3-1-3.7 1-5.3.4-1.6-.6-4 .8-5.4-.1-1.4-.9-2.2 0-2.5.5-.4.7-1.4 3-1.5 3.1-8 18.2-20.6 28.3-20.6 28.3h60c0 0-13-11-21.5-30.1" fill="#594640"/><g fill="#89664c"><path d="m24.9 34.4c-.8 1.6-1 2.9-.8 4.7.2 1.8-.1 3.5-1.4 4.8-.8.8-1.7 1.4-2.5 2.1-1.4 1.1-2.5 2.4-3.3 4.1-.5-3.2 2.2-5.3 4.1-7.2 1.3-1.4 1.2-2.9 1.4-4.7.3-1.7 1.2-2.9 2.5-3.8"/><path d="m16.2 52.7c.2 2.1-1.7 4.2-3.3 5.2-1.7 1-3.6 1.7-5.2 2.9.2-2 2.6-3.5 4.1-4.5 1.6-.9 3.1-2.3 4.4-3.6"/><path d="m28.1 35.8c-.2 1.3-.3 2.6-.1 3.9.2 1.3.7 2.5 1.2 3.7.9 2.7-.1 6.1-2 8.2.3-2.6.8-5.4-.1-8-.9-2.6-1-5.7 1-7.8"/><path d="m24.1 46.1c1.2 2.5-.4 5.6-2.2 7.2-.9.9-1.8 1.8-1.8 3.2-.1 1.3.3 2.5.8 3.7-2.6-1.7-3.3-5.3-1.1-7.6 1.9-2 3.6-3.8 4.3-6.5"/><path d="m31.5 34.4c-1 2.9 0 5.3 2 7.5 1.3 1.5 3.5 5.1 1.1 6.6.9-2.4-1.8-4.5-3.2-6-2-2.3-2.6-6.2.1-8.1"/><path d="m32.2 48.5c-.8 2.4-.1 4.4 1.2 6.4.8 1.3 1.8 4 .5 5.3 0-1.8-1.5-3.4-2.5-4.8-1.5-2.1-1.8-5.6.8-6.9"/><path d="m25.8 51.6c-.6 1.9.7 3.5 1.7 4.9.5.7 2 3.7.4 4.2.4-1.1-1.8-2.8-2.3-3.5-1.2-1.4-2.2-4.7.2-5.6"/><path d="m35 34.8c-.3 2 1 4 2.4 5.2.6.5 1.2.9 1.7 1.5 2.7 3 .6 8-2.1 10.1 1.1-3 2.5-7-.1-9.5-1.6-1.6-3.9-5-1.9-7.3"/><path d="m35 52.7c3.3.2 7 5 4.4 8.1-.5-1.5-.9-3-1.8-4.3-.8-1.3-1.8-2.5-2.6-3.8"/><path d="m38.4 34.8c3.1 2.1 5.1 6.1 6.2 9.6.4 1.3.7 2.7.8 4.1.2 1.6.6 3.9 2.2 4.7-1.9.3-3.2-2-3.8-3.5-.4-1.3-.7-2.7-1-4-1-3.8-2.5-7.6-4.4-10.9"/><path d="m41.4 50.8c.9 2.3 2.1 4.3 4.1 5.7.5.4 1.1.8 1.5 1.2.3.3 1.8 2.2.6 2.4.6-.9-2.6-1.7-3-2.1-2.5-1.1-4.6-4.4-3.2-7.2"/><path d="m48.4 51.6c2 .5 4 2.3 4.2 4.5.3 2.1 2.2 3.2 3.9 4.1-2.1.5-5-.6-5.7-2.9-.2-.7-.2-1.4-.4-2.1-.4-1.3-1.3-2.4-2-3.6"/></g><g fill="#ed4c5c"><path d="m40.6 29.5c0 0 0 0 0 0 1.4-1.4 3.4-1.9 2.7-3.9-1.2-3.5-7.2 5.6-4.4.3 2.8-5.3-.1-5.9-.9-4.7-.8 1.2-2.8 12.5-3.3 5.8-.5-6.8 7.2-27.5 3-24.6-4.2 2.9-3.6 21.7-6 24.9-2.4 3 2.5-20.9.6-23.3-1.4-1.8-4.9-1.4-3.4 13.9 1.5 15.4-1 7.2-2.3 3.3-1.3-3.9-2.7-2.5-1.3 4.6 1.1 5.6-1.5-2.3-4.6-8.2-3.1-5.9-10-2.6-4.1 1.7 5.4 4 6.2 7.5 7.3 10.4-1.1 1-2 3.2-3 6.5-.7 2.3 1.8-1.5 2.8-2.6 1.1-1.1 1.7 3.3 3.3.7 1.6-2.6 2.9-1.2 5.7 2.1 2.7 3.3 4.4 2.4 5.6.8s1.7-1.9 4.2-.2c2.5 1.7.9-.7.9-.7-1-1.2-2.1-5.7-2.8-6.8"/><path d="M40,19c1.7-1.9,2.5-7.6,1.2-5.7C40,15.2,39,20.1,40,19z"/><path d="m47.8 18.7c-1.6 1.6-5.4 6.1-3.3 5.4 1.6-.5 4.8-7 3.3-5.4"/><path d="m46.9 9.8c-1.8 1-4.8 8.6-5 11.5-.2 3.1 6.7-12.4 5-11.5"/><path d="m24.1 16.6c3.2 2.3-3.3-9.9-3.8-7.5-.4 2.4 2.4 6.5 3.8 7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f30c.svg b/riot/emojione/svg/1f30c.svg new file mode 100644 index 0000000..de7a021 --- /dev/null +++ b/riot/emojione/svg/1f30c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3f3261" d="m0 0h64v46h-64z"/><path fill="#42ade2" d="m0 46h64v10h-64z"/><path fill="#296d8f" d="m0 34h64v1h-64z"/><path fill="#3283ab" d="m0 37h64v2h-64z"/><path fill="#3b9ac9" d="m0 41h64v3h-64z"/><path d="m0 55c0 0 5.8-3.8 8-4 2.8-.3 8.2 3.3 11 3 2.2-.2 5.8-3.7 8-4 1.5-.2 4.5 1.3 6 1 1.8-.4 4.2-4 6-4 2.4 0 5.6 4.9 8 5 2.6.1 6.5-4.5 9-5 2-.4 8 1 8 1v16h-64v-9" fill="#3e4347"/><g fill="#fff"><path transform="matrix(.7071-.7071.7071.7071-14.1276 12.8927)" d="m7.4 22.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-9.1277 14.9638)" d="m12.4 17.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-9.4917 20.0851)" d="m18.4 20.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-3.2567 19.1596)" d="m20.4 12.5h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-5.613 23.449)" d="m24.4 17.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-.1989 24.5201)" d="m28.4 11.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-5.2699 28.2774)" d="m30.4 19.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071 1.8513 29.4699)" d="m35.4 11.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071 5.73 32.8338)" d="m41.4 8.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071 2.4873 35.0054)" d="m42.4 13.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071 4.2447 39.248)" d="m48.4 13.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071 9.4873 37.9049)" d="m49.4 6.4h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071 14.6588 42.3902)" d="m57.4 2.4h2.1v2.1h-2.1z"/></g><g fill="#c79cff"><path transform="matrix(.7071-.7071.7071.7071-1.3911 31.6419)" d="m36.8 16.8h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 5.6442 36.253)" d="m45.9 10.6h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 12.4592 45.58)" d="m60.5 7h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-11.0803 26.7498)" d="m26 26h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-15.6954 9.6077)" d="m3 23h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-9.4957 8.0753)" d="m4.3 14.8h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 1.7187 15.6494)" d="m19 5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-.6013 41.0487)" d="m48.5 20.5h1.4v1.4h-1.4z"/></g><g fill="#ffabed"><path transform="matrix(.7071-.7071.7071.7071 9.1266 34.5341)" d="m45.5 5.5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 10.6691 41.3863)" d="m54.6 7.1h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 7.8254 43.3929)" d="m55.6 11.5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 5.3997 29.0363)" d="m37 7.3h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-1.5878 27.1671)" d="m31.3 14.8h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-6.6057 18.2687)" d="m18 16.4h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-14.9485 18.4109)" d="m14 26.5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-10.3148 11.3138)" d="m7.8 17.4h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-18.7309 11.2792)" d="m3.5 27.5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-2.5031 7.4571)" d="m7 6h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-7.0332 41.0205)" d="m45.3 28.3h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 1.3077 48.7494)" d="m58.8 22.1h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 7.4582 23.006)" d="m30.8 1.8h1.4v1.4h-1.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f30d.svg b/riot/emojione/svg/1f30d.svg new file mode 100644 index 0000000..efe3dee --- /dev/null +++ b/riot/emojione/svg/1f30d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M58.4,22.7L60,42.7C55.8,54,44.8,62,32,62C15.4,62,2,48.6,2,32S15.4,2,32,2c6,0,11.6,1.8,16.3,4.8L58.4,22.7z" fill="#008db3"/><g fill="#ffc942"><path d="m48.3 6.8c.3 1 .6 2.1-.4 1.6-1.7-.9-3.9-1.9-3.2-1.2s1 1.5-.1 1.4c-1.1-.1-3.1-.4-4 .9-.9 1.3-2.1 1-2.4 1.5-.3.5-.8 2.6-1.7 1.9-.9-.6-2.7-2.9-1.2-2.3 1.5.6 3.2-.1 1.8-1.7-1.4-1.6-2.8-1-3.4-1.9-.6-.9-2.6-2-4.1.2-1.4 2.2-2.7 5.1-3.5 5.7-.8.6-2.5 1.7-2.2 2.6.2.9.3 3 1.2 2.4s1.4-.9 1.8-.3c.3.6.2 1.8.9 1.8 0 0 1.4-1 1.5-1.9.1-.9-1-1.4-.2-2.7s2.6-3.8 2.2-2.5c-.4 1.2-1.3 3-.6 3.8.6.8 4.1-.2 2.5.6-1.6.8-2.4 1.4-2.7 2.4-.3 1-.6 1.8-1.4 1.4s-1.8-.2-2.2-.2-.6-1.8-1.3-1.4c-.6.4.2 1.7-.5 1.8-.7.1-.8.9-1.6 1.5-.8.6-1.9 1.8-2.6 1.9s1.1 1 .8 1.8c-.3.9-1.9.8-2.5.9s-.1 1.3-.4 2c-.3.7.3 1.4 1.3 1.4 1 0 2-.2 2.1-1.1.1-.9 1-2.4 1.7-2.1.6.3 2.1-.6 2.4-.1.3.5 2.2 2.2 2 2.4s-1.3.7-.9.9c0 0 .3.5.5.4s.7-1.4 1-1.6.3-.9-.1-1.2c-.5-.3-2.2-1.5-1.8-2.1s1.3.7 1.7 1.1c.4.4 1 .9 1 1.8s.6.9.6 1.3c.1.5.3.6.8.6.5-.1.7-1.2.5-1.5-.3-.3-.3-.9.3-.9.6 0 1.3-.5 1.3-.8 0-.3.6-2.1 1-2.1s.7.7.8 1.1c.2.4 1.2-.3 1-.7-.2-.4.1-.5.4-.5.3 0 .1.8.3 1 .3.2 1.7 1.1 1.2 1.6s-1.2.2-1.7-.2c-.5-.4-1.8-.2-2.2.2-.3.4-.6.6-1.2.6-.6 0-.5 1.1 0 1.5.5.5 1.2.1 1.7.4.5.3 1.3-.4 1.4.1.1.5-.1 2-.6 2.1-.5.1-2.1.4-3.2-.1-1.2-.5-2.3-.7-2.4-.2-.1.6-.1 1-.9.5s-1.5-.8-2-.8c-.5 0-.5-.9-.4-1.6.1-.7-1.2-.5-2-.3s-2.4.7-3.4.7-1.4.2-1.6.6-1.1.4-1.1 1.2c0 .8.1 1-.7 1.4-.9.3-1.1 1.9-1.5 2.3-.4.4.4 1.4 0 2-.4.5-.8 1.9-.1 2.2.7.3 1.4 1.7 1.7 2.2.3.5 1.4 1 2.5.8 1.1-.2 3.1-.8 4.2-.3s2.2.4 1.7 1.4c-.6 1 .3 2.3 1 3 .7.7.5 2.5.1 3-.4.6-.3 1.6.1 2.1.4.5.6 1.7.6 2.1 0 .5.8 1.4.9 2.3.1 1-.6 2.1.3 2.1.9 0 3.2.1 3.4-.3s2-2 2.5-2.7 1.5-1.9 1.2-2.6c-.6-.5-.2-1 .8-1.4 1-.4 1-3.2.5-3.9-.5-.7.4-2.4 1.5-2.9 1.1-.5 3.7-5.1 2.9-4.7-.9.4-2.6.7-3.2.3-.6-.4-4.1-6.4-3.6-6.8s3.3 5.5 3.8 6.2c.5.8 5.2-2.1 5.8-2.8.5-.7-.3-1.4-.6-1.4s-1.4-.7-1.7-.3-2.3-2.9-1.6-2.6c.7.3 2.2 1.3 3.6 2.1s3-.5 3.9 1c1 1.5 1.6.5 1.5 1.2s1.2 3.6 1.7 4.5c.4.9 1.3-.4 1.4-1.4.1-1.1 2.2-2.8 3-3.4.7-.6 2.1.3 2.3 1.5.2 1.2 1.2-.2 1.2.7 0 1-.2 2.3.5 3.5 1.4-3.5 2.1-7 2.1-10.8 0-10.6-5.5-19.9-13.7-25.2"/><path d="m16.4 10.6c-.6.2-1.2.9-2 .5-.8-.4-2.5.2-1.4 1.1 1 1 .6 1.6 1.6 1.7s1.6-1.3 2.3-1.2.2-2.3-.5-2.1"/><path d="m40.7 49.7c-.7.1-.5 1.5-1.3 1.7-.7.2-.1.8-.5 1.3-.3.5-.5 1.7 0 2.3.5.7.7.7 1.3-.4.6-1 2-5 .5-4.9"/><path d="m20.6 17.3c-.3 0-.6.2-.9.2-.3.1-.5.5-.5.9 0 .5.8.6.5.9-.3.3-1.9.6-1.7 1.1s.5.9.2 1.4c-.3.5.3.6.9.4s1-.9.9-1.3c-.1-.5.9-.6.6-.2s-.8 1.4-.5 1.7c.3.3-.8.8-.4 1 .4.2 1.5-.8 2.1-.6s.8-.2.9-.7c.1-.6-.8-1.3-1.1-2-.3-.8-.1-2.8-1-2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f30e.svg b/riot/emojione/svg/1f30e.svg new file mode 100644 index 0000000..96eb2c4 --- /dev/null +++ b/riot/emojione/svg/1f30e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0 16.6-13.4 30-30 30s-30-13.4-30-30c0-14.4 10.1-26.4 23.7-29.3h.8l.6-.3c.5-.1 1-.1 1.5-.2h1l.8-.2c.1 0 .3 0 .4 0l1.2.2.8-.2c.1 0 .3 0 .4 0l1.6.4 1.9-.1c.2 0 .5.1.7.1l7.2 4.6 7.8 3c5.9 5.5 9.6 13.3 9.6 22" fill="#008db3"/><g fill="#ffc942"><path d="m33.5 11.5c2 .6 1.9-.6 3.1.8.7.8 2 2.3 3.5 2.7.2.1.7-.4.7-.8 0-.4-1.1-1.1-1.7-1.3-.6-.2.2-1.3-.6-1.6s-1.7-1.6-2-2.6c-.3-1-1.7-.2-2.2-.4-.5-.2-1.1-.1-1.6.7s.3 2.3.8 2.5"/><path d="m44 39.7c0-.4-3.9-2.5-4.3-2.6-.8 0-1.8-.4-2.5 0-.3.2-.6.4-.7.7-.1.2-.9-.2-1.2-.1-.7.4-1.1-.8-.9-1.3.5-1.1-1.2-.4-1.4-.7.2.4-.1-3.2-.7-1.2-.5 1.5-2.2-.2-2-1.3.3-1.7 2.9-2 3.5-1.7.3.2 1.3 1.7 1.5 1.6.3-.1-.2-1.8-.2-2-.2-.8 1.4-1.1 1.5-2 .1-.7.6-.5 1.1-.9.7-.6.2-1.6 1.1-2.2.3-.2 1.5-.3 1.6-.7.1-.3-1-1.1 0-1.4.9-.2 1.8.2 2-1.1.2-1.1-1.1-1.4-1.4-2.3-.1-.3-.3-1.8-.8-1.5-.7.4-1.1 1.2-1.6.2-1-1.8-3.4-2.6-2.3.3.6 1.5-1.6 6-1.9 1.8-.1-1.4-4.4-1.9-3-3.5 1.5-1.6 3.5-1.7 4-4.2.8-3.5-1.6-.5-2.9-1.2-1.8-1-.3-.5-1.2.8-.4.5-1.5-.3-2.1-.2-.5.1-1.7 1.1-2.1.5-.6-1.2-4.9-2-6.1-1.5-2.4.9-3.3-.3-5.7-.8-.8-.2-5-.3-4.7 1.1.1.6.5 1 .7 1.5.3.8-.9.2-1.2.4-.1.1 1.4 1.1 1.5 1.2.4.4-1.5.9-1.7 1.6-.4 1.4 2.6 1 2.1 2.6-.2.5-1.9 1.3-2.1 3 0 .3 2.1-2.1 3.5-1.6 1.2.4 1.1-2.9 2.7-2.9 2.9 0 3.4 2.8 4.9 4.7.7.9 1.3 1.2 1.4 2.4.1 1.1-.1 2.4.3 3.4.4 1 1.1 1 1.6 1.8.6.9.9 1.8 1.7 2.6 1.2 1.2 3.1 2.9 4.9 2.7.4-.1 1.7.7 2 .9.5.4.7.9 1.1 1.4.3.4 1.3.2 1.8.4.4.2-1 3.2-.5 4 .6.9.6 1.8 1.5 2.5.8.6 1.1.7 1.2 1.8.2 1.8-.4 3.7-.8 5.4-.2.9.2 1.9-.1 2.7-.4 1-.7 1.9-.3 3.1.6 2 4.3 2.3 2.1.6-.9-.7 1-2.6.4-2.7-1-.4.2-.8.3-1.3.3-.9 4.3-4.5 4.6-5.1.3-.5.1-1 .5-1.5.5-.5 1.1-.3 1.6-.7 1.1-.7.7-1.9 1.1-2.9.9-2 1.2-1.2 0-2.7-.4-.5-3.3-.3-3.4-1.9"/><path d="m22.4 10.1c.7.8 1.5-.4 1.6 0s.1 1.2 1 1.2-.8.6-.3.9c.6.2 1.8 1 2.2.7.4-.3 1-.6 1.2-.3.2.2 1.4 0 1.1-.4-.3-.4-1.3-1.4-1.2-1.9 0-.6 1.1-2-.1-1.8-.7-.1-.9.6-.9 1 0 .4-1.1-.6-1.3-.6-.2 0-1-1.2-1.3-1.2s-2.2-.6-2 0-.7 1.6 0 2.4"/><path d="m39.4 15.9c-.6-.3-1.7-1.8-2.1-1.3-.5.5.1 1.6.5 2.1.4.5 2.1 1.5 1.9 1.1s.8-1.3-.3-1.9"/><path d="m23.5 5.6c.3 0 .8 1 1.2 1.1.4.1.6.6.8.7s2-.6 2.4-.7c.5-.2-.5-1.2-.9-1.9-.3-.7 0 1.2-.6.9s-.4-.7-1-.7-.2-1.3-1-1-1.2 1.6-.9 1.6"/><path d="m30 8c-.5.1-.4.5-.7.8-.3.3-.3.7 0 1.1.3.4.7 1 1 .4.3-.6 0-1.1 0-1.5 0-.4 0-.9-.3-.8"/><path d="m31.1 9.9c.1.3.4-.6.9-1 .5-.5-.3-1.6-.7-1-.4.3-.3 1.7-.2 2"/><path d="m31 10.3c-.3.4-.5 1.4 0 1.5.5.1.8-.5.6-.9s-.5-.8-.6-.6"/><path d="m33 3.5c-.5.2.7.6-.1.8-.8.2-.8.9-1.5.3-.7-.6-1.5.2-.9.5s1.4 1.2 1.4 1.6c0 .5.8.7 1.6.6.8-.1 1.8.2 1.8-.2 0-.4.1-.5 0-.8-.1-.4-.5-.8-1.3-.4-.8.3-1.4.2-1.5-.2-.1-.4 1.6-1.2 2.4-.6.8.5 1.5-.3.9-.7s-.2-.8.2-.8c.3 0 .5-.8.7-1.3-1.2-.2-2.4-.3-3.6-.4.1.9.4 1.4-.1 1.6"/><path d="m25.9 2.8c.5.2 1.4 0 1.3-.4-.5.1-1 .2-1.5.3 0 0 .1.1.2.1"/><path d="m26.2 3.2c-.8-.4-.7.6-.4.9s1.4-.4.4-.9"/><path d="m30.8 2c.6.1.9.5 1 .9.2.3 1-.4 1-.9-.3 0-.5 0-.8 0-.4 0-.8 0-1.2 0"/><path d="m29.2 3.1c-.3.5 0 1 .4.6.4-.5.1-1.7.4-1.1.3.5.9 1.3 1.3 1.4.4 0 .1-.5 0-.9 0-.4-1-.8-.9-1-.6 0-1.2.1-1.8.1.4.3.9.6.6.9"/><path d="m31 7.2c.5.2 0-1 0-1-.5.3-.5.8 0 1"/><path d="m29.3 6.4c.1.3.6.4.9 0 .3-.4 0-2-.4-1.5-.4.5-.8.3-1.6 0s1 1.2 1.1 1.5"/><path d="m34.6 34c.7-.1 1.1.7 1.8.7s1.9 1.1 2.5.4c.5-.5-2.3-1-3.2-1.5-1-.5-1.8.5-1.1.4"/><path d="m37.9 3.6c.9.4.8.4.2.9s-.4 1.4.9 1.3 2-1.3 2.6.4c.6 1.8.2 3.7.9 4.2.7.5.1.9 0 1.4s.2.9.8.7.4.9 0 1.3c-.4.4-.9 1.3.4 2.8s1.4 1.3 1.8 1.9c.4.5.7-.2.8-.8s-.4-2.7 1.1-2.7c1.4 0 1.8-1.1 2-1.5s1.3-.3 1.9-.8c.5-.5 1.1-.9 1.2-2.7-4.1-3.8-9.2-6.4-14.9-7.5-.2.4-.2.9.3 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f30f.svg b/riot/emojione/svg/1f30f.svg new file mode 100644 index 0000000..3766698 --- /dev/null +++ b/riot/emojione/svg/1f30f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0 16.6-13.4 30-30 30s-30-13.4-30-30c0-4.4.9-8.5 2.6-12.3l32-17.3c2.3.4 4.5 1 6.5 1.8l.7 1.5 1.2-.8c10 4.9 17 15.2 17 27.1" fill="#008db3"/><g fill="#ffc942"><path d="m7.5 20.9c.9 1.8 2.1-.6 2 1.2-.1 1.8 1.2 5.8 2 5.3.8-.5.8-3.5 2.1-3.8 1.4-.4 3.3-2.7 3.9-1.6.6 1 .4 2.9.9 2.5.5-.4 1.2 0 1.1 1.3-.1 1.3 1.1 3.1 1.5 3.8s-2.1-2-3.3-3.6c-1.2-1.6.9 3.4 2.4 5.3 1.5 1.9 7.4 3.2 8.9 4 1.5.8 5.7-1.5 4.1-1.4 0 0-3.7.5-5-.2s-4.4-.7-5-1.6c-.5-.9-.5-2.3-1.5-3.6-.9-1.3-1.5-3.6-.3-2.6s2.6 1.2 2.8.5c.2-.7-2.4-3-.8-4 1.6-1 3.2-.3 3.9-1 .8-.8 2.6-3.1 2.1-4.2-.4-1.1-.5-1.9 0-2.2.5-.3-2.5-.3-1.3-1.2 1.2-.9 2.5-1.6 2.6 0 .1 1.6 0 3.1.6 3.1.6 0 1.5-1.8 1.3-2.6-.3-.8.3-2.5 1.5-2.6 1.2-.1 2.6-2.1 2.9-4s.3-3.5-.6-3.3c-.8.2-.9-1 .3-2-1.5-.3-3-.4-4.6-.4-12.2 0-22.7 7.3-27.4 17.7 1 0 2.3.1 2.9 1.2"/><path d="m42.6 7.9c-.7 1.2 1.1-.5 2.3-3-.6-.3-1.2-.5-1.8-.8.1 1.1.1 2.9-.5 3.8"/><path d="m34.3 16.9c1.4-.9 3.6-.9 3.6-2.8s5.4-5.1 4.1-5c-1.3.1-3.8 2.5-3.8.9 0-1.6 0-4.6-.3-5.4-.4-.9-.2 4.4-.6 5.3-.4.9 0 4.2-1.1 4.6-1.2.4-3.2 1.3-3.2 2.5s-.1.8 1.3-.1"/><path d="m35.8 32.7c.7.6-.4 2.2.4 1.8.8-.3 1.7.6 2.1 0 .4-.5.5-.9 1.7.2 1.3 1 2.2.8 1.4 0-.8-.8-1.5-2.2-3.2-2.7 0 0-1.8-.2-3-.8 0 0-1.7-.9-2.3-.3-.5.6-.5-1.6-.9-1.2-.4.4.2 1.7-1 1.4-1.2-.3-1.6.1-1.9-.9s-2.1-.5-.7-1.2c1.4-.7 2.1-1 2.1-.4.1.6 1.4-.5.9-2.1-.5-1.5-1.9-1-1.8-3 0-.9-1.4.3-1.1 1.4.2 1.1-.3 1.3-.8 2.2-.6.9-2.7 2.9-3.2 2.9-.6 0-.4 1.1 0 1.8s2.4.8 2.8.9c.4.1.9-3.1 1-2.2.1.9.3 3.4.6 2.8.3-.6 1.4.2 1.4-.3s-.5-1.5.6-1c1.1.5 2.6.9 2.5.3-.2-.7 1.7-.2 2.4.4m-6.6-6.7c.5 2.1-.7 2.5-1.1 2.1s1-2.6 1.1-2.1"/><path d="m40.7 39.7c-1.7-1.5-2.4-3.9-2.8-4.2-.7-.6-.4 2-.6 2.6-.2.5-1.2-.6-1.6-.9-.5-.2-.2-.6 0-1 .2-.5-.9-.9-1.7-.7-.8.2-.8-.1-1.1.6s-.1 1.2-.9.8c-.8-.4-1.3.2-1.9.8-.6.6-.8.9-1 1.3-.2.5-3.4.2-3.4 1.7s1.3 2.7 1 3.8.2 2.3 1.2 1.8c1-.6 2.4-.4 2.8-.9.4-.5 3.1-1.2 3.5-.3.5.9 1 1.3 1.8 1.3s.9.8.9 1.3c0 .6 1.2.1 1.9.3.7.2 2.3.1 2.5-1.3.1-1.3.9-2.2 1.1-2.9s-.1-2.7-1.7-4.1"/><path d="m39.2 48.8c-.8-.1-.2 1.8.3 1.9.5.2.8-1.1.7-1.9 0-.6-.2.1-1 0"/><path d="m51.8 47.1c-.5.1-.9-1.3-1.3-1-.7.6.8 1.9 0 2.6-.8.7-1 1.9-1.7 2s-1.6 1-1 1.5c.6.5 1.6 0 1.9-1 .3-1 .6-1.4 1.3-1.7s.6-1.1 1.3-1.6c.7-.3 0-.8-.5-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f310.svg b/riot/emojione/svg/1f310.svg new file mode 100644 index 0000000..5290ca3 --- /dev/null +++ b/riot/emojione/svg/1f310.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-16.5 0-30 13.5-30 30 0 16.5 13.5 30 30 30 16.5 0 30-13.5 30-30 0-16.5-13.5-30-30-30m20 46.2c-1.2-1.1-2.5-2.1-3.8-2.9 1.7-3.4 2.7-7.1 3-10.9h6.4c-.4 5.2-2.4 10-5.6 13.8m-45.7-13.8h6.3c.3 3.8 1.4 7.5 3 10.9-1.3.9-2.5 1.8-3.7 2.9-3.1-3.8-5.1-8.6-5.6-13.8m5.7-18.6c1.2 1.1 2.4 2 3.7 2.9-1.8 3.6-2.8 7.5-3.1 11.5h-6.3c.3-5.4 2.4-10.4 5.7-14.4m17.9-6.2v9.6c-2.9-.2-5.7-1-8.4-2.1 2.2-3.1 5.1-5.7 8.4-7.5m0 13.8v6.8h-13.1c.2-3.4 1.1-6.6 2.6-9.5 3.2 1.6 6.8 2.5 10.5 2.7m0 11v6.2c-3.7.3-7.3 1.2-10.6 2.7-1.3-2.7-2.2-5.7-2.5-8.9h13.1m0 10.4v9.7c-3.4-1.9-6.2-4.4-8.4-7.5 2.6-1.2 5.5-2 8.4-2.2m4.2 9.6v-9.6c2.9.2 5.7.9 8.3 2.1-2.2 3-5 5.6-8.3 7.5m0-13.8v-6.2h12.9c-.3 3.1-1.2 6.1-2.5 8.8-3.2-1.5-6.7-2.4-10.4-2.6m0-10.4v-6.8c3.7-.2 7.2-1.2 10.5-2.7 1.4 2.9 2.3 6.1 2.5 9.4h-13zm0-11v-9.6c3.3 1.9 6.1 4.4 8.3 7.5-2.6 1.2-5.4 1.9-8.3 2.1m10.4-6.2c-2-2.4-4.3-4.5-6.9-6.1 4.4 1 8.3 3 11.5 5.9-1 .9-2 1.6-3 2.3-.5-.7-1-1.5-1.6-2.1m-25.1 0c-.5.7-1.1 1.4-1.6 2.1-1-.7-2-1.4-2.9-2.3 3.2-2.8 7.1-4.9 11.4-5.9-2.7 1.6-5 3.7-6.9 6.1m-1.6 36c.4.6.8 1.2 1.3 1.7 2 2.5 4.4 4.7 7.1 6.4-4.3-1-8.2-3-11.4-5.9 1-.8 2-1.5 3-2.2m26.8 2c.5-.7 1.1-1.4 1.6-2.1 1.1.7 2.1 1.5 3 2.3-3.2 2.9-7.2 4.9-11.5 5.9 2.5-1.6 4.9-3.7 6.9-6.1m6.7-20.8c-.2-4-1.3-7.9-3.1-11.5 1.3-.9 2.6-1.8 3.8-2.9 3.2 4 5.3 9 5.7 14.4 0 0-6.4 0-6.4 0" fill="#4fd1d9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f311.svg b/riot/emojione/svg/1f311.svg new file mode 100644 index 0000000..78fd41e --- /dev/null +++ b/riot/emojione/svg/1f311.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#3e4347"/><g fill="#464d51"><circle cx="50" cy="35.2" r="7"/><circle cx="18.1" cy="39" r="6"/><circle cx="24.2" cy="50" r="9"/><circle cx="24" cy="17.2" r="4"/><circle cx="37" cy="18.2" r="4"/><circle cx="12.1" cy="25.9" r="4"/><circle cx="39" cy="9.2" r="2"/><circle cx="8.1" cy="39" r="2"/><circle cx="52" cy="50" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="15" cy="15.7" r="2"/><circle cx="46" cy="52.6" r="4"/><path d="m24.2 10.8c0 2.8 2.2 5 5 5 2.8 0 5-2.2 5-5 0-2.8-2.2-5-5-5-2.8-.1-5 2.2-5 5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f312.svg b/riot/emojione/svg/1f312.svg new file mode 100644 index 0000000..7bae646 --- /dev/null +++ b/riot/emojione/svg/1f312.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49 32c0-16.6-7.6-30-17-30-16.6 0-30 13.4-30 30s13.4 30 30 30c9.4 0 17-13.4 17-30" fill="#3e4347"/><path d="M32,2c9.4,0,17,13.4,17,30s-7.6,30-17,30c16.6,0,30-13.4,30-30S48.6,2,32,2z" fill="#ffe8a6"/><g fill="#464d51"><path d="m48.9 28.3c-3.3.5-5.9 3.4-5.9 6.9 0 3.2 2.1 5.9 5 6.7.6-3.1 1-6.5 1-10 0-1.1 0-2.4-.1-3.6"/><path d="m24.2 41c-.1 0-.3 0-.4 0 .2-.6.4-1.3.4-2 0-3.3-2.7-6-6-6-3.3 0-6 2.7-6 6 0 2.9 2 5.2 4.7 5.8-1 1.5-1.6 3.2-1.6 5.2 0 5 4 9 9 9s9-4 9-9c-.1-4.9-4.2-9-9.1-9"/><path d="m24 21.2c2.2 0 4-1.8 4-4 0-.6-.2-1.2-.4-1.8.5.2 1 .3 1.6.3 2.8 0 5-2.2 5-5 0-2.8-2.2-5-5-5-2.8 0-5 2.2-5 5 0 1 .3 1.9.8 2.6-.3-.1-.6-.1-.9-.1-2.2 0-4 1.8-4 4-.1 2.3 1.7 4 3.9 4"/><circle cx="37" cy="18.2" r="4"/><circle cx="12.1" cy="25.9" r="4"/><circle cx="39" cy="9.2" r="2"/><circle cx="8.1" cy="39" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="15" cy="15.7" r="2"/><path d="m42 52.6c0 .9.3 1.8.9 2.5 1.3-1.9 2.4-4 3.3-6.4 0 0-.1 0-.1 0-2.3-.1-4.1 1.7-4.1 3.9"/></g><g fill="#f4dc9f"><path d="m57 35.2c0-3.9-3.1-7-7-7-.4 0-.8 0-1.1.1.1 1.2.1 2.5.1 3.7 0 3.5-.3 6.8-1 10 .6.2 1.3.3 2 .3 3.9-.1 7-3.2 7-7.1"/><circle cx="52" cy="50" r="2"/><path d="m46 56.6c2.2 0 4-1.8 4-4 0-2.2-1.7-3.9-3.9-4-.9 2.4-2 4.6-3.3 6.4.8 1 1.9 1.6 3.2 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f313.svg b/riot/emojione/svg/1f313.svg new file mode 100644 index 0000000..2a604a0 --- /dev/null +++ b/riot/emojione/svg/1f313.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-1.1,0-2,13.4-2,30s0.9,30,2,30c16.6,0,30-13.4,30-30S48.6,2,32,2z" fill="#ffe8a6"/><path d="m30 32c0-16.6.9-30 2-30-16.6 0-30 13.4-30 30s13.4 30 30 30c-1.1 0-2-13.4-2-30" fill="#3e4347"/><g fill="#f4dc9f"><circle cx="50" cy="35.2" r="7"/><path d="m30.1 43.3c.1 5.1.4 9.5.7 12.8 1.5-1.6 2.3-3.7 2.3-6 .1-2.7-1.1-5.1-3-6.8"/><circle cx="37" cy="18.2" r="4"/><circle cx="39" cy="9.2" r="2"/><circle cx="52" cy="50" r="2"/><circle cx="46" cy="52.6" r="4"/><path d="m34.2 10.8c0-2.1-1.3-3.9-3.2-4.6-.3 2.4-.5 5.6-.7 9.5 2.2-.6 3.9-2.6 3.9-4.9"/></g><g fill="#464d51"><path d="m24.2 41c-.1 0-.3 0-.4 0 .2-.6.4-1.3.4-2 0-3.3-2.7-6-6-6-3.3 0-6 2.7-6 6 0 2.9 2 5.2 4.7 5.8-1 1.5-1.6 3.2-1.6 5.2 0 5 4 9 9 9 2.6 0 5-1.1 6.7-3-.3-3.2-.5-7.6-.7-12.8-1.7-1.3-3.8-2.2-6.1-2.2"/><path d="m24 21.2c2.2 0 4-1.8 4-4 0-.6-.2-1.2-.4-1.8.5.2 1 .3 1.6.3.4 0 .8-.1 1.2-.2.2-3.9.4-7.1.7-9.5-.6-.2-1.2-.4-1.8-.4-2.8 0-5 2.2-5 5 0 1 .3 1.9.8 2.6-.3-.1-.6-.1-.9-.1-2.2 0-4 1.8-4 4-.2 2.4 1.6 4.1 3.8 4.1"/><circle cx="12.1" cy="25.9" r="4"/><circle cx="8.1" cy="39" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="15" cy="15.7" r="2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f314.svg b/riot/emojione/svg/1f314.svg new file mode 100644 index 0000000..8fd4cf6 --- /dev/null +++ b/riot/emojione/svg/1f314.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-9.4,0-17,13.4-17,30s7.6,30,17,30c16.6,0,30-13.4,30-30S48.6,2,32,2z" fill="#ffe8a6"/><path d="m15 32c0-16.6 7.6-30 17-30-16.6 0-30 13.4-30 30s13.4 30 30 30c-9.4 0-17-13.4-17-30" fill="#3e4347"/><g fill="#f4dc9f"><circle cx="50" cy="35.2" r="7"/><path d="m24.2 41c-.1 0-.3 0-.4 0 .2-.6.4-1.3.4-2 0-3.3-2.7-6-6-6-1.1 0-2.2.3-3.1.9.1 3.9.7 7.6 1.6 10.9 0 0 .1 0 .1 0 0 0-.1.1-.1.1 1.7 6.1 4.5 11 7.9 14 4.8-.2 8.5-4.2 8.5-9 .1-4.8-4-8.9-8.9-8.9"/><path d="m24 21.2c2.2 0 4-1.8 4-4 0-.6-.2-1.2-.4-1.8.5.2 1 .3 1.6.3 2.8 0 5-2.2 5-5 0-2.8-2.2-5-5-5-2.8 0-5 2.2-5 5 0 1 .3 1.9.8 2.6-.3-.1-.6-.1-.9-.1-2.2 0-4 1.8-4 4-.1 2.3 1.7 4 3.9 4"/><circle cx="37" cy="18.2" r="4"/><path d="m15.6 24c-.2 1.5-.4 3-.5 4.5.6-.7 1-1.6 1-2.6 0-.7-.2-1.3-.5-1.9"/><circle cx="39" cy="9.2" r="2"/><circle cx="52" cy="50" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="46" cy="52.6" r="4"/></g><g fill="#464d51"><path d="m15 33.9c-1.7 1-2.9 3-2.9 5.1 0 2.8 1.9 5.1 4.5 5.8-.9-3.3-1.4-7-1.6-10.9"/><path d="m16.7 45c-1 1.4-1.5 3.2-1.5 5 0 5 4 9 9 9 .2 0 .3 0 .5 0-3.5-2.9-6.3-7.9-8-14"/><path d="m12.1 29.9c1.2 0 2.3-.5 3-1.4.1-1.6.3-3.1.5-4.5-.7-1.2-2-2.1-3.5-2.1-2.2 0-4 1.8-4 4 0 2.2 1.8 4 4 4"/><circle cx="8.1" cy="39" r="2"/><circle cx="15" cy="15.7" r="2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f315.svg b/riot/emojione/svg/1f315.svg new file mode 100644 index 0000000..cdcbea5 --- /dev/null +++ b/riot/emojione/svg/1f315.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffe8a6"/><g fill="#f4dc9f"><circle cx="50" cy="35.2" r="7"/><circle cx="18.1" cy="39" r="6"/><circle cx="24.2" cy="50" r="9"/><circle cx="24" cy="17.2" r="4"/><circle cx="37" cy="18.2" r="4"/><circle cx="12.1" cy="25.9" r="4"/><circle cx="39" cy="9.2" r="2"/><circle cx="8.1" cy="39" r="2"/><circle cx="52" cy="50" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="15" cy="15.7" r="2"/><circle cx="46" cy="52.6" r="4"/><path d="m24.2 10.8c0 2.8 2.2 5 5 5 2.8 0 5-2.2 5-5 0-2.8-2.2-5-5-5-2.8-.1-5 2.2-5 5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f316.svg b/riot/emojione/svg/1f316.svg new file mode 100644 index 0000000..0e1aa7b --- /dev/null +++ b/riot/emojione/svg/1f316.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49 32c0-16.6-7.6-30-17-30-16.6 0-30 13.4-30 30s13.4 30 30 30c9.4 0 17-13.4 17-30" fill="#ffe8a6"/><path d="M32,2c9.4,0,17,13.4,17,30s-7.6,30-17,30c16.6,0,30-13.4,30-30S48.6,2,32,2z" fill="#3e4347"/><g fill="#f4dc9f"><path d="m48.9 28.3c-3.3.5-5.9 3.4-5.9 6.9 0 3.2 2.1 5.9 5 6.7.6-3.1 1-6.5 1-10 0-1.1 0-2.4-.1-3.6"/><path d="m24.2 41c-.1 0-.3 0-.4 0 .2-.6.4-1.3.4-2 0-3.3-2.7-6-6-6-3.3 0-6 2.7-6 6 0 2.9 2 5.2 4.7 5.8-1 1.5-1.6 3.2-1.6 5.2 0 5 4 9 9 9s9-4 9-9c-.1-4.9-4.2-9-9.1-9"/><path d="m24 21.2c2.2 0 4-1.8 4-4 0-.6-.2-1.2-.4-1.8.5.2 1 .3 1.6.3 2.8 0 5-2.2 5-5 0-2.8-2.2-5-5-5-2.8 0-5 2.2-5 5 0 1 .3 1.9.8 2.6-.3-.1-.6-.1-.9-.1-2.2 0-4 1.8-4 4-.1 2.3 1.7 4 3.9 4"/><circle cx="37" cy="18.2" r="4"/><circle cx="12.1" cy="25.9" r="4"/><circle cx="39" cy="9.2" r="2"/><circle cx="8.1" cy="39" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="15" cy="15.7" r="2"/><path d="m42 52.6c0 .9.3 1.8.9 2.5 1.3-1.9 2.4-4 3.3-6.4 0 0-.1 0-.1 0-2.3-.1-4.1 1.7-4.1 3.9"/></g><g fill="#464d51"><path d="m57 35.2c0-3.9-3.1-7-7-7-.4 0-.8 0-1.1.1.1 1.2.1 2.5.1 3.7 0 3.5-.3 6.8-1 10 .6.2 1.3.3 2 .3 3.9-.1 7-3.2 7-7.1"/><circle cx="52" cy="50" r="2"/><path d="m46 56.6c2.2 0 4-1.8 4-4 0-2.2-1.7-3.9-3.9-4-.9 2.4-2 4.6-3.3 6.4.8 1 1.9 1.6 3.2 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f317.svg b/riot/emojione/svg/1f317.svg new file mode 100644 index 0000000..fe9e6db --- /dev/null +++ b/riot/emojione/svg/1f317.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 32c0-16.6-.9-30-2-30-16.6 0-30 13.4-30 30s13.4 30 30 30c1.1 0 2-13.4 2-30" fill="#ffe8a6"/><path d="M32,2c1.1,0,2,13.4,2,30s-0.9,30-2,30c16.6,0,30-13.4,30-30S48.6,2,32,2z" fill="#3e4347"/><g fill="#f4dc9f"><path d="m24.2 41c-.1 0-.3 0-.4 0 .2-.6.4-1.3.4-2 0-3.3-2.7-6-6-6-3.3 0-6 2.7-6 6 0 2.9 2 5.2 4.7 5.8-1 1.5-1.6 3.2-1.6 5.2 0 5 4 9 9 9s9-4 9-9c-.1-4.9-4.2-9-9.1-9"/><path d="m24 21.2c2.2 0 4-1.8 4-4 0-.6-.2-1.2-.4-1.8.5.2 1 .3 1.6.3 1.9 0 3.6-1.1 4.4-2.7-.1-2-.2-3.8-.4-5.3-.9-1.2-2.4-2.1-4-2.1-2.8 0-5 2.2-5 5 0 1 .3 1.9.8 2.6-.3-.1-.6-.1-.9-.1-2.2 0-4 1.8-4 4s1.7 4.1 3.9 4.1"/><path d="m33.9 20.7c0-1.6-.1-3.2-.2-4.7-.4.6-.7 1.4-.7 2.2 0 1 .3 1.8.9 2.5"/><circle cx="12.1" cy="25.9" r="4"/><circle cx="8.1" cy="39" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="15" cy="15.7" r="2"/></g><g fill="#464d51"><circle cx="50" cy="35.2" r="7"/><path d="m37 14.2c-1.4 0-2.6.7-3.3 1.8.1 1.5.1 3 .2 4.7.7.9 1.9 1.6 3.1 1.6 2.2 0 4-1.8 4-4s-1.8-4.1-4-4.1"/><circle cx="39" cy="9.2" r="2"/><circle cx="52" cy="50" r="2"/><circle cx="46" cy="52.6" r="4"/><path d="m33.2 7.8c.1 1.5.3 3.3.4 5.3.4-.7.6-1.5.6-2.3 0-1.2-.4-2.2-1-3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f318.svg b/riot/emojione/svg/1f318.svg new file mode 100644 index 0000000..0cc59a6 --- /dev/null +++ b/riot/emojione/svg/1f318.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-9.4,0-17,13.4-17,30s7.6,30,17,30c16.6,0,30-13.4,30-30S48.6,2,32,2z" fill="#3e4347"/><path d="m15 32c0-16.6 7.6-30 17-30-16.6 0-30 13.4-30 30s13.4 30 30 30c-9.4 0-17-13.4-17-30" fill="#ffe8a6"/><g fill="#464d51"><circle cx="50" cy="35.2" r="7"/><path d="m24.2 41c-.1 0-.3 0-.4 0 .2-.6.4-1.3.4-2 0-3.3-2.7-6-6-6-1.1 0-2.2.3-3.1.9.1 3.9.7 7.6 1.6 10.9 0 0 .1 0 .1 0 0 0-.1.1-.1.1 1.7 6.1 4.5 11 7.9 14 4.8-.2 8.5-4.2 8.5-9 .1-4.8-4-8.9-8.9-8.9"/><path d="m24 21.2c2.2 0 4-1.8 4-4 0-.6-.2-1.2-.4-1.8.5.2 1 .3 1.6.3 2.8 0 5-2.2 5-5 0-2.8-2.2-5-5-5-2.8 0-5 2.2-5 5 0 1 .3 1.9.8 2.6-.3-.1-.6-.1-.9-.1-2.2 0-4 1.8-4 4-.1 2.3 1.7 4 3.9 4"/><circle cx="37" cy="18.2" r="4"/><path d="m15.6 24c-.2 1.5-.4 3-.5 4.5.6-.7 1-1.6 1-2.6 0-.7-.2-1.3-.5-1.9"/><circle cx="39" cy="9.2" r="2"/><circle cx="52" cy="50" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="46" cy="52.6" r="4"/></g><g fill="#f4dc9f"><path d="m15 33.9c-1.7 1-2.9 3-2.9 5.1 0 2.8 1.9 5.1 4.5 5.8-.9-3.3-1.4-7-1.6-10.9"/><path d="m16.7 45c-1 1.4-1.5 3.2-1.5 5 0 5 4 9 9 9 .2 0 .3 0 .5 0-3.5-2.9-6.3-7.9-8-14"/><path d="m12.1 29.9c1.2 0 2.3-.5 3-1.4.1-1.6.3-3.1.5-4.5-.7-1.2-2-2.1-3.5-2.1-2.2 0-4 1.8-4 4 0 2.2 1.8 4 4 4"/><circle cx="8.1" cy="39" r="2"/><circle cx="15" cy="15.7" r="2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f319.svg b/riot/emojione/svg/1f319.svg new file mode 100644 index 0000000..3fd5b28 --- /dev/null +++ b/riot/emojione/svg/1f319.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M43.1,2c3.2,4.8,5.1,10.6,5.1,16.8C48.3,35.5,34.6,49,17.7,49C12,49,6.6,47.4,2,44.7C7.2,55,17.9,62,30.3,62 + C47.8,62,62,48,62,30.7C62,17.9,54.2,6.9,43.1,2z" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f31a.svg b/riot/emojione/svg/1f31a.svg new file mode 100644 index 0000000..201d831 --- /dev/null +++ b/riot/emojione/svg/1f31a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#3e4347"/><g fill="#464d51"><circle cx="25.9" cy="7.8" r="3.4"/><circle cx="46.9" cy="14.6" r="5.7"/><circle cx="34.7" cy="14.1" r="2.6"/><circle cx="57.5" cy="37" r="2"/><circle cx="55.5" cy="22.3" r="2"/><circle cx="22.5" cy="15.7" r="2"/><circle cx="14.4" cy="16.7" r="4.6"/><circle cx="51.9" cy="29.4" r="2.6"/></g><g opacity=".7" fill="#fff"><path d="m33.8 33c.1-.3.4-.6.7-.8.3-.2.6-.4.9-.5.6-.3 1.3-.4 1.9-.5 1.2-.2 2.4-.4 3.5-.5 1.1-.2 2.1-.4 3-.7 1-.4 1.9-1 2.9-1.9.1 1.4-.5 2.8-1.6 3.8-1.1 1-2.6 1.5-3.9 1.7-1.4.2-2.7.1-3.9-.1-.6-.1-1.2-.2-1.8-.4-.5-.1-1-.3-1.7-.1"/><path d="m17.8 35.1c-1.1.3-1.6.8-2.3 1.3-.7.5-1.6 1-2.6 1.3-1 .3-2.4.3-3.5-.2-1.1-.5-1.8-1.5-2.1-2.5 1.1.2 2 .3 2.7.3.7 0 1.3-.2 2-.4.7-.2 1.6-.5 2.6-.6.5-.1 1.1-.1 1.7 0 .6.1 1.2.3 1.5.8"/><path d="m14.3 23.5c1.7-.1 3.4.1 5 1.1.8.5 1.5 1.1 2.1 1.8.6.7 1 1.6 1.3 2.4.7 1.7.9 3.5 1 5.2 0 1.7-.1 3.5-.4 5.1-.1.8-.3 1.7-.5 2.5-.2.7-.2 1.3-.1 1.9.1 1.2.8 2.1 2.1 2.7 1.2.6 2.8.7 4.3.6 1.5-.1 3.1-.6 4.5-1.5-1 1.3-2.6 2.3-4.2 2.8-1.7.5-3.5.7-5.4.2-.9-.3-1.9-.8-2.6-1.5-.8-.8-1.3-1.8-1.4-2.8-.2-1-.1-2.1 0-3 .1-.8.3-1.6.4-2.4.4-3.1.7-6.3.1-9.2-.3-1.4-1-2.8-2.1-3.8-1-.8-2.5-1.5-4.1-2.1"/><path d="m19.1 53.4c2.7 0 5.3.2 7.9.1 2.6-.1 5.1-.3 7.5-.9 2.4-.6 4.8-1.5 7.1-2.6 2.3-1.1 4.6-2.5 7-3.8-1.6 2.2-3.5 4.2-5.8 5.8-2.3 1.6-4.8 2.8-7.6 3.5-2.8.7-5.6.7-8.3.4-2.8-.4-5.4-1.3-7.8-2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f31b.svg b/riot/emojione/svg/1f31b.svg new file mode 100644 index 0000000..1f67f81 --- /dev/null +++ b/riot/emojione/svg/1f31b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.4 2.2c5 2.5 9.4 6.4 12.4 11.5 1.6 2.7 2.6 5.6 3.2 8.5.8 3.9.1 9.5-6.8 7.6-3.7-1-7.3 5.7-.4 7.6 2 .5-4.7 2.1.4 4.9 0 0-5.5 1.3-2.1 3.9 1.5 1.2-.2 3.1-1.1 3.9-1.4 1.2-3 2.2-4.7 3.2-4.8 2.6-10.1 3.8-15.3 3.7 9.3 6.1 21.8 6.9 32.3 1.1 14.8-8.2 20.1-26.5 11.8-40.9-6.1-10.7-18-16.2-29.7-15" fill="#ffe8a6"/><g fill="#f4dc9f"><path d="m42.9 47.5c-1.5-.4-3 .4-3.4 1.9-.4 1.4.5 2.9 1.9 3.3s3-.4 3.4-1.9c.4-1.4-.4-2.9-1.9-3.3"/><path d="m46.9 15c-1.5-.4-3 .4-3.4 1.9-.4 1.4.5 2.9 1.9 3.3 1.5.4 3-.4 3.4-1.9.4-1.4-.4-2.9-1.9-3.3"/><path d="m34.1 48.5c-2.4-.7-5 .7-5.6 3.1-.7 2.4.7 4.9 3.2 5.5s5-.7 5.6-3.1c.7-2.3-.7-4.8-3.2-5.5"/><path d="m51.1 31.1c-2.6-.7-5.2.8-5.9 3.3-.7 2.5.8 5.1 3.3 5.8 2.6.7 5.2-.8 5.9-3.3.8-2.5-.7-5.1-3.3-5.8"/><path d="m24.3 55.1c-1.2-.3-2.4.4-2.7 1.5-.3 1.1.4 2.3 1.5 2.6 1.2.3 2.4-.4 2.7-1.5.3-1-.4-2.2-1.5-2.6"/><path d="m38.5 7.4c-.9-.2-1.9.3-2.1 1.2-.3.9.3 1.8 1.2 2.1.9.2 1.9-.3 2.1-1.2.3-.9-.3-1.9-1.2-2.1"/></g><path d="m45.5 41.7c-.3.5-.9.9-1.4 1.2-.6.3-1.2.5-1.8.6-1.2.3-2.5.3-3.8.3-1.3-.1-2.5-.2-3.7-.5-1.2-.3-2.4-.6-3.6-1.1 2.5.2 4.9.5 7.3.6 1.2.1 2.4.1 3.6 0 .6-.1 1.2-.1 1.8-.3.6-.1 1.1-.4 1.6-.8" fill="#7f5629"/><path d="m37.4 46.8c-1.3.1-2.4-.1-3.6-.2-.6-.1-1.2-.1-1.7-.1-.6 0-1.1 0-1.8.1.4-.5 1.1-.8 1.7-.9.6-.1 1.3-.1 1.9-.1 1.3.2 2.5.5 3.5 1.2" fill="#b79918"/><path d="m34.5 37.5c-.3-.2-.6-.3-.8-.4l-.7-.1c-.5-.2-1.1-.4-1.6-.9.7-.2 1.2-.2 1.9-.1.3.1.6.2.9.5.2.3.4.7.3 1" fill="#7f5629"/><path d="m44.1 23c2.7.7 4.7 3.6 4 6.3-.8 2.7-4 4.1-6.7 3.4-2.7-.7-2.2-2.9-1.4-5.6.7-2.7 1.3-4.8 4.1-4.1" fill="#fff"/><path d="m42.8 24.6c1.7.5 3.1 2.3 2.7 4s-2.7 2.5-4.4 2.1c-1.7-.5-1.3-1.8-.9-3.5.5-1.7.9-3.1 2.6-2.6" fill="#7f5629"/><path d="m37.1 35.2c.7 1 1.7 1.5 2.7 2l3.1 1.5c1 .5 2.1 1.1 3 1.9.5.4.9.9 1.2 1.4.3.6.4 1.2.2 1.8-.1-1.2-1-2-1.9-2.6-.9-.6-2-1.1-3-1.7-1-.5-2.1-1.1-3.1-1.8-.8-.4-1.8-1.3-2.2-2.5" fill="#b79918"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f31c.svg b/riot/emojione/svg/1f31c.svg new file mode 100644 index 0000000..53b98ca --- /dev/null +++ b/riot/emojione/svg/1f31c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.6 2.2c-5 2.5-9.4 6.4-12.4 11.5-1.6 2.7-2.6 5.6-3.2 8.5-.8 3.9-.1 9.5 6.8 7.6 3.7-1 7.3 5.7.4 7.6-2 .5 4.7 2.1-.4 4.9 0 0 5.5 1.3 2.1 3.9-1.5 1.2.2 3.1 1.1 3.9 1.4 1.2 3 2.2 4.7 3.2 4.9 2.7 10.2 3.9 15.3 3.8-9.3 6.1-21.8 6.9-32.3 1.1-14.8-8.4-20.1-26.7-11.8-41.1 6.1-10.6 18-16.1 29.7-14.9" fill="#ffe8a6"/><g fill="#f4dc9f"><path d="m21.1 47.5c1.5-.4 3 .4 3.4 1.9.4 1.4-.5 2.9-1.9 3.3s-3-.4-3.4-1.9c-.4-1.4.4-2.9 1.9-3.3"/><path d="m17.1 15c1.5-.4 3 .4 3.4 1.9.4 1.4-.5 2.9-1.9 3.3-1.5.4-3-.4-3.4-1.9-.4-1.4.4-2.9 1.9-3.3"/><path d="m29.9 48.5c2.4-.7 5 .7 5.6 3.1.7 2.4-.7 4.9-3.2 5.5-2.4.7-5-.7-5.6-3.1-.7-2.3.7-4.8 3.2-5.5"/><path d="m12.9 31.1c2.6-.7 5.2.8 5.9 3.3.7 2.5-.8 5.1-3.3 5.8s-5.2-.8-5.9-3.3c-.8-2.5.7-5.1 3.3-5.8"/><path d="m39.7 55.1c1.2-.3 2.4.4 2.7 1.5.3 1.1-.4 2.3-1.5 2.6-1.2.3-2.4-.4-2.7-1.5-.3-1 .4-2.2 1.5-2.6"/><path d="m25.5 7.4c.9-.2 1.9.3 2.1 1.2.3.9-.3 1.8-1.2 2.1-.9.2-1.9-.3-2.1-1.2-.3-.9.3-1.9 1.2-2.1"/></g><path d="m18.5 41.7c.5.4 1 .6 1.6.8.6.2 1.2.2 1.8.3 1.2.1 2.4.1 3.6 0 2.4-.1 4.8-.3 7.3-.6-1.1.5-2.3.9-3.6 1.1-1.2.3-2.5.4-3.7.5-1.3 0-2.5 0-3.8-.3-.6-.1-1.2-.3-1.8-.6-.6-.2-1.1-.6-1.4-1.2" fill="#7f5629"/><path d="m26.6 46.8c1.1-.7 2.3-1 3.5-1.2.6 0 1.3 0 1.9.1.6.1 1.3.4 1.7.9-.6-.1-1.2-.1-1.8-.1-.6 0-1.1.1-1.7.1-1.2.1-2.4.3-3.6.2" fill="#b79918"/><path d="m29.5 37.5c-.1-.3.1-.7.4-1 .3-.3.6-.4.9-.5.6-.1 1.2-.2 1.9.1-.5.5-1.1.8-1.6.9l-.7.2c-.4 0-.6.1-.9.3" fill="#7f5629"/><path d="m20 23c-2.7.7-4.7 3.6-4 6.3.8 2.7 4 4.1 6.7 3.4 2.7-.7 2.2-2.9 1.4-5.6-.8-2.7-1.4-4.8-4.1-4.1" fill="#fff"/><path d="m21.2 24.6c-1.7.5-3.1 2.3-2.7 4s2.7 2.5 4.4 2.1c1.7-.5 1.3-1.8.9-3.5-.5-1.7-.9-3.1-2.6-2.6" fill="#7f5629"/><path d="m26.9 35.2c-.3 1.2-1.4 2-2.3 2.7-1 .7-2 1.2-3.1 1.8-1 .5-2.1 1-3 1.7-.9.6-1.8 1.4-1.9 2.6-.2-.6-.1-1.2.2-1.8.3-.6.7-1 1.2-1.4.9-.8 2-1.4 3-1.9l3.1-1.5c1-.7 2.1-1.2 2.8-2.2" fill="#b79918"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f31d.svg b/riot/emojione/svg/1f31d.svg new file mode 100644 index 0000000..90c6d50 --- /dev/null +++ b/riot/emojione/svg/1f31d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffe8a6"/><g fill="#f4dc9f"><circle cx="50" cy="35.2" r="7"/><circle cx="18.1" cy="39" r="6"/><circle cx="24.2" cy="50" r="9"/><circle cx="24" cy="17.2" r="4"/><circle cx="37" cy="18.2" r="4"/><circle cx="12.1" cy="25.9" r="4"/><circle cx="39" cy="9.2" r="2"/><circle cx="8.1" cy="39" r="2"/><circle cx="52" cy="50" r="2"/><circle cx="25" cy="29.9" r="3"/><circle cx="15" cy="15.7" r="2"/><circle cx="46" cy="52.6" r="4"/><path d="m24.2 10.8c0 2.8 2.2 5 5 5 2.8 0 5-2.2 5-5 0-2.8-2.2-5-5-5-2.8-.1-5 2.2-5 5"/></g><g fill="#827717"><path d="m37 39c-3.5 4.9-11.3 4.8-9.8-3.7.6-3.3 2.2-13 2.2-13s0 6.2 0 10.6c0 7.6 2.1 7.3 7.6 6.1"/><path d="m42.8 43.9c-7 4.8-14.7 4.8-21.6 0-.8-.6-1.6.4-1 1.4 2.1 3.5 6.4 6.6 11.8 6.6s9.7-3.1 11.8-6.6c.6-1-.2-2-1-1.4"/><path d="m38.4 24.7c3.7 7 11.2 7 14.9 0 .2-.4-.3-.5-.9-.9-3.7 2.9-9.8 2.7-13.1 0-.6.4-1.1.6-.9.9"/><path d="m10.7 24.7c3.7 7 11.2 7 14.9 0 .2-.4-.3-.5-.9-.9-3.7 2.9-9.8 2.7-13.1 0-.6.4-1.1.6-.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f31e.svg b/riot/emojione/svg/1f31e.svg new file mode 100644 index 0000000..f86c173 --- /dev/null +++ b/riot/emojione/svg/1f31e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffca28"><path d="m20.5 59.7l7-7.2c-2.5-.5-4.8-1.5-6.9-2.9l-.1 10.1"/><path d="m43.5 4.3l-7 7.2c2.5.5 4.8 1.5 6.9 2.9l.1-10.1"/><path d="m11.5 36.5l-7.2 7 10.1-.1c-1.4-2.1-2.4-4.4-2.9-6.9"/><path d="m52.5 27.5l7.2-7-10.1.1c1.4 2.1 2.4 4.4 2.9 6.9"/><path d="m14.4 20.6l-10.1-.1 7.2 7c.5-2.5 1.5-4.8 2.9-6.9"/><path d="m49.6 43.4l10.1.1-7.2-7c-.5 2.5-1.5 4.8-2.9 6.9"/><path d="m27.5 11.5l-7-7.2.1 10.1c2.1-1.4 4.4-2.4 6.9-2.9"/><path d="m36.5 52.5l7 7.2-.1-10.1c-2.1 1.4-4.4 2.4-6.9 2.9"/><path d="m14.8 44l-4 9.3 9.3-4c-2.1-1.5-3.9-3.3-5.3-5.3"/><path d="m49.2 20l4-9.3-9.3 4c2.1 1.5 3.9 3.3 5.3 5.3"/><path d="m11 32c0-1.3.1-2.5.4-3.7l-9.4 3.7 9.4 3.7c-.3-1.2-.4-2.4-.4-3.7"/><path d="m62 32l-9.4-3.7c.2 1.2.4 2.5.4 3.7 0 1.3-.1 2.5-.4 3.7l9.4-3.7"/><path d="m20 14.8l-9.3-4 4 9.3c1.5-2.1 3.3-3.9 5.3-5.3"/><path d="m44 49.2l9.3 4-4-9.3c-1.5 2.1-3.3 3.9-5.3 5.3"/><path d="m35.7 11.4l-3.7-9.4-3.7 9.4c1.2-.2 2.5-.4 3.7-.4 1.3 0 2.5.1 3.7.4"/><path d="m28.3 52.6l3.7 9.4 3.7-9.4c-1.2.3-2.4.4-3.7.4-1.3 0-2.5-.1-3.7-.4"/><path d="m32 13c-10.5 0-19 8.5-19 19 0 10.5 8.5 19 19 19 10.5 0 19-8.5 19-19 0-10.5-8.5-19-19-19m-11.6 17.7c1.2-3.2 3-4.9 4.7-4.9s3.5 1.6 4.7 4.9c.1.3-.5.9-.8.6-1.1-1.2-2.5-1.7-3.9-1.7s-2.8.5-3.9 1.7c-.4.4-1-.2-.8-.6m20.3 7.5c-1.6 2.6-4.7 4.8-8.7 4.8-4 0-7.2-2.3-8.7-4.8-.4-.7.1-1.4.8-1 5.1 3.6 10.8 3.6 15.9 0 .6-.4 1.1.4.7 1m2.2-6.9c-1.1-1.2-2.5-1.7-3.9-1.7-1.4 0-2.8.5-3.9 1.7-.3.3-.9-.3-.8-.6 1.2-3.2 3-4.9 4.7-4.9 1.8 0 3.5 1.6 4.7 4.9.1.4-.5 1-.8.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f31f.svg b/riot/emojione/svg/1f31f.svg new file mode 100644 index 0000000..1356525 --- /dev/null +++ b/riot/emojione/svg/1f31f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,23H39.1L32,2l-7.1,21H2l18.5,13l-7.1,21L32,44l18.5,13l-7.1-21L62,23z" fill="#ffce31"/><g fill="#ffdf85"><path d="m46.2 20.3l4-11.4-10.5 7.2 1.5 4.2z"/><path d="m27.9 50l4.1 12 4.1-12-4.1-2.8z"/><path d="m50.7 34.3l-3.8 2.6 1.6 4.8h12.9z"/><path d="m24.3 16.1l-10.5-7.2 4 11.4h5z"/><path d="m13.3 34.3l-10.7 7.4h12.9l1.6-4.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f320.svg b/riot/emojione/svg/1f320.svg new file mode 100644 index 0000000..c79d56a --- /dev/null +++ b/riot/emojione/svg/1f320.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path fill="#f5a300" d="M7 31 21.1 41.3 14.2 62 32.1 49.2 50.1 62 57 2z"/><path fill="#fff" d="m38.9 39.9l10.9-7.8h-13.5l-4.2-12.6-4.1 12.6h-13.5l10.9 7.8-4.1 12.6 10.8-7.8 10.9 7.8z" id="0"/><use xlink:href="#0"/><g fill="#ffce31"><path d="m39 28.4h3.5l14.5-26.4-19.2 22.7z"/><path d="m57 2l-22.4 13 1.8 5.6z"/><path d="M53.9 28.4 57 2 47.2 28.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f321.svg b/riot/emojione/svg/1f321.svg new file mode 100644 index 0000000..b641912 --- /dev/null +++ b/riot/emojione/svg/1f321.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.9 46.2l3.1-36c0-11-18-11-18 0l3.1 36c-1.9 1.7-3.1 4.1-3.1 6.8 0 5 4 9 9 9 5 0 9-4 9-9 0-2.7-1.2-5.1-3.1-6.8m-5.9 13.6c-3.7 0-6.7-3-6.7-6.8 0-2.4 1.3-4.6 3.3-5.8l-2-37.2c0-6.4 10.8-6.4 10.8 0l-1.9 37.2c1.9 1.2 3.3 3.3 3.3 5.8 0 3.7-3.1 6.8-6.8 6.8" opacity=".8" fill="#a1b8c7"/><g fill="#ed4c5c"><path d="m28.4 21.4l1.4 27.5h4.4l1.4-27.5z"/><path d="m37.6 53c0 3.1-2.5 5.6-5.6 5.6-3.1 0-5.6-2.5-5.6-5.6 0-3.1 2.5-5.6 5.6-5.6 3.1 0 5.6 2.5 5.6 5.6"/></g><ellipse cx="32" cy="21.4" rx="3.6" ry="1.2" fill="#a5203c"/><g fill="#51575b"><path d="m30.9 28.2h-4.9l-.1-1.5h4.9z"/><path d="m30.9 32.4h-4.7v-1.5h4.6z"/><path d="m30.9 36.6h-4.5v-1.5h4.4z"/><path d="m30.9 40.8h-4l-.1-1.5h4.1z"/><path d="m31 45h-3.8v-1.4h3.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f324.svg b/riot/emojione/svg/1f324.svg new file mode 100644 index 0000000..0bfacd2 --- /dev/null +++ b/riot/emojione/svg/1f324.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffce31"><circle cx="32" cy="32" r="14"/><path d="m37.6 15.7l-5.6-13.7-5.6 13.7c1.8-.3 3.7-.5 5.6-.5 1.9 0 3.8.2 5.6.5"/><path d="m26.4 48.3l5.6 13.7 5.6-13.7c-1.8.3-3.7.5-5.6.5-1.9 0-3.8-.2-5.6-.5"/><path d="m48.3 37.6l13.7-5.6-13.7-5.6c.3 1.8.5 3.7.5 5.6 0 1.9-.2 3.8-.5 5.6"/><path d="m15.7 26.4l-13.7 5.6 13.7 5.6c-.3-1.8-.5-3.7-.5-5.6 0-1.9.2-3.8.5-5.6"/><path d="m47.5 24.4l5.7-13.6-13.6 5.7c1.5 1.1 3 2.2 4.3 3.6 1.4 1.4 2.5 2.8 3.6 4.3"/><path d="m16.5 39.6l-5.7 13.6 13.6-5.7c-1.5-1.1-3-2.2-4.3-3.6-1.4-1.4-2.5-2.8-3.6-4.3"/><path d="m39.6 47.5l13.6 5.7-5.7-13.6c-1.1 1.5-2.2 3-3.6 4.3-1.4 1.4-2.8 2.5-4.3 3.6"/><path d="m24.4 16.5l-13.6-5.7 5.7 13.6c1.1-1.5 2.2-3 3.6-4.3 1.4-1.4 2.8-2.5 4.3-3.6"/></g><path d="m30 45.8c-.7 0-1.4-.1-2.1-.3-2.7-.9-4.6-3.5-4.6-6.5 0-2 .8-3.8 2.3-5.1.4-.3.8-.6 1.2-.9l.4-1.6c1.1-3.9 4.7-6.7 8.7-6.7.4 0 .8 0 1.3.1.4.1.7.1 1.1.2l.2-.3c1.6-3 4.7-4.8 8-4.8 5 0 9.1 4.2 9.1 9.3 0 .3 0 .5 0 .7v.2c.4.2.8.3 1.1.6 2.4 1.4 4 4.1 4 7 0 3.8-2.5 7-6.1 7.8-.6.1-1.2.2-1.8.2l-22.8.1" fill="#fff"/><path d="m46.5 21.3c4.3 0 7.8 3.6 7.8 8 0 .2 0 .4 0 .6-1.8.1-3.4.9-4.7 2 1-.6 2.1-.9 3.3-.9.4 0 .9 0 1.3.1.7.1 1.4.4 2 .8 2 1.2 3.3 3.3 3.3 5.8 0 3.2-2.2 5.8-5.1 6.5-.5.1-1 .2-1.5.2h-22.9c-.6 0-1.1-.1-1.7-.3-2.1-.7-3.7-2.8-3.7-5.2 0-1.6.7-3.1 1.8-4.1.5-.5 1.1-.8 1.7-1 .5-.2 1.1-.3 1.8-.3 1.7 0 3.2.8 4.2 2.1-1.1-2.1-3.2-3.6-5.7-3.9.9-3.3 3.9-5.7 7.4-5.7.4 0 .7 0 1.1.1.7.1 1.4.3 2 .6 2.4 1.1 4.1 3.3 4.5 6 0-3.1-1.5-5.8-3.9-7.4 1.5-2.4 4-4 7-4m0-2.7c-3.6 0-6.9 1.9-8.9 5-.1 0-.1 0-.2 0-.5-.1-1-.1-1.5-.1-4.6 0-8.7 3.1-9.9 7.7l-.3 1.1c-.3.2-.6.5-.9.7-1.8 1.4-2.8 3.6-2.8 6 0 3.5 2.2 6.6 5.5 7.7.8.3 1.7.4 2.5.4h22.8c.7 0 1.4-.1 2.1-.2 4.2-1 7.1-4.8 7.1-9.2 0-3.4-1.8-6.5-4.6-8.2-.1-.1-.3-.2-.4-.2 0 0 0 0 0-.1 0-5.8-4.7-10.6-10.5-10.6z" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f325.svg b/riot/emojione/svg/1f325.svg new file mode 100644 index 0000000..41fc056 --- /dev/null +++ b/riot/emojione/svg/1f325.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffce31"><circle cx="22" cy="24" r="9.3"/><path d="m25.7 13.1l-3.7-9.1-3.7 9.1c1.2-.2 2.5-.3 3.7-.3 1.3 0 2.5.1 3.7.3"/><path d="m18.3 34.9l3.7 9.1 3.7-9.1c-1.2.2-2.5.3-3.7.3-1.3 0-2.5-.1-3.7-.3"/><path d="m32.9 27.7l9.1-3.7-9.1-3.7c.2 1.2.3 2.5.3 3.7 0 1.3-.1 2.5-.3 3.7"/><path d="m11.1 20.3l-9.1 3.7 9.1 3.7c-.2-1.2-.3-2.5-.3-3.7 0-1.3.1-2.5.3-3.7"/><path d="m32.3 19l3.8-9.1-9.1 3.8c1 .7 2 1.5 2.9 2.4.9.9 1.7 1.8 2.4 2.9"/><path d="m11.7 29l-3.8 9.1 9.1-3.8c-1-.7-2-1.5-2.9-2.4-.9-.9-1.7-1.8-2.4-2.9"/><path d="m27 34.3l9.1 3.8-3.8-9.1c-.7 1-1.5 2-2.4 2.9-.9.9-1.8 1.7-2.9 2.4"/><path d="m17 13.7l-9.1-3.8 3.8 9.1c.7-1 1.5-2 2.4-2.9.9-.9 1.8-1.7 2.9-2.4"/></g><path d="m17.2 58.1c-1 0-2-.2-2.9-.5-3.8-1.3-6.4-4.9-6.4-9 0-2.7 1.2-5.3 3.2-7.1.5-.5 1.1-.9 1.7-1.2l.6-2.2c1.5-5.5 6.5-9.3 12.1-9.3.6 0 1.1 0 1.8.1.5.1 1 .2 1.5.3l.2-.5c2.3-4.1 6.6-6.7 11.2-6.7 7.1 0 12.8 5.8 12.8 13 0 .3 0 .7 0 1v.3c.5.2 1.1.5 1.6.8 3.4 2 5.5 5.7 5.5 9.7 0 5.2-3.5 9.7-8.6 10.9-.8.2-1.7.3-2.5.3l-31.8.1" fill="#fff"/><path d="m40.3 24.1c6 0 10.9 5 10.9 11.1 0 .3 0 .6 0 .9-2.5.2-4.8 1.2-6.6 2.8 1.3-.8 2.9-1.2 4.6-1.2.6 0 1.2.1 1.8.2 1 .2 1.9.6 2.8 1.1 2.7 1.6 4.6 4.6 4.6 8 0 4.4-3 8.1-7.1 9-.7.2-1.3.2-2.1.2h-32c-.8 0-1.6-.1-2.3-.4-3-1-5.1-3.8-5.1-7.2 0-2.3 1-4.3 2.6-5.7.7-.6 1.5-1.1 2.4-1.4.8-.3 1.6-.4 2.5-.4 2.4 0 4.5 1.2 5.9 2.9h.1c-1.6-3-4.5-5-8-5.4 1.3-4.6 5.4-7.9 10.3-7.9.5 0 1 .1 1.5.1 1 .1 1.9.4 2.8.8 3.3 1.5 5.7 4.6 6.3 8.4 0 0 0 0 0-.1 0-4.3-2.2-8-5.4-10.2 1.8-3.3 5.3-5.6 9.5-5.6m0-3.7c-5 0-9.7 2.6-12.4 6.9-.1 0-.2 0-.3 0-.8-.1-1.4-.2-2.1-.2-6.4 0-12.2 4.4-13.9 10.6l-.4 1.5c-.5.3-.9.6-1.3 1-2.5 2.1-3.9 5.2-3.9 8.5 0 4.9 3.1 9.2 7.7 10.8 1.1.4 2.3.6 3.5.6h31.9c1 0 1.9-.1 2.9-.3 5.9-1.4 10-6.6 10-12.7 0-4.6-2.5-9-6.5-11.3-.2-.1-.4-.2-.6-.3 0 0 0-.1 0-.1 0-8.4-6.5-15-14.6-15z" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f326.svg b/riot/emojione/svg/1f326.svg new file mode 100644 index 0000000..8f83b29 --- /dev/null +++ b/riot/emojione/svg/1f326.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffce31"><circle cx="20" cy="20" r="8.4"/><path d="m23.4 10.2l-3.4-8.2-3.4 8.2c1.1-.2 2.2-.3 3.4-.3 1.2 0 2.3.1 3.4.3"/><path d="m16.6 29.8l3.4 8.2 3.4-8.2c-1.1.2-2.2.3-3.4.3-1.2 0-2.3-.1-3.4-.3"/><path d="m29.8 23.4l8.2-3.4-8.2-3.4c.2 1.1.3 2.2.3 3.4 0 1.2-.1 2.3-.3 3.4"/><path d="m10.2 16.6l-8.2 3.4 8.2 3.4c-.2-1.1-.3-2.2-.3-3.4 0-1.2.1-2.3.3-3.4"/><path d="m29.3 15.5l3.4-8.2-8.2 3.4c.9.6 1.8 1.3 2.6 2.2.9.8 1.6 1.7 2.2 2.6"/><path d="m10.7 24.5l-3.4 8.2 8.2-3.4c-.9-.6-1.8-1.3-2.6-2.2-.9-.8-1.6-1.6-2.2-2.6"/><path d="m24.5 29.3l8.2 3.4-3.4-8.2c-.6.9-1.3 1.8-2.2 2.6-.8.9-1.6 1.6-2.6 2.2"/><path d="m15.5 10.7l-8.2-3.4 3.4 8.2c.6-.9 1.3-1.8 2.2-2.6.8-.9 1.7-1.6 2.6-2.2"/></g><path d="m24 33.5c-.8 0-1.7-.1-2.5-.4-3.2-1.1-5.4-4.1-5.4-7.5 0-2.3 1-4.4 2.7-5.9.4-.4.9-.7 1.4-1l.5-1.8c1.3-4.5 5.5-7.7 10.3-7.7.5 0 1 0 1.5.1.4.1.9.2 1.3.3l.2-.4c1.9-3.4 5.6-5.6 9.5-5.6 6 0 10.9 4.8 10.9 10.8 0 .3 0 .6 0 .9v.2c.5.2.9.4 1.3.6 2.9 1.7 4.7 4.8 4.7 8.1 0 4.4-3 8.1-7.3 9.1-.7.2-1.4.2-2.1.2h-27" fill="#fff"/><path d="m43.6 5.1c5.1 0 9.3 4.1 9.3 9.2 0 .2 0 .5 0 .7-2.1.2-4.1 1-5.6 2.3 1.1-.7 2.5-1 3.9-1 .5 0 1 .1 1.5.1.8.2 1.6.5 2.4.9 2.3 1.3 3.9 3.8 3.9 6.7 0 3.7-2.6 6.8-6 7.5-.6.1-1.1.2-1.7.2h-27.3c-.7 0-1.4-.1-2-.3-2.5-.8-4.3-3.2-4.3-6 0-1.9.8-3.6 2.2-4.7.6-.5 1.3-.9 2.1-1.2.7-.2 1.4-.4 2.1-.4 2 0 3.9 1 5 2.5h.1c-1.3-2.5-3.9-4.2-6.8-4.5 1.1-3.8 4.6-6.6 8.8-6.6.4 0 .9 0 1.3.1.8.1 1.7.4 2.4.7 2.8 1.2 4.9 3.9 5.3 7 0 0 0 0 0-.1 0-3.6-1.8-6.7-4.6-8.5 1.4-2.6 4.5-4.6 8-4.6m0-3.1c-4.3 0-8.2 2.2-10.5 5.7-.1 0-.2 0-.3 0-.7-.1-1.2-.1-1.8-.1-5.5 0-10.3 3.6-11.8 8.9l-.4 1.2c-.4.2-.8.5-1.1.8-2.1 1.8-3.3 4.4-3.3 7.1 0 4.1 2.6 7.7 6.5 9 1 .3 2 .5 3 .5h27.1c.8 0 1.6-.1 2.5-.3 5-1.1 8.5-5.5 8.5-10.6 0-3.9-2.1-7.5-5.5-9.4-.2-.1-.3-.2-.5-.3 0 0 0-.1 0-.1 0-6.8-5.6-12.4-12.4-12.4z" fill="#b6c1d1"/><g fill="#75d6ff"><path d="m28.8 46c-.6 1.6-.1 3.2 1.1 3.6s2.6-.5 3.2-2.1c.7-1.8.7-4.4.3-7.3-2.3 2-4 4-4.6 5.8"/><path d="m41.9 47.6c.7-1.8.7-4.4.3-7.3-2.2 1.9-3.8 3.9-4.5 5.8-.6 1.6-.1 3.2 1.1 3.6s2.5-.6 3.1-2.1"/><path d="m51 40.3c-2.2 1.9-3.8 3.9-4.5 5.8-.6 1.6-.1 3.2 1.1 3.6s2.6-.5 3.2-2.1c.6-1.9.6-4.4.2-7.3"/><path d="m19.9 46c-.6 1.6-.1 3.2 1.1 3.6s2.6-.5 3.2-2.1c.7-1.8.7-4.4.3-7.3-2.3 2-3.9 4-4.6 5.8"/><path d="m21.8 58.3c-.6 1.6-.1 3.2 1.1 3.6s2.6-.5 3.2-2.1c.7-1.8.7-4.4.3-7.3-2.3 1.9-3.9 3.9-4.6 5.8"/><path d="m34.9 59.8c.7-1.8.7-4.4.3-7.3-2.2 1.9-3.8 3.9-4.5 5.8-.6 1.6-.1 3.2 1.1 3.6s2.5-.5 3.1-2.1"/><path d="m44 52.5c-2.2 1.9-3.8 3.9-4.5 5.8-.6 1.6-.1 3.2 1.1 3.6s2.6-.5 3.2-2.1c.6-1.8.7-4.4.2-7.3"/><path d="m13 58.3c-.6 1.6-.1 3.2 1.1 3.6s2.6-.5 3.2-2.1c.7-1.8.7-4.4.3-7.3-2.3 1.9-4 3.9-4.6 5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f327.svg b/riot/emojione/svg/1f327.svg new file mode 100644 index 0000000..52e6a1e --- /dev/null +++ b/riot/emojione/svg/1f327.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#75d6ff"><path d="m23.6 45.4c-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.5 3.3-2.2.7-1.9.7-4.6.3-7.6-2.3 2-4 4-4.7 6"/><path d="m37.2 47c.7-1.9.7-4.6.3-7.6-2.3 2-4 4.1-4.7 6-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.6 3.3-2.2"/><path d="m46.6 39.4c-2.3 2-4 4.1-4.7 6-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.5 3.3-2.2.8-1.9.8-4.6.3-7.6"/><path d="m14.4 45.4c-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.5 3.3-2.2.7-1.9.7-4.6.3-7.6-2.3 2-4 4-4.7 6"/><path d="m16.4 58.1c-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.5 3.3-2.2.7-1.9.7-4.6.3-7.6-2.3 2-4 4.1-4.7 6"/><path d="m30 59.7c.7-1.9.7-4.6.3-7.6-2.3 2-4 4.1-4.7 6-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.5 3.3-2.2"/><path d="m39.4 52.1c-2.3 2-4 4.1-4.7 6-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.5 3.3-2.2.8-1.9.8-4.5.3-7.6"/><path d="m7.2 58.1c-.6 1.6-.1 3.3 1.1 3.8 1.2.4 2.7-.5 3.3-2.2.7-1.9.7-4.6.3-7.6-2.3 2-4 4.1-4.7 6"/></g><path d="m18.9 33.7c-.8 0-1.7-.1-2.5-.4-3.3-1.1-5.4-4.1-5.4-7.5 0-2.3 1-4.5 2.7-6 .4-.4.9-.7 1.5-1l.5-1.8c1.3-4.6 5.6-7.8 10.3-7.8.5 0 1 0 1.5.1.4.1.9.2 1.3.3l.2-.4c1.9-3.5 5.6-5.6 9.5-5.6 6 0 10.9 4.9 10.9 10.9 0 .3 0 .6 0 .9v.2c.5.2.9.4 1.4.6 2.9 1.7 4.7 4.8 4.7 8.1 0 4.4-3 8.2-7.3 9.1-.7.2-1.4.2-2.1.2l-27.2.1" fill="#fff"/><path d="m38.5 5.2c5.1 0 9.3 4.2 9.3 9.3 0 .2 0 .5 0 .7-2.2.2-4.1 1-5.6 2.4 1.1-.7 2.5-1 3.9-1 .5 0 1 .1 1.5.1.8.2 1.6.5 2.4.9 2.3 1.3 3.9 3.9 3.9 6.8 0 3.7-2.6 6.8-6.1 7.6-.6.1-1.1.2-1.8.2h-27.1c-.7 0-1.4-.1-2-.3-2.5-.8-4.4-3.2-4.4-6 0-1.9.8-3.6 2.2-4.8.6-.5 1.3-.9 2.1-1.2.7-.2 1.4-.4 2.1-.4 2 0 3.9 1 5 2.5h.1c-1.3-2.5-3.9-4.2-6.8-4.5 1.1-3.8 4.6-6.6 8.8-6.6.4 0 .9 0 1.3.1.8.1 1.7.4 2.4.7 2.8 1.3 4.9 3.9 5.3 7 0 0 0 0 0-.1 0-3.6-1.8-6.8-4.6-8.6 1.5-2.9 4.6-4.8 8.1-4.8m0-3.2c-4.3 0-8.3 2.2-10.5 5.8-.1 0-.2 0-.3 0-.7-.1-1.2-.1-1.8-.1-5.5 0-10.3 3.7-11.9 8.9l-.4 1.3c-.4.2-.8.5-1.1.8-2.1 1.8-3.3 4.4-3.3 7.2 0 4.1 2.6 7.7 6.5 9 1 .3 2 .5 3 .5h27.3c.8 0 1.7-.1 2.5-.3 5-1.1 8.5-5.5 8.5-10.7 0-3.9-2.1-7.5-5.5-9.5-.2-.1-.3-.2-.5-.3 0 0 0-.1 0-.1 0-6.9-5.6-12.5-12.5-12.5z" fill="#b6c1d1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f328.svg b/riot/emojione/svg/1f328.svg new file mode 100644 index 0000000..dc0e858 --- /dev/null +++ b/riot/emojione/svg/1f328.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#75d6ff"><path d="m20.6 43.2l1.5-2.4-2.3 1.5-.7-4.1-.6 4.1-2.3-1.5 1.5 2.4-4.1.6 4.1.6-1.5 2.3 2.3-1.5.6 4.2.7-4.2 2.3 1.5-1.5-2.3 4.1-.6z"/><path d="m50.7 43.2l1.5-2.4-2.3 1.5-.6-4.1-.6 4.1-2.4-1.5 1.5 2.4-4.1.6 4.2.6-1.6 2.3 2.4-1.5.6 4.2.6-4.2 2.3 1.5-1.5-2.3 4.2-.6z"/><path d="m35.6 43.2l1.6-2.4-2.4 1.5-.6-4.1-.6 4.1-2.3-1.5 1.5 2.4-4.2.6 4.2.6-1.5 2.3 2.3-1.5.6 4.2.6-4.2 2.4 1.5-1.6-2.3 4.2-.6z"/><path d="m13.1 54.3l1.6-2.3-2.4 1.5-.6-4.1-.6 4.1-2.3-1.5 1.5 2.3-4.2.6 4.2.6-1.5 2.4 2.3-1.5.6 4.1.6-4.1 2.4 1.5-1.6-2.4 4.2-.6z"/><path d="m43.3 54.3l1.5-2.3-2.3 1.5-.6-4.1-.7 4.1-2.3-1.5 1.5 2.3-4.1.6 4.1.6-1.5 2.4 2.3-1.5.7 4.1.6-4.1 2.3 1.5-1.5-2.4 4.1-.6z"/><path d="m28.2 54.3l1.5-2.3-2.3 1.5-.6-4.1-.6 4.1-2.4-1.5 1.6 2.3-4.2.6 4.2.6-1.6 2.4 2.4-1.5.6 4.1.6-4.1 2.3 1.5-1.5-2.4 4.2-.6z"/></g><path d="m21.1 34c-.8 0-1.6-.1-2.4-.4-3.1-1-5.3-3.9-5.3-7.2 0-2.2 1-4.3 2.6-5.7.4-.4.9-.7 1.4-1l.5-1.8c1.3-4.4 5.4-7.5 10-7.5.5 0 .9 0 1.5.1.4.1.8.1 1.2.3l.2-.4c1.9-3.3 5.4-5.4 9.2-5.4 5.8 0 10.5 4.7 10.5 10.5 0 .3 0 .6 0 .8v.2c.4.2.9.4 1.3.6 2.8 1.6 4.5 4.6 4.5 7.8 0 4.2-2.9 7.8-7 8.8-.7.2-1.4.2-2 .2h-26.2z" fill="#fff"/><path d="m40 6.5c5 0 9 4 9 8.9 0 .2 0 .5 0 .7-2.1.2-4 1-5.4 2.3 1.1-.6 2.4-1 3.7-1 .5 0 1 0 1.5.1.8.2 1.6.5 2.3.9 2.3 1.3 3.8 3.7 3.8 6.5 0 3.6-2.5 6.5-5.8 7.3-.5.1-1.1.2-1.7.2h-26.3c-.7 0-1.3-.1-1.9-.3-2.4-.8-4.2-3.1-4.2-5.8 0-1.8.8-3.5 2.1-4.6.6-.5 1.3-.9 2-1.2.6-.2 1.3-.3 2-.3 2 0 3.7.9 4.9 2.4h.1c-1.3-2.4-3.7-4.1-6.6-4.3 1.1-3.7 4.5-6.4 8.5-6.4.4 0 .9 0 1.3.1.8.1 1.6.3 2.3.7 2.7 1.2 4.7 3.7 5.1 6.8 0 0 0 0 0-.1 0-3.4-1.8-6.5-4.5-8.3 1.5-2.7 4.4-4.6 7.8-4.6m0-3c-4.1 0-8 2.1-10.2 5.6-.1 0-.2 0-.3 0-.6-.1-1.2-.1-1.7-.1-5.3 0-10 3.5-11.4 8.6l-.3 1.2c-.4.2-.7.5-1.1.8-2 1.7-3.1 4.2-3.1 6.9 0 4 2.5 7.4 6.3 8.7.9.3 1.9.5 2.9.5h26.2c.8 0 1.6-.1 2.4-.3 4.8-1.1 8.2-5.3 8.2-10.3 0-3.8-2-7.3-5.3-9.1-.2-.1-.3-.2-.5-.3 0 0 0 0 0-.1 0-6.7-5.4-12.1-12.1-12.1z" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f329.svg b/riot/emojione/svg/1f329.svg new file mode 100644 index 0000000..d7844b6 --- /dev/null +++ b/riot/emojione/svg/1f329.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffce31" d="m24.5 31.9l-4.9 16.2h12.5l-4.2 13.9 16.5-20.2h-11.9l2.9-9.9z"/><path d="m18.2 32.5c-.8 0-1.6-.1-2.4-.4-3.1-1-5.3-3.9-5.3-7.2 0-2.2 1-4.3 2.6-5.7.4-.4.9-.7 1.4-1l.5-1.8c1.3-4.4 5.4-7.5 10-7.5.5 0 .9 0 1.5.1.4.1.8.1 1.2.3l.2-.4c1.9-3.3 5.4-5.4 9.2-5.4 5.9 0 10.6 4.7 10.6 10.5 0 .3 0 .6 0 .8v.2c.4.2.9.4 1.3.6 2.8 1.6 4.5 4.6 4.5 7.8 0 4.2-2.9 7.8-7 8.8-.7.2-1.4.2-2 .2h-26.3z" fill="#fff"/><path d="m37.1 5c5 0 9 4 9 8.9 0 .2 0 .5 0 .7-2.1.2-4 1-5.4 2.3 1.1-.6 2.4-1 3.7-1 .5 0 1 .1 1.5.1.8.2 1.6.5 2.3.9 2.3 1.3 3.8 3.7 3.8 6.5 0 3.6-2.5 6.5-5.8 7.3-.7.2-1.2.3-1.8.3h-26.2c-.7 0-1.3-.1-1.9-.3-2.4-.8-4.2-3.1-4.2-5.8 0-1.8.8-3.5 2.1-4.6.6-.5 1.3-.9 2-1.2.6-.2 1.3-.3 2-.3 2 0 3.7.9 4.9 2.4h.1c-1.3-2.4-3.7-4.1-6.6-4.3 1.1-3.7 4.5-6.4 8.5-6.4.4 0 .9 0 1.3.1.8.1 1.6.3 2.3.7 2.7 1.2 4.7 3.7 5.1 6.8 0 0 0 0 0-.1 0-3.4-1.8-6.5-4.5-8.3 1.5-2.8 4.5-4.7 7.8-4.7m0-3c-4.1 0-7.9 2.1-10.1 5.6-.1 0-.2 0-.3 0-.6-.1-1.2-.1-1.7-.1-5.3 0-10 3.5-11.4 8.6l-.3 1.2c-.4.2-.7.5-1.1.8-2 1.7-3.1 4.2-3.1 6.9 0 4 2.5 7.4 6.3 8.7.9.3 1.9.5 2.9.5h26.2c.8 0 1.6-.1 2.4-.3 4.8-1.1 8.2-5.3 8.2-10.3 0-3.8-2-7.3-5.3-9.1-.2-.1-.3-.2-.5-.3 0 0 0-.1 0-.1-.1-6.7-5.5-12.1-12.2-12.1z" fill="#b6c1d1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f32a.svg b/riot/emojione/svg/1f32a.svg new file mode 100644 index 0000000..87326d9 --- /dev/null +++ b/riot/emojione/svg/1f32a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M4.3,11.1C4.3,31,19.5,61,27.1,61c9.7,0,2.1-19.6,2.1-19.6l30.2-11.9C63.9,2.5,4.3-3.6,4.3,11.1z" fill="#97a3a2"/><path d="m58.1 17.6c15.3 4.8-17.3-21-48.6-14.6-9.1 1.9-6 9.9-6 9.9-2.1 3-2 7.2 0 10.3 1.7 2.6 0 7.1 4.9 12.1.8.8-2.1 5.2 3.6 9.3 1.2.9 3.2 2.4 2.7 4.7-.6 2.8 5 5.4 6 8.6 2.1 6.5 10.1 4.6 13.8-1.1 0 0-1.3.4-1.8-.5 4.1-2 4.7-7.3-.6-7.8 4.8-4.1 2.6-9.5 9.6-10.8 5.7-1 6.7-3.4 6.7-3.4 7.9.1 18.9-5.2 9.7-16.7m-51.2 3.6c-.7-1.4-1.6-3.4-1-5 1.3 1.3 2.7 2.5 4.2 3.6-1.1.2-2.3.7-3.2 1.4m2.1 8.3c2.2 2.5 4.9 3 4.9 3-2 .9-4.5 1.3-4.9-3m6.1 16.6c0 0 1.4 0 1.4.4.2 2.7-1.4-.4-1.4-.4m-2.5-7.7c3.2 1.8 6.8 3.1 10.4 3.9-12.7 1.7-11.9-4.8-10.4-3.9m12.7 9.4c0 0-2.6.7-4.8.2 1.5-1.6 4.8-.2 4.8-.2m-3.5 5.3c0 0 0 0 0 0-.8 1.2-2.8-1.1-2.8-2.1.1-2 5.9-.4 5.9-.4s-2.4 1.4-3.1 2.5m2.7 4.7c1.6 0 3.3-.1 4.9-.4-.9 1.2-2.8 2.7-4.9.4m2.5-4.2c2.7-1.2 4.4-1.2 4.4-1.2s-2 1.7-4.4 1.2m-11.1-18.1c5.3-2.6 9.9 1.3 17.6 3.1-2.9.8-12.9.6-17.6-3.1m11.8-2.6c0 0 7.1.5 5.8-.7-4.3-4.1-18.6 1.7-24.5-8 2.7-2.4 5.8-1.4 8.5.1-4.9 3.1.4 1.1 3.2 1.7 5 1.1 14.7 4 16.7 8-6 .7-9.7-1.1-9.7-1.1m13.3.5c.6.5 3.2.1 3.2.1-1.5.8-3.9 2.5-3.2-.1m-27.1-15.9c17.7 1.5 28.9 6.3 31.1 12.6-13.4-1.1-8.1-7.6-31.1-12.6m42 12.1c-.2-5.7-9.5-14.6-5-5 1.9 4.1-.4 7.4-2.4 4.2-9.8-15.5-30.3-9.5-39.2-14.8 8.9-4.3 43.7 8 34.8 4-25.7-11.8-37.4-5.4-37.4-8.3 0-5.3 17.5-8.3 40.9 2-28.8-5.6-31.7-2.6-26.9-2.1 35.2 3.6 41.2 14.1 35.2 20" fill="#c8d9d8"/><g fill="#fff"><path d="m30.3 13.5c-22.4-4.5-24.2-4.8-3.1.8 28.3 7.5 19 2.4 3.1-.8"/><path d="m20.5 22.7c-10.8-7.4-15.3-9.5-8.6-3.7 14.1 12.1 27.1 12.9 29.3 12.7 4.8-.6-8-.4-20.7-9"/><path d="m17.6 30.7c-9.3-5.5-13-6.2-7-1.4 12.8 10.1 22.9 8.3 24.4 7.5 3.2-2-6.5.4-17.4-6.1"/><path d="m20.7 39.4c-7.3-2.9-10-2.8-4.9.1 10.6 6.1 17 2.8 17.8 1.8 1.7-2.3-4.2 1.5-12.9-1.9"/><path d="m21 44.7c-6.1-1.4-8.1-.5-3.7.8 8 2.4 12.3.9 13.1.3 2-1.3-2.3.6-9.4-1.1"/><path d="m27.8 49.3c7.7-2.8-3-1.5-4.3.4-.5.7 3.3 0 4.3-.4"/><path d="m28.3 52.7c7.2-2.1-2.6-1.6-3.9.1-.5.5 3 .1 3.9-.1"/><path d="m24.9 55.3c-.5.5 2.6.5 3.5.3 6.7-1.2-2.1-1.7-3.5-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f32b.svg b/riot/emojione/svg/1f32b.svg new file mode 100644 index 0000000..a294ee3 --- /dev/null +++ b/riot/emojione/svg/1f32b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 29.6c15.8-12.6 23.3.5 32.8.5 7.5 0 16.8-13.1 27.2-2.4-11.9-5.7-16.3 6.5-28.7 6.5-9.5 0-13.2-11.3-31.3-4.6" fill="#979797"/><path d="m62 39.7c-9.2-7.6-15.1-1.4-22.7 1.8-4.8 2-9.8 1.5-14.8-3.8 3.6 1.3 11.5 5.6 19.3-2-6.7 3-15.1.9-21.9-2.5-7.5-3.7-13.6-4.3-19.9 2.5 3.9-3 9.6-2.3 14-1.1-2.8.1-8.9.8-14 8.7 15.4-12.8 21 4.7 33.1 4.7 11.7 0 10.6-13.1 26.9-8.3" fill="#d0d0d0"/><path d="m2 25.3c1.9-5.4 15.2-13.2 25.8.1-14.8-6.8-25.8-.1-25.8-.1" fill="#979797"/><path d="m42.1 19.8c6.2-6.8 16.1-3.1 19.9.3-3.1-.4-12.5-2.4-16.5 2-6.4 6.8-13.9 5.8-16.3 3.4 0-.1 7.6.2 12.9-5.7" fill="#d0d0d0"/><path d="m45.4 35.4c8-13.3 16.6-2.1 16.6-2.1-9.4-3.3-16.6 2.1-16.6 2.1" fill="#979797"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f32c.svg b/riot/emojione/svg/1f32c.svg new file mode 100644 index 0000000..652f28b --- /dev/null +++ b/riot/emojione/svg/1f32c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M23.3,53L2,37.5V62C4.2,55.5,23.3,53,23.3,53z" fill="#c8d2da"/><path d="m18.8 51.9c-8.9-5.1-10.5-16-10.5-16s-1.4-5.8 5.8-16.2c4-5.7 15.9-10 17.5-5.7 3.3 9 0 12 1.4 14.2 1.7 2.7 2.9 3.6 3.8 4.2.7.4 1.1 1 1.1 2.1-.1 1.6-2.8 1.9-2.9 2.3-.2 1.2.6 1.7 2 2.6 1.3.9-1.1 1.9-.6 4.8.5 3 .7 4.1.7 4.1-1.1.9-3.4.9-3.1 2.7.6 4.2-4.6 7-15.2.9" fill="#e4eef7"/><path d="m34.6 42.7c.6-.4 1.2-.9 1.7-1.4.4-.5.8-1.1.4-2.2.4.1.8.6 1 1.2.2.6 0 1.4-.2 1.9-.2.5-.5 1-.8 1.4.3.4.7.9.8 1.5.2.6.2 1.2.1 1.7-.1.5-.2 1-.4 1.5-.4-1-.6-1.9-1-2.4-.2-.2-.4-.4-.6-.6-.2-.2-.5-.4-.9-.6l-1.6-1 1.5-1" fill="#91999f"/><path d="m31.2 30c-4.1 3.1-7.5-.2-7.5-.2 3.6.9 7.5.2 7.5.2" fill="#adb5bc"/><path d="m30.5 39.4c.5.5.9 1.2 1.1 1.9.3.7.5 1.5.6 2.3.1.8 0 1.7-.2 2.5-.2.8-.6 1.5-1.1 2 .2-.8.3-1.5.4-2.2 0-.7 0-1.4 0-2.2-.1-1.4-.4-2.8-.8-4.3" fill="#c8d2da"/><g fill="#91999f"><path d="m27.6 21.3c-3.2 0-6.4 3.1-6.4 3.1 6.9-3.4 11.7 0 11.7 0-.5-.8-2.8-3.1-5.3-3.1"/><path d="m15.7 22.9c0 0-6.3 21.5 0 39.1h-4.7c0 0-6.8-19.5.8-39.7l3.9.6"/></g><path d="m11.9 22.8c0 0-6.3 21.6 0 39.2h-4.6c0 0-6.8-19.6.8-39.8l3.8.6" fill="#adb5bc"/><path d="M8.2,22.9c0,0-6.3,21.5,0,39.1H2V37.5L8.2,22.9z" fill="#91999f"/><path d="m19.5 4.4c0 0 3.5-1.1 5.2-.1 11.2 6.5 5.8 7.5 1.9 5.9-2.9-1.2-7.1-5.8-7.1-5.8" fill="#c8d2da"/><path d="m27.6 9.5c0 0 3.6-1.3 5.2-.1 7.4 5.6 1.2 16.7 1.2 16.7s1.4-10.8-2.5-12.5c-2.9-1.2-3.9-4.1-3.9-4.1" fill="#adb5bc"/><g fill="#c8d2da"><path d="M2,4.5c11.9-6.1,19,0.7,19,0.7L2,27.4V4.5z"/><path d="M20.9,17.6c7.1-6.9,10.6-4,10.6-4C21-5.1,2,20.9,2,37.5C2,37.5,14.5,23.8,20.9,17.6z"/><path d="m17.4 27.7c8.2-9.1 11.8-17.3 11.8-17.3-8.7 11.9-24.1 18.7-27.2 47.8 0 0 7.8-22 15.4-30.5"/></g><path d="M13.7,13.6C21.2,5.9,27,8.5,27,8.5C18.7-2.7,4.5,3.7,2,23.1v14.4C2,37.5,7.6,20,13.7,13.6z" fill="#adb5bc"/><g fill="#42ade2"><path d="m38 43.3c4.8.9 10.2-1.6 12.3-6 1.7-3.6 1-10.3-3.7-11.2-3.7-.7-6.1 3.1-5.6 6.3 1.1 6.7 9 2.1 5.5-1.7 1.7 3.1-2.7 5.8-4.2 2.8-1.3-2.7 1.2-7.3 4.6-5.5 3.8 2 2.8 8 .3 10.5-2.4 2.6-5.8 3.9-9.2 4.8"/><path d="m57.2 30.3c1.2 1.8-1.3 4.3-2.8 2.2-1.6-2.2 1.1-5.8 3.5-3.6 4.3 4.5-2.7 10.4-7.6 11.6 3.9.2 8.5-1.9 10-5.7 1-2.6.5-6.8-2.5-8-3.3-1.3-6.1 2.8-4.5 5.6 2.1 3.8 6.3.4 3.9-2.1"/><path d="m38 44.3c4.4.4 9.7.7 13.3 3.4 2.8 2.1 3.8 7 1.3 9.7-2.5 2.7-6.1 0-5.8-3.2.3-3.8 5.8-2.7 4.7.9 2.6-4.8-6.9-6.7-5.6.8.8 4.7 7.4 5.6 9.3 1.2 4.6-11.1-9.5-14.9-17.2-12.8"/><path d="m47.8 42.9c3.9.2 13.6.3 12.5 5.9-.5 2.3-3.6 2.3-3.4-.3.1-2.1 2.8-1.6 2.4.5 2-4-5.6-3.5-3.3 1.3 1.5 3.2 5.7 1.3 6-1.9.6-7.4-9.7-6.6-14.2-5.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f32d.svg b/riot/emojione/svg/1f32d.svg new file mode 100644 index 0000000..e9acb62 --- /dev/null +++ b/riot/emojione/svg/1f32d.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.3 4.4c5.8 5.8 0 21-12.9 34s-28.2 18.7-34 12.9c-8.6-8.6 8.2-12.8 21.1-25.8 12.9-13 17.2-29.8 25.8-21.1" fill="#d9a559"/><path d="m27.2 27.2c12.4-12.5 16.8-28.4 24.7-22.1-.2-.3-.4-.5-.6-.8-8.6-8.6-12.8 8.2-25.8 21.1-13 13-29.8 17.2-21.1 25.8.2.2.5.4.8.6-6.4-7.8 9.5-12.2 22-24.6" fill="#fbbf67"/><path d="M54.6,5.2c5.8,5.8-2,20.3-15.8,34.1C25,53.1,10.4,61,4.6,55.2c-6.7-6.7,10.4-12,24.2-25.8 + C42.7,15.6,47.9-1.5,54.6,5.2z" fill="#c94747"/><path d="m59.8 12.9c5.7 5.7-.1 20.9-13.1 33.9s-28.1 18.7-33.8 13c-5.7-5.7 9-12 22-24.9 12.9-13 19.1-27.8 24.9-22" fill="#fbbf67"/><g opacity=".5" fill="#3e4347"><path d="m54.5 12.5c.7-.4 1.3-.8 2-.9.3-2.7-.3-4.9-1.8-6.5-1.3-1.3-2.6-1.7-3.9-1.4 3.5 2.3 4.4 5.4 3.7 8.8" opacity=".5"/><path d="m13.2 53.5c-8.3 2.9-9.7-3.1-9.7-3.1-.7 1.6-.5 3.2 1.1 4.8 1.7 1.7 4.1 2.2 7 1.8 0-1.1.6-2.2 1.6-3.5" opacity=".5"/></g><path d="m43.7 43.7c-18.8 18.8-30.2 16-31.2 15.7.1.2.3.3.4.5 5.7 5.7 20.9-.1 33.9-13.1 12.2-12.3 18.1-26.5 13.8-32.9 1.4 5.4-1.7 14.5-16.9 29.8" fill="#d9a559"/><g fill="#3e4347"><path d="m14.4 44.9c2.2.5 3.9 1.4 3.7 1.9-.2.6-2.1.6-4.3.1-2.2-.5-3.9-1.4-3.7-1.9.1-.6 2-.6 4.3-.1" opacity=".5"/><path d="m20.2 40.7c2.2.5 3.9 1.4 3.7 1.9-.2.5-2.1.6-4.3 0-2.2-.5-3.9-1.4-3.7-1.9.2-.5 2.1-.5 4.3 0" opacity=".5"/><path d="m26.9 35.7c2.2.5 3.9 1.4 3.7 1.9-.2.5-2.1.6-4.3.1-2.2-.5-3.9-1.4-3.7-1.9.2-.6 2.1-.6 4.3-.1" opacity=".5"/><path d="m32.8 29.8c2.2.5 3.9 1.4 3.7 1.9-.2.6-2.1.6-4.3.1-2.2-.5-3.9-1.4-3.7-1.9s2.1-.6 4.3-.1" opacity=".5"/><path d="m39.5 23.1c2.2.5 3.9 1.4 3.7 1.9-.2.5-2.1.6-4.3.1-2.2-.5-3.9-1.4-3.7-1.9.1-.6 2.1-.6 4.3-.1" opacity=".5"/><path d="m45.4 15.6c2.2.5 3.9 1.4 3.7 1.9-.2.5-2.1.6-4.3.1-2.2-.5-3.9-1.4-3.7-1.9.1-.6 2-.6 4.3-.1" opacity=".5"/></g><path d="m10.5 52.1c.8-4.4 4.9-2.7 6.8-5.7 1-1.5 1.5-3.2 2.3-4.7.7-1.4 3.6-.9 5.1-1.4 3.7-1.3 2.1-8.3 6.6-7.9 2.1.2 4.8-.8 5.1-3.2.2-1.3.2-2.4 0-3.6-.4-3.6 4.3-3 6-3.9 2.4-1.3 3.4-2.8 2.6-5.5-.8-2.8 3.4.2 7.1-3.5 1.8-1.8.5-4.9-.5-6.1-1.5-1.7-2.7.2-2.5 2.5.1 1.6-3 .9-4.3.9-.8 0-1.9.2-2.5.8-1.8 1.9.4 4-.8 6.2-1.5 2.7-5.2.9-7.6 4.4-2.4 3.4-.5 7.7-3.8 7.4-2.4-.2-4 2.2-5.1 4-1.1 1.9-1.6 4.8-4.6 4.5-1-.1-1.7.3-2.5.8-3.2 2.2-1.8 5.8-6.2 7-3.5.9-4.2 2.7-4.9 6.2-.1 2.2 3.3 3.1 3.7.8" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f32e.svg b/riot/emojione/svg/1f32e.svg new file mode 100644 index 0000000..7ce2afa --- /dev/null +++ b/riot/emojione/svg/1f32e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m16.4 61.9c-6.1 0-12 0-14.3-30.8-3.1-42 52.1-26.7 52.1-2.5 0 13.3-37.8 33.3-37.8 33.3" fill="#d3976e"/><path d="m3.6 31.1c-1.3-18 8-25.4 19.2-26.2 0 0 0 0 0-.1-11.8.2-22.1 7.5-20.7 26.3 2.1 28.5 7.4 30.8 12.9 30.8-5.1-.9-9.5-4.8-11.4-30.8" opacity=".5" fill="#fff"/><path d="m19.3 25.5l-15 6.6-2.1 4.9 2.7 1.6-1.9 4.3 1.5.9-2.1 4.5 3.3 2-1.9 4.3 3.9 2.4-.7 1.6 4.5 2.7.9-2 2.2 2.5 3.6-.9 11.7-22.5-10.6-12.9" fill="#594640"/><path d="m23 39l3-4-22.3-2.9-1.6 3.6 3.3 2 1-2.2 1.7 1-1.3 2.8-2.3-1.4-1.6 3.6 3.3 1.9 1.3-3 2.2 1.3-.1.3 2 1.2-.6.6-3.1-1.8-1.4 3-2.7-1.6-1.6 3.6 3.3 1.9 1.3-2.9 2.7 1.6.8-1.9.7.8-1 2.3-1.6-.9-1.3 2.8-1.9-1.2-1.6 3.6 3.3 2 1.3-2.8 1.9 1.2.3-.7 1 1.2-.6 1-2.3-1.4-1.6 3.6 3.3 1.9 1.4-3.1 2.4 3.4 2.2-2.5 1.8 2 2.6-2.9-2.6-2.8-2.2 2.5-.8-.8.5-1 2.3-2.7 1.2 1.4 2.6-2.9-2.6-3-2.4 2.8-1.2-1.4-2 2.2 1.3-2.9-1.2-.7.7-.8.6.3 1.7 1.9 2.6-2.9-2.6-2.9-.2.2-.9-.5 1.2-1.3 1.7 1.9-.3.3 2.3 2.6-.5.6 2.6 2.9 2.6-2.9-2-7.1" fill="#89664c"/><g fill="#d3976e"><path d="m9.6 38.1l-2.2-1.4-1.2 2.5 2.3 1.4z"/><path d="m14 36.8l.7-1.5-1.4-.9-.8 1.6z"/><path d="m10.6 42.2l-.7 1.6 1.4.9.7-1.6z"/><path d="m11.1 45.7l-.7 1.5 1.4.9.7-1.6z"/><path d="m13.2 41.5l1.4.8.7-1.5-1.4-.9z"/><path d="m4.5 44.7l-1.4-.8-.7 1.5 1.4.9z"/><path d="m4.7 50.7l-.7 1.6 1.4.8.7-1.5z"/><path d="m7.4 56.4l1.4.8.7-1.6-1.4-.8z"/><path d="m7.3 46.3l.7-1.6-1.4-.8-.7 1.5z"/><path d="m7.6 47.4l-1.2 2.5 2.3 1.4 1.1-2.5z"/><path d="m10.8 53l1.4.8.7-1.5-1.4-.9z"/><path d="m12.1 56.7l1.4.8.7-1.5-1.4-.9z"/><path d="m18.2 35.2l-1.1-1.3-1.1 1.3 1.1 1.2z"/><path d="m19.3 39.1l-1.7-2-1.8 2 1.8 2z"/><path d="m19.8 40.9l-1.1 1.3 1.1 1.2 1.1-1.2z"/><path d="m20.4 45.4l1.1 1.3 1.1-1.3-1.1-1.3z"/><path d="m16.5 47.1l1.1 1.3 1.1-1.3-1.1-1.3z"/><path d="m16.8 53.4l1.1 1.2 1.1-1.2-1.1-1.3z"/><path d="m14.9 57.2l1.1 1.3 1.1-1.3-1.1-1.3z"/></g><path fill="#ffec40" d="m45.7 8.8l-9.5-6.3-1.3-.5.4 3.9-11.3-2.3-1.2.3-11.8 8.1-4.7 12-3.3 1v2l7-2-3.3 3.2 1 4.4 18 1.2z"/><g fill="#83bf4f"><path d="m22.5 4.6c-2.2-.4-4 2-6.1 2.7-2.2.8 1.8 3.8 3 3.8 3.4 0 9.8-5.2 3.1-6.5"/><path d="m11.5 17.1c.8-2.3.5-5.1-2.6-3.1-2.6 1.7.2 4.3-3 5.8-3.1 1.4-1 5.4 1.7 4.2 2.4-.9 3.2-4.6 3.9-6.9"/><path d="m11.5 17.1c0 .1 0 .1 0 0"/><path d="m24.7 31.3c.2.3.5.5 0 0-3.7-3.6-9.1 5-7.9 6.6 4.7 6.2 10.1-4.3 7.9-6.6"/></g><g fill="#ed4c5c"><path d="m13.3 25.5l-2.6 6.1 6.6 2.4 3.7-6.7z"/><path d="m9.7 24.3l3.4 2.7 5.7-4-3.7-3z"/><path d="m20.9 19.5l4.6 3.5 6-3.6-3.1-4.2z"/><path d="m15.9 11.5l.4 4.8 6.5-3-.3-3.4-3-1.7z"/><path d="m29.4 3.2l-1.7 5.1 7.3.7-.4-4.9z"/><path d="m37 3l.4 5 6.7-.7.8-3.1z"/></g><g fill="#83bf4f"><path d="m35.2 11.7c2.7.7-1.1-.2 0 0"/><path d="m36 12c-.9-.7-2.7 2.2-3.7 2.8-1.2.8-10.7 3.1-2.5 5.2 2.6.7 8.2-6.4 6.2-8"/><path d="m40.3 9.7c-.8-.5.8.5 0 0"/><path d="m43.3 5.7c-1.7 2.3-1.4-2.6-3.9-.4-1.5 1.3-.7 3.5.9 4.4 1.4.9 6.3.4 6.6-1.9.2-1.5-2.4-3.7-3.6-2.1"/><path d="m7 26c-1.4 0-4.3 3.7-4.3 3.7-2.6 2.8 2.8 2.8 2.9 3.3-.8.6-1.6 1.2-2.5 1.7 0 2 4.2-.2 3.9 0-2.4 4.1 7.5-.7 8.1-1.1 3.4-2.1-2.1-7.6-8.1-7.6"/><path d="m18 21.9c-1.4-.1.8 0 0 0"/><path d="m20.4 16.3c-3.4-6.3-3.8 0-4.4.7-.4.4-5 0-2.9 2.5.9 1.1 3.6 2.7 5 2.3 2.9-.8 3-4.2 2.3-5.5"/></g><g fill="#ffffd4"><path d="m20.7 24l-10.9 1.4-2.8 2.1 1.2 1 10.8-3.5 2.7-.2z"/><path d="m29 12.7l-4.7-.4-10.3 3.4 1.6 1.3 8.5-2.7 5-.5z"/><path d="m23.1 21.2l-1.1.1 2.1 5.1 3.1.6.8-1.8-1.8-.7z"/><path d="m21.5 27.7l2.2 6.2-1.6 1.1-1.8-5.5z"/><path d="m38.6 7.3l-2.1-.6-1.6-4.7-1.3.1 1.6 5.5 2.7 1.1z"/><path d="m29.6 5.3l-6.8-1.4-.7 1.1 7.2 1.9z"/></g><path d="m16.4 61.9c0 0 4.2 0 6.6-16.2 2.5-16.4 13.5-38.5 30.6-38.5 5.9 0 10 3.9 7.7 25.2-.3 3.7-39.7 29.5-44.9 29.5" fill="#fbbf67"/><path d="m53.7 6.2c-21.7 0-28.4 24.6-30.7 39.5-2.5 16.2-9.1 16.2-9.1 16.2s4.2.5 5.4-.5c1.8-1.5 3.9-5.4 5.2-14 2.3-15 10.3-39.7 29.7-39.7 5.5 0 7.3 7.9 7.3 7.9s-.9-9.4-7.8-9.4" fill="#fddfb3"/><g fill="#d3976e"><path d="m39.2 40.8l1-1 1 1-1 1.1z"/><path d="m40.5 26.8l1-1.1 1 1.1-1 1.1z"/><path d="m56.1 26.8l1-1.1 1 1.1-1 1.1z"/><path d="m54.2 15.8l1-1.1 1 1.1-1 1z"/></g><g fill="#fddfb3"><path d="m48.3 33.4l-1 1 1 1.1 1-1.1-1-1"/><path d="m50.7 20.8l-1 1 1 1.1 1-1.1-1-1"/><path d="m43 17l-1 1.1 1 1.1 1-1.1-1-1.1"/><path d="m33.5 32.8l-1 1.1 1 1 1-1-1-1.1"/><path d="m31.2 46.4l-1 1.1 1 1 1-1-1-1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f32f.svg b/riot/emojione/svg/1f32f.svg new file mode 100644 index 0000000..6ae9039 --- /dev/null +++ b/riot/emojione/svg/1f32f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.2 4.1c-3.8-4-21.8-4.9-47.1 20.2-10.2 10.1-6.3 32 10.2 36.2 18.2 4.6 24.1-5 27.3-9.4 10.1-13.7 18.6-43.5 9.6-47" fill="#fddfb3"/><path d="M44.8,30.2C38.5,20,29.7,20,24.9,20.3C2.3,21.6,1.4,55.5,23.2,59.4C47.4,63.9,51.1,40.5,44.8,30.2z" fill="#89664c"/><g fill="#d3976e"><path d="m25.3 29.2l-6 2-1.3 7.9 7 .4z"/><path d="m26 50.7l-3.2-6.9-7.3-.6.2 9.1z"/><path d="m19.8 47.5c0 0-5.7.3-6.7 2.5-1 2.3-2.5 6.3-1.5 8 1 1.7 5.9 2.5 8.2 1 2.4-1.5 1.8-11.7 0-11.5"/></g><path d="m13.1 50c-1 2.3-2.5 6.3-1.5 8-.9-3.4 4.5-1.8 6-2.4 1.5-.6 2.2-8.1 2.2-8.1s-5.7.2-6.7 2.5" opacity=".5" fill="#89664c"/><path d="m16.7 47c0 0-2-6.3-4.4-6.7-2.4-.4-6.5-.9-7.8.8-1.3 1.7-.5 7.3 1.6 9.5 2.1 2.2 11.3-1.6 10.6-3.6" fill="#d3976e"/><path d="m12.3 40.4c-2.4-.4-6.5-.9-7.8.8 2.8-2 3.1 4.4 4.1 5.9 1 1.5 8.1-.1 8.1-.1s-2-6.2-4.4-6.6" opacity=".5" fill="#89664c"/><path d="m14.3 29.8c0 0-5-2.4-6.8-1s-4.5 4.3-4.3 6.3c.2 2 4.1 4.9 6.7 4.7 2.7-.2 6-9.4 4.4-10" fill="#d3976e"/><path d="m7.6 28.8c-1.7 1.5-4.6 4.3-4.4 6.2.5-3.3 4.6.5 6.1.7 1.5.2 5-6 5-6s-5-2.4-6.7-.9" opacity=".5" fill="#89664c"/><path d="m23.8 23c0 0-4.8-3.9-6.9-2.7-2.1 1.1-5.8 3.3-5.9 5.5-.2 2.2 3.3 6.2 6.1 6.7 2.7.4 8.2-8.4 6.7-9.5" fill="#d3976e"/><path d="m16.9 20.3c-2.1 1.1-5.8 3.3-5.9 5.5 1.2-3.4 4.7 1.7 6.3 2.3 1.6.6 6.6-5 6.6-5s-4.9-4-7-2.8" opacity=".5" fill="#89664c"/><g fill="#ffc7ce"><path d="m26.2 42.3c-3.6 2-4.4 3-3.9 6.1.5 3.1 3-.8 8.2-2.3s2.4-7.6-4.3-3.8"/><path d="m29.2 31.5c-2.8-3.2-3.9-3.8-6.4-2.4-2.5 1.4 1.6 3 4.3 7.9s7.2.4 2.1-5.5"/></g><g fill="#83bf4f"><path d="m9.4 40.4c-5.1 3.4-8.7 6.3-7 7.6 2.2 1.6 8.9-4.5 11.5-7.7 2.7-3.2 6-6.8-4.5.1"/><path d="m14 49.7c-4.9 3.5-8.3 6.5-6.6 7.7 2.2 1.6 8.7-4.8 11.1-8 2.4-3.2 5.6-6.9-4.5.3"/><path d="m27.5 53.7c-5.7 2.2-9.8 4.3-8.4 6 1.8 2.1 9.7-2.6 12.9-5.1 3.3-2.6 7.3-5.5-4.5-.9"/><path d="m28.7 38.4c-6 1.1-10.5 2.4-9.4 4.3 1.4 2.4 10-.7 13.7-2.6 3.7-2 8.2-4-4.3-1.7"/><path d="m32.4 21.8c-5.5-1.5-9.8-2.2-9.6-.2.2 2.6 8.7 3.5 12.6 3.4 3.8-.2 8.3-.1-3-3.2"/></g><g fill="#fffbe9"><path d="m32 61.8c-.8.4-.1.2 0 0"/><path d="m44.2 28.3l-3.5-3.3-2.4-.2-1.3-2.5-4.1-.2-.8 3.1-3.2-.1v3l-2.4 1.3 4.1 3.6-.8 4.5 2.1 5.6-3.7 4 .6 1.6 1.9-1.3-2.6 7 3.1-2.6-2.3 6.4h2l-2 3 8-2 5.1-3.7 4.2-5.5-1.3-2.8 2.6-4 .2-4.4-1.1-4.5-2.7-3.5z"/></g><g fill="#e8e1d6"><path d="m42.5 51.2l-1.2 4 2.6-2.8.9-3.8z"/><path d="m45 38.9l.5 2.8 2-2.9-.7-2.8z"/><path d="m42.5 31.6l.1 3.1 2.4 1.9.1-3.1z"/><path d="m36.3 41.1l.1 3.1 2.4 1.9.1-3z"/><path d="m30.4 45l.1 3.1 2.4 1.9.1-3.1z"/><path d="m41.7 51.2l-3.1 2-1.7 3 3-1z"/><path d="m35 53l-3.1 2-1.7 3 3-1z"/><path d="m41.8 28.4l-1.6-2.8-3.7-1.1 1.8 2.8z"/><path d="m33.8 34.4l2.3 2.2 3.4-.1-2.3-2.1z"/><path d="m34.9 48l2.4 2.2 3.4-.1-2.3-2.1z"/><path d="m35.9 25.9l-3.6-.8-2.8 1.4 3.5.9z"/><path d="m33.4 31.9l-3.6-.8-2.9 1.5 3.6.8z"/><path d="m40.2 40l1.8-2.8-.7-2.9-1.7 2.9z"/><path d="m34.7 38.7l-1.1-2.8-1.3 2.9.9 2.7z"/><path d="m43.9 43.3l-1-2.8-1.3 2.9.8 2.8z"/><path d="m38.3 30.9l-1.1-2.8-1.3 2.8.9 2.8z"/></g><path d="m23 50.4c-2.4-2.9-3.3-3.4-5.5-2.3-2.2 1.1 1.3 2.6 3.5 7 2.3 4.4 6.4.6 2-4.7" fill="#ffc7ce"/><g fill="#e8662d"><path d="m25.5 47.8l-3.6 4.4 1.7 3.6 5.7-.2 1.5-6.6-2.1-2.3-3.2 1.1"/><path d="m28.7 46.7l-3.2 1.1-3.6 4.4 1.7 3.6 5.7-.2 1.5-6.6-2.1-2.3"/><path d="m23.5 22.2l-3.6 5.8 2.6 3.9 6.7-1.2.7-8.1-2.7-2.3-3.7 1.9"/><path d="m27.2 20.3l-3.7 1.9-3.6 5.8 2.6 3.9 6.7-1.2.7-8.1-2.7-2.3"/><path d="m10.1 45.4l-1.2 4.3 2.2 1.8 3.9-2.1-.9-5-2.1-.9-1.9 1.9"/><path d="m12 43.5l-1.9 1.9-1.2 4.3 2.2 1.8 3.9-2.1-.9-5-2.1-.9"/><path d="m14 34.9v6.4l3.7 1.5 4.5-4.7-3.2-6.5-3.2-.2-1.8 3.5"/><path d="m15.8 31.4l-1.8 3.5v6.4l3.7 1.5 4.5-4.7-3.2-6.5-3.2-.2"/></g><g fill="#89664c"><path opacity=".5" d="m39.3 12l-1 1-1-1 1-1z"/><path opacity=".5" d="m53.9 25.1l-1 1-1-1 1-1z"/><path opacity=".5" d="m37.5 15.3l-1 1-1-1 1-1z"/><path opacity=".5" d="m48.9 7.3l-1 1-1-1 1-1z"/><path transform="matrix(.705-.7092.7092.705 7.7418 38.1628)" opacity=".5" d="m49.4 9.4h.7v.7h-.7z"/><path transform="matrix(.705-.7092.7092.705-3.9034 43.8373)" opacity=".5" d="m50.4 26.3h.7v.7h-.7z"/><path transform="matrix(.7064-.7078.7078.7064 10.5203 36.9043)" opacity=".5" d="m49.4 5.4h.7v.7h-.7z"/><path opacity=".5" d="m55.4 28.1l-1.5 1.5-1.5-1.5 1.5-1.5z"/><path opacity=".5" d="m35.6 13.8l-2 2-2-2 2-2z"/><path d="m32.4 17.5c9.1 2.5 25.5 2.9 25.8-13.4 0 0 2.1 16.7-14.4 16.9-12.9.1-15.7-4.9-24.9-3.8-.1 0 5.1-2 13.5.3" opacity=".33"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f330.svg b/riot/emojione/svg/1f330.svg new file mode 100644 index 0000000..5def656 --- /dev/null +++ b/riot/emojione/svg/1f330.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,15.5-13.4,28-30,28C15.4,60,2,47.5,2,32C2,16.5,32,4,32,4S62,16.5,62,32z" fill="#947151"/><path d="m32 50.9c-10.3 0-19.9-3.1-27.7-8.3 4.5 10.2 15.2 17.4 27.7 17.4 12.5 0 23.2-7.2 27.7-17.3-7.8 5.2-17.4 8.2-27.7 8.2" fill="#e0ac7e"/><g fill="#846144"><path d="m32 4c-3.4 3-6.7 6-9.8 9.2-1.5 1.6-3 3.2-4.3 5-1.4 1.7-2.6 3.5-3.7 5.4-2.2 3.7-3.7 7.8-3.6 12 0 4.2 1.6 8.4 4.1 12.3-1.7-1.5-3.2-3.3-4.3-5.4-1.1-2.1-1.9-4.4-2.1-6.8-.3-2.4 0-4.8.6-7.1.6-2.3 1.6-4.5 2.8-6.5 2.4-4 5.5-7.5 9-10.5 3.4-3.1 7.2-5.6 11.3-7.6"/><path d="m32 4c4.1 2 7.9 4.5 11.4 7.5 3.5 3 6.6 6.5 9 10.5 1.2 2 2.2 4.2 2.8 6.5.6 2.3.9 4.8.6 7.1-.2 2.4-1 4.7-2.1 6.8-1.1 2-2.6 3.9-4.3 5.4 2.4-3.8 4.1-8 4.1-12.3 0-4.2-1.5-8.3-3.6-12-1.1-1.9-2.3-3.6-3.7-5.4-1.3-1.7-2.8-3.4-4.3-5-3.2-3.1-6.5-6.1-9.9-9.1"/><path d="m32 4c-1.3 4.1-2.6 7.9-3.9 11.8-1.3 3.9-2.6 7.7-3.6 11.5-1 3.8-1.8 7.7-2 11.5-.2 3.9.2 7.7 2.1 11.6-1.8-1.2-3.2-3-4.2-5-1-2-1.6-4.2-1.9-6.4-.6-4.4 0-8.8 1.1-13 1.1-4.2 2.8-8.1 4.8-11.8 2.2-3.7 4.6-7.2 7.6-10.2"/><path d="m32 4c3 3 5.4 6.5 7.5 10.2 2 3.7 3.7 7.7 4.8 11.8 1.1 4.1 1.7 8.6 1.1 13-.3 2.2-.9 4.4-1.9 6.4-1 2-2.4 3.8-4.2 5 1.9-3.8 2.3-7.7 2.1-11.6-.2-3.9-1-7.7-2-11.5-1-3.8-2.3-7.7-3.6-11.5-1.2-3.9-2.5-7.7-3.8-11.8"/><path d="m32 4c1 3.9 1.6 7.8 2 11.7.4 3.9.5 7.8.5 11.7 0 3.9-.2 7.8-.5 11.7-.4 3.9-.9 7.8-2 11.7-1-3.9-1.6-7.8-2-11.7-.4-3.9-.5-7.8-.5-11.7 0-3.9.2-7.8.5-11.7.4-3.9 1-7.8 2-11.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f331.svg b/riot/emojione/svg/1f331.svg new file mode 100644 index 0000000..90f17ee --- /dev/null +++ b/riot/emojione/svg/1f331.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#83bf4f"><path d="M48.5,38.4c-8,0-10.1-6.6-10.1-6.6s2.1-8.3,10.1-8.3C54,23.5,63,31,63,31S54,38.4,48.5,38.4z"/><path d="M18,6.7c6.3,6.4,2.6,13.6,2.6,13.6s-7.7,4.4-14-2C2.3,13.9,1,1,1,1S13.7,2.3,18,6.7z"/></g><g fill="#75a843"><path d="m63 31c-5-1-10.1-1.6-15.1-1-4.9.5-9.9 2.3-13.2 5.7-1.7 1.7-2.9 3.7-3.5 5.9-.1.5-.2 1.1-.3 1.6-.1.6 0 1 0 1.7l.2 3.8.7 15.3h-5l.8-15.3.2-3.8c0-.6.1-1.4.2-2.1.1-.7.3-1.4.5-2.1.9-2.7 2.6-5 4.7-6.7 2.1-1.8 4.5-3 7-3.9 2.5-.8 5.1-1.2 7.7-1.3 5.1-.2 10.2.8 15.1 2.2"/><path d="m1 1c5.2 3.2 10 7.2 14.2 11.7 4.2 4.5 8 9.4 11.1 14.8 1.5 2.7 3 5.5 3.9 8.7.2.8.4 1.6.5 2.5l.1 2.4.2 4.6.8 18.3h-5l.8-18.4.2-4.6.1-1.1c0-.4 0-.8 0-1.1 0-.6-.1-1.3-.3-2-.6-2.8-1.8-5.6-3.2-8.3-2.7-5.4-6.2-10.4-10.1-15.1-3.8-4.7-8.2-8.9-13.3-12.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f332.svg b/riot/emojione/svg/1f332.svg new file mode 100644 index 0000000..be20988 --- /dev/null +++ b/riot/emojione/svg/1f332.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#947151" d="m25 52.1h14v11.9h-14z"/><path d="M32,34.9L2,55.1c0,0,14.5,3.4,30,3.4c15.5,0,30-3.4,30-3.4L32,34.9z" fill="#71a03a"/><path d="M32,23.6L7,43.8c0,0,12.1,3.4,25,3.4s25-3.4,25-3.4L32,23.6z" fill="#76aa3f"/><path d="M32,12.3L12,32.5c0,0,9.7,3.4,20,3.4c10.3,0,20-3.4,20-3.4L32,12.3z" fill="#7cb545"/><path d="M32,1L17,20.8c0,0,7.2,3.8,15,3.8s15-3.8,15-3.8L32,1z" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f333.svg b/riot/emojione/svg/1f333.svg new file mode 100644 index 0000000..4f29da3 --- /dev/null +++ b/riot/emojione/svg/1f333.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#83bf4f"><ellipse cx="17.8" cy="38.3" rx="15.8" ry="15.2"/><ellipse cx="17.8" cy="21.4" rx="15" ry="14.4"/><ellipse cx="34.2" cy="16.9" rx="15.5" ry="14.9"/><ellipse cx="49" cy="28.5" rx="13" ry="12.5"/><ellipse cx="39.5" cy="40.2" rx="13" ry="12.5"/></g><g fill="#947151"><path d="m28.9 64c.3-4-.3-8.2-.9-12.6-.6-4.4-1.4-8.9-1.4-13.5-.1-4.6.5-9.3 2.1-13.6 1.5-4.3 3.8-8.2 6.5-11.7-2.3 3.8-4 7.9-4.9 12.2-.9 4.2-.9 8.6-.3 12.8.6 4.2 1.8 8.4 3.1 12.7 1.2 4.3 2.5 8.8 2.8 13.7h-7"/><path d="m28.4 36.2c2 .2 4.2.1 6.3-.1 2.1-.2 4.2-.7 6.2-1.4 2-.7 3.9-1.7 5.6-3 1.7-1.3 3.2-2.9 4.3-4.8-1 1.9-2.3 3.7-4 5.2-1.6 1.5-3.5 2.6-5.6 3.5-2 .9-4.2 1.5-6.3 2-2.2.4-4.4.7-6.7.6l.2-2"/><path d="m27.8 34.8c-1.5-.9-2.8-1.9-4-2.9-1.2-1.1-2.4-2.3-3.4-3.5-2-2.6-3.5-5.7-3.7-8.9.5 3.2 2.3 6 4.5 8.2 1.1 1.1 2.3 2.1 3.6 3 1.3.9 2.7 1.7 4 2.3l-1 1.8"/><path d="m29.4 46.2c-1.7-.1-3.3-.4-4.9-.8-1.6-.4-3.1-1-4.6-1.8-2.9-1.6-5.4-3.9-6.9-6.8 1.8 2.7 4.4 4.7 7.3 5.8 1.4.6 3 1 4.5 1.3 1.5.3 3.1.4 4.6.3v2"/></g><g fill="#75a843"><path d="m9.8 41.9c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m56.1 33.3c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4 1.8-4 1.8-4 1.8 1.8 1.8 4"/><path d="m14.8 47c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m9.8 20.9c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m14.8 15.1c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m40.5 18c0 2.2-1.8 4-1.8 4s-1.7-1.8-1.7-4c0-2.2 1.8-4 1.8-4s1.7 1.8 1.7 4"/><path d="m45.5 12.6c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m22.2 35.8c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4 1.8-4 1.8-4 1.8 1.8 1.8 4"/><path d="m16.6 30.7c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m26.1 20.9c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m30 14c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m35.4 30.7c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m49 39.8c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m45.5 23.1c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m39.5 43c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/><path d="m44.2 47.5c0 2.2-1.8 4-1.8 4s-1.8-1.8-1.8-4c0-2.2 1.8-4 1.8-4s1.8 1.8 1.8 4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f334.svg b/riot/emojione/svg/1f334.svg new file mode 100644 index 0000000..b0cec6d --- /dev/null +++ b/riot/emojione/svg/1f334.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#947151" d="m44.1 64h-10l-5.6-30.8h6.4z"/><g fill="#6d533e"><path d="m33.5 60.7l.4 2.4 6.1-1.3z"/><path d="m32.3 54l.4 2.4 6.1-1.2z"/><path d="m31.1 47.5l.4 2.2 5.7-1.1z"/><path d="m29.9 40.9l.4 2.2 5.5-1.1z"/><path d="m28.7 34.4l.4 2 5.1-1z"/><path d="m42.8 59.7l-.6-2.3-5.6 1.1z"/><path d="m40.8 53l-.6-2.1-5.2 1z"/><path d="m38.8 46.3l-.6-2-5 1z"/><path d="m36.8 39.7l-.6-2.1-5.2 1.1z"/></g><path d="m32 28.6c11.2-2.8 26.9-.1 19.1 12.2l-.5-3-2.8 2.4.8-3.7-2.7 2.3.5-3.5-3 2.2.7-3.9-3.4 2.2.5-3.4-3.3 2.1.4-3-2.9 1.4v-2.4l-2 .7-1.4-2.6" fill="#83bf4f"/><g fill="#75a843"><path d="m31.8 31.3c-1.4-13.5 4.7-33.3 18.5-25.6l-3.8 1.1 2.5 3.1-4.5-.4 2.3 3-4.3-.1 2.2 3.3-4.7-.2 2.2 3.9-4.2-.1 2 3.8h-3.6l1.2 3.3-2.9.3.6 2.3-3.5 2.3"/><path d="m32.6 28.9c-2.3-13.6-14-30.6-25.7-18.2l4.1-.3-1.6 3.9 4.4-1.9-1.5 3.6 4.3-1.6-1.3 4 4.7-1.9-1.1 4.5 4.1-1.6-1 4.4 3.6-1.3-.3 3.7 3-.7.1 2.4 4.2 1"/></g><g fill="#83bf4f"><path d="m33.2 31c-8.3-11.5-26.5-22.5-31.2-6.5l3.6-1.9.3 4.2 3-3.5.4 4 3.1-3.2.7 4.2 3.3-3.6 1.1 4.6 3-3.1 1.2 4.4 2.6-2.6 1.5 3.5 2.3-1.9 1.2 2.2 3.9-.8"/><path d="m33.7 29.2c-12.2-2.4-29.6 1.3-21.7 14l.7-3.2 2.9 2.4-.6-3.9 2.8 2.3-.3-3.8 3.1 2.2-.5-4.1 3.6 2.2-.4-3.6 3.5 2-.3-3.1 3.1 1.3.1-2.5 2.1.7 1.9-2.9"/><path d="m30.8 29.1c8.2-10.6 26.4-20.9 31.2-6l-3.6-1.8-.3 3.9-3-3.2-.4 3.7-3.1-2.9-.6 3.8-3.3-3.3-1.1 4.2-3-2.9-1.2 4-2.6-2.4-1.5 3.2-2.3-1.7-1.2 2-4-.6"/></g><path d="m36.8 32.6c1.1 1.3 1.1 3.2 0 4.2-1.2 1-3 .7-4.2-.7-1.1-1.3-1.1-3.2 0-4.2 1.2-1 3.1-.7 4.2.7" fill="#68584d"/><path d="m37.3 26.8c1.7.9 2.4 2.7 1.7 4.2-.8 1.4-2.7 1.9-4.4 1-1.7-.9-2.4-2.7-1.7-4.2.7-1.4 2.7-1.8 4.4-1" fill="#726256"/><path d="m33.2 33.9c-1.2 2.1-3.8 3-5.6 2-1.9-1.1-2.4-3.7-1.1-5.8 1.2-2.1 3.8-3 5.6-2 1.8 1.1 2.3 3.7 1.1 5.8" fill="#847266"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f335.svg b/riot/emojione/svg/1f335.svg new file mode 100644 index 0000000..b980aad --- /dev/null +++ b/riot/emojione/svg/1f335.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#83bf4f"><path d="M15.2,31.4c0,1.7-1.4,3-3,3H10c-1.7,0-3-1.3-3-3V18.1c0-5.9,8.2-5.9,8.2,0V31.4z"/><path d="m23.4 26.3c1.7 0 3 1.3 3 3v2.1c0 1.7-1.4 3-3 3h-13.4c-1.7 0-3-1.3-3-3v-2.1c0-1.7 1.4-3 3-3h13.4"/></g><g fill="#699635"><path d="m26.9 28.5v-1.2h-11c-.2 0-1.7-.1-1.7-1.8v-7c0-4.3-3-4.9-3-4.9s1.9.8 1.9 4.9v7.7c0 2.2 1.8 2.2 2.2 2.2l11.6.1"/><path d="m13.4 29.7c-.2 0-1.8-.2-1.8-2.8v-8.4c0-3.3-.6-4.9-.6-4.9s-.6 1.5-.6 4.9v9.1c0 3.3 1.8 3.3 2.2 3.3h14.4v-1.2c0 0-13.6 0-13.6 0"/><path d="m9.2 29.4v-10.9c0-4.1 1.9-4.9 1.9-4.9s-3 .6-3 4.9v11.5c0 3.3 2.8 3.3 3.3 3.3h15.6v-1.2h-15c-.3.1-2.8-.2-2.8-2.7"/></g><g fill="#83bf4f"><path d="m46.4 47.2c0 2.1 1.8 3.9 3.9 3.9h2.7c2.2 0 3.9-1.7 3.9-3.9v-17.2c0-7.6-10.6-7.6-10.6 0 .1 0 .1 17.2.1 17.2"/><path d="m35.8 40.6c-2.2 0-3.9 1.7-3.9 3.9v2.7c0 2.1 1.8 3.9 3.9 3.9h17.3c2.2 0 3.9-1.7 3.9-3.9v-2.7c0-2.1-1.8-3.9-3.9-3.9h-17.3"/></g><g fill="#699635"><path d="m31.3 43.5v-1.5h14.2c.3 0 2.3-.1 2.3-2.3v-9.1c0-5.5 3.9-6.3 3.9-6.3s-2.4 1-2.4 6.3v10c0 2.9-2.3 2.9-2.9 2.9 0 0-15.1 0-15.1 0"/><path d="m48.7 45.1c.3 0 2.3-.3 2.3-3.6v-10.9c0-4.3.8-6.3.8-6.3s.8 2 .8 6.3v11.8c0 4.2-2.3 4.2-2.9 4.2h-18.5v-1.5c0 0 17.5 0 17.5 0"/><path d="m54.1 44.6v-14c0-5.3-2.4-6.3-2.4-6.3s3.9.8 3.9 6.3v14.9c0 4.2-3.7 4.2-4.2 4.2h-20.2v-1.5h19.4c.3 0 3.5-.4 3.5-3.6"/></g><path d="M39.5,64H22.8V10c0-12,16.7-12,16.7,0V64z" fill="#83bf4f"/><g fill="#699635"><path d="M37.4,64V11c0-8.7-6.2-10-6.2-10S35,2.6,35,11v53H37.4z"/><path d="M32.3,64V11c0-6.8-1.2-10-1.2-10S30,4.2,30,11v53H32.3z"/><path d="m27.3 64v-53c0-8.4 3.8-10 3.8-10s-6.2 1.3-6.2 10v53h2.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f336.svg b/riot/emojione/svg/1f336.svg new file mode 100644 index 0000000..3763d91 --- /dev/null +++ b/riot/emojione/svg/1f336.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.6 2.5c-3.6 3.3-.8 10.8-.8 10.8-4.1 4.7-2.8 12.8-2.8 12.8l4.9-13.3c-.6-7.2 2.1-9.3 2.1-9.3.5-1.1-2.1-2.2-3.4-1" fill="#6c9925"/><path d="m7.6 3.3c-3 2.7-.2 9.8-.2 9.8-4.1 4.7-2.7 9-2.8 11.6l19.9-11.8c-2.2-5.8-14.5-2.7-14.5-2.7-2.5-4.3 0-6.7 0-6.7s-.8.3-2.4-.2" fill="#8cc63e"/><path d="m42.9 48c-9.7-9.3-10.8-16.8-10.8-25.2 0-6.6-4-11.3-8.3-12.1-2.2-.4-9-.7-6.7 1.3 2.2 2-8.1.4-8.1 4.7 0 3.1-2.6-.6-5.7 7.1-3.1 8-.1 13.5 4.4 18.5 8.8 9.6 29.4 27.1 50.7 16.1 11-5.5-6.1-1.4-15.5-10.4" fill="#ed4040"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f337.svg b/riot/emojione/svg/1f337.svg new file mode 100644 index 0000000..6512189 --- /dev/null +++ b/riot/emojione/svg/1f337.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M39.8,45.1C33.4,50.4,33.9,64,33.9,64h2.2C41.9,46.2,62,39.5,62,39.5S49.2,37.2,39.8,45.1z" fill="#83bf4f"/><path fill="#75a843" d="m33.6 1l2.5 63h-5z"/><path d="M45.2,25.1c0,11-5.2,15.7-11.6,15.7s-11.6-4.7-11.6-15.7S33.6,1,33.6,1S45.2,14.1,45.2,25.1z" fill="#aa1f65"/><path d="m37 19.9c14.8 9.3 4.8 22.5-3.6 22.5-8.4 0-15.2-8.6-15.2-19.3s8.3-19.3 8.3-19.3-.4 9.3 10.5 16.1" fill="#d33777"/><path d="m30.3 19.9c-14.8 9.3-4.8 22.5 3.6 22.5 8.4 0 15.2-8.6 15.2-19.3s-8.2-19.2-8.2-19.2.3 9.2-10.6 16" fill="#e84d88"/><path d="M24.8,43.1c6.6,6.6,8.7,20.9,8.7,20.9h-4.8C21,45.8,2,32.5,2,32.5S18.2,36.6,24.8,43.1z" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f338.svg b/riot/emojione/svg/1f338.svg new file mode 100644 index 0000000..eb6d6da --- /dev/null +++ b/riot/emojione/svg/1f338.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff506e"><path d="m36.1 2c-.4 1.9-2.1 3.4-4.1 3.4-2 0-3.7-1.5-4.1-3.4-3.1 1.7-5.3 5.6-5.3 12.3 0 9.3 9.4 20.5 9.4 20.5s9.4-11.2 9.4-20.5c0-6.7-2.2-10.6-5.3-12.3"/><path d="m62 24.3c-1.9.4-3.8-.5-4.7-2.4-.9-1.9-.4-4.1 1.1-5.4-2.8-2.2-7.1-2.5-12.9.4-8 4.2-13.5 17.9-13.5 17.9s13.7 4 21.7-.1c5.8-2.9 8.2-6.7 8.3-10.4"/><path d="m2 24.3c1.9.4 3.8-.5 4.7-2.4.9-1.9.4-4.1-1.1-5.4 2.8-2.2 7.1-2.5 12.9.4 8 4.1 13.5 17.8 13.5 17.8s-13.7 4-21.7-.1c-5.8-2.8-8.2-6.6-8.3-10.3"/><path d="m46.5 61.9c-.7-1.9-.1-4 1.5-5.2 1.6-1.2 3.8-1 5.2.3 1.6-3.3 1.3-7.8-2.3-13.3-5.1-7.6-18.9-11.2-18.9-11.2s-1.7 14.8 3.4 22.5c3.6 5.5 7.6 7.4 11.1 6.9"/><path d="m17.5 61.9c.7-1.9.1-4-1.5-5.2-1.6-1.2-3.8-1-5.2.3-1.6-3.3-1.3-7.8 2.3-13.3 5.1-7.6 18.9-11.2 18.9-11.2s1.7 14.8-3.4 22.5c-3.6 5.5-7.6 7.4-11.1 6.9"/></g><g fill="#fff0f3"><path d="m35.6 5.7c-.4 1.7-1.9 3-3.6 3s-3.2-1.3-3.6-3c-2.7 1.5-4.6 4.9-4.6 10.8 0 8.2 8.3 18 8.3 18s8.3-9.8 8.3-18c-.1-5.9-2-9.3-4.8-10.8"/><path d="m58.3 25.3c-1.6.4-3.4-.4-4.1-2.1-.8-1.7-.3-3.6 1-4.7-2.5-1.9-6.3-2.2-11.3.3-7.1 3.6-11.9 15.6-11.9 15.6s12 3.5 19.1-.1c5-2.5 7.1-5.8 7.2-9"/><path d="m5.7 25.3c1.6.4 3.4-.4 4.1-2.1.8-1.7.3-3.6-1-4.7 2.5-1.9 6.3-2.2 11.3.3 7 3.6 11.9 15.6 11.9 15.6s-12 3.5-19.1-.1c-5-2.5-7.1-5.8-7.2-9"/><path d="m44.7 58.3c-.6-1.6-.1-3.6 1.4-4.6s3.3-.9 4.6.3c1.4-2.9 1.1-6.8-2-11.6-4.6-6.8-16.7-10-16.7-10s-1.5 13 3 19.7c3.2 4.9 6.6 6.6 9.7 6.2"/><path d="m19.3 58.3c.6-1.6.1-3.6-1.4-4.6s-3.3-.9-4.6.3c-1.4-2.9-1.1-6.8 2-11.6 4.5-6.7 16.6-9.9 16.6-9.9s1.5 13-3 19.7c-3.1 4.8-6.5 6.5-9.6 6.1"/></g><g fill="#ff506e"><path d="m28.7 40.9l-1.2-.6 7.8-17.2 1.2.6z"/><path d="m37.5 23.3c0 .9-.6 1.7-1.5 1.7-.9 0-1.6-.7-1.7-1.6 0-.9.6-1.7 1.5-1.7.9 0 1.6.7 1.7 1.6"/><path d="m29.7 40.5c0 .9-.6 1.7-1.5 1.7-.9 0-1.6-.7-1.7-1.6 0-.9.6-1.7 1.5-1.7.9 0 1.7.7 1.7 1.6"/><path d="m23.9 36.4l-.5-1.3 16.7-7.5.5 1.3z"/><path d="m41.9 28.3c-.1.9-.8 1.6-1.7 1.5-.9-.1-1.5-.9-1.5-1.8.1-.9.8-1.6 1.7-1.5.9.1 1.6.9 1.5 1.8"/><path d="m25.3 35.9c-.1.9-.8 1.6-1.7 1.5-.9-.1-1.5-.9-1.5-1.8.1-.9.8-1.6 1.7-1.5s1.5.9 1.5 1.8"/><path d="m39.9 36.7l-16.4-8.1.6-1.3 16.4 8.1z"/><path d="m40.3 37.7c-.9 0-1.6-.7-1.7-1.6 0-.9.6-1.7 1.5-1.7.9 0 1.6.7 1.7 1.6.1.9-.6 1.7-1.5 1.7"/><path d="m23.9 29.6c-.9 0-1.6-.7-1.7-1.6 0-.9.6-1.7 1.5-1.7.9 0 1.6.7 1.7 1.6 0 .9-.7 1.7-1.5 1.7"/><path d="m35 41l-7.2-17.4 1.2-.6 7.2 17.4z"/><path d="m35.5 42.4c-.9-.1-1.5-.9-1.5-1.8.1-.9.8-1.6 1.7-1.5.9.1 1.5.9 1.5 1.8-.1.9-.8 1.6-1.7 1.5"/><path d="m28.3 24.9c-.9-.1-1.5-.9-1.5-1.8s.8-1.6 1.7-1.5 1.5.9 1.5 1.8c-.1.9-.9 1.6-1.7 1.5"/><ellipse cx="32" cy="32" rx="3.4" ry="3.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f339.svg b/riot/emojione/svg/1f339.svg new file mode 100644 index 0000000..e7122eb --- /dev/null +++ b/riot/emojione/svg/1f339.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#75a843" d="m32.9 17.3l2.5 46.7h-5z"/><path d="m27.1 45.3c6.8 3.7 5.3 10.1 5.3 10.1s-5.6 5.1-12.5 1.4c-4.7-2.5-8.8-12.4-8.8-12.4s11.2-1.6 16 .9" fill="#83bf4f"/><path fill="#947151" d="m40.9 48.4l-7.3-2.1-.1 4z"/><path d="M25.6,22.2c3.7,9.5,5.2,14.5,11.7,14.5c6.5,0,16.3-16.6,6.9-22C35,9.4,35.3,2,35.3,2S19.5,6.7,25.6,22.2z" fill="#871212"/><path d="m45.2 24.2c-4.8 9.1-5.2 14.5-11.7 14.5s-18.3-21.8-7.8-25.1c13-4.1 16.3-8.9 16.3-8.9s10.3 5.9 3.2 19.5" fill="#991d1d"/><path d="m46 16c0-3.9-17-7.2-20-13.3 0 0-8.2 5.9-5.1 12 1.8 3.4 25 14.5 25.1 1.3" fill="#ad2727"/><path d="m36.8 19.5c10.4 13 4.8 20.8-3.7 20.8-8.5 0-17.8-8.2-15.4-17.8 2.4-9.6-1-17.8-1-17.8s12.2 4.9 20.1 14.8" fill="#cc3636"/><path d="m27.3 18.5c-11.8 11.9-2.1 21.7 6.4 21.7 8.5 0 15.4-8 15.4-17.8 0-9.8 2.6-15.8 2.6-15.8s-16 3.4-24.4 11.9" fill="#e24b4b"/><path d="m34 36.1c13.1-.2 7.4 5-1.1 5-20.9 0-20-18.3-20-18.3s9.4 13.4 21.1 13.3" fill="#75a843"/><path d="M34,36.1c-3.5,1.4-12.7,3.5-4.4,5.1C46,44.5,52.9,23.4,52.9,23.4S44.5,31.8,34,36.1z" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f33a.svg b/riot/emojione/svg/1f33a.svg new file mode 100644 index 0000000..5577887 --- /dev/null +++ b/riot/emojione/svg/1f33a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.6 35.1c-6.6-2.2-20.7-2.2-27.3 0-7.6 2.5-16.3 2.5-16.3 2.5s.9 24 18.5 21.2c6.1-1 9.7-3.8 11.5-5.8 1.8 2 5.3 4.8 11.5 5.8 17.6 2.8 18.5-21.2 18.5-21.2s-8.7 0-16.4-2.5" fill="#83bf4f"/><path d="m57.8 27c0-7.5-6-13.6-13.4-13.7-2-4.9-6.8-8.3-12.4-8.3-5.6 0-10.4 3.4-12.4 8.3-7.4.2-13.2 6.3-13.2 13.7 0 4 1.7 7.6 4.4 10.1-.6 1.5-.9 3.1-.9 4.8 0 7.6 6.1 13.7 13.5 13.7 3.3 0 6.3-1.2 8.6-3.1 2.3 1.9 5.3 3.1 8.6 3.1 7.5 0 13.5-6.1 13.5-13.7 0-1.6-.3-3.2-.8-4.6 2.8-2.6 4.5-6.2 4.5-10.3" fill="#ffc7ce"/><g fill="#ff506e"><path d="m33.3 48.5c1.6 1 3.4 1.5 5.4 1.5 5.8 0 10.6-4.8 10.6-10.7 0-.8-.1-1.5-.2-2.2-3.4-4.8-11.5-7.3-16.7-6.7 2 .9 5.9 7.8.9 18.1"/><path d="m14.9 37.6c-.1.5-.1 1.1-.1 1.7 0 5.9 4.7 10.7 10.6 10.7 2.2 0 4.2-.7 5.8-1.8 4.8-8.2 2.5-17.3 1.2-17.8-2.7 3.6-8 9-17.5 7.2"/><path d="m40.7 15.2c-1.9-2.8-5.1-4.7-8.7-4.7-3.2 0-6.1 1.5-8 3.8-1.4 5 1.6 11.9 8.4 16.2-1.7-4.2.6-12.6 8.3-15.3"/><path d="m42.4 17.1c-5.7 1.6-11.1 9-10.1 13.3 4.4-2.3 14.3-1.5 17.5 3.5 1.2-1.7 2-3.9 2-6.2 0-5.5-4.1-10-9.4-10.6"/><path d="m20.1 17.3c-4.7 1.1-8.1 5.3-8.1 10.4 0 2.9 1.2 5.6 3.1 7.5 7.4 1.1 14.8-3.6 17.3-4.8-4.6-.8-12.6-6.9-12.3-13.1"/></g><path d="m31.1 32.4l-7.1-9.5 2.6-1.7 7.1 9.5c1.4 1.8-1.3 3.3-2.6 1.7" fill="#83bf4f"/><path fill="#fabf49" d="m26 20.2h2.8l.9.9 1.4-1.3-1.4-1.4-.9.9h-2.8l-.5-.6 2.2-2.2h1.2v-1.9h-1.9v1.2l-2.2 2.3-.5-.6v-2.8l.8-.9-1.3-1.4-1.4 1.4.9.9v2.8l-.5.6-2.2-2.3v-1.2h-2v1.9h1.3l2.2 2.2-.5.6h-2.8l-.9-.9-1.4 1.4 1.4 1.3.9-.9h2.8l.5.6-2.2 2.2h-1.2v2h1.9v-1.3l2.2-2.2.5.5v2.9l-.9.9 1.4 1.3 1.3-1.3-.8-.9v-2.9l.5-.5 2.2 2.2v1.3h1.9v-2h-1.2l-2.2-2.2z"/><path fill="#ffd582" d="m27.3 22l2.8-.3 1 .7 1.1-1.5-1.5-1.2-.7 1-2.8.4-.6-.5 1.9-2.5 1.2-.2-.3-1.9-1.9.3.2 1.2-1.9 2.6-.6-.5-.4-2.8.8-1-1.5-1.2-1.2 1.5 1 .8.4 2.8-.5.6-2.5-1.9-.2-1.2-1.9.2.3 1.9 1.2-.1 2.5 1.9-.4.6-2.8.4-1-.8-1.2 1.6 1.6 1.2.7-1.1 2.8-.3.6.4-1.9 2.6-1.2.1.3 1.9 1.8-.2-.1-1.3 1.9-2.5.6.5.4 2.8-.8 1 1.5 1.2 1.2-1.6-1-.7-.4-2.8.5-.7 2.5 1.9.1 1.3 1.9-.3-.2-1.9-1.3.2-2.5-1.9z"/><path fill="#fc6" d="m28.8 24.6l2.8.3.8 1 1.4-1.2-1.2-1.5-1 .8-2.7-.3-.5-.6 2.4-2 1.2.1.2-1.9-1.9-.2-.1 1.3-2.4 2-.5-.6.2-2.9 1-.8-1.2-1.5-1.5 1.3.8.9-.2 2.9-.7.5-1.9-2.5.1-1.2-1.9-.2-.2 1.9 1.2.1 2 2.5-.6.5-2.8-.3-.8-1-1.4 1.2 1.2 1.5.9-.8 2.8.3.5.6-2.4 2-1.2-.1-.2 1.9 1.9.2.1-1.2 2.4-2.1.5.7-.3 2.8-.9.8 1.2 1.5 1.5-1.2-.8-1 .2-2.8.6-.5 2 2.4-.1 1.3 1.9.2.2-2-1.3-.1-1.9-2.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f33b.svg b/riot/emojione/svg/1f33b.svg new file mode 100644 index 0000000..3834929 --- /dev/null +++ b/riot/emojione/svg/1f33b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M39.4,49.5C32.7,54.7,30.9,64,30.9,64h2.4c9-13.1,26.5-22.2,26.5-22.2S48,42.9,39.4,49.5z" fill="#83bf4f"/><path fill="#75a843" d="m30.5 1l2.5 63h-5z"/><path d="m23.9 50.7c5.8 6.2 6.5 13.3 6.5 13.3h-2.4c-9-15.3-23.8-20.6-23.8-20.6s12.8 0 19.7 7.3" fill="#83bf4f"/><g fill="#f4bc58"><path d="m42.8 23.6c-5.3-1.4-7.9-.2-8.5 2s1.1 4.6 6.4 6 12.8-.8 12.8-.8-5.4-5.8-10.7-7.2"/><path d="m18.5 25.7c5.3 1.4 7.9.2 8.5-2 .6-2.2-1.1-4.6-6.4-6-5.3-1.4-12.8.8-12.8.8s5.4 5.7 10.7 7.2"/><path d="m29.7 12.5c-1.4 5.3-.2 7.9 2 8.5 2.2.6 4.6-1.1 6-6.4 1.3-5.3-.9-12.8-.9-12.8s-5.7 5.4-7.1 10.7"/><path d="m31.7 36.8c1.4-5.3.2-7.9-2-8.5-2.2-.6-4.6 1.1-6 6.4-1.4 5.3.8 12.8.8 12.8s5.8-5.4 7.2-10.7"/><path d="m38.5 15.3c-4.8 2.7-5.7 5.5-4.6 7.4 1.1 2 4 2.5 8.7-.3 4.8-2.7 8.5-9.7 8.5-9.7s-7.8-.1-12.6 2.6"/><path d="m22.8 33.9c4.8-2.7 5.7-5.5 4.6-7.4-1.1-2-4-2.5-8.7.3s-8.5 9.7-8.5 9.7 7.9.2 12.6-2.6"/><path d="m21.4 16.8c2.7 4.8 5.5 5.7 7.4 4.6 2-1.1 2.5-4-.3-8.7-2.7-4.8-9.7-8.5-9.7-8.5s-.2 7.8 2.6 12.6"/><path d="m40 32.5c-2.7-4.8-5.5-5.7-7.4-4.6-2 1.1-2.5 4 .3 8.7 2.7 4.8 9.7 8.5 9.7 8.5s.1-7.9-2.6-12.6"/></g><g fill="#fc6"><path d="m34.8 13.2c0 5.5-1.8 7.7-4.1 7.7s-4.1-2.2-4.1-7.7c-.1-5.5 4.1-12.2 4.1-12.2s4.1 6.7 4.1 12.2"/><path d="m26.5 36.1c0-5.5 1.8-7.7 4.1-7.7s4.1 2.2 4.1 7.7c0 5.5-4.1 12.2-4.1 12.2s-4.1-6.7-4.1-12.2"/><path d="m42.1 28.8c-5.5 0-7.7-1.8-7.7-4.1 0-2.3 2.2-4.1 7.7-4.1s12.2 4.1 12.2 4.1-6.7 4.1-12.2 4.1"/><path d="m19.2 20.5c5.5 0 7.7 1.8 7.7 4.1s-2.2 4.1-7.7 4.1-12.2-4.1-12.2-4.1 6.7-4.1 12.2-4.1"/><path d="m41.7 19.4c-3.9 3.9-6.8 4.1-8.4 2.5s-1.4-4.5 2.5-8.4c3.9-3.9 11.5-5.7 11.5-5.7s-1.7 7.8-5.6 11.6"/><path d="m19.7 29.8c3.9-3.9 6.8-4.1 8.4-2.5 1.6 1.6 1.4 4.5-2.5 8.4-4 3.8-11.6 5.6-11.6 5.6s1.8-7.6 5.7-11.5"/><path d="m35.9 35.6c-3.9-3.9-4.1-6.8-2.5-8.4 1.6-1.6 4.5-1.4 8.4 2.5 3.9 3.9 5.7 11.5 5.7 11.5s-7.8-1.7-11.6-5.6"/><path d="m25.5 13.6c3.9 3.9 4.1 6.8 2.5 8.4-1.6 1.6-4.5 1.4-8.4-2.5-3.8-3.9-5.6-11.6-5.6-11.6s7.6 1.8 11.5 5.7"/></g><g fill="#ffd68d"><path d="m31.7 12.5c1.4 5.3.2 7.9-2 8.5-2.2.6-4.6-1.1-6-6.4-1.4-5.3.8-12.8.8-12.8s5.8 5.4 7.2 10.7"/><path d="m29.7 36.8c-1.4-5.3-.2-7.9 2-8.5s4.6 1.1 6 6.4c1.4 5.3-.8 12.8-.8 12.8s-5.8-5.4-7.2-10.7"/><path d="m42.8 25.7c-5.3 1.4-7.9.2-8.5-2-.6-2.2 1.1-4.6 6.4-6 5.3-1.4 12.8.8 12.8.8s-5.4 5.7-10.7 7.2"/><path d="m18.5 23.6c5.3-1.4 7.9-.2 8.5 2 .6 2.2-1.1 4.6-6.4 6-5.2 1.4-12.7-.9-12.7-.9s5.3-5.7 10.6-7.1"/><path d="m40 16.8c-2.7 4.8-5.5 5.7-7.4 4.6-2-1.1-2.5-4 .3-8.7 2.7-4.8 9.7-8.5 9.7-8.5s.1 7.8-2.6 12.6"/><path d="m21.4 32.5c2.7-4.8 5.5-5.7 7.4-4.6 2 1.1 2.5 4-.3 8.7-2.7 4.8-9.7 8.5-9.7 8.5s-.2-7.9 2.6-12.6"/><path d="m38.5 33.9c-4.8-2.7-5.8-5.5-4.6-7.4s4-2.5 8.7.3c4.8 2.7 8.5 9.7 8.5 9.7s-7.8.2-12.6-2.6"/><path d="m22.8 15.3c4.8 2.7 5.7 5.5 4.6 7.4-1.1 2-4 2.5-8.7-.3s-8.5-9.7-8.5-9.7 7.9-.1 12.6 2.6"/></g><circle cx="30.7" cy="24.4" r="13.2" fill="#947151"/><circle cx="30.7" cy="24.4" r="10" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f33c.svg b/riot/emojione/svg/1f33c.svg new file mode 100644 index 0000000..15d4207 --- /dev/null +++ b/riot/emojione/svg/1f33c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#83bf4f"><path d="m43.8 63.4c-7.7 2-11-2-11-2s.6-6.2 8.4-8.2c5.3-1.4 15.3 1.4 15.3 1.4s-7.4 7.4-12.7 8.8"/><path d="m21 58c7.7 2 11-2 11-2s-.6-6.2-8.4-8.2c-5.3-1.4-15.3 1.4-15.3 1.4s7.4 7.4 12.7 8.8"/></g><path d="m32 28c0 3.8 0 36 0 36" fill="none" stroke="#75a843" stroke-width="4" stroke-miterlimit="10"/><g fill="#ffd68d"><path d="m50.3 19.6c-4.9 4.9-15 8.4-16.7 6.8-1.6-1.6 1.8-11.8 6.8-16.7 6.9-6.9 16.8 3 9.9 9.9"/><path d="m13.7 36.4c4.9-4.9 15-8.4 16.7-6.8 1.6 1.6-1.9 11.7-6.8 16.7-6.9 6.9-16.8-3-9.9-9.9"/><path d="m40.4 46.3c-4.9-4.9-8.4-15-6.8-16.7 1.6-1.6 11.8 1.8 16.7 6.8 6.9 6.9-3 16.8-9.9 9.9"/><path d="m23.6 9.7c4.9 4.9 8.4 15 6.8 16.7-1.6 1.6-11.8-1.9-16.7-6.8-6.9-6.9 3-16.8 9.9-9.9"/></g><g fill="#ffe9ab"><path d="m50.9 35c-7 0-16.6-4.7-16.6-7 0-2.3 9.6-7 16.6-7 9.8 0 9.8 14 0 14"/><path d="m13.1 21c7 0 16.6 4.7 16.6 7 0 2.3-9.6 7-16.6 7-9.8 0-9.8-14 0-14"/><path d="m25 46.9c0-7 4.7-16.6 7-16.6 2.3 0 7 9.6 7 16.6 0 9.8-14 9.8-14 0"/><path d="m39 9.1c0 7-4.7 16.6-7 16.6-2.3 0-7-9.6-7-16.6 0-9.8 14-9.8 14 0"/></g><circle cx="32" cy="28" r="9.6" fill="#f29a2e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f33d.svg b/riot/emojione/svg/1f33d.svg new file mode 100644 index 0000000..074139d --- /dev/null +++ b/riot/emojione/svg/1f33d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.3 48.4c.9 1 .9 2.6 0 3.5l-4.2 4.4c-.9 1-2.5 1-3.4 0l1.3-6.2 6.3-1.7" fill="#8cc63e"/><path d="m56.6 52.3c5.4-4.5 9.4-11.5-1.7-22.6-8.4-8.4-1-13.8-1-13.8s-25 0 2.7 36.4" fill="#64892f"/><path d="m11.3 7.3c-5.1 4.9 1.1 19.6 21.8 39.8 11.3 11 16.8 9.2 21.8 4.2s6.8-10.6-4.1-22c-20-20.9-34.6-27.1-39.5-22" fill="#c9ac1c"/><g fill="#ffe62e"><path d="m13.6 6.4c-1.8-1.4-5.3 1.8-2.6 4 1.6 1.4 5.3-1.9 2.6-4"/><path d="m17 9.7c-1.9-1.5-5.4 1.7-2.6 4.1 1.7 1.4 5.4-1.8 2.6-4.1"/><path d="m20.4 13c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.1-2 2.6-4"/><path d="m23.7 16.3c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m27.1 19.6c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m30.5 22.9c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m33.8 26.5c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.1-2 2.6-4"/><path d="m37.1 29.7c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.1-2 2.6-4"/><path d="m40.2 32.8c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.1-2 2.6-4"/><path d="m43.5 36.1c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m46.7 39.6c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.1-2.1 2.6-4"/><path d="m50.3 42.8c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.1-2 2.6-4"/><path d="m53.5 46.2c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m56.3 49c-1.1-.7-4.5 2.6-2.9 3.7.9.7 4.5-2.7 2.9-3.7"/><path d="m59.5 44.7c.5.9-.8 3.2-1.7 3.6-2.4 1.4.7-5.4 1.7-3.6"/><path d="m32.6 17.5c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m37.9 15.8c-1.7-1.3-4.8 1.5-2.3 3.6 1.6 1.4 4.9-1.6 2.3-3.6"/><path d="m41.5 19.3c-1.7-1.3-4.8 1.5-2.3 3.6 1.5 1.3 4.8-1.6 2.3-3.6"/><path d="m45.4 22.5c-1.9-1.5-5.4 1.7-2.6 4.1 1.8 1.5 5.5-1.8 2.6-4.1"/><path d="m49.3 26.4c-1.9-1.5-5.4 1.7-2.6 4.1 1.7 1.5 5.4-1.8 2.6-4.1"/><path d="m52.9 30.4c-1.9-1.5-5.4 1.7-2.6 4.1 1.8 1.4 5.5-1.9 2.6-4.1"/><path d="m56.5 34.9c-1.4-2-4.5-.4-2.5 2.7 1.2 1.8 4.6.3 2.5-2.7"/><path d="m36.1 21c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m39.6 24.6c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.2 5.2-2.1 2.6-4"/><path d="m43.1 28.1c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m46.6 31.6c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m50.2 35.2c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m53.6 38.6c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m57.1 42.2c-1.7-1.3-5.2 1.9-2.6 4 1.6 1.3 5.2-2 2.6-4"/><path d="m29.3 14.2c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.2-2 2.6-4"/><path d="m35 15.5c1.1-1.7-2.1-4.9-4-2.3-1.2 1.5 2.2 4.9 4 2.3"/><path d="m25.8 11c-1.7-1.3-5.2 1.9-2.6 4 1.5 1.3 5.1-2 2.6-4"/><path d="m22.3 8.4c-1.5-1.2-4.7 1.7-2.4 3.6 1.4 1.2 4.7-1.8 2.4-3.6"/><path d="m18.6 6.9c-1.2-1-3.2.7-1.3 2.4 1.1 1 3.2-.8 1.3-2.4"/><path d="m14.4 5.5c-.6.8 1 2.6 2 1.3.6-.7-1.1-2.5-2-1.3"/><path d="m16.5 5.3c-.2.4 1.5 1.8 2 .5.2-.8-1.7-1.1-2-.5"/><path d="m18.9 6c-.2.4 1.8 2.1 2.4.6.3-.9-2.1-1.2-2.4-.6"/><path d="m21.7 6.8c-.3.4 1.3 2.5 2.1 1.1.6-.8-1.7-1.6-2.1-1.1"/><path d="m58.6 42.5c.9-.1 1.5-4.8-1.4-4.2-1.7.4.1 4.3 1.4 4.2"/><path d="m27.7 9.8c-.8.7.8 4.8 3.3 2.4 1.5-1.5-2.1-3.3-3.3-2.4"/><path d="m24.3 8c-.6.5.7 3.9 2.7 1.9 1.2-1.2-1.7-2.7-2.7-1.9"/><path d="m21.5 28.7c-1.3-1.7 1.9-5.2 4-2.7 1.3 1.6-2 5.3-4 2.7"/><path d="m19.8 34c-1.3-1.7 1.5-4.8 3.6-2.3 1.3 1.6-1.6 4.9-3.6 2.3"/><path d="m25 32.2c-1.3-1.7 1.9-5.2 4-2.7 1.3 1.6-2 5.3-4 2.7"/><path d="m28.5 35.7c-1.3-1.7 1.9-5.2 4-2.7 1.3 1.6-2 5.3-4 2.7"/><path d="m18.2 25.4c-1.3-1.7 1.9-5.2 4-2.7 1.3 1.6-2 5.2-4 2.7"/><path d="m19.5 31c-1.7 1.1-4.9-2.1-2.3-4 1.6-1.1 4.9 2.3 2.3 4"/><path d="m15.1 21.8c-1.3-1.7 1.9-5.2 4-2.7 1.2 1.6-2.1 5.3-4 2.7"/><path d="m12.5 18.3c-1.2-1.5 1.7-4.7 3.6-2.4 1.2 1.4-1.8 4.7-3.6 2.4"/><path d="m11 14.6c-1-1.2.7-3.3 2.4-1.3.9 1.1-.9 3.2-2.4 1.3"/><path d="m9.6 10.4c.8-.6 2.5 1 1.3 2-.7.5-2.5-1.1-1.3-2"/><path d="m9.4 12.5c.4-.2 1.8 1.5.5 2-.8.2-1.1-1.8-.5-2"/><path d="m10.1 14.9c.4-.2 2.1 1.8.6 2.4-.9.2-1.2-2.1-.6-2.4"/><path d="m10.9 17.7c.4-.3 2.5 1.3 1.1 2.2-.8.5-1.7-1.8-1.1-2.2"/><path d="m13.9 23.7c.7-.8 4.8.8 2.4 3.3-1.5 1.5-3.4-2.1-2.4-3.3"/><path d="m12 20.4c.5-.6 3.9.7 1.9 2.7-1.2 1.2-2.6-1.8-1.9-2.7"/></g><path d="M2,30.5c0,0,22.3,8.2,30.5,20.9c5.4,8.3,16.1,11.4,22.6,0.7C35.5,25.7,2,30.5,2,30.5z" fill="#8cc63e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f33e.svg b/riot/emojione/svg/1f33e.svg new file mode 100644 index 0000000..5b02cf7 --- /dev/null +++ b/riot/emojione/svg/1f33e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#75a843"><path d="m10.7 27.5c-.6 3-.9 6.1-.8 9.1.1 3 .7 6 1.6 8.8 1 2.8 2.3 5.5 4 8.1.8 1.3 1.7 2.5 2.7 3.7 1 1.2 2 2.3 3.1 3.4-1.3-.8-2.5-1.8-3.6-2.9-1.1-1.1-2.2-2.3-3.1-3.5-1.9-2.5-3.4-5.3-4.4-8.3-1-3-1.5-6.2-1.4-9.3.1-3.2.7-6.3 1.9-9.1"/><path d="m51.3 28c-3.2 1.8-6.3 3.8-9.2 6-2.9 2.2-5.6 4.7-8 7.4-2.4 2.7-4.6 5.6-6.4 8.7-.9 1.6-1.8 3.2-2.5 4.8-.8 1.7-1.4 3.4-2 5.1.2-1.8.7-3.6 1.3-5.4.6-1.8 1.3-3.5 2.2-5.1 1.7-3.3 3.9-6.4 6.4-9.2 2.5-2.8 5.3-5.2 8.4-7.3 3.1-2 6.4-3.8 9.8-5"/></g><g fill="#f4bc58"><path d="m28.5 14.7c-1.5 1.8-4.1 1.2-4.1 1.2s-1-2.5.4-4.3c1.5-1.8 5-2.3 5-2.3s.1 3.7-1.3 5.4"/><path d="m23.2 15.1c.4 1.8-1.2 3.2-1.2 3.2s-2.1-.6-2.6-2.4c-.4-1.8 1-4.4 1-4.4s2.3 1.8 2.8 3.6"/><path d="m26 20.1c-1.8.4-3.2-1.2-3.2-1.2s.6-2.1 2.4-2.6 4.4 1 4.4 1-1.8 2.3-3.6 2.8"/><path d="m20.2 19.6c.6 1.7-.8 3.4-.8 3.4s-2.2-.3-2.8-2c-.6-1.7.4-4.5.4-4.5s2.6 1.4 3.2 3.1"/><path d="m23.6 24.2c-1.7.6-3.4-.8-3.4-.8s.3-2.2 2-2.8c1.7-.6 4.5.4 4.5.4s-1.4 2.6-3.1 3.2"/><path d="m18.2 24.4c.9 1.7-.5 3.6-.5 3.6s-2.3-.1-3.2-1.8c-.9-1.7 0-4.7 0-4.7s2.9 1.1 3.7 2.9"/><path d="m22.2 28.8c-1.7.9-3.6-.5-3.6-.5s.1-2.3 1.8-3.2c1.7-.9 4.7 0 4.7 0s-1.1 2.8-2.9 3.7"/><path d="m16.4 30c1.2 1.7.1 4 .1 4s-2.5.4-3.7-1.4c-1.2-1.7-.9-5.1-.9-5.1s3.3.8 4.5 2.5"/><path d="m21.6 34.1c-1.7 1.2-4 .1-4 .1s-.4-2.5 1.4-3.7 5.1-.9 5.1-.9-.8 3.2-2.5 4.5"/><path d="m15.3 36.7c1.5 1.6.6 4.2.6 4.2s-2.6.7-4.1-.9-1.6-5.2-1.6-5.2 3.6.2 5.1 1.9"/><path d="m21.2 40.2c-1.6 1.5-4.2.6-4.2.6s-.7-2.6.9-4.1 5.2-1.6 5.2-1.6-.2 3.6-1.9 5.1"/><path d="m24.5 15.8c-2.5 3.1-4.3 6.7-5.4 10.4-.5 1.9-1 3.8-1.3 5.7-.3 1.9-.5 3.9-.6 5.9-.1 2-.1 3.9-.1 5.9 0 2 .2 3.9.3 5.9.2 2 .4 3.9.7 5.9.3 2 .6 3.9 1 5.9-.6-1.9-1.1-3.8-1.5-5.8-.4-1.9-.8-3.9-1-5.9-.3-2-.4-4-.5-6-.1-2-.1-4 0-6 .1-2 .3-4 .7-6 .4-2 .8-3.9 1.5-5.8.6-1.9 1.5-3.7 2.5-5.5 1-1.6 2.2-3.2 3.7-4.6"/></g><g fill="#fc6"><path d="m51.7 8.7c-2.4 1.7-5.6.1-5.6.1s-.4-3.5 2-5.2c2.4-1.7 7.1-1.2 7.1-1.2s-1.1 4.6-3.5 6.3"/><path d="m45 7.4c-.1 2.4-2.7 3.6-2.7 3.6s-2.5-1.4-2.4-3.8c.1-2.4 2.7-5.2 2.7-5.2s2.5 3 2.4 5.4"/><path d="m46.8 14.5c-2.4-.1-3.6-2.7-3.6-2.7s1.4-2.5 3.8-2.4c2.4.1 5.2 2.7 5.2 2.7s-3 2.5-5.4 2.4"/><path d="m39.7 12c.2 2.4-2.2 3.9-2.2 3.9s-2.6-1.1-2.9-3.5c-.2-2.4 2-5.5 2-5.5s2.9 2.7 3.1 5.1"/><path d="m42.4 18.9c-2.4.2-3.9-2.2-3.9-2.2s1.1-2.6 3.5-2.9c2.4-.2 5.5 2 5.5 2s-2.7 2.9-5.1 3.1"/><path d="m35.6 17.3c.5 2.5-1.9 4.3-1.9 4.3s-2.9-.9-3.3-3.3c-.5-2.5 1.5-5.9 1.5-5.9s3.2 2.4 3.7 4.9"/><path d="m39.1 24.2c-2.5.5-4.3-1.9-4.3-1.9s.9-2.9 3.3-3.3c2.5-.5 5.9 1.5 5.9 1.5s-2.4 3.2-4.9 3.7"/><path d="m31.4 23.8c1 2.6-1.2 5-1.2 5s-3.2-.4-4.2-3 .6-6.7.6-6.7 3.9 2.1 4.8 4.7"/><path d="m36.5 30.6c-2.6 1-5-1.2-5-1.2s.4-3.2 3-4.2c2.6-1 6.7.6 6.7.6s-2.1 3.8-4.7 4.8"/><path d="m27.8 31.7c1.4 2.6-.6 5.4-.6 5.4s-3.5 0-4.8-2.6-.2-7.1-.2-7.1 4.2 1.7 5.6 4.3"/><path d="m34 38.2c-2.6 1.4-5.4-.6-5.4-.6s0-3.5 2.6-4.8c2.6-1.4 7.1-.2 7.1-.2s-1.7 4.2-4.3 5.6"/><path d="m46.4 8.8c-4.2 3-7.6 6.9-10.3 11.2-1.3 2.2-2.5 4.4-3.5 6.8-1 2.3-1.9 4.7-2.7 7.1-.8 2.4-1.5 4.9-2.1 7.4-.6 2.5-1.1 5-1.6 7.5-.4 2.5-.8 5.1-1.2 7.6-.3 2.5-.6 5.1-.8 7.7-.1-2.6-.1-5.2.1-7.7.2-2.6.4-5.2.7-7.7.3-2.6.8-5.1 1.4-7.6.6-2.5 1.2-5 2-7.5.8-2.5 1.8-4.9 2.9-7.3 1.1-2.4 2.4-4.6 3.8-6.8 1.5-2.2 3.1-4.2 5-6 1.9-1.9 4-3.5 6.3-4.7"/></g><path d="m39.4 39.5c-2.5.5-4.9 1.2-7.1 2.2-2.2 1-4.2 2.4-6 4.1-1.7 1.7-3.1 3.7-4.3 5.9-.6 1.1-1.1 2.2-1.5 3.4-.4 1.2-.8 2.4-1.1 3.6 0-1.3.1-2.5.4-3.8.3-1.2.6-2.5 1.1-3.7 1-2.4 2.4-4.6 4.3-6.4 1.9-1.8 4.1-3.2 6.6-4.1 2.5-.9 5.1-1.3 7.6-1.2" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f33f.svg b/riot/emojione/svg/1f33f.svg new file mode 100644 index 0000000..174e902 --- /dev/null +++ b/riot/emojione/svg/1f33f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m25.1 2c1.2 2.3 2.1 4.7 3 7.1.9 2.4 1.6 4.9 2.2 7.3 1.2 5 2 10 2.3 15.2.3 5.1.1 10.3-.7 15.4-.7 5.1-2 10.2-3.8 15.1l-3.4-1.2c4-9.1 6.1-19.1 6.1-29.2 0-5-.4-10.1-1.4-15-.5-2.5-1-5-1.8-7.4-.6-2.5-1.4-5-2.5-7.3" fill="#75a843"/><g fill="#83bf4f"><path d="m35.6 42c-5.2 2.2-4.8 7.3-4.8 7.3s3.9 4.4 9 2.2c3.6-1.5 8.1-8.5 8.1-8.5s-8.7-2.5-12.3-1"/><path d="m32.8 24.7c-3.9 3-.6 6.5-.6 6.5s5.9 2.2 9.8-.7c2.7-2 2.4-8.2 2.4-8.2s-9 .3-11.6 2.4"/><path d="m30.8 11.9c-2.9 2.2-.4 4.9-.4 4.9s4.4 1.7 7.3-.6c2-1.5 1.8-6.2 1.8-6.2s-6.7.3-8.7 1.9"/><path d="m29.2 33.3c4.9 2.2 2.2 6.2 2.2 6.2s-5.8 3.1-10.8.9c-3.4-1.5-4.6-7.5-4.6-7.5s9.8-1.2 13.2.4"/><path d="m30.5 18.3c3 2.9-.1 5.2-.1 5.2s-5.1.9-8.1-2c-2.1-2-1.3-6.8-1.3-6.8s7.5 1.6 9.5 3.6"/><path d="m30.1 6.6c1 2.6-1.8 3.4-1.8 3.4s-3.6-.6-4.6-3.2c-.7-1.8 1.4-4.8 1.4-4.8s4.3 2.8 5 4.6"/></g><g fill="#75a843"><path d="m31.4 39.4c-.5-.5-1.1-.8-1.7-1.1-.6-.3-1.2-.6-1.9-.9-1.3-.6-2.6-1.1-3.9-1.6-1.3-.5-2.6-1-3.9-1.5l-2-.7-2-.8c1.4.3 2.8.7 4.1 1.1 1.4.4 2.7.9 4 1.4 1.3.5 2.6 1.1 3.9 1.8.6.3 1.2.7 1.8 1.1.3.2.6.4.9.6.2.1.5.3.7.6"/><path d="m30.5 23.4c-.3-.5-.5-1-.8-1.4-.3-.5-.5-.9-.9-1.4-.7-.9-1.4-1.6-2.3-2.3-1.7-1.4-3.6-2.5-5.5-3.6 2.1.7 4.2 1.8 5.9 3.2.9.7 1.7 1.5 2.3 2.5.3.5.6 1 .8 1.5.2.5.3 1 .5 1.5"/><path d="m32.2 31.2c.3-.6.6-1.1 1-1.7.4-.5.8-1 1.2-1.5.9-1 1.8-1.8 2.9-2.6 1.1-.8 2.2-1.4 3.4-2 .6-.3 1.2-.5 1.8-.7.6-.2 1.3-.4 1.9-.5-1.2.5-2.4 1-3.5 1.6-1.1.6-2.2 1.3-3.3 2-1 .7-2 1.6-2.9 2.4-.9 1-1.8 2-2.5 3"/><path d="m30.3 16.8c.3-.9.8-1.8 1.4-2.6.6-.8 1.3-1.5 2.1-2.1.8-.6 1.7-1.1 2.7-1.5 1-.4 2-.6 3-.6-1.9.5-3.7 1.3-5.3 2.5-.8.6-1.5 1.2-2.1 1.9-.6.8-1.2 1.5-1.8 2.4"/><path d="m28.3 10c-.4-1.4-.7-2.8-1.2-4.2-.5-1.4-1.1-2.6-2-3.8.6.4 1.1 1 1.6 1.6.4.6.7 1.3 1 2 .2.7.4 1.4.5 2.2.1.7.1 1.5.1 2.2"/><path d="m30.9 49.4c.5-.6 1-1.1 1.6-1.6.6-.5 1.3-.9 1.9-1.3 1.3-.8 2.8-1.4 4.3-1.9 1.5-.5 3-.8 4.6-1 .8-.1 1.6-.2 2.3-.3.8-.1 1.6-.1 2.3-.1-.8.1-1.5.2-2.3.4-.8.1-1.5.3-2.3.4-1.5.3-3 .7-4.5 1.1-1.5.5-2.9 1-4.3 1.7-1.2.7-2.5 1.5-3.6 2.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f340.svg b/riot/emojione/svg/1f340.svg new file mode 100644 index 0000000..0b06567 --- /dev/null +++ b/riot/emojione/svg/1f340.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="31" rx="2.8" ry="2.8" fill="#699635"/><path d="m3.8 40c-5.9 9.8 4.3 12.8 8.8 9.5-3.4 5-.1 14.4 9.7 8.7 10.9-6.4 7.9-24.5 8.5-26.6-1.8.3-20.7-2.1-27 8.4" fill="#7bb246"/><path d="m12.6 49.5c1.4-1.6 2.9-3.1 4.3-4.7 1.5-1.5 3-3 4.5-4.5 1.5-1.5 3-3 4.6-4.4l2.3-2.2c.8-.7 1.6-1.4 2.4-2.1-.7.8-1.4 1.6-2.1 2.4l-2.2 2.3c-1.5 1.5-3 3-4.5 4.5-1.5 1.5-3 3-4.6 4.4-1.5 1.5-3 2.9-4.7 4.3" fill="#699635"/><path d="m60.2 22c5.9-9.8-4.3-12.8-8.8-9.5 3.4-5 .1-14.4-9.7-8.7-10.9 6.4-7.9 24.5-8.5 26.6 1.8-.3 20.7 2.1 27-8.4" fill="#7bb246"/><path d="m51.4 12.5c-1.4 1.6-2.9 3.1-4.3 4.7-1.5 1.5-3 3-4.5 4.5-1.5 1.5-3 3-4.6 4.4l-2.3 2.2c-.8.7-1.6 1.4-2.4 2.1.7-.8 1.4-1.6 2.1-2.4l2.2-2.3c1.5-1.5 3-3 4.5-4.5 1.5-1.5 3-3 4.6-4.4 1.5-1.5 3-2.9 4.7-4.3" fill="#699635"/><path d="m22.3 3.8c-10-5.8-13 4.2-9.7 8.7-5-3.3-14.6-.1-8.8 9.5 6.5 10.7 24.9 7.8 27 8.3-.3-1.7 2.2-20.3-8.5-26.5" fill="#83bf4f"/><path d="m12.6 12.5c1.6 1.4 3.2 2.8 4.7 4.2 1.6 1.4 3.1 2.9 4.6 4.4 1.5 1.5 3 3 4.5 4.5l2.2 2.3c.7.8 1.4 1.6 2.1 2.4-.8-.7-1.6-1.4-2.4-2.1l-2.3-2.1c-1.6-1.4-3.1-2.9-4.6-4.4-1.5-1.5-3-3-4.5-4.5-1.4-1.6-2.9-3.1-4.3-4.7" fill="#699635"/><path d="m41.7 58.2c10 5.8 13-4.2 9.7-8.7 5.1 3.3 14.6.1 8.8-9.5-6.5-10.7-24.9-7.8-27-8.3.3 1.7-2.2 20.3 8.5 26.5" fill="#83bf4f"/><g fill="#699635"><path d="m51.4 49.5c-1.6-1.4-3.2-2.8-4.7-4.2-1.6-1.4-3.1-2.9-4.6-4.4-1.5-1.5-3-3-4.5-4.5l-2.2-2.4c-.7-.8-1.4-1.6-2.1-2.4.8.7 1.6 1.4 2.4 2.1l2.3 2.2c1.6 1.4 3.1 2.9 4.6 4.4 1.5 1.5 3 3 4.5 4.5 1.4 1.6 2.9 3.1 4.3 4.7"/><path d="m32 36.8l2.5 22.7c.1 1.3-.9 2.4-2.2 2.5-1.4.1-2.6-.8-2.8-2.1 0-.2 0-.3 0-.5l2.5-22.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f341.svg b/riot/emojione/svg/1f341.svg new file mode 100644 index 0000000..35a4563 --- /dev/null +++ b/riot/emojione/svg/1f341.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.3 33.6c-1.1-.5-1.1-1.4-1-2.1l2.6-9.1-8.7 1.8c-.3 0-1.1 0-1.6-1.7l-.8-3.1-6 7c0 0-3.9 4.3-2.7-2.2l2.6-13.9-4.8 2.4c-.3.1-1.2.2-2.5-2.2l-4.4-8.5-4.4 8.4c-1.3 2.4-2.2 2.3-2.5 2.2l-4.8-2.4 2.6 13.9c1.2 6.5-2.7 2.2-2.7 2.2l-6-7-.8 3.1c-.4 1.7-1.3 1.8-1.6 1.7l-8.7-1.8 2.6 9.1c.1.7.1 1.6-1 2.1l-2.7 1.3c0 0 10 8 13.2 10.7.6.5 2.2 2.1 1.6 3.7l-1.2 3.6 13.6-2.1c.7-.1 4.6-.1 5.3 0l13.6 2.1-1.2-3.6c-.5-1.7 1-3.2 1.6-3.7 3.5-2.7 13.5-10.7 13.5-10.7l-2.7-1.2" fill="#ff8e66"/><path d="m56.8 35.5c-1.8.1-3.5.2-5.3.3-2.9.1-5.8.2-8.8.2 1.3-.9 2.5-1.9 3.8-2.8l7.3-5.3 3.6-2.7c1.2-.9 2.4-1.8 3.5-2.9-1.1 1-2.4 1.8-3.6 2.7l-3.7 2.5-7.2 4.7c.5-1.9 1-3.9 1.5-5.8l1-3.5c.3-1.2.7-2.4 1.1-3.5-.5 1.1-.9 2.3-1.4 3.4l-1.2 3.5c-.8 2.3-1.5 4.5-2.2 6.8-2.2 1.5-4.4 2.9-6.6 4.4-1.2.9-2.5 1.7-3.7 2.6-.6.4-1.2.9-1.8 1.4l-.4-13.9c1.4-3.1 3-6.1 4.9-8.9 1.9-2.9 4-5.8 6.3-8.5-2.4 2.6-4.6 5.4-6.7 8.2-1.6 2.3-3.2 4.7-4.5 7.2l-.7-21.3-.6 21.3c-1.3-2.5-2.9-4.9-4.5-7.2-2.1-2.9-4.3-5.6-6.7-8.2 2.3 2.7 4.3 5.6 6.3 8.5 1.8 2.9 3.5 5.8 4.9 8.9l-.4 13.8c-.6-.5-1.2-.9-1.8-1.4-1.2-.9-2.5-1.8-3.7-2.6-2.2-1.5-4.4-3-6.6-4.4-.7-2.3-1.4-4.5-2.2-6.8l-1.2-3.5c-.4-1.1-.8-2.3-1.4-3.4.5 1.1.8 2.3 1.1 3.5l1 3.5c.5 1.9 1 3.9 1.5 5.8l-7.2-4.7-3.7-2.4c-1.2-.9-2.5-1.7-3.6-2.7 1.1 1.1 2.3 2 3.5 2.9l3.6 2.7 7.3 5.3c1.3.9 2.5 1.9 3.8 2.8-2.9 0-5.8-.1-8.8-.2-1.8-.1-3.5-.2-5.3-.3-1.8-.2-3.5-.3-5.2-.7 1.7.5 3.5.7 5.2 1 1.8.2 3.5.4 5.3.6 3.4.3 6.7.5 10.1.7.7.5 1.4 1 2.1 1.6 1.1.9 2.2 1.7 3.3 2.6-1.9 1.9-3.7 3.8-5.6 5.7-1.1 1.1-2.1 2.1-3.2 3.1-1.1 1-2.2 2-3.4 2.8 1.3-.8 2.5-1.7 3.6-2.7 1.1-1 2.3-1.9 3.4-2.9 2-1.8 4-3.7 6-5.4.4.3.8.6 1.1 1 .4.4.8.8 1.1 1.2l-.6 17.9h3l-.5-17.9c.3-.4.7-.8 1.1-1.2.4-.3.7-.7 1.1-1 2 1.8 4 3.6 6 5.4 1.1 1 2.2 2 3.4 2.9 1.2.9 2.3 1.9 3.6 2.7-1.2-.8-2.3-1.8-3.4-2.8-1.1-1-2.2-2.1-3.2-3.1-1.9-1.9-3.7-3.8-5.6-5.7 1.1-.9 2.2-1.8 3.3-2.6.7-.5 1.4-1 2.1-1.6 3.4-.2 6.7-.4 10.1-.7 1.8-.2 3.5-.3 5.3-.6 1.8-.2 3.5-.4 5.2-1-1.7.4-3.5.6-5.2.7" fill="#c65c3c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f342.svg b/riot/emojione/svg/1f342.svg new file mode 100644 index 0000000..7ca377c --- /dev/null +++ b/riot/emojione/svg/1f342.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.5 31.3c0-.5.1-.9.3-1.3-1.9-1.1-3-2.7-3-4.5.1-2.8 3.3-5.1 7.4-5.5 1-9.4.8-17 .8-17s-37.1-1.3-50.6 11.7c-.2.2-.4.4-.7.7 2 1.2 3.3 3.2 3.3 5.5 0 3.7-3.5 6.8-7.8 6.8-1.3 0-2.5-.3-3.6-.8-3.9 11.7 12 15.1 15.5 18.5 4.5 4.3 9 28.4 31.7 6.5 4.1-4 6.9-10.2 8.7-16.8-1.2-1-2-2.3-2-3.8" fill="#ffd93b"/><path fill="#db9523" d="m24.5 40.9l4.6-4.6 19 11.7-18.3-12.5 7.6-7.6 17 7.5-16.3-8.3 7.1-7.2 12.9-.6-11.9-.4 15.8-15.9-16.5 15.2-.4-11.5-.6 12.5-7.4 6.9-8.6-15.8 7.8 16.5-8 7.3-12.9-17.6 12.2 18.3-4.8 4.4-12.9-7.6 12.2 8.3-12.5 11.5 2.3 2.2 11.9-12 8.6 11.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f343.svg b/riot/emojione/svg/1f343.svg new file mode 100644 index 0000000..c19539d --- /dev/null +++ b/riot/emojione/svg/1f343.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.6 38.4c-15.4 2.8-6.9 10.5-6.4 13.2.5 2.7-4.9 12.7 10.6 9.9 16.1-2.9 20.8-18.5 20.8-18.5s-19.7-5.6-25-4.6" fill="#83bf4f"/><path fill="#699635" d="m25.9 50.4l3.1-.6.7-9.8-.1 9.7 5.4-1.2 1-8-.5 7.9 4.7-1.2 3.1-4.6-2.4 4.5 12.7-4.1-12.6 4.6 5.3 3.1-6-3-4.7 1.3 4.5 7.2-5-7-5.4 1.4 3.5 9-4-8.9-3.1.7-.6 6.6.1-6.5-8.2 1.8-.3-1.4 8.3-1.5-2.4-6z"/><path d="m20.5 49.8c-2.7-1-5.2-2.9-7-5.4-1.8-2.5-2.8-5.6-3-8.7-.1-1.6-.1-3.1.2-4.7.3-1.6.7-3.1 1.3-4.6 1.2-3 3-5.7 5.3-7.9.3-.3.6-.5.9-.8l.5-.4.4-.3c.6-.5 1.3-1 1.9-1.4 1.3-.9 2.7-1.7 4.2-2.3 3-1.2 6.2-1.9 9.5-1.9 3.3.1 6.6.9 9.6 2.6 1.5.9 2.9 2.1 4 3.6 1.1 1.5 1.9 3.4 2 5.4.1 2-.5 3.9-1.4 5.5-.9 1.6-2.1 2.8-3.3 3.9-2.5 2.2-5.6 3.7-8.9 4.2-1.7.2-3.4.2-5.1-.2-1.7-.4-3.4-1.2-4.7-2.7-1.3-1.4-2-3.4-1.9-5.2 0-1.8.5-3.4 1.2-4.9 1.4-2.9 3.4-5.2 5.5-7.3 2.1-2.1 4.4-3.9 6.8-5.6 4.8-3.4 9.8-6.2 15.1-8.7-4.8 3.2-9.6 6.5-13.9 10.2-2.2 1.8-4.2 3.8-6.1 5.9-1.8 2.1-3.5 4.4-4.4 6.8-.5 1.2-.7 2.4-.7 3.5.1 1.1.5 2 1.2 2.7 1.4 1.4 4 1.8 6.3 1.3 2.4-.5 4.7-1.7 6.4-3.4 1.8-1.8 2.9-3.9 2.6-5.6-.2-1.8-1.6-3.5-3.6-4.6-2-1.2-4.5-1.7-6.9-1.8-5-.1-10.1 1.9-14 5.2-1.9 1.7-3.6 3.7-4.8 6-.6 1.2-1.1 2.4-1.4 3.6-.4 1.3-.6 2.6-.7 3.9-.1 2.6.3 5.3 1.4 7.8 1.2 2.4 3.1 4.6 5.5 6.3" fill="#42ade2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f344.svg b/riot/emojione/svg/1f344.svg new file mode 100644 index 0000000..853a49d --- /dev/null +++ b/riot/emojione/svg/1f344.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m54.7 13.7c-3.2-3.1-7-5.8-10.7-7.8-.2 5.6-5.5 10-12 10-6.5 0-11.8-4.5-12-10-3.8 2-7.6 4.7-10.7 7.8 2.1 3.3 1.1 8.8-2.3 12.8-1.5 1.7-3.2 2.9-4.9 3.4.9 17.5 13.9 16.8 29.9 16.8 16 0 29 .7 29.9-16.8-1.7-.6-3.4-1.7-4.9-3.4-3.4-4-4.4-9.6-2.3-12.8" fill="#e84d88"/><g fill="#fdeeff"><path d="m32 15.9c6.5 0 11.8-4.5 12-10-4.6-2.5-9-3.9-12-3.9s-7.4 1.4-12 3.9c.2 5.5 5.5 10 12 10"/><path d="m9.3 13.7c-4.3 4.1-7.3 9.1-7.3 14.2 0 .7 0 1.4.1 2.1 1.7-.6 3.4-1.7 4.9-3.4 3.4-4.1 4.4-9.7 2.3-12.9"/><path d="m54.7 13.7c-2.1 3.3-1.1 8.8 2.3 12.8 1.5 1.7 3.2 2.9 4.9 3.4 0-.7.1-1.3.1-2.1 0-5-3-10-7.3-14.1"/></g><path d="m50 41.5c0 4.3-8.1 5.2-18 5.2s-18-.9-18-5.2c0-4.2 8.6-8.1 18-8.1 9.4.1 18 3.9 18 8.1" fill="#a52355"/><path d="M47,64H17c0,0,2.8-8.2,3.7-14.9c1-7.6,1.5-13.9,11.3-13.9c9.8,0,10.3,6.3,11.3,13.9C44.2,55.8,47,64,47,64z" fill="#e2ccaf"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f345.svg b/riot/emojione/svg/1f345.svg new file mode 100644 index 0000000..b0f3efc --- /dev/null +++ b/riot/emojione/svg/1f345.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,31.6C62.8,47,48.9,60,32.1,60S0.4,46.2,2.1,30.9C4.5,9.4,20.4,8,32.1,8C39.2,8,60.2,1.8,62,31.6z" fill="#ef4d3c"/><path d="m11 27c6.2-9.6 16.8-6.8 19.6-10.4 0 6.9 5 3.5 7.5 6.6 3.2 4 4.4 11.1 8.2 12.5-3.7-7.9 2.3-7.6-6.1-18.2 4.5 2.8 6.8 0 12.9 2.5-5.3-8.4-13.6-6-13.6-6s5.2-4.8 9.6-2.3c-4.6-6.8-17.9 1.8-17.9 1.8s-5.5-9.4-17.3.5c6.9-2.8 14.5 0 14.5 0s-12.5-3.1-17.4 13" fill="#8cc63e"/><g fill="#64892f"><path d="M11,27c0,0,7.3-13.5,19.9-12.3C19.8,9.6,11,20.4,11,27z"/><path d="m13.9 14c0 0 9.2-6.9 17.3 0-2.4-8.4-14.7-4.5-17.3 0"/><path d="m33.2 14.9c12.2 5.6 8.1 12 13.1 21-3.4-7.5 5-21-13.1-21"/><path d="m28.4 14c0 0 2.8-4.2 3.8-9.4.1-.7 3.1-.6 3 .1-1 6.7 1.7 10.4 1.7 10.4s-2.1.7-4.7.7c-2.6.1-3.8-1.8-3.8-1.8"/></g><ellipse cx="33.7" cy="4.6" rx="1.5" ry=".6" fill="#8cc63e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f346.svg b/riot/emojione/svg/1f346.svg new file mode 100644 index 0000000..78a52f6 --- /dev/null +++ b/riot/emojione/svg/1f346.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m53.4 34.4c-7.6-9.1-19.5-10.3-30.6-21.1-6.7-6.5-18.5 6.4-15.3 12.6 4.3 8.2 14.2 23.9 23.1 30.8 19.1 14.7 38.2-3.9 22.8-22.3" fill="#7a2d77"/><path d="m10 27.9c2.2-2.6 1.6-6.9 1.6-6.9s1.7 2 4.2 2l.2-4.4c0 0 3.8-.1 7.1-3.8l-11.2-.4-3.9 6.4 2 7.1" opacity=".15"/><g fill="#83b730"><path d="m10.9 12.5l-.9 1.6c-2.4-1.6-5.8-6-2.4-12.1l1.5 1c-3.1 5.5 1.3 9.1 1.8 9.5"/><path d="m17.2 16.2c3.8.4 7.3-2.6 7.3-2.6s-2.6-3.6-6.5-4c-3.8-.4-7.1.7-7.3 2.5-.2 1.9 2.7 3.7 6.5 4.1"/><path d="m5.1 20.2c-.5 4 2 7.5 2 7.5s3.2-2.9 3.7-6.9c.5-4-.4-7.3-2-7.5-1.6-.1-3.2 3-3.7 6.9"/></g><path d="m8.7 18c2.5 3.5 7.9 3.5 7.9 3.5s1.2-5.7-1.3-9.3c-2.5-3.5-6.1-5.1-7.9-3.5-1.9 1.6-1.3 5.7 1.3 9.3" fill="#8cc63e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f347.svg b/riot/emojione/svg/1f347.svg new file mode 100644 index 0000000..e924fc2 --- /dev/null +++ b/riot/emojione/svg/1f347.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8cc63e"><path d="m38.8 22.1c5.8-4.7-.8-18.4-.8-18.4s-.6 2.6-2 5.8c-5.2-4.9-13.4-7.5-13.4-7.5s4.4 6.7 5.5 14.9c-3.5 0-6.2-.9-6.2-.9s9.2 12.4 16.9 6.1"/><path d="m48.3 40.6c-5.5 5.1-3 14.6-3 14.6s1-2.2 2.8-5.1c3 2.8 8.9 3.1 8.9 3.1s-2.1-4.4-1.3-10.8c2.7-.7 4.6-.6 4.6-.6s-4.7-8-12-1.2"/></g><g fill="#843dc9"><ellipse cx="44.7" cy="23" rx="6.6" ry="6.9"/><ellipse cx="25.3" cy="26" rx="6.1" ry="6.4"/><ellipse cx="30.9" cy="55.6" rx="6.1" ry="6.4"/><ellipse cx="42.8" cy="48.5" rx="4.7" ry="4.9"/></g><ellipse cx="35.4" cy="27.8" rx="8" ry="8.4" fill="#ab7dcc"/><g fill="#6f43a3"><ellipse cx="29.4" cy="36.3" rx="7" ry="7.4"/><ellipse cx="43.4" cy="37.9" rx="7" ry="7.4"/></g><ellipse cx="19.2" cy="39.8" rx="8.9" ry="9.3" fill="#843dc9"/><ellipse cx="22" cy="51.7" rx="6.1" ry="6.4" fill="#6f43a3"/><path d="m15.1 49.8c6.8-4.5 33.7-16.5 38.7-34.7" fill="none" stroke="#9fc427" stroke-width="2" stroke-miterlimit="10"/><g fill="#ab7dcc"><ellipse cx="32" cy="44.7" rx="8.3" ry="8.7"/><path d="m18.3 52.2c0 4.7-3.6 8.5-8.1 8.5-4.5 0-8.1-3.8-8.1-8.5 0-4.7 3.6-8.5 8.1-8.5 4.4 0 8.1 3.8 8.1 8.5"/><ellipse cx="53.3" cy="32.1" rx="8.7" ry="9.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f348.svg b/riot/emojione/svg/1f348.svg new file mode 100644 index 0000000..d715aaa --- /dev/null +++ b/riot/emojione/svg/1f348.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.3 29.2c-3.5-14.5-19.5-23.8-35.7-20.6-16.2 3.2-26.4 17.6-22.9 32.2 3.5 14.6 19.5 23.8 35.7 20.6 16.2-3.2 26.4-17.6 22.9-32.2" fill="#f5f0ae"/><g fill="#d0d18b"><path d="m29.3 8.3c-.2-.1-.3-.1-.5-.2-1.1.1-2.1.3-3.2.5-1.1.2-2.1.5-3.1.8-.1.1-.3.2-.4.4 1.3.5 2.7 1.1 4.2 1.8 1-1.2 2.1-2.3 3-3.3"/><path d="m23.4 16.8l4.8 2.7 3.2-4.3-4.8-2.5z"/><path d="m25.3 25.8l5.3 3.3 3.2-5-5.2-3.1z"/><path d="m27.7 35.9l5.3 3.4 3.3-5.1-5.3-3.5z"/><path d="m38.7 44.2l-5.3-3.3-3.2 5 5.2 3.2z"/><path d="m40.6 53.3l-4.8-2.8-3.2 4.3 4.8 2.5z"/><path d="m34.7 61.7c.2.1.3.1.5.2 1.1-.1 2.2-.3 3.2-.5s2.1-.5 3.2-.8c.1-.1.2-.2.4-.3-1.3-.5-2.7-1.1-4.2-1.8-1.1 1.1-2.1 2.2-3.1 3.2"/><path d="m33.6 14.1l2.8-3.7-4.7-2-2.9 3.3z"/><path d="m31 19.7l5.2 3.2 2.9-4.5-5.1-3z"/><path d="m41.8 27.8l-5.2-3.3-3.2 4.9 5.3 3.4z"/><path d="m44.3 37.9l-5.2-3.4-3.2 5.1 5.2 3.3z"/><path d="m46.2 47.5l-4.8-3-3.2 4.8 4.8 2.8z"/><path d="m43.2 53.4l-3.3 4 4.2 1.9 3.4-3.6z"/><path d="m38.9 8.7c-1.4-.3-2.8-.5-4.2-.6 1.2.5 2.3 1 3.5 1.5.2-.3.5-.6.7-.9"/><path d="m35.9 14.4l5.1 2.9 2.6-3.9-5-2.7z"/><path d="m38.6 23.3l5.1 3.3 2.8-4.6-5.1-3.2z"/><path d="m44.2 28.2l-3.1 5 5.1 3.4 2.9-5z"/><path d="m51.2 41.4l-4.7-3.2-3.1 5 4.7 3z"/><path d="m52.5 50.3l-4.1-2.6-3.3 4.5 4.2 2.4z"/><path d="m46.9 58.4c1.2-.6 2.4-1.4 3.5-2.1-.3-.2-.7-.4-1.1-.5-.7.9-1.5 1.8-2.4 2.6"/><path d="m46.4 11.3c-1.7-.8-3.4-1.5-5.2-2-.1.2-.3.4-.4.6 1.6.8 3.3 1.7 4.9 2.7.1-.5.4-.9.7-1.3"/><path d="m46.1 13.8l-2.5 3.9 4.9 3.3 2.3-4.1z"/><path d="m53.6 25.8l-4.6-3.3-2.6 4.5 4.8 3.4z"/><path d="m51.6 32l-2.8 4.9 4.5 3.1 2.6-4.8z"/><path d="m57.5 44.4l-3.9-2.8-3 4.8 4 2.6z"/><path d="m51.6 54.6c.2.1.4.2.7.4 1.4-1.2 2.7-2.4 3.8-3.8-.4-.3-.8-.5-1.3-.8-1.1 1.4-2.1 2.8-3.2 4.2"/><path d="m52.6 15.4c-1.4-1.2-2.9-2.2-4.5-3.2-.2.3-.3.5-.5.8 1.6 1 3.1 2 4.6 3.1.2-.2.3-.4.4-.7"/><path d="m55.1 24.9l1.8-4-4.2-3.4-2.1 4z"/><path d="m59.3 29.6l-3.8-3.3-2.3 4.5 4.2 3.3z"/><path d="m55.2 40.3l3.8 2.8 2.2-4.6-3.5-2.9z"/><path d="m56.4 49.1c.3.2.5.3.8.5 1-1.4 1.9-3 2.6-4.6-.2-.2-.4-.3-.7-.5-.8 1.6-1.7 3.1-2.7 4.6"/><path d="m60.9 27.9c-.6-2-1.5-3.9-2.5-5.7-.4 1-.8 2-1.3 3.1 1.3 1.1 2.5 2.2 3.6 3.3.1-.2.1-.5.2-.7"/><path d="m61.6 30.6c-.2-.2-.4-.4-.6-.6-.5 1.4-1.1 2.8-1.7 4.3.9.8 1.8 1.6 2.6 2.3.2-1.9.1-3.9-.3-6"/><path d="m20.8 16.6l3.2-4-4.1-1.9-3.4 3.6z"/><path d="m17.8 22.5l4.8 3 3.2-4.8-4.8-2.8z"/><path d="m19.7 32.1l5.2 3.4 3.2-5.1-5.2-3.3z"/><path d="m30.6 40.6l-5.3-3.5-3.1 5 5.2 3.4z"/><path d="m33 50.2l-5.2-3.1-2.9 4.5 5.1 3z"/><path d="m30.3 55.9l-2.8 3.6 4.8 2.1 2.9-3.3z"/><path d="m17 11.6c-1.2.6-2.4 1.3-3.4 2.1.3.2.7.3 1 .5.8-.9 1.6-1.8 2.4-2.6"/><path d="m11.5 19.7l4.1 2.6 3.3-4.6-4.2-2.3z"/><path d="m12.8 28.6l4.6 3.2 3.2-5-4.7-3.1z"/><path d="m19.8 41.7l3.1-4.9-5.1-3.4-2.9 4.9z"/><path d="m25.4 46.7l-5.1-3.4-2.8 4.6 5.1 3.3z"/><path d="m28.1 55.6l-5.1-3-2.6 4 5 2.6z"/><path d="m25.1 61.3c1.4.3 2.9.5 4.4.6-1.2-.5-2.4-1-3.6-1.6-.3.4-.6.7-.8 1"/><path d="m12.4 15.4c-.2-.1-.4-.2-.6-.4-1.4 1.2-2.7 2.4-3.8 3.8.4.3.8.5 1.3.8 1-1.4 2-2.8 3.1-4.2"/><path d="m6.5 25.6l3.9 2.8 3-4.8-4-2.6z"/><path d="m12.4 38l2.8-4.9-4.5-3.2-2.6 4.8z"/><path d="m17.6 43l-4.8-3.4-2.4 4.5 4.6 3.4z"/><path d="m17.9 56.2l2.5-3.9-5-3.3-2.2 4z"/><path d="m17.6 58.7c1.7.8 3.4 1.5 5.2 2 .2-.2.3-.4.5-.6-1.6-.8-3.3-1.7-4.9-2.7-.3.5-.5.9-.8 1.3"/><path d="m7.6 20.9c-.3-.2-.5-.3-.8-.5-1 1.4-1.9 3-2.6 4.6.2.2.4.3.7.5.8-1.6 1.7-3.1 2.7-4.6"/><path d="m8.8 29.7l-3.8-2.9-2.2 4.7 3.5 2.9z"/><path d="m4.7 40.3l3.8 3.3 2.3-4.5-4.2-3.2z"/><path d="m8.9 45.1l-1.8 4 4.1 3.4 2.2-4z"/><path d="m11.3 54.6c1.4 1.2 2.9 2.3 4.5 3.2.2-.3.3-.5.5-.8-1.6-1-3.1-2-4.6-3.1-.1.2-.2.4-.4.7"/><path d="m2.1 33.3c-.1 2 0 4 .3 6.1.2.2.4.4.6.6.5-1.4 1.1-2.8 1.7-4.3-1-.9-1.8-1.7-2.6-2.4"/><path d="m3.1 42.1c.6 2 1.5 3.9 2.5 5.7.4-1 .8-2 1.3-3.1-1.3-1.1-2.5-2.2-3.6-3.3-.1.2-.2.4-.2.7"/></g><path d="m35.6 11.8h-11.3c.6-.7 2.7-1.7 6.2-1.7 3.1 0 5.1.8 5.1 1.7" fill="#8cc63e"/><g fill="#64892f"><path d="m35.6 11.8c.1 1-2.5 2.5-5.7 2.8-3.2.3-5.9-.8-6-1.7-.1-1 1.4-3 6.1-1.5 3.1 1 5.6-.5 5.6.4"/><path d="m29.3 12.5c-.6-3.5-1.2-4.5-1.9-5.8-.2-.4-.5-.9-.8-1.5l1.9-1c.3.6.5 1 .7 1.4.8 1.5 1.5 2.6 2.1 6.5l-2 .4"/></g><g fill="#8cc63e"><path d="m26.6 5.5l2.2.2c.8 1.5-.2 3 .5 6.9 0-.1-2-5.8-2.7-7.1"/><path d="m32 6.4c-2.5.2-5-.3-7.7-.9-3-.7-6.8-1.3-10.6-1.3-1.6 0-1.7-2.2-.1-2.2 4.9 0 8 .6 11.1 1.3 3.7.8 6.8 1.6 9.9.2l.7 2c-1.1.6-2.2.8-3.3.9"/></g><ellipse transform="matrix(.941-.3384.3384.941.5018 12.091)" cx="34.9" cy="4.6" rx=".7" ry="1.1" fill="#ceff80"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f349.svg b/riot/emojione/svg/1f349.svg new file mode 100644 index 0000000..0f7a175 --- /dev/null +++ b/riot/emojione/svg/1f349.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2.1,50.3c16.2,15.6,43.6,15.6,59.8-0.1L32,2L2.1,50.3z" fill="#f55"/><path d="M6,44l-1.1,1.6C16.7,56,41.7,60.1,59.2,45.5L58,44C42.9,55.5,21.1,55.5,6,44z" fill="#ceff80"/><path d="M4.9,45.6L2,50.2c16.2,15.7,43.7,15.7,60-0.1l-2.8-4.6C43.7,58,20.3,58,4.9,45.6z" fill="#8cc63e"/><g fill="#3e4347"><path d="m16 38.5c0-1.3 2.4-4.6 2.4-4.6s2.5 3.4 2.5 4.7c0 1.3-1 2.3-2.4 2.3-1.4 0-2.5-1.1-2.5-2.4"/><path d="m28.4 43.1c0-1.3 2.4-4.6 2.4-4.6s2.5 3.4 2.5 4.7c0 1.3-1 2.3-2.4 2.3-1.4 0-2.5-1.1-2.5-2.4"/><path d="m36.5 31.5c0-1.3 2.4-4.6 2.4-4.6s2.5 3.4 2.5 4.7c0 1.3-1 2.3-2.4 2.3-1.4 0-2.5-1.1-2.5-2.4"/><path d="m44.7 42.5c0-1.3 2.4-4.6 2.4-4.6s2.5 3.4 2.5 4.7c0 1.3-1 2.3-2.4 2.3-1.4-.1-2.5-1.1-2.5-2.4"/><path d="m27.2 20.9c0-1.3 2.4-4.6 2.4-4.6s2.4 3.4 2.4 4.7c0 1.3-1 2.3-2.4 2.3-1.3-.1-2.4-1.1-2.4-2.4"/></g><g fill="#64892f"><path d="m28.2 54.7v7.1c2.5.2 5 .2 7.5 0v-7.1c-2.4.2-5 .2-7.5 0"/><path d="m10.6 49.4l-2.2 5.8c2.1 1.4 4.4 2.5 6.7 3.5l2.3-6.2c-2.3-.8-4.6-1.9-6.8-3.1"/><path d="m53.4 49.4c-2.2 1.2-4.5 2.3-6.9 3.1l2.3 6.2c2.3-1 4.6-2.1 6.7-3.5l-2.1-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f34a.svg b/riot/emojione/svg/1f34a.svg new file mode 100644 index 0000000..a6c48c5 --- /dev/null +++ b/riot/emojione/svg/1f34a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m30.2 11.5l.2-1.2c0 0 3.6 2.1 7.8.7l.2.8c-4.5 1.5-8.1-.2-8.2-.3" fill="#628c2c"/><ellipse cx="27.9" cy="38.1" rx="25.9" ry="23.9" fill="#f29a2e"/><path d="m22 18.9c.2-1.2 4.7-.6 4.7-.6s-.2-3 .6-3.2c.7-.1 2 2.9 2 2.9s3.6-1.4 4.1-.5c.4.8-2.5 2.6-2.5 2.6s3.8 3.1 3 4.1c-.8 1.1-4.9-2.2-4.9-2.2s-2.6 4.4-3.7 3.8c-1.1-.6.9-5 .9-5s-4.4-.7-4.2-1.9" fill="#7fb539"/><g fill="#ffc44a"><path d="m18.6 29.1l-.8.8.8.8.8-.8-.8-.8"/><path d="m12.6 28.6l-.8.8.8.8.8-.8-.8-.8"/><path d="m7.8 28.6l-.8.8.8.8.7-.8-.7-.8"/><path d="m22 32.4l-.8.8.8.8.7-.8-.7-.8"/><path d="m18.6 36.5l-.8.8.8.8.8-.8-.8-.8"/><path d="m13.4 36.5l-.8.8.8.8.7-.8-.7-.8"/><path d="m7.4 37l-.8.8.8.8.8-.8-.8-.8"/><path d="m16 32.6l-.8.8.8.8.8-.8-.8-.8"/><path d="m10.8 32.6l-.8.8.8.8.7-.8-.7-.8"/><path d="m5.5 32.6l-.8.8.8.8.8-.8-.8-.8"/><path d="m21.4 25.6l-.8.8.8.8.8-.8-.8-.8"/><path d="m15.6 25.6l-.8.8.8.8.8-.8-.8-.8"/><path d="m10 24.8l-.8.8.8.8.8-.8-.8-.8"/><path d="m19.2 22.5l-.8.8.8.8.8-.8-.8-.8"/><path d="m17 19.5l-.8.8.8.8.8-.8-.8-.8"/><path d="m13.4 21.7l-.8.8.8.8.7-.8-.7-.8"/><path d="m16 40.5l-.8.8.8.8.8-.8-.8-.8"/><path d="m10.5 40.5l-.8.8.8.8.7-.8-.7-.8"/></g><path d="m47.4 6.2c6.5 5.4 14.6 3.9 14.6 3.9s-13.1 16.5-24 9.7c-10.2-6.3 0-21.4 9.4-13.6" fill="#8cc63e"/><path d="m30.5 2.8l-1.9.9c2.9 9.3-.7 14.5-1.5 15.4-1.2 1.2 1.6 2.3 2.9.6.2-.3 4-5.9.5-16.9" fill="#628c2c"/><ellipse cx="29.6" cy="3.3" rx="1" ry="1.3" fill="#8cc63e"/><path d="m33.8 11.8c1-.7 2.1-1.3 3.3-1.7 1.2-.4 2.4-.6 3.7-.6 2.5 0 4.9.7 7.2 1.3 2.3.6 4.7 1 7 .9 2.4-.1 4.7-.8 7-1.7-1 .6-2.2 1.1-3.3 1.6-1.2.4-2.4.7-3.6.8-2.5.3-5-.1-7.3-.7-2.4-.6-4.6-1.4-7-1.5-2.4-.1-4.8.5-7 1.6" fill="#7fb539"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f34b.svg b/riot/emojione/svg/1f34b.svg new file mode 100644 index 0000000..e6dafd4 --- /dev/null +++ b/riot/emojione/svg/1f34b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.2 4.6c-7.2-3.3-12.2 6.9-12.2 6.9s2.1 4.7 5.3 5.7c11.6 3.5 21.6-12 21.6-12s-7.6 2.7-14.7-.6" fill="#77a836"/><path d="m9 7.9c-.4 0-.5 1.5-.1 1.5 6.4 1.4 9 6.1 9.2 7 .3 1.2 2.1-.1 1.5-1.6-.2-.2-3.9-6.1-10.6-6.9" fill="#947151"/><path d="m57.8 57.8c.3.3 1.5.6 2.1 0 .6-.6.3-1.9 0-2.2-.3-.3-1 0-1.5.6-.6.7-.8 1.4-.6 1.6" fill="#64892f"/><path d="m17.3 19.1c-.5-.7.1-2.3 1.5-3.8 1.4-1.4 3-2.1 3.7-1.6 8.4-5.4 21.2-2.9 30.4 6.6 8.2 8.5 11.1 20 7.8 28.6 1.6 2.1 1.1 5.7-1.4 8.3-2.5 2.6-6 3.2-8 1.5-8.3 3.3-19.4.4-27.6-8.1-9.2-9.6-11.7-22.8-6.4-31.5" fill="#ffe62e"/><path d="M18.7,16.1C17.2,11.9,11,9.5,11,9.5S-1.6,16.6,3,25.8C7.5,34.9,4.6,45,4.6,45S23.8,31,18.7,16.1z" fill="#8cc63e"/><path d="m11 9.5c-.9 1.2-1.7 2.5-2.3 3.9-.6 1.4-1 3-1.2 4.6-.4 3.2 0 6.3.2 9.4.3 3 .3 6.1-.2 9.1-.5 3-1.6 5.9-2.9 8.6.8-1.2 1.5-2.6 2.2-4 .6-1.4 1.1-2.9 1.5-4.4.7-3.2.7-6.4.4-9.5-.3-3.1-.7-6.2-.4-9.2.2-3 1.3-5.9 2.7-8.5" fill="#7fb539"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f34c.svg b/riot/emojione/svg/1f34c.svg new file mode 100644 index 0000000..9f7af93 --- /dev/null +++ b/riot/emojione/svg/1f34c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m46.6 42.2c-6.5 9.4-16.8 1.2-10.3-8.2 11.8-11.3 11.5-27.4 15.9-28 5.6-.7 9.8 16-5.6 36.2" fill="#f2eacc"/><path d="m5.5 40.7l-3.5 3c.9 1.3 1.8 2.6 2.9 3.8 1.7-1.4 3.6-3.2 4.9-5-1.5-.4-3-1-4.3-1.8" fill="#9c6525"/><path d="m34.2 20.1c-7.2-1.8-11.9 3.2-11.9 3.2 6.8-3.6 16.8 4.6 15.4 7.3-5.1 9.2-15.2 14.5-25.7 12.5-.8-.1-1.5-.3-2.2-.6-1.3 1.7-3.2 3.6-4.9 5 14.1 7 30.9 2.9 38.1-11.3 2.9-5.7-2.7-14.5-8.8-16.1" fill="#fee801"/><path d="m62 43.2c0 0-1.4-5.7-8.2-8.4-6.6-2.7-10.8 1.4-10.8 1.4-5.4 9.7-16 15.2-27 13.1-3.3-.6-6.3-1.9-9-3.7-.7.7-1.4 1.3-2.1 1.9 3.8 4.3 8.9 7.4 14.8 8.6 9.3 1.8 18.3-1.6 24.4-8.3 9.4-11.9 17.9-4.6 17.9-4.6" fill="#e5c900"/><path d="m34.5 41.1c2.9-1.8 4.4-4.9 3.3-6.9-.3-.6-.9-1-1.6-1.3-.2.3-.4.5-.5.8.5.2 1 .5 1.2 1 .9 1.6-.3 4.1-2.7 5.6-2.3 1.5-4.9 1.4-5.8-.1-.4.2-.7.4-1.1.6 1.1 2 4.3 2.1 7.2.3" fill="#f5f5f5"/><path d="m28.4 40.2c1 1.5 3.5 1.5 5.8.1 2.4-1.5 3.6-4 2.7-5.6-.3-.5-.7-.8-1.2-1-2 2.7-4.5 4.9-7.3 6.5" fill="#42ade2"/><path d="m62 43.2c.2 5.3-3.7 13.7-10.3 14.8-6.7 1.1 8.4-19.9-1.7-24.1 0 0 11.6 0 12 9.3" fill="#fee801"/><path d="m35.9 20.8c-14.8-6.2-19.9 12.6-12.4 10.4 2.6-.8 4.2-6.4 12.4-10.4" fill="#e5c900"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f34d.svg b/riot/emojione/svg/1f34d.svg new file mode 100644 index 0000000..350c11f --- /dev/null +++ b/riot/emojione/svg/1f34d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#64892f"><path d="m16.9 11.2c4.9 4.9 5.7 8.2 4.1 9.8-1.6 1.6-4.9.8-9.8-4.1-4.9-4.9-7.9-13.6-7.9-13.6s8.7 3 13.6 7.9"/><path d="m23.7 14.1c2.9 6.3 2.5 9.7.5 10.6-2 .9-4.9-.9-7.8-7.2-2.9-6.3-2.8-15.5-2.8-15.5s7.2 5.8 10.1 12.1"/><path d="m29.6 21.2c-2.9 6.3-5.7 8.2-7.7 7.2-2-.9-2.5-4.3.4-10.6s10-12.2 10-12.2.2 9.4-2.7 15.6"/><path d="m26.9 18c-.4 6.9-2.4 9.7-4.6 9.6-2.2-.1-3.9-3.1-3.5-10 .4-6.9 4.9-15 4.9-15s3.6 8.4 3.2 15.4"/><path d="m33.2 24c-4.4 5.3-7.7 6.4-9.4 4.9-1.7-1.4-1.2-4.8 3.2-10.1s12.9-9.1 12.9-9.1-2.2 9-6.7 14.3"/><path d="m14.1 23.7c6.3 2.9 9.7 2.5 10.6.5.9-2-.9-4.9-7.2-7.8-6.3-2.9-15.5-2.8-15.5-2.8s5.8 7.2 12.1 10.1"/><path d="m21.2 29.6c6.3-2.9 8.2-5.7 7.2-7.7-.9-2-4.3-2.5-10.6.4s-12.2 10-12.2 10 9.4.2 15.6-2.7"/><path d="m18 26.9c6.9-.4 9.7-2.4 9.6-4.6-.1-2.2-3.1-3.9-10-3.5s-15 4.9-15 4.9 8.4 3.6 15.4 3.2"/><path d="m24 33.2c5.3-4.4 6.4-7.7 4.9-9.4-1.4-1.7-4.8-1.2-10.1 3.2-5.3 4.4-9.1 12.9-9.1 12.9s9-2.2 14.3-6.7"/></g><path d="m55.9 31.2c8 8 5.8 16.8-1.1 23.6-6.8 6.8-15.7 9.1-23.6 1.1-8-8-14.7-25.8-7.9-32.6 6.8-6.8 24.6-.1 32.6 7.9" fill="#b46137"/><g fill="#e7a74f"><path d="m47.1 47.1c-1 1-2.1 4.3-1.2 5.2.9.9 4.3-.2 5.2-1.2 1-1 2.1-4.3 1.2-5.2s-4.3.2-5.2 1.2"/><path d="m52.9 52.9c-1 1-1.8 4.6-.9 5.5.9.9 7.4-5.6 6.5-6.5-1-.8-4.7 0-5.6 1"/><path d="m34.8 34.8c-1 1-2.1 4.3-1.2 5.2.9.9 4.3-.2 5.2-1.2 1-1 2.1-4.3 1.2-5.2s-4.2.3-5.2 1.2"/><path d="m40.9 40.9c-1 1-2.1 4.3-1.2 5.2s4.3-.1 5.3-1.1 2.1-4.3 1.2-5.2-4.3.2-5.3 1.1"/><path d="M29,29c-1,1-2.1,4.3-1.2,5.2S32,34,33,33c1-1,2.1-4.3,1.2-5.2S29.9,28,29,29z"/><path d="m29.1 52c-1.4 1.4-1 5.8 3.6 7 1.2.3 3.5-7.4 2.6-8.4-1.7-1.7-5.3.5-6.2 1.4"/><path d="m36.4 57.7c-3.5 3.5 2.4 5.7 4.7 3.4.9-.9 1.2-3.4.3-4.3-.9-1-4.1 0-5 .9"/><path d="m38.1 49c-1 1-2.1 5.1-1.2 6s5.2 0 6.2-1c1-1 1.5-4.8.6-5.7-.8-.9-4.6-.3-5.6.7"/><path d="m44.3 55.2c-1 1-1.8 4.7-.9 5.6 1.7 1.7 4.9.3 5.8-.6 1-1 1.5-4.9.6-5.8-.8-1-4.5-.2-5.5.8"/><path d="m32.2 43.1c-1 1-2.4 4.8-1.5 5.7.9.9 5.1-.1 6.1-1.1 1-1 1.8-4.7.9-5.6s-4.5 0-5.5 1"/><path d="m20.6 31.3c-1 1-1.4 3.7-.5 4.6.9.9 3.6.5 4.6-.5 1-1 2.1-4.3 1.2-5.2s-4.4.1-5.3 1.1"/><path d="m20.6 38.1c-.9.9.8 6.5 1.6 5.6.9-.9 2.4-4.7 1.5-5.6s-2.2-.9-3.1 0"/><path d="m24.3 45.3c-1.2 1.2-1.4 6.2 1.8 6.7 1.2.2 4.2-6.4 3.2-7.3-.8-.9-4.1-.2-5 .6"/><path d="m26.2 37.1c-1 1-1.8 4.7-.9 5.6.9.9 4.8.2 5.7-.8 1-1 1.6-4.7.7-5.6s-4.5-.2-5.5.8"/><path d="m52 29.1c1.4-1.4 5.8-1 7 3.6.3 1.2-7.4 3.5-8.4 2.6-1.7-1.7.5-5.3 1.4-6.2"/><path d="m57.7 36.4c3.5-3.5 5.7 2.3 3.4 4.7-.9.9-3.4 1.2-4.3.3-1-.9 0-4.1.9-5"/><path d="m49 38.1c1-1 5.1-2.1 6-1.2s0 5.2-1 6.2c-1 1-4.8 1.5-5.7.6-.9-.8-.3-4.6.7-5.6"/><path d="m55.2 44.3c1-1 4.7-1.8 5.6-.9 1.7 1.7.3 4.9-.6 5.8s-4.9 1.5-5.8.6c-1-.8-.2-4.5.8-5.5"/><path d="m43.1 32.2c1-1 4.8-2.4 5.7-1.5.9.9-.1 5.1-1.1 6.1s-4.7 1.8-5.6.9c-.9-.9 0-4.5 1-5.5"/><path d="m31.3 20.6c1-1 3.7-1.4 4.6-.5s.5 3.6-.5 4.6c-1 1-4.3 2.1-5.2 1.2-1-1 .1-4.4 1.1-5.3"/><path d="m38.1 20.6c.9-.9 6.5.8 5.6 1.7-.9.9-4.7 2.4-5.6 1.5s-.9-2.3 0-3.2"/><path d="m45.3 24.3c1.2-1.2 6.2-1.4 6.7 1.8.2 1.2-6.4 4.2-7.3 3.2-.9-.8-.2-4.1.6-5"/><path d="m37.1 26.2c1-1 4.7-1.8 5.6-.9s.2 4.8-.8 5.7c-1 1-4.7 1.6-5.6.7-.9-.8-.2-4.5.8-5.5"/></g><g fill="#84b234"><path d="m21.9 18.4c3.7 3.7 4.5 6.1 3.6 7-1 1-3.3.2-7-3.6s-6.5-10-6.5-10 6.2 2.9 9.9 6.6"/><path d="m25.7 31.5c3.3-2.7 3.8-4.8 2.7-6.1-1.1-1.3-3.4-1.2-6.7 1.4-3.3 2.7-5.3 8.2-5.3 8.2s6-.8 9.3-3.5"/><path d="m21.4 24.2c4.7 0 6.9 1.2 7.2 2.7.4 1.5-1.3 2.8-6 2.8-4.6.1-10.8-2.7-10.8-2.7s4.9-2.8 9.6-2.8"/><path d="m20.9 20.4c4.8 1.3 6.7 3 6.6 4.5-.1 1.5-2.1 2.1-6.9.8-4.8-1.3-10.4-5.5-10.4-5.5s5.9-1.1 10.7.2"/><path d="m31.5 25.7c-2.7 3.3-4.8 3.8-6.1 2.7-1.3-1.1-1.2-3.4 1.4-6.7 2.7-3.3 8.2-5.3 8.2-5.3s-.8 6-3.5 9.3"/><path d="m24.2 21.4c0 4.7 1.2 6.9 2.7 7.2 1.5.4 2.8-1.3 2.8-6 0-4.7-2.7-10.9-2.7-10.9s-2.8 5-2.8 9.7"/><path d="m20.4 20.9c1.3 4.8 3 6.7 4.5 6.6 1.5-.1 2.1-2.1.8-6.9-1.3-4.8-5.5-10.4-5.5-10.4s-1.1 5.9.2 10.7"/></g><path d="m29.8 22.5c-1.1-2.2-3.3-3.8-3.3-3.8s-.8 1.7-1.2 3.6c-2.1-.9-5.6-2.7-5.6-2.7s1.8 3.5 2.7 5.6c-2 .4-3.6 1.2-3.6 1.2s1.7 2.2 3.8 3.3c-1.6 2.3-2.5 5.5-2.5 5.5s6.2-1.8 9.8-5.4c3.6-3.6 5.4-9.8 5.4-9.8s-3.2.9-5.5 2.5" fill="#8cc63e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f34e.svg b/riot/emojione/svg/1f34e.svg new file mode 100644 index 0000000..1353d5d --- /dev/null +++ b/riot/emojione/svg/1f34e.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.4 4.9c1.1 2.5-.5 10.9-.5 10.9s-7.5-4.4-8.6-6.9c-1.1-2.5 0-5.4 2.5-6.5 2.5-1.1 5.5 0 6.6 2.5" fill="#83bf4f"/><path d="m33.3 16.3h-2.6c0-4.3 2.4-11.6 12-11.6v2.6c-8.7 0-9.4 8.2-9.4 9" fill="#947151"/><path d="M32,15.8C24.7,8.4,3,8.1,3,29.3C3,42.7,18.8,62,25.7,62c3.1,0,4.2-2,6.1-2c1.8,0,2.4,2,6.4,2 + C45.1,62,61,42.8,61,29.3C61,8.1,39.3,8.4,32,15.8z" fill="#ef4d3c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f34f.svg b/riot/emojione/svg/1f34f.svg new file mode 100644 index 0000000..27561bc --- /dev/null +++ b/riot/emojione/svg/1f34f.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.4 4.9c1.1 2.5-.5 10.9-.5 10.9s-7.5-4.4-8.6-6.9c-1.1-2.5 0-5.4 2.5-6.5 2.5-1.1 5.5 0 6.6 2.5" fill="#64892f"/><path d="m33.3 16.3h-2.6c0-4.3 2.4-11.6 12-11.6v2.6c-8.7 0-9.4 8.2-9.4 9" fill="#947151"/><path d="M32,15.8C24.7,8.4,3,8.1,3,29.3C3,42.7,18.8,62,25.7,62c3.1,0,4.2-2,6.1-2c1.8,0,2.4,1.9,6.4,1.9 + C45.1,62,61,42.8,61,29.3C61,8.1,39.3,8.4,32,15.8z" fill="#8cc63e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f350.svg b/riot/emojione/svg/1f350.svg new file mode 100644 index 0000000..467a86e --- /dev/null +++ b/riot/emojione/svg/1f350.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.6 27.8c-3.8-6.2-3.5-16.7-13.4-16.7-9.9 0-8.9 10.5-12.6 16.7-2.7 4.5-8.2 10.6-8.2 17.2 0 22.7 42.5 22.7 42.5 0-.1-6.6-5.6-12.7-8.3-17.2" fill="#ced74d"/><path d="m35.2 2.1c-.1-.3-1.1.2-1 .5 1.7 4.7-.4 8.3-.9 8.8-.7.7.9 1.3 1.6.4.1-.2 2.4-5 .3-9.7" fill="#947151"/><path d="M21.2,5.2C16.6,10.7,9,13.1,9,13.1S24.5,16.9,32.6,9c2.3-2.2,1.9-6,1.9-6S25.8-0.3,21.2,5.2z" fill="#8cc63e"/><path d="m34.6 3c-1.1 0-2.2.1-3.3.4-1.2.2-2.3.6-3.5 1-2.2 1-4.2 2.3-6.2 3.6-1.9 1.3-3.9 2.4-6.1 3.3-2.1.9-4.4 1.4-6.6 1.8 1.1-.1 2.2-.2 3.3-.4 1.1-.2 2.3-.6 3.4-1 2.3-.8 4.4-2 6.4-3.3 2-1.3 3.8-2.6 5.9-3.6 2.2-1 4.5-1.6 6.7-1.8" fill="#7fb539"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f351.svg b/riot/emojione/svg/1f351.svg new file mode 100644 index 0000000..574969a --- /dev/null +++ b/riot/emojione/svg/1f351.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34.4 9.1c0-2.3-3.4-2.7-3.4-.5 0 2.6-1.4 3.6-1.4 5 0 1.8 4 2.1 4 .2 0-1.8.8-1.6.8-4.7" fill="#8e6244"/><path d="m33.1 8.8c2.8 0-2.3-3.6-2.3-.3 0 2.6-1.9 3.9-1.1 5.6 1.8-2.2.5-5.3 3.4-5.3" fill="#a87451"/><path d="m4.4 32.7c0-16.2 13.2-26.1 27.2-18.5 14.4-7.3 30.4 2.3 30.4 18.5 0 14.5-8 22.7-18 26.4-3.6 1.3-10.4 3-14.2 2.9-2.8-.1-2.7-1.5-5.4-2.3-10.9-3.2-20-11.6-20-27" fill="#ff9463"/><path d="m32.4 8.3c-.1 0-.2-.1-.3-.2-2-3-3.9-2.3-3.9-2.3l-.2-1c0 0 2.4-.8 4.8 2.6.1.2.1.6 0 .7-.2.2-.3.2-.4.2" fill="#8cc63e"/><path d="M24.3,2.1C14.3,1.1,4,12.6,4,12.6s7-2.6,13-1.4c6.1,1.3,11.5-6,11.5-6S27.1,2.3,24.3,2.1z" fill="#7fb539"/><path d="M15,10C9.8,17,2,21,2,21s14.9,1.5,23.9-8.8c2.6-2.9,2.6-7.1,2.6-7.1S20.3,2.9,15,10z" fill="#8cc63e"/><path d="m28.5 5.1c-1 .2-2.2.5-3.3 1-1.2.5-2.3 1.1-3.5 1.9-2.3 1.5-4.5 3.4-6.5 5.1-2.1 1.8-4.2 3.4-6.4 4.8-2.3 1.2-4.5 2.3-6.8 3.1 1.1-.3 2.2-.6 3.3-1.1 1.1-.5 2.3-1 3.5-1.7 2.4-1.3 4.6-3.1 6.7-4.8 2.1-1.8 4.1-3.6 6.3-5.1 2.2-1.5 4.5-2.5 6.7-3.2" fill="#7fb539"/><path d="m40.5 33.9c.4 3.6.3 7.1-.7 10.5-1 3.4-2.8 6.5-5.8 9.2 4.2-1.6 7.3-4.7 8.9-8.2 1.7-3.5 2.2-7.5 1.7-11.4-.5-3.9-1.9-7.9-4.3-11.5-2.3-3.6-5.8-7.1-10.3-9.1 3.5 3 5.7 6.4 7.4 9.9 1.6 3.4 2.6 7 3.1 10.6" fill="#d97448"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f352.svg b/riot/emojione/svg/1f352.svg new file mode 100644 index 0000000..d43aca6 --- /dev/null +++ b/riot/emojione/svg/1f352.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61 39.2c3.7 10.5-4.1 18.4-12.8 19.9-8.7 1.4-18.4-3.6-18.8-14.7-.6-14.7 10.1-13 13.9-13.6 6.3-1 13-5 17.7 8.4" fill="#d33b23"/><path d="M45.1,34C43,31.6,34.5,24,37.4,9" fill="none" stroke="#83bf4f" stroke-width="2" stroke-miterlimit="10"/><path d="m38.5 42.2c2.2 12.3-8.1 19.8-18.1 19.8-10 0-19.8-7.4-18.2-19.8 2.2-16.5 13.8-12.6 18.2-12.6 7.2-.1 15.4-3.3 18.1 12.6" fill="#ef4d3c"/><path d="m20.4 33c0-4.1 6-25.5 34.1-30" fill="none" stroke="#9fc427" stroke-width="2" stroke-miterlimit="10"/><path d="m13.3 31.6c2.3.3 4.4.7 6.5.9 1.1.1 2.1.2 3.2.3 1.1.1 2.2.1 3.3.1-1 .6-2.1.9-3.3 1.1-1.1.2-2.3.2-3.4.1-1.1-.1-2.3-.4-3.3-.8-1.1-.5-2.2-1-3-1.7" fill="#ce0f00"/><path d="m38.5 34.8l5.6-1.3c.9-.2 1.8-.5 2.7-.7l2.8-.9c-.6.8-1.4 1.5-2.3 1.9-.9.5-1.9.9-2.8 1.1-1 .2-2 .4-3 .4-1.1 0-2.1-.1-3-.5" fill="#a51000"/><path d="m46.3 7.1c-3.8 8.9 9.3 21.2 9.3 21.2s-1.3-9.3 2.2-17.6c2.3-5.2-3.3-8.7-3.3-8.7s-6.3.6-8.2 5.1" fill="#64892f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f353.svg b/riot/emojione/svg/1f353.svg new file mode 100644 index 0000000..709e0db --- /dev/null +++ b/riot/emojione/svg/1f353.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m23.5 13.1c1.5-3.9 12.2-11.1 12.2-11.1s3.4 12.9 2 16.7c-1.4 3.9-5.7 5.7-9.6 4.2-4-1.6-6-6-4.6-9.8" fill="#8cc63e"/><path d="m17.2 20.8c-1.8-3.7.8-16.5.8-16.5s11.4 6.7 13.1 10.5c1.7 3.7 0 8.1-3.9 9.8-3.8 1.6-8.3-.1-10-3.8" fill="#64892f"/><path d="m20.7 17.2c-3.7-1.7-16.4.8-16.4.8s6.7 11.5 10.4 13.3c3.7 1.7 8.1 0 9.7-3.9 1.7-3.9 0-8.5-3.7-10.2" fill="#8cc63e"/><path d="m13 23.6c-3.8 1.5-11 12.3-11 12.3s12.8 3.4 16.7 2c3.8-1.4 5.7-5.8 4.1-9.7-1.6-4-5.9-6-9.8-4.6" fill="#64892f"/><path d="m51.5 16.7c11.5 11.6 12.8 36.7 7.4 42.2-5.5 5.5-30.4 4.1-42-7.5-8.5-8.5-4.5-21.4 4.3-30.3 8.9-8.9 21.8-12.9 30.3-4.4" fill="#ef4d3c"/><g fill="#fff0f0"><path d="m40.7 15.7c-.5 0-1 .2-1.3.6-.5.8-.1 2 1.1 2.8.6.4 1.2.6 1.7.6.5 0 1-.2 1.2-.6.5-.8.1-2-1.1-2.8-.4-.4-1-.6-1.6-.6"/><path d="m44.4 33.2c-.3 0-.6.1-.9.3-.7.6-.5 1.9.3 3 .6.7 1.4 1.1 2 1.1.3 0 .6-.1.9-.3.7-.6.5-1.9-.3-3-.6-.7-1.4-1.1-2-1.1"/><path d="m35.8 24.6c-.3 0-.6.1-.9.3-.7.6-.6 1.9.3 3 .6.7 1.4 1.1 2 1.1.3 0 .6-.1.9-.3.7-.6.6-1.9-.3-3-.6-.7-1.4-1.1-2-1.1"/><path d="m50.5 25.6c-.2 0-.4 0-.6.1-.8.4-.9 1.8-.3 3 .5.9 1.3 1.5 2.1 1.5.2 0 .4 0 .6-.1.8-.4.9-1.8.3-3-.5-.9-1.4-1.5-2.1-1.5"/><path d="m55.1 38.8c-.1 0-.2 0-.3 0-.9.2-1.4 1.5-1 2.8.3 1.2 1.1 2 2 2 .1 0 .2 0 .3 0 .9-.2 1.4-1.5 1-2.8-.4-1.2-1.2-2-2-2"/><path d="m53.9 51.2c-.3 0-.7.1-.9.3-.7.6-.5 2 .4 3 .6.7 1.4 1 2 1 .3 0 .7-.1.9-.3.7-.6.5-2-.4-3-.6-.6-1.3-1-2-1"/><path d="m31.7 49.7c-.5 0-1 .2-1.3.6-.5.8 0 2 1.1 2.8.6.4 1.2.6 1.7.6.5 0 1-.2 1.3-.6.5-.8 0-2-1.1-2.8-.5-.4-1.1-.6-1.7-.6"/><path d="m20.2 46.4c-.6 0-1 .2-1.3.6-.5.8 0 2 1.1 2.8.6.4 1.2.6 1.7.6.5 0 1-.2 1.3-.6.5-.8 0-2-1.1-2.8-.6-.4-1.2-.6-1.7-.6"/><path d="m41.6 54.5c-.8 0-1.4.3-1.7.9-.3.9.4 2 1.7 2.5.4.2.9.3 1.3.3.8 0 1.4-.3 1.7-.9.3-.9-.4-2-1.7-2.5-.4-.2-.9-.3-1.3-.3"/><path d="m43.9 44.5c-.6 0-1.1.2-1.4.7-.5.8.1 2 1.3 2.7.5.3 1.1.5 1.6.5.6 0 1.1-.2 1.4-.7.5-.8-.1-2-1.3-2.7-.6-.3-1.1-.5-1.6-.5"/><path d="m33.2 37.4c-.5 0-.9.2-1.1.5-.6.7-.2 2 .8 2.9.6.5 1.3.7 1.9.7.5 0 .9-.2 1.1-.5.6-.7.2-2-.8-2.9-.6-.4-1.3-.7-1.9-.7"/><path d="m24.5 23.9c-.4 0-.7.1-1 .4-.7.7-.4 2 .5 2.9.6.6 1.3.9 2 .9.4 0 .7-.1 1-.4.7-.7.4-2-.5-2.9-.6-.6-1.3-.9-2-.9"/><path d="m21.7 34.7c-.5 0-.9.2-1.2.5-.6.7-.2 2 .9 2.9.6.5 1.3.7 1.8.7.5 0 .9-.2 1.2-.5.6-.7.2-2-.9-2.9-.6-.4-1.3-.7-1.8-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f354.svg b/riot/emojione/svg/1f354.svg new file mode 100644 index 0000000..3460875 --- /dev/null +++ b/riot/emojione/svg/1f354.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 44.5c0 12-10.9 17.5-29.8 17.5-19 0-29.8-5.5-29.8-17.5 0-17.6 59.6-17.6 59.6 0" fill="#e7a74f"/><path d="m61.8 36.2c0 12-10.8 17.5-29.7 17.5-18.8 0-29.7-5.5-29.7-17.5.1-17.5 59.4-17.5 59.4 0" fill="#ba8443"/><path d="m2.4 36.5c0-5 5.9-11.9 29.8-11.9s29.8 7 29.8 11.9c0 9.1-8.4 15.7-29.8 15.7-21.4 0-29.8-6.6-29.8-15.7" fill="#826046"/><path d="M3,31.3c0-5,5.8-11.9,29.2-11.9c23.4,0,29.2,7,29.2,11.9c0,9.1-8.2,15.7-29.2,15.7S3,40.4,3,31.3z" fill="#68472c"/><path d="m3.2 24.8c1.4-3 5.1-3.2 17.1 1.9 12 5.1 14.3 7.8 12.9 10.9-2.6 5.5-9.7 9.6-20.5 5s-12.2-12.2-9.5-17.8" fill="#ef4d3c"/><path d="m4.2 21.4c1.4-3 5.1-3.2 17.1 1.9 12 5.1 14.3 7.8 12.9 10.9-2.6 5.5-9.7 9.6-20.5 5-10.8-4.6-12.2-12.3-9.5-17.8" fill="#d33b23"/><path d="m29.3 34.5c-.8-3.2 2-5.5 14.9-8.3s16.4-2 17.2 1.3c1.5 5.9-1.5 13.2-13.1 15.7-11.5 2.5-17.6-2.8-19-8.7" fill="#ef4d3c"/><path d="m28 31.3c-.8-3.2 2-5.5 14.9-8.3 12.9-2.8 16.4-2 17.2 1.3 1.5 5.9-1.5 13.2-13.1 15.7-11.5 2.5-17.5-2.8-19-8.7" fill="#d33b23"/><path fill="#ffe62e" d="m9.7 30.9l20 19.2 19.6-19.2z"/><path d="m60.7 25.9c0 0 .9 3.4 0 4.4-.8.9-3.3-.1-4.4.7-1 .7-.7 3.4-1.9 4-1.1.6-3.2-1.1-4.4-.6-1.1.4-1.5 3.1-2.7 3.5-1.2.3-3-1.7-4.2-1.5-1.2.2-2 2.8-3.3 3-1.2.2-2.7-2.1-4-2-1.2.1-2.4 2.5-3.7 2.5-1.3 0-2.4-2.5-3.7-2.5-1.3-.1-2.7 2.2-4 2-1.3-.2-2.1-2.7-3.3-3-1.3-.3-3 1.8-4.2 1.5-1.2-.4-1.6-3-2.7-3.5-1.2-.5-3.4 1.2-4.4.6-1.2-.6-.9-3.3-1.9-4-1.1-.8-3.6.2-4.4-.7-.9-1 0-4.4 0-4.4h57.2" fill="#8cc63e"/><path d="M62,23.4c0,6.5-13.3,9.7-29.8,9.7c-16.5,0-29.8-3.2-29.8-9.7C2.4,11.6,15.7,2,32.2,2C48.7,2,62,11.6,62,23.4z + " fill="#e7a74f"/><g fill="#ffc17a"><path d="m16.3 14.4l-1.6 1.5-1.5-1.5 1.5-1.5z"/><path d="m23.7 12l-1.5 1.5-1.5-1.5 1.5-1.5z"/><path d="m28 18.8l-1.6 1.5-1.5-1.5 1.5-1.5z"/><path d="m33.2 13.4l-1 1-1-1 1-1z"/><path d="m51.9 17.3l-1 1-1-1 1-1z"/><path d="m58.1 18.3l-1 1-1-1 1-1z"/><path d="m46.4 11l-1 1-1-1 1-1z"/><path d="m15.9 9.7l-1 1-1-1 1-1z"/><path d="m10.5 14.4l-1 1-1-1 1-1z"/><path d="m16.8 21.1l-1 1-1.1-1 1.1-1z"/><path d="m28.5 5.7l-1 1-1.1-1 1.1-1z"/><path d="m38 4.7l-1 1-1-1 1-1z"/><path d="m22.2 6.7l-1 1-1-1 1-1z"/><path d="m50.9 9.1l-1 1-1-1 1-1z"/><path d="m40 21.7l-1.5 1.5-1.5-1.5 1.5-1.5z"/><path d="m37.6 14l-1.5 1.5-1.5-1.5 1.5-1.5z"/><path d="m43.2 8.2l-1.5 1.5-1.5-1.5 1.5-1.5z"/><path d="m47.6 14.7l-1.5 1.5-1.6-1.5 1.6-1.5z"/><path d="m54 12.5l-1.5 1.5-1.6-1.5 1.6-1.5z"/><path d="m49.1 21.3l-1.5 1.5-1.5-1.5 1.5-1.5z"/><path d="m12.5 18.7l-1.5 1.5-1.5-1.5 1.5-1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f355.svg b/riot/emojione/svg/1f355.svg new file mode 100644 index 0000000..4bd17b7 --- /dev/null +++ b/riot/emojione/svg/1f355.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62.3 47.1c-.1-24.4-20.8-45-45.2-45.1l-14.8 60 60-14.9" fill="#f6da77"/><path d="m54.5 49l2.1-.4c-1-19-14.6-38.9-41-40.9l-.3 2c20.2 2.6 36.7 19 39.2 39.3" fill="#860d16"/><path d="M56.5,48.6l5.7-1.4C62.3,22.8,41.5,2,16.9,2l-1.4,5.7C39,9.9,54.3,25.3,56.5,48.6z" fill="#c98e52"/><g fill="#83bf4f"><path d="m13.5 41.7c-1.7 0-3.2-.6-4.4-1.8-.5-.5-.5-1.3 0-1.7.5-.5 1.3-.5 1.7 0 1.4 1.4 3.9 1.4 5.3 0 .7-.7 1.1-1.6 1.1-2.6 0-1-.4-1.9-1.1-2.6-.5-.5-.5-1.3 0-1.7.5-.5 1.3-.5 1.7 0 1.2 1.2 1.8 2.7 1.8 4.4 0 1.7-.6 3.2-1.8 4.4-1.1.9-2.7 1.6-4.3 1.6"/><path d="m38.6 21.9c0 .2 0 .3 0 .5-.1.3-.2.5-.5.7-.3.2-.6.2-.8.1-.8-.2-1.6 0-2.3.4-.7.4-1.2 1.1-1.4 1.9-.4 1.6.7 3.3 2.3 3.7.6.1 1 .8.8 1.3-.1.6-.7 1-1.3.8-2-.5-3.5-2-4-4-.2-.8-.2-1.6 0-2.3.3-1.4 1.2-2.5 2.4-3.3 1.2-.8 2.6-1 4-.7.3.2.7.5.8.9"/><path d="m43.9 50.9c-.2 0-.3 0-.5 0-.3-.1-.5-.2-.6-.5-.1-.2-.2-.5-.1-.8.2-.7.1-1.5-.3-2.2-.4-.7-1-1.2-1.8-1.4-1.5-.4-3.2.6-3.6 2-.1.5-.8.9-1.3.7-.6-.2-.9-.7-.7-1.3.5-1.8 2-3.3 3.9-3.6.7-.1 1.5-.1 2.2.1 1.3.3 2.4 1.2 3 2.3.7 1.2.8 2.5.5 3.8 0 .5-.3.8-.7.9"/></g><g fill="#b21725"><path d="m37.1 36.2c1.4 4.1-.8 8.5-5 9.9-4.2 1.4-8.7-.8-10-4.9-1.4-4.1.8-8.5 5-9.9 4.1-1.4 8.6.8 10 4.9"/><path d="m49.6 37c.8 2.5-.5 5.1-3 6-2.5.8-5.2-.5-6-3-.8-2.5.5-5.1 3-6 2.4-.8 5.1.5 6 3"/><path d="m29 19c1.1 3.3-.7 7-4.1 8.1-3.4 1.1-7.1-.7-8.2-4-1.1-3.3.7-7 4.1-8.1 3.4-1.1 7.1.7 8.2 4"/><path d="m34.4 54l-9.7 2.4c-.9-2.6.9-5.7 3.5-6.4 3.2-.8 5.3 1.5 6.2 4"/><path d="m19.6 47c1.2 3.4-.7 7.2-4.2 8.3-3.5 1.2-7.3-.7-8.5-4.2-1.2-3.4.7-7.2 4.2-8.3 3.5-1.1 7.3.8 8.5 4.2"/></g><path d="m15.5 7.7c5.3.1 10.6 1.1 15.6 3.1 5 1.9 9.7 4.9 13.5 8.8 3.8 3.8 6.8 8.5 8.8 13.5 2 5 3 10.3 3.1 15.6-.9-5.2-2.3-10.3-4.5-15-2.2-4.7-5.1-9.1-8.8-12.7-3.6-3.7-8-6.6-12.7-8.7-4.7-2.3-9.8-3.7-15-4.6" fill="#e0a763"/><g fill="#ffab41"><path transform="matrix(.7071-.7071.7071.7071-3.9946 17.2545)" d="m17.4 12h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-4.1507 28.0237)" d="m30.3 17.6h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-14.3158 18.3168)" d="m13.5 25h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-16.3143 24.7814)" d="m20.3 30.7h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-11.3159 37.4112)" d="m38.1 31h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-17.9387 49.7234)" d="m49.6 45.1h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-25.2128 28.3886)" d="m20.2 43.2h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-29.9482 31.4675)" d="m21.6 50.5h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-39.29 21.5427)" d="m4.9 56.8h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-7.7377 15.9843)" d="m14.4 16.3h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-11.4898 28.0347)" d="m27 26.8h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-7.5833 37.5714)" d="m40.5 26.9h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-21.212 21.1733)" d="m13.9 35.1h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-27.1462 18.6237)" d="m7.8 41h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-36.6179 20.6153)" d="m5.5 53.4h2.1v2.1h-2.1z"/><path transform="matrix(.7072-.707.707.7072-33.3849 29.894)" d="m18.3 54.2h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-24.7295 36.9615)" d="m31.2 47.3h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-24.6875 42.1982)" d="m37.5 49.8h2.1v2.1h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-18.1918 46.3728)" d="m45.8 44.1h2.1v2.1h-2.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f356.svg b/riot/emojione/svg/1f356.svg new file mode 100644 index 0000000..d1b3e05 --- /dev/null +++ b/riot/emojione/svg/1f356.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ddd"><path d="m26.5 42.6l-5.7-5.2c0 0-6.3 6.4-8.1 6.7-2 .2-5.9-2.1-9.1 1.1-2.2 2.2-2.2 5.8 0 8 1.5 1.5 3.8 2 5.7 1.4-.6 1.9-.1 4.2 1.4 5.7 2.2 2.2 5.8 2.2 8 0 3.2-3.2.8-7.1 1.1-9.1 0-2.2 6.7-8.6 6.7-8.6"/><path d="m42.6 26.5l-5.2-5.7c0 0 6.4-6.3 6.7-8.1.2-2-2.1-5.9 1.1-9.1 2.2-2.2 5.8-2.2 8 0 1.5 1.5 2 3.8 1.4 5.7 1.9-.6 4.2-.1 5.7 1.4 2.2 2.2 2.2 5.8 0 8-3.2 3.2-7.1.8-9.1 1.1-2.2 0-8.6 6.7-8.6 6.7"/></g><path d="m31.9 10.6c-3.2.8-20.5 18.1-21.2 21.2-1.2 4.9 16.6 22.7 21.5 21.5 3.1-.8 20.5-18.1 21.2-21.2 1.2-4.9-16.6-22.7-21.5-21.5" fill="#a86332"/><g fill="#e6b858"><path d="m14.6 31.9l-1 1 1 1 1-1-1-1"/><path d="m17.9 33.3l-1 1 1 1 1-1-1-1"/><path transform="matrix(.7071-.7071.7071.7071-2.9902 32.4005)" d="m36.9 19.1h1.4v1.4h-1.4z"/></g><path transform="matrix(.7072-.707.707.7072-.6649 28.7401)" fill="#e6d0a3" d="m33.3 14.1h2.1v2.1h-2.1z"/><path transform="matrix(.7073-.7069.7069.7073-3.7809 28.9561)" fill="#e6b858" d="m32.4 18.3h1.4v1.4h-1.4z"/><g fill="#e6d0a3"><path transform="matrix(.7071-.7071.7071.7071-.334 26.5385)" d="m31.2 13h1.4v1.4h-1.4z"/><path transform="matrix(.7073-.7069.7069.7073-10.8884 22.7414)" d="m21.3 23.8h1.4v1.4h-1.4z"/></g><g fill="#e6b858"><path transform="matrix(.7071-.7071.7071.7071-12.7901 26.4372)" d="m24.5 27.6h2.1v2.1h-2.1z"/><path transform="matrix(.7073-.7069.7069.7073-13.1185 28.6322)" d="m27.3 29.5h1.4v1.4h-1.4z"/></g><g fill="#804c26"><path d="m44.2 38.8l-1 1 1 1 1-1-1-1"/><path d="m40.9 40.1l-1.5 1.5 1.5 1.5 1.5-1.5-1.5-1.5"/><path d="m39.2 36.1l-1 1 1 1 1-1-1-1"/><path d="m30.8 47.4l-1.5 1.5 1.5 1.5 1.5-1.5-1.5-1.5"/><path d="m28.5 42.9l-1 1 1 1 1-1-1-1"/><path d="m27.9 46.4l-1 1 1 1 1-1-1-1"/><path d="m47.5 29.2l-1 1 1 1 1-1-1-1"/><path d="m50.6 29.9l-1 1 1 1 1-1-1-1"/><path d="m42.9 35.6l-1 1 1 1 1-1-1-1"/></g><g fill="#e6b858"><path d="m49.8 37.5l-26.9-19.7 1.6-1.6 26.2 20.4z"/><path d="m37.4 49.7l-23-23 .7-.9 23.9 22.7z"/></g><g fill="#804c26"><path d="m38.8 48.9l-24-23 .8-.8 25.9 20.7z"/><path d="M49.2 38.1 20.7 19.4 23.1 17 50.2 37.5z"/></g><g fill="#fff"><path d="m11.6 59.8c-.6-3 .6-5.9 2.8-7.6-.1 0-.1 0-.2 0-2.5.5-4.1 3-3.6 5.6.2.9.6 1.6 1.1 2.3 0-.1 0-.2-.1-.3" opacity=".4"/><path d="m4 50.9c-.4-2.2.4-4.2 2-5.5 0 0-.1 0-.1 0-1.8.4-3 2.2-2.6 4 .1.6.4 1.2.8 1.6-.1 0-.1 0-.1-.1" opacity=".4"/><path d="m59.8 11.4c-3-.6-5.9.6-7.6 2.8 0-.1 0-.1 0-.2.5-2.5 3-4.1 5.6-3.6.9.2 1.6.6 2.3 1.1-.1 0-.2-.1-.3-.1" opacity=".4"/><path d="m50.9 3.7c-2.2-.4-4.2.4-5.5 2 0 0 0-.1 0-.1.3-1.8 2.2-3 4-2.6.6.1 1.2.4 1.6.8.1 0 0-.1-.1-.1" opacity=".4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f357.svg b/riot/emojione/svg/1f357.svg new file mode 100644 index 0000000..dca233f --- /dev/null +++ b/riot/emojione/svg/1f357.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.4 35.6c-4.5-4.5-10.5 7-15.1 7.6-2.1.3-6.2-2.2-9.6 1.1-2.3 2.3-2.3 6.1 0 8.4 1.6 1.6 3.9 2.1 6 1.5-.6 2-.2 4.4 1.5 6 2.3 2.3 6.1 2.3 8.4 0 3.3-3.3.9-7.5 1.1-9.6.6-4.5 12.2-10.5 7.7-15" fill="#ddd"/><path d="m22.9 46.9l1-1.1 1.9-6.7-7.6.9-1.2 1.2 2.9.7c-1.8 2.3-3 4.3-3 4.3s3.3.1 5.6-.4l.4 1.1" opacity=".15"/><g fill="#fff"><path d="m11.5 58.7c-.6-3 .6-5.9 2.8-7.6-.1 0-.1 0-.2 0-2.5.5-4.1 3-3.6 5.6.2.9.6 1.6 1.1 2.3 0-.1 0-.2-.1-.3" opacity=".4"/><path d="m3.8 49.8c-.4-2.2.4-4.2 2-5.5 0 0-.1 0-.1 0-1.8.3-3 2.2-2.6 4 .1.7.4 1.3.8 1.7 0 0 0-.1-.1-.2" opacity=".4"/></g><path d="m54.5 35.4c20.5-20.5-5.4-46.4-25.9-25.9-8.2 8.2-6.7 18.2-8.3 26-.6 2.8-3 4.8-3 4.8s1.7.6 3.6 1c-1.6 2-2.7 3.7-2.7 3.7s2.4.2 4.9-.3c.3 1.2.6 2 .6 2s2.1-2.5 4.8-3c7.8-1.6 17.7 0 26-8.3" fill="#a8693f"/><g fill="#c28d69"><path transform="matrix(.7074-.7068.7068.7074-.961 34.6969)" d="m40.7 17.8h1.5v1.5h-1.5z"/><path transform="matrix(.7074-.7068.7068.7074 3.7484 36.3218)" d="m45 12.9h1.5v1.5h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-5.3803 33.1712)" d="m36.6 22.3h1.5v1.5h-1.5z"/><path transform="matrix(.7068-.7074.7074.7068-10.2532 31.1707)" d="m31.7 27.2h1.5v1.5h-1.5z"/><path transform="matrix(.7073-.7069.7069.7073 3.0984 26.9566)" d="m33.4 9h1.5v1.5h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-1.5101 25.3087)" d="m29.1 13.7h1.5v1.5h-1.5z"/><path transform="matrix(.7068-.7074.7074.7068-6.5542 24.7174)" d="m25.8 19.5h1.5v1.5h-1.5z"/><path transform="matrix(.7069-.7073.7073.7069 7.3234 29.5868)" d="m38.6 5.2h1.5v1.5h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-1.1374 29.8877)" d="m34.8 15.6h1.5v1.5h-1.5z"/><path transform="matrix(.7073-.7069.7069.7073 4.2855 32.5232)" d="m40.4 10h2.1v2.1h-2.1z"/><path transform="matrix(.7074-.7068.7068.7074-11.1857 26.3239)" d="m25.5 25.9h1.5v1.5h-1.5z"/><path transform="matrix(.7073-.7069.7069.7073-6.4897 28.8897)" d="m30.6 21.2h2.1v2.1h-2.1z"/><path transform="matrix(.7076-.7066.7066.7076 8.9808 34.6762)" d="m45.6 5.7h1.5v1.5h-1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f358.svg b/riot/emojione/svg/1f358.svg new file mode 100644 index 0000000..5e38bb4 --- /dev/null +++ b/riot/emojione/svg/1f358.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0 1.2-1.2 2.3-1.4 3.5-.1 1.2.8 2.6.5 3.7-.3 1.2-1.8 2-2.2 3.1-.4 1.1.2 2.7-.4 3.7-.6 1.1-2.2 1.5-2.8 2.4-.7 1-.5 2.7-1.3 3.5-.8.9-2.5.9-3.3 1.7-.9.8-1.1 2.5-2.1 3.1-1 .7-2.6.3-3.6.8-1 .6-1.6 2.1-2.8 2.5-1.1.4-2.6-.4-3.7-.1-1.1.3-2.1 1.7-3.3 1.8-1.2.1-2.4-1-3.6-1s-2.5 1.1-3.6 1c-1.2-.1-2.1-1.5-3.3-1.8-1.2-.3-2.6.5-3.7.1-1.1-.4-1.7-2-2.8-2.5-1.1-.6-2.7-.2-3.6-.8-1-.7-1.2-2.3-2.1-3.1-.9-.8-2.6-.8-3.3-1.7-.8-.9-.6-2.6-1.3-3.5-.7-1-2.3-1.4-2.8-2.4-.5-1.1 0-2.6-.4-3.7-.4-1.1-1.9-1.9-2.2-3.1-.3-1.1.7-2.5.5-3.7-.2-1.2-1.4-2.3-1.4-3.5s1.2-2.3 1.4-3.5c.1-1.2-.8-2.6-.5-3.7.3-1.2 1.8-2 2.2-3.1.4-1.1-.2-2.7.3-3.7.6-1.1 2.2-1.5 2.8-2.4.7-1 .5-2.7 1.3-3.5.8-.9 2.5-.9 3.3-1.7s1.2-2.6 2.2-3.3c1-.7 2.6-.3 3.6-.8 1-.6 1.6-2.1 2.8-2.5 1.1-.4 2.6.4 3.7.1 1.1-.3 2.1-1.7 3.3-1.8 1.2-.1 2.4 1 3.6 1s2.5-1.1 3.6-1c1.2.1 2.1 1.5 3.3 1.8 1.2.3 2.6-.5 3.7-.1 1.1.4 1.7 2 2.8 2.5 1.1.6 2.7.2 3.6.8 1 .7 1.2 2.3 2.1 3.1s2.6.8 3.3 1.7.6 2.6 1.3 3.5c.7 1 2.3 1.4 2.8 2.4.5 1.1 0 2.6.4 3.7.4 1.1 1.9 1.9 2.2 3.1.3 1.1-.7 2.5-.5 3.7.2 1.4 1.4 2.5 1.4 3.7" fill="#a87451"/><g fill="#8e6244"><ellipse cx="32" cy="8.4" rx="1.2" ry="3.6"/><ellipse cx="32" cy="18.2" rx="1.2" ry="3.6"/><ellipse cx="32" cy="27.9" rx="1.2" ry="3.6"/><ellipse cx="32" cy="37.7" rx="1.2" ry="3.6"/><ellipse cx="26.6" cy="9.9" rx="1.2" ry="3.6"/><ellipse cx="26.6" cy="19.6" rx="1.2" ry="3.6"/><ellipse cx="26.6" cy="29.4" rx="1.2" ry="3.6"/><ellipse cx="21.3" cy="8.4" rx="1.2" ry="3.6"/><ellipse cx="21.3" cy="18.2" rx="1.2" ry="3.6"/><ellipse cx="21.3" cy="27.9" rx="1.2" ry="3.6"/><ellipse cx="21.3" cy="37.7" rx="1.2" ry="3.6"/><ellipse cx="15.9" cy="11.9" rx="1.3" ry="3.6"/><ellipse cx="15.9" cy="21.6" rx="1.3" ry="3.6"/><ellipse cx="15.9" cy="31.4" rx="1.3" ry="3.6"/><ellipse cx="11.6" cy="18.2" rx="1.2" ry="3.6"/><ellipse cx="10.6" cy="27.9" rx="1.2" ry="3.6"/><ellipse cx="11.6" cy="37.7" rx="1.2" ry="3.6"/><ellipse cx="10.6" cy="47.4" rx="1.2" ry="3.6"/><ellipse cx="5.2" cy="31.7" rx="1.2" ry="3.6"/><ellipse cx="7.2" cy="22.2" rx="1.3" ry="3.6"/><ellipse cx="7.2" cy="41.1" rx="1.3" ry="3.6"/><ellipse cx="37.3" cy="9.9" rx="1.2" ry="3.6"/><ellipse cx="37.3" cy="19.6" rx="1.2" ry="3.6"/><ellipse cx="37.3" cy="29.4" rx="1.2" ry="3.6"/><ellipse cx="42.7" cy="8.4" rx="1.2" ry="3.6"/><ellipse cx="42.7" cy="18.2" rx="1.2" ry="3.6"/><ellipse cx="42.7" cy="27.9" rx="1.2" ry="3.6"/><ellipse cx="42.7" cy="37.7" rx="1.2" ry="3.6"/><ellipse cx="48" cy="11.9" rx="1.2" ry="3.6"/><ellipse cx="48" cy="21.6" rx="1.2" ry="3.6"/><ellipse cx="48" cy="31.4" rx="1.2" ry="3.6"/><ellipse cx="52.4" cy="18.2" rx="1.2" ry="3.6"/><ellipse cx="53.4" cy="27.9" rx="1.2" ry="3.6"/><ellipse cx="52.4" cy="37.7" rx="1.2" ry="3.6"/><ellipse cx="53.4" cy="47.4" rx="1.2" ry="3.6"/><ellipse cx="58.7" cy="31.7" rx="1.2" ry="3.6"/><ellipse cx="56.7" cy="22.2" rx="1.2" ry="3.6"/><ellipse cx="56.7" cy="41.1" rx="1.2" ry="3.6"/></g><path d="M49,59.9c0,2.8-34.1,2.8-34.1,0V36.8H49V59.9z" fill="#334037"/><g fill="#3f4f44"><path d="m19.8 47.3l-1.1 1.6 1.1 1.5 1.1-1.5z"/><path d="m32.2 47.3l-1.1 1.6 1.1 1.5 1.1-1.5z"/><path d="m44.6 47.3l-1.1 1.6 1.1 1.5 1.1-1.5z"/><path d="m19.8 38.2l-1.1 1.5 1.1 1.5 1.1-1.5z"/><path d="m32.2 38.2l-1.1 1.5 1.1 1.5 1.1-1.5z"/><path d="m44.6 38.2l-1.1 1.5 1.1 1.5 1.1-1.5z"/><path d="m19.8 56.5l-1.1 1.5 1.1 1.6 1.1-1.6z"/><path d="m32.2 56.5l-1.1 1.5 1.1 1.6 1.1-1.6z"/><path d="m44.6 56.5l-1.1 1.5 1.1 1.6 1.1-1.6z"/><path d="m38.4 51.9l-1.1 1.6 1.1 1.5 1.1-1.5z"/><path d="m26 51.9l-1.1 1.6 1.1 1.5 1.1-1.5z"/><path d="m38.4 42.8l-1.1 1.5 1.1 1.5 1.1-1.5z"/><path d="m26 42.8l-1.1 1.5 1.1 1.5 1.1-1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f359.svg b/riot/emojione/svg/1f359.svg new file mode 100644 index 0000000..0c7cf79 --- /dev/null +++ b/riot/emojione/svg/1f359.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.1 36.2c1.2-4.3-3.5-10.6-6-12.1-.8-10.1-6.6-11-6.6-11-6.6-14.8-18.5-14.8-25 0 0 0-5.9.9-6.6 11-2.5 1.6-7.2 7.8-6 12.1-5.6 3.8-6.2 14.3-2.7 15.2-2.2 11.5 57.8 11.5 55.6 0 3.6-.9 2.9-11.3-2.7-15.2" fill="#e6eded"/><g fill="#d2d8d9"><path d="m50.4 35c-7.5-1.9-9.2 3.5-1.7 5.5 7.5 2 9.2-3.6 1.7-5.5"/><path d="m54.8 47c-5.5-5.4-9.7-1.6-4.2 3.9 5.5 5.5 9.8 1.5 4.2-3.9"/><path d="m42.6 24.8c-3.1 7 1.9 9.6 5.1 2.6 3.3-7-1.9-9.7-5.1-2.6"/><path d="m37 17.1c-7.1-3-9.6 2.1-2.5 5.2 7.1 3.2 9.6-2.2 2.5-5.2"/><path d="m30.1 6.6c-7.2 2.7-5.5 8.1 1.8 5.5 7.3-2.7 5.4-8.2-1.8-5.5"/><path d="m22.2 19.8c-6.5-4-9.8.6-3.3 4.7 6.6 4.2 9.9-.7 3.3-4.7"/><path d="m30.3 27.5c-7.4 2.1-6.2 7.6 1.3 5.6 7.5-2 6.1-7.7-1.3-5.6"/><path d="m12.5 31c-6.8 3.5-4.6 8.7 2.3 5.3 7-3.5 4.6-8.9-2.3-5.3"/><path d="m11.2 46c-7.4-2.2-9.3 3.1-2 5.4 7.5 2.3 9.4-3.2 2-5.4"/></g><path d="M47,59.8c0,2.9-30,2.9-30,0V36h30V59.8z" fill="#334037"/><g fill="#3f4f44"><path d="m20.6 47.1l-1 1.6 1 1.5 1-1.5z"/><path d="m32 47.1l-1 1.6 1 1.5 1-1.5z"/><path d="m43.4 47.1l-1 1.6 1 1.5 1-1.5z"/><path d="m20.6 37.8l-1 1.5 1 1.6 1-1.6z"/><path d="m32 37.8l-1 1.5 1 1.6 1-1.6z"/><path d="m43.4 37.8l-1 1.5 1 1.6 1-1.6z"/><path d="m20.6 56.5l-1 1.5 1 1.6 1-1.6z"/><path d="m32 56.5l-1 1.5 1 1.6 1-1.6z"/><path d="m43.4 56.5l-1 1.5 1 1.6 1-1.6z"/><path d="m37.7 51.8l-1 1.6 1 1.5 1-1.5z"/><path d="m26.3 51.8l-1 1.6 1 1.5 1-1.5z"/><path d="m37.7 42.5l-1 1.5 1 1.6 1-1.6z"/><path d="m26.3 42.5l-1 1.5 1 1.6 1-1.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f35a.svg b/riot/emojione/svg/1f35a.svg new file mode 100644 index 0000000..08398ca --- /dev/null +++ b/riot/emojione/svg/1f35a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 34.1c0 16.3-13.4 25-30 25-16.6 0-30-8.7-30-25 0-11.1 13.4-15.2 30-15.2 16.6 0 30 4.1 30 15.2" fill="#62727a"/><path d="m57.3 26.1c2.9-7.2-2.9-4.9-1.6-7.4 2.1-3.9-4.6-9.2-6.9-8.6-.7-4.5-6.2-7.6-13-5.6-1.4-3.5-19-4.6-20.6 5.5-2.4-.6-9 4.8-6.9 8.6 1.3 2.5-4.5.2-1.6 7.4-1.7 1.9-2.1 9.2-1.3 10 4.6 5 15.6 8 26.6 8s22-3 26.6-8c.8-.8.4-8.1-1.3-9.9" fill="#e6eded"/><ellipse cx="32" cy="57.6" rx="14.4" ry="4.4" fill="#3e4347"/><path d="m59 26.3v5.5c0 7.5-12.1 10.9-27 10.9-14.9 0-27-3.3-27-10.9v-5.5c-1.9 2.1-3 4.7-3 7.8 0 16.3 13.4 25 30 25 16.6 0 30-8.7 30-25 0-3.1-1.1-5.7-3-7.8" fill="#62727a"/><g fill="#d2d8d9"><path d="m51.7 28.3c-7.4-1.9-9.1 3.5-1.7 5.4 7.5 2 9.1-3.5 1.7-5.4"/><path d="m44 33.2c-5.4-5.3-9.6-1.6-4.2 3.9 5.5 5.4 9.7 1.4 4.2-3.9"/><path d="m46.9 18.2c-6.5 3.9-3.9 8.9 2.7 5 6.7-3.9 3.9-9-2.7-5"/><path d="m42.4 8.5c-7-3-9.5 2.1-2.5 5.1 7 3.1 9.5-2.1 2.5-5.1"/><path d="m25.2 4.9c-7.1 2.7-5.4 8 1.7 5.4 7.3-2.6 5.4-8.1-1.7-5.4"/><path d="m17.4 16.6c-6.5-4-9.7.6-3.2 4.7 6.4 4.1 9.7-.7 3.2-4.7"/><path d="m32.1 18.7c-7.3 2.1-6.1 7.6 1.3 5.6 7.4-2.1 6.1-7.7-1.3-5.6"/><path d="m11.9 28.5c-6.8 3.5-4.5 8.6 2.3 5.2 7-3.4 4.5-8.7-2.3-5.2"/><path d="m28.2 33.4c-7.3-2.2-9.2 3-1.9 5.4 7.3 2.3 9.2-3.2 1.9-5.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f35b.svg b/riot/emojione/svg/1f35b.svg new file mode 100644 index 0000000..5880aea --- /dev/null +++ b/riot/emojione/svg/1f35b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58 36.6c0 8.5-11.7 15.4-26 15.4-14.4 0-26-6.9-26-15.4 0-8.5 11.6-15.4 26-15.4 14.3 0 26 6.9 26 15.4" fill="#94989b"/><path d="m62 30.9c0 10.4-13.4 18.9-30 18.9-16.6 0-30-8.4-30-18.9 0-10.5 13.4-18.9 30-18.9 16.6 0 30 8.4 30 18.9" fill="#c7d7d7"/><path d="m56.7 29.2c0-6.9-11.1-12.6-24.7-12.6-13.6 0-24.7 5.6-24.7 12.6 0 3.9 3.5 7.4 9.1 9.7.3.3.6 1 .1 2.2-.8 2 2.1 4.6 4.7 3.1s6.4-1 7.8 0 5.4 1.4 7.5 0 3.7-2.4 7.2-2.4 6.2-3.6 8-5c0 0 0 0 0 0 3.2-2.1 5-4.7 5-7.6" fill="#ba5327"/><g fill="#fbbf67"><path d="m52.4 28c-1.5-2.5-4.8 1-6.7.5-4.2-1.1-1.1 5 .6 5.3 2 .4 7.6-3.3 6.1-5.8"/><path d="m37.5 33.8c-3-.1-3.4-1-4.9.4-3.2 3 6.7 6.4 7.9 5.2 1.4-1.5 0-5.5-3-5.6"/><path d="m43 20.5c-3.5-.1-3.7-.7-5.4 1-3.8 3.6 1.2 7.5 2.6 6 1.6-1.8 6.2-6.9 2.8-7"/><path d="m26.3 32.1c-2.8-.3-6.5 1.5-6.8 4-.3 2.4 1.4 4.2 3.4 3.6 2-.6 3.1-3.6 4.1-4.6 1-1 .9-2.8-.7-3"/></g><path d="m31 13.8c-1.3-.2-2.2 2.3-3.5 2.1-.9-.1-2.9-2-3.7-1.8-1 .2-2.3 3.1-3.3 3.4-1.4.3-2-2.5-3.4-2.1-3.3.9-5.1 6.4-8.8 6.4-2.8.1-5.7 10-2.7 10 5.4 0 4.9 3.3 5.6 3.3.8.1.8-2.6 1.4-3 .8-.6 3.1.5 3.8-.2.6-.5 0-2.7.6-3.2.7-.6 2.9.7 3.8.3.5-.2.7-2.5 1.1-2.1 3 3.2 5 1.9 5.6.5.4-1-1.4-3.5-.6-4.3.8-.8 2.7 2.7 3.7 2.2.4-.2.1-1.5.4-1.7.6-.5 2.5 1 3 .3.3-.5-1.2-1.9-.9-2.4.4-.6 2.2.6 2.8.2 1-.5 2-3.7 1.8-4.8-.5-1.7-5.3-2.9-6.7-3.1" fill="#fffbe9"/><g fill="#e8e1d6"><path d="m14.7 18.3c-1.2 1.7-1.6 3.5-1 4 .6.5 2-.4 3.2-2.1 1.2-1.7 1.6-3.5 1-4-.6-.5-2 .4-3.2 2.1"/><path d="m18.6 27.3c-1.7-.9-3.4-1.1-3.7-.3-.3.7.8 2.1 2.5 3 1.7.9 3.4 1.1 3.7.3.3-.8-.8-2.1-2.5-3"/><path d="m9.3 25c-1.5 1.2-2.3 2.8-1.8 3.4.2.3 1.4-.8 1.1 2-.2 1.8 2.1 0 3.5-1.3 3.2-3.2.7-6.9-2.8-4.1"/><path d="m25.4 23.9c.8-.1-.4-2.3-1.8-3.6-1.5-1.3-3.4-1.9-3.5-1.1-.2 1.9-1.2 1.3-1.4 1.7-.4.7.5 2.3 2.1 3.4 1.5 1.1 3.1 1.5 3.5.8.1-.3-.7-1.1 1.1-1.2"/><path d="m33.5 18.7c1.5-1.2 2.3-2.8 1.8-3.4-.5-.7-3.9 1.8-7.1.9-1.8-.5-3.5.6-3.5 1.4 0 .6.7 1.1 1.8 1.4-.5.9-.7 1.7-.3 2.1.5.6 2.1 0 3.5-1.3 0-.3 2.3.1 3.8-1.1"/></g><g fill="#699635"><path d="m16.8 24.4c-.6-1.9-2.4-3.2-2.4-3.2s.2 2 .4 2.9c-2-.8-2-4.7-2-4.7s-1.3.9-1.2 2.4c-2.2-1.9-4-1-4-1s2.7 1.7 3.1 2.9c-1.5.1-2.4.7-3 2.1 0 0 3-1.6 5.3-.4-.9.8-.4 2.8-.4 2.8 3.6-4.2 5.9-.4 7.5-1.5-1.2-2-3.3-2.3-3.3-2.3"/><path d="m37.6 14.3c0 0-2.1 1.5-3 1.3.5-1.3.5-2.2-.2-3.1 0 0-.2 3-1.8 4.3-.2-1-1.6-1.4-1.6-1.4 1.3 4.5-2 4.8-2 6.4 1.8-.2 2.7-1.7 2.7-1.7 1.4.3 2.9-.6 2.9-.6s-1.3-.6-2-.8c1.2-1.2 3.7.2 3.7.2s0-1.4-1-1.9c2.2-1 2.3-2.7 2.3-2.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f35c.svg b/riot/emojione/svg/1f35c.svg new file mode 100644 index 0000000..93c4cdb --- /dev/null +++ b/riot/emojione/svg/1f35c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 28.3h-60c0 0 1.8 16.6 4.9 21.2 3.5 5.1 11.8 12.5 25.1 12.5 13.3 0 21.6-7.4 25.1-12.5 3.1-4.6 4.9-21.2 4.9-21.2" fill="#e0dac6"/><path d="m62 28.3c0 5.7-13.4 10.3-30 10.3-16.6.1-30-4.6-30-10.3 0-5.7 13.4-10.3 30-10.3 16.6 0 30 4.6 30 10.3" fill="#f9f3d9"/><path d="m61 28.1c0 5.2-13 9.4-29 9.4-16 0-29-4.2-29-9.4 0-5.2 13-9.4 29-9.4 16 .1 29 4.3 29 9.4" fill="#e0dac6"/><path d="m32 22c-14.3 0-26.2 3.3-28.6 7.7 2.4 4.4 14.3 7.8 28.6 7.8 14.3 0 26.2-3.3 28.6-7.8-2.4-4.3-14.3-7.7-28.6-7.7" fill="#f2b200"/><path d="m32 46.8c13.2 0 24.3-3.2 28.4-7.7.5-2.4.8-4.8 1.1-6.7-2.6 4.8-14.8 8.4-29.5 8.4-14.7 0-26.9-3.6-29.5-8.4.3 1.9.6 4.3 1.1 6.7 4.1 4.5 15.2 7.7 28.4 7.7" fill="#b3682a"/><g fill="#ffe299"><path d="m47.6 34.1l-.2-2.5.8-.1c4-.3 5.6-1.8 5.6-2.9.1-1.3-1.4-2.5-3.6-2.9-.6-.1-1.2-.2-1.8-.2-2 0-3.6.6-5.6 1.3-2.6 1-5.5 2-9.8 2-2.5 0-5.3-.8-8.2-1.7-2.9-.9-6-1.8-8.7-1.8-1.9 0-3.5.4-4.9 1.3-.8.5-2 1.4-1.7 2.2.6 1.3 4.2 2.6 7.3 2.6.4 0 .7 0 1.1-.1l.7-.1.4 2.5-.9.3c-.4 0-.8.1-1.3.1-3.3 0-8.5-1.3-9.7-4.1-.4-1-.7-3.1 2.7-5.2 1.8-1.1 3.9-1.7 6.3-1.7 3.2 0 6.6 1 9.5 1.9 2.7.8 5.3 1.6 7.4 1.6 3.8 0 6.5-1 8.9-1.9 2-.7 4.1-1.5 6.5-1.5.8 0 1.5.1 2.3.2 3.5.7 5.8 2.9 5.7 5.5-.1 2.2-2.3 4.8-8 5.2h-.8"/><path d="m39.7 33.8c-2.3 0-4.6-.5-6.9-1.6-5.1-2.3-9.2-2.8-11.8-2.8-3.2 0-5 .7-5.7 1l-.6.3-1.2-2.2.7-.3c.9-.4 3.4-1.4 7.6-1.2 3.9.1 8 1.1 12.1 3 2 .9 3.9 1.4 5.8 1.4 3.3 0 6.2-1.5 8-4.1l.4-.6 2.2 1.3-.5.7c-1.8 2.6-4.4 4.3-7.5 4.9-.8.1-1.7.2-2.6.2"/><path d="m33.1 35.4l-.6-.3c-1.7-.8-3.4-1.2-5.3-1.2-3.1 0-5.3 1.2-5.3 1.2l-.6.3-1.4-2.1.7-.4c.3-.2 2.9-1.5 6.5-1.5 2.2 0 4.4.5 6.4 1.5l.7.3-1.1 2.2"/><path d="m22.4 12.6l-1.2-2.3.7-.4c2.3-1.2 3.4-5.6 3.4-5.7l.2-.7 2.5.7-.2.7c-.1.2-1.4 5.5-4.7 7.3l-.7.4"/><path d="m33.2 14.2l-2.1-1.4.4-.6c0 0 1.6-2.5 2-4.8l.1-.7 2.6.4-.2.6c-.5 3-2.3 5.8-2.4 5.9l-.4.6"/><path d="m29.2 13.2l-2.1-1.4.4-.6c0 0 1.6-2.5 2-4.8l.1-.7 2.6.3-.1.7c-.5 3-2.3 5.8-2.4 5.9l-.5.6"/></g><g fill="#d3976e"><path d="m62 12l-40.6-7.7-.2 1.1 40.4 9.7z"/><path d="m59.7 21.1l-38.6-14.6-.4 1 38 16.5z"/></g><g fill="#ffe299"><path d="m25.2 12.4c-.8 0-1.5-.4-2.1-1.1-1.5-1.8-.8-5.3.1-7.1.8-1.8 1.8-2.2 2.5-2.2.7 0 1.3.3 1.7.8.6.8.5 1.8.4 2.1l-2.2-.1c0 .1-.2.5-.2.5-.7 1.7-.8 3.8-.4 4.4.1.1.1.1.2.1 0 0 .1.1.2-.2l2.4.9c-.5 1.1-1.3 1.7-2.3 1.9-.1 0-.2 0-.3 0"/><path d="m29.5 13.9c-.8 0-1.6-.4-2.1-1.1-2.1-2.8-.9-6.5.3-8.2.9-1.2 1.7-1.5 2.2-1.5.2 0 .4 0 .5.1.7.3 1.8.8 1.6 3.1l-2.3-.4c-.6 1.2-1.1 4.2-.2 5.5l2.3 1c-.4.9-1.1 1.5-2 1.6-.2-.1-.2-.1-.3-.1"/><path d="m33.5 25.1c.8-2.1-1.2-5.6-1.9-7.3-1.3-3.2-1.1-11.7 1.3-13.3.7-.5 1.5-.6 2.2-.2.7.3 1.4 1.5 1.2 2.9l-2.3-.5c-.6 1.8-1 8.1.2 10.8.9 1.9 2.6 4.9 1.6 8.1-.7 2-2.9 1-2.3-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f35d.svg b/riot/emojione/svg/1f35d.svg new file mode 100644 index 0000000..52f7db9 --- /dev/null +++ b/riot/emojione/svg/1f35d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58 49.2c0 7.1-11.7 12.8-26 12.8-14.4 0-26-5.7-26-12.8 0-7.1 11.6-12.8 26-12.8 14.3 0 26 5.7 26 12.8" fill="#94989b"/><path d="m62 44c0 8.6-13.4 15.7-30 15.7-16.6 0-30-7-30-15.7 0-8.6 13.4-15.7 30-15.7 16.6 0 30 7 30 15.7" fill="#c7d7d7"/><path d="m56.7 42.7c0 5.8-11.1 10.4-24.7 10.4-13.6 0-24.7-4.7-24.7-10.4 0-5.8 11.1-10.4 24.7-10.4 13.6-.1 24.7 4.6 24.7 10.4" fill="#94989b"/><path d="m50.2 50.5c-2.8.5-3.3 3.7-11.4 2.9-3.8-.4-6 .8-10.7 1.2s-29.9-4.4-19.7-15.9c10.1-11.5 48.4-6.2 48.8 1.2.4 7.5-4.8 10.2-7 10.6" fill="#d3976e"/><path d="m8.4 19.4c-.9.6.3.6.3.6s10.2-3.5 10.7-2.5c.5 1-10.3 4-10.1 5.2.2 1.2 11-3.4 11.2-2.4.3 1-9.8 4.8-9.8 4.8s-.8.8.2.7c13-1.6 17.1-5.5 17.1-5.5s.9-.7.6-1.6c0-.1 28.4-10.2 32.2-11.6 1.9-.7-.1-5.7-1.9-5-3.9 1.3-32.3 11.6-32.3 11.6-.3-.9-1.5-.9-1.5-.9s-5.7-.4-16.7 6.6" fill="#839391"/><g fill="#ffe299"><path d="m57.6 39.8c-.3-2.1-2.7-4-7.1-5.6-2.6-2.1-6.3-2.7-8.6-2.9-2.1-.1-4.2 0-6.2.4-.9.1-1.9-.9-2.7-.6-4.3-1.2-8.2 1-11 1-3 0-15 2-14.9 8.2-.5.6-3.1 2.7.9 4.3-1 1.1-1.2 2.2-1.1 2.9.2 1.6 1.5 3.1 4 4.3 3.7 1.8 6.9 2.4 9.4 2.4 3.7-.2 5.5 3.6 13.7 2.8l-1-2c-.1 0-3 0-6-2 .1 0 17.8-1.2 20-1.5 5-.5 8.6-4.6 9-6.5.3-1.4 1.8-4.1 1.6-5.2m-31.3-6c.3 0-5.9 2.6-9.3 4.2l.6-2.6c0 0 0 0 .1 0 2.4-.8 5.3-1.3 8.6-1.6m17.4 15.9c0 0-1.2-1.3-1.1-1.5 1.3-.2 2.5-.4 3.7-.7-.5 1-1.4 1.7-2.6 2.2m-.1 0c-.1 0-.1 0-.2.1 0 0 .1 0 .2-.1m-18.6-5.4c.4.1 8.7 2 11.8 2.5-1.8 1.2-7.8 2.2-11.8-2.5m-9 6.7c0 0-2.1-2.9-2-4 .7.6 3.1 1.3 4 1.5.1.2 1.6 2.9 2 3.5-2 0-4-1-4-1m1.1-7.2c0 .7 0 1.4.2 2.2-1.8-.4-3.3-1.1-4.3-2 1-.3 2.4-.4 4.1-.2m21.9-10.8c6 2 9.8 4.8 10 5-.2.4.2 1.6 0 2-.8-.4-7-5-11-6 .7-.1 1-1 1-1m9 11c.5-.4 3-3 3-3s1 0 2 0c.6 0-2.7 3.6-3 4-.3-.1-1.7-.9-2-1m-.9 4.2c.2-.3.3-.6.4-.9.5-.1 1-.3 1.5-.4.3.5.6.9 1 1.4-.8.4-1.8.8-2.9 1.2-.5.2-1 .3-1.4.5.5-.6 1.1-1.1 1.4-1.8m-35.2-8c-.3.4-.5.7-.6 1.1-.6-.1-1.2-.3-1.8-.5-.4-.2-.6-.3-.9-.5.8-.8 1.9-1.6 3.3-2.4v2.3m-.9 6.8c.1-.4.4-.8.9-1.2-.3 1.4.2 2.9 1.3 4.3-.1 0-.2-.1-.2-.1-1.5-1-2.1-2.2-2-3m8-3.2c.9.2 5.9 3 6.9 3.3-.9 0-4.9-.1-6.9-1.1-.2-.7-.2-1.4 0-2.2m21.3 4.6c-.1.4 0 .7.2 1 .4.6-.8.8-2.3 0-.5-.3-.7-.6-.8-.9.9.1 1.9 0 2.9-.1m11.5-1.2c-.2-.3-.5-.6-.8-1 .3-.1.6-.2.9-.4.5.1.8.3 1 .4-.2.3-.6.6-1.1 1m-30.3 3c-.7-.3-1-1-1.4-1.5 6.9-.7 15.1 1.9 15.9 2.3.1.1-10 1-14.5-.8m33.6-7.4c.9-2.8-3-5.7-3.1-5.8 1 0 5 2 3.1 5.8"/><path d="m13 35v-14.7c0-.4-.6-.7-1.2-.7s-1.2.3-1.2.7v15.7l2.4-1"/><path d="m16 42v-26.8c0-.4-.6-.7-1.2-.7s-1.2.3-1.2.7v26.8h2.4"/><path d="m18.9 26.9c.7 0 1.2-.3 1.2-.7v-12.8c0-.4-.6-.7-1.2-.7s-1.2.3-1.2.7v12.7c0 .5.6.8 1.2.8"/></g><path d="m15.2 41.1c1 2 2.5.8 3.2 3 .7 2.2 2.4-.2 3.9 1.1 1.5 1.3 5.5.6 7.2.9 1.7.3 1.9-.9 3.9-.3 2 .7 1.7-1.9 6.4-.2 1.5.6 1.1-1.7 3.6-1.1 2.5.6.7-1.9 3.8-1.7 3.1.2-2.4-6.3-5.1-5.5-2.7.8-6-4.5-10-4.5-8.3.2-18.3 5.8-16.9 8.3" fill="#ec6430"/><g fill="#8cc63e"><path d="m21.5 36.5l-.7 1.5.7 1.5.7-1.5z"/><path d="m24.5 34l-.5 1 .5 1 .5-1z"/><path d="m27.5 37l-.5 1 .5 1 .5-1z"/><path d="m28.5 32.5l-.7 1.5.7 1.5.7-1.5z"/><path d="m31.5 35.5l-.7 1.5.7 1.5.7-1.5z"/><path d="m34.5 33l-.5 1 .5 1 .5-1z"/><path d="m37.5 37l-.5 1 .5 1 .5-1z"/><path d="m40.5 36.5l-.7 1.5.7 1.5.7-1.5z"/><path d="m44.5 39l-.5 1 .5 1 .5-1z"/><path d="m34.5 39l-.5 1 .5 1 .5-1z"/><path d="m30.5 41l-.5 1 .5 1 .5-1z"/><path d="m24.5 39l-.5 1 .5 1 .5-1z"/><path d="m18.5 38l-.5 1 .5 1 .5-1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f35e.svg b/riot/emojione/svg/1f35e.svg new file mode 100644 index 0000000..bbaae9c --- /dev/null +++ b/riot/emojione/svg/1f35e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m44.1 29.5l15.7-7.2c.1-.2.4-.7.6-1 .7-1.1 1.6-2.4 1.6-4 0-7-9.3-13.3-21.6-13.3-12.3 0-25 5.3-32.3 10.4-1.1.8 36 15.1 36 15.1" fill="#995024"/><path d="m60.6 30.1c-.8-5.4-.9-7.3-.9-7.9l-15.7 7.2-6.6 30.5c4.6 0 20.5-9.8 22.3-12.4 2.2-3 2.4-5.9 1-16.5 0-.2 0-.5-.1-.9" fill="#b3682a"/><path d="m42.3 29c.2-1.3 2.2-3 2.2-4.5 0-5.6-9.1-13.2-20.4-13.2s-20.3 7.5-20.3 13.1c0 1.6 2 3.3 2.2 4.5.3 1.5-.8 8.1-1 9.6-2.3 17-.2 19.3 7.8 19.3 2.9 0 6.7-.3 11.3-.3s8.4.3 11.3.3c8 0 10.2-2.3 7.8-19.3-.1-1.5-1.1-8-.9-9.5" fill="#fff3e3"/><path d="m3.8 24.4c0-5.6 9.1-13.2 20.4-13.2s20.4 7.6 20.4 13.2c0 1.6-2 3.3-2.2 4.5l1.8.5c.1-.2.4-.7.6-1 .7-1.1 1.6-2.4 1.6-4 0-7-9.9-15.4-22.2-15.4-12.3 0-22.2 8.5-22.2 15.4 0 1.6.9 2.9 1.6 4 .2.3.5.8.6 1l1.8-.4c-.2-1.3-2.2-3-2.2-4.6" fill="#c0773b"/><path d="m45 37.3c-.8-5.4-.9-7.3-.9-7.9l-1.8-.4c-.3 1.5.8 8.1 1 9.6 2.3 17 .2 19.3-7.8 19.3-2.9 0-6.7-.3-11.3-.3s-8.4.3-11.3.3c-8 0-10.2-2.3-7.8-19.3.1-1.6 1.1-8.1.9-9.6l-1.8.5c0 .5-.1 2.4-.9 7.9-.1.4-.1.7-.1.9-1.4 10.5-1.2 15.6 1 18.6 1.8 2.6 4.8 3.1 8.7 3.1 1.3 0 2.9-.1 4.5-.1 2-.1 4.3-.2 6.8-.2s4.8.1 6.8.2c1.6.1 3.1.1 4.5.1 3.9 0 6.8-.5 8.7-3.1 2.1-3 2.4-8.1 1-18.7-.1-.2-.2-.5-.2-.9" fill="#cb8d44"/><g fill="#ede0d1"><circle cx="9.3" cy="49" r="1.8"/><circle cx="11.8" cy="43.9" r="1.5"/><circle cx="14.8" cy="47.2" r=".9"/><circle cx="28.9" cy="27.1" r="2.4"/><circle cx="32.4" cy="30.2" r=".7"/><circle cx="35.1" cy="32.4" r="1"/><circle cx="30.4" cy="32.4" r="1.5"/><circle cx="35.6" cy="48.2" r="1.8"/><circle cx="31.9" cy="48.6" r="1"/><circle cx="11" cy="24.7" r="1"/><circle cx="11" cy="20.8" r="1.5"/><circle cx="13.9" cy="23.7" r="1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f35f.svg b/riot/emojione/svg/1f35f.svg new file mode 100644 index 0000000..fe9e1ba --- /dev/null +++ b/riot/emojione/svg/1f35f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.5 42.5c-2 .3-4 .7-5.9 1-2.4-13.9-2.4-28.1 0-42.1 2 .4 3.9.7 5.9 1.1-2.4 13.3-2.4 26.8 0 40" fill="#ffc800"/><path d="m30 42.5c2-.3 4-.6 5.9-.9-4-11.6-6-24.2-5.7-37.2-2 .7-4.1 1.5-6.1 2.3 0 12.5 2.1 24.6 5.9 35.8" fill="#ffd41f"/><g fill="#ffe62e"><path d="m16.4 39.5c2-.3 3.9-.7 5.9-1-3.8-11.2-5.8-23.4-5.4-35.9-2.1 1-4.2 2-6.2 3.1.1 11.8 2.1 23.2 5.7 33.8"/><path d="m39.9 42c1.9-.3 3.8-.7 5.7-1 1-11.6 4.1-22.4 8.8-32-2.2-.1-4.4-.1-6.6-.2-4.5 10.2-7.2 21.4-7.9 33.2"/><path d="m13.3 40.4c1.7-.3 3.4-.6 5-.9-4.9-7.2-8.7-15.9-10.7-25.6-1.9 1.3-3.8 2.7-5.6 4.1 2.6 8.5 6.5 16 11.3 22.4"/><path d="m45.4 38.5c1.9-.3 3.7-.6 5.6-1 2.2-9.9 6-18.8 11-26.3-1.7-1-3.4-2.1-5.1-3.2-5.5 8.7-9.5 19-11.5 30.5"/><path d="m38.4 42.5c-2 .3-4 .7-5.9 1-2.3-13.3-2.3-26.9 0-40.1 2 .4 3.9.7 5.9 1.1-2.2 12.6-2.2 25.4 0 38"/></g><path d="m48.6 39.5c-2 .3-4 .7-5.9 1-2.1-11.9-2.1-24 0-35.9 1.9.9 3.8 1.9 5.6 2.7-1.6 10.8-1.5 21.6.3 32.2" fill="#ffc800"/><path d="m25.8 41.5c-2-.4-3.9-.8-5.9-1.1 2-10.3 2-20.9 0-31.3 2.2 1.1 4.5 2.2 6.7 3.5 1.3 9.6 1 19.3-.8 28.9" fill="#ffe62e"/><g fill="#ffc800"><path d="m18.1 40.5c-1.9-.4-3.8-.7-5.7-1.1-1.2-11.8-4.8-22.7-10.1-32 2.4-.1 4.7-.3 7-.4 4.9 10 8.1 21.3 8.8 33.5"/><path d="m39.4 39.4c-1.5-.3-2.9-.6-4.4-.8 7.4-7.1 13.7-16.7 17.5-28.3 1.8 1.3 3.5 2.6 5.2 4.1-4.6 10.1-11.1 18.6-18.3 25"/></g><g fill="#ffd41f"><path d="m40.6 38.1c-2 .3-3.9.7-5.9 1-.4-10.2.9-20.2 3.9-29.6 1.6 1.5 3.2 2.9 4.9 4.2-2.2 7.8-3.2 16-2.9 24.4"/><path d="m21.8 35.6c-1.9.3-3.9.7-5.8 1-3.6-6.6-6.1-14.2-7.1-22.4 2.1.7 4.2 1.3 6.3 1.9 1 7.2 3.4 13.8 6.6 19.5"/></g><path d="m29.9 44c-1.9-.5-3.8-1-5.8-1.6-.8-7.5-.4-14.9 1.1-22.2 1.4 1.4 2.9 2.7 4.4 3.9-.8 6.6-.8 13.3.3 19.9" fill="#ffc800"/><path d="m53.6 40c-1.7.3-3.5.6-5.2.9 1.7-8.8 5.1-16.8 9.5-23.4 1.3 1.4 2.6 2.7 4 3.9-3.7 5.4-6.6 11.6-8.3 18.6" fill="#ffd41f"/><g fill="#ffe62e"><path d="m40.2 41.6c-2-.3-4-.6-5.9-.9 3.5-7.2 5.7-15.4 6.1-24.1 2.1 1.2 4.1 2.6 6.1 4.1-1 7.5-3.2 14.6-6.3 20.9"/><path d="m50.7 37.5c-1.4-.2-2.8-.3-4.1-.5 2.7-5.7 4.3-12.2 4.5-19.1 1.4 1 2.9 2 4.3 3.2-.7 5.9-2.4 11.4-4.7 16.4"/></g><path d="m46.6 27.9c0 5.4-6.6 9.7-14.6 9.7-8.1 0-14.6-4.3-14.6-9.7h-13.2l4.5 30.1c8.7 6 37.8 6 46.4 0l4.5-30.1c.1 0-13 0-13 0" fill="#ef4d3c"/><g fill="#ab2d1f"><path d="m33.1 55.7l-.6.3c-.1-.1-.2-.2-.3-.2h-.4c-.1 0-.3.1-.3.2l-.6-.3-1.5-.8v1.7 1.7l1.5-.8.6-.3c.1.1.2.2.3.2h.4c.1 0 .3-.1.3-.2l.6.3 1.5.8v-1.7-1.7l-1.5.8"/><path d="m29.7 51c.2.4.6.7 1 .9.4.2.8.3 1.3.3.4 0 .9-.1 1.3-.3.4-.2.7-.5 1-.8.1.4-.2.9-.6 1.3-.4.3-1 .6-1.7.6-.6 0-1.2-.2-1.7-.6-.4-.5-.7-1-.6-1.4"/><path d="m38.4 46.5v-.1c0-.1 0-.1-.1-.1-.1 0-.2-.1-.3-.1-.1 0-.1 0-.2-.1-1-2.3-3.2-3.9-5.9-3.9-2.6 0-4.9 1.6-5.9 3.9-.1 0-.2 0-.2.1-.1 0-.2.1-.3.1-.1 0-.1 0-.1.1v.1c0 .2 0 .1.1.2.1 0 .1.1.1.1-.2.5-.2 1.1-.2 1.7 0 3.5 2.9 6.4 6.4 6.4 3.5 0 6.4-2.9 6.4-6.4 0-.6-.1-1.2-.2-1.7 0 0 .1-.1.1-.1.3 0 .3.1.3-.2m-6.4-3.5c2.2 0 4 1.2 5 3-.8-.1-1.6-.1-2.1 0-.8.1-1.5.2-2 .5-.5.3-1.3.3-1.8 0-.5-.3-1.2-.5-2-.5-.5 0-1.3-.1-2.1 0 .9-1.8 2.8-3 5-3m0 11.3c-3.1 0-5.6-2.5-5.6-5.6 0 0 0-.1 0-.1.2.8.6 1.2 1.3 1.5.7.3 1.5.3 2.2 0 .4-.2.7-.4 1-.8.5-.7.3-1.1.6-1.7.2-.5.8-.5 1 0 .2.6.1 1 .6 1.7.3.4.6.6 1 .8.7.3 1.5.3 2.2 0 .7-.3 1.1-.7 1.3-1.5 0 0 0 .1 0 .1 0 3-2.5 5.6-5.6 5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f360.svg b/riot/emojione/svg/1f360.svg new file mode 100644 index 0000000..bfbbd9c --- /dev/null +++ b/riot/emojione/svg/1f360.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55.5 21.8l-37.1 25.4c-6.9-22-8.7-27.9-13.6-36-.6-1-2.8-3.8-2.8-3.8s2.7-3.4 13.7-3.4c19.3.1 39.8 17.8 39.8 17.8" fill="#996254"/><g fill="#73493f"><path d="m17.3 7.6c-4.2 3.7-6.9 9.2-7.7 13.1 0 0-.7-1.3-1.1-2.5 1.7-4.8 8.8-10.6 8.8-10.6"/><path d="m24.2 11.2c0 0-8.7 10.1-11.4 18.4 0 0-.7-1.7-1.1-3.2 2.8-7 12.5-15.2 12.5-15.2"/><path d="m14.8 4.1c0 0 1.3-.2 2.5 0-2.7 1.2-5 2.6-7.2 4.7-.1.1 2-3.4 4.7-4.7"/><path d="m35 8.9c0 0 2 .8 2.9 1.4-6 .3-15 9.6-15 9.6s5.4-8.2 12.1-11"/></g><path d="m46.1 57.2c14.2-6.8 20.8-21 11.6-32.9-7.9-10.3-21.7-6.9-30.6 2.4-7.3 7.6-11.1 16.1-7.5 24.3 3.9 9.1 15.5 11.5 26.5 6.2" fill="#fd9d33"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f361.svg b/riot/emojione/svg/1f361.svg new file mode 100644 index 0000000..6cc82e3 --- /dev/null +++ b/riot/emojione/svg/1f361.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.9 48.6c-.6-.6-1.7-.6-2.3 0-.6.6-.6 1.7 0 2.3l10.6 10.6c.6.6 1.7.6 2.3 0 .6-.6.6-1.7 0-2.3l-10.6-10.6" fill="#f29a2e"/><ellipse transform="matrix(.7071-.7071.7071.7071-19.4657 46.9979)" cx="47" cy="47" rx="13.6" ry="12" fill="#8cc63e"/><path d="m38.3 35.9c-.6-.6-1.7-.6-2.3 0-.6.6-.6 1.7 0 2.3l3.7 3.7c.6.6 1.7.6 2.3 0 .6-.6.6-1.7 0-2.3l-3.7-3.7" fill="#f29a2e"/><ellipse transform="matrix(.7071-.7071.7071.7071-12.8038 30.9107)" cx="30.9" cy="30.9" rx="13.6" ry="12" fill="#dae3ea"/><path d="m22.2 19.9c-.6-.6-1.7-.6-2.3 0-.6.6-.6 1.7 0 2.3l3.7 3.7c.6.6 1.7.6 2.3 0 .6-.6.6-1.7 0-2.3l-3.7-3.7" fill="#f29a2e"/><ellipse transform="matrix(.7071-.7071.7071.7071-6.1407 14.823)" cx="14.8" cy="14.8" rx="13.6" ry="12" fill="#ff99ad"/><path d="m6.1 3.8c-.6-.6-1.7-.6-2.3 0-.6.6-.6 1.7 0 2.3l3.7 3.7c.6.6 1.7.6 2.3 0 .6-.6.6-1.7 0-2.3l-3.7-3.7" fill="#f29a2e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f362.svg b/riot/emojione/svg/1f362.svg new file mode 100644 index 0000000..f00dbf6 --- /dev/null +++ b/riot/emojione/svg/1f362.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.3 49.8c-.7-.7-1.8-.7-2.5 0-.7.7-.7 1.8 0 2.5l7.3 7.3c.7.7 1.8.7 2.5 0 .7-.7.7-1.8 0-2.5l-7.3-7.3" fill="#f29a2e"/><path d="m60.7 38.6c1.6 1.6 1.7 4 .3 5.4l-17 17c-1.4 1.4-3.8 1.3-5.4-.3l-7.7-7.7c-1.6-1.6-1.7-4-.3-5.4l17-17c1.4-1.4 3.8-1.3 5.4.3l7.7 7.7" fill="#dae3ea"/><path d="m39 36.5c-.7-.7-1.8-.7-2.5 0-.7.7-.7 1.8 0 2.5l3.9 3.9c.7.7 1.8.7 2.5 0 .7-.7.7-1.8 0-2.5l-3.9-3.9" fill="#f29a2e"/><ellipse transform="matrix(.7071-.7071.7071.7071-12.9089 31.1628)" cx="31.2" cy="31.2" rx="14.4" ry="12.6" fill="#8e725e"/><path d="m22 19.5c-.7-.7-1.8-.7-2.5 0-.7.7-.7 1.8 0 2.5l3.9 3.9c.7.7 1.8.7 2.5 0 .7-.7.7-1.8 0-2.5l-3.9-3.9" fill="#f29a2e"/><path d="M29.9,7c4.9,4.9-1.2,10.5-6.8,16.1S12,34.9,7,29.9C4.4,27.3,1.9,8.6,5.2,5.2S27.3,4.4,29.9,7z" fill="#62727a"/><path d="m5 2.5c-.7-.7-1.8-.7-2.5 0-.7.7-.7 1.8 0 2.5l3.9 3.9c.7.7 1.8.7 2.5 0 .7-.7.7-1.8 0-2.5l-3.9-3.9" fill="#f29a2e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f363.svg b/riot/emojione/svg/1f363.svg new file mode 100644 index 0000000..93aed08 --- /dev/null +++ b/riot/emojione/svg/1f363.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50 45c6-8.2-45.5-10.2-45.5-10.2s-1.2 1.7-.3 3c.6.9 1.1 1.3.8 2.2-.3 1 .8 2 1 3 .3 1.6-.6 2.4 1.3 3.3.7.3 4.4 1.6 4.6 0 .6 1.4 1.8 2.7 3.2 3.3 1.4.7 3.2.8 4.5 1.1.7 1.6 1.7.9 2.8 1.7 1.2.9 3 1.7 4.5 1.4 1.3-.2 1.2-.9 2.6.2-.1 1.6 1.4.9 2.5 1.3 1 .3 5.2.3 5.8.5.6.3-.5 1.6.4 2.1 1.5.8 3.3-2.8 4-3.4-.1.6-.4 3.3 1 2.9 1.8-.5 1.3-3.1 2.8-3.6 1.7-.7 2.8-1.7 3.2-3.5.2-.7.2-1.4.2-2 1.1-.4 1.2-2.7.6-3.3" fill="#f7f2df"/><g fill="#e8e1d6"><path d="m27.7 51.5c-1.7-.9-3.3-1.1-3.7-.5-.4.6.7 1.9 2.3 2.8 1.7.9 3.3 1.1 3.7.5.5-.7-.6-1.9-2.3-2.8"/><path d="m12 45.5c-1.7-.8-3.4-1-3.7-.3-.4.6.7 1.8 2.5 2.7 1.7.8 3.4 1 3.7.3.3-.7-.8-1.9-2.5-2.7"/><path d="m18.6 48.6c-1.7-.8-3.4-1-3.7-.3-.3.7.8 1.9 2.5 2.7 1.7.8 3.4 1 3.7.3.3-.7-.8-1.9-2.5-2.7"/><path d="m38.7 52.5c.2-.5.3-.9.1-1.2-.5-.6-2.1-.2-3.6.9-1.5 1.1-2.3 2.5-1.8 3.1.2.3.7.3 1.3.2-.4.7-.5 1.3-.2 1.6.5.6 2.1 0 3.5-1.2 1.4-1.2 2.1-2.7 1.6-3.2-.3-.2-.6-.3-.9-.2"/><path d="m33.3 50.1c0 .1.1.2.1.2.5.6 2.1.2 3.6-.9 1.5-1.1 2.3-2.5 1.8-3.1-.5-.6-2.1-.2-3.6.9-.1.1-.2.2-.3.3 0-.2 0-.4-.2-.5-.3-.4-1.1-.3-2 .2-.3 0-.7-.1-1-.1-1.9-.1-3.5.5-3.5 1.2 0 .5.7 1 1.8 1.2-.5.8-.7 1.5-.3 1.8.5.6 2.1 0 3.5-1.2.1 0 .1 0 .1 0"/><path d="m44.5 48c-.7-.3-1.9.8-2.7 2.4-.5 1-.8 3.5-.1 3.6.8 0 1.9-.8 2.7-2.4.8-1.7.8-3.3.1-3.6"/><path d="m49.5 42c-.7-.3-1.9.8-2.7 2.4-.8 1.7-.8 3.3-.1 3.6.7.3 1.9-.8 2.7-2.4.8-1.7.8-3.3.1-3.6"/><path d="m14 44.5c-.3.7.8 1.9 2.5 2.7 1.7.8 3.4 1 3.7.3.3-.7-.8-1.9-2.5-2.7-1.6-.8-3.3-.9-3.7-.3"/><path d="m10 41.2c-.1-1.8-.8-3.3-1.6-3.2-.8 0-1.3 1.5-1.2 3.4s.8 3.3 1.6 3.2c.7-.1 1.3-1.6 1.2-3.4"/><path d="m15.4 42.6c1.1-1.5 1.5-3 .9-3.5-.6-.4-2.1.4-3.2 1.9-1.1 1.5-1.5 3-.9 3.5.7.4 2.1-.5 3.2-1.9"/><path d="m28.9 46.4c0-.7-1.5-1.4-3.4-1.5-1.9-.1-3.5.5-3.5 1.2 0 .7 1.5 1.4 3.4 1.5 1.9.1 3.5-.4 3.5-1.2"/></g><g fill="#3f4237"><path d="m13.4 13.7h25.4v9.9h-25.4z"/><path d="m38.2 21.1c2.5 4.7-2.4 10.3-12.1 10.3-9.6 0-14.5-5.6-12.1-10.3 1.8-3.4 7-5.5 12.1-5.5 5.1.1 10.3 2.2 12.1 5.5"/></g><path d="m38.2 11.4c2.5 4.8-2.4 10.3-12.1 10.3-9.6 0-14.5-5.6-12.1-10.3 1.8-3.3 7-5.4 12.1-5.4s10.3 2.1 12.1 5.4" fill="#8cc63e"/><path d="m37.1 11.4c2 4.2-2.6 9-11 9-8.4 0-13-4.8-11-9 1.5-3.1 6.2-5.1 11-5.1s9.5 2 11 5.1" fill="#ffeee2"/><path d="m31.6 11.9c.5 1.9-2 3.8-5.5 3.8-3.5 0-5.9-1.8-5.5-3.8.4-1.7 2.8-2.8 5.5-2.8s5.1 1.1 5.5 2.8" fill="#f55"/><g fill="#3f4237"><path d="m36.6 21.4h25.4v9.9h-25.4z"/><path d="m61.4 28.8c2.5 4.7-2.4 10.3-12.1 10.3-9.6 0-14.5-5.6-12.1-10.3 1.8-3.4 7-5.5 12.1-5.5s10.3 2.2 12.1 5.5"/></g><path d="m61.4 19.1c2.5 4.7-2.4 10.3-12.1 10.3-9.6 0-14.5-5.6-12.1-10.3 1.8-3.4 7-5.5 12.1-5.5s10.3 2.2 12.1 5.5" fill="#8cc63e"/><path d="m60.3 19.1c2 4.2-2.6 9-11 9-8.4 0-13-4.8-11-9 1.5-3.1 6.2-5.1 11-5.1 4.7.1 9.5 2 11 5.1" fill="#ffeee2"/><path d="m54.8 19.6c.5 1.9-2 3.8-5.5 3.8-3.5 0-5.9-1.8-5.5-3.8.4-1.7 2.8-2.8 5.5-2.8 2.7 0 5.1 1.1 5.5 2.8" fill="#f55"/><path d="M2,31.2c-0.1,2.2,1.5,5.1,3.8,6.5S42.2,52.2,44,50.3c1.7-1.9-6.7-12.7-11.4-14.7C20,30.2,2,31.2,2,31.2z" fill="#ec6430"/><path d="m43.5 46.4c-.1 1.1.1 4.2.5 4 2.2-1.6 8.3-9.4 5.5-15.7l-6 11.7" fill="#e8491f"/><path d="m2 31.2c0 0 5.6-7 7.7-7.8 5.9-2.1 6.1-2 10.5-1 4.5 1 24.6 6 29.2 12.2 1.2 1.6-4.7 12.2-6 13-1.2.6-8.2-1.4-17.6-7.5-10.7-6.9-21.5-8.3-23.8-8.9" fill="#f3813b"/><path d="m38.3 45.5c-.5-.3-1.1-.6-1.6-.9-.3-3.3.9-7.1.7-10.4-.7 3-2.4 6-3.2 9-.2-.1-.5-.3-.7-.4-1.9-1.2-3.9-2.3-5.8-3.5 1.3-3.9 2.1-8.3.2-12.1.9 3.8-.6 7.5-2.5 10.8-.5-.3-1-.6-1.6-.9-1.7-.9-3.5-1.7-5.3-2.5-.8-3.4 2.2-7.6-.9-10.5 1.8 2.9-.7 6.3-1.5 9.5-.9-.3-1.9-.7-2.8-.9-3.7-1-7.5-1.7-11.3-1.5 3.6 1 7.1 2.3 10.5 3.7 3.4 1.5 6.6 3.1 9.9 4.8 3.3 1.7 6.6 3.5 10 5 1.7.8 3.5 1.5 5.3 2 1.8.5 3.8.9 5.7.7-1.8-.3-3.5-1-5.1-1.9" fill="#f4a24e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f364.svg b/riot/emojione/svg/1f364.svg new file mode 100644 index 0000000..c64f840 --- /dev/null +++ b/riot/emojione/svg/1f364.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m27.7 12.2c-3.8 5.2-23.1 9.6-23.1 9.6s2.8-5.4 10.4-8.8c0 0-8 3.3-13 1.5 0 0 7.7-8.7 24-10.2l1.7 7.9" fill="#f46c6c"/><path d="m58.2 43.9c0 0 0 0 0 0" fill="#f8bd17"/><path d="m60.9 27.1c-.7-2.8.6-5.8-1.7-6.9-1.1-.5-1.8-2.1-2-3.3-.3-1.3-.1-2.3-1.1-3.2-1-.9-2.7-1.5-3.7-2.4-.9-.9-.6-2.2-1.3-3.2-.9-1.3-2.1-1.7-3.6-1.9-1.4-.2-2.5-.7-3.6-1.6-1.1-.9-2.2-1.9-3.7-1.8-1.2 0-2.4.6-3.6.5-1.4 0-2.3-1.3-3.7-1.3-1.1.1-1.9 1.1-2.8 1.5-1.1.5-2.2-.1-3.4 0-1.1.1-1.7 1.1-2.2 2-.7 1.3-1.9 1.4-3 2.3-.7.5-.9 1.7 0 3.3.8 1.3.6 3.2 1.7 4.4 1.1 1.2 3.5-.6 4.8.1 1.6.8 2.1 1.7 4 2 1.2.2 2.9 2.7 3.7 3.2 1.2.6 3 1.8 3.7 2.8.6.9 1.1 3 1.3 4.1.2 1.3-.6 3.3-1.4 3.9-1.2.8-2.6 2.3-3.6 3.3-1.7 1.6-3.7-.3-5.6.3-1.2.3-2.1 1.2-3.3 1.2-1.3 0-2.5-.7-3.9-.8-1.6-.1-3.9 1.6-5 2.5-1.4 1.2-2.9 1.3-4.5 2-1.5.7-2 2.1-2.4 3.7-.4 1.5-2.3 1.6-2.7 2.4-.9 1.5 1.3 3.5 2.3 6.9 1.2 3.8 1.7 1.6 4.8 3.3 1.2.6 1.9 2.4 3.4 3 1.7.7 3.3-.5 4.9.5 1.1.7 1.6 2.5 3 2.2 1.3-.3 2.5-2.3 3.9-1.8 3.5 1.2 3.3-.5 6.5-.4 1.7 0 3.6 1.7 5.1.3 1.4-1.2 2.3-3.1 4.1-3.3 3.5-.3 3.7-3.1 6.4-4.6 3.6-2.1 4.9-6.2 5.5-8.3.8-2.8 1.2-5.9 3.3-9.7 1.2-2.5 0-4.8-.6-7.2" fill="#f8d317"/><g fill="#f8b100"><path d="m21.8 42.1c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.3 1.2-1 2.4-2 3.6"/><path d="m32.3 46.7c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.4 1.2-1 2.5-2 3.6"/><path d="m25.3 54.7c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.3 1.2-1 2.5-2 3.6"/><path d="m39.9 53.2c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.3 1.3-1 2.5-2 3.6"/><path d="m52.6 45.5c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.3 1.3-1 2.5-2 3.6"/><path d="m38 37.5c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7s1.4-3.7.3-5.2c-.4 1.2-1.1 2.4-2 3.6"/><path d="m45.5 40.4c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.4 1.3-1 2.5-2 3.6"/><path d="m48.7 28.4c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.4 1.2-1 2.4-2 3.6"/><path d="m41.3 19.1c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.4 1.2-1 2.4-2 3.6"/><path d="m51 17.5c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.4 1.2-1 2.5-2 3.6"/><path d="m41.1 10.1c-1 1.1-2.1 1.9-3.2 2.3 1.5 1.1 3.6.8 4.9-.7 1.3-1.5 1.4-3.7.3-5.2-.4 1.2-1 2.4-2 3.6"/><path d="m31.6 10.4c-1.1 1-2.4 1.6-3.5 1.9 1.4 1.3 3.5 1.3 5 0s1.9-3.5 1-5.1c-.6 1.1-1.4 2.3-2.5 3.2"/><path d="m15.6 41.1l-1 1 1 1.1 1-1.1z"/><path d="m16.5 48.3l-1 1 1 1 1-1z"/><path d="m29.7 39.2l-1 1 1 1 1.1-1z"/><path d="m39.7 44.4l-1 1 1 1 1-1z"/><path d="m43.8 33.8l-1 1 1 1 1-1z"/><path d="m54.4 33.2l-1.1 1 1.1 1 1-1z"/><path d="m50.8 39.5l-1 1 1 1 1-1z"/><path d="m47.2 50.2l-1 1 1 1 1.1-1z"/><path d="m33.1 53.4l-1 1 1 1 1-1z"/><path d="m18.6 52.7l-1 1 1 1 1-1z"/><path d="m11.9 48.3l-1 1 1 1 1-1z"/><path d="m58.2 36.2l-1 1 1 1 1-1z"/><path d="m25.1 10.9l-1 1 1 1 1-1z"/><path d="m55 22l-1 1 1 1.1 1.1-1.1z"/><path d="m45.5 23.8l-1 1 1 1 1-1z"/><path d="m49.3 13l-1 1 1 1 1-1z"/><path d="m36.7 15.8l-1 1 1 1.1 1-1.1z"/><path d="m39.1 5l-1 1 1 1 1-1z"/><path d="m29.7 5.5l-1 1 1 1 1.1-1z"/><path d="m24.6 46.2l-1 1 1 1 1-1z"/><path d="m56.1 27.1l-1.1 1 1.1 1 1-1z"/><path d="m46.5 8.2l-1 1 1 1 1-1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f365.svg b/riot/emojione/svg/1f365.svg new file mode 100644 index 0000000..9932d34 --- /dev/null +++ b/riot/emojione/svg/1f365.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32.1c0 2.5-4.3 4.4-4.9 6.7-.6 2.4 2.1 6.2.9 8.3-1.2 2.1-5.9 1.6-7.6 3.3-1.7 1.7-1.2 6.4-3.3 7.6-2.1 1.2-5.9-1.6-8.3-.9-2.3.6-4.2 4.9-6.7 4.9-2.5 0-4.4-4.3-6.7-5-2.4-.6-6.2 2.1-8.3.9-2.1-1.2-1.6-5.9-3.3-7.7-1.7-1.7-6.4-1.2-7.7-3.3-1.3-2.1 1.5-5.9.9-8.3-.6-2.3-5-4.2-5-6.7 0-2.5 4.3-4.4 4.9-6.7.6-2.4-2.1-6.2-.9-8.3 1.2-2.1 5.9-1.6 7.6-3.3 1.7-1.7 1.2-6.4 3.3-7.6 2.1-1.2 5.9 1.6 8.3.9 2.3-.6 4.2-4.9 6.7-4.9 2.5 0 4.4 4.3 6.7 5 2.4.6 6.2-2.1 8.3-.9 2.1 1.2 1.6 5.9 3.3 7.7s6.4 1.2 7.7 3.3c1.2 2.1-1.5 5.9-.9 8.3.7 2.3 5 4.2 5 6.7" fill="#b2c1c0"/><path d="m62 30.9c0 2.4-4.3 4.2-4.9 6.4-.6 2.3 2.1 5.9.9 7.9-1.2 2-5.9 1.5-7.6 3.2-1.7 1.6-1.2 6.1-3.3 7.3-2.1 1.2-5.9-1.5-8.3-.9-2.3.6-4.2 4.7-6.7 4.7-2.5 0-4.4-4.2-6.7-4.8-2.4-.6-6.2 2-8.3.9-2.1-1.2-1.6-5.7-3.3-7.3-1.7-1.7-6.4-1.2-7.7-3.2-1.2-2 1.5-5.7.9-8-.6-2.2-5-4-5-6.4 0-2.4 4.3-4.2 4.9-6.4.6-2.3-2.1-6-.9-8 1.2-2 5.9-1.6 7.6-3.2 1.7-1.6 1.2-6.1 3.3-7.3 2.1-1.2 5.9 1.5 8.3.9 2.3-.6 4.2-4.7 6.7-4.7 2.5 0 4.4 4.2 6.7 4.8 2.4.6 6.2-2 8.3-.9 2.1 1.2 1.6 5.7 3.3 7.3s6.4 1.2 7.7 3.2c1.2 2-1.5 5.7-.9 8 .7 2.2 5 4.1 5 6.5" fill="#e2f0f2"/><path d="m51.1 37.9c-.9 3-2.6 5.8-4.9 8.1-2.3 2.3-5.3 4-8.6 4.8-6.5 1.7-14-.2-18.8-5.1-2.4-2.4-4-5.6-4.7-8.8-.7-3.3-.5-6.6.4-9.7.8-3.1 2.4-5.9 4.5-8.3 2.1-2.4 5-4.2 8.2-5.1 3.2-.8 6.8-.6 10 .8 3.2 1.4 6 3.9 7.4 7.4 1.4 3.4 1.4 7.4-.1 10.8-.8 1.7-1.9 3.3-3.3 4.5-1.5 1.4-3.3 2.2-5.3 2.6-1.9.4-4 .3-5.8-.4-1.9-.6-3.6-1.7-4.8-3.2-1.4-1.5-2.2-3.5-2.4-5.5-.2-2 .3-4 1.4-5.7.5-.8 1.2-1.6 1.9-2.1.8-.7 1.7-1.1 2.7-1.4 1.9-.5 4-.3 5.6.7.8.5 1.5 1.1 2 1.8.6.8.9 1.7 1 2.6.2 1.8-.6 3.6-1.9 4.5l-.4-.4c.9-1.2 1-2.7.6-3.9-.2-.6-.6-1.1-1-1.5-.5-.4-1-.7-1.5-.9-1.1-.4-2.3-.3-3.3.1-.5.2-1 .6-1.2.9-.4.5-.7.9-.9 1.4-.9 2-.4 4.5 1.1 5.8 1.6 1.5 3.9 2.2 6 1.7 1-.2 2-.7 2.8-1.4.9-.8 1.6-1.7 2.2-2.7 1.1-2.1 1.3-4.7.5-6.9-.4-1.2-1-2.2-1.9-3.2-.8-.9-1.9-1.8-3-2.4-2.2-1.4-5-2-7.8-1.8-2.8.2-5.5 1.6-7.5 3.6-2 2.1-3.5 4.8-4 7.6-.5 2.9-.2 5.8.9 8.4 1 2.6 2.7 4.8 4.8 6.6 2 1.8 4.4 3.2 7 3.9 2.6.8 5.3 1 8.1.6 2.7-.4 5.4-1.4 7.7-3.1 2.4-1.6 4.4-3.8 6.1-6.3l.2.6" fill="#fc97b2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f366.svg b/riot/emojione/svg/1f366.svg new file mode 100644 index 0000000..aab1e61 --- /dev/null +++ b/riot/emojione/svg/1f366.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.3 45.3l2.3 12.7c.1 2.8 3.9 4 10.9 4 7 0 10.8-1.2 10.9-4l2.3-12.8-26.4.1" fill="#ffc861"/><path d="m20.4 45.6c0 0 3.2 2.3 13.2 2.3 10 0 13.1-2.3 13.1-2.3h-26.3" fill="#b17f4a"/><path d="m16.5 35l1 8.1c.1 2.8 6.8 4 16 4 9.2 0 15.9-1.2 16-4l1-8.1h-34" fill="#ffc861"/><path d="m17.1 39.9c0 0 3.7 3.6 16.4 3.6 12.7 0 16.5-4.3 16.5-4.3l-32.9.7" fill="#b17f4a"/><path d="M20.8,12c-8.1,0-16.2,13.1-6.3,23.3c0,6.7,9.2,6.7,19.1,6.7c13.6,0,18-3.9,18-3.9L20.8,12z" fill="#ffe0b5"/><path d="m50.5 28.5c.9-2 1.9-6.5-.2-9.7-2.8-4.1-6.4-5-9.6-7.2-1.8-1.3-4.8-4.6-.6-7.6 0 0-8.9-5.8-15.9 2.1-2 2.3-3.1 4.7-3.6 6.8-12.7 3.9-10.9 27.2 7.8 22.6-15.3-.5-13.3-15.5-8-21.7-.6 2.8-.2 4.8-.2 4.8-2.3 5.7-.1 12.7 5.1 15.5 1 .6 2.1 1 3.2 1.4 0 0-7.1 3.5-12.7.5 3.6 5.3 9.9 2.1 13.2 2.2 3.6.1 2.5 3.3 10.8 1.3 6.1-1.5 8-2.6 12-1.4-.1 0 5.8-5.5-1.3-9.6" fill="#8f6453"/><g fill="#ffe0b5"><path d="m40.1 4c-19.9-5-22.7 18.6-10 23.5 2.2.4 4.3.3 6.4 0-13-2.7-13.6-22-1.4-23-10.7 6.3-4.4 22.2 7.5 22.2-9.9-5.9-11.5-16.9-5.3-21.1-6.3 14 9.5 12 13.1 22.9 2.3-14.4-17-10.1-10.3-24.5"/><path d="m20.1 18.8c1.4 5.8 7 10.4 13.6 10.4 7.1 0 12.9-2.6 18.4 4.8-7.4-3.8-11.6-1.3-18.6-1.3-8.3 0-14.9-6.7-13.4-13.9"/></g><g fill="#e3a93d"><path d="m21.7 47.6l3 .8.1 1.5-2.8-.3 3.8.7-.2-1.9z"/><path d="m26.6 48.5l3 .5v1.5l-2.8-.1 3.8.4-.1-1.9z"/><path d="m31.5 48.9l3 .3v1.4l-2.9.2h3.8l.1-1.9z"/><path d="m36.5 48.9l3-.1-.1 1.5-3 .5 3.9-.4.1-1.9z"/><path d="m41.5 48.4l2.9-.3-.3 1.4-2.8.8 3.7-.7.3-2z"/><path d="m22.1 50l2.8.8.2 1.4-2.7-.3 3.6.7-.2-1.9z"/><path d="m26.8 50.8l2.9.5.1 1.5-2.8-.1 3.7.4-.1-1.9z"/><path d="m31.6 51.2l2.9.3v1.4l-2.8.2h3.7v-1.9z"/><path d="m36.4 51.2h2.9l-.1 1.4-2.9.5 3.7-.4.2-1.9z"/><path d="m41.2 50.7l2.8-.3-.2 1.5-2.8.7 3.7-.7.3-1.9z"/><path d="m22.4 52.3l2.8.8.2 1.5-2.7-.4 3.6.7-.2-1.9z"/><path d="m27 53.1l2.8.6.1 1.4h-2.7l3.6.3-.1-1.9z"/><path d="m31.7 53.5l2.8.3-.1 1.4-2.7.2h3.6l.1-1.9z"/><path d="m36.3 53.5h2.8l-.1 1.4-2.8.5 3.6-.3.2-2z"/><path d="m41 53l2.7-.3-.2 1.5-2.7.7 3.5-.7.3-1.9z"/><path d="m22.8 54.7l2.7.7.1 1.5-2.5-.3 3.4.6-.2-1.9z"/><path d="m27.2 55.5l2.7.5.1 1.4h-2.6l3.5.3-.1-1.9z"/><path d="m31.7 55.8l2.7.3v1.4l-2.6.2h3.4l.1-1.9z"/><path d="m36.2 55.8h2.7l-.1 1.4-2.6.5 3.4-.3.2-1.9z"/><path d="m40.7 55.3l2.7-.2-.3 1.4-2.6.7 3.4-.6.3-1.9z"/><path d="m23.1 57l2.6.8.2 1.4-2.5-.3 3.3.7-.2-1.9z"/><path d="m27.4 57.8l2.7.5v1.4h-2.5l3.4.3-.1-1.9z"/><path d="m31.8 58.2l2.6.2v1.4l-2.6.3h3.4v-1.9z"/><path d="m36.1 58.1h2.6l-.1 1.5-2.5.4 3.3-.3.2-1.9z"/><path d="m40.5 57.7l2.5-.3-.2 1.5-2.5.7 3.3-.7.3-1.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f367.svg b/riot/emojione/svg/1f367.svg new file mode 100644 index 0000000..296c4f7 --- /dev/null +++ b/riot/emojione/svg/1f367.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.7 13.5c0-1.8 1.7-1.8 1.7-3.7 0-1.8-.6-1.8-.6-3.7 0-.2 0-.4 0-.6-.2.2-.5.3-.7.5-.4.4-.5 1.1-.9 1.5-.4.4-.6.9-1 1.3-.4.4-1.1.5-1.5 1-.3.4-.3 1.1-.6 1.6-.3.5-1 .7-1.3 1.2-.2.5-.2 1.1-.4 1.6-.2.5-.7 1-.8 1.5-.1.5-.2 1.1-.3 1.6-.1.5-.2 1.1-.3 1.6 0 .5.5 1.1.5 1.7 0 .6-.2 1.1-.1 1.6.1.5-.2 1.1-.1 1.7.1.5.5 1 .7 1.6.1.5.1 1.1.3 1.6.2.5.7.9 1 1.4.2.5 4.4 1.3 4.4-.5s1.5-1.8 1.5-3.7.2-1.8.2-3.7c0-1.8-1.3-1.8-1.3-3.7s-.4-1.6-.4-3.4" fill="#f0154f"/><path d="m27.8 9.9c0-1.8-1.6-1.8-1.6-3.7 0-1.8 1.7-1.8 1.7-3.7 0-.1 0-.2 0-.4-.4 0-.7.1-1 .2-.6.1-1 .7-1.5.9-.5.2-1.1.2-1.6.5-.5.2-.9.7-1.4 1-.6.3-1.4.1-1.9.4-.2.2-.5.3-.7.5 0 .2 0 .4 0 .6 0 1.8.6 1.8.6 3.7 0 1.8-1.7 1.8-1.7 3.7s.3 1.8.3 3.7 1.3 1.8 1.3 3.7c0 1.8-.2 1.8-.2 3.7s-1.5 1.8-1.5 3.7 7.7 1.8 7.7 0-.4-1.8-.4-3.7 1.4-1.8 1.4-3.7c0-1.8-.4-1.8-.4-3.7s1.1-1.8 1.1-3.7-.2-1.9-.2-3.7" fill="#f27a52"/><path d="m34.6 28.1c0-1.8.3-1.8.3-3.7s1.2-1.8 1.2-3.7c0-1.8-1.5-1.8-1.5-3.7s.8-1.8.8-3.7-.8-1.8-.8-3.7c0-1.8.5-1.8.5-3.7 0-1.8-.8-1.8-.8-3.7 0-.1 0-.3 0-.4-.2 0-.4 0-.6 0-.5.3-1.1.2-1.7.2s-1.1.1-1.7.2c-.5 0-1-.1-1.5-.1-.1 0-.2 0-.3 0-.2 0-.5.1-.7.1 0 .1 0 .2 0 .4 0 1.8-1.7 1.8-1.7 3.7 0 1.8 1.6 1.8 1.6 3.7 0 1.8.1 1.8.1 3.7s-1.1 1.8-1.1 3.7.4 1.8.4 3.7c0 1.8-1.4 1.8-1.4 3.7s.4 1.8.4 3.7 8.5 1.5 8.5-.4" fill="#fad85c"/><path d="m42.7 28.1c0-1.8 1-1.8 1-3.7s-.5-1.8-.5-3.7c0-1.8.6-1.8.6-3.7s-1.4-1.8-1.4-3.7 1.3-1.8 1.3-3.7c0-1.8-.6-1.8-.6-3.7 0-.4 0-.8 0-1.1-.4-.2-.8-.4-1.2-.6-.5-.3-.9-.7-1.4-.9-.5-.2-1-.5-1.6-.7-.4-.1-.8-.4-1.1-.6-.1-.1-.3-.1-.5-.2-.6-.1-1.2.2-1.8.1-.4-.1-.8-.1-1.1-.1 0 .1 0 .2 0 .4 0 1.8.8 1.8.8 3.7 0 1.8-.5 1.8-.5 3.7 0 1.8.8 1.8.8 3.7s-.8 1.8-.8 3.7 1.5 1.8 1.5 3.7c0 1.8-1.2 1.8-1.2 3.7s-.3 1.8-.3 3.7 8 1.9 8 0" fill="#8cc63e"/><path d="m51.6 19.1c0-.5.3-1.1.2-1.7-.1-.5-.4-1.1-.6-1.6-.1-.5-.2-1.1-.4-1.6-.2-.5-.7-.9-1-1.4-.2-.5-.2-1.2-.5-1.6-.3-.5-.6-.9-1-1.4-.3-.4-.6-1-.9-1.4-.4-.4-1.1-.6-1.5-1-.4-.4-.7-.7-1.1-1.1 0 0-.1-.1-.1-.1-.4-.4-.9-.6-1.4-.9-.1-.1-.2-.1-.4-.2 0 .3 0 .6 0 1.1 0 1.8.6 1.8.6 3.7 0 1.8-1.3 1.8-1.3 3.7s1.4 1.8 1.4 3.7-.6 1.8-.6 3.7c0 1.8.5 1.8.5 3.7s-1 1.8-1 3.7 7 1 7.2.5c.2-.5.8-.9 1-1.4.2-.5.1-1.1.3-1.6.1-.5.1-1.1.2-1.6.1-.5.3-1.1.3-1.6 0-.5.2-1.1.2-1.6s0-1.5-.1-2" fill="#42ade2"/><path fill="#e0e1e5" d="M13.9 30.6 32 62 50.1 30.6z"/><path d="m52 29.7c0 1-.8 1.8-1.9 1.8 0 0-9.1-.5-18.1-.5s-18.1.5-18.1.5c-1 0-1.9-.8-1.9-1.8 0-1 .8-1.8 1.9-1.8 0 0 9.1-.5 18.1-.5s18.1.5 18.1.5c1.1 0 1.9.8 1.9 1.8" fill="#c1c4cb"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f368.svg b/riot/emojione/svg/1f368.svg new file mode 100644 index 0000000..c1524bf --- /dev/null +++ b/riot/emojione/svg/1f368.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="57.8" rx="14.4" ry="4.2" fill="#c1c9cb"/><path d="m37.2 55.7c3.5 3.3-13.8 3.3-10.3 0 5.4-5.1 5.2-31.4 5.2-31.4s-.2 26.3 5.1 31.4" fill="#acafb5"/><g fill="#839391"><path d="m23.2 18.1c0 0-10.1-11.5-11-12.6-1-1.2-3.1-3.3-5.8-3.3-6 0-5.8 4 0 4.2 3.8.2 13.7 14 13.7 14l3.1-2.3"/><path d="m59.6 27.2c0 0 0 .2 0 .5 0-.3 0-.5 0-.5"/></g><path d="m62 25.8c0 15.6-13.4 23.9-30 23.9-16.6 0-30-8.3-30-23.9 0-10.6 13.4-14.5 30-14.5s30 3.9 30 14.5" fill="#dfe9eb"/><ellipse cx="32" cy="16.2" rx="15" ry="14.2" fill="#ff78b5"/><ellipse cx="44.4" cy="26.4" rx="15" ry="14.2" fill="#bedd4b"/><ellipse cx="19.6" cy="26.4" rx="15" ry="14.2" fill="#9b5c54"/><path d="m59 18.4v5.2c0 7.2-12.1 10.4-27 10.4-14.9 0-27-3.2-27-10.4v-5.2c-1.9 2-3 4.4-3 7.4 0 15.6 13.4 23.9 30 23.9 16.6 0 30-8.3 30-23.9 0-3-1.1-5.4-3-7.4" fill="#dfe9eb"/><g fill="#fff"><path d="m60.8 27.9c.1 1.1-.4 2.1-1.1 3-.7.8-1.6 1.5-2.5 2.1-1.8 1.2-3.8 2.1-5.8 2.8-4.1 1.4-8.3 2.1-12.6 2.5-4.3.3-8.5.3-12.8-.3-4.2-.5-8.4-1.4-12.4-2.9 4.2.7 8.3 1.2 12.5 1.4 4.2.2 8.3.2 12.5-.2 4.1-.3 8.3-1 12.3-2 2-.6 4-1.2 5.8-2.1.9-.5 1.8-1 2.6-1.7.7-.7 1.4-1.5 1.5-2.6"/><path transform="matrix(.7073-.7069.7069.7073-7.6604 25.0134)" opacity=".3" d="m25.3 20.7h2.1v2.1h-2.1z"/><path transform="matrix(.7075-.7068.7068.7075-5.3863 22.4458)" opacity=".3" d="m23.7 17h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-5.5475 26.5559)" opacity=".3" d="m28.6 19.3h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-9.9405 27.1938)" opacity=".3" d="m27.2 24.9h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-10.5563 22.0159)" opacity=".3" d="m20.6 23.1h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078-4.5862 25.3714)" opacity=".3" d="m28 17.9h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-4.6855 19.3809)" opacity=".3" d="m20.7 15h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-5.803 19.4295)" opacity=".3" d="m20.2 16.4h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-7.8689 27.4949)" opacity=".3" d="m28.9 22.9h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-11.3241 23.1425)" opacity=".3" d="m22 24.9h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-11.8624 27.1402)" opacity=".3" d="m26.5 27.6h.7v.7h-.7z"/><path transform="matrix(.7073-.7069.7069.7073-1.0143 42.156)" opacity=".3" d="m49.3 21.2h2.1v2.1h-2.1z"/><path transform="matrix(.7075-.7068.7068.7075 1.2577 39.5849)" opacity=".3" d="m47.7 17.6h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075 1.4776 34.7849)" opacity=".3" d="m42.1 14.9h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-6.6259 40.8079)" opacity=".3" d="m45.3 27.7h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075 1.0956 43.6941)" opacity=".3" d="m52.6 19.8h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-1.6089 39.1304)" opacity=".3" d="m45.8 20.8h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078 2.0477 42.5026)" opacity=".3" d="m52 18.4h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078 3.4806 38.6348)" opacity=".3" d="m48.1 14.8h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-1.2357 44.6249)" opacity=".3" d="m53 23.5h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-4.7698 41.2489)" opacity=".3" d="m47.1 26h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-.3512 35.9284)" opacity=".3" d="m42.9 18h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078-5.9665 42.9218)" opacity=".3" d="m48.5 28.3h.7v.7h-.7z"/><path transform="matrix(.7075-.7068.7068.7075 5.755 26.432)" opacity=".3" d="m34.1 5.6h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075 3.98 28.1204)" opacity=".3" d="m35.3 8.5h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075.9651 27.5868)" opacity=".3" d="m33.1 11.9h1.4v1.4h-1.4z"/><path transform="matrix(.7078-.7064.7064.7078 6.8089 27.7143)" opacity=".3" d="m36.6 5.3h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078 6.0615 30.0977)" opacity=".3" d="m39.1 7.4h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078 4.0696 26.2814)" opacity=".3" d="m33.5 7.9h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078 1.9884 26.3154)" opacity=".3" d="m32.5 10.4h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078 4.8423 22.2375)" opacity=".3" d="m28.9 4.9h.7v.7h-.7z"/><path transform="matrix(.7078-.7064.7064.7078 6.4259 24.066)" opacity=".3" d="m32 3.9h.7v.7h-.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f369.svg b/riot/emojione/svg/1f369.svg new file mode 100644 index 0000000..6620235 --- /dev/null +++ b/riot/emojione/svg/1f369.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 33.3c0 13.1 13.4 23.7 30 23.7 16.6 0 30-10.6 30-23.7 0-13.1-13.4-23.7-30-23.7-16.6 0-30 10.6-30 23.7m18.9 2.2c0-3.8 5-6.9 11.1-6.9 6.1 0 11.1 3.1 11.1 6.9 0 3.8-5 6.9-11.1 6.9-6.1 0-11.1-3.1-11.1-6.9" fill="#ffd170"/><path d="m2 26.9c0 1.9.2 3.7.7 5.4.6 2.3 1 6.2 2.3 8.1.7.9 2.2-.3 3.4-.3 2.2 0 2.6 4.9 5.3 4.9 4 0 2.1 3.3 7.6 3.3 2.9 0 4.2-2.7 5.7-2.7 3.8 0 3.6 5.1 7.3 5.1 3.8 0 3.6-6 7.1-6 3.4 0 4.1 3.1 6.7 3.1 2.8 0 2.1-9.2 5.2-9.2 3.6 0 5.6-1.4 6.4-2.7 1.5-2.6 2.3-5.6 2.3-8.9 0-10.6-13.4-20-30-20s-30 9.4-30 19.9m18.9.3c0-1.2 1.3-2.1 2.2-3.1.7-.7 1.2-2.6 2.2-3.2 1.9-1 3.6 2.5 6.3 2.5 1.4 0 4.3-2.4 5.5-2.2 2 .5 1.2 1.8 2.4 2.9 1.3 1.1 3.5 1.6 3.5 3.1 0 3.8-2.4 6.9-11.1 6.9-8.5 0-11-3.1-11-6.9" fill="#ff4085"/><g fill="#63b6e6"><path d="m40.5 38.9l-5.8 3c-.9.5-1.8-1.1-.8-1.5l5.8-3c.9-.6 1.7 1 .8 1.5"/><path d="m51.3 19.8l-6.1-2.1c-1-.3-.4-2 .6-1.7l6.2 2.1c.9.4.3 2-.7 1.7"/></g><g fill="#9729cc"><path d="m17.5 33.1l-6.2 2.1c-1 .3-1.6-1.3-.6-1.7l6.2-2.1c1-.3 1.6 1.4.6 1.7"/><path d="m28.9 15.6l-6-2.4c-1-.4-.3-2 .6-1.6l6 2.4c1 .4.4 2-.6 1.6"/></g><g fill="#fff"><path d="m12.6 26.9l-5.8-2.9c-.9-.5-.2-2 .8-1.6l5.8 2.9c.9.5.2 2.1-.8 1.6"/><path d="m57 24.8l-6.2 2.1c-1 .3-1.6-1.3-.6-1.7l6.2-2.1c1.1-.3 1.6 1.3.6 1.7"/></g><g fill="#fff080"><path d="m25.4 40.4l-6.5.3c-1 0-1.1-1.7-.1-1.8l6.5-.3c1.1 0 1.2 1.8.1 1.8"/><path d="m42.8 11.9l-6.3 1.8c-1 .3-1.5-1.4-.5-1.7l6.3-1.8c1-.2 1.5 1.4.5 1.7"/></g><g fill="#84e060"><path d="m46.6 32.8l6.5.3c1 0 1 1.8-.1 1.8l-6.5-.3c-1.1-.1-1-1.8.1-1.8"/><path d="m18.6 17.3l-6.3 1.7c-1 .3-1.5-1.4-.4-1.7l6.3-1.7c1-.2 1.4 1.4.4 1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f36a.svg b/riot/emojione/svg/1f36a.svg new file mode 100644 index 0000000..8daf311 --- /dev/null +++ b/riot/emojione/svg/1f36a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m36.9 22.7l2.5-18.6c-2.4-.6-4.8-2.1-7.4-2.1-2.6 0-5 1.5-7.5 2.2-2.5.6-5.3.5-7.5 1.8-2.2 1.3-3.6 3.8-5.4 5.6-1.8 1.8-4.3 3.2-5.6 5.4-1.3 2.2-1.2 5-1.9 7.5-.6 2.5-2.1 4.9-2.1 7.5 0 2.6 1.5 5 2.2 7.5.6 2.5.5 5.3 1.8 7.5 1.3 2.2 3.8 3.6 5.6 5.4 1.8 1.8 3.1 4.3 5.4 5.6 2.2 1.3 5 1.2 7.5 1.9 2.5.6 4.9 2.1 7.5 2.1 2.6 0 5-1.5 7.5-2.2 2.5-.7 5.3-.6 7.5-1.9 2.2-1.3 3.6-3.8 5.4-5.6 1.8-1.8 4.3-3.1 5.6-5.4 1.3-2.2 1.2-5 1.9-7.5.6-2.4 2.1-4.8 2.1-7.4 0-2.6-2.1-8.1-2.1-8.1l-23-1.2" fill="#dda85f"/><path d="m59.4 22.4c-1 .3-2.4.2-3.9-.4-2.1-.8-3.4-2.5-3.8-4.5-1 .3-3.4 0-5-1-2.4-1.5-2.9-5.7-2.9-5.7-2.7-.8-4.7-4-4.4-6.7-2.2-.6-5-.5-7.4-.5-2.4 0-4.6 1.4-6.8 2-2.3.6-4.9.5-6.9 1.7-2 1.2-3.3 3.5-4.9 5.1-1.7 1.7-4 2.9-5.1 4.9-1.2 2-1.1 4.6-1.7 6.9-.6 2.2-2 4.4-2 6.8 0 2.4 1.4 4.6 2 6.8.6 2.3.5 4.9 1.7 6.9 1.2 2 3.5 3.3 5.1 4.9 1.7 1.7 2.9 4 4.9 5.1 2 1.2 4.6 1.1 6.9 1.7 2.2.6 4.4 2 6.8 2 2.4 0 4.6-1.4 6.8-2 2.3-.6 4.9-.5 6.9-1.7 2-1.2 3.3-3.5 4.9-5.1 1.7-1.7 4-2.9 5.1-4.9 1.2-2 1.1-4.6 1.7-6.9.6-2.2 3-4 3.3-6.4.8-3.9-1.2-8.3-1.3-9" fill="#f2cb7d"/><g fill="#dda85f"><path d="m50.1 10.8l-1.4 1.4-1.3-1.4 1.3-1.3z"/><path d="m55.8 17.8l-.6.7-.7-.7.7-.7z"/><path d="m50.8 13.2l-.7.7-.7-.7.7-.7z"/><path d="m44.6 7.1l-.7.7-.7-.7.7-.7z"/><path d="m57.2 20.3l-.7.7-.7-.7.7-.7z"/><path d="m57.8 17.8l-.7.7-.7-.7.7-.7z"/></g><path d="m11.8 20.6c-1 1.7.5 4.8 2.5 5.7 2.9 1.2 4.6 1.4 6.4-1.7.6-1.1 1.4-4 1.1-4.7-.4-1-2.1-3-3.2-3-3.1.1-6.1 2.5-6.8 3.7" fill="#6d4934"/><path d="m12.3 20.6c-.7 1.2 1.1 4.8 3.5 4.5 3.3-.4 3-7.2 1.6-7.2-2.4 0-4.6 1.8-5.1 2.7" fill="#a37f6a"/><path d="m45.2 39.1c1.4-.4 2.4-2.9 1.8-4.4-.9-2.3-1.8-3.3-4.4-2.6-.9.3-3 1.4-3.2 1.9-.3.8-.5 2.8.1 3.4 1.7 1.7 4.7 2 5.7 1.7" fill="#6d4934"/><path d="m43.8 36.7c1.1-.3 2.8-3.7 1-3.9-3.1-.5-5.5 1-5.2 2.7.3 1.7 3.4 1.4 4.2 1.2" fill="#a37f6a"/><path d="m24.9 44.5c-.3-1.2-2.5-2.1-3.9-1.5-2 .8-2.9 1.5-2.2 3.8.2.8 1.2 2.6 1.7 2.7.7.3 2.4.4 2.9-.1 1.5-1.4 1.7-4 1.5-4.9" fill="#6d4934"/><path d="m23.2 43.6c-.2-.9-4.4.4-4 2 .8 2.7.8 3.1 1.6 3 1.5-.4 2.5-4.3 2.4-5" fill="#a37f6a"/><path d="m51.1 25.5c-1.2.3-2.1 2.5-1.5 3.9.8 2 2.7 2.3 4.8 1.2 1.8-.9 1.9-4.1 1.4-4.7-1.5-1.5-3.8-.6-4.7-.4" fill="#6d4934"/><path d="m50.6 26.6c-.6.7-1.1 3.5.4 3.1 2.7-.8 4.6-3.5 3.4-3.9-1.5-.5-3.1 0-3.8.8" fill="#a37f6a"/><path transform="matrix(.7071-.7071.7071.7071-4.1299 22.1932)" fill="#6d4934" d="m23.3 14.7h2.8v2.8h-2.8z"/><g fill="#dda85f"><path transform="matrix(.7069-.7073.7073.7069-18.8143 21.6132)" d="m15.3 32.1h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-20.9511 39.0836)" d="m35.3 43.4h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-17.6007 36.0363)" d="m32.8 37.4h3.8v3.8h-3.8z"/><path transform="matrix(.7071-.7071.7071.7071 1.0787 22.2721)" d="m25.5 7.9h3.8v3.8h-3.8z"/></g><g fill="#6d4934"><path transform="matrix(.7071-.7071.7071.7071-20.1126 44.0843)" d="m41.7 44.9h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-9.967 46.4574)" d="m49.7 33.8h2.8v2.8h-2.8z"/><path transform="matrix(.7071-.7071.7071.7071-4.8567 37.5067)" d="m42.1 23.9h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-22.7604 21.5789)" d="m14 37.6h1.4v1.4h-1.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f36b.svg b/riot/emojione/svg/1f36b.svg new file mode 100644 index 0000000..493e7b3 --- /dev/null +++ b/riot/emojione/svg/1f36b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b37b47" d="m15 4h8v8h-8z"/><path fill="#a16745" d="m15 4l-2-2v12l2-2z"/><path fill="#633f2c" d="m23 12l2 2v-12l-2 2z"/><path fill="#8c5b3e" d="m23 4l2-2h-12l2 2z"/><path fill="#523420" d="m23 12h-8l-2 2h12z"/><path fill="#b37b47" d="m27 4h8v8h-8z"/><path fill="#a16745" d="m27 12v-8l-2-2v12z"/><path d="m37 14v-7.5c-1.2-1-2-2.5-2-2.5v8l2 2" fill="#633f2c"/><path d="m35 4c0 0-.1-1.2.3-2h-10.3l2 2h8" fill="#8c5b3e"/><path fill="#523420" d="m35 12h-8l-2 2h12z"/><path d="M39,7.3V12h1.3C39,10,39,7.3,39,7.3z" fill="#b37b47"/><path d="m39 7.3c-.6-.2-1.5-.4-2-.8v7.5l2-2v-4.7" fill="#a16745"/><path d="m37 14h7.2c0 0-2.7-.6-4-2h-1.2l-2 2" fill="#523420"/><path fill="#b37b47" d="m15 16h8v8h-8z"/><path fill="#a16745" d="m15 16l-2-2v12l2-2z"/><path fill="#633f2c" d="m23 16v8l2 2v-12z"/><path fill="#8c5b3e" d="m23 16l2-2h-12l2 2z"/><path fill="#523420" d="m23 24h-8l-2 2h12z"/><path fill="#b37b47" d="m27 16h8v8h-8z"/><path fill="#a16745" d="m27 16l-2-2v12l2-2z"/><path fill="#633f2c" d="m35 16v8l2 2v-12z"/><path fill="#8c5b3e" d="m35 16l2-2h-12l2 2z"/><path fill="#523420" d="m27 24l-2 2h12l-2-2z"/><path d="m44.8 16h-5.8v8h8v-6.9c-.9-.3-1.7-.3-2.2-1.1" fill="#b37b47"/><path fill="#a16745" d="m37 14v12l2-2v-8z"/><path d="m47 17.1v6.9l2 2v-8.7c-.6 0-1.5 0-2-.2" fill="#633f2c"/><path d="m39 16h5.8c-.4-.5-.5-1.2-.6-2h-7.2l2 2" fill="#8c5b3e"/><path fill="#523420" d="m39 24l-2 2h12l-2-2z"/><path fill="#b37b47" d="m15 28h8v8h-8z"/><path fill="#a16745" d="m15 28l-2-2v11.4l2-1.4z"/><path fill="#633f2c" d="m23 28v8h2v-10z"/><g fill="#8c5b3e"><path d="m23 28l2-2h-12l2 2z"/><path d="m23 36h-8l-2 1.4z"/></g><path fill="#b37b47" d="m27 28h8v8h-8z"/><path fill="#a16745" d="m27 28l-2-2v10h2z"/><path fill="#633f2c" d="m35 36h2v-10l-2 2z"/><path fill="#8c5b3e" d="m27 28h8l2-2h-12z"/><path fill="#b37b47" d="m39 28h8v8h-8z"/><path fill="#a16745" d="m39 36v-8l-2-2v10z"/><path fill="#633f2c" d="m47 36h2v-10l-2 2z"/><path fill="#8c5b3e" d="m39 28h8l2-2h-12z"/><path fill="#9e6eeb" d="m13 36.8h36v23.2h-36z"/><path d="m45.4 34.9l-32.4 1.9c21.6 0 15.6 20.3 31.7 20.3-4.6-5.9.7-22.2.7-22.2" fill="#7350ab"/><g fill="#f8d317"><path d="m49 32.4c-7.1-5.6-36 4.4-36 4.4 24.9-1.9 17.6 18.9 34.9 17-4.2-9.8 7.6-16.4 1.1-21.4"/><path d="m13 60h36v2h-36z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f36c.svg b/riot/emojione/svg/1f36c.svg new file mode 100644 index 0000000..2c26a67 --- /dev/null +++ b/riot/emojione/svg/1f36c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.8 41.2c5.4 5.4 3.3 16.3-.3 20-3.7 3.7-3.2-5.6-8.6-11-5.4-5.4-14.7-5-11-8.6 3.6-3.7 14.5-5.8 19.9-.4" fill="#f2b5b5"/><path d="m2.8 41.5c0 0 6.1.3 7.1 5.1.6 2.4-.7 4.6 1.1 6.4 1.8 1.8 4 .5 6.3 1.1 4.8 1.1 5.1 7.1 5.1 7.1 3.7-3.7 5.8-14.6.3-20-5.3-5.4-16.2-3.3-19.9.3" fill="#ffe6e8"/><path d="m41.2 22.8c-5.4-5.4-3.3-16.3.3-20 3.7-3.7 3.2 5.6 8.6 11 5.4 5.4 14.7 5 11 8.6-3.6 3.7-14.5 5.8-19.9.4" fill="#f2b5b5"/><path d="m61.2 22.5c0 0-6.1-.3-7.1-5.1-.5-2.3.8-4.5-1-6.3-1.8-1.8-4-.5-6.3-1-4.8-1.1-5.1-7.1-5.1-7.1-3.7 3.7-5.8 14.6-.3 20 5.2 5.2 16.1 3.1 19.8-.5" fill="#ffe6e8"/><g fill="#f0154f"><path d="m32 32c0 0 0 0 0 0-2.8 2-6.8 1.7-9.3-.8-2.2-2.2-2.7-5.4-1.5-8.1-3.5 4.3-4.1 10.2-1.7 15 8.5 2.1 10.9-4.2 12.5-6.1"/><path d="m32 32c0 0 0 0 0 0-2-2.8-1.7-6.8.9-9.3 2.2-2.2 5.4-2.7 8-1.5-4.3-3.5-10.2-4.1-15-1.7-2.2 8.5 4.2 10.9 6.1 12.5"/><path d="m32 32c0 0 0 0 0 0 2.9-1.9 6.8-1.7 9.3.8 2.2 2.2 2.7 5.3 1.6 8 3.4-4.3 4-10.1 1.7-14.9-8.6-2.1-11 4.2-12.6 6.1"/><path d="m32.1 32.2c1.9 2.8 1.6 6.7-.9 9.2-2.2 2.2-5.3 2.7-8 1.6 4.3 3.5 10.1 4 14.9 1.7 2.1-8.6-4-11-6-12.5"/></g><path d="m41.7 21.9c-.3-.3-.6-.5-.9-.8-2.7-1.1-5.8-.6-8 1.5-2.5 2.6-2.8 6.5-.8 9.4-1.9-1.5-8.2-3.9-6.1-12.5-.4.2-.7.4-1.1.6-1 .6-1.9 1.3-2.7 2.1-.1.1-.1.1-.2.2-.3.3-.5.6-.8.9-1.2 2.7-.7 5.9 1.5 8.1 2.5 2.5 6.5 2.8 9.3.8-1.5 1.8-3.9 8.2-12.5 6.1.2.4.4.8.6 1.1.6.9 1.3 1.8 2.1 2.6.1.1.1.1.2.2.3.3.6.5.9.8 2.7 1.1 5.8.6 8-1.6 2.5-2.5 2.8-6.4.9-9.2 2 1.5 8.1 4 6 12.4.4-.2.7-.4 1.1-.6 1-.6 1.9-1.3 2.7-2.1.1-.1.1-.1.2-.2.3-.3.6-.6.8-.9 1.1-2.6.6-5.8-1.6-8-2.5-2.5-6.4-2.8-9.3-.8 1.5-1.9 4-8.2 12.6-6.1-.2-.3-.3-.7-.5-1-.6-1-1.3-1.9-2.2-2.8-.1-.1-.1-.1-.2-.2" fill="#ffe6e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f36d.svg b/riot/emojione/svg/1f36d.svg new file mode 100644 index 0000000..887f57c --- /dev/null +++ b/riot/emojione/svg/1f36d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.7 61.3c1.1 1.1 2.5.8 3.5-.2 1-1 1.2-2.4.1-3.4l-28.7-28.8c-1.1-1.1-2.7-1.1-3.7-.1-1 1-.9 2.7.1 3.7l28.7 28.8" fill="#f29a2e"/><path d="m28.9 28.8c-.7.7-.5 2.2.6 3.3l28.7 28.8c1.1 1.1 2.3 1 3 .3.7-.7.7-1.9-.3-3l-28.8-28.9c-1-1-2.5-1.3-3.2-.5" fill="#fbbf67"/><path d="m37.8 34.1c2 4.2 3.2 9.2 2.6 14.7.8-.5 1.5-1 2.2-1.5 2.1-1.6 3.1-3.5 3.4-5.2.3-1.7-.1-3.2-.9-4.4-.8-1.2-2-2.1-3.3-2.7-1.3-.6-2.7-.9-4-.9" fill="#b2f25e"/><path d="m33.7 35.4c-.1.1-.3.2-.4.3.7 2.6.9 5.3.5 8.2-.4 2.8-1.3 5.7-2.9 8.5 3.4-.5 6.6-1.8 9.4-3.5.6-5.5-.5-10.5-2.6-14.7-1.5-.1-2.8.3-4 1.2" fill="#a93feb"/><path d="m29.3 37.5c-.3 2.6-1.1 5.2-2.6 7.7-1.4 2.5-3.4 4.8-5.9 6.7 3.2.8 6.7 1 10.1.5 1.6-2.8 2.5-5.7 2.9-8.5.4-2.8.1-5.6-.5-8.2-1.3.9-2.6 1.5-4 1.8" fill="#b2f25e"/><path d="m25.1 37.5c-2.6 4.6-7.3 8.3-13.1 10.3 2.6 1.8 5.7 3.3 8.9 4.1 2.5-1.9 4.5-4.2 5.9-6.7 1.4-2.5 2.3-5.1 2.6-7.7-1.4.3-2.9.3-4.3 0" fill="#a93feb"/><path d="m20.9 35.9c-1 .8-2.1 1.6-3.3 2.2-.6.3-1.2.6-1.8.9-.6.3-1.3.5-2 .7-2.7.8-5.8.9-8.9.2.8 1.6 1.9 3.1 3.1 4.5.6.7 1.3 1.3 2 1.9l.5.4.5.4c.3.2.6.5 1 .7 5.8-2 10.6-5.7 13.1-10.3-1.4-.2-2.9-.8-4.2-1.6" fill="#b2f25e"/><path d="m18 33.2c-2.4.8-5.2.8-7.9.2-2.8-.6-5.5-1.9-8.1-3.7.2 3.4 1.1 6.9 2.8 10.1 3.1.7 6.2.6 8.9-.2.7-.2 1.3-.4 2-.7.6-.3 1.2-.6 1.8-.9 1.2-.6 2.3-1.4 3.3-2.2-.6-.4-1.4-1-1.8-1.3-.3-.3-.6-.8-1-1.3" fill="#a93feb"/><path d="m16.8 29.5c-5.1-1-10-4.5-13.4-9.8-1 3.2-1.5 6.6-1.3 10 2.6 1.8 5.3 3.1 8.1 3.7 2.7.6 5.5.5 7.9-.2-.7-1-1.2-2.3-1.3-3.7" fill="#b2f25e"/><path d="m17.1 25.1c-4.3-3-7.6-8-9-14.2-2.1 2.6-3.7 5.6-4.8 8.8 3.4 5.3 8.3 8.8 13.4 9.8-.1-1.4 0-2.9.4-4.4" fill="#a93feb"/><path d="m19 21c-1.5-2.2-2.5-4.7-3.1-7.5-.6-2.8-.5-5.9.3-9-1.6.8-3.1 1.7-4.4 2.9-.7.6-1.3 1.2-1.9 1.8-.7.5-1.2 1.1-1.8 1.8 1.3 6.2 4.7 11.2 9 14.2.4-1.5 1.1-2.9 1.9-4.2" fill="#b2f25e"/><path d="m22.1 18.2c-.6-2.5-.5-5.3.2-8.1.7-2.8 2-5.5 3.9-8.1-3.4.1-6.8.9-9.9 2.4-.8 3.1-.8 6.2-.3 9 .6 2.8 1.7 5.4 3.1 7.5.2-.3.5-.6.7-.9.2-.3.5-.6.8-.8.4-.3.9-.7 1.5-1" fill="#a93feb"/><path d="m25.9 17c1.2-5.1 4.7-10 10-13.4-3.1-1.1-6.4-1.7-9.8-1.5-1.9 2.5-3.2 5.3-3.9 8.1-.7 2.8-.8 5.6-.2 8.1 1.2-.8 2.5-1.2 3.9-1.3" fill="#b2f25e"/><path d="m30.3 17.4c3-4.3 8-7.6 14.1-8.9-2.5-2.2-5.4-3.9-8.5-5-5.2 3.4-8.8 8.3-10 13.4 1.4 0 3 .1 4.4.5" fill="#a93feb"/><path d="m34.4 19.5c1.1-.7 2.3-1.4 3.5-1.9 1.3-.5 2.5-.9 3.9-1.2 2.8-.5 5.8-.3 8.9.6-.7-1.7-1.6-3.2-2.7-4.7-.5-.7-1.1-1.4-1.7-2-.6-.6-1.2-1.2-1.8-1.7-6.1 1.3-11 4.6-14.1 8.9 1.4.4 2.8 1.1 4 2" fill="#b2f25e"/><path d="m37 22.5c2.5-.5 5.2-.4 7.9.5 2.7.8 5.3 2.4 7.7 4.6.2-3.5-.5-7.2-1.9-10.5-3.1-.9-6.1-1.1-8.9-.6-1.4.2-2.7.7-3.9 1.2-1.2.5-2.4 1.2-3.5 1.9.3.2.6.5.9.7.1.1.3.3.4.4.1.1.2.2.3.4.3.3.7.8 1 1.4" fill="#a93feb"/><path d="m37.9 26.2c4.9 1.4 9.5 5.5 12 11.4 1.6-3.1 2.5-6.6 2.7-10.1-2.3-2.2-5-3.7-7.7-4.6-2.7-.9-5.4-1-7.9-.5.6 1.2.9 2.5.9 3.8" fill="#b2f25e"/><path d="m7.6 32.8c.6 4.1 2.4 7.9 5.1 11 .3.4.7.8 1 1.1.3.3.7.7 1.1 1 .7.7 1.5 1.3 2.3 1.8 1.6 1.1 3.4 2 5.2 2.7 3.7 1.4 7.6 1.3 11.3.5 4.7-1 10.2-4.7 11.9-7.3l1.9-10c1-3.4 1.2-7.1.6-10-.4-2.4-1.4-4.8-2.7-7-.7-1.1-1.5-2.1-2.4-3.1-.4-.5-.9-.9-1.4-1.3l-.4-.2-.3-.2c-.2-.2-.4-.3-.6-.5-3.4-2.5-7.6-3.9-11.8-3.9-4.2 0-8.4 1.3-11.9 3.7-.9.6-1.7 1.3-2.4 2-.8.7-1.4 1.5-2 2.3-1.3 1.6-2.3 3.4-3.1 5.3-1.6 3.8-2.1 8-1.4 12.1m16.5-7c.2-.2.3-.5.5-.7.1-.1.2-.2.3-.3.1-.1.2-.2.3-.3.7-.6 1.6-1 2.6-1.1 1-.1 2 .1 2.8.6.2.1.4.3.6.4 2.3-.4 5 .1 7.5 1.6 0 1.4-.3 2.9-.8 4.2-.3.7-.7 1.3-1.1 1.9-.2.3-.4.6-.7.9-.1.1-.2.3-.4.4-.1.1-.2.2-.4.3-1 .9-2.1 1.5-3.3 1.7-1.2.3-2.6.3-3.8-.1-1.2-.3-2.3-1-3.3-1.9-.8-.8-1.4-1.8-1.7-2.9-.3-1.1-.2-2.3.1-3.4.3-.3.5-.9.8-1.3" opacity=".1"/><g fill="#b2f25e"><path d="m34.8 33.4c1.1 2.3 1.6 5.1 1.4 7.9-.2 2.9-1.2 5.8-2.9 8.6 3.6-.5 7-2 9.9-4.2.1-1.6 0-3.2-.3-4.7-.3-1.5-.7-2.9-1.2-4.2-1.1-2.6-2.7-4.9-4.6-6.6-.3.6-.6 1.2-1 1.8-.2.3-.4.6-.6.8-.1.1-.2.3-.4.4-.1 0-.2.1-.3.2"/><path d="m28.2 35c-2.6 4.4-8 7.6-14.5 7.7.3.4.6.7 1 1 .3.3.6.6 1 .9.7.6 1.4 1.2 2.1 1.7 1.5 1 3.1 1.9 4.8 2.5 2.8-1.6 5-3.8 6.6-6.2 1.5-2.4 2.4-5 2.5-7.6-1.2.3-2.4.3-3.5 0"/><path d="m23.6 30.5c-2.5 0-5.1-.8-7.5-2.4-2.3-1.6-4.4-4-5.8-7-1.5 3.6-1.9 7.5-1.3 11.3 2.8 1.8 5.7 2.7 8.6 2.8 2.8.1 5.4-.6 7.6-2-.9-.8-1.4-1.7-1.6-2.7"/><path d="m25.3 24.7c-1.2-2.2-1.6-5-1.2-7.8.5-2.8 1.9-5.7 4.1-8.2-3.9 0-7.8 1.2-11 3.5-.2 1.7-.2 3.3 0 4.8.2 1.5.7 2.9 1.2 4.2 1.2 2.6 3 4.7 5.1 6 .2-.5.4-1 .7-1.4.1-.2.3-.4.5-.6.1-.1.2-.2.3-.3.2 0 .2-.1.3-.2"/><path d="m30.3 24.3c.4-.5.9-.9 1.4-1.3.5-.4 1.1-.7 1.6-1.1 1.1-.7 2.4-1.2 3.9-1.3 2.9-.3 6.4.9 9.4 3.4-.4-2.3-1.3-4.5-2.6-6.5-.6-1-1.4-2-2.2-2.8-.4-.4-.9-.9-1.3-1.2l-.3-.3-.3-.2c-.2-.1-.4-.3-.6-.4-3.3.7-6.1 2.2-8 4.2-2 2-3.2 4.5-3.5 7.1.9-.3 1.8-.1 2.5.4"/></g><g fill="#a93feb"><path d="m37.1 30.1c1.9 1.7 3.5 4 4.6 6.6.5 1.3 1 2.7 1.2 4.2.3 1.5.4 3.1.3 4.7.7-.6 1.4-1.2 2.1-1.8.6-.6 1.2-1.3 1.8-1.9 1.1-1.3 2.1-2.8 2.9-4.4-2.5-5.9-7-10-12-11.4-.1 1.4-.3 2.8-.9 4"/><path d="m31.7 35.1c-.1 2.6-1 5.2-2.5 7.6-1.5 2.4-3.8 4.5-6.6 6.2 3.4 1.3 7.1 1.6 10.7 1.1 1.7-2.8 2.7-5.7 2.9-8.6.2-2.9-.3-5.6-1.4-7.9-.9.7-2 1.3-3.1 1.6"/><path d="m25.1 33.2c-2.2 1.3-4.8 2.1-7.6 2-2.8-.1-5.8-1-8.6-2.8.6 3.8 2.3 7.4 4.7 10.3 6.5 0 11.9-3.2 14.5-7.7-1.1-.4-2.1-1-3-1.8"/><path d="m23.7 27.3c-2.2-1.3-4-3.4-5.1-6-.6-1.3-1-2.7-1.2-4.2-.2-1.5-.2-3.2 0-4.8-.8.6-1.6 1.2-2.3 1.9-.7.7-1.3 1.4-1.9 2.1-1.2 1.5-2.1 3.2-2.9 4.9 1.4 3 3.5 5.4 5.8 7 2.3 1.6 5 2.4 7.5 2.4-.3-1.2-.3-2.3.1-3.3"/><path d="m27.8 23.7c.3-2.5 1.5-5 3.5-7.1 2-2 4.8-3.6 8-4.2-3.2-2.3-7.1-3.6-11-3.6-2.3 2.5-3.7 5.4-4.1 8.2-.5 2.8 0 5.6 1.2 7.8.6-.7 1.5-1 2.4-1.1"/><path d="m30.9 24.7c2.6-.5 5.7.4 8.6 2.7 2.4 2.1 4.2 5.4 4.9 9.1 2.1-3.5 3-8 2.2-12.5-3-2.5-6.4-3.6-9.4-3.4-1.5.1-2.8.6-3.9 1.3-.5.4-1.1.7-1.6 1.1-.5.4-1 .8-1.4 1.3.2.1.4.2.6.4"/></g><path d="m14.8 38.2c2.2 3.5 5.6 6.1 9.5 7.4 3.9 1.3 8.1 1.2 12-.3 3.8-1.5 8.6-5 11.2-12 0 0-.8-1.2-1.2-1.5-.8 2.7-1.9 4.7-1.9 4.7l-4.9-9.1c-.8-4.9-4.3-9-8.9-10.3-4.7-1.3-13.7 1.5-16.6 9.3-1.5 3.8-1.4 8.4.8 11.8m16.7-13.7c-.1 0-.2 0-.3 0-.3-.1-.1-.1.3 0" opacity=".1"/><g fill="#b2f25e"><path d="m30.9 24.7c2.7 1.9 5 5.2 6.2 9.4.5 3.2 0 6.7-1.4 9.9 3.6-1.4 6.7-4 8.8-7.6-.7-3.7-2.5-7-4.9-9.1-2.9-2.3-6.1-3.1-8.7-2.6"/><path d="m30.9 24.7c-1 4.3-3.4 8.3-6.8 11.1-2.4 1.3-5.3 1.9-8.4 1.6 2 3.2 5.2 5.7 8.8 6.8 2.8-1.7 5.1-4 6.4-6.7 1.4-4.4 1.3-9 0-12.8"/><path d="m30.3 25.4c-2.5.5-4.5 0-5.3-.9-.7-.5-1.3-1.1-1.8-2-.5-.9-.8-1.9-.7-3.2-.9.5-6.4 3.2-7.7 8 4.6 5.6 12.2 1.7 15.5-1.9"/></g><g fill="#a93feb"><path d="m30.9 24.7c1.3 3.8 1.4 8.4 0 12.9-1.4 2.7-3.6 5-6.4 6.7 3.6 1.2 7.6 1.1 11.1-.3 1.5-3.2 2-6.7 1.4-9.9-1.1-4.2-3.4-7.5-6.1-9.4"/><path d="m30.9 24.7c-3 3-10.7 6.2-16.2 2.6-.8 3.7-.6 7 1 10.2 3.1.3 6-.4 8.4-1.6 3.4-2.9 5.8-6.9 6.8-11.2"/><path d="m30.3 25.4c-1.1-.6 7.5 2.1 8.3 3.8.1-.5.1-1.2 0-1.9l-.1-.6v-.3l-.1-.3c-.1-.4-.2-.9-.4-1.4-.4-1-1-2-1.9-3.1-.5-.5-1-1-1.6-1.5-.3-.2-.6-.4-.9-.6-.3-.2-.6-.4-1-.5-.7-.3-1.3-.5-2-.7-.6-.2-1.2-.3-1.8-.3-1.1-.1-2 0-2.8.1-1.6.3-2.6.8-3.5 1.3-.1 1.3.2 2.4.7 3.2.5.9 1.1 1.5 1.8 2 .8.8 2.8 1.3 5.3.8"/></g><path d="m25.9 36c1.4 1.4 3.3 2 5.6 1.5 2.9-.7 8.4-2.8 8-10.1-.4-.3-1-.7-1-.7s.3 1.4.1 2.6l-13.3 2.7c-.6 1.3-.5 3 .6 4" opacity=".1"/><path d="m30.3 25.4c.3 0 .8.3 1.3.9.5.5 1 1.4 1.4 2.5 1.1 2.7.3 5.7-1.7 8 1.8-.3 3.6-1.2 4.9-2.5.7-.7 1.2-1.4 1.6-2.2.4-.8.7-1.7.8-2.8-2-8.4-10.4-5-8.3-3.9" fill="#b2f25e"/><path d="m30.3 25.4c1.7 3.3-1.7 6.1-5.2 7.2-.2.8-.1 1.8.9 2.8.5.5 1.1.9 1.9 1.2.1 0 .2.1.3.1 0 0 .2 0 .2.1h.2c.2 0 .4.1.7.1.4 0 .9 0 1.4 0 .2 0 .3 0 .5-.1 2-2.3 2.8-5.3 1.7-8-.3-1.1-.9-1.9-1.4-2.5-.5-.6-.9-.9-1.2-.9" fill="#a93feb"/><path d="m30.3 25.4c-1.4 3.8-4.7 4.4-5.2 7.2 2.4-.3 7.6-3.2 5.2-7.2" fill="#b2f25e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f36e.svg b/riot/emojione/svg/1f36e.svg new file mode 100644 index 0000000..de1d431 --- /dev/null +++ b/riot/emojione/svg/1f36e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,52C15.5,52,2,44.6,2,35.4c0-9.1,13.5-16.6,30-16.6s30,7.4,30,16.6C62,44.6,48.5,52,32,52z" fill="#e0e1e5"/><path d="M60.5,34.8C60.5,43.2,47.7,50,32,50S3.5,43.2,3.5,34.8c0-8.4,12.8-15.2,28.5-15.2S60.5,26.4,60.5,34.8z" fill="#f5f5f5"/><path d="m51.5 25.8c-3.6-2-35.2-8.2-42.2 4.5-1.9 3.5-.4 8.4 5.5 11.7 3.6 2.1 11.3 5.5 16.1 6.3 4.9.8 9.4-2.1 13.2-2.9 6.2-1.4 10.2-4.3 10.6-8.8.4-4.6 2.6-7.5-3.2-10.8" fill="#a8521a"/><ellipse cx="32" cy="33.7" rx="19.2" ry="10.7" fill="#7d3d15"/><path d="m45.6 16.8h-27.2c0 0-3.1 17.3-3.1 17.5 0 3.8 7.5 6.8 16.7 6.8 9.2 0 16.7-3 16.7-6.8 0-.2-3.1-17.5-3.1-17.5" fill="#ffd170"/><path d="m45.9 17.9c0-3.1-6.2-5.7-13.9-5.7s-13.9 2.5-13.9 5.7 6.2 5.7 13.9 5.7c8.5 0 13.9-4 13.9-5.7" fill="#7d3d15"/><path d="m44.8 17.1c0-2.8-5.8-5.1-12.9-5.1s-12.9 2.3-12.9 5.1c0 2.8 5.8 5.1 12.9 5.1 7.9-.1 12.9-3.6 12.9-5.1" fill="#a8521a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f36f.svg b/riot/emojione/svg/1f36f.svg new file mode 100644 index 0000000..031903f --- /dev/null +++ b/riot/emojione/svg/1f36f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m33 16l-27.5 6.6c0 0-3.5 6.2-3.5 12.6 0 4.3.9 7.7 4.4 11.4 3.5 3.7 3.1 3.5 3.5 5.3.3 1.9 3.2 10.1 22.3 10.1 19.1 0 22.3-8.2 22.3-10.1 0-2.4 1.3-3 4.8-6.7l-26.3-29.2" fill="#8f6453"/><path d="m55.5 12.5c-2-1.2-.7-1.2-1.2-4.2-.5-2.9-5.8-6.3-22.1-6.3-16.2 0-21.6 3.3-22.1 6.2-.5 3 .7 2.9-1.2 4.2-1.9 1.4-6.1 10.5-4.1 12.3 2.3 2.1 5.5-3.2 10.1-3.2 3.2 0 3.6 6.6 6.2 6.6 2.6 0 11.2-6.6 13.2-6.6 7.4 0 5.8 13.4 12.3 13.4 5 0 9.6 16 12.9 12.1 5.2-6.2 1.5-31.1-4-34.5" fill="#ffce31"/><path d="m53.9 11.9c0 .5-9.4 5.1-21.7 5.1-12.3 0-21.7-4.5-21.7-5.1s9.4 3.4 21.7 3.4c12.3 0 21.7-4 21.7-3.4" fill="#e3a300"/><path d="m54.6 49.5c0 .5-8 6.3-22.4 6.3-14.4 0-22.4-5.8-22.4-6.3 0-.5 8 4.4 22.4 4.4 14.4 0 22.4-4.9 22.4-4.4" fill="#724e41"/><path d="m47.3 7.9c1.1-.4 1.7-.9 1.7-1.3 0-1.7-7.5-3.1-16.8-3.1s-16.8 1.4-16.8 3.1c0 .5.6.9 1.7 1.3 2.7-1 8.5-1.7 15.1-1.7s12.4.7 15.1 1.7" fill="#e3a300"/><path d="m47.3 7.9c-2.7-1-8.5-1.7-15.1-1.7-6.7 0-12.4.7-15.1 1.7 2.7 1 8.5 1.7 15.1 1.7s12.4-.7 15.1-1.7" fill="#bd8800"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f370.svg b/riot/emojione/svg/1f370.svg new file mode 100644 index 0000000..c42ca1b --- /dev/null +++ b/riot/emojione/svg/1f370.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d3976e"><path d="M57.7 54.7 2 62 2 51.6 57.7 44.1z"/><path d="M57.8 33.2 2 40.9 2 29.9 57.8 22z"/></g><path fill="#fff" d="M57.7 44.1 2 51.6 2 40.9 57.8 33.2z"/><path d="m20.8 39.7c.2 4.4-3.5 8.4-8.3 9.1-4.8.6-8.9-2.3-9.1-6.7l17.4-2.4" fill="#ef4d3c"/><path d="m18.6 40c.1 3.3-2.6 6.3-6.2 6.8-3.6.5-6.6-1.7-6.8-5l13-1.8" fill="#ff717f"/><path d="m56.2 34.9c0 4.4-3.9 8.5-8.8 9.2-4.8.7-8.8-2.4-8.9-6.8l17.7-2.4" fill="#ef4d3c"/><path d="m53.9 35.2c0 3.3-2.9 6.4-6.5 6.9-3.6.5-6.6-1.8-6.6-5l13.1-1.9" fill="#ff717f"/><path d="m21.2 47.6c-.2-4.3 3.6-8.5 8.4-9.1 4.9-.7 8.9 2.4 9 6.7l-17.4 2.4" fill="#ef4d3c"/><path d="m23.4 47.3c-.1-3.2 2.7-6.3 6.3-6.8 3.6-.5 6.6 1.8 6.7 5l-13 1.8" fill="#ff717f"/><g fill="#c98659"><path d="m3 34.7l2.7 2.1 2.5-2.8-2.8-2z"/><path d="m20.8 34.2l2.7 2.1 2.5-2.8-2.7-2z"/><path d="m47.5 31.5l2.6 2.1 2.6-2.8-2.6-2.1z"/><path d="m25.6 30.6l2.2 1.7 2-2.3-2.2-1.6z"/><path d="m45.6 27.9l-2.1 2.2 2.1 1.6 2.1-2.2z"/><path d="m18.7 28.2l-2 2.2 2.1 1.6 2.1-2.2z"/><path d="m8.5 36.4l2.4 1.8 2.2-2.4-2.4-1.8z"/><path d="m14.3 31.3l-1.4 1.6 1.6 1.1 1.4-1.5z"/><path d="m30.8 32.4l1.5 1.1 1.4-1.6-1.5-1.1z"/><path d="m35.1 28.8l1.6 1.2 1.4-1.6-1.5-1.2z"/><path d="m39.7 32.1l1.5 1.1 1.4-1.5-1.5-1.2z"/><path d="m49.6 25.4l-1.5-1.2-1.4 1.6 1.5 1.2z"/><path d="m34.1 34.2l1.5 1.2 1.4-1.6-1.5-1.1z"/><path d="m16.1 36.7l1.5 1.1 1.4-1.5-1.5-1.1z"/><path d="m10.5 30.8l-1.5-1.2-1.4 1.6 1.5 1.1z"/><path d="m54.6 24.2l-1.5 1.6 1.5 1.2 1.4-1.6z"/><path d="m56 50.1l-2.6-2-2.5 2.7 2.6 2z"/><path d="m38.6 50.6l-2.6-2-2.6 2.7 2.7 1.9z"/><path d="m12.5 53.2l-2.6-2-2.5 2.7 2.7 1.9z"/><path d="m33.8 54l-2.1-1.5-2 2.1 2.1 1.5z"/><path d="m14.5 56.6l1.9-2.1-2.1-1.5-1.9 2.1z"/><path d="m40.5 56.3l2-2.1-2.1-1.5-2 2.1z"/><path d="m50.7 48.5l-2.3-1.7-2.2 2.3 2.2 1.7z"/><path d="m44.8 53.4l1.4-1.5-1.5-1.1-1.4 1.5z"/><path d="m28.8 52.4l-1.5-1.1-1.4 1.5 1.5 1.1z"/><path d="m24.6 55.7l-1.5-1-1.4 1.4 1.5 1.1z"/><path d="m20.1 52.6l-1.5-1.1-1.4 1.5 1.5 1.1z"/><path d="m10.7 58.9l1.5 1.1 1.3-1.5-1.5-1.1z"/><path d="m25.5 50.6l-1.5-1.1-1.3 1.5 1.5 1.1z"/><path d="m43.2 48.2l-1.4-1.1-1.5 1.5 1.5 1.1z"/><path d="m48.5 53.9l1.4 1.1 1.4-1.5-1.4-1.1z"/><path d="m6 60l1.4-1.5-1.5-1.1-1.4 1.5z"/></g><path d="m62 21.6c0-4.3-17.8-8.7-21.7-8.2-16.7 2.2-38.3 16.5-38.3 16.5 16.6-2.2 50.1-6.5 53-6.8 1.5-.2 2.4.1 2.4 1.3 0 4.3 0 30.3 0 30.3l4.6-.6c0 .1 0-28.6 0-32.5" fill="#8f6453"/><path d="m55.9 20.9c8.5-1.2-15.5-7.7-19.2-7.2-15.9 2.1-32 14.4-32 14.4s49.2-6.9 51.2-7.2" fill="#724e41"/><path fill="#8cc63e" d="m42.3 10l1.9-2.7-4.4-.4-.5-4.1-2.9 1.8-3.5-2.6-1 11 13.1.2z"/><path d="m39.8 18.5c-4.1 3.8-13.2 4.3-15.1 2.5-2-1.8-1.5-10.1 2.7-14 3.1-2.8 7.7-1.5 10.9 1.4 3.1 3 4.5 7.3 1.5 10.1" fill="#ef4d3c"/><g fill="#ffffc4"><path d="m29.2 16.4l-.7.7.7.7.8-.7z"/><path d="m39.5 12.4l-.7.6.7.7.7-.7z"/><path d="m36.1 13l-.7.7.7.7.7-.7z"/><path d="m32.8 12.4l-.7.6.7.7.7-.7z"/><path d="m36.5 9.7l-.7.7.7.6.8-.6z"/><path d="m34.5 6.9l-.7.6.7.7.7-.7z"/><path d="m32.1 9.3l-.7.7.7.6.7-.6z"/><path d="m29.1 12.2l-.7.6.7.7.7-.7z"/><path d="m33 16l-.8.7.8.7.7-.7z"/><path d="m38.2 16.1l-.7.7.7.7.7-.7z"/><path d="m35.4 18.8l-.8.7.8.6.7-.6z"/><path d="m30.7 19.5l-.7.6.7.7.7-.7z"/><path d="m26.2 18.1l-.7.7.7.7.7-.7z"/><path d="m25.7 14.7l-.7.7.7.6.8-.6z"/><path d="m27.9 8.2l-.7.6.7.7.7-.7z"/><path d="m26.2 11.2l-.7.7.7.6.7-.6z"/><path d="m30.9 6l-.7.7.7.6.7-.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f371.svg b/riot/emojione/svg/1f371.svg new file mode 100644 index 0000000..dbc80e5 --- /dev/null +++ b/riot/emojione/svg/1f371.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m62 55.6c0 .8-.6 1.4-1.4 1.4h-57.2c-.8 0-1.4-.6-1.4-1.4v-47.2c0-.8.6-1.4 1.4-1.4h57.2c.8 0 1.4.6 1.4 1.4v47.2" fill="#3e4347" id="0"/><use xlink:href="#0"/><g fill="#ff5760"><path d="m36.1 36.8c0-1.5-1.2-2.7-2.8-2.7h-24.4c-1.5 0-2.8 1.2-2.8 2.7v13.3c0 1.5 1.2 2.7 2.8 2.7h24.5c1.5 0 2.8-1.2 2.8-2.7-.1 0-.1-13.3-.1-13.3"/><path d="m23.7 13.9c0-1.5-1.2-2.7-2.8-2.7h-12c-1.5 0-2.8 1.2-2.8 2.7v13.3c0 1.5 1.2 2.7 2.8 2.7h12.1c1.5 0 2.8-1.2 2.8-2.7-.1 0-.1-13.3-.1-13.3"/><path d="m30.6 11.1c-1.5 0-2.8 1.2-2.8 2.7v13.3c0 1.5 1.2 2.7 2.8 2.7h24.5c1.5 0 2.8-1.2 2.8-2.7v-13.2c0-1.5-1.2-2.7-2.8-2.7h-24.5z"/></g><path d="m33.5 41.4c0-1.1-.9-2.1-2.1-2.1 1.1 0 2.1-.9 2.1-2.1 0-1.1-.9-2.1-2.1-2.1-1.1 0-2.1.9-2.1 2.1 0-1.1-.9-2.1-2.1-2.1-1.1 0-2.1.9-2.1 2.1 0-1.1-.9-2.1-2.1-2.1-1.1 0-2.1.9-2.1 2.1 0-1.1-.9-2.1-2.1-2.1s-1.8 1.1-1.8 2.2c0-1.1-.9-2.1-2.1-2.1-1.1 0-2.1.9-2.1 2.1 0-1.1-.9-2.1-2.1-2.1-1.1 0-2.1.9-2.1 2.1 0 1.1.9 2.1 2.1 2.1-1.1 0-2.1.9-2.1 2.1 0 1.1.9 2.1 2.1 2.1-1.1 0-2.1.9-2.1 2.1 0 1.1.9 2.1 2.1 2.1-1.1 0-2.1.9-2.1 2.1 0 1.1.9 2.1 2.1 2.1 1.1 0 2.1-.9 2.1-2.1 0 1.1.9 2.1 2.1 2.1 1.1 0 2.1-.9 2.1-2.1 0 1.1.9 2.1 2.1 2.1s2.1-.9 2.1-2.1c0 1.1.9 2.1 2.1 2.1 1.1 0 2.1-.9 2.1-2.1 0 1.1.9 2.1 2.1 2.1 1.1 0 2.1-.9 2.1-2.1 0 1.1.9 2.1 2.1 2.1 1.1 0 2.1-.9 2.1-2.1 0-1.1-.9-2.1-2.1-2.1 1.1 0 2.1-.9 2.1-2.1 0-1.1-.9-2.1-2.1-2.1.9-.1 1.8-1.1 1.8-2.2" fill="#fff"/><circle cx="21.1" cy="43.5" r="2.1" fill="#ff5760"/><ellipse cx="14.9" cy="20.5" rx="8" ry="8" fill="#3e4347"/><ellipse cx="14.9" cy="20.5" rx="6.4" ry="6.4" fill="#c94747"/><path d="m57.1 19.8c0-.4-.6-.6-.7-.9.1-.4.5-.5.6-.8.2-.4-.4-.7-.6-1-.3-.4.3-.9 0-1.3-.2-.4-.8-.2-1.1-.5-.3-.3-.1-.9-.5-1.1-.4-.2-.8.2-1.2.1-.4-.1-.6-.9-1.1-.7-.3.2-.5.7-1 .7-.3 0-.9-.4-1.1 0-.2.3-.1.9-.5 1-.4.2-1.1.1-.9.7.1.4.3.8-.1 1.1-.3.3-.7.6-.3 1 .2.2.7.5.5.8-.3.3-.9.6-.5 1.1.2.2.7.5.5.9-.2.3-.8.6-.6 1 .1.2.7.5.6.9-.1.4-.9.6-.6 1.1.2.3.7.5.7 1 0 .3-.4.9 0 1.1.3.2.9.1 1.1.5.2.4.1 1.1.7.9.4-.1.8-.3 1.1.1.3.3.6.7 1 .3.3-.3.5-.6 1-.5.5.1.9.2 1-.4.1-.5.3-.7.8-.8.5-.1.6-.3.5-.8-.2-.5-.1-.7.3-1.1.5-.5.3-.7-.2-1.1-.7-.7.9-1 .3-1.7-.2-.2-.6-.4-.5-.7.2-.4.8-.5.8-.9" fill="#dae3ea"/><g fill="#839391"><path d="m50.3 16.7c.2-.4 0-1 .4-1.2.3-.2.9.2 1.1.1.4-.2.6-.7 1.1-.7.4 0 .7.7 1 .7.4 0 .8-.3 1.2 0 .4.2.2.9.4 1.2-.3-.3-.3-.7-.6-1-.2-.1-.8.3-1.1.2-.4-.1-.6-.7-.9-.7-.1 0-.6.6-.8.7-.4.1-.8-.2-1.2-.2-.3.1-.3.7-.6.9"/><path d="m50.3 20.7c.2-.4 0-1 .4-1.2.3-.2.9.2 1.1.1.4-.2.6-.8 1.1-.7.4 0 .7.7 1 .7.4 0 .8-.3 1.2 0 .4.2.2.9.4 1.2-.3-.3-.3-.7-.6-1-.2-.1-.8.3-1.1.2-.4-.1-.6-.7-.9-.7-.1 0-.6.6-.8.7-.4.1-.8-.2-1.2-.2-.3.1-.3.7-.6.9"/><path d="m50.3 18.7c.2-.4 0-1 .4-1.2.3-.2.9.2 1.1.1.4-.2.6-.7 1.1-.7.4 0 .7.7 1 .7.4 0 .8-.3 1.2 0 .4.2.2.9.4 1.2-.3-.3-.3-.7-.6-1-.2-.1-.8.3-1.1.2-.4-.1-.6-.7-.9-.7-.1 0-.6.6-.8.7-.4.1-.8-.2-1.2-.2-.3.1-.3.7-.6.9"/></g><g fill="#fc97b2"><path d="m55.3 24.4c0 0 0 0 0 0"/><path d="m55.3 24.4c0 0 0 .1 0 0"/><path d="m55.3 24.5c0 .1 0 .1 0 0"/><path d="m51.6 24.7c-.9-1.1-.3-3.1 1.3-2.9 1.3.2 1.7 2.4.3 2.2-.6-.1-1-.9-.3-1.2.6-.3.7.4.7.8.8-.6-.4-1.6-1.1-1-.7.5-.4 1.5.3 1.9 1.9 1 3-2.5.8-3-2-.5-3.2 2.1-2.1 3.6 1.1 1.5 3.5 1.1 4.1-.7-.6.3-.9 1-1.7 1.1-1.1.1-1.8-.2-2.3-.8"/></g><path d="m55.3 24.5c0 0 0 0 0 0" fill="#fc97b2" id="1"/><use xlink:href="#1"/><g fill="#83bf4f"><path d="m45.4 18c-4.2-1.3-8.7-1.3-13 0-1.7.6-3-2.4-.9-3.1 4.8-1.5 10-1.5 14.8 0 2.1.7.8 3.7-.9 3.1"/><path d="m45.4 22.6c-4.2-1.3-8.7-1.3-13 0-1.7.6-3-2.4-.9-3.1 4.8-1.5 10-1.5 14.8 0 2.1.7.8 3.7-.9 3.1"/><path d="m45.4 27.2c-4.2-1.3-8.7-1.3-13 0-1.7.6-3-2.4-.9-3.1 4.8-1.5 10-1.5 14.8 0 2.1.7.8 3.7-.9 3.1"/></g><path d="m43 34.1c-1.5 0-2.8 1.2-2.8 2.7v13.3c0 1.5 1.2 2.7 2.8 2.7h12.1c1.5 0 2.8-1.2 2.8-2.7v-13.3c0-1.5-1.2-2.7-2.8-2.7 0 0-12.1 0-12.1 0" fill="#ff5760"/><path d="m54.8 37.1c0-1.1-1.3-1.8-1.9-1.9-.5-.1-1.6.1-1.9.3-.3-.2-1.4-.5-1.9-.5-.5 0-1.8.3-2.1.5-.3-.2-1.3-.3-1.8-.3-.7.1-1.9.9-1.9 1.9-1.1 0-1.9.9-1.9 1.9s.9 1.9 1.9 1.9c0 1.1 1.3 1.8 1.9 1.9.4.1 1.5-.1 1.8-.3.3.2 1.5.3 2.1.3.5 0 1.7-.2 1.9-.3.3.2 1.4.3 1.9.3.7-.1 1.9-.9 1.9-1.9 1.1 0 1.9-.9 1.9-1.9s-.8-1.9-1.9-1.9" fill="#fbbf67"/><g fill="#89664c"><path d="m51.6 36.5h1v5h-1z"/><path d="m45.6 36.5h1v5h-1z"/><path d="m48.6 36.5h1v5h-1z"/></g><path d="m54.8 46.1c0-1.1-1.3-1.8-1.9-1.9-.5-.1-1.6.1-1.9.3-.3-.2-1.4-.5-1.9-.5-.5 0-1.8.3-2.1.5-.3-.2-1.3-.3-1.8-.3-.7.1-1.9.9-1.9 1.9-1.1 0-1.9.9-1.9 1.9s.9 1.9 1.9 1.9c0 1.1 1.3 1.8 1.9 1.9.4.1 1.5-.1 1.8-.3.3.2 1.5.3 2.1.3.5 0 1.7-.2 1.9-.3.3.2 1.4.3 1.9.3.7-.1 1.9-.9 1.9-1.9 1.1 0 1.9-.9 1.9-1.9s-.8-1.9-1.9-1.9" fill="#fbbf67"/><g fill="#89664c"><path d="m51.6 45.5h1v5h-1z"/><path d="m45.6 45.5h1v5h-1z"/><path d="m48.6 45.5h1v5h-1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f372.svg b/riot/emojione/svg/1f372.svg new file mode 100644 index 0000000..52663af --- /dev/null +++ b/riot/emojione/svg/1f372.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.5 44.3c-13.2 0-24.2-4.1-26.7-9.5 4.6 14.1 1.8 27.2 26.7 27.2 24.9 0 22.1-13.1 26.7-27.2-2.5 5.4-13.5 9.5-26.7 9.5" fill="#3e4347"/><path d="m20.2 20.5c14.1-3.9 46.5 2 39.4 15.4 3.9 4.4 5.3 9.1-13.3 8.8-28.6 6.7-52.2-7.2-41.8-17.7-2.5-5.1 3-7.7 15.7-6.5" fill="#6f7980"/><path d="m32.5 43.7c12.5 0 22.9-3.9 25.3-9 .2-.5.3-1 .5-1.5 0-.3.1-.5.1-.8 0-6.2-11.6-11.2-25.8-11.2s-25.8 5-25.8 11.2c0 .3 0 .5.1.8.1.5.3 1 .5 1.5 2.2 5.1 12.6 9 25.1 9" fill="#3e4347"/><path d="m32.5 43.7c12.5 0 22.9-3.9 25.3-9 0-.2.1-.3.1-.5-2.1-5.3-12.7-9.3-25.5-9.3-12.8 0-23.4 4-25.5 9.3.1.2.1.3.1.5 2.6 5.1 13 9 25.5 9" fill="#fbbf67"/><path d="m36 30.4c-5-.1-11.1 3.9-15.2 3.6-6.8-.5.2 2.8 5 2.8 3.2 0 5.4-2.9 7.1-4.1 2.4-1.5 8.3-2.2 3.1-2.3" fill="#d33b23"/><g fill="#ff8736"><path d="m21.2 27.1c-1.3-3.6-8.8 2.3-2.4 3.6 1 .2 3.5-.4 2.4-3.6"/><path d="m35.7 38.4c-1.6-4.4-10.9 2.9-2.9 4.4 1.2.2 4.3-.5 2.9-4.4"/><path d="m37.4 25.8c-1.5-3.6-10.8 2.3-2.9 3.6 1.1.1 4.2-.5 2.9-3.6"/><path d="m52.7 29.7c-.6-3.9-12.5-1.7-4.3 2.4 1.2.6 4.8 1.1 4.3-2.4"/></g><g fill="#89664c"><path d="m15.1 33.2c-1.1-1.5-2.7-3.5-3.3-2.5-.9 1.4-1.2 4.2-.5 4.3 5 1 4.6-.6 3.8-1.8"/><path d="m42.6 30.4c-1.8.8-2.9.2-3.7 1.4-1.9 2.7 4.6 3.6 5.8 2 .9-1.1-.9-3.9-2.1-3.4"/><path d="m44.1 37.1c-1.3-.6-1 1.4-3-.2-1.4-1.1-4.4 1.7-2.4 3.6 2.2 2.1 2.8.1 3.7.3 1.9.3 5.2-2.2 1.7-3.7"/><path d="m22.1 37.7c-1.2-1.2-3.1 2.2-2.4 3.1 1.5 2 6.9 1.6 8.3.1 1.8-1.8-3-.4-5.9-3.2"/></g><g fill="#699635"><path d="m17.5 36.7c0 0 .1 1.2.3 1.7-1.3-.5-1.3-2.8-1.3-2.8s-.9.5-.8 1.4c-1.4-1.2-2.6-.6-2.6-.6s1.8 1 2.1 1.7c-1 .1-1.6.4-2 1.2 0 0 2-1 3.5-.3-.6.5-.3 1.7-.3 1.7 2.4-2.5 3.9-.3 5-.9-.9-1.2-2.2-1.4-2.2-1.4-.5-1-1.7-1.7-1.7-1.7"/><path d="m28.3 26.9c-1.2-.2-2.4.4-2.4.4s1.1.5 1.6.7c-1.1.9-3.1-.3-3.1-.3s0 1 .8 1.4c-1.7.6-1.9 2-1.9 2s1.8-1 2.5-.9c-.5.9-.5 1.6.1 2.3 0 0 .2-2.2 1.6-3.1.1.8 1.3 1.1 1.3 1.1-.9-3.3 1.8-3.5 1.8-4.7-1.4 0-2.3 1.1-2.3 1.1"/><path d="m51.6 35.9c.5-.5 2.6-.8 2.6-.8s-.9-1-2.7-.5c.4-.8-.2-1.6-.2-1.6s-.9 2.1-2.3 2.1c.4-.5.9-1.5.9-1.5s-1.4.3-2.2 1.2c0 0-1.3-.4-2.5.4.7 1 3-.5 4.2 2.7 0 0 .7-1 .4-1.7 1.6-.1 3.1 1.6 3.1 1.6 0-.9-.4-1.4-1.3-1.9"/></g><g opacity=".6" fill="#a6aeb0"><path d="m33.3 11.4c-3.7-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m22.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m44.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f373.svg b/riot/emojione/svg/1f373.svg new file mode 100644 index 0000000..4f80ed5 --- /dev/null +++ b/riot/emojione/svg/1f373.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 4l-.3-.3c-2.3-2.3-6.1-2.3-8.4 0l-10 10.1c-10-6.2-23.3-5-32 3.7-10.1 10.2-10.1 26.7 0 36.8 10.1 10.2 26.6 10.2 36.7 0 8.6-8.6 9.9-21.9 3.9-31.9l10.1-10.1c2.3-2.3 2.3-6 0-8.3m-4.7 8.1c-2.1 0-3.7-1.7-3.7-3.7 0-2.1 1.7-3.7 3.7-3.7s3.7 1.7 3.7 3.7c0 2.1-1.6 3.7-3.7 3.7" fill="#3e4347"/><path d="m12.2 30.1c-4.1 9.1-1.2 19.3 6.6 22.8 7.7 3.5 17.3-1.1 21.4-10.2 4.1-9.1 1.2-19.3-6.6-22.8-7.7-3.5-17.3 1-21.4 10.2" fill="#fff"/><circle cx="23" cy="36" r="8" fill="#f29a2e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f374.svg b/riot/emojione/svg/1f374.svg new file mode 100644 index 0000000..e9d6b48 --- /dev/null +++ b/riot/emojione/svg/1f374.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.1 3.1c-1.7 1.8-5.2 13.1 9.5 27.9 4.7 4.7 8.2 1.2 11.1 4.2 2.9 2.9 26.3 26.3 26.3 26.3s5.7-1.9 6.6-6.7l-52.1-52.2c0 0-.5-.4-1.4.5" fill="#94989b"/><path d="m61.8 11c.7-1.3-.9-.9-.9-.9s-10.6 10.2-12.1 9c-1.5-1.2 10.4-11 9-12.9-1.3-1.7-11.7 10.5-13 9-1.2-1.5 8.9-12.1 8.9-12.1s.4-1.6-.9-.9c-16 8.6-18 16.6-18 16.6s-.6 1.6.6 2.8c.1.1-29.2 29.3-33.1 33.2-1.9 1.9 5.1 8.8 7 6.9 3.9-3.9 33-33.3 33.1-33.2 1.2 1.2 2.8.7 2.8.7s8-2.1 16.6-18.2" fill="#b2c1c0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f375.svg b/riot/emojione/svg/1f375.svg new file mode 100644 index 0000000..7f210fc --- /dev/null +++ b/riot/emojione/svg/1f375.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.6 55.3h-27.2c0 0 .4 2.6 4 4.8 1.3.8 4.5 1.9 9.6 1.9 5.1 0 8.3-1.1 9.6-1.9 3.7-2.1 4-4.8 4-4.8" fill="#d2d8d9"/><g fill="#eff6f7"><path d="m57 31.7h-50c0 0 .7 11.1 7.3 20.1 2.5 3.3 8.3 8.1 17.7 8.1 9.3 0 15.2-4.8 17.7-8.1 6.6-9 7.3-20.1 7.3-20.1"/><ellipse cx="32" cy="31.7" rx="25" ry="9.7"/></g><path d="m32 27c10.6 0 19.5 2.7 21.5 6.4.3-.5.5-1.1.5-1.6 0-4.4-9.8-8-22-8-12.2 0-22 3.6-22 8 0 .6.2 1.1.5 1.6 2-3.7 10.9-6.4 21.5-6.4" fill="#d2d8d9"/><path d="m32 39.7c10.6 0 19.5-2.7 21.5-6.4-2-3.6-10.9-6.3-21.5-6.3-10.6 0-19.5 2.7-21.5 6.4 2 3.6 10.9 6.3 21.5 6.3" fill="#96b269"/><path fill="#4e6b20" d="m25.5 52l-4.3-5.7-6.1 3.5-1.4 6.5 10.5 2.1z"/><path fill="#8cc63e" d="m24.7 52.5l-3.5-6.2-6.6 2.6-2.2 6.1 10 3.7z"/><circle cx="20.4" cy="48.7" r="1.2" fill="#4e6b20"/><path fill="#b59267" d="m19.9 38.2h1v10h-1z"/><g opacity=".6" fill="#a6aeb0"><path d="m33.3 11.4c-3.7-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m22.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.2 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m44.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.2 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f376.svg b/riot/emojione/svg/1f376.svg new file mode 100644 index 0000000..b573b45 --- /dev/null +++ b/riot/emojione/svg/1f376.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m44.1 50.4c7.6 0 13.8 2.6 13.8 5.8 0 3.2-6.2 5.8-13.8 5.8-7.6 0-13.8-2.6-13.8-5.8 0-3.2 6.1-5.8 13.8-5.8" fill="#b7b198"/><path d="m35.6 5.4c-.3 2.2 1.9 6.4 2 8.7.2 3.3-18.4 24.7-8.6 40.5 4.4 7.1 25.7 7.1 30.1 0 9.8-15.8-8.8-37.1-8.6-40.5.1-2.2 2.4-6.5 2-8.7-.7-4.5-16.1-4.5-16.9 0" fill="#f9f3d9"/><g fill="#b7b198"><path d="m37 5.7c-.8 4.9 14.9 4.9 14.1 0-.6-4-13.4-4-14.1 0"/><ellipse cx="13" cy="58.5" rx="10.1" ry="3.5"/></g><g fill="#f9f3d9"><path d="m2 43.8h22v13.1h-22z"/><ellipse cx="13" cy="43.8" rx="11" ry="3.8"/><ellipse cx="13" cy="56.9" rx="11" ry="3.8"/></g><path d="m22.1 45.1c.5-.3.7-.7.7-1.1 0-1.6-4.4-3-9.8-3-5.4 0-9.8 1.3-9.8 3 0 .4.3.8.7 1.1 1.5-1.1 5-1.9 9.1-1.9 4.1 0 7.7.8 9.1 1.9" fill="#b7b198"/><path d="m22.1 45.1c-1.5-1.1-5-1.9-9.1-1.9-4.1 0-7.7.8-9.1 1.9 1.5 1.1 5 1.9 9.1 1.9 4.1-.1 7.7-.9 9.1-1.9" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f377.svg b/riot/emojione/svg/1f377.svg new file mode 100644 index 0000000..e2652b0 --- /dev/null +++ b/riot/emojione/svg/1f377.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m15.1 22.1c.9 8 8.2 14.9 16.9 14.9 9.4 0 17.1-8 17.1-16.7 0-.1 0-.1 0-.2-9.8-1.3-22.1 5.8-34 2" fill="#961623"/><path d="m54 20.4c0-11.4-5.7-18.4-5.7-18.4h-32.6c0 0-5.7 7.1-5.7 18.4 0 10.8 9.3 20.9 20.9 21.5-.1 6.3-.7 12.8-2.2 15.1-2.2 3.2-9.8 1.6-9.8 5h26.2c0-3.4-7.6-1.8-9.8-5-1.5-2.3-2.1-8.8-2.2-15.1 11.6-.6 20.9-10.6 20.9-21.5m-22 18.9c-9.8 0-17.9-7.8-18.9-16.7-.1-.6-.1-1.3-.1-1.9 0-9.9 4.9-15.9 4.9-15.9h28.2c0 0 4.8 6 4.9 15.7 0 .1 0 .2 0 .2 0 9.6-8.5 18.6-19 18.6" opacity=".8" fill="#a1b8c7"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f378.svg b/riot/emojione/svg/1f378.svg new file mode 100644 index 0000000..a8c9960 --- /dev/null +++ b/riot/emojione/svg/1f378.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.7 3.3c0 0 0 0 0 0 .2-.6 0-1.2-.4-1.3-.4-.1-.9.2-1.1.8l-12.5 34.2.8.3 13.2-34" fill="#f29a2e"/><path d="m45.5 17.9c-.3 2.4-3.2 3.9-6.5 3.5-3.2-.4-5.6-2.7-5.3-5 .3-2.4 3.2-3.9 6.5-3.5 3.3.4 5.6 2.6 5.3 5" fill="#8cc63e"/><path d="m38.4 16.9c-.2 1.5-1.3 2.6-2.4 2.4-1.1-.1-1.9-1.5-1.7-2.9.2-1.5 1.3-2.6 2.4-2.4 1.1.1 1.9 1.5 1.7 2.9" fill="#ce114b"/><path d="m30.4 25.3c-1.3 2-.1 5 2.7 6.7 2.8 1.7 6.1 1.4 7.4-.6 1.3-2 .1-5-2.7-6.7-2.8-1.6-6.1-1.4-7.4.6" fill="#8cc63e"/><path d="m36.5 29c-.8 1.3-.7 2.8.3 3.4 1 .6 2.4 0 3.2-1.2.8-1.3.7-2.8-.3-3.4-.9-.6-2.4 0-3.2 1.2" fill="#ce114b"/><path d="m59 18.6h-54c0 0 19.1 21.4 25.8 24.2 0 2.1-.2 9.7-.9 13-3.7 3.2-11.4 5.4-11.5 5.4-.2.1-.3.3-.2.5 0 .2.2.4.3.4h26.9c.2 0 .3-.2.3-.4 0-.2-.1-.4-.2-.5-.1 0-7.8-2.2-11.5-5.4-.7-3.3-.8-10.9-.8-13 6.8-2.9 25.8-24.2 25.8-24.2m-27 22.1c-4.1 0-21.9-19.8-21.9-19.8h43.7c.1 0-17.7 19.8-21.8 19.8" opacity=".8" fill="#a1b8c7"/><path d="m49.4 22.7c0 0-14.1 15.8-17.4 15.8-3.3 0-17.4-15.8-17.4-15.8s34.8 0 34.8 0" opacity=".7" fill="#f3ffd2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f379.svg b/riot/emojione/svg/1f379.svg new file mode 100644 index 0000000..b96f8f0 --- /dev/null +++ b/riot/emojione/svg/1f379.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.2 8.5c-2.1-5.3-8.2-7.9-13.6-5.8-5.4 2.1-8 8.1-5.9 13.4 2.2 5.3 8.3 7.9 13.7 5.8 5.4-2.1 8-8.1 5.8-13.4" fill="#64892f"/><path d="m56.6 8.8c-2-5-7.8-7.4-12.8-5.4-5.1 2-7.5 7.6-5.5 12.6 2 5 7.8 7.4 12.8 5.4 5.1-2 7.6-7.7 5.5-12.6" fill="#fdffb8"/><g fill="#ced74d"><path d="m44.7 3.5c.3-.3 5.7-.4 5.8.2.1.2.3.3.3.5-.1.7-3 7-3 7-.1 0-.4-.4-.6-.1-.2.2-2.9-6.8-2.8-6.9.2-.2.1-.5.3-.7"/><path d="m50.3 21.2c-.3.3-5.7.4-5.8-.2-.1-.2-.3-.3-.3-.5.1-.7 3-7 3-7 .1 0 .4.4.6.1.2-.2 2.9 6.8 2.8 6.9-.2.2-.1.5-.3.7"/><path d="m56.5 9.6c.4.3.4 5.5-.2 5.7-.2.1-.3.3-.5.3-.8-.1-7.2-2.9-7.2-2.9 0-.1.4-.4.1-.6-.2-.2 7-2.8 7.1-2.7.2.1.5 0 .7.2"/><path d="m38.5 15c-.4-.3-.4-5.5.2-5.7.2-.1.3-.3.5-.3.8.1 7.2 2.9 7.2 2.9 0 .1-.4.4-.1.6.2.2-7 2.8-7.1 2.7-.2 0-.5 0-.7-.2"/><path d="m39.3 8.2c-.1-.4 3.7-4.2 4.2-3.9.2.1.5 0 .6.1.4.6 3 7 3 7-.1 0-.5 0-.5.3.1.3-7-2.8-7-2.9 0-.2-.3-.4-.3-.6"/><path d="m55.9 16.6c.1.4-3.7 4.1-4.2 3.9-.2-.1-.5 0-.6-.1-.4-.6-3-7-3-7 .1 0 .5 0 .5-.4-.1-.3 7 2.8 7 2.9 0 .3.2.5.3.7"/><path d="m51.8 4.2c.4-.1 4.3 3.6 4 4.1-.1.2 0 .4-.2.6-.6.4-7.2 2.9-7.2 2.9 0-.1 0-.5-.4-.5-.3.1 2.9-6.8 3-6.8.4 0 .6-.2.8-.3"/><path d="m43.2 20.4c-.4.1-4.3-3.6-4-4.1.1-.2 0-.4.2-.6.6-.4 7.2-2.9 7.2-2.9 0 .1 0 .5.4.5.3-.1-2.9 6.8-3 6.8-.4 0-.6.2-.8.3"/></g><path d="M24.3,9c-2.5-2.5-6.7-2.5-9.2,0L6,17.9l1.4,1.4l9.1-8.9c1.8-1.8,4.7-1.8,6.5,0l20,19.7l1.4-1.4L24.3,9z" fill="#c10259"/><path d="m47.7 12.4h-12.5-12.6c4.7 10.9-9.5 30.6 7 33.9 5.1 1.8 4.8 5.9 3.1 9.9-1.8 4.2-5.9 4.9-6 5-.1.1-.2.3-.2.5 0 .2.1.4.3.4h8.3 8.3c.1 0 .2-.2.3-.4 0-.2-.1-.5-.2-.5 0 0-4.2-.8-6-5-1.7-3.9-1.9-8.1 3.1-9.9 16.6-3.4 2.4-23.1 7.1-33.9m-12.5 32.5c-20.9 0-6.2-21-10.5-31.7h10.5 10.5c-4.3 10.7 10.4 31.7-10.5 31.7" opacity=".8" fill="#a1b8c7"/><g opacity=".8"><path d="m25.2 32.3c-.6 6.1.5 11 9.9 11 7.8 0 9.9-3.4 10-8.1-6.2 1.2-11.8-4.2-19.9-2.9" fill="#f65500"/><path d="m45.2 35.3c.1-3.5-.9-7.7-1.4-11.6-5.4.2-10.4-3.7-17.1-3.3-.1 3.8-1.1 8.1-1.5 11.9 8.1-1.3 13.7 4.1 20 3" fill="#fcb334"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f37a.svg b/riot/emojione/svg/1f37a.svg new file mode 100644 index 0000000..85e65ba --- /dev/null +++ b/riot/emojione/svg/1f37a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fff"><path d="m16.1 12.5h26v14.1h-26z"/><path d="m46.1 24.1c0 0 4.1-2 9.8-1.3-5.6-2.6-9.8-.6-9.8-.6v1.9" opacity=".8"/><path d="m46.1 45.5c0 0 3.8.1 7.7-2.7-2.6 4.8-7.7 4.7-7.7 4.7v-2" opacity=".8"/></g><path d="m59.7 22.6c-.8-5-11.4-3.1-13.6-2.7v-11h-34.1v49c0 5.4 34.1 5.4 34.1 0v-8.6c6.4-.2 11.4-5.8 12.8-11.2 1-3.8 1.5-11.5.8-15.5m-16 31.5c0 4.4-29.3 4.4-29.3 0v-42.1h29.3v42.1m10.8-16c-.8 3.3-4.1 6.2-8.3 6.3v-19.7c1.7-.4 9-2 9.5 1.2.4 3.5-.4 8.8-1.2 12.2" opacity=".8" fill="#a1b8c7"/><path d="m42.1 26.6h-26v26.2c0 3.9 26 3.9 26 0v-26.2" fill="#fdb73e"/><g fill="#d8d2b8"><path d="m43.7 8.7c0 2.5-3.1 4.6-7 4.6-3.9 0-7-2.1-7-4.6 0-2.6 3.1-4.6 7-4.6 3.9 0 7 2.1 7 4.6"/><path d="m48.8 10.7c0 2.1-2.1 3.9-4.6 3.9-2.5 0-4.6-1.7-4.6-3.9 0-2.1 2.1-3.9 4.6-3.9 2.5.1 4.6 1.8 4.6 3.9"/><path d="m15.4 23.4c0 2.1-1.9 3.8-4.3 3.8-2.4 0-4.3-1.7-4.3-3.8 0-2.1 1.9-3.8 4.3-3.8 2.3 0 4.3 1.7 4.3 3.8"/><path d="m17.5 28.5c0 2.1-1.9 3.8-4.3 3.8-2.4 0-4.3-1.7-4.3-3.8 0-2.1 1.9-3.8 4.3-3.8 2.4 0 4.3 1.7 4.3 3.8"/><path d="m25.9 11.1c0 4.1-3.8 7.5-8.5 7.5-4.7 0-8.5-3.4-8.5-7.5 0-4.1 3.8-7.5 8.5-7.5 4.8 0 8.5 3.4 8.5 7.5"/><path d="m18.1 16.6c0 3.6-3.2 6.5-7.1 6.5-3.9 0-7.1-2.9-7.1-6.5 0-3.6 3.2-6.5 7.1-6.5 4 0 7.1 2.9 7.1 6.5"/><path d="m34.6 7.5c0 3-2.9 5.5-6.4 5.5-3.5 0-6.4-2.5-6.4-5.5 0-3 2.9-5.5 6.4-5.5 3.6 0 6.4 2.5 6.4 5.5"/></g><g fill="#fff"><path d="m43.4 9.5c0 2.5-3 4.5-6.6 4.5-3.6 0-6.6-2-6.6-4.5 0-2.5 3-4.5 6.6-4.5 3.6-.1 6.6 1.9 6.6 4.5"/><path d="m47.9 10.9c0 1.9-2 3.4-4.5 3.4-2.5 0-4.5-1.5-4.5-3.4 0-1.9 2-3.4 4.5-3.4 2.4 0 4.5 1.5 4.5 3.4"/><path d="m16.5 23.2c0 2-1.9 3.6-4.2 3.6-2.3 0-4.2-1.6-4.2-3.6 0-2 1.9-3.6 4.2-3.6 2.4 0 4.2 1.6 4.2 3.6"/><path d="m36.5 12.5c0 2-1.9 3.6-4.2 3.6-2.3 0-4.2-1.6-4.2-3.6 0-2 1.9-3.6 4.2-3.6 2.4 0 4.2 1.6 4.2 3.6"/><path d="m26.6 11.8c0 3.9-3.7 7.1-8.2 7.1-4.6 0-8.2-3.2-8.2-7.1 0-3.9 3.7-7.1 8.2-7.1 4.5 0 8.2 3.2 8.2 7.1"/><path d="m19 16.9c0 3.3-3.1 5.9-6.9 5.9-3.8 0-6.9-2.7-6.9-5.9 0-3.3 3.1-5.9 6.9-5.9 3.8-.1 6.9 2.6 6.9 5.9"/><path d="m28.7 22.1c0 3.3-3.1 5.9-6.9 5.9s-6.9-2.7-6.9-5.9c0-3.3 3.1-5.9 6.9-5.9 3.8-.1 6.9 2.6 6.9 5.9"/><path d="m34.6 8.4c0 2.9-2.7 5.2-6 5.2-3.3 0-6-2.3-6-5.2 0-2.9 2.7-5.2 6-5.2 3.3 0 6 2.3 6 5.2"/><path d="m18.3 28.5c0 2-1.9 3.6-4.2 3.6-2.3 0-4.2-1.6-4.2-3.6 0-2 1.9-3.6 4.2-3.6 2.3 0 4.2 1.6 4.2 3.6"/><path d="m22.3 26.6c0 1.9-1.8 3.5-4 3.5-2.2 0-4-1.6-4-3.5 0-1.9 1.8-3.5 4-3.5 2.2 0 4 1.6 4 3.5"/></g><g fill="#d8d2b8"><path d="m25.9 21.7c-.3-.4-.8-.8-1.3-1-.2-.1-.5-.2-.8-.2-.2 0-.5 0-.8 0h-.4l-.1-.4c-.2-.5-.5-.9-.9-1.2-.2-.2-.4-.3-.6-.4-.2-.1-.3-.1-.4-.2-.1 0-.3-.1-.4-.1-1.1-.2-2.3 0-3.1.7l-.5.4-.4-.3c-.1-.1-.2-.2-.3-.2-.2-.1-.2-.1-.4-.2-.2-.1-.5-.2-.8-.2-.6 0-1.2.2-1.7.6.2-.6.9-1.1 1.6-1.2.4-.1.8-.1 1.2 0 .2 0 .5.1.6.2.2.1.4.2.6.3h-.8c.9-1.1 2.8-1.7 4.4-1.3.2 0 .4.1.6.2.2.1.4.2.5.2.4.2.7.4 1 .7.5.5.9 1.2.9 1.9l-.5-.4c.4 0 .7.1 1 .2.2.1.3.1.4.2.1.1.3.2.4.3.6.3 1 .9 1 1.4"/><path d="m29.5 6.1c-.6-.1-1.2-.1-1.7.1-.1 0-.2.1-.4.1-.2.1-.3.1-.3.2-.2.1-.4.3-.6.4l-.2.2-.5-.1c-.5-.2-1.1-.3-1.7-.3-.3 0-.6.1-.8.1-.4.1-.5.2-.8.3-.9.5-1.5 1.4-1.5 2.4v.6h-.6c-.1 0-.3 0-.4 0-.2 0-.2 0-.4.1-.3.1-.5.2-.7.4-.4.3-.7.9-.7 1.5-.3-.5-.3-1.3.1-1.8.2-.3.5-.6.8-.7.1-.1.4-.2.5-.2.5-.3.7-.4.9-.4l-.5.6c-.3-1.4.5-2.9 1.9-3.6.3-.2.8-.3 1.1-.4.4-.1.8-.1 1.2-.1.8 0 1.6.3 2.2.7l-.7.1c.3-.2.6-.3.9-.5.2-.1.3-.1.5-.1.1 0 .4-.1.5-.1.7 0 1.4.2 1.9.5"/></g><g fill="#fee0af"><ellipse cx="33.8" cy="34.4" rx="5.5" ry="5.2"/><ellipse cx="25.9" cy="42.9" rx="4.1" ry="3.9"/><ellipse cx="34" cy="46.5" rx="2.7" ry="2.6"/><ellipse cx="27.9" cy="51.9" rx="1.9" ry="1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f37b.svg b/riot/emojione/svg/1f37b.svg new file mode 100644 index 0000000..76c8bdc --- /dev/null +++ b/riot/emojione/svg/1f37b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.5 25.1l6.2 35.4c.7 3.9 25-.3 24.3-4.3l-1.3-7.2c2.5-1.9 4-5.2 4.2-8 .2-2.9-.4-8.5-1.4-11.3-.8-2.2-3.9-1.9-6.5-1.3l-1.3-7.4-24.2 4.1m28.6 20.1l-2.4-13.6c1.5-.3 3-.3 3.4.8.8 2.5.9 6.4.8 9-.2 1.4-.8 2.7-1.8 3.8m-26.5-18.2l20.9-3.7 5.4 30.4c.6 3.2-20.3 6.9-20.9 3.7l-5.4-30.4" opacity=".8" fill="#a1b8c7"/><path d="m52.2 34.1l-18.7 3.3 3.3 18.9c.5 2.9 19.2-.4 18.7-3.3l-3.3-18.9" fill="#fdb73e"/><path d="m26.6 26.5c-.3-4.2 5-7.2 8.9-5.5 1.3-3.6 5.9-3.6 7.9-1.8 1.6-.9 5.2-1.5 7.1.5 3.9-1.6 7.2 4.6 1 5.3-9-1.5-19.1 16.5-19.1 16.5-1.7.3-4-.5-3.5-3.2-1 .1-2.6-1.6-2.2-3.2-4.1-1.1-3.8-7.5-.1-8.6" fill="#d8d2b8"/><path d="m27.4 26.9c-.3-4.7 5.9-6.4 8.7-5.3 1-2.7 5-3.9 7.3-1.7 1.2-.8 5-1.6 6.8.3 4.2-1.7 6.2 5 .4 4.9l1.6 9-13.6 2.4c-.1 1-1.5 2-3.2 1.7.3 1.7-1.4 3.2-3 3.4-1.9.2-3.4-1.6-2.6-3.7-1.8 0-2.6-1.6-2.2-3-3.9-1-3.9-7.2-.2-8" fill="#fff"/><g fill="#fee0af"><path d="m46.6 37c2.1-.4 4.2 1 4.5 3 .4 2.1-1.1 4-3.2 4.4-2.1.4-4.2-1-4.5-3-.4-2 1.1-4 3.2-4.4"/><ellipse transform="matrix(.9848-.1736.1736.9848-7.6637 8.1429)" cx="42.7" cy="47.9" rx="3" ry="2.8"/><ellipse transform="matrix(.9848-.1735.1735.9848-7.8355 9.2385)" cx="48.9" cy="49.4" rx="2" ry="1.9"/><path d="m45.1 52.8c.8-.1 1.5.3 1.6 1.1.1.7-.4 1.4-1.1 1.5-.8.1-1.5-.3-1.6-1.1-.2-.6.3-1.3 1.1-1.5"/></g><path d="m12.2 11.1l-1.4 8.2c-2.9-.7-6.3-.9-7.1 1.5-1.2 3.1-1.9 9.3-1.7 12.4.2 3.2 1.9 6.7 4.7 8.8l-1.4 8c-.8 4.3 25.9 9 26.7 4.7l6.9-38.9-26.7-4.7m-6.7 22.8c-.2-2.9-.1-7.2.9-9.9.4-1.2 2-1.3 3.7-.9l-2.7 14.9c-1.1-1.2-1.8-2.7-1.9-4.1m25.2 17.5c-.6 3.5-23.6-.5-22.9-4l5.9-33.5 23 4-6 33.5" opacity=".8" fill="#a1b8c7"/><path d="m12.8 25.7l20.5 3.6-3.6 20.8c-.6 3.1-21.1-.5-20.5-3.6l3.6-20.8" fill="#fdb73e"/><path d="m41 17.4c.3-4.7-5.5-7.9-9.8-6.1-1.4-3.9-6.5-4-8.7-1.9-1.8-1-5.8-1.7-7.8.6-4.3-1.8-7.9 5.1-1.1 5.8 10-1.7 21 18.2 21 18.2 1.9.3 4.4-.6 3.8-3.6 1.1.2 2.8-1.8 2.5-3.5 4.4-1.2 4.1-8.3.1-9.5" fill="#d8d2b8"/><path d="m40 17.9c.3-5.2-6.5-7.1-9.5-5.8-1.1-2.9-5.5-4.3-8.1-1.9-1.3-.9-5.4-1.8-7.4.3-4.6-1.8-6.9 5.5-.5 5.4l-1.7 9.9 15 2.6c.1 1.1 1.7 2.2 3.5 1.9-.4 1.9 1.5 3.6 3.3 3.8 2 .2 3.8-1.8 2.8-4 2 0 2.8-1.8 2.4-3.3 4.3-1.3 4.3-8.1.2-8.9" fill="#fff"/><g fill="#d8d2b8"><path d="m32.7 14.9c.2-1.8-1.2-4-4.5-3.3-.4-.8-1.3-1.2-2.7-.4 1.6 0 2.1.5 2.4 1.3 3.3 0 3.6 3 3.6 3s1.4.1 1.8 1.9c.6-.8.5-2-.6-2.5"/><path d="m34.5 22.3c-2.4-2.3-4.8-1.3-5.6.3-1.2-.2-1.9.7-2 1.6 1.4-1.3 2.6-.6 2.6-.6s1.9-2.3 4.7-.5c.7-.6 1.4-.6 2.7.2-.7-1.3-1.6-1.4-2.4-1"/></g><g fill="#fee0af"><path d="m18.9 28.9c-2.4-.4-4.6 1.1-5 3.3-.4 2.3 1.2 4.4 3.6 4.9 2.4.4 4.6-1.1 5-3.3.4-2.3-1.2-4.4-3.6-4.9"/><ellipse transform="matrix(.1733-.9849.9849.1733-21.1092 56.6803)" cx="23.2" cy="40.9" rx="3.1" ry="3.3"/><path d="m16.7 40.6c-1.2-.2-2.3.5-2.5 1.7-.2 1.1.6 2.2 1.8 2.4 1.2.2 2.3-.5 2.5-1.7.2-1.1-.6-2.2-1.8-2.4"/><path d="m20.6 46.4c-.8-.1-1.6.4-1.8 1.2-.1.8.4 1.5 1.2 1.7.8.1 1.6-.4 1.8-1.2.2-.8-.3-1.6-1.2-1.7"/></g><g fill="#42ade2"><path d="m44.5 14.8l9.6-8.3-4.6-3.3z"/><path d="m48.9 16.5l9.1 2v-4.8z"/><path d="m41.3 11.7l2.3-9.7h-4.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f37c.svg b/riot/emojione/svg/1f37c.svg new file mode 100644 index 0000000..1491a98 --- /dev/null +++ b/riot/emojione/svg/1f37c.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.9 8.4c-.6-.1-1.5-1.8-3.9-4.1-2.8-2.9-4.8-2.7-6.1-1.4-1.3 1.3-1.5 3.3 1.4 6.1 2.4 2.4 4 3.2 4.1 3.9.5 3.7-1.9 7.1-.4 8.5l13.4-13.4c-1.4-1.5-4.8.9-8.5.4" fill="#ffe62e"/><path d="M61,39.6c1.4,1.4,1.4,3.5,0,4.9L44.5,61c-1.4,1.4-3.5,1.4-4.9,0L12.8,34.2c-1.4-1.4-1.4-3.5,0-4.9l16.5-16.5 + c1.4-1.4,3.5-1.4,4.9,0L61,39.6z" fill="#b4d7ee"/><path d="m56.5 40.1c1 1 1 2.7 0 3.7l-12.6 12.7c-1 1-2.7 1-3.7 0l-18.4-18.3h32.8l1.9 1.9" fill="#fff"/><g fill="#2090bc"><path transform="matrix(.7071-.7071.7071.7071-15.5879 23.4144)" d="m16 29.3h9v2.4h-9z"/><path transform="matrix(.7071-.7071.7071.7071-17.4524 27.9141)" d="m20.5 33.8h9v2.4h-9z"/><path transform="matrix(.707-.7072.7072.707-19.3167 32.4211)" d="m25 38.3h9v2.4h-9z"/><path transform="matrix(.7072-.707.707.7072-21.1777 36.9065)" d="m29.5 42.8h9v2.4h-9z"/><path transform="matrix(.7071-.7072.7072.7071-23.0432 41.4224)" d="m34 47.3h9v2.4h-9z"/><path transform="matrix(.7072-.7071.7071.7072-24.9059 45.9132)" d="m38.5 51.8h9v2.4h-9z"/><path d="m6.7 25.4c-1.5-1.5-.4-2.9 1.1-4.4l13.1-13.2c1.5-1.5 2.9-2.6 4.4-1.1l3.4 3.4c1.5 1.5.4 2.9-1.1 4.4l-13.1 13.1c-1.5 1.5-2.9 2.6-4.4 1.1l-3.4-3.3"/></g><g fill="#095972"><path transform="matrix(.7067-.7076.7076.7067-15.3166 14.4145)" d="m9.2 22h1.1v7.4h-1.1z"/><path transform="matrix(.7071-.7071.7071.7071.8863 21.1058)" d="m25.4 5.8h1.1v7.4h-1.1z"/><path transform="matrix(.7071-.7071.7071.7071-1.8119 19.9882)" d="m22.7 8.5h1.1v7.4h-1.1z"/><path transform="matrix(.7076-.7067.7067.7076-4.5142 18.8545)" d="m20 11.2h1.1v7.4h-1.1z"/><path transform="matrix(.7071-.7071.7071.7071-7.2112 17.7513)" d="m17.3 13.9h1.1v7.4h-1.1z"/><path transform="matrix(.7076-.7067.7067.7076-9.9077 16.6192)" d="m14.6 16.6h1.1v7.4h-1.1z"/><path transform="matrix(.7071-.7071.7071.7071-12.6104 15.5146)" d="m11.9 19.3h1.1v7.4h-1.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f37d.svg b/riot/emojione/svg/1f37d.svg new file mode 100644 index 0000000..95bd382 --- /dev/null +++ b/riot/emojione/svg/1f37d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32.8" cy="32" r="22" fill="#dae3ea"/><path d="m32.7 17.1c-8.6 0-15.7 6.6-16 14.9 0-.2 0-.4 0-.5 0-8.5 7.2-15.5 16-15.5 8.8 0 16 6.9 16 15.5 0 .2 0 .4 0 .5-.3-8.3-7.3-14.9-16-14.9" fill="#acb8bf"/><path d="m32.7 46.9c8.6 0 15.7-6.6 16-14.9 0 .2 0 .4 0 .5 0 8.5-7.2 15.5-16 15.5-8.8 0-16-6.9-16-15.5 0-.2 0-.4 0-.5.4 8.3 7.4 14.9 16 14.9" fill="#fff"/><g fill="#acb8bf"><path d="m3.5 7.4c.2-.9.7 0 .7 0s.2 9.7 1.2 9.8c1.1.2.3-10 1.6-10.2 1.2-.2.5 10.4 1.6 10.3 1.1-.1 1.3-9.9 1.3-9.9s.5-.9.7 0c2.9 11.5.6 16.2.6 16.2s-.4 1-1.4 1c-.1 0 0 27.3 0 31 0 1.8-5.5 1.7-5.5 0 0-3.7.1-31 0-31-1 0-1.4-1-1.4-1s-2.4-4.7.6-16.2"/><path d="m55.6 7c1.2 0 6.4 3.7 6.4 17.5 0 4.4-2.4 4.4-2.4 7.2 0 2.7 0 24.6 0 24.6s-2.6 1.7-4.6-.2v-48.7c0 0 0-.4.6-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f37e.svg b/riot/emojione/svg/1f37e.svg new file mode 100644 index 0000000..2471401 --- /dev/null +++ b/riot/emojione/svg/1f37e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.3 26.8c0 0 1.7-2.2 5.6-3.2 3.1-.9 2.3-3.7 3.8-5.2l1.3 4.2-1 4.2.6 1.5c0 0-1.7-1.2-2.4-1.3-2.6-.3-7.5.2-7.9-.2" fill="#b2c1c0"/><path d="m18.3 26.8c0 0 1.7-2.2 5.6-3.2 3.1-.9 2.3-3.7 3.8-5.2l1.3 4.2-1 4.2.6 1.5c0 0-1.7-1.2-2.4-1.3-2.6-.3-7.5.2-7.9-.2" fill="#3e4347"/><path d="m38.3 30.7c-6.2-2.6-6.7-2.9-8.6-4.8l-1.2-2.6c-.3-.3-.3-1.1-.9-1.7-.6-.6-2.8-1.3-3.4-2 0 0 .2-.4-.1-.7-.3-.3-1.3.3-2.9 2-1.6 1.6-2.3 2.6-2 2.9.3.3.7.1.7.1.6.6 1.4 2.8 2 3.4.6.6 1.4.6 1.7.9l2.6 1.2c1.9 1.9 2.1 2.4 4.7 8.7 2.2 5.3 3.6 11.1 6.9 16 1.9 2.9 5.3 6.5 9.2 7.7.6.2 1.8.5 2.6-.3l11.8-11.9c.8-.8.5-2.1.3-2.7-1.1-3.8-4.8-7.3-7.6-9.3-4.7-3.3-10.6-4.7-15.8-6.9" fill="#46732f"/><path d="m39.9 31.3c-.5-.2-1.1-.4-1.7-.7-6.1-2.6-9.2-6.8-9.2-6.8l-1 2.7.7 1.9-1.4-1-3.6.8c0 0 4.5 3.4 7.3 9.9.2.6.4 1.1.7 1.6l1.7-1.7.7 1.7 2.7-1.8 1.1-.3.3-1.1 1.8-2.7-1.7-.7 1.6-1.8" fill="#ffe791"/><path d="m28.7 28.4c0 0-2.4-2.1-5.1-.2l1.7 1.5c.9-.6 2.3-1 3.9-.7 0 0-.6-2.1.9-3.9l-.9-1c-.6.7-1.8 2.9-.5 4.3" opacity=".5" fill="#3e4347"/><g fill="#ffe791"><path d="m25.9 26.3c-.8-.4-2.4-.3-3.9.4 0 0 0-.8-.6-.8-.5-.1-2.1.8-3.2.9 0 0 .7.9.6 1.7-.1.8 1.6-.9 2.4-1.1 0 0-.3 1.1-.4 2.2-.1 1 6-3 7.8-1.2.1 0-1.5-1.6-2.7-2.1"/><path d="m28.7 28.4c0 0-1.4-1.4-1.1-3.9 0 0 1.2-.4.8-.8-.4-.4-1.6.4-1.4-1.4.2-1.8 1-2.6.7-3.9 0 0 1.7-.3 1.9 1 .1 1.3-.5 2.5.2 2.4 1-.1 2.1.5.5 2.1-1.7 1.6-2.2 3.2-1.6 4.5"/><path d="m59.7 45.5c-4.7 4.7-9.3 9.3-14 14-2.5-1.6-4.6-3.7-6.2-6.2 4.7-4.7 9.3-9.3 14-14 2.5 1.7 4.5 3.7 6.2 6.2"/></g><g fill="#ede2d1"><path d="m18.5 22.7c.2-1.2-7.9-.7-10.4-.3-5.1.7-4.5 6.7.2 3.5 4.3-2.9 10.2-2.9 10.2-3.2"/><path d="m24.2 12.5c.2.3 4.3-8 2.9-7.5-1.1.6-3 7.2-2.9 7.5"/><path d="m21.2 20.4c.3-1.1-5.5-17.4-7.1-18.2-1.6-.8-3.9.7 2.6 10.9 2.8 4.4 3.9 9.3 4.5 7.3"/><path d="m16.9 24.3c-1.9.4-5.1 3.7-3.4 3 1.7-.6 4.6-3.3 3.4-3"/><path d="m23.1 18.3c1.3-1.2 4.4-4.6 2.8-4.1-1.4.3-4.1 5.3-2.8 4.1"/><path d="m21.8 8.3c-1 1.2-.7 7.7.1 9.8.8 2.2.8-11.1-.1-9.8"/><path d="m11.6 20.3c3.9-1.9-11.5-2.2-9.4-.4 2.1 1.8 7.6 1.2 9.4.4"/><ellipse transform="matrix(.9275-.3739.3739.9275-9.6759 5.4583)" cx="9.2" cy="27.7" rx="1.3" ry=".9"/><ellipse transform="matrix(.6623-.7492.7492.6623.1471 23.5294)" cx="26.2" cy="11.6" rx=".8" ry=".5"/><ellipse transform="matrix(.817-.5767.5767.817-14.2715 12.3578)" cx="12.3" cy="28.7" rx="1" ry=".7"/><ellipse transform="matrix(.9396-.3424.3424.9396-.4841 6.8167)" cx="19.1" cy="4.8" rx="1.1" ry="1.6"/><ellipse transform="matrix(.9821-.1884.1884.9821-.7659 4.6257)" cx="24" cy="6.3" rx=".5" ry=".8"/></g><path d="m8.9 10.1l-2.3 3.5c-.7 1.1-.4 2.6.7 3.4l1 .7c.8.6 1.9.5 2.7 0l2.2 1.5c1.1.7 2.6.4 3.4-.7l.7-1c.7-1.1.4-2.6-.7-3.4l-2.2-1.5c.2-.9-.2-2-1-2.5l-1-.7c-1.3-.7-2.8-.4-3.5.7" fill="#d3976e"/><path d="m8.9 10.1c0 0 1.3-.8 2.6.1.4.2.7.5 1 .7.2.2.8 1-.3 2.7-1.3 2-1.5 3.3-1.5 3.3s1.9-3.8 4-2.7c1.5.8 3.4 1.9 1.9 4.2l.7-1c.7-1.1.4-2.6-.7-3.4l-2.2-1.5c.2-.9-.2-2-1-2.5l-1-.7c-1.3-.6-2.8-.3-3.5.8" fill="#89664c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f37f.svg b/riot/emojione/svg/1f37f.svg new file mode 100644 index 0000000..74510dc --- /dev/null +++ b/riot/emojione/svg/1f37f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51 11.9c1.9-5.8-5.4-9-8.4-5.8-3.9-6.4-12.2-1.8-12.2-1.8s-4.5-5-10.3-.4c-2.1-2.1-8.4-2.6-8.2 7.6-7 .6-6.9 10.4-3.7 11.9l46.2 4c4.5-1.8 6.2-13.8-3.4-15.5" fill="#edd8b4"/><path d="m21.8 4.8c.5-4.3-7.8-3.5-6.5 1.2-3.1 1.1-.9 5.8 1.6 4.6.1 3.7 6.3 2.8 5.4-1.1 2.3 1 4.3-5.2-.5-4.7" fill="#fff8d6"/><path d="m20.7 6.1c.9-1.6-2.1-3.4-2.3-.5-1.8-1.5-4.1 2.7-.9 2.8-1.5 2.3 2.4 3.7 3.1 1.5 3.1-.3 2.2-4.3.1-3.8" fill="#edd8b4"/><path d="m20.8 7.7c-1.2-.3-1-.4-.9-1.3.2-1.7-.8-1.7-.7-.1.1 1-.1 1.4-1.1.6-1.3-.9-1.4.1-.2.5 1.1.5.7.2.7 1.6 0 1.1.6 1.4.7 0 .1-1.4 0-1.3 1.1-.6 1.1.6 1.5-.4.4-.7" fill="#c9ae81"/><path d="m17.9 15.8c2.3-2-3.3-7.4-5.4-1.9-4.4-2.7-6.5 5.4-2.2 7.7 2.1 1.2 14.2.4 7.6-5.8" fill="#fff8d6"/><path d="m13.3 15.8c-1.2-1.8-4.8.5-1.9 2.3-6.3 2.9 11.4 5 5.9-.3 1.4-3.6-3.3-4.6-4-2" fill="#edd8b4"/><path d="m15.1 16.5c-1 1.1-1 .9-1.9.4-1.7-1.1-2.3.6-.4 1.4 1.1.4 1 .6 2.5 1.4 1.2.6 1.8 0 .3-.8-1.5-.8-1.4-.6 0-1.5 1.3-1.1.4-2-.5-.9" fill="#c9ae81"/><path d="m55.6 18.6c2.1-1.8-2.9-6.6-4.8-1.7-3.9-2.4-7.3 6-2 6.9-.4 3.6 5.2 3.6 5.2.6 3.6 1.7 5.9-4.8 1.6-5.8" fill="#fff8d6"/><path d="m51.5 18.6c-1.1-1.6-4.4.4-1.7 2-2.4 1.1.6 5.2 2.3 2.1 1.6 2.5 4.8-.7 3.1-2.4 1.1-3.1-3.1-4-3.7-1.7" fill="#edd8b4"/><path d="m53.1 19.2c-.9 1-.9.8-1.7.3-1.5-1-2.1-.1-.4.6 1 .4 1.3.7 0 1.4-1.5.8-.5 1.4.4.5 1-1 .5-.7 1.8 0 1.1.5 1.6 0 .3-.7-1.3-.7-1.3-.6 0-1.4 1.2-.8.4-1.7-.4-.7" fill="#c9ae81"/><path d="m35.8 7c2.2-1.9-3.1-6.9-5-1.8-4.1-2.5-7.6 6.2-2.1 7.2-.4 3.7 5.4 3.8 5.5.6 3.7 1.8 6-5 1.6-6" fill="#fff8d6"/><path d="m31.5 7c-1.1-1.7-4.5.4-1.8 2.1-2.5 1.1.6 5.4 2.4 2.2 1.6 2.6 5-.7 3.2-2.5 1.3-3.3-3.2-4.2-3.8-1.8" fill="#edd8b4"/><path d="m33.1 7.6c-1 1.1-.9.9-1.8.4-1.6-1-2.2-.1-.4.6 1 .4 1.3.8.1 1.4-1.6.9-.6 1.5.4.5 1-1 .5-.7 1.9 0 1.1.6 1.7 0 .3-.7-1.4-.8-1.3-.6 0-1.4 1.2-.9.4-1.7-.5-.8" fill="#c9ae81"/><path d="m27.6 16.1c.6-2.9-7-4-5.3 1.6-5 .4-2.9 7.4 2.9 7.4 8.2-.1 6.7-10.9 2.4-9" fill="#fff8d6"/><path d="m23.2 18.8c-1.6 7.9 9.9 5 5.1-.8-1-3.6-4.5-1.8-5.1.8" fill="#edd8b4"/><path d="m25.7 18.2c-.1 1.5-1.2.8-2 1.5-2.3 2 3.9 3.9 4.9.3.2-.9-2.6.1-2.1-1.4.6-1.5-.6-1.7-.8-.4" fill="#c9ae81"/><path d="m45.3 9.3c.6-2.9-6.9-3.9-5.2 1.6-4.9.4-2.3 9.7 2.8 7.2 2 3.3 6.8-.1 4.9-2.7 4.1-.9 1.8-7.9-2.5-6.1" fill="#fff8d6"/><path d="m41.8 11.9c-2-.7-3.4 3.1-.1 2.8-1.3 2.4 3.9 4.1 3.3.4 3 1.2 3.7-3.6 1.1-3.9-1.1-3.6-5.3-1.7-4.3.7" fill="#edd8b4"/><path d="m43.6 11.4c-.1 1.5-.2 1.3-1.2 1.3-1.9.1-1.8 1.2 0 .8 1.1-.3 1.6-.2.9 1.2-.8 1.7.5 1.6.7.1.2-1.5 0-.9 1.5-1.1 1.3-.2 1.4-1-.2-.8-1.6.2-1.4.3-.9-1.2.5-1.4-.7-1.6-.8-.3" fill="#c9ae81"/><path d="m7.8 22.4l7.9 39.6h6.5l-5.3-39.6c-.4-5.6-9.9-5.6-9.1 0" fill="#ed4c5c"/><path d="m16.9 22.4l5.3 39.6h6.5l-2.7-39.6c0-5.6-9.5-5.6-9.1 0" fill="#f9f9f9"/><path d="m26 22.4l2.7 39.6h6.5v-39.6c.3-5.6-9.2-5.6-9.2 0" fill="#ed4c5c"/><path d="m35.2 22.4v39.6h6.4l2.7-39.6c.6-5.6-8.8-5.6-9.1 0" fill="#f9f9f9"/><path d="m41.6 62l4.1-2.8 1.9-35.5c.6-4.3-3-5.9-3.4-1.3l-2.6 39.6" fill="#c94747"/><path d="m49.2 56.8l1.9-31.8c.7-4-2.8-5.6-3.4-1.3l-1.9 35.5 3.4-2.4" fill="#e8e8e8"/><path d="m52.1 54.9l2.3-28.5c.8-3.7-2.6-5.3-3.3-1.3l-1.9 31.8 2.9-2" fill="#c94747"/><path d="m54 53.6l2.3-26c.2-2.9-1.6-3.9-1.9-1.2l-2.3 28.5 1.9-1.3" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f380.svg b/riot/emojione/svg/1f380.svg new file mode 100644 index 0000000..12c535e --- /dev/null +++ b/riot/emojione/svg/1f380.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c94747"><path d="m15.3 13.1c0 0 .7 20.2-13.3 32.9h13v16c0 0 13.6-19.2 13.6-48.9h-13.3"/><path d="m48.7 13.1c0 0-.7 20.2 13.3 32.9h-13v16c0 0-13.6-19.2-13.6-48.9h13.3"/></g><path d="m30.7 14c0 5.1-5.7 10-12.6 11l-5.5.8c-6.9 1-11.6-1.3-10.4-5 1.2-3.7 1.2-9.8 0-13.5-1.2-3.7 3.4-6 10.4-5l5.5.7c6.9.9 12.6 5.9 12.6 11" fill="#ff5760"/><path d="m3.9 21.3c-.5.5.1 1.1.3 1.3.6.7 2.3 1.5 5.3 1.5.9 0 1.8-.1 2.8-.2l5.5-.8c3.9-.5 7.4-2.5 9.3-5 0 .1-16.8-3-23.2 3.2" fill="#c94747"/><path d="m33.3 14c0 5.1 5.7 10 12.6 11l5.5.8c6.9 1 11.6-1.3 10.4-5-1.2-3.7-1.2-9.8 0-13.5s-3.4-6-10.4-5l-5.5.7c-6.9.9-12.6 5.9-12.6 11" fill="#ff5760"/><g fill="#c94747"><path d="m60.1 21.3c.5.5-.1 1.1-.3 1.3-.6.7-2.3 1.5-5.3 1.5-.9 0-1.8-.1-2.8-.2l-5.5-.8c-3.9-.5-7.4-2.5-9.3-5 0 .1 16.8-3 23.2 3.2"/><path d="m31.2 12.5c0 0-1.7 1.4-5.8-2-4.7-3.9-11.5 1.3-2.4 3.6 4.9 1.3 8.2-1.6 8.2-1.6"/><path d="m32.8 12.5c0 0 1.7 1.4 5.8-2 4.7-3.9 11.5 1.3 2.4 3.6-4.9 1.3-8.2-1.6-8.2-1.6"/><path d="m32 20.9c-3.7 0-4.7 2.8-4.7-6.8 0-9.6.9-6.8 4.7-6.8s4.7-2.8 4.7 6.8c0 9.6-1 6.8-4.7 6.8"/></g><path d="m32 21.1c-3 0-3.8 2.8-3.8-7 0-9.9.7-7 3.8-7s3.8-2.8 3.8 7c0 9.8-.8 7-3.8 7" fill="#ff5760"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f381.svg b/riot/emojione/svg/1f381.svg new file mode 100644 index 0000000..bd62608 --- /dev/null +++ b/riot/emojione/svg/1f381.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.9 30.3v31.7c0 0 13.1-9.2 22.3-11.9 0 0 .4-19.6 6.1-29.4l-28.4 9.6" fill="#076170"/><path d="m40.1 57.2c0 0 .5-28.1 1.5-29.5 1-1.5 9.6-3 9.6-3s-3.5 26.3-2.7 28c.1-.1-3.5 1.4-8.4 4.5" fill="#b3690e"/><path d="M31.9,62c0,0-9.2-7.8-23.5-11.9c0,0,1.1-16.1-4.1-28.4l27.6,8.6V62z" fill="#3baacf"/><path d="m14.2 52.7c0 0 8.4 3.4 9 4.5s.6-28.3.6-28.3-11.5-3.2-12.5-3.2c0 0 3.5 11.9 2.9 27" fill="#e9c243"/><path d="m31.9 30.3v5.3l25.7-8.8c.7-2.2 1.6-4.3 2.6-6.1l-28.3 9.6" opacity=".3"/><path d="m6.1 27.2c-.5-1.9-1.1-3.7-1.9-5.5l27.6 8.6v5.3l-25.7-8.4" opacity=".3"/><path fill="#4fc7e8" d="m2 18.9l28.5 6.3 31.5-7.6-30.9-1.7z"/><path fill="#3baacf" d="m2 18.9l2.3 6.3 26.2 7.4v-7.4z"/><path d="m30.5 32.6c0 0 23.8-8.8 29.7-9.2 0 0 .4-3.5 1.8-5.7l-31.5 7.5v7.4" fill="#076170"/><g fill="#f0ae11"><path d="m10.5 20.8l5.8 5.5 6.4-2.9 9.3-2.8 11.6 1.4 6.1 1.2 4.9-3.8z"/><path d="m22.7 23.4l9.3-2.8 11.6 1.4 11-2.6-23.2-2.2-20.9 3.6z"/></g><path fill="#f8d048" d="m10.5 20.8v7l11.7 3.2.5-7.6z"/><path fill="#c47116" d="m43.6 22l.2 6.7 10-3 .8-6.3z"/><path d="m37.3 17.3c0 0 0-7 6.8-13.1 0 0-4.1 1.5-6.1 1.1-2.4-.4-3.2-3.3-3.2-3.3s-5.8 12.6-4.1 14.2c1.7 1.7 6.6 1.1 6.6 1.1" fill="#ea9f07"/><path d="m28.4 21.4c0 0-3.9-8-12.2-12.2 0 0 6.5-.6 8-1.4 1.9-.9 3-3.4 3-3.4s7.2 12.6 6.6 14.5-5.4 2.5-5.4 2.5" fill="#f8d048"/><path d="m32.6 20.5c0 0-6.1 2.4-13.9 2.4-16.4-.1-18.7-11.9-2.5-10.8 13.3 1 16.4 8.4 16.4 8.4" fill="#ea9f07"/><path d="m31.5 20.4c0 0 7.2.6 13.9-1.1 14-3.6 8.8-14.2-4.4-9.7-10.8 3.7-9.5 10.8-9.5 10.8" fill="#f0ae11"/><g fill="#824000"><path d="m32.6 20.5c0 0-3.8 1.5-8.7 1.5-10.2 0-11.7-7.4-1.6-6.7 8.3.6 10.3 5.2 10.3 5.2"/><path d="m32.6 20.5c0 0 5 .4 9.7-.8 9.8-2.5 6.1-9.9-3-6.8-7.6 2.6-6.7 7.6-6.7 7.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f382.svg b/riot/emojione/svg/1f382.svg new file mode 100644 index 0000000..0bbef8c --- /dev/null +++ b/riot/emojione/svg/1f382.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="49.4" rx="30" ry="12.6" fill="#d0d0d0"/><path d="M7.7,24.8v22.5C7.7,53,18.6,57.6,32,57.6c13.4,0,24.3-4.6,24.3-10.2V24.8H7.7z" fill="#d3976e"/><g fill="#cea9f7"><path d="m7.7 29.7c0 0 0 0 0 0"/><path d="m56.3 29.7c0 0 0 0 0 0"/></g><g fill="#ffdd7d"><path d="m56.3 31.4c-.1 4-15.4 8.4-24.3 8.4-8.9 0-24.2-4.4-24.3-8.4v6.1c12.5 9 36.1 9 48.6 0v-6.1"/><path d="m56.3 41c-.1 4-15.4 8.4-24.3 8.4-8.9 0-24.2-4.4-24.3-8.4v6.1c12.5 9 36.1 9 48.6 0v-6.1"/></g><path d="m7.7 24.8v16.9c0 .9.8 1.7 1.9 1.7 1 0 1.9-.7 1.9-1.7v-3.9c0-1.2 1.1-2.2 2.5-2.2s2.5 1 2.5 2.2v4.8c0 1.4 1.3 2.6 2.9 2.6s2.9-1.1 2.9-2.6v-4.9c0-1.3 1.2-2.3 2.6-2.3 1.4 0 2.6 1 2.6 2.3v3.1c0 .7.6 1.3 1.5 1.3.8 0 1.5-.6 1.5-1.3v-2.5c0-.9.8-1.7 1.9-1.7 1 0 1.9.7 1.9 1.7v4.2c0 1.4 1.3 2.6 2.9 2.6 1.6 0 2.9-1.1 2.9-2.6v-4.7c0-1.2 1.1-2.2 2.5-2.2s2.5 1 2.5 2.2v3.5c0 .7.7 1.3 1.5 1.3s1.5-.6 1.5-1.3v-2.4c0-.6.6-1.1 1.3-1.1.7 0 1.3.5 1.3 1.1v3.7c0 1.4 1.3 2.6 2.9 2.6 1.6 0 2.9-1.1 2.9-2.6v-17.7l-48.8-.1" fill="#a80038"/><ellipse cx="32" cy="24.8" rx="24.3" ry="10.2" fill="#ff2c68"/><path d="m14.4 23.8c-.1-6.5 28.7-7.4 28.8-1.6.1 4.3-18.3 4.5-18.4 1.1-.1-2.4 11.4-2.5 11.4-.7 0 1.8-9.3 2.1-7.1-.2-3.7 2.8 8.1 2.9 8 .3-.1-3-13.9-2.6-13.9.5.1 4.6 21.4 4.1 21.3-1.1-.1-6.8-32-6.5-31.8 1.6.2 8.9 31.2 12.1 41.3.8-13.7 10.4-39.5 5.4-39.6-.7" fill="#ffa4a4"/><path d="m11.8 11.6v10.8c0 1.5 3.2 1.3 3.2 0v-10.8c0-1.5-3.2-1.5-3.2 0" fill="#42ade2"/><g fill="#428bc1"><path d="m15 12.6l-3.2 1.7v1.9l3.2-1.6z"/><path d="m11.8 19.5v1.8l3.2-1.6v-1.9z"/></g><path d="m15.1 9.2c0 2.5-3.3 2.5-3.3 0 0-.8 1.7-3.4 1.7-3.4s1.6 2.6 1.6 3.4" fill="#ff8b00"/><path d="m14.3 10c0 1.4-1.7 1.4-1.7 0 0-.4.8-1.7.8-1.7s.9 1.3.9 1.7" fill="#fff033"/><path d="m30.6 7.2v9.4c0 1.5 2.8 1.2 2.8 0v-9.4c0-1.5-2.8-1.5-2.8 0" fill="#42ade2"/><g fill="#428bc1"><path d="m33.4 8l-2.8 1.5v1.7l2.8-1.5z"/><path d="m30.6 14v1.6l2.8-1.4v-1.6z"/></g><path d="m33.4 5c0 2.3-2.9 2.3-2.9 0 0-.7 1.4-3 1.4-3s1.5 2.3 1.5 3" fill="#ff8b00"/><path d="m32.7 5.7c0 1.4-1.4 1.4-1.4 0 0-.4.7-1.5.7-1.5s.7 1.1.7 1.5" fill="#fff033"/><path d="m48.9 11.6v10.8c0 1.5 3.2 1.3 3.2 0v-10.8c0-1.5-3.2-1.5-3.2 0" fill="#42ade2"/><g fill="#428bc1"><path d="m52.1 12.6l-3.2 1.7v1.9l3.2-1.7z"/><path d="m48.9 19.5v1.8l3.2-1.7v-1.8z"/></g><path d="m52.2 9.2c0 2.5-3.3 2.5-3.3 0 0-.8 1.7-3.4 1.7-3.4s1.6 2.5 1.6 3.4" fill="#ff8b00"/><path d="m51.4 9.9c0 1.4-1.7 1.4-1.7 0 0-.4.8-1.7.8-1.7s.9 1.3.9 1.7" fill="#fff033"/><path d="m20 18.3v13.1c0 1.7 3.9 1.3 3.9 0v-13.1c0-1.6-3.9-1.6-3.9 0" fill="#9fe4ff"/><g fill="#42ade2"><path d="m23.9 19.6l-3.9 1.9v2.4l3.9-2z"/><path d="m20 27.8v2.2l3.9-1.9v-2.2z"/></g><path d="m24 15.4c0 2.7-4 2.7-4 0 0-1 2-4.2 2-4.2s2 3.2 2 4.2" fill="#ff8b00"/><path d="m23 16.3c0 1.5-2 1.5-2 0 0-.5 1-2.1 1-2.1s1 1.6 1 2.1" fill="#fff033"/><path d="m40 18.3v13.1c0 1.7 3.9 1.3 3.9 0v-13.1c0-1.7-3.9-1.7-3.9 0" fill="#9fe4ff"/><g fill="#42ade2"><path d="m43.9 19.5l-3.9 2v2.3l3.9-1.9z"/><path d="m40 27.8v2.2l3.9-2v-2.2z"/></g><path d="m44 15.3c0 2.7-4 2.7-4 0 0-1 2-4.2 2-4.2s2 3.3 2 4.2" fill="#ff8b00"/><path d="m43 16.3c0 1.5-2 1.5-2 0 0-.5 1-2.1 1-2.1s1 1.6 1 2.1" fill="#fff033"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f383.svg b/riot/emojione/svg/1f383.svg new file mode 100644 index 0000000..21144b7 --- /dev/null +++ b/riot/emojione/svg/1f383.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 37.6c0 16-20.9 24.4-30 24.4-9.1 0-30-8.4-30-24.4 0-18.9 12.4-29 26.1-26.4 1.7.3 5.1.7 6.4.4 15.5-4.3 27.5 6.6 27.5 26" fill="#e9841a"/><g fill="#ba6b24"><path d="m18.2 37.9c0-13.2 4.8-19.2 9.2-25.8-10.1 2-19.8 6.5-19.8 24.9 0 14.3 12.2 22.6 20 24.5-5.4-5.8-9.4-13.7-9.4-23.6"/><path d="m45.6 37.9c0-13.2-6.4-18.8-10.7-25.4 9.8 2 20.8 6.1 20.8 24.5 0 14.3-11.8 22.6-19.3 24.5 5.3-5.8 9.2-13.7 9.2-23.6"/><path d="m37.2 35c0 20.1-5.2 27-5.2 27s-5.2-6.9-5.2-27 5.4-25 5.4-25 5 4.9 5 25"/></g><g fill="#ffce31"><path d="m25.7 28.7c1.1 5.3-4.4 9.6-5.8 9.2-4.5-1.4-10.6-10.5-10.6-12.3 0-1.5 11.1 3.6 12.2 4 1.6.5 3.9-2.2 4.2-.9"/><path d="m38.3 28.7c-1.1 5.3 4.4 9.6 5.8 9.2 4.5-1.4 10.6-10.5 10.6-12.3 0-1.5-11.1 3.6-12.2 4-1.6.5-3.9-2.2-4.2-.9"/></g><g fill="#fff"><path d="m25.7 28.7c1.1 5.3-4.4 9.6-5.8 9.2-4.5-1.4-7.4-8-7.4-9.8 0-1.5 7.9 1.1 9 1.4 1.6.6 3.9-2.1 4.2-.8"/><path d="m38.3 28.7c-1.1 5.3 4.4 9.6 5.8 9.2 4.5-1.4 7.4-8 7.4-9.8 0-1.5-7.9 1.1-9 1.4-1.6.6-3.9-2.1-4.2-.8"/></g><path d="m37.7 38.7c0 3.4-2.6.3-5.7.3-3.2 0-5.7 3-5.7-.3 0-3.4 4.5-5.4 5.7-5.4 1.2 0 5.7 2 5.7 5.4" fill="#ffce31"/><path d="m36.2 36.8c0 2.2-1.9.2-4.2.2-2.3 0-4.2 2-4.2-.2 0-2.2 3.3-3.6 4.2-3.6.9.1 4.2 1.4 4.2 3.6" fill="#fff"/><path fill="#ffce31" d="m6.8 35.5l3.1 12.8 4.8-2.1 3.7 6.5 6.3-2.4 4.2 4.8 3.8-4.5 7.4 5.3 2.9-6.8 3.6 3.6 2.3-5.7 3.4 2 6.4-13.5-7.3 8.4-3.3-3.4-2.8 5.2-4.6-2.5-3 4.3-4.9-3.7-4.1 5.6-4.3-5.8-5.2 3-2.9-5.6-4.7 2.5z"/><path fill="#fff" d="m17.9 48.4l6.2-.8 4.6 5 4.3-3.9 6.1 4.2 2.8-6.2 4.2 1.1 2-7.3-2.8 5.2-4.6-2.5-3 4.3-4.9-3.7-4.1 5.6-4.3-5.8-5.2 3-2.9-5.6z"/><path d="m24.1 12.9c0 0 1.6.9 1.4 2.2 0 0 5.5.8 9.6.4 0 0 1-3-.2-4.2-.4-.4.7-4.8 2.8-6 .7-.4-4.5-4.1-6-2.9-4.3 3.6-4.4 8.9-4.4 8.9-1.9.5-3.2 1.6-3.2 1.6" fill="#83bf4f"/><path d="m25.5 15.1c0 0 2.1-1.8 1.8-3.9 0 0-2.2.7-3.1 1.7-.1 0 1.3.8 1.3 2.2" fill="#699635"/><path d="m35.1 15.5c0 0-3.5-5.8.5-10.2.5-.6 2.5-.3 2.5-.3-1.8 1.6-3.3 5.3-2.4 6.1.9.9 2.9 1.9 3.5 2.4.6.4-2.7.6-4.1 2" fill="#75a843"/><path d="m37.9 5.3c-.7.4-2.6.1-4.3-.8-1.6-.9-2.4-1.9-1.7-2.3.7-.4 2.6-.1 4.3.8 1.6.8 2.4 1.9 1.7 2.3" fill="#adea73"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f384.svg b/riot/emojione/svg/1f384.svg new file mode 100644 index 0000000..27bbe5f --- /dev/null +++ b/riot/emojione/svg/1f384.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d3976e" d="m36.4 62h-8.8l1.9-20.8h5z"/><path d="m62 48.7c-19.1 0-30-31.7-30-31.7s-10.9 31.7-30 31.7c0 0 9.3 6.5 18.7-1.7 0 0-2.4 5.6-5.6 12.1 0 0 7.3.9 12.3-11.2 1 3.5 2.4 7.4 4.6 11.2 2.1-3.8 3.6-7.7 4.6-11.2 5 12 12.3 11.2 12.3 11.2-3.2-6.4-5.6-12.1-5.6-12.1 9.4 8.2 18.7 1.7 18.7 1.7" fill="#699635"/><path d="m52 33.4c-12.7 0-20-21.2-20-21.2s-7.3 21.2-20 21.2c0 0 6.2 4.3 12.5-1.1 0 0-1.6 3.7-3.7 8 0 0 4.9.6 8.2-7.5.6 2.3 1.6 4.9 3 7.5 1.4-2.5 2.4-5.2 3-7.5 3.3 8 8.2 7.5 8.2 7.5-2.1-4.3-3.7-8-3.7-8 6.3 5.4 12.5 1.1 12.5 1.1" fill="#75a843"/><path d="m45.3 23.2c-8.4 0-13.3-14.1-13.3-14.1s-4.9 14.1-13.3 14.1c0 0 4.1 2.9 8.3-.7 0 0-1.1 2.5-2.5 5.4 0 0 3.3.4 5.5-5 .4 1.5 1.1 3.3 2 5 .9-1.7 1.6-3.4 2-5 2.2 5.4 5.5 5 5.5 5-1.4-2.9-2.5-5.4-2.5-5.4 4.2 3.6 8.3.7 8.3.7" fill="#83bf4f"/><path fill="#ffce31" d="m32 2l2 4 4.4.6-3.2 3.1.7 4.4-3.9-2.1-3.9 2.1.7-4.4-3.2-3.1 4.4-.6z"/><circle cx="32" cy="21.4" r="3.3" fill="#ed4c5c"/><circle cx="32" cy="40.6" r="3.3" fill="#f2b200"/><circle cx="38.7" cy="30.9" r="3.3" fill="#9450e0"/><circle cx="25.9" cy="30.9" r="3.3" fill="#6aced8"/><circle cx="20.2" cy="47" r="3.3" fill="#83bf4f"/><circle cx="41.2" cy="47.2" r="3.3" fill="#ff717f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f385-1f3fb.svg b/riot/emojione/svg/1f385-1f3fb.svg new file mode 100644 index 0000000..13c2657 --- /dev/null +++ b/riot/emojione/svg/1f385-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.1 23.5c2.6 2.7 2.9 6.7.7 9-2.2 2.3-6.1 1.9-8.7-.8-2.6-2.7-2.9-6.7-.7-9 2.2-2.2 6.1-1.9 8.7.8" fill="#ffe1bd"/><path d="m62 63h-60c0-34.6 13.4-37.9 30-37.9 16.6 0 30 3.3 30 37.9" fill="#ff4848"/><path d="m54.2 19.1c0 13.6-2.5 24.6-22.2 24.6s-22.2-11.1-22.2-24.6c0-4.4 44.4-4.4 44.4 0" fill="#ffe1bd"/><path d="m26.2 25.2c0 3.4-2.7 6.2-6 6.2-3.3 0-6-2.8-6-6.2 0-3.4 2.7-6.2 6-6.2 3.3 0 6 2.8 6 6.2" fill="#fff"/><path d="m24.7 25.2c0 2.6-2 4.6-4.5 4.6-2.5 0-4.5-2.1-4.5-4.6 0-2.6 2-4.6 4.5-4.6 2.5-.1 4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m21.7 25.2c0 .9-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.9.7-1.6 1.5-1.6.8 0 1.5.7 1.5 1.6" fill="#231f20"/><ellipse cx="43.8" cy="25.2" rx="6" ry="6.2" fill="#fff"/><path d="m48.3 25.2c0 2.6-2 4.6-4.5 4.6s-4.5-2.1-4.5-4.6c0-2.6 2-4.6 4.5-4.6s4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m45.3 25.2c0 .9-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.9.7-1.6 1.5-1.6.8 0 1.5.7 1.5 1.6" fill="#231f20"/><path d="m57.3 40.2c0 18.3-11 21.7-24.5 21.7-13.6 0-24.5-3.4-24.5-21.7 0-10.3 11-10.7 24.5-10.7s24.5.4 24.5 10.7" fill="#e2e9ed"/><ellipse cx="32" cy="36.8" rx="3.5" ry="3.6" fill="#664e27"/><g fill="#fff"><path d="m49.3 22.7c-3-.2 6.1 7.4-8.2 6.3-5-.4-9.2 3.3-9.2 6.5 0 3.9 4.1 6.9 10.3 6.9 7.3 0 12.6-4.5 13.7-10.9.5-2.7-1.6-8.3-6.6-8.8"/><path d="m22.8 29.1c-14.2 1.1-5.2-6.6-8.2-6.3-5 .4-7.1 6-6.6 8.8 1 6.4 6.3 10.9 13.7 10.9 6.2 0 10.3-3 10.3-6.9 0-3.3-4.2-6.9-9.2-6.5"/></g><g fill="#e0a372"><path d="m42.8 30.5c.3 1.1-.7 2.3-2.2 2.7s-2.9-.2-3.2-1.2.7-2.3 2.2-2.7c1.5-.4 3 .1 3.2 1.2"/><path d="m21.3 30.5c-.3 1.1.7 2.3 2.2 2.7 1.5.4 2.9-.2 3.2-1.2.3-1.1-.7-2.3-2.2-2.7-1.5-.4-3 .1-3.2 1.2"/></g><ellipse cx="32" cy="29.7" rx="7.5" ry="5.2" fill="#e6b796"/><path d="m60 17.6c0 2.1-1.2 3.9-4 3.9h-48c-2.8 0-4-1.7-4-3.9 0-2.1 1.2-3.9 4-3.9h48c2.8.1 4 1.8 4 3.9" fill="#fff"/><path d="m42.8 16.8c-17.5-3.5-33.7-3.1-33.7-3.1 0-7.2 12.7-12.7 26.2-12.7 14.2 0 24.5 7.5 26 20.5 1.9 15.9-11.8 26.3-10.2 22.8 8.1-18.3-1.6-26.1-8.3-27.5" fill="#ff4848"/><ellipse cx="47.9" cy="48.8" rx="6.7" ry="6.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f385-1f3fc.svg b/riot/emojione/svg/1f385-1f3fc.svg new file mode 100644 index 0000000..4089865 --- /dev/null +++ b/riot/emojione/svg/1f385-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.1 23.5c2.6 2.7 2.9 6.7.7 9-2.2 2.3-6.1 1.9-8.7-.8-2.6-2.7-2.9-6.7-.7-9 2.2-2.2 6.1-1.9 8.7.8" fill="#fed0ac"/><path d="m62 63h-60c0-34.6 13.4-37.9 30-37.9 16.6 0 30 3.3 30 37.9" fill="#ff4848"/><path d="m54.2 19.1c0 13.6-2.5 24.6-22.2 24.6s-22.2-11.1-22.2-24.6c0-4.4 44.4-4.4 44.4 0" fill="#fed0ac"/><path d="m26.2 25.2c0 3.4-2.7 6.2-6 6.2-3.3 0-6-2.8-6-6.2 0-3.4 2.7-6.2 6-6.2 3.3 0 6 2.8 6 6.2" fill="#fff"/><path d="m24.7 25.2c0 2.6-2 4.6-4.5 4.6-2.5 0-4.5-2.1-4.5-4.6 0-2.6 2-4.6 4.5-4.6 2.5-.1 4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m21.7 25.2c0 .9-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5c0-.9.7-1.6 1.5-1.6s1.5.7 1.5 1.6" fill="#231f20"/><ellipse cx="43.8" cy="25.2" rx="6" ry="6.2" fill="#fff"/><path d="m48.3 25.2c0 2.6-2 4.6-4.5 4.6s-4.5-2.1-4.5-4.6c0-2.6 2-4.6 4.5-4.6s4.5 2 4.5 4.6" fill="#0a84a5"/><ellipse cx="43.8" cy="25.2" rx="1.5" ry="1.5" fill="#231f20"/><path d="m57.3 40.2c0 18.3-11 21.7-24.5 21.7-13.6 0-24.5-3.4-24.5-21.7 0-10.3 11-10.7 24.5-10.7 13.5 0 24.5.4 24.5 10.7" fill="#e2e9ed"/><ellipse cx="32" cy="36.8" rx="3.5" ry="3.6" fill="#664e27"/><g fill="#fff"><path d="m49.3 22.7c-3-.2 6.1 7.4-8.2 6.3-5-.4-9.2 3.3-9.2 6.5 0 3.9 4.1 6.9 10.3 6.9 7.3 0 12.6-4.5 13.7-10.9.5-2.7-1.6-8.3-6.6-8.8"/><path d="m22.8 29.1c-14.2 1.1-5.2-6.6-8.2-6.3-5 .4-7.1 6-6.6 8.8 1 6.4 6.3 10.9 13.7 10.9 6.2 0 10.3-3 10.3-6.9 0-3.3-4.2-6.9-9.2-6.5"/></g><g fill="#ef9b92"><path d="m42.8 30.5c.3 1.1-.7 2.3-2.2 2.7s-2.9-.2-3.2-1.2.7-2.3 2.2-2.7c1.5-.4 3 .1 3.2 1.2"/><path d="m21.3 30.5c-.3 1.1.7 2.3 2.2 2.7 1.5.4 2.9-.2 3.2-1.2.3-1.1-.7-2.3-2.2-2.7-1.5-.4-3 .1-3.2 1.2"/></g><ellipse cx="32" cy="29.7" rx="7.5" ry="5.2" fill="#ffa599"/><path d="m60 17.6c0 2.1-1.2 3.9-4 3.9h-48c-2.8 0-4-1.7-4-3.9 0-2.1 1.2-3.9 4-3.9h48c2.8.1 4 1.8 4 3.9" fill="#fff"/><path d="m42.8 16.8c-17.5-3.5-33.7-3.1-33.7-3.1 0-7.2 12.7-12.7 26.2-12.7 14.2 0 24.5 7.5 26 20.5 1.9 15.9-11.8 26.3-10.2 22.8 8.1-18.3-1.6-26.1-8.3-27.5" fill="#ff4848"/><ellipse cx="47.9" cy="48.8" rx="6.7" ry="6.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f385-1f3fd.svg b/riot/emojione/svg/1f385-1f3fd.svg new file mode 100644 index 0000000..9286b2f --- /dev/null +++ b/riot/emojione/svg/1f385-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.1 23.5c2.6 2.7 2.9 6.7.7 9-2.2 2.3-6.1 1.9-8.7-.8-2.6-2.7-2.9-6.7-.7-9 2.2-2.2 6.1-1.9 8.7.8" fill="#d6a57c"/><path d="m62 63h-60c0-34.6 13.4-37.9 30-37.9 16.6 0 30 3.3 30 37.9" fill="#ff4848"/><path d="m54.2 19.1c0 13.6-2.5 24.6-22.2 24.6s-22.2-11.1-22.2-24.6c0-4.4 44.4-4.4 44.4 0" fill="#d6a57c"/><path d="m26.2 25.2c0 3.4-2.7 6.2-6 6.2-3.3 0-6-2.8-6-6.2 0-3.4 2.7-6.2 6-6.2 3.3 0 6 2.8 6 6.2" fill="#fff"/><path d="m24.7 25.2c0 2.6-2 4.6-4.5 4.6-2.5 0-4.5-2.1-4.5-4.6 0-2.6 2-4.6 4.5-4.6 2.5-.1 4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m21.7 25.2c0 .9-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.9.7-1.6 1.5-1.6.8 0 1.5.7 1.5 1.6" fill="#231f20"/><ellipse cx="43.8" cy="25.2" rx="6" ry="6.2" fill="#fff"/><path d="m48.3 25.2c0 2.6-2 4.6-4.5 4.6s-4.5-2.1-4.5-4.6c0-2.6 2-4.6 4.5-4.6s4.5 2 4.5 4.6" fill="#0a84a5"/><ellipse cx="43.8" cy="25.2" rx="1.5" ry="1.5" fill="#231f20"/><path d="m57.3 40.2c0 18.3-11 21.7-24.5 21.7-13.6 0-24.5-3.4-24.5-21.7 0-10.3 11-10.7 24.5-10.7s24.5.4 24.5 10.7" fill="#e2e9ed"/><ellipse cx="32" cy="36.8" rx="3.5" ry="3.6" fill="#664e27"/><g fill="#fff"><path d="m49.3 22.7c-3-.2 6.1 7.4-8.2 6.3-5-.4-9.2 3.3-9.2 6.5 0 3.9 4.1 6.9 10.3 6.9 7.3 0 12.6-4.5 13.7-10.9.5-2.7-1.6-8.3-6.6-8.8"/><path d="m22.8 29.1c-14.2 1.1-5.2-6.6-8.2-6.3-5 .4-7.1 6-6.6 8.8 1 6.4 6.3 10.9 13.7 10.9 6.2 0 10.3-3 10.3-6.9 0-3.3-4.2-6.9-9.2-6.5"/></g><g fill="#8a6859"><path d="m42.8 30.5c.3 1.1-.7 2.3-2.2 2.7s-2.9-.2-3.2-1.2.7-2.3 2.2-2.7c1.5-.4 3 .1 3.2 1.2"/><path d="m21.3 30.5c-.3 1.1.7 2.3 2.2 2.7 1.5.4 2.9-.2 3.2-1.2.3-1.1-.7-2.3-2.2-2.7-1.5-.4-3 .1-3.2 1.2"/></g><ellipse cx="32" cy="29.7" rx="7.5" ry="5.2" fill="#b58360"/><path d="m60 17.6c0 2.1-1.2 3.9-4 3.9h-48c-2.8 0-4-1.7-4-3.9 0-2.1 1.2-3.9 4-3.9h48c2.8.1 4 1.8 4 3.9" fill="#fff"/><path d="m42.8 16.8c-17.5-3.5-33.7-3.1-33.7-3.1 0-7.2 12.7-12.7 26.2-12.7 14.2 0 24.5 7.5 26 20.5 1.9 15.9-11.8 26.3-10.2 22.8 8.1-18.3-1.6-26.1-8.3-27.5" fill="#ff4848"/><ellipse cx="47.9" cy="48.8" rx="6.7" ry="6.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f385-1f3fe.svg b/riot/emojione/svg/1f385-1f3fe.svg new file mode 100644 index 0000000..3745e8e --- /dev/null +++ b/riot/emojione/svg/1f385-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.1 23.5c2.6 2.7 2.9 6.7.7 9-2.2 2.3-6.1 1.9-8.7-.8-2.6-2.7-2.9-6.7-.7-9 2.2-2.2 6.1-1.9 8.7.8" fill="#b47d56"/><path d="m62 63h-60c0-34.6 13.4-37.9 30-37.9 16.6 0 30 3.3 30 37.9" fill="#ff4848"/><path d="m54.2 19.1c0 13.6-2.5 24.6-22.2 24.6s-22.2-11.1-22.2-24.6c0-4.4 44.4-4.4 44.4 0" fill="#b47d56"/><path d="m26.2 25.2c0 3.4-2.7 6.2-6 6.2-3.3 0-6-2.8-6-6.2 0-3.4 2.7-6.2 6-6.2 3.3 0 6 2.8 6 6.2" fill="#fff"/><path d="m24.7 25.2c0 2.6-2 4.6-4.5 4.6-2.5 0-4.5-2.1-4.5-4.6 0-2.6 2-4.6 4.5-4.6 2.5-.1 4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m21.7 25.2c0 .9-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5c0-.9.7-1.6 1.5-1.6s1.5.7 1.5 1.6" fill="#231f20"/><ellipse cx="43.8" cy="25.2" rx="6" ry="6.2" fill="#fff"/><path d="m48.3 25.2c0 2.6-2 4.6-4.5 4.6s-4.5-2.1-4.5-4.6c0-2.6 2-4.6 4.5-4.6s4.5 2 4.5 4.6" fill="#0a84a5"/><ellipse cx="43.8" cy="25.2" rx="1.5" ry="1.5" fill="#231f20"/><path d="m57.3 40.2c0 18.3-11 21.7-24.5 21.7-13.6 0-24.5-3.4-24.5-21.7 0-10.3 11-10.7 24.5-10.7s24.5.4 24.5 10.7" fill="#e2e9ed"/><ellipse cx="32" cy="36.8" rx="3.5" ry="3.6" fill="#664e27"/><g fill="#fff"><path d="m49.3 22.7c-3-.2 6.1 7.4-8.2 6.3-5-.4-9.2 3.3-9.2 6.5 0 3.9 4.1 6.9 10.3 6.9 7.3 0 12.6-4.5 13.7-10.9.5-2.7-1.6-8.3-6.6-8.8"/><path d="m22.8 29.1c-14.2 1.1-5.2-6.6-8.2-6.3-5 .4-7.1 6-6.6 8.8 1 6.4 6.3 10.9 13.7 10.9 6.2 0 10.3-3 10.3-6.9 0-3.3-4.2-6.9-9.2-6.5"/></g><g fill="#734c31"><path d="m42.8 30.5c.3 1.1-.7 2.3-2.2 2.7s-2.9-.2-3.2-1.2.7-2.3 2.2-2.7c1.5-.4 3 .1 3.2 1.2"/><path d="m21.3 30.5c-.3 1.1.7 2.3 2.2 2.7 1.5.4 2.9-.2 3.2-1.2.3-1.1-.7-2.3-2.2-2.7-1.5-.4-3 .1-3.2 1.2"/></g><ellipse cx="32" cy="29.7" rx="7.5" ry="5.2" fill="#935e3e"/><path d="m60 17.6c0 2.1-1.2 3.9-4 3.9h-48c-2.8 0-4-1.7-4-3.9 0-2.1 1.2-3.9 4-3.9h48c2.8.1 4 1.8 4 3.9" fill="#fff"/><path d="m42.8 16.8c-17.5-3.5-33.7-3.1-33.7-3.1 0-7.2 12.7-12.7 26.2-12.7 14.2 0 24.5 7.5 26 20.5 1.9 15.9-11.8 26.3-10.2 22.8 8.1-18.3-1.6-26.1-8.3-27.5" fill="#ff4848"/><ellipse cx="47.9" cy="48.8" rx="6.7" ry="6.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f385-1f3ff.svg b/riot/emojione/svg/1f385-1f3ff.svg new file mode 100644 index 0000000..af8c967 --- /dev/null +++ b/riot/emojione/svg/1f385-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.1 23.5c2.6 2.7 2.9 6.7.7 9-2.2 2.3-6.1 1.9-8.7-.8-2.6-2.7-2.9-6.7-.7-9 2.2-2.2 6.1-1.9 8.7.8" fill="#8a6859"/><path d="m62 63h-60c0-34.6 13.4-37.9 30-37.9 16.6 0 30 3.3 30 37.9" fill="#ff4848"/><path d="m54.2 19.1c0 13.6-2.5 24.6-22.2 24.6s-22.2-11.1-22.2-24.6c0-4.4 44.4-4.4 44.4 0" fill="#8a6859"/><path d="m26.2 25.2c0 3.4-2.7 6.2-6 6.2-3.3 0-6-2.8-6-6.2 0-3.4 2.7-6.2 6-6.2 3.3 0 6 2.8 6 6.2" fill="#fff"/><path d="m24.7 25.2c0 2.6-2 4.6-4.5 4.6-2.5 0-4.5-2.1-4.5-4.6 0-2.6 2-4.6 4.5-4.6 2.5-.1 4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m21.7 25.2c0 .9-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.9.7-1.6 1.5-1.6.8 0 1.5.7 1.5 1.6" fill="#231f20"/><ellipse cx="43.8" cy="25.2" rx="6" ry="6.2" fill="#fff"/><path d="m48.3 25.2c0 2.6-2 4.6-4.5 4.6s-4.5-2.1-4.5-4.6c0-2.6 2-4.6 4.5-4.6s4.5 2 4.5 4.6" fill="#0a84a5"/><ellipse cx="43.8" cy="25.2" rx="1.5" ry="1.5" fill="#231f20"/><path d="m57.3 40.2c0 18.3-11 21.7-24.5 21.7-13.6 0-24.5-3.4-24.5-21.7 0-10.3 11-10.7 24.5-10.7s24.5.4 24.5 10.7" fill="#e2e9ed"/><ellipse cx="32" cy="36.8" rx="3.5" ry="3.6" fill="#664e27"/><g fill="#fff"><path d="m49.3 22.7c-3-.2 6.1 7.4-8.2 6.3-5-.4-9.2 3.3-9.2 6.5 0 3.9 4.1 6.9 10.3 6.9 7.3 0 12.6-4.5 13.7-10.9.5-2.7-1.6-8.3-6.6-8.8"/><path d="m22.8 29.1c-14.2 1.1-5.2-6.6-8.2-6.3-5 .4-7.1 6-6.6 8.8 1 6.4 6.3 10.9 13.7 10.9 6.2 0 10.3-3 10.3-6.9 0-3.3-4.2-6.9-9.2-6.5"/></g><g fill="#5c3f34"><path d="m42.8 30.5c.3 1.1-.7 2.3-2.2 2.7s-2.9-.2-3.2-1.2.7-2.3 2.2-2.7c1.5-.4 3 .1 3.2 1.2"/><path d="m21.3 30.5c-.3 1.1.7 2.3 2.2 2.7 1.5.4 2.9-.2 3.2-1.2.3-1.1-.7-2.3-2.2-2.7-1.5-.4-3 .1-3.2 1.2"/></g><ellipse cx="32" cy="29.7" rx="7.5" ry="5.2" fill="#7d5442"/><path d="m60 17.6c0 2.1-1.2 3.9-4 3.9h-48c-2.8 0-4-1.7-4-3.9 0-2.1 1.2-3.9 4-3.9h48c2.8.1 4 1.8 4 3.9" fill="#fff"/><path d="m42.8 16.8c-17.5-3.5-33.7-3.1-33.7-3.1 0-7.2 12.7-12.7 26.2-12.7 14.2 0 24.5 7.5 26 20.5 1.9 15.9-11.8 26.3-10.2 22.8 8.1-18.3-1.6-26.1-8.3-27.5" fill="#ff4848"/><ellipse cx="47.9" cy="48.8" rx="6.7" ry="6.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f385.svg b/riot/emojione/svg/1f385.svg new file mode 100644 index 0000000..9f07458 --- /dev/null +++ b/riot/emojione/svg/1f385.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.1 23.5c2.6 2.7 2.9 6.7.7 9-2.2 2.3-6.1 1.9-8.7-.8-2.6-2.7-2.9-6.7-.7-9 2.2-2.2 6.1-1.9 8.7.8" fill="#ffdd67"/><path d="m62 63h-60c0-34.6 13.4-37.9 30-37.9 16.6 0 30 3.3 30 37.9" fill="#ff4848"/><path d="m54.2 19.1c0 13.6-2.5 24.6-22.2 24.6s-22.2-11.1-22.2-24.6c0-4.4 44.4-4.4 44.4 0" fill="#ffdd67"/><path d="m26.2 25.2c0 3.4-2.7 6.2-6 6.2-3.3 0-6-2.8-6-6.2 0-3.4 2.7-6.2 6-6.2 3.3 0 6 2.8 6 6.2" fill="#fff"/><path d="m24.7 25.2c0 2.6-2 4.6-4.5 4.6-2.5 0-4.5-2.1-4.5-4.6 0-2.6 2-4.6 4.5-4.6 2.5-.1 4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m21.7 25.2c0 .9-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5c0-.9.7-1.6 1.5-1.6.8 0 1.5.7 1.5 1.6" fill="#231f20"/><ellipse cx="43.8" cy="25.2" rx="6" ry="6.2" fill="#fff"/><path d="m48.3 25.2c0 2.6-2 4.6-4.5 4.6s-4.5-2.1-4.5-4.6c0-2.6 2-4.6 4.5-4.6s4.5 2 4.5 4.6" fill="#0a84a5"/><path d="m45.3 25.2c0 .9-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.9.7-1.6 1.5-1.6.8 0 1.5.7 1.5 1.6" fill="#231f20"/><path d="m57.3 40.2c0 18.3-11 21.7-24.5 21.7-13.6 0-24.5-3.4-24.5-21.7 0-10.3 11-10.7 24.5-10.7s24.5.4 24.5 10.7" fill="#e2e9ed"/><ellipse cx="32" cy="36.8" rx="3.5" ry="3.6" fill="#664e27"/><g fill="#fff"><path d="m49.3 22.7c-3-.2 6.1 7.4-8.2 6.3-5-.4-9.2 3.3-9.2 6.5 0 3.9 4.1 6.9 10.3 6.9 7.3 0 12.6-4.5 13.7-10.9.5-2.7-1.6-8.3-6.6-8.8"/><path d="m22.8 29.1c-14.2 1.1-5.2-6.6-8.2-6.3-5 .4-7.1 6-6.6 8.8 1 6.4 6.3 10.9 13.7 10.9 6.2 0 10.3-3 10.3-6.9 0-3.3-4.2-6.9-9.2-6.5"/></g><g fill="#eba352"><path d="m42.8 30.5c.3 1.1-.7 2.3-2.2 2.7s-2.9-.2-3.2-1.2.7-2.3 2.2-2.7c1.5-.4 3 .1 3.2 1.2"/><path d="m21.3 30.5c-.3 1.1.7 2.3 2.2 2.7 1.5.4 2.9-.2 3.2-1.2.3-1.1-.7-2.3-2.2-2.7-1.5-.4-3 .1-3.2 1.2"/></g><ellipse cx="32" cy="29.7" rx="7.5" ry="5.2" fill="#ffc267"/><path d="m60 17.6c0 2.1-1.2 3.9-4 3.9h-48c-2.8 0-4-1.7-4-3.9 0-2.1 1.2-3.9 4-3.9h48c2.8.1 4 1.8 4 3.9" fill="#fff"/><path d="m42.8 16.8c-17.5-3.5-33.7-3.1-33.7-3.1 0-7.2 12.7-12.7 26.2-12.7 14.2 0 24.5 7.5 26 20.5 1.9 15.9-11.8 26.3-10.2 22.8 8.1-18.3-1.6-26.1-8.3-27.5" fill="#ff4848"/><ellipse cx="47.9" cy="48.8" rx="6.7" ry="6.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f386.svg b/riot/emojione/svg/1f386.svg new file mode 100644 index 0000000..9b8995a --- /dev/null +++ b/riot/emojione/svg/1f386.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#6adbc6"><path d="m32 30.8c0 0-1.7-10.7-1.7-11.5s.8-1.3 1.7-1.3 1.7.6 1.7 1.4-1.7 11.4-1.7 11.4"/><path d="m32 33.3c0 0 1.7 10.7 1.7 11.5 0 .7-.8 1.4-1.7 1.4s-1.7-.6-1.7-1.4c0-.8 1.7-11.5 1.7-11.5"/><path d="m30.7 32c0 0-10.7 1.7-11.5 1.7-.7 0-1.4-.8-1.4-1.7s.6-1.7 1.4-1.7c.8 0 11.5 1.7 11.5 1.7"/><path d="m33.3 32c0 0 10.7-1.7 11.5-1.7.7 0 1.4.8 1.4 1.7s-.6 1.7-1.4 1.7-11.5-1.7-11.5-1.7"/><path d="m31.1 31.1c0 0-8.8-6.4-9.3-6.9-.5-.5-.4-1.5.3-2.2.7-.7 1.6-.8 2.2-.3.4.7 6.8 9.4 6.8 9.4"/><path d="m32.9 32.9c0 0 8.8 6.4 9.3 6.9.5.5.4 1.5-.3 2.2-.7.7-1.6.8-2.2.3-.4-.6-6.8-9.4-6.8-9.4"/><path d="m31.1 32.9c0 0-6.4 8.8-6.9 9.3-.5.5-1.5.4-2.2-.3-.7-.7-.8-1.6-.3-2.2.6-.4 9.4-6.8 9.4-6.8"/><path d="m32.9 31.1c0 0 6.4-8.8 6.9-9.3.5-.5 1.5-.4 2.2.3.7.7.8 1.6.3 2.2-.6.5-9.4 6.8-9.4 6.8"/></g><g fill="#ffce31"><path d="m31.2 29.9c0 0-8.8-17.3-9.3-18.5s-.2-2.5.7-2.9 2 .4 2.5 1.6 6.1 19.8 6.1 19.8"/><path d="m32.8 34.1c0 0 8.8 17.3 9.3 18.5.5 1.2.2 2.5-.7 2.9-.9.4-2-.4-2.5-1.6s-6.1-19.8-6.1-19.8"/><path d="m29.9 32.9c0 0-17.3 8.8-18.5 9.3-1.2.5-2.5.2-2.9-.7-.4-.9.4-2 1.6-2.5 1.3-.5 19.8-6.1 19.8-6.1"/><path d="m34.1 31.2c0 0 17.3-8.8 18.5-9.3 1.2-.5 2.5-.2 2.9.7.4.9-.4 2-1.6 2.5-1.3.4-19.8 6.1-19.8 6.1"/><path d="m29.9 31.1c0 0-18.4-6-19.7-6.5s-1.9-1.6-1.5-2.5c.4-.9 1.7-1.1 2.9-.6 1.2.5 18.3 9.6 18.3 9.6"/><path d="m34.1 32.9c0 0 18.4 6 19.7 6.5 1.2.5 1.9 1.7 1.6 2.5-.4.9-1.7 1.1-2.9.6-1.3-.5-18.4-9.6-18.4-9.6"/><path d="m31.1 34.1c0 0-6 18.4-6.5 19.7-.5 1.2-1.7 1.9-2.5 1.6-.9-.4-1.1-1.7-.6-2.9.5-1.3 9.6-18.4 9.6-18.4"/><path d="m32.9 30c0 0 6-18.4 6.5-19.7.5-1.3 1.6-2 2.5-1.6.9.4 1.1 1.7.6 2.9-.5 1.3-9.6 18.4-9.6 18.4"/></g><g fill="#42ade2"><path d="m32 47.1c0 0 1.7 12.5 1.7 13.4 0 .9-.8 1.6-1.7 1.6-.9 0-1.7-.7-1.7-1.6 0-.9 1.7-13.4 1.7-13.4"/><path d="M32,16c0,0-1.7-11.7-1.7-12.5C30.3,2.7,31,2,32,2s1.7,0.7,1.7,1.5S32,16,32,16z"/><path d="m42.7 42.7c0 0 10 7.6 10.7 8.2.6.6.6 1.7-.1 2.3s-1.7.7-2.3.1c-.7-.6-8.3-10.6-8.3-10.6"/><path d="m20.7 20.7c0 0-9.5-7-10-7.6-.6-.6-.5-1.6.2-2.3.7-.7 1.7-.7 2.3-.2.4.6 7.5 10.1 7.5 10.1"/><path d="m42.7 21.3c0 0 7.6-10 8.2-10.7.6-.6 1.7-.6 2.3.1.7.7.7 1.7.1 2.3-.6.7-10.6 8.3-10.6 8.3"/><path d="m20.7 43.3c0 0-7 9.5-7.6 10-.6.6-1.6.5-2.3-.2s-.8-1.6-.2-2.1c.6-.6 10.1-7.7 10.1-7.7"/><path d="m47.1 32c0 0 12.5-1.7 13.4-1.7s1.5.7 1.5 1.7c0 .9-.7 1.7-1.6 1.7-.8 0-13.3-1.7-13.3-1.7"/><path d="M16,32c0,0-11.7,1.7-12.5,1.7C2.7,33.7,2,33,2,32s0.7-1.7,1.5-1.7C4.3,30.3,16,32,16,32z"/><circle cx="20.7" cy="5.1" r="1.8"/><circle cx="43.5" cy="5.1" r="1.8"/><circle cx="20.2" cy="59" r="1.8"/><circle cx="43" cy="59" r="1.8"/><circle cx="4.9" cy="43.2" r="1.8"/><circle cx="4.9" cy="20.4" r="1.8"/><circle cx="58.8" cy="43.7" r="1.8"/><circle cx="58.8" cy="20.9" r="1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f387.svg b/riot/emojione/svg/1f387.svg new file mode 100644 index 0000000..2014225 --- /dev/null +++ b/riot/emojione/svg/1f387.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3e4347" d="m0 0h64v64h-64z"/><path fill="#d0d0d0" d="m30.9 32h2.2v32h-2.2z"/><path fill="#ffdd7d" d="m32 3.2l3 19.7 13.9-14.2-9.1 17.7 19.6-3.3-17.8 8.9 17.8 8.9-19.6-3.3 9.1 17.7-13.9-14.2-3 19.7-3-19.7-13.9 14.2 9.1-17.7-19.6 3.3 17.8-8.9-17.8-8.9 19.6 3.3-9.1-17.7 13.9 14.2z"/><path fill="#ffce31" d="m25.3 52.5l2.5-14.7-13.3 6.9 10.7-10.5-14.8-2.2 14.8-2.2-10.7-10.5 13.3 6.9-2.5-14.7 6.7 13.3 6.7-13.3-2.5 14.7 13.3-6.9-10.7 10.5 14.8 2.2-14.8 2.2 10.7 10.5-13.3-6.9 2.5 14.7-6.7-13.3z"/><path fill="#fff" d="m41.5 18.9l-5.1 9.9 11-1.8-10 5 10 5-11-1.8 5.1 9.9-7.8-8-1.7 11.1-1.7-11.1-7.8 8 5.1-9.9-11 1.8 10-5-10-5 11 1.8-5.1-9.9 7.8 8 1.7-11.1 1.7 11.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f388.svg b/riot/emojione/svg/1f388.svg new file mode 100644 index 0000000..d29c08e --- /dev/null +++ b/riot/emojione/svg/1f388.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52 22.5c0 11.3-8.8 24.4-19.8 24.4-10.9 0-19.8-13-19.8-24.4.1-11.3 8.9-20.5 19.8-20.5 11 0 19.8 9.2 19.8 20.5" fill="#ed4c5c"/><g fill="#94989b"><path d="m31.5 49.1c0 0 0-.1 0-.1 0 0 0 .1 0 .1"/><path d="m31.6 49.2c-.1 0-.1-.1 0 0"/></g><path d="m33 49.2h-1.5c0 1.8-.4 3.9-1.9 5.2-2.1 1.8-4.9.7-7.4.6-3-.1-5.6 1.2-7.7 3.2-.8.7-1.6 1.7-2.3 2.5-.8.9.3 1.9 1.1 1 1.5-1.8 2.6-3.1 4.6-4.3 2.6-1.5 5-.7 7.8-.6 3.2.2 6.1-1.4 7-4.7.2-.7.3-2 .3-2.9" fill="#b2c1c0"/><path d="m31.5 49c0-.1 0 0 0 0" fill="#94989b"/><path d="m30.8 48c1 0 1.9 0 2.9 0 .9 0 .9-1.3 0-1.3-1 0-1.9 0-2.9 0-.9.1-.9 1.3 0 1.3" fill="#b2c1c0"/><path d="m30.1 50c1.4 0 2.9 0 4.3 0 1.4 0 1.4-1.9 0-1.9-1.4 0-2.9 0-4.3 0-1.4-.1-1.4 1.9 0 1.9" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f389.svg b/riot/emojione/svg/1f389.svg new file mode 100644 index 0000000..b0adb4c --- /dev/null +++ b/riot/emojione/svg/1f389.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#f7b600" d="m2 61l8.6-3-6.5-3z"/><path fill="#ffdd7d" d="m26.9 36.4l-12.1-12.2-2 5.6z"/><path fill="#f7b600" d="m12.8 29.8l-2.2 6.3 26.8 12.5 1.3-.4-11.8-11.8z"/><path fill="#ffdd7d" d="m8.5 42.4l20 9.3 8.9-3.1-26.8-12.5z"/><path fill="#f7b600" d="m6.3 48.7l13.2 6.2 9-3.2-20-9.3z"/><path fill="#ffdd7d" d="m6.3 48.7l-2.2 6.3 6.5 3 8.9-3.1z"/><path d="m31.9 31.2c6.7 6.6 10.2 14 7.8 16.4-2.5 2.4-9.9-1-16.7-7.7-6.7-6.6-10.2-14-7.8-16.4 2.5-2.4 9.9 1.1 16.7 7.7" fill="#493816"/><path d="m23.5 14.5c-1.6-2.3.1-3.3 2.3-2.9-2.1-2.5-.8-4.3 2.5-3.6 1 .2-.4 1.9-1.3 1.9 2.7 2 1.2 4.2-1.7 3.7 2.6 3.5-1.8 2.6-3.8 2.8-.5 2.6 2.5 5.6 1.5 5.6-2.2 0-5.8-8.3.5-7.5" fill="#42ade2"/><path d="m44.5 19.3c-1.5.7-5.7-5.9-.5-6-3-2.7-2.6-4 1.4-4.1-4.6-4.6 2.7-6.2 3.4-3.8.2.7-2.2-.6-3 .7-.9 1.5 5.6 5.4-1.1 5.1 2.5 2.5 2.6 3.7-1.3 4.1.5.8 2.1 3.6 1.1 4" fill="#ff8736"/><path d="m46.2 34.9l1.5-1.3c0 0 1.4 2.1 2.4 2.9.8-3.6.6-5.7 4.7-3.3-2.3-6.2 1.5-3.9 5.2-2.2-.2-1.6 0-1.4 1.6-1.9 1.4 5.3-2.4 3.7-5.4 2 1.8 4.8-.1 4.5-3.9 2.9-.1 2-.7 4.3-1.9 4.5-1.4.4-4.2-3.6-4.2-3.6" fill="#ed4c5c"/><path d="m35 20.1c-1.8 2.4-4.7 3.7-6.8 5.8-2.2 2.2-3.5 8.2-3.5 8.2s.8-6.3 2.9-8.7c1.9-2.2 4.7-3.8 6.2-6.3 2.6-4.6.2-10.6-3.2-14.1.7-.6 1.7-1.4 2.2-2 3.3 4.1 6.1 12 2.2 17.1" fill="#c28fef"/><path d="m38.1 25.2c-2.6 1.9-4.5 4.7-6.3 7.3-1.6 2.3-6.7 5.2-6.7 5.2s4.8-3.3 6.3-5.7c1.8-3 3.6-6.1 6.4-8.3 5.6-4.3 13.7-3.9 20-1.6-.4.9-1.1 2.8-1.1 2.8s-13.3-3.6-18.6.3" fill="#ff8736"/><g fill="#42ade2"><path d="m49.2 24.7c-1.7 2.2-2.5 4.9-3.8 7.4-1.2 2.3-2.8 4.5-5.1 5.7-2.6 1.3-8.3.9-8.3.9s5.7-.1 8.1-1.7c2.4-1.6 3.7-4.4 4.6-7 1.8-5 4-10.4 9.2-12.6.3.9 1 2.8 1 2.8s-2.9.8-5.7 4.5"/><path transform="matrix(.707-.7072.7072.707-8.3165 8.458)" d="m4 12.3h4v4h-4z"/></g><path transform="matrix(.7071-.7071.7071.7071-13.4747 13.8633)" fill="#ff8736" d="m8 21.2h4v4h-4z"/><path transform="matrix(.707-.7072.7072.707-1.905 15.0572)" fill="#ed4c5c" d="m15.2 7.8h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071-16.8081 46.7362)" fill="#c28fef" d="m46 41.7h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071-25.5139 45.1176)" fill="#ed4c5c" d="m39.7 51.4h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071-23.4619 54.546)" fill="#ff8736" d="m52.1 53.6h4v4h-4z"/><g fill="#42ade2"><path transform="matrix(.7071-.7071.7071.7071-13.5212 52.7722)" d="m54.9 40.7h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071 6.223 40.6826)" d="m50.2 10.8h4v4h-4z"/></g><path transform="matrix(.7071-.7071.7071.7071-14.6842 24.2063)" fill="#ed4c5c" d="m19.9 27.8h4v4h-4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f38a.svg b/riot/emojione/svg/1f38a.svg new file mode 100644 index 0000000..a29c16a --- /dev/null +++ b/riot/emojione/svg/1f38a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m44.4 18h-2.3c0-1-.2-2-.5-3-1.3-4.3-5.2-7.1-9.7-7.1-4.5 0-8.3 2.9-9.7 7.1-.3 1-.5 2-.5 3h-2.3c0-1.3.2-2.5.6-3.7.8-2.5 2.3-4.7 4.4-6.2 2.2-1.6 4.7-2.5 7.4-2.5 2.7 0 5.3.9 7.4 2.5 2.1 1.6 3.7 3.8 4.4 6.2.6 1.2.8 2.5.8 3.7" fill="#d3976e"/><path d="m29.9 12.4c-2.5-5-7.4-8.4-13.1-8.4-8.2 0-14.8 7-14.8 15.7 0 4 1.4 7.7 3.8 10.4 0 0 6-15.7 24.1-17.7" fill="#ffdd7d"/><path d="m29.9 12.4c-18.1 2-24.1 17.8-24.1 17.8 11.1-1.1 20.4-8.2 24.1-17.8" fill="#594640"/><path d="m34.1 12.4c2.5-5 7.4-8.4 13.1-8.4 8.2 0 14.8 7 14.8 15.7 0 4-1.4 7.7-3.8 10.4 0 0-6-15.7-24.1-17.7" fill="#ffdd7d"/><path d="m34.1 12.4c18.1 2 24.1 17.8 24.1 17.8-11.1-1.1-20.4-8.2-24.1-17.8" fill="#594640"/><path d="m42.4 60l-3.4-1.6c1.3-3.1.7-4.2-.2-5.7-1-1.7-2.5-4.1-.5-8.8.6-1.4.3-1.8-.5-3.1-1-1.7-2.4-4-1.1-8.3 1.3-4.5-1.7-9.8-1.7-9.9l3.1-2c.2.3 3.9 6.9 2.1 13.1-.8 2.6-.1 3.6.7 5 .9 1.5 2.1 3.5.8 6.8-1.2 2.8-.6 3.7.3 5.2 1 1.8 2.5 4.3.4 9.3" fill="#42ade2"/><path d="m24.3 59.9c-2.2-5-.8-7.5.2-9.3.9-1.5 1.4-2.4.1-5.2-1.4-3.2-.3-5.3.6-6.8.8-1.4 1.4-2.5.6-5-2-6.2 1.6-12.9 1.8-13.1l3.2 2-1.6-1 1.6 1c0 .1-2.9 5.4-1.5 9.9 1.4 4.3 0 6.6-.9 8.3-.7 1.3-1 1.8-.4 3.1 2.1 4.7.7 7.1-.3 8.9-.9 1.5-1.5 2.6-.1 5.7l-3.3 1.5" fill="#ed4c5c"/><path d="m5.8 57.5c-.8-5.4 1.2-7.4 2.7-9 1.2-1.2 1.9-2 1.5-5-.6-3.5 1.1-5.2 2.3-6.4 1.2-1.2 2-2 1.9-4.7-.3-6.5 4.9-12 5.1-12.2l2.6 2.7-1.3-1.4 1.3 1.4c0 0-4.2 4.5-4 9.2.2 4.5-1.7 6.4-3 7.8-1 1.1-1.4 1.4-1.2 2.9.8 5-1.1 7-2.6 8.5-1.2 1.3-2.1 2.1-1.5 5.5l-3.8.7" fill="#c28fef"/><path d="m59.5 57.5c.8-5.4-1.2-7.4-2.7-9-1.2-1.2-1.9-2-1.5-5 .6-3.5-1.1-5.2-2.3-6.4-1.2-1.2-2-2-1.9-4.7.3-6.5-4.9-12-5.1-12.2l-2.6 2.7 1.3-1.4-1.3 1.4c0 0 4.2 4.5 4 9.2-.2 4.5 1.7 6.4 3 7.8 1 1.1 1.4 1.4 1.2 2.9-.8 5 1.2 7 2.6 8.5 1.2 1.3 2.1 2.1 1.5 5.5l3.8.7" fill="#83bf4f"/><g fill="#42ade2"><path transform="matrix(.7071-.7071.7071.7071-18.6201 25.4129)" d="m19.4 33.2h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071-25.0871 51.3699)" d="m47.5 54h4v4h-4z"/></g><g fill="#83bf4f"><path transform="matrix(.7071-.7071.7071.7071-26.3413 26.4612)" d="m16.8 43h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071-10.7864 31.5143)" d="m30.6 26.8h4v4h-4z"/></g><g fill="#ed4c5c"><path transform="matrix(.7071-.7071.7071.7071-34.9053 27.6654)" d="m13.9 54h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071-18.4185 46.6152)" d="m45.1 43.5h4v4h-4z"/></g><g fill="#c28fef"><path transform="matrix(.7071-.7071.7071.7071-29.7046 39.3498)" d="m30.6 53.5h4v4h-4z"/><path transform="matrix(.7071-.7071.7071.7071-12.2172 41.704)" d="m42.2 33.6h4v4h-4z"/></g><path transform="matrix(.7071-.7071.7071.7071-20.6923 36.2035)" fill="#ed4c5c" d="m31.4 41.1h4v4h-4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f38b.svg b/riot/emojione/svg/1f38b.svg new file mode 100644 index 0000000..ad576db --- /dev/null +++ b/riot/emojione/svg/1f38b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#699635"><path d="m16.6 18.5c0 0-4.6-2.8-14.6 0 0 0 10.4 1.2 15.7 4.6l-1.1-4.6"/><path d="m19.7 23.1c0 0-4.6-2.8-14.6 0 0 0 8.6.1 14.7 4.6.9.6-.1-4.6-.1-4.6"/><path d="M23,34c0,0,3.5-13.5,11.1-20c7.6-6.5,9.9-11.5,9.9-11.5s-5,27.9-20.4,35.2L23,34z"/></g><path d="m35 33.5c-3.7-1.7-4.8-4.6-4.9-4.8l1.2-.5-.6.2.6-.2c0 0 1 2.5 4.2 4l-.5 1.3" fill="#594640"/><path fill="#75a843" d="m24.6 59.2l-10.5-50 5-1.2 10.4 50z"/><path fill="#83bf4f" d="m31.7 61.5l-9.4-57.8 5-.9 9.4 57.7z"/><g fill="#699635"><path d="m15.4 15.1c1.7-.4 3.3-.8 5-1.2.8-.2.5-1.5-.3-1.3-1.7.4-3.3.8-5 1.2-.8.2-.5 1.5.3 1.3"/><path d="m18.2 28.3c1.7-.4 3.3-.8 5-1.2.8-.2.5-1.5-.3-1.3-1.7.4-3.3.8-5 1.2-.8.2-.5 1.5.3 1.3"/><path d="m21.1 41.4c1.7-.4 3.3-.8 5-1.2.8-.2.5-1.5-.3-1.3-1.7.4-3.3.8-5 1.2-.9.2-.5 1.5.3 1.3"/><path d="m23.9 54.6c1.7-.4 3.3-.8 5-1.2.8-.2.5-1.5-.3-1.3-1.7.4-3.3.8-5 1.2-.8.2-.5 1.5.3 1.3"/></g><g fill="#75a843"><path d="m23.6 11.8c1.7-.3 3.3-.6 5-1 .8-.2.5-1.5-.3-1.3-1.7.3-3.3.6-5 1-.8.2-.5 1.5.3 1.3"/><path d="m25.9 25.1c1.7-.3 3.3-.6 5-1 .8-.2.5-1.5-.3-1.3-1.7.3-3.3.6-5 1-.9.2-.5 1.5.3 1.3"/><path d="m28.1 38.4c1.7-.3 3.3-.6 5-1 .8-.2.5-1.5-.3-1.3-1.7.3-3.3.6-5 1-.8.1-.5 1.4.3 1.3"/><path d="m30.4 51.7c1.7-.3 3.3-.6 5-1 .8-.2.5-1.5-.3-1.3-1.7.3-3.3.6-5 1-.8.1-.5 1.4.3 1.3"/></g><path d="m32.2 39c0 0 4.4 8.8 14.2 13.2 9.8 4.3 12 8.3 12 8.3l3.6-13.5c0 0-2.8-4.5-14.2-9.7-3.6-1.7-6.6-5.8-9.8-10.8l-5.8 12.5" fill="#ed4c5c"/><path fill="#ffce31" d="m32.5 39.9l-1.2-.6 6.1-13.2 1.2.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f38c.svg b/riot/emojione/svg/1f38c.svg new file mode 100644 index 0000000..959e668 --- /dev/null +++ b/riot/emojione/svg/1f38c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.2 23.6c6 9.8 17.6 1.5 23.6 11.4 2-6.7 4.2-13.5 6.2-20.2-6-9.8-17.6-1.5-23.6-11.4-2.1 6.7-4.2 13.4-6.2 20.2" fill="#e6eff4"/><path d="m51.4 21.3c-.8 2.8-3.5 4.1-5.9 3-2.4-1.2-3.7-4.4-2.8-7.1.8-2.8 3.5-4.1 5.9-3 2.4 1.1 3.7 4.3 2.8 7.1" fill="#ff2449"/><path d="m39.4 3.3c.2-.5-.1-1.1-.7-1.3-.5-.2-1.1.1-1.3.7l-18.1 59.3h2.2l17.9-58.7" fill="#3e4347"/><path d="m31.8 23.6c-6 9.8-17.6 1.5-23.6 11.4-2-6.8-4.2-13.5-6.2-20.3 6-9.8 17.6-1.5 23.6-11.4 2.1 6.8 4.2 13.5 6.2 20.3" fill="#e6eff4"/><path d="m12.6 21.3c.8 2.8 3.5 4.1 5.9 3 2.4-1.2 3.7-4.4 2.8-7.1-.8-2.8-3.5-4.1-5.9-3-2.4 1.1-3.7 4.3-2.8 7.1" fill="#ff2449"/><path d="m26.6 2.7c-.2-.5-.8-.9-1.3-.7s-.9.8-.7 1.3l18 58.7h2.2l-18.2-59.3" fill="#4c5256"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f38d.svg b/riot/emojione/svg/1f38d.svg new file mode 100644 index 0000000..952e4c4 --- /dev/null +++ b/riot/emojione/svg/1f38d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#699635" d="m14.2 20.6h10.2v34.4h-10.2z"/><ellipse cx="19.3" cy="20.6" rx="5.1" ry="6.3" fill="#fed0ac"/><path d="m16 22.5c.8 2.1 2.8 3 4.5 2 1.7-1 2.4-3.5 1.6-5.6l-6.1 3.6" fill="#d3976e"/><path fill="#83bf4f" d="m14.2 32.1h10.2v1.5h-10.2z"/><g fill="#699635"><path d="m39.6 30.8h10.2v22.1h-10.2z"/><path d="m26.9 8.3h10.2v46.7h-10.2z"/></g><g fill="#83bf4f"><path d="m26.9 19.8h10.2v1.5h-10.2z"/><path d="m26.9 32.1h10.2v1.5h-10.2z"/></g><ellipse cx="32" cy="8.3" rx="5.1" ry="6.3" fill="#fed0ac"/><path d="m28.7 10.2c.8 2.1 2.8 3 4.5 2 1.7-1 2.4-3.5 1.6-5.6l-6.1 3.6" fill="#d3976e"/><ellipse cx="44.7" cy="30.8" rx="5.1" ry="6.3" fill="#fed0ac"/><path d="m41.5 32.7c.8 2.1 2.8 3 4.5 2 1.7-1 2.4-3.5 1.6-5.6l-6.1 3.6" fill="#d3976e"/><g fill="#83bf4f"><path d="m14.2 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m16.4 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m19.8 35.9c0 0 0 0 0 0 0 .1-1.1 3.4-1.1 16.1h1.1 1.1c0-12.7-1.1-16.1-1.1-16.1"/><path d="m22 35.9c0 0 0 0 0 0 0 .1-1.1 3.4-1.1 16.1h1.1 1.1c0-12.7-1.1-16.1-1.1-16.1"/><path d="m23.1 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m26.4 35.9c0 0 0 0 0 0 0 .1-1.1 3.4-1.1 16.1h1.1 1.1c0-12.7-1-16.1-1.1-16.1"/><path d="m27.5 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m29.8 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="M32,51.9h1.1h1.1c0-12.8-1.1-16.1-1.1-16.1S32,39.2,32,51.9z"/><path d="m34.2 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m36.5 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m39.8 35.9c0 0 0 0 0 0 0 .1-1.1 3.4-1.1 16.1h1.1 1.1c0-12.7-1.1-16.1-1.1-16.1"/><path d="m40.9 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m43.1 51.9h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1s-1.1 3.4-1.1 16.1"/><path d="m46.5 35.9c0 0 0 0 0 0 0 .1-1.1 3.4-1.1 16.1h1.1 1.1c0-12.7-1.1-16.1-1.1-16.1"/><path d="m48.7 35.9c0 0-1.1 3.3-1.1 16.1h1.1 1.1c0-12.8-1.1-16.1-1.1-16.1"/></g><path fill="#c7b299" d="m12.1 44.6h39.8v16.2h-39.8z"/><path fill="#d3976e" d="m10 60.1h44v3.9h-44z"/><path fill="#af1734" d="m11.6 52.8h40.8v3.9h-40.8z"/><g fill="#ffce31"><path d="m10.4 45.5c0 0-.4 5 2.5 7.9 2.9 2.8 7.9 2.5 7.9 2.5s.4-5-2.5-7.9c-2.8-2.9-7.9-2.5-7.9-2.5"/><path d="m53.6 45.5c0 0-5.1-.4-7.9 2.5-2.9 2.8-2.5 7.9-2.5 7.9s5.1.4 7.9-2.5c2.9-2.9 2.5-7.9 2.5-7.9"/></g><path d="m44.9 45.1c-2.3-2.2-7-1.2-10.6 2.4-.9.9-1.7 1.9-2.2 2.9-.6-1-1.3-2-2.2-2.9-3.6-3.6-8.4-4.7-10.6-2.4-2.3 2.2-1.2 7 2.4 10.5 3.5 3.5 8.1 4.6 10.4 2.6 2.3 2 6.9.9 10.4-2.6 3.5-3.6 4.6-8.3 2.4-10.5" fill="#ffdd7d"/><path d="m43.4 60.5c-.7 0-1.2.4-1.5.9-1.4-.1-3.3-.6-4-2.7-1.4-4.5-5.3-6.5-5.4-6.6l-.5.7-.5-.9c-.2.1-4.1 2.2-5.4 6.6-.6 2.1-2.6 2.6-4 2.7-.3-.5-.9-.9-1.5-.9-1 0-1.8.8-1.8 1.8s.8 1.8 1.8 1.8c.6 0 1.1-.3 1.5-.7 2.2-.1 5-1 5.9-4 .8-2.7 2.9-4.5 3.9-5.1.9.6 3.2 2.3 4.2 5.3.9 3.1 3.7 3.9 5.9 4 .3.5.8.7 1.4.7 1 0 1.8-.8 1.8-1.8s-.8-1.8-1.8-1.8" fill="#af1734"/><path d="m39.2 48.8c-1.2 0-2.4.2-3.2.4-2 .5-3.3 1.5-4 2.2-.7-.8-2-1.8-4-2.2-.8-.2-1.9-.4-3.2-.4-3.3 0-5.2 1.7-5.2 4.7 0 2.9.9 4.3 2.7 4.3 1.3 0 2.7-.8 4.4-1.6 1.6-.8 3.4-1.7 5.2-2.1 1.8.4 3.6 1.3 5.2 2.1 1.7.9 3.2 1.6 4.5 1.6 1.8 0 2.7-1.4 2.7-4.3.1-2.9-1.8-4.7-5.1-4.7m-13.3 5.7c-1.4.7-2.8 1.4-3.6 1.4-.2 0-.8 0-.8-2.4 0-1.3.4-2.8 3.3-2.8 1 0 2 .2 2.7.4 1.3.3 2.2.9 2.8 1.4-1.5.5-3 1.3-4.4 2m15.7 1.4c-.8 0-2.1-.7-3.6-1.4-1.3-.7-2.8-1.5-4.4-2 .6-.5 1.5-1.1 2.8-1.4.7-.2 1.7-.4 2.7-.4 2.9 0 3.3 1.5 3.3 2.8 0 2.4-.6 2.4-.8 2.4" fill="#c9243c"/><ellipse cx="32" cy="52.7" rx="2.7" ry="2.7" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f38e.svg b/riot/emojione/svg/1f38e.svg new file mode 100644 index 0000000..05628ca --- /dev/null +++ b/riot/emojione/svg/1f38e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ce95a0" d="m47 19.7l-13.3 38.3h26.6z"/><g fill="#d51c46"><path d="m36.9 48.7h3v9.3h-3z"/><path d="m42.6 48.7h3v9.3h-3z"/><path d="m48.4 48.7h3v9.3h-3z"/><path d="m54.1 48.7h3v9.3h-3z"/><path d="m51 42.6c0 3.5-7.9 3.5-7.9 0 0-3.5 4-9.3 4-9.3s3.9 5.8 3.9 9.3"/></g><path d="m61.9 42.4c-.2-1.8-5.6-10.4-11-12-1.2-.4 1.6 5.8 1.3 7.7-.2 1.3-3.2 4.5-2.2 4.8h-6c1-.3-1.9-3.4-2.1-4.7-.3-1.9 2.5-8.1 1.3-7.7-5.4 1.7-10.8 10.2-11 12-.5 4.6.5 9.3 2 11.3-.3 1.3-.4 2.7-.4 4.2 0 0 7.4-7.7 13.3-7.7s13.2 7.7 13.2 7.7c0-1.5-.2-2.9-.4-4.2 1.5-2.1 2.5-6.7 2-11.4" fill="#f0c0c6"/><path d="m33.9 52.1c.2.7 2.9.1 3.1-.8 2.5-9.1 7.3-8.2 6.7-8.6-2.5-1.9-11.5 2-9.8 9.4" fill="#ce95a0"/><path d="m43.1 43.4c-1.5-2.2-8.3 1.9-7.7 3.6 1.3 3.2 6.5 4.4 6.3-1.2.1 0 2.8-.3 1.4-2.4" fill="#fee8d8"/><path d="m60.1 52.1c-.2.7-2.9.1-3.1-.8-2.5-9.1-7.3-8.2-6.7-8.6 2.5-1.9 11.5 2 9.8 9.4" fill="#ce95a0"/><path d="m50.9 43.4c1.5-2.2 8.3 1.9 7.7 3.6-1.3 3.2-6.5 4.4-6.3-1.2-.1 0-2.8-.3-1.4-2.4" fill="#fee8d8"/><path fill="#258399" d="M17 19.7 3.7 58 30.3 58z"/><g fill="#d7d16f"><path d="m6.9 48.7h3v9.3h-3z"/><path d="m12.6 48.7h3v9.3h-3z"/><path d="m18.4 48.7h3v9.3h-3z"/><path d="m24.1 48.7h3v9.3h-3z"/><path d="m21 42.6c0 3.5-7.9 3.5-7.9 0 0-3.5 4-9.3 4-9.3s3.9 5.8 3.9 9.3"/></g><path d="m31.9 42.4c-.2-1.8-5.6-10.4-11-12-1.2-.4 1.6 5.8 1.3 7.7-.2 1.3-3.2 4.5-2.2 4.8h-6c1-.3-1.9-3.4-2.1-4.7-.3-1.9 2.5-8.1 1.3-7.7-5.4 1.7-10.8 10.2-11 12-.5 4.6.5 9.3 2 11.3-.3 1.3-.4 2.7-.4 4.2 0 0 7.4-7.7 13.3-7.7s13.2 7.7 13.2 7.7c0-1.5-.2-2.9-.4-4.2 1.5-2.1 2.5-6.7 2-11.4" fill="#3baacf"/><path d="m3.9 52.1c.2.7 2.9.1 3.1-.8 2.5-9.1 7.3-8.2 6.7-8.6-2.5-1.9-11.5 2-9.8 9.4" fill="#258399"/><path d="m13.1 43.4c-1.5-2.2-8.3 1.9-7.7 3.6 1.3 3.2 6.5 4.4 6.3-1.2.1 0 2.8-.3 1.4-2.4" fill="#fee8d8"/><path d="m30.1 52.1c-.2.7-2.9.1-3.1-.8-2.5-9.1-7.3-8.2-6.7-8.6 2.5-1.9 11.5 2 9.8 9.4" fill="#258399"/><path d="m20.9 43.4c1.5-2.2 8.3 1.9 7.7 3.6-1.3 3.2-6.5 4.4-6.3-1.2-.1 0-2.8-.3-1.4-2.4" fill="#fee8d8"/><path d="M2,58h60v4H2V58z" fill="#89664c"/><path d="m28 18.3c0-1.7-1.7-4.4-5-5.9-.4-.9-1.1-1.7-1.9-2.3.7-1.3 1.1-2.7 1.1-3.6 0-6-10.3-6-10.3 0 0 .9.4 2.3 1.1 3.6-.9.7-1.6 1.5-2 2.4-3 1.4-4.9 3.7-4.9 5.8v6.2h22l-.1-6.2" fill="#454749"/><path d="m26.9 25.6c0 0 2.1.4 2.1-1.8 0-1.7-2.1-1.6-2.1-1.6v-1.6c-5.8-1.9-14-1.9-19.8 0v1.6c0 0-2.1-.2-2.1 1.6 0 2.2 2.1 1.8 2.1 1.8 0 9.1 19.8 9.8 19.8 0" fill="#fee8d8"/><g fill="#454749"><path d="m24.2 25.8c0 1.2-4.6 1.2-4.6 0 .1-3.1 4.6-3.1 4.6 0"/><path d="m14.3 25.8c0 1.2-4.6 1.2-4.6 0 .1-3.1 4.6-3.1 4.6 0"/><path d="m14.2 28.9c0 3.1 5.7 3.1 5.7 0 0 0-1.4.5-2.8.5-1.6 0-2.9-.5-2.9-.5"/><path d="m51.2 9.2c.4-1 .7-2 .7-2.7 0-6-9.7-6-9.7 0 0 .7.2 1.7.7 2.7-8.5 1.4-16 7.5-6.1 19.8 1.3 1.6 19.3 1.5 20.6 0 9.8-12.5 2.4-18.4-6.2-19.8"/></g><path d="m57.8 22.7c-.9 1.3-10-2.7-10.8-3.3-.8.6-10 4.6-10.8 3.2-.3.2-.5.6-.5 1.1 0 2.2 2 1.8 2 1.8 0 9.1 18.6 9.8 18.6 0 0 0 2 .4 2-1.8-.1-.4-.3-.8-.5-1" fill="#fee8d8"/><g fill="#454749"><path d="m53.8 25.8c0 1.2-4.3 1.2-4.3 0 0-3.1 4.3-3.1 4.3 0"/><path d="m44.5 25.8c0 1.2-4.3 1.2-4.3 0 0-3.1 4.3-3.1 4.3 0"/></g><path d="m46.5 28.4c-.3-.2-2.2.5-2.2.5 0 3.1 5.3 3.1 5.3 0 0 0-1.9-.7-2.2-.5-.1.1-.5.5-.5.5s-.2-.4-.4-.5" fill="#d33b23"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f38f.svg b/riot/emojione/svg/1f38f.svg new file mode 100644 index 0000000..8f1261b --- /dev/null +++ b/riot/emojione/svg/1f38f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m16.3 21.6l-11.8-3.2 11.8-3.3.3 1-8.2 2.3 8.1 2.2z"/><path d="m16.3 46.1l-11.8-3.1 11.8-3.3.3 1-8.2 2.3 8.1 2.1z"/></g><g fill="#6adbc6"><path d="m58.1 18.2c0 0-9.3 9.8-20.8 9.8s-20.8-4.4-20.8-9.8c0-5.4 9.3-9.8 20.8-9.8s20.8 9.8 20.8 9.8"/><path d="m51.2 18.2c0-5.4 3.9-9.8 8.7-9.8 4.8 0-.4 9.8-.4 9.8s5.2 9.8.4 9.8c-4.8 0-8.7-4.4-8.7-9.8"/></g><path d="m16.7 14.6c-.9 0-1.7.8-1.7 1.9 0 1 .7 1.9 1.7 1.9-.9 0-1.7.8-1.7 1.9 0 1 .7 1.9 1.7 1.9.9 0 3-3.8 3-3.8s-2.1-3.8-3-3.8" fill="#428bc1"/><path d="m27.4 15.6c0 1.8-1.3 3.3-2.9 3.3-1.6 0-2.9-1.5-2.9-3.3s1.3-3.3 2.9-3.3c1.6 0 2.9 1.5 2.9 3.3" fill="#fff"/><ellipse cx="24.5" cy="15.6" rx="1.5" ry="1.7" fill="#231f20"/><g fill="#428bc1"><path d="m30.4 12.6c1.5 2.4 2 5.3 1.3 8.2-.6 2.5-2.2 4.5-4.2 5.7-.5.3-.1 1.2.5.9 2.2-1.3 3.9-3.6 4.6-6.3.8-3 .2-6.4-1.4-9-.4-.6-1.2 0-.8.5"/><path d="m35.5 26.6c2.2 0 3.9-2 3.9-4.4s-1.8-4.4-3.9-4.4c0 .3 0 .7 0 1 2.2 0 3.9-2 3.9-4.4 0-2.4-1.8-4.4-3.9-4.4-.6 0-.6 1 0 1 1.7 0 3 1.5 3 3.4 0 1.9-1.4 3.4-3 3.4-.6 0-.6 1 0 1 1.7 0 3 1.5 3 3.4 0 1.9-1.4 3.4-3 3.4-.5 0-.5 1 0 1"/><path d="m47 24c1.6 0 2.8-1.4 2.8-3.1 0-1.7-1.3-3.1-2.8-3.1 0 .3 0 .7 0 1 1.6 0 2.8-1.4 2.8-3.1 0-1.7-1.3-3.1-2.8-3.1-.6 0-.6 1 0 1 1 0 1.9.9 1.9 2.1 0 1.2-.9 2.1-1.9 2.1-.6 0-.6 1 0 1 1 0 1.9.9 1.9 2.1 0 1.2-.9 2.1-1.9 2.1-.6 0-.6 1 0 1"/><path d="m41.2 25.6c1.9 0 3.5-1.8 3.5-3.9 0-2.2-1.6-3.9-3.5-4 0 .3 0 .7 0 1 1.9 0 3.5-1.8 3.5-3.9 0-2.2-1.6-3.9-3.5-4-.6 0-.6 1 0 1 1.4 0 2.6 1.3 2.6 2.9s-1.2 2.9-2.6 2.9c-.6 0-.6 1 0 1 1.4 0 2.6 1.3 2.6 2.9 0 1.6-1.2 2.9-2.6 2.9-.6.2-.6 1.2 0 1.2"/></g><g fill="#ff717f"><path d="m58.1 42.8c0 0-9.3 9.8-20.8 9.8s-20.8-4.4-20.8-9.8c0-5.4 9.3-9.8 20.8-9.8s20.8 9.8 20.8 9.8"/><path d="m51.2 42.8c0-5.4 3.9-9.8 8.7-9.8 4.8 0-.4 9.8-.4 9.8s5.2 9.8.4 9.8c-4.8 0-8.7-4.4-8.7-9.8"/></g><path d="m16.7 39.2c-.9 0-1.7.8-1.7 1.9s.7 1.9 1.7 1.9c-.9 0-1.7.8-1.7 1.9 0 1 .7 1.9 1.7 1.9.9 0 3-3.8 3-3.8s-2.1-3.8-3-3.8" fill="#c94747"/><path d="m27.4 40.2c0 1.8-1.3 3.3-2.9 3.3-1.6 0-2.9-1.5-2.9-3.3 0-1.8 1.3-3.3 2.9-3.3 1.6 0 2.9 1.5 2.9 3.3" fill="#fff"/><ellipse cx="24.5" cy="40.2" rx="1.5" ry="1.7" fill="#231f20"/><g fill="#c94747"><path d="m30.4 37.2c1.5 2.4 2 5.3 1.3 8.2-.6 2.5-2.2 4.5-4.2 5.7-.5.3-.1 1.2.5.9 2.2-1.3 3.9-3.6 4.6-6.3.8-3 .2-6.4-1.4-9-.4-.6-1.2-.1-.8.5"/><path d="m35.5 51.1c2.2 0 3.9-2 3.9-4.4 0-2.5-1.8-4.4-3.9-4.4 0 .3 0 .7 0 1 2.2 0 3.9-2 3.9-4.4 0-2.4-1.8-4.4-3.9-4.4-.6 0-.6 1 0 1 1.7 0 3 1.5 3 3.4 0 1.9-1.4 3.4-3 3.4-.6 0-.6 1 0 1 1.7 0 3 1.5 3 3.4 0 1.9-1.4 3.4-3 3.4-.5 0-.5 1 0 1"/><path d="m47 48.5c1.6 0 2.8-1.4 2.8-3.1 0-1.7-1.3-3.1-2.8-3.1 0 .3 0 .7 0 1 1.6 0 2.8-1.4 2.8-3.1 0-1.7-1.3-3.1-2.8-3.1-.6 0-.6 1 0 1 1 0 1.9.9 1.9 2.1 0 1.2-.9 2.1-1.9 2.1-.6 0-.6 1 0 1 1 0 1.9.9 1.9 2.1 0 1.2-.9 2.1-1.9 2.1-.6 0-.6 1.1 0 1"/><path d="m41.2 50.1c1.9 0 3.5-1.8 3.5-4 0-2.2-1.6-3.9-3.5-3.9 0 .3 0 .7 0 1 1.9 0 3.5-1.8 3.5-3.9 0-2.2-1.6-3.9-3.5-4-.6 0-.6 1 0 1 1.4 0 2.6 1.3 2.6 2.9 0 1.6-1.2 2.9-2.6 2.9-.6 0-.6 1 0 1 1.4 0 2.6 1.3 2.6 2.9 0 1.6-1.2 2.9-2.6 2.9-.6.2-.6 1.3 0 1.2"/></g><path fill="#f2b200" d="m3.5 11.3h2.9v50.7h-2.9z"/><path fill="#ffce31" d="m4.9 12.6h.9v49.4h-.9z"/><path d="m7.9 11.3c0 1.8-1.3 3.3-2.9 3.3s-3-1.5-3-3.3 1.3-3.3 2.9-3.3 3 1.5 3 3.3" fill="#f2b200"/><path d="m6.4 10.5c0-.5-.3-.8-.7-.8-.4 0-.7.4-.7.8 0 .5.3.8.7.8.4 0 .7-.4.7-.8" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f390.svg b/riot/emojione/svg/1f390.svg new file mode 100644 index 0000000..6a2c3ac --- /dev/null +++ b/riot/emojione/svg/1f390.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.2 19.3c-3.4-10.5-13.2-9.8-13.2-9.8s-9.8-.7-13.1 9.8c-3.4 10.5 4.3 20.2 4.3 20.2.1.6 4.2 1.1 9.2 1.1 5 0 9.1-.5 9.2-1.1 0 0 7-9.7 3.6-20.2" fill="#6adbc6"/><g fill="#ed4c5c"><path d="m15.6 2h1v7.5h-1z"/><ellipse cx="16.1" cy="6.6" rx="1.5" ry="1.5"/></g><g fill="#6adbc6"><path d="m14.6 8.1h3v1.6h-3z"/><path d="m14.7 40.6h2.9v3.6h-2.9z"/></g><path fill="#ffc7ce" d="m15.6 10.3h1v33.9h-1z"/><path d="m16.3 39.7c-2.2 0-4.3-.1-5.9-.3-.8-.1-1.4-.2-1.8-.3-.3-.1-.9-.3-.9-.8 0-.5.6-.7.9-.8.4-.1 1.1-.2 1.8-.3 1.6-.2 3.7-.3 5.9-.3 2.2 0 4.3.1 5.9.3.8.1 1.4.2 1.8.3.3.1.9.3.9.8s-.6.7-.9.8c-.4.1-1.1.2-1.8.3-1.6.2-3.7.3-5.9.3m-7.6-1.4c.3.1.9.3 2.2.4 1.5.2 3.4.3 5.4.3s3.9-.1 5.4-.3c1.3-.1 1.9-.3 2.2-.4-.3-.1-.9-.3-2.2-.4-1.5-.2-3.4-.3-5.4-.3s-3.9.1-5.4.3c-1.3.1-1.9.3-2.2.4" fill="#fff"/><g fill="#ed4c5c"><path d="m26.6 49.5c-8.8 1.1-11-5.3-11-5.3h1c0 0 2.2 5.7 10.4 4.4l-.4.9"/><path transform="matrix(.3881-.9216.9216.3881-29.0782 54.784)" d="m20.1 49h13.1v.6h-13.1z"/></g><path d="m24.4 55.5c0 0 7 6 18.8 3.9 11.8-2.1 16.5 2.6 16.5 2.6l2.3-13.8c0 0-4.4-5-20.1-1.6-9.6 2.1-12.3-3.2-12.3-3.2l-5.2 12.1" fill="#e6eff4"/><g fill="#f46767"><path d="m36.2 53.4c.5.8-.1 2-1.3 2.6s-2.5.5-2.9-.4c-.5-.8.1-2 1.3-2.6 1.1-.6 2.4-.5 2.9.4"/><ellipse transform="matrix(.8772-.4801.4801.8772-17.4878 29.97)" cx="49.8" cy="49.2" rx="3.5" ry="2.5"/></g><g fill="#83bf4f"><ellipse transform="matrix(.8773-.4799.4799.8773-19.3882 25.158)" cx="39.5" cy="50.5" rx="1.8" ry="1.3"/><ellipse transform="matrix(.8774-.4798.4798.8774-21.1927 28.1677)" cx="44.5" cy="55.5" rx="2.5" ry="1.8"/><ellipse transform="matrix(.8773-.4799.4799.8773-19.4185 33.0703)" cx="55" cy="54.5" rx="1.9" ry="1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f391.svg b/riot/emojione/svg/1f391.svg new file mode 100644 index 0000000..7a1e114 --- /dev/null +++ b/riot/emojione/svg/1f391.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3e4347" d="m0 0h64v64h-64z"/><circle cx="49.4" cy="14.4" r="9.6" fill="#d0d0d0"/><g fill="#94989b"><circle cx="42.7" cy="13.4" r=".9"/><circle cx="49.3" cy="10.6" r="1.5"/><circle cx="47" cy="18.1" r="1.6"/><circle cx="55.8" cy="12.1" r=".7"/><circle cx="53.8" cy="18.6" r=".6"/></g><path d="m15.2 41.7c1 3.4 1.8 6.8 2.3 10.3 0 .1 0 .3 0 .4.2 3.2.5 8 .7 11.6h1.1c.1-4.1.4-9.4 1-13 .7-4.1 1.6-8.3 3.1-12.2 1-2.9 2.3-5.6 3.6-8.4.1-.2.1-.5-.2-.7-.2-.1-.6-.1-.7.2-1.8 3.7-3.5 7.5-4.7 11.5-.6 2.1-1.2 4.2-1.6 6.4.1-1.3.3-2.6.4-3.9.7-5.2 1.7-10.5 3.2-15.5 1-3.5 2.3-6.9 3.6-10.3.1-.3-.1-.5-.3-.6-.3-.1-.5.1-.6.3-1.8 4.9-3.6 9.8-4.8 14.9-1.2 5.2-2 10.5-2.5 15.8-.1 1.4-.2 2.8-.3 4.2 0-.2-.1-.4-.1-.7 0-.1 0-.2 0-.3-.2-2.9-.4-5.8-.5-8.8-.1-2.1-.2-4.1-.2-6.2 0-1.3 0-2.7 0-4 0-.7 0-1.4.1-2.1 0-.2 0-.4 0-.6 0-.3-.2-.5-.5-.5-.3 0-.5.2-.5.5 0 .2 0 .4 0 .7 0 .7-.1 1.5-.1 2.2 0 1.4 0 2.7 0 4.1 0 2.1.1 4.2.2 6.4 0 .4 0 .9.1 1.3 0 0 0-.1 0-.1-.5-2-1.1-4.1-1.8-6-1.1-3-2.4-5.9-3.8-8.8-.1-.2-.5-.3-.7-.2-.2.1-.3.4-.2.7 1.8 3.7 3.5 7.4 4.7 11.4" fill="#699635"/><g fill="#ffdd7d"><path d="m27.6 20.1c.4-.6.9-1.2 1.5-1.8 0 0-.5.2-1.3.6.4-.7.9-1.2 1.6-2 0 0-.5.2-1.3.6.4-.7.9-1.2 1.6-2 0 0-.5.2-1.3.7.4-.7.9-1.3 1.7-2.1 0 0-.5.2-1.3.6.4-.7.9-1.3 1.7-2.1 0 0-.5.2-1.2.6.4-.6.8-1.1 1.4-1.7 0 0-.5.2-1.2.6.4-.6.9-1.2 1.5-1.8 0 0-.5.2-1.3.6.4-.7.9-1.2 1.6-2 0 0-.5.2-1.3.6.4-.7.9-1.2 1.6-2 0 0-.5.2-1.3.7.4-.7.9-1.3 1.7-2.1 0 0-.5.2-1.3.6.4-.7.9-1.3 1.7-2.1 0 0-4.3.6-5.2 4.4-1.2 4.8-3.1 12.4-4.5 18 2.4-4.2 6-7.6 6-7.6s-.3.3-1.1.7"/><path d="m28.2 32.5c.5-.5 1-1 1.8-1.5 0 0-.5.1-1.3.4.5-.6 1.1-1.1 1.9-1.7 0 0-.5.1-1.3.4.5-.6 1.1-1.1 1.9-1.7 0 0-.6.1-1.4.4.5-.7 1.1-1.2 2-1.8 0 0-.5.1-1.4.4.5-.7 1.1-1.2 2-1.8 0 0-.5.1-1.3.4.5-.5 1-.9 1.7-1.4 0 0-.5.1-1.3.4.5-.5 1-1 1.8-1.6 0 0-.5.1-1.3.4.5-.6 1.1-1.1 1.9-1.7 0 0-.5.1-1.3.4.5-.6 1.1-1.1 1.9-1.7 0 0-.6.1-1.4.4.5-.7 1.1-1.2 2-1.8 0 0-.5.1-1.3.4.5-.7 1.1-1.2 2-1.8 0 0-4.3-.1-5.8 3.5-1.9 4.5-5 11.8-7.2 17.1 3-3.8 7.1-6.6 7.1-6.6s-.9.3-1.7.5"/><path d="m13.4 29.5c-.1-.7 0-1.4.1-2.4 0 0-.3.5-.6 1.3-.1-.8-.1-1.5 0-2.5 0 0-.3.5-.6 1.3-.1-.8-.1-1.5 0-2.5 0 0-.3.5-.6 1.3-.1-.8-.1-1.6 0-2.7 0 0-.3.5-.6 1.3-.1-.8-.1-1.6 0-2.7 0 0-.3.4-.6 1.2-.1-.7 0-1.4.1-2.2 0 0-.3.4-.6 1.2-.1-.7 0-1.4.1-2.4 0 0-.3.5-.6 1.3-.1-.8-.1-1.5 0-2.5 0 0-.3.5-.6 1.3-.1-.8-.1-1.5 0-2.5 0 0-.3.5-.6 1.3-.1-.8-.1-1.6 0-2.7 0 0-.3.5-.6 1.3-.1-.8-.1-1.6 0-2.7 0 0-3 3.1-1.3 6.7 2 4.5 5.3 11.6 7.7 16.9-.8-4.8-.1-9.7-.1-9.7s-.3.4-.6 1.1"/><path d="m19.4 32.1c.2-.7.5-1.4.9-2.2 0 0-.4.3-1 1 .2-.8.5-1.5 1-2.3 0 0-.4.3-1 1 .2-.8.5-1.5 1-2.3 0 0-.5.3-1.1 1 .2-.8.5-1.6 1-2.5 0 0-.4.3-1 1 .2-.8.5-1.5 1-2.5 0 0-.4.3-1 .9.2-.6.5-1.3.9-2 0 0-.4.3-1 .9.2-.7.5-1.4.9-2.2 0 0-.4.3-1 1 .2-.8.5-1.5 1-2.3 0 0-.4.3-1 1 .2-.8.5-1.5 1-2.3 0 0-.5.3-1.1 1 .2-.8.5-1.6 1-2.5 0 0-.4.3-1 1 .2-.8.5-1.5 1-2.5 0 0-3.9 1.8-3.7 5.7.2 4.9.6 12.8.9 18.5 1.1-4.8 3.5-9 3.5-9s-.6 0-1.2.6"/></g><g fill="#fff"><circle cx="44.3" cy="43.5" r="3.4"/><circle cx="49.5" cy="43.4" r="3.4"/><circle cx="54.5" cy="43.4" r="3.4"/><circle cx="46.8" cy="39.4" r="3.4"/><circle cx="52" cy="39.3" r="3.4"/><circle cx="49.4" cy="35.9" r="3.4"/></g><g fill="#fed0ac"><path d="m38.8 44.8h21.1v4.1h-21.1z"/><path d="m40.9 46.9h17.1v17.1h-17.1z"/></g><g fill="#d3976e"><path d="m38.8 44.8h2.1v4.1h-2.1z"/><path d="m57.8 44.8h2.1v4.1h-2.1z"/><path d="m40.9 48.9h2.1v15.1h-2.1z"/><path d="m56 48.9h2.1v15.1h-2.1z"/></g><g fill="#89664c"><path d="m40.9 48.9h2.1v2.1h-2.1z"/><path d="m56 48.9h2.1v2.1h-2.1z"/></g><path fill="#d3976e" d="m42.9 48.9h13v2.1h-13z"/><path d="m50.9 54.6c0 0 0-.1 0-.1 0-.7 0-1.3-1.5-1.3-1.5 0-1.5.6-1.5 1.3 0 0 0 .1 0 .1-1.5.4-1.5 1.4-1.5 2.6 0 1.5 2.1 2.7 3.1 2.7 1.1 0 3.1-1.2 3.1-2.7-.2-1.2-.2-2.3-1.7-2.6" fill="#3e4347"/><g fill="#d0d0d0"><path d="m48.4 40.8c-.1 0-.2 0-.3 0-.5 0-1 .2-1.3.6-.3-.4-.8-.6-1.3-.6-.1 0-.3 0-.4 0 .2.6.7 1.1 1.3 1.2 0 .1 0 .2 0 .4 0 .4.2.8.4 1.1.2-.3.4-.7.4-1.1 0-.1 0-.3-.1-.4.7-.1 1.2-.6 1.3-1.2"/><path d="m53.6 40.7c-.1 0-.2 0-.3 0-.5 0-1 .2-1.3.6-.3-.4-.8-.6-1.3-.6-.1 0-.3 0-.4 0 .2.6.7 1.1 1.3 1.2 0 .1 0 .2 0 .4 0 .4.2.8.4 1.1.2-.3.4-.7.4-1 0-.1 0-.3-.1-.4.7-.2 1.2-.7 1.3-1.3"/><path d="m51 36.6c-.1 0-.2 0-.3 0-.5 0-1 .2-1.3.6-.3-.4-.8-.6-1.3-.6-.1 0-.3 0-.4 0 .2.6.7 1.1 1.3 1.2 0 .1 0 .2 0 .4 0 .4.2.8.4 1.1.2-.3.4-.7.4-1.1 0-.1 0-.3-.1-.4.7 0 1.2-.5 1.3-1.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f392.svg b/riot/emojione/svg/1f392.svg new file mode 100644 index 0000000..812ae04 --- /dev/null +++ b/riot/emojione/svg/1f392.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#5f6262"><path d="m40.7 10.9h4.1c-.3-14.5-20-14.5-20.3 0h4.1c.3-9.3 11.7-9.3 12.1 0"/><path d="m45.5 10.8v2.7c7.3 1.3 13.8 7.3 13.8 18.1v14.8c0 5-6.5 6-13.8 6v2.4c8.2 0 18.5-1.1 18.5-6.7v-16.6c0-13.6-9.2-20.5-18.5-20.7"/></g><path d="m34 6.3c-3.8 0-15 2.2-15 2.2s-9.4 11.4-9.4 24.1v21.1c0 6.1 6.1 8 14.2 8.4l.9 1.8c0 0 32.5.7 32.5-10.3v-21c0-17.2-11.1-26.3-23.2-26.3" fill="#428bc1"/><path d="M47.6,55.4c0,7.2-8.4,8.6-18.9,8.6h-9.9C8.4,64,0,62.6,0,55.4V34.3c0-35.1,47.6-35.1,47.6,0V55.4z" fill="#42ade2"/><path d="m47.6 45.2l-38 8.6c0 6.1 6.1 8 14.2 8.4l.9 1.8c0 0 32.5.7 32.5-10.3v-10.3l-9.6 1.8" fill="#5f6262"/><path d="M47.6,55.4c0,7.2-8.4,8.6-18.9,8.6h-9.9C8.4,64,0,62.6,0,55.4V45.2h47.6V55.4z" fill="#7e8484"/><path d="m44 52.4c0 2.9-2.4 5.3-5.3 5.3h-30.8c-2.9 0-5.3-2.4-5.3-5.3v-18.2c0-2.9 2.4-5.3 5.3-5.3h30.9c2.9 0 5.3 2.4 5.3 5.3v18.2z" fill="#428bc1"/><path d="m43 52c0 2.8-2.2 5.1-5 5.1h-29.4c-2.8 0-5-2.3-5-5.1v-17.4c0-2.8 2.2-5.1 5-5.1h29.4c2.8 0 5 2.3 5 5.1v17.4" fill="#42ade2"/><path fill="#428bc1" d="m43 43.3h-39.4v-4.7h39.4"/><path fill="#93ced6" d="m3.6 39.2h39.5v3.4h-39.5z"/><path fill="#42ade2" d="m3.6 39.9h39.5v2h-39.5z"/><g fill="#93ced6"><path d="m4.4 37.2h2.3v.7h-2.3z"/><path d="m7.6 37.2h2.3v.7h-2.3z"/><path d="m10.8 37.2h2.3v.7h-2.3z"/><path d="m14 37.2h2.3v.7h-2.3z"/><path d="m17.3 37.2h2.3v.7h-2.3z"/><path d="m20.5 37.2h2.3v.7h-2.3z"/><path d="m23.7 37.2h2.3v.7h-2.3z"/><path d="m27 37.2h2.3v.7h-2.3z"/><path d="m30.2 37.2h2.3v.7h-2.3z"/><path d="m33.4 37.2h2.3v.7h-2.3z"/><path d="m36.7 37.2h2.3v.7h-2.3z"/><path d="m39.9 37.2h2.3v.7h-2.3z"/><path d="m4.4 44h2.3v.7h-2.3z"/><path d="m7.6 44h2.3v.7h-2.3z"/><path d="m10.8 44h2.3v.7h-2.3z"/><path d="m14 44h2.3v.7h-2.3z"/><path d="m17.3 44h2.3v.7h-2.3z"/><path d="m20.5 44h2.3v.7h-2.3z"/><path d="m23.7 44h2.3v.7h-2.3z"/><path d="m27 44h2.3v.7h-2.3z"/><path d="m30.2 44h2.3v.7h-2.3z"/><path d="m33.4 44h2.3v.7h-2.3z"/><path d="m36.7 44h2.3v.7h-2.3z"/><path d="m39.9 44h2.3v.7h-2.3z"/></g><ellipse cx="33.1" cy="41.1" rx="2.3" ry="1.9" fill="#fff"/><g fill="#c9c9c9"><path d="m33.1 43.3c-1.4 0-2.6-1-2.6-2.2 0-1.2 1.2-2.2 2.6-2.2 1.4 0 2.6 1 2.6 2.2 0 1.3-1.2 2.2-2.6 2.2m0-3.7c-1.1 0-2 .7-2 1.5 0 .8.9 1.5 2 1.5s2-.7 2-1.5c0-.8-.9-1.5-2-1.5"/><path d="m32.6 40.3h2.8v1.6h-2.8z"/></g><path d="m35.2 47.4c.1.8-.2 1.6-.9 1.6h-1.3c-.6 0-1-.8-.9-1.6l.6-3.4c0-.3.3-.5.6-.5h.7c.3 0 .6.2.6.5l.6 3.4" fill="#fff"/><path d="m34.3 49.3h-1.3c-.3 0-.6-.2-.9-.4-.3-.4-.4-1-.3-1.6l.6-3.4c.1-.4.5-.8 1-.8h.6c.5 0 .9.3 1 .8l.6 3.4c.1.6 0 1.2-.3 1.6-.3.3-.6.4-1 .4m-1-5.5c-.2 0-.3.1-.3.2l-.6 3.4c-.1.4 0 .8.2 1 .1.1.2.2.4.2h1.3c.1 0 .3-.1.4-.2.2-.2.3-.6.2-1l-.6-3.4c0-.1-.1-.2-.3-.2h-.7" fill="#c9c9c9"/><path fill="#9b9596" d="m33.4 40.1h.6v4.1h-.6z"/><path transform="matrix(.707-.7072.7072.707.09814 35.132)" fill="#c9c9c9" d="m41.7 16h1.6v2.8h-1.6z"/><path d="m43.8 24.5c.1.8-.2 1.6-.9 1.6h-1.3c-.6 0-1-.8-.9-1.6l.6-3.4c0-.3.3-.5.6-.5h.6c.3 0 .6.2.6.5l.7 3.4" fill="#fff"/><path d="m42.9 26.5h-1.3c-.3 0-.6-.2-.9-.4-.3-.4-.4-1-.3-1.6l.6-3.4c.1-.4.5-.8 1-.8h.6c.5 0 .9.3 1 .8l.6 3.4c.1.6 0 1.2-.3 1.6-.4.2-.7.4-1 .4m-1-5.6c-.2 0-.3.1-.3.2l-.6 3.4c-.1.4 0 .8.2 1 .1.1.2.2.4.2h1.3c.1 0 .3-.1.4-.2.2-.2.3-.6.2-1l-.6-3.4c0-.1-.1-.2-.3-.2h-.7" fill="#c9c9c9"/><path fill="#9b9596" d="m41.9 17.2h.6v4.1h-.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f393.svg b/riot/emojione/svg/1f393.svg new file mode 100644 index 0000000..743f8c1 --- /dev/null +++ b/riot/emojione/svg/1f393.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M13.1,30.2V37c0,14,37.7,14,37.7,0v-6.8H13.1z" fill="#596066"/><path fill="#3e4347" d="M62 25.4 32 38.9 2 25.4 32 11.9z"/><g fill="#ffce31"><path d="m31.9 24.8c-4.6 2.1-14.6 6.6-15 6.8-.2.1-.4.3-.4.6 0 2.2 0 4.5 0 6.8 0 .8 1 .8 1 0 0-2.1 0-4.2 0-6.3 4.5-2 14.2-6.4 14.6-6.6.6-.3.4-1.5-.2-1.3"/><ellipse cx="17" cy="38.9" rx="1.9" ry="2.4"/><path d="m17 51.9c1 0 1.9-.5 1.9-1.2v-11.8h-3.8v11.8c0 .7.9 1.2 1.9 1.2"/></g><g fill="#594640"><path d="m18.3 39.2c-.1 0-.1.1-.2.1v12.4c.1 0 .1-.1.2-.1v-12.4"/><path d="m17.5 39.5c-.1 0-.1 0-.2 0v12.4c.1 0 .1 0 .2 0v-12.4"/><path d="m16.7 39.5c-.1 0-.1 0-.2 0v12.4c.1 0 .1 0 .2 0v-12.4"/><path d="m15.9 39.3c-.1 0-.1-.1-.2-.1v12.5c.1 0 .1.1.2.1v-12.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f396.svg b/riot/emojione/svg/1f396.svg new file mode 100644 index 0000000..316e3a4 --- /dev/null +++ b/riot/emojione/svg/1f396.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m33.9 31.8c0 1.1-.9 1.9-1.9 1.9s-1.9-.9-1.9-1.9h-.9c0 1.6 1.3 2.8 2.8 2.8s2.8-1.3 2.8-2.8c0 0-.9 0-.9 0" fill="#ffc200"/><g fill="#e68a00"><path d="m33 37.3h-2v-4c0-1.6 2-1.6 2 0v4"/><ellipse cx="32" cy="48.5" rx="13.5" ry="13.5"/></g><ellipse cx="32" cy="48.5" rx="12.5" ry="12.5" fill="#ffc200"/><g fill="#e68a00"><path d="m30.3 46.2l-1.8-2.4-7.8 1.2 5.7 1.8z"/><path d="m33.7 46.2l1.8-2.4-3.5-7v5.9z"/><path d="m34.8 49.5l2.8 1 5.7-5.5-5.7 1.8z"/><path d="m32 51.6v2.9l7 3.7-3.5-4.8z"/><path d="m29.2 49.5l-2.8 1-1.4 7.7 3.5-4.8z"/></g><g fill="#ffe394"><path d="m32 42.7v-5.9l-3.5 7 1.8 2.4z"/><path d="m37.6 46.8l5.7-1.8-7.8-1.2-1.8 2.4z"/><path d="m34.8 49.5l.7 3.9 3.5 4.8-1.4-7.7z"/><path d="m28.5 53.4l-3.5 4.8 7-3.7v-2.9z"/><path d="m26.4 46.8l-5.7-1.8 5.7 5.5 2.8-1z"/></g><g fill="#f3f7fa"><path d="m22 28.2l2.3 3.8h2.7v-30h-5z"/><path d="m37 2v30h2.7l2.3-3.8v-26.2z"/></g><g fill="#42ade2"><path d="m17 20l5 8.2v-26.2h-5z"/><path d="m27 2h10v30h-10z"/><path d="m42 2v26.2l5-8.2v-18z"/></g><path fill="#d3976e" d="m23 30.1h18v1h-18z"/><path fill="#89664c" d="m23 31.1h18v1h-18z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f397.svg b/riot/emojione/svg/1f397.svg new file mode 100644 index 0000000..1187506 --- /dev/null +++ b/riot/emojione/svg/1f397.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.1 2c0 0 0 0 0 0s-12.7 0-14.7 4.9c-.8 1.9-.1 7.6.1 9.4 1.7-3.2 7.5-5.6 14.3-5.6 7.2 0 13.2 2.6 14.5 6.1h.3v-9.7c0-2.4-6.3-5.1-14.5-5.1" fill="#c94747"/><path d="m34.1 2.1c0 0 17.9-.9 17.9 16.7 0 17.6-31.2 43.2-31.2 43.2l-4.9-11.1c0-.1 54.1-44.5 18.2-48.8" fill="#ff5760"/><path d="m29.8 2.1c0 0-17.8-.9-17.8 16.7s31.2 43.2 31.2 43.2l4.9-11.1c0 0-54.3-44.5-18.3-48.8" fill="#ff717f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f399.svg b/riot/emojione/svg/1f399.svg new file mode 100644 index 0000000..44c4b3f --- /dev/null +++ b/riot/emojione/svg/1f399.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3e4347" d="m14 28h36v1h-36z"/><g fill="#94989b"><path d="m46 24.5v14.7c0 10.5-6.7 14.9-14 14.9-7.3 0-14-4.4-14-14.9v-14.7h-2v14.5c0 12 7.7 17 16 17s16-5 16-17v-14.5h-2"/><path d="m30 56h4v4h-4z"/></g><g fill="#3e4347"><path d="M21,25v13c0,6.2,4.8,11,11,11c6.2,0,11-4.8,11-11V25H21z"/><path d="m29 52h6v5h-6z"/></g><path d="m32 2c-6.2 0-11 3.8-11 10v13h22v-13c0-6.2-4.8-10-11-10" fill="#94989b"/><path d="m32 2.8c-5.7 0-10.1 3.7-10.1 9.7v12.5h20.2v-12.5c0-6-4.4-9.7-10.1-9.7" fill="#d0d0d0"/><path d="m46 62h-28c0 0 6.3-3 14-3s14 3 14 3" fill="#3e4347"/><path fill="#b0b8b8" d="m20 25h24v7h-24z"/><g fill="#3e4347"><path d="m19 24.5h26v2h-26z"/><path d="m19 27.5h26v2h-26z"/><path d="m19 30.5h26v2h-26z"/><path d="m13 25.5h2v6h-2z"/><path d="m49 25.5h2v6h-2z"/></g><g fill="#94989b"><path d="m25.3 22.5c0 .7-.6 1.2-1.3 1.2-.7 0-1.3-.5-1.3-1.1 0-.6.6-1.1 1.3-1.2.7 0 1.3.5 1.3 1.1"/><path d="m30.7 22.5c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.6-1.4-1.3 0-.7.6-1.3 1.3-1.3.7 0 1.4.5 1.4 1.3"/><path d="m36 22.5c0 .7-.6 1.3-1.4 1.3-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.4-1.3.7 0 1.3.6 1.3 1.3"/><path d="m41.4 22.6c0 .6-.6 1.1-1.3 1.1s-1.3-.5-1.3-1.2c0-.7.6-1.2 1.3-1.1.7.1 1.3.6 1.3 1.2"/><path d="m25.2 16.2c0 .7-.6 1.3-1.3 1.4-.7.1-1.3-.2-1.3-.8 0-.6.6-1.3 1.3-1.5.7-.2 1.3.2 1.3.9"/><path d="m30.6 15.6c0 .7-.6 1.3-1.4 1.4-.8 0-1.4-.5-1.4-1.2 0-.7.6-1.3 1.4-1.4.8-.1 1.4.4 1.4 1.2"/><path d="m36.1 15.8c0 .7-.6 1.2-1.4 1.2-.8 0-1.4-.6-1.4-1.4 0-.7.6-1.3 1.4-1.2.8 0 1.4.7 1.4 1.4"/><path d="m41.4 16.8c0 .6-.6 1-1.3.8-.7-.1-1.3-.8-1.3-1.4 0-.7.6-1.1 1.3-.9.7.2 1.3.9 1.3 1.5"/><path d="m27.9 19.1c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.4-1.4-1.1s.6-1.3 1.3-1.4c.8 0 1.4.5 1.4 1.2"/><path d="m33.4 19c0 .7-.6 1.3-1.4 1.3-.7 0-1.4-.6-1.4-1.3 0-.7.6-1.3 1.4-1.3.8 0 1.4.6 1.4 1.3"/><path d="m38.7 19.4c0 .7-.6 1.1-1.4 1.1-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.2 1.4-1.1.8 0 1.4.6 1.3 1.3"/><path d="m27.8 12.4c0 .7-.6 1.3-1.3 1.5-.7.1-1.3-.3-1.3-.9 0-.7.6-1.4 1.3-1.6.7-.2 1.3.3 1.3 1"/><path d="m33.4 12.1c0 .7-.6 1.3-1.4 1.3-.8 0-1.4-.5-1.4-1.3 0-.7.6-1.3 1.4-1.3.8 0 1.4.6 1.4 1.3"/><path d="m38.8 13c0 .7-.6 1-1.3.9-.7-.1-1.3-.8-1.3-1.5 0-.7.6-1.2 1.4-1 .7.2 1.3.9 1.2 1.6"/><path d="m25.1 9.8c0 .7-.6 1.4-1.3 1.7-.7.3-1.2.1-1.2-.6 0-.6.5-1.4 1.2-1.8.7-.3 1.3 0 1.3.7"/><path d="m30.6 8.7c0 .7-.6 1.3-1.4 1.4-.8.1-1.4-.4-1.4-1 0-.7.6-1.4 1.4-1.5.7-.2 1.4.4 1.4 1.1"/><path d="m36.2 9c0 .7-.6 1.1-1.4 1-.8 0-1.4-.6-1.4-1.3 0-.7.6-1.3 1.4-1.1.8 0 1.4.7 1.4 1.4"/><path d="m41.4 10.9c0 .6-.5.8-1.2.6-.7-.3-1.3-1-1.3-1.7 0-.7.6-1 1.3-.6.6.3 1.2 1.1 1.2 1.7"/><path d="m27.7 5.7c0 .7-.6 1.4-1.3 1.6-.7.2-1.3-.1-1.3-.7 0-.7.6-1.5 1.3-1.7.7-.3 1.3.1 1.3.8"/><path d="m33.4 5.2c0 .7-.6 1.2-1.4 1.2-.8 0-1.4-.5-1.4-1.2 0-.7.6-1.4 1.4-1.4.8.1 1.4.7 1.4 1.4"/><path d="m38.9 6.6c0 .7-.6.9-1.3.7-.7-.2-1.4-.9-1.3-1.6 0-.7.6-1.1 1.4-.8.7.2 1.2 1 1.2 1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f39a.svg b/riot/emojione/svg/1f39a.svg new file mode 100644 index 0000000..426ccd1 --- /dev/null +++ b/riot/emojione/svg/1f39a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m14 4.5c0 7 0 53.8 0 55 0 3.4 6 3.4 6 0 0-7 0-53.8 0-55 0-3.3-6-3.3-6 0" fill="#333"/><path d="m6.6 42c2.6 0 18.2 0 20.8 0 2.5 0 4.6-2.3 4.6-5 0-2.7-2.1-5-4.6-5-2.6 0-18.2 0-20.8 0-2.5 0-4.6 2.3-4.6 5 0 2.7 2.1 5 4.6 5" fill="#6d7275"/><path d="m6.9 39.6c2.6 0 17.7 0 20.2 0 2.4 0 4.5-1.7 4.5-3.8s-2-3.8-4.5-3.8c-2.6 0-17.7 0-20.2 0-2.4 0-4.5 1.7-4.5 3.8s2 3.8 4.5 3.8" fill="#94989b"/><g fill="#5b636b"><path d="m59 10h-20c-4 0-4-6 0-6h20c4 0 4 6 0 6"/><path d="m57 20h-18c-4 0-4-6 0-6h18c4 0 4 6 0 6"/><path d="m55 30h-16c-4 0-4-6 0-6h16c4 0 4 6 0 6"/></g><g fill="#c7e755"><path d="m53 40h-14c-4 0-4-6 0-6h14c4 0 4 6 0 6"/><path d="m51 50h-12c-4 0-4-6 0-6h12c4 0 4 6 0 6"/><path d="m49 60h-10c-4 0-4-6 0-6h10c4 0 4 6 0 6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f39b.svg b/riot/emojione/svg/1f39b.svg new file mode 100644 index 0000000..54dda72 --- /dev/null +++ b/riot/emojione/svg/1f39b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="30.3" cy="36.7" r="23.1" fill="#7d8993"/><circle cx="30.3" cy="38.3" r="20.2" fill="#5b636b"/><path d="m31.6 33.7c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4v-15.3c0-.8.6-1.4 1.4-1.4.8 0 1.4.6 1.4 1.4v15.3" fill="#fff"/><path d="m63.4 43.4c1.1-6.1.6-12.5-1.6-18.3-2.2-5.8-6.1-11-11.2-14.7-5-3.7-11.2-5.9-17.5-6.2-6.3-.2-12.6 1.4-18 4.8-5.3 3.3-9.7 8.3-12.3 14.1-2.6 5.8-3.4 12.4-2.4 18.6.7 4.3 2.3 8.4 4.7 12.1h3.2c-2.3-3.4-3.8-7.2-4.5-11.2-.9-5.3-.3-10.8 1.6-15.7 2-5 5.4-9.3 9.7-12.4 4.3-3.1 9.5-4.9 14.7-5 5.3-.2 10.5 1.3 14.9 4.1 4.4 2.8 7.9 7 9.9 11.8 2.1 4.8 2.6 10.2 1.7 15.3-.9 5-3.2 9.5-6.7 13.2h9.9c1.9-3.2 3.2-6.8 3.9-10.5" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f39e.svg b/riot/emojione/svg/1f39e.svg new file mode 100644 index 0000000..1a65cc8 --- /dev/null +++ b/riot/emojione/svg/1f39e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 27.9l-5.8-5.8-6.5 6.5c-.3.3-.8.3-1 0l-13.3-13.3c-.3-.3-.3-.8 0-1l6.5-6.5-5.8-5.8-34.1 34.1 5.8 5.8 6.3-6.3c.3-.3.8-.3 1 0l13.2 13.2c.3.3.3.8 0 1l-6.3 6.3 5.8 5.8 34.2-34m-7.7 0c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m-20.2-20.2c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m-24.5 28.4c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2m32 8.4c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2m5.8-5.9c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2m-19.2-25.1c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m20.2 20.2c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m-26-14.3c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m-5.9 5.9c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m1.8 7.2c-.3-.3-.3-.8 0-1l13.2-13.2c.3-.3.8-.3 1 0l13.2 13.2c.3.3.3.8 0 1l-13.2 13.2c-.3.3-.8.3-1 0l-13.2-13.2m-7.7-1.4c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m20.2 20.2c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2m-5.9 5.9c-.3-.3-.3-.7 0-.9l2-2c.3-.3.7-.3.9 0l2 2c.3.3.3.7 0 .9l-2 2c-.3.3-.7.3-.9 0l-2-2" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f39f.svg b/riot/emojione/svg/1f39f.svg new file mode 100644 index 0000000..6e4c9b6 --- /dev/null +++ b/riot/emojione/svg/1f39f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 41.7l-.9-2.5c0 0 0 0 0 0-.7.3-1.5-.1-1.7-.8-.3-.7.1-1.5.8-1.7l-1-2.7c0 0 0 0 0 0-.7.3-1.5-.1-1.7-.8-.3-.7.1-1.5.8-1.7l-.9-2.5c0 0 0 0 0 0-.7.3-1.5-.1-1.7-.8-.3-.7.1-1.5.8-1.7l-.9-2.5c0 0 0 0 0 0-.7.2-1.4-.1-1.7-.7-2.7.3-5.4-1.2-6.3-3.9l-37.4 13.4c1.1 3.1-.5 6.5-3.6 7.7l7.3 19.9c3.1-1.1 6.5.5 7.7 3.6l37.3-13.6c-1-2.7.1-5.6 2.4-7.1-.3-.6 0-1.4.7-1.6" fill="#fbbf67"/><path d="m56.6 46.7l-32.2 11.7c-1.7.6-3.6-.3-4.3-2l-5.7-15.7c-.6-1.7.3-3.6 2-4.3l32.2-11.7c1.7-.6 3.6.3 4.3 2l5.7 15.7c.6 1.8-.3 3.7-2 4.3m-39.6-8.6c-.9.3-1.3 1.3-1 2.1l5.7 15.7c.3.9 1.3 1.3 2.1 1l32.2-11.7c.9-.3 1.3-1.3 1-2.1l-5.7-15.7c-.3-.9-1.3-1.3-2.1-1l-32.2 11.7" fill="#f55"/><g fill="#89664c"><path d="m30.9 43.1l-.9.3c-.1 0-.2 0-.2-.1l-.5-1-.6.2.3 1.1c0 .1 0 .2-.1.2l-.9.3c-.1 0-.1 0-.2-.1l-1.7-6.9c0-.1 0-.2.1-.2l1.3-.5c.1 0 .2 0 .2.1l3.2 6.4c.1.1.1.2 0 .2m-2.1-1.9l-1.2-2.6h-.1l.8 2.7.5-.1"/><path d="m32.8 37.1l1.2 3.4c.2.7-.1 1.4-.8 1.7l-1.5.5c-.1 0-.2 0-.2-.1l-2-5.6c0-.1 0-.2.1-.2l1.5-.5c.7-.2 1.5.1 1.7.8m-1.1.5c0-.1-.2-.2-.3-.2l-.4.1 1.4 3.8.3-.1c.1 0 .2-.2.1-.3l-1.1-3.3"/><path d="m37 34.3l2.1 5.6c0 .1 0 .2-.1.2l-.9.3c-.1 0-.2 0-.2-.1l-1-2.6.2 2.6c0 .1-.1.1-.1 0l-1.5-2.1 1 2.6c0 .1 0 .2-.1.2l-.9.3c-.1 0-.2 0-.2-.1l-2.1-5.6c0-.1 0-.2.1-.2l.8-.3c.1 0 .2 0 .2.1l1.9 2.8-.3-3.3c0-.1 0-.2.1-.2l.8-.3c.1 0 .2 0 .2.1"/><path d="m41.1 39.2c0 .1 0 .2-.1.2l-.9.3c-.1 0-.2 0-.2-.1l-2-5.6c0-.1 0-.2.1-.2l.9-.3c.1 0 .2 0 .2.1l2 5.6"/><path d="m42.6 32.3l.3.9c0 .1 0 .2-.1.2l-.7.3 1.7 4.6c0 .1 0 .2-.1.2l-.9.3c-.1 0-.2 0-.2-.1l-1.6-4.7-.7.3c-.1 0-.2 0-.2-.1l-.3-.9c0-.1 0-.2.1-.2l2.5-.9c.1 0 .2 0 .2.1"/><path d="m35.7 50.3l-.4.1c-.7.2-1.4-.1-1.7-.8l-1.6-4.6c-.2-.7.1-1.4.8-1.7l.4-.1c.7-.2 1.4.1 1.7.8l1.7 4.6c.2.6-.2 1.4-.9 1.7m-2.3-6c-.2.1-.3.2-.2.4l1.6 4.5c0 .1.2.2.3.1h.1c.1 0 .2-.2.2-.3l-1.6-4.5c-.1-.2-.3-.2-.4-.2"/><path d="m38.8 42.5l2.1 5.6c0 .1 0 .2-.1.2l-.6.2c-.1 0-.2 0-.2-.1l-2-2.2.9 2.6c0 .1 0 .2-.1.2l-.9.3c-.1 0-.2 0-.2-.1l-2.1-5.6c0-.1 0-.2.1-.2l.7-.2c.1 0 .2 0 .2.1l2.1 2.5-1-2.9c0-.1 0-.2.1-.2l.9-.3c0 0 .1 0 .1.1"/><path d="m43.8 46.1l.3.9c0 .1 0 .2-.1.2l-2.1.8c-.1 0-.2 0-.2-.1l-2.1-5.6c0-.1 0-.2.1-.2l2.1-.8c.1 0 .2 0 .2.1l.3.9c0 .1 0 .2-.1.2l-1.1.4.4 1.1 1-.4c.1 0 .2 0 .2.1l.3.9c0 .1 0 .2-.1.2l-1 .4.5 1.3 1.1-.4c.2-.1.3-.1.3 0"/></g><g opacity=".5" fill="#947151"><path d="m25.4 54.8l30.4-25.5c-1.5-1.8-1.7-4.1-.9-6.1-2.4-.1-4.5-1.6-5.4-3.9l-37.3 13.5c1.1 3.1-.5 6.5-3.6 7.7l2.3 6.4 6 7.2c2.6-2.2 6.3-1.8 8.5.7"/><path d="m25.4 54.8l30.4-25.5c-1.5-1.8-1.7-4.1-.9-6.1-2.4-.1-4.5-1.6-5.4-3.9l-37.3 13.5c1.1 3.1-.5 6.5-3.6 7.7l2.3 6.4 6 7.2c2.6-2.2 6.3-1.8 8.5.7" opacity=".5"/></g><path d="m52.5 16.1l-1.7-2.1c0 0 0 0 0 0-.6.5-1.4.4-1.9-.2-.5-.6-.4-1.4.2-1.9l-1.7-2.1c0 0 0 0 0 0-.6.5-1.4.4-1.9-.2-.5-.6-.4-1.4.2-1.9l-1.7-2.1c0 0 0 0 0 0-.6.5-1.4.4-1.9-.2-.7-.4-.6-1.2-.1-1.7l-1.7-2.1c0 0 0 0 0 0-.6.5-1.4.4-1.9-.1-2.4 1.2-5.4.7-7.3-1.5l-30.4 25.5c2.2 2.6 1.8 6.4-.7 8.5l13.6 16.3c2.5-2.1 6.3-1.8 8.4.7l30.4-25.5c-1.8-2.2-1.8-5.3-.2-7.5-.3-.6-.2-1.4.3-1.9" fill="#fbbf67"/><path d="m47.2 23.4l-26.2 22c-1.4 1.2-3.5 1-4.7-.4l-10.7-12.8c-1.2-1.4-1-3.5.4-4.7l26.2-22c1.4-1.2 3.5-1 4.7.4l10.7 12.8c1.2 1.4 1 3.5-.4 4.7m-40.1 5.4c-.7.6-.8 1.6-.2 2.3l10.7 12.9c.6.7 1.6.8 2.3.2l26.2-22c.7-.6.8-1.6.2-2.3l-10.7-12.9c-.6-.7-1.6-.8-2.3-.2l-26.2 22" fill="#f55"/><g fill="#89664c"><path d="m21.9 28.8l-.7.6c-.1.1-.2 0-.2 0l-.8-.8-.6.4.7.9c0 .1 0 .2 0 .2l-.7.6c-.1.1-.1 0-.2 0l-3.9-5.9c0-.1 0-.2 0-.2l1.1-.9c.1-.1.2-.1.2 0l5.1 4.9c0 .1 0 .1 0 .2m-2.6-1.1l-2-2.1-.1.1 1.7 2.3.4-.3"/><path d="m21.6 22.5l2.3 2.8c.5.6.4 1.4-.2 1.9l-1.2 1c-.1.1-.2 0-.2 0l-3.9-4.6c-.1-.1 0-.2 0-.2l1.2-1c.7-.5 1.5-.5 2 .1m-.9.8c-.1-.1-.3-.1-.4 0l-.3.2 2.6 3.1.3-.2c.1-.1.1-.2 0-.4l-2.2-2.7"/><path d="m24.6 18.4l3.9 4.6c.1.1 0 .2 0 .2l-.8.6c-.1.1-.2 0-.2 0l-1.8-2.1 1.1 2.4c0 .1 0 .1-.1.1l-2.1-1.5 1.8 2.1c.1.1 0 .2 0 .2l-.8.6c-.1.1-.2 0-.2 0l-3.9-4.6c-.1-.1 0-.2 0-.2l.7-.6c.1-.1.2 0 .2 0l2.7 1.9-1.4-3c0-.1 0-.2 0-.2l.7-.6c.1.1.2.1.2.1"/><path d="m30.2 21.6c.1.1 0 .2 0 .2l-.7.6c-.1.1-.2 0-.2 0l-3.9-4.6c-.1-.1 0-.2 0-.2l.7-.6c.1-.1.2 0 .2 0l3.9 4.6"/><path d="m29.2 14.6l.6.7c.1.1 0 .2 0 .2l-.6.5 3.2 3.8c.1.1 0 .2 0 .2l-.7.6c-.1 0-.2 0-.2 0l-3.2-3.8-.6.5c-.1.1-.2 0-.2 0l-.6-.7c-.1-.1 0-.2 0-.2l2.1-1.7c0-.1.1-.1.2-.1"/><path d="m28.9 33.9l-.3.3c-.6.5-1.4.4-1.9-.2l-3.1-3.7c-.5-.6-.4-1.4.2-1.9l.3-.3c.6-.5 1.4-.4 1.9.2l3 3.7c.5.6.4 1.4-.1 1.9m-4.3-4.8c-.2.1-.2.3-.1.4l3.1 3.6c.1.1.2.1.4 0l.1-.1c.1-.1.1-.3 0-.4l-3.1-3.5c-.1-.1-.3-.1-.4 0"/><path d="m29.1 25.5l3.9 4.6c.1.1 0 .2 0 .2l-.5.4c-.1.1-.2.1-.2 0l-2.6-1.4 1.8 2.1c.1.1 0 .2 0 .2l-.7.6c-.1.1-.2 0-.2 0l-3.9-4.6c-.1-.1 0-.2 0-.2l.5-.4c.1-.1.2-.1.2 0l2.8 1.6-2-2.3c-.1-.1 0-.2 0-.2l.7-.6c0 0 .1 0 .2 0"/><path d="m35 27.2l.6.7c.1.1 0 .2 0 .2l-1.7 1.5c-.1.1-.2 0-.2 0l-3.9-4.6c-.1-.1 0-.2 0-.2l1.7-1.5c.1-.1.2 0 .2 0l.6.7c.1.1 0 .2 0 .2l-.9.8.8.9.8-.7c.1-.1.2 0 .2 0l.6.7c.1.1 0 .2 0 .2l-.8.7.9 1.1.9-.8c.1 0 .2 0 .2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a0.svg b/riot/emojione/svg/1f3a0.svg new file mode 100644 index 0000000..1c1feb0 --- /dev/null +++ b/riot/emojione/svg/1f3a0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="m26 2h4v60h-4z"/><path d="m44.6 28.7c.3-2.4 1.4-6.5 5.1-9.3 4.7-3.6 9.3-3.2 9.7-7.5 0 0 6.4 7.7-.9 13.3-5.3 4.1-8.7 1.5-10.8 3.3l-3.1.2" fill="#181f27"/><path d="m40.3 39.8c0 0 4.1 6 9.6 6 5.5 0 5.5.2 6.4 4.9 1 4.6 3.6 8.1 3.6 8.1l2.1-4.5c0 0-2.3-1.2-2.6-7-.3-5.8-2.3-4.9-5-6-2.7-1.1-4.7-5.3-4.7-5.3s3.9-10.1-7-11.8c-10.9-1.7-11.9 7.6-22.1-1.8-10.2-9.4-15.9-5.1-15.9-5.1l1.8 1.3c0 0-1.5 8.5-3.5 10-2.3 1.8.1 3.9 2 4 .2 0 1.9-2.6 2.4-2.4 1.2.5-.4 2.5-.1 2.6.8.4 1.6-1 1.6-2.3 0 0 2.8-1.7 3.9-4.9 0 0-1.1 7.8 3.6 11.8 0 0-.7 2.2-1.8 2.7-7.8 3.7-7.1 3.8-7.1 9.7 0 5.9-1.6 8.2-1.6 8.2s.8.8 4.1.8c0 0 1.3-4.3 1-9.2-.3-5 4.4-5.1 6.8-5.1 3.8 0 5.7-2.9 5.7-2.9s4.7 4.6 16.8-1.8" fill="#d4daf4"/><g fill="#7e93a4"><path d="m40.3 39.8c0 0 4.1 6 9.6 6 1.9 0 3.1 0 4 .2.1.4.1.9.1 1.5.2 4.6 2.1 5.6 2.1 5.6l-1.7 3.6c0 0-2.1-2.7-2.9-6.5-.8-3.7-.7-3.9-5.1-3.9-3.7 0-6.6-4.5-7.4-5.9.4-.2.9-.4 1.3-.6"/><path d="m12.7 45.4c1.5-1 3.6-1 5-1 3.8 0 5.7-2.9 5.7-2.9s.5.4 1.5.9c-.6 1-2 2.8-4.2 2.8-1.9 0-5.7.1-5.4 4.1.3 4-.8 7.4-.8 7.4-2.6 0-3.3-.6-3.3-.6s1.2-1.8 1.2-6.5c0-2.1-.1-3.3.3-4.2"/></g><g fill="#181f27"><path d="m8.6 22.5c0-.4-.5-.8-1.1-.8-.6 0-1.1.3-1.1.8s.5.8 1.1.8c.6-.1 1.1-.4 1.1-.8"/><path d="m3.1 30.5c.2.4.6.5.8.4s.3-.5 0-.9c-.2-.4-.6-.5-.8-.4-.2.2-.2.6 0 .9"/><path d="m14.9 54.7c-.2 1.2-.5 2-.5 2-2.6 0-3.3-.6-3.3-.6s.4-.5.7-1.8c1.5.4 2.5.4 3.1.4"/><path d="m54.9 51.5c.6 1.2 1.2 1.6 1.2 1.6l-1.7 3.6c0 0-.8-1.1-1.6-2.7 1-.7 1.7-1.8 2.1-2.5"/><path d="m10.5 56.2c-.3 1.6-.6 2.5-.6 2.5-3.2 0-4.1-.8-4.1-.8s.5-.7.9-2.2c1.7.6 3.1.6 3.8.5"/><path d="m60.5 52.2c.7 1.5 1.5 2 1.5 2l-2.1 4.5c0 0-1-1.3-2-3.4 1.3-.9 2.1-2.2 2.6-3.1"/></g><path fill="#6c3c78" d="m13.1 26.4l-1.5-4.1.6-7.2-.9-.1-.5 5.9-5-.5-.1.9 4.8.6-3.5 8.3.8.3 3.1-7.3 1.3 3.5z"/><ellipse cx="11" cy="21.8" rx="1.4" ry="1.3" fill="#a35cff"/><path d="m5.6 17.9c-1.5.1-2.3 2.5-.6 3.3 1.7.8 5.5-1.2 5.8-1.9.3-.8-2 .7-4.4-.8l-.8-.6" fill="#181f27"/><path fill="#a35cff" d="m14.6 36.6h36v-2.9h-37z"/><path fill="#6c3c78" d="m13.9 34.3l12.1-4.3-1.1-2.7-12.1 4.3z"/><path d="m26.3 48.7c2.2 2.3 7.7 2.2 10 0 1.4-1.3-2-3.5-4.1-4.7v-3.3h-1.7v3.3c-2.2 1.3-5.6 3.3-4.2 4.7m1.7-.4c-.4-.5 2.9-2.6 3.3-2.8.4.2 3.7 2.2 3.3 2.7-.5 1-6 1-6.6.1" fill="#a35cff"/><path d="m37.2 23.2v13.1c0 3.1-2.7 5.7-5.9 5.7-3.3 0-5.9-2.5-5.9-5.7v-11.4c4.6 1.8 7.6-.2 11.8-1.7" fill="#6c3c78"/><path d="m28.9 36.3v-10.7c1.7 0 3.2-.4 4.7-1v11.7c0 1.2-1.1 2.3-2.4 2.3-1.2-.1-2.3-1.1-2.3-2.3" fill="#a35cff"/><path d="m7.5 16.2c-.5-1.6 1.5-4 8-4.3 6.3-.2.3 2-.3 3.1 0 0 4.1-.8 8.2 1.6 2.5 1.5-1.9 1.2-1.9 2.7 0 0 3.7.8 4.2 3 .2 1-1.4-.4-1.9 1 0 0 5.8 1.1 2.8 5.3-2.5 3.4-5 2.5-5.6 2.2-.6-.3.7-2.8.6-3.7-.2-.8-.6-1.1-1.3.4-.2.4-1.6-1.8-.6-5.2 0 0-7.9.4-6.6-3.4.9-2.9-5.1-.9-5.6-2.7" fill="#181f27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a1.svg b/riot/emojione/svg/1f3a1.svg new file mode 100644 index 0000000..72c71cd --- /dev/null +++ b/riot/emojione/svg/1f3a1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m32 2c-13.8 0-25 11.2-25 25s11.2 25 25 25 25-11.2 25-25-11.2-25-25-25m0 47c-12.1 0-22-9.8-22-22s9.9-22 22-22 22 9.9 22 22-9.8 22-22 22" fill="#d0d0d0"/><path fill="#d0d0d0" d="m8 26h48v2h-48z" id="0"/><path fill="#d0d0d0" d="m31 3h2v48h-2z" id="1"/><use transform="matrix(.7071-.7071.7071.7071-9.719 30.5354)" xlink:href="#1"/><use transform="matrix(.7071-.7071.7071.7071-9.7192 30.5358)" xlink:href="#0"/><circle cx="32" cy="27" r="8.2" fill="#3e4347"/><circle cx="32" cy="27" r="5.5" fill="#94989b"/><path d="m34.9 2.8h-2.1c0-.4-.4-.8-.8-.8s-.8.4-.8.8h-2.1c-1.5 0-2.6 1.2-2.6 2.6v5.8c0 1.5 1.2 2.6 2.6 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c0-1.4-1.1-2.6-2.6-2.6m1.1 5.5h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1v2.9" fill="#ed4c5c"/><path fill="#3e4347" d="m26.5 9.9h11.1v1.6h-11.1z"/><path d="m34.9 50.9h-2.1c0-.4-.3-.8-.8-.8s-.8.3-.8.8h-2.1c-1.5 0-2.6 1.2-2.6 2.6v5.8c0 1.5 1.2 2.6 2.6 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c0-1.4-1.1-2.6-2.6-2.6m1.1 5.6h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1v2.9" fill="#ed4c5c"/><path fill="#3e4347" d="m26.5 58h11.1v1.6h-11.1z"/><path d="m10.4 26.9h-2.1c0-.4-.3-.8-.8-.8s-.8.4-.8.8h-2.1c-1.4 0-2.6 1.1-2.6 2.6v5.8c0 1.5 1.2 2.6 2.6 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c.1-1.5-1.1-2.6-2.6-2.6m1.1 5.5h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1v2.9" fill="#f2b200"/><path fill="#3e4347" d="m2 33.9h11.1v1.6h-11.1z"/><path d="m59.4 26.9h-2.1c0-.4-.3-.8-.8-.8s-.8.4-.8.8h-2.1c-1.5 0-2.6 1.2-2.6 2.6v5.8c0 1.5 1.2 2.6 2.6 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c0-1.5-1.2-2.6-2.6-2.6m1 5.5h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1v2.9" fill="#42ade2"/><path fill="#3e4347" d="m50.9 33.9h11.1v1.6h-11.1z"/><path d="m17.9 9.8h-2.1c0-.4-.3-.8-.8-.8-.4 0-.8.4-.8.8h-2.1c-1.5 0-2.6 1.2-2.6 2.6v5.8c0 1.5 1.2 2.6 2.6 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c0-1.4-1.2-2.6-2.6-2.6m1.1 5.6h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1 0 0 0 2.9 0 2.9" fill="#42ade2"/><path fill="#3e4347" d="m9.4 16.9h11.1v1.6h-11.1z"/><path d="m51.9 43.9h-2.1c0-.4-.3-.8-.8-.8-.4 0-.8.3-.8.8h-2.1c-1.5 0-2.6 1.2-2.6 2.6v5.8c0 1.5 1.2 2.6 2.6 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c.1-1.4-1.1-2.6-2.6-2.6m1.1 5.5h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1v2.9" fill="#f2b200"/><path fill="#3e4347" d="m43.5 51h11.1v1.6h-11.1z"/><path d="m17.6 44.1h-2.1c0-.4-.3-.8-.8-.8-.4 0-.8.3-.8.8h-2.1c-1.5 0-2.6 1.2-2.6 2.6v5.8c0 1.5 1.2 2.6 2.6 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c.1-1.4-1.1-2.6-2.6-2.6m1.1 5.6h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1v2.9" fill="#83bf4f"/><path fill="#3e4347" d="m9.2 51.2h11.1v1.6h-11.1z"/><path d="m52.2 9.6h-2.1c0-.4-.3-.8-.8-.8s-.8.3-.8.8h-2.1c-1.5 0-2.6 1.2-2.6 2.6v5.8c0 1.5 1.2 2.6 2.7 2.6h5.8c1.5 0 2.6-1.2 2.6-2.6v-5.8c-.1-1.4-1.2-2.6-2.7-2.6m1.1 5.5h-8v-2.9c0-.6.5-1.1 1.1-1.1h5.8c.6 0 1.1.5 1.1 1.1v2.9" fill="#83bf4f"/><path fill="#3e4347" d="m43.7 16.7h11.1v1.6h-11.1z"/><g fill="#ed4c5c"><circle cx="32" cy="27" r="2.8"/><path d="m33 26.4l-1.1.6-.9-.5-20.4 37.5h2.6l18.8-34.8 18.8 34.8h2.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a2.svg b/riot/emojione/svg/1f3a2.svg new file mode 100644 index 0000000..e8efa01 --- /dev/null +++ b/riot/emojione/svg/1f3a2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#870014"><path d="m39.5 30.9h3.8v30.1h-3.8z"/><path d="m28.2 61h-3.7v-20.5l3.7-1z"/><path d="m9.5 50h3.8v11h-3.8z"/><path d="m54.5 30.9h3.8v30.1h-3.8z"/></g><path d="m2 53.1v7.8c13.5-12.9 32.3-27.4 60-28.4v-5.8c-21.6 0-46.1 11.8-60 26.4" fill="#ed4c5c"/><g fill="#94989b"><path d="m36.7 31.3c-1 .4-2 .7-3.1 1.1 1-.4 2.1-.8 3.1-1.1"/><path d="m18.1 40.5c.3-.2.6-.4.9-.6 0 0-.1 0-.1.1-.3.1-.5.3-.8.5"/></g><g fill="#ffdd67"><path d="m15.8 26.4l3-1.6 1.2 2.3-3 1.6z"/><path d="m7.6 24.5c-1.4-.8-1.6-.5-1.8-.1-.2.4-.3.8 1.1 1.6l.7-1.5"/></g><g fill="#384044"><path d="m31.4 31.8l-.4-1.1 8-3.1.4 1.2z"/><path d="m17 42.3c.5 1 .1 2.2-.9 2.7-1 .5-2.2.1-2.7-.9-.5-1 3.1-2.8 3.6-1.8"/><path d="m30.9 35c.5 1 .1 2.2-.9 2.7-1 .5-2.2.1-2.7-.9-.5-1 3.1-2.8 3.6-1.8"/><path d="m25.1 26.5c0 0-1.4.7-.7 3.2.7 2.5.7 2.5.7 2.5l2.2-1.2-2.2-4.5"/></g><path d="m26.9 24.2l-2.4 1.2 2 4.1c.4.8.1 1.8-.7 2.2l-8.8 4.6c-.8.4-1.7.1-2.1-.7l-2-4.1-3.5 1.8c-.5.3-.7 1.1-.4 1.7l.4 9.6c.3.6 1.1.9 1.7.6l20.9-11c.6-.3.9-1.1.5-1.7l-3.9-7.8c-.3-.6-1.1-.8-1.7-.5" fill="#83bf4f"/><g fill="#384044"><path d="m36.4 29.2c-.2-.6-.9-1-1.5-.8-.6.2-1 .9-.8 1.6.2.7.9 1 1.5.8.6-.2 1-.9.8-1.6"/><path d="m25 32.1l-2-6 .8-9-1.7-.3-1 8.2-1.7 1c.2.5-.2 1.2-1.1 1.7-.8.4-1.7.4-2-.1l-1.7.9-7.1-4-.7 1.5 7.5 4.6 3.6 5.2 7.1-3.7"/></g><g fill="#ffdd67"><path d="m22.1 16.9c.2-1.6.6-1.6 1.1-1.6.5.1.9.2.7 1.8l-1.8-.2"/><path d="m47.1 15.4l3.3-.6.5 2.6-3.4.6z"/><path d="m39.9 11c-1.1-1.2-1.4-1-1.8-.6-.3.3-.6.7.5 1.9l1.3-1.3"/></g><g fill="#384044"><path d="m43.7 30.5c.2 1.1-.6 2.1-1.6 2.3-1.1.2-2.1-.6-2.3-1.7-.2-1 3.7-1.7 3.9-.6"/><path d="m58.7 28.1c.2 1.1-.6 2.1-1.6 2.3-1.1.2-2.1-.6-2.3-1.7-.2-1.1 3.7-1.8 3.9-.6"/><path d="m56 18.3c0 0-1.5.3-1.6 2.8-.1 2.6-.1 2.6-.1 2.6l2.4-.4-.7-5"/></g><path d="m58.3 16.7l-2.6.4.7 4.5c.1.9-.4 1.7-1.3 1.8l-9.7 1.6c-.9.1-1.7-.4-1.8-1.3l-.7-4.5-3.9.8c-.7.1-1.1.8-1 1.5l.4 8.8c.1.7.8 1.2 1.4 1.1l20.3-3.4c.7-.1 1.1-.8 1-1.5l-1.4-8.6c0-.8-.7-1.3-1.4-1.2" fill="#c28fef"/><path d="m54.1 17.5l3.3-8.4-1.6-.8-3.3 7.5-1.9.3c.1.5-.6 1.1-1.5 1.3-.9.2-1.7-.2-1.8-.7l-1.9.3-5.5-6-1.2 1.2 5.9 6.9 1.8 5.9 7.8-1.3-.1-6.2" fill="#89664c"/><path d="m55.9 8.3c.7-1.5 1-1.4 1.5-1.2.4.2.7.5.1 2l-1.6-.8" fill="#ffdd67"/><path d="m41.9 10.3l.8 1 10.6-1.7.3-1.3c-.7-4.3-1.9-5.9-6.7-5.2-4.8.8-5.7 2.8-5 7.2" fill="#ffb300"/><path d="m53.2 8.5c0 .3 0 .5-.1.6-.1.3-.3.4-.3.4s0-.5-.1-1.1c-.9-3.9-.8-2-5.2-1.3-4.3.7-4.9-1.2-4.5 2.8.1.7.2 1.1.2 1.1s-.3-.1-.4-.3c-.1-.1-.2-.3-.3-.6-.4 0-.9.1-.8 1.3.1.7.5 1.3 1.4 1.2.7 2.4 4.2 3.5 5.7 3.3 1.5-.2 4.5-2.4 4.4-4.9.9-.2 1.1-.9 1-1.6-.1-1.1-.7-1.1-1-.9" fill="#ffdd67"/><g fill="#937237"><circle cx="45.8" cy="10.9" r=".9"/><circle cx="50.3" cy="10.2" r=".9"/><path d="m49.9 13.1c-.8.9-1.9 1-2.9.5-.1-.1-.2.1-.1.2.4.5 1 .9 1.7.7s1.2-.7 1.4-1.2c.1-.2 0-.3-.1-.2"/></g><path d="m9.2 22.7l1 .8 9.8-4.3v-1.3c-1.7-4-3.4-5.2-7.8-3.3-4.5 1.8-4.8 4.1-3 8.1" fill="#ffb300"/><path d="m19.6 18.1c.1.2.1.5.1.6 0 .3-.2.5-.2.5s-.1-.5-.4-1.1c-1.8-3.5-1.3-1.7-5.3.1-4 1.8-5 .1-3.6 3.9.3.6.5 1 .5 1s-.3 0-.5-.2c-.1-.1-.3-.3-.4-.5-.4.1-.9.4-.4 1.5.3.7.8 1.1 1.7.8 1.3 2.1 5 2.3 6.4 1.7 1.4-.6 3.7-3.5 3-5.9.8-.4.8-1.1.5-1.8-.6-1-1.1-.9-1.4-.6" fill="#ffdd67"/><g fill="#937237"><circle cx="13.1" cy="22.3" r=".9"/><circle cx="17.2" cy="20.5" r=".9"/><path d="m17.6 23.4c-.6 1.1-1.5 1.5-2.7 1.2-.1 0-.2.1 0 .2.5.4 1.2.6 1.9.3s1-1 1.1-1.6c0-.1-.2-.2-.3-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a3.svg b/riot/emojione/svg/1f3a3.svg new file mode 100644 index 0000000..daa26dc --- /dev/null +++ b/riot/emojione/svg/1f3a3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m12.7 16.9h1v5.5h-1z"/><path d="m52.6 44.3c0-.1-2.2-8.2-8-26.8-3.4-10.9-12.2-14.6-19.4-13.3-5.9 1.1-11.6 5.7-11 13.6l-2 .1c-.6-7.8 4.6-14.2 12.6-15.7 8.1-1.5 18 2.5 21.8 14.7 5.8 18.6 8 26.8 8 26.8l-2 .6" fill="#94989b"/><g fill="#3e4347"><path d="m51.6 44.9c-.3-.9.3-1.8 1.3-2.1l.5-.1c.9-.2 1.9.3 2.2 1.2l4.4 15.9c.3.9-.3 1.8-1.3 2.1l-.5.1c-.9.2-1.9-.3-2.2-1.2l-4.4-15.9"/><path d="m52.1 40.7c1.7 3.4.1 7.5-3.4 9.1-3.5 1.6-7.7.1-9.4-3.3-1.7-3.4-.1-7.5 3.4-9.1 3.5-1.6 7.8-.1 9.4 3.3"/></g><path d="m48.9 42.2c.8 1.7.1 3.7-1.7 4.5-1.8.8-3.9.1-4.7-1.7-.8-1.7-.1-3.7 1.7-4.5 1.8-.8 3.9 0 4.7 1.7" fill="#94989b"/><path fill="#d0d0d0" d="m35.5 55.2l-1.8-1.6 11.7-11.3 1.7 1.7z"/><path fill="#3e4347" d="m32.9 52.8h5.8v2.4h-5.8z"/><path d="m18 53.2c2.3-3.4 4.7-8.1 4.6-13.4-.1-10.2-4.4-18.5-9.6-18.5-5.1.1-9.1 8.5-9 18.7.1 5.2 2.6 10 5 13.3-2.8 1.4-4.8 3.9-4.7 6.9.1 4.3 9.3-.4 9.3-.4s9.4 4.5 9.3.2c-.1-2.9-2.1-5.5-4.9-6.8" fill="#c7e755"/><path d="m9.7 21.6c0-.8.8-1.5 1.8-1.5 1 0 1.8.6 1.8 1.5 0-.8.8-1.5 1.8-1.5 1 0 1.8.6 1.8 1.5 0 .8-3.5 2.7-3.5 2.7s-3.7-1.8-3.7-2.7" fill="#428bc1"/><path d="m10.8 31.2c1.7 0 3.1-1.2 3.1-2.7 0-1.4-1.4-2.6-3.2-2.6-1.7 0-3.1 1.2-3.1 2.7 0 1.4 1.4 2.6 3.2 2.6" fill="#fff"/><path d="m10.7 29.9c.9 0 1.6-.6 1.5-1.3 0-.7-.7-1.3-1.6-1.3-.9 0-1.6.6-1.5 1.3.1.7.8 1.3 1.6 1.3" fill="#231f20"/><g fill="#428bc1"><path d="m7.9 33.8c2.3 1.3 5.1 1.8 7.7 1.1 2.3-.6 4.3-2 5.4-3.8.3-.5 1.1-.1.8.4-1.2 2-3.4 3.5-5.9 4.2-2.9.7-6.1.3-8.5-1.2-.5-.3 0-1 .5-.7"/><path d="m21.2 38.3c0 1.9-1.8 3.5-4.1 3.6-2.3.1-4.2-1.6-4.2-3.5.3 0 .6 0 1 0 0 1.9-1.8 3.5-4.1 3.6-2.3.1-4.2-1.6-4.3-3.5 0-.5 1-.5 1 0 .1 1.5 1.5 2.7 3.3 2.7 1.8 0 3.2-1.3 3.2-2.7 0-.5.9-.5 1 0 .1 1.5 1.5 2.7 3.3 2.7 1.8 0 3.2-1.3 3.2-2.7-.3-.7.7-.7.7-.2"/><path d="m18.9 48.6c0 1.4-1.3 2.5-2.9 2.5-1.6.1-2.9-1.1-3-2.5.3 0 .6 0 1 0 0 1.4-1.3 2.5-2.9 2.5-1.8.1-3.1-1.1-3.1-2.4 0-.5.9-.5 1 0 0 .9.9 1.6 2 1.7 1.1 0 2-.8 2-1.7 0-.5.9-.5 1 0 0 .9.9 1.6 2 1.7 1.1 0 2-.8 2-1.7-.1-.7.9-.7.9-.1"/><path d="m20.3 43.4c0 1.7-1.6 3.1-3.7 3.2-2.1.1-3.7-1.4-3.8-3.1.3 0 .6 0 1 0 0 1.7-1.6 3.1-3.7 3.2-2.1.1-3.7-1.4-3.8-3.1 0-.5.9-.5 1 0 0 1.3 1.3 2.3 2.8 2.3 1.5 0 2.7-1.1 2.7-2.3 0-.5.9-.5 1 0 0 1.3 1.3 2.3 2.8 2.3 1.5 0 2.7-1.1 2.7-2.3.1-.7 1-.8 1-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a4.svg b/riot/emojione/svg/1f3a4.svg new file mode 100644 index 0000000..810538a --- /dev/null +++ b/riot/emojione/svg/1f3a4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c6cedb"><path d="m40 24c4.8 4.8 12.3 5 17.4.7l-18.1-18.1c-4.3 5-4 12.6.7 17.4"/><path d="m58.2 5.8c-4.7-4.8-12.3-5-17.4-.8l18.2 18.2c4.2-5.1 4-12.7-.8-17.4"/></g><g fill="#3e4347"><path d="m59.3 23.5l-18.8-18.8c-.2.3-.5.5-.8.8-.2.2-.5.5-.7.8l18.7 18.7c.3-.2.5-.5.8-.7.3-.3.5-.6.8-.8"/><path d="M32 20.9 6.2 52.8 7.5 54 2 60.9 3.1 62 10 56.5 11.2 57.8 43.1 32z"/></g><g fill="#4fd1d9"><path d="m57.7 37.3c-.7-3.6-4-4.3-4-4.3l-6.3 11.6c-.2-1.3-1.2-2.8-2.9-3.6-2.3-1.3-5-.9-5.9.7s.3 4 2.6 5.3c2.3 1.3 5 .9 5.9-.7l5-9.3c.5 0 1.3.3 2.4 1.6 2.3 2.6 5.4 2.9 5.4 2.9s-1.7-1.1-2.2-4.2"/><path d="m29.4 5.4c-3-4.4-7.9-3.3-7.9-3.3l-1.5 19.3c-1-1.7-3.3-3-6-3.2-3.9-.3-7.2 1.7-7.4 4.4-.2 2.8 2.7 5.3 6.6 5.6 3.9.3 7.2-1.7 7.4-4.4l1.2-15.4c.7-.3 1.9-.4 4.1.7 4.6 2.1 8.9.7 8.9.7s-2.8-.5-5.4-4.4"/></g><path fill="#3e4347" d="m49.8 27.7l-13.5-13.5-1.7 3.5 11.7 11.7z"/><g fill="#c6cedb"><path d="M43.1 32 32 20.9 34.6 17.7 46.3 29.4z"/><path transform="matrix(.7071-.7071.7071.7071 3.8777 39.0969)" d="m48.7 1.4h.8v27h-.8z"/></g><path transform="matrix(.7071-.7071.7071.7071-36.9346 22.1915)" fill="#8a94a0" d="m7.7 52.2h1.2v7.1h-1.2z"/><g fill="#c6cedb"><circle cx="16.5" cy="47.5" r=".7"/><circle cx="13.2" cy="50.8" r="1.8"/></g><path fill="#3e4347" d="m11.1 50.4h4.1v.9h-4.1z"/><circle cx="34" cy="30" r="1.8" fill="#c6cedb"/><path transform="matrix(.707-.7072.7072.707-11.2329 32.8452)" fill="#3e4347" d="m33.6 27.9h.9v4.1h-.9z"/><g fill="#c6cedb"><path d="m11.6 55.4c-.1.1-.3.1-.4 0l-2.7-2.7c-.1-.1-.1-.3 0-.4.1-.1.3-.1.4 0l2.7 2.7c.1.2.1.3 0 .4"/><path transform="matrix(.7071-.7071.7071.7071-17.9881 30.0394)" d="m22.1 34.2h10.2v5h-10.2z"/></g><path transform="matrix(.7072-.707.707.7072-19.4992 29.4068)" fill="#8a94a0" d="m23.6 36.4h4.3v3.6h-4.3z"/><g fill="#3e4347"><path transform="matrix(.7071-.7071.7071.7071-20.4843 29.0067)" d="m24.5 37.7h.5v3h-.5z"/><path transform="matrix(.7071-.7071.7071.7071-19.8279 29.2768)" d="m25.2 37.1h.5v3h-.5z"/><path transform="matrix(.7071-.7071.7071.7071-19.1734 29.5485)" d="m25.8 36.4h.5v3h-.5z"/><path transform="matrix(.7071-.7071.7071.7071-18.5188 29.82)" d="m26.5 35.8h.5v3h-.5z"/><path transform="matrix(.707-.7072.7072.707-16.4761 30.6727)" d="m26.6 33.4h4.3v3.6h-4.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a5.svg b/riot/emojione/svg/1f3a5.svg new file mode 100644 index 0000000..da84a9f --- /dev/null +++ b/riot/emojione/svg/1f3a5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m3.6 22c-.6 0-1.1.5-1.1 1.1v19.8c0 .6.5 1.1 1.1 1.1l2.9-.7v-20.6l-2.9-.7" fill="#94989b"/><g fill="#3e4347"><path d="m6.5 22.7v20.6l40-10.3z"/><path d="m42.5 41h-5l-9 21h-4.1v2h6.7l7.4-18v16h-3v2h9v-2h-3v-16l7.6 18h6.4v-2h-4z"/><circle cx="29.5" cy="12" r="12"/></g><circle cx="29.5" cy="12" r="4" fill="#94989b"/><circle cx="49.5" cy="12" r="12" fill="#3e4347"/><circle cx="49.5" cy="12" r="4" fill="#94989b"/><path d="m61.5 42.9c0 .6-.5 1.1-1.1 1.1h-41.8c-.6 0-1.1-.5-1.1-1.1v-19.8c0-.6.5-1.1 1.1-1.1h41.8c.6 0 1.1.5 1.1 1.1v19.8" fill="#3e4347"/><g fill="#94989b"><path d="m59.5 41c0 .6-.5 1-1.1 1h-37.8c-.6 0-1.1-.4-1.1-1 0-.6.5-1 1.1-1h37.8c.6 0 1.1.4 1.1 1"/><path d="m41.5 26h16v12h-16z"/></g><path fill="#3e4347" d="m42.5 27h14v10h-14z"/><g fill="#94989b"><path d="m21.5 33h16v4h-16z"/><path d="m21.5 27h16v4h-16z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a6.svg b/riot/emojione/svg/1f3a6.svg new file mode 100644 index 0000000..1dca8b5 --- /dev/null +++ b/riot/emojione/svg/1f3a6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m42 16c-3 0-5.6 1.7-7 4.1-1.4-2.5-4-4.1-7-4.1-4.4 0-8 3.6-8 8s3.6 8 8 8c3 0 5.6-1.7 7-4.1 1.4 2.5 4 4.1 7 4.1 4.4 0 8-3.6 8-8s-3.6-8-8-8m-14 11c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3m14 0c-1.7 0-3-1.3-3-3s1.3-3 3-3 3 1.3 3 3-1.3 3-3 3"/><path d="m46 32h-23c-1.1 0-2 .9-2 2v.5l-5-2.5v16l5-2.5v.5c0 1.1.9 2 2 2h23c1.1 0 2-.9 2-2v-12c0-1.1-.9-2-2-2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a7.svg b/riot/emojione/svg/1f3a7.svg new file mode 100644 index 0000000..15d0289 --- /dev/null +++ b/riot/emojione/svg/1f3a7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.5 45.1c-6.6 12.1-6.5 13.1-9.6 11.3-3.1-1.8-4.3-3.4 2.4-15.4s8.6-11.9 11.7-10.1c3 1.7 2.1 2.2-4.5 14.2" fill="#454749"/><path d="m53.7 48.7c-4.2 7.7-9.4 11.4-11.9 10-3.1-1.8-1.5-1.8 5.1-13.9 6.6-12.1 5.8-13.5 8.9-11.7 2.5 1.4 2.1 7.9-2.1 15.6" fill="#258399"/><path d="m16.5 45.1c6.6 12.1 6.5 13.1 9.6 11.3 3.1-1.8 4.3-3.4-2.4-15.4s-8.6-11.9-11.7-10.1c-3 1.7-2.1 2.2 4.5 14.2" fill="#454749"/><path d="m10.3 48.7c4.2 7.7 9.4 11.4 11.9 10 3.1-1.8 1.5-1.8-5.1-13.9-6.6-12.1-5.8-13.5-8.9-11.7-2.5 1.4-2.1 7.9 2.1 15.6" fill="#258399"/><path d="m11.3 57.7c0 0 5.4 1.4 5.8 0 2.5-8.1-11.4-12.9-11.4-22.1 0-14.8 11.8-26.8 26.3-26.8 14.5 0 26.3 12 26.3 26.8 0 9.2-13.9 14-11.4 22.1.4 1.4 5.8 0 5.8 0 5.7-5.6 9.3-13.4 9.3-22.1 0-16.9-13.4-30.6-30-30.6-16.6 0-30 13.7-30 30.6 0 8.7 3.6 16.5 9.3 22.1" fill="#3baacf"/><path d="m14.9 17.6c3.5-.7 8-5.7 17.1-5.7 9.1 0 13.7 5.1 17.1 5.7 1.4.3 3.8-1.9 3.8-1.9-5.5-6.3-12-9.5-20.9-9.5-8.9 0-15.4 3.2-20.9 9.5 0 .1 2.4 2.2 3.8 1.9" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a8.svg b/riot/emojione/svg/1f3a8.svg new file mode 100644 index 0000000..c70f95e --- /dev/null +++ b/riot/emojione/svg/1f3a8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.6 23.6c8.8-15.1-9.3-24.9-32.3-14.4-14.1 6.5-23.9 26.5-4.3 43.7 13.9 12.2 49 5.3 49-8.7 0-15.5-21.7-4.8-12.4-20.6m4.9 24.6c-2.8 2.4-7.2 2.4-10 0-2.8-2.4-2.8-4.5 0-6.9 2.8-2.4 7.2-2.4 10 0s2.7 4.5 0 6.9" fill="#f6c799"/><path d="m33.2 45.1c-3.1-2.4-8-2.4-11.1 0-3.1 2.4-3.1 6.2 0 8.6s8 2.4 11.1 0c3-2.4 3-6.3 0-8.6" fill="#2caece"/><path d="m19.6 33.6c-3.4-1.6-8-.6-10.4 2.3-2.4 2.9-1.6 6.5 1.8 8.1 3.4 1.6 8 .6 10.4-2.3 2.4-2.9 1.6-6.5-1.8-8.1" fill="#fdf516"/><path d="m17 20.6c-2.9-1.6-7.2-.9-9.4 1.6-2.3 2.5-1.7 5.8 1.2 7.3 2.9 1.6 7.2.9 9.4-1.6s1.7-5.7-1.2-7.3" fill="#f55"/><path d="m28.4 10.8c-2.8-1.6-6.9-1-9.1 1.4s-1.8 5.5 1.1 7.1c2.8 1.6 6.9 1 9.1-1.4s1.7-5.6-1.1-7.1" fill="#83bf4f"/><path d="m44.7 9.7c-2.2-1.8-5.9-2.2-8.5-1-2.5 1.2-2.8 3.7-.6 5.5 2.2 1.8 5.9 2.2 8.5 1 2.5-1.3 2.7-3.7.6-5.5" fill="#9156b7"/><path d="m40 42.1c-1.9 2.1-11.5 4-11.5 4s3.8-3.5 5.5-9.2c.8-2.7 4.7-2.7 6.4-1.2 1.7 1.4 1.5 4.3-.4 6.4" fill="#947151"/><path d="m58.7 12.3c1-.1 2.9 1.6 3 2.5.3 4.3-17.7 19.7-17.7 19.7l-3-2.5c0 0 13.3-19.4 17.7-19.7" fill="#666"/><path fill="#ccc" d="m38.4 34.9l3 2.5 2.6-2.9-3-2.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3a9.svg b/riot/emojione/svg/1f3a9.svg new file mode 100644 index 0000000..d61f2f3 --- /dev/null +++ b/riot/emojione/svg/1f3a9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m61.3 41.8c-3.2-7.5-15.3-1-29.3-1-14.1 0-26.1-6.5-29.3 1-3.7 7.2 7.8 20.1 29.3 20.1 21.5 0 33-12.9 29.3-20.1"/><path d="m32 1.9c-14 .1-24.1 6.2-22.7 9.6 3.8 12.5 5.2 23.8 4 36.3 12.6 3 24.9 2.8 37.4-.2-1.2-12.5.2-23.6 4-36.1 1.4-3.4-8.6-9.5-22.7-9.6"/></g><path d="m13.6 40.5c.2 2.5-1.1 7.3-1.1 7.3 11.6 11.1 27.4 11.1 39 0 0 0-1.1-4.7-1.1-7.3-11.8 10.7-25 10.7-36.8 0" fill="#ed4c5c"/><path d="m55 10.4c0 4.7-10.3 8.4-23 8.4-12.7 0-23-3.8-23-8.4 0-4.7 10.3-8.5 23-8.5 12.7 0 23 3.8 23 8.5" fill="#656d72"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3aa.svg b/riot/emojione/svg/1f3aa.svg new file mode 100644 index 0000000..6d0fdff --- /dev/null +++ b/riot/emojione/svg/1f3aa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="m56.2 38h-24.2-24.2l-5.8 26h30 30z"/><path fill="#f2f2f2" d="m10.2 64h13.4l1.7-26h-11.6z"/><path d="m2 38c0 2.3 2.6 4.2 5.8 4.2s5.8-1.9 5.8-4.2c.1 0-11.6 0-11.6 0" fill="#c94747"/><path d="m13.7 38c0 2.3 2.6 4.2 5.8 4.2 3.2 0 5.8-1.9 5.8-4.2 0 0-11.6 0-11.6 0" fill="#d0d0d0"/><path fill="#f2f2f2" d="m53.8 64h-13.4l-1.7-26h11.6z"/><path d="m62 38c0 2.3-2.6 4.2-5.8 4.2s-5.8-1.9-5.8-4.2c-.1 0 11.6 0 11.6 0" fill="#c94747"/><path d="m50.3 38c0 2.3-2.6 4.2-5.8 4.2s-5.8-1.9-5.8-4.2c0 0 11.6 0 11.6 0" fill="#d0d0d0"/><path d="m32 12c-1.2 10.4-14.2 26-30 26h30 30c-15.8 0-28.8-15.6-30-26" fill="#ed4c5c"/><g fill="#fff"><path d="m13.7 38h11.6c0 0 6.7-7.9 6.7-26 0 0-6.7 26-18.3 26"/><path d="M32,12c0,18.1,6.7,26,6.7,26h11.6C38.7,38,32,12,32,12z"/></g><path d="m32 38h-6.7c0 2.3 3.4 4.2 6.7 4.2 3.2 0 6.7-1.9 6.7-4.2 0 0-6.7 0-6.7 0" fill="#c94747"/><path fill="#3e4347" d="m32 42.1l-10.6 21.9h21.3z"/><g fill="#c94747"><path d="m21.4 64c0 0-2.4 0-4.1-4.9 0 0 4.1-.5 14.7-16.9 0-.1-5.3 21.8-10.6 21.8"/><path d="m42.6 64c0 0 2.4 0 4.1-4.9 0 0-4.1-.5-14.7-16.9 0-.1 5.3 21.8 10.6 21.8"/></g><path fill="#94989b" d="m31.2 4.9h1.6v9.7h-1.6z"/><path fill="#d0d0d0" d="m31.6 4.9h.8v9.7h-.8z"/><ellipse cx="32" cy="5.4" rx="1.5" ry="1.4" fill="#ed4c5c"/><path d="m32 5.9c-.7 0-1.2-.4-1.5-.9-.1.1-.1.3-.1.4 0 .8.7 1.4 1.5 1.4s1.5-.6 1.5-1.4c0-.1 0-.3-.1-.4 0 .5-.6.9-1.3.9" fill="#c94747"/><ellipse cx="32.4" cy="4.9" rx=".4" ry=".4" fill="#ffc7ce"/><path d="m32.8 7.1c0 1.4 0 2.7 0 4.1 2.9-3.1 5.8 1.1 8.6-2-2.8 1.7-5.7-3.9-8.6-2.1" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ab.svg b/riot/emojione/svg/1f3ab.svg new file mode 100644 index 0000000..4e2c9b8 --- /dev/null +++ b/riot/emojione/svg/1f3ab.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58 32c0-3.3 1.8-6 4-6v-9h-23.7c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5h-33.3v9c2.2 0 4 2.7 4 6s-1.8 6-4 6v9h33.4c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5h23.6v-9c-2.2 0-4-2.7-4-6" fill="#fbbf67"/><path fill="#ed4c5c" d="m7 19h50v26h-50z"/><path fill="#fbbf67" d="m8 20h48v24h-48z"/><g fill="#89664c"><path d="m48.6 38.2l-.7.4c-.1-.2-.2-.3-.4-.3h-.4c-.2 0-.3.1-.4.3l-.7-.4-1.6-.9v1.9 1.8l1.6-.9.7-.4c.1.2.2.3.4.3h.4c.2 0 .3-.1.4-.3l.7.4 1.6.9v-1.9-1.9l-1.6 1"/><path d="m44.8 32.9c.3.4.6.7 1.1 1 .4.2.9.3 1.4.3.5 0 1-.1 1.4-.3s.8-.5 1.1-1c.1.5-.2 1-.7 1.4-.5.4-1.2.6-1.9.6-.7 0-1.4-.2-1.9-.6-.3-.4-.6-.9-.5-1.4"/><path d="m54.5 27.9v-.1c0-.1 0-.1-.1-.2-.1-.1-.2-.1-.3-.1-.1 0-.2-.1-.3-.1-1.1-2.6-3.6-4.4-6.6-4.4-2.9 0-5.5 1.8-6.6 4.4-.1 0-.2 0-.3.1-.1 0-.2.1-.3.1-.1 0-.1 0-.1.2v.1c0 .3 0 .2.2.3.1 0 .1.1.2.1-.2.6-.3 1.3-.3 1.9 0 4 3.2 7.2 7.1 7.2s7.1-3.2 7.1-7.2c0-.7-.1-1.3-.3-1.9.1-.1.1-.1.2-.1.4-.2.4-.1.4-.3m-7.2-4.1c2.4 0 4.5 1.4 5.6 3.3-.8-.1-1.8-.1-2.3 0-.9.1-1.6.3-2.2.6-.6.3-1.4.3-2 0-.6-.3-1.3-.5-2.2-.6-.5 0-1.5-.1-2.3 0 .9-1.9 3-3.3 5.4-3.3m0 12.7c-3.5 0-6.3-2.8-6.3-6.3 0 0 0-.1 0-.1.2.8.7 1.4 1.5 1.7.8.3 1.7.3 2.5 0 .4-.2.8-.5 1.1-.9.5-.8.4-1.3.6-2 .2-.6.9-.6 1.2 0 .3.7.1 1.2.6 2 .3.4.7.7 1.1.9.8.3 1.7.3 2.5 0 .7-.3 1.2-.8 1.5-1.7 0 0 0 .1 0 .1 0 3.5-2.8 6.3-6.3 6.3"/></g><g fill="#fff"><circle cx="36.8" cy="21.3" r="1.5"/><circle cx="36.8" cy="25.6" r="1.5"/><circle cx="36.8" cy="29.9" r="1.5"/><circle cx="36.8" cy="34.1" r="1.5"/><circle cx="36.8" cy="38.4" r="1.5"/><circle cx="36.8" cy="42.7" r="1.5"/></g><g fill="#89664c"><path d="m14.4 23.4h-2.9v1.2h2.7v1h-2.7v1.4h3.1v1h-4.2v-5.5h4.1v.9z"/><path d="m19.1 22.5h1.7v5.5h-1.1v-3.7c0-.1 0-.3 0-.5 0-.2 0-.3 0-.4l-1 4.6h-1.1l-1-4.6c0 .1 0 .3 0 .4 0 .2 0 .3 0 .5v3.7h-1.1v-5.5h1.7l1 4.3.9-4.3"/><path d="m26.1 27.5c-.4.4-1 .6-1.8.6s-1.4-.2-1.8-.6c-.6-.5-.8-1.3-.8-2.3 0-1 .3-1.8.8-2.3.4-.4 1-.6 1.8-.6s1.4.2 1.8.6c.6.5.8 1.3.8 2.3 0 1-.2 1.8-.8 2.3m-.7-.8c.3-.3.4-.8.4-1.4 0-.6-.1-1.1-.4-1.4-.3-.3-.6-.5-1.1-.5s-.8.2-1.1.5c-.3.3-.4.8-.4 1.4 0 .6.1 1.1.4 1.4.3.3.6.5 1.1.5s.8-.2 1.1-.5"/><path d="m28.5 25.9v.1c0 .4.1.7.1.9s.2.3.5.3c.3 0 .4-.1.5-.3 0-.1.1-.3.1-.6v-3.9h1.2v3.8c0 .5-.1.8-.2 1.1-.3.5-.8.7-1.5.7-.7 0-1.2-.2-1.4-.6-.2-.4-.4-.9-.4-1.5v-.1l1.1.1"/><path d="M33.1,28H32v-5.5h1.1V28z"/><path d="m21.7 33.8c-.4.4-1 .6-1.8.6s-1.4-.2-1.8-.6c-.6-.5-.8-1.3-.8-2.3 0-1 .3-1.8.8-2.3.4-.4 1-.6 1.8-.6s1.4.2 1.8.6c.6.5.8 1.3.8 2.3 0 1-.3 1.8-.8 2.3m-.8-.8c.3-.3.4-.8.4-1.4 0-.6-.1-1.1-.4-1.4-.3-.3-.6-.5-1.1-.5-.5 0-.8.2-1.1.5-.3.3-.4.8-.4 1.4 0 .6.1 1.1.4 1.4.3.3.6.5 1.1.5.5 0 .9-.2 1.1-.5"/><path d="m23.4 28.8h1.2l2.2 3.8v-3.9h1.1v5.5h-1.2l-2.2-3.9v3.9h-1.1v-5.4"/><path d="m33 29.7h-2.9v1.2h2.7v1h-2.7v1.4h3.1v1h-4.2v-5.5h4v.9"/><path d="m21.5 39.2c.2.1.4.2.5.4.1.1.2.3.2.5 0 .2.1.3.1.5 0 .4-.1.7-.2 1-.2.3-.5.5-.9.5h-1.2v-2.8h1.2c0-.2.2-.2.3-.1m-1.1.4v1.8h.6c.3 0 .5-.1.6-.4.1-.2.1-.3.1-.5 0-.3 0-.5-.1-.7-.1-.2-.3-.2-.5-.2h-.7"/><path d="m24.8 39.6h-1.5v.6h1.4v.5h-1.4v.7h1.6v.5h-2.1v-2.8h2.1c-.1 0-.1.5-.1.5"/><path d="m25.6 39.4c.2-.2.5-.3.9-.3.5 0 .8.2 1 .5.1.2.2.3.2.5h-.6c0-.1-.1-.2-.1-.3-.1-.1-.3-.2-.5-.2-.2 0-.4.1-.5.3-.1.2-.2.4-.2.7 0 .3.1.6.2.7s.3.2.5.2c.2 0 .4-.1.5-.2.1-.1.1-.2.1-.3h.6c-.1.3-.2.6-.4.7-.3.2-.5.3-.8.3-.4 0-.7-.1-.9-.4-.2-.3-.3-.6-.3-1.1-.1-.4 0-.8.3-1.1"/><path d="m29.2 40v-.4c.2 0 .3 0 .4 0 .1 0 .2-.1.3-.1 0 0 .1-.1.1-.2 0 0 0-.1 0-.1h.5v2.8h-.6v-2h-.7"/><path d="m33.1 39.6c-.1.1-.2.2-.3.4-.1.2-.3.4-.4.6-.1.2-.1.4-.2.6s-.1.5-.1.6h-.6c0-.5.2-1 .5-1.5.2-.3.4-.6.5-.7h-1.4v-.5h2v.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ac.svg b/riot/emojione/svg/1f3ac.svg new file mode 100644 index 0000000..7e70040 --- /dev/null +++ b/riot/emojione/svg/1f3ac.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#686b6d" d="m16.1 31.2l-10.9-.7v-13.5z"/><g fill="#333"><path d="m4.9 11.7l6 9.8 5.4-.6-6.4-10.1z"/><path d="m3.2 22.3l2.7-.3-3.4-5.7z"/><path d="m15.3 9.8l7 10.4 6.5-.7-7.6-10.8z"/><path d="m27.7 7.5l8.3 11.2 7.9-.8-9-11.7z"/><path d="m59.3 16.2l-.6-4.4-7.1-8.7-8.8 1.6 9.9 12.2z"/></g><g fill="#fff"><path d="m21.2 8.7l7.6 10.8 7.2-.8-8.3-11.2z"/><path d="m9.9 10.8l6.4 10.1 6-.7-7-10.4z"/><path d="m42.8 4.7l-7.9 1.5 9 11.7 8.8-1z"/><path d="m2 12.2l.5 4.1 3.4 5.7 5-.5-6-9.8z"/><path d="m58.3 8.2l-.7-6.2-6 1.1 7.1 8.7z"/></g><path fill="#ebf2f2" d="m58.7 11.8l2.9 4.1-1.7-13.7-2.3-.2z"/><path fill="#686b6d" d="m59.3 16.2l-.6-4.4 2.9 4.1z"/><path fill="#333" d="m3 22.8v8.9l56.7 3.7v-12.6z"/><g fill="#fff"><path d="m22.8 33l6.5.4 7.1-10.6h-7.2z"/><path d="m11.3 32.3l5.5.3 5.9-9.8h-6z"/><path d="m36.6 33.9l8 .5 8.7-11.6h-8.9z"/><path d="m6.2 22.8l-3.2 6.1v2.8l3.2.2 5-9.1z"/><path d="m59.7 26.7l-6.3 8.3 6.3.4z"/></g><path fill="#ebf2f2" d="m59.7 26.7l2.3-3.9v12.2l-2.3.4z"/><path fill="#686b6d" d="m59.7 22.8v3.9l2.3-3.9z"/><path fill="#333" d="m3 31.7v18l56.7 12.3v-26.6z"/><g fill="#fff"><path d="m59.7 36.9l-56.7-4.2v-1.2l56.7 3.7z"/><path d="m59.7 53.1l-56.7-9.4v-1l56.7 8.9z"/><path d="m59.7 45.7l-56.7-7v-1l56.7 6.6z"/><path d="m13.8 45l-1-.2v-5.4l1 .1z"/></g><path fill="#181919" d="m13.4 32.4l-11-.7v-13.4z"/><g fill="#fff"><path d="m4.6 22.2c0 .6-.4 1-.9 1-.5 0-.8-.4-.8-1 0-.6.4-1 .8-1 .5 0 .9.5.9 1"/><path d="m4.6 29.9c0 .6-.4 1-.9 1-.5 0-.8-.5-.8-1 0-.6.4-1 .8-1 .5 0 .9.5.9 1"/><path d="m10.2 30.2c0 .6-.4 1-.9 1-.5 0-.9-.5-.9-1.1s.4-1 .9-1c.4 0 .9.5.9 1.1"/></g><path fill="#686b6d" d="m62 60.5l-2.3 1.5v-25.1l2.3-.4z"/><g fill="#ebf2f2"><path d="m62 35l-2.3.4v1.5l2.3-.4z"/><path d="m62 43.7l-2.3.6v1.4l2.3-.6z"/><path d="m62 50.7l-2.3 1v1.4l2.3-1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ad.svg b/riot/emojione/svg/1f3ad.svg new file mode 100644 index 0000000..f947698 --- /dev/null +++ b/riot/emojione/svg/1f3ad.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#428bc1" d="m30.9 49.5v-.1z"/><path d="m43.6 6.9c-6.8 0-13-1.9-17.4-4.9-.8 3.6-1.3 7.6-1.3 11.8 0 17.6 18.6 31.9 18.6 31.9s18.5-14.3 18.5-31.9c0-4.1-.4-8-1.3-11.6-4.4 2.9-10.4 4.7-17.1 4.7" fill="#42ade2"/><g fill="#3e4347"><path d="m51.6 32.6c0-1.8-3.7-7.1-8.2-7.1-4.5 0-8.2 5.4-8.2 7.1 0 1.8 3.7-.8 8.2-.8 4.6 0 8.2 2.5 8.2.8"/><path d="m41.2 14.9c-1.2-.5-3.6-1.6-5.2-1.6-1.4 0-4 1-5.3 1.6-1.1.5-1.3.9-1 1.6.2.7 1 1.1 1.8.9 0 0 3.2-1.5 4.4-1.5 1.2 0 4.5 1.5 4.5 1.5.8.2 1.6-.2 1.8-.9.3-.6.1-1.1-1-1.6"/><path d="m56.7 14.9c-1.2-.5-3.6-1.6-5.2-1.6-1.4 0-4 1-5.3 1.6-1.1.5-1.3.9-1 1.6.2.7 1 1.1 1.8.9 0 0 3.2-1.5 4.4-1.5 1.2 0 4.5 1.5 4.5 1.5.8.2 1.6-.2 1.8-.9.3-.6.1-1.1-1-1.6"/></g><path d="m19.5 26.7c-6.2 2.3-12.5 2.6-17.5 1.3.4 3.6 1.3 7.4 2.7 11.1 5.8 16.1 27.4 22.9 27.4 22.9s12.1-19.1 6.3-35.1c-1.3-3.7-3-7.1-5-10.1-3 4.1-7.9 7.7-13.9 9.9" fill="#ff717f"/><g fill="#3e4347"><path d="m33.6 42.8c.6 1.6-1 7.7-5.1 9.2-4.1 1.5-9.2-2.2-9.8-3.8-.6-1.6 3.6-.5 7.7-2 4.1-1.5 6.6-5 7.2-3.4"/><path d="m19.3 35c-1.3-.1-3.8-.3-5.2.2-1.3.5-3.3 2.3-4.2 3.2-.9.8-.9 1.3-.5 1.8.4.6 1.3.7 2 .2 0 0 2.4-2.4 3.5-2.8 1.1-.4 4.6-.1 4.6-.1.8-.1 1.4-.7 1.4-1.4-.1-.7-.4-1.1-1.6-1.1"/><path d="m33.4 29.8c-1.3-.1-3.8-.3-5.2.2-1.3.5-3.3 2.3-4.2 3.2-.8.8-.8 1.3-.4 1.8.4.6 1.3.7 2 .2 0 0 2.4-2.4 3.5-2.8 1.1-.4 4.6-.1 4.6-.1.8-.1 1.4-.7 1.4-1.4-.2-.6-.5-1-1.7-1.1"/></g><path d="m25 13.8c-.2 1.8-.6 3.5-1.3 5.2-.3.8-.8 1.6-1.3 2.4-.6.8-1.3 1.5-2.3 1.9-1 .4-2.2.3-3-.1-.9-.4-1.6-.9-2.3-1.5-1.4-1.1-2.8-2.3-3.8-3.8-.5-.8-.9-1.7-1.1-2.6-.2-1-.2-1.9 0-2.9.3-1.9 1.3-3.7 2.5-5.1 1.3-1.4 2.9-2.5 4.6-3.1 1.7-.7 3.7-.9 5.4-.2v.2c-1.7 0-3.3.6-4.7 1.4-1.4.8-2.6 1.9-3.7 3.1-1 1.2-1.9 2.6-2.2 4.1-.4 1.5-.2 3.1.4 4.6.6 1.5 1.7 2.9 3.1 3.9.7.5 1.5.9 2.2 1 .8.1 1.5 0 2-.4 1.1-.8 2.1-2.2 2.9-3.6.9-1.5 1.6-3 2.5-4.5h.1" fill="#dbb046"/><path d="m24.8 13.9c-1.8-1.2-3.9-1.7-5.7-1.4-.9.1-1.7.5-2.1 1.1-.4.6-.5 1.5-.3 2.4.1.5.2.9.4 1.4.2.5.4 1.1.5 1.6.2 1.1.2 2.3 0 3.4-.5 2.2-2.1 4.2-4.4 4.9-1.1.4-2.4.4-3.6-.1-1.2-.5-2.1-1.4-2.8-2.4-.7-1-1.2-2.1-1.4-3.3-.3-1.2-.2-2.4-.1-3.5.3-2.3 1.1-4.3 1.6-6.3.3-1 .5-2 .2-2.9-.2-.8-1-1.6-1.9-2.1l.1-.2c.5.1 1.1.3 1.6.6.5.3 1 .8 1.2 1.3.6 1.2.5 2.4.4 3.5-.3 2.2-.9 4.3-1.1 6.3-.2 2 0 3.9 1 5.6.9 1.6 2.6 2.7 4.6 2.4.9-.2 1.9-.6 2.6-1.3.7-.7 1.2-1.7 1.4-2.7.2-1 0-2-.4-3-.2-.5-.4-.9-.7-1.4-.3-.5-.5-1-.7-1.6-.2-.6-.3-1.2-.2-1.9 0-.7.3-1.4.7-1.9.9-1.2 2.3-1.6 3.4-1.7 2.4-.1 4.7 1 6 2.8l-.3.4" fill="#ffce31"/><circle cx="24.9" cy="13.8" r="2.5" fill="#ffd86c"/><path d="m42.1 38.6c-1.1 1.5-1.9 3.1-2.6 4.9-.3.9-.5 1.9-.6 2.9-.1 1 0 2.1.6 3.2.5 1.1 1.6 1.9 2.6 2.3 1 .4 2 .5 3 .7 1.9.2 3.9.4 5.9 0 1-.2 1.9-.6 2.8-1.1.8-.6 1.6-1.3 2.1-2.2 1.1-1.7 1.6-3.8 1.5-5.8-.1-2-.6-4.1-1.6-5.9-.5-.9-1.1-1.8-1.8-2.6l-.7.9c.4.7.7 1.5 1 2.3.6 1.7.9 3.5.9 5.2 0 1.7-.3 3.4-1 4.8-.7 1.4-2 2.5-3.5 3.2-1.6.7-3.5.9-5.3.5-.9-.1-1.8-.5-2.6-1-.8-.5-1.2-1.2-1.4-1.9-.4-1.4-.2-3.2.1-5 .3-1.8.8-3.5 1.1-5.4h-.5" fill="#dbb046"/><path d="m40.9 37.9c2.2.8 4.2 2.3 5.3 4.1.6.9.8 1.9.6 2.6-.2.7-.8 1.4-1.7 1.8-.4.2-.9.4-1.4.6-.5.2-1.1.4-1.7.6-1 .6-2 1.4-2.6 2.4-1.4 1.9-1.8 4.6-.7 7.1.5 1.2 1.5 2.4 2.7 3.1 1.2.7 2.6 1 3.9.9 1.3-.1 2.5-.4 3.7-1 1.1-.6 2.1-1.4 2.9-2.2 1.6-1.8 2.7-3.8 3.9-5.6.6-.9 1.3-1.7 2.1-2.1.9-.4 2-.2 3.1.3l.1-.2c-.5-.4-1-.8-1.6-1-.6-.2-1.3-.3-2-.2-1.3.3-2.3 1.2-3.1 2-1.6 1.7-2.8 3.6-4.3 5.1-1.4 1.5-3.1 2.6-5.2 2.8-2 .3-4.1-.5-5.2-2.4-.6-.9-.9-2.1-.8-3.2 0-1.1.4-2.2 1.1-3 .7-.8 1.6-1.3 2.7-1.6.5-.1 1-.2 1.6-.3.6-.1 1.2-.2 1.8-.4.6-.2 1.2-.5 1.7-1 .5-.5.9-1.1 1.1-1.9.3-1.5-.3-3-1.2-4.1-1.7-2.2-4.3-3.4-6.6-3.4l-.2.2" fill="#ffce31"/><ellipse transform="matrix(.7695-.6386.6386.7695-14.7314 34.8373)" cx="40.9" cy="37.8" rx="2.5" ry="2.8" fill="#ffd86c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ae.svg b/riot/emojione/svg/1f3ae.svg new file mode 100644 index 0000000..534a483 --- /dev/null +++ b/riot/emojione/svg/1f3ae.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.9 44.2l-4.4-22.1c-1-5.1-5.4-9-10.7-9.1h-29.5c-5.4 0-9.9 3.9-10.8 9.1l-4.4 22.1c-.1.4-.1.8-.1 1.2 0 3.1 2.5 5.6 5.5 5.6 2 0 3.7-1 4.7-2.6l7.2-9c1.2 1.1 2.7 1.8 4.4 1.8 3.6 0 6.5-2.9 6.5-6.6h3.5c0 3.6 2.9 6.6 6.5 6.6 1.7 0 3.2-.6 4.4-1.7l7.2 9c1 1.6 2.7 2.6 4.7 2.6 3 0 5.5-2.5 5.5-5.6-.1-.5-.1-.9-.2-1.3" fill="#333"/><g fill="#94989b"><path d="m20.9 25.2c.7.7 1.5.5 1.8-.5v-3.1c-.3-1-1.1-1.2-1.8-.5l-.7.7c-.7.7-.7 1.9 0 2.6l.7.8"/><path d="m15.8 17.8c-1 .3-1.2 1.1-.5 1.8l.7.7c.7.7 1.9.7 2.6 0l.7-.7c.7-.7.5-1.5-.5-1.8h-3"/><path d="m13.8 21.2c-.7-.7-1.5-.5-1.8.5v3.1c.3 1 1.1 1.2 1.8.5l.7-.7c.7-.7.7-1.9 0-2.6l-.7-.8"/><path d="m18.9 28.7c1-.3 1.2-1.1.5-1.8l-.7-.7c-.7-.7-1.9-.7-2.6 0l-.7.7c-.7.7-.5 1.5.5 1.8h3"/></g><g fill="#f2b200"><path d="m49.5 23.2c-1 0-1.8.8-1.8 1.8 0 1 .8 1.8 1.8 1.8 1 0 1.8-.8 1.8-1.8 0-1-.8-1.8-1.8-1.8"/><path d="m44.2 25.1c-1 0-1.8.8-1.8 1.8 0 1 .8 1.8 1.8 1.8 1 0 1.8-.8 1.8-1.8.1-1-.8-1.8-1.8-1.8"/><path d="m49.3 21.4c1 0 1.8-.8 1.8-1.8 0-1-.8-1.8-1.8-1.8-1 0-1.8.8-1.8 1.8 0 .9.8 1.8 1.8 1.8"/><path d="m44.1 23.2c1 0 1.8-.8 1.8-1.8 0-1-.8-1.8-1.8-1.8-1 0-1.8.8-1.8 1.8 0 1 .8 1.8 1.8 1.8"/></g><g fill="#94989b"><ellipse cx="40.3" cy="34.5" rx="4.3" ry="4.4"/><path d="m23.8 30.1c-2.4 0-4.3 2-4.3 4.4 0 2.4 1.9 4.4 4.3 4.4 2.4 0 4.3-2 4.3-4.4.1-2.4-1.9-4.4-4.3-4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3af.svg b/riot/emojione/svg/1f3af.svg new file mode 100644 index 0000000..fe4adfa --- /dev/null +++ b/riot/emojione/svg/1f3af.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="26.6" cy="32" rx="21.6" ry="26.4" fill="#fff"/><ellipse cx="29" cy="32" rx="2.7" ry="3.9" fill="#ed4c5c"/><path d="m41.4 36.8c.1-.5.2-1 .3-1.5 0-.2.1-.4.1-.7 0-.3.1-.6.1-1 0-.6.1-1.1.1-1.7s0-1.1-.1-1.7c0-.3-.1-.7-.1-1 0-.2 0-.4-.1-.6-.1-.5-.2-1-.3-1.5-1.8-7-7.2-12.2-13.7-12.2-7.9 0-14.3 7.6-14.3 17 0 9.4 6.4 17 14.3 17 6.5.1 11.9-5 13.7-12.1m-12.8 5c-4.4 0-8-4.4-8-9.8 0-5.4 3.6-9.8 8-9.8 1 0 1.9.2 2.7.6 2.9 1.6 4.9 5.1 4.9 9.2 0 4.1-2 7.6-5 9.2-.8.4-1.7.6-2.6.6" fill="#428bc1"/><path d="m51.6 32c0-.5 0-1 0-1.5-.7-15.9-11.5-28.5-24.8-28.5-13.7 0-24.8 13.4-24.8 30s11.1 30 24.8 30c13.3 0 24.1-12.6 24.8-28.5 0-.5 0-1 0-1.5m-24 22.7c-10.2 0-18.6-10.2-18.6-22.7 0-12.6 8.4-22.7 18.6-22.7 4.1 0 7.9 1.7 11 4.4 4.5 4.2 7.4 10.9 7.4 18.3 0 7.4-2.9 14-7.4 18.3-3 2.7-6.9 4.4-11 4.4" fill="#3e4347"/><path fill="#fff" d="m33.1 29.3h18.1v5.3h-18.1z"/><path fill="#f2b200" d="m45.5 36l16.5 8.6-2.3-11.7h-16.6z"/><g fill="#c94747"><path d="m51.6 39.1l-2.1-1.1-3.1-5.5h2.1z"/><path d="m57.9 42.4l-2.1-1.1-3.1-8.8h2.1z"/></g><path fill="#f2b200" d="m45.5 27.9l16.5-8.7-2.3 11.8h-16.6z"/><g fill="#c94747"><path d="m51.6 24.7l-2.1 1.1-3.1 5.5h2.1z"/><path d="m57.9 21.4l-2.1 1.1-3.1 8.8h2.1z"/></g><path d="m60.2 30.6c-2.3 0-27.1 0-30.3 0-.2 0-.4 0-.6 0-.9 0-.9 2.7 0 2.7 2.3 0 27.1 0 30.3 0 .2 0 .4 0 .6 0 .9-.1.9-2.7 0-2.7" fill="#754e27"/><path d="m59.6 31.2c-2.2 0-26 0-29.1 0-.2 0-.4 0-.5 0-.9 0-.9 1.4 0 1.4 2.2 0 26 0 29.1 0 .2 0 .4 0 .5 0 .8 0 .8-1.4 0-1.4" fill="#b28769"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b0.svg b/riot/emojione/svg/1f3b0.svg new file mode 100644 index 0000000..bf844ef --- /dev/null +++ b/riot/emojione/svg/1f3b0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 53.8c0 2.6-1.7 4.6-3.9 4.6h-56.2c-2.1 0-3.9-2.1-3.9-4.6v-40.3c0-2.5 1.7-4.6 3.9-4.6h56.3c2.1 0 3.9 2.1 3.9 4.6l-.1 40.3" fill="#333"/><path d="m3.9 55c5.7 0 11.3 0 17 0-1.8-13.8-1.8-28.7 0-42.5-5.7 0-11.3 0-17 0-4.5 13.8-4.5 28.6 0 42.5" fill="#b2b2b2"/><path d="m2.9 51.3c5.9 0 11.8 0 17.7 0-1.2-11.5-1.2-23.7 0-35.2-5.9 0-11.8 0-17.7 0-3.1 11.5-3.1 23.7 0 35.2" fill="#d0d0d0"/><path d="m2 47.6c6.1 0 12.1 0 18.2 0-.7-9.2-.7-18.6 0-27.7-6.1 0-12.1 0-18.2 0-1.9 9.1-1.9 18.5 0 27.7" fill="#fff"/><path d="m19.6 17c-5.4 0-10.7 0-16.1 0 .4-1.5.8-3.1 1.3-4.6 5.1 0 10.2 0 15.3 0-.2 1.6-.4 3.1-.5 4.6" fill="#4187b7"/><path d="m19.7 55c-.4-2.8-4-5.2-8.3-5.2-4.3 0-7.2 2.4-6.3 5.2 4.9 0 9.8 0 14.6 0" fill="#fbbf67"/><path d="m23.5 55c5.7 0 11.3 0 17 0 1.4-13.8 1.4-28.7 0-42.5-5.7 0-11.3 0-17 0-1.4 13.8-1.4 28.6 0 42.5" fill="#b2b2b2"/><path d="m23.2 51.3c5.9 0 11.8 0 17.7 0 .9-11.5.9-23.7 0-35.2-5.9 0-11.8 0-17.7 0-1 11.5-1 23.7 0 35.2" fill="#d0d0d0"/><path d="m22.9 47.6c6.1 0 12.1 0 18.2 0 .6-9.1.6-18.6 0-27.7-6.1 0-12.1 0-18.2 0-.6 9.1-.6 18.5 0 27.7" fill="#fff"/><path d="m40 17c-5.4 0-10.7 0-16.1 0 .1-1.5.2-3.1.4-4.6 5.1 0 10.2 0 15.3 0 .2 1.6.3 3.1.4 4.6" fill="#4187b7"/><path d="m39.3 55c.3-2.8-3-5.2-7.3-5.2-4.3 0-7.6 2.4-7.3 5.2 4.9 0 9.7 0 14.6 0" fill="#fbbf67"/><path d="m43 55c5.7 0 11.3 0 17 0 4.5-13.8 4.5-28.7 0-42.5-5.7 0-11.3 0-17 0 1.8 13.8 1.8 28.6 0 42.5" fill="#b2b2b2"/><path d="m43.5 51.3c5.9 0 11.8 0 17.7 0 3.1-11.5 3.1-23.7 0-35.2-5.9 0-11.8 0-17.7 0 1.2 11.5 1.2 23.7 0 35.2" fill="#d0d0d0"/><path d="m43.8 47.6c6.1 0 12.1 0 18.2 0 1.9-9.1 1.9-18.6 0-27.7-6.1 0-12.1 0-18.2 0 .8 9.1.8 18.5 0 27.7" fill="#fff"/><path d="m60.5 17c-5.4 0-10.7 0-16.1 0-.2-1.5-.4-3.1-.6-4.6 5.1 0 10.2 0 15.3 0 .6 1.6 1 3.1 1.4 4.6" fill="#4187b7"/><path d="m58.9 55c.9-2.8-2-5.2-6.3-5.2-4.3 0-8 2.4-8.3 5.2 4.8 0 9.7 0 14.6 0" fill="#fbbf67"/><path d="m49.5 40.8c-.1 0-.3-.1-.4-.2s-.1-.3-.1-.4c0-.2.7-4.3 4.2-7.3-.4-.1-.8-.1-1.3-.1-1.7 0-2.8.6-3.1 1.8-.1.2-.3.4-.5.4h-1.4c-.3 0-.5-.2-.5-.5v-5.7c0-.3.2-.5.5-.5h1.4c.3 0 .5.2.5.5.9-.4 2.5-1 4.2-1 .8 0 1.5.1 2.2.3 1.3.4 1.8.8 2.2 1.1.1.1.2.1.2.1 0 0 .4-.3.5-.3.1-.1.2-.1.3-.1h2.5c.2 0 .4.1.5.3.1.2 0 .4-.1.5 0 0-4.2 3.9-4.2 10.6 0 .3-.2.5-.5.5h-7.1" fill="#3390ff"/><path d="m53.1 28.2c.7 0 1.3.1 2 .3 1.9.6 2.1 1.2 2.5 1.2.2 0 .4-.1.8-.4h2.5c0 0-4.3 4-4.3 10.9h-7.1c0 0 .7-4.7 4.9-7.6 0 0-1.1-.3-2.5-.3-1.5 0-3.1.4-3.6 2.2h-1.4v-5.7h1.4v.8c0-.1 2.2-1.4 4.8-1.4m0-1c-1.6 0-3 .4-4 .8-.2-.2-.4-.3-.7-.3h-1.4c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h1.4c.4 0 .8-.3 1-.7.1-.4.4-1.4 2.7-1.4 0 0 .1 0 .1 0-3 3-3.5 6.6-3.6 6.8 0 .3 0 .6.2.8.2.2.5.3.8.3h7.1c.6 0 1-.4 1-1 0-6.2 3.7-9.9 4-10.2.2-.2.3-.5.3-.8 0-.6-.4-1-1-1h-2.5c-.2 0-.4.1-.6.2 0 0-.2.1-.3.2-.4-.2-1-.7-2.2-1.1-.7-.2-1.5-.3-2.3-.3z" fill="#161616"/><path d="m27.6 40.8c-.1 0-.3-.1-.4-.2-.1-.1-.1-.3-.1-.4 0-.2.7-4.3 4.2-7.3-.4-.1-.8-.1-1.3-.1-1.7 0-2.8.6-3.1 1.8-.1.2-.3.4-.5.4h-1.4c-.3 0-.5-.2-.5-.5v-5.7c0-.3.2-.5.5-.5h1.4c.3 0 .5.2.5.5.9-.4 2.5-1 4.2-1 .8 0 1.5.1 2.2.3 1.3.4 1.8.8 2.2 1.1.1.1.2.1.2.1 0 0 .4-.3.5-.3.1-.1.2-.1.3-.1h2.5c.2 0 .4.1.5.3.1.2 0 .4-.1.5 0 0-4.2 3.9-4.2 10.6 0 .3-.2.5-.5.5h-7.1" fill="#fff"/><path d="m31.1 28.2c.7 0 1.3.1 2 .3 1.9.6 2.1 1.2 2.5 1.2.2 0 .4-.1.8-.4h2.6c0 0-4.3 4-4.3 10.9h-7.1c0 0 .7-4.7 4.9-7.6 0 0-1.1-.3-2.5-.3-1.5 0-3.1.4-3.6 2.2h-1.4v-5.7h1.4v.8c0-.1 2.2-1.4 4.7-1.4m0-1c-1.6 0-3 .4-4 .8-.2-.2-.4-.3-.7-.3h-1.4c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h1.4c.4 0 .8-.3 1-.7.1-.4.4-1.4 2.7-1.4 0 0 .1 0 .1 0-3 3-3.5 6.6-3.6 6.8 0 .3 0 .6.2.8.2.2.5.3.8.3h7.1c.6 0 1-.4 1-1 0-6.2 3.7-9.9 4-10.2.2-.2.3-.5.3-.8 0-.6-.4-1-1-1h-2.5c-.2 0-.4.1-.6.2 0 0-.2.1-.3.2-.4-.2-1-.7-2.2-1.1-.6-.2-1.4-.3-2.3-.3z" fill="#161616"/><path d="m5.7 40.8c-.1 0-.3-.1-.4-.2-.1-.1-.1-.3-.1-.4 0-.2.7-4.3 4.2-7.3-.4-.1-.8-.1-1.3-.1-1.7 0-2.8.6-3.1 1.8 0 .2-.2.4-.5.4h-1.4c-.3 0-.5-.2-.5-.5v-5.7c0-.3.2-.5.5-.5h1.4c.3 0 .5.2.5.5.9-.4 2.5-1 4.2-1 .8 0 1.5.1 2.2.3 1.3.4 1.8.8 2.2 1.1.1.1.2.1.2.1 0 0 .4-.3.5-.3.1-.1.2-.1.3-.1h2.5c.2 0 .4.1.5.3.1.2 0 .4-.1.5 0 0-4.2 3.9-4.2 10.6 0 .3-.2.5-.5.5h-7.1" fill="#ed4c5c"/><path d="m9.2 28.2c.7 0 1.3.1 2 .3 1.9.6 2.1 1.2 2.5 1.2.2 0 .4-.1.8-.4h2.5c0 0-4.3 4-4.3 10.9h-7c0 0 .7-4.7 4.9-7.6 0 0-1.1-.3-2.5-.3-1.5 0-3.1.4-3.6 2.2h-1.4v-5.7h1.4v.8c0-.1 2.2-1.4 4.7-1.4m0-1c-1.6 0-3 .4-4 .8-.2-.2-.4-.3-.7-.3h-1.4c-.6 0-1 .4-1 1v5.7c0 .6.4 1 1 1h1.4c.4 0 .8-.3 1-.7.1-.4.4-1.4 2.7-1.4 0 0 .1 0 .1 0-3 3-3.5 6.6-3.6 6.8 0 .3 0 .6.2.8.2.2.5.3.8.3h7.1c.6 0 1-.4 1-1 0-6.2 3.7-9.9 4-10.2.2-.2.3-.5.3-.8 0-.6-.4-1-1-1h-2.5c-.2 0-.4.1-.6.2 0 0-.2.1-.3.2-.4-.2-1-.7-2.2-1.1-.7-.2-1.4-.3-2.3-.3z" fill="#161616"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b1.svg b/riot/emojione/svg/1f3b1.svg new file mode 100644 index 0000000..c4dcbfe --- /dev/null +++ b/riot/emojione/svg/1f3b1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#333"/><ellipse transform="matrix(.7706-.6373.6373.7706-7.1472 28.6786)" cx="36.3" cy="24.3" rx="13.1" ry="13.9" fill="#f5f5f5"/><path d="m45.3 23.2c1.8 2.9.8 6.3-2.9 8.6-3.7 2.3-7.2 1.7-9-1.2-1.1-1.8-1.1-3.8 0-5.6-1.7 0-3.1-.7-4.1-2.2-1.7-2.7-.7-6 2.5-7.9 3.1-1.9 6.5-1.4 8.2 1.3 1 1.6 1 3.2.2 4.6 2.1-.3 3.9.6 5.1 2.4m-3.1 1.6c-.9-1.5-2.9-1.9-4.6-.8-1.8 1.1-2.3 3-1.4 4.5 1 1.6 2.9 2 4.7.9 1.7-1.1 2.2-3.1 1.3-4.6m-10.2-3.5c.9 1.4 2.7 1.9 4.3.8 1.6-1 2-2.8 1.1-4.2-.9-1.4-2.7-1.8-4.3-.8-1.5 1-1.9 2.7-1.1 4.2" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b2.svg b/riot/emojione/svg/1f3b2.svg new file mode 100644 index 0000000..56434d0 --- /dev/null +++ b/riot/emojione/svg/1f3b2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.6 41.9c1.2-2.5 1.7-4.7 1.2-5-.3-.1-1 .5-1.7 1.6l-8.1-14-22-19.4-5.1-.8c1.5-.9 2.4-1.7 2.2-2.1-.2-.5-2.5 0-5 1.2-2.5 1.2-4.3 2.5-4.1 3 .1.2.7.2 1.5.1-1.4 2.5-8.9 15.5-8.9 15.5l-1.8 25.5 1.1 1.1c-.6-.3-1-.5-1.2-.3-.4.4.9 2.3 2.8 4.3 2 2 3.9 3.2 4.3 2.8.2-.2 0-.8-.6-1.6l15.8 2.6 23.1-8.5 3.6-4.1c-.4 1.2-.4 2.1-.1 2.3.5.1 1.8-1.7 3-4.2" fill="#d0d0d0"/><g fill="#e8e8e8"><path d="m44.1 59.8c-1.9 1.9-5.5 2.7-8.2 1.9l-19.7-6c-2.7-.8-3.3-3-1.5-4.8l13.7-13.7c1.9-1.9 5.5-2.7 8.2-1.9l19.7 6c2.7.8 3.3 3 1.5 4.8l-13.7 13.7"/><path d="m4.2 19.9c-1.9 1.9-2.7 5.5-1.9 8.2l6 19.7c.8 2.7 3 3.3 4.8 1.5l13.7-13.7c1.9-1.9 2.7-5.5 1.9-8.2l-6-19.7c-.8-2.7-3-3.3-4.8-1.5l-13.7 13.7"/></g><path d="m55 15.7c-1-2.7-4-5.7-6.7-6.7l-20.5-6.7c-2.8-.9-4.3.6-3.4 3.4l6.8 20.4c.9 2.8 3.9 5.8 6.7 6.7l20.4 6.8c2.8.9 4.3-.6 3.4-3.4l-6.7-20.5" fill="#f5f5f5"/><g enable-background="new"><path d="m41.1 18.1c-.7 0-1.2.3-1.4.8-.3 1.1.9 2.8 2.8 3.9.9.5 1.8.8 2.5.8.7 0 1.2-.3 1.4-.8.3-1.1-.9-2.8-2.8-3.9-.8-.5-1.8-.8-2.5-.8" fill="#ed4c5c"/></g><g enable-background="new" fill="#333"><path d="m29 48.7c.7.2 1.1.7 1 1.2-.1 1.1-1.8 2.4-3.9 2.8-1.1.2-2 .2-2.7-.1-.7-.2-1.1-.7-1-1.2.1-1.1 1.8-2.4 3.9-2.8 1.1-.2 2.1-.2 2.7.1"/><path d="m39.2 46.4c.7.2 1.1.7 1 1.2-.1 1.1-1.8 2.4-3.9 2.8-1.1.2-2 .2-2.7-.1-.7-.2-1.1-.7-1-1.2.1-1.1 1.8-2.4 3.9-2.8 1.1-.2 2.1-.2 2.7.1"/><path d="m49 44.4c.7.2 1.1.7 1 1.2-.1 1.1-1.8 2.4-3.9 2.8-1.1.2-2 .2-2.7-.1-.7-.2-1.1-.7-1-1.2.1-1.1 1.8-2.4 3.9-2.8 1.1-.2 2-.1 2.7.1"/></g><g fill="#333"><path d="m21 26.1c.6-.4 1.1-.5 1.6-.2.9.7 1 2.8.2 4.8-.4 1-.9 1.8-1.5 2.2-.6.4-1.1.5-1.6.2-.9-.7-1-2.8-.2-4.8.4-1 1-1.8 1.5-2.2"/><path d="m9.7 22.6c.6-.4 1.1-.5 1.6-.2.9.7 1 2.8.2 4.8-.4 1-.9 1.8-1.5 2.2-.6.4-1.1.5-1.6.2-.9-.7-1-2.8-.2-4.8.4-1 .9-1.7 1.5-2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b3.svg b/riot/emojione/svg/1f3b3.svg new file mode 100644 index 0000000..3fe632f --- /dev/null +++ b/riot/emojione/svg/1f3b3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.8 28.9c1.3-7 4.3-10.8 4.1-14.7-.1-1.7-2-3.7-2-6.7 0-7.4 8.8-7.1 8.7 0 0 3-1.7 5-1.8 6.8-.2 3.8 2.6 7.7 3.8 14.7 2 10.9.5 14.2-.1 14.8-2.1 2.3-8.3 3-10.8 1.1-3.5-2.6-3-10.1-1.9-16" fill="#bec0c6"/><path d="m16.2 28.9c-1.3-7-4.3-10.8-4.1-14.7.1-1.7 2-3.7 2-6.7 0-4.6-3.6-6.4-6.3-5.2 0 0-.9 2.4-.9 5.2 0 4.3 2.2 6.9 2.2 6.9-6.7 16.6-5.4 27.1-2.6 29.3 2 1.5 7.3 1.9 9.1.1 1.2-1.3 2.6-3.9.6-14.9" fill="#e8ecef"/><g fill="#c9150d"><path d="m6.5 12.7h6.1c-.2.5-.4 2.1-.4 2.5h-5.3c0-.3-.2-1.9-.4-2.5"/><path d="m6.4 17.8h6.3c.3.8.5 1.6.9 2.5h-8.1c.4-.9.6-1.8.9-2.5"/></g><path d="m24.4 28.9c1.3-7 4.3-10.8 4.1-14.7-.1-1.7-2-3.7-2-6.7 0-7.4 8.8-7.1 8.7 0 0 3-1.7 5-1.8 6.8-.2 3.8 2.6 7.7 3.8 14.7 2 10.9.5 14.2-.1 14.8-2.1 2.3-8.3 3-10.8 1.1-3.6-2.6-3.1-10.1-1.9-16" fill="#bec0c6"/><path d="m37.8 28.9c-1.3-7-4.3-10.8-4.1-14.7.1-1.7 2-3.7 2-6.7 0-4.6-3.6-6.4-6.3-5.2 0 0-.9 2.4-.9 5.2 0 4.3 2.2 6.9 2.2 6.9-6.7 16.5-5.4 27-2.6 29.2 2 1.5 7.3 1.9 9.1.1 1.1-1.2 2.6-3.8.6-14.8" fill="#e8ecef"/><g fill="#c9150d"><path d="m28 12.7h6.1c-.2.5-.4 2.1-.4 2.5h-5.3c.1-.3-.1-1.9-.4-2.5"/><path d="m27.9 17.8h6.3c.3.8.5 1.6.9 2.5h-8.1c.4-.9.6-1.8.9-2.5"/></g><path d="m12.7 32.6c1.5-7.9 4.9-12.3 4.6-16.7-.1-2-2.3-4.2-2.3-7.6 0-8.4 10-8.1 9.9 0 0 3.5-1.9 5.7-2 7.7-.2 4.3 2.9 8.7 4.4 16.7 2.3 12.4.5 16.1-.2 16.9-2.4 2.6-9.4 3.4-12.2 1.3-4.1-3.1-3.5-11.7-2.2-18.3" fill="#bec0c6"/><path d="m27.9 32.6c-1.4-7.9-4.9-12.3-4.6-16.7.1-2 2.3-4.2 2.3-7.6 0-5.3-4.1-7.2-7.2-5.9 0 0-1.1 2.8-1.1 5.9 0 4.9 2.5 7.9 2.5 7.9-7.6 18.8-6.2 30.7-2.9 33.2 2.2 1.8 8.4 2.2 10.3.1 1.3-1.5 3-4.5.7-16.9" fill="#e8ecef"/><g fill="#c9150d"><path d="m16.8 14.2h6.9c-.3.6-.5 2.4-.5 2.8h-6c.1-.4-.1-2.2-.4-2.8"/><path d="m16.7 19.9h7.2c.3.9.6 1.8 1 2.8h-9.2c.5-1 .7-1.9 1-2.8"/></g><circle cx="42.2" cy="42.2" r="19.8" fill="#4d4d4d"/><g fill="#231f20"><circle cx="41.7" cy="44.5" r="3.5"/><circle cx="32.3" cy="34.9" r="3"/><circle cx="44.7" cy="30.3" r="3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b4.svg b/riot/emojione/svg/1f3b4.svg new file mode 100644 index 0000000..9618a3c --- /dev/null +++ b/riot/emojione/svg/1f3b4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M52.6,0H11.4C9,0,7,1.8,7,4.1v55.8c0,2.3,2,4.1,4.4,4.1h41.2c2.4,0,4.4-1.8,4.4-4.1V4.1C57,1.8,55,0,52.6,0z" fill="#333"/><path d="M51.3,2H12.7C10.4,2,9,3.7,9,5.8V34l46,24.3V6C55,3.9,53.6,2,51.3,2z" fill="#b70000"/><circle cx="25" cy="19" r="13" fill="#fff"/><path d="M55.4,58.2H8.6V34C32.6,34,55.4,44.2,55.4,58.2z" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b5.svg b/riot/emojione/svg/1f3b5.svg new file mode 100644 index 0000000..7ce21dd --- /dev/null +++ b/riot/emojione/svg/1f3b5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m25.4 2v36.7c-1.2-.4-3.7-.6-5.2-.6-13.6 0-13.6 16.6 0 16.6 5.9 0 11.7-3.7 11.7-8.3v-20.6l15.5 5.2v15c-1.2-.4-3.7-.6-5.2-.6-13.6 0-13.6 16.6 0 16.6 5.9 0 11.7-3.7 11.7-8.3v-33.1-5.2-4l-28.5-9.4m22 21.5l-15.5-5.3v-6.3l15.5 5.4v6.2" fill="#4d5357"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b6.svg b/riot/emojione/svg/1f3b6.svg new file mode 100644 index 0000000..9c0b8a8 --- /dev/null +++ b/riot/emojione/svg/1f3b6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m17.6 30.5v-16.9c0 0 8.2 3.9 3.8 12.6-.1.3 1.1.6 1.3.3 9-15.4-2.9-14.3-5-24.6h-4.4v23.5c-.8-.3-2.3-.4-3.3-.4-10.7.1-10.7 11 0 11 3.9 0 7.6-2.4 7.6-5.5"/><path d="m53.6 2h-4.4v23.5c-.8-.3-2.3-.4-3.3-.4-10.6 0-10.6 10.9.1 10.9 3.9 0 7.6-2.4 7.6-5.5v-16.9c0 0 8.2 3.9 3.8 12.6-.1.3 1.1.6 1.3.3 9-15.3-2.9-14.2-5.1-24.5"/><path d="m26.3 28v23.5c-.8-.3-2.3-.4-3.3-.4-10.7 0-10.7 10.9 0 10.9 3.9 0 7.6-2.4 7.6-5.5v-16.9c0 0 8.2 3.9 3.8 12.6-.1.3 1.1.6 1.3.3 9-15.4-2.9-14.3-5-24.6h-4.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b7.svg b/riot/emojione/svg/1f3b7.svg new file mode 100644 index 0000000..a3bf5ca --- /dev/null +++ b/riot/emojione/svg/1f3b7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 10c0 0-.1-1.9 1.8-2.7 0 0 .2 2.1-1.8 2.7" fill="#333"/><path d="m53.9 7.4c-1.5-1-3.5-2.3-4.4-3-1.6-1.2-6.3-4.7-8.2-.4-1 2.3-2.7 7.1-3.5 9.4-5 14.6-11.9 33.6-14.1 29.1-3.4-7.2 10.5-15.3 5-21.9l-25.6 9c0 0 6.3 2.8 3.5 7.8-16.3 28.9 24.2 39.3 32.5-7.2 2.7-14.8 4.6-23.9 6.5-23.9 1.9 0 5.6 2.7 6.9 3.6 1.3-1.1 1.4-2.1 1.4-2.5" fill="#ffce31"/><path d="m39.8 8.7c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.4-1.1 0-2.3-.9-2.6" fill="#333"/><path d="m38.9 7.8c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.4-1.1 0-2.3-.9-2.6" fill="#f2b200"/><path d="m38.4 13.8c-.9-.3-2 .3-2.5 1.5s0 2.3.9 2.6c.9.3 2-.3 2.5-1.5.4-1.1 0-2.3-.9-2.6" fill="#333"/><path d="m37.5 12.9c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.4-1.1 0-2.3-.9-2.6" fill="#f2b200"/><path d="m33.8 27.7c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.4-1.2 0-2.3-.9-2.6" fill="#333"/><path d="m32.8 26.8c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.5-1.1.1-2.3-.9-2.6" fill="#f2b200"/><path d="m31.4 33c-.9-.3-2 .3-2.5 1.5s0 2.3.9 2.6c.9.3 2-.3 2.5-1.5.5-1.2.1-2.3-.9-2.6" fill="#333"/><path d="m30.5 32.1c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.4-1.2 0-2.3-.9-2.6" fill="#f2b200"/><path d="m29.1 38c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.4-1.1 0-2.3-.9-2.6" fill="#333"/><g fill="#f2b200"><path d="m28.2 37.2c-.9-.3-2 .3-2.5 1.5-.4 1.1 0 2.3.9 2.6.9.3 2-.3 2.5-1.5.4-1.2 0-2.3-.9-2.6"/><path d="m54.2 7.3c0 1.2-.7 2.3-1.8 2.7.3.5 1.9 3 4.3 3.7 0 0 1.6-1.7 3.9-.9.4.1 1.8.8 1.3.1-3.9-4.5-7.7-5.6-7.7-5.6"/><path d="m28.7 20.6c.9 2-4.3 5.5-11.7 7.7-7.4 2.2-14 2.4-14.9.3-.9-2 4.3-5.5 11.7-7.7s14-2.4 14.9-.3"/></g><path d="m27.4 20.8c.7 1.7-4.1 4.7-10.8 6.7-6.7 2-12.7 2.3-13.5.7-.7-1.7 4.1-4.7 10.8-6.7 6.8-2 12.8-2.4 13.5-.7" fill="#333"/><g fill="none" stroke-linecap="round" stroke-width="2" stroke-miterlimit="10"><path d="m43.5 11.3c-1.3 6.6-4.2 37.7-16.1 45.2" stroke="#ce9915"/><path d="M42.5,9.4C41.2,16,37.3,49,25.4,56.5" stroke="#e2af23"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b8.svg b/riot/emojione/svg/1f3b8.svg new file mode 100644 index 0000000..e31145b --- /dev/null +++ b/riot/emojione/svg/1f3b8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29 31.4c.3.3.6.6.9.9.1.1.1.1.2.2 0 0 0 .1-.1.1-.7 1-1.7 2.6-1.5 4.6.2 2 .7 3.4 1.6 4.4.7.7 1.5 1 2.2 1.1-.1 0-.2.1-.3.1-1.8.7-4.2 1.7-5.1 4.5-.3 1-.5 2.2-.7 3.4-.4 2.4-.9 5.1-2.3 6.5-2 2-4.4 2.9-7.1 2.5-2.6-.4-5.5-1.9-7.9-4.4-2.5-2.5-4-5.3-4.4-7.9-.4-2.7.5-5.1 2.5-7.1 1.4-1.4 3.4-2.1 6.6-2.3 5.9-.4 7.3-3.9 8.2-6.1.7-1.8.9-2.4 2.7-2.5 1.7-.3 3 .5 4.5 2m1.5-1.6c-1.6-1.6-3.5-3.1-6.4-2.8-6.7.5-2.3 8.1-10.8 8.7-3.1.2-5.9.9-8 3-5.4 5.3-3.7 12.6 1.9 18.1 5.6 5.6 12.9 7.3 18.2 1.9 2.7-2.7 2.7-7.7 3.6-10.8 1.2-3.9 7.5-2.6 7.2-6.9 0-.4-.1-.7-.3-.8-.8-.8-3 1.1-4.3-.2-.5-.5-.8-1.4-1-3-.2-2.4 2.8-4.2 1.7-5.3-.6-.6-1.2-1.2-1.8-1.9z" fill="#e27c17"/><path d="m26.1 50.7c.2-1.2.4-2.3.7-3.4.9-2.8 3.3-3.8 5.1-4.5.1 0 .2-.1.3-.1-.7-.1-1.5-.4-2.2-1.1-.9-.9-1.4-2.3-1.6-4.4-.2-2 .9-3.5 1.5-4.6 0 0 0-.1.1-.1-.1-.1-.1-.1-.2-.2-.3-.3-.6-.6-.9-.9-1.5-1.5-2.7-2.3-4.7-2.2-1.7.1-2 .7-2.7 2.5-.9 2.3-2.2 5.7-8.2 6.1-3.2.2-5.2.9-6.6 2.3-2 2-2.9 4.4-2.5 7.1.4 2.6 1.9 5.5 4.4 7.9 2.5 2.5 5.3 4 7.9 4.4 2.7.4 5.1-.5 7.1-2.5 1.6-1.3 2.1-4 2.5-6.3" fill="#ff9d27"/><g fill="#3e4347"><path transform="matrix(.7069-.7073.7073.7069-21.7706 28.4867)" d="m21.8 37h3.5v7h-3.5z"/><path transform="matrix(.7072-.707.707.7072-26.5526 26.4877)" d="m17 41.8h3.5v7h-3.5z"/><path transform="matrix(.7072-.707.707.7072-30.6637 24.8381)" d="m13.7 46.7h2v5.5h-2z"/><path d="m28.8 39.7l-4.5-4.5 25.5-24.1 3.1 3.1z"/><circle cx="22.6" cy="53.7" r="2.3"/><circle cx="17.1" cy="56.5" r="1.8"/><path d="m52.6 19.2c-.7.7-1 1.3-.5 1.9.6.6 1.2.2 1.9-.5.7-.7 1-1.3.5-1.9-.5-.5-1.2-.1-1.9.5"/><path transform="matrix(.7071-.7071.7071.7071 1.9549 42.5188)" d="m51.8 17.8h1v2.2h-1z"/><path d="m56.1 15.8c-.7.7-1 1.3-.5 1.9.6.6 1.2.2 1.9-.5.7-.7 1-1.3.5-1.9-.6-.5-1.3-.1-1.9.5"/><path transform="matrix(.7071-.7071.7071.7071 5.3958 43.944)" d="m55.3 14.4h1v2.2h-1z"/><path d="m59.5 12.4c-.7.7-1 1.3-.5 1.9.6.6 1.2.2 1.9-.5.7-.7 1-1.3.5-1.9-.6-.6-1.2-.2-1.9.5"/><path transform="matrix(.7071-.7071.7071.7071 8.8357 45.3696)" d="m58.7 10.9h1v2.2h-1z"/><path d="m44.8 11.4c-.7.7-1.3 1-1.9.5-.6-.6-.2-1.2.5-1.9.7-.7 1.3-1 1.9-.5.5.5.1 1.2-.5 1.9"/><path transform="matrix(.708-.7062.7062.708 4.9065 35.2665)" d="m44.6 10.6h1v2.2h-1z"/><path d="m48.2 7.9c-.7.7-1.3 1-1.9.5-.6-.6-.2-1.2.5-1.9.7-.7 1.3-1 1.9-.5.5.6.1 1.3-.5 1.9"/><path transform="matrix(.7073-.7069.7069.7073 8.3722 36.7323)" d="m48.1 7.2h1v2.2h-1z"/><path d="m51.6 4.5c-.7.7-1.3 1.1-1.9.5-.6-.6-.2-1.2.5-1.9.7-.7 1.3-1.1 1.9-.5.6.6.2 1.2-.5 1.9"/><path transform="matrix(.7071-.7071.7071.7071 11.8187 38.1681)" d="m51.5 3.7h1v2.2h-1z"/><path d="m54.8 15.9c-5.4 5.4-6.9 6.8-10.2 3.5-3.3-3.3-1.9-4.8 3.5-10.2 7.2-7.2 7.1-9.3 11.6-4.9 4.4 4.5 2.3 4.4-4.9 11.6"/></g><g fill="#8a959b"><circle cx="53.8" cy="6.6" r="1.3"/><circle cx="50.3" cy="10.1" r="1.3"/><circle cx="46.9" cy="13.5" r="1.3"/><circle cx="57.4" cy="10.2" r="1.3"/><path d="m54.9 14.6c-.5.5-1.3.5-1.8 0-.5-.5-.5-1.3 0-1.8.5-.5 1.3-.5 1.8 0 .5.5.5 1.3 0 1.8"/><circle cx="50.5" cy="17.1" r="1.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3b9.svg b/riot/emojione/svg/1f3b9.svg new file mode 100644 index 0000000..4605d3f --- /dev/null +++ b/riot/emojione/svg/1f3b9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c5d4d8"><path d="m40.1 46.8c-2.1 3.8-4.1 7.9-6 12.1 4.1 1.4 8.2 2.4 12.2 3.1.5-3.7 1.3-7.3 2.2-10.6 1-3.5 2.2-6.7 3.5-9.9-1.9-1.6-3.8-3.4-5.7-5.3-2.1 3.4-4.2 6.9-6.2 10.6"/><path d="m60.8 16.9c-2.7 3-5.2 6.1-7.6 9.3-2.3 3.1-4.6 6.3-6.7 9.7 2 1.9 3.9 3.6 5.7 5.3 1.4-3.1 2.9-6.1 4.6-8.9 1.6-2.7 3.4-5.3 5.3-7.7-.5-2.6-.9-5.2-1.3-7.7"/></g><g fill="#eae7e4"><path d="m2 19.1c15.2 31.5 32.1 39.8 32.1 39.8 2-4.3 4-8.3 6-12.1 2-3.7 4-7.2 6.2-10.6-7.9-7.5-16.7-16.6-25.7-25.6-3.6 1.6-7.1 3.3-10.7 4.9-2.7 1.2-5.3 2.4-7.9 3.6"/><path d="m39.5 2c-2.6 1.2-5.2 2.3-7.8 3.5-3.6 1.6-7.1 3.3-10.7 4.9 9 8.9 17.7 18 25.5 25.5 2.1-3.4 4.4-6.6 6.7-9.7 2.4-3.2 5-6.3 7.6-9.3l-21.3-14.9"/></g><g fill="#333"><path d="m40.1 46.9c.1-.1.1-.2.2-.3-10.3-8.9-20-20.6-30.2-31.1-.1 0-.2.1-.3.1 10.2 10.6 19.9 22.4 30.3 31.3"/><path d="m48.6 51.2c0 .1-.1.2-.1.3-2.8-1.3-5.6-2.8-8.5-4.6.1-.1.1-.2.2-.3 2.9 1.8 5.7 3.3 8.4 4.6"/><path d="m53.3 26.1c-.1.1-.1.2-.2.3-6.1-6.6-13.8-13.5-21.5-20.8.1 0 .2-.1.3-.1 7.7 7.2 15.3 14 21.4 20.6"/><path d="m56.7 32.5c0-.1.1-.2.1-.2-1.1-2-2.3-4.1-3.5-6.1-.1.1-.1.2-.2.3 1.2 1.9 2.4 4 3.6 6"/><path d="m52.2 41.2c0 .1-.1.2-.1.3-9.6-8.5-21-20.5-32.6-32 .1-.1.3-.1.4-.2 11.5 11.5 22.8 23.4 32.3 31.9"/></g><g fill="#231f20"><path d="m46.2 23.5c1.3-1.4 2.5-2.7 3.8-4.1-6.6-4.1-14.7-9.5-24-15l1.1 3.1c6.6 5.8 13.5 10.9 19.1 16"/><path d="M38.3,31.8C39.5,30.4,25,15,15.7,9.5l1.5,2.7C23.7,17.9,32,27.1,38.3,31.8z"/></g><path d="m50.6 18.9c-1.5 1.5-2.9 3.1-4.4 4.7-1.5-1.7-3.1-6.8-3.1-6.8l5.1-4.3c0-.2 1.1 4.7 2.4 6.4" fill="#55646d"/><path d="m43.1 16.7l5.1-4.3-16.5-10.3c0 0-3.8 1.5-5.6 2.3 5.4 4.6 17 12.3 17 12.3" fill="#333"/><path d="m29.5 42.4c1.4-1.8 5-5.3 5-5.3-2.3-2.1-6-7.6-6-7.6l-7.7 7.4c0 0 4.9 4.6 8.7 5.5" fill="#55646d"/><path d="m28.6 29.5l-7.7 7.4c0 0-11.7-13.4-15.6-22.8l5.6-3.1 17.7 18.5" fill="#333"/><path d="m42.4 27.8c-1.4 1.6-4.2 4.1-4.2 4.1s-4.4-3.4-6.5-5.5c1.7-1.5 6.9-5.8 6.9-5.8s2.1 5.3 3.8 7.2" fill="#55646d"/><path d="m31.7 26.4c1.7-1.5 6.9-5.8 6.9-5.8l-17.3-14.2-5.6 3.1c0 0 10.7 11.3 16 16.9" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ba.svg b/riot/emojione/svg/1f3ba.svg new file mode 100644 index 0000000..248ae7d --- /dev/null +++ b/riot/emojione/svg/1f3ba.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#f2b200"><path d="m14.1 45.6l1.8-1.8-10.1-9.9-1.8 1.8z"/><path d="m18.9 40.8l1.9-1.8-10.1-9.9-1.9 1.8z"/><path d="m13.7 26.2l10.1 9.8 1.8-1.7-10.1-9.9z"/><path d="m32.7 58.4l-13.8-13.5-3.7 3.6 13.9 13.5z"/><path d="m37.6 53.7l-13.9-13.6-3.6 3.6 13.8 13.5z"/><path d="M42.5 48.9 28.6 35.4 25 38.9 38.8 52.5z"/></g><g fill="#ffce31"><path d="m18.9 44.9l-8.8-8.6-3.6 3.6 8.7 8.6z"/><path d="m15 31.6l-3.6 3.6 8.7 8.5 3.6-3.6z"/><path d="m19.8 26.8l-3.6 3.6 8.8 8.5 3.6-3.5z"/><path d="M7.8 34 4.1 37.6 2 35.5 5.7 32z"/><path d="m12.6 29.3l-3.6 3.5-2.1-2 3.6-3.6z"/><path d="m17.5 24.5l-3.6 3.6-2.2-2.1 3.7-3.6z"/><path d="m39.3 48l-11.2 10.9c-3.8 3.7-9.9 3.7-13.7 0-3.8-3.7-3.8-9.7 0-13.4l11.2-10.9c3.8-3.7 9.9-3.7 13.7 0s3.8 9.7 0 13.4m-21.8.6c-2 2-2 5.3 0 7.3 2 2 5.4 2 7.4 0l11.2-10.9c2-2 2-5.3 0-7.3-2-2-5.4-2-7.4 0l-11.2 10.9"/><path d="m26.3 32.7c-7.7 7.6-15.3 15-17.9 17.5-1.7 1.7-1.7 3.2-1.7 3.2l2.7 2.6c0 0 1.5.1 3.2-1.6 2.6-2.5 10.2-10 17.9-17.5 10.2-10 30.7-3.4 30.7-3.4l-31.4-30.5c0 0 6.7 19.7-3.5 29.7"/></g><g fill="#f2b200"><path d="M9.2,54.1c0,0,1.8,0.3,3.5-1.4c2.6-2.5,10.4-9.7,18.2-17.3c10.2-10,30.3-3.5,30.3-3.5S45,19.1,30.4,33.3 + C18.5,45,9.2,54.1,9.2,54.1z"/><path d="m3.5 55l4.3 4.2c1.7-1.8 1.6-3.2 1.6-3.2l-2.7-2.6c0 0-1.5-.1-3.2 1.6"/><path d="m30.1 2.3c-1.9 1.9 3.6 10.3 12.3 18.8 8.7 8.5 17.3 13.9 19.2 12 1.9-1.9-4.3-9.6-13-18.1-8.7-8.4-16.5-14.5-18.5-12.7"/></g><path d="m43 20.5c7.8 7.6 15.5 12.6 17.1 11 1.6-1.6-4.2-8.3-12-16-7.9-7.5-14.8-13.2-16.4-11.6-1.6 1.5 3.5 9 11.3 16.6" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3bb.svg b/riot/emojione/svg/1f3bb.svg new file mode 100644 index 0000000..3e9cf6e --- /dev/null +++ b/riot/emojione/svg/1f3bb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m26.7 56.4c.3-2.8 1.6-3.6 2.6-3.8 3.3-.5 2.6-1.6 1.9-1.9-3.8-1.9-.8-5.9-.1-6.8 2.4-3.2 6.3-1 6.3-1-.3-4.6 3.5-4.4 5.5-5.5 8.9-4.9 1.3-12.3-1.4-14.9-2.6-2.6-10-10.2-14.9-1.4-1.1 1.9-.8 5.8-5.5 5.5 0 0 2.2 4-1 6.3-.9.7-4.9 3.7-6.8-.1-.3-.7-1.4-1.4-1.9 1.9-.1.9-.9 2.4-3.8 2.6-6.7.5-8.4 9.9.4 18.7 9 9 18.1 6.9 18.7.4" fill="#de7f11"/><g fill="#333"><path d="M30.5 37.4 26.6 33.5 54 8 56 10z"/><path transform="matrix(.7073-.7069.7069.7073 11.0519 44.7558)" d="m59 6.7h1.2v4.6h-1.2z"/><path transform="matrix(.7072-.707.707.7072 12.0094 40.4338)" d="m54.2 3.8h1.2v3.9h-1.2z"/><path d="m53.4 6.2l-.9-1.8 1-1 1.8.8z"/><path transform="matrix(.7072-.707.707.7072 9.3326 43.685)" d="m56.8 8.3h1.2v4.6h-1.2z"/><path d="m59 10.2l.8 1.8-.9 1-1.9-.8z"/><path transform="matrix(.7072-.707.707.7072 9.7062 39.2416)" d="m51.6 5.6h1.2v4.6h-1.2z"/></g><path fill="#b3660d" d="M60.6 6.9 57.1 3.4 59 2 62 5z"/><path fill="#de7f11" d="m55.5 11.4l2.7-4.1 1.3-.2 2.5-3.8-1.3-1.3-3.8 2.5-.2 1.3-4.1 2.7z"/><g fill="#333"><path d="m24.2 35.3c.1-.3.2-.8-.2-1.2-2.7-2.7-7 6.3-8.8 4.5-.4-.4-.3-.7-.2-.9.2 0 .4 0 .6-.2.3-.3.3-.8 0-1-.3-.3-.8-.3-1 0-.2.2-.3.6-.1.9-.2.3-.6 1.1.1 1.8 2.5 2.5 7.2-6.1 8.8-4.5.1.1.1.3.1.4-.2 0-.3.1-.5.2-.3.3-.3.8 0 1 .3.3.8.3 1 0 .5-.3.5-.7.2-1"/><path d="m28.7 39.8c.3-.1.8-.2 1.2.2 2.7 2.7-6.3 7-4.5 8.8.4.4.7.3.9.2 0-.2 0-.4.2-.6.3-.3.8-.3 1 0 .3.3.3.8 0 1-.2.2-.6.3-.9.1-.3.2-1.1.6-1.8-.1-2.5-2.5 6.1-7.2 4.5-8.9-.1-.1-.3-.1-.4-.1 0 .2-.1.3-.2.5-.3.3-.8.3-1 0-.3-.3-.3-.8 0-1 .3-.3.8-.3 1-.1"/><path d="m16 42.9c0 0-1.3 2.1-1.5 2.9-.3.7-.3 2.2-.6 2.8-1.1 2-6.6 6.6-6.6 6.6l1.6 1.6c0 0 4.6-5.5 6.6-6.6.6-.4 2.2-.4 2.8-.7.8-.3 2.9-1.5 2.9-1.5l-5.2-5.1"/><path transform="matrix(.7062-.708.708.7062-21.1557 26.8091)" d="m13.9 38.6h15.7v.5h-15.7z"/><path transform="matrix(.7062-.708.708.7062-22.5582 30.2004)" d="m17.3 42h15.7v.5h-15.7z"/><path transform="matrix(.7071-.7071.7071.7071-22.0751 29.0115)" d="m16.2 40.9h15.7v.5h-15.7z"/><path transform="matrix(.7071-.7071.7071.7071-21.607 27.8836)" d="m15 39.8h15.7v.5h-15.7z"/></g><path transform="matrix(.7071-.7071.7071.7071-15.5515 31.0479)" fill="#b3660d" d="m29 1.4h1.5v65.8h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-18.0181 30.0266)" fill="#e2d8c7" d="m26.5 3.9h1.5v65.8h-1.5z"/><g fill="#333"><path d="m5.5 16.1l-3.5-3.5 5-2.1 2 2.1z"/><path d="m47.9 58.5l3.5 3.5 2.1-5-2.1-2z"/><path transform="matrix(.7071-.7071.7071.7071-26.7496 51.1074)" d="m47.6 54.8h1.5v6.1h-1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3bc.svg b/riot/emojione/svg/1f3bc.svg new file mode 100644 index 0000000..c074024 --- /dev/null +++ b/riot/emojione/svg/1f3bc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 21.3c0-.6 0-1.3 0-1.9-18.5-7.8-37 4.7-55.5 3.6 0-2.1 0-5.1 0-7.4 18.5-.9 35.4-16.1 55.5-10.2-.1-.6.1-1.3 0-1.9-20.2-6.6-37.1 9.9-55.5 10.9-6.1.6-5.6.5-8.5.9 0 11 0 22 0 33l8.5.9c0 0 0 0 0 0 17.3 5.8 39.7-2.3 55.5 10.6.1-.6-.1-1.3 0-1.9-15.8-13.7-38.2-3.9-55.5-10 0-1.5 0-4.3 0-5.7 18.5 3.3 37-8 55.4 2 0-.6 0-1.3 0-1.9-18.4-10.9-36.9 2-55.4-1.3 0-2 0-5 0-7.3 18.5 3.1 37-13.2 55.4-.9 0-.6 0-1.3 0-1.9-18.5-12.1-37 4.3-55.4 1.4 0-2.4 0-4.9 0-7.6 18.5 1.5 37-12.3 55.5-3.4" fill="#bacad3"/><path d="m40.7 41.9c5.4-2.4 9-8.6 7-14.2-1.4-5.2-8.5-7.4-13.2-4.7-.3-1.1-.7-2.3-1-3.4 0-.2-.1-.3-.1-.5-.1-.2.9-1.1 1.1-1.3 1-1.2 2-2.4 2.8-3.6 1.5-2.2 3-4.8 2.5-7.5-.4-2.5-2.4-4.6-5.2-4.7-2.4-.1-4.7 1.3-5.9 3.2-1.4 2.2-1.1 4.5-.4 6.9.5 1.4.9 2.9 1.3 4.4.2.5.3 1.1.5 1.6 0 .1.1.5.2.5-.3.5-1 1.1-1.4 1.5-1.7 1.7-3.6 3.4-4.7 5.5-1.1 2-1.6 4.3-1.4 6.6.4 4.5 3.6 8.6 8.1 10.2 2.1.8 4.4.9 6.6.6.8 2.5 1.4 5 2.2 7.5.7 2.1 2.2 4.7 1.5 7-.6 2-2.9 3.3-5.1 3 2.6-.8 3.8-3.6 2.3-5.8-1.3-1.8-4.1-2.3-5.9-1-3.8 2.8-.2 7.6 3.5 8.3 2.4.4 4.9-.6 6.4-2.4 1.6-2.1 1.4-4.3.8-6.7-.7-2.6-1.5-5.2-2.2-7.8-.2-.6-.3-1.1-.5-1.7-.1-.3-.2-.6-.3-.9-.1-.5.1-.4.5-.6m4.3-13.2c1.3 4.4-1.3 9.2-5.7 11-1.1-3.7-2.2-7.4-3.3-11.1-.3-.9-.5-1.8-.8-2.7-.2-.7-.5-.9.2-1.3 4-1.8 8.5.3 9.6 4.1m-13.2-23c.9-.8 2.5-1.4 3.7-.9 1.2.6 1.7 2 1.6 3.2-.1 3.1-2.7 5.8-4.7 8.1-.4-1.5-.9-3-1.3-4.6-.6-2-1.2-4.2.7-5.8m.4 19.1c.2.4-.6 1.2-.8 1.6-.3.6-.5 1.2-.7 1.9-.3 1.3-.2 2.7.2 4 .1.4.7.5 1 .1.2-.4-.1-1.3-.1-1.8 0-1.3.3-2.5 1.1-3.6 1.3 4.5 2.6 8.9 3.9 13.4-4.3.6-8.6-1.8-10.4-5.5-1.1-2.3-1.2-5-.1-7.3 1.1-2.4 3.2-4.2 5-6 .2 1 .4 2.1.9 3.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3bd.svg b/riot/emojione/svg/1f3bd.svg new file mode 100644 index 0000000..b612348 --- /dev/null +++ b/riot/emojione/svg/1f3bd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.4 4.7c-.2-1.6-.4-3.2-.4-4.7h-3.9c.1.5.1 1 .1 1.6 0 6.5-5.9 11.8-13.2 11.8-7.3 0-13.2-5.3-13.2-11.8 0-.5 0-1.1.1-1.6h-3.9c0 1.5-.2 3.1-.4 4.7-1.7 9.7-4.1 17.6-10.7 19.5 0 0 2.8 4.5 2.8 12.3 0 13.5-2.8 27.5-2.8 27.5h56.2c0 0-3.5-14-3.5-27.9 0-7.4 3.5-11.9 3.5-11.9-6.5-1.9-9-9.8-10.7-19.5" fill="#6adbc6"/><path d="m32 13.4c7.3 0 13.2-5.3 13.2-11.8 0-.5 0-1.1-.1-1.6-3.6 1.6-7 3.7-13.1 3.7-6.2 0-9.4-2-13.1-3.7-.1.5-.1 1-.1 1.6 0 6.5 5.9 11.8 13.2 11.8" fill="#428bc1"/><path d="m5.4 54.8c-.8 6-1.5 9.2-1.5 9.2h8.3l42.9-43.1c-2.2-2.6-3.5-6.3-4.6-10.6l-45.1 44.5" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3be.svg b/riot/emojione/svg/1f3be.svg new file mode 100644 index 0000000..25ead51 --- /dev/null +++ b/riot/emojione/svg/1f3be.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="13" cy="13" r="11" fill="#c7e755"/><g fill="#fff"><path d="m10.6 15.4c-2.3-2.4-5.5-3.5-8.6-3.3 0 .4 0 .8 0 1.2 2.8-.2 5.6.8 7.7 3 2.1 2.1 3.1 5 3 7.7.4 0 .8 0 1.2 0 .2-3.1-.9-6.3-3.3-8.6"/><path d="m24 12.7c-2.8.1-5.6-.8-7.7-3-2.1-2.1-3.1-5-3-7.7-.4 0-.8 0-1.2 0-.1 3.1 1 6.2 3.3 8.6 2.4 2.4 5.5 3.5 8.6 3.3 0-.4 0-.8 0-1.2"/></g><path d="m52.8 34.8l1-1-2.3-2.3 4-4 1.5 1.5 1-1-1.5-1.5 3.8-3.8-1-1-3.8 3.8-3.2-3.2 4-4 3.1 3.1 1-1-3.1-3.1 2.5-2.5-1-1-2.5 2.5-3.1-3.3 3.5-3.5-1-1-3.5 3.5-3.2-3.2 2.5-2.5-1-1-2.5 2.5-3.1-3.1-1 1 3.1 3.1-4 4-3.2-3.2 3.8-3.8-1-1-3.8 3.8-1.5-1.5-1 1 1.5 1.5-4 4-2.3-2.3-1 1 2.3 2.3-4 4-1.5-1.5-1 1 1.5 1.5-3.8 3.8 1 1 3.8-3.8 3.2 3.2-4 4-3.1-3.1-1 1 3.1 3.1-2.5 2.5 1 1 2.5-2.5 3.2 3.2-3.5 3.5 1 1 3.5-3.5 3.2 3.2-2.5 2.5 1 1 2.5-2.5 3.1 3.1 1-1-3.1-3.1 4-4 3.2 3.2-3.8 3.8 1 1 3.7-3.8 1.5 1.5 1-1-1.5-1.5 4-4 2.3 2.4m1.7-8.3l-4 4-3.2-3.2 4-4 3.2 3.2m-13.2 4.8l-3.2-3.2 4-4 3.2 3.2-4 4m-3.4-11.4l3.2 3.2-4 4-3.2-3.2 4-4m5-5l3.2 3.2-4 4-3.2-3.2 4-4m.2 8.2l4-4 3.2 3.2-4 4-3.2-3.2m12.2-5.8l-4 4-3.2-3.2 4-4 3.2 3.2m-7.4-7.4l3.2 3.2-4 4-3.1-3.3 3.9-3.9m-9.2.8l3.2 3.2-4 4-3.2-3.2 4-4m-9 9l4-4 3.2 3.2-4 4-3.2-3.2m-.8 9.2l4-4 3.2 3.2-4 4-3.2-3.2m7.3 7.4l-3.2-3.2 4-4 3.2 3.2-4 4m9.3-.8l-3.2-3.2 4-4 3.2 3.2-4 4" fill="#d0d0d0"/><g fill="#ff717f"><path d="m57.7 7.5c-6.8-6.8-19.4-5.4-28 3.2-8.6 8.6-10 21.1-3.2 28 6.9 6.8 19.4 5.4 28-3.2 8.6-8.6 10-21.1 3.2-28m-28.7 28.7c-5.8-5.8-4.6-16.3 2.7-23.6 7.3-7.3 17.8-8.5 23.6-2.7 5.8 5.8 4.6 16.3-2.7 23.6-7.3 7.3-17.9 8.5-23.6 2.7"/><path d="m38.1 42.9c.7 0-5.8-2.3-5.8-2.3s-8.2 3.7-9.8 2.1c-1.6-1.6 2.1-9.8 2.1-9.8s-2.3-6.5-2.4-5.8c-.4 6.5-1.4 12.9-4.5 16.5-.4.5-1 1-1 1l1.9 1.9 1.9 1.9c0 0 .5-.6 1-1 3.7-3 10.1-4.1 16.6-4.5"/></g><g fill="#4d4f59"><path transform="matrix(.7071-.7071.7071.7071-33.2398 24.3359)" d="m3.1 48.9h19.3v6.9h-19.3z"/><path d="m10 50.2l3.4 6.3 2.1-2.1-3.4-6.4z"/><path d="m5.7 54.5l3.4 6.4 2.1-2.2-3.4-6.3z"/></g><g fill="#5f606c"><path d="m3.5 56.7l4.8 4.9.8-.7-3.4-6.4z"/><path d="m7.8 52.4l3.4 6.3 2.2-2.2-3.4-6.3z"/><path d="m17.2 43l-.7.7 3.3 6.4 2.2-2.2z"/></g><path fill="#4d4f59" d="m14.3 45.9l3.4 6.3 2.1-2.1-3.3-6.4z"/><path fill="#5f606c" d="m12.1 48l3.4 6.4 2.2-2.2-3.4-6.3z"/><g fill="#4d4f59"><path transform="matrix(.7072-.707.707.7072-39.2943 21.8214)" d="m5.6 54.3h2.2v8.1h-2.2z"/><path transform="matrix(.7073-.7069.7069.7073-27.18 26.8327)" d="m17.7 42.2h2.2v8.1h-2.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3bf.svg b/riot/emojione/svg/1f3bf.svg new file mode 100644 index 0000000..c18b670 --- /dev/null +++ b/riot/emojione/svg/1f3bf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.4 33.4c-.5-.5-2.4.2-3-.3-1-.7-.8-4-1.9-4.3-8.3-2.6-23.4 13.9-27.1 21.8-.5 1-.7 4.2.2 4.7l3.2-1.8-.5-.9 9.7-5.6.5.9 7.3-4.2-1.3-2.2 9.7-5.6 1.3 2.2 2-1.2c.4-.9.5-2.9-.1-3.5" fill="#287700"/><g fill="#3e4347"><path transform="matrix(.866-.5001.5001.866-21.5498 19.9433)" d="m20.8 49.6h11.3v1.1h-11.3z"/><path transform="matrix(.8662-.4997.4997.8662-14.076 26.8337)" d="m37.4 38.4h11.3v2.6h-11.3z"/></g><path d="m44.7 24.5c-2-2.6-4.8-5-6.9-5.3-4.1-.6-13.1 5.3-13.7 9.5-.6 4.2-4.5 9.9-6.8 14.2l7.8 7.2c3.9-3.2 8.3-8.2 11-10.1 1.6-1.1 5.1-2.3 6.8-3.6-.4-4-.2-8.6 1.8-11.9" fill="#79c600"/><g fill="#b6ef00"><path d="m16.5 44.4c-1.4 3-1.9 5.3-.8 6.6.8 1 3.4 2.1 4.7 1.8 1.4-.4 3-1.5 4.7-2.9l-7.8-7.2c-.3.6-.6 1.2-.8 1.7"/><path d="m47.1 29.3c-.2-1.3-1.2-3.1-2.5-4.8-2 3.4-2.1 7.9-1.7 11.7.2-.1.3-.2.4-.4 1.4-1.3 4.1-4.7 3.8-6.5"/><path d="m26.5 2.4c-2.1 11.2-9.5 10.7-9.5 10.7-2.1 1.1-4.9 2.1-4.9 3.7 0 1.6 9.1 12.5 11.2 13.7 1.4.8 12.1-1.3 13.7-2.9 1.6-1.5 2.7-6.3 2.4-8.5-.3-1.6-10.6-14.5-12.9-16.7"/></g><g fill="#3e4347"><path d="m26.1 2.1c-.5-.1-1.1 0-1.8.2-1.3.5-2.8 1.5-3.3 2.3-.7 1.1-.8 2.7-1.1 4.3-.2 1-.4 2-.9 2.7-.4.5-1.1 1-1.9 1.5 0 0 7.4.6 9.5-10.7-.3-.2-.4-.3-.5-.3"/><circle cx="34" cy="24.6" r="2.6"/><path d="m17 25.6l3.1 3.6 7.5-6-3-3.6z"/><path d="m12.5 20.3l3.1 3.6 7.4-6-2.9-3.6z"/></g><path d="m23.8 13.5l.8 1.1-2.5 2-.8-1.1 2.5-2m.1-1.1l-3.7 2.9 1.8 2.3 3.7-2.9-1.8-2.3z" fill="#287700"/><path d="m22.4 13.4l2.1 2.6-3.2 2.6-2.2-2.6 3.3-2.6m.1-1.1l-4.5 3.5 3.1 3.9 4.5-3.6-3.1-3.8z" fill="#60aa00"/><path d="m28.3 18.8l.8 1.1-2.5 2-.8-1.1 2.5-2m.1-1.1l-3.7 2.9 1.8 2.3 3.7-2.9-1.8-2.3z" fill="#287700"/><path d="m26.8 18.7l2.1 2.6-3.2 2.6-2.1-2.6 3.2-2.6m.2-1.1l-4.5 3.6 3.1 3.9 4.5-3.6-3.1-3.9z" fill="#60aa00"/><path fill="#287700" d="m19.5 36.5l7.5 5.1 2.2-3.3-7.4-5.2z"/><path d="m30 40.4l-.8 1.1-2.6-1.8.8-1.1 2.6 1.8m1.1-.2l-3.9-2.8-1.7 2.4 3.9 2.8 1.7-2.4z" fill="#b6ef00"/><path d="m29.7 39l-2 2.7-3.4-2.4 2-2.7 3.4 2.4m1.2-.2l-4.7-3.3-2.9 4 4.7 3.3 2.9-4z" fill="#3e4347"/><path fill="#287700" d="m16.2 41.5l6.8 4.6 1.9-3-6.6-4.6z"/><path d="m25.7 45.1l-.7 1-2.3-1.6.7-1 2.3 1.6m1-.2l-3.4-2.5-1.5 2.2 3.4 2.5 1.5-2.2z" fill="#b6ef00"/><path d="m25.4 43.8l-1.8 2.4-3-2.2 1.8-2.4 3 2.2m1-.2l-4.2-3-2.6 3.6 4.2 3 2.6-3.6z" fill="#3e4347"/><path d="m13.9 57.5c-4.5 2.6-8.2-.2-10.3-2.1.1.9.5 1.9 1 2.7 1.8 3.1 5.8 5.3 10.4 2.6 3.2-1.8 49-28.1 49-28.1v-3.8l-50.1 28.7" fill="#42ade2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c0.svg b/riot/emojione/svg/1f3c0.svg new file mode 100644 index 0000000..4c88cd0 --- /dev/null +++ b/riot/emojione/svg/1f3c0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d0d0d0"><path d="m42.2 62c-.2 0-.5-.1-.7-.2-.4-.3-.6-.7-.5-1.1 0-.1 2.5-10.8-12.3-22.5-.5-.4-.5-1.1-.1-1.5.4-.5 1.2-.5 1.6-.1 11.8 9.4 13.4 18.1 13.3 22.3 9.5-6.1 14.8-12.4 15.9-18.8.9-5.9-2.3-9.5-2.4-9.7-.4-.5-.3-1.1.1-1.5.5-.4 1.2-.3 1.6.1.2.2 4 4.5 2.9 11.3-1.2 7.4-7.5 14.7-19 21.6.1 0-.2.1-.4.1"/><path d="m31.8 62c-.3 0-.5-.1-.8-.3-.4-.3-.5-.8-.3-1.3.2-.4 4.4-9.3-6.9-21.2-.4-.5-.4-1.1.1-1.5.5-.4 1.2-.4 1.6.1 8.4 8.9 8.9 16.4 8.2 20.4 19.1-13.6 17.3-25 17.3-25.1-.1-.5.2-.9.6-1.2.5-.2 1-.1 1.4.2 12.8 13 4 20.9 4 21-.5.4-1.2.4-1.7 0-.4-.4-.4-1.1 0-1.5.3-.3 6.2-5.8-2.1-15.7-.6 4.9-4 14.9-20.9 25.9-.1.1-.3.2-.5.2"/><path d="m51.3 62c-.1 0-.2 0-.3 0-.6-.2-1-.8-.8-1.3.1-.4 2.9-10.2-10.2-21.5-1 3.5-4.2 11.1-13.5 18.5-.5.4-1.2.3-1.6-.1-.4-.5-.4-1.1.1-1.5 11.6-9.2 13.2-19 13.2-19.1.1-.4.3-.7.7-.9.4-.1.8-.1 1.2.2 16 12.7 12.6 24.4 12.4 24.9-.2.5-.7.8-1.2.8"/></g><path d="m30.5 41.2c-12.7 0-11.1-6.2-9.4-8.5 4.7-6.3 22.5-12.7 31.9-12.7 10.8 0 9.1 6 6.8 9-5.1 6.9-19.9 12.2-29.3 12.2m22.5-18.1c-7.7 0-21.9 5.2-26.6 9.7-.9.9-2.6 3.3 4.2 3.3 8.4 0 21.2-5.2 25.1-9.8 1.3-1.7 2-3.2-2.7-3.2" fill="#ed4c5c"/><circle cx="22" cy="22" r="20" fill="#ff8736"/><g fill="#231f20"><path d="m7.8 8c.4 1.7 1.1 3.2 1.9 4.7.8 1.5 1.7 3 2.6 4.4 1.9 2.8 3.9 5.6 6.1 8.2 2.2 2.6 4.5 5.1 7 7.4 1.3 1.1 2.6 2.2 4 3.1 1.4 1 2.9 1.7 4.6 2.2-1.7-.1-3.4-.8-5-1.6-1.6-.8-3-1.8-4.4-2.9-2.7-2.2-5.2-4.7-7.4-7.3-2.2-2.7-4.2-5.5-5.9-8.6-.8-1.4-1.6-3-2.3-4.6-.6-1.6-1.1-3.3-1.2-5"/><path d="m2 21.5c1.2 2.5 2.7 4.8 4.5 6.7 1.9 1.9 4.1 3.4 6.6 4.5 2.4 1.1 5.1 1.9 7.6 3 1.3.6 2.6 1.2 3.7 2.2 1.1.9 1.9 2.3 2.1 3.6-.5-1.3-1.4-2.3-2.5-3-1.1-.7-2.4-1.2-3.7-1.6-2.6-.9-5.3-1.6-7.9-2.8-2.6-1.2-5-2.8-6.8-5-1.8-2.3-3-4.9-3.6-7.6"/><path d="m38.1 33.9c-1.6.7-3.5 1-5.3.2-1.8-.8-2.8-2.6-3.5-4.2-1.4-3.4-1.9-6.9-2.6-10.3-.7-3.4-1.5-6.8-3-9.8-1.5-3-4-5.7-7.3-6.9 1.7.4 3.4 1.2 4.8 2.3 1.4 1.1 2.6 2.6 3.5 4.1 1.8 3.1 2.7 6.7 3.5 10.1l1 5.2c.3 1.7.7 3.4 1.3 5 .6 1.6 1.3 3.1 2.7 4 1.3.8 3.2.7 4.9.3"/><path d="m33.6 5.7c.9.6 1.6 1.5 2.1 2.5.5 1 1 2 1.3 3.1.7 2.1 1 4.3 1.1 6.6.2 4.4-.9 9.1-3.4 12.9-1.3 1.9-2.9 3.5-4.8 4.8-1.9 1.3-4 2.2-6.2 2.7-4.3 1.1-8.9 1-13.2.3 4.4.1 8.8-.1 12.8-1.4 4.1-1.3 7.7-3.7 10-7.2 2.4-3.5 3.4-7.8 3.5-12 0-2.1-.2-4.3-.6-6.4-.4-2.2-1-4.4-2.6-5.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c1.svg b/riot/emojione/svg/1f3c1.svg new file mode 100644 index 0000000..a57b1b0 --- /dev/null +++ b/riot/emojione/svg/1f3c1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.7 13c-3.7.5-7.1 1.8-10 4.6-1-2.7-2-5.4-3-8.1 2.9-2.8 6.3-4.1 10-4.6 1 2.7 2 5.4 3 8.1" fill="#333"/><path d="m30.3 12.9c-4-.2-8-.4-11.7.1-1-2.7-2-5.4-3-8.1 3.7-.5 7.7-.3 11.7-.1 1 2.7 2 5.4 3 8.1" fill="#fff"/><path d="m42 12.8c-3.7.5-7.7.3-11.7.1-1-2.7-2-5.4-3-8.1 4 .2 8 .4 11.7-.1 1 2.6 2 5.3 3 8.1" fill="#333"/><g fill="#fff"><path d="m52 8.1c-2.9 2.8-6.3 4.1-10 4.6-1-2.7-2-5.4-3-8.1 3.7-.5 7.1-1.8 10-4.6 1 2.7 2 5.4 3 8.1"/><path d="m21.7 21.1c-3.7.5-7.1 1.8-10 4.6-1-2.7-2-5.4-3-8.1 2.9-2.8 6.3-4.1 10-4.6 1 2.7 2 5.4 3 8.1"/></g><path d="m33.3 21c-4-.2-8-.4-11.7.1-1-2.7-2-5.4-3-8.1 3.7-.5 7.7-.3 11.7-.1 1 2.7 2 5.4 3 8.1" fill="#333"/><path d="m45 20.9c-3.7.5-7.7.3-11.7.1-1-2.7-2-5.4-3-8.1 4 .2 8 .4 11.7-.1 1 2.7 2 5.4 3 8.1" fill="#fff"/><g fill="#333"><path d="m55 16.3c-2.9 2.8-6.3 4.1-10 4.6-1-2.7-2-5.4-3-8.1 3.7-.5 7.1-1.8 10-4.6 1 2.6 2 5.3 3 8.1"/><path d="m24.7 29.3c-3.7.5-7.1 1.8-10 4.6-1-2.7-2-5.4-3-8.1 2.9-2.8 6.3-4.1 10-4.6 1 2.7 2 5.4 3 8.1"/></g><path d="m36.4 29.1c-4-.2-8-.4-11.7.1-1-2.7-2-5.4-3-8.1 3.7-.5 7.7-.3 11.7-.1.9 2.7 2 5.4 3 8.1" fill="#fff"/><path d="m48 29c-3.7.5-7.7.3-11.6.1-1-2.7-2-5.4-3-8.1 4 .2 8 .4 11.7-.1.9 2.7 1.9 5.4 2.9 8.1" fill="#333"/><g fill="#fff"><path d="m58 24.4c-2.9 2.8-6.3 4.1-10 4.6-1-2.7-2-5.4-3-8.1 3.7-.5 7.1-1.8 10-4.6 1 2.7 2 5.4 3 8.1"/><path d="m27.7 37.4c-3.7.5-7.1 1.8-10 4.6-1-2.7-2-5.4-3-8.1 2.9-2.8 6.3-4.1 10-4.6 1 2.7 2 5.4 3 8.1"/></g><path d="m39.4 37.3c-4-.2-8-.4-11.7.1-1-2.7-2-5.4-3-8.1 3.7-.5 7.7-.3 11.7-.1 1 2.7 2 5.4 3 8.1" fill="#333"/><path d="m51 37.1c-3.7.5-7.7.3-11.7.1-1-2.7-2-5.4-3-8.1 4 .2 8 .4 11.6-.1 1.1 2.7 2.1 5.4 3.1 8.1" fill="#fff"/><g fill="#333"><path d="m61 32.5c-2.9 2.8-6.3 4.1-10 4.6-1-2.7-2-5.4-3-8.1 3.7-.5 7.1-1.8 10-4.6 1 2.7 2 5.4 3 8.1"/><path d="M25.9 64 24 64 3 7.3 4.7 6.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c2.svg b/riot/emojione/svg/1f3c2.svg new file mode 100644 index 0000000..347e2d7 --- /dev/null +++ b/riot/emojione/svg/1f3c2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#badede" d="M18.9 38.8 35.8 62 2 62z"/><path fill="#d6eef0" d="m18.9 38.8l4.8 6.6-4.8 6.6-4.8-6.6z"/><path fill="#badede" d="m35.4 45.1l12.3 16.9h-24.6z"/><path fill="#d6eef0" d="m35.4 45.1l3.5 4.8-3.5 4.8-3.5-4.8z"/><path fill="#44618b" d="m33.2 15.1l18.3-4 1 5.3-18.8 2.6z"/><path d="m52.3 9.2l2.1-.4c.5-.1 1 .2 1 .7 0 .1 0 .1 0 .2 1.7-.1 3.8.3 4.2 3.3.1.5.4 3.4-2.9 3.8-4.9.7-4.9.7-5.4-3.2l-.3-2.5c-.2-.9.4-1.7 1.3-1.9" fill="#86d0bf"/><path d="m54.8 9.9c-.2.2-.3.4-.5.5-.2.1-.5.2-.7.2-.4.1-.8.1-1.3.2-.3.1-.2.6.1.5.4-.1.9-.1 1.3-.2.3 0 .6-.1.9-.2.3-.2.5-.4.7-.7.2-.2-.3-.5-.5-.3" fill="#44618b"/><path d="m62 56.4c0 7.1-9.3 7.1-9.3 0v-37.1c0-7.1 9.3-7.1 9.3 0v37.1" fill="#b6ef00"/><path d="m55.9 36.6v-6.3h-8.1l-2.1-2.8-8.1 12.5 2.4 3.3c1.6 2.1 3.1 3 4.8 3 2.3 0 10.2 0 10.2 0v-6.3h-8.1l-2.1-2.8-.7-.9c.5.2 1 .3 1.5.3 2.3 0 10.3 0 10.3 0" fill="#3e4347"/><g fill="#86d0bf"><path d="m55 46.4c0 1.9 1.6 3.5 3.7 3.5v-9.8l-3.7-.1v6.4"/><path d="m55 36.6c0 1.9 1.6 3.5 3.7 3.5v-9.8h-3.7v6.3"/></g><g fill="#44618b"><path d="m25.1 33.3l-11.7-4.6-2.2 4.9 11.7 4.6z"/><path d="m27.5 20l-6.6 11.8 2 6.4 9.4-16.2z"/></g><path d="m13.1 26.7l-2-.9c-.5-.2-1 0-1.2.5 0 .1 0 .1 0 .2-1.6-.5-3.8-.7-4.9 2.2-.1.4-1.1 3 2 4.3 4.6 1.9 4.6 1.9 6-1.8l.9-2.4c.4-.8 0-1.7-.8-2.1" fill="#86d0bf"/><g fill="#44618b"><path d="m10.5 26.7c.1.3.2.5.4.6.2.2.4.3.7.4.4.2.8.3 1.2.5.3.1.1.6-.2.5-.4-.2-.8-.3-1.2-.5-.3-.1-.5-.3-.8-.5-.3-.2-.4-.5-.5-.8-.2-.3.2-.5.4-.2"/><path d="m47.7 27.3l-9.4 13.9-13.9-11.7c-.9-.9-1.1-2.1-.2-3.1l9.8-10.1c.9-.9 2.4-.9 3.3 0l10.4 11"/></g><path fill="#86d0bf" d="m45.1 31.2l-16.9 1.5-7.8-6.5 22.9-3.6 4.4 4.7z"/><path fill="#44618b" d="m32.9 24.1l-1.1 1.2 9.1 9.2 1.5-1.8z"/><g fill="#86d0bf"><path d="m52 30.2h3.8v6.7h-3.8z"/><path d="m52 40h3.8v6.7h-3.8z"/></g><g fill="#44618b"><ellipse cx="54.8" cy="32.1" rx=".9" ry=".9"/><ellipse cx="54.8" cy="41.9" rx=".9" ry=".9"/><path d="m58.1 30.2h.6v19.6h-.6z"/><path d="m55.1 37.5l-.7-.4c0 0-.3-1.1.3-2l.9.2c-.7 1.1-.5 2.2-.5 2.2"/><path d="m55.8 38.7l-.8-.8c0 0-.2-1 .5-2l.9.2c-.7 1.2-.6 2.6-.6 2.6"/><path d="m55.1 47.3l-.7-.3c0 0-.3-1.1.3-2l.9.2c-.7 1.1-.5 2.1-.5 2.1"/><path d="m55.8 48.6l-.8-.8c0 0-.2-1 .5-2l.9.2c-.7 1.2-.6 2.6-.6 2.6"/></g><path d="m33.2 9.4c-6.9-6.4-7 .2-11.3 4.6-4.3 4.4-10.9 4.3-4.7 11.4 0 0 2.7 2.8 4 1.7 4.4 3.4 7.7 1.7 11.4-2.1 3.7-3.8 5.4-7.2 2-11.6 1.2-1.4-1.4-4-1.4-4" fill="#ffdd67"/><path d="m26.7 24.1c.9 1 2.9.6 4.3-.9 1.4-1.5 1.8-3.4.9-4.4 0 0-1.3 1.5-2.5 2.7-1.2 1.3-2.7 2.6-2.7 2.6" fill="#594640"/><path d="m17.6 3.3c1.7 1.8 1.7 4.7 0 6.5-1.7 1.8-4.5 1.8-6.3 0-1.7-1.8-1.7-4.7 0-6.5 1.7-1.7 4.5-1.7 6.3 0" fill="#86d0bf"/><path d="m29.7 4.8c3.7 3.8-3.2 4.4-7.9 9.2-4.7 4.8-5.2 11.9-9 8.1-3.7-3.8-3-10.8 1.7-15.6 4.7-4.8 11.5-5.5 15.2-1.7" fill="#44618b"/><path d="m32.3 8.5c-6 4.5-11.4 9.9-15.9 16-.9 1.2-4.7-1.1-3.7-2.4 4.9-6.5 10.7-12.4 17.2-17.3 1.3-1 3.6 2.8 2.4 3.7" fill="#86d0bf"/><path d="m29.2 8.8c-1.9 0-4.1 1.6-7.5 5s-5 5.6-5 7.5c0 2.4 3 5 5.2 5 1.7 0 6.2-4.5 4.5-6.1-.8-.8-1.7-1.5-.8-2.4s1.6-.1 2.4.8c1.6 1.6 6.1-2.9 6.1-4.5.1-2.3-2.5-5.3-4.9-5.3" fill="#79c600"/><g fill="#3e4347"><path transform="matrix(.7073-.7069.7069.7073-12.4615 19.727)" d="m16.9 23.2h1.4v3.5h-1.4z"/><path transform="matrix(.7069-.7073.7073.7069 2.6317 26.1928)" d="m32.2 8.2h1.4v3.5h-1.4z"/></g><g fill="#b6ef00"><path d="m21.7 13.8c-.5.5-.9.9-1.3 1.3v10.9c.5.2 1 .3 1.5.3.2 0 .4 0 .6-.1v-13.1c-.3.2-.6.5-.8.7"/><path d="m29.2 8.8c-.5 0-1 .1-1.6.3v9c.1.1.3.3.4.4.4.4 1 .4 1.7.2v-9.9c-.2 0-.3 0-.5 0"/></g><path d="m32.6 17.3c-1.5 1.5-3.7 2.8-4.9 1.6-.1-.1-.2-.2-.3-.3-.4-.4-.8-.8-1-.8-.1 0-.3.1-.5.3-.2.2-.3.4-.3.5 0 .3.4.7.8 1 .1.1.2.2.3.3 1.2 1.2-.1 3.4-1.6 4.9-.9.9-2.3 1.9-3.2 1.9-1.2 0-2.6-.6-3.8-1.7-1.2-1.1-1.9-2.5-1.9-3.7 0-1.9 1.4-4.1 5.2-7.8 3.8-3.8 5.9-5.2 7.8-5.2 1.2 0 2.6.7 3.7 1.9 1.1 1.2 1.7 2.6 1.7 3.8 0 1-1 2.3-2 3.3m-7.3.2c.4-.4.7-.5 1.1-.5.6 0 1.1.5 1.7 1 .1.1.2.2.2.3.7.7 2.4-.3 3.7-1.6 1.1-1.1 1.7-2.2 1.7-2.6 0-1-.6-2.2-1.5-3.2-.9-1-2.1-1.6-3.1-1.6-1.7 0-3.7 1.4-7.2 4.9s-4.9 5.5-4.9 7.2c0 1 .6 2.1 1.6 3.1 1 .9 2.2 1.5 3.2 1.5.5 0 1.5-.6 2.6-1.7 1.3-1.3 2.3-3 1.6-3.7-.1-.1-.2-.2-.3-.2-.5-.5-1-1-1-1.7.1-.5.3-.9.6-1.2" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c3-1f3fb.svg b/riot/emojione/svg/1f3c3-1f3fb.svg new file mode 100644 index 0000000..4b9b89b --- /dev/null +++ b/riot/emojione/svg/1f3c3-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffe1bd" d="m30.1 15.8l2.5-2 1.7 9.4-6.1 1.1z"/><path d="m26.8 20.9c2 .8 1.4 3.4 1.4 3.4 2.5-.5 3.3-5.6 2.8-8.6l-4.2 5.2" fill="#e6b796"/><path d="m29.7 3.3l-10.1 5.7c-.9 2.8.3 3.9.4 5 .1.5-.7 1.5-1.2 2.1-1 1.2 1.1 1.7 1.8 1.4.7 1-.6 1.9 2.5.7 0 0-3 2-.6 2.2 0 1.3.2 3.9 6.5.1 1.9-1.1 2-4.8 2-4.8l3.3-1.2-4.6-11.2" fill="#ffe1bd"/><path d="m21.9 3.7c6.7-3.7 11.2-.7 12.2.8 2.6 4 1.9 9.2-.7 13.4 0 0-1.7-.4-2.3-2.3 0 0 1.9.5 2-3.4.1-3.3-3.6-4.3-4.5.3l-.5.1c-1.3-2-.1-5-2.8-5.4-2.3-.3-5.9 2.3-5.9 2.3-.9-1.1-.2-4.3 2.5-5.8" fill="#594640"/><path d="m22.7 13.5c.1.7-.2 1.3-.6 1.4-.5.1-.7-.4-.8-1.1-.1-.7-.1-1.3.4-1.3.4-.1.9.3 1 1" fill="#664e27"/><path d="m29.7 13.2c-.2-1.3.7-2.7 1.8-2.9 0 0-1.6 1.9-.7 3.9-.1 0-1-.1-1.1-1" fill="#e6b796"/><path d="m24.2 17.7c0 0-1.1 1.2-1.6 1.5-.9.7-1.1.4-.6-.1.4-.4 1.1-.9 1.1-.9l1.1-.5" fill="#664e27"/><g fill="#d3976e"><path d="m51.4 53.5c-.4 2 .9 3.9 2.9 4.3l1.7-8.5c.2-1-.5-1.9-1.5-2.1l-1.8-.3-1.3 6.6"/><path d="m16.1 57.5c-2-.4-3.9.9-4.3 2.9l8.6 1.6c1 .2 2-.5 2.2-1.4l.4-1.8-6.9-1.3"/></g><path d="m49 28.8l-3.3-6.8c-.4-.8-1.3-1.2-2.2-1.1l-7.5.3c-1.1 0-2 .9-1.9 2 0 1.1 1 1.9 2.1 1.9l6.6-.2 2.7 5.7 3.5-1.8" fill="#3b946f"/><path d="m47.1 29.2l-1.8.7c-.6.2-1 .9-.7 1.6l.3.9c.2.5.6.8 1.1.8.5 1.1 1.5 2.5 3.7 1.7.4-.1 2.4-.8 1.5-3.2-1.4-3.5-1.4-3.5-4.1-2.5" fill="#ffe1bd"/><path d="m46.4 33.1c1.5-.6.7-2.2.3-3.3-.1-.2-.3-.1-.3.1.3.9 1.2 2.4-.1 3-.1 0 0 .2.1.2" fill="#e6b796"/><path fill="#3e4347" d="m43.2 45l-3.6-5.5h-12.6l-8.5 5.8-2.4 12.1 6.8 1.4 1.9-9.4 8.6-4.2 5.6 5.9 12.4 2.4 1.3-6.7z"/><path d="m39.6 39.5l-3.9-18.3-9.8 1.8c-.4.1-.8.3-1.1.6l-4.5 4.7-6-2.1-1.3 3.7 7.3 2.5c.9.3 1.8 0 2.3-.8l3.6-3.8.8 11.7c0 0 12.6 0 12.6 0" fill="#47b892"/><path d="m14.1 28.3l.8-1.7c.3-.6 0-1.4-.6-1.6l-.9-.4c-.5-.2-1-.1-1.3.2-1.2-.4-2.8-.7-3.8 1.4-.2.3-1.1 2.2 1.2 3.3 3.4 1.4 3.4 1.4 4.6-1.2" fill="#ffe1bd"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c3-1f3fc.svg b/riot/emojione/svg/1f3c3-1f3fc.svg new file mode 100644 index 0000000..fd2a61a --- /dev/null +++ b/riot/emojione/svg/1f3c3-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fed0ac" d="m30.1 15.8l2.5-2 1.7 9.4-6.1 1.1z"/><path d="m26.8 20.9c2 .8 1.4 3.4 1.4 3.4 2.5-.5 3.3-5.6 2.8-8.6l-4.2 5.2" fill="#e0a372"/><path d="m29.7 3.3l-10.1 5.7c-.9 2.8.3 3.9.4 5 .1.5-.7 1.5-1.2 2.1-1 1.2 1.1 1.7 1.8 1.4.7 1-.6 1.9 2.5.7 0 0-3 2-.6 2.2 0 1.3.2 3.9 6.5.1 1.9-1.1 2-4.8 2-4.8l3.3-1.2-4.6-11.2" fill="#fed0ac"/><path d="m21.9 3.7c6.7-3.7 11.2-.7 12.2.8 2.6 4 1.9 9.2-.7 13.4 0 0-1.7-.4-2.3-2.3 0 0 1.9.5 2-3.4.1-3.3-3.6-4.3-4.5.3l-.5.1c-1.3-2-.1-5-2.8-5.4-2.3-.3-5.9 2.3-5.9 2.3-.9-1.1-.2-4.3 2.5-5.8" fill="#dbb471"/><path d="m22.7 13.5c.1.7-.2 1.3-.6 1.4-.5.1-.7-.4-.8-1.1-.1-.7-.1-1.3.4-1.3.4-.1.9.3 1 1" fill="#664e27"/><path d="m29.7 13.2c-.2-1.3.7-2.7 1.8-2.9 0 0-1.6 1.9-.7 3.9-.1 0-1-.1-1.1-1" fill="#e0a372"/><path d="m24.2 17.7c0 0-1.1 1.2-1.6 1.5-.9.7-1.1.4-.6-.1.4-.4 1.1-.9 1.1-.9l1.1-.5" fill="#664e27"/><g fill="#d3976e"><path d="m51.4 53.5c-.4 2 .9 3.9 2.9 4.3l1.7-8.5c.2-1-.5-1.9-1.5-2.1l-1.8-.3-1.3 6.6"/><path d="m16.1 57.5c-2-.4-3.9.9-4.3 2.9l8.6 1.6c1 .2 2-.5 2.2-1.4l.4-1.8-6.9-1.3"/></g><path d="m49 28.8l-3.3-6.8c-.4-.8-1.3-1.2-2.2-1.1l-7.5.3c-1.1 0-2 .9-1.9 2 0 1.1 1 1.9 2.1 1.9l6.6-.2 2.7 5.7 3.5-1.8" fill="#3b946f"/><path d="m47.1 29.2l-1.8.7c-.6.2-1 .9-.7 1.6l.3.9c.2.5.6.8 1.1.8.5 1.1 1.5 2.5 3.7 1.7.4-.1 2.4-.8 1.5-3.2-1.4-3.5-1.4-3.5-4.1-2.5" fill="#fed0ac"/><path d="m46.4 33.1c1.5-.6.7-2.2.3-3.3-.1-.2-.3-.1-.3.1.3.9 1.2 2.4-.1 3-.1 0 0 .2.1.2" fill="#e0a372"/><path fill="#3e4347" d="m43.2 45l-3.6-5.5h-12.6l-8.5 5.8-2.4 12.1 6.8 1.4 1.9-9.4 8.6-4.2 5.6 5.9 12.4 2.4 1.3-6.7z"/><path d="m39.6 39.5l-3.9-18.3-9.8 1.8c-.4.1-.8.3-1.1.6l-4.5 4.7-6-2.1-1.3 3.7 7.3 2.5c.9.3 1.8 0 2.3-.8l3.6-3.8.8 11.7c0 0 12.6 0 12.6 0" fill="#47b892"/><path d="m14.1 28.3l.8-1.7c.3-.6 0-1.4-.6-1.6l-.9-.4c-.5-.2-1-.1-1.3.2-1.2-.4-2.8-.7-3.8 1.4-.2.3-1.1 2.2 1.2 3.3 3.4 1.4 3.4 1.4 4.6-1.2" fill="#fed0ac"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c3-1f3fd.svg b/riot/emojione/svg/1f3c3-1f3fd.svg new file mode 100644 index 0000000..6e8a3ba --- /dev/null +++ b/riot/emojione/svg/1f3c3-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6a57c" d="m30.1 15.8l2.5-2 1.7 9.4-6.1 1.1z"/><path d="m26.8 20.9c2 .8 1.4 3.4 1.4 3.4 2.5-.5 3.3-5.6 2.8-8.6l-4.2 5.2" fill="#b58360"/><path d="m29.7 3.3l-10.1 5.7c-.9 2.8.3 3.9.4 5 .1.5-.7 1.5-1.2 2.1-1 1.2 1.1 1.7 1.8 1.4.7 1-.6 1.9 2.5.7 0 0-3 2-.6 2.2 0 1.3.2 3.9 6.5.1 1.9-1.1 2-4.8 2-4.8l3.3-1.2-4.6-11.2" fill="#d6a57c"/><path d="m21.9 3.7c6.7-3.7 11.2-.7 12.2.8 2.6 4 1.9 9.2-.7 13.4 0 0-1.7-.4-2.3-2.3 0 0 1.9.5 2-3.4.1-3.3-3.6-4.3-4.5.3l-.5.1c-1.3-2-.1-5-2.8-5.4-2.3-.3-5.9 2.3-5.9 2.3-.9-1.1-.2-4.3 2.5-5.8" fill="#594640"/><path d="m22.7 13.5c.1.7-.2 1.3-.6 1.4-.5.1-.7-.4-.8-1.1s-.1-1.3.4-1.3c.4-.1.9.3 1 1" fill="#664e27"/><path d="m29.7 13.2c-.2-1.3.7-2.7 1.8-2.9 0 0-1.6 1.9-.7 3.9-.1 0-1-.1-1.1-1" fill="#b58360"/><path d="m24.2 17.7c0 0-1.1 1.2-1.6 1.5-.9.7-1.1.4-.6-.1.4-.4 1.1-.9 1.1-.9l1.1-.5" fill="#664e27"/><g fill="#d3976e"><path d="m51.4 53.5c-.4 2 .9 3.9 2.9 4.3l1.7-8.5c.2-1-.5-1.9-1.5-2.1l-1.8-.3-1.3 6.6"/><path d="m16.1 57.5c-2-.4-3.9.9-4.3 2.9l8.6 1.6c1 .2 2-.5 2.2-1.4l.4-1.8-6.9-1.3"/></g><path d="m49 28.8l-3.3-6.8c-.4-.8-1.3-1.2-2.2-1.1l-7.5.3c-1.1 0-2 .9-1.9 2 0 1.1 1 1.9 2.1 1.9l6.6-.2 2.8 5.7 3.4-1.8" fill="#3b946f"/><path d="m47.1 29.2l-1.8.7c-.6.2-1 .9-.7 1.6l.3.9c.2.5.6.8 1.1.8.5 1.1 1.5 2.5 3.7 1.7.4-.1 2.4-.8 1.5-3.2-1.4-3.5-1.4-3.5-4.1-2.5" fill="#d6a57c"/><path d="m46.4 33.1c1.5-.6.7-2.2.3-3.3-.1-.2-.3-.1-.3.1.3.9 1.2 2.4-.1 3-.1 0 0 .2.1.2" fill="#b58360"/><path fill="#3e4347" d="m43.2 45l-3.6-5.5h-12.6l-8.5 5.8-2.4 12.1 6.8 1.4 1.9-9.4 8.6-4.2 5.6 5.9 12.4 2.4 1.3-6.7z"/><path d="m39.6 39.5l-3.9-18.3-9.8 1.8c-.4.1-.8.3-1.1.6l-4.5 4.7-6-2.1-1.3 3.7 7.3 2.5c.9.3 1.8 0 2.3-.8l3.6-3.8.8 11.7c0 0 12.6 0 12.6 0" fill="#47b892"/><path d="m14.1 28.3l.8-1.7c.3-.6 0-1.4-.6-1.6l-.9-.4c-.5-.2-1-.1-1.3.2-1.2-.4-2.8-.7-3.8 1.4-.2.3-1.1 2.2 1.2 3.3 3.4 1.4 3.4 1.4 4.6-1.2" fill="#d6a57c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c3-1f3fe.svg b/riot/emojione/svg/1f3c3-1f3fe.svg new file mode 100644 index 0000000..819f33c --- /dev/null +++ b/riot/emojione/svg/1f3c3-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b47d56" d="m30.1 15.8l2.5-2 1.7 9.4-6.1 1.1z"/><path d="m26.8 20.9c2 .8 1.4 3.4 1.4 3.4 2.5-.5 3.3-5.6 2.8-8.6l-4.2 5.2" fill="#935e3e"/><path d="m29.7 3.3l-10.1 5.7c-.9 2.8.3 3.9.4 5 .1.5-.7 1.5-1.2 2.1-1 1.2 1.1 1.7 1.8 1.4.7 1-.6 1.9 2.5.7 0 0-3 2-.6 2.2 0 1.3.2 3.9 6.5.1 1.9-1.1 2-4.8 2-4.8l3.3-1.2-4.6-11.2" fill="#b47d56"/><path d="m21.9 3.7c6.7-3.7 11.2-.7 12.2.8 2.6 4 1.9 9.2-.7 13.4 0 0-1.7-.4-2.3-2.3 0 0 1.9.5 2-3.4.1-3.3-3.6-4.3-4.5.3l-.5.1c-1.3-2-.1-5-2.8-5.4-2.3-.3-5.9 2.3-5.9 2.3-.9-1.1-.2-4.3 2.5-5.8" fill="#231f20"/><path d="m22.7 13.5c.1.7-.2 1.3-.6 1.4-.5.1-.7-.4-.8-1.1-.1-.7-.1-1.3.4-1.3.4-.1.9.3 1 1" fill="#664e27"/><path d="m29.7 13.2c-.2-1.3.7-2.7 1.8-2.9 0 0-1.6 1.9-.7 3.9-.1 0-1-.1-1.1-1" fill="#935e3e"/><path d="m24.2 17.7c0 0-1.1 1.2-1.6 1.5-.9.7-1.1.4-.6-.1.4-.4 1.1-.9 1.1-.9l1.1-.5" fill="#664e27"/><g fill="#d3976e"><path d="m51.4 53.5c-.4 2 .9 3.9 2.9 4.3l1.7-8.5c.2-1-.5-1.9-1.5-2.1l-1.8-.3-1.3 6.6"/><path d="m16.1 57.5c-2-.4-3.9.9-4.3 2.9l8.6 1.6c1 .2 2-.5 2.2-1.4l.4-1.8-6.9-1.3"/></g><path d="m49 28.8l-3.3-6.8c-.4-.8-1.3-1.2-2.2-1.1l-7.5.3c-1.1 0-2 .9-1.9 2 0 1.1 1 1.9 2.1 1.9l6.6-.2 2.7 5.7 3.5-1.8" fill="#3b946f"/><path d="m47.1 29.2l-1.8.7c-.6.2-1 .9-.7 1.6l.3.9c.2.5.6.8 1.1.8.5 1.1 1.5 2.5 3.7 1.7.4-.1 2.4-.8 1.5-3.2-1.4-3.5-1.4-3.5-4.1-2.5" fill="#b47d56"/><path d="m46.4 33.1c1.5-.6.7-2.2.3-3.3-.1-.2-.3-.1-.3.1.3.9 1.2 2.4-.1 3-.1 0 0 .2.1.2" fill="#935e3e"/><path fill="#3e4347" d="m43.2 45l-3.6-5.5h-12.6l-8.5 5.8-2.4 12.1 6.8 1.4 1.9-9.4 8.6-4.2 5.6 5.9 12.4 2.4 1.3-6.7z"/><path d="m39.6 39.5l-3.9-18.3-9.8 1.8c-.4.1-.8.3-1.1.6l-4.5 4.7-6-2.1-1.3 3.7 7.3 2.5c.9.3 1.8 0 2.3-.8l3.6-3.8.8 11.7c0 0 12.6 0 12.6 0" fill="#47b892"/><path d="m14.1 28.3l.8-1.7c.3-.6 0-1.4-.6-1.6l-.9-.4c-.5-.2-1-.1-1.3.2-1.2-.4-2.8-.7-3.8 1.4-.2.3-1.1 2.2 1.2 3.3 3.4 1.4 3.4 1.4 4.6-1.2" fill="#b47d56"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c3-1f3ff.svg b/riot/emojione/svg/1f3c3-1f3ff.svg new file mode 100644 index 0000000..622c252 --- /dev/null +++ b/riot/emojione/svg/1f3c3-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#8a6859" d="m30.1 15.8l2.5-2 1.7 9.4-6.1 1.1z"/><path d="m26.8 20.9c2 .8 1.4 3.4 1.4 3.4 2.5-.5 3.3-5.6 2.8-8.6l-4.2 5.2" fill="#705041"/><path d="m29.7 3.3l-10.1 5.7c-.9 2.8.3 3.9.4 5 .1.5-.7 1.5-1.2 2.1-1 1.2 1.1 1.7 1.8 1.4.7 1-.6 1.9 2.5.7 0 0-3 2-.6 2.2 0 1.3.2 3.9 6.5.1 1.9-1.1 2-4.8 2-4.8l3.3-1.2-4.6-11.2" fill="#8a6859"/><path d="m21.9 3.7c6.7-3.7 11.2-.7 12.2.8 2.6 4 1.9 9.2-.7 13.4 0 0-1.7-.4-2.3-2.3 0 0 1.9.5 2-3.4.1-3.3-3.6-4.3-4.5.3l-.5.1c-1.3-2-.1-5-2.8-5.4-2.3-.3-5.9 2.3-5.9 2.3-.9-1.1-.2-4.3 2.5-5.8" fill="#231f20"/><path d="m22.7 13.5c.1.7-.2 1.3-.6 1.4-.5.1-.7-.4-.8-1.1-.1-.7-.1-1.3.4-1.3.4-.1.9.3 1 1" fill="#574137"/><path d="m29.7 13.2c-.2-1.3.7-2.7 1.8-2.9 0 0-1.6 1.9-.7 3.9-.1 0-1-.1-1.1-1" fill="#705041"/><path d="m24.2 17.7c0 0-1.1 1.2-1.6 1.5-.9.7-1.1.4-.6-.1.4-.4 1.1-.9 1.1-.9l1.1-.5" fill="#574137"/><g fill="#d3976e"><path d="m51.4 53.5c-.4 2 .9 3.9 2.9 4.3l1.7-8.5c.2-1-.5-1.9-1.5-2.1l-1.8-.3-1.3 6.6"/><path d="m16.1 57.5c-2-.4-3.9.9-4.3 2.9l8.6 1.6c1 .2 2-.5 2.2-1.4l.4-1.8-6.9-1.3"/></g><path d="m49 28.8l-3.3-6.8c-.4-.8-1.3-1.2-2.2-1.1l-7.5.3c-1.1 0-2 .9-1.9 2 0 1.1 1 1.9 2.1 1.9l6.6-.2 2.7 5.7 3.5-1.8" fill="#3b946f"/><path d="m47.1 29.2l-1.8.7c-.6.2-1 .9-.7 1.6l.3.9c.2.5.6.8 1.1.8.5 1.1 1.5 2.5 3.7 1.7.4-.1 2.4-.8 1.5-3.2-1.4-3.5-1.4-3.5-4.1-2.5" fill="#8a6859"/><path d="m46.4 33.1c1.5-.6.7-2.2.3-3.3-.1-.2-.3-.1-.3.1.3.9 1.2 2.4-.1 3-.1 0 0 .2.1.2" fill="#705041"/><path fill="#3e4347" d="m43.2 45l-3.6-5.5h-12.6l-8.5 5.8-2.4 12.1 6.8 1.4 1.9-9.4 8.6-4.2 5.6 5.9 12.4 2.4 1.3-6.7z"/><path d="m39.6 39.5l-3.9-18.3-9.8 1.8c-.4.1-.8.3-1.1.6l-4.5 4.7-6-2.1-1.3 3.7 7.3 2.5c.9.3 1.8 0 2.3-.8l3.6-3.8.8 11.7c0 0 12.6 0 12.6 0" fill="#47b892"/><path d="m14.1 28.3l.8-1.7c.3-.6 0-1.4-.6-1.6l-.9-.4c-.5-.2-1-.1-1.3.2-1.2-.4-2.8-.7-3.8 1.4-.2.3-1.1 2.2 1.2 3.3 3.4 1.4 3.4 1.4 4.6-1.2" fill="#8a6859"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c3.svg b/riot/emojione/svg/1f3c3.svg new file mode 100644 index 0000000..e292a29 --- /dev/null +++ b/riot/emojione/svg/1f3c3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m30.1 15.8l2.5-2 1.7 9.4-6.1 1.1z"/><path d="m26.8 20.9c2 .8 1.4 3.4 1.4 3.4 2.5-.5 3.3-5.6 2.8-8.6l-4.2 5.2" fill="#eba352"/><path d="m29.7 3.3l-10.1 5.7c-.9 2.8.3 3.9.4 5 .1.5-.7 1.5-1.2 2.1-1 1.2 1.1 1.7 1.8 1.4.7 1-.6 1.9 2.5.7 0 0-3 2-.6 2.2 0 1.3.2 3.9 6.5.1 1.9-1.1 2-4.8 2-4.8l3.3-1.2-4.6-11.2" fill="#ffdd67"/><path d="m21.9 3.7c6.7-3.7 11.2-.7 12.2.8 2.6 4 1.9 9.2-.7 13.4 0 0-1.7-.4-2.3-2.3 0 0 1.9.5 2-3.4.1-3.3-3.6-4.3-4.5.3l-.5.1c-1.3-2-.1-5-2.8-5.4-2.3-.3-5.9 2.3-5.9 2.3-.9-1.1-.2-4.3 2.5-5.8" fill="#ffb300"/><path d="m22.7 13.5c.1.7-.2 1.3-.6 1.4-.5.1-.7-.4-.8-1.1s-.1-1.3.4-1.3c.4-.1.9.3 1 1" fill="#937237"/><path d="m29.7 13.2c-.2-1.3.7-2.7 1.8-2.9 0 0-1.6 1.9-.7 3.9-.1 0-1-.1-1.1-1" fill="#eba352"/><path d="m24.2 17.7c0 0-1.1 1.2-1.6 1.5-.9.7-1.1.4-.6-.1.4-.4 1.1-.9 1.1-.9l1.1-.5" fill="#937237"/><g fill="#d3976e"><path d="m51.4 53.5c-.4 2 .9 3.9 2.9 4.3l1.7-8.5c.2-1-.5-1.9-1.5-2.1l-1.8-.3-1.3 6.6"/><path d="m16.1 57.5c-2-.4-3.9.9-4.3 2.9l8.6 1.6c1 .2 2-.5 2.2-1.4l.4-1.8-6.9-1.3"/></g><path d="m49 28.8l-3.3-6.8c-.4-.8-1.3-1.2-2.2-1.1l-7.5.3c-1.1 0-2 .9-1.9 2 0 1.1 1 1.9 2.1 1.9l6.6-.2 2.8 5.7 3.4-1.8" fill="#3b946f"/><path d="m47.1 29.2l-1.8.7c-.6.2-1 .9-.7 1.6l.3.9c.2.5.6.8 1.1.8.5 1.1 1.5 2.5 3.7 1.7.4-.1 2.4-.8 1.5-3.2-1.4-3.5-1.4-3.5-4.1-2.5" fill="#ffdd67"/><path d="m46.4 33.1c1.5-.6.7-2.2.3-3.3-.1-.2-.3-.1-.3.1.3.9 1.2 2.4-.1 3-.1 0 0 .2.1.2" fill="#eba352"/><path fill="#3e4347" d="m43.2 45l-3.6-5.5h-12.6l-8.5 5.8-2.4 12.1 6.8 1.4 1.9-9.4 8.6-4.2 5.6 5.9 12.4 2.4 1.3-6.7z"/><path d="m39.6 39.5l-3.9-18.3-9.8 1.8c-.4.1-.8.3-1.1.6l-4.5 4.7-6-2.1-1.3 3.7 7.3 2.5c.9.3 1.8 0 2.3-.8l3.6-3.8.8 11.7h12.6" fill="#47b892"/><path d="m14.1 28.3l.8-1.7c.3-.6 0-1.4-.6-1.6l-.9-.4c-.5-.2-1-.1-1.3.2-1.1-.5-2.8-.8-3.8 1.3-.2.3-1.1 2.2 1.2 3.3 3.4 1.5 3.4 1.5 4.6-1.1" fill="#ffdd67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c4-1f3fb.svg b/riot/emojione/svg/1f3c4-1f3fb.svg new file mode 100644 index 0000000..b76cc56 --- /dev/null +++ b/riot/emojione/svg/1f3c4-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,62H2v-9c38-5.8,60-25,60-25V62z" fill="#75d6ff"/><path d="m18.9 60.9c-2.5-.1-13.3-.4-13.3-2.4 0-.8 3.6-2.4 8.1-3.6 19.9-5.4 39.5-5.7 39.5-4.5 0 .6-.8 1.6 0 2.3 2.2 2 5 2 5 2.1 0 2.2-16.7 7.2-39.3 6.1" fill="#7924a6"/><path d="m53.2 52.7c-.4-.4-.4-.8-.3-1.3-5.6.7-36.2 4.8-46 5.9-.9.5-1.4.9-1.4 1.2 0 .4.4.7 1 .9l48.8-5.4c-.7-.3-1.4-.7-2.1-1.3" fill="#b86acb"/><g fill="#ffe1bd"><path d="m54.9 25.8c-2.2.7-4.1-.3-5.4.1-.3-.7-2.2-1.8-4.6-2.5 0 0-1.5-1.8-3.5-2.1-2-.3-2.8.2-2.6-2.4l-3.3-.7c-.7 2.4-2.9 1.9-4.2 1.8-3.4-.2-5 1.4-5.8 3.9-1 .8-1.9 1.8-2.7 3.1-.8 1.2-1.4 2-1.4 4.3 0 1.7 0 4.7 0 4.7l2.4-.2.5-5.7c0 0 3-1 3.7-3.3-.8 4.5.7 3.7-.3 7.4 0 0 9.9 1.3 9.9 1.3.3-5.9 2.5-3.7 3.5-9.1 0 0 4.6 1.8 7 2.3 2.6.6 7.8-.4 7.8-.4l-1-2.5"/><path d="m60 26.6c-.3-1.8-1.8-2-2.9-1.9 0 0 0-.6-.7-.5l-1.4.2c-.6.1-.9.6-.8 1.1l.3 1.6c.4 2.3.4 2.3 3.7 1.8 2.1-.3 1.8-2 1.8-2.3"/></g><path d="m56.7 24.8c-.1.1-.2.2-.4.3-.2.1-.3.1-.5.1-.3 0-.6.1-.8.1-.2 0-.1.3.1.3.3-.1.6-.1.9-.1.2 0 .4-.1.6-.2.2-.1.3-.2.5-.4 0-.1-.2-.3-.4-.1" fill="#e6b796"/><path d="m25.4 36.4c-.1-.5-.5-.8-1.1-.8l-1.6.1c-2.3.1-2.3.1-2.1 2.9.1 1.9 1.9 1.8 2.2 1.8 1.8-.1 2.1-1.3 2.1-2.3 0 0 .6-.1.6-.6l-.1-1.1" fill="#ffe1bd"/><path d="m38.2 35c0 0 .2.6.6 1 3.6.6 7.5 1.6 8.2 3.2.4 1.1-1.3 4.7-1.6 6.2-.8 4.4-7.4-3-8.4-2.2-.7.5.7 2.3.3 2.7-1.1 1-6.6 2.7-8.6.3-.7-.8-.2-2.3-.6-2.8-3.5-3.2-1.2-5.4-.1-9.5-.1 0 1.6.7 10.2 1.1" fill="#ff71d0"/><g fill="#e6b796"><path d="m23.5 28.8l.9 1.3-.2 2.4c-.1-1.4-.7-3.7-.7-3.7"/><ellipse cx="38.5" cy="27.6" rx=".5" ry=".4"/><ellipse cx="31.3" cy="26.6" rx=".5" ry=".4"/><path d="m28.2 25.1c0 0 .2 2.1 2.7 2.9-1.9-1.4-2.7-2.9-2.7-2.9"/><path d="m45.1 27.4c0 0 2 .9 4-.8-2.1.9-4 .8-4 .8"/></g><g fill="#8f4074"><path d="m36.6 44c0 1.8-1.6 3.2-3.5 3.2s-4 .1-4-1.7.9-4.7 4-4.8c1.9 0 3.5 1.5 3.5 3.3"/><path d="m45.4 42.9c0 1.8-1.2 5.2-2.3 2.1-.6-1.7 1.1-6 2.8-6 2.3 0-.5 2.2-.5 3.9"/></g><g fill="#ffe1bd"><path d="m35.7 44.9c1.7-3.7-4.5-5.5-5.5-1.3-1.1 4.1-.9 6.1-1.1 8.3-.1 1.2-1.1 2-.9 2.4.6 1.5.6 3.7 1.2 4.1.6.5 3.9-.2 4-.7.2-1.2-1.9-2.6-1.3-5.4.4-2.3 2.5-4.9 3.6-7.4"/><path d="m51.3 42.5c0-.8-2.6-2.6-5.4-3.4-1.6.4-2.6 4-2.1 4.6.8 1 2.8 1.4 2.8 1.4-1.4 1.7.3 3.2-.3 6.1-.4 1.9-.3 3.5 1.1 4.5.6.5 4.3-.4 4.1-1.1-.6-1.4-2.3-2.6-2.3-3.8-.4-3 2.2-4.5 2.1-8.3"/></g><g fill="#6ceda9"><path d="m26.2 40.3c0 0 0 1.8 1.9 3.1 0 0 .1-3.8 3-4.9-.1 0-3.7-.3-4.9 1.8"/><path d="m27.4 35.4c0 0-.9 1.2-1.1 3.3 0 0 1.8-2.7 6.1-2.3 0 .1-2.7-1.9-5-1"/><path d="m39.6 36.1c0 0 1.6 0 3.2.7 0 0-3.2-.4-4.8.8 0 0 .1-1.6 1.6-1.5"/><path d="m43.6 37.1c0 0 1.5.4 2.4 1.1 0 0-3-.7-4.6.5.1 0 .7-1.7 2.2-1.6"/><path d="m38.4 35.5c-3.5.8-9-1.2-10.7-.9-.3.1 0-1.3.3-1.3 3.8 0 6.6 1.2 10 1 .3 0 .7 1.1.4 1.2"/></g><path d="m29.9 9.9l.7 1.7 14.8 1.7.8-1.6c.7-6-.4-8.7-7-9.5-6.6-.9-8.6 1.6-9.3 7.7" fill="#594640"/><path d="m45.6 11.6c-.1.3-.2.7-.3.8-.2.3-.6.5-.6.5s.2-.7.2-1.6c.3-5.5-.4-2.9-6.4-3.6-6.1-.7-6.1-3.4-7.1 2.1-.1.9-.1 1.6-.1 1.6s-.3-.2-.5-.6c-.1-.2-.1-.5-.1-.9-.6-.2-1.3-.2-1.5 1.5-.1 1 .2 1.9 1.4 2.2 0 3.5 4.4 6.3 6.4 6.6 2.1.2 6.9-1.5 7.8-4.9 1.3.1 1.8-.7 1.9-1.8.3-1.8-.5-2-1.1-1.9" fill="#ffe1bd"/><g fill="#664e27"><circle cx="34.9" cy="12.1" r="1.3"/><circle cx="41.1" cy="12.9" r="1.3"/><path d="m39.6 16.6c-1.4.9-2.9.7-4.1-.5-.1-.1-.3.1-.2.3.3.8 1 1.5 2.1 1.6 1 .1 1.9-.4 2.4-1.1.1-.2-.1-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c4-1f3fc.svg b/riot/emojione/svg/1f3c4-1f3fc.svg new file mode 100644 index 0000000..f595853 --- /dev/null +++ b/riot/emojione/svg/1f3c4-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,62H2v-9c38-5.8,60-25,60-25V62z" fill="#75d6ff"/><path d="m18.9 60.9c-2.5-.1-13.3-.4-13.3-2.4 0-.8 3.6-2.4 8.1-3.6 19.9-5.4 39.5-5.7 39.5-4.5 0 .6-.8 1.6 0 2.3 2.2 2 5 2 5 2.1 0 2.2-16.7 7.2-39.3 6.1" fill="#7924a6"/><path d="m53.2 52.7c-.4-.4-.4-.8-.3-1.3-5.6.7-36.2 4.8-46 5.9-.9.5-1.4.9-1.4 1.2 0 .4.4.7 1 .9l48.8-5.4c-.7-.3-1.4-.7-2.1-1.3" fill="#b86acb"/><g fill="#fed0ac"><path d="m54.9 25.8c-2.2.7-4.1-.3-5.4.1-.3-.7-2.2-1.8-4.6-2.5 0 0-1.5-1.8-3.5-2.1-2-.3-2.8.2-2.6-2.4l-3.3-.7c-.7 2.4-2.9 1.9-4.2 1.8-3.4-.2-5 1.4-5.8 3.9-1 .8-1.9 1.8-2.7 3.1-.8 1.2-1.4 2-1.4 4.3 0 1.7 0 4.7 0 4.7l2.4-.2.5-5.7c0 0 3-1 3.7-3.3-.8 4.5.7 3.7-.3 7.4 0 0 9.9 1.3 9.9 1.3.3-5.9 2.5-3.7 3.5-9.1 0 0 4.6 1.8 7 2.3 2.6.6 7.8-.4 7.8-.4l-1-2.5"/><path d="m60 26.6c-.3-1.8-1.8-2-2.9-1.9 0 0 0-.6-.7-.5l-1.4.2c-.6.1-.9.6-.8 1.1l.3 1.6c.4 2.3.4 2.3 3.7 1.8 2.1-.3 1.8-2 1.8-2.3"/></g><path d="m56.7 24.8c-.1.1-.2.2-.4.3-.2.1-.3.1-.5.1-.3 0-.6.1-.8.1-.2 0-.1.3.1.3.3-.1.6-.1.9-.1.2 0 .4-.1.6-.2.2-.1.3-.2.5-.4 0-.1-.2-.3-.4-.1" fill="#e0a372"/><path d="m25.4 36.4c-.1-.5-.5-.8-1.1-.8l-1.6.1c-2.3.1-2.3.1-2.1 2.9.1 1.9 1.9 1.8 2.2 1.8 1.8-.1 2.1-1.3 2.1-2.3 0 0 .6-.1.6-.6l-.1-1.1" fill="#fed0ac"/><path d="m38.2 35c0 0 .2.6.6 1 3.6.6 7.5 1.6 8.2 3.2.4 1.1-1.3 4.7-1.6 6.2-.8 4.4-7.4-3-8.4-2.2-.7.5.7 2.3.3 2.7-1.1 1-6.6 2.7-8.6.3-.7-.8-.2-2.3-.6-2.8-3.5-3.2-1.2-5.4-.1-9.5-.1 0 1.6.7 10.2 1.1" fill="#ff71d0"/><g fill="#e0a372"><path d="m23.5 28.8l.9 1.3-.2 2.4c-.1-1.4-.7-3.7-.7-3.7"/><ellipse cx="38.5" cy="27.6" rx=".5" ry=".4"/><ellipse cx="31.3" cy="26.6" rx=".5" ry=".4"/><path d="m28.2 25.1c0 0 .2 2.1 2.7 2.9-1.9-1.4-2.7-2.9-2.7-2.9"/><path d="m45.1 27.4c0 0 2 .9 4-.8-2.1.9-4 .8-4 .8"/></g><g fill="#8f4074"><path d="m36.6 44c0 1.8-1.6 3.2-3.5 3.2s-4 .1-4-1.7.9-4.7 4-4.8c1.9 0 3.5 1.5 3.5 3.3"/><path d="m45.4 42.9c0 1.8-1.2 5.2-2.3 2.1-.6-1.7 1.1-6 2.8-6 2.3 0-.5 2.2-.5 3.9"/></g><g fill="#fed0ac"><path d="m35.7 44.9c1.7-3.7-4.5-5.5-5.5-1.3-1.1 4.1-.9 6.1-1.1 8.3-.1 1.2-1.1 2-.9 2.4.6 1.5.6 3.7 1.2 4.1.6.5 3.9-.2 4-.7.2-1.2-1.9-2.6-1.3-5.4.4-2.3 2.5-4.9 3.6-7.4"/><path d="m51.3 42.5c0-.8-2.6-2.6-5.4-3.4-1.6.4-2.6 4-2.1 4.6.8 1 2.8 1.4 2.8 1.4-1.4 1.7.3 3.2-.3 6.1-.4 1.9-.3 3.5 1.1 4.5.6.5 4.3-.4 4.1-1.1-.6-1.4-2.3-2.6-2.3-3.8-.4-3 2.2-4.5 2.1-8.3"/></g><g fill="#6ceda9"><path d="m26.2 40.3c0 0 0 1.8 1.9 3.1 0 0 .1-3.8 3-4.9-.1 0-3.7-.3-4.9 1.8"/><path d="m27.4 35.4c0 0-.9 1.2-1.1 3.3 0 0 1.8-2.7 6.1-2.3 0 .1-2.7-1.9-5-1"/><path d="m39.6 36.1c0 0 1.6 0 3.2.7 0 0-3.2-.4-4.8.8 0 0 .1-1.6 1.6-1.5"/><path d="m43.6 37.1c0 0 1.5.4 2.4 1.1 0 0-3-.7-4.6.5.1 0 .7-1.7 2.2-1.6"/><path d="m38.4 35.5c-3.5.8-9-1.2-10.7-.9-.3.1 0-1.3.3-1.3 3.8 0 6.6 1.2 10 1 .3 0 .7 1.1.4 1.2"/></g><path d="m29.9 9.9l.7 1.7 14.8 1.7.8-1.6c.7-6-.4-8.7-7-9.5-6.6-.9-8.6 1.6-9.3 7.7" fill="#dbb471"/><path d="m45.6 11.6c-.1.3-.2.7-.3.8-.2.3-.6.5-.6.5s.2-.7.2-1.6c.3-5.5-.4-2.9-6.4-3.6-6.1-.7-6.1-3.4-7.1 2.1-.1.9-.1 1.6-.1 1.6s-.3-.2-.5-.6c-.1-.2-.1-.5-.1-.9-.6-.2-1.3-.2-1.5 1.5-.1 1 .2 1.9 1.4 2.2 0 3.5 4.4 6.3 6.4 6.6 2.1.2 6.9-1.5 7.8-4.9 1.3.1 1.8-.7 1.9-1.8.3-1.8-.5-2-1.1-1.9" fill="#fed0ac"/><g fill="#664e27"><circle cx="34.9" cy="12.1" r="1.3"/><circle cx="41.1" cy="12.9" r="1.3"/><path d="m39.6 16.6c-1.4.9-2.9.7-4.1-.5-.1-.1-.3.1-.2.3.3.8 1 1.5 2.1 1.6 1 .1 1.9-.4 2.4-1.1.1-.2-.1-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c4-1f3fd.svg b/riot/emojione/svg/1f3c4-1f3fd.svg new file mode 100644 index 0000000..5ddcf25 --- /dev/null +++ b/riot/emojione/svg/1f3c4-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,62H2v-9c38-5.8,60-25,60-25V62z" fill="#75d6ff"/><path d="m18.9 60.9c-2.5-.1-13.3-.4-13.3-2.4 0-.8 3.6-2.4 8.1-3.6 19.9-5.4 39.5-5.7 39.5-4.5 0 .6-.8 1.6 0 2.3 2.2 2 5 2 5 2.1 0 2.2-16.7 7.2-39.3 6.1" fill="#7924a6"/><path d="m53.2 52.7c-.4-.4-.4-.8-.3-1.3-5.6.7-36.2 4.8-46 5.9-.9.5-1.4.9-1.4 1.2 0 .4.4.7 1 .9l48.8-5.4c-.7-.3-1.4-.7-2.1-1.3" fill="#b86acb"/><g fill="#d6a57c"><path d="m54.9 25.8c-2.2.7-4.1-.3-5.4.1-.3-.7-2.2-1.8-4.6-2.5 0 0-1.5-1.8-3.5-2.1-2-.3-2.8.2-2.6-2.4l-3.3-.7c-.7 2.4-2.9 1.9-4.2 1.8-3.4-.2-5 1.4-5.8 3.9-1 .8-1.9 1.8-2.7 3.1-.8 1.2-1.4 2-1.4 4.3 0 1.7 0 4.7 0 4.7l2.4-.2.5-5.7c0 0 3-1 3.7-3.3-.8 4.5.7 3.7-.3 7.4 0 0 9.9 1.3 9.9 1.3.3-5.9 2.5-3.7 3.5-9.1 0 0 4.6 1.8 7 2.3 2.6.6 7.8-.4 7.8-.4l-1-2.5"/><path d="m60 26.6c-.3-1.8-1.8-2-2.9-1.9 0 0 0-.6-.7-.5l-1.4.2c-.6.1-.9.6-.8 1.1l.3 1.6c.4 2.3.4 2.3 3.7 1.8 2.1-.3 1.8-2 1.8-2.3"/></g><path d="m56.7 24.8c-.1.1-.2.2-.4.3-.2.1-.3.1-.5.1-.3 0-.6.1-.8.1-.2 0-.1.3.1.3.3-.1.6-.1.9-.1.2 0 .4-.1.6-.2.2-.1.3-.2.5-.4 0-.1-.2-.3-.4-.1" fill="#b58360"/><path d="m25.4 36.4c-.1-.5-.5-.8-1.1-.8l-1.6.1c-2.3.1-2.3.1-2.1 2.9.1 1.9 1.9 1.8 2.2 1.8 1.8-.1 2.1-1.3 2.1-2.3 0 0 .6-.1.6-.6l-.1-1.1" fill="#d6a57c"/><path d="m38.2 35c0 0 .2.6.6 1 3.6.6 7.5 1.6 8.2 3.2.4 1.1-1.3 4.7-1.6 6.2-.8 4.4-7.4-3-8.4-2.2-.7.5.7 2.3.3 2.7-1.1 1-6.6 2.7-8.6.3-.7-.8-.2-2.3-.6-2.8-3.5-3.2-1.2-5.4-.1-9.5-.1 0 1.6.7 10.2 1.1" fill="#ff71d0"/><g fill="#b58360"><path d="m23.5 28.8l.9 1.3-.2 2.4c-.1-1.4-.7-3.7-.7-3.7"/><ellipse cx="38.5" cy="27.6" rx=".5" ry=".4"/><ellipse cx="31.3" cy="26.6" rx=".5" ry=".4"/><path d="m28.2 25.1c0 0 .2 2.1 2.7 2.9-1.9-1.4-2.7-2.9-2.7-2.9"/><path d="m45.1 27.4c0 0 2 .9 4-.8-2.1.9-4 .8-4 .8"/></g><g fill="#8f4074"><path d="m36.6 44c0 1.8-1.6 3.2-3.5 3.2s-4 .1-4-1.7.9-4.7 4-4.8c1.9 0 3.5 1.5 3.5 3.3"/><path d="m45.4 42.9c0 1.8-1.2 5.2-2.3 2.1-.6-1.7 1.1-6 2.8-6 2.3 0-.5 2.2-.5 3.9"/></g><g fill="#d6a57c"><path d="m35.7 44.9c1.7-3.7-4.5-5.5-5.5-1.3-1.1 4.1-.9 6.1-1.1 8.3-.1 1.2-1.1 2-.9 2.4.6 1.5.6 3.7 1.2 4.1.6.5 3.9-.2 4-.7.2-1.2-1.9-2.6-1.3-5.4.4-2.3 2.5-4.9 3.6-7.4"/><path d="m51.3 42.5c0-.8-2.6-2.6-5.4-3.4-1.6.4-2.6 4-2.1 4.6.8 1 2.8 1.4 2.8 1.4-1.4 1.7.3 3.2-.3 6.1-.4 1.9-.3 3.5 1.1 4.5.6.5 4.3-.4 4.1-1.1-.6-1.4-2.3-2.6-2.3-3.8-.4-3 2.2-4.5 2.1-8.3"/></g><g fill="#6ceda9"><path d="m26.2 40.3c0 0 0 1.8 1.9 3.1 0 0 .1-3.8 3-4.9-.1 0-3.7-.3-4.9 1.8"/><path d="m27.4 35.4c0 0-.9 1.2-1.1 3.3 0 0 1.8-2.7 6.1-2.3 0 .1-2.7-1.9-5-1"/><path d="m39.6 36.1c0 0 1.6 0 3.2.7 0 0-3.2-.4-4.8.8 0 0 .1-1.6 1.6-1.5"/><path d="m43.6 37.1c0 0 1.5.4 2.4 1.1 0 0-3-.7-4.6.5.1 0 .7-1.7 2.2-1.6"/><path d="m38.4 35.5c-3.5.8-9-1.2-10.7-.9-.3.1 0-1.3.3-1.3 3.8 0 6.6 1.2 10 1 .3 0 .7 1.1.4 1.2"/></g><path d="m29.9 9.9l.7 1.7 14.8 1.7.8-1.6c.7-6-.4-8.7-7-9.5-6.6-.9-8.6 1.6-9.3 7.7" fill="#594640"/><path d="m45.6 11.6c-.1.3-.2.7-.3.8-.2.3-.6.5-.6.5s.2-.7.2-1.6c.3-5.5-.4-2.9-6.4-3.6-6.1-.7-6.1-3.4-7.1 2.1-.1.9-.1 1.6-.1 1.6s-.3-.2-.5-.6c-.1-.2-.1-.5-.1-.9-.6-.2-1.3-.2-1.5 1.5-.1 1 .2 1.9 1.4 2.2 0 3.5 4.4 6.3 6.4 6.6 2.1.2 6.9-1.5 7.8-4.9 1.3.1 1.8-.7 1.9-1.8.3-1.8-.5-2-1.1-1.9" fill="#d6a57c"/><g fill="#664e27"><circle cx="34.9" cy="12.1" r="1.3"/><circle cx="41.1" cy="12.9" r="1.3"/><path d="m39.6 16.6c-1.4.9-2.9.7-4.1-.5-.1-.1-.3.1-.2.3.3.8 1 1.5 2.1 1.6 1 .1 1.9-.4 2.4-1.1.1-.2-.1-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c4-1f3fe.svg b/riot/emojione/svg/1f3c4-1f3fe.svg new file mode 100644 index 0000000..bf0fa36 --- /dev/null +++ b/riot/emojione/svg/1f3c4-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,62H2v-9c38-5.8,60-25,60-25V62z" fill="#75d6ff"/><path d="m18.9 60.9c-2.5-.1-13.3-.4-13.3-2.4 0-.8 3.6-2.4 8.1-3.6 19.9-5.4 39.5-5.7 39.5-4.5 0 .6-.8 1.6 0 2.3 2.2 2 5 2 5 2.1 0 2.2-16.7 7.2-39.3 6.1" fill="#7924a6"/><path d="m53.2 52.7c-.4-.4-.4-.8-.3-1.3-5.6.7-36.2 4.8-46 5.9-.9.5-1.4.9-1.4 1.2 0 .4.4.7 1 .9l48.8-5.4c-.7-.3-1.4-.7-2.1-1.3" fill="#b86acb"/><g fill="#b47d56"><path d="m54.9 25.8c-2.2.7-4.1-.3-5.4.1-.3-.7-2.2-1.8-4.6-2.5 0 0-1.5-1.8-3.5-2.1-2-.3-2.8.2-2.6-2.4l-3.3-.7c-.7 2.4-2.9 1.9-4.2 1.8-3.4-.2-5 1.4-5.8 3.9-1 .8-1.9 1.8-2.7 3.1-.8 1.2-1.4 2-1.4 4.3 0 1.7 0 4.7 0 4.7l2.4-.2.5-5.7c0 0 3-1 3.7-3.3-.8 4.5.7 3.7-.3 7.4 0 0 9.9 1.3 9.9 1.3.3-5.9 2.5-3.7 3.5-9.1 0 0 4.6 1.8 7 2.3 2.6.6 7.8-.4 7.8-.4l-1-2.5"/><path d="m60 26.6c-.3-1.8-1.8-2-2.9-1.9 0 0 0-.6-.7-.5l-1.4.2c-.6.1-.9.6-.8 1.1l.3 1.6c.4 2.3.4 2.3 3.7 1.8 2.1-.3 1.8-2 1.8-2.3"/></g><path d="m56.7 24.8c-.1.1-.2.2-.4.3-.2.1-.3.1-.5.1-.3 0-.6.1-.8.1-.2 0-.1.3.1.3.3-.1.6-.1.9-.1.2 0 .4-.1.6-.2.2-.1.3-.2.5-.4 0-.1-.2-.3-.4-.1" fill="#935e3e"/><path d="m25.4 36.4c-.1-.5-.5-.8-1.1-.8l-1.6.1c-2.3.1-2.3.1-2.1 2.9.1 1.9 1.9 1.8 2.2 1.8 1.8-.1 2.1-1.3 2.1-2.3 0 0 .6-.1.6-.6l-.1-1.1" fill="#b47d56"/><path d="m38.2 35c0 0 .2.6.6 1 3.6.6 7.5 1.6 8.2 3.2.4 1.1-1.3 4.7-1.6 6.2-.8 4.4-7.4-3-8.4-2.2-.7.5.7 2.3.3 2.7-1.1 1-6.6 2.7-8.6.3-.7-.8-.2-2.3-.6-2.8-3.5-3.2-1.2-5.4-.1-9.5-.1 0 1.6.7 10.2 1.1" fill="#ff71d0"/><g fill="#935e3e"><path d="m23.5 28.8l.9 1.3-.2 2.4c-.1-1.4-.7-3.7-.7-3.7"/><ellipse cx="38.5" cy="27.6" rx=".5" ry=".4"/><ellipse cx="31.3" cy="26.6" rx=".5" ry=".4"/><path d="m28.2 25.1c0 0 .2 2.1 2.7 2.9-1.9-1.4-2.7-2.9-2.7-2.9"/><path d="m45.1 27.4c0 0 2 .9 4-.8-2.1.9-4 .8-4 .8"/></g><g fill="#8f4074"><path d="m36.6 44c0 1.8-1.6 3.2-3.5 3.2s-4 .1-4-1.7.9-4.7 4-4.8c1.9 0 3.5 1.5 3.5 3.3"/><path d="m45.4 42.9c0 1.8-1.2 5.2-2.3 2.1-.6-1.7 1.1-6 2.8-6 2.3 0-.5 2.2-.5 3.9"/></g><g fill="#b47d56"><path d="m35.7 44.9c1.7-3.7-4.5-5.5-5.5-1.3-1.1 4.1-.9 6.1-1.1 8.3-.1 1.2-1.1 2-.9 2.4.6 1.5.6 3.7 1.2 4.1.6.5 3.9-.2 4-.7.2-1.2-1.9-2.6-1.3-5.4.4-2.3 2.5-4.9 3.6-7.4"/><path d="m51.3 42.5c0-.8-2.6-2.6-5.4-3.4-1.6.4-2.6 4-2.1 4.6.8 1 2.8 1.4 2.8 1.4-1.4 1.7.3 3.2-.3 6.1-.4 1.9-.3 3.5 1.1 4.5.6.5 4.3-.4 4.1-1.1-.6-1.4-2.3-2.6-2.3-3.8-.4-3 2.2-4.5 2.1-8.3"/></g><g fill="#6ceda9"><path d="m26.2 40.3c0 0 0 1.8 1.9 3.1 0 0 .1-3.8 3-4.9-.1 0-3.7-.3-4.9 1.8"/><path d="m27.4 35.4c0 0-.9 1.2-1.1 3.3 0 0 1.8-2.7 6.1-2.3 0 .1-2.7-1.9-5-1"/><path d="m39.6 36.1c0 0 1.6 0 3.2.7 0 0-3.2-.4-4.8.8 0 0 .1-1.6 1.6-1.5"/><path d="m43.6 37.1c0 0 1.5.4 2.4 1.1 0 0-3-.7-4.6.5.1 0 .7-1.7 2.2-1.6"/><path d="m38.4 35.5c-3.5.8-9-1.2-10.7-.9-.3.1 0-1.3.3-1.3 3.8 0 6.6 1.2 10 1 .3 0 .7 1.1.4 1.2"/></g><path d="m29.9 9.9l.7 1.7 14.8 1.7.8-1.6c.7-6-.4-8.7-7-9.5-6.6-.9-8.6 1.6-9.3 7.7" fill="#231f20"/><path d="m45.6 11.6c-.1.3-.2.7-.3.8-.2.3-.6.5-.6.5s.2-.7.2-1.6c.3-5.5-.4-2.9-6.4-3.6-6.1-.7-6.1-3.4-7.1 2.1-.1.9-.1 1.6-.1 1.6s-.3-.2-.5-.6c-.1-.2-.1-.5-.1-.9-.6-.2-1.3-.2-1.5 1.5-.1 1 .2 1.9 1.4 2.2 0 3.5 4.4 6.3 6.4 6.6 2.1.2 6.9-1.5 7.8-4.9 1.3.1 1.8-.7 1.9-1.8.3-1.8-.5-2-1.1-1.9" fill="#b47d56"/><g fill="#664e27"><circle cx="34.9" cy="12.1" r="1.3"/><circle cx="41.1" cy="12.9" r="1.3"/><path d="m39.6 16.6c-1.4.9-2.9.7-4.1-.5-.1-.1-.3.1-.2.3.3.8 1 1.5 2.1 1.6 1 .1 1.9-.4 2.4-1.1.1-.2-.1-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c4-1f3ff.svg b/riot/emojione/svg/1f3c4-1f3ff.svg new file mode 100644 index 0000000..294226d --- /dev/null +++ b/riot/emojione/svg/1f3c4-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,62H2v-9c38-5.8,60-25,60-25V62z" fill="#75d6ff"/><path d="m18.9 60.9c-2.5-.1-13.3-.4-13.3-2.4 0-.8 3.6-2.4 8.1-3.6 19.9-5.4 39.5-5.7 39.5-4.5 0 .6-.8 1.6 0 2.3 2.2 2 5 2 5 2.1 0 2.2-16.7 7.2-39.3 6.1" fill="#7924a6"/><path d="m53.2 52.7c-.4-.4-.4-.8-.3-1.3-5.6.7-36.2 4.8-46 5.9-.9.5-1.4.9-1.4 1.2 0 .4.4.7 1 .9l48.8-5.4c-.7-.3-1.4-.7-2.1-1.3" fill="#b86acb"/><g fill="#8a6859"><path d="m54.9 25.8c-2.2.7-4.1-.3-5.4.1-.3-.7-2.2-1.8-4.6-2.5 0 0-1.5-1.8-3.5-2.1-2-.3-2.8.2-2.6-2.4l-3.3-.7c-.7 2.4-2.9 1.9-4.2 1.8-3.4-.2-5 1.4-5.8 3.9-1 .8-1.9 1.8-2.7 3.1-.8 1.2-1.4 2-1.4 4.3 0 1.7 0 4.7 0 4.7l2.4-.2.5-5.7c0 0 3-1 3.7-3.3-.8 4.5.7 3.7-.3 7.4 0 0 9.9 1.3 9.9 1.3.3-5.9 2.5-3.7 3.5-9.1 0 0 4.6 1.8 7 2.3 2.6.6 7.8-.4 7.8-.4l-1-2.5"/><path d="m60 26.6c-.3-1.8-1.8-2-2.9-1.9 0 0 0-.6-.7-.5l-1.4.2c-.6.1-.9.6-.8 1.1l.3 1.6c.4 2.3.4 2.3 3.7 1.8 2.1-.3 1.8-2 1.8-2.3"/></g><path d="m56.7 24.8c-.1.1-.2.2-.4.3-.2.1-.3.1-.5.1-.3 0-.6.1-.8.1-.2 0-.1.3.1.3.3-.1.6-.1.9-.1.2 0 .4-.1.6-.2.2-.1.3-.2.5-.4 0-.1-.2-.3-.4-.1" fill="#705041"/><path d="m25.4 36.4c-.1-.5-.5-.8-1.1-.8l-1.6.1c-2.3.1-2.3.1-2.1 2.9.1 1.9 1.9 1.8 2.2 1.8 1.8-.1 2.1-1.3 2.1-2.3 0 0 .6-.1.6-.6l-.1-1.1" fill="#8a6859"/><path d="m38.2 35c0 0 .2.6.6 1 3.6.6 7.5 1.6 8.2 3.2.4 1.1-1.3 4.7-1.6 6.2-.8 4.4-7.4-3-8.4-2.2-.7.5.7 2.3.3 2.7-1.1 1-6.6 2.7-8.6.3-.7-.8-.2-2.3-.6-2.8-3.5-3.2-1.2-5.4-.1-9.5-.1 0 1.6.7 10.2 1.1" fill="#ff71d0"/><g fill="#705041"><path d="m23.5 28.8l.9 1.3-.2 2.4c-.1-1.4-.7-3.7-.7-3.7"/><ellipse cx="38.5" cy="27.6" rx=".5" ry=".4"/><ellipse cx="31.3" cy="26.6" rx=".5" ry=".4"/><path d="m28.2 25.1c0 0 .2 2.1 2.7 2.9-1.9-1.4-2.7-2.9-2.7-2.9"/><path d="m45.1 27.4c0 0 2 .9 4-.8-2.1.9-4 .8-4 .8"/></g><g fill="#8f4074"><path d="m36.6 44c0 1.8-1.6 3.2-3.5 3.2s-4 .1-4-1.7.9-4.7 4-4.8c1.9 0 3.5 1.5 3.5 3.3"/><path d="m45.4 42.9c0 1.8-1.2 5.2-2.3 2.1-.6-1.7 1.1-6 2.8-6 2.3 0-.5 2.2-.5 3.9"/></g><g fill="#8a6859"><path d="m35.7 44.9c1.7-3.7-4.5-5.5-5.5-1.3-1.1 4.1-.9 6.1-1.1 8.3-.1 1.2-1.1 2-.9 2.4.6 1.5.6 3.7 1.2 4.1.6.5 3.9-.2 4-.7.2-1.2-1.9-2.6-1.3-5.4.4-2.3 2.5-4.9 3.6-7.4"/><path d="m51.3 42.5c0-.8-2.6-2.6-5.4-3.4-1.6.4-2.6 4-2.1 4.6.8 1 2.8 1.4 2.8 1.4-1.4 1.7.3 3.2-.3 6.1-.4 1.9-.3 3.5 1.1 4.5.6.5 4.3-.4 4.1-1.1-.6-1.4-2.3-2.6-2.3-3.8-.4-3 2.2-4.5 2.1-8.3"/></g><g fill="#6ceda9"><path d="m26.2 40.3c0 0 0 1.8 1.9 3.1 0 0 .1-3.8 3-4.9-.1 0-3.7-.3-4.9 1.8"/><path d="m27.4 35.4c0 0-.9 1.2-1.1 3.3 0 0 1.8-2.7 6.1-2.3 0 .1-2.7-1.9-5-1"/><path d="m39.6 36.1c0 0 1.6 0 3.2.7 0 0-3.2-.4-4.8.8 0 0 .1-1.6 1.6-1.5"/><path d="m43.6 37.1c0 0 1.5.4 2.4 1.1 0 0-3-.7-4.6.5.1 0 .7-1.7 2.2-1.6"/><path d="m38.4 35.5c-3.5.8-9-1.2-10.7-.9-.3.1 0-1.3.3-1.3 3.8 0 6.6 1.2 10 1 .3 0 .7 1.1.4 1.2"/></g><path d="m29.9 9.9l.7 1.7 14.8 1.7.8-1.6c.7-6-.4-8.7-7-9.5-6.6-.9-8.6 1.6-9.3 7.7" fill="#231f20"/><path d="m45.6 11.6c-.1.3-.2.7-.3.8-.2.3-.6.5-.6.5s.2-.7.2-1.6c.3-5.5-.4-2.9-6.4-3.6-6.1-.7-6.1-3.4-7.1 2.1-.1.9-.1 1.6-.1 1.6s-.3-.2-.5-.6c-.1-.2-.1-.5-.1-.9-.6-.2-1.3-.2-1.5 1.5-.1 1 .2 1.9 1.4 2.2 0 3.5 4.4 6.3 6.4 6.6 2.1.2 6.9-1.5 7.8-4.9 1.3.1 1.8-.7 1.9-1.8.3-1.8-.5-2-1.1-1.9" fill="#8a6859"/><g fill="#574137"><circle cx="34.9" cy="12.1" r="1.3"/><circle cx="41.1" cy="12.9" r="1.3"/><path d="m39.6 16.6c-1.4.9-2.9.7-4.1-.5-.1-.1-.3.1-.2.3.3.8 1 1.5 2.1 1.6 1 .1 1.9-.4 2.4-1.1.1-.2-.1-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c4.svg b/riot/emojione/svg/1f3c4.svg new file mode 100644 index 0000000..53b845c --- /dev/null +++ b/riot/emojione/svg/1f3c4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,62H2v-9c38-5.8,60-25,60-25V62z" fill="#75d6ff"/><path d="m18.9 60.9c-2.5-.1-13.3-.4-13.3-2.4 0-.8 3.6-2.4 8.1-3.6 19.9-5.4 39.5-5.7 39.5-4.5 0 .6-.8 1.6 0 2.3 2.2 2 5 2 5 2.1 0 2.2-16.7 7.2-39.3 6.1" fill="#7924a6"/><path d="m53.2 52.7c-.4-.4-.4-.8-.3-1.3-5.6.7-36.2 4.8-46 5.9-.9.5-1.4.9-1.4 1.2 0 .4.4.7 1 .9l48.8-5.4c-.7-.3-1.4-.7-2.1-1.3" fill="#b86acb"/><g fill="#ffdd67"><path d="m54.9 25.8c-2.2.7-4.1-.3-5.4.1-.3-.7-2.2-1.8-4.6-2.5 0 0-1.5-1.8-3.5-2.1-2-.3-2.8.2-2.6-2.4l-3.3-.7c-.7 2.4-2.9 1.9-4.2 1.8-3.4-.2-5 1.4-5.8 3.9-1 .8-1.9 1.8-2.7 3.1-.8 1.2-1.4 2-1.4 4.3 0 1.7 0 4.7 0 4.7l2.4-.2.5-5.7c0 0 3-1 3.7-3.3-.8 4.5.7 3.7-.3 7.4 0 0 9.9 1.3 9.9 1.3.3-5.9 2.5-3.7 3.5-9.1 0 0 4.6 1.8 7 2.3 2.6.6 7.8-.4 7.8-.4l-1-2.5"/><path d="m60 26.6c-.3-1.8-1.8-2-2.9-1.9 0 0 0-.6-.7-.5l-1.4.2c-.6.1-.9.6-.8 1.1l.3 1.6c.4 2.3.4 2.3 3.7 1.8 2.1-.3 1.8-2 1.8-2.3"/></g><path d="m56.7 24.8c-.1.1-.2.2-.4.3-.2.1-.3.1-.5.1-.3 0-.6.1-.8.1-.2 0-.1.3.1.3.3-.1.6-.1.9-.1.2 0 .4-.1.6-.2.2-.1.3-.2.5-.4 0-.1-.2-.3-.4-.1" fill="#eba352"/><path d="m25.4 36.4c-.1-.5-.5-.8-1.1-.8l-1.6.1c-2.3.1-2.3.1-2.1 2.9.1 1.9 1.9 1.8 2.2 1.8 1.8-.1 2.1-1.3 2.1-2.3 0 0 .6-.1.6-.6l-.1-1.1" fill="#ffdd67"/><path d="m38.2 35c0 0 .2.6.6 1 3.6.6 7.5 1.6 8.2 3.2.4 1.1-1.3 4.7-1.6 6.2-.8 4.4-7.4-3-8.4-2.2-.7.5.7 2.3.3 2.7-1.1 1-6.6 2.7-8.6.3-.7-.8-.2-2.3-.6-2.8-3.5-3.2-1.2-5.4-.1-9.5-.1 0 1.6.7 10.2 1.1" fill="#ff71d0"/><g fill="#eba352"><path d="m23.5 28.8l.9 1.3-.2 2.4c-.1-1.4-.7-3.7-.7-3.7"/><ellipse cx="38.5" cy="27.6" rx=".5" ry=".4"/><ellipse cx="31.3" cy="26.6" rx=".5" ry=".4"/><path d="m28.2 25.1c0 0 .2 2.1 2.7 2.9-1.9-1.4-2.7-2.9-2.7-2.9"/><path d="m45.1 27.4c0 0 2 .9 4-.8-2.1.9-4 .8-4 .8"/></g><g fill="#8f4074"><path d="m36.6 44c0 1.8-1.6 3.2-3.5 3.2s-4 .1-4-1.7.9-4.7 4-4.8c1.9 0 3.5 1.5 3.5 3.3"/><path d="m45.4 42.9c0 1.8-1.2 5.2-2.3 2.1-.6-1.7 1.1-6 2.8-6 2.3 0-.5 2.2-.5 3.9"/></g><g fill="#ffdd67"><path d="m35.7 44.9c1.7-3.7-4.5-5.5-5.5-1.3-1.1 4.1-.9 6.1-1.1 8.3-.1 1.2-1.1 2-.9 2.4.6 1.5.6 3.7 1.2 4.1.6.5 3.9-.2 4-.7.2-1.2-1.9-2.6-1.3-5.4.4-2.3 2.5-4.9 3.6-7.4"/><path d="m51.3 42.5c0-.8-2.6-2.6-5.4-3.4-1.6.4-2.6 4-2.1 4.6.8 1 2.8 1.4 2.8 1.4-1.4 1.7.3 3.2-.3 6.1-.4 1.9-.3 3.5 1.1 4.5.6.5 4.3-.4 4.1-1.1-.6-1.4-2.3-2.6-2.3-3.8-.4-3 2.2-4.5 2.1-8.3"/></g><g fill="#6ceda9"><path d="m26.2 40.3c0 0 0 1.8 1.9 3.1 0 0 .1-3.8 3-4.9-.1 0-3.7-.3-4.9 1.8"/><path d="m27.4 35.4c0 0-.9 1.2-1.1 3.3 0 0 1.8-2.7 6.1-2.3 0 .1-2.7-1.9-5-1"/><path d="m39.6 36.1c0 0 1.6 0 3.2.7 0 0-3.2-.4-4.8.8 0 0 .1-1.6 1.6-1.5"/><path d="m43.6 37.1c0 0 1.5.4 2.4 1.1 0 0-3-.7-4.6.5.1 0 .7-1.7 2.2-1.6"/><path d="m38.4 35.5c-3.5.8-9-1.2-10.7-.9-.3.1 0-1.3.3-1.3 3.8 0 6.6 1.2 10 1 .3 0 .7 1.1.4 1.2"/></g><path d="m29.9 9.9l.7 1.7 14.8 1.7.8-1.6c.7-6-.4-8.7-7-9.5-6.6-.9-8.6 1.6-9.3 7.7" fill="#ffb300"/><path d="m45.6 11.6c-.1.3-.2.7-.3.8-.2.3-.6.5-.6.5s.2-.7.2-1.6c.3-5.5-.4-2.9-6.4-3.6-6.1-.7-6.1-3.4-7.1 2.1-.1.9-.1 1.6-.1 1.6s-.3-.2-.5-.6c-.1-.2-.1-.5-.1-.9-.6-.2-1.3-.2-1.5 1.5-.1 1 .2 1.9 1.4 2.2 0 3.5 4.4 6.3 6.4 6.6 2.1.2 6.9-1.5 7.8-4.9 1.3.1 1.8-.7 1.9-1.8.3-1.8-.5-2-1.1-1.9" fill="#ffdd67"/><g fill="#937237"><circle cx="34.9" cy="12.1" r="1.3"/><circle cx="41.1" cy="12.9" r="1.3"/><path d="m39.6 16.6c-1.4.9-2.9.7-4.1-.5-.1-.1-.3.1-.2.3.3.8 1 1.5 2.1 1.6 1 .1 1.9-.4 2.4-1.1.1-.2-.1-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c5.svg b/riot/emojione/svg/1f3c5.svg new file mode 100644 index 0000000..4862d3c --- /dev/null +++ b/riot/emojione/svg/1f3c5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#428bc1" d="m47.8 2l-12.6 19h6.3l12.6-19z"/><path fill="#e8e8e8" d="m41.5 2l-12.7 19h6.4l12.6-19z"/><path fill="#ed4c5c" d="m35.2 2l-12.7 19h6.3l12.7-19z"/><path d="m20.4 16.8c-.6 0-1.1.5-1.1 1.1v9.5c0 .6.5 1.1 1.1 1.1h23.2c.6 0 1.1-.5 1.1-1.1v-9.5c0-.6-.5-1.1-1.1-1.1h-23.2m22.1 7.3c0 .6-.5 1.1-1.1 1.1h-19c-.6 0-1.1-.5-1.1-1.1v-4.2c0-.6.5-1.1 1.1-1.1h19c.6 0 1.1.5 1.1 1.1v4.2" fill="#ffc200"/><path fill="#ed4c5c" d="m22.5 21h6.3l-12.6-19h-6.3z"/><path fill="#e8e8e8" d="m28.8 21h6.4l-12.7-19h-6.3z"/><path opacity=".5" fill="#3e4347" d="m33.1 5.2l-3.2 4.7 7.4 11.1h4.2l1-1.6z"/><path fill="#428bc1" d="m35.2 21h6.3l-12.7-19h-6.3z"/><circle cx="32" cy="42.3" r="19.7" fill="#ffc200"/><path d="m32.3 24.4c-10.1 0-18.2 8.2-18.2 18.2 0 3 .7 5.8 2 8.3-.6-2-1-4.1-1-6.3 0-10.7 8.2-19.4 18.7-20.2-.5 0-1 0-1.5 0" fill="#e68a00"/><path d="m46 31c5.1 9 2.5 20.6-6.4 26.5-1.8 1.2-3.8 2.1-5.8 2.7 2.8-.3 5.5-1.3 8-3 8.4-5.6 10.6-16.8 5.1-25-.3-.4-.6-.8-.9-1.2" fill="#ffe394"/><path fill="#f2b200" d="m32 34.3v-6.4l-3.2 10 1.4 1.8z"/><path fill="#e68a00" d="m33.8 39.7l1.4-1.8-3.2-10v6.4z"/><path fill="#c47500" d="m34.8 43l2.4 1.1 8.5-6.2-6.3 1.8z"/><path fill="#ffe394" d="m39.4 39.7l6.3-1.8h-10.5l-1.4 1.8z"/><path fill="#ffd252" d="m30.2 39.7l-1.4-1.8h-10.5l6.3 1.8z"/><path fill="#ffdb75" d="m24.6 39.7l-6.3-1.8 8.4 6.2 2.5-1.1z"/><path fill="#e68a00" d="m34.8 43l1.8 5.4 3.9 5.7-3.3-10z"/><g fill="#f2b200"><path d="m32 45.1v2.8l8.5 6.2-3.9-5.7z"/><path d="m29.2 43l-2.5 1.1-3.2 10 3.9-5.7z"/></g><path fill="#e68a00" d="m27.4 48.4l-3.9 5.7 8.5-6.2v-2.8z"/><path fill="#ffce31" d="m33.8 39.7l-1.8-5.4-1.8 5.4h-5.6l4.6 3.3-1.8 5.4 4.6-3.3 4.6 3.3-1.8-5.4 4.6-3.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c6.svg b/riot/emojione/svg/1f3c6.svg new file mode 100644 index 0000000..025592e --- /dev/null +++ b/riot/emojione/svg/1f3c6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#f2b200"><path d="m12.7 31.7c-.5 0-1.1-.1-1.5-.4-1.3-.7-2.9-2.5-2.9-7.3 0-10-5.4-15.8-5.4-15.8l-.9-1 4.7-5.2.8 1.2c.1.1 2.6 3.7 6.5 2.7l.5 2.6c-3.9 1-6.7-1.1-8.1-2.6l-1 1.3c1.7 2.2 5.3 8 5.3 16.8 0 2.6.5 4.4 1.5 4.9.7.4 1.8 0 2.8-1 2.6-2.6 4.5-9 4.5-9l2.2.8c-.1.3-2.1 7.2-5.2 10.2-1.3 1.2-2.6 1.8-3.8 1.8"/><path d="m51.3 31.7c.5 0 1.1-.1 1.5-.4 1.3-.7 2.9-2.5 2.9-7.3 0-10.1 5.3-15.8 5.4-15.9l.9-.9-4.7-5.2-.8 1.2c-.1.1-2.6 3.7-6.5 2.7l-.5 2.6c3.9 1 6.7-1.1 8.1-2.6l1.2 1.3c-1.7 2.2-5.3 8-5.3 16.8 0 2.6-.5 4.4-1.5 4.9-.7.4-1.8 0-2.8-1-2.6-2.6-4.5-9-4.5-9l-2.2.8c.1.3 2.1 7.2 5.2 10.2 1.1 1.2 2.4 1.8 3.6 1.8"/><path d="m29 24.9h6.1v24.5h-6.1z"/></g><path fill="#ffce31" d="m30.2 24.9h3.6v24.5h-3.6z"/><path d="M11.8,2C13.5,17.4,21.9,29.7,32,29.7S50.5,17.4,52.2,2H11.8z" fill="#f2b200"/><path d="M15.7,2c1.4,15.6,8.2,28,16.3,28S46.9,17.6,48.3,2H15.7z" fill="#ffce31"/><path d="m47.6 54h-31.2c0 0 7-9 15.6-9 8.6 0 15.6 9 15.6 9" fill="#f2b200"/><path d="M43.9,54H20.1c0,0,5.3-9.2,11.9-9.2S43.9,54,43.9,54z" fill="#ffce31"/><path fill="#bc845e" d="m11.8 56h40.4v6h-40.4z"/><path fill="#916140" d="m16.4 54h31.3v2h-31.3z"/><path fill="#f2b200" d="m22 57.5h20v3h-20z"/><path fill="#ce9c7a" d="m11.8 56h2v6h-2z"/><path fill="#916140" d="m50.2 56h2v6h-2z"/><path fill="#ffce31" d="m23 57.5h18v3h-18z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c7-1f3fb.svg b/riot/emojione/svg/1f3c7-1f3fb.svg new file mode 100644 index 0000000..308dd7a --- /dev/null +++ b/riot/emojione/svg/1f3c7-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffe1bd" d="m30.2 12.5l1.5-1.9 2.8 6.6-4.3 1.8z"/><path d="m28.6 16.7c1.6.3 1.6 2.3 1.6 2.3 1.7-.7 1.5-4.6.7-6.7l-2.3 4.4" fill="#e6b796"/><path d="m28 3.4l-6.5 5.8c-.2 2.2.8 2.8 1.1 3.6.1.3-.3 1.2-.5 1.7-.5 1.1 1.1 1.1 1.6.8.6.6-.1 1.5 1.9.1 0 0-1.9 2-.1 1.7.2 1 .8 2.8 4.8-1 1.2-1.1.7-3.8.7-3.8l2.2-1.4-5.2-7.5" fill="#ffe1bd"/><path d="m22.3 4.9c4.3-3.7 8.1-2.3 9.1-1.3 2.5 2.5 2.9 6.4 1.6 9.9 0 0-1.3 0-2.1-1.3 0 0 1.5 0 .9-2.8-.5-2.4-3.3-2.6-3.2.9l-.3.1c-1.3-1.1-.9-3.6-2.9-3.4-1.8.1-4 2.6-4 2.6-.9-.7-.9-3.1.9-4.7" fill="#594640"/><path d="m24.4 12c.2.5.1 1-.2 1.1-.3.1-.6-.2-.8-.7-.2-.5-.3-.9.1-1 .3-.2.7.1.9.6" fill="#664e27"/><path d="m29.5 10.6c-.4-.9.1-2.1.8-2.4 0 0-.9 1.7.1 3 0 0-.7.1-.9-.6" fill="#e6b796"/><path d="m26.2 14.8c0 0-.6 1.1-.9 1.4-.5.6-.7.5-.5 0 .2-.4.7-.9.7-.9l.7-.5" fill="#664e27"/><g fill="#3e4347"><path d="m31.8 13.7l-.9.5-3.9-5.6.9-.5z"/><path d="m31.6 14l-1-.2 1.7-4.6 1 .2z"/><path transform="matrix(.9794-.2018.2018.9794-2.3443 6.6467)" d="m30.8 13h1.3v3.7h-1.3z"/></g><path d="m35.2 9.6c-.1 1.4-4.7-.5-7.4-.6-3-.1-7.5 1.1-7.4 0 .2-4 3.6-7.1 7.7-6.9 4 .1 7.2 3.5 7.1 7.5" fill="#f15744"/><path fill="#3b946f" d="m30.3 18.8l-2.9 5-1.1.4.6 1 2.6-.2 2.8-5.6z"/><path d="m40.2 23.2c0 0-7.3 5.6-7.8 6.2-.5.6-.8 1.1-1.2 2.5l2.9 1.3c0-.1 6.3-8.5 6.1-10" fill="#94989b"/><g fill="#89664c"><path d="m60.8 32.3c2.6-4-7.9-6.1-12.1-.4v1.3c0 0 8.6-2.5 6.6 2.4-2.2 5.4 6.6 10 6.6 10s-4.7-7.6-1.1-13.3"/><path d="m9.2 12.3c0 0-.7-1.5-.3-4.2 0 0 2 1.4 3.4 4.5l-3.1-.3"/></g><path d="m12.7 59.1l.6-4.4c0 0-.9 0-1.8-.2-.3.8-.6 2.2-.9 3.9 1.1.6 2.1.7 2.1.7" fill="#574137"/><path d="m27.2 48.1c-.7.5-1.5 1.2-2.1 1.8l-3.5-1c0 0 3.2-4.8 10.7-8 0 0-8.5-3.1-11.4 1 0 0-3.8 5.7-5.1 7-1.3 1.4.1 2.6.7 2.8.6.2 9.7 1 9.7 1s1.2-1 2.8-1.6c-.6-1.7-1.3-2.6-1.8-3" fill="#89664c"/><path d="m28.5 47.1c0 0-.6.4-1.4 1 .5.5 1.2 1.4 1.9 2.8.7-.3 1.6-.5 2.3-.4.1 0-1.1-2.6-2.8-3.4" fill="#574137"/><path d="m38.3 36.4l-.8 5.8c0 0 7.9 1.3 11.2.1 0 0 2.9 7.2 8.4 11.7.4-.7.9-1.9 1.2-3.6-2.1-1.3-5.4-4.4-6.9-10.8 0 0-6.4.8-13.1-3.2" fill="#89664c"/><path d="m57.1 54c.7.6 1.5 1.2 2.3 1.7 0 0 .8-2 .9-4.3 0 0-.8-.2-2-1-.3 1.7-.8 2.9-1.2 3.6" fill="#574137"/><g fill="#b7805c"><path d="m44.8 28.1c-8 1-15.7 3-17.1-1.4-5.8-17.9-16.7-15-16.7-15-1.9-2.3-3.8-2.7-3.8-2.7-.2 2.3.7 4.2.7 4.2-.6 2.8-5.4 12-5.9 13.2-.5 1.2 2.9 3.4 2.9 3.4.7-.1.9-1.3 2.4-1.2.4 0-.7 1.4-.3 1.6.8.3 1.7-2 3.4-2.9 6.1-3.3 4.1-5.5 4.1-5.5 2.5 1.7 1.1 5.5 0 7.5-2.5 4.7.1 11.5.1 11.5-2.5 1.9-7.9 3-7.9 3-1.9 9.8 1.5 13.4 3.9 14.7.3-1.7.6-3.1.9-3.9-.9-.2-1.9-.8-2.3-1.8-.7-2.1.7-6.8.7-6.8 6.5.8 10.5-1.2 15.2-2.4 4.6-1.1 9.1-.3 13.6.4 17 3 14.8-17 6.1-15.9"/><path d="m37.7 43.3c4.4 10 14 4.5 14 4.5-2.2 6.1-.6 10.3.8 12.5 1.2-.6 1.9-2 2.3-2.8-3.1-3.5-.9-8.1-.3-9.9.7-2-.3-3.3-.3-3.3-2.7-.6-4.2 1.2-7.4-2.9-3.2-4-9.1 1.9-9.1 1.9"/></g><g fill="#574137"><path d="m53.9 62c1.5-.1 2-3.5 2-3.5-.4-.3-.8-.7-1.1-1-.4.8-1.1 2.2-2.3 2.8.7 1.1 1.4 1.7 1.4 1.7"/><path d="m34.1 38.2c0 0 .3 2.2-1.2 5.2 0 0 1.2 0 2.2.1 0 0 .9-1 1.2-5.1l-2.2-.2"/></g><path d="m28.2 27.6c0 0 2.4 2.6.9 4.8-2 3 4.1 8.5 11 5.4 4.9-2.2.2-7.6 2.4-9.7-.1.1-8.3 1.9-14.3-.5" fill="#89664c"/><g fill="#333"><path d="m5.4 25.4l-.5-.5c5.7-5.3 7-7.5 7-7.5l.6.4c0 .1-1.3 2.3-7.1 7.6"/><path d="m13.2 18.4c-.8-1.2-1.8-2.3-2.8-3.3-1-1-2.1-1.6-2.6-2 0 0-.1.5-.2.8.4.4 1.4.9 2.3 1.8 1.4 1.4 3.2 3.9 4.8 7.5.2-.1.5-.6.6-.6-.7-1.5-1.2-2.9-2.1-4.2"/><path d="m6.8 28.7c.2-.1.7 0 .7 0-1.2-3.2-3.1-5.3-3.8-5.7l-.3.6c.2.1.5.3.9.7.6.8 1.8 2.5 2.5 4.4"/></g><g fill="#89664c"><path d="m7.3 19c0 0 1 .4 1.7-.4.7-.8.3-2.9.3-2.9s-1.4 1.1-2 3.3"/><path d="m2.9 26.1c0 0 1.3-.2.9 1.4-.5 1.5-1-.9-.9-1.4"/></g><path d="m21.5 26.2c-3.1-.1-6.6-1.1-8.9-2-2.5-.9-4.4-1.9-4.4-1.9l-.3.5c0 0 1.9 1 4.4 1.9 1.5.6 3 1 4.4 1.3 1.6.4 3.1.6 4.4.6.2 0 .4-.4.4-.4" fill="#333"/><path d="m28.7 24.4c0 0-6 .9-6.7 1.1 0 0 .1.4-.4 1.2l8.5.7 3.7-5.6 6.3 1.4c0 0 3 .1 6-2.7 0 0-5.8-6.2-12.8-5.8 0 0-1.1 2.3-3.4 3.4l-1.2 6.3" fill="#47b892"/><path d="m40.2 23.2c0 0-5.8 4.9-7 7.8-.8 2 1.3 4.9 1.7 5.9 0 0 2.2.2 3.5-1.1 0 0 .1-1.1-1.5-3.7 0 0 5.8-2.1 8.1-4.1 2.3-2 2.9-4 1.2-7.5l-6 2.7" fill="#d0d0d0"/><path d="m35.8 42.9c0 0-3.7 2-3.9 2.6-.2.6.6.9.6.9s3.2.4 6.8-.5l-.9-10.4c0 0-.9 1.2-3.8 1.4l1.2 6" fill="#333"/><path d="m22.2 26v-1.1c0-.4-.3-.7-.7-.7h-.5c-.3 0-.5.2-.6.4-.7 0-1.6.3-1.6 1.6 0 .2 0 1.4 1.4 1.4 2 0 2 0 2-1.6" fill="#ffe1bd"/><path d="m29.4 9.2c0 0-9.1 2.7-10.5 2.5-1.4-.2.8-2.1 1.4-2.6s8.5-.6 9.1.1" fill="#c9150d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c7-1f3fc.svg b/riot/emojione/svg/1f3c7-1f3fc.svg new file mode 100644 index 0000000..f841b3e --- /dev/null +++ b/riot/emojione/svg/1f3c7-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fed0ac" d="m30.2 12.5l1.5-1.9 2.8 6.6-4.3 1.8z"/><path d="m28.6 16.7c1.6.3 1.6 2.3 1.6 2.3 1.7-.7 1.5-4.6.7-6.7l-2.3 4.4" fill="#e0a372"/><path d="m28 3.4l-6.5 5.8c-.2 2.2.8 2.8 1.1 3.6.1.3-.3 1.2-.5 1.7-.5 1.1 1.1 1.1 1.6.8.6.6-.1 1.5 1.9.1 0 0-1.9 2-.1 1.7.2 1 .8 2.8 4.8-1 1.2-1.1.7-3.8.7-3.8l2.2-1.4-5.2-7.5" fill="#fed0ac"/><path d="m22.3 4.9c4.3-3.7 8.1-2.3 9.1-1.3 2.5 2.5 2.9 6.4 1.6 9.9 0 0-1.3 0-2.1-1.3 0 0 1.5 0 .9-2.8-.5-2.4-3.3-2.6-3.2.9l-.3.1c-1.3-1.1-.9-3.6-2.9-3.4-1.8.1-4 2.6-4 2.6-.9-.7-.9-3.1.9-4.7" fill="#dbb471"/><path d="m24.4 12c.2.5.1 1-.2 1.1-.3.1-.6-.2-.8-.7-.2-.5-.3-.9.1-1 .3-.2.7.1.9.6" fill="#664e27"/><path d="m29.5 10.6c-.4-.9.1-2.1.8-2.4 0 0-.9 1.7.1 3 0 0-.7.1-.9-.6" fill="#e0a372"/><path d="m26.2 14.8c0 0-.6 1.1-.9 1.4-.5.6-.7.5-.5 0 .2-.4.7-.9.7-.9l.7-.5" fill="#664e27"/><g fill="#3e4347"><path d="m31.8 13.7l-.9.5-3.9-5.6.9-.5z"/><path d="m31.6 14l-1-.2 1.7-4.6 1 .2z"/><path transform="matrix(.9794-.2018.2018.9794-2.3443 6.6467)" d="m30.8 13h1.3v3.7h-1.3z"/></g><path d="m35.2 9.6c-.1 1.4-4.7-.5-7.4-.6-3-.1-7.5 1.1-7.4 0 .2-4 3.6-7.1 7.7-6.9 4 .1 7.2 3.5 7.1 7.5" fill="#f15744"/><path fill="#3b946f" d="m30.3 18.8l-2.9 5-1.1.4.6 1 2.6-.2 2.8-5.6z"/><path d="m40.2 23.2c0 0-7.3 5.6-7.8 6.2-.5.6-.8 1.1-1.2 2.5l2.9 1.3c0-.1 6.3-8.5 6.1-10" fill="#94989b"/><g fill="#89664c"><path d="m60.8 32.3c2.6-4-7.9-6.1-12.1-.4v1.3c0 0 8.6-2.5 6.6 2.4-2.2 5.4 6.6 10 6.6 10s-4.7-7.6-1.1-13.3"/><path d="m9.2 12.3c0 0-.7-1.5-.3-4.2 0 0 2 1.4 3.4 4.5l-3.1-.3"/></g><path d="m12.7 59.1l.6-4.4c0 0-.9 0-1.8-.2-.3.8-.6 2.2-.9 3.9 1.1.6 2.1.7 2.1.7" fill="#574137"/><path d="m27.2 48.1c-.7.5-1.5 1.2-2.1 1.8l-3.5-1c0 0 3.2-4.8 10.7-8 0 0-8.5-3.1-11.4 1 0 0-3.8 5.7-5.1 7-1.3 1.4.1 2.6.7 2.8.6.2 9.7 1 9.7 1s1.2-1 2.8-1.6c-.6-1.7-1.3-2.6-1.8-3" fill="#89664c"/><path d="m28.5 47.1c0 0-.6.4-1.4 1 .5.5 1.2 1.4 1.9 2.8.7-.3 1.6-.5 2.3-.4.1 0-1.1-2.6-2.8-3.4" fill="#574137"/><path d="m38.3 36.4l-.8 5.8c0 0 7.9 1.3 11.2.1 0 0 2.9 7.2 8.4 11.7.4-.7.9-1.9 1.2-3.6-2.1-1.3-5.4-4.4-6.9-10.8 0 0-6.4.8-13.1-3.2" fill="#89664c"/><path d="m57.1 54c.7.6 1.5 1.2 2.3 1.7 0 0 .8-2 .9-4.3 0 0-.8-.2-2-1-.3 1.7-.8 2.9-1.2 3.6" fill="#574137"/><g fill="#b7805c"><path d="m44.8 28.1c-8 1-15.7 3-17.1-1.4-5.8-17.9-16.7-15-16.7-15-1.9-2.3-3.8-2.7-3.8-2.7-.2 2.3.7 4.2.7 4.2-.6 2.8-5.4 12-5.9 13.2-.5 1.2 2.9 3.4 2.9 3.4.7-.1.9-1.3 2.4-1.2.4 0-.7 1.4-.3 1.6.8.3 1.7-2 3.4-2.9 6.1-3.3 4.1-5.5 4.1-5.5 2.5 1.7 1.1 5.5 0 7.5-2.5 4.7.1 11.5.1 11.5-2.5 1.9-7.9 3-7.9 3-1.9 9.8 1.5 13.4 3.9 14.7.3-1.7.6-3.1.9-3.9-.9-.2-1.9-.8-2.3-1.8-.7-2.1.7-6.8.7-6.8 6.5.8 10.5-1.2 15.2-2.4 4.6-1.1 9.1-.3 13.6.4 17 3 14.8-17 6.1-15.9"/><path d="m37.7 43.3c4.4 10 14 4.5 14 4.5-2.2 6.1-.6 10.3.8 12.5 1.2-.6 1.9-2 2.3-2.8-3.1-3.5-.9-8.1-.3-9.9.7-2-.3-3.3-.3-3.3-2.7-.6-4.2 1.2-7.4-2.9-3.2-4-9.1 1.9-9.1 1.9"/></g><g fill="#574137"><path d="m53.9 62c1.5-.1 2-3.5 2-3.5-.4-.3-.8-.7-1.1-1-.4.8-1.1 2.2-2.3 2.8.7 1.1 1.4 1.7 1.4 1.7"/><path d="m34.1 38.2c0 0 .3 2.2-1.2 5.2 0 0 1.2 0 2.2.1 0 0 .9-1 1.2-5.1l-2.2-.2"/></g><path d="m28.2 27.6c0 0 2.4 2.6.9 4.8-2 3 4.1 8.5 11 5.4 4.9-2.2.2-7.6 2.4-9.7-.1.1-8.3 1.9-14.3-.5" fill="#89664c"/><g fill="#333"><path d="m5.4 25.4l-.5-.5c5.7-5.3 7-7.5 7-7.5l.6.4c0 .1-1.3 2.3-7.1 7.6"/><path d="m13.2 18.4c-.8-1.2-1.8-2.3-2.8-3.3-1-1-2.1-1.6-2.6-2 0 0-.1.5-.2.8.4.4 1.4.9 2.3 1.8 1.4 1.4 3.2 3.9 4.8 7.5.2-.1.5-.6.6-.6-.7-1.5-1.2-2.9-2.1-4.2"/><path d="m6.8 28.7c.2-.1.7 0 .7 0-1.2-3.2-3.1-5.3-3.8-5.7l-.3.6c.2.1.5.3.9.7.6.8 1.8 2.5 2.5 4.4"/></g><g fill="#89664c"><path d="m7.3 19c0 0 1 .4 1.7-.4.7-.8.3-2.9.3-2.9s-1.4 1.1-2 3.3"/><path d="m2.9 26.1c0 0 1.3-.2.9 1.4-.5 1.5-1-.9-.9-1.4"/></g><path d="m21.5 26.2c-3.1-.1-6.6-1.1-8.9-2-2.5-.9-4.4-1.9-4.4-1.9l-.3.5c0 0 1.9 1 4.4 1.9 1.5.6 3 1 4.4 1.3 1.6.4 3.1.6 4.4.6.2 0 .4-.4.4-.4" fill="#333"/><path d="m28.7 24.4c0 0-6 .9-6.7 1.1 0 0 .1.4-.4 1.2l8.5.7 3.7-5.6 6.3 1.4c0 0 3 .1 6-2.7 0 0-5.8-6.2-12.8-5.8 0 0-1.1 2.3-3.4 3.4l-1.2 6.3" fill="#47b892"/><path d="m40.2 23.2c0 0-5.8 4.9-7 7.8-.8 2 1.3 4.9 1.7 5.9 0 0 2.2.2 3.5-1.1 0 0 .1-1.1-1.5-3.7 0 0 5.8-2.1 8.1-4.1 2.3-2 2.9-4 1.2-7.5l-6 2.7" fill="#d0d0d0"/><path d="m35.8 42.9c0 0-3.7 2-3.9 2.6-.2.6.6.9.6.9s3.2.4 6.8-.5l-.9-10.4c0 0-.9 1.2-3.8 1.4l1.2 6" fill="#333"/><path d="m22.2 26v-1.1c0-.4-.3-.7-.7-.7h-.5c-.3 0-.5.2-.6.4-.7 0-1.6.3-1.6 1.6 0 .2 0 1.4 1.4 1.4 2 0 2 0 2-1.6" fill="#fed0ac"/><path d="m29.4 9.2c0 0-9.1 2.7-10.5 2.5-1.4-.2.8-2.1 1.4-2.6s8.5-.6 9.1.1" fill="#c9150d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c7-1f3fd.svg b/riot/emojione/svg/1f3c7-1f3fd.svg new file mode 100644 index 0000000..ca972a6 --- /dev/null +++ b/riot/emojione/svg/1f3c7-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6a57c" d="m30.2 12.5l1.5-1.9 2.8 6.6-4.3 1.8z"/><path d="m28.6 16.7c1.6.3 1.6 2.3 1.6 2.3 1.7-.7 1.5-4.6.7-6.7l-2.3 4.4" fill="#b58360"/><path d="m28 3.4l-6.5 5.8c-.2 2.2.8 2.8 1.1 3.6.1.3-.3 1.2-.5 1.7-.5 1.1 1.1 1.1 1.6.8.6.6-.1 1.5 1.9.1 0 0-1.9 2-.1 1.7.2 1 .8 2.8 4.8-1 1.2-1.1.7-3.8.7-3.8l2.2-1.4-5.2-7.5" fill="#d6a57c"/><path d="m22.3 4.9c4.3-3.7 8.1-2.3 9.1-1.3 2.5 2.5 2.9 6.4 1.6 9.9 0 0-1.3 0-2.1-1.3 0 0 1.5 0 .9-2.8-.5-2.4-3.3-2.6-3.2.9l-.3.1c-1.3-1.1-.9-3.6-2.9-3.4-1.8.1-4 2.6-4 2.6-.9-.7-.9-3.1.9-4.7" fill="#594640"/><path d="m24.4 12c.2.5.1 1-.2 1.1-.3.1-.6-.2-.8-.7-.2-.5-.3-.9.1-1 .3-.2.7.1.9.6" fill="#664e27"/><path d="m29.5 10.6c-.4-.9.1-2.1.8-2.4 0 0-.9 1.7.1 3 0 0-.7.1-.9-.6" fill="#b58360"/><path d="m26.2 14.8c0 0-.6 1.1-.9 1.4-.5.6-.7.5-.5 0 .2-.4.7-.9.7-.9l.7-.5" fill="#664e27"/><g fill="#3e4347"><path d="m31.8 13.7l-.9.5-3.9-5.6.9-.5z"/><path d="m31.6 14l-1-.2 1.7-4.6 1 .2z"/><path transform="matrix(.9794-.2018.2018.9794-2.3443 6.6467)" d="m30.8 13h1.3v3.7h-1.3z"/></g><path d="m35.2 9.6c-.1 1.4-4.7-.5-7.4-.6-3-.1-7.5 1.1-7.4 0 .2-4 3.6-7.1 7.7-6.9 4 .1 7.2 3.5 7.1 7.5" fill="#f15744"/><path fill="#3b946f" d="m30.3 18.8l-2.9 5-1.1.4.6 1 2.6-.2 2.8-5.6z"/><path d="m40.2 23.2c0 0-7.3 5.6-7.8 6.2-.5.6-.8 1.1-1.2 2.5l2.9 1.3c0-.1 6.3-8.5 6.1-10" fill="#94989b"/><g fill="#89664c"><path d="m60.8 32.3c2.6-4-7.9-6.1-12.1-.4v1.3c0 0 8.6-2.5 6.6 2.4-2.2 5.4 6.6 10 6.6 10s-4.7-7.6-1.1-13.3"/><path d="m9.2 12.3c0 0-.7-1.5-.3-4.2 0 0 2 1.4 3.4 4.5l-3.1-.3"/></g><path d="m12.7 59.1l.6-4.4c0 0-.9 0-1.8-.2-.3.8-.6 2.2-.9 3.9 1.1.6 2.1.7 2.1.7" fill="#574137"/><path d="m27.2 48.1c-.7.5-1.5 1.2-2.1 1.8l-3.5-1c0 0 3.2-4.8 10.7-8 0 0-8.5-3.1-11.4 1 0 0-3.8 5.7-5.1 7-1.3 1.4.1 2.6.7 2.8.6.2 9.7 1 9.7 1s1.2-1 2.8-1.6c-.6-1.7-1.3-2.6-1.8-3" fill="#89664c"/><path d="m28.5 47.1c0 0-.6.4-1.4 1 .5.5 1.2 1.4 1.9 2.8.7-.3 1.6-.5 2.3-.4.1 0-1.1-2.6-2.8-3.4" fill="#574137"/><path d="m38.3 36.4l-.8 5.8c0 0 7.9 1.3 11.2.1 0 0 2.9 7.2 8.4 11.7.4-.7.9-1.9 1.2-3.6-2.1-1.3-5.4-4.4-6.9-10.8 0 0-6.4.8-13.1-3.2" fill="#89664c"/><path d="m57.1 54c.7.6 1.5 1.2 2.3 1.7 0 0 .8-2 .9-4.3 0 0-.8-.2-2-1-.3 1.7-.8 2.9-1.2 3.6" fill="#574137"/><g fill="#b7805c"><path d="m44.8 28.1c-8 1-15.7 3-17.1-1.4-5.8-17.9-16.7-15-16.7-15-1.9-2.3-3.8-2.7-3.8-2.7-.2 2.3.7 4.2.7 4.2-.6 2.8-5.4 12-5.9 13.2-.5 1.2 2.9 3.4 2.9 3.4.7-.1.9-1.3 2.4-1.2.4 0-.7 1.4-.3 1.6.8.3 1.7-2 3.4-2.9 6.1-3.3 4.1-5.5 4.1-5.5 2.5 1.7 1.1 5.5 0 7.5-2.5 4.7.1 11.5.1 11.5-2.5 1.9-7.9 3-7.9 3-1.9 9.8 1.5 13.4 3.9 14.7.3-1.7.6-3.1.9-3.9-.9-.2-1.9-.8-2.3-1.8-.7-2.1.7-6.8.7-6.8 6.5.8 10.5-1.2 15.2-2.4 4.6-1.1 9.1-.3 13.6.4 17 3 14.8-17 6.1-15.9"/><path d="m37.7 43.3c4.4 10 14 4.5 14 4.5-2.2 6.1-.6 10.3.8 12.5 1.2-.6 1.9-2 2.3-2.8-3.1-3.5-.9-8.1-.3-9.9.7-2-.3-3.3-.3-3.3-2.7-.6-4.2 1.2-7.4-2.9-3.2-4-9.1 1.9-9.1 1.9"/></g><g fill="#574137"><path d="m53.9 62c1.5-.1 2-3.5 2-3.5-.4-.3-.8-.7-1.1-1-.4.8-1.1 2.2-2.3 2.8.7 1.1 1.4 1.7 1.4 1.7"/><path d="m34.1 38.2c0 0 .3 2.2-1.2 5.2 0 0 1.2 0 2.2.1 0 0 .9-1 1.2-5.1l-2.2-.2"/></g><path d="m28.2 27.6c0 0 2.4 2.6.9 4.8-2 3 4.1 8.5 11 5.4 4.9-2.2.2-7.6 2.4-9.7-.1.1-8.3 1.9-14.3-.5" fill="#89664c"/><g fill="#333"><path d="m5.4 25.4l-.5-.5c5.7-5.3 7-7.5 7-7.5l.6.4c0 .1-1.3 2.3-7.1 7.6"/><path d="m13.2 18.4c-.8-1.2-1.8-2.3-2.8-3.3-1-1-2.1-1.6-2.6-2 0 0-.1.5-.2.8.4.4 1.4.9 2.3 1.8 1.4 1.4 3.2 3.9 4.8 7.5.2-.1.5-.6.6-.6-.7-1.5-1.2-2.9-2.1-4.2"/><path d="m6.8 28.7c.2-.1.7 0 .7 0-1.2-3.2-3.1-5.3-3.8-5.7l-.3.6c.2.1.5.3.9.7.6.8 1.8 2.5 2.5 4.4"/></g><g fill="#89664c"><path d="m7.3 19c0 0 1 .4 1.7-.4.7-.8.3-2.9.3-2.9s-1.4 1.1-2 3.3"/><path d="m2.9 26.1c0 0 1.3-.2.9 1.4-.5 1.5-1-.9-.9-1.4"/></g><path d="m21.5 26.2c-3.1-.1-6.6-1.1-8.9-2-2.5-.9-4.4-1.9-4.4-1.9l-.3.5c0 0 1.9 1 4.4 1.9 1.5.6 3 1 4.4 1.3 1.6.4 3.1.6 4.4.6.2 0 .4-.4.4-.4" fill="#333"/><path d="m28.7 24.4c0 0-6 .9-6.7 1.1 0 0 .1.4-.4 1.2l8.5.7 3.7-5.6 6.3 1.4c0 0 3 .1 6-2.7 0 0-5.8-6.2-12.8-5.8 0 0-1.1 2.3-3.4 3.4l-1.2 6.3" fill="#47b892"/><path d="m40.2 23.2c0 0-5.8 4.9-7 7.8-.8 2 1.3 4.9 1.7 5.9 0 0 2.2.2 3.5-1.1 0 0 .1-1.1-1.5-3.7 0 0 5.8-2.1 8.1-4.1 2.3-2 2.9-4 1.2-7.5l-6 2.7" fill="#d0d0d0"/><path d="m35.8 42.9c0 0-3.7 2-3.9 2.6-.2.6.6.9.6.9s3.2.4 6.8-.5l-.9-10.4c0 0-.9 1.2-3.8 1.4l1.2 6" fill="#333"/><path d="m22.2 26v-1.1c0-.4-.3-.7-.7-.7h-.5c-.3 0-.5.2-.6.4-.7 0-1.6.3-1.6 1.6 0 .2 0 1.4 1.4 1.4 2 0 2 0 2-1.6" fill="#d6a57c"/><path d="m29.4 9.2c0 0-9.1 2.7-10.5 2.5-1.4-.2.8-2.1 1.4-2.6s8.5-.6 9.1.1" fill="#c9150d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c7-1f3fe.svg b/riot/emojione/svg/1f3c7-1f3fe.svg new file mode 100644 index 0000000..c8f3850 --- /dev/null +++ b/riot/emojione/svg/1f3c7-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b47d56" d="m30.2 12.5l1.5-1.9 2.8 6.6-4.3 1.8z"/><path d="m28.6 16.7c1.6.3 1.6 2.3 1.6 2.3 1.7-.7 1.5-4.6.7-6.7l-2.3 4.4" fill="#935e3e"/><path d="m28 3.4l-6.5 5.8c-.2 2.2.8 2.8 1.1 3.6.1.3-.3 1.2-.5 1.7-.5 1.1 1.1 1.1 1.6.8.6.6-.1 1.5 1.9.1 0 0-1.9 2-.1 1.7.2 1 .8 2.8 4.8-1 1.2-1.1.7-3.8.7-3.8l2.2-1.4-5.2-7.5" fill="#b47d56"/><path d="m22.3 4.9c4.3-3.7 8.1-2.3 9.1-1.3 2.5 2.5 2.9 6.4 1.6 9.9 0 0-1.3 0-2.1-1.3 0 0 1.5 0 .9-2.8-.5-2.4-3.3-2.6-3.2.9l-.3.1c-1.3-1.1-.9-3.6-2.9-3.4-1.8.1-4 2.6-4 2.6-.9-.7-.9-3.1.9-4.7" fill="#231f20"/><path d="m24.4 12c.2.5.1 1-.2 1.1-.3.1-.6-.2-.8-.7-.2-.5-.3-.9.1-1 .3-.2.7.1.9.6" fill="#664e27"/><path d="m29.5 10.6c-.4-.9.1-2.1.8-2.4 0 0-.9 1.7.1 3 0 0-.7.1-.9-.6" fill="#935e3e"/><path d="m26.2 14.8c0 0-.6 1.1-.9 1.4-.5.6-.7.5-.5 0 .2-.4.7-.9.7-.9l.7-.5" fill="#664e27"/><g fill="#3e4347"><path d="m31.8 13.7l-.9.5-3.9-5.6.9-.5z"/><path d="m31.6 14l-1-.2 1.7-4.6 1 .2z"/><path transform="matrix(.9794-.2018.2018.9794-2.3443 6.6467)" d="m30.8 13h1.3v3.7h-1.3z"/></g><path d="m35.2 9.6c-.1 1.4-4.7-.5-7.4-.6-3-.1-7.5 1.1-7.4 0 .2-4 3.6-7.1 7.7-6.9 4 .1 7.2 3.5 7.1 7.5" fill="#f15744"/><path fill="#3b946f" d="m30.3 18.8l-2.9 5-1.1.4.6 1 2.6-.2 2.8-5.6z"/><path d="m40.2 23.2c0 0-7.3 5.6-7.8 6.2-.5.6-.8 1.1-1.2 2.5l2.9 1.3c0-.1 6.3-8.5 6.1-10" fill="#94989b"/><g fill="#89664c"><path d="m60.8 32.3c2.6-4-7.9-6.1-12.1-.4v1.3c0 0 8.6-2.5 6.6 2.4-2.2 5.4 6.6 10 6.6 10s-4.7-7.6-1.1-13.3"/><path d="m9.2 12.3c0 0-.7-1.5-.3-4.2 0 0 2 1.4 3.4 4.5l-3.1-.3"/></g><path d="m12.7 59.1l.6-4.4c0 0-.9 0-1.8-.2-.3.8-.6 2.2-.9 3.9 1.1.6 2.1.7 2.1.7" fill="#574137"/><path d="m27.2 48.1c-.7.5-1.5 1.2-2.1 1.8l-3.5-1c0 0 3.2-4.8 10.7-8 0 0-8.5-3.1-11.4 1 0 0-3.8 5.7-5.1 7-1.3 1.4.1 2.6.7 2.8.6.2 9.7 1 9.7 1s1.2-1 2.8-1.6c-.6-1.7-1.3-2.6-1.8-3" fill="#89664c"/><path d="m28.5 47.1c0 0-.6.4-1.4 1 .5.5 1.2 1.4 1.9 2.8.7-.3 1.6-.5 2.3-.4.1 0-1.1-2.6-2.8-3.4" fill="#574137"/><path d="m38.3 36.4l-.8 5.8c0 0 7.9 1.3 11.2.1 0 0 2.9 7.2 8.4 11.7.4-.7.9-1.9 1.2-3.6-2.1-1.3-5.4-4.4-6.9-10.8 0 0-6.4.8-13.1-3.2" fill="#89664c"/><path d="m57.1 54c.7.6 1.5 1.2 2.3 1.7 0 0 .8-2 .9-4.3 0 0-.8-.2-2-1-.3 1.7-.8 2.9-1.2 3.6" fill="#574137"/><g fill="#b7805c"><path d="m44.8 28.1c-8 1-15.7 3-17.1-1.4-5.8-17.9-16.7-15-16.7-15-1.9-2.3-3.8-2.7-3.8-2.7-.2 2.3.7 4.2.7 4.2-.6 2.8-5.4 12-5.9 13.2-.5 1.2 2.9 3.4 2.9 3.4.7-.1.9-1.3 2.4-1.2.4 0-.7 1.4-.3 1.6.8.3 1.7-2 3.4-2.9 6.1-3.3 4.1-5.5 4.1-5.5 2.5 1.7 1.1 5.5 0 7.5-2.5 4.7.1 11.5.1 11.5-2.5 1.9-7.9 3-7.9 3-1.9 9.8 1.5 13.4 3.9 14.7.3-1.7.6-3.1.9-3.9-.9-.2-1.9-.8-2.3-1.8-.7-2.1.7-6.8.7-6.8 6.5.8 10.5-1.2 15.2-2.4 4.6-1.1 9.1-.3 13.6.4 17 3 14.8-17 6.1-15.9"/><path d="m37.7 43.3c4.4 10 14 4.5 14 4.5-2.2 6.1-.6 10.3.8 12.5 1.2-.6 1.9-2 2.3-2.8-3.1-3.5-.9-8.1-.3-9.9.7-2-.3-3.3-.3-3.3-2.7-.6-4.2 1.2-7.4-2.9-3.2-4-9.1 1.9-9.1 1.9"/></g><g fill="#574137"><path d="m53.9 62c1.5-.1 2-3.5 2-3.5-.4-.3-.8-.7-1.1-1-.4.8-1.1 2.2-2.3 2.8.7 1.1 1.4 1.7 1.4 1.7"/><path d="m34.1 38.2c0 0 .3 2.2-1.2 5.2 0 0 1.2 0 2.2.1 0 0 .9-1 1.2-5.1l-2.2-.2"/></g><path d="m28.2 27.6c0 0 2.4 2.6.9 4.8-2 3 4.1 8.5 11 5.4 4.9-2.2.2-7.6 2.4-9.7-.1.1-8.3 1.9-14.3-.5" fill="#89664c"/><g fill="#333"><path d="m5.4 25.4l-.5-.5c5.7-5.3 7-7.5 7-7.5l.6.4c0 .1-1.3 2.3-7.1 7.6"/><path d="m13.2 18.4c-.8-1.2-1.8-2.3-2.8-3.3-1-1-2.1-1.6-2.6-2 0 0-.1.5-.2.8.4.4 1.4.9 2.3 1.8 1.4 1.4 3.2 3.9 4.8 7.5.2-.1.5-.6.6-.6-.7-1.5-1.2-2.9-2.1-4.2"/><path d="m6.8 28.7c.2-.1.7 0 .7 0-1.2-3.2-3.1-5.3-3.8-5.7l-.3.6c.2.1.5.3.9.7.6.8 1.8 2.5 2.5 4.4"/></g><g fill="#89664c"><path d="m7.3 19c0 0 1 .4 1.7-.4.7-.8.3-2.9.3-2.9s-1.4 1.1-2 3.3"/><path d="m2.9 26.1c0 0 1.3-.2.9 1.4-.5 1.5-1-.9-.9-1.4"/></g><path d="m21.5 26.2c-3.1-.1-6.6-1.1-8.9-2-2.5-.9-4.4-1.9-4.4-1.9l-.3.5c0 0 1.9 1 4.4 1.9 1.5.6 3 1 4.4 1.3 1.6.4 3.1.6 4.4.6.2 0 .4-.4.4-.4" fill="#333"/><path d="m28.7 24.4c0 0-6 .9-6.7 1.1 0 0 .1.4-.4 1.2l8.5.7 3.7-5.6 6.3 1.4c0 0 3 .1 6-2.7 0 0-5.8-6.2-12.8-5.8 0 0-1.1 2.3-3.4 3.4l-1.2 6.3" fill="#47b892"/><path d="m40.2 23.2c0 0-5.8 4.9-7 7.8-.8 2 1.3 4.9 1.7 5.9 0 0 2.2.2 3.5-1.1 0 0 .1-1.1-1.5-3.7 0 0 5.8-2.1 8.1-4.1 2.3-2 2.9-4 1.2-7.5l-6 2.7" fill="#d0d0d0"/><path d="m35.8 42.9c0 0-3.7 2-3.9 2.6-.2.6.6.9.6.9s3.2.4 6.8-.5l-.9-10.4c0 0-.9 1.2-3.8 1.4l1.2 6" fill="#333"/><path d="m22.2 26v-1.1c0-.4-.3-.7-.7-.7h-.5c-.3 0-.5.2-.6.4-.7 0-1.6.3-1.6 1.6 0 .2 0 1.4 1.4 1.4 2 0 2 0 2-1.6" fill="#935e3e"/><path d="m29.4 9.2c0 0-9.1 2.7-10.5 2.5-1.4-.2.8-2.1 1.4-2.6s8.5-.6 9.1.1" fill="#c9150d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c7-1f3ff.svg b/riot/emojione/svg/1f3c7-1f3ff.svg new file mode 100644 index 0000000..1ee4554 --- /dev/null +++ b/riot/emojione/svg/1f3c7-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#8a6859" d="m30.2 12.5l1.5-1.9 2.8 6.6-4.3 1.8z"/><path d="m28.6 16.7c1.6.3 1.6 2.3 1.6 2.3 1.7-.7 1.5-4.6.7-6.7l-2.3 4.4" fill="#705041"/><path d="m28 3.4l-6.5 5.8c-.2 2.2.8 2.8 1.1 3.6.1.3-.3 1.2-.5 1.7-.5 1.1 1.1 1.1 1.6.8.6.6-.1 1.5 1.9.1 0 0-1.9 2-.1 1.7.2 1 .8 2.8 4.8-1 1.2-1.1.7-3.8.7-3.8l2.2-1.4-5.2-7.5" fill="#8a6859"/><path d="m22.3 4.9c4.3-3.7 8.1-2.3 9.1-1.3 2.5 2.5 2.9 6.4 1.6 9.9 0 0-1.3 0-2.1-1.3 0 0 1.5 0 .9-2.8-.5-2.4-3.3-2.6-3.2.9l-.3.1c-1.3-1.1-.9-3.6-2.9-3.4-1.8.1-4 2.6-4 2.6-.9-.7-.9-3.1.9-4.7" fill="#231f20"/><path d="m24.4 12c.2.5.1 1-.2 1.1-.3.1-.6-.2-.8-.7-.2-.5-.3-.9.1-1 .3-.2.7.1.9.6" fill="#574137"/><path d="m29.5 10.6c-.4-.9.1-2.1.8-2.4 0 0-.9 1.7.1 3 0 0-.7.1-.9-.6" fill="#705041"/><path d="m26.2 14.8c0 0-.6 1.1-.9 1.4-.5.6-.7.5-.5 0 .2-.4.7-.9.7-.9l.7-.5" fill="#574137"/><g fill="#3e4347"><path d="m31.8 13.7l-.9.5-3.9-5.6.9-.5z"/><path d="m31.6 14l-1-.2 1.7-4.6 1 .2z"/><path transform="matrix(.9794-.2018.2018.9794-2.3443 6.6467)" d="m30.8 13h1.3v3.7h-1.3z"/></g><path d="m35.2 9.6c-.1 1.4-4.7-.5-7.4-.6-3-.1-7.5 1.1-7.4 0 .2-4 3.6-7.1 7.7-6.9 4 .1 7.2 3.5 7.1 7.5" fill="#f15744"/><path fill="#3b946f" d="m30.3 18.8l-2.9 5-1.1.4.6 1 2.6-.2 2.8-5.6z"/><path d="m40.2 23.2c0 0-7.3 5.6-7.8 6.2-.5.6-.8 1.1-1.2 2.5l2.9 1.3c0-.1 6.3-8.5 6.1-10" fill="#94989b"/><g fill="#89664c"><path d="m60.8 32.3c2.6-4-7.9-6.1-12.1-.4v1.3c0 0 8.6-2.5 6.6 2.4-2.2 5.4 6.6 10 6.6 10s-4.7-7.6-1.1-13.3"/><path d="m9.2 12.3c0 0-.7-1.5-.3-4.2 0 0 2 1.4 3.4 4.5l-3.1-.3"/></g><path d="m12.7 59.1l.6-4.4c0 0-.9 0-1.8-.2-.3.8-.6 2.2-.9 3.9 1.1.6 2.1.7 2.1.7" fill="#574137"/><path d="m27.2 48.1c-.7.5-1.5 1.2-2.1 1.8l-3.5-1c0 0 3.2-4.8 10.7-8 0 0-8.5-3.1-11.4 1 0 0-3.8 5.7-5.1 7-1.3 1.4.1 2.6.7 2.8.6.2 9.7 1 9.7 1s1.2-1 2.8-1.6c-.6-1.7-1.3-2.6-1.8-3" fill="#89664c"/><path d="m28.5 47.1c0 0-.6.4-1.4 1 .5.5 1.2 1.4 1.9 2.8.7-.3 1.6-.5 2.3-.4.1 0-1.1-2.6-2.8-3.4" fill="#574137"/><path d="m38.3 36.4l-.8 5.8c0 0 7.9 1.3 11.2.1 0 0 2.9 7.2 8.4 11.7.4-.7.9-1.9 1.2-3.6-2.1-1.3-5.4-4.4-6.9-10.8 0 0-6.4.8-13.1-3.2" fill="#89664c"/><path d="m57.1 54c.7.6 1.5 1.2 2.3 1.7 0 0 .8-2 .9-4.3 0 0-.8-.2-2-1-.3 1.7-.8 2.9-1.2 3.6" fill="#574137"/><g fill="#b7805c"><path d="m44.8 28.1c-8 1-15.7 3-17.1-1.4-5.8-17.9-16.7-15-16.7-15-1.9-2.3-3.8-2.7-3.8-2.7-.2 2.3.7 4.2.7 4.2-.6 2.8-5.4 12-5.9 13.2-.5 1.2 2.9 3.4 2.9 3.4.7-.1.9-1.3 2.4-1.2.4 0-.7 1.4-.3 1.6.8.3 1.7-2 3.4-2.9 6.1-3.3 4.1-5.5 4.1-5.5 2.5 1.7 1.1 5.5 0 7.5-2.5 4.7.1 11.5.1 11.5-2.5 1.9-7.9 3-7.9 3-1.9 9.8 1.5 13.4 3.9 14.7.3-1.7.6-3.1.9-3.9-.9-.2-1.9-.8-2.3-1.8-.7-2.1.7-6.8.7-6.8 6.5.8 10.5-1.2 15.2-2.4 4.6-1.1 9.1-.3 13.6.4 17 3 14.8-17 6.1-15.9"/><path d="m37.7 43.3c4.4 10 14 4.5 14 4.5-2.2 6.1-.6 10.3.8 12.5 1.2-.6 1.9-2 2.3-2.8-3.1-3.5-.9-8.1-.3-9.9.7-2-.3-3.3-.3-3.3-2.7-.6-4.2 1.2-7.4-2.9-3.2-4-9.1 1.9-9.1 1.9"/></g><g fill="#574137"><path d="m53.9 62c1.5-.1 2-3.5 2-3.5-.4-.3-.8-.7-1.1-1-.4.8-1.1 2.2-2.3 2.8.7 1.1 1.4 1.7 1.4 1.7"/><path d="m34.1 38.2c0 0 .3 2.2-1.2 5.2 0 0 1.2 0 2.2.1 0 0 .9-1 1.2-5.1l-2.2-.2"/></g><path d="m28.2 27.6c0 0 2.4 2.6.9 4.8-2 3 4.1 8.5 11 5.4 4.9-2.2.2-7.6 2.4-9.7-.1.1-8.3 1.9-14.3-.5" fill="#89664c"/><g fill="#333"><path d="m5.4 25.4l-.5-.5c5.7-5.3 7-7.5 7-7.5l.6.4c0 .1-1.3 2.3-7.1 7.6"/><path d="m13.2 18.4c-.8-1.2-1.8-2.3-2.8-3.3-1-1-2.1-1.6-2.6-2 0 0-.1.5-.2.8.4.4 1.4.9 2.3 1.8 1.4 1.4 3.2 3.9 4.8 7.5.2-.1.5-.6.6-.6-.7-1.5-1.2-2.9-2.1-4.2"/><path d="m6.8 28.7c.2-.1.7 0 .7 0-1.2-3.2-3.1-5.3-3.8-5.7l-.3.6c.2.1.5.3.9.7.6.8 1.8 2.5 2.5 4.4"/></g><g fill="#89664c"><path d="m7.3 19c0 0 1 .4 1.7-.4.7-.8.3-2.9.3-2.9s-1.4 1.1-2 3.3"/><path d="m2.9 26.1c0 0 1.3-.2.9 1.4-.5 1.5-1-.9-.9-1.4"/></g><path d="m21.5 26.2c-3.1-.1-6.6-1.1-8.9-2-2.5-.9-4.4-1.9-4.4-1.9l-.3.5c0 0 1.9 1 4.4 1.9 1.5.6 3 1 4.4 1.3 1.6.4 3.1.6 4.4.6.2 0 .4-.4.4-.4" fill="#333"/><path d="m28.7 24.4c0 0-6 .9-6.7 1.1 0 0 .1.4-.4 1.2l8.5.7 3.7-5.6 6.3 1.4c0 0 3 .1 6-2.7 0 0-5.8-6.2-12.8-5.8 0 0-1.1 2.3-3.4 3.4l-1.2 6.3" fill="#47b892"/><path d="m40.2 23.2c0 0-5.8 4.9-7 7.8-.8 2 1.3 4.9 1.7 5.9 0 0 2.2.2 3.5-1.1 0 0 .1-1.1-1.5-3.7 0 0 5.8-2.1 8.1-4.1 2.3-2 2.9-4 1.2-7.5l-6 2.7" fill="#d0d0d0"/><path d="m35.8 42.9c0 0-3.7 2-3.9 2.6-.2.6.6.9.6.9s3.2.4 6.8-.5l-.9-10.4c0 0-.9 1.2-3.8 1.4l1.2 6" fill="#333"/><path d="m22.2 26v-1.1c0-.4-.3-.7-.7-.7h-.5c-.3 0-.5.2-.6.4-.7 0-1.6.3-1.6 1.6 0 .2 0 1.4 1.4 1.4 2 0 2 0 2-1.6" fill="#8a6859"/><path d="m29.4 9.2c0 0-9.1 2.7-10.5 2.5-1.4-.2.8-2.1 1.4-2.6s8.5-.6 9.1.1" fill="#c9150d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c7.svg b/riot/emojione/svg/1f3c7.svg new file mode 100644 index 0000000..f790b68 --- /dev/null +++ b/riot/emojione/svg/1f3c7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m30.2 12.5l1.5-1.9 2.8 6.6-4.3 1.8z"/><path d="m28.6 16.7c1.6.3 1.6 2.3 1.6 2.3 1.7-.7 1.5-4.6.7-6.7l-2.3 4.4" fill="#eba352"/><path d="m28 3.4l-6.5 5.8c-.2 2.2.8 2.8 1.1 3.6.1.3-.3 1.2-.5 1.7-.5 1.1 1.1 1.1 1.6.8.6.6-.1 1.5 1.9.1 0 0-1.9 2-.1 1.7.2 1 .8 2.8 4.8-1 1.2-1.1.7-3.8.7-3.8l2.2-1.4-5.2-7.5" fill="#ffdd67"/><path d="m22.3 4.9c4.3-3.7 8.1-2.3 9.1-1.3 2.5 2.5 2.9 6.4 1.6 9.9 0 0-1.3 0-2.1-1.3 0 0 1.5 0 .9-2.8-.5-2.4-3.3-2.6-3.2.9l-.3.1c-1.3-1.1-.9-3.6-2.9-3.4-1.8.1-4 2.6-4 2.6-.9-.7-.9-3.1.9-4.7" fill="#ffb300"/><path d="m24.4 12c.2.5.1 1-.2 1.1-.3.1-.6-.2-.8-.7-.2-.5-.3-.9.1-1 .3-.2.7.1.9.6" fill="#937237"/><path d="m29.5 10.6c-.4-.9.1-2.1.8-2.4 0 0-.9 1.7.1 3 0 0-.7 0-.9-.6" fill="#eba352"/><path d="m26.2 14.8c0 0-.6 1.1-.9 1.4-.5.6-.7.5-.5 0 .2-.4.7-.9.7-.9l.7-.5" fill="#937237"/><g fill="#3e4347"><path d="m31.8 13.7l-.9.5-3.9-5.6.9-.5z"/><path d="m31.6 14l-1-.2 1.7-4.6 1 .2z"/><path transform="matrix(.9794-.2018.2018.9794-2.3443 6.6467)" d="m30.8 13h1.3v3.7h-1.3z"/></g><path d="m35.2 9.6c-.1 1.4-4.7-.5-7.4-.6-3-.1-7.5 1.1-7.4 0 .2-4 3.6-7.1 7.7-6.9 4 .1 7.2 3.5 7.1 7.5" fill="#f15744"/><path fill="#3b946f" d="m30.3 18.8l-2.9 5-1.1.4.6 1 2.6-.2 2.8-5.6z"/><path d="m40.2 23.2c0 0-7.3 5.6-7.8 6.2-.5.6-.8 1.1-1.2 2.5l2.9 1.3c0-.1 6.3-8.5 6.1-10" fill="#94989b"/><g fill="#89664c"><path d="m60.8 32.3c2.6-4-7.9-6.1-12.1-.4v1.3c0 0 8.6-2.5 6.6 2.4-2.2 5.4 6.6 10 6.6 10s-4.7-7.6-1.1-13.3"/><path d="m9.2 12.3c0 0-.7-1.5-.3-4.2 0 0 2 1.4 3.4 4.5l-3.1-.3"/></g><path d="m12.7 59.1l.6-4.4c0 0-.9 0-1.8-.2-.3.8-.6 2.2-.9 3.9 1.1.6 2.1.7 2.1.7" fill="#574137"/><path d="m27.2 48.1c-.7.5-1.5 1.2-2.1 1.8l-3.5-1c0 0 3.2-4.8 10.7-8 0 0-8.5-3.1-11.4 1 0 0-3.8 5.7-5.1 7-1.3 1.3.1 2.6.7 2.8.6.2 9.7 1 9.7 1s1.2-1 2.8-1.6c-.6-1.7-1.3-2.6-1.8-3" fill="#89664c"/><path d="m28.5 47.1c0 0-.6.4-1.4 1 .5.5 1.2 1.4 1.9 2.8.7-.3 1.6-.5 2.3-.4.1 0-1.1-2.6-2.8-3.4" fill="#574137"/><path d="m38.3 36.4l-.8 5.8c0 0 7.9 1.3 11.2.1 0 0 2.9 7.2 8.4 11.7.4-.7.9-1.9 1.2-3.6-2.1-1.3-5.4-4.4-6.9-10.8 0 0-6.4.8-13.1-3.2" fill="#89664c"/><path d="m57.1 54c.7.6 1.5 1.2 2.3 1.7 0 0 .8-2 .9-4.3 0 0-.8-.2-2-1-.3 1.7-.8 2.9-1.2 3.6" fill="#574137"/><g fill="#b7805c"><path d="m44.8 28.1c-8 1-15.7 3-17.1-1.4-5.8-17.9-16.7-15-16.7-15-1.9-2.3-3.8-2.7-3.8-2.7-.2 2.3.7 4.2.7 4.2-.6 2.8-5.4 12-5.9 13.2-.5 1.2 2.9 3.4 2.9 3.4.7-.1.9-1.3 2.4-1.2.4 0-.7 1.4-.3 1.6.8.3 1.7-2 3.4-2.9 6.1-3.3 4.1-5.5 4.1-5.5 2.5 1.7 1.1 5.5 0 7.5-2.5 4.7.1 11.5.1 11.5-2.5 1.9-7.9 3-7.9 3-1.9 9.8 1.5 13.4 3.9 14.7.3-1.7.6-3.1.9-3.9-.9-.2-1.9-.8-2.3-1.8-.7-2.1.7-6.8.7-6.8 6.5.8 10.5-1.2 15.2-2.4 4.6-1.1 9.1-.3 13.6.4 17 3 14.8-17 6.1-15.9"/><path d="m37.7 43.3c4.4 10 14 4.5 14 4.5-2.2 6.1-.6 10.3.8 12.5 1.2-.6 1.9-2 2.3-2.8-3.1-3.5-.9-8.1-.3-9.9.7-2-.3-3.3-.3-3.3-2.7-.6-4.2 1.2-7.4-2.9-3.2-4-9.1 1.9-9.1 1.9"/></g><g fill="#574137"><path d="m53.9 62c1.5-.1 2-3.5 2-3.5-.4-.3-.8-.7-1.1-1-.4.8-1.1 2.2-2.3 2.8.7 1.1 1.4 1.7 1.4 1.7"/><path d="m34.1 38.2c0 0 .3 2.2-1.2 5.2 0 0 1.2 0 2.2.1 0 0 .9-1 1.2-5.1l-2.2-.2"/></g><path d="m28.2 27.6c0 0 2.4 2.6.9 4.8-2 3 4.1 8.5 11 5.4 4.9-2.2.2-7.6 2.4-9.7-.1.1-8.3 1.9-14.3-.5" fill="#89664c"/><g fill="#333"><path d="m5.4 25.4l-.5-.5c5.7-5.3 7-7.5 7-7.5l.6.4c0 .1-1.3 2.3-7.1 7.6"/><path d="m13.2 18.4c-.8-1.2-1.8-2.3-2.8-3.3-1-1-2.1-1.6-2.6-2 0 0-.1.5-.2.8.4.4 1.4.9 2.3 1.8 1.4 1.4 3.2 3.9 4.8 7.5.2-.1.5-.6.6-.6-.7-1.5-1.2-2.9-2.1-4.2"/><path d="m6.8 28.7c.2-.1.7 0 .7 0-1.2-3.2-3.1-5.3-3.8-5.7l-.3.6c.2.1.5.3.9.7.6.8 1.8 2.5 2.5 4.4"/></g><g fill="#89664c"><path d="m7.3 19c0 0 1 .4 1.7-.4.7-.8.3-2.9.3-2.9s-1.4 1.1-2 3.3"/><path d="m2.9 26.1c0 0 1.3-.2.9 1.4-.5 1.5-1-.9-.9-1.4"/></g><path d="m21.5 26.2c-3.1-.1-6.6-1.1-8.9-2-2.5-.9-4.4-1.9-4.4-1.9l-.3.5c0 0 1.9 1 4.4 1.9 1.5.6 3 1 4.4 1.3 1.6.4 3.1.6 4.4.6.2 0 .4-.4.4-.4" fill="#333"/><path d="m28.7 24.4c0 0-6 .9-6.7 1.1 0 0 .1.4-.4 1.2l8.5.7 3.7-5.6 6.3 1.4c0 0 3 .1 6-2.7 0 0-5.8-6.2-12.8-5.8 0 0-1.1 2.3-3.4 3.4l-1.2 6.3" fill="#47b892"/><path d="m40.2 23.2c0 0-5.8 4.9-7 7.8-.8 2 1.3 4.9 1.7 5.9 0 0 2.2.2 3.5-1.1 0 0 .1-1.1-1.5-3.7 0 0 5.8-2.1 8.1-4.1 2.3-2 2.9-4 1.2-7.5l-6 2.7" fill="#d0d0d0"/><path d="m35.8 42.9c0 0-3.7 2-3.9 2.6-.2.6.6.9.6.9s3.2.4 6.8-.5l-.9-10.4c0 0-.9 1.2-3.8 1.4l1.2 6" fill="#333"/><path d="m22.2 26v-1.1c0-.4-.3-.7-.7-.7h-.5c-.3 0-.5.2-.6.4-.7 0-1.6.3-1.6 1.6 0 .2 0 1.4 1.4 1.4 2 0 2 0 2-1.6" fill="#ffdd67"/><path d="m29.4 9.2c0 0-9.1 2.7-10.5 2.5-1.4-.2.8-2.1 1.4-2.6s8.5-.6 9.1.1" fill="#c9150d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c8.svg b/riot/emojione/svg/1f3c8.svg new file mode 100644 index 0000000..85ecdbf --- /dev/null +++ b/riot/emojione/svg/1f3c8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#89664c"><path d="m2.8 40.3c-2.1 11.7.4 16.7 2.3 18.6s7 4.4 18.6 2.3c-4.3-2.3-8.3-5.3-12-8.9-3.6-3.6-6.6-7.7-8.9-12"/><path d="m61.1 23.8c2.1-11.6.3-17.4-1.6-19.3-1.9-1.9-7.7-3.6-19.3-1.6 4.3 2.3 8.3 5.3 12 8.9 3.6 3.7 6.6 7.7 8.9 12"/><path d="m30.8 5.4c-5.6 2-11.2 5.1-15.9 9.7-4.6 4.7-7.7 10.3-9.7 15.9 1.9 6.1 5.6 12 10.7 17.1 5.1 5.1 11 8.8 17.1 10.7 5.6-2 11.2-5.1 15.9-9.7 4.7-4.7 7.7-10.2 9.7-15.9-1.9-6.1-5.6-12-10.7-17.1-5-5.2-11-8.8-17.1-10.7"/></g><g fill="#fff"><path d="m5.2 31c-1.1 3.1-1.9 6.3-2.5 9.4 2.3 4.3 5.3 8.3 8.9 12 3.6 3.6 7.7 6.6 12 8.9 3-.5 6.2-1.3 9.4-2.5-6.1-1.9-12.1-5.6-17.1-10.7-5.1-5.1-8.8-11-10.7-17.1"/><path d="m52.2 11.8c-3.6-3.6-7.7-6.6-12-8.9-3 .5-6.2 1.3-9.4 2.5 6.1 1.9 12.1 5.5 17.2 10.6 5.1 5.1 8.8 11 10.7 17.1 1.1-3.1 1.9-6.3 2.5-9.4-2.4-4.2-5.4-8.2-9-11.9"/><path d="m37.8 19.8c2.1 2.1 4.2 4.2 6.3 6.3 1 1 2.6-.6 1.6-1.6-2.1-2.1-4.2-4.2-6.3-6.3-1-1-2.6.6-1.6 1.6"/><path d="m33.1 24.6c2.1 2.1 4.2 4.2 6.3 6.3 1 1 2.6-.6 1.6-1.6-2.1-2.1-4.2-4.2-6.3-6.3-1.1-1-2.6.6-1.6 1.6"/><path d="m28.3 29.3c2.1 2.1 4.2 4.2 6.3 6.3 1 1 2.6-.6 1.6-1.6-2.1-2.1-4.2-4.2-6.3-6.3-1-1-2.6.6-1.6 1.6"/><path d="m23.6 34.1c2.1 2.1 4.2 4.2 6.3 6.3 1 1 2.6-.6 1.6-1.6-2.1-2.1-4.2-4.2-6.3-6.3-1.1-1-2.7.6-1.6 1.6"/><path d="m18.8 38.8c2.1 2.1 4.2 4.2 6.3 6.3 1 1 2.6-.6 1.6-1.6-2.1-2.1-4.2-4.2-6.3-6.3-1-1-2.6.6-1.6 1.6"/><path d="m21.4 44.2c2.1-2.1 21.3-21.3 23.4-23.4 1-1-.6-2.6-1.6-1.6-2.1 2.1-21.3 21.3-23.4 23.4-1 1.1.5 2.7 1.6 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3c9.svg b/riot/emojione/svg/1f3c9.svg new file mode 100644 index 0000000..dca5f04 --- /dev/null +++ b/riot/emojione/svg/1f3c9.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M59,5c-5.6-5.6-28.4-4.2-43.3,10.7C0.8,30.6-0.6,53.3,5,59c5.6,5.6,28.4,4.2,43.3-10.7 + C63.2,33.4,64.6,10.7,59,5z" fill="#e8e8e8"/><path d="m58 14c-1.5 3.3-3.1 6.4-5 9.5-3.6 5.9-7.9 11.6-12.4 16.9-4.2 5-9.2 10.3-15.2 13.2-3.1 1.5-6.3 1.7-9.5 2.4-2.9.7-6.5 2.4-6.9 5.1 8.8 2.7 26.8-.3 39.3-12.8 12-12 15.2-29 13.1-38.2-1.4.9-2.5 2.1-3.4 3.9" fill="#c5d4d8"/><path d="m38.9 3.1c-1.5.3-3 .7-4.5 1.2-6.1 2.9-12.4 7.4-17.4 12.3-14.7 14.8-15.8 37.1-13 39.8 4 4 23.9-1.8 38-17.7 11.6-13 17-27.3 17.6-33-.3-.2-.5-.5-.6-.7-3.1-3-11-4-20.1-1.9m.8 33.3c-12.8 12.8-29 16.5-32.6 12.9-2.9-2.9.2-19.6 13-32.4 12.8-12.9 29.3-16.1 32.4-12.9 3.6 3.6 0 19.6-12.8 32.4" fill="#4b53a2"/><g fill="#cb2c41"><path d="m16.7 27.1c-4.6 7.4-5.8 14.5-4 16.3 1.8 1.8 8.9.5 16.3-4-6.3 3.2-12.3 3.6-14.1 1.9-1.8-1.9-1.4-7.9 1.8-14.2"/><path d="m29.8 14c6.3-3.2 12.3-3.6 14.1-1.9s1.3 7.8-1.9 14.1c4.6-7.4 5.8-14.5 4-16.3-1.7-1.7-8.8-.5-16.2 4.1"/><path d="m59.5 5.7c0 0 0 0 0 0-.6 5.8-6 20-17.6 33-14.1 15.9-33.9 21.8-37.9 17.7-2.7-2.7-1.7-25 13.1-39.8 5-5 11.3-9.4 17.4-12.3-6.5 2.1-13.2 5.8-18.8 11.4-14.9 14.9-16.3 37.7-10.7 43.3 1.8 1.8 5.5 2.9 10 3 8.6-2.5 21.5-8.2 32.5-23.7 6.3-8.6 11.2-18.3 14.5-23.9-.2-3.8-1.1-6.8-2.5-8.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ca-1f3fb.svg b/riot/emojione/svg/1f3ca-1f3fb.svg new file mode 100644 index 0000000..8484a53 --- /dev/null +++ b/riot/emojione/svg/1f3ca-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.3 12.3c6.1 7.6 7.7 11.6 7.2 18.3 7.6 0 9.4 6.2 14.4 6.2v9.8h-29.5c0 0 1.1-1.7-.1-4.1l1.1-8.4c0 0 1.9 2.6 5 .9 0 0-3.5-2.7-1.4-6.9-1.2-2.6-1.3-3.7-.9-7.6-6.6-2.7-12.7-2.2-19.3-1.8-2.1 3.3-8.2 4.8-10.8 4.3-1.5-.3 4-1.6 3-2.1 0 0-2.8.9-6.8.3-.5-.1 1-3.8 2.2-4.7 1.1-.8 4-2.4 6.7-2.3 1.7.1 3.4 1 4.8 1 1.7.1 3.9-.8 6.1-1.3 5.7-1.5 10.8-2.4 18.3-1.6" fill="#ffe1bd"/><g fill="#e6b796"><path d="m37 28.1c0 0 2.9 4.3 8.9 3.2-5.3-.9-8.9-3.2-8.9-3.2"/><path d="m39.9 23.4c0 0-2.1-5.2-8.1-4.2 4.7 1 8.1 4.2 8.1 4.2"/><path d="m52.3 42.5c0 0 1.9-9.2-5.2-11 5.7 2.5 5.2 11 5.2 11"/><path d="m32.9 34.5l-.9 7.9c3.9.6 7.3-.1 7.3-.1-2.5-6.4-6.4-7.8-6.4-7.8"/><ellipse transform="matrix(.1104-.9939.9939.1104 5.0751 83.6497)" cx="49.3" cy="39" rx="1.2" ry=".9"/></g><path d="m8.4 36.7c-.8 6.5 4.7 12.5 12.2 13.4 3.3.4 7-1.1 9.6-2.6 3.2-1.8 5.3-6.4 5.4-7.6.1-1.2-.8-6.1-3.5-8.6-2.2-2-5.4-4.3-8.7-4.7-7.5-.9-14.2 3.6-15 10.1" fill="#ffe1bd"/><path d="m20.7 38.2c1.1-9.4 6.1-10.6 6.1-10.6 0 0-1.1-.8-3.5-1.1-7.5-.9-14.2 3.6-15 10.1-.8 6.5 4.7 12.5 12.2 13.4 2.4.3 3.6-.2 3.6-.2 0 .1-4.5-2.2-3.4-11.6" fill="#f15744"/><path d="m25.1 40c-1.4-.5-3.1.9-3.8 3-.7 2.1-.1 4.2 1.3 4.7 1.4.5 3.1-.9 3.8-3 .7-2.2.2-4.3-1.3-4.7" fill="#231f20"/><path d="m24.9 41.1c-1-.3-2.2.6-2.7 2.1-.5 1.5-.1 2.9.9 3.3 1 .3 2.2-.6 2.7-2.1.5-1.5.1-3-.9-3.3" fill="#44618b"/><path d="m24.7 37.9c-1.5-.1-2.5-2-2.4-4.2.2-2.2 1.5-3.9 3-3.8 1.5.1 2.5 2 2.4 4.2-.2 2.2-1.5 3.9-3 3.8" fill="#231f20"/><path d="m24.8 36.7c-1.1-.1-1.8-1.4-1.7-3 .1-1.6 1.1-2.8 2.1-2.7 1.1.1 1.8 1.4 1.7 3-.1 1.6-1.1 2.8-2.1 2.7" fill="#44618b"/><g fill="#428bc1"><path d="m24.2 37.2l-.2 3.2h1.2l.3-3.1z"/><path d="m26 30.5l1.4-2.5-1.1-.6-1.7 2.6z"/></g><path d="m27.3 40.1c.6.1 1.2-.4 1.3-1 .1-.6-.4-1.2-1-1.3l-.3 2.3" fill="#e6b796"/><path d="m32.6 36.9c1 .1.6 1.3.4 2.7s0 2.7-1 2.6c-1-.1-1.7-1.4-1.5-2.9.1-1.4 1.1-2.5 2.1-2.4" fill="#574137"/><g fill="#44618b"><path transform="matrix(.0921-.9957.9957.0921-17.8931 61.2024)" d="m24.3 39.9h.6v1h-.6z"/><path transform="matrix(.0666-.9978.9978.0666-14.0109 59.6251)" d="m24.6 36.8h.6v1h-.6z"/><path transform="matrix(.4235-.9059.9059.4235-12.7597 40.372)" d="m25.1 29.6h.6v1.2h-.6z"/></g><path fill="#75d6ff" d="m2 42h60v20h-60z"/><g fill="#42ade2"><path d="m23.8 55.8c-1.5.2-3.3.1-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.8 2.1 8.8.7"/><path d="m35.4 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m47 55.8c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m58.7 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ca-1f3fc.svg b/riot/emojione/svg/1f3ca-1f3fc.svg new file mode 100644 index 0000000..456bee3 --- /dev/null +++ b/riot/emojione/svg/1f3ca-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.3 12.3c6.1 7.6 7.7 11.6 7.2 18.3 7.6 0 9.4 6.2 14.4 6.2v9.8h-29.5c0 0 1.1-1.7-.1-4.1l1.1-8.4c0 0 1.9 2.6 5 .9 0 0-3.5-2.7-1.4-6.9-1.2-2.6-1.3-3.7-.9-7.6-6.6-2.7-12.7-2.2-19.3-1.8-2.1 3.3-8.2 4.8-10.8 4.3-1.5-.3 4-1.6 3-2.1 0 0-2.8.9-6.8.3-.5-.1 1-3.8 2.2-4.7 1.1-.8 4-2.4 6.7-2.3 1.7.1 3.4 1 4.8 1 1.7.1 3.9-.8 6.1-1.3 5.7-1.5 10.8-2.4 18.3-1.6" fill="#fed0ac"/><g fill="#e0a372"><path d="m37 28.1c0 0 2.9 4.3 8.9 3.2-5.3-.9-8.9-3.2-8.9-3.2"/><path d="m39.9 23.4c0 0-2.1-5.2-8.1-4.2 4.7 1 8.1 4.2 8.1 4.2"/><path d="m52.3 42.5c0 0 1.9-9.2-5.2-11 5.7 2.5 5.2 11 5.2 11"/><path d="m32.9 34.5l-.9 7.9c3.9.6 7.3-.1 7.3-.1-2.5-6.4-6.4-7.8-6.4-7.8"/><ellipse transform="matrix(.1104-.9939.9939.1104 5.0751 83.6497)" cx="49.3" cy="39" rx="1.2" ry=".9"/></g><path d="m8.4 36.7c-.8 6.5 4.7 12.5 12.2 13.4 3.3.4 7-1.1 9.6-2.6 3.2-1.8 5.3-6.4 5.4-7.6.1-1.2-.8-6.1-3.5-8.6-2.2-2-5.4-4.3-8.7-4.7-7.5-.9-14.2 3.6-15 10.1" fill="#fed0ac"/><path d="m20.7 38.2c1.1-9.4 6.1-10.6 6.1-10.6 0 0-1.1-.8-3.5-1.1-7.5-.9-14.2 3.6-15 10.1-.8 6.5 4.7 12.5 12.2 13.4 2.4.3 3.6-.2 3.6-.2 0 .1-4.5-2.2-3.4-11.6" fill="#f15744"/><path d="m25.1 40c-1.4-.5-3.1.9-3.8 3-.7 2.1-.1 4.2 1.3 4.7 1.4.5 3.1-.9 3.8-3 .7-2.2.2-4.3-1.3-4.7" fill="#231f20"/><path d="m24.9 41.1c-1-.3-2.2.6-2.7 2.1-.5 1.5-.1 2.9.9 3.3 1 .3 2.2-.6 2.7-2.1.5-1.5.1-3-.9-3.3" fill="#44618b"/><path d="m24.7 37.9c-1.5-.1-2.5-2-2.4-4.2.2-2.2 1.5-3.9 3-3.8 1.5.1 2.5 2 2.4 4.2-.2 2.2-1.5 3.9-3 3.8" fill="#231f20"/><path d="m24.8 36.7c-1.1-.1-1.8-1.4-1.7-3 .1-1.6 1.1-2.8 2.1-2.7 1.1.1 1.8 1.4 1.7 3-.1 1.6-1.1 2.8-2.1 2.7" fill="#44618b"/><g fill="#428bc1"><path d="m24.2 37.2l-.2 3.2h1.2l.3-3.1z"/><path d="m26 30.5l1.4-2.5-1.1-.6-1.7 2.6z"/></g><path d="m27.3 40.1c.6.1 1.2-.4 1.3-1 .1-.6-.4-1.2-1-1.3l-.3 2.3" fill="#e0a372"/><path d="m32.6 36.9c1 .1.6 1.3.4 2.7s0 2.7-1 2.6c-1-.1-1.7-1.4-1.5-2.9.1-1.4 1.1-2.5 2.1-2.4" fill="#574137"/><g fill="#44618b"><path transform="matrix(.0921-.9957.9957.0921-17.8931 61.2024)" d="m24.3 39.9h.6v1h-.6z"/><path transform="matrix(.0666-.9978.9978.0666-14.0109 59.6251)" d="m24.6 36.8h.6v1h-.6z"/><path transform="matrix(.4235-.9059.9059.4235-12.7597 40.372)" d="m25.1 29.6h.6v1.2h-.6z"/></g><path fill="#75d6ff" d="m2 42h60v20h-60z"/><g fill="#42ade2"><path d="m23.8 55.8c-1.5.2-3.3.1-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.8 2.1 8.8.7"/><path d="m35.4 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m47 55.8c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m58.7 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ca-1f3fd.svg b/riot/emojione/svg/1f3ca-1f3fd.svg new file mode 100644 index 0000000..57e0642 --- /dev/null +++ b/riot/emojione/svg/1f3ca-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.3 12.3c6.1 7.6 7.7 11.6 7.2 18.3 7.6 0 9.4 6.2 14.4 6.2v9.8h-29.5c0 0 1.1-1.7-.1-4.1l1.1-8.4c0 0 1.9 2.6 5 .9 0 0-3.5-2.7-1.4-6.9-1.2-2.6-1.3-3.7-.9-7.6-6.6-2.7-12.7-2.2-19.3-1.8-2.1 3.3-8.2 4.8-10.8 4.3-1.5-.3 4-1.6 3-2.1 0 0-2.8.9-6.8.3-.5-.1 1-3.8 2.2-4.7 1.1-.8 4-2.4 6.7-2.3 1.7.1 3.4 1 4.8 1 1.7.1 3.9-.8 6.1-1.3 5.7-1.5 10.8-2.4 18.3-1.6" fill="#d6a57c"/><g fill="#b58360"><path d="m37 28.1c0 0 2.9 4.3 8.9 3.2-5.3-.9-8.9-3.2-8.9-3.2"/><path d="m39.9 23.4c0 0-2.1-5.2-8.1-4.2 4.7 1 8.1 4.2 8.1 4.2"/><path d="m52.3 42.5c0 0 1.9-9.2-5.2-11 5.7 2.5 5.2 11 5.2 11"/><path d="m32.9 34.5l-.9 7.9c3.9.6 7.3-.1 7.3-.1-2.5-6.4-6.4-7.8-6.4-7.8"/><ellipse transform="matrix(.1104-.9939.9939.1104 5.0751 83.6497)" cx="49.3" cy="39" rx="1.2" ry=".9"/></g><path d="m8.4 36.7c-.8 6.5 4.7 12.5 12.2 13.4 3.3.4 7-1.1 9.6-2.6 3.2-1.8 5.3-6.4 5.4-7.6.1-1.2-.8-6.1-3.5-8.6-2.2-2-5.4-4.3-8.7-4.7-7.5-.9-14.2 3.6-15 10.1" fill="#d6a57c"/><path d="m20.7 38.2c1.1-9.4 6.1-10.6 6.1-10.6 0 0-1.1-.8-3.5-1.1-7.5-.9-14.2 3.6-15 10.1-.8 6.5 4.7 12.5 12.2 13.4 2.4.3 3.6-.2 3.6-.2 0 .1-4.5-2.2-3.4-11.6" fill="#f15744"/><path d="m25.1 40c-1.4-.5-3.1.9-3.8 3-.7 2.1-.1 4.2 1.3 4.7 1.4.5 3.1-.9 3.8-3 .7-2.2.2-4.3-1.3-4.7" fill="#231f20"/><path d="m24.9 41.1c-1-.3-2.2.6-2.7 2.1-.5 1.5-.1 2.9.9 3.3 1 .3 2.2-.6 2.7-2.1.5-1.5.1-3-.9-3.3" fill="#44618b"/><path d="m24.7 37.9c-1.5-.1-2.5-2-2.4-4.2.2-2.2 1.5-3.9 3-3.8 1.5.1 2.5 2 2.4 4.2-.2 2.2-1.5 3.9-3 3.8" fill="#231f20"/><path d="m24.8 36.7c-1.1-.1-1.8-1.4-1.7-3 .1-1.6 1.1-2.8 2.1-2.7 1.1.1 1.8 1.4 1.7 3-.1 1.6-1.1 2.8-2.1 2.7" fill="#44618b"/><g fill="#428bc1"><path d="m24.2 37.2l-.2 3.2h1.2l.3-3.1z"/><path d="m26 30.5l1.4-2.5-1.1-.6-1.7 2.6z"/></g><path d="m27.3 40.1c.6.1 1.2-.4 1.3-1 .1-.6-.4-1.2-1-1.3l-.3 2.3" fill="#b58360"/><path d="m32.6 36.9c1 .1.6 1.3.4 2.7s0 2.7-1 2.6c-1-.1-1.7-1.4-1.5-2.9.1-1.4 1.1-2.5 2.1-2.4" fill="#574137"/><g fill="#44618b"><path transform="matrix(.0921-.9957.9957.0921-17.8931 61.2024)" d="m24.3 39.9h.6v1h-.6z"/><path transform="matrix(.0666-.9978.9978.0666-14.0109 59.6251)" d="m24.6 36.8h.6v1h-.6z"/><path transform="matrix(.4235-.9059.9059.4235-12.7597 40.372)" d="m25.1 29.6h.6v1.2h-.6z"/></g><path fill="#75d6ff" d="m2 42h60v20h-60z"/><g fill="#42ade2"><path d="m23.8 55.8c-1.5.2-3.3.1-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.8 2.1 8.8.7"/><path d="m35.4 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m47 55.8c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m58.7 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ca-1f3fe.svg b/riot/emojione/svg/1f3ca-1f3fe.svg new file mode 100644 index 0000000..12d607b --- /dev/null +++ b/riot/emojione/svg/1f3ca-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.3 12.3c6.1 7.6 7.7 11.6 7.2 18.3 7.6 0 9.4 6.2 14.4 6.2v9.8h-29.5c0 0 1.1-1.7-.1-4.1l1.1-8.4c0 0 1.9 2.6 5 .9 0 0-3.5-2.7-1.4-6.9-1.2-2.6-1.3-3.7-.9-7.6-6.6-2.7-12.7-2.2-19.3-1.8-2.1 3.3-8.2 4.8-10.8 4.3-1.5-.3 4-1.6 3-2.1 0 0-2.8.9-6.8.3-.5-.1 1-3.8 2.2-4.7 1.1-.8 4-2.4 6.7-2.3 1.7.1 3.4 1 4.8 1 1.7.1 3.9-.8 6.1-1.3 5.7-1.5 10.8-2.4 18.3-1.6" fill="#b47d56"/><g fill="#935e3e"><path d="m37 28.1c0 0 2.9 4.3 8.9 3.2-5.3-.9-8.9-3.2-8.9-3.2"/><path d="m39.9 23.4c0 0-2.1-5.2-8.1-4.2 4.7 1 8.1 4.2 8.1 4.2"/><path d="m52.3 42.5c0 0 1.9-9.2-5.2-11 5.7 2.5 5.2 11 5.2 11"/><path d="m32.9 34.5l-.9 7.9c3.9.6 7.3-.1 7.3-.1-2.5-6.4-6.4-7.8-6.4-7.8"/><ellipse transform="matrix(.1104-.9939.9939.1104 5.0751 83.6497)" cx="49.3" cy="39" rx="1.2" ry=".9"/></g><path d="m8.4 36.7c-.8 6.5 4.7 12.5 12.2 13.4 3.3.4 7-1.1 9.6-2.6 3.2-1.8 5.3-6.4 5.4-7.6.1-1.2-.8-6.1-3.5-8.6-2.2-2-5.4-4.3-8.7-4.7-7.5-.9-14.2 3.6-15 10.1" fill="#b47d56"/><path d="m20.7 38.2c1.1-9.4 6.1-10.6 6.1-10.6 0 0-1.1-.8-3.5-1.1-7.5-.9-14.2 3.6-15 10.1-.8 6.5 4.7 12.5 12.2 13.4 2.4.3 3.6-.2 3.6-.2 0 .1-4.5-2.2-3.4-11.6" fill="#f15744"/><path d="m25.1 40c-1.4-.5-3.1.9-3.8 3-.7 2.1-.1 4.2 1.3 4.7 1.4.5 3.1-.9 3.8-3 .7-2.2.2-4.3-1.3-4.7" fill="#231f20"/><path d="m24.9 41.1c-1-.3-2.2.6-2.7 2.1-.5 1.5-.1 2.9.9 3.3 1 .3 2.2-.6 2.7-2.1.5-1.5.1-3-.9-3.3" fill="#44618b"/><path d="m24.7 37.9c-1.5-.1-2.5-2-2.4-4.2.2-2.2 1.5-3.9 3-3.8 1.5.1 2.5 2 2.4 4.2-.2 2.2-1.5 3.9-3 3.8" fill="#231f20"/><path d="m24.8 36.7c-1.1-.1-1.8-1.4-1.7-3 .1-1.6 1.1-2.8 2.1-2.7 1.1.1 1.8 1.4 1.7 3-.1 1.6-1.1 2.8-2.1 2.7" fill="#44618b"/><g fill="#428bc1"><path d="m24.2 37.2l-.2 3.2h1.2l.3-3.1z"/><path d="m26 30.5l1.4-2.5-1.1-.6-1.7 2.6z"/></g><path d="m27.3 40.1c.6.1 1.2-.4 1.3-1 .1-.6-.4-1.2-1-1.3l-.3 2.3" fill="#935e3e"/><path d="m32.6 36.9c1 .1.6 1.3.4 2.7s0 2.7-1 2.6c-1-.1-1.7-1.4-1.5-2.9.1-1.4 1.1-2.5 2.1-2.4" fill="#574137"/><g fill="#44618b"><path transform="matrix(.0921-.9957.9957.0921-17.8931 61.2024)" d="m24.3 39.9h.6v1h-.6z"/><path transform="matrix(.0666-.9978.9978.0666-14.0109 59.6251)" d="m24.6 36.8h.6v1h-.6z"/><path transform="matrix(.4235-.9059.9059.4235-12.7597 40.372)" d="m25.1 29.6h.6v1.2h-.6z"/></g><path fill="#75d6ff" d="m2 42h60v20h-60z"/><g fill="#42ade2"><path d="m23.8 55.8c-1.5.2-3.3.1-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.8 2.1 8.8.7"/><path d="m35.4 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m47 55.8c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m58.7 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ca-1f3ff.svg b/riot/emojione/svg/1f3ca-1f3ff.svg new file mode 100644 index 0000000..99fe3f2 --- /dev/null +++ b/riot/emojione/svg/1f3ca-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.3 12.3c6.1 7.6 7.7 11.6 7.2 18.3 7.6 0 9.4 6.2 14.4 6.2v9.8h-29.5c0 0 1.1-1.7-.1-4.1l1.1-8.4c0 0 1.9 2.6 5 .9 0 0-3.5-2.7-1.4-6.9-1.2-2.6-1.3-3.7-.9-7.6-6.6-2.7-12.7-2.2-19.3-1.8-2.1 3.3-8.2 4.8-10.8 4.3-1.5-.3 4-1.6 3-2.1 0 0-2.8.9-6.8.3-.5-.1 1-3.8 2.2-4.7 1.1-.8 4-2.4 6.7-2.3 1.7.1 3.4 1 4.8 1 1.7.1 3.9-.8 6.1-1.3 5.7-1.5 10.8-2.4 18.3-1.6" fill="#8a6859"/><g fill="#705041"><path d="m37 28.1c0 0 2.9 4.3 8.9 3.2-5.3-.9-8.9-3.2-8.9-3.2"/><path d="m39.9 23.4c0 0-2.1-5.2-8.1-4.2 4.7 1 8.1 4.2 8.1 4.2"/><path d="m52.3 42.5c0 0 1.9-9.2-5.2-11 5.7 2.5 5.2 11 5.2 11"/><path d="m32.9 34.5l-.9 7.9c3.9.6 7.3-.1 7.3-.1-2.5-6.4-6.4-7.8-6.4-7.8"/><ellipse transform="matrix(.1104-.9939.9939.1104 5.0751 83.6497)" cx="49.3" cy="39" rx="1.2" ry=".9"/></g><path d="m8.4 36.7c-.8 6.5 4.7 12.5 12.2 13.4 3.3.4 7-1.1 9.6-2.6 3.2-1.8 5.3-6.4 5.4-7.6.1-1.2-.8-6.1-3.5-8.6-2.2-2-5.4-4.3-8.7-4.7-7.5-.9-14.2 3.6-15 10.1" fill="#8a6859"/><path d="m20.7 38.2c1.1-9.4 6.1-10.6 6.1-10.6 0 0-1.1-.8-3.5-1.1-7.5-.9-14.2 3.6-15 10.1-.8 6.5 4.7 12.5 12.2 13.4 2.4.3 3.6-.2 3.6-.2 0 .1-4.5-2.2-3.4-11.6" fill="#f15744"/><path d="m25.1 40c-1.4-.5-3.1.9-3.8 3-.7 2.1-.1 4.2 1.3 4.7 1.4.5 3.1-.9 3.8-3 .7-2.2.2-4.3-1.3-4.7" fill="#231f20"/><path d="m24.9 41.1c-1-.3-2.2.6-2.7 2.1-.5 1.5-.1 2.9.9 3.3 1 .3 2.2-.6 2.7-2.1.5-1.5.1-3-.9-3.3" fill="#44618b"/><path d="m24.7 37.9c-1.5-.1-2.5-2-2.4-4.2.2-2.2 1.5-3.9 3-3.8 1.5.1 2.5 2 2.4 4.2-.2 2.2-1.5 3.9-3 3.8" fill="#231f20"/><path d="m24.8 36.7c-1.1-.1-1.8-1.4-1.7-3 .1-1.6 1.1-2.8 2.1-2.7 1.1.1 1.8 1.4 1.7 3-.1 1.6-1.1 2.8-2.1 2.7" fill="#44618b"/><g fill="#428bc1"><path d="m24.2 37.2l-.2 3.2h1.2l.3-3.1z"/><path d="m26 30.5l1.4-2.5-1.1-.6-1.7 2.6z"/></g><path d="m27.3 40.1c.6.1 1.2-.4 1.3-1 .1-.6-.4-1.2-1-1.3l-.3 2.3" fill="#705041"/><path d="m32.6 36.9c1 .1.6 1.3.4 2.7s0 2.7-1 2.6c-1-.1-1.7-1.4-1.5-2.9.1-1.4 1.1-2.5 2.1-2.4" fill="#574137"/><g fill="#44618b"><path transform="matrix(.0921-.9957.9957.0921-17.8931 61.2024)" d="m24.3 39.9h.6v1h-.6z"/><path transform="matrix(.0666-.9978.9978.0666-14.0109 59.6251)" d="m24.6 36.8h.6v1h-.6z"/><path transform="matrix(.4235-.9059.9059.4235-12.7597 40.372)" d="m25.1 29.6h.6v1.2h-.6z"/></g><path fill="#75d6ff" d="m2 42h60v20h-60z"/><g fill="#42ade2"><path d="m23.8 55.8c-1.5.2-3.3.1-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.8 2.1 8.8.7"/><path d="m35.4 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m47 55.8c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m58.7 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ca.svg b/riot/emojione/svg/1f3ca.svg new file mode 100644 index 0000000..5b62b5c --- /dev/null +++ b/riot/emojione/svg/1f3ca.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.3 12.3c6.1 7.6 7.7 11.6 7.2 18.3 7.6 0 9.4 6.2 14.4 6.2v9.8h-29.5c0 0 1.1-1.7-.1-4.1l1.1-8.4c0 0 1.9 2.6 5 .9 0 0-3.5-2.7-1.4-6.9-1.2-2.6-1.3-3.7-.9-7.6-6.6-2.7-12.7-2.2-19.3-1.8-2.1 3.3-8.2 4.8-10.8 4.3-1.5-.3 4-1.6 3-2.1 0 0-2.8.9-6.8.3-.5-.1 1-3.8 2.2-4.7 1.1-.8 4-2.4 6.7-2.3 1.7.1 3.4 1 4.8 1 1.7.1 3.9-.8 6.1-1.3 5.7-1.5 10.8-2.4 18.3-1.6" fill="#ffdd67"/><g fill="#eba352"><path d="m37 28.1c0 0 2.9 4.3 8.9 3.2-5.3-.9-8.9-3.2-8.9-3.2"/><path d="m39.9 23.4c0 0-2.1-5.2-8.1-4.2 4.7 1 8.1 4.2 8.1 4.2"/><path d="m52.3 42.5c0 0 1.9-9.2-5.2-11 5.7 2.5 5.2 11 5.2 11"/><path d="m32.9 34.5l-.9 7.9c3.9.6 7.3-.1 7.3-.1-2.5-6.4-6.4-7.8-6.4-7.8"/><ellipse transform="matrix(.1104-.9939.9939.1104 5.0751 83.6497)" cx="49.3" cy="39" rx="1.2" ry=".9"/></g><path d="m8.4 36.7c-.8 6.5 4.7 12.5 12.2 13.4 3.3.4 7-1.1 9.6-2.6 3.2-1.8 5.3-6.4 5.4-7.6.1-1.2-.8-6.1-3.5-8.6-2.2-2-5.4-4.3-8.7-4.7-7.5-.9-14.2 3.6-15 10.1" fill="#ffdd67"/><path d="m20.7 38.2c1.1-9.4 6.1-10.6 6.1-10.6 0 0-1.1-.8-3.5-1.1-7.5-.9-14.2 3.6-15 10.1-.8 6.5 4.7 12.5 12.2 13.4 2.4.3 3.6-.2 3.6-.2 0 .1-4.5-2.2-3.4-11.6" fill="#f15744"/><path d="m25.1 40c-1.4-.5-3.1.9-3.8 3-.7 2.1-.1 4.2 1.3 4.7 1.4.5 3.1-.9 3.8-3 .7-2.2.2-4.3-1.3-4.7" fill="#231f20"/><path d="m24.9 41.1c-1-.3-2.2.6-2.7 2.1-.5 1.5-.1 2.9.9 3.3 1 .3 2.2-.6 2.7-2.1.5-1.5.1-3-.9-3.3" fill="#44618b"/><path d="m24.7 37.9c-1.5-.1-2.5-2-2.4-4.2.2-2.2 1.5-3.9 3-3.8 1.5.1 2.5 2 2.4 4.2-.2 2.2-1.5 3.9-3 3.8" fill="#231f20"/><path d="m24.8 36.7c-1.1-.1-1.8-1.4-1.7-3 .1-1.6 1.1-2.8 2.1-2.7 1.1.1 1.8 1.4 1.7 3-.1 1.6-1.1 2.8-2.1 2.7" fill="#44618b"/><g fill="#428bc1"><path d="m24.2 37.2l-.2 3.2h1.2l.3-3.1z"/><path d="m26 30.5l1.4-2.5-1.1-.6-1.7 2.6z"/></g><path d="m27.3 40.1c.6.1 1.2-.4 1.3-1 .1-.6-.4-1.2-1-1.3l-.3 2.3" fill="#eba352"/><path d="m32.6 36.9c1 .1.6 1.3.4 2.7s0 2.7-1 2.6c-1-.1-1.7-1.4-1.5-2.9.1-1.4 1.1-2.5 2.1-2.4" fill="#574137"/><g fill="#44618b"><path transform="matrix(.0921-.9957.9957.0921-17.8931 61.2024)" d="m24.3 39.9h.6v1h-.6z"/><path transform="matrix(.0666-.9978.9978.0666-14.0109 59.6251)" d="m24.6 36.8h.6v1h-.6z"/><path transform="matrix(.4239-.9057.9057.4239-12.7666 40.3521)" d="m25.1 29.6h.6v1.2h-.6z"/></g><path fill="#75d6ff" d="m2 42h60v20h-60z"/><g fill="#42ade2"><path d="m23.8 55.8c-1.5.2-3.3.1-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.8 2.1 8.8.7"/><path d="m35.4 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m47 55.8c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6 0-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/><path d="m58.7 48.1c-1.4.2-3.4.2-4.7-.4-1.9-.6-3.6-1.7-5.6-2-2.7-.5-5.6-.1-8.1 1 3.3-.2 6.4-.5 9.6.7 2.7 1 5.9 2.1 8.8.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cb-1f3fb.svg b/riot/emojione/svg/1f3cb-1f3fb.svg new file mode 100644 index 0000000..1d993f5 --- /dev/null +++ b/riot/emojione/svg/1f3cb-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.6 19.9l1 1.8h16.9l.7-1.9c0-6.8-1.6-9.7-9.1-9.8-7.6-.1-9.5 3-9.5 9.9" fill="#594640"/><path d="m40.5 19.8c-.1.4-.1.8-.3 1-.2.4-.6.6-.6.6s.1-.8.1-1.8c-.4-6.3-.8-3.3-7.7-3.3-6.9 0-7.3-3-7.7 3.3 0 1.1.1 1.8.1 1.8s-.4-.2-.6-.6c-.1-.2-.2-.6-.3-1-.7-.2-1.5 0-1.5 1.9 0 1.2.4 2.1 1.9 2.2.5 3.9 5.8 6.5 8.1 6.5 2.4 0 7.6-2.6 8.1-6.5 1.5-.1 1.9-1.1 1.9-2.2 0-1.9-.8-2.1-1.5-1.9" fill="#ffe1bd"/><g fill="#664e27"><circle cx="28.4" cy="21.8" r="1.5"/><circle cx="35.5" cy="21.8" r="1.5"/><path d="m34.3 26.3c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.5-.2-.3"/></g><g fill="#ffe1bd"><path d="m30.4 29.9v.9c0 .5-.4.9-.8 1.1h-4.8v11c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-11h-4.9c-.5-.1-.8-.6-.8-1.1v-.9h-3.3"/><path d="m49.2 9.4c-1.7-.5-2.3.6-2.7 1.5-.3.1-.6.3-.7.7l-.2.7c-.1.5.1 1 .6 1.2h.1l-2.7 10.9 2.9.6 2.7-10.9c.6-.1.8-.7 1.3-2.4.5-1.8-1-2.2-1.3-2.3"/><path d="m17.7 13.4c.5-.1.8-.7.6-1.2l-.2-.7c-.1-.4-.4-.6-.7-.7-.3-.9-1-2-2.7-1.5-.3.1-1.8.5-1.3 2.3.5 1.7.7 2.3 1.3 2.4l2.8 11 2.9-.6-2.7-11"/></g><path d="m5.5 15.4v-1.8c0 0 8.8-4.5 26.5-4.5 17.7 0 26.5 4.5 26.5 4.5v1.8c0 0-8.8-4.5-26.5-4.5-17.7 0-26.5 4.5-26.5 4.5" fill="#94989b"/><path d="m46.9 11.4c.1-.3-.1-.5-.3-.6-.3-.1-.5.1-.6.4l-.3 1.2.9.2.3-1.2" fill="#ffe1bd"/><path d="m46.6 11.1c.1.1.1.2.1.4 0 .1 0 .3-.1.4-.1.2-.1.5-.2.7 0 .2.2.2.3.1.1-.2.1-.5.2-.7 0-.2.1-.3.1-.5 0-.2-.1-.4-.2-.5-.1-.1-.3 0-.2.1" fill="#e6b796"/><path d="m17.1 11.4c-.1-.3.1-.5.3-.6.3-.1.5.1.6.4l.3 1.2-.9.2-.3-1.2" fill="#ffe1bd"/><path d="m17.4 11.1c-.1.1-.1.2-.1.4 0 .1 0 .3.1.4.1.2.1.5.2.7 0 .2-.2.2-.3.1-.1-.2-.1-.5-.2-.7 0-.2-.1-.3-.1-.5 0-.2.1-.4.2-.5.1-.1.3 0 .2.1" fill="#e6b796"/><path d="m24.7 42.4v1.6-1.6" fill="#428bc1"/><g fill="#3e4347"><path d="m56.9 22l-3.7-1.4 5.1-14.2 3.7 1.4z"/><path d="m52.8 23.6l-5.2-1.9 7.1-19.7 5.2 1.9z"/><path d="M7.1 22 10.8 20.6 5.7 6.4 2 7.8z"/><path d="M11.2 23.6 16.4 21.7 9.3 2 4.1 3.9z"/></g><path d="m46.5 25l-2.8-1.2-5.6 8h-2.9c-.4 1.5-1.7 2.6-3.2 2.6s-2.9-1.1-3.2-2.6h-2.9l-5.6-8-2.8 1.2 7.3 10.3v8.6c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-8.6l7.1-10.3" fill="#47b892"/><g fill="#d3976e"><path d="m20.2 59.3c-1.4 0-2.5 1.2-2.5 2.7h7v-2.7h-4.5"/><path d="m43.8 59.3c1.4 0 2.5 1.2 2.5 2.7h-7v-2.7h4.5"/></g><path d="m24.7 41.9v1.7-1.7" fill="#f2b200"/><path d="m41.7 48.3l-2.4-1.8v-2.9c0 0-2.5 1.5-7.3 1.5-4.8 0-7.3-1.5-7.3-1.5v2.9l-2.4 1.8c-1.5 1.2-2.1 2.2-2.1 3.5 0 1.6 0 7.5 0 7.5h4.5v-5.9l3.8-3c.5-.4 1.1-.7 1.8-.7 0 0 2.5 0 3.4 0 .9 0 1.9.8 1.9.8l3.7 2.9v5.9h4.5c0 0 0-5.8 0-7.5 0-1.3-.6-2.4-2.1-3.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cb-1f3fc.svg b/riot/emojione/svg/1f3cb-1f3fc.svg new file mode 100644 index 0000000..4b386c0 --- /dev/null +++ b/riot/emojione/svg/1f3cb-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.6 19.9l1 1.8h16.9l.7-1.9c0-6.8-1.6-9.7-9.1-9.8-7.6-.1-9.5 3-9.5 9.9" fill="#dbb471"/><path d="m40.5 19.8c-.1.4-.1.8-.3 1-.2.4-.6.6-.6.6s.1-.8.1-1.8c-.4-6.3-.8-3.3-7.7-3.3-6.9 0-7.3-3-7.7 3.3 0 1.1.1 1.8.1 1.8s-.4-.2-.6-.6c-.1-.2-.2-.6-.3-1-.7-.2-1.5 0-1.5 1.9 0 1.2.4 2.1 1.9 2.2.5 3.9 5.8 6.5 8.1 6.5 2.4 0 7.6-2.6 8.1-6.5 1.5-.1 1.9-1.1 1.9-2.2 0-1.9-.8-2.1-1.5-1.9" fill="#fed0ac"/><g fill="#664e27"><circle cx="28.4" cy="21.8" r="1.5"/><circle cx="35.5" cy="21.8" r="1.5"/><path d="m34.3 26.3c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.5-.2-.3"/></g><g fill="#fed0ac"><path d="m30.4 29.9v.9c0 .5-.4.9-.8 1.1h-4.8v11c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-11h-4.9c-.5-.1-.8-.6-.8-1.1v-.9h-3.3"/><path d="m49.2 9.4c-1.7-.5-2.3.6-2.7 1.5-.3.1-.6.3-.7.7l-.2.7c-.1.5.1 1 .6 1.2h.1l-2.7 10.9 2.9.6 2.7-10.9c.6-.1.8-.7 1.3-2.4.5-1.8-1-2.2-1.3-2.3"/><path d="m17.7 13.4c.5-.1.8-.7.6-1.2l-.2-.7c-.1-.4-.4-.6-.7-.7-.3-.9-1-2-2.7-1.5-.3.1-1.8.5-1.3 2.3.5 1.7.7 2.3 1.3 2.4l2.8 11 2.9-.6-2.7-11"/></g><path d="m5.5 15.4v-1.8c0 0 8.8-4.5 26.5-4.5 17.7 0 26.5 4.5 26.5 4.5v1.8c0 0-8.8-4.5-26.5-4.5-17.7 0-26.5 4.5-26.5 4.5" fill="#94989b"/><path d="m46.9 11.4c.1-.3-.1-.5-.3-.6-.3-.1-.5.1-.6.4l-.3 1.2.9.2.3-1.2" fill="#fed0ac"/><path d="m46.6 11.1c.1.1.1.2.1.4 0 .1 0 .3-.1.4-.1.2-.1.5-.2.7 0 .2.2.2.3.1.1-.2.1-.5.2-.7 0-.2.1-.3.1-.5 0-.2-.1-.4-.2-.5-.1-.1-.3 0-.2.1" fill="#e0a372"/><path d="m17.1 11.4c-.1-.3.1-.5.3-.6.3-.1.5.1.6.4l.3 1.2-.9.2-.3-1.2" fill="#fed0ac"/><path d="m17.4 11.1c-.1.1-.1.2-.1.4 0 .1 0 .3.1.4.1.2.1.5.2.7 0 .2-.2.2-.3.1-.1-.2-.1-.5-.2-.7 0-.2-.1-.3-.1-.5 0-.2.1-.4.2-.5.1-.1.3 0 .2.1" fill="#e0a372"/><path d="m24.7 42.4v1.6-1.6" fill="#428bc1"/><g fill="#3e4347"><path d="m56.9 22l-3.7-1.4 5.1-14.2 3.7 1.4z"/><path d="m52.8 23.6l-5.2-1.9 7.1-19.7 5.2 1.9z"/><path d="M7.1 22 10.8 20.6 5.7 6.4 2 7.8z"/><path d="M11.2 23.6 16.4 21.7 9.3 2 4.1 3.9z"/></g><path d="m46.5 25l-2.8-1.2-5.6 8h-2.9c-.4 1.5-1.7 2.6-3.2 2.6s-2.9-1.1-3.2-2.6h-2.9l-5.6-8-2.8 1.2 7.3 10.3v8.6c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-8.6l7.1-10.3" fill="#47b892"/><g fill="#d3976e"><path d="m20.2 59.3c-1.4 0-2.5 1.2-2.5 2.7h7v-2.7h-4.5"/><path d="m43.8 59.3c1.4 0 2.5 1.2 2.5 2.7h-7v-2.7h4.5"/></g><path d="m24.7 41.9v1.7-1.7" fill="#f2b200"/><path d="m41.7 48.3l-2.4-1.8v-2.9c0 0-2.5 1.5-7.3 1.5-4.8 0-7.3-1.5-7.3-1.5v2.9l-2.4 1.8c-1.5 1.2-2.1 2.2-2.1 3.5 0 1.6 0 7.5 0 7.5h4.5v-5.9l3.8-3c.5-.4 1.1-.7 1.8-.7 0 0 2.5 0 3.4 0 .9 0 1.9.8 1.9.8l3.7 2.9v5.9h4.5c0 0 0-5.8 0-7.5 0-1.3-.6-2.4-2.1-3.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cb-1f3fd.svg b/riot/emojione/svg/1f3cb-1f3fd.svg new file mode 100644 index 0000000..0677833 --- /dev/null +++ b/riot/emojione/svg/1f3cb-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.6 19.9l1 1.8h16.9l.7-1.9c0-6.8-1.6-9.7-9.1-9.8-7.6-.1-9.5 3-9.5 9.9" fill="#594640"/><path d="m40.5 19.8c-.1.4-.1.8-.3 1-.2.4-.6.6-.6.6s.1-.8.1-1.8c-.4-6.3-.8-3.3-7.7-3.3-6.9 0-7.3-3-7.7 3.3 0 1.1.1 1.8.1 1.8s-.4-.2-.6-.6c-.1-.2-.2-.6-.3-1-.7-.2-1.5 0-1.5 1.9 0 1.2.4 2.1 1.9 2.2.5 3.9 5.8 6.5 8.1 6.5 2.4 0 7.6-2.6 8.1-6.5 1.5-.1 1.9-1.1 1.9-2.2 0-1.9-.8-2.1-1.5-1.9" fill="#d6a57c"/><g fill="#664e27"><circle cx="28.4" cy="21.8" r="1.5"/><circle cx="35.5" cy="21.8" r="1.5"/><path d="m34.3 26.3c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.5-.2-.3"/></g><g fill="#d6a57c"><path d="m30.4 29.9v.9c0 .5-.4.9-.8 1.1h-4.8v11c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-11h-4.9c-.5-.1-.8-.6-.8-1.1v-.9h-3.3"/><path d="m49.2 9.4c-1.7-.5-2.3.6-2.7 1.5-.3.1-.6.3-.7.7l-.2.7c-.1.5.1 1 .6 1.2h.1l-2.7 10.9 2.9.6 2.7-10.9c.6-.1.8-.7 1.3-2.4.5-1.8-1-2.2-1.3-2.3"/><path d="m17.7 13.4c.5-.1.8-.7.6-1.2l-.2-.7c-.1-.4-.4-.6-.7-.7-.3-.9-1-2-2.7-1.5-.3.1-1.8.5-1.3 2.3.5 1.7.7 2.3 1.3 2.4l2.8 11 2.9-.6-2.7-11"/></g><path d="m5.5 15.4v-1.8c0 0 8.8-4.5 26.5-4.5 17.7 0 26.5 4.5 26.5 4.5v1.8c0 0-8.8-4.5-26.5-4.5-17.7 0-26.5 4.5-26.5 4.5" fill="#94989b"/><path d="m46.9 11.4c.1-.3-.1-.5-.3-.6-.3-.1-.5.1-.6.4l-.3 1.2.9.2.3-1.2" fill="#d6a57c"/><path d="m46.6 11.1c.1.1.1.2.1.4 0 .1 0 .3-.1.4-.1.2-.1.5-.2.7 0 .2.2.2.3.1.1-.2.1-.5.2-.7 0-.2.1-.3.1-.5 0-.2-.1-.4-.2-.5-.1-.1-.3 0-.2.1" fill="#b58360"/><path d="m17.1 11.4c-.1-.3.1-.5.3-.6.3-.1.5.1.6.4l.3 1.2-.9.2-.3-1.2" fill="#d6a57c"/><path d="m17.4 11.1c-.1.1-.1.2-.1.4 0 .1 0 .3.1.4.1.2.1.5.2.7 0 .2-.2.2-.3.1-.1-.2-.1-.5-.2-.7 0-.2-.1-.3-.1-.5 0-.2.1-.4.2-.5.1-.1.3 0 .2.1" fill="#b58360"/><path d="m24.7 42.4v1.6-1.6" fill="#428bc1"/><g fill="#3e4347"><path d="m56.9 22l-3.7-1.4 5.1-14.2 3.7 1.4z"/><path d="m52.8 23.6l-5.2-1.9 7.1-19.7 5.2 1.9z"/><path d="M7.1 22 10.8 20.6 5.7 6.4 2 7.8z"/><path d="M11.2 23.6 16.4 21.7 9.3 2 4.1 3.9z"/></g><path d="m46.5 25l-2.8-1.2-5.6 8h-2.9c-.4 1.5-1.7 2.6-3.2 2.6s-2.9-1.1-3.2-2.6h-2.9l-5.6-8-2.8 1.2 7.3 10.3v8.6c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-8.6l7.1-10.3" fill="#47b892"/><g fill="#d3976e"><path d="m20.2 59.3c-1.4 0-2.5 1.2-2.5 2.7h7v-2.7h-4.5"/><path d="m43.8 59.3c1.4 0 2.5 1.2 2.5 2.7h-7v-2.7h4.5"/></g><path d="m24.7 41.9v1.7-1.7" fill="#f2b200"/><path d="m41.7 48.3l-2.4-1.8v-2.9c0 0-2.5 1.5-7.3 1.5-4.8 0-7.3-1.5-7.3-1.5v2.9l-2.4 1.8c-1.5 1.2-2.1 2.2-2.1 3.5 0 1.6 0 7.5 0 7.5h4.5v-5.9l3.8-3c.5-.4 1.1-.7 1.8-.7 0 0 2.5 0 3.4 0 .9 0 1.9.8 1.9.8l3.7 2.9v5.9h4.5c0 0 0-5.8 0-7.5 0-1.3-.6-2.4-2.1-3.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cb-1f3fe.svg b/riot/emojione/svg/1f3cb-1f3fe.svg new file mode 100644 index 0000000..7df96c4 --- /dev/null +++ b/riot/emojione/svg/1f3cb-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.6 19.9l1 1.8h16.9l.7-1.9c0-6.8-1.6-9.7-9.1-9.8-7.6-.1-9.5 3-9.5 9.9" fill="#231f20"/><path d="m40.5 19.8c-.1.4-.1.8-.3 1-.2.4-.6.6-.6.6s.1-.8.1-1.8c-.4-6.3-.8-3.3-7.7-3.3-6.9 0-7.3-3-7.7 3.3 0 1.1.1 1.8.1 1.8s-.4-.2-.6-.6c-.1-.2-.2-.6-.3-1-.7-.2-1.5 0-1.5 1.9 0 1.2.4 2.1 1.9 2.2.5 3.9 5.8 6.5 8.1 6.5 2.4 0 7.6-2.6 8.1-6.5 1.5-.1 1.9-1.1 1.9-2.2 0-1.9-.8-2.1-1.5-1.9" fill="#b47d56"/><g fill="#664e27"><circle cx="28.4" cy="21.8" r="1.5"/><circle cx="35.5" cy="21.8" r="1.5"/><path d="m34.3 26.3c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.5-.2-.3"/></g><g fill="#b47d56"><path d="m30.4 29.9v.9c0 .5-.4.9-.8 1.1h-4.8v11c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-11h-4.9c-.5-.1-.8-.6-.8-1.1v-.9h-3.3"/><path d="m49.2 9.4c-1.7-.5-2.3.6-2.7 1.5-.3.1-.6.3-.7.7l-.2.7c-.1.5.1 1 .6 1.2h.1l-2.7 10.9 2.9.6 2.7-10.9c.6-.1.8-.7 1.3-2.4.5-1.8-1-2.2-1.3-2.3"/><path d="m17.7 13.4c.5-.1.8-.7.6-1.2l-.2-.7c-.1-.4-.4-.6-.7-.7-.3-.9-1-2-2.7-1.5-.3.1-1.8.5-1.3 2.3.5 1.7.7 2.3 1.3 2.4l2.8 11 2.9-.6-2.7-11"/></g><path d="m5.5 15.4v-1.8c0 0 8.8-4.5 26.5-4.5 17.7 0 26.5 4.5 26.5 4.5v1.8c0 0-8.8-4.5-26.5-4.5-17.7 0-26.5 4.5-26.5 4.5" fill="#94989b"/><path d="m46.9 11.4c.1-.3-.1-.5-.3-.6-.3-.1-.5.1-.6.4l-.3 1.2.9.2.3-1.2" fill="#b47d56"/><path d="m46.6 11.1c.1.1.1.2.1.4 0 .1 0 .3-.1.4-.1.2-.1.5-.2.7 0 .2.2.2.3.1.1-.2.1-.5.2-.7 0-.2.1-.3.1-.5 0-.2-.1-.4-.2-.5-.1-.1-.3 0-.2.1" fill="#935e3e"/><path d="m17.1 11.4c-.1-.3.1-.5.3-.6.3-.1.5.1.6.4l.3 1.2-.9.2-.3-1.2" fill="#b47d56"/><path d="m17.4 11.1c-.1.1-.1.2-.1.4 0 .1 0 .3.1.4.1.2.1.5.2.7 0 .2-.2.2-.3.1-.1-.2-.1-.5-.2-.7 0-.2-.1-.3-.1-.5 0-.2.1-.4.2-.5.1-.1.3 0 .2.1" fill="#935e3e"/><path d="m24.7 42.4v1.6-1.6" fill="#428bc1"/><g fill="#3e4347"><path d="m56.9 22l-3.7-1.4 5.1-14.2 3.7 1.4z"/><path d="m52.8 23.6l-5.2-1.9 7.1-19.7 5.2 1.9z"/><path d="M7.1 22 10.8 20.6 5.7 6.4 2 7.8z"/><path d="M11.2 23.6 16.4 21.7 9.3 2 4.1 3.9z"/></g><path d="m46.5 25l-2.8-1.2-5.6 8h-2.9c-.4 1.5-1.7 2.6-3.2 2.6s-2.9-1.1-3.2-2.6h-2.9l-5.6-8-2.8 1.2 7.3 10.3v8.6c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-8.6l7.1-10.3" fill="#47b892"/><g fill="#d3976e"><path d="m20.2 59.3c-1.4 0-2.5 1.2-2.5 2.7h7v-2.7h-4.5"/><path d="m43.8 59.3c1.4 0 2.5 1.2 2.5 2.7h-7v-2.7h4.5"/></g><path d="m24.7 41.9v1.7-1.7" fill="#f2b200"/><path d="m41.7 48.3l-2.4-1.8v-2.9c0 0-2.5 1.5-7.3 1.5-4.8 0-7.3-1.5-7.3-1.5v2.9l-2.4 1.8c-1.5 1.2-2.1 2.2-2.1 3.5 0 1.6 0 7.5 0 7.5h4.5v-5.9l3.8-3c.5-.4 1.1-.7 1.8-.7 0 0 2.5 0 3.4 0 .9 0 1.9.8 1.9.8l3.7 2.9v5.9h4.5c0 0 0-5.8 0-7.5 0-1.3-.6-2.4-2.1-3.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cb-1f3ff.svg b/riot/emojione/svg/1f3cb-1f3ff.svg new file mode 100644 index 0000000..252bf0e --- /dev/null +++ b/riot/emojione/svg/1f3cb-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.6 19.9l1 1.8h16.9l.7-1.9c0-6.8-1.6-9.7-9.1-9.8-7.6-.1-9.5 3-9.5 9.9" fill="#231f20"/><path d="m40.5 19.8c-.1.4-.1.8-.3 1-.2.4-.6.6-.6.6s.1-.8.1-1.8c-.4-6.3-.8-3.3-7.7-3.3-6.9 0-7.3-3-7.7 3.3 0 1.1.1 1.8.1 1.8s-.4-.2-.6-.6c-.1-.2-.2-.6-.3-1-.7-.2-1.5 0-1.5 1.9 0 1.2.4 2.1 1.9 2.2.5 3.9 5.8 6.5 8.1 6.5 2.4 0 7.6-2.6 8.1-6.5 1.5-.1 1.9-1.1 1.9-2.2 0-1.9-.8-2.1-1.5-1.9" fill="#8a6859"/><g fill="#574137"><circle cx="28.4" cy="21.8" r="1.5"/><circle cx="35.5" cy="21.8" r="1.5"/><path d="m34.3 26.3c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.5-.2-.3"/></g><g fill="#8a6859"><path d="m30.4 29.9v.9c0 .5-.4.9-.8 1.1h-4.8v11c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-11h-4.9c-.5-.1-.8-.6-.8-1.1v-.9h-3.3"/><path d="m49.2 9.4c-1.7-.5-2.3.6-2.7 1.5-.3.1-.6.3-.7.7l-.2.7c-.1.5.1 1 .6 1.2h.1l-2.7 10.9 2.9.6 2.7-10.9c.6-.1.8-.7 1.3-2.4.5-1.8-1-2.2-1.3-2.3"/><path d="m17.7 13.4c.5-.1.8-.7.6-1.2l-.2-.7c-.1-.4-.4-.6-.7-.7-.3-.9-1-2-2.7-1.5-.3.1-1.8.5-1.3 2.3.5 1.7.7 2.3 1.3 2.4l2.8 11 2.9-.6-2.7-11"/></g><path d="m5.5 15.4v-1.8c0 0 8.8-4.5 26.5-4.5 17.7 0 26.5 4.5 26.5 4.5v1.8c0 0-8.8-4.5-26.5-4.5-17.7 0-26.5 4.5-26.5 4.5" fill="#94989b"/><path d="m46.9 11.4c.1-.3-.1-.5-.3-.6-.3-.1-.5.1-.6.4l-.3 1.2.9.2.3-1.2" fill="#8a6859"/><path d="m46.6 11.1c.1.1.1.2.1.4 0 .1 0 .3-.1.4-.1.2-.1.5-.2.7 0 .2.2.2.3.1.1-.2.1-.5.2-.7 0-.2.1-.3.1-.5 0-.2-.1-.4-.2-.5-.1-.1-.3 0-.2.1" fill="#705041"/><path d="m17.1 11.4c-.1-.3.1-.5.3-.6.3-.1.5.1.6.4l.3 1.2-.9.2-.3-1.2" fill="#8a6859"/><path d="m17.4 11.1c-.1.1-.1.2-.1.4 0 .1 0 .3.1.4.1.2.1.5.2.7 0 .2-.2.2-.3.1-.1-.2-.1-.5-.2-.7 0-.2-.1-.3-.1-.5 0-.2.1-.4.2-.5.1-.1.3 0 .2.1" fill="#705041"/><path d="m24.7 42.4v1.6-1.6" fill="#428bc1"/><g fill="#3e4347"><path d="m56.9 22l-3.7-1.4 5.1-14.2 3.7 1.4z"/><path d="m52.8 23.6l-5.2-1.9 7.1-19.7 5.2 1.9z"/><path d="M7.1 22 10.8 20.6 5.7 6.4 2 7.8z"/><path d="M11.2 23.6 16.4 21.7 9.3 2 4.1 3.9z"/></g><path d="m46.5 25l-2.8-1.2-5.6 8h-2.9c-.4 1.5-1.7 2.6-3.2 2.6s-2.9-1.1-3.2-2.6h-2.9l-5.6-8-2.8 1.2 7.3 10.3v8.6c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-8.6l7.1-10.3" fill="#47b892"/><g fill="#d3976e"><path d="m20.2 59.3c-1.4 0-2.5 1.2-2.5 2.7h7v-2.7h-4.5"/><path d="m43.8 59.3c1.4 0 2.5 1.2 2.5 2.7h-7v-2.7h4.5"/></g><path d="m24.7 41.9v1.7-1.7" fill="#f2b200"/><path d="m41.7 48.3l-2.4-1.8v-2.9c0 0-2.5 1.5-7.3 1.5-4.8 0-7.3-1.5-7.3-1.5v2.9l-2.4 1.8c-1.5 1.2-2.1 2.2-2.1 3.5 0 1.6 0 7.5 0 7.5h4.5v-5.9l3.8-3c.5-.4 1.1-.7 1.8-.7 0 0 2.5 0 3.4 0 .9 0 1.9.8 1.9.8l3.7 2.9v5.9h4.5c0 0 0-5.8 0-7.5 0-1.3-.6-2.4-2.1-3.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cb.svg b/riot/emojione/svg/1f3cb.svg new file mode 100644 index 0000000..606b007 --- /dev/null +++ b/riot/emojione/svg/1f3cb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.6 19.9l1 1.8h16.9l.7-1.9c0-6.8-1.6-9.7-9.1-9.8-7.6-.1-9.5 3-9.5 9.9" fill="#ffb300"/><path d="m40.5 19.8c-.1.4-.1.8-.3 1-.2.4-.6.6-.6.6s.1-.8.1-1.8c-.4-6.3-.8-3.3-7.7-3.3-6.9 0-7.3-3-7.7 3.3 0 1.1.1 1.8.1 1.8s-.4-.2-.6-.6c-.1-.2-.2-.6-.3-1-.7-.2-1.5 0-1.5 1.9 0 1.2.4 2.1 1.9 2.2.5 3.9 5.8 6.5 8.1 6.5 2.4 0 7.6-2.6 8.1-6.5 1.5-.1 1.9-1.1 1.9-2.2 0-1.9-.8-2.1-1.5-1.9" fill="#ffdd67"/><g fill="#937237"><circle cx="28.4" cy="21.8" r="1.5"/><circle cx="35.5" cy="21.8" r="1.5"/><path d="m34.3 26.3c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.5-.2-.3"/></g><g fill="#ffdd67"><path d="m30.4 29.9v.9c0 .5-.4.9-.8 1.1h-4.8v11c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-11h-4.9c-.5-.1-.8-.6-.8-1.1v-.9h-3.3"/><path d="m49.2 9.4c-1.7-.5-2.3.6-2.7 1.5-.3.1-.6.3-.7.7l-.2.7c-.1.5.1 1 .6 1.2h.1l-2.7 10.9 2.9.6 2.7-10.9c.6-.1.8-.7 1.3-2.4.5-1.8-1-2.2-1.3-2.3"/><path d="m17.7 13.4c.5-.1.8-.7.6-1.2l-.2-.7c-.1-.4-.4-.6-.7-.7-.3-.9-1-2-2.7-1.5-.3.1-1.8.5-1.3 2.3.5 1.7.7 2.3 1.3 2.4l2.8 11 2.9-.6-2.7-11"/></g><path d="m5.5 15.4v-1.8c0 0 8.8-4.5 26.5-4.5 17.7 0 26.5 4.5 26.5 4.5v1.8c0 0-8.8-4.5-26.5-4.5-17.7 0-26.5 4.5-26.5 4.5" fill="#94989b"/><path d="m46.9 11.4c.1-.3-.1-.5-.3-.6-.3-.1-.5.1-.6.4l-.3 1.2.9.2.3-1.2" fill="#ffdd67"/><path d="m46.6 11.1c.1.1.1.2.1.4 0 .1 0 .3-.1.4-.1.2-.1.5-.2.7 0 .2.2.2.3.1.1-.2.1-.5.2-.7 0-.2.1-.3.1-.5 0-.2-.1-.4-.2-.5-.1-.1-.3 0-.2.1" fill="#eba352"/><path d="m17.1 11.4c-.1-.3.1-.5.3-.6.3-.1.5.1.6.4l.3 1.2-.9.2-.3-1.2" fill="#ffdd67"/><path d="m17.4 11.1c-.1.1-.1.2-.1.4 0 .1 0 .3.1.4.1.2.1.5.2.7 0 .2-.2.2-.3.1-.1-.2-.1-.5-.2-.7 0-.2-.1-.3-.1-.5 0-.2.1-.4.2-.5.1-.1.3 0 .2.1" fill="#eba352"/><path d="m24.7 42.4v1.6-1.6" fill="#428bc1"/><g fill="#3e4347"><path d="m56.9 22l-3.7-1.4 5.1-14.2 3.7 1.4z"/><path d="m52.8 23.6l-5.2-1.9 7.1-19.7 5.2 1.9z"/><path d="M7.1 22 10.8 20.6 5.7 6.4 2 7.8z"/><path d="M11.2 23.6 16.4 21.7 9.3 2 4.1 3.9z"/></g><path d="m46.5 25l-2.8-1.2-5.6 8h-2.9c-.4 1.5-1.7 2.6-3.2 2.6s-2.9-1.1-3.2-2.6h-2.9l-5.6-8-2.8 1.2 7.3 10.3v8.6c0 0 2.5 1.4 7.3 1.4 4.8 0 7.3-1.4 7.3-1.4v-8.6l7.1-10.3" fill="#47b892"/><g fill="#d3976e"><path d="m20.2 59.3c-1.4 0-2.5 1.2-2.5 2.7h7v-2.7h-4.5"/><path d="m43.8 59.3c1.4 0 2.5 1.2 2.5 2.7h-7v-2.7h4.5"/></g><path d="m24.7 41.9v1.7-1.7" fill="#f2b200"/><path d="m41.7 48.3l-2.4-1.8v-2.9c0 0-2.5 1.5-7.3 1.5-4.8 0-7.3-1.5-7.3-1.5v2.9l-2.4 1.8c-1.5 1.2-2.1 2.2-2.1 3.5 0 1.6 0 7.5 0 7.5h4.5v-5.9l3.8-3c.5-.4 1.1-.7 1.8-.7 0 0 2.5 0 3.4 0 .9 0 1.9.8 1.9.8l3.7 2.9v5.9h4.5c0 0 0-5.8 0-7.5 0-1.3-.6-2.4-2.1-3.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cc.svg b/riot/emojione/svg/1f3cc.svg new file mode 100644 index 0000000..25cce19 --- /dev/null +++ b/riot/emojione/svg/1f3cc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="#3b946f"><path d="m35.3 31.9c-.2-1 .6-2 1.6-2.2l9.3-3.1.6 3.8-9.3 3.1c-1 .1-2-.6-2.2-1.6"/><path d="m46.3 30.4c-1-.3-1.6-1.3-1.4-2.3l2.9-9.2 3.8 1-2.9 9.1c-.2 1-1.3 1.6-2.4 1.4"/></g><path d="m49.7 19.8l-1.9-.3c-.7-.1-1.1-.7-1-1.4l.1-.9c.1-.5.4-.8.9-1 .3-1.2 1-2.7 3.2-2.3.4.1 2.4.4 2 2.8-.5 3.6-.5 3.6-3.3 3.1" fill="#eba352"/><path fill="#999" d="m12.7 2.1l-.6 1.6 31.6 10.7.5-1.6z"/><path d="m56.2 16.3c.6.2.9.9.7 1.5l-.2.5c-.2.6-.9.9-1.5.7l-13.9-4.7c-.6-.2-.9-.9-.7-1.5l.2-.5c.2-.6.9-.9 1.5-.7l13.9 4.7" fill="#3e4347"/><path d="m10.6 2.6c-1.3 1.2-4.1 5-3.6 6 .5 1 8.1 3.1 7.7-2.9-.1-2.1-1-3.3-1.9-3.6-.4-.1-1.2-.4-2.2.5" fill="#d0d0d0" id="0"/><use xlink:href="#0"/><g fill="#d3976e"><path d="m44.1 62h7.1c0-1.4-1.1-2.6-2.6-2.6h-5.5c-.1 1-.1 1.6-.1 1.6 0 .5.5 1 1.1 1"/><path d="m33.9 59.4h-5.5c-.3 1-.4 1.6-.4 1.6 0 .6.5 1.1 1.1 1.1h7.1c0-1.5-1-2.6-2.3-2.7"/></g><path d="m34 43.7l-5.5 15.6h5.5c0 0 2.7-6.3 4.6-10.1.2-.4.5-.7 1-.7.5 0 .8.5 1 1 1.9 5.8 2.6 9.8 2.6 9.8h5.5l-3.5-15.6c0 0-11.2 0-11.2 0" fill="#3e4347"/><path fill="#ffdd67" d="m35.4 24l-3.1-.7 2.7 9.1 5.9-1.8z"/><path d="m40.6 27c-1.4 1.6.3 3.7.3 3.7-2.4.7-5.5-3.5-6.4-6.4l6.1 2.7" fill="#eba352"/><path d="m29.9 12.6l11.6.4c2.1 2 1.6 3.6 1.9 4.6.2.5 1.4 1 2 1.3 1.4.7-.2 2-.9 2.1-.1 1.2 1.4 1.4-1.9 1.7 0 0 3.6.4 1.5 1.7.6 1.2 1.6 3.5-5.7 3-2.2-.1-3.9-3.3-3.9-3.3l-3.5.6-1.1-12.1" fill="#ffdd67"/><path d="m37.1 9.5c-7.6-.2-10.3 4.6-10.4 6.3-.5 4.8 2.5 9 6.8 11.6 0 0 1.3-1.1 1-3.1 0 0-1.5 1.3-3.3-2.1-1.6-2.9 1.2-5.5 4.1-1.8l.4-.1c.3-2.4-2.2-4.5 0-6.1 1.9-1.4 6.3-.7 6.3-.7.3-1.5-1.8-4-4.9-4" fill="#ffb300"/><path d="m40.9 18.5c.2.7.7 1.1 1.2.9.5-.1.4-.7.2-1.4-.2-.7-.5-1.2-1-1-.4.2-.6.9-.4 1.5" fill="#937237"/><path d="m34.5 21.4c-.4-1.3-1.8-2.1-2.9-1.7 0 0 2.3 1 2.5 3.2 0-.1.7-.6.4-1.5" fill="#eba352"/><path d="m41.5 22.9c0 0 1.6.6 2.1.6 1.1.2 1.1-.2.5-.4-.5-.2-1.4-.3-1.4-.3l-1.2.1" fill="#937237"/><g fill="#47b892"><path d="m43 30.7h-8.3c-1.2 0-1.3 1.7-1.2 3.3l.6 9.9h11.2l-2.3-13.2"/><path d="m38.5 32.8c-.2-1 .6-2 1.6-2.2l9.3-3.1 1.3 3.7-10 3.2c-1.1.2-2.1-.6-2.2-1.6"/><path d="m49.5 31.3c-1-.3-1.6-1.3-1.4-2.3l2.9-9.2 3.8 1-2.9 9.2c-.3.9-1.4 1.6-2.4 1.3"/></g><path d="m52.9 20.7l-1.9-.3c-.7-.1-1.1-.7-1-1.4l.1-.9c.1-.5.4-.8.9-1 .3-1.2 1-2.7 3.2-2.3.4.1 2.4.4 2 2.8-.5 3.6-.5 3.6-3.3 3.1" fill="#ffdd67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cd.svg b/riot/emojione/svg/1f3cd.svg new file mode 100644 index 0000000..ea58df5 --- /dev/null +++ b/riot/emojione/svg/1f3cd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.4 31.4l-.5-6.3-3.4.3.5 5.5-9.4 4.4 3.8 3c0 0 2.7-1.1 2.5-2l5.7-3.1c.7-.3 1-1.1.8-1.8" fill="#231f20"/><path d="m57 35.2l-16.2 10.2.9 1.2 16.9-8.1c0-1.2-.5-2.5-1.6-3.3" fill="#e6e6e6"/><g fill="#3e4347"><path d="m40.1 44.7l4.8-2.3c0 0 2.2 1.9-.2 4.1l-4.6-1.8"/><path d="m11.4 43.2c-5.2 0-9.4 4.2-9.4 9.4 0 5.2 4.2 9.4 9.4 9.4 5.2 0 9.4-4.2 9.4-9.4 0-5.2-4.2-9.4-9.4-9.4m0 16c-3.6 0-6.6-2.9-6.6-6.6 0-3.6 2.9-6.6 6.6-6.6 3.6 0 6.6 2.9 6.6 6.6-.1 3.7-3 6.6-6.6 6.6"/><path d="m18.4 52.2l-4.3-.3 3.6-2.4-.5-.8-3.8 1.9 1.8-3.9-.7-.4-2.4 3.5-.3-4.2h-.9l-.3 4.2-2.3-3.5-.8.5 1.8 3.8-3.8-1.8-.4.7 3.5 2.4-4.3.3v.9l4.3.3-3.5 2.3.4.8 3.8-1.8-1.8 3.8.8.4 2.3-3.5.4 4.3h.8l.3-4.3 2.4 3.5.8-.4-1.9-3.8 3.8 1.8.5-.8-3.5-2.3 4.2-.3z"/></g><path d="m11.4 47.9c-2.6 0-4.7 2.1-4.7 4.7 0 2.6 2.1 4.7 4.7 4.7 2.6 0 4.7-2.1 4.7-4.7 0-2.6-2.1-4.7-4.7-4.7m0 7.5c-1.6 0-2.8-1.3-2.8-2.8s1.3-2.8 2.8-2.8c1.6 0 2.8 1.3 2.8 2.8s-1.3 2.8-2.8 2.8" fill="#e6e6e6"/><path fill="#94989b" d="m35.8 42.1v6.3l16.4 6.9 1.8-5z"/><path d="m52.6 43.2c-5.2 0-9.4 4.2-9.4 9.4 0 5.2 4.2 9.4 9.4 9.4 5.2 0 9.4-4.2 9.4-9.4 0-5.2-4.2-9.4-9.4-9.4m0 16c-3.6 0-6.6-2.9-6.6-6.6 0-3.6 2.9-6.6 6.6-6.6 3.6 0 6.6 2.9 6.6 6.6 0 3.7-3 6.6-6.6 6.6" fill="#3e4347"/><path d="m13.9 35.7v2.8l14.6 2.1c-5.1-4.9-14.6-4.9-14.6-4.9" fill="#94989b"/><path fill="#3e4347" d="m28.4 40.3l22.4-7.3.9 5.3-19.6 9.6z"/><path d="m27.7 40.8l.2-2.7c0-.5.5-.9 1-1.1 1.5-.5 5.9-2.2 5.9-2.2l2.8 3.5-9.9 2.5" fill="#ed4c5c"/><path fill="#3e4347" d="m11.4 53.3l8.3-11.9-2.5-1.9-6.4 13.1z"/><path d="m19.4 46.2c-1.9-2.4-4.8-3.9-8-3.9-2.5 0-4.8.9-6.5 2.3l14.5 1.6" fill="#c94747"/><path fill="#3e4347" d="m59.7 52.2l-4.3-.3 3.5-2.4-.4-.8-3.9 1.9 1.9-3.9-.8-.4-2.3 3.5-.3-4.2h-.9l-.3 4.2-2.4-3.5-.8.5 1.9 3.8-3.9-1.8-.4.7 3.6 2.4-4.3.3v.9l4.2.3-3.5 2.3.5.8 3.8-1.8-1.9 3.8.8.4 2.4-3.5.3 4.3h.9l.3-4.3 2.4 3.5.7-.4-1.8-3.8 3.8 1.8.4-.8-3.5-2.3 4.3-.3z"/><path d="m52.6 47.9c-2.6 0-4.7 2.1-4.7 4.7 0 2.6 2.1 4.7 4.7 4.7 2.6 0 4.7-2.1 4.7-4.7 0-2.6-2.1-4.7-4.7-4.7m0 7.5c-1.6 0-2.8-1.3-2.8-2.8s1.3-2.8 2.8-2.8 2.8 1.3 2.8 2.8-1.2 2.8-2.8 2.8" fill="#e6e6e6"/><g fill="#ed4c5c"><path d="m44.9 38.4c-1.7.8-1.6 2.4-1.6 2.4s5.2-.3 11.8-3.9c3.2-1.8 3.2-5.6 3.2-5.6-11.4-.2-8.1 4.4-13.4 7.1"/><path d="m41.8 47.7c-5.1 0-5.5-4.5-10.3-6.3-6-2.3-14.8-3.3-16.4-3.3-1.7 0-.4-1.9 0-2.4 3.4-4 7.8-3.3 7.8-3.3l-1.4-1.3c-4.2 0-7.9 2.1-10.1 5.3-.9 1.3-2.3 3.1-1.5 3.6 2 1.4 8.1 5.4 8.1 5.4 0 0 2.4 1.6 2.8 2.4.9 1.6 1 8 1 8 0 .7.5 1.4 1.4 1.3l18.4-2.5c-.5-1.3-.8-3.6.2-6.9"/></g><path d="m11.4 39h2.5l-.8 2c0 0-3.6-2-1.7-2" fill="#fff"/><path d="m30.1 48c-1.9-.5-3.8.6-4.3 2.5l8.2 2.1c.9.2 1.9-.3 2.1-1.2l.4-1.7-6.4-1.7" fill="#666c70"/><path d="m48 28.4l-13.8 5.8-3.5 13.9 5.8 1.5 3.4-11.2c0 0 5.6-2.4 7.1-3.6 1.3-1.1 2.9-3.6 1-6.4" fill="#231f20"/><path d="m48 28.4c0 0-8.2-8.7-16.2-8.5l-6.1 4.8.5 5.5-4.8 2.6 1.6 2.9 5.8-3.1c.7-.4.9-1 .9-1.9-.1-.7-.2-2.8-.2-2.8l6.6 5.8 11.9-5.3" fill="#3e4347"/><path d="m22.5 34.2l-.6-1.5c-.2-.5-.9-.8-1.4-.5l-.7.3c-.5.1-.8.5-.8.9-1 .5-2.1 1.4-1.3 3.2.1.3.8 1.9 2.8 1.1 2.9-1.3 2.9-1.3 2-3.5" fill="#666c70"/><path d="m37.3 13.5c0 6.3-1.8 6.1-11.5 11.5-3.2 1.8-7.7 1.8-9.8-5.6-.7-2.4-1.6-3.2-1.6-5.8 0-6.5 5.1-11.6 11.5-11.6 6.3 0 11.4 5.1 11.4 11.5" fill="#ed4c5c"/><path d="m28.5 13.2c.7 1.9-7.5 6.6-12.5 8.4-1.2.5-3.7-6.3-2.5-6.7 5-1.9 14.3-3.6 15-1.7" fill="#3e4347"/><circle cx="28.2" cy="12.9" r="2" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ce.svg b/riot/emojione/svg/1f3ce.svg new file mode 100644 index 0000000..f6bb1d8 --- /dev/null +++ b/riot/emojione/svg/1f3ce.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.5 34.1l4.7-2.8c1.6-1.2 4.4 0 6.2 2.7 1.7 2.7 1.8 5.8.2 7-.1.1-.2.2-.4.2l-4.4 2.6-6.3-9.7" fill="#3e4347"/><path d="m49.1 41c1.7 2.7 4.1 4 5.8 2.8 1.6-1.2 1.6-4.3-.2-7-1.7-2.7-4.5-3.9-6.2-2.7-1.5 1.1-.7 5 .6 6.9" fill="#62696d"/><path d="m50.4 40.1c.9 1.4 2.1 2.1 3 1.4.9-.6.8-2.3-.1-3.7-.9-1.4-2.4-2.1-3.3-1.4-.8.6-.5 2.3.4 3.7" fill="#3e4347"/><path d="m51.2 38c.9-.5 2.1.8 1.5 1.7l-3.9 2.4-1.2-2.1 3.6-2" fill="#b2c1c0"/><path fill="#9c2c1b" d="m47.7 33.4v5.4l-4.1-3.8z"/><path d="m28.5 16.6l5.4-3.2c1.9-1.4 5.1 0 7.1 3.1 2 3.1 2.1 6.7.2 8.1-.1.1-.3.2-.4.2l-5 3-7.3-11.2" fill="#3e4347"/><path d="m29.1 24.5c2 3.1 4.8 4.6 6.7 3.2 1.9-1.4 1.8-5-.2-8.1-2-3.1-5.2-4.5-7.1-3.1-1.8 1.3-.8 5.8.6 8" fill="#62696d"/><path fill="#9c2c1b" d="m51.1 48.9l-11.4-6.3-2.9 1.7-11.6-2.6-14.3-10.8v-5.1l14.3 10 11.6 4.2 2.9-2.1 11.4 9.2z"/><path fill="#d33b23" d="m55.3 44.4l-4.2 2.7-11.4-9.2-2.9 2.1-11.6-4.2-14.3-10 3.6-2.1 2.4.6 8.3-4.6-.1-1.1 3.3-2 14.9 9.9 4.4 6.9-3.1 1.5z"/><path fill="#f15744" d="m15.6 15.8v4.4l10.6 5.1 4.7-2.2-12.4-4.8v-2.5z"/><path fill="#9c2c1b" d="m30.9 26.9v-3.8l-4.7 2.2-10.6-5.1v-4.4h-.6v4.8l11.2 8.4z"/><path fill="#f15744" d="m43.3 26.5l4.4 6.9-10.9 6.6-11.6-4.2z"/><g fill="#ffe62e"><path d="m43.3 26.5l4.4 6.9-1.2.7-4.5-7z"/><path d="m28.5 16.6l14.8 9.9-1.3.6-14.7-9.8z"/><path d="m27.5 34.6l10.9 4.4-1.6 1-11.6-4.2z"/><path d="m12.7 24.7l14.8 9.9-2.3 1.2-14.3-10z"/></g><path d="m26.2 29c-.3 2.1 2.9 4.8 6 5.2 5.4.8 7.9-2.3 6.3-5.5-1.5-2.9-7.5-2.3-7.5-2.3l-4.8 2.6" fill="#9c2c1b"/><path d="m5 29.9l6.2-3.7c2.2-1.6 5.8 0 8 3.5 2.3 3.5 2.4 7.6.2 9.1-.1.1-.3.2-.5.3l-5.7 3.4-8.2-12.6" fill="#3e4347"/><path d="m5.7 38.9c2.3 3.5 5.4 5.2 7.6 3.6 2.2-1.6 2-5.6-.2-9.1-2.3-3.5-5.9-5.1-8-3.5-2.1 1.5-1 6.5.6 9" fill="#62696d"/><path d="m7.5 37.7c1.2 1.9 2.7 2.7 3.9 1.9 1.1-.8 1.1-3-.1-4.9-1.3-1.8-3.2-2.7-4.4-1.8-1.1.8-.6 2.9.6 4.8" fill="#3e4347"/><path d="m43.5 42.5c.9-.5 2.1.8 1.5 1.7l-3.9 2.4-1.2-2.1 3.6-2" fill="#b2c1c0"/><path d="m31.5 43.3l5.4-3.2c1.9-1.4 5.1 0 7.1 3.1 2 3.1 2.1 6.7.2 8.1-.1.1-.3.2-.4.2l-5 3-7.3-11.2" fill="#3e4347"/><path d="m32.1 51.3c2 3.1 4.8 4.6 6.7 3.2 1.9-1.4 1.8-5-.2-8.1-2-3.1-5.2-4.5-7.1-3.1-1.8 1.3-.8 5.8.6 8" fill="#62696d"/><path d="m33.7 50.2c1.1 1.6 2.4 2.4 3.4 1.7 1-.7 1-2.7-.1-4.3-1.1-1.6-2.8-2.4-3.8-1.6-1 .7-.6 2.6.5 4.2" fill="#3e4347"/><path fill="#d33b23" d="m22.7 9l4 3.6-18.6 9.8-6.1-5.6z"/><path d="m27.6 28.7c0 3 3.6 4.5 6.4 4.5 2.9 0 3.9-1.5 3.9-4.5 0-3-2.3-5.4-5.2-5.4-2.8 0-5.1 2.4-5.1 5.4" fill="#42ade2"/><path d="m30.7 28.6c.1-1.1 3.9-1.1 6.8-1.3.9-.1.8 3.3 0 3.4-4.6.4-6.9-1-6.8-2.1" fill="#3e4347"/><path fill="#f15744" d="m60 40.9l2 4.4-13.1 8.8-5.9-2.7 11.8-7.3z"/><g fill="#ffe62e"><path d="m4.8 15.7l6.4 5.1 1.8-.9-5.8-5.1z"/><path d="m19.2 10.3l4.3 4 1.3-.7-4-3.9z"/><path d="m57.2 42.7l2.2 4.3 1.1-.7-2-4.4z"/><path d="m45.6 49.8l4.9 3.2 1.1-.8-4.6-3.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3cf.svg b/riot/emojione/svg/1f3cf.svg new file mode 100644 index 0000000..1723dfe --- /dev/null +++ b/riot/emojione/svg/1f3cf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="52.3" cy="52.4" r="9.6" fill="#ed4c5c"/><g fill="#e8e8e8"><path transform="matrix(.7071-.7071.7071.7071-21.7674 52.3219)" d="m51.6 42.9h1.4v19.1h-1.4z"/><path transform="matrix(.7069-.7073.7073.7069-19.8336 53.1442)" d="m53.5 49.1h1.4v2.7h-1.4z"/><path transform="matrix(.7069-.7073.7073.7069-21.0336 56.044)" d="m56.4 52h1.4v2.7h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-18.6344 50.224)" d="m50.6 46.2h1.4v2.7h-1.4z"/><path transform="matrix(.7073-.7069.7069.7073-23.6996 51.4987)" d="m49.7 53h1.4v2.7h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-24.8989 54.4193)" d="m52.6 55.9h1.4v2.7h-1.4z"/><path d="m55.7 58.7l-1 1 1.5 1.5c.4-.2.9-.4 1.3-.7l-1.8-1.8"/><path d="m43.5 48.5l1.5 1.5 1-1-1.8-1.8c-.2.5-.5.9-.7 1.3"/><path transform="matrix(.7071-.7071.7071.7071-22.4991 48.6224)" d="m46.8 50.1h1.4v2.7h-1.4z"/><path d="m48.9 46.2l1-1-1.5-1.5c-.4.2-.9.4-1.3.7l1.8 1.8"/><path d="m61 56.3l-1.5-1.5-1 1 1.8 1.8c.3-.4.5-.8.7-1.3"/></g><path d="m38.4 15.3l-36.1 36.1c-1 .9.6 4 3.4 6.9 2.8 2.8 5.9 4.4 6.9 3.4l36.1-36.1-10.3-10.3" fill="#dbb471"/><path d="m47.9 19.6l14.1-14.2c-.2-.8-.6-1.6-1.2-2.2-.6-.6-1.4-1-2.2-1.2l-14.2 14.1c-1.4 1.4-3.7 1.4-5.2 0l8.6 8.6c-1.4-1.4-1.4-3.7.1-5.1" fill="#e8e8e8"/><path d="m13 51.8c-.7.7-1.4 2.3-1.4 3.3.1 1.5 1.3 6.3 1.3 6.3l35.8-35.8-4.8-4.8c0 0-23.2 23.2-30.9 31" opacity=".5" fill="#fff"/><g fill="#3e4347"><path d="m12.2 51c-.7.7-2.3 1.4-3.3 1.4-1.4-.1-6.3-1.4-6.3-1.4l35.8-35.8 4.8 4.8c0 .1-23.2 23.3-31 31" opacity=".15"/><path d="m47.9 24.7c-.8-.8-1.1-1.9-1-3-.9-.4-1.9-.9-2.9-1.7-.7-1.1-1.3-2-1.7-2.9-1.1.1-2.2-.2-3-1 0 0 .8 2.4 3 5.6 3.2 2.2 5.6 3 5.6 3"/><path d="m60.3 7.2l1.7-1.8c-.2-.8-.6-1.6-1.2-2.2-.6-.6-1.4-1-2.2-1.2l-1.7 1.7c.7.2 1.5.6 2.1 1.3.7.6 1.1 1.4 1.3 2.2"/></g><g fill="#b2c1c0"><path d="m49.4 18l-4.2-2.7-.8.8c-.3.3-.7.6-1.2.8l4.4 2.9c.1-.1.1-.1.2-.2l1.6-1.6"/><path d="m60 7.5l-4.2-2.7-1.8 1.7 4.2 2.7z"/><path d="m56.5 11l-4.2-2.7-1.8 1.7 4.2 2.7z"/><path d="m52.9 14.5l-4.1-2.7-1.8 1.8 4.2 2.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d0.svg b/riot/emojione/svg/1f3d0.svg new file mode 100644 index 0000000..bf0a613 --- /dev/null +++ b/riot/emojione/svg/1f3d0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#e8e8e8"/><path d="m28.4 18c-.1-3.1.3-5.9.9-8.4 14.5.3 25.2 7.1 30.5 11.3-.5-1.2-1.1-2.4-1.7-3.6-6-4.2-15.8-9.2-28.3-9.6.7-2.5 1.6-4.4 2.2-5.7 0 0 0 0-.1 0-.7 0-1.4 0-2.1.1-2.4 5.2-6.8 18 1 30-2 4-4.8 6.9-7.7 9-10-18.3-5.5-32.4-4-36.2-.9.4-1.7.9-2.5 1.4-1.9 5.9-4.3 19.1 5 35.9-2.6 1.6-5.3 2.7-7.8 3.4-7-12.7-6.5-25.4-5.5-32.1-.8 1-1.6 2.1-2.3 3.3-.4 7.3.1 18.2 6 29.3-2.5.6-4.7.8-6 .9.4.6.7 1.2 1.1 1.8 5.7-.5 19-3.1 25.5-15.8 4.5-.2 8.4.7 11.7 2.2-10.8 17.8-25.3 21-29.3 21.5.8.5 1.6 1 2.4 1.5 6-1.3 18.7-5.8 28.6-22.3 2.7 1.4 5 3.2 6.8 5-7.5 12.4-18.7 18.3-25.1 20.8 1.3.2 2.6.3 4 .3 6.6-3.1 15.9-9.1 22.4-19.7 1.8 1.9 3 3.6 3.8 4.8.4-.6.7-1.2 1-1.9-3.3-4.7-12.2-14.9-26.4-14.2-2.4-3.7-3.6-7.6-4-11.2 20.9.4 30.8 11.3 33.4 14.6.1-.8.1-1.6.1-2.4 0-.2 0-.3 0-.5-4.1-4.6-14.4-13.2-33.6-13.5" fill="#b2c1c0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d1.svg b/riot/emojione/svg/1f3d1.svg new file mode 100644 index 0000000..22278e5 --- /dev/null +++ b/riot/emojione/svg/1f3d1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m49.5 37.1c-6.9 0-12.5 5.6-12.5 12.5 0 6.9 5.6 12.5 12.5 12.5s12.5-5.7 12.5-12.6c0-6.8-5.6-12.4-12.5-12.4" fill="#ff8736" id="0"/><path d="m53.5 2l-34.9 39.8c-1.5 1.8-4.3 2-6.2.4s-2.2-4.3-.6-6.2c1.5-1.8 1.2-4.6-.6-6.2-1.9-1.6-4.6-1.4-6.2.4-4.6 5.5-3.7 13.8 1.9 18.5 5.5 4.7 13.6 4.2 18.3-1l36.8-45.7h-8.5" fill="#3e4347"/><path d="m38.3 31.4c0 0 .5-6.2 1.2-8.1 2.3-6.5 16.1-21.3 16.1-21.3h-2.9l-21.6 25.3c-.2 11.9-7.5 21.9-7.5 21.9 2.3-1.1 14.7-17.8 14.7-17.8" fill="#c7e755"/><use xlink:href="#0"/><path d="m31.1 27.3c0 0-1.9 2.3-3.4 4.1 2.5 6.6-4 17.8-4 17.8s10.6-14 7.4-21.9" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d2.svg b/riot/emojione/svg/1f3d2.svg new file mode 100644 index 0000000..84c1cd5 --- /dev/null +++ b/riot/emojione/svg/1f3d2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m23.3 36.9c-5.5-.4-12.1-1.7-18.5-3.2-1.9-.4-4.1 9.4-2 10.1 12.8 4 26.3 3 31.3 2.2 1.8-.3 3.1-2.4 3.2-2.4l8-13.4-4.6-2.9c-7.2 8.5-13.8 9.9-17.4 9.6" fill="#3e4347"/><path d="M56.5,2c0,0-14.1,23.3-15.9,25.3l4.6,2.9L62,2H56.5z" fill="#ed4c5c"/><g fill="#3e4347"><ellipse cx="48.7" cy="57" rx="13.3" ry="5"/><ellipse cx="48.7" cy="51.1" rx="13.3" ry="5"/><path d="m35.5 51.1h26.5v5.9h-26.5z"/></g><ellipse cx="48.7" cy="51.1" rx="13.3" ry="5" opacity=".5" fill="#b2c1c0"/><path d="m9.1 34.6l-1.6 10.9c8.5 1.9 16.7 1.7 22.2 1.2l1.8-12c-3.3 1.8-6.2 2.2-8.1 2.1-4.3-.3-9.3-1.1-14.3-2.2" fill="#e8e8e8"/><g fill="#b2c1c0"><path d="m9.2 45.8c.5.1 1 .2 1.5.3l2.8-10.6c-.5-.1-1-.2-1.5-.3l-2.8 10.6"/><path d="m24.2 47c.5 0 1.1 0 1.6 0l3.6-11.3c-.6.2-1.2.4-1.8.6l-3.4 10.7"/><path d="m16.1 46.7c.5 0 1 .1 1.5.1l.8-10.6c-.5-.1-1-.1-1.5-.2l-.8 10.7"/><path d="m22.1 36.7l-2.2 10.3c.5 0 1 0 1.5 0l2.3-10.2c-.1 0-.2 0-.3 0-.4-.1-.8-.1-1.3-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d3.svg b/riot/emojione/svg/1f3d3.svg new file mode 100644 index 0000000..f7ecc84 --- /dev/null +++ b/riot/emojione/svg/1f3d3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55.3 8.7c-6.2-6.2-20.5-11.9-34.1 1.6-9 8.9-12.2 20.2 0 32.4 12.2 12.1 23.5 8.9 32.5 0 13.6-13.6 7.8-27.8 1.6-34" fill="#ed4c5c"/><path d="m30.8 49.3l-16.2-16.2c0 0 3.4 7.9-2.4 13.8 0 0-4.9 4.9-10.1 9.4.6 1.2.4 1.3 2.5 3.5 1.8 1.8 1.9 1.6 2.9 2.2 4.5-5.3 9.5-10.3 9.5-10.3 5.9-5.8 13.8-2.4 13.8-2.4" fill="#fed0ac"/><g fill="#d3976e"><path d="m7.6 61.8c3.3-3.8 6.9-7.5 8.5-9.1l8.7-9.4-4.2-4.2-9.4 8.7c-1.7 1.6-5.4 5.2-9.2 8.5.6 1.2.4 1.3 2.5 3.5 1.8 1.8 1.9 1.6 2.9 2.2.1-.1.1-.1.2-.2" opacity=".5"/><path d="m5.9 61.1c.6.5.9.6 1.5.9.1-.1.1-.1.2-.1 3.3-3.8 6.9-7.5 8.5-9.1l8.7-9.4-2.4 1.4-16.5 16.3"/></g><g fill="#3e4347"><path d="m30.8 49.3l-6-6-8.1 8.7c1.6-1.6 6.5-5.3 14.1-2.7"/><path d="m14.6 33.1l6 6-8.7 8.1c1.6-1.7 5.3-6.5 2.7-14.1"/></g><g fill="#ff8736"><circle cx="54.1" cy="54.1" r="7.9"/><path d="m59.6 51.1c-.4.8-2 .8-3.5 0-1.5-.8-2.5-2.1-2.1-2.8.4-.8 2-.8 3.5 0 1.6.8 2.5 2 2.1 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d4.svg b/riot/emojione/svg/1f3d4.svg new file mode 100644 index 0000000..fad85a3 --- /dev/null +++ b/riot/emojione/svg/1f3d4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b4d7ee" d="m0 0h64v64h-64z"/><g fill="#62727a"><path opacity=".33" d="m64 33.6l-13 2.6-9-4.7-29.8 4.9-12.2-3v30.1h64z"/><path opacity=".33" d="m0 43.6l10 3.6 12-5.7 36.8 5.9 5.2-4v20.1h-64z"/><path d="m55.8 49.7l-10.8-8.5-11-18.2-6.2 9.1-8.8 6-4.5 9.4-4.5 2.2-10 14.3h64z"/></g><g fill="#fff"><path d="m34 23l-1.7 7.5 4.5 6.1-5.5-.3 8 5.7-6 3.8-5.6 12.6 1.5-9-11.2-2.3 12.5-4-2.7-11z"/><path d="m51 46l-5.5 6.1-8 6.3 11.5-4.7 6.8-4z"/><path d="m14.5 47.5l-4.5 2.2 8 6.4z"/><path d="m43.9 19.6c-.2-.3-.3-.6-.3-1 0-.9.7-1.6 1.6-1.6.8 0 1.5.6 1.6 1.4.5-.2 1-.3 1.5-.3 1.5 0 2.8.9 3.5 2.1.3-.4.9-.7 1.5-.7.3 0 .6.1.9.2.6-1 1.6-1.7 2.9-1.7 1.3 0 2.5.8 3 1.9.1 0 .2 0 .3 0 1 0 1.8.8 1.8 1.7s-.8 1.7-1.8 1.7c-.3 0-.5-.1-.7-.2-.8.9-1.7 1.4-2.7 1.4 0 0 0 0-.1 0-.2.7-.8 1.2-1.6 1.2-.2 0-.4 0-.6-.1-.5.9-1.4 1.4-2.5 1.4-1.1 0-2.1-.6-2.6-1.6-.4.2-.9.2-1.3.2-1.3 0-2.4-.6-3.1-1.6-.2.1-.5.1-.8.1-1.3 0-2.4-1.1-2.4-2.4 0-1 .8-1.9 1.9-2.1"/></g><path d="m59.8 22.1c-.2 0-.5 0-.7-.1-.6.6-1.4 1-2.4 1 0 0 0 0-.1 0-.2.6-.8 1-1.5 1-.2 0-.4 0-.6-.1-.5.7-1.4 1.2-2.4 1.2-1.1 0-2-.5-2.4-1.3-.4.1-.8.2-1.3.2-1.2 0-2.3-.5-3-1.3-.2.1-.5.1-.7.1-.5 0-.9-.1-1.2-.3.3.7 1.1 1.2 1.9 1.2.2 0 .5 0 .7-.1.6.8 1.6 1.3 2.7 1.3.4 0 .8-.1 1.2-.2.4.8 1.2 1.3 2.2 1.3.9 0 1.7-.5 2.2-1.2.2.1.4.1.5.1.7 0 1.2-.4 1.4-1 0 0 0 0 .1 0 .9 0 1.7-.4 2.2-1 .2.1.4.1.6.1.7 0 1.2-.4 1.4-1-.3.1-.6.1-.8.1" fill="#b4d7ee"/><path d="m28.3 8.6c.3-.4.5-.8.5-1.3 0-1.2-1-2.2-2.3-2.2-1.1 0-2.1.8-2.3 1.9-.6-.3-1.3-.4-2.1-.4-2.1 0-4 1.2-4.8 3-.5-.6-1.2-1-2-1-.5 0-.9.1-1.3.3-.8-1.4-2.3-2.3-4-2.3-1.9 0-3.5 1.1-4.2 2.7-.1 0-.3 0-.4 0-1.3-.1-2.4.9-2.4 2.3s1.1 2.4 2.5 2.4c.4 0 .7-.1 1-.2.8 1 2.1 1.7 3.6 1.7 0 0 .1 0 .1 0 .3 1 1.1 1.7 2.2 1.7.3 0 .6-.1.9-.2.7 1.2 2 2 3.5 2 1.6 0 2.9-.9 3.6-2.2.6.2 1.2.3 1.9.3 1.8 0 3.4-.9 4.4-2.2.3.1.7.2 1.1.2 1.9 0 3.4-1.5 3.4-3.3-.2-1.6-1.3-2.9-2.9-3.2" fill="#fff"/><path d="m27.1 12.2c-.4 0-.7-.1-1-.2-.9 1.1-2.4 1.8-4.2 1.8-.6 0-1.2-.1-1.8-.3-.6 1.1-1.9 1.8-3.4 1.8-1.4 0-2.7-.7-3.3-1.7-.3.1-.5.1-.8.1-1 0-1.9-.6-2.1-1.4 0 0-.1 0-.1 0-1.4.2-2.6-.4-3.4-1.3-.3.1-.6.2-1 .2-.4 0-.7-.1-1-.2.1 1 1 1.9 2.1 1.9.3 0 .6-.1.9-.2.7.9 1.8 1.4 3.1 1.4 0 0 0 0 .1 0 .2.8 1 1.4 1.9 1.4.3 0 .5-.1.8-.1.6 1 1.7 1.7 3 1.7 1.4 0 2.5-.7 3.1-1.8.5.2 1 .3 1.6.3 1.5 0 2.9-.7 3.8-1.8.3.1.6.2.9.2 1.4 0 2.6-.9 2.9-2.2-.7.2-1.4.4-2.1.4" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d5.svg b/riot/emojione/svg/1f3d5.svg new file mode 100644 index 0000000..166f1a7 --- /dev/null +++ b/riot/emojione/svg/1f3d5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6eef0" d="m0 0h64v64h-64z"/><g fill="#b2c1c0"><path d="m0 15l4-4 6.5-4 11.5 9 16 21h-38z"/><path opacity=".5" d="m38 37l-16-21-11.5-9-1.5 7 4 4-1 6 4 4-2 9z"/></g><path fill="#fff" d="m10.5 7l-6.5 4-2 2h3l-1.5 4.1 4.5-2.1 1 5 4-2 3.9 2v-3.5l5.1-.5z"/><path opacity=".5" fill="#b2c1c0" d="m38 37l-16-21-11.5-9-.5 5 3 6-1 6 4 4-2 9z"/><g fill="#83bf4f"><path d="m0 32c.1 0 0 0 0 0"/><path d="m50.2 34.5c-3.2-1.4-6.6-2.5-10.2-2.5-3.6 0-6.8 1.7-9.6 2.4-16.4 4.3-30.4-2.4-30.4-2.4v32h64v-27.7c-4.4.5-9.2-.1-13.8-1.8"/></g><g fill="#699635"><circle cx="5" cy="45" r="4"/><circle cx="6" cy="40" r="3"/><circle cx="12.2" cy="43" r="6"/></g><path fill="#89664c" d="m55.8 33.8h2.7v8.2h-2.7z"/><path d="m59.4 22.9c-1.2-2.3-3.2-2.3-4.4 0l-4.2 7.8c-1.2 2.3 0 4.1 2.7 4.1 0 0 2.7-1 3.7-1s3.7 1 3.7 1c2.7 0 3.9-1.8 2.7-4.1l-4.2-7.8" fill="#699635"/><path d="m58.9 18.4c-1-1.8-2.5-1.8-3.5 0l-3.3 6.3c-1 1.8 0 3.3 2.2 3.3 0 0 2.2-1 2.9-1s2.9 1 2.9 1c2.1 0 3.1-1.5 2.2-3.3l-3.4-6.3" fill="#75a843"/><path d="m58.5 14c-.7-1.4-1.9-1.4-2.6 0l-2.5 4.7c-.7 1.4 0 2.5 1.6 2.5 0 0 1.6-1 2.2-1s2.2 1 2.2 1c1.6 0 2.3-1.1 1.6-2.5l-2.5-4.7" fill="#83bf4f"/><g fill="#fff"><path d="m34 7c0 1.1-.9 2-2 2h-10c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/><path d="m38 9c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/><path d="m42 17c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/><path d="m52 12c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/></g><path fill="#ffdd7d" d="m30.8 36h18l7.4 13.4-2.5 6.2-15.4 2.6z"/><path fill="#dbb471" d="m24.4 55l-1.3-5.7 7.7-13.3 8.7 16.6-1.2 6.6z"/><path fill="#89664c" d="m30.8 36l-3.8 19.8 6.1 1.8z"/><g fill="#ffdd7d"><path d="m30.8 36c0 0 1.4 12.1 3.7 16.6l-1.4 5-2.3-21.6"/><path d="M27,55.8l-1.4-3.9c0,0,4.5-11.6,5.2-15.9L27,55.8z"/></g><circle cx="19" cy="45" r="4" fill="#699635"/><path fill="#dbb471" d="m38.5 51.6l17.7-2.2-1.5 7.2-16.4 2.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d6.svg b/riot/emojione/svg/1f3d6.svg new file mode 100644 index 0000000..7aa2ca8 --- /dev/null +++ b/riot/emojione/svg/1f3d6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6eef0" d="m0 0h64v64h-64z"/><circle cx="52" cy="12" r="7" fill="#ffe62e"/><g fill="#fff"><path d="m22 7c0 1.1-.9 2-2 2h-10c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/><path d="m26 9c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/><path d="m40 12c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/><path d="m19 19c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/></g><path fill="#6adbc6" d="m0 32h64v32h-64z"/><path d="M64,40c0,0-78.4-0.9-46.3,24H64V40z" fill="#ffdd7d"/><path d="m39.1 53.2c-.1.5-.6.9-1.2.8-.5-.1-.9-.6-.8-1.2l4.7-23.8c.1-.5.6-.9 1.2-.8.5.1.9.6.8 1.2l-4.7 23.8" fill="#94989b"/><path d="m41.6 35.2c3.7.7 3.2 3.6 6.2 4.2 2.9.6 3.6-2.3 7.3-1.6.8.1.8.1.8.1.5 1.4 1.3 1 1.8-.9 0 0 0 0 .2-.8 1.7-8.6-10.3-12.9-10.3-12.9-1.7-.9-4.8-1.5-6.8-1.3 0 0-12.8-.4-14.5 8.2-.2.8-.2.8-.2.8-.3 1.9.3 2.6 1.4 1.5 0 0 0 0 .8.1 3.7.7 3.2 3.6 6.2 4.2 2.7.6 3.4-2.3 7.1-1.6" fill="#f27a52"/><path d="m46.4 25.1l-.3-.1c-.4-.2-.8-.4-1.3-.5.5 2.9 1.3 7.6 1.8 12.2.3.4.6.6 1 .6.6.1.9-.1 1.7-.6 1.1-.7 2.7-1.6 5.3-1.2l.3.1c1.3-6.8-8.4-10.5-8.5-10.5" fill="#f9f3d9"/><path d="m41 24h-.3c-.1 0-10.1-.1-11.5 6.7l.3.1c2.5.5 3.5 1.9 4.2 3 .5.8.8 1 1.3 1.1.5.1.9-.1 1.6-.6.1 0 .1-.1.2-.1 2.1-3.9 4.4-7.8 5.9-10.2-.6 0-1.2-.1-1.7 0" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d7.svg b/riot/emojione/svg/1f3d7.svg new file mode 100644 index 0000000..a29f1db --- /dev/null +++ b/riot/emojione/svg/1f3d7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m12.1 37.3v-2.1h-1.9v3c0 .5.4 1 .9 1 1.6 0 2.8 1.3 2.8 3s-1.3 3-2.8 3-2.8-1.3-2.8-3c0-.5-.4-1-.9-1s-.9.4-.9 1c0 2.7 2.1 4.9 4.7 4.9s4.7-2.2 4.7-4.9c-.1-2.5-1.7-4.5-3.8-4.9"/><path d="m58 8h-46.1l-5.9 12h52v-3h-2.1l2.1-3.9v-5.1m-47.4 9l2.3-4.8 2.5 4.8h-4.8m4.5-6h4.2l-2.1 3.9-2.1-3.9m3.7 6l2.1-3.9 2.1 3.9h-4.2m3.7-6h4.2l-2.1 3.9-2.1-3.9m3.7 6l2.1-3.9 2.1 3.9h-4.2m3.7-6h4.2l-2.1 3.9-2.1-3.9m3.7 6l2.1-3.9 2.1 3.9h-4.2m20.7-2.1l-2.1-3.9h4.2l-2.1 3.9"/><path d="m10.1 19h2v10h-2z"/></g><path fill="#ffe62e" d="m12.8 28h-3.3l-3.4 4h10z"/><g fill="#ffce31"><path d="m6.1 32l3.4 4h3.3l3.3-4z"/><path d="m49.4 29v3l-8.8-3h-2.6v33h2.6v-6l8.8 3-8.8 3h11.4v-33h-2.6m0 27l-8.8-3 8.8-3v6m-8.8-6v-6l8.8 3-8.8 3m8.8-6l-8.8-3 8.8-3v6m-8.8-6v-6l8.8 3-8.8 3"/></g><path d="m54 27.2c0 1.5-1.2 2.8-2.6 2.8h-12.8c-1.4 0-2.6-1.3-2.6-2.8v-22.4c0-1.5 1.2-2.8 2.6-2.8h12.9c1.3 0 2.5 1.3 2.5 2.8v22.4" fill="#ffe62e"/><g fill="#ffce31"><path d="m38.9 15.2c0 1 .7 1.8 1.5 1.8h9c.8 0 1.5-.8 1.5-1.8v-8.4c0-1-.7-1.8-1.5-1.8h-9c-.8 0-1.5.8-1.5 1.8v8.4"/><path d="m50.9 25c0 1.1-.8 2-1.7 2h-8.6c-.9 0-1.7-.9-1.7-2v-4c0-1.1.8-2 1.7-2h8.6c.9 0 1.7.9 1.7 2v4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d8.svg b/riot/emojione/svg/1f3d8.svg new file mode 100644 index 0000000..ba838e8 --- /dev/null +++ b/riot/emojione/svg/1f3d8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m36.4 54.7c0-1.2-.9-2.1-2.1-2.1-.2 0-.5 0-.7.1-.3-.5-.8-.9-1.4-.9-.4 0-.7.1-1 .3 0-.1 0-.2 0-.3 0-.9-.7-1.6-1.6-1.6-.8 0-1.4.6-1.5 1.3-.2-.2-.4-.2-.7-.2-.6 0-1.1.5-1.1 1.1v6.3h8.4c.9 0 1.6-.7 1.6-1.6 0-.4-.2-.8-.4-1.1.3-.4.5-.9.5-1.3" fill="#83bf4f"/><g fill="#699635"><path d="m36.4 57c0-.4-.2-.8-.4-1.1.3-.4.4-.8.4-1.3 0-1.2-.9-2.1-2.1-2.1-.2 0-.5 0-.7.1-.2-.3-.4-.6-.8-.8-.6.2-.9.8-.9 1.4 0 .2 0 .3.1.4-.1-.1-.3-.1-.5-.1-.6 0-1.1.5-1.1 1.1 0 .4.2.7.6.9-.2.3-.4.7-.4 1.1 0 1 .8 1.8 1.8 1.8h2.4c.9.2 1.6-.5 1.6-1.4"/><path d="m30.2 57.3c0 .6-.5-.2-1.1-.2s-1.1.8-1.1.2c0-.6.5-1.1 1.1-1.1s1.1.5 1.1 1.1"/><path d="m27.9 55.5c0 .3-.2 0-.5 0-.3 0-.5.3-.5 0 0-.3.2-.5.5-.5.2-.1.5.2.5.5"/></g><g fill="#83bf4f"><path d="m28.8 53.9c0 .3-.2-.1-.5-.1-.3 0-.5.4-.5.1s.2-.5.5-.5.5.2.5.5"/><path d="m33.2 56.5c0 .4-.3-.2-.7-.2s-.7.6-.7.2.3-.7.7-.7.7.3.7.7"/><path d="m35.2 54.5c0 .6-.5-.3-1.1-.3-.6 0-1.1.9-1.1.3s.5-1.1 1.1-1.1c.6.1 1.1.6 1.1 1.1"/><path d="m35.2 57c0 .3-.2 0-.5 0-.3 0-.5.3-.5 0 0-.3.2-.5.5-.5.3 0 .5.2.5.5"/><path d="m30.5 52.8c0 .4-.3-.2-.7-.2-.4 0-.7.6-.7.2s.3-.7.7-.7c.4 0 .7.3.7.7"/><path d="m2 58.3h60v3.7h-60z"/></g><path fill="#d0d0d0" d="m53.3 12h2.4v4.6h-2.4z"/><path fill="#94989b" d="m55.8 12h1.6v4.6h-1.6z"/><path fill="#d0d0d0" d="m52.5 10.4h4.1v1.6h-4.1z"/><path fill="#94989b" d="m56.6 10.4h1.6v1.6h-1.6z"/><g fill="#f9f3d9"><path d="m34.8 39.8h26.2v18.5h-26.2z"/><path d="m37.6 18.9h20.6v17.2h-20.6z"/></g><path fill="#ed4c5c" d="m62 39.8h-28.2l3.8-3.7h20.6z"/><path fill="#89664c" d="m39.5 46.3h6.6v12h-6.6z"/><path fill="#dbb471" d="m38.5 44.4h8.4v1.9h-8.4z"/><ellipse cx="44.6" cy="52.3" rx=".6" ry=".6" fill="#f9f3d9"/><path fill="#ed4c5c" d="m47.9 9.5l-14.1 9.4h28.2z"/><path fill="#d6eef0" d="m50.5 45.3h7.7v7.7h-7.7z"/><path d="m49.5 44.4v9.6h9.6v-9.6h-9.6m8.7.9v3.4h-3.4v-3.4h3.4m-4.3 0v3.4h-3.4v-3.4h3.4m-3.4 7.7v-3.4h3.4v3.4h-3.4m4.3 0v-3.4h3.4v3.4h-3.4" fill="#89664c"/><path fill="#d6eef0" d="m44.1 23.5h7.7v7.7h-7.7z"/><path d="m43.1 22.6v9.6h9.6v-9.6h-9.6m8.7.9v3.4h-3.4v-3.4h3.4m-4.4 0v3.4h-3.4v-3.4h3.4m-3.3 7.7v-3.4h3.4v3.4h-3.4m4.3 0v-3.4h3.4v3.4h-3.4" fill="#89664c"/><path fill="#d0d0d0" d="m21.5 12h2.4v4.6h-2.4z"/><path fill="#94989b" d="m24 12h1.6v4.6h-1.6z"/><path fill="#d0d0d0" d="m20.7 10.4h4.1v1.6h-4.1z"/><path fill="#94989b" d="m24.8 10.4h1.6v1.6h-1.6z"/><g fill="#f9f3d9"><path d="m3 39.8h26.2v18.5h-26.2z"/><path d="m5.8 18.9h20.6v17.2h-20.6z"/></g><path fill="#89664c" d="m7.7 46.3h6.6v12h-6.6z"/><path fill="#dbb471" d="m6.7 44.4h8.4v1.9h-8.4z"/><ellipse cx="12.8" cy="52.3" rx=".6" ry=".6" fill="#f9f3d9"/><path fill="#ed4c5c" d="m16.1 9.5l-14.1 9.4h28.2z"/><path fill="#d6eef0" d="m12.2 23.5h7.7v7.7h-7.7z"/><path d="m11.3 22.6v9.6h9.6v-9.6h-9.6m8.6.9v3.4h-3.4v-3.4h3.4m-4.3 0v3.4h-3.4v-3.4h3.4m-3.4 7.7v-3.4h3.4v3.4h-3.4m4.4 0v-3.4h3.4v3.4h-3.4" fill="#89664c"/><path fill="#d6eef0" d="m18.7 45.3h7.7v7.7h-7.7z"/><path d="m17.7 44.4v9.6h9.6v-9.6h-9.6m8.7.9v3.4h-3.4v-3.4h3.4m-4.4 0v3.4h-3.4v-3.4h3.4m-3.3 7.7v-3.4h3.3v3.4h-3.3m4.3 0v-3.4h3.4v3.4h-3.4" fill="#89664c"/><path fill="#ed4c5c" d="m30.2 39.8h-28.2l3.8-3.7h20.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3d9.svg b/riot/emojione/svg/1f3d9.svg new file mode 100644 index 0000000..3deabda --- /dev/null +++ b/riot/emojione/svg/1f3d9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49 30c-3.2 0-9.8 0-13 0-1.8 0-3 .9-3 2.7v31.3h20v-30c0-2.2-1.8-4-4-4" fill="#fbbf67"/><g fill="#d3976e"><path d="m36.2 35h-.4c-.4 0-.8.4-.8 1v28h2v-28c0-.6-.4-1-.8-1"/><path d="m41.2 35h-.4c-.4 0-.8.4-.8 1v28h2v-28c0-.6-.4-1-.8-1"/></g><path d="M13,34H4c-2.2,0-4,1.8-4,4v26h13V34z" fill="#6adbc6"/><g fill="#fff"><path d="m9.5 42c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/><path d="m9.5 50c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/><path d="m9.5 58c0 .5-.4 1-1 1h-3c-.6 0-1-.5-1-1v-2c0-.6.4-1 1-1h3c.6 0 1 .4 1 1v2"/></g><g fill="#d6eef0"><path d="m15 11c-2 0-3.8 1-4.9 2.5-.6-.3-1.3-.5-2.1-.5-2.4 0-4.4 1.7-4.9 4h-.1c-1.7 0-3 1.3-3 3s1.3 3 3 3h12c3.3 0 6-2.7 6-6 0-3.3-2.7-6-6-6"/><path d="m36 10c.4 0 .7.1 1.1.2.4-2.4 2.4-4.2 4.9-4.2 2 0 3.7 1.2 4.5 2.9.7-.6 1.6-.9 2.5-.9 2.2 0 4 1.8 4 4s-1.8 4-4 4h-13c-1.7 0-3-1.3-3-3s1.3-3 3-3"/></g><path d="m31.6 17.9l-7.2-7.3c-.8-.8-2.1-.8-2.8 0l-7.2 7.3c-.8.8-1.4 2.3-1.4 3.5v42.6h20v-42.7c0-1.1-.6-2.7-1.4-3.4" fill="#d3976e"/><g fill="#ffdd7d"><path d="m30 34c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 42c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 50c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 58c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/><path d="m30 26c0 .5-.5 1-1 1h-12c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h12c.5 0 1 .4 1 1v2"/></g><path d="m60 19v-5c0-1.1-.9-2-2-2h-3v-11c0-.6-.4-1-1-1s-1 .4-1 1v11h-3c-1.1 0-2 .9-2 2v5c-2.2 0-4 1.8-4 4v41h20v-41c0-2.2-1.8-4-4-4" fill="#6adbc6"/><g fill="#fff"><path d="m52.5 25c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m60.5 25c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m52.5 32c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m60.5 32c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m52.5 39c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m60.5 39c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m52.5 46c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m60.5 46c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m52.5 53c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m60.5 53c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m52.5 60c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/><path d="m60.5 60c0 .5-.5 1-1 1h-3c-.5 0-1-.5-1-1v-2c0-.6.5-1 1-1h3c.5 0 1 .4 1 1v2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3da.svg b/riot/emojione/svg/1f3da.svg new file mode 100644 index 0000000..bf6c306 --- /dev/null +++ b/riot/emojione/svg/1f3da.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#94989b"><path d="m0 60h64v4h-64z"/><path d="m44 15v45h17l-4-23 4-22z"/></g><path fill="#d0d0d0" d="m50 16l-24-12-20 20 3 8-4 28h44l-4-13z"/><path d="m63 14.4l-25-14.4h-12l24 18h12c.7 0 1.4-.3 1.7-1 .6-.9.3-2-.7-2.6" fill="#c94747"/><path d="m51 14.4l-25-14.4-25 26.4c-1 .6-1.3 1.7-.7 2.6.5 1 1.7 1.3 2.6.7l23.1-25.7 23.1 13.7c.9.5 2.1.2 2.6-.7.6-.9.3-2-.7-2.6" fill="#ed4c5c"/><g fill="#3e4347"><path d="m49 44l3.4 16h4.6z"/><path d="m55 39l-4 13.1 2.1 2.9z"/><path d="m13.7 40h10.3l-2 11 2 9h-10.3l-1.7-13z"/><path d="m55.7 32h-4.7l1.3-8h4.7z"/><path d="m24 32h-8l-2-8h8z"/><path d="m30 32h8l2-8h-8z"/></g><path fill="#dbb471" d="m42 36l-4-4 2-8 4 4z"/><g fill="#3e4347"><path d="m40.2 3v2.1h-2.2l6.5 3.9h3.2l4.3 2-3.2-4h-3.8z"/><path d="m41 54h-9.8l-2.2-7 2.2-7h9.8l-1.2 5.8z"/></g><g fill="#dbb471"><path d="M11.2 56 10 53.3 24.8 50 26 52.7z"/><path d="M25.5 49 10 46.1 10.5 43 26 45.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3db.svg b/riot/emojione/svg/1f3db.svg new file mode 100644 index 0000000..501ea5c --- /dev/null +++ b/riot/emojione/svg/1f3db.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#acb8bf"><path d="m2 60.1h60v1.9h-60z"/><path d="m5.5 56.4h53v1.9h-53z"/></g><g fill="#dae3ea"><path d="m3.8 58.2h56.5v1.9h-56.5z"/><path d="m7.2 54.5h49.5v1.9h-49.5z"/></g><path fill="#94989b" d="m4.8 27.8h54.4v1.9h-54.4z"/><path fill="#dae3ea" d="m2 29.6h60v1.9h-60z"/><path fill="#94989b" d="M32 4.8 2 21.2 4.5 25 32 6.7 59.5 25 62 21.2z"/><g fill="#dae3ea"><path d="m32 2l-30 19.2v2.9l30-19.3 30 19.3v-2.9z"/><path d="m32 6.7l-30 19.2v1.9h60v-1.9z"/></g><path fill="#acb8bf" d="m32 9.5l-24.9 16.4h49.8z"/><g fill="#94989b"><path d="m32.8 22.6l-.4.2c0-.1-.1-.2-.2-.2h-.3c-.1 0-.2.1-.2.2l-.4-.2-1-.6v1.1 1.1l1-.6.4-.2c0 .1.1.2.2.2h.3c.1 0 .2-.1.2-.2l.4.2 1 .6v-1.1-1.1l-1 .6"/><path d="m30.5 19.5c.2.3.4.4.6.6.3.1.6.2.9.2.3 0 .6-.1.9-.2.3-.1.5-.3.6-.6 0 .3-.1.6-.4.8-.3.2-.7.4-1.1.4-.4 0-.8-.1-1.1-.4-.3-.2-.4-.5-.4-.8"/><path d="m36.3 16.6c0-.1 0-.2 0-.2-.1 0-.1-.1-.2-.1 0 0-.1 0-.2 0-.6-1.5-2.1-2.6-3.9-2.6-1.7 0-3.2 1.1-3.9 2.6-.1 0-.1 0-.2 0-.1 0-.1 0-.2.1 0 0 0 0 0 .1v.1c0 .2 0 .1.1.2 0 0 .1 0 .1.1-.1.4-.2.7-.2 1.1 0 2.3 1.9 4.2 4.2 4.2s4.2-1.9 4.2-4.2c0-.4-.1-.8-.2-1.1 0 0 .1-.1.1-.1.3-.1.3-.1.3-.2m-4.3-2.4c1.4 0 2.7.8 3.3 2-.5 0-1.1 0-1.4 0-.5 0-1 .2-1.3.3-.3.2-.8.2-1.2 0-.4-.2-.8-.3-1.3-.3-.3 0-.9 0-1.4 0 .6-1.2 1.9-2 3.3-2m0 7.5c-2.1 0-3.7-1.7-3.7-3.7 0 0 0-.1 0-.1.1.5.4.8.9 1 .5.2 1 .2 1.5 0 .3-.1.5-.3.7-.5.3-.5.2-.8.4-1.2.1-.3.5-.3.7 0 .2.4.1.7.4 1.2.2.3.4.4.7.5.5.2 1 .2 1.5 0 .4-.2.7-.5.9-1 0 0 0 .1 0 .1-.3 2-1.9 3.7-4 3.7"/></g><path fill="#dae3ea" d="m8.5 33.2h6v19.6h-6z"/><g fill="#94989b"><path d="m7.8 52.8h7.5v1.8h-7.5z"/><path d="m7.8 31.5h7.5v1.7h-7.5z"/></g><g fill="#c8d0d6"><path d="m9.1 34h.7v18h-.7z"/><path d="m13.2 34h.7v18h-.7z"/><path d="m11.8 34h.7v18h-.7z"/><path d="m10.5 34h.7v18h-.7z"/></g><path fill="#dae3ea" d="m22.2 33.2h6v19.6h-6z"/><g fill="#94989b"><path d="m21.4 52.8h7.5v1.7h-7.5z"/><path d="m21.4 31.5h7.5v1.7h-7.5z"/></g><g fill="#c8d0d6"><path d="m22.8 34h.7v18h-.7z"/><path d="m26.9 34h.7v18h-.7z"/><path d="m25.5 34h.7v18h-.7z"/><path d="m24.1 34h.7v18h-.7z"/></g><path fill="#dae3ea" d="m35.8 33.2h6v19.6h-6z"/><g fill="#94989b"><path d="m35.1 52.8h7.5v1.7h-7.5z"/><path d="m35.1 31.5h7.5v1.7h-7.5z"/></g><g fill="#c8d0d6"><path d="m36.4 34h.7v18h-.7z"/><path d="m40.5 34h.7v18h-.7z"/><path d="m39.2 34h.7v18h-.7z"/><path d="m37.8 34h.7v18h-.7z"/></g><path fill="#dae3ea" d="m49.5 33.2h6v19.6h-6z"/><g fill="#94989b"><path d="m48.8 52.8h7.5v1.8h-7.5z"/><path d="m48.8 31.5h7.5v1.7h-7.5z"/></g><g fill="#c8d0d6"><path d="m50.1 34h.7v18h-.7z"/><path d="m54.2 34h.7v18h-.7z"/><path d="m52.8 34h.7v18h-.7z"/><path d="m51.5 34h.7v18h-.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3dc.svg b/riot/emojione/svg/1f3dc.svg new file mode 100644 index 0000000..f95f15e --- /dev/null +++ b/riot/emojione/svg/1f3dc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b4d7ee" d="m0 0h64v64h-64z"/><path d="m64 27c0 0-11.9-3-16-3s-10.8 3-16 3c-4.3 0-11.7-4-16-4-4.8 0-16 1-16 1v25h64v-22" fill="#f9f3d9"/><path d="M0,34.7c0,0,16-5.7,32-5.7c8,0,32,7.5,32,7.5V64H0V34.7z" fill="#ffdd7d"/><path d="m0 47.8c0 0 6.9-2.8 11-2.8s16.9 6.9 21 6.6c4.3-.3 19.7-3.7 24-3.8 4.2-.1 8 .9 8 .9v15.3h-64v-16.2" fill="#dbb471"/><g fill="#699635"><path d="m21.2 35.5c0 1.1.9 1.9 1.9 1.9 1.1 0 1.9-.9 1.9-1.9v-7.7c0-1.1-.9-1.9-1.9-1.9-1.1 0-1.9.9-1.9 1.9v7.7"/><path d="m15.5 33.6c-1.1 0-1.9.9-1.9 1.9 0 1.1.9 1.9 1.9 1.9h7.7c1.1 0 1.9-.9 1.9-1.9 0-1.1-.9-1.9-1.9-1.9h-7.7"/></g><path d="m15.8 17c-1.6 0-2.9 1.3-2.9 2.9v32.2c0 2.9 1.3 2.9 2.9 2.9s2.9 0 2.9-2.9v-32.2c0-1.6-1.3-2.9-2.9-2.9" fill="#83bf4f"/><g fill="#699635"><path d="m10.1 42c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4v-5.8c0-.8.6-1.4 1.4-1.4.8 0 1.4.6 1.4 1.4v5.8"/><path d="m14.4 40.6c.8 0 1.4.6 1.4 1.4 0 .8-.6 1.4-1.4 1.4h-5.7c-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4h5.7"/></g><path d="m3 52.5c0 1.1 1.3 1 3 1s3 .1 3-1-1.3-2-3-2-3 .9-3 2" fill="#f9f3d9"/><path d="m16.3 60.1c0 1.1 1.3 1 3 1s3 .1 3-1-1.3-2-3-2-3 .9-3 2" fill="#ffdd7d"/><g fill="#89664c"><path d="m26 56.5c0 1.1 1.3 1 3 1s3 .1 3-1-1.3-2-3-2-3 .9-3 2"/><path d="m57.3 52.3c-2.7.8-5.4.3-8.2.5-.2-.6-.4-1.2-.7-1.8-.3-.7-1.4-.4-1.1.3.2.5.4 1.1.6 1.6-.4.1-.9.1-1.3.3-1.4.4-2.9.8-4.3 1.3 1.3-1.3 2.7-2.5 4.3-3.5.9-.5 2-.8 3.2-.9 0 0 .1 0 .1 0 .6-.1 1.3-.1 1.9-.1.5.7 1 1.4 1.5 2.1.4.6 1.5 0 1-.6-.3-.5-.7-.9-1-1.4 1 0 1.9.1 2.7.1.8 0 .8-1.2 0-1.2-1.5 0-3.3-.2-5-.1.3-.5.7-1 1-1.4.4-.6-.6-1.3-1-.6-.5.7-1 1.4-1.5 2.2-1.1.1-2.2.4-3.1.8-1.8.9-3.4 2.3-4.9 3.8 1-2 2.2-3.9 3.9-5 3.3-2 6.7-3.1 10.4-2.4.7.1 1.1-1.1.3-1.2-3.7-.7-6.5.3-9.8 1.8.2-.4.5-.9.7-1.3.4-.7-.6-1.3-1-.6-.5 1-1.1 2-1.6 3-1.7 1.2-2.8 3.1-3.8 5 .3-2.1.7-4.2 1.9-5.6 1.6-2 3.4-3.2 5.4-3.9.7.5 1.5 1 2.2 1.5.6.4 1.2-.6.6-1.1-.4-.3-.9-.6-1.3-.9 1.1-.3 2.3-.4 3.6-.4.8 0 .8-1.2 0-1.2-1.6 0-3.4 0-4.9.5-2.3.7-4.2 2.5-5.9 4.2-2.4 2.4-2.7 6.4-3 9.8-.3.1-.5.2-.8.3-.7.2-.4 1.4.3 1.2.4-.1.8-.3 1.2-.4 2.7 2.2 4.6 2.7 8.1 2.4 3.6-.3 5.7-.9 8.4-3.4.6-.5-.3-1.4-.8-.9-1 1-2 1.6-3 2.1-.4-.6-.8-1.2-1.1-1.9-.4-.7-1.4 0-1 .6.3.5.7 1.1 1 1.7-1 .3-2.1.4-3.4.6-.6 0-1.2.1-1.9.1.4-.7.7-1.3 1.1-2 .4-.7-.6-1.3-1-.6-.5.9-.9 1.7-1.4 2.6-.6-.1-1.1-.2-1.6-.5-.7-.4-1.3-.8-1.9-1.3 1.9-.6 3.7-1.2 5.6-1.7 3.5-1 7.1.2 10.7-.8.6-.7.3-1.9-.4-1.7"/></g><path d="m46 11c0 3.3 2.7 6 6 6s6-2.7 6-6c0-3.3-2.7-6-6-6s-6 2.7-6 6" fill="#ffce31"/><g fill="#fff"><path d="m47.8 2.9c-2.5 1.4-4.2 3.6-4.5 6.6-.1.4.6.6.6.2.4-2.9 1.9-4.9 4.2-6.2.4-.2.1-.8-.3-.6"/><path d="m59.9 13.2c-.9 3.2-2.6 5.5-5.6 6.5-.4.1-.2.8.2.7 3.2-1 5.2-3.6 6.1-7 0-.4-.6-.6-.7-.2"/><path d="m44.2 13c.5 2.9 1.7 4.9 4.1 6.4.4.2.7-.4.3-.6-2.2-1.5-3.3-3.3-3.8-6-.1-.4-.7-.2-.6.2"/><path d="m58.6 6.1c-1-1.7-3-3.8-5.1-3.6-.4 0-.4.7 0 .7 1.8-.2 3.6 1.8 4.5 3.3.3.4.8 0 .6-.4"/></g><g fill="#d6eef0"><path d="m50.8 21.3c-2.4 0-4.5-.8-6.3-2.5-.3-.3-.8.2-.5.5 2 1.8 4.1 2.7 6.7 2.7.5 0 .5-.7.1-.7"/><path d="m60.4 16.7c-.6 1.5-1.7 3.5-3.2 4.2-.4.2-.2.8.2.7 1.7-.7 2.9-2.8 3.6-4.5.1-.4-.4-.8-.6-.4"/><path d="m43.2 4c-2.3 2.3-1.9 7-.7 9.8.2.4.7.1.6-.3-1.1-2.5-1.5-6.9.6-8.9.2-.4-.2-.9-.5-.6"/><path d="m58.2 2.6c1.8 1.8 2.6 3.9 2.7 6.5 0 .4.6.4.6 0 0-2.8-.9-5.1-2.9-7-.3-.3-.7.2-.4.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3dd.svg b/riot/emojione/svg/1f3dd.svg new file mode 100644 index 0000000..c9bf170 --- /dev/null +++ b/riot/emojione/svg/1f3dd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6eef0" d="m0 0h64v64h-64z"/><circle cx="52" cy="12" r="7" fill="#ffe62e"/><g fill="#fff"><path d="m22 7c0 1.1-.9 2-2 2h-10c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/><path d="m26 9c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/><path d="m40 12c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/><path d="m19 19c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/></g><path fill="#42ade2" d="m0 32h64v32h-64z"/><path d="m55 51.2c-1.2 6.2-9.2 6.8-23 6.8-13.8 0-21.8-.5-23-6.8-1.3-6.7 9.2-11.2 23-11.2 13.8 0 24.3 4.5 23 11.2" fill="#428bc1"/><path d="m53 50.3c-1.4 5.1-9.4 4.7-21 4.7-11.6 0-19.6.4-21-4.7-1.6-5.9 9.4-12.3 21-12.3 11.6 0 22.6 6.4 21 12.3" fill="#ffdd7d"/><path d="m42 47.1c0 2-3.2.3-5 1-1.8.7-2.2 2.1-5 2.1-2.7 0-3.2-1.3-5-2.1-1.8-.7-5 .9-5-1 0-2.3 4.5-6.9 10-6.9 5.5 0 10 4.6 10 6.9" fill="#83bf4f"/><path d="m38 45c0 1.1-2.1 1-6 1-3.9 0-6 .1-6-1s2.1-3 6-3c3.9 0 6 1.9 6 3" fill="#75a843"/><path d="m30.5 44.2c0 0-2-10.3 6.2-19.4l1.8.9c0 0-5 3.2-5 18.5 0 0-1.5 1.3-3 0" fill="#dbb471"/><path d="m41.1 23.5c-1 0-1.9.2-2.7.7.3-.8.4-1.8.2-2.8-.5-2.8-3-4.6-5.6-4.2-.3.1-.6.1-.9.3 2.1.1 4.1 2.2 4.6 4.9.3 1.6.1 3.3-.6 4.5 1.1-.9 2.6-1.4 4.2-1.4 2.8 0 5.2 1.6 5.7 3.6.1-.3.1-.6.1-.9.1-2.6-2.1-4.7-5-4.7" fill="#699635"/><path d="m33.3 22.2c.2.1.5.2.7.3-.1-.1-.1-.1-.2-.2-2.6-2.2-6-2.6-8.1-1.1.2-.3.4-.7.6-1 2-2.4 5.8-2.6 8.4-.4 1.9 1.6 2.7 4.1 2.1 6.3 2-.9 4.6-.6 6.5 1 2.6 2.2 3.1 5.9 1 8.4-.3.3-.5.6-.8.8 1.1-2.3.2-5.6-2.4-7.8-.1-.1-.1-.1-.2-.2.2.2.3.4.4.6 1.3 2.4.7 5.3-1.5 6.6-.3.2-.6.3-.8.4 1.5-1.4 1.8-4.2.3-6.5-1.4-2.1-3.7-1.6-3.7-1.6s0-2.6-2.5-3.7c-2.7-1.2-5.2-.1-6.4 1.6 0-.3.1-.6.2-.9 1.1-2.3 3.9-3.5 6.4-2.6" fill="#83bf4f"/><g fill="#89664c"><path d="m30 40c0 0-.2 2 2 2 1.6 0 2-2 2-2h-4"/><path d="m30.6 36c0 0-.5 1.7 1.7 2 1.6.2 2.3-1.4 2.3-1.4l-4-.6"/><path d="m31.6 32c0 0-.5 1.7 1.7 2 1.6.2 2.3-1.4 2.3-1.4l-4-.6"/><path d="m33.2 28c0 0-.9 1.3 1.2 1.9 1.5.4 2.6-.9 2.6-.9l-3.8-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3de.svg b/riot/emojione/svg/1f3de.svg new file mode 100644 index 0000000..c3c729a --- /dev/null +++ b/riot/emojione/svg/1f3de.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6eef0" d="m0 0h64v64h-64z"/><path d="M28,38c-0.5-1.3-1.3-2.5-2.1-3.3L7,17.1c-1.6-1.5-4.2-1.5-5.8,0L0,18.2V38H28z" fill="#d0d0d0"/><g fill="#83bf4f"><path d="m0 32c.1 0 0 0 0 0"/><path d="m50.2 34.5c-3.2-1.4-6.8-2.2-10.4-2.2-3.6 0-6.8.8-9.4 2.1-5.6 2.5-13 2.4-19.8-.1-3.2-1.4-7-2.3-10.6-2.3v32h64v-27.7c-4.4.5-9.2-.1-13.8-1.8"/></g><g fill="#f9f3d9"><path d="m0 52h16v12h-16z"/><path d="m48 52h16v12h-16z"/></g><g fill="#d0d0d0"><path d="m0 48h18v4h-18z"/><path d="m46 48h18v4h-18z"/><path d="m2 55h4v2h-4z"/><path d="m10 57h4v2h-4z"/><path d="m54 60h4v2h-4z"/><path d="m58 54h4v2h-4z"/></g><path d="m29.7 45.8c-10-3.5-8.4-8.3-7.7-9.6h-2.2c-1.8 1.5-6 5.3 4.5 11.6 11.8 7.1.4 16.2.4 16.2h17c0 0 4.8-12.4-12-18.2" fill="#f9f3d9"/><g fill="#3e4347"><path d="m14 28h2v20h-2z"/><path d="m48 28h2v20h-2z"/></g><g fill="#699635"><circle cx="4" cy="41" r="2"/><circle cx="4" cy="39" r="1"/><circle cx="10" cy="41" r="2"/><circle cx="7" cy="40" r="3"/></g><path fill="#89664c" d="m56 38h2v6h-2z"/><path d="m58.6 29.2c-.9-1.7-2.3-1.7-3.2 0l-3.1 5.8c-.9 1.7 0 3 2 3h5.4c2 0 2.9-1.4 2-3l-3.1-5.8" fill="#699635"/><path d="m58.3 26c-.7-1.3-1.9-1.3-2.6 0l-2.4 4.6c-.7 1.3 0 2.4 1.6 2.4h4.3c1.6 0 2.3-1.1 1.6-2.4l-2.5-4.6" fill="#75a843"/><path d="m58 22.7c-.5-1-1.4-1-1.9 0l-1.8 3.5c-.5 1 0 1.8 1.2 1.8h3.2c1.2 0 1.7-.8 1.2-1.8l-1.9-3.5" fill="#83bf4f"/><circle cx="52" cy="12" r="7" fill="#ffe62e"/><g fill="#fff"><path d="m22 7c0 1.1-.9 2-2 2h-10c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/><path d="m26 9c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/><path d="m40 12c0 1.1-.9 2-2 2h-4c-1.1 0-2-.9-2-2 0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2"/></g><path d="m49 22h-34c-2.2 0-4 1.8-4 4s1.8 4 4 4h34c2.2 0 4-1.8 4-4s-1.8-4-4-4" fill="#89664c"/><g fill="#f9f3d9"><circle cx="15" cy="26" r="1"/><circle cx="49" cy="26" r="1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3df.svg b/riot/emojione/svg/1f3df.svg new file mode 100644 index 0000000..579a720 --- /dev/null +++ b/riot/emojione/svg/1f3df.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="#62727a"><path d="m32.5 11.5c0 .3-.2.5-.5.5-.3 0-.5-.2-.5-.5v-11c0-.3.2-.5.5-.5.3 0 .5.2.5.5v11"/><path d="m23.5 11.5c0 .3-.2.5-.5.5-.3 0-.5-.2-.5-.5v-11c0-.3.2-.5.5-.5.3 0 .5.2.5.5v11"/><path d="m41.5 11.5c0 .3-.2.5-.5.5-.3 0-.5-.2-.5-.5v-11c0-.3.2-.5.5-.5.3 0 .5.2.5.5v11"/></g><path fill="#42ade2" d="m23.5 1v4l4-2z"/><path fill="#f15744" d="m32.5 1v4l4-2z"/><path fill="#ffe62e" d="m41.5 1v4l4-2z"/><ellipse cx="32" cy="18.7" rx="32" ry="8" fill="#e8e8e8"/><ellipse cx="32" cy="21.2" rx="29.8" ry="8" fill="#b2c1c0"/><ellipse cx="32" cy="22.3" rx="29.1" ry="8" fill="#e8e8e8"/><ellipse cx="31.9" cy="25.5" rx="29.1" ry="8" fill="#62727a"/><path d="m54.2 22.8c-8.5-3.7-35.7-3.9-43.8 0-.3.1-.6.3-.8.5 12.1 2.3 32.6 2.1 44.9-.4-.1 0-.2 0-.3-.1" fill="#83bf4f" id="0"/><path fill="#62727a" d="m0 39.3h64v24.7h-64z"/><g fill="#b2c1c0"><path d="m11.2 12.7c-.3 0-.5.1-.8.2l5.9 5.9c.3 0 .6-.1.9-.1l-6-6"/><path d="m53.7 12.9c-.3 0-.5-.1-.8-.2l-6 6c.3 0 .6.1.9.1l5.9-5.9"/><path d="m32.5 17.5v-6.8c-.3 0-.7 0-1 0v6.8c.3 0 .7 0 1 0"/></g><use xlink:href="#0"/><path d="m18.5 24.5l1-2h12v2.5c.3 0 .7 0 1 0v-2.5h12l.9 1.8c.3 0 .6-.1 1-.1l-1.4-2.7h-26l-1.5 3c.3 0 .6 0 1 0" fill="#f9f3d9"/><path d="m64 18.2c0 .6-.2 1.1-.7 1.5-8.7 6.7-56.3 7.3-62.9 0-.3-.3-.4-.7-.4-1.1v20.8c0 8.2 64 10.2 64-1v-20.2" fill="#b2c1c0"/><path d="m37.6 32.9c-.4-1-1.5-1.9-2.6-1.9h-6c-1.1 0-2.2.9-2.5 1.9l-.9 3.2c-.3 1 .3 1.9 1.4 1.9h10c1.1 0 1.8-.9 1.5-1.9l-.9-3.2" fill="#e8e8e8"/><path d="m37 36h-10c-1.1 0-2 .9-2 2v10h14v-10c0-1.1-.9-2-2-2" fill="#b2c1c0"/><path fill="#62727a" d="m28 40h8v9.3h-8z"/><g fill="#fff"><path d="m0 34.7v1.5c5 4.3 21.3 5.4 25 5.7v-1.2c-12.9-.8-22.7-3.2-25-6"/><path d="m64 34c-2.2 3.7-11.3 6.2-25 6.8v1.2c6.6-.3 20.4-1.5 25-6.3v-1.7"/><path d="m0 29.7v1.5c5 4.3 21.3 5.4 25 5.7v-1.2c-12.9-.8-22.7-3.2-25-6"/><path d="m64 29c-2.2 3.7-11.3 6.2-25 6.8v1.2c6.6-.3 20.4-1.5 25-6.3v-1.7"/><path d="m0 24.7v1.5c5 4.3 21.3 5.4 25 5.7v-1.2c-12.9-.8-22.7-3.2-25-6"/><path d="m64 24c-2.2 3.7-11.3 6.2-25 6.8v1.2c6.6-.3 20.4-1.5 25-6.3v-1.7"/></g><g fill="#62727a"><path d="m3.5 30.6c0 .3-.2.5-.5.3l-1-.5c-.3-.1-.5-.5-.5-.8v-1.3c0-.3.2-.5.5-.3l1 .5c.3.1.5.5.5.8v1.3"/><path d="m20 32.2l-1.1-.1c-.3 0-.5.1-.5.4l.1 1.5c0 .2.3.4.5.4l1.1.1c.3 0 .5-.1.5-.4l-.1-1.5c0-.2-.2-.4-.5-.4"/><path d="m11 30.9l-1-.2c-.3-.1-.5.1-.5.3l.1 1.6c0 .2.2.4.5.5l1 .2c.3.1.5-.1.5-.3l-.1-1.6c0-.2-.2-.4-.5-.5"/><path d="m60 30.8c0 .3.2.5.5.3l1-.5c.3-.1.5-.5.5-.8v-1.3c0-.3-.2-.5-.5-.3l-1 .5c-.3.1-.5.5-.5.8v1.3"/><path d="m43.6 32.3l1.1-.1c.3 0 .5.1.5.4l-.1 1.5c0 .2-.3.4-.5.4l-1.1.1c-.3 0-.5-.1-.5-.4l.1-1.5c-.1-.2.2-.3.5-.4"/><path d="m52.6 31.1l1-.2c.3 0 .5.1.5.3l-.1 1.6c0 .2-.2.4-.5.5l-1 .2c-.3.1-.5-.1-.5-.3l.1-1.6c-.1-.3.2-.5.5-.5"/></g><g fill="#b2c1c0"><path d="m0 51.5v1h7l-3 7h1l3-7h7l-3 7h1l3-7h6.5l-2.5 7h1l3-8z"/><path d="m64 51.5v1h-7l3 7h-1l-3-7h-7l3 7h-1l-3-7h-6.5l2.5 7h-1l-3-8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e0.svg b/riot/emojione/svg/1f3e0.svg new file mode 100644 index 0000000..5edbcce --- /dev/null +++ b/riot/emojione/svg/1f3e0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m32.4 4.3h3.4v6.5h-3.4z"/><path fill="#94989b" d="m35.8 4.3h2.3v6.5h-2.3z"/><path fill="#d0d0d0" d="m31.2 2h5.7v2.3h-5.7z"/><path fill="#94989b" d="m36.9 2h2.3v2.3h-2.3z"/><path fill="#ed4c5c" d="m24.2 2l-21.5 12.3h43.1z"/><path fill="#f9f3d9" d="m8.8 14.3h30.9v19h-30.9z"/><path fill="#d6eef0" d="m20.4 20h7.7v7.7h-7.7z"/><path d="m19.4 19v9.6h9.6v-9.6h-9.6m8.7 1v3.4h-3.4v-3.4h3.4m-4.3 0v3.4h-3.4v-3.4h3.4m-3.4 7.7v-3.4h3.4v3.4h-3.4m4.3 0v-3.4h3.4v3.4h-3.4" fill="#89664c"/><path fill="#f9f3d9" d="m6.4 40.9h45.6v19.3h-45.6z"/><path fill="#d6eef0" d="m36.9 46.6h7.7v7.7h-7.7z"/><g fill="#89664c"><path d="m35.9 45.7v9.6h9.6v-9.6h-9.6m8.7.9v3.4h-3.4v-3.4h3.4m-4.4 0v3.4h-3.4v-3.4h3.4m-3.3 7.7v-3.3h3.4v3.4h-3.4zm4.3 0v-3.3h3.4v3.4h-3.4z"/><path d="m18.4 48.3h8.4v11.8h-8.4z"/></g><path fill="#dbb471" d="m17.6 46.6h10.1v1.7h-10.1z"/><circle cx="25.4" cy="53.4" r=".6" fill="#f9f3d9"/><path fill="#83bf4f" d="m2 60.1h60v1.9h-60z"/><path fill="#ed4c5c" d="m49.6 33.4h-40.9l-6.7 7.5h54.4z"/><path d="m62 56.2c0-1.2-.9-2.1-2.1-2.1-.2 0-.5 0-.7.1-.3-.5-.8-.9-1.4-.9-.4 0-.7.1-1 .3 0-.1 0-.2 0-.3 0-.9-.7-1.6-1.6-1.6-.8 0-1.4.6-1.6 1.3-.2-.2-.4-.2-.7-.2-.6 0-1.1.5-1.1 1.1v6.3h8.4c.9 0 1.6-.7 1.6-1.6 0-.4-.2-.8-.4-1.1.4-.4.6-.8.6-1.3" fill="#83bf4f"/><g fill="#699635"><path d="m62 58.5c0-.4-.2-.8-.4-1.1.3-.4.4-.8.4-1.3 0-1.2-.9-2.1-2.1-2.1-.2 0-.5 0-.7.1-.2-.3-.4-.6-.8-.8-.6.2-.9.8-.9 1.4 0 .2 0 .3.1.4-.1-.1-.3-.1-.5-.1-.6 0-1.1.5-1.1 1.1 0 .4.2.7.6.9-.2.3-.4.7-.4 1.1 0 1 .8 1.8 1.8 1.8h2.4c.9.2 1.6-.5 1.6-1.4"/><path d="m55.8 58.8c0 .6-.5-.2-1.1-.2-.6 0-1.1.8-1.1.2 0-.6.5-1.1 1.1-1.1.6 0 1.1.5 1.1 1.1"/><path d="m53.5 57c0 .3-.2 0-.5 0-.3 0-.5.3-.5 0 0-.3.2-.5.5-.5.2-.1.5.2.5.5"/></g><g fill="#83bf4f"><path d="m54.4 55.4c0 .3-.2-.1-.5-.1s-.5.4-.5.1.2-.5.5-.5.5.2.5.5"/><path d="m58.8 58c0 .4-.3-.2-.7-.2-.4 0-.7.6-.7.2 0-.4.3-.7.7-.7.3 0 .7.3.7.7"/><path d="m60.8 56.1c0 .6-.5-.3-1.1-.3-.6 0-1.1.9-1.1.3s.5-1.1 1.1-1.1c.6 0 1.1.5 1.1 1.1"/><path d="m60.8 58.6c0 .3-.2 0-.5 0s-.5.3-.5 0c0-.3.2-.5.5-.5s.5.2.5.5"/><path d="m56.1 54.3c0 .4-.3-.2-.7-.2-.4 0-.7.6-.7.2s.3-.7.7-.7c.4 0 .7.3.7.7"/><path d="m12 56.2c0-1.2-.9-2.1-2.1-2.1-.2 0-.5 0-.7.1-.3-.5-.8-.9-1.4-.9-.4 0-.7.1-1 .3 0-.1 0-.2 0-.3 0-.9-.7-1.6-1.6-1.6-.8 0-1.4.6-1.5 1.3-.2-.2-.4-.2-.7-.2-.6 0-1 .5-1 1.1v6.3h8.4c.9 0 1.6-.7 1.6-1.6 0-.4-.2-.8-.4-1.1.2-.4.4-.8.4-1.3"/></g><g fill="#699635"><path d="m12 58.5c0-.4-.2-.8-.4-1.1.3-.4.4-.8.4-1.3 0-1.2-.9-2.1-2.1-2.1-.2 0-.5 0-.7.1-.2-.3-.4-.6-.8-.8-.6.2-.9.8-.9 1.4 0 .2 0 .3.1.4-.1-.1-.3-.1-.5-.1-.6 0-1.1.5-1.1 1.1 0 .4.2.7.6.9-.2.3-.4.7-.4 1.1 0 1 .8 1.8 1.8 1.8h2.4c.9.2 1.6-.5 1.6-1.4"/><path d="m5.8 58.8c0 .6-.5-.2-1.1-.2s-1.1.8-1.1.2c0-.6.5-1.1 1.1-1.1.6 0 1.1.5 1.1 1.1"/><path d="m3.5 57c0 .3-.2 0-.5 0s-.5.3-.5 0c0-.3.2-.5.5-.5.2-.1.5.2.5.5"/></g><g fill="#83bf4f"><path d="m4.4 55.4c0 .3-.2-.1-.5-.1-.3 0-.5.4-.5.1s.2-.5.5-.5c.2 0 .5.2.5.5"/><path d="m8.8 58c0 .4-.3-.2-.7-.2-.4 0-.7.6-.7.2 0-.4.3-.7.7-.7.3 0 .7.3.7.7"/><path d="m10.8 56.1c0 .6-.5-.3-1.1-.3-.6 0-1.1.9-1.1.3s.6-1.1 1.1-1.1c.6 0 1.1.5 1.1 1.1"/><path d="m10.8 58.6c0 .3-.2 0-.5 0-.3 0-.5.3-.5 0 0-.3.2-.5.5-.5.3-.1.5.2.5.5"/><path d="m6.1 54.3c0 .4-.3-.2-.7-.2-.4 0-.7.6-.7.2s.3-.7.7-.7c.4 0 .7.3.7.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e1.svg b/riot/emojione/svg/1f3e1.svg new file mode 100644 index 0000000..8c1751e --- /dev/null +++ b/riot/emojione/svg/1f3e1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#c94747" d="m39 38l14.8 4.1h-11.3l-15.5-4.1z"/><path fill="#f9f3d9" d="m5 22h22v38h-22z"/><path fill="#dbb471" d="m27 22h12v16h-12z"/><path fill="#ed4c5c" d="M21 8 1.1 22 27 22z"/><path fill="#d0d0d0" d="m29 10h3v8h-3z"/><path fill="#94989b" d="m32 10h2v9h-2z"/><path fill="#c94747" d="m21 8l22 14h-16z"/><path fill="#d0d0d0" d="m28 8h5v2h-5z"/><path fill="#94989b" d="m33 8h2v2h-2z"/><path fill="#d6eef0" d="m12.8 27.8h6.4v6.4h-6.4z"/><path d="m12 27v8h8v-8h-8m7.2.8v2.8h-2.8v-2.8h2.8m-3.6 0v2.8h-2.8v-2.8h2.8m-2.8 6.4v-2.8h2.8v2.8h-2.8m3.6 0v-2.8h2.8v2.8h-2.8" fill="#89664c"/><path fill="#d6eef0" d="m30.6 27.4h4.8v7.2h-4.8z"/><g fill="#89664c"><path d="m30.2 27v8h5.6v-8h-5.6m.8.8h1.6v2.8h-1.6c0 0 0-2.8 0-2.8m0 6.4v-2.8h1.6v2.8h-1.6m4 0h-1.6v-2.8h1.6v2.8m0-3.6h-1.6v-2.8h1.6v2.8"/><path d="m13.7 49.1h6.2v10.9h-6.2z"/><path d="m19.2 47.5h1.6v1.6h-1.6z"/></g><path fill="#594640" d="m12.1 49.1h1.6v10.9h-1.6z"/><path fill="#dbb471" d="m11.4 47.5h7.8v1.6h-7.8z"/><circle cx="18.6" cy="53.8" r=".6" fill="#f9f3d9"/><path fill="#83bf4f" d="m.1 60h52v4h-52z"/><path fill="#dbb471" d="m39.9 42.1h9.3v17.9h-9.3z"/><path fill="#f9f3d9" d="m27 42.1h12.9v17.9h-12.9z"/><path fill="#ed4c5c" d="m27 38h-22l-5 4.1h42.5z"/><path fill="#d6eef0" d="m28.3 47.8h6.4v6.4h-6.4z"/><path d="m27.5 47v8h8v-8h-8m7.2.8v2.8h-2.8v-2.8h2.8m-3.6 0v2.8h-2.8v-2.8h2.8m-2.8 6.4v-2.8h2.8v2.8h-2.8m3.6 0v-2.8h2.8v2.8h-2.8" fill="#89664c"/><path fill="#d6eef0" d="m42.1 47.4h4.8v7.2h-4.8z"/><path d="m41.7 47v8h5.6v-8h-5.6m.8.8h1.6v2.8h-1.6v-2.8m0 6.4v-2.8h1.6v2.8h-1.6m4 0h-1.6v-2.8h1.6v2.8m0-3.6h-1.6v-2.8h1.6v2.8" fill="#89664c"/><path fill="#699635" d="m51.9 60h12v4h-12z"/><path fill="#d3976e" d="m52.2 34h4v26h-4z"/><path d="m56.2 34h-1.5c0 .2 0 .3 0 .5 0 2.3-.8 2.3-.8 4.6 0 2.3.8 2.3.8 4.5 0 2.3-.8 2.3-.8 4.6 0 2.3.8 2.3.8 4.5 0 2.3-.8 2.3-.8 4.5 0 1.4.2 2 .4 2.7h1.8c.1.1.1-25.9.1-25.9" fill="#89664c"/><path d="m53.2 2.9c-1.9 2.7-4.2-2.2-7.2 2s-1.4 7.9-.5 10.6c1.8 5.5-1.9 7.2.6 11.8 2.4 4.6-1.1 6.8 3.5 9.3s2.3-2.9 7 .3c4.7 3.2 5.3-2.2 4.8-4.2-1-3.7 1.7-4.6 2.5-7.7 1.3-5.5-3.1-8.5-1.7-13.7 1.2-5.1-3.3-16.7-9-8.4" fill="#83bf4f"/><path d="m62 11.4c1.1-3.9-1.2-11.4-4.8-11.4 0 0 2.4 3.2-1 7.2-3.4 4 2.9 6 0 9.7-2.9 3.7 2.7 7.3.5 10.2-2.7 3.6-7 3.1-4.5 10 0 0 0 .1 0 .1 1-.6 1.1-2.3 4.2-.2 4.7 3.2 5.3-2.2 4.8-4.2-1-3.7 1.7-4.6 2.5-7.7 1.4-5.5-3-8.5-1.7-13.7" fill="#699635"/><g fill="#83bf4f"><path d="m57.8 11.2c-.7 0 .4-.6.4-1.4s-1.1-1.4-.4-1.4c.7 0 1.4.6 1.4 1.4s-.6 1.4-1.4 1.4"/><path d="m59.6 23.3c-1.1 0 .6-.9.6-2s-1.7-2-.6-2c1.1 0 2 .9 2 2s-.9 2-2 2"/><path d="m57.8 33.5c-.8 0 0-.7 0-1.5s-.8-1.5 0-1.5c.8 0 1.5.7 1.5 1.5 0 .8-.7 1.5-1.5 1.5"/><path d="m49.3 12.1c.8 0-.2.7-.2 1.5s1.1 1.5.2 1.5-1.5-.7-1.5-1.5.7-1.5 1.5-1.5"/><path d="m52.6 6.4c1.1 0-.5.9-.5 2s1.7 2 .5 2c-1.1 0-2-.9-2-2s.8-2 2-2"/></g><g fill="#699635"><path d="m51.7 21.6c1.7 0-.7 1.3-.7 3s2.3 3 .7 3c-1.7 0-3-1.3-3-3s1.3-3 3-3"/><path d="m52.6 16.1c.8 0 0 .7 0 1.5s.8 1.5 0 1.5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5"/></g><path fill="#83bf4f" d="m58.1 57h.4v3h-.4z"/><path d="m57.2 53.9v2.3c0 .4.3.8.8.8h.8v-1.6c-.1-1.1-1.6-1.5-1.6-1.5" fill="#c94747"/><path d="m59.5 53.9v2.3c0 .4-.3.8-.8.8h-.8v-1.6c0-1.1 1.6-1.5 1.6-1.5" fill="#ed4c5c"/><path fill="#83bf4f" d="m62.5 54.7h.4v5.3h-.4z"/><path d="m61.6 51.5v2.3c0 .4.3.8.8.8h.8v-1.6c-.1-1-1.6-1.5-1.6-1.5" fill="#c94747"/><path d="m63.9 51.5v2.3c0 .4-.3.8-.8.8h-.8v-1.6c0-1 1.6-1.5 1.6-1.5" fill="#ed4c5c"/><path d="m58.7 50.2v2.3c0 .4.3.8.8.8h.8v-1.6c0-1-1.6-1.5-1.6-1.5" fill="#f2b200"/><path d="m61.1 50.2v2.3c0 .4-.3.8-.8.8h-.8v-1.6c0-1 1.6-1.5 1.6-1.5" fill="#ffce31"/><path fill="#83bf4f" d="m59.7 53.4h.4v6.6h-.4z"/><path d="m55.5 51.4v2.3c0 .4.4.8.8.8h.7v-1.5c0-1.2-1.5-1.6-1.5-1.6" fill="#f2b200"/><path d="m57.8 51.4v2.3c0 .4-.3.8-.8.8h-.8v-1.5c0-1.2 1.6-1.6 1.6-1.6" fill="#ffce31"/><g fill="#83bf4f"><path d="m56.4 54.5h.4v5.5h-.4z"/><path d="m49 57h.4v3h-.4z"/></g><path d="m48 53.9v2.3c0 .4.3.8.8.8h.8v-1.6c0-1.1-1.6-1.5-1.6-1.5" fill="#c94747"/><path d="m50.4 53.9v2.3c0 .4-.3.8-.8.8h-.8v-1.6c0-1.1 1.6-1.5 1.6-1.5" fill="#ed4c5c"/><path fill="#83bf4f" d="m53.4 54.7h.4v5.3h-.4z"/><path d="m52.4 51.5v2.3c0 .4.3.8.8.8h.8v-1.6c0-1-1.6-1.5-1.6-1.5" fill="#c94747"/><path d="m54.8 51.5v2.3c0 .4-.3.8-.8.8h-.8v-1.6c0-1 1.6-1.5 1.6-1.5" fill="#ed4c5c"/><path d="m49.6 50.2v2.3c0 .4.3.8.8.8h.8v-1.6c0-1-1.6-1.5-1.6-1.5" fill="#f2b200"/><path d="m51.9 50.2v2.3c0 .4-.3.8-.8.8h-.8v-1.6c.1-1 1.6-1.5 1.6-1.5" fill="#ffce31"/><path fill="#83bf4f" d="m50.6 53.4h.4v6.6h-.4z"/><path d="m46.3 51.4v2.3c0 .4.3.8.8.8h.8v-1.5c0-1.2-1.6-1.6-1.6-1.6" fill="#c94747"/><path d="m48.7 51.4v2.3c0 .4-.3.8-.8.8h-.8v-1.5c0-1.2 1.6-1.6 1.6-1.6" fill="#ed4c5c"/><path fill="#83bf4f" d="m47.3 54.5h.4v5.5h-.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e2.svg b/riot/emojione/svg/1f3e2.svg new file mode 100644 index 0000000..0f38711 --- /dev/null +++ b/riot/emojione/svg/1f3e2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3e4347" d="m26 6h20v48h-20z"/><path fill="#dae3ea" d="m16 2h32v4h-32z"/><path fill="#3e4347" d="m4 6h10v46h-10z"/><path fill="#b2c1c0" d="m26 52h28v8h-28z"/><g fill="#b4d7ee"><path d="m30 52h4v8h-4z"/><path d="m38 52h4v8h-4z"/><path d="m46 52h4v8h-4z"/><path d="m46 42h10v4h-10z"/><path d="m46 32h10v4h-10z"/><path d="m46 22h10v4h-10z"/><path d="m46 12h10v4h-10z"/><path d="m38 42h4v4h-4z"/><path d="m38 32h4v4h-4z"/><path d="m38 22h4v4h-4z"/><path d="m38 12h4v4h-4z"/><path d="m30 42h4v4h-4z"/><path d="m30 32h4v4h-4z"/><path d="m30 22h4v4h-4z"/><path d="m30 12h4v4h-4z"/></g><g fill="#3e4347"><path d="m26 46h32v6h-32z"/><path d="m26 36h32v6h-32z"/><path d="m26 26h32v6h-32z"/><path d="m26 16h32v6h-32z"/><path d="m26 6h32v6h-32z"/></g><g fill="#b4d7ee"><path d="m14 8h12v44h-12z"/><path d="m4 52h22v10h-22z"/></g><path fill="#dae3ea" d="m2 50h24v2h-24z"/><g fill="#d6eef0"><path d="m14 38h12v2h-12z"/><path d="m14 28h12v2h-12z"/><path d="m14 18h12v2h-12z"/><path d="m14 10h12v2h-12z"/></g><path fill="#f5f5f5" d="m14 6h12v2h-12z"/><path fill="#b2c1c0" d="m4 52h2v10h-2z"/><g fill="#f5f5f5"><path d="m10 52h1.3v10h-1.3z"/><path d="m10 52h12v1.1h-12z"/><path d="m10 60.9h12v1.1h-12z"/><path d="m15.3 52h1.3v10h-1.3z"/><path d="m20.7 52h1.3v10h-1.3z"/></g><path fill="#83bf4f" d="m26 58h36v2h-36z"/><path fill="#dae3ea" d="m24 60h38v2h-38z"/><path d="m61 57.8c.2-.3.3-.7.3-1.2 0-1.3-1-2.3-2.3-2.3 0 0-.1 0-.1 0v-.3c0-.6-.5-1.2-1.2-1.2-.3 0-.5.1-.7.3-.1-.8-.9-1.4-1.7-1.4-1 0-1.7.8-1.7 1.8 0 .1 0 .3 0 .4-.3-.2-.7-.4-1.1-.4-.7 0-1.3.4-1.6 1-.2-.1-.5-.1-.8-.1-1.3 0-2.3 1-2.3 2.3 0 .5.2 1 .5 1.4-.3.3-.5.7-.5 1.2 0 1 .8 1.8 1.7 1.8h9.2c.3.3.8.5 1.2.5 1.1 0 2-.9 2-2 .1-.8-.3-1.4-.9-1.8" fill="#83bf4f"/><g fill="#699635"><path d="m51.7 59.6c0 .6.5-.3 1.2-.3.6 0 1.2.9 1.2.3 0-.6-.5-1.2-1.2-1.2-.7 0-1.2.6-1.2 1.2"/><path d="m55.1 57.6c0 .3.3 0 .6 0 .3 0 .6.3.6 0 0-.3-.3-.6-.6-.6-.3 0-.6.2-.6.6"/><path d="m59.4 59.7c0 .3.3 0 .6 0 .3 0 .6.3.6 0 0-.3-.3-.6-.6-.6-.3.1-.6.3-.6.6"/></g><g fill="#b5f478"><path d="m56.9 56c0 .3.3-.1.6-.1.3 0 .6.4.6.1 0-.3-.3-.6-.6-.6-.3 0-.6.2-.6.6"/><path d="m58.9 57.7c0 .3.3-.1.6-.1.3 0 .6.4.6.1 0-.3-.3-.6-.6-.6-.4 0-.6.2-.6.6"/></g><g fill="#699635"><path d="m49.2 56.6c0 .7.5-.4 1.2-.4.7 0 1.2 1 1.2.4 0-.6-.5-1.2-1.2-1.2-.7 0-1.2.5-1.2 1.2"/><path d="m49.1 59.3c0 .3.3 0 .6 0 .3 0 .6.3.6 0 0-.3-.3-.6-.6-.6-.3.1-.6.3-.6.6"/></g><path d="m54.3 54.7c0 .4.3-.2.8-.2.4 0 .8.7.8.2 0-.4-.3-.8-.8-.8-.4 0-.8.3-.8.8" fill="#b5f478"/><path d="m56.5 59.9c0 .4.3-.2.8-.2.4 0 .8.7.8.2 0-.4-.3-.8-.8-.8-.5 0-.8.3-.8.8" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e3.svg b/riot/emojione/svg/1f3e3.svg new file mode 100644 index 0000000..db2004f --- /dev/null +++ b/riot/emojione/svg/1f3e3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m63 60h-62c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h62c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1" fill="#b2c1c0"/><path fill="#e8e8e8" d="m6 14h52v46h-52z"/><path fill="#3e4347" d="m64 16h-64l5-16h54z"/><g fill="#62727a"><path d="m11 24h8v14h-8z"/><path d="m45 24h8v14h-8z"/></g><g fill="#b4d7ee"><path d="m13 26h4v10h-4z"/><path d="m47 26h4v10h-4z"/></g><g fill="#62727a"><path d="m11.8 30h6.5v2h-6.5z"/><path d="m45.8 30h6.5v2h-6.5z"/></g><g fill="#fff"><path d="m11 44h42v16h-42z"/><path d="m32 41l13.5 6h4.5l-18-8-18 8h4.5z"/></g><g fill="#f15744"><path d="m24 22h16v4h-16z"/><path d="m24 28h16v4h-16z"/><path d="m30 30h4v6h-4z"/></g><path d="m64 16l-4.5-14.5-2.5 2.5-3-3 1-1h-3l1 1-3 3-3-3 1-1h-3l1 1-3 3-3-3 1-1h-3l1 1-3 3-3-3 1-1h-4l1 1-3 3-3-3 1-1h-3l1 1-3 3-3-3 1-1h-3l1 1-3 3-3-3 1-1h-3l1 1-3 3-2.5-2.5-4.5 14.5h5l-1-1 3-3 3 3-1 1h3l-1-1 3-3 3 3-1 1h3l-1-1 3-3 3 3-1 1h18l-1-1 3-3 3 3-1 1h3l-1-1 3-3 3 3-1 1h3l-1-1 3-3 3 3-1 1h5m-57-5l-3-3 3-3 3 3-3 3m7 0l-3-3 3-3 3 3-3 3m7 0l-3-3 3-3 3 3-3 3m22 0l-3-3 3-3 3 3-3 3m7 0l-3-3 3-3 3 3-3 3m7 0l-3-3 3-3 3 3-3 3" fill="#62727a"/><circle cx="32" cy="12" r="8" fill="#e8e8e8"/><circle cx="32" cy="12" r="6" fill="#3e4347"/><g fill="#b4d7ee"><path d="m13 46h6v14h-6z"/><path d="m21 46h6v14h-6z"/><path d="m29 46h6v14h-6z"/><path d="m37 46h6v14h-6z"/><path d="m45 46h6v14h-6z"/></g><g fill="#62727a"><path d="m13 46h6v4h-6z"/><path d="m21 46h6v4h-6z"/><path d="m37 46h6v4h-6z"/><path d="m45 46h6v4h-6z"/><path d="m29 46h6v4h-6z"/></g><path d="m9 21.5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3" fill="#b2c1c0" id="0"/><path d="m7 27.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v3" fill="#b2c1c0"/><use xlink:href="#0"/><g fill="#b2c1c0"><path d="m7 39.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v3"/><path d="m9 33.5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3"/><path d="m7 51.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v3"/><path d="m9 45.5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3"/><path d="m9 57.5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3"/></g><path d="m55 21.5c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5v3" fill="#b2c1c0" id="1"/><path d="m57 27.5c0 .3.2.5.5.5h1c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-1c-.3 0-.5.2-.5.5v3" fill="#b2c1c0"/><use xlink:href="#1"/><g fill="#b2c1c0"><path d="m57 39.5c0 .3.2.5.5.5h1c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-1c-.3 0-.5.2-.5.5v3"/><path d="m55 33.5c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5v3"/><path d="m57 51.5c0 .3.2.5.5.5h1c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-1c-.3 0-.5.2-.5.5v3"/><path d="m55 45.5c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5v3"/><path d="m55 57.5c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5v3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e4.svg b/riot/emojione/svg/1f3e4.svg new file mode 100644 index 0000000..8359ad4 --- /dev/null +++ b/riot/emojione/svg/1f3e4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63 60h-62c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h62c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1" fill="#b2c1c0"/><path d="m64 17c0 .5-.5 1-1 1h-62c-.6 0-1-.5-1-1v-14c0-.5.4-1 1-1h62c.5 0 1 .5 1 1v14" fill="#428bc1"/><path fill="#62727a" d="m2 18h60v42h-60z"/><g fill="#fff"><path d="m2 20h60v10h-60z"/><path d="m2 32h60v10h-60z"/></g><path fill="#d0d0d0" d="m2 0h60v2h-60z"/><path d="m22.8 6c0 2.8-1.6 5.2-3.9 6.3.6-.9 1-1.9 1-3.1 0-2.9-2.4-5.3-5.3-5.3-2.8 0-5.1 2.2-5.3 4.9-.4-.8-.6-1.7-.6-2.8h-4.7c0 5.5 4.5 10 10 10s10-4.5 10-10c0 0-1.2 0-1.2 0m-8.2-.2c1.9 0 3.5 1.6 3.5 3.5 0 1.9-1.6 3.5-3.5 3.5-1.9 0-3.5-1.6-3.5-3.5 0-2 1.5-3.5 3.5-3.5" fill="#ffe62e"/><g fill="#b4d7ee"><path d="m4.5 22h4v6h-4z"/><path d="m10.5 22h4v6h-4z"/><path d="m19.5 22h4v6h-4z"/><path d="m25.5 22h4v6h-4z"/><path d="m34.5 22h4v6h-4z"/><path d="m40.5 22h4v6h-4z"/><path d="m49.5 22h4v6h-4z"/><path d="m55.5 22h4v6h-4z"/><path d="m4.5 34h4v6h-4z"/><path d="m10.5 34h4v6h-4z"/><path d="m19.5 34h4v6h-4z"/><path d="m25.5 34h4v6h-4z"/><path d="m34.5 34h4v6h-4z"/><path d="m40.5 34h4v6h-4z"/><path d="m49.5 34h4v6h-4z"/><path d="m55.5 34h4v6h-4z"/></g><path fill="#ffe62e" d="m21 44v16h2v-12h18v12h2v-16z"/><g fill="#b4d7ee"><path d="m27 48h4v12h-4z"/><path d="m33 48h4v12h-4z"/></g><g fill="#fff"><path d="m31 48h2v12h-2z"/><path d="m37 48h2v12h-2z"/><path d="m25 48h2v12h-2z"/><path d="m26 53h12v2h-12z"/><path d="m43 48h16v10h-16z"/><path d="m5 48h16v10h-16z"/></g><g fill="#b4d7ee"><path d="m43 50h14v6h-14z"/><path d="m7 50h14v6h-14z"/></g><g fill="#fff"><path d="m13 49h2v8h-2z"/><path d="m49 49h2v8h-2z"/></g><g fill="#ffe62e"><path d="m28 5.3c.6-.1 1.5-.2 2.8-.2 1.3 0 2.2.3 2.8.8.6.5 1 1.3 1 2.2s-.3 1.8-.8 2.3c-.7.7-1.7 1-2.9 1-.3 0-.5 0-.7 0v3.5h-2v-9.6zm2 4.4c.2 0 .4.1.7.1 1.1 0 1.8-.6 1.8-1.6 0-.9-.6-1.4-1.6-1.4-.4 0-.7 0-.8.1v2.8z"/><path d="m44.4 9.9c0 3.2-1.8 5.1-4.4 5.1-2.7 0-4.2-2.2-4.2-4.9 0-2.9 1.7-5.1 4.4-5.1 2.7 0 4.2 2.2 4.2 4.9m-6.5.1c0 1.9.8 3.2 2.2 3.2 1.4 0 2.2-1.4 2.2-3.3 0-1.7-.8-3.2-2.2-3.2-1.4 0-2.2 1.4-2.2 3.3"/><path d="m46.2 12.6c.6.3 1.4.6 2.3.6.9 0 1.4-.4 1.4-1 0-.6-.4-.9-1.5-1.4-1.5-.6-2.5-1.5-2.5-2.9 0-1.7 1.3-2.9 3.4-2.9 1 0 1.8.2 2.3.5l-.5 1.8c-.4-.2-1-.5-1.9-.5-.9 0-1.3.4-1.3.9 0 .6.5.9 1.7 1.4 1.6.6 2.4 1.5 2.4 2.9 0 1.6-1.2 3-3.6 3-1 0-2.1-.3-2.6-.6l.4-1.8"/><path d="M55.5,7h-2.4V5.2H60V7h-2.5v7.8h-2V7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e5.svg b/riot/emojione/svg/1f3e5.svg new file mode 100644 index 0000000..448460d --- /dev/null +++ b/riot/emojione/svg/1f3e5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40 18h-26c-2.2 0-4 1.8-4 4v38h34v-38c0-2.2-1.8-4-4-4" fill="#e8e8e8"/><g fill="#62727a"><path d="m60 36h-34c-1.1 0-2 .9-2 2v22h38v-22c0-1.1-.9-2-2-2"/><path d="m7 36c-.6 0-1.2.4-1.6.8l-2.9 4.3c-.3.5-.5 1.4-.5 1.9v17h8v-24h-3"/></g><path fill="#b4d7ee" d="m12 53h10v7h-10z"/><path d="m63 60h-62c-.6 0-1 .5-1 1v2c0 .6.4 1 1 1h62c.5 0 1-.4 1-1v-2c0-.5-.5-1-1-1" fill="#62727a"/><g fill="#b4d7ee"><path d="m14 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m18 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m22 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m26 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m30 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m14 42.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m18 42.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m22 42.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m14 50.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m18 50.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m22 50.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m32 44h30v16h-30z"/><path d="m7 46.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m7 55.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/></g><g fill="#fff"><path d="m21 53h-8-1v1 6h1v-6h3.5v6h1v-6h3.5v6h1v-6-1z"/><path d="m17.5 56h-1c-.3 0-.5.2-.5.5v1c0 .3.2.5.5.5h1c.3 0 .5-.2.5-.5v-1c0-.3-.2-.5-.5-.5"/></g><path fill="#b2c1c0" d="m13 60h8v2h-8z"/><path fill="#e8e8e8" d="m13 62h8v2h-8z"/><path d="m33 44h29v-2h-31c-.5 0-1 .5-1 1v17h2v-3c0-.5.5-1 1-1h29v-2h-29c-.5 0-1-.4-1-1v-2c0-.5.5-1 1-1h29v-2h-29c-.5 0-1-.5-1-1v-2c0-.5.5-1 1-1" fill="#fff"/><g fill="#b4d7ee"><path d="m14 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m18 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m22 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m26 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m30 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m34 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m34 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m38 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m38 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m42 34.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/><path d="m42 26.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v5"/></g><path fill="#b2c1c0" d="m19 8h16v10h-16z"/><circle cx="27" cy="8" r="8" fill="#e8e8e8"/><path d="m32 6h-3v-3c0-.5-.5-1-1-1h-2c-.5 0-1 .5-1 1v3h-3c-.5 0-1 .4-1 1v2c0 .6.5 1 1 1h3v3c0 .6.5 1 1 1h2c.5 0 1-.4 1-1v-3h3c.5 0 1-.4 1-1v-2c0-.6-.5-1-1-1" fill="#f15744"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e6.svg b/riot/emojione/svg/1f3e6.svg new file mode 100644 index 0000000..dee2c6f --- /dev/null +++ b/riot/emojione/svg/1f3e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#4d4d4d" d="m9.5 31.5h45v24.9h-45z"/><g fill="#acb8bf"><path d="m2 60.1h60v1.9h-60z"/><path d="m9.5 56.4h45v1.9h-45z"/><path d="m17 52.6h30v1.9h-30z"/></g><path fill="#89664c" d="m41 36.9h7v12h-7z"/><path fill="#b4d7ee" d="m42 37.9h5v10h-5z"/><g fill="#89664c"><path d="m44 37.4h1v11h-1z"/><path d="m16 36.9h7v12h-7z"/></g><path fill="#b4d7ee" d="m17 37.9h5v10h-5z"/><path fill="#89664c" d="m19 37.4h1v11h-1z"/><g fill="#dae3ea"><path d="m5.8 58.2h52.5v1.9h-52.5z"/><path d="m13.2 54.5h37.5v1.9h-37.5z"/></g><path fill="#94989b" d="m4.8 27.8h54.4v1.9h-54.4z"/><path fill="#dae3ea" d="m2 29.6h60v1.9h-60z"/><path fill="#94989b" d="M32 4.8 2 21.2 4.5 25 32 6.7 59.5 25 62 21.2z"/><g fill="#dae3ea"><path d="m32 2l-30 19.2v2.9l30-19.3 30 19.3v-2.9z"/><path d="m32 6.7l-30 19.2v1.9h60v-1.9z"/></g><path fill="#acb8bf" d="m32 9.5l-24.9 16.4h49.8z"/><path d="m32 17.4c-1 0-1.8-.7-1.8-1.6s.8-1.6 1.8-1.6 1.8.7 1.8 1.6h1.8c0-1.5-1.1-2.7-2.7-3v-.9h-1.8v.9c-1.5.4-2.7 1.6-2.7 3 0 1.7 1.6 3.1 3.6 3.1 1 0 1.8.7 1.8 1.6 0 .9-.8 1.6-1.8 1.6s-1.8-.7-1.8-1.6h-1.8c0 1.5 1.1 2.7 2.7 3v.9h1.8v-.9c1.5-.4 2.7-1.6 2.7-3 0-1.7-1.6-3.1-3.6-3.1" fill="#fff"/><path fill="#dae3ea" d="m6.5 33.5h6v22.7h-6z"/><g fill="#94989b"><path d="m5.8 56.2h7.5v2h-7.5z"/><path d="m5.8 31.5h7.5v2h-7.5z"/></g><g fill="#c8d0d6"><path d="m7.1 34.4h.7v21h-.7z"/><path d="m11.2 34.4h.7v21h-.7z"/><path d="m9.8 34.4h.7v21h-.7z"/><path d="m8.5 34.4h.7v21h-.7z"/></g><path fill="#dae3ea" d="m51.5 33.5h6v22.7h-6z"/><g fill="#94989b"><path d="m50.8 56.2h7.5v2h-7.5z"/><path d="m50.8 31.5h7.5v2h-7.5z"/></g><g fill="#c8d0d6"><path d="m52.1 34.4h.7v21h-.7z"/><path d="m56.2 34.4h.7v21h-.7z"/><path d="m54.8 34.4h.7v21h-.7z"/><path d="m53.5 34.4h.7v21h-.7z"/></g><path d="m26.6 42.3v9.8h10.7v-9.8c.1-7.3-10.7-7.1-10.7 0" fill="#89664c"/><path d="m27.4 42.7v9.4h9.2v-9.4c0-6.7-9.2-6.6-9.2 0" fill="#594640"/><path d="m27.6 42.8v9.3h8.9v-9.3c-.1-6.7-8.9-6.6-8.9 0" fill="#a37d64"/><path fill="#94989b" d="m26.1 52.1h11.9v.6h-11.9z"/><g fill="#594640"><path d="m32.6 42.5h3.1c-.1-2.2-1.5-3.4-3.1-3.7v3.7"/><path d="m31.6 42.5v-3.7c-1.5.2-3 1.5-3.1 3.7h3.1"/></g><g fill="#89664c"><path d="m32.5 42.5h3.1c-.1-2.2-1.5-3.4-3.1-3.7v3.7"/><path d="m31.5 42.5v-3.7c-1.5.2-3 1.5-3.1 3.7h3.1"/></g><g fill="#594640"><path d="m32.6 43.5h3.1v3h-3.1z"/><path d="m28.5 43.5h3.1v3h-3.1z"/></g><g fill="#89664c"><path d="m32.5 43.5h3.1v3h-3.1z"/><path d="m28.4 43.5h3.1v3h-3.1z"/></g><g fill="#594640"><path d="m32.6 47.9h3.1v3h-3.1z"/><path d="m28.5 47.9h3.1v3h-3.1z"/></g><g fill="#89664c"><path d="m32.5 47.8h3.1v3h-3.1z"/><path d="m28.4 47.8h3.1v3h-3.1z"/></g><path fill="#dae3ea" d="m34.9 44.8h1.3v2.6h-1.3z"/><path fill="#acb8bf" d="m35 44.9h1.1v2.4h-1.1z"/><path d="m35.7 47.1l-.1-.5c0 0 .1-.1.1-.1 0-.1-.1-.2-.2-.2s-.2.1-.2.2c0 .1 0 .1.1.1l-.1.5h.4" fill="#3e4347"/><circle cx="35.5" cy="45.6" r=".5" fill="#94989b"/><circle cx="35.5" cy="45.5" r=".5" fill="#dae3ea"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e7.svg b/riot/emojione/svg/1f3e7.svg new file mode 100644 index 0000000..770f019 --- /dev/null +++ b/riot/emojione/svg/1f3e7.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,40c0,5.5-4.5,10-10,10H12C6.5,50,2,45.5,2,40V10C2,4.5,6.5,0,12,0h40c5.5,0,10,4.5,10,10V40z" fill="#44618b"/><path d="M49.7,26.3c0,1.5-1.2,2.7-2.7,2.7H9.2c-1.5,0-2.7-1.2-2.7-2.7V8.2c0-1.5,1.2-2.7,2.7-2.7H47 + c1.5,0,2.7,1.2,2.7,2.7V26.3z" fill="#cad5dd"/><path d="M49.7,28c0,1.5-1.2,2.7-2.7,2.7H9.2c-1.5,0-2.7-1.2-2.7-2.7V9.9c0-1.5,1.2-2.7,2.7-2.7H47 + c1.5,0,2.7,1.2,2.7,2.7V28z" fill="#fff"/><g fill="#333"><path d="m20.4 26.2h2l-4-14.4h-2l-4 14.4h2l1.3-4.7h3.6l1.1 4.7m-4.4-6.5l1.3-4.6 1.3 4.6h-2.6"/><path d="m20.9 11.8v1.8h4.1v12.6h1.9v-12.6h4.1v-1.8z"/><path d="m34.3 26.2v-10.1l2.7 10.1h2.5l2.7-10.1v10.1h1.8v-14.4h-2.5l-3.3 12.1-3.2-12.1h-2.5v14.4z"/></g><g fill="#2b4666"><path d="m55.2 34.4c0-1.1.9-2 2-2h4.8v7h-4.8c-1.1 0-2-.9-2-2v-3"/><path d="m55.2 24c0-1.1.9-2 2-2h4.8v7h-4.8c-1.1 0-2-.9-2-2v-3"/><path d="m55.2 13.6c0-1.1.9-2 2-2h4.8v7h-4.8c-1.1 0-2-.9-2-2v-3"/></g><g fill="#42ade2"><path d="m55.2 33.4c0-1.1.9-2 2-2h4.8v7h-4.8c-1.1 0-2-.9-2-2v-3"/><path d="m55.2 23c0-1.1.9-2 2-2h4.8v7h-4.8c-1.1 0-2-.9-2-2v-3"/><path d="m55.2 12.6c0-1.1.9-2 2-2h4.8v7h-4.8c-1.1 0-2-.9-2-2v-3"/></g><path d="m41 37.2c0 1.4-1.1 2.5-2.5 2.5h-29.5c-1.4 0-2.5-1.1-2.5-2.5v-.9c0-1.4 1.1-2.5 2.5-2.5h29.5c1.4 0 2.5 1.1 2.5 2.5v.9" fill="#333"/><path fill="#83bf4f" d="m38.6 36l6.9 28.1h-43.5l6.9-28.1z"/><path fill="#699635" d="m37 36l5.7 25.9h-37.9l5.7-25.9z"/><path fill="#83bf4f" d="m36 36l4.9 24.5h-34.3l4.9-24.5z"/><path d="m22.2 40.7l-.2 11.4c0 1.3-1.3 2.3-2.8 2.3-1.5 0-2.6-1.1-2.5-2.3l1.1-11.5c.1-.9 1.1-1.6 2.3-1.6l.1-2c-2.7 0-5.2 1.6-5.5 3.6l-.6 4h-3.1l-.5 2.5h3.3l-.7 4.9c-.4 3 2.2 5.6 5.9 5.6 3.7 0 6.6-2.6 6.5-5.6l-.3-11.5c0-.9.9-1.6 2.2-1.6s2.3.7 2.3 1.6l1.1 11.5c.1 1.3-1 2.3-2.5 2.3l.2 3.3c3.7 0 6.3-2.6 5.9-5.6l-.7-4.9h3.3l-.5-2.5h-3.2l-.6-4c-.3-2-2.7-3.6-5.5-3.6s-4.9 1.6-5 3.7" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e8.svg b/riot/emojione/svg/1f3e8.svg new file mode 100644 index 0000000..6aaa759 --- /dev/null +++ b/riot/emojione/svg/1f3e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63 60h-62c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h62c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1" fill="#62727a"/><path fill="#ed4c5c" d="m40 64h-16l4-4h8z"/><g fill="#e8e8e8"><path d="m51 36h-38c-2.2 0-4 1.8-4 4v20h46v-20c0-2.2-1.8-4-4-4"/><path d="m40 22h-16c-2.2 0-4 1.8-4 4v10h24v-10c0-2.2-1.8-4-4-4"/></g><g fill="#62727a"><path d="m19 44h26v6h-26z"/><path d="M21.1,37.6v1.9H23v-1.9h1.1v4.8H23v-2h-1.8v2H20v-4.8H21.1z"/><path d="m30.3 40c0 1.6-1 2.5-2.4 2.5-1.5 0-2.3-1.1-2.3-2.5 0-1.5.9-2.5 2.4-2.5 1.5 0 2.3 1.1 2.3 2.5m-3.6 0c0 .9.5 1.6 1.2 1.6.8 0 1.2-.7 1.2-1.6 0-.9-.4-1.6-1.2-1.6-.7 0-1.2.7-1.2 1.6"/><path d="m32.5 38.5h-1.3v-.9h3.8v.9h-1.3v3.9h-1.1v-3.9z"/><path d="m39.2 40.4h-1.8v1.1h2v.9h-3.1v-4.8h3v.9h-1.9v1h1.8c0 0 0 .9 0 .9"/><path d="m40.9 37.6h1.1v3.9h2v.9h-3.1v-4.8"/></g><g fill="#ffdd7d"><path d="m34 46.5h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5 1.2-.9 1.2.9-.4-1.5z"/><path d="m29 46.5h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5 1.2-.9 1.2.9-.4-1.5z"/><path d="m39 46.5h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5 1.2-.9 1.2.9-.4-1.5z"/><path d="m44 46.5h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5 1.2-.9 1.2.9-.4-1.5z"/><path d="m24 46.5h-1.5l-.5-1.5-.5 1.5h-1.5l1.2 1-.4 1.5 1.2-.9 1.2.9-.4-1.5z"/></g><g fill="#b2c1c0"><path d="m21 50h4v10h-4z"/><path d="m39 50h4v10h-4z"/></g><path fill="#42ade2" d="m28 50h8v10h-8z"/><path fill="#e8e8e8" d="m31 50h2v10h-2z"/><g fill="#428bc1"><path d="m28 50h3v2h-3z"/><path d="m33 50h3v2h-3z"/></g><g fill="#b2c1c0"><path d="m31 50h2v2h-2z"/><path d="m33 1c0-.6-.5-1-1-1-.6 0-1 .4-1 1v9c0 .6.4 1 1 1 .5 0 1-.4 1-1v-9"/></g><path d="m36.3 12.3l-1.6-1.6c-.4-.4-1.2-.7-1.7-.7h-2c-.6 0-1.3.3-1.7.7l-1.6 1.6c-.4.4-.7 1.1-.7 1.7v8h10v-8c0-.6-.3-1.3-.7-1.7" fill="#e8e8e8"/><g fill="#42ade2"><path d="m16 39h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m34 24h-4c-.6 0-1 .5-1 1v8c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-8c0-.5-.5-1-1-1"/><path d="m52 39h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m16 46h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m52 46h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m16 53h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m52 53h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m31 15c0-.6-.5-1-1-1-.6 0-1 .4-1 1v4c0 .5.4 1 1 1 .5 0 1-.5 1-1v-4"/><path d="m35 15c0-.6-.5-1-1-1-.6 0-1 .4-1 1v4c0 .5.4 1 1 1 .5 0 1-.5 1-1v-4"/><path d="m23 24c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h3c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1h-3"/><path d="m23 30c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h3c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1h-3"/><path d="m38 24c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h3c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1h-3"/><path d="m38 30c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h3c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1h-3"/></g><path d="m33 1.4c0 1.7 0 3.4 0 5.1 2.7 1.5 3.3-1.5 6 0 0-1.7 0-3.4 0-5.1-2.7-1.5-3.3 1.6-6 0" fill="#ed4c5c"/><path d="m10 39.5h-1.2c0 0-1.4 7.4-.2 20.5h3.1c-.1 0-1.7-8.4-1.7-20.5" fill="#dbb471"/><g fill="#83bf4f"><path d="m10 38.3c0 0-4.3-8.5-10-1.7 0 0 4.3-1.9 9.3 4l.7-2.3"/><path d="m8.2 38.7l2.2 1.2c5.3-6 9.7-2.1 9.7-2.1-5.3-6.9-11.9.9-11.9.9"/><path d="m9.2 38.7c0 0-7.1.2-6 9 0 0 .1-6.2 7.2-6.9l-1.2-2.1"/><path d="m9.2 38.3v2.5c7.8 1.7 6.6 7.4 6.6 7.4 3.4-8-6.6-9.9-6.6-9.9"/></g><g fill="#89664c"><path d="m8.2 57.2c0 0 1.5 2.2 3.4 0h-3.4"/><path d="m7.9 53.8c0 0 1.5 2.2 3.4 0h-3.4"/><path d="m7.7 50.4c0 0 1.2 2.2 2.9 0h-2.9"/><path d="m7.7 47c0 0 1.2 2.2 2.9 0h-2.9"/><path d="m7.9 43.6c0 0 1 2.2 2.4 0h-2.4"/></g><path d="m54 39.5h1.2c0 0 1.4 7.4.2 20.5h-3.1c.1 0 1.7-8.4 1.7-20.5" fill="#dbb471"/><g fill="#83bf4f"><path d="m54 38.3c0 0 4.3-8.5 10-1.7 0 0-4.3-1.9-9.3 4l-.7-2.3"/><path d="m55.8 38.7l-2.2 1.2c-5.3-6-9.7-2.1-9.7-2.1 5.3-6.9 11.9.9 11.9.9"/><path d="m54.8 38.7c0 0 7.1.2 6 9 0 0-.1-6.2-7.2-6.9l1.2-2.1"/><path d="m54.8 38.3v2.5c-7.8 1.7-6.6 7.4-6.6 7.4-3.4-8 6.6-9.9 6.6-9.9"/></g><g fill="#89664c"><path d="m55.8 57.2c0 0-1.5 2.2-3.4 0h3.4"/><path d="m56.1 53.8c0 0-1.5 2.2-3.4 0h3.4"/><path d="m56.3 50.4c0 0-1.2 2.2-2.9 0h2.9"/><path d="m56.3 47c0 0-1.2 2.2-2.9 0h2.9"/><path d="m56.1 43.6c0 0-1 2.2-2.4 0h2.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3e9.svg b/riot/emojione/svg/1f3e9.svg new file mode 100644 index 0000000..5842ed5 --- /dev/null +++ b/riot/emojione/svg/1f3e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d0d0d0"><path d="m0 58h64v6h-64z"/><path d="m10 58h14v2h-14z"/></g><path fill="#3e4347" d="m10 58h14v2h-14z"/><path fill="#ffc7ce" d="m7 20h50v38h-50z"/><path fill="#e84d88" d="m12 42h10v16h-10z"/><g fill="#d6eef0"><path d="m12 26h10v10h-10z"/><path d="m42 26h10v10h-10z"/><path d="m27 26h10v10h-10z"/><path d="m42 42h10v10h-10z"/><path d="m27 42h10v10h-10z"/></g><path fill="#d0d0d0" d="m13 16h38v4h-38z"/><circle cx="20" cy="51" r="1" fill="#ffdd7d"/><g fill="#9450e0"><path d="m11 36h12v2h-12z"/><path d="m26 36h12v2h-12z"/><path d="m41 36h12v2h-12z"/><path d="m26 52h12v2h-12z"/><path d="m41 52h12v2h-12z"/></g><g fill="#e84d88"><path d="m12 26v6h1c1.7 0 3-1.3 3-3v-3h-4"/><path d="m22 26v6h-1c-1.7 0-3-1.3-3-3v-3h4"/><path d="m13 32h-1v4h4v-1c0-1.7-1.3-3-3-3"/><path d="m21 32c-1.7 0-3 1.3-3 3v1h4v-4h-1"/><path d="m27 26v6h1c1.7 0 3-1.3 3-3v-3h-4"/><path d="m37 26v6h-1c-1.7 0-3-1.3-3-3v-3h4"/><path d="m28 32h-1v4h4v-1c0-1.7-1.3-3-3-3"/><path d="m36 32c-1.7 0-3 1.3-3 3v1h4v-4h-1"/><path d="m42 26v6h1c1.7 0 3-1.3 3-3v-3h-4"/><path d="m52 26v6h-1c-1.7 0-3-1.3-3-3v-3h4"/><path d="m43 32h-1v4h4v-1c0-1.7-1.3-3-3-3"/><path d="m51 32c-1.7 0-3 1.3-3 3v1h4v-4h-1"/><path d="m27 42v6h1c1.7 0 3-1.3 3-3v-3h-4"/><path d="m37 42v6h-1c-1.7 0-3-1.3-3-3v-3h4"/><path d="m28 48h-1v4h4v-1c0-1.7-1.3-3-3-3"/><path d="m36 48c-1.7 0-3 1.3-3 3v1h4v-4h-1"/><path d="m42 42v6h1c1.7 0 3-1.3 3-3v-3h-4"/><path d="m52 42v6h-1c-1.7 0-3-1.3-3-3v-3h4"/><path d="m43 48h-1v4h4v-1c0-1.7-1.3-3-3-3"/><path d="m51 48c-1.7 0-3 1.3-3 3v1h4v-4h-1"/><path d="m36.3 0c-1.9 0-3.5.9-4.3 2.3-.8-1.4-2.4-2.3-4.3-2.3-2.6 0-4.7 1.8-4.7 4 0 4 9 12 9 12s9-8 9-12c0-2.2-2.1-4-4.7-4"/></g><path fill="#94989b" d="m10 60h14v2h-14z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ea.svg b/riot/emojione/svg/1f3ea.svg new file mode 100644 index 0000000..c423a1e --- /dev/null +++ b/riot/emojione/svg/1f3ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63 60h-62c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h62c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1" fill="#b2c1c0"/><path d="m51 28h-38c-3.3 0-6 2.7-6 6v26h50v-26c0-3.3-2.7-6-6-6" fill="#e8e8e8"/><path d="m33 0h-20c-3.3 0-6 2.7-6 6v18h32v-18c0-3.3-2.7-6-6-6" fill="#ffe62e"/><g fill="#b2c1c0"><path d="m29 24h4v4h-4z"/><path d="m13 24h4v4h-4z"/></g><path d="m51 30h-38c-2.2 0-4 1.8-4 4v8h46v-8c0-2.2-1.8-4-4-4" fill="#ff717f"/><path fill="#ffe62e" d="m9 34h46v4h-46z"/><path d="M33,0H13C9.7,0,7,2.7,7,6v18h32V6C39,2.7,36.3,0,33,0z M37,22H9V6c0-2.2,1.8-4,4-4h20c2.2,0,4,1.8,4,4V22z" fill="#ff717f"/><path fill="#62727a" d="m24 42h16v18h-16z"/><path fill="#d6eef0" d="m26 44h12v16h-12z"/><g fill="#62727a"><path d="m31 44h2v16h-2z"/><path d="m9 45h15v2h-15z"/><path d="m40 45h15v2h-15z"/></g><g fill="#d6eef0"><path d="m9 47h15v10h-15z"/><path d="m40 47h15v10h-15z"/></g><g fill="#62727a"><path d="m9 55h15v2h-15z"/><path d="m40 55h15v2h-15z"/><path d="m9 45h2v12h-2z"/><path d="m53 45h2v12h-2z"/></g><g fill="#ff717f"><path d="m30.7 4v6.4h-3.4v-6.4h-3.3v9.6h6.7v6.4h3.3v-16z"/><path d="m18.7 13.6c.9 0 1.7-.3 2.4-.9.7-.6 1-1.4 1-2.3v-3.2c0-.8-.3-1.6-1-2.3-.7-.6-1.6-.9-2.4-.9h-6.7v3.2h6.7v3.2h-3.3c-.9 0-1.7.3-2.4.9s-1 1.4-1 2.3v6.4h10v-3.2h-6.7v-3.2h3.4"/></g><path fill="#e8e8e8" d="m40 64h-16l2-4h12z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3eb.svg b/riot/emojione/svg/1f3eb.svg new file mode 100644 index 0000000..67a04c9 --- /dev/null +++ b/riot/emojione/svg/1f3eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m33 11.8c0 .5-.5 1-1 1-.5 0-1-.5-1-1v-10.8c0-.6.5-1 1-1 .5 0 1 .4 1 1v10.8" fill="#b2c1c0"/><path fill="#e5dec1" d="m4 28h56v32h-56z"/><path d="m60.5 19.8c-.5-1-1.8-1.8-3-1.8h-51.1c-1.1 0-2.5.8-3 1.8l-3.3 6.4c-.5 1 0 1.8 1.1 1.8h61.4c1.1 0 1.6-.8 1.1-1.8l-3.2-6.4" fill="#d33b23"/><g fill="#d6eef0"><path d="m15 45c0 .5-.4 1-1 1h-6c-.6 0-1-.5-1-1v-4c0-.5.4-1 1-1h6c.6 0 1 .5 1 1v4"/><path d="m15 35c0 .5-.4 1-1 1h-6c-.6 0-1-.5-1-1v-4c0-.5.4-1 1-1h6c.6 0 1 .5 1 1v4"/></g><g fill="#dbb471"><path d="m14 36.5h-6c-.8 0-1.5-.7-1.5-1.5v-4c0-.8.7-1.5 1.5-1.5h6c.8 0 1.5.7 1.5 1.5v4c0 .8-.7 1.5-1.5 1.5m-6-6c-.3 0-.5.2-.5.5v4c0 .3.2.5.5.5h6c.3 0 .5-.2.5-.5v-4c0-.3-.2-.5-.5-.5h-6"/><path d="m10.5 30h1v6h-1z"/><path d="m14 47h-6c-.8 0-1.5-.7-1.5-1.5v-4c0-.8.7-1.5 1.5-1.5h6c.8 0 1.5.7 1.5 1.5v4c0 .8-.7 1.5-1.5 1.5m-6-6c-.3 0-.5.2-.5.5v4c0 .3.2.5.5.5h6c.3 0 .5-.2.5-.5v-4c0-.3-.2-.5-.5-.5h-6"/><path d="m10.5 40.5h1v6h-1z"/></g><path d="m15 55c0 .5-.4 1-1 1h-6c-.6 0-1-.5-1-1v-4c0-.5.4-1 1-1h6c.6 0 1 .5 1 1v4" fill="#d6eef0"/><g fill="#dbb471"><path d="m14 57h-6c-.8 0-1.5-.7-1.5-1.5v-4c0-.8.7-1.5 1.5-1.5h6c.8 0 1.5.7 1.5 1.5v4c0 .8-.7 1.5-1.5 1.5m-6-6c-.3 0-.5.2-.5.5v4c0 .3.2.5.5.5h6c.3 0 .5-.2.5-.5v-4c0-.3-.2-.5-.5-.5h-6"/><path d="m10.5 50.5h1v6h-1z"/></g><g fill="#d6eef0"><path d="m57 45c0 .5-.5 1-1 1h-6c-.5 0-1-.5-1-1v-4c0-.5.5-1 1-1h6c.5 0 1 .5 1 1v4"/><path d="m57 35c0 .5-.5 1-1 1h-6c-.5 0-1-.5-1-1v-4c0-.5.5-1 1-1h6c.5 0 1 .5 1 1v4"/></g><g fill="#dbb471"><path d="m56 36.5h-6c-.8 0-1.5-.7-1.5-1.5v-4c0-.8.7-1.5 1.5-1.5h6c.8 0 1.5.7 1.5 1.5v4c0 .8-.7 1.5-1.5 1.5m-6-6c-.3 0-.5.2-.5.5v4c0 .3.2.5.5.5h6c.3 0 .5-.2.5-.5v-4c0-.3-.2-.5-.5-.5h-6"/><path d="m52.5 30h1v6h-1z"/><path d="m56 47h-6c-.8 0-1.5-.7-1.5-1.5v-4c0-.8.7-1.5 1.5-1.5h6c.8 0 1.5.7 1.5 1.5v4c0 .8-.7 1.5-1.5 1.5m-6-6c-.3 0-.5.2-.5.5v4c0 .3.2.5.5.5h6c.3 0 .5-.2.5-.5v-4c0-.3-.2-.5-.5-.5h-6"/><path d="m52.5 40.5h1v6h-1z"/></g><path d="m57 55c0 .5-.5 1-1 1h-6c-.5 0-1-.5-1-1v-4c0-.5.5-1 1-1h6c.5 0 1 .5 1 1v4" fill="#d6eef0"/><g fill="#dbb471"><path d="m56 57h-6c-.8 0-1.5-.7-1.5-1.5v-4c0-.8.7-1.5 1.5-1.5h6c.8 0 1.5.7 1.5 1.5v4c0 .8-.7 1.5-1.5 1.5m-6-6c-.3 0-.5.2-.5.5v4c0 .3.2.5.5.5h6c.3 0 .5-.2.5-.5v-4c0-.3-.2-.5-.5-.5h-6"/><path d="m52.5 50.5h1v6h-1z"/></g><path d="m32.8 11.6c-.4-.3-1.1-.3-1.6 0l-19.4 15.8c-.4.3-.4.6.2.6h40c.5 0 .7-.3.2-.6l-19.4-15.8" fill="#f15744"/><path d="m48.2 27.4l-15.4-12.8c-.4-.4-1.1-.4-1.5 0l-15.5 12.8c-.5.3-.4.6.2.6h2v32h28v-32h2c.5 0 .7-.3.2-.6" fill="#f9f3d9"/><path fill="#e5dec1" d="m24 45h16v15h-16z"/><path fill="#42ade2" d="m26 45h12v15h-12z"/><g fill="#89664c"><path d="m20.2 38c.3.1.7.2 1.1.2.5 0 .7-.2.7-.4 0-.2-.2-.4-.7-.5-.7-.2-1.2-.6-1.2-1.1 0-.7.6-1.2 1.7-1.2.5 0 .9.1 1.1.2l-.2.7c-.2-.1-.5-.2-.9-.2-.4 0-.6.2-.6.4 0 .2.2.4.8.5.8.3 1.1.6 1.1 1.2 0 .6-.6 1.2-1.8 1.2-.5 0-1-.1-1.2-.2l.1-.8"/><path d="m26.9 38.8c-.2.1-.6.2-1.1.2-1.5 0-2.3-.8-2.3-1.9 0-1.3 1.1-2.1 2.4-2.1.5 0 .9.1 1.1.2l-.2.7c-.2-.1-.5-.1-.8-.1-.8 0-1.4.4-1.4 1.3 0 .8.5 1.3 1.4 1.3.3 0 .6-.1.8-.1l.1.5"/><path d="m28.5 35.1v1.5h1.6v-1.5h1v3.9h-1v-1.6h-1.6v1.6h-1v-3.9h1"/><path d="m36 37c0 1.3-.9 2-2.1 2-1.3 0-2.1-.9-2.1-2 0-1.2.8-2 2.1-2 1.3 0 2.1.9 2.1 2m-3.2 0c0 .8.4 1.3 1.1 1.3.7 0 1-.6 1-1.3 0-.7-.4-1.3-1.1-1.3-.6 0-1 .6-1 1.3"/><path d="m40.6 37c0 1.3-.9 2-2.1 2-1.3 0-2.1-.9-2.1-2 0-1.2.8-2 2.1-2 1.4 0 2.1.9 2.1 2m-3.1 0c0 .8.4 1.3 1.1 1.3.7 0 1-.6 1-1.3 0-.7-.4-1.3-1.1-1.3-.6 0-1 .6-1 1.3"/><path d="m41.3 35.1h1v3.1h1.7v.7h-2.7v-3.8"/></g><circle cx="32" cy="26" r="7" fill="#dbb471"/><circle cx="32" cy="26" r="5" fill="#fff"/><path fill="#e5dec1" d="m31.5 45h1v15h-1z"/><path d="m32 22c-.5 0-1 .5-1 1v4c0 .5.5 1 1 1s1-.5 1-1v-4c0-.5-.5-1-1-1" fill="#b2c1c0"/><path d="m32 26h-2c-.5 0-1 .5-1 1s.5 1 1 1h2c.5 0 1-.5 1-1s-.5-1-1-1" fill="#f15744"/><path d="M33,2c0,2.5,0,4.9,0,7.4c4,3.2,8-6.9,12-3.7C41,0,37,7.6,33,2z" fill="#b4d7ee"/><path d="m32.9 40.3c-.5-.4-1.4-.4-1.9 0-2.1 1.5-9 5.7-9 5.7v2h20v-2c0 0-6.9-4.2-9.1-5.7" fill="#f15744"/><path d="m63 60h-62c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h62c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1" fill="#666"/><path fill="#e8e8e8" d="m20 62h24v2h-24z"/><path fill="#d0d0d0" d="m22 60h20v2h-20z"/><g fill="#666"><path d="m29.1 53.5h1.4v.7h-1.4z"/><path d="m33.5 53.5h1.4v.7h-1.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ec.svg b/riot/emojione/svg/1f3ec.svg new file mode 100644 index 0000000..d39eedf --- /dev/null +++ b/riot/emojione/svg/1f3ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m0 60h64v4h-64z"/><path fill="#62727a" d="m2 32h60v28h-60z"/><path fill="#d6eef0" d="m6 42h14v18h-14z"/><path fill="#3e4347" d="m2 27h60v6h-60z"/><path d="m0 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#83bf4f"/><path d="m8 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#d33b23"/><path d="m16 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#83bf4f"/><path fill="#c7e755" d="m16 18h8v9h-8z"/><path d="m24 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#d33b23"/><path fill="#f15744" d="m24 18h8v9h-8z"/><path fill="#c7e755" d="m0 18h8v9h-8z"/><path fill="#f15744" d="m8 18h8v9h-8z"/><path fill="#c7e755" d="m48 18h8v9h-8z"/><path fill="#f15744" d="m56 18h8v9h-8z"/><path d="m32 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#83bf4f"/><path fill="#c7e755" d="m32 18h8v9h-8z"/><path d="m40 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#d33b23"/><path fill="#f15744" d="m40 18h8v9h-8z"/><path d="m48 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#83bf4f"/><path d="m56 27c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#d33b23"/><path d="m13 33c-5 0-9 4-9 9h18c0-5-4-9-9-9" fill="#fff"/><path d="m6.3 40h13.4c-.9-2.9-3.5-5-6.7-5s-5.8 2.1-6.7 5" fill="#62727a"/><g fill="#fff"><path d="m6 42h2v18h-2z"/><path d="m18 42h2v18h-2z"/></g><path fill="#b4d7ee" d="m8 42h10v2h-10z"/><path fill="#fff" d="m27 33h30v20h-30z"/><path d="m59 56c0 .5-.5 1-1 1h-32c-.5 0-1-.5-1-1v-2c0-.5.5-1 1-1h32c.5 0 1 .5 1 1v2" fill="#3e4347"/><path fill="#d6eef0" d="m29 35h26v16h-26z"/><path fill="#b4d7ee" d="m29 35h26v2h-26z"/><path d="m16 47c-.6 0-1 .6-1 1.3v2c0 .7.4 1.7.8 2.1l.4.4c.4.4.8.2.8-.5v-3.9c0-.8-.5-1.4-1-1.4" fill="#62727a"/><path d="m64 18h-64v-16c0-1.1.9-2 2-2h60c1.1 0 2 .9 2 2v16" fill="#3e4347"/><path d="m3 2c-.5 0-1 .5-1 1v12c0 .6.5 1 1 1h58c.5 0 1-.4 1-1v-12c0-.5-.5-1-1-1h-58" fill="#e8e8e8"/><g fill="#3e4347"><path d="m17.5 5.1c-2.3-1-4.9-1.5-7.4-.8-2.4.7-2.7 3.6-.7 5 1.9 1.2 4.3.2 6.3 1.2.8.4.2 1.1-.3 1.3-.7.2-1.3.2-1.9.2-1.3 0-2.9-.2-4-.9-1.1-.7-2.1 1-1 1.7 1.9 1.2 4.9 1.4 7 .9 2.2-.5 3.4-3.1 1.5-4.7-1.6-1.4-4.1-.8-6.1-1.3-.6-.1-1.4-.6-.8-1.3.6-.5 1.9-.4 2.5-.4 1.3 0 2.9.4 3.9.9 1.2.5 2.2-1.3 1-1.8"/><path d="m50 13c0-2.7 0-5.3 0-8-.3.3-.7.7-1 1 .8 0 6.1-.2 4.9 1.4-.8 1-3.7.6-4.9.6-1.3 0-1.3 2 0 2 2.2 0 6.7.4 7-2.7.3-3.8-4.5-3.3-7-3.3-.5 0-1 .5-1 1 0 2.7 0 5.3 0 8 0 1.3 2 1.3 2 0"/><path d="m22 5c0 2.7 0 5.3 0 8 0 1.3 2 1.3 2 0 0-2.7 0-5.3 0-8 0-1.3-2-1.3-2 0"/><path d="m30 5c0 2.7 0 5.3 0 8 0 1.3 2 1.3 2 0 0-2.7 0-5.3 0-8 0-1.3-2-1.3-2 0"/><path d="m23 10c2.7 0 5.3 0 8 0 1.3 0 1.3-2 0-2-2.7 0-5.3 0-8 0-1.3 0-1.3 2 0 2"/></g><circle cx="40" cy="9" r="4" fill="none" stroke="#3e4347" stroke-width="2" stroke-miterlimit="10"/><g fill="#3e4347"><circle cx="5" cy="9" r="1"/><circle cx="59" cy="9" r="1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ed.svg b/riot/emojione/svg/1f3ed.svg new file mode 100644 index 0000000..43aaa5a --- /dev/null +++ b/riot/emojione/svg/1f3ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d0d0d0"><circle cx="54.5" cy="13.2" r="3"/><circle cx="49.5" cy="11.2" r="4.2"/><circle cx="48" cy="7.8" r="4.8"/></g><g fill="#e8e8e8"><path d="m47.1 5c2.3 0 4.2 1.4 5 3.4 0-.1 0-.3 0-.4 0-2.2-1.8-3.9-3.9-3.9-1.1 0-2.2.5-2.9 1.3.5-.3 1.1-.4 1.8-.4"/><path d="m48.2 8.3c2.3 0 4.2 1.4 5 3.4 0-.1 0-.3 0-.4 0-2.2-1.8-3.9-3.9-3.9-1.1 0-2.2.5-2.9 1.3.6-.3 1.2-.4 1.8-.4"/><path d="m53.4 11.7c1.6 0 3 1 3.6 2.5 0-.1 0-.2 0-.3 0-1.6-1.3-2.8-2.8-2.8-.8 0-1.6.4-2.1.9.3-.2.8-.3 1.3-.3"/></g><path d="m63 60h-62c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h62c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1" fill="#62727a"/><path fill="#f15744" d="m39 40l-12-10v10l-12-10v10l-12-10v30h48v-20z"/><g fill="#d33b23"><path d="m51.8 43.2h8.4l-.4-8.4h-7.6z"/><path d="m59.4 26.4l-.4-8.4h-6l-.4 8.4z"/><path d="m51.4 51.6l-.4 8.4h10l-.4-8.4z"/></g><g fill="#d0d0d0"><path d="m59.4 26.4h-6.8l-.4 8.4h7.6z"/><path d="m51.4 51.6h9.2l-.4-8.4h-8.4z"/></g><path fill="#f9f3d9" d="m3 45h36v10h-36z"/><path fill="#b4d7ee" d="m3 46h35v8h-35z"/><path fill="#89664c" d="m42 50h6v10h-6z"/><path fill="#d33b23" d="m41 48h8v2h-8z"/><g fill="#f9f3d9"><path d="m3 49.5h35v1h-35z"/><path d="m14.5 45h1v10h-1z"/><path d="m26.5 45h1v10h-1z"/></g><circle cx="46.5" cy="54.5" r=".5" fill="#dbb471"/><path fill="#d0d0d0" d="m42 60h6v2h-6z"/><path fill="#e8e8e8" d="m41 62h8v2h-8z"/><g fill="#d0d0d0"><circle cx="56.5" cy="16" r="2"/><circle cx="42" cy="5.1" r="5.1"/><circle cx="33.9" cy="5.9" r="5.9"/><circle cx="26.5" cy="5" r="5"/><circle cx="18.4" cy="7" r="7"/><circle cx="10.6" cy="9.2" r="9.2"/></g><g fill="#e8e8e8"><path d="m8.1 3.3c4.7 0 8.6 2.9 10.2 7.1 0-.3.1-.6.1-.9 0-4.5-3.6-8.1-8.1-8.1-2.3 0-4.4 1-5.9 2.6 1.1-.5 2.4-.7 3.7-.7"/><path d="m16.5 2.9c3.7 0 6.8 2.3 8 5.6 0-.2 0-.5 0-.7 0-3.5-2.9-6.4-6.4-6.4-1.8 0-3.5.8-4.7 2 1.1-.3 2.1-.5 3.1-.5"/><path d="m25.2 2.1c2.6 0 4.9 1.7 5.8 4 0-.2 0-.3 0-.5 0-2.6-2.1-4.6-4.6-4.6-1.3 0-2.5.6-3.3 1.5.6-.3 1.3-.4 2.1-.4"/><path d="m32.2 2.4c3 0 5.6 1.9 6.6 4.6 0-.2 0-.4 0-.6 0-2.9-2.3-5.2-5.2-5.2-1.5 0-2.9.6-3.8 1.7.7-.3 1.6-.5 2.4-.5"/><path d="m40.8 2.1c2.6 0 4.8 1.6 5.6 3.9 0-.2 0-.3 0-.5 0-2.5-2-4.4-4.5-4.4-1.3 0-2.4.5-3.3 1.4.7-.3 1.4-.4 2.2-.4"/><path d="m55.7 14.9c1.1 0 2 .7 2.4 1.6 0-.1 0-.1 0-.2 0-1-.8-1.9-1.9-1.9-.5 0-1 .2-1.4.6.3-.1.6-.1.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ee.svg b/riot/emojione/svg/1f3ee.svg new file mode 100644 index 0000000..664a333 --- /dev/null +++ b/riot/emojione/svg/1f3ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 6.1c-11 0-20 4.6-20 10.4v31.1c0 5.7 9 10.4 20 10.4 11 0 20-4.6 20-10.4v-31.1c0-5.7-9-10.4-20-10.4" fill="#ba0028"/><path d="m32 6.1c-7.6 0-13.8 4.6-13.8 10.4v31.1c0 5.7 6.2 10.4 13.8 10.4s13.8-4.6 13.8-10.4v-31.1c0-5.7-6.2-10.4-13.8-10.4" fill="#ff2449"/><path d="m32 9c-2.9 0-5.3 4.1-5.3 9.2v27.6c0 5.1 2.4 9.2 5.3 9.2s5.3-4.1 5.3-9.2v-27.6c0-5.1-2.4-9.2-5.3-9.2" fill="#ff503e"/><g fill="#3e4347"><path d="m42 7.5v-4.1c-2.9-.9-6.4-1.4-10-1.4s-7.1.5-10 1.4v4.1c2.9-.9 6.4-1.4 10-1.4s7.1.5 10 1.4"/><path d="m22 56.5v4.1c2.9.9 6.4 1.4 10 1.4s7.1-.5 10-1.4v-4.1c-2.9.9-6.4 1.4-10 1.4s-7.1-.5-10-1.4"/></g><g fill="#ff7e27"><path d="m12 32c6.7-.6 13.3-.7 20-.8 6.7 0 13.3.2 20 .8-6.7.6-13.3.7-20 .8-6.7-.1-13.3-.2-20-.8"/><path d="m15.1 53c2.8.4 5.6.7 8.4.9 2.8.2 5.6.3 8.4.3 2.8 0 5.6-.1 8.4-.3 2.8-.2 5.6-.5 8.4-.9-2.7 1-5.5 1.7-8.3 2.1-2.8.4-5.7.6-8.6.7-2.9 0-5.7-.2-8.6-.6-2.6-.5-5.4-1.2-8.1-2.2"/><path d="m12.1 48.6c3.3.5 6.6.7 10 .9 3.3.2 6.6.3 10 .3 3.3 0 6.6-.1 10-.3 3.3-.2 6.6-.5 10-.9-3.2 1-6.5 1.7-9.8 2.1-3.3.4-6.7.6-10.1.7-3.4 0-6.7-.2-10.1-.6-3.5-.5-6.8-1.2-10-2.2"/><path d="m12.1 44.3c3.3.4 6.7.6 10 .7 3.3.2 6.6.3 9.9.2 3.3 0 6.6-.1 10-.2 3.3-.2 6.6-.4 10-.7-3.2.9-6.5 1.5-9.9 1.9-3.3.4-6.7.6-10 .6-3.4 0-6.7-.2-10-.6-3.5-.4-6.8-1-10-1.9"/><path d="m12.2 40.1c3.3.2 6.7.4 10 .5 3.3.1 6.6.2 9.9.2 3.3 0 6.6-.1 9.9-.2 3.3-.1 6.6-.3 10-.5-3.2.8-6.6 1.3-9.9 1.7-3.3.3-6.7.5-10 .5-3.4 0-6.7-.2-10-.5-3.4-.4-6.7-.9-9.9-1.7"/><path d="m12.1 35.9l10 .1c3.3 0 6.6.1 9.9 0 3.3 0 6.6 0 9.9-.1l10-.1c-3.3.6-6.6 1-9.9 1.3-3.3.3-6.7.4-10 .4-3.3 0-6.7-.1-10-.4-3.3-.1-6.6-.5-9.9-1.2"/><path d="m48.9 11c-2.8-.4-5.6-.7-8.4-.9-2.8-.2-5.6-.3-8.4-.3-2.8 0-5.6.1-8.4.3-2.8.2-5.6.5-8.4.9 2.7-1 5.5-1.7 8.3-2.1 2.8-.4 5.7-.6 8.6-.7 2.9 0 5.7.2 8.6.6 2.6.5 5.4 1.2 8.1 2.2"/><path d="m52 15.4c-3.3-.5-6.6-.7-10-.9-3.3-.2-6.6-.3-10-.3-3.3 0-6.6.1-10 .3-3.3.2-6.6.5-10 .9 3.2-1 6.5-1.7 9.8-2.1 3.3-.4 6.7-.6 10.1-.6 3.4 0 6.7.2 10.1.6 3.4.4 6.8 1.1 10 2.1"/><path d="m52 19.7c-3.3-.4-6.7-.6-10-.7-3.3-.2-6.6-.3-9.9-.2-3.3 0-6.6.1-10 .2-3.3.2-6.6.4-10 .7 3.2-.9 6.5-1.5 9.9-1.9 3.3-.4 6.7-.6 10-.6 3.4 0 6.7.2 10 .6 3.4.4 6.7 1 10 1.9"/><path d="m51.9 23.9c-3.3-.2-6.7-.4-10-.5-3.3-.1-6.6-.2-9.9-.2-3.3 0-6.6.1-9.9.2-3.3.1-6.6.3-10 .5 3.2-.8 6.6-1.3 9.9-1.7 3.3-.3 6.7-.5 10-.5 3.3 0 6.7.2 10 .5 3.3.4 6.6.9 9.9 1.7"/><path d="m52 28.1l-10-.1c-3.3 0-6.6-.1-9.9 0-3.3 0-6.6 0-9.9.1l-10 .1c3.3-.6 6.6-1 9.9-1.3 3.3-.3 6.7-.4 10-.4 3.3 0 6.7.1 10 .4 3.3.1 6.6.5 9.9 1.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ef.svg b/riot/emojione/svg/1f3ef.svg new file mode 100644 index 0000000..f4ba335 --- /dev/null +++ b/riot/emojione/svg/1f3ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b2c1c0" d="m56 48h-48l-8 16h64z"/><g fill="#f9f3d9"><path d="m8 40h48v8h-48z"/><path d="m13 24h38v8h-38z"/><path d="m18 8h28v8h-28z"/></g><g fill="#d33b23"><path d="M18,16c0,2.2-4.7,4-8,4c-3,0-5-1-5-1c0,2.2,2.9,5,6.5,5H32v-8H18z"/><path d="M13,32c0,2.2-4.7,4-8,4c-3,0-5-1-5-1c0,2.2,2.9,5,6.5,5H32v-8H13z"/><path d="M51,32c0,2.2,4.7,4,8,4c3,0,5-1,5-1c0,2.2-2.9,5-6.5,5H32v-8H51z"/><path d="M46,16c0,2.2,4.7,4,8,4c3,0,5-1,5-1c0,2.2-2.9,5-6.5,5H32v-8H46z"/><path d="M41,0c0,2.2,4.7,4,8,4c3,0,5-1,5-1c0,2.2-2.9,5-6.5,5H32V0H41z"/><path d="M23,0c0,2.2-4.7,4-8,4c-3,0-5-1-5-1c0,2.2,2.9,5,6.5,5H32V0H23z"/></g><g fill="#3e4347"><path d="m24 26h1v4h-1z"/><path d="m27 26h1v4h-1z"/><path d="m36 26h1v4h-1z"/><path d="m30 26h1v4h-1z"/><path d="m33 26h1v4h-1z"/><path d="m25.5 42h1v4h-1z"/><path d="m19.5 42h1v4h-1z"/><path d="m22.5 42h1v4h-1z"/><path d="m28.5 42h1v4h-1z"/><path d="m26 10h2v4h-2z"/><path d="m36 10h2v4h-2z"/><path d="m31 10h2v4h-2z"/></g><g fill="#fed0ac"><path d="m8 40h8v8h-8z"/><path d="m48 40h8v8h-8z"/><path d="m13 24h8v8h-8z"/><path d="m43 24h8v8h-8z"/></g><g fill="#3e4347"><path d="m51 42h2v4h-2z"/><path d="m11 42h2v4h-2z"/></g><path fill="#f15744" d="m32 16l-11 8h22z"/><g fill="#d3976e"><path d="m18 8h28v2h-28z"/><path d="m21 24h22.1v2h-22.1z"/></g><g fill="#3e4347"><path d="m46 26h2v4h-2z"/><path d="m16 26h2v4h-2z"/></g><path fill="#d3976e" d="m16 40h32v2h-32z"/><g fill="#89664c"><path d="m8 40h8v2h-8z"/><path d="m48 40h8v2h-8z"/><path d="m13 24h8v2h-8z"/><path d="m43 24h8v2h-8z"/></g><path fill="#fed0ac" d="M40.1 24 32 18.1 23.9 24z"/><g fill="#3e4347"><path d="m26.5 24h11l-5.5-4z"/><path d="m37.5 42h1v4h-1z"/><path d="m31.5 42h1v4h-1z"/><path d="m34.5 42h1v4h-1z"/><path d="m40.5 42h1v4h-1z"/><path d="m43.5 42h1v4h-1z"/></g><path d="m41 36c-2.7-1.7-3.2-4-9-4-5.8 0-6.6 2.4-9 4-6.1 4-12.2 4-13 4h44c-.8 0-6.7 0-13-4" fill="#f15744"/><path d="m39.1 37c-1.9-1.3-2.9-3-7.1-3-4.2 0-5.3 1.8-7.1 3-4.4 3-8.3 3-8.9 3h32c-.6 0-4.3 0-8.9-3" fill="#fed0ac"/><g fill="#3e4347"><path d="m37.3 38c-1.2-.8-2.7-2-5.3-2-2.6 0-4.2 1.2-5.3 2-2.8 2-4.3 2-4.7 2h20c-.3 0-1.9 0-4.7-2"/><path d="m39 26h1v4h-1z"/></g><path d="m37.7 5c-1.7-1.3-2-3-5.7-3-3.7 0-4.2 1.8-5.7 3-3.9 3-7.8 3-8.3 3h28c-.5 0-4.3 0-8.3-3" fill="#f15744"/><path d="m36.5 5.8c-1.2-.9-1.8-2.2-4.5-2.2-2.7 0-3.4 1.4-4.5 2.2-2.9 2.2-5.3 2.2-5.7 2.2h20.4c-.4 0-2.8 0-5.7-2.2" fill="#fed0ac"/><path d="m35.3 6.5c-.5-.4-1.1-1.1-2-1.3-.4 0-1.3.2-1.3 1.3 0-1.2-1-1.3-1.4-1.3-.9.2-1.5.9-2 1.3-1.8 1.5-2.7 1.5-3 1.5h12.8c-.3 0-1.2 0-3.1-1.5" fill="#3e4347"/><g fill="#62727a"><path opacity=".5" d="m28.5 51.5h-7l-2-3.5h7z"/><path opacity=".5" d="m17.5 55.5h-6.7l-1-3h6.7z"/><path opacity=".5" d="m27.5 60.1h-4l-3-4.1h10z"/><path opacity=".5" d="m47 56h-6l-2-4.1h10z"/><path opacity=".5" d="m8.1 64h8.9l2.1-3.9h-8.9z"/><path opacity=".5" d="m43 64h-8.1l-1.9-3.9h8.1z"/><path opacity=".5" d="m54 60.1h8l-2-4.1h-8z"/></g><g fill="#e8e8e8"><path opacity=".5" d="m57.1 64h-7.8l1.5-4h8.5z"/><path opacity=".5" d="m16 60h-10.5l2.5-4h6z"/><path opacity=".5" d="m36 60h-8.5l2.5-4h8z"/><path opacity=".5" d="m43 52h-8.5l2.5-4h8z"/><path d="m53.2 59.5h-6.9l-1.6-3h6.9l1.6 3m-32.4-3l1.6 3h-6l-1.6-3h6m1 0h7.5l-1.6 3h-4.2l-1.7-3m8.4 0h7l-1.6 3h-7l1.6-3m8 0h5.5l1.6 3h-8.8l1.7-3m16.6-4l1.7 3h-9l1.7-3h5.6m-6.6 0l-1.7 3h-5l-1.7-3h8.4m-9.4 0l1.7 3h-6l-1.7-3h6m-7 0l1.7 3h-10l1.7-3h6.6m-7.6 0l-1.7 3h-4l-1.7-3h7.4m-14.4 0h6l1.7 3h-6l-1.7-3m-1.6 4h5.5l1.6 3h-8.7l1.6-3m54 4l-.5-1h-7.5l-1.6-3h7.6l-.5-1h-2.2l-1.7-3h2.5l-.5-1h-4.2l-2-3.5h-1l2 3.5h-9l2-3.5h-1l-2 3.5h-7l2-3.5h-1l-2 3.5h-5l-2-3.5h-1l2 3.5h-7l-2-3.5h-1l2 3.5h-9l2-3.5h-1l-2 3.5h-4.4l-.5 1h3l1.7 3h-6.2l-.5 1h3.5l-1.6 3h-3.4l-.5 1h7.6l-1.8 3.5h1l1.9-3.5h8l-1.9 3.5h1l1.9-3.5h5.2l1.9 3.5h1l-1.9-3.5h7l1.9 3.5h1l-1.9-3.5h7l1.9 3.5h1l-1.9-3.5h8.8l-1.9 3.5h1l1.9-3.5h7l-1.9 3.5h1l1.9-3.5h2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f0.svg b/riot/emojione/svg/1f3f0.svg new file mode 100644 index 0000000..b0b4b12 --- /dev/null +++ b/riot/emojione/svg/1f3f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m26.5 43v20c0 0 .6 1 1 1s1-1 1-1v-20h-2"/><path d="m31.5 43h-1v20c0 0 .6 1 1 1s1-1 1-1v-20h-1"/><path d="m34.5 43v20c0 0 .6 1 1 1s1-1 1-1v-20h-2"/><path d="m23 51h17v2h-17z"/><path d="m23 47h17v2h-17z"/><path d="m23 55h17v2h-17z"/><path d="m23 59h17v2h-17z"/><path d="m12.5 11c0 .6-.4 1-1 1-.6 0-1-.4-1-1v-10c0-.6.4-1 1-1 .6 0 1 .4 1 1v10"/><path d="m32.5 11c0 .6-.5 1-1 1-.5 0-1-.4-1-1v-10c0-.6.5-1 1-1 .5 0 1 .4 1 1v10"/><path d="m52.5 11c0 .6-.5 1-1 1-.5 0-1-.4-1-1v-10c0-.6.5-1 1-1 .5 0 1 .4 1 1v10"/></g><g fill="#b2c1c0"><path d="m22 22h18v16h-18z"/><path d="m6 18h10v20h-10z"/><path d="m46 18h10v20h-10z"/></g><g fill="#42ade2"><path d="m31.5 10l-12 12h24z"/><path d="m11.5 10l-8 8h16z"/><path d="m51.5 10l-8 8h16z"/></g><g fill="#3e4347"><circle cx="31.5" cy="29" r="3"/><path d="m28.5 29h6v9h-6z"/></g><path d="m57.5 32h-4c-.5 0-1 .5-1 1v4c0 .5-.5 1-1 1h-4c-.5 0-1-.5-1-1v-4c0-.5-.5-1-1-1h-4c-.5 0-1 .5-1 1v4c0 .5-.5 1-1 1h-4c-.5 0-1-.5-1-1v-4c0-.5-.5-1-1-1h-4c-.5 0-1 .5-1 1v4c0 .5-.5 1-1 1h-4c-.5 0-1-.5-1-1v-4c0-.5-.5-1-1-1h-4c-.5 0-1 .5-1 1v4c0 .5-.5 1-1 1h-4c-.6 0-1-.5-1-1v-4c0-.5-.4-1-1-1h-4c-.6 0-1 .5-1 1v4c0 .5.3 1.3.7 1.7l.6.6c.4.4.7 1.2.7 1.7v22c0 .5.4 1 1 1h16v-12c0-4.4 3.6-8 8-8s8 3.6 8 8v12h16c.5 0 1-.5 1-1v-22c0-.5.3-1.3.7-1.7l.6-.6c.4-.4.7-1.2.7-1.7v-4c0-.5-.5-1-1-1" fill="#dae3ea"/><g fill="#3e4347"><path d="m9.5 22h4v6h-4z"/><circle cx="11.5" cy="22" r="2"/><path d="m49.5 22h4v6h-4z"/><circle cx="51.5" cy="22" r="2"/></g><path d="m10 44h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.6 0 1-.5 1-1v-2c0-.5-.4-1-1-1" fill="#b2c1c0"/><g fill="#42ade2"><path d="m20.5 6.6c-2.7-1.5-5.3 1.5-8 0 0-1.7 0-3.4 0-5.1 2.7 1.5 5.3-1.5 8 0-.7.5-1.3 1.2-2 2.1.7.8 1.3 1.7 2 3"/><path d="m40.5 6.6c-2.7-1.5-5.3 1.5-8 0 0-1.7 0-3.4 0-5.1 2.7 1.5 5.3-1.5 8 0-.7.5-1.3 1.2-2 2.1.7.8 1.3 1.7 2 3"/><path d="m60.5 6.6c-2.7-1.5-5.3 1.5-8 0 0-1.7 0-3.4 0-5.1 2.7 1.5 5.3-1.5 8 0-.7.5-1.3 1.2-2 2.1.7.8 1.3 1.7 2 3"/></g><g fill="#b2c1c0"><path d="m13 50h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.6 0 1-.5 1-1v-2c0-.5-.4-1-1-1"/><path d="m21.8 60h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m19.7 55h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m21.8 47h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m19 39.9h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m10 56h-4c-.6 0-1 .5-1 1v2c0 .5.4 1 1 1h4c.6 0 1-.5 1-1v-2c0-.5-.4-1-1-1"/><path d="m57 50h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m54 56h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m49.5 44.7h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.6-.5-1-1-1"/><path d="m45.5 51.5h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m47.4 60h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/><path d="m56.5 39.2h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.6-.5-1-1-1"/><path d="m41 40.2h-4c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-2c0-.6-.5-1-1-1"/></g><g fill="#e8e8e8"><path d="m13.5 27.9h-4c-.6 0-1 .5-1 1v.2c0 .5.4 1 1 1h4c.6 0 1-.5 1-1v-.2c0-.6-.4-1-1-1"/><path d="m53.5 27.9h-4c-.5 0-1 .5-1 1v.2c0 .5.5 1 1 1h4c.5 0 1-.5 1-1v-.2c0-.6-.5-1-1-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f3-1f308.svg b/riot/emojione/svg/1f3f3-1f308.svg new file mode 100644 index 0000000..e082546 --- /dev/null +++ b/riot/emojione/svg/1f3f3-1f308.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="m52.382 5.075c-12.245-1.872-28.245 22.961-43.169 15.422-.582-1.575-1.143-3.158-1.725-4.73 17.589 3.338 25.582-18.762 43.17-15.422.584 1.572 1.14 3.156 1.724 4.73"/><path fill="#ff8736" d="m54.105 9.804c-10.343-2.018-31.593 21.649-43.167 15.423-.585-1.573-1.14-3.157-1.725-4.73 17.589 3.338 25.581-18.763 43.169-15.422.584 1.572 1.14 3.156 1.723 4.729"/><path fill="#ffce31" d="m55.83 14.535c-10.068-1.791-28.744 23.715-43.168 15.422-.585-1.573-1.142-3.157-1.725-4.73 17.588 3.339 25.583-18.76 43.168-15.422.585 1.574 1.142 3.157 1.725 4.73"/><path fill="#83bf4f" d="m57.556 19.265c-9.711-1.521-31.086 25.813-43.171 15.422-.584-1.572-1.139-3.157-1.723-4.73 17.585 3.341 25.579-18.762 43.168-15.422.583 1.573 1.142 3.156 1.726 4.73"/><path fill="#275fd9" d="m59.278 23.995c-11.058-1.834-30.683 26.458-43.169 15.423-.584-1.574-1.144-3.156-1.725-4.73 17.588 3.338 25.582-18.761 43.171-15.422.583 1.573 1.141 3.155 1.723 4.729"/><path fill="#9028e0" d="m61 28.726c-17.583-3.34-25.579 18.761-43.166 15.421-.584-1.572-1.142-3.156-1.725-4.729 17.588 3.338 25.581-18.762 43.169-15.423.583 1.575 1.142 3.158 1.722 4.731"/><g fill="#3e4347"><circle cx="5.168" cy="13.336" r="2.168"/><path d="m7.04 14.49l-2.56.929 17.706 48.581h2.896z"/><path transform="matrix(.9399-.3414.3414.9399-4.8923 2.941)" d="m3.742 14.83h4.337v1.082h-4.337z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f3.svg b/riot/emojione/svg/1f3f3.svg new file mode 100644 index 0000000..d1421b8 --- /dev/null +++ b/riot/emojione/svg/1f3f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.2.7c-16.6-5.2-22.4 19.4-39 14.2 3 8.3 6 16.5 9 24.8 16.6 5.2 22.4-19.4 39-14.2-3-8.3-6-16.5-9-24.8" fill="#d0d0d0"/><path fill="#3e4347" d="m6.8 15.8l17.6 48.2h1l-17.7-48.6.6-.2 17.7 48.8h1l-17.9-49.1z"/><path fill="#94989b" d="m8.3 15.2l-.6.2 17.7 48.6h.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f4.svg b/riot/emojione/svg/1f3f4.svg new file mode 100644 index 0000000..0e6202d --- /dev/null +++ b/riot/emojione/svg/1f3f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.2.7c-16.6-5.2-22.4 19.4-39 14.2 3 8.3 6 16.5 9 24.8 16.6 5.2 22.4-19.4 39-14.2-3-8.3-6-16.5-9-24.8" fill="#3e4347"/><g fill="#94989b"><path d="m7.7 15.4l-.9.4 17.6 48.2h1z"/><path d="M27 64 9.1 14.9 8.3 15.2 26 64z"/></g><g fill="#d0d0d0"><path d="m7.7 15.4l.6-.2z"/><path d="m26 64l-17.7-48.8-.6.2 17.7 48.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f5.svg b/riot/emojione/svg/1f3f5.svg new file mode 100644 index 0000000..b6576ae --- /dev/null +++ b/riot/emojione/svg/1f3f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m46.5 31.2l-2.8-8.3c0 0 8.5-12.3 5.3-14.6-3.2-2.3-12.6 9.5-12.6 9.5h-9c0 0-9.4-11.7-12.6-9.5s5.3 14.6 5.3 14.6l-2.8 8.3c0 0-14.3 5.1-13.1 8.8 1.2 3.7 15.9-.4 15.9-.4l7.3 5.2c0 0 .5 14.9 4.5 14.9s4.5-14.9 4.5-14.9l7.3-5.2c0 0 14.7 4.1 15.9.4 1.3-3.7-13.1-8.8-13.1-8.8" fill="#a01a5d"/><g fill="#e84d88"><path d="m41.8 9.9c0 10-4.4 18.2-9.9 18.2s-9.9-8.1-9.9-18.2 7.2-4.2 9.9-4.2c2.7 0 9.9-5.8 9.9 4.2"/><path d="m13 16.5c9.8 3.1 16.4 9.7 14.7 14.8-1.7 5.1-11 6.6-20.8 3.5-9.8-3.1-1.9-8-1.1-10.5.8-2.4-2.6-10.9 7.2-7.8"/><path d="m10.5 45.3c6-8.1 14.5-12.2 18.9-9 4.4 3.1 3.1 12.2-3 20.4-6 8.1-8.4-.7-10.5-2.2-2.1-1.6-11.5-1.1-5.4-9.2"/><path d="m37.8 56.5c-6-8.1-7.4-17.2-3-20.4 4.4-3.1 12.9.9 18.9 9 6 8.1-3.3 7.6-5.4 9.1-2.1 1.6-4.5 10.4-10.5 2.3"/><path d="m57.1 34.6c-9.8 3.1-19.1 1.5-20.8-3.5-1.6-5.1 5-11.7 14.7-14.8 9.8-3.1 6.4 5.4 7.2 7.9.8 2.4 8.7 7.3-1.1 10.4"/></g><ellipse cx="32" cy="32.4" rx="3.8" ry="3.7" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f7.svg b/riot/emojione/svg/1f3f7.svg new file mode 100644 index 0000000..372a35f --- /dev/null +++ b/riot/emojione/svg/1f3f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.1 12.9h-10.1l-6.1 6.1v10.1l30.9 34.9 20.2-20.2-34.9-30.9m-6.4 9.8c-.9.9-2.4.9-3.4 0-.9-.9-.9-2.4 0-3.4.9-.9 2.4-.9 3.4 0 .9 1 .9 2.5 0 3.4" fill="#f2b200"/><path d="m21.9 20.8c-.3-1.3-.9-2.6-1.6-3.7-1.7-2.8-4.1-5.1-6.9-6.8-3.8-2.2-8.1-3.2-12.5-3.6-.5 0-.9.5-.9.9 0 .5.4.9.9.9 4.7.4 9.5 1.7 13.4 4.5 1.1.8 2.4 2.1 3.3 3.3.2.2-.1-.2 0 .1 0 .1.1.1.1.2.1.1.2.3.3.4.2.3.4.5.5.8.3.5.5.9.8 1.4.1.1.1.3.2.4 0 .1.1.1.1.2.1.2.2.5.2.7.1.2.1.4.2.6.3 1.4 2.2.9 1.9-.3" fill="#94989b"/><path d="m15.3 16.6c0 0-.1-.1-.1-.1-.5-.4-.9-.8-1.3-1.3-.9-1-1.7-2.3-2.3-3.6-1.7-3.3-2.6-7-2.9-10.6-.1-.6-.5-1-1.1-1-.5 0-1 .4-.9.9.3 4 1.4 8 3.2 11.6.7 1.4 1.6 2.8 2.6 4 .4.5.9 1 1.4 1.4l1.4-1.3" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f8.svg b/riot/emojione/svg/1f3f8.svg new file mode 100644 index 0000000..c9e2b40 --- /dev/null +++ b/riot/emojione/svg/1f3f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 25.3l1.8 1.8-1.8 1.8c.4.2.9.4 1.3.5l1.4-1.4 1.8 1.8c.7 0 1.3-.1 2-.2l1.6-1.6.9.9c.4-.1.9-.3 1.3-.5l-1.3-1.3 1.8-1.8 1.9 1.9c.4-.2.7-.5 1.1-.7l-2.1-2.1 1.8-1.8 2.2 2.2c.2-.1.3-.3.5-.4.2-.2.3-.3.4-.5l-2.2-2.2 1.8-1.8 2.1 2.1c.3-.4.5-.7.7-1.1l-2-1.9 1.8-1.8 1.3 1.3c.2-.4.4-.9.5-1.3l-.9-.9 1.6-1.6c.1-.7.2-1.3.2-2l-1.8-1.7 1.4-1.4c-.1-.5-.3-.9-.5-1.3l-1.8 1.8-1.8-1.8 2.2-2.2c-.1-.2-.3-.3-.4-.5-.2-.2-.3-.3-.5-.4l-2.2 2.2-1.8-1.8 1.8-1.8c-.4-.2-.9-.4-1.3-.5l-1.4 1.4-1.8-1.8c-.7 0-1.3.1-2 .2l-1.6 1.6-.9-.9c-.4.1-.9.3-1.3.5l1.3 1.3-1.7 1.8-1.9-1.9c-.4.2-.7.5-1.1.7l2.1 2.1-1.8 1.8-2.3-2.2c-.2.1-.3.3-.5.4s-.3.3-.4.5l2.2 2.2-1.8 1.8-2.1-2.1c-.3.4-.5.7-.7 1.1l1.9 1.9-1.8 1.8-1.3-1.3c-.2.4-.4.9-.5 1.3l.9.9-1.5 1.6c-.1.7-.2 1.3-.2 2l1.8 1.8-1.4 1.4c.1.5.3.9.5 1.3l1.8-1.8 1.8 1.8-2.2 2.2c.1.2.3.3.4.5.2.1.3.3.5.4l2.2-2.3m18.8-13.4l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.7 2.7l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.7 2.7l1.8 1.8-1.8 1.7-1.8-1.8 1.8-1.7m-2.7 2.6l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.7 2.7l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.6 2.7l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m10.7-16.1l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.7 2.7l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.7 2.7l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.7 2.7l1.8 1.8-1.8 1.8-1.8-1.9 1.8-1.7m-2.6 2.6l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-2.7 2.7l1.8 1.8-1.8 1.8-1.8-1.8 1.8-1.8m-5.4-1.8l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.6l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.6-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m-10.7 16.1l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.6-2.6l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8m2.7-2.7l-1.8-1.8 1.8-1.8 1.8 1.8-1.8 1.8" fill="#e8e8e8"/><g fill="#b2c1c0"><path d="m36 28c-5.2-5.2-4.4-13.5 1.8-19.7 6.7-6.7 16.7-8.3 21.5-3.6 4.8 4.8 3.1 14.8-3.6 21.5-6.2 6.2-14.5 7-19.7 1.8m21.5-21.5c-3.7-3.7-12.3-2-17.9 3.6-5.2 5.2-5.9 12-1.8 16.1 4.2 4.1 10.9 3.4 16.1-1.8 5.6-5.6 7.3-14.1 3.6-17.9"/><path transform="matrix(.7075-.7067.7067.7075-16.3641 30.6852)" d="m17.6 33.8h22.7v2.5h-22.7z"/></g><path d="m7.3 61.4c0 0 .8-1.9 1.3-2.4 5.4-5.4 9.8-9.8 9.8-9.8l3.4-5.1-1.8-1.9-5.1 3.4c0 0-4.5 4.5-9.8 9.8-.5.5-2.4 1.3-2.4 1.3-.6.3-.7.9-.3 1.4l3.6 3.6c.4.5 1 .4 1.3-.3" fill="#3e4347"/><g fill="#b2c1c0"><path d="m35.3 25.1l-2.7 2.7c-1 1-1 2.6 0 3.6 1 1 2.6 1 3.6 0l2.7-2.7-3.6-3.6"/><path opacity=".5" d="m13 47.4l-.8.9 5.3 1.8z"/><path opacity=".5" d="m11.3 49.2l-.9.9 5.3 1.7z"/><path opacity=".5" d="m9.5 51l-.9.8 5.3 1.8z"/><path opacity=".5" d="m7.7 52.7l-.9.9 5.4 1.8z"/><path opacity=".5" d="m5.9 54.5l-.9.9 5.4 1.8z"/><path opacity=".5" d="m16.6 47.4l-1.3-1.4 5.1-3.3.9.9z"/></g><path d="m39.3 39.3c-1.9 1.9-1.9 5 0 7l7-7c-1.9-1.9-5-1.9-7 0" fill="#e8e8e8"/><path transform="matrix(.7071-.7071.7071.7071-18.1019 43.7008)" fill="#ed4c5c" d="m38.8 42.5h9.9v2.5h-9.9z"/><path d="m49.8 42.8l-1.7-1.7-7 7 1.7 1.7 5.3 12.2 1.7-1.7-1-2.4 1.7-1.7 1.5 2 1.7-1.7-1.5-2 1.7-1.7 1.9 1.6 1.7-1.7-1.9-1.6 2.1-2.1 2.4 1 1.7-1.7-12-5.5m-1.6 5.1l-.4.4-1.5-2 1.9 1.6m.8 6.2l-1.3 1.3-1-2.4.9-.9 1.4 2m-2.9-4l-.4.4-1-2.4 1.4 2m4.7 2.2l-1.5-2 .9-.9 1.9 1.6-1.3 1.3m-2.7-7.7l2.4 1-.5.5-1.9-1.5m5.7 4.7l-1.9-1.6 1-1 2.4 1-1.5 1.6" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3f9.svg b/riot/emojione/svg/1f3f9.svg new file mode 100644 index 0000000..e73e45c --- /dev/null +++ b/riot/emojione/svg/1f3f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d3976e"><path d="m14.3 20.4c-12.5 12.5-5.2 28-2.9 33 .4.9.6 1.7.7 2.4-.9-.1-2.1.3-3.2 1.2-1.6 1.3-.9 3.4 0 4.2.6.6 1.2.9 2.7.3 2.3-.9 7.5-4.3 4.9-10.1-7.5-16.6 3-26.8 3-26.8l-4.8-4.6-.4.4"/><path d="m57.1 8.9c-.9 1.1-1.3 2.3-1.2 3.2-.7-.1-1.5-.3-2.4-.7-5.1-2.3-20.5-9.6-33 2.9l-.5.4 4.8 4.8c0 0 10.3-10.5 26.8-3 5.7 2.6 9.1-2.7 10-4.9.7-1.6.4-2.1-.3-2.7-.8-.9-2.8-1.7-4.2 0"/></g><path transform="matrix(.7071-.7071.7071.7071-8.18 19.7517)" fill="#fed0ac" d="m16 16.4h7.4v6.7h-7.4z"/><g fill="#89664c"><path d="m22.9 21.4l-4.8-4.8.8-.8 4.8 4.8z"/><path d="m16.6 18.1l4.8 4.8-.8.8-4.8-4.8z"/><path d="m11.7 59.3c.8-.8.8-2.6.4-3.4-.4 0-.8 0-1.2.1 1.3-.2.2 3.6-.3 2.8-.6-.8-.6-.2-.6-.1.1.5.5 1.8 1.7.6"/><path d="m59.3 11.7c-.8.8-2.6.8-3.4.4 0-.4 0-.7.1-1.2-.2 1.3 3.6.2 2.8-.3-.8-.6-.2-.6-.1-.6.5.1 1.8.5.6 1.7"/></g><path fill="#b2c1c0" d="m10.2 8.7l-.2-3.2-8-3.5 3.5 8 3.2.2z"/><path d="m49.6 48.1l-39.4-39.3-1.5 1.5 39.3 39.3c.2.2.7 0 1.1-.4.5-.4.7-.9.5-1.1" fill="#d3976e"/><path d="m51.5 42.5c-.3-.3-2.2.4-2.2.4s1.6-.8 1.5-1.1c-.1-.3-.6-.9-.9-.9-.7-.1-3 .8-3 .8s2.3-.8 2.2-1.5c0-.3-.8-.8-.8-.8-2.5 1.2-6 1.5-6 1.5l6.4 6.4c0 0 5.9-1.6 5-2.5-.8-.8-1.3-1.3-2.2-2.3" fill="#ed4c5c"/><path d="m48 46.5c2.1-.6 4.2-1.4 5.4-2.1-.2-.2-.5-.5-.8-.8-1.1.6-3.3 1.4-5.5 2l.9.9" fill="#ffce31"/><path d="m45.5 40.2c-1.7.4-3.2.5-3.2.5l6.4 6.4c0 0 1.5-.4 2.9-.9-7.5-1.9-6.1-6-6.1-6" opacity=".5" fill="#3e4347"/><path d="m42.5 51.5c-.3-.3.4-2.2.4-2.2s-.8 1.6-1.1 1.5c-.3-.1-.9-.6-.9-.9-.1-.7.7-3 .7-3s-.8 2.3-1.5 2.2c-.3 0-.8-.8-.8-.8 1.2-2.5 1.5-6 1.5-6l6.4 6.4c0 0-1.5 6-2.5 5-.8-.7-1.3-1.3-2.2-2.2" fill="#ed4c5c"/><path d="m46.5 48c-.6 2.1-1.4 4.2-2.1 5.4-.2-.2-.5-.5-.8-.8.6-1.1 1.4-3.3 2-5.5l.9.9" fill="#ffce31"/><path d="m40.2 45.5c.4-1.7.5-3.2.5-3.2l6.4 6.4c0 0-.4 1.5-.9 2.9-1.9-7.5-6-6.1-6-6.1" opacity=".5" fill="#3e4347"/><path fill="#b2c1c0" d="m12.2 61.3l35.7-11.9-.9-.8-31.8 10.6z"/><path opacity=".5" fill="#3e4347" d="m46.9 49.7l1-.3-.9-.8-1 .3z"/><path fill="#b2c1c0" d="m61.3 12.2l-2.1 3-10.6 31.9.8.8z"/><g fill="#3e4347"><path opacity=".5" d="m48.9 46.1l-.3 1 .8.8.3-1z"/><path opacity=".5" d="m8.7 10.2l1.5-1.5v-1l-4.1.6-4.1-6.3 3.5 8z"/></g><path fill="#e8e8e8" d="m7.3 8.1l1.6.8-.8-1.6 1.4-.8-2.1.1-3.7-2.9 2.9 3.7-.1 2.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3fa.svg b/riot/emojione/svg/1f3fa.svg new file mode 100644 index 0000000..bf02dbd --- /dev/null +++ b/riot/emojione/svg/1f3fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b95a1e" d="m25 53h14l3-3h-20z"/><g fill="#3e4347"><path d="m22.6 24.9l-5.1 4.8v-8.6c0 0 2.1-1.1 2.1.8 0 2.1 3 3 3 3"/><path d="m19.9 11.1c2.3 0 3.7-2.2 3.7-4.1 0-3.1-2.3-4.9-5.3-4.9-2.3 0-5.6 2.3-4.6 6.9 1.1 5.2 2.2 14.8 2.2 14.8l1.9-.3c-.2-8.6-.8-13-.8-13s1.2.6 2.9.6"/></g><path d="m19.1 7.4c-.1-.2-.2-.4-.3-.5-.1-.1-.3 0-.4.1-.3.3-.4.6-.2.9.3.6 1.1.7 1.7.4.6-.2.7-1 .6-1.7-.1-.8-.4-1.3-1-1.6-.6-.4-1.3-.5-1.9-.2-.7.3-1.2.8-1.5 1.5-.3.7-.4 1.5-.2 2.2.1.8.5 1.5 1.2 2-.8-.2-1.3-1-1.7-1.8-.3-.8-.3-1.7 0-2.6.3-.9 1-1.6 1.8-2 .9-.5 2-.3 2.8.2.4.3.8.6 1 1 .3.5.4.9.4 1.4 0 .5 0 .9-.2 1.4-.1.2-.2.5-.4.7-.2.2-.4.3-.7.4-.4.2-1 .2-1.4.1-.5-.2-.9-.5-1-1-.1-.5.2-1 .5-1.2.1-.1.2-.1.3-.1.1 0 .3 0 .4.1.1-.1.2.1.2.3" fill="#dbb471"/><g fill="#3e4347"><path d="m41.4 24.9l5.1 4.8v-8.6c0 0-2.1-1.1-2.1.8 0 2.1-3 3-3 3"/><path d="m44.1 11.1c-2.3 0-3.7-2.2-3.7-4.1 0-3.1 2.3-4.9 5.3-4.9 2.3 0 5.6 2.3 4.6 6.9-1.1 5.2-2.2 14.8-2.2 14.8l-1.9-.3c.2-8.6.8-13 .8-13s-1.2.6-2.9.6"/></g><path d="m44.9 7.4c0-.2 0-.4.2-.6.1-.1.2-.2.4-.1.1 0 .2.1.3.1.3.2.7.7.5 1.2-.1.5-.5.9-1 1-.5.2-1 .1-1.4-.1-.2-.1-.4-.2-.7-.4-.2-.1-.3-.3-.4-.5-.2-.5-.2-.9-.2-1.4 0-.5.1-.9.4-1.4.3-.4.6-.8 1-1 .8-.5 1.9-.6 2.8-.2.8.4 1.5 1.2 1.8 2 .3.9.2 1.8 0 2.6-.3.8-.8 1.6-1.7 1.8.7-.4 1.1-1.2 1.2-2 .2-.8.1-1.5-.2-2.2-.3-.7-.8-1.2-1.5-1.5-.6-.3-1.3-.2-1.9.2-.6.4-.9.9-1 1.6-.1.7.1 1.4.6 1.7.6.3 1.4.2 1.7-.4.1-.3 0-.6-.2-.9-.1-.1-.3-.2-.4-.1-.1.2-.2.4-.3.6" fill="#dbb471"/><path fill="#3e4347" d="m18.7 11h26.7v2h-26.7z"/><path fill="#dbb471" d="m43.1 16h-22.2l-1-3h24.2z"/><g fill="#3e4347"><path d="m41.7 18h-19.4l-.9-2h21.2z"/><path d="m22.3 60h19.4v2h-19.4z"/></g><path fill="#dbb471" d="m23.9 57h16.2l.7 3h-17.6z"/><g fill="#b95a1e"><path d="m41.3 18h-18.6c0 0 .7 2.4.7 3.2s-.7 3.1-.7 3.1h18.6c0 0-.7-2.3-.7-3.1s.7-3.2.7-3.2"/><path d="m47.1 33.2c0 4.4-1.7 10.4-4.1 14.8h-22c-2.4-4.4-4.1-10.4-4.1-14.8 0-9.4 6.8-11.2 15.1-11.2 8.3 0 15.1 1.8 15.1 11.2"/></g><g fill="#3e4347"><path d="m22 12.3h1.2v3.7h-1.2z"/><path d="m24.4 12.3h1.2v3.7h-1.2z"/><path d="m26.7 12.3h1.2v3.7h-1.2z"/><path d="m29.1 12.3h1.2v3.7h-1.2z"/><path d="m31.4 12.3h1.2v3.7h-1.2z"/><path d="m33.8 12.3h1.2v3.7h-1.2z"/><path d="m36.1 12.3h1.2v3.7h-1.2z"/><path d="m38.4 12.3h1.2v3.7h-1.2z"/><path d="m40.8 12.3h1.2v3.7h-1.2z"/><path d="m24.9 57h1.1v3.7h-1.1z"/><path d="m27.1 57h1.1v3.7h-1.1z"/><path d="m29.3 57h1.1v3.7h-1.1z"/><path d="m31.5 57h1.1v3.7h-1.1z"/><path d="m33.6 57h1.1v3.7h-1.1z"/><path d="m35.8 57h1.1v3.7h-1.1z"/><path d="m38 57h1.1v3.7h-1.1z"/><path d="m18.5 26l-1.1 3h29.1l-1-3z"/><path d="m22 50h20l1-2h-22z"/><path transform="matrix(.7073-.7069.7069.7073-6.2727 27.3214)" d="m28.6 20h2.4v2.4h-2.4z"/><path transform="matrix(.7074-.7068.7068.7074-5.0203 30.3445)" d="m32.9 20h2.4v2.4h-2.4z"/><path transform="matrix(.7071-.7071.7071.7071-7.5263 24.3015)" d="m24.4 20h2.4v2.4h-2.4z"/><path transform="matrix(.7069-.7073.7073.7069-3.7574 33.4031)" d="m37.2 20h2.4v2.4h-2.4z"/><path transform="matrix(.7064-.7078.7078.7064-18.9866 24.2058)" d="m18.9 34.2h1.5v1.5h-1.5z"/><path transform="matrix(.7068-.7074.7074.7068-23.6587 26.1257)" d="m18.9 40.9h1.5v1.5h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-21.8489 30.4597)" d="m25.1 40.9h1.5v1.5h-1.5z"/><path transform="matrix(.7068-.7074.7074.7068-17.175 28.5419)" d="m25.1 34.3h1.5v1.5h-1.5z"/><path transform="matrix(.7069-.7073.7073.7069-20.4137 27.3264)" d="m21.3 36.8h3v3h-3z"/><path transform="matrix(.7074-.7068.7068.7074-20.044 34.7884)" d="m31.3 40.9h1.5v1.5h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-15.3699 32.8752)" d="m31.3 34.3h1.5v1.5h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-18.609 31.6675)" d="m27.4 36.8h3v3h-3z"/><path transform="matrix(.7071-.7071.7071.7071-18.2431 39.165)" d="m37.4 40.9h1.5v1.5h-1.5z"/><path transform="matrix(.7068-.7074.7074.7068-13.5652 37.2511)" d="m37.4 34.2h1.5v1.5h-1.5z"/><path transform="matrix(.707-.7072.7072.707-16.806 36.0264)" d="m33.6 36.8h3v3h-3z"/><path transform="matrix(.7068-.7074.7074.7068-16.439 43.5447)" d="m43.6 40.9h1.5v1.5h-1.5z"/><path transform="matrix(.7064-.7078.7078.7064-11.7586 41.6333)" d="m43.6 34.2h1.5v1.5h-1.5z"/><path transform="matrix(.7071-.7071.7071.7071-15.0033 40.3727)" d="m39.8 36.8h3v3h-3z"/><path d="m39 53h-14c0 0 .4 1.3.4 1.8 0 .7-.6 2.2-.6 2.2h14.2c0 0-.6-1.5-.6-2.2.2-.5.6-1.8.6-1.8"/></g><g fill="#dbb471"><path d="m16.9 32c0 .3 0 .7 0 1h30.2c0-.3 0-.7 0-1h-30.2"/><path d="m19.6 45h24.9c.1-.3.3-.7.4-1h-25.7c.1.4.2.7.4 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3fb.svg b/riot/emojione/svg/1f3fb.svg new file mode 100644 index 0000000..95d9113 --- /dev/null +++ b/riot/emojione/svg/1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle fill="#ffe1bd" cx="32" cy="32" r="30"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3fc.svg b/riot/emojione/svg/1f3fc.svg new file mode 100644 index 0000000..98674ab --- /dev/null +++ b/riot/emojione/svg/1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle fill="#fed0ac" cx="32" cy="32" r="30"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3fd.svg b/riot/emojione/svg/1f3fd.svg new file mode 100644 index 0000000..3216c0c --- /dev/null +++ b/riot/emojione/svg/1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle fill="#d6a57c" cx="32" cy="32" r="30"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3fe.svg b/riot/emojione/svg/1f3fe.svg new file mode 100644 index 0000000..f4e86c3 --- /dev/null +++ b/riot/emojione/svg/1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle fill="#b47d56" cx="32" cy="32" r="30"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f3ff.svg b/riot/emojione/svg/1f3ff.svg new file mode 100644 index 0000000..b99182a --- /dev/null +++ b/riot/emojione/svg/1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle fill="#8a6859" cx="32" cy="32" r="30"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f400.svg b/riot/emojione/svg/1f400.svg new file mode 100644 index 0000000..8dcadea --- /dev/null +++ b/riot/emojione/svg/1f400.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.9 46c-.7.2-1.5.6-2.2 1s-1.4.9-2 1.4c-.6.5-1.1 1.1-1.5 1.7-.4.6-.7 1.2-.8 1.8-.1.6 0 1.2.3 1.8.3.6.8 1.2 1.4 1.8.3.3.6.5 1 .8.3.2.7.5 1.1.7.7.4 1.5.8 2.3 1.1 1.6.6 3.4.9 5.2 1.2 1.8.3 3.7.5 5.5.7 1.9.2 3.7.5 5.6.8 1.8.3 3.7.7 5.5 1.1-1.9-.2-3.7-.4-5.6-.6-1.9-.1-3.7-.2-5.6-.3-1.9-.1-3.7-.1-5.6-.2-1.9-.1-3.8-.3-5.7-.8-1-.3-1.9-.6-2.8-1-.5-.2-.9-.4-1.3-.7-.4-.3-.9-.5-1.3-.9-.8-.6-1.6-1.4-2.3-2.4-.3-.5-.6-1.1-.7-1.7-.2-.6-.2-1.2-.2-1.8 0-.6.1-1.2.3-1.8.2-.6.4-1.1.7-1.6.5-1 1.2-1.9 1.9-2.6.7-.8 1.5-1.5 2.4-2.1.9-.6 1.8-1.2 2.8-1.6l1.6 4.2" fill="#f29a2e"/><ellipse cx="44.6" cy="12.4" rx="10.4" ry="10.4" fill="#999a9c"/><ellipse cx="44.5" cy="13.6" rx="7.7" ry="7.7" fill="#ffc5d3"/><ellipse cx="19.4" cy="12.4" rx="10.4" ry="10.4" fill="#999a9c"/><ellipse cx="19.5" cy="13.6" rx="7.7" ry="7.7" fill="#ffc5d3"/><path d="m50.3 45.9c0-10.2-4-19.5-5.3-22.3-.1-.3-.2-.5-.3-.8-1.8-3.8-5.8-12.2-12.7-12.2-6.9 0-10.9 8.4-12.6 12.2-.1.3-.2.5-.3.8-1.3 2.8-5.3 12.2-5.3 22.3 0 8.4 2.7 10.6 6.9 11 .2.9 1.1 1.6 2.1 1.6h1.5c1.1 0 2-.8 2.2-1.8 1.7-.1 3.6-.3 5.5-.3 1.8 0 3.6.1 5.3.3.1 1 1.1 1.8 2.2 1.8h1.5c1 0 1.9-.7 2.1-1.6 4.4-.3 7.2-2.4 7.2-11" fill="#999a9c"/><g fill="#ffc5d3"><ellipse cx="41.7" cy="33.8" rx="3.2" ry="2.2"/><ellipse cx="22.3" cy="33.8" rx="3.2" ry="2.2"/></g><path d="m34.9 33.8c-.6-.6-2.4-.7-2.9-.7-.5 0-2.3 0-2.9.7-.4.4-.1 1.5 1 2.4.7.6 1.4.8 1.9.8s1.2-.2 1.9-.8c1.1-.9 1.4-2 1-2.4" fill="#3e4347"/><ellipse cx="25.2" cy="26.7" rx="4.6" ry="4.5" fill="#fff"/><ellipse cx="25.2" cy="26.7" rx="3.2" ry="3.1" fill="#3e4347"/><ellipse cx="38.8" cy="26.7" rx="4.6" ry="4.5" fill="#fff"/><g fill="#3e4347"><ellipse cx="38.8" cy="26.7" rx="3.2" ry="3.1"/><path d="m31 39.3c.1-.3.3-.5.5-.7.2-.2.5-.3.7-.4.3-.1.5-.2.8-.2.3 0 .6 0 .8.3-.3 0-.5.2-.7.3-.2.1-.4.2-.7.3-.2.1-.5.2-.7.3-.2 0-.4 0-.7.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f401.svg b/riot/emojione/svg/1f401.svg new file mode 100644 index 0000000..944b4a2 --- /dev/null +++ b/riot/emojione/svg/1f401.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.9 46c-.7.2-1.5.6-2.2 1s-1.4.9-2 1.4c-.6.5-1.1 1.1-1.5 1.7-.4.6-.7 1.2-.8 1.8s0 1.2.3 1.8c.3.6.8 1.2 1.4 1.8.3.3.6.5 1 .8.3.3.7.5 1.1.7.7.4 1.5.8 2.3 1.1 1.6.6 3.4.9 5.2 1.2 1.8.3 3.7.5 5.5.7 1.9.2 3.7.5 5.6.8 1.8.3 3.7.7 5.5 1.1-1.8-.2-3.7-.4-5.6-.6-1.9-.1-3.7-.2-5.6-.3-1.9-.1-3.7-.1-5.6-.2-1.9-.1-3.8-.3-5.7-.8-1-.3-1.9-.6-2.8-1-.5-.2-.9-.5-1.3-.7-.4-.3-.9-.5-1.3-.9-.8-.6-1.6-1.4-2.3-2.4-.3-.5-.6-1.1-.7-1.7-.2-.6-.2-1.2-.2-1.8 0-.6.1-1.2.3-1.8.2-.6.4-1.1.7-1.6.5-1 1.2-1.9 1.9-2.6.7-.8 1.5-1.5 2.4-2.1.9-.6 1.8-1.2 2.8-1.6l1.6 4.2" fill="#fc97b2"/><g fill="#c4c5c6"><path d="m43 51.9c0 4.2-5.5 5.5-11 5.5-5.5 0-11-1.4-11-5.5 0-13.8 8.1-18.1 11-18.1 2.8 0 11 4.2 11 18.1"/><path d="m29.6 56.4c0 1.2-1 2.1-2.2 2.1h-1.5c-1.2 0-2.2-.9-2.2-2.1 0-1.2 1-2.1 2.2-2.1h1.5c1.2 0 2.2.9 2.2 2.1"/><path d="m40.4 56.4c0 1.2-1 2.1-2.2 2.1h-1.5c-1.2 0-2.2-.9-2.2-2.1 0-1.2 1-2.1 2.2-2.1h1.5c1.2 0 2.2.9 2.2 2.1"/></g><ellipse cx="44.6" cy="12.4" rx="10.4" ry="10.4" fill="#b5b5b5"/><ellipse cx="44.5" cy="13.6" rx="7.7" ry="7.7" fill="#ffc5d3"/><ellipse cx="19.4" cy="12.4" rx="10.4" ry="10.4" fill="#b5b5b5"/><ellipse cx="19.5" cy="13.6" rx="7.7" ry="7.7" fill="#ffc5d3"/><path d="m44.6 22.8c-1.7-3.8-5.7-12.2-12.6-12.2-6.9 0-10.9 8.4-12.6 12.2-.9 1.9-1.6 3.8-1.9 6.6-.5 4.9 5.3 9.1 8.5 9.1 1.5 0 3.1 2.9 6 2.9 2.9 0 4.5-2.9 6-2.9 3.2 0 9-4.2 8.5-9.1-.2-2.7-1-4.6-1.9-6.6" fill="#c4c5c6"/><g fill="#ffc5d3"><ellipse cx="41.7" cy="33.8" rx="3.2" ry="2.2"/><ellipse cx="22.3" cy="33.8" rx="3.2" ry="2.2"/></g><path d="m34.9 33.8c-.6-.6-2.4-.7-2.9-.7-.5 0-2.3 0-2.9.7-.4.4-.1 1.5 1 2.4.7.6 1.4.8 1.9.8.5 0 1.2-.2 1.9-.8 1.1-.9 1.4-2 1-2.4" fill="#3e4347"/><ellipse cx="25.2" cy="26.7" rx="4.6" ry="4.5" fill="#fff"/><ellipse cx="25.2" cy="26.7" rx="3.2" ry="3.1" fill="#3e4347"/><ellipse cx="38.8" cy="26.7" rx="4.6" ry="4.5" fill="#fff"/><g fill="#3e4347"><ellipse cx="38.8" cy="26.7" rx="3.2" ry="3.1"/><path d="m31 39.3c.1-.3.3-.5.5-.7.2-.2.5-.3.7-.4.3-.1.5-.2.8-.2.3 0 .6 0 .8.3-.3 0-.5.2-.7.3-.2.1-.4.2-.7.3-.2.1-.5.2-.7.3-.2 0-.4 0-.7.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f402.svg b/riot/emojione/svg/1f402.svg new file mode 100644 index 0000000..491e8d1 --- /dev/null +++ b/riot/emojione/svg/1f402.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.1 38.8c-.6-.9-1.6-1.5-2.8-1.5-1.9 0-3.4 1.5-3.4 3.4v12.3c0 1.9 1.5 3.4 3.4 3.4s3.4-1.5 3.4-3.4v-4.5-7.9c0-.5-.2-1.2-.6-1.8" fill="#896349"/><path d="m38.4 56.6c1.9 0 3.4-1.5 3.4-3.4h-6.8c0 1.8 1.5 3.4 3.4 3.4" fill="#3e4347"/><path d="m42.6 30.5c0 0 10.3-2.6 15.6-9.6" fill="none" stroke="#a87654" stroke-width="1.5" stroke-miterlimit="10"/><g fill="#a87654"><path d="m54.9 24.2c-.1-2.7.3-4.9 1.1-6.2 1.2-.8 3.4-1.2 6-1.2.1 2.7-.3 4.9-1.1 6.2-1.3.8-3.4 1.2-6 1.2"/><path d="m55.3 36.5c0 6.8-6 12.3-13.5 12.3h-23.9v-24.6h23.9c7.5 0 13.5 5.5 13.5 12.3"/><path d="m36.6 38.4c-.9-1.3-2.4-2.2-4-2.2-2.7 0-4.9 2.2-4.9 5v15.8c0 2.8 2.2 5 4.9 5 2.7 0 4.9-2.2 4.9-5v-6.5-9.2c-.1-1.1-.4-2-.9-2.9"/></g><path d="m32.5 62c2.7 0 4.9-2.2 4.9-5h-9.8c.1 2.8 2.2 5 4.9 5" fill="#3e4347"/><path d="m16.5 36.3c-2.7 0-4.9 2.2-4.9 5v5.7 8.5 1.5c0 2.8 2.2 5 4.9 5 2.7 0 4.9-2.2 4.9-5v-15.7c0-2.7-2.2-5-4.9-5" fill="#a87654"/><path d="m16.5 62c-2.7 0-4.9-2.2-4.9-5h9.8c0 2.8-2.2 5-4.9 5" fill="#3e4347"/><path d="m54.5 34.6c-.8-1.2-2.1-2-3.7-2-2.5 0-4.4 2-4.4 4.5v16.3c0 2.5 2 4.5 4.4 4.5 2.5 0 4.5-2 4.5-4.5v-5.9-10.3c0-1-.3-1.8-.8-2.6" fill="#a87654"/><path d="m50.8 58.1c2.5 0 4.5-2 4.5-4.5h-8.9c0 2.4 2 4.5 4.4 4.5" fill="#3e4347"/><path d="m46.9 13.4c.1 4-.5 7.4-1.8 9.3-2 1.2-5.4 1.9-9.7 1.8-.1-4 .5-7.4 1.8-9.4 2-1.1 5.4-1.8 9.7-1.7" fill="#c1875d"/><path d="m44.3 15.9c.1 2.3-.3 4.1-1 5.2-1.1.7-3 1.1-5.4 1-.1-2.3.3-4.1 1-5.2 1.1-.7 3.1-1.1 5.4-1" fill="#3e4347"/><path d="m13.7 24.5c-4.2.1-7.7-.4-9.7-1.7-1.3-1.9-2-5.2-1.9-9.3 4.2-.1 7.6.5 9.7 1.7 1.3 1.9 2 5.2 1.9 9.3" fill="#c1875d"/><path d="m11.1 22.1c-2.4.1-4.3-.3-5.5-1-.7-1.1-1.1-2.9-1.1-5.2 2.4-.1 4.3.3 5.5 1 .8 1.1 1.2 2.9 1.1 5.2" fill="#3e4347"/><path d="m41.5 24.7c0 2.9-4.6 6.9-4.6 11.1 0 0-5.8 6.4-12.4 6.4-6.5 0-12.2-6.2-12.2-6.2 0-4.3-4.7-8.4-4.7-11.3 0-3.8 1.5-7.9 6.1-13.3 1.1-1.2 1.4-2.9 10.9-2.9 9.4 0 10.1 1.3 11.1 2.4 4.4 4.9 5.8 8.7 5.8 13.8" fill="#c1875d"/><path d="m37.7 40.1c0 3.8-3.1 5.6-13.2 5.6s-13.2-1.8-13.2-5.6c0-3.8.3-8.3 13.2-8.3 13-.1 13.2 4.4 13.2 8.3" fill="#db9e75"/><g fill="#3e4347"><ellipse cx="33.3" cy="22.9" rx="3.7" ry="4"/><ellipse cx="15.8" cy="22.9" rx="3.7" ry="4"/></g><g fill="#db9e75"><path d="m33.4 31c-2.2-1.1-5.3.9-7 4.4-1.7 3.5-1.2 7.3 1 8.4 2.2 1.1 5.3-.9 7-4.4 1.6-3.6 1.2-7.3-1-8.4"/><path d="m15.7 31c-2.2 1.1-2.7 4.8-1 8.4 1.6 3.5 4.8 5.5 7 4.4 2.2-1.1 2.7-4.8 1-8.4-1.7-3.5-4.8-5.5-7-4.4"/></g><g fill="#f6c799"><path d="M15.6,10.7C6,13,2,2,2,2C1.5,18,16.8,16.6,17.5,15.4C18.5,13.8,17.8,10.2,15.6,10.7z"/><path d="m33.4 10.7c9.6 2.3 13.6-8.7 13.6-8.7.5 16-14.8 14.6-15.5 13.4-1-1.6-.3-5.2 1.9-4.7"/></g><g fill="#3e4347"><path d="m32.6 33.1c-1.6-.8-3.9.6-5.1 3.2-1.2 2.6-.9 5.3.8 6.1 1.6.8 3.9-.6 5.1-3.2 1.1-2.6.8-5.3-.8-6.1"/><path d="m16.5 33.1c-1.6.8-2 3.5-.8 6.1 1.2 2.6 3.5 4 5.1 3.2 1.6-.8 2-3.5.8-6.1-1.2-2.6-3.5-4-5.1-3.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f403.svg b/riot/emojione/svg/1f403.svg new file mode 100644 index 0000000..9698268 --- /dev/null +++ b/riot/emojione/svg/1f403.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#728389" d="m46.4 39.2h9.9v15.7h-9.9z"/><path d="m51.4 60c2.7 0 4.9-2.2 4.9-5h-9.9c0 2.8 2.3 5 5 5" fill="#3e4347"/><path fill="#728389" d="m22.4 39.2h9.9v15.7h-9.9z"/><path d="m27.3 60c2.7 0 4.9-2.2 4.9-5h-9.9c.1 2.8 2.3 5 5 5" fill="#3e4347"/><g fill="#8d9ba3"><path d="m62 24.8c-.1-1.5-1-3.6-2.5-5.8-2.3 1.4-3.8 2.9-4.4 4.3 0 1.4.8 3.1 2 5-1.8 6.7-6.8 12.2-6.8 12.3l1.1 1c.3-.3 5.4-6 7.3-13.2 1.6-1.2 2.8-2.4 3.3-3.6"/><path d="m59.3 41.5c0 6.8-6.1 9.3-13.6 9.3h-20.3c0 0-8.2-.3-8.2-9.5 0-7.3 2.8-11.4 2.8-11.4h16.6c2.3 2.3 6.9 1.2 9.2 1.2 7.2 0 13.5 3.5 13.5 10.4"/><path d="m25.4 41.2h9.9v15.7h-9.9z"/></g><path d="m30.3 62c2.7 0 4.9-2.2 4.9-5h-9.9c.1 2.8 2.3 5 5 5" fill="#3e4347"/><path fill="#8d9ba3" d="m49.4 41.5h9.9v15.5h-9.9z"/><path d="m54.4 62c2.7 0 4.9-2.2 4.9-5h-9.9c0 2.8 2.3 5 5 5" fill="#3e4347"/><path d="m6.8 18.3c-1.9 2.4-3.3 6-3.9 10.2 5-.7 9.4-1.7 11.7-3.8 2.3-2.1 3.3-6 3.9-10.2-5 .8-9.1 2.1-11.7 3.8" fill="#8d9ba3"/><path d="m6.1 27c.4-3 1.4-5.5 2.7-7.2 1.8-1.2 4.7-2.1 8.2-2.6-.4 3-1.1 5.7-2.7 7.2-1.6 1.4-4.8 2.1-8.2 2.6" fill="#3e4347"/><path d="m49.6 18.3c1.9 2.4 3.3 6 3.9 10.2-5-.7-9.4-1.7-11.7-3.8-2.3-2.1-3.3-6-3.9-10.2 5 .8 9.2 2.1 11.7 3.8" fill="#8d9ba3"/><path d="m50.4 27c-.4-3-1.4-5.5-2.7-7.2-1.8-1.2-4.7-2.1-8.2-2.6.4 3 1.1 5.7 2.7 7.2 1.5 1.4 4.7 2.1 8.2 2.6" fill="#3e4347"/><path d="m28.2 8.6c-6.7 0-12.5 7.8-12.2 13.3.2 2.8 3.9 8 3.9 8h16.6c0 0 3.8-5.1 3.9-8 .3-5.5-5.4-13.3-12.2-13.3" fill="#8d9ba3"/><g fill="#3e4347"><path d="m38.1 18.1c0 1.2-1 2.2-2.2 2.2-1.2 0-2.2-1-2.2-2.2s1-2.2 2.2-2.2c1.2 0 2.2 1 2.2 2.2"/><ellipse cx="20.5" cy="18.1" rx="2.2" ry="2.2"/></g><path d="m36.5 30.6c-.5 7.9-16.1 7.9-16.6 0-.2-3.3 3.7-10.2 8.3-10.2s8.5 6.9 8.3 10.2" fill="#c5ccd6"/><g fill="#3e4347"><path d="m25.8 28.1c-.5-1.6-1.5-2.6-2.2-2.1-.7.5-.8 2.3-.3 3.9.5 1.6 1.5 2.6 2.2 2.1.6-.5.8-2.2.3-3.9"/><path d="m32.8 26.1c-.7-.5-1.7.4-2.2 2.1-.5 1.6-.4 3.4.3 3.9.7.5 1.7-.4 2.2-2.1.5-1.7.4-3.4-.3-3.9"/></g><path d="m34.4 35.3c-.1 1.3-2.8 3.3-6.2 3.3-3.4 0-6-2-6.2-3.3-.2-1.6 2.8.3 6.2.3 3.4-.1 6.3-1.9 6.2-.3" fill="#a9afb8"/><path d="m35.8 9.2c0 6.2-5.5 3.1-7.6 3.1s-7.6 3.1-7.6-3.1c0-6.2 5.5-3.4 7.6-3.4 2.1 0 7.6-2.9 7.6 3.4" fill="#8d9ba3"/><g fill="#c5ccd6"><path d="m24.5 5.7c-6.5 0-10 7.7-15.3 7.7-6.9 0-2.5-12.3 6.7-10.4-14.2-5.8-18.5 15-8.2 15 10.8 0 9.7-5.5 18-5.5 3 0 3.1-6.8-1.2-6.8"/><path d="m32 5.7c6.5 0 10 7.7 15.3 7.7 6.8 0 2.4-12.3-6.8-10.4 14.2-5.8 18.6 15 8.2 15-10.8 0-9.7-5.5-18-5.5-3 0-3.1-6.8 1.3-6.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f404.svg b/riot/emojione/svg/1f404.svg new file mode 100644 index 0000000..1bf1728 --- /dev/null +++ b/riot/emojione/svg/1f404.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m42.6 30.4c0 0 10.3-2.6 15.6-9.6" fill="none" stroke="#6f6f6d" stroke-width="1.5" stroke-miterlimit="10"/><path d="m54.9 24.1c-.1-2.7.3-4.9 1.1-6.2 1.2-.8 3.4-1.2 6-1.2.1 2.7-.3 4.9-1.1 6.2-1.3.9-3.4 1.3-6 1.2" fill="#6f6f6d"/><g fill="#f4a19a"><ellipse cx="42.2" cy="48" rx="5.2" ry="3.2"/><path d="m40.6 54.1c-.5 0-.9-.5-.9-1.2v-2.8c0-.7.4-1.2.9-1.2.5 0 .9.5.9 1.2v2.8c0 .7-.4 1.2-.9 1.2"/><path d="m43.8 54.1c-.5 0-.9-.5-.9-1.2v-2.8c0-.7.4-1.2.9-1.2.5 0 .9.5.9 1.2v2.8c0 .7-.4 1.2-.9 1.2"/></g><g fill="#cfdae8"><path d="m55.3 36.5c0 6.8-6 12.3-13.5 12.3h-23.9v-24.7h23.9c7.5 0 13.5 5.5 13.5 12.4"/><path d="m32.5 36.3c1.7 0 3.1.9 4 2.2-2.9.2-5.2 2.8-5.2 6 0 3.3 2.5 6.1 5.6 6.1.2 0 .3 0 .5 0v6.4c0 2.8-2.2 5-4.9 5-2.7 0-4.9-2.2-4.9-5v-15.7c0-2.8 2.2-5 4.9-5"/></g><path d="m31.3 44.5c0-3.2 2.3-5.8 5.2-6 .5.8.9 1.8.9 2.8v9.2c-.2 0-.3 0-.5 0-3.1 0-5.6-2.7-5.6-6" fill="#6f6f6d"/><path d="m32.5 62c2.7 0 4.9-2.2 4.9-5h-9.8c0 2.8 2.2 5 4.9 5" fill="#3e4347"/><path d="m16.5 51.2c0-2.2-2.1-4-4.9-4.3v-5.7c0-2.8 2.2-5 4.9-5 2.7 0 4.9 2.2 4.9 5v15.8c0 2.8-2.2 5-4.9 5-2.7 0-4.9-2.2-4.9-5v-1.6c2.7-.2 4.9-2 4.9-4.2" fill="#cfdae8"/><path d="m16.5 51.2c0 2.2-2.1 4-4.9 4.3v-8.5c2.7.2 4.9 2 4.9 4.2" fill="#6f6f6d"/><path d="m16.5 62c-2.7 0-4.9-2.2-4.9-5h9.8c0 2.8-2.2 5-4.9 5" fill="#3e4347"/><path d="m50.8 34.6c1.5 0 2.9.8 3.7 2-2.6.2-4.7 2.6-4.7 5.5 0 3 2.3 5.5 5.1 5.5.2 0 .3 0 .5 0v5.9c0 2.5-2 4.6-4.5 4.6-2.5 0-4.4-2-4.4-4.6v-14.3c-.1-2.5 1.9-4.6 4.3-4.6" fill="#cfdae8"/><path d="m49.8 42.1c0-2.9 2.1-5.3 4.7-5.5.5.7.8 1.6.8 2.6v8.4c-.2 0-.3 0-.5 0-2.8 0-5-2.5-5-5.5" fill="#6f6f6d"/><path d="m50.8 58.1c2.5 0 4.5-2 4.5-4.6h-8.9c0 2.5 2 4.6 4.4 4.6" fill="#3e4347"/><g fill="#f6c799"><path d="m16.6 6.5c-2.7-1.5-4.5-4.5-4.5-4.5-.7 7.9 2.1 9.8 3.7 9.8 2.2.1 3.9-3.7.8-5.3"/><path d="m32.4 6.5c2.7-1.5 4.4-4.5 4.4-4.5.8 7.9-2.1 9.8-3.7 9.8-2.1.1-3.9-3.7-.7-5.3"/></g><path d="m47 7.5c-4.2-.1-7.7.5-9.8 2-1.3 2.2-2 6.1-1.9 10.8 4.2.1 8.1-.1 9.8-2 1.7-1.9 2-6.1 1.9-10.8" fill="#6f6f6d"/><path d="m45.9 10.3c-3-.1-5.4.4-6.9 1.4-.9 1.6-1.4 4.2-1.3 7.6 3 .1 5.6-.1 6.9-1.4 1.2-1.3 1.4-4.3 1.3-7.6" fill="#f4a19a"/><path d="m2 7.5c4.2-.1 7.7.5 9.8 2 1.3 2.2 2 6.1 1.9 10.8-4.2.1-8.1-.1-9.8-2-1.7-1.9-2-6.1-1.9-10.8" fill="#6f6f6d"/><path d="m3.1 10.3c3-.1 5.4.4 6.9 1.4.9 1.6 1.4 4.2 1.3 7.6-3 .1-5.6-.1-6.9-1.4-1.2-1.3-1.4-4.3-1.3-7.6" fill="#f4a19a"/><path d="m40.3 29.2c0 10.6-15.7 16.5-15.7 16.5 0 0-15.7-5.9-15.7-16.5 0-15.6 6.1-23.7 15.7-23.7 9.5 0 15.7 5.8 15.7 23.7" fill="#dae5ef"/><g fill="#6f6f6d"><path d="m34.5 9c-5.3 5.7-8.9 13-3.6 19.7 3.5 4.4 6.3 4.4 8.9 3.7.3-1 .5-2 .5-3.1 0-10.5-1.6-16.8-5.8-20.3"/><path d="m18.1 28.7c5.2-6.6 1.8-13.7-3.3-19.3-4.5 3.8-6.1 10.5-6.1 19.9 0 1.1.2 2.2.5 3.1 2.6.7 5.4.7 8.9-3.7"/></g><path d="m30.1 23.9c0 0 1.8 3 5.1 2 3.3-1 3.5-4.5 3.5-4.5s-1.8-3-5.1-2c-3.4 1-3.5 4.5-3.5 4.5" fill="#fff"/><g fill="#3e4347"><ellipse cx="34.4" cy="22.7" rx="2.5" ry="2.9"/><path d="m30.1 23.9c0 0 2.8-4.4 7.3-2.6 2.8 1.1 3.8-.7 3.8-.7-1.5.2-2.1-.4-3.8-1.2-3.1-1.5-7.3-.7-7.3 4.5"/></g><path d="m18.9 23.9c0 0-1.8 3-5.1 2-3.3-1-3.5-4.5-3.5-4.5s1.8-3 5.1-2c3.4 1 3.5 4.5 3.5 4.5" fill="#fff"/><g fill="#3e4347"><ellipse cx="14.6" cy="22.7" rx="2.5" ry="2.9"/><path d="m18.9 23.9c0 0-2.8-4.4-7.3-2.6-2.8 1.1-3.8-.7-3.8-.7 1.5.2 2.1-.4 3.8-1.2 3.1-1.5 7.3-.7 7.3 4.5"/></g><path d="m11.6 36.7c0-6.1 3-3 12.9-3 9.9 0 12.9-3.1 12.9 3 0 8.7-6.1 10.3-12.9 10.3-6.8 0-12.9-1.7-12.9-10.3" fill="#f4a19a"/><g fill="#bc6464"><path d="m20.3 38.1c-.9-2.5-2.6-3.9-3.8-3.2-1.2.8-1.4 3.5-.6 6 .9 2.5 2.6 3.9 3.8 3.2 1.2-.8 1.5-3.5.6-6"/><path d="m32.5 34.9c-1.2-.8-2.9.6-3.8 3.2-.9 2.5-.6 5.2.5 6 1.2.8 2.9-.6 3.8-3.2.9-2.5.7-5.2-.5-6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f405.svg b/riot/emojione/svg/1f405.svg new file mode 100644 index 0000000..27db054 --- /dev/null +++ b/riot/emojione/svg/1f405.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.8 44.6c-7.9 1-11.6-5.2-8.3-11.2 5.3-9.8 4.8-15.3 2.5-20-1.7-3.5-7.6-1.3-5.4 2.6 3.8 6.7.2 9.9-2 17.5-3.4 11.7 7.3 16.3 13.8 14l-.6-2.9" fill="#d87512"/><g fill="#bc600d"><path d="m12.7 43.7c0 0 .3 1.2 0 3 0 0 2.1-.5 1.9-2.3 0 0-.7-.2-1.9-.7"/><path d="m10.3 41.4c0 0-.1 1.4-1.2 2.9 0 0 2.1.6 2.8-1.1 0-.1-.8-.8-1.6-1.8"/><path d="m9.3 37.5c0 0-.8 1.2-3.1 2.1 0 0 1.6 2.3 3.6.9 0-.1-.4-1.2-.5-3"/><path d="m14 15.7c0 0-1.7.9-3.8 3.5 0 0 1.9 1.5 4.5 2.2 0 .1.5-3.1-.7-5.7"/><path d="m14.3 23.9c0 0-2.8.5-5.4 2.7 0 0 1.6 1.7 3.6 2.6 0 .1 1.5-3.3 1.8-5.3"/><path d="m11.3 31.9c0 0-1.5-.2-4.5.6 0 0-.1 3 2.8 2.9.1.1.9-1.6 1.7-3.5"/></g><path d="m53.9 37h-35.8c-.9 1-4.3 5.9.2 15.8 3.4 7.5 32.1 7.5 35.5 0 4.4-9.9 1-14.8.1-15.8" fill="#d87512"/><g fill="#bc600d"><path d="m54.8 38.3c0 0-.3 5-4.7 11.3 0 0 4.4-2 5.8-5.1 0 0 .5-3.5-1.1-6.2"/><path d="m55.7 46.8c0 0-1.1 2.2-3.6 4.6 0 0 1.8 0 2.6-.9 0-.1.8-1.7 1-3.7"/><path d="m17.2 38.3c0 0 .3 5 4.7 11.3 0 0-4.4-2-5.8-5.1 0 0-.5-3.5 1.1-6.2"/><path d="m16.3 46.8c0 0 1.1 2.2 3.6 4.6 0 0-1.8 0-2.6-.9 0-.1-.8-1.7-1-3.7"/></g><path d="m22.5 36c0 0 0 21.2 2.9 24.3 2 2.2 8.7 2.3 10.6 0 1.9 2.3 8.6 2.1 10.6 0 2.9-3.1 2.9-24.3 2.9-24.3h-27" fill="#f29a2e"/><path d="m36 60.4c-.7-2.6-.7-12.9 0-15.5.7 2.6.7 12.9 0 15.5" fill="#3e4347"/><g fill="#bc600d"><path d="m23.4 53.2c0 0 3.4-3.6 8.6 0 0 0-5.7 2.5-7.4 5.8.1 0-.9-2.3-1.2-5.8"/><path d="m22.7 45.3c0 0 3.8-3.2 7.9 1.6 0 0-4.3-.5-7.5 3.8 0 0-.5-3.3-.4-5.4"/><path d="m48.6 53.1c0 0-3.4-3.5-8.6 0 0 0 5.7 2.5 7.4 5.8-.1.1.9-2.2 1.2-5.8"/><path d="m49.3 45.3c0 0-3.8-3.2-7.9 1.5 0 0 4.3-.5 7.5 3.8 0 .1.5-3.1.4-5.3"/></g><path d="M28.4,7.6c0,4.3-2.7,7.8-6,7.7C12.7,15.1,16.7,2,16.7,2C20,2,28.4,3.3,28.4,7.6z" fill="#f29a2e"/><path d="m24.7 8.4c0 2.3-1.4 4.2-3.2 4.1-5.2-.1-3-7.1-3-7.1 1.8.1 6.2.8 6.2 3" fill="#bc600d"/><path d="M43.6,7.6c0,4.3,2.7,7.8,6,7.7C59.3,15.1,55.3,2,55.3,2C52,2,43.6,3.3,43.6,7.6z" fill="#f29a2e"/><path d="m47.3 8.4c0 2.3 1.4 4.2 3.2 4.1 5.2-.1 3-7.1 3-7.1-1.8.1-6.2.8-6.2 3" fill="#bc600d"/><path d="m55.9 32.5c0 6.9-39.8 6.9-39.8 0 0-29.1 11.4-28.3 19.9-28.3 8.5 0 19.9-.8 19.9 28.3" fill="#f29a2e"/><g fill="#3e4347"><path d="m44 10.1c-1.8-6.7-14.3-6.8-16.1 0 3.6-3 12.6-3 16.1 0"/><path d="m41.5 12.7c-1.2-4.5-9.8-4.6-11 0 2.9-2.4 8.1-2.4 11 0"/></g><path d="m59 28.5c-.2-7.1-4.4-10.6-4.4-10.6s2.6 26-12.7 13.4h-11.8c-15.3 12.6-12.7-13.4-12.7-13.4s-4.2 3.5-4.4 10.6l2.1-1.2c0 0-2.2 4.7.2 10.4l2.2-2.6c0 0 .6 5.4 6.5 8.2l.3-2.4c0 0 4.5 3.5 11.7 3.5s11.7-3.5 11.7-3.5l.3 2.4c5.9-2.8 6.5-8.2 6.5-8.2l2.2 2.6c2.3-5.7.2-10.4.2-10.4l2.1 1.2" fill="#ffe8bb"/><g fill="#3e4347"><path d="m30.1 31.3c0 0-13 9.8-12.7-13.4 0 0-3.1 27.6 12.7 13.4"/><path d="m41.9 31.3c0 0 13 9.8 12.7-13.4 0 0 3.1 27.6-12.7 13.4"/></g><path d="m40.3 23c2.3 6.3 1.6 8.3 1.6 8.3l-5.8 1.7-6-1.7c0 0-.7-2.1 1.6-8.3-10.1 16.8-.6 19-.6 19s-.4 2.7 2.5 5.1v-1.8c0 0 .6 1.7 2.4 2.7 1.8-1 2.4-2.7 2.4-2.7v1.8c1.6-.9 2.1-2.8 2.1-2.8l.7 1.4c2.3-3.3 1.5-5.6.8-6.7 0 0 0 .1 0 .1s8.4.7-1.7-16.1" fill="#f5f5f5"/><g fill="#3e4347"><path d="m36 38.9c-.2-.7-.8-4.2-.7-6.3h1.3c-.1 2 .5 5.3.6 5.8l-1.2.5"/><path d="m31.1 42.1c5.2-5.2 9-6.8 11-3-3.1-2.5-6.7 2-11 3"/></g><path d="m41.7 31c-2.3-1-9.3-1-11.4 0-.8.4 1.5 2.7 5.7 2.7 4.2 0 6.5-2.4 5.7-2.7" fill="#947151"/><path d="m32.4 21.6c-1.7 10.7-14 8-14-1.4 0-5 0-5 7.7-6.7 7.8-1.6 7 4.1 6.3 8.1" fill="#ffe8bb"/><path d="m31.2 22.2c-.7 7.6-12 6.4-11.2-1.2.3-2.9.3-3.2 5.9-2.6 5.5.6 5.5.8 5.3 3.8" fill="#3e4347"/><path d="m29.5 21.7c-.5 4.6-8.5 3.9-7.9-.7.2-1.7.2-1.8 4.2-1.5 3.9.4 3.9.5 3.7 2.2" fill="#fff"/><path d="m28.9 20.8c0 1.1-.8 1.9-1.8 1.9-1 0-1.8-.9-1.8-1.9s.8-1.7 1.8-1.7 1.8.7 1.8 1.7" fill="#3e4347"/><path d="m39.6 21.6c1.7 10.7 14 8 14-1.4 0-5 0-5-7.7-6.7-7.8-1.6-7 4.1-6.3 8.1" fill="#ffe8bb"/><path d="m40.8 22.2c.7 7.6 12 6.4 11.2-1.2-.3-2.9-.3-3.2-5.9-2.6-5.6.6-5.6.8-5.3 3.8" fill="#3e4347"/><path d="m42.5 21.7c.5 4.6 8.5 3.9 7.9-.7-.2-1.7-.2-1.8-4.2-1.5-3.9.4-3.9.5-3.7 2.2" fill="#fff"/><path d="m46.1 20.8c0 1.1.8 1.9 1.8 1.9 1 0 1.8-.9 1.8-1.9s-.8-1.7-1.8-1.7-1.8.7-1.8 1.7" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f406.svg b/riot/emojione/svg/1f406.svg new file mode 100644 index 0000000..7093fe4 --- /dev/null +++ b/riot/emojione/svg/1f406.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M45.1,7l6.1,6.9C61,13.7,56.9,2,56.9,2C53.6,2,45.1,3.2,45.1,7z" fill="#e5bc5e"/><path d="m48.8 7.8l3.2 3.7c5.2-.1 3.1-6.4 3.1-6.4-1.8 0-6.3.6-6.3 2.7" fill="#77623c"/><path d="m29.6 7l-6.1 6.9c-9.8-.2-5.7-11.9-5.7-11.9 3.3 0 11.8 1.2 11.8 5" fill="#e5bc5e"/><path d="m25.9 7.8l-3.2 3.7c-5.2-.1-3.1-6.4-3.1-6.4 1.8 0 6.3.6 6.3 2.7" fill="#77623c"/><path d="m37.3 4.3c-12.9 0-20.2 4.2-20.2 31h40.5c0-26.8-7.4-31-20.3-31" fill="#e5bc5e"/><path d="m54.9 38.2h-35.2c0 0-2.2 2.1-2.2 6.6-3.4-.1-6.9-2.1-7.3-5.8-.4-3.9 2.1-7.3 3.6-10.7 1.7-4 2.4-8 1.1-12.2-.5-1.6-1.1-3.8-2.9-4.3-2.2-.6-4.3 1.4-3.7 3.6.5 1.9 1.8 3.3 1.9 5.3.2 2.3-.6 4.7-1.5 6.8-1.6 4.1-3.5 8.2-2.4 12.7 1 4.2 4.6 7.9 11.5 7.6 0 0 .8 3.2 1.9 4.9 3 4.5 32.4 5.3 35.2 0 2.8-5.2 0-14.5 0-14.5" fill="#c49a45"/><path d="m23.9 37.1c0 0-.9 19.4 2.9 23.3 2 2.1 8.6 2.2 10.5 0 1.9 2.2 8.5 2 10.5 0 3.6-3.8 2.9-23.3 2.9-23.3s-26.8 0-26.8 0" fill="#e5bc5e"/><path fill="#bc9342" d="m42.2 54.3l2.9.7.2-3.5-2.9.6z"/><g fill="#a37e3d"><path d="m51.9 50.3l1.9.4.1-2.4-2 .5z"/><path d="m19.6 45.5l.7 2.1 2.3-1.3-1.5-1.6z"/><path d="m10.7 15.8l.7 2.1 2.3-1.3-1.5-1.6z"/><path d="m7.2 37.3l.5 1.4 1.5-.8-1-1.1z"/><path d="m13.1 45.4l.4 1.4 1.5-.9-1-1z"/></g><g fill="#bc9342"><path d="m31.6 55.5l1.8-1.2-1.8-1.9-1.2 1.9z"/><path d="m46.2 48l1.9-1.2-1.9-1.9-1.1 1.9z"/><path d="m29.2 45.8l-2.5 1.6 2.5 2.6 1.5-2.6z"/></g><path d="m37.3 60.5c-.7-2.5-.7-12.4 0-14.9.7 2.5.7 12.4 0 14.9" fill="#3e4347"/><g fill="#77623c"><path d="m53.7 28.7l1.2-.8-1.2-1.3-.8 1.3z"/><path d="m19.9 28.8l1.2-.8-1.2-1.3-.8 1.3z"/><path d="m28.4 12l1.9-1.2-1.9-1.9-1.1 1.9z"/><path d="m39.9 16.5l1.9-1.3-1.9-1.9-1.1 1.9z"/><path d="m48.8 12l1.8-1.2-1.8-1.9-1.2 1.9z"/><path d="m35.4 20.1l1.3-.8-1.3-1.3-.7 1.3z"/></g><path d="m57.3 27.7c0 0-2.5 3.7-12.5 6.6-2.7-4.4-12.2-4.4-14.9 0-10-2.9-12.5-6.6-12.5-6.6s-1.3 6.7-.3 9.1c1.5 3.7 10.2 6.1 13.3 6.8 2.6 2.8 11.4 2.8 14.1 0 3.1-.7 11.8-3 13.3-6.8.8-2.4-.5-9.1-.5-9.1" fill="#ffe8bb"/><g fill="#77623c"><path d="m21.8 36.7l1.2-.8-1.2-1.2-.8 1.2z"/><path d="m56.1 36.2l.9-2.1-2.6-.7v2.3z"/><path d="m36.8 9.5l.6-1.3-1.7-.5v1.5z"/><path d="m24.1 13.7l.7-1.4-1.8-.5v1.6z"/><path d="m49.3 33.8l1.9-1.2-1.9-1.9-1.1 1.9z"/><path d="m31.7 23.5l1.6 5.3-4.5-2.8z"/><path d="m42.9 23.5l-1.6 5.3 4.6-2.8z"/></g><path d="m32.1 22.1c-1.5 9.2-12.1 6.9-12.1-1.2 0-4.3 0-4.3 6.6-5.8 6.8-1.4 6 3.5 5.5 7" fill="#ffe8bb"/><path d="m31 22.5c-.6 6.5-10.3 5.5-9.7-1 .2-2.5.3-2.8 5.1-2.2 4.8.5 4.8.7 4.6 3.2" fill="#3e4347"/><path d="m27.1 19.8c.5.3.8.7.8 1.3 0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.7.4-1.2 1.1-1.4-2.7-.3-2.8-.1-2.9 1.5-.3 3.7 6.1 4.4 6.4.7.1-1.6.1-1.8-2.4-2.1" fill="#fff"/><path d="m42.6 22.1c1.5 9.2 12.1 6.9 12.1-1.2 0-4.3 0-4.3-6.6-5.8-6.8-1.4-6.1 3.5-5.5 7" fill="#ffe8bb"/><path d="m43.7 22.5c.6 6.5 10.3 5.5 9.7-1-.2-2.5-.3-2.8-5.1-2.2-4.9.5-4.9.7-4.6 3.2" fill="#3e4347"/><path d="m49.2 19.6c.5.3.8.7.8 1.3 0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.5.2-.9.5-1.1-2.5.3-2.5.5-2.3 2.1.3 3.7 6.8 3 6.4-.7-.1-1.5-.1-1.8-2.4-1.6" fill="#fff"/><path fill="#a37e3d" d="m12.2 24.3l-1.8 1.8 1.8 1.9 1.8-1.9z"/><path d="m43.3 38.7c-.4-.9-2.5.5-5.5.6v-5.3h-1v5.4c-2.8-.2-5-1.6-5.5-.6-.5 1 2.7 2.4 6 2.4 3.3 0 6.5-1.4 6-2.5" fill="#3e4347"/><path d="m43.1 31.7c-2.3-1-9.5-1-11.6 0-.8.4 1.5 2.8 5.8 2.8 4.3 0 6.7-2.4 5.8-2.8" fill="#f15a61"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f407.svg b/riot/emojione/svg/1f407.svg new file mode 100644 index 0000000..f673e96 --- /dev/null +++ b/riot/emojione/svg/1f407.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="50.9" cy="47.5" rx="4" ry="4.4" fill="#dedfe0"/><path d="m39 58.8c1.6 1.8 11.6.3 12.2-2 3-11.3-5-14.7-5-14.7l-7.1 3.5c0-.1-2.2 10.8-.1 13.2" fill="#aaacad"/><path d="m39.1 56.1c.1-.8.5-1.6 1.1-2.2.6-.6 1.3-1.2 2.1-1.5 1.6-.7 3.4-.7 5-.1-1.7 0-3.2.1-4.7.8-.7.3-1.4.7-2 1.2-.5.5-1.1 1.1-1.5 1.8" fill="#919191"/><g fill="#c4c5c6"><path d="m29.7 60.7c1.5 1.8 7 1.7 8.7 0 2.4-2.5 2.3-13.6 2.4-19.1l-10.2-.9c-.1 0-2.9 17.6-.9 20"/><path d="m29.7 60.7c-1.5 1.8-7 1.7-8.7 0-2.4-2.5-2.3-13.6-2.4-19.1l10.2-.9c0 0 2.9 17.6.9 20"/></g><path d="m29.7 60.7c-.3-1.4-.4-2.9-.4-4.3 0-1.4.1-2.9.4-4.3.3 1.4.4 2.9.4 4.3-.1 1.5-.1 2.9-.4 4.3" fill="#aaacad"/><path d="m38.7 48.1c0 4.5-9 9.2-9 9.2s-9-4.7-9-9.2 4-8.2 9-8.2 9 3.7 9 8.2" fill="#fff"/><path d="m47.4 2c-1-.3-9.3 6.1-9.5 11.5-.5 10.5-1.2 13.4-1.2 13.4l5.6 1.4c0 0-.3-1 6.9-12 2.6-4.1-.2-13.7-1.8-14.3" fill="#b5b5b5"/><path d="m46 7.3c-1-.3-4.9 2.6-5.7 6.8-1.9 10.2-2.5 13.1-2.5 13.1l3.7.9c0 0 0-.7 5.4-12.4 1.4-3 .6-7.9-.9-8.4" fill="#ffc5d3"/><path d="m12 2c1-.3 9.3 6.1 9.5 11.5.5 10.5 1.2 13.4 1.2 13.4l-5.6 1.4c0 0 .3-1-6.9-12-2.7-4.1.2-13.7 1.8-14.3" fill="#b5b5b5"/><path d="m13.4 7.3c1-.3 4.9 2.6 5.7 6.8 1.9 10.2 2.5 13.1 2.5 13.1l-3.6 1c0 0 0-.7-5.5-12.4-1.4-3.1-.7-8 .9-8.5" fill="#ffc5d3"/><path d="m15 28.3c0-6 4.5-10.3 14.7-10.3 10.1 0 14.7 4.3 14.7 10.3 0 5 7.6 12.4.8 17.3-3.3 2.4-8.9 4.5-15.5 4.5s-12.2-2.1-15.5-4.5c-6.8-5 .8-12.3.8-17.3" fill="#c4c5c6"/><path d="m36.6 36.6c-.2-4.8-3.5-10.6-5.6-13.3-.9-1.2-1.7-1.2-2.6 0-2.1 2.7-5.4 8.5-5.6 13.3-3.8-.5-8.1-.3-9 1.7-1.7 4 6.3 10.7 15.8 10.7 9.6 0 17.5-6.7 15.8-10.7-.7-2-5.1-2.2-8.8-1.7" fill="#fff"/><path d="m37.2 42.3c-.8.6-1.9 1-3 1.1-1.1.1-2.3-.2-3.2-.8-.5-.3-.9-.7-1.3-1.2-.3.5-.8.9-1.3 1.2-1 .6-2.1.9-3.2.8-1.1 0-2.2-.4-3-1.1-.5-.4 2.1 4.6 7.5 4.6 5.4 0 8-5 7.5-4.6" fill="#4c5359"/><path d="m33.9 30.9c0 0 .3-3.3 2.9-4.3 3-1.2 5 1.7 5.5 3.3.8 2.4-.2 5.1-.5 5.7-.2.4-2.4 2.3-7.3.5.1 0-1.2-2.7-.6-5.2" fill="#fff"/><path d="m33.9 30.9c0-1.2.4-2.3 1.1-3.3.4-.5.8-.9 1.3-1.2.2-.2.5-.3.8-.4.3-.1.6-.2.9-.2 1.2-.2 2.4.4 3.2 1.2.8.8 1.5 1.9 1.8 3.1.3 1.2.2 2.5-.1 3.7-.1.6-.3 1.2-.6 1.7l-.1.2v.1.2c0 0-.1.1-.1.1-.1.1-.2.2-.4.3-.3.2-.5.3-.8.4-1.1.4-2.2.4-3.3.3-1.1-.2-2.1-.5-3.1-1 1 .2 2.1.5 3.1.5 1 0 2.1-.1 3-.5.2-.1.4-.2.6-.4.1-.1.2-.1.2-.2 0 0 0 0 0 0l.1-.2c.2-.5.3-1 .5-1.5.2-1.1.3-2.2 0-3.2-.2-1-.8-1.9-1.5-2.6-.7-.7-1.6-1.2-2.5-1.1-.2 0-.5 0-.7.1-.2.1-.5.1-.7.2-.5.2-.9.5-1.2.9-.7.6-1.2 1.6-1.5 2.8" fill="#b2b6b8"/><ellipse cx="37.7" cy="32" rx="2.6" ry="3.2" fill="#4c5359"/><path d="m25.5 30.9c0 0-.3-3.3-2.9-4.3-3-1.2-5 1.7-5.5 3.3-.8 2.4.2 5.1.5 5.7.2.4 2.4 2.3 7.3.5-.1 0 1.1-2.7.6-5.2" fill="#fff"/><path d="m25.5 30.9c-.3-1.1-.7-2.2-1.5-2.9-.4-.4-.8-.7-1.2-.9-.2-.1-.5-.2-.7-.2-.2-.1-.5-.1-.7-.1-.9 0-1.9.4-2.5 1.1-.7.7-1.3 1.7-1.5 2.6-.2 1-.2 2.1 0 3.2.1.5.3 1.1.5 1.5l.1.2c0 0 0 0 0 0 .1.1.2.1.2.2.2.1.4.3.6.4.9.4 1.9.6 3 .5 1 0 2.1-.2 3.1-.5-1 .5-2 .8-3.1 1-1.1.2-2.2.1-3.3-.3-.3-.1-.5-.2-.8-.4-.1-.1-.3-.2-.4-.3 0 0-.1-.1-.1-.1l-.1-.1v-.1l-.1-.1c-.2-.6-.4-1.1-.6-1.7-.3-1.2-.3-2.4-.1-3.7.3-1.2 1-2.3 1.8-3.1.9-.8 2-1.4 3.2-1.2.3 0 .6.1.9.2.3.1.5.2.8.4.5.3.9.7 1.3 1.2.7.8 1.1 2 1.2 3.2" fill="#b2b6b8"/><ellipse cx="21.6" cy="32" rx="2.6" ry="3.2" fill="#4c5359"/><path fill="#fff" d="m27 40.1h5.3v4.4h-5.3z"/><path d="m37.7 41.9c-.9.4-2 .6-3 .6-1-.1-2-.3-2.8-.8-.8-.5-1.4-1.2-1.5-1.9l-.7-3.4-.7 3.4c-.2.8-.7 1.4-1.5 1.9-.8.5-1.8.8-2.8.8-1.1 0-2.1-.1-3-.6-.9-.4-1.7-1.1-2.1-2 .1 1 .7 1.9 1.6 2.5.9.6 2.2 1 3.4 1.1 1.3.1 2.5-.2 3.6-.8.6-.3 1-.7 1.4-1.2.4.5.9.9 1.4 1.2 1.1.6 2.4.9 3.6.8 1.2 0 2.5-.4 3.4-1.1.9-.6 1.6-1.6 1.6-2.5-.2.8-1 1.5-1.9 2" fill="#b2b6b8"/><path d="m33.2 35.7c-.7-.6-2.9-.6-3.6-.6s-2.8 0-3.6.6c-.5.4-.1 1.4 1.2 2.3.9.6 1.7.7 2.3.7.7 0 1.5-.2 2.3-.7 1.6-.9 1.9-1.9 1.4-2.3" fill="#ff94a4"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f408.svg b/riot/emojione/svg/1f408.svg new file mode 100644 index 0000000..4eadb2c --- /dev/null +++ b/riot/emojione/svg/1f408.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m2.3 36.1c-.2-1-.3-2-.2-2.9 0-1.2.3-2.2.9-3.2.6-1.1 1.6-2 2.7-2.5 1.1-.6 2.5-.8 3.8-.6 1.2.1 2.4.6 3.4 1.3.9.6 1.7 1.4 2.4 2.3 1.1 1.5 1.9 3.3 2.3 5.4 0 .1 0 .2 0 .3.2 1.3-.6 2.5-1.9 2.9-.2.1-.4.1-.6.1-.8.1-1.5-.1-2.1-.6-.6-.5-1-1.1-1.1-1.9-.2-1.4-.5-2.6-1.1-3.5-.5-.9-1.3-1.6-2.1-1.8-.3-.1-.7-.1-1 0-.4.1-.7.4-.9.7-.3.4-.5.8-.5 1.4-.1.6-.1 1.2 0 1.8.2 1.2.6 2.6 1.3 4 .3.6.7 1.3 1.1 2 .4.7.9 1.3 1.3 1.8 1.1 1.3 2.1 2.3 3.2 3.1 1.3.9 2.6 1.5 3.9 1.7 1.3.2 2.8.2 4.3-.3 1.2-.3 1.9.1 2.1.7.2.5-.1 1.3-1.3 1.7h-.1c-1.8.6-3.7.8-5.4.5-1.7-.2-3.5-1-5.2-2-1.4-.9-2.6-2.1-3.9-3.5-.5-.6-1-1.2-1.4-1.7l-.2-.3c-.6-.7-1.1-1.4-1.5-2.1-1.2-1.6-1.9-3.2-2.2-4.8"/><path d="m46.7 55.9c1.8 2.3 9.7 0 11-2.6 5.2-10.6 0-15.2 0-15.2l-11 1.5c0 .1-2.2 13.5 0 16.3"/><path d="m31.8 55.9c-1.8 2.3-9.7 0-11-2.6-5.2-10.6 0-15.2 0-15.2l11 1.5c0 .1 2.3 13.5 0 16.3"/></g><g fill="#fff"><path d="m34.5 55.2c-.1 1.1-2.6 1.7-5.6 1.4-3-.3-5.3-1.3-5.3-2.4.1-1.1 2.4.3 5.4.5 3.1.4 5.6-.5 5.5.5"/><path d="m44 55.2c.1 1.1 2.6 1.7 5.6 1.4 3-.3 5.3-1.3 5.3-2.4-.1-1.1-2.4.3-5.4.5-3.1.4-5.6-.5-5.5.5"/></g><g fill="#4c5359"><path d="m39.2 60.4c2 2.2 8.9 2.1 11.1 0 3-3 2.9-16.7 3-23.3l-13-1.1c.1 0-3.6 21.5-1.1 24.4"/><path d="m39.3 60.4c-2 2.2-8.9 2.1-11.1 0-3-3-2.9-16.7-3-23.3l13-1.1c0 0 3.6 21.5 1.1 24.4"/></g><path fill="#fff" d="m34 43.7l5.3 11.2 5.3-11.2z"/><path d="m59.9 2.2c-2.4-1.4-14.8 5.1-17.3 9.5l17.9 10.6c2.4-4.3 1.7-18.8-.6-20.1" fill="#4c5359"/><path d="m56.2 8.8c-.9-.5-8.2 2.8-9.6 5.2l10 5.9c1.3-2.3.4-10.6-.4-11.1" fill="#f7a4a4"/><path d="M18.7,2.2c-2.4,1.4-3.1,15.7-0.6,20.1L36,11.7C33.6,7.4,21,0.8,18.7,2.2z" fill="#4c5359"/><path d="m22.5 8.8c-.9.5-1.8 8.7-.4 11.1l9.9-5.9c-1.3-2.3-8.7-5.7-9.5-5.2" fill="#f7a4a4"/><path d="m39.3 9.4c-20.8 0-22.8 14.6-22.8 22.7 0 3.4 10.2 13.9 22.7 13.9 12.6 0 22.8-10.5 22.8-13.9 0-8.1-2-22.7-22.7-22.7" fill="#4c5359"/><path d="m33.5 28.5c0 0-2.4 3.6-6.8 2.5-4.4-1.1-4.6-5.4-4.6-5.4s2.4-3.6 6.8-2.5c4.4 1.2 4.6 5.4 4.6 5.4" fill="#bfffab"/><path d="m33 26.7c0 0-2.1 2.3-5 2.3-3.1 0-5-4.4-5-4.4s2.1-2.4 5.8-1.4c3.5.8 4.2 3.5 4.2 3.5" fill="#93e67f"/><path d="m29.8 26.6c0 4.9-2.4 4.9-2.4 0 0-4.9 2.4-4.9 2.4 0" fill="#4c5359"/><path d="m45.1 28.5c0 0 2.4 3.6 6.8 2.5 4.4-1.1 4.6-5.4 4.6-5.4s-2.4-3.6-6.8-2.5c-4.4 1.2-4.6 5.4-4.6 5.4" fill="#bfffab"/><path d="m45.5 26.7c0 0 2.1 2.3 5 2.3 3.1 0 5-4.4 5-4.4s-2.1-2.4-5.8-1.4c-3.5.8-4.2 3.5-4.2 3.5" fill="#93e67f"/><path d="m48.7 26.6c0 4.9 2.4 4.9 2.4 0 .1-4.9-2.4-4.9-2.4 0" fill="#4c5359"/><path d="m45.9 32.5c-2-1.5-4.2-6.5-6.6-6.5s-4.7 5-6.6 6.5c-3.1 2.4-11.5 5.1-11.5 5.1 0 0 8.9 7.6 18.1 7.6 9.2 0 18.1-7.6 18.1-7.6s-8.4-2.7-11.5-5.1" fill="#fff"/><g fill="#4c5359"><path d="m45.7 39.3c-.7.4-1.6.6-2.4.6-.8-.1-1.6-.3-2.2-.8-.6-.5-1.1-1.2-1.2-1.9l-.6-3.3-.6 3.3c-.1.8-.6 1.4-1.2 1.9-.6.5-1.4.8-2.2.8-.9 0-1.7-.1-2.4-.6-.7-.4-1.4-1.1-1.7-2 0 1 .6 1.9 1.3 2.5.7.6 1.8 1 2.7 1.1 1 .1 2-.2 2.9-.8.5-.3.8-.7 1.2-1.2.3.5.7.9 1.2 1.2.9.6 1.9.9 2.9.8 1 0 2-.4 2.7-1.1.8-.6 1.3-1.6 1.3-2.5-.3.9-.9 1.6-1.7 2"/><path d="m42.4 33.1c-.6-.7-2.5-.8-3.1-.8-.6 0-2.5.1-3.1.8-.4.5-.1 1.8 1.1 3 .7.7 1.4.9 2 .9.6 0 1.3-.2 2-.9 1.2-1.2 1.5-2.5 1.1-3"/></g><g fill="#fff"><path d="m39 59.6c0 1.1-2.3 1.9-5.2 1.9-2.9 0-5.2-.9-5.2-1.9 0-1.1 2.3.1 5.2.1 2.8 0 5.2-1.1 5.2-.1"/><path d="m49.9 59.6c0 1.1-2.3 1.9-5.2 1.9-2.9 0-5.2-.9-5.2-1.9 0-1.1 2.3.1 5.2.1 2.9 0 5.2-1.1 5.2-.1"/></g><g fill="#3e4347"><path d="m29.6 61.2l1.4-2.4-.4 2.8z"/><path d="m33.1 62l.5-3.3.5 3.3z"/><path d="m37 61.6l-.4-2.6 1.4 2.3z"/><path d="m48 61.6l-.4-2.8 1.4 2.4z"/><path d="m44.4 62l.5-3.3.5 3.3z"/><path d="m40.5 61.3l1.4-2.3-.4 2.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f409.svg b/riot/emojione/svg/1f409.svg new file mode 100644 index 0000000..aaf9cd2 --- /dev/null +++ b/riot/emojione/svg/1f409.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m16.9 14.2c-1.8.8-2.9 2.4-4.7.8-1.8-1.6-2.5-1.3-3.2-1.1 0 0 1.1-.2 2.3 1 1.2 1.1 1.7 2.3 4.3 1.3 1.9-.7 3.7-1 4.6-.7.9.3.9-3.3-3.3-1.3" fill="#ed4c5c"/><g fill="#fff"><path d="m4.9 15.6l.7-1.3 4.5-1.3h-6.3z"/><path d="m11.2 17.3l-4.8-1.5-.4-.7-1.1 2.2z"/></g><g fill="#64892f"><path d="m35.1 56.1c-3.1-.3-4.1 1.1-5.7.9 0 0 .9.6 2.1.7 0 0-2.3 1.2-6.1.6 0 0 2.6 2.5 5.8 1.8 0 0-.3.8-1.2 1.4 0 0 1.9.6 3.6-.7 0 0 .2.5-.9 1.3 7.5-.6 5.6-5.7 2.4-6"/><path d="m62 20.1c-1.6-4.2-4.8-6.2-4.8-6.2 1.2-.6 2.9-.2 2.9-.2-2.4-3.3-7.8-4.2-7.8-4.2.7-.6 3-.9 3-.9-3.5-2.2-8.5-1.4-8.5-1.4.3-1.1 1.5-1.8 1.5-1.8-4.9-1.4-9.7.6-9.7.6.1-1.1 1.6-2 1.6-2-2.2-.6-8.4 1-8.4 1 .6-1.4-.6-2.7-.6-2.7-2.2 1.6-6.5 1.4-6.5 1.4.2-.8 1.2-1.7 1.2-1.7-10.4 0-9.1 5.8-9.1 5.8 0 0 33.2-2.4 33.2 13.7 0 16.9-37.8-3.1-37.8 15.2 0 20.1 40.4-3.2 40.4 12.1 0 8.5-12.8 9.9-12.8 9.9-1.8.5-1.1 1.9-1.1 1.9 1.4-1.3 5.8-1.3 5.8-1.3-.1.5-1 1.4-1 1.4 4.4-.4 6.3-1.8 6.3-1.8.2.6-.9 1.5-.9 1.5 4.4-.3 5.6-3.3 5.6-3.3.9.4.7 1.2.7 1.2 3.5-1.8 3.7-5.3 3.7-5.3.8.2 1.8.9 1.8.9 1-4.2-1.1-6.7-1.1-6.7.3.3 1.7.4 1.7.4-.1-3.5-2.8-4.9-2.8-4.9.9-1 2.7-.1 2.7-.1-1.8-4.6-6.8-4.2-6.8-4.2.6-.8 2.8-1.4 2.8-1.4-2.4-1.7-8.2-1-8.2-1 4.9-1.2 6.2-4.6 6.2-4.6.2.6.1 2.7.1 2.7 3.6-2.9 2.8-6.7 2.8-6.7 1.2.4 1.8 2 1.8 2 2.6-5.1-.3-8.4-.3-8.4 1.5.1 2.4-.9 2.4-.9m-31.8 18.7c-.5-1.5-3.4-1.4-3.4-1.4 0 2.1-4.7 3.6-4.7 3.6 0-2.2-1.9-2.9-1.9-2.9-2.4 3.9-3.5 1.5-3.5 1.5 1.5-1.2.7-3.1.7-3.1-4.6.9-1.3-2.6-1.3-2.6.5 2.2 3.2 1.2 3.2 1.2-.8-3.3 3.7-2.8 3.7-2.8-1 1.7.8 2.7.8 2.7 1.8-1.5 6.6-1.4 6.6-1.4-1.4.7-2.2 2.8-2.2 2.8 3.9.1 6.2-.6 6.2-.6-1.8 2.5-4.2 3-4.2 3"/></g><path d="m32 39.9c-15.1 5.6-18.7 1.7-18.7-3.7 0-8.6 13.2-4.7 18.7-3.7 7.8 1.5 26.2 3.2 26.2-11 0-18.4-35.6-14.7-35.6-14.7v11c6.9-1.3 26.2-3.5 26.2 3.7 0 5.6-6.3 6.9-16.9 3.7-10.4-3.2-26.1-6.4-26.1 11.1 0 17.5 14.2 15.3 26.2 11 12.1-4.2 19.7-1.8 19.7 1.8 0 4.8-9.2 7.6-15 9 0 0-1.4-1.5-3.3-.6 0 0 .4.2.6.5 0 0-1.9 1-3.3 1 0 0 1.2 1.4 4 .6 0 0 .1.8-.2 1.3 0 0 1.8-.1 2.2-1.5 16.2-.4 21.6-3.6 21.6-11.2-.1-8.5-11.2-13.9-26.3-8.3" fill="#8cc63e"/><path d="m24.2 4.9c5.5 0 7.8 3.4 11.1 2.5 0 0-.9 2.7-4.2 2.2 0 0 2.2 2.5 6.2 1.8 0 0-2 4.1-6.2 2 0 0-.1 2.4 2.6 4.2 0 0-2.9 1.5-5.2-.1 0 0-.8.8.2 2.4 0 0-2.4-.3-3.3-1.9l-1.2-13.1" fill="#64892f"/><path d="m20.7 4.1c-5 0-8 2.7-8 4.6 0 .2 0 .5.1.7-.1.3-2.1-.7-3.4-.7-.7 0-1.4.2-2 .7-.5-1-1.5-1.6-2.6-1.6-1.5 0-2.8 1.2-2.8 2.7s1.3 2.8 2.8 2.8h13.1c1 0 1.9.8 1.9 1.8 0 1-.8 1.8-1.9 1.8h-14c-1 0-1.9.8-1.9 1.8 0 1 .8 1.8 1.9 1.8h16.9c4.7 0 8.4-3.7 8.4-8.3s-3.8-8.1-8.5-8.1" fill="#8cc63e"/><ellipse cx="15.7" cy="8.8" rx="1.9" ry="1.8" fill="#fff"/><ellipse cx="15.7" cy="8.8" rx=".9" ry=".9" fill="#3e4347"/><g fill="#64892f"><path d="m13.1 8.6c1.4.6 2.8-2.2 8.2-2 0 0-2.2-1.6-5.1-.7 0 0-.4-1 1.1-1.7 0 0-2.7-.3-3.4 2 0 0-.8-.2-1-1.2.1-.1-1.8 2.6.2 3.6"/><path d="m7.3 10.6c.7-.6 2.5-1.1 4.7.1 4.7 2.5 6-1.6 9 .1-2.8-.5-3.7 3.2-8.3 1.7-1.9-.6-2.9-1.7-4.3-.8-.9.6-1.7-.5-1.1-1.1"/></g><path d="m4.1 10.4c-.5-.3.6-1.9 1.1-1.6 1.4.6.3 2.3-1.1 1.6" fill="#3e4347"/><path d="m7.5 21c.9 2.2 2 2.3 2 2.3s-2.3.7-3.5-1c0 0 1.2 2.3 3 3.2 0 0-3.4 1.2-4.6-2.1 0 0-.3 1.8.6 2.8-6.9-3.6-.2-11.8 2.5-5.2" fill="#64892f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f40a.svg b/riot/emojione/svg/1f40a.svg new file mode 100644 index 0000000..d5dd7c6 --- /dev/null +++ b/riot/emojione/svg/1f40a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#64892f"><path d="m28.7 60.6l3-4.2c0 0-1.5-1-2.4-1.1-.9-.1-2.6.4-2.6.4l2 4.9"/><path d="m34.3 60.1l1.8-5c0 0-1.7-.5-2.6-.3-.9.2-2.3 1.2-2.3 1.2l3.1 4.1"/><path d="m39.5 58.9l1.3-5.2c0 0-1.7-.2-2.6 0-.9.3-2.2 1.6-2.2 1.6l3.5 3.6"/><path d="m57.8 45.9l-2-4.9c0 0-1.5 1.1-2 1.9-.5.8-.8 2.8-.8 2.8l4.8.2"/><path d="m60.9 38l-3.3-3.9c0 0-1.1 1.5-1.3 2.5-.2 1 0 2.9 0 2.9l4.6-1.5"/><path d="m62 28.6l-4.2-2.7c0 0-.7 1.8-.6 2.8 0 1 .8 2.8.8 2.8l4-2.9"/><path d="m60.7 19.8l-4.7-1.2c0 0-.1 2 .2 2.9.3.9 1.5 2.4 1.5 2.4l3-4.1"/><path d="m57.8 12.4l-4.8-.5c0 0 .1 2 .4 2.9.4.9 1.7 2.2 1.7 2.2l2.7-4.6"/><path d="m53.4 6.1l-4.5 1.8c0 0 .8 1.7 1.5 2.4.7.6 2.4 1.1 2.4 1.1l.6-5.3"/></g><path d="m26.4 44.7c-2-9.3-13.2-2.7-13 4.7.1 4.4-13.5 7.1-.2 7.1 3.1 0 5.4.6 6-5.6.2-2.2 9.4 3.7 7.2-6.2" fill="#769e2a"/><path d="m51 8.7c2.1.6 12.4 19.8 4.6 34.6-12.6 23.6-48.2 20.2-50.8-4.8-1.4-13.2 5.3-12.7 5.3-9-3.1-1.1-2.5 9.8 2.3 12.7 10.9 6.6 19.9-2 23-7.6 3.1-5.7.5-12.7.5-15.5s15.1-10.4 15.1-10.4" fill="#83b533"/><path d="m14.1 45.2c15.1 10.7 27.6-3.2 31.9-12.5 3.6-7.7 1.7-16.8.9-22.3-4.5 2.5-11.2 6.5-11.2 8.3 0 2.7 2.7 9.8-.5 15.5s-16.3 14.5-25.2 5.2c.9 2.1 2.6 4.7 4.1 5.8" fill="#ffd93b"/><g fill="#8cc63e"><path d="m53.5 48.2c-1.6-7.1-3.8-12-6.3-10.6s.6 10.1-2.9 15.8c-5.7 9.2 1.9 2.5 5.4 4.5 13.2 7.3 5.9-.4 3.8-9.7"/><path d="m54 49.3c-2.2-4.8-4.4-7.9-6-6.2-1.6 1.7 1.9 13.7 4.7 14.2 10.5 2.1 4.2-1.7 1.3-8"/></g><g fill="#d3b226"><path d="m36.8 27.1c1.8-.8 7.4-1.7 11-.6"/><path d="m36 32.5c1.9-.3 5.6.2 9 2.1"/><path d="m31.6 38.5c1.9.1 4.9 1 7.9 3.7"/><path d="m25.9 42c1.8.8 3.3 2.3 5.4 5.9"/><path d="m18 43.4c0 0 1 .4 1.5 4.6"/></g><path d="m34.7 37.6c0 1.4-.5 2.7-2 2.7s-2.8-1.1-2.8-2.5 2.8-3.8 4.3-3.8.5 2.2.5 3.6" fill="#769e2a"/><path d="m33.9 49.1c-2.2-10.2-14-3-13.8 5.2.1 4.9-14.4 7.7-.2 7.7 3.3 0 5.7.7 6.3-6.2.2-2.4 10 4.1 7.7-6.7" fill="#8cc63e"/><g fill="#64892f"><path d="m2 34.6l3.6 2.5c0 0 .6-1.6.6-2.5s-.6-2.5-.6-2.5l-3.6 2.5"/><path d="m2.8 41.1l4 1.5c0 0 .3-1.7.1-2.6-.2-.9-1.1-2.3-1.1-2.3l-3 3.4"/><path d="m4.9 47.3l4.2.5c0 0-.1-1.7-.4-2.5-.3-.8-1.5-1.9-1.5-1.9l-2.3 3.9"/><path d="m8.1 53.6l4.8-.7c0 0-.5-1.9-1-2.7-.5-.8-2.1-1.7-2.1-1.7l-1.7 5.1"/><path d="m13.9 58.8l4.3-2.4c0 0-1-1.6-1.7-2.2-.7-.5-2.5-.9-2.5-.9l-.1 5.5"/></g><path d="M50.6,11c1.9,1.8,6.1,6.3,3.7,10.2s-12.8,7.1-23.4,4.3S6,16.8,5.5,14.4s1.1-2.4,2.2-1.6S50.6,11,50.6,11z" fill="#83b533"/><ellipse cx="38.6" cy="7.6" rx="5.4" ry="5.6" fill="#8cc63e"/><ellipse cx="38.6" cy="7.6" rx="4.4" ry="4.6" fill="#fff"/><ellipse cx="38.6" cy="7.6" rx="3.1" ry="3.3" fill="#3e4347"/><path fill="#e8f94b" d="m7 12.1v3.3l2.2-1.2.2 2.5 2-1.7.9 3.4 2.6-2.1 1.3 3.6 3-2.5 1.7 4.3 5.3-3.7.4 5.3 3.8-3.4 1.9 4.8 3.4-4.5 2.6 5.2 3.2-5.2 2.8 5.1 1.8-5.3 3.9 3.4-.4-4.8 4.4 1.2-3.4-4.8 2.6-.2-2.7-2.7-17.2 4.5-17.4-2.4z"/><path d="m9.8 8.6c0 2.5-.7 2.4-1.6 2.4-.9 0-1.6.1-1.6-2.4 0-1.4.7-2.4 1.6-2.4.9-.1 1.6 1 1.6 2.4" fill="#8cc63e"/><ellipse cx="7.7" cy="8.6" rx=".6" ry="1.7" fill="#4b662b"/><g fill="#8cc63e"><path d="m4.5 10.7c-.3-6.3 16.2 6 36.9-2.3 5-2 9.8-.1 10.1 6.1.3 6.3-4.1 7.1-9.5 7.8-5.6.8-37.2-5.3-37.5-11.6"/><path d="m14.8 9.9c0 3.7-1 3.6-2.3 3.6-1.3 0-2.3.1-2.3-3.6 0-2 1-3.6 2.3-3.6 1.2 0 2.3 1.6 2.3 3.6"/></g><ellipse cx="12" cy="9.9" rx="1.3" ry="2.6" fill="#4b662b"/><ellipse cx="46.1" cy="7.6" rx="5.4" ry="5.6" fill="#8cc63e"/><ellipse cx="46.1" cy="7.6" rx="4.4" ry="4.6" fill="#fff"/><ellipse cx="46.1" cy="7.6" rx="3.1" ry="3.3" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f40b.svg b/riot/emojione/svg/1f40b.svg new file mode 100644 index 0000000..31bb739 --- /dev/null +++ b/riot/emojione/svg/1f40b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#0dccd1"><path d="m35.3 45.7c.6 3.7-.5 8.7-2.6 9.2-2.1.5-4.5-3.8-5.1-7.5-.6-3.7.9-5.6 3.1-6 2.1-.5 4.1.6 4.6 4.3"/><path d="m54.1 11.3c-3.8 0-6.8-4.3-7.3-2.3-.5 2.3 3.5 6.7 6 6.7 0 0-8.6 6.2-46.7 6.2-3.5 0-3.9 4.4-3.9 4.4 11 10.5 27.7 30.7 44.5 18.1 7.9-6 9.7-24.9 9.8-27.7 4.6-1.6 5.6-4.2 5.6-7.6-.1-3.4-2.4 2.2-8 2.2"/></g><path d="m2.2 26.4c0 0-.4 3.3 0 6 1.3 7.9 7.5 18.4 24.9 18.4 10.8 0 13-1.4 17.8-4.9.7-.5 1.3-1 1.8-1.5-15.2 4.1-26.7-7.4-26.7-16.5 0-1.6-11.8-2.1-17.8-1.5" fill="#dae5ef"/><g fill="#fff"><path d="m45.1 45.5c-3.2 1.4-6.8 2.1-10.4 1.9-3.6-.2-7.1-1.3-10.2-3.1-3.1-1.8-5.8-4.4-7.6-7.5-1.9-3.1-2.9-6.7-2.7-10.4l1.9.1c-.3 3.3.5 6.7 2.1 9.6 1.6 3 4 5.5 6.9 7.4 2.9 1.9 6.2 3.1 9.7 3.4 3.5.4 7.1-.1 10.3-1.4"/><path d="m39 49.3c-3.6.3-7.2.2-10.7-.5-3.5-.7-7-2-10-4.1-3-2.1-5.5-4.8-7.2-8.1-1.7-3.2-2.6-6.9-2.4-10.6l1.9.1c-.3 3.3.3 6.8 1.8 9.9 1.4 3.1 3.7 5.8 6.5 7.9 2.8 2.1 6.1 3.6 9.5 4.4 3.5 1 7.1 1.2 10.6 1"/><path d="m28.7 50.8c-3.2-.4-6.4-1-9.4-2.1-3-1.1-5.9-2.7-8.3-4.9-2.4-2.2-4.3-4.9-5.5-8-1.2-3-1.8-6.3-1.8-9.5h1.9c-.1 3.1.2 6.1 1.2 9.1 1 2.9 2.6 5.6 4.9 7.8 2.2 2.2 4.9 3.9 7.8 5.2 2.9 1.1 6 1.9 9.2 2.4"/><ellipse cx="29.3" cy="27" rx="2.2" ry="2.3"/></g><path d="m30.8 27c0 .9-.7 1.6-1.5 1.6s-1.5-.7-1.5-1.6c0-.9.7-1.6 1.5-1.6.8-.1 1.5.6 1.5 1.6" fill="#3e4347"/><path d="m26.6 28.6c.1 0 4.1 2.8 5.4-.6.7-1.8-5.4.6-5.4.6" fill="#0dccd1"/><g fill="#3e4347"><path d="m29.3 28.5c.3.1.5.1.8.1.3 0 .6.1.8.3.5.4.6 1 .7 1.5-.1-.3-.2-.5-.3-.7-.1-.2-.3-.4-.5-.6-.2-.1-.5-.2-.7-.3-.2 0-.5-.1-.8-.3"/><path d="m2.2 26.4c2.4-.4 4.8-.7 7.3-.7 2.5-.1 4.9.1 7.4.6 2.4.5 4.8 1.4 6.9 2.5 1.1.5 2.1 1.2 3.3 1.4 1.1.2 2.3-.3 3.4-.9-.9.8-2.1 1.4-3.4 1.3-1.3-.1-2.4-.7-3.5-1.2-2.2-1-4.5-1.8-6.8-2.3-2.3-.5-4.8-.7-7.2-.8-2.5 0-5 0-7.4.1"/></g><path d="m47 44.2c.7 4.8-.6 11.2-3.3 11.8-2.7.6-5.8-4.8-6.5-9.6-.7-4.8 1.2-7.1 3.9-7.7 2.7-.7 5.2.7 5.9 5.5" fill="#0dccd1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f40c.svg b/riot/emojione/svg/1f40c.svg new file mode 100644 index 0000000..b4204fa --- /dev/null +++ b/riot/emojione/svg/1f40c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.6 42.8c0 0-4.7-20.8-13.1-20.8-15.1 0-15.5 27.8-5.3 37 3.1 2.8 16.1 2.8 43.5 0 2.9-.3 1.8-3.1-2.3-5-2.7-1.3-15.8-3.7-22.8-11.2" fill="#94d82a"/><g fill="#769e2a"><ellipse cx="27.8" cy="39.8" rx="3.9" ry="6.7"/><ellipse cx="31.5" cy="53.4" rx="2.4" ry="2.7"/><ellipse cx="22.5" cy="48.5" rx="1.8" ry="3.1"/><ellipse cx="20.2" cy="36.4" rx="1.4" ry="2.1"/></g><path d="m9.6 26.1c0 1.2.4 2.3 1.1 2.9.3.3.7.5 1.1.7.2.1.4.1.6.1 0 0 .3 0 .4 0 .1 0 .2 0 .3 0 .9 0 1.8-.3 2.5-.9.7-.6 1.2-1.6 1.6-2.8.4 1.2.4 2.6-.4 3.8-.8 1.2-2.3 1.9-3.7 1.9-.2 0-.3 0-.5 0-.2 0-.3 0-.5-.1-.4-.1-.7-.2-1.1-.3-.7-.3-1.3-.8-1.6-1.5-.7-1.2-.6-2.8.2-3.8" fill="#3e4347"/><path d="m58.9 42.3c3.4-4.3 3.9-11.2 2-15.4-2.8-6.2-8.3-7.1-8.3-7.1-7.4-11.9-27.8-11.9-34 2.7 5.3 3.1 8.3 11.8 10 16.5 1.6 6.3 4.7 12 9.8 13.5 2.2.6 2.6-1.7 2.6-1.7 1.4 2 4.3 3.4 6.9 2.7 9.7-2.8 11-11.2 11-11.2" fill="#e08828"/><g fill="#94d82a"><path d="m14.5 24.2l-2.6.9-2.5-6.9 2.6-.9z"/><path d="m20.3 26.8l-2.5-1.1 3.1-6.7 2.5 1.2z"/><path d="m19 12.7c0 4.7-3.8 8.5-8.5 8.5-4.7 0-8.5-3.8-8.5-8.5 0-4.7 3.8-8.5 8.5-8.5 4.7.1 8.5 3.9 8.5 8.5"/></g><path d="m15.4 13c0 3.7-2.9 6.6-6.4 6.6-3.6 0-6.4-3-6.4-6.6 0-3.7 2.9-6.6 6.4-6.6 3.5 0 6.4 3 6.4 6.6" fill="#fcfcfa"/><path d="m14.6 13c0 2.5-2 4.6-4.4 4.6-2.4 0-4.4-2-4.4-4.6 0-2.5 2-4.6 4.4-4.6 2.5.1 4.4 2.1 4.4 4.6" fill="#3e4347"/><g fill="#93603b"><path d="m41.1 50.7c-1.9-2.9-3.3-6.2-4-9.6-.7-3.5-.7-7.1.1-10.6.8-3.5 2.5-6.9 5.3-9.3 1.4-1.2 3.1-2 4.9-2.3 1.8-.3 3.6 0 5.2.8-1.7-.4-3.4-.4-5 .1-1.6.5-2.9 1.4-4.1 2.5-1.1 1.1-2.1 2.5-2.8 4-.7 1.5-1.3 3-1.6 4.6-.8 3.2-.9 6.6-.5 9.9.5 3.4 1.3 6.7 2.5 9.9"/><path d="m58.9 42.3c-.7.9-1.6 1.6-2.6 2.2-1 .6-2.1 1-3.4 1.1-1.2.1-2.5-.3-3.6-1-1.1-.7-1.9-1.6-2.6-2.6-1.4-2-1.9-4.7-1.6-7.1.3-2.4 1.4-4.8 3.1-6.6.9-.9 1.9-1.7 3.2-2.1 1.2-.5 2.6-.6 3.9-.2 1.4.4 2.5 1.4 3.1 2.5.6 1.2.9 2.5.8 3.8-.1 1.3-.5 2.6-1.5 3.5-.9 1-2.5 1.5-3.8.8-1.3-.7-1.9-2.1-1.6-3.4.2-.7.6-1.2 1.2-1.5.3-.1.7-.2 1 0 .3.1.5.3.7.6-1-.9-2 .3-2.1 1.1-.1.9.5 1.9 1.3 2.2.4.2.8.1 1.3 0 .4-.1.8-.4 1.1-.7.6-.7.9-1.7.9-2.7 0-1-.2-2-.7-2.8-.5-.8-1.2-1.4-2.1-1.6-1.8-.5-3.8.4-5.2 1.9-2.8 2.9-3.7 7.9-1.6 11.5 1 1.8 2.7 3.3 4.8 3.4 2.1.1 4.3-1 6-2.3"/></g><path d="m34.3 12.7c0 5.4-4.4 9.7-9.8 9.7-5.4 0-9.8-4.4-9.8-9.7 0-5.4 4.4-9.7 9.8-9.7 5.4 0 9.8 4.4 9.8 9.7" fill="#94d82a"/><ellipse cx="22.7" cy="13.1" rx="7.4" ry="7.6" fill="#fcfcfa"/><path d="m29.3 13.1c0 2.9-2.3 5.3-5.1 5.3-2.8 0-5.1-2.4-5.1-5.3 0-2.9 2.3-5.3 5.1-5.3 2.8 0 5.1 2.4 5.1 5.3" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f40d.svg b/riot/emojione/svg/1f40d.svg new file mode 100644 index 0000000..6ad56b8 --- /dev/null +++ b/riot/emojione/svg/1f40d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.7 24.3c-.1-1-.3-1.9-.5-2.6-.4-1.4-.7-2.3-1-2.9-.3-.7-.6-1.1-.9-1.5-.5-.8-1-1.3-1.5-1.7-.9-.8-1.7-1.4-2.5-1.9-1.6-.9-3.2-1.5-4.7-2.1-3.1-1-6.2-1.6-9.2-2.1-6.1-1-12.2-1.4-18.3-1.9-1.5-.1-3-.3-4.5-.6-.4-.1 2-.9 3.2-1.3 6-1.6 12.1-2.6 18.2-3.2-6.1-.5-12.2-.7-18.3-.3-7.7.6-9.5 2.8-9.2 6.4.1.9.3 1.1.4 1.4.1.2.2.4.3.5.2.2.3.3.4.5.9.8 1.6 1.2 2.4 1.6.8.4 1.5.7 2.3 1 1.5.6 3 1 4.6 1.5 6.1 1.8 12.1 3.5 18 5.8 3 1.1 5.9 2.4 8.8 4 1.1.6-19.6 14.1-25.6 14.8l.7 19.5c6.1-2.1 12.2-4.4 18.3-7.9 1.5-.9 3.1-1.8 4.6-2.9 1.5-1.1 3-2.2 4.5-3.4 1.5-1.3 3-2.6 4.6-4.4.8-1 1.6-1.9 2.5-3.6.5-.9 1-1.8 1.6-4.1.3-1.1.6-2.8.7-5.1.3-1.3.2-2.4.1-3.5" fill="#8cc63e"/><g fill="#ffd93b"><path d="m50.5 27.6c-2.9-2.3-6.1-4-9.4-5.5-3.3-1.5-6.6-2.7-10-3.9-3.4-1.2-6.7-2.2-10.1-3.4-1.7-.6-3.4-1.2-5-2-.8-.4-1.6-.9-2.4-1.6-.4-.4-.7-.8-.9-1.3-.2-.5-.3-1.1-.3-1.8 0 .6-.2 2.5 3.7 4.2 1.6.7 3.4 1 5.1 1.5 3.4.8 6.8 1.5 10.3 2.4 3.4.8 6.9 1.7 10.3 2.8 3.4 1.2 6.8 2.6 10.1 4.7l-1.4 3.9"/><path d="m18 6.4c1.9-.7 3.7-1.1 5.5-1.6 1.8-.4 3.7-.8 5.5-1.1 3.7-.6 7.4-1 11-1.1-3.7.4-7.3 1.1-11 2-1.8.5-3.6 1-5.4 1.5-1.8.6-3.6 1.2-5.3 2l-.3-1.7"/></g><g fill="#8cc63e"><path d="m46 33.6l-2.3-4c4.6-2.9 5.4-5 5.7-6.9.3-1.8-.3-3.3-1.5-4.4l2.3-5.2c2.7 2.5 4 6.5 3.4 10.8-.7 4.9-3.7 8.7-7.6 9.7"/><path d="m22.9 9.4c-5.3-.4-6.2-1.1-6.2-4.4h1.2c0 1.8 0 2.2 5.1 2.7l-.1 1.7"/></g><path d="m31.7 51.5l2.4-.6c.8-.2 1.5-.4 2.3-.6 1.5-.4 3.1-.9 4.6-1.5 3-1.1 6.1-2.5 8.9-4.2 2.9-1.8 5.7-3.9 8-6.8 1.1-1.5 2.2-3.2 2.9-5.2.7-2 1.1-4.2 1-6.5.3 2.3.2 4.7-.3 6.9-.5 2.3-1.4 4.4-2.5 6.2-2.1 3.7-4.8 6.7-7.7 9.2-8 8-19.1 8.3-19.1 8.3l-.5-5.2" fill="#ffd93b"/><path d="m2.1 50.4c.3-1.2 1.5-2.3 2.6-2 1.1.3 1.7 1.8 1.4 3-.3 1.2-1.3 1.5-2.4 1.3-1.1-.3-1.9-1-1.6-2.3" fill="#e8f94b"/><path d="m2.9 50.7c.2-.8.9-1.4 1.6-1.3.7.2 1 1.1.8 1.9-.2.8-.8 1-1.5.8-.6-.2-1.1-.7-.9-1.4" fill="#252728"/><path d="m2 50.4c.3-1.3 1.6-2.5 2.8-2.2 1.2.3 1.8 1.9 1.5 3.3-1.9-1.6-4.3-1.1-4.3-1.1" fill="#4b662b"/><path d="m3.1 54.5c-.4-9.8 13-15.1 21.5-15.5 8.4-.4 15.3-.2 15.8 9.6.4 9.8-6.4 11.1-14.8 12.2-8.8 1.3-22 3.6-22.5-6.3" fill="#8cc63e"/><g fill="#4b662b"><path d="m8 55.2c-.3.9-.9 1.7-1.2 1.6-.4-.1-.4-1.1-.1-2 .3-.9.7-1.4 1.1-1.2.3 0 .5.6.2 1.6"/><path d="m4.8 54.3c0 .6-.2 1.2-.5 1.2-.2 0-.4-.6-.4-1.3 0-.6.2-1 .5-1s.4.4.4 1.1"/></g><path d="m12.9 52.3c0-2.7 2.1-5.6 4.7-5.6 2.6 0 4.7 2.9 4.7 5.6 0 2.7-2.1 3.9-4.7 3.9-2.6 0-4.7-1.2-4.7-3.9" fill="#e8f94b"/><path d="m14.7 52.5c0-1.7 1.3-3.5 2.9-3.5s2.9 1.8 2.9 3.5-1.3 2.4-2.9 2.4-2.9-.8-2.9-2.4" fill="#252728"/><g fill="#4b662b"><path d="m12.6 52.4c0-2.9 2.2-6 5-6 2.8 0 5 3.1 5 6-5-2.4-10 0-10 0"/><path d="m39.3 32.3c5.3.8 12.2 2.8 15 6.3 0 0-2-7.2-8.2-10.7-.2.2-.5.4-.7.6-1.8 1.1-3.9 2.4-6.1 3.8"/><path d="m44 44.7c0 0-1.4-7-7.1-11-2.4 1.4-4.8 2.7-7 3.8 5.2 1.2 11.7 3.6 14.1 7.2"/><path d="m47.4 26.6c4.2-.6 10.2-.2 12.9 1 0 0-3.8-4.9-10.9-5.4 0 0-.3 2.5-2 4.4"/><path d="m59.4 17.3c-.5-.8-1-1.3-1.5-1.7-.4-.3-.7-.6-1-.9-5.4 1.6-7.1 5.8-7.1 5.8 2.3-1.9 6.5-1.5 10.5-1.7 0 0 0 0 0-.1-.4-.6-.7-1.1-.9-1.4"/><path d="m22.3 12.1c.6-1.6 2.6-3.1 4.5-4.2-1.1-.1-2.2-.2-3.4-.3-1.2 2.2-1.1 4.5-1.1 4.5"/><path d="m16.4 10.2c1.1-1.3 3.9-2.2 6.1-2.6-.8-.1-1.5-.2-2.3-.3-.7-.1-1.2-.3-1.5-.4-1.8 1.5-2.3 3.3-2.3 3.3"/><path d="m47.7 10.8c-2.3 4-2.5 7.9-2.5 7.9 1.2-2.5 4.1-4.6 7.3-6.4-.6-.3-1.3-.5-1.9-.7-1-.3-1.9-.5-2.9-.8"/><path d="m33.4 14.6c.7-2.1 3.4-4 5.9-5.4-1.4-.2-2.8-.4-4.3-.5-1.8 2.7-1.6 5.9-1.6 5.9"/><path d="m40.3 9.4c-1.3 3.5-1.3 6.6-1.3 6.6.9-2.1 3-4.2 5.4-5.9-1-.2-2-.4-3-.6-.4 0-.7-.1-1.1-.1"/><path d="m27.9 13.8c.7-2 3.3-3.9 5.6-5.3-1.4-.1-2.8-.3-4.2-.4-1.5 2.7-1.4 5.7-1.4 5.7"/><path d="m17.6 6.6c0 0-1.9-1.2-4.3-1.4-.5.7-.7 1.6-.8 2.6 1.7-.9 3.6-1.5 5.1-1.2"/><path d="m18.9 5.6c0 0-.2-1.4-.9-2.9-.7.1-1.3.3-1.8.5 1.2.7 2.2 1.5 2.7 2.4"/><path d="m30.5 2.9c0 0 0-.3 0-.9-.1 0-.3 0-.4 0 .1.3.3.6.4.9"/><path d="m25.7 3.9c0 0 0-.8-.1-1.8-.3 0-.7 0-1 0 .5.6.9 1.2 1.1 1.8"/><path d="m34.9 2.6c0 0 0-.1 0-.4-.1 0-.1 0-.2 0 .1.1.2.3.2.4"/><path d="m22.1 2.2c-.1 0-.2 0-.4 0-.3 0-.6.1-1 .1.7.7 1.3 1.5 1.6 2.2 0 0 0-1-.2-2.3"/><path d="m32.9 2.6c0 0 0-.2 0-.5-.1 0-.1 0-.2 0 .1.2.2.3.2.5"/><path d="m28.2 3.3c0 0 0-.5-.1-1.3-.2 0-.5 0-.7 0 .4.4.7.9.8 1.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f40e.svg b/riot/emojione/svg/1f40e.svg new file mode 100644 index 0000000..b7ba4df --- /dev/null +++ b/riot/emojione/svg/1f40e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#89664c"><path d="m11 8.5c0 0 2.2-2.1 5.4-2l-.6 1.5c0 0 2.5-.7 5.7.5l-1.4 1c0 0 3.4.9 4.4 2.2l-1.9.2c0 0 3 1.2 4.1 3l-1.4.3c0 0 3 1.9 3.5 4.1l-1.8-.3c0 0 1.7 2.5 1.9 4.6l-1-.5.2 1.4-17.1-16"/><path d="m60.8 29.2c2.6-4-7.9-6.1-12.1-.4v1.3c0 0 8.6-2.5 6.6 2.4-2.2 5.5 6.6 10 6.6 10s-4.7-7.6-1.1-13.3"/><path d="m9.2 9.2c0 0-.7-1.5-.3-4.2 0 0 2 1.4 3.4 4.5l-3.1-.3"/></g><path d="m12.7 56.1l.6-4.4c0 0-.9 0-1.8-.2-.3.8-.6 2.2-.9 3.9 1.1.6 2.1.7 2.1.7" fill="#574137"/><path d="m27.2 45c-.7.5-1.5 1.2-2.1 1.8l-3.5-1c0 0 3.2-4.9 10.7-8.1 0 0-8.5-3.1-11.4 1 0 0-3.8 5.7-5.1 7-1.3 1.4.1 2.6.7 2.8.6.2 9.7 1 9.7 1s1.2-1 2.8-1.7c-.6-1.4-1.3-2.3-1.8-2.8" fill="#89664c"/><path d="m28.5 44c0 0-.6.4-1.4 1 .5.5 1.2 1.4 1.9 2.8.7-.3 1.6-.5 2.3-.4.1 0-1.1-2.5-2.8-3.4" fill="#574137"/><path d="m38.3 33.4l-.8 5.8c0 0 7.9 1.3 11.2.1 0 0 2.9 7.2 8.4 11.7.4-.7.9-1.9 1.2-3.6-2.1-1.3-5.4-4.4-6.9-10.8 0-.1-6.4.7-13.1-3.2" fill="#89664c"/><path d="m57.1 51c.7.6 1.5 1.2 2.3 1.7 0 0 .8-2 .9-4.3 0 0-.8-.2-1.9-1-.4 1.7-.9 2.9-1.3 3.6" fill="#574137"/><g fill="#b7805c"><path d="m44.8 25c-8 1-15.7 3-17.1-1.4-5.8-17.9-16.7-15.1-16.7-15.1-1.9-2.3-3.8-2.6-3.8-2.6-.2 2.2.7 4.1.7 4.1-.6 2.9-5.4 12.1-5.9 13.3-.5 1.3 2.9 3.4 2.9 3.4.7-.1.9-1.3 2.4-1.2.4 0-.7 1.4-.3 1.6.8.3 1.7-2 3.4-2.9 6.1-3.3 4.1-5.5 4.1-5.5 2.5 1.7 1.1 5.5 0 7.5-2.5 4.7.1 11.5.1 11.5-2.5 1.9-7.9 3-7.9 3-1.9 9.8 1.5 13.4 3.9 14.7.3-1.7.6-3.1.9-3.9-.9-.2-1.9-.8-2.3-1.8-.7-2.1.7-6.8.7-6.8 6.5.8 10.5-1.2 15.2-2.4 4.6-1.1 9.1-.3 13.6.4 17 3 14.8-17 6.1-15.9"/><path d="m37.7 40.2c4.4 10 14 4.5 14 4.5-2.2 6.1-.6 10.3.8 12.5 1.2-.6 1.9-2 2.3-2.8-3.1-3.5-.9-8.1-.3-9.9.7-2-.3-3.3-.3-3.3-2.7-.6-4.2 1.2-7.4-2.9-3.2-4-9.1 1.9-9.1 1.9"/></g><g fill="#574137"><path d="m53.9 59c1.5-.1 2-3.5 2-3.5-.4-.3-.8-.7-1.1-1-.4.8-1.1 2.2-2.3 2.8.7 1.1 1.4 1.7 1.4 1.7"/><path d="m34.1 35.1c0 0 .3 2.2-1.2 5.2 0 0 1.2 0 2.2.1 0 0 .9-1 1.2-5.1l-2.2-.2"/></g><path d="m28.2 24.5c0 0 2.4 2.6.9 4.8-2 3 4.1 8.6 11 5.5 4.9-2.2.2-7.7 2.4-9.7-.1 0-8.3 1.8-14.3-.6" fill="#8cc63e"/><g fill="#333"><path d="m5.4 22.3l-.5-.5c5.7-5.3 7-7.5 7-7.5l.6.4c0 0-1.3 2.3-7.1 7.6"/><path d="m13.2 15.3c-.8-1.2-1.8-2.3-2.8-3.3-1-1-2.1-1.6-2.6-2 0 0-.1.5-.2.8.4.4 1.4.9 2.3 1.8 1.4 1.4 3.2 3.9 4.8 7.5.2-.1.5-.6.6-.6-.7-1.5-1.2-2.9-2.1-4.2"/><path d="m6.8 25.6c.2-.1.7 0 .7 0-1.2-3.2-3.1-5.3-3.8-5.7l-.3.7c.2.1.5.3.9.8.6.6 1.8 2.3 2.5 4.2"/></g><path d="m7.3 15.9c0 0 1 .4 1.7-.4.7-.8.3-2.9.3-2.9s-1.4 1-2 3.3" fill="#574137"/><path d="m2.9 23c0 0 1.3-.2.9 1.4-.5 1.5-1-.9-.9-1.4" fill="#89664c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f40f.svg b/riot/emojione/svg/1f40f.svg new file mode 100644 index 0000000..2cf3e57 --- /dev/null +++ b/riot/emojione/svg/1f40f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.9 36.8c-.6-.9-1.5-1.5-2.6-1.5-1.7 0-3.1 1.5-3.1 3.4v12.3c0 1.9 1.4 3.4 3.1 3.4 1.7 0 3.1-1.5 3.1-3.4v-4.5-7.9c0-.5-.2-1.2-.5-1.8" fill="#8d9ba3"/><path d="m47.3 54.6c1.7 0 3.1-1.5 3.1-3.4h-6.2c0 1.8 1.4 3.4 3.1 3.4" fill="#3e4347"/><path d="m41.7 38.4c-.8-1.3-2-2.2-3.4-2.2-2.3 0-4.2 2.2-4.2 5v15.8c0 2.8 1.9 5 4.2 5 2.3 0 4.2-2.2 4.2-5v-6.5-9.2c-.1-1.1-.4-2-.8-2.9" fill="#8d9ba3"/><path d="m38.3 62c2.3 0 4.2-2.2 4.2-5h-8.3c-.1 2.8 1.8 5 4.1 5" fill="#3e4347"/><path d="m28.9 38.4c-.8-1.3-2-2.2-3.4-2.2-2.3 0-4.2 2.2-4.2 5v15.8c0 2.8 1.9 5 4.2 5 2.3 0 4.2-2.2 4.2-5v-6.5-9.2c-.1-1.1-.3-2-.8-2.9" fill="#8d9ba3"/><path d="m25.5 62c2.3 0 4.2-2.2 4.2-5h-8.3c-.1 2.8 1.8 5 4.1 5" fill="#3e4347"/><path d="m58.1 33.6c-.7-1.2-1.8-2-3-2-2 0-3.6 2-3.6 4.5v16.3c0 2.5 1.6 4.5 3.6 4.5 2 0 3.6-2 3.6-4.5v-5.9-10.3c.1-1-.2-1.8-.6-2.6" fill="#8d9ba3"/><path d="m55.1 57.1c2 0 3.6-2 3.6-4.5h-7.3c.1 2.4 1.7 4.5 3.7 4.5" fill="#3e4347"/><g fill="#dae5ef"><ellipse cx="38.3" cy="34.6" rx="14.3" ry="13.9"/><ellipse cx="22.1" cy="33.5" rx="14.3" ry="13.9"/><ellipse cx="25.5" cy="21.4" rx="14.3" ry="13.9"/><ellipse cx="37.9" cy="21.4" rx="14.3" ry="13.9"/><ellipse cx="52.6" cy="29.2" rx="9.1" ry="8.9"/><ellipse cx="52.8" cy="39.3" rx="9.1" ry="8.9"/><ellipse cx="49.4" cy="40.7" rx="9.1" ry="8.9"/><ellipse cx="22.6" cy="43.4" rx="9.1" ry="8.9"/><ellipse cx="41.1" cy="43.4" rx="9.1" ry="8.9"/><ellipse cx="31.9" cy="47.2" rx="9.1" ry="8.9"/></g><path d="m51.4 33.8c.1-3.7-.5-6.8-1.7-8.6-1.9-1.1-5.2-1.7-9.3-1.6-.1 3.7.5 6.8 1.7 8.6 1.9 1.1 5.2 1.6 9.3 1.6" fill="#8d9ba3"/><path d="m49 31.5c.1-2.1-.3-3.8-1-4.8-1.1-.6-2.9-1-5.2-.9-.1 2.1.3 3.8 1 4.8 1 .6 2.9.9 5.2.9" fill="#3e4347"/><path d="m23.5 23.5c-4-.1-7.3.4-9.3 1.6-1.2 1.8-1.9 4.8-1.8 8.5 4 .1 7.3-.4 9.3-1.6 1.2-1.7 1.9-4.7 1.8-8.5" fill="#8d9ba3"/><path d="m21 25.7c-2.3-.1-4.1.2-5.3.9-.7 1-1.1 2.7-1 4.8 2.3.1 4.1-.2 5.3-.9.7-.9 1.1-2.6 1-4.8" fill="#3e4347"/><path d="m46.4 26c0 10.7-6.5 19.4-14.5 19.4s-14.5-8.7-14.5-19.4c0-6.2 1.2-14.4 14.5-14.4 13.3 0 14.5 8.2 14.5 14.4" fill="#8d9ba3"/><ellipse cx="24" cy="28.2" rx="4.9" ry="4.7" fill="#fff"/><ellipse cx="24" cy="28.2" rx="3.4" ry="3.3" fill="#3e4347"/><ellipse cx="39.7" cy="28.2" rx="4.9" ry="4.7" fill="#fff"/><g fill="#3e4347"><ellipse cx="39.7" cy="28.2" rx="3.4" ry="3.3"/><path d="m24.6 37.3c3.5.6 3.7.6 5.4 4"/><path d="m39.2 37.3c-3.5.6-3.7.6-5.4 4"/></g><g fill="#89664c"><path d="m58.1 5c-1.2-1.3-2.7-2.2-4.2-2.6-1.5-.5-3.2-.4-4.7-.1-3.1.7-5.9 2.9-7.8 6-1 1.6-1.7 3.4-2.2 5.3-.2.9-.4 1.9-.5 2.9-.2 2 3.8 2.6 4.4-1.4.2-1.3.8-2.6 1.4-3.7 1.3-2.3 3.2-3.9 5.4-4.5 1.1-.3 2.2-.4 3.2-.1 1 .3 2 .8 2.9 1.6 1.7 1.6 2.8 4.3 2.9 7.1.1 2.6-1.2 5.3-3.1 6.4-.9.6-2 .9-3 .7-1-.2-1.9-.9-2.6-1.9-.7-1-1-2.3-1-3.6 0-1.2.5-2.4 1.3-3.1.8-.7 1.9-1 2.7-.6.8.4 1.5 1.5 1.6 2.6 0 0 0 0 0 .1 0 .7.5 1.3 1.1 1.3.6 0 1-.6 1-1.4v-.1c0 0 0 0 0 0-.1-2.2-1.2-4.2-2.8-5.1-.8-.4-1.7-.5-2.5-.4-.4.1-.8.2-1.2.4-.2.1-.4.2-.6.4l-.2.2c-.1.1-.2.2-.3.2-1.4 1.2-2.3 3.2-2.4 5.4-.1 2.1.4 4.2 1.4 5.8 1 1.6 2.5 2.8 4.1 3.2 1.6.4 3.3 0 4.7-.8 1.5-.8 2.7-2.2 3.6-3.9.9-1.7 1.4-3.7 1.4-5.8 0-4-1.5-8-4-10.5"/><path d="m5.9 5c1.2-1.3 2.7-2.2 4.2-2.6 1.5-.5 3.2-.4 4.7-.1 3.1.7 5.9 2.9 7.8 6 1 1.6 1.7 3.4 2.2 5.3.2.9.4 1.9.5 2.9.2 2-3.8 2.6-4.4-1.4-.2-1.3-.8-2.6-1.4-3.7-1.3-2.3-3.2-3.9-5.4-4.5-1.1-.3-2.2-.4-3.2-.1-1 .2-2.1.8-2.9 1.6-1.7 1.6-2.8 4.3-2.9 7.1-.1 2.6 1.2 5.3 3.1 6.4.9.6 2 .9 3 .7 1-.2 1.9-.9 2.6-1.9.7-1 1-2.3 1-3.6 0-1.2-.5-2.4-1.3-3.1-.8-.7-1.9-1-2.7-.6-.8.3-1.5 1.4-1.5 2.6 0 0 0 0 0 .1 0 .7-.5 1.3-1.1 1.3-.6 0-1-.6-1-1.4v-.1c0 0 0 0 0 0 .1-2.2 1.2-4.2 2.8-5.1.8-.4 1.7-.5 2.5-.4.4.1.8.2 1.2.4.2.1.4.2.6.4l.2.2c.1.1.2.2.3.2 1.4 1.2 2.3 3.2 2.4 5.4.1 2.1-.4 4.2-1.4 5.8-1 1.6-2.5 2.8-4.1 3.2-1.6.4-3.3 0-4.7-.8-1.5-.8-2.7-2.2-3.6-3.9-.9-1.7-1.4-3.7-1.4-5.8-.1-4 1.4-8 3.9-10.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f410.svg b/riot/emojione/svg/1f410.svg new file mode 100644 index 0000000..445e63f --- /dev/null +++ b/riot/emojione/svg/1f410.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m19.3 13.6c.5-6.7 8.5-7 8.5-7-10.2-3.6-12.5 6.6-11.9 7.4.8.9 3.3 1.2 3.4-.4" fill="#947151"/><g fill="#c2aca1"><path d="m56.6 26.6c-1.1-2.4 2-10.8 2-10.8s7.6 8.6.2 12.7c-.4.2-2-1.5-2.2-1.9"/><path d="m10.8 38.1c0 0-2.8-4.6 1.2-10.3l-5.7 2.6c-2.7 5.3 4.5 7.7 4.5 7.7"/></g><path d="m59.6 48.5c-1.5-4.1-1.1-5.8-1.1-5.8 3.8-6.9 1.2-16.7-2.6-17.3-13.6-2.4-31.2 1.6-31.2-3 0-9.5-8-15.4-14.3-9.6-4.5 4.2-.9 5.6-7.8 14.2-1.6 1.9.2 3.4 3.3 4 1 .2 1.3.1 3.8-1.2 2.4-1.3 5.8.3 6.7-4.2 0 0-.5 11.2 6.3 18.9 0 0 1.4 4-1.3 14.9h3.3l3-8.3c0 0-.6-5.9 1.3-5.3 5.9 2.1 20.5-1.5 20.5-1.5 1.4 2.8 5.9 5.5 5.9 5.5s-1.4 3.3-1.2 9.6h3.5c.2-2.4 1.9-10.9 1.9-10.9" fill="#f1e7dc"/><g fill="#947151"><path d="m20.7 62h3.2l.6-2.5h-3.3c-.2 1.5-.5 2.5-.5 2.5"/><path d="m54.1 59.5c-.2 1.5-.1 2.5-.1 2.5h3.4c0 0 0-1 .2-2.5h-3.5"/></g><ellipse cx="12.2" cy="18.9" rx="1.5" ry="1.5" fill="#3e4347"/><g fill="#c2aca1"><path d="m4.5 27.7c-.1.2-.6.5-.8.3-.2-.1-.1-.6.1-.9.1-.2.4-.3.6-.1.2.2.2.5.1.7"/><path d="m9.6 25.3c.3 1.2 0 2.5-.7 3.6-.3.5-.8 1-1.3 1.4-.5.4-1.1.6-1.7.8 1-.7 1.9-1.4 2.5-2.4.3-.5.5-1 .7-1.6.2-.6.4-1.2.5-1.8"/></g><path d="m19.7 16.4c6.2-.2 5.5-8.6 4.5-8.1-1.6.8-6.6 3.1-6.6 5.9 0 .5-.6 2.3 2.1 2.2" fill="#f1e7dc"/><path d="m19 13.6c.5-1.6 4.1-3.4 4.7-3.6.6-.3.6 4-3.4 5.7-.4.2-.8.2-1-.1-.2-.3.7-.9 1.3-1.2.7-.3-.1-.2-.6-.1-.5.2-.2-.2.2-.4.4-.3-.6 0-1 .4-.4.4-.5.4-.2-.7" fill="#c2aca1"/><path d="m17.1 12.7c-1.8-7.5 6.9-10.7 6.9-10.7-12.6-.4-11.5 11.7-10.5 12.3 1.2.7 4 .2 3.6-1.6" fill="#947151"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f411.svg b/riot/emojione/svg/1f411.svg new file mode 100644 index 0000000..19d8b9e --- /dev/null +++ b/riot/emojione/svg/1f411.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.7 36.8c-.6-.9-1.5-1.5-2.6-1.5-1.8 0-3.2 1.5-3.2 3.4v12.3c0 1.9 1.4 3.4 3.2 3.4s3.2-1.5 3.2-3.4v-4.5-7.9c0-.5-.2-1.2-.6-1.8" fill="#8d9ba3"/><path d="m43.1 54.6c1.8 0 3.2-1.5 3.2-3.4h-6.3c0 1.8 1.4 3.4 3.1 3.4" fill="#3e4347"/><path d="m36.4 38.4c-.8-1.3-2-2.2-3.5-2.2-2.3 0-4.2 2.2-4.2 5v15.8c0 2.8 1.9 5 4.2 5 2.3 0 4.2-2.2 4.2-5v-6.5-9.2c0-1.1-.2-2-.7-2.9" fill="#8d9ba3"/><path d="m32.9 62c2.3 0 4.2-2.2 4.2-5h-8.5c.1 2.8 2 5 4.3 5" fill="#3e4347"/><path d="m23.4 38.4c-.8-1.3-2-2.2-3.5-2.2-2.3 0-4.2 2.2-4.2 5v15.8c0 2.8 1.9 5 4.2 5 2.3 0 4.2-2.2 4.2-5v-6.5-9.2c0-1.1-.2-2-.7-2.9" fill="#8d9ba3"/><path d="m19.9 62c2.3 0 4.2-2.2 4.2-5h-8.5c.1 2.8 2 5 4.3 5" fill="#3e4347"/><path d="m54.1 33.6c-.7-1.2-1.8-2-3-2-2 0-3.7 2-3.7 4.5v16.3c0 2.5 1.7 4.5 3.7 4.5 2 0 3.7-2 3.7-4.5v-5.9-10.3c0-1-.3-1.8-.7-2.6" fill="#8d9ba3"/><path d="m51.1 57.1c2 0 3.7-2 3.7-4.5h-7.4c0 2.4 1.6 4.5 3.7 4.5" fill="#3e4347"/><g fill="#dae5ef"><ellipse cx="32.9" cy="34.6" rx="14.5" ry="13.9"/><ellipse cx="16.5" cy="33.5" rx="14.5" ry="13.9"/><ellipse cx="50.5" cy="28.2" rx="9.3" ry="8.9"/><ellipse cx="52.7" cy="37.3" rx="9.3" ry="8.9"/><ellipse cx="46.3" cy="39.7" rx="9.3" ry="8.9"/><ellipse cx="17" cy="43.4" rx="9.3" ry="8.9"/><ellipse cx="35.8" cy="43.4" rx="9.3" ry="8.9"/><ellipse cx="26.4" cy="47.2" rx="9.3" ry="8.9"/></g><path d="m46.3 33.8c.1-3.7-.5-6.8-1.8-8.6-1.9-1.1-5.3-1.7-9.5-1.6-.1 3.7.5 6.8 1.8 8.6 2 1.1 5.3 1.6 9.5 1.6" fill="#f4a19a"/><path d="m43.8 31.5c.1-2.1-.3-3.8-1-4.8-1.1-.6-3-1-5.3-.9-.1 2.1.3 3.8 1 4.8 1.1.6 3 .9 5.3.9" fill="#3e4347"/><path d="m17.9 23.5c-4.1-.1-7.5.4-9.5 1.6-1.3 1.8-1.9 4.8-1.8 8.5 4.1.1 7.5-.4 9.5-1.6 1.2-1.7 1.8-4.7 1.8-8.5" fill="#f4a19a"/><path d="m15.4 25.7c-2.3-.1-4.2.2-5.4.9-.7 1-1.1 2.7-1 4.8 2.3.1 4.2-.2 5.4-.9.7-.9 1-2.6 1-4.8" fill="#3e4347"/><path d="m41.2 26c0 10.7-6.6 19.4-14.8 19.4-8.2 0-14.8-8.7-14.8-19.4 0-6.2 6.6-6.4 14.8-6.4 8.2 0 14.8.2 14.8 6.4" fill="#f4a19a"/><ellipse cx="18.4" cy="28.2" rx="5" ry="4.7" fill="#fff"/><path d="m18.4 25c1.9 0 3.5 1.5 3.5 3.3 0 1.8-1.5 3.3-3.5 3.3-1.9 0-3.5-1.5-3.5-3.3 0-1.9 1.6-3.3 3.5-3.3" fill="#3e4347"/><ellipse cx="34.4" cy="28.2" rx="5" ry="4.7" fill="#fff"/><g fill="#3e4347"><ellipse cx="34.4" cy="28.2" rx="3.5" ry="3.3"/><path d="m19 37.3c3.6.6 3.8.6 5.5 4"/><path d="m33.8 37.3c-3.6.6-3.8.6-5.5 4"/></g><g fill="#dae5ef"><ellipse cx="11.1" cy="16.8" rx="8.8" ry="8.4"/><ellipse cx="41.7" cy="16.8" rx="8.8" ry="8.4"/><ellipse cx="26.4" cy="13.5" rx="12" ry="11.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f412.svg b/riot/emojione/svg/1f412.svg new file mode 100644 index 0000000..713e48d --- /dev/null +++ b/riot/emojione/svg/1f412.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#89664c"><path d="m50.4 59.9c-2.5 0-4.7-1.2-5.5-1.7-.9-.5-1.2-1.7-.7-2.6.5-.9 1.7-1.2 2.6-.7 2.2 1.2 3.9 1.5 5.2.9 1.6-.7 3.8-3.2 5.4-10.6 1.4-6.7 1.5-15.6-1.6-19.4-.9-1.2-2.1-1.7-3.6-1.7-3.6 0-4.6 2.5-4.6 3.9 0 .4.1 2.1 1.6 2.1.3 0 .7-.1 1-.5.3-.4.4-.9.3-1.5-.2-1 .5-2 1.5-2.2 1-.2 2 .5 2.2 1.5.3 1.7 0 3.4-1.1 4.6-1 1.2-2.5 1.9-4 1.9-3.1 0-5.3-2.5-5.3-5.9 0-1.9.8-3.8 2.1-5.2 1.1-1.1 3-2.5 6.3-2.5 2.6 0 4.9 1.1 6.5 3.1 4.1 5.1 3.8 15.3 2.3 22.5-1.5 7.3-4 11.7-7.5 13.3-1 .6-2.1.7-3.1.7"/><path d="m30 27.9l-1.9 13.4c-4.9 0-6.1 9.1-4.7 17.5.1.8 5.5 1.7 5.5 1.7-1-5.3.4-7.9.4-7.9-.3 4.7.3 9.5 8.4 9.5 7.5 0 11.6-2.6 12-9.5 1.2-22-19.7-24.7-19.7-24.7"/></g><g fill="#e0ac7e"><path d="m23.5 57.8c-2.4 1-8.4 1.5-6.9 4.2h11.9c1.9-2.7-1.8-5.6-5-4.2"/><path d="m38.5 54.2c0 0-1.9-11.2-10.4-13-8.4-1.8-3.4-4.6.9-3.6 10.5 2.3 9.5 16.6 9.5 16.6"/></g><path fill="#89664c" d="m27.9 36.6h-9.5l-6.4 20.5 3.2 3.5z"/><path d="m14.8 57.3c-1.9-2.3-4.8.7-6.3 1.8-.7.5-4.5.6-3.3 2.9h8.2c2.6-.8 2.5-3.3 1.4-4.7" fill="#e0ac7e"/><ellipse cx="38.8" cy="21.2" rx="5.9" ry="5.9" fill="#89664c"/><ellipse cx="38.8" cy="21.2" rx="3.8" ry="3.8" fill="#ffc5d3"/><ellipse cx="7.9" cy="21.2" rx="5.9" ry="5.9" fill="#89664c"/><ellipse cx="7.9" cy="21.2" rx="3.8" ry="3.8" fill="#ffc5d3"/><g fill="#89664c"><path d="m31.4 5.4c.8-.4 1.3-.6 1.3-.6-2.3-.8-4.3-1.3-6-1.5.9-.7 1.5-.9 1.5-.9-14.5-2.1-21.4 6.3-21.4 13.8h33c-.4-5.2-3.3-8.8-8.4-10.8"/><path d="m39.9 17.3c0-6.9-7.4-12.5-16.6-12.5-9.2 0-16.6 5.6-16.6 12.5 0 1.6.4 3.2 1.2 4.6-.7 1.4-1.2 3-1.2 4.6 0 6.9 7.4 12.5 16.6 12.5 9.2 0 16.6-5.6 16.6-12.5 0-1.6-.4-3.2-1.2-4.6.8-1.4 1.2-2.9 1.2-4.6"/></g><path d="m37.6 17.8c0-12-14.2-4.4-14.2-4.4s-14.3-7.6-14.3 4.4c0 3.4 2.1 6.4 5.3 8.3-.9 1.2-1.5 2.6-1.5 4 0 4.3 4.7 7.8 10.4 7.8 5.8 0 10.4-3.5 10.4-7.8 0-1.5-.6-2.9-1.5-4 3.3-1.9 5.4-4.9 5.4-8.3" fill="#e0ac7e"/><g fill="#3b302a"><ellipse cx="24.9" cy="25.3" rx=".7" ry="1.5"/><ellipse cx="21.8" cy="25.3" rx=".7" ry="1.5"/><ellipse cx="29.5" cy="20.3" rx="2.5" ry="3.2"/><ellipse cx="17.2" cy="20.3" rx="2.5" ry="3.2"/><path d="m30.4 30.6c.4 1.1-2.7 3.3-7.1 3.3-4.4 0-7.5-2.2-7.1-3.3.5-1.1 13.8-1.1 14.2 0"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f413.svg b/riot/emojione/svg/1f413.svg new file mode 100644 index 0000000..349de85 --- /dev/null +++ b/riot/emojione/svg/1f413.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m9.7 23.4c1.6 2.7 3.4 3 4.7 1.5 2-2.4-.2-5.5-2.5-6.3-3.9-1.5-7.3 3-7.3 3s3.7-.5 5.1 1.8" fill="#f29a2e"/><path d="m55.6 15c-9.1-5.5-19.8-1.2-21.9 9.3-.5 2.6-1.3 12.4 5.8 9.1.3.8 1 1.5 1.9 2.3 2.4 1.9 1.1 7 1.1 7s7.2-3.4 4.4-11.6c4.1 0 7 7.3 7 7.3s2.8-7 .8-13.3c3.7-.4 7.2 5 7.2 5s1.8-10.2-6.3-15.1" fill="#e24b4b"/><g fill="#f4bc58"><path d="m32.1 62h-13c0-1.1 7.6-1.3 7.9-8.8 1.3 8.4 5.1 7.7 5.1 8.8"/><path d="m19.3 58.1l-8-9.6c.6-.7 5.4 4.8 9.5.4-3.7 6.1-1 8.5-1.5 9.2"/></g><g fill="#947151"><path d="m41.4 33.4c0 10.4-7.1 18.8-16 18.8-8.8 0-16-8.4-16-18.8 0-6.9 1.3-22 6.2-22 15.3 0-3.9 19.9 9.7 19.9 9 0 16.1-8.3 16.1 2.1"/><path d="m32.7 50.1c0 2.2-3 6.8-5.6 6.8s-5.6-3.1-5.6-5.3c0-2.1 11.2-2.5 11.2-1.5"/></g><path d="m38.8 31.4c-.2 4.6-8.1 11.6-12.5 11.6-4.4 0-8-3.7-8-8.2 0-7.6 3.8-3.9 8.2-3.9 4.4 0 12.8-6.8 12.3.5" fill="#3e4347"/><path d="m8.7 28.9l.6 10.9 2.5-3.1 2.9 3.6.6-5 4.5 3.3-.8-4.8 5.4.6-2.5-3 3.7-2.5c0 0-4.5 1-4.4-1.8.1-2.8 3-11 1.1-13.4-1.9-2.4-10.1 0-10.1 0l-3.5 15.2" fill="#f4bc58"/><ellipse cx="8.7" cy="19.5" rx=".6" ry=".3" fill="#3e4347"/><ellipse cx="14.6" cy="19.9" rx="4.3" ry="4.2" fill="#e24b4b"/><ellipse cx="14.3" cy="19.5" rx="2.1" ry="1.6" fill="#3e4347"/><g fill="#e24b4b"><path d="m9.5 34.3c.3 3.9-2.5 5.7-4.6 5.5-3.4-.3-3.4-5.2-1.9-8.1 2.6-5 9-15.3 9-15.3s-2.8 14.4-2.5 17.9"/><path d="m23.2 13.1c0-.5 0-1.1 0-1.7-.2-3.4 3.4-6.5 3.4-6.5s-6-.9-8.6 4.2c-.3.6-.5 1.3-.7 2-.1-.5-.3-1-.5-1.6-1.1-3.1 1.5-7.5 1.5-7.5s-5.9 1.5-6.9 7.3c-.2 1.2-.2 2.5.1 3.7-.1-.1-.2-.2-.3-.3-1.9-1.8-1.4-6.2-1.4-6.2s-3.9 3.8-2.8 8.6c.6 2.8 3.1 5.5 5.2 3.2.6-.7 2.2-1.8 3.2-2.1.7-.2 2.5-.1 3.6.8 1 .9 1.8 2.4 3.3 2.4 6.4.3 7.6-8.9 7.6-8.9s-3.3 1.7-6.7 2.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f414.svg b/riot/emojione/svg/1f414.svg new file mode 100644 index 0000000..34dfab5 --- /dev/null +++ b/riot/emojione/svg/1f414.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m7.6 20.4c1.8 2.9 3.8 3.3 5.2 1.6 2.2-2.6-.2-5.9-2.8-6.8-4.3-1.7-8 3.1-8 3.1s4.1-.4 5.6 2.1" fill="#f29a2e"/><path d="m42.8 10.2c-7.7 4.5-1.3 15.3-15.2 18.2l14.8 7.3c3 5.2 11.3 5.6 11.3 5.6s2.1-6.2.4-10.8c4.6 0 7.8-2.8 7.8-2.8s-2.6-9.2-10.5-9.2c7.8-3.2 9.2-9.8 9.2-9.8s-6.9-4.8-17.8 1.5" fill="#e1eaf2"/><path d="m35.7 62h-14.3c0-1.2 8.4-1.4 8.8-9.4 1.3 8.9 5.5 8.2 5.5 9.4" fill="#f4bc58"/><g fill="#d1dce6"><path d="m49.4 30.6c0 11.5-9.4 23.3-21 23.3-11.6 0-21-11.8-21-23.3 0-7.7 16.6-2.3 21-2.3 11.6-.1 21-9.3 21 2.3"/><path d="m36.4 49.2c0 2.3-3.3 7.3-6.2 7.3-2.9 0-6.2-3.4-6.2-5.7 0-2.3 12.4-2.7 12.4-1.6"/></g><path d="m6.5 26.3c0 3 .6 11.7.6 11.7l2.7-3.4 3.2 3.8.7-5.3 4.9 3.5-.9-5.2 5.9.6-2.7-3.2 4.1-2.7c0 0-5 1.1-4.9-2 .1-3.1 2.6-11.9-.5-13.2-5.7-2.1-13.1 2.7-13.1 15.4" fill="#e1eaf2"/><g fill="#3e4347"><ellipse cx="6.5" cy="16.1" rx=".7" ry=".3"/><circle cx="11.5" cy="16.7" r="1.5"/></g><g fill="#e24b4b"><path d="m7.8 23.6c0 3.2-2.1.9-2.1.9-.7 0-3.6 2.2-2.6-1.5 1.3-4.8 6.3-8 6.3-8s-1.6 2.8-1.6 8.6"/><path d="m20.8 10.6c0-.4 0-.8 0-1.2-.2-2.5 3.4-3.5 3-4.8-.6-1.7-5.3-.6-7.6 3.1-.3.4-.5.9-.6 1.5-.1-.4-.2-.8-.4-1.2-1.1-2.3 2.2-4.4 1.2-5.5-1.3-1.5-5.2 1.1-6.1 5.4-.2.9-.2 1.8.1 2.7-.1-.1-.2-.2-.3-.2-1.7-1.3 0-4-1.2-4.6-1.8-.8-3.4 2.8-2.5 6.3.6 2 2.8 4.1 4.6 2.4.6-.5 2-1.3 2.8-1.6.6-.2 2.2-.1 3.2.6.9.6 1.6 1.8 2.9 1.8 5.7.2 8.8-5.3 6.7-6.5-1.1-.8-2.8 1.2-5.8 1.8"/></g><path d="m42.5 43.9c-.9-2.2-3.5-3.4-3.5-3.4 2.7-1.4 4.3-4.4 4.3-4.4-1.4-.6-6.8-1-6.8-1 1.2-1.2 2.2-2.9 2.2-2.9s-6.2-1.5-11.4 1.3c-6.8 3.8-4.8 12.8 2.9 13.8 8.5 1.1 12.3-3.4 12.3-3.4" fill="#e1eaf2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f415.svg b/riot/emojione/svg/1f415.svg new file mode 100644 index 0000000..7fded5c --- /dev/null +++ b/riot/emojione/svg/1f415.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M14.1,46.2C8,45.7,3,38,3,38c0,9.5,8.4,13,12.2,11.7C18.6,48.6,14.1,46.2,14.1,46.2z" fill="#947151"/><path d="m41.3 56c1.7 2 9.5 0 10.8-2.3 5.1-9.5 0-15.6 0-15.6l-10.8 3.3c0 .1-2.2 12.1 0 14.6" fill="#eabc92"/><path d="m34 60.4c1.9 2.2 8.8 2.1 10.8 0 3-3 2.8-16.7 3-23.3l-12.7-1.1c0 0-3.5 21.5-1.1 24.4" fill="#f5d1ac"/><path d="m26.7 56c-1.7 2-9.5 0-10.8-2.3-5.1-9.5 0-15.6 0-15.6l10.8 3.3c0 .1 2.3 12.1 0 14.6" fill="#eabc92"/><path d="m34.1 60.4c-1.9 2.2-8.8 2.1-10.8 0-3-3-2.8-16.7-3-23.3l12.7-1.1c0 0 3.5 21.5 1.1 24.4" fill="#f5d1ac"/><path d="m34 60.5c-.3-2.1-.4-4.2-.4-6.3 0-2.1.1-4.2.4-6.3.3 2.1.4 4.2.4 6.3 0 2.1-.1 4.2-.4 6.3" fill="#423223"/><path d="m34 46.5c-10.2 0-15.4-4-15.4-4s3.4 9.1 15.4 9.1 15.4-9.1 15.4-9.1-5.2 4-15.4 4" fill="#3e4347"/><path d="m31.1 49c0-1.4.6-2.5 1.3-2.6-.2-.2-.5-.3-.7-.3-.9 0-1.6 1.3-1.6 2.9 0 1.6.7 2.9 1.6 2.9.3 0 .5-.2.7-.4-.7 0-1.3-1.1-1.3-2.5" fill="#fff"/><path d="m19.5 43c-6.1-3.8-8.5-18.7-6.5-25.4 1.5-5 7-12.4 12-14.4 4.2-1.6 13.9-1.6 18.1 0 5 1.9 10.6 9.3 12 14.4 2 6.8.5 21.6-5.6 25.4-12.8 8-17.2 8-30 0" fill="#f5d1ac"/><path d="m9.9 19.1c3.2 6.9 4 7.2 7.1-1 1.6-4.4.5-7 2.4-9.8 1.1-1.6 3.5-4.1 3.5-4.1s-19.2 1.9-13 14.9" fill="#423223"/><path d="m18 3.9c-4.8 3-15.1 1.8-9 14.8 3.2 6.9 4 7.2 7.1-1 1.6-4.4.5-7 2.4-9.8 1.1-1.6 4.4-3.7 4.4-3.7s-1.5-2.4-4.9-.3" fill="#947151"/><path d="m58.2 19.1c-3.2 6.9-4 7.2-7.1-1-1.6-4.4-.5-7-2.4-9.8-1.1-1.6-3.5-4.1-3.5-4.1s19.2 1.9 13 14.9" fill="#423223"/><path d="m50.1 3.9c4.8 3 15.2 1.8 9.1 14.8-3.2 6.9-4 7.2-7.1-1-1.6-4.4-.5-7-2.4-9.8-1.1-1.6-4.4-3.7-4.4-3.7s1.4-2.4 4.8-.3" fill="#947151"/><path d="m21.2 19.2c3 0 5.4 2.3 5.4 5.2s-2.4 5.2-5.4 5.2c-3 0-5.4-2.3-5.4-5.2s2.5-5.2 5.4-5.2" fill="#fff"/><ellipse cx="19.9" cy="24.4" rx="4" ry="3.9" fill="#3e4347"/><path d="m52.2 24.4c0 2.9-2.4 5.2-5.4 5.2-3 0-5.4-2.3-5.4-5.2s2.4-5.2 5.4-5.2c3 0 5.4 2.3 5.4 5.2" fill="#fff"/><ellipse cx="48.2" cy="24.4" rx="4" ry="3.9" fill="#3e4347"/><path d="m24.8 40.1l4.2 4.2c2.5 2.5 7.7 2.5 10.2 0l4.2-4.2-4.4-4.3h-9.9l-4.3 4.3" fill="#7d644b"/><path d="m34 32.1c0 0-4.4 6.1-3.8 9 .7 4.2 7 4.2 7.7 0 .5-2.9-3.9-9-3.9-9" fill="#f15a61"/><path d="m34 42.7l1-5.9h-1.9l.9 5.9" fill="#ba454b"/><path fill="#423223" d="m29.5 33.8h9v4h-9z"/><path d="m48.3 34.7l-6.4-6.5c-3.9-3.9-11.8-3.9-15.6 0l-6.4 6.5c-1.8 1.8-1.8 4.8 0 6.7 1.8 1.8 4.8 1.8 6.6 0l6.4-6.5c.6-.6 1.8-.6 2.4 0l6.4 6.5c1.8 1.8 4.8 1.8 6.6 0 1.8-1.8 1.8-4.8 0-6.7" fill="#947151"/><g fill="#3e4347"><path d="m28.7 28.7c0-2.3 2.4-2.7 5.3-2.7 2.9 0 5.3.4 5.3 2.7 0 1.8-4.2 3.4-5.3 3.4-1 0-5.3-1.6-5.3-3.4"/><path d="m27.1 30.7l-.9.9.9.9.9-.9z"/><path d="m25 33.1l-.9.9.9.9.9-.9z"/><path d="m27.8 34l-.9.9.9.9.9-.9z"/><path d="m41 30.7l.9.9-.9.9-.9-.9z"/><path d="m43.1 33.1l.9.9-.9.9-.9-.9z"/><path d="m40.3 34l.9.9-.9.9-.9-.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f416.svg b/riot/emojione/svg/1f416.svg new file mode 100644 index 0000000..a3f0422 --- /dev/null +++ b/riot/emojione/svg/1f416.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m53.9 31.8c-.7-.2-1.3-.7-1.7-1.3-.4-.6-.7-1.4-.7-2.1 0-.4 0-.8 0-1.1.1-.4.2-.8.3-1.1.3-.7.7-1.4 1.3-1.9.1-.1.1-.1.2-.2l.1-.1.1-.1c.2-.1.3-.2.5-.3.3-.2.7-.4 1-.6.7-.3 1.5-.5 2.3-.5.8 0 1.6.2 2.3.6.4.2.7.5 1 .9.3.4.5.8.5 1.3 0 .5-.1 1-.3 1.3-.2.4-.5.7-.8 1-.6.5-1.4.9-2.2 1-.4.1-.8.1-1.2 0-.4-.1-.8-.3-1.1-.6-.3-.5-.5-1-.5-1.4 0-.4.1-.8.3-1.2.3-.7.8-1.3 1.3-1.8.5-.5 1.1-1 1.7-1.4 1.2-.8 2.4-1.5 3.7-2.1-1.2.8-2.3 1.6-3.4 2.5-.5.4-1 .9-1.5 1.4-.4.5-.8 1.1-1.1 1.6-.1.3-.2.6-.2.9 0 .3.1.5.3.6.3.3 1 .4 1.5.3.6-.1 1.1-.4 1.6-.8.4-.4.7-.9.6-1.4 0-.4-.4-.9-.9-1.1-.5-.3-1.1-.4-1.7-.4-1.2 0-2.4.5-3.4 1.3-.5.4-.9.9-1.2 1.5-.1.3-.3.6-.3.9-.1.3-.1.6-.2.9 0 .6.1 1.3.4 1.9.4.6.9 1.2 1.4 1.6" fill="#a5627a"/><path d="m35.4 50.4v-14.9c0-3.6 2-5.4 4.6-5.4 2.5 0 4.6 1.8 4.6 5.4v14.9c-.1 3.6-9.2 3.6-9.2 0" fill="#ea83a3"/><path d="m40 55.9c0-3 .9 0 4.6 0 0 0 0-4.2 0-5.4h-9.1c-.1 3.5 2 5.4 4.5 5.4" fill="#a5627a"/><path d="m49 52.8v-14.9c0-3.6 2-5.4 4.6-5.4 2.5 0 4.6 1.8 4.6 5.4v14.9c-.1 3.6-9.2 3.6-9.2 0" fill="#ea83a3"/><path d="m53.6 58.2c0-3 .9 0 4.6 0 0 0 0-4.2 0-5.4h-9.2c0 3.6 2 5.4 4.6 5.4" fill="#a5627a"/><g fill="#ea83a3"><path d="m59 38.3c0 9.5-2.7 15.3-23.5 15.3h-19v-29.7h27c7.4 0 15.5 2.2 15.5 14.4"/><path d="m7.9 38.7c0-9.5 1.3-15.3 11.5-15.3h9.3v29.7h-13.2c-3.7 0-7.6-2.2-7.6-14.4"/><path d="m29.4 55.3v-19c0-4.6 2.6-6.9 5.8-6.9 3.2 0 5.8 2.3 5.8 6.9v19c0 4.6-11.6 4.6-11.6 0"/></g><path d="m35.2 62.2c0-3.8 1.1 0 5.8 0 0 0 0-5.3 0-6.9h-11.6c0 4.6 2.6 6.9 5.8 6.9" fill="#a5627a"/><path d="m21.7 55.3v-19c0-4.6-2.6-6.9-5.8-6.9-3.2 0-5.8 2.3-5.8 6.9v19c-.1 4.6 11.6 4.6 11.6 0" fill="#ea83a3"/><path d="m15.8 62.2c0-3.8-1.1 0-5.8 0 0 0 0-5.3 0-6.9h11.6c.1 4.6-2.5 6.9-5.8 6.9" fill="#a5627a"/><path d="M17,10.5C15,6.9,2.3,8,2.3,8S0.8,20.9,4.5,22.9C7.3,24.4,18.5,13.4,17,10.5z" fill="#fc97b2"/><path d="m14.6 12.4c-1.2-2.2-9.1-1.6-9.1-1.6s-.9 8 1.4 9.2c1.7 1.1 8.6-5.8 7.7-7.6" fill="#ffd7e4"/><path d="m47.6 22.8c3.6-1.9 2.5-14.6 2.5-14.6s-13-1.5-15 2.2c-1.5 2.8 9.6 13.9 12.5 12.4" fill="#fc97b2"/><path d="m45.6 20.4c2.2-1.2 1.6-9 1.6-9s-8-.9-9.3 1.4c-1 1.7 5.9 8.5 7.7 7.6" fill="#ffd7e4"/><path d="m47.7 30.2c0 14-9.7 16.6-21.6 16.6-11.9 0-21.6-2.6-21.6-16.6 0-14 13.2-24 21.6-24 8.4 0 21.6 10 21.6 24" fill="#fc97b2"/><path d="m37.4 38.6c0 6.5-5.1 5.7-11.3 5.7-6.2 0-11.3.7-11.3-5.7 0-6.5 5.1-9.8 11.3-9.8 6.3 0 11.3 3.3 11.3 9.8" fill="#ffd7e4"/><g fill="#bf7b90"><ellipse cx="21.1" cy="37.2" rx="2.8" ry="5"/><ellipse cx="31.2" cy="37.2" rx="2.8" ry="5"/><path d="m26.1 16.8c0 0-2.4-8.1-7.8-9.6 0 0 2.4-1.4 4.2-.7 0 0 .1-1.5-1.5-2.5 0 0 3.5-.7 5.2 1.7 0 0 .2-2.6-.4-3.9 0 0 5.8 1.4 7.2 6.2.1 0-5.7 1.8-6.9 8.8"/></g><g fill="#493b30"><ellipse cx="13" cy="26.4" rx="2.5" ry="4.5"/><ellipse cx="39.3" cy="26.2" rx="2.5" ry="4.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f417.svg b/riot/emojione/svg/1f417.svg new file mode 100644 index 0000000..d134de1 --- /dev/null +++ b/riot/emojione/svg/1f417.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 14.8c-2.4-4.5-18.2-3.1-18.2-3.1s-1.9 16 2.7 18.5c3.5 1.9 17.4-11.8 15.5-15.4" fill="#89664c"/><path d="m17.6 17.2c-1.5-2.8-11.3-1.9-11.3-1.9s-1.1 10 1.7 11.5c2.2 1.2 10.8-7.3 9.6-9.6" fill="#2b2118"/><path d="M58.7,30.1c4.5-2.4,3.1-18.1,3.1-18.1s-16.1-1.9-18.6,2.7C41.3,18.2,55,32,58.7,30.1z" fill="#89664c"/><path d="m56.2 27.1c2.8-1.5 1.9-11.2 1.9-11.2s-10-1.1-11.6 1.7c-1.1 2.2 7.5 10.7 9.7 9.5" fill="#2b2118"/><path d="M58.8,39.4C58.8,56.8,46.8,60,32,60S5.2,56.8,5.2,39.4S21.7,9.5,32,9.5S58.8,22,58.8,39.4z" fill="#89664c"/><g fill="#fff"><path d="m19.7 47.3c-11.9 5.8-8.7-19-8.7-19-9.2 23.8 1.8 27.6 9.6 26.4l-.9-7.4"/><path d="m44.3 47.3c11.9 5.8 8.7-19 8.7-19 9.2 23.8-1.8 27.6-9.6 26.4l.9-7.4"/></g><path d="m32 22.6c0 0-3-10-9.7-11.9 0 0 3-1.7 5.2-.9 0 0 .1-1.8-1.8-3.1 0 0 4.3-.9 6.5 2.1 0 0 .3-3.2-.5-4.8 0 0 7.1 1.7 9 7.8 0 0-7.3 2.1-8.7 10.8" fill="#5c4533"/><g fill="#2b2118"><ellipse cx="18.6" cy="34.6" rx="3.1" ry="5.6"/><path d="m45.4 28.8c1.7 0 3.1 2.5 3.1 5.6s-1.4 5.6-3.1 5.6c-1.7 0-3.1-2.5-3.1-5.6s1.4-5.6 3.1-5.6"/></g><path d="m46 49.8c0 8.1-6.3 7.2-14 7.2-7.8 0-14 .9-14-7.2s6.3-12.1 14-12.1c7.8-.1 14 4 14 12.1" fill="#fc97b2"/><g fill="#7a495a"><ellipse cx="25.7" cy="48" rx="3.4" ry="6.3"/><ellipse cx="38.3" cy="48" rx="3.4" ry="6.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f418.svg b/riot/emojione/svg/1f418.svg new file mode 100644 index 0000000..80479aa --- /dev/null +++ b/riot/emojione/svg/1f418.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#6b7b7f"><path d="m59.8 44.2c1.4-7.1-2.4-14.9-2.4-15l1.1-.6c.2.3 4 8.3 2.5 15.8l-1.2-.2"/><path d="m60.9 40.4c-1.2 1.6-2 3.2-2.3 4.5 0 1.2.4 2.7 1.1 4.1 1.2-1.6 2-3.2 2.3-4.5 0-1.2-.4-2.7-1.1-4.1"/><path d="m23.9 33.1h11.9v24.9h-11.9z"/></g><g fill="#808f96"><path d="m25.5 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.8-2.4 1.6-2.4"/><path d="m28.8 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/><path d="m32 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/></g><path fill="#9caaaf" d="m25.7 33h11.9v25h-11.9z"/><g fill="#ffc5d3"><path d="m27.3 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/><path d="m30.6 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c-.1-1.3.7-2.4 1.6-2.4"/><path d="m33.8 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/></g><path fill="#6b7b7f" d="m41.5 33.1h11.9v24.9h-11.9z"/><g fill="#808f96"><path d="m43.2 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c-.1-1.3.7-2.4 1.6-2.4"/><path d="m46.4 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/><path d="m49.6 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/></g><path fill="#9caaaf" d="m46.3 33h11.9v25h-11.9z"/><g fill="#ffc5d3"><path d="m47.9 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/><path d="m51.1 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/><path d="m54.4 55.6c.9 0 1.6 1.1 1.6 2.4h-3.2c0-1.3.7-2.4 1.6-2.4"/></g><g fill="#9caaaf"><path d="m59.6 32c0 9-5.3 16.7-11.8 16.2-4.3-.3-13-2.1-17.3-2.3v-30.2h17.3c6.5 0 11.8 7.3 11.8 16.3"/><path d="m26 32.8c-7.7 4.2-11.5-1.5-12.1-1.2-1.1.5-2-.7-1.3-1.5 3.1-3.4-8.1-4.2-8.1-4.2 1.7-3.8 6.8-17 13-18.7 6.2-1.7 8.6-1.8 11.9.4 4.3 3 3.7 21.4-3.4 25.2"/><path d="m9.3 48.1c4.3 2.2 10.7 1.4 13.3-3.2 1-1.8-1.1-1.2-2.7-2.2-1.6-1-2.2-3-3.2-1.3-.7 1.2-2.5.8-3.6.2-1.4-.8-2.5-2.3-2.8-4.1-.5-2.4.2-5.2 1.9-8.3 1-1.8.5-3.9-1.1-4.9s-5.1-1.1-6.1.7c-6.9 12.1-.3 20.8 4.3 23.1"/></g><path d="m48.2 22.8c0 10.8-6.6 15-14.8 15s-9.2-6.8-9.2-15.1 1-14.9 9.2-14.9c8.2 0 14.8 4.2 14.8 15" fill="#808f96"/><path d="m47.3 21.8c0 10.5-6.5 14.6-14.5 14.6-8 0-9.5-6.6-9.5-14.6 0-4-1.3-9.8 0-12.5 0 0 5.5-2.2 9.5-2.2 8 .1 14.5 4.2 14.5 14.7" fill="#9caaaf"/><path d="m44.1 22.4c0 8-4.6 11.1-10.2 11.1-8.7 0-3.8-5.2-3.8-11.4s-1.1-10.8 3.8-10.8c5.7 0 10.2 3.1 10.2 11.1" fill="#ffc5d3"/><path d="m16.3 18.5c2-.5 4 .7 4.5 2.6.6 1.9-.6 3.9-2.5 4.4-2 .5-4-.7-4.5-2.6-.6-1.9.5-3.9 2.5-4.4" fill="#42ade2"/><path d="m16.6 19.8c1.3-.3 2.6.4 2.9 1.7.4 1.2-.4 2.5-1.6 2.8-1.3.3-2.6-.4-2.9-1.7-.4-1.3.4-2.5 1.6-2.8" fill="#3e4347"/><path d="m14.9 30c-1.1-2.2.6-5.3 3.7-6.8 3.1-1.5 6.5-.9 7.6 1.3 1.1 2.2-.6 5.3-3.7 6.8-3.2 1.6-6.6 1-7.6-1.3" fill="#9caaaf"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f419.svg b/riot/emojione/svg/1f419.svg new file mode 100644 index 0000000..fa59238 --- /dev/null +++ b/riot/emojione/svg/1f419.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22.3 35.7c10.7 2.4 7.3 8.6-1.8 8.1-9.2-.5-15.9-19.4-16-22.8-.2-3.5 10.1 13 17.8 14.7" fill="#c28fef"/><path d="m4.5 21.2c2.7 3.6 8.5 14.1 14.1 16.1 5.5 2 6.8 4.6 5.6 6.3-1.1.2-2.3.3-3.6.2-9.1-.5-16.1-17.6-16.1-22.6" fill="#ffe2b3"/><path d="m25.1 34.9c8.9-6.4 11.3.3 4.8 6.7-6.5 6.5-25-1.2-27.7-3.3-2.6-2.2 16.5 1.2 22.9-3.4" fill="#c28fef"/><path d="m2.5 38.5c4.5.4 16.2 3.1 21.4.3 5.2-2.7 8-2 8.4.1-.6.9-1.3 1.9-2.3 2.8-6.5 6.3-24.3-.3-27.5-3.2" fill="#ffe2b3"/><path d="m16.1 44.4c5.8-9 13.9-6.2 10.4 2-3.6 8.3-17.5 9.6-20.8 8.4-3.3-1.1 6.2-4 10.4-10.4" fill="#c28fef"/><path d="m26.5 46.4c-3.6 8.3-16.6 10.3-20.7 8.5-.1-.1-.2-.1-.3-.1.2-1.4 8-3.1 12.4-8 3.6-4 7.3-5 9.5-4-.1.9-.3 2.2-.9 3.6" fill="#ffe2b3"/><path d="m16.1 61.9c3.8 1 15.6-6 16.5-15 .8-8.8-8.3-9.5-11.1.9-2 7.4-8.8 13.2-5.4 14.1" fill="#c28fef"/><path d="m32.8 47c-.8 8.5-10.9 15.4-16 15-1.2-1.9 5.7-5.9 9-12.1 2-3.6 4.5-5.5 6.6-5.9.3.8.5 1.9.4 3" fill="#ffe2b3"/><path d="m41.7 35.7c-10.7 2.4-7.3 8.6 1.8 8.1 9.2-.5 15.9-19.4 16-22.8.2-3.5-10.1 13-17.8 14.7" fill="#c28fef"/><path d="m59.5 21.2c-2.7 3.6-8.5 14.1-14.1 16.1-5.5 2-6.8 4.6-5.6 6.3 1.1.2 2.3.3 3.6.2 9.1-.5 16.1-17.6 16.1-22.6" fill="#ffe2b3"/><path d="m38.9 34.9c-8.9-6.4-11.3.3-4.8 6.7 6.5 6.5 25-1.2 27.7-3.3 2.6-2.2-16.5 1.2-22.9-3.4" fill="#c28fef"/><path d="m61.5 38.5c-4.5.4-16.2 3.1-21.4.3-5.2-2.7-8-2-8.4.1.6.9 1.3 1.9 2.3 2.8 6.5 6.3 24.3-.3 27.5-3.2" fill="#ffe2b3"/><path d="m47.9 44.4c-5.8-9-13.9-6.2-10.4 2 3.6 8.3 17.5 9.6 20.7 8.5 3.4-1.2-6.1-4.1-10.3-10.5" fill="#c28fef"/><path d="m37.5 46.4c3.6 8.3 16.6 10.3 20.7 8.5.1-.1.2-.1.3-.1-.2-1.4-8-3.1-12.4-8-3.6-4-7.3-5-9.5-4 .1.9.3 2.2.9 3.6" fill="#ffe2b3"/><path d="m47.9 61.9c-3.8 1-15.6-6-16.5-15-.8-8.8 8.3-9.5 11.1.9 2 7.4 8.8 13.2 5.4 14.1" fill="#c28fef"/><path d="m31.2 47c.8 8.5 10.9 15.4 16 15 1.2-1.9-5.7-5.9-9-12.1-2-3.6-4.5-5.5-6.6-5.9-.3.8-.5 1.9-.4 3" fill="#ffe2b3"/><path d="m15.6 21.8c0-26.4 32.7-26.4 32.7 0 0 16.5-6.9 23.4-16.4 23.4s-16.3-6.9-16.3-23.4" fill="#c28fef"/><g fill="#29251c"><circle cx="24.9" cy="30.9" r="3"/><circle cx="40.3" cy="30.9" r="3"/><path d="m32 39.4c-2.4 0-4.5-.8-4.5-1.8 0-.1 0-.2.1-.3.1-.1.2-.1.4-.1.2 0 .3.1.6.2.6.2 1.7.7 3.5.7 1.8 0 2.9-.5 3.4-.7.3-.1.4-.2.6-.2.2 0 .4.1.4.4 0 .9-2.1 1.8-4.5 1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f41a.svg b/riot/emojione/svg/1f41a.svg new file mode 100644 index 0000000..fb691d4 --- /dev/null +++ b/riot/emojione/svg/1f41a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffecd6"><path d="m11.4 4.3c-9.7-6.7-11.7 2.7-7 9.7 4.6-2.3 5.8-7.2 7-9.7"/><path d="m11.3 22.3c3.1-4.1 6.2-9.3 7.9-14.7-1.9-2.1-4.7-3.3-6.7-2.7-.7 2.8-2.5 4.8-4.3 6.9-1.1 1.3-2 2.7-3.2 3.9-1.8 3.5-.5 9.6 1.6 11.4 1.7-1.4 3.3-2.9 4.7-4.8"/><path d="m38.6 54.4c3.6 0 23 2.5 23-5.6 0-18.7-2.4-34.4-25.6-34.4-2.7 7.2-4.3 6.6-1.6 0-1.5-5-8.7-8.6-14.4-6.4-1.5 5.1-4.2 10.4-7.1 14.2-1.8 2.4-3.7 4.6-5.9 6.6 0 16.2 17.7 25.6 31.6 25.6"/></g><path d="m13 4.8c0 0-1.1.1-2-.7-2.6 6.3-7 9.4-7 9.4 1.1 1.6.6 3.3.6 3.3 1.4-1.5 6.2-5.5 8.4-12" fill="#ddb199"/><path d="m24.7 29.9c-1.8 2 33.8 32.3 33.8 29.3 0-3.4-.5-3.5-.6-5.3-.1-1.8 2.6-8.8-.4-13-1.3-1.8-6.3-8.6-7.5-10.5-1.2-1.9-10.3-4.8-12.4-5-2.1-.4-11.1 2.5-12.9 4.5" fill="#29251c"/><path d="m58.8 48.7c-1-.8-8.9-.9-12.9-2.8-5.7-2.8-10.5-4.7-12-8.9-1.4-3.9-2.4-8.3-2.6-10.3-.1-1.1-6.3 2.9-6.6 3.2-1.8 2-1.6 6 .4 10.7 2 4.8 8.5 10.7 9.6 10.8 1 .1 8.4 6.1 11.2 6.6 2.9.4 3.6.2 4.3.8.7.6 2.2 1.8 3 1.8.5 0 2.6 1.4 3.9.7 1.6-.2 1.6-3 1.4-6-.1-2.7 1.6-5.6.3-6.6" fill="#c1875d"/><path d="m52.2 58.2c-5.5-.5-22.6-8.8-26-17.7-1.5-3.9.5-9.5.3-11.5-.1-1.1-1.5.6-1.7.8-1.8 2-4 7.7-2.1 12.5 4.8 12.5 26.4 19.7 30.6 19.7 2.7 0 4.2-.8 4.2-.8s-1.7-2.7-5.3-3" fill="#ffd6bb"/><g fill="#ddb199"><path d="m20.8 7.7c-1.5.2-2.3-.9-2.3-.9-2.2 7-9.7 17.4-12.5 19.5.9 1.3 1 3.7 1 3.8 3.6-3.4 11.5-12.9 13.8-22.4"/><path d="m31 27.1c0 0 3.7-5.4 6.3-12.6 0 0-2 .1-3.1-.8-2.7 6.6-7.9 14.3-7.9 14.3l4.7-.9"/><path d="m23.8 31.7c.5-.7 5.9-3.2 9.8-3.5 13.1-.9 24 13.6 24.7 20.5.2 1.6-1.4 3.7-1.4 5 0 3.3 1.6 5.2 1.6 5.2s.1-3 1.2-5.1c.2-.4 2.3-3.6 2.2-5.1-.1-13.6-16.6-25.4-26.5-24.7-6.1.4-10.2 4.6-10.7 5.1-1.7 1.4-1.6 3.6-.9 2.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f41b.svg b/riot/emojione/svg/1f41b.svg new file mode 100644 index 0000000..64bcedb --- /dev/null +++ b/riot/emojione/svg/1f41b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m52.4 57.6c-1.5-1.5-.9-3.4.1-4.4 1-1 2.9-1.6 4.4-.1 1.5 1.5 2.1 4.5 1 5.5-1 1.1-4 .5-5.5-1"/><path d="m55.9 43.4c-1.5-1.5-.9-3.4.1-4.4 1-1 2.9-1.6 4.4-.1 1.5 1.5 2.1 4.5 1 5.6-1 1-4 .4-5.5-1.1"/></g><path d="M12.9,57.6C8.3,57.6,2,56.5,2,51.7c0-5.3,5.2-10.3,10.9-10.3V57.6z" fill="#5b7f32"/><path d="m23.9 47.9c0 9-6.3 9.8-10.9 9.8s-9.2-2.1-9.2-5.9c0-4.5 4.6-10.3 9.2-10.3 4.5 0 10.9 1.9 10.9 6.4" fill="#94d82a"/><path d="m21.2 57.6c-15.9 0-16-19.1.3-19.1l-.3 19.1" fill="#5b7f32"/><path d="m31.1 46.1c0 10.6-5.6 11.6-10 11.6-14.4 0-14-19.1.3-19.1 4.5-.1 9.7 2.2 9.7 7.5" fill="#94d82a"/><path d="m30.8 57.6c-17.1 0-16.4-20 0-20v20" fill="#5b7f32"/><path d="m42.4 45.5c0 11.1-6.5 12.1-11.6 12.1-14.1 0-14.1-20 0-20 5 0 11.6 2.4 11.6 7.9" fill="#94d82a"/><path d="m44.7 57.6c-21.4 0-19.4-23-1.5-23l1.5 23" fill="#5b7f32"/><path d="m57.7 45.2c0 11.1-7.1 12.5-13 12.5-18 0-18-23.4 0-23.4 5.9-.1 13 5.3 13 10.9" fill="#94d82a"/><path d="m57.4 43.3c0 0-3.6 4.4-9.1 5.1-5.6.7-20-3.2-11-15.7l20.1 10.6" fill="#5b7f32"/><path d="m59.7 38.2c0 5.7-6.6 8.2-12.1 8.2-5.5 0-12.1-2.5-12.1-8.2 0-5.7 6.6-12.5 12.1-12.5 5.6 0 12.1 6.8 12.1 12.5" fill="#94d82a"/><g fill="#3e4347"><path d="m31.9 54.8c2.1-2.1 4.2-1.8 5.3-.7 1 1 1.4 3.2-.7 5.3-2.1 2.1-5.8 3.3-6.9 2.3-1.1-1.1.2-4.8 2.3-6.9"/><path d="m34 33.6c2.1 2.1 1.8 4.2.7 5.3-1 1-3.2 1.4-5.3-.7s-3.3-5.8-2.3-6.8c1.1-1.1 4.8.1 6.9 2.2"/><path d="m20.8 55.3c1.8-1.8 3.6-1.5 4.4-.6.9.9 1.2 2.7-.6 4.4-1.8 1.8-4.9 2.8-5.8 1.9-.8-.8.2-4 2-5.7"/><path d="m12 55.6c1.5-1.5 3-1.3 3.8-.5.7.7 1 2.3-.5 3.8-1.5 1.5-4.2 2.4-4.9 1.6-.8-.7.1-3.4 1.6-4.9"/></g><g fill="#5b7f32"><path d="m28.4 40l-1 1 1 1 .9-1z"/><path d="m25.4 46.1l-.9 1 .9 1 1-1z"/><path d="m15.6 41l-1 1 1 .9 1-.9z"/><path d="m8.1 45.2l-.9.9.9 1 1-1z"/><path d="m6.5 47.4l-1 1 1 1 1-1z"/><path d="m34.6 44.5l-1 1 1 1 1-1z"/><path d="m37.1 47.6l-1 1 1 .9 1-.9z"/><path d="m55 47.1l-1 1 1 .9.9-.9z"/><path d="m54.3 39.1l-1 .9 1 1 .9-1z"/><path d="m40.3 36.3l-1 .9 1 1 .9-1z"/><path d="m24.5 40.5l-2 1.9 2 2 1.9-2z"/><path d="m56.2 34.3l-1.9 2 1.9 1.9 1.9-1.9z"/><path d="m14.6 43.7l-1.9 2 1.9 1.9 2-1.9z"/></g><g fill="#3e4347"><path d="m40.5 10.3l-.9-.1c.1-1.9-1.3-4.3-3.8-5l.2-.9c2.7.8 4.7 3.4 4.5 6"/><path d="m37.6 3.4c.8.9.7 2.3-.2 3.1-.9.8-2.3.7-3.1-.2-.8-.9-.7-2.3.2-3.1.9-.9 2.3-.8 3.1.2"/><path d="m49.2 9.8l-.1-.9c1.9-.2 3.9-2.2 4.1-4.7l.9.1c-.2 2.7-2.4 5.2-4.9 5.5"/><path d="m55.4 5.6c-.7 1-2.1 1.1-3.1.4-1-.8-1.1-2.1-.4-3.1.7-1 2.1-1.1 3.1-.4.9.7 1.1 2.1.4 3.1"/></g><path d="m55.7 29.7c-2.4 7.5-16.4 7.9-18.3 3l18.3-3" fill="#5b7f32"/><path d="M59.2,22.4c0.5,10.4-20.7,17.5-26.9,5.2C27.6,18.2,35,8.4,42.8,7.5C55.6,6,59,17.4,59.2,22.4z" fill="#94d82a"/><g fill="#3e4347"><path d="m51.3 18.3c0 1.7-.9 3-2 3-1.1 0-2-1.3-2-3 0-1.7.9-3 2-3 1.1 0 2 1.4 2 3"/><ellipse cx="37.4" cy="18.3" rx="2" ry="3"/><path d="m43.3 29.3c-2.4 0-4.5-.9-4.5-1.8 0-.1 0-.2.1-.3.1-.1.2-.1.4-.1.2 0 .3.1.6.2.6.2 1.7.7 3.5.7 1.8 0 2.9-.5 3.4-.7.3-.1.4-.2.6-.2.2 0 .4.1.4.4 0 .9-2.1 1.8-4.5 1.8"/></g><g opacity=".7" fill="#ea83a3"><ellipse cx="53.7" cy="23.8" rx="3.2" ry="2.5"/><ellipse cx="34.4" cy="23.7" rx="2.6" ry="1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f41c.svg b/riot/emojione/svg/1f41c.svg new file mode 100644 index 0000000..2f90d06 --- /dev/null +++ b/riot/emojione/svg/1f41c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#555c60"><path d="m38.5 32.8c9.4-3.3 21.7 2.7 21.7 2.7s-5.4 12.3-14.8 15.6c-9.4 3.3-17.3 1.5-19.2-3.5-2-5 2.9-11.4 12.3-14.8"/><path d="m40.4 40c-1.1.4-7.6 3.1-9.3 4.5-5.2 4 .5 14 1 16.1-.1-2.2-1.4-11.5-.1-12.8 1.9-2 10.5-4.1 10.5-4.1l-2.1-3.7"/><path d="m21.3 40.4c-.7.4-4.6 2.8-5.5 3.8-2.5 2.9 5.5 6.8 6.7 7.7-.9-1-5.3-5.3-4.8-6.2.7-1.3 6.5-3.8 6.5-3.8l-2.9-1.5"/><path d="m47.2 38.1c-1.1.4-7.6 3.1-9.3 4.5-5.2 4 .5 14 1 16.1-.1-2.1-1.5-11.4-.1-12.8 1.9-2 10.5-4.1 10.5-4.1l-2.1-3.7"/><ellipse cx="22.6" cy="37.2" rx="8.5" ry="8.3"/></g><path d="m43.6 43.3c0 0 4 4.5 14.6 1.2 2.5-.8-7.6 13.1-9.2 15.6 2-2.1 16.8-15.2 12-18.7-3.1-2.2-11.5.1-12.5-1.2l-4.9 3.1" fill="#6c767a"/><path d="m43.2 43c0 0 5.4 3.1 14.1 1 2.5-.6-6.6 13.5-8.2 16 2-2.1 15.6-14.7 10.7-18.3-3.1-2.2-10.6-.9-11.6-2.1l-5 3.4" fill="#555c60"/><path d="m36.9 45.3c0 0 4 4.5 14.6 1.2 2.5-.8-7.6 13.1-9.2 15.6 2-2.1 16.8-15.2 12-18.7-3.1-2.2-11.5.1-12.5-1.2l-4.9 3.1" fill="#6c767a"/><g fill="#555c60"><path d="m36.4 45c0 0 5.4 3.1 14.1 1 2.5-.6-6.6 13.5-8.2 16 2-2.1 15.6-14.7 10.7-18.3-3.1-2.2-10.6-.9-11.6-2.1l-5 3.4"/><path d="m15.6 13.9c-1.7-2-3-4.2-4.6-6.1-.8-1-1.7-1.8-2.7-2.4-1-.6-2-.9-2.9-.7-.7.1-1.4-.4-1.5-1.2s.3-1.4 1.1-1.5c.1 0 .2 0 .2 0h.1c1.7 0 3.2.8 4.3 1.8 1.1 1 1.8 2.1 2.5 3.2 1.3 2.3 2.2 4.7 3.5 6.9"/><path d="m17.4 13.9c1.3-2.2 2.1-4.6 3.5-6.9.7-1.1 1.4-2.3 2.5-3.2 1.1-1 2.6-1.7 4.3-1.8h.1c.8 0 1.4.6 1.4 1.3 0 .7-.6 1.3-1.3 1.4-.1 0-.2 0-.3 0-.9-.1-1.9.1-2.9.7-1 .6-1.8 1.5-2.6 2.4-1.8 1.9-3.1 4.1-4.7 6.1"/></g><g fill="#6c767a"><path d="m16.5 8.6c-7.1 0-12.8 5.6-12.8 12.5 0 8.2 12.9 16.7 12.8 16.7 0 0 12.8-8.5 12.8-16.7 0-6.9-5.8-12.5-12.8-12.5"/><ellipse cx="24.4" cy="20.9" rx="6.5" ry="6.4"/></g><ellipse cx="24.4" cy="20.9" rx="5.7" ry="5.7" fill="#fcfcfa"/><ellipse cx="24.4" cy="20.9" rx="3.9" ry="3.9" fill="#3e4347"/><ellipse cx="8.5" cy="20.9" rx="6.5" ry="6.4" fill="#6c767a"/><ellipse cx="8.5" cy="20.9" rx="5.7" ry="5.7" fill="#fcfcfa"/><path d="m12.4 20.9c0 2.2-1.7 3.9-3.9 3.9-2.1 0-3.9-1.8-3.9-3.9 0-2.2 1.7-3.9 3.9-3.9 2.2 0 3.9 1.8 3.9 3.9" fill="#3e4347"/><path d="m29.8 35.7c1-.7 7.1-5.3 8.5-7.1 4.4-5.6-4.8-14.4-5.9-16.4.7 2.2 4.2 10.7 3 12.5-4.1 5.8-9.3 8.1-9.3 8.1l3.7 2.9" fill="#6c767a"/><path d="m29.7 36.1c1-.7 6.2-5.3 7.6-7.2 4.4-5.6-3.8-14.7-4.9-16.7.7 2.2 4.1 11.7 3.1 13.5-1.5 2.6-9.8 7-9.8 7l4 3.4" fill="#555c60"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f41d.svg b/riot/emojione/svg/1f41d.svg new file mode 100644 index 0000000..eb1819b --- /dev/null +++ b/riot/emojione/svg/1f41d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8fbedb"><g opacity=".6"><path d="m60.2 12.5c-3.4-3.6-9.6-1.8-13.9 4-4.3 5.8-7.5 20-7.5 20s14.6-2 18.9-7.8c4.3-5.8 5.8-12.6 2.5-16.2"/><path d="M3.8,12.5c3.4-3.6,9.6-1.8,13.9,4c4.3,5.8,7.5,20,7.5,20s-14.6-2-18.9-7.8C2,22.9,0.5,16.1,3.8,12.5z"/></g><g opacity=".6"><path d="M4.1,40.3c-1.2-9.9,26.6-2.6,26.6-2.6S6.9,62.9,4.1,40.3z"/><path d="m59.3 40.3c1.2-9.9-26.6-2.6-26.6-2.6s23.8 25.2 26.6 2.6"/></g></g><path d="m44 37.5c0 26.3-24 26.3-24 0 0-8.4 24-8.4 24 0" fill="#3e4347"/><g fill="#ffce31"><path d="m22.7 36.6c-.4.6-.7 1.3-.7 2 0 1.2.1 2.2.2 3.3 6.3.5 13.4.5 19.7 0 .1-1 .2-2.1.2-3.3 0-.8-.2-1.4-.7-2-6.1 1.4-12.7 1.4-18.7 0"/><path d="m23.3 47.3c.7 2 1.6 3.6 2.7 4.8 3.9-.6 8-.6 12 0 1.1-1.2 2-2.8 2.7-4.8-5.6-.4-11.8-.4-17.4 0"/><circle cx="32" cy="22" r="13.8"/></g><g fill="#3e4347"><path d="m28.4 9.7l-.9-.1c.1-1.9-1.3-4.3-3.8-5l.2-.9c2.7.8 4.6 3.4 4.5 6"/><path d="m25.5 2.8c.8.9.7 2.3-.2 3.1-.9.8-2.3.7-3.1-.2-.8-.9-.7-2.3.2-3.1.9-.9 2.3-.8 3.1.2"/><path d="m35.6 9.7l.9-.1c-.1-1.9 1.3-4.3 3.8-5l-.2-.9c-2.7.8-4.6 3.4-4.5 6"/><path d="m38.5 2.8c-.8.9-.7 2.3.2 3.1.9.8 2.3.7 3.1-.2.8-.9.7-2.3-.2-3.1-.9-.9-2.3-.8-3.1.2"/></g><path d="m44.3 22.6c0 3.3-2.2 6-5 6-2.8 0-5-2.7-5-6 0-3.3 2.2-6 5-6 2.7 0 5 2.7 5 6" fill="#fcfcfa"/><path d="m41.8 22.6c0 1.7-1.1 3-2.5 3-1.4 0-2.5-1.3-2.5-3 0-1.7 1.1-3 2.5-3 1.3 0 2.5 1.3 2.5 3" fill="#3f3438"/><path d="m29.7 22.6c0 3.3-2.2 6-5 6-2.8 0-5-2.7-5-6 0-3.3 2.2-6 5-6 2.8 0 5 2.7 5 6" fill="#fcfcfa"/><path d="m27.2 22.6c0 1.7-1.1 3-2.5 3-1.4 0-2.5-1.3-2.5-3 0-1.7 1.1-3 2.5-3 1.4 0 2.5 1.3 2.5 3" fill="#3f3438"/><g fill="#3e4347"><path d="m32 32.2c-2.4 0-4.5-.9-4.5-1.8 0-.1 0-.2.1-.3.1-.1.2-.1.4-.1.2 0 .3.1.6.2.6.2 1.7.7 3.5.7 1.8 0 2.9-.5 3.4-.7.2-.2.4-.2.5-.2.2 0 .4.1.4.4.1.9-2 1.8-4.4 1.8"/><path d="m31.1 62c0 0 1.1-3.7-.3-6.1-.2-.3 2.8-.8 3-.5 1.8 3.4-2.7 6.6-2.7 6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f41e.svg b/riot/emojione/svg/1f41e.svg new file mode 100644 index 0000000..0cbee73 --- /dev/null +++ b/riot/emojione/svg/1f41e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6.6,50.4c5.3,3.2,14.7,5.3,25.4,5.3s20.1-2.1,25.4-5.3H6.6z" fill="#6b3838"/><g fill="#3e4347"><path d="m56.7 49l-1.5 1c0 0 4 4.5 4 10.9 0 1.5 1.6 1.5 1.6 0 0-6.4-4.1-11.9-4.1-11.9"/><path d="m52.9 49l-1.5 1c0 0 4 4.5 4 10.9 0 1.5 1.6 1.5 1.6 0 .1-6.4-4.1-11.9-4.1-11.9"/><path d="m49.2 49l-1.5 1c0 0 4 4.5 4 10.9 0 1.5 1.6 1.5 1.6 0 0-6.4-4.1-11.9-4.1-11.9"/><path d="m7.3 49l1.5 1c0 0-4 4.5-4 10.9 0 1.5-1.6 1.5-1.6 0 0-6.4 4.1-11.9 4.1-11.9"/><path d="m11.1 49l1.5.9c0 0-4 4.5-4 10.9 0 1.5-1.6 1.5-1.6 0-.1-6.3 4.1-11.8 4.1-11.8"/><path d="m14.8 49l1.5.9c0 0-4 4.5-4 10.9 0 1.5-1.6 1.5-1.6 0 0-6.3 4.1-11.8 4.1-11.8"/></g><path d="m54.8 28.1c-1.4-1.9-3-3.6-4.8-5.1l-10.6-5.9c-2.4-.7-4.8-1.1-7.4-1.1-2.7 0-5.3.4-7.8 1.2l-17.7 15.1c-.9 1.6-1.6 3.3-2.2 5.1l-2.2 10.4c-.1.8-.1 1.7-.1 2.6h60c0-2-.1-3.9-.4-5.8l-6.8-16.5" fill="#ed4c5c"/><g fill="#3e4347"><path d="m24.7 21c0-1.3-.2-2.6-.5-3.8-7.4 2.3-13.8 7.8-17.7 15.1 1.8 1.4 4.1 2.2 6.4 2.2 6.5 0 11.8-6 11.8-13.5"/><path d="m45.9 24.6c1.6 0 3-.6 4.1-1.7-3.1-2.7-6.7-4.7-10.6-5.9 0 0 0 .1 0 .1 0 4.2 2.9 7.5 6.5 7.5"/><path d="m52.4 34.8c0 5.4 3.8 9.8 8.5 9.8.2 0 .4 0 .6 0-.9-6.3-3.3-11.9-6.8-16.6-1.4 1.8-2.3 4.2-2.3 6.8"/><path d="m6.2 42c0-1.9-.8-3.6-2-4.6-1.2 3.2-1.9 6.7-2.1 10.4 2.3-.6 4.1-2.9 4.1-5.8"/><path d="M32.8 16 32 34.9 31.2 16z"/><path d="m32 35.2c-9.6 0-17.5 7-17.5 15.8 0 7.6 4.9 9.8 17.5 9.8 12.5 0 17.4-2.2 17.4-9.8.1-8.8-7.8-15.8-17.4-15.8"/></g><path d="m28.3 54.1c.2.8.7 1.5 1.4 1.9.7.4 1.5.5 2.3.5.8 0 1.6-.2 2.3-.5.7-.4 1.2-1 1.4-1.9.2.8-.2 1.8-1 2.4-.7.6-1.7.8-2.7.8-1 0-2-.2-2.7-.8-.8-.6-1.2-1.6-1-2.4" fill="#fff"/><g fill="#fcfcfa"><path d="m16.2 50.7c-.9.7-.4 2.8 1.1 4.5 1.6 1.8 3.6 2.6 4.6 1.8.9-.7.4-2.8-1.2-4.5-1.5-1.7-3.5-2.5-4.5-1.8"/><path d="m47.8 50.7c-.9-.7-3 .1-4.6 1.8-1.6 1.8-2.1 3.8-1.2 4.5.9.7 3-.1 4.6-1.8 1.6-1.7 2.1-3.7 1.2-4.5"/><path d="m30.2 47.3c0 2.7-2.3 5-5.1 5-2.8 0-5.1-2.2-5.1-5 0-2.7 2.3-5 5.1-5 2.8.1 5.1 2.3 5.1 5"/></g><path d="m28.6 47.3c0 1.9-1.6 3.4-3.5 3.4-1.9 0-3.5-1.5-3.5-3.4 0-1.9 1.6-3.4 3.5-3.4 1.9 0 3.5 1.6 3.5 3.4" fill="#3e4347"/><path d="m44.1 47.3c0 2.7-2.3 5-5.1 5s-5.1-2.2-5.1-5c0-2.7 2.3-5 5.1-5s5.1 2.3 5.1 5" fill="#fcfcfa"/><path d="m42.5 47.3c0 1.9-1.6 3.4-3.5 3.4-1.9 0-3.5-1.5-3.5-3.4 0-1.9 1.6-3.4 3.5-3.4 1.9 0 3.5 1.6 3.5 3.4" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f41f.svg b/riot/emojione/svg/1f41f.svg new file mode 100644 index 0000000..d4ddc1a --- /dev/null +++ b/riot/emojione/svg/1f41f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.7 41.5c0-3.5 4.9-11.4 2.6-13.8-2.5-2.6-8.3 8.5-11.2 8.5-3.5 0-5.6-4.3-7.3-6.1-1.4-1.4 2.6-7 .8-7.4-7.5-1.8-8.5 2.6-12.6 1.5-3.2-.8-6.5-1.3-9.7-1.3-12 0-14.3 8.6-16.4 16.6-.4 1.2 11.7 11.5 11.7 11.5s-9.2-5.2-9-4c1.5 6.6 7.7 10.8 14.7 12.4 2 .5 4.1.7 6.1.7 12.8 0 14.8-9.9 21.7-11.1 4.2-.7 8.7 7.4 11.1 4.9 2.6-2.6-2.5-8.3-2.5-12.4" fill="#728389"/><g fill="#8d9ba3"><path d="m48.1 60.5c-1.2 1.2-3.6 2.7-6.2 0-2.6-2.7-5.4-7.5-4.2-8.7 1.2-1.2 5.8 1.7 8.4 4.4 2.6 2.6 3.2 3.1 2 4.3"/><ellipse cx="33.4" cy="35.3" rx="2.2" ry="3.2"/><ellipse cx="37.6" cy="39.2" rx="1.2" ry="2.5"/><ellipse cx="39.9" cy="36" rx=".6" ry="1.7"/></g><g fill="#75d6ff"><ellipse cx="5.3" cy="44" rx="1.7" ry="1.8"/><ellipse cx="6.3" cy="23.4" rx="4.3" ry="4.5"/><ellipse cx="12.8" cy="10.3" rx="8" ry="8.3"/></g><ellipse cx="18.7" cy="38.5" rx="7.1" ry="7.4" fill="#fcfcfa"/><ellipse cx="18.7" cy="38.5" rx="4.9" ry="5.1" fill="#29251c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f420.svg b/riot/emojione/svg/1f420.svg new file mode 100644 index 0000000..339bfce --- /dev/null +++ b/riot/emojione/svg/1f420.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m43.1 50.6c-5.2 0-9.6-3-9.6-6.5 0-3.5 4.4-6.5 9.6-6.5 5.2 0 9.6 3 9.6 6.5-.1 3.5-4.4 6.5-9.6 6.5" fill="#e07e1e"/><path d="m43.1 38.5c5.1 0 8.7 2.9 8.7 5.5 0 2.6-3.6 5.5-8.7 5.5-5.1 0-8.7-2.9-8.7-5.5 0-2.6 3.6-5.5 8.7-5.5m0-1.9c-5.7 0-10.4 3.4-10.4 7.5 0 4.1 4.7 7.5 10.4 7.5 5.7 0 10.4-3.4 10.4-7.5 0-4.2-4.7-7.5-10.4-7.5z" fill="#3e4347"/><path d="m28.1 25.4c-4.7 0-8.5-3.2-8.5-7.1 0-3.9 3.8-7.1 8.5-7.1 4.7 0 8.5 3.2 8.5 7.1 0 3.9-3.9 7.1-8.5 7.1" fill="#e07e1e"/><path d="m28.1 12.2c4.1 0 7.6 2.8 7.6 6 0 3.3-3.5 6-7.6 6s-7.6-2.8-7.6-6 3.4-6 7.6-6m0-2.2c-5.2 0-9.4 3.7-9.4 8.2s4.2 8.2 9.4 8.2c5.2 0 9.4-3.7 9.4-8.2s-4.2-8.2-9.4-8.2z" fill="#3e4347"/><path d="m45.5 31.9c-2 0-4-1-5.5-2.8-1.4-1.6-2.2-3.7-2.4-5.8-.1-2.1.4-3.9 1.5-5.2 1-1.2 2.4-1.8 3.9-1.8 2 0 4 1 5.5 2.8 1.4 1.6 2.2 3.7 2.4 5.8.1 2.1-.4 3.9-1.5 5.2-1 1.1-2.3 1.8-3.9 1.8" fill="#e07e1e"/><path d="m43.1 17.2c1.7 0 3.5.9 4.8 2.5 1.2 1.5 2 3.3 2.1 5.2.1 1.7-.3 3.3-1.2 4.4-1 1.2-2.3 1.5-3.2 1.5-1.7 0-3.5-.9-4.8-2.5-1.2-1.5-2-3.3-2.1-5.2-.1-1.7.3-3.3 1.2-4.4 1-1.2 2.3-1.5 3.2-1.5m0-2.2c-1.7 0-3.3.7-4.5 2.1-2.7 3.2-2.3 8.9.9 12.6 1.8 2.1 4 3.2 6.1 3.2 1.7 0 3.3-.7 4.5-2.1 2.7-3.2 2.3-8.9-.9-12.6-1.7-2.1-4-3.2-6.1-3.2z" fill="#3e4347"/><path d="m28.9 52.9c-1.3 0-2.6-.3-4-.9-3.8-1.6-6.4-5.1-5.6-7.7.5-1.5 2.2-2.5 4.5-2.5 1.3 0 2.6.3 4 .9 1.9.8 3.6 2.2 4.7 3.7.9 1.4 1.3 2.8.9 3.9-.5 1.6-2.2 2.6-4.5 2.6" fill="#e07e1e"/><path d="m23.9 43c1.2 0 2.4.3 3.6.8 1.8.8 3.3 2 4.2 3.4.7 1.1 1 2.1.8 2.8-.3 1-1.8 1.7-3.6 1.7-1.2 0-2.4-.3-3.6-.8-3.5-1.5-5.5-4.5-5-6.2.3-1 1.8-1.7 3.6-1.7m0-2.3c-2.6 0-4.7 1.2-5.4 3.2-1 3.1 1.8 7.2 6.1 9.1 1.5.6 3 .9 4.3.9 2.6 0 4.7-1.2 5.4-3.2 1-3.1-1.8-7.2-6.1-9.1-1.5-.6-3-.9-4.3-.9z" fill="#3e4347"/><g fill="#f29a2e"><path d="m35 18.4c-3.1-1.1-6.5-1.8-10.2-1.8-1.1 0-2.1.1-3.1.2 1.8 4.6 2.7 9.6 2.7 14.7 0 5.7-1.2 11.3-3.4 16.3 1.2.2 2.5.2 3.8.2 1.7 0 3.3 0 4.8-.1-.5-2.5-.7-5.1-.7-7.8 0-7.9 2.1-15.5 6.1-21.7"/><path d="m14.8 18.7c-9.7 4.5-12.5 14.7-12.5 14.7s.7.6 1 1.3c.3.6-1.8.9-1.2 1.9 1.7 2.8 6.7 6.9 11.9 9.3 2.3-4.3 3.5-9.2 3.5-14.4 0-4.5-.9-8.9-2.7-12.8"/><path d="m60.3 33.5c0-3.3 3.9-5.8 0-10.5 0 0-2.2 2.6-4.3 4.3-.1 1.3-.2 2.7-.2 4 0 3.6.5 7.2 1.5 10.6 1.9 1 3 2 3 2 3.9-4.6 0-6.9 0-10.4"/><path d="m49.3 27.1c-2.8-2.3-5.6-4.4-8.7-6.1-1.6 3.9-2.5 8.1-2.5 12.5 0 4.3.8 8.4 2.3 12.2 2.9-1 6-2.5 9.7-4.5-.7-3.2-1-6.5-1-9.9 0-1.3 0-2.8.2-4.2"/></g><path d="m18.4 31.5c0 5.4-1.3 10.5-3.5 14.8 1.5.6 3.2 1.1 5.1 1.4 2.2-4.8 3.5-10.3 3.5-16.1 0-5.2-1-10.1-2.8-14.5-1.8.3-3.5.8-5 1.4 1.7 3.7 2.7 8.2 2.7 13" fill="#fff"/><g fill="#3e4347"><path d="m21.6 16.8c-.3 0-.6.1-1 .1 1.8 4.4 2.8 9.3 2.8 14.5 0 5.9-1.3 11.4-3.5 16.1.3.1.7.1 1 .1 2.2-5 3.4-10.6 3.4-16.3.1-4.9-.9-9.9-2.7-14.5"/><path d="m18.4 31.5c0-4.7-1-9.2-2.7-13.1-.3.1-.6.2-.9.4 1.8 3.9 2.7 8.3 2.7 12.8 0 5.2-1.2 10.1-3.5 14.4.3.1.6.3.9.4 2.2-4.5 3.5-9.5 3.5-14.9"/></g><path d="m29.8 40.1c0 2.6.3 5.2.7 7.7 3-.2 5.9-.7 9-1.7-1.5-3.8-2.4-8.1-2.4-12.5 0-4.7.9-9.1 2.5-13-1.2-.7-2.5-1.3-3.8-1.8-3.7 5.9-6 13.3-6 21.3" fill="#fff"/><g fill="#3e4347"><path d="m29.8 40.1c0-8 2.3-15.4 6.1-21.3-.3-.1-.6-.2-.9-.4-4 6.2-6.1 13.8-6.1 21.7 0 2.6.2 5.2.7 7.8.3 0 .6 0 .9-.1-.4-2.5-.7-5.1-.7-7.7"/><path d="m40.6 21c-.3-.2-.6-.3-.8-.5-1.6 3.9-2.5 8.3-2.5 13 0 4.5.8 8.7 2.4 12.5.3-.1.6-.2.9-.3-1.5-3.8-2.3-8-2.3-12.2-.2-4.4.6-8.6 2.3-12.5"/></g><path d="m50.6 28.1c-.1-.1-.3-.2-.4-.4-.1 1.3-.2 2.5-.2 3.7 0 3.2.3 6.4 1 9.4.2-.1.4-.3.7-.4.8-.5 2.7.2 4.5 1-.8-3.2-1.3-6.5-1.3-10 0-1.1.1-2.2.1-3.3-1.5.9-3 1.2-4.4 0" fill="#fff"/><g fill="#3e4347"><path d="m50 31.4c0-1.2.1-2.4.1-3.6-.3-.2-.6-.5-.9-.7-.1 1.5-.2 2.9-.2 4.3 0 3.3.3 6.6 1 9.9.3-.2.6-.3.9-.5-.6-3.1-.9-6.2-.9-9.4"/><path d="m55.9 27.4c-.3.3-.7.5-1 .7-.1 1.1-.1 2.2-.1 3.3 0 3.5.5 6.9 1.3 10 .4.2.8.4 1.1.6-1-3.4-1.5-7-1.5-10.6 0-1.4.1-2.7.2-4"/></g><path d="m25.7 28c-2.9 3-3.5 9.7 1.4 10.1 5.9.5 8.8 5 11.7 2 2.9-3 1.9-7.6-1.5-11.1-3.4-3.6-8.6-4-11.6-1" fill="#e07e1e"/><path d="m25.8 28c-1.5 1.5-2.2 3.7-2.1 5.7.1 1 .4 2 1.1 2.7.6.7 1.5 1 2.5 1.1 2.2.1 4.3.9 6.2 1.8 1 .4 1.9.8 2.8 1 .9.1 1.5-.2 2.1-.9.6-.7 1-1.5 1.2-2.4.2-.9.1-1.8-.2-2.7-.5-1.8-1.7-3.5-3-4.9-1.3-1.3-3-2.4-4.9-2.9-1-.2-2-.2-3 0-1 .3-2 .8-2.7 1.5m-.1-.1c1.5-1.6 3.6-2.4 5.9-2.4 2.2 0 4.5.9 6.2 2.5 1.6 1.5 3 3.5 3.6 5.8.3 1.2.3 2.4 0 3.6-.3 1.2-.9 2.3-1.8 3.1-.4.4-.9.8-1.6 1.1-.6.2-1.3.3-1.9.2-1.2-.2-2.2-.8-3.1-1.2-1.9-.9-3.7-1.7-5.7-2-.5-.1-1.1-.2-1.6-.5-.5-.3-1-.7-1.3-1.1-.7-1-.9-2.1-.9-3.2 0-1.1.3-2.2.7-3.2.2-1 .7-1.9 1.5-2.7" fill="#3e4347"/><ellipse cx="10.8" cy="32.6" rx="5.9" ry="6.3" fill="#fcfcfa"/><ellipse cx="10.8" cy="32.6" rx="4.1" ry="4.3" fill="#29251c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f421.svg b/riot/emojione/svg/1f421.svg new file mode 100644 index 0000000..51e9602 --- /dev/null +++ b/riot/emojione/svg/1f421.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m9.1 47.7c-1.8 1.8-2.7 1-3.8-.1-1.1-1.1-1.9-2-.1-3.8 1.8-1.8 5-4.2 6.1-3.1 1.1 1-.4 5.2-2.2 7" fill="#89664c"/><path d="m50.1 41.2c.1-.3.3-.6.4-1l9.7 2.2-8.9-4.7c.4-1.4.6-2.9.7-4.4l10-1.3-10-1.3c-.1-1.5-.3-3-.7-4.4l8.9-4.7-9.7 2.2c-.6-1.5-1.3-2.8-2.1-4.1l6.6-7.2-8 5.2c-1-1.3-2.2-2.5-3.5-3.5l3.5-8.6-5.4 7.2c-1.5-1-3.1-1.8-4.8-2.4l.4-8.4-2.4 7.7c-1.8-.4-3.8-.7-5.8-.7 0 0 0 0-.1 0l-2.1-7 .3 7.1c-2.2.2-4.4.7-6.4 1.5l-3.7-5 2.3 5.5c-2.2 1-4.2 2.4-6 4l-4.3-2.7 3.4 3.7c-1.8 1.9-3.3 4-4.3 6.4l-4.2-1 3.8 2c-1 2.5-1.5 5.1-1.6 7.9l-4.1.6 4 .5c0 2 .4 4 .9 5.9 4.2-1 9.2-1.5 14.8-1.5 9.7 0 19.9 1.6 28.4 4.3" fill="#c1875d"/><path d="m3.8 42.4l4.2-1c1.1 2.4 2.6 4.6 4.3 6.4l-3.3 3.8 4.3-2.8c1.8 1.6 3.8 3 6 4l-2.3 5.6 3.7-4.9c2 .8 4.2 1.3 6.4 1.5l-.3 7 2.1-7c0 0 0 0 .1 0 2 0 4-.3 5.8-.7l2.4 7.7-.4-8.4c1.7-.6 3.3-1.4 4.8-2.4l5.4 7.2-3.5-8.5c1.3-1 2.4-2.2 3.5-3.5l8 5.2-6.6-7.2c.6-1 1.2-2.1 1.6-3.2-8.5-2.7-18.7-4.3-28.4-4.3-5.6 0-10.5.5-14.8 1.5.2.7.4 1.4.7 2l-3.7 2" fill="#ffe2b3"/><ellipse cx="14.2" cy="26.7" rx="6" ry="6.2" fill="#fcfcfa"/><ellipse cx="14.2" cy="26.7" rx="4.1" ry="4.2" fill="#29251c"/><ellipse cx="32" cy="26.7" rx="7.8" ry="8.1" fill="#fcfcfa"/><ellipse cx="32" cy="26.7" rx="5.4" ry="5.6" fill="#29251c"/><path d="m51.3 45.1c2.7 2.7 1.5 4.2-.1 5.9s-3.1 2.9-5.9.1c-2.7-2.7-6.5-7.7-4.8-9.4 1.6-1.6 8 .7 10.8 3.4" fill="#c1875d"/><path d="m12.6 37.4c5.2 0 5.1-2.6 8.3-3.3 2.6-.5 4.6 2.3 8.6 3.1" fill="#ffe2b3"/><path d="m17.5 38.7c.4-.7.8-1.4 1.3-1.9.6-.6 1.3-1.1 2.1-1.3.8-.2 1.7-.1 2.5.3.7.4 1.3 1 1.7 1.7-.6-.5-1.3-.9-2-1.1-.7-.3-1.4-.3-2-.1-.7.2-1.3.5-1.9 1-.6.3-1.1.9-1.7 1.4" fill="#29251c"/><g fill="#e0bb86"><path d="m18.3 39.5c-.2.1-.5.2-.7.2-.3 0-.6 0-.8-.2-.3-.2-.5-.4-.5-.7-.1-.3 0-.5.1-.8.1.2.2.5.3.7.1.2.2.3.4.4.2.2.7.3 1.2.4"/><path d="m26.2 36.7c.1.2.2.4.2.6 0 .2 0 .5-.1.7-.1.2-.4.4-.6.4-.2 0-.5 0-.7-.1.2-.1.4-.2.6-.3.2-.1.3-.2.3-.3.1-.2.2-.6.3-1"/><path d="m19.1 39.3c.3-.3.5-.7.9-.9.3-.3.7-.5 1.2-.6.4-.1.9-.1 1.3.1.4.2.7.5 1 .8-.4-.2-.7-.4-1.1-.5-.4-.1-.7-.1-1.1 0-.4.1-.7.2-1.1.4-.4.3-.7.5-1.1.7"/></g><g fill="#89664c"><ellipse transform="matrix(.9532-.3025.3025.9532-6.8947 15.4876)" cx="46.6" cy="30" rx="1.9" ry="2.7"/><ellipse transform="matrix(.9532-.3024.3024.9532-4.9214 15.1778)" cx="46.6" cy="23.5" rx="1.4" ry="1.9"/><ellipse transform="matrix(.9532-.3022.3022.9532-5.5214 14.4805)" cx="44" cy="25.1" rx=".9" ry="1.2"/><ellipse transform="matrix(.5125-.8587.8587.5125-7.2319 21.3464)" cx="15.2" cy="17" rx="1.6" ry="1.1"/><path d="m18.3 18.3c-.8-.5-.9-1.7-.2-2.8.7-1.1 1.8-1.6 2.6-1.2.8.5.9 1.7.2 2.8-.7 1.2-1.8 1.7-2.6 1.2"/><ellipse transform="matrix(.5126-.8586.8586.5126-3.2112 21.9885)" cx="17.8" cy="13.8" rx="1" ry=".7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f422.svg b/riot/emojione/svg/1f422.svg new file mode 100644 index 0000000..48be9dc --- /dev/null +++ b/riot/emojione/svg/1f422.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.9 47.5h-40.5c0-7.4 5.7-18.7 5.7-18.7-.1-.5.5-1.2 1.1-1.2l12.7-5.9c.3-.4 1.3-.3 1.5 0l12.7 5.9c.6 0 1.2.7 1.1 1.2 0 0 5.7 11.4 5.7 18.7" fill="#7d593e"/><g fill="#64892f"><path d="m35.7 57.6c0 0-6.8 1.2-8.4 0-2.2-1.7 1.3-9.6 3.5-11.3 0 0 4.6-.4 6.1 1-.1-.1-2.4 6.4-1.2 10.3"/><path d="m48.3 58.1c0 0-5.4-.3-6.4-1.6-1.4-1.7 2.5-7.1 4.5-8 0 0 3.6.6 4.5 1.9 0 0-2.8 4.5-2.6 7.7"/></g><path d="m5.7 20.1c0 0 8.5-8.5 10.2-1.7.1-.1-7.3 8.6-10.2 1.7" fill="#4b662b"/><g fill="#83bf4f"><path d="m24.6 8.6c-5.9-6.4-29.4-.1-20.7 9.9 0 0 3.8-2 10.9-1.9-5.6 5-9.1 3.4-9.1 3.4 0 3.2 1.5 5.8 7.4 5.8 7.3 0-.6 19.8 5.9 19.8 3.8 0 4.6-15.7 4.9-16.6 1.5-5 4.6-16.1.7-20.4"/><path d="m60.9 44.4c1.2 1.6 1.3 5.6.9 6.5-.4.8-1-1.1-1.8-2.9-1.4-3.1-4.1-3.7-2.2-4.9.8-.6 2.5.5 3.1 1.3"/></g><g fill="#c1875d"><path d="m38.6 28.9l-9.4 3.9-1.8 10.1h22.5l-1.8-10.1z"/><path d="m52.1 27.6c-3.6-3.6-7.8-5.8-12.7-5.9v6.1l9.2 3.5 3.5-3.7"/><path d="m37.9 27.7v-6.1c-4.9.1-9.1 2.3-12.7 5.9l3.5 3.7 9.2-3.5"/><path d="m53.2 28.8l-3.9 4 2 10.1h8.5c-1-5.5-3.4-10.4-6.6-14.1"/><path d="m28 32.8l-3.9-4c-1.6 1.8-3 4.9-5.1 5.6-2.4.8-1 8.6 7 8.6l2-10.2"/></g><path d="m17.5 45.1h42.3c0 5.6-4.8 7.8-21.2 7.8s-21.1-2.2-21.1-7.8" fill="#ffd93b"/><g fill="#af921b"><path d="m30.1 45.1c.1.8.3 1.5.5 2.2.2.7.5 1.4.9 2 .4.6.8 1.2 1.3 1.8.5.6 1.1 1.1 1.6 1.7-.8-.2-1.5-.7-2.2-1.2-.6-.5-1.2-1.2-1.6-1.9-.4-.7-.7-1.5-.8-2.3 0-.7 0-1.5.3-2.3"/><path d="m47.2 45.1c.3.7.3 1.6.2 2.4-.1.8-.4 1.6-.8 2.3-.4.7-1 1.4-1.6 1.9-.6.5-1.4.9-2.2 1.2.6-.6 1.1-1.1 1.6-1.7.5-.6.9-1.2 1.3-1.8.4-.6.7-1.3.9-2 .3-.8.5-1.5.6-2.3"/></g><circle cx="14.7" cy="11.4" r="2.6" fill="#3e4347"/><path fill="#4b662b" d="m4.6 12l-.7.3.3-.8.7-.4z"/><path d="m29.8 60.9c0 0-8.9 1.9-11.1 0-2.9-2.6 1.7-14.7 4.6-17.3 0 0 6.1-.6 8.1 1.5-.1 0-3.1 9.9-1.6 15.8" fill="#83bf4f"/><path d="m21.5 60.9c-1.1-2.8-2.9-4.7-3.4-4.7-.6 0-1.8 1.7-1.8 5 .1 1.1 5.8 1.1 5.2-.3" fill="#6ea03f"/><path d="m61.5 52c0 0-4.6 7.9-6.9 7.8-3.1-.2-9.8-7.5-7.2-15.8 0 0 5.6-.8 7.9-.4 0-.1-1.6 7 6.2 8.4" fill="#83bf4f"/><path d="m56.6 58.2c-2-1.3-4.1-1.7-4.4-1.4-.4.3-.5 2.1 1 4.4.5.7 4.4-2.3 3.4-3" fill="#6ea03f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f423.svg b/riot/emojione/svg/1f423.svg new file mode 100644 index 0000000..7d8abff --- /dev/null +++ b/riot/emojione/svg/1f423.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#dae5ef" d="m48.1 39.4h-32.2l-8.3-4.3.1 12.2h48.6l.1-12.2z"/><g fill="#ffbf3e"><path d="m15.5 35.1c0 0-16-6-12.8-7.4 8.9-3.9 12.8 7.4 12.8 7.4"/><path d="m15.5 35.1c0 0-13.6-10.5-10.4-11.9 8.2-3.6 10.4 11.9 10.4 11.9"/><path d="m15.5 35.1c0 0-17.6-.5-12.6-2.8 11.4-5 12.6 2.8 12.6 2.8"/><path d="m48.5 35.1c0 0 16-6 12.8-7.4-8.9-3.9-12.8 7.4-12.8 7.4"/><path d="m48.5 35.1c0 0 13.6-10.5 10.4-11.9-8.2-3.6-10.4 11.9-10.4 11.9"/><path d="m48.5 35.1c0 0 17.6-.5 12.6-2.8-11.4-5-12.6 2.8-12.6 2.8"/></g><g fill="#ffd93b"><path d="M34,21.8c2.4,3.9-10.9,4-11.7-5.4C21.4,7,28,2,28,2S27.5,11.5,34,21.8z"/><path d="m32.7 19c-1.8 4.1-10-5.8-2.6-12.1 7.4-6.3 15.6-4.4 15.6-4.4s-8.2 5.4-13 16.5"/><path d="m26.2 27.9c1.8 4.1 10-5.8 2.6-12.1-7.4-6.3-15.6-4.4-15.6-4.4s8.3 5.4 13 16.5"/><path d="m50.8 35.6c0 10.2-8.4 11.8-18.8 11.8-10.4 0-18.8-1.6-18.8-11.8 0-21 9.2-25.3 18.8-25.3 9.6 0 18.8 4.3 18.8 25.3"/></g><path d="m28.2 34.8h7.6c0 2.4-1.9 4.1-3.8 4.1s-3.8-1.6-3.8-4.1" fill="#e08828"/><path d="m35.8 34.8c0 0-2.4 1.1-3.8 1.1-1.4 0-3.8-1.1-3.8-1.1 0-3 1.7-5.5 3.8-5.5 2.1.1 3.8 2.5 3.8 5.5" fill="#f29a2e"/><g fill="#bc9342"><path d="m44.7 25.1c-.4-.7-.8-1.3-1.4-1.9-.6-.6-1.3-1-2.1-1.2-.8-.2-1.8-.1-2.5.3-.7.4-1.3 1-1.8 1.6.7-.4 1.3-.8 2-1.1.7-.2 1.4-.3 2.1-.1.7.2 1.3.5 1.9.9.7.4 1.2 1 1.8 1.5"/><path d="m19.3 25.1c.4-.7.8-1.3 1.4-1.9.6-.6 1.3-1 2.1-1.2.9-.2 1.8-.1 2.5.3.7.4 1.3 1 1.8 1.6-.7-.4-1.3-.8-2-1.1-.7-.2-1.4-.3-2.1-.1-.7.2-1.3.5-1.9.9-.7.4-1.2 1-1.8 1.5"/></g><g fill="#3e4347"><path d="m20.9 30.4c0-1.2 1-2.6 2.3-2.6 1.3 0 2.3 1.3 2.3 2.6s-1 1.8-2.3 1.8c-1.3 0-2.3-.6-2.3-1.8"/><path d="m38.5 30.4c0-1.2 1-2.6 2.3-2.6 1.3 0 2.3 1.3 2.3 2.6s-1 1.8-2.3 1.8c-1.2 0-2.3-.6-2.3-1.8"/></g><path d="m44.1 47.7c0-.3.1-.5.1-.8 0-4.2-5.4-7.5-12.1-7.5-6.7 0-12.1 3.4-12.1 7.5 0 .3 0 .5.1.8 3.3 1.3 7.5 1.6 12.1 1.6s8.6-.3 11.9-1.6" fill="#ffea92"/><path d="m35.8 34.7c0 0-1.7 2.4-3.8 2.4-2.1 0-3.8-2.4-3.8-2.4s1.7-2.4 3.8-2.4c2.1.1 3.8 2.4 3.8 2.4" fill="#3e4347"/><path d="m56.4 35.1l-3.8 6.7-5.4-4.1-16.1 13-14.4-13-5.4 4.1-3.8-6.7c0 0-2.5 1.8-2.5 5.1.1 12.1 11.5 21.8 27 21.8 15.5 0 26.9-9.7 26.9-21.8 0-3.4-2.5-5.1-2.5-5.1" fill="#dae5ef"/><path d="m56 36.8l-.8 3.8-8-3-5.1 10.3-10.1-7.3-15.4 6.8.2-9.7-8 3-.8-3.9c0 0-1.4 1.5-1.4 4 0 10.2 10.6 18.9 25.4 18.9 14.8 0 25.4-8.6 25.4-18.9 0-2.5-1.4-4-1.4-4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f424.svg b/riot/emojione/svg/1f424.svg new file mode 100644 index 0000000..f9269d1 --- /dev/null +++ b/riot/emojione/svg/1f424.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#e08828"><path d="m34.3 50.7h2.5v10.8h-2.5z"/><path d="m36.3 61.6c0-.5 1.8-1.5 4-1.5s4 1 4 1.5c0 .5-1.8.4-4 .4s-4 .1-4-.4"/><path d="m31.5 61.6c0-.5 1.8-1.5 4-1.5s4 1 4 1.5c0 .5-1.8.4-4 .4s-4 .1-4-.4"/><path d="m26.8 61.6c0-.5 1.8-1.5 4-1.5s4 1 4 1.5c0 .5-1.8.4-4 .4s-4 .1-4-.4"/><path d="m14 55.7l-2-1.4 6.3-8.2 2 1.4z"/><path d="m13.5 55.4c.3-.4 2.4-.2 4.1 1 1.8 1.2 2.6 3.1 2.3 3.5-.3.4-1.7-.7-3.5-1.9-1.7-1.2-3.2-2.2-2.9-2.6"/><path d="m9.7 52.8c.3-.4 2.4-.2 4.1 1 1.8 1.2 2.6 3.1 2.3 3.5-.3.4-1.7-.7-3.5-1.9-1.7-1.3-3.2-2.2-2.9-2.6"/><path d="m6 50.1c.3-.4 2.4-.2 4.1 1 1.8 1.2 2.6 3.1 2.3 3.5-.3.4-1.7-.7-3.5-1.9-1.8-1.2-3.3-2.2-2.9-2.6"/></g><g fill="#ffd93b"><path d="m60.9 30.5c4.6 0-4.9 21.1-27.8 21.1-15.6 0-26.5-6.6-26.5-18.8 0-12.2 8.6-24 24.2-20 15.9 4 4.7 17.7 30.1 17.7"/><path d="m20 21.8c-1.1 4.3 12.4.2 9.9-8.6-2.5-8.8-10.8-11.2-10.8-11.2s3.8 8.5.9 19.8"/><path d="m20.3 22.3c3.3 3.2 8-8.4-1.7-11.8s-14.4-.9-14.4-.9 7.4 4.2 16.1 12.7"/><path d="m31.3 25.7c-.3 4.3-12.1-2-6.9-10.1 5.2-8.1 14.1-8.9 14.1-8.9s-6.3 7.4-7.2 19"/></g><path d="m57.2 41.2c-5 .9-13.5 4.3-23 4.3-11.4 0-21.2-4.8-25.5-4.5 3.8 6.9 12.8 10.6 24.4 10.6 11.4 0 19.4-5.2 24.1-10.4" fill="#ffea92"/><path d="m3.4 31.2l5.6-1c0 2.6-.2 4.3-2.1 4.3-1.8.1-3.5-.7-3.5-3.3" fill="#e08828"/><path d="m9 30.3l-7 1.9c0-3.2 2.6-6.8 4.9-6.8 2.4.1 2.1 1.7 2.1 4.9" fill="#f29a2e"/><path d="m11 25.1c0-1.6 1.3-3.3 2.9-3.3 1.6 0 2.9 1.7 2.9 3.3 0 1.6-1.3 2.3-2.9 2.3-1.6-.1-2.9-.8-2.9-2.3" fill="#3e4347"/><g fill="#ffbf3e"><path d="m48.5 37.3c0 5.3-6.7 9.6-15 9.6-8.3 0-9.8-4.3-9.8-9.6s1.5-9.6 9.8-9.6 15 4.3 15 9.6"/><path d="m51.2 36.9c-1.4.4-2.5-.2-2.5-.2 1.5-1.3 1.9-3.5 1.9-3.5-1 .9-2.8.9-2.8.9.5-1.6.2-2.8.2-2.8-2.3 3.4-10.4 3.5-10.4 3.5 4.9 3.2 7.5 7.5 7.5 7.5 3.9-1.4 6.1-5.4 6.1-5.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f425.svg b/riot/emojione/svg/1f425.svg new file mode 100644 index 0000000..fabfbf9 --- /dev/null +++ b/riot/emojione/svg/1f425.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#e08828"><path d="m39.6 51.3h2.4v9.2h-2.4z"/><path d="m41.5 60.6c0-.5 1.7-1.5 3.7-1.5 2.1 0 3.7 1 3.7 1.5 0 .5-1.7.4-3.7.4-2.1 0-3.7.1-3.7-.4"/><path d="m37.1 60.6c0-.5 1.7-1.5 3.7-1.5 2.1 0 3.7 1 3.7 1.5 0 .5-1.7.4-3.7.4-2.1 0-3.7.1-3.7-.4"/><path d="m32.6 60.6c0-.5 1.7-1.5 3.7-1.5s3.7 1 3.7 1.5c0 .5-1.7.4-3.7.4s-3.7.1-3.7-.4"/><path d="m22 51.3h2.4v9.2h-2.4z"/><path d="m22.5 60.6c0-.5-1.7-1.5-3.7-1.5-2.1 0-3.7 1-3.7 1.5 0 .5 1.7.4 3.7.4 2.1 0 3.7.1 3.7-.4"/><path d="m27 60.6c0-.5-1.7-1.5-3.7-1.5-2.1 0-3.7 1-3.7 1.5 0 .5 1.7.4 3.7.4 2 0 3.7.1 3.7-.4"/><path d="m31.4 60.6c0-.5-1.7-1.5-3.7-1.5s-3.7 1-3.7 1.5c0 .5 1.7.4 3.7.4 2 0 3.7.1 3.7-.4"/></g><g fill="#ffbf3e"><path d="m15.5 39.3c0 0-16-6.5-12.8-8.1 8.9-4.3 12.8 8.1 12.8 8.1"/><path d="m15.5 39.3c0 0-13.6-11.5-10.4-13.1 8.2-3.9 10.4 13.1 10.4 13.1"/><path d="m15.5 39.3c0 0-17.6-.6-12.6-3.1 11.4-5.5 12.6 3.1 12.6 3.1"/><path d="m48.5 39.3c0 0 16-6.5 12.8-8.1-8.9-4.3-12.8 8.1-12.8 8.1"/><path d="m48.5 39.3c0 0 13.6-11.5 10.4-13.1-8.2-3.9-10.4 13.1-10.4 13.1"/><path d="m48.5 39.3c0 0 17.6-.6 12.6-3.1-11.4-5.5-12.6 3.1-12.6 3.1"/></g><g fill="#ffd93b"><path d="M34,24.7c2.4,4.2-10.9,4.4-11.7-5.9C21.4,8.5,28,3,28,3S27.5,13.4,34,24.7z"/><path d="m32.7 21.7c-1.8 4.6-10-6.3-2.6-13.3s15.6-4.8 15.6-4.8-8.2 5.9-13 18.1"/><path d="m26.2 31.4c1.8 4.6 10-6.3 2.6-13.3s-15.6-4.8-15.6-4.8 8.3 5.9 13 18.1"/><path d="m50.8 39.9c0 11.2-8.4 13-18.8 13-10.4 0-18.8-1.7-18.8-13 0-23 9.2-27.7 18.8-27.7 9.6-.1 18.8 4.6 18.8 27.7"/></g><path d="m28.2 37h7.6c0 2.3-1.9 3.9-3.8 3.9s-3.8-1.6-3.8-3.9" fill="#e08828"/><path d="m35.8 37c0 0-2.4 1.1-3.8 1.1s-3.8-1.1-3.8-1.1c0-2.9 1.7-5.2 3.8-5.2 2.1-.1 3.8 2.3 3.8 5.2" fill="#f29a2e"/><g fill="#bc9342"><path d="m44.7 26.4c-.4-.7-.8-1.5-1.4-2.1-.6-.6-1.3-1.1-2.2-1.3-.8-.2-1.8-.1-2.5.4-.7.4-1.3 1.1-1.8 1.8.7-.5 1.3-.9 2-1.2.7-.3 1.4-.3 2.1-.2.7.2 1.3.6 1.9 1 .8.4 1.3 1 1.9 1.6"/><path d="m19.3 26.4c.4-.7.8-1.5 1.4-2.1.6-.6 1.3-1.1 2.1-1.3.9-.2 1.8-.1 2.5.4.7.4 1.3 1.1 1.8 1.8-.7-.5-1.3-.9-2-1.2-.7-.3-1.4-.3-2.1-.2-.7.2-1.3.6-1.9 1-.7.4-1.2 1-1.8 1.6"/></g><g fill="#3e4347"><path d="m20.9 32.2c0-1.4 1-2.8 2.3-2.8 1.3 0 2.3 1.5 2.3 2.8s-1 2-2.3 2c-1.3-.1-2.3-.7-2.3-2"/><path d="m38.5 32.2c0-1.4 1-2.8 2.3-2.8 1.3 0 2.3 1.5 2.3 2.8s-1 2-2.3 2c-1.2-.1-2.3-.7-2.3-2"/></g><path d="m44.1 51.1c0-.3.1-.6.1-.9 0-4.3-5.4-7.8-12.1-7.8-6.7 0-12.1 3.5-12.1 7.8 0 .3 0 .6.1.9 3.3 1.4 7.5 1.7 12.1 1.7s8.6-.3 11.9-1.7" fill="#ffea92"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f426.svg b/riot/emojione/svg/1f426.svg new file mode 100644 index 0000000..225d767 --- /dev/null +++ b/riot/emojione/svg/1f426.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m59.8 24.3c0 0 1.1-6.2-3.5-3.4 0 0-.4-6.3-4.3-1.9 0 0-2.1-3.9-4.4-.3-3.1 4.8-5.2 12.4-3.2 25l3.8-2.5c2.7-7.9 12.4-8.8 13.7-13.1.9-3-2.1-3.8-2.1-3.8"/><path d="m22.1 17.6l-9.9 3.6c2.2-12 16.6-11.2 16.6-11.2s-6.8 3.2-6.7 7.6"/><path d="m23.7 19.8l-10.5 1.4c4.8-11.2 18.7-7.3 18.7-7.3s-7.3 1.6-8.2 5.9"/></g><g fill="#ffd93b"><path d="m2 29l5.4-1.4v3.6c0-.1-3.3-.6-5.4-2.2"/><path d="M7.4,27.5L2,24.8c3.6-2.8,7.7-1.9,7.7-1.9L7.4,27.5z"/></g><g fill="#e08828"><path d="m33.8 53h-2.1v7.9c-.3.1-2.1-.1-2.9-.1-1.8 0-3.3 1.3-3.3 1.3h8.3v-9.1"/><path d="m25 53h-2.1v7.9c-.3.1-2.1-.1-2.9-.1-1.8 0-3.3 1.3-3.3 1.3h8.3v-9.1"/></g><path d="m54 36.2c3.9 0-4.1 17.5-23.3 17.5-13 0-23.9-5.2-23.9-21.5 0-10.1 6.4-18.3 19.5-15 13.3 3.5 6.5 19 27.7 19" fill="#42ade2"/><path d="m37.6 51.7c-15.6 0-14-12-27.9-11.2 5.1 15.8 27.9 11.2 27.9 11.2" fill="#fff"/><path d="m39.1 29.2c-10-9.8-20.2 6.2-7.9 12.6 12.1 6.2 20.4-4.8 20.4-4.8s-6.1-1.5-12.5-7.8" fill="#297b9d"/><circle cx="15.1" cy="24.9" r="2.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f427.svg b/riot/emojione/svg/1f427.svg new file mode 100644 index 0000000..ce85cad --- /dev/null +++ b/riot/emojione/svg/1f427.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#e08828"><path d="m26.3 60.5c-.8 0-2.6.7-3.2.1-.8-.8 0-4.6 0-4.6h-2.3c0 0 .8 3.8 0 4.6-.6.5-2.4-.1-3.2-.1-2 0-3.7 1.5-3.7 1.5h16c.1 0-1.5-1.5-3.6-1.5"/><path d="m46.3 60.5c-.8 0-2.6.7-3.2.1-.8-.8 0-4.6 0-4.6h-2.3c0 0 .8 3.8 0 4.6-.6.5-2.4-.1-3.2-.1-2 0-3.7 1.5-3.7 1.5h16c.1 0-1.5-1.5-3.6-1.5"/></g><g fill="#3e4347"><path d="M10.4,27c-10.8,6.7-8.7,16-7.1,14.9C20,29.7,24.2,18.5,10.4,27z"/><path d="m53.6 27c-13.8-8.5-9.6 2.7 7.1 14.9 1.6 1.1 3.7-8.2-7.1-14.9"/><path d="m48 17.5c0-8.6-7.2-15.5-16-15.5-8.8 0-16 6.9-16 15.5 0 11.6-4 15.5-4 23.2 0 10.6 9 19.3 20 19.3s20-8.7 20-19.3c0-7.7-4-11.6-4-23.2"/></g><path d="m44 18.8c0-12.4-10.1-10-10.1-.7h-3.7c-.1-9.3-10.2-11.7-10.2.7 0 9.7-4 15.7-4 22.1 0 11.6 7.7 17.1 16 17.1s16-5.6 16-17.1c0-6.4-4-12.4-4-22.1" fill="#fff"/><g fill="#3e4347"><path d="m41 17c0 1.7-.9 3-2 3s-2-1.3-2-3c0-1.7.9-3 2-3s2 1.3 2 3"/><path d="m27 17c0 1.7-.9 3-2 3-1.1 0-2-1.3-2-3 0-1.7.9-3 2-3 1.1 0 2 1.3 2 3"/></g><path d="m28 22h8c0 2.5-1.8 4.6-4 4.6-2.2 0-4-2-4-4.6" fill="#e08828"/><path d="m37 22.3l-5 1.2-5-1.2c0-3.2 2.2-5.7 5-5.7 2.8 0 5 2.6 5 5.7" fill="#f29a2e"/><g fill="#3e4347"><path d="m33.7 17.8c.3.3.4.7.3.9-.1.2-.5 0-.8-.3-.3-.3-.4-.7-.3-.9.2-.1.6 0 .8.3"/><path d="m30.3 17.8c-.3.3-.4.7-.3.9.1.2.5 0 .8-.3.3-.3.4-.7.3-.9-.2-.1-.6 0-.8.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f428.svg b/riot/emojione/svg/1f428.svg new file mode 100644 index 0000000..88832b7 --- /dev/null +++ b/riot/emojione/svg/1f428.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#a8b2ba"><path d="m17.9 51.7c-3.4 5.8-6.2 6-8.7 4.6s-3.7-3.9-.3-9.7c3.4-5.8 10.2-12.8 12.7-11.4 2.5 1.4-.3 10.6-3.7 16.5"/><path d="m55.1 46.5c3.4 5.8 2.2 8.3-.3 9.7-2.5 1.4-5.3 1.3-8.7-4.6-3.4-5.8-6.2-15.1-3.7-16.5 2.5-1.4 9.3 5.6 12.7 11.4"/><ellipse cx="32" cy="52.1" rx="13.9" ry="8.4"/></g><ellipse cx="32" cy="46.6" rx="13" ry="9.3" fill="#cfdae8"/><path d="M62,13.8c0,6.5-5,11.8-11.1,11.8c-6.1,0-11.1-5.3-11.1-11.8c0-6.5,5-11.8,11.1-11.8C57,2,62,7.3,62,13.8z" fill="#a8b2ba"/><path d="m57.6 13.8c0 3.9-3 7.1-6.7 7.1-3.7 0-6.7-3.2-6.7-7.1 0-3.9 3-7.1 6.7-7.1 3.7 0 6.7 3.2 6.7 7.1" fill="#cfdae8"/><ellipse cx="13.1" cy="13.8" rx="11.1" ry="11.8" fill="#a8b2ba"/><path d="m19.8 13.8c0 3.9-3 7.1-6.7 7.1-3.7 0-6.7-3.2-6.7-7.1 0-3.9 3-7.1 6.7-7.1 3.7 0 6.7 3.2 6.7 7.1" fill="#cfdae8"/><g fill="#a8b2ba"><path d="m12 35.7c-2.3-2.1-3-5.3-3-5.3l1.5.3c0 0-1.8-1.7-1.3-5.4l1.5 1.5c0 0-1.5-3.8-.2-7.2l1.7 1.1c0 0-.5-1.4 0-2.4l.7.5c0 0-1.3-3.2-.1-4.6.7 2 1.4 1.9 1.4 1.9s-1-1.5-.2-2.1c.8 1.1 1.4.4 1.4.1 0-.4.1-1.1-2.1-1.4 1.8-1 3.9-.3 3.9-.3s-.1-1-1.6-1c1.4-1.1 3.4-.4 3.4-.4l-2.6 6.3-3.2 9.4-1.2 9"/><path d="m32 7.5c-17.6 0-21.5 11.9-21.5 26.3 0 1.5 9.6 9.7 21.5 9.7s21.5-8.2 21.5-9.7c0-14.4-3.9-26.3-21.5-26.3"/><path d="m52 35.7c2.3-2.1 3-5.3 3-5.3l-1.5.3c0 0 1.8-1.7 1.3-5.4l-1.5 1.5c0 0 1.5-3.8.2-7.2l-1.7 1.1c0 0 .5-1.4 0-2.4l-.7.5c0 0 1.3-3.2.1-4.6-.7 2-1.4 1.9-1.4 1.9s1-1.5.2-2.1c-.8 1.1-1.4.4-1.4.1 0-.4-.1-1.1 2.1-1.4-1.8-1-3.9-.3-3.9-.3s.1-1 1.6-1c-1.4-1.1-3.4-.4-3.4-.4l2.6 6.3 3.2 9.4 1.2 9"/></g><ellipse cx="19.8" cy="28" rx="4" ry="3.9" fill="#d5ff83"/><ellipse cx="19.8" cy="28" rx="2.6" ry="2.5" fill="#3e4347"/><ellipse cx="44.2" cy="28" rx="4" ry="3.9" fill="#d5ff83"/><ellipse cx="44.2" cy="28" rx="2.6" ry="2.5" fill="#3e4347"/><path d="m24.8 34.2c0-5.9 4.8-8.2 7.2-8.2s7.2 2.3 7.2 8.2c0 7.5-2.6 9.3-7.2 9.3s-7.2-1.7-7.2-9.3" fill="#555e63"/><path d="m27.7 55.8c0 5.1-3.2 6.2-7.1 6.2-3.9 0-7.1-1.2-7.1-6.2 0-5.1 3.2-9.2 7.1-9.2s7.1 4.1 7.1 9.2" fill="#96a2aa"/><path d="m25.6 57.1c0 3.6-2.3 4.4-5 4.4s-5-.8-5-4.4c0-3.6 2.3-6.5 5-6.5s5 3 5 6.5" fill="#cfdae8"/><path d="m50.6 55.8c0 5.1-3.2 6.2-7.1 6.2-3.9 0-7.1-1.2-7.1-6.2 0-5.1 3.2-9.2 7.1-9.2 3.9 0 7.1 4.1 7.1 9.2" fill="#96a2aa"/><path d="m48.5 57.1c0 3.6-2.3 4.4-5 4.4s-5-.8-5-4.4c0-3.6 2.3-6.5 5-6.5 2.7 0 5 3 5 6.5" fill="#cfdae8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f429.svg b/riot/emojione/svg/1f429.svg new file mode 100644 index 0000000..7b56afe --- /dev/null +++ b/riot/emojione/svg/1f429.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffc5d3"><path d="m55.3 31.2c-.2 0-.3-.1-.5-.2-.3-.3-.4-.7-.1-1.1 1.1-1.4 3.5-4.4 1-10.4-.2-.4 0-.8.4-1 .4-.2.8 0 1 .4 2.8 6.8 0 10.4-1.3 11.9-.1.3-.3.4-.5.4"/><path d="M41.8,36v17.3c0,2.1,1,3,2.3,3c1.3,0,2.3-0.9,2.3-3V36H41.8z"/></g><ellipse cx="44.1" cy="50.7" rx="4.6" ry="2.2" fill="#ff78b5"/><ellipse cx="46.7" cy="35.4" rx="13.2" ry="11.4" fill="#e86097"/><ellipse cx="56.4" cy="19.3" rx="3.6" ry="3" fill="#ff78b5"/><path d="m53 43v10.3c0 2.1 1 3 2.3 3 1.3 0 2.3-.9 2.3-3v-12.3c-2 1.8-4.6 2-4.6 2" fill="#ffc5d3"/><ellipse cx="55.3" cy="50.7" rx="4.6" ry="2.2" fill="#ff78b5"/><g fill="#ffc5d3"><path d="M15,35.3V58c0,2.8,1.4,4,3,4c1.7,0,3-1.2,3-4V35.3H15z"/><path d="m29.7 35.3v22.7c0 2.8 1.4 4 3 4 1.7 0 3-1.2 3-4v-22.7h-6"/></g><g fill="#ff78b5"><ellipse cx="18.1" cy="54.5" rx="6.1" ry="3"/><ellipse cx="32.8" cy="54.5" rx="6.1" ry="3"/></g><ellipse cx="25.4" cy="29.4" rx="20" ry="19.6" fill="#e86097"/><g fill="#ff78b5"><path d="m14.4 33.4c0 7.7-2.3 8.9-5.2 8.9s-5.2-6.2-5.2-13.9c0-7.7 5.4-13.9 8.3-13.9s2.1 11.2 2.1 18.9"/><path d="m36.5 33.4c0 7.7 2.3 8.9 5.2 8.9 2.9 0 5.2-6.2 5.2-13.9 0-7.7-5.4-13.9-8.3-13.9-2.8 0-2.1 11.2-2.1 18.9"/></g><path d="m40.4 22.2c0 7-2.5 6.5-6.3 11.6-2.4 3.2-2.7 7.8-8.6 7.8-5.9 0-6.2-4.5-8.6-7.8-3.8-5.1-6.4-4.6-6.4-11.6 0-6.2 6.7-6.4 15-6.4 8.2 0 14.9.2 14.9 6.4" fill="#ffc5d3"/><path d="m17.3 19.8c2.8 0 5.1 2.1 5.1 4.7 0 2.6-2.3 4.7-5.1 4.7-2.8 0-5.1-2.1-5.1-4.7 0-2.6 2.3-4.7 5.1-4.7" fill="#fff"/><ellipse cx="17.3" cy="24.5" rx="3.5" ry="3.3" fill="#3e4347"/><ellipse cx="33.6" cy="24.5" rx="5.1" ry="4.7" fill="#fff"/><g fill="#3e4347"><ellipse cx="33.6" cy="24.5" rx="3.5" ry="3.3"/><path d="m20.1 36.6c0-2.3 2.4-2.8 5.3-2.8s5.3.5 5.3 2.8c0 1.9-4.2 3.5-5.3 3.5-1.1 0-5.3-1.6-5.3-3.5"/></g><path fill="none" stroke="#3e4347" stroke-miterlimit="10" d="m25.4 41.6v-2.1"/><g fill="#ff78b5"><ellipse cx="13.3" cy="13.6" rx="7" ry="6.6"/><ellipse cx="37.6" cy="13.6" rx="7" ry="6.6"/><ellipse cx="25.4" cy="11" rx="9.5" ry="9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f42a.svg b/riot/emojione/svg/1f42a.svg new file mode 100644 index 0000000..63e30c1 --- /dev/null +++ b/riot/emojione/svg/1f42a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.3 26.1c4.2-3 6.5-16.4 5.4-17.6-1.1-1.2-13.5.9-16.3 5.6-2.1 3.7 7.6 14.4 10.9 12" fill="#e0ac7e"/><path d="m54.7 23.8c2.6-1.8 3.3-10.9 3.3-10.9s-8.4.6-10.1 3.5c-1.3 2.2 4.7 8.9 6.8 7.4" fill="#c1875d"/><path d="m7.7 26.1c-4.2-3-6.5-16.4-5.4-17.6 1.1-1.2 13.5.9 16.3 5.6 2.1 3.7-7.5 14.4-10.9 12" fill="#e0ac7e"/><path d="m9.3 23.8c-2.6-1.9-3.3-11-3.3-11s8.4.6 10.1 3.5c1.3 2.3-4.7 9-6.8 7.5" fill="#c1875d"/><g fill="#e0ac7e"><path d="m50.6 35.3c-5.4 5.9-2.8 22.5-18.6 22.5-22.5 0-13.2-16.6-18.6-22.5-12.1-13.4 8.4-22.7 18.6-22.7s30.7 9.3 18.6 22.7"/><path d="m32.7 29.6c0 0-4.2-15.2-11.3-18.9 0 0 2.9-2.2 5.2-.7 0 0-.1-2.7-2.3-4.9 0 0 4.3-.8 6.9 4 0 0-.1-4.7-1-7.1 0 0 7.5 3.4 10.1 12.6.1 0-7.1 2.3-7.6 15"/></g><g fill="#3e4347"><ellipse cx="12.9" cy="29" rx="4" ry="4.4"/><ellipse cx="51.1" cy="28.8" rx="4" ry="4.4"/></g><path d="m33 53.6c0 2.2-3.1 3.9-7 3.9-3.9 0-7-1.8-7-3.9 0-2.2 3.1-3.9 7-3.9 3.9 0 7 1.8 7 3.9" fill="#89664c"/><path d="m39.4 52.7c0 3.2-5.2 7.8-11.4 9.1-6.6 1.3-11.4-5.9-11.4-9.1s.2.4 6.6.4 16.2-3.6 16.2-.4" fill="#ffe2b3"/><path d="m29.4 47c0 0-5.6 2.7-6.1 9.8-.5 6.8-9.8 7.1-9.3.1.5-7 6.5-9.9 8-9.8 1.5 0 7-.1 7.4-.1" fill="#ff717f"/><path d="m24.6 47.9c-.8.7-1.6 1.2-2.4 1.8-.8.6-1.5 1.3-2.2 2-.6.8-1.2 1.6-1.5 2.5-.4.9-.6 1.9-.7 2.9 0-1 .1-2 .4-3 .3-1 .8-1.9 1.4-2.8 1.2-1.7 2.9-3 4.3-4.3l.7.9" fill="#e2596c"/><path d="m43 47.1c0 8.8-7.1 13.6-12.4 9.1-2.1-1.7-4.3-2.7-6.3-3.7-3.5-1.7-6.9-2.2-6.9-7.7l25.6 2.3" fill="#89664c"/><path d="m44.6 48.8c0 8.8-7.7 11.5-14.3 6-6.1-5-13.1-2.1-13.1-10.9 0-2.7 4.7-10.1 4.7-10.1 0-9.1 2.9-15.2 10.2-15.2s10.2 6 10.2 15.2c-.1 0 2.3 12.2 2.3 15" fill="#ffe2b3"/><g fill="#89664c"><path d="m24.7 34.9c3.5.7 5.7 1 7.3 4.7"/><path d="m39.3 34.9c-3.5.7-5.7 1-7.3 4.7"/><path d="m28.4 54.1c1.4-2 2.3-4.4 2.8-6.9.5-2.5.8-5 .7-7.6.3 2.5.3 5.1 0 7.7-.2 1.3-.4 2.6-.8 3.8-.4 1.3-.9 2.5-1.5 3.7l-1.2-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f42b.svg b/riot/emojione/svg/1f42b.svg new file mode 100644 index 0000000..fbd4b0e --- /dev/null +++ b/riot/emojione/svg/1f42b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c1875d"><ellipse cx="51.1" cy="40.1" rx="4.8" ry="6.2"/><ellipse cx="27.8" cy="43.8" rx="4.8" ry="6.2"/><path d="m49.3 33.7v23.2c0 2.8 1.3 3.1 2.9 3.1 1.6 0 2.9-.2 2.9-3.1v-23.2h-5.8"/></g><path d="m55.9 62h-7.3l.7-5.1c0 0 .8-1 2.9-1s2.9 1 2.9 1l.8 5.1" fill="#89664c"/><path d="m24.9 33.7v23.2c0 2.8 1.3 3.1 2.9 3.1 1.6 0 2.9-.2 2.9-3.1v-23.2h-5.8" fill="#c1875d"/><path d="m31.5 62h-7.3l.7-5.1c0 0 .8-1 2.9-1s2.9 1 2.9 1l.8 5.1" fill="#89664c"/><path d="M53,33.7v23.2c0,2.8,1.3,3.1,2.9,3.1c1.6,0,2.9-0.2,2.9-3.1V33.7H53z" fill="#e0ac7e"/><path d="m59.6 62h-7.3l.7-5.1c0 0 .8-1 2.9-1 2.2 0 2.9 1 2.9 1l.8 5.1" fill="#c1875d"/><g fill="#e0ac7e"><path d="m60.4 41.6c.2-4.8-3.4-9.5-3.4-9.6l.7-.5c.2.2 3.8 5 3.6 10.1h-.9"/><path d="m60.8 38.9c-.7 1.2-1.1 2.3-1.2 3.2.1.8.6 1.7 1.2 2.6.7-1.2 1.1-2.3 1.2-3.2-.1-.8-.6-1.7-1.2-2.6"/><path d="m58.9 35.9c.5 5.8-12 7.9-21.5 7.9-12.3 0-20.8-20.5-18.3-17 3.4 4.7 5.8-2.3 8.5-3.2 5.9-2 10.9.1 17.1.7 7.8.7 14.2 5.2 14.2 11.6"/><path d="m55 28.1c0 5.3-3.2 7.7-7.1 7.7s-7.1-4.3-7.1-9.7c0-.3 3.2-9.7 7.1-9.7 3.9.1 7.1 10.4 7.1 11.7"/><path d="m41.9 24.5c0 5.3-3.2 9.7-7.1 9.7-3.9 0-7.1-4.3-7.1-9.7 0-.3 3.2-9.7 7.1-9.7s7.1 9.4 7.1 9.7"/><path d="m28.6 33.7v23.2c0 2.8 1.3 3.1 2.9 3.1 1.6 0 2.9-.2 2.9-3.1v-23.2h-5.8"/></g><path d="m35.1 62h-7.3l.7-5.1c0 0 .8-1 2.9-1 2.2 0 2.9 1 2.9 1l.8 5.1" fill="#c1875d"/><path d="m7.5 13.9c4.9 2.1 6.8.1 6.8.1-9.3 10.8-4.2 42.4 13.9 26.1 21.6-19.4 2.5-8.1-.6-8.1s-11.4-.8-5.6-15.5c5.7-14.7-8-10.2-14.4-9.9-3.4.2-3.4 2.3-5 3.2-.9.6-.5 1.2.1 1.3v.4c-1.1.6-.4 2.4.8 2.1 2.1-.6 3.2 0 4 .3" fill="#e0ac7e"/><path d="m14.3 14c-9.6 10-4.8 41 12.3 27.4-13.5 5.8-15.4-23.3-12.3-27.4" fill="#ffe2b3"/><g fill="#e0ac7e"><ellipse cx="31.5" cy="44.7" rx="4.8" ry="6.2"/><ellipse cx="54.1" cy="39.3" rx="4.8" ry="6.2"/><path d="m22.9 8.5c-1.4-2.9-6.5-6.7-10.4-6.5 0 0 1.4.6 1.4 1.7 0 0-1.8 0-2.3.5 1.4.4 1.6 1 1.6 1s-1.1-.3-2 .5c1.4 0 1.4.3 3.2 1.4 1.7 1.1 8.5 1.4 8.5 1.4"/></g><path d="m4.7 8.7c.1.1.5 0 .9-.3.4-.3.7-.6.6-.7-.1-.1-.5 0-.9.3-.4.2-.7.6-.6.7" fill="#89664c"/><ellipse cx="14.8" cy="9.2" rx="2.1" ry="1.5" fill="#c1875d"/><ellipse cx="14.8" cy="8.9" rx=".9" ry=".7" fill="#3e4347"/><path d="m18.6 7.8c.3-.4 2.8-1 4.1-1.1 1.4 0 .2 3-2.1 3.4s-2.3-1.8-2-2.3" fill="#c1875d"/><path d="m19 8.5c.2-.4 2.2-.9 3.2-.9s.1 2.5-1.6 2.9c-1.7.3-1.9-1.6-1.6-2" fill="#e0ac7e"/><path d="m2.7 11.2c2.6 0 6.5 1.3 8.5.7-2.5 1-5.9-.2-8.5-.2v-.5" fill="#89664c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f42c.svg b/riot/emojione/svg/1f42c.svg new file mode 100644 index 0000000..abd8480 --- /dev/null +++ b/riot/emojione/svg/1f42c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#75d6ff"><path d="m25.4 37.7c-.8.6-.6 2 .3 2.3.9.4 4-.9 7.9 5.4-1.1-7.8-6.8-8.8-8.2-7.7"/><path d="m60.7 38.2c.8.6.6 2-.3 2.3-.9.4-4-.9-7.9 5.4 1.1-7.8 6.8-8.8 8.2-7.7"/><path d="m60.4 29c.8.3 1 1.4.4 1.9-.6.6-3.4.4-4.7 6.4-1.3-6.5 2.9-8.9 4.3-8.3"/></g><path d="m54.8 21.5c-.8 4.5-5.7 1.1-8.6-1.9-2.9-3-5-5.7-1.9-8.9 3.1-3.2 12.2-3.7 15.1-.8 2.9 3-3.5 5.8-4.6 11.6" fill="#36a7c1"/><path d="m54.1 21.4c-1.3-8.6-11.7-19.4-25-19.4-13.3 0-26.8 12.9-17 22.9 0 0-11.9.6-7.1 3.1 11.4 6 17.5-1.8 17.6-1.9 4-6.8 12-7 17.4.5 5.4 7.5 5.7 18.1-3 22.5-4.7 2.3-5.4.9-4.9-1-1.4 1.1-2.9 2.1-4.1 2.9-1.9-2.7-5.8-7.5-8.6-7.5-3.9 0 1.5 9.3 1.5 9.3s-5.3 9.2-1.4 9.2c2.9 0 6.9-5.2 8.8-7.8 8.9 1.6 30.2-5.2 25.8-32.8" fill="#38bfd6"/><path d="m37.1 49.1c8.6-4.3 8.4-15 3-22.5-5.4-7.5-13.4-7.3-17.4-.5 0 0 0 .1-.1.2-1.4 2.2-3.4 2.5-5.2 3.3 0 0 0 1-1.3 1.7-1.9 1.1-3.2 1.9-2 3.5 4.4 6.1 12.9-6 20.4.6 5.7 5 1.9 9.4-2.2 12.7-.7 1.8.1 3.3 4.8 1" fill="#c5ccd6"/><path d="m37.9 25.2c1.9-4.2-2.5-5.5-5.6-5.5s-5.6.4-5.6 5.5c0 5.1 4.5 12.9 7.6 12.9 3.1 0 1.1-7.4 3.6-12.9" fill="#36a7c1"/><path d="m22.6 26.1c.1 4.3-4.1 9-6.9 8.3-.8-.2-1.1-.8-1-1.3.1-.8 1.3-1.3 2.1-2 .7-.6 1-1.8 1-1.8 1.6-.6 4.8-3.2 4.8-3.2" fill="#18637a"/><path d="m22.1 29.3c-1.2 2.6-1.9 3.3-3 2.9-1-.4-.7-3.1.4-3.8 0 0 .9-.6 3.1-2.3 0 0 .1 1.8-.5 3.2" fill="#ff717f"/><circle cx="20.4" cy="19.7" r="4.5" fill="#fff"/><circle cx="20.4" cy="19.7" r="3" fill="#3e4347"/><path d="m20.5 26.1c0 0-.2-10.8 8.2-8.4l-8.2 8.4" fill="#38bfd6"/><path d="m57.7 48.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.6-1.6-4.2-1.6-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.2-1.6-1.9 1.6-4.3 1.6c-2.4 0-4.3-1.6-4.3-1.6v15h60v-15c0 0-1.9 1.6-4.3 1.6" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.4-.4 13.6 3.9 18.5 1.5"/><path d="m35.4 53.4c-6.8.9-11.5-4.7-18.5-1.5 5.5-.3 13.6 4 18.5 1.5"/><path d="m47 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.5-.4 13.7 3.9 18.5 1.5"/><path d="m58.7 53.4c-6.8.9-11.5-4.7-18.5-1.5 5.5-.3 13.6 4 18.5 1.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f42d.svg b/riot/emojione/svg/1f42d.svg new file mode 100644 index 0000000..0b21500 --- /dev/null +++ b/riot/emojione/svg/1f42d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="48.4" cy="19.6" rx="13.6" ry="13.6" fill="#b5b5b5"/><ellipse cx="48.3" cy="21.3" rx="10.1" ry="10.1" fill="#ffc5d3"/><ellipse cx="15.6" cy="19.6" rx="13.6" ry="13.6" fill="#b5b5b5"/><ellipse cx="15.7" cy="21.3" rx="10.1" ry="10.1" fill="#ffc5d3"/><path d="m48.5 33.4c-2.2-5-7.5-16-16.5-16-9 0-14.3 11-16.5 16-1.1 2.6-2.1 5-2.5 8.7-.6 6.5 7 12 11.1 12 2 0 4.1 3.9 7.9 3.9 3.8 0 5.9-3.9 7.9-3.9 4.1 0 11.7-5.6 11.1-12-.4-3.7-1.4-6.2-2.5-8.7" fill="#c4c5c6"/><g fill="#ffc5d3"><ellipse cx="44.7" cy="47.8" rx="4.2" ry="2.9"/><ellipse cx="19.3" cy="47.8" rx="4.2" ry="2.9"/></g><path d="m35.8 47.8c-.8-.8-3.1-.9-3.8-.9-.7 0-3 .1-3.8.9-.5.6-.1 2 1.3 3.2.9.8 1.8 1 2.5 1 .7 0 1.6-.2 2.5-1 1.4-1.2 1.8-2.6 1.3-3.2" fill="#3e4347"/><ellipse cx="23.1" cy="38.5" rx="6" ry="5.9" fill="#fff"/><ellipse cx="23.1" cy="38.5" rx="4.2" ry="4.1" fill="#3e4347"/><ellipse cx="40.9" cy="38.5" rx="6" ry="5.9" fill="#fff"/><g fill="#3e4347"><ellipse cx="40.9" cy="38.5" rx="4.2" ry="4.1"/><path d="m30.7 55.1c.1-.4.4-.7.7-.9.3-.2.6-.4.9-.6.3-.1.7-.2 1.1-.3.4 0 .8 0 1.1.3-.4 0-.6.2-.9.3l-.9.4c-.3.1-.6.3-.9.4-.4.1-.8.2-1.1.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f42e.svg b/riot/emojione/svg/1f42e.svg new file mode 100644 index 0000000..f6d7c9a --- /dev/null +++ b/riot/emojione/svg/1f42e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#f6c799"><path d="m21.4 7.9c-3.6-1.9-6-5.9-6-5.9-1 10.5 2.8 13.1 5 13.1 2.9.1 5.2-4.9 1-7.2"/><path d="m42.5 7.9c3.6-1.9 6-5.9 6-5.9 1 10.5-2.8 13.1-5 13.1-2.9.1-5.2-4.9-1-7.2"/></g><path d="m62 9.3c-5.7-.2-10.3.7-13.1 2.7-1.7 3-2.6 8.1-2.5 14.4 5.7.2 10.7-.1 13.1-2.7 2.3-2.5 2.6-8.1 2.5-14.4" fill="#6f6f6d"/><path d="m60.5 13.1c-4-.1-7.2.5-9.2 1.9-1.2 2.1-1.9 5.7-1.8 10.1 4 .1 7.5-.1 9.2-1.9 1.7-1.8 1.9-5.7 1.8-10.1" fill="#f4a19a"/><path d="m2 9.3c5.7-.2 10.3.7 13.1 2.7 1.7 3 2.6 8.1 2.5 14.4-5.6.2-10.7-.1-13.1-2.7-2.3-2.5-2.6-8.1-2.5-14.4" fill="#6f6f6d"/><path d="m3.5 13.1c4-.1 7.2.5 9.2 1.9 1.2 2.1 1.8 5.7 1.8 10.1-4 .1-7.5-.1-9.2-1.9-1.7-1.8-1.9-5.7-1.8-10.1" fill="#f4a19a"/><path d="m53 38.3c0 14.1-21 22-21 22 0 0-21-7.9-21-22 0-20.8 8.2-31.6 21-31.6 12.8 0 21 7.7 21 31.6" fill="#dae5ef"/><g fill="#6f6f6d"><path d="m45.4 11.3c-7 7.6-11.9 17.3-4.8 26.2 4.7 5.9 8.4 5.9 11.8 4.9.4-1.3.6-2.7.6-4.2 0-13.9-2.1-22.2-7.6-26.9"/><path d="m23.5 37.6c6.9-8.7 2.4-18.3-4.4-25.8-6 5-8.1 14-8.1 26.5 0 1.5.2 2.9.6 4.2 3.5 1 7.2 1 11.9-4.9"/></g><path d="m39.4 31.2c0 0 2.4 4 6.8 2.7 4.4-1.3 4.6-6 4.6-6s-2.4-4-6.8-2.7c-4.4 1.3-4.6 6-4.6 6" fill="#fff"/><g fill="#3e4347"><ellipse cx="45.1" cy="29.6" rx="3.3" ry="3.9"/><path d="m39.4 31.2c0 0 3.8-5.9 9.7-3.5 3.7 1.5 5.1-.9 5.1-.9-2 .3-2.9-.5-5.1-1.6-4-2-9.7-1-9.7 6"/></g><path d="m24.6 31.2c0 0-2.4 4-6.8 2.7-4.4-1.3-4.6-6-4.6-6s2.4-4 6.8-2.7c4.4 1.3 4.6 6 4.6 6" fill="#fff"/><g fill="#3e4347"><ellipse cx="18.9" cy="29.6" rx="3.3" ry="3.9"/><path d="m24.6 31.2c0 0-3.8-5.9-9.7-3.5-3.7 1.5-5.1-.9-5.1-.9 2 .3 2.9-.5 5.1-1.6 4-2 9.7-1 9.7 6"/></g><path d="M14.8,48.2c0-8.1,4-4,17.2-4c13.2,0,17.2-4.1,17.2,4C49.2,59.8,41.1,62,32,62S14.8,59.8,14.8,48.2z" fill="#f4a19a"/><g fill="#bc6464"><path d="m26.4 50.1c-1.2-3.4-3.4-5.3-5-4.2-1.6 1-1.9 4.6-.7 8 1.2 3.4 3.4 5.3 5 4.2s1.9-4.6.7-8"/><path d="m42.6 45.9c-1.6-1-3.8.8-5 4.2-1.2 3.4-.9 7 .7 8 1.6 1 3.8-.8 5-4.2 1.2-3.4.9-7-.7-8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f42f.svg b/riot/emojione/svg/1f42f.svg new file mode 100644 index 0000000..8349819 --- /dev/null +++ b/riot/emojione/svg/1f42f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M22.1,9.3c0,5.6-3.5,10.2-7.8,10.1C1.7,19.1,6.9,2,6.9,2C11.2,2,22.1,3.7,22.1,9.3z" fill="#f29a2e"/><path d="m17.3 10.4c0 3-1.9 5.4-4.2 5.4-6.7-.2-4-9.3-4-9.3 2.4 0 8.2.9 8.2 3.9" fill="#bc600d"/><path d="m41.9 9.3c0 5.6 3.5 10.2 7.8 10.1 12.6-.3 7.4-17.4 7.4-17.4-4.3 0-15.2 1.7-15.2 7.3" fill="#f29a2e"/><path d="m46.7 10.4c0 3 1.9 5.4 4.2 5.4 6.7-.2 4-9.3 4-9.3-2.4 0-8.2.9-8.2 3.9" fill="#bc600d"/><path d="m58 41.7c0 9.1-52 9.1-52 0 0-37.9 14.9-36.9 26-36.9 11.1 0 26-1 26 36.9" fill="#f29a2e"/><g fill="#3e4347"><path d="m42.5 12.6c-2.3-8.7-18.7-8.9-20.9.1 4.5-4 16.3-4 20.9-.1"/><path d="m39.2 16c-1.5-5.9-12.8-6-14.3 0 3.7-3.2 10.5-3.2 14.3 0"/></g><path d="m62 36.6c-.2-9.2-5.8-13.8-5.8-13.8s3.4 33.9-16.6 17.5h-15.3c-19.9 16.3-16.5-17.5-16.5-17.5s-5.6 4.6-5.8 13.8l2.7-1.6c0 0-2.8 6.1.2 13.6l2.9-3.4c0 0 .8 7.1 8.5 10.7l.4-3.1c0 0 5.8 4.6 15.3 4.6s15.3-4.6 15.3-4.6l.4 3.1c7.7-3.6 8.5-10.7 8.5-10.7l2.9 3.4c3.1-7.5.2-13.6.2-13.6l2.7 1.6" fill="#ffe8bb"/><g fill="#3e4347"><path d="m24.3 40.3c0 0-16.9 12.7-16.6-17.5.1 0-4 35.9 16.6 17.5"/><path d="m39.7 40.3c0 0 16.9 12.7 16.6-17.5-.1 0 4 35.9-16.6 17.5"/></g><path d="m37.6 29.4c3 8.2 2 10.8 2 10.8l-7.5 2.2-7.9-2.2c0 0-1-2.7 2-10.8-13.2 21.9-.8 24.8-.8 24.8s-.6 3.6 3.2 6.6v-2.4c0 0 .8 2.2 3.2 3.5 2.4-1.3 3.2-3.5 3.2-3.5v2.4c2.1-1.2 2.8-3.7 2.8-3.7l.9 1.8c3-4.3 1.9-7.3 1-8.7 0 .1.1.1.1.1s11 1-2.2-20.9" fill="#f5f5f5"/><g fill="#3e4347"><path d="m32 50.1c-.3-.9-1-5.4-.9-8.2h1.7c-.1 2.5.6 7 .8 7.6l-1.6.6"/><path d="m25.6 54.3c6.8-6.8 11.7-8.9 14.4-3.9-4.1-3.2-8.8 2.6-14.4 3.9"/></g><path d="m39.4 39.8c-2.9-1.3-12.1-1.2-14.9 0-1.1.5 2 3.5 7.4 3.5 5.6 0 8.6-3 7.5-3.5" fill="#947151"/><path d="m27.3 27.6c-2.2 14-18.3 10.5-18.3-1.7 0-6.5 0-6.5 10.1-8.7 10.2-2.3 9.1 5.2 8.2 10.4" fill="#ffe8bb"/><path d="m25.7 28.3c-1 9.9-15.6 8.3-14.7-1.6.4-3.8.4-4.2 7.7-3.4 7.4.8 7.3 1.2 7 5" fill="#3e4347"/><path d="m23.5 27.7c-.7 6-11 5.1-10.3-.9.3-2.2.3-2.4 5.4-1.9 5.2.5 5.2.6 4.9 2.8" fill="#fff"/><path d="m22.7 26.5c0 1.4-1.1 2.5-2.4 2.5-1.3 0-2.4-1.1-2.4-2.5 0-1.4 1.1-2.2 2.4-2.2s2.4.9 2.4 2.2" fill="#3e4347"/><path d="m36.6 27.6c2.2 13.9 18.3 10.5 18.3-1.8 0-6.5 0-6.5-10.1-8.7-10.1-2.2-9 5.3-8.2 10.5" fill="#ffe8bb"/><path d="m38.3 28.3c1 9.9 15.6 8.3 14.7-1.6-.4-3.8-.4-4.2-7.7-3.4-7.4.8-7.4 1.2-7 5" fill="#3e4347"/><path d="m40.4 27.7c.7 6 11 5.1 10.3-.9-.3-2.2-.3-2.4-5.4-1.9-5.1.5-5.1.6-4.9 2.8" fill="#fff"/><path d="m45.2 26.5c0 1.4 1.1 2.5 2.4 2.5 1.3 0 2.4-1.1 2.4-2.5 0-1.4-1.1-2.2-2.4-2.2s-2.4.9-2.4 2.2" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f430.svg b/riot/emojione/svg/1f430.svg new file mode 100644 index 0000000..ec8d17c --- /dev/null +++ b/riot/emojione/svg/1f430.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m15.2 9.1c4.2-2.5 10-6 10.3 1.2.6 14.1 2.5 18 2.5 18l-15.8-10.5c0 0-5.9 5.1-9 6-3.8 1.1 1.6-9.6 5.8-12.6 1.4-.9 4.8-1.2 6.2-2.1" fill="#b2b6b8"/><path d="m19.1 12.3c2.5 3.4 5.5 16.5 5.5 16.5l-4.6 1.2c0 0-1.4-4.6-7.7-12.2l6.8-5.5" fill="#ffc5d3"/><path d="m48.8 5.1c-4.2-2.5-10-6-10.3 1.2-.6 14.1-3.5 21-3.5 21l16.8-13.5c0 0 5.9 5.1 9 6 3.8 1.1-1.6-9.6-5.8-12.6-1.4-.9-4.8-1.2-6.2-2.1" fill="#b2b6b8"/><path d="M44.9,8.3c-2.5,3.4-5.5,16.5-5.5,16.5L44,26c0,0,1.4-4.6,7.7-12.2L44.9,8.3z" fill="#ffc5d3"/><path d="m13.7 34.8c0-7.4 5.7-12.8 18.3-12.8 12.7 0 18.3 5.4 18.3 12.8 0 6.3 9.5 15.4 1 21.6-4 3-11.1 5.6-19.3 5.6-8.2 0-15.3-2.6-19.4-5.6-8.4-6.1 1.1-15.3 1.1-21.6" fill="#c4c5c6"/><path d="m40.6 45.2c-.2-6-4.4-13.2-7-16.6-1.2-1.5-2.2-1.5-3.3 0-2.6 3.4-6.7 10.6-7 16.6-4.7-.6-10.1-.4-11.2 2.2-2.1 5 7.8 13.4 19.8 13.4 12 0 21.9-8.4 19.8-13.4-1-2.5-6.4-2.8-11.1-2.2" fill="#fff"/><path d="m41.4 52.4c-1 .8-2.4 1.3-3.8 1.3-1.4.1-2.8-.3-4-1-.6-.4-1.2-.9-1.6-1.5-.4.6-1 1.1-1.6 1.5-1.2.7-2.6 1.1-4 1-1.3-.1-2.7-.5-3.8-1.3-.6-.5 2.7 5.8 9.4 5.8 6.7 0 10-6.3 9.4-5.8" fill="#4c5359"/><path d="m37.3 38.1c0 0 .4-4.1 3.7-5.4 3.7-1.5 6.2 2.1 6.9 4.2 1 3-.3 6.4-.6 7.1-.2.5-3 2.9-9.2.6 0 0-1.5-3.4-.8-6.5" fill="#fff"/><path d="m37.3 38.1c.1-1.4.5-2.9 1.4-4.1.4-.6 1-1.1 1.6-1.5.3-.2.6-.3 1-.4.4-.1.7-.2 1.1-.2 1.5-.2 3 .5 4 1.5 1.1 1 1.9 2.4 2.3 3.9.4 1.5.3 3.1-.1 4.6-.2.7-.4 1.4-.7 2.1l-.1.3-.1.1-.1.1c0 .1-.1.1-.1.1-.2.2-.3.3-.5.4-.3.2-.6.4-1 .5-1.3.5-2.8.5-4.1.4-1.3-.2-2.6-.6-3.8-1.2 1.3.3 2.6.6 3.9.6 1.3 0 2.6-.1 3.7-.7.3-.1.5-.3.8-.5.1-.1.2-.2.3-.3v-.1c0 0 0 0 0 0l.1-.2c.2-.6.4-1.3.6-1.9.3-1.3.3-2.7 0-4-.3-1.2-1-2.4-1.9-3.3-.9-.9-2-1.5-3.2-1.4-.3 0-.6 0-.9.1-.3.1-.6.2-.9.3-.6.3-1.1.6-1.5 1.1-.9 1-1.5 2.3-1.8 3.7" fill="#b2b6b8"/><ellipse cx="41.8" cy="39.5" rx="3.3" ry="4" fill="#4c5359"/><path d="m26.7 38.1c0 0-.4-4.1-3.7-5.4-3.7-1.5-6.2 2.1-6.9 4.2-1 3 .3 6.4.6 7.1.2.5 3 2.9 9.2.6 0 0 1.5-3.4.8-6.5" fill="#fff"/><path d="m26.7 38.1c-.3-1.4-.9-2.7-1.8-3.6-.4-.5-1-.9-1.5-1.1-.3-.1-.6-.2-.9-.3-.3-.1-.6-.1-.9-.1-1.2 0-2.3.5-3.2 1.4-.9.9-1.6 2.1-1.9 3.3-.3 1.3-.3 2.6 0 4 .1.7.3 1.3.6 1.9l.1.2c0 0 0 0 0 0v.1c.1.1.2.2.3.3.2.2.5.3.8.5 1.1.5 2.4.7 3.7.7 1.3 0 2.6-.3 3.9-.6-1.2.6-2.5 1-3.8 1.2-1.3.2-2.7.2-4.1-.4-.3-.1-.7-.3-1-.5-.2-.1-.3-.2-.5-.4 0 0-.1-.1-.1-.1l-.1-.1-.1-.1-.1-.4c-.3-.7-.5-1.4-.7-2.1-.3-1.5-.4-3-.1-4.6.4-1.5 1.2-2.9 2.3-3.9 1.1-1 2.5-1.7 4-1.5.4 0 .7.1 1.1.2.3.1.7.3 1 .4.6.4 1.2.9 1.6 1.5.9 1.2 1.3 2.6 1.4 4.1" fill="#b2b6b8"/><ellipse cx="22.2" cy="39.5" rx="3.3" ry="4" fill="#4c5359"/><path fill="#fff" d="m28.7 49.6h6.7v5.5h-6.7z"/><path d="m42 51.8c-1.1.6-2.5.8-3.7.7-1.3-.1-2.5-.4-3.5-1-1-.6-1.7-1.5-1.9-2.4l-.9-4.2-.9 4.2c-.2.9-.9 1.8-1.9 2.4-1 .6-2.2 1-3.4 1-1.3 0-2.6-.2-3.8-.7-1.1-.5-2.1-1.4-2.6-2.5.1 1.2.9 2.4 2 3.2 1.2.8 2.7 1.3 4.2 1.3 1.6.1 3.2-.3 4.5-1 .7-.4 1.3-.9 1.8-1.5.5.6 1.1 1.1 1.8 1.5 1.3.7 3 1.1 4.5 1 1.6-.1 3.1-.5 4.3-1.3 1.2-.8 2-2 2-3.2-.4 1.1-1.3 2-2.5 2.5" fill="#b2b6b8"/><path d="m36.4 44.1c-.9-.7-3.6-.8-4.4-.8-.8 0-3.6.1-4.4.8-.6.5-.1 1.8 1.5 2.9 1.1.7 2.1.9 2.9.9.8 0 1.8-.2 2.9-.9 1.7-1.1 2.2-2.4 1.5-2.9" fill="#ff94a4"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f431.svg b/riot/emojione/svg/1f431.svg new file mode 100644 index 0000000..bacd52c --- /dev/null +++ b/riot/emojione/svg/1f431.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m4.5 2.2c-3.5 2.2-3.4 25.5.8 33l26.1-16c-4-7.1-23.6-19-26.9-17" fill="#4c5359"/><path d="m9.5 11.3c-1.5.9-2.2 16.2.4 21l16.7-10.2c-2.4-4.6-15.7-11.6-17.1-10.8" fill="#f7a4a4"/><path d="m59.5 2.2c3.5 2.2 3.4 25.5-.7 33l-26.1-16c3.9-7.1 23.5-19 26.8-17" fill="#4c5359"/><path d="m54.5 11.3c1.5.9 2.2 16.2-.4 21l-16.8-10.2c2.5-4.6 15.8-11.6 17.2-10.8" fill="#f7a4a4"/><path d="m31.8 13.1c-27.1 0-29.6 19.4-29.6 30.4 0 4.5 13.2 18.5 29.6 18.5 16.4 0 29.6-14 29.6-18.5 0-11-2.5-30.4-29.6-30.4" fill="#4c5359"/><path d="m24.2 38.7c0 0-3.1 4.8-8.8 3.3-5.7-1.5-6-7.2-6-7.2s3.1-4.8 8.8-3.3c5.8 1.5 6 7.2 6 7.2" fill="#bfffab"/><path d="m23.6 36.2c0 0-2.7 3-6.5 3-4.1 0-6.5-5.9-6.5-5.9s2.7-3.1 7.6-1.9c4.5 1.2 5.4 4.8 5.4 4.8" fill="#93e67f"/><path d="m19.4 36.1c0 6.6-3.2 6.6-3.2 0 .1-6.6 3.2-6.6 3.2 0" fill="#4c5359"/><path d="m39.4 38.7c0 0 3.1 4.8 8.8 3.3 5.7-1.5 6-7.2 6-7.2s-3.1-4.8-8.8-3.3c-5.8 1.5-6 7.2-6 7.2" fill="#bfffab"/><path d="m39.9 36.2c0 0 2.7 3 6.5 3 4.1 0 6.5-5.9 6.5-5.9s-2.7-3.1-7.6-1.9c-4.5 1.2-5.4 4.8-5.4 4.8" fill="#93e67f"/><path d="m44.1 36.1c0 6.6 3.2 6.6 3.2 0 0-6.6-3.2-6.6-3.2 0" fill="#4c5359"/><path d="m40.4 44c-2.6-2-5.4-8.7-8.6-8.7s-6.1 6.7-8.7 8.7c-4.1 3.2-15 6.8-15 6.8 0 0 11.6 10.2 23.6 10.2s23.6-10.2 23.6-10.2c.1 0-10.8-3.6-14.9-6.8" fill="#fff"/><ellipse cx="31.8" cy="54.5" rx="1.7" ry="2.5" fill="#ff94a4"/><g fill="#4c5359"><path d="m40.2 53.1c-1 .6-2.1.8-3.1.8-1.1-.1-2.1-.4-2.9-1.1-.8-.6-1.4-1.5-1.6-2.6l-.8-4.5-.8 4.5c-.2 1-.8 1.9-1.6 2.6-.8.7-1.9 1-2.9 1.1-1.1 0-2.2-.2-3.1-.8-1-.6-1.8-1.5-2.2-2.7.1 1.3.7 2.5 1.7 3.4 1 .9 2.3 1.4 3.5 1.4 1.4.1 2.7-.3 3.8-1.1.6-.4 1.1-1 1.5-1.6.4.6.9 1.2 1.5 1.6 1.1.8 2.5 1.2 3.8 1.1 1.3-.1 2.6-.6 3.6-1.4 1-.9 1.7-2.1 1.7-3.4-.3 1.1-1.1 2.1-2.1 2.7"/><path d="m35.8 44.8c-.8-1-3.3-1.1-4-1.1-.7 0-3.2.1-4 1.1-.6.7-.1 2.5 1.4 4 1 1 1.9 1.3 2.6 1.3.7 0 1.7-.3 2.6-1.3 1.5-1.6 2-3.3 1.4-4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f432.svg b/riot/emojione/svg/1f432.svg new file mode 100644 index 0000000..b4b3669 --- /dev/null +++ b/riot/emojione/svg/1f432.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="m35.1 31.1c-1.5-1.2-2.1-2.8-8-.2-3.9 1.7-3 2.4-8.1.8-7.1-2.2-9.7 1.6-11.4 2.1 0 0 4-1.1 7.3 1.5 4.3 3.4 17.3 1.6 19.2 2.2.7.2 2.5-5.2 1-6.4"/><path d="m35.3 34.3c0 0 .1 0 0 0"/></g><path d="m33.4 31.1c-5.8 0-5.6 3.8-14.5 2.8 0 0 4.8 2.6 9.8 1.2 3-.9 5.1 0 5.1 0l-.4-4" fill="#ffd93b"/><path d="m55.6 27.4c5.1 2.3 6.4-4.9 6.4-4.9-6.5.7-8.3-1.9-8.3-1.9 4.5 1.9 6.3-5.9 6.3-5.9-6.8 2.6-5.7-2.4-13-2.4 0-2.5 3.1-5.6 3.1-5.6-8.2-2-11.3 3.7-11.3 3.7-3.1-2.6-.7-6.4-.7-6.4-8.6 0-12.1 13.3-12.1 13.3 1.8-1.8 27.2 44.7 27.2 44.7h5.1c.3-3.7-.9-8.3-.9-8.3 1.6-1.6 3.4 2.1 3.4 2.1 0-5.8-2.5-10.1-2.5-10.1 1.3-1.3 3 1.2 3 1.2 0-4.8-3-7.3-3-7.3 1.6-1.6 2.6-.4 2.6-.4 0-3.6-3.6-4.8-3.6-4.8 3.5.2 4.3-3.2 4.3-3.2-4.5.5-6-3.8-6-3.8" fill="#64892f"/><path d="M23.6,42.5C36.8,46.7,34.8,62,34.8,62h19.3c0,0,5-28.9-5.1-39.9L37.2,39.2L23.6,42.5z" fill="#8cc63e"/><path d="M23.6,42.5C36.8,46.7,33.8,62,33.8,62h5.7c0,0,0.7-16.5-5.5-18.3L23.6,42.5z" fill="#ffdd7d"/><g fill="#64892f"><path d="m24.8 43.2c12.7 1.7 27.5 4.8 26.9-17.3l-14.5 12.6-12.4 4.7"/><path d="m8.1 27.6c-.6.2-1.2-.7-.9-2.3.3-1.6 1.5-4 5.9-4.7 4.5-.7 7.5-.9 7.9-4.8.3-3.9 2-4.9 3.3-5.4 0 0-2.2 1.6-2.2 4.2 0 2.6-1 6.3-4.5 7-3.5.6-7.3 1.4-8.3 2.8-.9 1.4-.1 2.9-1.2 3.2"/></g><path d="m36.3 12.1c-7.2 0-13.2 5-15 11.7-1.2-1.8-3.3-3-5.6-3-1.5 0-2.8.5-3.9 1.3-.8-1.8-2.6-3-4.6-3-2.9-.1-5.2 2.3-5.2 5.1 0 2.9 2.3 5.2 5.2 5.2h24c1.9 0 3.4 1.5 3.4 3.5 0 1.9-1.5 3.5-3.4 3.5h-25.8c-1.9 0-3.4 1.6-3.4 3.5 0 1.9 1.5 3.5 3.4 3.5h30.9c8.5 0 15.5-7 15.5-15.5 0-8.8-6.9-15.8-15.5-15.8" fill="#8cc63e"/><path d="m8.6 23.3c-.6.9-1.8 1.2-2.8.7-1-.5.5-.7 1-1.5.6-.9 0-2 1-1.5 1 .4 1.4 1.5.8 2.3" fill="#3e4347"/><g fill="#fff"><path d="m4.6 29.4l1.7 3.4 1.7-3.4z"/><path d="m6.3 36.3l1.7-3.5 1.7 3.5z"/><path d="m8 36.3v-2.4l7.9 2.4z"/><path d="m6.3 28.7v2.4l7.9-2.4z"/></g><path d="m30.3 27.7h-27.4c-.5 0-.9.3-.9.8 0 .5.4.9.9.9h27.5c1.4 0 2.6 1.2 2.6 2.6v1.7c0 1.4-1.2 2.6-2.6 2.6h-27.5c-.5 0-.9.4-.9.9 0 .4.4.8.9.8h27.5c2.4 0 4.3-1.9 4.3-4.3v-1.7c-.1-2.4-2-4.3-4.4-4.3" fill="#ffdd7d"/><path d="m2.4 42.5c.8-2.1 5.5-.5 6.5 1.7 1.5 3.6 3.3 3.9 3.3 3.9s-3.9.5-5.3-2.3c0 0 1.9 3.8 5.5 4.7 0 0-5.2 1.3-8-2.6 0 0-.2 1.3.6 4 0-.1-4.3-4.9-2.6-9.4" fill="#64892f"/><ellipse cx="26" cy="20.8" rx="4.5" ry="4.5" fill="#8cc63e"/><ellipse cx="26" cy="20.8" rx="3.5" ry="3.5" fill="#fff"/><path d="m28 20.8c0 1.1-.9 2-2 2-1.1 0-2-.9-2-2 0-1.1.9-2 2-2 1.1 0 2 .9 2 2" fill="#3e4347"/><g fill="#64892f"><path d="m26.8 12.1c0 0-5.2 2.8-4 5.4 1.3 2.6 8.9-2.2 13.5 1.5 0 0-.8-2.2-2.3-2.6 0 0 .7-.5 2.2-.6 0 0-1.6-2-4.5-.1 0 0 .2-1.3 1.3-2.1 0 0-2.4 0-4 1.6 0 0-.7-.3.2-2.1 0 0-1.6.6-2.8 2-.1.2-.6-.8.4-3"/><path d="m11.2 26.7c-.6-.2-.6-1.3.6-2.4 1.2-1 3.6-2.1 7.6.1 4 2.3 6.7 4.1 9.3 1.2 2.6-2.8 4.5-2.5 5.9-2.1 0 0-2.7-.2-4.3 1.9-1.5 2.1-4.6 4.2-7.8 2.5-3.2-1.7-6.8-3.6-8.4-3.1-1.6.7-1.8 2.3-2.9 1.9"/><path d="m40.1 57.1h-6.1l-.3-2.7h6.4z"/></g><path d="m4.5 36.2c-1.1.2-2-.1-2.2-.8-.1-.7.6-1.4 1.7-1.7 1.1-.2 3.2.5 3.2.5s-1.6 1.7-2.7 2" fill="#ed4c5c"/><path d="m4.6 35.6c-.6.2-1.2-.1-1.3-.5-.1-.4.3-.9 1-1 .6-.1 2 .3 2 .3s-1 1.1-1.7 1.2" fill="#ffd93b"/><path d="m6.2 32.3c-.7-.1-1.2-.6-1.2-1.1.1-.5.7-.7 1.5-.6s1.9 1.2 1.9 1.2-1.5.7-2.2.5" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f433.svg b/riot/emojione/svg/1f433.svg new file mode 100644 index 0000000..dc6f7f1 --- /dev/null +++ b/riot/emojione/svg/1f433.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 27.2c-4.5-1.3-7.5 1.6-7.5 1.6s-4.4-3.4-8.9-1.6c.4 4 6.7 6.9 9.4 6.9 0 0 3 9.9-4.2 9.9-8.7 0-6.4-8.2-14.8-16.7-7.1-7.1-19.7-8.4-26.7-2.5-7.2 6.2-9.1 16.8-5.5 25.7 0 0 15.6 1.7 17.2 3.3 0 0 32.6 2.6 35.9-4.3 3.6-7.4.5-15.4.5-15.4 2.5 0 4.6-3.1 4.6-6.9" fill="#45cbea"/><path d="m3.8 50.5c4.2 12.7 41.1 18.1 53.2-1-25 9.8-48.1-2.9-53.2 1" fill="#dae5ef"/><g fill="#fff"><path d="m15.7 50c1.1 1.4 2.6 2.4 4.2 3.3 1.6.8 3.3 1.5 5.1 2 3.6 1 7.3 1.4 11 1.3 3.7-.1 7.4-.7 11-1.8 3.6-1.1 6.9-2.9 9.9-5.2-2.9 2.4-6.2 4.3-9.8 5.6-3.6 1.3-7.3 2-11.1 2.2-3.8.2-7.6-.1-11.3-1-1.9-.5-3.7-1.1-5.4-1.9-1.7-.9-3.4-2-4.7-3.5l1.1-1"/><path d="m9.2 49.2c.9 1.8 2.5 3.2 4.2 4.3 1.7 1.2 3.6 2.2 5.6 3 3.9 1.6 8.1 2.5 12.3 2.8 4.2.3 8.5-.2 12.6-1.4 4.1-1.2 7.9-3.2 11.3-5.9-3.3 2.8-7.1 4.9-11.2 6.3-4.1 1.4-8.4 1.9-12.8 1.8-4.3-.1-8.6-1-12.7-2.5-2-.8-4-1.7-5.9-2.9-1.8-1.3-3.6-2.7-4.7-4.8l1.3-.7"/><path d="m5.3 49.7c1.7 2.8 4.3 4.9 7.2 6.6 2.9 1.7 6 2.9 9.3 3.8 6.5 1.7 13.5 2 20.1.2-6.5 2-13.6 2-20.3.5-3.3-.8-6.6-1.9-9.7-3.6-3-1.6-5.9-3.8-7.9-6.8l1.3-.7"/></g><path d="m29.7 55.4c2.9 5.1 9.4 7.1 14 4.7 2.5-1.3-4.6.2-4.3-5.5.2-2.6-4.9-2.9-7.7-2.9s-3.2 1.4-2 3.7" fill="#45cbea"/><g fill="#3e4347"><path d="m22.8 48.7c.3.1.6.1.9.1.3 0 .6.1.9.3.6.4.7 1.1.8 1.7-.1-.3-.2-.6-.4-.8-.1-.3-.3-.5-.5-.6-.2-.2-.5-.2-.8-.3-.3-.1-.6-.2-.9-.4"/><path d="m3.8 50.5c1.3-1.1 3.3-1.5 5-1.5 1.8 0 3.6.3 5.3.6 1.7.3 3.4.7 5.1 1 1.7.2 3.5.3 4.8-.9-.5.8-1.3 1.3-2.2 1.6-.9.3-1.8.3-2.7.3-1.8 0-3.5-.4-5.3-.7-1.7-.3-3.4-.7-5.1-.9-1.6-.2-3.3-.2-4.9.5"/><ellipse transform="matrix(.0571-.9984.9984.0571-3.0334 45.7642)" cx="22.7" cy="24.5" rx="1.2" ry="3.6"/></g><path d="m30.7 7.1c0 0 7.3-6.6-4.3-2 0 0 0-6.6-3.7-.5 0 0-5.8-5.5-3.3-.3 0 0-11.1-2.8-2.8 1.8 0 0-11.9 2.2.9 3.5 5.7.6 3.2 15.1 5.3 15.3 1.8.2 3.5-13.6 8.4-14.1 6.8-.6 8-2.3-.5-3.7" fill="#42ade2"/><g fill="#fff"><path d="m27 7.9c0 0 4-4.1-2.8-1.2 0 0-7.1-3.1-3.4.3 0 0-8.8.4-.8 1.5 1.7.2 1.7 2 3.7 2.2 1.9.2 2.3-1.3 4-1.5 6.5-.6 1.8-1.4-.7-1.3"/><path d="m23.4 23.3c.4-2 .7-4 1.2-6 .2-1 .5-2 .9-3 .4-1 .8-2 1.7-2.8.2-.1.4-.1.5 0 .1.2.1.4 0 .5-.7.5-1.2 1.5-1.6 2.4-.4.9-.7 1.9-1 2.9-.8 2-1.3 4-1.7 6"/><path d="m22.7 21.3c0-1.7-.1-3.4-.4-5.1-.1-.8-.3-1.7-.5-2.5-.2-.8-.4-1.6-.8-2.4-.1-.2 0-.4.2-.5.2-.1.4 0 .5.2.3.9.5 1.7.6 2.6.1.9.2 1.7.3 2.6.2 1.7.2 3.4.1 5.1"/><path d="m22.9 22.8c.2-1.8.4-3.5.4-5.3 0-1.8 0-3.6-.2-5.3 0-.2.1-.4.3-.4.2 0 .4.1.4.3.1 1.8 0 3.6-.2 5.4-.1 1.8-.3 3.5-.7 5.3"/></g><path d="m21 44.1c0 0 0-.1 0 0l.1-.3c0 0 0 0 0 0 0-.1.1-.2.1-.3.1-.2.1-.3.3-.5.2-.3.4-.6.6-.9.5-.6 1.1-1 1.7-1.4.6-.3 1.4-.6 2.1-.6.4 0 .7 0 1.1 0 .2 0 .4.1.5.1.1 0 .2 0 .3.1l.2.1c0 0 0 0 0 0h.1c.1.1.2.2.2.3v.1c0 .2-.1.3-.3.3-.3 0-.6 0-.9.1-.3 0-.6.1-.9.2-.6.1-1.1.4-1.7.6-.5.3-1 .6-1.3.9.1 0 .3 0 .4 0 .5 0 .9 0 1.4.1.6.1 1.2.4 1.7.7.3.2.5.4.7.6.1.1.2.2.3.3 0 .1.1.1.1.2l.1.1c0 0 0 0 0 0 .1.1.1.3 0 .4v.1c-.1.1-.1.1-.2.1-.1 0-.1 0-.2-.1-.2-.2-.4-.3-.7-.4-.2-.1-.5-.3-.7-.4-.5-.2-1-.4-1.5-.5-.5-.1-1-.1-1.6-.1-.3 0-.5 0-.8.1-.3 0-.5.1-.8.2 0 0-.1 0-.1 0-.1 0-.1 0-.2-.1-.1.2-.1.1-.1-.1" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f434.svg b/riot/emojione/svg/1f434.svg new file mode 100644 index 0000000..5935149 --- /dev/null +++ b/riot/emojione/svg/1f434.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#e5be7a"><path d="m12.6 19.7c-.6-7.1 3.7-8 6.1-7.5 2.4.5 4.3 6.4 1.7 13-3.6 9.1-10.5 10.7-10.5 10.7s3.6-6.9 2.7-16.2"/><path d="m14.9 27.5c-.6-7.1 3.7-8 6.1-7.5 2.4.5 4.4 6.4 1.7 13-3.6 9.2-13.1 11.7-13.1 11.7s6.1-7.9 5.3-17.2"/><path d="m16.5 37.4c-.6-7.1 3.7-8 6.1-7.5 2.4.5 4.3 6.4 1.7 13-3.6 9.2-15.6 12.8-15.6 12.8s8.6-8.9 7.8-18.3"/><path d="m53.8 19.9c-1.4-7-6.2-8.2-8.6-7.7-2.4.5-4.3 6.4-1.7 13 3.6 9.1 4.1 15 4.1 15s8.4-9.1 6.2-20.3"/></g><path d="m58 2c.2 5.1-.6 9.3-2.3 11.9-2.5 1.6-6.9 2.4-12.4 2.3-.2-5.1.6-9.4 2.3-11.9 2.6-1.6 6.9-2.4 12.4-2.3" fill="#c1875d"/><path d="m54.7 5.1c.1 2.9-.3 5.2-1.3 6.6-1.4.9-3.9 1.3-6.9 1.3-.1-2.9.3-5.2 1.3-6.6 1.5-.9 3.9-1.3 6.9-1.3" fill="#3e4347"/><path d="m20.8 16.2c-5.4.1-9.8-.6-12.4-2.2-1.7-2.5-2.5-6.7-2.4-11.9 5.4-.2 9.8.6 12.4 2.2 1.7 2.5 2.5 6.7 2.4 11.9" fill="#c1875d"/><path d="m17.6 13.1c-3 .1-5.5-.3-7-1.2-.9-1.4-1.4-3.7-1.3-6.7 3-.1 5.5.3 7 1.2.9 1.4 1.4 3.8 1.3 6.7" fill="#3e4347"/><path d="m48.6 29c0 3.7-4.1 16.4-4.1 21.8 0 0-5.1.5-12.5.5-7.2 0-12.3-.2-12.3-.2 0-5.5-4.3-18.3-4.3-22 0-4.9-.5-10.1 4.6-16.8 1.2-1.6 1.5-3.6 12-3.6 10.4 0 11.1 1.7 12.2 3 5 6 4.4 10.8 4.4 17.3" fill="#c1875d"/><path d="m44.8 54.9c0 4.9-3 7.1-12.8 7.1-9.8 0-12.8-2.2-12.8-7.1 0-4.9.3-10.6 12.8-10.6 12.5 0 12.8 5.7 12.8 10.6" fill="#ffe2b3"/><g fill="#3e4347"><path d="m49 26.7c0 2.2-1.5 4-3.2 4-1.8 0-3.2-1.8-3.2-4s1.5-4 3.2-4c1.7 0 3.2 1.8 3.2 4"/><ellipse cx="18.2" cy="26.7" rx="3.2" ry="4"/></g><g fill="#ffe2b3"><path d="m40.5 43.3c-2.1-1.4-5.2 1.1-6.8 5.6-1.6 4.5-1.2 9.2 1 10.6 2.1 1.4 5.2-1.1 6.8-5.6 1.6-4.4 1.2-9.2-1-10.6"/><path d="m23.4 43.3c-2.1 1.4-2.6 6.1-1 10.6 1.6 4.5 4.6 7 6.8 5.6 2.1-1.4 2.6-6.1 1-10.6-1.6-4.4-4.6-6.9-6.8-5.6"/></g><path d="m27.6 19.2c0-8.4 2-10.1 4.4-10.1s4.4 1.7 4.4 10.1c0 8.4-4.4 20.4-4.4 20.4s-4.4-12-4.4-20.4" fill="#fff"/><g fill="#3e4347"><path d="m39.8 46c-1.6-1-3.8.8-5 4.1-1.2 3.3-.8 6.8.7 7.8 1.6 1 3.8-.8 5-4.1 1.2-3.3.8-6.8-.7-7.8"/><path d="m24.2 46c-1.6 1-1.9 4.5-.7 7.8 1.2 3.3 3.4 5.1 5 4.1 1.6-1 1.9-4.5.7-7.8-1.2-3.3-3.4-5.1-5-4.1"/></g><path d="m45.7 9.6c-7.3-10.3-36.1-7-36.1 17 0 0 6.9-8.8 18.5-11.4 0 0-4.6 5.3-10 9.4 0 0 11.3-2.9 18.3-9.4 0 0 .8 4.7-8.5 7.8-.1 0 26.8-.7 17.8-13.4" fill="#e5be7a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f435.svg b/riot/emojione/svg/1f435.svg new file mode 100644 index 0000000..5e796ad --- /dev/null +++ b/riot/emojione/svg/1f435.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="53.7" cy="33" rx="8.3" ry="8.2" fill="#89664c"/><ellipse cx="53.7" cy="33" rx="5.4" ry="5.4" fill="#ffc5d3"/><ellipse cx="10.2" cy="33" rx="8.2" ry="8.2" fill="#89664c"/><ellipse cx="10.2" cy="33" rx="5.4" ry="5.4" fill="#ffc5d3"/><g fill="#89664c"><path d="m43.4 10.8c1.1-.6 1.9-.9 1.9-.9-3.2-1.1-6-1.8-8.5-2.1 1.3-1 2.1-1.3 2.1-1.3-20.4-2.9-30.1 9-30.1 19.5h46.4c-.7-7.4-4.8-12.4-11.8-15.2"/><path d="m55.3 27.6c0-9.7-10.4-17.6-23.3-17.6s-23.3 7.9-23.3 17.6c0 2.3.6 4.4 1.6 6.4-1 2-1.6 4.2-1.6 6.4 0 9.7 10.4 17.6 23.3 17.6s23.3-7.9 23.3-17.6c0-2.3-.6-4.4-1.6-6.4 1-2 1.6-4.2 1.6-6.4"/></g><path d="m52 28.2c0-16.9-20-6.1-20-6.1s-20-10.8-20 6.1c0 4.7 2.9 9 7.5 11.7-1.3 1.7-2.1 3.6-2.1 5.7 0 6.1 6.6 11 14.7 11s14.7-4.9 14.7-11c0-2.1-.8-4-2.1-5.7 4.4-2.7 7.3-7 7.3-11.7" fill="#e0ac7e"/><g fill="#3b302a"><path d="m35.1 38.7c0 1.1-.4 2.1-1 2.1-.6 0-1-.9-1-2.1 0-1.1.4-2.1 1-2.1.6.1 1 1 1 2.1"/><path d="m30.9 38.7c0 1.1-.4 2.1-1 2.1-.6 0-1-.9-1-2.1 0-1.1.4-2.1 1-2.1.5.1 1 1 1 2.1"/><ellipse cx="40.7" cy="31.7" rx="3.5" ry="4.5"/><ellipse cx="23.3" cy="31.7" rx="3.5" ry="4.5"/><path d="m41.8 44.5c1.4 1.2-2.9 6.9-9.8 7-6.9 0-11.3-5.8-9.8-7 .4-.3 5.2.9 9.8.9 4.7 0 9.5-1.2 9.8-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f436.svg b/riot/emojione/svg/1f436.svg new file mode 100644 index 0000000..b6af6c6 --- /dev/null +++ b/riot/emojione/svg/1f436.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m15.8 52.1c-6.8-4.4-9.5-21.5-7.3-29.2 1.6-5.8 7.8-14.3 13.4-16.5 4.7-1.9 15.5-1.9 20.1 0 5.6 2.2 11.8 10.7 13.4 16.5 2.2 7.8.5 24.8-6.2 29.2-14.2 9.2-19.2 9.2-33.4 0" fill="#f5d1ac"/><path d="m5.1 24.7c3.6 7.9 4.5 8.2 7.9-1.2 1.8-5 .5-8 2.7-11.2 1.2-1.8 3.9-4.8 3.9-4.8s-21.3 2.2-14.5 17.2" fill="#423223"/><path d="m14.2 7.2c-5.4 3.5-16.9 2.1-10.1 17 3.6 7.9 4.5 8.2 7.9-1.2 1.8-5 .5-8 2.7-11.2 1.2-1.8 4.9-4.3 4.9-4.3s-1.7-2.7-5.4-.3" fill="#947151"/><path d="m58.9 24.6c-3.6 7.9-4.5 8.2-7.9-1.2-1.8-5-.5-8-2.7-11.2-1.2-1.8-3.9-4.8-3.9-4.8s21.3 2.3 14.5 17.2" fill="#423223"/><path d="m49.8 7.2c5.4 3.5 16.9 2.1 10.1 17-3.6 7.9-4.5 8.2-7.9-1.2-1.8-5-.5-8-2.7-11.2-1.2-1.8-4.9-4.3-4.9-4.3s1.7-2.7 5.4-.3" fill="#947151"/><ellipse cx="17.7" cy="30.7" rx="6" ry="6" fill="#fff"/><ellipse cx="16.2" cy="30.7" rx="4.5" ry="4.5" fill="#3e4347"/><ellipse cx="46.3" cy="30.7" rx="6" ry="6" fill="#fff"/><ellipse cx="47.8" cy="30.7" rx="4.5" ry="4.5" fill="#3e4347"/><path d="m21.7 48.8l4.6 4.9c2.8 2.9 8.5 2.9 11.3 0l4.7-4.9-4.8-5h-11l-4.8 5" fill="#7d644b"/><path d="m32 39.6c0 0-4.9 7-4.3 10.3.8 4.8 7.7 4.8 8.6 0 .6-3.3-4.3-10.3-4.3-10.3" fill="#f15a61"/><path d="m32 51.7l1.1-6.7h-2.2l1.1 6.7" fill="#ba454b"/><path fill="#423223" d="m27 41.5h10v4.6h-10z"/><path d="m47.8 42.6l-7.1-7.5c-4.3-4.5-13.1-4.5-17.4 0l-7.1 7.5c-2 2.1-2 5.6 0 7.7 2 2.1 5.3 2.1 7.3 0l7.1-7.5c.7-.7 2-.7 2.7 0l7.1 7.5c2 2.1 5.3 2.1 7.3 0 2.2-2.1 2.2-5.6.1-7.7" fill="#947151"/><g fill="#3e4347"><path d="m26.1 35.7c0-2.6 2.6-3.1 5.9-3.1 3.3 0 5.9.5 5.9 3.1 0 2.1-4.7 3.9-5.9 3.9-1.2 0-5.9-1.9-5.9-3.9"/><path transform="matrix(.7061-.7081.7081.7061-20.4741 28.6792)" d="m23.6 38.3h1.4v1.4h-1.4z"/><path transform="matrix(.7061-.7081.7081.7061-23.1252 27.8024)" d="m21.2 41.1h1.4v1.4h-1.4z"/><path transform="matrix(.7061-.7081.7081.7061-22.9146 30.3141)" d="m24.4 42.1h1.4v1.4h-1.4z"/><path transform="matrix(.7081-.7061.7061.7081-15.9562 39.4061)" d="m39 38.3h1.4v1.4h-1.4z"/><path transform="matrix(.7081-.7061.7061.7081-17.2077 41.8912)" d="m41.4 41.1h1.4v1.4h-1.4z"/><path transform="matrix(.7081-.7061.7061.7081-18.8291 39.9731)" d="m38.2 42.1h1.4v1.4h-1.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f437.svg b/riot/emojione/svg/1f437.svg new file mode 100644 index 0000000..30d534b --- /dev/null +++ b/riot/emojione/svg/1f437.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 14.8c-2.4-4.5-18.2-3.1-18.2-3.1s-1.9 16 2.7 18.5c3.5 1.9 17.4-11.8 15.5-15.4" fill="#fc97b2"/><path d="m17.6 17.2c-1.5-2.8-11.3-1.9-11.3-1.9s-1.1 10 1.7 11.5c2.2 1.2 10.8-7.3 9.6-9.6" fill="#ffd7e4"/><path d="M58.7,30.1c4.5-2.4,3.1-18.1,3.1-18.1s-16.1-1.9-18.6,2.7C41.3,18.2,55,32,58.7,30.1z" fill="#fc97b2"/><path d="m56.2 27.1c2.8-1.5 1.9-11.2 1.9-11.2s-10-1.2-11.6 1.7c-1.1 2.2 7.5 10.7 9.7 9.5" fill="#ffd7e4"/><path d="M58.8,39.4C58.8,56.8,46.8,60,32,60S5.2,56.8,5.2,39.4S21.7,9.5,32,9.5S58.8,22,58.8,39.4z" fill="#fc97b2"/><path d="m46 49.8c0 8.1-6.3 7.2-14 7.2s-14 .9-14-7.2 6.3-12.1 14-12.1 14 4 14 12.1" fill="#ffd7e4"/><g fill="#bf7b90"><ellipse cx="25.7" cy="48" rx="3.4" ry="6.3"/><ellipse cx="38.3" cy="48" rx="3.4" ry="6.3"/><path d="m32 22.6c0 0-3-10-9.7-11.9 0 0 3-1.7 5.2-.9 0 0 .1-1.8-1.8-3.1 0 0 4.3-.9 6.5 2.1 0 0 .3-3.2-.5-4.8 0 0 7.1 1.7 9 7.8 0 0-7.3 2.1-8.7 10.8"/></g><g fill="#493b30"><ellipse cx="15.6" cy="34.6" rx="3.1" ry="5.6"/><ellipse cx="48.4" cy="34.4" rx="3.1" ry="5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f438.svg b/riot/emojione/svg/1f438.svg new file mode 100644 index 0000000..a45c14a --- /dev/null +++ b/riot/emojione/svg/1f438.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.1 23.6c-11.4-16.8-38.8-16.8-50.2 0-4 5.9-5 12.5-4.9 13.9.3 4 9.3 20.6 30 20.5 20.6-.1 29.6-16.4 30-20.5.1-1.4-.9-8-4.9-13.9" fill="#83bf4f"/><path d="m2 37.5c.3 4 6.6 21.6 30 21.5 23.3-.1 29.6-17.4 30-21.5 0 0-12.1 10-29.9 10-18 0-30.1-10-30.1-10" fill="#ffdf99"/><g fill="#3e4347"><path d="m26.3 32c-1.4 0-4.3 4-4.3 4s2.9-1.3 4.3-1.3c1.4 0 4.3 1.3 4.3 1.3s-2.9-4-4.3-4"/><path d="m37.7 32c-1.4 0-4.3 4-4.3 4s2.9-1.3 4.3-1.3c1.4 0 4.3 1.3 4.3 1.3s-2.9-4-4.3-4"/></g><circle cx="50" cy="17" r="12" fill="#83bf4f"/><circle cx="50" cy="17" r="8" fill="#ffe655"/><path d="m54 17.2c0 2.2-1.8 4-4 4s-4-1.8-4-4c0-2.2 1.8-4 4-4s4 1.8 4 4" fill="#3e4347"/><path d="M26,17c0,6.6-5.4,12-12,12S2,23.6,2,17C2,10.4,7.4,5,14,5S26,10.4,26,17z" fill="#83bf4f"/><circle cx="14" cy="17" r="8" fill="#ffe655"/><path d="m18 17.2c0 2.2-1.8 4-4 4s-4-1.8-4-4c0-2.2 1.8-4 4-4s4 1.8 4 4" fill="#3e4347"/><g fill="#83bf4f"><ellipse cx="14" cy="11.6" rx="9.7" ry="5.4"/><ellipse cx="50" cy="11.6" rx="9.7" ry="5.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f439.svg b/riot/emojione/svg/1f439.svg new file mode 100644 index 0000000..4027ed9 --- /dev/null +++ b/riot/emojione/svg/1f439.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.6 7.3c-5-.8-9.8 2.2-10.4 6.8-1.9 13.6 14.4 10.6 14.4 10.6.7-4.6 1-16.5-4-17.4" fill="#f29a2e"/><path d="m10.8 12.3c-2.7-.4-5.2 1.2-5.6 3.7-1 7.2 7.7 5.6 7.7 5.6.4-2.5.6-8.9-2.1-9.3" fill="#af5a31"/><path d="m51.4 7.3c5-.8 9.8 2.2 10.4 6.8 1.9 13.5-14.4 10.5-14.4 10.5-.7-4.5-1-16.4 4-17.3" fill="#f29a2e"/><path d="m53.2 12.3c2.7-.4 5.2 1.2 5.6 3.7 1 7.2-7.7 5.6-7.7 5.6-.4-2.5-.6-8.9 2.1-9.3" fill="#af5a31"/><g fill="#f29a2e"><path d="m5.6 42.2c0 8.6 11.8 14.8 26.4 14.8 14.6 0 26.4-6.2 26.4-14.8 0-11.3.8-19.8-6.2-24.8-4.7-3.3-16.9-6.4-20.2-6.4-3.3 0-15.5 3-20.2 6.4-7 5.1-6.2 13.6-6.2 24.8"/><path d="m30.8 7c.3 1.2-.7 2.2-.7 2.2-1.7-1.5-5-2-5-2 1.3 1 .9 2.5.9 2.5-2.3-.6-4.2-.5-4.2-.5 4.7 2.3 3.7 9.3 3.7 9.3 5.6-3.9 12.5-5.7 12.5-5.7-1.5-3.5-7.2-5.8-7.2-5.8"/></g><path d="m38.7 32.9c0 0 .4-4.6 4.1-6.1 4.1-1.7 6.9 2.4 7.6 4.7 1.1 3.4-.3 7.2-.7 8-.3.6-3.3 3.3-10.1.7 0 .1-1.7-3.7-.9-7.3" fill="#fff"/><path d="m38.7 32.9c.1-1.6.6-3.3 1.5-4.6.5-.7 1.1-1.2 1.8-1.6.3-.2.7-.4 1.1-.5.4-.1.8-.2 1.2-.3 1.6-.2 3.3.6 4.4 1.7 1.2 1.2 2.1 2.7 2.5 4.4.4 1.7.3 3.5-.1 5.2-.2.8-.5 1.6-.8 2.4l-.1.3v.1l-.1.1c-.1.1-.1.1-.1.2-.2.2-.3.3-.5.4-.4.2-.7.4-1.1.6-1.5.6-3 .6-4.5.4-1.5-.3-2.9-.7-4.2-1.4 1.4.3 2.9.7 4.3.7 1.4 0 2.8-.2 4.1-.8.3-.1.6-.3.8-.5.1-.1.2-.2.3-.3v-.1c0 0 0 0 0 0l.1-.2c.3-.7.5-1.4.6-2.2.3-1.5.4-3 0-4.5-.3-1.4-1.1-2.7-2.1-3.7-1-1-2.2-1.7-3.5-1.6-.3 0-.7.1-1 .1-.3.1-.7.2-1 .3-.6.3-1.2.7-1.7 1.3-.9 1-1.5 2.5-1.9 4.1" fill="#db8823"/><ellipse cx="43.7" cy="34.6" rx="3" ry="4" fill="#4c5359"/><path d="m25.3 32.9c0 0-.4-4.6-4.1-6.1-4.1-1.7-6.9 2.4-7.6 4.7-1.1 3.4.3 7.2.7 8 .3.6 3.3 3.3 10.1.7 0 .1 1.7-3.7.9-7.3" fill="#fff"/><path d="m25.3 32.9c-.4-1.6-1-3.1-2-4.1-.5-.5-1.1-1-1.7-1.3-.3-.1-.6-.3-1-.3-.3-.1-.6-.1-1-.1-1.3 0-2.6.6-3.5 1.6-1 1-1.7 2.3-2.1 3.7-.3 1.4-.3 3 0 4.5.1.7.4 1.5.6 2.2l.1.2c0-.1 0 0 0 0v.1c.1.1.2.2.3.3.3.2.5.4.8.5 1.2.6 2.7.8 4.1.8 1.4 0 2.9-.3 4.3-.7-1.3.7-2.8 1.1-4.2 1.4-1.5.2-3 .2-4.5-.4-.4-.1-.7-.3-1.1-.6-.2-.1-.3-.3-.5-.4 0 0-.1-.1-.1-.2v-.1l-.1-.1-.1-.3c-.3-.8-.6-1.6-.8-2.4-.4-1.7-.5-3.4-.1-5.2.4-1.8 1.3-3.2 2.5-4.4 1.2-1.2 2.8-1.9 4.4-1.7.4.1.8.1 1.2.3.4.1.7.3 1.1.5.7.4 1.3 1 1.8 1.6 1 1.3 1.5 3 1.6 4.6" fill="#db8823"/><ellipse cx="20.3" cy="34.6" rx="3" ry="4" fill="#4c5359"/><path d="m41.9 40c-5.2-4.5-5.1-15.5-8-19.4-1.3-1.8-2.5-1.8-3.8 0-3 3.9-2.8 14.9-8 19.4-4.2 3.6-11.7-2.7-12.9.2-1.2 2.7 1.3 15.4 22.8 15.4 21.5 0 24-12.7 22.8-15.4-1.2-2.9-8.7 3.4-12.9-.2" fill="#fff"/><path d="m38.5 48c-.7.4-1.6.6-2.4.6-.8-.1-1.6-.3-2.2-.8-.6-.5-1.1-1.2-1.2-1.9l-.7-3.4-.6 3.4c-.1.8-.6 1.4-1.2 1.9-.6.5-1.4.8-2.2.8-.9 0-1.7-.1-2.4-.6-.7-.4-1.4-1.1-1.7-2 0 1 .6 1.9 1.3 2.5.7.6 1.8 1 2.7 1.1 1 .1 2-.2 2.9-.8.5-.3.8-.7 1.2-1.2.3.5.7.9 1.2 1.2.9.6 1.9.9 2.9.8 1 0 2-.4 2.7-1.1.8-.6 1.3-1.6 1.3-2.5-.3.9-.9 1.6-1.6 2" fill="#4c5359"/><path d="m37.6 40.5c-1.1-.8-4.6-.9-5.6-.9-1 0-4.5.1-5.6.9-.8.6-.2 2.1 2 3.4 1.3.8 2.6 1.1 3.6 1.1 1 0 2.3-.3 3.7-1.1 2.1-1.3 2.7-2.8 1.9-3.4" fill="#f15a61"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f43a.svg b/riot/emojione/svg/1f43a.svg new file mode 100644 index 0000000..7b2fd57 --- /dev/null +++ b/riot/emojione/svg/1f43a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m7.9 28.2l18.9-13c0 0-10.8-15.1-16.2-13-2.6 1-4.5 21.9-2.7 26" fill="#728389"/><path d="m8.7 29.8l7.5-3.6c0 0 4.4-12.2-5.1-20.9-1.9 1.6-4.2 21.6-2.4 24.5" fill="#3e4347"/><path d="m56.1 28.2l-18.9-13c0 0 10.8-15.1 16.2-13 2.6 1 4.5 21.9 2.7 26" fill="#728389"/><path d="m55.3 29.8l-7.5-3.6c0 0-4.4-12.2 5.1-20.9 1.9 1.6 4.2 21.6 2.4 24.5" fill="#3e4347"/><path d="M32,9.7C18.1,9.7,2,25.5,2,36.9C2,46.1,27.9,62,32,62c4.1,0,30-15.9,30-25.1C62,25.5,45.9,9.7,32,9.7z" fill="#728389"/><path d="m4 36.6c.4 9.2 24 21.7 28 21.7 4 0 27.6-12.5 28-21.7-27.5-27.5-7.1 17.9-28 17.9-20.9 0-.5-45.4-28-17.9" fill="#dae5ef"/><path d="m40.5 48.9c-1.7-1.1-6.9-1.2-8.5-1.2-1.6 0-6.8.1-8.5 1.2-1.2.8-.3 2.7 2.9 4.4 2 1 4 1.4 5.5 1.4 1.6 0 3.5-.3 5.5-1.4 3.3-1.7 4.3-3.6 3.1-4.4" fill="#3e4347"/><g fill="#728389"><path d="m11.9 13.9c2.2 1.3 8.2 7.6 3.5 11.2s-7.4 0-6.8-.6c3.9-3.6 3.3-10.6 3.3-10.6"/><path d="m10 16.4c2.3 1 8.8 6 4.3 9.9-4.5 3.9-7.4.9-6.8.2 3.6-3.9 2.5-10.1 2.5-10.1"/><path d="m52.1 13.9c-2.2 1.3-8.2 7.6-3.5 11.2s7.4 0 6.8-.6c-3.9-3.6-3.3-10.6-3.3-10.6"/><path d="m54 16.4c-2.3 1-8.8 6-4.3 9.9 4.5 3.9 7.4.9 6.8.2-3.6-3.9-2.5-10.1-2.5-10.1"/></g><g fill="#dae5ef"><path d="m22.2 19.4c2.1 3.6 6.4 17.5-1.7 20-8.1 2.5-9.6-5-8.3-5.5 6.9-3.3 10-14.5 10-14.5"/><path d="m18.4 21.9c2.4 3.1 7.9 15.4.1 18.4-7.9 3.1-10-3.6-8.8-4.2 6.6-3.6 8.7-14.2 8.7-14.2"/></g><path d="m23.2 33.1c0 3.3-2.7 6-6 6-3.3 0-6-2.7-6-6s2.7-4 6-4l6 4" fill="#42ade2"/><path d="m21 33.1c0 2.1-1.7 3.8-3.8 3.8-2.1 0-3.8-1.7-3.8-3.8 0-2.1 1.7-2.8 3.8-2.8 2.1-.1 3.8.6 3.8 2.8" fill="#3e4347"/><g fill="#dae5ef"><path d="m24.1 32.7c-.2-.5-.6-.9-.9-1.2-.7-.7-1.5-1.3-2.2-1.8-1.5-1-3.1-1.8-4.6-2.6-1.5-.8-3-1.6-4.3-2.6-1.3-1-2.5-2.2-3.4-3.9-.1.9.1 1.8.3 2.6-1.3-1.2-2.5-2.6-3.4-4.5-.1 1.3.2 2.6.6 3.8-1.1-1.2-2.1-2.6-2.9-4.3-.1 2.5.9 5 2.4 7 1.5 2 3.5 3.4 5.5 4.5 2 1.1 4.1 2 6.2 2.7 1 .4 2 .8 3 1.3.9.5 1.8 1 2.4 2.1l1.3-3.1"/><path d="m41.8 19.4c-2.1 3.6-6.4 17.5 1.7 20 8.1 2.5 9.6-5 8.3-5.5-6.9-3.3-10-14.5-10-14.5"/><path d="m45.6 21.9c-2.4 3.1-7.9 15.4-.1 18.4 7.9 3.1 10-3.6 8.8-4.2-6.6-3.6-8.7-14.2-8.7-14.2"/></g><path d="m40.8 33.1c0 3.3 2.7 6 6 6 3.3 0 6-2.7 6-6s-2.7-4-6-4l-6 4" fill="#42ade2"/><path d="m43 33.1c0 2.1 1.7 3.8 3.8 3.8 2.1 0 3.8-1.7 3.8-3.8 0-2.1-1.7-2.8-3.8-2.8-2.1-.1-3.8.6-3.8 2.8" fill="#3e4347"/><path d="m39.9 32.7c.2-.5.6-.9.9-1.2.7-.7 1.5-1.3 2.2-1.8 1.5-1 3.1-1.8 4.6-2.6 1.5-.8 3-1.6 4.3-2.6 1.3-1 2.5-2.2 3.4-3.9.1.9-.1 1.8-.3 2.6 1.3-1.2 2.5-2.6 3.4-4.5.1 1.3-.2 2.6-.6 3.8 1.1-1.2 2.1-2.6 2.9-4.3.1 2.5-.9 5-2.4 7-1.5 2-3.5 3.4-5.5 4.5-2 1.1-4.1 2-6.2 2.7-1 .4-2 .8-3 1.3-.9.5-1.8 1-2.4 2.1l-1.3-3.1" fill="#dae5ef"/><path d="m38.6 56.9c0 1.2-4.1 2.3-6.6 2.3s-6.6-1.1-6.6-2.3 6.6-.7 6.6-.7 6.6-.4 6.6.7" fill="#728389"/><g fill="#3e4347"><path d="m33 53.5v.4c0 .2 0 .4-.1.5-.1.3-.2.7-.3 1-.3.7-.8 1.3-1.4 1.7-1.3.8-2.7.6-3.9.4-2.4-.5-4.4-1.6-6.4-2.8-1.9-1.3-3.7-2.7-5.3-4.3-1.6-1.6-3-3.4-4.2-5.3 1.3 1.9 2.8 3.5 4.5 5 1.7 1.5 3.5 2.8 5.5 3.8 1.9 1.1 4 1.9 6.1 2.2 1 .1 2.1 0 2.7-.4.6-.4.8-1.2.8-2.2h2"/><path d="m33 53.4c0 1 .2 1.8.8 2.2.6.5 1.7.5 2.7.4 2.1-.3 4.2-1.2 6.1-2.2 1.9-1.1 3.8-2.4 5.5-3.8 1.7-1.5 3.2-3.1 4.5-5-1.1 1.9-2.6 3.7-4.2 5.3-1.6 1.6-3.4 3.1-5.3 4.3-1.9 1.2-4 2.3-6.4 2.8-1.2.2-2.5.3-3.9-.4-.7-.4-1.2-1-1.4-1.7-.1-.3-.2-.7-.3-1 0-.2-.1-.3-.1-.5v-.4h2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f43b.svg b/riot/emojione/svg/1f43b.svg new file mode 100644 index 0000000..681e20a --- /dev/null +++ b/riot/emojione/svg/1f43b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.6 10.4c0 4.6-3.9 8.4-8.7 8.4-4.8 0-8.7-3.8-8.7-8.4s3.9-8.4 8.7-8.4c4.8 0 8.7 3.8 8.7 8.4" fill="#947151"/><path d="m57.1 10.4c0 2.8-2.3 5.1-5.2 5.1-2.9 0-5.2-2.3-5.2-5.1s2.3-5.1 5.2-5.1c2.9 0 5.2 2.3 5.2 5.1" fill="#e0ac7e"/><ellipse cx="12.1" cy="10.4" rx="8.7" ry="8.4" fill="#947151"/><ellipse cx="12.1" cy="10.4" rx="5.2" ry="5.1" fill="#e0ac7e"/><path d="M62,37.1C62,55.2,41.8,62,32,62S2,55.2,2,37.1c0-23,11-28.3,30-28.3S62,14.1,62,37.1z" fill="#947151"/><path d="m18.9 45.6c0-9.3 8.9-12.8 13.2-12.8 4.3 0 13.2 3.5 13.2 12.8 0 11.8-4.8 14.6-13.2 14.6s-13.2-2.8-13.2-14.6" fill="#e0ac7e"/><path d="m32.7 2c.3 1.6-.6 2.8-.6 2.8-1.4-1.9-4.2-2.5-4.2-2.5 1.1 1.3.8 3.3.8 3.3-1.9-.7-3.6-.6-3.6-.6 4 3 3.1 12.1 3.1 12.1 4.7-5 10.6-7.4 10.6-7.4-1.3-4.7-6.1-7.7-6.1-7.7" fill="#947151"/><g fill="#3e4347"><path d="m36.4 57c.1 0 .1-.2.1-.3 0-.7-2-1.4-4.5-1.4-2.5 0-4.5.6-4.5 1.4 0 .1 0 .3.1.3h8.8"/><path d="m22.8 45.9c0-3.8 4.1-4.6 9.2-4.6 5.1 0 9.2.7 9.2 4.6 0 3.1-7.4 5.8-9.2 5.8s-9.2-2.8-9.2-5.8"/><path d="m59.1 30.7l-1.7.3-1.7.3c-1.1.2-2.3.3-3.4.5-2.3.3-4.5.5-6.8.7-4.4.3-9 .5-13.5.5s-9.1-.2-13.6-.6c-4.5-.4-9.1-1-13.5-2-.1 0-.1-.1-.1-.1 0 0 .1-.1.1-.1 2.3.1 4.5.3 6.8.4 2.3.1 4.5.2 6.8.3 4.5.1 9 .2 13.6.2 4.5 0 9 0 13.6-.1 4.5-.1 9-.3 13.6-.4.1 0 .1 0 .1.1-.2-.1-.2 0-.3 0"/><path d="m19.6 32.5c0 1.6-1.6 2.9-3.6 2.9s-3.6-1.3-3.6-2.9 1.6-1.2 3.6-1.2 3.6-.4 3.6 1.2"/><path d="m51.7 32.5c0 1.6-1.6 2.9-3.6 2.9-2 0-3.6-1.3-3.6-2.9s1.6-1.2 3.6-1.2c2 0 3.6-.4 3.6 1.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f43c.svg b/riot/emojione/svg/1f43c.svg new file mode 100644 index 0000000..247aacc --- /dev/null +++ b/riot/emojione/svg/1f43c.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 14c0 6.6-5.4 12-12 12-6.6 0-12-5.4-12-12s5.4-12 12-12c6.6 0 12 5.4 12 12" fill="#3e4347"/><ellipse cx="50" cy="14" rx="7.2" ry="7.2" fill="#555e63"/><path d="m26 14c0 6.6-5.4 12-12 12-6.6 0-12-5.4-12-12s5.4-12 12-12c6.6 0 12 5.4 12 12" fill="#3e4347"/><ellipse cx="14" cy="14" rx="7.2" ry="7.2" fill="#555e63"/><path d="M31.9,8C18.7,8,4,17.9,4,36.4c0,7.7,2.5,9,5.3,14.3c7.8,15.1,37.4,15.1,45.2,0c2.8-5.3,5.5-6.6,5.5-14.3 + C60,17.9,45,8,31.9,8z" fill="#d1dbe3"/><path d="m19 50.2c0-6.8 8.8-9.4 13-9.4 4.2 0 13 2.6 13 9.4 0 8.6-4.8 10.6-13 10.6-8.3 0-13-2-13-10.6" fill="#e4eef7"/><g fill="#3e4347"><path d="m31 50.1h2v5h-2z"/><path d="m31.9 57c-4.1 0-7.9-1.3-7.9-2.7 0-.2.1-.3.2-.4.1-.1.4-.2.6-.2.3 0 .6.1 1 .3 1 .4 2.9 1.1 6.1 1.1 3.1 0 5-.7 6.1-1.1.5-.2.8-.3 1-.3.4 0 .8.2.8.6 0 1.4-3.7 2.7-7.9 2.7"/><path d="m24 49.6c0-2.5 3.5-3 7.9-3 4.4 0 7.9.5 7.9 3 0 2-6.3 2.8-7.9 2.8-1.6 0-7.9-.8-7.9-2.8"/><path d="m38.2 27.9c3.6-3.6 9.9-3 14.1 1.2 4.2 4.2 4.7 10.5 1.2 14.1-7.2 7.2-22.5-8-15.3-15.3"/></g><circle cx="44.7" cy="34.4" r="5" fill="#42ade2"/><g fill="#3e4347"><circle cx="44.7" cy="34.4" r="2.5"/><path d="m11.7 29.1c4.2-4.2 10.5-4.7 14.1-1.2 7.2 7.2-8 22.5-15.3 15.3-3.6-3.6-3-9.9 1.2-14.1"/></g><circle cx="19.3" cy="34.4" r="5" fill="#42ade2"/><circle cx="19.3" cy="34.4" r="2.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f43d.svg b/riot/emojione/svg/1f43d.svg new file mode 100644 index 0000000..6014a8b --- /dev/null +++ b/riot/emojione/svg/1f43d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 37.3c0 17.3-13.4 15.3-30 15.3-16.6 0-30 2-30-15.3 0-17.3 13.4-25.9 30-25.9 16.6 0 30 8.6 30 25.9" fill="#fc97b2"/><path d="m25.9 33.6c0 7.4-3.3 13.4-7.3 13.4-4.1 0-7.3-6-7.3-13.4 0-7.4 3.3-13.4 7.3-13.4 4.1.1 7.3 6 7.3 13.4" fill="#a5627a"/><ellipse cx="19.9" cy="33.6" rx="6.1" ry="12.8" fill="#bf7b90"/><path d="m52.7 33.6c0 7.4-3.3 13.4-7.3 13.4-4.1 0-7.3-6-7.3-13.4 0-7.4 3.3-13.4 7.3-13.4 4 .1 7.3 6 7.3 13.4" fill="#a5627a"/><ellipse cx="46.7" cy="33.6" rx="6.1" ry="12.8" fill="#bf7b90"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f43e.svg b/riot/emojione/svg/1f43e.svg new file mode 100644 index 0000000..c6b2b83 --- /dev/null +++ b/riot/emojione/svg/1f43e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m18.1 22.1c-5.6 1.5-9.1 6.9-8.1 10.7s4.8-.5 10.4-2c5.6-1.5 11 .3 10-3.4s-6.6-6.8-12.3-5.3"/><path d="m13.8 20.3c1.7-.6 1.9-4.3 1-6.8-.9-2.5-3-4-4.7-3.4s-2.3 3.1-1.4 5.6 3.4 5.3 5.1 4.6"/><path d="m20.7 18.4c1.8-.2 3-3.7 2.7-6.3-.2-2.6-1.9-4.6-3.7-4.5-1.8.2-3.1 2.4-2.8 5.1.2 2.6 2 5.9 3.8 5.7"/><path d="m28.7 10.7c-1.8 0-3.3 2.1-3.3 4.8s1.5 6 3.3 6 3.3-3.4 3.3-6c0-2.7-1.5-4.8-3.3-4.8"/><path d="m3.3 17.5c-1.6.9-1.8 3.5-.4 5.8 1.3 2.3 4.3 4.5 5.9 3.6 1.6-.9 1.1-4.6-.2-6.9s-3.7-3.4-5.3-2.5"/><path d="m45.9 44.2c-5.6-1.5-11.4 1.5-12.3 5.2s4.4 1.9 10 3.4c5.6 1.5 9.4 5.8 10.4 2s-2.5-9.1-8.1-10.6"/><path d="m50.2 42.5c1.7.6 4.2-2.1 5.1-4.6s.3-5-1.4-5.6c-1.7-.6-3.8.9-4.7 3.4s-.7 6.2 1 6.8"/><path d="m43.3 40.6c1.8.2 3.6-3.1 3.8-5.7.2-2.6-1-4.9-2.8-5.1-1.8-.2-3.5 1.9-3.7 4.5-.3 2.6.9 6.1 2.7 6.3"/><path d="m35.3 43.7c1.8 0 3.3-3.4 3.3-6 0-2.6-1.5-4.8-3.3-4.8-1.8 0-3.3 2.1-3.3 4.8 0 2.6 1.5 6 3.3 6"/><path d="m60.7 39.6c-1.6-.9-3.9.2-5.2 2.5-1.3 2.3-1.8 6-.2 6.9 1.6.9 4.5-1.3 5.9-3.6s1-4.9-.5-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f43f.svg b/riot/emojione/svg/1f43f.svg new file mode 100644 index 0000000..243ee89 --- /dev/null +++ b/riot/emojione/svg/1f43f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m43.7 56.9c3 .5 6.6-.5 10.4-3.9 5.2-4.5 8.3-10 7.8-17.4-.2-2.9-1.3-4.8-2.6-6-1-.9-7.1 1.2-7.1 7.8.1 12.6-8.5 19.5-8.5 19.5" fill="#947151"/><path d="m52.8 38.6c0-6 3-8.5 6.5-9-3.3-3.4-9.2 2.3-9.2 7.5 0 12.6-5.2 13.7-8.1 19.4 0 0 .5.3 1.6.3 3.7-3 9.2-8.6 9.2-18.2" fill="#231f20"/><path d="m51.2 37.5c0-6 3.5-8.6 7.1-8.7-3.8-2.3-9.4 1-9.4 7.3 0 10.3-6.9 14.9-6.9 14.9v5.4c1.6-1.1 9.2-7.6 9.2-18.9" fill="#ffe8bb"/><g fill="#5e4433"><path d="m10.6 38.1c0 0-7.4.5-8.4-1.6-1.4-3 5.9-4.6 8.4-3.4v5"/><path d="m29.7 58.5c0 0-10.8.5-10.8-1 0-1.5 4.9-4.5 10.8-4.5v5.5"/></g><path d="m41.7 56.8c2.9-4.3 3.5-12.9 1.4-18.1-1.7-4.2-6.2-9.3-12.8-12.1-16.5-7.2-22.5 3.7-15 9.2 8.8 6.5 8 16.9 11.4 21.2-3.6.9-6.2 2.8-6.2 3.9 0 1.5 10.8 1 10.8 1 6 0 10.8-1.2 10.8-2.7.1-1.1-.1-1.8-.4-2.4" fill="#947151"/><path d="m31.5 45.9c0-3.7 1.6-6.9 4.1-8.9-5.2.4-9.9 5.2-9.9 11.1.1 5.3 3.4 8 2.3 8.4-8.8 3.1 1.2.8 8.2 2.6 2.2.6-4.7-7.1-4.7-13.2" fill="#ffe8bb"/><path d="m46.1 41.2c0-6.9-9.6-15-15.7-16.9-2.2-.7-4.2-1.2-6-1.5.2.8.3 1.7.4 2.5 12.3 3.1 24.2 15.6 16.9 31.5 3.5-5 4.4-9.2 4.4-15.6" fill="#231f20"/><path d="m31.4 22.9c-2.7-.7-5.1-1-7.4-1 .4.6.6 1.4.7 2.2 10.5 2.9 20.5 9.6 20.5 21.5 0 2.7-1.6 8.7-3.6 11.3 3.9-2.8 6.1-9.4 6.1-15.7.1-10-7.4-15.9-16.3-18.3" fill="#ffe8bb"/><path d="m19.9 19.7l-5.6.6c-.3-3.1 2.3-5.9 2.3-5.9s3 2.2 3.3 5.3" fill="#5e4433"/><path d="m22.4 20.2c.3-3.1-2.2-6.2-2.2-6.2s-3.2 2.2-3.6 5.3c-5.4.2-11.4 7.5-10.9 13.3.1 1.6 4.4 4.6 9.8 4.6s9.8-4.8 9.8-10.7c.1-3.5-1-5.4-2.9-6.3" fill="#947151"/><path d="m21.5 21.3c-.5 4.3-1.4 4.1-2.6 3.9-1.2-.2-2.1-.2-1.6-4.5.3-2.3 2.6-3.9 2.6-3.9s1.8 2.2 1.6 4.5" fill="#f4a19a"/><path d="m16 27.4c0 0-1.5 1.9-3.3 1.9-1.8 0-2.6-1.9-2.6-1.9s.8-3.5 2.6-3.5c1.8 0 3.3 3.5 3.3 3.5" fill="#ffe8bb"/><path d="m14.6 27.2c0 0-.9 1.2-2 1.2-1.1 0-1.6-1.2-1.6-1.2s.5-2.1 1.6-2.1c1.1 0 2 2.1 2 2.1" fill="#231f20"/><path d="m25.7 27.5c-1.8.6-4.5-.5-4.5-.5-2.4-3-3.7 1-3.7 1l1.1.4-2 .9.5.5h-1l.6.5-.4.3c-.7-.4-1.4-.6-2.2-.6-2.6 0-4.8 2.3-4.8 5.2s2.1 5.2 4.8 5.2c2.6 0 4.8-2.3 4.8-5.2 0-.1 0-.2 0-.3l1.8.5-.4-1.4h2.1l-.9-.8 3-2.3h-1.8l2.8-1.7c0 0-1.5 0-2.1 0 1 .1 4.2-2.4 2.3-1.7" fill="#ffe8bb"/><path d="m25.7 42.4c.1 2.3-5.4 9-13.3-1.3 0 0-7.4.5-8.4-1.6-1.4-3 7.1-4.8 9.3-3.4 5.2 3.2 12.2-3 12.4 6.3" fill="#947151"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f440.svg b/riot/emojione/svg/1f440.svg new file mode 100644 index 0000000..8caf9aa --- /dev/null +++ b/riot/emojione/svg/1f440.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#dde8e3"><path d="M2,31.4C2,40.2,5.7,53,17,53c11.3,0,15-12.8,15-21.6C32,4.2,2,4.2,2,31.4z"/><path d="m32 31.4c0 8.8 3.7 21.6 15 21.6 11.3 0 15-12.8 15-21.6 0-27.2-30-27.2-30 0"/></g><g fill="#fff"><path d="m2.8 32.1c0 7.6 2.4 19.3 12 19.3 9.6 0 12-11.8 12-19.3-.1-26-24-26-24 0"/><path d="m32.8 32.1c0 7.6 2.4 19.3 12 19.3 9.6 0 12-11.8 12-19.3-.1-26-24-26-24 0"/></g><g fill="#493b30"><path d="m2.8 32.2c0 6.2 4.4 11 9.7 11 5.4 0 9.7-4.8 9.7-11 0-15.2-19.4-15.2-19.4 0"/><path d="m32.8 32.2c0 6.2 4.4 11 9.7 11 5.4 0 9.7-4.8 9.7-11 0-15.2-19.4-15.2-19.4 0"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f441-1f5e8.svg b/riot/emojione/svg/1f441-1f5e8.svg new file mode 100644 index 0000000..facc5a2 --- /dev/null +++ b/riot/emojione/svg/1f441-1f5e8.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M55.6,41.7c4-4.4,6.4-8.9,6.4-11.5C62,24.3,48.6,7,32,7C15.4,7,2,24.3,2,30.2s13.4,23.2,30,23.2 + c4.6,0,9-1.3,12.9-3.4L55.6,57V41.7z" fill="#4fd1d9"/><circle cx="32" cy="30.2" r="15" fill="#fff"/><path d="m32 21.2c-1 0-1.9.2-2.8.4 1.1.9 1.8 2.3 1.8 3.8 0 2.8-2.2 5-5 5-1.1 0-2.1-.4-3-1 0 .2 0 .5 0 .7 0 5 4 9 9 9 5 0 9-4 9-9s-4-8.9-9-8.9" fill="#4fd1d9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f441.svg b/riot/emojione/svg/1f441.svg new file mode 100644 index 0000000..3ce3327 --- /dev/null +++ b/riot/emojione/svg/1f441.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32c0 0-10.1 20-30 20-19.9 0-30-20-30-20s10.1-20 30-20c19.9 0 30 20 30 20" fill="#231f20"/><path d="M57,32c0,0-8.4,16.7-25,16.7C15.4,48.7,7,32,7,32s8.4-16.7,25-16.7C48.6,15.3,57,32,57,32z" fill="#fff"/><path d="m45.4 32c0 7.5-6 13.5-13.5 13.5-7.5 0-13.5-6-13.5-13.5 0-7.5 6-13.5 13.5-13.5 7.5 0 13.5 6 13.5 13.5" fill="#42ade2"/><path d="m39.4 32c0 4.1-3.4 7.5-7.5 7.5-4.1 0-7.5-3.4-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5 4.1 0 7.5 3.4 7.5 7.5" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f442-1f3fb.svg b/riot/emojione/svg/1f442-1f3fb.svg new file mode 100644 index 0000000..e203744 --- /dev/null +++ b/riot/emojione/svg/1f442-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.3 46.9c-15.2 6.2-11.5 13.9-20.2 14.9-17.7 2.1-8.9-17.1-9.3-27.5-.7-23 5-31.6 21.5-32.3 22.5-1 28.8 36.5 8 44.9" fill="#ffe1bd"/><g fill="#e6b796"><path d="m22.7 32.9c-2.4-2.2-4.1-5.1-5.1-8.4-.5-1.6-.7-3.4-.5-5.3.2-1.8.8-3.7 1.7-5.3 1-1.6 2.4-3 3.8-4 1.5-1 3.1-1.8 4.7-2.3 1.8-.6 3.7-.8 5.6-.5 1.9.3 3.7 1 5.1 2 3 2 5 4.9 6.5 7.9 1.4 3 2.3 6.2 2.6 9.5.3 3.3 0 6.6-1.1 9.7-.5 1.5-1.3 3-2.3 4.3-1 1.3-2.2 2.4-3.6 3.2l-.1-.4c2.5-1.9 4.1-4.6 4.8-7.5.7-2.9.7-6 .2-9-.5-3-1.5-5.8-3-8.4-1.4-2.6-3.4-4.8-5.7-6.2-1.2-.7-2.4-1-3.6-1.1-1.2-.1-2.5.2-3.6.7-2.6 1.1-4.9 2.6-6.4 4.6-1.5 2-2.1 4.6-1.9 7.5.2 2.9 1.1 5.8 2.3 8.7l-.4.3"/><path d="m18.9 20.9c2.9-1.3 6.6-1.1 9.7.5 3.1 1.6 5.6 4.6 6.2 8.1.3 1.7.2 3.5-.2 5.1-.4 1.6-1 3.1-1.7 4.5-.7 1.4-1.4 2.8-2.3 4.1-.9 1.3-1.8 2.6-3 3.8-1.1 1.2-2.5 2.3-4.1 3-1.6.7-3.5 1.1-5.4.8-.5-.1-1-.2-1.4-.3-.2-.1-.5-.1-.8-.3-.4-.2-.7-.3-1.1-.7-.4-.4-.9-1.1-1-1.8-.1-.7.1-1.3.2-1.7.3-.8.7-1.2 1-1.6 1.2-1.5 2.4-2.4 3.5-3.3 1.1-.9 2.2-1.8 3.1-2.7.4-.4.8-.9 1-1.3.2-.4.3-.7.3-1 0-.3-.2-.8-.6-1.2-.4-.5-.9-.9-1.4-1.4-1.1-.9-2.4-1.6-3.7-2.4l.1-.4c1.6.1 3.1.3 4.7.8.8.3 1.6.6 2.3 1.2.8.5 1.6 1.3 2 2.4.4 1.1.4 2.5 0 3.5-.3 1-.8 1.8-1.3 2.6-1 1.5-2.2 2.6-3.4 3.6-1.1 1-2.4 2-3.1 2.8-.2.2-.3.4-.3.3 0-.1.1-.2 0-.6 0-.4-.3-.7-.4-.8-.2-.1-.1-.1-.2-.1 0 0 .2.1.3.1.3.1.5.2.8.3 2.1.5 4.8-.1 7.3-1.5 2.4-1.4 4.5-3.8 5.4-6.5.5-1.4.6-2.8.5-4.2 0-.4-.1-.6-.1-1-.1-.3-.1-.7-.2-1-.2-.7-.4-1.3-.6-1.9-.9-2.4-2.3-4.5-4.4-6.1-1-.8-2.2-1.4-3.5-1.9-1.3-.5-2.7-.8-4.3-1.1l.1-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f442-1f3fc.svg b/riot/emojione/svg/1f442-1f3fc.svg new file mode 100644 index 0000000..e9b2478 --- /dev/null +++ b/riot/emojione/svg/1f442-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.3 46.9c-15.2 6.2-11.5 13.9-20.2 14.9-17.7 2.1-8.9-17.1-9.3-27.5-.7-23 5-31.6 21.5-32.3 22.5-1 28.8 36.5 8 44.9" fill="#fed0ac"/><g fill="#e0a372"><path d="m22.7 32.9c-2.4-2.2-4.1-5.1-5.1-8.4-.5-1.6-.7-3.4-.5-5.3.2-1.8.8-3.7 1.7-5.3 1-1.6 2.4-3 3.8-4 1.5-1 3.1-1.8 4.7-2.3 1.8-.6 3.7-.8 5.6-.5 1.9.3 3.7 1 5.1 2 3 2 5 4.9 6.5 7.9 1.4 3 2.3 6.2 2.6 9.5.3 3.3 0 6.6-1.1 9.7-.5 1.5-1.3 3-2.3 4.3-1 1.3-2.2 2.4-3.6 3.2l-.1-.4c2.5-1.9 4.1-4.6 4.8-7.5.7-2.9.7-6 .2-9-.5-3-1.5-5.8-3-8.4-1.4-2.6-3.4-4.8-5.7-6.2-1.2-.7-2.4-1-3.6-1.1-1.2-.1-2.5.2-3.6.7-2.6 1.1-4.9 2.6-6.4 4.6-1.5 2-2.1 4.6-1.9 7.5.2 2.9 1.1 5.8 2.3 8.7l-.4.3"/><path d="m18.9 20.9c2.9-1.3 6.6-1.1 9.7.5 3.1 1.6 5.6 4.6 6.2 8.1.3 1.7.2 3.5-.2 5.1-.4 1.6-1 3.1-1.7 4.5-.7 1.4-1.4 2.8-2.3 4.1-.9 1.3-1.8 2.6-3 3.8-1.1 1.2-2.5 2.3-4.1 3-1.6.7-3.5 1.1-5.4.8-.5-.1-1-.2-1.4-.3-.2-.1-.5-.1-.8-.3-.4-.2-.7-.3-1.1-.7-.4-.4-.9-1.1-1-1.8-.1-.7.1-1.3.2-1.7.3-.8.7-1.2 1-1.6 1.2-1.5 2.4-2.4 3.5-3.3 1.1-.9 2.2-1.8 3.1-2.7.4-.4.8-.9 1-1.3.2-.4.3-.7.3-1 0-.3-.2-.8-.6-1.2-.4-.5-.9-.9-1.4-1.4-1.1-.9-2.4-1.6-3.7-2.4l.1-.4c1.6.1 3.1.3 4.7.8.8.3 1.6.6 2.3 1.2.8.5 1.6 1.3 2 2.4.4 1.1.4 2.5 0 3.5-.3 1-.8 1.8-1.3 2.6-1 1.5-2.2 2.6-3.4 3.6-1.1 1-2.4 2-3.1 2.8-.2.2-.3.4-.3.3 0-.1.1-.2 0-.6 0-.4-.3-.7-.4-.8-.2-.1-.1-.1-.2-.1 0 0 .2.1.3.1.3.1.5.2.8.3 2.1.5 4.8-.1 7.3-1.5 2.4-1.4 4.5-3.8 5.4-6.5.5-1.4.6-2.8.5-4.2 0-.4-.1-.6-.1-1-.1-.3-.1-.7-.2-1-.2-.7-.4-1.3-.6-1.9-.9-2.4-2.3-4.5-4.4-6.1-1-.8-2.2-1.4-3.5-1.9-1.3-.5-2.7-.8-4.3-1.1l.1-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f442-1f3fd.svg b/riot/emojione/svg/1f442-1f3fd.svg new file mode 100644 index 0000000..717877f --- /dev/null +++ b/riot/emojione/svg/1f442-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.3 46.9c-15.2 6.2-11.5 13.9-20.2 14.9-17.7 2.1-8.9-17.1-9.3-27.5-.7-23 5-31.6 21.5-32.3 22.5-1 28.8 36.5 8 44.9" fill="#d6a57c"/><g fill="#b58360"><path d="m22.7 32.9c-2.4-2.2-4.1-5.1-5.1-8.4-.5-1.6-.7-3.4-.5-5.3.2-1.8.8-3.7 1.7-5.3 1-1.6 2.4-3 3.8-4 1.5-1 3.1-1.8 4.7-2.3 1.8-.6 3.7-.8 5.6-.5 1.9.3 3.7 1 5.1 2 3 2 5 4.9 6.5 7.9 1.4 3 2.3 6.2 2.6 9.5.3 3.3 0 6.6-1.1 9.7-.5 1.5-1.3 3-2.3 4.3-1 1.3-2.2 2.4-3.6 3.2l-.1-.4c2.5-1.9 4.1-4.6 4.8-7.5.7-2.9.7-6 .2-9-.5-3-1.5-5.8-3-8.4-1.4-2.6-3.4-4.8-5.7-6.2-1.2-.7-2.4-1-3.6-1.1-1.2-.1-2.5.2-3.6.7-2.6 1.1-4.9 2.6-6.4 4.6-1.5 2-2.1 4.6-1.9 7.5.2 2.9 1.1 5.8 2.3 8.7l-.4.3"/><path d="m18.9 20.9c2.9-1.3 6.6-1.1 9.7.5 3.1 1.6 5.6 4.6 6.2 8.1.3 1.7.2 3.5-.2 5.1-.4 1.6-1 3.1-1.7 4.5-.7 1.4-1.4 2.8-2.3 4.1-.9 1.3-1.8 2.6-3 3.8-1.1 1.2-2.5 2.3-4.1 3-1.6.7-3.5 1.1-5.4.8-.5-.1-1-.2-1.4-.3-.2-.1-.5-.1-.8-.3-.4-.2-.7-.3-1.1-.7-.4-.4-.9-1.1-1-1.8-.1-.7.1-1.3.2-1.7.3-.8.7-1.2 1-1.6 1.2-1.5 2.4-2.4 3.5-3.3 1.1-.9 2.2-1.8 3.1-2.7.4-.4.8-.9 1-1.3.2-.4.3-.7.3-1 0-.3-.2-.8-.6-1.2-.4-.5-.9-.9-1.4-1.4-1.1-.9-2.4-1.6-3.7-2.4l.1-.4c1.6.1 3.1.3 4.7.8.8.3 1.6.6 2.3 1.2.8.5 1.6 1.3 2 2.4.4 1.1.4 2.5 0 3.5-.3 1-.8 1.8-1.3 2.6-1 1.5-2.2 2.6-3.4 3.6-1.1 1-2.4 2-3.1 2.8-.2.2-.3.4-.3.3 0-.1.1-.2 0-.6 0-.4-.3-.7-.4-.8-.2-.1-.1-.1-.2-.1 0 0 .2.1.3.1.3.1.5.2.8.3 2.1.5 4.8-.1 7.3-1.5 2.4-1.4 4.5-3.8 5.4-6.5.5-1.4.6-2.8.5-4.2 0-.4-.1-.6-.1-1-.1-.3-.1-.7-.2-1-.2-.7-.4-1.3-.6-1.9-.9-2.4-2.3-4.5-4.4-6.1-1-.8-2.2-1.4-3.5-1.9-1.3-.5-2.7-.8-4.3-1.1l.1-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f442-1f3fe.svg b/riot/emojione/svg/1f442-1f3fe.svg new file mode 100644 index 0000000..aaf77d8 --- /dev/null +++ b/riot/emojione/svg/1f442-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.3 46.9c-15.2 6.2-11.5 13.9-20.2 14.9-17.7 2.1-8.9-17.1-9.3-27.5-.7-23 5-31.6 21.5-32.3 22.5-1 28.8 36.5 8 44.9" fill="#b47d56"/><g fill="#935e3e"><path d="m22.7 32.9c-2.4-2.2-4.1-5.1-5.1-8.4-.5-1.6-.7-3.4-.5-5.3.2-1.8.8-3.7 1.7-5.3 1-1.6 2.4-3 3.8-4 1.5-1 3.1-1.8 4.7-2.3 1.8-.6 3.7-.8 5.6-.5 1.9.3 3.7 1 5.1 2 3 2 5 4.9 6.5 7.9 1.4 3 2.3 6.2 2.6 9.5.3 3.3 0 6.6-1.1 9.7-.5 1.5-1.3 3-2.3 4.3-1 1.3-2.2 2.4-3.6 3.2l-.1-.4c2.5-1.9 4.1-4.6 4.8-7.5.7-2.9.7-6 .2-9-.5-3-1.5-5.8-3-8.4-1.4-2.6-3.4-4.8-5.7-6.2-1.2-.7-2.4-1-3.6-1.1-1.2-.1-2.5.2-3.6.7-2.6 1.1-4.9 2.6-6.4 4.6-1.5 2-2.1 4.6-1.9 7.5.2 2.9 1.1 5.8 2.3 8.7l-.4.3"/><path d="m18.9 20.9c2.9-1.3 6.6-1.1 9.7.5 3.1 1.6 5.6 4.6 6.2 8.1.3 1.7.2 3.5-.2 5.1-.4 1.6-1 3.1-1.7 4.5-.7 1.4-1.4 2.8-2.3 4.1-.9 1.3-1.8 2.6-3 3.8-1.1 1.2-2.5 2.3-4.1 3-1.6.7-3.5 1.1-5.4.8-.5-.1-1-.2-1.4-.3-.2-.1-.5-.1-.8-.3-.4-.2-.7-.3-1.1-.7-.4-.4-.9-1.1-1-1.8-.1-.7.1-1.3.2-1.7.3-.8.7-1.2 1-1.6 1.2-1.5 2.4-2.4 3.5-3.3 1.1-.9 2.2-1.8 3.1-2.7.4-.4.8-.9 1-1.3.2-.4.3-.7.3-1 0-.3-.2-.8-.6-1.2-.4-.5-.9-.9-1.4-1.4-1.1-.9-2.4-1.6-3.7-2.4l.1-.4c1.6.1 3.1.3 4.7.8.8.3 1.6.6 2.3 1.2.8.5 1.6 1.3 2 2.4.4 1.1.4 2.5 0 3.5-.3 1-.8 1.8-1.3 2.6-1 1.5-2.2 2.6-3.4 3.6-1.1 1-2.4 2-3.1 2.8-.2.2-.3.4-.3.3 0-.1.1-.2 0-.6 0-.4-.3-.7-.4-.8-.2-.1-.1-.1-.2-.1 0 0 .2.1.3.1.3.1.5.2.8.3 2.1.5 4.8-.1 7.3-1.5 2.4-1.4 4.5-3.8 5.4-6.5.5-1.4.6-2.8.5-4.2 0-.4-.1-.6-.1-1-.1-.3-.1-.7-.2-1-.2-.7-.4-1.3-.6-1.9-.9-2.4-2.3-4.5-4.4-6.1-1-.8-2.2-1.4-3.5-1.9-1.3-.5-2.7-.8-4.3-1.1l.1-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f442-1f3ff.svg b/riot/emojione/svg/1f442-1f3ff.svg new file mode 100644 index 0000000..c8f653b --- /dev/null +++ b/riot/emojione/svg/1f442-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.3 46.9c-15.2 6.2-11.5 13.9-20.2 14.9-17.7 2.1-8.9-17.1-9.3-27.5-.7-23 5-31.6 21.5-32.3 22.5-1 28.8 36.5 8 44.9" fill="#8a6859"/><g fill="#705041"><path d="m22.7 32.9c-2.4-2.2-4.1-5.1-5.1-8.4-.5-1.6-.7-3.4-.5-5.3.2-1.8.8-3.7 1.7-5.3 1-1.6 2.4-3 3.8-4 1.5-1 3.1-1.8 4.7-2.3 1.8-.6 3.7-.8 5.6-.5 1.9.3 3.7 1 5.1 2 3 2 5 4.9 6.5 7.9 1.4 3 2.3 6.2 2.6 9.5.3 3.3 0 6.6-1.1 9.7-.5 1.5-1.3 3-2.3 4.3-1 1.3-2.2 2.4-3.6 3.2l-.1-.4c2.5-1.9 4.1-4.6 4.8-7.5.7-2.9.7-6 .2-9-.5-3-1.5-5.8-3-8.4-1.4-2.6-3.4-4.8-5.7-6.2-1.2-.7-2.4-1-3.6-1.1-1.2-.1-2.5.2-3.6.7-2.6 1.1-4.9 2.6-6.4 4.6-1.5 2-2.1 4.6-1.9 7.5.2 2.9 1.1 5.8 2.3 8.7l-.4.3"/><path d="m18.9 20.9c2.9-1.3 6.6-1.1 9.7.5 3.1 1.6 5.6 4.6 6.2 8.1.3 1.7.2 3.5-.2 5.1-.4 1.6-1 3.1-1.7 4.5-.7 1.4-1.4 2.8-2.3 4.1-.9 1.3-1.8 2.6-3 3.8-1.1 1.2-2.5 2.3-4.1 3-1.6.7-3.5 1.1-5.4.8-.5-.1-1-.2-1.4-.3-.2-.1-.5-.1-.8-.3-.4-.2-.7-.3-1.1-.7-.4-.4-.9-1.1-1-1.8-.1-.7.1-1.3.2-1.7.3-.8.7-1.2 1-1.6 1.2-1.5 2.4-2.4 3.5-3.3 1.1-.9 2.2-1.8 3.1-2.7.4-.4.8-.9 1-1.3.2-.4.3-.7.3-1 0-.3-.2-.8-.6-1.2-.4-.5-.9-.9-1.4-1.4-1.1-.9-2.4-1.6-3.7-2.4l.1-.4c1.6.1 3.1.3 4.7.8.8.3 1.6.6 2.3 1.2.8.5 1.6 1.3 2 2.4.4 1.1.4 2.5 0 3.5-.3 1-.8 1.8-1.3 2.6-1 1.5-2.2 2.6-3.4 3.6-1.1 1-2.4 2-3.1 2.8-.2.2-.3.4-.3.3 0-.1.1-.2 0-.6 0-.4-.3-.7-.4-.8-.2-.1-.1-.1-.2-.1 0 0 .2.1.3.1.3.1.5.2.8.3 2.1.5 4.8-.1 7.3-1.5 2.4-1.4 4.5-3.8 5.4-6.5.5-1.4.6-2.8.5-4.2 0-.4-.1-.6-.1-1-.1-.3-.1-.7-.2-1-.2-.7-.4-1.3-.6-1.9-.9-2.4-2.3-4.5-4.4-6.1-1-.8-2.2-1.4-3.5-1.9-1.3-.5-2.7-.8-4.3-1.1l.1-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f442.svg b/riot/emojione/svg/1f442.svg new file mode 100644 index 0000000..3063df7 --- /dev/null +++ b/riot/emojione/svg/1f442.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.3 46.9c-15.2 6.2-11.5 13.9-20.2 14.9-17.7 2.1-8.9-17.1-9.3-27.5-.7-23 5-31.6 21.5-32.3 22.5-1 28.8 36.5 8 44.9" fill="#ffdd67"/><g fill="#eba352"><path d="m22.7 32.9c-2.4-2.2-4.1-5.1-5.1-8.4-.5-1.6-.7-3.4-.5-5.3.2-1.8.8-3.7 1.7-5.3 1-1.6 2.4-3 3.8-4 1.5-1 3.1-1.8 4.7-2.3 1.8-.6 3.7-.8 5.6-.5 1.9.3 3.7 1 5.1 2 3 2 5 4.9 6.5 7.9 1.4 3 2.3 6.2 2.6 9.5.3 3.3 0 6.6-1.1 9.7-.5 1.5-1.3 3-2.3 4.3-1 1.3-2.2 2.4-3.6 3.2l-.1-.4c2.5-1.9 4.1-4.6 4.8-7.5.7-2.9.7-6 .2-9-.5-3-1.5-5.8-3-8.4-1.4-2.6-3.4-4.8-5.7-6.2-1.2-.7-2.4-1-3.6-1.1-1.2-.1-2.5.2-3.6.7-2.6 1.1-4.9 2.6-6.4 4.6-1.5 2-2.1 4.6-1.9 7.5.2 2.9 1.1 5.8 2.3 8.7l-.4.3"/><path d="m18.9 20.9c2.9-1.3 6.6-1.1 9.7.5 3.1 1.6 5.6 4.6 6.2 8.1.3 1.7.2 3.5-.2 5.1-.4 1.6-1 3.1-1.7 4.5-.7 1.4-1.4 2.8-2.3 4.1-.9 1.3-1.8 2.6-3 3.8-1.1 1.2-2.5 2.3-4.1 3-1.6.7-3.5 1.1-5.4.8-.5-.1-1-.2-1.4-.3-.2-.1-.5-.1-.8-.3-.4-.2-.7-.3-1.1-.7-.4-.4-.9-1.1-1-1.8-.1-.7.1-1.3.2-1.7.3-.8.7-1.2 1-1.6 1.2-1.5 2.4-2.4 3.5-3.3 1.1-.9 2.2-1.8 3.1-2.7.4-.4.8-.9 1-1.3.2-.4.3-.7.3-1 0-.3-.2-.8-.6-1.2-.4-.5-.9-.9-1.4-1.4-1.1-.9-2.4-1.6-3.7-2.4l.1-.4c1.6.1 3.1.3 4.7.8.8.3 1.6.6 2.3 1.2.8.5 1.6 1.3 2 2.4.4 1.1.4 2.5 0 3.5-.3 1-.8 1.8-1.3 2.6-1 1.5-2.2 2.6-3.4 3.6-1.1 1-2.4 2-3.1 2.8-.2.2-.3.4-.3.3 0-.1.1-.2 0-.6 0-.4-.3-.7-.4-.8-.2-.1-.1-.1-.2-.1 0 0 .2.1.3.1.3.1.5.2.8.3 2.1.5 4.8-.1 7.3-1.5 2.4-1.4 4.5-3.8 5.4-6.5.5-1.4.6-2.8.5-4.2 0-.4-.1-.6-.1-1-.1-.3-.1-.7-.2-1-.2-.7-.4-1.3-.6-1.9-.9-2.4-2.3-4.5-4.4-6.1-1-.8-2.2-1.4-3.5-1.9-1.3-.5-2.7-.8-4.3-1.1l.1-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f443-1f3fb.svg b/riot/emojione/svg/1f443-1f3fb.svg new file mode 100644 index 0000000..db943db --- /dev/null +++ b/riot/emojione/svg/1f443-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><ellipse cx="16.9" cy="48.6" rx="9.9" ry="9.5"/><ellipse cx="47.1" cy="48.6" rx="9.9" ry="9.5"/></g><g fill="#fed0ac"><path d="m47.1 49.4c-3.8 0-6.9 2.1-6.9 4.7 0 .6.2 1.2.5 1.8 1.7 1.4 3.9 2.3 6.4 2.3 2.4 0 4.7-.9 6.4-2.3.3-.5.5-1.1.5-1.8 0-2.6-3-4.7-6.9-4.7"/><path d="m16.9 49.4c3.8 0 6.9 2.1 6.9 4.7 0 .6-.2 1.2-.5 1.8-1.7 1.4-3.9 2.3-6.4 2.3-2.4 0-4.7-.9-6.4-2.3-.3-.5-.5-1.1-.5-1.8 0-2.6 3-4.7 6.9-4.7"/><path d="m32 53.3c-3.1 0-7-.9-12.4-2l1.1 6.1c2.9 2.8 6.9 4.6 11.3 4.6s8.4-1.8 11.3-4.6l1.1-6.1c-5.4 1.1-9.3 2-12.4 2"/></g><g fill="#ad6c3f"><path d="m17.6 53.2c3.7 1.1 4.7 5.6 4.7 5.6s-2.5-1.9-5.4-2.5c-6.7-1.4-3.8-4.6.7-3.1"/><path d="m46.4 53.2c-3.7 1.1-4.7 5.6-4.7 5.6s2.5-1.9 5.4-2.5c6.8-1.4 3.8-4.6-.7-3.1"/></g><path d="m43 21.2c0-16.2-4.9-19.2-11-19.2-6.1 0-11.1 3-11.1 19.2 0 4.7-3.7 18.4-3.7 24 0 8.3 6.6 8.6 14.8 8.6 8.2 0 14.8-.3 14.8-8.6 0-5.6-3.8-19.3-3.8-24" fill="#ffe1bd"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f443-1f3fc.svg b/riot/emojione/svg/1f443-1f3fc.svg new file mode 100644 index 0000000..e909c44 --- /dev/null +++ b/riot/emojione/svg/1f443-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><ellipse cx="16.9" cy="48.6" rx="9.9" ry="9.5"/><ellipse cx="47.1" cy="48.6" rx="9.9" ry="9.5"/></g><g fill="#ebbc99"><path d="m47.1 49.4c-3.8 0-6.9 2.1-6.9 4.7 0 .6.2 1.2.5 1.8 1.7 1.4 3.9 2.3 6.4 2.3 2.4 0 4.7-.9 6.4-2.3.3-.5.5-1.1.5-1.8 0-2.6-3-4.7-6.9-4.7"/><path d="m16.9 49.4c3.8 0 6.9 2.1 6.9 4.7 0 .6-.2 1.2-.5 1.8-1.7 1.4-3.9 2.3-6.4 2.3-2.4 0-4.7-.9-6.4-2.3-.3-.5-.5-1.1-.5-1.8 0-2.6 3-4.7 6.9-4.7"/><path d="m32 53.3c-3.1 0-7-.9-12.4-2l1.1 6.1c2.9 2.8 6.9 4.6 11.3 4.6s8.4-1.8 11.3-4.6l1.1-6.1c-5.4 1.1-9.3 2-12.4 2"/></g><g fill="#ad6c3f"><path d="m17.6 53.2c3.7 1.1 4.7 5.6 4.7 5.6s-2.5-1.9-5.4-2.5c-6.7-1.4-3.8-4.6.7-3.1"/><path d="m46.4 53.2c-3.7 1.1-4.7 5.6-4.7 5.6s2.5-1.9 5.4-2.5c6.8-1.4 3.8-4.6-.7-3.1"/></g><path d="m43 21.2c0-16.2-4.9-19.2-11-19.2-6.1 0-11.1 3-11.1 19.2 0 4.7-3.7 18.4-3.7 24 0 8.3 6.6 8.6 14.8 8.6 8.2 0 14.8-.3 14.8-8.6 0-5.6-3.8-19.3-3.8-24" fill="#fed0ac"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f443-1f3fd.svg b/riot/emojione/svg/1f443-1f3fd.svg new file mode 100644 index 0000000..61fe537 --- /dev/null +++ b/riot/emojione/svg/1f443-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><ellipse cx="16.9" cy="48.6" rx="9.9" ry="9.5"/><ellipse cx="47.1" cy="48.6" rx="9.9" ry="9.5"/></g><g fill="#cf9364"><path d="m47.1 49.4c-3.8 0-6.9 2.1-6.9 4.7 0 .6.2 1.2.5 1.8 1.7 1.4 3.9 2.3 6.4 2.3 2.4 0 4.7-.9 6.4-2.3.3-.5.5-1.1.5-1.8 0-2.6-3-4.7-6.9-4.7"/><path d="m16.9 49.4c3.8 0 6.9 2.1 6.9 4.7 0 .6-.2 1.2-.5 1.8-1.7 1.4-3.9 2.3-6.4 2.3-2.4 0-4.7-.9-6.4-2.3-.3-.5-.5-1.1-.5-1.8 0-2.6 3-4.7 6.9-4.7"/><path d="m32 53.3c-3.1 0-7-.9-12.4-2l1.1 6.1c2.9 2.8 6.9 4.6 11.3 4.6s8.4-1.8 11.3-4.6l1.1-6.1c-5.4 1.1-9.3 2-12.4 2"/></g><g fill="#935e3e"><path d="m17.6 53.2c3.7 1.1 4.7 5.6 4.7 5.6s-2.5-1.9-5.4-2.5c-6.7-1.4-3.8-4.6.7-3.1"/><path d="m46.4 53.2c-3.7 1.1-4.7 5.6-4.7 5.6s2.5-1.9 5.4-2.5c6.8-1.4 3.8-4.6-.7-3.1"/></g><path d="m43 21.2c0-16.2-4.9-19.2-11-19.2-6.1 0-11.1 3-11.1 19.2 0 4.7-3.7 18.4-3.7 24 0 8.3 6.6 8.6 14.8 8.6 8.2 0 14.8-.3 14.8-8.6 0-5.6-3.8-19.3-3.8-24" fill="#d6a57c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f443-1f3fe.svg b/riot/emojione/svg/1f443-1f3fe.svg new file mode 100644 index 0000000..4b9d466 --- /dev/null +++ b/riot/emojione/svg/1f443-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><ellipse cx="16.9" cy="48.6" rx="9.9" ry="9.5"/><ellipse cx="47.1" cy="48.6" rx="9.9" ry="9.5"/></g><g fill="#a36c43"><path d="m47.1 49.4c-3.8 0-6.9 2.1-6.9 4.7 0 .6.2 1.2.5 1.8 1.7 1.4 3.9 2.3 6.4 2.3 2.4 0 4.7-.9 6.4-2.3.3-.5.5-1.1.5-1.8 0-2.6-3-4.7-6.9-4.7"/><path d="m16.9 49.4c3.8 0 6.9 2.1 6.9 4.7 0 .6-.2 1.2-.5 1.8-1.7 1.4-3.9 2.3-6.4 2.3-2.4 0-4.7-.9-6.4-2.3-.3-.5-.5-1.1-.5-1.8 0-2.6 3-4.7 6.9-4.7"/><path d="m32 53.3c-3.1 0-7-.9-12.4-2l1.1 6.1c2.9 2.8 6.9 4.6 11.3 4.6s8.4-1.8 11.3-4.6l1.1-6.1c-5.4 1.1-9.3 2-12.4 2"/></g><g fill="#4a352a"><path d="m17.6 53.2c3.7 1.1 4.7 5.6 4.7 5.6s-2.5-1.9-5.4-2.5c-6.7-1.4-3.8-4.6.7-3.1"/><path d="m46.4 53.2c-3.7 1.1-4.7 5.6-4.7 5.6s2.5-1.9 5.4-2.5c6.8-1.4 3.8-4.6-.7-3.1"/></g><path d="m43 21.2c0-16.2-4.9-19.2-11-19.2-6.1 0-11.1 3-11.1 19.2 0 4.7-3.7 18.4-3.7 24 0 8.3 6.6 8.6 14.8 8.6 8.2 0 14.8-.3 14.8-8.6 0-5.6-3.8-19.3-3.8-24" fill="#b47d56"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f443-1f3ff.svg b/riot/emojione/svg/1f443-1f3ff.svg new file mode 100644 index 0000000..a1daed0 --- /dev/null +++ b/riot/emojione/svg/1f443-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><ellipse cx="16.9" cy="48.6" rx="9.9" ry="9.5"/><ellipse cx="47.1" cy="48.6" rx="9.9" ry="9.5"/></g><g fill="#7d5847"><path d="m47.1 49.4c-3.8 0-6.9 2.1-6.9 4.7 0 .6.2 1.2.5 1.8 1.7 1.4 3.9 2.3 6.4 2.3 2.4 0 4.7-.9 6.4-2.3.3-.5.5-1.1.5-1.8 0-2.6-3-4.7-6.9-4.7"/><path d="m16.9 49.4c3.8 0 6.9 2.1 6.9 4.7 0 .6-.2 1.2-.5 1.8-1.7 1.4-3.9 2.3-6.4 2.3-2.4 0-4.7-.9-6.4-2.3-.3-.5-.5-1.1-.5-1.8 0-2.6 3-4.7 6.9-4.7"/><path d="m32 53.3c-3.1 0-7-.9-12.4-2l1.1 6.1c2.9 2.8 6.9 4.6 11.3 4.6s8.4-1.8 11.3-4.6l1.1-6.1c-5.4 1.1-9.3 2-12.4 2"/></g><g fill="#47352d"><path d="m17.6 53.2c3.7 1.1 4.7 5.6 4.7 5.6s-2.5-1.9-5.4-2.5c-6.7-1.4-3.8-4.6.7-3.1"/><path d="m46.4 53.2c-3.7 1.1-4.7 5.6-4.7 5.6s2.5-1.9 5.4-2.5c6.8-1.4 3.8-4.6-.7-3.1"/></g><path d="m43 21.2c0-16.2-4.9-19.2-11-19.2-6.1 0-11.1 3-11.1 19.2 0 4.7-3.7 18.4-3.7 24 0 8.3 6.6 8.6 14.8 8.6 8.2 0 14.8-.3 14.8-8.6 0-5.6-3.8-19.3-3.8-24" fill="#8a6859"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f443.svg b/riot/emojione/svg/1f443.svg new file mode 100644 index 0000000..6f16138 --- /dev/null +++ b/riot/emojione/svg/1f443.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><ellipse cx="16.9" cy="48.6" rx="9.9" ry="9.5"/><ellipse cx="47.1" cy="48.6" rx="9.9" ry="9.5"/></g><g fill="#ffc95c"><path d="m47.1 49.4c-3.8 0-6.9 2.1-6.9 4.7 0 .6.2 1.2.5 1.8 1.7 1.4 3.9 2.3 6.4 2.3 2.4 0 4.7-.9 6.4-2.3.3-.5.5-1.1.5-1.8 0-2.6-3-4.7-6.9-4.7"/><path d="m16.9 49.4c3.8 0 6.9 2.1 6.9 4.7 0 .6-.2 1.2-.5 1.8-1.7 1.4-3.9 2.3-6.4 2.3-2.4 0-4.7-.9-6.4-2.3-.3-.5-.5-1.1-.5-1.8 0-2.6 3-4.7 6.9-4.7"/><path d="m32 53.3c-3.1 0-7-.9-12.4-2l1.1 6.1c2.9 2.8 6.9 4.6 11.3 4.6 4.4 0 8.4-1.8 11.3-4.6l1.1-6.1c-5.4 1.1-9.3 2-12.4 2"/></g><g fill="#ad6c3f"><path d="m17.6 53.2c3.7 1.1 4.7 5.6 4.7 5.6s-2.5-1.9-5.4-2.5c-6.7-1.4-3.8-4.6.7-3.1"/><path d="m46.4 53.2c-3.7 1.1-4.7 5.6-4.7 5.6s2.5-1.9 5.4-2.5c6.8-1.4 3.8-4.6-.7-3.1"/></g><path d="m43 21.2c0-16.2-4.9-19.2-11-19.2-6.1 0-11.1 3-11.1 19.2 0 4.7-3.7 18.4-3.7 24 0 8.3 6.6 8.6 14.8 8.6 8.2 0 14.8-.3 14.8-8.6 0-5.6-3.8-19.3-3.8-24" fill="#ffdd67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f444.svg b/riot/emojione/svg/1f444.svg new file mode 100644 index 0000000..1bdb544 --- /dev/null +++ b/riot/emojione/svg/1f444.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 22.5c-6.3 0-30 10.2-30 10.2 5.6 6.9 3.6 16.8 30 16.8 23.7 0 23.2-8.5 30-16.8 0 0-23.7-10.2-30-10.2" fill="#ed4c5c"/><path d="M32,20.6L5.9,31.2c6.8,8.3,14.5,5.1,26.1,5.1c11.6,0,19.2,3.1,26.1-5.1L32,20.6z" fill="#60452b"/><path d="m58.5 31c0-1.7-11.2-9.9-26.5-9.9s-26.5 8.1-26.5 9.9h53" fill="#fff"/><path d="m44.4 14.9c-2.5-.8-6.2-.4-11.1 1.6-.4.2-.8.3-1.3.5-.4-.2-.9-.3-1.3-.5-4.9-2-8.6-2.4-11.1-1.6-7.4 2.2-17.6 17.8-17.6 17.8 6.3.8 14.5-8.5 30-8.5s23.7 9.3 30 8.5c0 0-10.2-15.6-17.6-17.8" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f445.svg b/riot/emojione/svg/1f445.svg new file mode 100644 index 0000000..8a5af77 --- /dev/null +++ b/riot/emojione/svg/1f445.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 9.3c0 10.9-13.4 20.2-30 20.2-16.6 0-30-9.3-30-20.2 0 0 14.3 3.2 30 3.2 15.7 0 30-3.2 30-3.2" fill="#493b30"/><path d="m8 29.1c0-17.1 0-11.9 24-11.9 24 0 24-5.2 24 11.8 0 17.1-10.7 25.6-24 25.6-13.3.1-24-8.5-24-25.5" fill="#ff717f"/><path fill="#e2596c" d="M33.5 17.2 32 46.5 30.5 17.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f446-1f3fb.svg b/riot/emojione/svg/1f446-1f3fb.svg new file mode 100644 index 0000000..0b774dd --- /dev/null +++ b/riot/emojione/svg/1f446-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.6 28.7c4.4.4 5.9 4 6.4 5.7l.2.8c0 0 .5.6 1.1 1.5.1 0 .1 0 .2 0 0 0 .5-7.8.1-10.3-.4-2.8-.4-15.2-.5-18.3 0-3.5.6-6.1 4.7-6.1 4.1 0 5.3 3.2 5.1 6.2-.3 4.2-.6 18.3-.6 18.3.4-1.8 1.2-3.5 4.2-3.2 3.4.4 4.1 1.7 4.2 3.8 1.7-2.9 4-2.7 5.4-2.3 2.4.6 3.1 4.9 3.1 4.9.9-3.2 2.4-2.6 4.5-2.3 1.3.2 2.8 1.5 3.3 3.7.5 2.2 2.2 3.8-.3 21-.6 4.5-4.6 6.7-10.5 7.8-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.7-1.7.4-4.8 3.4-4.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m49.3 27.1c-3.8-.6-3.5 5.3-2.7 2.8.8-2.5 2.7-2.8 2.7-2.8"/><path d="m42 24.6c-5.2-.5-4.7 5.3-3.7 2.9 1-2.4 3.7-2.9 3.7-2.9"/><path d="m33.4 23.3c-5.2-.5-4.7 5.7-3.7 3.3 1-2.5 3.7-3.3 3.7-3.3"/><path d="m20.7 36.8c0 0-1.5-12.6-.7-28.6 0-2.4.1-6 4.2-6.2-4.7 1.5-2.5 17.4-3.5 34.8"/><path d="m10 29.6c-.2.7-.1 1.5.1 2 2.1 4.5 2.8 8.3 3.1 11.4.1 1 .5 1.8 1.2 2.4l8.9 12.2c1.4 1.9 3.7 2.9 6 2.8.4 0 .7 0 1.1 0 4.1-.3 9.6-1.4 13.6-2.1 4.2-.7 7.5-2.1 9.2-4.4-1.3 3.4-5 5.1-10.1 6-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-8.9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.4-1-.2-2.6.8-3.6"/><path d="m19.5 41c0 0-1.3-4.3-1.8-6.3-.4-1.7-2-4.8-4.6-6 4.2.6 5.6 4 6.1 5.7l.2.8c0 0 .7.5 1.4 1.5-.1.1-1.5 2-1.3 4.3"/><path d="m29.8 27.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.6-.3-1.2-.1-1.8"/><path d="m37.7 29.2c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/><path d="m46.2 31.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f446-1f3fc.svg b/riot/emojione/svg/1f446-1f3fc.svg new file mode 100644 index 0000000..8931e24 --- /dev/null +++ b/riot/emojione/svg/1f446-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.6 28.7c4.4.4 5.9 4 6.4 5.7l.2.8c0 0 .5.6 1.1 1.5.1 0 .1 0 .2 0 0 0 .5-7.8.1-10.3-.4-2.8-.4-15.2-.5-18.3 0-3.5.6-6.1 4.7-6.1 4.1 0 5.3 3.2 5.1 6.2-.3 4.2-.6 18.3-.6 18.3.4-1.8 1.2-3.5 4.2-3.2 3.4.4 4.1 1.7 4.2 3.8 1.7-2.9 4-2.7 5.4-2.3 2.4.6 3.1 4.9 3.1 4.9.9-3.2 2.4-2.6 4.5-2.3 1.3.2 2.8 1.5 3.3 3.7.5 2.2 2.2 3.8-.3 21-.6 4.5-4.6 6.7-10.5 7.8-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.7-1.7.4-4.8 3.4-4.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m49.3 27.1c-3.8-.6-3.5 5.3-2.7 2.8.8-2.5 2.7-2.8 2.7-2.8"/><path d="m42 24.6c-5.2-.5-4.7 5.3-3.7 2.9 1-2.4 3.7-2.9 3.7-2.9"/><path d="m33.4 23.3c-5.2-.5-4.7 5.7-3.7 3.3 1-2.5 3.7-3.3 3.7-3.3"/><path d="m20.7 36.8c0 0-1.5-12.6-.7-28.6 0-2.4.1-6 4.2-6.2-4.7 1.5-2.5 17.4-3.5 34.8"/><path d="m10 29.6c-.2.7-.1 1.5.1 2 2.1 4.5 2.8 8.3 3.1 11.4.1 1 .5 1.8 1.2 2.4l8.9 12.2c1.4 1.9 3.7 2.9 6 2.8.4 0 .7 0 1.1 0 4.1-.3 9.6-1.4 13.6-2.1 4.2-.7 7.5-2.1 9.2-4.4-1.3 3.4-5 5.1-10.1 6-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-8.9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.4-1-.2-2.6.8-3.6"/><path d="m19.5 41c0 0-1.3-4.3-1.8-6.3-.4-1.7-2-4.8-4.6-6 4.2.6 5.6 4 6.1 5.7l.2.8c0 0 .7.5 1.4 1.5-.1.1-1.5 2-1.3 4.3"/><path d="m29.8 27.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.6-.3-1.2-.1-1.8"/><path d="m37.7 29.2c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/><path d="m46.2 31.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f446-1f3fd.svg b/riot/emojione/svg/1f446-1f3fd.svg new file mode 100644 index 0000000..1bf90d5 --- /dev/null +++ b/riot/emojione/svg/1f446-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.6 28.7c4.4.4 5.9 4 6.4 5.7l.2.8c0 0 .5.6 1.1 1.5.1 0 .1 0 .2 0 0 0 .5-7.8.1-10.3-.4-2.8-.4-15.2-.5-18.3 0-3.5.6-6.1 4.7-6.1 4.1 0 5.3 3.2 5.1 6.2-.3 4.2-.6 18.3-.6 18.3.4-1.8 1.2-3.5 4.2-3.2 3.4.4 4.1 1.7 4.2 3.8 1.7-2.9 4-2.7 5.4-2.3 2.4.6 3.1 4.9 3.1 4.9.9-3.2 2.4-2.6 4.5-2.3 1.3.2 2.8 1.5 3.3 3.7.5 2.2 2.2 3.8-.3 21.1-.6 4.5-4.6 6.7-10.5 7.8-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-9-12.3c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.7-1.7.4-4.8 3.4-4.5" fill="#d6a57c"/><g fill="#b58360"><path d="m49.3 27.1c-3.8-.6-3.5 5.3-2.7 2.8.8-2.5 2.7-2.8 2.7-2.8"/><path d="m42 24.6c-5.2-.5-4.7 5.3-3.7 2.9 1-2.4 3.7-2.9 3.7-2.9"/><path d="m33.4 23.3c-5.2-.5-4.7 5.7-3.7 3.3 1-2.5 3.7-3.3 3.7-3.3"/><path d="m20.7 36.8c0 0-1.5-12.6-.7-28.6 0-2.4.1-6 4.2-6.2-4.7 1.5-2.5 17.4-3.5 34.8"/><path d="m10 29.6c-.2.7-.1 1.5.1 2 2.1 4.5 2.8 8.3 3.1 11.4.1 1 .5 1.8 1.2 2.4l8.9 12.2c1.4 1.9 3.7 2.9 6 2.8.4 0 .7 0 1.1 0 4.1-.3 9.6-1.4 13.6-2.1 4.2-.7 7.5-2.1 9.2-4.4-1.3 3.4-5 5.1-10.1 6-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-8.9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.4-1-.2-2.6.8-3.6"/><path d="m19.5 41c0 0-1.3-4.3-1.8-6.3-.4-1.7-2-4.8-4.6-6 4.2.6 5.6 4 6.1 5.7l.2.8c0 0 .7.5 1.4 1.5-.1.1-1.5 2-1.3 4.3"/><path d="m29.8 27.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.6-.3-1.2-.1-1.8"/><path d="m37.7 29.2c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/><path d="m46.2 31.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f446-1f3fe.svg b/riot/emojione/svg/1f446-1f3fe.svg new file mode 100644 index 0000000..cfeb3e0 --- /dev/null +++ b/riot/emojione/svg/1f446-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.6 28.7c4.4.4 5.9 4 6.4 5.7l.2.8c0 0 .5.6 1.1 1.5.1 0 .1 0 .2 0 0 0 .5-7.8.1-10.3-.4-2.8-.4-15.2-.5-18.3 0-3.5.6-6.1 4.7-6.1 4.1 0 5.3 3.2 5.1 6.2-.3 4.2-.6 18.3-.6 18.3.4-1.8 1.2-3.5 4.2-3.2 3.4.4 4.1 1.7 4.2 3.8 1.7-2.9 4-2.7 5.4-2.3 2.4.6 3.1 4.9 3.1 4.9.9-3.2 2.4-2.6 4.5-2.3 1.3.2 2.8 1.5 3.3 3.7.5 2.2 2.2 3.8-.3 21-.6 4.5-4.6 6.7-10.5 7.8-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.7-1.7.4-4.8 3.4-4.5" fill="#b47d56"/><g fill="#935e3e"><path d="m49.3 27.1c-3.8-.6-3.5 5.3-2.7 2.8.8-2.5 2.7-2.8 2.7-2.8"/><path d="m42 24.6c-5.2-.5-4.7 5.3-3.7 2.9 1-2.4 3.7-2.9 3.7-2.9"/><path d="m33.4 23.3c-5.2-.5-4.7 5.7-3.7 3.3 1-2.5 3.7-3.3 3.7-3.3"/><path d="m20.7 36.8c0 0-1.5-12.6-.7-28.6 0-2.4.1-6 4.2-6.2-4.7 1.5-2.5 17.4-3.5 34.8"/><path d="m10 29.6c-.2.7-.1 1.5.1 2 2.1 4.5 2.8 8.3 3.1 11.4.1 1 .5 1.8 1.2 2.4l8.9 12.2c1.4 1.9 3.7 2.9 6 2.8.4 0 .7 0 1.1 0 4.1-.3 9.6-1.4 13.6-2.1 4.2-.7 7.5-2.1 9.2-4.4-1.3 3.4-5 5.1-10.1 6-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-8.9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.4-1-.2-2.6.8-3.6"/><path d="m19.5 41c0 0-1.3-4.3-1.8-6.3-.4-1.7-2-4.8-4.6-6 4.2.6 5.6 4 6.1 5.7l.2.8c0 0 .7.5 1.4 1.5-.1.1-1.5 2-1.3 4.3"/><path d="m29.8 27.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.6-.3-1.2-.1-1.8"/><path d="m37.7 29.2c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/><path d="m46.2 31.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f446-1f3ff.svg b/riot/emojione/svg/1f446-1f3ff.svg new file mode 100644 index 0000000..845edc3 --- /dev/null +++ b/riot/emojione/svg/1f446-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.6 28.7c4.4.4 5.9 4 6.4 5.7l.2.8c0 0 .5.6 1.1 1.5.1 0 .1 0 .2 0 0 0 .5-7.8.1-10.3-.4-2.8-.4-15.2-.5-18.3 0-3.5.6-6.1 4.7-6.1 4.1 0 5.3 3.2 5.1 6.2-.3 4.2-.6 18.3-.6 18.3.4-1.8 1.2-3.5 4.2-3.2 3.4.4 4.1 1.7 4.2 3.8 1.7-2.9 4-2.7 5.4-2.3 2.4.6 3.1 4.9 3.1 4.9.9-3.2 2.4-2.6 4.5-2.3 1.3.2 2.8 1.5 3.3 3.7.5 2.2 2.2 3.8-.3 21-.6 4.5-4.6 6.7-10.5 7.8-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.7-1.7.4-4.8 3.4-4.5" fill="#8a6859"/><g fill="#705041"><path d="m49.3 27.1c-3.8-.6-3.5 5.3-2.7 2.8.8-2.5 2.7-2.8 2.7-2.8"/><path d="m42 24.6c-5.2-.5-4.7 5.3-3.7 2.9 1-2.4 3.7-2.9 3.7-2.9"/><path d="m33.4 23.3c-5.2-.5-4.7 5.7-3.7 3.3 1-2.5 3.7-3.3 3.7-3.3"/><path d="m20.7 36.8c0 0-1.5-12.6-.7-28.6 0-2.4.1-6 4.2-6.2-4.7 1.5-2.5 17.4-3.5 34.8"/><path d="m10 29.6c-.2.7-.1 1.5.1 2 2.1 4.5 2.8 8.3 3.1 11.4.1 1 .5 1.8 1.2 2.4l8.9 12.2c1.4 1.9 3.7 2.9 6 2.8.4 0 .7 0 1.1 0 4.1-.3 9.6-1.4 13.6-2.1 4.2-.7 7.5-2.1 9.2-4.4-1.3 3.4-5 5.1-10.1 6-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-8.9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.4-1-.2-2.6.8-3.6"/><path d="m19.5 41c0 0-1.3-4.3-1.8-6.3-.4-1.7-2-4.8-4.6-6 4.2.6 5.6 4 6.1 5.7l.2.8c0 0 .7.5 1.4 1.5-.1.1-1.5 2-1.3 4.3"/><path d="m29.8 27.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.6-.3-1.2-.1-1.8"/><path d="m37.7 29.2c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/><path d="m46.2 31.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f446.svg b/riot/emojione/svg/1f446.svg new file mode 100644 index 0000000..fc4d2b1 --- /dev/null +++ b/riot/emojione/svg/1f446.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.6 28.7c4.4.4 5.9 4 6.4 5.7l.2.8c0 0 .5.6 1.1 1.5.1 0 .1 0 .2 0 0 0 .5-7.8.1-10.3-.4-2.8-.4-15.2-.5-18.3 0-3.5.6-6.1 4.7-6.1 4.1 0 5.3 3.2 5.1 6.2-.3 4.2-.6 18.3-.6 18.3.4-1.8 1.2-3.5 4.2-3.2 3.4.4 4.1 1.7 4.2 3.8 1.7-2.9 4-2.7 5.4-2.3 2.4.6 3.1 4.9 3.1 4.9.9-3.2 2.4-2.6 4.5-2.3 1.3.2 2.8 1.5 3.3 3.7.5 2.2 2.2 3.8-.3 21-.6 4.5-4.6 6.7-10.5 7.8-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.7-1.7.4-4.8 3.4-4.5" fill="#ffdd67"/><g fill="#eba352"><path d="m49.3 27.1c-3.8-.6-3.5 5.3-2.7 2.8.8-2.5 2.7-2.8 2.7-2.8"/><path d="m42 24.6c-5.2-.5-4.7 5.3-3.7 2.9 1-2.4 3.7-2.9 3.7-2.9"/><path d="m33.4 23.3c-5.2-.5-4.7 5.7-3.7 3.3 1-2.5 3.7-3.3 3.7-3.3"/><path d="m20.7 36.8c0 0-1.5-12.6-.7-28.6 0-2.4.1-6 4.2-6.2-4.7 1.5-2.5 17.4-3.5 34.8"/><path d="m10 29.6c-.2.7-.1 1.5.1 2 2.1 4.5 2.8 8.3 3.1 11.4.1 1 .5 1.8 1.2 2.4l8.9 12.2c1.4 1.9 3.7 2.9 6 2.8.4 0 .7 0 1.1 0 4.1-.3 9.6-1.4 13.6-2.1 4.2-.7 7.5-2.1 9.2-4.4-1.3 3.4-5 5.1-10.1 6-4 .7-9.5 1.8-13.6 2.1-.4 0-.7 0-1.1 0-2.3.1-4.5-.8-6-2.8l-8.9-12.2c0 0 0 0 0 0-.6-.6-1-1.4-1.2-2.4-.3-3.1-1.1-6.9-3.1-11.4-.4-1-.2-2.6.8-3.6"/><path d="m19.5 41c0 0-1.3-4.3-1.8-6.3-.4-1.7-2-4.8-4.6-6 4.2.6 5.6 4 6.1 5.7l.2.8c0 0 .7.5 1.4 1.5-.1.1-1.5 2-1.3 4.3"/><path d="m29.8 27.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.6-.3-1.2-.1-1.8"/><path d="m37.7 29.2c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/><path d="m46.2 31.6c.2.6.5 1 .8 1.5.3.5.6.9.9 1.5.3.5.5 1.2.5 1.8 0 .6-.2 1.3-.5 1.8 0-.6-.1-1.2-.3-1.7-.1-.5-.4-1-.6-1.5-.2-.5-.5-1-.7-1.6-.2-.5-.3-1.2-.1-1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f447-1f3fb.svg b/riot/emojione/svg/1f447-1f3fb.svg new file mode 100644 index 0000000..b6d347e --- /dev/null +++ b/riot/emojione/svg/1f447-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.4 35.3c-4.4-.4-5.9-4-6.4-5.7l-.2-.8c0 0-.5-.6-1.1-1.5-.1 0-.1 0-.2 0 0 0-.5 7.8-.1 10.3.4 2.8.4 15.2.5 18.3.2 3.6-.5 6.2-4.5 6.2-4.1 0-5.3-3.2-5.1-6.2.3-4.2.6-18.3.6-18.3-.4 1.8-1.2 3.5-4.2 3.2-3.4-.4-4.1-1.7-4.2-3.8-1.7 2.9-4 2.7-5.4 2.3-2.4-.6-3.1-4.9-3.1-4.9-.9 3.2-2.4 2.6-4.5 2.3-1.5-.2-2.9-1.5-3.5-3.7-.5-2.2-2.2-3.8.3-21 .6-4.5 4.6-6.7 10.5-7.8 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l9 12.1c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.7 1.7-.4 4.8-3.4 4.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m14.7 36.9c3.8.6 3.5-5.3 2.7-2.8-.8 2.5-2.7 2.8-2.7 2.8"/><path d="m22 39.4c5.2.5 4.7-5.3 3.7-2.9-1 2.4-3.7 2.9-3.7 2.9"/><path d="m30.6 40.7c5.2.5 4.7-5.7 3.7-3.3-1 2.5-3.7 3.3-3.7 3.3"/><path d="m43.3 27.2c0 0 1.5 12.6.8 28.6-.1 2.3-.1 5.9-4.3 6.1 4.7-1.4 2.5-17.3 3.5-34.7"/><path d="m54 34.4c.2-.7.1-1.5-.1-2-2.1-4.5-2.8-8.3-3.1-11.4-.1-1-.5-1.8-1.2-2.4l-9-12.2c-1.4-1.9-3.7-2.9-6-2.8-.4 0-.7 0-1.1 0-4 .3-9.5 1.4-13.5 2.1-4.2.7-7.5 2.1-9.2 4.4 1.3-3.4 5-5.1 10.1-6 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l8.9 12.2c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.4 1 .2 2.6-.8 3.6"/><path d="m44.5 23c0 0 1.3 4.3 1.8 6.3.4 1.7 2 4.8 4.6 6-4.2-.6-5.6-4-6.1-5.7l-.2-.8c0 0-.7-.5-1.4-1.5.1-.1 1.5-2 1.3-4.3"/><path d="m34.2 36.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.3 1 .6 1.5.2.5.5 1 .7 1.6.3.6.4 1.2.2 1.8"/><path d="m26.3 34.8c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.4.5.5 1.2.2 1.8"/><path d="m17.8 32.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.3.5.4 1.2.2 1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f447-1f3fc.svg b/riot/emojione/svg/1f447-1f3fc.svg new file mode 100644 index 0000000..cd98682 --- /dev/null +++ b/riot/emojione/svg/1f447-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.4 35.3c-4.4-.4-5.9-4-6.4-5.7l-.2-.8c0 0-.5-.6-1.1-1.5-.1 0-.1 0-.2 0 0 0-.5 7.8-.1 10.3.4 2.8.4 15.2.5 18.3.2 3.6-.5 6.2-4.5 6.2-4.1 0-5.3-3.2-5.1-6.2.3-4.2.6-18.3.6-18.3-.4 1.8-1.2 3.5-4.2 3.2-3.4-.4-4.1-1.7-4.2-3.8-1.7 2.9-4 2.7-5.4 2.3-2.4-.6-3.1-4.9-3.1-4.9-.9 3.2-2.4 2.6-4.5 2.3-1.5-.2-2.9-1.5-3.5-3.7-.5-2.2-2.2-3.8.3-21 .6-4.5 4.6-6.7 10.5-7.8 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l9 12.1c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.7 1.7-.4 4.8-3.4 4.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m14.7 36.9c3.8.6 3.5-5.3 2.7-2.8-.8 2.5-2.7 2.8-2.7 2.8"/><path d="m22 39.4c5.2.5 4.7-5.3 3.7-2.9-1 2.4-3.7 2.9-3.7 2.9"/><path d="m30.6 40.7c5.2.5 4.7-5.7 3.7-3.3-1 2.5-3.7 3.3-3.7 3.3"/><path d="m43.3 27.2c0 0 1.5 12.6.8 28.6-.1 2.3-.1 5.9-4.3 6.1 4.7-1.4 2.5-17.3 3.5-34.7"/><path d="m54 34.4c.2-.7.1-1.5-.1-2-2.1-4.5-2.8-8.3-3.1-11.4-.1-1-.5-1.8-1.2-2.4l-9-12.2c-1.4-1.9-3.7-2.9-6-2.8-.4 0-.7 0-1.1 0-4 .3-9.5 1.4-13.5 2.1-4.2.7-7.5 2.1-9.2 4.4 1.3-3.4 5-5.1 10.1-6 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l8.9 12.2c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.4 1 .2 2.6-.8 3.6"/><path d="m44.5 23c0 0 1.3 4.3 1.8 6.3.4 1.7 2 4.8 4.6 6-4.2-.6-5.6-4-6.1-5.7l-.2-.8c0 0-.7-.5-1.4-1.5.1-.1 1.5-2 1.3-4.3"/><path d="m34.2 36.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.3 1 .6 1.5.2.5.5 1 .7 1.6.3.6.4 1.2.2 1.8"/><path d="m26.3 34.8c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.4.5.5 1.2.2 1.8"/><path d="m17.8 32.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.3.5.4 1.2.2 1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f447-1f3fd.svg b/riot/emojione/svg/1f447-1f3fd.svg new file mode 100644 index 0000000..a63fe57 --- /dev/null +++ b/riot/emojione/svg/1f447-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.4 35.3c-4.4-.4-5.9-4-6.4-5.7l-.2-.8c0 0-.5-.6-1.1-1.5-.1 0-.1 0-.2 0 0 0-.5 7.8-.1 10.3.4 2.8.4 15.2.5 18.3.2 3.6-.5 6.2-4.5 6.2-4.1 0-5.3-3.2-5.1-6.2.3-4.2.6-18.3.6-18.3-.4 1.8-1.2 3.5-4.2 3.2-3.4-.4-4.1-1.7-4.2-3.8-1.7 2.9-4 2.7-5.4 2.3-2.4-.6-3.1-4.9-3.1-4.9-.9 3.2-2.4 2.6-4.5 2.3-1.5-.2-2.9-1.5-3.5-3.7-.5-2.2-2.2-3.8.3-21 .6-4.5 4.6-6.7 10.5-7.8 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l9 12.1c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.7 1.7-.4 4.8-3.4 4.5" fill="#d6a57c"/><g fill="#b58360"><path d="m14.7 36.8c3.8.6 3.5-5.3 2.7-2.8-.8 2.6-2.7 2.8-2.7 2.8"/><path d="m22 39.4c5.2.5 4.7-5.3 3.7-2.9-1 2.4-3.7 2.9-3.7 2.9"/><path d="m30.6 40.7c5.2.5 4.7-5.7 3.7-3.3-1 2.5-3.7 3.3-3.7 3.3"/><path d="m43.3 27.2c0 0 1.5 12.6.8 28.6-.1 2.3-.1 5.9-4.3 6.1 4.7-1.4 2.5-17.3 3.5-34.7"/><path d="m54 34.4c.2-.7.1-1.5-.1-2-2.1-4.5-2.8-8.3-3.1-11.4-.1-1-.5-1.8-1.2-2.4l-9-12.2c-1.4-1.9-3.7-2.9-6-2.8-.4 0-.7 0-1.1 0-4 .3-9.5 1.4-13.5 2.1-4.2.7-7.5 2.1-9.2 4.4 1.3-3.4 5-5.1 10.1-6 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l8.9 12.2c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.4 1 .2 2.6-.8 3.6"/><path d="m44.5 23c0 0 1.3 4.3 1.8 6.3.4 1.7 2 4.8 4.6 6-4.2-.6-5.6-4-6.1-5.7l-.2-.8c0 0-.7-.5-1.4-1.5.1-.1 1.5-2 1.3-4.3"/><path d="m34.2 36.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.3 1 .6 1.5.2.5.5 1 .7 1.6.3.6.4 1.2.2 1.8"/><path d="m26.3 34.8c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.4.5.5 1.2.2 1.8"/><path d="m17.8 32.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.3.5.4 1.2.2 1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f447-1f3fe.svg b/riot/emojione/svg/1f447-1f3fe.svg new file mode 100644 index 0000000..cdb5c4a --- /dev/null +++ b/riot/emojione/svg/1f447-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.4 35.3c-4.4-.4-5.9-4-6.4-5.7l-.2-.8c0 0-.5-.6-1.1-1.5-.1 0-.1 0-.2 0 0 0-.5 7.8-.1 10.3.4 2.8.4 15.2.5 18.3.2 3.6-.5 6.2-4.5 6.2-4.1 0-5.3-3.2-5.1-6.2.3-4.2.6-18.3.6-18.3-.4 1.8-1.2 3.5-4.2 3.2-3.4-.4-4.1-1.7-4.2-3.8-1.7 2.9-4 2.7-5.4 2.3-2.4-.6-3.1-4.9-3.1-4.9-.9 3.2-2.4 2.6-4.5 2.3-1.5-.2-2.9-1.5-3.5-3.7-.5-2.2-2.2-3.8.3-21 .6-4.5 4.6-6.7 10.5-7.8 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l9 12.1c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.7 1.7-.4 4.8-3.4 4.5" fill="#b47d56"/><g fill="#935e3e"><path d="m14.7 36.9c3.8.6 3.5-5.3 2.7-2.8-.8 2.5-2.7 2.8-2.7 2.8"/><path d="m22 39.4c5.2.5 4.7-5.3 3.7-2.9-1 2.4-3.7 2.9-3.7 2.9"/><path d="m30.6 40.7c5.2.5 4.7-5.7 3.7-3.3-1 2.5-3.7 3.3-3.7 3.3"/><path d="m43.3 27.2c0 0 1.5 12.6.8 28.6-.1 2.3-.1 5.9-4.3 6.1 4.7-1.4 2.5-17.3 3.5-34.7"/><path d="m54 34.4c.2-.7.1-1.5-.1-2-2.1-4.5-2.8-8.3-3.1-11.4-.1-1-.5-1.8-1.2-2.4l-9-12.2c-1.4-1.9-3.7-2.9-6-2.8-.4 0-.7 0-1.1 0-4 .3-9.5 1.4-13.5 2.1-4.2.7-7.5 2.1-9.2 4.4 1.3-3.4 5-5.1 10.1-6 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l8.9 12.2c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.4 1 .2 2.6-.8 3.6"/><path d="m44.5 23c0 0 1.3 4.3 1.8 6.3.4 1.7 2 4.8 4.6 6-4.2-.6-5.6-4-6.1-5.7l-.2-.8c0 0-.7-.5-1.4-1.5.1-.1 1.5-2 1.3-4.3"/><path d="m34.2 36.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.3 1 .6 1.5.2.5.5 1 .7 1.6.3.6.4 1.2.2 1.8"/><path d="m26.3 34.8c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.4.5.5 1.2.2 1.8"/><path d="m17.8 32.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.3.5.4 1.2.2 1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f447-1f3ff.svg b/riot/emojione/svg/1f447-1f3ff.svg new file mode 100644 index 0000000..62fa984 --- /dev/null +++ b/riot/emojione/svg/1f447-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.4 35.3c-4.4-.4-5.9-4-6.4-5.7l-.2-.8c0 0-.5-.6-1.1-1.5-.1 0-.1 0-.2 0 0 0-.5 7.8-.1 10.3.4 2.8.4 15.2.5 18.3.2 3.6-.5 6.2-4.5 6.2-4.1 0-5.3-3.2-5.1-6.2.3-4.2.6-18.3.6-18.3-.4 1.8-1.2 3.5-4.2 3.2-3.4-.4-4.1-1.7-4.2-3.8-1.7 2.9-4 2.7-5.4 2.3-2.4-.6-3.1-4.9-3.1-4.9-.9 3.2-2.4 2.6-4.5 2.3-1.5-.2-2.9-1.5-3.5-3.7-.5-2.2-2.2-3.8.3-21 .6-4.5 4.6-6.7 10.5-7.8 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l9 12.1c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.7 1.7-.4 4.8-3.4 4.5" fill="#8a6859"/><g fill="#705041"><path d="m14.7 36.9c3.8.6 3.5-5.3 2.7-2.8-.8 2.5-2.7 2.8-2.7 2.8"/><path d="m22 39.4c5.2.5 4.7-5.3 3.7-2.9-1 2.4-3.7 2.9-3.7 2.9"/><path d="m30.6 40.7c5.2.5 4.7-5.7 3.7-3.3-1 2.5-3.7 3.3-3.7 3.3"/><path d="m43.3 27.2c0 0 1.5 12.6.8 28.6-.1 2.3-.1 5.9-4.3 6.1 4.7-1.4 2.5-17.3 3.5-34.7"/><path d="m54 34.4c.2-.7.1-1.5-.1-2-2.1-4.5-2.8-8.3-3.1-11.4-.1-1-.5-1.8-1.2-2.4l-9-12.2c-1.4-1.9-3.7-2.9-6-2.8-.4 0-.7 0-1.1 0-4 .3-9.5 1.4-13.5 2.1-4.2.7-7.5 2.1-9.2 4.4 1.3-3.4 5-5.1 10.1-6 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.6.8 6 2.8l8.9 12.2c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.4 1 .2 2.6-.8 3.6"/><path d="m44.5 23c0 0 1.3 4.3 1.8 6.3.4 1.7 2 4.8 4.6 6-4.2-.6-5.6-4-6.1-5.7l-.2-.8c0 0-.7-.5-1.4-1.5.1-.1 1.5-2 1.3-4.3"/><path d="m34.2 36.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.3 1 .6 1.5.2.5.5 1 .7 1.6.3.6.4 1.2.2 1.8"/><path d="m26.3 34.8c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.4.5.5 1.2.2 1.8"/><path d="m17.8 32.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.2 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.3.5.4 1.2.2 1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f447.svg b/riot/emojione/svg/1f447.svg new file mode 100644 index 0000000..25b2490 --- /dev/null +++ b/riot/emojione/svg/1f447.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.4 35.3c-4.4-.4-5.9-4-6.4-5.7l-.2-.8c0 0-.5-.6-1.1-1.5-.1 0-.1 0-.2 0 0 0-.5 7.8-.1 10.3.4 2.8.4 15.2.5 18.3.2 3.6-.5 6.2-4.5 6.2-4.1 0-5.3-3.2-5.1-6.2.3-4.2.6-18.3.6-18.3-.4 1.8-1.2 3.5-4.2 3.2-3.4-.4-4.1-1.7-4.2-3.8-1.7 2.9-4 2.7-5.4 2.3-2.4-.6-3.1-4.9-3.1-4.9-.9 3.2-2.4 2.6-4.5 2.3-1.5-.2-2.9-1.5-3.5-3.7-.5-2.2-2.2-3.8.3-21 .6-4.5 4.6-6.7 10.5-7.8 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.5.8 6 2.8l9 12.1c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.7 1.7-.4 4.8-3.4 4.5" fill="#ffdd67"/><g fill="#eba352"><path d="m14.7 36.8c3.8.6 3.5-5.3 2.7-2.8-.8 2.6-2.7 2.8-2.7 2.8"/><path d="m22 39.4c5.2.5 4.7-5.3 3.7-2.9-1 2.4-3.7 2.9-3.7 2.9"/><path d="m30.6 40.7c5.2.5 4.7-5.7 3.7-3.3-1 2.5-3.7 3.3-3.7 3.3"/><path d="m43.3 27.2c0 0 1.5 12.6.7 28.6-.1 2.3-.1 5.9-4.3 6.1 4.8-1.4 2.6-17.3 3.6-34.7"/><path d="m54 34.4c.2-.7.1-1.5-.1-2-2.1-4.5-2.8-8.3-3.1-11.4-.1-1-.5-1.8-1.2-2.4l-9-12.2c-1.4-1.9-3.7-2.9-6-2.8-.4 0-.7 0-1.1 0-4 .3-9.5 1.4-13.5 2.1-4.2.7-7.5 2.1-9.2 4.4 1.3-3.4 5-5.1 10.1-6 4-.7 9.5-1.8 13.6-2.1.4 0 .7 0 1.1 0 2.3-.1 4.5.8 6 2.8l8.9 12.2c0 0 0 0 0 0 .6.6 1 1.4 1.2 2.4.3 3.1 1.1 6.9 3.1 11.4.4 1 .2 2.6-.8 3.6"/><path d="m44.5 23c0 0 1.3 4.3 1.8 6.3.4 1.7 2 4.8 4.6 6-4.2-.6-5.6-4-6.1-5.7l-.2-.8c0 0-.7-.5-1.4-1.5.1-.1 1.5-2 1.3-4.3"/><path d="m34.2 36.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.3 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.2.6.3 1.2.1 1.8"/><path d="m26.3 34.8c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.3 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.2.5.3 1.2.1 1.8"/><path d="m17.8 32.4c-.2-.6-.5-1-.8-1.5-.3-.5-.6-.9-.9-1.5-.3-.5-.5-1.2-.5-1.8 0-.6.2-1.3.5-1.8 0 .6.1 1.2.3 1.7.1.5.4 1 .6 1.5.2.5.5 1 .7 1.6.2.5.3 1.2.1 1.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f448-1f3fb.svg b/riot/emojione/svg/1f448-1f3fb.svg new file mode 100644 index 0000000..16ef640 --- /dev/null +++ b/riot/emojione/svg/1f448-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.7 12.6c.4 4.4 4 5.9 5.7 6.4l.8.2c0 0 .6.5 1.5 1.1 0 .1 0 .1 0 .2 0 0-7.8.5-10.3.1-2.8-.4-15.2-.4-18.3-.5-3.5 0-6.1.6-6.1 4.7 0 4.1 3.2 5.3 6.2 5.1 4.2-.3 18.3-.6 18.3-.6-1.8.4-3.5 1.2-3.2 4.2.4 3.4 1.7 4.1 3.8 4.2-2.9 1.7-2.7 4-2.3 5.4.6 2.4 4.9 3.1 4.9 3.1-3.2.9-2.6 2.4-2.3 4.5.2 1.3 1.5 2.8 3.7 3.3 2.2.5 3.8 2.2 21.1-.3 4.5-.6 6.7-4.6 7.8-10.5.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.3-9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1.7-.7-4.8.4-4.5 3.4" fill="#ffe1bd"/><g fill="#e6b796"><path d="m27.2 49.3c-.6-3.8 5.3-3.5 2.8-2.7-2.6.8-2.8 2.7-2.8 2.7"/><path d="m24.6 42c-.5-5.2 5.3-4.7 2.9-3.7-2.4 1-2.9 3.7-2.9 3.7"/><path d="m23.3 33.4c-.5-5.2 5.7-4.7 3.3-3.7-2.5 1-3.3 3.7-3.3 3.7"/><path d="m36.8 20.7c0 0-12.6-1.5-28.6-.7-2.4 0-6 .1-6.2 4.2 1.5-4.7 17.4-2.5 34.8-3.5"/><path d="m29.6 10c.7-.2 1.5-.1 2 .1 4.5 2.1 8.3 2.8 11.4 3.1 1 .1 1.8.5 2.4 1.2l12.2 8.9c1.9 1.4 2.9 3.7 2.8 6 0 .4 0 .7 0 1.1-.3 4.1-1.4 9.6-2.1 13.6-.7 4.2-2.1 7.5-4.4 9.2 3.4-1.3 5.1-5 6-10.1.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.2-8.9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1-.4-2.6-.2-3.6.8"/><path d="m41 19.5c0 0-4.3-1.3-6.3-1.8-1.7-.4-4.8-2-6-4.6.6 4.2 4 5.6 5.7 6.1l.8.2c0 0 .5.7 1.5 1.4.1-.1 2-1.5 4.3-1.3"/><path d="m27.6 29.8c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.6.4-1.2.6-1.9.6-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.3-.8-.6-1.4-.8"/><path d="m29.2 37.7c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.2-.9-.5-1.5-.7"/><path d="m31.6 46.2c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.5-.3-.9-.5-1.5-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f448-1f3fc.svg b/riot/emojione/svg/1f448-1f3fc.svg new file mode 100644 index 0000000..e37282a --- /dev/null +++ b/riot/emojione/svg/1f448-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.7 12.6c.4 4.4 4 5.9 5.7 6.4l.8.2c0 0 .6.5 1.5 1.1 0 .1 0 .1 0 .2 0 0-7.8.5-10.3.1-2.8-.4-15.2-.4-18.3-.5-3.5 0-6.1.6-6.1 4.7 0 4.1 3.2 5.3 6.2 5.1 4.2-.3 18.3-.6 18.3-.6-1.8.4-3.5 1.2-3.2 4.2.4 3.4 1.7 4.1 3.8 4.2-2.9 1.7-2.7 4-2.3 5.4.6 2.4 4.9 3.1 4.9 3.1-3.2.9-2.6 2.4-2.3 4.5.2 1.3 1.5 2.8 3.7 3.3 2.2.5 3.8 2.2 21.1-.3 4.5-.6 6.7-4.6 7.8-10.5.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.3-9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1.7-.7-4.8.4-4.5 3.4" fill="#fed0ac"/><g fill="#e0a372"><path d="m27.2 49.3c-.6-3.8 5.3-3.5 2.8-2.7-2.6.8-2.8 2.7-2.8 2.7"/><path d="m24.6 42c-.5-5.2 5.3-4.7 2.9-3.7-2.4 1-2.9 3.7-2.9 3.7"/><path d="m23.3 33.4c-.5-5.2 5.7-4.7 3.3-3.7-2.5 1-3.3 3.7-3.3 3.7"/><path d="m36.8 20.7c0 0-12.6-1.5-28.6-.7-2.4 0-6 .1-6.2 4.2 1.5-4.7 17.4-2.5 34.8-3.5"/><path d="m29.6 10c.7-.2 1.5-.1 2 .1 4.5 2.1 8.3 2.8 11.4 3.1 1 .1 1.8.5 2.4 1.2l12.2 8.9c1.9 1.4 2.9 3.7 2.8 6 0 .4 0 .7 0 1.1-.3 4.1-1.4 9.6-2.1 13.6-.7 4.2-2.1 7.5-4.4 9.2 3.4-1.3 5.1-5 6-10.1.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.2-8.9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1-.4-2.6-.2-3.6.8"/><path d="m41 19.5c0 0-4.3-1.3-6.3-1.8-1.7-.4-4.8-2-6-4.6.6 4.2 4 5.6 5.7 6.1l.8.2c0 0 .5.7 1.5 1.4.1-.1 2-1.5 4.3-1.3"/><path d="m27.6 29.8c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.6.3-1.2.5-1.9.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.3-.8-.6-1.4-.8"/><path d="m29.2 37.7c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.4-.9-.6-1.5-.8"/><path d="m31.6 46.2c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.5-.3-.9-.5-1.5-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f448-1f3fd.svg b/riot/emojione/svg/1f448-1f3fd.svg new file mode 100644 index 0000000..09d730d --- /dev/null +++ b/riot/emojione/svg/1f448-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.7 12.6c.4 4.4 4 5.9 5.7 6.4l.8.2c0 0 .6.5 1.5 1.1 0 .1 0 .1 0 .2 0 0-7.8.5-10.3.1-2.8-.4-15.2-.4-18.3-.5-3.5 0-6.1.6-6.1 4.7 0 4.1 3.2 5.3 6.2 5.1 4.2-.3 18.3-.6 18.3-.6-1.8.4-3.5 1.2-3.2 4.2.4 3.4 1.7 4.1 3.8 4.2-2.9 1.7-2.7 4-2.3 5.4.6 2.4 4.9 3.1 4.9 3.1-3.2.9-2.6 2.4-2.3 4.5.2 1.3 1.5 2.8 3.7 3.3 2.2.5 3.8 2.2 21.1-.3 4.5-.6 6.7-4.6 7.8-10.5.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.3-9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1.7-.7-4.8.4-4.5 3.4" fill="#d6a57c"/><g fill="#b58360"><path d="m27.2 49.3c-.6-3.8 5.3-3.5 2.8-2.7-2.6.8-2.8 2.7-2.8 2.7"/><path d="m24.6 42c-.5-5.2 5.3-4.7 2.9-3.7-2.4 1-2.9 3.7-2.9 3.7"/><path d="m23.3 33.4c-.5-5.2 5.7-4.7 3.3-3.7-2.5 1-3.3 3.7-3.3 3.7"/><path d="m36.8 20.7c0 0-12.6-1.5-28.6-.7-2.4 0-6 .1-6.2 4.2 1.5-4.7 17.4-2.5 34.8-3.5"/><path d="m29.6 10c.7-.2 1.5-.1 2 .1 4.5 2.1 8.3 2.8 11.4 3.1 1 .1 1.8.5 2.4 1.2l12.2 8.9c1.9 1.4 2.9 3.7 2.8 6 0 .4 0 .7 0 1.1-.3 4.1-1.4 9.6-2.1 13.6-.7 4.2-2.1 7.5-4.4 9.2 3.4-1.3 5.1-5 6-10.1.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.2-8.9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1-.4-2.6-.2-3.6.8"/><path d="m41 19.5c0 0-4.3-1.3-6.3-1.8-1.7-.4-4.8-2-6-4.6.6 4.2 4 5.6 5.7 6.1l.8.2c0 0 .5.7 1.5 1.4.1-.1 2-1.5 4.3-1.3"/><path d="m27.6 29.8c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.6.3-1.2.5-1.9.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.3-.8-.6-1.4-.8"/><path d="m29.2 37.7c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.3-.9-.6-1.5-.8"/><path d="m31.6 46.2c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.5-.3-.9-.5-1.5-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f448-1f3fe.svg b/riot/emojione/svg/1f448-1f3fe.svg new file mode 100644 index 0000000..07f16f2 --- /dev/null +++ b/riot/emojione/svg/1f448-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.7 12.6c.4 4.4 4 5.9 5.7 6.4l.8.2c0 0 .6.5 1.5 1.1 0 .1 0 .1 0 .2 0 0-7.8.5-10.3.1-2.8-.4-15.2-.4-18.3-.5-3.5 0-6.1.6-6.1 4.7 0 4.1 3.2 5.3 6.2 5.1 4.2-.3 18.3-.6 18.3-.6-1.8.4-3.5 1.2-3.2 4.2.4 3.4 1.7 4.1 3.8 4.2-2.9 1.7-2.7 4-2.3 5.4.6 2.4 4.9 3.1 4.9 3.1-3.2.9-2.6 2.4-2.3 4.5.2 1.3 1.5 2.8 3.7 3.3 2.2.5 3.8 2.2 21.1-.3 4.5-.6 6.7-4.6 7.8-10.5.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.3-9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1.7-.7-4.8.4-4.5 3.4" fill="#b47d56"/><g fill="#935e3e"><path d="m27.2 49.3c-.6-3.8 5.3-3.5 2.8-2.7-2.6.8-2.8 2.7-2.8 2.7"/><path d="m24.6 42c-.5-5.2 5.3-4.7 2.9-3.7-2.4 1-2.9 3.7-2.9 3.7"/><path d="m23.3 33.4c-.5-5.2 5.7-4.7 3.3-3.7-2.5 1-3.3 3.7-3.3 3.7"/><path d="m36.8 20.7c0 0-12.6-1.5-28.6-.7-2.4 0-6 .1-6.2 4.2 1.5-4.7 17.4-2.5 34.8-3.5"/><path d="m29.6 10c.7-.2 1.5-.1 2 .1 4.5 2.1 8.3 2.8 11.4 3.1 1 .1 1.8.5 2.4 1.2l12.2 8.9c1.9 1.4 2.9 3.7 2.8 6 0 .4 0 .7 0 1.1-.3 4.1-1.4 9.6-2.1 13.6-.7 4.2-2.1 7.5-4.4 9.2 3.4-1.3 5.1-5 6-10.1.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.2-8.9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1-.4-2.6-.2-3.6.8"/><path d="m41 19.5c0 0-4.3-1.3-6.3-1.8-1.7-.4-4.8-2-6-4.6.6 4.2 4 5.6 5.7 6.1l.8.2c0 0 .5.7 1.5 1.4.1-.1 2-1.5 4.3-1.3"/><path d="m27.6 29.8c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.6.4-1.2.6-1.9.6-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.3-.8-.6-1.4-.8"/><path d="m29.2 37.7c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.2-.9-.5-1.5-.7"/><path d="m31.6 46.2c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.5-.2-.9-.4-1.5-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f448-1f3ff.svg b/riot/emojione/svg/1f448-1f3ff.svg new file mode 100644 index 0000000..a382bfd --- /dev/null +++ b/riot/emojione/svg/1f448-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.7 12.6c.4 4.4 4 5.9 5.7 6.4l.8.2c0 0 .6.5 1.5 1.1 0 .1 0 .1 0 .2 0 0-7.8.5-10.3.1-2.8-.4-15.2-.4-18.3-.5-3.5 0-6.1.6-6.1 4.7 0 4.1 3.2 5.3 6.2 5.1 4.2-.3 18.3-.6 18.3-.6-1.8.4-3.5 1.2-3.2 4.2.4 3.4 1.7 4.1 3.8 4.2-2.9 1.7-2.7 4-2.3 5.4.6 2.4 4.9 3.1 4.9 3.1-3.2.9-2.6 2.4-2.3 4.5.2 1.3 1.5 2.8 3.7 3.3 2.2.5 3.8 2.2 21.1-.3 4.5-.6 6.7-4.6 7.8-10.5.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.3-9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1.7-.7-4.8.4-4.5 3.4" fill="#8a6859"/><g fill="#705041"><path d="m27.2 49.3c-.6-3.8 5.3-3.5 2.8-2.7-2.6.8-2.8 2.7-2.8 2.7"/><path d="m24.6 42c-.5-5.2 5.3-4.7 2.9-3.7-2.4 1-2.9 3.7-2.9 3.7"/><path d="m23.3 33.4c-.5-5.2 5.7-4.7 3.3-3.7-2.5 1-3.3 3.7-3.3 3.7"/><path d="m36.8 20.7c0 0-12.6-1.5-28.6-.7-2.4 0-6 .1-6.2 4.2 1.5-4.7 17.4-2.5 34.8-3.5"/><path d="m29.6 10c.7-.2 1.5-.1 2 .1 4.5 2.1 8.3 2.8 11.4 3.1 1 .1 1.8.5 2.4 1.2l12.2 8.9c1.9 1.4 2.9 3.7 2.8 6 0 .4 0 .7 0 1.1-.3 4.1-1.4 9.6-2.1 13.6-.7 4.2-2.1 7.5-4.4 9.2 3.4-1.3 5.1-5 6-10.1.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.2-8.9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1-.4-2.6-.2-3.6.8"/><path d="m41 19.5c0 0-4.3-1.3-6.3-1.8-1.7-.4-4.8-2-6-4.6.6 4.2 4 5.6 5.7 6.1l.8.2c0 0 .5.7 1.5 1.4.1-.1 2-1.5 4.3-1.3"/><path d="m27.6 29.8c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.6.4-1.2.6-1.9.6-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.3-.8-.6-1.4-.8"/><path d="m29.2 37.7c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.2-.9-.5-1.5-.7"/><path d="m31.6 46.2c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.3-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.5-.3-.9-.5-1.5-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f448.svg b/riot/emojione/svg/1f448.svg new file mode 100644 index 0000000..63e2567 --- /dev/null +++ b/riot/emojione/svg/1f448.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.7 12.6c.4 4.4 4 5.9 5.7 6.4l.8.2c0 0 .6.5 1.5 1.1 0 .1 0 .1 0 .2 0 0-7.8.5-10.3.1-2.8-.4-15.2-.4-18.3-.5-3.5 0-6.1.6-6.1 4.7 0 4.1 3.2 5.3 6.2 5.1 4.2-.3 18.3-.6 18.3-.6-1.8.4-3.5 1.2-3.2 4.2.4 3.4 1.7 4.1 3.8 4.2-2.9 1.7-2.7 4-2.3 5.4.6 2.4 4.9 3.1 4.9 3.1-3.2.9-2.6 2.4-2.3 4.5.2 1.3 1.5 2.8 3.7 3.3 2.2.5 3.8 2.2 21.1-.3 4.5-.6 6.7-4.6 7.8-10.5.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.3-9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1.7-.7-4.8.4-4.5 3.4" fill="#ffdd67"/><g fill="#eba352"><path d="m27.1 49.3c-.6-3.8 5.3-3.5 2.8-2.7-2.5.8-2.8 2.7-2.8 2.7"/><path d="m24.6 42c-.5-5.2 5.3-4.7 2.9-3.7-2.4 1-2.9 3.7-2.9 3.7"/><path d="m23.3 33.4c-.5-5.2 5.7-4.7 3.3-3.7-2.5 1-3.3 3.7-3.3 3.7"/><path d="m36.8 20.7c0 0-12.6-1.5-28.6-.7-2.4 0-6 .1-6.2 4.2 1.5-4.7 17.4-2.5 34.8-3.5"/><path d="m29.6 10c.7-.2 1.5-.1 2 .1 4.5 2.1 8.3 2.8 11.4 3.1 1 .1 1.8.5 2.4 1.2l12.2 8.9c1.9 1.4 2.9 3.7 2.8 6 0 .4 0 .7 0 1.1-.3 4.1-1.4 9.6-2.1 13.6-.7 4.2-2.1 7.5-4.4 9.2 3.4-1.3 5.1-5 6-10.1.7-4 1.8-9.5 2.1-13.6 0-.4 0-.7 0-1.1.1-2.3-.8-4.5-2.8-6l-12.2-8.9c0 0 0 0 0 0-.6-.6-1.4-1-2.4-1.2-3.1-.3-6.9-1.1-11.4-3.1-1-.4-2.6-.2-3.6.8"/><path d="m41 19.5c0 0-4.3-1.3-6.3-1.8-1.7-.4-4.8-2-6-4.6.6 4.2 4 5.6 5.7 6.1l.8.2c0 0 .5.7 1.5 1.4.1-.1 2-1.5 4.3-1.3"/><path d="m27.6 29.8c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.6.4-1.2.6-1.9.6-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.4-.3-.8-.6-1.4-.8"/><path d="m29.2 37.7c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.5-.2-.9-.5-1.5-.7"/><path d="m31.6 46.2c.6-.2 1.3-.1 1.8.1.6.2 1.1.5 1.6.7.5.3 1 .5 1.5.6.5.1 1.1.2 1.7.2-.5.4-1.1.5-1.8.5-.6 0-1.3-.2-1.8-.5-.5-.3-1-.6-1.5-.9-.5-.2-.9-.4-1.5-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f449-1f3fb.svg b/riot/emojione/svg/1f449-1f3fb.svg new file mode 100644 index 0000000..150e78b --- /dev/null +++ b/riot/emojione/svg/1f449-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m35.3 12.6c-.4 4.4-4 5.9-5.7 6.4l-.8.2c0 0-.6.5-1.5 1.1 0 .1 0 .1 0 .2 0 0 7.8.5 10.3.1 2.8-.4 15.2-.4 18.3-.5 3.6-.2 6.2.5 6.2 4.5 0 4.1-3.2 5.3-6.2 5.1-4.2-.3-18.3-.6-18.3-.6 1.8.4 3.5 1.2 3.2 4.2-.4 3.4-1.7 4.1-3.8 4.2 2.9 1.7 2.7 4 2.3 5.4-.6 2.4-4.9 3.1-4.9 3.1 3.2.9 2.6 2.4 2.3 4.5-.2 1.5-1.5 2.9-3.7 3.5-2.2.5-3.8 2.2-21-.3-4.6-.7-6.8-4.6-7.9-10.6-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1.7-.7 4.8.4 4.5 3.4" fill="#ffe1bd"/><g fill="#e6b796"><path d="m36.9 49.3c.6-3.8-5.3-3.5-2.8-2.7 2.5.8 2.8 2.7 2.8 2.7"/><path d="m39.4 42c.5-5.2-5.3-4.7-2.9-3.7 2.4 1 2.9 3.7 2.9 3.7"/><path d="m40.7 33.4c.5-5.2-5.7-4.7-3.3-3.7 2.5 1 3.3 3.7 3.3 3.7"/><path d="m27.2 20.7c0 0 12.6-1.5 28.6-.7 2.3.1 5.9.1 6.1 4.3-1.4-4.8-17.3-2.6-34.7-3.6"/><path d="m34.4 10c-.7-.2-1.5-.1-2 .1-4.5 2.1-8.3 2.8-11.4 3.1-1 .1-1.8.5-2.4 1.2l-12.2 9c-1.9 1.4-2.9 3.7-2.8 6 0 .4 0 .7 0 1.1.3 4 1.4 9.5 2.1 13.5.7 4.2 2.1 7.5 4.4 9.2-3.4-1.3-5.1-5-6-10.1-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1-.4 2.6-.2 3.6.8"/><path d="m23 19.5c0 0 4.3-1.3 6.3-1.8 1.7-.4 4.8-2 6-4.6-.6 4.2-4 5.6-5.7 6.1l-.8.2c0 0-.5.7-1.5 1.4-.1-.1-2-1.5-4.3-1.3"/><path d="m36.4 29.8c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.6-.3 1.2-.4 1.8-.2"/><path d="m34.8 37.7c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.3 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/><path d="m32.4 46.2c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.3 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f449-1f3fc.svg b/riot/emojione/svg/1f449-1f3fc.svg new file mode 100644 index 0000000..d30c03f --- /dev/null +++ b/riot/emojione/svg/1f449-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m35.3 12.6c-.4 4.4-4 5.9-5.7 6.4l-.8.2c0 0-.6.5-1.5 1.1 0 .1 0 .1 0 .2 0 0 7.8.5 10.3.1 2.8-.4 15.2-.4 18.3-.5 3.6-.2 6.2.5 6.2 4.5 0 4.1-3.2 5.3-6.2 5.1-4.2-.3-18.3-.6-18.3-.6 1.8.4 3.5 1.2 3.2 4.2-.4 3.4-1.7 4.1-3.8 4.2 2.9 1.7 2.7 4 2.3 5.4-.6 2.4-4.9 3.1-4.9 3.1 3.2.9 2.6 2.4 2.3 4.5-.2 1.5-1.5 2.9-3.7 3.5-2.2.5-3.8 2.2-21-.3-4.6-.7-6.8-4.6-7.9-10.6-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1.7-.7 4.8.4 4.5 3.4" fill="#fed0ac"/><g fill="#e0a372"><path d="m36.9 49.3c.6-3.8-5.3-3.5-2.8-2.7 2.5.8 2.8 2.7 2.8 2.7"/><path d="m39.4 42c.5-5.2-5.3-4.7-2.9-3.7 2.4 1 2.9 3.7 2.9 3.7"/><path d="m40.7 33.4c.5-5.2-5.7-4.7-3.3-3.7 2.5 1 3.3 3.7 3.3 3.7"/><path d="m27.2 20.7c0 0 12.6-1.5 28.6-.7 2.3.1 5.9.1 6.1 4.3-1.4-4.8-17.3-2.6-34.7-3.6"/><path d="m34.4 10c-.7-.2-1.5-.1-2 .1-4.5 2.1-8.3 2.8-11.4 3.1-1 .1-1.8.5-2.4 1.2l-12.2 9c-1.9 1.4-2.9 3.7-2.8 6 0 .4 0 .7 0 1.1.3 4 1.4 9.5 2.1 13.5.7 4.2 2.1 7.5 4.4 9.2-3.4-1.3-5.1-5-6-10.1-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1-.4 2.6-.2 3.6.8"/><path d="m23 19.5c0 0 4.3-1.3 6.3-1.8 1.7-.4 4.8-2 6-4.6-.6 4.2-4 5.6-5.7 6.1l-.8.2c0 0-.5.7-1.5 1.4-.1-.1-2-1.5-4.3-1.3"/><path d="m36.4 29.8c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.6-.3 1.2-.4 1.8-.2"/><path d="m34.8 37.7c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/><path d="m32.4 46.2c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f449-1f3fd.svg b/riot/emojione/svg/1f449-1f3fd.svg new file mode 100644 index 0000000..421e7e5 --- /dev/null +++ b/riot/emojione/svg/1f449-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m35.3 12.6c-.4 4.4-4 5.9-5.7 6.4l-.8.2c0 0-.6.5-1.5 1.1 0 .1 0 .1 0 .2 0 0 7.8.5 10.3.1 2.8-.4 15.2-.4 18.3-.5 3.6-.2 6.2.5 6.2 4.5 0 4.1-3.2 5.3-6.2 5.1-4.2-.3-18.3-.6-18.3-.6 1.8.4 3.5 1.2 3.2 4.2-.4 3.4-1.7 4.1-3.8 4.2 2.9 1.7 2.7 4 2.3 5.4-.6 2.4-4.9 3.1-4.9 3.1 3.2.9 2.6 2.4 2.3 4.5-.2 1.5-1.5 2.9-3.7 3.5-2.2.5-3.8 2.2-21-.3-4.6-.7-6.8-4.6-7.9-10.6-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1.7-.7 4.8.4 4.5 3.4" fill="#d6a57c"/><g fill="#b58360"><path d="m36.9 49.3c.6-3.8-5.3-3.5-2.8-2.7 2.5.8 2.8 2.7 2.8 2.7"/><path d="m39.4 42c.5-5.2-5.3-4.7-2.9-3.7 2.4 1 2.9 3.7 2.9 3.7"/><path d="m40.7 33.4c.5-5.2-5.7-4.7-3.3-3.7 2.5 1 3.3 3.7 3.3 3.7"/><path d="m27.2 20.7c0 0 12.6-1.5 28.6-.7 2.3.1 5.9.1 6.1 4.3-1.4-4.8-17.3-2.6-34.7-3.6"/><path d="m34.4 10c-.7-.2-1.5-.1-2 .1-4.5 2.1-8.3 2.8-11.4 3.1-1 .1-1.8.5-2.4 1.2l-12.2 9c-1.9 1.4-2.9 3.7-2.8 6 0 .4 0 .7 0 1.1.3 4 1.4 9.5 2.1 13.5.7 4.2 2.1 7.5 4.4 9.2-3.4-1.3-5.1-5-6-10.1-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1-.4 2.6-.2 3.6.8"/><path d="m23 19.5c0 0 4.3-1.3 6.3-1.8 1.7-.4 4.8-2 6-4.6-.6 4.2-4 5.6-5.7 6.1l-.8.2c0 0-.5.7-1.5 1.4-.1-.1-2-1.5-4.3-1.3"/><path d="m36.4 29.8c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6-.1 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.6-.3 1.2-.4 1.8-.2"/><path d="m34.8 37.7c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6-.1 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/><path d="m32.4 46.2c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6-.1 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f449-1f3fe.svg b/riot/emojione/svg/1f449-1f3fe.svg new file mode 100644 index 0000000..43db2b7 --- /dev/null +++ b/riot/emojione/svg/1f449-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m35.3 12.6c-.4 4.4-4 5.9-5.7 6.4l-.8.2c0 0-.6.5-1.5 1.1 0 .1 0 .1 0 .2 0 0 7.8.5 10.3.1 2.8-.4 15.2-.4 18.3-.5 3.6-.2 6.2.5 6.2 4.5 0 4.1-3.2 5.3-6.2 5.1-4.2-.3-18.3-.6-18.3-.6 1.8.4 3.5 1.2 3.2 4.2-.4 3.4-1.7 4.1-3.8 4.2 2.9 1.7 2.7 4 2.3 5.4-.6 2.4-4.9 3.1-4.9 3.1 3.2.9 2.6 2.4 2.3 4.5-.2 1.5-1.5 2.9-3.7 3.5-2.2.5-3.8 2.2-21-.3-4.6-.7-6.8-4.6-7.9-10.6-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1.7-.7 4.8.4 4.5 3.4" fill="#b47d56"/><g fill="#935e3e"><path d="m36.9 49.3c.6-3.8-5.3-3.5-2.8-2.7 2.5.8 2.8 2.7 2.8 2.7"/><path d="m39.4 42c.5-5.2-5.3-4.7-2.9-3.7 2.4 1 2.9 3.7 2.9 3.7"/><path d="m40.7 33.4c.5-5.2-5.7-4.7-3.3-3.7 2.5 1 3.3 3.7 3.3 3.7"/><path d="m27.2 20.7c0 0 12.6-1.5 28.6-.7 2.3.1 5.9.1 6.1 4.3-1.4-4.8-17.3-2.6-34.7-3.6"/><path d="m34.4 10c-.7-.2-1.5-.1-2 .1-4.5 2.1-8.3 2.8-11.4 3.1-1 .1-1.8.5-2.4 1.2l-12.2 9c-1.9 1.4-2.9 3.7-2.8 6 0 .4 0 .7 0 1.1.3 4 1.4 9.5 2.1 13.5.7 4.2 2.1 7.5 4.4 9.2-3.4-1.3-5.1-5-6-10.1-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1-.4 2.6-.2 3.6.8"/><path d="m23 19.5c0 0 4.3-1.3 6.3-1.8 1.7-.4 4.8-2 6-4.6-.6 4.2-4 5.6-5.7 6.1l-.8.2c0 0-.5.7-1.5 1.4-.1-.1-2-1.5-4.3-1.3"/><path d="m36.4 29.8c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.6-.3 1.2-.4 1.8-.2"/><path d="m34.8 37.7c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.3 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/><path d="m32.4 46.2c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f449-1f3ff.svg b/riot/emojione/svg/1f449-1f3ff.svg new file mode 100644 index 0000000..c3fde3f --- /dev/null +++ b/riot/emojione/svg/1f449-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m35.3 12.6c-.4 4.4-4 5.9-5.7 6.4l-.8.2c0 0-.6.5-1.5 1.1 0 .1 0 .1 0 .2 0 0 7.8.5 10.3.1 2.8-.4 15.2-.4 18.3-.5 3.6-.2 6.2.5 6.2 4.5 0 4.1-3.2 5.3-6.2 5.1-4.2-.3-18.3-.6-18.3-.6 1.8.4 3.5 1.2 3.2 4.2-.4 3.4-1.7 4.1-3.8 4.2 2.9 1.7 2.7 4 2.3 5.4-.6 2.4-4.9 3.1-4.9 3.1 3.2.9 2.6 2.4 2.3 4.5-.2 1.5-1.5 2.9-3.7 3.5-2.2.5-3.8 2.2-21-.3-4.6-.7-6.8-4.6-7.9-10.6-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1.7-.7 4.8.4 4.5 3.4" fill="#8a6859"/><g fill="#705041"><path d="m36.9 49.3c.6-3.8-5.3-3.5-2.8-2.7 2.5.8 2.8 2.7 2.8 2.7"/><path d="m39.4 42c.5-5.2-5.3-4.7-2.9-3.7 2.4 1 2.9 3.7 2.9 3.7"/><path d="m40.7 33.4c.5-5.2-5.7-4.7-3.3-3.7 2.5 1 3.3 3.7 3.3 3.7"/><path d="m27.2 20.7c0 0 12.6-1.5 28.6-.7 2.3.1 5.9.1 6.1 4.3-1.4-4.8-17.3-2.6-34.7-3.6"/><path d="m34.4 10c-.7-.2-1.5-.1-2 .1-4.5 2.1-8.3 2.8-11.4 3.1-1 .1-1.8.5-2.4 1.2l-12.2 9c-1.9 1.4-2.9 3.7-2.8 6 0 .4 0 .7 0 1.1.3 4 1.4 9.5 2.1 13.5.7 4.2 2.1 7.5 4.4 9.2-3.4-1.3-5.1-5-6-10.1-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1-.4 2.6-.2 3.6.8"/><path d="m23 19.5c0 0 4.3-1.3 6.3-1.8 1.7-.4 4.8-2 6-4.6-.6 4.2-4 5.6-5.7 6.1l-.8.2c0 0-.5.7-1.5 1.4-.1-.1-2-1.5-4.3-1.3"/><path d="m36.4 29.8c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.6-.3 1.2-.4 1.8-.2"/><path d="m34.8 37.7c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.3 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/><path d="m32.4 46.2c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.3 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f449.svg b/riot/emojione/svg/1f449.svg new file mode 100644 index 0000000..815e08e --- /dev/null +++ b/riot/emojione/svg/1f449.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m35.3 12.6c-.4 4.4-4 5.9-5.7 6.4l-.8.2c0 0-.6.5-1.5 1.1 0 .1 0 .1 0 .2 0 0 7.8.5 10.3.1 2.8-.4 15.2-.4 18.3-.5 3.6-.2 6.2.5 6.2 4.5 0 4.1-3.2 5.3-6.2 5.1-4.2-.3-18.3-.6-18.3-.6 1.8.4 3.5 1.2 3.2 4.2-.4 3.4-1.7 4.1-3.8 4.2 2.9 1.7 2.7 4 2.3 5.4-.6 2.4-4.9 3.1-4.9 3.1 3.2.9 2.6 2.4 2.3 4.5-.2 1.5-1.5 2.9-3.7 3.5-2.2.5-3.8 2.2-21-.3-4.6-.7-6.8-4.6-7.9-10.6-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1.7-.7 4.8.4 4.5 3.4" fill="#ffdd67"/><g fill="#eba352"><path d="m36.9 49.3c.6-3.8-5.3-3.5-2.8-2.7 2.5.8 2.8 2.7 2.8 2.7"/><path d="m39.4 42c.5-5.2-5.3-4.7-2.9-3.7 2.4 1 2.9 3.7 2.9 3.7"/><path d="m40.7 33.4c.5-5.2-5.7-4.7-3.3-3.7 2.5 1 3.3 3.7 3.3 3.7"/><path d="m27.2 20.7c0 0 12.6-1.5 28.6-.7 2.3.1 5.9.1 6.1 4.3-1.4-4.8-17.3-2.6-34.7-3.6"/><path d="m34.4 10c-.7-.2-1.5-.1-2 .1-4.5 2.1-8.3 2.8-11.4 3.1-1 .1-1.8.5-2.4 1.2l-12.2 9c-1.9 1.4-2.9 3.7-2.8 6 0 .4 0 .7 0 1.1.3 4 1.4 9.5 2.1 13.5.7 4.2 2.1 7.5 4.4 9.2-3.4-1.3-5.1-5-6-10.1-.7-4-1.8-9.5-2.1-13.6 0-.4 0-.7 0-1.1-.1-2.3.8-4.5 2.8-6l12.2-8.9c0 0 0 0 0 0 .6-.6 1.4-1 2.4-1.2 3.1-.3 6.9-1.1 11.4-3.1 1-.4 2.6-.2 3.6.8"/><path d="m23 19.5c0 0 4.3-1.3 6.3-1.8 1.7-.4 4.8-2 6-4.6-.6 4.2-4 5.6-5.7 6.1l-.8.2c0 0-.5.7-1.5 1.4-.1-.1-2-1.5-4.3-1.3"/><path d="m36.4 29.8c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.6-.3 1.2-.4 1.8-.2"/><path d="m34.8 37.7c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.3 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/><path d="m32.4 46.2c-.6.2-1 .5-1.5.8-.5.3-.9.6-1.5.9-.5.3-1.2.5-1.8.5-.6 0-1.3-.2-1.8-.5.6 0 1.2-.1 1.7-.2.5-.1 1-.4 1.5-.6.5-.2 1-.5 1.6-.7.5-.3 1.2-.4 1.8-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44a-1f3fb.svg b/riot/emojione/svg/1f44a-1f3fb.svg new file mode 100644 index 0000000..6b68ade --- /dev/null +++ b/riot/emojione/svg/1f44a-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.5 15.5c0-2.6-2.2-6.2-6.5-6.9-3.6-.6-7.1.6-8 3.5-.4-3.9-3.9-5.2-8.1-5.1-4.1.1-7.5 2-7.9 5.7-1-2.2-3.7-2.9-6.8-2.9h-.1c-3.1.2-5.7 1.2-6.7 3.5-.9-.5-2.2-.6-4.2.1-2.4.8-6.6 4.4-8.4 11.9-1.4 5.7.5 13.7.5 13.7-.2 3.6 2.6 6.6 6.1 6.8 2.7.1 5.1-1.3 6.3-3.5v1.2c.1 4 3.4 7.1 7.4 7h.1c3.2-.1 5.8-2.2 6.7-5 .7 3.9 4.1 6.8 8.1 6.7 4.4-.1 7.9-3.8 7.8-8.2.6 3.6 3.8 6.3 7.5 6.2h.1c4.1-.1 8.5-4.1 8.5-8.2.1 0-2.2-11.8-2.4-26.5" fill="#ffe1bd"/><path d="m61.8 43.5c-1.3 1.6-3.3 2.8-5.6 2.8h-.1c-.4 0-.8 0-1.2-.1-.2 0-.4-.1-.6-.1-2.6-.4-5.5-1.7-7.1-3.6.4-2.3.4-4.6.4-6.9 0-2.5-.2-4.9-.3-7.3-.1-2.4-.2-4.8-.1-7.3-.5 1.1-.9 2.3-1.1 3.6-.3 1.2-.4 2.5-.5 3.7-.2 2.5-.2 4.9-.2 7.4 0 2.4.1 4.8 0 7.2-.1 1.2-.1 3-.5 3.8-.8 1.7-3.2 2.1-5.2 2.1-3.5.1-7.2-2-8.7-5.1 0 0 0-.1 0-.1.1-1.1.3-2.1.4-3.2.2-2.1.4-4.3.4-6.5 0-2.2-.1-4.4-.4-6.5-.1-1.1-.3-2.2-.6-3.2-.3-1.1-.6-2.1-1-3.1-.1 1.1-.1 2.2-.1 3.3 0 1.1 0 2.1-.1 3.2 0 2.1-.1 4.3-.1 6.4 0 2.1 0 4.3.1 6.4 0 .9.1 3.5.2 4.7-1.3 1.3-3 2.1-5 2.1h-.1c-3.3.1-6.7-2.6-7.8-5.7 0-.1 0-.2 0-.3.1-1.9.3-3.7.4-5.6.1-1.9.1-3.8 0-5.7-.2-.9-.3-1.9-.5-2.9-.1-.5-.2-1-.4-1.4-.1-.2-.2-.5-.3-.7-.1-.2-.3-.4-.4-.6.1.2.1.5.1.7 0 .2 0 .5 0 .7 0 .5 0 .9-.1 1.4-.1.9-.2 1.9-.3 2.8-.2 1.9-.4 3.7-.5 5.6-.1 1.9-.1 3.8.1 5.7 0 .1 0 .1 0 .2-1.2.8-2.6 1.1-4.2 1.1-9.9 0-7.8-14.7-6.4-20.5.2-.9.5-1.8.8-2.6-.9 1.4-1.7 3.3-2.3 5.9-1.4 5.7-2 20.5 6.6 20.5 2.5 0 4.7-1.1 6-3 .1.4.3 7.7 7.7 7.7h.1c2.3-.1 4.3-1.2 5.6-2.9-.1.5-.2 1.2-.3 2.1-.5 5.4 3.8 8.1 6.5 7.2 7.2-2.6 13.2-2.9 17.9-2.7 3.2.1 5.3-2.1 5.7-5.8 1.6-1.4 2.8-3.1 3.1-4.9" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44a-1f3fc.svg b/riot/emojione/svg/1f44a-1f3fc.svg new file mode 100644 index 0000000..7bb10f2 --- /dev/null +++ b/riot/emojione/svg/1f44a-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.5 15.5c0-2.6-2.2-6.2-6.5-6.9-3.6-.6-7.1.6-8 3.5-.4-3.9-3.9-5.2-8.1-5.1-4.1.1-7.5 2-7.9 5.7-1-2.2-3.7-2.9-6.8-2.9h-.1c-3.1.2-5.7 1.2-6.7 3.5-.9-.5-2.2-.6-4.2.1-2.4.8-6.6 4.4-8.4 11.9-1.4 5.7.5 13.7.5 13.7-.2 3.6 2.6 6.6 6.1 6.8 2.7.1 5.1-1.3 6.3-3.5v1.2c.1 4 3.4 7.1 7.4 7h.1c3.2-.1 5.8-2.2 6.7-5 .7 3.9 4.1 6.8 8.1 6.7 4.4-.1 7.9-3.8 7.8-8.2.6 3.6 3.8 6.3 7.5 6.2h.1c4.1-.1 8.5-4.1 8.5-8.2.1 0-2.2-11.8-2.4-26.5" fill="#fed0ac"/><path d="m61.8 43.5c-1.3 1.6-3.3 2.8-5.6 2.8h-.1c-.4 0-.8 0-1.2-.1-.2 0-.4-.1-.6-.1-2.6-.4-5.5-1.7-7.1-3.6.4-2.3.4-4.6.4-6.9 0-2.5-.2-4.9-.3-7.3-.1-2.4-.2-4.8-.1-7.3-.5 1.1-.9 2.3-1.1 3.6-.3 1.2-.4 2.5-.5 3.7-.2 2.5-.2 4.9-.2 7.4 0 2.4.1 4.8 0 7.2-.1 1.2-.1 3-.5 3.8-.8 1.7-3.2 2.1-5.2 2.1-3.5.1-7.2-2-8.7-5.1 0 0 0-.1 0-.1.1-1.1.3-2.1.4-3.2.2-2.1.4-4.3.4-6.5 0-2.2-.1-4.4-.4-6.5-.1-1.1-.3-2.2-.6-3.2-.3-1.1-.6-2.1-1-3.1-.1 1.1-.1 2.2-.1 3.3 0 1.1 0 2.1-.1 3.2 0 2.1-.1 4.3-.1 6.4 0 2.1 0 4.3.1 6.4 0 .9.1 3.5.2 4.7-1.3 1.3-3 2.1-5 2.1h-.1c-3.3.1-6.7-2.6-7.8-5.7 0-.1 0-.2 0-.3.1-1.9.3-3.7.4-5.6.1-1.9.1-3.8 0-5.7-.2-.9-.3-1.9-.5-2.9-.1-.5-.2-1-.4-1.4-.1-.2-.2-.5-.3-.7-.1-.2-.3-.4-.4-.6.1.2.1.5.1.7 0 .2 0 .5 0 .7 0 .5 0 .9-.1 1.4-.1.9-.2 1.9-.3 2.8-.2 1.9-.4 3.7-.5 5.6-.1 1.9-.1 3.8.1 5.7 0 .1 0 .1 0 .2-1.2.8-2.6 1.1-4.2 1.1-9.9 0-7.8-14.7-6.4-20.5.2-.9.5-1.8.8-2.6-.9 1.4-1.7 3.3-2.3 5.9-1.4 5.7-2 20.5 6.6 20.5 2.5 0 4.7-1.1 6-3 .1.4.3 7.7 7.7 7.7h.1c2.3-.1 4.3-1.2 5.6-2.9-.1.5-.2 1.2-.3 2.1-.5 5.4 3.8 8.1 6.5 7.2 7.2-2.6 13.2-2.9 17.9-2.7 3.2.1 5.3-2.1 5.7-5.8 1.6-1.4 2.8-3.1 3.1-4.9" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44a-1f3fd.svg b/riot/emojione/svg/1f44a-1f3fd.svg new file mode 100644 index 0000000..1543e53 --- /dev/null +++ b/riot/emojione/svg/1f44a-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.5 15.5c0-2.6-2.2-6.2-6.5-6.9-3.6-.6-7.1.6-8 3.5-.4-3.9-3.9-5.2-8.1-5.1-4.1.1-7.5 2-7.9 5.7-1-2.2-3.7-2.9-6.8-2.9h-.1c-3.1.2-5.7 1.2-6.7 3.5-.9-.5-2.2-.6-4.2.1-2.4.8-6.6 4.4-8.4 11.9-1.4 5.7.5 13.7.5 13.7-.2 3.6 2.6 6.6 6.1 6.8 2.7.1 5.1-1.3 6.3-3.5v1.2c.1 4 3.4 7.1 7.4 7h.1c3.2-.1 5.8-2.2 6.7-5 .7 3.9 4.1 6.8 8.1 6.7 4.4-.1 7.9-3.8 7.8-8.2.6 3.6 3.8 6.3 7.5 6.2h.1c4.1-.1 8.5-4.1 8.5-8.2.1 0-2.2-11.8-2.4-26.5" fill="#d6a57c"/><path d="m61.8 43.5c-1.3 1.6-3.3 2.8-5.6 2.8h-.1c-.4 0-.8 0-1.2-.1-.2 0-.4-.1-.6-.1-2.6-.4-5.5-1.7-7.1-3.6.4-2.3.4-4.6.4-6.9 0-2.5-.2-4.9-.3-7.3-.1-2.4-.2-4.8-.1-7.3-.5 1.1-.9 2.3-1.1 3.6-.3 1.2-.4 2.5-.5 3.7-.2 2.5-.2 4.9-.2 7.4 0 2.4.1 4.8 0 7.2-.1 1.2-.1 3-.5 3.8-.8 1.7-3.2 2.1-5.2 2.1-3.5.1-7.2-2-8.7-5.1 0 0 0-.1 0-.1.1-1.1.3-2.1.4-3.2.2-2.1.4-4.3.4-6.5 0-2.2-.1-4.4-.4-6.5-.1-1.1-.3-2.2-.6-3.2-.3-1.1-.6-2.1-1-3.1-.1 1.1-.1 2.2-.1 3.3 0 1.1 0 2.1-.1 3.2 0 2.1-.1 4.3-.1 6.4 0 2.1 0 4.3.1 6.4 0 .9.1 3.5.2 4.7-1.3 1.3-3 2.1-5 2.1h-.1c-3.3.1-6.7-2.6-7.8-5.7 0-.1 0-.2 0-.3.1-1.9.3-3.7.4-5.6.1-1.9.1-3.8 0-5.7-.2-.9-.3-1.9-.5-2.9-.1-.5-.2-1-.4-1.4-.1-.2-.2-.5-.3-.7-.1-.2-.3-.4-.4-.6.1.2.1.5.1.7 0 .2 0 .5 0 .7 0 .5 0 .9-.1 1.4-.1.9-.2 1.9-.3 2.8-.2 1.9-.4 3.7-.5 5.6-.1 1.9-.1 3.8.1 5.7 0 .1 0 .1 0 .2-1.2.8-2.6 1.1-4.2 1.1-9.9 0-7.8-14.7-6.4-20.5.2-.9.5-1.8.8-2.6-.9 1.4-1.7 3.3-2.3 5.9-1.4 5.7-2 20.5 6.6 20.5 2.5 0 4.7-1.1 6-3 .1.4.3 7.7 7.7 7.7h.1c2.3-.1 4.3-1.2 5.6-2.9-.1.5-.2 1.2-.3 2.1-.5 5.4 3.8 8.1 6.5 7.2 7.2-2.6 13.2-2.9 17.9-2.7 3.2.1 5.3-2.1 5.7-5.8 1.6-1.4 2.8-3.1 3.1-4.9" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44a-1f3fe.svg b/riot/emojione/svg/1f44a-1f3fe.svg new file mode 100644 index 0000000..6485deb --- /dev/null +++ b/riot/emojione/svg/1f44a-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.5 15.5c0-2.6-2.2-6.2-6.5-6.9-3.6-.6-7.1.6-8 3.5-.4-3.9-3.9-5.2-8.1-5.1-4.1.1-7.5 2-7.9 5.7-1-2.2-3.7-2.9-6.8-2.9h-.1c-3.1.2-5.7 1.2-6.7 3.5-.9-.5-2.2-.6-4.2.1-2.4.8-6.6 4.4-8.4 11.9-1.4 5.7.5 13.7.5 13.7-.2 3.6 2.6 6.6 6.1 6.8 2.7.1 5.1-1.3 6.3-3.5v1.2c.1 4 3.4 7.1 7.4 7h.1c3.2-.1 5.8-2.2 6.7-5 .7 3.9 4.1 6.8 8.1 6.7 4.4-.1 7.9-3.8 7.8-8.2.6 3.6 3.8 6.3 7.5 6.2h.1c4.1-.1 8.5-4.1 8.5-8.2.1 0-2.2-11.8-2.4-26.5" fill="#b47d56"/><path d="m61.8 43.5c-1.3 1.6-3.3 2.8-5.6 2.8h-.1c-.4 0-.8 0-1.2-.1-.2 0-.4-.1-.6-.1-2.6-.4-5.5-1.7-7.1-3.6.4-2.3.4-4.6.4-6.9 0-2.5-.2-4.9-.3-7.3-.1-2.4-.2-4.8-.1-7.3-.5 1.1-.9 2.3-1.1 3.6-.3 1.2-.4 2.5-.5 3.7-.2 2.5-.2 4.9-.2 7.4 0 2.4.1 4.8 0 7.2-.1 1.2-.1 3-.5 3.8-.8 1.7-3.2 2.1-5.2 2.1-3.5.1-7.2-2-8.7-5.1 0 0 0-.1 0-.1.1-1.1.3-2.1.4-3.2.2-2.1.4-4.3.4-6.5 0-2.2-.1-4.4-.4-6.5-.1-1.1-.3-2.2-.6-3.2-.3-1.1-.6-2.1-1-3.1-.1 1.1-.1 2.2-.1 3.3 0 1.1 0 2.1-.1 3.2 0 2.1-.1 4.3-.1 6.4 0 2.1 0 4.3.1 6.4 0 .9.1 3.5.2 4.7-1.3 1.3-3 2.1-5 2.1h-.1c-3.3.1-6.7-2.6-7.8-5.7 0-.1 0-.2 0-.3.1-1.9.3-3.7.4-5.6.1-1.9.1-3.8 0-5.7-.2-.9-.3-1.9-.5-2.9-.1-.5-.2-1-.4-1.4-.1-.2-.2-.5-.3-.7-.1-.2-.3-.4-.4-.6.1.2.1.5.1.7 0 .2 0 .5 0 .7 0 .5 0 .9-.1 1.4-.1.9-.2 1.9-.3 2.8-.2 1.9-.4 3.7-.5 5.6-.1 1.9-.1 3.8.1 5.7 0 .1 0 .1 0 .2-1.2.8-2.6 1.1-4.2 1.1-9.9 0-7.8-14.7-6.4-20.5.2-.9.5-1.8.8-2.6-.9 1.4-1.7 3.3-2.3 5.9-1.4 5.7-2 20.5 6.6 20.5 2.5 0 4.7-1.1 6-3 .1.4.3 7.7 7.7 7.7h.1c2.3-.1 4.3-1.2 5.6-2.9-.1.5-.2 1.2-.3 2.1-.5 5.4 3.8 8.1 6.5 7.2 7.2-2.6 13.2-2.9 17.9-2.7 3.2.1 5.3-2.1 5.7-5.8 1.6-1.4 2.8-3.1 3.1-4.9" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44a-1f3ff.svg b/riot/emojione/svg/1f44a-1f3ff.svg new file mode 100644 index 0000000..2eded30 --- /dev/null +++ b/riot/emojione/svg/1f44a-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.5 15.5c0-2.6-2.2-6.2-6.5-6.9-3.6-.6-7.1.6-8 3.5-.4-3.9-3.9-5.2-8.1-5.1-4.1.1-7.5 2-7.9 5.7-1-2.2-3.7-2.9-6.8-2.9h-.1c-3.1.2-5.7 1.2-6.7 3.5-.9-.5-2.2-.6-4.2.1-2.4.8-6.6 4.4-8.4 11.9-1.4 5.7.5 13.7.5 13.7-.2 3.6 2.6 6.6 6.1 6.8 2.7.1 5.1-1.3 6.3-3.5v1.2c.1 4 3.4 7.1 7.4 7h.1c3.2-.1 5.8-2.2 6.7-5 .7 3.9 4.1 6.8 8.1 6.7 4.4-.1 7.9-3.8 7.8-8.2.6 3.6 3.8 6.3 7.5 6.2h.1c4.1-.1 8.5-4.1 8.5-8.2.1 0-2.2-11.8-2.4-26.5" fill="#8a6859"/><path d="m61.8 43.5c-1.3 1.6-3.3 2.8-5.6 2.8h-.1c-.4 0-.8 0-1.2-.1-.2 0-.4-.1-.6-.1-2.6-.4-5.5-1.7-7.1-3.6.4-2.3.4-4.6.4-6.9 0-2.5-.2-4.9-.3-7.3-.1-2.4-.2-4.8-.1-7.3-.5 1.1-.9 2.3-1.1 3.6-.3 1.2-.4 2.5-.5 3.7-.2 2.5-.2 4.9-.2 7.4 0 2.4.1 4.8 0 7.2-.1 1.2-.1 3-.5 3.8-.8 1.7-3.2 2.1-5.2 2.1-3.5.1-7.2-2-8.7-5.1 0 0 0-.1 0-.1.1-1.1.3-2.1.4-3.2.2-2.1.4-4.3.4-6.5 0-2.2-.1-4.4-.4-6.5-.1-1.1-.3-2.2-.6-3.2-.3-1.1-.6-2.1-1-3.1-.1 1.1-.1 2.2-.1 3.3 0 1.1 0 2.1-.1 3.2 0 2.1-.1 4.3-.1 6.4 0 2.1 0 4.3.1 6.4 0 .9.1 3.5.2 4.7-1.3 1.3-3 2.1-5 2.1h-.1c-3.3.1-6.7-2.6-7.8-5.7 0-.1 0-.2 0-.3.1-1.9.3-3.7.4-5.6.1-1.9.1-3.8 0-5.7-.2-.9-.3-1.9-.5-2.9-.1-.5-.2-1-.4-1.4-.1-.2-.2-.5-.3-.7-.1-.2-.3-.4-.4-.6.1.2.1.5.1.7 0 .2 0 .5 0 .7 0 .5 0 .9-.1 1.4-.1.9-.2 1.9-.3 2.8-.2 1.9-.4 3.7-.5 5.6-.1 1.9-.1 3.8.1 5.7 0 .1 0 .1 0 .2-1.2.8-2.6 1.1-4.2 1.1-9.9 0-7.8-14.7-6.4-20.5.2-.9.5-1.8.8-2.6-.9 1.4-1.7 3.3-2.3 5.9-1.4 5.7-2 20.5 6.6 20.5 2.5 0 4.7-1.1 6-3 .1.4.3 7.7 7.7 7.7h.1c2.3-.1 4.3-1.2 5.6-2.9-.1.5-.2 1.2-.3 2.1-.5 5.4 3.8 8.1 6.5 7.2 7.2-2.6 13.2-2.9 17.9-2.7 3.2.1 5.3-2.1 5.7-5.8 1.6-1.4 2.8-3.1 3.1-4.9" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44a.svg b/riot/emojione/svg/1f44a.svg new file mode 100644 index 0000000..20b808d --- /dev/null +++ b/riot/emojione/svg/1f44a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.5 15.5c0-2.6-2.2-6.2-6.5-6.9-3.6-.6-7.1.6-8 3.5-.4-3.9-3.9-5.2-8.1-5.1-4.1.1-7.5 2-7.9 5.7-1-2.2-3.7-2.9-6.8-2.9h-.1c-3.1.2-5.7 1.2-6.7 3.5-.9-.5-2.2-.6-4.2.1-2.4.8-6.6 4.4-8.4 11.9-1.4 5.7.5 13.7.5 13.7-.2 3.6 2.6 6.6 6.1 6.8 2.7.1 5.1-1.3 6.3-3.5v1.2c.1 4 3.4 7.1 7.4 7h.1c3.2-.1 5.8-2.2 6.7-5 .7 3.9 4.1 6.8 8.1 6.7 4.4-.1 7.9-3.8 7.8-8.2.6 3.6 3.8 6.3 7.5 6.2h.1c4.1-.1 8.5-4.1 8.5-8.2.1 0-2.2-11.8-2.4-26.5" fill="#ffdd67"/><path d="m61.8 43.5c-1.3 1.6-3.3 2.8-5.6 2.8h-.1c-.4 0-.8 0-1.2-.1-.2 0-.4-.1-.6-.1-2.6-.4-5.5-1.7-7.1-3.6.4-2.3.4-4.6.4-6.9 0-2.5-.2-4.9-.3-7.3-.1-2.4-.2-4.8-.1-7.3-.5 1.1-.9 2.3-1.1 3.6-.3 1.2-.4 2.5-.5 3.7-.2 2.5-.2 4.9-.2 7.4 0 2.4.1 4.8 0 7.2-.1 1.2-.1 3-.5 3.8-.8 1.7-3.2 2.1-5.2 2.1-3.5.1-7.2-2-8.7-5.1 0 0 0-.1 0-.1.1-1.1.3-2.1.4-3.2.2-2.1.4-4.3.4-6.5 0-2.2-.1-4.4-.4-6.5-.1-1.1-.3-2.2-.6-3.2-.3-1.1-.6-2.1-1-3.1-.1 1.1-.1 2.2-.1 3.3 0 1.1 0 2.1-.1 3.2 0 2.1-.1 4.3-.1 6.4 0 2.1 0 4.3.1 6.4 0 .9.1 3.5.2 4.7-1.3 1.3-3 2.1-5 2.1h-.1c-3.3.1-6.7-2.6-7.8-5.7 0-.1 0-.2 0-.3.1-1.9.3-3.7.4-5.6.1-1.9.1-3.8 0-5.7-.2-.9-.3-1.9-.5-2.9-.1-.5-.2-1-.4-1.4-.1-.2-.2-.5-.3-.7-.1-.2-.3-.4-.4-.6.1.2.1.5.1.7 0 .2 0 .5 0 .7 0 .5 0 .9-.1 1.4-.1.9-.2 1.9-.3 2.8-.2 1.9-.4 3.7-.5 5.6-.1 1.9-.1 3.8.1 5.7 0 .1 0 .1 0 .2-1.2.8-2.6 1.1-4.2 1.1-9.9 0-7.8-14.7-6.4-20.5.2-.9.5-1.8.8-2.6-.9 1.4-1.7 3.3-2.3 5.9-1.4 5.7-2 20.5 6.6 20.5 2.5 0 4.7-1.1 6-3 .1.4.3 7.7 7.7 7.7h.1c2.3-.1 4.3-1.2 5.6-2.9-.1.5-.2 1.2-.3 2.1-.5 5.4 3.8 8.1 6.5 7.2 7.2-2.6 13.2-2.9 17.9-2.7 3.2.1 5.3-2.1 5.7-5.8 1.6-1.4 2.8-3.1 3.1-4.9" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44b-1f3fb.svg b/riot/emojione/svg/1f44b-1f3fb.svg new file mode 100644 index 0000000..981d4d4 --- /dev/null +++ b/riot/emojione/svg/1f44b-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m16.1 48.5c-.5-.1-.9-.2-1.4-.4-.5-.2-.9-.3-1.3-.5-.9-.4-1.7-.9-2.5-1.5-1.6-1.1-2.9-2.6-3.9-4.4-1-1.7-1.6-3.7-1.7-5.6-.1-1 0-1.9.1-2.9.1-.5.2-.9.3-1.4.1-.5.3-.9.4-1.4l.1 1.4c0 .5.1.9.2 1.4.1.9.3 1.8.5 2.6.4 1.7 1 3.3 1.9 4.8.9 1.5 1.9 2.9 3.2 4.2.6.6 1.3 1.2 2 1.8.3.3.7.6 1.1.9l1 1"/><path d="m15.8 52.1c-.3.2-.7.3-1.1.4-.4.1-.7.2-1.1.2-.7.1-1.5.2-2.3.1-1.5-.1-3.1-.5-4.4-1.2-1.4-.7-2.6-1.8-3.4-3.1-.4-.6-.8-1.3-1.1-2-.1-.3-.2-.7-.3-1.1 0-.3-.1-.6-.1-1 .3.3.5.5.7.8.3.3.5.6.7.8.5.5.9 1 1.4 1.4 1 .9 2 1.7 3.2 2.3 1.1.6 2.4 1.1 3.6 1.5.6.2 1.3.3 2 .5.3.1.7.1 1 .2.5.1.8.1 1.2.2"/><path d="m38.4 3.5c.5.1.9.3 1.4.5.5.2.9.4 1.3.6.9.5 1.7 1 2.5 1.6 1.6 1.2 2.9 2.8 3.8 4.6.9 1.8 1.4 3.8 1.4 5.7 0 1-.1 1.9-.3 2.9-.1.5-.2.9-.4 1.4-.2.5-.3.9-.5 1.3l-.1-1.4c0-.5 0-.9-.1-1.4-.1-.9-.2-1.8-.3-2.7-.3-1.7-.9-3.4-1.7-5-.8-1.6-1.8-3-3-4.3-.6-.7-1.3-1.3-1.9-2-.3-.3-.7-.6-1.1-.9l-1-.9"/><path d="m47.1 3.1c.4.1.7.2 1 .4.3.1.7.3 1 .5.6.4 1.2.8 1.8 1.3 1.1 1 2 2.2 2.5 3.6.6 1.4.8 2.9.6 4.4-.1.7-.3 1.4-.5 2.1-.1.3-.3.7-.4 1-.2.3-.3.6-.6.9 0-.4 0-.7 0-1 0-.3 0-.7 0-1 0-.7-.1-1.3-.1-1.9-.2-1.3-.4-2.5-.9-3.6-.5-1.2-1.1-2.2-1.8-3.3-.4-.5-.8-1.1-1.2-1.6-.2-.3-.4-.5-.7-.8-.2-.5-.5-.8-.7-1"/></g><g fill="#ffe1bd"><path d="m10 18c-2 .9-2.7 3.3-1.8 5.3l12.6 26.3 7-3.3-12.6-26.4c-.9-2-3.2-2.9-5.2-1.9"/><path d="m43.1 38.9l7.4-3.5-14.4-30c-1-2-3.4-2.9-5.5-1.9-2 1-2.9 3.4-1.9 5.5l14.4 29.9"/></g><path d="m30.7 3.4c-.2.1-.4.2-.6.4 1.9-.5 3.9.4 4.8 2.2l14.4 30 1.3-.6-14.4-30c-1-2.1-3.4-3-5.5-2" fill="#e6b796"/><path d="m27.8 46.2l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2.1-2.1 1-3 3.6-2 5.7l14.7 30.7" fill="#ffe1bd"/><path d="m15.1 9.9c-.2.1-.4.2-.6.4 1.9-.5 4.1.4 5 2.3l9.1 19.1 2.2 1.3-10-21c-1-2.2-3.5-3.1-5.7-2.1" fill="#e6b796"/><path d="m34.3 40.1l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2-2.1 1-3 3.6-2 5.7l14.7 30.6" fill="#ffe1bd"/><g fill="#e6b796"><path d="m21.6 3.7c-.2.1-.4.3-.6.4 1.9-.5 4.1.4 5 2.3l10.3 21.6 2.2 1.3-11.2-23.5c-1-2.2-3.6-3.1-5.7-2.1"/><path d="m10 18c-.2.1-.4.2-.6.4 1.8-.5 3.7.4 4.5 2.2l7.5 15.7 2.2 1.3-8.4-17.6c-.9-2.1-3.2-3-5.2-2"/></g><path d="m60.8 15c-2.7-2.1-7.1.2-9.3 7.4-1.5 5-1.7 6.5-4.9 8l-1.8-3.7c0 0-28.4 13.7-27.3 15.9 0 0 3.4 10.6 9.2 15.5 8.6 7.4 28.7-.5 29.6-19.6.5-11.1 7.4-21.2 4.5-23.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m60.8 15c-.5-.4-1.1-.6-1.7-.7.1.1.3.1.4.2 3 2.3-.1 7.6-1.8 12.4-1.4 3.8-2.6 7.7-2.4 11.5.8 16.6-15.9 24.5-25.9 21.5 9.8 4.1 28-3.7 27.2-21-.2-3.8.9-7.5 2.4-11.5 1.6-4.8 4.7-10.1 1.8-12.4"/><path d="m47.5 30c-6.2.7-15.3 9.6-8.9 19.3-4.7-9.8 3-16.4 7.9-18.7.5-.4 1-.6 1-.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44b-1f3fc.svg b/riot/emojione/svg/1f44b-1f3fc.svg new file mode 100644 index 0000000..0e3fb5f --- /dev/null +++ b/riot/emojione/svg/1f44b-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m16.1 48.5c-.5-.1-.9-.2-1.4-.4-.5-.2-.9-.3-1.3-.5-.9-.4-1.7-.9-2.5-1.5-1.6-1.1-2.9-2.6-3.9-4.4-1-1.7-1.6-3.7-1.7-5.6-.1-1 0-1.9.1-2.9.1-.5.2-.9.3-1.4.1-.5.3-.9.4-1.4l.1 1.4c0 .5.1.9.2 1.4.1.9.3 1.8.5 2.6.4 1.7 1 3.3 1.9 4.8.9 1.5 1.9 2.9 3.2 4.2.6.6 1.3 1.2 2 1.8.3.3.7.6 1.1.9l1 1"/><path d="m15.8 52.1c-.3.2-.7.3-1.1.4-.4.1-.7.2-1.1.2-.7.1-1.5.2-2.3.1-1.5-.1-3.1-.5-4.4-1.2-1.4-.7-2.6-1.8-3.4-3.1-.4-.6-.8-1.3-1.1-2-.1-.3-.2-.7-.3-1.1 0-.3-.1-.6-.1-1 .3.3.5.5.7.8.3.3.5.6.7.8.5.5.9 1 1.4 1.4 1 .9 2 1.7 3.2 2.3 1.1.6 2.4 1.1 3.6 1.5.6.2 1.3.3 2 .5.3.1.7.1 1 .2.5.1.8.1 1.2.2"/><path d="m38.4 3.5c.5.1.9.3 1.4.5.5.2.9.4 1.3.6.9.5 1.7 1 2.5 1.6 1.6 1.2 2.9 2.8 3.8 4.6.9 1.8 1.4 3.8 1.4 5.7 0 1-.1 1.9-.3 2.9-.1.5-.2.9-.4 1.4-.2.5-.3.9-.5 1.3l-.1-1.4c0-.5 0-.9-.1-1.4-.1-.9-.2-1.8-.3-2.7-.3-1.7-.9-3.4-1.7-5-.8-1.6-1.8-3-3-4.3-.6-.7-1.3-1.3-1.9-2-.3-.3-.7-.6-1.1-.9l-1-.9"/><path d="m47.1 3.1c.4.1.7.2 1 .4.3.1.7.3 1 .5.6.4 1.2.8 1.8 1.3 1.1 1 2 2.2 2.5 3.6.6 1.4.8 2.9.6 4.4-.1.7-.3 1.4-.5 2.1-.1.3-.3.7-.4 1-.2.3-.3.6-.6.9 0-.4 0-.7 0-1 0-.3 0-.7 0-1 0-.7-.1-1.3-.1-1.9-.2-1.3-.4-2.5-.9-3.6-.5-1.2-1.1-2.2-1.8-3.3-.4-.5-.8-1.1-1.2-1.6-.2-.3-.4-.5-.7-.8-.2-.5-.5-.8-.7-1"/></g><g fill="#fed0ac"><path d="m10 18c-2 .9-2.7 3.3-1.8 5.3l12.6 26.3 7-3.3-12.6-26.4c-.9-2-3.2-2.9-5.2-1.9"/><path d="m43.1 38.9l7.4-3.5-14.4-30c-1-2-3.4-2.9-5.5-1.9-2 1-2.9 3.4-1.9 5.5l14.4 29.9"/></g><path d="m30.7 3.4c-.2.1-.4.2-.6.4 1.9-.5 3.9.4 4.8 2.2l14.4 30 1.3-.6-14.4-30c-1-2.1-3.4-3-5.5-2" fill="#e0a372"/><path d="m27.8 46.2l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2.1-2.1 1-3 3.6-2 5.7l14.7 30.7" fill="#fed0ac"/><path d="m15.1 9.9c-.2.1-.4.2-.6.4 1.9-.5 4.1.4 5 2.3l9.1 19.1 2.2 1.3-10-21c-1-2.2-3.5-3.1-5.7-2.1" fill="#e0a372"/><path d="m34.3 40.1l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2-2.1 1-3 3.6-2 5.7l14.7 30.6" fill="#fed0ac"/><g fill="#e0a372"><path d="m21.6 3.7c-.2.1-.4.3-.6.4 1.9-.5 4.1.4 5 2.3l10.3 21.6 2.2 1.3-11.2-23.5c-1-2.2-3.6-3.1-5.7-2.1"/><path d="m10 18c-.2.1-.4.2-.6.4 1.8-.5 3.7.4 4.5 2.2l7.5 15.7 2.2 1.3-8.4-17.6c-.9-2.1-3.2-3-5.2-2"/></g><path d="m60.8 15c-2.7-2.1-7.1.2-9.3 7.4-1.5 5-1.7 6.5-4.9 8l-1.8-3.7c0 0-28.4 13.7-27.3 15.9 0 0 3.4 10.6 9.2 15.5 8.6 7.4 28.7-.5 29.6-19.6.5-11.1 7.4-21.2 4.5-23.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m60.8 15c-.5-.4-1.1-.6-1.7-.7.1.1.3.1.4.2 3 2.3-.1 7.6-1.8 12.4-1.4 3.8-2.6 7.7-2.4 11.5.8 16.6-15.9 24.5-25.9 21.5 9.8 4.1 28-3.7 27.2-21-.2-3.8.9-7.5 2.4-11.5 1.6-4.8 4.7-10.1 1.8-12.4"/><path d="m47.5 30c-6.2.7-15.3 9.6-8.9 19.3-4.7-9.8 3-16.4 7.9-18.7.5-.4 1-.6 1-.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44b-1f3fd.svg b/riot/emojione/svg/1f44b-1f3fd.svg new file mode 100644 index 0000000..801f13f --- /dev/null +++ b/riot/emojione/svg/1f44b-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m16.1 48.5c-.5-.1-.9-.2-1.4-.4-.5-.2-.9-.3-1.3-.5-.9-.4-1.7-.9-2.5-1.5-1.6-1.1-2.9-2.6-3.9-4.4-1-1.7-1.6-3.7-1.7-5.6-.1-1 0-1.9.1-2.9.1-.5.2-.9.3-1.4.1-.5.3-.9.4-1.4l.1 1.4c0 .5.1.9.2 1.4.1.9.3 1.8.5 2.6.4 1.7 1 3.3 1.9 4.8.9 1.5 1.9 2.9 3.2 4.2.6.6 1.3 1.2 2 1.8.3.3.7.6 1.1.9l1 1"/><path d="m15.8 52.1c-.3.2-.7.3-1.1.4-.4.1-.7.2-1.1.2-.7.1-1.5.2-2.3.1-1.5-.1-3.1-.5-4.4-1.2-1.4-.7-2.6-1.8-3.4-3.1-.4-.6-.8-1.3-1.1-2-.1-.3-.2-.7-.3-1.1 0-.3-.1-.6-.1-1 .3.3.5.5.7.8.3.3.5.6.7.8.5.5.9 1 1.4 1.4 1 .9 2 1.7 3.2 2.3 1.1.6 2.4 1.1 3.6 1.5.6.2 1.3.3 2 .5.3.1.7.1 1 .2.5.1.8.1 1.2.2"/><path d="m38.4 3.5c.5.1.9.3 1.4.5.5.2.9.4 1.3.6.9.5 1.7 1 2.5 1.6 1.6 1.2 2.9 2.8 3.8 4.6.9 1.8 1.4 3.8 1.4 5.7 0 1-.1 1.9-.3 2.9-.1.5-.2.9-.4 1.4-.2.5-.3.9-.5 1.3l-.1-1.4c0-.5 0-.9-.1-1.4-.1-.9-.2-1.8-.3-2.7-.3-1.7-.9-3.4-1.7-5-.8-1.6-1.8-3-3-4.3-.6-.7-1.3-1.3-1.9-2-.3-.3-.7-.6-1.1-.9l-1-.9"/><path d="m47.1 3.1c.4.1.7.2 1 .4.3.1.7.3 1 .5.6.4 1.2.8 1.8 1.3 1.1 1 2 2.2 2.5 3.6.6 1.4.8 2.9.6 4.4-.1.7-.3 1.4-.5 2.1-.1.3-.3.7-.4 1-.2.3-.3.6-.6.9 0-.4 0-.7 0-1 0-.3 0-.7 0-1 0-.7-.1-1.3-.1-1.9-.2-1.3-.4-2.5-.9-3.6-.5-1.2-1.1-2.2-1.8-3.3-.4-.5-.8-1.1-1.2-1.6-.2-.3-.4-.5-.7-.8-.2-.5-.5-.8-.7-1"/></g><g fill="#d6a57c"><path d="m10 18c-2 .9-2.7 3.3-1.8 5.3l12.6 26.3 7-3.3-12.6-26.4c-.9-2-3.2-2.9-5.2-1.9"/><path d="m43.1 38.9l7.4-3.6-14.4-30c-1-2-3.4-2.9-5.5-1.9-2 1-2.9 3.4-1.9 5.5l14.4 30"/></g><path d="m30.7 3.4c-.2.1-.4.2-.6.4 1.9-.5 3.9.4 4.8 2.2l14.4 30 1.3-.6-14.4-30c-1-2.1-3.4-3-5.5-2" fill="#b58360"/><path d="m27.8 46.2l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2.1-2.1 1-3 3.6-2 5.7l14.7 30.7" fill="#d6a57c"/><path d="m15.1 9.9c-.2.1-.4.2-.6.4 1.9-.5 4.1.4 5 2.3l9.1 19.1 2.2 1.3-10-21c-1-2.2-3.5-3.1-5.7-2.1" fill="#b58360"/><path d="m34.3 40.1l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2-2.1 1-3 3.6-2 5.7l14.7 30.6" fill="#d6a57c"/><g fill="#b58360"><path d="m21.6 3.7c-.2.1-.4.3-.6.4 1.9-.5 4.1.4 5 2.3l10.3 21.6 2.2 1.3-11.2-23.5c-1-2.2-3.6-3.1-5.7-2.1"/><path d="m10 18c-.2.1-.4.2-.6.4 1.8-.5 3.7.4 4.5 2.2l7.5 15.7 2.2 1.3-8.4-17.6c-.9-2.1-3.2-3-5.2-2"/></g><path d="m60.8 15c-2.7-2.1-7.1.2-9.3 7.4-1.5 5-1.7 6.5-4.9 8l-1.8-3.7c0 0-28.4 13.7-27.3 15.9 0 0 3.4 10.6 9.2 15.5 8.6 7.3 28.7-.5 29.6-19.6.5-11.1 7.4-21.2 4.5-23.5" fill="#d6a57c"/><g fill="#b58360"><path d="m60.8 15c-.5-.4-1.1-.6-1.7-.7.1.1.3.1.4.2 3 2.3-.1 7.6-1.8 12.4-1.4 3.8-2.6 7.7-2.4 11.5.8 16.6-15.9 24.5-25.9 21.5 9.8 4.1 28-3.7 27.2-21-.2-3.8.9-7.5 2.4-11.5 1.6-4.8 4.7-10.1 1.8-12.4"/><path d="m47.5 30c-6.2.7-15.3 9.6-8.9 19.3-4.7-9.8 3-16.4 7.9-18.7.5-.4 1-.6 1-.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44b-1f3fe.svg b/riot/emojione/svg/1f44b-1f3fe.svg new file mode 100644 index 0000000..687ff44 --- /dev/null +++ b/riot/emojione/svg/1f44b-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m16.1 48.5c-.5-.1-.9-.2-1.4-.4-.5-.2-.9-.3-1.3-.5-.9-.4-1.7-.9-2.5-1.5-1.6-1.1-2.9-2.6-3.9-4.4-1-1.7-1.6-3.7-1.7-5.6-.1-1 0-1.9.1-2.9.1-.5.2-.9.3-1.4.1-.5.3-.9.4-1.4l.1 1.4c0 .5.1.9.2 1.4.1.9.3 1.8.5 2.6.4 1.7 1 3.3 1.9 4.8.9 1.5 1.9 2.9 3.2 4.2.6.6 1.3 1.2 2 1.8.3.3.7.6 1.1.9l1 1"/><path d="m15.8 52.1c-.3.2-.7.3-1.1.4-.4.1-.7.2-1.1.2-.7.1-1.5.2-2.3.1-1.5-.1-3.1-.5-4.4-1.2-1.4-.7-2.6-1.8-3.4-3.1-.4-.6-.8-1.3-1.1-2-.1-.3-.2-.7-.3-1.1 0-.3-.1-.6-.1-1 .3.3.5.5.7.8.3.3.5.6.7.8.5.5.9 1 1.4 1.4 1 .9 2 1.7 3.2 2.3 1.1.6 2.4 1.1 3.6 1.5.6.2 1.3.3 2 .5.3.1.7.1 1 .2.5.1.8.1 1.2.2"/><path d="m38.4 3.5c.5.1.9.3 1.4.5.5.2.9.4 1.3.6.9.5 1.7 1 2.5 1.6 1.6 1.2 2.9 2.8 3.8 4.6.9 1.8 1.4 3.8 1.4 5.7 0 1-.1 1.9-.3 2.9-.1.5-.2.9-.4 1.4-.2.5-.3.9-.5 1.3l-.1-1.4c0-.5 0-.9-.1-1.4-.1-.9-.2-1.8-.3-2.7-.3-1.7-.9-3.4-1.7-5-.8-1.6-1.8-3-3-4.3-.6-.7-1.3-1.3-1.9-2-.3-.3-.7-.6-1.1-.9l-1-.9"/><path d="m47.1 3.1c.4.1.7.2 1 .4.3.1.7.3 1 .5.6.4 1.2.8 1.8 1.3 1.1 1 2 2.2 2.5 3.6.6 1.4.8 2.9.6 4.4-.1.7-.3 1.4-.5 2.1-.1.3-.3.7-.4 1-.2.3-.3.6-.6.9 0-.4 0-.7 0-1 0-.3 0-.7 0-1 0-.7-.1-1.3-.1-1.9-.2-1.3-.4-2.5-.9-3.6-.5-1.2-1.1-2.2-1.8-3.3-.4-.5-.8-1.1-1.2-1.6-.2-.3-.4-.5-.7-.8-.2-.5-.5-.8-.7-1"/></g><g fill="#b47d56"><path d="m10 18c-2 .9-2.7 3.3-1.8 5.3l12.6 26.3 7-3.3-12.6-26.4c-.9-2-3.2-2.9-5.2-1.9"/><path d="m43.1 38.9l7.4-3.5-14.4-30c-1-2-3.4-2.9-5.5-1.9-2 1-2.9 3.4-1.9 5.5l14.4 29.9"/></g><path d="m30.7 3.4c-.2.1-.4.2-.6.4 1.9-.5 3.9.4 4.8 2.2l14.4 30 1.3-.6-14.4-30c-1-2.1-3.4-3-5.5-2" fill="#935e3e"/><path d="m27.8 46.2l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2.1-2.1 1-3 3.6-2 5.7l14.7 30.7" fill="#b47d56"/><path d="m15.1 9.9c-.2.1-.4.2-.6.4 1.9-.5 4.1.4 5 2.3l9.1 19.1 2.2 1.3-10-21c-1-2.2-3.5-3.1-5.7-2.1" fill="#935e3e"/><path d="m34.3 40.1l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2-2.1 1-3 3.6-2 5.7l14.7 30.6" fill="#b47d56"/><g fill="#935e3e"><path d="m21.6 3.7c-.2.1-.4.3-.6.4 1.9-.5 4.1.4 5 2.3l10.3 21.6 2.2 1.3-11.2-23.5c-1-2.2-3.6-3.1-5.7-2.1"/><path d="m10 18c-.2.1-.4.2-.6.4 1.8-.5 3.7.4 4.5 2.2l7.5 15.7 2.2 1.3-8.4-17.6c-.9-2.1-3.2-3-5.2-2"/></g><path d="m60.8 15c-2.7-2.1-7.1.2-9.3 7.4-1.5 5-1.7 6.5-4.9 8l-1.8-3.7c0 0-28.4 13.7-27.3 15.9 0 0 3.4 10.6 9.2 15.5 8.6 7.4 28.7-.5 29.6-19.6.5-11.1 7.4-21.2 4.5-23.5" fill="#b47d56"/><g fill="#935e3e"><path d="m60.8 15c-.5-.4-1.1-.6-1.7-.7.1.1.3.1.4.2 3 2.3-.1 7.6-1.8 12.4-1.4 3.8-2.6 7.7-2.4 11.5.8 16.6-15.9 24.5-25.9 21.5 9.8 4.1 28-3.7 27.2-21-.2-3.8.9-7.5 2.4-11.5 1.6-4.8 4.7-10.1 1.8-12.4"/><path d="m47.5 30c-6.2.7-15.3 9.6-8.9 19.3-4.7-9.8 3-16.4 7.9-18.7.5-.4 1-.6 1-.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44b-1f3ff.svg b/riot/emojione/svg/1f44b-1f3ff.svg new file mode 100644 index 0000000..68636c2 --- /dev/null +++ b/riot/emojione/svg/1f44b-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m16.1 48.5c-.5-.1-.9-.2-1.4-.4-.5-.2-.9-.3-1.3-.5-.9-.4-1.7-.9-2.5-1.5-1.6-1.1-2.9-2.6-3.9-4.4-1-1.7-1.6-3.7-1.7-5.6-.1-1 0-1.9.1-2.9.1-.5.2-.9.3-1.4.1-.5.3-.9.4-1.4l.1 1.4c0 .5.1.9.2 1.4.1.9.3 1.8.5 2.6.4 1.7 1 3.3 1.9 4.8.9 1.5 1.9 2.9 3.2 4.2.6.6 1.3 1.2 2 1.8.3.3.7.6 1.1.9l1 1"/><path d="m15.8 52.1c-.3.2-.7.3-1.1.4-.4.1-.7.2-1.1.2-.7.1-1.5.2-2.3.1-1.5-.1-3.1-.5-4.4-1.2-1.4-.7-2.6-1.8-3.4-3.1-.4-.6-.8-1.3-1.1-2-.1-.3-.2-.7-.3-1.1 0-.3-.1-.6-.1-1 .3.3.5.5.7.8.3.3.5.6.7.8.5.5.9 1 1.4 1.4 1 .9 2 1.7 3.2 2.3 1.1.6 2.4 1.1 3.6 1.5.6.2 1.3.3 2 .5.3.1.7.1 1 .2.5.1.8.1 1.2.2"/><path d="m38.4 3.5c.5.1.9.3 1.4.5.5.2.9.4 1.3.6.9.5 1.7 1 2.5 1.6 1.6 1.2 2.9 2.8 3.8 4.6.9 1.8 1.4 3.8 1.4 5.7 0 1-.1 1.9-.3 2.9-.1.5-.2.9-.4 1.4-.2.5-.3.9-.5 1.3l-.1-1.4c0-.5 0-.9-.1-1.4-.1-.9-.2-1.8-.3-2.7-.3-1.7-.9-3.4-1.7-5-.8-1.6-1.8-3-3-4.3-.6-.7-1.3-1.3-1.9-2-.3-.3-.7-.6-1.1-.9l-1-.9"/><path d="m47.1 3.1c.4.1.7.2 1 .4.3.1.7.3 1 .5.6.4 1.2.8 1.8 1.3 1.1 1 2 2.2 2.5 3.6.6 1.4.8 2.9.6 4.4-.1.7-.3 1.4-.5 2.1-.1.3-.3.7-.4 1-.2.3-.3.6-.6.9 0-.4 0-.7 0-1 0-.3 0-.7 0-1 0-.7-.1-1.3-.1-1.9-.2-1.3-.4-2.5-.9-3.6-.5-1.2-1.1-2.2-1.8-3.3-.4-.5-.8-1.1-1.2-1.6-.2-.3-.4-.5-.7-.8-.2-.5-.5-.8-.7-1"/></g><g fill="#8a6859"><path d="m10 18c-2 .9-2.7 3.3-1.8 5.3l12.6 26.3 7-3.3-12.6-26.4c-.9-2-3.2-2.9-5.2-1.9"/><path d="m43.1 38.9l7.4-3.5-14.4-30c-1-2-3.4-2.9-5.5-1.9-2 1-2.9 3.4-1.9 5.5l14.4 29.9"/></g><path d="m30.7 3.4c-.2.1-.4.2-.6.4 1.9-.5 3.9.4 4.8 2.2l14.4 30 1.3-.6-14.4-30c-1-2.1-3.4-3-5.5-2" fill="#705041"/><path d="m27.8 46.2l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2.1-2.1 1-3 3.6-2 5.7l14.7 30.7" fill="#8a6859"/><path d="m15.1 9.9c-.2.1-.4.2-.6.4 1.9-.5 4.1.4 5 2.3l9.1 19.1 2.2 1.3-10-21c-1-2.2-3.5-3.1-5.7-2.1" fill="#705041"/><path d="m34.3 40.1l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2-2.1 1-3 3.6-2 5.7l14.7 30.6" fill="#8a6859"/><g fill="#705041"><path d="m21.6 3.7c-.2.1-.4.3-.6.4 1.9-.5 4.1.4 5 2.3l10.3 21.6 2.2 1.3-11.2-23.5c-1-2.2-3.6-3.1-5.7-2.1"/><path d="m10 18c-.2.1-.4.2-.6.4 1.8-.5 3.7.4 4.5 2.2l7.5 15.7 2.2 1.3-8.4-17.6c-.9-2.1-3.2-3-5.2-2"/></g><path d="m60.8 15c-2.7-2.1-7.1.2-9.3 7.4-1.5 5-1.7 6.5-4.9 8l-1.8-3.7c0 0-28.4 13.7-27.3 15.9 0 0 3.4 10.6 9.2 15.5 8.6 7.4 28.7-.5 29.6-19.6.5-11.1 7.4-21.2 4.5-23.5" fill="#8a6859"/><g fill="#705041"><path d="m60.8 15c-.5-.4-1.1-.6-1.7-.7.1.1.3.1.4.2 3 2.3-.1 7.6-1.8 12.4-1.4 3.8-2.6 7.7-2.4 11.5.8 16.6-15.9 24.5-25.9 21.5 9.8 4.1 28-3.7 27.2-21-.2-3.8.9-7.5 2.4-11.5 1.6-4.8 4.7-10.1 1.8-12.4"/><path d="m47.5 30c-6.2.7-15.3 9.6-8.9 19.3-4.7-9.8 3-16.4 7.9-18.7.5-.4 1-.6 1-.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44b.svg b/riot/emojione/svg/1f44b.svg new file mode 100644 index 0000000..2118c9b --- /dev/null +++ b/riot/emojione/svg/1f44b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m16.1 48.5c-.5-.1-.9-.2-1.4-.4-.5-.2-.9-.3-1.3-.5-.9-.4-1.7-.9-2.5-1.5-1.6-1.1-2.9-2.6-3.9-4.4-1-1.7-1.6-3.7-1.7-5.6-.1-1 0-1.9.1-2.9.1-.5.2-.9.3-1.4.1-.5.3-.9.4-1.4l.1 1.4c0 .5.1.9.2 1.4.1.9.3 1.8.5 2.6.4 1.7 1 3.3 1.9 4.8.9 1.5 1.9 2.9 3.2 4.2.6.6 1.3 1.2 2 1.8.3.3.7.6 1.1.9l1 1"/><path d="m15.8 52.1c-.3.2-.7.3-1.1.4-.4.1-.7.2-1.1.2-.7.1-1.5.2-2.3.1-1.5-.1-3.1-.5-4.4-1.2-1.4-.7-2.6-1.8-3.4-3.1-.4-.6-.8-1.3-1.1-2-.1-.3-.2-.7-.3-1.1 0-.3-.1-.6-.1-1 .3.3.5.6.7.8.3.3.5.6.7.8.5.5.9 1 1.4 1.4 1 .9 2 1.7 3.2 2.3 1.1.6 2.4 1.1 3.6 1.5.6.2 1.3.3 2 .5.3.1.7.1 1 .2.5.1.8.1 1.2.2"/><path d="m38.4 3.5c.5.1.9.3 1.4.5.5.2.9.4 1.3.6.9.5 1.7 1 2.5 1.6 1.6 1.2 2.9 2.8 3.8 4.6.9 1.8 1.4 3.8 1.4 5.7 0 1-.1 1.9-.3 2.9-.1.5-.2.9-.4 1.4-.2.5-.3.9-.5 1.3l-.1-1.4c0-.5 0-.9-.1-1.4-.1-.9-.2-1.8-.3-2.7-.3-1.7-.9-3.4-1.7-5-.8-1.6-1.8-3-3-4.3-.6-.7-1.3-1.3-1.9-2-.3-.3-.7-.6-1.1-.9l-1-.9"/><path d="m47.1 3.1c.4.1.7.2 1 .4.3.1.7.3 1 .5.6.4 1.2.8 1.8 1.3 1.1 1 2 2.2 2.5 3.6.6 1.4.8 2.9.6 4.4-.1.7-.3 1.4-.5 2.1-.1.3-.3.7-.4 1-.2.3-.3.6-.6.9 0-.4 0-.7 0-1 0-.3 0-.7 0-1 0-.7-.1-1.3-.1-1.9-.2-1.3-.4-2.5-.9-3.6-.5-1.2-1.1-2.2-1.8-3.3-.4-.5-.8-1.1-1.2-1.6-.2-.3-.4-.5-.7-.8-.2-.5-.5-.8-.7-1"/></g><g fill="#ffdd67"><path d="m10 18c-2 .9-2.7 3.3-1.8 5.3l12.6 26.3 7-3.3-12.6-26.4c-.9-2-3.2-2.9-5.2-1.9"/><path d="m43.1 38.9l7.4-3.5-14.4-30c-1-2-3.4-2.9-5.5-1.9-2 1-2.9 3.4-1.9 5.5l14.4 29.9"/></g><path d="m30.7 3.4c-.2.1-.4.2-.6.4 1.9-.5 3.9.4 4.8 2.2l14.4 30 1.3-.6-14.4-30c-1-2.1-3.4-3-5.5-2" fill="#eba352"/><path d="m27.8 46.2l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2.1-2.1 1-3 3.6-2 5.7l14.7 30.7" fill="#ffdd67"/><path d="m15.1 9.9c-.2.1-.4.2-.6.4 1.9-.5 4.1.4 5 2.3l9.1 19.1 2.2 1.3-10-21c-1-2.2-3.5-3.1-5.7-2.1" fill="#eba352"/><path d="m34.3 40.1l7.7-3.7-14.7-30.6c-1-2.1-3.6-3.1-5.7-2-2.1 1-3 3.6-2 5.7l14.7 30.6" fill="#ffdd67"/><g fill="#eba352"><path d="m21.6 3.7c-.2.1-.4.3-.6.4 1.9-.5 4.1.4 5 2.3l10.3 21.6 2.2 1.3-11.2-23.5c-1-2.2-3.6-3.1-5.7-2.1"/><path d="m10 18c-.2.1-.4.2-.6.4 1.8-.5 3.7.4 4.5 2.2l7.5 15.7 2.2 1.3-8.4-17.6c-.9-2.1-3.2-3-5.2-2"/></g><path d="m60.8 15c-2.7-2.1-7.1.2-9.3 7.4-1.5 5-1.7 6.5-4.9 8l-1.8-3.7c0 0-28.4 13.7-27.3 15.9 0 0 3.4 10.6 9.2 15.5 8.6 7.4 28.7-.5 29.6-19.6.5-11.1 7.4-21.2 4.5-23.5" fill="#ffdd67"/><g fill="#eba352"><path d="m60.8 15c-.5-.4-1.1-.6-1.7-.7.1.1.3.1.4.2 3 2.3-.1 7.6-1.8 12.4-1.4 3.8-2.6 7.7-2.4 11.5.8 16.6-15.9 24.5-25.9 21.5 9.8 4.1 28-3.7 27.2-21-.2-3.8.9-7.5 2.4-11.5 1.6-4.8 4.7-10.1 1.8-12.4"/><path d="m47.5 30c-6.2.7-15.3 9.6-8.9 19.3-4.7-9.8 3-16.4 7.9-18.7.5-.4 1-.6 1-.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44c-1f3fb.svg b/riot/emojione/svg/1f44c-1f3fb.svg new file mode 100644 index 0000000..988b464 --- /dev/null +++ b/riot/emojione/svg/1f44c-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m48.6 32.8l-6.6 4.7c0 0-3.3-9.2-5.8-15.1-1-2.4-4.2-3.2-5.7-6.6-2.6-5.8.5-10.8 3.5-7.2 3.5 4.2 8.7 7.3 9.8 9.7 1.7 4 4.8 14.5 4.8 14.5"/><path d="m53.8 36.6c.5 3.2.1 8.1-2.7 13.9 0 0-5.7-6.8-6.4-10 0 0-1.6-11.9-3.3-19.5-.7-3.1-4.3-4.9-5.2-9.3-1.6-7.6 3.2-12.9 6-7.8 3.2 5.9 8.6 10.9 9.3 14 1.2 5.3 1.7 14.1 2.3 18.7"/></g><path d="m45.4 30.6c0 0-.5-4.5-2.2-12.1-.7-3.1-4.3-4.9-5.2-9.3-.6-2.6-.4-5 .3-6.7-1.7 1.3-3.1 4.9-2.2 9.3.9 4.4 4.6 6.2 5.2 9.3.7 3.3 1.3 6.7 1.3 6.7l-5-1.9 7.8 4.7" fill="#e6b796"/><path d="m51.4 35.4c-6.6-6-14-9.7-18.8-12-7.1-3.5-5.2 1.3-17.3 4.5-1.6.4-3.5 1.6-2 4.6 1.4 2.9 12.8.7 14.6-1 0 0 4.8 5.9 9.6 5.7 0 0-.8 3.9.3 5.8 0 0-6.8 3.5-9.7 6.6l-8-5.4c-.6-8.3-2.1-10.8-6.2-10.4-3.8.4-3.4 4-3.3 6.9.1 5.3-1.3 6.2 0 8.3 4.9 8 11.2 13 22.8 13 4.3 0 7.1-.1 9.8-1.4 4.4-2.3 15.5-18.5 8.2-25.2" fill="#ffe1bd"/><g fill="#e6b796"><path d="m52.7 37c2.5 7.6-6.4 20.1-10.3 22-2.7 1.3-5.4 1.4-9.8 1.4-11.5 0-17.7-4.9-22.6-12.8.1.4.3.9.5 1.3 5 8.1 11.3 13.1 22.9 13.1 4.3 0 7.1-.1 9.8-1.4 4.1-2.1 14-16.2 9.5-23.6"/><path d="m18.6 44.4c0 0 7.5 4.8 9.3 5.1l-7.9-5.3c.3-8.4-2.1-11.1-6.2-10.4-.3.1-.6.1-.9.2 4.1-.5 6 2.2 5.7 10.4"/><path d="m27.9 31.5c0 0 4.8 5.8 9.6 5.7v-1.1c-4.8.1-9.6-5.7-9.6-5.7-1.8 1.8-13.2 4-14.6 1-.2-.5-.4-1-.5-1.4-.1.6 0 1.4.5 2.5 1.4 2.9 12.8.7 14.6-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44c-1f3fc.svg b/riot/emojione/svg/1f44c-1f3fc.svg new file mode 100644 index 0000000..c03cb35 --- /dev/null +++ b/riot/emojione/svg/1f44c-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m48.6 32.8l-6.6 4.7c0 0-3.3-9.2-5.8-15.1-1-2.4-4.2-3.2-5.7-6.6-2.6-5.8.5-10.8 3.5-7.2 3.5 4.2 8.7 7.3 9.8 9.7 1.7 4 4.8 14.5 4.8 14.5"/><path d="m53.8 36.6c.5 3.2.1 8.1-2.7 13.9 0 0-5.7-6.8-6.4-10 0 0-1.6-11.9-3.3-19.5-.7-3.1-4.3-4.9-5.2-9.3-1.6-7.6 3.2-12.9 6-7.8 3.2 5.9 8.6 10.9 9.3 14 1.2 5.3 1.7 14.1 2.3 18.7"/></g><path d="m45.4 30.6c0 0-.5-4.5-2.2-12.1-.7-3.1-4.3-4.9-5.2-9.3-.6-2.6-.4-5 .3-6.7-1.7 1.3-3.1 4.9-2.2 9.3.9 4.4 4.6 6.2 5.2 9.3.7 3.3 1.3 6.7 1.3 6.7l-5-1.9 7.8 4.7" fill="#e0a372"/><path d="m51.4 35.4c-6.6-6-14-9.7-18.8-12-7.1-3.5-5.2 1.3-17.3 4.5-1.6.4-3.5 1.6-2 4.6 1.4 2.9 12.8.7 14.6-1 0 0 4.8 5.9 9.6 5.7 0 0-.8 3.9.3 5.8 0 0-6.8 3.5-9.7 6.6l-8-5.4c-.6-8.3-2.1-10.8-6.2-10.4-3.8.4-3.4 4-3.3 6.9.1 5.3-1.3 6.2 0 8.3 4.9 8 11.2 13 22.8 13 4.3 0 7.1-.1 9.8-1.4 4.4-2.3 15.5-18.5 8.2-25.2" fill="#fed0ac"/><g fill="#e0a372"><path d="m52.7 37c2.5 7.6-6.4 20.1-10.3 22-2.7 1.3-5.4 1.4-9.8 1.4-11.5 0-17.7-4.9-22.6-12.8.1.4.3.9.5 1.3 5 8.1 11.3 13.1 22.9 13.1 4.3 0 7.1-.1 9.8-1.4 4.1-2.1 14-16.2 9.5-23.6"/><path d="m18.6 44.4c0 0 7.5 4.8 9.3 5.1l-7.9-5.3c.3-8.4-2.1-11.1-6.2-10.4-.3.1-.6.1-.9.2 4.1-.5 6 2.2 5.7 10.4"/><path d="m27.9 31.5c0 0 4.8 5.8 9.6 5.7v-1.1c-4.8.1-9.6-5.7-9.6-5.7-1.8 1.8-13.2 4-14.6 1-.2-.5-.4-1-.5-1.4-.1.6 0 1.4.5 2.5 1.4 2.9 12.8.7 14.6-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44c-1f3fd.svg b/riot/emojione/svg/1f44c-1f3fd.svg new file mode 100644 index 0000000..e6d0d54 --- /dev/null +++ b/riot/emojione/svg/1f44c-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m48.6 32.8l-6.6 4.7c0 0-3.3-9.2-5.8-15.1-1-2.4-4.2-3.2-5.7-6.6-2.6-5.8.5-10.8 3.5-7.2 3.5 4.2 8.7 7.3 9.8 9.7 1.7 4 4.8 14.5 4.8 14.5"/><path d="m53.8 36.6c.5 3.2.1 8.1-2.7 13.9 0 0-5.7-6.8-6.4-10 0 0-1.6-11.9-3.3-19.5-.7-3.1-4.3-4.9-5.2-9.3-1.6-7.6 3.2-12.9 6-7.8 3.2 5.9 8.6 10.9 9.3 14 1.2 5.3 1.7 14.1 2.3 18.7"/></g><path d="m45.4 30.6c0 0-.5-4.5-2.2-12.1-.7-3.1-4.3-4.9-5.2-9.3-.6-2.6-.4-5 .3-6.7-1.7 1.3-3.1 4.9-2.2 9.3.9 4.4 4.6 6.2 5.2 9.3.7 3.3 1.3 6.7 1.3 6.7l-5-1.9 7.8 4.7" fill="#b58360"/><path d="m51.4 35.4c-6.6-6-14-9.7-18.8-12-7.1-3.5-5.2 1.3-17.3 4.5-1.6.4-3.5 1.6-2 4.6 1.4 2.9 12.8.7 14.6-1 0 0 4.8 5.9 9.6 5.7 0 0-.8 3.9.3 5.8 0 0-6.8 3.5-9.7 6.6l-8-5.4c-.6-8.3-2.1-10.8-6.2-10.4-3.8.4-3.4 4-3.3 6.9.1 5.3-1.3 6.2 0 8.3 4.9 8 11.2 13 22.8 13 4.3 0 7.1-.1 9.8-1.4 4.4-2.3 15.5-18.5 8.2-25.2" fill="#d6a57c"/><g fill="#b58360"><path d="m52.7 37c2.5 7.6-6.4 20.1-10.3 22-2.7 1.3-5.4 1.4-9.8 1.4-11.5 0-17.7-4.9-22.6-12.8.1.4.3.9.5 1.3 5 8.1 11.3 13.1 22.9 13.1 4.3 0 7.1-.1 9.8-1.4 4.1-2.1 14-16.2 9.5-23.6"/><path d="m18.6 44.4c0 0 7.5 4.8 9.3 5.1l-7.9-5.3c.3-8.4-2.1-11.1-6.2-10.4-.3.1-.6.1-.9.2 4.1-.5 6 2.2 5.7 10.4"/><path d="m27.9 31.5c0 0 4.8 5.8 9.6 5.7v-1.1c-4.8.1-9.6-5.7-9.6-5.7-1.8 1.8-13.2 4-14.6 1-.2-.5-.4-1-.5-1.4-.1.6 0 1.4.5 2.5 1.4 2.9 12.8.7 14.6-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44c-1f3fe.svg b/riot/emojione/svg/1f44c-1f3fe.svg new file mode 100644 index 0000000..c28d64a --- /dev/null +++ b/riot/emojione/svg/1f44c-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m48.6 32.8l-6.6 4.7c0 0-3.3-9.2-5.8-15.1-1-2.4-4.2-3.2-5.7-6.6-2.6-5.8.5-10.8 3.5-7.2 3.5 4.2 8.7 7.3 9.8 9.7 1.7 4 4.8 14.5 4.8 14.5"/><path d="m53.8 36.6c.5 3.2.1 8.1-2.7 13.9 0 0-5.7-6.8-6.4-10 0 0-1.6-11.9-3.3-19.5-.7-3.1-4.3-4.9-5.2-9.3-1.6-7.6 3.2-12.9 6-7.8 3.2 5.9 8.6 10.9 9.3 14 1.2 5.3 1.7 14.1 2.3 18.7"/></g><path d="m45.4 30.6c0 0-.5-4.5-2.2-12.1-.7-3.1-4.3-4.9-5.2-9.3-.6-2.6-.4-5 .3-6.7-1.7 1.3-3.1 4.9-2.2 9.3.9 4.4 4.6 6.2 5.2 9.3.7 3.3 1.3 6.7 1.3 6.7l-5-1.9 7.8 4.7" fill="#935e3e"/><path d="m51.4 35.4c-6.6-6-14-9.7-18.8-12-7.1-3.5-5.2 1.3-17.3 4.5-1.6.4-3.5 1.6-2 4.6 1.4 2.9 12.8.7 14.6-1 0 0 4.8 5.9 9.6 5.7 0 0-.8 3.9.3 5.8 0 0-6.8 3.5-9.7 6.6l-8-5.4c-.6-8.3-2.1-10.8-6.2-10.4-3.8.4-3.4 4-3.3 6.9.1 5.3-1.3 6.2 0 8.3 4.9 8 11.2 13 22.8 13 4.3 0 7.1-.1 9.8-1.4 4.4-2.3 15.5-18.5 8.2-25.2" fill="#b47d56"/><g fill="#935e3e"><path d="m52.7 37c2.5 7.6-6.4 20.1-10.3 22-2.7 1.3-5.4 1.4-9.8 1.4-11.5 0-17.7-4.9-22.6-12.8.1.4.3.9.5 1.3 5 8.1 11.3 13.1 22.9 13.1 4.3 0 7.1-.1 9.8-1.4 4.1-2.1 14-16.2 9.5-23.6"/><path d="m18.6 44.4c0 0 7.5 4.8 9.3 5.1l-7.9-5.3c.3-8.4-2.1-11.1-6.2-10.4-.3.1-.6.1-.9.2 4.1-.5 6 2.2 5.7 10.4"/><path d="m27.9 31.5c0 0 4.8 5.8 9.6 5.7v-1.1c-4.8.1-9.6-5.7-9.6-5.7-1.8 1.8-13.2 4-14.6 1-.2-.5-.4-1-.5-1.4-.1.6 0 1.4.5 2.5 1.4 2.9 12.8.7 14.6-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44c-1f3ff.svg b/riot/emojione/svg/1f44c-1f3ff.svg new file mode 100644 index 0000000..6d2a3a4 --- /dev/null +++ b/riot/emojione/svg/1f44c-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m48.6 32.8l-6.6 4.7c0 0-3.3-9.2-5.8-15.1-1-2.4-4.2-3.2-5.7-6.6-2.6-5.8.5-10.8 3.5-7.2 3.5 4.2 8.7 7.3 9.8 9.7 1.7 4 4.8 14.5 4.8 14.5"/><path d="m53.8 36.6c.5 3.2.1 8.1-2.7 13.9 0 0-5.7-6.8-6.4-10 0 0-1.6-11.9-3.3-19.5-.7-3.1-4.3-4.9-5.2-9.3-1.6-7.6 3.2-12.9 6-7.8 3.2 5.9 8.6 10.9 9.3 14 1.2 5.3 1.7 14.1 2.3 18.7"/></g><path d="m45.4 30.6c0 0-.5-4.5-2.2-12.1-.7-3.1-4.3-4.9-5.2-9.3-.6-2.6-.4-5 .3-6.7-1.7 1.3-3.1 4.9-2.2 9.3.9 4.4 4.6 6.2 5.2 9.3.7 3.3 1.3 6.7 1.3 6.7l-5-1.9 7.8 4.7" fill="#705041"/><path d="m51.4 35.4c-6.6-6-14-9.7-18.8-12-7.1-3.5-5.2 1.3-17.3 4.5-1.6.4-3.5 1.6-2 4.6 1.4 2.9 12.8.7 14.6-1 0 0 4.8 5.9 9.6 5.7 0 0-.8 3.9.3 5.8 0 0-6.8 3.5-9.7 6.6l-8-5.4c-.6-8.3-2.1-10.8-6.2-10.4-3.8.4-3.4 4-3.3 6.9.1 5.3-1.3 6.2 0 8.3 4.9 8 11.2 13 22.8 13 4.3 0 7.1-.1 9.8-1.4 4.4-2.3 15.5-18.5 8.2-25.2" fill="#8a6859"/><g fill="#705041"><path d="m52.7 37c2.5 7.6-6.4 20.1-10.3 22-2.7 1.3-5.4 1.4-9.8 1.4-11.5 0-17.7-4.9-22.6-12.8.1.4.3.9.5 1.3 5 8.1 11.3 13.1 22.9 13.1 4.3 0 7.1-.1 9.8-1.4 4.1-2.1 14-16.2 9.5-23.6"/><path d="m18.6 44.4c0 0 7.5 4.8 9.3 5.1l-7.9-5.3c.3-8.4-2.1-11.1-6.2-10.4-.3.1-.6.1-.9.2 4.1-.5 6 2.2 5.7 10.4"/><path d="m27.9 31.5c0 0 4.8 5.8 9.6 5.7v-1.1c-4.8.1-9.6-5.7-9.6-5.7-1.8 1.8-13.2 4-14.6 1-.2-.5-.4-1-.5-1.4-.1.6 0 1.4.5 2.5 1.4 2.9 12.8.7 14.6-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44c.svg b/riot/emojione/svg/1f44c.svg new file mode 100644 index 0000000..bb3a066 --- /dev/null +++ b/riot/emojione/svg/1f44c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m48.6 32.8l-6.6 4.7c0 0-3.3-9.2-5.8-15.1-1-2.4-4.2-3.2-5.7-6.6-2.6-5.8.5-10.8 3.5-7.2 3.5 4.2 8.7 7.3 9.8 9.7 1.7 4 4.8 14.5 4.8 14.5"/><path d="m53.8 36.6c.5 3.2.1 8.1-2.7 13.9 0 0-5.7-6.8-6.4-10 0 0-1.6-11.9-3.3-19.5-.7-3.1-4.3-4.9-5.2-9.3-1.6-7.6 3.2-12.9 6-7.8 3.2 5.9 8.6 10.9 9.3 14 1.2 5.3 1.7 14.1 2.3 18.7"/></g><path d="m45.4 30.6c0 0-.5-4.5-2.2-12.1-.7-3.1-4.3-4.9-5.2-9.3-.6-2.6-.4-5 .3-6.7-1.7 1.3-3.1 4.9-2.2 9.3.9 4.4 4.6 6.2 5.2 9.3.7 3.3 1.3 6.7 1.3 6.7l-5-1.9 7.8 4.7" fill="#eba352"/><path d="m51.4 35.4c-6.6-6-14-9.7-18.8-12-7.1-3.5-5.2 1.3-17.3 4.5-1.6.4-3.5 1.6-2 4.6 1.4 2.9 12.8.7 14.6-1 0 0 4.8 5.9 9.6 5.7 0 0-.8 3.9.3 5.8 0 0-6.8 3.5-9.7 6.6l-8-5.4c-.6-8.3-2.1-10.8-6.2-10.4-3.8.4-3.4 4-3.3 6.9.1 5.3-1.3 6.2 0 8.3 4.9 8 11.2 13 22.8 13 4.3 0 7.1-.1 9.8-1.4 4.4-2.3 15.5-18.5 8.2-25.2" fill="#ffdd67"/><g fill="#eba352"><path d="m52.7 37c2.5 7.6-6.4 20.1-10.3 22-2.7 1.3-5.4 1.4-9.8 1.4-11.5 0-17.7-4.9-22.6-12.8.1.4.3.9.5 1.3 5 8.1 11.3 13.1 22.9 13.1 4.3 0 7.1-.1 9.8-1.4 4.1-2.1 14-16.2 9.5-23.6"/><path d="m18.6 44.4c0 0 7.5 4.8 9.3 5.1l-7.9-5.3c.3-8.4-2.1-11.1-6.2-10.4-.3.1-.6.1-.9.2 4.1-.5 6 2.2 5.7 10.4"/><path d="m27.9 31.5c0 0 4.8 5.8 9.6 5.7v-1.1c-4.8.1-9.6-5.7-9.6-5.7-1.8 1.8-13.2 4-14.6 1-.2-.5-.4-1-.5-1.4-.1.6 0 1.4.5 2.5 1.4 2.9 12.8.7 14.6-1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44d-1f3fb.svg b/riot/emojione/svg/1f44d-1f3fb.svg new file mode 100644 index 0000000..c50c59f --- /dev/null +++ b/riot/emojione/svg/1f44d-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 27.1c0 0-4.4.9-.8-6.6 2.6-5.4 2.3-11.7 0-15-3.8-5.3-11.1-3.6-10.3-.5 2.6 10.5-3.3 13.7-6.3 20.3-3.1 6.7-2.8 16.3-1.4 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5l-4.2-34.9" fill="#ffe1bd"/><path d="m25.8 60.5c-8.3 0-10.1-6.6-11-11.9-1.4-8.5-1.6-15.3 1.1-22.2 3-7.5 6.1-7.7 6.1-22.5 0-.7.4-1.2.8-1.6-1.4.5-2.2 1.3-2.2 2.5 0 11.1-3.1 13.8-6.1 20.5-3.2 6.7-2.9 16.3-1.5 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5v-1.5h-10.2" fill="#e6b796"/><path d="m46 35.8h-14.2c-5 0-5-8.7 0-8.7h14.2c5 0 5 8.7 0 8.7" fill="#ffe1bd"/><path d="m47.1 34.4h-14.2c-3.4 0-4.4-4-3.3-6.5-2.7 2.1-1.9 8 2.1 8h14.3c1.6 0 2.7-.9 3.3-2.2-.6.4-1.3.7-2.2.7" fill="#e6b796"/><path d="m47.5 44.6h-17c-6 0-6-8.7 0-8.7h17.1c5.9 0 5.9 8.7-.1 8.7" fill="#ffe1bd"/><path d="m48.9 43.1h-17.1c-4 0-5.3-4-3.9-6.5-3.2 2.1-2.3 8 2.6 8h17.1c1.9 0 3.2-.9 3.9-2.2-.7.4-1.6.7-2.6.7" fill="#e6b796"/><path d="m45.9 53.3h-14.4c-5 0-5-8.7 0-8.7h14.4c5.1 0 5.1 8.7 0 8.7" fill="#ffe1bd"/><path d="m47.1 51.8h-14.5c-3.4 0-4.5-4-3.3-6.6-2.7 2.1-2 8 2.2 8h14.4c1.6 0 2.7-.9 3.3-2.2-.5.6-1.3.8-2.1.8" fill="#e6b796"/><path d="m44.4 62h-9.3c-5.4 0-5.4-8.7 0-8.7h9.3c5.4 0 5.4 8.7 0 8.7" fill="#ffe1bd"/><path d="m45.6 60.6h-9.3c-3.6 0-4.8-4-3.5-6.6-2.9 2.1-2.1 8 2.3 8h9.3c1.8 0 2.9-.9 3.5-2.2-.6.5-1.4.8-2.3.8" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44d-1f3fc.svg b/riot/emojione/svg/1f44d-1f3fc.svg new file mode 100644 index 0000000..54d7d6a --- /dev/null +++ b/riot/emojione/svg/1f44d-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 27.1c0 0-4.4.9-.8-6.6 2.6-5.4 2.3-11.7 0-15-3.8-5.3-11.1-3.6-10.3-.5 2.6 10.5-3.3 13.7-6.3 20.3-3.1 6.7-2.8 16.3-1.4 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5l-4.2-34.9" fill="#fed0ac"/><path d="m25.8 60.5c-8.3 0-10.1-6.6-11-11.9-1.4-8.5-1.6-15.3 1.1-22.2 3-7.5 6.1-7.7 6.1-22.5 0-.7.4-1.2.8-1.6-1.4.5-2.2 1.3-2.2 2.5 0 11.1-3.1 13.8-6.1 20.5-3.2 6.7-2.9 16.3-1.5 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5v-1.5h-10.2" fill="#e0a372"/><path d="m46 35.8h-14.2c-5 0-5-8.7 0-8.7h14.2c5 0 5 8.7 0 8.7" fill="#fed0ac"/><path d="m47.1 34.4h-14.2c-3.4 0-4.4-4-3.3-6.5-2.7 2.1-1.9 8 2.1 8h14.3c1.6 0 2.7-.9 3.3-2.2-.6.4-1.3.7-2.2.7" fill="#e0a372"/><path d="m47.5 44.6h-17c-6 0-6-8.7 0-8.7h17.1c5.9 0 5.9 8.7-.1 8.7" fill="#fed0ac"/><path d="m48.9 43.1h-17.1c-4 0-5.3-4-3.9-6.5-3.2 2.1-2.3 8 2.6 8h17.1c1.9 0 3.2-.9 3.9-2.2-.7.4-1.6.7-2.6.7" fill="#e0a372"/><path d="m45.9 53.3h-14.4c-5 0-5-8.7 0-8.7h14.4c5.1 0 5.1 8.7 0 8.7" fill="#fed0ac"/><path d="m47.1 51.8h-14.5c-3.4 0-4.5-4-3.3-6.6-2.7 2.1-2 8 2.2 8h14.4c1.6 0 2.7-.9 3.3-2.2-.5.6-1.3.8-2.1.8" fill="#e0a372"/><path d="m44.4 62h-9.3c-5.4 0-5.4-8.7 0-8.7h9.3c5.4 0 5.4 8.7 0 8.7" fill="#fed0ac"/><path d="m45.6 60.6h-9.3c-3.6 0-4.8-4-3.5-6.6-2.9 2.1-2.1 8 2.3 8h9.3c1.8 0 2.9-.9 3.5-2.2-.6.5-1.4.8-2.3.8" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44d-1f3fd.svg b/riot/emojione/svg/1f44d-1f3fd.svg new file mode 100644 index 0000000..1fc72eb --- /dev/null +++ b/riot/emojione/svg/1f44d-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 27.1c0 0-4.4.9-.8-6.6 2.6-5.4 2.3-11.7 0-15-3.8-5.3-11.1-3.6-10.3-.5 2.6 10.5-3.3 13.7-6.3 20.3-3.1 6.7-2.8 16.3-1.4 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5l-4.2-34.9" fill="#d6a57c"/><path d="m25.8 60.5c-8.3 0-10.1-6.6-11-11.9-1.4-8.5-1.6-15.3 1.1-22.2 3-7.5 6.1-7.7 6.1-22.5 0-.7.4-1.2.8-1.6-1.4.5-2.2 1.3-2.2 2.5 0 11.1-3.1 13.8-6.1 20.5-3.2 6.7-2.9 16.3-1.5 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5v-1.5h-10.2" fill="#b58360"/><path d="m46 35.8h-14.2c-5 0-5-8.7 0-8.7h14.2c5 0 5 8.7 0 8.7" fill="#d6a57c"/><path d="m47.1 34.4h-14.2c-3.4 0-4.4-4-3.3-6.5-2.7 2.1-1.9 8 2.1 8h14.3c1.6 0 2.7-.9 3.3-2.2-.6.4-1.3.7-2.2.7" fill="#b58360"/><path d="m47.5 44.6h-17c-6 0-6-8.7 0-8.7h17.1c5.9 0 5.9 8.7-.1 8.7" fill="#d6a57c"/><path d="m48.9 43.1h-17.1c-4 0-5.3-4-3.9-6.5-3.2 2.1-2.3 8 2.6 8h17.1c1.9 0 3.2-.9 3.9-2.2-.7.4-1.6.7-2.6.7" fill="#b58360"/><path d="m45.9 53.3h-14.4c-5 0-5-8.7 0-8.7h14.4c5.1 0 5.1 8.7 0 8.7" fill="#d6a57c"/><path d="m47.1 51.8h-14.5c-3.4 0-4.5-4-3.3-6.6-2.7 2.1-2 8 2.2 8h14.4c1.6 0 2.7-.9 3.3-2.2-.5.6-1.3.8-2.1.8" fill="#b58360"/><path d="m44.4 62h-9.3c-5.4 0-5.4-8.7 0-8.7h9.3c5.4 0 5.4 8.7 0 8.7" fill="#d6a57c"/><path d="m45.6 60.6h-9.3c-3.6 0-4.8-4-3.5-6.6-2.9 2.1-2.1 8 2.3 8h9.3c1.8 0 2.9-.9 3.5-2.2-.6.5-1.4.8-2.3.8" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44d-1f3fe.svg b/riot/emojione/svg/1f44d-1f3fe.svg new file mode 100644 index 0000000..4db4b58 --- /dev/null +++ b/riot/emojione/svg/1f44d-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 27.1c0 0-4.4.9-.8-6.6 2.6-5.4 2.3-11.7 0-15-3.8-5.3-11.1-3.6-10.3-.5 2.6 10.5-3.3 13.7-6.3 20.3-3.1 6.7-2.8 16.3-1.4 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5l-4.2-34.9" fill="#b47d56"/><path d="m25.8 60.5c-8.3 0-10.1-6.6-11-11.9-1.4-8.5-1.6-15.3 1.1-22.2 3-7.5 6.1-7.7 6.1-22.5 0-.7.4-1.2.8-1.6-1.4.5-2.2 1.3-2.2 2.5 0 11.1-3.1 13.8-6.1 20.5-3.2 6.7-2.9 16.3-1.5 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5v-1.5h-10.2" fill="#935e3e"/><path d="m46 35.8h-14.2c-5 0-5-8.7 0-8.7h14.2c5 0 5 8.7 0 8.7" fill="#b47d56"/><path d="m47.1 34.4h-14.2c-3.4 0-4.4-4-3.3-6.5-2.7 2.1-1.9 8 2.1 8h14.3c1.6 0 2.7-.9 3.3-2.2-.6.4-1.3.7-2.2.7" fill="#935e3e"/><path d="m47.5 44.6h-17c-6 0-6-8.7 0-8.7h17.1c5.9 0 5.9 8.7-.1 8.7" fill="#b47d56"/><path d="m48.9 43.1h-17.1c-4 0-5.3-4-3.9-6.5-3.2 2.1-2.3 8 2.6 8h17.1c1.9 0 3.2-.9 3.9-2.2-.7.4-1.6.7-2.6.7" fill="#935e3e"/><path d="m45.9 53.3h-14.4c-5 0-5-8.7 0-8.7h14.4c5.1 0 5.1 8.7 0 8.7" fill="#b47d56"/><path d="m47.1 51.8h-14.5c-3.4 0-4.5-4-3.3-6.6-2.7 2.1-2 8 2.2 8h14.4c1.6 0 2.7-.9 3.3-2.2-.5.6-1.3.8-2.1.8" fill="#935e3e"/><path d="m44.4 62h-9.3c-5.4 0-5.4-8.7 0-8.7h9.3c5.4 0 5.4 8.7 0 8.7" fill="#b47d56"/><path d="m45.6 60.6h-9.3c-3.6 0-4.8-4-3.5-6.6-2.9 2.1-2.1 8 2.3 8h9.3c1.8 0 2.9-.9 3.5-2.2-.6.5-1.4.8-2.3.8" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44d-1f3ff.svg b/riot/emojione/svg/1f44d-1f3ff.svg new file mode 100644 index 0000000..e64edfb --- /dev/null +++ b/riot/emojione/svg/1f44d-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 27.1c0 0-4.4.9-.8-6.6 2.6-5.4 2.3-11.7 0-15-3.8-5.3-11.1-3.6-10.3-.5 2.6 10.5-3.3 13.7-6.3 20.3-3.1 6.7-2.8 16.3-1.4 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5l-4.2-34.9" fill="#8a6859"/><path d="m25.8 60.5c-8.3 0-10.1-6.6-11-11.9-1.4-8.5-1.6-15.3 1.1-22.2 3-7.5 6.1-7.7 6.1-22.5 0-.7.4-1.2.8-1.6-1.4.5-2.2 1.3-2.2 2.5 0 11.1-3.1 13.8-6.1 20.5-3.2 6.7-2.9 16.3-1.5 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5v-1.5h-10.2" fill="#705041"/><path d="m46 35.8h-14.2c-5 0-5-8.7 0-8.7h14.2c5 0 5 8.7 0 8.7" fill="#8a6859"/><path d="m47.1 34.4h-14.2c-3.4 0-4.4-4-3.3-6.5-2.7 2.1-1.9 8 2.1 8h14.3c1.6 0 2.7-.9 3.3-2.2-.6.4-1.3.7-2.2.7" fill="#705041"/><path d="m47.5 44.6h-17c-6 0-6-8.7 0-8.7h17.1c5.9 0 5.9 8.7-.1 8.7" fill="#8a6859"/><path d="m48.9 43.1h-17.1c-4 0-5.3-4-3.9-6.5-3.2 2.1-2.3 8 2.6 8h17.1c1.9 0 3.2-.9 3.9-2.2-.7.4-1.6.7-2.6.7" fill="#705041"/><path d="m45.9 53.3h-14.4c-5 0-5-8.7 0-8.7h14.4c5.1 0 5.1 8.7 0 8.7" fill="#8a6859"/><path d="m47.1 51.8h-14.5c-3.4 0-4.5-4-3.3-6.6-2.7 2.1-2 8 2.2 8h14.4c1.6 0 2.7-.9 3.3-2.2-.5.6-1.3.8-2.1.8" fill="#705041"/><path d="m44.4 62h-9.3c-5.4 0-5.4-8.7 0-8.7h9.3c5.4 0 5.4 8.7 0 8.7" fill="#8a6859"/><path d="m45.6 60.6h-9.3c-3.6 0-4.8-4-3.5-6.6-2.9 2.1-2.1 8 2.3 8h9.3c1.8 0 2.9-.9 3.5-2.2-.6.5-1.4.8-2.3.8" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44d.svg b/riot/emojione/svg/1f44d.svg new file mode 100644 index 0000000..100df67 --- /dev/null +++ b/riot/emojione/svg/1f44d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 27.1c0 0-4.4.9-.8-6.6 2.6-5.4 2.3-11.7 0-15-3.8-5.3-11.1-3.6-10.3-.5 2.6 10.5-3.3 13.7-6.3 20.3-3.1 6.7-2.8 16.3-1.4 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5l-4.2-34.9" fill="#ffdd67"/><path d="m25.8 60.5c-8.3 0-10.1-6.6-11-11.9-1.4-8.5-1.6-15.3 1.1-22.2 3-7.5 6.1-7.7 6.1-22.5 0-.7.4-1.2.8-1.6-1.4.5-2.2 1.3-2.2 2.5 0 11.1-3.1 13.8-6.1 20.5-3.2 6.7-2.9 16.3-1.5 24.8.9 5.3 3.2 11.9 11.5 11.9h11.5v-1.5h-10.2" fill="#eba352"/><path d="m46 35.8h-14.2c-5 0-5-8.7 0-8.7h14.2c5 0 5 8.7 0 8.7" fill="#ffdd67"/><path d="m47.1 34.4h-14.2c-3.4 0-4.4-4-3.3-6.5-2.7 2.1-1.9 8 2.1 8h14.3c1.6 0 2.7-.9 3.3-2.2-.6.4-1.3.7-2.2.7" fill="#eba352"/><path d="m47.5 44.6h-17c-6 0-6-8.7 0-8.7h17.1c5.9 0 5.9 8.7-.1 8.7" fill="#ffdd67"/><path d="m48.9 43.1h-17.1c-4 0-5.3-4-3.9-6.5-3.2 2.1-2.3 8 2.6 8h17.1c1.9 0 3.2-.9 3.9-2.2-.7.4-1.6.7-2.6.7" fill="#eba352"/><path d="m45.9 53.3h-14.4c-5 0-5-8.7 0-8.7h14.4c5.1 0 5.1 8.7 0 8.7" fill="#ffdd67"/><path d="m47.1 51.8h-14.5c-3.4 0-4.5-4-3.3-6.6-2.7 2.1-2 8 2.2 8h14.4c1.6 0 2.7-.9 3.3-2.2-.5.6-1.3.8-2.1.8" fill="#eba352"/><path d="m44.4 62h-9.3c-5.4 0-5.4-8.7 0-8.7h9.3c5.4 0 5.4 8.7 0 8.7" fill="#ffdd67"/><path d="m45.6 60.6h-9.3c-3.6 0-4.8-4-3.5-6.6-2.9 2.1-2.1 8 2.3 8h9.3c1.8 0 2.9-.9 3.5-2.2-.6.5-1.4.8-2.3.8" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44e-1f3fb.svg b/riot/emojione/svg/1f44e-1f3fb.svg new file mode 100644 index 0000000..298cda3 --- /dev/null +++ b/riot/emojione/svg/1f44e-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 36.9c0 0-4.4-.9-.8 6.6 2.6 5.4 2.3 11.7 0 15-3.8 5.3-11.1 3.6-10.3.5 2.6-10.5-3.3-13.7-6.3-20.3-3.1-6.7-2.8-16.3-1.4-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5l-4.2 34.9" fill="#ffe1bd"/><path d="m25.8 3.5c-8.3 0-10.1 6.6-11 11.9-1.4 8.5-1.6 15.3 1.1 22.2 3 7.5 6.1 7.7 6.1 22.5 0 .7.4 1.2.8 1.6-1.4-.5-2.2-1.3-2.2-2.5 0-11.1-3.1-13.8-6.1-20.5-3.2-6.7-2.9-16.3-1.5-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5v1.5h-10.2" fill="#e6b796"/><path d="m46 28.2h-14.2c-5 0-5 8.7 0 8.7h14.2c5 0 5-8.7 0-8.7" fill="#ffe1bd"/><path d="m47.1 29.6h-14.2c-3.4 0-4.4 4-3.3 6.5-2.7-2.1-1.9-8 2.1-8h14.3c1.6 0 2.7.9 3.3 2.2-.6-.4-1.3-.7-2.2-.7" fill="#e6b796"/><path d="m47.5 19.4h-17c-6 0-6 8.7 0 8.7h17.1c5.9 0 5.9-8.7-.1-8.7" fill="#ffe1bd"/><path d="m48.9 20.9h-17.1c-4 0-5.3 4-3.9 6.5-3.2-2.1-2.3-8 2.6-8h17.1c1.9 0 3.2.9 3.9 2.2-.7-.4-1.6-.7-2.6-.7" fill="#e6b796"/><path d="m45.9 10.7h-14.4c-5 0-5 8.7 0 8.7h14.4c5.1 0 5.1-8.7 0-8.7" fill="#ffe1bd"/><path d="m47.1 12.2h-14.5c-3.4 0-4.5 4-3.3 6.6-2.7-2.1-2-8 2.2-8h14.4c1.6 0 2.7.9 3.3 2.2-.5-.6-1.3-.8-2.1-.8" fill="#e6b796"/><path d="m44.4 2h-9.3c-5.4 0-5.4 8.7 0 8.7h9.3c5.4 0 5.4-8.7 0-8.7" fill="#ffe1bd"/><path d="m45.6 3.4h-9.3c-3.6 0-4.8 4-3.5 6.6-2.9-2.1-2.1-8 2.3-8h9.3c1.8 0 2.9.9 3.5 2.2-.6-.5-1.4-.8-2.3-.8" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44e-1f3fc.svg b/riot/emojione/svg/1f44e-1f3fc.svg new file mode 100644 index 0000000..79398ad --- /dev/null +++ b/riot/emojione/svg/1f44e-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 36.9c0 0-4.4-.9-.8 6.6 2.6 5.4 2.3 11.7 0 15-3.8 5.3-11.1 3.6-10.3.5 2.6-10.5-3.3-13.7-6.3-20.3-3.1-6.7-2.8-16.3-1.4-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5l-4.2 34.9" fill="#fed0ac"/><path d="m25.8 3.5c-8.3 0-10.1 6.6-11 11.9-1.4 8.5-1.6 15.3 1.1 22.2 3 7.5 6.1 7.7 6.1 22.5 0 .7.4 1.2.8 1.6-1.4-.5-2.2-1.3-2.2-2.5 0-11.1-3.1-13.8-6.1-20.5-3.2-6.7-2.9-16.3-1.5-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5v1.5c0 0-10.2 0-10.2 0" fill="#e0a372"/><path d="m46 28.2h-14.2c-5 0-5 8.7 0 8.7h14.2c5 0 5-8.7 0-8.7" fill="#fed0ac"/><path d="m47.1 29.6h-14.2c-3.4 0-4.4 4-3.3 6.5-2.7-2.1-1.9-8 2.1-8h14.3c1.6 0 2.7.9 3.3 2.2-.6-.4-1.3-.7-2.2-.7" fill="#e0a372"/><path d="m47.5 19.4h-17c-6 0-6 8.7 0 8.7h17.1c5.9 0 5.9-8.7-.1-8.7" fill="#fed0ac"/><path d="m48.9 20.9h-17.1c-4 0-5.3 4-3.9 6.5-3.2-2.1-2.3-8 2.6-8h17.1c1.9 0 3.2.9 3.9 2.2-.7-.4-1.6-.7-2.6-.7" fill="#e0a372"/><path d="m45.9 10.7h-14.4c-5 0-5 8.7 0 8.7h14.4c5.1 0 5.1-8.7 0-8.7" fill="#fed0ac"/><path d="m47.1 12.2h-14.5c-3.4 0-4.5 4-3.3 6.6-2.7-2.1-2-8 2.2-8h14.4c1.6 0 2.7.9 3.3 2.2-.5-.6-1.3-.8-2.1-.8" fill="#e0a372"/><path d="m44.4 2h-9.3c-5.4 0-5.4 8.7 0 8.7h9.3c5.4 0 5.4-8.7 0-8.7" fill="#fed0ac"/><path d="m45.6 3.4h-9.3c-3.6 0-4.8 4-3.5 6.6-2.9-2.1-2.1-8 2.3-8h9.3c1.8 0 2.9.9 3.5 2.2-.6-.5-1.4-.8-2.3-.8" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44e-1f3fd.svg b/riot/emojione/svg/1f44e-1f3fd.svg new file mode 100644 index 0000000..e0bf3be --- /dev/null +++ b/riot/emojione/svg/1f44e-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 36.9c0 0-4.4-.9-.8 6.6 2.6 5.4 2.3 11.7 0 15-3.8 5.3-11.1 3.6-10.3.5 2.6-10.5-3.3-13.7-6.3-20.3-3.1-6.7-2.8-16.3-1.4-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5l-4.2 34.9" fill="#d6a57c"/><path d="m25.8 3.5c-8.3 0-10.1 6.6-11 11.9-1.4 8.5-1.6 15.3 1.1 22.2 3 7.5 6.1 7.7 6.1 22.5 0 .7.4 1.2.8 1.6-1.4-.5-2.2-1.3-2.2-2.5 0-11.1-3.1-13.8-6.1-20.5-3.2-6.7-2.9-16.3-1.5-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5v1.5c0 0-10.2 0-10.2 0" fill="#b58360"/><path d="m46 28.2h-14.2c-5 0-5 8.7 0 8.7h14.2c5 0 5-8.7 0-8.7" fill="#d6a57c"/><path d="m47.1 29.6h-14.2c-3.4 0-4.4 4-3.3 6.5-2.7-2.1-1.9-8 2.1-8h14.3c1.6 0 2.7.9 3.3 2.2-.6-.4-1.3-.7-2.2-.7" fill="#b58360"/><path d="m47.5 19.4h-17c-6 0-6 8.7 0 8.7h17.1c5.9 0 5.9-8.7-.1-8.7" fill="#d6a57c"/><path d="m48.9 20.9h-17.1c-4 0-5.3 4-3.9 6.5-3.2-2.1-2.3-8 2.6-8h17.1c1.9 0 3.2.9 3.9 2.2-.7-.4-1.6-.7-2.6-.7" fill="#b58360"/><path d="m45.9 10.7h-14.4c-5 0-5 8.7 0 8.7h14.4c5.1 0 5.1-8.7 0-8.7" fill="#d6a57c"/><path d="m47.1 12.2h-14.5c-3.4 0-4.5 4-3.3 6.6-2.7-2.1-2-8 2.2-8h14.4c1.6 0 2.7.9 3.3 2.2-.5-.6-1.3-.8-2.1-.8" fill="#b58360"/><path d="m44.4 2h-9.3c-5.4 0-5.4 8.7 0 8.7h9.3c5.4 0 5.4-8.7 0-8.7" fill="#d6a57c"/><path d="m45.6 3.4h-9.3c-3.6 0-4.8 4-3.5 6.6-2.9-2.1-2.1-8 2.3-8h9.3c1.8 0 2.9.9 3.5 2.2-.6-.5-1.4-.8-2.3-.8" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44e-1f3fe.svg b/riot/emojione/svg/1f44e-1f3fe.svg new file mode 100644 index 0000000..17fa30c --- /dev/null +++ b/riot/emojione/svg/1f44e-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 36.9c0 0-4.4-.9-.8 6.6 2.6 5.4 2.3 11.7 0 15-3.8 5.3-11.1 3.6-10.3.5 2.6-10.5-3.3-13.7-6.3-20.3-3.1-6.7-2.8-16.3-1.4-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5l-4.2 34.9" fill="#b47d56"/><path d="m25.8 3.5c-8.3 0-10.1 6.6-11 11.9-1.4 8.5-1.6 15.3 1.1 22.2 3 7.5 6.1 7.7 6.1 22.5 0 .7.4 1.2.8 1.6-1.4-.5-2.2-1.3-2.2-2.5 0-11.1-3.1-13.8-6.1-20.5-3.2-6.7-2.9-16.3-1.5-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5v1.5c0 0-10.2 0-10.2 0" fill="#935e3e"/><path d="m46 28.2h-14.2c-5 0-5 8.7 0 8.7h14.2c5 0 5-8.7 0-8.7" fill="#b47d56"/><path d="m47.1 29.6h-14.2c-3.4 0-4.4 4-3.3 6.5-2.7-2.1-1.9-8 2.1-8h14.3c1.6 0 2.7.9 3.3 2.2-.6-.4-1.3-.7-2.2-.7" fill="#935e3e"/><path d="m47.5 19.4h-17c-6 0-6 8.7 0 8.7h17.1c5.9 0 5.9-8.7-.1-8.7" fill="#b47d56"/><path d="m48.9 20.9h-17.1c-4 0-5.3 4-3.9 6.5-3.2-2.1-2.3-8 2.6-8h17.1c1.9 0 3.2.9 3.9 2.2-.7-.4-1.6-.7-2.6-.7" fill="#935e3e"/><path d="m45.9 10.7h-14.4c-5 0-5 8.7 0 8.7h14.4c5.1 0 5.1-8.7 0-8.7" fill="#b47d56"/><path d="m47.1 12.2h-14.5c-3.4 0-4.5 4-3.3 6.6-2.7-2.1-2-8 2.2-8h14.4c1.6 0 2.7.9 3.3 2.2-.5-.6-1.3-.8-2.1-.8" fill="#935e3e"/><path d="m44.4 2h-9.3c-5.4 0-5.4 8.7 0 8.7h9.3c5.4 0 5.4-8.7 0-8.7" fill="#b47d56"/><path d="m45.6 3.4h-9.3c-3.6 0-4.8 4-3.5 6.6-2.9-2.1-2.1-8 2.3-8h9.3c1.8 0 2.9.9 3.5 2.2-.6-.5-1.4-.8-2.3-.8" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44e-1f3ff.svg b/riot/emojione/svg/1f44e-1f3ff.svg new file mode 100644 index 0000000..c58da80 --- /dev/null +++ b/riot/emojione/svg/1f44e-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 36.9c0 0-4.4-.9-.8 6.6 2.6 5.4 2.3 11.7 0 15-3.8 5.3-11.1 3.6-10.3.5 2.6-10.5-3.3-13.7-6.3-20.3-3.1-6.7-2.8-16.3-1.4-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5l-4.2 34.9" fill="#8a6859"/><path d="m25.8 3.5c-8.3 0-10.1 6.6-11 11.9-1.4 8.5-1.6 15.3 1.1 22.2 3 7.5 6.1 7.7 6.1 22.5 0 .7.4 1.2.8 1.6-1.4-.5-2.2-1.3-2.2-2.5 0-11.1-3.1-13.8-6.1-20.5-3.2-6.7-2.9-16.3-1.5-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5v1.5c0 0-10.2 0-10.2 0" fill="#705041"/><path d="m46 28.2h-14.2c-5 0-5 8.7 0 8.7h14.2c5 0 5-8.7 0-8.7" fill="#8a6859"/><path d="m47.1 29.6h-14.2c-3.4 0-4.4 4-3.3 6.5-2.7-2.1-1.9-8 2.1-8h14.3c1.6 0 2.7.9 3.3 2.2-.6-.4-1.3-.7-2.2-.7" fill="#705041"/><path d="m47.5 19.4h-17c-6 0-6 8.7 0 8.7h17.1c5.9 0 5.9-8.7-.1-8.7" fill="#8a6859"/><path d="m48.9 20.9h-17.1c-4 0-5.3 4-3.9 6.5-3.2-2.1-2.3-8 2.6-8h17.1c1.9 0 3.2.9 3.9 2.2-.7-.4-1.6-.7-2.6-.7" fill="#705041"/><path d="m45.9 10.7h-14.4c-5 0-5 8.7 0 8.7h14.4c5.1 0 5.1-8.7 0-8.7" fill="#8a6859"/><path d="m47.1 12.2h-14.5c-3.4 0-4.5 4-3.3 6.6-2.7-2.1-2-8 2.2-8h14.4c1.6 0 2.7.9 3.3 2.2-.5-.6-1.3-.8-2.1-.8" fill="#705041"/><path d="m44.4 2h-9.3c-5.4 0-5.4 8.7 0 8.7h9.3c5.4 0 5.4-8.7 0-8.7" fill="#8a6859"/><path d="m45.6 3.4h-9.3c-3.6 0-4.8 4-3.5 6.6-2.9-2.1-2.1-8 2.3-8h9.3c1.8 0 2.9.9 3.5 2.2-.6-.5-1.4-.8-2.3-.8" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44e.svg b/riot/emojione/svg/1f44e.svg new file mode 100644 index 0000000..cd5ce20 --- /dev/null +++ b/riot/emojione/svg/1f44e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 36.9c0 0-4.4-.9-.8 6.6 2.6 5.4 2.3 11.7 0 15-3.8 5.3-11.1 3.6-10.3.5 2.6-10.5-3.3-13.7-6.3-20.3-3.1-6.7-2.8-16.3-1.4-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5l-4.2 34.9" fill="#ffdd67"/><path d="m25.8 3.5c-8.3 0-10.1 6.6-11 11.9-1.4 8.5-1.6 15.3 1.1 22.2 3 7.5 6.1 7.7 6.1 22.5 0 .7.4 1.2.8 1.6-1.4-.5-2.2-1.3-2.2-2.5 0-11.1-3.1-13.8-6.1-20.5-3.2-6.7-2.9-16.3-1.5-24.8.9-5.3 3.2-11.9 11.5-11.9h11.5v1.5h-10.2" fill="#eba352"/><path d="m46 28.2h-14.2c-5 0-5 8.7 0 8.7h14.2c5 0 5-8.7 0-8.7" fill="#ffdd67"/><path d="m47.1 29.6h-14.2c-3.4 0-4.4 4-3.3 6.5-2.7-2.1-1.9-8 2.1-8h14.3c1.6 0 2.7.9 3.3 2.2-.6-.4-1.3-.7-2.2-.7" fill="#eba352"/><path d="m47.5 19.4h-17c-6 0-6 8.7 0 8.7h17.1c5.9 0 5.9-8.7-.1-8.7" fill="#ffdd67"/><path d="m48.9 20.9h-17.1c-4 0-5.3 4-3.9 6.5-3.2-2.1-2.3-8 2.6-8h17.1c1.9 0 3.2.9 3.9 2.2-.7-.4-1.6-.7-2.6-.7" fill="#eba352"/><path d="m45.9 10.7h-14.4c-5 0-5 8.7 0 8.7h14.4c5.1 0 5.1-8.7 0-8.7" fill="#ffdd67"/><path d="m47.1 12.2h-14.5c-3.4 0-4.5 4-3.3 6.6-2.7-2.1-2-8 2.2-8h14.4c1.6 0 2.7.9 3.3 2.2-.5-.6-1.3-.8-2.1-.8" fill="#eba352"/><path d="m44.4 2h-9.3c-5.4 0-5.4 8.7 0 8.7h9.3c5.4 0 5.4-8.7 0-8.7" fill="#ffdd67"/><path d="m45.6 3.4h-9.3c-3.6 0-4.8 4-3.5 6.6-2.9-2.1-2.1-8 2.3-8h9.3c1.8 0 2.9.9 3.5 2.2-.6-.5-1.4-.8-2.3-.8" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44f-1f3fb.svg b/riot/emojione/svg/1f44f-1f3fb.svg new file mode 100644 index 0000000..4728186 --- /dev/null +++ b/riot/emojione/svg/1f44f-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.5 27.3c0 0-4.5-3.7-6.9-7.3-.9-1.3-3.8-1.1-4.8 1.4l-15.6 6-10.3-5.5c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1l1.6.9c-1.4-.2-2.9.5-3.6 1.9-.9 1.8-.4 4.1 1.3 5.1l3.6 2.1c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1 0 0 18.1 11.2 24.3 14.5 4.9 2.7 14.6 4 20.7-3.4 2-2.6-3.7-29.1-3.7-29.1" fill="#e0a372"/><g fill="#ffe1bd"><path d="m55 27.3c-3.2-2.2-5.4-5.1-7-9.5-.6-1.5-2.8-1.8-4.1.7-1.9 3.6-.1 6.5.9 7.8l.5.6c0 0 .3 1.1.8 2.4-2.7-.6-5.7.9-7.8 3.7-2.2 2.9-7.4 7.9-9.6 10.8-2.7 3.5-2 8.5 1 10.7 0 0 15.7 11.5 26.1-2.6 8.2-11 2.4-22.4-.8-24.6"/><path d="m49.7 31.5c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-17.9c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 17.9"/></g><path d="m36.8 29.5l-15.9-11.5c-.9-.6-1.5-1.6-1.2-3.1-1.1 2-.4 4 .9 5l15.9 11.5c1.6 1.2 1.9-.7.3-1.9" fill="#e6b796"/><path d="m41.6 35c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#ffe1bd"/><path d="m32 35.4l-19.2-13.9c-.9-.6-1.5-1.8-1.2-3.1-1.1 2-.5 4.2.9 5.2l19.3 13.7c1.5 1.2 1.8-.8.2-1.9" fill="#e6b796"/><path d="m40 43c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#ffe1bd"/><path d="m28.2 41.8l-17-12.2c-.9-.6-1.5-2-1.1-3.4-1.3 1.9-.8 4.4.6 5.4l17.2 12.1c1.6 1.2 1.9-.7.3-1.9" fill="#e6b796"/><path d="m39.3 52c1.6 1.2-9.8 2.4-11.4 1.2l-17.6-12.7c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.8 17.9" fill="#ffe1bd"/><g fill="#e6b796"><path d="m59.9 41.6c0 0-1.7 8.8-8.7 14.1-6.2 4.7-15.8.6-20.4-2.4-4.8-3.3-7.2-4.9-18.8-13.7-2.2-1.7-2.8-2.8-2.5-4.6-1.7 1.8-.8 4.6.6 5.6l1.2.8c0 0 13.9 10.2 18.6 13.4 4.3 3 15.4 7.7 22.4 2.1 7.9-6.1 7.6-15.3 7.6-15.3"/><path d="m48 30.1c-2-2.1-2.1-5.1-2.1-5.1l-.5-.6c-.8-1-2.1-3.1-1.6-5.6-1.9 3.5 0 6.3.9 7.5l.5.6c0 0-.1.9.4 1.6l2.4 1.6"/></g><g fill="#42ade2"><path d="m37.8 2l3 12.2 5.9-11.3z"/><path d="M52.6 5.6 48.1 15.7 58.6 13z"/><path d="m30.2 3.5l2.8 11-9.2-5.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44f-1f3fc.svg b/riot/emojione/svg/1f44f-1f3fc.svg new file mode 100644 index 0000000..ffb3d7e --- /dev/null +++ b/riot/emojione/svg/1f44f-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.5 27.3c0 0-4.5-3.7-6.9-7.3-.9-1.3-3.8-1.1-4.8 1.4l-15.6 6-10.3-5.5c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1l1.6.9c-1.4-.2-2.9.5-3.6 1.9-.9 1.8-.4 4.1 1.3 5.1l3.6 2.1c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1 0 0 18.1 11.2 24.3 14.5 4.9 2.7 14.6 4 20.7-3.4 2-2.6-3.7-29.1-3.7-29.1" fill="#b58360"/><g fill="#fed0ac"><path d="m55 27.3c-3.2-2.2-5.4-5.1-7-9.5-.6-1.5-2.8-1.8-4.1.7-1.9 3.6-.1 6.5.9 7.8l.5.6c0 0 .3 1.1.8 2.4-2.7-.6-5.7.9-7.8 3.7-2.2 2.9-7.4 7.9-9.6 10.8-2.7 3.5-2 8.5 1 10.7 0 0 15.7 11.5 26.1-2.6 8.2-11 2.4-22.4-.8-24.6"/><path d="m49.7 31.5c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-17.9c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 17.9"/></g><path d="m36.8 29.5l-15.9-11.5c-.9-.6-1.5-1.6-1.2-3.1-1.1 2-.4 4 .9 5l15.9 11.5c1.6 1.2 1.9-.7.3-1.9" fill="#e0a372"/><path d="m41.6 35c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#fed0ac"/><path d="m32 35.4l-19.2-13.9c-.9-.6-1.5-1.8-1.2-3.1-1.1 2-.5 4.2.9 5.2l19.3 13.7c1.5 1.2 1.8-.8.2-1.9" fill="#e0a372"/><path d="m40 43c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#fed0ac"/><path d="m28.2 41.8l-17-12.2c-.9-.6-1.5-2-1.1-3.4-1.3 1.9-.8 4.4.6 5.4l17.2 12.1c1.6 1.2 1.9-.7.3-1.9" fill="#e0a372"/><path d="m39.3 52c1.6 1.2-9.8 2.4-11.4 1.2l-17.6-12.7c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.8 17.9" fill="#fed0ac"/><g fill="#e0a372"><path d="m59.9 41.6c0 0-1.7 8.8-8.7 14.1-6.2 4.7-15.8.6-20.4-2.4-4.8-3.3-7.2-4.9-18.8-13.7-2.2-1.7-2.8-2.8-2.5-4.6-1.7 1.8-.8 4.6.6 5.6l1.2.8c0 0 13.9 10.2 18.6 13.4 4.3 3 15.4 7.7 22.4 2.1 7.9-6.1 7.6-15.3 7.6-15.3"/><path d="m48 30.1c-2-2.1-2.1-5.1-2.1-5.1l-.5-.6c-.8-1-2.1-3.1-1.6-5.6-1.9 3.5 0 6.3.9 7.5l.5.6c0 0-.1.9.4 1.6l2.4 1.6"/></g><g fill="#42ade2"><path d="m37.8 2l3 12.2 5.9-11.3z"/><path d="M52.6 5.6 48.1 15.7 58.6 13z"/><path d="m30.2 3.5l2.8 11-9.2-5.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44f-1f3fd.svg b/riot/emojione/svg/1f44f-1f3fd.svg new file mode 100644 index 0000000..138e7bd --- /dev/null +++ b/riot/emojione/svg/1f44f-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.5 27.3c0 0-4.5-3.7-6.9-7.3-.9-1.3-3.8-1.1-4.8 1.4l-15.6 6-10.3-5.5c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1l1.6.9c-1.4-.2-2.9.5-3.6 1.9-.9 1.8-.4 4.1 1.3 5.1l3.6 2.1c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1 0 0 18.1 11.2 24.3 14.5 4.9 2.7 14.6 4 20.7-3.4 2-2.6-3.7-29.1-3.7-29.1" fill="#9c7052"/><g fill="#d6a57c"><path d="m55 27.3c-3.2-2.2-5.4-5.1-7-9.5-.6-1.5-2.8-1.8-4.1.7-1.9 3.6-.1 6.5.9 7.8l.5.6c0 0 .3 1.1.8 2.4-2.7-.6-5.7.9-7.8 3.7-2.2 2.9-7.4 7.9-9.6 10.8-2.7 3.5-2 8.5 1 10.7 0 0 15.7 11.5 26.1-2.6 8.2-11 2.4-22.4-.8-24.6"/><path d="m49.7 31.5c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-17.9c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 17.9"/></g><path d="m36.8 29.5l-15.9-11.5c-.9-.6-1.5-1.6-1.2-3.1-1.1 2-.4 4 .9 5l15.9 11.5c1.6 1.2 1.9-.7.3-1.9" fill="#b58360"/><path d="m41.6 35c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#d6a57c"/><path d="m32 35.4l-19.2-13.9c-.9-.6-1.5-1.8-1.2-3.1-1.1 2-.5 4.2.9 5.2l19.3 13.7c1.5 1.2 1.8-.8.2-1.9" fill="#b58360"/><path d="m40 43c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#d6a57c"/><path d="m28.2 41.8l-17-12.2c-.9-.6-1.5-2-1.1-3.4-1.3 1.9-.8 4.4.6 5.4l17.2 12.1c1.6 1.2 1.9-.7.3-1.9" fill="#b58360"/><path d="m39.3 52c1.6 1.2-9.8 2.4-11.4 1.2l-17.6-12.7c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.8 17.9" fill="#d6a57c"/><g fill="#b58360"><path d="m59.9 41.6c0 0-1.7 8.8-8.7 14.1-6.2 4.7-15.8.6-20.4-2.4-4.8-3.3-7.2-4.9-18.8-13.7-2.2-1.7-2.8-2.8-2.5-4.6-1.7 1.8-.8 4.6.6 5.6l1.2.8c0 0 13.9 10.2 18.6 13.4 4.3 3 15.4 7.7 22.4 2.1 7.9-6.1 7.6-15.3 7.6-15.3"/><path d="m48 30.1c-2-2.1-2.1-5.1-2.1-5.1l-.5-.6c-.8-1-2.1-3.1-1.6-5.6-1.9 3.5 0 6.3.9 7.5l.5.6c0 0-.1.9.4 1.6l2.4 1.6"/></g><g fill="#42ade2"><path d="m37.8 2l3 12.2 5.9-11.3z"/><path d="M52.6 5.6 48.1 15.7 58.6 13z"/><path d="m30.2 3.5l2.8 11-9.2-5.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44f-1f3fe.svg b/riot/emojione/svg/1f44f-1f3fe.svg new file mode 100644 index 0000000..56107c4 --- /dev/null +++ b/riot/emojione/svg/1f44f-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.5 27.3c0 0-4.5-3.7-6.9-7.3-.9-1.3-3.8-1.1-4.8 1.4l-15.6 6-10.3-5.5c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1l1.6.9c-1.4-.2-2.9.5-3.6 1.9-.9 1.8-.4 4.1 1.3 5.1l3.6 2.1c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1 0 0 18.1 11.2 24.3 14.5 4.9 2.7 14.6 4 20.7-3.4 2-2.6-3.7-29.1-3.7-29.1" fill="#785440"/><g fill="#b47d56"><path d="m55 27.3c-3.2-2.2-5.4-5.1-7-9.5-.6-1.5-2.8-1.8-4.1.7-1.9 3.6-.1 6.5.9 7.8l.5.6c0 0 .3 1.1.8 2.4-2.7-.6-5.7.9-7.8 3.7-2.2 2.9-7.4 7.9-9.6 10.8-2.7 3.5-2 8.5 1 10.7 0 0 15.7 11.5 26.1-2.6 8.2-11 2.4-22.4-.8-24.6"/><path d="m49.7 31.5c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-17.9c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 17.9"/></g><path d="m36.8 29.5l-15.9-11.5c-.9-.6-1.5-1.6-1.2-3.1-1.1 2-.4 4 .9 5l15.9 11.5c1.6 1.2 1.9-.7.3-1.9" fill="#935e3e"/><path d="m41.6 35c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#b47d56"/><path d="m32 35.4l-19.2-13.9c-.9-.6-1.5-1.8-1.2-3.1-1.1 2-.5 4.2.9 5.2l19.3 13.7c1.5 1.2 1.8-.8.2-1.9" fill="#935e3e"/><path d="m40 43c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#b47d56"/><path d="m28.2 41.8l-17-12.2c-.9-.6-1.5-2-1.1-3.4-1.3 1.9-.8 4.4.6 5.4l17.2 12.1c1.6 1.2 1.9-.7.3-1.9" fill="#935e3e"/><path d="m39.3 52c1.6 1.2-9.8 2.4-11.4 1.2l-17.6-12.7c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.8 17.9" fill="#b47d56"/><g fill="#935e3e"><path d="m59.9 41.6c0 0-1.7 8.8-8.7 14.1-6.2 4.7-15.8.6-20.4-2.4-4.8-3.3-7.2-4.9-18.8-13.7-2.2-1.7-2.8-2.8-2.5-4.6-1.7 1.8-.8 4.6.6 5.6l1.2.8c0 0 13.9 10.2 18.6 13.4 4.3 3 15.4 7.7 22.4 2.1 7.9-6.1 7.6-15.3 7.6-15.3"/><path d="m48 30.1c-2-2.1-2.1-5.1-2.1-5.1l-.5-.6c-.8-1-2.1-3.1-1.6-5.6-1.9 3.5 0 6.3.9 7.5l.5.6c0 0-.1.9.4 1.6l2.4 1.6"/></g><g fill="#42ade2"><path d="m37.8 2l3 12.2 5.9-11.3z"/><path d="M52.6 5.6 48.1 15.7 58.6 13z"/><path d="m30.2 3.5l2.8 11-9.2-5.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44f-1f3ff.svg b/riot/emojione/svg/1f44f-1f3ff.svg new file mode 100644 index 0000000..d4361ab --- /dev/null +++ b/riot/emojione/svg/1f44f-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.5 27.3c0 0-4.5-3.7-6.9-7.3-.9-1.3-3.8-1.1-4.8 1.4l-15.6 6-10.3-5.5c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1l1.6.9c-1.4-.2-2.9.5-3.6 1.9-.9 1.8-.4 4.1 1.3 5.1l3.6 2.1c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1 0 0 18.1 11.2 24.3 14.5 4.9 2.7 14.6 4 20.7-3.4 2-2.6-3.7-29.1-3.7-29.1" fill="#523b32"/><g fill="#8a6859"><path d="m55 27.3c-3.2-2.2-5.4-5.1-7-9.5-.6-1.5-2.8-1.8-4.1.7-1.9 3.6-.1 6.5.9 7.8l.5.6c0 0 .3 1.1.8 2.4-2.7-.6-5.7.9-7.8 3.7-2.2 2.9-7.4 7.9-9.6 10.8-2.7 3.5-2 8.5 1 10.7 0 0 15.7 11.5 26.1-2.6 8.2-11 2.4-22.4-.8-24.6"/><path d="m49.7 31.5c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-17.9c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 17.9"/></g><path d="m36.8 29.5l-15.9-11.5c-.9-.6-1.5-1.6-1.2-3.1-1.1 2-.4 4 .9 5l15.9 11.5c1.6 1.2 1.9-.7.3-1.9" fill="#705041"/><path d="m41.6 35c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#8a6859"/><path d="m32 35.4l-19.2-13.9c-.9-.6-1.5-1.8-1.2-3.1-1.1 2-.5 4.2.9 5.2l19.3 13.7c1.5 1.2 1.8-.8.2-1.9" fill="#705041"/><path d="m40 43c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#8a6859"/><path d="m28.2 41.8l-17-12.2c-.9-.6-1.5-2-1.1-3.4-1.3 1.9-.8 4.4.6 5.4l17.2 12.1c1.6 1.2 1.9-.7.3-1.9" fill="#705041"/><path d="m39.3 52c1.6 1.2-9.8 2.4-11.4 1.2l-17.6-12.7c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.8 17.9" fill="#8a6859"/><g fill="#705041"><path d="m59.9 41.6c0 0-1.7 8.8-8.7 14.1-6.2 4.7-15.8.6-20.4-2.4-4.8-3.3-7.2-4.9-18.8-13.7-2.2-1.7-2.8-2.8-2.5-4.6-1.7 1.8-.8 4.6.6 5.6l1.2.8c0 0 13.9 10.2 18.6 13.4 4.3 3 15.4 7.7 22.4 2.1 7.9-6.1 7.6-15.3 7.6-15.3"/><path d="m48 30.1c-2-2.1-2.1-5.1-2.1-5.1l-.5-.6c-.8-1-2.1-3.1-1.6-5.6-1.9 3.5 0 6.3.9 7.5l.5.6c0 0-.1.9.4 1.6l2.4 1.6"/></g><g fill="#42ade2"><path d="m37.8 2l3 12.2 5.9-11.3z"/><path d="M52.6 5.6 48.1 15.7 58.6 13z"/><path d="m30.2 3.5l2.8 11-9.2-5.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f44f.svg b/riot/emojione/svg/1f44f.svg new file mode 100644 index 0000000..c611e5d --- /dev/null +++ b/riot/emojione/svg/1f44f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.5 27.3c0 0-4.5-3.7-6.9-7.3-.9-1.3-3.8-1.1-4.8 1.4l-15.6 6-10.3-5.5c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1l1.6.9c-1.4-.2-2.9.5-3.6 1.9-.9 1.8-.4 4.1 1.3 5.1l3.6 2.1c-1.6-1-3.7-.3-4.6 1.6-.9 1.8-.4 4.1 1.3 5.1 0 0 18.1 11.2 24.3 14.5 4.9 2.7 14.6 4 20.7-3.4 2-2.6-3.7-29.1-3.7-29.1" fill="#d99b57"/><g fill="#ffdd67"><path d="m55 27.3c-3.2-2.2-5.4-5.1-7-9.5-.6-1.5-2.8-1.8-4.1.7-1.9 3.6-.1 6.5.9 7.8l.5.6c0 0 .3 1.1.8 2.4-2.7-.6-5.7.9-7.8 3.7-2.2 2.9-7.4 7.9-9.6 10.8-2.7 3.5-2 8.5 1 10.7 0 0 15.7 11.5 26.1-2.6 8.2-11 2.4-22.4-.8-24.6"/><path d="m49.7 31.5c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-17.9c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 17.9"/></g><path d="m36.8 29.5l-15.9-11.5c-.9-.6-1.5-1.6-1.2-3.1-1.1 2-.4 4 .9 5l15.9 11.5c1.6 1.2 1.9-.7.3-1.9" fill="#eba352"/><path d="m41.6 35c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#ffdd67"/><path d="m32 35.4l-19.2-13.9c-.9-.6-1.5-1.8-1.2-3.1-1.1 2-.5 4.2.9 5.2l19.3 13.7c1.5 1.2 1.8-.8.2-1.9" fill="#eba352"/><path d="m40 43c1.6 1.2 2 3.5.8 5.3-1.1 1.8-3.4 2.3-5 1.1l-24.9-18c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.9 18" fill="#ffdd67"/><path d="m28.2 41.8l-17-12.2c-.9-.6-1.5-2-1.1-3.4-1.3 1.9-.8 4.4.6 5.4l17.2 12.1c1.6 1.2 1.9-.7.3-1.9" fill="#eba352"/><path d="m39.3 52c1.6 1.2-9.8 2.4-11.4 1.2l-17.6-12.7c-1.6-1.2-2-3.5-.8-5.3 1.1-1.8 3.4-2.3 5-1.1l24.8 17.9" fill="#ffdd67"/><g fill="#eba352"><path d="m59.9 41.6c0 0-1.7 8.8-8.7 14.1-6.2 4.7-15.8.6-20.4-2.4-4.8-3.3-7.2-4.9-18.8-13.7-2.2-1.7-2.8-2.8-2.5-4.6-1.7 1.8-.8 4.6.6 5.6l1.2.8c0 0 13.9 10.2 18.6 13.4 4.3 3 15.4 7.7 22.4 2.1 7.9-6.1 7.6-15.3 7.6-15.3"/><path d="m48 30.1c-2-2.1-2.1-5.1-2.1-5.1l-.5-.6c-.8-1-2.1-3.1-1.6-5.6-1.9 3.5 0 6.3.9 7.5l.5.6c0 0-.1.9.4 1.6l2.4 1.6"/></g><g fill="#42ade2"><path d="m37.8 2l3 12.2 5.9-11.3z"/><path d="M52.6 5.6 48.1 15.7 58.6 13z"/><path d="m30.2 3.5l2.8 11-9.2-5.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f450-1f3fb.svg b/riot/emojione/svg/1f450-1f3fb.svg new file mode 100644 index 0000000..3da933c --- /dev/null +++ b/riot/emojione/svg/1f450-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m2.9 26.8c-1 .8-1.2 2.3-.4 3.3l10.8 13.8 3.7-2.9-10.8-13.7c-.8-1.1-2.3-1.3-3.3-.5"/><path d="m25 34.8l3.9-3-12.3-15.8c-.8-1.1-2.4-1.3-3.5-.4-1.1.8-1.3 2.4-.4 3.5l12.3 15.7"/></g><path d="m13.1 15.6c-.1.1-.2.2-.3.3 1-.5 2.4-.3 3.1.6l12.3 15.7.7-.5-12.3-15.7c-.8-1-2.4-1.2-3.5-.4" fill="#e6b796"/><path d="m17 41.1l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#ffe1bd"/><path d="m4.8 21.4c-.1.1-.2.2-.3.3 1.1-.6 2.4-.3 3.2.7l7.8 10 1.5.5-8.6-11c-.8-1.2-2.5-1.4-3.6-.5" fill="#e6b796"/><path d="m20 36.6l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#ffe1bd"/><g fill="#e6b796"><path d="m7.8 17c-.1.1-.2.2-.3.3 1.1-.6 2.5-.3 3.2.7l8.9 11.3 1.5.5-9.6-12.3c-.9-1.2-2.6-1.4-3.7-.5"/><path d="m2.9 26.8c-.1.1-.2.2-.3.3 1-.5 2.2-.2 2.9.7l6.4 8.2 1.5.5-7.2-9.2c-.8-1.1-2.3-1.3-3.3-.5"/></g><path d="m32.3 18.5c-1.9-.9-4.2 1-4.5 5.6-.2 3.2-.1 4-1.8 5.3l-1.5-1.9c0 0-14.9 11.7-13.9 12.9 0 0 3.4 5.8 7.4 7.9 6 3.2 16.7-4 14.8-15.3-1.3-6.7 1.5-13.5-.5-14.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m32.3 18.5c-.4-.2-.7-.2-1.1-.2.1 0 .2.1.3.1 2 1 .9 4.5.5 7.5-.3 2.4-.5 4.9.1 7 2.6 9.6-6.1 16.4-12.4 15.9 6.3 1.2 15.9-5.7 13.2-15.7-.6-2.2-.4-4.5-.1-7 .4-3.1 1.5-6.6-.5-7.6"/><path d="m26.4 29c-3.5 1.2-7.8 7.6-2.7 12.5-4-5.1-.4-10 2.2-12 .3-.3.5-.5.5-.5"/></g><g fill="#ffe1bd"><path d="m61.1 26.7c1 .8 1.2 2.3.4 3.3l-10.8 13.8-3.7-2.8 10.8-13.8c.8-1.1 2.3-1.3 3.3-.5"/><path d="m39 34.7l-3.9-3 12.3-15.7c.8-1.1 2.4-1.3 3.5-.4 1.1.8 1.3 2.4.4 3.5l-12.3 15.6"/></g><path d="m50.9 15.5c.1.1.2.2.3.3-1-.5-2.4-.3-3.1.6l-12.3 15.8-.7-.5 12.3-15.7c.8-1.1 2.4-1.3 3.5-.5" fill="#e6b796"/><path d="m47 41l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#ffe1bd"/><path d="m59.2 21.3c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-7.8 10-1.5.5 8.6-11c.8-1.1 2.5-1.3 3.6-.5" fill="#e6b796"/><path d="m44 36.5l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#ffe1bd"/><g fill="#e6b796"><path d="m56.2 16.9c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-8.8 11.3-1.5.5 9.6-12.3c.8-1.2 2.5-1.4 3.6-.5"/><path d="m61.1 26.7c.1.1.2.2.3.3-1-.5-2.2-.2-2.9.7l-6.4 8.2-1.5.5 7.2-9.2c.8-1.1 2.3-1.3 3.3-.5"/></g><path d="m31.7 18.5c1.9-.9 4.2 1 4.5 5.6.2 3.2.1 4 1.8 5.3l1.5-1.9c0 0 14.9 11.7 13.9 12.9 0 0-3.4 5.8-7.4 7.9-6 3.2-16.7-4-14.8-15.3 1.3-6.8-1.5-13.6.5-14.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m31.7 18.5c.4-.2.7-.2 1.1-.2-.1 0-.2.1-.3.1-2 1-.9 4.5-.5 7.5.3 2.4.5 4.9-.1 7-2.6 9.6 6.1 16.4 12.4 15.9-6.3 1.2-15.9-5.8-13.2-15.8.6-2.2.4-4.5.1-7-.4-3.1-1.5-6.6.5-7.5"/><path d="m37.6 28.9c3.5 1.2 7.8 7.6 2.7 12.5 4-5.1.4-10-2.2-12-.3-.3-.5-.5-.5-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f450-1f3fc.svg b/riot/emojione/svg/1f450-1f3fc.svg new file mode 100644 index 0000000..4463814 --- /dev/null +++ b/riot/emojione/svg/1f450-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m2.9 26.8c-1 .8-1.2 2.3-.4 3.3l10.8 13.8 3.7-2.9-10.8-13.7c-.8-1.1-2.3-1.3-3.3-.5"/><path d="m25 34.8l3.9-3-12.3-15.8c-.8-1.1-2.4-1.3-3.5-.4-1.1.8-1.3 2.4-.4 3.5l12.3 15.7"/></g><path d="m13.1 15.6c-.1.1-.2.2-.3.3 1-.5 2.4-.3 3.1.6l12.3 15.7.7-.5-12.3-15.7c-.8-1-2.4-1.2-3.5-.4" fill="#e0a372"/><path d="m17 41.1l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#fed0ac"/><path d="m4.8 21.4c-.1.1-.2.2-.3.3 1.1-.6 2.4-.3 3.2.7l7.8 10 1.5.5-8.6-11c-.8-1.2-2.5-1.4-3.6-.5" fill="#e0a372"/><path d="m20 36.6l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#fed0ac"/><g fill="#e0a372"><path d="m7.8 17c-.1.1-.2.2-.3.3 1.1-.6 2.5-.3 3.2.7l8.9 11.3 1.5.5-9.6-12.3c-.9-1.2-2.6-1.4-3.7-.5"/><path d="m2.9 26.8c-.1.1-.2.2-.3.3 1-.5 2.2-.2 2.9.7l6.4 8.2 1.5.5-7.2-9.2c-.8-1.1-2.3-1.3-3.3-.5"/></g><path d="m32.3 18.5c-1.9-.9-4.2 1-4.5 5.6-.2 3.2-.1 4-1.8 5.3l-1.5-1.9c0 0-14.9 11.7-13.9 12.9 0 0 3.4 5.8 7.4 7.9 6 3.2 16.7-4 14.8-15.3-1.3-6.7 1.5-13.5-.5-14.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m32.3 18.5c-.4-.2-.7-.2-1.1-.2.1 0 .2.1.3.1 2 1 .9 4.5.5 7.5-.3 2.4-.5 4.9.1 7 2.6 9.6-6.1 16.4-12.4 15.9 6.3 1.2 15.9-5.7 13.2-15.7-.6-2.2-.4-4.5-.1-7 .4-3.1 1.5-6.6-.5-7.6"/><path d="m26.4 29c-3.5 1.2-7.8 7.6-2.7 12.5-4-5.1-.4-10 2.2-12 .3-.3.5-.5.5-.5"/></g><g fill="#fed0ac"><path d="m61.1 26.7c1 .8 1.2 2.3.4 3.3l-10.8 13.8-3.7-2.8 10.8-13.8c.8-1.1 2.3-1.3 3.3-.5"/><path d="m39 34.7l-3.9-3 12.3-15.7c.8-1.1 2.4-1.3 3.5-.4 1.1.8 1.3 2.4.4 3.5l-12.3 15.6"/></g><path d="m50.9 15.5c.1.1.2.2.3.3-1-.5-2.4-.3-3.1.6l-12.3 15.8-.7-.5 12.3-15.7c.8-1.1 2.4-1.3 3.5-.5" fill="#e0a372"/><path d="m47 41l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#fed0ac"/><path d="m59.2 21.3c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-7.8 10-1.5.5 8.6-11c.8-1.1 2.5-1.3 3.6-.5" fill="#e0a372"/><path d="m44 36.5l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#fed0ac"/><g fill="#e0a372"><path d="m56.2 16.9c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-8.8 11.3-1.5.5 9.6-12.3c.8-1.2 2.5-1.4 3.6-.5"/><path d="m61.1 26.7c.1.1.2.2.3.3-1-.5-2.2-.2-2.9.7l-6.4 8.2-1.5.5 7.2-9.2c.8-1.1 2.3-1.3 3.3-.5"/></g><path d="m31.7 18.5c1.9-.9 4.2 1 4.5 5.6.2 3.2.1 4 1.8 5.3l1.5-1.9c0 0 14.9 11.7 13.9 12.9 0 0-3.4 5.8-7.4 7.9-6 3.2-16.7-4-14.8-15.3 1.3-6.8-1.5-13.6.5-14.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m31.7 18.5c.4-.2.7-.2 1.1-.2-.1 0-.2.1-.3.1-2 1-.9 4.5-.5 7.5.3 2.4.5 4.9-.1 7-2.6 9.6 6.1 16.4 12.4 15.9-6.3 1.2-15.9-5.8-13.2-15.8.6-2.2.4-4.5.1-7-.4-3.1-1.5-6.6.5-7.5"/><path d="m37.6 28.9c3.5 1.2 7.8 7.6 2.7 12.5 4-5.1.4-10-2.2-12-.3-.3-.5-.5-.5-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f450-1f3fd.svg b/riot/emojione/svg/1f450-1f3fd.svg new file mode 100644 index 0000000..715fb59 --- /dev/null +++ b/riot/emojione/svg/1f450-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m2.9 26.8c-1 .8-1.2 2.3-.4 3.3l10.8 13.8 3.7-2.9-10.8-13.7c-.8-1.1-2.3-1.3-3.3-.5"/><path d="m25 34.8l3.9-3-12.3-15.8c-.8-1.1-2.4-1.3-3.5-.4-1.1.8-1.3 2.4-.4 3.5l12.3 15.7"/></g><path d="m13.1 15.6c-.1.1-.2.2-.3.3 1-.5 2.4-.3 3.1.6l12.3 15.7.7-.5-12.3-15.7c-.8-1-2.4-1.2-3.5-.4" fill="#b58360"/><path d="m17 41.1l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#d6a57c"/><path d="m4.8 21.4c-.1.1-.2.2-.3.3 1.1-.6 2.4-.3 3.2.7l7.8 10 1.5.5-8.6-11c-.8-1.2-2.5-1.4-3.6-.5" fill="#b58360"/><path d="m20 36.6l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#d6a57c"/><g fill="#b58360"><path d="m7.8 17c-.1.1-.2.2-.3.3 1.1-.6 2.5-.3 3.2.7l8.9 11.3 1.5.5-9.6-12.3c-.9-1.2-2.6-1.4-3.7-.5"/><path d="m2.9 26.8c-.1.1-.2.2-.3.3 1-.5 2.2-.2 2.9.7l6.4 8.2 1.5.5-7.2-9.2c-.8-1.1-2.3-1.3-3.3-.5"/></g><path d="m32.3 18.5c-1.9-.9-4.2 1-4.5 5.6-.2 3.2-.1 4-1.8 5.3l-1.5-1.9c0 0-14.9 11.7-13.9 12.9 0 0 3.4 5.8 7.4 7.9 6 3.2 16.7-4 14.8-15.3-1.3-6.7 1.5-13.5-.5-14.5" fill="#d6a57c"/><g fill="#b58360"><path d="m32.3 18.5c-.4-.2-.7-.2-1.1-.2.1 0 .2.1.3.1 2 1 .9 4.5.5 7.5-.3 2.4-.5 4.9.1 7 2.6 9.6-6.1 16.4-12.4 15.9 6.3 1.2 15.9-5.7 13.2-15.7-.6-2.2-.4-4.5-.1-7 .4-3.1 1.5-6.6-.5-7.6"/><path d="m26.4 29c-3.5 1.2-7.8 7.6-2.7 12.5-4-5.1-.4-10 2.2-12 .3-.3.5-.5.5-.5"/></g><g fill="#d6a57c"><path d="m61.1 26.7c1 .8 1.2 2.3.4 3.3l-10.8 13.8-3.7-2.8 10.8-13.8c.8-1.1 2.3-1.3 3.3-.5"/><path d="m39 34.7l-3.9-3 12.3-15.7c.8-1.1 2.4-1.3 3.5-.4 1.1.8 1.3 2.4.4 3.5l-12.3 15.6"/></g><path d="m50.9 15.5c.1.1.2.2.3.3-1-.5-2.4-.3-3.1.6l-12.3 15.8-.7-.5 12.3-15.7c.8-1.1 2.4-1.3 3.5-.5" fill="#b58360"/><path d="m47 41l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#d6a57c"/><path d="m59.2 21.3c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-7.8 10-1.5.5 8.6-11c.8-1.1 2.5-1.3 3.6-.5" fill="#b58360"/><path d="m44 36.5l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#d6a57c"/><g fill="#b58360"><path d="m56.2 16.9c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-8.8 11.3-1.5.5 9.6-12.3c.8-1.2 2.5-1.4 3.6-.5"/><path d="m61.1 26.7c.1.1.2.2.3.3-1-.5-2.2-.2-2.9.7l-6.4 8.2-1.5.5 7.2-9.2c.8-1.1 2.3-1.3 3.3-.5"/></g><path d="m31.7 18.5c1.9-.9 4.2 1 4.5 5.6.2 3.2.1 4 1.8 5.3l1.5-1.9c0 0 14.9 11.7 13.9 12.9 0 0-3.4 5.8-7.4 7.9-6 3.2-16.7-4-14.8-15.3 1.3-6.8-1.5-13.6.5-14.5" fill="#d6a57c"/><g fill="#b58360"><path d="m31.7 18.5c.4-.2.7-.2 1.1-.2-.1 0-.2.1-.3.1-2 1-.9 4.5-.5 7.5.3 2.4.5 4.9-.1 7-2.6 9.6 6.1 16.4 12.4 15.9-6.3 1.2-15.9-5.8-13.2-15.8.6-2.2.4-4.5.1-7-.4-3.1-1.5-6.6.5-7.5"/><path d="m37.6 28.9c3.5 1.2 7.8 7.6 2.7 12.5 4-5.1.4-10-2.2-12-.3-.3-.5-.5-.5-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f450-1f3fe.svg b/riot/emojione/svg/1f450-1f3fe.svg new file mode 100644 index 0000000..d3c412e --- /dev/null +++ b/riot/emojione/svg/1f450-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m2.9 26.8c-1 .8-1.2 2.3-.4 3.3l10.8 13.8 3.7-2.9-10.8-13.7c-.8-1.1-2.3-1.3-3.3-.5"/><path d="m25 34.8l3.9-3-12.3-15.8c-.8-1.1-2.4-1.3-3.5-.4-1.1.8-1.3 2.4-.4 3.5l12.3 15.7"/></g><path d="m13.1 15.6c-.1.1-.2.2-.3.3 1-.5 2.4-.3 3.1.6l12.3 15.7.7-.5-12.3-15.7c-.8-1-2.4-1.2-3.5-.4" fill="#935e3e"/><path d="m17 41.1l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#b47d56"/><path d="m4.8 21.4c-.1.1-.2.2-.3.3 1.1-.6 2.4-.3 3.2.7l7.8 10 1.5.5-8.6-11c-.8-1.2-2.5-1.4-3.6-.5" fill="#935e3e"/><path d="m20 36.6l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#b47d56"/><g fill="#935e3e"><path d="m7.8 17c-.1.1-.2.2-.3.3 1.1-.6 2.5-.3 3.2.7l8.9 11.3 1.5.5-9.6-12.3c-.9-1.2-2.6-1.4-3.7-.5"/><path d="m2.9 26.8c-.1.1-.2.2-.3.3 1-.5 2.2-.2 2.9.7l6.4 8.2 1.5.5-7.2-9.2c-.8-1.1-2.3-1.3-3.3-.5"/></g><path d="m32.3 18.5c-1.9-.9-4.2 1-4.5 5.6-.2 3.2-.1 4-1.8 5.3l-1.5-1.9c0 0-14.9 11.7-13.9 12.9 0 0 3.4 5.8 7.4 7.9 6 3.2 16.7-4 14.8-15.3-1.3-6.7 1.5-13.5-.5-14.5" fill="#b47d56"/><g fill="#935e3e"><path d="m32.3 18.5c-.4-.2-.7-.2-1.1-.2.1 0 .2.1.3.1 2 1 .9 4.5.5 7.5-.3 2.4-.5 4.9.1 7 2.6 9.6-6.1 16.4-12.4 15.9 6.3 1.2 15.9-5.7 13.2-15.7-.6-2.2-.4-4.5-.1-7 .4-3.1 1.5-6.6-.5-7.6"/><path d="m26.4 29c-3.5 1.2-7.8 7.6-2.7 12.5-4-5.1-.4-10 2.2-12 .3-.3.5-.5.5-.5"/></g><g fill="#b47d56"><path d="m61.1 26.7c1 .8 1.2 2.3.4 3.3l-10.8 13.8-3.7-2.8 10.8-13.8c.8-1.1 2.3-1.3 3.3-.5"/><path d="m39 34.7l-3.9-3 12.3-15.7c.8-1.1 2.4-1.3 3.5-.4 1.1.8 1.3 2.4.4 3.5l-12.3 15.6"/></g><path d="m50.9 15.5c.1.1.2.2.3.3-1-.5-2.4-.3-3.1.6l-12.3 15.8-.7-.5 12.3-15.7c.8-1.1 2.4-1.3 3.5-.5" fill="#935e3e"/><path d="m47 41l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#b47d56"/><path d="m59.2 21.3c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-7.8 10-1.5.5 8.6-11c.8-1.1 2.5-1.3 3.6-.5" fill="#935e3e"/><path d="m44 36.5l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#b47d56"/><g fill="#935e3e"><path d="m56.2 16.9c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-8.8 11.3-1.5.5 9.6-12.3c.8-1.2 2.5-1.4 3.6-.5"/><path d="m61.1 26.7c.1.1.2.2.3.3-1-.5-2.2-.2-2.9.7l-6.4 8.2-1.5.5 7.2-9.2c.8-1.1 2.3-1.3 3.3-.5"/></g><path d="m31.7 18.5c1.9-.9 4.2 1 4.5 5.6.2 3.2.1 4 1.8 5.3l1.5-1.9c0 0 14.9 11.7 13.9 12.9 0 0-3.4 5.8-7.4 7.9-6 3.2-16.7-4-14.8-15.3 1.3-6.8-1.5-13.6.5-14.5" fill="#b47d56"/><g fill="#935e3e"><path d="m31.7 18.5c.4-.2.7-.2 1.1-.2-.1 0-.2.1-.3.1-2 1-.9 4.5-.5 7.5.3 2.4.5 4.9-.1 7-2.6 9.6 6.1 16.4 12.4 15.9-6.3 1.2-15.9-5.8-13.2-15.8.6-2.2.4-4.5.1-7-.4-3.1-1.5-6.6.5-7.5"/><path d="m37.6 28.9c3.5 1.2 7.8 7.6 2.7 12.5 4-5.1.4-10-2.2-12-.3-.3-.5-.5-.5-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f450-1f3ff.svg b/riot/emojione/svg/1f450-1f3ff.svg new file mode 100644 index 0000000..d7dc914 --- /dev/null +++ b/riot/emojione/svg/1f450-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m2.9 26.8c-1 .8-1.2 2.3-.4 3.3l10.8 13.8 3.7-2.9-10.8-13.7c-.8-1.1-2.3-1.3-3.3-.5"/><path d="m25 34.8l3.9-3-12.3-15.8c-.8-1.1-2.4-1.3-3.5-.4-1.1.8-1.3 2.4-.4 3.5l12.3 15.7"/></g><path d="m13.1 15.6c-.1.1-.2.2-.3.3 1-.5 2.4-.3 3.1.6l12.3 15.7.7-.5-12.3-15.7c-.8-1-2.4-1.2-3.5-.4" fill="#705041"/><path d="m17 41.1l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#8a6859"/><path d="m4.8 21.4c-.1.1-.2.2-.3.3 1.1-.6 2.4-.3 3.2.7l7.8 10 1.5.5-8.6-11c-.8-1.2-2.5-1.4-3.6-.5" fill="#705041"/><path d="m20 36.6l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#8a6859"/><g fill="#705041"><path d="m7.8 17c-.1.1-.2.2-.3.3 1.1-.6 2.5-.3 3.2.7l8.9 11.3 1.5.5-9.6-12.3c-.9-1.2-2.6-1.4-3.7-.5"/><path d="m2.9 26.8c-.1.1-.2.2-.3.3 1-.5 2.2-.2 2.9.7l6.4 8.2 1.5.5-7.2-9.2c-.8-1.1-2.3-1.3-3.3-.5"/></g><path d="m32.3 18.5c-1.9-.9-4.2 1-4.5 5.6-.2 3.2-.1 4-1.8 5.3l-1.5-1.9c0 0-14.9 11.7-13.9 12.9 0 0 3.4 5.8 7.4 7.9 6 3.2 16.7-4 14.8-15.3-1.3-6.7 1.5-13.5-.5-14.5" fill="#8a6859"/><g fill="#705041"><path d="m32.3 18.5c-.4-.2-.7-.2-1.1-.2.1 0 .2.1.3.1 2 1 .9 4.5.5 7.5-.3 2.4-.5 4.9.1 7 2.6 9.6-6.1 16.4-12.4 15.9 6.3 1.2 15.9-5.7 13.2-15.7-.6-2.2-.4-4.5-.1-7 .4-3.1 1.5-6.6-.5-7.6"/><path d="m26.4 29c-3.5 1.2-7.8 7.6-2.7 12.5-4-5.1-.4-10 2.2-12 .3-.3.5-.5.5-.5"/></g><g fill="#8a6859"><path d="m61.1 26.7c1 .8 1.2 2.3.4 3.3l-10.8 13.8-3.7-2.8 10.8-13.8c.8-1.1 2.3-1.3 3.3-.5"/><path d="m39 34.7l-3.9-3 12.3-15.7c.8-1.1 2.4-1.3 3.5-.4 1.1.8 1.3 2.4.4 3.5l-12.3 15.6"/></g><path d="m50.9 15.5c.1.1.2.2.3.3-1-.5-2.4-.3-3.1.6l-12.3 15.8-.7-.5 12.3-15.7c.8-1.1 2.4-1.3 3.5-.5" fill="#705041"/><path d="m47 41l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#8a6859"/><path d="m59.2 21.3c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-7.8 10-1.5.5 8.6-11c.8-1.1 2.5-1.3 3.6-.5" fill="#705041"/><path d="m44 36.5l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#8a6859"/><g fill="#705041"><path d="m56.2 16.9c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-8.8 11.3-1.5.5 9.6-12.3c.8-1.2 2.5-1.4 3.6-.5"/><path d="m61.1 26.7c.1.1.2.2.3.3-1-.5-2.2-.2-2.9.7l-6.4 8.2-1.5.5 7.2-9.2c.8-1.1 2.3-1.3 3.3-.5"/></g><path d="m31.7 18.5c1.9-.9 4.2 1 4.5 5.6.2 3.2.1 4 1.8 5.3l1.5-1.9c0 0 14.9 11.7 13.9 12.9 0 0-3.4 5.8-7.4 7.9-6 3.2-16.7-4-14.8-15.3 1.3-6.8-1.5-13.6.5-14.5" fill="#8a6859"/><g fill="#705041"><path d="m31.7 18.5c.4-.2.7-.2 1.1-.2-.1 0-.2.1-.3.1-2 1-.9 4.5-.5 7.5.3 2.4.5 4.9-.1 7-2.6 9.6 6.1 16.4 12.4 15.9-6.3 1.2-15.9-5.8-13.2-15.8.6-2.2.4-4.5.1-7-.4-3.1-1.5-6.6.5-7.5"/><path d="m37.6 28.9c3.5 1.2 7.8 7.6 2.7 12.5 4-5.1.4-10-2.2-12-.3-.3-.5-.5-.5-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f450.svg b/riot/emojione/svg/1f450.svg new file mode 100644 index 0000000..d910626 --- /dev/null +++ b/riot/emojione/svg/1f450.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m2.9 26.8c-1 .8-1.2 2.3-.4 3.3l10.8 13.8 3.7-2.9-10.8-13.7c-.8-1.1-2.3-1.3-3.3-.5"/><path d="m25 34.8l3.9-3-12.3-15.8c-.8-1.1-2.4-1.3-3.5-.4-1.1.8-1.3 2.4-.4 3.5l12.3 15.7"/></g><path d="m13.1 15.6c-.1.1-.2.2-.3.3 1-.5 2.4-.3 3.1.6l12.3 15.7.7-.5-12.3-15.7c-.8-1-2.4-1.2-3.5-.4" fill="#eba352"/><path d="m17 41.1l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#ffdd67"/><path d="m4.8 21.4c-.1.1-.2.2-.3.3 1.1-.6 2.4-.3 3.2.7l7.8 10 1.5.5-8.6-11c-.8-1.2-2.5-1.4-3.6-.5" fill="#eba352"/><path d="m20 36.6l4-3.1-12.6-16.1c-.9-1.1-2.5-1.3-3.6-.5-1.1.9-1.3 2.5-.4 3.6l12.6 16.1" fill="#ffdd67"/><g fill="#eba352"><path d="m7.8 17c-.1.1-.2.2-.3.3 1.1-.6 2.5-.3 3.2.7l8.9 11.3 1.5.5-9.6-12.3c-.9-1.2-2.6-1.4-3.7-.5"/><path d="m2.9 26.8c-.1.1-.2.2-.3.3 1-.5 2.2-.2 2.9.7l6.4 8.2 1.5.5-7.2-9.2c-.8-1.1-2.3-1.3-3.3-.5"/></g><path d="m32.3 18.5c-1.9-.9-4.2 1-4.5 5.6-.2 3.2-.1 4-1.8 5.3l-1.5-1.9c0 0-14.9 11.7-13.9 12.9 0 0 3.4 5.8 7.4 7.9 6 3.2 16.7-4 14.8-15.3-1.3-6.7 1.5-13.5-.5-14.5" fill="#ffdd67"/><g fill="#eba352"><path d="m32.3 18.5c-.4-.2-.7-.2-1.1-.2.1 0 .2.1.3.1 2 1 .9 4.5.5 7.5-.3 2.4-.5 4.9.1 7 2.6 9.6-6.1 16.4-12.4 15.9 6.3 1.2 15.9-5.7 13.2-15.7-.6-2.2-.4-4.5-.1-7 .4-3.1 1.5-6.6-.5-7.6"/><path d="m26.4 29c-3.5 1.2-7.8 7.6-2.7 12.5-4-5.1-.4-10 2.2-12 .3-.3.5-.5.5-.5"/></g><g fill="#ffdd67"><path d="m61.1 26.7c1 .8 1.2 2.3.4 3.3l-10.8 13.8-3.7-2.8 10.8-13.8c.8-1.1 2.3-1.3 3.3-.5"/><path d="m39 34.7l-3.9-3 12.3-15.7c.8-1.1 2.4-1.3 3.5-.4 1.1.8 1.3 2.4.4 3.5l-12.3 15.6"/></g><path d="m50.9 15.5c.1.1.2.2.3.3-1-.5-2.4-.3-3.1.6l-12.3 15.8-.7-.5 12.3-15.7c.8-1.1 2.4-1.3 3.5-.5" fill="#eba352"/><path d="m47 41l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#ffdd67"/><path d="m59.2 21.3c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-7.8 10-1.5.5 8.6-11c.8-1.1 2.5-1.3 3.6-.5" fill="#eba352"/><path d="m44 36.5l-4-3.1 12.6-16.1c.9-1.1 2.5-1.3 3.6-.5 1.1.9 1.3 2.5.4 3.6l-12.6 16.1" fill="#ffdd67"/><g fill="#eba352"><path d="m56.2 16.9c.1.1.2.2.3.3-1.1-.6-2.4-.3-3.2.7l-8.8 11.3-1.5.5 9.6-12.3c.8-1.2 2.5-1.4 3.6-.5"/><path d="m61.1 26.7c.1.1.2.2.3.3-1-.5-2.2-.2-2.9.7l-6.4 8.2-1.5.5 7.2-9.2c.8-1.1 2.3-1.3 3.3-.5"/></g><path d="m31.7 18.5c1.9-.9 4.2 1 4.5 5.6.2 3.2.1 4 1.8 5.3l1.5-1.9c0 0 14.9 11.7 13.9 12.9 0 0-3.4 5.8-7.4 7.9-6 3.2-16.7-4-14.8-15.3 1.3-6.8-1.5-13.6.5-14.5" fill="#ffdd67"/><g fill="#eba352"><path d="m31.7 18.5c.4-.2.7-.2 1.1-.2-.1 0-.2.1-.3.1-2 1-.9 4.5-.5 7.5.3 2.4.5 4.9-.1 7-2.6 9.6 6.1 16.4 12.4 15.9-6.3 1.2-15.9-5.8-13.2-15.8.6-2.2.4-4.5.1-7-.4-3.1-1.5-6.6.5-7.5"/><path d="m37.6 28.9c3.5 1.2 7.8 7.6 2.7 12.5 4-5.1.4-10-2.2-12-.3-.3-.5-.5-.5-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f451.svg b/riot/emojione/svg/1f451.svg new file mode 100644 index 0000000..ce7da0a --- /dev/null +++ b/riot/emojione/svg/1f451.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M52.9,42.9C51.4,32.4,42.6,24.4,32,24.4c-10.6,0-19.4,8-20.9,18.4H52.9z" fill="#428bc1"/><path d="m61.8 22.9c-.4-1.8-1.5-3.2-3.1-4.1-.7-.4-1.5-.6-2.3-.7-.7-.1-1.4 0-2.1.2-1.2.3-2.4.9-3.5 1.4-1.5.7-2.9 1.4-4.2 1.4v4.6c2.3 0 4.4-1 6.2-1.9 1.9-.9 3.1-1.5 3.8-1.1.5.3.8.7.9 1.2.1.6.1 1.4-.1 2.3-.2 1-.7 2.1-1.3 3.4-1.2 2.5-2.8 4.9-4 6.7-.4.7-.8 1.3-1.1 1.7-.1.2-.2.4-.3.6 0 .1-.1.1-.1.2h-37c0-.1-.1-.1-.1-.2-.1-.2-.2-.4-.3-.6-.3-.5-.7-1.1-1.1-1.7-1.2-1.8-2.8-4.2-4-6.7-.6-1.3-1-2.4-1.3-3.4-.2-1-.3-1.8-.1-2.3.1-.5.4-.9.9-1.2.7-.4 1.9.1 3.8 1.1 1.8.9 3.8 1.9 6.2 1.9v-4.6c-1.3 0-2.7-.7-4.2-1.4-1.1-.6-2.3-1.1-3.5-1.4-.9-.2-1.6-.3-2.3-.2-.8.1-1.6.3-2.3.7-1.6.9-2.7 2.4-3.1 4.1-.5 2.3 0 5.2 1.8 8.8 1.3 2.7 3 5.3 4.3 7.2.4.6.8 1.2 1 1.6.1.2.2.4.4.6.6.9 1 1.6 1.2 2.4v11.3c-.3 0-.5.2-.5.6 0 .3.2.6.5.6h42.3c.3 0 .5-.2.5-.6 0-.3-.2-.6-.5-.6v-11.2c.3-.8.7-1.5 1.2-2.4.1-.2.2-.4.4-.6.2-.4.6-1 1-1.6 1.2-1.9 2.9-4.5 4.3-7.2 1.7-3.6 2.2-6.5 1.7-8.9" fill="#f2b200"/><path d="m32.9 27.2c.5 1.6-2 4-5.6 5.2-3.6 1.3-7 1-7.6-.6-.5-1.6 2-4 5.6-5.2s7-1 7.6.6" fill="#42ade2"/><path fill="#ffdd7d" d="m29.6 44.6h4.8v10.8h-4.8z"/><path fill="#ffce31" d="m37.8 44.6h4.8v10.8h-4.8z"/><path fill="#fff" d="m34.4 44.6h3.4v10.8h-3.4z"/><path fill="#ffce31" d="m46 44.6h3.4v10.8h-3.4z"/><path fill="#f2b200" d="m10.8 44.6h3.4v10.8h-3.4z"/><path fill="#ffce31" d="m14.6 44.6h6.6v10.8h-6.6z"/><g fill="#f2b200"><path d="m28.4 34.9c0 1.5-2.7 5.3-2.7 5.3s-2.7-3.8-2.7-5.3 1.2-2.7 2.7-2.7 2.7 1.2 2.7 2.7"/><path d="m40.9 34.9c0 1.5-2.7 5.3-2.7 5.3s-2.7-3.8-2.7-5.3 1.2-2.7 2.7-2.7c1.5 0 2.7 1.2 2.7 2.7"/></g><path fill="#66caf2" d="m38.3 12.6h-12.6l3-4.7h6.4z"/><g fill="#ffce31"><path d="m12.1 32.8c2.4-2.3 7.2-3.5 10.4-2.6-2.5 2.3-7.2 3.5-10.4 2.6"/><path d="m52.1 32.8c-3.2.9-8-.3-10.4-2.6 3.2-.9 8 .3 10.4 2.6"/><path d="m26.6 30.1c2.9-1.7 7.8-1.7 10.7 0-2.9 1.7-7.7 1.7-10.7 0"/></g><path fill="#428bc1" d="m33 7.9l1.1 4.7h4.2l-3.2-4.7z"/><path fill="#42ade2" d="m33 7.9h-2.2l-.9 4.7h4.2z"/><path fill="#66caf2" d="m30.8 7.9l-.9 4.7h-4.2l3-4.7z"/><path d="m11.5 41.7c6.8-.5 13.7-.6 20.5-.6 6.8 0 13.7.1 20.5.6-6.8.5-13.7.6-20.5.6-6.8-.1-13.7-.1-20.5-.6" fill="#ffdd7d"/><g fill="#428bc1"><path d="m10.8 44.6h42.3v1.1h-42.3z"/><ellipse cx="10.8" cy="45.1" rx=".5" ry=".6"/><ellipse cx="53.2" cy="45.1" rx=".5" ry=".6"/></g><path d="m50.7 20.4c-.3-1.1-.7-2.1-1.4-3-.7-.9-1.5-1.7-2.6-2.3-.8-.4-1.6-.7-2.5-.8-.7-.1-1.5 0-2.3.2-1.3.3-2.6 1-3.9 1.6-.3.2-.7.3-1.1.5.8-1.6 1.3-3.1 1.3-4.1h-12.5c0 1 .5 2.5 1.3 4.1-.4-.2-.7-.3-1.1-.5-1.3-.6-2.6-1.3-3.9-1.6-.8-.2-1.6-.3-2.3-.2-.9.1-1.7.3-2.5.8-1 .6-1.9 1.4-2.6 2.3-.6.9-1.1 1.9-1.4 3-.7 2.9-.3 6.6 1.3 10.9 1.2 3.4 2.8 6.2 3.5 7.6h5.3c-.2-.4-.5-.8-.7-1.2-.1-.2-.3-.4-.4-.6-2.1-3.4-5.7-11.1-4.6-15.5.3-1.1.8-1.9 1.8-2.4.3-.2.7-.3 1.6-.1.9.2 1.9.7 3 1.3 1.7.9 3.6 1.8 5.7 2.1v16.5h4.5v-16.5c2.1-.3 4-1.2 5.8-2.1 1.1-.5 2.1-1.1 3-1.3.9-.2 1.3-.1 1.6.1.9.5 1.5 1.3 1.8 2.4 1.1 4.4-2.5 12-4.6 15.5-.1.2-.3.4-.4.6-.3.4-.5.8-.7 1.2h5.3c.8-1.3 2.3-4.2 3.5-7.6 1.5-4.3 1.9-8 1.2-10.9" fill="#ffce31"/><path d="m32 17.1c-1.7 0-3.2-.7-4.4-1.7.3 2.2 2.1 3.9 4.4 3.9 2.2 0 4.1-1.7 4.4-3.9-1.2 1.1-2.7 1.7-4.4 1.7" fill="#f2b200"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f452.svg b/riot/emojione/svg/1f452.svg new file mode 100644 index 0000000..0ef14ae --- /dev/null +++ b/riot/emojione/svg/1f452.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.3 23.4c-.7-7.9-3-12.3-13-12.3-9.9 0-12.3 4.4-13 12.3 0 0 4.9-1.5 13-1.5 8.1.1 13 1.5 13 1.5" fill="#9f7dcc"/><path d="m32.3 11.1c-9.9 0-12.3 4.4-13 12.3 0 0 4.9-1.5 13-1.5 8.1.1-3.2-5.5 0-10.8" fill="#856daa"/><path d="m46.3 23.2c0 0-5.3-1.6-13.9-1.6-8.7 0-13.9 1.6-13.9 1.6-.2 1.8-.2 3.6-.2 5.5 0 1.1 0 2.2.1 3.3 0 0 5.9-1.5 14.1-1.5 8.2 0 14.1 1.5 14.1 1.5.1-1.1.1-2.2.1-3.3-.2-1.9-.3-3.7-.4-5.5" fill="#fff652"/><path d="m35.9 21.7c0 0-1.9-.2-3.6-.2-8.7 0-13.9 1.7-13.9 1.7-.2 1.8-.2 3.6-.2 5.5 0 1.1 0 2.2.1 3.3 0 0 5.9-1.5 14.1-1.5s6.4-4.3 5.3-4.5c-2.2-.4-1.7-2.5-1.8-4.3" fill="#ddd243"/><path d="m32.5 26.5c13.2-1.8 23.8 2.6 30.9 8 4.7 3.5-19-7.1-35.2 8.1-15.5 14.5-31.1 12.6-26.6 1.9 4-9.5 14.4-15.7 30.9-18" fill="#9f7dcc"/><path d="M46.5,26.9c0,0-11.4-0.9-23.7,11.4C7.7,53.2-2.4,50.6,3.7,40.8C9.8,30.9,28.8,23,46.5,26.9z" fill="#856daa"/><path d="m19.7 27.4c3.5-2 5.6-4.4 5.2-6.1-.4-1.8-3.2-2.5-7-2.1.3-4.4-.3-7.6-1.9-8.1-1.5-.4-3.6 2-5.3 6-3.2-2.4-5.9-3.3-7.1-2-1.1 1.3-.4 4.5 1.7 8.1-3.5 2-5.6 4.4-5.2 6.1.4 1.8 3.2 2.5 7 2.1-.3 4.4.3 7.6 1.9 8.1 1.5.4 3.6-2 5.3-6 3.2 2.4 5.9 3.3 7.1 2 1.1-1.3.3-4.5-1.7-8.1" fill="#99cff6"/><path d="m32.7 22.5c-.1-1.6-2.7-2.9-6.4-3.3.9-3.9.8-6.9-.6-7.6-1.4-.7-3.7 1.1-5.9 4.3-2.7-2.8-5.2-4.1-6.5-3.1-1.3.9-1 3.9.5 7.6-3.6 1.1-6 2.8-5.9 4.4.1 1.6 2.7 2.9 6.4 3.3-.9 3.9-.8 6.9.6 7.6 1.4.7 3.7-1.1 5.9-4.3 2.7 2.8 5.2 4.1 6.5 3.1 1.3-1 1-3.9-.5-7.6 3.6-1.1 6-2.7 5.9-4.4" fill="#75b7ea"/><g fill="#cdecfc"><path d="m32.3 17.8c-.5-1.2-2.9-1.2-5.8-.2-.4-3.3-1.3-5.6-2.6-5.6-1.3 0-2.5 2.2-3.4 5.5-2.8-1.2-5.1-1.3-5.8-.1-.7 1.2.3 3.4 2.5 5.7-2.5 2.2-3.8 4.3-3.3 5.6.5 1.2 2.9 1.2 5.8.2.4 3.3 1.3 5.6 2.6 5.6 1.3 0 2.5-2.2 3.4-5.5 2.8 1.2 5.1 1.3 5.9.1.7-1.2-.3-3.4-2.5-5.7 2.4-2.2 3.8-4.3 3.2-5.6" opacity=".3"/><path d="m20.4 20.7c-.5-1.1-2.5-1.1-5-.2-.3-2.9-1.1-4.8-2.2-4.9-1.1 0-2.2 1.9-2.9 4.7-2.4-1-4.4-1.1-5-.1-.6 1 .3 2.9 2.1 4.9-2.2 2-3.4 3.8-2.9 4.9.5 1 2.5 1 5 .2.3 2.8 1.2 4.8 2.2 4.8 1.1 0 2.2-1.9 2.9-4.7 2.4 1 4.4 1.1 5 .1.6-1-.3-2.9-2.1-4.9 2.2-1.9 3.4-3.8 2.9-4.8" opacity=".3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f453.svg b/riot/emojione/svg/1f453.svg new file mode 100644 index 0000000..0356c31 --- /dev/null +++ b/riot/emojione/svg/1f453.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m13 15.6c1.5-1.5 5.8 1.9 7.8 3.9 2 2 1 5.4-.2 4.1-1.5-1.7-5.3-7-6.7-6.4s-5.1 6-9.1 14l-2.9 1c.1 0 4.6-10.1 11.1-16.6"/><path d="m51 15.6c-1.5-1.5-5.8 1.9-7.8 3.9-2 2-1 5.4.2 4.1 1.5-1.7 5.3-7 6.7-6.4s5.1 6 9.1 14l2.9 1c-.1 0-4.6-10.1-11.1-16.6"/><path d="m59.9 31c-1-.1-4.3-.3-8.2-.3-4.5 0-8.1.6-11.6 1.2-3.5.6-5.8 1-8.1 1s-4.6-.4-8.1-1c-3.5-.6-7.1-1.2-11.6-1.2-3.9 0-7.2.2-8.2.3-2.1.3-2.1.3-2.1 2.5 0 3.3.4 3.9.5 4.1.2.3.8.6 1 .9.3.4.4 1.7.5 2.4 1.1 5.8 2.7 7.8 11.4 7.8 8.2 0 12.2-2.4 13.8-8.3.1-.4.3-2.3.4-2.8 0-.2.2-.4.6-.5.6-.1 1.1-.1 1.6-.1s1 0 1.6.1c.4.1.6.3.6.5.1.4.3 2.3.4 2.8 1.5 5.9 5.6 8.3 13.8 8.3 8.8 0 10.3-2 11.4-7.8.1-.7.2-2 .5-2.4.2-.3.8-.6 1-.9.2-.2.5-.8.5-4.1.4-2.2.4-2.2-1.7-2.5m-32.1 7.2c-.1.5-.2 1-.4 1.7-1.1 4.1-3.5 6.8-11.8 6.8-8 0-8.7-1.7-9.5-6.3-.3-1.7-.9-3.6-.2-5.3.4-.9 1-2.2 3.4-2.2 1.7 0 10.1.1 15.3 1.2 1.4.5 3.9 1 3.2 4.1m30.1 2.3c-.8 4.6-1.5 6.3-9.5 6.3-8.3 0-10.7-2.7-11.8-6.8-.2-.7-.3-1.3-.4-1.7-.6-3 1.8-3.6 3.3-3.9 5.2-1.1 13.6-1.2 15.3-1.2 2.3 0 3 1.3 3.4 2.2.6 1.4 0 3.3-.3 5.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f454.svg b/riot/emojione/svg/1f454.svg new file mode 100644 index 0000000..b72e4dc --- /dev/null +++ b/riot/emojione/svg/1f454.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M64,59.7c0,2.4-2.2,4.3-4.9,4.3H4.9C2.2,64,0,62.1,0,59.7V9.1c0-2.4,2.2-4.3,4.9-4.3h54.2 + c2.7,0,4.9,1.9,4.9,4.3V59.7z" fill="#d0d0d0"/><g fill="#94989b"><path d="m48.9 9.5h-33.8l3.3-9.5h27.2z"/><path d="m18.4 2.9l-3.3 6.6 12 17.7v-12.1z"/><path d="m45.6 2.9l3.3 6.6-12 17.7v-12.1z"/></g><g fill="#fff"><path d="m18.4 0l-3.3 9.5 12 14.9v-12.2z"/><path d="m45.6 0l3.3 9.5-12 14.9v-12.2z"/></g><path fill="#42ade2" d="m37.7 24.4h-11.4l-3.3 32.4 9.1 7.2 8.9-7.2z"/><path d="m38.1 27.6l-.3-3.3h-11.5l-.3 3.3c2.4 1.8 9.5 1.7 12.1 0" fill="#428bc1"/><path d="m38.6 24.4c-2.2 2.2-11.2 2.4-13.1 0-2-2.5 1.6-12.2 1.6-12.2s3.7 1.4 4.9 1.4 4.9-1.4 4.9-1.4 4 9.9 1.7 12.2" fill="#42ade2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f455.svg b/riot/emojione/svg/1f455.svg new file mode 100644 index 0000000..33900af --- /dev/null +++ b/riot/emojione/svg/1f455.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63.7 16.1c0 0-6.1-12-7.7-12.9-1.6-.9-10.5-.7-13.8-2 0 0-4.1 4.8-10.2 4.8-6.1 0-10.2-4.8-10.2-4.8-3.4 1.3-12.2 1.1-13.8 2s-7.8 12.9-7.8 12.9c3.4 7.7 11.4 9.4 11.4 9.4l3.2-5-1.5 38.7c7.7 4.5 13.3 4.8 18.7 4.8 5.4 0 10.9-.3 18.6-4.7l-1.5-38.7 3.2 5c0-.1 8.1-1.7 11.4-9.5" fill="#42ade2"/><g fill="#22648c"><path d="m32.2 7.2c-1.6 0-3.1-.3-4.7-.9-1.2-.5-2.5-1.1-3.7-1.9-2-1.3-3.3-2.7-3.3-2.7l1.9-1.5-.9.7.9-.7c0 0 1.1 1.2 2.9 2.4 1.6 1 4.1 2.3 6.9 2.3 3.2 0 6.3-1.7 9.2-4.9l1.9 1.5c-1.8 2-3.6 3.5-5.6 4.4-1.7.8-3.5 1.3-5.5 1.3"/><path d="m13 23.4c-3.5-.3-6.5-2-8.9-5.1-1.4-1.8-2.3-3.6-2.7-4.6l-1.4 2.8c.5 1 1.2 2.1 2.1 3.2 1.4 1.8 3 3.2 4.7 4.2 1.5.9 3.1 1.5 4.9 1.7l1.3-2.2"/><path d="m51 23.5c3.5-.3 6.5-2 8.9-5.1 1.4-1.8 2.3-3.6 2.7-4.6l1.4 2.7c-.5 1-1.2 2.1-2.1 3.2-1.4 1.8-3 3.2-4.7 4.2-1.5.9-3.2 1.5-4.9 1.7l-1.3-2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f456.svg b/riot/emojione/svg/1f456.svg new file mode 100644 index 0000000..eed2f86 --- /dev/null +++ b/riot/emojione/svg/1f456.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M48.1,14V0H15.9v14C9.4,46.5,13,63.4,13,63.4l16.1-5.2C24.5,36.8,32,22.5,32,22.5h1.7c0,0,5.8,14.3,1.2,35.7 + L51,63.4C51,63.4,54.6,46.5,48.1,14z" fill="#428bc1"/><g fill="#347aa5"><path d="m41.3 26c-.2.4-2.1-.3-4.2-1.5-2.1-1.2-3.6-2.4-3.4-2.8.2-.4 2.1.3 4.2 1.5 2 1.2 3.6 2.4 3.4 2.8"/><path d="m44.5 44c-.2.4-2.1-.3-4.2-1.5-2.1-1.2-3.6-2.4-3.4-2.8.2-.4 2.1.3 4.2 1.5 2 1.2 3.6 2.5 3.4 2.8"/><path d="m51.3 59.1c-.2.4-2.1-.3-4.2-1.5-2.1-1.2-3.6-2.4-3.4-2.8.2-.4 2.1.3 4.2 1.5 2 1.2 3.6 2.5 3.4 2.8"/><path d="m51 59.2c-.4.2-1.5-1.5-2.5-3.6-1-2.2-1.5-4.1-1.1-4.2.4-.2 1.5 1.5 2.5 3.6 1 2.2 1.5 4.1 1.1 4.2"/><ellipse transform="matrix(1-.0036.0036 1-.1432.1478)" cx="41" cy="39.9" rx="3.8" ry=".5"/><path d="m44 37.2c.1.3-1.4 1.1-3.3 1.8s-3.6 1-3.7.8c-.1-.3 1.4-1.1 3.3-1.8 1.9-.8 3.6-1.1 3.7-.8"/><path d="m43.8 17.9c-.2-.2.6-1.2 1.7-2.3s2.2-1.9 2.3-1.7c.2.2-.6 1.2-1.7 2.3-1.1 1.1-2.2 1.8-2.3 1.7"/><path d="m44.6 19.8c-.2-.1.4-1.5 1.4-3 1-1.5 1.9-2.7 2.1-2.6.2.1-.4 1.5-1.4 3-1 1.5-1.9 2.7-2.1 2.6"/><path d="m36.5 27.3c-.2.1-1-.9-1.7-2.3-.7-1.4-1.1-2.6-.9-2.7.2-.1 1 .9 1.7 2.3.7 1.4 1.1 2.6.9 2.7"/><ellipse transform="matrix(.1027-.9947.9947.1027 14.0227 59.7485)" cx="40.1" cy="22.1" rx=".7" ry="6.5"/><path d="m35.2 53.9l16.8 6.1-.7 4-17-5.2z"/><path d="m24.2 26.3c.2.4 2.1-.3 4.2-1.5 2.1-1.2 3.6-2.4 3.4-2.8-.2-.4-2.1.3-4.2 1.5-2.1 1.2-3.6 2.5-3.4 2.8"/><path d="m19.6 43.6c.2.4 2.1 0 4.3-.9 2.2-.9 3.9-1.9 3.7-2.3-.2-.4-2.1 0-4.3.9-2.2.8-3.9 1.9-3.7 2.3"/><path d="m12.7 59.1c.2.4 2.1-.3 4.2-1.5 2.1-1.2 3.6-2.4 3.4-2.8-.2-.4-2.1.3-4.2 1.5-2 1.2-3.6 2.5-3.4 2.8"/><path d="m13 59.2c.4.2 1.5-1.5 2.5-3.6 1-2.2 1.5-4.1 1.1-4.2-.5-.2-1.6 1.4-2.6 3.6-.9 2.2-1.4 4.1-1 4.2"/><ellipse transform="matrix(.1308-.9914.9914.1308-19.0056 58.0354)" cx="23.6" cy="39.9" rx=".5" ry="3.8"/><path d="m20.2 17.9c.2-.2-.6-1.2-1.7-2.3-1.1-1.1-2.2-1.9-2.3-1.7-.2.1.6 1.1 1.7 2.3 1.1 1.1 2.2 1.8 2.3 1.7"/><path d="m19.5 19.4c.2-.1-.4-1.5-1.4-3-1-1.5-1.9-2.7-2.1-2.6s.4 1.5 1.4 3c1 1.6 1.9 2.8 2.1 2.6"/><path d="m28.9 27.3c.2.1 1-.9 1.7-2.3.7-1.4 1.1-2.6.9-2.7s-1 .9-1.7 2.3-1.1 2.6-.9 2.7"/><path d="m28.8 53.9l-16.8 6.1.7 4 17-5.2z"/></g><ellipse cx="33.7" cy="2.6" rx="1.3" ry="1.2" fill="#ffce31"/><path d="m43.2 11.7c-1.8-1.9-2-4.7-2-5.9h7v-.6h-6.5v-5.2h-1.7v5.2h-8.2v-5.2h-.4v5.2h-7.4v-5.2h-1.5v5.2h-6.6v.6h7.1c0 1.2-.2 4-2 5.9-1.2 1.3-2.8 1.9-5.1 1.9v.4c2.4 0 4.1-.7 5.4-2.1 1.9-2 2.2-4.9 2.1-6.1h7v14.9c0 .9.8 1.7 1.8 1.7h1.8v-16.6h6.7c0 1.3.2 4.1 2.1 6.1 1.3 1.4 2.9 2.1 5.3 2.1v-.4c-2.3 0-3.7-.6-4.9-1.9m-2.8-11.3h.7v4.8h-.2-.2c0 0 0 0 0 0h-.3v-4.8m-17.5 0h.7v4.8h-.2c0 0 0 0 0 0h-.2-.3v-4.8m10.7 21.7h-1.4c-.8 0-1.4-.6-1.4-1.3v-15h2.8v16.3" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f457.svg b/riot/emojione/svg/1f457.svg new file mode 100644 index 0000000..2a20f80 --- /dev/null +++ b/riot/emojione/svg/1f457.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#aa3369"><path d="m22.3 0h1.3v10.2h-1.3z"/><path d="m40.4 0h1.3v10.2h-1.3z"/></g><path d="m39 25.8c0-3.7 5-10.1 3.4-16.8 0 0-6.6 0-10.4 3.3-3.8-3.3-10.4-3.3-10.4-3.3-1.6 6.7 3.4 13.1 3.4 16.8 0 7.2-17.2 17.9-12 38.1 0 0 4.2-2.6 6.3-2.6 1.9 0 4.5 2.7 6.3 2.7 2.3 0 4.4-2.7 6.3-2.7 2 0 4.1 2.7 6.3 2.7 1.9 0 4.5-2.7 6.3-2.7 2.2 0 6.3 2.6 6.3 2.6 5.4-20.2-11.8-31-11.8-38.1" fill="#e84d88"/><path fill="#eab2bb" d="m24.3 23.7h15.3v4h-15.3z"/><g fill="#ffc7ce"><path d="m41.7 41.9l-5.2 1.9c0 0 .1-14.1-3.4-18.9-.2-.3 1.9-.9 2.2-.6 5.1 4.1 6.4 17.6 6.4 17.6"/><path d="m23.5 36.3l4 .9c0 0 .7-9.2 3.8-12.6.2-.2-1.4-.5-1.7-.3-4.3 3.1-6.1 12-6.1 12"/></g><g fill="#eab2bb"><path d="m34.8 25.5c.6.9 2.6 3.8 2.8 6.3"/><path d="m26.9 30c.5-1 1.9-4.2 3.9-5.7"/><path d="m34.7 28.8c-.9.7-3.9.7-4.9 0-1.2-.9-1.1-4.8 0-5.8.9-.8 4-.8 4.9 0 1.1 1 1.2 4.9 0 5.8"/></g><g fill="#ffc7ce"><path d="m34.2 28.7c-.8.7-3.2.7-4 0-1-.9-.9-4.6 0-5.6.7-.8 3.3-.8 4 0 1 .9 1.1 4.7 0 5.6"/><path d="m46.4 56c-2.1 0-5.1 3-7.2 3-2.6 0-5-3-7.2-3-2.2 0-4.6 3-7.2 3-2.1 0-5.1-3-7.2-3-1.5 0-3.9 1.1-5.5 1.9.1 1.1.2 2.3.4 3.5 1.1-.6 4.4-2.3 6.3-2.3 2 0 4.7 2.7 6.6 2.7 2.4 0 4.6-2.7 6.6-2.7 2 0 4.3 2.7 6.6 2.7 2 0 4.7-2.7 6.6-2.7 1.9 0 5.2 1.7 6.3 2.3.2-1.2.3-2.4.4-3.5-1.6-.8-4-1.9-5.5-1.9"/><path d="m25.2 57.1c2.4 0 4.7-2.7 6.8-2.7 2.1 0 4.3 2.7 6.8 2.7 2 0 4.8-2.7 6.8-2.7 1.9 0 5.4 1.6 6.4 2.1 0-.5 0-1 0-1.5-1.5-.7-4.3-1.8-6-1.8-2.1 0-4.9 2.7-7 2.7-2.5 0-4.8-2.7-7-2.7-2.1 0-4.5 2.7-7 2.7-2.1 0-4.9-2.7-7-2.7-1.7 0-4.6 1.2-6 1.8 0 .5 0 1 0 1.5 1.1-.5 4.5-2.1 6.4-2.1 2 0 4.8 2.7 6.8 2.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f458.svg b/riot/emojione/svg/1f458.svg new file mode 100644 index 0000000..7f7bed9 --- /dev/null +++ b/riot/emojione/svg/1f458.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b54152" d="m21.9 2.2h18.5l-8.3 9.5z"/><path fill="#d39762" d="m41.2 3.3h-19.1v-3.3h19.5z"/><path d="m11 4.6l10.1-2.9 10.8 7.8 10.8-7.8 10.1 2.9c0 0 .8 13.5 9.9 25.5 0 0-2.2 8.1-10 14.5 0 0-5.2-15.3-6.2-28.7 0 0-.5 5.9-3.8 12.8-2.4 5.1 8.9 18.4 8.1 32.9 0 0-9 2.4-18.8 2.4-9.8 0-18.8-2.4-18.8-2.4-.9-14.6 10.4-27.8 8-32.9-3.3-6.9-3.8-12.8-3.8-12.8-.9 13.4-6.2 28.7-6.2 28.7-6-7.1-10-14.5-10-14.5 9-12 9.8-25.5 9.8-25.5" fill="#ed4c5c"/><path fill="#eaac6e" d="m29.6 11.4l2.5-2.1-10-9.3-2.5 2.1z"/><g fill="#ffc78a"><path d="m22.4 22.3c-1.1-.2-2.3-.4-3.5-.7.3-.5.6-1.1 1-1.7 1.9-2.8 4.7-6 8.4-9.5 6.4-5.8 13-10.2 13.3-10.4l2.2 2c-.1 0-6.8 4.8-12.9 10.6-3.6 3.4-6.2 6.4-8 9-.2.2-.3.5-.5.7"/><path d="m44 36.7c-3.9-.7-8.9-.9-13.2-.9-3.5 0-7.6.2-10.9.6.9-2.8 2.1-4.8 1-7.1-1.4-2.9-2.3-5.7-2.9-7.9 4.4.6 9.1.9 13.9.9 4.8 0 9.4-.3 13.9-.9-.6 2.2-1.5 5-2.9 7.9-1.2 2.4.1 4.4 1.1 7.4"/></g><path fill="#eaac6e" d="m42.9 29.9l-23.6-2.9-.8-4.4 26.3 3.3z"/><path fill="#ffc78a" d="m21.1 36.3h4.1v27.7h-4.1z"/><path fill="#eaac6e" d="m43.6 34.9l-24.2 2 1.3-4.3 21.9-1.8z"/><g fill="#ffc78a"><path d="M12.1 41.5 11 45.7 0 31.4 2.1 28.8z"/><path d="m51.8 41.9l1.2 4 11-14.2-2.1-2.7z"/><path d="m41 23.6h1.8v27.7h-1.8z"/><path d="m38.6 26.9h1.8v27.7h-1.8z"/></g><g fill="#eaac6e"><path d="m39.5 24.7h1.8v27.7h-1.8z"/><path d="m43.2 24.2c0 1.7-2.1 3.1-2.1 3.1s-2.1-1.4-2.1-3.1c0-1.7 1-.7 2.1-.7s2.1-1 2.1.7"/></g><path d="m40.3 24.4c1.2 1.2.5 3.6.5 3.6s-2.5.3-3.7-.9c-1.2-1.2.2-1.1 1.1-1.9.9-.8.9-2.1 2.1-.8" fill="#d39762"/><path d="m43.8 27c-1 1-3.1.6-3.1.6s-.4-2 .6-3c1-1 1 .1 1.7.8.7.7 1.9.6.8 1.6" fill="#ffc78a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f459.svg b/riot/emojione/svg/1f459.svg new file mode 100644 index 0000000..e0a1ca7 --- /dev/null +++ b/riot/emojione/svg/1f459.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#5b636b"><path d="m52.4 42.5l-.9-1.7c0 0-8.8 2.4-18.5 2.4-9.7 0-18.5-2.4-18.5-2.4l-.9 1.7c7.9 0 14.6 10.6 17 21.4.8.1 1.6.1 2.4.1.8 0 1.6 0 2.4-.1 2.3-10.8 9-21.4 17-21.4"/><path d="m14 41.1c-.9 1.2-1.9 2.3-2.8 3.4-.3.3-.5.6-.7.9-.2.3-.4.6-.4 1 0 .7.4 1.5.8 2 .1.1.3.2.3.2.2 0 0 0 .1-.1 0 0 .1-.1.1-.1.2-.2.4-.6.6-.9.2-.3.3-.7.4-1 .1-.3.2-.7.3-1.1.4-1.5.8-2.9 1.3-4.3m.2-.2c.1 1.6-.1 3.2-.4 4.7-.1.4-.2.8-.4 1.2-.2.4-.4.8-.6 1.1-.2.3-.5.7-.8 1-.1.1-.2.2-.3.2-.1.1-.4.1-.5.1-.4-.1-.5-.3-.7-.5-.4-.8-.6-1.5-.7-2.3-.1-.9.4-1.7.8-2.4.9-1.4 2.1-2.4 3.6-3.1"/><path d="m14.2 41.3c.1 1.3.1 2.6.1 3.9 0 .7-.1 1.5.3 2 .4.6 1 1.1 1.6 1.3.1 0 .1 0 .1 0s0 0-.1 0c0 0-.1.1-.1 0 0-.1 0-.3 0-.4 0-.3-.1-.7-.2-1-.1-.4-.2-.7-.3-1l-.4-1c-.2-1.2-.6-2.5-1-3.8m0-.5c.9 1.2 1.6 2.5 2.2 3.9.1.3.3.7.4 1.1.1.4.2.8.2 1.1 0 .4.1.8.1 1.2 0 .2 0 .4-.2.7-.2.5-.7.4-.9.3-.4-.2-.6-.5-.9-.8-.3-.3-.5-.6-.7-.9-.5-.6-.7-1.4-.8-2.2-.2-1.5 0-2.9.6-4.4"/><path d="m14.2 40.9c-.2 2.1-.4 4.3-.5 6.4-.1 1.1 0 2.1-.1 3.2-.1 1.1-.2 2.1-.2 3.2h-.1c-.6-1-.7-2.2-.7-3.2 0-1.1.2-2.2.3-3.3.3-2.1.7-4.3 1.3-6.3"/><path d="m14.2 40.9c0 2.8.1 5.7.3 8.5.1 1.4.3 2.8.4 4.2.1 1.4.1 2.8.5 4.2h-.1c-.4-.6-.7-1.3-.9-2-.2-.7-.3-1.4-.5-2.1-.2-1.4-.2-2.9-.2-4.3 0-2.9.2-5.7.5-8.5"/><path d="m51.4 41.1c-.9 1.2-1.9 2.3-2.8 3.4-.3.3-.5.6-.7.9-.2.3-.4.6-.4 1 0 .7.4 1.5.8 2 .1.1.3.2.3.2.2 0 0 0 .1-.1 0 0 .1-.1.1-.1.2-.2.4-.6.6-.9.2-.3.3-.7.4-1 .1-.3.2-.7.3-1.1.4-1.5.8-2.9 1.3-4.3m.2-.2c.1 1.6-.1 3.2-.4 4.7-.1.4-.2.8-.4 1.2-.2.4-.4.8-.6 1.1-.2.3-.5.7-.8 1-.1.1-.2.2-.3.2-.1.1-.4.1-.5.1-.4-.1-.5-.3-.7-.5-.4-.8-.6-1.5-.7-2.3-.1-.9.4-1.7.7-2.4 1-1.4 2.2-2.4 3.7-3.1"/><path d="m51.6 41.3c.1 1.3.1 2.6.1 3.9 0 .7-.1 1.5.3 2 .4.6 1 1.1 1.6 1.3.1 0 .1 0 .1 0s0 0-.1 0c0 0-.1.1-.1 0 0-.1 0-.3 0-.4 0-.3-.1-.7-.2-1-.1-.4-.2-.7-.3-1l-.4-1c-.3-1.2-.7-2.5-1-3.8m0-.5c.9 1.2 1.6 2.5 2.2 3.9.1.3.3.7.4 1.1.1.4.2.8.2 1.1 0 .4.1.8.1 1.2 0 .2 0 .4-.2.7-.2.5-.7.4-.9.3-.4-.2-.6-.5-.9-.8-.3-.3-.5-.6-.7-.9-.5-.6-.7-1.4-.8-2.2-.3-1.5 0-2.9.6-4.4"/><path d="m51.6 40.9c-.2 2.1-.4 4.3-.5 6.4-.1 1.1 0 2.1-.1 3.2-.1 1.1-.2 2.1-.2 3.2h-.1c-.6-1-.7-2.2-.7-3.2 0-1.1.2-2.2.3-3.3.3-2.1.7-4.3 1.3-6.3"/><path d="m51.6 40.9c0 2.8.1 5.7.3 8.5.1 1.4.3 2.8.4 4.2.1 1.4.1 2.8.5 4.2h-.1c-.4-.6-.7-1.3-.9-2-.2-.7-.3-1.4-.5-2.1-.2-1.4-.2-2.9-.2-4.3 0-2.9.1-5.7.5-8.5"/><path d="m12.3 14.4c-1.6 1.2-1.3 6.4-.8 8.4.4 1.9 2.1 5.7 3.7 6.5 3.7 1.8 13.4.6 16.1-2.8.3-.4.2-1.6 0-2.1-1.6-2.9-7.1-6.6-9.9-7.9-2.1-1-7.2-3.6-9.1-2.1"/><path d="m13.8 15.4l-1.5-.4c0 0 1.1-1.6 1.1-7.5 0-4.2-1.1-7.1-1.1-7.2l1.5-.3c0 .2 1.2 3.2 1.2 7.6 0 6.1-1.2 7.6-1.2 7.8"/><path d="m51.7 14.4c1.6 1.2 1.3 6.4.8 8.4-.4 1.9-2.1 5.7-3.7 6.5-3.7 1.8-13.4.6-16.1-2.8-.3-.4-.2-1.6 0-2.1 1.6-2.9 7.1-6.6 9.9-7.9 2.1-1 7.2-3.6 9.1-2.1"/><path d="m50.2 15.4l1.5-.4c0 0-1.1-1.6-1.1-7.5 0-4.2 1.1-7.1 1.1-7.2l-1.5-.3c-.1.2-1.2 3.2-1.2 7.6.1 6.1 1.2 7.6 1.2 7.8"/><path d="m31.2 25h1.6v1.1h-1.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f45a.svg b/riot/emojione/svg/1f45a.svg new file mode 100644 index 0000000..294d86e --- /dev/null +++ b/riot/emojione/svg/1f45a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m1.7 24.1l-1.1-12.8c0 0 8.7-3.6 11.7-4.1 4.8-.8 14-2 19.7-2s14.8 1.2 19.7 2c3.1.5 11.7 4.1 11.7 4.1l-1.1 12.8-12.1.9c-.2 13.7 1.9 30.5 2.6 36.1 0 0-8.9.4-20.8.5-11.9-.1-20.8-.5-20.8-.5.7-5.6 2.8-22.4 2.6-36.1l-12.1-.9" fill="#ff99b6"/><g fill="#ff78a5"><path d="m32 12.4h1.2v49.2h-1.2z"/><path d="m26.3 5.6h11.5v7h-11.5z"/></g><path fill="#ff99b6" d="m21.8 0h20.4v6.6h-20.4z"/><g fill="#ffd2df"><path d="m42.2 0l3.9 6.2-7.4 11.5-6.7-5.1z"/><path d="m21.8 0l-3.9 6.2 7.4 11.5 6.7-5.1z"/></g><ellipse cx="28.9" cy="20.4" rx="2.6" ry="2.6" fill="#ff78a5"/><ellipse cx="28.9" cy="20.1" rx="2.5" ry="2.3" fill="#fff3f7"/><ellipse cx="28.9" cy="28.9" rx="2.6" ry="2.6" fill="#ff78a5"/><ellipse cx="28.9" cy="28.6" rx="2.5" ry="2.3" fill="#fff3f7"/><ellipse cx="28.9" cy="37.4" rx="2.6" ry="2.6" fill="#ff78a5"/><ellipse cx="28.9" cy="37.1" rx="2.5" ry="2.3" fill="#fff3f7"/><ellipse cx="28.9" cy="45.9" rx="2.6" ry="2.6" fill="#ff78a5"/><ellipse cx="28.9" cy="45.6" rx="2.5" ry="2.3" fill="#fff3f7"/><ellipse cx="28.9" cy="54.4" rx="2.6" ry="2.6" fill="#ff78a5"/><ellipse cx="28.9" cy="54.1" rx="2.5" ry="2.3" fill="#fff3f7"/><g fill="#ffd2df"><path d="m64 11.1l-3.3-1.1-1.2 14.6 3.5-.3z"/><path d="M0 11.1 3.3 10 4.5 24.6 1 24.3z"/><path d="m32 59.1c0 0 0 0 0 0 10.7-.2 19.2-1.6 20.6-2.5.1 1.9.1 3.5.2 4.8 0 0-8.9 2.5-20.8 2.7-11.9-.2-20.8-2.7-20.8-2.7.1-1.2.2-2.9.2-4.8 1.4.8 9.9 2.3 20.6 2.5"/></g><path fill="#ff99b6" d="m32 59.1h1.2v4.9h-1.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f45b.svg b/riot/emojione/svg/1f45b.svg new file mode 100644 index 0000000..2bb632f --- /dev/null +++ b/riot/emojione/svg/1f45b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55.4 22.9c0 3.3-2.7 6-6.1 6h-34.6c-3.4 0-6.1-2.7-6.1-6v-.9c0-3.3 2.7-6 6.1-6h34.6c3.4 0 6.1 2.7 6.1 6v.9" fill="#a59872"/><path d="m53.2 22.8c0 3.2-2.5 5.8-5.5 5.8h-31.4c-3.1 0-5.5-2.6-5.5-5.8v-.8c0-3.2 2.5-5.8 5.5-5.8h31.3c3.1 0 5.5 2.6 5.5 5.8v.8z" fill="#dbcdaa"/><path d="m12.7 20.1c-5.8 4.9-12.7 21.5-10.1 28.7 1 2.8 7.3 5.2 10.2 6.1 9.1 3 29.2 2.6 38.5 0 2.9-.8 9.2-3.4 10.2-6.1 2.6-7.2-3.9-24.3-10.2-28.7-2.7-1.9-36.5-1.8-38.6 0" fill="#1a86b1"/><path d="m13 19.9c-.7 1.5-1.1 3.1-1.5 4.7-.4 1.6-.8 3.2-1.1 4.8-.6 3.2-1.1 6.4-1.1 9.7-.1 3.2.2 6.5 1.2 9.5 1 3 3.2 5.7 6.1 7.2-1.6-.6-3-1.5-4.2-2.7-1.2-1.2-2-2.7-2.7-4.2-1.3-3.1-1.6-6.5-1.5-9.8.1-3.3.6-6.6 1.4-9.8.9-3.3 1.8-6.5 3.4-9.4" fill="#144e73"/><path d="m51 19.9c-.9-1-10.3-1.4-19-1.3-8.7-.1-18.1.3-19 1.3 0 0-11.6 29.3 3.6 35.9 6.7 2.9 24.1 2.9 30.8 0 15.1-6.6 3.6-35.9 3.6-35.9" fill="#2ba5d6"/><path d="m51 19.9c1.6 2.9 2.5 6.1 3.4 9.3.8 3.2 1.3 6.5 1.4 9.8.1 3.3-.2 6.7-1.5 9.8-.6 1.6-1.5 3-2.7 4.2-1.2 1.2-2.6 2.1-4.2 2.7 3-1.5 5.1-4.2 6.1-7.2 1.1-3 1.3-6.3 1.2-9.5-.1-3.2-.5-6.5-1.1-9.7-.3-1.6-.7-3.2-1.1-4.8-.4-1.5-.8-3.1-1.5-4.6" fill="#144e73"/><ellipse cx="32" cy="31.5" rx="7.2" ry="7.4" fill="#1a86b1"/><ellipse cx="32" cy="30.8" rx="6.8" ry="6.7" fill="#a59872"/><ellipse cx="32" cy="30.8" rx="5.8" ry="5.7" fill="#dbcdaa"/><ellipse cx="32" cy="30.8" rx="3.9" ry="3.8" fill="#4c3f2e"/><ellipse cx="32" cy="30.8" rx="3.9" ry=".7" fill="#a59872"/><ellipse cx="32" cy="30.8" rx=".7" ry="3.8" fill="#dbcdaa"/><path d="m29.7 8.9c-.6-.6-1.7-.6-2.3 0l-4 3.9h-5.2c-.9 0-2.1.3-2.1 1.7 0 .9.7 1.6 1.7 1.6h6.2c0 0 0 0 0 0 .4 0 .9-.2 1.2-.5l4.5-4.4c.7-.6.7-1.7 0-2.3" fill="#a59872"/><path d="m28.6 9.6c-.5-.5-1.4-.6-2-.1l-3.3 3.3h-5.2c-.8 0-1.3.7-1.3 1.4 0 1.1.9 1.4 1.7 1.4h5.3c0 0 0 0 0 0 .4 0 .7-.1 1-.4l3.8-3.7c.6-.5.6-1.4 0-1.9" fill="#dbcdaa"/><ellipse cx="28.7" cy="9.4" rx="3.5" ry="3.4" fill="#a59872"/><ellipse cx="28.4" cy="9.1" rx="2.9" ry="2.9" fill="#dbcdaa"/><path d="m34.3 8.9c.6-.6 1.7-.6 2.3 0l4 3.9h5.2c.9 0 2.1.3 2.1 1.7 0 .9-.7 1.6-1.7 1.6h-6.2c0 0 0 0 0 0-.4 0-.9-.2-1.2-.5l-4.5-4.4c-.7-.6-.7-1.7 0-2.3" fill="#a59872"/><path d="m35.4 9.6c.5-.5 1.4-.6 2-.1l3.3 3.3h5.2c.8 0 1.3.7 1.3 1.4 0 1.1-.9 1.4-1.7 1.4h-5.3c0 0 0 0 0 0-.4 0-.7-.1-1-.4l-3.8-3.7c-.6-.5-.6-1.4 0-1.9" fill="#dbcdaa"/><ellipse cx="35.3" cy="9.4" rx="3.5" ry="3.4" fill="#a59872"/><ellipse cx="35.6" cy="9.1" rx="2.9" ry="2.9" fill="#dbcdaa"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f45c.svg b/riot/emojione/svg/1f45c.svg new file mode 100644 index 0000000..3916593 --- /dev/null +++ b/riot/emojione/svg/1f45c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.9 58.6c0 4.6-57.7 4.6-57.7 0 0-27.1-2-35.4 28.9-35.4 30.8 0 28.8 8.3 28.8 35.4" fill="#7fc6cc"/><g fill="#695b5b"><path d="m6.7 30.7c3.6-3.8 11.6-5.7 25.3-5.7s21.7 1.8 25.3 5.7c1 1 1.7 2.2 2.3 3.6-2.4-8.2-9.1-11.9-27.6-11.9-18.4 0-25.2 3.8-27.6 11.9.6-1.3 1.3-2.5 2.3-3.6"/><path d="m20 27.2v11.1c0 .7-.7 1.2-1.5 1.2h-7.8c-.8 0-1.5-.5-1.5-1.2v-8.7l-3.1 2.4v9c0 .9.9 1.6 2 1.6h13.1c1.1 0 2-.7 2-1.6v-13.8h-3.2"/><path d="m54.7 29.6v8.7c0 .7-.7 1.2-1.5 1.2h-7.8c-.8 0-1.5-.5-1.5-1.2v-11.1h-3.1v13.8c0 .9.9 1.6 2 1.6h13.1c1.1 0 2-.7 2-1.6v-9l-3.2-2.4"/></g><g fill="#998a91"><path d="m60.2 60.6c-1 0-1.7-.8-1.7-1.7 0-1.2 0-2.4 0-3.6v-.7c0-10.9.1-18.1-3.4-21.9-3-3.2-10.5-4.7-23.1-4.7-12.6 0-20.1 1.6-23.1 4.7-3.5 3.8-3.5 11-3.5 21.9v.5c0 1.2 0 2.5 0 3.8 0 .9-.8 1.7-1.7 1.7s-1.7-.8-1.7-1.7c0-1.5 0-2.9 0-4.3 0-11.6-.1-19.4 4.4-24.2 3.7-4 11.8-5.9 25.6-5.9 13.8 0 21.9 1.9 25.6 5.9 4.5 4.8 4.4 12.6 4.4 24.2v1c0 1 0 2.1 0 3.2 0 1.1-.8 1.8-1.8 1.8"/><path d="m49.4 26.5c-.8 0-1.5-.5-1.5-1.2 0-16.7-9.1-20-15.9-20s-15.9 3.3-15.9 20c0 .7-.7 1.2-1.5 1.2-.8 0-1.5-.5-1.5-1.2.1-12.5 6.2-23.3 18.9-23.3 12.7 0 18.8 10.8 18.8 23.3 0 .7-.6 1.2-1.4 1.2"/></g><g fill="#c9c9c9"><path d="m14.4 35c-3.1 0-5.6-2.5-5.6-5.6s2.5-5.6 5.6-5.6c3.1 0 5.6 2.5 5.6 5.6s-2.5 5.6-5.6 5.6m0-9.4c-2.1 0-3.8 1.7-3.8 3.8s1.7 3.8 3.8 3.8 3.7-1.7 3.7-3.8-1.6-3.8-3.7-3.8"/><path d="m49.6 35c-3.1 0-5.6-2.5-5.6-5.6s2.5-5.6 5.6-5.6c3.1 0 5.6 2.5 5.6 5.6s-2.5 5.6-5.6 5.6m0-9.4c-2.1 0-3.8 1.7-3.8 3.8s1.7 3.8 3.8 3.8c2.1 0 3.8-1.7 3.8-3.8s-1.7-3.8-3.8-3.8"/></g><g fill="#695b5b"><path d="m17.4 26.3c0 1-.8 1.9-1.9 1.9h-2.2c-1 0-1.9-.8-1.9-1.9v-3.3c0-1 .8-1.9 1.9-1.9h2.2c1 0 1.9.8 1.9 1.9v3.3"/><path d="m52.6 26.3c0 1-.8 1.9-1.9 1.9h-2.2c-1 0-1.9-.8-1.9-1.9v-3.3c0-1 .8-1.9 1.9-1.9h2.2c1 0 1.9.8 1.9 1.9v3.3"/><path d="m17.4 35.5c0 1-.8 1.9-1.9 1.9h-2.2c-1 0-1.9-.8-1.9-1.9v-3.3c0-1 .8-1.9 1.9-1.9h2.2c1 0 1.9.8 1.9 1.9v3.3"/><path d="m52.6 35.5c0 1-.8 1.9-1.9 1.9h-2.2c-1 0-1.9-.8-1.9-1.9v-3.3c0-1 .8-1.9 1.9-1.9h2.2c1 0 1.9.8 1.9 1.9v3.3"/></g><g fill="#fff"><circle cx="14.4" cy="23.3" r="1.4"/><circle cx="49.6" cy="23.3" r="1.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f45d.svg b/riot/emojione/svg/1f45d.svg new file mode 100644 index 0000000..b877d3e --- /dev/null +++ b/riot/emojione/svg/1f45d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50 19.8c0 0 11.6-4.4 9.9-15.8l3.4 2.5c0 0 0 10.1-10.3 16.6l-3-3.3" fill="#6f2833"/><g fill="#db3557"><path d="m50 19.7c0 0 2.9-12.9 9.9-15.7l3.4 2.5c0 0-7.2 4.1-10.3 16.6l-3-3.4"/><path d="m63.3 55.9c0 5.5-62.6 5.5-62.6 0 0-32.6-2.2-42.6 31.3-42.6 33.4 0 31.3 10 31.3 42.6"/></g><path fill="#6f2833" d="m1.9 31h60.2v7h-60.2z"/><path fill="#f26b8c" d="m1.9 32h60.2v5h-60.2z"/><path fill="#db3557" d="m60.9 35.8h-57.8v-2.6h57.8z"/><g fill="#f26b8c"><path d="m3.6 29h3.5v1h-3.5z"/><path d="m8.5 29h3.5v1h-3.5z"/><path d="m13.3 29h3.5v1h-3.5z"/><path d="m18.1 29h3.5v1h-3.5z"/><path d="m23 29h3.5v1h-3.5z"/><path d="m27.8 29h3.5v1h-3.5z"/><path d="m32.6 29h3.5v1h-3.5z"/><path d="m37.5 29h3.5v1h-3.5z"/><path d="m42.3 29h3.5v1h-3.5z"/><path d="m47.1 29h3.5v1h-3.5z"/><path d="m52 29h3.5v1h-3.5z"/><path d="m56.8 29h3.5v1h-3.5z"/><path d="m3.6 39h3.5v1h-3.5z"/><path d="m8.5 39h3.5v1h-3.5z"/><path d="m13.3 39h3.5v1h-3.5z"/><path d="m18.1 39h3.5v1h-3.5z"/><path d="m23 39h3.5v1h-3.5z"/><path d="m27.8 39h3.5v1h-3.5z"/><path d="m32.6 39h3.5v1h-3.5z"/><path d="m37.5 39h3.5v1h-3.5z"/><path d="m42.3 39h3.5v1h-3.5z"/><path d="m47.1 39h3.5v1h-3.5z"/><path d="m52 39h3.5v1h-3.5z"/><path d="m56.8 39h3.5v1h-3.5z"/></g><path d="m62.6 57.3c-.5 0-.9-.4-.9-1 0-1.5 0-2.9 0-4.3v-.9c.1-13.4.1-22.2-4-27.1-3.4-4.1-11.6-6-25.7-6-14.1 0-22.3 1.9-25.7 6.1-4.1 4.9-4 13.7-4 27.1v.6c0 1.5 0 3 0 4.5 0 .5-.4 1-.9 1s-.9-.4-.9-1c0-1.8 0-3.5 0-5.1-.1-13.9-.1-23 4.5-28.5 3.8-4.5 12.4-6.7 27-6.7s23.2 2.1 27 6.7c4.5 5.5 4.5 14.6 4.5 28.4v.4c0 1.5 0 3.1 0 4.8 0 .5-.4 1-.9 1" fill="#fff"/><path d="m32 16.5c13.9 0 22.8 1.9 26.7 6.5 4.4 5.3 4.4 14.4 4.3 28.1 0 1.6 0 3.4 0 5.1 0 .3-.2.5-.4.5-.2 0-.4-.2-.4-.5 0-1.8 0-3.5 0-5.2.1-13.5.1-22.4-4.1-27.4-3.7-4.4-12.5-6.2-26.1-6.2-13.6 0-22.4 1.8-26.1 6.2-4.2 5-4.2 13.9-4.1 27.4 0 1.6 0 3.4 0 5.2 0 .3-.2.5-.4.5s-.4-.1-.4-.4c0-1.8 0-3.5 0-5.1-.1-13.8-.1-22.8 4.3-28.1 3.9-4.7 12.8-6.6 26.7-6.6m0-1c-14.8 0-23.5 2.2-27.4 6.9-4.7 5.6-4.6 14.8-4.6 28.7 0 1.6 0 3.4 0 5.1 0 .8.6 1.5 1.4 1.5s1.4-.7 1.4-1.5c0-1.6 0-3.1 0-4.5v-.6c-.1-13.2-.1-22 3.9-26.7 3.3-4 11.6-5.9 25.4-5.9 13.8 0 22.1 1.9 25.4 5.9 4 4.8 3.9 13.5 3.9 26.7v.9c0 1.4 0 2.8 0 4.3 0 .8.6 1.5 1.4 1.5s1.4-.7 1.4-1.5c0-1.6 0-3.2 0-4.8v-.4c-.2-13.9-.1-23.1-4.8-28.7-3.9-4.7-12.6-6.9-27.4-6.9z" fill="#c9c9c9"/><ellipse cx="46.6" cy="34.8" rx="3.4" ry="2.8" fill="#fff"/><g fill="#c9c9c9"><path d="m46.6 38.1c-2.1 0-3.9-1.5-3.9-3.3 0-1.8 1.7-3.3 3.9-3.3s3.9 1.5 3.9 3.3c0 1.8-1.7 3.3-3.9 3.3m0-5.6c-1.6 0-2.9 1-2.9 2.3 0 1.3 1.3 2.3 2.9 2.3s2.9-1 2.9-2.3c.1-1.3-1.3-2.3-2.9-2.3"/><path d="m45.8 33.6h4.2v2.4h-4.2z"/></g><path d="m49.8 44.1c.2 1.2-.3 2.4-1.3 2.4h-2c-1 0-1.5-1.2-1.3-2.4l.8-5.1c.1-.4.5-.7.9-.7h1c.5 0 .9.3.9.7l1 5.1" fill="#fff"/><path d="m48.5 47h-2c-.5 0-.9-.2-1.3-.6-.5-.6-.7-1.5-.5-2.4l.9-5.1c.1-.6.7-1.1 1.4-1.1h1c.7 0 1.3.5 1.4 1.1l.9 5.1c.2.9 0 1.8-.5 2.4-.4.4-.8.6-1.3.6m-1.5-8.2c-.2 0-.4.2-.5.3l-.9 5.1c-.1.6 0 1.2.3 1.6.1.2.3.3.5.3h2c.2 0 .4-.1.5-.3.3-.4.4-1 .3-1.6l-.9-5.1c0-.1-.2-.3-.5-.3.1 0-.8 0-.8 0" fill="#c9c9c9"/><path fill="#9b9596" d="m47 33.2h.9v6.1h-.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f45e.svg b/riot/emojione/svg/1f45e.svg new file mode 100644 index 0000000..7dbe5d8 --- /dev/null +++ b/riot/emojione/svg/1f45e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#212326"><path d="m4.7 13.5c-2.6-.2-2.7 5.1-2.7 7.7.1 4.8 12.1 14.5 13.9 14.3 1.3-.1 2.8-1.8 4.7-1.5 0 0-11-20.2-15.9-20.5"/><path d="m22.7 33c-2.7 2.7-.7 13.3 1.7 16.3 5.6 6.9 21.6 12.7 29.7 12.7 3.9 0 7.4-1.9 7.8-5.2.6-4.6-3.2-12.8-8.2-15.6-7.4-4.1-25.2-14.3-31-8.2"/></g><path d="m7.4 2.6c-3.2 2.8-4.6 12.2-3.5 16.2 1.2 4.3 10.7 9 13.2 12.6 2.7 3.8 4.7 13.6 8.3 16.5 6.5 5.5 24.6 12.7 32.6 9.8 11.3-4.2-16.2-35.8-26.8-42.7-6.2-4-19.8-15.9-23.8-12.4" fill="#3d4347"/><g fill="#fff"><path d="m25.9 45.8c2.8 1.9 5.8 3.5 8.9 4.9 3.1 1.4 6.3 2.6 9.5 3.5 1.6.5 3.3.9 4.9 1.1 1.6.3 3.3.4 4.9.2 1.6-.2 3.1-.8 3.4-2.1.4-1.3 0-2.9-.6-4.4-.2-.5 0-1 .5-1.2.5-.2 1 0 1.2.5.3.8.6 1.7.7 2.6.1.9.1 1.9-.3 2.9-.4 1-1.2 1.8-2.1 2.2-.9.4-1.8.6-2.7.7-1.8.1-3.5-.1-5.2-.4-1.7-.3-3.4-.8-5-1.4-3.3-1.1-6.4-2.4-9.5-4-2.9-1.4-5.9-3.1-8.6-5.1"/><path d="m15 29.2c7.7 11.5 11.9 12.8 17.6 14.8 1.7.6 5.7 1.1 7.2 0 1.6-1.2 1.8-7.8 1.8-7.8s7.8 4.4 9.8 2.9c2.1-1.6-9-14.2-9-14.2s3 4.3 1.8 4.7c-6.2 2.1-10.9-11.8-13.2-14.7-.7-.9-2-2.2-3.1-2.2-1.6-.1-7 .9-6.9 2.5.1 1.3 3.1-.6 4.2.2 2.9 2.2 7.7 10.3 7.4 13.9-.2 2.4-4.8 9-7.2 9.4-1.4.3-10.4-9.5-10.4-9.5"/></g><path d="m8.2 2.8c-2.1 1.3-1.2 7.5-.2 9.8.8 1.7 3.9 4.5 5.7 5 2.6.7 10.5-3.6 10.5-3.6s5.2 1.4 4.2.5c-3.1-3.1-17.4-13.4-20.2-11.7" fill="#a6876c"/><g fill="#212326"><path d="m58.6 39.4c-.1 0-.1 0-.2 0-.2 0-5.3-1-8.3-4.6-2.1-2.5-3.3-5.4-4.4-8.2-1.6-3.9-3.1-7.7-7.2-9.9-1.9-1.1-4.1-.4-4.1-.4-.5.2-1.1-.1-1.3-.6-.2-.5.1-1.1.6-1.3.1 0 3-1 5.7.5 4.7 2.6 6.4 6.8 8.1 10.9 1.1 2.6 2.2 5.4 4.1 7.7 2.5 3 7.1 3.9 7.1 3.9.5.1.9.6.8 1.2 0 .5-.4.8-.9.8"/><path d="m29.5 30.2c-.2 0-.4-.1-.6-.2-.4-.3-.5-1-.2-1.4 2.1-2.7 7.6-5.9 13.4-3 .5.2.7.8.5 1.3-.2.5-.8.7-1.3.5-5.3-2.6-9.8 1-11 2.5-.2.1-.5.3-.8.3"/><path d="m27.3 26.9c-.2 0-.4-.1-.6-.2-.4-.3-.5-1-.2-1.4 2.1-2.7 7.6-5.9 13.4-3 .5.2.7.8.5 1.3-.2.5-.8.7-1.3.5-5.3-2.6-9.8 1-11 2.5-.2.1-.5.3-.8.3"/><path d="m25 23.5c-.2 0-.4-.1-.6-.2-.4-.3-.5-1-.2-1.4 2.1-2.7 7.6-5.9 13.4-3 .5.2.7.8.5 1.3-.2.5-.8.7-1.3.5-5.3-2.6-9.8 1-11 2.5-.2.2-.5.3-.8.3"/><path d="m22.9 20.9c-.2 0-.4-.1-.6-.2-.4-.3-.5-1-.2-1.4 2.1-2.7 7.6-5.9 13.4-3 .5.2.7.8.5 1.3-.2.5-.8.7-1.3.5-5.3-2.6-9.8 1-11 2.5-.2.2-.5.3-.8.3"/><path d="m20.7 18c-.2 0-.4-.1-.6-.2-.4-.3-.5-1-.2-1.4 2.1-2.7 7.6-5.9 13.4-3 .5.2.7.8.5 1.3-.2.5-.8.7-1.3.5-5.3-2.6-9.8 1-11 2.5-.2.2-.5.3-.8.3"/><path d="m15.8 56.2c-3.7 0-7.4-1.2-7.6-1.3-.5-.2-.8-.7-.6-1.3s.7-.8 1.3-.6c2.2.7 8.7 2.2 11.2.1 2.9-2.4 2-6.1.1-12-1.8-5.7-3.7-12.1-1.2-18.7.6-1.5 2.3-7.1 2.3-7.2.2-.5.7-.8 1.2-.7.5.2.8.7.7 1.2-.1.2-1.7 5.7-2.3 7.3-2.3 6-.4 12 1.3 17.4 1.7 5.6 3.4 10.9-.8 14.2-1.5 1.3-3.5 1.6-5.6 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f45f.svg b/riot/emojione/svg/1f45f.svg new file mode 100644 index 0000000..a54733e --- /dev/null +++ b/riot/emojione/svg/1f45f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m7.6 13.2c0 0 1.7-2.2 9.2 1.2 5.9 2.7-10.4 10.4-12 7.2-1-1.9 2.8-8.4 2.8-8.4" fill="#a8d600"/><path d="m52 38.1c-9.2-6.4-18.8-25.4-20-25.4-3.4 0-5.6 1.3-5.6 1.3l21.9 31.8c0 .1 4.9-6.9 3.7-7.7" fill="#5b636b"/><path d="m56.5 41.1c-1.4-1.2-5.4-2-6.5-3.1-4.2-4.6-13-12.7-20.5-26.4-2.7-5.1-15.2 3.8-15.2 3.8l21.8 34.7c.2 0 25.6-4.7 20.4-9" fill="#333"/><path d="m36.9 47.9c1.3-1.1 1.2-7.1.1-8.6-6.8-9.8-18-24.6-22.4-24.6-4.6 0-5.4 6.2-8 6.2-2.2 0 .9-7.8.9-7.8-4.2 4.7-4.9 19.7-4.9 19.7s17.8 29.3 34.3 15.1" fill="#5b636b"/><g fill="#69727a"><path d="m2.7 31.5c0 0-.4-3.9 1.3-9.1.1 5.9 3.8 7.3 2.8 15.1l-4.1-6"/><path d="m22.2 49.6c4.6-10.7 24.4.1 34.3-8.5 1.6.2 4.8 5.7 4.8 5.7s-3.6 14.4-39.1 2.8"/></g><path d="m2.7 31c-1 0-.8 6.9 0 8 5.3 6.6 10.8 8.3 18.1 17.1 8.8 10.5 41.2 5.5 41.2-3.5 0-7.4-.9-6.7-.9-6.7-2.3 6-22.8 7.3-30.3 5.7-16.5-3.4-27-20.6-28.1-20.6" fill="#d0d0d0"/><g fill="#333"><ellipse cx="14.8" cy="18.2" rx="1.4" ry="1.7"/><ellipse cx="18.8" cy="22.8" rx="1.4" ry="1.7"/><ellipse cx="22.4" cy="27.2" rx="1.4" ry="1.7"/><ellipse cx="26.1" cy="32.7" rx="1.4" ry="1.7"/><ellipse cx="29.6" cy="36.9" rx="1.4" ry="1.7"/><ellipse cx="33.3" cy="41.8" rx="1.4" ry="1.7"/></g><g fill="#a8d600"><path d="m33.3 43c-.2 0-.5-.1-.7-.3-.4-.5-.4-1.2 0-1.7.2-.3 5.6-6.6 15.8-6.6.5 0 1 .5 1 1.2 0 .6-.4 1.2-1 1.2-9.4 0-14.4 5.9-14.5 5.9-.1.2-.3.3-.6.3"/><path d="m29.7 38.1c-.2 0-.4-.1-.6-.3-.4-.4-.5-1.1-.2-1.6.2-.3 4.4-6.6 16.2-6.6.5 0 1 .5 1 1.2 0 .6-.4 1.2-1 1.2-10.7 0-14.6 5.7-14.7 5.7-.1.2-.4.4-.7.4"/><path d="m26.2 33.9c-.2 0-.5-.1-.7-.3-.4-.4-.4-1.2-.1-1.7 4.8-6.4 16.1-6.5 16.6-6.5.5 0 1 .5 1 1.2 0 .6-.4 1.2-1 1.2-.1 0-10.9.1-15.2 5.7-.1.3-.4.4-.6.4"/><path d="m22.5 28.3c-.3 0-.6-.2-.8-.5-.3-.5-.2-1.3.2-1.6.2-.2 6-5.3 16.8-5.3.5 0 1 .5 1 1.2s-.4 1.2-1 1.2c-10.1 0-15.6 4.8-15.6 4.9-.2.1-.4.1-.6.1"/><path d="m18.9 24c-.3 0-.6-.2-.8-.4-.3-.5-.3-1.2.2-1.7.2-.2 5.7-5.4 17.5-5.4.5 0 1 .5 1 1.2 0 .6-.4 1.2-1 1.2-11.1 0-16.2 4.9-16.3 4.9-.2.1-.4.2-.6.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f460.svg b/riot/emojione/svg/1f460.svg new file mode 100644 index 0000000..57b7e17 --- /dev/null +++ b/riot/emojione/svg/1f460.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.1 28.1l2 30.7 2.2-.8c0 0-1.4-20.5 3.8-22.3l-8-7.6" fill="#ed4c5c"/><path d="m49.4 47.7c0 0-4.3-1.4-14.1 1.4-9.7 2.8-13.5-4.4-24.3-29.9-5.1-12-7.5-18.4-2.2-19.2 0 0-.1 0-.3 0-2.5.2-4 2.5-4.4 3.2-2.5 4.5-6.5 9.7-2.4 18.3 0 0 3.7 14.3 3.7 36.7l2.6.6c0 0-1.1-24.7 1.9-25.6 0 0 2.6 2.7 9.7 16.7 6.5 12.7 12.8 14.1 19 14.1h23c1.2-.3 2.4-1.1 2.4-4.4 0-3.4-7.6-9.2-14.6-11.9" fill="#3e4347"/><path d="m11 19.1c10.8 25.5 14.6 32.7 24.3 29.9 6.1-1.7 10-1.8 12.2-1.7-13.3-7.3-14.8-10.9-22.7-27.7-8.3-17.5-11.4-19.6-16-19.6-5.3.8-2.9 7.2 2.2 19.1" fill="#94989b"/><path d="m11 19.1c10.8 25.5 14.6 32.7 24.3 29.9.3-.1.6-.2.8-.2-12.1-8.4-18.1-27.3-21.7-33.5-2-3.4-4.6-4.4-6.8-4.6.9 2.5 2 5.3 3.4 8.4" fill="#d0d0d0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f461.svg b/riot/emojione/svg/1f461.svg new file mode 100644 index 0000000..e17e173 --- /dev/null +++ b/riot/emojione/svg/1f461.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m0 17.3c0 0 4.4 4.2 8 22.1 0 0 .7 3.1 6.3 2.3 4.5-.7 10.1-.3 21.5 4.9 0 0-8-10.8-17.3-18.7-7.5-6.3-16.5-10-18.5-10.6" fill="#725944"/><g fill="#298959"><path d="m31.9 37.1c-10.4-4.6-15.8-5.9-20-5.3-3.6.5-5.3-.5-6-1.4l.4 1.6c0 0 .7 2.9 6.3 2 4.5-.7 10.1.7 21.5 5.9 0 0-.8-1-2.2-2.8"/><path d="m45.8 32.9c0 0 3.3 1.6 3.2 4.6 1 .1 9.9 2.2 10.6 2.4-2-4.4-7.5-8.8-13.8-7"/></g><path d="m7.1 15c6.1 0 13.6 1.3 20.4 7.6 8 7.5 16 13.3 24.5 14.9 9.1 1.7 14 1.9 11.2 6.2-2.8 4.4-28 6-34.1-4.2-13-22.3-42.7-24.5-22-24.5" fill="#e2c69e"/><path d="m64 41.6c0 .7-.2 1.4-.7 2.2-2.8 4.4-28 6-34.1-4.2-9.9-16.9-29.3-22.3-29.2-23.9v1.6c-.1 1.6 18.5 6.8 28.4 23.7 6.1 10.3 32.1 9.4 34.9 5 .5-.8.7-1.5.7-2.1v-2.3" fill="#b39066"/><path d="m58.4 35.6c-5.9-7.4-20.1-9.5-30.8 1.3 4.7 9 10 8.5 10 8.5 1.1-15.6 12.7-12.5 16.4-10.8 3.1 1.4 3.6 3.9 3.6 3.9s1.3.3 2.3.5c.1-.9-1-2.8-1.5-3.4" fill="#52c18e"/><path d="m49.5 30c-7.6-2.1-14.7 2.6-20.6 9.2.5.9 1.8 2.4 1.8 2.4 5.1-6.5 11.7-13.4 18.8-11.6" fill="#298959"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f462.svg b/riot/emojione/svg/1f462.svg new file mode 100644 index 0000000..72c94f3 --- /dev/null +++ b/riot/emojione/svg/1f462.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.6 58.8c-5.5 0-50.7-15.1-50.7-15.1l1.5 18.3h6.3c0 0 .1-5.8 1-8.7 8.2 0 12.4 8.7 15.6 8.7 5.1 0 21.3 0 26.3 0 .5 0 .5-3.2 0-3.2" fill="#3e4347"/><path d="m54.5 50.3c-15.2-5.5-23.3-10.6-24.2-36.1l-21.9-.4c1.6 19.5-2.1 14.2-3 25.5-.4 5.3 3.5 10 10.4 10 8.9 0 15.9 9.5 17.5 9.5 5 0 24.6 0 24.6 0s2.5-6.3-3.4-8.5" fill="#c94747"/><path fill="#3e4347" d="m13.8 11.1h2.2v21.9h-2.2z"/><path d="M34,2.7H5L6.2,14c0,0,4.3,1.6,13.2,1.6c8,0,13.2-0.8,13.2-0.8L34,2.7z" fill="#ed4c5c"/><path d="m19.5 2c-5.8 0-14.5.3-14.5.7 0 .4 8.7.7 14.5.7s14.5-.3 14.5-.7c0-.4-8.7-.7-14.5-.7" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f463.svg b/riot/emojione/svg/1f463.svg new file mode 100644 index 0000000..2330610 --- /dev/null +++ b/riot/emojione/svg/1f463.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m27 27.2c-4.5 8 8.1 13.9 1 16.9-7.1 3-10.5-3.6-14-12.1-3.6-8.4-.7-17.7 6.4-20.7 7-2.9 12.5 5.4 6.6 15.9"/><path d="m23.8 5.4c0-2.3 1.6-3.5 3.5-3.4 1.9 0 3.5 1.2 3.5 3.5 0 3.3-1.6 5-3.5 4.9-1.9 0-3.5-1.6-3.5-5"/><path d="m17.9 6.6c-.2-1.7.8-2.6 2.1-2.8 1.4-.2 2.6.4 2.9 2.1.4 2.4-.6 3.7-2 3.9-1.3.1-2.6-.9-3-3.2"/><path d="m13.6 9.4c-.4-1.4.4-2.3 1.5-2.7 1.2-.3 2.3.1 2.7 1.5.6 2-.1 3.3-1.3 3.6s-2.3-.3-2.9-2.4"/><path d="m11.3 13.4c-.5-1 0-1.9.9-2.2s1.8-.2 2.2.9c.6 1.5.3 2.5-.6 2.9-.9.4-1.9-.1-2.5-1.6"/><path d="m9.8 16.9c-.4-.8 0-1.5.7-1.8s1.4-.1 1.8.7c.5 1.2.2 2-.5 2.3-.6.3-1.4 0-2-1.2"/><path d="m35.3 44.2c2.9 8.7-10.5 12.2-4.1 16.4 6.4 4.2 11-1.6 16-9.3s3.9-17.3-2.5-21.5c-6.3-4.2-13.3 2.9-9.4 14.4"/><path d="m42.4 23.3c.4-2.3-.9-3.7-2.8-4-1.9-.3-3.7.5-4.1 2.8-.6 3.3.7 5.2 2.6 5.5 1.8.3 3.7-1 4.3-4.3"/><path d="m48 25.5c.5-1.6-.3-2.7-1.6-3.2-1.3-.5-2.7-.1-3.2 1.5-.8 2.3-.1 3.7 1.2 4.2 1.3.5 2.8-.2 3.6-2.5"/><path d="m51.7 29.1c.7-1.3.1-2.4-1-2.9s-2.3-.3-3 1c-.9 1.9-.5 3.2.6 3.8 1.1.5 2.5 0 3.4-1.9"/><path d="m53.3 33.5c.6-.9.3-1.8-.5-2.4-.8-.5-1.7-.5-2.4.4-.9 1.3-.7 2.4.1 3 .8.6 1.8.3 2.8-1"/><path d="m54 37.2c.5-.8.3-1.5-.4-1.9s-1.4-.4-1.9.4c-.7 1.1-.6 1.9 0 2.4.7.3 1.6.1 2.3-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f464.svg b/riot/emojione/svg/1f464.svg new file mode 100644 index 0000000..9c0e92d --- /dev/null +++ b/riot/emojione/svg/1f464.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.7 56.1c-.3-.8-19.1-12-19.1-12-2.6-1.9-3-3.8-.8-4.9 1.8-.9 3.4-3.9 4.6-7.1.2.1.4.1.7 0 5-1.5 5.1-11.5 1.7-9.7 3.1-27.2-34.5-27.2-31.4 0-3.4-1.8-3.4 8.3 1.6 9.7.2.1.5 0 .7 0 1.2 3.2 2.8 6.2 4.6 7.1 2.2 1.1 1.7 2.9-.9 5-.9.7-13 7.5-16.4 9.8-1.4.9-2.4 1.7-2.6 2.2-1 2.2-1.4 5.8-1.4 5.8h60c0 0-.4-3.6-1.3-5.9" fill="#5d6d74"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f465.svg b/riot/emojione/svg/1f465.svg new file mode 100644 index 0000000..4ca629e --- /dev/null +++ b/riot/emojione/svg/1f465.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#5d6d74"><path d="m45.5 57.7c-.3-.6-14.2-8.9-14.2-8.9-2-1.4-2.2-2.8-.6-3.7 1.4-.7 2.5-2.9 3.4-5.3.2.1.3.1.5 0 3.7-1.1 3.8-8.5 1.3-7.2 2.3-20.1-25.6-20.2-23.3 0-2.5-1.3-2.4 6.1 1.3 7.2.2 0 .3 0 .5 0 .9 2.4 2 4.6 3.4 5.3 1.6.8 1.3 2.1-.7 3.7-.6.5-9.6 5.5-12.2 7.2-1 .7-1.8 1.3-1.9 1.6-.7 1.7-1 4.4-1 4.4h44.4c0 0-.2-2.7-.9-4.3"/><path d="m34.5 19.9c1.8 2 3.8 5.5 3.7 11 .7.5 1.3 1.4 1.5 2.8.4 2.6-.7 6.8-4 8.1-.9 2.1-1.9 3.7-3 4.6h29.3c0 0-.3-2.7-1-4.3-.3-.6-14.2-8.9-14.2-8.9-2-1.4-2.2-2.8-.6-3.6 1.4-.7 2.5-2.9 3.4-5.3.2.1.3.1.5 0 3.7-1.1 3.8-8.5 1.3-7.2 2.3-19.7-24.4-20.1-23.3-1.2 2.5.7 4.7 2 6.4 4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f466-1f3fb.svg b/riot/emojione/svg/1f466-1f3fb.svg new file mode 100644 index 0000000..f0c2365 --- /dev/null +++ b/riot/emojione/svg/1f466-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c23,0,28,15.3,28,24c0,7.7-1,11-1,11H5c0,0-1-3.3-1-11C4,17.3,9,2,32,2z" fill="#594640"/><path d="m57.2 33c0 0-.8-3.3-1.2-10.2-.5-7.5-10.9-1.5-24-1.5-13.1 0-23.5-6-24 1.5-.4 6.9-1.2 10.2-1.2 10.2-6.5 0-6.5 10.6.4 10.6 0 11.4 14.3 18.4 24.8 18.4s24.8-7 24.8-18.4c6.9 0 6.9-10.6.4-10.6" fill="#ffe1bd"/><circle cx="44.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="44.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="35.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="19.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="35.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9 4.1 0 7.3-2.3 8.9-4.9.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f466-1f3fc.svg b/riot/emojione/svg/1f466-1f3fc.svg new file mode 100644 index 0000000..296576e --- /dev/null +++ b/riot/emojione/svg/1f466-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c23,0,28,15.3,28,24c0,7.7-1,11-1,11H5c0,0-1-3.3-1-11C4,17.3,9,2,32,2z" fill="#dbb471"/><path d="m57.2 33c0 0-.8-3.3-1.2-10.2-.5-7.5-10.9-1.5-24-1.5-13.1 0-23.5-6-24 1.5-.4 6.9-1.2 10.2-1.2 10.2-6.5 0-6.5 10.6.4 10.6 0 11.4 14.3 18.4 24.8 18.4 10.5 0 24.8-7 24.8-18.4 6.9 0 6.9-10.6.4-10.6" fill="#fed0ac"/><circle cx="44.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="44.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="35.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="19.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="35.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9s7.3-2.3 8.9-4.9c.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f466-1f3fd.svg b/riot/emojione/svg/1f466-1f3fd.svg new file mode 100644 index 0000000..eafb251 --- /dev/null +++ b/riot/emojione/svg/1f466-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c23,0,28,15.3,28,24c0,7.7-1,11-1,11H5c0,0-1-3.3-1-11C4,17.3,9,2,32,2z" fill="#594640"/><path d="m57.2 33c0 0-.8-3.3-1.2-10.2-.5-7.5-10.9-1.5-24-1.5-13.1 0-23.5-6-24 1.5-.4 6.9-1.2 10.2-1.2 10.2-6.5 0-6.5 10.6.4 10.6 0 11.4 14.3 18.4 24.8 18.4 10.5 0 24.8-7 24.8-18.4 6.9 0 6.9-10.6.4-10.6" fill="#d6a57c"/><circle cx="44.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="44.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="35.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="19.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="35.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9s7.3-2.3 8.9-4.9c.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f466-1f3fe.svg b/riot/emojione/svg/1f466-1f3fe.svg new file mode 100644 index 0000000..1623d30 --- /dev/null +++ b/riot/emojione/svg/1f466-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c23,0,28,15.3,28,24c0,7.7-1,11-1,11H5c0,0-1-3.3-1-11C4,17.3,9,2,32,2z" fill="#231f20"/><path d="m57.2 33c0 0-.8-3.3-1.2-10.2-.5-7.5-10.9-1.5-24-1.5-13.1 0-23.5-6-24 1.5-.4 6.9-1.2 10.2-1.2 10.2-6.5 0-6.5 10.6.4 10.6 0 11.4 14.3 18.4 24.8 18.4 10.5 0 24.8-7 24.8-18.4 6.9 0 6.9-10.6.4-10.6" fill="#b47d56"/><circle cx="44.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="44.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="35.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="19.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="35.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9 4.1 0 7.3-2.3 8.9-4.9.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f466-1f3ff.svg b/riot/emojione/svg/1f466-1f3ff.svg new file mode 100644 index 0000000..051400b --- /dev/null +++ b/riot/emojione/svg/1f466-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c23,0,28,15.3,28,24c0,7.7-1,11-1,11H5c0,0-1-3.3-1-11C4,17.3,9,2,32,2z" fill="#231f20"/><path d="m57.2 33c0 0-.8-3.3-1.2-10.2-.5-7.5-10.9-1.5-24-1.5-13.1 0-23.5-6-24 1.5-.4 6.9-1.2 10.2-1.2 10.2-6.5 0-6.5 10.6.4 10.6 0 11.4 14.3 18.4 24.8 18.4 10.5 0 24.8-7 24.8-18.4 6.9 0 6.9-10.6.4-10.6" fill="#8a6859"/><circle cx="44.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="44.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="35.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="19.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="35.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9 4.1 0 7.3-2.3 8.9-4.9.4-.7-.2-1.4-.8-1" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f466.svg b/riot/emojione/svg/1f466.svg new file mode 100644 index 0000000..5e233fc --- /dev/null +++ b/riot/emojione/svg/1f466.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c23,0,28,15.3,28,24c0,7.7-1,11-1,11H5c0,0-1-3.3-1-11C4,17.3,9,2,32,2z" fill="#ffb300"/><path d="m57.2 33c0 0-.8-3.3-1.2-10.2-.5-7.5-10.9-1.5-24-1.5-13.1 0-23.5-6-24 1.5-.4 6.9-1.2 10.2-1.2 10.2-6.5 0-6.5 10.6.4 10.6 0 11.4 14.3 18.4 24.8 18.4 10.5 0 24.8-7 24.8-18.4 6.9 0 6.9-10.6.4-10.6" fill="#ffdd67"/><circle cx="44.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="44.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="35.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="35.5" r="6.5" fill="#fff"/><circle cx="19.5" cy="35.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="35.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9s7.3-2.3 8.9-4.9c.4-.7-.2-1.4-.8-1" fill="#937237"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f467-1f3fb.svg b/riot/emojione/svg/1f467-1f3fb.svg new file mode 100644 index 0000000..eeb7738 --- /dev/null +++ b/riot/emojione/svg/1f467-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.8 40c0 0 3.2-5.6 3.2-14 0-11-8.1-24-29-24-20.9 0-29 13-29 24 0 8.4 3.1 14 3.1 14-3.6 4.1-5.8 12.4-2.7 17.8 1.3 2.2 14.1 10 15.3-3.9h26.4c1.3 13.8 14.1 6.1 15.3 3.9 3.2-5.4 1-13.7-2.6-17.8" fill="#594640"/><path d="M32,6C16.7,6,5.5,14,5.5,24C5.5,24,9.6,9,32,9s25.5,15,25.5,15C57.5,14,47.3,6,32,6z" fill="#c28fef"/><path d="m57.3 42c6.2 0 6.2-9 0-9v-3c0 0-35-.9-43-13 2 12.2-7.7 16-7.7 16-6.2 0-6.2 9 0 9 0 7 7.3 18 25.3 18s25.4-11 25.4-18" fill="#ffe1bd"/><g fill="#fff"><circle cx="44.5" cy="36.5" r="6.5"/><circle cx="19.5" cy="36.5" r="6.5"/></g><circle cx="44.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="36.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="36.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9 4.1 0 7.3-2.3 8.9-4.9.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f467-1f3fc.svg b/riot/emojione/svg/1f467-1f3fc.svg new file mode 100644 index 0000000..4088b48 --- /dev/null +++ b/riot/emojione/svg/1f467-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.9 40c0 0 3.1-5.6 3.1-14 0-11-8.1-24-29-24-20.9 0-29 13-29 24 0 8.4 3.1 14 3.1 14-3.6 4.1-5.8 12.4-2.7 17.8 1.3 2.2 14.1 10 15.3-3.9h26.4c1.3 13.8 14.1 6.1 15.3 3.9 3.2-5.4 1-13.7-2.5-17.8" fill="#dbb471"/><path d="M32,6C16.7,6,5.5,14,5.5,24C5.5,24,9.6,9,32,9c22.4,0,25.5,15,25.5,15C57.5,14,47.3,6,32,6z" fill="#c28fef"/><path d="m57.3 42c6.2 0 6.2-9 0-9v-3c0 0-35-.9-43-13 2 12.2-7.7 16-7.7 16-6.2 0-6.2 9 0 9 0 7 7.3 18 25.3 18s25.4-11 25.4-18" fill="#fed0ac"/><g fill="#fff"><circle cx="44.5" cy="36.5" r="6.5"/><circle cx="19.5" cy="36.5" r="6.5"/></g><circle cx="44.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="36.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="36.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9s7.3-2.3 8.9-4.9c.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f467-1f3fd.svg b/riot/emojione/svg/1f467-1f3fd.svg new file mode 100644 index 0000000..18a76f6 --- /dev/null +++ b/riot/emojione/svg/1f467-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.9 40c0 0 3.1-5.6 3.1-14 0-11-8.1-24-29-24-20.9 0-29 13-29 24 0 8.4 3.1 14 3.1 14-3.6 4.1-5.8 12.4-2.7 17.8 1.3 2.2 14.1 10 15.3-3.9h26.4c1.3 13.8 14.1 6.1 15.3 3.9 3.2-5.4 1-13.7-2.5-17.8" fill="#594640"/><path d="M32,6C16.7,6,5.5,14,5.5,24C5.5,24,9.6,9,32,9c22.4,0,25.5,15,25.5,15C57.5,14,47.3,6,32,6z" fill="#c28fef"/><path d="m57.3 42c6.2 0 6.2-9 0-9v-3c0 0-35-.9-43-13 2 12.2-7.7 16-7.7 16-6.2 0-6.2 9 0 9 0 7 7.3 18 25.3 18s25.4-11 25.4-18" fill="#d6a57c"/><g fill="#fff"><circle cx="44.5" cy="36.5" r="6.5"/><circle cx="19.5" cy="36.5" r="6.5"/></g><circle cx="44.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="36.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="36.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9s7.3-2.3 8.9-4.9c.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f467-1f3fe.svg b/riot/emojione/svg/1f467-1f3fe.svg new file mode 100644 index 0000000..dbb0f5f --- /dev/null +++ b/riot/emojione/svg/1f467-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.9 40c0 0 3.1-5.6 3.1-14 0-11-8.1-24-29-24-20.9 0-29 13-29 24 0 8.4 3.1 14 3.1 14-3.6 4.1-5.8 12.4-2.7 17.8 1.3 2.2 14.1 10 15.3-3.9h26.4c1.3 13.8 14.1 6.1 15.3 3.9 3.2-5.4 1-13.7-2.5-17.8" fill="#231f20"/><path d="M32,6C16.7,6,5.5,14,5.5,24C5.5,24,9.6,9,32,9c22.4,0,25.5,15,25.5,15C57.5,14,47.3,6,32,6z" fill="#c28fef"/><path d="m57.3 42c6.2 0 6.2-9 0-9v-3c0 0-35-.9-43-13 2 12.2-7.7 16-7.7 16-6.2 0-6.2 9 0 9 0 7 7.3 18 25.3 18 18.1 0 25.4-11 25.4-18" fill="#b47d56"/><g fill="#fff"><circle cx="44.5" cy="36.5" r="6.5"/><circle cx="19.5" cy="36.5" r="6.5"/></g><circle cx="44.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="36.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="36.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9 4.1 0 7.3-2.3 8.9-4.9.4-.7-.2-1.4-.8-1" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f467-1f3ff.svg b/riot/emojione/svg/1f467-1f3ff.svg new file mode 100644 index 0000000..80e424e --- /dev/null +++ b/riot/emojione/svg/1f467-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.9 40c0 0 3.1-5.6 3.1-14 0-11-8.1-24-29-24-20.9 0-29 13-29 24 0 8.4 3.1 14 3.1 14-3.6 4.1-5.8 12.4-2.7 17.8 1.3 2.2 14.1 10 15.3-3.9h26.4c1.3 13.8 14.1 6.1 15.3 3.9 3.2-5.4 1-13.7-2.5-17.8" fill="#231f20"/><path d="M32,6C16.7,6,5.5,14,5.5,24C5.5,24,9.6,9,32,9c22.4,0,25.5,15,25.5,15C57.5,14,47.3,6,32,6z" fill="#c28fef"/><path d="m57.3 42c6.2 0 6.2-9 0-9v-3c0 0-35-.9-43-13 2 12.2-7.7 16-7.7 16-6.2 0-6.2 9 0 9 0 7 7.3 18 25.3 18 18.1 0 25.4-11 25.4-18" fill="#8a6859"/><g fill="#fff"><circle cx="44.5" cy="36.5" r="6.5"/><circle cx="19.5" cy="36.5" r="6.5"/></g><circle cx="44.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="36.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="36.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9 4.1 0 7.3-2.3 8.9-4.9.4-.7-.2-1.4-.8-1" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f467.svg b/riot/emojione/svg/1f467.svg new file mode 100644 index 0000000..1cb7f67 --- /dev/null +++ b/riot/emojione/svg/1f467.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.9 40c0 0 3.1-5.6 3.1-14 0-11-8.1-24-29-24s-29 13-29 24c0 8.4 3.1 14 3.1 14-3.6 4.1-5.8 12.4-2.7 17.8 1.3 2.2 14.1 10 15.3-3.9h26.4c1.3 13.8 14.1 6.1 15.3 3.9 3.2-5.4 1-13.7-2.5-17.8" fill="#ffb300"/><path d="M32,6C16.7,6,5.5,14,5.5,24C5.5,24,9.6,9,32,9s25.5,15,25.5,15C57.5,14,47.3,6,32,6z" fill="#c28fef"/><path d="m57.3 42c6.2 0 6.2-9 0-9v-3c0 0-35-.9-43-13 2 12.2-7.7 16-7.7 16-6.2 0-6.2 9 0 9 0 7 7.3 18 25.3 18s25.4-11 25.4-18" fill="#ffdd67"/><g fill="#fff"><circle cx="44.5" cy="36.5" r="6.5"/><circle cx="19.5" cy="36.5" r="6.5"/></g><circle cx="44.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="36.5" r="1.5" fill="#231f20"/><circle cx="19.5" cy="36.5" r="4.5" fill="#664e27"/><circle cx="19.5" cy="36.5" r="1.5" fill="#231f20"/><path d="m40.1 48.1c-5.2 3.6-11 3.6-16.2 0-.6-.4-1.2.3-.8 1 1.6 2.6 4.8 4.9 8.9 4.9s7.3-2.3 8.9-4.9c.4-.7-.2-1.4-.8-1" fill="#937237"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f3fb.svg b/riot/emojione/svg/1f468-1f3fb.svg new file mode 100644 index 0000000..9ffc401 --- /dev/null +++ b/riot/emojione/svg/1f468-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6,36h52C58,8,54,2,32,2S6,8,6,36z" fill="#594640"/><path d="m55.8 29.9c-.2 1.1-.4 2.1-.7 2.7-.6 1-1.7 1.6-1.7 1.6s.3-2.1.2-5c-1.2-17.4-2.2-12.6-21.6-12.6-19.4 0-20.4-4.8-21.6 12.5-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.7-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4.2-.1-4.2 5.1 0 3.2 1.2 5.9 5.3 6.2 1.3 10.2 7.3 15.4 17.2 19.9 2.7 1.2 8.3 1.2 11 0 10-4.5 15.9-9.7 17.2-19.9 4.1-.3 5.3-2.9 5.3-6.2 0-5.2-2.4-5.6-4.2-5.1" fill="#ffe1bd"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f3fc.svg b/riot/emojione/svg/1f468-1f3fc.svg new file mode 100644 index 0000000..e0e8d5f --- /dev/null +++ b/riot/emojione/svg/1f468-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6,36h52C58,8,54,2,32,2S6,8,6,36z" fill="#dbb471"/><path d="m55.8 29.9c-.2 1.1-.4 2.1-.7 2.7-.6 1-1.7 1.6-1.7 1.6s.3-2.1.2-5c-1.2-17.4-2.2-12.6-21.6-12.6-19.4 0-20.4-4.8-21.6 12.5-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.7-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4.2-.1-4.2 5.1 0 3.2 1.2 5.9 5.3 6.2 1.3 10.2 7.3 15.4 17.2 19.9 2.7 1.2 8.3 1.2 11 0 10-4.5 15.9-9.7 17.2-19.9 4.1-.3 5.3-2.9 5.3-6.2 0-5.2-2.4-5.6-4.2-5.1" fill="#fed0ac"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f3fd.svg b/riot/emojione/svg/1f468-1f3fd.svg new file mode 100644 index 0000000..4fc71c6 --- /dev/null +++ b/riot/emojione/svg/1f468-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6,36h52C58,8,54,2,32,2S6,8,6,36z" fill="#594640"/><path d="m55.8 29.9c-.2 1.1-.4 2.1-.7 2.7-.6 1-1.7 1.6-1.7 1.6s.3-2.1.2-5c-1.2-17.4-2.2-12.6-21.6-12.6-19.4 0-20.4-4.8-21.6 12.5-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.7-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4.2-.1-4.2 5.1 0 3.2 1.2 5.9 5.3 6.2 1.3 10.2 7.3 15.4 17.2 19.9 2.7 1.2 8.3 1.2 11 0 10-4.5 15.9-9.7 17.2-19.9 4.1-.3 5.3-2.9 5.3-6.2 0-5.2-2.4-5.6-4.2-5.1" fill="#d6a57c"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f3fe.svg b/riot/emojione/svg/1f468-1f3fe.svg new file mode 100644 index 0000000..9dc4c6d --- /dev/null +++ b/riot/emojione/svg/1f468-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6,36h52C58,8,54,2,32,2S6,8,6,36z" fill="#231f20"/><path d="m55.8 29.9c-.2 1.1-.4 2.1-.7 2.7-.6 1-1.7 1.6-1.7 1.6s.3-2.1.2-5c-1.2-17.4-2.2-12.6-21.6-12.6-19.4 0-20.4-4.8-21.6 12.5-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.7-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4.2-.1-4.2 5.1 0 3.2 1.2 5.9 5.3 6.2 1.3 10.2 7.3 15.4 17.2 19.9 2.7 1.2 8.3 1.2 11 0 10-4.5 15.9-9.7 17.2-19.9 4.1-.3 5.3-2.9 5.3-6.2 0-5.2-2.4-5.6-4.2-5.1" fill="#b47d56"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f3ff.svg b/riot/emojione/svg/1f468-1f3ff.svg new file mode 100644 index 0000000..fab2b43 --- /dev/null +++ b/riot/emojione/svg/1f468-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6,36h52C58,8,54,2,32,2S6,8,6,36z" fill="#231f20"/><path d="m55.8 29.9c-.2 1.1-.4 2.1-.7 2.7-.6 1-1.7 1.6-1.7 1.6s.3-2.1.2-5c-1.2-17.4-2.2-12.6-21.6-12.6-19.4 0-20.4-4.8-21.6 12.5-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.7-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4.2-.1-4.2 5.1 0 3.2 1.2 5.9 5.3 6.2 1.3 10.2 7.3 15.4 17.2 19.9 2.7 1.2 8.3 1.2 11 0 10-4.5 15.9-9.7 17.2-19.9 4.1-.3 5.3-2.9 5.3-6.2 0-5.2-2.4-5.6-4.2-5.1" fill="#8a6859"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#574137"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f468-1f466-1f466.svg b/riot/emojione/svg/1f468-1f468-1f466-1f466.svg new file mode 100644 index 0000000..5c34814 --- /dev/null +++ b/riot/emojione/svg/1f468-1f468-1f466-1f466.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 34.8c0-5.8-30-5.8-30 0v27.2h60v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="M32.1,17.3l-1.5,2.8H4.4l-1.1-2.9C3.2,6.6,5.7,2.1,17.4,2C29.2,1.9,32.1,6.6,32.1,17.3z" fill="#ffb300"/><path d="m4.3 17.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s-.2-1.2-.1-2.8c.7-9.7 1.2-5.1 11.9-5.1 10.7 0 11.3-4.7 11.9 5 .1 1.7-.1 2.8-.1 2.8s.6-.3.9-.9c.2-.3.3-.9.4-1.5 1-.3 2.3 0 2.3 2.9 0 1.8-.7 3.3-2.9 3.5-.8 6.1-8.9 10.1-12.6 10.1-3.6 0-11.8-4.1-12.6-10.1-2-.1-2.7-1.6-2.7-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><circle cx="23" cy="20.3" r="2.2"/><circle cx="12" cy="20.3" r="2.2"/><path d="m13.9 27.2c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4s-3.2-1.1-3.9-2.4c-.2-.4 0-.8.3-.5"/></g><path d="m57 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m44.5 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m34.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="39.7" cy="49.8" r="1.8"/><circle cx="49.3" cy="49.8" r="1.8"/><path d="m41.4 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3-.1-.6.2-.4"/></g><path d="m32 62h-25.1c0-8.4 25.1-8.4 25.1 0" fill="#29b6f6"/><path d="m19.4 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.3-8.5-10.9-8.5" fill="#ffb300"/><path d="m9.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.2 0-2.2-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="14.7" cy="49.8" r="1.8"/><circle cx="24.2" cy="49.8" r="1.8"/><path d="m16.3 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3 0-.6.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f468-1f466.svg b/riot/emojione/svg/1f468-1f468-1f466.svg new file mode 100644 index 0000000..7f59465 --- /dev/null +++ b/riot/emojione/svg/1f468-1f468-1f466.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 34.8c0-5.8-30-5.8-30 0v27.2h60v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="M32.1,17.3l-1.5,2.8H4.4l-1.1-2.9C3.2,6.6,5.7,2.1,17.4,2C29.2,1.9,32.1,6.6,32.1,17.3z" fill="#ffb300"/><path d="m4.3 17.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s-.2-1.2-.1-2.8c.7-9.7 1.2-5.1 11.9-5.1 10.7 0 11.3-4.7 11.9 5 .1 1.7-.1 2.8-.1 2.8s.6-.3.9-.9c.2-.3.3-.9.4-1.5 1-.3 2.3 0 2.3 2.9 0 1.8-.7 3.3-2.9 3.5-.8 6.1-8.9 10.1-12.6 10.1-3.6 0-11.8-4.1-12.6-10.1-2-.1-2.7-1.6-2.7-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><circle cx="23" cy="20.3" r="2.2"/><circle cx="12" cy="20.3" r="2.2"/><path d="m13.9 27.2c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4s-3.2-1.1-3.9-2.4c-.2-.4 0-.8.3-.5"/></g><path d="m44.5 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m32 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m22.1 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7s-9.9-2.6-9.9-7c-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="27.2" cy="49.8" r="1.8"/><circle cx="36.8" cy="49.8" r="1.8"/><path d="m28.9 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3-.1-.6.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f468-1f467-1f466.svg b/riot/emojione/svg/1f468-1f468-1f467-1f466.svg new file mode 100644 index 0000000..555c8bd --- /dev/null +++ b/riot/emojione/svg/1f468-1f468-1f467-1f466.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31 34.8c0-5.8-30-5.8-30 0v27.2h60v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="m30.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m58.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="40" cy="20.3" r="2.2"/><circle cx="51" cy="20.3" r="2.2"/><path d="m49.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4 1.8 0 3.2-1.1 3.9-2.4.2-.4 0-.8-.3-.5"/></g><path d="M31.1,17.3l-1.5,2.8H3.4l-1.1-2.9C2.2,6.6,4.7,2.1,16.4,2C28.2,1.9,31.1,6.6,31.1,17.3z" fill="#ffb300"/><path d="m3.3 17.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s-.2-1.2-.1-2.8c.7-9.7 1.2-5.1 11.9-5.1 10.7 0 11.3-4.7 11.9 5 .1 1.7-.1 2.8-.1 2.8s.6-.3.9-.9c.2-.3.3-.9.4-1.5 1-.3 2.3 0 2.3 2.9 0 1.8-.7 3.3-2.9 3.5-.8 6.1-8.9 10.1-12.6 10.1-3.6 0-11.8-4.1-12.6-10.1-2-.1-2.7-1.6-2.7-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><circle cx="22" cy="20.3" r="2.2"/><circle cx="11" cy="20.3" r="2.2"/><path d="m12.9 27.2c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4-1.8 0-3.2-1.1-3.9-2.4-.2-.4 0-.8.3-.5"/></g><path d="m56 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m43.5 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m33.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="38.7" cy="49.8" r="1.8"/><circle cx="48.3" cy="49.8" r="1.8"/><path d="m40.4 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2s-2.8-1-3.4-2c-.3-.3-.1-.6.2-.4"/></g><path d="m29 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m18.3 37.8c-6.2 0-10.4 3.2-10.4 7.2 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.2c0-4-3.9-7.2-10.4-7.2"/><path d="m6 62h25c0-8.4-25-8.4-25 0"/></g><path d="m28.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.4.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><circle cx="23" cy="49.8" r="1.8"/><circle cx="13.9" cy="49.8" r="1.8"/><path d="m21.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3 0-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f468-1f467-1f467.svg b/riot/emojione/svg/1f468-1f468-1f467-1f467.svg new file mode 100644 index 0000000..1e35ca4 --- /dev/null +++ b/riot/emojione/svg/1f468-1f468-1f467-1f467.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 34.8c0-5.8-30-5.8-30 0v27.2h60v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.3 0-.7-.3-.5"/></g><path d="M32.1,17.3l-1.5,2.8H4.4l-1.1-2.9C3.2,6.6,5.7,2.1,17.4,2C29.2,1.9,32.1,6.6,32.1,17.3z" fill="#ffb300"/><path d="m4.3 17.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s-.2-1.2-.1-2.8c.7-9.7 1.2-5.1 11.9-5.1 10.7 0 11.3-4.7 11.9 5 .1 1.7-.1 2.8-.1 2.8s.6-.3.9-.9c.2-.3.3-.9.4-1.5 1-.3 2.3 0 2.3 2.9 0 1.8-.7 3.3-2.9 3.5-.8 6.1-8.9 10.1-12.6 10.1-3.6 0-11.8-4.1-12.6-10.1-2-.1-2.7-1.6-2.7-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><circle cx="23" cy="20.3" r="2.2"/><circle cx="12" cy="20.3" r="2.2"/><path d="m13.9 27.1c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4s-3.2-1.1-3.9-2.4c-.2-.3 0-.7.3-.5"/></g><path d="m30 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m19.3 37.8c-6.2 0-10.4 3.2-10.4 7.2 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.2c0-4-3.9-7.2-10.4-7.2"/><path d="m7 62h25c0-8.4-25-8.4-25 0"/></g><path d="m29.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.4.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m25.8 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.9-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="14.9" cy="49.8" r="1.8"/><path d="m22.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3 0-.6-.2-.4"/></g><path d="m55 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m44.3 37.8c-6.2 0-10.4 3.2-10.4 7.1 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.1c.1-4-3.9-7.2-10.4-7.2"/><path d="m32 62h25c0-8.4-25-8.4-25 0"/></g><path d="m54.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.5.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m50.8 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.9-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="39.9" cy="49.8" r="1.8"/><path d="m47.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3.1-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f468-1f467.svg b/riot/emojione/svg/1f468-1f468-1f467.svg new file mode 100644 index 0000000..6dfa7e9 --- /dev/null +++ b/riot/emojione/svg/1f468-1f468-1f467.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 34.8c0-5.8-30-5.8-30 0v27.2h60v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="M32.1,17.3l-1.5,2.8H4.4l-1.1-2.9C3.2,6.6,5.7,2.1,17.4,2C29.2,1.9,32.1,6.6,32.1,17.3z" fill="#ffb300"/><path d="m4.3 17.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s-.2-1.2-.1-2.8c.7-9.7 1.2-5.1 11.9-5.1 10.7 0 11.3-4.7 11.9 5 .1 1.7-.1 2.8-.1 2.8s.6-.3.9-.9c.2-.3.3-.9.4-1.5 1-.3 2.3 0 2.3 2.9 0 1.8-.7 3.3-2.9 3.5-.8 6.1-8.9 10.1-12.6 10.1-3.6 0-11.8-4.1-12.6-10.1-2-.1-2.7-1.6-2.7-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><circle cx="23" cy="20.3" r="2.2"/><circle cx="12" cy="20.3" r="2.2"/><path d="m13.9 27.2c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4s-3.2-1.1-3.9-2.4c-.2-.4 0-.8.3-.5"/></g><path d="m42.5 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.4 1.7-2.7 5.4-1.4 7.6.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.2.1-5.9-1.4-7.6" fill="#ffb300"/><g fill="#ff81ab"><path d="m31.9 37.8c-6.2 0-10.4 3.2-10.4 7.1 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.1c0-4-4-7.2-10.4-7.2"/><path d="m19.5 62h25c0-8.4-25-8.4-25 0"/></g><path d="m41.8 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.5.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m38.3 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="27.4" cy="49.8" r="1.8"/><path d="m35.1 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3.1-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f469-1f466-1f466.svg b/riot/emojione/svg/1f468-1f469-1f466-1f466.svg new file mode 100644 index 0000000..f877a88 --- /dev/null +++ b/riot/emojione/svg/1f468-1f469-1f466-1f466.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,2C7.3,2,2,8.3,2,16.7v18.5h30V16.7c0-12.4-8.1-12.2-8.1-12.2S23.3,2,17,2z" fill="#ffb300"/><path d="m32 34.8v27.2h30v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="M2,34.8V62h30V34.8C32,29,2,29,2,34.8z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m57 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m44.5 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m34.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="39.7" cy="49.8" r="1.8"/><circle cx="49.3" cy="49.8" r="1.8"/><path d="m41.4 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3-.1-.6.2-.4"/></g><path d="m32 62h-25.1c0-8.4 25.1-8.4 25.1 0" fill="#29b6f6"/><path d="m19.4 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.3-8.5-10.9-8.5" fill="#ffb300"/><path d="m9.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.2 0-2.2-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="14.7" cy="49.8" r="1.8"/><circle cx="24.2" cy="49.8" r="1.8"/><path d="m16.3 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3 0-.6.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f469-1f467-1f466.svg b/riot/emojione/svg/1f468-1f469-1f467-1f466.svg new file mode 100644 index 0000000..0ab0a6b --- /dev/null +++ b/riot/emojione/svg/1f468-1f469-1f467-1f466.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,2C7.3,2,2,8.3,2,16.7v18.5h30V16.7c0-12.4-8.1-12.2-8.1-12.2S23.3,2,17,2z" fill="#ffb300"/><path d="m32 34.8v27.2h30v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="M2,34.8V62h30V34.8C32,29,2,29,2,34.8z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.3 0-.7-.3-.5"/></g><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.3 0-.7-.3-.5"/></g><path d="m57 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m44.5 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m34.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="39.7" cy="49.8" r="1.8"/><circle cx="49.3" cy="49.8" r="1.8"/><path d="m41.4 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3-.1-.6.2-.4"/></g><path d="m30 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m19.3 37.8c-6.2 0-10.4 3.2-10.4 7.2 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.2c0-4-3.9-7.2-10.4-7.2"/><path d="m7 62h25c0-8.4-25-8.4-25 0"/></g><path d="m29.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.4.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m25.8 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.9-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="14.9" cy="49.8" r="1.8"/><path d="m22.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3 0-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f469-1f467-1f467.svg b/riot/emojione/svg/1f468-1f469-1f467-1f467.svg new file mode 100644 index 0000000..ca1285f --- /dev/null +++ b/riot/emojione/svg/1f468-1f469-1f467-1f467.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,2C7.3,2,2,8.3,2,16.7v18.5h30V16.7c0-12.4-8.1-12.2-8.1-12.2S23.3,2,17,2z" fill="#ffb300"/><path d="m32 34.8v27.2h30v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="M2,34.8V62h30V34.8C32,29,2,29,2,34.8z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m30 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m19.3 37.8c-6.2 0-10.4 3.2-10.4 7.2 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.2c0-4-3.9-7.2-10.4-7.2"/><path d="m7 62h25c0-8.4-25-8.4-25 0"/></g><path d="m29.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.4.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m25.8 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.9-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="14.9" cy="49.8" r="1.8"/><path d="m22.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3 0-.6-.2-.4"/></g><path d="m55 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m44.3 37.8c-6.2 0-10.4 3.2-10.4 7.1 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.1c.1-4-3.9-7.2-10.4-7.2"/><path d="m32 62h25c0-8.4-25-8.4-25 0"/></g><path d="m54.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.5.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m50.8 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.9-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="39.9" cy="49.8" r="1.8"/><path d="m47.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3.1-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-1f469-1f467.svg b/riot/emojione/svg/1f468-1f469-1f467.svg new file mode 100644 index 0000000..0afec9c --- /dev/null +++ b/riot/emojione/svg/1f468-1f469-1f467.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,2C7.3,2,2,8.3,2,16.7v18.5h30V16.7c0-12.4-8.1-12.2-8.1-12.2S23.3,2,17,2z" fill="#ffb300"/><path d="m32 34.8v27.2h30v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="M2,34.8V62h30V34.8C32,29,2,29,2,34.8z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m42.5 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.4 1.7-2.7 5.4-1.4 7.6.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.2.1-5.9-1.4-7.6" fill="#ffb300"/><g fill="#ff81ab"><path d="m31.9 37.8c-6.2 0-10.4 3.2-10.4 7.1 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.1c0-4-4-7.2-10.4-7.2"/><path d="m19.5 62h25c0-8.4-25-8.4-25 0"/></g><path d="m41.8 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.5.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m38.3 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="27.4" cy="49.8" r="1.8"/><path d="m35.1 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3.1-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-2764-1f468.svg b/riot/emojione/svg/1f468-2764-1f468.svg new file mode 100644 index 0000000..727c3fc --- /dev/null +++ b/riot/emojione/svg/1f468-2764-1f468.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 54.8v7.2h30v-7.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="m31.9 37.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 37.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="40.3" r="2.2"/><circle cx="52" cy="40.3" r="2.2"/><path d="m50.1 47.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m46.5 7.1c-3.2-8.5-13.5-4.7-14.5-.5-1.3-4.5-11.4-7.9-14.5.4-3.5 9.3 13.3 17.6 14.5 19 1.2-1.1 18-9.8 14.5-18.9" fill="#ff5a79"/><path d="M32,54.8V62H2v-7.2C2,49,32,49,32,54.8z" fill="#01579b"/><path d="m32.1 37.3l-1.5 2.8h-26.2l-1.1-2.9c0-10.6 2.5-15 14.1-15.1 11.8-.2 14.7 4.5 14.7 15.2" fill="#ffb300"/><path d="m4.3 37.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s-.2-1.2-.1-2.8c.7-9.7 1.2-5.1 11.9-5.1 10.7 0 11.3-4.7 11.9 5 .1 1.7-.1 2.8-.1 2.8s.6-.3.9-.9c.2-.3.3-.9.4-1.5 1-.3 2.3 0 2.3 2.9 0 1.8-.7 3.3-2.9 3.5-.8 6.1-8.9 10.1-12.6 10.1-3.6 0-11.8-4.1-12.6-10.1-2-.1-2.7-1.6-2.7-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><circle cx="23" cy="40.3" r="2.2"/><circle cx="12" cy="40.3" r="2.2"/><path d="m13.9 47.2c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4s-3.2-1.1-3.9-2.4c-.2-.4 0-.8.3-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468-2764-1f48b-1f468.svg b/riot/emojione/svg/1f468-2764-1f48b-1f468.svg new file mode 100644 index 0000000..5e84506 --- /dev/null +++ b/riot/emojione/svg/1f468-2764-1f48b-1f468.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 60.8v1.2h-30v-14.2c0 0 30 7.2 30 13" fill="#01579b"/><path d="m29.2 40h-24.8l-1.1-2.9c0-10.6 2.5-15 14.1-15.1 12.4-.1 13.8 10.3 11.8 18" fill="#ffb300"/><path d="m4.3 37.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s-.2-1.2-.1-2.8c.7-9.7 2.6-5.1 15.9-5.1 4.7 0 8.2-3.5 8.2 12 0 5.8-4.3 11.5-9.9 11.5-6 0-14.8-4.2-14.8-11.7-2.2-.1-2.9-1.6-2.9-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><path d="m28.2 39.9c-.9-2-2.2-3-3.6-3-1.4 0-2.7 1-3.6 3-.1.2.4.6.6.4.9-.7 1.9-1 3-1 1.1 0 2.1.3 3 1 .2.1.7-.2.6-.4"/><path d="m17.4 39.9c-.9-2-2.2-3-3.6-3s-2.7 1-3.6 3c-.1.2.4.6.6.4.9-.7 1.9-1 3-1 1.1 0 2.1.3 3 1 .2.1.7-.2.6-.4"/><path d="m23.2 49.4c.8-.8-.9-1.4-.9-2.8 0-1.4 1.6-2 .9-2.8-.9-.9-2.9-.2-4.1-1.5 0 1 .9 2.2 2.5 2.2 0 0-1.1.4-1.1 2.2 0 1.7 1.1 2.2 1.1 2.2-1.6 0-2.5 1.1-2.5 2.2 1.2-1.4 3.2-.7 4.1-1.7"/></g><path d="m46.5 7.1c-3.2-8.5-13.5-4.7-14.5-.5-1.3-4.5-11.4-7.9-14.5.4-3.5 9.3 13.3 17.6 14.5 19 1.2-1.1 18-9.8 14.5-18.9" fill="#ff5a79"/><path d="m32 60.8v1.2h30v-14.2c0 0-30 7.2-30 13" fill="#01579b"/><path d="m34.8 40h24.8l1.1-2.9c0-10.6-2.5-15-14.1-15.1-12.4-.1-13.8 10.3-11.8 18" fill="#ffb300"/><path d="m59.7 37.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-2.6-5.1-15.9-5.1-4.7 0-8.2-3.5-8.2 12 0 5.8 4.3 11.5 9.9 11.5 6 0 14.8-4.2 14.8-11.7 2.2-.2 2.9-1.7 2.9-3.5 0-2.8-1.3-3-2.3-2.8" fill="#ffdd67"/><g fill="#937237"><path d="m35.8 39.9c.9-2 2.2-3 3.6-3 1.4 0 2.7 1 3.6 3 .1.2-.4.6-.6.4-.9-.7-1.9-1-3-1-1.1 0-2.1.3-3 1-.2.1-.7-.2-.6-.4"/><path d="m46.6 39.9c.9-2 2.2-3 3.6-3s2.7 1 3.6 3c.1.2-.4.6-.6.4-.9-.7-1.9-1-3-1-1.1 0-2.1.3-3 1-.2.1-.7-.2-.6-.4"/><path d="m40.8 49.4c-.8-.8.9-1.4.9-2.8 0-1.4-1.6-2-.9-2.8.9-.9 2.9-.2 4.1-1.5 0 1-.9 2.2-2.5 2.2 0 0 1.1.4 1.1 2.2 0 1.7-1.1 2.2-1.1 2.2 1.6 0 2.5 1.1 2.5 2.2-1.2-1.4-3.2-.7-4.1-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f468.svg b/riot/emojione/svg/1f468.svg new file mode 100644 index 0000000..0f27a28 --- /dev/null +++ b/riot/emojione/svg/1f468.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M6,36h52C58,8,54,2,32,2S6,8,6,36z" fill="#ffb300"/><path d="m55.8 29.9c-.2 1.1-.4 2.1-.7 2.7-.6 1-1.7 1.6-1.7 1.6s.3-2.1.2-5c-1.2-17.4-2.2-12.6-21.6-12.6-19.4 0-20.4-4.8-21.6 12.5-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.7-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4.2-.1-4.2 5.1 0 3.2 1.2 5.9 5.3 6.2 1.3 10.2 7.3 15.4 17.2 19.9 2.7 1.2 8.3 1.2 11 0 10-4.5 15.9-9.7 17.2-19.9 4.1-.3 5.3-2.9 5.3-6.2 0-5.2-2.4-5.6-4.2-5.1" fill="#ffdd67"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#937237"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#664e27"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f3fb.svg b/riot/emojione/svg/1f469-1f3fb.svg new file mode 100644 index 0000000..62b4b63 --- /dev/null +++ b/riot/emojione/svg/1f469-1f3fb.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#594640"/><path d="M10.4,40.7c0,0-4.4-1.1-4.4-7.5c0-5.1,3.3-5.9,3.3-5.9C21.1,27.2,43,12,43,12s4.6,13.4,11.6,15.2 + c0,0,3.4,0.6,3.4,5.9c0,6.4-4.5,7.5-4.5,7.5C53.4,50.3,40.1,62,32,62C23.9,62,10.4,50.3,10.4,40.7z" fill="#ffe1bd"/><path d="m32 47c-4.2 0-6.3-3-4.2-3 2.1 0 6.3 0 8.4 0s0 3-4.2 3" fill="#e6b796"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#664e27"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#664e27"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#e08672"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5 5.5 0 6-1.7 10-2.5 0 0-3.8.5-6.1-.4" fill="#b86e5d"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f3fc.svg b/riot/emojione/svg/1f469-1f3fc.svg new file mode 100644 index 0000000..2556b3a --- /dev/null +++ b/riot/emojione/svg/1f469-1f3fc.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#dbb471"/><path d="M10.4,40.7c0,0-4.4-1.1-4.4-7.5c0-5.1,3.3-5.9,3.3-5.9C21.1,27.2,43,12,43,12s4.6,13.4,11.6,15.2 + c0,0,3.4,0.6,3.4,5.9c0,6.4-4.5,7.5-4.5,7.5C53.4,50.3,40.1,62,32,62C23.9,62,10.4,50.3,10.4,40.7z" fill="#fed0ac"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#e0a372"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#664e27"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#664e27"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#e08672"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5s6-1.7 10-2.5c0 0-3.8.5-6.1-.4" fill="#b86e5d"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f3fd.svg b/riot/emojione/svg/1f469-1f3fd.svg new file mode 100644 index 0000000..c026985 --- /dev/null +++ b/riot/emojione/svg/1f469-1f3fd.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#594640"/><path d="M10.4,40.7c0,0-4.4-1.1-4.4-7.5c0-5.1,3.3-5.9,3.3-5.9C21.1,27.2,43,12,43,12s4.6,13.4,11.6,15.2 + c0,0,3.4,0.6,3.4,5.9c0,6.4-4.5,7.5-4.5,7.5C53.4,50.3,40.1,62,32,62C23.9,62,10.4,50.3,10.4,40.7z" fill="#d6a57c"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#b58360"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#664e27"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#664e27"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#b58360"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5s6-1.7 10-2.5c0 0-3.8.5-6.1-.4" fill="#805c44"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f3fe.svg b/riot/emojione/svg/1f469-1f3fe.svg new file mode 100644 index 0000000..8c97708 --- /dev/null +++ b/riot/emojione/svg/1f469-1f3fe.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#231f20"/><path d="M10.4,40.7c0,0-4.4-1.1-4.4-7.5c0-5.1,3.3-5.9,3.3-5.9C21.1,27.2,43,12,43,12s4.6,13.4,11.6,15.2 + c0,0,3.4,0.6,3.4,5.9c0,6.4-4.5,7.5-4.5,7.5C53.4,50.3,40.1,62,32,62S10.4,50.3,10.4,40.7z" fill="#b47d56"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#935e3e"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#664e27"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><circle cx="20" cy="33.5" r="4.5" fill="#664e27"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#935e3e"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5 5.5 0 6-1.7 10-2.5 0 0-3.8.5-6.1-.4" fill="#734c31"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f3ff.svg b/riot/emojione/svg/1f469-1f3ff.svg new file mode 100644 index 0000000..3078858 --- /dev/null +++ b/riot/emojione/svg/1f469-1f3ff.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#231f20"/><path d="M10.4,40.7c0,0-4.4-1.1-4.4-7.5c0-5.1,3.3-5.9,3.3-5.9C21.1,27.2,43,12,43,12s4.6,13.4,11.6,15.2 + c0,0,3.4,0.6,3.4,5.9c0,6.4-4.5,7.5-4.5,7.5C53.4,50.3,40.1,62,32,62C23.9,62,10.4,50.3,10.4,40.7z" fill="#8a6859"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#705041"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#664e27"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><circle cx="20" cy="33.5" r="4.5" fill="#664e27"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#7d5442"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5 5.5 0 6-1.7 10-2.5 0 0-3.8.5-6.1-.4" fill="#5c3f34"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f469-1f466-1f466.svg b/riot/emojione/svg/1f469-1f469-1f466-1f466.svg new file mode 100644 index 0000000..8bd5911 --- /dev/null +++ b/riot/emojione/svg/1f469-1f469-1f466-1f466.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M47,2c-6.3,0-6.9,2.5-6.9,2.5S32.3,4.3,32,15.9C31.7,4.3,23.9,4.5,23.9,4.5S23.3,2,17,2C7.3,2,2,8.3,2,16.7 + v18.5h60V16.7C62,8.3,56.7,2,47,2z" fill="#ffb300"/><path d="M32,34.7C31.6,29,2,29,2,34.8V62h60V34.8C62,29,32.4,29,32,34.7z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.3 0-.7-.3-.5"/></g><path d="m57.6 23.6c0 0 2.2-.6 2.2-3.9 0-2.6-1.7-3.1-1.7-3.1-6 0-15.8-7.8-15.8-7.8s-3.7 6.9-7.3 7.8c0 0-1.7.3-1.7 3.1 0 3.3 2.3 3.9 2.3 3.9 0 5 6.8 10 11 10 4 0 11-5 11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="51.9" cy="20.3" r="2.2"/><circle cx="41.1" cy="20.3" r="2.2"/><path d="m42.9 27.1c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4-1.8 0-3.2-1.1-3.9-2.4-.2-.3 0-.7.3-.5"/></g><path d="m57 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m44.5 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m34.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="39.7" cy="49.8" r="1.8"/><circle cx="49.3" cy="49.8" r="1.8"/><path d="m41.4 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3-.1-.6.2-.4"/></g><path d="m32 62h-25.1c0-8.4 25.1-8.4 25.1 0" fill="#29b6f6"/><path d="m19.4 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.3-8.5-10.9-8.5" fill="#ffb300"/><path d="m9.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.2 0-2.2-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="14.7" cy="49.8" r="1.8"/><circle cx="24.2" cy="49.8" r="1.8"/><path d="m16.3 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3 0-.6.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f469-1f466.svg b/riot/emojione/svg/1f469-1f469-1f466.svg new file mode 100644 index 0000000..ece9c72 --- /dev/null +++ b/riot/emojione/svg/1f469-1f469-1f466.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M47,2c-6.3,0-6.9,2.5-6.9,2.5S32.3,4.3,32,15.9C31.7,4.3,23.9,4.5,23.9,4.5S23.3,2,17,2C7.3,2,2,8.3,2,16.7 + v18.5h60V16.7C62,8.3,56.7,2,47,2z" fill="#ffb300"/><path d="M32,34.7C31.6,29,2,29,2,34.8V62h60V34.8C62,29,32.4,29,32,34.7z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.3 0-.7-.3-.5"/></g><path d="m57.6 23.6c0 0 2.2-.6 2.2-3.9 0-2.6-1.7-3.1-1.7-3.1-6 0-15.8-7.8-15.8-7.8s-3.7 6.9-7.3 7.8c0 0-1.7.3-1.7 3.1 0 3.3 2.3 3.9 2.3 3.9 0 5 6.8 10 11 10 4 0 11-5 11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="51.9" cy="20.3" r="2.2"/><circle cx="41.1" cy="20.3" r="2.2"/><path d="m42.9 27.1c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4-1.8 0-3.2-1.1-3.9-2.4-.2-.3 0-.7.3-.5"/></g><path d="m44.5 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m32 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m22.1 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7s-9.9-2.6-9.9-7c-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="27.2" cy="49.8" r="1.8"/><circle cx="36.8" cy="49.8" r="1.8"/><path d="m28.9 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3-.1-.6.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f469-1f467-1f466.svg b/riot/emojione/svg/1f469-1f469-1f467-1f466.svg new file mode 100644 index 0000000..2f4951e --- /dev/null +++ b/riot/emojione/svg/1f469-1f469-1f467-1f466.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M47,2c-6.3,0-6.9,2.5-6.9,2.5S32.3,4.3,32,15.9C31.7,4.3,23.9,4.5,23.9,4.5S23.3,2,17,2C7.3,2,2,8.3,2,16.7 + v18.5h60V16.7C62,8.3,56.7,2,47,2z" fill="#ffb300"/><path d="M32,34.7C31.6,29,2,29,2,34.8V62h60V34.8C62,29,32.4,29,32,34.7z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4 1.8 0 3.2-1.1 3.9-2.4.2-.3 0-.7-.3-.5"/></g><path d="m57.6 23.6c0 0 2.2-.6 2.2-3.9 0-2.6-1.7-3.1-1.7-3.1-6 0-15.8-7.8-15.8-7.8s-3.7 6.9-7.3 7.8c0 0-1.7.3-1.7 3.1 0 3.3 2.3 3.9 2.3 3.9 0 5 6.8 10 11 10 4 0 11-5 11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="51.9" cy="20.3" r="2.2"/><circle cx="41.1" cy="20.3" r="2.2"/><path d="m42.9 27.1c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4s-3.2-1.1-3.9-2.4c-.2-.3 0-.7.3-.5"/></g><path d="m57 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m44.5 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m34.6 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="39.7" cy="49.8" r="1.8"/><circle cx="49.3" cy="49.8" r="1.8"/><path d="m41.4 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2s-2.8-1-3.4-2c-.3-.3-.1-.6.2-.4"/></g><path d="m30 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m19.3 37.8c-6.2 0-10.4 3.2-10.4 7.2 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.2c0-4-3.9-7.2-10.4-7.2"/><path d="m7 62h25c0-8.4-25-8.4-25 0"/></g><path d="m29.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.4.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><circle cx="24" cy="49.8" r="1.8"/><circle cx="14.9" cy="49.8" r="1.8"/><path d="m22.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3 0-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f469-1f467-1f467.svg b/riot/emojione/svg/1f469-1f469-1f467-1f467.svg new file mode 100644 index 0000000..73760fb --- /dev/null +++ b/riot/emojione/svg/1f469-1f469-1f467-1f467.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M47,2c-6.3,0-6.9,2.5-6.9,2.5S32.3,4.3,32,15.9C31.7,4.3,23.9,4.5,23.9,4.5S23.3,2,17,2C7.3,2,2,8.3,2,16.7 + v18.5h60V16.7C62,8.3,56.7,2,47,2z" fill="#ffb300"/><path d="M32,34.7C31.6,29,2,29,2,34.8V62h60V34.8C62,29,32.4,29,32,34.7z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.3 0-.7-.3-.5"/></g><path d="m57.6 23.6c0 0 2.2-.6 2.2-3.9 0-2.6-1.7-3.1-1.7-3.1-6 0-15.8-7.8-15.8-7.8s-3.7 6.9-7.3 7.8c0 0-1.7.3-1.7 3.1 0 3.3 2.3 3.9 2.3 3.9 0 5 6.8 10 11 10 4 0 11-5 11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="51.9" cy="20.3" r="2.2"/><circle cx="41.1" cy="20.3" r="2.2"/><path d="m42.9 27.1c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4-1.8 0-3.2-1.1-3.9-2.4-.2-.3 0-.7.3-.5"/></g><path d="m30 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m19.3 37.8c-6.2 0-10.4 3.2-10.4 7.2 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.2c0-4-3.9-7.2-10.4-7.2"/><path d="m7 62h25c0-8.4-25-8.4-25 0"/></g><path d="m29.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.4.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m25.8 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.9-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="14.9" cy="49.8" r="1.8"/><path d="m22.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3 0-.6-.2-.4"/></g><path d="m55 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.5 1.7-2.7 5.4-1.4 7.7.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.3.1-6-1.4-7.7" fill="#ffb300"/><g fill="#ff81ab"><path d="m44.3 37.8c-6.2 0-10.4 3.2-10.4 7.1 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.1c.1-4-3.9-7.2-10.4-7.2"/><path d="m32 62h25c0-8.4-25-8.4-25 0"/></g><path d="m54.3 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.5.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m50.8 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.9-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="39.9" cy="49.8" r="1.8"/><path d="m47.6 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3.1-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-1f469-1f467.svg b/riot/emojione/svg/1f469-1f469-1f467.svg new file mode 100644 index 0000000..bbc72da --- /dev/null +++ b/riot/emojione/svg/1f469-1f469-1f467.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M47,2c-6.3,0-6.9,2.5-6.9,2.5S32.3,4.3,32,15.9C31.7,4.3,23.9,4.5,23.9,4.5S23.3,2,17,2C7.3,2,2,8.3,2,16.7 + v18.5h60V16.7C62,8.3,56.7,2,47,2z" fill="#ffb300"/><path d="M32,34.7C31.6,29,2,29,2,34.8V62h60V34.8C62,29,32.4,29,32,34.7z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.1c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.3 0-.7-.3-.5"/></g><path d="m57.6 23.6c0 0 2.2-.6 2.2-3.9 0-2.6-1.7-3.1-1.7-3.1-6 0-15.8-7.8-15.8-7.8s-3.7 6.9-7.3 7.8c0 0-1.7.3-1.7 3.1 0 3.3 2.3 3.9 2.3 3.9 0 5 6.8 10 11 10 4 0 11-5 11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="51.9" cy="20.3" r="2.2"/><circle cx="41.1" cy="20.3" r="2.2"/><path d="m42.9 27.1c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4-1.8 0-3.2-1.1-3.9-2.4-.2-.3 0-.7.3-.5"/></g><path d="m42.5 51.6h.9v-5.7c0-5.5-4.4-9.8-11.6-9.8-6.9 0-11.6 4.4-11.6 9.8 0 1.1 0 5.7 0 5.7h1.2c-1.4 1.7-2.7 5.4-1.4 7.6.5.9 5.9 4.2 6.4-1.6h11.1c.5 5.8 5.9 2.5 6.4 1.6 1.3-2.2.1-5.9-1.4-7.6" fill="#ffb300"/><g fill="#ff81ab"><path d="m31.9 37.8c-6.2 0-10.4 3.2-10.4 7.2 0 0 0 .5 0 1.2 0-4 4.2-7.2 10.4-7.2 6.4 0 10.4 3.2 10.4 7.2v-1.2c0-4-4-7.2-10.4-7.2"/><path d="m19.5 62h25c0-8.4-25-8.4-25 0"/></g><path d="m41.8 52.8c0 0 1.8.3 1.8-1.7 0-1.6-1.8-1.5-1.8-1.5v-1.8c0 0-13.5-.6-16.6-5.7.8 5.1-3.3 7.4-3.3 7.4s-1.8-.2-1.8 1.5c0 2 1.8 1.7 1.8 1.7 0 3 5.3 6.2 10.2 6.2 4.5.1 9.7-2.6 9.7-6.1" fill="#ffdd67"/><g fill="#937237"><path d="m38.3 49.8c0 1-.8 1.8-1.8 1.8-1 0-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8c1 0 1.8.8 1.8 1.8"/><circle cx="27.4" cy="49.8" r="1.8"/><path d="m35.1 54.4c-2 1.5-4.3 1.5-6.3 0-.2-.2-.5.1-.3.4.6 1.1 1.9 2 3.4 2 1.6 0 2.8-1 3.4-2 .3-.3.1-.6-.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-2764-1f469.svg b/riot/emojione/svg/1f469-2764-1f469.svg new file mode 100644 index 0000000..5f188ca --- /dev/null +++ b/riot/emojione/svg/1f469-2764-1f469.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m46.6 7.1c-3.2-8.5-13.6-4.7-14.6-.5-1.3-4.5-11.4-7.9-14.5.4-3.5 9.3 13.3 17.6 14.5 19 1.2-1.1 18-9.8 14.6-18.9" fill="#ff5a79"/><path d="M17,22C7.3,22,2,28.3,2,36.7v18.5h30V36.7c0-12.4-8.1-12.2-8.1-12.2S23.3,22,17,22z" fill="#ffb300"/><path d="m2 54.8v7.2h30v-7.2c0-5.8-30-5.8-30 0" fill="#c2185b"/><path d="m6.4 43.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="40.3" r="2.2"/><circle cx="22.9" cy="40.3" r="2.2"/><path d="m21.1 47.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="M47,22c9.7,0,15,6.3,15,14.7v18.5H32V36.7c0-12.4,8.1-12.2,8.1-12.2S40.7,22,47,22z" fill="#ffb300"/><path d="m62 54.8v7.2h-30v-7.2c0-5.8 30-5.8 30 0" fill="#c2185b"/><path d="m57.6 43.6c0 0 2.2-.6 2.2-3.9 0-2.6-1.7-3.1-1.7-3.1-6 0-15.8-7.8-15.8-7.8s-3.7 6.9-7.3 7.8c0 0-1.7.3-1.7 3.1 0 3.3 2.3 3.9 2.3 3.9 0 5 6.8 10 11 10 4 0 11-5 11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="51.9" cy="40.3" r="2.2"/><circle cx="41.1" cy="40.3" r="2.2"/><path d="m42.9 47.2c2.3 1.8 4.9 1.8 7.2 0 .3-.2.5.2.3.5-.7 1.3-2.1 2.4-3.9 2.4-1.8 0-3.2-1.1-3.9-2.4-.2-.4 0-.8.3-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469-2764-1f48b-1f469.svg b/riot/emojione/svg/1f469-2764-1f48b-1f469.svg new file mode 100644 index 0000000..c236906 --- /dev/null +++ b/riot/emojione/svg/1f469-2764-1f48b-1f469.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m46.5 7.1c-3.2-8.5-13.5-4.7-14.5-.5-1.3-4.5-11.4-7.9-14.5.4-3.5 9.3 13.3 17.6 14.5 19 1.2-1.1 18-9.8 14.5-18.9" fill="#ff5a79"/><path d="M17,22C7.3,22,2,28.3,2,36.7v24.5h30V36.7c0-12.4-8.1-12.2-8.1-12.2S23.3,22,17,22z" fill="#ffb300"/><path d="m2 47.8v14.2h30v-1.2c0-5.8-30-13-30-13" fill="#c2185b"/><path d="m5.3 37.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s11.8-4.1 17.8-9.9c0 0 5.9 1.9 5.9 14.2 0 5.2-3.7 11.3-9.6 11.3-6 0-14.8-4.2-14.8-11.7-2.2-.1-2.9-1.6-2.9-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><path d="m29.2 39.9c-.9-2-2.2-3-3.6-3-1.4 0-2.7 1-3.6 3-.1.2.4.6.6.4.9-.7 1.9-1 3-1 1.1 0 2.1.3 3 1 .2.1.7-.2.6-.4"/><path d="m18.4 39.9c-.9-2-2.2-3-3.6-3s-2.7 1-3.6 3c-.1.2.4.6.6.4.9-.7 1.9-1 3-1 1.1 0 2.1.3 3 1 .2.1.7-.2.6-.4"/><path d="m24.2 49.4c.8-.8-.9-1.4-.9-2.8 0-1.4 1.6-2 .9-2.8-.9-.9-2.9-.2-4.1-1.5 0 1 .9 2.2 2.5 2.2 0 0-1.1.4-1.1 2.2 0 1.7 1.1 2.2 1.1 2.2-1.6 0-2.5 1.1-2.5 2.2 1.2-1.4 3.2-.7 4.1-1.7"/></g><path d="M47,22c9.7,0,15,6.3,15,14.7v24.5H32V36.7c0-12.4,8.1-12.2,8.1-12.2S40.7,22,47,22z" fill="#ffb300"/><path d="m62 47.8v14.2h-30v-1.2c0-5.8 30-13 30-13" fill="#c2185b"/><path d="m58.7 37.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s-11.8-4.1-17.8-9.9c0 0-5.9 1.9-5.9 14.2 0 5.2 3.7 11.3 9.6 11.3 6 0 14.8-4.2 14.8-11.7 2.2-.2 2.9-1.7 2.9-3.5 0-2.8-1.3-3-2.3-2.8" fill="#ffdd67"/><g fill="#937237"><path d="m34.8 39.9c.9-2 2.2-3 3.6-3 1.4 0 2.7 1 3.6 3 .1.2-.4.6-.6.4-.9-.7-1.9-1-3-1-1.1 0-2.1.3-3 1-.2.1-.7-.2-.6-.4"/><path d="m45.6 39.9c.9-2 2.2-3 3.6-3s2.7 1 3.6 3c.1.2-.4.6-.6.4-.9-.7-1.9-1-3-1-1.1 0-2.1.3-3 1-.2.1-.7-.2-.6-.4"/><path d="m39.8 49.4c-.8-.8.9-1.4.9-2.8 0-1.4-1.6-2-.9-2.8.9-.9 2.9-.2 4.1-1.5 0 1-.9 2.2-2.5 2.2 0 0 1.1.4 1.1 2.2 0 1.7-1.1 2.2-1.1 2.2 1.6 0 2.5 1.1 2.5 2.2-1.2-1.4-3.2-.7-4.1-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f469.svg b/riot/emojione/svg/1f469.svg new file mode 100644 index 0000000..8a7fada --- /dev/null +++ b/riot/emojione/svg/1f469.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#ffb300"/><path d="M10.4,40.7c0,0-4.4-1.1-4.4-7.5c0-5.1,3.3-5.9,3.3-5.9C21.1,27.2,43,12,43,12s4.6,13.4,11.6,15.2 + c0,0,3.4,0.6,3.4,5.9c0,6.4-4.5,7.5-4.5,7.5C53.4,50.3,40.1,62,32,62C23.9,62,10.4,50.3,10.4,40.7z" fill="#ffdd67"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#eba352"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#664e27"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#664e27"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#f09985"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5s6-1.7 10-2.5c0 0-3.8.5-6.1-.4" fill="#d47f6c"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46a.svg b/riot/emojione/svg/1f46a.svg new file mode 100644 index 0000000..e0fc989 --- /dev/null +++ b/riot/emojione/svg/1f46a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,2C7.3,2,2,8.3,2,16.7v18.5h30V16.7c0-12.4-8.1-12.2-8.1-12.2S23.3,2,17,2z" fill="#ffb300"/><path d="m32 34.8v27.2h30v-27.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="M2,34.8V62h30V34.8C32,29,2,29,2,34.8z" fill="#c2185b"/><path d="m6.4 23.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="20.3" r="2.2"/><circle cx="22.9" cy="20.3" r="2.2"/><path d="m21.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4 1.8 0 3.2-1.1 3.9-2.4.2-.4 0-.8-.3-.5"/></g><path d="m31.9 17.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 17.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="20.3" r="2.2"/><circle cx="52" cy="20.3" r="2.2"/><path d="m50.1 27.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m44.5 62h-25c0-8.4 25-8.4 25 0" fill="#29b6f6"/><path d="m32 36c-6.7 0-10.9 3.8-10.9 8.5v3.2c0 3.7 2.9 3.7 2.9 3.7h16.4c0 0 2.5 0 2.5-3.7 0-1.7 0-3.2 0-3.2 0-4.7-4.4-8.5-10.9-8.5" fill="#ffb300"/><path d="m22.1 48.5l.4-4.5c0-2.9 4.5-.6 9.5-.6s9.5-2.3 9.5.6l.4 4.5c2.2 0 2.2 3.5 0 3.5 0 4.4-5.9 7-9.9 7-4 0-9.9-2.6-9.9-7-2.1 0-2.1-3.5 0-3.5" fill="#ffdd67"/><g fill="#937237"><circle cx="27.2" cy="49.8" r="1.8"/><circle cx="36.8" cy="49.8" r="1.8"/><path d="m28.9 54.4c2 1.5 4.3 1.5 6.3 0 .2-.2.5.1.3.4-.6 1.1-1.9 2-3.4 2-1.6 0-2.8-1-3.4-2-.3-.3-.1-.6.2-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46b.svg b/riot/emojione/svg/1f46b.svg new file mode 100644 index 0000000..4e7dcce --- /dev/null +++ b/riot/emojione/svg/1f46b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m14.1 26.5h5.8v4.5h-5.8z"/><path d="m10.2 43.3v17.2h5.3c0-11.5.9-13 .9-13h1.1c0 0 .9 1.5.9 13h5.3v-17.2h-13.5" fill="#231f20"/><g fill="#428bc1"><path d="m18.4 59.9c.9-1.1 4.4-1.1 5.3 0v2.1h-5.3v-2.1"/><path d="m15.6 59.9c-.9-1.1-4.4-1.1-5.3 0v2.1h5.4c-.1 0-.1-2.1-.1-2.1"/><path d="m24.4 28.8h-4.5c0 .9-1.3 1.6-2.9 1.6-1.6 0-2.9-.7-2.9-1.6h-4.5l.7 14.5h13.5l.6-14.5"/><path d="m30.8 43.7l-7.7-12.6c-1.2-2 1.4-3.2 2.6-1.3l7.7 12.6-2.6 1.3"/></g><path d="m30.8 43.7c1.5 2.3 2.1 2.2 2.9 1.9.7-.4 1.2-.8-.2-3.2l-2.7 1.3" fill="#ffdd67"/><path d="m5.3 44.4l2.7-14.2c.4-2.2 3.4-1.8 2.9.5l-2.7 14.1-2.9-.4" fill="#428bc1"/><path d="m5.3 44.4c-.5 2.6.1 2.9.9 3 .8.2 1.5.1 2-2.6l-2.9-.4" fill="#ffdd67"/><path d="m59.2 14.8c0 2.1 0 16.2 0 16.2h-25.8c0 0 0-14.1 0-16.2 0-15.6 25.8-15.6 25.8 0" fill="#ffb300"/><path d="m58.5 18.6c0-3.8-2.7-1.8-2.7-1.8.2-5.3-2.2-5.7-2.2-5.7-11.1 0-16.7 5.7-16.7 5.7s-2.7-1.9-2.7 1.8c0 1.5.5 2.6 2.3 2.8.7 5.9 4.5 7 9.9 7 5.4 0 9.1-1.2 9.9-7 1.6-.2 2.2-1.4 2.2-2.8" fill="#ffdd67"/><path d="m56.5 44.1l-7.2-12.8c-1.1-2.1 1.5-3.2 2.7-1.2l7.2 12.8-2.7 1.2" fill="#ff4848"/><g fill="#ffdd67"><path d="m56.5 44.1c1.4 2.5 2 2.3 2.8 2 .7-.3 1.3-.7-.1-3.2l-2.7 1.2"/><path d="m43.4 26.8h5.8v4.5h-5.8z"/><path d="m48.3 62v-15.4c0-2.5 3-2.5 3 0v15.4h-3"/></g><path d="m47.1 59.9c.9-1.1 4.4-1.1 5.3 0v2.1h-5.3v-2.1" fill="#ff4848"/><path d="m41.3 62v-15.4c0-2.5 3-2.5 3 0v15.4h-3" fill="#ffdd67"/><g fill="#ff4848"><path d="m45.5 59.9c-.9-1.1-4.4-1.1-5.3 0v2.1h5.3v-2.1"/><path d="m50.2 29.1h-1c0 .9-1.3 1.6-2.9 1.6-1.6 0-2.9-.8-2.9-1.6h-1c-1.3 1.1-1.2 6.4-2.2 11.7-1.2 6.5-3.5 10.5-3.5 10.5h19.2c0 0-2.2-4-3.5-10.5-1-5.3-.9-10.7-2.2-11.7"/><path d="m35.5 43.9l7.7-12.6c1.2-2-1.4-3.2-2.6-1.2l-7.7 12.5 2.6 1.3"/></g><path d="m35.5 43.9c-1.5 2.3-2.1 2.2-2.9 1.9-.7-.4-1.2-.8.2-3.2l2.7 1.3" fill="#ffdd67"/><path d="m4.7 14.8l1.3 2.4h22l1-2.5c0-8.9-2.1-12.7-11.8-12.7-10-.1-12.5 3.8-12.5 12.8" fill="#ffb300"/><path d="m28 14.7c-.1.5-.2 1-.3 1.2-.3.5-.8.8-.8.8s.1-1 .1-2.3c-.6-8.2-1-4.3-10-4.3-9 0-9.5-3.9-10 4.3-.1 1.3.1 2.3.1 2.3s-.5-.2-.8-.8c-.1-.2-.2-.8-.3-1.2-.9-.2-2 0-2 2.4 0 1.5.6 2.8 2.4 2.9.7 5.1 7.5 8.5 10.5 8.5 3.1 0 9.9-3.4 10.5-8.5 1.9-.2 2.4-1.4 2.4-2.9.2-2.4-.9-2.6-1.8-2.4" fill="#ffdd67"/><g fill="#937237"><path d="m14.3 17.4c0 1.1-.8 1.9-1.9 1.9-1 0-1.9-.8-1.9-1.9s.8-1.9 1.9-1.9 1.9.8 1.9 1.9"/><path d="m23.5 17.4c0 1.1-.8 1.9-1.9 1.9-1 0-1.9-.8-1.9-1.9s.8-1.9 1.9-1.9c1 0 1.9.8 1.9 1.9"/><path d="m20 23.1c-1.9 1.5-4.1 1.5-6 0-.2-.2-.4.1-.3.4.6 1.1 1.8 2 3.3 2s2.7-.9 3.3-2c.1-.3-.1-.6-.3-.4"/><path d="m43.7 17.3c0 1.1-.8 1.9-1.9 1.9-1 0-1.9-.8-1.9-1.9s.8-1.9 1.9-1.9c1 0 1.9.8 1.9 1.9"/><path d="m52.9 17.3c0 1.1-.8 1.9-1.9 1.9-1 0-1.9-.8-1.9-1.9s.8-1.9 1.9-1.9c1.1 0 1.9.8 1.9 1.9"/><path d="m49.4 23c-1.9 1.5-4.1 1.5-6 0-.2-.2-.4.2-.3.5.6 1.1 1.8 2 3.3 2s2.7-.9 3.3-2c.2-.3-.1-.6-.3-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46c.svg b/riot/emojione/svg/1f46c.svg new file mode 100644 index 0000000..376a18d --- /dev/null +++ b/riot/emojione/svg/1f46c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m13.1 26.5h5.8v4.4h-5.8z"/><path d="m9.2 43.3v17.1h5.3c0-11.5.9-13 .9-13h1.1c0 0 .9 1.5.9 13h5.3v-17.1h-13.5" fill="#231f20"/><g fill="#428bc1"><path d="m17.4 59.9c.9-1.1 4.4-1.1 5.3 0v2.1h-5.3v-2.1"/><path d="m14.6 59.9c-.9-1.1-4.4-1.1-5.3 0v2.1h5.3v-2.1"/><path d="m23.3 28.8h-4.5c0 .9-1.3 1.7-2.9 1.7-1.6 0-2.9-.7-2.9-1.7h-4.4l.7 14.5h13.5l.5-14.5"/><path d="m29.7 43.7l-7.7-12.6c-1.2-2 1.4-3.2 2.6-1.3l7.7 12.6-2.6 1.3"/></g><path d="m29.7 43.7c1.5 2.4 2.1 2.2 2.8 1.9.7-.3 1.2-.8-.2-3.2l-2.6 1.3" fill="#ffdd67"/><path d="m4.3 44.4l2.7-14.2c.4-2.2 3.4-1.7 2.9.5l-2.7 14.2-2.9-.5" fill="#428bc1"/><g fill="#ffdd67"><path d="m4.3 44.4c-.5 2.7.1 2.9.9 3.1.8.1 1.5.1 2-2.6l-2.9-.5"/><path d="m45.1 26.5h5.8v4.4h-5.8z"/></g><path d="m54.8 43.3v17.1h-5.3c0-11.5-.9-13-.9-13h-1.1c0 0-.9 1.5-.9 13h-5.3v-17.1h13.5" fill="#231f20"/><g fill="#428bc1"><path d="m46.6 59.9c-.9-1.1-4.4-1.1-5.3 0v2.1h5.3v-2.1"/><path d="m49.4 59.9c.9-1.1 4.4-1.1 5.3 0v2.1h-5.3v-2.1"/></g><g fill="#6adbc6"><path d="m40.7 28.8h4.5c0 .9 1.3 1.7 2.9 1.7s2.9-.7 2.9-1.7h4.5l-.6 14.5h-13.6l-.6-14.5"/><path d="m34.3 43.7l7.7-12.6c1.2-2-1.4-3.2-2.6-1.3l-7.7 12.6 2.6 1.3"/></g><path d="m34.3 43.7c-1.5 2.4-2.1 2.2-2.8 1.9-.7-.3-1.2-.8.2-3.2l2.6 1.3" fill="#ffdd67"/><path d="m59.7 44.4l-2.7-14.2c-.4-2.2-3.4-1.7-2.9.5l2.8 14.1 2.8-.4" fill="#6adbc6"/><path d="m59.7 44.4c.5 2.7-.1 2.9-.9 3.1-.8.1-1.5.1-2-2.6l2.9-.5" fill="#ffdd67"/><path d="m3.7 14.9l1.3 2.3h22l1-2.5c0-8.9-2.1-12.6-11.8-12.7-10-.1-12.5 3.8-12.5 12.9" fill="#ffb300"/><path d="m27 14.7c-.1.5-.2 1-.3 1.3-.3.5-.8.8-.8.8s.1-1 .1-2.4c-.6-8.2-1-4.2-10-4.2-9 0-9.4-3.9-10 4.2-.1 1.4.1 2.4.1 2.4s-.6-.3-.8-.8c-.1-.3-.2-.8-.3-1.3-.8-.2-1.9 0-1.9 2.4 0 1.5.6 2.8 2.4 2.9.7 5.1 7.5 8.5 10.5 8.5 3.1 0 9.9-3.4 10.5-8.5 1.9-.1 2.4-1.4 2.4-2.9 0-2.4-1.1-2.6-1.9-2.4" fill="#ffdd67"/><g fill="#937237"><circle cx="11.4" cy="17.4" r="1.9"/><circle cx="20.6" cy="17.4" r="1.9"/><path d="m19 23.1c-1.9 1.5-4.1 1.5-6 0-.2-.2-.4.1-.3.4.6 1.1 1.8 2 3.3 2 1.5 0 2.7-1 3.3-2 .1-.3-.1-.6-.3-.4"/></g><path d="m35.8 14.9l1.3 2.3h22l1-2.5c-.1-8.9-2.2-12.6-12-12.7-9.8-.1-12.3 3.8-12.3 12.9" fill="#ffb300"/><path d="m59.1 14.7c-.1.5-.2 1-.3 1.3-.3.5-.8.8-.8.8s.1-1 .1-2.4c-.6-8.2-1-4.2-10-4.2-9 0-9.4-3.9-10 4.2-.1 1.4.1 2.4.1 2.4s-.5-.3-.8-.8c-.1-.3-.2-.8-.3-1.3-.8-.2-1.9 0-1.9 2.4 0 1.5.6 2.8 2.4 2.9.7 5.1 7.5 8.5 10.5 8.5 3.1 0 9.9-3.4 10.5-8.5 1.9-.1 2.4-1.4 2.4-2.9 0-2.4-1.1-2.6-1.9-2.4" fill="#ffdd67"/><g fill="#937237"><path d="m45.3 17.4c0 1-.8 1.9-1.9 1.9-1 0-1.9-.8-1.9-1.9 0-1 .8-1.9 1.9-1.9 1.1 0 1.9.8 1.9 1.9"/><circle cx="52.6" cy="17.4" r="1.9"/><path d="m51 23.1c-1.9 1.5-4.1 1.5-6 0-.2-.2-.4.1-.3.4.6 1.1 1.8 2 3.3 2 1.5 0 2.7-1 3.3-2 .2-.3 0-.6-.3-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46d.svg b/riot/emojione/svg/1f46d.svg new file mode 100644 index 0000000..ed12b05 --- /dev/null +++ b/riot/emojione/svg/1f46d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.2 15.6c0 2 0 19.4 0 19.4h-26.5c0 0 0-17.4 0-19.4 0-18.1 26.5-18.1 26.5 0" fill="#ffb300"/><path d="m58.4 44.4l-7.4-12.6c-1.2-2 1.6-3.1 2.7-1.1l7.4 12.6-2.7 1.1" fill="#ff4848"/><g fill="#ffdd67"><path d="m58.4 44.4c1.4 2.4 2.1 2.3 2.8 1.9.8-.3 1.3-.7-.1-3.1l-2.7 1.2"/><path d="m60.4 19.4c0-3.7-2.8-1.8-2.8-1.8.2-5.2-2.2-5.7-2.2-5.7-11.3 0-17.1 5.7-17.1 5.7s-2.8-1.9-2.8 1.8c0 1.4.5 2.6 2.3 2.7.8 5.7 4.6 6.9 10.2 6.9 5.6 0 9.3-1.2 10.1-6.9 1.8-.1 2.3-1.3 2.3-2.7"/><path d="m45 27.4h5.9v4.4h-5.9z"/><path d="m50 62v-15.1c0-2.4 3.1-2.4 3.1 0v15.1h-3.1"/></g><path d="m48.8 60c1-1.1 4.5-1.1 5.5 0v2h-5.5v-2" fill="#ff4848"/><path d="m42.9 62v-15.1c0-2.4 3.1-2.4 3.1 0v15.1h-3.1" fill="#ffdd67"/><g fill="#ff4848"><path d="m47.1 60c-1-1.1-4.5-1.1-5.5 0v2h5.5v-2"/><path d="m51.9 29.7h-1c0 .9-1.3 1.6-3 1.6-1.6 0-3-.7-3-1.6h-1c-1.4 1.1-1.2 6.3-2.3 11.5-1.3 6.4-3.6 10.4-3.6 10.4h19.6c0 0-2.3-4-3.6-10.4-.8-5.3-.7-10.5-2.1-11.5"/></g><path d="m2.8 15.6c0 2 0 19.4 0 19.4h26.4c0 0 0-17.4 0-19.4.1-18.1-26.4-18.1-26.4 0" fill="#ffb300"/><g fill="#ffdd67"><path d="m3.6 19.4c0-3.7 2.8-1.8 2.8-1.8 4.5-2.8 4.5-7.8 4.5-7.8.5 4.5 14.8 7.8 14.8 7.8s2.8-1.9 2.8 1.8c0 1.4-.5 2.6-2.3 2.7-.8 5.7-4.6 6.9-10.2 6.9-5.6 0-9.4-1.2-10.1-6.9-1.8-.1-2.3-1.3-2.3-2.7"/><path d="m5.6 44.4l7.4-12.6c1.2-2-1.6-3.1-2.7-1.1l-7.4 12.6 2.7 1.1"/><path d="m5.6 44.4c-1.4 2.4-2.1 2.3-2.8 1.9-.8-.3-1.3-.7.1-3.1l2.7 1.2"/><path d="m29.6 42l-10.9-9.8c-1.7-1.5.5-3.4 2.3-1.9l10.9 9.8-2.3 1.9"/><path d="m29.6 42c2.1 1.9 2.7 1.5 3.3 1 .6-.5 1-1.1-1.1-2.9l-2.2 1.9"/></g><path d="m33.9 42l10.9-9.8c1.7-1.5-.5-3.4-2.3-1.9l-10.9 9.8 2.3 1.9" fill="#ff4848"/><g fill="#ffdd67"><path d="m33.9 42c-2.1 1.9-2.7 1.5-3.3 1-.6-.5-1-1.1 1.1-2.9l2.2 1.9"/><path d="m13.1 27.4h5.9v4.4h-5.9z"/><path d="m14 62v-15.1c0-2.4-3.1-2.4-3.1 0v15.1h3.1"/></g><path d="m15.2 60c-1-1.1-4.5-1.1-5.5 0v2h5.5v-2" fill="#c28fef"/><path d="m21.1 62v-15.1c0-2.4-3.1-2.4-3.1 0v15.1h3.1" fill="#ffdd67"/><g fill="#c28fef"><path d="m16.9 60c1-1.1 4.5-1.1 5.5 0v2h-5.5v-2"/><path d="m12.1 29.7h1c0 .9 1.3 1.6 3 1.6 1.6 0 3-.7 3-1.6h1c1.4 1.1 2.9 19 2.9 19h-13.8c0 0 1.5-18 2.9-19"/></g><g fill="#937237"><circle cx="43.4" cy="18.7" r="1.9"/><circle cx="52.6" cy="18.7" r="1.9"/><path d="m51 24.4c-1.9 1.5-4.1 1.5-6 0-.2-.2-.4.1-.3.4.6 1.1 1.8 2 3.3 2 1.5 0 2.7-1 3.3-2 .2-.2 0-.5-.3-.4"/><circle cx="11.3" cy="18.7" r="1.9"/><circle cx="20.5" cy="18.7" r="1.9"/><path d="m18.9 24.4c-1.9 1.5-4.1 1.5-6 0-.2-.2-.4.1-.3.4.6 1.1 1.8 2 3.3 2 1.5 0 2.7-1 3.3-2 .1-.2-.1-.5-.3-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46e-1f3fb.svg b/riot/emojione/svg/1f46e-1f3fb.svg new file mode 100644 index 0000000..98a019f --- /dev/null +++ b/riot/emojione/svg/1f46e-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 17.3c-15.8 0-27 .5-27 10 0 .8.8 14 .8 14h52.5l.8-14c-.1-7.4-9.7-10-27.1-10" fill="#594640"/><path d="m56 37c-4-1.7-1.9-9-1.9-9-1.8 1-5.5 1.2-10.1.9 1.2.8 2 1.3 2 1.3-4.6 1.7-10.1.8-10.1.8 1.6 1.2 2.6 1.8 2.6 1.8-15 .5-23.5-5.4-27.8-9.8-3.6 7.2 0 11.5-2.7 14 0 0-4 0-4 5 0 5 4 5 4 5 0 8 18 15 24 15s24-7 24-15c0 0 4 0 4-5s-4-5-4-5" fill="#ffe1bd"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="m59 22.7c0 3.1-11.9 5.7-27 5.7s-27-2.6-27-5.7c0 0-.3 2.3 27 2.3s27-2.3 27-2.3" fill="#454749"/><path d="m46.7 10.5c-4.1-1.8-10.3-8.5-14.7-8.5-4.4 0-10.6 6.7-14.7 8.5-3.3 1.4-9.5 1.9-12 4.5-2.7 2.8-.3 7.9-.3 7.9s.3 2.3 27 2.3c26.7 0 27-2.3 27-2.3s2.4-5-.3-7.8c-2.5-2.7-8.7-3.2-12-4.6" fill="#428bc1"/><path d="m29.3 10.3c1.6-.7 2.7-3.4 2.7-3.4s1.1 2.8 2.7 3.4c1.3.6 4.4-2.1 4.4-2.1s-.3 6.7-.8 8.1c-1.5 3.7-6.3 5.8-6.3 5.8s-4.8-2.1-6.3-5.8c-.6-1.4-.8-8.1-.8-8.1s3.1 2.7 4.4 2.1" fill="#fbbf67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46e-1f3fc.svg b/riot/emojione/svg/1f46e-1f3fc.svg new file mode 100644 index 0000000..9e44350 --- /dev/null +++ b/riot/emojione/svg/1f46e-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 17.3c-15.8 0-27 .5-27 10 0 .8.8 14 .8 14h52.5l.8-14c-.1-7.4-9.7-10-27.1-10" fill="#dbb471"/><path d="m56 37c-4-1.7-1.9-9-1.9-9-1.8 1-5.5 1.2-10.1.9 1.2.8 2 1.3 2 1.3-4.6 1.7-10.1.8-10.1.8 1.6 1.2 2.6 1.8 2.6 1.8-15 .5-23.5-5.4-27.8-9.8-3.6 7.2 0 11.5-2.7 14 0 0-4 0-4 5 0 5 4 5 4 5 0 8 18 15 24 15s24-7 24-15c0 0 4 0 4-5s-4-5-4-5" fill="#fed0ac"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="m59 22.7c0 3.1-11.9 5.7-27 5.7-15.1 0-27-2.6-27-5.7 0 0-.3 2.3 27 2.3 27.3 0 27-2.3 27-2.3" fill="#454749"/><path d="m46.7 10.5c-4.1-1.8-10.3-8.5-14.7-8.5s-10.6 6.7-14.7 8.5c-3.3 1.4-9.5 1.9-12 4.5-2.7 2.8-.3 7.9-.3 7.9s.3 2.3 27 2.3c26.7 0 27-2.3 27-2.3s2.4-5-.3-7.8c-2.5-2.7-8.7-3.2-12-4.6" fill="#428bc1"/><path d="m29.3 10.3c1.6-.7 2.7-3.4 2.7-3.4s1.1 2.8 2.7 3.4c1.3.6 4.4-2.1 4.4-2.1s-.3 6.7-.8 8.1c-1.5 3.7-6.3 5.8-6.3 5.8s-4.8-2.1-6.3-5.8c-.6-1.4-.8-8.1-.8-8.1s3.1 2.7 4.4 2.1" fill="#fbbf67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46e-1f3fd.svg b/riot/emojione/svg/1f46e-1f3fd.svg new file mode 100644 index 0000000..fe8b6f4 --- /dev/null +++ b/riot/emojione/svg/1f46e-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 17.3c-15.8 0-27 .5-27 10 0 .8.8 14 .8 14h52.5l.8-14c-.1-7.4-9.7-10-27.1-10" fill="#594640"/><path d="m56 37c-4-1.7-1.9-9-1.9-9-1.8 1-5.5 1.2-10.1.9 1.2.8 2 1.3 2 1.3-4.6 1.7-10.1.8-10.1.8 1.6 1.2 2.6 1.8 2.6 1.8-15 .5-23.5-5.4-27.8-9.8-3.6 7.2 0 11.5-2.7 14 0 0-4 0-4 5 0 5 4 5 4 5 0 8 18 15 24 15s24-7 24-15c0 0 4 0 4-5s-4-5-4-5" fill="#d6a57c"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="m59 22.7c0 3.1-11.9 5.7-27 5.7-15.1 0-27-2.6-27-5.7 0 0-.3 2.3 27 2.3 27.3 0 27-2.3 27-2.3" fill="#454749"/><path d="m46.7 10.5c-4.1-1.8-10.3-8.5-14.7-8.5s-10.6 6.7-14.7 8.5c-3.3 1.4-9.5 1.9-12 4.5-2.7 2.8-.3 7.9-.3 7.9s.3 2.3 27 2.3c26.7 0 27-2.3 27-2.3s2.4-5-.3-7.8c-2.5-2.7-8.7-3.2-12-4.6" fill="#428bc1"/><path d="m29.3 10.3c1.6-.7 2.7-3.4 2.7-3.4s1.1 2.8 2.7 3.4c1.3.6 4.4-2.1 4.4-2.1s-.3 6.7-.8 8.1c-1.5 3.7-6.3 5.8-6.3 5.8s-4.8-2.1-6.3-5.8c-.6-1.4-.8-8.1-.8-8.1s3.1 2.7 4.4 2.1" fill="#fbbf67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46e-1f3fe.svg b/riot/emojione/svg/1f46e-1f3fe.svg new file mode 100644 index 0000000..d880766 --- /dev/null +++ b/riot/emojione/svg/1f46e-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 17.3c-15.8 0-27 .5-27 10 0 .8.8 14 .8 14h52.5l.8-14c-.1-7.4-9.7-10-27.1-10" fill="#231f20"/><path d="m56 37c-4-1.7-1.9-9-1.9-9-1.8 1-5.5 1.2-10.1.9 1.2.8 2 1.3 2 1.3-4.6 1.7-10.1.8-10.1.8 1.6 1.2 2.6 1.8 2.6 1.8-15 .5-23.5-5.4-27.8-9.8-3.6 7.2 0 11.5-2.7 14 0 0-4 0-4 5 0 5 4 5 4 5 0 8 18 15 24 15s24-7 24-15c0 0 4 0 4-5s-4-5-4-5" fill="#b47d56"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="m59 22.7c0 3.1-11.9 5.7-27 5.7-15.1 0-27-2.6-27-5.7 0 0-.3 2.3 27 2.3 27.3 0 27-2.3 27-2.3" fill="#454749"/><path d="m46.7 10.5c-4.1-1.8-10.3-8.5-14.7-8.5s-10.6 6.7-14.7 8.5c-3.3 1.4-9.5 1.9-12 4.5-2.7 2.8-.3 7.9-.3 7.9s.3 2.3 27 2.3c26.7 0 27-2.3 27-2.3s2.4-5-.3-7.8c-2.5-2.7-8.7-3.2-12-4.6" fill="#428bc1"/><path d="m29.3 10.3c1.6-.7 2.7-3.4 2.7-3.4s1.1 2.8 2.7 3.4c1.3.6 4.4-2.1 4.4-2.1s-.3 6.7-.8 8.1c-1.5 3.7-6.3 5.8-6.3 5.8s-4.8-2.1-6.3-5.8c-.6-1.4-.8-8.1-.8-8.1s3.1 2.7 4.4 2.1" fill="#fbbf67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46e-1f3ff.svg b/riot/emojione/svg/1f46e-1f3ff.svg new file mode 100644 index 0000000..9ec2135 --- /dev/null +++ b/riot/emojione/svg/1f46e-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 17.3c-15.8 0-27 .5-27 10 0 .8.8 14 .8 14h52.5l.8-14c-.1-7.4-9.7-10-27.1-10" fill="#231f20"/><path d="m56 37c-4-1.7-1.9-9-1.9-9-1.8 1-5.5 1.2-10.1.9 1.2.8 2 1.3 2 1.3-4.6 1.7-10.1.8-10.1.8 1.6 1.2 2.6 1.8 2.6 1.8-15 .5-23.5-5.4-27.8-9.8-3.6 7.2 0 11.5-2.7 14 0 0-4 0-4 5 0 5 4 5 4 5 0 8 18 15 24 15s24-7 24-15c0 0 4 0 4-5s-4-5-4-5" fill="#8a6859"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#574137"/><path d="m59 22.7c0 3.1-11.9 5.7-27 5.7-15.1 0-27-2.6-27-5.7 0 0-.3 2.3 27 2.3 27.3 0 27-2.3 27-2.3" fill="#454749"/><path d="m46.7 10.5c-4.1-1.8-10.3-8.5-14.7-8.5s-10.6 6.7-14.7 8.5c-3.3 1.4-9.5 1.9-12 4.5-2.7 2.8-.3 7.9-.3 7.9s.3 2.3 27 2.3c26.7 0 27-2.3 27-2.3s2.4-5-.3-7.8c-2.5-2.7-8.7-3.2-12-4.6" fill="#428bc1"/><path d="m29.3 10.3c1.6-.7 2.7-3.4 2.7-3.4s1.1 2.8 2.7 3.4c1.3.6 4.4-2.1 4.4-2.1s-.3 6.7-.8 8.1c-1.5 3.7-6.3 5.8-6.3 5.8s-4.8-2.1-6.3-5.8c-.6-1.4-.8-8.1-.8-8.1s3.1 2.7 4.4 2.1" fill="#fbbf67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46e.svg b/riot/emojione/svg/1f46e.svg new file mode 100644 index 0000000..3631cdd --- /dev/null +++ b/riot/emojione/svg/1f46e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 17.3c-15.8 0-27 .5-27 10 0 .8.8 14 .8 14h52.5l.8-14c-.1-7.4-9.7-10-27.1-10" fill="#ffbc00"/><path d="m56 37c-4-1.7-1.9-7.9-1.9-7.9-1.8 1-5.5 1.2-10.1.9 1.2.8 2 1.3 2 1.3-4.6 1.7-10.1.8-10.1.8 1.6 1.2 2.6 1.8 2.6 1.8-15 .5-23.5-5.4-27.8-9.8-3.6 7.2 0 10.4-2.7 12.9 0 0-4 0-4 5 0 5 4 5 4 5 0 8 18 15 24 15s24-7 24-15c0 0 4 0 4-5s-4-5-4-5" fill="#ffdd67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#937237"/><path d="m59 23.2c0 3.2-11.9 7-27 7-15.1 0-27-3.8-27-7h54" fill="#454749"/><path d="m46.7 10.7c-4.1-1.8-10.3-8.7-14.7-8.7-4.4 0-10.6 6.9-14.7 8.7-3.3 1.5-9.5 2-12 4.6-2.7 2.9-.3 8-.3 8s.3 2.7 27 2.7c26.7 0 27-2.6 27-2.6s2.4-5.2-.3-8c-2.5-2.7-8.7-3.2-12-4.7" fill="#428bc1"/><path d="m29.4 10.6c1.5-.7 2.6-3.6 2.6-3.6s1.1 2.9 2.6 3.6c1.4.6 4.4-2.2 4.4-2.2s-.3 7.1-.8 8.5c-1.4 3.8-6.2 6-6.2 6s-4.8-2.2-6.2-6c-.5-1.4-.8-8.5-.8-8.5s3.1 2.8 4.4 2.2" fill="#fbbf67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f46f.svg b/riot/emojione/svg/1f46f.svg new file mode 100644 index 0000000..32985cc --- /dev/null +++ b/riot/emojione/svg/1f46f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.9 21c0 1.3 0 10.2 0 10.2h-17.4c0 0 0-9 0-10.2 0-11.3 17.4-11.3 17.4 0" fill="#ffb300"/><g fill="#ffdd67"><path d="m47.4 23.3c0-2.3-1.8-1.1-1.8-1.1.1-3.2-1.5-3.5-1.5-3.5-7.4 0-11.2 3.5-11.2 3.5s-1.9-1.2-1.9 1.1c0 .9.4 1.6 1.5 1.7.5 3.5 3 4.3 6.6 4.3 3.6 0 6.1-.7 6.6-4.3 1.3-.1 1.7-.8 1.7-1.7"/><path d="m32.2 35.7l3.8-3.6c1.7-1.4-.6-3.3-2.2-1.8-5.7 5.3-5.8 4.7-4.6 5.8l7 7.1v-2.5l-4-5"/></g><path d="m36.2 32.1c1.9-1.6-.7-3.6-2.4-1.9-1 .9-1.9 1.7-2.7 2.4l2.3 2.1 2.8-2.6" fill="#594640"/><path d="m45.9 35.5l-3.5-3.3c-1.7-1.4.6-3.3 2.2-1.8 5.7 5.3 5.4 5.3 4.2 6.4l-8.5 5.1-.5-1.5 6.1-4.9" fill="#ffdd67"/><path d="m42.2 32.1c-1.8-1.6.7-3.6 2.4-1.9 1 .9 1.9 1.7 2.7 2.4l-2.3 2.2-2.8-2.7" fill="#594640"/><path fill="#ffdd67" d="m37.3 27.5h3.9v4h-3.9z"/><g fill="#594640"><path d="m43.1 29.6h-1.9c0 .8-.3 1.5-2 1.5-1.6 0-2-.7-2-1.5h-2c-1.3 1-2.4 9.1-.9 13.6 1.3 3.7 6.1 3.4 7.9 2.7l2.6-2.9c.4-2.7-2.6-4.1-2.6-4.1-.5-2.6 2.2-8.3.9-9.3"/><path d="m57.5 52.8c3 1.9 1.3 4.2-3.1 2.2-3.7-1.7-.6-5 .8-3.8 1 1 1.7 1.2 2.3 1.6"/></g><path d="m55.2 52.2c-3.4-2.8-2.7-4.5-6.3-5.1-2.9-5.1-5.5-6.8-5.5-6.8-2.1 2.8-1.6 5.1-1.6 5.1s3.1 4.4 5.6 5.5c3.1 1.3 6.3 3.3 6.3 3.3 1.4 1.1 3-.7 1.5-2" fill="#ffdd67"/><path d="m41.2 59.6c.1 3.8-5.6 2.2-3.5.6.3-.3.3-.9.1-1.3-1.3-3.6 3.1-3.9 3.1-2.2.1 1.4.3 2.3.3 2.9" fill="#594640"/><path d="m40.3 57.5c-.3-4.2 1.4-5-.5-7.8 1-2.5 0-3.4 0-3.4-2.8.3-5.1-2.4-5.1-2.4s.6 5.1 1.5 7.5c1.1 3 1.8 6.5 1.8 6.5.1 1.7 2.4 1.5 2.3-.4" fill="#ffdd67"/><path d="m43.5 16.6c.2-1 .9-3.1 3.1-7 1.2-2.2-.1-7.3-.8-7.6-.4-.2-4.2 3.2-4.4 6.1-.2 3.8-.4 6.4-.5 7.6-.1 1.1 2.3 1.6 2.6.9" fill="#594640"/><path d="m44.9 5.3c-.4-.2-2 1.2-2.3 3.2-.8 4.8-1 7.4-1 7.4l1.5.4c0 0 0-1.6 2.2-7.1.5-1.3.2-3.6-.4-3.9" fill="#e84d88"/><path d="m34.9 16.6c-.2-1-.9-3.1-3-7-1.2-2.2.1-7.3.8-7.6.5-.2 4.3 3.2 4.4 6.1.2 3.8.4 6.4.5 7.6 0 1.1-2.4 1.6-2.7.9" fill="#594640"/><path d="m33.5 5.3c.4-.2 2 1.2 2.3 3.2.8 4.8 1 7.4 1 7.4l-1.5.4c0 0 0-1.6-2.2-7.1-.6-1.3-.3-3.6.4-3.9" fill="#e84d88"/><path d="m39.3 17c2.6 0 5 .5 7 1.3-1.1-1.9-3.8-3.2-7-3.2s-5.9 1.3-7 3.2c2-.8 4.4-1.3 7-1.3" fill="#594640"/><path d="m24.3 21c0 1.3 0 10.2 0 10.2h-17.4c0 0 0-9 0-10.2 0-11.3 17.4-11.3 17.4 0" fill="#ffb300"/><g fill="#ffdd67"><path d="m23.8 23.3c0-2.3-1.8-1.1-1.8-1.1.1-3.2-1.5-3.5-1.5-3.5-7.4 0-11.2 3.5-11.2 3.5s-1.9-1.2-1.9 1.1c0 .9.4 1.6 1.5 1.7.5 3.5 3 4.3 6.6 4.3 3.6 0 6.1-.7 6.6-4.3 1.3-.1 1.7-.8 1.7-1.7"/><path d="m8.7 35.7l3.8-3.6c1.7-1.4-.6-3.3-2.2-1.8-5.7 5.3-5.8 4.7-4.6 5.8l7 7.1v-2.5l-4-5"/></g><path d="m12.6 32.1c1.9-1.6-.7-3.6-2.4-1.9-1 .9-1.9 1.7-2.7 2.4l2.3 2.1 2.8-2.6" fill="#594640"/><path d="m22.3 35.5l-3.5-3.3c-1.7-1.4.6-3.3 2.2-1.8 5.7 5.3 5.4 5.3 4.2 6.4l-8.5 5.1-.5-1.5 6.1-4.9" fill="#ffdd67"/><path d="m18.6 32.1c-1.9-1.6.7-3.6 2.4-1.9 1 .9 1.9 1.7 2.7 2.4l-2.3 2.1-2.8-2.6" fill="#594640"/><path fill="#ffdd67" d="m13.7 27.5h3.9v4h-3.9z"/><g fill="#594640"><path d="m19.5 29.6h-1.9c0 .8-.3 1.5-2 1.5-1.6 0-2-.7-2-1.5h-2c-1.3 1-2.4 9.1-.9 13.6 1.3 3.7 6.1 3.4 7.9 2.7l2.6-2.9c.4-2.7-2.6-4.1-2.6-4.1-.5-2.6 2.3-8.3.9-9.3"/><path d="m33.9 52.8c3 1.9 1.3 4.2-3.1 2.2-3.7-1.7-.6-5 .8-3.8 1.1 1 1.7 1.2 2.3 1.6"/></g><path d="m31.6 52.2c-3.4-2.8-2.7-4.5-6.3-5.1-2.9-5.1-5.5-6.8-5.5-6.8-2.1 2.8-1.6 5.1-1.6 5.1s3.1 4.4 5.6 5.5c3.1 1.3 6.3 3.3 6.3 3.3 1.4 1.1 3.1-.7 1.5-2" fill="#ffdd67"/><path d="m17.7 59.6c.1 3.8-5.6 2.2-3.5.6.3-.3.3-.9.1-1.3-1.3-3.6 3.1-3.9 3.1-2.2.1 1.4.2 2.3.3 2.9" fill="#594640"/><path d="m16.8 57.5c-.3-4.2 1.4-5-.5-7.8 1-2.5 0-3.4 0-3.4-2.8.3-5.1-2.4-5.1-2.4s.6 5.1 1.5 7.5c1.1 3 1.8 6.5 1.8 6.5.1 1.7 2.4 1.5 2.3-.4" fill="#ffdd67"/><path d="m19.9 16.6c.2-1 .9-3.1 3.1-7 1.2-2.2-.1-7.3-.8-7.6-.5-.2-4.2 3.2-4.4 6.1-.2 3.8-.4 6.4-.5 7.6-.1 1.1 2.3 1.6 2.6.9" fill="#594640"/><path d="m21.3 5.3c-.4-.2-2 1.2-2.3 3.2-.8 4.8-1 7.4-1 7.4l1.5.4c0 0 0-1.6 2.2-7.1.6-1.3.3-3.6-.4-3.9" fill="#e84d88"/><path d="m11.3 16.6c-.2-1-.9-3.1-3.1-7-1.2-2.2.2-7.3.9-7.6.5-.2 4.2 3.2 4.4 6.1.2 3.8.4 6.4.5 7.6 0 1.1-2.4 1.6-2.7.9" fill="#594640"/><path d="m9.9 5.3c.4-.2 2 1.2 2.3 3.2.8 4.8 1 7.4 1 7.4l-1.5.4c0 0 0-1.6-2.2-7.1-.5-1.3-.2-3.6.4-3.9" fill="#e84d88"/><path d="m15.7 17c2.6 0 5 .5 7 1.3-1.1-1.9-3.8-3.2-7-3.2s-5.9 1.3-7 3.2c2-.8 4.4-1.3 7-1.3" fill="#594640"/><g fill="#937237"><circle cx="12.6" cy="22.2" r="1.2"/><circle cx="18.6" cy="22.2" r="1.2"/><path d="m17.6 25.9c-1.3 1-2.7 1-3.9 0-.2-.1-.3.1-.2.3.4.7 1.2 1.3 2.2 1.3s1.8-.6 2.2-1.3c0-.2-.2-.4-.3-.3"/><circle cx="36.2" cy="22.2" r="1.2"/><circle cx="42.2" cy="22.2" r="1.2"/><path d="m41.2 25.9c-1.3 1-2.7 1-3.9 0-.2-.1-.3.1-.2.3.4.7 1.2 1.3 2.2 1.3s1.8-.6 2.2-1.3c-.1-.2-.2-.4-.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f470-1f3fb.svg b/riot/emojione/svg/1f470-1f3fb.svg new file mode 100644 index 0000000..cb221ee --- /dev/null +++ b/riot/emojione/svg/1f470-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M50,10.8c-7-5.5-29-5.5-36,0C3.6,19,2,62,2,62h60C62,62,60.4,19,50,10.8z" fill="#cedbd5"/><path d="m54.3 39c.3-.7.5-1.4.5-2.2 0-1.5-.6-2.8-1.5-3.8 1.4-1 2.3-2.6 2.3-4.5 0-2-1-3.7-2.5-4.7.6-.9.9-1.9.9-3.1 0-.2 0-.4 0-.5l-1.4-3.7.3-2.7c-2.3-6.6-8.5-11.8-20.9-11.8-12.4 0-18.6 5.2-20.9 11.7l.3 2.7-1.4 3.7c0 .2 0 .3 0 .5 0 1.1.3 2.2.9 3.1-1.5 1-2.5 2.7-2.5 4.7 0 1.9.9 3.6 2.3 4.5-.9 1-1.5 2.3-1.5 3.8 0 .8.2 1.6.5 2.2-2 .7-2.7 2.8-2.7 5.2 0 10.1 11 5.7 11 5.7h28c0 0 11 4.5 11-5.7 0-2.4-.6-4.4-2.7-5.1" fill="#594640"/><g fill="#f2f1f0"><path d="m54.3 62c0-14.7-1.4-15.5-22.3-15.5-20.8 0-22.3.8-22.3 15.5h44.6"/><path d="m32 6.6c-7.8 0-15.1 2.7-20.9 7.1-.7 2-1 4.2-1.1 6.4 5.6-5.8 13.3-9.4 22-9.4 8.6 0 16.4 3.6 22 9.4 0-2.2-.4-4.3-1.1-6.4-5.8-4.4-13.1-7.1-20.9-7.1"/></g><path d="m15.4 36.2c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#ffe1bd"/><path d="m32 41.1c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#e6b796"/><path d="m36.8 34.3c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="30.7" r="3.5" fill="#664e27"/><circle cx="41.2" cy="30.7" r="1.2" fill="#2b2925"/><path d="m35.8 32.9c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 34.3c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><path d="m19.3 30.7c0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.5 3.5-3.5 0-1.9-1.6-3.5-3.5-3.5-1.9 0-3.5 1.6-3.5 3.5" fill="#664e27"/><path d="m28.2 32.9c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.2 10.3-3.8 13.8 5" fill="#3b3226"/><path d="m32 44.9l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#f085a9"/><path d="m35 43.5c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0-.1-2.9.3-4.7-.3" fill="#d46c8f"/><circle cx="22.8" cy="30.7" r="1.2" fill="#2b2925"/><path fill="#428bc1" d="m39.9 62h-16.6l-2.2-3h20.1z"/><path d="m41.2 59c0 .4-4.5.8-10 .8-5.5 0-10-.4-10-.8 0-.4 4.5-.8 10-.8 5.5 0 10 .4 10 .8" fill="#224863"/><path fill="#871212" d="m25.6 54.3l-2-2.2-1.5 2.4z"/><path fill="#991d1d" d="m23 54.9l2-2.9 2.4 1.4z"/><path fill="#ad2727" d="m22.1 53l-.3 1.7 4.6.3z"/><path d="m25.4 55c2.9 1.4 2.6 3.2 1.1 3.9-1.5.7-3.8.1-4.2-1.8-.4-1.9-1.7-3-1.7-3s2.6-.2 4.8.9" fill="#cc3636"/><path d="m23.7 55.6c-1 3.1 1.5 3.9 3 3.2 1.5-.7 2-2.7 1.2-4.4-.8-1.7-1.6-2.5-1.6-2.5s-1.9 1.5-2.6 3.7" fill="#e24b4b"/><path d="m26.3 58.1c2.3-1.1 1.7.2.2 1-3.6 1.8-5-1.5-5-1.5s2.8 1.5 4.8.5" fill="#75a843"/><path d="m26.3 58.1c-.5.5-1.9 1.7-.3 1.3 3.1-.8 2.5-5.1 2.5-5.1s-.7 2.2-2.2 3.8" fill="#83bf4f"/><path fill="#871212" d="m35.9 52.8l4.2 2.6-.1-3.5z"/><path fill="#991d1d" d="m39.8 57.3l-2.8-4.1h4.7z"/><path fill="#ad2727" d="m40.7 55.8l-2.6-4.6-2.2 1.8z"/><path fill="#cc3636" d="m38.6 55.5l-4.5-.2 2-4.7z"/><path d="m36.8 54.4c-3.5 1.2-2.6 4.1-.9 4.9 1.7.8 3.8 0 4.8-2 1-1.9 2.1-2.8 2.1-2.8s-3.5-.9-6-.1" fill="#e24b4b"/><path d="m36.4 58.5c-.8-.1-2.8-.6-1.4.6 2.9 2.3 6.3-1.2 6.3-1.2s-2.4.8-4.9.6" fill="#83bf4f"/><path fill="#871212" d="m27.6 52.8l6.2-.3-3-2.7z"/><path fill="#991d1d" d="m35 51.8l-6 1.6 3.7-3.3z"/><path fill="#ad2727" d="m33 53.1l-4.5-2.6-.6 3.4z"/><path d="m32.2 54.2v5.5c-2.2.5-4.8-1.1-4.7-3.7.1-2.6-1.3-4.5-1.3-4.5s3.4.6 6 2.7" fill="#cc3636"/><path d="m29.7 54.5c-2.3 3.7.7 5.7 2.9 5.2s3.5-2.9 2.9-5.4c-.6-2.5-.2-4.2-.2-4.2s-3.9 1.7-5.6 4.4" fill="#e24b4b"/><path d="m32.4 58.6c3.3-.8 2.2.8 0 1.3-5.3 1.2-6.1-3.5-6.1-3.5s3.1 2.9 6.1 2.2" fill="#75a843"/><path d="m32.4 58.6c-.8.6-3 1.6-.8 1.6 4.4-.1 4.9-5.8 4.9-5.8s-1.7 2.5-4.1 4.2" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f470-1f3fc.svg b/riot/emojione/svg/1f470-1f3fc.svg new file mode 100644 index 0000000..b571839 --- /dev/null +++ b/riot/emojione/svg/1f470-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M50,10.8c-7-5.5-29-5.5-36,0C3.6,19,2,62,2,62h60C62,62,60.4,19,50,10.8z" fill="#cedbd5"/><path d="m54.3 39c.3-.7.5-1.4.5-2.2 0-1.5-.6-2.8-1.5-3.8 1.4-1 2.3-2.6 2.3-4.5 0-2-1-3.7-2.5-4.7.6-.9.9-1.9.9-3.1 0-.2 0-.4 0-.5l-1.4-3.7.3-2.7c-2.3-6.6-8.5-11.8-20.9-11.8-12.4 0-18.6 5.2-20.9 11.7l.3 2.7-1.4 3.7c0 .2 0 .3 0 .5 0 1.1.3 2.2.9 3.1-1.5 1-2.5 2.7-2.5 4.7 0 1.9.9 3.6 2.3 4.5-.9 1-1.5 2.3-1.5 3.8 0 .8.2 1.6.5 2.2-2 .7-2.7 2.8-2.7 5.2 0 10.1 11 5.7 11 5.7h28c0 0 11 4.5 11-5.7 0-2.4-.6-4.4-2.7-5.1" fill="#dbb471"/><g fill="#f2f1f0"><path d="m54.3 62c0-14.7-1.4-15.5-22.3-15.5-20.8 0-22.3.8-22.3 15.5h44.6"/><path d="m32 6.6c-7.8 0-15.1 2.7-20.9 7.1-.7 2-1 4.2-1.1 6.4 5.6-5.8 13.3-9.4 22-9.4 8.6 0 16.4 3.6 22 9.4 0-2.2-.4-4.3-1.1-6.4-5.8-4.4-13.1-7.1-20.9-7.1"/></g><path d="m15.4 36.2c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4s-16.5-9-16.5-16.4" fill="#fed0ac"/><path d="m32 41.1c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#e0a372"/><path d="m36.8 34.3c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="30.7" r="3.5" fill="#664e27"/><circle cx="41.2" cy="30.7" r="1.2" fill="#2b2925"/><path d="m35.8 32.9c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 34.3c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="30.7" r="3.5" fill="#664e27"/><path d="m28.2 32.9c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.2 10.3-3.8 13.8 5" fill="#3b3226"/><path d="m32 44.9l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#e07297"/><path d="m35 43.5c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0-.1-2.9.3-4.7-.3" fill="#b85d7b"/><circle cx="22.8" cy="30.7" r="1.2" fill="#2b2925"/><path fill="#428bc1" d="m39.9 62h-16.6l-2.2-3h20.1z"/><ellipse cx="31.1" cy="59" rx="10" ry=".8" fill="#224863"/><path fill="#871212" d="m25.6 54.3l-2-2.2-1.5 2.4z"/><path fill="#991d1d" d="m23 54.9l2-2.9 2.4 1.4z"/><path fill="#ad2727" d="m22.1 53l-.3 1.7 4.6.3z"/><path d="m25.4 55c2.9 1.4 2.6 3.2 1.1 3.9-1.5.7-3.8.1-4.2-1.8-.4-1.9-1.7-3-1.7-3s2.6-.2 4.8.9" fill="#cc3636"/><path d="m23.7 55.6c-1 3.1 1.5 3.9 3 3.2 1.5-.7 2-2.7 1.2-4.4-.8-1.7-1.6-2.5-1.6-2.5s-1.9 1.5-2.6 3.7" fill="#e24b4b"/><path d="m26.3 58.1c2.3-1.1 1.7.2.2 1-3.6 1.8-5-1.5-5-1.5s2.8 1.5 4.8.5" fill="#75a843"/><path d="m26.3 58.1c-.5.5-1.9 1.7-.3 1.3 3.1-.8 2.5-5.1 2.5-5.1s-.7 2.2-2.2 3.8" fill="#83bf4f"/><path fill="#871212" d="m35.9 52.8l4.2 2.6-.1-3.5z"/><path fill="#991d1d" d="m39.8 57.3l-2.8-4.1h4.7z"/><path fill="#ad2727" d="m40.7 55.8l-2.6-4.6-2.2 1.8z"/><path fill="#cc3636" d="m38.6 55.5l-4.5-.2 2-4.7z"/><path d="m36.8 54.4c-3.5 1.2-2.6 4.1-.9 4.9 1.7.8 3.8 0 4.8-2 1-1.9 2.1-2.8 2.1-2.8s-3.5-.9-6-.1" fill="#e24b4b"/><path d="m36.4 58.5c-.8-.1-2.8-.6-1.4.6 2.9 2.3 6.3-1.2 6.3-1.2s-2.4.8-4.9.6" fill="#83bf4f"/><path fill="#871212" d="m27.6 52.8l6.2-.3-3-2.7z"/><path fill="#991d1d" d="m35 51.8l-6 1.6 3.7-3.3z"/><path fill="#ad2727" d="m33 53.1l-4.5-2.6-.6 3.4z"/><path d="m32.2 54.2v5.5c-2.2.5-4.8-1.1-4.7-3.7.1-2.6-1.3-4.5-1.3-4.5s3.4.6 6 2.7" fill="#cc3636"/><path d="m29.7 54.5c-2.3 3.7.7 5.7 2.9 5.2s3.5-2.9 2.9-5.4-.2-4.2-.2-4.2-3.9 1.7-5.6 4.4" fill="#e24b4b"/><path d="m32.4 58.6c3.3-.8 2.2.8 0 1.3-5.3 1.2-6.1-3.5-6.1-3.5s3.1 2.9 6.1 2.2" fill="#75a843"/><path d="m32.4 58.6c-.8.6-3 1.6-.8 1.6 4.4-.1 4.9-5.8 4.9-5.8s-1.7 2.5-4.1 4.2" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f470-1f3fd.svg b/riot/emojione/svg/1f470-1f3fd.svg new file mode 100644 index 0000000..6c9874f --- /dev/null +++ b/riot/emojione/svg/1f470-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M50,10.8c-7-5.5-29-5.5-36,0C3.6,19,2,62,2,62h60C62,62,60.4,19,50,10.8z" fill="#cedbd5"/><path d="m54.3 39c.3-.7.5-1.4.5-2.2 0-1.5-.6-2.8-1.5-3.8 1.4-1 2.3-2.6 2.3-4.5 0-2-1-3.7-2.5-4.7.6-.9.9-1.9.9-3.1 0-.2 0-.4 0-.5l-1.4-3.7.3-2.7c-2.3-6.6-8.5-11.8-20.9-11.8-12.4 0-18.6 5.2-20.9 11.7l.3 2.7-1.4 3.7c0 .2 0 .3 0 .5 0 1.1.3 2.2.9 3.1-1.5 1-2.5 2.7-2.5 4.7 0 1.9.9 3.6 2.3 4.5-.9 1-1.5 2.3-1.5 3.8 0 .8.2 1.6.5 2.2-2 .7-2.7 2.8-2.7 5.2 0 10.1 11 5.7 11 5.7h28c0 0 11 4.5 11-5.7 0-2.4-.6-4.4-2.7-5.1" fill="#594640"/><g fill="#f2f1f0"><path d="m54.3 62c0-14.7-1.4-15.5-22.3-15.5-20.8 0-22.3.8-22.3 15.5h44.6"/><path d="m32 6.6c-7.8 0-15.1 2.7-20.9 7.1-.7 2-1 4.2-1.1 6.4 5.6-5.8 13.3-9.4 22-9.4 8.6 0 16.4 3.6 22 9.4 0-2.2-.4-4.3-1.1-6.4-5.8-4.4-13.1-7.1-20.9-7.1"/></g><path d="m15.4 36.2c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#d6a57c"/><path d="m32 41.1c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#b58360"/><path d="m36.8 34.3c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><path d="m44.7 30.7c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.5-3.5-3.5 0-1.9 1.6-3.5 3.5-3.5 1.9 0 3.5 1.6 3.5 3.5" fill="#664e27"/><circle cx="41.2" cy="30.7" r="1.2" fill="#2b2925"/><path d="m35.8 32.9c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 34.3c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><path d="m19.3 30.7c0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.5 3.5-3.5 0-1.9-1.6-3.5-3.5-3.5-1.9 0-3.5 1.6-3.5 3.5" fill="#664e27"/><path d="m28.2 32.9c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.2 10.3-3.8 13.8 5" fill="#3b3226"/><path d="m32 44.9l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#b5607c"/><path d="m35 43.5c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9s4.6-1.3 7.7-1.9c0-.1-2.9.3-4.7-.3" fill="#804458"/><circle cx="22.8" cy="30.7" r="1.2" fill="#2b2925"/><path fill="#428bc1" d="m39.9 62h-16.6l-2.2-3h20.1z"/><path d="m41.2 59c0 .4-4.5.8-10 .8-5.5 0-10-.4-10-.8 0-.4 4.5-.8 10-.8 5.5 0 10 .4 10 .8" fill="#224863"/><path fill="#871212" d="m25.6 54.3l-2-2.2-1.5 2.4z"/><path fill="#991d1d" d="m23 54.9l2-2.9 2.4 1.4z"/><path fill="#ad2727" d="m22.1 53l-.3 1.7 4.6.3z"/><path d="m25.4 55c2.9 1.4 2.6 3.2 1.1 3.9-1.5.7-3.8.1-4.2-1.8-.4-1.9-1.7-3-1.7-3s2.6-.2 4.8.9" fill="#cc3636"/><path d="m23.7 55.6c-1 3.1 1.5 3.9 3 3.2 1.5-.7 2-2.7 1.2-4.4-.8-1.7-1.6-2.5-1.6-2.5s-1.9 1.5-2.6 3.7" fill="#e24b4b"/><path d="m26.3 58.1c2.3-1.1 1.7.2.2 1-3.6 1.8-5-1.5-5-1.5s2.8 1.5 4.8.5" fill="#75a843"/><path d="m26.3 58.1c-.5.5-1.9 1.7-.3 1.3 3.1-.8 2.5-5.1 2.5-5.1s-.7 2.2-2.2 3.8" fill="#83bf4f"/><path fill="#871212" d="m35.9 52.8l4.2 2.6-.1-3.5z"/><path fill="#991d1d" d="m39.8 57.3l-2.8-4.1h4.7z"/><path fill="#ad2727" d="m40.7 55.8l-2.6-4.6-2.2 1.8z"/><path fill="#cc3636" d="m38.6 55.5l-4.5-.2 2-4.7z"/><path d="m36.8 54.4c-3.5 1.2-2.6 4.1-.9 4.9 1.7.8 3.8 0 4.8-2 1-1.9 2.1-2.8 2.1-2.8s-3.5-.9-6-.1" fill="#e24b4b"/><path d="m36.4 58.5c-.8-.1-2.8-.6-1.4.6 2.9 2.3 6.3-1.2 6.3-1.2s-2.4.8-4.9.6" fill="#83bf4f"/><path fill="#871212" d="m27.6 52.8l6.2-.3-3-2.7z"/><path fill="#991d1d" d="m35 51.8l-6 1.6 3.7-3.3z"/><path fill="#ad2727" d="m33 53.1l-4.5-2.6-.6 3.4z"/><path d="m32.2 54.2v5.5c-2.2.5-4.8-1.1-4.7-3.7.1-2.6-1.3-4.5-1.3-4.5s3.4.6 6 2.7" fill="#cc3636"/><path d="m29.7 54.5c-2.3 3.7.7 5.7 2.9 5.2s3.5-2.9 2.9-5.4c-.6-2.5-.2-4.2-.2-4.2s-3.9 1.7-5.6 4.4" fill="#e24b4b"/><path d="m32.4 58.6c3.3-.8 2.2.8 0 1.3-5.3 1.2-6.1-3.5-6.1-3.5s3.1 2.9 6.1 2.2" fill="#75a843"/><path d="m32.4 58.6c-.8.6-3 1.6-.8 1.6 4.4-.1 4.9-5.8 4.9-5.8s-1.7 2.5-4.1 4.2" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f470-1f3fe.svg b/riot/emojione/svg/1f470-1f3fe.svg new file mode 100644 index 0000000..e4ff8c9 --- /dev/null +++ b/riot/emojione/svg/1f470-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M50,10.8c-7-5.5-29-5.5-36,0C3.6,19,2,62,2,62h60C62,62,60.4,19,50,10.8z" fill="#cedbd5"/><path d="m54.3 39c.3-.7.5-1.4.5-2.2 0-1.5-.6-2.8-1.5-3.8 1.4-1 2.3-2.6 2.3-4.5 0-2-1-3.7-2.5-4.7.6-.9.9-1.9.9-3.1 0-.2 0-.4 0-.5l-1.4-3.7.3-2.7c-2.3-6.6-8.5-11.8-20.9-11.8-12.4 0-18.6 5.2-20.9 11.7l.3 2.7-1.4 3.7c0 .2 0 .3 0 .5 0 1.1.3 2.2.9 3.1-1.5 1-2.5 2.7-2.5 4.7 0 1.9.9 3.6 2.3 4.5-.9 1-1.5 2.3-1.5 3.8 0 .8.2 1.6.5 2.2-2 .7-2.7 2.8-2.7 5.2 0 10.1 11 5.7 11 5.7h28c0 0 11 4.5 11-5.7 0-2.4-.6-4.4-2.7-5.1" fill="#231f20"/><g fill="#f2f1f0"><path d="m54.3 62c0-14.7-1.4-15.5-22.3-15.5-20.8 0-22.3.8-22.3 15.5h44.6"/><path d="m32 6.6c-7.8 0-15.1 2.7-20.9 7.1-.7 2-1 4.2-1.1 6.4 5.6-5.8 13.3-9.4 22-9.4 8.6 0 16.4 3.6 22 9.4 0-2.2-.4-4.3-1.1-6.4-5.8-4.4-13.1-7.1-20.9-7.1"/></g><path d="m15.4 36.2c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#b47d56"/><path d="m32 41.1c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#935e3e"/><path d="m36.8 34.3c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="30.7" r="3.5" fill="#664e27"/><circle cx="41.2" cy="30.7" r="1.2" fill="#2b2925"/><path d="m35.8 32.9c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 34.3c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><path d="m19.3 30.7c0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.5 3.5-3.5 0-1.9-1.6-3.5-3.5-3.5-1.9 0-3.5 1.6-3.5 3.5" fill="#664e27"/><path d="m28.2 32.9c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.2 10.3-3.8 13.8 5" fill="#3b3226"/><path d="m32 44.9l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#994360"/><path d="m35 43.5c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0-.1-2.9.3-4.7-.3" fill="#733449"/><circle cx="22.8" cy="30.7" r="1.2" fill="#2b2925"/><path fill="#428bc1" d="m39.9 62h-16.6l-2.2-3h20.1z"/><path d="m41.2 59c0 .4-4.5.8-10 .8-5.5 0-10-.4-10-.8 0-.4 4.5-.8 10-.8 5.5 0 10 .4 10 .8" fill="#224863"/><path fill="#871212" d="m25.6 54.3l-2-2.2-1.5 2.4z"/><path fill="#991d1d" d="m23 54.9l2-2.9 2.4 1.4z"/><path fill="#ad2727" d="m22.1 53l-.3 1.7 4.6.3z"/><path d="m25.4 55c2.9 1.4 2.6 3.2 1.1 3.9-1.5.7-3.8.1-4.2-1.8-.4-1.9-1.7-3-1.7-3s2.6-.2 4.8.9" fill="#cc3636"/><path d="m23.7 55.6c-1 3.1 1.5 3.9 3 3.2 1.5-.7 2-2.7 1.2-4.4-.8-1.7-1.6-2.5-1.6-2.5s-1.9 1.5-2.6 3.7" fill="#e24b4b"/><path d="m26.3 58.1c2.3-1.1 1.7.2.2 1-3.6 1.8-5-1.5-5-1.5s2.8 1.5 4.8.5" fill="#75a843"/><path d="m26.3 58.1c-.5.5-1.9 1.7-.3 1.3 3.1-.8 2.5-5.1 2.5-5.1s-.7 2.2-2.2 3.8" fill="#83bf4f"/><path fill="#871212" d="m35.9 52.8l4.2 2.6-.1-3.5z"/><path fill="#991d1d" d="m39.8 57.3l-2.8-4.1h4.7z"/><path fill="#ad2727" d="m40.7 55.8l-2.6-4.6-2.2 1.8z"/><path fill="#cc3636" d="m38.6 55.5l-4.5-.2 2-4.7z"/><path d="m36.8 54.4c-3.5 1.2-2.6 4.1-.9 4.9 1.7.8 3.8 0 4.8-2 1-1.9 2.1-2.8 2.1-2.8s-3.5-.9-6-.1" fill="#e24b4b"/><path d="m36.4 58.5c-.8-.1-2.8-.6-1.4.6 2.9 2.3 6.3-1.2 6.3-1.2s-2.4.8-4.9.6" fill="#83bf4f"/><path fill="#871212" d="m27.6 52.8l6.2-.3-3-2.7z"/><path fill="#991d1d" d="m35 51.8l-6 1.6 3.7-3.3z"/><path fill="#ad2727" d="m33 53.1l-4.5-2.6-.6 3.4z"/><path d="m32.2 54.2v5.5c-2.2.5-4.8-1.1-4.7-3.7.1-2.6-1.3-4.5-1.3-4.5s3.4.6 6 2.7" fill="#cc3636"/><path d="m29.7 54.5c-2.3 3.7.7 5.7 2.9 5.2s3.5-2.9 2.9-5.4c-.6-2.5-.2-4.2-.2-4.2s-3.9 1.7-5.6 4.4" fill="#e24b4b"/><path d="m32.4 58.6c3.3-.8 2.2.8 0 1.3-5.3 1.2-6.1-3.5-6.1-3.5s3.1 2.9 6.1 2.2" fill="#75a843"/><path d="m32.4 58.6c-.8.6-3 1.6-.8 1.6 4.4-.1 4.9-5.8 4.9-5.8s-1.7 2.5-4.1 4.2" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f470-1f3ff.svg b/riot/emojione/svg/1f470-1f3ff.svg new file mode 100644 index 0000000..29633af --- /dev/null +++ b/riot/emojione/svg/1f470-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M50,10.8c-7-5.5-29-5.5-36,0C3.6,19,2,62,2,62h60C62,62,60.4,19,50,10.8z" fill="#cedbd5"/><path d="m54.3 39c.3-.7.5-1.4.5-2.2 0-1.5-.6-2.8-1.5-3.8 1.4-1 2.3-2.6 2.3-4.5 0-2-1-3.7-2.5-4.7.6-.9.9-1.9.9-3.1 0-.2 0-.4 0-.5l-1.4-3.7.3-2.7c-2.3-6.6-8.5-11.8-20.9-11.8-12.4 0-18.6 5.2-20.9 11.7l.3 2.7-1.4 3.7c0 .2 0 .3 0 .5 0 1.1.3 2.2.9 3.1-1.5 1-2.5 2.7-2.5 4.7 0 1.9.9 3.6 2.3 4.5-.9 1-1.5 2.3-1.5 3.8 0 .8.2 1.6.5 2.2-2 .7-2.7 2.8-2.7 5.2 0 10.1 11 5.7 11 5.7h28c0 0 11 4.5 11-5.7 0-2.4-.6-4.4-2.7-5.1" fill="#231f20"/><g fill="#f2f1f0"><path d="m54.3 62c0-14.7-1.4-15.5-22.3-15.5-20.8 0-22.3.8-22.3 15.5h44.6"/><path d="m32 6.6c-7.8 0-15.1 2.7-20.9 7.1-.7 2-1 4.2-1.1 6.4 5.6-5.8 13.3-9.4 22-9.4s16.4 3.6 22 9.4c0-2.2-.4-4.3-1.1-6.4-5.8-4.4-13.1-7.1-20.9-7.1"/></g><path d="m15.4 36.2c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#8a6859"/><path d="m32 41.1c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#705041"/><path d="m36.8 34.3c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><path d="m44.7 30.7c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.5-3.5-3.5 0-1.9 1.6-3.5 3.5-3.5 1.9 0 3.5 1.6 3.5 3.5" fill="#664e27"/><circle cx="41.2" cy="30.7" r="1.2" fill="#2b2925"/><path d="m35.8 32.9c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 34.3c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="30.7" r="3.5" fill="#664e27"/><path d="m28.2 32.9c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.2 10.3-3.8 13.8 5" fill="#3b3226"/><path d="m32 44.9l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#994360"/><path d="m35 43.5c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0-.1-2.9.3-4.7-.3" fill="#733449"/><circle cx="22.8" cy="30.7" r="1.2" fill="#2b2925"/><path fill="#428bc1" d="m39.9 62h-16.6l-2.2-3h20.1z"/><path d="m41.2 59c0 .4-4.5.8-10 .8-5.5 0-10-.4-10-.8 0-.4 4.5-.8 10-.8 5.5 0 10 .4 10 .8" fill="#224863"/><path fill="#871212" d="m25.6 54.3l-2-2.2-1.5 2.4z"/><path fill="#991d1d" d="m23 54.9l2-2.9 2.4 1.4z"/><path fill="#ad2727" d="m22.1 53l-.3 1.7 4.6.3z"/><path d="m25.4 55c2.9 1.4 2.6 3.2 1.1 3.9-1.5.7-3.8.1-4.2-1.8-.4-1.9-1.7-3-1.7-3s2.6-.2 4.8.9" fill="#cc3636"/><path d="m23.7 55.6c-1 3.1 1.5 3.9 3 3.2 1.5-.7 2-2.7 1.2-4.4-.8-1.7-1.6-2.5-1.6-2.5s-1.9 1.5-2.6 3.7" fill="#e24b4b"/><path d="m26.3 58.1c2.3-1.1 1.7.2.2 1-3.6 1.8-5-1.5-5-1.5s2.8 1.5 4.8.5" fill="#75a843"/><path d="m26.3 58.1c-.5.5-1.9 1.7-.3 1.3 3.1-.8 2.5-5.1 2.5-5.1s-.7 2.2-2.2 3.8" fill="#83bf4f"/><path fill="#871212" d="m35.9 52.8l4.2 2.6-.1-3.5z"/><path fill="#991d1d" d="m39.8 57.3l-2.8-4.1h4.7z"/><path fill="#ad2727" d="m40.7 55.8l-2.6-4.6-2.2 1.8z"/><path fill="#cc3636" d="m38.6 55.5l-4.5-.2 2-4.7z"/><path d="m36.8 54.4c-3.5 1.2-2.6 4.1-.9 4.9 1.7.8 3.8 0 4.8-2 1-1.9 2.1-2.8 2.1-2.8s-3.5-.9-6-.1" fill="#e24b4b"/><path d="m36.4 58.5c-.8-.1-2.8-.6-1.4.6 2.9 2.3 6.3-1.2 6.3-1.2s-2.4.8-4.9.6" fill="#83bf4f"/><path fill="#871212" d="m27.6 52.8l6.2-.3-3-2.7z"/><path fill="#991d1d" d="m35 51.8l-6 1.6 3.7-3.3z"/><path fill="#ad2727" d="m33 53.1l-4.5-2.6-.6 3.4z"/><path d="m32.2 54.2v5.5c-2.2.5-4.8-1.1-4.7-3.7.1-2.6-1.3-4.5-1.3-4.5s3.4.6 6 2.7" fill="#cc3636"/><path d="m29.7 54.5c-2.3 3.7.7 5.7 2.9 5.2s3.5-2.9 2.9-5.4c-.6-2.5-.2-4.2-.2-4.2s-3.9 1.7-5.6 4.4" fill="#e24b4b"/><path d="m32.4 58.6c3.3-.8 2.2.8 0 1.3-5.3 1.2-6.1-3.5-6.1-3.5s3.1 2.9 6.1 2.2" fill="#75a843"/><path d="m32.4 58.6c-.8.6-3 1.6-.8 1.6 4.4-.1 4.9-5.8 4.9-5.8s-1.7 2.5-4.1 4.2" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f470.svg b/riot/emojione/svg/1f470.svg new file mode 100644 index 0000000..dc9e6c7 --- /dev/null +++ b/riot/emojione/svg/1f470.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M50,10.8c-7-5.5-29-5.5-36,0C3.6,19,2,62,2,62h60C62,62,60.4,19,50,10.8z" fill="#cedbd5"/><path d="m54.3 39c.3-.7.5-1.4.5-2.2 0-1.5-.6-2.8-1.5-3.8 1.4-1 2.3-2.6 2.3-4.5 0-2-1-3.7-2.5-4.7.6-.9.9-1.9.9-3.1 0-.2 0-.4 0-.5l-1.4-3.7.3-2.7c-2.3-6.6-8.5-11.8-20.9-11.8-12.4 0-18.6 5.2-20.9 11.7l.3 2.7-1.4 3.7c0 .2 0 .3 0 .5 0 1.1.3 2.2.9 3.1-1.5 1-2.5 2.7-2.5 4.7 0 1.9.9 3.6 2.3 4.5-.9 1-1.5 2.3-1.5 3.8 0 .8.2 1.6.5 2.2-2 .7-2.7 2.8-2.7 5.2 0 10.1 11 5.7 11 5.7h28c0 0 11 4.5 11-5.7 0-2.4-.6-4.4-2.7-5.1" fill="#ffb300"/><g fill="#f2f1f0"><path d="m54.3 62c0-14.7-1.4-15.5-22.3-15.5-20.8 0-22.3.8-22.3 15.5h44.6"/><path d="m32 6.6c-7.8 0-15.1 2.7-20.9 7.1-.7 2-1.1 4.2-1.1 6.4 5.6-5.8 13.3-9.4 22-9.4s16.4 3.6 22 9.4c0-2.2-.4-4.3-1.1-6.4-5.8-4.4-13.1-7.1-20.9-7.1"/></g><path d="m15.4 36.2c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#ffdd67"/><path d="m32 41.1c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#eba352"/><path d="m36.8 34.3c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><path d="m44.7 30.7c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.5-3.5-3.5 0-1.9 1.6-3.5 3.5-3.5 1.9 0 3.5 1.6 3.5 3.5" fill="#664e27"/><circle cx="41.2" cy="30.7" r="1.2" fill="#2b2925"/><path d="m35.8 32.9c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 34.3c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="30.7" r="3.5" fill="#664e27"/><path d="m28.2 32.9c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.2 10.3-3.8 13.8 5" fill="#3b3226"/><path d="m32 44.9l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#f085a9"/><path d="m35 43.5c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0-.1-2.9.3-4.7-.3" fill="#d46c8f"/><circle cx="22.8" cy="30.7" r="1.2" fill="#2b2925"/><path fill="#428bc1" d="m39.9 62h-16.6l-2.2-3h20.1z"/><path d="m41.2 59c0 .4-4.5.8-10 .8-5.5 0-10-.4-10-.8 0-.4 4.5-.8 10-.8 5.5 0 10 .4 10 .8" fill="#224863"/><path fill="#871212" d="m25.6 54.3l-2-2.2-1.5 2.4z"/><path fill="#991d1d" d="m23 54.9l2-2.9 2.4 1.4z"/><path fill="#ad2727" d="m22.1 53l-.3 1.7 4.6.3z"/><path d="m25.4 55c2.9 1.4 2.6 3.2 1.1 3.9-1.5.7-3.8.1-4.2-1.8-.4-1.9-1.7-3-1.7-3s2.6-.2 4.8.9" fill="#cc3636"/><path d="m23.7 55.6c-1 3.1 1.5 3.9 3 3.2 1.5-.7 2-2.7 1.2-4.4-.8-1.7-1.6-2.5-1.6-2.5s-1.9 1.5-2.6 3.7" fill="#e24b4b"/><path d="m26.3 58.1c2.3-1.1 1.7.2.2 1-3.6 1.8-5-1.5-5-1.5s2.8 1.5 4.8.5" fill="#75a843"/><path d="m26.3 58.1c-.5.5-1.9 1.7-.3 1.3 3.1-.8 2.5-5.1 2.5-5.1s-.7 2.2-2.2 3.8" fill="#83bf4f"/><path fill="#871212" d="m35.9 52.8l4.2 2.6-.1-3.5z"/><path fill="#991d1d" d="m39.8 57.3l-2.8-4.1h4.7z"/><path fill="#ad2727" d="m40.7 55.8l-2.6-4.6-2.2 1.8z"/><path fill="#cc3636" d="m38.6 55.5l-4.5-.2 2-4.7z"/><path d="m36.8 54.4c-3.5 1.2-2.6 4.1-.9 4.9 1.7.8 3.8 0 4.8-2 1-1.9 2.1-2.8 2.1-2.8s-3.5-.9-6-.1" fill="#e24b4b"/><path d="m36.4 58.5c-.8-.1-2.8-.6-1.4.6 2.9 2.3 6.3-1.2 6.3-1.2s-2.4.8-4.9.6" fill="#83bf4f"/><path fill="#871212" d="m27.6 52.8l6.2-.3-3-2.7z"/><path fill="#991d1d" d="m35 51.8l-6 1.6 3.7-3.3z"/><path fill="#ad2727" d="m33 53.1l-4.5-2.6-.6 3.4z"/><path d="m32.2 54.2v5.5c-2.2.5-4.8-1.1-4.7-3.7.1-2.6-1.3-4.5-1.3-4.5s3.4.6 6 2.7" fill="#cc3636"/><path d="m29.7 54.5c-2.3 3.7.7 5.7 2.9 5.2s3.5-2.9 2.9-5.4c-.6-2.5-.2-4.2-.2-4.2s-3.9 1.7-5.6 4.4" fill="#e24b4b"/><path d="m32.4 58.6c3.3-.8 2.2.8 0 1.3-5.3 1.2-6.1-3.5-6.1-3.5s3.1 2.9 6.1 2.2" fill="#75a843"/><path d="m32.4 58.6c-.8.6-3 1.6-.8 1.6 4.4-.1 4.9-5.8 4.9-5.8s-1.7 2.5-4.1 4.2" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f471-1f3fb.svg b/riot/emojione/svg/1f471-1f3fb.svg new file mode 100644 index 0000000..eee7e7a --- /dev/null +++ b/riot/emojione/svg/1f471-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.9 8.8c-9.8-13-37.6-3.3-39.7-4.2 0 0-.3 1.9.8 3.1-1.4 1-3.1-.7-3.1-.7s-1.8 4.2.1 6.8c-3 3.9.6 24.2.6 24.2h45.9c0 0 5.5-15.9-.8-26.7-1.3-2.5-2.7-1-3.8-2.5" fill="#dbb471"/><path d="m55 29.6c-.2 1.1-.4 2.1-.7 2.7-.5 1-1.6 1.6-1.6 1.6s.3-2.1.2-5.1c-1.4-20.1-7.3-10.5-20.9-10.5-13.6 0-19.5-9.6-20.8 10.6-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.6-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4-.1-4 5.2 0 3.3 1.2 5.9 5.1 6.2 1.7 13.2 4.7 15.3 14.6 20 2.5 1.2 4.2.9 7.2.9 3 0 4.7.3 7.3-.9 10-4.7 13-6.8 14.6-20 3.9-.3 5.1-3 5.1-6.2 0-5.3-2.3-5.7-4-5.3" fill="#ffe1bd"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f471-1f3fc.svg b/riot/emojione/svg/1f471-1f3fc.svg new file mode 100644 index 0000000..6bdf858 --- /dev/null +++ b/riot/emojione/svg/1f471-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.9 8.8c-9.8-13-37.6-3.3-39.7-4.2 0 0-.3 1.9.8 3.1-1.4 1-3.1-.7-3.1-.7s-1.8 4.2.1 6.8c-3 3.9.6 24.2.6 24.2h45.9c0 0 5.5-15.9-.8-26.7-1.3-2.5-2.7-1-3.8-2.5" fill="#dbb471"/><path d="m55 29.6c-.2 1.1-.4 2.1-.7 2.7-.5 1-1.6 1.6-1.6 1.6s.3-2.1.2-5.1c-1.4-20.1-7.3-10.5-20.9-10.5-13.6 0-19.5-9.6-20.8 10.6-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.6-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4-.1-4 5.2 0 3.3 1.2 5.9 5.1 6.2 1.7 13.2 4.7 15.3 14.6 20 2.5 1.2 4.2.9 7.2.9 3 0 4.7.3 7.3-.9 10-4.7 13-6.8 14.6-20 3.9-.3 5.1-3 5.1-6.2 0-5.3-2.3-5.7-4-5.3" fill="#fed0ac"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f471-1f3fd.svg b/riot/emojione/svg/1f471-1f3fd.svg new file mode 100644 index 0000000..b08ba66 --- /dev/null +++ b/riot/emojione/svg/1f471-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.9 8.8c-9.8-13-37.6-3.3-39.7-4.2 0 0-.3 1.9.8 3.1-1.4 1-3.1-.7-3.1-.7s-1.8 4.2.1 6.8c-3 3.9.6 24.2.6 24.2h45.9c0 0 5.5-15.9-.8-26.7-1.3-2.5-2.7-1-3.8-2.5" fill="#dbb471"/><path d="m55 29.6c-.2 1.1-.4 2.1-.7 2.7-.5 1-1.6 1.6-1.6 1.6s.3-2.1.2-5.1c-1.4-20.1-7.3-10.5-20.9-10.5-13.6 0-19.5-9.6-20.8 10.6-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.6-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4-.1-4 5.2 0 3.3 1.2 5.9 5.1 6.2 1.7 13.2 4.7 15.3 14.6 20 2.5 1.2 4.2.9 7.2.9 3 0 4.7.3 7.3-.9 10-4.7 13-6.8 14.6-20 3.9-.3 5.1-3 5.1-6.2 0-5.3-2.3-5.7-4-5.3" fill="#d6a57c"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f471-1f3fe.svg b/riot/emojione/svg/1f471-1f3fe.svg new file mode 100644 index 0000000..72a38d2 --- /dev/null +++ b/riot/emojione/svg/1f471-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.9 8.8c-9.8-13-37.6-3.3-39.7-4.2 0 0-.3 1.9.8 3.1-1.4 1-3.1-.7-3.1-.7s-1.8 4.2.1 6.8c-3 3.9.6 24.2.6 24.2h45.9c0 0 5.5-15.9-.8-26.7-1.3-2.5-2.7-1-3.8-2.5" fill="#dbb471"/><path d="m55 29.6c-.2 1.1-.4 2.1-.7 2.7-.5 1-1.6 1.6-1.6 1.6s.3-2.1.2-5.1c-1.4-20.1-7.3-10.5-20.9-10.5-13.6 0-19.5-9.6-20.8 10.6-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.6-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4-.1-4 5.2 0 3.3 1.2 5.9 5.1 6.2 1.7 13.2 4.7 15.3 14.6 20 2.5 1.2 4.2.9 7.2.9 3 0 4.7.3 7.3-.9 10-4.7 13-6.8 14.6-20 3.9-.3 5.1-3 5.1-6.2 0-5.3-2.3-5.7-4-5.3" fill="#b47d56"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#0a84a5"/><circle cx="20.5" cy="31.6" r="1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f471-1f3ff.svg b/riot/emojione/svg/1f471-1f3ff.svg new file mode 100644 index 0000000..dcfd094 --- /dev/null +++ b/riot/emojione/svg/1f471-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.9 8.8c-9.8-13-37.6-3.3-39.7-4.2 0 0-.3 1.9.8 3.1-1.4 1-3.1-.7-3.1-.7s-1.8 4.2.1 6.8c-3 3.9.6 24.2.6 24.2h45.9c0 0 5.5-15.9-.8-26.7-1.3-2.5-2.7-1-3.8-2.5" fill="#dbb471"/><path d="m55 29.6c-.2 1.1-.4 2.1-.7 2.7-.5 1-1.6 1.6-1.6 1.6s.3-2.1.2-5.1c-1.4-20.1-7.3-10.5-20.9-10.5-13.6 0-19.5-9.6-20.8 10.6-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.6-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4-.1-4 5.2 0 3.3 1.2 5.9 5.1 6.2 1.7 13.2 4.7 15.3 14.6 20 2.5 1.2 4.2.9 7.2.9 3 0 4.7.3 7.3-.9 10-4.7 13-6.8 14.6-20 3.9-.3 5.1-3 5.1-6.2 0-5.3-2.3-5.7-4-5.3" fill="#8a6859"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#574137"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#0a84a5"/><circle cx="20.5" cy="31.6" r="1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f471.svg b/riot/emojione/svg/1f471.svg new file mode 100644 index 0000000..2f56b37 --- /dev/null +++ b/riot/emojione/svg/1f471.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.9 8.8c-9.8-13-37.6-3.3-39.7-4.2 0 0-.3 1.9.8 3.1-1.4 1-3.1-.7-3.1-.7s-1.8 4.2.1 6.8c-3 3.9.6 24.2.6 24.2h45.9c0 0 5.5-15.8-.8-26.7-1.3-2.5-2.7-1-3.8-2.5" fill="#dbb471"/><path d="m55 29.6c-.2 1.1-.4 2.1-.7 2.7-.5 1-1.6 1.6-1.6 1.6s.3-2.1.2-5.1c-1.4-20.1-7.3-10.5-20.9-10.5-13.6 0-19.5-9.6-20.8 10.6-.1 2.9.2 5.1.2 5.1s-1.1-.6-1.6-1.6c-.3-.6-.5-1.6-.7-2.7-1.8-.5-4-.1-4 5.2 0 3.3 1.2 5.9 5.1 6.2 1.7 13.2 4.7 15.3 14.6 20 2.5 1.2 4.2.9 7.2.9 3 0 4.7.3 7.3-.9 10-4.7 13-6.8 14.6-20 3.9-.3 5.1-3 5.1-6.2 0-5.3-2.3-5.7-4-5.3" fill="#ffdd67"/><path d="m41 48.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#937237"/><path d="m20 28.6c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m22 31.6c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 32.1c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 28.6c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="31.6" r="4.5" fill="#0a84a5"/><path d="m42 31.6c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 32.1c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m32 45c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0 0 3-4.2 3" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f472-1f3fb.svg b/riot/emojione/svg/1f472-1f3fb.svg new file mode 100644 index 0000000..f02094d --- /dev/null +++ b/riot/emojione/svg/1f472-1f3fb.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#594640" d="m5 28l1 12h52l1-12z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#ffe1bd"/><path d="M32,4C15.1,4,7.8,17.5,5.3,20.9C2.6,24.5,5,31,5,31s0.3,3,27,3c26.7,0,27-3,27-3s2.4-6.5-0.3-10.1 + C56.2,17.5,48.8,4,32,4z" fill="#f16a65"/><g fill="#468bc4"><path d="m18.2 23.5c1.4-3.4 4.8-14.2 11.5-19.5-15.3 1.1-22 13.6-24.4 16.8-2.7 3.6-.3 10.2-.3 10.2s.2 1.8 12.5 2.6c-.3-3-.4-7.2.7-10.1"/><path d="m45.8 23.5c-1.4-3.4-4.8-14.2-11.5-19.5 15.3 1.1 22 13.6 24.4 16.8 2.7 3.6.3 10.2.3 10.2s-.2 1.8-12.5 2.6c.3-3 .4-7.2-.7-10.1"/></g><ellipse cx="32" cy="5" rx="4" ry="3" fill="#c94747"/><path d="m32 24.4c-16.2 0-23.9-.9-27.6-1.8-1.2 3.6.6 8.4.6 8.4s.3 3 27 3c26.7 0 27-3 27-3s1.8-4.8.6-8.5c-3.7 1-11.4 1.9-27.6 1.9" fill="#454749"/><circle cx="32" cy="29" r="4" fill="#fbbf67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f472-1f3fc.svg b/riot/emojione/svg/1f472-1f3fc.svg new file mode 100644 index 0000000..9933af0 --- /dev/null +++ b/riot/emojione/svg/1f472-1f3fc.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#dbb471" d="m5 28l1 12h52l1-12z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#fed0ac"/><path d="M32,4C15.1,4,7.8,17.5,5.3,20.9C2.6,24.5,5,31,5,31s0.3,3,27,3s27-3,27-3s2.4-6.5-0.3-10.1 + C56.2,17.5,48.8,4,32,4z" fill="#f16a65"/><g fill="#468bc4"><path d="m18.2 23.5c1.4-3.4 4.8-14.2 11.5-19.5-15.3 1.1-22 13.6-24.4 16.8-2.7 3.6-.3 10.2-.3 10.2s.2 1.8 12.5 2.6c-.3-3-.4-7.2.7-10.1"/><path d="m45.8 23.5c-1.4-3.4-4.8-14.2-11.5-19.5 15.3 1.1 22 13.6 24.4 16.8 2.7 3.6.3 10.2.3 10.2s-.2 1.8-12.5 2.6c.3-3 .4-7.2-.7-10.1"/></g><ellipse cx="32" cy="5" rx="4" ry="3" fill="#c94747"/><path d="m32 24.4c-16.2 0-23.9-.9-27.6-1.8-1.2 3.6.6 8.4.6 8.4s.3 3 27 3 27-3 27-3 1.8-4.8.6-8.5c-3.7 1-11.4 1.9-27.6 1.9" fill="#454749"/><circle cx="32" cy="29" r="4" fill="#fbbf67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f472-1f3fd.svg b/riot/emojione/svg/1f472-1f3fd.svg new file mode 100644 index 0000000..f2884ff --- /dev/null +++ b/riot/emojione/svg/1f472-1f3fd.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#594640" d="m5 28l1 12h52l1-12z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#d6a57c"/><path d="M32,4C15.1,4,7.8,17.5,5.3,20.9C2.6,24.5,5,31,5,31s0.3,3,27,3s27-3,27-3s2.4-6.5-0.3-10.1 + C56.2,17.5,48.8,4,32,4z" fill="#f16a65"/><g fill="#468bc4"><path d="m18.2 23.5c1.4-3.4 4.8-14.2 11.5-19.5-15.3 1.1-22 13.6-24.4 16.8-2.7 3.6-.3 10.2-.3 10.2s.2 1.8 12.5 2.6c-.3-3-.4-7.2.7-10.1"/><path d="m45.8 23.5c-1.4-3.4-4.8-14.2-11.5-19.5 15.3 1.1 22 13.6 24.4 16.8 2.7 3.6.3 10.2.3 10.2s-.2 1.8-12.5 2.6c.3-3 .4-7.2-.7-10.1"/></g><ellipse cx="32" cy="5" rx="4" ry="3" fill="#c94747"/><path d="m32 24.4c-16.2 0-23.9-.9-27.6-1.8-1.2 3.6.6 8.4.6 8.4s.3 3 27 3 27-3 27-3 1.8-4.8.6-8.5c-3.7 1-11.4 1.9-27.6 1.9" fill="#454749"/><circle cx="32" cy="29" r="4" fill="#fbbf67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f472-1f3fe.svg b/riot/emojione/svg/1f472-1f3fe.svg new file mode 100644 index 0000000..6bb5fad --- /dev/null +++ b/riot/emojione/svg/1f472-1f3fe.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#231f20" d="m5 28l1 12h52l1-12z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#b47d56"/><path d="M32,4C15.1,4,7.8,17.5,5.3,20.9C2.6,24.5,5,31,5,31s0.3,3,27,3s27-3,27-3s2.4-6.5-0.3-10.1 + C56.2,17.5,48.8,4,32,4z" fill="#f16a65"/><g fill="#468bc4"><path d="m18.2 23.5c1.4-3.4 4.8-14.2 11.5-19.5-15.3 1.1-22 13.6-24.4 16.8-2.7 3.6-.3 10.2-.3 10.2s.2 1.8 12.5 2.6c-.3-3-.4-7.2.7-10.1"/><path d="m45.8 23.5c-1.4-3.4-4.8-14.2-11.5-19.5 15.3 1.1 22 13.6 24.4 16.8 2.7 3.6.3 10.2.3 10.2s-.2 1.8-12.5 2.6c.3-3 .4-7.2-.7-10.1"/></g><ellipse cx="32" cy="5" rx="4" ry="3" fill="#c94747"/><path d="m32 24.4c-16.2 0-23.9-.9-27.6-1.8-1.2 3.6.6 8.4.6 8.4s.3 3 27 3 27-3 27-3 1.8-4.8.6-8.5c-3.7 1-11.4 1.9-27.6 1.9" fill="#454749"/><circle cx="32" cy="29" r="4" fill="#fbbf67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f472-1f3ff.svg b/riot/emojione/svg/1f472-1f3ff.svg new file mode 100644 index 0000000..c28a77d --- /dev/null +++ b/riot/emojione/svg/1f472-1f3ff.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#231f20" d="m5 28l1 12h52l1-12z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#8a6859"/><path d="M32,4C15.1,4,7.8,17.5,5.3,20.9C2.6,24.5,5,31,5,31s0.3,3,27,3c26.7,0,27-3,27-3s2.4-6.5-0.3-10.1 + C56.2,17.5,48.8,4,32,4z" fill="#f16a65"/><g fill="#468bc4"><path d="m18.2 23.5c1.4-3.4 4.8-14.2 11.5-19.5-15.3 1.1-22 13.6-24.4 16.8-2.7 3.6-.3 10.2-.3 10.2s.2 1.8 12.5 2.6c-.3-3-.4-7.2.7-10.1"/><path d="m45.8 23.5c-1.4-3.4-4.8-14.2-11.5-19.5 15.3 1.1 22 13.6 24.4 16.8 2.7 3.6.3 10.2.3 10.2s-.2 1.8-12.5 2.6c.3-3 .4-7.2-.7-10.1"/></g><ellipse cx="32" cy="5" rx="4" ry="3" fill="#c94747"/><path d="m32 24.4c-16.2 0-23.9-.9-27.6-1.8-1.2 3.6.6 8.4.6 8.4s.3 3 27 3c26.7 0 27-3 27-3s1.8-4.8.6-8.5c-3.7 1-11.4 1.9-27.6 1.9" fill="#454749"/><circle cx="32" cy="29" r="4" fill="#fbbf67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f472.svg b/riot/emojione/svg/1f472.svg new file mode 100644 index 0000000..8274a23 --- /dev/null +++ b/riot/emojione/svg/1f472.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffb300" d="m5 28l1 12h52l1-12z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#ffdd67"/><path d="M32,4C15.1,4,7.8,17.5,5.3,20.9C2.6,24.5,5,31,5,31s0.3,3,27,3s27-3,27-3s2.4-6.5-0.3-10.1 + C56.2,17.5,48.8,4,32,4z" fill="#f16a65"/><g fill="#468bc4"><path d="m18.2 23.5c1.4-3.4 4.8-14.2 11.5-19.5-15.3 1.1-22 13.6-24.4 16.8-2.7 3.6-.3 10.2-.3 10.2s.2 1.8 12.5 2.6c-.3-3-.4-7.2.7-10.1"/><path d="m45.8 23.5c-1.4-3.4-4.8-14.2-11.5-19.5 15.3 1.1 22 13.6 24.4 16.8 2.7 3.6.3 10.2.3 10.2s-.2 1.8-12.5 2.6c.3-3 .4-7.2-.7-10.1"/></g><ellipse cx="32" cy="5" rx="4" ry="3" fill="#c94747"/><path d="m32 24.4c-16.2 0-23.9-.9-27.6-1.8-1.2 3.6.6 8.4.6 8.4s.3 3 27 3 27-3 27-3 1.8-4.8.6-8.5c-3.7 1-11.4 1.9-27.6 1.9" fill="#454749"/><circle cx="32" cy="29" r="4" fill="#fbbf67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#937237"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f473-1f3fb.svg b/riot/emojione/svg/1f473-1f3fb.svg new file mode 100644 index 0000000..43c2e9d --- /dev/null +++ b/riot/emojione/svg/1f473-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.7 23h51l-.1 23.2c0 10.2-20.5 15.8-25.6 15.8-4.1 0-25.3-4.1-25.3-15.8v-23.2" fill="#ffe1bd"/><path d="m57.5 47.3c3.3-16.4 1-37.2-25.4-45.3 0 0-17.7 11.5 10.9 27 11 6 14.5 18.3 14.5 18.3" fill="#467591"/><path d="m21.7 9.4c0-4.6 4.8-7.4 10.4-7.4 28.1 0 35.3 32.5 26.1 40.6-1.8-16.8-12.9-31.9-36.5-33.2" fill="#3a81ad"/><path d="M6.7,47.3C0,25,23.1,2.6,51.9,9.3c9,2.1-1.1,10.1-29,19.6C11.1,32.9,6.7,47.3,6.7,47.3z" fill="#428bc1"/><path d="M51.9,9.3C52.2,4,37.7,2,32.1,2C4,2-3.7,33.5,6,43.3C9.8,15.2,28.3,10.6,51.9,9.3z" fill="#57a1ce"/><path d="m20.2 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m22.2 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13.2 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44.2 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m42.2 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51.2 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41.2 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f473-1f3fc.svg b/riot/emojione/svg/1f473-1f3fc.svg new file mode 100644 index 0000000..86edb08 --- /dev/null +++ b/riot/emojione/svg/1f473-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.7 23h51l-.1 23.2c0 10.2-20.5 15.8-25.6 15.8-4.1 0-25.3-4.1-25.3-15.8v-23.2" fill="#fed0ac"/><path d="m57.5 47.3c3.3-16.4 1-37.2-25.4-45.3 0 0-17.7 11.5 10.9 27 11 6 14.5 18.3 14.5 18.3" fill="#467591"/><path d="m21.7 9.4c0-4.6 4.8-7.4 10.4-7.4 28.1 0 35.3 32.5 26.1 40.6-1.8-16.8-12.9-31.9-36.5-33.2" fill="#3a81ad"/><path d="M6.7,47.3C0,25,23.1,2.6,51.9,9.3c9,2.1-1.1,10.1-29,19.6C11.1,32.9,6.7,47.3,6.7,47.3z" fill="#428bc1"/><path d="M51.9,9.3C52.2,4,37.7,2,32.1,2C4,2-3.7,33.5,6,43.3C9.8,15.2,28.3,10.6,51.9,9.3z" fill="#57a1ce"/><path d="m20.2 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m22.2 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13.2 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44.2 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m42.2 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51.2 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41.2 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f473-1f3fd.svg b/riot/emojione/svg/1f473-1f3fd.svg new file mode 100644 index 0000000..4567f58 --- /dev/null +++ b/riot/emojione/svg/1f473-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.7 23h51l-.1 23.2c0 10.2-20.5 15.8-25.6 15.8-4.1 0-25.3-4.1-25.3-15.8v-23.2" fill="#d6a57c"/><path d="m57.5 47.3c3.3-16.4 1-37.2-25.4-45.3 0 0-17.7 11.5 10.9 27 11 6 14.5 18.3 14.5 18.3" fill="#467591"/><path d="m21.7 9.4c0-4.6 4.8-7.4 10.4-7.4 28.1 0 35.3 32.5 26.1 40.6-1.8-16.8-12.9-31.9-36.5-33.2" fill="#3a81ad"/><path d="M6.7,47.3C0,25,23.1,2.6,51.9,9.3c9,2.1-1.1,10.1-29,19.6C11.1,32.9,6.7,47.3,6.7,47.3z" fill="#428bc1"/><path d="M51.9,9.3C52.2,4,37.7,2,32.1,2C4,2-3.7,33.5,6,43.3C9.8,15.2,28.3,10.6,51.9,9.3z" fill="#57a1ce"/><path d="m20.2 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m22.2 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13.2 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44.2 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m42.2 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51.2 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41.2 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f473-1f3fe.svg b/riot/emojione/svg/1f473-1f3fe.svg new file mode 100644 index 0000000..ddb3d5b --- /dev/null +++ b/riot/emojione/svg/1f473-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.7 23h51l-.1 23.2c0 10.2-20.5 15.8-25.6 15.8-4.1 0-25.3-4.1-25.3-15.8v-23.2" fill="#b47d56"/><path d="m57.5 47.3c3.3-16.4 1-37.2-25.4-45.3 0 0-17.7 11.5 10.9 27 11 6 14.5 18.3 14.5 18.3" fill="#467591"/><path d="m21.7 9.4c0-4.6 4.8-7.4 10.4-7.4 28.1 0 35.3 32.5 26.1 40.6-1.8-16.8-12.9-31.9-36.5-33.2" fill="#3a81ad"/><path d="M6.7,47.3C0,25,23.1,2.6,51.9,9.3c9,2.1-1.1,10.1-29,19.6C11.1,32.9,6.7,47.3,6.7,47.3z" fill="#428bc1"/><path d="M51.9,9.3C52.2,4,37.7,2,32.1,2C4,2-3.7,33.5,6,43.3C9.8,15.2,28.3,10.6,51.9,9.3z" fill="#57a1ce"/><path d="m20.2 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m22.2 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13.2 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44.2 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m42.2 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51.2 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41.2 50.9c0 3.4-4.5 5.1-9 5.1-4.5 0-9-1.7-9-5.1 0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f473-1f3ff.svg b/riot/emojione/svg/1f473-1f3ff.svg new file mode 100644 index 0000000..19b2e72 --- /dev/null +++ b/riot/emojione/svg/1f473-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.7 23h51l-.1 23.2c0 10.2-20.5 15.8-25.6 15.8-4.1 0-25.3-4.1-25.3-15.8v-23.2" fill="#8a6859"/><path d="m57.5 47.3c3.3-16.4 1-37.2-25.4-45.3 0 0-17.7 11.5 10.9 27 11 6 14.5 18.3 14.5 18.3" fill="#467591"/><path d="m21.7 9.4c0-4.6 4.8-7.4 10.4-7.4 28.1 0 35.3 32.5 26.1 40.6-1.8-16.8-12.9-31.9-36.5-33.2" fill="#3a81ad"/><path d="M6.7,47.3C0,25,23.1,2.6,51.9,9.3c9,2.1-1.1,10.1-29,19.6C11.1,32.9,6.7,47.3,6.7,47.3z" fill="#428bc1"/><path d="M51.9,9.3C52.2,4,37.7,2,32.1,2C4,2-3.7,33.5,6,43.3C9.8,15.2,28.3,10.6,51.9,9.3z" fill="#57a1ce"/><path d="m20.2 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m22.2 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13.2 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44.2 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m42.2 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51.2 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41.2 50.9c0 3.4-4.5 5.1-9 5.1-4.5 0-9-1.7-9-5.1 0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f473.svg b/riot/emojione/svg/1f473.svg new file mode 100644 index 0000000..5112808 --- /dev/null +++ b/riot/emojione/svg/1f473.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.7 23h51l-.1 23.2c0 10.2-20.5 15.8-25.6 15.8-4.1 0-25.3-4.1-25.3-15.8v-23.2" fill="#ffdd67"/><path d="m57.5 47.3c3.3-16.4 1-37.2-25.4-45.3 0 0-17.7 11.5 10.9 27 11 6 14.5 18.3 14.5 18.3" fill="#467591"/><path d="m21.7 9.4c0-4.6 4.8-7.4 10.4-7.4 28.1 0 35.3 32.5 26.1 40.6-1.8-16.8-12.9-31.9-36.5-33.2" fill="#3a81ad"/><path d="M6.7,47.3C0,25,23.1,2.6,51.9,9.3c9,2.1-1.1,10.1-29,19.6C11.1,32.9,6.7,47.3,6.7,47.3z" fill="#428bc1"/><path d="M51.9,9.3C52.2,4,37.7,2,32.1,2C4,2-3.7,33.5,6,43.3C9.8,15.2,28.3,10.6,51.9,9.3z" fill="#57a1ce"/><path d="m20.2 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m22.2 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13.2 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44.2 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.7" cy="38.8" r="4.5" fill="#664e27"/><path d="m42.2 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.9 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51.2 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41.2 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#937237"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f474-1f3fb.svg b/riot/emojione/svg/1f474-1f3fb.svg new file mode 100644 index 0000000..77aacc5 --- /dev/null +++ b/riot/emojione/svg/1f474-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.1 8.9c0 0-.1 0 0 0-.1 0-.1 0-.2 0-25 0-29.9 8.8-29.9 22.6l.9 9.4h58.3l.9-9.4c-.1-13.8-5-22.6-30-22.6" fill="#748a93"/><path d="m58.5 36.8c-9.1-3.6-2-13.5-1.7-15.5 0 0-2.1-19.3-24.8-19.3-22.7 0-24.8 19.3-24.8 19.3.3 2 7.5 11.9-1.7 15.5 0 0-3.4-.4-3.4 3.7 0 4.9 3.5 4.1 3.5 4.1 0 7.5 7.4 17.4 26.4 17.4 19 0 26.4-9.9 26.4-17.4 0 0 3.5.8 3.5-4.1 0-4.1-3.4-3.7-3.4-3.7" fill="#ffe1bd"/><g fill="#748a93"><path d="m40.7 52.9c.2 0 .3-.9.3-1.3 0-2.6-4-4.8-9-4.8s-9 2.3-9 4.9c0 .3.1 1.2.2 1.2 0 0 17.5 0 17.5 0"/><path d="m17.6 9.8c2.3-.7 4.7-1.5 7.1-2 2.4-.5 4.9-.9 7.3-1 2.5-.1 5 .1 7.4.6 2.4.5 4.8 1.3 7 2.4-2.4-.4-4.8-.8-7.2-.9-2.4-.2-4.8-.2-7.1-.1-2.4.1-4.8.3-7.2.5-2.4.2-4.8.5-7.3.5"/><path d="m14.5 14c2.9-.7 5.7-1.5 8.6-2 2.9-.5 5.9-.9 8.9-1 3-.1 6 .1 8.9.6 3 .5 5.9 1.2 8.6 2.4-2.9-.4-5.8-.7-8.8-.9-2.9-.2-5.8-.2-8.7-.1-2.9.1-5.8.3-8.7.5-2.9.2-5.8.6-8.8.5"/></g><g fill="#454749"><path d="m17.8 39.3l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="37.9" rx="9" ry="9"/></g><ellipse cx="19.7" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="37.9" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f474-1f3fc.svg b/riot/emojione/svg/1f474-1f3fc.svg new file mode 100644 index 0000000..03c13c5 --- /dev/null +++ b/riot/emojione/svg/1f474-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.1 8.9c0 0-.1 0 0 0-.1 0-.1 0-.2 0-25 0-29.9 8.8-29.9 22.6l.9 9.4h58.3l.9-9.4c-.1-13.8-5-22.6-30-22.6" fill="#748a93"/><path d="m58.5 36.8c-9.1-3.6-2-13.5-1.7-15.5 0 0-2.1-19.3-24.8-19.3-22.7 0-24.8 19.3-24.8 19.3.3 2 7.5 11.9-1.7 15.5 0 0-3.4-.4-3.4 3.7 0 4.9 3.5 4.1 3.5 4.1 0 7.5 7.4 17.4 26.4 17.4 19 0 26.4-9.9 26.4-17.4 0 0 3.5.8 3.5-4.1 0-4.1-3.4-3.7-3.4-3.7" fill="#fed0ac"/><g fill="#748a93"><path d="m40.7 52.9c.2 0 .3-.9.3-1.3 0-2.6-4-4.8-9-4.8s-9 2.3-9 4.9c0 .3.1 1.2.2 1.2 0 0 17.5 0 17.5 0"/><path d="m17.6 9.8c2.3-.7 4.7-1.5 7.1-2 2.4-.5 4.9-.9 7.3-1 2.5-.1 5 .1 7.4.6 2.4.5 4.8 1.3 7 2.4-2.4-.4-4.8-.8-7.2-.9-2.4-.2-4.8-.2-7.1-.1-2.4.1-4.8.3-7.2.5-2.4.2-4.8.5-7.3.5"/><path d="m14.5 14c2.9-.7 5.7-1.5 8.6-2 2.9-.5 5.9-.9 8.9-1 3-.1 6 .1 8.9.6 3 .5 5.9 1.2 8.6 2.4-2.9-.4-5.8-.7-8.8-.9-2.9-.2-5.8-.2-8.7-.1-2.9.1-5.8.3-8.7.5-2.9.2-5.8.6-8.8.5"/></g><g fill="#454749"><path d="m17.8 39.3l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="37.9" rx="9" ry="9"/></g><ellipse cx="19.7" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="37.9" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f474-1f3fd.svg b/riot/emojione/svg/1f474-1f3fd.svg new file mode 100644 index 0000000..2a73bef --- /dev/null +++ b/riot/emojione/svg/1f474-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.1 8.9c0 0-.1 0 0 0-.1 0-.1 0-.2 0-25 0-29.9 8.8-29.9 22.6l.9 9.4h58.3l.9-9.4c-.1-13.8-5-22.6-30-22.6" fill="#748a93"/><path d="m58.5 36.8c-9.1-3.6-2-13.5-1.7-15.5 0 0-2.1-19.3-24.8-19.3-22.7 0-24.8 19.3-24.8 19.3.3 2 7.5 11.9-1.7 15.5 0 0-3.4-.4-3.4 3.7 0 4.9 3.5 4.1 3.5 4.1 0 7.5 7.4 17.4 26.4 17.4 19 0 26.4-9.9 26.4-17.4 0 0 3.5.8 3.5-4.1 0-4.1-3.4-3.7-3.4-3.7" fill="#d6a57c"/><g fill="#748a93"><path d="m40.7 52.9c.2 0 .3-.9.3-1.3 0-2.6-4-4.8-9-4.8s-9 2.3-9 4.9c0 .3.1 1.2.2 1.2 0 0 17.5 0 17.5 0"/><path d="m17.6 9.8c2.3-.7 4.7-1.5 7.1-2 2.4-.5 4.9-.9 7.3-1 2.5-.1 5 .1 7.4.6 2.4.5 4.8 1.3 7 2.4-2.4-.4-4.8-.8-7.2-.9-2.4-.2-4.8-.2-7.1-.1-2.4.1-4.8.3-7.2.5-2.4.2-4.8.5-7.3.5"/><path d="m14.5 14c2.9-.7 5.7-1.5 8.6-2 2.9-.5 5.9-.9 8.9-1 3-.1 6 .1 8.9.6 3 .5 5.9 1.2 8.6 2.4-2.9-.4-5.8-.7-8.8-.9-2.9-.2-5.8-.2-8.7-.1-2.9.1-5.8.3-8.7.5-2.9.2-5.8.6-8.8.5"/></g><g fill="#454749"><path d="m17.8 39.3l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="37.9" rx="9" ry="9"/></g><ellipse cx="19.7" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="37.9" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f474-1f3fe.svg b/riot/emojione/svg/1f474-1f3fe.svg new file mode 100644 index 0000000..0c9133e --- /dev/null +++ b/riot/emojione/svg/1f474-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.1 8.9c0 0-.1 0 0 0-.1 0-.1 0-.2 0-25 0-29.9 8.8-29.9 22.6l.9 9.4h58.3l.9-9.4c-.1-13.8-5-22.6-30-22.6" fill="#cbd8de"/><path d="m58.5 36.8c-9.1-3.6-2-13.5-1.7-15.5 0 0-2.1-19.3-24.8-19.3-22.7 0-24.8 19.3-24.8 19.3.3 2 7.5 11.9-1.7 15.5 0 0-3.4-.4-3.4 3.7 0 4.9 3.5 4.1 3.5 4.1 0 7.5 7.4 17.4 26.4 17.4 19 0 26.4-9.9 26.4-17.4 0 0 3.5.8 3.5-4.1 0-4.1-3.4-3.7-3.4-3.7" fill="#b47d56"/><g fill="#cbd8de"><path d="m40.7 52.9c.2 0 .3-.9.3-1.3 0-2.6-4-4.8-9-4.8s-9 2.3-9 4.9c0 .3.1 1.2.2 1.2 0 0 17.5 0 17.5 0"/><path d="m17.6 9.8c2.3-.7 4.7-1.5 7.1-2 2.4-.5 4.9-.9 7.4-1 2.5-.1 5 .1 7.4.6 2.4.5 4.8 1.3 7 2.4-2.5-.4-4.9-.8-7.3-.9-2.4-.2-4.8-.2-7.1-.1-2.4.1-4.8.3-7.2.5-2.4.2-4.8.5-7.3.5"/><path d="m14.5 14c2.9-.7 5.7-1.5 8.6-2 2.9-.5 5.9-.9 8.9-1 3-.1 6 .1 8.9.6 3 .5 5.9 1.2 8.6 2.4-2.9-.4-5.8-.7-8.8-.9-2.9-.2-5.8-.2-8.7-.1-2.9.1-5.8.3-8.7.5-2.9.2-5.8.6-8.8.5"/></g><g fill="#454749"><path d="m17.8 39.3l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="37.9" rx="9" ry="9"/></g><ellipse cx="19.7" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="37.9" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f474-1f3ff.svg b/riot/emojione/svg/1f474-1f3ff.svg new file mode 100644 index 0000000..14a6554 --- /dev/null +++ b/riot/emojione/svg/1f474-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.1 8.9c0 0-.1 0 0 0-.1 0-.1 0-.2 0-25 0-29.9 8.8-29.9 22.6l.9 9.4h58.3l.9-9.4c-.1-13.8-5-22.6-30-22.6" fill="#cbd8de"/><path d="m58.5 36.8c-9.1-3.6-2-13.5-1.7-15.5 0 0-2.1-19.3-24.8-19.3-22.7 0-24.8 19.3-24.8 19.3.3 2 7.5 11.9-1.7 15.5 0 0-3.4-.4-3.4 3.7 0 4.9 3.5 4.1 3.5 4.1 0 7.5 7.4 17.4 26.4 17.4 19 0 26.4-9.9 26.4-17.4 0 0 3.5.8 3.5-4.1 0-4.1-3.4-3.7-3.4-3.7" fill="#8a6859"/><g fill="#cbd8de"><path d="m40.7 52.9c.2 0 .3-.9.3-1.3 0-2.6-4-4.8-9-4.8s-9 2.3-9 4.9c0 .3.1 1.2.2 1.2 0 0 17.5 0 17.5 0"/><path d="m17.6 9.8c2.3-.7 4.7-1.5 7.1-2 2.4-.5 4.9-.9 7.4-1 2.5-.1 5 .1 7.4.6 2.4.5 4.8 1.3 7 2.4-2.5-.4-4.9-.8-7.3-.9-2.4-.2-4.8-.2-7.1-.1-2.4.1-4.8.3-7.2.5-2.4.2-4.8.5-7.3.5"/><path d="m14.5 14c2.9-.7 5.7-1.5 8.6-2 2.9-.5 5.9-.9 8.9-1 3-.1 6 .1 8.9.6 3 .5 5.9 1.2 8.6 2.4-2.9-.4-5.8-.7-8.8-.9-2.9-.2-5.8-.2-8.7-.1-2.9.1-5.8.3-8.7.5-2.9.2-5.8.6-8.8.5"/></g><g fill="#454749"><path d="m17.8 39.3l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="37.9" rx="9" ry="9"/></g><ellipse cx="19.7" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="37.9" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f474.svg b/riot/emojione/svg/1f474.svg new file mode 100644 index 0000000..79bd197 --- /dev/null +++ b/riot/emojione/svg/1f474.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.1 8.9c0 0-.1 0 0 0-.1 0-.1 0-.2 0-25 0-29.9 8.8-29.9 22.6l.9 9.4h58.3l.9-9.4c-.1-13.8-5-22.6-30-22.6" fill="#748a93"/><path d="m58.5 36.8c-9.1-3.6-2-13.5-1.7-15.5 0 0-2.1-19.3-24.8-19.3-22.7 0-24.8 19.3-24.8 19.3.3 2 7.5 11.9-1.7 15.5 0 0-3.4-.4-3.4 3.7 0 4.9 3.5 4.1 3.5 4.1 0 7.5 7.4 17.4 26.4 17.4 19 0 26.4-9.9 26.4-17.4 0 0 3.5.8 3.5-4.1 0-4.1-3.4-3.7-3.4-3.7" fill="#ffdd67"/><g fill="#748a93"><path d="m40.7 52.9c.2 0 .3-.9.3-1.3 0-2.6-4-4.8-9-4.8s-9 2.3-9 4.9c0 .3.1 1.2.2 1.2 0 0 17.5 0 17.5 0"/><path d="m17.6 9.8c2.3-.7 4.7-1.5 7.1-2 2.4-.5 4.9-.9 7.3-1 2.5-.1 5 .1 7.4.6 2.4.5 4.8 1.3 7 2.4-2.4-.4-4.8-.8-7.2-.9-2.4-.2-4.8-.2-7.1-.1-2.4.1-4.8.3-7.2.5-2.4.2-4.8.5-7.3.5"/><path d="m14.5 14c2.9-.7 5.7-1.5 8.6-2 2.9-.5 5.9-.9 8.9-1 3-.1 6 .1 8.9.6 3 .5 5.9 1.2 8.6 2.4-2.9-.4-5.8-.7-8.8-.9-2.9-.2-5.8-.2-8.7-.1-2.9.1-5.8.3-8.7.5-2.9.2-5.8.6-8.8.5"/></g><g fill="#454749"><path d="m17.8 39.3l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="37.9" rx="9" ry="9"/></g><ellipse cx="19.7" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="37.9" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="37.9" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f475-1f3fb.svg b/riot/emojione/svg/1f475-1f3fb.svg new file mode 100644 index 0000000..1e1c556 --- /dev/null +++ b/riot/emojione/svg/1f475-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="11.6" rx="15" ry="9.6" fill="#627a82"/><ellipse cx="32" cy="15.6" rx="15" ry="9.6" fill="#c28fef"/><path d="m57.3 28.9c-15.6-15.6-35.1-15.7-50.7 0l.1 17.3c0 7.5 7.4 15.8 25.7 15.8 17.3 0 24.9-6.8 24.9-15.8v-17.3" fill="#ffe1bd"/><path d="m39.2 51.7c.1.2.2.4.2.6 0 1.7-3.4 3.8-7.5 3.8s-7.5-2.1-7.5-3.8c0-.2.1-.5.2-.6 0 0 3.2 1.5 7.3 1.5 4.1 0 7.3-1.5 7.3-1.5" fill="#454749"/><path d="m32 9.1c-29.5 0-35.8 23.7-25.2 32 0 0 5.2-8.8 16.1-13 28.4-10.9 20.5-19 9.1-19" fill="#748a93"/><path d="m32 9.1c-11.4 0-19.3 8.1 9.1 19 10.9 4.2 16.1 13 16.1 13 10.6-8.2 4.2-32-25.2-32" fill="#8b9fa5"/><g fill="#454749"><path d="m42.8 54.4c-.6 0-1.1-.2-1.6-.4-.5-.2-1-.5-1.4-.9-.8-.7-1.6-1.8-1.6-2.9.8.8 1.5 1.5 2.2 2.2.8.6 1.6 1.2 2.4 2"/><path d="m21 54.4c.8-.8 1.7-1.3 2.4-2 .8-.7 1.5-1.3 2.2-2.2 0 1.2-.7 2.2-1.6 2.9-.4.4-.9.7-1.4.9-.4.2-1 .4-1.6.4"/><path d="m17.7 41l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.3.3-2.5.5-3.4.6"/><ellipse cx="19.7" cy="39.6" rx="9" ry="9"/></g><ellipse cx="19.7" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="39.6" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f475-1f3fc.svg b/riot/emojione/svg/1f475-1f3fc.svg new file mode 100644 index 0000000..fd7cea0 --- /dev/null +++ b/riot/emojione/svg/1f475-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="11.6" rx="15" ry="9.6" fill="#627a82"/><ellipse cx="32" cy="15.6" rx="15" ry="9.6" fill="#c28fef"/><path d="m57.3 28.9c-15.6-15.6-35.1-15.7-50.7 0l.1 17.3c0 7.5 7.4 15.8 25.7 15.8 17.3 0 24.9-6.8 24.9-15.8v-17.3" fill="#fed0ac"/><path d="m39.2 51.7c.1.2.2.4.2.6 0 1.7-3.4 3.8-7.5 3.8s-7.5-2.1-7.5-3.8c0-.2.1-.5.2-.6 0 0 3.2 1.5 7.3 1.5 4.1 0 7.3-1.5 7.3-1.5" fill="#454749"/><path d="m32 9.1c-29.5 0-35.8 23.7-25.2 32 0 0 5.2-8.8 16.1-13 28.4-10.9 20.5-19 9.1-19" fill="#748a93"/><path d="m32 9.1c-11.4 0-19.3 8.1 9.1 19 10.9 4.2 16.1 13 16.1 13 10.6-8.2 4.2-32-25.2-32" fill="#8b9fa5"/><g fill="#454749"><path d="m42.8 54.4c-.6 0-1.1-.2-1.6-.4-.5-.2-1-.5-1.4-.9-.8-.7-1.6-1.8-1.6-2.9.8.8 1.5 1.5 2.2 2.2.8.6 1.6 1.2 2.4 2"/><path d="m21 54.4c.8-.8 1.7-1.3 2.4-2 .8-.7 1.5-1.3 2.2-2.2 0 1.2-.7 2.2-1.6 2.9-.4.4-.9.7-1.4.9-.4.2-1 .4-1.6.4"/><path d="m17.7 41l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.3.3-2.5.5-3.4.6"/><ellipse cx="19.7" cy="39.6" rx="9" ry="9"/></g><ellipse cx="19.7" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="39.6" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f475-1f3fd.svg b/riot/emojione/svg/1f475-1f3fd.svg new file mode 100644 index 0000000..121b50b --- /dev/null +++ b/riot/emojione/svg/1f475-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="11.6" rx="15" ry="9.6" fill="#627a82"/><ellipse cx="32" cy="15.6" rx="15" ry="9.6" fill="#c28fef"/><path d="m57.3 28.9c-15.6-15.6-35.1-15.7-50.7 0l.1 17.3c0 7.5 7.4 15.8 25.7 15.8 17.3 0 24.9-6.8 24.9-15.8v-17.3" fill="#d6a57c"/><path d="m39.2 51.7c.1.2.2.4.2.6 0 1.7-3.4 3.8-7.5 3.8s-7.5-2.1-7.5-3.8c0-.2.1-.5.2-.6 0 0 3.2 1.5 7.3 1.5 4.1 0 7.3-1.5 7.3-1.5" fill="#454749"/><path d="m32 9.1c-29.5 0-35.8 23.7-25.2 32 0 0 5.2-8.8 16.1-13 28.4-10.9 20.5-19 9.1-19" fill="#748a93"/><path d="m32 9.1c-11.4 0-19.3 8.1 9.1 19 10.9 4.2 16.1 13 16.1 13 10.6-8.2 4.2-32-25.2-32" fill="#8b9fa5"/><g fill="#454749"><path d="m42.8 54.4c-.6 0-1.1-.2-1.6-.4-.5-.2-1-.5-1.4-.9-.8-.7-1.6-1.8-1.6-2.9.8.8 1.5 1.5 2.2 2.2.8.6 1.6 1.2 2.4 2"/><path d="m21 54.4c.8-.8 1.7-1.3 2.4-2 .8-.7 1.5-1.3 2.2-2.2 0 1.2-.7 2.2-1.6 2.9-.4.4-.9.7-1.4.9-.4.2-1 .4-1.6.4"/><path d="m17.7 41l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.5.5-3.4.6"/><ellipse cx="19.7" cy="39.6" rx="9" ry="9"/></g><ellipse cx="19.7" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="39.6" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f475-1f3fe.svg b/riot/emojione/svg/1f475-1f3fe.svg new file mode 100644 index 0000000..c1246e5 --- /dev/null +++ b/riot/emojione/svg/1f475-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="11.6" rx="15" ry="9.6" fill="#627a82"/><ellipse cx="32" cy="15.6" rx="15" ry="9.6" fill="#c28fef"/><path d="m57.3 28.9c-15.6-15.6-35.1-15.7-50.7 0l.1 17.3c0 7.5 7.4 15.8 25.7 15.8 17.3 0 24.9-6.8 24.9-15.8v-17.3" fill="#b47d56"/><path d="m39.2 51.7c.1.2.2.4.2.6 0 1.7-3.4 3.8-7.5 3.8s-7.5-2.1-7.5-3.8c0-.2.1-.5.2-.6 0 0 3.2 1.5 7.3 1.5 4.1 0 7.3-1.5 7.3-1.5" fill="#454749"/><path d="m32 9.1c-29.5 0-35.8 23.7-25.2 32 0 0 5.2-8.8 16.1-13 28.4-10.9 20.5-19 9.1-19" fill="#748a93"/><path d="m32 9.1c-11.4 0-19.3 8.1 9.1 19 10.9 4.2 16.1 13 16.1 13 10.6-8.2 4.2-32-25.2-32" fill="#8b9fa5"/><g fill="#454749"><path d="m42.8 54.4c-.6 0-1.1-.2-1.6-.4-.5-.2-1-.5-1.4-.9-.8-.7-1.6-1.8-1.6-2.9.8.8 1.5 1.5 2.2 2.2.8.6 1.6 1.2 2.4 2"/><path d="m21 54.4c.8-.8 1.7-1.3 2.4-2 .8-.7 1.5-1.3 2.2-2.2 0 1.2-.7 2.2-1.6 2.9-.4.4-.9.7-1.4.9-.4.2-1 .4-1.6.4"/><path d="m17.7 41l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.5.5-3.4.6"/><ellipse cx="19.7" cy="39.6" rx="9" ry="9"/></g><ellipse cx="19.7" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.2" cy="39.6" rx="9" ry="9" fill="#454749"/><ellipse cx="44.2" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f475-1f3ff.svg b/riot/emojione/svg/1f475-1f3ff.svg new file mode 100644 index 0000000..b1ae7cd --- /dev/null +++ b/riot/emojione/svg/1f475-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="11.6" rx="15" ry="9.6" fill="#627a82"/><ellipse cx="32" cy="15.6" rx="15" ry="9.6" fill="#c28fef"/><path d="m57.3 28.9c-15.6-15.6-35.1-15.7-50.7 0l.1 17.3c0 7.5 7.4 15.8 25.7 15.8 17.3 0 24.9-6.8 24.9-15.8v-17.3" fill="#8a6859"/><path d="m39.3 51.7c.1.2.2.4.2.6 0 1.7-3.4 3.8-7.5 3.8s-7.5-2.1-7.5-3.8c0-.2.1-.5.2-.6 0 0 3.2 1.5 7.3 1.5 4.1 0 7.3-1.5 7.3-1.5" fill="#454749"/><path d="m32 9.1c-29.5 0-35.8 23.7-25.2 32 0 0 5.2-8.8 16.1-13 28.4-10.9 20.5-19 9.1-19" fill="#748a93"/><path d="m32 9.1c-11.4 0-19.3 8.1 9.1 19 10.9 4.2 16.1 13 16.1 13 10.6-8.2 4.2-32-25.2-32" fill="#8b9fa5"/><g fill="#454749"><path d="m42.9 54.4c-.6 0-1.1-.2-1.6-.4-.5-.2-1-.5-1.4-.9-.8-.7-1.6-1.8-1.6-2.9.8.8 1.5 1.5 2.2 2.2.7.6 1.5 1.2 2.4 2"/><path d="m21.1 54.4c.8-.8 1.7-1.3 2.4-2 .8-.7 1.5-1.3 2.2-2.2 0 1.2-.7 2.2-1.6 2.9-.4.4-.9.7-1.4.9-.5.2-1 .4-1.6.4"/><path d="m17.8 41l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="39.6" rx="9" ry="9"/></g><ellipse cx="19.7" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="39.6" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="39.6" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f475.svg b/riot/emojione/svg/1f475.svg new file mode 100644 index 0000000..a2ac613 --- /dev/null +++ b/riot/emojione/svg/1f475.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="11.5" rx="15" ry="9.6" fill="#627a82"/><ellipse cx="32" cy="15.5" rx="15" ry="9.6" fill="#c28fef"/><path d="m57.3 28.8c-15.6-15.6-35.1-15.7-50.7 0l.1 17.3c0 7.5 7.4 15.8 25.7 15.8 17.3 0 24.9-6.8 24.9-15.8v-17.3" fill="#ffdd67"/><path d="m39.2 51.7c.1.2.2.4.2.6 0 1.7-3.4 3.8-7.5 3.8s-7.5-2.1-7.5-3.8c0-.2.1-.5.2-.6 0 0 3.2 1.5 7.3 1.5 4.1-.1 7.3-1.5 7.3-1.5" fill="#454749"/><path d="m32 9.1c-29.5 0-35.8 23.7-25.2 32 0 0 5.2-8.8 16.1-13 28.4-11 20.5-19 9.1-19" fill="#748a93"/><path d="m32 9.1c-11.4 0-19.3 8.1 9.1 19 10.9 4.2 16.1 13 16.1 13 10.6-8.3 4.2-32-25.2-32" fill="#8b9fa5"/><g fill="#454749"><path d="m42.8 54.3c-.6 0-1.1-.2-1.6-.4-.5-.2-1-.5-1.4-.9-.8-.7-1.6-1.8-1.6-2.9.8.8 1.5 1.5 2.2 2.2.8.7 1.6 1.3 2.4 2"/><path d="m21 54.3c.8-.8 1.7-1.3 2.4-2 .8-.7 1.5-1.3 2.2-2.2 0 1.2-.7 2.2-1.6 2.9-.4.4-.9.7-1.4.9-.4.3-1 .4-1.6.4"/><path d="m17.8 40.9l-.3-3c.8-.1 1.9-.3 3.1-.5 5.9-1.1 15.7-3 26.4.6l-1 2.8c-9.9-3.4-19.2-1.6-24.8-.5-1.4.3-2.6.5-3.4.6"/><ellipse cx="19.7" cy="39.5" rx="9" ry="9"/></g><ellipse cx="19.7" cy="39.5" rx="6" ry="6" fill="#b4d7ee"/><ellipse cx="44.3" cy="39.5" rx="9" ry="9" fill="#454749"/><ellipse cx="44.3" cy="39.5" rx="6" ry="6" fill="#b4d7ee"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f476-1f3fb.svg b/riot/emojione/svg/1f476-1f3fb.svg new file mode 100644 index 0000000..aa85b9b --- /dev/null +++ b/riot/emojione/svg/1f476-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 27c0-17-12-25-25-25s-25 8-25 25c-3.5 0-5 2.5-5 5s1.5 5 5 5c0 6.7 7 16 25 16 18 0 25-9.3 25-16 3.5 0 5-2.5 5-5s-1.5-5-5-5" fill="#ffe1bd"/><path d="m33 15c-4-3-2-7-2-7s8 5 15 3c0 0-4-1-5-4 0 0 4 1 7 0-4-3-9-5-16-5-7 0-12 2-16 5 4 5 8 8 17 8" fill="#594640"/><g fill="#ff717f"><path d="m56 37.4c-.4-2.4-3.3-3.9-6.6-3.2-3.3.6-5.7 3.1-5.3 5.5.4 2.4 3.3 3.9 6.6 3.2 3.2-.7 5.6-3.1 5.3-5.5" opacity=".5"/><path d="m14.6 34.1c-3.2-.6-6.2.9-6.6 3.3-.4 2.4 2 4.9 5.3 5.5 3.3.6 6.3-.8 6.6-3.2.4-2.5-2-4.9-5.3-5.6" opacity=".5"/></g><path d="m26 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="19.5" cy="27.5" r="4.5" fill="#664e27"/><path d="m21 27.5c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m51 27.5c0 3.6-2.9 6.5-6.5 6.5s-6.5-2.9-6.5-6.5c0-3.6 2.9-6.5 6.5-6.5s6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="44.5" cy="27.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="27.5" r="1.5" fill="#231f20"/><path d="m47 43.8c0 8.3-6.7 12.2-15 12.2-8.3 0-15-3.9-15-12.2 0-8.4 6.8-4.8 15-4.8 8.3 0 15-3.6 15 4.8" fill="#61c2ff"/><ellipse cx="32" cy="47" rx="6" ry="5" fill="#6235a8"/><path d="m32 46c-6.1 0-11-.7-11 5.2 0 6 4.9 10.8 11 10.8 6.1 0 11-4.8 11-10.7 0-6-4.9-5.3-11-5.3m0 12.4c-4.3 0-8.3-2.9-8.3-7.1 0-4.2 4-3.2 8.3-3.2 4.3 0 8.3-1 8.3 3.2 0 4.2-4 7.1-8.3 7.1" fill="#fbbf67"/><path d="m36 48.8c0 .6-.5 1.2-1.1 1.2h-5.8c-.6 0-1.1-.5-1.1-1.2v-2.7c0-.6.5-1.2 1.1-1.2h5.8c.6 0 1.1.5 1.1 1.2v2.7" fill="#42ade2"/><path d="m32 38c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f476-1f3fc.svg b/riot/emojione/svg/1f476-1f3fc.svg new file mode 100644 index 0000000..50f5f8c --- /dev/null +++ b/riot/emojione/svg/1f476-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 27c0-17-12-25-25-25s-25 8-25 25c-3.5 0-5 2.5-5 5s1.5 5 5 5c0 6.7 7 16 25 16 18 0 25-9.3 25-16 3.5 0 5-2.5 5-5s-1.5-5-5-5" fill="#fed0ac"/><path d="m33 15c-4-3-2-7-2-7s8 5 15 3c0 0-4-1-5-4 0 0 4 1 7 0-4-3-9-5-16-5-7 0-12 2-16 5 4 5 8 8 17 8" fill="#dbb471"/><g fill="#ff717f"><path d="m56 37.4c-.4-2.4-3.3-3.9-6.6-3.2-3.3.6-5.7 3.1-5.3 5.5.4 2.4 3.3 3.9 6.6 3.2 3.2-.7 5.6-3.1 5.3-5.5" opacity=".5"/><path d="m14.6 34.1c-3.2-.6-6.2.9-6.6 3.3-.4 2.4 2 4.9 5.3 5.5 3.3.6 6.3-.8 6.6-3.2.4-2.5-2-4.9-5.3-5.6" opacity=".5"/></g><path d="m26 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="19.5" cy="27.5" r="4.5" fill="#664e27"/><path d="m21 27.5c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m51 27.5c0 3.6-2.9 6.5-6.5 6.5s-6.5-2.9-6.5-6.5c0-3.6 2.9-6.5 6.5-6.5s6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="44.5" cy="27.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="27.5" r="1.5" fill="#231f20"/><path d="m47 43.8c0 8.3-6.7 12.2-15 12.2-8.3 0-15-3.9-15-12.2 0-8.4 6.8-4.8 15-4.8 8.3 0 15-3.6 15 4.8" fill="#61c2ff"/><ellipse cx="32" cy="47" rx="6" ry="5" fill="#6235a8"/><path d="m32 46c-6.1 0-11-.7-11 5.2 0 6 4.9 10.8 11 10.8 6.1 0 11-4.8 11-10.7 0-6-4.9-5.3-11-5.3m0 12.4c-4.3 0-8.3-2.9-8.3-7.1 0-4.2 4-3.2 8.3-3.2 4.3 0 8.3-1 8.3 3.2 0 4.2-4 7.1-8.3 7.1" fill="#fbbf67"/><path d="m36 48.8c0 .6-.5 1.2-1.1 1.2h-5.8c-.6 0-1.1-.5-1.1-1.2v-2.7c0-.6.5-1.2 1.1-1.2h5.8c.6 0 1.1.5 1.1 1.2v2.7" fill="#42ade2"/><path d="m32 38c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f476-1f3fd.svg b/riot/emojione/svg/1f476-1f3fd.svg new file mode 100644 index 0000000..9d3946d --- /dev/null +++ b/riot/emojione/svg/1f476-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 27c0-17-12-25-25-25s-25 8-25 25c-3.5 0-5 2.5-5 5s1.5 5 5 5c0 6.7 7 16 25 16 18 0 25-9.3 25-16 3.5 0 5-2.5 5-5s-1.5-5-5-5" fill="#d6a57c"/><path d="m33 15c-4-3-2-7-2-7s8 5 15 3c0 0-4-1-5-4 0 0 4 1 7 0-4-3-9-5-16-5-7 0-12 2-16 5 4 5 8 8 17 8" fill="#594640"/><g fill="#ff717f"><path d="m56 37.4c-.4-2.4-3.3-3.9-6.6-3.2-3.3.6-5.7 3.1-5.3 5.5.4 2.4 3.3 3.9 6.6 3.2 3.2-.7 5.6-3.1 5.3-5.5" opacity=".5"/><path d="m14.6 34.1c-3.2-.6-6.2.9-6.6 3.3-.4 2.4 2 4.9 5.3 5.5 3.3.6 6.3-.8 6.6-3.2.4-2.5-2-4.9-5.3-5.6" opacity=".5"/></g><path d="m26 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="19.5" cy="27.5" r="4.5" fill="#664e27"/><path d="m21 27.5c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m51 27.5c0 3.6-2.9 6.5-6.5 6.5s-6.5-2.9-6.5-6.5c0-3.6 2.9-6.5 6.5-6.5s6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="44.5" cy="27.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="27.5" r="1.5" fill="#231f20"/><path d="m47 43.8c0 8.3-6.7 12.2-15 12.2-8.3 0-15-3.9-15-12.2 0-8.4 6.8-4.8 15-4.8 8.3 0 15-3.6 15 4.8" fill="#61c2ff"/><ellipse cx="32" cy="47" rx="6" ry="5" fill="#6235a8"/><path d="m32 46c-6.1 0-11-.7-11 5.2 0 6 4.9 10.8 11 10.8 6.1 0 11-4.8 11-10.7 0-6-4.9-5.3-11-5.3m0 12.4c-4.3 0-8.3-2.9-8.3-7.1 0-4.2 4-3.2 8.3-3.2 4.3 0 8.3-1 8.3 3.2 0 4.2-4 7.1-8.3 7.1" fill="#fbbf67"/><path d="m36 48.8c0 .6-.5 1.2-1.1 1.2h-5.8c-.6 0-1.1-.5-1.1-1.2v-2.7c0-.6.5-1.2 1.1-1.2h5.8c.6 0 1.1.5 1.1 1.2v2.7" fill="#42ade2"/><path d="m32 38c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f476-1f3fe.svg b/riot/emojione/svg/1f476-1f3fe.svg new file mode 100644 index 0000000..75c1a67 --- /dev/null +++ b/riot/emojione/svg/1f476-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 27c0-17-12-25-25-25-13 0-25 8-25 25-3.5 0-5 2.5-5 5s1.5 5 5 5c0 6.7 7 16 25 16s25-9.3 25-16c3.5 0 5-2.5 5-5s-1.5-5-5-5" fill="#b47d56"/><path d="m33 15c-4-3-2-7-2-7s8 5 15 3c0 0-4-1-5-4 0 0 4 1 7 0-4-3-9-5-16-5-7 0-12 2-16 5 4 5 8 8 17 8" fill="#231f20"/><g fill="#ff717f"><path d="m56 37.4c-.4-2.4-3.3-3.9-6.6-3.2-3.3.6-5.7 3.1-5.3 5.5.4 2.4 3.3 3.9 6.6 3.2 3.2-.7 5.6-3.1 5.3-5.5" opacity=".5"/><path d="m14.6 34.1c-3.2-.6-6.2.9-6.6 3.3-.4 2.4 2 4.9 5.3 5.5 3.3.6 6.3-.8 6.6-3.2.4-2.5-2-4.9-5.3-5.6" opacity=".5"/></g><path d="m26 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="19.5" cy="27.5" r="4.5" fill="#664e27"/><path d="m21 27.5c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m51 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="44.5" cy="27.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="27.5" r="1.5" fill="#231f20"/><path d="m47 43.8c0 8.3-6.7 12.2-15 12.2-8.3 0-15-3.9-15-12.2 0-8.4 6.8-4.8 15-4.8 8.3 0 15-3.6 15 4.8" fill="#61c2ff"/><ellipse cx="32" cy="47" rx="6" ry="5" fill="#6235a8"/><path d="m32 46c-6.1 0-11-.7-11 5.2 0 6 4.9 10.8 11 10.8 6.1 0 11-4.8 11-10.7 0-6-4.9-5.3-11-5.3m0 12.4c-4.3 0-8.3-2.9-8.3-7.1 0-4.2 4-3.2 8.3-3.2s8.3-1 8.3 3.2c0 4.2-4 7.1-8.3 7.1" fill="#fbbf67"/><path d="m36 48.8c0 .6-.5 1.2-1.1 1.2h-5.8c-.6 0-1.1-.5-1.1-1.2v-2.7c0-.6.5-1.2 1.1-1.2h5.8c.6 0 1.1.5 1.1 1.2v2.7" fill="#42ade2"/><path d="m32 38c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f476-1f3ff.svg b/riot/emojione/svg/1f476-1f3ff.svg new file mode 100644 index 0000000..27a4a6d --- /dev/null +++ b/riot/emojione/svg/1f476-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 27c0-17-12-25-25-25-13 0-25 8-25 25-3.5 0-5 2.5-5 5s1.5 5 5 5c0 6.7 7 16 25 16s25-9.3 25-16c3.5 0 5-2.5 5-5 0-2.5-1.5-5-5-5" fill="#8a6859"/><path d="m33 15c-4-3-2-7-2-7s8 5 15 3c0 0-4-1-5-4 0 0 4 1 7 0-4-3-9-5-16-5-7 0-12 2-16 5 4 5 8 8 17 8" fill="#231f20"/><g fill="#ff717f"><path d="m56 37.4c-.4-2.4-3.3-3.9-6.6-3.2-3.3.6-5.7 3.1-5.3 5.5.4 2.4 3.3 3.9 6.6 3.2 3.2-.7 5.6-3.1 5.3-5.5" opacity=".5"/><path d="m14.6 34.1c-3.2-.6-6.2.9-6.6 3.3-.4 2.4 2 4.9 5.3 5.5 3.3.6 6.3-.8 6.6-3.2.4-2.5-2-4.9-5.3-5.6" opacity=".5"/></g><path d="m26 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="19.5" cy="27.5" r="4.5" fill="#664e27"/><path d="m21 27.5c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m51 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="44.5" cy="27.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="27.5" r="1.5" fill="#231f20"/><path d="m47 43.8c0 8.3-6.7 12.2-15 12.2-8.3 0-15-3.9-15-12.2 0-8.4 6.8-4.8 15-4.8 8.3 0 15-3.6 15 4.8" fill="#61c2ff"/><ellipse cx="32" cy="47" rx="6" ry="5" fill="#6235a8"/><path d="m32 46c-6.1 0-11-.7-11 5.2 0 6 4.9 10.8 11 10.8 6.1 0 11-4.8 11-10.7 0-6-4.9-5.3-11-5.3m0 12.4c-4.3 0-8.3-2.9-8.3-7.1 0-4.2 4-3.2 8.3-3.2s8.3-1 8.3 3.2c0 4.2-4 7.1-8.3 7.1" fill="#fbbf67"/><path d="m36 48.8c0 .6-.5 1.2-1.1 1.2h-5.8c-.6 0-1.1-.5-1.1-1.2v-2.7c0-.6.5-1.2 1.1-1.2h5.8c.6 0 1.1.5 1.1 1.2v2.7" fill="#42ade2"/><path d="m32 38c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f476.svg b/riot/emojione/svg/1f476.svg new file mode 100644 index 0000000..6bbcb0c --- /dev/null +++ b/riot/emojione/svg/1f476.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 27c0-17-12-25-25-25s-25 8-25 25c-3.5 0-5 2.5-5 5s1.5 5 5 5c0 6.7 7 16 25 16 18 0 25-9.3 25-16 3.5 0 5-2.5 5-5s-1.5-5-5-5" fill="#ffdd67"/><path d="m33 15c-4-3-2-7-2-7s8 5 15 3c0 0-4-1-5-4 0 0 4 1 7 0-4-3-9-5-16-5-7 0-12 2-16 5 4 5 8 8 17 8" fill="#ffb300"/><g fill="#ff717f"><path d="m56 37.4c-.4-2.4-3.3-3.9-6.6-3.2-3.3.6-5.7 3.1-5.3 5.5.4 2.4 3.3 3.9 6.6 3.2 3.2-.7 5.6-3.1 5.3-5.5" opacity=".5"/><path d="m14.6 34.1c-3.2-.6-6.2.9-6.6 3.3-.4 2.4 2 4.9 5.3 5.5 3.3.6 6.3-.8 6.6-3.2.4-2.5-2-4.9-5.3-5.6" opacity=".5"/></g><path d="m26 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="19.5" cy="27.5" r="4.5" fill="#664e27"/><path d="m21 27.5c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m51 27.5c0 3.6-2.9 6.5-6.5 6.5-3.6 0-6.5-2.9-6.5-6.5 0-3.6 2.9-6.5 6.5-6.5 3.6 0 6.5 2.9 6.5 6.5" fill="#fff"/><circle cx="44.5" cy="27.5" r="4.5" fill="#664e27"/><circle cx="44.5" cy="27.5" r="1.5" fill="#231f20"/><path d="m47 43.8c0 8.3-6.7 12.2-15 12.2-8.3 0-15-3.9-15-12.2 0-8.4 6.8-4.8 15-4.8 8.3 0 15-3.6 15 4.8" fill="#61c2ff"/><ellipse cx="32" cy="47" rx="6" ry="5" fill="#6235a8"/><path d="m32 46c-6.1 0-11-.7-11 5.2 0 6 4.9 10.8 11 10.8s11-4.8 11-10.7c0-6-4.9-5.3-11-5.3m0 12.4c-4.3 0-8.3-2.9-8.3-7.1s4-3.2 8.3-3.2c4.3 0 8.3-1 8.3 3.2s-4 7.1-8.3 7.1" fill="#fbbf67"/><path d="m36 48.8c0 .6-.5 1.2-1.1 1.2h-5.8c-.6 0-1.1-.5-1.1-1.2v-2.7c0-.6.5-1.2 1.1-1.2h5.8c.6 0 1.1.5 1.1 1.2v2.7" fill="#42ade2"/><path d="m32 38c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f477-1f3fb.svg b/riot/emojione/svg/1f477-1f3fb.svg new file mode 100644 index 0000000..1c07894 --- /dev/null +++ b/riot/emojione/svg/1f477-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#594640" d="m6 28h52v12h-52z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#ffe1bd"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="M59,31H5C5,16.6,11.8,5.5,32,5.5C52.2,5.5,59,16.6,59,31z" fill="#ff9430"/><g fill="#db802b"><path d="m24.5 31h-4v-23.9l4-1.2z"/><path d="m43.5 31h-4v-25.1l4 1.2z"/><path d="m62 33.2h-60c0-5.1 13.4-9.3 30-9.3 16.6 0 30 4.2 30 9.3"/></g><path d="M41.5,27.7H22.5V6.6c0-6.1,19.1-6.1,19.1,0V27.7z" fill="#ff9430"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f477-1f3fc.svg b/riot/emojione/svg/1f477-1f3fc.svg new file mode 100644 index 0000000..2baad92 --- /dev/null +++ b/riot/emojione/svg/1f477-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#dbb471" d="m6 28h52v12h-52z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#fed0ac"/><path d="m20 35.8c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5c-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="M59,31H5C5,16.6,11.8,5.5,32,5.5C52.2,5.5,59,16.6,59,31z" fill="#ff9430"/><g fill="#db802b"><path d="m24.5 31h-4v-23.9l4-1.2z"/><path d="m43.5 31h-4v-25.1l4 1.2z"/><path d="m62 33.2h-60c0-5.1 13.4-9.3 30-9.3s30 4.2 30 9.3"/></g><path d="M41.5,27.7H22.5V6.6c0-6.1,19.1-6.1,19.1,0V27.7z" fill="#ff9430"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f477-1f3fd.svg b/riot/emojione/svg/1f477-1f3fd.svg new file mode 100644 index 0000000..9bd5a80 --- /dev/null +++ b/riot/emojione/svg/1f477-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#594640" d="m6 28h52v12h-52z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#d6a57c"/><path d="m20 35.8c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5c-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="M59,31H5C5,16.6,11.8,5.5,32,5.5C52.2,5.5,59,16.6,59,31z" fill="#ff9430"/><g fill="#db802b"><path d="m24.5 31h-4v-23.9l4-1.2z"/><path d="m43.5 31h-4v-25.1l4 1.2z"/><path d="m62 33.2h-60c0-5.1 13.4-9.3 30-9.3s30 4.2 30 9.3"/></g><path d="M41.5,27.7H22.5V6.6c0-6.1,19.1-6.1,19.1,0V27.7z" fill="#ff9430"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f477-1f3fe.svg b/riot/emojione/svg/1f477-1f3fe.svg new file mode 100644 index 0000000..ee7b228 --- /dev/null +++ b/riot/emojione/svg/1f477-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#231f20" d="m6 28h52v12h-52z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#b47d56"/><path d="m20 35.8c-5 0-7 1.8-7 3.6s0 4.4 6.6 4.4c6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6s0 4.4-6.6 4.4c-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5 0-.8-.7-1.5-1.5-1.5-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><g fill="#664e27"><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9"/></g><path d="M59,31H5C5,16.6,11.8,5.5,32,5.5C52.2,5.5,59,16.6,59,31z" fill="#ff9430"/><g fill="#db802b"><path d="m24.5 31h-4v-23.9l4-1.2z"/><path d="m43.5 31h-4v-25.1l4 1.2z"/><path d="m62 33.2h-60c0-5.1 13.4-9.3 30-9.3 16.6 0 30 4.2 30 9.3"/></g><path d="M41.5,27.7H22.5V6.6c0-6.1,19.1-6.1,19.1,0V27.7z" fill="#ff9430"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f477-1f3ff.svg b/riot/emojione/svg/1f477-1f3ff.svg new file mode 100644 index 0000000..2cfb7cf --- /dev/null +++ b/riot/emojione/svg/1f477-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#231f20" d="m6 28h52v12h-52z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#8a6859"/><path d="m20 35.8c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5c-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#574137"/><path d="M59,31H5C5,16.6,11.8,5.5,32,5.5C52.2,5.5,59,16.6,59,31z" fill="#ff9430"/><g fill="#db802b"><path d="m24.5 31h-4v-23.9l4-1.2z"/><path d="m43.5 31h-4v-25.1l4 1.2z"/><path d="m62 33.2h-60c0-5.1 13.4-9.3 30-9.3s30 4.2 30 9.3"/></g><path d="M41.5,27.7H22.5V6.6c0-6.1,19.1-6.1,19.1,0V27.7z" fill="#ff9430"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f477.svg b/riot/emojione/svg/1f477.svg new file mode 100644 index 0000000..56ae64c --- /dev/null +++ b/riot/emojione/svg/1f477.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffb300" d="m6 28h52v12h-52z"/><path d="m8 37v-9h48v9c0 0 4 0 4 5s-4 5-4 5c0 8-18 15-24 15s-24-7-24-15c0 0-4 0-4-5 0-5 4-5 4-5" fill="#ffdd67"/><path d="m20 35.8c-5 0-7 1.8-7 3.6 0 1.8 0 4.4 6.6 4.4 6.4 0 7.4-.8 7.4-3.5 0-1.8-2-4.5-7-4.5" fill="#f5f5f5"/><circle cx="20.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m22 38.8c0 .8-.7 1.5-1.5 1.5-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5c.8 0 1.5.7 1.5 1.5" fill="#231f20"/><path d="m13 39.3c0-7 14-7 14 1-2-6-12-6-14-1" fill="#664e27"/><path d="m44 35.8c5 0 7 1.8 7 3.6 0 1.8 0 4.4-6.6 4.4-6.4 0-7.4-.8-7.4-3.5 0-1.8 2-4.5 7-4.5" fill="#f5f5f5"/><circle cx="43.5" cy="38.8" r="4.5" fill="#664e27"/><path d="m42 38.8c0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5c-.8 0-1.5.7-1.5 1.5" fill="#231f20"/><path d="m51 39.3c0-7-14-7-14 1 2-6 12-6 14-1" fill="#664e27"/><path d="m41 50.9c0 3.4-4.5 5.1-9 5.1s-9-1.7-9-5.1c0 0 0-.9.9-.9 4.1 0 12.1 0 16.2 0 .9 0 .9.9.9.9" fill="#937237"/><path d="M59,31H5C5,16.6,11.8,5.5,32,5.5C52.2,5.5,59,16.6,59,31z" fill="#ff9430"/><g fill="#db802b"><path d="m24.5 31h-4v-23.9l4-1.2z"/><path d="m43.5 31h-4v-25.1l4 1.2z"/><path d="m62 33.2h-60c0-5.1 13.4-9.3 30-9.3s30 4.2 30 9.3"/></g><path d="M41.5,27.7H22.5V6.6c0-6.1,19.1-6.1,19.1,0V27.7z" fill="#ff9430"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f478-1f3fb.svg b/riot/emojione/svg/1f478-1f3fb.svg new file mode 100644 index 0000000..ded39fa --- /dev/null +++ b/riot/emojione/svg/1f478-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#594640"/><path d="m10.4 40.7c0 0-4.4-1.1-4.4-7.5 0-5.1 3.3-5.9 3.3-5.9 30.2-.1 38.7-6.3 38.7-6.3s1.9 6.2 6.6 6.2c0 0 3.4.6 3.4 5.9 0 6.4-4.5 7.5-4.5 7.5-.1 9.7-13.4 21.4-21.5 21.4-8.1 0-21.6-11.7-21.6-21.3" fill="#ffe1bd"/><path d="m32 47c-4.2 0-6.3-3-4.2-3 2.1 0 6.3 0 8.4 0s0 3-4.2 3" fill="#e6b796"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#6235a8"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#6235a8"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#f085a9"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5 5.5 0 6-1.7 10-2.5 0 0-3.8.5-6.1-.4" fill="#d46c8f"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/><path d="m57.9 14.3c-.8-.4-1.9-.1-2.5.7-.2-.9-.7-1.6-1.3-2.1.6 0 .8-.3.6-.7-.2-.7-.5-1.5-1.9-2.5 0-1.6-1.2-3.1-1.2-3.1-.2-.2-.6-.2-.8.1 0 .1-.9 1.6-.5 3.3-1.5 1.3-1.4 2.7-1.3 3-.2 0-1.7 1-2.1 2.9-.8 0-1.3.6-1.3.6.3-2.2-1.4-4.4-4-4.3-.7-3.9-5.1-5.2-5.9-1.4-.5-1-1.6-1.8-1.6-1.8.4-1.9-1.2-5-2.1-5s-2.4 3.1-2.1 5c0 0-1.1.8-1.7 1.7-.8-3.8-5.3-2.5-5.9 1.4-2.6-.1-4.3 2-4 4.3 0 0-.5-.5-1.3-.6-.4-1.9-1.8-2.9-2.1-2.9.1-.2.2-1.7-1.3-3 .4-1.7-.5-3.2-.5-3.3-.2-.3-.6-.3-.8-.1 0 0-1.2 1.5-1.2 3.1-1.4.9-1.7 1.7-1.9 2.5-.1.4.1.8.6.7-.6.5-1 1.2-1.3 2.1-.6-.8-1.7-1.1-2.5-.7-1 .5-1.3 1.8-.8 2.9.6 1.4 2.4 1.5 3.3.5.4 2.2 2.7 3.1 4.5 1.6-.3 1 1.4 1 3.2-.6.6.4 1.7.3 2.1.1-.1 1.2.5 3.1 2.6 3.1 1.4 0 2-1 1.9-1.8.8.3 2.3.6 3.4-.1 2.1 1.8 3.6 2.1 3.7 1 .6.5 1.4.8 2.1.8s1.5-.3 2.1-.8c.1 1 1.6.8 3.7-1 1.1.7 2.5.5 3.4.1-.1 1 .5 2 1.9 2 2 0 2.6-1.9 2.6-3.1.4.2 1.5.2 2.1-.1 1.9 1.6 3.5 1.5 3.2.6 1.8 1.5 4.1.6 4.5-1.6.9 1 2.7.9 3.3-.5.5-1.2.1-2.4-.9-3m-47.5-2.4c.2-.7.9-1.1.9-1.1l.2.8c-.1 0-.6.4-1.1.3m2.3-2.6h-.6c0 0 .1-.9.5-1.3.2.6.1 1.3.1 1.3m.1 2.5l.4-.8c0 0 .5.5.6 1.3-.5 0-1-.5-1-.5m.8 1.5c.2 0 .7.1.7.1s-.2.3-.3.8c0-.2-.3-.8-.4-.9m.5 5.8c.2-.9.7-1.5.7-1.5l.7.7c-.1-.1-.7.6-1.4.8m1-3.1c0 0-.2-.9 0-1.7.6.5.9 1.4.9 1.4l-.9.3m1.7 1.8l.2-.9c0 0 .8.2 1.3.9-.6.3-1.5 0-1.5 0m22.2-2.5c-.5-1.1.1-2 2-2.1.8 3.3-1.6 2.9-2 2.1m-7-9.9c.5 0 1.1 2.5 1 3.4h-2c-.1-.9.5-3.4 1-3.4m-9 7.9c1.9.1 2.4 1 2 2.1-.4.7-2.8 1.1-2-2.1m-2.8 3.6c-.3.3-1 0-1-1.4 1.3.4 1.3 1.1 1 1.4m2.4 2.1c-.3-1-1-1.4-1.4-1.6.7-1.1.1-2.3-1.8-2.8.9-1.1 1.5-1.5 2.5-1.5-.7 3.1 1 4.6 3.2 3.3 0 .2 0 .3 0 .5-1 .3-1.8 1.1-2.5 2.1m1 .3c.3-.7 1.6-1.4 1.6-1.4l.4 1.2c0 .1-1 .5-2 .2m2.4-4.7c-.1-1.1-.3-1.9-2.7-2.4.8-3.5 3.6-3.3 3.9-1.6.2 1.2-1.4 1.6-1-.1.2-.6-.7-.9-1-.3-.3.8-.4 3.1 2.1 2.1-.2.6-.5.9-.3 1.2-.2.2-.6.6-1 1.1m1.2.2c.4 1 .2 2.2.2 2.2l-1.2-.2c0-.1.3-1.2 1-2m-.2 4.6l.8-.9c0 0 .8.8 1 1.9-.9-.1-1.8-1-1.8-1m1.4-3.8c0-.8-.5-1.6-.5-1.6h1.3c0 0-.6.7-.8 1.6m-.3-2.6c.3-1.5 2.2-2.7 2.2-2.7l1 1.8c0 0-1.3 1-3.2.9m3.9-1.9c-.2-.3-.5-.7-.7-1.2.2 0 1.1 0 1.3 0-.1.5-.4.9-.6 1.2m.7 1l1-1.8c0 0 2 1.3 2.2 2.7-1.9.1-3.2-.9-3.2-.9m2.1 1.9h1.3c0 0-.4.8-.5 1.6-.2-.9-.8-1.6-.8-1.6m.4 6.4c.2-1.1 1-1.9 1-1.9l.8.9c0 0-.9.9-1.8 1m1.4-3.5c0 0-.2-1.1.2-2.2.7.8 1 1.9 1 1.9l-1.2.3m.4-3.3c.2-.3-.1-.7-.3-1.2 2.5 1.1 2.4-1.2 2.1-2.1-.2-.6-1.1-.3-1 .3.4 1.6-1.2 1.2-1 .1.3-1.7 3.2-1.9 3.9 1.6-2.4.4-2.6 1.3-2.7 2.4-.4-.6-.8-1-1-1.1m1.4 5.6l.4-1.2c0 0 1.3.6 1.6 1.4-1 .2-2-.2-2-.2m4.4-1.8c-.4.2-1.1.6-1.4 1.6-.6-1-1.4-1.8-2.5-2.1 0-.2 0-.3 0-.5 2.2 1.3 4-.2 3.2-3.3 1 0 1.7.4 2.5 1.5-1.9.5-2.5 1.7-1.8 2.8m1-.5c-.3-.3-.3-1 1-1.4 0 1.4-.7 1.7-1 1.4m1.9.9c.6-.8 1.3-.9 1.3-.9l.2.9c0 0-.9.3-1.5 0m3.2-3.5c.2.7 0 1.7 0 1.7l-.9-.3c.1 0 .3-.9.9-1.4m-.3 3.9l.7-.7c0 0 .5.7.7 1.5-.8-.1-1.4-.8-1.4-.8m1.3-4.1c-.1-.5-.3-.8-.3-.8s.5 0 .7-.1c0 .2-.3.8-.4.9m.3-1.8c.1-.8.6-1.3.6-1.3l.4.8c0 0-.5.5-1 .5m1.1-3c0 0-.1-.8.2-1.3.4.4.5 1.3.5 1.3h-.7m1.3 2.3l.2-.8c0 0 .6.4.9 1.1-.6.1-1.1-.3-1.1-.3" fill="#fff"/><g fill="#ff5760"><path d="m56.5 17.3c-.5-.3-.7-.9-.4-1.5.3-.6.9-.8 1.4-.5.5.3.7.9.4 1.5-.3.5-.9.8-1.4.5"/><path d="m44.5 20.4c-.6.8-1.5 1-2.1.5-.6-.5-.6-1.5-.1-2.3.6-.8 1.5-1 2.1-.5.7.5.7 1.6.1 2.3"/><path d="m54.6 15.9c.2 1.5-.5 2.9-1.6 3.1-1.1.2-2.2-.9-2.4-2.5-.2-1.5.5-2.9 1.6-3.1 1.1-.2 2.2.9 2.4 2.5"/><path d="m7.5 17.3c.5-.3.6-.9.4-1.5-.3-.5-.9-.8-1.4-.5-.5.3-.7.9-.4 1.5.3.5.9.8 1.4.5"/><ellipse cx="32" cy="17.2" rx="3" ry="3.8"/><path d="m19.5 20.4c.6.8 1.5 1 2.1.5.6-.5.6-1.5.1-2.3-.6-.8-1.5-1-2.1-.5-.7.5-.7 1.6-.1 2.3"/><path d="m9.4 15.9c-.2 1.5.5 2.9 1.6 3.1 1.1.2 2.2-.9 2.4-2.5.2-1.5-.5-2.9-1.6-3.1-1.1-.2-2.2.9-2.4 2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f478-1f3fc.svg b/riot/emojione/svg/1f478-1f3fc.svg new file mode 100644 index 0000000..e815e48 --- /dev/null +++ b/riot/emojione/svg/1f478-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#dbb471"/><path d="m10.4 40.7c0 0-4.4-1.1-4.4-7.5 0-5.1 3.3-5.9 3.3-5.9 30.2-.1 38.7-6.3 38.7-6.3s1.9 6.2 6.6 6.2c0 0 3.4.6 3.4 5.9 0 6.4-4.5 7.5-4.5 7.5-.1 9.7-13.4 21.4-21.5 21.4-8.1 0-21.6-11.7-21.6-21.3" fill="#fed0ac"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#e0a372"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#6235a8"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#6235a8"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#e07297"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5s6-1.7 10-2.5c0 0-3.8.5-6.1-.4" fill="#b85d7b"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/><path d="m57.9 14.3c-.8-.4-1.9-.1-2.5.7-.2-.9-.7-1.6-1.3-2.1.6 0 .8-.3.6-.7-.2-.7-.5-1.5-1.9-2.5 0-1.6-1.2-3.1-1.2-3.1-.2-.2-.6-.2-.8.1 0 .1-.9 1.6-.5 3.3-1.5 1.3-1.4 2.7-1.3 3-.2 0-1.7 1-2.1 2.9-.8 0-1.3.6-1.3.6.3-2.2-1.4-4.4-4-4.3-.7-3.9-5.1-5.2-5.9-1.4-.5-1-1.6-1.8-1.6-1.8.4-1.9-1.2-5-2.1-5s-2.4 3.1-2.1 5c0 0-1.1.8-1.7 1.7-.8-3.8-5.3-2.5-5.9 1.4-2.6-.1-4.3 2-4 4.3 0 0-.5-.5-1.3-.6-.4-1.9-1.8-2.9-2.1-2.9.1-.2.2-1.7-1.3-3 .4-1.7-.5-3.2-.5-3.3-.2-.3-.6-.3-.8-.1 0 0-1.2 1.5-1.2 3.1-1.4.9-1.7 1.7-1.9 2.5-.1.4.1.8.6.7-.6.5-1 1.2-1.3 2.1-.5-.7-1.6-1-2.5-.6-1 .5-1.3 1.8-.8 2.9.6 1.4 2.4 1.5 3.3.5.4 2.2 2.7 3.1 4.5 1.6-.3 1 1.4 1 3.2-.6.6.4 1.7.3 2.1.1-.1 1.2.5 3.1 2.6 3.1 1.4 0 2-1 1.9-1.8.8.3 2.3.6 3.4-.1 2.1 1.8 3.6 2.1 3.7 1 .6.5 1.4.8 2.1.8.8 0 1.5-.3 2.1-.8.1 1 1.6.8 3.7-1 1.1.7 2.5.5 3.4.1-.1.9.5 1.9 1.9 1.9 2 0 2.6-1.9 2.6-3.1.4.2 1.5.2 2.1-.1 1.9 1.6 3.5 1.5 3.2.6 1.8 1.5 4.1.6 4.5-1.6.9 1 2.7.9 3.3-.5.5-1.2.1-2.4-.9-3m-47.5-2.4c.2-.7.9-1.1.9-1.1l.2.8c-.1 0-.6.4-1.1.3m2.3-2.6h-.6c0 0 .1-.9.5-1.3.2.6.1 1.3.1 1.3m.1 2.5l.4-.8c0 0 .5.5.6 1.3-.5 0-1-.5-1-.5m.8 1.5c.2 0 .7.1.7.1s-.2.3-.3.8c0-.2-.3-.8-.4-.9m.5 5.8c.2-.9.7-1.5.7-1.5l.7.7c-.1-.1-.7.6-1.4.8m1-3.1c0 0-.2-.9 0-1.7.6.5.9 1.4.9 1.4l-.9.3m1.7 1.8l.2-.9c0 0 .8.2 1.3.9-.6.3-1.5 0-1.5 0m22.2-2.5c-.5-1.1.1-2 2-2.1.8 3.3-1.6 2.9-2 2.1m-7-9.9c.5 0 1.1 2.5 1 3.4h-2c-.1-.9.5-3.4 1-3.4m-9 7.9c1.9.1 2.5 1 2 2.1-.4.7-2.8 1.1-2-2.1m-2.8 3.6c-.3.3-1 0-1-1.4 1.3.4 1.3 1.1 1 1.4m2.4 2.1c-.3-1-1-1.4-1.4-1.6.7-1.1.1-2.3-1.8-2.8.9-1.1 1.5-1.5 2.5-1.5-.7 3.1 1 4.6 3.2 3.3 0 .2 0 .3 0 .5-1 .3-1.8 1.1-2.5 2.1m1 .3c.3-.7 1.6-1.4 1.6-1.4l.4 1.2c0 .1-1 .5-2 .2m2.4-4.7c-.1-1.1-.3-1.9-2.7-2.4.8-3.5 3.6-3.3 3.9-1.6.2 1.2-1.4 1.6-1-.1.2-.6-.7-.9-1-.3-.3.8-.4 3.1 2.1 2.1-.2.6-.5.9-.3 1.2-.2.2-.6.6-1 1.1m1.2.2c.4 1 .2 2.2.2 2.2l-1.2-.2c0-.1.3-1.2 1-2m-.2 4.6l.8-.9c0 0 .8.8 1 1.9-.9-.1-1.8-1-1.8-1m1.4-3.8c0-.8-.5-1.6-.5-1.6h1.3c0 0-.6.7-.8 1.6m-.3-2.6c.3-1.5 2.2-2.7 2.2-2.7l1 1.8c0 0-1.3 1-3.2.9m3.9-1.9c-.2-.3-.5-.7-.7-1.2.2 0 1.1 0 1.3 0-.1.5-.4.9-.6 1.2m.7 1l1-1.8c0 0 2 1.3 2.2 2.7-1.9.1-3.2-.9-3.2-.9m2.1 1.9h1.3c0 0-.4.8-.5 1.6-.2-.9-.8-1.6-.8-1.6m.4 6.4c.2-1.1 1-1.9 1-1.9l.8.9c0 0-.9.9-1.8 1m1.4-3.5c0 0-.2-1.1.2-2.2.7.8 1 1.9 1 1.9l-1.2.3m.4-3.3c.2-.3-.1-.7-.3-1.2 2.5 1.1 2.4-1.2 2.1-2.1-.2-.6-1.1-.3-1 .3.4 1.6-1.3 1.2-1 .1.3-1.7 3.2-1.9 3.9 1.6-2.4.4-2.6 1.3-2.7 2.4-.4-.6-.8-1-1-1.1m1.4 5.6l.4-1.2c0 0 1.3.6 1.6 1.4-1 .2-2-.2-2-.2m4.4-1.8c-.4.2-1.1.6-1.4 1.6-.6-1-1.4-1.8-2.5-2.1 0-.2 0-.3 0-.5 2.2 1.3 4-.2 3.2-3.3 1 0 1.7.4 2.5 1.5-1.9.5-2.5 1.7-1.8 2.8m1-.5c-.3-.3-.3-1 1-1.4 0 1.4-.7 1.7-1 1.4m1.9.9c.6-.8 1.3-.9 1.3-.9l.2.9c0 0-.9.3-1.5 0m3.2-3.5c.2.7 0 1.7 0 1.7l-.9-.3c.1 0 .3-.9.9-1.4m-.3 3.9l.7-.7c0 0 .5.7.7 1.5-.8-.1-1.4-.8-1.4-.8m1.3-4.1c-.1-.5-.3-.8-.3-.8s.5 0 .7-.1c0 .2-.3.8-.4.9m.3-1.8c.1-.8.6-1.3.6-1.3l.4.8c0 0-.5.5-1 .5m1.1-3c0 0-.1-.8.2-1.3.4.4.5 1.3.5 1.3h-.7m1.3 2.3l.2-.8c0 0 .6.4.9 1.1-.6.1-1.1-.3-1.1-.3" fill="#fff"/><g fill="#ff5760"><path d="m56.5 17.3c-.5-.3-.7-.9-.4-1.5.3-.6.9-.8 1.4-.5.5.3.7.9.4 1.5-.3.5-.9.8-1.4.5"/><path d="m44.5 20.4c-.6.8-1.5 1-2.1.5-.6-.5-.6-1.5-.1-2.3.6-.8 1.5-1 2.1-.5.7.5.7 1.6.1 2.3"/><path d="m54.6 15.9c.2 1.5-.5 2.9-1.6 3.1-1.1.2-2.2-.9-2.4-2.5-.2-1.5.5-2.9 1.6-3.1 1.1-.2 2.2.9 2.4 2.5"/><path d="m7.5 17.3c.5-.3.6-.9.4-1.5-.3-.5-.9-.8-1.4-.5-.5.3-.7.9-.4 1.5.3.5.9.8 1.4.5"/><ellipse cx="32" cy="17.2" rx="3" ry="3.8"/><path d="m19.5 20.4c.6.8 1.5 1 2.1.5.6-.5.6-1.5.1-2.3-.6-.8-1.5-1-2.1-.5-.7.5-.7 1.6-.1 2.3"/><path d="m9.4 15.9c-.2 1.5.5 2.9 1.6 3.1 1.1.2 2.2-.9 2.4-2.5.2-1.5-.5-2.9-1.6-3.1-1.1-.2-2.2.9-2.4 2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f478-1f3fd.svg b/riot/emojione/svg/1f478-1f3fd.svg new file mode 100644 index 0000000..7d5b777 --- /dev/null +++ b/riot/emojione/svg/1f478-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#594640"/><path d="m10.4 40.7c0 0-4.4-1.1-4.4-7.5 0-5.1 3.3-5.9 3.3-5.9 30.2-.1 38.7-6.3 38.7-6.3s1.9 6.2 6.6 6.2c0 0 3.4.6 3.4 5.9 0 6.4-4.5 7.5-4.5 7.5-.1 9.7-13.4 21.4-21.5 21.4-8.1 0-21.6-11.7-21.6-21.3" fill="#d6a57c"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#b58360"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#6235a8"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#6235a8"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#b5607c"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5s6-1.7 10-2.5c0 0-3.8.5-6.1-.4" fill="#804458"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/><path d="m57.9 14.3c-.8-.4-1.9-.1-2.5.7-.2-.9-.7-1.6-1.3-2.1.6 0 .8-.3.6-.7-.2-.7-.5-1.5-1.9-2.5 0-1.6-1.2-3.1-1.2-3.1-.2-.2-.6-.2-.8.1 0 .1-.9 1.6-.5 3.3-1.5 1.3-1.4 2.7-1.3 3-.2 0-1.7 1-2.1 2.9-.8 0-1.3.6-1.3.6.3-2.2-1.4-4.4-4-4.3-.7-3.9-5.1-5.2-5.9-1.4-.5-1-1.6-1.8-1.6-1.8.4-1.9-1.2-5-2.1-5s-2.4 3.1-2.1 5c0 0-1.1.8-1.7 1.7-.8-3.8-5.3-2.5-5.9 1.4-2.6-.1-4.3 2-4 4.3 0 0-.5-.5-1.3-.6-.4-1.9-1.8-2.9-2.1-2.9.1-.2.2-1.7-1.3-3 .4-1.7-.5-3.2-.5-3.3-.2-.3-.6-.3-.8-.1 0 0-1.2 1.5-1.2 3.1-1.4.9-1.7 1.7-1.9 2.5-.1.4.1.8.6.7-.6.5-1 1.2-1.3 2.1-.5-.7-1.6-1-2.5-.6-1 .5-1.3 1.8-.8 2.9.6 1.4 2.4 1.5 3.3.5.4 2.2 2.7 3.1 4.5 1.6-.3 1 1.4 1 3.2-.6.6.4 1.7.3 2.1.1-.1 1.2.5 3.1 2.6 3.1 1.4 0 2-1 1.9-1.8.8.3 2.3.6 3.4-.1 2.1 1.8 3.6 2.1 3.7 1 .6.5 1.4.8 2.1.8.8 0 1.5-.3 2.1-.8.1 1 1.6.8 3.7-1 1.1.7 2.5.5 3.4.1-.1.9.5 1.9 1.9 1.9 2 0 2.6-1.9 2.6-3.1.4.2 1.5.2 2.1-.1 1.9 1.6 3.5 1.5 3.2.6 1.8 1.5 4.1.6 4.5-1.6.9 1 2.7.9 3.3-.5.5-1.2.1-2.4-.9-3m-47.5-2.4c.2-.7.9-1.1.9-1.1l.2.8c-.1 0-.6.4-1.1.3m2.3-2.6h-.6c0 0 .1-.9.5-1.3.2.6.1 1.3.1 1.3m.1 2.5l.4-.8c0 0 .5.5.6 1.3-.5 0-1-.5-1-.5m.8 1.5c.2 0 .7.1.7.1s-.2.3-.3.8c0-.2-.3-.8-.4-.9m.5 5.8c.2-.9.7-1.5.7-1.5l.7.7c-.1-.1-.7.6-1.4.8m1-3.1c0 0-.2-.9 0-1.7.6.5.9 1.4.9 1.4l-.9.3m1.7 1.8l.2-.9c0 0 .8.2 1.3.9-.6.3-1.5 0-1.5 0m22.2-2.5c-.5-1.1.1-2 2-2.1.8 3.3-1.6 2.9-2 2.1m-7-9.9c.5 0 1.1 2.5 1 3.4h-2c-.1-.9.5-3.4 1-3.4m-9 7.9c1.9.1 2.5 1 2 2.1-.4.7-2.8 1.1-2-2.1m-2.8 3.6c-.3.3-1 0-1-1.4 1.3.4 1.3 1.1 1 1.4m2.4 2.1c-.3-1-1-1.4-1.4-1.6.7-1.1.1-2.3-1.8-2.8.9-1.1 1.5-1.5 2.5-1.5-.7 3.1 1 4.6 3.2 3.3 0 .2 0 .3 0 .5-1 .3-1.8 1.1-2.5 2.1m1 .3c.3-.7 1.6-1.4 1.6-1.4l.4 1.2c0 .1-1 .5-2 .2m2.4-4.7c-.1-1.1-.3-1.9-2.7-2.4.8-3.5 3.6-3.3 3.9-1.6.2 1.2-1.4 1.6-1-.1.2-.6-.7-.9-1-.3-.3.8-.4 3.1 2.1 2.1-.2.6-.5.9-.3 1.2-.2.2-.6.6-1 1.1m1.2.2c.4 1 .2 2.2.2 2.2l-1.2-.2c0-.1.3-1.2 1-2m-.2 4.6l.8-.9c0 0 .8.8 1 1.9-.9-.1-1.8-1-1.8-1m1.4-3.8c0-.8-.5-1.6-.5-1.6h1.3c0 0-.6.7-.8 1.6m-.3-2.6c.3-1.5 2.2-2.7 2.2-2.7l1 1.8c0 0-1.3 1-3.2.9m3.9-1.9c-.2-.3-.5-.7-.7-1.2.2 0 1.1 0 1.3 0-.1.5-.4.9-.6 1.2m.7 1l1-1.8c0 0 2 1.3 2.2 2.7-1.9.1-3.2-.9-3.2-.9m2.1 1.9h1.3c0 0-.4.8-.5 1.6-.2-.9-.8-1.6-.8-1.6m.4 6.4c.2-1.1 1-1.9 1-1.9l.8.9c0 0-.9.9-1.8 1m1.4-3.5c0 0-.2-1.1.2-2.2.7.8 1 1.9 1 1.9l-1.2.3m.4-3.3c.2-.3-.1-.7-.3-1.2 2.5 1.1 2.4-1.2 2.1-2.1-.2-.6-1.1-.3-1 .3.4 1.6-1.3 1.2-1 .1.3-1.7 3.2-1.9 3.9 1.6-2.4.4-2.6 1.3-2.7 2.4-.4-.6-.8-1-1-1.1m1.4 5.6l.4-1.2c0 0 1.3.6 1.6 1.4-1 .2-2-.2-2-.2m4.4-1.8c-.4.2-1.1.6-1.4 1.6-.6-1-1.4-1.8-2.5-2.1 0-.2 0-.3 0-.5 2.2 1.3 4-.2 3.2-3.3 1 0 1.7.4 2.5 1.5-1.9.5-2.5 1.7-1.8 2.8m1-.5c-.3-.3-.3-1 1-1.4 0 1.4-.7 1.7-1 1.4m1.9.9c.6-.8 1.3-.9 1.3-.9l.2.9c0 0-.9.3-1.5 0m3.2-3.5c.2.7 0 1.7 0 1.7l-.9-.3c.1 0 .3-.9.9-1.4m-.3 3.9l.7-.7c0 0 .5.7.7 1.5-.8-.1-1.4-.8-1.4-.8m1.3-4.1c-.1-.5-.3-.8-.3-.8s.5 0 .7-.1c0 .2-.3.8-.4.9m.3-1.8c.1-.8.6-1.3.6-1.3l.4.8c0 0-.5.5-1 .5m1.1-3c0 0-.1-.8.2-1.3.4.4.5 1.3.5 1.3h-.7m1.3 2.3l.2-.8c0 0 .6.4.9 1.1-.6.1-1.1-.3-1.1-.3" fill="#fff"/><g fill="#ff5760"><path d="m56.5 17.3c-.5-.3-.7-.9-.4-1.5.3-.6.9-.8 1.4-.5.5.3.7.9.4 1.5-.3.5-.9.8-1.4.5"/><path d="m44.5 20.4c-.6.8-1.5 1-2.1.5-.6-.5-.6-1.5-.1-2.3.6-.8 1.5-1 2.1-.5.7.5.7 1.6.1 2.3"/><path d="m54.6 15.9c.2 1.5-.5 2.9-1.6 3.1-1.1.2-2.2-.9-2.4-2.5-.2-1.5.5-2.9 1.6-3.1 1.1-.2 2.2.9 2.4 2.5"/><path d="m7.5 17.3c.5-.3.6-.9.4-1.5-.3-.5-.9-.8-1.4-.5-.5.3-.7.9-.4 1.5.3.5.9.8 1.4.5"/><ellipse cx="32" cy="17.2" rx="3" ry="3.8"/><path d="m19.5 20.4c.6.8 1.5 1 2.1.5.6-.5.6-1.5.1-2.3-.6-.8-1.5-1-2.1-.5-.7.5-.7 1.6-.1 2.3"/><path d="m9.4 15.9c-.2 1.5.5 2.9 1.6 3.1 1.1.2 2.2-.9 2.4-2.5.2-1.5-.5-2.9-1.6-3.1-1.1-.2-2.2.9-2.4 2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f478-1f3fe.svg b/riot/emojione/svg/1f478-1f3fe.svg new file mode 100644 index 0000000..18edf0c --- /dev/null +++ b/riot/emojione/svg/1f478-1f3fe.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#231f20"/><path d="M10.4,40.7c0,0-4.4-1.1-4.4-7.5c0-5.1,3.3-5.9,3.3-5.9C39.5,27.2,48,21,48,21s1.9,6.2,6.6,6.2 + c0,0,3.4,0.6,3.4,5.9c0,6.4-4.5,7.5-4.5,7.5C53.4,50.3,40.1,62,32,62S10.4,50.3,10.4,40.7z" fill="#b47d56"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#935e3e"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#6235a8"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><circle cx="20" cy="33.5" r="4.5" fill="#6235a8"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#994360"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5 5.5 0 6-1.7 10-2.5 0 0-3.8.5-6.1-.4" fill="#733449"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/><path d="m57.9 14.3c-.8-.4-1.9-.1-2.5.7-.2-.9-.7-1.6-1.3-2.1.6 0 .8-.3.6-.7-.2-.7-.5-1.5-1.9-2.5 0-1.6-1.2-3.1-1.2-3.1-.2-.2-.6-.2-.8.1 0 .1-.9 1.6-.5 3.3-1.5 1.3-1.4 2.7-1.3 3-.2 0-1.7 1-2.1 2.9-.8 0-1.3.6-1.3.6.3-2.2-1.4-4.4-4-4.3-.7-3.9-5.1-5.2-5.9-1.4-.5-1-1.6-1.8-1.6-1.8.4-1.9-1.2-5-2.1-5-.8 0-2.4 3.1-2.1 5 0 0-1.1.8-1.7 1.7-.8-3.8-5.3-2.5-5.9 1.4-2.6-.1-4.3 2-4 4.3 0 0-.5-.5-1.3-.6-.4-1.9-1.8-2.9-2.1-2.9.1-.2.2-1.7-1.3-3 .4-1.7-.5-3.2-.5-3.3-.2-.3-.6-.3-.8-.1 0 0-1.2 1.5-1.2 3.1-1.4.9-1.7 1.7-1.9 2.5-.1.4.1.8.6.7-.6.5-1 1.2-1.3 2.1-.6-.8-1.7-1.1-2.5-.7-1 .5-1.3 1.8-.8 2.9.6 1.4 2.4 1.5 3.3.5.4 2.2 2.7 3.1 4.5 1.6-.3 1 1.4 1 3.2-.6.6.4 1.7.3 2.1.1-.1 1.2.5 3.1 2.6 3.1 1.4 0 2-1 1.9-1.8.8.3 2.3.6 3.4-.1 2.1 1.8 3.6 2.1 3.7 1 .6.5 1.4.8 2.1.8.8 0 1.5-.3 2.2-.8.1 1 1.6.8 3.7-1 1.1.7 2.5.5 3.4.1-.2 1 .4 2 1.8 2 2 0 2.6-1.9 2.6-3.1.4.2 1.5.2 2.1-.1 1.9 1.6 3.5 1.5 3.2.6 1.8 1.5 4.1.6 4.5-1.6.9 1 2.7.9 3.3-.5.5-1.2.1-2.4-.9-3m-47.5-2.4c.2-.7.9-1.1.9-1.1l.2.8c-.1 0-.6.4-1.1.3m2.3-2.6h-.6c0 0 .1-.9.5-1.3.2.6.1 1.3.1 1.3m.1 2.5l.4-.8c0 0 .5.5.6 1.3-.5 0-1-.5-1-.5m.8 1.5c.2 0 .7.1.7.1s-.2.3-.3.8c0-.2-.3-.8-.4-.9m.5 5.8c.2-.9.7-1.5.7-1.5l.7.7c-.1-.1-.7.6-1.4.8m1-3.1c0 0-.2-.9 0-1.7.6.5.9 1.4.9 1.4l-.9.3m1.7 1.8l.2-.9c0 0 .8.2 1.3.9-.6.3-1.5 0-1.5 0m22.2-2.5c-.5-1.1.1-2 2-2.1.8 3.3-1.6 2.9-2 2.1m-7-9.9c.5 0 1.1 2.5 1 3.4h-2c-.1-.9.5-3.4 1-3.4m-9 7.9c1.9.1 2.5 1 2 2.1-.4.7-2.8 1.1-2-2.1m-2.8 3.6c-.3.3-1 0-1-1.4 1.3.4 1.3 1.1 1 1.4m2.4 2.1c-.3-1-1-1.4-1.4-1.6.7-1.1.1-2.3-1.8-2.8.9-1.1 1.5-1.5 2.5-1.5-.7 3.1 1 4.6 3.2 3.3 0 .2 0 .3 0 .5-1 .3-1.8 1.1-2.5 2.1m1 .3c.3-.7 1.6-1.4 1.6-1.4l.4 1.2c0 .1-1 .5-2 .2m2.4-4.7c-.1-1.1-.3-1.9-2.7-2.4.8-3.5 3.6-3.3 3.9-1.6.2 1.2-1.4 1.6-1-.1.2-.6-.7-.9-1-.3-.3.8-.4 3.1 2.1 2.1-.2.6-.5.9-.3 1.2-.2.2-.6.6-1 1.1m1.2.2c.4 1 .2 2.2.2 2.2l-1.2-.2c0-.1.3-1.2 1-2m-.2 4.6l.8-.9c0 0 .8.8 1 1.9-.9-.1-1.8-1-1.8-1m1.4-3.8c0-.8-.5-1.6-.5-1.6h1.3c0 0-.6.7-.8 1.6m-.3-2.6c.3-1.5 2.2-2.7 2.2-2.7l1 1.8c0 0-1.3 1-3.2.9m3.9-1.9c-.2-.3-.5-.7-.6-1.2.2 0 1.1 0 1.3 0-.2.5-.5.9-.7 1.2m.7 1l1-1.8c0 0 2 1.3 2.2 2.7-1.9.1-3.2-.9-3.2-.9m2.1 1.9h1.3c0 0-.4.8-.5 1.6-.2-.9-.8-1.6-.8-1.6m.4 6.4c.2-1.1 1-1.9 1-1.9l.8.9c0 0-.9.9-1.8 1m1.4-3.5c0 0-.2-1.1.2-2.2.7.8 1 1.9 1 1.9l-1.2.3m.4-3.3c.2-.3-.1-.7-.3-1.2 2.5 1.1 2.4-1.2 2.1-2.1-.2-.6-1.1-.3-1 .3.4 1.6-1.3 1.2-1 .1.3-1.7 3.2-1.9 3.9 1.6-2.4.4-2.6 1.3-2.7 2.4-.4-.6-.8-1-1-1.1m1.4 5.6l.4-1.2c0 0 1.3.6 1.6 1.4-1 .2-2-.2-2-.2m4.4-1.8c-.4.2-1.1.6-1.4 1.6-.6-1-1.4-1.8-2.5-2.1 0-.2 0-.3-.1-.5 2.2 1.3 4-.2 3.2-3.3 1 0 1.7.4 2.5 1.5-1.8.5-2.4 1.7-1.7 2.8m1-.5c-.3-.3-.3-1 1-1.4 0 1.4-.7 1.7-1 1.4m1.9.9c.6-.8 1.3-.9 1.3-.9l.2.9c0 0-.9.3-1.5 0m3.2-3.5c.2.7 0 1.7 0 1.7l-.9-.3c.1 0 .3-.9.9-1.4m-.3 3.9l.7-.7c0 0 .5.7.7 1.5-.8-.1-1.4-.8-1.4-.8m1.3-4.1c-.1-.5-.3-.8-.3-.8s.5 0 .7-.1c0 .2-.3.8-.4.9m.3-1.8c.1-.8.6-1.3.6-1.3l.4.8c0 0-.5.5-1 .5m1.1-3c0 0-.1-.8.2-1.3.4.4.5 1.3.5 1.3h-.7m1.3 2.3l.2-.8c0 0 .6.4.9 1.1-.6.1-1.1-.3-1.1-.3" fill="#fff"/><g fill="#ff5760"><path d="m56.5 17.3c-.5-.3-.7-.9-.4-1.5.3-.6.9-.8 1.4-.5.5.3.7.9.4 1.5-.3.5-.9.8-1.4.5"/><path d="m44.5 20.4c-.6.8-1.5 1-2.1.5-.6-.5-.6-1.5-.1-2.3.6-.8 1.5-1 2.1-.5.7.5.7 1.6.1 2.3"/><path d="m54.6 15.9c.2 1.5-.5 2.9-1.6 3.1-1.1.2-2.2-.9-2.4-2.5-.2-1.5.5-2.9 1.6-3.1 1.1-.2 2.2.9 2.4 2.5"/><path d="m7.5 17.3c.5-.3.6-.9.4-1.5-.3-.5-.9-.8-1.4-.5-.5.3-.7.9-.4 1.5.3.5.9.8 1.4.5"/><ellipse cx="32" cy="17.2" rx="3" ry="3.8"/><path d="m19.5 20.4c.6.8 1.5 1 2.1.5.6-.5.6-1.5.1-2.3-.6-.8-1.5-1-2.1-.5-.7.5-.7 1.6-.1 2.3"/><path d="m9.4 15.9c-.2 1.5.5 2.9 1.6 3.1 1.1.2 2.2-.9 2.4-2.5.2-1.5-.5-2.9-1.6-3.1-1.1-.2-2.2.9-2.4 2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f478-1f3ff.svg b/riot/emojione/svg/1f478-1f3ff.svg new file mode 100644 index 0000000..6b8053d --- /dev/null +++ b/riot/emojione/svg/1f478-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#231f20"/><path d="m10.4 40.7c0 0-4.4-1.1-4.4-7.5 0-5.1 3.3-5.9 3.3-5.9 30.2-.1 38.7-6.3 38.7-6.3s1.9 6.2 6.6 6.2c0 0 3.4.6 3.4 5.9 0 6.4-4.5 7.5-4.5 7.5-.1 9.7-13.4 21.4-21.5 21.4-8.1 0-21.6-11.7-21.6-21.3" fill="#8a6859"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#705041"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#6235a8"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><circle cx="20" cy="33.5" r="4.5" fill="#6235a8"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#994360"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5 5.5 0 6-1.7 10-2.5 0 0-3.8.5-6.1-.4" fill="#733449"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/><path d="m57.9 14.3c-.8-.4-1.9-.1-2.5.7-.2-.9-.7-1.6-1.3-2.1.6 0 .8-.3.6-.7-.2-.7-.5-1.5-1.9-2.5 0-1.6-1.2-3.1-1.2-3.1-.2-.2-.6-.2-.8.1 0 .1-.9 1.6-.5 3.3-1.5 1.3-1.4 2.7-1.3 3-.2 0-1.7 1-2.1 2.9-.8 0-1.3.6-1.3.6.3-2.2-1.4-4.4-4-4.3-.7-3.9-5.1-5.2-5.9-1.4-.5-1-1.6-1.8-1.6-1.8.4-1.9-1.2-5-2.1-5s-2.4 3.1-2.1 5c0 0-1.1.8-1.7 1.7-.8-3.8-5.3-2.5-5.9 1.4-2.6-.1-4.3 2-4 4.3 0 0-.5-.5-1.3-.6-.4-1.9-1.8-2.9-2.1-2.9.1-.2.2-1.7-1.3-3 .4-1.7-.5-3.2-.5-3.3-.2-.3-.6-.3-.8-.1 0 0-1.2 1.5-1.2 3.1-1.4.9-1.7 1.7-1.9 2.5-.1.4.1.8.6.7-.6.5-1 1.2-1.3 2.1-.6-.8-1.7-1.1-2.5-.7-1 .5-1.3 1.8-.8 2.9.6 1.4 2.4 1.5 3.3.5.4 2.2 2.7 3.1 4.5 1.6-.3 1 1.4 1 3.2-.6.6.4 1.7.3 2.1.1-.1 1.2.5 3.1 2.6 3.1 1.4 0 2-1 1.9-1.8.8.3 2.3.6 3.4-.1 2.1 1.8 3.6 2.1 3.7 1 .6.5 1.4.8 2.1.8.8 0 1.5-.3 2.2-.8.1 1 1.6.8 3.7-1 1.1.7 2.5.5 3.4.1-.2 1 .4 2 1.8 2 2 0 2.6-1.9 2.6-3.1.4.2 1.5.2 2.1-.1 1.9 1.6 3.5 1.5 3.2.6 1.8 1.5 4.1.6 4.5-1.6.9 1 2.7.9 3.3-.5.5-1.2.1-2.4-.9-3m-47.5-2.4c.2-.7.9-1.1.9-1.1l.2.8c-.1 0-.6.4-1.1.3m2.3-2.6h-.6c0 0 .1-.9.5-1.3.2.6.1 1.3.1 1.3m.1 2.5l.4-.8c0 0 .5.5.6 1.3-.5 0-1-.5-1-.5m.8 1.5c.2 0 .7.1.7.1s-.2.3-.3.8c0-.2-.3-.8-.4-.9m.5 5.8c.2-.9.7-1.5.7-1.5l.7.7c-.1-.1-.7.6-1.4.8m1-3.1c0 0-.2-.9 0-1.7.6.5.9 1.4.9 1.4l-.9.3m1.7 1.8l.2-.9c0 0 .8.2 1.3.9-.6.3-1.5 0-1.5 0m22.2-2.5c-.5-1.1.1-2 2-2.1.8 3.3-1.6 2.9-2 2.1m-7-9.9c.5 0 1.1 2.5 1 3.4h-2c-.1-.9.5-3.4 1-3.4m-9 7.9c1.9.1 2.5 1 2 2.1-.4.7-2.8 1.1-2-2.1m-2.8 3.6c-.3.3-1 0-1-1.4 1.3.4 1.3 1.1 1 1.4m2.4 2.1c-.3-1-1-1.4-1.4-1.6.7-1.1.1-2.3-1.8-2.8.9-1.1 1.5-1.5 2.5-1.5-.7 3.1 1 4.6 3.2 3.3 0 .2 0 .3 0 .5-1 .3-1.8 1.1-2.5 2.1m1 .3c.3-.7 1.6-1.4 1.6-1.4l.4 1.2c0 .1-1 .5-2 .2m2.4-4.7c-.1-1.1-.3-1.9-2.7-2.4.8-3.5 3.6-3.3 3.9-1.6.2 1.2-1.4 1.6-1-.1.2-.6-.7-.9-1-.3-.3.8-.4 3.1 2.1 2.1-.2.6-.5.9-.3 1.2-.2.2-.6.6-1 1.1m1.2.2c.4 1 .2 2.2.2 2.2l-1.2-.2c0-.1.3-1.2 1-2m-.2 4.6l.8-.9c0 0 .8.8 1 1.9-.9-.1-1.8-1-1.8-1m1.4-3.8c0-.8-.5-1.6-.5-1.6h1.3c0 0-.6.7-.8 1.6m-.3-2.6c.3-1.5 2.2-2.7 2.2-2.7l1 1.8c0 0-1.3 1-3.2.9m3.9-1.9c-.2-.3-.5-.7-.6-1.2.2 0 1.1 0 1.3 0-.2.5-.5.9-.7 1.2m.7 1l1-1.8c0 0 2 1.3 2.2 2.7-1.9.1-3.2-.9-3.2-.9m2.1 1.9h1.3c0 0-.4.8-.5 1.6-.2-.9-.8-1.6-.8-1.6m.4 6.4c.2-1.1 1-1.9 1-1.9l.8.9c0 0-.9.9-1.8 1m1.4-3.5c0 0-.2-1.1.2-2.2.7.8 1 1.9 1 1.9l-1.2.3m.4-3.3c.2-.3-.1-.7-.3-1.2 2.5 1.1 2.4-1.2 2.1-2.1-.2-.6-1.1-.3-1 .3.4 1.6-1.3 1.2-1 .1.3-1.7 3.2-1.9 3.9 1.6-2.4.4-2.6 1.3-2.7 2.4-.4-.6-.8-1-1-1.1m1.4 5.6l.4-1.2c0 0 1.3.6 1.6 1.4-1 .2-2-.2-2-.2m4.4-1.8c-.4.2-1.1.6-1.4 1.6-.6-1-1.4-1.8-2.5-2.1 0-.2 0-.3-.1-.5 2.2 1.3 4-.2 3.2-3.3 1 0 1.7.4 2.5 1.5-1.8.5-2.4 1.7-1.7 2.8m1-.5c-.3-.3-.3-1 1-1.4 0 1.4-.7 1.7-1 1.4m1.9.9c.6-.8 1.3-.9 1.3-.9l.2.9c0 0-.9.3-1.5 0m3.2-3.5c.2.7 0 1.7 0 1.7l-.9-.3c.1 0 .3-.9.9-1.4m-.3 3.9l.7-.7c0 0 .5.7.7 1.5-.8-.1-1.4-.8-1.4-.8m1.3-4.1c-.1-.5-.3-.8-.3-.8s.5 0 .7-.1c0 .2-.3.8-.4.9m.3-1.8c.1-.8.6-1.3.6-1.3l.4.8c0 0-.5.5-1 .5m1.1-3c0 0-.1-.8.2-1.3.4.4.5 1.3.5 1.3h-.7m1.3 2.3l.2-.8c0 0 .6.4.9 1.1-.6.1-1.1-.3-1.1-.3" fill="#fff"/><g fill="#ff5760"><path d="m56.5 17.3c-.5-.3-.7-.9-.4-1.5.3-.6.9-.8 1.4-.5.5.3.7.9.4 1.5-.3.5-.9.8-1.4.5"/><path d="m44.5 20.4c-.6.8-1.5 1-2.1.5-.6-.5-.6-1.5-.1-2.3.6-.8 1.5-1 2.1-.5.7.5.7 1.6.1 2.3"/><path d="m54.6 15.9c.2 1.5-.5 2.9-1.6 3.1-1.1.2-2.2-.9-2.4-2.5-.2-1.5.5-2.9 1.6-3.1 1.1-.2 2.2.9 2.4 2.5"/><path d="m7.5 17.3c.5-.3.6-.9.4-1.5-.3-.5-.9-.8-1.4-.5-.5.3-.7.9-.4 1.5.3.5.9.8 1.4.5"/><ellipse cx="32" cy="17.2" rx="3" ry="3.8"/><path d="m19.5 20.4c.6.8 1.5 1 2.1.5.6-.5.6-1.5.1-2.3-.6-.8-1.5-1-2.1-.5-.7.5-.7 1.6-.1 2.3"/><path d="m9.4 15.9c-.2 1.5.5 2.9 1.6 3.1 1.1.2 2.2-.9 2.4-2.5.2-1.5-.5-2.9-1.6-3.1-1.1-.2-2.2.9-2.4 2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f478.svg b/riot/emojione/svg/1f478.svg new file mode 100644 index 0000000..939f660 --- /dev/null +++ b/riot/emojione/svg/1f478.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C13.9,2,4,13.4,4,28.5V62h56V28.5c0-22.4-15.2-22-15.2-22S43.7,2,32,2z" fill="#ffb300"/><path d="m10.4 40.7c0 0-4.4-1.1-4.4-7.5 0-5.1 3.3-5.9 3.3-5.9 30.2-.1 38.7-6.3 38.7-6.3s1.9 6.2 6.6 6.2c0 0 3.4.6 3.4 5.9 0 6.4-4.5 7.5-4.5 7.5-.1 9.7-13.4 21.4-21.5 21.4-8.1 0-21.6-11.7-21.6-21.3" fill="#ffdd67"/><path d="m32 47c-4.2 0-6.3-3-4.2-3s6.3 0 8.4 0c2.1 0 0 3-4.2 3" fill="#eba352"/><path d="m38.3 38.2c-1.5 0-1.3-1.8-1.3-1.8 2.2-11.5 15-5.4 15-5.4 1 2-2.3 6.9-3.2 7.2-4.2 1-10.5 0-10.5 0" fill="#f5f5f5"/><path d="m48.5 33.5c0 2.5-2 4.5-4.5 4.5-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5 2.5 0 4.5 2 4.5 4.5" fill="#6235a8"/><circle cx="44" cy="33.5" r="1.5" fill="#2b2925"/><path d="m37 36.3c2.2-13.7 13.5-4.6 18-6.5-4.5 4.3-13.5-4.9-18 6.5" fill="#3b3226"/><path d="m25.7 38.2c1.5 0 1.3-1.8 1.3-1.8-2.2-11.5-15-5.4-15-5.4-1 2 2.3 6.9 3.2 7.2 4.2 1 10.5 0 10.5 0" fill="#f5f5f5"/><path d="m15.5 33.5c0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-2.5-2-4.5-4.5-4.5-2.5 0-4.5 2-4.5 4.5" fill="#6235a8"/><path d="m27 36.3c-2.2-13.7-13.5-4.6-18-6.5 4.5 4.3 13.5-4.9 18 6.5" fill="#3b3226"/><path d="M32,52l-10-1.5c6,8.5,14,8.5,20,0L32,52z" fill="#f085a9"/><path d="m35.9 50.1c-2.9-1.1-3.9.7-3.9.7s-1-1.8-3.9-.7c-2.3.9-6.1.4-6.1.4 4 .9 4.5 2.5 10 2.5s6-1.7 10-2.5c0 0-3.8.5-6.1-.4" fill="#d46c8f"/><circle cx="20" cy="33.5" r="1.5" fill="#2b2925"/><path d="m57.9 14.3c-.8-.4-1.9-.1-2.5.7-.2-.9-.7-1.6-1.3-2.1.6 0 .8-.3.6-.7-.2-.7-.5-1.5-1.9-2.5 0-1.6-1.2-3.1-1.2-3.1-.2-.2-.6-.2-.8.1 0 .1-.9 1.6-.5 3.3-1.5 1.3-1.4 2.7-1.3 3-.2 0-1.7 1-2.1 2.9-.8 0-1.3.6-1.3.6.3-2.2-1.4-4.4-4-4.3-.7-3.9-5.1-5.2-5.9-1.4-.5-1-1.6-1.8-1.6-1.8.4-1.9-1.2-5-2.1-5s-2.4 3.1-2.1 5c0 0-1.1.8-1.7 1.7-.8-3.8-5.3-2.5-5.9 1.4-2.6-.1-4.3 2-4 4.3 0 0-.5-.5-1.3-.6-.4-1.9-1.8-2.9-2.1-2.9.1-.2.2-1.7-1.3-3 .4-1.7-.5-3.2-.5-3.3-.2-.3-.6-.3-.8-.1 0 0-1.2 1.5-1.2 3.1-1.4.9-1.7 1.7-1.9 2.5-.1.4.1.8.6.7-.6.5-1 1.2-1.3 2.1-.5-.7-1.6-1-2.5-.6-1 .5-1.3 1.8-.8 2.9.6 1.4 2.4 1.5 3.3.5.4 2.2 2.7 3.1 4.5 1.6-.3 1 1.4 1 3.2-.6.6.4 1.7.3 2.1.1-.1 1.2.5 3.1 2.6 3.1 1.4 0 2-1 1.9-1.8.8.3 2.3.6 3.4-.1 2.1 1.8 3.6 2.1 3.7 1 .6.5 1.4.8 2.1.8.8 0 1.5-.3 2.2-.8.1 1 1.6.8 3.7-1 1.1.7 2.5.5 3.4.1-.2.9.4 1.9 1.8 1.9 2 0 2.6-1.9 2.6-3.1.4.2 1.5.2 2.1-.1 1.9 1.6 3.5 1.5 3.2.6 1.8 1.5 4.1.6 4.5-1.6.9 1 2.7.9 3.3-.5.5-1.2.1-2.4-.9-3m-47.5-2.4c.2-.7.9-1.1.9-1.1l.2.8c-.1 0-.6.4-1.1.3m2.3-2.6h-.6c0 0 .1-.9.5-1.3.2.6.1 1.3.1 1.3m.1 2.5l.4-.8c0 0 .5.5.6 1.3-.5 0-1-.5-1-.5m.8 1.5c.2 0 .7.1.7.1s-.2.3-.3.8c0-.2-.3-.8-.4-.9m.5 5.8c.2-.9.7-1.5.7-1.5l.7.7c-.1-.1-.7.6-1.4.8m1-3.1c0 0-.2-.9 0-1.7.6.5.9 1.4.9 1.4l-.9.3m1.7 1.8l.2-.9c0 0 .8.2 1.3.9-.6.3-1.5 0-1.5 0m22.2-2.5c-.5-1.1.1-2 2-2.1.8 3.3-1.6 2.9-2 2.1m-7-9.9c.5 0 1.1 2.5 1 3.4h-2c-.1-.9.5-3.4 1-3.4m-9 7.9c1.9.1 2.5 1 2 2.1-.4.7-2.8 1.1-2-2.1m-2.8 3.6c-.3.3-1 0-1-1.4 1.3.4 1.3 1.1 1 1.4m2.4 2.1c-.3-1-1-1.4-1.4-1.6.7-1.1.1-2.3-1.8-2.8.9-1.1 1.5-1.5 2.5-1.5-.7 3.1 1 4.6 3.2 3.3 0 .2 0 .3 0 .5-1 .3-1.8 1.1-2.5 2.1m1 .3c.3-.7 1.6-1.4 1.6-1.4l.4 1.2c0 .1-1 .5-2 .2m2.4-4.7c-.1-1.1-.3-1.9-2.7-2.4.8-3.5 3.6-3.3 3.9-1.6.2 1.2-1.4 1.6-1-.1.2-.6-.7-.9-1-.3-.3.8-.4 3.1 2.1 2.1-.2.6-.5.9-.3 1.2-.2.2-.6.6-1 1.1m1.2.2c.4 1 .2 2.2.2 2.2l-1.2-.2c0-.1.3-1.2 1-2m-.2 4.6l.8-.9c0 0 .8.8 1 1.9-.9-.1-1.8-1-1.8-1m1.4-3.8c0-.8-.5-1.6-.5-1.6h1.3c0 0-.6.7-.8 1.6m-.3-2.6c.3-1.5 2.2-2.7 2.2-2.7l1 1.8c0 0-1.3 1-3.2.9m3.9-1.9c-.2-.3-.5-.7-.7-1.2.2 0 1.1 0 1.3 0-.1.5-.4.9-.6 1.2m.7 1l1-1.8c0 0 2 1.3 2.2 2.7-1.9.1-3.2-.9-3.2-.9m2.1 1.9h1.3c0 0-.4.8-.5 1.6-.2-.9-.8-1.6-.8-1.6m.4 6.4c.2-1.1 1-1.9 1-1.9l.8.9c0 0-.9.9-1.8 1m1.4-3.5c0 0-.2-1.1.2-2.2.7.8 1 1.9 1 1.9l-1.2.3m.4-3.3c.2-.3-.1-.7-.3-1.2 2.5 1.1 2.4-1.2 2.1-2.1-.2-.6-1.1-.3-1 .3.4 1.6-1.3 1.2-1 .1.3-1.7 3.2-1.9 3.9 1.6-2.4.4-2.6 1.3-2.7 2.4-.4-.6-.8-1-1-1.1m1.4 5.6l.4-1.2c0 0 1.3.6 1.6 1.4-1 .2-2-.2-2-.2m4.4-1.8c-.4.2-1.1.6-1.4 1.6-.6-1-1.4-1.8-2.5-2.1 0-.2 0-.3 0-.5 2.2 1.3 4-.2 3.2-3.3 1 0 1.7.4 2.5 1.5-1.9.5-2.5 1.7-1.8 2.8m1-.5c-.3-.3-.3-1 1-1.4 0 1.4-.7 1.7-1 1.4m1.9.9c.6-.8 1.3-.9 1.3-.9l.2.9c0 0-.9.3-1.5 0m3.2-3.5c.2.7 0 1.7 0 1.7l-.9-.3c.1 0 .3-.9.9-1.4m-.3 3.9l.7-.7c0 0 .5.7.7 1.5-.8-.1-1.4-.8-1.4-.8m1.3-4.1c-.1-.5-.3-.8-.3-.8s.5 0 .7-.1c0 .2-.3.8-.4.9m.3-1.8c.1-.8.6-1.3.6-1.3l.4.8c0 0-.5.5-1 .5m1.1-3c0 0-.1-.8.2-1.3.4.4.5 1.3.5 1.3h-.7m1.3 2.3l.2-.8c0 0 .6.4.9 1.1-.6.1-1.1-.3-1.1-.3" fill="#fff"/><g fill="#ff5760"><path d="m56.5 17.3c-.5-.3-.7-.9-.4-1.5.3-.6.9-.8 1.4-.5.5.3.7.9.4 1.5-.3.5-.9.8-1.4.5"/><path d="m44.5 20.4c-.6.8-1.5 1-2.1.5-.6-.5-.6-1.5-.1-2.3.6-.8 1.5-1 2.1-.5.7.5.7 1.6.1 2.3"/><path d="m54.6 15.9c.2 1.5-.5 2.9-1.6 3.1-1.1.2-2.2-.9-2.4-2.5-.2-1.5.5-2.9 1.6-3.1 1.1-.2 2.2.9 2.4 2.5"/><path d="m7.5 17.3c.5-.3.6-.9.4-1.5-.3-.5-.9-.8-1.4-.5-.5.3-.7.9-.4 1.5.3.5.9.8 1.4.5"/><ellipse cx="32" cy="17.2" rx="3" ry="3.8"/><path d="m19.5 20.4c.6.8 1.5 1 2.1.5.6-.5.6-1.5.1-2.3-.6-.8-1.5-1-2.1-.5-.7.5-.7 1.6-.1 2.3"/><path d="m9.4 15.9c-.2 1.5.5 2.9 1.6 3.1 1.1.2 2.2-.9 2.4-2.5.2-1.5-.5-2.9-1.6-3.1-1.1-.2-2.2.9-2.4 2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f479.svg b/riot/emojione/svg/1f479.svg new file mode 100644 index 0000000..4aa1df9 --- /dev/null +++ b/riot/emojione/svg/1f479.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58 21.2c3.9-2.6 4-6.4 4-6.4-3.9-.2-3.8-4.2-7.4-7.8-6.9-7-20.5-4.7-22.6-1.5-2.1-3.2-15.7-5.5-22.6 1.5-3.6 3.7-3.5 7.7-7.4 7.8 0 0 .1 3.8 4 6.4 0 0-4.1 5.9-3.4 14.1 0 0 1.6-4 5.5-4.7-4.5 3.8-.9 14.4-4.2 18.2 0 0 4.6-2 6.5-3.3-.7 5.9.9 8.2.9 11.1 4.1-1.3 5.7-7.4 5.7-7.4 0 7.5 2.6 7.2 2.6 11.2 0 0 5.5-2.7 7.4-6.5.7 3.5 3.3 5.9 5.2 8.1 1.9-2.2 4.4-4.6 5.2-8.1 1.9 3.7 7.4 6.5 7.4 6.5 0-4 2.6-3.7 2.6-11.2 0 0 1.6 6 5.7 7.4 0-2.9 1.6-5.2.9-11.1 1.9 1.3 6.5 3.3 6.5 3.3-3.3-3.9.3-14.5-4.2-18.2 3.8.8 5.5 4.7 5.5 4.7.3-8.3-3.8-14.1-3.8-14.1" fill="#454749"/><path d="m52.1 31.9c0 5.5-5.5 8.6-5.5 15.1 0 9-9.9 1.5-14.5 1.5-4.8 0-14.8 7.4-14.8-1.7 0-6.3-5.3-9.5-5.3-14.9 0-2.5 2.7-5.7 2.8-7.8.2-3.8-2.3-7.8-2.1-10.2.8-12.9 19.3 6.1 19.3 6.1s18.5-19 19.4-5.9c.2 2.3-2.3 6.4-2.2 10.1.2 2 2.9 5.2 2.9 7.7" fill="#f46767"/><g fill="#ffce31"><path d="m23.1 9.3c-3.9-2.1-6.5-7.3-6.5-7.3s-4.3 14.8 5.4 15c3.2 0 5.7-5.3 1.1-7.7"/><path d="m40.9 9.3c3.9-2.1 6.5-7.3 6.5-7.3s4.3 14.8-5.5 15c-3.1 0-5.6-5.3-1-7.7"/></g><path d="m15.2 31.9c-3 5.2 3.1 7.5 3.1 11.8 0 9.6 6.1 2.7 13.7 2.7 7.6 0 13.7 7 13.7-2.7 0-4.4 6.2-6.5 3.1-11.8-2.7-4.8-1.9 5.8-16.8 5.8-15 0-14-10.6-16.8-5.8" fill="#454749"/><g fill="#fff"><path d="m17.4 32.8c-.3 0-.6.1-.9.2l-.2.1c-5.9 3.2-7 3.8-6.7 4.7.1.6.9.6 1.3.6 1.2 0 3.5-.4 7-.9 1.1-.2 1.8-1.1 1.7-2.3-.3-1.2-1.1-2.4-2.2-2.4"/><path d="m47.7 33.2l-.2-.1c-.3-.2-.6-.2-.9-.2-1.2 0-1.9 1.2-2 2.3-.1 1.2.5 2.1 1.7 2.3 3.5.6 5.8.9 7 .9.4 0 1.1 0 1.2-.6.2-.8-.9-1.4-6.8-4.6"/><path d="m42 44.9c-2 1.2.8 4.6 2.4 2.8 7.4-8.6 6.3-7.9-2.4-2.8"/><path d="m19.6 47.7c1.6 1.9 4.5-1.6 2.4-2.8-8.7-5.1-9.7-5.8-2.4 2.8"/><path d="m24.6 38.8c1.5-1.3-2.4-3-3.2-1.3-4 7.7-3.2 7 3.2 1.3"/><path d="m42.6 37.5c-.9-1.7-4.7 0-3.2 1.3 6.4 5.7 7.2 6.4 3.2-1.3"/><path d="m40.4 46.2c-.6.4-2.6.4-3.2 0-.6-.4-.5-2 0-2.5.6-.5 2.6-.5 3.2 0 .5.4.6 2.1 0 2.5"/><path d="m26.8 46.2c-.6.4-2.6.4-3.2 0-.6-.4-.5-2 0-2.5.6-.5 2.6-.5 3.2 0 .5.4.6 2.1 0 2.5"/></g><path d="m35.7 45.3c-1.3.8-6 .8-7.4 0-.7-.4 0-1.9.6-2.3 1.3-.8 4.9-.8 6.3 0 .6.4 1.2 1.9.5 2.3" fill="#bc2e2e"/><g fill="#fff"><path d="m26.3 37.9c2.2.9 9 1 11.4 0 1.2-.2 1 1.3 0 2-1.9 1.9-9.5 1.9-11.3 0-1.1-.7-1.2-2.1-.1-2"/><path d="m28 25c0 4.8-10.6 4.8-10.6 0 0-6.5 10.6-6.5 10.6 0"/></g><path d="m24.9 25c0 2.9-4.4 2.9-4.4 0 0-2.9 4.4-2.9 4.4 0" fill="#454749"/><path d="m46.6 25c0 4.8-10.6 4.8-10.6 0 0-6.5 10.6-6.5 10.6 0" fill="#fff"/><g fill="#454749"><path d="m43.5 25c0 2.9-4.4 2.9-4.4 0 0-2.9 4.4-2.9 4.4 0"/><path d="m11.7 17.5c0 0 5.8 2.2 10.7 5.9 5.7 4.3 8.5 1.4 6-1.6-1.8-2.4-7.5-6.2-16.7-4.3"/><path d="m35.6 21.7c-2.5 3.1.4 5.9 6 1.6 4.9-3.7 10.7-5.9 10.7-5.9-9.2-1.8-14.9 2-16.7 4.3"/></g><path d="m35.9 31.4c-.3-1.3-1.2-6.1-1.2-7.2.2-3.8-5.6-3.8-5.4 0 .1 1.1-.9 5.9-1.2 7.2-3.3-.3-5.1 3.9-.3 3.9 1.9 0 2.3 1.7 4.2 1.7s2.3-1.7 4.2-1.7c4.7 0 2.9-4.2-.3-3.9" fill="#bc2e2e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47a.svg b/riot/emojione/svg/1f47a.svg new file mode 100644 index 0000000..a20c6c4 --- /dev/null +++ b/riot/emojione/svg/1f47a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m46.1 11.4c8.3 0 9.4 3.3 1.3 11.6-2.8 2.8-1.1 6.7.5 9.1 1.6 2.3 4.5 4.7-.5 8.8-2.9 2.4-3.3 5.3 0 11.8 3.3 6.5-8.3 3.6-18 6.4-12.8 3.6-16 7.3-17.4-11.9-.9-11.5-2.6-7.1-6-16.7-1.8-5.1.3-8.2 5.1-10.1 4-1.6-8.4-9.1-.9-15.8 9.5-8.5 23 6.8 35.9 6.8" fill="#f46767"/><ellipse cx="41.6" cy="25.6" rx="4" ry="3.9" fill="#fff"/><ellipse cx="40.3" cy="25.6" rx="1.7" ry="1.6" fill="#454749"/><ellipse cx="23.1" cy="23" rx="6.3" ry="6.2" fill="#fff"/><g fill="#454749"><ellipse cx="21" cy="23" rx="2.6" ry="2.6"/><g stroke="#454749" stroke-linejoin="round" stroke-linecap="round" stroke-width="3" stroke-miterlimit="10"><path d="m15.7 14.7l.1-.1.1-.1.3-.1c.2-.1.4-.1.6-.2.4-.1.7-.2 1.1-.2.8-.1 1.5-.1 2.3-.1 1.5.1 3.1.5 4.5 1.2 1.4.7 2.7 1.6 3.7 2.7.5.6 1 1.2 1.4 1.8.2.3.4.6.5 1 .1.2.2.3.2.5l.1.3v.1.1l-.1.1c-.5-.5-.9-1.1-1.4-1.5-.5-.5-1-1-1.6-1.4-1.1-.9-2.3-1.6-3.6-2.3-1.3-.6-2.6-1.1-4-1.4-.7-.2-1.4-.3-2.1-.3-.7-.1-1.4-.1-2.1-.1z"/><path d="m47.4 19.6l-.2-.1-.2-.1c-.1 0-.2-.1-.4-.1-.2-.1-.5-.1-.7-.2-.5-.1-1-.1-1.5 0-1 .1-2 .4-2.9 1-.9.5-1.8 1.3-2.4 2.1-.3.4-.6.9-.9 1.4-.1.3-.2.5-.4.8-.1.1-.1.3-.1.4l-.1.2v.1.1l.1.1c.3-.4.6-.8 1-1.2.3-.4.7-.8 1-1.1.7-.7 1.5-1.3 2.4-1.8.8-.5 1.7-.9 2.6-1.1.5-.1.9-.2 1.4-.3.5-.1.9-.1 1.4-.1v-.1z"/><path d="m46.3 34.4l-.1.2-.1.2c0 .1-.1.2-.2.3-.1.2-.2.4-.4.5-.3.3-.6.7-.9.9-.7.6-1.5 1-2.4 1.3-.9.3-1.8.4-2.7.3-.5 0-.9-.1-1.4-.2-.2-.1-.4-.1-.7-.2-.1 0-.2-.1-.3-.1l-.2-.1h-.1-.1v-.1c.4.1.9.1 1.3.1.4 0 .9 0 1.3 0 .8-.1 1.7-.2 2.5-.4.8-.2 1.6-.6 2.3-1 .4-.2.7-.4 1-.7.5-.6.8-.8 1.2-1z"/><path d="m11 28.4l.1.2.1.2.2.4c.1.2.3.5.4.7.3.4.6.9 1 1.3.7.8 1.5 1.6 2.3 2.3 1.7 1.4 3.6 2.6 5.6 3.4 2 .8 4.1 1.3 6.1 1.4 1 0 2 0 2.9-.1.5-.1.9-.2 1.4-.3.2-.1.5-.1.7-.2l.3-.1.2-.1.2-.1v-.2c-.9 0-1.9 0-2.8-.1-.9-.1-1.9-.2-2.8-.4-1.9-.4-3.8-.9-5.6-1.7-1.8-.7-3.6-1.7-5.3-2.8-.8-.6-1.6-1.2-2.4-1.8-.8-.6-1.5-1.3-2.3-2h-.3z"/></g></g><path d="m32.7 23.5c.2-2.7 2.1 4.5 5.4 6 5.9 2.6 10.2-2.7 15-4.1s8.1 7.5 3.3 9.4c-4.8 1.9-20 2.5-23-2-2.2-3.2-5.9-.3-2.1 1.1 1.6.6-6.5.8-4.3-3.7 1.4-3 5.4-2.4 5.7-6.7" fill="#c94747"/><path d="m43.5 45.9c0-2.1-2.1-3.6-9.5-4.3-7.4-.7-13.6 2.7-13.6 7.7.1 7.9 7.1.1 13.1-.7 6.7-1.1 10-.7 10-2.7z" fill="#454749" stroke="#454749" stroke-linejoin="round" stroke-linecap="round" stroke-width="3" stroke-miterlimit="10"/><g fill="#ffce31"><path d="m20.4 49.2c0 3.6 1.5 3.9 3.7 3.2l-1.2-8.1c-1.6 1.3-2.5 3-2.5 4.9"/><path d="m23.6 43.8l1.2 8.4c.9-.4 2-1 3.1-1.5l-1.2-8.4c-1.2.3-2.2.8-3.1 1.5"/><path d="m27.4 42l1.2 8.2c1-.5 2.1-1 3.1-1.3l-1.1-7.4c-1.1.1-2.2.3-3.2.5"/><path d="m34 41.5c-.9-.1-1.7-.1-2.6-.1l1.1 7.3c.4-.1.7-.2 1.1-.2.8-.1 1.5-.2 2.2-.3l-1-6.6c-.3 0-.6 0-.8-.1"/><path d="m35.5 41.7l.9 6.4c1.3-.1 2.3-.2 3.3-.3l-.8-5.5c-.9-.2-2.1-.4-3.4-.6"/><path d="m43.5 45.9c0-1.4-1-2.5-3.8-3.4l.7 5.2c2.1-.3 3.1-.7 3.1-1.8"/></g><path d="m38.8 58.3c4.9.5 9.1 3.7 9.1 3.7-2.9-11.4-8.2-12.4-10.7-11.6-3.3 1.2-4 7.4 1.6 7.9" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47b.svg b/riot/emojione/svg/1f47b.svg new file mode 100644 index 0000000..37f0680 --- /dev/null +++ b/riot/emojione/svg/1f47b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 3c-11.5 0-21.2 11.5-20.6 24.1.2 3.4.9 28.9 3.9 33 2.4 3.3 5.3-3.4 9.1-3.4 3.8 0 3.8 4.2 7.6 4.2 3.8 0 3.8-4.2 7.6-4.2 3.8 0 6.7 6.7 9.1 3.4 3-4.1 3.7-29.6 3.9-33 .6-12.6-9.1-24.1-20.6-24.1" fill="#6adbc6"/><path d="m47.2 62c-1.3 0-2.5-1-3.7-2.1-1.3-1.1-2.6-2.2-3.9-2.2-1.5 0-2.2.8-3.1 1.8-1 1.1-2.2 2.4-4.5 2.4-2.3 0-3.6-1.3-4.5-2.4-.9-1-1.6-1.8-3.1-1.8-1.3 0-2.6 1.1-3.9 2.2-1.2 1.1-2.4 2.1-3.7 2.1-.9 0-1.6-.4-2.3-1.3-1.9-2.7-3.2-12.8-4-31.9 0-.7-.1-1.3-.1-1.7-.4-6.8 2.1-13.5 6.8-18.4 4.1-4.3 9.4-6.7 14.8-6.7s10.7 2.4 14.8 6.7c4.7 4.9 7.2 11.6 6.8 18.4 0 .3 0 .9-.1 1.6-.8 19.1-2.1 29.3-4 32-.6.9-1.4 1.3-2.3 1.3m-7.6-6.3c2 0 3.7 1.4 5.2 2.7.9.8 1.9 1.6 2.4 1.6.1 0 .3 0 .7-.5 1.1-1.6 2.7-8.2 3.6-30.9 0-.7.1-1.3.1-1.6.3-6.2-2-12.4-6.3-16.9-3.7-3.9-8.4-6.1-13.3-6.1s-9.6 2.2-13.3 6.1c-4.3 4.5-6.6 10.7-6.3 16.9 0 .3 0 .9.1 1.7.9 22.6 2.5 29.3 3.6 30.8.4.5.6.5.7.5.6 0 1.6-.9 2.4-1.6 1.5-1.3 3.1-2.7 5.2-2.7 2.3 0 3.6 1.3 4.5 2.4.9 1 1.6 1.8 3.1 1.8 1.5 0 2.2-.8 3.1-1.8.9-1.1 2.2-2.4 4.5-2.4" fill="#50ffdd"/><path d="m48.8 34.2c10.8 2.6 8.7-3.1 11.4.1 2.5 2.9-1 9.1-12.1 11.5" fill="#6adbc6"/><path d="m48.2 46.8c-.5 0-.9-.3-1-.8-.1-.5.2-1.1.8-1.2 7.5-1.6 11.1-4.9 11.9-7.3.2-.7.4-1.7-.3-2.5-.3-.4-.5-.5-.6-.6-.1 0-.2.1-.3.2-1.2.8-3.3 2.3-10.1.7-.5-.1-.9-.7-.7-1.2.1-.5.7-.9 1.2-.7 5.9 1.4 7.6.2 8.5-.4 1.3-.9 2.2-.7 3.5.8 1 1.2 1.3 2.8.7 4.5-1 3-5 6.8-13.3 8.6-.2-.1-.3-.1-.3-.1" fill="#50ffdd"/><path d="m15.3 34.2c-10.9 2.6-8.7-3.1-11.5.1-2.5 2.9.9 9.1 12.1 11.5" fill="#6adbc6"/><path d="m15.8 46.8c-.1 0-.1 0-.2 0-7-1.5-12-4.7-13.3-8.6-.6-1.7-.3-3.3.7-4.5 1.3-1.5 2.2-1.7 3.5-.8.9.6 2.6 1.8 8.5.3.5-.1 1.1.2 1.2.7s-.2 1.1-.7 1.2c-6.8 1.6-8.9.2-10.1-.6-.1-.1-.2-.1-.3-.2-.1.1-.2.3-.6.7-.7.8-.6 1.9-.3 2.6.8 2.3 4.4 5.6 11.8 7.2.5.1.9.6.8 1.2-.1.5-.5.8-1 .8" fill="#50ffdd"/><ellipse cx="41.4" cy="24.3" rx="6.1" ry="6.9" fill="#fff"/><ellipse cx="41.4" cy="24.3" rx="4" ry="4.5" fill="#308776"/><path d="m33.5 22.3c0 5-3.8 9.1-8.5 9.1-4.7 0-8.5-4.1-8.5-9.1 0-5 3.8-9.1 8.5-9.1 4.7-.1 8.5 4 8.5 9.1" fill="#fff"/><g fill="#308776"><path d="m30.6 22.3c0 3.3-2.5 6-5.6 6s-5.6-2.7-5.6-6c0-3.3 2.5-6 5.6-6s5.6 2.7 5.6 6"/><path d="m44.8 35.4c0 4.4-5.4 8.1-12.1 8.1-6.7 0-12.1-3.7-12.1-8.1 0 0 5.8 1.3 12.1 1.3s12.1-1.3 12.1-1.3"/></g><path d="m25 43.8c0-5.5 0-3.8 7.7-3.8 7.7 0 7.7-1.7 7.7 3.8s-3.5 8.3-7.7 8.3c-4.3 0-7.7-2.8-7.7-8.3" fill="#ff717f"/><path fill="#e2596c" d="m34 40l-1.3 9.5-1.2-9.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47c-1f3fb.svg b/riot/emojione/svg/1f47c-1f3fb.svg new file mode 100644 index 0000000..b33f37c --- /dev/null +++ b/riot/emojione/svg/1f47c-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#bec6c9"><path d="m5.4 10.1c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.5-6.8-7-13.2-5.5-14.3"/><path d="m2.2 18.4c1-1.5 6.7 1.1 12.7 5.8 6 4.8 10 9.9 8.9 11.4-1 1.5-6.7-1.1-12.7-5.8-6-4.8-10-9.9-8.9-11.4"/><path d="m3.9 28.4c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.5-9.8-4.1-9.4-6"/><path d="m4 38.1c-.7-1.8 2.7-5 7.5-7.3 4.8-2.3 9.3-2.7 10-.9.7 1.8-2.7 5-7.5 7.3-4.8 2.2-9.3 2.7-10 .9"/><path d="m6.4 44.8c-.9-1.5 1.8-5.3 6.2-8.5 4.3-3.2 8.6-4.7 9.5-3.2.9 1.5-1.8 5.3-6.2 8.5-4.3 3.2-8.6 4.6-9.5 3.2"/><path d="m10.8 50.7c-1.2-1.2.8-5.6 4.4-9.7 3.6-4.1 7.6-6.5 8.8-5.2 1.2 1.2-.8 5.6-4.4 9.7-3.7 4.1-7.6 6.5-8.8 5.2"/><path d="m10.2 5.1c1.1-.6 3.9 3.1 6.2 8.2 2.3 5.1 3.3 9.8 2.2 10.4-1.1.6-3.9-3.1-6.2-8.2-2.3-5.2-3.3-9.8-2.2-10.4"/><path d="m14.9 55.8c-1.1-.7.3-5.3 3-10.1 2.8-4.9 5.9-8.2 7-7.5 1.1.7-.3 5.2-3 10.1-2.8 4.9-5.9 8.2-7 7.5"/><path d="m20.2 57.6c-.9-.2-.9-4.9.1-10.5.9-5.6 2.4-10 3.3-9.8.9.2.9 4.9-.1 10.5-.9 5.5-2.4 9.9-3.3 9.8"/><path d="m24.9 59c-.9-.1-1.1-4-.5-8.6.6-4.6 1.9-8.3 2.7-8.1.9.1 1.1 4 .5 8.6-.6 4.6-1.8 8.2-2.7 8.1"/></g><g fill="#e1edf5"><path d="m13 6.6c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.4-6.8-6.9-13.2-5.5-14.3"/><path d="M6,14.8c1-1.5,6.7,1.1,12.7,5.8c6,4.8,10,9.9,8.9,11.4c-1,1.5-6.7-1.1-12.7-5.8C9,21.5,5,16.4,6,14.8z"/><path d="m4.9 26.3c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.4-9.8-4.1-9.4-6"/><path d="m7 38.6c-.9-1.7 2.2-5.3 6.8-8 4.6-2.8 9-3.6 9.9-2 .9 1.7-2.2 5.3-6.8 8-4.6 2.8-9.1 3.7-9.9 2"/><path d="m9.8 45c-1-1.2 1.3-5.3 5.3-9.1 3.9-3.8 7.9-5.9 9-4.6 1 1.2-1.3 5.3-5.3 9.1-4 3.8-8 5.9-9 4.6"/><path d="m12.3 53.5c-1.1-.6-.1-5.2 2.3-10.3 2.4-5.1 5.2-8.7 6.3-8.1 1.1.6.1 5.2-2.3 10.3-2.4 5.1-5.2 8.7-6.3 8.1"/><path d="m18.3 55.4c-1.2-.4-1.1-5.1.3-10.6 1.4-5.5 3.5-9.7 4.7-9.3 1.2.4 1.1 5.1-.3 10.6-1.4 5.5-3.5 9.6-4.7 9.3"/><path d="m22.8 56.9c-.9-.3-.5-4.9.9-10.4 1.4-5.5 3.2-9.8 4.1-9.5.9.3.5 4.9-.9 10.4-1.4 5.5-3.2 9.7-4.1 9.5"/></g><g fill="#bec6c9"><path d="m58.4 10.3c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.7 6.9-13.1 5.5-14.3"/><path d="m61.8 18.4c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 6-4.8 10-9.9 8.9-11.4"/><path d="m60.6 28.4c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.5 9.8-4.1 9.4-6"/><path d="m60 38.1c.7-1.8-2.7-5-7.5-7.3-4.8-2.3-9.3-2.7-10-.9-.7 1.8 2.7 5 7.5 7.3 4.8 2.2 9.3 2.7 10 .9"/><path d="m57.6 44.8c.9-1.5-1.8-5.3-6.2-8.5-4.3-3.2-8.6-4.7-9.5-3.2-.9 1.5 1.8 5.3 6.2 8.5 4.3 3.2 8.6 4.6 9.5 3.2"/><path d="m53.2 50.7c1.2-1.2-.8-5.6-4.4-9.7-3.6-4.1-7.6-6.5-8.8-5.2-1.2 1.2.8 5.6 4.4 9.7 3.7 4.1 7.6 6.5 8.8 5.2"/><path d="m53.8 5.1c-1.1-.6-3.9 3.1-6.2 8.2-2.3 5.1-3.3 9.8-2.2 10.4 1.1.6 3.9-3.1 6.2-8.2 2.3-5.2 3.3-9.8 2.2-10.4"/><path d="m49.1 55.8c1.1-.7-.3-5.3-3-10.1-2.8-4.9-5.9-8.2-7-7.5-1.1.7.3 5.2 3 10.1 2.8 4.9 5.9 8.2 7 7.5"/><path d="m43.8 57.6c.9-.2.9-4.9-.1-10.5-.9-5.6-2.4-10-3.3-9.8-.9.2-.8 4.9.1 10.5.9 5.5 2.4 9.9 3.3 9.8"/><path d="m39.1 59c.9-.1 1.1-4 .5-8.6-.6-4.6-1.8-8.3-2.7-8.1-.9.1-1.1 4-.5 8.6.6 4.6 1.8 8.2 2.7 8.1"/></g><g fill="#e1edf5"><path d="m51.6 6.6c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.8 6.9-13.2 5.5-14.3"/><path d="m58 14.8c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 5.9-4.7 9.9-9.8 8.9-11.4"/><path d="m59.1 26.3c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.4 9.8-4.1 9.4-6"/><path d="m57 38.6c.8-1.7-2.2-5.3-6.8-8-4.6-2.8-9-3.6-9.9-2-.9 1.7 2.2 5.3 6.8 8 4.6 2.8 9.1 3.7 9.9 2"/><path d="m54.2 45c1-1.2-1.3-5.3-5.3-9.1-3.9-3.8-7.9-5.9-8.9-4.6-1 1.2 1.3 5.3 5.3 9.1 3.9 3.8 7.9 5.9 8.9 4.6"/><path d="m51.7 53.5c1.1-.6.1-5.2-2.3-10.3-2.4-5.1-5.2-8.7-6.3-8.1-1.1.6-.1 5.2 2.3 10.3 2.4 5.1 5.2 8.7 6.3 8.1"/><path d="m45.7 55.4c1.2-.4 1.1-5.1-.3-10.6-1.4-5.5-3.5-9.7-4.7-9.3-1.2.4-1.1 5.1.3 10.6 1.4 5.5 3.5 9.6 4.7 9.3"/><path d="m41.2 56.9c.9-.3.5-4.9-.9-10.4-1.4-5.5-3.2-9.8-4.1-9.5-.9.3-.5 4.9.9 10.4 1.4 5.5 3.2 9.7 4.1 9.5"/></g><path d="m32 12.5c15.3 0 18.7 10.2 18.7 16 0 5.1-.7 7.3-.7 7.3h-36c0 0-.7-2.2-.7-7.3 0-5.8 3.4-16 18.7-16" fill="#594640"/><path d="m48.8 33.2c0 0-.5-2.2-.8-6.8-.3-5-7.3-1-16-1s-15.7-4-16 1c-.3 4.6-.8 6.8-.8 6.8-4.3 0-4.3 7 .3 7 0 7.6 9.5 12.3 16.5 12.3 7 0 16.5-4.7 16.5-12.3 4.6 0 4.6-7 .3-7" fill="#ffe1bd"/><circle cx="40.3" cy="34.8" r="4.3" fill="#fff"/><circle cx="40.3" cy="34.8" r="3" fill="#664e27"/><circle cx="40.3" cy="34.8" r="1" fill="#231f20"/><circle cx="23.7" cy="34.8" r="4.3" fill="#fff"/><circle cx="23.7" cy="34.8" r="3" fill="#664e27"/><circle cx="23.7" cy="34.8" r="1" fill="#231f20"/><path d="m38 44.6c0 2.3-3 3.4-6 3.4s-6-1.1-6-3.4c0 0 0-.6.6-.6 2.7 0 8.1 0 10.8 0 .6 0 .6.6.6.6" fill="#664e27"/><path d="m32 7.1c-8.3 0-14.9 1.4-14.9 4.4s6.7 5.3 14.9 5.3c8.3 0 14.9-2.4 14.9-5.3s-6.7-4.4-14.9-4.4m0 5.2c-5.5 0-10-.8-10-1.8 0-1 4.5-1.7 10-1.7 5.5 0 10 .7 10 1.7 0 1-4.5 1.8-10 1.8" fill="#4aa9ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47c-1f3fc.svg b/riot/emojione/svg/1f47c-1f3fc.svg new file mode 100644 index 0000000..0095920 --- /dev/null +++ b/riot/emojione/svg/1f47c-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#bec6c9"><path d="m5.4 10.1c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.5-6.8-7-13.2-5.5-14.3"/><path d="m2.2 18.4c1-1.5 6.7 1.1 12.7 5.8 6 4.8 10 9.9 8.9 11.4-1 1.5-6.7-1.1-12.7-5.8-6-4.8-10-9.9-8.9-11.4"/><path d="m3.9 28.4c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.5-9.8-4.1-9.4-6"/><path d="m4 38.1c-.7-1.8 2.7-5 7.5-7.3 4.8-2.3 9.3-2.7 10-.9.7 1.8-2.7 5-7.5 7.3-4.8 2.2-9.3 2.7-10 .9"/><path d="m6.4 44.8c-.9-1.5 1.8-5.3 6.2-8.5 4.3-3.2 8.6-4.7 9.5-3.2.9 1.5-1.8 5.3-6.2 8.5-4.3 3.2-8.6 4.6-9.5 3.2"/><path d="m10.8 50.7c-1.2-1.2.8-5.6 4.4-9.7 3.6-4.1 7.6-6.5 8.8-5.2 1.2 1.2-.8 5.6-4.4 9.7-3.7 4.1-7.6 6.5-8.8 5.2"/><path d="m10.2 5.1c1.1-.6 3.9 3.1 6.2 8.2 2.3 5.1 3.3 9.8 2.2 10.4-1.1.6-3.9-3.1-6.2-8.2-2.3-5.2-3.3-9.8-2.2-10.4"/><path d="m14.9 55.8c-1.1-.7.3-5.3 3-10.1 2.8-4.9 5.9-8.2 7-7.5 1.1.7-.3 5.2-3 10.1-2.8 4.9-5.9 8.2-7 7.5"/><path d="m20.2 57.6c-.9-.2-.9-4.9.1-10.5.9-5.6 2.4-10 3.3-9.8.9.2.9 4.9-.1 10.5-.9 5.5-2.4 9.9-3.3 9.8"/><path d="m24.9 59c-.9-.1-1.1-4-.5-8.6.6-4.6 1.8-8.3 2.7-8.1.9.1 1.1 4 .5 8.6-.6 4.6-1.8 8.2-2.7 8.1"/></g><g fill="#e1edf5"><path d="m13 6.6c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.4-6.8-6.9-13.2-5.5-14.3"/><path d="M6,14.8c1-1.5,6.7,1.1,12.7,5.8c6,4.8,10,9.9,8.9,11.4c-1,1.5-6.7-1.1-12.7-5.8C9,21.5,5,16.4,6,14.8z"/><path d="m4.9 26.3c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.4-9.8-4.1-9.4-6"/><path d="m7 38.6c-.9-1.7 2.2-5.3 6.8-8 4.6-2.8 9-3.6 9.9-2 .9 1.7-2.2 5.3-6.8 8-4.6 2.8-9.1 3.7-9.9 2"/><path d="m9.8 45c-1-1.2 1.3-5.3 5.3-9.1 3.9-3.8 7.9-5.9 9-4.6 1 1.2-1.3 5.3-5.3 9.1-4 3.8-8 5.9-9 4.6"/><path d="m12.3 53.5c-1.1-.6-.1-5.2 2.3-10.3 2.4-5.1 5.2-8.7 6.3-8.1 1.1.6.1 5.2-2.3 10.3-2.4 5.1-5.2 8.7-6.3 8.1"/><path d="m18.3 55.4c-1.2-.4-1.1-5.1.3-10.6 1.4-5.5 3.5-9.7 4.7-9.3 1.2.4 1.1 5.1-.3 10.6-1.4 5.5-3.5 9.6-4.7 9.3"/><path d="m22.8 56.9c-.9-.3-.5-4.9.9-10.4 1.4-5.5 3.2-9.8 4.1-9.5.9.3.5 4.9-.9 10.4-1.4 5.5-3.2 9.7-4.1 9.5"/></g><g fill="#bec6c9"><path d="m58.4 10.3c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.7 6.9-13.1 5.5-14.3"/><path d="m61.8 18.4c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 6-4.8 10-9.9 8.9-11.4"/><path d="m60.6 28.4c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.5 9.8-4.1 9.4-6"/><path d="m60 38.1c.7-1.8-2.7-5-7.5-7.3-4.8-2.3-9.3-2.7-10-.9-.7 1.8 2.7 5 7.5 7.3 4.8 2.2 9.3 2.7 10 .9"/><path d="m57.6 44.8c.9-1.5-1.8-5.3-6.2-8.5-4.3-3.2-8.6-4.7-9.5-3.2-.9 1.5 1.8 5.3 6.2 8.5 4.3 3.2 8.6 4.6 9.5 3.2"/><path d="m53.2 50.7c1.2-1.2-.8-5.6-4.4-9.7-3.6-4.1-7.6-6.5-8.8-5.2-1.2 1.2.8 5.6 4.4 9.7 3.7 4.1 7.6 6.5 8.8 5.2"/><path d="m53.8 5.1c-1.1-.6-3.9 3.1-6.2 8.2-2.3 5.1-3.3 9.8-2.2 10.4 1.1.6 3.9-3.1 6.2-8.2 2.3-5.2 3.3-9.8 2.2-10.4"/><path d="m49.1 55.8c1.1-.7-.3-5.3-3-10.1-2.8-4.9-5.9-8.2-7-7.5-1.1.7.3 5.2 3 10.1 2.8 4.9 5.9 8.2 7 7.5"/><path d="m43.8 57.6c.9-.2.9-4.9-.1-10.5-.9-5.6-2.4-10-3.3-9.8-.9.2-.8 4.9.1 10.5.9 5.5 2.4 9.9 3.3 9.8"/><path d="m39.1 59c.9-.1 1.1-4 .5-8.6-.6-4.6-1.8-8.3-2.8-8.1-.9.1-1.1 4-.5 8.6.7 4.6 1.9 8.2 2.8 8.1"/></g><g fill="#e1edf5"><path d="m51.6 6.6c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.6 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.5-6.8 7-13.2 5.6-14.3"/><path d="m58 14.8c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 5.9-4.7 9.9-9.8 8.9-11.4"/><path d="m59.1 26.3c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.4 9.8-4.1 9.4-6"/><path d="m57 38.6c.8-1.7-2.2-5.3-6.8-8-4.6-2.8-9-3.6-9.9-2-.9 1.7 2.2 5.3 6.8 8 4.6 2.8 9.1 3.7 9.9 2"/><path d="m54.2 45c1-1.2-1.3-5.3-5.3-9.1-3.9-3.8-7.9-5.9-8.9-4.6-1 1.2 1.3 5.3 5.3 9.1 3.9 3.8 7.9 5.9 8.9 4.6"/><path d="m51.7 53.5c1.1-.6.1-5.2-2.3-10.3-2.4-5.1-5.2-8.7-6.3-8.1-1.1.6-.1 5.2 2.3 10.3 2.4 5.1 5.2 8.7 6.3 8.1"/><path d="m45.7 55.4c1.2-.4 1.1-5.1-.3-10.6-1.4-5.5-3.5-9.7-4.7-9.3-1.2.4-1.1 5.1.3 10.6 1.4 5.5 3.5 9.6 4.7 9.3"/><path d="m41.2 56.9c.9-.3.5-4.9-.9-10.4-1.4-5.5-3.2-9.8-4.1-9.5-.9.3-.5 4.9.9 10.4 1.4 5.5 3.2 9.7 4.1 9.5"/></g><path d="m32 12.5c15.3 0 18.7 10.2 18.7 16 0 5.1-.7 7.3-.7 7.3h-36c0 0-.7-2.2-.7-7.3 0-5.8 3.4-16 18.7-16" fill="#dbb471"/><path d="m48.8 33.2c0 0-.5-2.2-.8-6.8-.3-5-7.3-1-16-1-8.7 0-15.7-4-16 1-.3 4.6-.8 6.8-.8 6.8-4.3 0-4.3 7 .3 7 0 7.6 9.5 12.3 16.5 12.3 7 0 16.5-4.7 16.5-12.3 4.6 0 4.6-7 .3-7" fill="#fed0ac"/><circle cx="40.3" cy="34.8" r="4.3" fill="#fff"/><circle cx="40.3" cy="34.8" r="3" fill="#664e27"/><circle cx="40.3" cy="34.8" r="1" fill="#231f20"/><circle cx="23.7" cy="34.8" r="4.3" fill="#fff"/><circle cx="23.7" cy="34.8" r="3" fill="#664e27"/><circle cx="23.7" cy="34.8" r="1" fill="#231f20"/><path d="m38 44.6c0 2.3-3 3.4-6 3.4-3 0-6-1.1-6-3.4 0 0 0-.6.6-.6 2.7 0 8.1 0 10.8 0 .6 0 .6.6.6.6" fill="#664e27"/><path d="m32 7.1c-8.3 0-14.9 1.4-14.9 4.4s6.7 5.3 14.9 5.3c8.3 0 14.9-2.4 14.9-5.3s-6.7-4.4-14.9-4.4m0 5.2c-5.5 0-10-.8-10-1.8 0-1 4.5-1.7 10-1.7 5.5 0 10 .7 10 1.7 0 1-4.5 1.8-10 1.8" fill="#4aa9ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47c-1f3fd.svg b/riot/emojione/svg/1f47c-1f3fd.svg new file mode 100644 index 0000000..ce453f4 --- /dev/null +++ b/riot/emojione/svg/1f47c-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#bec6c9"><path d="m5.4 10.1c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.5-6.8-7-13.2-5.5-14.3"/><path d="m2.2 18.4c1-1.5 6.7 1.1 12.7 5.8 6 4.8 10 9.9 8.9 11.4-1 1.5-6.7-1.1-12.7-5.8-6-4.8-10-9.9-8.9-11.4"/><path d="m3.9 28.4c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.5-9.8-4.1-9.4-6"/><path d="m4 38.1c-.7-1.8 2.7-5 7.5-7.3 4.8-2.3 9.3-2.7 10-.9.7 1.8-2.7 5-7.5 7.3-4.8 2.2-9.3 2.7-10 .9"/><path d="m6.4 44.8c-.9-1.5 1.8-5.3 6.2-8.5 4.3-3.2 8.6-4.7 9.5-3.2.9 1.5-1.8 5.3-6.2 8.5-4.3 3.2-8.6 4.6-9.5 3.2"/><path d="m10.8 50.7c-1.2-1.2.8-5.6 4.4-9.7 3.6-4.1 7.6-6.5 8.8-5.2 1.2 1.2-.8 5.6-4.4 9.7-3.7 4.1-7.6 6.5-8.8 5.2"/><path d="m10.2 5.1c1.1-.6 3.9 3.1 6.2 8.2 2.3 5.1 3.3 9.8 2.2 10.4-1.1.6-3.9-3.1-6.2-8.2-2.3-5.2-3.3-9.8-2.2-10.4"/><path d="m14.9 55.8c-1.1-.7.3-5.3 3-10.1 2.8-4.9 5.9-8.2 7-7.5 1.1.7-.3 5.2-3 10.1-2.8 4.9-5.9 8.2-7 7.5"/><path d="m20.2 57.6c-.9-.2-.9-4.9.1-10.5.9-5.6 2.4-10 3.3-9.8.9.2.9 4.9-.1 10.5-.9 5.5-2.4 9.9-3.3 9.8"/><path d="m24.9 59c-.9-.1-1.1-4-.5-8.6.6-4.6 1.8-8.3 2.7-8.1.9.1 1.1 4 .5 8.6-.6 4.6-1.8 8.2-2.7 8.1"/></g><g fill="#e1edf5"><path d="m13 6.6c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.4-6.8-6.9-13.2-5.5-14.3"/><path d="M6,14.8c1-1.5,6.7,1.1,12.7,5.8c6,4.8,10,9.9,8.9,11.4c-1,1.5-6.7-1.1-12.7-5.8C9,21.5,5,16.4,6,14.8z"/><path d="m4.9 26.3c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.4-9.8-4.1-9.4-6"/><path d="m7 38.6c-.9-1.7 2.2-5.3 6.8-8 4.6-2.8 9-3.6 9.9-2 .9 1.7-2.2 5.3-6.8 8-4.6 2.8-9.1 3.7-9.9 2"/><path d="m9.8 45c-1-1.2 1.3-5.3 5.3-9.1 3.9-3.8 7.9-5.9 9-4.6 1 1.2-1.3 5.3-5.3 9.1-4 3.8-8 5.9-9 4.6"/><path d="m12.3 53.5c-1.1-.6-.1-5.2 2.3-10.3 2.4-5.1 5.2-8.7 6.3-8.1 1.1.6.1 5.2-2.3 10.3-2.4 5.1-5.2 8.7-6.3 8.1"/><path d="m18.3 55.4c-1.2-.4-1.1-5.1.3-10.6 1.4-5.5 3.5-9.7 4.7-9.3 1.2.4 1.1 5.1-.3 10.6-1.4 5.5-3.5 9.6-4.7 9.3"/><path d="m22.8 56.9c-.9-.3-.5-4.9.9-10.4 1.4-5.5 3.2-9.8 4.1-9.5.9.3.5 4.9-.9 10.4-1.4 5.5-3.2 9.7-4.1 9.5"/></g><g fill="#bec6c9"><path d="m58.4 10.3c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.7 6.9-13.1 5.5-14.3"/><path d="m61.8 18.4c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 6-4.8 10-9.9 8.9-11.4"/><path d="m60.6 28.4c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.5 9.8-4.1 9.4-6"/><path d="m60 38.1c.7-1.8-2.7-5-7.5-7.3-4.8-2.3-9.3-2.7-10-.9-.7 1.8 2.7 5 7.5 7.3 4.8 2.2 9.3 2.7 10 .9"/><path d="m57.6 44.8c.9-1.5-1.8-5.3-6.2-8.5-4.3-3.2-8.6-4.7-9.5-3.2-.9 1.5 1.8 5.3 6.2 8.5 4.3 3.2 8.6 4.6 9.5 3.2"/><path d="m53.2 50.7c1.2-1.2-.8-5.6-4.4-9.7-3.6-4.1-7.6-6.5-8.8-5.2-1.2 1.2.8 5.6 4.4 9.7 3.7 4.1 7.6 6.5 8.8 5.2"/><path d="m53.8 5.1c-1.1-.6-3.9 3.1-6.2 8.2-2.3 5.1-3.3 9.8-2.2 10.4 1.1.6 3.9-3.1 6.2-8.2 2.3-5.2 3.3-9.8 2.2-10.4"/><path d="m49.1 55.8c1.1-.7-.3-5.3-3-10.1-2.8-4.9-5.9-8.2-7-7.5-1.1.7.3 5.2 3 10.1 2.8 4.9 5.9 8.2 7 7.5"/><path d="m43.8 57.6c.9-.2.9-4.9-.1-10.5-.9-5.6-2.4-10-3.3-9.8-.9.2-.8 4.9.1 10.5.9 5.5 2.4 9.9 3.3 9.8"/><path d="m39.1 59c.9-.1 1.1-4 .5-8.6-.6-4.6-1.8-8.3-2.8-8.1-.9.1-1.1 4-.5 8.6.7 4.6 1.9 8.2 2.8 8.1"/></g><g fill="#e1edf5"><path d="m51.6 6.6c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.6 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.5-6.8 7-13.2 5.6-14.3"/><path d="m58 14.8c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 5.9-4.7 9.9-9.8 8.9-11.4"/><path d="m59.1 26.3c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.4 9.8-4.1 9.4-6"/><path d="m57 38.6c.8-1.7-2.2-5.3-6.8-8-4.6-2.8-9-3.6-9.9-2-.9 1.7 2.2 5.3 6.8 8 4.6 2.8 9.1 3.7 9.9 2"/><path d="m54.2 45c1-1.2-1.3-5.3-5.3-9.1-3.9-3.8-7.9-5.9-8.9-4.6-1 1.2 1.3 5.3 5.3 9.1 3.9 3.8 7.9 5.9 8.9 4.6"/><path d="m51.7 53.5c1.1-.6.1-5.2-2.3-10.3-2.4-5.1-5.2-8.7-6.3-8.1-1.1.6-.1 5.2 2.3 10.3 2.4 5.1 5.2 8.7 6.3 8.1"/><path d="m45.7 55.4c1.2-.4 1.1-5.1-.3-10.6-1.4-5.5-3.5-9.7-4.7-9.3-1.2.4-1.1 5.1.3 10.6 1.4 5.5 3.5 9.6 4.7 9.3"/><path d="m41.2 56.9c.9-.3.5-4.9-.9-10.4-1.4-5.5-3.2-9.8-4.1-9.5-.9.3-.5 4.9.9 10.4 1.4 5.5 3.2 9.7 4.1 9.5"/></g><path d="m32 12.5c15.3 0 18.7 10.2 18.7 16 0 5.1-.7 7.3-.7 7.3h-36c0 0-.7-2.2-.7-7.3 0-5.8 3.4-16 18.7-16" fill="#594640"/><path d="m48.8 33.2c0 0-.5-2.2-.8-6.8-.3-5-7.3-1-16-1-8.7 0-15.7-4-16 1-.3 4.6-.8 6.8-.8 6.8-4.3 0-4.3 7 .3 7 0 7.6 9.5 12.3 16.5 12.3 7 0 16.5-4.7 16.5-12.3 4.6 0 4.6-7 .3-7" fill="#d6a57c"/><circle cx="40.3" cy="34.8" r="4.3" fill="#fff"/><circle cx="40.3" cy="34.8" r="3" fill="#664e27"/><circle cx="40.3" cy="34.8" r="1" fill="#231f20"/><circle cx="23.7" cy="34.8" r="4.3" fill="#fff"/><circle cx="23.7" cy="34.8" r="3" fill="#664e27"/><circle cx="23.7" cy="34.8" r="1" fill="#231f20"/><path d="m38 44.6c0 2.3-3 3.4-6 3.4-3 0-6-1.1-6-3.4 0 0 0-.6.6-.6 2.7 0 8.1 0 10.8 0 .6 0 .6.6.6.6" fill="#664e27"/><path d="m32 7.1c-8.3 0-14.9 1.4-14.9 4.4s6.7 5.3 14.9 5.3c8.3 0 14.9-2.4 14.9-5.3s-6.7-4.4-14.9-4.4m0 5.2c-5.5 0-10-.8-10-1.8 0-1 4.5-1.7 10-1.7 5.5 0 10 .7 10 1.7 0 1-4.5 1.8-10 1.8" fill="#4aa9ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47c-1f3fe.svg b/riot/emojione/svg/1f47c-1f3fe.svg new file mode 100644 index 0000000..bbff87d --- /dev/null +++ b/riot/emojione/svg/1f47c-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#bec6c9"><path d="m5.4 10.1c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.5-6.8-7-13.2-5.5-14.3"/><path d="m2.2 18.4c1-1.5 6.7 1.1 12.7 5.8 6 4.8 10 9.9 8.9 11.4-1 1.5-6.7-1.1-12.7-5.8-6-4.8-10-9.9-8.9-11.4"/><path d="m3.9 28.4c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.5-9.8-4.1-9.4-6"/><path d="m4 38.1c-.7-1.8 2.7-5 7.5-7.3 4.8-2.3 9.3-2.7 10-.9.7 1.8-2.7 5-7.5 7.3-4.8 2.2-9.3 2.7-10 .9"/><path d="m6.4 44.8c-.9-1.5 1.8-5.3 6.2-8.5 4.3-3.2 8.6-4.7 9.5-3.2.9 1.5-1.8 5.3-6.2 8.5-4.3 3.2-8.6 4.6-9.5 3.2"/><path d="m10.8 50.7c-1.2-1.2.8-5.6 4.4-9.7 3.6-4.1 7.6-6.5 8.8-5.2 1.2 1.2-.8 5.6-4.4 9.7-3.7 4.1-7.6 6.5-8.8 5.2"/><path d="m10.2 5.1c1.1-.6 3.9 3.1 6.2 8.2 2.3 5.1 3.3 9.8 2.2 10.4-1.1.6-3.9-3.1-6.2-8.2-2.3-5.2-3.3-9.8-2.2-10.4"/><path d="m14.9 55.8c-1.1-.7.3-5.3 3-10.1 2.8-4.9 5.9-8.2 7-7.5 1.1.7-.3 5.2-3 10.1-2.8 4.9-5.9 8.2-7 7.5"/><path d="m20.2 57.6c-.9-.2-.9-4.9.1-10.5.9-5.6 2.4-10 3.3-9.8.9.2.9 4.9-.1 10.5-.9 5.5-2.4 9.9-3.3 9.8"/><path d="m24.9 59c-.9-.1-1.1-4-.5-8.6.6-4.6 1.8-8.3 2.7-8.1.9.1 1.1 4 .5 8.6-.6 4.6-1.8 8.2-2.7 8.1"/></g><g fill="#e1edf5"><path d="m13 6.6c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.4-6.8-6.9-13.2-5.5-14.3"/><path d="M6,14.8c1-1.5,6.7,1.1,12.7,5.8c6,4.8,10,9.9,8.9,11.4c-1,1.5-6.7-1.1-12.7-5.8C9,21.5,5,16.4,6,14.8z"/><path d="m4.9 26.3c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.4-9.8-4.1-9.4-6"/><path d="m7 38.6c-.9-1.7 2.2-5.3 6.8-8 4.6-2.8 9-3.6 9.9-2 .9 1.7-2.2 5.3-6.8 8-4.6 2.8-9.1 3.7-9.9 2"/><path d="m9.8 45c-1-1.2 1.3-5.3 5.3-9.1 3.9-3.8 7.9-5.9 9-4.6 1 1.2-1.3 5.3-5.3 9.1-4 3.8-8 5.9-9 4.6"/><path d="m12.3 53.5c-1.1-.6-.1-5.2 2.3-10.3 2.4-5.1 5.2-8.7 6.3-8.1 1.1.6.1 5.2-2.3 10.3-2.4 5.1-5.2 8.7-6.3 8.1"/><path d="m18.3 55.4c-1.2-.4-1.1-5.1.3-10.6 1.4-5.5 3.5-9.7 4.7-9.3 1.2.4 1.1 5.1-.3 10.6-1.4 5.5-3.5 9.6-4.7 9.3"/><path d="m22.8 56.9c-.9-.3-.5-4.9.9-10.4 1.4-5.5 3.2-9.8 4.1-9.5.9.3.5 4.9-.9 10.4-1.4 5.5-3.2 9.7-4.1 9.5"/></g><g fill="#bec6c9"><path d="m58.4 10.3c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.7 6.9-13.1 5.5-14.3"/><path d="m61.8 18.4c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 6-4.8 10-9.9 8.9-11.4"/><path d="m60.6 28.4c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.5 9.8-4.1 9.4-6"/><path d="m60 38.1c.7-1.8-2.7-5-7.5-7.3-4.8-2.3-9.3-2.7-10-.9-.7 1.8 2.7 5 7.5 7.3 4.8 2.2 9.3 2.7 10 .9"/><path d="m57.6 44.8c.9-1.5-1.8-5.3-6.2-8.5-4.3-3.2-8.6-4.7-9.5-3.2-.9 1.5 1.8 5.3 6.2 8.5 4.3 3.2 8.6 4.6 9.5 3.2"/><path d="m53.2 50.7c1.2-1.2-.8-5.6-4.4-9.7-3.6-4.1-7.6-6.5-8.8-5.2-1.2 1.2.8 5.6 4.4 9.7 3.7 4.1 7.6 6.5 8.8 5.2"/><path d="m53.8 5.1c-1.1-.6-3.9 3.1-6.2 8.2-2.3 5.1-3.3 9.8-2.2 10.4 1.1.6 3.9-3.1 6.2-8.2 2.3-5.2 3.3-9.8 2.2-10.4"/><path d="m49.1 55.8c1.1-.7-.3-5.3-3-10.1-2.8-4.9-5.9-8.2-7-7.5-1.1.7.3 5.2 3 10.1 2.8 4.9 5.9 8.2 7 7.5"/><path d="m43.8 57.6c.9-.2.9-4.9-.1-10.5-.9-5.6-2.4-10-3.3-9.8-.9.2-.8 4.9.1 10.5.9 5.5 2.4 9.9 3.3 9.8"/><path d="m39.1 59c.9-.1 1.1-4 .5-8.6-.6-4.6-1.8-8.3-2.8-8.1-.9.1-1.1 4-.5 8.6.7 4.6 1.9 8.2 2.8 8.1"/></g><g fill="#e1edf5"><path d="m51.6 6.6c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.6 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.5-6.8 7-13.2 5.6-14.3"/><path d="m58 14.8c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 5.9-4.7 9.9-9.8 8.9-11.4"/><path d="m59.1 26.3c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.4 9.8-4.1 9.4-6"/><path d="m57 38.6c.8-1.7-2.2-5.3-6.8-8-4.6-2.8-9-3.6-9.9-2-.9 1.7 2.2 5.3 6.8 8 4.6 2.8 9.1 3.7 9.9 2"/><path d="m54.2 45c1-1.2-1.3-5.3-5.3-9.1-3.9-3.8-7.9-5.9-8.9-4.6-1 1.2 1.3 5.3 5.3 9.1 3.9 3.8 7.9 5.9 8.9 4.6"/><path d="m51.7 53.5c1.1-.6.1-5.2-2.3-10.3-2.4-5.1-5.2-8.7-6.3-8.1-1.1.6-.1 5.2 2.3 10.3 2.4 5.1 5.2 8.7 6.3 8.1"/><path d="m45.7 55.4c1.2-.4 1.1-5.1-.3-10.6-1.4-5.5-3.5-9.7-4.7-9.3-1.2.4-1.1 5.1.3 10.6 1.4 5.5 3.5 9.6 4.7 9.3"/><path d="m41.2 56.9c.9-.3.5-4.9-.9-10.4-1.4-5.5-3.2-9.8-4.1-9.5-.9.3-.5 4.9.9 10.4 1.4 5.5 3.2 9.7 4.1 9.5"/></g><path d="m32 12.5c15.3 0 18.7 10.2 18.7 16 0 5.1-.7 7.3-.7 7.3h-36c0 0-.7-2.2-.7-7.3 0-5.8 3.4-16 18.7-16" fill="#231f20"/><path d="m48.8 33.2c0 0-.5-2.2-.8-6.8-.3-5-7.3-1-16-1-8.7 0-15.7-4-16 1-.3 4.6-.8 6.8-.8 6.8-4.3 0-4.3 7 .3 7 0 7.6 9.5 12.3 16.5 12.3 7 0 16.5-4.7 16.5-12.3 4.6 0 4.6-7 .3-7" fill="#b47d56"/><circle cx="40.3" cy="34.8" r="4.3" fill="#fff"/><circle cx="40.3" cy="34.8" r="3" fill="#664e27"/><circle cx="40.3" cy="34.8" r="1" fill="#231f20"/><circle cx="23.7" cy="34.8" r="4.3" fill="#fff"/><circle cx="23.7" cy="34.8" r="3" fill="#664e27"/><circle cx="23.7" cy="34.8" r="1" fill="#231f20"/><path d="m38 44.6c0 2.3-3 3.4-6 3.4-3 0-6-1.1-6-3.4 0 0 0-.6.6-.6 2.7 0 8.1 0 10.8 0 .6 0 .6.6.6.6" fill="#664e27"/><path d="m32 7.1c-8.3 0-14.9 1.4-14.9 4.4s6.7 5.3 14.9 5.3c8.3 0 14.9-2.4 14.9-5.3s-6.7-4.4-14.9-4.4m0 5.2c-5.5 0-10-.8-10-1.8 0-1 4.5-1.7 10-1.7 5.5 0 10 .7 10 1.7 0 1-4.5 1.8-10 1.8" fill="#4aa9ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47c-1f3ff.svg b/riot/emojione/svg/1f47c-1f3ff.svg new file mode 100644 index 0000000..5e7bb9f --- /dev/null +++ b/riot/emojione/svg/1f47c-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#bec6c9"><path d="m5.4 11.1c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.5-6.8-7-13.2-5.5-14.3"/><path d="m2.2 19.4c1-1.5 6.7 1.1 12.7 5.8 6 4.8 10 9.9 8.9 11.4-1 1.5-6.7-1.1-12.7-5.8-6-4.8-10-9.9-8.9-11.4"/><path d="m3.9 29.4c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.5-9.8-4.1-9.4-6"/><path d="m4 39.1c-.7-1.8 2.7-5 7.5-7.3 4.8-2.3 9.3-2.7 10-.9.7 1.8-2.7 5-7.5 7.3-4.8 2.2-9.3 2.7-10 .9"/><path d="m6.4 45.8c-.9-1.5 1.8-5.3 6.2-8.5 4.3-3.2 8.6-4.7 9.5-3.2.9 1.5-1.8 5.3-6.2 8.5-4.3 3.2-8.6 4.6-9.5 3.2"/><path d="m10.8 51.7c-1.2-1.2.8-5.6 4.4-9.7 3.6-4.1 7.6-6.5 8.8-5.2 1.2 1.2-.8 5.6-4.4 9.7-3.7 4.1-7.6 6.5-8.8 5.2"/><path d="m10.2 6.1c1.1-.6 3.9 3.1 6.2 8.2 2.3 5.1 3.3 9.8 2.2 10.4-1.1.6-3.9-3.1-6.2-8.2-2.3-5.2-3.3-9.8-2.2-10.4"/><path d="m14.9 56.8c-1.1-.7.3-5.3 3-10.1 2.8-4.9 5.9-8.2 7-7.5 1.1.7-.3 5.2-3 10.1-2.8 4.9-5.9 8.2-7 7.5"/><path d="m20.2 58.6c-.9-.2-.9-4.9.1-10.5.9-5.6 2.4-10 3.3-9.8.9.2.9 4.9-.1 10.5-.9 5.5-2.4 9.9-3.3 9.8"/><path d="m24.9 60c-.9-.1-1.1-4-.5-8.6.6-4.6 1.8-8.3 2.7-8.1.9.1 1.1 4 .5 8.6-.6 4.6-1.8 8.2-2.7 8.1"/></g><g fill="#e1edf5"><path d="m13 7.6c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.4-6.8-6.9-13.2-5.5-14.3"/><path d="M6,15.8c1-1.5,6.7,1.1,12.7,5.8c6,4.8,10,9.9,8.9,11.4c-1,1.5-6.7-1.1-12.7-5.8C9,22.5,5,17.4,6,15.8z"/><path d="m4.9 27.3c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.4-9.8-4.1-9.4-6"/><path d="m7 39.6c-.9-1.7 2.2-5.3 6.8-8 4.6-2.8 9-3.6 9.9-2 .9 1.7-2.2 5.3-6.8 8-4.6 2.8-9.1 3.7-9.9 2"/><path d="m9.8 46c-1-1.2 1.3-5.3 5.3-9.1 3.9-3.8 7.9-5.9 9-4.6 1 1.2-1.3 5.3-5.3 9.1-4 3.8-8 5.9-9 4.6"/><path d="m12.3 54.5c-1.1-.6-.1-5.2 2.3-10.3 2.4-5.1 5.2-8.7 6.3-8.1 1.1.6.1 5.2-2.3 10.3-2.4 5.1-5.2 8.7-6.3 8.1"/><path d="m18.3 56.4c-1.2-.4-1.1-5.1.3-10.6 1.4-5.5 3.5-9.7 4.7-9.3 1.2.4 1.1 5.1-.3 10.6-1.4 5.5-3.5 9.6-4.7 9.3"/><path d="m22.8 57.9c-.9-.3-.5-4.9.9-10.4 1.4-5.5 3.2-9.8 4.1-9.5.9.3.5 4.9-.9 10.4-1.4 5.5-3.2 9.7-4.1 9.5"/></g><g fill="#bec6c9"><path d="m58.4 11.3c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.7 6.9-13.1 5.5-14.3"/><path d="m61.8 19.4c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 6-4.8 10-9.9 8.9-11.4"/><path d="m60.6 29.4c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.5 9.8-4.1 9.4-6"/><path d="m60 39.1c.7-1.8-2.7-5-7.5-7.3-4.8-2.3-9.3-2.7-10-.9-.7 1.8 2.7 5 7.5 7.3 4.8 2.2 9.3 2.7 10 .9"/><path d="m57.6 45.8c.9-1.5-1.8-5.3-6.2-8.5-4.3-3.2-8.6-4.7-9.5-3.2-.9 1.5 1.8 5.3 6.2 8.5 4.3 3.2 8.6 4.6 9.5 3.2"/><path d="m53.2 51.7c1.2-1.2-.8-5.6-4.4-9.7-3.6-4.1-7.6-6.5-8.8-5.2-1.2 1.2.8 5.6 4.4 9.7 3.7 4.1 7.6 6.5 8.8 5.2"/><path d="m53.8 6.1c-1.1-.6-3.9 3.1-6.2 8.2-2.3 5.1-3.3 9.8-2.2 10.4 1.1.6 3.9-3.1 6.2-8.2 2.3-5.2 3.3-9.8 2.2-10.4"/><path d="m49.1 56.8c1.1-.7-.3-5.3-3-10.1-2.8-4.9-5.9-8.2-7-7.5-1.1.7.3 5.2 3 10.1 2.8 4.9 5.9 8.2 7 7.5"/><path d="m43.8 58.6c.9-.2.9-4.9-.1-10.5-.9-5.6-2.4-10-3.3-9.8-.9.2-.8 4.9.1 10.5.9 5.5 2.4 9.9 3.3 9.8"/><path d="m39.1 60c.9-.1 1.1-4 .5-8.6-.6-4.6-1.8-8.3-2.7-8.1-.9.1-1.1 4-.5 8.6.6 4.6 1.8 8.2 2.7 8.1"/></g><g fill="#e1edf5"><path d="m51.6 7.6c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.8 6.9-13.2 5.5-14.3"/><path d="m58 15.8c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 5.9-4.7 9.9-9.8 8.9-11.4"/><path d="m59.1 27.3c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.4 9.8-4.1 9.4-6"/><path d="m57 39.6c.8-1.7-2.2-5.3-6.8-8-4.6-2.8-9-3.6-9.9-2-.9 1.7 2.2 5.3 6.8 8 4.6 2.8 9.1 3.7 9.9 2"/><path d="m54.2 46c1-1.2-1.3-5.3-5.3-9.1-3.9-3.8-7.9-5.9-8.9-4.6-1 1.2 1.3 5.3 5.3 9.1 3.9 3.8 7.9 5.9 8.9 4.6"/><path d="m51.7 54.5c1.1-.6.1-5.2-2.3-10.3-2.4-5.1-5.2-8.7-6.3-8.1-1.1.6-.1 5.2 2.3 10.3 2.4 5.1 5.2 8.7 6.3 8.1"/><path d="m45.7 56.4c1.2-.4 1.1-5.1-.3-10.6-1.4-5.5-3.5-9.7-4.7-9.3-1.2.4-1.1 5.1.3 10.6 1.4 5.5 3.5 9.6 4.7 9.3"/><path d="m41.2 57.9c.9-.3.5-4.9-.9-10.4-1.4-5.5-3.2-9.8-4.1-9.5-.9.3-.5 4.9.9 10.4 1.4 5.5 3.2 9.7 4.1 9.5"/></g><path d="m32 13.5c15.3 0 18.7 10.2 18.7 16 0 5.1-.7 7.3-.7 7.3h-36c0 0-.7-2.2-.7-7.3 0-5.8 3.4-16 18.7-16" fill="#231f20"/><path d="m48.8 34.2c0 0-.5-2.2-.8-6.8-.3-5-7.3-1-16-1-8.7 0-15.7-4-16 1-.3 4.6-.8 6.8-.8 6.8-4.3 0-4.3 7 .3 7 0 7.6 9.5 12.3 16.5 12.3 7 0 16.5-4.7 16.5-12.3 4.6 0 4.6-7 .3-7" fill="#8a6859"/><circle cx="40.3" cy="35.8" r="4.3" fill="#fff"/><circle cx="40.3" cy="35.8" r="3" fill="#664e27"/><circle cx="40.3" cy="35.8" r="1" fill="#231f20"/><circle cx="23.7" cy="35.8" r="4.3" fill="#fff"/><circle cx="23.7" cy="35.8" r="3" fill="#664e27"/><circle cx="23.7" cy="35.8" r="1" fill="#231f20"/><path d="m38 45.6c0 2.3-3 3.4-6 3.4-3 0-6-1.1-6-3.4 0 0 0-.6.6-.6 2.7 0 8.1 0 10.8 0 .6 0 .6.6.6.6" fill="#574137"/><path d="m32 8.1c-8.3 0-14.9 1.4-14.9 4.4s6.7 5.3 14.9 5.3c8.3 0 14.9-2.4 14.9-5.3s-6.7-4.4-14.9-4.4m0 5.2c-5.5 0-10-.8-10-1.8 0-1 4.5-1.7 10-1.7 5.5 0 10 .7 10 1.7 0 1-4.5 1.8-10 1.8" fill="#4aa9ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47c.svg b/riot/emojione/svg/1f47c.svg new file mode 100644 index 0000000..fd6002a --- /dev/null +++ b/riot/emojione/svg/1f47c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#bec6c9"><path d="m5.4 10.1c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.5-6.8-7-13.2-5.5-14.3"/><path d="m2.2 18.4c1-1.5 6.7 1.1 12.7 5.8 6 4.8 10 9.9 8.9 11.4-1 1.5-6.7-1.1-12.7-5.8-6-4.8-10-9.9-8.9-11.4"/><path d="m3.9 28.4c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.5-9.8-4.1-9.4-6"/><path d="m4 38.1c-.7-1.8 2.7-5 7.5-7.3 4.8-2.3 9.3-2.7 10-.9.7 1.8-2.7 5-7.5 7.3-4.8 2.2-9.3 2.7-10 .9"/><path d="m6.4 44.8c-.9-1.5 1.8-5.3 6.2-8.5 4.3-3.2 8.6-4.7 9.5-3.2.9 1.5-1.8 5.3-6.2 8.5-4.3 3.2-8.6 4.6-9.5 3.2"/><path d="m10.8 50.7c-1.2-1.2.8-5.6 4.4-9.7 3.6-4.1 7.6-6.5 8.8-5.2 1.2 1.2-.8 5.6-4.4 9.7-3.7 4.1-7.6 6.5-8.8 5.2"/><path d="m10.2 5.1c1.1-.6 3.9 3.1 6.2 8.2 2.3 5.1 3.3 9.8 2.2 10.4-1.1.6-3.9-3.1-6.2-8.2-2.3-5.2-3.3-9.8-2.2-10.4"/><path d="m14.9 55.8c-1.1-.7.3-5.3 3-10.1 2.8-4.9 5.9-8.2 7-7.5 1.1.7-.3 5.2-3 10.1-2.8 4.9-5.9 8.2-7 7.5"/><path d="m20.2 57.6c-.9-.2-.9-4.9.1-10.5.9-5.6 2.4-10 3.3-9.8.9.2.9 4.9-.1 10.5-.9 5.5-2.4 9.9-3.3 9.8"/><path d="m24.9 59c-.9-.1-1.1-4-.5-8.6.6-4.6 1.8-8.3 2.7-8.1.9.1 1.1 4 .5 8.6-.6 4.6-1.8 8.2-2.7 8.1"/></g><g fill="#e1edf5"><path d="m13 6.6c1.4-1.1 6.2 3.5 10.7 10.2 4.5 6.8 7 13.2 5.5 14.3-1.4 1.1-6.2-3.5-10.7-10.2-4.4-6.8-6.9-13.2-5.5-14.3"/><path d="M6,14.8c1-1.5,6.7,1.1,12.7,5.8c6,4.8,10,9.9,8.9,11.4c-1,1.5-6.7-1.1-12.7-5.8C9,21.5,5,16.4,6,14.8z"/><path d="m4.9 26.3c.4-1.9 5.3-2.2 10.9-.7 5.6 1.5 9.8 4.1 9.4 6-.4 1.9-5.3 2.2-10.9.7-5.6-1.4-9.8-4.1-9.4-6"/><path d="m7 38.6c-.9-1.7 2.2-5.3 6.8-8 4.6-2.8 9-3.6 9.9-2 .9 1.7-2.2 5.3-6.8 8-4.6 2.8-9.1 3.7-9.9 2"/><path d="m9.8 45c-1-1.2 1.3-5.3 5.3-9.1 3.9-3.8 7.9-5.9 9-4.6 1 1.2-1.3 5.3-5.3 9.1-4 3.8-8 5.9-9 4.6"/><path d="m12.3 53.5c-1.1-.6-.1-5.2 2.3-10.3 2.4-5.1 5.2-8.7 6.3-8.1 1.1.6.1 5.2-2.3 10.3-2.4 5.1-5.2 8.7-6.3 8.1"/><path d="m18.3 55.4c-1.2-.4-1.1-5.1.3-10.6 1.4-5.5 3.5-9.7 4.7-9.3 1.2.4 1.1 5.1-.3 10.6-1.4 5.5-3.5 9.6-4.7 9.3"/><path d="m22.8 56.9c-.9-.3-.5-4.9.9-10.4 1.4-5.5 3.2-9.8 4.1-9.5.9.3.5 4.9-.9 10.4-1.4 5.5-3.2 9.7-4.1 9.5"/></g><g fill="#bec6c9"><path d="m58.4 10.3c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.7 6.9-13.1 5.5-14.3"/><path d="m61.8 18.4c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4 1 1.5 6.7-1.1 12.7-5.8 6-4.8 10-9.9 8.9-11.4"/><path d="m60.6 28.4c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.5 9.8-4.1 9.4-6"/><path d="m60 38.1c.7-1.8-2.7-5-7.5-7.3-4.8-2.3-9.3-2.7-10-.9-.7 1.8 2.7 5 7.5 7.3 4.8 2.2 9.3 2.7 10 .9"/><path d="m57.6 44.8c.9-1.5-1.8-5.3-6.2-8.5-4.3-3.2-8.6-4.7-9.5-3.2-.9 1.5 1.8 5.3 6.2 8.5 4.3 3.2 8.6 4.6 9.5 3.2"/><path d="m53.2 50.7c1.2-1.2-.8-5.6-4.4-9.7-3.6-4.1-7.6-6.5-8.8-5.2-1.2 1.2.8 5.6 4.4 9.7 3.7 4.1 7.6 6.5 8.8 5.2"/><path d="m53.8 5.1c-1.1-.6-3.9 3.1-6.2 8.2-2.3 5.1-3.3 9.8-2.2 10.4 1.1.6 3.9-3.1 6.2-8.2 2.3-5.2 3.3-9.8 2.2-10.4"/><path d="m49.1 55.8c1.1-.7-.3-5.3-3-10.1-2.8-4.9-5.9-8.2-7-7.5-1.1.7.3 5.2 3 10.1 2.8 4.9 5.9 8.2 7 7.5"/><path d="m43.8 57.6c.9-.2.9-4.9-.1-10.5-.9-5.6-2.4-10-3.3-9.8-.9.2-.8 4.9.1 10.5.9 5.5 2.4 9.9 3.3 9.8"/><path d="m39.1 59c.9-.1 1.1-4 .5-8.6-.6-4.6-1.8-8.3-2.7-8.1-.9.1-1.1 4-.5 8.6.6 4.6 1.8 8.2 2.7 8.1"/></g><g fill="#e1edf5"><path d="m51.6 6.6c-1.4-1.1-6.2 3.5-10.7 10.2-4.5 6.8-7 13.2-5.5 14.3 1.4 1.1 6.2-3.5 10.7-10.2 4.4-6.8 6.9-13.2 5.5-14.3"/><path d="m58 14.8c-1-1.5-6.7 1.1-12.7 5.8-6 4.8-10 9.9-8.9 11.4s6.7-1 12.6-5.8c6-4.7 10-9.8 9-11.4"/><path d="m59.1 26.3c-.4-1.9-5.3-2.2-10.9-.7-5.6 1.5-9.8 4.1-9.4 6 .4 1.9 5.3 2.2 10.9.7 5.6-1.4 9.8-4.1 9.4-6"/><path d="m57 38.6c.8-1.7-2.2-5.3-6.8-8-4.6-2.8-9-3.6-9.9-2-.9 1.7 2.2 5.3 6.8 8 4.6 2.8 9.1 3.7 9.9 2"/><path d="m54.2 45c1-1.2-1.3-5.3-5.3-9.1-3.9-3.8-7.9-5.9-8.9-4.6-1 1.2 1.3 5.3 5.3 9.1 3.9 3.8 7.9 5.9 8.9 4.6"/><path d="m51.7 53.5c1.1-.6.1-5.2-2.3-10.3-2.4-5.1-5.2-8.7-6.3-8.1-1.1.6-.1 5.2 2.3 10.3 2.4 5.1 5.2 8.7 6.3 8.1"/><path d="m45.7 55.4c1.2-.4 1.1-5.1-.3-10.6-1.4-5.5-3.5-9.7-4.7-9.3-1.2.4-1.1 5.1.3 10.6 1.4 5.5 3.5 9.6 4.7 9.3"/><path d="m41.2 56.9c.9-.3.5-4.9-.9-10.4-1.4-5.5-3.2-9.8-4.1-9.5-.9.3-.5 4.9.9 10.4 1.4 5.5 3.2 9.7 4.1 9.5"/></g><path d="m32 12.5c15.3 0 18.7 10.2 18.7 16 0 5.1-.7 7.3-.7 7.3h-36c0 0-.7-2.2-.7-7.3 0-5.8 3.4-16 18.7-16" fill="#ffb300"/><path d="m48.8 33.2c0 0-.5-2.2-.8-6.8-.3-5-7.3-1-16-1-8.7 0-15.7-4-16 1-.3 4.6-.8 6.8-.8 6.8-4.3 0-4.3 7 .3 7 0 7.6 9.5 12.3 16.5 12.3 7 0 16.5-4.7 16.5-12.3 4.6 0 4.6-7 .3-7" fill="#ffdd67"/><circle cx="40.3" cy="34.8" r="4.3" fill="#fff"/><circle cx="40.3" cy="34.8" r="3" fill="#664e27"/><circle cx="40.3" cy="34.8" r="1" fill="#231f20"/><circle cx="23.7" cy="34.8" r="4.3" fill="#fff"/><circle cx="23.7" cy="34.8" r="3" fill="#664e27"/><circle cx="23.7" cy="34.8" r="1" fill="#231f20"/><path d="m38 44.6c0 2.3-3 3.4-6 3.4s-6-1.1-6-3.4c0 0 0-.6.6-.6 2.7 0 8.1 0 10.8 0 .6 0 .6.6.6.6" fill="#937237"/><path d="m32 7.1c-8.3 0-14.9 1.4-14.9 4.4 0 2.9 6.7 5.3 14.9 5.3 8.3 0 14.9-2.4 14.9-5.3 0-2.9-6.7-4.4-14.9-4.4m0 5.2c-5.5 0-10-.8-10-1.8s4.5-1.7 10-1.7c5.5 0 10 .7 10 1.7s-4.5 1.8-10 1.8" fill="#4aa9ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47d.svg b/riot/emojione/svg/1f47d.svg new file mode 100644 index 0000000..fff8d2f --- /dev/null +++ b/riot/emojione/svg/1f47d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M59.5,30.6C59.5,54.1,32,62,32,62S4.5,54.1,4.5,30.6C4.5,13.1,15.5,2,32,2C48.5,2,59.5,13.1,59.5,30.6z" fill="#c7e755"/><g fill="#454749"><path d="m23.4 26.4c4 3.8 5.1 8.9 2.6 11.4-2.5 2.4-7.8 1.3-11.7-2.5-4-3.8-5.1-8.9-2.6-11.4 2.5-2.5 7.7-1.4 11.7 2.5"/><path d="m26.4 30.6c-2.6-2.3-5.2-4.1-8-5.7-1.4-.8-2.9-1.5-4.4-2.1-1.5-.6-3.1-1.2-4.7-1.8 1.7-.2 3.5-.1 5.2.3 1.7.4 3.4 1 4.9 1.8 1.5.8 2.9 1.9 4.2 3.2 1.1 1.2 2.2 2.6 2.8 4.3"/></g><path d="m20.4 25c2 1.2 3.1 3.1 2.5 4.1-.7 1-2.9.8-4.9-.4-2-1.2-3.1-3.1-2.5-4.1.7-1 2.8-.8 4.9.4" fill="#fff"/><g fill="#454749"><path d="m40.6 26.4c-4 3.8-5.1 8.9-2.6 11.4 2.5 2.4 7.8 1.3 11.7-2.5 4-3.8 5.1-8.9 2.6-11.4-2.5-2.5-7.7-1.4-11.7 2.5"/><path d="m37.6 30.6c.6-1.6 1.7-3 2.9-4.3 1.2-1.2 2.6-2.3 4.2-3.2 1.5-.9 3.2-1.5 4.9-1.8 1.7-.4 3.4-.5 5.2-.3-1.6.6-3.2 1.1-4.7 1.8-1.5.6-3 1.3-4.4 2.1-2.9 1.5-5.5 3.4-8.1 5.7"/></g><path d="m43.6 25c-2 1.2-3.1 3.1-2.5 4.1.7 1 2.9.8 4.9-.4 2-1.2 3.1-3.1 2.5-4.1-.7-1-2.8-.8-4.9.4" fill="#fff"/><path d="m32 48.6c-7.6 0-10.7-3.7-10.7-2.4 0 1.9 4.8 4.4 10.7 4.4s10.7-2.5 10.7-4.4c0-1.3-3.1 2.4-10.7 2.4z" fill="#454749" stroke="#454749" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47e.svg b/riot/emojione/svg/1f47e.svg new file mode 100644 index 0000000..0d4c47c --- /dev/null +++ b/riot/emojione/svg/1f47e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#592f5d"><path d="m9.9 43.9c-.3 0-.5-.1-.7-.2-.2-.2-5.8-4-7-10.2-.6-3.5.2-7 2.5-10.3 3.8-5.5 5.1-10.1 3.9-13.5-1.3-3.7-5.3-4.9-5.3-5-.7-.2-1.1-1-.9-1.7.2-.7.9-1.2 1.6-.9.2.1 5.3 1.6 7.1 6.6 1.5 4.3.1 9.7-4.2 16-1.9 2.7-2.6 5.5-2.1 8.2.9 5.1 5.8 8.4 5.8 8.4.6.4.8 1.3.4 1.9-.2.5-.6.7-1.1.7"/><path d="m54.1 43.9c-.4 0-.9-.2-1.1-.6-.4-.6-.2-1.5.4-1.9 0 0 4.9-3.4 5.8-8.4.5-2.7-.2-5.4-2.1-8.2-4.3-6.3-5.7-11.7-4.2-16 1.8-5.1 6.9-6.6 7.1-6.6.7-.2 1.5.2 1.7.9.2.7-.2 1.5-.9 1.7 0 0-4 1.2-5.3 5-1.2 3.4.1 8 3.9 13.5 2.3 3.4 3.1 6.8 2.5 10.3-1.2 6.2-6.8 10-7 10.2-.3 0-.6.1-.8.1"/></g><path d="m32 6.2c-7.1 0-26.3 10.5-26.1 35.5 0 4 .2 14 2.2 15.6 2 1.7 6.9-2.6 9.3-1.5 2.4 1.2 3.2 5.5 5.9 6.1 2.7.6 6-2.9 8.7-2.9 2.7 0 6.1 3.5 8.7 2.9 2.6-.6 3.5-4.9 5.9-6.1 2.3-1.1 7.3 3.1 9.3 1.5 2-1.7 2.2-11.7 2.2-15.6.2-22.6-16.8-35.5-26.1-35.5" fill="#917dbc"/><g fill="#fff"><path d="m48.8 30.6c3.6 3.9 3.6 10.2 0 14.1s-9.5 3.9-13.1 0c-.1 0 9.4-18 13.1-14.1"/><path d="m13.6 36.3c-3.3 8 2.1 5.9 6.8 8.2 4.7 2.2 8.1 5 10.2 0-.1-.1-15-13.2-17-8.2"/></g><g fill="#592f5d"><path d="m20.9 42.2c0 2 1.5 3.7 3.4 3.7s3.4-1.6 3.4-3.7c0 0 0 0 0 0-1.3-1-2.9-2.3-4.6-3.4-1.2.5-2.2 1.8-2.2 3.4"/><path d="m40.8 45.8c1.9 0 3.4-1.6 3.4-3.7 0-2-1.5-3.7-3.4-3.7-.7 0-1.3.2-1.9.6-.5.9-1 1.7-1.5 2.4 0 .2-.1.4-.1.6.1 2.2 1.6 3.8 3.5 3.8"/></g><g fill="#62fbf6"><path d="m32 26c-8.1 0-9 1.9-10.3-.5-.6-1.1 2.2-3.2 10.3-3.2 8.1 0 10.9 2.1 10.3 3.2-1.3 2.4-2.2.5-10.3.5"/><path d="m32 19c-8.1 0-9 1.9-10.3-.5-.6-1.1 2.2-3.2 10.3-3.2 8.1 0 10.9 2.1 10.3 3.2-1.3 2.4-2.2.5-10.3.5"/><path d="m17.2 51.3c-.7 1.4-3.3 1.6-5.9.3-2.6-1.3-4.1-3.5-3.4-4.9.7-1.4 3.3-1.6 5.9-.3s4 3.4 3.4 4.9"/><path d="m46.8 51.3c.7 1.4 3.3 1.6 5.9.3 2.6-1.3 4.1-3.5 3.4-4.9-.7-1.4-3.3-1.6-5.9-.3-2.5 1.2-4 3.4-3.4 4.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f47f.svg b/riot/emojione/svg/1f47f.svg new file mode 100644 index 0000000..a2bf45a --- /dev/null +++ b/riot/emojione/svg/1f47f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m0 38.8l11.6 5.3c0 0 2.3 4.6 6.3 7.7 4.4 3.4 9.9 4.5 9.9 4.5l-1.1 5.6c0 0-1.4-2.9-5.3-2.9-3.7 0-6.4 5-6.4 5s-1.4-7.3-4-9.5c-2.6-2.2-11-.9-11-.9 0 0 2.7-5.5 2.7-9.4 0-3.6-2.7-5.4-2.7-5.4" fill="#d35454"/><g fill="#ad4040"><path d="m0 38.8c2.1.5 4.1 1.2 6.1 1.9 1 .3 2 .7 3 1.1 1 .4 2 .7 3 1.1l.3.1.3.5c.8 1.3 1.8 2.8 2.9 4 1.1 1.3 2.2 2.4 3.5 3.4 1.3 1 2.7 1.9 4.2 2.6.7.4 1.5.8 2.3 1.1.8.4 1.6.7 2.3.9l.8.3-.2.6c-.6 1.8-1.1 3.7-1.8 5.5 0-1.9.2-3.8.3-5.8l.6.9c-1.8-.2-3.6-.6-5.3-1.2-1.7-.6-3.4-1.4-4.9-2.5-1.5-1.1-2.9-2.4-4-3.8-1.2-1.5-2.1-3-2.9-4.7l.6.6c-.9-.5-1.9-1-2.8-1.5-.9-.5-1.9-1-2.8-1.6-1.9-1.2-3.7-2.3-5.5-3.5"/><path d="m0 53.5l10.6-10.6 1.9 2.3z"/><path d="m15 64l2.9-11.8 2.8 1.1z"/></g><path d="m64 38.8l-11.6 5.3c0 0-2.3 4.6-6.3 7.7-4.4 3.4-9.9 4.5-9.9 4.5l1.1 5.6c0 0 1.4-2.9 5.3-2.9 3.7 0 6.4 5 6.4 5s1.4-7.3 4-9.5c2.6-2.2 11-.9 11-.9 0 0-2.7-5.5-2.7-9.4 0-3.6 2.7-5.4 2.7-5.4" fill="#d35454"/><g fill="#ad4040"><path d="m64 38.8c-1.8 1.2-3.6 2.4-5.4 3.4-.9.5-1.8 1.1-2.8 1.6-.9.5-1.9 1-2.8 1.5l.6-.6c-.8 1.8-1.8 3.3-2.9 4.7-1.2 1.4-2.5 2.8-4 3.8-1.6 1.1-3.2 1.9-4.9 2.5-1.7.6-3.5 1-5.3 1.2l.6-.9c.2 1.9.3 3.8.4 5.8-.7-1.8-1.2-3.7-1.8-5.5l-.2-.6.8-.3c.8-.3 1.6-.6 2.3-.9.8-.3 1.5-.7 2.3-1.1 1.5-.8 2.9-1.7 4.2-2.6 1.3-1 2.4-2.1 3.5-3.4 1.1-1.2 2.1-2.6 2.9-4l.3-.5.3-.1c1-.4 2-.8 3-1.1 1-.4 2-.7 3-1.1 1.8-.7 3.8-1.3 5.9-1.8"/><path d="m64 53.5l-12.5-8.3 1.9-2.3z"/><path d="m49 64l-5.7-10.7 2.8-1.1z"/></g><circle cx="32" cy="29" r="27" fill="#f46767"/><path d="m46.2 37.4c0 6-4.7 13-14.2 13-9.5 0-14.2-7-14.2-13 0 0 4.7 0 14.2 0 9.5 0 14.2 0 14.2 0" fill="#493b30"/><path d="m34 39.9c-.6 0-1.6.6-1.2 2.1.2.8 1.3 1.7 1.3 2.9 0 2.5-4.1 2.5-4.1 0 0-1.2 1.1-2.1 1.3-2.9.4-1.5-.6-2.1-1.2-2.1-1.7 0-4.5 1.8-4.5 4.8 0 3.4 2.9 6.1 6.6 6.1s6.6-2.7 6.6-6.1c-.2-3-3.1-4.8-4.8-4.8" fill="#302822"/><path d="m38.8 49.1c-1.8-1.1-4.1-1.7-6.8-1.7s-5 .7-6.8 1.7c1.8 1.1 4.1 1.7 6.8 1.7s5-.6 6.8-1.7" fill="#ff717f"/><g fill="#fff"><path d="m32 37.8l2.3 4.2 2.2-4.2z"/><path d="m36.5 37.8l2.3 4.2 2.2-4.2z"/><path d="m41 37.8l2.3 4.2 2.3-4.2z"/><path d="m23 37.8l2.2 4.2 2.3-4.2z"/><path d="m18.4 37.8l2.3 4.2 2.3-4.2z"/><path d="m27.5 37.8l2.2 4.2 2.3-4.2z"/></g><path d="m32 51.2c-9.7 0-14.9-7.1-14.9-13.8v-.7h29.9v.7c-.1 6.7-5.3 13.8-15 13.8m-13.4-13c.4 5.7 5 11.5 13.4 11.5 8.4 0 13-5.8 13.4-11.5h-26.8" fill="#493b30"/><path d="m51 22c1.9 4 .1 8.8-3.9 10.7-4 1.9-8.8.1-10.7-3.9-1.4-3 13.2-9.8 14.6-6.8" fill="#fff"/><g fill="#493b30"><path d="m48.6 23.1c1.3 2.7.1 6-2.6 7.2-2.7 1.3-6 .1-7.2-2.6-.9-1.7 9-6.3 9.8-4.6"/><path d="m52.5 22.4c-1.7.2-3.3.4-4.8.8-1.5.4-2.9.9-4.3 1.6-1.4.6-2.7 1.4-4 2.3s-2.5 1.9-3.7 3.2c.2-1.8 1.1-3.4 2.2-4.8 1.2-1.4 2.7-2.5 4.3-3.2 1.6-.8 3.4-1.2 5.2-1.2 1.8-.1 3.6.3 5.1 1.3"/></g><path d="m13 22c-1.9 4-.1 8.8 3.9 10.7 4 1.9 8.8.1 10.7-3.9 1.4-3-13.2-9.8-14.6-6.8" fill="#fff"/><g fill="#493b30"><path d="m15.4 23.1c-1.3 2.7-.1 6 2.6 7.2 2.7 1.3 6 .1 7.2-2.6.9-1.7-9-6.3-9.8-4.6"/><path d="m11.5 22.4c1.5-1 3.3-1.4 5.1-1.4 1.8 0 3.6.4 5.2 1.2 1.6.7 3.1 1.9 4.3 3.2 1.2 1.4 2 3 2.2 4.8-1.2-1.2-2.4-2.3-3.7-3.2-1.3-.9-2.6-1.6-4-2.3-1.4-.6-2.8-1.2-4.3-1.6-1.5-.3-3-.6-4.8-.7"/></g><g fill="#ffdd67"><path d="m55.7 0c0 0-1.9 6-6.4 9.8-5.1 4.4-.2 10 3.9 8.8 3.1-.9 7.6-5.5 2.5-18.6"/><path d="m14.7 9.8c-4.5-3.8-6.4-9.8-6.4-9.8-5 13.1-.5 17.7 2.5 18.6 4 1.2 9-4.3 3.9-8.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f480.svg b/riot/emojione/svg/1f480.svg new file mode 100644 index 0000000..300fed8 --- /dev/null +++ b/riot/emojione/svg/1f480.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55.9 38.9c2-3.5 3.1-7.5 3.1-11.8 0-13.8-12.1-25.1-27-25.1-14.9 0-27 11.3-27 25.2 0 4.2 1.1 8.2 3.1 11.8-1.9 1.3-3.1 3.5-3.1 5.9 0 4.1 3.6 7.5 8 7.5.4 0 .8 0 1.2-.1-.5 1.2-1.1 2.6-1.2 3.4-.6 3.1 2.7 5.7 6.1 5.7 0 0 1.6.1 2-.2 1.3-1.2 0-6.4 0-6.4 0-.9.8-1.6 1.7-1.6s1.7.7 1.7 1.6c0 0-1.2 5.4 0 6.6 1 .9 4.8.9 5.8 0 1.3-1.2 0-6.6 0-6.6 0-.9.8-1.6 1.7-1.6.9 0 1.7.7 1.7 1.6 0 0-1.3 5.4 0 6.6 1 .9 4.8.9 5.8 0 1.3-1.2 0-6.6 0-6.6 0-.9.8-1.6 1.7-1.6 1 0 1.7.7 1.7 1.6 0 0-1.3 5.3 0 6.4.3.3 2 .2 2 .2 3.4 0 6.7-2.6 6.1-5.7-.1-.7-.7-2.2-1.2-3.4.4.1.8.1 1.2.1 4.4 0 8-3.4 8-7.5 0-2.4-1.2-4.6-3.1-6m-38.5 1.4c-3-2.1-10.9-10.8-4.4-11.1 4-.2 13.7 3.1 14.3 6.8.5 2.6-6.8 6.4-9.9 4.3m19.1 7.9c-1.5 1.4-7.2 1.4-8.8 0-1.4-1.4.9-2.4 1.8-3.8 1-1.7 1.4-3.2 2.6-3.2 1.2 0 1.7 1.5 2.6 3.2.9 1.4 3.3 2.5 1.8 3.8m10.4-7.9c-3 2.1-10.3-1.8-9.9-4.3.6-3.7 10.3-7 14.3-6.8 6.5.4-1.4 9.1-4.4 11.1" fill="#bab6b6"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f481-1f3fb.svg b/riot/emojione/svg/1f481-1f3fb.svg new file mode 100644 index 0000000..94f0d9f --- /dev/null +++ b/riot/emojione/svg/1f481-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26.9,2C12.5,2,4.6,11,4.6,22.9V60h44.6V22.9c0-17.7-12.1-17.4-12.1-17.4S36.2,2,26.9,2z" fill="#594640"/><path d="m36.8 49.1v-7.1h-19.8v7.1c-12.5.3-15 2.4-15 12.9h49.8c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m46.8 62l-.9-19.3c0 0 10.3 1.9 15-3.3 4.3-4.7-5.7-.3-11.1-1.9-2-.6-7.2-1.8-8.6 1.6-1.4 3.8-2.4 22.9-2.4 22.9h8" fill="#ffe1bd"/><path d="m47.3 62l-1.1-19-6.8-.1c0 6.5-1.5 19.1-1.5 19.1h9.4" fill="#cba7f9"/><path d="m10.3 33c0 0-3.3-.9-3.3-5.8 0-3.9 2.5-4.6 2.5-4.6 9 0 25.8-11.7 25.8-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.2 16.4-16.4 16.4s-16.6-9-16.6-16.4" fill="#ffe1bd"/><path d="m26.9 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#e6b796"/><path d="m31.7 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><ellipse cx="36" cy="27.4" rx="3.4" ry="3.5" fill="#664e27"/><circle cx="36" cy="27.4" r="1.1" fill="#2b2925"/><path d="m30.7 29.6c1.7-10.5 10.3-3.5 13.8-5-3.5 3.3-10.4-3.8-13.8 5" fill="#3b3226"/><path d="m22 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><path d="m14.2 27.4c0 1.9 1.5 3.5 3.4 3.5 1.9 0 3.4-1.5 3.4-3.5 0-1.9-1.5-3.5-3.4-3.5-1.8.1-3.4 1.6-3.4 3.5" fill="#664e27"/><path d="m23 29.6c-1.7-10.5-10.3-3.5-13.8-5 3.5 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m26.9 41.7l-7.7-1.2c4.6 6.6 10.7 6.6 15.3 0l-7.6 1.2" fill="#e08672"/><path d="m29.9 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.6.3-4.6.3 3.1.7 3.4 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9-.2 0-3.1.4-4.8-.3" fill="#b86e5d"/><circle cx="17.7" cy="27.4" r="1.1" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f481-1f3fc.svg b/riot/emojione/svg/1f481-1f3fc.svg new file mode 100644 index 0000000..4094b08 --- /dev/null +++ b/riot/emojione/svg/1f481-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26.9,2C12.5,2,4.6,11,4.6,22.9V60h44.6V22.9c0-17.7-12.1-17.4-12.1-17.4S36.2,2,26.9,2z" fill="#dbb471"/><path d="m36.8 49.1v-7.1h-19.8v7.1c-12.5.3-15 2.4-15 12.9h49.8c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m46.8 62l-.9-19.3c0 0 10.3 1.9 15-3.3 4.3-4.7-5.7-.3-11.1-1.9-2-.6-7.2-1.8-8.6 1.6-1.4 3.8-2.4 22.9-2.4 22.9h8" fill="#fed0ac"/><path d="m47.3 62l-1.1-19-6.8-.1c0 6.5-1.5 19.1-1.5 19.1h9.4" fill="#cba7f9"/><path d="m10.3 33c0 0-3.3-.9-3.3-5.8 0-3.9 2.5-4.6 2.5-4.6 9 0 25.8-11.7 25.8-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.2 16.4-16.4 16.4-6.2 0-16.6-9-16.6-16.4" fill="#fed0ac"/><path d="m26.9 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#e0a372"/><path d="m31.7 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m39.5 27.4c0 1.9-1.5 3.5-3.4 3.5-1.9 0-3.4-1.5-3.4-3.5 0-1.9 1.5-3.5 3.4-3.5 1.8.1 3.4 1.6 3.4 3.5" fill="#664e27"/><circle cx="36" cy="27.4" r="1.1" fill="#2b2925"/><path d="m30.7 29.6c1.7-10.5 10.3-3.5 13.8-5-3.5 3.3-10.4-3.8-13.8 5" fill="#3b3226"/><path d="m22.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><path d="m14.2 27.4c0 1.9 1.5 3.5 3.4 3.5 1.9 0 3.4-1.5 3.4-3.5 0-1.9-1.5-3.5-3.4-3.5-1.8.1-3.4 1.6-3.4 3.5" fill="#664e27"/><path d="m23 29.6c-1.7-10.5-10.3-3.5-13.8-5 3.5 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m26.9 41.7l-7.7-1.2c4.6 6.6 10.7 6.6 15.3 0l-7.6 1.2" fill="#e08672"/><path d="m29.9 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.6.3-4.6.3 3.1.7 3.4 1.9 7.7 1.9s4.6-1.3 7.7-1.9c-.2 0-3.1.4-4.8-.3" fill="#b86e5d"/><circle cx="17.7" cy="27.4" r="1.1" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f481-1f3fd.svg b/riot/emojione/svg/1f481-1f3fd.svg new file mode 100644 index 0000000..502cf7b --- /dev/null +++ b/riot/emojione/svg/1f481-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26.9,2C12.5,2,4.6,11,4.6,22.9V60h44.6V22.9c0-17.7-12.1-17.4-12.1-17.4S36.2,2,26.9,2z" fill="#594640"/><path d="m36.8 49.1v-7.1h-19.8v7.1c-12.5.3-15 2.4-15 12.9h49.8c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m46.8 62l-.9-19.3c0 0 10.3 1.9 15-3.3 4.3-4.7-5.7-.3-11.1-1.9-2-.6-7.2-1.8-8.6 1.6-1.4 3.8-2.4 22.9-2.4 22.9h8" fill="#d6a57c"/><path d="m47.3 62l-1.1-19-6.8-.1c0 6.5-1.5 19.1-1.5 19.1h9.4" fill="#cba7f9"/><path d="m10.3 33c0 0-3.3-.9-3.3-5.8 0-3.9 2.5-4.6 2.5-4.6 9 0 25.8-11.7 25.8-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.2 16.4-16.4 16.4-6.2 0-16.6-9-16.6-16.4" fill="#d6a57c"/><path d="m26.9 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#b58360"/><path d="m31.7 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m39.5 27.4c0 1.9-1.5 3.5-3.4 3.5-1.9 0-3.4-1.5-3.4-3.5 0-1.9 1.5-3.5 3.4-3.5 1.8.1 3.4 1.6 3.4 3.5" fill="#664e27"/><circle cx="36" cy="27.4" r="1.1" fill="#2b2925"/><path d="m30.7 29.6c1.7-10.5 10.3-3.5 13.8-5-3.5 3.3-10.4-3.8-13.8 5" fill="#3b3226"/><path d="m22 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><path d="m14.2 27.4c0 1.9 1.5 3.5 3.4 3.5 1.9 0 3.4-1.5 3.4-3.5 0-1.9-1.5-3.5-3.4-3.5-1.8.1-3.4 1.6-3.4 3.5" fill="#664e27"/><path d="m23 29.6c-1.7-10.5-10.3-3.5-13.8-5 3.5 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m26.9 41.7l-7.7-1.2c4.6 6.6 10.7 6.6 15.3 0l-7.6 1.2" fill="#b58360"/><path d="m29.9 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.6.3-4.6.3 3.1.7 3.4 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9-.2 0-3.1.4-4.8-.3" fill="#805c44"/><circle cx="17.7" cy="27.4" r="1.1" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f481-1f3fe.svg b/riot/emojione/svg/1f481-1f3fe.svg new file mode 100644 index 0000000..d233832 --- /dev/null +++ b/riot/emojione/svg/1f481-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26.9,2C12.5,2,4.6,11,4.6,22.9V60h44.6V22.9c0-17.7-12.1-17.4-12.1-17.4S36.2,2,26.9,2z" fill="#231f20"/><path d="m36.8 49.1v-7.1h-19.8v7.1c-12.5.3-15 2.4-15 12.9h49.8c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m46.8 62l-.9-19.3c0 0 10.3 1.9 15-3.3 4.3-4.7-5.7-.3-11.1-1.9-2-.6-7.2-1.8-8.6 1.6-1.4 3.8-2.4 22.9-2.4 22.9h8" fill="#b47d56"/><path d="m47.3 62l-1.1-19-6.8-.1c0 6.5-1.5 19.1-1.5 19.1h9.4" fill="#cba7f9"/><path d="m10.3 33c0 0-3.3-.9-3.3-5.8 0-3.9 2.5-4.6 2.5-4.6 9 0 25.8-11.7 25.8-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.2 16.4-16.4 16.4-6.2 0-16.6-9-16.6-16.4" fill="#b47d56"/><path d="m26.9 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#935e3e"/><path d="m31.7 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m39.5 27.4c0 1.9-1.5 3.5-3.4 3.5-1.9 0-3.4-1.5-3.4-3.5 0-1.9 1.5-3.5 3.4-3.5 1.8.1 3.4 1.6 3.4 3.5" fill="#664e27"/><circle cx="36" cy="27.4" r="1.1" fill="#2b2925"/><path d="m30.7 29.6c1.7-10.5 10.3-3.5 13.8-5-3.5 3.3-10.4-3.8-13.8 5" fill="#3b3226"/><path d="m22 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><ellipse cx="17.7" cy="27.4" rx="3.4" ry="3.5" fill="#664e27"/><path d="m23 29.6c-1.7-10.5-10.3-3.5-13.8-5 3.5 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m26.9 41.7l-7.7-1.2c4.6 6.6 10.7 6.6 15.3 0l-7.6 1.2" fill="#935e3e"/><path d="m29.9 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.6.3-4.6.3 3.1.7 3.4 1.9 7.7 1.9s4.6-1.3 7.7-1.9c-.2 0-3.1.4-4.8-.3" fill="#734c31"/><circle cx="17.7" cy="27.4" r="1.1" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f481-1f3ff.svg b/riot/emojione/svg/1f481-1f3ff.svg new file mode 100644 index 0000000..64f4c49 --- /dev/null +++ b/riot/emojione/svg/1f481-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26.9,2C12.5,2,4.6,11,4.6,22.9V60h44.6V22.9c0-17.7-12.1-17.4-12.1-17.4S36.2,2,26.9,2z" fill="#231f20"/><path d="m36.8 49.1v-7.1h-19.8v7.1c-12.5.3-15 2.4-15 12.9h49.8c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m46.8 62l-.9-19.3c0 0 10.3 1.9 15-3.3 4.3-4.7-5.7-.3-11.1-1.9-2-.6-7.2-1.8-8.6 1.6-1.4 3.8-2.4 22.9-2.4 22.9h8" fill="#8a6859"/><path d="m47.3 62l-1.1-19-6.8-.1c0 6.5-1.5 19.1-1.5 19.1h9.4" fill="#cba7f9"/><path d="m10.3 33c0 0-3.3-.9-3.3-5.8 0-3.9 2.5-4.6 2.5-4.6 9 0 25.8-11.7 25.8-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.2 16.4-16.4 16.4-6.2 0-16.6-9-16.6-16.4" fill="#8a6859"/><path d="m26.9 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#705041"/><path d="m31.7 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m39.5 27.4c0 1.9-1.5 3.5-3.4 3.5-1.9 0-3.4-1.5-3.4-3.5 0-1.9 1.5-3.5 3.4-3.5 1.8.1 3.4 1.6 3.4 3.5" fill="#664e27"/><circle cx="36" cy="27.4" r="1.1" fill="#2b2925"/><path d="m30.7 29.6c1.7-10.5 10.3-3.5 13.8-5-3.5 3.3-10.4-3.8-13.8 5" fill="#3b3226"/><path d="m22.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><path d="m14.2 27.4c0 1.9 1.5 3.5 3.4 3.5 1.9 0 3.4-1.5 3.4-3.5 0-1.9-1.5-3.5-3.4-3.5-1.8.1-3.4 1.6-3.4 3.5" fill="#664e27"/><path d="m23 29.6c-1.7-10.5-10.3-3.5-13.8-5 3.5 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m26.9 41.7l-7.7-1.2c4.6 6.6 10.7 6.6 15.3 0l-7.6 1.2" fill="#7d5442"/><path d="m29.9 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.6.3-4.6.3 3.1.7 3.4 1.9 7.7 1.9s4.6-1.3 7.7-1.9c-.2 0-3.1.4-4.8-.3" fill="#5c3f34"/><circle cx="17.7" cy="27.4" r="1.1" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f481.svg b/riot/emojione/svg/1f481.svg new file mode 100644 index 0000000..324606f --- /dev/null +++ b/riot/emojione/svg/1f481.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M26.9,2C12.5,2,4.6,11,4.6,22.9V60h44.6V22.9c0-17.7-12.1-17.4-12.1-17.4S36.2,2,26.9,2z" fill="#ffb300"/><path d="m36.8 49.1v-7.1h-19.8v7.1c-12.5.3-15 2.4-15 12.9h49.8c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m46.8 62l-.9-19.3c0 0 10.3 1.9 15-3.3 4.3-4.7-5.7-.3-11.1-1.9-2-.6-7.2-1.8-8.6 1.6-1.4 3.8-2.4 22.9-2.4 22.9h8" fill="#ffdd67"/><path d="m47.3 62l-1.1-19-6.8-.1c0 6.5-1.5 19.1-1.5 19.1h9.4" fill="#cba7f9"/><path d="m10.3 33c0 0-3.3-.9-3.3-5.8 0-3.9 2.5-4.6 2.5-4.6 9 0 25.8-11.7 25.8-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.2 16.4-16.4 16.4-6.2 0-16.6-9-16.6-16.4" fill="#ffdd67"/><path d="m26.9 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#eba352"/><path d="m31.7 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m39.5 27.4c0 1.9-1.5 3.5-3.4 3.5-1.9 0-3.4-1.5-3.4-3.5 0-1.9 1.5-3.5 3.4-3.5 1.8.1 3.4 1.6 3.4 3.5" fill="#664e27"/><circle cx="36" cy="27.4" r="1.1" fill="#2b2925"/><path d="m30.7 29.6c1.7-10.5 10.3-3.5 13.8-5-3.5 3.3-10.4-3.8-13.8 5" fill="#3b3226"/><path d="m22 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><ellipse cx="17.7" cy="27.4" rx="3.4" ry="3.5" fill="#664e27"/><path d="m23 29.6c-1.7-10.5-10.3-3.5-13.8-5 3.5 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m26.9 41.7l-7.7-1.2c4.6 6.6 10.7 6.6 15.3 0l-7.6 1.2" fill="#f09985"/><path d="m29.9 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.6.3-4.6.3 3.1.7 3.4 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9-.2 0-3.1.4-4.8-.3" fill="#d47f6c"/><circle cx="17.7" cy="27.4" r="1.1" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f482-1f3fb.svg b/riot/emojione/svg/1f482-1f3fb.svg new file mode 100644 index 0000000..12ecea3 --- /dev/null +++ b/riot/emojione/svg/1f482-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 43.9c-3.2-1.2-2.1-6.8-2.1-6.8h-36.6c0 0 1.1 5.6-2.1 6.8 0 0-2.6-.3-2.6 2.7 0 3.7 2.7 3 2.7 3 0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4 0 0 2.7.6 2.7-3 0-3-2.6-2.7-2.6-2.7" fill="#ffe1bd"/><path d="m50.5 38.6v10.9c0 5-5.2 10.4-18.4 10.4s-18.4-5.3-18.4-10.4v-10.9h-1.9v11.9c0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4v-11.9h-1.9" fill="#454749"/><g fill="#fff"><ellipse cx="41.5" cy="46" rx="5.3" ry="5.3"/><ellipse cx="22.5" cy="46" rx="5.3" ry="5.3"/></g><g fill="#664e27"><path d="m26.5 53.9c-.1.1-.2.3-.2.5 0 1.3 2.6 2.9 5.8 2.9 3.2 0 5.8-1.6 5.8-2.9 0-.2 0-.4-.1-.5 0 0-2.5 1.1-5.6 1.1-3.3 0-5.7-1.1-5.7-1.1"/><circle cx="41.5" cy="46" r="3.8"/></g><path d="m42.7 46c0 .7-.6 1.3-1.2 1.3-.7 0-1.3-.6-1.3-1.3s.6-1.3 1.3-1.3c.6 0 1.2.6 1.2 1.3" fill="#231f20"/><circle cx="22.5" cy="46" r="3.8" fill="#664e27"/><circle cx="22.5" cy="46" r="1.2" fill="#231f20"/><path d="m57.3 36.8c2.6-.2 4.7-2.1 4.7-2.1-1.4-.5-2.7-2.6-3.9-3.1 1.3-.2 2.4-2.1 3.7-2.9-.7-.2-3.2-1.9-4-2.1 1.3-.6 2.6-1.6 3.8-2.8-1.1-.1-2.8-2.2-3.4-2.2 2.2-1 3.2-2.9 3.2-2.9-1 .1-2.3-1.7-3.5-1.8 2.4-1.5 2.2-4.3 2.2-4.3-1.4.9-3.5.2-4.1.4 1.2-1.9.7-4.4.7-4.4-1 1.3-2.4.8-3.1 1.2.3-.9-.6-2.7-.3-3.8-1 1-2.9.9-3.6 2.1.2-1.2-.7-2.9-.8-4.3-.8.9-2.6 2.2-2.9 2.9-.1-1-1.4-2.4-1.8-3.5-.3.7-2 2.6-2.3 3.1-.2-1.7-.5-1.9-1.2-3.1-.2.8-1.9 1.7-2.4 3.1-.4-2-1.4-3.1-1.9-3.9-.3 1-2 2.4-2.2 3.1-.4-1.4-2.2-3.5-2.2-3.5s-1.8 2.1-2.2 3.5c-.2-.6-1.9-2.1-2.2-3.1-.4.8-1.5 1.9-1.9 3.9-.4-1.4-2.1-2.2-2.4-3.1-.6 1.2-1 1.4-1.2 3.1-.3-.5-2-2.3-2.3-3.1-.4 1-1.6 2.4-1.8 3.5-.3-.7-2.1-2-2.8-2.8-.2 1.4-1.1 3.1-.8 4.3-.7-1.3-2.5-1.2-3.5-2.2.3 1.1-.6 2.8-.3 3.8-.8-.4-2.2.1-3.2-1.2 0 0-.5 2.4.7 4.4-.6-.2-2.7.4-4.1-.4 0 0-.2 2.8 2.2 4.3-1.2.1-2.6 1.8-3.6 1.8 0 0 1 1.9 3.2 2.9-.5 0-2.3 2.2-3.4 2.2 1.2 1.2 2.4 2.2 3.8 2.8-.8.2-3.3 1.9-4 2.1 1.3.8 2.4 2.7 3.7 2.9-1.2.5-2.5 2.6-3.9 3.1 0 0 2.1 1.9 4.7 2.1-1.1.4-.5 2.5-3.2 4.5 3.3-.6 3.7.5 6.7-1 0 0 .5 2.3-.9 3.4 0 0 4.5 1.8 7.4-4-.2 1.2 1.9 1.8 2.5 4.1 2.7-2.6 3.1-5.1 3.1-5.1.4 2.9 4.1 4 4 5.2 1.2-.9 3-2.2 3.3-4.1 1.8 2 1.2 5 1.2 5s3.8-1.3 4.9-5c.2 1.9 1 3.1 2.1 4-.1-1.2 3.6-2.3 4-5.2 0 0 .4 2.5 3.1 5.1.5-2.4 2.6-2.9 2.5-4.1 2.9 5.8 7.4 4 7.4 4-1.4-1.1-.9-3.4-.9-3.4 3 1.5 3.4.4 6.7 1-2.8-1.9-2.2-4-3.3-4.4" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f482-1f3fc.svg b/riot/emojione/svg/1f482-1f3fc.svg new file mode 100644 index 0000000..0a822b8 --- /dev/null +++ b/riot/emojione/svg/1f482-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 43.9c-3.2-1.2-2.1-6.8-2.1-6.8h-36.6c0 0 1.1 5.6-2.1 6.8 0 0-2.6-.3-2.6 2.7 0 3.7 2.7 3 2.7 3 0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4 0 0 2.7.6 2.7-3 0-3-2.6-2.7-2.6-2.7" fill="#fed0ac"/><path d="m50.5 38.6v10.9c0 5-5.2 10.4-18.4 10.4-13.2 0-18.4-5.3-18.4-10.4v-10.9h-1.9v11.9c0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4v-11.9h-1.9" fill="#454749"/><g fill="#fff"><ellipse cx="41.5" cy="46" rx="5.3" ry="5.3"/><ellipse cx="22.6" cy="46" rx="5.3" ry="5.3"/></g><g fill="#664e27"><path d="m26.5 53.9c-.1.1-.2.3-.2.5 0 1.3 2.6 2.9 5.8 2.9s5.8-1.6 5.8-2.9c0-.2 0-.4-.1-.5 0 0-2.5 1.1-5.6 1.1-3.3 0-5.7-1.1-5.7-1.1"/><circle cx="41.5" cy="46" r="3.8"/></g><path d="m42.7 46c0 .7-.6 1.3-1.2 1.3-.7 0-1.3-.6-1.3-1.3s.6-1.3 1.3-1.3c.6 0 1.2.6 1.2 1.3" fill="#231f20"/><circle cx="22.5" cy="46" r="3.8" fill="#664e27"/><circle cx="22.5" cy="46" r="1.2" fill="#231f20"/><path d="m57.3 36.8c2.6-.2 4.7-2.1 4.7-2.1-1.4-.5-2.7-2.6-3.9-3.1 1.3-.2 2.4-2.1 3.7-2.9-.7-.2-3.2-1.9-4-2.1 1.3-.6 2.6-1.6 3.8-2.8-1.1-.1-2.8-2.2-3.4-2.2 2.2-1 3.2-2.9 3.2-2.9-1 .1-2.3-1.7-3.5-1.8 2.4-1.5 2.2-4.3 2.2-4.3-1.4.9-3.5.2-4.1.4 1.2-1.9.7-4.4.7-4.4-1 1.3-2.4.8-3.1 1.2.3-.9-.6-2.7-.3-3.8-1 1-2.9.9-3.6 2.1.2-1.2-.7-2.9-.8-4.3-.8.9-2.6 2.2-2.9 2.9-.1-1-1.4-2.4-1.8-3.5-.3.7-2 2.6-2.3 3.1-.2-1.7-.5-1.9-1.2-3.1-.2.8-1.9 1.7-2.4 3.1-.4-2-1.4-3.1-1.9-3.9-.3 1-2 2.4-2.2 3.1-.4-1.4-2.2-3.5-2.2-3.5s-1.8 2.1-2.2 3.5c-.2-.6-1.9-2.1-2.2-3.1-.4.8-1.5 1.9-1.9 3.9-.4-1.4-2.1-2.2-2.4-3.1-.7 1.2-1 1.4-1.2 3.1-.3-.5-2-2.3-2.3-3.1-.4 1-1.6 2.4-1.8 3.5-.3-.7-2.1-2-2.8-2.8-.2 1.4-1.1 3.1-.8 4.3-.7-1.3-2.5-1.2-3.5-2.2.3 1.1-.6 2.8-.3 3.8-.8-.4-2.2.1-3.2-1.2 0 0-.5 2.4.7 4.4-.6-.2-2.7.4-4.1-.4 0 0-.2 2.8 2.2 4.3-1.2.1-2.6 1.8-3.6 1.8 0 0 1 1.9 3.2 2.9-.5 0-2.3 2.2-3.4 2.2 1.2 1.2 2.4 2.2 3.8 2.8-.8.2-3.3 1.9-4 2.1 1.3.8 2.4 2.7 3.7 2.9-1.2.5-2.5 2.6-3.9 3.1 0 0 2.1 1.9 4.7 2.1-1.1.4-.5 2.5-3.2 4.5 3.3-.6 3.7.5 6.7-1 0 0 .5 2.3-.9 3.4 0 0 4.5 1.8 7.4-4-.2 1.2 1.9 1.8 2.5 4.1 2.7-2.6 3.1-5.1 3.1-5.1.4 2.9 4.1 4 4 5.2 1.2-.9 3-2.2 3.3-4.1 1.8 2 1.2 5 1.2 5s3.8-1.3 4.9-5c.2 1.9 1 3.1 2.1 4-.1-1.2 3.6-2.3 4-5.2 0 0 .4 2.5 3.1 5.1.5-2.4 2.6-2.9 2.5-4.1 2.9 5.8 7.4 4 7.4 4-1.4-1.1-.9-3.4-.9-3.4 3 1.5 3.4.4 6.7 1-2.8-1.9-2.2-4-3.3-4.4" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f482-1f3fd.svg b/riot/emojione/svg/1f482-1f3fd.svg new file mode 100644 index 0000000..3048f05 --- /dev/null +++ b/riot/emojione/svg/1f482-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 43.9c-3.2-1.2-2.1-6.8-2.1-6.8h-36.6c0 0 1.1 5.6-2.1 6.8 0 0-2.6-.3-2.6 2.7 0 3.7 2.7 3 2.7 3 0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4 0 0 2.7.6 2.7-3 0-3-2.6-2.7-2.6-2.7" fill="#d6a57c"/><path d="m50.5 38.6v10.9c0 5-5.2 10.4-18.4 10.4-13.2 0-18.4-5.3-18.4-10.4v-10.9h-1.9v11.9c0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4v-11.9h-1.9" fill="#454749"/><g fill="#fff"><ellipse cx="41.5" cy="46" rx="5.3" ry="5.3"/><ellipse cx="22.6" cy="46" rx="5.3" ry="5.3"/></g><g fill="#664e27"><path d="m26.5 53.9c-.1.1-.2.3-.2.5 0 1.3 2.6 2.9 5.8 2.9s5.8-1.6 5.8-2.9c0-.2 0-.4-.1-.5 0 0-2.5 1.1-5.6 1.1-3.3 0-5.7-1.1-5.7-1.1"/><circle cx="41.5" cy="46" r="3.8"/></g><path d="m42.7 46c0 .7-.6 1.3-1.2 1.3-.7 0-1.3-.6-1.3-1.3s.6-1.3 1.3-1.3c.6 0 1.2.6 1.2 1.3" fill="#231f20"/><circle cx="22.5" cy="46" r="3.8" fill="#664e27"/><circle cx="22.5" cy="46" r="1.2" fill="#231f20"/><path d="m57.3 36.8c2.6-.2 4.7-2.1 4.7-2.1-1.4-.5-2.7-2.6-3.9-3.1 1.3-.2 2.4-2.1 3.7-2.9-.7-.2-3.2-1.9-4-2.1 1.3-.6 2.6-1.6 3.8-2.8-1.1-.1-2.8-2.2-3.4-2.2 2.2-1 3.2-2.9 3.2-2.9-1 .1-2.3-1.7-3.5-1.8 2.4-1.5 2.2-4.3 2.2-4.3-1.4.9-3.5.2-4.1.4 1.2-1.9.7-4.4.7-4.4-1 1.3-2.4.8-3.1 1.2.3-.9-.6-2.7-.3-3.8-1 1-2.9.9-3.6 2.1.2-1.2-.7-2.9-.8-4.3-.8.9-2.6 2.2-2.9 2.9-.1-1-1.4-2.4-1.8-3.5-.3.7-2 2.6-2.3 3.1-.2-1.7-.5-1.9-1.2-3.1-.2.8-1.9 1.7-2.4 3.1-.4-2-1.4-3.1-1.9-3.9-.3 1-2 2.4-2.2 3.1-.4-1.4-2.2-3.5-2.2-3.5s-1.8 2.1-2.2 3.5c-.2-.6-1.9-2.1-2.2-3.1-.4.8-1.5 1.9-1.9 3.9-.4-1.4-2.1-2.2-2.4-3.1-.7 1.2-1 1.4-1.2 3.1-.3-.5-2-2.3-2.3-3.1-.4 1-1.6 2.4-1.8 3.5-.3-.7-2.1-2-2.8-2.8-.2 1.4-1.1 3.1-.8 4.3-.7-1.3-2.5-1.2-3.5-2.2.3 1.1-.6 2.8-.3 3.8-.8-.4-2.2.1-3.2-1.2 0 0-.5 2.4.7 4.4-.6-.2-2.7.4-4.1-.4 0 0-.2 2.8 2.2 4.3-1.2.1-2.6 1.8-3.6 1.8 0 0 1 1.9 3.2 2.9-.5 0-2.3 2.2-3.4 2.2 1.2 1.2 2.4 2.2 3.8 2.8-.8.2-3.3 1.9-4 2.1 1.3.8 2.4 2.7 3.7 2.9-1.2.5-2.5 2.6-3.9 3.1 0 0 2.1 1.9 4.7 2.1-1.1.4-.5 2.5-3.2 4.5 3.3-.6 3.7.5 6.7-1 0 0 .5 2.3-.9 3.4 0 0 4.5 1.8 7.4-4-.2 1.2 1.9 1.8 2.5 4.1 2.7-2.6 3.1-5.1 3.1-5.1.4 2.9 4.1 4 4 5.2 1.2-.9 3-2.2 3.3-4.1 1.8 2 1.2 5 1.2 5s3.8-1.3 4.9-5c.2 1.9 1 3.1 2.1 4-.1-1.2 3.6-2.3 4-5.2 0 0 .4 2.5 3.1 5.1.5-2.4 2.6-2.9 2.5-4.1 2.9 5.8 7.4 4 7.4 4-1.4-1.1-.9-3.4-.9-3.4 3 1.5 3.4.4 6.7 1-2.8-1.9-2.2-4-3.3-4.4" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f482-1f3fe.svg b/riot/emojione/svg/1f482-1f3fe.svg new file mode 100644 index 0000000..ece9fd3 --- /dev/null +++ b/riot/emojione/svg/1f482-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 43.9c-3.2-1.2-2.1-6.8-2.1-6.8h-36.6c0 0 1.1 5.6-2.1 6.8 0 0-2.6-.3-2.6 2.7 0 3.7 2.7 3 2.7 3 0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4 0 0 2.7.6 2.7-3 0-3-2.6-2.7-2.6-2.7" fill="#b47d56"/><path d="m50.5 38.6v10.9c0 5-5.2 10.4-18.4 10.4-13.2 0-18.4-5.3-18.4-10.4v-10.9h-1.9v11.9c0 5.6 5.7 11.4 20.3 11.4s20.3-5.9 20.3-11.4v-11.9h-1.9" fill="#454749"/><g fill="#fff"><ellipse cx="41.5" cy="46" rx="5.3" ry="5.3"/><ellipse cx="22.6" cy="46" rx="5.3" ry="5.3"/></g><g fill="#664e27"><path d="m26.5 53.9c-.1.1-.2.3-.2.5 0 1.3 2.6 2.9 5.8 2.9s5.8-1.6 5.8-2.9c0-.2 0-.4-.1-.5 0 0-2.5 1.1-5.6 1.1-3.3 0-5.7-1.1-5.7-1.1"/><circle cx="41.5" cy="46" r="3.8"/></g><path d="m42.7 46c0 .7-.6 1.3-1.2 1.3-.7 0-1.2-.6-1.2-1.3s.6-1.3 1.2-1.3c.6 0 1.2.6 1.2 1.3" fill="#231f20"/><circle cx="22.5" cy="46" r="3.8" fill="#664e27"/><circle cx="22.5" cy="46" r="1.2" fill="#231f20"/><path d="m57.3 36.8c2.6-.2 4.7-2.1 4.7-2.1-1.4-.5-2.7-2.6-3.9-3.1 1.3-.2 2.4-2.1 3.7-2.9-.7-.2-3.2-1.9-4-2.1 1.3-.6 2.6-1.6 3.8-2.8-1.1-.1-2.8-2.2-3.4-2.2 2.2-1 3.2-2.9 3.2-2.9-1 .1-2.3-1.7-3.5-1.8 2.4-1.5 2.2-4.3 2.2-4.3-1.4.9-3.5.2-4.1.4 1.2-1.9.7-4.4.7-4.4-1 1.3-2.4.8-3.1 1.2.3-.9-.6-2.7-.3-3.8-1 1-2.9.9-3.6 2.1.2-1.2-.7-2.9-.8-4.3-.8.9-2.6 2.2-2.9 2.9-.1-1-1.4-2.4-1.8-3.5-.3.7-2 2.6-2.3 3.1-.2-1.7-.5-1.9-1.2-3.1-.2.8-1.9 1.7-2.4 3.1-.4-2-1.4-3.1-1.9-3.9-.3 1-2 2.4-2.2 3.1-.4-1.4-2.2-3.5-2.2-3.5s-1.8 2.1-2.2 3.5c-.2-.6-1.9-2.1-2.2-3.1-.4.8-1.5 1.9-1.9 3.9-.4-1.4-2.1-2.2-2.4-3.1-.7 1.2-1 1.4-1.2 3.1-.3-.5-2-2.3-2.3-3.1-.4 1-1.6 2.4-1.8 3.5-.3-.7-2.1-2-2.8-2.8-.2 1.4-1.1 3.1-.8 4.3-.7-1.3-2.5-1.2-3.5-2.2.3 1.1-.6 2.8-.3 3.8-.8-.4-2.2.1-3.2-1.2 0 0-.5 2.4.7 4.4-.6-.2-2.7.4-4.1-.4 0 0-.2 2.8 2.2 4.3-1.2.1-2.6 1.8-3.6 1.8 0 0 1 1.9 3.2 2.9-.5 0-2.3 2.2-3.4 2.2 1.2 1.2 2.4 2.2 3.8 2.8-.8.2-3.3 1.9-4 2.1 1.3.8 2.4 2.7 3.7 2.9-1.2.5-2.5 2.6-3.9 3.1 0 0 2.1 1.9 4.7 2.1-1.1.4-.5 2.5-3.2 4.5 3.3-.6 3.7.5 6.7-1 0 0 .5 2.3-.9 3.4 0 0 4.5 1.8 7.4-4-.2 1.2 1.9 1.8 2.5 4.1 2.7-2.6 3.1-5.1 3.1-5.1.4 2.9 4.1 4 4 5.2 1.2-.9 3-2.2 3.3-4.1 1.8 2 1.2 5 1.2 5s3.8-1.3 4.9-5c.2 1.9 1 3.1 2.1 4-.1-1.2 3.6-2.3 4-5.2 0 0 .4 2.5 3.1 5.1.5-2.4 2.6-2.9 2.5-4.1 2.9 5.8 7.4 4 7.4 4-1.4-1.1-.9-3.4-.9-3.4 3 1.5 3.4.4 6.7 1-2.8-1.9-2.2-4-3.3-4.4" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f482-1f3ff.svg b/riot/emojione/svg/1f482-1f3ff.svg new file mode 100644 index 0000000..c59625b --- /dev/null +++ b/riot/emojione/svg/1f482-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 43.9c-3.2-1.2-2.1-6.8-2.1-6.8h-36.6c0 0 1.1 5.6-2.1 6.8 0 0-2.6-.3-2.6 2.7 0 3.7 2.7 3 2.7 3 0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4 0 0 2.7.6 2.7-3 0-3-2.6-2.7-2.6-2.7" fill="#8a6859"/><path d="m50.5 38.6v10.9c0 5-5.2 10.4-18.4 10.4-13.2 0-18.4-5.3-18.4-10.4v-10.9h-1.9v11.9c0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4v-11.9h-1.9" fill="#454749"/><g fill="#fff"><ellipse cx="41.5" cy="46" rx="5.3" ry="5.3"/><ellipse cx="22.6" cy="46" rx="5.3" ry="5.3"/></g><path d="m26.5 53.9c-.1.1-.2.3-.2.5 0 1.3 2.6 2.9 5.8 2.9s5.8-1.6 5.8-2.9c0-.2 0-.4-.1-.5 0 0-2.5 1.1-5.6 1.1-3.3 0-5.7-1.1-5.7-1.1" fill="#574137"/><circle cx="41.5" cy="46" r="3.8" fill="#664e27"/><circle cx="41.5" cy="46" r="1.2" fill="#231f20"/><circle cx="22.5" cy="46" r="3.8" fill="#664e27"/><circle cx="22.6" cy="46" r="1.2" fill="#231f20"/><path d="m57.3 36.8c2.6-.2 4.7-2.1 4.7-2.1-1.4-.5-2.7-2.6-3.9-3.1 1.3-.2 2.4-2.1 3.7-2.9-.7-.2-3.2-1.9-4-2.1 1.3-.6 2.6-1.6 3.8-2.8-1.1-.1-2.8-2.2-3.4-2.2 2.2-1 3.2-2.9 3.2-2.9-1 .1-2.3-1.7-3.5-1.8 2.4-1.5 2.2-4.3 2.2-4.3-1.4.9-3.5.2-4.1.4 1.2-1.9.7-4.4.7-4.4-1 1.3-2.4.8-3.1 1.2.3-.9-.6-2.7-.3-3.8-1 1-2.9.9-3.6 2.1.2-1.2-.7-2.9-.8-4.3-.8.9-2.6 2.2-2.9 2.9-.1-1-1.4-2.4-1.8-3.5-.3.7-2 2.6-2.3 3.1-.2-1.7-.5-1.9-1.2-3.1-.2.8-1.9 1.7-2.4 3.1-.4-2-1.4-3.1-1.9-3.9-.3 1-2 2.4-2.2 3.1-.4-1.4-2.2-3.5-2.2-3.5s-1.8 2.1-2.2 3.5c-.2-.6-1.9-2.1-2.2-3.1-.4.8-1.5 1.9-1.9 3.9-.4-1.4-2.1-2.2-2.4-3.1-.7 1.2-1 1.4-1.2 3.1-.3-.5-2-2.3-2.3-3.1-.4 1-1.6 2.4-1.8 3.5-.3-.7-2.1-2-2.8-2.8-.2 1.4-1.1 3.1-.8 4.3-.7-1.3-2.5-1.2-3.5-2.2.3 1.1-.6 2.8-.3 3.8-.8-.4-2.2.1-3.2-1.2 0 0-.5 2.4.7 4.4-.6-.2-2.7.4-4.1-.4 0 0-.2 2.8 2.2 4.3-1.2.1-2.6 1.8-3.6 1.8 0 0 1 1.9 3.2 2.9-.5 0-2.3 2.2-3.4 2.2 1.2 1.2 2.4 2.2 3.8 2.8-.8.2-3.3 1.9-4 2.1 1.3.8 2.4 2.7 3.7 2.9-1.2.5-2.5 2.6-3.9 3.1 0 0 2.1 1.9 4.7 2.1-1.1.4-.5 2.5-3.2 4.5 3.3-.6 3.7.5 6.7-1 0 0 .5 2.3-.9 3.4 0 0 4.5 1.8 7.4-4-.2 1.2 1.9 1.8 2.5 4.1 2.7-2.6 3.1-5.1 3.1-5.1.4 2.9 4.1 4 4 5.2 1.2-.9 3-2.2 3.3-4.1 1.8 2 1.2 5 1.2 5s3.8-1.3 4.9-5c.2 1.9 1 3.1 2.1 4-.1-1.2 3.6-2.3 4-5.2 0 0 .4 2.5 3.1 5.1.5-2.4 2.6-2.9 2.5-4.1 2.9 5.8 7.4 4 7.4 4-1.4-1.1-.9-3.4-.9-3.4 3 1.5 3.4.4 6.7 1-2.8-1.9-2.2-4-3.3-4.4" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f482.svg b/riot/emojione/svg/1f482.svg new file mode 100644 index 0000000..a282862 --- /dev/null +++ b/riot/emojione/svg/1f482.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 43.9c-3.2-1.2-2.1-6.8-2.1-6.8h-36.6c0 0 1.1 5.6-2.1 6.8 0 0-2.6-.3-2.6 2.7 0 3.7 2.7 3 2.7 3 0 5.6 5.7 11.4 20.3 11.4 14.6 0 20.3-5.9 20.3-11.4 0 0 2.7.6 2.7-3 0-3-2.6-2.7-2.6-2.7" fill="#ffdd67"/><path d="m50.5 38.6v10.9c0 5-5.2 10.4-18.4 10.4-13.2 0-18.4-5.3-18.4-10.4v-10.9h-1.9v11.9c0 5.6 5.7 11.4 20.3 11.4s20.3-5.9 20.3-11.4v-11.9h-1.9" fill="#454749"/><g fill="#fff"><ellipse cx="41.5" cy="46" rx="5.3" ry="5.3"/><ellipse cx="22.6" cy="46" rx="5.3" ry="5.3"/></g><g fill="#664e27"><path d="m26.5 53.9c-.1.1-.2.3-.2.5 0 1.3 2.6 2.9 5.8 2.9s5.8-1.6 5.8-2.9c0-.2 0-.4-.1-.5 0 0-2.5 1.1-5.6 1.1-3.3 0-5.7-1.1-5.7-1.1"/><circle cx="41.5" cy="46" r="3.8"/></g><circle cx="41.5" cy="46" r="1.2" fill="#231f20"/><circle cx="22.5" cy="46" r="3.8" fill="#664e27"/><circle cx="22.5" cy="46" r="1.2" fill="#231f20"/><path d="m57.3 36.8c2.6-.2 4.7-2.1 4.7-2.1-1.4-.5-2.7-2.6-3.9-3.1 1.3-.2 2.4-2.1 3.7-2.9-.7-.2-3.2-1.9-4-2.1 1.3-.6 2.6-1.6 3.8-2.8-1.1-.1-2.8-2.2-3.4-2.2 2.2-1 3.2-2.9 3.2-2.9-1 .1-2.3-1.7-3.5-1.8 2.4-1.5 2.2-4.3 2.2-4.3-1.4.9-3.5.2-4.1.4 1.2-1.9.7-4.4.7-4.4-1 1.3-2.4.8-3.1 1.2.3-.9-.6-2.7-.3-3.8-1 1-2.9.9-3.6 2.1.2-1.2-.7-2.9-.8-4.3-.8.9-2.6 2.2-2.9 2.9-.1-1-1.4-2.4-1.8-3.5-.3.7-2 2.6-2.3 3.1-.2-1.7-.5-1.9-1.2-3.1-.2.8-1.9 1.7-2.4 3.1-.4-2-1.4-3.1-1.9-3.9-.3 1-2 2.4-2.2 3.1-.4-1.4-2.2-3.5-2.2-3.5s-1.8 2.1-2.2 3.5c-.2-.6-1.9-2.1-2.2-3.1-.4.8-1.5 1.9-1.9 3.9-.4-1.4-2.1-2.2-2.4-3.1-.7 1.2-1 1.4-1.2 3.1-.3-.5-2-2.3-2.3-3.1-.4 1-1.6 2.4-1.8 3.5-.3-.7-2.1-2-2.8-2.8-.2 1.4-1.1 3.1-.8 4.3-.7-1.3-2.5-1.2-3.5-2.2.3 1.1-.6 2.8-.3 3.8-.8-.4-2.2.1-3.2-1.2 0 0-.5 2.4.7 4.4-.6-.2-2.7.4-4.1-.4 0 0-.2 2.8 2.2 4.3-1.2.1-2.6 1.8-3.6 1.8 0 0 1 1.9 3.2 2.9-.5 0-2.3 2.2-3.4 2.2 1.2 1.2 2.4 2.2 3.8 2.8-.8.2-3.3 1.9-4 2.1 1.3.8 2.4 2.7 3.7 2.9-1.2.5-2.5 2.6-3.9 3.1 0 0 2.1 1.9 4.7 2.1-1.1.4-.5 2.5-3.2 4.5 3.3-.6 3.7.5 6.7-1 0 0 .5 2.3-.9 3.4 0 0 4.5 1.8 7.4-4-.2 1.2 1.9 1.8 2.5 4.1 2.7-2.6 3.1-5.1 3.1-5.1.4 2.9 4.1 4 4 5.2 1.2-.9 3-2.2 3.3-4.1 1.8 2 1.2 5 1.2 5s3.8-1.3 4.9-5c.2 1.9 1 3.1 2.1 4-.1-1.2 3.6-2.3 4-5.2 0 0 .4 2.5 3.1 5.1.5-2.4 2.6-2.9 2.5-4.1 2.9 5.8 7.4 4 7.4 4-1.4-1.1-.8-3.4-.8-3.4 3 1.5 3.4.4 6.7 1-2.9-1.9-2.3-4-3.4-4.4" fill="#454749"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f483-1f3fb.svg b/riot/emojione/svg/1f483-1f3fb.svg new file mode 100644 index 0000000..23026b5 --- /dev/null +++ b/riot/emojione/svg/1f483-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.6 33.8c-1.5 12.3-26.2 10.9-27.4 4.7-9.2 4.7-6.7 12-6.7 12 8.4 19 46.4-.2 34.1-16.7" fill="#b70b0b"/><path d="m44.3 52.5c3.1 1.9 1.3 4.3-3.3 2.3-3.9-1.7-.6-5.1.8-4 1.2 1.1 1.9 1.3 2.5 1.7" fill="#ff4848"/><path d="m41.6 52.3c-3.5-2.9-3-4.5-6.5-5.4-3.2-5.1-5.9-6.9-5.9-6.9-1.7 2.4-1 4.6-1 4.6s3.4 4.4 5.9 5.7c3.1 1.5 6.3 3.7 6.3 3.7 1.4 1.1 2.8-.4 1.2-1.7" fill="#ffe1bd"/><path d="m28.2 59.6c.1 3.9-5.8 2.3-3.7.6.3-.3.3-.9.1-1.4-1.3-3.7 3.2-4 3.3-2.3.1 1.5.3 2.4.3 3.1" fill="#ff4848"/><path d="m26.9 57.3c-.2-4.4 1.2-5.1-.5-8 .5-2.6-.7-6.7-.7-6.7-2.5.3-4 .7-4 .7s.6 5.2 1.4 7.7c1 3.1 1.6 6.7 1.6 6.7.2 1.8 2.4 1.6 2.2-.4" fill="#ffe1bd"/><path d="m37.1 10.6c2.7 7.6 11.9 10 17 3.1 2.6 10-11.1 14.5-19 14.8-24.4.7-21.8-13-21.8-14.7.1-15.4 19.6-14.9 23.8-3.2" fill="#594640"/><g fill="#ffe1bd"><path d="m41.1 32.7c-1.6-.9-2.2-1.2-2.7-.8l-7.2-4.6c-1.6-1.1-3.7-1.5-3.7-1.5-1.4 1.4.5 2.6.5 2.6l9.2 5.4-.3.6c-.3.4-.1 1 .3 1.3l.6.3c.3.2.7.2 1 0 .9.4 2.1.7 3-.8.1-.2.9-1.5-.7-2.5"/><path d="m14.7 26.8l-4.4-4.4c.4-.4.3-1 0-1.3l-.5-.5c-.3-.3-.7-.3-1-.2-.7-.6-1.9-1.2-3.1.1-.2.2-1.3 1.4.1 2.7 1.3 1.2 1.8 1.7 2.4 1.4l5.7 5.6 6.4-.6 1.5-3.5-7.1.7"/></g><path d="m24.9 47.7c10-3.3 11.6.3 24-.7 12.4-1 7.7-13.2 7.7-13.2-2 10.5-26 6.7-27.2.5 2.2-2.2 2-4.2-1.8-8.3 0 0-1.3 1.2-2.9 1.2-1.6 0-2.9-1.2-2.9-1.2-6.5 6.8-1.5 9-1.5 9 1.7 3.2-.8 7 2.2 15.6-.1-.1 1-2.4 2.4-2.9" fill="#ff4848"/><path d="m32.7 15.4c.2-4.4-1.9-4.8-1.9-4.8-9.6 0-14.5 4.8-14.5 4.8s-2.3-1.6-2.3 1.5c0 1.2.5 2.2 2 2.3.5 3.9 2.7 5.3 6 5.7v1.1h-.3l-2.1 3.3c0 .7 2.1-2 5 1.6 2.9-3.6 5-.9 5-1.6l-2.1-3.3h-.5v-1.1c3.3-.4 5.5-1.8 6.1-5.7 1.5-.1 2-1.1 2-2.3 0-3.1-2.4-1.5-2.4-1.5" fill="#ffe1bd"/><path d="m9.4 22.7c-.3-.2-1-.9-1.1-1.1-.1-.3-.1-.6.1-.8 0 0 0-.1.1-.1.1-.1-.1-.3-.2-.2-.2.3-.3.6-.3 1 0 .2.2.4.4.6.3.3.9.8.9.8 0 .1.2-.1.1-.2" fill="#e6b796"/><g fill="#664e27"><circle cx="20.9" cy="15.8" r="1.5"/><circle cx="28.4" cy="15.8" r="1.5"/><path d="m27.1 20.5c-1.6 1.2-3.3 1.2-4.9 0-.2-.1-.4.1-.2.3.5.9 1.4 1.7 2.7 1.7s2.2-.8 2.7-1.7c.1-.2-.1-.4-.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f483-1f3fc.svg b/riot/emojione/svg/1f483-1f3fc.svg new file mode 100644 index 0000000..df65e02 --- /dev/null +++ b/riot/emojione/svg/1f483-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.6 33.8c-1.5 12.3-26.2 10.9-27.4 4.7-9.2 4.7-6.7 12-6.7 12 8.4 19 46.4-.2 34.1-16.7" fill="#b70b0b"/><path d="m44.3 52.5c3.1 1.9 1.3 4.3-3.3 2.3-3.9-1.7-.6-5.1.8-4 1.2 1.1 1.9 1.3 2.5 1.7" fill="#ff4848"/><path d="m41.6 52.3c-3.5-2.9-3-4.5-6.5-5.4-3.2-5.1-5.9-6.9-5.9-6.9-1.7 2.4-1 4.6-1 4.6s3.4 4.4 5.9 5.7c3.1 1.5 6.3 3.7 6.3 3.7 1.4 1.1 2.8-.4 1.2-1.7" fill="#fed0ac"/><path d="m28.2 59.6c.1 3.9-5.8 2.3-3.7.6.3-.3.3-.9.1-1.4-1.3-3.7 3.2-4 3.3-2.3.1 1.5.3 2.4.3 3.1" fill="#ff4848"/><path d="m26.9 57.3c-.2-4.4 1.2-5.1-.5-8 .5-2.6-.7-6.7-.7-6.7-2.5.3-4 .7-4 .7s.6 5.2 1.4 7.7c1 3.1 1.6 6.7 1.6 6.7.2 1.8 2.4 1.6 2.2-.4" fill="#fed0ac"/><path d="m37.1 10.6c2.7 7.6 11.9 10 17 3.1 2.6 10-11.1 14.5-19 14.8-24.4.7-21.7-13-21.7-14.7 0-15.4 19.5-14.9 23.7-3.2" fill="#dbb471"/><g fill="#fed0ac"><path d="m41.1 32.7c-1.6-.9-2.2-1.2-2.7-.8l-7.2-4.6c-1.6-1.1-3.7-1.5-3.7-1.5-1.4 1.4.5 2.6.5 2.6l9.2 5.4-.3.6c-.3.4-.1 1 .3 1.3l.6.3c.3.2.7.2 1 0 .9.4 2.1.7 3-.8.1-.2.9-1.5-.7-2.5"/><path d="m14.7 26.8l-4.4-4.4c.4-.4.3-1 0-1.3l-.5-.5c-.3-.3-.7-.3-1-.2-.7-.6-1.9-1.2-3.1.1-.2.2-1.3 1.4.1 2.7 1.3 1.2 1.8 1.7 2.4 1.4l5.7 5.6 6.4-.6 1.5-3.5-7.1.7"/></g><path d="m24.9 47.7c10-3.3 11.6.3 24-.7 12.4-1 7.7-13.2 7.7-13.2-2 10.5-26 6.7-27.2.5 2.2-2.2 2-4.2-1.8-8.3 0 0-1.3 1.2-2.9 1.2s-2.9-1.2-2.9-1.2c-6.5 6.8-1.5 9-1.5 9 1.7 3.2-.8 7 2.2 15.6-.1-.1 1-2.4 2.4-2.9" fill="#ff4848"/><path d="m32.7 15.4c.2-4.4-1.9-4.8-1.9-4.8-9.6 0-14.5 4.8-14.5 4.8s-2.3-1.6-2.3 1.5c0 1.2.5 2.2 2 2.3.5 3.9 2.7 5.3 6 5.7v1.1h-.3l-2.1 3.3c0 .7 2.1-2 5 1.6 2.9-3.6 5-.9 5-1.6l-2.1-3.3h-.5v-1.1c3.3-.4 5.5-1.8 6.1-5.7 1.5-.1 2-1.1 2-2.3 0-3.1-2.4-1.5-2.4-1.5" fill="#fed0ac"/><path d="m9.4 22.7c-.3-.2-1-.9-1.1-1.1-.1-.3-.1-.6.1-.8 0 0 0-.1.1-.1.1-.1-.1-.3-.2-.2-.2.3-.3.6-.3 1 0 .2.2.4.4.6.3.3.9.8.9.8 0 .1.2-.1.1-.2" fill="#e0a372"/><g fill="#664e27"><circle cx="20.9" cy="15.8" r="1.5"/><circle cx="28.4" cy="15.8" r="1.5"/><path d="m27.1 20.5c-1.6 1.2-3.3 1.2-4.9 0-.2-.1-.4.1-.2.3.5.9 1.4 1.7 2.7 1.7s2.2-.8 2.7-1.7c.1-.2-.1-.4-.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f483-1f3fd.svg b/riot/emojione/svg/1f483-1f3fd.svg new file mode 100644 index 0000000..e4c1d7b --- /dev/null +++ b/riot/emojione/svg/1f483-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.6 33.8c-1.5 12.3-26.2 10.9-27.4 4.7-9.2 4.7-6.7 12-6.7 12 8.4 19 46.4-.2 34.1-16.7" fill="#b70b0b"/><path d="m44.3 52.5c3.1 1.9 1.3 4.3-3.3 2.3-3.9-1.7-.6-5.1.8-4 1.2 1.1 1.9 1.3 2.5 1.7" fill="#ff4848"/><path d="m41.6 52.3c-3.5-2.9-3-4.5-6.5-5.4-3.2-5.1-5.9-6.9-5.9-6.9-1.7 2.4-1 4.6-1 4.6s3.4 4.4 5.9 5.7c3.1 1.5 6.3 3.7 6.3 3.7 1.4 1.1 2.8-.4 1.2-1.7" fill="#d6a57c"/><path d="m28.2 59.6c.1 3.9-5.8 2.3-3.7.6.3-.3.3-.9.1-1.4-1.3-3.7 3.2-4 3.3-2.3.1 1.5.3 2.4.3 3.1" fill="#ff4848"/><path d="m26.9 57.3c-.2-4.4 1.2-5.1-.5-8 .5-2.6-.7-6.7-.7-6.7-2.5.3-4 .7-4 .7s.6 5.2 1.4 7.7c1 3.1 1.6 6.7 1.6 6.7.2 1.8 2.4 1.6 2.2-.4" fill="#d6a57c"/><path d="m37.1 10.6c2.7 7.6 11.9 10 17 3.1 2.6 10-11.1 14.5-19 14.8-24.4.7-21.7-13-21.7-14.7 0-15.4 19.5-14.9 23.7-3.2" fill="#594640"/><g fill="#d6a57c"><path d="m41.1 32.7c-1.6-.9-2.2-1.2-2.7-.8l-7.2-4.6c-1.6-1.1-3.7-1.5-3.7-1.5-1.4 1.4.5 2.6.5 2.6l9.2 5.4-.3.6c-.3.4-.1 1 .3 1.3l.6.3c.3.2.7.2 1 0 .9.4 2.1.7 3-.8.1-.2.9-1.5-.7-2.5"/><path d="m14.7 26.8l-4.4-4.4c.4-.4.3-1 0-1.3l-.5-.5c-.3-.3-.7-.3-1-.2-.7-.6-1.9-1.2-3.1.1-.2.2-1.3 1.4.1 2.7 1.3 1.2 1.8 1.7 2.4 1.4l5.7 5.6 6.4-.6 1.5-3.5-7.1.7"/></g><path d="m24.9 47.7c10-3.3 11.6.3 24-.7 12.4-1 7.7-13.2 7.7-13.2-2 10.5-26 6.7-27.2.5 2.2-2.2 2-4.2-1.8-8.3 0 0-1.3 1.2-2.9 1.2s-2.9-1.2-2.9-1.2c-6.5 6.8-1.5 9-1.5 9 1.7 3.2-.8 7 2.2 15.6-.1-.1 1-2.4 2.4-2.9" fill="#ff4848"/><path d="m32.7 15.4c.2-4.4-1.9-4.8-1.9-4.8-9.6 0-14.5 4.8-14.5 4.8s-2.3-1.6-2.3 1.5c0 1.2.5 2.2 2 2.3.5 3.9 2.7 5.3 6 5.7v1.1h-.3l-2.1 3.3c0 .7 2.1-2 5 1.6 2.9-3.6 5-.9 5-1.6l-2.1-3.3h-.5v-1.1c3.3-.4 5.5-1.8 6.1-5.7 1.5-.1 2-1.1 2-2.3 0-3.1-2.4-1.5-2.4-1.5" fill="#d6a57c"/><path d="m9.4 22.7c-.3-.2-1-.9-1.1-1.1-.1-.3-.1-.6.1-.8 0 0 0-.1.1-.1.1-.1-.1-.3-.2-.2-.2.3-.3.6-.3 1 0 .2.2.4.4.6.3.3.9.8.9.8 0 .1.2-.1.1-.2" fill="#b58360"/><g fill="#664e27"><circle cx="20.9" cy="15.8" r="1.5"/><circle cx="28.4" cy="15.8" r="1.5"/><path d="m27.1 20.5c-1.6 1.2-3.3 1.2-4.9 0-.2-.1-.4.1-.2.3.5.9 1.4 1.7 2.7 1.7 1.2 0 2.2-.8 2.7-1.7.1-.2-.1-.4-.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f483-1f3fe.svg b/riot/emojione/svg/1f483-1f3fe.svg new file mode 100644 index 0000000..e163cfb --- /dev/null +++ b/riot/emojione/svg/1f483-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.6 33.8c-1.5 12.3-26.2 10.9-27.4 4.7-9.2 4.7-6.7 12-6.7 12 8.4 19 46.4-.2 34.1-16.7" fill="#b70b0b"/><path d="m44.3 52.5c3.1 1.9 1.3 4.3-3.3 2.3-3.9-1.7-.6-5.1.8-4 1.2 1.1 1.9 1.3 2.5 1.7" fill="#ff4848"/><path d="m41.6 52.3c-3.5-2.9-3-4.5-6.5-5.4-3.2-5.1-5.9-6.9-5.9-6.9-1.7 2.4-1 4.6-1 4.6s3.4 4.4 5.9 5.7c3.1 1.5 6.3 3.7 6.3 3.7 1.4 1.1 2.8-.4 1.2-1.7" fill="#b47d56"/><path d="m28.2 59.6c.1 3.9-5.8 2.3-3.7.6.3-.3.3-.9.1-1.4-1.3-3.7 3.2-4 3.3-2.3.1 1.5.3 2.4.3 3.1" fill="#ff4848"/><path d="m26.9 57.3c-.2-4.4 1.2-5.1-.5-8 .5-2.6-.7-6.7-.7-6.7-2.5.3-4 .7-4 .7s.6 5.2 1.4 7.7c1 3.1 1.6 6.7 1.6 6.7.2 1.8 2.4 1.6 2.2-.4" fill="#b47d56"/><path d="m37.1 10.6c2.7 7.6 11.9 10 17 3.1 2.6 10-11.1 14.5-19 14.8-24.4.7-21.7-13-21.7-14.7 0-15.4 19.5-14.9 23.7-3.2" fill="#231f20"/><g fill="#b47d56"><path d="m41.1 32.7c-1.6-.9-2.2-1.2-2.7-.8l-7.2-4.6c-1.6-1.1-3.7-1.5-3.7-1.5-1.4 1.4.5 2.6.5 2.6l9.2 5.4-.3.6c-.3.4-.1 1 .3 1.3l.6.3c.3.2.7.2 1 0 .9.4 2.1.7 3-.8.1-.2.9-1.5-.7-2.5"/><path d="m14.7 26.8l-4.4-4.4c.4-.4.3-1 0-1.3l-.5-.5c-.3-.3-.7-.3-1-.2-.7-.6-1.9-1.2-3.1.1-.2.2-1.3 1.4.1 2.7 1.3 1.2 1.8 1.7 2.4 1.4l5.7 5.6 6.4-.6 1.5-3.5-7.1.7"/></g><path d="m24.9 47.7c10-3.3 11.6.3 24-.7 12.4-1 7.7-13.2 7.7-13.2-2 10.5-26 6.7-27.2.5 2.2-2.2 2-4.2-1.8-8.3 0 0-1.3 1.2-2.9 1.2-1.6 0-2.9-1.2-2.9-1.2-6.5 6.8-1.5 9-1.5 9 1.7 3.2-.8 7 2.2 15.6-.1-.1 1-2.4 2.4-2.9" fill="#ff4848"/><path d="m32.7 15.4c.2-4.4-1.9-4.8-1.9-4.8-9.6 0-14.5 4.8-14.5 4.8s-2.3-1.6-2.3 1.5c0 1.2.5 2.2 2 2.3.5 3.9 2.7 5.3 6 5.7v1.1h-.3l-2.1 3.3c0 .7 2.1-2 5 1.6 2.9-3.6 5-.9 5-1.6l-2.1-3.3h-.5v-1.1c3.3-.4 5.5-1.8 6.1-5.7 1.5-.1 2-1.1 2-2.3 0-3.1-2.4-1.5-2.4-1.5" fill="#b47d56"/><path d="m9.4 22.7c-.3-.2-1-.9-1.1-1.1-.1-.3-.1-.6.1-.8 0 0 0-.1.1-.1.1-.1-.1-.3-.2-.2-.2.3-.3.6-.3 1 0 .2.2.4.4.6.3.3.9.8.9.8 0 .1.2-.1.1-.2" fill="#935e3e"/><g fill="#664e27"><circle cx="20.9" cy="15.8" r="1.5"/><circle cx="28.4" cy="15.8" r="1.5"/><path d="m27.1 20.5c-1.6 1.2-3.3 1.2-4.9 0-.2-.1-.4.1-.2.3.5.9 1.4 1.7 2.7 1.7s2.2-.8 2.7-1.7c.1-.2-.1-.4-.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f483-1f3ff.svg b/riot/emojione/svg/1f483-1f3ff.svg new file mode 100644 index 0000000..bb4dcfe --- /dev/null +++ b/riot/emojione/svg/1f483-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.6 33.8c-1.5 12.3-26.2 10.9-27.4 4.7-9.2 4.7-6.7 12-6.7 12 8.4 19 46.4-.2 34.1-16.7" fill="#b70b0b"/><path d="m44.3 52.5c3.1 1.9 1.3 4.3-3.3 2.3-3.9-1.7-.6-5.1.8-4 1.2 1.1 1.9 1.3 2.5 1.7" fill="#ff4848"/><path d="m41.6 52.3c-3.5-2.9-3-4.5-6.5-5.4-3.2-5.1-5.9-6.9-5.9-6.9-1.7 2.4-1 4.6-1 4.6s3.4 4.4 5.9 5.7c3.1 1.5 6.3 3.7 6.3 3.7 1.4 1.1 2.8-.4 1.2-1.7" fill="#8a6859"/><path d="m28.2 59.6c.1 3.9-5.8 2.3-3.7.6.3-.3.3-.9.1-1.4-1.3-3.7 3.2-4 3.3-2.3.1 1.5.3 2.4.3 3.1" fill="#ff4848"/><path d="m26.9 57.3c-.2-4.4 1.2-5.1-.5-8 .5-2.6-.7-6.7-.7-6.7-2.5.3-4 .7-4 .7s.6 5.2 1.4 7.7c1 3.1 1.6 6.7 1.6 6.7.2 1.8 2.4 1.6 2.2-.4" fill="#8a6859"/><path d="m37.1 10.6c2.7 7.6 11.9 10 17 3.1 2.6 10-11.1 14.5-19 14.8-24.4.7-21.7-13-21.7-14.7 0-15.4 19.5-14.9 23.7-3.2" fill="#231f20"/><g fill="#8a6859"><path d="m41.1 32.7c-1.6-.9-2.2-1.2-2.7-.8l-7.2-4.6c-1.6-1.1-3.7-1.5-3.7-1.5-1.4 1.4.5 2.6.5 2.6l9.2 5.4-.3.6c-.3.4-.1 1 .3 1.3l.6.3c.3.2.7.2 1 0 .9.4 2.1.7 3-.8.1-.2.9-1.5-.7-2.5"/><path d="m14.7 26.8l-4.4-4.4c.4-.4.3-1 0-1.3l-.5-.5c-.3-.3-.7-.3-1-.2-.7-.6-1.9-1.2-3.1.1-.2.2-1.3 1.4.1 2.7 1.3 1.2 1.8 1.7 2.4 1.4l5.7 5.6 6.4-.6 1.5-3.5-7.1.7"/></g><path d="m24.9 47.7c10-3.3 11.6.3 24-.7 12.4-1 7.7-13.2 7.7-13.2-2 10.5-26 6.7-27.2.5 2.2-2.2 2-4.2-1.8-8.3 0 0-1.3 1.2-2.9 1.2s-2.9-1.2-2.9-1.2c-6.5 6.8-1.5 9-1.5 9 1.7 3.2-.8 7 2.2 15.6-.1-.1 1-2.4 2.4-2.9" fill="#ff4848"/><path d="m32.7 15.4c.2-4.4-1.9-4.8-1.9-4.8-9.6 0-14.5 4.8-14.5 4.8s-2.3-1.6-2.3 1.5c0 1.2.5 2.2 2 2.3.5 3.9 2.7 5.3 6 5.7v1.1h-.3l-2.1 3.3c0 .7 2.1-2 5 1.6 2.9-3.6 5-.9 5-1.6l-2.1-3.3h-.5v-1.1c3.3-.4 5.5-1.8 6.1-5.7 1.5-.1 2-1.1 2-2.3 0-3.1-2.4-1.5-2.4-1.5" fill="#8a6859"/><path d="m9.4 22.7c-.3-.2-1-.9-1.1-1.1-.1-.3-.1-.6.1-.8 0 0 0-.1.1-.1.1-.1-.1-.3-.2-.2-.2.3-.3.6-.3 1 0 .2.2.4.4.6.3.3.9.8.9.8 0 .1.2-.1.1-.2" fill="#705041"/><g fill="#574137"><circle cx="20.9" cy="15.8" r="1.5"/><circle cx="28.4" cy="15.8" r="1.5"/><path d="m27.1 20.5c-1.6 1.2-3.3 1.2-4.9 0-.2-.1-.4.1-.2.3.5.9 1.4 1.7 2.7 1.7 1.2 0 2.2-.8 2.7-1.7.1-.2-.1-.4-.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f483.svg b/riot/emojione/svg/1f483.svg new file mode 100644 index 0000000..25ff89a --- /dev/null +++ b/riot/emojione/svg/1f483.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.6 33.8c-1.5 12.3-26.2 10.9-27.4 4.7-9.2 4.7-6.7 12-6.7 12 8.4 19 46.4-.2 34.1-16.7" fill="#b70b0b"/><path d="m44.3 52.5c3.1 1.9 1.3 4.3-3.3 2.3-3.9-1.7-.6-5.1.8-4 1.2 1.1 1.9 1.3 2.5 1.7" fill="#ff4848"/><path d="m41.6 52.3c-3.5-2.9-3-4.5-6.5-5.4-3.2-5.1-5.9-6.9-5.9-6.9-1.7 2.4-1 4.6-1 4.6s3.4 4.4 5.9 5.7c3.1 1.5 6.3 3.7 6.3 3.7 1.4 1.1 2.8-.4 1.2-1.7" fill="#ffdd67"/><path d="m28.2 59.6c.1 3.9-5.8 2.3-3.7.6.3-.3.3-.9.1-1.4-1.3-3.7 3.2-4 3.3-2.3.1 1.5.3 2.4.3 3.1" fill="#ff4848"/><path d="m26.9 57.3c-.2-4.4 1.2-5.1-.5-8 .5-2.6-.7-6.7-.7-6.7-2.5.3-4 .7-4 .7s.6 5.2 1.4 7.7c1 3.1 1.6 6.7 1.6 6.7.2 1.8 2.4 1.6 2.2-.4" fill="#ffdd67"/><path d="m37.1 10.6c2.7 7.6 11.9 10 17 3.1 2.6 10-11.1 14.5-19 14.8-24.4.7-21.7-13-21.7-14.7 0-15.4 19.5-14.9 23.7-3.2" fill="#ffb300"/><g fill="#ffdd67"><path d="m41.1 32.7c-1.6-.9-2.2-1.2-2.7-.8l-7.2-4.6c-1.6-1.1-3.7-1.5-3.7-1.5-1.4 1.4.5 2.6.5 2.6l9.2 5.4-.3.6c-.3.4-.1 1 .3 1.3l.6.3c.3.2.7.2 1 0 .9.4 2.1.7 3-.8.1-.2.9-1.5-.7-2.5"/><path d="m14.7 26.8l-4.4-4.4c.4-.4.3-1 0-1.3l-.5-.5c-.3-.3-.7-.3-1-.2-.7-.6-1.9-1.2-3.1.1-.2.2-1.3 1.4.1 2.7 1.3 1.2 1.8 1.7 2.4 1.4l5.7 5.6 6.4-.6 1.5-3.5-7.1.7"/></g><path d="m24.9 47.7c10-3.3 11.6.3 24-.7 12.4-1 7.7-13.2 7.7-13.2-2 10.5-26 6.7-27.2.5 2.2-2.2 2-4.2-1.8-8.3 0 0-1.3 1.2-2.9 1.2s-2.9-1.2-2.9-1.2c-6.5 6.8-1.5 9-1.5 9 1.7 3.2-.8 7 2.2 15.6-.1-.1 1-2.4 2.4-2.9" fill="#ff4848"/><path d="m32.7 15.4c.2-4.4-1.9-4.8-1.9-4.8-9.6 0-14.5 4.8-14.5 4.8s-2.3-1.6-2.3 1.5c0 1.2.5 2.2 2 2.3.5 3.9 2.7 5.3 6 5.7v1.1h-.3l-2.1 3.3c0 .7 2.1-2 5 1.6 2.9-3.6 5-.9 5-1.6l-2.1-3.3h-.5v-1.1c3.3-.4 5.5-1.8 6.1-5.7 1.5-.1 2-1.1 2-2.3 0-3.1-2.4-1.5-2.4-1.5" fill="#ffdd67"/><path d="m9.4 22.7c-.3-.2-1-.9-1.1-1.1-.1-.3-.1-.6.1-.8 0 0 0-.1.1-.1.1-.1-.1-.3-.2-.2-.2.3-.3.6-.3 1 0 .2.2.4.4.6.3.3.9.8.9.8 0 .1.2-.1.1-.2" fill="#eba352"/><g fill="#937237"><path d="m22.4 15.8c0 .8-.7 1.5-1.5 1.5-.9 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5.8 0 1.5.7 1.5 1.5"/><circle cx="28.4" cy="15.8" r="1.5"/><path d="m27.1 20.5c-1.6 1.2-3.3 1.2-4.9 0-.2-.1-.4.1-.2.3.5.9 1.4 1.7 2.7 1.7 1.2 0 2.2-.8 2.7-1.7.1-.2-.1-.4-.3-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f484.svg b/riot/emojione/svg/1f484.svg new file mode 100644 index 0000000..99bc790 --- /dev/null +++ b/riot/emojione/svg/1f484.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="M20.8 6.4 40.9 26.5 29.7 37.7 2.2 10.2z"/><path d="m10.6 5.8c-5.2.9-9 2.7-8.6 4.1.5 1.4 5.1 1.8 10.4.9 5.2-1 9.1-2.8 8.6-4.2-.5-1.4-5.2-1.7-10.4-.8"/></g><path d="m10.8 5.8c-4.9.8-8.5 2.6-8 3.9.5 1.3 4.8 1.6 9.7.8 4.9-.8 8.5-2.6 8-3.8-.5-1.4-4.8-1.8-9.7-.9" fill="#ff8080"/><path transform="matrix(.7071-.7071.7071.7071-10.7928 30.6765)" fill="#e8e8e8" d="m22.6 16.5h18.2v23.8h-18.2z"/><path transform="matrix(.707-.7072.7072.707-19.7271 52.2523)" fill="#555b61" d="m43.7 47h19v5.9h-19z"/><path transform="matrix(.7069-.7073.7073.7069-12.8952 35.7644)" fill="#b2c1c0" d="m27.2 30.7h19v5.5h-19z"/><path transform="matrix(.7071-.7071.7071.7071-16.45 44.3334)" fill="#3e4347" d="m34.8 29.8h21v24.4h-21z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f485-1f3fb.svg b/riot/emojione/svg/1f485-1f3fb.svg new file mode 100644 index 0000000..f31a7a2 --- /dev/null +++ b/riot/emojione/svg/1f485-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 35.1c-1.7-2.3-4.2-9.7-1.9-11.4l.7-.5c.4 2.7 1.7 6 2.7 7.4l22.7 31.4h13.6v-4.3l-23.7-32.8c-1.7-2.3-7.9-7-10.2-5.3l-5.7 4.1c-2.4 1.7.1 9.1 1.8 11.4l19.4 26.9-19.4-26.9" fill="#ffe1bd"/><path d="m19.4 23.2l-.7.5c-2.3 1.7.2 9.1 1.9 11.4l19.5 26.9h4.7l-22.7-31.3c-1-1.4-2.3-4.7-2.7-7.5" fill="#e6b796"/><path d="m48.2 16.7l-5.8 3.5c-2.3 1.4-.5 8.7.9 11l15.1 25.2-15.1-25.3c-1.4-2.3-3.2-9.6-.9-11l.4-.3c.2 2.5 1.1 5.4 1.9 6.8l13.6 22.6v-25.1l-.9-1.5c-1.3-2.3-6.9-7.3-9.2-5.9" fill="#ffe1bd"/><path d="m42.8 19.9l-.4.3c-2.3 1.4-.5 8.7.9 11l15.1 25.1v-7l-13.6-22.6c-.8-1.3-1.8-4.3-2-6.8" fill="#e6b796"/><path d="m14.3 43.1l-5.1 4.4c-2.1 1.8.9 8.6 2.6 10.7l3.2 3.8-3.3-3.8c-1.8-2.1-4.7-8.9-2.6-10.7l1-.8c.5 2.6 2.1 5.8 3.2 7.1l7 8.3h16.5l-12.4-14.7c-1.8-2-8.1-6-10.1-4.3" fill="#ffe1bd"/><path d="m13.3 53.7c-1.1-1.3-2.7-4.4-3.2-7.1l-1 .8c-2.1 1.8.9 8.6 2.6 10.7l3.3 3.9h5.3l-7-8.3" fill="#e6b796"/><path d="m21.1 32.4c3.4 4.7 7 4.6 10 2.4 3-2.2 4.3-5.5.9-10.3-3.4-4.7-10-8.7-13-6.5-3 2.2-1.4 9.7 2.1 14.4" fill="#ff8736"/><path d="m27.6 27.3c3.1 4.3 3 5.8 4 5 1-.7 2.3-3.1-.8-7.4s-8.8-7-9.8-6.3c-1 .7 3.5 4.5 6.6 8.7" fill="#ffb77b"/><path d="m43.9 28.6c2.9 4.8 6.3 4.9 9.3 3.1 3-1.8 4.5-4.9 1.7-9.7-2.9-4.8-8.8-9-11.8-7.2-3 1.8-2.1 9 .8 13.8" fill="#ff8736"/><path d="m50.6 24.3c2.6 4.3 2.4 5.7 3.4 5.1 1-.6 2.4-2.8-.1-7.1-2.6-4.3-7.8-7.5-8.8-6.9-1.1.7 2.9 4.6 5.5 8.9" fill="#ffb77b"/><path d="m12 55.6c3.6 4.3 7 3.8 9.7 1.5 2.7-2.3 3.7-5.6.1-9.8-3.6-4.3-10.1-7.5-12.8-5.2-2.8 2.3-.6 9.2 3 13.5" fill="#ff8736"/><path d="m17.8 50.3c3.2 3.8 3.3 5.3 4.2 4.5.9-.8 2-3.1-1.3-7-3.2-3.8-8.9-6.1-9.8-5.4-.9.8 3.7 4 6.9 7.9" fill="#ffb77b"/><path d="m21.3 27.5c0 0-1.3-.8-3-2.3.4-.2.7-.4.9-.7 0 0-7.9-5.6-9.8-17.8 0 0-3.9 8.5-3.9 15.7 0 8.4 8.9 11 12.1 7.8 0 0-.7-.5-1.6-1.4 2.2.2 4.1-.3 5.3-1.3" fill="#ff8736"/><path d="m22.1 26.8c0 0-2-.1-3.7-1.6 0 0 1.5.1 2.1-.7 0 0-9-5.6-10.9-17.8 0 0-.6 1.3-1.3 3.2 1.7 11.6 8.7 14.6 8.7 14.6-.3.3-5-.9-5-.9 1.5 2.3 7.3 3.6 7.3 3.6-4.9 1.1-9-.6-9-.6 1 2.5 5 3.7 5 3.7s-1.2 1.1-3.4.9c2.3.7 4.6.4 5.9-1 0 0-.7-.5-1.6-1.4 2 .2 4.7-.3 5.9-2" fill="#d8681d"/><path fill="#454749" d="m7 2h4.5v11.5h-4.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f485-1f3fc.svg b/riot/emojione/svg/1f485-1f3fc.svg new file mode 100644 index 0000000..442102a --- /dev/null +++ b/riot/emojione/svg/1f485-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 35.1c-1.7-2.3-4.2-9.7-1.9-11.4l.7-.5c.4 2.7 1.7 6 2.7 7.4l22.7 31.4h13.6v-4.3l-23.7-32.8c-1.7-2.3-7.9-7-10.2-5.3l-5.7 4.1c-2.4 1.7.1 9.1 1.8 11.4l19.4 26.9-19.4-26.9" fill="#fed0ac"/><path d="m19.4 23.2l-.7.5c-2.3 1.7.2 9.1 1.9 11.4l19.5 26.9h4.7l-22.7-31.3c-1-1.4-2.3-4.7-2.7-7.5" fill="#e0a372"/><path d="m48.2 16.7l-5.8 3.5c-2.3 1.4-.5 8.7.9 11l15.1 25.2-15.1-25.3c-1.4-2.3-3.2-9.6-.9-11l.4-.3c.2 2.5 1.1 5.4 1.9 6.8l13.6 22.6v-25.1l-.9-1.5c-1.3-2.3-6.9-7.3-9.2-5.9" fill="#fed0ac"/><path d="m42.8 19.9l-.4.3c-2.3 1.4-.5 8.7.9 11l15.1 25.1v-7l-13.6-22.6c-.8-1.3-1.8-4.3-2-6.8" fill="#e0a372"/><path d="m14.3 43.1l-5.1 4.4c-2.1 1.8.9 8.6 2.6 10.7l3.2 3.8-3.3-3.8c-1.8-2.1-4.7-8.9-2.6-10.7l1-.8c.5 2.6 2.1 5.8 3.2 7.1l7 8.3h16.5l-12.4-14.7c-1.8-2-8.1-6-10.1-4.3" fill="#fed0ac"/><path d="m13.3 53.7c-1.1-1.3-2.7-4.4-3.2-7.1l-1 .8c-2.1 1.8.9 8.6 2.6 10.7l3.3 3.9h5.3l-7-8.3" fill="#e0a372"/><path d="m21.1 32.4c3.4 4.7 7 4.6 10 2.4 3-2.2 4.3-5.5.9-10.3-3.4-4.7-10-8.7-13-6.5-3 2.2-1.4 9.7 2.1 14.4" fill="#ff8736"/><path d="m27.6 27.3c3.1 4.3 3 5.8 4 5 1-.7 2.3-3.1-.8-7.4s-8.8-7-9.8-6.3c-1 .7 3.5 4.5 6.6 8.7" fill="#ffb77b"/><path d="m43.9 28.6c2.9 4.8 6.3 4.9 9.3 3.1 3-1.8 4.5-4.9 1.7-9.7-2.9-4.8-8.8-9-11.8-7.2-3 1.8-2.1 9 .8 13.8" fill="#ff8736"/><path d="m50.6 24.3c2.6 4.3 2.4 5.7 3.4 5.1 1-.6 2.4-2.8-.1-7.1-2.6-4.3-7.8-7.5-8.8-6.9-1.1.7 2.9 4.6 5.5 8.9" fill="#ffb77b"/><path d="m12 55.6c3.6 4.3 7 3.8 9.7 1.5 2.7-2.3 3.7-5.6.1-9.8-3.6-4.3-10.1-7.5-12.8-5.2-2.8 2.3-.6 9.2 3 13.5" fill="#ff8736"/><path d="m17.8 50.3c3.2 3.8 3.3 5.3 4.2 4.5.9-.8 2-3.1-1.3-7-3.2-3.8-8.9-6.1-9.8-5.4-.9.8 3.7 4 6.9 7.9" fill="#ffb77b"/><path d="m21.3 27.5c0 0-1.3-.8-3-2.3.4-.2.7-.4.9-.7 0 0-7.9-5.6-9.8-17.8 0 0-3.9 8.5-3.9 15.7 0 8.4 8.9 11 12.1 7.8 0 0-.7-.5-1.6-1.4 2.2.2 4.1-.3 5.3-1.3" fill="#ff8736"/><path d="m22.1 26.8c0 0-2-.1-3.7-1.6 0 0 1.5.1 2.1-.7 0 0-9-5.6-10.9-17.8 0 0-.6 1.3-1.3 3.2 1.7 11.6 8.7 14.6 8.7 14.6-.3.3-5-.9-5-.9 1.5 2.3 7.3 3.6 7.3 3.6-4.9 1.1-9-.6-9-.6 1 2.5 5 3.7 5 3.7s-1.2 1.1-3.4.9c2.3.7 4.6.4 5.9-1 0 0-.7-.5-1.6-1.4 2 .2 4.7-.3 5.9-2" fill="#d8681d"/><path fill="#454749" d="m7 2h4.5v11.5h-4.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f485-1f3fd.svg b/riot/emojione/svg/1f485-1f3fd.svg new file mode 100644 index 0000000..daa1db1 --- /dev/null +++ b/riot/emojione/svg/1f485-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 35.1c-1.7-2.3-4.2-9.7-1.9-11.4l.7-.5c.4 2.7 1.7 6 2.7 7.4l22.7 31.4h13.6v-4.3l-23.7-32.8c-1.7-2.3-7.9-7-10.2-5.3l-5.7 4.1c-2.4 1.7.1 9.1 1.8 11.4l19.4 26.9-19.4-26.9" fill="#d6a57c"/><path d="m19.4 23.2l-.7.5c-2.3 1.7.2 9.1 1.9 11.4l19.5 26.9h4.7l-22.7-31.3c-1-1.4-2.3-4.7-2.7-7.5" fill="#b58360"/><path d="m48.2 16.7l-5.8 3.5c-2.3 1.4-.5 8.7.9 11l15.1 25.2-15.1-25.3c-1.4-2.3-3.2-9.6-.9-11l.4-.3c.2 2.5 1.1 5.4 1.9 6.8l13.6 22.6v-25.1l-.9-1.5c-1.3-2.3-6.9-7.3-9.2-5.9" fill="#d6a57c"/><path d="m42.8 19.9l-.4.3c-2.3 1.4-.5 8.7.9 11l15.1 25.1v-7l-13.6-22.6c-.8-1.3-1.8-4.3-2-6.8" fill="#b58360"/><path d="m14.3 43.1l-5.1 4.4c-2.1 1.8.9 8.6 2.6 10.7l3.2 3.8-3.3-3.8c-1.8-2.1-4.7-8.9-2.6-10.7l1-.8c.5 2.6 2.1 5.8 3.2 7.1l7 8.3h16.5l-12.4-14.7c-1.8-2-8.1-6-10.1-4.3" fill="#d6a57c"/><path d="m13.3 53.7c-1.1-1.3-2.7-4.4-3.2-7.1l-1 .8c-2.1 1.8.9 8.6 2.6 10.7l3.3 3.9h5.3l-7-8.3" fill="#b58360"/><path d="m21.1 32.4c3.4 4.7 7 4.6 10 2.4 3-2.2 4.3-5.5.9-10.3-3.4-4.7-10-8.7-13-6.5-3 2.2-1.4 9.7 2.1 14.4" fill="#ff8736"/><path d="m27.6 27.3c3.1 4.3 3 5.8 4 5 1-.7 2.3-3.1-.8-7.4s-8.8-7-9.8-6.3c-1 .7 3.5 4.5 6.6 8.7" fill="#ffb77b"/><path d="m43.9 28.6c2.9 4.8 6.3 4.9 9.3 3.1 3-1.8 4.5-4.9 1.7-9.7-2.9-4.8-8.8-9-11.8-7.2-3 1.8-2.1 9 .8 13.8" fill="#ff8736"/><path d="m50.6 24.3c2.6 4.3 2.4 5.7 3.4 5.1 1-.6 2.4-2.8-.1-7.1-2.6-4.3-7.8-7.5-8.8-6.9-1.1.7 2.9 4.6 5.5 8.9" fill="#ffb77b"/><path d="m12 55.6c3.6 4.3 7 3.8 9.7 1.5 2.7-2.3 3.7-5.6.1-9.8-3.6-4.3-10.1-7.5-12.8-5.2-2.8 2.3-.6 9.2 3 13.5" fill="#ff8736"/><path d="m17.8 50.3c3.2 3.8 3.3 5.3 4.2 4.5.9-.8 2-3.1-1.3-7-3.2-3.8-8.9-6.1-9.8-5.4-.9.8 3.7 4 6.9 7.9" fill="#ffb77b"/><path d="m21.3 27.5c0 0-1.3-.8-3-2.3.4-.2.7-.4.9-.7 0 0-7.9-5.6-9.8-17.8 0 0-3.9 8.5-3.9 15.7 0 8.4 8.9 11 12.1 7.8 0 0-.7-.5-1.6-1.4 2.2.2 4.1-.3 5.3-1.3" fill="#ff8736"/><path d="m22.1 26.8c0 0-2-.1-3.7-1.6 0 0 1.5.1 2.1-.7 0 0-9-5.6-10.9-17.8 0 0-.6 1.3-1.3 3.2 1.7 11.6 8.7 14.6 8.7 14.6-.3.3-5-.9-5-.9 1.5 2.3 7.3 3.6 7.3 3.6-4.9 1.1-9-.6-9-.6 1 2.5 5 3.7 5 3.7s-1.2 1.1-3.4.9c2.3.7 4.6.4 5.9-1 0 0-.7-.5-1.6-1.4 2 .2 4.7-.3 5.9-2" fill="#d8681d"/><path fill="#454749" d="m7 2h4.5v11.5h-4.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f485-1f3fe.svg b/riot/emojione/svg/1f485-1f3fe.svg new file mode 100644 index 0000000..7593669 --- /dev/null +++ b/riot/emojione/svg/1f485-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 35.1c-1.7-2.3-4.2-9.7-1.9-11.4l.7-.5c.4 2.7 1.7 6 2.7 7.4l22.7 31.4h13.6v-4.3l-23.7-32.8c-1.7-2.3-7.9-7-10.2-5.3l-5.7 4.1c-2.4 1.7.1 9.1 1.8 11.4l19.4 26.9-19.4-26.9" fill="#b47d56"/><path d="m19.4 23.2l-.7.5c-2.3 1.7.2 9.1 1.9 11.4l19.5 26.9h4.7l-22.7-31.3c-1-1.4-2.3-4.7-2.7-7.5" fill="#935e3e"/><path d="m48.2 16.7l-5.8 3.5c-2.3 1.4-.5 8.7.9 11l15.1 25.2-15.1-25.3c-1.4-2.3-3.2-9.6-.9-11l.4-.3c.2 2.5 1.1 5.4 1.9 6.8l13.6 22.6v-25.1l-.9-1.5c-1.3-2.3-6.9-7.3-9.2-5.9" fill="#b47d56"/><path d="m42.8 19.9l-.4.3c-2.3 1.4-.5 8.7.9 11l15.1 25.1v-7l-13.6-22.6c-.8-1.3-1.8-4.3-2-6.8" fill="#935e3e"/><path d="m14.3 43.1l-5.1 4.4c-2.1 1.8.9 8.6 2.6 10.7l3.2 3.8-3.3-3.8c-1.8-2.1-4.7-8.9-2.6-10.7l1-.8c.5 2.6 2.1 5.8 3.2 7.1l7 8.3h16.5l-12.4-14.7c-1.8-2-8.1-6-10.1-4.3" fill="#b47d56"/><path d="m13.3 53.7c-1.1-1.3-2.7-4.4-3.2-7.1l-1 .8c-2.1 1.8.9 8.6 2.6 10.7l3.3 3.9h5.3l-7-8.3" fill="#935e3e"/><path d="m21.1 32.4c3.4 4.7 7 4.6 10 2.4 3-2.2 4.3-5.5.9-10.3-3.4-4.7-10-8.7-13-6.5-3 2.2-1.4 9.7 2.1 14.4" fill="#ff8736"/><path d="m27.6 27.3c3.1 4.3 3 5.8 4 5 1-.7 2.3-3.1-.8-7.4s-8.8-7-9.8-6.3c-1 .7 3.5 4.5 6.6 8.7" fill="#ffb77b"/><path d="m43.9 28.6c2.9 4.8 6.3 4.9 9.3 3.1 3-1.8 4.5-4.9 1.7-9.7-2.9-4.8-8.8-9-11.8-7.2-3 1.8-2.1 9 .8 13.8" fill="#ff8736"/><path d="m50.6 24.3c2.6 4.3 2.4 5.7 3.4 5.1 1-.6 2.4-2.8-.1-7.1-2.6-4.3-7.8-7.5-8.8-6.9-1.1.7 2.9 4.6 5.5 8.9" fill="#ffb77b"/><path d="m12 55.6c3.6 4.3 7 3.8 9.7 1.5 2.7-2.3 3.7-5.6.1-9.8-3.6-4.3-10.1-7.5-12.8-5.2-2.8 2.3-.6 9.2 3 13.5" fill="#ff8736"/><path d="m17.8 50.3c3.2 3.8 3.3 5.3 4.2 4.5.9-.8 2-3.1-1.3-7-3.2-3.8-8.9-6.1-9.8-5.4-.9.8 3.7 4 6.9 7.9" fill="#ffb77b"/><path d="m21.3 27.5c0 0-1.3-.8-3-2.3.4-.2.7-.4.9-.7 0 0-7.9-5.6-9.8-17.8 0 0-3.9 8.5-3.9 15.7 0 8.4 8.9 11 12.1 7.8 0 0-.7-.5-1.6-1.4 2.2.2 4.1-.3 5.3-1.3" fill="#ff8736"/><path d="m22.1 26.8c0 0-2-.1-3.7-1.6 0 0 1.5.1 2.1-.7 0 0-9-5.6-10.9-17.8 0 0-.6 1.3-1.3 3.2 1.7 11.6 8.7 14.6 8.7 14.6-.3.3-5-.9-5-.9 1.5 2.3 7.3 3.6 7.3 3.6-4.9 1.1-9-.6-9-.6 1 2.5 5 3.7 5 3.7s-1.2 1.1-3.4.9c2.3.7 4.6.4 5.9-1 0 0-.7-.5-1.6-1.4 2 .2 4.7-.3 5.9-2" fill="#d8681d"/><path fill="#454749" d="m7 2h4.5v11.5h-4.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f485-1f3ff.svg b/riot/emojione/svg/1f485-1f3ff.svg new file mode 100644 index 0000000..36a0f84 --- /dev/null +++ b/riot/emojione/svg/1f485-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 35.1c-1.7-2.3-4.2-9.7-1.9-11.4l.7-.5c.4 2.7 1.7 6 2.7 7.4l22.7 31.4h13.6v-4.3l-23.7-32.8c-1.7-2.3-7.9-7-10.2-5.3l-5.7 4.1c-2.4 1.7.1 9.1 1.8 11.4l19.4 26.9-19.4-26.9" fill="#8a6859"/><path d="m19.4 23.2l-.7.5c-2.3 1.7.2 9.1 1.9 11.4l19.5 26.9h4.7l-22.7-31.3c-1-1.4-2.3-4.7-2.7-7.5" fill="#705041"/><path d="m48.2 16.7l-5.8 3.5c-2.3 1.4-.5 8.7.9 11l15.1 25.2-15.1-25.3c-1.4-2.3-3.2-9.6-.9-11l.4-.3c.2 2.5 1.1 5.4 1.9 6.8l13.6 22.6v-25.1l-.9-1.5c-1.3-2.3-6.9-7.3-9.2-5.9" fill="#8a6859"/><path d="m42.8 19.9l-.4.3c-2.3 1.4-.5 8.7.9 11l15.1 25.1v-7l-13.6-22.6c-.8-1.3-1.8-4.3-2-6.8" fill="#705041"/><path d="m14.3 43.1l-5.1 4.4c-2.1 1.8.9 8.6 2.6 10.7l3.2 3.8-3.3-3.8c-1.8-2.1-4.7-8.9-2.6-10.7l1-.8c.5 2.6 2.1 5.8 3.2 7.1l7 8.3h16.5l-12.4-14.7c-1.8-2-8.1-6-10.1-4.3" fill="#8a6859"/><path d="m13.3 53.7c-1.1-1.3-2.7-4.4-3.2-7.1l-1 .8c-2.1 1.8.9 8.6 2.6 10.7l3.3 3.9h5.3l-7-8.3" fill="#705041"/><path d="m21.1 32.4c3.4 4.7 7 4.6 10 2.4 3-2.2 4.3-5.5.9-10.3-3.4-4.7-10-8.7-13-6.5-3 2.2-1.4 9.7 2.1 14.4" fill="#ff8736"/><path d="m27.6 27.3c3.1 4.3 3 5.8 4 5 1-.7 2.3-3.1-.8-7.4s-8.8-7-9.8-6.3c-1 .7 3.5 4.5 6.6 8.7" fill="#ffb77b"/><path d="m43.9 28.6c2.9 4.8 6.3 4.9 9.3 3.1 3-1.8 4.5-4.9 1.7-9.7-2.9-4.8-8.8-9-11.8-7.2-3 1.8-2.1 9 .8 13.8" fill="#ff8736"/><path d="m50.6 24.3c2.6 4.3 2.4 5.7 3.4 5.1 1-.6 2.4-2.8-.1-7.1-2.6-4.3-7.8-7.5-8.8-6.9-1.1.7 2.9 4.6 5.5 8.9" fill="#ffb77b"/><path d="m12 55.6c3.6 4.3 7 3.8 9.7 1.5 2.7-2.3 3.7-5.6.1-9.8-3.6-4.3-10.1-7.5-12.8-5.2-2.8 2.3-.6 9.2 3 13.5" fill="#ff8736"/><path d="m17.8 50.3c3.2 3.8 3.3 5.3 4.2 4.5.9-.8 2-3.1-1.3-7-3.2-3.8-8.9-6.1-9.8-5.4-.9.8 3.7 4 6.9 7.9" fill="#ffb77b"/><path d="m21.3 27.5c0 0-1.3-.8-3-2.3.4-.2.7-.4.9-.7 0 0-7.9-5.6-9.8-17.8 0 0-3.9 8.5-3.9 15.7 0 8.4 8.9 11 12.1 7.8 0 0-.7-.5-1.6-1.4 2.2.2 4.1-.3 5.3-1.3" fill="#ff8736"/><path d="m22.1 26.8c0 0-2-.1-3.7-1.6 0 0 1.5.1 2.1-.7 0 0-9-5.6-10.9-17.8 0 0-.6 1.3-1.3 3.2 1.7 11.6 8.7 14.6 8.7 14.6-.3.3-5-.9-5-.9 1.5 2.3 7.3 3.6 7.3 3.6-4.9 1.1-9-.6-9-.6 1 2.5 5 3.7 5 3.7s-1.2 1.1-3.4.9c2.3.7 4.6.4 5.9-1 0 0-.7-.5-1.6-1.4 2 .2 4.7-.3 5.9-2" fill="#d8681d"/><path fill="#454749" d="m7 2h4.5v11.5h-4.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f485.svg b/riot/emojione/svg/1f485.svg new file mode 100644 index 0000000..91fd2c5 --- /dev/null +++ b/riot/emojione/svg/1f485.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 35.1c-1.7-2.3-4.2-9.7-1.9-11.4l.7-.5c.4 2.7 1.7 6 2.7 7.4l22.7 31.3h13.6v-4.3l-23.7-32.7c-1.7-2.3-7.9-7-10.2-5.3l-5.7 4.1c-2.4 1.6.1 9.1 1.8 11.4l19.4 26.8-19.4-26.8" fill="#ffdd67"/><path d="m19.4 23.2l-.7.5c-2.3 1.7.2 9.1 1.9 11.4l19.4 26.9h4.7l-22.6-31.4c-1-1.4-2.3-4.7-2.7-7.4" fill="#eba352"/><path d="m48.2 16.6l-5.8 3.5c-2.3 1.4-.5 8.7.9 11l15.1 25.2-15.1-25.2c-1.4-2.3-3.2-9.6-.9-11l.4-.3c.2 2.5 1.1 5.4 1.9 6.8l13.6 22.6v-25.1l-.9-1.5c-1.3-2.4-6.9-7.4-9.2-6" fill="#ffdd67"/><path d="m42.8 19.9l-.4.3c-2.3 1.4-.5 8.7.9 11l15.1 25.1v-7l-13.6-22.7c-.8-1.3-1.8-4.2-2-6.7" fill="#eba352"/><path d="m14.3 43.1l-5.1 4.4c-2.1 1.7.8 8.5 2.6 10.6l3.3 3.8-3.3-3.8c-1.8-2.1-4.7-8.9-2.7-10.7l1-.8c.5 2.6 2.1 5.8 3.2 7.1l7 8.3h16.5l-12.4-14.6c-1.8-2.1-8.1-6.1-10.1-4.3" fill="#ffdd67"/><path d="m13.3 53.7c-1.1-1.3-2.7-4.4-3.2-7.1l-1 .8c-2 1.8.9 8.6 2.7 10.7l3.3 3.8h5.3l-7.1-8.2" fill="#eba352"/><path d="m21.1 32.3c3.4 4.7 7 4.6 10 2.4 3-2.2 4.3-5.5.9-10.3-3.4-4.7-10-8.7-13-6.5-3 2.3-1.4 9.7 2.1 14.4" fill="#ff8736"/><path d="m27.6 27.3c3.1 4.3 3 5.8 4 5 1-.7 2.3-3.1-.8-7.4s-8.8-7.1-9.8-6.4c-1 .8 3.5 4.5 6.6 8.8" fill="#ffb77b"/><path d="m43.9 28.5c2.9 4.8 6.3 4.9 9.3 3.1 3-1.8 4.5-4.9 1.7-9.7-2.9-4.8-8.8-9-11.8-7.2-3 1.9-2.1 9.1.8 13.8" fill="#ff8736"/><path d="m50.6 24.3c2.6 4.3 2.4 5.7 3.4 5.1 1-.6 2.4-2.8-.1-7.1-2.7-4.3-7.9-7.5-8.9-6.9-1 .6 3 4.6 5.6 8.9" fill="#ffb77b"/><path d="m12 55.5c3.6 4.3 7 3.8 9.7 1.5 2.7-2.3 3.7-5.6.1-9.8-3.6-4.3-10.1-7.5-12.8-5.2-2.8 2.3-.6 9.2 3 13.5" fill="#ff8736"/><path d="m17.8 50.2c3.2 3.8 3.3 5.3 4.2 4.5.9-.8 2-3.1-1.3-7-3.2-3.8-8.9-6.1-9.8-5.4-.9.8 3.7 4.1 6.9 7.9" fill="#ffb77b"/><path d="m21.3 27.5c0 0-1.3-.8-3-2.3.4-.2.7-.4.9-.7 0 0-7.9-5.6-9.8-17.8 0 0-3.9 8.5-3.9 15.7 0 8.4 8.9 11 12.1 7.8 0 0-.7-.5-1.6-1.4 2.2.1 4.1-.3 5.3-1.3" fill="#ff8736"/><path d="m22.1 26.8c0 0-2-.1-3.7-1.6 0 0 1.5.1 2.1-.7 0 0-9-5.6-10.9-17.8 0 0-.6 1.3-1.3 3.2 1.7 11.5 8.7 14.5 8.7 14.5-.3.3-5-.9-5-.9 1.5 2.3 7.3 3.6 7.3 3.6-4.9 1.1-9-.6-9-.6 1 2.5 5 3.7 5 3.7s-1.2 1.1-3.4.9c2.3.7 4.6.4 5.9-1 0 0-.7-.5-1.6-1.4 2 .2 4.7-.2 5.9-1.9" fill="#d8681d"/><path fill="#454749" d="m7 1.9h4.5v11.5h-4.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f486-1f3fb.svg b/riot/emojione/svg/1f486-1f3fb.svg new file mode 100644 index 0000000..dc1aef5 --- /dev/null +++ b/riot/emojione/svg/1f486-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 5.8c-13.7 0-21.2 8.5-21.2 19.6v28.5h42.4v-28.5c0-16.6-11.5-16.3-11.5-16.3s-.8-3.3-9.7-3.3" fill="#594640"/><path d="m41.6 49.9v-6.7h-19.2v6.7c-12.1.3-14.6 2.2-14.6 12.1h48.3c.1-9.9-2.4-11.8-14.5-12.1" fill="#b386e2"/><g fill="#ffe1bd"><path d="m16.9 34.7c0 0-3-.8-3-5.2 0-3.5 2.3-4.1 2.3-4.1 8.2 0 21.7-10.5 21.7-10.5s5.1 9.3 10 10.5c0 0 2.4.4 2.4 4.1 0 4.4-3.2 5.2-3.2 5.2 0 6.7-9.3 14.7-15 14.7-5.8 0-15.2-8-15.2-14.7"/><path d="m18.5 19.1c-.9-2.2-1.2-4-1.2-5.4 0-.5-.2-.9-.5-1.2l-4.2-6c-1.2-2-7.8-2.1-8 1.9l-.5 10.6c-.2 3.4 3.5 6.5 4.1 6.1l-.5 5.7c-.1 1.1.5 2 1.7 2.1 1.2.1 2.3-.8 2.3-1.8l1-14.2.9.8c0 0 .7 3.1 3 3.4 1.6.2 2.2-1.2 1.9-2"/></g><path d="m9 20.7c.1-1.1-.9-1.6-1-.5l-.3 3.7c-1.2-1.1-3-3.5-2.8-5.8l.8-10.6c.1-.8.4-1.4.8-1.9-1.1.5-1.9 1.4-2 2.7l-.8 10.7c-.3 3.7 3.2 6.4 3.9 6.9l-.3 5c-.1.9.6 1.8 1.6 2-.4-.4-.7-.9-.7-1.5l.8-10.7" fill="#e6b796"/><path d="m3.7 8.5c0 0 7.8.3 9.6-2.1l-.5-4.4h-9.8l.7 6.5" fill="#428bc1"/><path d="m14.5 18.5l-.1-.4c0 0-1.2-1.5-1.6-2.9l-.1 1.7c.3.5.6.9.6.9l.1.4c.2.8.8 2.5 3 2.8-1.3-.6-1.7-1.8-1.9-2.5" fill="#e6b796"/><path d="m45.5 19.1c.9-2.2 1.2-4 1.2-5.4 0-.5.2-.9.5-1.2l4.2-6c1.2-2 7.8-2.1 8 1.9l.5 10.6c.2 3.4-3.5 6.5-4.1 6.1l.5 5.7c.1 1.1-.5 2-1.7 2.1-1.2.1-2.3-.8-2.3-1.8l-1-14.2-.9.8c0 0-.7 3.1-3 3.4-1.6.2-2.2-1.2-1.9-2" fill="#ffe1bd"/><path d="m55 20.7c-.1-1.1.9-1.6 1-.5l.3 3.7c1.2-1.1 3-3.5 2.8-5.8l-.8-10.6c-.1-.8-.4-1.4-.8-1.9 1.1.5 2 1.4 2.1 2.8l.7 10.6c.3 3.7-3.2 6.4-3.9 6.9l.3 5c.1.9-.6 1.8-1.6 2 .4-.4.7-.9.7-1.5l-.8-10.7" fill="#e6b796"/><path d="m60.3 8.5c0 0-7.8.3-9.6-2.1l.5-4.4h9.8l-.7 6.5" fill="#428bc1"/><path d="m49.5 18.5l.1-.4c0 0 1.2-1.5 1.6-2.9l.1 1.7c-.3.5-.6.9-.6.9l-.1.4c-.2.8-.8 2.5-3 2.8 1.3-.6 1.7-1.8 1.9-2.5" fill="#e6b796"/><path d="m32 42.8l-7-1.1c4.2 6 9.8 6 14 0l-7 1.1" fill="#e08672"/><path d="m34.8 41.5c-2.1-.8-2.8.5-2.8.5s-.7-1.2-2.8-.5c-1.6.6-4.2.2-4.2.3 2.8.6 3.1 1.8 7 1.8s4.2-1.2 7-1.8c0 0-2.6.3-4.2-.3" fill="#b86e5d"/><path d="m32 39.6c-2.9 0-4.4-2.1-2.9-2.1 1.5 0 4.4 0 5.9 0 1.4 0-.1 2.1-3 2.1" fill="#e6b796"/><g fill="#664e27"><path d="m19.4 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/><path d="m34.7 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f486-1f3fc.svg b/riot/emojione/svg/1f486-1f3fc.svg new file mode 100644 index 0000000..ccea508 --- /dev/null +++ b/riot/emojione/svg/1f486-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 5.8c-13.7 0-21.2 8.5-21.2 19.6v28.5h42.4v-28.5c0-16.6-11.5-16.3-11.5-16.3s-.8-3.3-9.7-3.3" fill="#dbb471"/><path d="m41.6 49.9v-6.7h-19.2v6.7c-12.1.3-14.6 2.2-14.6 12.1h48.3c.1-9.9-2.4-11.8-14.5-12.1" fill="#b386e2"/><g fill="#fed0ac"><path d="m16.9 34.7c0 0-3-.8-3-5.2 0-3.5 2.3-4.1 2.3-4.1 8.2 0 21.7-10.5 21.7-10.5s5.1 9.3 10 10.5c0 0 2.4.4 2.4 4.1 0 4.4-3.2 5.2-3.2 5.2 0 6.7-9.3 14.7-15 14.7-5.7 0-15.2-8-15.2-14.7"/><path d="m18.5 19.1c-.9-2.2-1.2-4-1.2-5.4 0-.5-.2-.9-.5-1.2l-4.2-6c-1.2-2-7.8-2.1-8 1.9l-.5 10.6c-.2 3.4 3.5 6.5 4.1 6.1l-.5 5.7c-.1 1.1.5 2 1.7 2.1 1.2.1 2.3-.8 2.3-1.8l1-14.2.9.8c0 0 .7 3.1 3 3.4 1.6.2 2.2-1.2 1.9-2"/></g><path d="m9 20.7c.1-1.1-.9-1.6-1-.5l-.3 3.7c-1.2-1.1-3-3.5-2.8-5.8l.8-10.6c.1-.8.4-1.4.8-1.9-1.1.5-1.9 1.4-2 2.7l-.8 10.7c-.3 3.7 3.2 6.4 3.9 6.9l-.3 5c-.1.9.6 1.8 1.6 2-.4-.4-.7-.9-.7-1.5l.8-10.7" fill="#e0a372"/><path d="m3.7 8.5c0 0 7.8.3 9.6-2.1l-.5-4.4h-9.8l.7 6.5" fill="#428bc1"/><path d="m14.5 18.5l-.1-.4c0 0-1.2-1.5-1.6-2.9l-.1 1.7c.3.5.6.9.6.9l.1.4c.2.8.8 2.5 3 2.8-1.3-.6-1.7-1.8-1.9-2.5" fill="#e0a372"/><path d="m45.5 19.1c.9-2.2 1.2-4 1.2-5.4 0-.5.2-.9.5-1.2l4.2-6c1.2-2 7.8-2.1 8 1.9l.5 10.6c.2 3.4-3.5 6.5-4.1 6.1l.5 5.7c.1 1.1-.5 2-1.7 2.1-1.2.1-2.3-.8-2.3-1.8l-1-14.2-.9.8c0 0-.7 3.1-3 3.4-1.6.2-2.2-1.2-1.9-2" fill="#fed0ac"/><path d="m55 20.7c-.1-1.1.9-1.6 1-.5l.3 3.7c1.2-1.1 3-3.5 2.8-5.8l-.8-10.6c-.1-.8-.4-1.4-.8-1.9 1.1.5 2 1.4 2.1 2.8l.7 10.6c.3 3.7-3.2 6.4-3.9 6.9l.3 5c.1.9-.6 1.8-1.6 2 .4-.4.7-.9.7-1.5l-.8-10.7" fill="#e0a372"/><path d="m60.3 8.5c0 0-7.8.3-9.6-2.1l.5-4.4h9.8l-.7 6.5" fill="#428bc1"/><path d="m49.5 18.5l.1-.4c0 0 1.2-1.5 1.6-2.9l.1 1.7c-.3.5-.6.9-.6.9l-.1.4c-.2.8-.8 2.5-3 2.8 1.3-.6 1.7-1.8 1.9-2.5" fill="#e0a372"/><path d="m32 42.8l-7-1.1c4.2 6 9.8 6 14 0l-7 1.1" fill="#e08672"/><path d="m34.8 41.5c-2.1-.8-2.8.5-2.8.5s-.7-1.2-2.8-.5c-1.6.6-4.2.2-4.2.3 2.8.6 3.1 1.8 7 1.8 3.8 0 4.2-1.2 7-1.8 0 0-2.6.3-4.2-.3" fill="#b86e5d"/><path d="m32 39.6c-2.9 0-4.4-2.1-2.9-2.1s4.4 0 5.9 0c1.4 0-.1 2.1-3 2.1" fill="#e0a372"/><g fill="#664e27"><path d="m19.4 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/><path d="m34.7 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f486-1f3fd.svg b/riot/emojione/svg/1f486-1f3fd.svg new file mode 100644 index 0000000..245ca4b --- /dev/null +++ b/riot/emojione/svg/1f486-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 5.8c-13.7 0-21.2 8.5-21.2 19.6v28.5h42.4v-28.5c0-16.6-11.5-16.3-11.5-16.3s-.8-3.3-9.7-3.3" fill="#594640"/><path d="m41.6 49.9v-6.7h-19.2v6.7c-12.1.3-14.6 2.2-14.6 12.1h48.3c.1-9.9-2.4-11.8-14.5-12.1" fill="#b386e2"/><g fill="#d6a57c"><path d="m16.9 34.7c0 0-3-.8-3-5.2 0-3.5 2.3-4.1 2.3-4.1 8.2 0 21.7-10.5 21.7-10.5s5.1 9.3 10 10.5c0 0 2.4.4 2.4 4.1 0 4.4-3.2 5.2-3.2 5.2 0 6.7-9.3 14.7-15 14.7-5.8 0-15.2-8-15.2-14.7"/><path d="m18.5 19.1c-.9-2.2-1.2-4-1.2-5.4 0-.5-.2-.9-.5-1.2l-4.2-6c-1.2-2-7.8-2.1-8 1.9l-.5 10.6c-.2 3.4 3.5 6.5 4.1 6.1l-.5 5.7c-.1 1.1.5 2 1.7 2.1 1.2.1 2.3-.8 2.3-1.8l1-14.2.9.8c0 0 .7 3.1 3 3.4 1.6.2 2.2-1.2 1.9-2"/></g><path d="m9 20.7c.1-1.1-.9-1.6-1-.5l-.3 3.7c-1.2-1.1-3-3.5-2.8-5.8l.8-10.6c.1-.8.4-1.4.8-1.9-1.1.5-1.9 1.4-2 2.7l-.8 10.7c-.3 3.7 3.2 6.4 3.9 6.9l-.3 5c-.1.9.6 1.8 1.6 2-.4-.4-.7-.9-.7-1.5l.8-10.7" fill="#b58360"/><path d="m3.7 8.5c0 0 7.8.3 9.6-2.1l-.5-4.4h-9.8l.7 6.5" fill="#428bc1"/><path d="m14.5 18.5l-.1-.4c0 0-1.2-1.5-1.6-2.9l-.1 1.7c.3.5.6.9.6.9l.1.4c.2.8.8 2.5 3 2.8-1.3-.6-1.7-1.8-1.9-2.5" fill="#b58360"/><path d="m45.5 19.1c.9-2.2 1.2-4 1.2-5.4 0-.5.2-.9.5-1.2l4.2-6c1.2-2 7.8-2.1 8 1.9l.5 10.6c.2 3.4-3.5 6.5-4.1 6.1l.5 5.7c.1 1.1-.5 2-1.7 2.1-1.2.1-2.3-.8-2.3-1.8l-1-14.2-.9.8c0 0-.7 3.1-3 3.4-1.6.2-2.2-1.2-1.9-2" fill="#d6a57c"/><path d="m55 20.7c-.1-1.1.9-1.6 1-.5l.3 3.7c1.2-1.1 3-3.5 2.8-5.8l-.8-10.6c-.1-.8-.4-1.4-.8-1.9 1.1.5 2 1.4 2.1 2.8l.7 10.6c.3 3.7-3.2 6.4-3.9 6.9l.3 5c.1.9-.6 1.8-1.6 2 .4-.4.7-.9.7-1.5l-.8-10.7" fill="#b58360"/><path d="m60.3 8.5c0 0-7.8.3-9.6-2.1l.5-4.4h9.8l-.7 6.5" fill="#428bc1"/><g fill="#b58360"><path d="m49.5 18.5l.1-.4c0 0 1.2-1.5 1.6-2.9l.1 1.7c-.3.5-.6.9-.6.9l-.1.4c-.2.8-.8 2.5-3 2.8 1.3-.6 1.7-1.8 1.9-2.5"/><path d="m32 42.8l-7-1.1c4.2 6 9.8 6 14 0l-7 1.1"/></g><path d="m34.8 41.5c-2.1-.8-2.8.5-2.8.5s-.7-1.2-2.8-.5c-1.6.6-4.2.2-4.2.3 2.8.6 3.1 1.8 7 1.8 3.8 0 4.2-1.2 7-1.8 0 0-2.6.3-4.2-.3" fill="#805c44"/><path d="m32 39.6c-2.9 0-4.4-2.1-2.9-2.1 1.5 0 4.4 0 5.9 0 1.4 0-.1 2.1-3 2.1" fill="#b58360"/><g fill="#664e27"><path d="m19.4 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/><path d="m34.7 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f486-1f3fe.svg b/riot/emojione/svg/1f486-1f3fe.svg new file mode 100644 index 0000000..a56ff48 --- /dev/null +++ b/riot/emojione/svg/1f486-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 5.8c-13.7 0-21.2 8.5-21.2 19.6v28.5h42.4v-28.5c0-16.6-11.5-16.3-11.5-16.3s-.8-3.3-9.7-3.3" fill="#231f20"/><path d="m41.6 49.9v-6.7h-19.2v6.7c-12.1.3-14.6 2.2-14.6 12.1h48.3c.1-9.9-2.4-11.8-14.5-12.1" fill="#b386e2"/><g fill="#b47d56"><path d="m16.9 34.7c0 0-3-.8-3-5.2 0-3.5 2.3-4.1 2.3-4.1 8.2 0 21.7-10.5 21.7-10.5s5.1 9.3 10 10.5c0 0 2.4.4 2.4 4.1 0 4.4-3.2 5.2-3.2 5.2 0 6.7-9.3 14.7-15 14.7-5.8 0-15.2-8-15.2-14.7"/><path d="m18.5 19.1c-.9-2.2-1.2-4-1.2-5.4 0-.5-.2-.9-.5-1.2l-4.2-6c-1.2-2-7.8-2.1-8 1.9l-.5 10.6c-.2 3.4 3.5 6.5 4.1 6.1l-.5 5.7c-.1 1.1.5 2 1.7 2.1 1.2.1 2.3-.8 2.3-1.8l1-14.2.9.8c0 0 .7 3.1 3 3.4 1.6.2 2.2-1.2 1.9-2"/></g><path d="m9 20.7c.1-1.1-.9-1.6-1-.5l-.3 3.7c-1.2-1.1-3-3.5-2.8-5.8l.8-10.6c.1-.8.4-1.4.8-1.9-1.1.5-1.9 1.4-2 2.7l-.8 10.7c-.3 3.7 3.2 6.4 3.9 6.9l-.3 5c-.1.9.6 1.8 1.6 2-.4-.4-.7-.9-.7-1.5l.8-10.7" fill="#935e3e"/><path d="m3.7 8.5c0 0 7.8.3 9.6-2.1l-.5-4.4h-9.8l.7 6.5" fill="#428bc1"/><path d="m14.5 18.5l-.1-.4c0 0-1.2-1.5-1.6-2.9l-.1 1.7c.3.5.6.9.6.9l.1.4c.2.8.8 2.5 3 2.8-1.3-.6-1.7-1.8-1.9-2.5" fill="#935e3e"/><path d="m45.5 19.1c.9-2.2 1.2-4 1.2-5.4 0-.5.2-.9.5-1.2l4.2-6c1.2-2 7.8-2.1 8 1.9l.5 10.6c.2 3.4-3.5 6.5-4.1 6.1l.5 5.7c.1 1.1-.5 2-1.7 2.1-1.2.1-2.3-.8-2.3-1.8l-1-14.2-.9.8c0 0-.7 3.1-3 3.4-1.6.2-2.2-1.2-1.9-2" fill="#b47d56"/><path d="m55 20.7c-.1-1.1.9-1.6 1-.5l.3 3.7c1.2-1.1 3-3.5 2.8-5.8l-.8-10.6c-.1-.8-.4-1.4-.8-1.9 1.1.5 2 1.4 2.1 2.8l.7 10.6c.3 3.7-3.2 6.4-3.9 6.9l.3 5c.1.9-.6 1.8-1.6 2 .4-.4.7-.9.7-1.5l-.8-10.7" fill="#935e3e"/><path d="m60.3 8.5c0 0-7.8.3-9.6-2.1l.5-4.4h9.8l-.7 6.5" fill="#428bc1"/><g fill="#935e3e"><path d="m49.5 18.5l.1-.4c0 0 1.2-1.5 1.6-2.9l.1 1.7c-.3.5-.6.9-.6.9l-.1.4c-.2.8-.8 2.5-3 2.8 1.3-.6 1.7-1.8 1.9-2.5"/><path d="m32 42.8l-7-1.1c4.2 6 9.8 6 14 0l-7 1.1"/></g><path d="m34.8 41.5c-2.1-.8-2.8.5-2.8.5s-.7-1.2-2.8-.5c-1.6.6-4.2.2-4.2.3 2.8.6 3.1 1.8 7 1.8s4.2-1.2 7-1.8c0 0-2.6.3-4.2-.3" fill="#734c31"/><path d="m32 39.6c-2.9 0-4.4-2.1-2.9-2.1 1.5 0 4.4 0 5.9 0 1.4 0-.1 2.1-3 2.1" fill="#935e3e"/><g fill="#664e27"><path d="m19.4 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/><path d="m34.7 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f486-1f3ff.svg b/riot/emojione/svg/1f486-1f3ff.svg new file mode 100644 index 0000000..bf24cb0 --- /dev/null +++ b/riot/emojione/svg/1f486-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 5.8c-13.7 0-21.2 8.5-21.2 19.6v28.5h42.4v-28.5c0-16.6-11.5-16.3-11.5-16.3s-.8-3.3-9.7-3.3" fill="#231f20"/><path d="m41.6 49.9v-6.7h-19.2v6.7c-12.1.3-14.6 2.2-14.6 12.1h48.3c.1-9.9-2.4-11.8-14.5-12.1" fill="#b386e2"/><g fill="#8a6859"><path d="m16.9 34.7c0 0-3-.8-3-5.2 0-3.5 2.3-4.1 2.3-4.1 8.2 0 21.7-10.5 21.7-10.5s5.1 9.3 10 10.5c0 0 2.4.4 2.4 4.1 0 4.4-3.2 5.2-3.2 5.2 0 6.7-9.3 14.7-15 14.7-5.7 0-15.2-8-15.2-14.7"/><path d="m18.5 19.1c-.9-2.2-1.2-4-1.2-5.4 0-.5-.2-.9-.5-1.2l-4.2-6c-1.2-2-7.8-2.1-8 1.9l-.5 10.6c-.2 3.4 3.5 6.5 4.1 6.1l-.5 5.7c-.1 1.1.5 2 1.7 2.1 1.2.1 2.3-.8 2.3-1.8l1-14.2.9.8c0 0 .7 3.1 3 3.4 1.6.2 2.2-1.2 1.9-2"/></g><path d="m9 20.7c.1-1.1-.9-1.6-1-.5l-.3 3.7c-1.2-1.1-3-3.5-2.8-5.8l.8-10.6c.1-.8.4-1.4.8-1.9-1.1.5-1.9 1.4-2 2.7l-.8 10.7c-.3 3.7 3.2 6.4 3.9 6.9l-.3 5c-.1.9.6 1.8 1.6 2-.4-.4-.7-.9-.7-1.5l.8-10.7" fill="#705041"/><path d="m3.7 8.5c0 0 7.8.3 9.6-2.1l-.5-4.4h-9.8l.7 6.5" fill="#428bc1"/><path d="m14.5 18.5l-.1-.4c0 0-1.2-1.5-1.6-2.9l-.1 1.7c.3.5.6.9.6.9l.1.4c.2.8.8 2.5 3 2.8-1.3-.6-1.7-1.8-1.9-2.5" fill="#705041"/><path d="m45.5 19.1c.9-2.2 1.2-4 1.2-5.4 0-.5.2-.9.5-1.2l4.2-6c1.2-2 7.8-2.1 8 1.9l.5 10.6c.2 3.4-3.5 6.5-4.1 6.1l.5 5.7c.1 1.1-.5 2-1.7 2.1-1.2.1-2.3-.8-2.3-1.8l-1-14.2-.9.8c0 0-.7 3.1-3 3.4-1.6.2-2.2-1.2-1.9-2" fill="#8a6859"/><path d="m55 20.7c-.1-1.1.9-1.6 1-.5l.3 3.7c1.2-1.1 3-3.5 2.8-5.8l-.8-10.6c-.1-.8-.4-1.4-.8-1.9 1.1.5 2 1.4 2.1 2.8l.7 10.6c.3 3.7-3.2 6.4-3.9 6.9l.3 5c.1.9-.6 1.8-1.6 2 .4-.4.7-.9.7-1.5l-.8-10.7" fill="#705041"/><path d="m60.3 8.5c0 0-7.8.3-9.6-2.1l.5-4.4h9.8l-.7 6.5" fill="#428bc1"/><path d="m49.5 18.5l.1-.4c0 0 1.2-1.5 1.6-2.9l.1 1.7c-.3.5-.6.9-.6.9l-.1.4c-.2.8-.8 2.5-3 2.8 1.3-.6 1.7-1.8 1.9-2.5" fill="#705041"/><path d="m32 42.8l-7-1.1c4.2 6 9.8 6 14 0l-7 1.1" fill="#7d5442"/><path d="m34.8 41.5c-2.1-.8-2.8.5-2.8.5s-.7-1.2-2.8-.5c-1.6.6-4.2.2-4.2.3 2.8.6 3.1 1.8 7 1.8 3.8 0 4.2-1.2 7-1.8 0 0-2.6.3-4.2-.3" fill="#5c3f34"/><path d="m32 39.6c-2.9 0-4.4-2.1-2.9-2.1s4.4 0 5.9 0c1.4 0-.1 2.1-3 2.1" fill="#705041"/><g fill="#574137"><path d="m19.4 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/><path d="m34.7 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f486.svg b/riot/emojione/svg/1f486.svg new file mode 100644 index 0000000..04a2727 --- /dev/null +++ b/riot/emojione/svg/1f486.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 5.8c-13.7 0-21.2 8.5-21.2 19.6v28.5h42.4v-28.5c0-16.6-11.5-16.3-11.5-16.3s-.8-3.3-9.7-3.3" fill="#ffb300"/><path d="m41.6 49.9v-6.7h-19.2v6.7c-12.1.3-14.6 2.2-14.6 12.1h48.3c.1-9.9-2.4-11.8-14.5-12.1" fill="#b386e2"/><g fill="#ffdd67"><path d="m16.9 34.7c0 0-3-.8-3-5.2 0-3.5 2.3-4.1 2.3-4.1 8.2 0 21.7-10.5 21.7-10.5s5.1 9.3 10 10.5c0 0 2.4.4 2.4 4.1 0 4.4-3.2 5.2-3.2 5.2 0 6.7-9.3 14.7-15 14.7-5.8 0-15.2-8-15.2-14.7"/><path d="m18.5 19.1c-.9-2.2-1.2-4-1.2-5.4 0-.5-.2-.9-.5-1.2l-4.2-6c-1.2-2-7.8-2.1-8 1.9l-.5 10.6c-.2 3.4 3.5 6.5 4.1 6.1l-.5 5.7c-.1 1.1.5 2 1.7 2.1 1.2.1 2.3-.8 2.3-1.8l1-14.2.9.8c0 0 .7 3.1 3 3.4 1.6.2 2.2-1.2 1.9-2"/></g><path d="m9 20.7c.1-1.1-.9-1.6-1-.5l-.3 3.7c-1.2-1.1-3-3.5-2.8-5.8l.8-10.6c.1-.8.4-1.4.8-1.9-1.1.5-1.9 1.4-2 2.7l-.8 10.7c-.3 3.7 3.2 6.4 3.9 6.9l-.3 5c-.1.9.6 1.8 1.6 2-.4-.4-.7-.9-.7-1.5l.8-10.7" fill="#eba352"/><path d="m3.7 8.5c0 0 7.8.3 9.6-2.1l-.5-4.4h-9.8l.7 6.5" fill="#428bc1"/><path d="m14.5 18.5l-.1-.4c0 0-1.2-1.5-1.6-2.9l-.1 1.7c.3.5.6.9.6.9l.1.4c.2.8.8 2.5 3 2.8-1.3-.6-1.7-1.8-1.9-2.5" fill="#eba352"/><path d="m45.5 19.1c.9-2.2 1.2-4 1.2-5.4 0-.5.2-.9.5-1.2l4.2-6c1.2-2 7.8-2.1 8 1.9l.5 10.6c.2 3.4-3.5 6.5-4.1 6.1l.5 5.7c.1 1.1-.5 2-1.7 2.1-1.2.1-2.3-.8-2.3-1.8l-1-14.2-.9.8c0 0-.7 3.1-3 3.4-1.6.2-2.2-1.2-1.9-2" fill="#ffdd67"/><path d="m55 20.7c-.1-1.1.9-1.6 1-.5l.3 3.7c1.2-1.1 3-3.5 2.8-5.8l-.8-10.6c-.1-.8-.4-1.4-.8-1.9 1.1.5 2 1.4 2.1 2.8l.7 10.6c.3 3.7-3.2 6.4-3.9 6.9l.3 5c.1.9-.6 1.8-1.6 2 .4-.4.7-.9.7-1.5l-.8-10.7" fill="#eba352"/><path d="m60.3 8.5c0 0-7.8.3-9.6-2.1l.5-4.4h9.8l-.7 6.5" fill="#428bc1"/><path d="m49.5 18.5l.1-.4c0 0 1.2-1.5 1.6-2.9l.1 1.7c-.3.5-.6.9-.6.9l-.1.4c-.2.8-.8 2.5-3 2.8 1.3-.6 1.7-1.8 1.9-2.5" fill="#eba352"/><path d="m32 42.8l-7-1.1c4.2 6 9.8 6 14 0l-7 1.1" fill="#f09985"/><path d="m34.8 41.5c-2.1-.8-2.8.5-2.8.5s-.7-1.2-2.8-.5c-1.6.6-4.2.2-4.2.3 2.8.6 3.1 1.8 7 1.8 3.8 0 4.2-1.2 7-1.8 0 0-2.6.3-4.2-.3" fill="#d47f6c"/><path d="m32 39.6c-2.9 0-4.4-2.1-2.9-2.1 1.5 0 4.4 0 5.9 0 1.4 0-.1 2.1-3 2.1" fill="#eba352"/><g fill="#937237"><path d="m19.4 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/><path d="m34.7 30.2c2.5 4.7 7.5 4.7 9.9 0 .1-.2-.2-.3-.6-.6-2.5 2-6.5 1.8-8.8 0-.3.3-.6.4-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f487-1f3fb.svg b/riot/emojione/svg/1f487-1f3fb.svg new file mode 100644 index 0000000..793781e --- /dev/null +++ b/riot/emojione/svg/1f487-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 24.7c-.9.3-3.6 1.2-5.9 1.5-.9.1-1.7 0-2.5-.1-.7-.2-1.3-.6-1.5-1.3l-.2.7c-1.4-.8-2.5-2.4-2.7-5.1-1.2-21.1-11.4-14.8-11.4-14.8s-.9-3.6-10-3.6c-14.1 0-21.8 9-21.8 20.9v30.3c0 0 51.1 8.7 57.7-29.3 0 .1-.7.4-1.7.8" fill="#594640"/><path d="m50.4 24.7c.5 1.6 2.7 1.7 5 1.3-1-2.6-2.8-5.8-4.2-9.4-.6-1.5-1.8-2.2-3.4-1.1 0 0-1.5-.7-3.4-6.7 0 0-.3-.8-.5-1-1.4-2.4-4.6-3.1-7.1-1.6-2.5 1.5-3.4 4.7-1.9 7.1 1.4 2.4 4.6 3.1 7.1 1.6.7-.4 1.3-1 1.7-1.6.6.4 1.4 3.6 1.4 3.6l5.2 8.6.1-.8m-9.7-11.9c-1.3.8-3 .4-3.7-.8-.7-1.2-.3-2.9 1-3.7 1.3-.8 3-.4 3.7.8.7 1.2.3 2.9-1 3.7" fill="#a9b5ae"/><path d="M35.6,49.4v-7H16.5v7C4.4,49.7,2,51.7,2,62h48.1C50.1,51.7,47.7,49.7,35.6,49.4z" fill="#b386e2"/><path d="m10.1 33.6c0 0-3.2-.8-3.2-5.5 0-3.7 2.4-4.4 2.4-4.4 8.7 0 24.7-11.2 24.7-11.2s3.4 9.9 8.5 11.2c0 0 2.5.5 2.5 4.4 0 4.7-3.3 5.5-3.3 5.5 0 7.1-9.8 15.7-15.8 15.7-5.8-.1-15.8-8.6-15.8-15.7" fill="#ffe1bd"/><path d="m26 38.2c-3 0-4.6-2.2-3-2.2s4.6 0 6.1 0c1.5 0 0 2.2-3.1 2.2" fill="#e6b796"/><path d="m30.6 31.7c-1.1 0-.9-1.3-.9-1.3 1.6-8.4 11-3.9 11-3.9.7 1.5-1.7 5.1-2.4 5.2-3 .8-7.7 0-7.7 0" fill="#f5f5f5"/><circle cx="34.8" cy="28.3" r="3.3" fill="#664e27"/><circle cx="34.8" cy="28.3" r="1.1" fill="#2b2925"/><path d="m29.7 30.4c1.7-10.1 9.9-3.4 13.2-4.8-3.3 3.1-9.9-3.6-13.2 4.8" fill="#3b3226"/><path d="m21.4 31.7c1.1 0 .9-1.3.9-1.3-1.6-8.4-11-3.9-11-3.9-.7 1.5 1.7 5.1 2.4 5.2 3.1.8 7.7 0 7.7 0" fill="#f5f5f5"/><circle cx="17.2" cy="28.3" r="3.3" fill="#664e27"/><path d="m22.4 30.4c-1.7-10.1-9.9-3.4-13.2-4.8 3.2 3.1 9.8-3.6 13.2 4.8" fill="#3b3226"/><path d="m26 41.9l-7.3-1.1c4.4 6.3 10.3 6.3 14.7 0l-7.4 1.1" fill="#e08672"/><path d="m28.9 40.5c-2.1-.8-2.9.5-2.9.5s-.7-1.3-2.9-.5c-1.7.6-4.5.3-4.4.3 2.9.6 3.3 1.9 7.3 1.9s4.4-1.2 7.3-1.9c.1 0-2.7.4-4.4-.3" fill="#b86e5d"/><circle cx="17.2" cy="28.3" r="1.1" fill="#2b2925"/><path d="m61.8 8.7c.8-2.8-.9-5.5-3.7-6.1-2.8-.6-5.7 1.1-6.4 3.9-.1.3-.2 1.1-.2 1.1-.3 6.4-1.5 7.6-1.5 7.6-1.8-.5-2.8.6-3 2.2-1.1 8.7-3.7 16.2 1 16.3l5-18.2c0 0-.1-3.3.4-3.9.6.5 1.3.8 2.1 1 2.7.6 5.6-1.2 6.3-3.9m-2.4-.6c-.4 1.4-1.9 2.3-3.3 2-1.4-.3-2.3-1.7-1.9-3.2s1.9-2.3 3.3-2c1.4.4 2.3 1.8 1.9 3.2" fill="#cedbd5"/><path d="m50.6 18.6c.2-.7-.2-1.5-1-1.6-.7-.2-1.5.3-1.7 1-.2.7.2 1.5 1 1.6.8.2 1.5-.3 1.7-1" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f487-1f3fc.svg b/riot/emojione/svg/1f487-1f3fc.svg new file mode 100644 index 0000000..ac7e41c --- /dev/null +++ b/riot/emojione/svg/1f487-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 24.7c-.9.3-3.6 1.2-5.9 1.5-.9.1-1.7 0-2.5-.1-.7-.2-1.3-.6-1.5-1.3l-.2.7c-1.4-.8-2.5-2.4-2.7-5.1-1.2-21.1-11.4-14.8-11.4-14.8s-.9-3.6-10-3.6c-14.1 0-21.8 9-21.8 20.9v30.3c0 0 51.1 8.7 57.7-29.3 0 .1-.7.4-1.7.8" fill="#dbb471"/><path d="m50.4 24.7c.5 1.6 2.7 1.7 5 1.3-1-2.6-2.8-5.8-4.2-9.4-.6-1.5-1.8-2.2-3.4-1.1 0 0-1.5-.7-3.4-6.7 0 0-.3-.8-.5-1-1.4-2.4-4.6-3.1-7.1-1.6-2.5 1.5-3.4 4.7-1.9 7.1 1.4 2.4 4.6 3.1 7.1 1.6.7-.4 1.3-1 1.7-1.6.6.4 1.4 3.6 1.4 3.6l5.2 8.6.1-.8m-9.7-11.9c-1.3.8-3 .4-3.7-.8-.7-1.2-.3-2.9 1-3.7 1.3-.8 3-.4 3.7.8.7 1.2.3 2.9-1 3.7" fill="#a9b5ae"/><path d="M35.6,49.4v-7H16.5v7C4.4,49.7,2,51.7,2,62h48.1C50.1,51.7,47.7,49.7,35.6,49.4z" fill="#b386e2"/><path d="m10.1 33.6c0 0-3.2-.8-3.2-5.5 0-3.7 2.4-4.4 2.4-4.4 8.7 0 24.7-11.2 24.7-11.2s3.4 9.9 8.5 11.2c0 0 2.5.5 2.5 4.4 0 4.7-3.3 5.5-3.3 5.5 0 7.1-9.8 15.7-15.8 15.7-5.8-.1-15.8-8.6-15.8-15.7" fill="#fed0ac"/><path d="m26 38.2c-3 0-4.6-2.2-3-2.2 1.5 0 4.6 0 6.1 0 1.5 0 0 2.2-3.1 2.2" fill="#e0a372"/><path d="m30.6 31.7c-1.1 0-.9-1.3-.9-1.3 1.6-8.4 11-3.9 11-3.9.7 1.5-1.7 5.1-2.4 5.2-3 .8-7.7 0-7.7 0" fill="#f5f5f5"/><circle cx="34.8" cy="28.3" r="3.3" fill="#664e27"/><circle cx="34.8" cy="28.3" r="1.1" fill="#2b2925"/><path d="m29.7 30.4c1.6-10.1 9.9-3.4 13.2-4.8-3.3 3.1-9.9-3.6-13.2 4.8" fill="#3b3226"/><path d="m21.4 31.7c1.1 0 .9-1.3.9-1.3-1.6-8.4-11-3.9-11-3.9-.7 1.5 1.7 5.1 2.4 5.2 3.1.8 7.7 0 7.7 0" fill="#f5f5f5"/><circle cx="17.2" cy="28.3" r="3.3" fill="#664e27"/><path d="m22.4 30.4c-1.7-10.1-9.9-3.4-13.2-4.8 3.2 3.1 9.8-3.6 13.2 4.8" fill="#3b3226"/><path d="m26 41.9l-7.3-1.1c4.4 6.3 10.3 6.3 14.7 0l-7.4 1.1" fill="#e08672"/><path d="m28.9 40.5c-2.1-.8-2.9.5-2.9.5s-.7-1.3-2.9-.5c-1.7.6-4.5.3-4.4.3 2.9.6 3.3 1.9 7.3 1.9 4 0 4.4-1.2 7.3-1.9.1 0-2.7.4-4.4-.3" fill="#b86e5d"/><circle cx="17.2" cy="28.3" r="1.1" fill="#2b2925"/><path d="m61.8 8.7c.8-2.8-.9-5.5-3.7-6.1-2.8-.6-5.7 1.1-6.4 3.9-.1.3-.2 1.1-.2 1.1-.3 6.4-1.5 7.6-1.5 7.6-1.8-.5-2.8.6-3 2.2-1.1 8.7-3.7 16.2 1 16.3l5-18.2c0 0-.1-3.3.4-3.9.6.5 1.3.8 2.1 1 2.7.6 5.6-1.2 6.3-3.9m-2.4-.6c-.4 1.4-1.9 2.3-3.3 2-1.4-.3-2.3-1.7-1.9-3.2.4-1.4 1.9-2.3 3.3-2 1.4.4 2.3 1.8 1.9 3.2" fill="#cedbd5"/><path d="m50.6 18.6c.2-.7-.2-1.5-1-1.6-.7-.2-1.5.3-1.7 1-.2.7.2 1.5 1 1.6.8.2 1.5-.3 1.7-1" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f487-1f3fd.svg b/riot/emojione/svg/1f487-1f3fd.svg new file mode 100644 index 0000000..b581fe5 --- /dev/null +++ b/riot/emojione/svg/1f487-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 24.7c-.9.3-3.6 1.2-5.9 1.5-.9.1-1.7 0-2.5-.1-.7-.2-1.3-.6-1.5-1.3l-.2.7c-1.4-.8-2.5-2.4-2.7-5.1-1.2-21.1-11.4-14.8-11.4-14.8s-.9-3.6-10-3.6c-14.1 0-21.8 9-21.8 20.9v30.3c0 0 51.1 8.7 57.7-29.3 0 .1-.7.4-1.7.8" fill="#594640"/><path d="m50.4 24.7c.5 1.6 2.7 1.7 5 1.3-1-2.6-2.8-5.8-4.2-9.4-.6-1.5-1.8-2.2-3.4-1.1 0 0-1.5-.7-3.4-6.7 0 0-.3-.8-.5-1-1.4-2.4-4.6-3.1-7.1-1.6-2.5 1.5-3.4 4.7-1.9 7.1 1.4 2.4 4.6 3.1 7.1 1.6.7-.4 1.3-1 1.7-1.6.6.4 1.4 3.6 1.4 3.6l5.2 8.6.1-.8m-9.7-11.9c-1.3.8-3 .4-3.7-.8-.7-1.2-.3-2.9 1-3.7 1.3-.8 3-.4 3.7.8.7 1.2.3 2.9-1 3.7" fill="#a9b5ae"/><path d="M35.6,49.4v-7H16.5v7C4.4,49.7,2,51.7,2,62h48.1C50.1,51.7,47.7,49.7,35.6,49.4z" fill="#b386e2"/><path d="m10.1 33.6c0 0-3.2-.8-3.2-5.5 0-3.7 2.4-4.4 2.4-4.4 8.7 0 24.7-11.2 24.7-11.2s3.4 9.9 8.5 11.2c0 0 2.5.5 2.5 4.4 0 4.7-3.3 5.5-3.3 5.5 0 7.1-9.8 15.7-15.8 15.7-5.8-.1-15.8-8.6-15.8-15.7" fill="#d6a57c"/><path d="m26 38.2c-3 0-4.6-2.2-3-2.2s4.6 0 6.1 0c1.5 0 0 2.2-3.1 2.2" fill="#b58360"/><path d="m30.6 31.7c-1.1 0-.9-1.3-.9-1.3 1.6-8.4 11-3.9 11-3.9.7 1.5-1.7 5.1-2.4 5.2-3.1.8-7.7 0-7.7 0" fill="#f5f5f5"/><circle cx="34.8" cy="28.3" r="3.3" fill="#664e27"/><circle cx="34.8" cy="28.3" r="1.1" fill="#2b2925"/><path d="m29.7 30.4c1.7-10.1 9.9-3.4 13.2-4.8-3.3 3.1-9.9-3.6-13.2 4.8" fill="#3b3226"/><path d="m21.4 31.7c1.1 0 .9-1.3.9-1.3-1.6-8.4-11-3.9-11-3.9-.7 1.5 1.7 5.1 2.4 5.2 3.1.8 7.7 0 7.7 0" fill="#f5f5f5"/><circle cx="17.2" cy="28.3" r="3.3" fill="#664e27"/><path d="m22.4 30.4c-1.7-10.1-9.9-3.4-13.2-4.8 3.2 3.1 9.8-3.6 13.2 4.8" fill="#3b3226"/><path d="m26 41.9l-7.3-1.1c4.4 6.3 10.3 6.3 14.7 0l-7.4 1.1" fill="#b58360"/><path d="m28.9 40.5c-2.1-.8-2.9.5-2.9.5s-.7-1.3-2.9-.5c-1.7.6-4.5.3-4.4.3 2.9.6 3.3 1.9 7.3 1.9 4 0 4.4-1.2 7.3-1.9.1 0-2.7.4-4.4-.3" fill="#805c44"/><circle cx="17.2" cy="28.3" r="1.1" fill="#2b2925"/><path d="m61.8 8.7c.8-2.8-.9-5.5-3.7-6.1-2.8-.6-5.7 1.1-6.4 3.9-.1.3-.2 1.1-.2 1.1-.3 6.4-1.5 7.6-1.5 7.6-1.8-.5-2.8.6-3 2.2-1.1 8.7-3.7 16.2 1 16.3l5-18.2c0 0-.1-3.3.4-3.9.6.5 1.3.8 2.1 1 2.7.6 5.6-1.2 6.3-3.9m-2.4-.6c-.4 1.4-1.9 2.3-3.3 2-1.4-.3-2.3-1.7-1.9-3.2.4-1.4 1.9-2.3 3.3-2 1.4.4 2.3 1.8 1.9 3.2" fill="#cedbd5"/><path d="m50.6 18.6c.2-.7-.2-1.5-1-1.6-.7-.2-1.5.3-1.7 1-.2.7.2 1.5 1 1.6.8.2 1.5-.3 1.7-1" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f487-1f3fe.svg b/riot/emojione/svg/1f487-1f3fe.svg new file mode 100644 index 0000000..2c2be85 --- /dev/null +++ b/riot/emojione/svg/1f487-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 24.7c-.9.3-3.6 1.2-5.9 1.5-.9.1-1.7 0-2.5-.1-.7-.2-1.3-.6-1.5-1.3l-.2.7c-1.4-.8-2.5-2.4-2.7-5.1-1.2-21.1-11.4-14.8-11.4-14.8s-.9-3.6-10-3.6c-14.1 0-21.8 9-21.8 20.9v30.3c0 0 51.1 8.7 57.7-29.3 0 .1-.7.4-1.7.8" fill="#231f20"/><path d="m50.4 24.7c.5 1.6 2.7 1.7 5 1.3-1-2.6-2.8-5.8-4.2-9.4-.6-1.5-1.8-2.2-3.4-1.1 0 0-1.5-.7-3.4-6.7 0 0-.3-.8-.5-1-1.4-2.4-4.6-3.1-7.1-1.6-2.5 1.5-3.4 4.7-1.9 7.1 1.4 2.4 4.6 3.1 7.1 1.6.7-.4 1.3-1 1.7-1.6.6.4 1.4 3.6 1.4 3.6l5.2 8.6.1-.8m-9.7-11.9c-1.3.8-3 .4-3.7-.8-.7-1.2-.3-2.9 1-3.7 1.3-.8 3-.4 3.7.8.7 1.2.3 2.9-1 3.7" fill="#a9b5ae"/><path d="M35.6,49.4v-7H16.5v7C4.4,49.7,2,51.7,2,62h48.1C50.1,51.7,47.7,49.7,35.6,49.4z" fill="#b386e2"/><path d="m10.1 33.6c0 0-3.2-.8-3.2-5.5 0-3.7 2.4-4.4 2.4-4.4 8.7 0 24.7-11.2 24.7-11.2s3.4 9.9 8.5 11.2c0 0 2.5.5 2.5 4.4 0 4.7-3.3 5.5-3.3 5.5 0 7.1-9.8 15.7-15.8 15.7-5.8-.1-15.8-8.6-15.8-15.7" fill="#b47d56"/><path d="m26 38.2c-3 0-4.6-2.2-3-2.2s4.6 0 6.1 0c1.5 0 0 2.2-3.1 2.2" fill="#935e3e"/><path d="m30.6 31.7c-1.1 0-.9-1.3-.9-1.3 1.6-8.4 11-3.9 11-3.9.7 1.5-1.7 5.1-2.4 5.2-3 .8-7.7 0-7.7 0" fill="#f5f5f5"/><circle cx="34.8" cy="28.3" r="3.3" fill="#664e27"/><circle cx="34.8" cy="28.3" r="1.1" fill="#2b2925"/><path d="m29.7 30.4c1.7-10.1 9.9-3.4 13.2-4.8-3.3 3.1-9.9-3.6-13.2 4.8" fill="#3b3226"/><path d="m21.4 31.7c1.1 0 .9-1.3.9-1.3-1.6-8.4-11-3.9-11-3.9-.7 1.5 1.7 5.1 2.4 5.2 3.1.8 7.7 0 7.7 0" fill="#f5f5f5"/><circle cx="17.2" cy="28.3" r="3.3" fill="#664e27"/><path d="m22.4 30.4c-1.7-10.1-9.9-3.4-13.2-4.8 3.2 3.1 9.8-3.6 13.2 4.8" fill="#3b3226"/><path d="m26 41.9l-7.3-1.1c4.4 6.3 10.3 6.3 14.7 0l-7.4 1.1" fill="#935e3e"/><path d="m28.9 40.5c-2.1-.8-2.9.5-2.9.5s-.7-1.3-2.9-.5c-1.7.6-4.5.3-4.4.3 2.9.6 3.3 1.9 7.3 1.9s4.4-1.2 7.3-1.9c.1 0-2.7.4-4.4-.3" fill="#734c31"/><circle cx="17.2" cy="28.3" r="1.1" fill="#2b2925"/><path d="m61.8 8.7c.8-2.8-.9-5.5-3.7-6.1-2.8-.6-5.7 1.1-6.4 3.9-.1.3-.2 1.1-.2 1.1-.3 6.4-1.5 7.6-1.5 7.6-1.8-.5-2.8.6-3 2.2-1.1 8.7-3.7 16.2 1 16.3l5-18.2c0 0-.1-3.3.4-3.9.6.5 1.3.8 2.1 1 2.7.6 5.6-1.2 6.3-3.9m-2.4-.6c-.4 1.4-1.9 2.3-3.3 2-1.4-.3-2.3-1.7-1.9-3.2s1.9-2.3 3.3-2c1.4.4 2.3 1.8 1.9 3.2" fill="#cedbd5"/><path d="m50.6 18.6c.2-.7-.2-1.5-1-1.6-.7-.2-1.5.3-1.7 1-.2.7.2 1.5 1 1.6.8.2 1.5-.3 1.7-1" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f487-1f3ff.svg b/riot/emojione/svg/1f487-1f3ff.svg new file mode 100644 index 0000000..0d4ee4c --- /dev/null +++ b/riot/emojione/svg/1f487-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 24.7c-.9.3-3.6 1.2-5.9 1.5-.8.1-1.7 0-2.5-.1-.7-.2-1.3-.6-1.5-1.3l-.2.7c-1.4-.8-2.5-2.4-2.7-5.1-1.2-21.1-11.4-14.8-11.4-14.8s-.9-3.6-10-3.6c-14.1 0-21.8 9-21.8 20.9v30.3c0 0 51.1 8.7 57.7-29.3 0 .1-.7.4-1.7.8" fill="#231f20"/><path d="m50.4 24.7c.5 1.6 2.7 1.7 5 1.3-1-2.6-2.8-5.8-4.2-9.4-.6-1.5-1.8-2.2-3.4-1.1 0 0-1.5-.7-3.4-6.7 0 0-.3-.8-.5-1-1.4-2.4-4.6-3.1-7.1-1.6-2.5 1.5-3.4 4.7-1.9 7.1 1.4 2.4 4.6 3.1 7.1 1.6.7-.4 1.3-1 1.7-1.6.6.4 1.4 3.6 1.4 3.6l5.2 8.6.1-.8m-9.7-11.9c-1.3.8-3 .4-3.7-.8-.7-1.2-.3-2.9 1-3.7 1.3-.8 3-.4 3.7.8.7 1.2.3 2.9-1 3.7" fill="#a9b5ae"/><path d="M35.6,49.4v-7H16.5v7C4.4,49.7,2,51.7,2,62h48.1C50.1,51.7,47.7,49.7,35.6,49.4z" fill="#b386e2"/><path d="m10.1 33.6c0 0-3.2-.8-3.2-5.5 0-3.7 2.4-4.4 2.4-4.4 8.7 0 24.7-11.2 24.7-11.2s3.4 9.9 8.5 11.2c0 0 2.5.5 2.5 4.4 0 4.7-3.3 5.5-3.3 5.5 0 7.1-9.8 15.7-15.8 15.7s-15.8-8.6-15.8-15.7" fill="#8a6859"/><path d="m26 38.2c-3 0-4.6-2.2-3-2.2 1.5 0 4.6 0 6.1 0 1.5 0 0 2.2-3.1 2.2" fill="#705041"/><path d="m30.6 31.7c-1.1 0-.9-1.3-.9-1.3 1.6-8.4 11-3.9 11-3.9.7 1.5-1.7 5.1-2.4 5.2-3.1.8-7.7 0-7.7 0" fill="#f5f5f5"/><circle cx="34.8" cy="28.3" r="3.3" fill="#664e27"/><circle cx="34.8" cy="28.3" r="1.1" fill="#2b2925"/><path d="m29.7 30.4c1.7-10.1 9.9-3.4 13.2-4.8-3.3 3.1-9.9-3.6-13.2 4.8" fill="#3b3226"/><path d="m21.4 31.7c1.1 0 .9-1.3.9-1.3-1.6-8.4-11-3.9-11-3.9-.7 1.5 1.7 5.1 2.4 5.2 3.1.8 7.7 0 7.7 0" fill="#f5f5f5"/><circle cx="17.2" cy="28.3" r="3.3" fill="#664e27"/><path d="m22.4 30.4c-1.7-10.1-9.9-3.4-13.2-4.8 3.2 3.1 9.8-3.6 13.2 4.8" fill="#3b3226"/><path d="m26 41.9l-7.3-1.1c4.4 6.3 10.3 6.3 14.7 0l-7.4 1.1" fill="#7d5442"/><path d="m28.9 40.5c-2.1-.8-2.9.5-2.9.5s-.7-1.3-2.9-.5c-1.7.6-4.5.3-4.4.3 2.9.6 3.3 1.9 7.3 1.9s4.4-1.2 7.3-1.9c.1 0-2.7.4-4.4-.3" fill="#5c3f34"/><circle cx="17.2" cy="28.3" r="1.1" fill="#2b2925"/><path d="m61.8 8.7c.8-2.8-.9-5.5-3.7-6.1-2.8-.6-5.7 1.1-6.4 3.9-.1.3-.2 1.1-.2 1.1-.3 6.4-1.5 7.6-1.5 7.6-1.8-.5-2.8.6-3 2.2-1.1 8.7-3.7 16.2 1 16.3l5-18.2c0 0-.1-3.3.4-3.9.6.5 1.3.8 2.1 1 2.7.6 5.6-1.2 6.3-3.9m-2.4-.6c-.4 1.4-1.9 2.3-3.3 2-1.4-.3-2.3-1.7-1.9-3.2.4-1.4 1.9-2.3 3.3-2 1.4.4 2.3 1.8 1.9 3.2" fill="#cedbd5"/><path d="m50.6 18.6c.2-.7-.2-1.5-1-1.6-.7-.2-1.5.3-1.7 1-.2.7.2 1.5 1 1.6.8.2 1.5-.3 1.7-1" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f487.svg b/riot/emojione/svg/1f487.svg new file mode 100644 index 0000000..0d345e7 --- /dev/null +++ b/riot/emojione/svg/1f487.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 24.7c-.9.3-3.6 1.2-5.9 1.5-.8.1-1.7 0-2.5-.1-.7-.2-1.3-.6-1.5-1.3l-.2.7c-1.4-.8-2.5-2.4-2.7-5.1-1.2-21.1-11.4-14.8-11.4-14.8s-.9-3.6-10-3.6c-14.1 0-21.8 9-21.8 20.9v30.3c0 0 51.1 8.7 57.7-29.3 0 .1-.7.4-1.7.8" fill="#ffb300"/><path d="m50.4 24.7c.5 1.6 2.7 1.7 5 1.3-1-2.6-2.8-5.8-4.2-9.4-.6-1.5-1.8-2.2-3.4-1.1 0 0-1.5-.7-3.4-6.7 0 0-.3-.8-.5-1-1.4-2.4-4.6-3.1-7.1-1.6-2.5 1.5-3.4 4.7-1.9 7.1 1.4 2.4 4.6 3.1 7.1 1.6.7-.4 1.3-1 1.7-1.6.6.4 1.4 3.6 1.4 3.6l5.2 8.6.1-.8m-9.7-11.9c-1.3.8-3 .4-3.7-.8-.7-1.2-.3-2.9 1-3.7 1.3-.8 3-.4 3.7.8.7 1.2.3 2.9-1 3.7" fill="#a9b5ae"/><path d="M35.6,49.4v-7H16.5v7C4.4,49.7,2,51.7,2,62h48.1C50.1,51.7,47.7,49.7,35.6,49.4z" fill="#b386e2"/><path d="m10.1 33.6c0 0-3.2-.8-3.2-5.5 0-3.7 2.4-4.4 2.4-4.4 8.7 0 24.7-11.2 24.7-11.2s3.4 9.9 8.5 11.2c0 0 2.5.5 2.5 4.4 0 4.7-3.3 5.5-3.3 5.5 0 7.1-9.8 15.7-15.8 15.7-5.8-.1-15.8-8.6-15.8-15.7" fill="#ffdd67"/><path d="m26 38.2c-3 0-4.6-2.2-3-2.2s4.6 0 6.1 0c1.5 0 0 2.2-3.1 2.2" fill="#eba352"/><path d="m30.6 31.7c-1.1 0-.9-1.3-.9-1.3 1.6-8.4 11-3.9 11-3.9.7 1.5-1.7 5.1-2.4 5.2-3.1.8-7.7 0-7.7 0" fill="#f5f5f5"/><circle cx="34.8" cy="28.3" r="3.3" fill="#664e27"/><circle cx="34.8" cy="28.3" r="1.1" fill="#2b2925"/><path d="m29.7 30.4c1.7-10.1 9.9-3.4 13.2-4.8-3.3 3.1-9.9-3.6-13.2 4.8" fill="#3b3226"/><path d="m21.4 31.7c1.1 0 .9-1.3.9-1.3-1.6-8.4-11-3.9-11-3.9-.7 1.5 1.7 5.1 2.4 5.2 3.1.8 7.7 0 7.7 0" fill="#f5f5f5"/><circle cx="17.2" cy="28.3" r="3.3" fill="#664e27"/><path d="m22.4 30.4c-1.7-10.1-9.9-3.4-13.2-4.8 3.2 3.1 9.8-3.6 13.2 4.8" fill="#3b3226"/><path d="m26 41.9l-7.3-1.1c4.4 6.3 10.3 6.3 14.7 0l-7.4 1.1" fill="#f09985"/><path d="m28.9 40.5c-2.1-.8-2.9.5-2.9.5s-.7-1.3-2.9-.5c-1.7.6-4.5.3-4.4.3 2.9.6 3.3 1.9 7.3 1.9 4 0 4.4-1.2 7.3-1.9.1 0-2.7.4-4.4-.3" fill="#d47f6c"/><circle cx="17.2" cy="28.3" r="1.1" fill="#2b2925"/><path d="m61.8 8.7c.8-2.8-.9-5.5-3.7-6.1s-5.7 1.1-6.4 3.9c-.1.3-.2 1.1-.2 1.1-.3 6.4-1.5 7.6-1.5 7.6-1.8-.5-2.8.6-3 2.2-1.1 8.7-3.7 16.2 1 16.3l5-18.2c0 0-.1-3.3.4-3.9.6.5 1.3.8 2.1 1 2.7.6 5.6-1.2 6.3-3.9m-2.4-.6c-.4 1.4-1.9 2.3-3.3 2-1.4-.3-2.3-1.7-1.9-3.2.4-1.4 1.9-2.3 3.3-2 1.4.4 2.3 1.8 1.9 3.2" fill="#cedbd5"/><path d="m50.6 18.6c.2-.7-.2-1.5-1-1.6-.7-.2-1.5.3-1.7 1-.2.7.2 1.5 1 1.6.8.2 1.5-.3 1.7-1" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f488.svg b/riot/emojione/svg/1f488.svg new file mode 100644 index 0000000..8db2bdc --- /dev/null +++ b/riot/emojione/svg/1f488.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d8e0e0" d="m19.3 18.9h25.4v38h-25.4z"/><path d="m20.9 23.9c0-2 0-3.9 0-5.9 7.4-1.8 22.2-4.7 22.2-4.7-7.4 1.8-14.8 8.8-22.2 10.6" fill="#428bc1"/><path d="m20.9 29.5c0-2 0-3.9 0-5.9 7.4-1.8 14.8-8.8 22.2-10.6 0 2 0 3.9 0 5.9-7.4 1.8-14.8 8.8-22.2 10.6" fill="#fff"/><path d="m20.9 35.2c0-2 0-3.9 0-5.9 7.4-1.8 14.8-8.8 22.2-10.6 0 2 0 3.9 0 5.9-7.4 1.7-14.8 8.7-22.2 10.6" fill="#ed4c5c"/><path d="m20.9 40.8c0-2 0-3.9 0-5.9 7.4-1.8 14.8-8.8 22.2-10.6 0 2 0 3.9 0 5.9-7.4 1.8-14.8 8.8-22.2 10.6" fill="#fff"/><path d="m20.9 46.3c0-2 0-3.9 0-5.9 7.4-1.8 14.8-8.8 22.2-10.6 0 2 0 3.9 0 5.9-7.4 1.8-14.8 8.8-22.2 10.6" fill="#428bc1"/><path d="m20.9 52c0-2 0-3.9 0-5.9 7.4-1.8 14.8-8.8 22.2-10.6 0 2 0 3.9 0 5.9-7.4 1.7-14.8 8.7-22.2 10.6" fill="#fff"/><path d="m20.9 57.6c0-2 0-3.9 0-5.9 7.4-1.8 14.8-8.8 22.2-10.6 0 2 0 3.9 0 5.9-7.4 1.8-14.8 8.8-22.2 10.6" fill="#ed4c5c"/><path d="m24.1 61.3c0-2-3.2-2-3.2-4 7.4-1.8 14.8-8.8 22.2-10.6 0 2 0 3.9 0 5.9-7.4 1.8-11.6 6.9-19 8.7" fill="#fff"/><path d="m29.8 58.9c4.4-2.6 8.9-5.6 13.3-6.6 0 2 0 3.9 0 5.9-7.4 1.7-16.3 2.4-13.3.7" fill="#428bc1"/><path d="m45 13.8h-26c0-15.7 26-15.7 26 0" fill="#b0b8b8"/><g fill="#c1c9c9"><path d="m47 17.6c0 1-.9 1.8-2 1.8h-26c-1.1 0-2-.8-2-1.8v-1.9c0-1 .9-1.8 2-1.8h26c1.1 0 2 .8 2 1.8v1.9"/><path d="m47 60.2c0 1-.9 1.8-2 1.8h-26c-1.1 0-2-.8-2-1.8v-1.9c0-1 .9-1.8 2-1.8h26c1.1 0 2 .8 2 1.8v1.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f489.svg b/riot/emojione/svg/1f489.svg new file mode 100644 index 0000000..0a2fe96 --- /dev/null +++ b/riot/emojione/svg/1f489.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="m59.7 25.5c0 9.8-7.1 9.8-7.1 0 0-5.8 3.5-10.5 3.5-10.5s3.6 4.7 3.6 10.5"/><path d="m54.5 43.2c0 7.5-7.1 7.5-7.1 0 0-4.4 3.5-8 3.5-8s3.6 3.6 3.6 8"/></g><path fill="#d0d0d0" d="M21.1 55.5 9.5 43.7 35.4 17.5 47 29.3z"/><path fill="#ed4c5c" d="m30.2 43.7l14.2-14.4-9-9.2-14.3 14.4z"/><path fill="#333" d="m27.6 46.3l2.6-2.6-9.1-9.2-2.6 2.6z"/><path fill="#bcc0c1" d="m43.8 26l2.6-2.6-5.2-5.3-2.6 2.6z"/><g fill="#42ade2"><path d="m14.7 62l1.2-1.3-11.6-11.8-1.3 1.3z"/><path d="m12.7 57.4l5.2-5.2-5.2-5.3-5.2 5.3z"/></g><path fill="#fff" d="m45.1 19.4l-.3-.3z"/><path fill="#bcc0c1" d="m43.1 20.1l.4.3.3.4.6.6 15.3-15.4.7-2 .3-1 .3-1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f48a.svg b/riot/emojione/svg/1f48a.svg new file mode 100644 index 0000000..ea0a9a8 --- /dev/null +++ b/riot/emojione/svg/1f48a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.2 57.8c-5.2-5.1-5.6-13.2-.9-17.9l17.1-17.1 18.8 18.8-17.1 17.1c-4.7 4.7-12.8 4.3-17.9-.9" fill="#ffce31"/><path d="m58.3 26.8c5.3-5.3 4.9-14.3-1-20.1-5.8-5.8-14.8-6.2-20.1-1l-12.8 12.8-3.7 3.7-.1.1c-.7.7-.7 1.9 0 2.6l18.4 18.4c.7.7 1.8.7 2.6 0l.1-.1c0 0 0 0 0 0l3.7-3.7c0 0 0 0 0 0l12.9-12.7" fill="#42ade2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f48b.svg b/riot/emojione/svg/1f48b.svg new file mode 100644 index 0000000..a2d76f2 --- /dev/null +++ b/riot/emojione/svg/1f48b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11.2 40.7c3.7-1.9 5.3-2.5-.7-4.3 1.1-.1 7.5 2.1 9.5-.3 1.7-1.2-6.5-2.7-7-3.9 1.6 1 8.6 4.1 9.9 1.3-.2-1-1.2-2.9-4.7-3.9 1 .4 3.1.2 3.9-.6-.3-.9-4.2-3.3-4.6-6.4 1.3 1.8 2.9 4.9 4.9 5.5 0 0 .6-1.5 2.8-2.1-2 0-4-1.2-4.3-2.2 1.4 2.3 6.4 1.1 8.5 3 0 0-.4-1.3 1-3 .1-.4-.8-1.1-.3-1.3.2.2.2.9.8.8 1.3-.5 2.5-2.2 1.7-3.8.6.3.7 1.7.8 2.5.8 0 2.2-.1 3.7 1.3.3-.2.2-.7.5-.9.3 1 .3 3.1 1.7 3 1.1 0 2.5-2.4 2.7-3.4-.1 2.3 1.2 2 1.6 2.1 1-.1 2.1-3.4 2.6-3.4-.2.4-.2 1.7-.1 2.4 1.1.2 3.9-1.1 4.5-1.7-.1.5-.3.7-.2 1.3 1 .2 6.7-2.5 8-5.3-1.5-.7-2.7-1.5-3.9-1.9-.7.6-.7 3.1-1.6 2.9.4-.6 1.4-2.7.6-3.4-3.8-2.6-1.9 2-2.3 2.4 0-.8-1.7-5.5-3.3-5.1-.3.4-.9-2.3-2 3.6.1-1 1.3-4.9-4.5-6.5-.3 1.5 1.7 6 1.2 7-.2-1.9-1.7-6.5-2.7-7.7-2.2-.9-6.1-2.5-7.8-1.9-2 .5 3 5 1.6 6.8.3-2.6-2.8-5.4-4.9-5.4-4.3 2.2-.8 6.3-1.5 8.3-.4-2.4-1.6-2.9-1.4-5.7-1.1.8-1.2 2.2-2.4 3.3-.6.2-.9-.1-1.5 0-1 1.1.9 3.4.5 4.3-.7-1.5-.7-3.7-2.4-3.9-1.4-.9-4.3-.2-6.5 1.3-2.5.7-4.9 7.5-4.8 8.4.2 1.2 2.3 1.4 2.4 2.6-.9-.5-1.2-1.5-2.6-1.4-.5 1.1-.8 1.9-.9 3.5 1.5 1 3.4 1.9 3.9 3.4-1.4-.5-2.2-2.6-4-2-2.3 6.5.5 5.3.8 6.2-.8.3-1.6-.5-1.9 0-1.8 3.3.3 3.3.5 3.9-.4 0-.9 0-1.3 0-.7.6-.8 2.7-.6 3.7 1.5-.7 4.7-1.4 3.9-3.2.8.2 1.7.2 2.2-.2" fill="#c94747"/><path d="m50.7 23.7c-1.7.4-6.9.8-8.2 2.3 1.5 2.4 7.4 2.8 8.9 5.2-2.3-1.4-7-3.4-10-4.2-3.6-.8-2.5 1.2-3.7 4.1.5 1.1 2.2 4.1 2.3 5.1-.9-1-1.7-5.6-3.2-3.1-2.4 3.9 1.3 4.7 2.9 8.3-1-1.4-3-4.1-4.3-5.7l-.9 1.5c-1.5-.4-2.2-.3-2.2-.3.9 2.2 3.7 6.7 4.5 8.1-2.7-2.7-3.9-5.3-5.3-8.2-1.2 0-2.3-.5-3.5-.7-.1 2.5 1 4.1 1 5.9-.9-2.7-1.5-8.5-6.8-6.6-1.5 3.1.7 9.1.8 11.7-1-2.9-.9-7-2.2-9.5-1.7-.1-4.4-.2-3.9.9-3.4.9-12.3 6.2-10.8 7.6 2.7 2.6 8.6 6 12.4 6.7.2-1 .6-2.7 1-3.3.4 1.6.9 3.6 2.5 4 .4-.5-.2-1.8-.1-2.6 1.4 1.7 5.2 3.7 7.9 2.4.3-1-.8-2.4-.2-3.1.4 2.7 6.6 2.9 7.1.5.2-1.1-.9-1.8-.9-2.5.9 1 1.3 2.3 2.8 2.2 3.3-.2 1.1-4.8.5-6.6.8 1.6 1.8 4 3 5.2.9-.2 1.3-1.5.8-2.6 2.9 2 3.2.4 2.1-3.6 0-.1-.1-.2-.1-.3 0 .1.1.2.1.3.3.8 1.4 2.7 2.1 3 2.6-1.1-1.1-5.5-1.6-6.3 1.1.9 2.4 3.8 4.1 4.2.3-.2.3-1.8.5-2.1-.6-3.9-4.5-6.4-6-8.9 2.4 2.2 4.8 6.8 7.9 8.4 1-1.3-.9-4.8-1.5-5.8.9.4 2.4 2.7 3.5 2.8 1.1-.6-.5-3.5-1.2-4.5.5.2 1.9 1.7 2.7 1.5.3-1.4-1.5-3.1-1.9-4.2.5.1 2.1 1.7 2.8 1.7.7-2.9 1.9-6.3 1.7-13.1-1 .1-6.1 3.9-7.4 4.2" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f48c.svg b/riot/emojione/svg/1f48c.svg new file mode 100644 index 0000000..ae73bea --- /dev/null +++ b/riot/emojione/svg/1f48c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c4ced6"><path d="m2.6 47l17.2-17.1-13.3-18.2c-.6.8-1.1 1.9-1.2 3.1l-3.3 29c-.1 1.2.1 2.3.6 3.2"/><path d="m60.2 8.6l-24.9 22.1 19.6 25.3c1.1-.9 1.8-2.2 2-3.8l4.4-39.5c.3-1.7-.2-3.1-1.1-4.1"/></g><path d="m35.3 30.7l24.9-22.1c-.8-.9-1.9-1.4-3.2-1.3l-48.5 3.2c-.7 0-1.5.5-2 1.2l13.2 18.2-17.1 17.1c.4.8 1 1.3 1.7 1.5l47.2 8.5c1.3.2 2.5-.1 3.5-.9l-19.7-25.4" fill="#dae4ea"/><path d="m39.3 22.8c-1.7-8.9-10.4-4.8-11.6-.6-.5-4.5-7.4-7.6-10.3.3-3.2 8.6 7.4 17.6 8.2 19.1 1-.9 15.6-8.9 13.7-18.8" fill="#f46767"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f48d.svg b/riot/emojione/svg/1f48d.svg new file mode 100644 index 0000000..51da176 --- /dev/null +++ b/riot/emojione/svg/1f48d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 61.9c-11.6 0-21-9.5-21-21.3s9.4-21.3 21-21.3 21 9.7 21 21.4-9.4 21.2-21 21.2m0-38.1c-9.2 0-16.7 7.6-16.7 16.9 0 9.3 7.5 16.9 16.7 16.9s16.7-7.6 16.7-16.9c0-9.4-7.5-16.9-16.7-16.9" fill="#d0d0d0"/><path d="m25.5 59c-1.9-.6-3.6-1.6-5.2-2.7-1.6-1.2-3-2.6-4.2-4.1-2.4-3.2-3.8-7.1-3.9-11.1-.1-4 1-8 3.3-11.3 1.1-1.6 2.5-3.1 4-4.4 1.5-1.2 3.2-2.3 5-3-3.4 1.8-6.4 4.5-8.4 7.8-2 3.2-3.1 7.1-2.9 10.9.1 3.8 1.4 7.5 3.6 10.7 2.1 3 5.2 5.5 8.7 7.2" fill="#fff"/><path d="m39.6 22.4c1.8.7 3.5 1.8 5 3 1.5 1.2 2.9 2.7 4 4.4 2.2 3.2 3.4 7.3 3.3 11.2-.1 4-1.5 7.9-3.9 11.1-1.2 1.6-2.6 3-4.2 4.1-1.6 1.1-3.4 2.1-5.2 2.7 3.5-1.6 6.6-4.1 8.8-7.3 2.2-3.1 3.5-6.9 3.6-10.7 0-3.7-1-7.5-3-10.7-2-3.3-5-6-8.4-7.8" fill="#a5a5a5"/><path fill="#d0d0d0" d="m25.5 15l6.5 6.6 6.5-6.6z"/><path fill="#a5a5a5" d="m34.2 15l-1.5 4.4 1.3.1 4.5-4.5z"/><path fill="#b6fff1" d="m28.8 1.9l-1.1 6.6h-8.6l3.2-6.6z"/><g fill="#6adbc6"><path d="m27.7 8.5l2.1 6.5h-4.3l-6.4-6.5z"/><path d="m28.8 1.9l-1.1 6.6h8.6l-1.1-6.6z"/></g><g fill="#42ade2"><path d="m35.2 1.9l1.1 6.6h8.6l-3.2-6.6z"/><path d="m27.7 8.5l2.1 6.5h4.4l2.1-6.5z"/></g><path fill="#428bc1" d="m36.3 8.5l-2.1 6.5h4.3l6.4-6.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f48e.svg b/riot/emojione/svg/1f48e.svg new file mode 100644 index 0000000..c7a3719 --- /dev/null +++ b/riot/emojione/svg/1f48e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#9450e0" d="M41 4 23 4 2 20.1 32 60 62 20.1z"/><g fill="#c28fef"><path d="m32 60l12.5-39.9h-25.7z"/><path d="M9.5 9.5 2 20.1 18.8 20.1 23 4z"/><path d="M54.5 9.5 41 4 44.5 20.1 62 20.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f48f.svg b/riot/emojione/svg/1f48f.svg new file mode 100644 index 0000000..cd4f66f --- /dev/null +++ b/riot/emojione/svg/1f48f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m46.5 7.1c-3.2-8.5-13.5-4.7-14.5-.5-1.3-4.5-11.4-7.9-14.5.4-3.5 9.3 13.3 17.6 14.5 19 1.2-1.1 18-9.8 14.5-18.9" fill="#ff5a79"/><path d="M17,22C7.3,22,2,28.3,2,36.7v24.5h30V36.7c0-12.4-8.1-12.2-8.1-12.2S23.3,22,17,22z" fill="#ffb300"/><path d="m32 60.8v1.2h30v-14.2c0 0-30 7.2-30 13" fill="#01579b"/><path d="m2 47.8v14.2h30v-1.2c0-5.8-30-13-30-13" fill="#c2185b"/><path d="m34.8 40h24.8l1.1-2.9c0-10.6-2.5-15-14.1-15.1-12.4-.1-13.8 10.3-11.8 18" fill="#ffb300"/><path d="m59.7 37.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-2.6-5.1-15.9-5.1-4.7 0-8.2-3.5-8.2 12 0 5.8 4.3 11.5 9.9 11.5 6 0 14.8-4.2 14.8-11.7 2.2-.2 2.9-1.7 2.9-3.5 0-2.8-1.3-3-2.3-2.8" fill="#ffdd67"/><g fill="#937237"><path d="m35.8 39.9c.9-2 2.2-3 3.6-3 1.4 0 2.7 1 3.6 3 .1.2-.4.6-.6.4-.9-.7-1.9-1-3-1-1.1 0-2.1.3-3 1-.2.1-.7-.2-.6-.4"/><path d="m46.6 39.9c.9-2 2.2-3 3.6-3s2.7 1 3.6 3c.1.2-.4.6-.6.4-.9-.7-1.9-1-3-1-1.1 0-2.1.3-3 1-.2.1-.7-.2-.6-.4"/><path d="m40.8 49.4c-.8-.8.9-1.4.9-2.8 0-1.4-1.6-2-.9-2.8.9-.9 2.9-.2 4.1-1.5 0 1-.9 2.2-2.5 2.2 0 0 1.1.4 1.1 2.2 0 1.7-1.1 2.2-1.1 2.2 1.6 0 2.5 1.1 2.5 2.2-1.2-1.4-3.2-.7-4.1-1.7"/></g><path d="m5.3 37.1c.1.6.2 1.2.4 1.5.3.6.9.9.9.9s11.8-4.1 17.8-9.9c0 0 5.9 1.9 5.9 14.2 0 5.2-3.7 11.3-9.6 11.3-6 0-14.8-4.2-14.8-11.7-2.2-.1-2.9-1.6-2.9-3.4 0-2.9 1.3-3.1 2.3-2.9" fill="#ffdd67"/><g fill="#937237"><path d="m29.2 39.9c-.9-2-2.2-3-3.6-3-1.4 0-2.7 1-3.6 3-.1.2.4.6.6.4.9-.7 1.9-1 3-1 1.1 0 2.1.3 3 1 .2.1.7-.2.6-.4"/><path d="m18.4 39.9c-.9-2-2.2-3-3.6-3s-2.7 1-3.6 3c-.1.2.4.6.6.4.9-.7 1.9-1 3-1 1.1 0 2.1.3 3 1 .2.1.7-.2.6-.4"/><path d="m24.2 49.4c.8-.8-.9-1.4-.9-2.8 0-1.4 1.6-2 .9-2.8-.9-.9-2.9-.2-4.1-1.5 0 1 .9 2.2 2.5 2.2 0 0-1.1.4-1.1 2.2 0 1.7 1.1 2.2 1.1 2.2-1.6 0-2.5 1.1-2.5 2.2 1.2-1.4 3.2-.7 4.1-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f490.svg b/riot/emojione/svg/1f490.svg new file mode 100644 index 0000000..8f15a96 --- /dev/null +++ b/riot/emojione/svg/1f490.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m43.2 26.8c-.9 6 5.9 16.5 5.9 16.5l1.5-.8c-4.3-13.6-2.1-29-2.1-29s-4.4 6.6-5.3 13.3" fill="#83bf4f"/><path fill="#75a843" d="m29 3.3l21.7 39.5-4.5 2.1z"/><path d="m39.8 11.8c2.5 5.1 1.2 8.4-1.7 9.9-2.9 1.5-6.4.5-8.9-4.6-2.6-5.1-.2-13.8-.2-13.8s8.3 3.4 10.8 8.5" fill="#cc9132"/><path d="m34.8 11.3c8.9.9 7.3 9.3 3.5 11.2-3.9 1.9-8.9-.5-11.4-5.4-2.4-4.9-.6-10.8-.6-10.8s2 4.4 8.5 5" fill="#f4bc58"/><path d="m31.8 12.8c-4.7 7.7 3 11.5 6.8 9.5s5-7.5 2.6-12.4c-2.4-4.9-8.2-7-8.2-7s2.2 4.3-1.2 9.9" fill="#ffd93b"/><path d="m29.7 38.9c4.6 3.9 17.1 3.7 17.1 3.7l.2-1.7c-13.7-3.5-25.5-13.6-25.5-13.6s3.1 7.2 8.2 11.6" fill="#83bf4f"/><path fill="#75a843" d="m2 35.4l44.6 1.8-.4 5z"/><path d="m14.9 30.6c5.6.5 7.7 3.4 7.4 6.7-.3 3.3-3 5.7-8.6 5.2-5.6-.5-11.7-7.1-11.7-7.1s7.3-5.3 12.9-4.8" fill="#871212"/><path d="m11.8 34.6c5.4-7.1 11.7-1.3 11.3 3-.4 4.3-5.2 7.4-10.6 6.8s-9.4-5.2-9.4-5.2 4.7.6 8.7-4.6" fill="#cc3636"/><path d="m11.5 38c4 8 11.2 3.6 11.7-.8.4-4.3-3.7-8.2-9.1-8.8s-10.3 3.4-10.3 3.4 4.8.3 7.7 6.2" fill="#e24b4b"/><g fill="#83bf4f"><path d="m28.9 40c5.2-3 17.5-.3 17.5-.3l-.2 1.7c-14.1.8-27.6 8.4-27.6 8.4s4.5-6.5 10.3-9.8"/><path d="m33.8 28.9c1.8 5.8 12.5 12.3 12.5 12.3l1-1.4c-9.7-10.3-14.3-25.1-14.3-25.1s-1.2 7.7.8 14.2"/></g><path fill="#75a843" d="m12.3 16.4l36.8 25.5-3.1 3.9z"/><path d="m25.7 19.3c4.5 3.5 4.7 7.1 2.7 9.7-2 2.6-5.5 3.2-10-.2-4.5-3.5-6.1-12.3-6.1-12.3s8.9-.7 13.4 2.8" fill="#aa1f65"/><path d="m21 21c8.4-3.1 10.6 5.2 8 8.6s-8.3 3.5-12.6.1c-4.3-3.4-5.2-9.4-5.2-9.4s3.6 3 9.8.7" fill="#d33777"/><path d="m18.9 23.7c-.9 8.9 7.6 9 10.3 5.6 2.6-3.4 1.3-8.9-3.1-12.3-4.3-3.4-10.4-2.7-10.4-2.7s3.9 2.9 3.2 9.4" fill="#e84d88"/><path fill="#83bf4f" d="m58.4 58.2l-1.9 1.9-2.5-2.5 2-1.9z"/><path fill="#75a843" d="m59.8 56.8l-2 2-2.4-2.5 1.9-2z"/><path fill="#83bf4f" d="m61.1 55.5l-1.9 1.9-2.5-2.5 1.9-1.9z"/><path d="m22.8 47.8c0 0 17.1-2.9 25.3 5.3 1.8 1.8 2.9 7.9 2.9 7.9l11-11.1c0 0-6.1-1.1-7.9-2.9-8.2-8.2-5.3-25.4-5.3-25.4l-26 26.2" fill="#42ade2"/><path fill="#ff506e" d="m58 46.9l-10 10.1-3.7-3.8 10-10z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f491.svg b/riot/emojione/svg/1f491.svg new file mode 100644 index 0000000..3808550 --- /dev/null +++ b/riot/emojione/svg/1f491.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M17,22C7.3,22,2,28.3,2,36.7v18.5h30V36.7c0-12.4-8.1-12.2-8.1-12.2S23.3,22,17,22z" fill="#ffb300"/><path d="m32 54.8v7.2h30v-7.2c0-5.8-30-5.8-30 0" fill="#01579b"/><path d="m2 54.8v7.2h30v-7.2c0-5.8-30-5.8-30 0" fill="#c2185b"/><path d="m6.4 43.6c0 0-2.2-.6-2.2-3.9 0-2.6 1.7-3.1 1.7-3.1 6 0 15.8-7.8 15.8-7.8s3.7 6.9 7.3 7.8c0 0 1.7.3 1.7 3.1 0 3.3-2.3 3.9-2.3 3.9 0 5-6.8 10-11 10-4 0-11-5-11-10" fill="#ffdd67"/><g fill="#937237"><circle cx="12.1" cy="40.3" r="2.2"/><circle cx="22.9" cy="40.3" r="2.2"/><path d="m21.1 47.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m31.9 37.3l1.5 2.8h26.2l1.1-2.9c0-10.6-2.5-15-14.1-15.1-11.8-.2-14.7 4.5-14.7 15.2" fill="#ffb300"/><path d="m59.7 37.1c-.1.6-.2 1.2-.4 1.5-.3.6-.9.9-.9.9s.2-1.2.1-2.8c-.7-9.7-1.2-5.1-11.9-5.1-10.7 0-11.3-4.7-11.9 5-.1 1.7.1 2.8.1 2.8s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.5-1-.3-2.3 0-2.3 2.9 0 1.8.7 3.3 2.9 3.5.8 6.1 8.9 10.1 12.6 10.1 3.6 0 11.8-4.1 12.6-10.1 2.2-.2 2.9-1.7 2.9-3.5-.2-2.8-1.5-3-2.5-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="41" cy="40.3" r="2.2"/><circle cx="52" cy="40.3" r="2.2"/><path d="m50.1 47.2c-2.3 1.8-4.9 1.8-7.2 0-.3-.2-.5.2-.3.5.7 1.3 2.1 2.4 3.9 2.4s3.2-1.1 3.9-2.4c.2-.4 0-.8-.3-.5"/></g><path d="m46.5 7.1c-3.2-8.5-13.5-4.7-14.5-.5-1.3-4.5-11.4-7.9-14.5.4-3.5 9.3 13.3 17.6 14.5 19 1.2-1.1 18-9.8 14.5-18.9" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f492.svg b/riot/emojione/svg/1f492.svg new file mode 100644 index 0000000..e7008d4 --- /dev/null +++ b/riot/emojione/svg/1f492.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63 62h-62c-.6 0-1 .5-1 1 0 .5.4 1 1 1h62c.5 0 1-.5 1-1 0-.5-.5-1-1-1" fill="#e84d88"/><path fill="#fc97b2" d="m60 62h-56v-18l28-12 28 12z"/><g fill="#ed4c5c"><path d="m21.4 34.1l-20.2 8.3c-1 .4-1.4 1.5-1 2.5.4 1 1.5 1.4 2.5 1l20.2-8.3c1-.4 1.4-1.5 1-2.5-.4-.9-1.6-1.4-2.5-1"/><path d="m42.6 34.1l20.2 8.3c1 .4 1.4 1.5 1 2.5-.4 1-1.5 1.4-2.5 1l-20.2-8.3c-1-.4-1.4-1.5-1-2.5.4-.9 1.6-1.4 2.5-1"/></g><path fill="#ffc7ce" d="m44 62h-24v-36l12-5 12 5z"/><path fill="#ffce31" d="m38.7 5h-5v-5h-3.4v5h-5v3.3h5v11.7h3.4v-11.7h5z"/><path fill="#ffc7ce" d="m20 63h24v1h-24z"/><path fill="#fc97b2" d="m20 62h24v1h-24z"/><path d="m47.8 25.4l-15.8-6.4-15.8 6.4c-1 .4-1.4 1.5-1 2.4.4.9 1.5 1.4 2.5 1l14.3-5.8 14.4 5.8c1 .4 2.1-.1 2.5-1 .4-.9-.1-2-1.1-2.4" fill="#ed4c5c"/><g fill="#fff"><path d="m30.7 29.8c-.1-.6-.6-.9-1.2-.8 0 0-.1 0-.7.3-.6.2-.7.3-.7.3-.5.3-.6.9-.3 1.4l3.1 4.2c.3.5.6.4.5-.2l-.7-5.2"/><path d="m26 32.9c-.5-.3-1.1-.2-1.3.3l-.6 1.4c-.2.5.2 1.1.7 1.2l5.2.8c.6.1.7-.1.2-.5l-4.2-3.2"/><path d="m24.8 38.3c-.6.1-.9.6-.8 1.2 0 0 0 .1.3.7.2.6.3.7.3.7.3.5.9.6 1.4.3l4.2-3.1c.5-.3.4-.6-.2-.5l-5.2.7"/><path d="m27.9 43c-.3.5-.2 1.1.3 1.3l1.4.6c.6.2 1.1-.2 1.2-.7l.8-5.2c.1-.6-.1-.7-.5-.2l-3.2 4.2"/><path d="m33.3 44.2c.1.6.6.9 1.2.8 0 0 .1 0 .7-.3.6-.2.7-.3.7-.3.5-.3.6-.9.3-1.4l-3.2-4.2c-.3-.5-.6-.4-.5.2l.8 5.2"/><path d="m38 41.1c.5.3 1.1.2 1.3-.3l.6-1.4c.2-.6-.2-1.1-.7-1.2l-5.2-.6c-.6-.1-.7.1-.2.5l4.2 3"/><path d="m39.2 35.7c.6-.1.9-.6.8-1.2 0 0 0-.1-.3-.7-.2-.6-.3-.7-.3-.7-.3-.5-.9-.6-1.4-.3l-4.2 3.2c-.5.3-.4.6.2.5l5.2-.8"/><path d="m36.1 31c.3-.5.2-1.1-.3-1.3l-1.4-.6c-.6-.2-1.1.2-1.2.7l-.6 5.2c-.1.6.1.7.5.2l3-4.2"/></g><path d="m32 47c-3.3 0-6 2.7-6 6v9h12v-9c0-3.3-2.7-6-6-6" fill="#fc97b2"/><path d="m28 56h8v-3c0-2.2-1.8-4-4-4-2.2 0-4 1.8-4 4v3" fill="#d6eef0"/><g fill="#e84d88"><path d="m11.2 49.5c-.1-.4-.4-.6-.7-.5 0 0-.1 0-.4.2-.4.1-.4.2-.4.2-.3.2-.4.6-.2.9l1.9 2.6c.2.3.3.2.3-.1l-.5-3.3"/><path d="m8.2 51.4c-.3-.2-.7-.1-.8.2l-.4.9c-.1.3.1.7.5.7l3.2.5c.4.1.4-.1.1-.3l-2.6-2"/><path d="m7.5 54.8c-.4.1-.6.4-.5.7 0 0 0 .1.2.4.1.4.2.4.2.4.2.3.6.4.9.2l2.6-1.9c.3-.2.2-.3-.1-.3l-3.3.5"/><path d="m9.4 57.8c-.2.3-.1.7.2.8l.9.4c.3.1.7-.1.7-.5l.5-3.2c.1-.4-.1-.4-.3-.1l-2 2.6"/><path d="m12.8 58.5c.1.4.4.6.7.5 0 0 .1 0 .4-.2.4-.1.4-.2.4-.2.3-.2.4-.6.2-.9l-1.9-2.6c-.2-.3-.3-.2-.3.1l.5 3.3"/><path d="m15.8 56.6c.3.2.7.1.8-.2l.4-.9c.1-.3-.1-.7-.5-.7l-3.2-.5c-.4-.1-.4.1-.1.3l2.6 2"/><path d="m16.5 53.2c.4-.1.6-.4.5-.7 0 0 0-.1-.2-.4-.1-.4-.2-.4-.2-.4-.2-.3-.6-.4-.9-.2l-2.6 1.9c-.3.2-.2.3.1.3l3.3-.5"/><path d="m14.6 50.2c.2-.3.1-.7-.2-.8l-.9-.4c-.3-.1-.7.1-.7.5l-.5 3.2c-.1.4.1.4.3.1l2-2.6"/><path d="m51.2 49.5c-.1-.4-.4-.6-.7-.5 0 0-.1 0-.4.2-.4.1-.4.2-.4.2-.3.2-.4.6-.2.9l1.9 2.6c.2.3.3.2.3-.1l-.5-3.3"/><path d="m48.2 51.4c-.3-.2-.7-.1-.8.2l-.4.9c-.1.3.1.7.5.7l3.2.5c.4.1.4-.1.1-.3l-2.6-2"/><path d="m47.5 54.8c-.4.1-.6.4-.5.7 0 0 0 .1.2.4.1.4.2.4.2.4.2.3.6.4.9.2l2.6-1.9c.3-.2.2-.3-.1-.3l-3.3.5"/><path d="m49.4 57.8c-.2.3-.1.7.2.8l.9.4c.3.1.7-.1.7-.5l.5-3.2c.1-.4-.1-.4-.3-.1l-2 2.6"/><path d="m52.8 58.5c.1.4.4.6.7.5 0 0 .1 0 .4-.2.4-.1.4-.2.4-.2.3-.2.4-.6.2-.9l-1.9-2.6c-.2-.3-.3-.2-.3.1l.5 3.3"/><path d="m55.8 56.6c.3.2.7.1.8-.2l.4-.9c.1-.3-.1-.7-.5-.7l-3.2-.5c-.4-.1-.4.1-.1.3l2.6 2"/><path d="m56.5 53.2c.4-.1.6-.4.5-.7 0 0 0-.1-.2-.4-.1-.4-.2-.4-.2-.4-.2-.3-.6-.4-.9-.2l-2.6 1.9c-.3.2-.2.3.1.3l3.3-.5"/><path d="m54.6 50.2c.2-.3.1-.7-.2-.8l-.9-.4c-.3-.1-.7.1-.7.5l-.5 3.2c-.1.4.1.4.3.1l2-2.6"/></g><g fill="#fc97b2"><path d="m31 48h2v14h-2z"/><path d="m26 55h12v7h-12z"/></g><g fill="#e84d88"><path d="m28 57.3h3v3h-3z"/><path d="m33 57.3h3v3h-3z"/></g><g fill="#fc97b2"><path d="m59.3 11c-1.9 0-3.5 1.1-4.3 2.6-.8-1.5-2.4-2.6-4.3-2.6-2.6 0-4.7 2-4.7 4.5 0 4.5 9.4 13.5 9.4 13.5s8.6-9 8.6-13.5c0-2.5-2.1-4.5-4.7-4.5"/><path d="M13.3,11c-1.9,0-3.5,1.1-4.3,2.6C8.2,12.1,6.6,11,4.7,11C2.1,11,0,13,0,15.5C0,20,9.4,29,9.4,29S18,20,18,15.5 + C18,13,15.9,11,13.3,11z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f493.svg b/riot/emojione/svg/1f493.svg new file mode 100644 index 0000000..4138862 --- /dev/null +++ b/riot/emojione/svg/1f493.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m57.2 22.1c-5.5-14.8-23.5-8.2-25.2-.8-2.3-7.9-19.8-13.8-25.2.8-6 16.2 23.1 30.7 25.2 33.1 2.1-1.9 31.2-17.2 25.2-33.1"/><path d="m60 18.5c-.6-1.9-1.6-3.6-3-5-1.3-1.4-3-2.5-4.7-3.2-.9-.4-1.8-.6-2.7-.8-.5-.1-.9-.1-1.4-.2-.5 0-.9 0-1.4 0l1.2.6c.4.2.8.4 1.2.6.8.4 1.6.8 2.3 1.3 1.5.9 2.8 2 4 3.2 1.2 1.2 2.1 2.6 3 4.2.4.8.8 1.6 1.1 2.4.2.4.3.9.5 1.3l.5 1.3c.1-.5.1-1 .1-1.4 0-.5 0-1-.1-1.4-.1-1-.3-2-.6-2.9"/><path d="m62 15.8c-.1-.7-.2-1.4-.4-2.1-.4-1.4-1.2-2.7-2.2-3.8-1-1.1-2.2-1.9-3.5-2.3-.7-.2-1.3-.4-2-.5-.3 0-.7-.1-1-.1-.3 0-.7 0-1 .1.3.2.6.3.9.5.2.1.5.3.8.4.6.3 1.1.6 1.6 1 1 .7 2 1.5 2.8 2.3.8.9 1.5 1.9 2.2 3 .3.5.6 1.1.9 1.7.1.3.3.6.4.9.1.3.3.6.4 1 .1-.4.1-.7.1-1.1 0-.3 0-.7 0-1"/><path d="m4.3 21.6c.3-.8.7-1.7 1.1-2.4.8-1.6 1.8-3 3-4.2 1.2-1.2 2.5-2.3 4-3.2.7-.5 1.5-.9 2.3-1.3.4-.2.8-.4 1.2-.6l1.2-.6c-.5 0-.9 0-1.4 0-.5 0-.9.1-1.4.2-.9.2-1.8.4-2.7.8-1.7.7-3.3 1.8-4.6 3.2-1.3 1.4-2.4 3.1-3 5-.3.9-.5 1.9-.6 2.8-.1.5-.1 1-.1 1.4 0 .5 0 1 .1 1.4l.5-1.3c.1-.4.2-.8.4-1.2"/><path d="m6 11.4c.8-.9 1.8-1.7 2.8-2.4.5-.3 1.1-.7 1.6-1 .3-.2.6-.3.9-.5.3-.2.6-.3.9-.5-.3 0-.7-.1-1-.1-.3 0-.7 0-1 .1-.7.1-1.3.3-2 .5-1.4.6-2.6 1.4-3.6 2.4-1 1.1-1.8 2.4-2.2 3.8-.2.7-.3 1.4-.4 2.1 0 .4 0 .7 0 1.1 0 .4 0 .7.1 1.1.1-.3.3-.6.4-1 .2-.4.3-.7.5-1 .3-.6.6-1.2.9-1.7.6-1.1 1.3-2.1 2.1-2.9"/><path d="m7.8 40.5l-.1.2c.5 1.5 1.3 2.7 2.1 3.9.8 1.2 1.8 2.2 2.8 3.1 1 .9 2.1 1.8 3.3 2.6 1.2.8 2.5 1.4 4 1.8l.1-.2c-2-2-4-3.9-6-5.8-2.1-1.8-4.1-3.8-6.2-5.6"/><path d="m3.6 43.5l-.1.2c.7 1.7 1.6 3.1 2.6 4.4 1 1.3 2.1 2.5 3.3 3.6 1.2 1.1 2.4 2.1 3.8 3.1 1.4.9 2.8 1.8 4.5 2.3l.1-.2c-2.3-2.3-4.7-4.5-7-6.8-2.4-2.2-4.8-4.5-7.2-6.6"/><path d="m51.5 47.7c1-1 2-2 2.8-3.1.8-1.1 1.6-2.4 2.1-3.9l-.1-.2c-2.1 1.8-4.1 3.8-6.2 5.6-2 1.9-4 3.8-6 5.8l.1.2c1.5-.4 2.8-1.1 4-1.8 1.2-.8 2.2-1.7 3.3-2.6"/><path d="m53.2 50.1c-2.3 2.3-4.7 4.5-7 6.8l.1.2c1.7-.6 3.1-1.4 4.5-2.3 1.4-.9 2.6-1.9 3.8-3.1 1.2-1.1 2.3-2.3 3.3-3.6 1-1.3 1.9-2.7 2.6-4.4l-.1-.2c-2.4 2.1-4.8 4.4-7.2 6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f494.svg b/riot/emojione/svg/1f494.svg new file mode 100644 index 0000000..a8b9e1b --- /dev/null +++ b/riot/emojione/svg/1f494.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 19.1c-4.5-12.1-16.2-11.6-23.2-7.4l-5.3 11.3 10-.9-10.3 13.2 8.4-2.2-5.3 20.9-1.6-14.1-11.9 2.5 9.1-14.4-7.8-1.1 5.4-12.4c-6.4-6.4-23-7.6-26.2 7.8-3.9 18.3 27.3 29.6 32.9 32.7v.1c0 0 0 0 .1 0 0 0 .1 0 .1 0v-.1c8.3-5.5 31.3-20.5 25.6-35.9" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f495.svg b/riot/emojione/svg/1f495.svg new file mode 100644 index 0000000..6f51fbd --- /dev/null +++ b/riot/emojione/svg/1f495.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m28.3 32.2c1.3-7.9-11.5-20.7-22.3-10.3-12 11.7 7.2 37.1 8 40.1 2.6-.8 34.4-1.6 36-18.2 1.3-15.4-17.2-17.4-21.7-11.6"/><path d="m59.2 3.6c-6.8-5.1-13.1 3.1-11.7 7-3.3-2.9-13-.5-11.3 7.7 1.9 9.1 19.3 7.3 20.9 7.7.4-1.5 9.3-16.9 2.1-22.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f496.svg b/riot/emojione/svg/1f496.svg new file mode 100644 index 0000000..27457d5 --- /dev/null +++ b/riot/emojione/svg/1f496.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8" fill="#ff5a79"/><g fill="#fff"><path d="m53.8 13.3l-2.6-5.3-2.6 5.3-5.3 2.6 5.3 2.6 2.6 5.3 2.6-5.3 5.3-2.6z"/><path d="m16.3 26.8l-3.6-7.2-3.6 7.2-7.1 3.5 7.1 3.6 3.6 7.1 3.6-7.1 7.1-3.6z"/><path d="m48.7 42.4l-2.8-5.7-2.9 5.7-5.8 2.9 5.8 2.9 2.9 5.7 2.8-5.7 5.8-2.9z"/><path transform="matrix(.7071-.7071.7071.7071-8.1959 21.5202)" d="m19.8 18.5h4.2v4.2h-4.2z"/><path transform="matrix(.7071-.7071.7071.7071-21.8069 30.4721)" d="m24.1 39.8h3.5v3.5h-3.5z"/><path transform="matrix(.7071-.7071.7071.7071-6.9308 37.8984)" d="m40.2 25.2h4.2v4.2h-4.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f497.svg b/riot/emojione/svg/1f497.svg new file mode 100644 index 0000000..a3da17e --- /dev/null +++ b/riot/emojione/svg/1f497.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8m-29.1 32.6c-2-2.2-30-15.2-24.2-29.8 5.1-13.1 22-7.8 24.2-.7 1.6-6.6 18.9-12.6 24.2.7 5.8 14.3-22.2 28.1-24.2 29.8"/><path d="m49.2 24.8c-3.8-10-16.1-5.5-17.2-.5-1.6-5.3-13.6-9.3-17.2.5-4.1 11 15.8 20.8 17.2 22.4 1.4-1.3 21.3-11.6 17.2-22.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f498.svg b/riot/emojione/svg/1f498.svg new file mode 100644 index 0000000..66b99f3 --- /dev/null +++ b/riot/emojione/svg/1f498.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffce31" d="m12.7 54.6l-2-2.1 19.1-19 2.1 2z"/><path d="m4.2 61c0 0-.7-8.3 6.4-15.3l2.1 6.9-8.5 8.4" fill="#42ade2"/><path d="m4.2 61c0 0 8.3.7 15.4-6.4l-6.9-2.1-8.5 8.5" fill="#467591"/><path d="m54.7 24.3c-5.7-15-24.2-8.3-26-.8-2.4-8-20.4-14-26 .8-6.1 16.4 23.8 31.2 26 33.6 2.2-1.9 32.2-17.4 26-33.6" fill="#ff5a79"/><path fill="#ffce31" d="m37.1 30.1l-2.4-2.3 16.8-16.7 2.3 2.4z"/><g fill="#467591"><path d="m40.9 21.7c0 0-.4-9.9 8.4-18.7l2.2 8.1-10.6 10.6"/><path d="m43.2 24c0 0 9.9.4 18.8-8.4l-8.2-2.2-10.6 10.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f499.svg b/riot/emojione/svg/1f499.svg new file mode 100644 index 0000000..6db134a --- /dev/null +++ b/riot/emojione/svg/1f499.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8" fill="#66caf2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f49a.svg b/riot/emojione/svg/1f49a.svg new file mode 100644 index 0000000..2d718b5 --- /dev/null +++ b/riot/emojione/svg/1f49a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8" fill="#85e845"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f49b.svg b/riot/emojione/svg/1f49b.svg new file mode 100644 index 0000000..c642502 --- /dev/null +++ b/riot/emojione/svg/1f49b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8" fill="#f5ce3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f49c.svg b/riot/emojione/svg/1f49c.svg new file mode 100644 index 0000000..7adf079 --- /dev/null +++ b/riot/emojione/svg/1f49c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8" fill="#c28fef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f49d.svg b/riot/emojione/svg/1f49d.svg new file mode 100644 index 0000000..2e8a496 --- /dev/null +++ b/riot/emojione/svg/1f49d.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m61.1 18.4c.8 2.2 1.1 4.4.9 6.6l-16.6-16.9c6.1-.7 12.6 1.9 15.7 10.3"/><path d="M2.9,18.3C9.3,1.1,30.1,8.8,32,17.4c0.9-3.3,4.1-6.2,8.1-8l20.4,20.9C54.8,44,33.9,54.8,32,57 + C29.6,54.8-4,36.9,2.9,18.3z"/></g><g fill="#dae4ea"><path d="m45.4 8.1l16.5 16.8c-.2 1.9-.7 3.7-1.4 5.5l-20.4-20.9c1.7-.7 3.5-1.2 5.3-1.4"/><path d="m54.2 24.8c0 0-6.4 6-5.1 15.1l-4.9-4.9-4.9 5c0 0 1-10.9 10.1-20.1l4.8 4.9"/></g><path d="m49.1 20.1c-1.8 1.8-1.6 5.6.4 8.3l1.6 2.2c2 2.7 4.4 3.5 5.3 1.8.9-1.8 3-4 4.8-4.9 1.7-.9.9-3.3-1.7-5.4l-2.1-1.6c-2.9-2-6.5-2.2-8.3-.4" fill="#fff"/><path d="m49.4 19.8c-.5.7.5 1.6 1.9 2.4l.8.4c1.5.8 1.9.3.8-1l-.6-.8c-.8-1.4-2.3-1.7-2.9-1" fill="#dae4ea"/><path d="m55.5 32c0 .4-.4.4-.6.4-.5.1-1.3-.2-2.3-1.3-.3-.3-.6-.7-.9-1l-1.6-2.2c-1.1-1.5-1.6-3.5-1.4-5 .1 0 6.8 4.7 6.8 9.1" fill="#c4ced6"/><path d="m44.6 15c0 0-5.8 6.6-14.8 5.3l4.8 4.9-4.9 5c0 0 10.7-1 19.7-10.3l-4.8-4.9" fill="#dae4ea"/><path d="m49.1 20.2c-1.8 1.8-5.5 1.7-8.1-.4l-2.1-1.6c-2.7-2-3.5-4.5-1.7-5.4 1.7-.9 3.9-3.1 4.8-4.9.9-1.8 3.3-1 5.3 1.8l1.6 2.2c1.9 2.7 2 6.5.2 8.3" fill="#fff"/><path d="m49.5 19.8c-.6.5-1.6-.5-2.3-2l-.5-.8c-.8-1.5-.3-1.9 1-.9l.8.6c1.3 1.1 1.7 2.6 1 3.1" fill="#dae4ea"/><path d="m37.5 13.6c-.4 0-.3.4-.4.6-.1.5.2 1.3 1.3 2.4.3.3.6.6 1 .9l2.1 1.6c1.5 1.1 3.4 1.6 4.9 1.4.1 0-4.6-6.9-8.9-6.9" fill="#c4ced6"/><path d="m47.3 18.3c-1 1.4-1.1 3.2-.3 4.1.9.9 2.6.7 4-.3l.4-.3c1.3-1 1.4-2.9.3-4.1l-.1-.1c-1.2-1.2-3-1.1-4 .3l-.3.4" fill="#fff"/><path d="m48.7 20.6c.8.8 2.3.8 3.6 0-.2.4-.5.8-.9 1.1l-.4.4c-1.3 1-3.1 1.2-4 .3-.9-.9-.7-2.7.3-4.1l.3-.5c.3-.4.7-.7 1.1-.9-.8 1.3-.8 2.9 0 3.7" fill="#dae4ea"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f49e.svg b/riot/emojione/svg/1f49e.svg new file mode 100644 index 0000000..f90aae9 --- /dev/null +++ b/riot/emojione/svg/1f49e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff7190"><path d="m27.9 53.8c-2.5.3-5.1.1-7.5-.6-2.4-.7-4.6-1.8-6.6-3.2-1.9-1.5-3.5-3.3-4.7-5.3-1.2-2-1.9-4.3-2.1-6.5.6 2.2 1.7 4.2 3.1 5.8 1.4 1.7 3.1 3 5 3.9 1.9.9 3.9 1.5 5.9 1.7 2 .2 4-.1 5.9-.7 1.3-.4 2.7.3 3.1 1.7.4 1.3-.3 2.7-1.7 3.1-.1 0-.3.1-.4.1"/><path d="m56.4 31.6c.8 2.4 1.2 5 1 7.5-.2 2.5-.9 4.9-2 7-2.2 4.3-6.1 7.5-10.4 8.9 4-2.2 6.9-5.8 8.1-9.8.6-2 .8-4.1.6-6.1-.2-2-.8-3.8-1.8-5.6-.7-1.2-.3-2.7.9-3.4s2.7-.3 3.4.9c.1.1.1.3.2.4v.2"/><path d="m33.3 8.2c2.4-.6 5-.8 7.5-.5 2.5.3 4.9 1.1 7 2.2 2.1 1.2 4 2.7 5.4 4.6 1.4 1.8 2.5 4 3 6.1-.9-2-2.3-3.9-3.9-5.3-1.6-1.4-3.5-2.5-5.5-3.1-2-.7-4.1-.9-6.1-.8-2 .1-3.9.7-5.7 1.5-1.3.6-2.8.1-3.4-1.2-.6-1.2-.1-2.7 1.2-3.3.1-.1.3-.1.4-.2h.1"/><path d="m15 30.5c-1.1-2.3-1.7-4.9-1.7-7.4-.1-2.5.4-5 1.3-7.2 1.8-4.5 5.3-8 9.4-9.9-3.7 2.6-6.2 6.5-7 10.6-.4 2.1-.4 4.1 0 6.1.4 2 1.2 3.7 2.4 5.4.8 1.1.6 2.7-.6 3.5s-2.7.6-3.5-.6c-.1-.1-.2-.3-.2-.4l-.1-.1"/></g><g fill="#ff5a79"><path d="m31.4 41.9c-1.8-4.6-13-7.2-15.6 1.7-2.9 9.9 15.9 17.1 17.3 18.4 1.2-1.2 18.5-11.7 14-20.9-4.1-8.5-15-3.7-15.7.8"/><path d="m61.2 24.9c-3.3-4.7-9.3-.8-9.2 1.9-1.5-2.5-8.4-3-9.1 2.5-.8 6.1 11.1 8.6 12.1 9.2.6-.8 9.8-8.6 6.2-13.6"/><path d="m36.8 6.4c.4-2.6-4.2-6.5-7.7-3-4 3.9 2.9 11.8 3.2 12.8.9-.3 11.7-.9 12-6.3.3-5-6-5.4-7.5-3.5"/><path d="m25.5 25.9c-.4-7-9.3-6.6-11-3.7.1-3.6-6.9-8.4-11.2-3-4.9 6 6 16 6.6 17.3 1.1-.6 16-3.1 15.6-10.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f49f.svg b/riot/emojione/svg/1f49f.svg new file mode 100644 index 0000000..2c1c7d2 --- /dev/null +++ b/riot/emojione/svg/1f49f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-16.6 0-30 13.4-30 30s13.4 30 30 30 30-13.4 30-30-13.4-30-30-30m0 48c-1.4-1.8-20.5-12.9-16.6-25.2 3.5-11.1 15.1-6.6 16.6-.6 1.1-5.6 12.9-10.7 16.6.6 3.9 12.1-15.2 23.8-16.6 25.2" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a0.svg b/riot/emojione/svg/1f4a0.svg new file mode 100644 index 0000000..77363d1 --- /dev/null +++ b/riot/emojione/svg/1f4a0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.2 27.7c2.4 2.4 2.4 6.3 0 8.6l-23.9 23.9c-2.4 2.4-6.3 2.4-8.6 0l-23.9-23.9c-2.4-2.4-2.4-6.3 0-8.6l23.9-23.9c2.4-2.4 6.3-2.4 8.6 0l23.9 23.9" fill="#9970c4"/><path d="m57.4 28.1c2.1 2.1 2.1 5.6 0 7.8l-21.5 21.5c-2.1 2.1-5.6 2.1-7.8 0l-21.5-21.5c-2.1-2.1-2.1-5.6 0-7.8l21.5-21.5c2.1-2.1 5.6-2.1 7.8 0l21.5 21.5" fill="#ace1ef"/><g fill="#42ade2"><path d="m51 23h-2.5l-7.5-7.5v-2.5l4-4h2.5l7.5 7.5v2.5z"/><path d="m19 55h-2.5l-7.5-7.5v-2.5l4-4h2.5l7.5 7.5v2.5z"/><path d="m51 41h-2.5l-7.5 7.5v2.5l4 4h2.5l7.5-7.5v-2.5z"/><path d="m19 9h-2.5l-7.5 7.5v2.5l4 4h2.5l7.5-7.5v-2.5z"/><path d="M34.3 32 43 21 32 29.7 21 21 29.7 32 21 43 32 34.3 43 43z"/></g><path d="m39.5 30.9c.6.6.6 1.7 0 2.3l-6.4 6.4c-.6.6-1.7.6-2.3 0l-6.4-6.4c-.6-.6-.6-1.7 0-2.3l6.4-6.4c.6-.6 1.7-.6 2.3 0l6.4 6.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a1.svg b/riot/emojione/svg/1f4a1.svg new file mode 100644 index 0000000..7e44d41 --- /dev/null +++ b/riot/emojione/svg/1f4a1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28 58c0 2.2 1.8 4 4 4s4-1.8 4-4h-8" fill="#616466"/><path d="m24.9 48h14.1c.8-4.3 3.5-8.5 6.3-12.9 3.3-5.1 6.7-10.4 6.7-15.5 0-9.7-9-17.6-20-17.6s-20 7.9-20 17.6c0 5.1 3.4 10.4 6.6 15.5 2.8 4.4 5.5 8.6 6.3 12.9" fill="#ffce31"/><path d="m26.4 33.6c.1.6.3 1.2.4 1.8.3 1.1.5 2.1.8 3.2.9 3.8 1.7 7 2.4 9.5h.6c-.5-2.5-1.2-5.8-2.1-9.6-.2-1-.5-2.1-.7-3.2-.1-.5-.2-1.1-.4-1.6.8-.2 2.7-.8 4.6-2.9 1.9 2.1 3.8 2.7 4.6 2.9-.1.6-.2 1.1-.4 1.6-.2 1.1-.5 2.2-.7 3.2-.9 3.8-1.6 7.1-2.1 9.6h.6c.6-2.5 1.5-5.7 2.4-9.5.2-1 .5-2.1.8-3.2.1-.6.3-1.2.4-1.8.8-.1 1.5-.3 2-.8.6-.6.9-1.3.7-2.1-.1-.4-.3-.9-.9-1-.3-.1-.5-.1-.8 0-.3.1-.5.3-.6.4-.5.6-.7 1.2-.9 1.8-.1.3-.2.6-.3.9 0 0-.8.1-2.7-1.2-1-.7-1.3-1.2-1.6-1.5.3-.4.6-.7.9-1.2.1-.3.2-.5.3-.9 0-.3 0-.7-.2-1-.2-.3-.4-.6-.9-.8-.2-.1-.4-.1-.6-.1s-.4 0-.6.1c-.4.2-.7.5-.9.8-.2.3-.2.7-.2 1 0 .3.1.6.3.9.2.5.5.9.9 1.2-.3.3-.6.8-1.6 1.5-1.8 1.2-2.7 1.2-2.7 1.2-.1-.3-.2-.6-.3-.9-.2-.6-.4-1.2-.9-1.8-.1-.1-.3-.3-.6-.4-.3-.1-.6-.1-.8 0-.6.2-.8.7-.9 1-.1.8.2 1.5.7 2.1.6.5 1.3.7 2 .8m11.6-1.5c.2-.5.4-1.1.8-1.4.1-.1.2-.1.2-.1 0 0 .1 0 .2 0 .1 0 .2.1.3.4.1.4-.1 1-.5 1.3-.3.2-.7.4-1.1.5 0-.3 0-.5.1-.7m-6.6-4.8c.2-.2.4-.4.6-.4.2 0 .4.1.6.4.2.3.1.7-.1 1.1-.1.3-.3.6-.5.8-.2-.3-.4-.5-.5-.8-.2-.3-.3-.7-.1-1.1m-6.8 3.5c0-.2.1-.3.3-.4.1 0 .2 0 .2 0 0 0 .1.1.2.1.3.3.6.9.8 1.4.1.2.1.4.2.6-.4-.1-.8-.2-1.1-.5-.4-.2-.6-.7-.6-1.2" fill="#c79127"/><g fill="#94989b"><path d="m24.9 50h14.3v1.8h-14.3z"/><path d="m25.9 53.6h12.3v1.8h-12.3z"/></g><path fill="#616466" d="m25.9 51.8h12.3v1.8h-12.3z"/><g fill="#94989b"><path d="m39.2 50l-13.3 3.6v1.9l13.3-3.7z"/><path d="m26.9 57.3h10.3v1.8h-10.3z"/></g><path fill="#616466" d="m26.9 55.5h10.3v1.8h-10.3z"/><path fill="#94989b" d="m38.2 53.6l-11.3 3.7v1.9l11.3-3.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a2.svg b/riot/emojione/svg/1f4a2.svg new file mode 100644 index 0000000..d816b49 --- /dev/null +++ b/riot/emojione/svg/1f4a2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m55.6 12.7c-.5-.7-1.4-1.1-2.3-.9-2.8.7-5.2 1-7.5 1-2.3 0-4.5-.4-6.4-1.1-3.8-1.4-7.3-4.3-10.7-8.9-.1-.1-.2-.3-.3-.4l-.1-.1c-.8-.7-2.2-.6-2.8.2-.5.6-.6 1.2-.5 1.8.6 6.2 5.4 12 11.9 14.3 2.1.8 4.4 1.2 6.6 1.2 4.6 0 8.9-1.7 11.8-4.6.7-.7.8-1.7.3-2.5"/><path d="m27.1 45.4c-2.1-.8-4.4-1.2-6.6-1.2-4.6 0-8.9 1.7-11.8 4.6-.7.7-.8 1.7-.3 2.5.5.7 1.4 1.1 2.3.9 2.8-.7 5.2-1 7.5-1 2.3 0 4.5.4 6.4 1.1 3.8 1.4 7.3 4.3 10.7 8.9.1.1.2.3.4.4.4.3.8.5 1.3.5.6 0 1.1-.2 1.5-.7.4-.5.5-1.1.4-1.6-.5-6.3-5.3-12-11.8-14.4"/><path d="m61.3 25.4c-.3-.3-.8-.5-1.3-.5-.1 0-.3 0-.3 0-6.2.6-12 5.4-14.3 11.9-2.4 6.5-1.1 13.9 3.4 18.4.4.4.9.6 1.4.6.4 0 .7-.1 1.1-.3.8-.5 1.1-1.4.9-2.3-1.4-5.5-1.4-10.1 0-13.9 1.4-3.8 4.3-7.3 8.9-10.7.1-.1.3-.2.4-.4.7-.8.6-2.1-.2-2.8"/><path d="m18.6 27.1c2.4-6.5 1.1-13.9-3.4-18.4-.6-.7-1.7-.8-2.5-.3-.8.5-1.1 1.4-.9 2.3 1.4 5.5 1.4 10.1 0 13.9-1.4 3.8-4.3 7.3-8.9 10.7-.1.1-.3.2-.4.4-.7.9-.6 2.1.2 2.8.3.4.8.5 1.2.5.1 0 .3 0 .3 0 6.3-.6 12-5.4 14.4-11.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a3.svg b/riot/emojione/svg/1f4a3.svg new file mode 100644 index 0000000..b9a7e0f --- /dev/null +++ b/riot/emojione/svg/1f4a3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.8 22.5c-4.4-4.4-5.8-8.1-4.2-10.9 3.1-5.5 18-5.5 30.4-2.7l-.4 1.8c-11.6-2.5-25.7-2.6-28.3 1.9-1.4 2.5 1.3 6.1 3.9 8.7l-1.4 1.2" fill="#d3976e"/><g fill="#ffce31"><path d="m41.2 11.3c-1 1-2 1.9-2.9 2.9-.9.9.5 2.2 1.3 1.3 1-1 2-1.9 2.9-2.9.9-.8-.4-2.2-1.3-1.3"/><path d="m46.8 8.5c1-1 1.9-1.9 2.9-2.9.9-.9-.5-2.2-1.3-1.3-1 1-1.9 1.9-2.9 2.9-.9.8.4 2.1 1.3 1.3"/><path d="m45.4 12.6c1 1 2 1.9 2.9 2.9.9.9 2.2-.5 1.3-1.3-1-1-2-1.9-2.9-2.9-.8-.9-2.2.5-1.3 1.3"/><path d="m38.3 5.6c1 1 1.9 1.9 2.9 2.9.9.9 2.2-.5 1.3-1.3-1-1-1.9-1.9-2.9-2.9-.8-.9-2.2.5-1.3 1.3"/></g><g fill="#ed4c5c"><path d="m43 14c0 1 0 1.9 0 2.9 0 1.2 1.9 1.2 1.9 0 0-1 0-1.9 0-2.9 0-1.2-1.9-1.2-1.9 0"/><path d="m43 2.9c0 .9 0 1.9 0 2.8 0 1.2 1.9 1.2 1.9 0 0-.9 0-1.9 0-2.8 0-1.2-1.9-1.2-1.9 0"/><path d="m48.2 10.8c1 0 1.9 0 2.9 0 1.2 0 1.2-1.9 0-1.9-1 0-1.9 0-2.9 0-1.2.1-1.2 1.9 0 1.9"/></g><path d="m10.7 24.2l6-5.9 3.8 3.7c3.5-2.4 7.8-3.7 12.4-3.7 12.2-.1 22.1 9.7 22.1 21.8 0 12.1-9.9 21.9-22.2 21.9-12.2 0-22.2-9.8-22.2-21.9 0-4.5 1.4-8.7 3.8-12.2l-3.7-3.7" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a4.svg b/riot/emojione/svg/1f4a4.svg new file mode 100644 index 0000000..625c724 --- /dev/null +++ b/riot/emojione/svg/1f4a4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m18.1 50.9l-4.4 3.7.1-9.2c0-.1-.1-.3-.1-.4l-2-2.3c-.2-.3-.6-.3-.9-.1l-8.5 7.2c-.3.2-.4.6-.2.9l2 2.3c.2.3.6.3.9.1l3.9-3.3-.1 9.5c0 .1.1.3.1.4l1.8 2.2c.2.3.6.3.9.1l9.1-7.6c.3-.2.3-.6.1-.9l-1.9-2.5c-.2-.2-.6-.3-.8-.1"/><path d="m36 33.5l-6.5 3.7 2.2-11.6c0-.2 0-.4-.1-.5l-2-3.4c-.2-.4-.7-.5-1.1-.3l-12.4 7.2c-.4.2-.5.7-.3 1.1l1.9 3.3c.2.4.7.5 1.1.3l5.7-3.3-2.2 12c0 .2 0 .4.1.5l1.8 3.2c.2.4.7.5 1.1.3l13.2-7.6c.4-.2.5-.7.3-1.1l-1.9-3.4c0-.5-.5-.6-.9-.4"/><path d="m59.3 16.8l-7.8 2.8 4.7-12.3c.1-.2.1-.4 0-.6l-1.5-4.1c-.2-.5-.7-.7-1.1-.5l-15 5.4c-.5.2-.7.7-.5 1.1l1.5 4c.2.5.7.7 1.1.5l6.9-2.5-4.7 12.7c-.1.2-.1.4 0 .6l1.4 3.9c.2.5.7.7 1.1.5l16-5.8c.5-.2.7-.7.5-1.1l-1.5-4.1c-.1-.4-.6-.7-1.1-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a5.svg b/riot/emojione/svg/1f4a5.svg new file mode 100644 index 0000000..5ae4d00 --- /dev/null +++ b/riot/emojione/svg/1f4a5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ef4e16" d="M44.7 35.4 64 24.7 42.3 25.7 48.8 12.4 37 20.7 38.5 2.4 30 17.5 17.1 0 22.6 21.8 3.4 15.4 18.7 29.4 0 33.1 18 37.2 7.9 55.1 24.4 45.2 25 64 31.8 46.8 40.9 60.4 40.4 44.1 56 50z"/><path fill="#ffce31" d="m39.1 33.8l11.3-5.3-12.5-.3 3.3-7.5-6.6 3.8.2-10.1-4.4 8.4-6.7-8.6 2.9 10.9-11.2-2.8 9.1 7.8-11.3 2.7 10.4 2.4-7.3 11.2 11.2-7.6.3 9.9 4-9 4.6 6.7-.1-8.1 8.2 3.6z"/><path fill="#fff" d="m34.9 32.4l4.8-2.2-5.3-.1 1.4-3.2-2.8 1.6.1-4.3-1.9 3.6-2.8-3.6 1.2 4.6-4.7-1.2 3.8 3.3-4.8 1.1 4.4 1-3.1 4.8 4.8-3.2.1 4.2 1.7-3.9 1.9 2.9v-3.5l3.5 1.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a6.svg b/riot/emojione/svg/1f4a6.svg new file mode 100644 index 0000000..d33061e --- /dev/null +++ b/riot/emojione/svg/1f4a6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#75d6ff"><path d="m22.5 2.6c5.7 12.9 12.4 22.2 19.8 26.5 6.3 3.6 14.4 1.5 18-4.7 3.6-6.3 1.4-14.3-4.9-17.9-7.5-4.3-19.1-5.4-32.9-3.9"/><path d="m12.2 11c-6.5 8.8-10.2 16.9-10.2 23.6 0 5.7 4.6 10.3 10.2 10.3 5.6 0 10.2-4.6 10.2-10.3 0-6.7-3.9-14.9-10.2-23.6"/><path d="m29 31.2c-1.2 10.9-.3 19.8 3 25.6 2.8 4.9 9.1 6.6 14 3.8 4.9-2.8 6.5-9.1 3.7-14-3.4-5.8-10.9-11-20.7-15.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a7.svg b/riot/emojione/svg/1f4a7.svg new file mode 100644 index 0000000..e56136f --- /dev/null +++ b/riot/emojione/svg/1f4a7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C20.6,17.6,14,32,14,43.8c0,10,8.1,18.2,18,18.2c9.9,0,18-8.1,18-18.2C50,32,43.2,17.4,32,2z" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a8.svg b/riot/emojione/svg/1f4a8.svg new file mode 100644 index 0000000..5807909 --- /dev/null +++ b/riot/emojione/svg/1f4a8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#7ca7bf"><ellipse cx="51.5" cy="34.6" rx="10.5" ry="11.8"/><ellipse cx="30.7" cy="42.4" rx="9.8" ry="11"/><ellipse cx="43.8" cy="47.1" rx="11.5" ry="12.9"/><ellipse cx="39.6" cy="29.8" rx="9.9" ry="11.1"/><ellipse cx="41.6" cy="15.1" rx="9.9" ry="11.1"/><ellipse cx="50.4" cy="20.8" rx="8" ry="9"/><ellipse cx="30.7" cy="20.8" rx="10.3" ry="11.5"/><path d="m7.2 27.4c2.9-.6 5.7-1.6 8.4-2.7 1.4-.6 2.7-1.2 4.1-1.9 1.3-.7 2.7-1.4 3.9-2.1 1.7-1 3.7 0 4.4 2.4.7 2.4 0 5.1-1.7 6.2-.4.2-.8.4-1.2.4h-.1c-1.6.1-3 0-4.6 0-1.5-.1-3-.2-4.5-.3-2.9-.5-5.9-1-8.7-2"/><path d="m2 32.2c3.8-.3 7.4-1.1 11.1-2 1.8-.5 3.6-1 5.4-1.6 1.8-.6 3.6-1.2 5.3-1.9 1.8-.7 3.6.7 4.1 3.1.5 2.5-.5 5-2.2 5.8-.3.1-.6.2-.9.2-2 0-3.9-.1-5.8-.3-1.9-.2-3.8-.4-5.7-.7-3.9-.6-7.6-1.4-11.3-2.6"/><path d="m7.2 42.5c2.8-1 5.7-1.7 8.6-2.2 1.5-.3 2.9-.5 4.4-.8 1.5-.2 2.9-.4 4.4-.6 1.8-.2 3.4 1.8 3.6 4.3.1 2.6-1.3 4.8-3.1 5-.4 0-.9 0-1.2-.2-1.3-.6-2.7-1.1-4.1-1.7-1.4-.5-2.8-1-4.2-1.5-2.7-.9-5.5-1.7-8.4-2.3"/><path d="m2 37.7c3.7-1.2 7.4-2.2 11.1-3 1.9-.4 3.7-.8 5.6-1.1 1.9-.3 3.8-.6 5.7-.9 1.8-.2 3.4 1.7 3.6 4.2.2 2.5-1.2 4.8-3 5-.3 0-.7 0-1-.1-1.8-.5-3.6-1-5.4-1.4-1.8-.4-3.7-.8-5.5-1.2-3.6-.6-7.4-1.1-11.1-1.5"/></g><g fill="#fff"><path d="m42.9 29.1c3.6 3.7 5.6 8.6 6.2 13.9 3-6.6 2.6-13.8-1.6-18.2-4.1-4.3-10.7-4.8-16.8-2 4.7.8 8.9 2.9 12.2 6.3"/><path d="m34.5 16c2.2 2.3 3.5 5.3 3.9 8.6 1.9-4.1 1.6-8.6-1-11.3-2.5-2.7-6.6-3-10.4-1.2 2.8.4 5.4 1.7 7.5 3.9"/><path d="m52.7 17.5c1.4 1.5 2.3 3.5 2.5 5.6 1.2-2.7 1.1-5.6-.7-7.4-1.7-1.7-4.3-2-6.8-.8 2 .4 3.7 1.2 5 2.6"/><path d="m35.3 37.6c2.1 2.2 3.3 5 3.6 8 1.7-3.8 1.5-8-.9-10.6-2.4-2.5-6.2-2.8-9.7-1.2 2.6.6 5.1 1.8 7 3.8"/><path d="m54.7 30.7c2.2 2.3 3.5 5.3 3.9 8.6 1.9-4.1 1.6-8.6-1-11.3-2.5-2.7-6.6-3-10.4-1.2 2.8.4 5.4 1.7 7.5 3.9"/><path d="m44.3 11.6c2.2 2.3 3.5 5.3 3.9 8.6 1.9-4.1 1.6-8.6-1-11.3-2.5-2.7-6.6-3-10.4-1.2 2.9.5 5.5 1.8 7.5 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4a9.svg b/riot/emojione/svg/1f4a9.svg new file mode 100644 index 0000000..342ac40 --- /dev/null +++ b/riot/emojione/svg/1f4a9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.2 36.9c-17.1 0-30.2-7.1-30.2 8.8 0 12.8 16.9 16.3 29.8 16.3 15 0 30.2-3.5 30.2-16.3 0-15.9-12.2-8.8-29.8-8.8" fill="#89664c"/><path d="m31.7 20.9c-9.6 0-24.5 1.1-24.5 12.6 0 16.8 49.5 16.8 49.5 0 .1-11.5-14.8-12.6-25-12.6" fill="#9b7861"/><path d="m49 16.7c-4.6-10.3-26.4.3-22.6-12.2.6-1.9.5-2.7-.9-2.4-7.8 1.6-13.5 9.6-11.5 16.3 6.4 21.4 41.3 12.3 35-1.7" fill="#a88673"/><path d="m28.8 34.3c0 4-3.2 7.2-7.2 7.2-4 0-7.2-3.2-7.2-7.2 0-4 3.2-7.2 7.2-7.2 4 0 7.2 3.2 7.2 7.2" fill="#fff"/><circle cx="23.6" cy="34.3" r="3.6" fill="#231f20"/><path d="m49.6 34.3c0 4-3.2 7.2-7.2 7.2-4 0-7.2-3.2-7.2-7.2 0-4 3.2-7.2 7.2-7.2 3.9 0 7.2 3.2 7.2 7.2" fill="#fff"/><g fill="#231f20"><circle cx="40.4" cy="34.3" r="3.6"/><path d="m38 50.6c0 3.3-2.7 6-6 6-3.3 0-6-2.7-6-6 0-3.3 2.7-6 6-6 3.3 0 6 2.7 6 6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4aa-1f3fb.svg b/riot/emojione/svg/1f4aa-1f3fb.svg new file mode 100644 index 0000000..174dc99 --- /dev/null +++ b/riot/emojione/svg/1f4aa-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.1 42.2c-.9-6.8 3.3-17.7 5.3-32.4.4-2.6 14-5.4 20.4-5.4 1.6 0 3 7.5 2.6 10.1-.3 1.9-3 1.4-3 1.4-.9 2.5-3.6 1.5-3.6 1.5-.8 2.1-3.2 1.1-3.2 1.1-1 2-3.2 1-3.2 1-2 8.7 1.7 7.9 4.4 21 0 0 .8-.1 2.9-4.4 8.6-17.3 38.8-11.8 37 6.8-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-5.4 1.7-15.9 1.6-16.2-2.4-.3-4.7-1.9-7.1-2.4-10.6" fill="#ffe1bd"/><g fill="#e6b796"><path d="m61.8 42.9c.4-4.4-.9-8-3.3-10.6 1.4 2.4 2.1 5.3 1.8 8.7-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-4.2 1.3-11.6 1.5-14.7-.4.4 3.9 10.8 4 16.2 2.3 0 0 15.8 7.7 28.7 3.7 16.2-5.1 11.9-11.9 12.3-16"/><path d="m16.3 19.4c-2.5 10.2 1.6 9.8 4.3 22.7l1.4-1.5c-2-13-5.4-11.4-4.6-21-.6 0-1.1-.2-1.1-.2"/><path d="m29.2 48.5c8.3 3.1 20.8-.1 27.9-3.4-3.1 7.5-19.6 11.5-27.9 3.4"/><path d="m25.1 7.2c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m31.2 11.5c-.3-2.2-1-4.4-2.3-6.2.7 1.9 1.1 3.9 1.1 5.9 0 .9.2 4.1-1.4 3.7-1-.3-1-1.1-1.3-2-.4-1.4-1.2-2.9-1.1-4.3-.4 1.4.1 3.1.2 4.5.1.8.7 3.1-.4 3.4-.6.2-1.3-.2-1.8-.5-.2-.1-.3-.9-.4-1.2-.4-1.4-1.2-3-1.1-4.5-.4 1.3 0 2.9.1 4.3.1.8.5 2.7-.5 3.1-1.2.6-1.3-.8-1.5-1.5-.4-1.3-1-2.8-1-4.2-.4 1.7.1 3.7.1 5.4 0 .9-1.9 1.6-2.6 1.1-1.1-.8-1.3-2.8-1.5-4.1.3.4.8 1 1.4.9-.5-.6-.8-1.5-1.1-2.2-.3-.6-1-1.9-1.8-1.9.1.2.8 1.9.7 2-.3.5-.6 1.1-1 1.6-.3.4-1.2 1.8-1.9 1.4-.8-.5-1-1.7-1.2-2.5.1 1 0 2.5 1 3.1.9.6 2-.3 2.6-.9.2 2 1.1 4.7 3.6 4.5.5 0 1.1-.2 1.6-.4.4-.2.9-.7 1.3-.5 1.1.3 2.2.1 3-.7.4-.4.3-.6.8-.5.6.1 1.2.2 1.7 0 .5-.1.9-.4 1.2-.8.2-.2.3-.4.4-.7.2-.4.4-.2.8-.2 2.6 0 2.5-3.3 2.3-5.1"/><path d="m28.7 5.8c-.6-1.1-1.8-1-2.6-.7.1-1.1 3.1-2 2.6.7"/><path d="m22.2 8.7c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m18.8 10.3c-.6-1.1-1.8-1-2.6-.7.1-1.2 3.1-2.1 2.6.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4aa-1f3fc.svg b/riot/emojione/svg/1f4aa-1f3fc.svg new file mode 100644 index 0000000..be0b9c7 --- /dev/null +++ b/riot/emojione/svg/1f4aa-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.1 42.2c-.9-6.8 3.3-17.7 5.3-32.4.4-2.6 14-5.4 20.4-5.4 1.6 0 3 7.5 2.6 10.1-.3 1.9-3 1.4-3 1.4-.9 2.5-3.6 1.5-3.6 1.5-.8 2.1-3.2 1.1-3.2 1.1-1 2-3.2 1-3.2 1-2 8.7 1.7 7.9 4.4 21 0 0 .8-.1 2.9-4.4 8.6-17.3 38.8-11.8 37 6.8-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-5.4 1.7-15.9 1.6-16.2-2.4-.3-4.7-1.9-7.1-2.4-10.6" fill="#fed0ac"/><g fill="#e0a372"><path d="m61.8 42.9c.4-4.4-.9-8-3.3-10.6 1.4 2.4 2.1 5.3 1.8 8.7-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-4.2 1.3-11.6 1.5-14.7-.4.4 3.9 10.8 4 16.2 2.3 0 0 15.8 7.7 28.7 3.7 16.2-5.1 11.9-11.9 12.3-16"/><path d="m16.3 19.4c-2.5 10.2 1.6 9.8 4.3 22.7l1.4-1.5c-2-13-5.4-11.4-4.6-21-.6 0-1.1-.2-1.1-.2"/><path d="m29.2 48.5c8.3 3.1 20.8-.1 27.9-3.4-3.1 7.5-19.6 11.5-27.9 3.4"/><path d="m25.1 7.2c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m31.2 11.5c-.3-2.2-1-4.4-2.3-6.2.7 1.9 1.1 3.9 1.1 5.9 0 .9.2 4.1-1.4 3.7-1-.3-1-1.1-1.3-2-.4-1.4-1.2-2.9-1.1-4.3-.4 1.4.1 3.1.2 4.5.1.8.7 3.1-.4 3.4-.6.2-1.3-.2-1.8-.5-.2-.1-.3-.9-.4-1.2-.4-1.4-1.2-3-1.1-4.5-.4 1.3 0 2.9.1 4.3.1.8.5 2.7-.5 3.1-1.2.6-1.3-.8-1.5-1.5-.4-1.3-1-2.8-1-4.2-.4 1.7.1 3.7.1 5.4 0 .9-1.9 1.6-2.6 1.1-1.1-.8-1.3-2.8-1.5-4.1.3.4.8 1 1.4.9-.5-.6-.8-1.5-1.1-2.2-.3-.6-1-1.9-1.8-1.9.1.2.8 1.9.7 2-.3.5-.6 1.1-1 1.6-.3.4-1.2 1.8-1.9 1.4-.8-.5-1-1.7-1.2-2.5.1 1 0 2.5 1 3.1.9.6 2-.3 2.6-.9.2 2 1.1 4.7 3.6 4.5.5 0 1.1-.2 1.6-.4.4-.2.9-.7 1.3-.5 1.1.3 2.2.1 3-.7.4-.4.3-.6.8-.5.6.1 1.2.2 1.7 0 .5-.1.9-.4 1.2-.8.2-.2.3-.4.4-.7.2-.4.4-.2.8-.2 2.6 0 2.5-3.3 2.3-5.1"/><path d="m28.7 5.8c-.6-1.1-1.8-1-2.6-.7.1-1.1 3.1-2 2.6.7"/><path d="m22.2 8.7c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m18.8 10.3c-.6-1.1-1.8-1-2.6-.7.1-1.2 3.1-2.1 2.6.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4aa-1f3fd.svg b/riot/emojione/svg/1f4aa-1f3fd.svg new file mode 100644 index 0000000..fa50395 --- /dev/null +++ b/riot/emojione/svg/1f4aa-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.1 42.2c-.9-6.8 3.3-17.7 5.3-32.4.4-2.6 14-5.4 20.4-5.4 1.6 0 3 7.5 2.6 10.1-.3 1.9-3 1.4-3 1.4-.9 2.5-3.6 1.5-3.6 1.5-.8 2.1-3.2 1.1-3.2 1.1-1 2-3.2 1-3.2 1-2 8.7 1.7 7.9 4.4 21 0 0 .8-.1 2.9-4.4 8.6-17.3 38.8-11.8 37 6.8-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-5.4 1.7-15.9 1.6-16.2-2.4-.3-4.7-1.9-7.1-2.4-10.6" fill="#d6a57c"/><g fill="#b58360"><path d="m61.8 42.9c.4-4.4-.9-8-3.3-10.6 1.4 2.4 2.1 5.3 1.8 8.7-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-4.2 1.3-11.6 1.5-14.7-.4.4 3.9 10.8 4 16.2 2.3 0 0 15.8 7.7 28.7 3.7 16.2-5.1 11.9-11.9 12.3-16"/><path d="m16.3 19.4c-2.5 10.2 1.6 9.8 4.3 22.7l1.4-1.5c-2-13-5.4-11.4-4.6-21-.6 0-1.1-.2-1.1-.2"/><path d="m29.2 48.5c8.3 3.1 20.8-.1 27.9-3.4-3.1 7.5-19.6 11.5-27.9 3.4"/><path d="m25.1 7.2c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m31.2 11.5c-.3-2.2-1-4.4-2.3-6.2.7 1.9 1.1 3.9 1.1 5.9 0 .9.2 4.1-1.4 3.7-1-.3-1-1.1-1.3-2-.4-1.4-1.2-2.9-1.1-4.3-.4 1.4.1 3.1.2 4.5.1.8.7 3.1-.4 3.4-.6.2-1.3-.2-1.8-.5-.2-.1-.3-.9-.4-1.2-.4-1.4-1.2-3-1.1-4.5-.4 1.3 0 2.9.1 4.3.1.8.5 2.7-.5 3.1-1.2.6-1.3-.8-1.5-1.5-.4-1.3-1-2.8-1-4.2-.4 1.7.1 3.7.1 5.4 0 .9-1.9 1.6-2.6 1.1-1.1-.8-1.3-2.8-1.5-4.1.3.4.8 1 1.4.9-.5-.6-.8-1.5-1.1-2.2-.3-.6-1-1.9-1.8-1.9.1.2.8 1.9.7 2-.3.5-.6 1.1-1 1.6-.3.4-1.2 1.8-1.9 1.4-.8-.5-1-1.7-1.2-2.5.1 1 0 2.5 1 3.1.9.6 2-.3 2.6-.9.2 2 1.1 4.7 3.6 4.5.5 0 1.1-.2 1.6-.4.4-.2.9-.7 1.3-.5 1.1.3 2.2.1 3-.7.4-.4.3-.6.8-.5.6.1 1.2.2 1.7 0 .5-.1.9-.4 1.2-.8.2-.2.3-.4.4-.7.2-.4.4-.2.8-.2 2.6 0 2.5-3.3 2.3-5.1"/><path d="m28.7 5.8c-.6-1.1-1.8-1-2.6-.7.1-1.1 3.1-2 2.6.7"/><path d="m22.2 8.7c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m18.8 10.3c-.6-1.1-1.8-1-2.6-.7.1-1.2 3.1-2.1 2.6.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4aa-1f3fe.svg b/riot/emojione/svg/1f4aa-1f3fe.svg new file mode 100644 index 0000000..8202118 --- /dev/null +++ b/riot/emojione/svg/1f4aa-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.1 42.2c-.9-6.8 3.3-17.7 5.3-32.4.4-2.6 14-5.4 20.4-5.4 1.6 0 3 7.5 2.6 10.1-.3 1.9-3 1.4-3 1.4-.9 2.5-3.6 1.5-3.6 1.5-.8 2.1-3.2 1.1-3.2 1.1-1 2-3.2 1-3.2 1-2 8.7 1.7 7.9 4.4 21 0 0 .8-.1 2.9-4.4 8.6-17.3 38.8-11.8 37 6.8-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-5.4 1.7-15.9 1.6-16.2-2.4-.3-4.7-1.9-7.1-2.4-10.6" fill="#b47d56"/><g fill="#935e3e"><path d="m61.8 42.9c.4-4.4-.9-8-3.3-10.6 1.4 2.4 2.1 5.3 1.8 8.7-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-4.2 1.3-11.6 1.5-14.7-.4.4 3.9 10.8 4 16.2 2.3 0 0 15.8 7.7 28.7 3.7 16.2-5.1 11.9-11.9 12.3-16"/><path d="m16.3 19.4c-2.5 10.2 1.6 9.8 4.3 22.7l1.4-1.5c-2-13-5.4-11.4-4.6-21-.6 0-1.1-.2-1.1-.2"/><path d="m29.2 48.5c8.3 3.1 20.8-.1 27.9-3.4-3.1 7.5-19.6 11.5-27.9 3.4"/><path d="m25.1 7.2c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m31.2 11.5c-.3-2.2-1-4.4-2.3-6.2.7 1.9 1.1 3.9 1.1 5.9 0 .9.2 4.1-1.4 3.7-1-.3-1-1.1-1.3-2-.4-1.4-1.2-2.9-1.1-4.3-.4 1.4.1 3.1.2 4.5.1.8.7 3.1-.4 3.4-.6.2-1.3-.2-1.8-.5-.2-.1-.3-.9-.4-1.2-.4-1.4-1.2-3-1.1-4.5-.4 1.3 0 2.9.1 4.3.1.8.5 2.7-.5 3.1-1.2.6-1.3-.8-1.5-1.5-.4-1.3-1-2.8-1-4.2-.4 1.7.1 3.7.1 5.4 0 .9-1.9 1.6-2.6 1.1-1.1-.8-1.3-2.8-1.5-4.1.3.4.8 1 1.4.9-.5-.6-.8-1.5-1.1-2.2-.3-.6-1-1.9-1.8-1.9.1.2.8 1.9.7 2-.3.5-.6 1.1-1 1.6-.3.4-1.2 1.8-1.9 1.4-.8-.5-1-1.7-1.2-2.5.1 1 0 2.5 1 3.1.9.6 2-.3 2.6-.9.2 2 1.1 4.7 3.6 4.5.5 0 1.1-.2 1.6-.4.4-.2.9-.7 1.3-.5 1.1.3 2.2.1 3-.7.4-.4.3-.6.8-.5.6.1 1.2.2 1.7 0 .5-.1.9-.4 1.2-.8.2-.2.3-.4.4-.7.2-.4.4-.2.8-.2 2.6 0 2.5-3.3 2.3-5.1"/><path d="m28.7 5.8c-.6-1.1-1.8-1-2.6-.7.1-1.1 3.1-2 2.6.7"/><path d="m22.2 8.7c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m18.8 10.3c-.6-1.1-1.8-1-2.6-.7.1-1.2 3.1-2.1 2.6.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4aa-1f3ff.svg b/riot/emojione/svg/1f4aa-1f3ff.svg new file mode 100644 index 0000000..109ded6 --- /dev/null +++ b/riot/emojione/svg/1f4aa-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.1 42.2c-.9-6.8 3.3-17.7 5.3-32.4.4-2.6 14-5.4 20.4-5.4 1.6 0 3 7.5 2.6 10.1-.3 1.9-3 1.4-3 1.4-.9 2.5-3.6 1.5-3.6 1.5-.8 2.1-3.2 1.1-3.2 1.1-1 2-3.2 1-3.2 1-2 8.7 1.7 7.9 4.4 21 0 0 .8-.1 2.9-4.4 8.6-17.3 38.8-11.8 37 6.8-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-5.4 1.7-15.9 1.6-16.2-2.4-.3-4.7-1.9-7.1-2.4-10.6" fill="#8a6859"/><g fill="#705041"><path d="m61.8 42.9c.4-4.4-.9-8-3.3-10.6 1.4 2.4 2.1 5.3 1.8 8.7-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-4.2 1.3-11.6 1.5-14.7-.4.4 3.9 10.8 4 16.2 2.3 0 0 15.8 7.7 28.7 3.7 16.2-5.1 11.9-11.9 12.3-16"/><path d="m16.3 19.4c-2.5 10.2 1.6 9.8 4.3 22.7l1.4-1.5c-2-13-5.4-11.4-4.6-21-.6 0-1.1-.2-1.1-.2"/><path d="m29.2 48.5c8.3 3.1 20.8-.1 27.9-3.4-3.1 7.5-19.6 11.5-27.9 3.4"/><path d="m25.1 7.2c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m31.2 11.5c-.3-2.2-1-4.4-2.3-6.2.7 1.9 1.1 3.9 1.1 5.9 0 .9.2 4.1-1.4 3.7-1-.3-1-1.1-1.3-2-.4-1.4-1.2-2.9-1.1-4.3-.4 1.4.1 3.1.2 4.5.1.8.7 3.1-.4 3.4-.6.2-1.3-.2-1.8-.5-.2-.1-.3-.9-.4-1.2-.4-1.4-1.2-3-1.1-4.5-.4 1.3 0 2.9.1 4.3.1.8.5 2.7-.5 3.1-1.2.6-1.3-.8-1.5-1.5-.4-1.3-1-2.8-1-4.2-.4 1.7.1 3.7.1 5.4 0 .9-1.9 1.6-2.6 1.1-1.1-.8-1.3-2.8-1.5-4.1.3.4.8 1 1.4.9-.5-.6-.8-1.5-1.1-2.2-.3-.6-1-1.9-1.8-1.9.1.2.8 1.9.7 2-.3.5-.6 1.1-1 1.6-.3.4-1.2 1.8-1.9 1.4-.8-.5-1-1.7-1.2-2.5.1 1 0 2.5 1 3.1.9.6 2-.3 2.6-.9.2 2 1.1 4.7 3.6 4.5.5 0 1.1-.2 1.6-.4.4-.2.9-.7 1.3-.5 1.1.3 2.2.1 3-.7.4-.4.3-.6.8-.5.6.1 1.2.2 1.7 0 .5-.1.9-.4 1.2-.8.2-.2.3-.4.4-.7.2-.4.4-.2.8-.2 2.6 0 2.5-3.3 2.3-5.1"/><path d="m28.7 5.8c-.6-1.1-1.8-1-2.6-.7.1-1.1 3.1-2 2.6.7"/><path d="m22.2 8.7c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m18.8 10.3c-.6-1.1-1.8-1-2.6-.7.1-1.2 3.1-2.1 2.6.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4aa.svg b/riot/emojione/svg/1f4aa.svg new file mode 100644 index 0000000..772927c --- /dev/null +++ b/riot/emojione/svg/1f4aa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.1 42.2c-.9-6.8 3.3-17.7 5.3-32.4.4-2.6 14-5.4 20.4-5.4 1.6 0 3 7.5 2.6 10.1-.3 1.9-3 1.4-3 1.4-.9 2.5-3.6 1.5-3.6 1.5-.8 2.1-3.2 1.1-3.2 1.1-1 2-3.2 1-3.2 1-2 8.7 1.7 7.9 4.4 21 0 0 .8-.1 2.9-4.4 8.6-17.3 38.8-11.8 37 6.8-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-5.4 1.7-15.9 1.6-16.2-2.4-.3-4.7-1.9-7.1-2.4-10.6" fill="#ffdd67"/><g fill="#eba352"><path d="m61.8 42.9c.4-4.4-.9-8-3.3-10.6 1.4 2.4 2.1 5.3 1.8 8.7-.4 4.1 4 10.9-12.3 16-12.9 4-28.7-3.7-28.7-3.7-4.2 1.3-11.6 1.5-14.7-.4.4 3.9 10.8 4 16.2 2.3 0 0 15.8 7.7 28.7 3.7 16.2-5.1 11.9-11.9 12.3-16"/><path d="m16.3 19.4c-2.5 10.2 1.6 9.8 4.3 22.7l1.4-1.5c-2-13-5.4-11.4-4.6-21-.6 0-1.1-.2-1.1-.2"/><path d="m29.2 48.5c8.3 3.1 20.8-.1 27.9-3.4-3.1 7.5-19.6 11.5-27.9 3.4"/><path d="m25.1 7.2c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m31.2 11.5c-.3-2.2-1-4.4-2.3-6.2.7 1.9 1.1 3.9 1.1 5.9 0 .9.2 4.1-1.4 3.7-1-.3-1-1.1-1.3-2-.4-1.4-1.2-2.9-1.1-4.3-.4 1.4.1 3.1.2 4.5.1.8.7 3.1-.4 3.4-.6.2-1.3-.2-1.8-.5-.2-.1-.3-.9-.4-1.2-.4-1.4-1.2-3-1.1-4.5-.4 1.3 0 2.9.1 4.3.1.8.5 2.7-.5 3.1-1.2.6-1.3-.8-1.5-1.5-.4-1.3-1-2.8-1-4.2-.4 1.7.1 3.7.1 5.4 0 .9-1.9 1.6-2.6 1.1-1.1-.8-1.3-2.8-1.5-4.1.3.4.8 1 1.4.9-.5-.6-.8-1.5-1.1-2.2-.3-.6-1-1.9-1.8-1.9.1.2.8 1.9.7 2-.3.5-.6 1.1-1 1.6-.3.4-1.2 1.8-1.9 1.4-.8-.5-1-1.7-1.2-2.5.1 1 0 2.5 1 3.1.9.6 2-.3 2.6-.9.2 2 1.1 4.7 3.6 4.5.5 0 1.1-.2 1.6-.4.4-.2.9-.7 1.3-.5 1.1.3 2.2.1 3-.7.4-.4.3-.6.8-.5.6.1 1.2.2 1.7 0 .5-.1.9-.4 1.2-.8.2-.2.3-.4.4-.7.2-.4.4-.2.8-.2 2.6 0 2.5-3.3 2.3-5.1"/><path d="m28.7 5.8c-.6-1.1-1.8-1-2.6-.7.1-1.1 3.1-2 2.6.7"/><path d="m22.2 8.7c-.6-1.1-1.8-1-2.6-.7.1-1.2 3-2.1 2.6.7"/><path d="m18.8 10.3c-.6-1.1-1.8-1-2.6-.7.1-1.2 3.1-2.1 2.6.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ab.svg b/riot/emojione/svg/1f4ab.svg new file mode 100644 index 0000000..6f4ba8a --- /dev/null +++ b/riot/emojione/svg/1f4ab.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.7 13.8c1.7-5.2 1.2-14.9-16.6-3.2-18.1 11.9-36.9 39.7-35.5 44.8 1.1 4 17.3-5 26-17.2.7-1 8.7 8.8 7.6 9.8-7.8 7.8-32.9 17.7-38.2 12.6-6.1-5.9 16.7-39.8 40.1-53.3 6.4-3.7 25.5-12.5 16.6 6.5" fill="#ffdd7d"/><path d="m60.6 49.5l-13.9-1.5-9.1 10.6-2.9-13.7-12.9-5.4 12.2-7 1.2-13.9 10.3 9.4 13.6-3.2-5.7 12.7 7.2 12" fill="#ffd05a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ac.svg b/riot/emojione/svg/1f4ac.svg new file mode 100644 index 0000000..663533c --- /dev/null +++ b/riot/emojione/svg/1f4ac.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M55.4,5H8.6C4.9,5,2,7.9,2,11.5v29.8c0,3.6,2.9,6.5,6.6,6.5h6.9V59l10.4-11.2h29.6c3.6,0,6.6-2.9,6.6-6.5V11.5 + C62,7.9,59.1,5,55.4,5z" fill="#4fd1d9"/><g fill="#fff"><circle cx="16" cy="26.4" r="4.2"/><circle cx="32" cy="26.4" r="4.2"/><circle cx="48" cy="26.4" r="4.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ad.svg b/riot/emojione/svg/1f4ad.svg new file mode 100644 index 0000000..b9883d6 --- /dev/null +++ b/riot/emojione/svg/1f4ad.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4fd1d9"><path d="m18.7 47.9c-3.3-1.1-6.6.3-7.4 3.1-.8 2.7 1.1 5.8 4.4 6.9s6.6-.3 7.4-3.1c.8-2.8-1.1-5.9-4.4-6.9"/><path d="m6.7 56.8c-1.1.9-1.2 2.6-.3 3.9 1 1.3 2.6 1.6 3.8.8 1.1-.9 1.2-2.6.3-3.9s-2.7-1.6-3.8-.8"/><path d="m62 22.7c0-2.7-1.3-5.1-3.2-6.6 0-.2 0-.4 0-.6 0-4.2-3.3-7.7-7.4-7.7-.3 0-.5 0-.8 0-1.6-2.7-4.4-4.6-7.7-4.6-2 0-3.8.6-5.2 1.7-1.9-1.7-4.5-2.9-7.3-2.9-4.6 0-8.5 3.1-9.8 7.4-1.5-1.1-3.4-1.7-5.4-1.7-5.3 0-9.6 4.4-9.6 9.8 0 1.6.4 3.1 1 4.5-2.8 2-4.6 5.3-4.6 9.1 0 6.2 4.9 11.2 10.9 11.2 2.2 0 4.3-.7 6-1.8.9 4.7 5 8.3 9.9 8.3 3.6 0 6.8-2 8.6-4.9 1.2 1.2 2.9 2 4.8 2 3.5 0 6.4-2.8 6.7-6.3.8.3 1.7.5 2.6.5 4.3 0 7.8-3.6 7.8-8 0-.9-.2-1.8-.4-2.6 1.8-1.7 3.1-4.1 3.1-6.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ae.svg b/riot/emojione/svg/1f4ae.svg new file mode 100644 index 0000000..3703f53 --- /dev/null +++ b/riot/emojione/svg/1f4ae.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.1 32.2c3.1-2.8 3.8-5.8 3.9-7.8 0-.5-.2-1-.6-1.3-.4-.3-.9-.4-1.4-.3-1 .2-2.2-.3-2.6-1.3-.5-1.1-.2-2.3.6-3.1.4-.3.6-.8.6-1.3 0-.5-.2-.9-.6-1.2-1-.8-2.1-1.3-3.4-1.6.1-1.8-.3-3.5-1.1-5-.2-.4-.7-.8-1.2-.9-.5-.1-1 .1-1.4.4-.8.7-2 .8-2.9.2-.9-.6-1.3-1.9-.9-2.9.2-.5.1-1-.1-1.4-.3-.4-.7-.7-1.2-.7-2-.3-4 .2-6 1.2-.9-1.2-2-2.2-3.3-2.9-.4-.2-1-.3-1.4-.1-.5.2-.8.6-.9 1.1-.2 1.1-1.1 1.8-2.2 1.8-1.1 0-2-.8-2.3-1.9-.1-.5-.5-.9-.9-1.1-.5-.2-1-.2-1.4.1-1.3.7-2.4 1.7-3.3 2.9-1.9-1.1-3.9-1.5-5.9-1.2-.5.1-.9.3-1.2.8-.3.3-.4.9-.2 1.3.4 1.1 0 2.3-.9 2.9-.8.6-2.1.5-2.9-.2-.4-.3-.9-.5-1.4-.4-.5.1-.9.4-1.2.9-.8 1.5-1.1 3.2-1.1 5-1.1.4-2.3.9-3.3 1.7-.4.3-.6.7-.6 1.2 0 .5.2.9.6 1.3.9.7 1.1 2 .6 3.1-.4.9-1.6 1.5-2.6 1.2-.5-.1-1 0-1.4.3-.4.4-.6.9-.6 1.4.1 2 .8 5 3.9 7.8-3.1 2.8-3.8 5.7-3.9 7.7 0 .5.2 1 .6 1.3.4.3.9.4 1.4.3 1-.2 2.2.3 2.6 1.3.5 1 .2 2.3-.6 3-.4.3-.6.8-.6 1.3 0 .5.2.9.6 1.2 1 .7 2.1 1.3 3.4 1.6-.2 2 .2 3.8 1 5.5.2.5.7.8 1.2.9.5.1 1-.1 1.4-.4.8-.7 2-.8 2.9-.2.9.7 1.3 1.9.9 3-.2.5-.1 1 .1 1.4.3.4.7.7 1.2.8.4 0 .8.1 1.1.1 1.7 0 3.5-.5 5.2-1.5.8 1 1.8 1.8 2.9 2.4.4.2 1 .3 1.4.1.5-.2.8-.6.9-1.1.3-1.1 1.2-1.9 2.3-1.9 1.1 0 2 .8 2.3 1.9.1.5.5.9.9 1.1.2.1.4.1.7.1.3 0 .5-.1.8-.2 1.1-.6 2.1-1.4 2.9-2.4 1.7 1 3.4 1.5 5.2 1.5.4 0 .8 0 1.1-.1.5-.1.9-.3 1.2-.8.3-.4.3-.9.1-1.4-.4-1.1 0-2.3.9-3 .8-.6 2.1-.5 2.9.2.4.3.9.5 1.4.4.5-.1.9-.4 1.2-.9.8-1.7 1.2-3.5 1-5.5 1.3-.3 2.4-.8 3.4-1.6.4-.3.6-.7.6-1.2 0-.5-.2-.9-.6-1.3-.9-.7-1.1-2-.6-3 .5-1 1.6-1.5 2.6-1.3.1 0 .2 0 .4 0 .4 0 .7-.1 1-.4.4-.3.6-.8.6-1.3 0-1.9-.7-4.8-3.8-7.6m-14.3-25.1c0 1.8.9 3.4 2.4 4.5 1.5 1 3.3 1.3 5 .7.1.5.1 1.1.1 1.7-2.3.1-4.7.8-7.3 2.1-.5.3-1.1.6-1.6 1 .1-.7.1-1.3.1-2 0-2.7-.4-5.1-1.1-7.1.8-.5 1.6-.8 2.4-.9m-31 5.2c1.6.5 3.6.3 5-.7 1.5-1 2.4-2.7 2.4-4.5.8.1 1.6.4 2.4.9-.7 2-1.1 4.4-1.1 7.1 0 .6 0 1.3.1 2-.5-.4-1.1-.7-1.6-1-2.6-1.3-5-2-7.3-2.1 0-.6 0-1.2.1-1.7m-2.7 34.5c-.2-.1-.4-.1-.6-.2.8-1.6.9-3.5.1-5.1-.8-1.6-2.3-2.8-4-3.1.4-1.5 1.5-2.9 3-4.2.7.4 1.4.8 2.1 1.2 1.8.9 3.9 1.5 6.3 1.7-1.8 1.4-3.2 2.8-4.3 4.4-1.1 1.8-2 3.5-2.6 5.3m26.4 11.2c-1.1-1.4-2.7-2.3-4.5-2.3-1.8 0-3.5.9-4.5 2.3-.2-.2-.3-.4-.5-.5 1.1-1 2.1-2.3 3.1-3.8.7-1.1 1.4-2.3 1.9-3.8.5 1.4 1.1 2.7 1.9 3.8 1 1.5 2 2.7 3.1 3.8-.1.1-.3.3-.5.5m14.7-5.7c-1.7-.5-3.6-.3-5 .7-1.5 1.1-2.4 2.7-2.4 4.5-2.5-.4-4.9-2.4-7.2-5.7-1.5-2.3-2.5-5.6-3-9.9-.1-.8-.8-1.5-1.6-1.5-.8 0-1.5.6-1.6 1.5-.4 4.3-1.4 7.6-3 9.8-2.3 3.3-4.7 5.3-7.2 5.7 0-1.8-.9-3.5-2.4-4.5-1.5-1-3.4-1.3-5-.7-.5-2.5.4-5.7 2.7-9 1.5-2.2 4.1-4.3 7.8-6.2.7-.3 1-1.1.8-1.9-.2-.7-.8-1.2-1.6-1.2h-.1c-4.3.3-7.8-.2-10.3-1.5-3.6-1.8-5.9-4.1-6.6-6.6 1.8-.3 3.3-1.5 4-3.1.8-1.7.7-3.6-.1-5.2 2.3-.9 5.5-.4 9 1.3 1.6.8 3.2 2.1 4.8 4 .5.6 1.4.7 2.1.3.7-.4 1-1.2.7-2-.9-2.3-1.4-4.4-1.4-6.2 0-4.1.9-7.2 2.8-8.9 1.1 1.4 2.7 2.3 4.5 2.3 1.8 0 3.5-.9 4.5-2.3 1.8 1.8 2.8 4.9 2.8 8.9 0 1.8-.5 3.9-1.4 6.2-.3.7 0 1.6.7 2 .7.4 1.6.2 2.1-.3 1.6-1.8 3.3-3.2 4.8-4 3.6-1.8 6.7-2.2 9-1.3-.8 1.6-.9 3.5-.1 5.2.8 1.7 2.3 2.8 4 3.1-.7 2.5-3 4.8-6.6 6.6-2.5 1.2-6 1.7-10.3 1.5h-.1c-.7 0-1.4.5-1.6 1.2-.2.7.1 1.5.8 1.9 3.7 1.9 6.3 4 7.8 6.3 2.5 3.3 3.4 6.5 2.9 9m3.2-10.9c-.8 1.6-.7 3.5.1 5.1-.2.1-.4.1-.6.2-.6-1.7-1.5-3.5-2.7-5.3-1-1.5-2.5-3-4.3-4.4 2.5-.3 4.6-.8 6.3-1.7.8-.4 1.5-.8 2.1-1.2 1.6 1.3 2.6 2.7 3 4.2-1.6.4-3.1 1.5-3.9 3.1" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4af.svg b/riot/emojione/svg/1f4af.svg new file mode 100644 index 0000000..8bb5a80 --- /dev/null +++ b/riot/emojione/svg/1f4af.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m10.9 3.3c0 0-6.1 15.2-8.9 38.1-.2 2 4.5.2 6.1-.4 3.7-22.5 8.9-38 8.9-38-1.5-.2-6.1.3-6.1.3"/><path d="m37.3 4.9c2.2 3.5 1.2 9.1-.1 14.6-2.2 8.9-7.3 18.1-15.5 18.1-7.8 0-8.6-8.5-6.5-17.1 1.3-5.2 3.3-10.6 6.5-14.2 2.4-2.7 5.7-4.3 9-4.3 3.3 0 5.5.6 6.6 2.9m-15.9 15.7c-1.8 7.3-.9 10.9 1.9 10.9 3 0 5.9-4.6 7.7-12.2 1.7-7.2.9-10.5-2-10.5-2.7 0-5.7 4-7.6 11.8"/><path d="m60.7 5c2.2 3.5 1.2 9.1-.1 14.6-2.2 8.9-7.2 18.1-15.5 18.1-7.8 0-8.6-8.5-6.5-17.1 1.3-5.2 3.3-10.6 6.5-14.2 2.4-2.7 5.8-4.4 9.1-4.4 3.2 0 5.4.6 6.5 3m-15.8 15.6c-1.8 7.3-.9 10.9 1.9 10.9 3 0 5.9-4.6 7.7-12.2 1.7-7.2.9-10.5-2-10.5-2.7 0-5.7 4-7.6 11.8"/><path d="m47.6 48.6c-5.4 0-33.3 2.2-44.4 3.1-.8-2.9.2-5.4 1.5-6.6 5.5-1 42.3-3.9 45.1-2.3-.4 2-1.3 4.5-2.2 5.8"/><path d="m42.9 59.8c-5.5 0-22.9 1.2-34.2 2.2-.8-3.2.2-6 1.5-7.4 5.7-1.2 32.1-3.1 34.9-1.3-.4 2.3-1.2 5.1-2.2 6.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b0.svg b/riot/emojione/svg/1f4b0.svg new file mode 100644 index 0000000..5dcbf7d --- /dev/null +++ b/riot/emojione/svg/1f4b0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M54,46.9C54,59,44.2,59,32,59s-22,0-22-12.1S19.9,15,32,15S54,34.7,54,46.9z" fill="#dbb471"/><g fill="#89664c"><path d="m54 46.9c0-4.1-1.1-9.1-3.1-13.9.4 3.1-.4 8.6-9.9 10.7-13.5 2.9-6.5 6.7-11.8 7.2-4.5.4-16.5-1.4-18.9-8.2-.2 1.5-.4 2.9-.4 4.3.1 12 10 12 22.1 12s22 0 22-12.1" opacity=".5"/><path d="m37.9 41.1c-.4-2-2.1-2.6-3.9-2.7 0-.9 0-1.9 0-2.8.5.2 1.1.5 1.5.8.8.5 1.6-.8.8-1.3-.7-.4-1.5-.8-2.3-1.1 0-1.1 0-2.2 0-3.3 0-1-1.5-1-1.5 0 0 1 0 1.9 0 2.9-.8-.1-1.6-.1-2.4 0-.1-.7-.3-1.4-.5-2.1-.2-1-1.7-.6-1.4.4.2.7.3 1.4.5 2.1-.1 0-.1 0-.2.1-2 .8-3.3 2.8-1.8 4.7.7.9 1.6 1.2 2.6 1.4.1 1.3.1 2.6.1 3.9-.7-.4-1.3-1-1.8-1.5-.7-.7-1.7.4-1.1 1.1.9 1 1.9 1.7 2.9 2.2 0 1.1.1 2.2.2 3.3.1 1 1.6 1 1.5 0-.1-1-.2-1.9-.2-2.9.6.1 1.2.1 1.8.1.1 1 .2 2 .3 3.1.1 1 1.6 1 1.5 0-.1-1.1-.2-2.2-.3-3.4 2.2-.8 4.2-2.5 3.7-5m-5.4-6c0 1.1 0 2.2 0 3.3-.5 0-.9.1-1.3.1-.2 0-.3 0-.5 0-.1-1.2-.2-2.4-.3-3.6.7 0 1.4.1 2.1.2m-3.6 3.2c-.4-.1-.8-.4-1.2-.7-.9-.9.4-1.7 1.2-2.1.1 1 .2 1.9.3 2.9-.1 0-.2 0-.3-.1m3.3 6.4c-.5.1-.9 0-1.3-.1-.1-1.5-.1-3-.1-4.6.6 0 1.2-.1 1.8-.1 0 1.6.1 3.1.1 4.7-.2.1-.3.1-.5.1m3.3-1.1c-.4.3-.9.5-1.3.7-.1-1.5-.1-2.9-.1-4.4.2 0 .4 0 .5 0 1.9.4 2.4 2.5.9 3.7"/></g><path fill="#699635" d="m34 55h-2.3v4l9.3 5 21-6.5v-3.5l-7.7-4.5z"/><path d="m32 52.7c0 0 2.4 3.9 9.2 7.3 0 0 10.6-.5 20.8-7.3 0 0-5.9-2.9-7.6-6.7 0 0-4 5.6-22.4 6.7" fill="#83bf4f"/><path fill="#699635" d="m27.5 54.9l2.2-.1.3 3.7-8.7 5.5-20.9-4.5-.3-3.3 7.1-4.9z"/><path d="m29.2 52.6c0 0-2.1 3.9-8.4 7.6 0 0-10.3.3-20.8-5.2 0 0 5.6-3.2 6.9-7 0 0 4.4 5 22.3 4.6" fill="#83bf4f"/><path d="m24.2 53.7c0 0-.3.8 1.1.9l-3.7 3.1c0 0-2.2-.2-2.7 1.3 0 0-9-1-14.8-3.6 0 0 1.2-.9-.3-1.5 0 0 1.7-1.2 2.1-2.3 0 0 1.6.2 2.1-1 .2-.1 6.2 3.5 16.2 3.1z" fill="none" stroke="#699635" stroke-miterlimit="10"/><ellipse cx="8.8" cy="53.8" rx="1.9" ry="1.3" fill="#699635"/><g fill="#f9f3d9"><path d="m19 52.2c0 0-2.3 3-7.3 7.1l.3 2.7-3.5-.8-.2-2.9c0 0 5.1-4.7 6.2-7-.1 0 1.7.6 4.5.9"/><path d="m42.1 51.5c0 0 .9 2.4 7.7 6.8v2.9l3.9-1.2v-3c0 0-4.7-3.3-7.5-6.6l-4.1 1.1"/></g><path fill="#699635" d="m36.4 48.3l-2.2-.1-.2 4.1 8.9 5.7 20.9-5.7.1-3.6-7.3-5.1z"/><path d="m34.6 45.8c0 0 2.2 4.2 8.7 8 0 0 10.4 0 20.7-6.4 0 0-5.7-3.3-7.1-7.4 0 0-4.3 5.6-22.3 5.8" fill="#83bf4f"/><path d="m39.1 46.9c0 0 .5.8-1.1 1.1l4.2 3.3c0 0 2.4-.6 3.2.8 0 0 10-1.8 14.6-4.2 0 0-1.5-.7 0-1.6 0 0-1.8-1.5-2.5-2.5 0 0-1.7.5-2.6-.7 0 .1-3.6 3.3-15.8 3.8z" fill="none" stroke="#699635" stroke-miterlimit="10"/><path d="m46.8 49.4c-.4.5-1.7.7-2.8.4-1.1-.3-1.6-1-1.2-1.5.4-.5 1.7-.7 2.8-.4 1.1.3 1.6.9 1.2 1.5" fill="#699635"/><path d="m44.8 45c0 0 2.4 3.2 7.5 7.5l-.1 3 3.5-1 .1-3.2c0 0-5.2-5-6.5-7.4.1 0-1.6.7-4.5 1.1" fill="#f9f3d9"/><path d="m46 2c0 6.1-7.9 16-14 16s-14-8.9-14-15c0-6.1.9 0 7 0 .9 0 5.1-3 7-3 1.3 0 5 3 7 3 5.3 0 7-5.6 7-1" fill="#dbb471"/><path d="m30.2 13.3c-.6.4-3.5.1-4.4.8-1.2.9.5 3-.7 4.3-2.4 2.4-4.3 5.1-3.7 6.6 1 2.6 2.9-4.8 4.6-2s1.4-1.9 4 .5.4-4.3 2.9-1.4 2.6 6.2 4.4 6.2c2.1 0-2.2-7.9.6-6s5.9 1.2 3.1-1.7c-.9-.9-2.1-2.5-3.5-3.9-.5-.5-.1-3.1-.6-3.5-.6-.5-2.1 1.1-2.7.8-1.2-.6-.8.5-2.6.8-1.2.4-.2-2.3-1.4-1.5" fill="#89664c"/><path d="m18.7 19.2c3.9-3.7 11-1.6 15.2.2 4.1 1.8 6.6-3.9 4-6.8-1.5-1.7-3.9.3-4.8 1.5-1 1.2-1.8 2.5-2.9 3.7-1.6 1.8-5.5.3-4.3-2.2 1.3-2.6 6.8.4 8.6.9 3.5 1 7.2 1.4 10.7.1 1.2-.4.7-2.4-.5-1.9-3.9 1.4-7.8.5-11.5-.7-1.9-.6-4.9-2.2-6.9-1.3-5.7 2.7-.4 10.4 4.4 7.4 1.1-.7 1.8-1.8 2.6-2.8.5-.6 3-4.4 3.6-2.5.3 1 0 2.8-1.1 3.1-.7.3-2.1-.7-2.8-.9-1.3-.5-2.6-.9-4-1.2-3.7-.8-8.7-.6-11.6 2.1-1 .8.4 2.2 1.3 1.3" fill="#e8e8e8"/><path d="m44.8.5c-1 .8-2.8 2.5-5.8 2.5-2 0-5.7-3-7-3-1.9 0-6.1 3-7 3-3.3 0-5.1-1.7-6-2.4 0 0 1.1 4.5 4.5 6.8 2.5 1.6 2.2-.3 3.5-2.1s2.2-2.7 4.5 1.8c1.2 2.5 3.5-6.8 5.3-3.8 3.3 5.5 4.5 2.5 8-2.8" fill="#89664c"/><g fill="#dbb471"><path d="m52.4 52.4l-.1 3 3.5-1 .1-3.2c0 .1-2.1.9-3.5 1.2"/><path d="m49.8 58.4v2.9l3.9-1.2v-3c-.1-.1-1.1.5-3.9 1.3"/><path d="m11.7 59.2l.3 2.8-3.5-.8-.2-2.9c-.1 0 1.3.5 3.4.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b1.svg b/riot/emojione/svg/1f4b1.svg new file mode 100644 index 0000000..350402b --- /dev/null +++ b/riot/emojione/svg/1f4b1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m25.4 15.1h-16.8c-1.6 0-2.8-1.3-2.8-2.8s1.2-2.8 2.8-2.8h16.9c1.6 0 2.8 1.3 2.8 2.8h3.7c0-3.6-2.9-6.6-6.6-6.6h-6.6v-3.7h-3.8v3.8h-6.4c-3.7 0-6.6 2.9-6.6 6.5 0 3.6 2.9 6.6 6.6 6.6h16.9c1.6 0 2.8 1.3 2.8 2.8 0 1.6-1.3 2.8-2.8 2.8h-16.9c-1.6 0-2.8-1.3-2.8-2.8h-3.8c0 3.6 2.9 6.6 6.6 6.6h6.6v3.7h3.8v-3.8h6.6c3.6 0 6.6-2.9 6.6-6.6-.2-3.5-3.1-6.5-6.8-6.5"/><path d="m42.1 22.7l-4.9 4.9 15.2.6-.6-15.2-4.9 4.9-13-8.2z"/><path d="m19.8 36.7l.7 15.2 4.6-4.6 13.3 7.9-8-13.2 4.7-4.6z"/><path d="m53.5 43.2l8.5-8.6-2.6-2.6-7.7 7.9-7.8-7.9-2.5 2.6 8.4 8.6h-3.8v3.8h3.8v3.8h-3.8v3.7h3.8v7.5h3.8v-7.5h3.8v-3.7h-3.8v-3.8h3.8v-3.8h-3.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b2.svg b/riot/emojione/svg/1f4b2.svg new file mode 100644 index 0000000..1241977 --- /dev/null +++ b/riot/emojione/svg/1f4b2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.9 28.2h-33.8c-3.1 0-5.6-2.5-5.6-5.6 0-3.1 2.5-5.6 5.6-5.6h33.8c3.1 0 5.6 2.5 5.6 5.6h7.5c0-7.2-5.9-13.1-13.1-13.1h-13.1v-7.5h-7.5v7.5h-13.2c-7.2 0-13.1 5.9-13.1 13.1s5.9 13.1 13.1 13.1h33.8c3.1 0 5.6 2.5 5.6 5.6 0 3.1-2.5 5.6-5.6 5.6h-33.8c-3.1 0-5.6-2.5-5.6-5.6h-7.5c0 7.2 5.9 13.1 13.1 13.1h13.1v7.6h7.5v-7.5h13.1c7.2 0 13.1-5.9 13.1-13.1s-5.8-13.2-13-13.2" fill="#4d5357"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b3.svg b/riot/emojione/svg/1f4b3.svg new file mode 100644 index 0000000..289be20 --- /dev/null +++ b/riot/emojione/svg/1f4b3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62.5 22.3c1.7 1.7 2 4.2.8 5.7l-29.6 34.4c-1.8 2.1-4.9 2.1-7 .1l-25.2-25.2c-2-2-2-5.2.1-7l34.3-29.5c1.5-1.3 4-.9 5.7.8l20.9 20.7" fill="#afcddb"/><path fill="#333" d="M50.8 10.7 12.6 48.4 3.7 39.5 43.5 3.4z"/><path fill="#fff" d="M49.4 18.3 22.6 45.8 29.8 53 55.7 24.6z"/><g fill="#4f5b60"><path d="m34.1 43.3c-1.5-1.4-.6-4-.1-5.4.9-2.2 1.8 2 1.8 2.7.2 2.1-.1 4.3-.6 6.4-.3 1.2-.7 2.3-1.3 3.4-.3.7-.8 1.3-1.4 1.7-1.5.9-2.4 0-2.7-2.5.2-.8.5-1.5 1.1-2.1 1.9-2.4 4.9-3.5 7.1-5.4.2-.2-.1-.5-.3-.3-2.6 2.2-8 4-8.3 8.3-.2 2.8 2.7 3.5 4.2 1.9 2-2.1 2.5-5.8 2.7-8.6.1-1.6.5-6.2-1.9-6.7-.1 0-.2 0-.2.1-1 1.7-2.3 5.2-.3 7 .1.1.4-.3.2-.5"/><path d="m37.4 41.7c2.1 1.2 2.7-3.5 2.4-4.8 0-.2-.3-.2-.4-.1-1.1.9-1.3 3.3-.4 4.7.1.2.3.2.4 0 .7-1.3 1.1-2.6 1.6-4 .2-.6.7-.4 1.1-.8.8-.8 1.6-1.6 2.4-2.4 1-1 1.3-2.4 2.2-3.4 1.2-1.3 2.3-1.9 2.9-3.7.1-.4.1-1.4-.6-1.4-1.4-.1-2.6 2.8-.7 2.5 2.2-.3 4.2-2.9 5.6-4.3.2-.2-.1-.5-.3-.3-.7.7-1.5 1.4-2.2 2-.6.5-1.2 1-1.9 1.5-.3.2-2.9 1.4-1.3-.5.3.2.6.4.9.7-.1.2-.2.5-.3.7-.2.4-.5.8-.8 1.2-.5.7-1.4 1.1-2 1.8-.8.9-1.1 2.1-1.9 3-.4.4-2.3 2.9-3 2.6-.1 0-.2 0-.2.1-.2.7-.4 1.3-.7 2-.1.2-1 2.1-1 2.2-.4-1-.3-2.2.1-3.1.3.5.3 1.1.1 1.6-.2 1.2-.8 1.9-1.8 2.1-.3-.5-.5-.1-.2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b4.svg b/riot/emojione/svg/1f4b4.svg new file mode 100644 index 0000000..73ada09 --- /dev/null +++ b/riot/emojione/svg/1f4b4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#89664c" d="m0 46.5h64v9h-64z"/><path fill="#d3976e" d="m0 8.5h64v38h-64z"/><path fill="#94989b" d="m24 46.5h16v9h-16z"/><path fill="#89664c" d="m4 12.5h56v30h-56z"/><path fill="#d3976e" d="m7 15.5h50v24h-50z"/><circle cx="45" cy="27.5" r="8" fill="#89664c"/><path fill="#d0d0d0" d="m24 8.5h16v38h-16z"/><path fill="#fff" d="m22 21.2l-1.2-1.7-4.8 4.6-4.8-4.6-1.2 1.7 4.5 4.3h-2.3v2.2h2.8v2.3h-2.8v2.2h2.8v3.3h2v-3.3h2.8v-2.2h-2.8v-2.3h2.8v-2.2h-2.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b5.svg b/riot/emojione/svg/1f4b5.svg new file mode 100644 index 0000000..a6723a2 --- /dev/null +++ b/riot/emojione/svg/1f4b5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#699635" d="m0 46.5h64v9h-64z"/><path fill="#83bf4f" d="m0 8.5h64v38h-64z"/><path fill="#94989b" d="m24 46.5h16v9h-16z"/><path fill="#699635" d="m4 12.5h56v30h-56z"/><path fill="#83bf4f" d="m7 15.5h50v24h-50z"/><circle cx="45" cy="27.5" r="8" fill="#699635"/><path fill="#d0d0d0" d="m24 8.5h16v38h-16z"/><path d="m16 26.5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2h2c0-1.9-1.3-3.4-3-3.9v-1.1h-2v1.1c-1.7.4-3 2-3 3.9 0 2.2 1.8 4 4 4 1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2h-2c0 1.9 1.3 3.4 3 3.9v1.1h2v-1.1c1.7-.4 3-2 3-3.9 0-2.2-1.8-4-4-4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b6.svg b/riot/emojione/svg/1f4b6.svg new file mode 100644 index 0000000..4ab3762 --- /dev/null +++ b/riot/emojione/svg/1f4b6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#428bc1" d="m0 46.5h64v9h-64z"/><path fill="#42ade2" d="m0 8.5h64v38h-64z"/><path fill="#94989b" d="m24 46.5h16v9h-16z"/><path fill="#428bc1" d="m4 12.5h56v30h-56z"/><path fill="#42ade2" d="m7 15.5h50v24h-50z"/><circle cx="45" cy="27.5" r="8" fill="#428bc1"/><path fill="#d0d0d0" d="m24 8.5h16v38h-16z"/><path d="m19.3 33.5c-2.2 0-4.2-1.2-5.2-3h6.7v-2h-7.4c-.1-.3-.1-.7-.1-1s0-.7.1-1h7.4v-2h-6.7c1.1-1.8 3-3 5.2-3 .4 0 .8 0 1.2.1l.5-2c-.5-.1-1.1-.2-1.7-.2-3.4 0-6.4 2.1-7.6 5h-2.7v2h2.2c0 .3-.1.7-.1 1s0 .7.1 1h-2.2v2h2.7c1.2 2.9 4.2 5 7.6 5 .6 0 1.1-.1 1.7-.2l-.5-2c-.3.3-.8.3-1.2.3" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b7.svg b/riot/emojione/svg/1f4b7.svg new file mode 100644 index 0000000..59a5f52 --- /dev/null +++ b/riot/emojione/svg/1f4b7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#9450e0" d="m0 46.5h64v9h-64z"/><path fill="#c28fef" d="m0 8.5h64v38h-64z"/><path fill="#94989b" d="m24 46.5h16v9h-16z"/><path fill="#9450e0" d="m4 12.5h56v30h-56z"/><path fill="#c28fef" d="m7 15.5h50v24h-50z"/><circle cx="45" cy="27.5" r="8" fill="#9450e0"/><path fill="#d0d0d0" d="m24 8.5h16v38h-16z"/><path d="m16 30.4c0-.3 0-.6-.1-1h2.9v-2.4h-4.1c-.1-.1-.1-.1-.1-.2-.1-.2-.3-.4-.4-.5-.6-.8-.9-1.2-.9-1.9 0-1.5 1.2-2.7 2.8-2.7 1.5 0 2.8 1.2 2.8 2.7h2.1c0-2.7-2.2-4.9-5-4.9-2.8 0-5 2.2-5 4.9 0 1.1.5 1.9 1 2.6h-1v2.3h2.5c.2.5.2.8.2 1 0 1.8-1.8 2.9-2.8 3v2.2h10v-2.2h-6c.7-.8 1.1-1.8 1.1-2.9" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b8.svg b/riot/emojione/svg/1f4b8.svg new file mode 100644 index 0000000..8e90f8e --- /dev/null +++ b/riot/emojione/svg/1f4b8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m61 20.9c-6.2-5.6-12.4-11.3-18.6-16.9-9.1 13.8-24.5 26.1-39.1 35-.4 1.9-.8 3.7-1.3 5.5 6.4 5.8 12.8 11.7 19.2 17.5 15.1-8.3 31.1-20.1 40.8-33.5-.3-2.5-.7-5-1-7.6" fill="#699635"/><path d="m22.4 54.6c-6.3-5.8-12.6-11.6-18.9-17.3 15.7-8.9 28.9-21 38.6-35.3 6.3 5.8 12.6 11.5 18.9 17.3-9.7 14.3-22.9 26.4-38.6 35.3" fill="#83bf4f"/><g fill="#699635"><path d="m20.8 50.8c-4.2-3.8-8.4-7.7-12.6-11.5.3-.2.5-.3.8-.5.8-.5 1-1.4.3-2.1-.2-.2-.4-.4-.6-.6 12.7-7.8 23.7-17.8 32.3-29.4.2.2.4.4.6.6.7.6 1.7.5 2.3-.2.2-.2.3-.5.5-.7 4.2 3.8 8.4 7.7 12.6 11.5-.2.2-.3.5-.5.7-.6.8-.5 1.9.2 2.6.2.2.4.4.6.6-8.6 11.5-19.6 21.5-32.3 29.3-.2-.2-.4-.4-.6-.6-.7-.6-1.9-.7-2.8-.2-.3.2-.5.3-.8.5m-9.9-11.4c3.4 3.1 6.8 6.2 10.3 9.4 1.3-.4 2.8-.3 4 .3 11.6-7.4 21.7-16.6 29.8-27.3-.7-1.1-.8-2.5-.3-3.7-3.4-3.1-6.8-6.2-10.3-9.4-.9.8-2.2.9-3.3.3-8.1 10.8-18.2 20-29.8 27.4.6 1 .5 2.2-.4 3"/><path d="m20 37.3c1.1-.4 2.3-.3 3.1.4-.5.4-1.1.8-1.6 1.2-.2-.2-.7-.2-.9 0-.3.2-.4.5-.1.7.2.2.7.2 1 0 1.2-.8 2.9-.9 3.8 0 .7.7.8 1.7.1 2.5.2.2.4.3.6.5-.5.3-1 .7-1.5 1-.2-.2-.4-.4-.6-.5-1.1.3-2.3.2-3-.5.6-.4 1.1-.7 1.7-1.1.2.2.7.2 1 0 .3-.2.3-.5.1-.7-.2-.2-.6-.2-.9 0-.7.5-1.6.7-2.4.6-.6-.1-1.1-.3-1.5-.6-.7-.7-.7-1.6-.1-2.4-.2-.1-.3-.3-.5-.5.5-.3 1-.7 1.5-1-.1.1.1.2.2.4"/><path d="m43.2 15.9c.9-.6 2-.6 2.7.1-.4.5-.8 1-1.2 1.5-.2-.2-.6-.2-.8.1-.2.3-.2.7 0 .9s.6.2.8-.1c.9-1.1 2.4-1.3 3.3-.5.7.7.9 1.8.5 2.8.2.2.4.3.6.5-.4.5-.7.9-1.1 1.4-.2-.2-.4-.4-.6-.5-.9.5-1.9.5-2.6-.2.4-.5.9-1 1.3-1.5.2.2.6.2.8-.1s.2-.7 0-.9c-.2-.2-.6-.2-.8.1-.5.6-1.3 1-2 1-.5 0-1-.2-1.4-.5-.7-.7-.9-1.7-.5-2.7-.2-.1-.3-.3-.5-.5.4-.4.8-.9 1.1-1.4 0 .2.2.3.4.5"/><path d="m40.2 35.5c-3.2 2.9-8.6 2.8-11.7 0-3.1-2.9-2.9-7.4.3-10.3 3.2-2.9 8.2-3.2 11.3-.3 3.2 2.8 3.3 7.7.1 10.6"/></g><path d="m21.8 24.5l18.9 17.3c2.2-1.8 4.2-3.7 6.2-5.7l-18.8-17.3c-2 1.9-4.1 3.8-6.3 5.7" fill="#ffdd7d"/><path d="m40.8 49.4c2.1-1.6 4.2-3.3 6.2-5v-8.4c-2 2-4.1 3.9-6.2 5.7v7.7" fill="#dbb471"/><path d="m12.1 24.7c1.1-.4 2-1 2.9-1.7.9-.7 1.7-1.4 2.6-2.2.9-.7 1.8-1.5 2.8-2 1-.6 2.3-.9 3.4-.7-1.1.2-2.1.7-3 1.4-.9.6-1.7 1.4-2.6 2.1-.9.7-1.8 1.5-2.8 2.1-1 .6-2.2 1-3.3 1" fill="#8d9998" id="0"/><path d="m39.8 33.1c0 0 4.9 1.4 16.3-1.6 11.4-3 6 29.8-14.8 29.8-2.3 0-2.4-2.9 4-8.1 0 0-9 2.1-5.1-4.6 0 0-6.4 1.1-3.5-4 0 0 1.3-3.8.1-8.1.1 0 .8-2.2 3-3.4" fill="#e8e8e8"/><g fill="#d1d1d1"><path d="m61.5 34.7c.2 8.8-6.8 23.4-20.7 23.4-.1 0-.1 0-.2 0-1.3 2.1-.7 3.3.7 3.3 15.8-.1 22.7-18.9 20.2-26.7"/><path d="m54.3 39.5c-3 10.8-15 11.7-15 11.7-.5 2.3.5 3.3 1.8 3.3 4.4.1 12.6-7.2 13.2-15"/><path d="m45.9 39.5c-7.1 10-9.6 6.3-9.6 6.3-1.8 4 2.9 4 3.7 3.1 2.3-2.5 6-7.7 5.9-9.4"/></g><g fill="#8d9998"><path d="m40.5 58.4c1.2-1.6 2.7-2.9 4.2-4.2 1.5-1.3 3-2.6 4.5-4 1.4-1.4 2.8-3 3.8-4.8 1-1.8 1.5-3.9 1.3-5.9-.2 2-.9 3.9-2 5.5-1.1 1.6-2.4 3.1-3.8 4.5-1.4 1.4-2.9 2.7-4.3 4.2-1.5 1.3-2.8 2.9-3.7 4.7"/><path d="m39.3 51.2c.4-1.1 1-2 1.7-2.9.7-.9 1.4-1.7 2.2-2.6.7-.9 1.5-1.8 2-2.8.6-1 .9-2.3.7-3.4-.2 1.1-.7 2.1-1.4 3-.6.9-1.4 1.7-2.1 2.6-.7.9-1.5 1.8-2.1 2.8-.6 1-1 2.2-1 3.3"/></g><path d="m30.2 24.2c0 0-1.4-4.9 1.6-16.3 3-11.4-29.8-6-29.8 14.8 0 2.3 2.9 2.4 8.1-4 0 0-2.1 9 4.6 5.1 0 0-1.1 6.4 4 3.5 0 0 3.8-1.3 8.1-.1 0-.1 2.2-.8 3.4-3" fill="#e8e8e8"/><g fill="#d1d1d1"><path d="m28.6 2.5c-8.8-.2-23.4 6.8-23.4 20.7 0 .1 0 .1 0 .2-2.1 1.2-3.2.7-3.2-.7 0-15.8 18.8-22.7 26.6-20.2"/><path d="m23.8 9.7c-10.8 3-11.7 15-11.7 15-2.3.5-3.3-.5-3.3-1.8-.1-4.4 7.2-12.6 15-13.2"/><path d="m23.8 18.1c-10 7.1-6.3 9.6-6.3 9.6-4 1.8-4-2.9-3.1-3.7 2.5-2.3 7.7-6 9.4-5.9"/></g><path d="m4.9 23.5c1.6-1.2 2.9-2.7 4.2-4.2 1.3-1.5 2.6-3 4-4.5 1.4-1.4 3-2.8 4.8-3.8 1.8-1 3.9-1.5 5.9-1.3-2 .2-3.9.9-5.5 2-1.6 1.1-3.1 2.4-4.5 3.8-1.4 1.4-2.7 2.9-4.2 4.3-1.4 1.5-2.9 2.8-4.7 3.7" fill="#8d9998"/><use xlink:href="#0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4b9.svg b/riot/emojione/svg/1f4b9.svg new file mode 100644 index 0000000..b794bad --- /dev/null +++ b/riot/emojione/svg/1f4b9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4bd37b"/><g fill="#fff"><path d="m34.1 18.8l8.9-8.8h-6.1l-4.9 4.9-4.9-4.9h-6.1l8.8 8.8h-4.5v4.3h4.5v4.3h-4.5v4.3h4.5v4.3h4.3v-4.3h4.6v-4.3h-4.6v-4.3h4.6v-4.3h-4.6"/><path d="m50.1 32.8l-4.3-2.9-6.8 11.9-5-2.8-4 7.7-4.5-3.2-6.5 8.7c1.4.7 2.8 1.3 4.3 1.8l3.2-4.4 5.1 3.6 4.4-8.2 4.9 2.7 6.6-11.5 4 2.7 5.7-8.5c0-2.2-.4-4.4-1.1-6.5l-6 8.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ba.svg b/riot/emojione/svg/1f4ba.svg new file mode 100644 index 0000000..a961080 --- /dev/null +++ b/riot/emojione/svg/1f4ba.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m54.5 32c.2 2.2-1.3 4-3.4 4h-38.2c-2.1 0-3.6-1.8-3.4-4l2.1-22.2c.2-2.2 2.1-4 4.2-4h32.4c2.1 0 4 1.8 4.2 4l2.1 22.2" fill="#b4d7ee"/><g fill="#3e4347"><path d="m8.9 30.5h6v8h-6z"/><path d="m49.1 30.5h6v8h-6z"/><path d="m14.6 50.9h6v10.1h-6z"/><path d="m43.4 50.9h6v10.1h-6z"/></g><path d="m41.4 25c-.3 2.6-2.4 4.8-4.5 4.8h-9.8c-2.2 0-4.2-2.1-4.5-4.8l-1.8-14.6c-.3-2.6 1.2-4.8 3.3-4.8h15.7c2.2 0 3.7 2.2 3.3 4.8l-1.7 14.6" fill="#428bc1"/><g fill="#94989b"><path d="m23 58.9c-.2-.5-.8-1-1.3-1h-8c-.6 0-1.1.4-1.3 1l-1.5 4.1c-.2.5.1 1 .7 1h12c.6 0 .9-.4.7-1l-1.3-4.1"/><path d="m53.1 63l-1.4-4.1c-.2-.5-.8-1-1.3-1h-8c-.6 0-1.1.4-1.3 1l-1.4 4.1c-.2.5.1 1 .7 1h12c.5 0 .8-.4.7-1"/></g><g fill="#29abe2"><path d="m46.2 6c0 2.2-1.7 4-3.8 4h-20.9c-2.1 0-3.8-1.8-3.8-4v-2c0-2.2 1.7-4 3.8-4h20.9c2.1 0 3.8 1.8 3.8 4 0 0 0 2 0 2"/><path d="m15.5 29.2l-.3-2.1c-.2-1.1-1.1-2-2.1-2h-2.7c-1 0-1.9.9-2.1 2l-.3 2.1c-.2 1.1.5 2 1.5 2h4.5c1 0 1.7-.9 1.5-2"/><path d="m55.8 29.2l-.3-2.1c-.2-1.1-1.1-2-2.1-2h-2.7c-1 0-1.9.9-2.1 2l-.3 2.1c-.2 1.1.5 2 1.5 2h4.5c1 0 1.6-.9 1.5-2"/><path d="m51.5 36h-39c-3.1 0-5 3-4.4 6.7l.4 2.6c.6 3.7 3.7 6.7 6.7 6.7h33.4c3.1 0 6.1-3 6.7-6.7l.5-2.6c.7-3.6-1.3-6.7-4.3-6.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4bb.svg b/riot/emojione/svg/1f4bb.svg new file mode 100644 index 0000000..de2b138 --- /dev/null +++ b/riot/emojione/svg/1f4bb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#212528"><path d="m7.3 53.8h49.4c.8 0 1.4-.6 1.4-1.4v-33c0-.8-.6-1.4-1.4-1.4h-49.4c-.7 0-1.3.6-1.3 1.4v33c0 .8.6 1.4 1.3 1.4"/><path d="M2,58.7C2,60.3,3.3,62,5,62h54c1.6,0,3-1.7,3-3.3H2z"/></g><path fill="#ddd" d="m57 53.8h-50l-5 4.9h60z"/><path fill="#bfbebe" d="m55.3 54.2h-46.6l-1.7 2h50z"/><path fill="#212528" d="m37.1 57.1h-10.2l-.8 1.1h11.8z"/><path fill="#3e4347" d="m9 21h46v29.8h-46z"/><circle cx="32" cy="19.6" r=".8" fill="#ddd"/><path d="m36.3 60.8h-8.6c-.3 0-1.1 0-1.1-1h10.8c0 1-.8 1-1.1 1" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4bc.svg b/riot/emojione/svg/1f4bc.svg new file mode 100644 index 0000000..16fd4d5 --- /dev/null +++ b/riot/emojione/svg/1f4bc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,55.6c0,3.6-9,3.4-9,3.4l-25.1-6.3c-1.8-0.4-3.2-2.3-3.2-4.3V27L62,29.1V55.6z" fill="#5f6262"/><path d="m60.2 13.4c0 0-1.4-.2-1.4-.2l-7 3.4-1 44.1c5.8-4.9 11.2-5 11.2-5v-38.4c0-1.6-.7-3-1.8-3.9" fill="#343434"/><path d="m52.2 56.7c0 3.6-2.6 5.9-5.7 5.2l-39.2-9.6c-2.3-.6-4.2-3.5-4.2-6.5v-32.3l49.1 3.2v40" fill="#5f6262"/><path d="m52.9 32.6c0 3.6-3 6.3-6.1 5.7l-39.3-6.5c-2.3-.4-4.2-3.2-4.2-6.2l1.3-13.2 48.5 3.9-.2 16.3" fill="#343434"/><path d="m4.6 11.5c-3.7 2.5-3.7 17.9 1.7 17.9l39.3 6.1c3.1.5 5.7-2.1 5.7-5.7 0 0-1.2-11.7 1-13.2l1.8-.8-49.5-4.3" fill="#5f6262"/><path fill="#65562d" d="m31 26.6l-10.6-1.4-1.9 7.4 1.9 5.5 10.6 1.9z"/><path fill="#f8ecc5" d="m20.4 25.2l-1.9 7.4 10.6 1.6 1.9-7.6z"/><path fill="#bfae6e" d="m20.4 38.1l10.6 1.9-1.9-5.8-10.6-1.6z"/><path d="m56.7 12.2l-35.9-3.2-13.6 1.6-.6.1c-.7.1-1.4.4-1.9.8l47.7 5.2 5-2.2c4.1-2 4.6 1.6 4.6 1.6-.6-3.2-3.5-3.7-5.3-3.9" fill="#919193"/><path d="m18.7 10.2c0-4.3 3.4-4.5 4.2-4.8.7-.2 1.2-.9 1-1.5-.2-.6-.9-.7-1.6-.7-2.3 0-6.3 1-6.3 7 .1.7 2.7.7 2.7 0" fill="#bfae6e"/><path d="m18.2 9.9c-.1-.6-.1-1.2.1-1.8.1-.6.4-1.2.8-1.6.4-.5 1-.8 1.5-1 .6-.2 1.2-.3 1.8-.3-.6.2-1.1.4-1.6.6-.5.3-1 .6-1.3 1-.8.8-1.1 1.9-1.3 3.1" fill="#65562d"/><path d="m43.7 6.9c-.1 1.7-1.6 3-3.3 2.8l-18.5-1.5c-1.7-.1-3-1.6-2.8-3.3.1-1.7 1.6-3 3.3-2.8l18.4 1.5c1.8.1 3.1 1.6 2.9 3.3" fill="#5f6262"/><path d="m43.7 6.9c-.1 1.1-1.5 1.8-3.2 1.6l-18.5-1.5c-1.7-.1-3-1.1-2.9-2.2.1-1.1 1.5-1.8 3.2-1.7l18.4 1.5c1.8.3 3.1 1.2 3 2.3" fill="#343434"/><path d="m44 13.1c0-2.6-1.9-4.2-3-4.7-1.7-.7-.3-3.7 1.3-2.9 2 .9 4.7 3.7 4.7 7.6.1.9-3 .9-3 0" fill="#bfae6e"/><path d="m44.4 13.1c-.2-1.2-.5-2.3-1.2-3.2-.6-.9-1.4-1.8-2.4-2.4.6.1 1.1.4 1.6.8.5.4.9.8 1.2 1.3.7 1.1 1 2.3.8 3.5" fill="#65562d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4bd.svg b/riot/emojione/svg/1f4bd.svg new file mode 100644 index 0000000..f37c163 --- /dev/null +++ b/riot/emojione/svg/1f4bd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 57.6c0 3.5-2.9 6.4-6.4 6.4h-51.2c-3.5 0-6.4-2.9-6.4-6.4v-51.2c0-3.5 2.9-6.4 6.4-6.4h51.2c3.5 0 6.4 2.9 6.4 6.4v51.2" fill="#3e4347"/><circle cx="32" cy="32" r="32" fill="#42ade2"/><path d="m32 40.4c-4.6 0-8.4-3.8-8.4-8.4s3.8-8.4 8.4-8.4c4.6 0 8.4 3.8 8.4 8.4s-3.8 8.4-8.4 8.4" fill="#fff"/><path d="m38.4 24c-3.5 0-6.4 2.9-6.4 6.4v3.2c0 3.5 2.9 6.4 6.4 6.4h25.6v-16h-25.6" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4be.svg b/riot/emojione/svg/1f4be.svg new file mode 100644 index 0000000..9eba4f9 --- /dev/null +++ b/riot/emojione/svg/1f4be.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.3 9.3l-6.6-6.6c-.4-.4-1.2-.7-1.7-.7h-44v4h-4v-4h-2c-.5 0-1 .5-1 1v58c0 .5.5 1 1 1h58c.5 0 1-.5 1-1v-50c0-.6-.3-1.3-.7-1.7" fill="#3e4347"/><path d="m12 62v-28c0-1.1.9-2 2-2h36c1.1 0 2 .9 2 2v28h-40" fill="#fff"/><path d="m18 2v20c0 1.1.9 2 2 2h30c1.1 0 2-.9 2-2v-20h-34" fill="#e8e8e8"/><path fill="#3e4347" d="m36 6h10v16h-10z"/><path d="m59 56c0-.6-.5-1-1-1h-2c-.5 0-1 .4-1 1v2c0 .5.5 1 1 1h2c.5 0 1-.5 1-1v-2" fill="#fff"/><g fill="#f15744"><path d="m12 54h40v8h-40z"/><path d="m17 36h30v2h-30z"/><path d="m17 42h30v2h-30z"/><path d="m17 48h30v2h-30z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4bf.svg b/riot/emojione/svg/1f4bf.svg new file mode 100644 index 0000000..eac0a2a --- /dev/null +++ b/riot/emojione/svg/1f4bf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#d0d0d0"/><g fill="#fff"><circle cx="32" cy="32" r="6.6"/><path d="m32.2 42.6l9.2 13.6c6.8-2.6 12.2-8 14.8-14.8l-13.6-9.2c-.1 5.7-4.7 10.3-10.4 10.4"/><path d="m31.8 21.4l-9.2-13.6c-6.8 2.6-12.2 8-14.8 14.8l13.6 9.2c.1-5.7 4.7-10.3 10.4-10.4"/></g><path d="m32 45c-7.1 0-13-5.8-13-13 0-7.1 5.8-13 13-13 7.1 0 13 5.8 13 13 0 7.1-5.9 13-13 13m0-23.3c-5.7 0-10.3 4.6-10.3 10.3s4.6 10.3 10.3 10.3c5.7 0 10.3-4.6 10.3-10.3s-4.6-10.3-10.3-10.3" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c0.svg b/riot/emojione/svg/1f4c0.svg new file mode 100644 index 0000000..2547f71 --- /dev/null +++ b/riot/emojione/svg/1f4c0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#c28fef"/><circle cx="32" cy="32" r="6.6" fill="#fff"/><g fill="#ffc7ce"><path d="m32.2 42.6l9.2 13.6c6.8-2.6 12.2-8 14.8-14.8l-13.6-9.2c-.1 5.7-4.7 10.3-10.4 10.4"/><path d="m31.8 21.4l-9.2-13.6c-6.8 2.6-12.2 8-14.8 14.8l13.6 9.2c.1-5.7 4.7-10.3 10.4-10.4"/></g><path d="m32 45c-7.1 0-13-5.8-13-13 0-7.1 5.8-13 13-13s13 5.8 13 13c0 7.1-5.9 13-13 13m0-23.3c-5.7 0-10.3 4.6-10.3 10.3s4.6 10.3 10.3 10.3c5.7 0 10.3-4.6 10.3-10.3s-4.6-10.3-10.3-10.3" fill="#9450e0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c1.svg b/riot/emojione/svg/1f4c1.svg new file mode 100644 index 0000000..8eaf3c9 --- /dev/null +++ b/riot/emojione/svg/1f4c1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m54.4.2l-24.6 8.5c0 0-.9-2-1.7-3.1-1.9-2.8-5.2-1.9-5.2-1.9l-18.8 6.1c0 0-2.6 1.1-3.6 4-1 2.8 0 6.3 0 6.3l10.8 44 43.1-37.6c0 0 1.4-16.8 2.3-24.5.3-2.8-2.3-1.8-2.3-1.8" fill="#962c2c"/><path fill="#9aabaf" d="m53.6 24.9l3.9-24.7-54.1 20.3 7.8 43z"/><path fill="#b3c0c4" d="M54.9 27.8 58.8.9 4.7 22.1 11.2 63.5z"/><path fill="#c5cfd3" d="m55.9 28.6l4.4-27.2-54.5 22.2 5.4 39.9z"/><path fill="#d9e3e8" d="m57.1 29.7l4.2-27.3-54.4 23 4.3 38.1z"/><path d="m11.3 64l47.1-33.4 5.6-24.8c0 0 .3-.8-.5-1.8-.6-.7-1.5-.4-1.5-.4l-25.3 10.7c0 0-1.5 6-4.5 7.6-3.3 1.7-18.8 9.3-18.8 9.3s-2.2 1.3-3.5 3.4c-1.2 2-1.4 4.5-1.4 4.5l2.8 24.9" fill="#ff8736"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c2.svg b/riot/emojione/svg/1f4c2.svg new file mode 100644 index 0000000..85fc741 --- /dev/null +++ b/riot/emojione/svg/1f4c2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m49.3.2l-22.3 8.5c0 0-.8-2-1.5-3.1-1.7-2.8-4.7-1.9-4.7-1.9l-17 6.1c0 0-2.3 1.1-3.3 4-.9 2.8 0 6.3 0 6.3l9.8 44 39-37.6c0 0 1.3-16.8 2.1-24.5.2-2.8-2.1-1.8-2.1-1.8" fill="#962c2c"/><path d="m10.2 64l42.7-33.4c0 0 10.6-21.4 11-23 .4-1.8-1.4-1.2-1.4-1.2l-22.7 10.7c0 0-1.4 6-4.1 7.6-3 1.7-17 9.3-17 9.3s-2 1.3-3.1 3.4c-1.2 2.1-5.4 26.6-5.4 26.6" fill="#ff8736"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c3.svg b/riot/emojione/svg/1f4c3.svg new file mode 100644 index 0000000..46b14fc --- /dev/null +++ b/riot/emojione/svg/1f4c3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m0 8.8c16.3 11.8 10.7 33.9 19.9 49 2.7-1.8 5.3-3.5 8-5.3 1.7 2.7 3.9 5.2 6.8 7.4 7.9-6.1 15.8-12.2 23.7-18.3-3.8-2.8-6-6.3-7.4-10.2-3.8-10.6-2-23.9-12.5-31.4-12.8 2.9-25.7 5.9-38.5 8.8" fill="#d9e3e8"/><g fill="#7d8b91"><path d="m11 14.1c.5.7 1 1.5 1.4 2.3 9.1-2.8 18.3-5.6 27.4-8.5-.3-.6-.7-1.2-1.1-1.8-9.2 2.7-18.4 5.4-27.7 8"/><path d="m15.3 23.2c8.9-3.3 17.9-6.6 26.8-9.9-.2-.7-.4-1.3-.7-2-9 3.1-18 6.2-27 9.4.3.9.6 1.7.9 2.5"/><path d="m17.1 30.6c8.8-3.8 17.6-7.6 26.4-11.4-.1-.7-.3-1.4-.4-2.1-8.8 3.6-17.7 7.2-26.5 10.9.1.8.3 1.7.5 2.6"/></g><path d="m16.8 51c1.4 4.2 3.5 8.2 6.7 11.6 1.8 1.9 5.4 1.9 7.4.3 2.1-1.6 2-4.1.3-5.9-3-3.2-5-6.9-6.3-10.8-2.7 1.5-5.4 3.2-8.1 4.8" fill="#d9e3e8"/><path d="m18.9 49c.1 5.4 1.3 10.2 4.6 13.6 1.8 1.9 5.4 1.9 7.4.3 2.1-1.6 2-4.1.3-5.9-3-3.2 20.3-24.1 18.9-28-2.6 1.5-21.3 12.9-31.2 20" opacity=".5" fill="#333"/><path d="m24.2 43.7c1.3 4.7 3.2 9.1 6.6 12.8 1.8 2 2.2 4.8.1 6.4 10.4-8 20.8-16.1 31.2-24.1 2.1-1.6 2.3-3.9 1-5.4-2.4-2.6-3.8-5.8-4.7-9.1-15.9 9-27.2 15.4-34.2 19.4" fill="#b0bdc6"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c4.svg b/riot/emojione/svg/1f4c4.svg new file mode 100644 index 0000000..b782c61 --- /dev/null +++ b/riot/emojione/svg/1f4c4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m0 0c17.3 17 6.7 47 24 64 12.7-8.4 27.3-16.6 40-25-7.7-7.5-8.3-18.4-10-28-7.9-3-16.6-7-29-11h-25" fill="#d9e3e8"/><g fill="#7d8b91"><path d="m13 9c.4.8.8 1.6 1.1 2.5 5.4-1 10.8-2 16.2-3-.3-.7-.6-1.4-1-2.2-5.3 1-10.8 1.8-16.3 2.7"/><path d="m16.4 18.8c5.3-1.3 10.6-2.6 15.9-3.9-.2-.8-.3-1.6-.6-2.3-5.3 1.2-10.7 2.4-16 3.6.3.8.5 1.7.7 2.6"/><path d="m17.6 26.5c10.5-3.3 21.1-6.6 31.6-9.8-.1-.7-.2-1.4-.3-2-10.6 3-21.1 6.1-31.7 9.1.2.8.3 1.7.4 2.7"/></g><path d="m25 0c4.9 4.8 2.9 17.9 4 24 7-1.9 18-11.1 25-13-7.9-3-16.6-7-29-11" opacity=".5" fill="#333"/><path d="m22.1 51.3c.4.8.7 1.7 1.2 2.5 5-2.8 10-5.7 15-8.5-.4-.7-.7-1.4-1-2.2-5.1 2.8-10.1 5.5-15.2 8.2" fill="#7d8b91"/><path d="m25 0c4.9 4.8 6.6 10.6 7.7 16.7 7-1.9 14.3-3.8 21.3-5.7-7.9-3-16.6-7-29-11" fill="#d9e3e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c5.svg b/riot/emojione/svg/1f4c5.svg new file mode 100644 index 0000000..5b18759 --- /dev/null +++ b/riot/emojione/svg/1f4c5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.1 19.6c-9.8-6-25-14.8-27.1-14.8-2.1 0-16.7 8.9-26 14.8l-.5-.9c2.4-1.5 23.5-14.9 26.5-14.9 3 0 25.1 13.4 27.6 15l-.5.8" fill="#ba9372"/><path d="m62 56.8c0 1.6-1.2 3-2.7 3h-52.5c-1.5 0-2.7-1.3-2.7-3v-35.7c0-1.6 1.2-3 2.7-3h52.5c1.5 0 2.7 1.3 2.7 3 0 0 0 35.7 0 35.7" fill="#93a2aa"/><path d="M60,21.1c0-1.6-1.2-3-2.7-3H4.7c-1.5,0-2.7,1.3-2.7,3v9.5h58V21.1z" fill="#ed4c5c"/><path d="M2,30.6v26.2c0,1.6,1.2,3,2.7,3h52.5c1.5,0,2.7-1.3,2.7-3V30.6H2z" fill="#d9e3e8"/><g fill="#93a2aa"><path d="m4.5 33h6v2.2h-6z"/><path d="m12.3 33h6v2.2h-6z"/><path d="m20.2 33h6v2.2h-6z"/><path d="m28 33h6v2.2h-6z"/><path d="m35.8 33h6v2.2h-6z"/><path d="m43.7 33h6v2.2h-6z"/><path d="m51.5 33h6v2.2h-6z"/><path d="m28 37.4h6v2.2h-6z"/><path d="m35.8 37.4h6v2.2h-6z"/><path d="m43.7 37.4h6v2.2h-6z"/><path d="m51.5 37.4h6v2.2h-6z"/><path d="m4.5 41.8h6v2.2h-6z"/><path d="m12.3 41.8h6v2.2h-6z"/><path d="m20.2 41.8h6v2.2h-6z"/><path d="m28 41.8h6v2.2h-6z"/><path d="m35.8 41.8h6v2.2h-6z"/><path d="m43.7 41.8h6v2.2h-6z"/><path d="m51.5 41.8h6v2.2h-6z"/><path d="m4.5 46.3h6v2.2h-6z"/><path d="m12.3 46.3h6v2.2h-6z"/><path d="m20.2 46.3h6v2.2h-6z"/><path d="m28 46.3h6v2.2h-6z"/><path d="m35.8 46.3h6v2.2h-6z"/><path d="m43.7 46.3h6v2.2h-6z"/><path d="m51.5 46.3h6v2.2h-6z"/><path d="m4.5 50.7h6v2.2h-6z"/><path d="m12.3 50.7h6v2.2h-6z"/><path d="m20.2 50.7h6v2.2h-6z"/><path d="m28 50.7h6v2.2h-6z"/><path d="m35.8 50.7h6v2.2h-6z"/><path d="m43.7 50.7h6v2.2h-6z"/><path d="m51.5 50.7h6v2.2h-6z"/><path d="m4.5 55.1h6v2.2h-6z"/><path d="m12.3 55.1h6v2.2h-6z"/><path d="m20.2 55.1h6v2.2h-6z"/><path d="m28 55.1h6v2.2h-6z"/><path d="m35.8 55.1h6v2.2h-6z"/><path d="m43.7 55.1h6v2.2h-6z"/></g><ellipse cx="31.2" cy="6.2" rx="1.8" ry="1.9" fill="#333"/><ellipse cx="31" cy="6.2" rx="1.8" ry="1.9" fill="#93a2aa"/><g fill="#fff"><path d="m19.5 25.5v.2c0 .6.1 1 .2 1.3.1.2.3.4.7.4.4 0 .6-.1.7-.4.1-.2.1-.4.1-.8v-5.5h1.6v5.4c0 .7-.1 1.2-.3 1.6-.4.7-1 1-2 1-1 0-1.6-.3-2-.8-.3-.5-.5-1.3-.5-2.2v-.2c0 0 1.5 0 1.5 0"/><path d="m24.5 20.7h1.6v4.8c0 .5.1.9.2 1.2.2.4.6.7 1.3.7.6 0 1.1-.2 1.3-.7.1-.3.1-.7.1-1.2v-4.8h1.6v4.8c0 .8-.1 1.5-.4 1.9-.5.8-1.4 1.3-2.7 1.3-1.3 0-2.2-.4-2.7-1.3-.3-.5-.4-1.1-.4-1.9.1 0 .1-4.8.1-4.8"/><path d="m32.2 20.7h1.6v6.4h3.8v1.4h-5.4v-7.8"/><path d="m42.2 20.7h1.8l-2.6 4.9v2.9h-1.6v-2.9l-2.7-4.9h1.9l1.6 3.4 1.6-3.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c6.svg b/riot/emojione/svg/1f4c6.svg new file mode 100644 index 0000000..a82a590 --- /dev/null +++ b/riot/emojione/svg/1f4c6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#819096"><path d="m2 34.2h3.6v5.9h-3.6z"/><path d="m58.3 18.4h3.6v5.9h-3.6z"/><path d="m59.7 21.7l-32.4-11.3c-1.4-.5-3.2-.1-4 .9l-8.9 11.6-11.7 15.3c-1.2 1.5-.8 3.4.9 4.2l39.3 17.3c2 .9 4.3 0 5.1-1.9l7.8-18.8 5.9-14c.5-1.2-.4-2.7-2-3.3"/></g><path d="m61.7 19.1c.5-1.2-.4-2.7-2-3.3l-32.4-11.3c-1.4-.5-3.2-.1-4 .9l-8.9 11.6 41.4 16.1 5.9-14" fill="#ed4c5c"/><path d="m14.4 17l-11.7 15.3c-1.2 1.5-.8 3.4.9 4.2l39.3 17.3c2 .9 4.3 0 5.1-1.9l7.9-18.8-41.5-16.1" fill="#cad5dd"/><path d="m4.2 30.3c-1.2 1.5.3 3.8 1.5 4.9 4.7 4.3 23 12.3 23 12.3l-24.5-17.2" opacity=".5" fill="#333"/><path d="m14.4 17c0 0-3.8 5.3-7 6.8-2.4 1.1-3.8 0-4.4 1.8-3 10.6 39.6 28.4 39.6 28.4 2 .9 4.3 0 5.1-1.9l8.1-19.1-41.4-16" fill="#d9e3e8"/><path d="m61.8 18.2c.3-1 .5-1.8-1.8-2.5l-32.7-11.2c-2.1-.8-2.8-.6-4 .9l-2.7 3.2 39.6 14.1 1.6-4.5" fill="#c7d3d8"/><path fill="#93a2aa" d="m60.2 22.7v5.9l1.6-4 .2-7.3z"/><g fill="#69787c"><ellipse cx="33.5" cy="9.8" rx="1.6" ry="1.3"/><ellipse cx="48.3" cy="15.1" rx="1.6" ry="1.3"/></g><path d="m35 9.5l12.4 4.5c0 0 .5.3.2 2.4-.5-.1-.9-.8-.9-.8l-12.5-4.6c.1-.1-.1-.4.8-1.5" fill="#e8edef"/><path d="m34.7 9.9l12.4 4.5c0 0 .3.4.3 1.8-.4-.3-.6-.7-.6-.7l-12.5-4.6c0 0-.2-.2.4-1" fill="#93a2aa"/><path fill="#69787c" d="m20.6 8.9v-.3l39.6 14.1v6.2h-.2l.1-5.9z"/><g fill="#fff"><path d="m28.3 17.9l-.1.1c-.3.5-.4.9-.4 1.1 0 .2.1.4.5.6.3.1.6.1.8-.1.1-.1.3-.3.5-.7l2.6-4.7 1.5.5-2.7 4.9c-.3.6-.7 1-1.1 1.2-.7.4-1.4.5-2.3.1-.9-.3-1.3-.8-1.3-1.4 0-.6.1-1.2.6-2l.1-.2 1.3.6"/><path d="m35.2 15.4l1.6.6-2.4 4.2c-.3.5-.4.8-.4 1.1 0 .5.3.8.9 1.1.6.2 1.1.2 1.6-.1.2-.2.5-.5.8-1l2.4-4.3 1.7.6-2.5 4.4c-.4.7-.9 1.3-1.4 1.6-.9.6-2 .6-3.3.1-1.3-.5-1.9-1.2-1.9-2.1 0-.5.2-1.1.6-1.8l2.3-4.4"/><path d="m42.9 18.1l1.7.6-3.3 5.9 4.1 1.6-.8 1.3-5.7-2.3 4-7.1"/></g><g fill="#333"><path d="m19 27.7l1.1-1.9c1 .3 1.7.5 2.1.6.7.1 1.3.1 1.9-.2.4-.1.8-.4 1.2-.8.2-.2.4-.4.5-.5l2.5 1-8.3 14.3-3.1-1.2 5.8-9.8-3.7-1.5"/><path d="m42.3 34.5c-.7.2-1.8.7-3.2 1.4-1.4.7-2.7 1.5-4 2.5-1 .7-2 1.6-3.1 2.8-1.1 1.1-1.9 2.1-2.4 2.9l-3.1-1.3c1.6-2.5 4-4.8 7.4-6.8 2.1-1.3 3.7-2.1 4.9-2.4l-7.7-3.1 1.5-2.5 10.9 4.3-1.2 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c7.svg b/riot/emojione/svg/1f4c7.svg new file mode 100644 index 0000000..21c4b77 --- /dev/null +++ b/riot/emojione/svg/1f4c7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m43.9 3.5c0 0-3.9-4.6-10.2-3.3-6.5 1.4-24 5.4-24 5.4l9.9 3.9 24.3-6" fill="#d9e3e8"/><path d="m48.5 8.9c2.2-.7 5.2 1.7 6.8 6 1.4 3.9.7 8.8-1.6 9.7l-3.1.6-4.9-15.7 2.8-.6" fill="#699635"/><path d="m45.7 9.5c2.2-.7 5.2 1.7 6.8 6 1.4 3.9.7 8.8-1.6 9.7-2.1.8-5.5-1.6-6.7-6.1-1.2-4.4-.9-8.8 1.5-9.6" fill="#83bf4f"/><path d="m44.4 11.9c1.7-.6 4.2 1.4 5.4 4.8 1.1 3.1.6 7-1.3 7.7l-2.4.5-3.9-12.6 2.2-.4" fill="#699635"/><path d="m52.6 51.9c-1.1 0-2.1-.2-3.2-.5-4.5-1.6-12.8-10.1-13.7-11.1l2.6-2.5c2.3 2.4 9.1 9 12.3 10.2 1.9.7 4.3.1 5.1-.6 1.8-1.5 2.7-4.2 2.6-7.1-.1-2.8-1.3-5.3-3-6.5-5.8-4.1-8.3-10.4-8.3-10.4.3-2.2 2.2-1.7 2.2-1.7 0 .1 1.7 5 8.3 9.2 2.7 1.7 4.3 5.3 4.5 9.3.2 4-1.3 7.8-3.9 10-1.2 1-3.3 1.7-5.5 1.7" fill="#83bf4f"/><path d="m51.6 34.2c0 0-.3 4-6.9 6.2-4.3 1.4-23.4 7.5-23.4 7.5l6.7-6.1 23.6-7.6" fill="#c7d3d8"/><path d="m21.1 24.8l-1.5-15.2c0 0-10.2-11.3-16.2 3.3-1.4 3.5-.4 11.6.4 15.4.9 3.9 3.8 11.6 6.6 14.5 12.1 12.3 17.5-1 17.5-1l-6.1-14.5 23.3-6.6-.5-2.9-23.5 7" fill="#93a2aa"/><path fill="#c7d3d8" d="m43.9 3.5l.8 14.3-23.6 7-1.5-15.2z"/><path fill="#d9e3e8" d="m51.6 34.2l-23.6 7.6-6.2-14.5 23.4-6.6z"/><g fill="#3e4347"><path d="m31.5 29.6c-.1 0-.2 0-.4-.1-.6-.2-1-.9-.8-1.5 0 0 .8-2.7 0-5-.8-2.1-2.5-3.3-2.5-3.3-.6-.4-.7-1.1-.4-1.6.4-.6 1.1-.7 1.7-.4.1.1 2.5 1.5 3.5 4.5 1.1 3 .1 6.4 0 6.5-.1.6-.6.9-1.1.9"/><path d="m38.3 27.9c-.1 0-.2 0-.4-.1-.6-.2-1-.9-.8-1.5 0 0 .8-2.7 0-5-.8-2.1-2.5-3.3-2.5-3.3-.6-.4-.7-1.1-.4-1.6.4-.6 1.1-.7 1.7-.4.1.1 2.5 1.5 3.5 4.5 1.1 3 .1 6.4 0 6.5-.1.5-.6.9-1.1.9"/></g><path d="m12.7 20.7c1.7-.6 4.2 1.4 5.4 4.8 1.1 3.1.6 7-1.3 7.7l-3.3.7-4.1-12.6 3.3-.6" fill="#699635"/><path d="m7 20.2c2.2-.7 5.2 1.7 6.8 6 1.4 3.9.7 8.8-1.6 9.7l-3.1.6-4.9-15.8 2.8-.5" fill="#83bf4f"/><path d="m4.2 20.7c2.2-.7 5.2 1.7 6.8 6 1.4 3.9.7 8.8-1.6 9.7-2.1.8-5.5-1.6-6.7-6.1-1.2-4.3-.9-8.8 1.5-9.6" fill="#699635"/><path d="m21.3 64c-6 0-13.7-7.6-16.2-11.6-1.4-2.3-1.1-4.2-.6-5.3 1.1-2.3 3.7-3.5 5.9-4.3l3.2 2.8c-1.7.3-5 1.3-5.8 3-.1.2-.4.8.4 2 2.4 3.9 9.1 9.9 13.1 9.9 2 0 3.5-1 4.3-3.1 1.6-4.1 0-11.2-5.4-15.9-3-2.6-4.8-6.7-4.9-9.1 0 0 .4-1.8 1.9-1.5 0 0 3.1 6 5.4 8 6.8 5.9 8.3 14.7 6.3 19.8-1.2 3.3-4 5.3-7.6 5.3" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c8.svg b/riot/emojione/svg/1f4c8.svg new file mode 100644 index 0000000..69c80f6 --- /dev/null +++ b/riot/emojione/svg/1f4c8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fff" d="m0 0h64v64h-64z"/><path fill="#52c18e" d="m58.7 5.3h-5.6l-15.8 20.2-9.6-11.2-27.7 40.2v9.5h6.4l22.2-32.3 9.2 10.6 20.9-26.8z"/><path d="m64 0h-64v50.7l3-4.3h-.9v-13.3h10l1.5-2.1h-11.5v-13.4h13.3v10.7l2.1-3.1v-7.6h5.2l1.5-2.1h-6.7v-13.4h13.3v12.7l2.4 2.8h7.5l1.7-2.1h-9.4v-13.4h13.3v8.3l2.1-2.7v-5.6h13.3v13.3h-1.1v.8l-1 1.3h2.1v13.3h-12.4l-2.9 3.8v11.7h-13.3v-6.3l-2.1-2.5v8.7h-9.8l-1.5 2.1h11.3v13.3h-13.4v-10.1l-2.1 3.1v7.3h-5l-1.5 2.1h55v-64m-48.5 15.5h-13.4v-13.4h13.3c.1 0 .1 13.4.1 13.4m30.9 46.4h-13.3v-13.4h13.3c0 0 0 13.4 0 13.4m15.5 0h-13.4v-13.4h13.3v13.4zm0-15.5h-13.4v-13.3h13.3v13.3z" fill="#d0d5d8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4c9.svg b/riot/emojione/svg/1f4c9.svg new file mode 100644 index 0000000..6210970 --- /dev/null +++ b/riot/emojione/svg/1f4c9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fff" d="m0 0h64v64h-64z"/><path fill="#ed4c5c" d="m58.7 58.7h-5.6l-15.8-20.2-9.6 11.2-27.7-40.2v-9.5h6.4l22.2 32.3 9.2-10.6 20.9 26.8z"/><path d="m64 0h-55l1.5 2.1h5v7.3l2.1 3.1v-10.4h13.3v13.3h-11.3l1.5 2.1h9.8v8.7l2.1-2.5v-6.3h13.3v11.7l2.9 3.8h12.5v13.3h-2.1l1 1.3v.8h1.1v13.3h-13.2v-5.6l-2.1-2.7v8.3h-13.3v-13.1h9.4l-1.7-2.1h-7.5l-2.4 2.8v12.7h-13.3v-13.4h6.7l-1.5-2.1h-5.2v-7.6l-2.1-3.1v10.7h-13.4v-13.3h11.5l-1.5-2.1h-10v-13.4h.9l-3-4.3v50.7h64v-64m-48.5 61.9h-13.4v-13.4h13.3c.1 0 .1 13.4.1 13.4m30.9-46.4h-13.3v-13.4h13.3v13.4m15.5 0h-13.4v-13.4h13.3v13.4zm0 15.4h-13.4v-13.3h13.3v13.3z" fill="#d0d5d8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ca.svg b/riot/emojione/svg/1f4ca.svg new file mode 100644 index 0000000..619ce84 --- /dev/null +++ b/riot/emojione/svg/1f4ca.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#333"><path d="m0 0h4v64h-4z"/><path d="m0 60h64v4h-64z"/></g><path fill="#fb4f00" d="m38.7 60h12v-53.3l-12 13.3z"/><path fill="#5c750a" d="m21.3 60h12v-40l-12 13.3z"/><path fill="#106995" d="m4 60h12v-26.7l-12 13.4z"/><path fill="#9aca0a" d="m33.3 20h13.3v40h-13.3z"/><path fill="#21adf1" d="m16 33.3h13.3v26.7h-13.3z"/><path fill="#fc9100" d="m50.7 6.7h13.3v53.3h-13.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4cb.svg b/riot/emojione/svg/1f4cb.svg new file mode 100644 index 0000000..29f1ef7 --- /dev/null +++ b/riot/emojione/svg/1f4cb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m35.7 62.2c-1.4 2.1-4.4 2.4-6.8.7l-27-19c-1.8-1.3-2.4-3.8-1.2-5.6l23.7-36.3c1.2-1.8 3.8-2.5 5.9-1.6l30.6 13.5c2.7 1.2 3.9 3.9 2.5 6l-27.7 42.3" fill="#d3976e"/><path fill="#fff" d="M31.4 59.8 3.5 40.7 28 3.3 59.1 17.5z"/><path d="m49 14.8c-.4.6-1.3.8-2.1.4l-11.6-5.5c-.7-.3-.9-1-.5-1.6l1.8-2.8c.4-.6 1.2-.8 1.9-.5l11.9 5.3c.8.3 1 1.1.7 1.7l-2.1 3" fill="#94989b"/><path d="m46.8 11.1l-7.5-3.4 1.9-2.8c.4-.6 1.2-.8 1.9-.5l5 2.2c.7.3 1 1.1.6 1.6l-1.9 2.9" fill="#333"/><g fill="#83bf4f"><path d="m47.3 26.6l-15.6-8.1.8-1.2 15.7 7.9z"/><path d="m26.7 17.7c-.2.1-.4 0-.4-.1l-1-2.8c-.1-.2.1-.4.3-.4l.4-.1c.2 0 .4.1.5.2l.5 1.5c.1.2.3.2.4.1l2.9-1.6c.2-.1.4-.1.5.1l.2.3c.1.2.1.4-.1.5l-4.2 2.3"/></g><g fill="#b0bdc6"><path d="m42.2 34.4l-15.4-8.5.9-1.3 15.4 8.5z"/><path d="m23.9 26.2l-4.5-2.6 2.6-4 4.6 2.5z"/><path d="m37.1 42.2l-15.1-9 .9-1.2 15.1 8.9z"/><path d="m19.1 33.5l-4.4-2.7 2.6-4 4.5 2.6z"/><path d="m32 50.1l-14.8-9.5.8-1.3 14.8 9.4z"/><path d="m14.4 40.8l-4.4-2.9 2.6-4 4.4 2.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4cc.svg b/riot/emojione/svg/1f4cc.svg new file mode 100644 index 0000000..5403772 --- /dev/null +++ b/riot/emojione/svg/1f4cc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.5 35.5c-6.7 7.4-21.6 25.4-23.9 27.6 0 0-.1 0-.1.1-.9.9-.6 1.2.3.3 2-2 20.2-17.2 27.6-23.9l-3.9-4.1" fill="#d0d0d0"/><path transform="matrix(.7071-.7071.7071.7071-3.9661 35.935)" fill="#c94747" d="m25.5 14.7h31.7v16.2h-31.7z"/><g fill="#ed4c5c"><path d="m43.6 54.6c.9-7.8-2.5-17.1-9.8-24.3s-16.6-10.7-24.4-9.9l34.2 34.2"/><path d="m64 22.9c-5.2.6-11.4-1.7-16.3-6.6-4.9-4.9-7.2-11.1-6.6-16.3l22.9 22.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4cd.svg b/riot/emojione/svg/1f4cd.svg new file mode 100644 index 0000000..fa9f105 --- /dev/null +++ b/riot/emojione/svg/1f4cd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="M42.6 29.4 2 62 34.6 21.4z"/><circle cx="45" cy="19" r="17" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ce.svg b/riot/emojione/svg/1f4ce.svg new file mode 100644 index 0000000..47c8d2c --- /dev/null +++ b/riot/emojione/svg/1f4ce.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.6 23.8c-.8-.8-2-.8-2.8 0-.5.5-31.9 31.9-32.9 32.9-.1.1-.3.3-.4.4-3.8 3.8-10.1 3.8-13.9 0-3.8-3.8-3.8-10.1 0-13.9l37.6-37.5c2.3-2.3 6.1-2.3 8.4 0 2.2 2.2 2.3 5.8.2 8.2l-32.9 32.8c-.8.8-2 .8-2.8 0-.8-.8-.8-2-.1-2.8 0 0 28-28.1 28.5-28.5.8-.8.8-2 0-2.8-.8-.8-2-.7-2.7.1-.6.6-28.1 28-28.4 28.4-.7.7-1.2 1.6-1.6 2.5-.4 1.1-.3 2.4 0 3.5.5 1.4 1.3 2.5 2.6 3.2 2.3 1.4 5.4 1 7.3-.8l32.7-32.7c3.8-3.8 3.8-10.1 0-14-3.8-3.8-10.1-3.8-14 0l-37.6 37.7c-5.4 5.4-5.4 14.1 0 19.5 5.4 5.4 14.1 5.4 19.5 0 .5-.5 33.2-33.2 33.4-33.4.7-.8.7-2-.1-2.8" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4cf.svg b/riot/emojione/svg/1f4cf.svg new file mode 100644 index 0000000..3d66c06 --- /dev/null +++ b/riot/emojione/svg/1f4cf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8.3.9c1.2-1.2 3.2-1.2 4.4 0l50.3 50.3c1.2 1.2 1.2 3.2 0 4.4l-7.4 7.4c-1.2 1.2-3.2 1.2-4.4 0l-50.3-50.2c-1.2-1.2-1.2-3.2 0-4.4l7.4-7.5" fill="#f8db7d"/><g fill="#ebc463"><path d="m38.3 40.7c-16.1-16.1-28.5-29.8-27.7-30.7.2-.2 1.5.6 3.6 2.3-3.2-3.3-6-6.3-8.3-8.9l-2.8 2.8c4.5 4 10 9.3 15.9 15.2 13.6 13.6 23.9 25.3 23 26.2-.9.9-12.6-9.4-26.2-23.1-5.9-5.8-11.2-11.3-15.2-15.8-.9 1.2-.8 3 .3 4.1l26 26c1.5-1.1 10.2 5.6 19.7 15.1 3.3 3.3 6.3 6.6 8.8 9.5.1-.1.2-.2.3-.3l2.9-2.9c-5.5-5-12.6-11.8-20.3-19.5"/><path d="m8.3.9l-.2.2c4.2 3.8 9.6 8.9 15.3 14.6 12.6 12.6 22.2 23.5 21.4 24.3-.2.2-1.1-.3-2.5-1.3 7.3 7.3 13.7 14.1 18.5 19.3l2.3-2.3c.1-.1.1-.1.2-.2-1.7-1.6-3.5-3.4-5.4-5.3-7.7-7.7-13.7-14.3-13.3-14.7.4-.4 7 5.5 14.7 13.3 1.7 1.7 3.2 3.3 4.7 4.8 0-.8-.3-1.6-.9-2.2l-50.3-50.5c-1.3-1.2-3.2-1.2-4.5 0"/></g><g fill="#89664c"><path transform="matrix(.7067-.7075.7075.7067-1.502 8.6608)" d="m3.8 5h11.7v2.3h-11.7z"/><path transform="matrix(.7071-.7071.7071.7071-.7598 12.7251)" d="m12 6.1h5.9v2.3h-5.9z"/><path transform="matrix(.7071-.7071.7071.7071-2.0892 15.9357)" d="m15.3 9.4h5.9v2.3h-5.9z"/><path transform="matrix(.7073-.7069.7069.7073-3.4222 19.1385)" d="m18.5 12.6h5.9v2.3h-5.9z"/><path transform="matrix(.7074-.7068.7068.7074-6.825 21.486)" d="m16.7 17.9h11.7v2.3h-11.7z"/><path transform="matrix(.7066-.7076.7076.7066-6.0763 25.5928)" d="m24.9 19h5.9v2.3h-5.9z"/><path transform="matrix(.7074-.7068.7068.7074-7.4127 28.7619)" d="m28.1 22.2h5.9v2.3h-5.9z"/><path transform="matrix(.7073-.7069.7069.7073-8.7418 31.9772)" d="m31.3 25.4h5.9v2.3h-5.9z"/><path transform="matrix(.7067-.7075.7075.7067-12.1421 34.3701)" d="m29.5 30.7h11.7v2.3h-11.7z"/><path transform="matrix(.7073-.7069.7069.7073-11.4018 38.3971)" d="m37.7 31.8h5.9v2.3h-5.9z"/><path transform="matrix(.7069-.7073.7073.7069-12.7279 41.6411)" d="m40.9 35h5.9v2.3h-5.9z"/><path transform="matrix(.7073-.7069.7069.7073-14.0625 44.8164)" d="m44.2 38.3h5.9v2.3h-5.9z"/><path transform="matrix(.7075-.7067.7067.7075-17.4663 47.1476)" d="m42.4 43.5h11.7v2.3h-11.7z"/><path transform="matrix(.7062-.708.708.7062-16.7157 51.3424)" d="m50.6 44.7h5.9v2.3h-5.9z"/><path transform="matrix(.7075-.7067.7067.7075-18.0549 54.4228)" d="m53.8 47.9h5.9v2.3h-5.9z"/><path transform="matrix(.7071-.7071.7071.7071-19.3807 57.6783)" d="m57 51.1h5.9v2.3h-5.9z"/><circle cx="10.4" cy="13.2" r="2.6"/></g><circle cx="10.8" cy="13.6" r="2.4" fill="#fff"/><circle cx="22" cy="24.8" r="2.6" fill="#89664c"/><circle cx="22.4" cy="25.2" r="2.4" fill="#fff"/><circle cx="49.3" cy="52.1" r="2.6" fill="#89664c"/><circle cx="49.7" cy="52.5" r="2.4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d0.svg b/riot/emojione/svg/1f4d0.svg new file mode 100644 index 0000000..5d4c52d --- /dev/null +++ b/riot/emojione/svg/1f4d0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m.7 61.8c-1.2 1.2-.8 2.2.9 2.2h59.3c1.7 0 3.1-1.4 3.1-3.1v-59.3c0-1.7-1-2.1-2.2-.9l-61.1 61.1m49.1-15c0 1.7-1.4 3.1-3.1 3.1h-11c-1.7 0-2.1-1-.9-2.2l12.8-12.8c1.2-1.2 2.2-.8 2.2.9v11" fill="#ffce31"/><g fill="#89664c"><path d="m2.4 61.3h1v2.7h-1z"/><path d="m5.3 61.3h1v2.7h-1z"/><path d="m8.3 61.3h1v2.7h-1z"/><path d="m11.3 59h1v5h-1z"/><path d="m14.4 61.3h1v2.7h-1z"/><path d="m17.4 61.3h1v2.7h-1z"/><path d="m20.4 61.3h1v2.7h-1z"/><path d="m23.4 59h1v5h-1z"/><path d="m26.5 61.3h1v2.7h-1z"/><path d="m29.5 61.3h1v2.7h-1z"/><path d="m32.5 61.3h1v2.7h-1z"/><path d="m35.4 59h1v5h-1z"/><path d="m38.6 61.3h1v2.7h-1z"/><path d="m41.5 61.3h1v2.7h-1z"/><path d="m44.5 61.3h1v2.7h-1z"/><path d="m47.5 59h1v5h-1z"/><path d="m50.6 61.3h1v2.7h-1z"/><path d="m53.6 61.3h1v2.7h-1z"/><path d="m56.6 61.3h1v2.7h-1z"/><path d="m59.6 59h1v5h-1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d1.svg b/riot/emojione/svg/1f4d1.svg new file mode 100644 index 0000000..b0ff586 --- /dev/null +++ b/riot/emojione/svg/1f4d1.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.5 34.4c-3.2-8.5-11.9-15.5-8.9-25.9-11.7 1-23.4 2.1-35.1 3.1-5.6 19.4 18.6 30.1 12.9 49.5 10.6-5.5 21.6-10.4 32.1-15.8 1.1-3.8.2-7.7-1-10.9" fill="#93a2aa"/><path d="m6.6 37.8c3.1-1.8 6.3-3.6 9.4-5.5 2.1 1.9 4 4 5.1 6.5-3.3 1.6-6.6 3.3-9.8 4.9.1-1.5.1-2.9 0-4.2-1.5-.6-3.1-1.2-4.7-1.7" fill="#933434"/><path d="M59,33.4c-3.7-9.8-13.7-17.8-10.2-29.8C35.4,4.8,21.9,6,8.5,7.2C2,29.4,29.7,41.7,23.2,64 + C35.3,57.7,48,52.1,60.1,45.8C61.4,41.4,60.4,37,59,33.4z" fill="#b0bdc6"/><path d="m0 23c4.1-1.2 8.3-2.5 12.4-3.7 2 2.8 3.6 5.8 4.3 9.1-4.3 1-8.5 1.9-12.8 2.9.6-1.7.9-3.3 1.1-5-1.6-1.2-3.2-2.2-5-3.3" fill="#ed4c5c"/><path d="m10.3 5c-5.5 21.4 22.8 31.8 17.2 53.2 11.9-6.4 24.2-12.3 36.1-18.7 1.1-4.2-.1-8.4-1.6-11.7-4.2-9.2-14.5-16.4-11.5-27.8-13.4 1.7-26.8 3.4-40.2 5" fill="#d9e3e8"/><g fill="#7d8b91"><path d="m14.8 12.4c.1.8.3 1.6.4 2.3 10.1-2 20.2-4 30.3-6-.1-.6-.3-1.2-.4-1.8-10.1 1.9-20.2 3.7-30.3 5.5"/><path d="m17.6 20.9c9.9-2.4 19.8-4.8 29.8-7.2-.3-.6-.6-1.1-.8-1.7-10 2.3-20 4.5-30 6.8.3.7.7 1.4 1 2.1"/><path d="m21.2 26.6c9.7-2.8 19.3-5.6 29-8.4-.4-.5-.7-1.1-1.1-1.6-9.8 2.7-19.5 5.3-29.3 8 .5.7.9 1.4 1.4 2"/><path d="m32 45.7c.2.8.3 1.5.4 2.3 4.4-2.1 8.9-4.3 13.3-6.4-.1-.7-.2-1.4-.4-2.1-4.4 2-8.8 4.1-13.3 6.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d2.svg b/riot/emojione/svg/1f4d2.svg new file mode 100644 index 0000000..93fecc8 --- /dev/null +++ b/riot/emojione/svg/1f4d2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m43.7 3.4l-13.9 56.9 27.9-7.5c3.1-.9 5-4 4.1-7.1l-10.9-38.3c-.9-3.1-4.1-4.8-7.2-4" fill="#3e4347"/><path d="m41.4 2.8l-11.6 57.5 27.6-8.7c3.1-1 4.8-4.2 3.8-7.2l-12.4-37.9c-1-3-4.3-4.6-7.4-3.7" fill="#e9f3fa"/><path d="m39.5 2.4l-26.2 9.4-4.1 1.5c-3 1.1-3.1 2.8-2 5.8l14.8 40.1c1.1 3 1.9 3.4 5 2.3l4.1-1.5 26.2-9.4c3-1.1 4.6-4.4 3.5-7.4l-13.8-37.5c-1.1-2.9-4.4-4.4-7.5-3.3" fill="#d3976e"/><path fill="#fff" d="m40.1 22.9l-16.2 5.8-2.4-6.3 16.3-5.8z"/><g fill="#3e4347"><path d="m25.3 56.1c1.1-.4 1.7-1.6 1.3-2.8-.4-1.1-1.7-1.7-2.8-1.3-1.1.4-1.7 1.6-1.3 2.8.4 1.2 1.6 1.7 2.8 1.3"/><path d="m21.1 44.7c1.1-.4 1.7-1.6 1.3-2.7-.4-1.1-1.7-1.7-2.8-1.3-1.1.4-1.7 1.6-1.3 2.7.4 1.2 1.7 1.8 2.8 1.3"/><path d="m17 33.7c1.1-.4 1.7-1.6 1.3-2.7-.4-1.1-1.7-1.7-2.8-1.3-1.1.4-1.7 1.6-1.3 2.7.4 1.2 1.7 1.7 2.8 1.3"/><path d="m12.6 21.7c1.1-.4 1.7-1.6 1.3-2.8-.4-1.1-1.7-1.7-2.8-1.3-1.1.4-1.7 1.6-1.3 2.7.4 1.2 1.7 1.8 2.8 1.4"/></g><g fill="#7d8b91"><path d="m12.7 19.4c-1.6-3.9-12-.4-10.6 3.7.9 2.6 3.9 2.7 7.1 1.7l-.6-1.7c0 0-3.7 1.2-4.3-.5-.6-1.8 6.3-3.5 6.8-2.5.5.9 2.2.5 1.6-.7"/><path d="m17.2 31.3c-1.6-3.9-12-.4-10.6 3.7.9 2.6 3.9 2.7 7 1.6l-.6-1.7c0 0-3.7 1.2-4.3-.5-.7-1.8 6.3-3.5 6.8-2.4.5 1 2.2.6 1.7-.7"/><path d="m21.3 42.3c-1.6-3.9-12-.4-10.6 3.7.9 2.6 3.9 2.7 7 1.7l-.7-1.7c0 0-3.6 1.2-4.2-.5-.6-1.8 6.3-3.5 6.8-2.5.5 1 2.2.6 1.7-.7"/><path d="m25.4 53.7c-1.6-3.9-12-.4-10.6 3.7.9 2.6 3.9 2.7 7 1.7l-.6-1.7c0 0-3.7 1.2-4.3-.5-.6-1.8 6.3-3.5 6.8-2.5.5 1 2.2.6 1.7-.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d3.svg b/riot/emojione/svg/1f4d3.svg new file mode 100644 index 0000000..604ba14 --- /dev/null +++ b/riot/emojione/svg/1f4d3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.2 3.4l-26.1 7.5-4.1 1.2c-3 .9-3.2 2.6-2.4 5.6l11.3 41.1c.8 3 1.6 3.5 4.7 2.6l4.1-1.2 26.1-7.5c3-.9 4.8-4 4-7.1l-10.6-38.2c-.8-3.1-4-4.8-7-4" fill="#3e4347"/><path d="m39 2.8l-25.8 8.5-4.1 1.3c-3 1-3.1 2.7-2.2 5.7l13 40.6c1 3 1.8 3.4 4.8 2.4l4.1-1.3 25.8-8.5c3-1 4.7-4.2 3.7-7.2l-12.1-37.8c-1-3-4.2-4.6-7.2-3.7" fill="#d0d0d0"/><path d="m37.1 2.4l-25.5 9.4 17.2 48.2 25.5-9.4c3-1.1 4.5-4.4 3.4-7.4l-13.3-37.5c-1-2.9-4.3-4.4-7.3-3.3" fill="#42ade2"/><path d="m7.6 13.3c-3 1.1-3 2.8-2 5.8l14.4 40.1c1.1 3 1.9 3.4 4.9 2.3l4-1.5-17.3-48.2-4 1.5" fill="#3e4347"/><path fill="#fff" d="m41.5 21.4l-15.8 5.9-2.2-6.3 15.8-5.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d4.svg b/riot/emojione/svg/1f4d4.svg new file mode 100644 index 0000000..211f080 --- /dev/null +++ b/riot/emojione/svg/1f4d4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.2 3.4l-12.9 56.7 26.5-7.3c3-.9 4.8-4 4-7.1l-10.6-38.3c-.8-3.1-4-4.8-7-4" fill="#3e4347"/><path d="m39 2.8l-10.7 57.3 26.3-8.5c3-1 4.7-4.2 3.7-7.2l-12.1-37.9c-1-3-4.2-4.6-7.2-3.7" fill="#e9f3fa"/><path d="m37.1 2.4l-25.5 9.4 17.2 48.2 25.5-9.4c3-1.1 4.5-4.4 3.4-7.4l-13.3-37.5c-1-2.9-4.3-4.4-7.3-3.3" fill="#c28fef"/><g fill="#a67acc"><path d="m23.8 12.4l-1.5 3.3-3.2-1.6 1.4-3.3z"/><path d="m33.1 8.9l-1.5 3.3-3.2-1.5 1.5-3.4z"/><path d="m42.4 5.5l-1.4 3.3-3.2-1.6 1.4-3.3z"/><path d="m20.8 19l-1.4 3.3-3.2-1.6 1.4-3.3z"/><path d="m30.2 15.5l-1.5 3.4-3.2-1.6 1.5-3.3z"/><path d="m39.5 12.1l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m27.3 22.2l-1.5 3.3-3.2-1.6 1.4-3.3z"/><path d="m45.9 15.3l-1.4 3.3-3.2-1.6 1.4-3.3z"/><path d="m24.3 28.8l-1.4 3.3-3.2-1.6 1.4-3.3z"/><path d="m33.7 25.3l-1.5 3.3-3.2-1.5 1.5-3.3z"/><path d="m43 21.9l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m30.8 32l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m40.1 28.5l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m49.4 25l-1.4 3.4-3.2-1.6 1.4-3.3z"/><path d="m27.8 38.6l-1.4 3.3-3.2-1.6 1.4-3.3z"/><path d="m37.2 35.1l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m46.5 31.7l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m34.3 41.7l-1.5 3.3-3.2-1.5 1.5-3.3z"/><path d="m43.6 38.3l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m52.9 34.8l-1.4 3.3-3.2-1.5 1.4-3.3z"/><path d="m31.3 48.4l-1.4 3.3-3.2-1.6 1.4-3.3z"/><path d="m40.7 44.9l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m50 41.5l-1.4 3.3-3.3-1.6 1.5-3.3z"/><path d="m37.8 51.5l-1.5 3.3-3.2-1.5 1.5-3.4z"/><path d="m47.1 48.1l-1.5 3.3-3.2-1.6 1.5-3.3z"/><path d="m56.4 44.6l-1.4 3.3-3.2-1.6 1.4-3.3z"/></g><path d="m7.6 13.3c-3 1.1-3 2.8-2 5.8l14.4 40.1c1.1 3 1.9 3.4 4.9 2.3l4-1.5-17.3-48.2-4 1.5" fill="#3e4347"/><path fill="#fff" d="m41.5 21.4l-15.8 5.9-2.2-6.3 15.8-5.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d5.svg b/riot/emojione/svg/1f4d5.svg new file mode 100644 index 0000000..be6b7fa --- /dev/null +++ b/riot/emojione/svg/1f4d5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M55,35.1l7.5,7.4L29.2,58.4c0,0-4.4,2-6.5-1.2C14.5,44.4,55,35.1,55,35.1z" fill="#962c2c"/><path d="m28.4 49.1c0 0-6.4 2.2-5.2 6.5 1.2 4.4 6.3 1.7 6.3 1.7l31.6-14.7c0 0-1.8-4.7 1.4-7.8l-34.1 14.3" fill="#d9e3e8"/><path fill="#ed4c5c" d="m33.7 5l30.3 29.5-35.8 14-23-35.8z"/><path fill="#fff" d="m34.6 11.7l5.8 6.2-21.7 7.8-5.1-7.9z"/><g fill="#94989b"><path d="m61 38l-21.1 8.6 20.8-9.5z"/><path d="m60.7 40.6l-22.5 9.3 22.1-10.3z"/><path d="M60.9 42 32.2 54.4 60.5 41.1z"/></g><path d="m22.7 57.2c-3.5-7.3 5.5-8.6 5.5-8.6l-23-35.9c0 0-5.2-.1-5.2 5.3 0 2.2 1 3.9 1 3.9l21.7 35.3" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d6.svg b/riot/emojione/svg/1f4d6.svg new file mode 100644 index 0000000..40a387e --- /dev/null +++ b/riot/emojione/svg/1f4d6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#89664c" d="m64 58h-64l5.7-46h52.6z"/><path d="m26.2 8.4c-5.8 0-16.6 1.9-20.1.8 0 0 .9 19.7-4 47.4 6.9-.5 16.1-4.4 22.9-4.4 6.9 0 6.9 4.4 6.9 4.4v-43.3c.2 0 .1-4.9-5.7-4.9" fill="#b0bdc6"/><path d="m26.3 7.7c-5.8 0-14.7 1.8-17.4-1.7 0 0 .9 22.3-5.1 47.2 2.2 3.1 14-1.1 20.9-1.1 6.9 0 7.3 4.5 7.3 4.5v-44c.1 0 .1-4.9-5.7-4.9" fill="#e1ebef"/><path d="m25.1 52.2c-6.9 0-19 4.4-22.9 4.4h29.9c0 0-.1-4.4-7-4.4" fill="#94989b"/><g fill="#7d8b91"><path d="m11.8 14.2l.1-.8c.9 0 2.6-.3 4.5-.7 2.6-.5 5.6-1.1 8-1.1 3.2 0 4.2.7 4.4.8l-.3.3-.3.3c0 0-1-.6-3.8-.6-2.3 0-5.2.6-7.8 1.1-2 .4-3.7.7-4.8.7"/><path d="m11.4 18.5l.1-.9c1 0 2.7-.3 4.6-.7 2.7-.5 5.7-1.1 8.1-1.1 3.2 0 4.3.7 4.4.8l-.2.4-.3.4c0 0-1-.7-3.9-.7-2.4 0-5.3.6-8 1.1-2 .4-3.7.7-4.8.7"/><path d="m11 23l.1-.9c1 0 2.7-.4 4.7-.8 2.7-.6 5.8-1.2 8.3-1.2 3.3 0 4.4.8 4.5.9l-.3.4-.3.4c0 0-1-.7-4-.7-2.4 0-5.4.6-8.1 1.2-2 .4-3.8.7-4.9.7"/><path d="m10.6 27.7l.1-1c1 0 2.8-.4 4.8-.8 2.8-.6 5.9-1.2 8.5-1.2 3.4 0 4.5.8 4.6.9l-.4.4-.2.4c0 0-1-.7-4.1-.7-2.5 0-5.6.6-8.3 1.2-2.1.4-3.9.8-5 .8"/><path d="m10.1 32.6l.1-1c1 0 2.8-.4 4.9-.8 2.8-.6 6-1.3 8.6-1.3 3.4 0 4.6.8 4.7.9l-.3.4-.3.4c0 0-1-.7-4.2-.7-2.5 0-5.7.7-8.5 1.3-2 .4-3.9.8-5 .8"/><path d="m9.6 37.7l.1-1c1 0 2.9-.4 5-.9 2.9-.6 6.2-1.3 8.8-1.3 3.5 0 4.7.9 4.8 1l-.3.4-.3.4c0 0-1.1-.8-4.3-.8-2.6 0-5.8.7-8.7 1.3-2 .5-3.9.9-5.1.9"/><path d="m9.1 43l.1-1.1c1.1 0 2.9-.4 5.1-.9 3-.7 6.3-1.4 9-1.4 3.6 0 4.8.9 4.9 1l-.2.5-.3.4c0 0-1.1-.8-4.4-.8-2.6 0-5.9.7-8.9 1.4-2.1.5-4.1.9-5.3.9"/><path d="m8.6 48.6l.1-1.1c1.1 0 3-.4 5.2-.9 3-.7 6.5-1.5 9.2-1.5 3.7 0 4.9 1 5 1.1l-.3.4-.2.4c0 0-1.1-.9-4.5-.9-2.7 0-6.1.8-9.1 1.5-2.2.5-4.2 1-5.4 1"/></g><path d="m37.8 8.4c5.8 0 16.6 1.9 20.1.8 0 0-.9 19.7 4 47.4-6.9-.5-16.1-4.4-22.9-4.4-6.9 0-6.9 4.4-6.9 4.4v-43.3c-.1 0-.1-4.9 5.7-4.9" fill="#b0bdc6"/><path d="m37.7 7.7c5.8 0 14.7 1.8 17.4-1.7 0 0-.9 22.3 5.1 47.2-2.2 3.1-14-1.1-20.9-1.1-6.9 0-7.3 4.5-7.3 4.5v-44c0 0 0-4.9 5.7-4.9" fill="#d9e3e8"/><path d="m38.9 52.2c6.9 0 19 4.4 22.9 4.4h-29.8c0 0 0-4.4 6.9-4.4" fill="#94989b"/><g fill="#7d8b91"><path d="m52.2 14.2l-.1-.8c-.9 0-2.6-.3-4.5-.7-2.6-.5-5.6-1.1-8-1.1-3.2 0-4.2.7-4.4.8l.3.3.3.3c0 0 1-.6 3.8-.6 2.3 0 5.2.6 7.8 1.1 2.1.4 3.8.7 4.8.7"/><path d="m52.6 18.5l-.1-.9c-1 0-2.7-.3-4.6-.7-2.7-.5-5.7-1.1-8.1-1.1-3.2 0-4.3.7-4.4.8l.3.3.3.4c0 0 1-.7 3.9-.7 2.4 0 5.3.6 8 1.1 1.9.5 3.6.8 4.7.8"/><path d="m53 23l-.1-.9c-1 0-2.7-.4-4.7-.8-2.7-.6-5.8-1.2-8.3-1.2-3.3 0-4.4.8-4.5.9l.3.4.3.4c0 0 1-.7 4-.7 2.4 0 5.4.6 8.1 1.2 2.1.4 3.8.7 4.9.7"/><path d="m53.5 27.7l-.1-1c-1 0-2.8-.4-4.8-.8-2.8-.6-5.9-1.2-8.5-1.2-3.4 0-4.5.8-4.6.9l.3.4.3.4c0 0 1-.7 4.1-.7 2.5 0 5.6.6 8.3 1.2 2 .4 3.9.8 5 .8"/><path d="m53.9 32.6l-.1-1c-1 0-2.8-.4-4.9-.8-2.8-.6-6-1.3-8.6-1.3-3.4 0-4.6.8-4.7.9l.3.4.3.4c0 0 1-.7 4.2-.7 2.5 0 5.7.7 8.5 1.3 2 .4 3.9.8 5 .8"/><path d="m54.4 37.7l-.1-1c-1 0-2.9-.4-5-.9-2.9-.6-6.2-1.3-8.8-1.3-3.5 0-4.7.9-4.8 1l.3.4.3.4c0 0 1.1-.8 4.3-.8 2.6 0 5.8.7 8.7 1.3 2 .5 3.9.9 5.1.9"/><path d="m54.9 43l-.1-1.1c-1.1 0-2.9-.4-5.1-.9-3-.7-6.3-1.4-9-1.4-3.6 0-4.8.9-4.9 1l.3.4.3.4c0 0 1.1-.8 4.4-.8 2.6 0 5.9.7 8.9 1.4 2.1.6 4 1 5.2 1"/><path d="m55.4 48.6l-.1-1.1c-1.1 0-3-.4-5.2-.9-3-.7-6.5-1.5-9.2-1.5-3.7 0-4.9 1-5 1.1l.3.4.3.5c0 0 1.1-.9 4.5-.9 2.7 0 6.1.8 9.1 1.5 2.1.4 4.1.9 5.3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d7.svg b/riot/emojione/svg/1f4d7.svg new file mode 100644 index 0000000..5ef4524 --- /dev/null +++ b/riot/emojione/svg/1f4d7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M55,35.1l7.5,7.4L29.2,58.4c0,0-4.4,2-6.5-1.2C14.5,44.4,55,35.1,55,35.1z" fill="#547725"/><path d="m28.4 49.1c0 0-6.4 2.2-5.2 6.5 1.2 4.4 6.3 1.7 6.3 1.7l31.6-14.7c0 0-1.8-4.7 1.4-7.8l-34.1 14.3" fill="#d9e3e8"/><path fill="#83bf4f" d="m33.7 5l30.3 29.5-35.8 14-23-35.8z"/><path fill="#fff" d="m34.6 11.7l5.8 6.2-21.7 7.8-5.1-7.9z"/><g fill="#94989b"><path d="m61 38l-21.1 8.6 20.8-9.5z"/><path d="m60.7 40.6l-22.5 9.3 22.1-10.3z"/><path d="M60.9 42 32.2 54.5 60.5 41.1z"/></g><path d="m22.7 57.2c-3.5-7.3 5.5-8.6 5.5-8.6l-23-35.9c0 0-5.2-.1-5.2 5.3 0 2.2 1 3.9 1 3.9l21.7 35.3" fill="#699635"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d8.svg b/riot/emojione/svg/1f4d8.svg new file mode 100644 index 0000000..3e1ba1c --- /dev/null +++ b/riot/emojione/svg/1f4d8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M55,35.1l7.5,7.4L29.2,58.4c0,0-4.4,2-6.5-1.2C14.5,44.4,55,35.1,55,35.1z" fill="#256382"/><path d="m28.4 49.1c0 0-6.4 2.2-5.2 6.5 1.2 4.4 6.3 1.7 6.3 1.7l31.6-14.7c0 0-1.8-4.7 1.4-7.8l-34.1 14.3" fill="#d9e3e8"/><path fill="#42ade2" d="m33.7 5l30.3 29.5-35.8 14-23-35.8z"/><path fill="#fff" d="m34.6 11.7l5.8 6.2-21.7 7.8-5.1-7.9z"/><g fill="#94989b"><path d="m61 38l-21.1 8.6 20.8-9.5z"/><path d="m60.7 40.6l-22.5 9.3 22.1-10.3z"/><path d="M60.9 42 32.2 54.5 60.5 41.1z"/></g><path d="m22.7 57.2c-3.5-7.3 5.5-8.6 5.5-8.6l-23-35.9c0 0-5.2-.1-5.2 5.3 0 2.2 1 3.9 1 3.9l21.7 35.3" fill="#428bc1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4d9.svg b/riot/emojione/svg/1f4d9.svg new file mode 100644 index 0000000..0758e63 --- /dev/null +++ b/riot/emojione/svg/1f4d9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M55,35.1l7.5,7.4L29.2,58.4c0,0-4.4,2-6.5-1.2C14.5,44.4,55,35.1,55,35.1z" fill="#962c2c"/><path d="m28.4 49.1c0 0-6.4 2.2-5.2 6.5 1.2 4.4 6.3 1.7 6.3 1.7l31.6-14.7c0 0-1.8-4.7 1.4-7.8l-34.1 14.3" fill="#d9e3e8"/><path fill="#ffce31" d="m33.7 5l30.3 29.5-35.8 14-23-35.8z"/><path fill="#fff" d="m34.6 11.7l5.8 6.2-21.7 7.8-5.1-7.9z"/><g fill="#94989b"><path d="m61 38l-21.1 8.6 20.8-9.5z"/><path d="m60.7 40.6l-22.5 9.3 22.1-10.3z"/><path d="M60.9 42 32.2 54.5 60.5 41.1z"/></g><path d="m22.7 57.2c-3.5-7.3 5.5-8.6 5.5-8.6l-23-35.9c0 0-5.2-.1-5.2 5.3 0 2.2 1 3.9 1 3.9l21.7 35.3" fill="#ff8736"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4da.svg b/riot/emojione/svg/1f4da.svg new file mode 100644 index 0000000..8469d33 --- /dev/null +++ b/riot/emojione/svg/1f4da.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m54.9 39.7l7.3 7.6-32.1 16.1c0 0-4.2 2.1-6.2-1.2-8-13 31-22.5 31-22.5" fill="#256382"/><path d="m29.2 53.9c0 0-6.1 2.3-5 6.6 1.2 4.5 6.1 1.8 6.1 1.8l30.5-15c0 0-1.7-4.8 1.4-8l-33 14.6" fill="#d9e3e8"/><path fill="#42ade2" d="M34.4 8.9 63.6 39 29.1 53.3 7 16.7z"/><g fill="#94989b"><path d="m60.7 42.6l-20.4 8.8 20-9.7z"/><path d="M60.4 45.2 38.7 54.7 60 44.3z"/><path d="M60.6 46.7 32.9 59.4 60.2 45.8z"/></g><path d="m23.8 62.1c-3.4-7.5 5.3-8.8 5.3-8.8l-22.1-36.6c0 0-5-.1-5 5.4 0 2.3 1 4 1 4l20.8 36" fill="#428bc1"/><path d="m8.7 32.2l-7.3 7.6 32.1 16.1c0 0 4.2 2.1 6.2-1.2 8-13-31-22.5-31-22.5" fill="#547725"/><path d="m34.3 46.4c0 0 6.1 2.3 5 6.6-1.2 4.5-6 1.8-6 1.8l-30.5-15c0 0 1.7-4.8-1.4-8l32.9 14.6" fill="#d9e3e8"/><path fill="#83bf4f" d="M29.2 1.4 0 31.5 34.5 45.8 56.6 9.2z"/><g fill="#94989b"><path d="m3.2 34.2l20 9.7-20.4-8.8z"/><path d="m3.6 36.8l21.2 10.4-21.7-9.5z"/><path d="M3.4 38.3 30.6 51.9 2.9 39.2z"/></g><path d="m39.8 54.6c3.4-7.5-5.3-8.8-5.3-8.8l22.1-36.6c0 0 5-.1 5 5.4 0 2.3-1 4-1 4l-20.8 36" fill="#699635"/><path d="M56.7,26l6.1,6.4L35.7,45.9c0,0-3.6,1.7-5.3-1C23.8,34,56.7,26,56.7,26z" fill="#962c2c"/><path d="M35,38c0,0-5.2,1.9-4.2,5.6c1,3.8,5.1,1.5,5.1,1.5l25.7-12.7c0,0-1.4-4,1.2-6.7L35,38z" fill="#d9e3e8"/><path fill="#ed4c5c" d="M39.4 0 64 25.4 34.9 37.5 16.2 6.6z"/><path fill="#fff" d="m40.1 5.8l4.8 5.3-17.7 6.7-4.2-6.8z"/><g fill="#94989b"><path d="m61.6 28.5l-17.2 7.3 16.8-8.2z"/><path d="M61.4 30.7 43 38.6 61 29.8z"/><path d="M61.6 31.9 38.2 42.6 61.1 31z"/></g><path d="m30.5 44.9c-2.8-6.3 4.5-7.4 4.5-7.4l-18.8-30.9c0 0-4.3-.1-4.3 4.5 0 1.9.8 3.4.8 3.4l17.8 30.4" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4db.svg b/riot/emojione/svg/1f4db.svg new file mode 100644 index 0000000..616945d --- /dev/null +++ b/riot/emojione/svg/1f4db.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 60.1c0 1-.8 1.9-1.9 1.9h-56.2c-1 0-1.9-.8-1.9-1.9v-43.1c0-1 .8-1.9 1.9-1.9h56.2c1 0 1.9.8 1.9 1.9v43.1" fill="#d9e3e8"/><path d="m59.2 57.3c0 1-.8 1.9-1.9 1.9h-50.6c-1 0-1.9-.8-1.9-1.9v-37.5c0-1 .8-1.9 1.9-1.9h50.6c1 0 1.9.8 1.9 1.9v37.5" fill="#ff5a79"/><g fill="#fff"><path d="M8.7,30.1V19.7h2.1v3.9h4v-3.9H17v10.3h-2.1v-4.6h-4v4.6H8.7z"/><path d="m26.7 21.6h-5.5v2.2h5v1.8h-5v2.7h5.8v1.9h-7.8v-10.5h7.6c-.1 0-.1 1.9-.1 1.9"/><path d="M28.7,19.7h2.2v8.5H36v1.9h-7.3V19.7z"/><path d="M37.4,19.7h2.2v8.5h5.2v1.9h-7.3V19.7z"/><path d="m54.1 29.2c-.8.8-1.9 1.2-3.4 1.2-1.5 0-2.6-.4-3.4-1.2-1-1-1.6-2.4-1.6-4.3 0-1.9.5-3.3 1.6-4.3.8-.8 1.9-1.2 3.4-1.2 1.5 0 2.6.4 3.4 1.2 1 .9 1.6 2.4 1.6 4.3 0 1.8-.5 3.3-1.6 4.3m-1.3-1.6c.5-.6.8-1.5.8-2.7 0-1.2-.3-2.1-.8-2.7-.5-.6-1.2-.9-2-.9s-1.5.3-2 .9c-.5.6-.8 1.5-.8 2.7s.3 2.1.8 2.7c.5.6 1.2.9 2 .9.8 0 1.5-.3 2-.9"/></g><path d="m36.7 15.2c0 1-.8 1.8-1.8 1.8h-5.8c-1 0-1.8-.8-1.8-1.8v-10.5c0-1 .8-1.8 1.8-1.8h5.8c1 0 1.8.8 1.8 1.8v10.5" fill="#8b979e"/><path d="m36.7 14.3c0 1-.8 1.8-1.8 1.8h-5.8c-1 0-1.8-.8-1.8-1.8v-10.5c0-1 .8-1.8 1.8-1.8h5.8c1 0 1.8.8 1.8 1.8v10.5" fill="#b0bdc6"/><path d="m56.4 54.5c0 1-.8 1.9-1.9 1.9h-45c-1 0-1.9-.8-1.9-1.9v-20.6c0-1 .8-1.9 1.9-1.9h45c1 0 1.9.8 1.9 1.9v20.6" fill="#fff"/><g fill="#ff5a79"><path d="m16.2 33.8h1.3v4.4h-.9v-3c0-.1 0-.2 0-.4 0-.2 0-.3 0-.4l-.8 3.7h-.9l-.8-3.7c0 .1 0 .2 0 .4 0 .2 0 .3 0 .4v3h-.9v-4.4h1.4l.8 3.5.8-3.5"/><path d="m18.4 38.9h.1c.1 0 .2 0 .2 0 .1 0 .1 0 .2-.1 0 0 .1-.1.1-.2s.1-.2.1-.2l-1.1-3.4h1l.7 2.4.7-2.4h.9l-1.1 3.2c-.2.6-.4 1-.5 1.2-.1.2-.4.2-.8.2-.1 0-.1 0-.2 0 0 0-.1 0-.2 0-.1 0-.1-.7-.1-.7"/><path d="m26.1 35.2c.2.2.3.5.3.9v2.2h-.9v-2c0-.2 0-.3-.1-.4-.1-.2-.2-.3-.5-.3-.3 0-.5.1-.6.4-.1.1-.1.3-.1.5v1.8h-.9v-3.3h.8v.5c.1-.2.2-.3.3-.4.2-.1.4-.2.7-.2.5 0 .8.1 1 .3"/><path d="m28.5 36.3c.2 0 .3 0 .3-.1.1-.1.2-.1.2-.2 0-.1 0-.2-.1-.3-.1-.1-.2-.1-.4-.1-.2 0-.4 0-.4.1-.1.1-.1.2-.1.3h-.8c0-.3.1-.5.2-.7.2-.3.6-.4 1.2-.4.4 0 .7.1 1 .2.3.1.4.4.4.8v1.5c0 .1 0 .2 0 .4 0 .1 0 .2.1.2 0 0 .1.1.1.1v.1h-.9c0-.1 0-.1-.1-.2 0-.1 0-.1 0-.2-.1.1-.3.2-.4.3-.2.1-.4.2-.6.2-.3 0-.5-.1-.7-.3-.4 0-.5-.3-.5-.6 0-.4.2-.7.5-.9.2-.1.4-.2.8-.2h.2m.6.4c-.1 0-.1.1-.2.1-.1 0-.1 0-.2.1h-.2c-.2 0-.3.1-.4.1-.1.1-.2.2-.2.4 0 .1 0 .3.1.3.1.1.2.1.3.1.2 0 .4-.1.5-.2.2-.1.2-.3.2-.6l.1-.3"/><path d="m34.8 35c.1.1.3.2.4.3.1.1.2.3.2.4 0 .1 0 .3 0 .5v2.1h-.9v-2.1c0-.1 0-.2-.1-.3-.1-.2-.2-.2-.4-.2-.2 0-.4.1-.5.3 0 .1-.1.2-.1.4v2h-.9v-2c0-.2 0-.3-.1-.4-.1-.2-.2-.2-.4-.2-.2 0-.4.1-.5.2 0 .1-.1.2-.1.4v2h-.9v-3.4h.8v.5c.1-.2.2-.3.3-.4.2-.1.4-.2.6-.2.3 0 .5.1.6.2.1.1.2.2.3.4.1-.2.3-.3.4-.4.2-.1.4-.1.6-.1.4-.1.5 0 .7 0"/><path d="m38.3 35.1c.2.1.4.3.6.5.1.2.2.4.3.7 0 .2 0 .4 0 .7h-2.4c0 .3.1.6.3.7.1.1.3.1.5.1.2 0 .4 0 .5-.2.1-.1.1-.1.2-.2h.9c0 .2-.1.4-.3.6-.3.3-.7.5-1.2.5-.4 0-.8-.1-1.2-.4-.3-.3-.5-.7-.5-1.3 0-.6.2-1 .5-1.3.3-.3.7-.5 1.2-.5.1-.1.4 0 .6.1m-1.3.7c-.1.1-.2.3-.2.5h1.5c0-.2-.1-.4-.2-.5-.1-.1-.3-.2-.5-.2-.3 0-.5.1-.6.2"/><path d="m42.2 34.6h-.9v-.8h.9v.8m-.9.4h.9v3.3h-.9v-3.3"/><path d="m43.7 37.2c0 .2.1.3.1.3.1.1.3.2.6.2.2 0 .3 0 .4-.1.1-.1.2-.1.2-.2 0-.1 0-.2-.1-.2-.1-.1-.4-.1-.9-.3-.4-.1-.6-.2-.8-.3-.2-.1-.2-.3-.2-.6 0-.3.1-.6.4-.8.2-.2.6-.3 1-.3.4 0 .7.1 1 .2.3.2.4.4.4.8h-.9c0-.1 0-.2-.1-.3-.1-.1-.3-.2-.5-.2-.2 0-.3 0-.4.1-.1.1-.1.1-.1.2 0 .1 0 .2.1.2.1 0 .4.1.9.2.3.1.6.2.8.4.2.2.3.4.3.6 0 .3-.1.6-.4.8-.2.2-.6.3-1.1.3-.5 0-.9-.1-1.1-.3-.2-.2-.4-.5-.4-.8l.8.1"/><path d="m46.5 37.4h.9v.9h-.9v-.9"/><path d="m48.2 37.4h.9v.9h-.9v-.9"/><path d="m49.9 37.4h.9v.9h-.9v-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4dc.svg b/riot/emojione/svg/1f4dc.svg new file mode 100644 index 0000000..6b1d359 --- /dev/null +++ b/riot/emojione/svg/1f4dc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#89664c"><path d="m8.8 3.1c0 .7-.6 1.2-1.2 1.2-.7 0-1.2-.6-1.2-1.2v-1.9c0-.6.5-1.2 1.2-1.2.7 0 1.2.6 1.2 1.2v1.9"/><path d="m6.4 60.9c0-.7.6-1.2 1.2-1.2.7 0 1.2.6 1.2 1.2v1.9c0 .7-.6 1.2-1.2 1.2-.7 0-1.2-.6-1.2-1.2 0 0 0-1.9 0-1.9"/></g><g fill="#a57b5e"><path d="m13.1 5.8c0 1.7-1.4 3.1-3.1 3.1h-4.8c-1.7 0-3.1-1.4-3.1-3.1 0-1.7 1.4-3.1 3.1-3.1h4.8c1.7-.1 3.1 1.3 3.1 3.1"/><path d="m2.1 58.2c0-1.7 1.4-3.1 3.1-3.1h4.8c1.7 0 3.1 1.4 3.1 3.1 0 1.7-1.4 3.1-3.1 3.1h-4.8c-1.7.1-3.1-1.3-3.1-3.1"/></g><path fill="#dfcea3" d="m2.4 9.9h10.4v44.2h-10.4z"/><g fill="#89664c"><path d="m15.2 8.5c0 .8-.6 1.4-1.4 1.4h-12.4c-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4h12.4c.8 0 1.4.7 1.4 1.4"/><path d="m0 55.5c0-.8.6-1.4 1.4-1.4h12.4c.8 0 1.4.6 1.4 1.4 0 .8-.6 1.4-1.4 1.4h-12.4c-.8-.1-1.4-.7-1.4-1.4"/></g><g fill="#a57b5e"><path d="m8.6 3.1c0 .7-.4 1.2-1 1.2-.5 0-1-.6-1-1.2v-1.9c0-.7.4-1.2 1-1.2.5 0 1 .6 1 1.2v1.9"/><path d="m6.6 60.9c0-.7.4-1.2 1-1.2.5 0 1 .6 1 1.2v1.9c0 .7-.4 1.2-1 1.2-.5 0-1-.6-1-1.2 0 0 0-1.9 0-1.9"/></g><g fill="#bf9173"><path d="m11.9 5.8c0 1.7-1.1 3.1-2.4 3.1h-3.7c-1.3 0-2.4-1.4-2.4-3.1 0-1.7 1.1-3.1 2.4-3.1h3.7c1.3-.1 2.4 1.3 2.4 3.1"/><path d="m3.3 58.2c0-1.7 1.1-3.1 2.4-3.1h3.7c1.3 0 2.4 1.4 2.4 3.1 0 1.7-1.1 3.1-2.4 3.1h-3.6c-1.4.1-2.5-1.3-2.5-3.1"/></g><path fill="#efd8b1" d="m3.6 9.9h8.1v44.2h-8.1z"/><g fill="#a57b5e"><path d="m13.5 8.5c0 .8-.5 1.4-1.1 1.4h-9.6c-.6 0-1.1-.6-1.1-1.4 0-.8.5-1.4 1.1-1.4h9.6c.6 0 1.1.7 1.1 1.4"/><path d="m1.7 55.5c0-.8.5-1.4 1.1-1.4h9.6c.6 0 1.1.6 1.1 1.4 0 .8-.5 1.4-1.1 1.4h-9.6c-.6-.1-1.1-.7-1.1-1.4"/></g><g fill="#89664c"><path d="m57.6 3.1c0 .7-.6 1.2-1.2 1.2-.7 0-1.2-.6-1.2-1.2v-1.9c0-.7.6-1.2 1.2-1.2.7 0 1.2.6 1.2 1.2v1.9"/><path d="m55.2 60.9c0-.7.6-1.2 1.2-1.2.7 0 1.2.6 1.2 1.2v1.9c0 .7-.6 1.2-1.2 1.2-.7 0-1.2-.6-1.2-1.2v-1.9"/></g><g fill="#a57b5e"><path d="m61.9 5.8c0 1.7-1.4 3.1-3.1 3.1h-4.8c-1.7 0-3.1-1.4-3.1-3.1 0-1.7 1.4-3.1 3.1-3.1h4.8c1.7-.1 3.1 1.3 3.1 3.1"/><path d="m50.9 58.2c0-1.7 1.4-3.1 3.1-3.1h4.8c1.7 0 3.1 1.4 3.1 3.1 0 1.7-1.4 3.1-3.1 3.1h-4.8c-1.7.1-3.1-1.3-3.1-3.1"/></g><path fill="#dfcea3" d="m51.2 9.9h10.4v44.2h-10.4z"/><g fill="#89664c"><path d="m64 8.5c0 .8-.6 1.4-1.4 1.4h-12.4c-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4h12.4c.8.1 1.4.7 1.4 1.4"/><path d="m48.8 55.5c0-.8.6-1.4 1.4-1.4h12.4c.8 0 1.4.6 1.4 1.4 0 .8-.6 1.4-1.4 1.4h-12.4c-.8 0-1.4-.7-1.4-1.4"/></g><g fill="#a57b5e"><path d="m57.4 3.1c0 .7-.4 1.2-1 1.2-.5 0-1-.6-1-1.2v-1.9c0-.7.4-1.2 1-1.2.5 0 1 .6 1 1.2v1.9"/><path d="m55.4 60.9c0-.7.4-1.2 1-1.2.5 0 1 .6 1 1.2v1.9c0 .7-.4 1.2-1 1.2-.5 0-1-.6-1-1.2v-1.9"/></g><g fill="#bf9173"><path d="m60.7 5.8c0 1.7-1.1 3.1-2.4 3.1h-3.7c-1.3 0-2.4-1.4-2.4-3.1 0-1.7 1.1-3.1 2.4-3.1h3.7c1.3-.1 2.4 1.3 2.4 3.1"/><path d="m52.1 58.2c0-1.7 1.1-3.1 2.4-3.1h3.7c1.3 0 2.4 1.4 2.4 3.1 0 1.7-1.1 3.1-2.4 3.1h-3.7c-1.3.1-2.4-1.3-2.4-3.1"/></g><path fill="#efd8b1" d="m52.4 9.9h8.1v44.2h-8.1z"/><g fill="#a57b5e"><path d="m62.3 8.5c0 .8-.5 1.4-1.1 1.4h-9.6c-.6 0-1.1-.6-1.1-1.4 0-.8.5-1.4 1.1-1.4h9.6c.6.1 1.1.7 1.1 1.4"/><path d="m50.5 55.5c0-.8.5-1.4 1.1-1.4h9.6c.6 0 1.1.6 1.1 1.4 0 .8-.5 1.4-1.1 1.4h-9.6c-.6 0-1.1-.7-1.1-1.4"/></g><path d="M51.2,54.1c-19.2,4.2-38.4,0-38.4,0V9.9c19.2,4.1,38.4,0,38.4,0V54.1z" fill="#fff6d7"/><g fill="none" stroke="#7d8b91" stroke-miterlimit="10"><path d="m17.8 15.9c0 0 4.9 1.5 14.2 1.5 9.8 0 14.6-1.5 14.6-1.5"/><path d="m17.8 20.4c0 0 4.9 1.5 14.2 1.5 9.8 0 14.6-1.5 14.6-1.5"/><path d="m17.8 25c0 0 4.9 1.5 14.2 1.5"/><path d="m24.9 35.3c2 .2 4.3.3 7.1.3 9.8 0 14.6-1.5 14.6-1.5"/><path d="m17.8 38.7c0 0 4.9 1.5 14.2 1.5 9.8 0 14.6-1.5 14.6-1.5"/><path d="m17.8 43.3c0 0 4.9 1.5 14.2 1.5 9.8 0 14.6-1.5 14.6-1.5"/><path d="m17.8 47.8c0 0 4.9 1.5 14.2 1.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4dd.svg b/riot/emojione/svg/1f4dd.svg new file mode 100644 index 0000000..5e6f46c --- /dev/null +++ b/riot/emojione/svg/1f4dd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m0 20.3c0 0 28.2 29.9 31.2 43.7 0 0 8.1-17.9 32.8-25.4 0 0-8.8-20.6-32.2-37 0 0-23.9 7.2-31.8 18.7" fill="#efd8b1"/><path d="m3.2 7.9c0 0 22 38.2 22.4 52.5 0 0 11-14.8 36.4-14 0 0-4.8-22.9-24.6-46.3 0-.1-24.5-.9-34.2 7.8" fill="#fff6d7"/><g fill="#7d8b91"><path d="m19.9 9.4c-.3.4.2-.4 0 0"/><path d="m19.9 9.4c.2-.3.3-.8.6-1.1.4-.3.8-.1 1.2-.4.8-.6 1.2-1.6 1.9-2.3.8-.8 1.8-1.3 2.9-1.6 1.1-.4 2.2-1.2 3.3-1.2-.5 1.5-1.5 2.8-1.7 4.5-.1.9 0 1.8.1 2.7.2-.7.4-1.4.6-2 .4-.9 1.3-.8 2.1-1.1.8-.4 1.5-1.1 2.2-1.7.3.5 1.4-.3 1.6.4.1.3 2.8-.1 3-.2-.6 0-2.7.1-2.8-.4-.3-.1-.9-.2-1.3-.2 0-.2 0-.5 0-.7-.6.4-1.2.9-1.8 1.4-.9.7-2 .5-2.9 1.2.3-1 .9-1.9 1.3-2.9.2-.4.3-.9.4-1.3.1-.4 0-.2-.3-.4-1.4-.4-2.8.7-4 1.2-1.1.5-2.1 1.1-2.9 1.9-.5.5-1.3 2.3-2 2.5-1.4 0-.9 1.3-1.8 1.7-.5.2-.8.2-1.3.5-.5.4-1.2 1.1-2 1 0-.6 0-1.2-.2-1.8-.8.4-1.1 1.1-1.8 1.6.2-1.6.9-2.9.9-4.6-.9.6-1.4 1.3-1.9 2.2-.6 1.1-1.1 2.9-2.3 3.5 0-1.5.7-3 .5-4.6-.3.8-.3 1.8-.5 2.5-.2.9-.4 1.8-.4 2.8 2.2-.3 2.6-3.5 3.9-4.9-.3 1.4-.8 2.7-.7 4.2.9-.5 1.3-1.5 2.1-2.1.3.9-.4 2.1 1.1 1.4.6-.3 1.1-.8 1.7-1.2.3-.2.9 0 1.2-.5"/><path d="m41.4 13.8c-.4-.4-1.1-.5-1.6-.9-.6-.5-1.6-.3-2.2-.1-1.6.4-2.7.8-4.2 0 0 .5.1 2.5-.7 2.4-.7 0-.5-2.1-.6-2.8-.4.6-.7 1.1-.7 1.8 0 .5.2.8-.2 1.3-.6.5-1.5.4-2.2.3-.2-1.1.1-2.4.2-3.6-.2 1-.5 2-.7 3.1-.2.8-.9.9-1.5.7-.1-.2.1-1 .1-1.2-.6 1.1-1 2.5-1.8 3.5-.4.5-1.3 1-1.7.2-.3-.5-.1-1.2 0-1.8-.5.6-1 2.3-1.8 2.3.1-.4.4-.8-.1-1-.2.4-.4.9-.7 1.4.2-.6.4-1.3.5-2-1.3.8-2.1 1.9-2.8 3.2 0-.2.1-.7.1-.9-.1.4-.9 1.9-.4 2.2.7-1.1 1.3-2.3 2.3-3.2-.5 1.5-1.1 2.8-1.4 4.3.6-.7 1.2-1.5 1.7-2.3.1-.3.3-.6.4-.9.3-.8.3-.2.9-.6.5-.4.8-1.1 1.1-1.7-.1 1.8 1.4 2.1 2.4.7.4-.6.7-1.2 1-1.8 0 0 .8.2.8.2.4 0 .7 0 1-.2 1.1.4 2.8.5 3.5-.8 1.2 1.3 2-.7 2.1-1.7 1.2.5 2.3-.1 3.5-.5.7-.2 2-.8 2.5 0 .2.3.7.3 1.2.4"/><path d="m30.8 24.1c0 0 .1 0 0 0"/><path d="m30.8 24.1c0-.4-.3-.6-.7-.3-.5.4-.2-.3-.2-.7 0-.5.1-.9.1-1.4-.2.4-.5.8-.7 1.2-.4.7-.3 2-1.3 2.1.2-.5.3-1 .4-1.5-.5.5-1.1.8-1.1 1.6 0 1-1 3.4-2.3 3.1.1-2 1.2-3.8 1.7-5.7-2 1.2-3.7 4.2-3.9 6.4 1-1.7 1.7-3.6 3.1-5-.4 1.5-.9 2.9-1 4.4 0 .3.8.1.9.1.7-.2 1.2-.9 1.5-1.5.1-.2.3-.5.4-.7.3-.6.4-.2.9-.5.7-.3.7-1.2 1.4-1.1.7.1 2.2-.1 2.7-.4-.6 0-1.2.1-1.9-.1m-.5-.4c.1.1.1.1.2.2-.1 0-.2-.1-.2-.2"/><path d="m44.1 42.4c.5-.7-.2-.1 0 0"/><path d="m42.2 44.6c0 0 0 0 0 0"/><path d="m58.4 39.7c-1.8-1.3-3.9-2.1-5.9-3.2.4.6 1 1.3 1.3 2-1 .1-.9 1.9-1 1.9-.5-.3-1.9 0-2.5.1 0-.1 0-.2.1-.3-1.8 1.2-3.3 3-5.7 2.5 1.1-1.7 2-3.6 1.9-5.7-1.8.6-2.8 2.3-3.6 3.9-.2-.6-1-1.1-1.5-.6-.6.5-.9 1.5-1.1 2.2-.3.9-.4 1.9-.5 2.8 0 .7-.1.8.6.8 1.7 0 3.2-2 4-3.2 2.2.6 3.5-.4 5.2-1.6 0 .8.6 1.3 1.4 1.1.8-.2 1.2-1.2 1.8-1.2.5 0 .8.2 1.3.2.5 0 1.1-.1 1.6-.2-.6-.7-.8-1.2-1-2.1 1.2.3 2.3.6 3.6.6m-16.2 4.9c.2-.2.3-.3 0 0-.3.2-.2.2-.1.1-.5.4-1.1.9-1.8.9 0-1.5.2-3.3.9-4.6.4-.6.9-.8 1.5-.3.4.4-.1.8-.1 1.2.1-.2.2-.4.3-.5.1.6.4 1 1 1.3-.5.6-1 1.3-1.7 1.9m1.9-2.2c-2.4-1 .7-4.1 2.1-4.7-.2 1.7-1.1 3.3-2.1 4.7m6.9-.8c-.8.2-.8-.6-.7-1.1.5.2 1 .4 1.6.5-.2.3-.5.6-.9.6m2.7-.7v-.1c0 .2 0 .1 0 .1m.2-.6c.1-.1.1-.3.1-.4-.3.1-.5.2-.8.3 0-.3-.1-1.1.3-1.2.8-.4.8.9.9 1.4-.2 0-.4 0-.5-.1m.9-1.8c-.1 0-.1 0-.2 0-.1-.1 0-.1.2 0"/></g><path transform="matrix(.7072-.707.707.7072 2.21 38.4031)" fill="#ffce31" d="m36.1 11.2h22.8v10.7h-22.8z"/><path d="m62.6 2.3l-1-1c-1.8-1.8-4.8-1.8-6.6 0l-3.3 3.3 7.6 7.6 3.3-3.3c1.9-1.8 1.9-4.7 0-6.6" fill="#ed4c5c"/><path transform="matrix(.7072-.707.707.7072 9.252 41.321)" fill="#93a2aa" d="m53.1 4.1h2.9v10.7h-2.9z"/><path transform="matrix(.7071-.7071.7071.7071 9.2573 41.3262)" fill="#c7d3d8" d="m53.1 5.3h2.9v8.4h-2.9z"/><path fill="#fed0ac" d="m35.6 20.8l-3.3 8.6 2.3 2.3 8.6-3.3z"/><path d="m31.8 30.9c-.5 1.2.2 1.8 1.3 1.3l4.2-1.6-3.9-3.9-1.6 4.2" fill="#333"/><path transform="matrix(.7071-.7071.7071.7071 2.2265 35.4574)" fill="#ffdf85" d="m34 13.3h19.9v3.6h-19.9z"/><path transform="matrix(.707-.7072.7072.707.1411 40.5113)" fill="#ff8736" d="m39 18.3h19.9v3.6h-19.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4de.svg b/riot/emojione/svg/1f4de.svg new file mode 100644 index 0000000..a403943 --- /dev/null +++ b/riot/emojione/svg/1f4de.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.4 2.5c-2.5-3.5-22.7 11.8-20.2 15.3 2 2.7 4.5 4.6 7.1 5.8-2.7 2.7-5.8 5.4-9.2 8-3.5 2.6-6.9 4.8-10.2 6.7-.4-2.9-1.5-5.9-3.5-8.5-2.5-3.6-22.7 11.7-20.2 15.1 3.6 4.9 8.9 7.4 13.7 7 6.4-.4 16.4-4.9 26.2-12.3 11.3-8.5 18.9-18.3 19.7-24.5.7-4-.5-8.6-3.4-12.6" fill="#676e72"/><g fill="#373e42"><path d="m8 47.2c.1 0 .1 0 0 0"/><path d="m8 47.2c-1.8-1.3-4.4-2.7-3.8-5.1-4.3 4.3 7.1 9.2 10.2 8.3-2.2-.8-4.3-1.8-6.4-3.2"/><path d="m47.1 21.8c-2.3-1.2-7.6-3.7-6.8-7-4.3 4.3 7.1 9.2 10.2 8.3-1.2-.3-2.3-.7-3.4-1.3"/><path d="m51.8 42.5c.6-.8 1.5-1.6 2.5-2.3.4-.3.5-.9.3-1.3-.3-.4-.9-.5-1.3-.3-1.4.9-2.5 2-3.3 3.1-.5-.2-1.1-.3-1.7-.3-1.5-.1-2.8.5-3.9 1.6-.6.6-1.1 1.6-1.4 2.6-1.3 0-2.6.5-3.6 1.4-.9.8-1.4 1.8-1.7 2.9-1.8-.1-3.4.8-4.1 1.4-.4-.3-.9-.6-1.3-.9-1.3-.6-2.8-.6-4.2 0-.8.3-1.6 1-2.3 1.9-1.2-.5-2.6-.5-3.8-.1-1.1.4-2 1.1-2.7 2-2.4-1.1-5.6-1.4-8.7-.6-2.8.7-6-.9-6.6-2.7-.5-1.4 1.2-2.5 2.3-3 .5-.2.7-.8.5-1.2s-.8-.7-1.2-.5c-3.9 1.8-3.6 4.3-3.3 5.2.9 2.8 5.2 4.7 8.7 3.9 2.6-.6 5.3-.4 7.3.4-.6 1.1-.9 2.3-.9 2.9 0 1.8.9 2.6 1.5 2.9.3.2.7.3 1 .3.7.1 1.4 0 2-.4.8-.5 1.3-1.3 1.3-2.2 0-1.6-.8-3-2.2-4.1.5-.5 1.1-1 1.7-1.2.8-.3 1.6-.2 2.2-.1-.8 1.6-1.1 3.4-.5 4.9.5 1.3 1.8 2 3.2 1.7 1.4-.3 2.3-1.5 2.3-2.9-.1-1.6-.9-3.3-2.3-4.4.4-.5.9-.9 1.4-1.1 1-.4 1.8-.4 2.7 0 .3.1.5.3.8.5-.3.3-.5.6-.7.9-.7 1.2-.8 2.6-.4 3.9.6 1.7 2.1 2.1 3.2 1.8 1.4-.5 2.5-2.2 1.8-4.2-.2-.6-.6-1.4-1.2-2.2l-.1-.1c.6-.4 1.5-.9 2.5-.9-.1 1.3 0 2.4.3 3 .7 1.6 1.9 2 2.5 2.1.4 0 .7 0 1.1-.1.7-.2 1.3-.6 1.7-1.2.6-.8.7-1.7.3-2.5-.7-1.5-1.9-2.5-3.6-2.9.2-.7.6-1.3 1.1-1.8.7-.6 1.4-.8 2-.9-.1 1.8.3 3.6 1.4 4.7 1 1 2.5 1.1 3.6.3 1.2-.8 1.6-2.3 1-3.5-.7-1.5-2.2-2.6-3.9-3.1.2-.6.5-1.2.8-1.6.7-.7 1.5-1.1 2.5-1.1.3 0 .6.1.9.1-.1.4-.2.8-.3 1.1-.2 1.4.2 2.7 1.2 3.7 1.2 1.4 2.7 1.2 3.6.4 1.1-1 1.4-3 0-4.6-.4-.2-1.1-.8-2-1.3m-30.6 16.9c0 .3-.2.5-.4.6-.4.2-.9.2-1.2 0-.4-.3-.5-.8-.5-1.3 0-.3.2-1.1.7-2 .9.8 1.4 1.7 1.4 2.7m6.7-1.6c0 .8-.7.9-.8 1s-.9.1-1.1-.6c-.4-.9-.1-2.2.4-3.3.9.7 1.5 1.8 1.5 2.9m6-.3c-.5.2-.7-.3-.9-.6-.3-.8-.2-1.6.3-2.3.1-.2.2-.4.4-.5.5.6.8 1.3.9 1.6.2 1-.3 1.7-.7 1.8m7.7-3.5c.1.3 0 .5-.1.7-.3.3-.7.6-1.1.5-.5-.1-.8-.6-1-1-.1-.3-.2-1.1-.1-2.1 1.1.3 1.9.9 2.3 1.9m5.6-4.2c.3.7-.3 1.1-.4 1.2s-.8.5-1.3 0c-.7-.7-1-2-.9-3.2 1.1.3 2.1 1.1 2.6 2m5.3-2.5c-.4.3-.8.1-1-.2-.5-.6-.8-1.4-.7-2.2 0-.2.1-.4.1-.7.7.4 1.2.9 1.4 1.1.8.9.5 1.7.2 2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4df.svg b/riot/emojione/svg/1f4df.svg new file mode 100644 index 0000000..a46aa37 --- /dev/null +++ b/riot/emojione/svg/1f4df.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,47c0,3.3-2.7,6-6,6H8c-3.3,0-6-2.7-6-6V17c0-3.3,2.7-6,6-6h48c3.3,0,6,2.7,6,6V47z" fill="#3e4347"/><g fill="#62727a"><path d="m15 48c0 .5-.4 1-1 1h-4c-.6 0-1-.5-1-1v-4c0-.5.4-1 1-1h4c.6 0 1 .5 1 1v4"/><path d="m23 48c0 .5-.5 1-1 1h-4c-.5 0-1-.5-1-1v-4c0-.5.5-1 1-1h4c.5 0 1 .5 1 1v4"/><path d="m31 48c0 .5-.5 1-1 1h-4c-.5 0-1-.5-1-1v-4c0-.5.5-1 1-1h4c.5 0 1 .5 1 1v4"/><path d="m9 15c-1.1 0-2 .9-2 2v22c0 1.1.9 2 2 2h21c1.1 0 2.7.6 3.6 1.2l6.9 5.5c.9.7 2.5 1.2 3.6 1.2h11c1.1 0 2-.9 2-2v-29.9c0-1.1-.9-2-2-2-.1 0-46.1 0-46.1 0"/></g><path d="m55 45c0 1.1-.9 2-2 2h-8c-1.1 0-2.7-.5-3.6-1.2l-4.8-3.6c-.9-.7-.7-1.2.4-1.2h16c1.1 0 2 .9 2 2v2" fill="#3e4347"/><path d="m46.4 45.8c-.3.3-.9.3-1.2 0-.3-.3-.3-.9 0-1.2l2.3-2.3c.3-.3.8-.3 1.2 0 .3.3.3.9 0 1.2l-2.3 2.3" fill="#83bf4f"/><g fill="#b2c1c0"><path d="m19 46l2 1v-2z"/><path d="m29 46l-2 1v-2z"/></g><circle cx="12" cy="46" r="1" fill="#f15744"/><path d="m51 35c0 1.1-.9 2-2 2h-34c-1.1 0-2-.9-2-2v-12c0-1.1.9-2 2-2h34c1.1 0 2 .9 2 2v12" fill="#c7e755"/><path d="m55 18c0-.5-.5-1-1-1h-6c-.5 0-1 .5-1 1 0 .5.5 1 1 1h6c.5 0 1-.4 1-1" fill="#f15744"/><g opacity=".7" fill="#3e4347"><path d="m17.9 28.6l.4.4-.4.4h-2.8l-.4-.4.4-.4h2.8"/><path d="m19.7 28.9l-.2-.2v-2.5l.5-.5.3.3v2.3l-.6.6m.6.9v2.3l-.3.3-.5-.5v-2.5l.2-.2.6.6m2.6-3.9h-2.4l-.4-.4.4-.4h2.4l.4.4-.4.4m.5 6.6l-.4.4h-2.4l-.4-.4.4-.4h2.4l.4.4m-.2-4.3v-2.3l.3-.3.5.5v2.5l-.2.2-.6-.6m.6.9l.2.2v2.5l-.5.5-.3-.3v-2.3l.6-.6"/><path d="m28.4 28.6l.4.4-.4.4h-2.8l-.5-.4.4-.4h2.9"/><path d="m30.1 29l-.2-.2v-3.1l.5-.5.3.9v2.3l-.6.6m.7.8v2.3l-.3.9-.5-.5v-3.1l.2-.2.6.6m2.6-1.5h-.8l-1.6-1.6v-.7h.7l1.7 1.7v.6m.2 0v-2.3l.3-.9.5.5v3.1l-.1.3-.7-.7m.7.8l.2.2v3.1l-.5.5-.3-.9v-2.3l.6-.6"/><path d="m38.9 28.6l.4.4-.4.4h-2.9l-.4-.4.4-.4h2.9"/><path d="m41.3 26.2v2.1l-.7.7-.2-.2v-2.8l.9.2m-.9 6v-2.8l.2-.2.7.7v2.1l-.9.2m4.1.7h-3.6l-.5-.5.9-.3h2.9l.3.8m-.3-7h-2.9l-.9-.3.5-.5h3.6l-.3.8m-.1 2.7l.4.4-.4.4h-2.8l-.5-.4.4-.4h2.9"/><path d="m48.9 28.6l.4.4-.4.4h-2.8l-.5-.4.4-.4h2.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e0.svg b/riot/emojione/svg/1f4e0.svg new file mode 100644 index 0000000..7e52dbf --- /dev/null +++ b/riot/emojione/svg/1f4e0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3e4347" d="m6.4 30.9h13.3v31.1h-13.3z"/><g fill="#62727a"><path d="m61.2 42c-.2-1.2-1.5-2.2-2.7-2.2-16.9 0-24.9 0-41.9 0-1.2 0-2.4 1-2.7 2.2-1.1 5.9-1.1 11.9 0 17.8.2 1.2 1.5 2.2 2.7 2.2 16.9 0 24.9 0 41.9 0 1.2 0 2.4-1 2.7-2.2 1.1-5.9 1.1-11.9 0-17.8"/><path d="M56.7,21.9c-0.1-1.2-1.2-2.2-2.4-2.2H18.7c-1.2,0-2.3,1-2.4,2.2l-1.4,13.4H58L56.7,21.9z"/></g><g fill="#3e4347"><path d="m58 35.3h-44.2l-.5 4.5h45.1z"/><path d="m33.6 53.1h-16.5c-1 0-1.8-.8-1.8-1.9v-7.4c0-1 .8-1.9 1.8-1.9h16.5c1 0 1.8.8 1.8 1.9v7.4c-.1 1.1-.9 1.9-1.8 1.9m-16.5-9.9c-.3 0-.6.3-.6.6v7.4c0 .3.3.6.6.6h16.5c.3 0 .6-.3.6-.6v-7.4c0-.3-.3-.6-.6-.6h-16.5"/></g><path d="m27.6 46.4c0 .6-.5 1.1-1.1 1.1h-7.8c-.6 0-1.1-.5-1.1-1.1v-1.1c0-.6.5-1.1 1.1-1.1h7.8c.6 0 1.1.5 1.1 1.1v1.1" fill="#c7e755"/><g fill="#3e4347"><path d="m33.1 47c0 .3-.2.6-.6.6h-3.3c-.3 0-.6-.2-.6-.6v-1.1c0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6v1.1"/><path d="m55.2 43.7c0 .3-.2.6-.6.6h-3.3c-.3 0-.6-.2-.6-.6v-1.1c0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6v1.1"/><path d="m22 50.3c0 .3-.2.6-.6.6h-3.3c-.3 0-.6-.2-.6-.6v-1.1c0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6v1.1"/><path d="m33.1 50.3c0 .3-.2.6-.6.6h-3.3c-.3 0-.6-.2-.6-.6v-1.1c0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6v1.1"/><path d="m27.6 50.3c0 .3-.2.6-.6.6h-3.3c-.3 0-.6-.2-.6-.6v-1.1c0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6v1.1"/></g><g fill="#b2c1c0"><circle cx="32" cy="57.6" r="2.2"/><path d="m59.7 53.1c0-1.2-1-2.2-2.2-2.2-.9 0-1.7.5-2 1.3-.1.1-.1.3-.1.4-.2.5-.6.5-1.2.5-1.8 0-3.3 1.5-3.3 3.3 0 1.8 1.5 3.3 3.3 3.3s3.3-1.5 3.3-3.3c0-.6 0-.9.5-1.2.1 0 .3-.1.4-.1.7-.3 1.3-1.1 1.3-2"/></g><circle cx="54.1" cy="56.4" r="2.2" fill="#258399"/><g fill="#3e4347"><circle cx="57.4" cy="53.1" r="1.1"/><circle cx="53" cy="47.6" r="1.1"/><path d="m56 39.8l-1.6-15.6c-.1-1.2-1.2-2.2-2.4-2.2h-31.1c-1.2 0-2.3 1-2.4 2.2l-1.6 15.6h39.1"/></g><path fill="#f5f5f5" d="m19.8 2h33.3v33.3h-33.3z"/><path d="m27.5 39.8l.6-6.2c.1-.9.9-1.6 1.8-1.6h12.9c.9 0 1.7.7 1.8 1.6l.6 6.2h1.1l-.6-6.3c-.1-1.4-1.4-2.6-2.9-2.6h-12.8c-1.5 0-2.8 1.2-2.9 2.6l-.6 6.3h1" fill="#a4b3b2"/><path d="m8.7 29c-1.5-.4-3-.4-4.5 0-1.3.3-2.2 2-2.2 3.2.3 8.3.3 16.7.1 25-.1 2.6 1.8 4.8 4.3 4.8 2.5 0 4.5-2.2 4.4-4.8-.2-8.3-.2-16.7.1-25 0-1.2-.9-2.9-2.2-3.2" fill="#62727a"/><g fill="#a4b3b2"><path d="m22 6.4h28.9v2.2h-28.9z"/><path d="m22 10.9h28.9v2.2h-28.9z"/><path d="m22 15.3h28.9v2.2h-28.9z"/><path d="m22 22h28.9v2.2h-28.9z"/><path d="m22 26.4h14.4v2.2h-14.4z"/></g><g fill="#3e4347"><circle cx="17.6" cy="57.6" r="1.1"/><circle cx="22" cy="57.6" r="1.1"/><circle cx="26.4" cy="57.6" r="1.1"/><circle cx="38.5" cy="56.6" r="1.1"/><circle cx="43" cy="56.6" r="1.1"/><circle cx="47.4" cy="56.6" r="1.1"/><circle cx="38.5" cy="52.5" r="1.1"/><circle cx="43" cy="52.5" r="1.1"/><circle cx="47.4" cy="52.5" r="1.1"/><circle cx="38.5" cy="48.4" r="1.1"/><circle cx="43" cy="48.4" r="1.1"/><circle cx="47.4" cy="48.4" r="1.1"/><circle cx="38.5" cy="44.3" r="1.1"/><circle cx="43" cy="44.3" r="1.1"/><circle cx="47.4" cy="44.3" r="1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e1.svg b/riot/emojione/svg/1f4e1.svg new file mode 100644 index 0000000..f15cb8a --- /dev/null +++ b/riot/emojione/svg/1f4e1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m25 48.6l-10.6-10c0 0-4.5 6.2-4.5 11.3h14.6c0-.8.5-1.3.5-1.3" fill="#94989b"/><g fill="#333"><path d="m26.9 48.5c-4.6 1.4-14.1-8-12.6-12.6 1.2-3.8 1.2-3.8 1.2-3.8l15.2 15.2c0 0 0 0-3.8 1.2"/><path d="m15.2 7.3c-3 3-4.6 6.9-4.9 11.2-.6 7.7 3 16.7 10.1 23.9 7.2 7.1 16.2 10.6 24 10.1 4.4-.3 8.3-1.9 11.3-4.9l-40.5-40.3"/></g><g fill="#42ade2"><path d="m43.5 8c1.9 1.6 3.9 3.4 6 5.4 2 2 3.9 4 5.5 5.9-.2-2.2-1.7-4.9-4.1-7.3-2.4-2.3-5.2-3.8-7.4-4"/><path d="m61 20.3c-.3-3.5-2.7-7.9-6.6-11.8-3.9-3.8-8.3-6.2-11.8-6.5 3.1 2.6 6.4 5.5 9.6 8.8 3.3 3.2 6.2 6.5 8.8 9.5"/></g><path d="m55.5 47.8c-3.1 3.1-14.7-3.4-25.9-14.5-11.2-11.2-17.7-22.7-14.5-25.9 3.1-3.1 14.7 3.4 25.9 14.6 11.1 11.1 17.7 22.6 14.5 25.8" fill="#94989b"/><path fill="#333" d="m33.1 32.5l-2.7-2.7 12.1-10.3 1 .9z"/><path d="m32.5 36c-3-2.7-5.7-5.6-5.7-5.6l4.5-3.1 4.2 4.2-3 4.5" fill="#da5b52"/><g fill="#333"><path d="m48 20.6c-1.6 1.6-4.1 1.6-5.7 0-1.6-1.6-1.6-4.1 0-5.6 1.6-1.6 4.1-1.6 5.7 0s1.5 4.1 0 5.6"/><path d="M9.9,49.9C7.2,49.9,5,52,5,54.7v5.2h8.6V49.9H9.9z"/></g><path d="m24.5 49.9h-11.8v10.1h16.6v-5.2c0-2.8-2.1-4.9-4.8-4.9" fill="#616161"/><path fill="#333" d="m3 59.2h8.6v2.8h-8.6z"/><g fill="#616161"><path d="m10.6 59.2h20.8v2.8h-20.8z"/><path d="m12.5 40.2h-2.3v1.5c-.6.9-.9 2.1-.9 3.4 0 1.3.3 2.5.9 3.4v1.5h2.3c1.8 0 3.2-2.2 3.2-4.9 0-2.8-1.4-4.9-3.2-4.9"/></g><ellipse cx="10.1" cy="45" rx="3.2" ry="4.9" fill="#333"/><ellipse cx="10.6" cy="45" rx="2.3" ry="4" fill="#0d0d0d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e2.svg b/riot/emojione/svg/1f4e2.svg new file mode 100644 index 0000000..44179fe --- /dev/null +++ b/riot/emojione/svg/1f4e2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m54.2 15.2c2.2 5.4 2.8 11.2 2.9 16.8-.1 5.6-.7 11.4-2.9 16.8-.5-5.6-.2-11.3-.2-16.9 0-5.5-.2-11.2.2-16.7"/><path d="m58.4 6.8c2.7 8.2 3.5 16.7 3.6 25.2-.1 8.4-.9 16.9-3.6 25.2 0-8.2.5-16.5.5-24.7.1-8.6-.4-17.2-.5-25.7"/></g><path fill="#333" d="m18.2 52.4h-8.1l14.5-13.6h8.1z"/><path d="m8.3 25.1c-1.6.1-3 .2-4.3.2 0 0-2.1 3.2-2.1 6.6 0 3.4 2.1 6.6 2.1 6.6 1.2 0 2.7.1 4.3.2-.6-1.2-1.7-4-1.7-6.9 0-2.7 1.1-5.5 1.7-6.7" fill="#b0bdc6"/><path d="m42.2 4.9c0 0-16 18-29.6 19.7-.7 1.7-1.6 4.5-1.6 7.4 0 2.9 1 5.7 1.7 7.3 13.6 1.7 29.5 19.7 29.5 19.7v-54.1" fill="#ed4c5c"/><path d="m12.7 24.6c-1.5.2-3 .3-4.3.5-.6 1.2-1.7 4-1.7 6.9 0 2.9 1.2 5.7 1.7 6.9 1.4.1 2.8.3 4.3.5-.7-1.8-1.7-4.6-1.7-7.4 0-2.9.9-5.7 1.7-7.4" fill="#333"/><ellipse cx="43.9" cy="31.9" rx="6.3" ry="28" fill="#aa1d39"/><path d="m43.9 59.9c-3.5 0-6.3-12.5-6.3-28 5.3-4 12.4 4.9 12.4 4.9-11 6-6.1 23.1-6.1 23.1" fill="#5b0617"/><path d="m37.8 24.4c0 0-.2 2.6-.2 7.5 0 4.9.2 7.5.2 7.5l12.3-2.6v-9.7l-12.3-2.7" fill="#333"/><path d="m37.7 26.8c0 0-.1 1.8-.1 5.1 0 3.4.1 5.1.1 5.1l12.5-1.8v-6.6l-12.5-1.8" fill="#4b4d4f"/><ellipse cx="50.2" cy="31.9" rx="1.6" ry="4.9" fill="#ed4c5c"/><path fill="#898a90" d="m10.1 28.2h8.1v24.2h-8.1z"/><ellipse cx="14.2" cy="32.5" rx="1.7" ry="2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e3.svg b/riot/emojione/svg/1f4e3.svg new file mode 100644 index 0000000..0967aba --- /dev/null +++ b/riot/emojione/svg/1f4e3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m38.1 57.6c-.5.5-1.1 1-1.8 1.3l-7.9 3.7c-1.6.7-3.3.8-4.9.2-1.6-.6-2.9-1.8-3.6-3.3l-3.7-7.9c-1.1-2.4-.6-5.3 1.3-7.2.5-.5 1.1-1 1.8-1.3l7.9-3.7c3.2-1.5 7-.1 8.5 3.1l3.7 7.9c1.1 2.3.6 5.3-1.3 7.2m-17.7-10.4c-.7.7-.9 1.7-.5 2.6l3.7 7.9c.3.6.7 1 1.3 1.2.6.2 1.2.2 1.8-.1l7.9-3.7c1.1-.5 1.6-1.9 1.1-3l-3.7-7.9c-.5-1.1-1.9-1.6-3-1.1l-8 3.6c-.2.1-.5.3-.6.5" fill="#b0bdc6"/><g fill="#898a90"><path d="m36.2 56.3c-.4.4-.9.8-1.5 1l-6.4 3c-1.3.6-2.7.7-4 .2-1.3-.5-2.4-1.4-2.9-2.7l-3-6.4c-.9-2-.5-4.4 1-5.9.4-.4.9-.8 1.5-1l6.4-3c2.6-1.2 5.7-.1 6.9 2.5l3 6.4c.9 2 .5 4.4-1 5.9m-14.5-8.4c-.6.6-.7 1.4-.4 2.1l3 6.4c.2.5.6.8 1.1 1 .5.2 1 .1 1.4-.1l6.4-3c.9-.4 1.3-1.6.9-2.5l-3-6.4c-.4-.9-1.5-1.3-2.5-.9l-6.4 3c-.1.1-.3.2-.5.4"/><path d="m1.5 53.8c0 0-4 2.5 1.1 7.6 5.1 5.1 7.6 1.1 7.6 1.1l-8.7-8.7"/></g><path d="m2.9 55.2c0 0-4.2 2.3-.3 6.2 3.9 3.9 6.2-.3 6.2-.3l-5.9-5.9" fill="#b0bdc6"/><path d="m26.8 3.3l-25.3 50.3c-1.8 2.8 6.1 10.7 8.9 8.9l50.2-25.3-33.8-33.9" fill="#ed4c5c"/><path d="M62.9,35.2l-1.4,1.4c-3.5,3.5-13.9-1.3-23.3-10.7C28.8,16.4,23.9,6,27.4,2.5l1.4-1.4L62.9,35.2z" fill="#898a90"/><path d="m61.6 34l-3.7 3.7c0 0-7.8.1-19.7-11.9-12-11.9-11.9-19.7-11.9-19.7l3.7-3.7 31.6 31.6" fill="#dfe9ef"/><path d="m52.1 11.9c9.4 9.4 14.2 19.9 10.7 23.3-3.5 3.5-13.9-1.3-23.3-10.7-9.4-9.4-14.2-19.9-10.7-23.4 3.5-3.4 13.9 1.4 23.3 10.8" fill="#b0bdc6"/><path d="m39.5 24.5c6.7 6.7 13.9 11 18.7 11.8-.8-4.9-5.1-12-11.8-18.7-6.7-6.7-13.9-11-18.7-11.8.8 4.8 5.2 12 11.8 18.7" fill="#898a90"/><g fill="#fff"><path d="m5.5 55.7c-.5-.5-.9-.8-1.2-.8-.2 0-.3 0-.4.1-.2.2-.1.6.2 1.2.3.6.8 1.3 1.7 2.2.9.9 1.6 1.4 2.1 1.6.6.1.9.1 1.1 0 .2-.1.2-.4 0-.7-.2-.4-.6-.8-1-1.3-.2.2-.4.3-.5.5-.4-.4-.8-.8-1.2-1.2.3-.3.6-.6.9-1 1.3 1.4 2.8 2.6 4.3 3.8-.1.1-.3.2-.4.3-.4-.2-.7-.5-1.1-.8.3.4.5.7.5.9.1.3.1.5-.1.7-.4.2-1 .2-1.9-.2-.9-.4-1.9-1.1-3-2.2-1.1-1.1-1.8-2.2-2.3-3.1-.4-1-.5-1.7-.2-2.1.2-.3.6-.4 1.2 0 .6.3 1.2.9 1.9 1.6-.3.1-.4.3-.6.5"/><path d="m13.6 57.4c.5.8.5 1.3 0 1.6-.5.3-1.2.3-2.1-.1-1.1-.4-2.4-1.3-3.8-2.7-1.4-1.4-2.2-2.7-2.7-3.8-.4-.9-.4-1.6-.1-2.1.3-.5.8-.5 1.6 0 .9.6 2.1 1.7 3.7 3.3 1.7 1.6 2.9 2.8 3.4 3.8m-1.8-.8c-.4-.6-1.1-1.3-2.1-2.3-1-1-1.7-1.7-2.3-2.1-.6-.4-1-.5-1.2-.2-.2.3-.1.7.2 1.4.3.7.9 1.5 1.8 2.4.9.9 1.7 1.5 2.4 1.8.7.3 1.1.4 1.4.2.3-.3.2-.6-.2-1.2"/><path d="m9.8 43.7c.5.7 1 1.4 1.6 2.1-.3.4-.6.8-1 1.3 2.4 3.1 5.3 5.8 8.5 8-.3.2-.6.4-.9.6-3.1-2.2-5.9-4.8-8.2-7.8-.3.4-.6.8-.9 1.1-.5-.6-1-1.2-1.4-1.9.8-1 1.5-2.2 2.3-3.4"/><path d="m14.5 41.7c-.7.9-1.3 1.8-2 2.7.7.9 1.4 1.7 2.2 2.6.7-.7 1.3-1.5 2-2.2.7.7 1.4 1.4 2.1 2.1-.7.7-1.4 1.3-2.1 2 1 .9 2 1.8 3.1 2.6.9-.7 1.8-1.4 2.8-2.1.8.6 1.7 1.2 2.5 1.8-1.4.9-2.7 1.7-4 2.6-4.4-2.8-8.1-6.5-10.9-10.7.8-1.3 1.7-2.6 2.5-3.9.6.9 1.2 1.7 1.8 2.5"/><path d="m14.6 36.3c.3-.5.7-1.1 1-1.6 4.2 5 9.8 9.2 16.4 12.2-.6.3-1.1.7-1.7 1.1-1.3-.6-2.6-1.3-3.8-2-.8.6-1.5 1.1-2.3 1.7.9.9 1.8 1.7 2.7 2.5-.5.3-.9.6-1.4.9-4.4-4.1-8.2-9-10.9-14.8m7.4 8.9c.5-.4 1-.9 1.4-1.3-2.1-1.5-4.1-3.1-5.9-4.9 1.4 2.3 2.9 4.4 4.5 6.2"/><path d="m21.4 25c.6-1.1 1.2-2.1 1.9-3.2 4.4 7.9 10.9 14.5 18.9 18.9-.7.4-1.4.8-2.1 1.2-5.1-2.9-9.6-6.7-13.3-11.2-.3-.4-.8-.9-1.3-1.7-.5-.7-.9-1.3-1.2-1.7 3.6 6.4 8.3 11.7 13.9 15.6-.6.4-1.3.8-1.9 1.1-6.1-2.9-11.3-7-15.5-11.8.2.3.6.8 1.1 1.5.5.6.9 1.1 1.2 1.4 3.3 3.9 7.2 7.2 11.6 9.9-.5.3-1.1.7-1.6 1-6.2-3.8-11.4-9-15.1-15.2.5-.9 1-1.7 1.6-2.6 3.5 4.8 8.1 9 13.5 12.4-4.9-4-8.8-9.4-11.7-15.6"/><path d="m24.9 19.1c.5-.9 1-1.8 1.5-2.7 1.2 2.3 2.6 4.5 4.1 6.5 2.6 4 5.8 7.5 9.3 10.5-.4.3-.7.6-1.1.8-3.7-2.6-7.1-5.6-9.9-9-1.4-1.9-2.7-3.9-3.9-6.1m15.3 17c.8-.5 1.5-1.1 2.3-1.6 1.6 1.1 3.3 2.2 5.1 3.1-.9.5-1.7 1-2.6 1.5-1.7-.9-3.3-1.9-4.8-3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e4.svg b/riot/emojione/svg/1f4e4.svg new file mode 100644 index 0000000..b7b0066 --- /dev/null +++ b/riot/emojione/svg/1f4e4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#89664c" d="m24.9 39v12.4l-24.9 12.6v-16.5z"/><path fill="#b77e58" d="m24.9 39h39.1v12.3h-39.1z"/><path fill="#f2bc97" d="M24.9 51.4 0 64 53.5 64 64 51.4z"/><path d="M35.4,47.5c0,0-0.3,7-1.7,8.3c-2.7,2.6-11.1,2.6-13.9,0c-1.4-1.3-1.7-8.3-1.7-8.3H0V64h53.5V47.5H35.4z" fill="#d3976e"/><path fill="#89664c" d="M64 51.4 53.5 64 53.5 47.5 64 39z"/><path d="m37.9 0l2.4 5.5c0 0-9.1 5.3-11 17.5-1.7 11.3 2.5 19 2.5 19l1.2.8c0 0-1.4-8.9 3.5-16.8 3-4.8 7.1-7.9 8.5-8.8l2 4.7 1.5 1.5 11.5-19.4-1.5-1.5-20.6-2.5" fill="#881a0e"/><path d="m33.2 42.9c0 0-.1-7 4-15.4 3.4-6.9 9.1-9.7 9.1-9.7l2.5 5.7 11.2-19.5-20.6-2.5 2.4 5.5c0 0-9.1 5.3-11 17.5-1.6 11.3 2.4 18.4 2.4 18.4" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e5.svg b/riot/emojione/svg/1f4e5.svg new file mode 100644 index 0000000..75df61a --- /dev/null +++ b/riot/emojione/svg/1f4e5.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#89664c" d="m24.9 39v12.4l-24.9 12.6v-16.5z"/><path fill="#b77e58" d="m24.9 39h39.1v12.3h-39.1z"/><path fill="#f2bc97" d="M24.9 51.4 0 64 53.5 64 64 51.4z"/><path d="M35.4,47.5c0,0-0.3,7-1.7,8.3c-2.7,2.6-11.1,2.6-13.9,0c-1.4-1.3-1.7-8.3-1.7-8.3H0V64h53.5V47.5H35.4z" fill="#d3976e"/><path fill="#89664c" d="M64 51.4 53.5 64 53.5 47.5 64 39z"/><path d="M48.5,34l-5.6-2.2c0,0,2.7-10.2-4.6-20.1C31.5,2.5,23,0,23,0l-1.4,0.3c0,0,7.3,5.3,9.4,14.4 + c1.3,5.5,0.6,10.6,0.2,12.3l-4.8-1.9h-2.1L30,46.8h2.1L48.5,34z" fill="#5b7f38"/><path d="m21.5.3c0 0 5 4.8 8 13.7 2.5 7.3.5 13.3.5 13.3l-5.8-2.2 5.8 21.7 16.4-12.8-5.6-2.2c0 0 2.7-10.2-4.6-20.1-6.9-9.2-14.7-11.4-14.7-11.4" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e6.svg b/riot/emojione/svg/1f4e6.svg new file mode 100644 index 0000000..95182fd --- /dev/null +++ b/riot/emojione/svg/1f4e6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#89664c" d="M32 64 0 44.8 0 19.2 32 38.4z"/><path fill="#fed0ac" d="m32 38.4v25.6l32-19.2v-25.6z"/><path fill="#d3976e" d="M0 19.2 32 38.4 64 19.2 32 0z"/><path fill="#89664c" d="M50.9 27 19 7.8 13 11.4 45 30.6z"/><path fill="#d0d0d0" d="m39.3 6.8l-7.1-4.4-5.9 3.6 7.1 4.3z"/><path fill="#d3976e" d="m50.8 27.1l-5.6 3.4v9.2l5.6-3.4z"/><g fill="#fff"><path d="m62.5 22.1l-5.7 3.4v9.2l5.7-3.4z"/><path d="m41.6 43.5l-7.7 4.6v12.6l7.7-4.7z"/></g><path fill="#d3976e" d="m45.2 56.1l5.6-3.4v-9.2l-5.6 3.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e7.svg b/riot/emojione/svg/1f4e7.svg new file mode 100644 index 0000000..c296f50 --- /dev/null +++ b/riot/emojione/svg/1f4e7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b0bdc6"><path d="m.6 48.7l18.5-19.3-14.2-20.5c-.7.9-1.2 2.1-1.3 3.5l-3.6 32.7c-.1 1.4.1 2.6.6 3.6"/><path d="m62.7 5.5l-26.8 24.9 21.1 28.5c1.2-1 2-2.5 2.2-4.3l4.8-44.6c.2-1.8-.4-3.5-1.3-4.5"/></g><path d="m25.7 39.4l-6.6-10-18.5 19.3c.4.9 1.1 1.5 1.9 1.7l50.8 9.6c1.4.3 2.7-.2 3.7-1.1l-21.1-28.5-10.2 9" fill="#cad5dd"/><path d="m59.3 4l-52.2 3.5c-.8.1-1.6.6-2.2 1.4l14.3 20.5 6.6 10 10.2-9 26.7-24.9c-.9-1-2.1-1.6-3.4-1.5" fill="#dfe9ef"/><path fill="#428bc1" d="m35.2 23.6l.6-5.1-17.5-.1-2.9 23.9 17 4 .7-5.1-12.8-2.5.7-5.5 12.8 1.8.6-5.1-12.9-1.3.7-5.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e8.svg b/riot/emojione/svg/1f4e8.svg new file mode 100644 index 0000000..694c04e --- /dev/null +++ b/riot/emojione/svg/1f4e8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b0bdc6"><path d="m12.3 53.6l15.4-20.8-10.5-19c-.6.9-1 2.2-1.2 3.6l-4 32.7c-.2 1.4-.1 2.6.3 3.5"/><path d="m63.1 5.2l-22.1 27.1 15.6 26.4c1-1.1 1.7-2.6 1.9-4.5l5.5-44.5c.2-2-.2-3.5-.9-4.5"/></g><path d="m32.5 42.1l-4.8-9.3-15.4 20.8c.3.8.8 1.4 1.4 1.5l39.9 4.9c1.1.1 2.1-.4 3-1.4l-15.6-26.3-8.5 9.8" fill="#cad5dd"/><path d="m60.5 4.1l-41.5 8.2c-.6.1-1.3.7-1.8 1.6l10.5 19 4.8 9.3 8.4-9.9 22.2-27.1c-.6-.9-1.6-1.4-2.6-1.1" fill="#dfe9ef"/><g fill="#79d3f7"><path d="m9.2 45c.8 0 1.4.7 1.3 1.5l-.7 6.1c-.1.8-.8 1.4-1.7 1.3l-6.3-.9c-.8-.1-1.4-.9-1.3-1.7l.7-5c.1-.8.9-1.5 1.7-1.5l6.3.2"/><path d="m11.3 29.7c.8-.1 1.4.5 1.3 1.4l-.8 6.8c-.1.8-.9 1.5-1.7 1.5h-8.6c-.8 0-1.4-.7-1.3-1.5l.9-5.9c.1-.8.9-1.5 1.7-1.6l8.5-.7"/><path d="m13.4 13.4c.8-.1 1.4.4 1.3 1.2l-.8 6.9c-.1.8-.9 1.6-1.7 1.7l-10.6 1.1c-.8.1-1.4-.5-1.2-1.3l1-5.9c.1-.8.9-1.6 1.7-1.7l10.3-2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4e9.svg b/riot/emojione/svg/1f4e9.svg new file mode 100644 index 0000000..2e5dd66 --- /dev/null +++ b/riot/emojione/svg/1f4e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b0bdc6"><path d="m.6 52.6l18.5-19.6-14.2-20.7c-.7.9-1.2 2.2-1.3 3.5l-3.6 33.1c-.1 1.4.1 2.7.6 3.7"/><path d="m62.7 8.8l-26.8 25.2 21.1 28.9c1.2-1 2-2.5 2.2-4.4l4.8-45.1c.2-1.9-.4-3.5-1.3-4.6"/></g><path d="m25.7 43.1l-6.6-10.1-18.5 19.6c.4.9 1.1 1.5 1.9 1.7l50.8 9.7c1.4.3 2.7-.2 3.7-1.1l-21.1-28.9-10.2 9.1" fill="#cad5dd"/><path d="m59.3 7.3l-52.2 3.6c-.8.1-1.6.6-2.2 1.4l14.2 20.7 6.6 10.1 10.2-9.1 26.8-25.2c-.9-1-2.1-1.6-3.4-1.5" fill="#dfe9ef"/><path fill="#ed4c5c" d="m27.1 32.6l-11.7-17.5 4.9-.1.3-14.3 15.1-.7-.4 15.3 8.4.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ea.svg b/riot/emojione/svg/1f4ea.svg new file mode 100644 index 0000000..b825c02 --- /dev/null +++ b/riot/emojione/svg/1f4ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b0bdc6" d="m38 64l-8.8-1.2v-49h8.8z"/><path fill="#7d8b91" d="m44.3 13.8h-6.3v50.2l6.3-6.1z"/><path d="M46.8,0c-8.2,0-35.6,9.5-35.6,9.5l24.6,40.4l28.3-17V17C64,6.3,57.6,0,46.8,0z" fill="#333"/><path d="M17.2,8.5C6.4,8.5,0,16,0,26.8v17l35.7,6.1V29.2C35.7,18.4,28.1,8.5,17.2,8.5z" fill="#697277"/><path fill="#ed4c5c" d="m62.7 14.2l-26 12.4v3.3l19.2-9.6v9.9l6.8-3.8z"/><g fill="#333"><path d="m9.7 22.8l2.6.3-.1 10.7-1.7-.2.1-7.2c0-.2 0-.5 0-.9 0-.4 0-.7 0-.9l-1.7 8.7-1.7-.2-1.5-9.2c0 .2 0 .5 0 .9 0 .4 0 .7 0 .9l-.1 7.2-1.7-.2.1-10.7 2.6.3 1.5 8.6 1.6-8.1"/><path d="m16.4 23.6l2 .3 2.9 11.1-1.9-.3-.5-2.3-3.2-.4-.6 2.1-1.9-.3 3.2-10.2m-.2 6.7l2.2.3-1-4.3-1.2 4"/><path d="m24 35.4l-1.8-.2.1-10.7 1.8.2-.1 10.7"/><path d="m25.8 24.9l1.8.2-.1 8.7 4.3.6v1.9l-6-.8v-10.6"/></g><path d="m19.6 16.4l-4.5 2.1.3-3 3.2-1.5c1.2-.5 2.2 1.9 1 2.4" fill="#52595e"/><path d="m18.4 16.1c.3 2.5-1.5 3.9-3 4-.9.1-1.6-6.6-1.6-6.6s.9-.5 1.6-.5c1.5-.1 2.8 1.2 3 3.1" fill="#333"/><ellipse transform="matrix(.9946-.1039.1039.9946-1.6525 1.6562)" cx="15.1" cy="16.7" rx="2.8" ry="3.5" fill="#52595e"/><ellipse transform="matrix(.9946-.104.104.9946-1.6542 1.6577)" cx="15.1" cy="16.7" rx="2.1" ry="2.6" fill="#697277"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4eb.svg b/riot/emojione/svg/1f4eb.svg new file mode 100644 index 0000000..fcd20da --- /dev/null +++ b/riot/emojione/svg/1f4eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b0bdc6" d="m38 64l-8.8-1.2v-49h8.8z"/><path fill="#7d8b91" d="m44.3 13.8h-6.3v50.2l6.3-6.1z"/><path d="M46.8,0c-8.2,0-35.6,9.5-35.6,9.5l24.6,40.4l28.3-17V17C64,6.3,57.6,0,46.8,0z" fill="#333"/><path d="M17.2,8.5C6.4,8.5,0,16,0,26.8v17l35.7,6.1V29.2C35.7,18.4,28.1,8.5,17.2,8.5z" fill="#697277"/><path fill="#ed4c5c" d="m37.2 6.4v29.2l2.8-1.3v-18.7l11.2-4.3v-9.7z"/><g fill="#333"><path d="m9.7 22.8l2.6.3-.1 10.7-1.7-.2.1-7.2c0-.2 0-.5 0-.9 0-.4 0-.7 0-.9l-1.7 8.7-1.7-.2-1.5-9.2c0 .2 0 .5 0 .9 0 .4 0 .7 0 .9l-.1 7.2-1.6-.2v-10.7l2.6.3 1.5 8.6 1.6-8.1"/><path d="m16.4 23.6l2 .3 2.9 11.1-1.9-.3-.5-2.3-3.2-.4-.6 2.1-1.9-.3 3.2-10.2m-.2 6.7l2.2.3-1-4.3-1.2 4"/><path d="m24 35.4l-1.8-.2.1-10.7 1.8.2-.1 10.7"/><path d="m25.8 24.9l1.8.2-.1 8.7 4.3.6v1.9l-6-.8v-10.6"/></g><path d="m19.6 16.4l-4.5 2.1.3-3 3.2-1.5c1.2-.5 2.2 1.9 1 2.4" fill="#52595e"/><path d="m18.4 16.1c.3 2.5-1.5 3.9-3 4-.9.1-1.6-6.6-1.6-6.6s.9-.5 1.6-.5c1.5-.1 2.8 1.2 3 3.1" fill="#333"/><ellipse transform="matrix(.9946-.1039.1039.9946-1.6526 1.6563)" cx="15.1" cy="16.7" rx="2.8" ry="3.5" fill="#52595e"/><ellipse transform="matrix(.9946-.104.104.9946-1.6542 1.6578)" cx="15.1" cy="16.7" rx="2.1" ry="2.6" fill="#697277"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ec.svg b/riot/emojione/svg/1f4ec.svg new file mode 100644 index 0000000..2393774 --- /dev/null +++ b/riot/emojione/svg/1f4ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b0bdc6" d="m38 64l-8.8-1.2v-49h8.8z"/><path fill="#7d8b91" d="m44.3 13.8h-6.3v50.2l6.3-6.1z"/><path d="m17.2 8.5c-1.9 0-3.7.2-5.3.7-7.6 2.1-11.9 8.7-11.9 17.6v17l35.7 6.1v-20.7c0-10.8-7.6-20.7-18.5-20.7" fill="#697277"/><path fill="#94989b" d="M35.7 49.9 0 43.8 35.7 27.5z"/><g fill="#b0bdc6"><path d="m44 34.6l-11.3-8.4 5.6-11.9c.4.4.8 1 1 1.7l4.7 16.7c.1.7.1 1.4 0 1.9"/><path d="m7.9 17.6l16.1 10.6-8.5 16.7c-.7-.4-1.3-1.1-1.5-2.1l-6.4-22.7c-.2-1-.1-1.8.3-2.5"/></g><path d="m30.1 32l2.6-5.8 11.3 8.4c-.2.5-.4.9-.8 1l-25.6 9.4c-.7.3-1.4.1-2-.2l8.4-16.6 6.1 3.8" fill="#cad5dd"/><path d="m9.5 16.5l27.5-2.7c.4 0 .9.2 1.3.5l-5.6 11.9-2.6 5.8-6.1-3.8-16.1-10.6c.3-.6.9-1 1.6-1.1" fill="#dfe9ef"/><path d="m46.8 0c-7.4 0-30.3 7.7-34.9 9.2 1.6-.4 3.4-.7 5.3-.7 10.9 0 18.5 9.9 18.5 20.7v20.7l28.3-17v-15.9c0-10.7-6.4-17-17.2-17" fill="#333"/><path fill="#ed4c5c" d="m37.2 6.4v29.2l2.8-1.3v-18.7l11.2-4.3v-9.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ed.svg b/riot/emojione/svg/1f4ed.svg new file mode 100644 index 0000000..c4fddba --- /dev/null +++ b/riot/emojione/svg/1f4ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b0bdc6" d="m38 64l-8.8-1.2v-49h8.8z"/><path fill="#7d8b91" d="m44.3 13.8h-6.3v50.2l6.3-6.1z"/><path d="M46.8,0c-8.2,0-35.6,9.5-35.6,9.5l24.6,40.4l28.3-17V17C64,6.3,57.6,0,46.8,0z" fill="#333"/><path d="M17.2,8.5C6.4,8.5,0,16,0,26.8v17l35.7,6.1V29.2C35.7,18.4,28.1,8.5,17.2,8.5z" fill="#697277"/><path fill="#94989b" d="M35.7 49.9 0 43.8 35.7 27.4z"/><path fill="#ed4c5c" d="m62.7 14.2l-26 12.4v3.3l19.2-9.6v9.9l6.8-3.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ee.svg b/riot/emojione/svg/1f4ee.svg new file mode 100644 index 0000000..2c53c56 --- /dev/null +++ b/riot/emojione/svg/1f4ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.7 0h-47c0 0-.1 0-.1 0-4.7 0-9.6 7-9.6 26v32 6h4.3v-6h38.4v6h4.3l3.1-1.4v-6l6.7-3.1v3.9h4.3l3.1-1.4v-6-.1-29.9c-.2-10.9-2.9-19.8-7.5-20" fill="#c94747"/><path fill="#ed4c5c" d="m9.7 0h46.9v32h-46.9z"/><path fill="#881a0e" d="m56.7 50.8h4.3v6.6h-4.3z"/><g fill="#ed4c5c"><path d="M17.1,20L0,26C0,7,4.9,0,9.6,0S17.1,9,17.1,20z"/><path d="M17.1 50 0 58 0 26 17.1 20z"/></g><g fill="#c94747"><path d="m64 50l-17.1 8v-32l17.1-6z"/><path d="m50 62.6l-3.1 1.4v-6l3.1-1.4z"/><path d="m64 55.9l-3.1 1.5v-6l3.1-1.5z"/></g><path fill="#ed4c5c" d="m0 26v32 6h4.3v-6h38.4v6h4.2v-6-32z"/><path d="m42.7 32.9c0-2.2-1.9-4-4.3-4h-29.9c-2.3 0-4.3 1.8-4.3 4v18.2c0 2.2 1.9 4 4.3 4h29.9c2.3 0 4.3-1.8 4.3-4v-18.2" fill="#c94747"/><path d="m41.4 34.2c0-2.2-1.9-4-4.3-4h-27.4c-2.3 0-4.3 1.8-4.3 4v15.6c0 2.2 1.9 4 4.3 4h27.4c2.3 0 4.3-1.8 4.3-4v-15.6" fill="#ed4c5c"/><g fill="#fff"><path d="m14.6 37.7h2.8v8.6h-1.8v-5.8c0-.2 0-.4 0-.7s0-.5 0-.7l-1.7 7.2h-1.9l-1.7-7.2c0 .2 0 .4 0 .7s0 .5 0 .7v5.8h-1.8v-8.6h2.8l1.7 6.8 1.6-6.8"/><path d="m21.8 37.7h2.2l3.3 8.6h-2.1l-.6-1.8h-3.4l-.6 1.8h-2l3.2-8.6m-.1 5.4h2.3l-1.2-3.4-1.1 3.4"/><path d="m30.1 46.3h-1.9v-8.6h1.9v8.6"/><path d="M32,37.7h1.9v7.1h4.6v1.6H32V37.7z"/></g><path fill="#881a0e" d="m43.7 19.1h-25.3l-12.5 3.4h37.8z"/><path fill="#af2b2b" d="m12.9 3.5h39.5v15.6h-39.5z"/><path d="m59.7 20l-17.1 6c0-19 4.9-26 9.6-26s7.5 9 7.5 20" fill="#ed4c5c"/><g fill="#c94747"><path d="m18.4 19.1l-12.5 3.4c0-13.9 3.6-19 7-19 3.5 0 5.5 7.5 5.5 15.6"/><path d="M64,20l-17.1,6c0-19,4.9-26,9.6-26S64,9,64,20z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ef.svg b/riot/emojione/svg/1f4ef.svg new file mode 100644 index 0000000..6ead0b0 --- /dev/null +++ b/riot/emojione/svg/1f4ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m54.4 30.2c-2.7-2.6-4.2-5.6-4-7.5s-.1 4.2-1.5 5.9c-.8.9-1.7 1.8-2.7 2.8-.2.2-.4.4-.6.6.5-1.8.8-3.8.8-5.7 0-5.3-2.1-10.4-5.9-14.1-3.8-3.8-8.8-5.9-14.1-5.9s-10.4 2.2-14.2 5.9c-3.8 3.8-5.8 8.8-5.8 14.2 0 4.7 1.6 9.1 4.6 12.7-.5-.3-.9-.5-1.4-.8-1.6-.9-3.1-2-4.4-3-.8-.6-1.5-1.2-2.2-1.7-.4-.3-.6-.7-.6-.9 0-.3 0-.6-.1-.8-.3-.4-1-.3-1.6.2-.5.5-.7 1.2-.4 1.6.2.2.4.2.8.2.5 0 .5.2.9.6 0 0 4.5 4.7 6.1 6.1 1.5 1.3 3.3 2.6 5.3 3.6 1 .5 2.1 1 3.2 1.4 1.1.4 2.3.7 3.5 1 1.2.2 2.4.4 3.6.5.6.1 1.2.1 1.7.2.3 0 .6.1.8.1.1 0 .3 0 .4 0h.5c2.5.1 5 0 7.4-.4 2.4-.4 4.8-1.1 6.9-1.9 2.2-.8 4.2-1.8 6.1-2.8 1.9-1 3.6-2.1 5.1-3.2 1.1-.8 2.1-1.5 3-2.2 2.8-2.1 6.5-2.9 6.5-2.9-2.2.1-5.1-1.3-7.7-3.8m-28 10.4c-7.8 0-14.2-6.4-14.2-14.2 0-7.8 6.4-14.2 14.2-14.2 7.8 0 14.2 6.4 14.2 14.2 0 7.8-6.4 14.2-14.2 14.2" fill="#f2b200"/><path d="m60 24.5c-3.4-3.3-7.4-4.7-9-3.1-.3.3-.5.8-.6 1.3-.2 1.9 1.3 4.9 4 7.5 2.6 2.5 5.5 3.9 7.4 3.7.6 0 1.2-.3 1.5-.7 1.6-1.5.1-5.4-3.3-8.7" fill="#333"/><g fill="#ed4c5c"><path d="m24.8 39.7c0 1.5 0 3 0 4.4 0 1.2 0 2.4 0 3.6 0 .4.4.8.8.8.4 0 .8-.4.8-.8 0-1.5 0-3 0-4.4 0-1.2 0-2.4 0-3.6 0-.4-.4-.8-.8-.8-.4 0-.8.4-.8.8"/><path d="m27.9 39.7c0 1.5 0 3 0 4.4 0 1.2 0 2.4 0 3.6 0 .4.4.8.8.8s.8-.4.8-.8c0-1.5 0-3 0-4.4 0-1.2 0-2.4 0-3.6 0-.4-.4-.8-.8-.8s-.8.4-.8.8"/></g><path d="m27.9 53.2c0-.9 0-1.8 0-2.7 0-2.1 0-4.2 0-6.2 0-1.4 0-2.9 0-4.3 0-.1 0-.1 0-.2 0-.4-.4-.8-.8-.8s-.8.4-.8.8c0 1.1 0 2.1 0 3.2 0 2.1 0 4.2 0 6.2 0 1.4 0 2.7 0 4.1-.5.4-.7 1.3-.8 2.1-.1-.7-.2-1.7-.8-2.1 0-.9 0-1.8 0-2.7 0-2.1 0-4.2 0-6.2 0-1.4 0-2.9 0-4.3 0-.1 0-.1 0-.2 0-.4-.4-.8-.8-.8s-.8.4-.8.8c0 1.1 0 2.1 0 3.2 0 2.1 0 4.2 0 6.2 0 1.4 0 2.7 0 4.1-.8.6-.8 2.2-.8 2.9 0 .9.7 1.6 1.6 1.6.9 0 1.6-.7 1.6-1.6 0 .9.7 1.6 1.6 1.6.9 0 1.6-.7 1.6-1.6 0-.9 0-2.5-.8-3.1" fill="#c94747"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f0.svg b/riot/emojione/svg/1f4f0.svg new file mode 100644 index 0000000..51f9f85 --- /dev/null +++ b/riot/emojione/svg/1f4f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m30 63.1c0 0 19.7-25.3 34-33.1-6.4-12.5-38.2-25-38.2-25l-20.1 26.2 19.6 31.7c1.1 1.4 3.2 1.5 4.7.2" fill="#94989b"/><path d="m26 57.9c0 0 38.3-26.7 33.5-42.1-10.7 1-31.2-13.6-32.7-15.8-6 8.8-18.6 15.5-24.3 23.1-2.3 3.1-3.5 5.3-1.2 8.8l24.1 30.9c-1.2-1.4-.8-3.6.6-4.9" fill="#d0d0d0"/><g fill="#94989b"><path d="m47.3 32.4l-28.4-22.2.8-.7 28.6 22z"/><path d="M17.9,31.2L7.7,20.5c4.9-5.6,8.9-8.2,8.9-8.2L28.2,22L17.9,31.2z"/><path d="m24.7 52.6l-21.9-26.8c.6-2.4 2.6-3.5 2.6-3.5l23.3 26.7-4 3.6"/><path d="m30.8 24.2l-3.5 3.1 12.7 11.6 4-3.6z"/><path d="m23.8 30.5l-3.5 3.1 11.6 12.5 4.1-3.6z"/><path d="m28.3 4.4l1.1.7-1.7 4.7 3.8-3.4 1.1.7-5.5 4.9-1.1-.8 1.7-4.8-3.7 3.3-.9-.7 5.2-4.6"/><path d="m37.1 11.5l-3.2-2-1.2 1.1 2.9 1.9-1 .9-2.8-1.9-1.4 1.3 3.2 2.3-1 .9-4.2-3.1 5.5-4.9 4.4 2.8-1.2.7"/><path d="m40.2 11.8l-2.5 3.6-.8 1 1.1-.7 4.2-2.6 1.5 1-2.7 3.7-.8 1 1.2-.7 4.6-2.6 1.6 1-8.3 4.3-1.3-1 2.8-3.8.9-1.2-1.4.9-4.3 2.6-1.2-.9 4.1-6.5 1.3.9"/><path d="m45.1 21.8c-.2.3-.4.6-.4.8 0 .4.3.9.9 1.3.4.3.7.5 1.1.6.6.2 1.1.1 1.5-.2.2-.2.3-.4.2-.7-.1-.3-.4-.6-.8-1l-.7-.7c-.7-.7-1-1.2-1.2-1.6-.2-.6 0-1.2.6-1.8.6-.5 1.3-.8 2.2-.8.9 0 1.8.3 2.9.9.9.5 1.4 1.2 1.7 1.9.3.7 0 1.4-.6 2.1l-1.7-1.1c.4-.4.4-.8.2-1.2-.2-.3-.4-.5-.8-.8-.4-.3-.9-.4-1.3-.5-.4 0-.7.1-1 .3-.2.2-.3.4-.1.7.1.2.3.5.8.9l1.1 1.2c.5.5.8 1 .9 1.4.2.6 0 1.2-.6 1.7-.6.6-1.4.8-2.4.8-1 0-1.9-.4-2.9-1.2-1-.7-1.6-1.5-1.7-2.2-.2-.7.1-1.4.8-2l1.3 1.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f1.svg b/riot/emojione/svg/1f4f1.svg new file mode 100644 index 0000000..bbb0684 --- /dev/null +++ b/riot/emojione/svg/1f4f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50 4.1c0-2-2.1-4.1-4.3-4.1h-27.4c-2.2 0-4.3 2.1-4.3 4.1v55.7c0 2.1 2.1 4.1 4.3 4.1h27.5c2.1 0 4.3-2.1 4.3-4.1v-55.7z" fill="#5c6d6d"/><path d="m49 59c0 2-2 4-4 4h-26c-2 0-4-2-4-4v-54c0-2 2-4 4-4h26c2 0 4 2 4 4v54" fill="#212528"/><g fill="#94989b"><circle cx="43.5" cy="4.5" r="1"/><path d="m35 4.5c0 .3-.1.5-.3.5h-5.4c-.2 0-.3-.2-.3-.5 0-.2.1-.5.3-.5h5.4c.2 0 .3.3.3.5"/></g><path fill="#3e4347" d="m17 8h30v48h-30z"/><path d="m35.8 60.2c0 .4-.3.8-.8.8h-6c-.4 0-.8-.3-.8-.8v-1.5c0-.4.3-.8.8-.8h6c.4 0 .8.3.8.8v1.5" fill="#94989b"/><path d="m24 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m31 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m38 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#f2b200"/><path d="m45 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m24 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m31 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#ff435e"/><path d="m38 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m45 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/><path d="m24 33.9c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m31 33.9c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/><path d="m38 33.9c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m24 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#ff435e"/><path d="m31 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#f2b200"/><path d="m38 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m45 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#f2b200"/><path d="m24 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/><path d="m31 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m38 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#ff435e"/><path d="m45 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f2.svg b/riot/emojione/svg/1f4f2.svg new file mode 100644 index 0000000..9f323e4 --- /dev/null +++ b/riot/emojione/svg/1f4f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 4.1c0-2-2.1-4.1-4.3-4.1h-27.4c-2.2 0-4.3 2.1-4.3 4.1v55.7c0 2.1 2.1 4.1 4.3 4.1h27.5c2.1 0 4.3-2.1 4.3-4.1v-55.7z" fill="#5c6d6d"/><path d="m63 59c0 2-2 4-4 4h-26c-2 0-4-2-4-4v-54c0-2 2-4 4-4h26c2 0 4 2 4 4v54" fill="#212528"/><g fill="#94989b"><circle cx="57.5" cy="4.5" r="1"/><path d="m49 4.5c0 .3-.1.5-.3.5h-5.4c-.2 0-.3-.2-.3-.5 0-.2.1-.5.3-.5h5.4c.2 0 .3.3.3.5"/></g><path fill="#3e4347" d="m31 8h30v48h-30z"/><path d="m49.8 60.2c0 .4-.3.8-.8.8h-6c-.4 0-.8-.3-.8-.8v-1.5c0-.4.3-.8.8-.8h6c.4 0 .8.3.8.8v1.5" fill="#94989b"/><path d="m38 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m45 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m52 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#f2b200"/><path d="m59 14.7c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m38 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m45 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#ff435e"/><path d="m52 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m59 53.2c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/><path d="m38 33.9c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m45 33.9c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/><path d="m52 33.9c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m38 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#ff435e"/><path d="m45 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#f2b200"/><path d="m52 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c7e755"/><path d="m59 27.5c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#f2b200"/><path d="m38 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/><path d="m45 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#42ade2"/><path d="m52 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#ff435e"/><path d="m59 21.1c0 .5-.4.8-.8.8h-3.3c-.5 0-.8-.4-.8-.8v-3.3c0-.5.4-.8.8-.8h3.3c.5 0 .8.4.8.8v3.3" fill="#c28fef"/><path fill="#f2b200" d="m36 32l-19.1-19.1v9h-16.9v20.2h16.9v9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f3.svg b/riot/emojione/svg/1f4f3.svg new file mode 100644 index 0000000..7f2e947 --- /dev/null +++ b/riot/emojione/svg/1f4f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#eda454"/><g fill="#fff"><path d="m38.4 13h-12.8c-2.4 0-4.3 1.9-4.3 4.2v29.6c0 2.3 1.9 4.2 4.3 4.2h12.9c2.4 0 4.3-1.9 4.3-4.2v-29.6c-.1-2.3-2-4.2-4.4-4.2m-8.5 1.5h4.2c.3 0 .5.2.5.5s-.2.5-.5.5h-4.2c-.3 0-.5-.2-.5-.5s.2-.5.5-.5m2.1 34.4c-.7 0-1.3-.6-1.3-1.3s.6-1.3 1.3-1.3c.7 0 1.3.6 1.3 1.3s-.6 1.3-1.3 1.3m8.6-4.7h-17.2v-27h17.2v27"/><path d="m10.8 21.3c1.5 3.5 1.9 7.1 2 10.7 0 3.6-.4 7.2-2 10.7-.3-3.5-.1-7.1-.1-10.7 0-3.6-.1-7.1.1-10.7"/><path d="m14.6 16c1.8 5.2 2.3 10.7 2.4 16-.1 5.4-.6 10.8-2.4 16 0-5.2.3-10.5.4-15.7 0-5.4-.3-10.9-.4-16.3"/><path d="m53.2 42.7c-1.5-3.5-1.9-7.1-2-10.7 0-3.6.4-7.2 2-10.7.3 3.5.1 7.1.1 10.7 0 3.6.1 7.1-.1 10.7"/><path d="m49.4 48c-1.8-5.2-2.3-10.7-2.4-16 .1-5.4.6-10.8 2.4-16 0 5.2-.3 10.5-.4 15.7 0 5.4.3 10.9.4 16.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f4.svg b/riot/emojione/svg/1f4f4.svg new file mode 100644 index 0000000..3f7fd7f --- /dev/null +++ b/riot/emojione/svg/1f4f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#eda454"/><g fill="#fff"><path d="m32 37c-2.8 0-5-2.2-5-5 0-2.8 2.2-5 5-5s5 2.2 5 5c0 2.8-2.2 5-5 5m0-8.6c-2 0-3.6 1.6-3.6 3.6s1.6 3.6 3.6 3.6 3.6-1.6 3.6-3.6-1.6-3.6-3.6-3.6"/><path d="m39.5 37v-4.3h6.5v-1.4h-6.5v-2.9h6.5v-1.4h-8v10z"/><path d="m48.5 37v-4.3h6.5v-1.4h-6.5v-2.9h6.5v-1.4h-8v10z"/><path d="m42.4 39.8v6.8h-20.8v-32h20.8v9.8h2.6v-9.8c0-2.8-2.3-5-5.2-5h-15.6c-2.9 0-5.2 2.2-5.2 5v35c0 2.8 2.3 5 5.2 5h15.6c2.9 0 5.2-2.2 5.2-5v-9.8h-2.6m-10.4 12.2c-.9 0-1.6-.7-1.6-1.5s.7-1.5 1.6-1.5c.9 0 1.6.7 1.6 1.5s-.7 1.5-1.6 1.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f5.svg b/riot/emojione/svg/1f4f5.svg new file mode 100644 index 0000000..dfeb098 --- /dev/null +++ b/riot/emojione/svg/1f4f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><path d="m37.8 15h-11.6c-2.1 0-3.8 1.7-3.8 3.8v26.4c0 2.1 1.7 3.8 3.8 3.8h11.5c2.1 0 3.8-1.7 3.8-3.8v-26.4c.1-2.1-1.6-3.8-3.7-3.8m-7.7 1.4h3.8c.3 0 .5.2.5.5 0 .3-.2.5-.5.5h-3.8c-.3 0-.5-.2-.5-.5 0-.3.3-.5.5-.5m1.9 30.7c-.6 0-1.2-.5-1.2-1.1s.5-1.1 1.2-1.1c.6 0 1.2.5 1.2 1.1s-.6 1.1-1.2 1.1m7.7-4.1h-15.4v-24.2h15.4v24.2" fill="#fff"/><path transform="matrix(.7071-.7071.7071.7071-13.255 31.9996)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f6.svg b/riot/emojione/svg/1f4f6.svg new file mode 100644 index 0000000..f603362 --- /dev/null +++ b/riot/emojione/svg/1f4f6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m44 16h6v32h-6z"/><path d="m34 24h6v24h-6z"/><path d="m24 32h6v16h-6z"/><path d="m14 40h6v8h-6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f7.svg b/riot/emojione/svg/1f4f7.svg new file mode 100644 index 0000000..ed7884b --- /dev/null +++ b/riot/emojione/svg/1f4f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#212528"><path d="m21.6 16.1c0 1.2-1 2.2-2.2 2.2h-9.7c-1.2 0-2.2-1-2.2-2.2v-2.7c0-1.2 1-2.2 2.2-2.2h9.7c1.2 0 2.2 1 2.2 2.2 0 0 0 2.7 0 2.7"/><path d="m60.7 15.9c0 .6-.5 1.2-1.2 1.2h-5.2c-.6 0-1.2-.5-1.2-1.2v-1.4c0-.6.5-1.2 1.2-1.2h5.2c.6 0 1.2.5 1.2 1.2v1.4"/><path d="m64 50.3c0 3-2.4 5.4-5.4 5.4h-53.2c-3 0-5.4-2.4-5.4-5.4v-1.6h64v1.6"/></g><path d="M0,20.1c0-3,2.4-5.4,5.4-5.4h53.1c3,0,5.4,2.4,5.4,5.4v1.6H0V20.1z" fill="#51575b"/><path fill="#3e4347" d="m0 21.5h64v28.3h-64z"/><path d="m54.7 18h-32.1l3.2-10.8c.3-.6 1.6-1.6 2.4-1.8 4.9-1.4 15.9-1.4 20.8 0 .8.2 2.1 1.2 2.4 1.8l3.3 10.8" fill="#51575b"/><path d="m53.1 29.6h-29l2.9-14.6c.2-.8 1.5-2.1 2.2-2.4 4.4-1.8 14.4-1.8 18.8 0 .7.3 1.9 1.6 2.2 2.4l2.9 14.6" fill="#3e4347"/><path d="m60.6 37.6c0 12.2-9.9 22-22 22-12.1 0-22-9.8-22-22 0-12.1 9.9-22 22-22 12.2 0 22 9.9 22 22" fill="#788287"/><path d="m58.2 37.6c0 10.8-8.8 19.6-19.6 19.6-10.8 0-19.6-8.8-19.6-19.6 0-10.8 8.8-19.6 19.6-19.6 10.8.1 19.6 8.8 19.6 19.6" fill="#212528"/><circle cx="38.6" cy="37.6" r="15.9" fill="#3e4347"/><circle cx="38.6" cy="37.6" r="8.6" fill="#212528"/><g fill="#f5f5f5"><path d="m50.3 30.9c0 2.7-2.2 4.9-4.9 4.9-2.7 0-4.9-2.2-4.9-4.9 0-2.7 2.2-4.9 4.9-4.9 2.7-.1 4.9 2.2 4.9 4.9" opacity=".5"/><circle cx="35.6" cy="40.7" r="3.1" opacity=".5"/><circle cx="30.1" cy="46.2" r="1.9" opacity=".5"/></g><path d="m15 45.3c0 1.2-1 2.2-2.2 2.2h-9.2c-1.2 0-2.2-1-2.2-2.2v-19.4c0-1.2 1-2.2 2.2-2.2h9.2c1.2 0 2.2 1 2.2 2.2v19.4" fill="#636c72"/><circle cx="10.1" cy="18.6" r="3.2" fill="#212528"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f8.svg b/riot/emojione/svg/1f4f8.svg new file mode 100644 index 0000000..7814bdd --- /dev/null +++ b/riot/emojione/svg/1f4f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#212528"><path d="m22.9 26c0 1-.8 1.9-1.9 1.9h-8.4c-1 0-1.9-.8-1.9-1.9v-2.4c0-1 .9-1.9 1.9-1.9h8.4c1 0 1.9.8 1.9 1.9v2.4"/><path d="m57 25.9c0 .6-.5 1-1 1h-4.5c-.6 0-1-.5-1-1v-1.3c0-.6.5-1 1-1h4.5c.6 0 1 .5 1 1v1.3"/><path d="m59.9 55.9c0 2.6-2.1 4.7-4.7 4.7h-46.3c-2.6 0-4.7-2.1-4.7-4.7v-1.4h55.7v1.4"/></g><path d="M4.1,29.6c0-2.6,2.1-4.7,4.7-4.7h46.3c2.6,0,4.7,2.1,4.7,4.7V31H4.1V29.6z" fill="#51575b"/><path fill="#3e4347" d="m4.1 30.8h55.7v24.6h-55.7z"/><path d="m51.7 28.8h-27.9l2.8-15.3c.2-.9 1.4-2.2 2.1-2.5 4.3-1.9 13.9-1.9 18.1 0 .7.3 1.9 1.7 2.1 2.5l2.8 15.3" fill="#51575b"/><path d="m50.4 37.8h-25.2l2.5-12.7c.2-.7 1.3-1.9 1.9-2.1 3.8-1.6 12.5-1.6 16.4 0 .6.3 1.7 1.4 1.9 2.1l2.5 12.7" fill="#3e4347"/><path d="m56.9 44.8c0 10.6-8.6 19.2-19.2 19.2-10.6 0-19.2-8.6-19.2-19.2 0-10.6 8.6-19.2 19.2-19.2 10.6.1 19.2 8.7 19.2 19.2" fill="#788287"/><path d="m54.8 44.8c0 9.4-7.6 17-17 17-9.4 0-17-7.6-17-17 0-9.4 7.6-17 17-17 9.4 0 17 7.6 17 17" fill="#212528"/><circle cx="37.8" cy="44.8" r="13.8" fill="#3e4347"/><circle cx="37.8" cy="44.8" r="7.5" fill="#212528"/><g fill="#f5f5f5"><path d="m47.9 38.9c0 2.4-1.9 4.3-4.3 4.3-2.4 0-4.3-1.9-4.3-4.3 0-2.4 1.9-4.3 4.3-4.3 2.4 0 4.3 2 4.3 4.3" opacity=".5"/><circle cx="35.1" cy="47.5" r="2.7" opacity=".5"/><circle cx="30.3" cy="52.3" r="1.6" opacity=".5"/></g><path d="m17.2 51.5c0 1-.8 1.9-1.9 1.9h-8.1c-1 0-1.9-.8-1.9-1.9v-16.9c0-1 .8-1.9 1.9-1.9h8.1c1 0 1.9.8 1.9 1.9v16.9" fill="#636c72"/><circle cx="12.9" cy="28.2" r="2.8" fill="#212528"/><path d="m46 17.4c0 1-.8 1.7-1.7 1.7h-13.1c-1 0-1.7-.8-1.7-1.7v-1.8c0-1 .8-1.7 1.7-1.7h13.1c1 0 1.7.8 1.7 1.7v1.8" fill="#fff"/><g fill="#ffce31"><path d="m42.5 15.2l12-7.9-2.2-2.9z"/><path d="m56.5 18.9v-3.4l-12.3 2.3z"/><path d="m45.1 0h-4.1l-2.2 14.5z"/><path d="M33.6 15.2 23.4 4.4 21.1 7.3z"/><path d="m33.9 0h-4.2l6.9 14.5z"/><path d="m18.7 15.5v3.4l12.9-1.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4f9.svg b/riot/emojione/svg/1f4f9.svg new file mode 100644 index 0000000..8c71d01 --- /dev/null +++ b/riot/emojione/svg/1f4f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M31.1,54L15.7,10.2c0,0,36.7-8.9,36.7,10v28.1c0,0.8-1,1.8-1.8,1.8L31.1,54z" fill="#7a8084"/><path d="m6.6 54c-.8 0-1.8-1-1.8-1.8v-28.1c0-18.9 28.1-18.9 28.1 0v28.1c0 .8-1 1.8-1.8 1.8h-24.5" fill="#94989b"/><path d="m26.2 44.4c-1 0-1.8.8-1.8 1.8 0 1 .8 1.8 1.8 1.8 1 0 1.8-.8 1.8-1.8 0-1-.8-1.8-1.8-1.8" fill="#ed4c5c"/><path d="m11.1 55.8c-.5 0-.9-.4-.9-.9v-1.9c0-.5.4-.9.9-.9h15.5c.5 0 .9.4.9.9v1.9c0 .5-.4.9-.9.9h-15.5" fill="#7a8084"/><path d="m31.4 24.9c0 7.8-5.9 15.3-16.6 15.3-7.8 0-9-17.8-9-25.6 0 0 4.4-3.9 11.4-3.9 7.9 0 14.2 6.4 14.2 14.2" fill="#3e4347"/><circle cx="14.1" cy="26.1" r="14.1" fill="#788287"/><path d="m26.7 26.1c0 6.9-5.6 12.6-12.6 12.6-6.9-.1-12.5-5.7-12.5-12.6 0-6.9 5.6-12.6 12.6-12.6 6.9 0 12.5 5.6 12.5 12.6" fill="#212528"/><circle cx="14.1" cy="26.1" r="10.2" fill="#3e4347"/><circle cx="14.1" cy="26.1" r="5.5" fill="#212528"/><g fill="#f5f5f5"><path d="m21.6 21.7c0 1.7-1.4 3.2-3.2 3.2-1.7 0-3.2-1.4-3.2-3.2 0-1.7 1.4-3.2 3.2-3.2 1.8 0 3.2 1.5 3.2 3.2" opacity=".5"/><circle cx="12.2" cy="28" r="2" opacity=".5"/><circle cx="8.6" cy="31.6" r="1.2" opacity=".5"/></g><g fill="#3e4347"><path d="m51.2 20.4c0 1.5-.8 2.9-1.9 3.2-1.3.4-2.5-.8-2.5-2.7s1.2-3.3 2.5-3.2c1.1-.1 1.9 1.2 1.9 2.7"/><path d="m45.3 23.1c0 .6-.7 1.3-1.7 1.5-1.1.2-2-.1-2-.8s.9-1.4 2-1.6c1-.2 1.7.2 1.7.9"/><path d="m45.2 19.9c0 .6-.7 1.3-1.7 1.5-1.1.2-2-.1-2-.8s.9-1.4 2-1.6c.9-.1 1.7.3 1.7.9"/><path d="m36.8 28l14.7-4.1v9.8z"/></g><g fill="#94989b"><path d="m37.7 52.5c-.5 0-.9-.4-.9-.9v-23.6c0-.5.4-.9.9-.9h21.2c6.9 0 6.9 25.4 0 25.4h-21.2"/><path d="m34.1 31.7c0-.5.4-.8.8-.8h1.1c.5 0 .8.4.8.8v16.4c0 .5-.4.8-.8.8h-1.1c-.4 0-.8-.4-.8-.8v-16.4"/></g><path fill="#42ade2" d="m38.6 28.9h20.9v21.8h-20.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4fa.svg b/riot/emojione/svg/1f4fa.svg new file mode 100644 index 0000000..3d446fd --- /dev/null +++ b/riot/emojione/svg/1f4fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="M17,62H5.8c0-2.6,2.5-4.7,5.6-4.7S17,59.4,17,62z"/><path d="m58.2 62h-11.2c0-2.6 2.5-4.7 5.6-4.7s5.6 2.1 5.6 4.7"/><path transform="matrix(.7074-.7068.7068.7074-.1569 22.3467)" d="m26.4.1h.9v22.5h-.9z"/><circle cx="19" cy="3.4" r="1.4"/><path transform="matrix(.7071-.7071.7071.7071 2.8286 29.5528)" d="m25.8 10.9h22.5v.9h-22.5z"/><circle cx="45" cy="3.4" r="1.4"/><ellipse cx="32" cy="15.1" rx="8" ry="4.7"/></g><path d="m59.1 57.1c-5.2 6.6-47.5 6.4-53.7 0-4.6-4.7-4.6-32.5 0-37.2 6.2-6.4 48.5-6.6 53.7 0 3.9 5 3.9 32.3 0 37.2" fill="#c28fef"/><g fill="#3e4347"><path d="m49.5 52.7c-3.9 5-35.6 4.9-40.3 0-3.4-3.6-3.4-24.7 0-28.2 4.7-4.9 36.4-5 40.3 0 2.9 3.7 2.9 24.5 0 28.2"/><circle cx="56.4" cy="29.2" r="2.8"/><circle cx="56.4" cy="37.6" r="2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4fb.svg b/riot/emojione/svg/1f4fb.svg new file mode 100644 index 0000000..4a7bff1 --- /dev/null +++ b/riot/emojione/svg/1f4fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.5 17.4c2-.4 4.1-.8 6.1-1.2 3.9-.8 7.9-1.6 11.8-2.4 4.1-.8 8.2-1.6 12.3-2.5 3.5-.7 6.9-1.4 10.4-2.1 2-.4 4-.8 6-1.2.2 0 .4-.1.6-.1.3-.1.5-.5.4-.8-.1-.4-.4-.5-.8-.4-1 .3-2.2.5-3.3.7-3 .6-6 1.2-8.9 1.8-3.9.8-7.9 1.6-11.8 2.4-4.1.8-8.2 1.6-12.3 2.5-3.5.7-6.9 1.4-10.4 2.1-2 .4-4 .8-6 1.2-.2 0-.3.1-.5.1l6.4-.1" fill="#d0d0d0"/><path d="m64 53.3c0 2.1-1.9 4-4 4h-56c-2.1 0-4-1.9-4-4v-32c0-2.1 1.9-4 4-4h56c2.1 0 4 1.9 4 4v32" fill="#d3976e"/><g fill="#594640"><circle cx="16.9" cy="36.6" r="1.6"/><circle cx="20.5" cy="33" r="1.6"/><circle cx="24.1" cy="29.4" r="1.6"/><circle cx="13.3" cy="40.2" r="1.6"/><circle cx="13.3" cy="33" r="1.6"/><circle cx="13.3" cy="25.7" r="1.6"/><circle cx="16.9" cy="29.4" r="1.6"/><circle cx="9.7" cy="36.6" r="1.6"/><circle cx="20.5" cy="40.2" r="1.6"/><circle cx="24.1" cy="43.8" r="1.6"/><circle cx="24.1" cy="36.6" r="1.6"/><circle cx="20.5" cy="25.7" r="1.6"/><circle cx="27.8" cy="40.2" r="1.6"/><circle cx="16.9" cy="43.8" r="1.6"/><circle cx="9.7" cy="43.8" r="1.6"/><circle cx="6" cy="40.2" r="1.6"/><circle cx="13.3" cy="47.5" r="1.6"/><circle cx="9.7" cy="29.4" r="1.6"/><circle cx="27.8" cy="33" r="1.6"/><circle cx="6" cy="33" r="1.6"/><circle cx="20.5" cy="47.5" r="1.6"/></g><path d="m59.7 25.7c0 1.8-1.4 3.2-3.2 3.2h-19.2c-1.8 0-3.2-1.4-3.2-3.2 0-1.8 1.4-3.2 3.2-3.2h19.2c1.7 0 3.2 1.5 3.2 3.2" fill="#fff"/><circle cx="39.8" cy="39" r="4.8" fill="#594640"/><path fill="#ed4c5c" d="m41.9 28.9l-.5-4.3-.4 4.3z"/><g fill="#594640"><circle cx="53.9" cy="38.9" r="4.8"/><path d="m59.7 50.8c0 .9-.7 1.7-1.6 1.7h-4.8c-.9 0-1.7-.7-1.7-1.7 0-.9.7-1.7 1.7-1.7h4.7c.9 0 1.7.8 1.7 1.7"/></g><g fill="#d3976e"><path d="m35 42.6v1.2h1.7l4-3.9-1.5-1.5z"/><path d="m49.1 42.6v1.2h1.6l4-3.9-1.4-1.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4fc.svg b/riot/emojione/svg/1f4fc.svg new file mode 100644 index 0000000..6b1e3d0 --- /dev/null +++ b/riot/emojione/svg/1f4fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 14v9c0 .5.5 1 1 1h58c.5 0 1-.5 1-1v-9c0 0-60 0-60 0" fill="#3e4347"/><path d="m60 24v-6h-56v6h-2v24c0 1.1.9 2 2 2h56c1.1 0 2-.9 2-2v-24c0 0-2 0-2 0" fill="#62727a"/><path d="m53 24h-42c-2.2 0-4 4-4 9s1.8 9 4 9h42c2.2 0 4-4 4-9s-1.8-9-4-9" fill="#b2c1c0"/><path d="m53 26h-42c-.5.2-2 2.6-2 7s1.5 6.8 2 7h42c.6-.2 2-2.6 2-7 0-4.4-1.5-6.8-2-7" fill="#e8e8e8"/><g fill="#3e4347"><circle cx="42" cy="33" r="7"/><path d="m30.5 40c1.6-1.9 2.5-4.3 2.5-7s-.9-5.1-2.5-7h-17c-1.6 1.9-2.5 4.3-2.5 7 0 2.7.9 5.1 2.5 7h17"/></g><circle cx="42" cy="33" r="5" fill="#fff"/><g fill="#b2c1c0"><path d="m44.7 36.6l-.5-.9c.7-.5 1.2-1.3 1.3-2.2h1c-.2 1.3-.9 2.4-1.8 3.1"/><path d="m44.7 29.4c1 .7 1.7 1.8 1.8 3.1h-1c-.1-.9-.6-1.7-1.3-2.2l.5-.9"/></g><circle cx="22" cy="33" r="5" fill="#fff"/><g fill="#b2c1c0"><path d="m19.3 36.6l.5-.9c-.7-.5-1.2-1.3-1.3-2.2h-1c.2 1.3.9 2.4 1.8 3.1"/><path d="m19.3 29.4c-1 .7-1.6 1.8-1.8 3.1h1c.1-.9.6-1.7 1.3-2.2l-.5-.9"/><path d="m22 24h20v18h-20z"/></g><path d="m38 26h-12c-1.1 0-2 .9-2 2v2h16v-2c0-1.1-.9-2-2-2" fill="#42ade2"/><path d="m24 30v8c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-8h-16" fill="#fff"/><g fill="#b2c1c0"><path d="m26 32h12v2h-12z"/><path d="m26 36h12v2h-12z"/></g><g fill="#62727a"><path d="m22 31c-1.1 0-2 .9-2 2 0 1.1.9 2 2 2v-4"/><path d="m42 31c1.1 0 2 .9 2 2 0 1.1-.9 2-2 2v-4"/></g><g fill="#b2c1c0"><path d="m22 28.5c-.6 0-1.2.1-1.8.4l.5.9c.4-.2.8-.3 1.3-.3 0 0 0-1 0-1"/><path d="m22 36.5c-.5 0-.9-.1-1.3-.3l-.5.9c.6.2 1.2.4 1.8.4 0 0 0-1 0-1"/><path d="m42 28.5v1c.5 0 .9.1 1.3.3l.5-.9c-.6-.3-1.2-.4-1.8-.4"/><path d="m43.3 36.2c-.4.2-.8.3-1.3.3v1c.6 0 1.2-.1 1.8-.4l-.5-.9"/></g><path fill="#3e4347" d="m50 26l-2 7.9.7 1.1 2.3-9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4fd.svg b/riot/emojione/svg/1f4fd.svg new file mode 100644 index 0000000..a440cbf --- /dev/null +++ b/riot/emojione/svg/1f4fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#94989b" d="m27.2 58.6h12.3v5.4h-12.3z"/><g fill="#3e4347"><path d="m49 55.8c0 1.4-1.2 2.7-2.7 2.7h-27.2c-1.5 0-2.7-1.3-2.7-2.7v-19c0-1.4 1.2-2.7 2.7-2.7h27.2c1.5 0 2.7 1.3 2.7 2.7 0 0 0 19 0 19"/><circle cx="17.7" cy="17.7" r="17.7"/></g><g fill="#d0d0d0"><circle cx="11.4" cy="8.7" r="4.1"/><circle cx="24" cy="8.7" r="4.1"/><circle cx="28" cy="20.3" r="4.1"/><circle cx="17.7" cy="28.4" r="4.1"/><circle cx="7.4" cy="20.3" r="4.1"/><circle cx="16.2" cy="15.4" r="1"/><circle cx="19.3" cy="15.4" r="1"/><circle cx="20.3" cy="18.3" r="1"/><circle cx="17.7" cy="20.3" r="1"/><circle cx="15.1" cy="18.3" r="1"/></g><circle cx="49" cy="20.4" r="15" fill="#3e4347"/><g fill="#d0d0d0"><circle cx="43.7" cy="12.9" r="3.4"/><circle cx="54.3" cy="12.8" r="3.4"/><circle cx="57.8" cy="22.6" r="3.4"/><circle cx="49" cy="29.5" r="3.4"/><circle cx="40.3" cy="22.6" r="3.4"/><circle cx="47.7" cy="18.5" r=".9"/><circle cx="50.4" cy="18.5" r=".9"/><circle cx="51.2" cy="20.9" r=".9"/><circle cx="49" cy="22.7" r=".9"/><circle cx="46.9" cy="20.9" r=".9"/></g><g fill="#3e4347"><path d="m6.8 40.9v20.4l10.9-5.5v-9.5z"/><path d="m55.8 35.4v9.5l-6.8-1.3v-6.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f4ff.svg b/riot/emojione/svg/1f4ff.svg new file mode 100644 index 0000000..1fa2a4a --- /dev/null +++ b/riot/emojione/svg/1f4ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ed4c5c"><path d="m58.4 13.5c-1.2 1.2-3.1 1.2-4.3 0-1.2-1.2-1.2-3.1 0-4.3 1.2-1.2 3.1-1.2 4.3 0 1.2 1.2 1.2 3.1 0 4.3"/><path d="m36.2 19.9c-1.2 1.2-3.1 1.2-4.3 0s-1.2-3.1 0-4.3c1.2-1.2 3.1-1.2 4.3 0 1.2 1.2 1.2 3.1 0 4.3"/><path d="m47.5 32.3c-1.2 1.2-3.1 1.2-4.3 0-1.2-1.2-1.2-3.1 0-4.3 1.2-1.2 3.1-1.2 4.3 0 1.2 1.2 1.2 3.1 0 4.3"/><path d="m22.1 43.6c-1.2 1.2-3.1 1.2-4.3 0-1.2-1.2-1.2-3.1 0-4.3 1.2-1.2 3.1-1.2 4.3 0 1.2 1.2 1.2 3.1 0 4.3"/></g><g fill="#b2c1c0"><path d="m46.1 10.1c-1.2 1.2-3.1 1.2-4.3 0s-1.2-3.1 0-4.3c1.2-1.2 3.1-1.2 4.3 0 1.2 1.3 1.2 3.2 0 4.3"/><path d="m59.5 25.7c-1.2 1.2-3.1 1.2-4.3 0s-1.2-3.1 0-4.3c1.2-1.2 3.1-1.2 4.3 0 1.2 1.2 1.2 3.1 0 4.3"/><path d="m28.5 31.4c-1.2 1.2-3.1 1.2-4.3 0s-1.2-3.1 0-4.3c1.2-1.2 3.1-1.2 4.3 0 1.2 1.3 1.2 3.2 0 4.3"/><path d="m34.9 38.3c-1.2 1.2-3.1 1.2-4.3 0-1.2-1.2-1.2-3.1 0-4.3 1.2-1.2 3.1-1.2 4.3 0 1.1 1.2 1.1 3.1 0 4.3"/></g><path d="m13.7 49.4l-2.2-2c0 0-6.3 4-9.4 7.1-.4.4.2 1 .6.6 1.7-1.7 4.3-3.6 6.4-5-2.4 2-5.6 4.7-6.2 5.2-.4.4.2 1 .6.6.4-.4 2.9-2.5 5.2-4.4-2 1.9-4.2 4-4.9 4.6-.4.4.1 1 .5.6.7-.6 2.6-2.3 4.4-4.1-1.8 2-3.6 3.8-4.2 4.2-.5.3 0 1 .5.6.6-.4 2.5-2.4 4.3-4.3-1.7 2.1-3.3 4-4 4.5-.5.3 0 1 .5.6 1-.7 3.9-4.2 5.8-6.6-1.4 2-3.5 4.8-5.5 6.8-.4.4.2 1 .6.6 3.1-3.3 7-9.6 7-9.6" fill="#89664c"/><path d="m19.3 44.2c-.6-.5-1.7-.2-1.9-.4-.2-.2.2-1.2-.4-1.8-.6-.6-1.8-.5-2.4.4-1.4 1.9-.8 4.9-.8 4.9s3.1.6 5.1-.8c.9-.6 1.1-1.7.4-2.3" fill="#c94747"/><g fill="#b2c1c0"><path d="m13.5 50l-2.4-2.4c2.5-2.4 4.9-.1 2.4 2.4"/><path d="m54.4 9c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0s.8 2 0 2.8"/><path d="m60.2 17c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.8.8 2 0 2.8"/><path d="m38.5 15.2c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.8.8 2 0 2.8"/><path d="m51.5 29.8c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0s.8 2.1 0 2.8"/><path d="m32.9 23.4c-.8.8-2.1.8-2.9 0s-.8-2.1 0-2.8 2.1-.8 2.9 0 .8 2 0 2.8"/><path d="m42.1 33.4c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0s.7 2 0 2.8"/><path d="m22.6 38.1c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.8.8 2 0 2.8"/><path d="m26.2 41.8c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.8.8 2 0 2.8"/></g><g fill="#ed4c5c"><path d="m50.4 8.7c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.8.8 2 0 2.8"/><path d="m61.4 20.7c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.8.8 2.1 0 2.8"/><path d="m41.3 12.3c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.7.8 2 0 2.8"/><path d="m55 28.1c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.7.8 2 0 2.8"/><path d="m30.6 26.7c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.7.8 2 0 2.8"/><path d="m38.4 35.1c-.8.8-2.1.8-2.9 0s-.8-2.1 0-2.8 2.1-.8 2.9 0c.8.8.8 2 0 2.8"/><path d="m24.9 34.8c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8s2.1-.8 2.9 0c.8.8.8 2 0 2.8"/><path d="m30 40.3c-.8.8-2.1.8-2.9 0-.8-.8-.8-2.1 0-2.8.8-.8 2.1-.8 2.9 0 .8.7.8 2 0 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f500.svg b/riot/emojione/svg/1f500.svg new file mode 100644 index 0000000..81a5389 --- /dev/null +++ b/riot/emojione/svg/1f500.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m49 39.6l-6.4 6.4v-3.9h-5.6c0 0 0 0 0 0-1.6 0-4.5-1-5.7-4.7l-1.6-4.4-1.6-4.6c-.3-1.1-.8-1.2-1-1.3h-12.1v-5h12.2c0 0 0 0 0 0 1.6 0 4.5 1 5.7 4.7l1.6 4.4 1.6 4.6c.3 1.1.8 1.2 1 1.3h5.5v-3.9l6.4 6.4"/><path d="m28.4 35l-.2.7c-.3 1.1-.8 1.2-1 1.3h-12.2v5h12.2c0 0 0 0 0 0 .9 0 2.3-.3 3.5-1.4-.5-.8-1-1.6-1.3-2.7l-1-2.9"/><path d="m35.8 29l.3-.8c.3-1.1.8-1.2 1-1.3h5.5v3.9l6.4-6.4-6.4-6.4v3.9h-5.6c0 0 0 0 0 0-.9 0-2.4.4-3.6 1.4.6.8 1 1.7 1.4 2.8l1 2.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f501.svg b/riot/emojione/svg/1f501.svg new file mode 100644 index 0000000..fccd824 --- /dev/null +++ b/riot/emojione/svg/1f501.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m49.4 29l-5.3 3.1c0 .1 0 .2 0 .4 0 2.7-2.2 4.9-4.8 4.9h-11.7v-3.8l-11.6 6.6 11.6 6.8v-3.8h11.7c2.8 0 5.5-1.1 7.5-3.1 2-2 3.1-4.7 3.1-7.6.1-1.3-.1-2.4-.5-3.5"/><path d="m19.8 31.5c0-2.7 2.2-4.9 4.8-4.9h11.8v3.8l11.6-6.6-11.6-6.8v3.8h-11.8c-2.8 0-5.5 1.1-7.5 3.1-2 2-3.1 4.7-3.1 7.6 0 1.2.2 2.4.6 3.5l5.3-3.1c-.1-.1-.1-.2-.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f502.svg b/riot/emojione/svg/1f502.svg new file mode 100644 index 0000000..3372590 --- /dev/null +++ b/riot/emojione/svg/1f502.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m47.3 23.7l-11.3-6.7v3.8h-11.6c-2.8 0-5.4 1.1-7.4 3.1s-3 4.8-3 7.6c0 1.2.2 2.3.5 3.4.2-.3.5-.7.8-1 .7-.8 1.6-1.4 2.6-1.8.6-.2 1.2-.4 1.8-.5 0 0 0-.1 0-.1 0-2.7 2.1-4.9 4.7-4.9h11.6v3.8l11.3-6.7"/><path d="m49.5 28.1l-5.2 3.1c0 .1 0 .2 0 .4 0 2.7-2.1 4.9-4.7 4.9h-12.4c-1.2-2.3-3.5-3.8-6.2-3.8-3.9 0-7 3.2-7 7.2s3.2 7.2 7 7.2c3.1 0 5.7-2 6.6-4.8h11.9c2.8 0 5.4-1.1 7.4-3.1 2-2 3.1-4.7 3.1-7.6 0-1.3-.2-2.4-.5-3.5m-28.5 16.5c-2.6 0-4.7-2.2-4.7-4.8 0-2.7 2.1-4.8 4.7-4.8 2.6 0 4.7 2.2 4.7 4.8.1 2.6-2.1 4.8-4.7 4.8"/><path d="m21.8 42.7h-1.1v-4.3c-.4.4-.9.7-1.4.9v-1c.3-.1.6-.3.9-.5.3-.3.6-.6.7-.9h.9v5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f503.svg b/riot/emojione/svg/1f503.svg new file mode 100644 index 0000000..3aa0d63 --- /dev/null +++ b/riot/emojione/svg/1f503.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m39.5 61.1l-6.4-8.7c-.3 0-.5 0-.8 0-5.6 0-10.2-3.6-10.2-8v-19.4h8l-14-19.2-14.1 19.2h8v19.4c0 4.7 2.3 9.1 6.6 12.4 4.2 3.3 9.8 5.2 15.8 5.2 2.4 0 4.8-.3 7.1-.9"/><path d="m31.7 11.6c5.6 0 10.2 3.6 10.2 8v19.5h-8l14.1 19.2 14-19.2h-8v-19.5c0-4.7-2.3-9.1-6.5-12.4-4.2-3.4-9.8-5.2-15.8-5.2-2.5 0-4.9.3-7.2.9l6.4 8.7c.2 0 .5 0 .8 0"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f504.svg b/riot/emojione/svg/1f504.svg new file mode 100644 index 0000000..2eefda0 --- /dev/null +++ b/riot/emojione/svg/1f504.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m27.3 20.1c1.5-.7 3.2-1 4.9-1 6.6 0 11.9 5.1 11.9 12h7.9c0-10.8-8.9-19.8-19.8-19.8-3.8 0-7.6 1.1-10.8 3.2l-3.4-3.5v13.1h13.5l-4.2-4"/><path d="m36.5 42.6c-1.5.7-3.1 1-4.7 1-6.6 0-12-5.3-12-12.6h-7.8c0 11.4 8.9 20.8 19.8 20.8 3.7 0 7.2-1.1 10.3-3.1l3.9 4.3v-14.8h-13.4l3.9 4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f505.svg b/riot/emojione/svg/1f505.svg new file mode 100644 index 0000000..206610e --- /dev/null +++ b/riot/emojione/svg/1f505.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#eda454"><path d="m29 51.1h6v6.9h-6z"/><path d="m29 6h6v6.9h-6z"/><path d="m51.1 29h6.9v6h-6.9z"/><path d="m6 29h6.9v6h-6.9z"/><path transform="matrix(.7071-.7071.7071.7071-29.1995 25.3958)" d="m12.6 44.9h6.9v6h-6.9z"/><path transform="matrix(.7071-.7071.7071.7071 2.6902 38.6041)" d="m44.5 13.1h6.9v6h-6.9z"/><path transform="matrix(.707-.7072.7072.707-19.8611 47.9524)" d="m44.9 44.5h6v6.9h-6z"/><path transform="matrix(.7071-.7071.7071.7071-6.6501 16.0555)" d="m13.1 12.6h6v6.9h-6z"/><path d="m32 17c-8.3 0-15 6.7-15 15s6.7 15 15 15 15-6.7 15-15-6.7-15-15-15m0 25c-5.5 0-10-4.5-10-10s4.5-10 10-10 10 4.5 10 10-4.5 10-10 10"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f506.svg b/riot/emojione/svg/1f506.svg new file mode 100644 index 0000000..dc65b9a --- /dev/null +++ b/riot/emojione/svg/1f506.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#eda454"><path d="m29 50.5h6v11.5h-6z"/><path d="m29 2h6v11.5h-6z"/><path d="m50.5 29h11.5v6h-11.5z"/><path d="m2 29h11.5v6h-11.5z"/><path transform="matrix(.7071-.7071.7071.7071-30.4169 24.8919)" d="m9.1 46.2h11.5v6h-11.5z"/><path transform="matrix(.7071-.7071.7071.7071 3.9082 39.1093)" d="m43.4 11.8h11.5v6h-11.5z"/><path transform="matrix(.7071-.7071.7071.7071-20.3642 49.1612)" d="m46.2 43.4h6v11.5h-6z"/><path transform="matrix(.7071-.7071.7071.7071-6.1467 14.8384)" d="m11.8 9.1h6v11.5h-6z"/><path d="m32 17c-8.3 0-15 6.7-15 15s6.7 15 15 15 15-6.7 15-15-6.7-15-15-15m0 25c-5.5 0-10-4.5-10-10s4.5-10 10-10 10 4.5 10 10-4.5 10-10 10"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f507.svg b/riot/emojione/svg/1f507.svg new file mode 100644 index 0000000..4d10ceb --- /dev/null +++ b/riot/emojione/svg/1f507.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><path d="m41.5 28.1v-7.2-7c0-.5-.4-.9-.9-.9s-.9.4-.9.9v.5l-14.1 9.9h-6.2c-1.2 0-2.3.9-2.3 2.1v2.1 7.1 2.1c0 1.2 1 2.1 2.3 2.1h6.2l14.1 9.9v.5c0 .5.4.9.9.9s.9-.4.9-.9v-7-7.2c2.3 0 4.2-1.7 4.2-3.9 0-2.2-1.9-4-4.2-4" fill="#fff"/><path transform="matrix(.7071-.7071.7071.7071-13.2556 32.0003)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f508.svg b/riot/emojione/svg/1f508.svg new file mode 100644 index 0000000..9eac4a0 --- /dev/null +++ b/riot/emojione/svg/1f508.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M11.1,45H3.8C1.7,45,0,43.4,0,41.5V22.5c0-2,1.7-3.5,3.8-3.5h7.3V45z" fill="#8b979e" id="0"/><use xlink:href="#0"/><path d="M29.8,2.2C31.1,0.9,11.1,19,11.1,19v26c0,0,10.3,7.9,18.7,16.8V2.2z" fill="#b0bdc6"/><g fill="#333"><path d="m33 25.5v13.1c3.9 0 7-2.9 7-6.5 0-3.7-3.1-6.6-7-6.6"/><path d="m33 62.5c0 .8-.7 1.5-1.6 1.5-.9 0-1.6-.7-1.6-1.5v-61c0-.8.7-1.5 1.6-1.5.9 0 1.6.7 1.6 1.5v61"/></g><path d="M11.1,40.2H3.8c-2.1,0-3.8-1-3.8-2.2V26c0-1.2,1.7-2.2,3.8-2.2h7.3V40.2z" fill="#8b979e"/><path d="M11.1,40.2H3.8c-2.1,0-3.8-1-3.8-2.2V26c0-1.2,1.7-2.2,3.8-2.2h7.3V40.2z" fill="#b0bdc6"/><path fill="#dfe9ef" d="m29.8 13.3l-18.7 10.5v16.4l18.7 10.5z"/><path fill="#8b979e" d="m29.8 13.3h3.2v37.5h-3.2z"/><path fill="#333" d="m3.8 19h7.3v26h-7.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f509.svg b/riot/emojione/svg/1f509.svg new file mode 100644 index 0000000..5460d8e --- /dev/null +++ b/riot/emojione/svg/1f509.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m44.6 32c0 5-3.2 9.3-7.7 11l2.9 2.9c5.1-2.5 8.6-7.8 8.6-13.9 0-6.1-3.5-11.4-8.7-13.9l-2.8 2.9c4.5 1.6 7.7 5.9 7.7 11" fill="#42ade2"/><path d="m11.1 45h-7.3c-2.1 0-3.8-1.6-3.8-3.5v-19c0-2 1.7-3.5 3.8-3.5h7.3v26" fill="#8b979e" id="0"/><use xlink:href="#0"/><path d="M29.8,2.2C31.1,0.9,11.1,19,11.1,19v26c0,0,10.3,7.9,18.7,16.8V2.2z" fill="#b0bdc6"/><g fill="#333"><path d="m33 25.5v13.1c3.9 0 7-2.9 7-6.5 0-3.7-3.1-6.6-7-6.6"/><path d="m33 62.5c0 .8-.7 1.5-1.6 1.5-.9 0-1.6-.7-1.6-1.5v-61c0-.8.7-1.5 1.6-1.5.9 0 1.6.7 1.6 1.5v61"/></g><path d="M11.1,40.2H3.8c-2.1,0-3.8-1-3.8-2.2V26c0-1.2,1.7-2.2,3.8-2.2h7.3V40.2z" fill="#8b979e"/><path d="M11.1,40.2H3.8c-2.1,0-3.8-1-3.8-2.2V26c0-1.2,1.7-2.2,3.8-2.2h7.3V40.2z" fill="#b0bdc6"/><path fill="#dfe9ef" d="m29.8 13.3l-18.7 10.5v16.4l18.7 10.5z"/><path fill="#8b979e" d="m29.8 13.3h3.2v37.5h-3.2z"/><path fill="#333" d="m3.8 19h7.3v26h-7.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f50a.svg b/riot/emojione/svg/1f50a.svg new file mode 100644 index 0000000..eb2e94c --- /dev/null +++ b/riot/emojione/svg/1f50a.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="#42ade2"><path d="M51.4,7.4L48.8,10c7,4.8,11.5,12.9,11.5,22c0,9.1-4.6,17.1-11.5,21.9l2.6,2.6C59.1,51,64,42.1,64,32 + C64,21.9,59,12.9,51.4,7.4z"/><path d="m52.5 32c0 6.9-3.7 13-9.3 16.3l2.7 2.7c6.2-4 10.3-11 10.3-19 0-8-4.1-15-10.4-19l-2.7 2.7c5.6 3.3 9.4 9.4 9.4 16.3"/><path d="m44.8 32c0 4.8-3.1 9-7.4 10.5l2.8 2.8c4.9-2.4 8.3-7.5 8.3-13.3 0-5.9-3.4-10.9-8.3-13.4l-2.8 2.8c4.3 1.6 7.4 5.7 7.4 10.6"/></g><path d="m11.1 45h-7.3c-2.1 0-3.8-1.6-3.8-3.5v-19c0-2 1.7-3.5 3.8-3.5h7.3v26" fill="#8b979e" id="0"/><use xlink:href="#0"/><path d="M29.8,2.2C31.1,0.9,11.1,19,11.1,19v26c0,0,10.3,7.9,18.7,16.8V2.2z" fill="#b0bdc6"/><g fill="#333"><path d="m33 25.5v13.1c3.9 0 7-2.9 7-6.5 0-3.7-3.1-6.6-7-6.6"/><path d="m33 62.5c0 .8-.7 1.5-1.6 1.5-.9 0-1.6-.7-1.6-1.5v-61c0-.8.7-1.5 1.6-1.5.9 0 1.6.7 1.6 1.5v61"/></g><path d="M11.1,40.2H3.8c-2.1,0-3.8-1-3.8-2.2V26c0-1.2,1.7-2.2,3.8-2.2h7.3V40.2z" fill="#8b979e"/><path d="M11.1,40.2H3.8c-2.1,0-3.8-1-3.8-2.2V26c0-1.2,1.7-2.2,3.8-2.2h7.3V40.2z" fill="#b0bdc6"/><path fill="#dfe9ef" d="m29.8 13.3l-18.7 10.5v16.4l18.7 10.5z"/><path fill="#8b979e" d="m29.8 13.3h3.2v37.5h-3.2z"/><path fill="#333" d="m3.8 19h7.3v26h-7.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f50b.svg b/riot/emojione/svg/1f50b.svg new file mode 100644 index 0000000..370d5cf --- /dev/null +++ b/riot/emojione/svg/1f50b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m42 7c0 1.1-.9 2-2 2h-16c-1.1 0-2-.9-2-2v-3c0-1.1.9-2 2-2h16c1.1 0 2 .9 2 2v3"/><path d="m48 6h-32c-2.2 0-4 1.8-4 4v48c0 2.2 1.8 4 4 4h32c2.2 0 4-1.8 4-4v-48c0-2.2-1.8-4-4-4m0 47c0 .5-.5 1-1 1h-30c-.5 0-1-.5-1-1v-38c0-.5.5-1 1-1h30c.5 0 1 .5 1 1v38"/></g><g fill="#a8d600"><path d="m46 24c0 1.1-.9 2-2 2h-24c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h24c1.1 0 2 .9 2 2v4"/><path d="m46 36c0 1.1-.9 2-2 2h-24c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h24c1.1 0 2 .9 2 2v4"/><path d="m46 48c0 1.1-.9 2-2 2h-24c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h24c1.1 0 2 .9 2 2v4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f50c.svg b/riot/emojione/svg/1f50c.svg new file mode 100644 index 0000000..bbbcf0a --- /dev/null +++ b/riot/emojione/svg/1f50c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d0d0d0"><path d="m11.7 13.1c0 .6-.5 1.1-1.2 1.1h-1.5c-.7 0-1.2-.5-1.2-1.1v-12c0-.6.5-1.1 1.2-1.1h1.6c.7 0 1.2.5 1.2 1.1v12z"/><path d="m21.8 13.1c0 .6-.5 1.1-1.2 1.1h-1.6c-.7 0-1.2-.5-1.2-1.1v-12c0-.6.5-1.1 1.2-1.1h1.6c.7 0 1.2.5 1.2 1.1v12"/></g><g fill="#3e4347"><path d="m0 13.6v4.4c0 .6.5 1.1 1.2 1.1h1.7v4.9c0 4.2 2.3 7.8 5.7 9.8v4.2c0 .6.5 1.1 1.2 1.1h10.2c.7 0 1.2-.5 1.2-1.1v-4.2c3.4-2 5.7-5.7 5.7-9.8v-4.8h1.7c.6 0 1.2-.5 1.2-1.1v-4.5c0-.5-.4-1-.9-1.1h-28c-.5.1-.9.5-.9 1.1"/><path d="m60.1 25.8v38.2h3.9v-38.2c0-1.8-.4-3.6-1.1-5.2-.7-1.6-1.7-3-3-4.2-1.3-1.2-2.7-2.2-4.4-2.9-1.7-.7-3.5-1.1-5.4-1.1-1.9 0-3.7.4-5.4 1.1-1.6.7-3.1 1.6-4.4 2.9-1.3 1.2-2.3 2.7-3 4.2-.7 1.6-1.1 3.4-1.1 5.2v24.8c0 5.3-4.4 9.5-9.8 9.5-5.4 0-9.8-4.3-9.8-9.5v-11.4h-3.9v11.4c0 1.8.4 3.5 1.1 5.2.7 1.6 1.7 3 3 4.2 1.3 1.2 2.7 2.2 4.4 2.9 1.7.7 3.5 1 5.4 1 1.9 0 3.7-.4 5.4-1 1.6-.7 3.1-1.6 4.4-2.9 1.3-1.2 2.3-2.7 3-4.2.7-1.6 1.1-3.4 1.1-5.2v-24.8c0-5.3 4.4-9.5 9.8-9.5 5.4 0 9.8 4.3 9.8 9.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f50d.svg b/riot/emojione/svg/1f50d.svg new file mode 100644 index 0000000..7f1758d --- /dev/null +++ b/riot/emojione/svg/1f50d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7072-.707.707.7072-17.5441 42.3457)" fill="#b0bdc6" d="m39.7 40.3h5.4v4.1h-5.4z"/><path transform="matrix(.7069-.7073.7073.7069-17.5421 42.3708)" fill="#dfe9ef" d="m41 40.3h2.8v4.1h-2.8z"/><path transform="matrix(.707-.7072.7072.707-17.1888 41.5085)" fill="#b0bdc6" d="m38.8 40.6h5.4v1.7h-5.4z"/><path d="m41.5 8.8c-9-9-23.7-9-32.8 0s-9 23.7 0 32.8c9 9 23.7 9 32.8 0 9.1-9.1 9.1-23.8 0-32.8m-2.1 30.6c-7.9 7.9-20.6 7.9-28.4 0-7.9-7.9-7.9-20.6 0-28.4 7.9-7.9 20.6-7.9 28.4 0 7.8 7.8 7.8 20.5 0 28.4" fill="#dfe9ef"/><path d="m39.9 10.4c-8.1-8.1-21.3-8.1-29.5 0-8.1 8.1-8.1 21.3 0 29.5 8.1 8.1 21.3 8.1 29.5 0 8.1-8.1 8.1-21.3 0-29.5m-1.1 28.4c-7.5 7.5-19.8 7.5-27.3 0s-7.5-19.8 0-27.3c7.5-7.5 19.8-7.5 27.3 0 7.5 7.5 7.5 19.8 0 27.3" fill="#b0bdc6"/><path d="m36.1 29.8c-6.5 6.5-17.1 6.5-23.6 0-1.7-1.7-3-3.7-3.8-5.9-.4 4.8 1.2 9.7 4.8 13.3 6.5 6.5 17.1 6.5 23.6 0 4.8-4.8 6-11.8 3.8-17.7-.4 3.8-2 7.4-4.8 10.3" opacity=".6" fill="#a6aeb0"/><path transform="matrix(.7071-.7071.7071.7071-20.7885 50.1891)" fill="#333" d="m45.3 40.5h9.8v19.5h-9.8z"/><path transform="matrix(.707-.7072.7072.707-20.7875 50.198)" fill="#575b5e" d="m47.5 40.5h5.4v19.5h-5.4z"/><path d="m61.9 52.9c1.1 1.1-7.8 10.1-9 9l-.7-.7c-1.1-1.1 7.8-10.1 9-9l.7.7" fill="#b0bdc6"/><path d="m60.4 54.4c1.1 1.1-4.8 7.1-6 6l-.7-.7c-1.1-1.1 4.8-7.1 6-6l.7.7" fill="#dfe9ef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f50e.svg b/riot/emojione/svg/1f50e.svg new file mode 100644 index 0000000..a60c2aa --- /dev/null +++ b/riot/emojione/svg/1f50e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.707-.7072.7072.707-23.6115 27.7169)" fill="#b0bdc6" d="m19.6 39.7h4.1v5.4h-4.1z"/><path transform="matrix(.7073-.7069.7069.7073-23.6053 27.6984)" fill="#dfe9ef" d="m19.6 41h4.1v2.8h-4.1z"/><path transform="matrix(.7072-.707.707.7072-22.7534 28.058)" fill="#b0bdc6" d="m21.6 38.8h1.7v5.4h-1.7z"/><path d="m22.5 41.5c9 9 23.7 9 32.8 0 9-9 9-23.7 0-32.8s-23.7-9-32.8 0c-9.1 9.1-9.1 23.8 0 32.8m2.1-30.6c7.9-7.9 20.6-7.9 28.4 0 7.9 7.9 7.9 20.6 0 28.4-7.9 7.9-20.6 7.9-28.4 0-7.8-7.8-7.8-20.5 0-28.4" fill="#dfe9ef"/><path d="m24.1 39.9c8.1 8.1 21.3 8.1 29.5 0 8.1-8.1 8.1-21.3 0-29.5-8.1-8.1-21.3-8.1-29.5 0-8.1 8.2-8.1 21.4 0 29.5m1.1-28.4c7.5-7.5 19.8-7.5 27.3 0 7.5 7.5 7.5 19.8 0 27.3-7.5 7.5-19.8 7.5-27.3 0-7.5-7.5-7.5-19.8 0-27.3" fill="#b0bdc6"/><path d="m27.9 29.8c6.5 6.5 17.1 6.5 23.6 0 1.7-1.7 3-3.7 3.8-5.9.4 4.8-1.2 9.7-4.8 13.3-6.5 6.5-17.1 6.5-23.6 0-4.8-4.8-6-11.8-3.8-17.7.4 3.8 2 7.4 4.8 10.3" opacity=".6" fill="#a6aeb0"/><path transform="matrix(.7071-.7071.7071.7071-31.4441 24.465)" fill="#333" d="m4.1 45.3h19.5v9.8h-19.5z"/><path transform="matrix(.7072-.707.707.7072-31.4404 24.4592)" fill="#575b5e" d="m4.1 47.5h19.5v5.4h-19.5z"/><path d="m2.1 52.9c-1.1 1.1 7.8 10.1 9 9l.7-.7c1.1-1.1-7.8-10.1-9-9l-.7.7" fill="#b0bdc6"/><path d="m3.6 54.4c-1.1 1.1 4.8 7.1 6 6l.7-.7c1.1-1.1-4.8-7.1-6-6l-.7.7" fill="#dfe9ef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f50f.svg b/riot/emojione/svg/1f50f.svg new file mode 100644 index 0000000..eb3c3fb --- /dev/null +++ b/riot/emojione/svg/1f50f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,28.3v31.4C2,62.1,3.9,64,6.3,64h51.4c2.4,0,4.3-1.9,4.3-4.3V28.3H2z" fill="#ffce31"/><path d="M62,24c0-2.4-1.9-4.3-4.3-4.3H6.3C3.9,19.6,2,21.6,2,24v4.3h60V24z" fill="#ff8736"/><g fill="#3e4347"><ellipse cx="12.4" cy="23.5" rx="5.9" ry="2.5"/><ellipse cx="51.6" cy="23.5" rx="5.9" ry="2.5"/></g><path d="m32 0c-12.9 0-23.4 10.6-23.4 23.5 0 .8 1.6 1.4 3.8 1.4v-1.4c.8-11 9.3-19.7 19.6-19.7 10.4 0 18.9 8.7 19.6 19.7v1.4c2.2 0 3.8-.6 3.8-1.4 0-12.9-10.5-23.5-23.4-23.5" fill="#dfe9ef"/><path d="m51.6 23.5c-.7-10.9-9.2-19.6-19.6-19.6-10.4 0-18.9 8.7-19.6 19.7v1.4c2.2 0 4.2-.6 4.2-1.4-.1-7.2 5.9-15.6 15.4-15.6 9.5 0 15.5 8.4 15.5 15.5 0 .8 2 1.4 4.2 1.4l-.1-1.4" fill="#b0bdc6"/><path d="m36.6 56.4l-1.9-12.3c1.1-.8 1.9-2.2 1.9-3.7 0-2.5-2-4.6-4.6-4.6s-4.6 2.1-4.6 4.6c0 1.5.7 2.9 1.9 3.7l-1.9 12.3h9.2" fill="#3e4347"/><path d="m45.8 31.4h11.2l2.8 11.4c0 0-5 4-7.3 10.4v-14.1c.3-.3.6-.8.6-1.2 0-.9-.8-1.7-1.7-1.7-.9 0-1.7.8-1.7 1.7 0 .5.2.9.6 1.2v14.1c-2.3-6.4-7.3-10.4-7.3-10.4l2.8-11.4" fill="#fff"/><path d="m62 0c0 12.9-2.2 17.7-2.2 17.7v13.7h-16.8v-13.7c0 0-2.2-4.8-2.2-17.7-.1 0 21.2 0 21.2 0" fill="#3e4347"/><path fill="#94989b" d="m43 17.7h16.8v2.2h-16.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f510.svg b/riot/emojione/svg/1f510.svg new file mode 100644 index 0000000..2d9a97d --- /dev/null +++ b/riot/emojione/svg/1f510.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,28.3v31.4C2,62.1,3.9,64,6.3,64h51.4c2.4,0,4.3-1.9,4.3-4.3V28.3H2z" fill="#ffce31"/><path d="M62,24c0-2.4-1.9-4.3-4.3-4.3H6.3C3.9,19.6,2,21.6,2,24v4.3h60V24z" fill="#ff8736"/><g fill="#3e4347"><ellipse cx="12.4" cy="23.5" rx="5.9" ry="2.5"/><ellipse cx="51.6" cy="23.5" rx="5.9" ry="2.5"/></g><path d="m32 0c-12.9 0-23.4 10.6-23.4 23.5 0 .8 1.6 1.4 3.8 1.4v-1.4c.8-11 9.3-19.7 19.6-19.7 10.4 0 18.9 8.7 19.6 19.7v1.4c2.2 0 3.8-.6 3.8-1.4 0-12.9-10.5-23.5-23.4-23.5" fill="#dfe9ef"/><path d="m51.6 23.5c-.7-10.9-9.2-19.6-19.6-19.6-10.4 0-18.9 8.7-19.6 19.7v1.4c2.2 0 4.2-.6 4.2-1.4-.1-7.2 5.9-15.6 15.4-15.6 9.5 0 15.5 8.4 15.5 15.5 0 .8 2 1.4 4.2 1.4l-.1-1.4" fill="#b0bdc6"/><path d="m36.6 56.4l-1.9-12.3c1.1-.8 1.9-2.2 1.9-3.7 0-2.5-2-4.6-4.6-4.6s-4.6 2.1-4.6 4.6c0 1.5.7 2.9 1.9 3.7l-1.9 12.3h9.2" fill="#3e4347"/><path d="m43.2 27.3v8.2l2.3 2.2v3.8l-2.3 2.2v5l2.3 2.2v3.8l-2.3 2.2v3.4l4.7 3.8 4.7-3.8v-33c5.5-1.9 9.4-7.1 9.4-13.3 0-7.7-6.3-14-14.1-14s-14 6.3-14 14.1c0 6.1 3.9 11.3 9.3 13.2m9.4-17.9c0 2.6-2.1 4.6-4.6 4.6-2.6 0-4.6-2.1-4.6-4.6 0-2.6 2.1-4.6 4.6-4.6 2.5 0 4.6 2.1 4.6 4.6" fill="#42ade2"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f511.svg b/riot/emojione/svg/1f511.svg new file mode 100644 index 0000000..74b38d1 --- /dev/null +++ b/riot/emojione/svg/1f511.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 7c-6.7-6.7-17.5-6.7-24.1 0-5.5 5.5-6.4 13.8-3 20.3l-24.4 24.7-3.5 8.4 1.6 1.6 6.3-.6 26.8-27.2c0 0 0 0 0 0 6.5 3.6 14.8 2.6 20.2-2.9 6.8-6.7 6.8-17.6.1-24.3m-4.8 12.2c-2 2-5.3 2-7.3 0-2-2-2-5.3 0-7.4 2-2 5.3-2 7.3 0 2.1 2 2.1 5.3 0 7.4" fill="#eda454"/><g fill="#cc7f2b"><path d="m15.8 57.5l1.4-1.5v-2l-7.3 7.4 4.4-.5 1.5-1.5z"/><path d="m26.1 47l1.4-1.5v-2l-8.8 9h2l1.4-1.5h2l2-2z"/><path d="m30.5 31.6c.5-.5.2-.7 0-1-.3-.3-.4-.6-.9 0l-21.7 21.9c-.5.5-.2.7 0 1 .3.3.4.6.9 0l21.7-21.9"/><path d="m33.5 34.6c.5-.5.2-.7 0-1-.3-.3-.4-.6-.9 0l-21.8 21.9c-.5.5-.2.7 0 1 .3.3.4.6.9 0l21.8-21.9"/><path d="m56 8c-6.1-6.1-16-6.1-22.1 0-4.6 4.6-5.7 11.4-3.4 17.1-2.1-5.4-.9-11.7 3.4-16 5.8-5.9 15.3-5.9 21.1-.1 5.8 5.9 5.8 15.4 0 21.2-4.3 4.3-10.6 5.4-15.9 3.4 5.7 2.3 12.4 1.2 17-3.4 6-6.1 6-16.1-.1-22.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f512.svg b/riot/emojione/svg/1f512.svg new file mode 100644 index 0000000..fac55a2 --- /dev/null +++ b/riot/emojione/svg/1f512.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,28.3v31.4C2,62.1,3.9,64,6.3,64h51.4c2.4,0,4.3-1.9,4.3-4.3V28.3H2z" fill="#ffce31"/><path d="M62,24c0-2.4-1.9-4.3-4.3-4.3H6.3C3.9,19.6,2,21.6,2,24v4.3h60V24z" fill="#ff8736"/><g fill="#3e4347"><ellipse cx="12.4" cy="23.5" rx="5.9" ry="2.5"/><ellipse cx="51.6" cy="23.5" rx="5.9" ry="2.5"/></g><path d="m32 0c-12.9 0-23.4 10.6-23.4 23.5 0 .8 1.6 1.4 3.8 1.4v-1.4c.8-11 9.3-19.7 19.6-19.7 10.4 0 18.9 8.7 19.6 19.7v1.4c2.2 0 3.8-.6 3.8-1.4 0-12.9-10.5-23.5-23.4-23.5" fill="#dfe9ef"/><path d="m51.6 23.5c-.7-10.9-9.2-19.6-19.6-19.6-10.4 0-18.9 8.7-19.6 19.7v1.4c2.2 0 4.2-.6 4.2-1.4-.1-7.2 5.9-15.6 15.4-15.6 9.5 0 15.5 8.4 15.5 15.5 0 .8 2 1.4 4.2 1.4l-.1-1.4" fill="#b0bdc6"/><path d="m36.6 56.4l-1.9-12.3c1.1-.8 1.9-2.2 1.9-3.7 0-2.5-2-4.6-4.6-4.6s-4.6 2.1-4.6 4.6c0 1.5.7 2.9 1.9 3.7l-1.9 12.3h9.2" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f513.svg b/riot/emojione/svg/1f513.svg new file mode 100644 index 0000000..4d650b6 --- /dev/null +++ b/riot/emojione/svg/1f513.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,28.3v31.4C2,62.1,3.9,64,6.3,64h51.4c2.4,0,4.3-1.9,4.3-4.3V28.3H2z" fill="#ffce31"/><path d="M62,24c0-2.4-1.9-4.3-4.3-4.3H6.3C3.9,19.6,2,21.6,2,24v4.3h60V24z" fill="#ff8736"/><g fill="#3e4347"><ellipse cx="12.4" cy="23.5" rx="5.9" ry="2.5"/><ellipse cx="51.6" cy="23.5" rx="5.9" ry="2.5"/><path d="m36.6 56.4l-1.9-12.3c1.1-.8 1.9-2.2 1.9-3.7 0-2.5-2-4.6-4.6-4.6s-4.6 2.1-4.6 4.6c0 1.5.7 2.9 1.9 3.7l-1.9 12.3h9.2"/></g><path d="m32 0c-5.6 0-10.7 2-14.8 5.3l2.9 2.9c3.3-2.7 7.4-4.3 11.9-4.3 10.4 0 18.9 8.7 19.6 19.7v1.4c2.2 0 3.8-.6 3.8-1.4 0-13-10.5-23.6-23.4-23.6" fill="#dfe9ef"/><path d="m51.6 23.5c-.7-10.9-9.2-19.6-19.6-19.6-4.4 0-8.6 1.6-11.9 4.3l2.9 2.8c2.4-1.8 5.5-3 9-3 9.5 0 15.5 8.4 15.5 15.5 0 .8 2 1.4 4.2 1.4l-.1-1.4" fill="#b0bdc6"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f514.svg b/riot/emojione/svg/1f514.svg new file mode 100644 index 0000000..e647065 --- /dev/null +++ b/riot/emojione/svg/1f514.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m43.7 23.7c-5.5-3.4-7.5-8.1-9.3-11.5-3.9-7-10.1-9.1-16.6-7.5-1.3-2.3-3.6-3.4-6-1.9-2.5 1.5-2.7 4.1-1.4 6.4-4.6 5-6 11.8-2.2 18.8 1.9 3.4 4.7 7.6 4.8 14.3.1 4.8-3.7 8 2 18.3l42.7-26c-5.6-10.3-10.1-8.5-14-10.9" fill="#b0bdc6"/><path d="m40.7 25.5c-4.9-3.8-7-8.4-8.9-11.8-3.9-7-9.4-9.6-14.7-8.7-1.3-2.3-3.3-3.6-5.3-2.4-2 1.2-2 3.7-.7 6-3.5 4.5-4.1 10.8-.3 17.9 1.9 3.4 4.6 7.6 5.3 14 .4 4.5-2.5 7.2 3.2 17.6l34.2-20.8c-5.7-10.4-9.3-9.1-12.8-11.8" fill="#d9e3e8"/><path d="m57.7 34.7c1.8 3.3-6.2 11.9-18 19-11.8 7.2-22.8 10.3-24.7 7-1.8-3.3 6.2-11.9 18-19 11.9-7.2 22.9-10.3 24.7-7" fill="#7d888e"/><path d="m56.6 35.7c1.7 3-6 10.9-17.1 17.7-11.1 6.7-21.4 9.8-23.1 6.7-1.7-3 6-10.9 17.1-17.7 11.1-6.7 21.5-9.7 23.1-6.7" fill="#5a666b"/><path d="m17.7 55.7c4.4-.5 11.5-3.3 18.9-7.8s13.3-9.6 15.9-13.3c-4.4.4-11.5 3.3-19 7.8-7.4 4.5-13.3 9.6-15.8 13.3" fill="#383f42"/><g fill="#b0bdc6"><path d="m23.8 49.3c-.7.6-1.3 1.1-1.9 1.7 1.6 3.5 5.2 5.6 9 4.9-3 .6-6-2.3-7.1-6.6"/><path d="m35.6 41.2c-.5.3-1 .6-1.5.9 0 0 0 .1.1.1.7 1.3 1.2 2.7 1.5 4.1.3 1.5.3 3-.1 4.4-.3 1.4-1.1 2.8-2.1 3.7-.7.8-1.5 1.3-2.5 1.5 4.5-.9 7.6-5.4 6.7-10.2-.3-1.8-1.1-3.3-2.1-4.5"/></g><path d="m35.6 46.3c-.3-1.5-.8-2.9-1.5-4.1 0 0 0-.1-.1-.1 0 0-.1 0-.1.1-.1.1-.2.1-.4.2 0 0-.1.1-.1.1-3.6 2.2-6.9 4.6-9.6 6.8 1.1 4.3 4.1 7.1 7.1 6.6 1-.2 1.8-.7 2.5-1.5 1-.9 1.8-2.3 2.1-3.7.4-1.4.4-2.9.1-4.4" fill="#d9e3e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f515.svg b/riot/emojione/svg/1f515.svg new file mode 100644 index 0000000..a37acaf --- /dev/null +++ b/riot/emojione/svg/1f515.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><g fill="#fff"><path d="m42 32c-1.8-3.1-1.5-5.9-1.5-8 0-4.4-2.5-7.1-6.1-8.2 0-1.4-.8-2.6-2.4-2.6-1.6 0-2.4 1.1-2.4 2.6-3.6 1.1-6.1 3.8-6.1 8.2 0 2.1.3 4.9-1.5 8-1.2 2.2-3.9 2.7-3.9 9.1h27.9c-.1-6.5-2.7-6.9-4-9.1"/><path d="m32.8 42.9c0 2.4-2 4.4-4.4 4.4-2.4 0-4.4-2-4.4-4.4h8.8"/></g><path transform="matrix(.7071-.7071.7071.7071-13.2556 32.0003)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f516.svg b/riot/emojione/svg/1f516.svg new file mode 100644 index 0000000..5550796 --- /dev/null +++ b/riot/emojione/svg/1f516.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m44.5 21.5c-.1-.1-.2-.2-.2-.3-.4-.6-.2-1.5.5-1.9 6.8-3.9 8.2-7.2 9.6-10.1 1.1-2.5 2.2-4.8 6.2-6.5.7-.3 1.5 0 1.8.7.3.7 0 1.5-.7 1.8-3 1.2-3.7 2.8-4.7 5.1-1.4 3.1-3.2 7-10.7 11.3-.7.4-1.4.3-1.8-.1" fill="#d19500"/><path d="m43.7 20.5c0 0-.1-.1-.1-.1-.5-.6-.3-1.5.3-1.9 6.3-4.8 7.3-8.2 8.2-11.1.8-2.6 1.5-5 5.3-7.2.6-.4 1.4-.2 1.8.5.4.7.1 1.5-.5 1.9-2.9 1.6-3.3 3.2-4 5.6-1 3.2-2.2 7.2-9.2 12.5-.5.4-1.3.3-1.8-.2" fill="#ffbf1f"/><path d="M21.4,64l0-19.7l-19.7,0L35.9,10c1.8-1.8,4.8-1.8,6.6,0l13.2,13.2c1.8,1.8,1.8,4.8,0,6.6L21.4,64z" fill="#ed4c5c"/><circle cx="42.7" cy="23" r="4.9" fill="#fff"/><g fill="#f2b200"><path d="m49.5 12.9c-1.4-.6-2.3-1-3.6-.6-1.9.6-3.5 2.4-4.6 5.3-.2.5-.1 1.1.3 1.5.1.1.3.2.4.3.7.3 1.5-.1 1.8-.7 1.1-2.7 2.2-3.5 3-3.8.4-.1.4.2.9.2 1.1-1.1 1.8-2.2 1.8-2.2"/><path d="m53.3 19.8c.4-1.1.1-2.1-.3-3.3 0 0-.8.8-2.1 1.9 0 .2 0 .4-.1.5-.3.8-1.1 1.9-3.8 3-.7.3-1 1.1-.7 1.8.1.2.2.3.3.4.4.4 1 .5 1.5.3 2.8-1.2 4.6-2.8 5.2-4.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f517.svg b/riot/emojione/svg/1f517.svg new file mode 100644 index 0000000..777545a --- /dev/null +++ b/riot/emojione/svg/1f517.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#94989b"><path d="m36.1 41.5c1.2 1.2 1.3 3 .2 4.1l-17.6 17.7c-1.1 1.1-2.9.9-4.1-.2l-13.6-13.7c-1.2-1.2-1.3-3-.2-4.1l17.7-17.7c1.1-1.1 2.9-.9 4.1.2 1.2 1.2 1.3 3 .2 4.1l-13.9 13.9c-1.1 1.1-.9 2.9.2 4.1l5 5c1.2 1.2 3 1.3 4.1.2l13.8-13.8c1.1-1.1 3-1 4.1.2"/><path d="m63 14.6c1.2 1.2 1.3 3 .2 4.1l-17.6 17.7c-1.1 1.1-2.9.9-4.1-.2-1.2-1.2-1.3-3-.2-4.1l13.8-13.8c1.1-1.1.9-2.9-.2-4.1l-5-5c-1.2-1.2-3-1.3-4.1-.2l-13.9 13.7c-1.1 1.1-2.9.9-4.1-.2-1.2-1.2-1.3-3-.2-4.1l17.7-17.7c1.1-1.1 2.9-.9 4.1.2l13.6 13.7"/><path d="m44.5 19.5c1.2 1.2 1.3 3 .2 4.1l-21.1 21.1c-1.1 1.1-2.9.9-4.1-.2-1.2-1.2-1.3-3-.2-4.1l21.1-21.1c1.1-1.1 2.9-1 4.1.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f518.svg b/riot/emojione/svg/1f518.svg new file mode 100644 index 0000000..a894198 --- /dev/null +++ b/riot/emojione/svg/1f518.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="31" r="30" fill="#94989b"/><circle cx="32" cy="32" r="15" fill="#626a6d"/><circle cx="32" cy="30.4" r="15" fill="#d9e3e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f519.svg b/riot/emojione/svg/1f519.svg new file mode 100644 index 0000000..b8fe574 --- /dev/null +++ b/riot/emojione/svg/1f519.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m3 18l16-16v10h42v12h-42v10z"/><path d="m14 46.3c0-3.5-2.7-6.3-6-6.3h-6v22h6c3.3 0 6-2.8 6-6.3 0-1.8-.7-3.5-1.9-4.7 1.2-1.2 1.9-2.8 1.9-4.7m-6 12.3h-2.9v-5.9h2.9c1.7 0 3 1.3 3 3s-1.3 2.9-3 2.9m0-9.3h-2.9v-5.9h2.9c1.7 0 3 1.3 3 3s-1.3 2.9-3 2.9"/><path d="m40 58.6c-1.7 0-3-1.3-3-3v-9.3c0-1.6 1.3-3 3-3s3 1.3 3 3h3c0-3.5-2.7-6.3-6-6.3s-6 2.8-6 6.3v9.3c0 3.5 2.7 6.3 6 6.3s6-2.8 6-6.3h-3c0 1.7-1.3 3-3 3"/><path d="m62 40h-3.2l-3.8 9.5h-2v-9.5h-3v22h3v-9.5h2l3.8 9.5h3.2l-4.4-11z"/><path d="m27 62h3l-4-22h-5l-3 22h3l.8-6.1h4.1l1.1 6.1m-4.7-9.4l1.3-9.4 1.7 9.4h-3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f51a.svg b/riot/emojione/svg/1f51a.svg new file mode 100644 index 0000000..1925646 --- /dev/null +++ b/riot/emojione/svg/1f51a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m3 18l16-16v10h42v12h-42v10z"/><path d="m25 43.4v-3.4h-12v22h12v-3.4h-9v-5.9h9v-3.4h-9v-5.9z"/><path d="m51 40h-6v22h6c3.3 0 6-2.8 6-6.3v-9.3c0-3.6-2.7-6.4-6-6.4m3 15.7c0 1.6-1.3 3-3 3h-3v-15.3h3c1.7 0 3 1.3 3 3v9.3"/><path d="m32 47.7l5.8 14.3h3.2v-22h-3v14.3l-5.8-14.3h-3.2v22h3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f51b.svg b/riot/emojione/svg/1f51b.svg new file mode 100644 index 0000000..f9bb3d8 --- /dev/null +++ b/riot/emojione/svg/1f51b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m18 24h28v10l16-16-16-16v10h-28v-10l-16 16 16 16z"/><path d="m20 40c-3.3 0-6 2.8-6 6.3v9.3c0 3.5 2.7 6.3 6 6.3s6-2.8 6-6.3v-9.3c0-3.5-2.7-6.3-6-6.3m3 15.7c0 1.6-1.3 3-3 3s-3-1.3-3-3v-9.3c0-1.6 1.3-3 3-3s3 1.3 3 3v9.3"/><path d="m39 54.3l-5.8-14.3h-3.2v22h3v-14.3l5.8 14.3h3.2v-22h-3z"/><path d="m46 58h4v4h-4z"/><path d="m46.7 54h2.6l.7-14h-4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f51c.svg b/riot/emojione/svg/1f51c.svg new file mode 100644 index 0000000..62c2ffb --- /dev/null +++ b/riot/emojione/svg/1f51c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m61 18l-16-16v10h-42v12h42v10z"/><path d="m8 62c-3.3 0-6-2.8-6-6.3h3c0 1.6 1.3 3 3 3s3-1.3 3-3-1.3-3-3-3c-3.3 0-6-2.8-6-6.3 0-3.6 2.7-6.4 6-6.4s6 2.8 6 6.3h-3c0-1.6-1.3-3-3-3s-3 1.3-3 3 1.3 3 3 3c3.3 0 6 2.8 6 6.3 0 3.6-2.7 6.4-6 6.4"/><path d="m24 62c-3.3 0-6-2.8-6-6.3v-9.3c0-3.5 2.7-6.3 6-6.3s6 2.8 6 6.3v9.3c0 3.5-2.7 6.3-6 6.3m0-18.6c-1.7 0-3 1.3-3 3v9.3c0 1.6 1.3 3 3 3s3-1.3 3-3v-9.3c0-1.7-1.3-3-3-3"/><path d="m40 62c-3.3 0-6-2.8-6-6.3v-9.3c0-3.5 2.7-6.3 6-6.3s6 2.8 6 6.3v9.3c0 3.5-2.7 6.3-6 6.3m0-18.6c-1.7 0-3 1.3-3 3v9.3c0 1.6 1.3 3 3 3s3-1.3 3-3v-9.3c0-1.7-1.3-3-3-3"/><path d="m53 47.7l5.8 14.3h3.2v-22h-3v14.3l-5.8-14.3h-3.2v22h3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f51d.svg b/riot/emojione/svg/1f51d.svg new file mode 100644 index 0000000..cc4db67 --- /dev/null +++ b/riot/emojione/svg/1f51d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m32 2l-16 16h10v15h12v-15h10z"/><path d="m32 62c-3.3 0-6-2.8-6-6.3v-9.3c0-3.5 2.7-6.3 6-6.3s6 2.8 6 6.3v9.3c0 3.5-2.7 6.3-6 6.3m0-18.6c-1.7 0-3 1.3-3 3v9.3c0 1.6 1.3 3 3 3s3-1.3 3-3v-9.3c0-1.7-1.3-3-3-3"/><path d="m22 40h-12v3h4.5v19h3v-19h4.5z"/><path d="m48 40h-6v22h3v-9.3h3c3.3 0 6-2.8 6-6.3 0-3.6-2.7-6.4-6-6.4m0 9.3h-3v-5.9h3c1.7 0 3 1.3 3 3s-1.3 2.9-3 2.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f51e.svg b/riot/emojione/svg/1f51e.svg new file mode 100644 index 0000000..19ac9d2 --- /dev/null +++ b/riot/emojione/svg/1f51e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><g fill="#fff"><path d="m16.1 27.1v-3.5c1.6-.1 2.7-.2 3.4-.3 1-.2 1.9-.7 2.5-1.4.4-.5.8-1.1 1-1.9.1-.5.2-.8.2-1h4.3v26h-5.2v-18h-6.2z"/><path d="m30.7 33.6c.7-1.2 1.6-2.1 2.9-2.7-1.3-.8-2.1-1.7-2.5-2.7s-.6-1.9-.6-2.7c0-1.9.7-3.5 2.1-4.8 1.4-1.3 3.4-2 6.1-2 2.6 0 4.6.7 6.1 2 1.4 1.3 2.1 3 2.1 4.8 0 .9-.2 1.8-.6 2.7s-1 1.8-2.3 2.5c1.3.7 2.3 1.7 2.9 2.9.6 1.2 1 2.5 1 4 0 2.2-.8 4.1-2.4 5.6-1.6 1.5-3.9 2.3-6.8 2.3-2.9 0-5.1-.8-6.6-2.3-1.5-1.5-2.2-3.4-2.2-5.6-.1-1.5.2-2.9.8-4m5.4 6.6c.7.7 1.6 1.1 2.8 1.1s2.1-.4 2.8-1.1 1-1.7 1-3c0-1.3-.3-2.3-1-3s-1.6-1-2.7-1-2.1.3-2.7 1c-.7.7-1 1.7-1 3-.2 1.3.1 2.3.8 3m.3-11.9c.6.6 1.4.9 2.4.9 1 0 1.9-.3 2.4-.9.6-.6.9-1.4.9-2.3 0-1-.3-1.8-.9-2.4-.6-.6-1.4-.9-2.4-.9-1 0-1.8.3-2.4.9-.6.6-.9 1.4-.9 2.4 0 .9.3 1.7.9 2.3"/></g><path transform="matrix(.7071-.7071.7071.7071-13.2553 31.9997)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f51f.svg b/riot/emojione/svg/1f51f.svg new file mode 100644 index 0000000..f717fa7 --- /dev/null +++ b/riot/emojione/svg/1f51f.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#d0d0d0"/><path d="M57,45.7c0,4.6-3.7,8.3-8.3,8.3H15.3C10.7,54,7,50.3,7,45.7V12.3C7,7.7,10.7,4,15.3,4h33.3 + c4.6,0,8.3,3.7,8.3,8.3V45.7z" fill="#fff"/><g fill="#9aa0a5"><path d="m26 45h-6.1v-23c-2.2 2.1-4.9 3.6-7.9 4.6v-5.5c1.6-.5 3.3-1.5 5.2-3 1.9-1.5 3.2-3.2 3.9-5.1h5v32z"/><path d="m41 13c3.3 0 5.8 1.1 7.7 3.2 2.2 2.6 3.3 6.9 3.3 12.8 0 5.9-1.1 10.2-3.3 12.8-1.9 2.1-4.4 3.2-7.7 3.2-3.3 0-6-1.2-8-3.5-2-2.3-3-6.5-3-12.5 0-5.9 1.1-10.1 3.3-12.7 1.9-2.2 4.4-3.3 7.7-3.3m0 5c-.8 0-1.5.2-2.1.7-.6.5-1.1 1.3-1.4 2.5-.4 1.6-.7 4.2-.7 7.8 0 3.7.2 6.2.6 7.6s.9 2.3 1.5 2.7c.6.5 1.3.7 2.1.7s1.5-.2 2.1-.7c.6-.5 1.1-1.3 1.4-2.5.4-1.5.7-4.1.7-7.8 0-3.7-.2-6.2-.6-7.6-.4-1.4-.9-2.3-1.5-2.8-.6-.4-1.3-.6-2.1-.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f520.svg b/riot/emojione/svg/1f520.svg new file mode 100644 index 0000000..04d626d --- /dev/null +++ b/riot/emojione/svg/1f520.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m19.4 25.4l-1.3 4.6h-4.1l5.4-18h5.2l5.4 18h-4.3l-1.4-4.6c.1 0-4.9 0-4.9 0m4.4-3.1l-1.1-3.8c-.3-1.1-.6-2.4-.9-3.5h-.1c-.3 1.1-.5 2.4-.8 3.5l-1 3.8h3.9"/><path d="m36 12.4c1-.2 2.9-.4 4.7-.4 2.2 0 3.6.2 4.8 1 1.1.7 1.9 1.9 1.9 3.5 0 1.6-.8 3-2.7 3.8v.1c1.8.6 3.2 2.1 3.2 4.4 0 1.6-.7 2.9-1.7 3.8-1.2 1-3.1 1.6-6.4 1.6-1.8 0-3.1-.1-4-.3v-17.5zm3.6 6.7h1.2c1.9 0 3-.9 3-2.2 0-1.3-.9-2-2.6-2-.8 0-1.2.1-1.6.1v4.1m0 7.9c.4 0 .8 0 1.4 0 1.7 0 3.1-.7 3.1-2.5 0-1.8-1.5-2.5-3.3-2.5h-1.2v5"/><path d="m27.3 51.2c-.7.4-2.2.8-4.2.8-5.7 0-8.6-3.8-8.6-8.7 0-6 4-9.3 9-9.3 1.9 0 3.4.4 4 .8l-.8 3.1c-.8-.3-1.8-.6-3.1-.6-2.9 0-5.2 1.9-5.2 5.8 0 3.5 1.9 5.7 5.3 5.7 1.1 0 2.4-.3 3.1-.6l.5 3"/><path d="m36 34.4c1.3-.2 3-.4 4.8-.4 3 0 5 .6 6.5 1.9 1.6 1.4 2.7 3.5 2.7 6.7 0 3.4-1.1 5.7-2.6 7.2-1.7 1.5-4.2 2.3-7.3 2.3-1.9 0-3.2-.1-4.1-.3v-17.4m3.6 14.4c.3.1.8.1 1.2.1 3.2 0 5.4-2 5.4-6.2 0-3.7-1.9-5.6-5-5.6-.8 0-1.3.1-1.6.2v11.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f521.svg b/riot/emojione/svg/1f521.svg new file mode 100644 index 0000000..a127d19 --- /dev/null +++ b/riot/emojione/svg/1f521.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m23.9 27.7l-.2-1.2h-.1c-.7.9-1.8 1.4-3.1 1.4-2.2 0-3.5-1.7-3.5-3.5 0-3 2.6-4.4 6.4-4.4v-.2c0-.6-.3-1.5-2-1.5-1.1 0-2.3.4-3 .9l-.6-2.2c.8-.4 2.3-1 4.2-1 3.6 0 4.8 2.3 4.8 5v4c0 1.1 0 2.2.2 2.8 0-.1-3.1-.1-3.1-.1m-.4-5.4c-1.8 0-3.2.4-3.2 1.8 0 .9.6 1.4 1.3 1.4.9 0 1.5-.6 1.8-1.3 0-.2.1-.4.1-.6v-1.3"/><path d="m37 28.8c0-.6.1-1.8.1-2.8v-11h3v5.4c.6-.8 1.6-1.3 2.9-1.3 2.3 0 4 1.9 4 4.8 0 3.4-2.2 5.1-4.4 5.1-1.1 0-2.2-.4-2.9-1.5l-.1 1.3h-2.6m3.1-4.1c0 .2 0 .4.1.5.2.8.9 1.4 1.8 1.4 1.3 0 2.1-1 2.1-2.7 0-1.5-.7-2.6-2.1-2.6-.8 0-1.6.6-1.8 1.5 0 .2-.1.4-.1.5v1.4"/><path d="m46.9 35v11c0 1.1 0 2.2.1 2.8h-2.7l-.1-1.4c-.6 1.1-1.8 1.6-3 1.6-2.3 0-4.1-1.9-4.1-4.9 0-3.2 2-5 4.3-5 1.2 0 2.1.4 2.5 1.1v-5.2h3m-3 8.3c0-.2 0-.4 0-.5-.2-.8-.8-1.5-1.8-1.5-1.4 0-2.1 1.2-2.1 2.7 0 1.6.8 2.6 2.1 2.6.9 0 1.6-.6 1.7-1.4.1-.2.1-.4.1-.7v-1.2"/><path d="m26 47.5c-.5.3-1.6.5-2.7.5-3.3 0-5.3-2.3-5.3-5.9 0-3.4 2-6.1 5.7-6.1.8 0 1.7.2 2.3.4l-.5 2.7c-.4-.2-.9-.4-1.7-.4-1.6 0-2.7 1.3-2.6 3.2 0 2.1 1.2 3.2 2.7 3.2.7 0 1.3-.1 1.8-.3l.3 2.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f522.svg b/riot/emojione/svg/1f522.svg new file mode 100644 index 0000000..5710ed9 --- /dev/null +++ b/riot/emojione/svg/1f522.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m22.1 17.9l-3.4 1.3-.7-2.5 4.6-1.7h3.4v14h-3.9v-11.1"/><path d="m35.5 29v-1.9l1.8-1.6c3.1-2.7 4.6-4.2 4.6-5.8 0-1.1-.7-2-2.3-2-1.2 0-2.3.6-3 1.1l-.9-2.3c1.1-.8 2.7-1.4 4.6-1.4 3.2 0 4.9 1.8 4.9 4.3 0 2.3-1.7 4.2-3.8 5.9l-1.3 1.1h5.3v2.6h-9.9"/><path d="m19.7 45.7c.6.3 1.9.8 3.3.8 1.7 0 2.6-.8 2.6-1.8 0-1.3-1.4-1.9-2.9-1.9h-1.4v-2.3h1.3c1.1 0 2.5-.4 2.5-1.6 0-.8-.7-1.4-2.1-1.4-1.2 0-2.4.5-3 .8l-.6-2.3c.9-.5 2.5-1 4.4-1 3 0 4.7 1.5 4.7 3.4 0 1.4-.9 2.6-2.6 3.1 1.7.3 3.1 1.5 3.1 3.3 0 2.4-2.2 4.1-5.8 4.1-1.8 0-3.4-.5-4.2-1l.7-2.2"/><path d="m40.8 49v-3.3h-6.8v-2.1l5.8-8.5h4.4v8.2h1.8v2.5h-1.8v3.2h-3.4m0-5.8v-3.1c0-.8 0-1.7.1-2.6h-.1c-.5.9-.9 1.7-1.4 2.6l-2 3.1h3.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f523.svg b/riot/emojione/svg/1f523.svg new file mode 100644 index 0000000..7de6af1 --- /dev/null +++ b/riot/emojione/svg/1f523.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m14 14h16v4h-16z"/><path d="m14 22v4h6v4h4v-4h6v-4z"/><path d="m49.5 19c-.3-.5-.7-.9-1.2-1.2-.1-.1-.2-.1-.3-.2l-.3-.2c-.2-.1-.3-.3-.5-.4-.6-.6-1-1.2-1.1-1.7-.2-.5-.2-.8-.2-1.1h-3.2l-2.1 10.8c-.6-.2-1.3-.3-2-.3-2.6 0-4.6 1.2-4.6 2.7s2.1 2.7 4.6 2.7c2.4 0 4.4-1.1 4.6-2.5l1.9-10c.3.2.5.4.8.6.2.1.5.3.7.4.1.1.2.1.4.2.1 0 .2.1.3.2.4.2.8.5 1 .8.3.3.5.6.5 1 .1.4 0 .8-.2 1.2-.3.8-.9 1.4-1.4 1.9-.5.5-1 .9-1.4 1.2-.4.3-.6.4-.6.4s.2-.1.6-.3c.4-.2 1-.6 1.6-1 .6-.5 1.3-1.1 1.9-1.9.3-.4.5-.9.5-1.5.2-.7 0-1.3-.3-1.8"/><path d="m27.7 46.5l1.3-1.1-2-2.2-1.4 1.3-2.7-2.8c1.7-.6 2.8-2 2.8-3.7 0-2.2-2.1-4-4.6-4s-4.6 1.8-4.6 4c0 .9.4 1.7.9 2.4-1.5 1-2.5 2.5-2.5 4.3 0 2.9 2.8 5.3 6.1 5.3 1.6 0 3.2-.6 4.3-1.5l1.5 1.5 2.1-2.1-1.2-1.4m-8.1-8.5c0-.7.7-1.3 1.5-1.3s1.5.6 1.5 1.3-.7 1.3-1.5 1.3-1.5-.6-1.5-1.3m1.5 9.3c-1.7 0-3.1-1.2-3.1-2.7 0-1 .6-1.8 1.5-2.3l3.9 4c-.5.7-1.4 1-2.3 1"/><path d="m50 34h-4l-12 16h4z"/><path d="m38 42c-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4s4 1.8 4 4c0 2.2-1.8 4-4 4m0-6c-1.1 0-2 .9-2 2 0 1.1.9 2 2 2s2-.9 2-2c0-1.1-.9-2-2-2"/><path d="m46 50c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4m0-6c-1.1 0-2 .9-2 2 0 1.1.9 2 2 2s2-.9 2-2c0-1.1-.9-2-2-2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f524.svg b/riot/emojione/svg/1f524.svg new file mode 100644 index 0000000..236a41c --- /dev/null +++ b/riot/emojione/svg/1f524.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m18.1 40.7l-.2-1.3h-.1c-.7 1.1-1.9 1.6-3.2 1.6-2.3 0-3.6-1.9-3.6-4.1 0-3.4 2.6-5.1 6.5-5.1v-.2c0-.7-.3-1.7-2-1.7-1.1 0-2.3.5-3.1 1l-.6-2.6c.8-.5 2.3-1.2 4.3-1.2 3.7 0 4.9 2.6 4.9 5.7v4.6c0 1.3 0 2.5.2 3.2h-3.1zm-.5-6.2c-1.8 0-3.2.5-3.2 2.1 0 1.1.6 1.6 1.4 1.6.9 0 1.6-.7 1.8-1.5 0-.2.1-.5.1-.7-.1-.1-.1-1.5-.1-1.5"/><path d="m28.5 40.5c0-.8.1-2.2.1-3.6v-13.9h3v6.9c.6-1 1.6-1.7 3-1.7 2.3 0 4.1 2.4 4 6.1 0 4.3-2.2 6.5-4.5 6.5-1.1 0-2.2-.5-2.9-1.9l-.1 1.7-2.6-.1m3.1-5.1c0 .2 0 .5.1.7.2 1 .9 1.8 1.8 1.8 1.3 0 2.1-1.2 2.1-3.4 0-1.9-.7-3.3-2.1-3.3-.8 0-1.6.8-1.8 1.8 0 .2-.1.4-.1.7 0-.1 0 1.7 0 1.7"/><path d="m53 40.4c-.6.3-1.6.6-2.8.6-3.2 0-5.3-2.6-5.3-6.8 0-3.9 2-7 5.8-7 .8 0 1.7.2 2.4.5l-.5 3.1c-.4-.2-.9-.4-1.7-.4-1.6 0-2.7 1.5-2.7 3.7 0 2.4 1.2 3.7 2.8 3.7.7 0 1.3-.2 1.8-.4l.2 3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f525.svg b/riot/emojione/svg/1f525.svg new file mode 100644 index 0000000..23dd30a --- /dev/null +++ b/riot/emojione/svg/1f525.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 26.2c0 0-3 2.8-8.1 6.1-1.4-8.1-5.3-18.1-12.9-30.3 0 0-2.5 13.1-10.8 25.4-3.6-5.6-5.2-10-5.2-10-26 26.1-4.4 44.6 9.2 44.6 17.4 0 32.7-8.4 27.8-35.8" fill="#ff9d33"/><path d="m46.7 49.4c1.5-3.3 2.6-7.6 2.8-13 0 0-2.1 1.8-5.7 4.1-1-5.4-3.7-12-9-20.2 0 0-1.7 8.7-7.5 17-2.5-3.7-3.6-6.7-3.6-6.7-4.3 6.8-6 12.2-6.1 16.5-2.4-.9-3.9-1.6-3.9-1.6 4.1 12.2 12.6 14.9 16.4 14.9 6.8 0 13.7-2 20.5-11.7 0-.1-1.5.3-3.9.7" fill="#ffce31"/><path d="m21.9 43.9c0 0 2.8 3.8 4.9 2.9 0 0 4-6.3 9.8-9.8 0 0-1.2 9.6.2 11.3 1.8 2.3 6.7-2.5 6.7-2.5 0 5.7-6.2 12.8-11.8 12.8-5.4 0-13.2-6.2-9.8-14.7" fill="#ffdf85"/><g fill="#ff9d33"><path d="m49.8 18.1c2.1-3 3.5-6.2 3.5-6.2 3.5 5.8 1.4 9.3-.1 10.4-2.1 1.6-5.8-.7-3.4-4.2"/><path d="m11.6 17.1c-2.1-3.5-2.3-7.9-2.3-7.9-5 7.5-3.1 11.7-1.4 12.9 2.2 1.7 6-.9 3.7-5"/><path d="m23.2 9.3c.3-2.4-.7-4.8-.7-4.8 4.7 3.1 4.7 5.7 4.1 6.8-.9 1.3-3.7.7-3.4-2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f526.svg b/riot/emojione/svg/1f526.svg new file mode 100644 index 0000000..1d9dcdf --- /dev/null +++ b/riot/emojione/svg/1f526.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.4 39.6c-7.6-7.6-16.7-10.7-20.6-7 5.2-5 12.5-6.6 19.1-4.7l25.8-25.9c3 .9 5.9 2.5 8.3 4.9 2.4 2.4 4 5.3 4.9 8.3l-25.8 26c1.9 6.5.3 13.9-4.7 19.1 3.6-4 .5-13.1-7-20.7" fill="#3e4347"/><path d="m24.4 39.6c-5.7-5.7-13.3-7.2-17.1-3.6 5.2-5.1 11.8-7.4 17.3-6.5l25.8-25.8c2.6.4 4.9 1.5 6.7 3.3s2.9 4.1 3.3 6.7l-26 25.8c.8 5.5-1.4 12.1-6.5 17.3 3.7-3.9 2.1-11.5-3.5-17.2" fill="#676e72"/><path d="m10.5 53.5c-7.6-7.6-10.7-16.9-7-20.7.1-.1.1-.1.2-.2 3.9-3.6 13.1-.5 20.6 7 7.6 7.6 10.7 16.7 7 20.6-.1.1-.1.1-.2.2-3.7 3.8-12.9.7-20.6-6.9" fill="#fef500"/><path d="m17.1 46.9c-3.7-3.7-5.2-8.1-3.3-10 0 0 .1 0 .1-.1 1.9-1.7 6.3-.3 9.9 3.4 3.6 3.6 5.1 8 3.4 9.9 0 0-.1.1-.1.1-1.9 1.8-6.3.3-10-3.3" fill="#fff7ab"/><path d="m17.9 46.1c-1.7-1.7-2.4-3.8-1.6-4.7.9-.8 2.9-.1 4.6 1.6 1.7 1.7 2.4 3.8 1.6 4.6-.8.9-2.9.2-4.6-1.5" fill="#fff"/><path transform="matrix(.7072-.707.707.7072-1.803 27.9134)" fill="#3e4347" d="m28.5 14.9h8.5v2.5h-8.5z"/><path transform="matrix(.7071-.7072.7072.7071-1.368 28.0995)" fill="#676e72" d="m30.8 14.4h4.8v2.5h-4.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f527.svg b/riot/emojione/svg/1f527.svg new file mode 100644 index 0000000..5ca5cf3 --- /dev/null +++ b/riot/emojione/svg/1f527.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47.4 47.4l7.5-2 8.8 8.8c1-4.2-.1-8.9-3.4-12.2-3.3-3.3-7.9-4.4-12.2-3.4l-22.7-22.6c1-4.2-.1-8.9-3.4-12.2-3.3-3.3-7.9-4.4-12.2-3.4l8.8 8.8-2 7.5-7.5 2-8.7-8.9c-1 4.2.1 8.9 3.4 12.2 3.3 3.3 7.9 4.4 12.2 3.4l22.6 22.6c-1 4.2.1 8.9 3.4 12.2 3.3 3.3 7.9 4.4 12.2 3.4l-8.8-8.8 2-7.4" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f528.svg b/riot/emojione/svg/1f528.svg new file mode 100644 index 0000000..0285e2d --- /dev/null +++ b/riot/emojione/svg/1f528.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3e4347" d="m28.8 21.9l-5.6 5.8-5.5-5.7 5.5-5.8z"/><g fill="#94989b"><path d="m16.7 5.1l-9.8 10.1c-.4.4-.4 1 0 1.3l3.7 3.8 3.7 3.8c.4.4.9.4 1.3 0l9.8-10.1c.4-.4.4-1 0-1.3l-7.4-7.6c-.3-.4-.9-.4-1.3 0"/><path d="m.3 22c-.4.4-.4 1 0 1.3l7.3 7.7c.4.4 1 .4 1.4 0 0 0 2-2.1 2.1-2.2l-8.6-8.9c-.2 0-2.2 2.1-2.2 2.1"/></g><g fill="#3e4347"><path d="m10.5 20.4l-3.7-3.8c0 0 1.2 2.1-2 2.5-1.3.2-2.1.4-2.5.8l8.6 8.9c.4-.5.6-1.3.8-2.6.4-3.3 2.4-2 2.4-2l-3.6-3.8"/><path d="m39.6 4.3c-10.1-10.3-21.2 1.2-21.2 1.2l6.5 6.7c0 0 6.3-8.5 14.2-6.1.9.3 1.7.7 2 .5.4-.3-.8-1.6-1.5-2.3"/></g><path d="m26 24.8l-3.6 3.7c0 0 1.9 3 5.1 6.3 3.5 3.6 8.2 5.7 12.9 10.5 7 7.2 12.8 15 14.9 17.9.8 1.1.9 1 1.9 0l3-3.1-34.2-35.3" fill="#f2b200"/><path d="m26 24.8l3.6-3.7c0 0 2.9 1.9 6.1 5.2 3.5 3.6 5.5 8.5 10.2 13.3 7 7.2 14.5 13.2 17.4 15.4 1.1.8 1 1 0 2l-3 3.1-34.3-35.3" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f529.svg b/riot/emojione/svg/1f529.svg new file mode 100644 index 0000000..b434447 --- /dev/null +++ b/riot/emojione/svg/1f529.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b6c0c6"><path d="m58.7 64h5.3v-3.4z"/><path d="m63.5 54.2l-45.1-45.1-9.3 9.3 44.4 44.4-1.4-1.3z"/></g><g fill="#7a8891"><path d="m64 54.6l-.5-.4.5.5z"/><path d="m53.5 62.8l1.2 1.2z"/><path d="m58.7 64l5.3-3.4v-5.9l-.5-.5-11.4 7.3 1.4 1.3 1.2 1.2z"/><path d="m55.3 46l-11.4 7.3 4.1 4.1 11.4-7.3z"/><path d="m47.1 37.7l-11.4 7.3 4.1 4.1 11.4-7.2z"/><path d="m30.6 21.3l-11.4 7.3 4.1 4.1 11.4-7.3z"/><path d="m38.8 29.5l-11.4 7.3 4.1 4.1 11.5-7.3z"/><path d="m22.4 13l-11.4 7.3 4.1 4.1 11.4-7.2z"/></g><path fill="#4f585b" d="m7.1 17.9l-7.1 7 11 11 7-7.1z"/><path fill="#8b979e" d="M17.9 7 7.1 17.9 18 28.8 28.9 18z"/><path fill="#cedae0" d="m24.9 0l-7 7 11 11 7-7z"/><path fill="#4f585b" d="m28.3 39.1l-7 7.1 11 10.9 7-7z"/><path fill="#8b979e" d="m39.2 28.3l-10.9 10.8 11 11 10.8-10.8z"/><path fill="#cedae0" d="m46.2 21.3l-7 7 10.9 11 7.1-7.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f52a.svg b/riot/emojione/svg/1f52a.svg new file mode 100644 index 0000000..cbf2319 --- /dev/null +++ b/riot/emojione/svg/1f52a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m30.6 24.3c0 0 24 21.9 31.4 37.7 0 0-20.1.6-43.3-22.5 0 0 7.6-8.1 6.1-9.6l5.8-5.6" fill="#d6dfe3"/><path d="M20.9,37c-1.2,1.4-2.2,2.5-2.2,2.5C41.9,62.6,62,62,62,62c-0.5-1-1-2-1.6-3.1C53.7,58,38.2,54.1,20.9,37z" fill="#aebabf"/><path d="m30.8 23.5l-21.6-21.5-7 6.9c0 0-.5.5-.1.9.9.9 1.5.5 2.4.7 1.1.3 2.4 1.5 2.4 1.5l18 17.9 5.9-5.9c.2-.1.2-.3 0-.5" fill="#333"/><path d="m9.1 8.1c-.3.3-.9.3-1.2 0-.3-.3-.3-.9 0-1.2.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.2" fill="#d0d0d0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f52b.svg b/riot/emojione/svg/1f52b.svg new file mode 100644 index 0000000..7ce6a43 --- /dev/null +++ b/riot/emojione/svg/1f52b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m53.4 24.7c0 0 1-5.1 3.9-1.2h1c0 0-.3-3-2.1-3.2-3.7-.4-2.8 2.9-5.8.7-3-2.2 3 3.7 3 3.7" fill="#dff4f4"/><path d="m54.4 24.7c0 0 1-5.1 3.9-1.2l.6-1.1c0 0-1.3-2.5-3.1-2.1-1.8.3-1.3 2.8-4.4.7-3-2.2 3 3.7 3 3.7" fill="#87989b"/><path fill="#abc2c6" d="m54.4 28.6l.9-3.9-4.6-5.2-1.1 5.9z"/><path d="m6.3 7l.4-1.9.9-.7c1.2.4 4.8 1.5 5.9 2.6h-7.2" fill="#dff4f4"/><g fill="#5a6a6d"><path d="m7.7 7v-2.6c0 0 4.4-.3 7.3 2.6h-7.3"/><path d="m47.3 13.3v-1.6c0 0 1.6-.3 1.6 2.1 0 2.4-1.6-.5-1.6-.5"/></g><g fill="#dff4f4"><path d="m46 12.1l1.3-.4v1.6l-1.4-.1z"/><path d="m9.8 24.2l4.1 4 10.7.1 3.1 2.6v2.9h6.3c0 0 5.2-4.5 9.3 1.9 2.1 3.3 9.3 0 8.6-5h2.8v-1.5c0 0-6.2-1-6.6-3.7-.4-2.7.3-10.3.3-10.3s-10-8.8-41.7-8.6l-3.1 1.1v1.9l6.2 14.6"/></g><path d="m54.8 30.3h-10.4v12.4c0 0 5 .3 6 7.4.8 5.4-2.8 5.8-2.8 5.8v3.6h11c0 0 3.5-1 3.5-5.8 0-3.3 0-8.9-6.1-15.6-1.9-1.9-1.2-7.8-1.2-7.8" fill="#87989b"/><path d="m56.7 29.3h-10.4v13.5c0 0 5 .3 6 7.4.8 5.4-2.8 5.8-2.8 5.8v3.6h11c0 0 3.5-1 3.5-5.8 0-3.3 0-8.9-6.1-15.6-1.9-2-1.2-8.9-1.2-8.9" fill="#293030"/><path d="m36.1 32.1l-.6 1.9c6.2 3.4 1.1 8.2 1.1 8.2 1.9 0 1.9 0 1.9 0s2.6-1.7 7-7.4c1.3-1.7-4.4-5.7-9.4-2.7" fill="#dff4f4"/><path d="m37.9 32.1l-.5 1.9c6.2 3.4 1.1 8.2 1.1 8.2 5 0 3.3-5.8 8.9-7.4 2.3-.6-4.4-5.7-9.5-2.7" fill="#475152"/><path d="m29.7 33.7c0 0-.1 3 .8 6.5 1 3.4 3.7 4.6 7.2 4.6 4.2 0 7.4-4.1 8.1-6.3h-1.4c0 0-2.2 4.9-6.6 4.9-4.2 0-7.3-2.7-4.6-9.7-.1 0-3.5 0-3.5 0" fill="#dff4f4"/><path d="m31.1 33.7c0 0-.2 3 .8 6.5 1 3.4 3.7 4.6 7.2 4.6 4.2 0 5.7-2.7 6.7-3.9v-2.4c0 0-2.2 4.9-6.6 4.9-4.2 0-7.3-2.7-4.6-9.7h-3.5" fill="#475152"/><path d="m12.9 24.2l4.1 4 10.7.1 3.1 2.6v2.9h6.3c0 0 5.2-4.5 9.3 1.9 2.1 3.3 9.3 0 8.6-5h2.8v-1.5c0 0-6.2-1-6.6-3.7-.4-2.7.3-10.3.3-10.3s-10.9-9.4-44.8-8.6v3l6.2 14.6" fill="#87989b"/><path d="m50.6 17c-5-2.3-11.5-3.9-18-5 2 .4 3.4 3.1 3.2 6.2-.2 3-3.5 11.5-3.5 11.5 6.6-.2 13.6 1.5 13.6 1.5 11.8-6.7 4.7-14.2 4.7-14.2" fill="#abc2c6"/><path d="m52 19.3c-5-1.2-8.7-2.1-15.2-2.7 0 0-.3 5.8-.5 7.4l11.8 2.5c2.1.6.8 2.5.8 2.5 6.3-4.8 3.1-9.7 3.1-9.7" fill="#5a6a6d"/><path fill="#dff4f4" d="m33 28.9l2.2-1.9 2-4.5.3-3.7-1.2-4.7-.4-1.8-3.3-.3-.4 17.7z"/><g fill="#293030"><path d="m35.7 24.5c-.4 1.2-1.5 1.9-2.4 1.7-.9-.2-1.2-1.4-.8-2.5.4-1.2 1.5-1.9 2.4-1.7s1.2 1.3.8 2.5"/><path d="m36.4 16.5c.1 1.2-.5 2.2-1.4 2.3-.8 0-1.6-.9-1.7-2.1-.1-1.2.5-2.2 1.4-2.3s1.6.9 1.7 2.1"/></g><g fill="#abc2c6"><path d="m32.6 12c0 0-.1 0-.1 0-.1 0-.2 0-.3 0 .1 0 .2 0 .3 0-14.7-2.5-29.6-2.3-29.6-2.3l.6 3c6.7.1 18.9.3 31.4 1.2-.6-1.1-1.4-1.8-2.3-1.9"/><path d="m5.4 22.3l.6 3.3c0 0 25.5-1.6 26.2-1.5 1-.3 2-1.2 2.6-2.5-5.2-.1-18.6-.4-29.4.7"/></g><g fill="#87989b"><path d="m35.2 14.6c-.1-.3-.2-.5-.3-.7-12.5-.9-24.7-1.2-31.4-1.3l.2 1.2c6.9.1 19.1.2 31.5.8"/><path d="m4.8 19.3l.6 3c10.8-1.1 24.2-.9 29.5-.7.4-.8.7-1.7.8-2.7-4.7-.1-19.4-.3-30.9.4"/></g><path d="m35.2 14.6c-12.4-.6-24.6-.7-31.5-.7l1.1 5.5c11.5-.7 26.1-.5 30.9-.4 0-.2.1-.5.1-.8 0-1.4-.2-2.6-.6-3.6" fill="#5a6a6d"/><path d="m8.2 17.2c.8 4.4-.3 8.2-2.4 8.5-2.2.3-4.6-3.1-5.4-7.5-.8-4.4.3-8.2 2.4-8.5 2.1-.3 4.5 3.1 5.4 7.5" fill="#dff4f4"/><path d="m7 17.3c.6 3.1-.2 5.8-1.7 6-1.5.2-3.2-2.2-3.8-5.3-.6-3.1.2-5.8 1.7-6 1.5-.1 3.2 2.2 3.8 5.3" fill="#293030"/><path d="m33 28.9c-.3-.6-.3-2.6 2.2-1.9l9.4.8-2 2-9.6-.9" fill="#5a6a6d"/><path d="m37.2 22.5c-1.3 0-1.8-3.4.3-3.7l9.7 1.8-.6 3.7-9.4-1.8" fill="#87989b"/><path d="m36.3 14.1c-1.4.7-.9-1.3-.5-1.8l9 2.4 1.5 1.9-10-2.5" fill="#5a6a6d"/><path d="m52.4 32.8c-.3 1.1-1.4 1.9-2.5 1.8-1.1-.1-1.7-1-1.4-2.1s1.4-1.9 2.5-1.8c1.1.1 1.7 1 1.4 2.1" fill="#dff4f4"/><path fill="#87989b" d="m52.9 34.1l-.4.3-4.6-3.2.4-.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f52c.svg b/riot/emojione/svg/1f52c.svg new file mode 100644 index 0000000..149eb37 --- /dev/null +++ b/riot/emojione/svg/1f52c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#94989b"><path d="m24.6 54.3c-1-1-2.6-2.6-4.8-4.8-6.1-6.1-2.2-10.4-2.2-10.4l-4.6-4.6c0 0-7.6 8.8 1.1 17.4l6.4 6.4 4.1-4"/><path d="m33.7 44h7.2c4.8-10.9-1.6-24.6-1.7-24.9l-5.8 2.9c0 .1 4.7 13.7.3 22"/></g><g fill="#333"><path d="m44.6 47c-1.5-4.7-5.9-8.1-11.1-8.1-5.2 0-9.6 3.4-11.1 8.1l-5.2 15h32.6l-5.2-15"/><path d="m19.2 27.1l24.6-20.9 6.3 7.3-24.6 20.9z"/></g><g fill="#94989b"><path d="m24.3 33.1l-4-4.7-1.9 2.5 3.2 3.7z"/><path d="m51.4 10.1l-4-4.7-2.5 2.1 4 4.7z"/></g><path fill="#333" d="M52.5 11.4 46.2 4.1 48.7 2 55 9.4z"/><g fill="#d0d0d0"><path d="m43.3 25.8c-1.2 3.4-4.9 5.1-8.3 3.9-3.4-1.2-5.2-4.9-4-8.2 1.2-3.3 4.9-5.1 8.3-3.9 3.4 1.2 5.2 4.9 4 8.2"/><ellipse cx="33.5" cy="50.4" rx="6.5" ry="6.4"/></g><g fill="#333"><path d="m36.2 26.7c1.7.6 3.5-.3 4.1-2 .6-1.7-.3-3.5-2-4.1-1.7-.6-3.5.3-4.1 2-.6 1.6.3 3.5 2 4.1"/><ellipse cx="33.5" cy="50.4" rx="3.2" ry="3.2"/><path transform="matrix(.7067-.7076.7076.7067-21.5895 21.6604)" d="m14.5 28.7h1.6v16.3h-1.6z"/></g><path transform="matrix(.7067-.7076.7076.7067-20.4508 22.1324)" fill="#29abe2" d="m15.7 27.6h1.6v16.3h-1.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f52d.svg b/riot/emojione/svg/1f52d.svg new file mode 100644 index 0000000..e4dc010 --- /dev/null +++ b/riot/emojione/svg/1f52d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#333"><path d="m16.8 62h1.8l.9-2.2h-1.9z"/><path d="m44.5 59.8l.9 2.2h1.8l-.8-2.2z"/></g><g fill="#cad5dd"><path d="m35.6 30.2l-7.2.1-10.8 29.5h1.9l11.4-27.9c.4.1.7.1 1.1.1.4 0 .8-.1 1.1-.1l11.4 27.9h1.9l-10.8-29.6"/><path d="m33.6 24.3h-3.1l.7 35.5h1.7z"/></g><g fill="#333"><path d="m31.2 59.8l.1 2.2h1.5l.1-2.2z"/><ellipse cx="32" cy="27.6" rx="5.1" ry="5.1"/></g><circle cx="32" cy="27.6" r="3.8" fill="#fff"/><g fill="#333"><path d="m26.1 5.5c-.4-.1-.7.1-.8.4l-1.2 5.1c-.1.4.1.7.5.8l10.1 2.2c.4.1.7-.2.8-.5l.9-3.5c.1-.4-.1-.8-.5-.9l-9.8-3.6"/><path d="m26 18.7c-.5-.2-.9.1-1 .5l-1.6 6.6c-.1.5.2.9.6 1l13 2.8c.5.1.9-.2 1.1-.7l1.1-4.5c.1-.5-.2-1-.6-1.1l-12.6-4.6"/></g><path fill="#dfe9ef" d="m43.1 16.3l-2.8 11.2 18.6 4.5 2.4-9.5z"/><path d="m57.5 16.9c-.5-.1-1 .2-1.1.7l-1.1 4.5c-.1.5-.6.8-1.1.7l-3.2-.6c-.5-.1-1.1.2-1.2.7l-.5 1.4c-.2.5.1 1 .6 1.1l6.6 1.5c.5.1 1-.2 1.1-.7l1.8-7.9c.1-.5-.2-1-.7-1.1l-1.2-.3" fill="#333"/><path fill="#dfe9ef" d="m11.1 2.9l-4.8 19 33.6 7.2 3.6-14.3z"/><g fill="#333"><path d="m43.5 14.8l-2.2-.8c1.2.4 1.4 4 .4 7.9-1 3.9-2.8 7-4 6.7l2.2.5c1.2.4 3-2.6 4-6.5 1-4 .8-7.4-.4-7.8"/><path d="m11.1 2.9l-3-.9c-1.6-.5-4 3.4-5.3 8.7-1.3 5.3-1 9.9.6 10.4l2.9.9c1.6.5 4-3.4 5.3-8.7 1.3-5.3 1.1-9.9-.5-10.4"/></g><path d="m8.7 12.4c1.1-4.4 1.1-8.4.1-9.8-1.6.6-3.5 4.1-4.6 8.6-1.1 4.4-1.1 8.4-.1 9.8 1.6-.6 3.5-4.1 4.6-8.6" fill="#29abe2"/><g fill="#333"><path d="m61.3 22.5l-1.7-.6c.8.2 1.1 2.7.4 5.3-.7 2.6-2 4.6-2.8 4.4l1.7.4c.8.2 2-1.7 2.7-4.3.6-2.6.5-5-.3-5.2"/><circle cx="46.8" cy="20.5" r=".9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f52e.svg b/riot/emojione/svg/1f52e.svg new file mode 100644 index 0000000..72eff08 --- /dev/null +++ b/riot/emojione/svg/1f52e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m53.3 55.3c0-3.5 1.7-9.5-5.1-12.8h-32.4c-6.8 3.2-5.1 9.3-5.1 12.8 0 2.6-4.7 1.7-4.7 4.7 0 2.3 3.2 2.2 4.4 1.7 3-1.1 4.9-3.8 5.5-4.6.5-.7.2-.9.5-1.7.3-.8 1.9.8 4-.1 3.1-1.3 1.1-3.9 3.4-3.9 1.4 0 4.4 1.2 8.2 1.2 3.8 0 6.8-1.2 8.2-1.2 2.3 0 .2 2.5 3.4 3.9 2.2.9 3.8-.7 4 .1.3.8-.1.9.5 1.7.6.9 2.5 3.5 5.5 4.6 1.3.5 4.4.6 4.4-1.7 0-3-4.7-2.1-4.7-4.7" fill="#94989b"/><g fill="#b0bdc6"><path d="m46.1 42.8c-3.9-1.3-24.3-1.3-28.2 0-7.7 2.6-5.9 10.6-5.9 10.6s2.6-4.4 6.1-3.4c0 0-4.6 2.2-2.3 5 .6-2.6 2.6.2 4.6-1.1 2.2-1.5.2-4.7 4.1-3.7 5.5 1.6 9.6 1.6 15.2 0 3.8-1.1 1.9 2.1 4.1 3.7 2 1.4 4-1.4 4.6 1.1 2.3-2.9-2.3-5-2.3-5 3.5-1 6.1 3.4 6.1 3.4s1.6-8-6.1-10.6"/><path d="m9.9 58.3c0-1.2-4.7.8-2.4 2.5 2.4 1.7 7.2-2.7 4.7-2.7-1.5 0-2.3 1.3-2.3.2"/><path d="m54.1 58.3c0-1.2 4.7.8 2.4 2.5-2.3 1.7-7.2-2.7-4.7-2.7 1.5 0 2.3 1.3 2.3.2"/></g><circle cx="32" cy="25.8" r="23.8" fill="#8c13d4"/><path d="m35.3 25.3c6.9 2.9 11.8 8.1 13.7 13.7 2.8-3.6 4.5-8.2 4.5-13.1 0-11.9-9.7-21.5-21.5-21.5-11.8 0-21.5 9.6-21.5 21.5 0 1.1.1 2.2.3 3.3 4.7-6.1 14.9-7.9 24.5-3.9" fill="#ae3ffd"/><ellipse cx="32" cy="39.9" rx="15.2" ry="9.7" fill="#6c368e"/><path d="m18.1 30.5c0-11.4 9.2-20.6 20.6-20.6 2.7 0 5.3.5 7.7 1.5-3.6-3.3-8.5-5.4-13.9-5.4-11.3 0-20.5 9.2-20.5 20.6 0 8.6 5.3 16 12.8 19.1-4.1-3.8-6.7-9.2-6.7-15.2" fill="#b371ec"/><g fill="#fff"><path d="m20.4 5.7c0 4.9-2.6 9.2-6.3 9.2 3.7 0 6.3 4.4 6.3 9.2 0-4.9 2.6-9.2 6.3-9.2-3.6 0-6.3-4.3-6.3-9.2"/><path d="m16.7 22.4c0 2.6-1.4 5-3.4 5 2 0 3.4 2.4 3.4 5 0-2.6 1.4-5 3.4-5-1.9 0-3.4-2.4-3.4-5"/><path d="m25.8 18.7c0 2.3-1.2 4.3-3 4.3 1.7 0 3 2 3 4.3 0-2.3 1.2-4.3 3-4.3-1.8.1-3-2-3-4.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f52f.svg b/riot/emojione/svg/1f52f.svg new file mode 100644 index 0000000..5783dec --- /dev/null +++ b/riot/emojione/svg/1f52f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c28fef"><path d="m50.3 32l9.7-16h-19.5l-8.5-14-8.5 14h-19.5l9.7 16-9.7 16h19.5l8.5 14 8.5-14h19.5l-9.7-16m.4-11l-3.5 5.9-3.6-5.9h7.1m-6.6 11l-6.6 11h-11.1l-6.6-11 6.6-11h11.1l6.6 11m-12.1-20.3l2.6 4.3h-5.1l2.5-4.3m-18.7 9.3h7.2l-3.6 5.9-3.6-5.9m0 22l3.5-5.9 3.6 5.9h-7.1m18.7 9.3l-2.6-4.3h5.1l-2.5 4.3m15.2-15.2l3.5 5.9h-7.2l3.7-5.9"/><ellipse cx="32" cy="32" rx="4.2" ry="4.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f530.svg b/riot/emojione/svg/1f530.svg new file mode 100644 index 0000000..b0677aa --- /dev/null +++ b/riot/emojione/svg/1f530.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#24bac5" d="m32 20.8v41.2l20-18.8v-41.2z"/><path fill="#ffce31" d="m12 2v41.2l20 18.8v-41.2z"/><path fill="none" stroke="#3e4347" stroke-linejoin="round" stroke-linecap="round" stroke-width="3" stroke-miterlimit="10" d="M32 20.8 12 2 12 43.2 32 62 52 43.2 52 2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f531.svg b/riot/emojione/svg/1f531.svg new file mode 100644 index 0000000..09cb93c --- /dev/null +++ b/riot/emojione/svg/1f531.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 24.6c-3-7.2-12.2-15.9-12.2-15.9s3 7.4.8 17.3l3.5-3c0 0 3.3 1.4 3.7 5 .5 4.4-2 10.6-2 10.6s-5.5-1.7-13.9-1.6l-3-19.6 7.2 4.7-9.1-20.1-9 19.9 7.2-4.7-3 19.6c-8.4-.1-13.9 1.6-13.9 1.6s-2.5-6.2-2-10.6c.4-3.5 3.7-5 3.7-5l3.5 3c-2.2-9.8.8-17.3.8-17.3s-9.3 8.9-12.3 16.1c-3.1 7.4-5 16.2-5 16.2l6.4 5.9c0 0 5.6-1.7 10-2 4.1-.3 8.9-.4 8.9-.4l-.6 8.7 5.3 9 5.3-9-.6-8.7c0 0 4.8.1 8.9.4 4.3.3 10 2 10 2l6.4-5.9c0 0-1.9-8.8-5-16.2" fill="#eda454"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f532.svg b/riot/emojione/svg/1f532.svg new file mode 100644 index 0000000..4234050 --- /dev/null +++ b/riot/emojione/svg/1f532.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#333" d="m2 2h60v60h-60z"/><path fill="#d0d0d0" d="m10 10h44v44h-44z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f533.svg b/riot/emojione/svg/1f533.svg new file mode 100644 index 0000000..478b8cd --- /dev/null +++ b/riot/emojione/svg/1f533.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m2 2h60v60h-60z"/><path fill="#333" d="m10 10h44v44h-44z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f534.svg b/riot/emojione/svg/1f534.svg new file mode 100644 index 0000000..a8ac9f7 --- /dev/null +++ b/riot/emojione/svg/1f534.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f535.svg b/riot/emojione/svg/1f535.svg new file mode 100644 index 0000000..3df8731 --- /dev/null +++ b/riot/emojione/svg/1f535.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#0071bc"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f536.svg b/riot/emojione/svg/1f536.svg new file mode 100644 index 0000000..351f0db --- /dev/null +++ b/riot/emojione/svg/1f536.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7071-.7071.7071.7071-13.255 31.9997)" fill="#f27a52" d="m10.8 10.8h42.4v42.4h-42.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f537.svg b/riot/emojione/svg/1f537.svg new file mode 100644 index 0000000..2d35144 --- /dev/null +++ b/riot/emojione/svg/1f537.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7071-.7071.7071.7071-13.255 31.9997)" fill="#0071b8" d="m10.8 10.8h42.4v42.4h-42.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f538.svg b/riot/emojione/svg/1f538.svg new file mode 100644 index 0000000..10ba044 --- /dev/null +++ b/riot/emojione/svg/1f538.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7071-.7071.7071.7071-13.2552 31.9992)" fill="#f27a52" d="m20.7 20.7h22.6v22.6h-22.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f539.svg b/riot/emojione/svg/1f539.svg new file mode 100644 index 0000000..344ca59 --- /dev/null +++ b/riot/emojione/svg/1f539.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7071-.7071.7071.7071-13.2552 31.9992)" fill="#0071b8" d="m20.7 20.7h22.6v22.6h-22.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f53a.svg b/riot/emojione/svg/1f53a.svg new file mode 100644 index 0000000..3210412 --- /dev/null +++ b/riot/emojione/svg/1f53a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="m32 2l-30 60h60z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f53b.svg b/riot/emojione/svg/1f53b.svg new file mode 100644 index 0000000..57d6ad4 --- /dev/null +++ b/riot/emojione/svg/1f53b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="M32 62 62 2 2 2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f53c.svg b/riot/emojione/svg/1f53c.svg new file mode 100644 index 0000000..6836e6e --- /dev/null +++ b/riot/emojione/svg/1f53c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="M52 38 32 18 12 38z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f53d.svg b/riot/emojione/svg/1f53d.svg new file mode 100644 index 0000000..a624cea --- /dev/null +++ b/riot/emojione/svg/1f53d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m12 26l20 20 20-20z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f549.svg b/riot/emojione/svg/1f549.svg new file mode 100644 index 0000000..f068cd7 --- /dev/null +++ b/riot/emojione/svg/1f549.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c28fef"><path d="m57.2 29.6c-1.9-3.1-5-6.4-9.9-6.3-6.9 0-9.5 5.5-11.8 10.1-.7 1.4-1.9 3.6-3.5 3.9-1.9.4-3-.7-4.2-1.2 2.6-2.1 5-4.6 5.4-8.5.7-6.3-3.3-10.3-8.5-10.7-5-.4-9.1 1-12.3 2.8-.9.5-2.6 1.5-2.7 2.4 0 .6 2.2 3.6 3.9 7.8 2.3-1.5 5.5-4.2 9.2-4.5 6.4-.6 6.9 5.6.6 6.8-2.6.5-4.9-.2-7.1-.6 1.2 2.8-.6 8.1 1.5 10 2 1.8 4.9-.4 7.2-.3 3.4.1 5.7 3.8 4.1 7.5-2.1 4.7-10.1 5.9-14.9 2.9-9.2-5.8-7.5-16.7-9.2-16.7-2.1-.2-3.1 27 16.7 27 7.9 0 14.6-6 13.9-14.4-.2-2.5-1.1-4.6-1.7-6.5 1.6.2 3.2 0 4.7-.2-2 3.5-.7 10 1.1 12.7 2.6 3.9 8.9 5.3 13.6 2.2 3.8-2.6 6.4-6.7 6.7-12.7.3-5.4-.7-10.1-2.8-13.5m-10.2 18.4c-4.6.5-7.4-1.9-7.8-7.2 3.8-1.6 5.1-8.2 9.7-10.9 4-2.4 6.3 2.4 6.5 5.8.5 6.5-3 11.7-8.4 12.3"/><path d="m39.2 13.5c0 0 5.5-3.8 5.5-5.8 0-2-5.5-5.7-5.5-5.7s-5.5 3.7-5.5 5.7c0 2 5.5 5.8 5.5 5.8"/><path d="m37.8 21.5c7.9 1.8 17.9-4.4 17.9-6.4 0-2.6-4.7-5.1-5.6-6.2-2.5 3.3-7.1 7.4-13 5.8-5.9-1.6-8.3-9.3-8.3-9.3-.8 2.5-.8 5.5.1 7.9 1.4 3.4 5.2 7.3 8.9 8.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f54a.svg b/riot/emojione/svg/1f54a.svg new file mode 100644 index 0000000..37fa3aa --- /dev/null +++ b/riot/emojione/svg/1f54a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#699635"><path d="m10 17.1c0 0-2.1 1.9-.9 4.4 1.2 2.5.6 4 .6 4s2.4-3.2 1.5-5.2c-.8-1.9-.9-2.1-1.2-3.2"/><path d="m4.5 29.8c0 0 2.5 1.2 3.6-1.4 1.1-2.5 2.5-2.8 2.5-2.8s-3.5-.6-4.4 1.3c-1 1.9-1.1 2.1-1.7 2.9"/><path d="m14.2 20c0 0-2.5 1-2 3.9.5 2.8-.4 4.1-.4 4.1s3.1-2.2 2.7-4.4c-.3-2.2-.3-2.5-.3-3.6"/><path d="m7.5 34c0 0 2.6.2 3.1-2.7.4-2.9 1.6-3.6 1.6-3.6s-3.5.6-3.9 2.8c-.3 2.2-.4 2.4-.8 3.5"/></g><path d="m5.6 21.2c2.8 2 5.3 5 7.2 8.2 2 3.3 3.3 7.2 3.1 11.4 0 0-.1 0-.1 0-.7-3.9-1.7-7.7-3.5-11-.8-1.5-1.7-2.9-2.7-4.2-.7-.9-1.4-1.8-2.2-2.6-.3-.4-1.8-1.5-1.8-1.8" fill="#83bf4f"/><path d="m2 19.3c0 0 .4 3.2 2.8 3.1 2.4-.1 3.2 1.2 3.2 1.2s-1.2-4-3.1-4c-1.8-.1-2 0-2.9-.3" fill="#699635"/><path fill="#ffce31" d="m16.2 30.5l-4.6 3.5 5.8-.7z"/><path d="m27.8 32.1c.3-8 11.6-14.5 17.6-24.8 2.6-4.4 4.8-2.1 3.2 5.9 10.3 1.9-8 24.5-11.7 26.1l-9.1-7.2" fill="#8d9ba3"/><g fill="#d0d0d0"><path d="m27.1 32.8c.3-8 15.1-12 21.6-20.6 13.6-18 16.9-8 9.2-2.1 10.3 1.9-2.4 8.6-2.4 8.6 11.4.6-.9 6.7-.9 6.7 9.5 1.8-3 5.2-3 5.2 6.3 2.3-2.6 4.8-2.6 4.8 4.5 3.5-4.4 3.9-8.1 5.5l-13.8-8.1"/><path d="m15.5 32.1c0-1.9 2.3-4.4 5.7-4.4 9.1 0 18.2 9.7 24.8 18.4 3.9 5.1 10.4 2.8 12.4 5.6 1.4 2-1.6 2.9-1.6 2.9s2.5 4.3-2.3 2.7c0 0 1.6 5.1-4.2 2.9 0 0-1.3 3.3-4.1 1.2-3.7-2.8-.7-11.2-11.5-13.7-18.2-4.4-14.7-11-15.9-12.6-.6-.9-3.3-2-3.3-3"/></g><circle cx="20" cy="30.8" r="1.1" fill="#464d51"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f54b.svg b/riot/emojione/svg/1f54b.svg new file mode 100644 index 0000000..687e4d7 --- /dev/null +++ b/riot/emojione/svg/1f54b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="M14.5 62 2 49.5 2 2 14.5 14.5z"/><path d="m14.5 14.5h47.5v47.5h-47.5z"/><path d="M62 14.5 14.5 14.5 2 2 49.5 2z"/></g><path d="M15.5,12H56l-7.5-7.5H8L15.5,12z" fill="#e8e8e8"/><path fill="#b2c1c0" d="m10.5 7l5 5h36.7l-5-5z"/><path fill="#dbb471" d="m14.5 29.5h47.5v5h-47.5z"/><path opacity=".33" fill="#b2c1c0" d="M14.5 62 2 49.5 2 2 14.5 14.5z"/><path fill="#fbbf67" d="M14.5 34.5 2 22 2 17 14.5 29.5z"/><g fill="#dbb471"><path d="m39.5 37h13.8v5h-13.8z"/><path d="m59.5 37h2.5v5h-2.5z"/><path d="m14.5 37h2.5v5h-2.5z"/><path d="m37.7 38.6c-.6-.6-.3-1.1-.3-1.1l-1-.5-1.1.5c0 0 .3.5-.3 1.1-.3.3-.5.6-.5 1.1 0 .4.3.7.5 1 .3.6.7 1.3 1.4 1.3.7 0 1.1-.6 1.4-1.3.2-.3.5-.6.5-1-.1-.5-.3-.8-.6-1.1"/><path d="m21.5 38.6c-.6-.6-.3-1.1-.3-1.1l-1.1-.5-1.1.5c0 0 .3.5-.3 1.1-.3.3-.5.6-.5 1.1 0 .4.3.7.5 1 .3.6.7 1.3 1.4 1.3.7 0 1.1-.6 1.4-1.3.2-.3.5-.6.5-1 0-.5-.2-.8-.5-1.1"/><path d="m57.7 38.6c-.6-.6-.3-1.1-.3-1.1l-1-.5-1.1.5c0 0 .3.5-.3 1.1-.3.3-.5.6-.5 1.1 0 .4.3.7.5 1 .3.6.7 1.3 1.4 1.3.7 0 1.1-.6 1.4-1.3.2-.3.5-.6.5-1-.1-.5-.3-.8-.6-1.1"/></g><path fill="#fbbf67" d="m13.2 35.8v5l1.3 1.2v-5z"/><g fill="#e8e8e8"><path d="m33.2 44.5h28.8v10h-28.8z"/><path d="m14.5 44.5h8.8v10h-8.8z"/></g><g fill="#fbbf67"><path d="m12.5 36.5c-.2-.8-.1-1.2-.1-1.2l-.4-.8-.4.1c0 0 .1.6-.1 1-.1.2-.2.5-.2.9 0 .4.1.8.2 1.2.1.7.2 1.5.5 1.7.2.2.4-.3.5-.8.1-.3.2-.5.2-.9-.1-.4-.2-.8-.2-1.2"/><path d="m7.5 31.5c-.2-.8-.1-1.2-.1-1.2l-.4-.8-.4.1c0 0 .1.6-.1 1-.1.2-.2.5-.2.9 0 .4.1.8.2 1.2.1.7.2 1.5.5 1.7.2.2.4-.3.5-.8.1-.3.2-.5.2-.9-.1-.4-.2-.8-.2-1.2"/><path d="m8.2 30.8v5l2.5 2.4v-5z"/><path d="m3.2 25.8v5l2.6 2.4v-5z"/></g><path fill="#e8e8e8" d="m2 42l12.5 12.5v-10l-12.5-12.5z"/><g fill="#3e4347"><path opacity=".2" d="m33.2 44.5h28.8v10h-28.8z"/><path opacity=".2" d="m14.5 44.5h8.8v10h-8.8z"/></g><path fill="#dbb471" d="m14.5 54.5h47.5v7.5h-47.5z"/><path opacity=".5" fill="#3e4347" d="m14.5 54.5h47.5v7.5h-47.5z"/><path fill="#dbb471" d="M14.5 62 2 49.5 2 42 14.5 54.5z"/><path opacity=".25" fill="#3e4347" d="M14.5 62 2 49.5 2 42 14.5 54.5z"/><path fill="#ffce31" d="m23.2 42h10v17.5h-10z"/><g fill="#f2b200"><path d="m23.2 58.2h10v1.2h-10z"/><path d="m32 37h1.2v22.5h-1.2z"/></g><path fill="#dbb471" d="m23.2 37v17.5h4.3l.7-5 .8 5h4.2v-17.5z"/><g fill="#fff"><path opacity=".33" d="m30.8 47h-5.1l-1.2-1.2 1.2-1.3h5.1l1.2 1.3z"/><circle cx="30.8" cy="50.8" r="1.3" opacity=".33"/><circle cx="25.8" cy="50.8" r="1.2" opacity=".33"/><path d="m25.8 41c-.2-.2-.1-.4-.1-.4l-.4-.2-.4.2c0 0 .1.2-.1.4-.1.1-.2.3-.2.4 0 .2.1.3.2.4.1.3.3.5.6.5.3 0 .4-.3.6-.5.1-.1.2-.3.2-.4-.2-.1-.3-.3-.4-.4" opacity=".33"/><path d="m27.8 41c-.2-.2-.1-.4-.1-.4l-.4-.2-.4.2c0 0 .1.2-.1.4-.1.1-.2.3-.2.4 0 .2.1.3.2.4.1.3.3.5.6.5.3 0 .4-.3.6-.5.1-.1.2-.3.2-.4-.2-.1-.3-.3-.4-.4" opacity=".33"/><path d="m29.8 41c-.2-.2-.1-.4-.1-.4l-.4-.2-.4.2c0 0 .1.2-.1.4-.1.1-.2.3-.2.4 0 .2.1.3.2.4.1.3.3.5.6.5.3 0 .4-.3.6-.5.1-.1.2-.3.2-.4-.2-.1-.3-.3-.4-.4" opacity=".33"/><path d="m31.8 41c-.2-.2-.1-.4-.1-.4l-.4-.2-.4.2c0 0 .1.2-.1.4-.1.1-.2.3-.2.4 0 .2.1.3.2.4.1.3.3.5.6.5.3 0 .4-.3.6-.5.1-.1.2-.3.2-.4-.2-.1-.3-.3-.4-.4" opacity=".33"/></g><g fill="#dbb471"><path d="m14.5 59.3l-1.7-1.7v-2.1l1.7 1.7v-.4l-3.6-3.6v-2.3l-.3-.3v2.3l-2.2-2.2v-2.3l-.3-.3v2.3l-3.4-3.4v-2.3l-.3-.3v2.3l-2.4-2.4v.4l.8.8v2.1l-.8-.8v.4l2.3 2.3v2.3l.3.3v-2.3l2.2 2.2v2.3l.3.3v-2.3l4.1 4.1v2.3l.3.3v-2.3l3 3v-.4m-8.9-8.9l-2.5-2.5v-2.1l2.5 2.5v2.1m3.7 3.7l-3.4-3.4v-2.1l3.4 3.4v2.1m3.2 3.1l-2.8-2.8v-2.1l2.8 2.8v2.1"/><path d="m62 57.2v-.3h-5.5v-2.3h-.3v2.3h-4.8v-2.3h-.3v2.3h-4.6v-2.3h-.3v2.3h-4.1v-2.3h-.3v2.3h-5.3v-2.3h-.3v2.3h-3v.3h4.8v2.2h-17.7v-2.2h3v-.3h-4.8v-2.3h-.3v2.3h-3.6v.3h5.4v2.2h-5.5v.3h1.1v2.3h.3v-2.3h5.9v2.3h.3v-2.3h4.9v2.3h.3v-2.3h3.7v2.3h.3v-2.3h2.9v2.3h.3v-2.3h5.5v2.3h.3v-2.3h5v2.3h.3v-2.3h5.4v2.3h.3v-2.3h4.8v2.3h.3v-2.3h5.6v-.3h-3.6v-2.2h3.6m-18.3 2.1h-5.3v-2.2h5.3v2.2m3.8 0h-3.5v-2.2h3.4l.1 2.2m5.6 0h-5.3v-2.2h5.3v2.2m5 0h-4.7v-2.2h4.7v2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f54c.svg b/riot/emojione/svg/1f54c.svg new file mode 100644 index 0000000..071b498 --- /dev/null +++ b/riot/emojione/svg/1f54c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b2c1c0"><path d="m49 19h8v45h-8z"/><path d="m57 31h-8l-2-2h12z"/></g><path d="m55 23.3c0-.6-.4-1.2-.9-1.5-.7-.4-1.1-.8-1.1-.8s-.4.4-1.1.8c-.5.3-.9.9-.9 1.5 0 .4.2.8.5 1.1v2.6h3v-2.6c.3-.3.5-.7.5-1.1" fill="#3e4347"/><path fill="#e8e8e8" d="m47 27h12v2h-12z"/><g fill="#d3976e"><path d="m53.2 1.6c-.4 0-.8-.4-.8-.8 0-.4.3-.7.7-.8 0 0-.1 0-.1 0-.6 0-1 .4-1 1 0 .6.4 1 1 1 .6 0 1-.4 1-1 0 0 0-.1 0-.1-.1.4-.4.7-.8.7"/><path d="m52.5 1.8h1v5.2h-1z"/></g><path fill="#e8e8e8" d="m53 5l-4 14h8z"/><circle cx="53" cy="3.2" r="1" fill="#d3976e"/><g fill="#b2c1c0"><path d="m7 19h8v45h-8z"/><path d="m15 31h-8l-2-2h12z"/></g><path d="m13 23.3c0-.6-.4-1.2-.9-1.5-.7-.4-1.1-.8-1.1-.8s-.4.4-1.1.8c-.5.3-.9.9-.9 1.5 0 .4.2.8.5 1.1v2.6h3v-2.6c.3-.3.5-.7.5-1.1" fill="#3e4347"/><path fill="#e8e8e8" d="m5 27h12v2h-12z"/><g fill="#d3976e"><path d="m11.2 1.6c-.4 0-.8-.4-.8-.8 0-.4.3-.7.7-.8 0 0-.1 0-.1 0-.6 0-1 .4-1 1 0 .6.4 1 1 1 .6 0 1-.4 1-1 0 0 0-.1 0-.1-.1.4-.4.7-.8.7"/><path d="m10.5 1.8h1v5.2h-1z"/></g><path fill="#e8e8e8" d="m11 5l-4 14h8z"/><g fill="#d3976e"><circle cx="11" cy="3.2" r="1"/><path d="m31.5 13h1v9h-1z"/></g><g fill="#fbbf67"><path d="m41.5 26.6c-6.4-3.1-9.5-5.6-9.5-5.6s-3.1 2.5-9.5 5.6c-4.3 2.1-7.5 6.2-7.5 10.4 0 6.6 7.6 12 17 12 9.4 0 17-5.4 17-12 0-4.2-3.2-8.3-7.5-10.4"/><circle cx="32" cy="18" r="2"/></g><g fill="#d3976e"><path d="m33 12c-2.2 0-4-1.8-4-4 0-2 1.5-3.7 3.5-3.9-.2-.1-.3-.1-.5-.1-2.8 0-5 2.2-5 5s2.2 5 5 5 5-2.2 5-5c0-.2 0-.3-.1-.5-.2 2-1.9 3.5-3.9 3.5"/><path d="m32 19c-.9 0-1.7-.6-1.9-1.5 0 .2-.1.3-.1.5 0 1.1.9 2 2 2 1.1 0 2-.9 2-2 0-.2 0-.3-.1-.5-.2.9-1 1.5-1.9 1.5"/><path d="m31.5 19.5h1v1h-1z"/><path d="m32 40c-7.7 0-14.1-1.6-16.3-6.5-.4 1.1-.7 2.3-.7 3.5 0 6.6 7.6 12 17 12 9.4 0 17-5.4 17-12 0-1.2-.3-2.4-.7-3.5-2.2 4.9-8.6 6.5-16.3 6.5"/></g><path d="m48 42h-32c-.6 0-1 .5-1 1v20c0 .5.4 1 1 1h32c.5 0 1-.5 1-1v-20c0-.5-.5-1-1-1" fill="#e8e8e8"/><path d="m24.5 54h-7v-3.9c-.3-.5-.5-1.2-.5-1.8 0-1.3.7-2.5 1.9-3.2.5-.3.8-.5.8-.5l1.4-1.3 1.4 1.3c0 0 .3.2.7.5 1.1.7 1.9 1.9 1.9 3.2 0 .6-.2 1.2-.5 1.8v3.9z" fill="#b2c1c0"/><path d="m36 56.6c0-1.2-.7-2.4-1.8-3-1.5-.9-2.2-1.6-2.2-1.6s-.7.7-2.2 1.6c-1 .6-1.8 1.8-1.8 3 0 .9.4 1.6 1 2.2v5.2h6v-5.2c.6-.6 1-1.4 1-2.2" fill="#3e4347"/><path d="m27 64h2v-5.2c-.6-.6-1-1.4-1-2.2 0-1.2.7-2.4 1.8-3 1.5-.9 2.2-1.6 2.2-1.6s.7.7 2.2 1.6c1 .6 1.8 1.8 1.8 3 0 .9-.4 1.6-1 2.2v5.2h2v-4.4c.7-.9 1-1.9 1-3 0-1.9-1.1-3.7-2.8-4.7-1.2-.7-1.9-1.3-1.9-1.3l-1.3-1.4-1.4 1.3c0 0-.6.6-1.9 1.3-1.7 1-2.7 2.8-2.7 4.7 0 1.1.4 2.1 1 3v4.5" fill="#b2c1c0"/><path d="m23 48.3c0-.6-.4-1.2-.9-1.5-.7-.4-1.1-.8-1.1-.8s-.4.4-1.1.8c-.5.3-.9.9-.9 1.5 0 .4.2.8.5 1.1v2.6h3v-2.6c.3-.3.5-.7.5-1.1" fill="#3e4347"/><path d="m46.5 54h-7v-3.9c-.3-.5-.5-1.2-.5-1.8 0-1.3.7-2.5 1.9-3.2.5-.3.8-.5.8-.5l1.4-1.3 1.4 1.3c0 0 .3.2.7.5 1.1.7 1.9 1.9 1.9 3.2 0 .6-.2 1.2-.5 1.8v3.9z" fill="#b2c1c0"/><path d="m45 48.3c0-.6-.4-1.2-.9-1.5-.7-.4-1.1-.8-1.1-.8s-.4.4-1.1.8c-.5.3-.9.9-.9 1.5 0 .4.2.8.5 1.1v2.6h3v-2.6c.3-.3.5-.7.5-1.1" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f54d.svg b/riot/emojione/svg/1f54d.svg new file mode 100644 index 0000000..e334855 --- /dev/null +++ b/riot/emojione/svg/1f54d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#e8e8e8" d="M 2,32.9 H13.2 V62 H2 z"/><path fill="#c94747" d="m3.9 36h7.5v18.5h-7.5z"/><path d="m7.6 43.1c-.5 0-.9.4-.9.9v10.5h1.9v-10.5c0-.5-.5-.9-1-.9" fill="#3e4347"/><path d="m7.6 40.2c-2.1 0-3.8 1.7-3.8 3.8h1.4c0-1.3 1-2.3 2.3-2.3s2.5 1 2.5 2.3h1.4c0-2.1-1.7-3.8-3.8-3.8" fill="#e8e8e8"/><path fill="#3e4347" d="m6.7 56.4h1.9v3.8h-1.9z"/><path fill="#c94747" d="m2 22.6h11.2v10.3h-11.2z"/><g fill="#e8e8e8"><path d="m13 24.7c-.3-.6-.9-.9-1.6-.9-.7 0-1.3.4-1.6.9h-.6c-.3-.6-.9-.9-1.6-.9-.7 0-1.3.4-1.6.9h-.5c-.3-.6-.9-.9-1.6-.9-.7 0-1.3.4-1.6.9h-.3v.9h11.2v-.9h-.2"/><path d="m9.5 21.7h-3.7-3.8v.9h3.8 3.7 3.7v-.9z"/></g><path d="m13.1 17c.1-.3.1-.6.1-.9 0-2.1-1.7-3.5-2.8-4.7-2.2-2.2-2.8-3.8-2.8-3.8s-.6 1.6-2.8 3.8c-1.1 1.1-2.8 2.6-2.8 4.7 0 .3 0 .6.1.9l.8 2.8-.9 1.9h11.2l-.9-1.9.8-2.8" fill="#c94747"/><g fill="#e8e8e8"><path d="m5.6 13.6c.4-1.4.9-2.6 1.6-3.6-1.1 1-2.1 2.3-2.6 4.1-.6 2.3 0 4.1 1.4 5.2-.8-1.3-1-3.3-.4-5.7"/><path d="m9.6 13.6c-.4-1.4-.9-2.6-1.5-3.6 1.1 1 2.1 2.3 2.6 4.1.6 2.3-.1 4.1-1.4 5.2.7-1.3.9-3.3.3-5.7"/></g><g fill="#b2c1c0"><path d="m8.2 2.9l.4-.4h-.7l-.3-.5-.3.5h-.6l.3.4-.3.5h.6l.3.5.3-.5h.7z"/><path d="m7.6 3.4c-.2 3.8-1 6-1 6 .6.1.8.1 1.1.1.3 0 .5 0 1.1-.1-.1 0-1-2.2-1.2-6"/></g><path fill="#e8e8e8" d="m50.8 32.9h11.2v29.1h-11.2z"/><path fill="#c94747" d="m52.6 36h7.5v18.5h-7.5z"/><path d="m56.4 43.1c-.5 0-.9.4-.9.9v10.5h1.9v-10.5c-.1-.5-.5-.9-1-.9" fill="#3e4347"/><path d="m56.4 40.2c-2.1 0-3.8 1.7-3.8 3.8h1.4c0-1.3 1-2.3 2.3-2.3s2.3 1.1 2.3 2.3h1.4c.1-2.1-1.6-3.8-3.6-3.8" fill="#e8e8e8"/><path fill="#3e4347" d="m55.4 56.4h1.9v3.8h-1.9z"/><path fill="#c94747" d="m50.8 22.6h11.2v10.3h-11.2z"/><g fill="#e8e8e8"><path d="m60.1 23.7c-.7 0-1.3.4-1.6.9h-.5c-.3-.6-.9-.9-1.6-.9-.7 0-1.3.4-1.6.9h-.5c-.3-.6-.9-.9-1.6-.9-.7 0-1.3.4-1.6.9h-.3v.9h11.2v-.9h-.3c-.3-.5-.9-.9-1.6-.9"/><path d="m58.2 21.7h-3.7-3.7v.9h3.7 3.7 3.8v-.9z"/></g><path d="m61.9 17c.1-.3.1-.6.1-.9 0-2.1-1.7-3.5-2.8-4.7-2.2-2.2-2.8-3.8-2.8-3.8s-.6 1.6-2.8 3.8c-1.2 1.2-2.8 2.6-2.8 4.7 0 .3 0 .6.1.9l.8 2.8-.9 1.9h11.2l-.9-1.9.8-2.8" fill="#c94747"/><g fill="#e8e8e8"><path d="m54.4 13.6c.4-1.4.9-2.6 1.5-3.6-1.1 1-2.1 2.3-2.6 4.1-.6 2.3.1 4.1 1.4 5.2-.7-1.3-.9-3.3-.3-5.7"/><path d="m58.4 13.6c-.4-1.4-.9-2.6-1.6-3.6 1.1 1 2.1 2.3 2.6 4.1.6 2.3-.1 4.1-1.4 5.2.8-1.3 1-3.3.4-5.7"/></g><g fill="#b2c1c0"><path d="m57 2.9l.3-.4h-.6l-.3-.5-.3.5h-.7l.4.4-.4.5h.7l.3.5.3-.5h.6z"/><path d="m56.3 3.4c-.2 3.8-1 6-1 6 .6.1.8.1 1.1.1s.5 0 1.1-.1c-.1 0-.9-2.2-1.2-6"/><path d="m32 11.4c-2.1 0-3.8 1.7-3.8 3.8v5.6h7.5v-5.6c.1-2.1-1.6-3.8-3.7-3.8"/></g><path d="m30.1 19.8h3.8v-4.7c0-1-.8-1.9-1.9-1.9-1 0-1.9.8-1.9 1.9v4.7" fill="#3e4347"/><path fill="#b2c1c0" d="m32 16.1l-18.8 9.3v36.6h37.6v-36.6z"/><path d="M15.1,62h33.8V26.6L32,18.2l-16.9,8.4V62z" fill="#c94747"/><g fill="#89664c"><path d="m22.6 42.8c-2.6 0-4.7 2.1-4.7 4.7v14.5h9.4v-14.5c0-2.6-2.1-4.7-4.7-4.7"/><path d="m32 42.8c-2.6 0-4.7 2.1-4.7 4.7v14.5h9.4v-14.5c0-2.6-2.1-4.7-4.7-4.7"/><path d="m41.4 42.8c-2.6 0-4.7 2.1-4.7 4.7v14.5h9.4v-14.5c0-2.6-2.1-4.7-4.7-4.7"/></g><path d="m41.4 41.4c-2 0-3.7 1-4.7 2.5-1-1.5-2.7-2.5-4.7-2.5s-3.7 1-4.7 2.5c-1-1.5-2.7-2.5-4.7-2.5-3.1 0-5.6 2.5-5.6 5.6v15h1.9v-15c0-2.1 1.7-3.8 3.8-3.8s3.8 1.7 3.8 3.8v15h1.9v-15c0-2.1 1.7-3.8 3.8-3.8s3.8 1.7 3.8 3.8v15h1.9v-15c0-2.1 1.7-3.8 3.8-3.8s3.8 1.7 3.8 3.8v15h1.5v-15c0-3.1-2.5-5.6-5.6-5.6" fill="#e8e8e8"/><g fill="#594640"><path d="m45.1 47h-7.5v1.9h2.8v13.1h1.9v-13.1h2.8z"/><path d="m18.9 47v1.9h2.8v13.1h1.9v-13.1h2.8v-1.9z"/><path d="m28.2 47v1.9h2.9v13.1h1.8v-13.1h2.9v-1.9z"/></g><path fill="#3e4347" d="m28.2 26.4h7.5v6.9h-7.5z"/><g fill="#e8e8e8"><path d="m40.4 34.7h-16.8l8.4-13.9 8.4 13.9m-13.8-1.8h10.8l-5.4-8.8-5.4 8.8"/><path d="m32 39.5l-8.4-13.9h16.9l-8.5 13.9m-5.4-12.2l5.4 8.9 5.4-8.9c0 0-10.8 0-10.8 0"/></g><g fill="#3e4347"><path d="m3.9 24.5c-.5 0-.9.4-.9.9v6.6h1.9v-6.6c-.1-.5-.5-.9-1-.9"/><path d="m7.6 24.5c-.5 0-.9.4-.9.9v6.6h1.9v-6.6c0-.5-.5-.9-1-.9"/><path d="m11.4 24.5c-.5 0-.9.4-.9.9v6.6h1.9v-6.6c-.1-.5-.5-.9-1-.9"/><path d="m52.6 24.5c-.5 0-.9.4-.9.9v6.6h1.9v-6.6c0-.5-.5-.9-1-.9"/><path d="m56.4 24.5c-.5 0-.9.4-.9.9v6.6h1.9v-6.6c-.1-.5-.5-.9-1-.9"/><path d="m60.1 24.5c-.5 0-.9.4-.9.9v6.6h1.9v-6.6c0-.5-.5-.9-1-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f54e.svg b/riot/emojione/svg/1f54e.svg new file mode 100644 index 0000000..82e1ca3 --- /dev/null +++ b/riot/emojione/svg/1f54e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffb700"><path d="m7.1 21c0 .5-.4 1-1 1h-3.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h3.1c.6 0 1 .5 1 1"/><path d="m6.1 25c0 .5-.4 1-1 1h-1.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h1.1c.6 0 1 .5 1 1"/><path d="m13 25c0 .5-.4 1-1 1h-1.1c-.6 0-1-.5-1-1 0-.5.4-1 1-1h1.1c.6 0 1 .5 1 1"/><path d="m19.9 25c0 .5-.5 1-1 1h-1.1c-.6 0-1-.5-1-1 0-.5.4-1 1-1h1.1c.5 0 1 .5 1 1"/><path d="m14 21c0 .5-.4 1-1 1h-3.1c-.6 0-1-.5-1-1 0-.5.4-1 1-1h3.1c.6 0 1 .5 1 1"/><path d="m20.9 21c0 .5-.5 1-1 1h-3.1c-.6 0-1-.5-1-1 0-.5.4-1 1-1h3.1c.5 0 1 .5 1 1"/><path d="m27.7 21c0 .5-.5 1-1 1h-3.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h3.1c.6 0 1 .5 1 1"/><path d="m34.6 19c0 .5-.5 1-1 1h-3.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h3.1c.5 0 1 .5 1 1"/><path d="m41.4 21c0 .5-.5 1-1 1h-3.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h3.1c.6 0 1 .5 1 1"/><path d="m48.3 21c0 .5-.4 1-1 1h-3.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h3.1c.5 0 1 .5 1 1"/><path d="m55.1 21c0 .5-.4 1-1 1h-3.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h3.1c.6 0 1 .5 1 1"/><path d="m62 21c0 .5-.5 1-1 1h-3.1c-.6 0-1-.5-1-1 0-.5.4-1 1-1h3.1c.5 0 1 .5 1 1"/><path d="m2.6 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5s2-1.6 2-3.5c0-.2 0-.3 0-.5h-4"/><path d="m9.5 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5 1.1 0 2-1.6 2-3.5 0-.2 0-.3 0-.5h-4"/><path d="m16.3 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5 1.1 0 2-1.6 2-3.5 0-.2 0-.3 0-.5h-4"/><path d="m23.2 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5s2-1.6 2-3.5c0-.2 0-.3 0-.5h-4"/><path d="m36.9 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5s2-1.6 2-3.5c0-.2 0-.3 0-.5h-4"/><path d="m43.7 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5 1.1 0 2-1.6 2-3.5 0-.2 0-.3 0-.5h-4"/><path d="m50.6 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5s2-1.6 2-3.5c0-.2 0-.3 0-.5h-4"/><path d="m57.5 21c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5 1.1 0 2-1.6 2-3.5 0-.2 0-.3 0-.5h-4"/><path d="m30 19c0 .2 0 .3 0 .5 0 1.9.9 3.5 2 3.5s2-1.6 2-3.5c0-.2 0-.3 0-.5h-4"/><path d="m26.7 25c0 .5-.5 1-1 1h-1.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h1.1c.6 0 1 .5 1 1"/><path d="m40.4 25c0 .5-.5 1-1 1h-1.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h1.1c.6 0 1 .5 1 1"/><path d="m47.3 25c0 .5-.5 1-1 1h-1.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h1.1c.5 0 1 .5 1 1"/><path d="m54.1 25c0 .5-.4 1-1 1h-1.1c-.5 0-1-.5-1-1 0-.5.5-1 1-1h1.1c.6 0 1 .5 1 1"/><path d="m61 25c0 .5-.5 1-1 1h-1.1c-.6 0-1-.5-1-1 0-.5.4-1 1-1h1.1c.5 0 1 .5 1 1"/><path d="M32,52C16.3,52,3.6,39.2,3.6,23.6h2C5.6,38.1,17.4,50,32,50s26.4-11.9,26.4-26.4h2C60.4,39.2,47.7,52,32,52z"/><path d="m32 45.1c-11.9 0-21.5-9.6-21.5-21.5h2c0 10.8 8.7 19.5 19.5 19.5s19.5-8.7 19.5-19.5h2c0 11.8-9.6 21.5-21.5 21.5"/><path d="m32 38.6c-8.3 0-15-6.7-15-15h2c0 7.2 5.8 13 13 13s13-5.8 13-13h2c0 8.2-6.7 15-15 15"/><path d="m32 31.6c-4.4 0-8-3.6-8-8h2c0 3.3 2.7 6 6 6s6-2.7 6-6h2c0 4.4-3.6 8-8 8"/><path d="m31 21h2v35h-2z"/><path d="m36 56.5c0 .8-1.8 1.5-4 1.5s-4-.7-4-1.5 1.8-2.5 4-2.5 4 1.6 4 2.5"/><path d="m40 59.5c0 1.9-3.6 2.5-8 2.5s-8-.6-8-2.5c0-1.9 3.6-3.5 8-3.5s8 1.5 8 3.5"/></g><path d="m5.1 12h-1.1c-.6 0-1 .4-1 1v7h3.1v-7c0-.6-.4-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m4.6 9l-.5 3h1z"/><path d="m4.9 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 .1-2-1.3-2-.6-4.7" fill="#ff8736"/><path d="m12 12h-1.1c-.6 0-1 .4-1 1v7h3.1v-7c0-.6-.4-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m11.4 9l-.5 3h1z"/><path d="m11.8 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 0-2-1.3-2-.6-4.7" fill="#ff8736"/><path d="m18.9 12h-1.1c-.5 0-1 .4-1 1v7h3.1v-7c0-.6-.5-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m18.3 9l-.5 3h1z"/><path d="m18.6 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 .1-2-1.2-2-.6-4.7" fill="#ff8736"/><path d="m25.7 12h-1.1c-.5 0-1 .4-1 1v7h3.1v-7c0-.6-.4-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m25.1 9l-.5 3h1z"/><path d="m25.5 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 0-2-1.3-2-.6-4.7" fill="#ff8736"/><path d="m32.6 10h-1.1c-.5 0-1 .4-1 1v7h3.1v-7c0-.6-.5-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m32 7l-.5 3h1z"/><path d="m32.4 2c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 0-2-1.3-2-.6-4.7" fill="#ff8736"/><path d="m39.4 12h-1.1c-.5 0-1 .4-1 1v7h3.1v-7c0-.6-.4-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m38.8 9l-.4 3h1z"/><path d="m39.2 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 0-2-1.3-2-.6-4.7" fill="#ff8736"/><path d="m46.3 12h-1.1c-.5 0-1 .4-1 1v7h3.1v-7c0-.6-.5-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m45.7 9l-.5 3h1z"/><path d="m46.1 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 0-2-1.3-2-.6-4.7" fill="#ff8736"/><path d="m60 12h-1.1c-.5 0-1 .4-1 1v7h3.1v-7c0-.6-.5-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m59.4 9l-.5 3h1z"/><path d="m59.8 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 0-2-1.3-2-.6-4.7" fill="#ff8736"/><path d="m53.1 12h-1.1c-.5 0-1 .4-1 1v7h3.1v-7c0-.6-.4-1-1-1" fill="#e8e8e8"/><path fill="#b2c1c0" d="m52.6 9l-.5 3h1z"/><path d="m52.9 4c0 0-1.7 1.8-1.3 4.7.2 1.5 1.9 1.9 1.9 0 .1-2-1.3-2-.6-4.7" fill="#ff8736"/><g fill="#c28200"><path d="m36.2 57.7c.2.2-1.5 1.7-4.2 1.7s-4.4-1.5-4.2-1.7c.1-.2 1.9.7 4.2.7 2.3 0 4-.9 4.2-.7"/><ellipse cx="4.6" cy="22.2" rx="1.5" ry=".2"/><ellipse cx="11.4" cy="22.2" rx="1.5" ry=".2"/><ellipse cx="18.3" cy="22.2" rx="1.5" ry=".2"/><ellipse cx="25.1" cy="22.2" rx="1.5" ry=".2"/><ellipse cx="38.9" cy="22.1" rx="1.5" ry=".2"/><ellipse cx="32" cy="20" rx="1.5" ry=".2"/><ellipse cx="45.8" cy="22.1" rx="1.5" ry=".2"/><ellipse cx="52.6" cy="22.1" rx="1.5" ry=".2"/><ellipse cx="59.4" cy="22.1" rx="1.5" ry=".2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f550.svg b/riot/emojione/svg/1f550.svg new file mode 100644 index 0000000..bd5bb07 --- /dev/null +++ b/riot/emojione/svg/1f550.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M30.6 38 27 36.1 39.4 16 43 17.9z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f551.svg b/riot/emojione/svg/1f551.svg new file mode 100644 index 0000000..2e55177 --- /dev/null +++ b/riot/emojione/svg/1f551.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M27.9 37 26 33.4 46.1 21 48 24.6z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f552.svg b/riot/emojione/svg/1f552.svg new file mode 100644 index 0000000..834d2dd --- /dev/null +++ b/riot/emojione/svg/1f552.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="m26 30h24v4h-24z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f553.svg b/riot/emojione/svg/1f553.svg new file mode 100644 index 0000000..9f67b69 --- /dev/null +++ b/riot/emojione/svg/1f553.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M26 30.6 27.9 27 48 39.4 46.1 43z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f554.svg b/riot/emojione/svg/1f554.svg new file mode 100644 index 0000000..073f857 --- /dev/null +++ b/riot/emojione/svg/1f554.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M27 27.9 30.6 26 43 46.1 39.4 48z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f555.svg b/riot/emojione/svg/1f555.svg new file mode 100644 index 0000000..0fc3464 --- /dev/null +++ b/riot/emojione/svg/1f555.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="m30 26h4v24h-4z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f556.svg b/riot/emojione/svg/1f556.svg new file mode 100644 index 0000000..5289190 --- /dev/null +++ b/riot/emojione/svg/1f556.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M33.4 26 37 27.9 24.6 48 21 46.1z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f557.svg b/riot/emojione/svg/1f557.svg new file mode 100644 index 0000000..f5bc3af --- /dev/null +++ b/riot/emojione/svg/1f557.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M36.1 27 38 30.6 17.9 43 16 39.4z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f558.svg b/riot/emojione/svg/1f558.svg new file mode 100644 index 0000000..7e4eda3 --- /dev/null +++ b/riot/emojione/svg/1f558.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="m14 30h24v4h-24z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f559.svg b/riot/emojione/svg/1f559.svg new file mode 100644 index 0000000..21e380e --- /dev/null +++ b/riot/emojione/svg/1f559.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M38 33.4 36.1 37 16 24.6 17.9 21z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f55a.svg b/riot/emojione/svg/1f55a.svg new file mode 100644 index 0000000..6d7a353 --- /dev/null +++ b/riot/emojione/svg/1f55a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><path d="M37 36.1 33.4 38 21 17.9 24.6 16z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f55b.svg b/riot/emojione/svg/1f55b.svg new file mode 100644 index 0000000..1381b3b --- /dev/null +++ b/riot/emojione/svg/1f55b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 6h4v32h-4z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f55c.svg b/riot/emojione/svg/1f55c.svg new file mode 100644 index 0000000..9972f54 --- /dev/null +++ b/riot/emojione/svg/1f55c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><circle cx="32" cy="32" r="4"/><path d="m30 26h4v32h-4z"/><path transform="matrix(.7067-.7075.7075.7067-9.2498 33.6847)" d="m23.9 26h24.2v4h-24.2z"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f55d.svg b/riot/emojione/svg/1f55d.svg new file mode 100644 index 0000000..86f2411 --- /dev/null +++ b/riot/emojione/svg/1f55d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m26 35.5l-1-3.8 23-6.2 1 3.8z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f55e.svg b/riot/emojione/svg/1f55e.svg new file mode 100644 index 0000000..da97799 --- /dev/null +++ b/riot/emojione/svg/1f55e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m26 32.3l1-3.8 23 6.2-1 3.8z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f55f.svg b/riot/emojione/svg/1f55f.svg new file mode 100644 index 0000000..8185d20 --- /dev/null +++ b/riot/emojione/svg/1f55f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path transform="matrix(.7069-.7073.7073.7069-14.9093 36.0135)" d="m34 23.9h4v24.2h-4z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f560.svg b/riot/emojione/svg/1f560.svg new file mode 100644 index 0000000..54ef726 --- /dev/null +++ b/riot/emojione/svg/1f560.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m28.4 26l3.8-1 6.2 23-3.8 1z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f561.svg b/riot/emojione/svg/1f561.svg new file mode 100644 index 0000000..fea0cde --- /dev/null +++ b/riot/emojione/svg/1f561.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m31.7 26l3.8 1-6.2 23-3.8-1z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f562.svg b/riot/emojione/svg/1f562.svg new file mode 100644 index 0000000..5cf968f --- /dev/null +++ b/riot/emojione/svg/1f562.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path transform="matrix(.7067-.7075.7075.7067-17.2588 30.3672)" d="m15.9 34h24.2v4h-24.2z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f563.svg b/riot/emojione/svg/1f563.svg new file mode 100644 index 0000000..ce97315 --- /dev/null +++ b/riot/emojione/svg/1f563.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m37 28.5l1 3.8-23 6.2-1-3.8z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f564.svg b/riot/emojione/svg/1f564.svg new file mode 100644 index 0000000..d7d214f --- /dev/null +++ b/riot/emojione/svg/1f564.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m39 31.7l-1 3.8-23-6.2 1-3.8z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f565.svg b/riot/emojione/svg/1f565.svg new file mode 100644 index 0000000..d7d8b48 --- /dev/null +++ b/riot/emojione/svg/1f565.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path transform="matrix(.7071-.7071.7071.7071-11.5983 27.9992)" d="m26 15.9h4v24.2h-4z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f566.svg b/riot/emojione/svg/1f566.svg new file mode 100644 index 0000000..77030c0 --- /dev/null +++ b/riot/emojione/svg/1f566.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m35.4 37l-3.8 1-6.2-23 3.8-1z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f567.svg b/riot/emojione/svg/1f567.svg new file mode 100644 index 0000000..02e8132 --- /dev/null +++ b/riot/emojione/svg/1f567.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#62727a"/><g fill="#fff"><path d="m30 26h4v32h-4z"/><path d="m31.8 39l-3.8-1 6.2-23 3.8 1z"/><circle cx="32" cy="32" r="4"/></g><circle cx="32" cy="32" r="3" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f56f.svg b/riot/emojione/svg/1f56f.svg new file mode 100644 index 0000000..af4c606 --- /dev/null +++ b/riot/emojione/svg/1f56f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="55.1" rx="17.9" ry="6.9" fill="#a29b95"/><ellipse cx="32" cy="53.6" rx="16.5" ry="5.3" fill="#dddad5"/><ellipse cx="32" cy="51.2" rx="10.5" ry="4.2" fill="#a29b95"/><ellipse cx="32" cy="50.6" rx="9.8" ry="3" fill="#dddad5"/><ellipse cx="32" cy="42.5" rx="10.5" ry="8.6" fill="#a29b95"/><ellipse cx="32" cy="40.8" rx="8.9" ry="6.9" fill="#dddad5"/><ellipse cx="32" cy="36.3" rx="11.5" ry="4.4" fill="#a29b95"/><ellipse cx="32" cy="35.4" rx="10.2" ry="3.5" fill="#dddad5"/><ellipse cx="32" cy="29.4" rx="21" ry="6.9" fill="#a29b95"/><ellipse cx="32" cy="27.9" rx="19.4" ry="5.3" fill="#dddad5"/><g fill="#dfcea3"><ellipse cx="32" cy="26.7" rx="12.4" ry="3.5"/><path d="m19.6 12.1h24.8v14.5h-24.8z"/></g><ellipse cx="32" cy="12.1" rx="12.4" ry="3.5" fill="#fff6d7"/><ellipse cx="32" cy="12.9" rx="9.4" ry="2.6" fill="#efd8b1"/><path d="m31.5 12.5c-2 0-3.9-1-1.7-4.8 2.1-3.8 2.8-4.6 2.8-5.7 0 0 6.4 10.5-1.1 10.5" fill="#ed4c5c"/><path d="m32.1 10.8c.2.6.2 1.3.4 1.9.1.3.1.6 0 .9-.1.1-.2.6-.4.5-.2 0-.3-.5-.4-.6-.1-.4 0-.7 0-1 0-.2.1-1.7.4-1.7" fill="#8f9496"/><path d="m31.7 12.5c-1.3 0-2.5-.6-1.1-3.1 1.4-2.4 1.8-3 1.8-3.7 0 .1 4.1 6.8-.7 6.8" fill="#ffce31"/><path d="m31.6 12.5c0 0 .1-1.7.4-1.7.3 0 .4 1.6.4 1.6s-.4.1-.8.1" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f570.svg b/riot/emojione/svg/1f570.svg new file mode 100644 index 0000000..c2808cb --- /dev/null +++ b/riot/emojione/svg/1f570.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60,40c-5,0-9-8-9-13c0-10-9-18-19-18s-19,8-19,18c0,5-4,13-9,13H0v13h64V40H60z" fill="#594640"/><circle cx="32" cy="28" r="15" fill="#fed0ac"/><g fill="#333"><circle cx="32" cy="28" r="2"/><path d="m40.1 30c.7 0 2.9-2 2.9-2s-2.2-2-2.9-2c-.6 0-1.1.6-1.3 1.4h-7.8v1.2h7.8c.2.8.7 1.4 1.3 1.4"/><path d="m32 13.7l-1 14h2z"/></g><g fill="#d3976e"><path d="m3 53h8v2h-8z"/><path d="m53 53h8v2h-8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f573.svg b/riot/emojione/svg/1f573.svg new file mode 100644 index 0000000..4ccc436 --- /dev/null +++ b/riot/emojione/svg/1f573.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 40.3c0 5.9-13.4 10.7-30 10.7-.3 0-.7 0-1 0l-2.7-2.7-3 2.4c-4-.3-7.7-.9-11-1.8l-3.2-3.3-2.2 1.5c-4.3-1.8-6.9-4.2-6.9-6.8 0-5.9 13.4-10.7 30-10.7 16.6 0 30 4.8 30 10.7" fill="#63a1ba"/><path d="m32 43.5c9.2 0 17.3 1.5 22.8 3.8 2.4-1 4.3-2.2 5.5-3.5-4-4.2-15.2-7.2-28.4-7.2s-24.3 3-28.4 7.2c1.2 1.2 3 2.4 5.2 3.3l1.6-3.3 3.3 1.9c5.2-1.4 11.5-2.2 18.4-2.2" fill="#538aa5"/><path d="m14.4 49c3.2.8 6.9 1.4 10.9 1.8l2.6-2 3.1 2.2c.3 0 .6 0 1 0 9.2 0 17.3-1.5 22.8-3.8-5.5-2.3-13.7-3.8-22.8-3.8-6.9 0-13.3.8-18.3 2.2-1.7.5.7 3.4.7 3.4" fill="#467591"/><path d="m26.4 16.1l-2.9.4 5 34.3c.8 0 1.7.1 2.5.1l-4.6-34.8" fill="#dfe9ef"/><path d="m24.3 16.6h-2.9l3.9 34.2c1 .1 2.1.2 3.2.2l-4.2-34.4" fill="#b0bdc6"/><path d="m12 32.6l11.6-3.3c0 0 1-.1 1.3.6.3 1.1-.6 1.7-.6 1.7l-12.1 2.3-.2-1.3" fill="#dfe9ef"/><path d="m12.2 33.8l12.8-3.5c0 .8-.7 1.3-.7 1.3l-11.9 3.6-.2-1.4" fill="#8b979e"/><path d="m13.7 45.8l11.6-3.3c0 0 1-.1 1.3.6.3 1.1-.6 1.7-.6 1.7l-12.2 2.2-.1-1.2" fill="#dfe9ef"/><path d="m13.8 47l12.8-3.6c0 .8-.7 1.3-.7 1.3l-11.9 3.6-.2-1.3" fill="#8b979e"/><path d="m10.4 19.3l-2.6.5 4.2 28.5c.7.2 1.5.5 2.3.7l-3.9-29.7" fill="#dfe9ef"/><path d="m8.3 19.7h-2.9l3.4 27.4c1 .4 2 .8 3.2 1.2l-3.7-28.6" fill="#b0bdc6"/><path fill="#333" d="m8.1 16.1l-3.6.3.4 3.7 3.7.4.5-2.5z"/><path fill="#484a4c" d="m10.5 16.1h-2.4l.5 4.4 2.1-.8z"/><path fill="#333" d="m20.5 13.2l.4 3.8 3.6.2.6-2.4-1-1.8z"/><path fill="#484a4c" d="m24.1 13h2.4l.2 3.6-2.2.6"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f574.svg b/riot/emojione/svg/1f574.svg new file mode 100644 index 0000000..cfaf2a7 --- /dev/null +++ b/riot/emojione/svg/1f574.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="60.9" rx="10" ry="1.1" fill="#a6aeb0"/><g fill="#2c3033"><path d="m30.1 54.9c-.4 2.6-4 2.1-3.7-.5l.3-2 3.7.5-.3 2"/><path d="m33.9 54.9c.4 2.6 4 2.1 3.7-.5l-.3-2-3.7.5.3 2"/></g><g fill="#ffdd67"><path d="m29.9 22.6h4.2v3.3h-4.2z"/><path d="m22.6 13.7h18.9c0 .1 1.5 4.8-1.8 5-.6 4.5-5.4 5.5-7.7 5.5-2.3 0-7.1-.9-7.7-5.5-3.3-.2-1.7-4.9-1.7-5"/></g><path d="m33.1 20.5c0 .3-.5.6-1.1.6s-1.1-.2-1.1-.6c0-.3 2.2-.3 2.2 0" fill="#eba352"/><g fill="#2c3033"><path d="m25 16.8c0 0-.5-.1-.8.1-.2.1-.2-1 0-1.2.2-.3.8-.3.8-.3v1.4"/><path d="m39 16.8c0 0 .5-.1.8.1.2.1.2-1 0-1.2-.2-.3-.8-.3-.8-.3v1.4"/><path d="m38.9 15.2c-.4-.3-2.1-.3-3.2-.3-.6 0-2.5 0-2.9.2-.1 0-.8 0-.8 0s-.8 0-.8 0c-.4-.2-2.4-.2-2.9-.2-1 0-2.7 0-3.2.3-.7.4-.7 1.2-.3 3.2.2 1.1.7 1.7 3.9 1.7 2.8.1 2.5-3.4 3.3-3.4.8 0 .5 3.4 3.3 3.4 3.2-.1 3.7-.7 3.9-1.7.4-2 .4-2.7-.3-3.2"/></g><g fill="#383b3d"><path d="m30.9 15.7c-.2-.1-1.3-.2-2.7-.2-1.4 0-2.6.1-2.8.2-.4.2-.5.7-.1 2.6.1.7.5.9.8 1h.1c.5.2 1.5.3 2.5.3 1 0 1.2-.2 1.5-.6.3-.4 1.1-2 1-2.9-.1-.2-.2-.3-.3-.4"/><path d="m33.1 15.7c.2-.1 1.3-.2 2.7-.2 1.4 0 2.6.1 2.8.2.4.2.5.7.1 2.6-.1.7-.5.9-.8 1h-.1c-.5.2-1.5.3-2.5.3-1 0-1.2-.2-1.5-.6-.3-.4-1.1-2-1-2.9.1-.2.2-.3.3-.4"/></g><path d="m40.8 11.4c-3.8-3.9 0-10.8-2.9-9.2-2.2 1.2-4.3 1.9-5.8 1.9-1.5 0-3.7-.7-5.8-1.9-3-1.6.9 5.3-2.9 9.2-3.7 1.9-5.2 1.7-5.2 2.2 0 .3 1.6 2.6 14 2.6 12.4 0 14-2.3 14-2.6-.2-.5-1.8-.3-5.4-2.2" fill="#594640"/><path d="m32 12.1c4 0 6.9-.2 9-.6 0 0-.1-.1-.2-.1-.4-.4-.7-.8-1-1.3-1.9.2-4.5.4-7.8.4s-5.9-.2-7.8-.4c-.2.5-.6.9-1 1.3-.1 0-.2.1-.2.1 2.1.4 5 .6 9 .6" fill="#2c3033"/><path d="m26.6 24.5l3.3-.2c0 .7.9 1.2 2.1 1.2 1.2 0 2.1-.5 2.1-1.2l3.3.2-.5 11.1h-9.9l-.4-11.1" fill="#594640"/><path d="m32 32.3c0 0 3.3-4.7 3-6.3-.1-.3-.6-.9-1-1.3-.3.5-1.1.8-2 .8-.9 0-1.7-.3-2-.8-.4.4-.9 1-1 1.3-.3 1.6 3 6.3 3 6.3" fill="#fff"/><g fill="#594640"><path d="m32.9 31.1l-.3-4.3h-1.2l-.3 4.3c.5.8.9 1.4.9 1.4s.4-.6.9-1.4"/><path d="m32.6 26.5l.5-1.2c-.3.1-.7.2-1.1.2-.4 0-.8-.1-1.1-.2l.5 1.2h1.2"/><path d="m25.3 37.6l-2.1-.5 3.4-12.6 2.1.5z"/></g><path d="m24.9 39.2c-.3 1.3-2.4.7-2.1-.5l.4-1.5 2.1.5-.4 1.5" fill="#ffdd67"/><path fill="#594640" d="m38.7 37.6l2.1-.5-3.4-12.6-2.1.5z"/><path d="m39.1 39.2c.3 1.3 2.4.7 2.1-.5l-.4-1.5-2.1.5.4 1.5" fill="#ffdd67"/><path fill="#594640" d="m36.9 38.2v-2.6h-9.8v2.6l-.8 14.9h4.3l1.4-12 1.4 12h4.3z"/><path fill="#2c3033" d="m27.1 35.6h9.9v1.2h-9.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f575-1f3fb.svg b/riot/emojione/svg/1f575-1f3fb.svg new file mode 100644 index 0000000..9e0d538 --- /dev/null +++ b/riot/emojione/svg/1f575-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11.5 41.2h41.6c0-22.4-3.2-27.2-20.8-27.2s-20.8 4.8-20.8 27.2" fill="#594640"/><path d="m51.3 36.3c-.1.9-.3 1.7-.6 2.1-.4.8-1.4 1.3-1.4 1.3s.2-1.7.2-4c-1-13.9-1.8-10-17.3-10-15.4 0-24.2 2.7-24.2 12 0 6.8 6.4 9.9 6.4 9.9 1.6 6.7 6.2 10.4 13.4 13.7 2.2 1 6.6 1 8.8 0 8-3.6 12.7-7.8 13.8-15.9 3.2-.2 4.2-2.4 4.2-4.9.1-4.3-1.8-4.6-3.3-4.2" fill="#ffe1bd"/><path d="m39.5 51.5c0 2.7-3.6 4.1-7.2 4.1s-7.2-1.4-7.2-4.1c0 0 0-.7.7-.7 3.2 0 9.7 0 13 0 .7 0 .7.7.7.7" fill="#664e27"/><path d="m41.9 35.3c4 0 5.6 1.4 5.6 2.9s0 3.5-5.3 3.5c-5.1 0-5.9-.6-5.9-2.8 0-1.5 1.6-3.6 5.6-3.6" fill="#f5f5f5"/><circle cx="41.5" cy="37.7" r="3.6" fill="#664e27"/><path d="m40.3 37.7c0 .7.5 1.2 1.2 1.2.7 0 1.2-.5 1.2-1.2s-.5-1.2-1.2-1.2c-.7 0-1.2.5-1.2 1.2" fill="#231f20"/><path d="m47.5 38.1c0-5.6-11.2-5.6-11.2.8 1.6-4.8 9.6-4.8 11.2-.8" fill="#664e27"/><path d="m32.3 48.4c-3.3 0-5-2.4-3.3-2.4s5 0 6.7 0-.1 2.4-3.4 2.4" fill="#e6b796"/><path d="m19.5 34.2c-4.6 0-6.5 1.7-6.5 3.4 0 1.7 0 4.1 6.1 4.1 5.9 0 6.9-.7 6.9-3.2 0-1.8-1.9-4.3-6.5-4.3" fill="#f5f5f5"/><circle cx="20" cy="37.1" r="4.2" fill="#664e27"/><path d="m21.4 37.1c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.7 0 1.4.6 1.4 1.4" fill="#231f20"/><path d="m13 37.5c0-6.5 13-6.5 13 .9-1.9-5.5-11.1-5.5-13-.9" fill="#664e27"/><circle cx="19.3" cy="37.3" r="11.1" opacity=".4" fill="#f5f5f5"/><g fill="#b0bdc6"><path transform="matrix(.5-.866.866.5-35.6058 35.404)" d="m11.8 47.1h2.2v2.9h-2.2z"/><path d="m13.2 48c5.9 3.4 13.4 1.4 16.8-4.5 3.4-5.9 1.4-13.4-4.5-16.8-5.9-3.4-13.4-1.4-16.8 4.5-3.4 5.9-1.4 13.4 4.5 16.8m-2.6-15.7c2.8-4.8 9-6.5 13.8-3.7 4.8 2.8 6.5 9 3.7 13.8-2.8 4.8-9 6.5-13.8 3.7s-6.5-9-3.7-13.8"/></g><path transform="matrix(.5001-.866.866.5001-41.4948 35.3982)" fill="#333" d="m4.7 51h10.3v5.2h-10.3z"/><path d="m4.3 56.7c-.4.7 5.4 4.1 5.8 3.4l.3-.5c.4-.7-5.4-4.1-5.8-3.4l-.3.5" fill="#b0bdc6"/><path d="m52.9 22.3c-9.1-10.1.1-23.8-7-19.5-5.2 3.2-10.2 4-13.9 4-3.6 0-8.7-.8-13.9-4-7.1-4.3 2.1 9.3-7 19.5-8.7 5.1-9.1 4.5-9.1 5.7 0 .7.4 6.8 30 6.8s30-6.2 30-6.8c0-1.2-.4-.6-9.1-5.7" fill="#62727a"/><path d="m32 24.1c9.6 0 20.9-1.8 20.9-1.8-1-1.1-1.7-2.2-2.3-3.4-4.6.7-10.7 1.1-18.6 1.1s-13.9-.4-18.6-1.1c-.6 1.2-1.3 2.4-2.3 3.4 0 0 11.3 1.8 20.9 1.8" fill="#2c3033"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f575-1f3fc.svg b/riot/emojione/svg/1f575-1f3fc.svg new file mode 100644 index 0000000..1eb13a6 --- /dev/null +++ b/riot/emojione/svg/1f575-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11.5 41.2h41.6c0-22.4-3.2-27.2-20.8-27.2s-20.8 4.8-20.8 27.2" fill="#dbb471"/><path d="m51.3 36.3c-.1.9-.3 1.7-.6 2.1-.4.8-1.4 1.3-1.4 1.3s.2-1.7.2-4c-1-13.9-1.8-10-17.3-10-15.4 0-24.2 2.7-24.2 12 0 6.8 6.4 9.9 6.4 9.9 1.6 6.7 6.2 10.4 13.4 13.7 2.2 1 6.6 1 8.8 0 8-3.6 12.7-7.8 13.8-15.9 3.2-.2 4.2-2.4 4.2-4.9.1-4.3-1.8-4.6-3.3-4.2" fill="#fed0ac"/><path d="m39.5 51.5c0 2.7-3.6 4.1-7.2 4.1s-7.2-1.4-7.2-4.1c0 0 0-.7.7-.7 3.2 0 9.7 0 13 0 .7 0 .7.7.7.7" fill="#664e27"/><path d="m41.9 35.3c4 0 5.6 1.4 5.6 2.9s0 3.5-5.3 3.5c-5.1 0-5.9-.6-5.9-2.8 0-1.5 1.6-3.6 5.6-3.6" fill="#f5f5f5"/><circle cx="41.5" cy="37.7" r="3.6" fill="#664e27"/><path d="m40.3 37.7c0 .7.5 1.2 1.2 1.2.7 0 1.2-.5 1.2-1.2s-.5-1.2-1.2-1.2c-.7 0-1.2.5-1.2 1.2" fill="#231f20"/><path d="m47.5 38.1c0-5.6-11.2-5.6-11.2.8 1.6-4.8 9.6-4.8 11.2-.8" fill="#664e27"/><path d="m32.3 48.4c-3.3 0-5-2.4-3.3-2.4s5 0 6.7 0-.1 2.4-3.4 2.4" fill="#e0a372"/><path d="m19.5 34.2c-4.6 0-6.5 1.7-6.5 3.4 0 1.7 0 4.1 6.1 4.1 5.9 0 6.9-.7 6.9-3.2 0-1.8-1.9-4.3-6.5-4.3" fill="#f5f5f5"/><circle cx="20" cy="37.1" r="4.2" fill="#664e27"/><path d="m21.4 37.1c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.7 0 1.4.6 1.4 1.4" fill="#231f20"/><path d="m13 37.5c0-6.5 13-6.5 13 .9-1.9-5.5-11.1-5.5-13-.9" fill="#664e27"/><circle cx="19.3" cy="37.3" r="11.1" opacity=".4" fill="#f5f5f5"/><g fill="#b0bdc6"><path transform="matrix(.5-.866.866.5-35.6058 35.404)" d="m11.8 47.1h2.2v2.9h-2.2z"/><path d="m13.2 48c5.9 3.4 13.4 1.4 16.8-4.5 3.4-5.9 1.4-13.4-4.5-16.8-5.9-3.4-13.4-1.4-16.8 4.5-3.4 5.9-1.4 13.4 4.5 16.8m-2.6-15.7c2.8-4.8 9-6.5 13.8-3.7 4.8 2.8 6.5 9 3.7 13.8-2.8 4.8-9 6.5-13.8 3.7s-6.5-9-3.7-13.8"/></g><path transform="matrix(.5001-.866.866.5001-41.4948 35.3982)" fill="#333" d="m4.7 51h10.3v5.2h-10.3z"/><path d="m4.3 56.7c-.4.7 5.4 4.1 5.8 3.4l.3-.5c.4-.7-5.4-4.1-5.8-3.4l-.3.5" fill="#b0bdc6"/><path d="m52.9 22.3c-9.1-10.1.1-23.8-7-19.5-5.2 3.2-10.2 4-13.9 4-3.6 0-8.7-.8-13.9-4-7.1-4.3 2.1 9.3-7 19.5-8.7 5.1-9.1 4.5-9.1 5.7 0 .7.4 6.8 30 6.8s30-6.2 30-6.8c0-1.2-.4-.6-9.1-5.7" fill="#62727a"/><path d="m32 24.1c9.6 0 20.9-1.8 20.9-1.8-1-1.1-1.7-2.2-2.3-3.4-4.6.7-10.7 1.1-18.6 1.1s-13.9-.4-18.6-1.1c-.6 1.2-1.3 2.4-2.3 3.4 0 0 11.3 1.8 20.9 1.8" fill="#2c3033"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f575-1f3fd.svg b/riot/emojione/svg/1f575-1f3fd.svg new file mode 100644 index 0000000..6eaa233 --- /dev/null +++ b/riot/emojione/svg/1f575-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11.5 41.2h41.6c0-22.4-3.2-27.2-20.8-27.2-17.6 0-20.8 4.8-20.8 27.2" fill="#594640"/><path d="m51.3 36.3c-.1.9-.3 1.7-.6 2.1-.4.8-1.4 1.3-1.4 1.3s.2-1.7.2-4c-1-13.9-1.8-10-17.3-10-15.4 0-24.2 2.7-24.2 12 0 6.8 6.4 9.9 6.4 9.9 1.6 6.7 6.2 10.4 13.4 13.7 2.2 1 6.6 1 8.8 0 8-3.6 12.7-7.8 13.8-15.9 3.2-.2 4.2-2.4 4.2-4.9.1-4.3-1.8-4.6-3.3-4.2" fill="#d6a57c"/><path d="m39.5 51.5c0 2.7-3.6 4.1-7.2 4.1s-7.2-1.4-7.2-4.1c0 0 0-.7.7-.7 3.2 0 9.7 0 13 0 .7 0 .7.7.7.7" fill="#664e27"/><path d="m41.9 35.3c4 0 5.6 1.4 5.6 2.9s0 3.5-5.3 3.5c-5.1 0-5.9-.6-5.9-2.8 0-1.5 1.6-3.6 5.6-3.6" fill="#f5f5f5"/><circle cx="41.5" cy="37.7" r="3.6" fill="#664e27"/><path d="m40.3 37.7c0 .7.5 1.2 1.2 1.2.7 0 1.2-.5 1.2-1.2 0-.7-.5-1.2-1.2-1.2-.7 0-1.2.5-1.2 1.2" fill="#231f20"/><path d="m47.5 38.1c0-5.6-11.2-5.6-11.2.8 1.6-4.8 9.6-4.8 11.2-.8" fill="#664e27"/><path d="m32.3 48.4c-3.3 0-5-2.4-3.3-2.4s5 0 6.7 0-.1 2.4-3.4 2.4" fill="#b58360"/><path d="m19.5 34.2c-4.6 0-6.5 1.7-6.5 3.4 0 1.7 0 4.1 6.1 4.1 5.9 0 6.9-.7 6.9-3.2 0-1.8-1.9-4.3-6.5-4.3" fill="#f5f5f5"/><circle cx="20" cy="37.1" r="4.2" fill="#664e27"/><path d="m21.4 37.1c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.7 0 1.4.6 1.4 1.4" fill="#231f20"/><path d="m13 37.5c0-6.5 13-6.5 13 .9-1.9-5.5-11.1-5.5-13-.9" fill="#664e27"/><circle cx="19.3" cy="37.3" r="11.1" opacity=".4" fill="#f5f5f5"/><g fill="#b0bdc6"><path transform="matrix(.5-.866.866.5-35.6061 35.4031)" d="m11.8 47.1h2.2v2.9h-2.2z"/><path d="m13.2 48c5.9 3.4 13.4 1.4 16.8-4.5 3.4-5.9 1.4-13.4-4.5-16.8-5.9-3.4-13.4-1.4-16.8 4.5s-1.4 13.4 4.5 16.8m-2.6-15.7c2.8-4.8 9-6.5 13.8-3.7 4.8 2.8 6.5 9 3.7 13.8-2.8 4.8-9 6.5-13.8 3.7-4.9-2.8-6.5-9-3.7-13.8"/></g><path transform="matrix(.5001-.866.866.5001-41.4946 35.3972)" fill="#333" d="m4.7 51h10.3v5.2h-10.3z"/><path d="m4.3 56.7c-.4.7 5.4 4.1 5.8 3.4l.3-.5c.4-.7-5.4-4.1-5.8-3.4l-.3.5" fill="#b0bdc6"/><path d="m52.9 22.3c-9.1-10.1.1-23.8-7-19.5-5.2 3.2-10.2 4-13.9 4s-8.7-.8-13.9-4c-7.1-4.3 2.1 9.3-7 19.5-8.7 5.1-9.1 4.5-9.1 5.7 0 .7.4 6.8 30 6.8s30-6.2 30-6.8c0-1.2-.4-.6-9.1-5.7" fill="#62727a"/><path d="m32 24.1c9.6 0 20.9-1.8 20.9-1.8-1-1.1-1.7-2.2-2.3-3.4-4.6.7-10.7 1.1-18.6 1.1s-13.9-.4-18.6-1.1c-.6 1.2-1.3 2.4-2.3 3.4 0 0 11.3 1.8 20.9 1.8" fill="#2c3033"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f575-1f3fe.svg b/riot/emojione/svg/1f575-1f3fe.svg new file mode 100644 index 0000000..f3f11e4 --- /dev/null +++ b/riot/emojione/svg/1f575-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11.5 41.2h41.6c0-22.4-3.2-27.2-20.8-27.2s-20.8 4.8-20.8 27.2" fill="#231f20"/><path d="m51.3 36.3c-.1.9-.3 1.7-.6 2.1-.4.8-1.4 1.3-1.4 1.3s.2-1.7.2-4c-1-13.9-1.8-10-17.3-10-15.4 0-24.2 2.7-24.2 12 0 6.8 6.4 9.9 6.4 9.9 1.6 6.7 6.2 10.4 13.4 13.7 2.2 1 6.6 1 8.8 0 8-3.6 12.7-7.8 13.8-15.9 3.2-.2 4.2-2.4 4.2-4.9.1-4.3-1.8-4.6-3.3-4.2" fill="#b47d56"/><path d="m39.5 51.5c0 2.7-3.6 4.1-7.2 4.1s-7.2-1.4-7.2-4.1c0 0 0-.7.7-.7 3.2 0 9.7 0 13 0 .7 0 .7.7.7.7" fill="#664e27"/><path d="m41.9 35.3c4 0 5.6 1.4 5.6 2.9s0 3.5-5.3 3.5c-5.1 0-5.9-.6-5.9-2.8 0-1.5 1.6-3.6 5.6-3.6" fill="#f5f5f5"/><circle cx="41.5" cy="37.7" r="3.6" fill="#664e27"/><path d="m40.3 37.7c0 .7.5 1.2 1.2 1.2.7 0 1.2-.5 1.2-1.2 0-.7-.5-1.2-1.2-1.2-.7 0-1.2.5-1.2 1.2" fill="#231f20"/><path d="m47.5 38.1c0-5.6-11.2-5.6-11.2.8 1.6-4.8 9.6-4.8 11.2-.8" fill="#664e27"/><path d="m32.3 48.4c-3.3 0-5-2.4-3.3-2.4s5 0 6.7 0-.1 2.4-3.4 2.4" fill="#935e3e"/><path d="m19.5 34.2c-4.6 0-6.5 1.7-6.5 3.4 0 1.7 0 4.1 6.1 4.1 5.9 0 6.9-.7 6.9-3.2 0-1.8-1.9-4.3-6.5-4.3" fill="#f5f5f5"/><circle cx="20" cy="37.1" r="4.2" fill="#664e27"/><path d="m21.4 37.1c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.7 0 1.4.6 1.4 1.4" fill="#231f20"/><path d="m13 37.5c0-6.5 13-6.5 13 .9-1.9-5.5-11.1-5.5-13-.9" fill="#664e27"/><circle cx="19.3" cy="37.3" r="11.1" opacity=".4" fill="#f5f5f5"/><g fill="#b0bdc6"><path transform="matrix(.5-.866.866.5-35.6058 35.404)" d="m11.8 47.1h2.2v2.9h-2.2z"/><path d="m13.2 48c5.9 3.4 13.4 1.4 16.8-4.5 3.4-5.9 1.4-13.4-4.5-16.8-5.9-3.4-13.4-1.4-16.8 4.5s-1.4 13.4 4.5 16.8m-2.6-15.7c2.8-4.8 9-6.5 13.8-3.7 4.8 2.8 6.5 9 3.7 13.8-2.8 4.8-9 6.5-13.8 3.7-4.9-2.8-6.5-9-3.7-13.8"/></g><path transform="matrix(.5001-.866.866.5001-41.4944 35.398)" fill="#333" d="m4.7 51h10.3v5.2h-10.3z"/><path d="m4.3 56.7c-.4.7 5.4 4.1 5.8 3.4l.3-.5c.4-.7-5.4-4.1-5.8-3.4l-.3.5" fill="#b0bdc6"/><path d="m52.9 22.3c-9.1-10.1.1-23.8-7-19.5-5.2 3.2-10.2 4-13.9 4-3.6 0-8.7-.8-13.9-4-7.1-4.3 2.1 9.3-7 19.5-8.7 5.1-9.1 4.5-9.1 5.7 0 .7.4 6.8 30 6.8s30-6.2 30-6.8c0-1.2-.4-.6-9.1-5.7" fill="#62727a"/><path d="m32 24.1c9.6 0 20.9-1.8 20.9-1.8-1-1.1-1.7-2.2-2.3-3.4-4.6.7-10.7 1.1-18.6 1.1s-13.9-.4-18.6-1.1c-.6 1.2-1.3 2.4-2.3 3.4 0 0 11.3 1.8 20.9 1.8" fill="#2c3033"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f575-1f3ff.svg b/riot/emojione/svg/1f575-1f3ff.svg new file mode 100644 index 0000000..5fc5575 --- /dev/null +++ b/riot/emojione/svg/1f575-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11.5 41.2h41.6c0-22.4-3.2-27.2-20.8-27.2s-20.8 4.8-20.8 27.2" fill="#231f20"/><path d="m51.3 36.3c-.1.9-.3 1.7-.6 2.1-.4.8-1.4 1.3-1.4 1.3s.2-1.7.2-4c-1-13.9-1.8-10-17.3-10-15.4 0-24.2 2.7-24.2 12 0 6.8 6.4 9.9 6.4 9.9 1.6 6.7 6.2 10.4 13.4 13.7 2.2 1 6.6 1 8.8 0 8-3.6 12.7-7.8 13.8-15.9 3.2-.2 4.2-2.4 4.2-4.9.1-4.3-1.8-4.6-3.3-4.2" fill="#8a6859"/><path d="m39.5 51.5c0 2.7-3.6 4.1-7.2 4.1s-7.2-1.4-7.2-4.1c0 0 0-.7.7-.7 3.2 0 9.7 0 13 0 .7 0 .7.7.7.7" fill="#574137"/><path d="m41.9 35.3c4 0 5.6 1.4 5.6 2.9s0 3.5-5.3 3.5c-5.1 0-5.9-.6-5.9-2.8 0-1.5 1.6-3.6 5.6-3.6" fill="#f5f5f5"/><circle cx="41.5" cy="37.7" r="3.6" fill="#664e27"/><path d="m40.3 37.7c0 .7.5 1.2 1.2 1.2.7 0 1.2-.5 1.2-1.2 0-.7-.5-1.2-1.2-1.2-.7 0-1.2.5-1.2 1.2" fill="#231f20"/><path d="m47.5 38.1c0-5.6-11.2-5.6-11.2.8 1.6-4.8 9.6-4.8 11.2-.8" fill="#664e27"/><path d="m32.3 48.4c-3.3 0-5-2.4-3.3-2.4s5 0 6.7 0-.1 2.4-3.4 2.4" fill="#705041"/><path d="m19.5 34.2c-4.6 0-6.5 1.7-6.5 3.4 0 1.7 0 4.1 6.1 4.1 5.9 0 6.9-.7 6.9-3.2 0-1.8-1.9-4.3-6.5-4.3" fill="#f5f5f5"/><circle cx="20" cy="37.1" r="4.2" fill="#664e27"/><path d="m21.4 37.1c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.7 0 1.4.6 1.4 1.4" fill="#231f20"/><path d="m13 37.5c0-6.5 13-6.5 13 .9-1.9-5.5-11.1-5.5-13-.9" fill="#664e27"/><circle cx="19.3" cy="37.3" r="11.1" opacity=".4" fill="#f5f5f5"/><g fill="#b0bdc6"><path transform="matrix(.5-.866.866.5-35.6058 35.404)" d="m11.8 47.1h2.2v2.9h-2.2z"/><path d="m13.2 48c5.9 3.4 13.4 1.4 16.8-4.5 3.4-5.9 1.4-13.4-4.5-16.8-5.9-3.4-13.4-1.4-16.8 4.5s-1.4 13.4 4.5 16.8m-2.6-15.7c2.8-4.8 9-6.5 13.8-3.7 4.8 2.8 6.5 9 3.7 13.8-2.8 4.8-9 6.5-13.8 3.7-4.9-2.8-6.5-9-3.7-13.8"/></g><path transform="matrix(.5001-.866.866.5001-41.4944 35.398)" fill="#333" d="m4.7 51h10.3v5.2h-10.3z"/><path d="m4.3 56.7c-.4.7 5.4 4.1 5.8 3.4l.3-.5c.4-.7-5.4-4.1-5.8-3.4l-.3.5" fill="#b0bdc6"/><path d="m52.9 22.3c-9.1-10.1.1-23.8-7-19.5-5.2 3.2-10.2 4-13.9 4-3.6 0-8.7-.8-13.9-4-7.1-4.3 2.1 9.3-7 19.5-8.7 5.1-9.1 4.5-9.1 5.7 0 .7.4 6.8 30 6.8s30-6.2 30-6.8c0-1.2-.4-.6-9.1-5.7" fill="#62727a"/><path d="m32 24.1c9.6 0 20.9-1.8 20.9-1.8-1-1.1-1.7-2.2-2.3-3.4-4.6.7-10.7 1.1-18.6 1.1s-13.9-.4-18.6-1.1c-.6 1.2-1.3 2.4-2.3 3.4 0 0 11.3 1.8 20.9 1.8" fill="#2c3033"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f575.svg b/riot/emojione/svg/1f575.svg new file mode 100644 index 0000000..9612eda --- /dev/null +++ b/riot/emojione/svg/1f575.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m11.5 41.2h41.6c0-22.4-3.2-27.2-20.8-27.2s-20.8 4.8-20.8 27.2" fill="#ffb300"/><path d="m51.3 36.3c-.1.9-.3 1.7-.6 2.1-.4.8-1.4 1.3-1.4 1.3s.2-1.7.2-4c-1-13.9-1.8-10-17.3-10-15.4 0-24.2 2.7-24.2 12 0 6.8 6.4 9.9 6.4 9.9 1.6 6.7 6.2 10.4 13.4 13.7 2.2 1 6.6 1 8.8 0 8-3.6 12.7-7.8 13.8-15.9 3.2-.2 4.2-2.4 4.2-4.9.1-4.3-1.8-4.6-3.3-4.2" fill="#ffdd67"/><path d="m39.5 51.5c0 2.7-3.6 4.1-7.2 4.1s-7.2-1.4-7.2-4.1c0 0 0-.7.7-.7 3.2 0 9.7 0 13 0 .7 0 .7.7.7.7" fill="#937237"/><path d="m41.9 35.3c4 0 5.6 1.4 5.6 2.9s0 3.5-5.3 3.5c-5.1 0-5.9-.6-5.9-2.8 0-1.5 1.6-3.6 5.6-3.6" fill="#f5f5f5"/><circle cx="41.5" cy="37.7" r="3.6" fill="#664e27"/><path d="m40.3 37.7c0 .7.5 1.2 1.2 1.2.7 0 1.2-.5 1.2-1.2 0-.7-.5-1.2-1.2-1.2-.7 0-1.2.5-1.2 1.2" fill="#231f20"/><path d="m47.5 38.1c0-5.6-11.2-5.6-11.2.8 1.6-4.8 9.6-4.8 11.2-.8" fill="#664e27"/><path d="m32.3 48.4c-3.3 0-5-2.4-3.3-2.4s5 0 6.7 0-.1 2.4-3.4 2.4" fill="#eba352"/><path d="m19.5 34.2c-4.6 0-6.5 1.7-6.5 3.4 0 1.7 0 4.1 6.1 4.1 5.9 0 6.9-.7 6.9-3.2 0-1.8-1.9-4.3-6.5-4.3" fill="#f5f5f5"/><circle cx="20" cy="37.1" r="4.2" fill="#664e27"/><path d="m21.4 37.1c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.7 0 1.4.6 1.4 1.4" fill="#231f20"/><path d="m13 37.5c0-6.5 13-6.5 13 .9-1.9-5.5-11.1-5.5-13-.9" fill="#664e27"/><circle cx="19.3" cy="37.3" r="11.1" opacity=".4" fill="#f5f5f5"/><g fill="#b0bdc6"><path transform="matrix(.5-.866.866.5-35.6058 35.404)" d="m11.8 47.1h2.2v2.9h-2.2z"/><path d="m13.2 48c5.9 3.4 13.4 1.4 16.8-4.5 3.4-5.9 1.4-13.4-4.5-16.8-5.9-3.4-13.4-1.4-16.8 4.5s-1.4 13.4 4.5 16.8m-2.6-15.7c2.8-4.8 9-6.5 13.8-3.7 4.8 2.8 6.5 9 3.7 13.8-2.8 4.8-9 6.5-13.8 3.7-4.9-2.8-6.5-9-3.7-13.8"/></g><path transform="matrix(.5001-.866.866.5001-41.4944 35.398)" fill="#333" d="m4.7 51h10.3v5.2h-10.3z"/><path d="m4.3 56.7c-.4.7 5.4 4.1 5.8 3.4l.3-.5c.4-.7-5.4-4.1-5.8-3.4l-.3.5" fill="#b0bdc6"/><path d="m52.9 22.3c-9.1-10.1.1-23.8-7-19.5-5.2 3.2-10.2 4-13.9 4-3.6 0-8.7-.8-13.9-4-7.1-4.3 2.1 9.3-7 19.5-8.7 5.1-9.1 4.5-9.1 5.7 0 .7.4 6.8 30 6.8s30-6.2 30-6.8c0-1.2-.4-.6-9.1-5.7" fill="#62727a"/><path d="m32 24.1c9.6 0 20.9-1.8 20.9-1.8-1-1.1-1.7-2.2-2.3-3.4-4.6.7-10.7 1.1-18.6 1.1s-13.9-.4-18.6-1.1c-.6 1.2-1.3 2.4-2.3 3.4 0 0 11.3 1.8 20.9 1.8" fill="#2c3033"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f576.svg b/riot/emojione/svg/1f576.svg new file mode 100644 index 0000000..3f1075e --- /dev/null +++ b/riot/emojione/svg/1f576.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#222526"><path d="m3.6 32.6c4-13.4 8.3-19.6 10.1-19.6 1 0 1.3.7 1.7 2.2.9 3.7.1 4.9-.5 5.4-.7.7-1.8.1-1.8-3.8-.9 2.3-5.3 10.4-7.6 19l-1.9-3.2"/><path d="m60.4 32.6c-4-13.4-8.3-19.6-10.1-19.6-1 0-1.3.7-1.7 2.2-.9 3.7-.1 4.9.5 5.4.7.7 1.8.1 1.8-3.8.9 2.3 5.3 10.4 7.6 19l1.9-3.2"/></g><path d="m36.1 33.3c-2.4 1.2-5.9 1.2-8.2 0-2.5-1.3-5.6-2.2-9.3-2.5-3.6-.3-11.2-.3-15 1.1-.4.2-.9.4-1.3.6-.2.1-.3.1-.3.6v.6c0 1.1-.1.7.6 1.1 1.5.9 2.4 3.2 2.8 6.4.6 4.6 2.9 7.5 6.5 8.9 3.3 1.3 7.1 1.2 10.4-.1 1.8-.7 3.4-1.9 4.7-3.8 2.2-3.3 1.6-5.4 2.7-8.3 1-2.5 3.8-2.5 4.8 0 1.1 2.9.5 4.9 2.7 8.3 1.3 1.9 2.9 3.1 4.7 3.8 3.3 1.4 7 1.4 10.4.1 3.6-1.4 5.8-4.3 6.5-8.9.4-3.2 1.3-5.5 2.8-6.4.8-.5.6 0 .6-1.1v-.6c0-.4 0-.5-.3-.7-.4-.2-.8-.4-1.3-.6-3.8-1.4-11.4-1.4-15-1.1-3.9.4-7 1.3-9.5 2.6" fill="#363b3d"/><g fill="#5f6566"><path d="m26.2 35.1c-.8-.6-2.4-1.1-4.2-1.4-1-.2-2.2-.3-3.4-.4-2.7-.2-5.6-.2-7.5.2-1.2.2-2.1.5-2.4.9-1.4 1.6-1.1 6.1.3 9.3.4.8.9 1.6 1.4 2.2.9 1 2.1 1.6 3.5 2 .9.3 1.8.4 2.8.5 1.6.1 3.2-.1 4.7-.5.3-.1.5-.2.7-.3 4.3-1.9 5.4-9.1 4.7-11.7-.1-.3-.3-.6-.6-.8"/><path d="m55.7 34.5c-.1-.1-.1-.2-.2-.3-.6-.8-3.5-1.1-6.7-1.1-1.2 0-2.4.1-3.6.2-1.3.1-2.6.3-3.7.5-2.2.5-3.8 1.2-4 2.1-.4 1.6-.2 4.8 1 7.6.5 1.1 1.1 2.2 2 3 .7.7 1.5 1.2 2.5 1.4.2 0 .3.1.5.1 3 .7 6.5.5 9-1 .5-.3 1-.7 1.5-1.1 2.3-2.6 3.2-9 1.7-11.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f577.svg b/riot/emojione/svg/1f577.svg new file mode 100644 index 0000000..21bb089 --- /dev/null +++ b/riot/emojione/svg/1f577.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 33.7c0 0 4.9 2.3 16.2-2 2.6-1-6.8 10.5-8.2 12.4 1.9-1.8 16.7-13.6 10.9-15.1-3.6-.9-12.6 2.3-13.9 1.6l-5 3.1" fill="#75676d"/><path d="m39.1 33.7c0 0 6.3 1.1 15.6-2 2.7-.9-5.7 10.5-7.1 12.5 1.9-1.8 15.3-13.1 9.5-14.6-3.6-.9-11.8 1.4-13 .8l-5 3.3" fill="#5b4c52"/><path d="m19.4 30.6c-1.2.7-10.2-2.5-13.8-1.6-5.8 1.5 9 13.3 10.9 15.1-1.4-2-10.8-13.5-8.2-12.4 11.3 4.4 16.2 2 16.2 2l-5.1-3.1" fill="#75676d"/><path d="m20 30.3c-1.3.6-9.4-1.7-13-.8-5.8 1.5 7.6 12.8 9.5 14.6-1.4-2-9.8-13.4-7.1-12.5 9.2 3.1 15.6 2 15.6 2l-5-3.3" fill="#5b4c52"/><path opacity=".6" fill="#a6aeb0" d="m31 2h2v19.3h-2z"/><path d="m49.7 32.7c0 6.7-7.9 11.2-17.7 11.2s-17.7-4.5-17.7-11.2c0-12.1 17.7-16.2 17.7-16.2 0 0 17.7 4.1 17.7 16.2" fill="#5b4c52"/><g fill="#e24b4b"><path d="m40 22.8c0 0-3.6-.9-8-.9-4.4 0-8 .9-8 .9s3.6-3 8-3c4.4 0 8 3 8 3"/><path d="m40 25.3c0 0-3.6-1.2-8-1.2s-8 1.2-8 1.2 3.6-3.5 8-3.5c4.4 0 8 3.5 8 3.5"/></g><path d="m40.4 46.4c0 0 5.4 1.8 16.5-4.3 2.6-1.4-5.6 11.8-6.8 14 1.7-2.1 15.4-16.3 9.2-17.1-3.9-.5-12.8 4.1-14.1 3.6l-4.8 3.8" fill="#75676d"/><path d="m39.8 46.4c0 0 6.7.3 15.9-4.2 2.7-1.3-4.4 11.7-5.7 13.9 1.7-2.2 14.1-15.7 7.9-16.4-3.9-.5-12 3.1-13.4 2.6l-4.7 4.1" fill="#5b4c52"/><path d="m18.9 42.5c-1.4.5-10.3-4-14.2-3.5-6.2.8 7.5 15 9.2 17.2-1.2-2.2-9.4-15.4-6.8-14 11.1 6.1 16.5 4.3 16.5 4.3l-4.7-4" fill="#75676d"/><path d="m19.5 42.3c-1.4.5-9.5-3-13.4-2.6-6.2.8 6.1 14.3 7.9 16.4-1.2-2.2-8.3-15.2-5.7-13.9 9.1 4.5 15.9 4.2 15.9 4.2l-4.7-4.1" fill="#5b4c52"/><path d="m40.6 49.8c0 0 4.6 3.3 17 .8 2.9-.6-8.9 9.5-10.7 11.3 2.3-1.6 19.6-11 14-13.6-3.6-1.6-14.4.1-15.6-.8l-4.7 2.3" fill="#75676d"/><path d="m40.1 49.6c0 0 6.3 2.3 16.4.7 2.9-.4-7.7 9.8-9.6 11.6 2.3-1.6 18.1-10.7 12.5-13.3-3.6-1.5-13.4-.6-14.6-1.5l-4.7 2.5" fill="#5b4c52"/><path d="m18.7 47.5c-1.2.9-12-.8-15.6.8-5.6 2.7 11.7 12.1 14 13.7-1.8-1.8-13.6-11.9-10.7-11.3 12.4 2.4 17-.8 17-.8l-4.7-2.4" fill="#75676d"/><path d="m19.2 47.1c-1.2.9-11 0-14.6 1.6-5.7 2.6 10.2 11.7 12.5 13.3-1.8-1.8-12.5-12.1-9.6-11.6 10.1 1.5 16.4-.7 16.4-.7l-4.7-2.6" fill="#5b4c52"/><path d="m36.8 52.1c0 0 2.3 2.6 10.2 2.9 1.8.1-6.7 4.5-8.1 5.3 1.6-.6 13.4-3.9 10.4-6.3-1.9-1.5-8.1-1.9-8.7-2.6l-3.8.7" fill="#75676d"/><path d="m36.5 51.9c0 0 3.5 2.3 9.8 2.8 1.8.1-6.1 4.8-7.4 5.7 1.6-.6 12.5-3.9 9.4-6.3-1.9-1.5-7.4-2.2-8-2.9l-3.8.7" fill="#5b4c52"/><path d="m23.4 51.3c-.6.7-6.8 1.1-8.7 2.6-3.1 2.4 8.8 5.6 10.4 6.3-1.4-.8-9.9-5.3-8.1-5.3 7.9-.3 10.2-2.9 10.2-2.9l-3.8-.7" fill="#75676d"/><g fill="#5b4c52"><path d="m23.6 51c-.6.7-6 1.4-8 2.9-3.1 2.4 7.8 5.7 9.4 6.3-1.4-.8-9.3-5.5-7.4-5.7 6.3-.5 9.8-2.8 9.8-2.8l-3.8-.7"/><ellipse cx="32" cy="43.9" rx="13.9" ry="11.2"/></g><ellipse cx="36.9" cy="43.1" rx="4.3" ry="4.4" fill="#ffe62e"/><ellipse cx="36.9" cy="43.1" rx="2.9" ry="3" fill="#3f3438"/><ellipse cx="27.1" cy="43.1" rx="4.3" ry="4.4" fill="#ffe62e"/><path d="m30 43.1c0 1.7-1.3 3-2.9 3-1.6 0-2.9-1.3-2.9-3 0-1.7 1.3-3 2.9-3 1.6 0 2.9 1.3 2.9 3" fill="#3f3438"/><path d="m34.8 49.5c0-1-1.2-.2-2.8-.2s-2.8-.8-2.8.2c0 1 1.2 1.7 2.8 1.7s2.8-.8 2.8-1.7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f578.svg b/riot/emojione/svg/1f578.svg new file mode 100644 index 0000000..8a5a419 --- /dev/null +++ b/riot/emojione/svg/1f578.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m64 31.7h-5.6c-7.3-5-11.9-13.2-12.4-22.1l2.8-5-1.6-1-2.8 5c-7.8 4-17 4-24.8 0l-2.8-5-1.6 1 2.8 5c-.5 8.9-5.1 17.2-12.4 22.1h-5.6v1.9h5.6c7.3 4.9 11.9 13.2 12.4 22.1l-2.8 5 1.6 1 2.8-5c7.8-4 17-4 24.8 0l2.8 5 1.6-1-2.8-5c.5-8.9 5.1-17.2 12.4-22.1h5.6v-1.9m-8.7 0h-5.5c-4.7-3.2-7.8-8.6-8.1-14.4l2.8-4.9c1 7.6 4.9 14.5 10.8 19.3m-23.3-1l-2.3-4.1c.7.2 1.5.3 2.3.3.8 0 1.6-.1 2.3-.3l-2.3 4.1m3.9-3.1c.5 1.5 1.3 2.9 2.3 4.1h-4.6l2.3-4.1m-5.5 4.1h-4.6c1-1.2 1.8-2.6 2.3-4.1l2.3 4.1m0 1.9l-2.3 4.1c-.5-1.5-1.3-2.9-2.3-4.1h4.6m1.6.9l2.3 4.1c-1.5-.3-3.1-.3-4.6 0l2.3-4.1m1.6-.9h4.6c-1 1.2-1.8 2.6-2.3 4.1l-2.3-4.1m7.4-1.9c-2.1-1.5-3.5-3.9-3.7-6.6l2.9-5.1c.8 4.5 3.1 8.7 6.5 11.7h-5.7m-5.3-7.6c-2.3 1.2-5.1 1.2-7.4 0l-2.8-5.1c2.1.8 4.3 1.1 6.5 1.1 2.2 0 4.4-.4 6.5-1.1l-2.8 5.1m-9 .9c-.2 2.7-1.5 5.1-3.7 6.6h-5.7c3.4-3 5.7-7.1 6.5-11.7l2.9 5.1m-3.7 8.6c2.1 1.5 3.5 3.9 3.7 6.6l-2.9 5.1c-.8-4.5-3.1-8.7-6.5-11.7h5.7m5.3 7.5c2.3-1.2 5.1-1.2 7.4 0l2.9 5.1c-4.2-1.5-8.9-1.5-13.1 0l2.8-5.1m9-.9c.2-2.7 1.5-5.1 3.7-6.6h5.7c-3.4 3-5.7 7.1-6.5 11.7l-2.9-5.1m-5.3-26.7c3.7 0 7.4-.7 10.8-2.1l-2.8 4.9c-5.1 2.6-11.1 2.6-16.1 0l-2.8-4.9c3.5 1.4 7.2 2.1 10.9 2.1m-12.4-1.1l2.8 4.9c-.4 5.8-3.4 11.2-8.1 14.4h-5.6c5.9-4.8 9.8-11.7 10.9-19.3m-10.8 21.2h5.5c4.7 3.2 7.7 8.5 8 14.4l-2.8 4.9c-1-7.6-4.9-14.6-10.7-19.3m12.4 20.2l2.8-4.9c5.1-2.6 11.1-2.6 16.1 0l2.8 4.9c-7-2.8-14.8-2.8-21.7 0m23.2-.9l-2.7-4.9c.3-5.8 3.3-11.2 8.1-14.4h5.5c-5.9 4.7-9.8 11.7-10.9 19.3" fill="#979797"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f579.svg b/riot/emojione/svg/1f579.svg new file mode 100644 index 0000000..b2e6440 --- /dev/null +++ b/riot/emojione/svg/1f579.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.9 48.1c-.7-3-3.2-9-4.8-11.8-2.3-4.1-38-4.1-40.3 0-1.6 2.8-4.1 8.8-4.8 11.8-.4 1.6 1.1 9.3 1.1 9.3.5 2.5 2.9 4.6 5.5 4.6h36.8c2.5 0 5-2.1 5.4-4.6 0 0 1.5-7.5 1.1-9.3" fill="#242a33"/><path d="m56.1 46.4c-.5.8-1.2 1.5-2.2 2-.5.2-1.1.3-1.6.4l-1.6.1c-2.1.1-4.2.2-6.2.2-4.2.1-8.3.2-12.5.2-4.2 0-8.3 0-12.5-.2-2.1-.1-4.2-.1-6.2-.2l-1.6-.1c-.5 0-1.1-.2-1.6-.4-1-.4-1.8-1.2-2.2-2 .6.7 1.5 1.3 2.4 1.6.5.1.9.2 1.4.2l1.6-.1c2.1-.1 4.2-.2 6.2-.2 4.2-.1 8.3-.2 12.5-.2 4.2 0 8.3.1 12.5.2 2.1.1 4.2.1 6.2.2l1.6.1c.5 0 1 0 1.4-.2.9-.3 1.8-.9 2.4-1.6" fill="#a1acb3"/><path d="m7.8 53.4c.5-.8 1.2-1.5 2.2-2 .5-.2 1.1-.3 1.6-.4l1.6-.1c2.1-.1 4.2-.2 6.2-.2 4.2-.1 8.3-.2 12.5-.2 4.2 0 8.3 0 12.5.2 2.1.1 4.2.1 6.2.2l1.6.1c.5 0 1.1.2 1.6.4 1 .4 1.8 1.2 2.2 2-.6-.7-1.5-1.3-2.4-1.6-.5-.1-.9-.2-1.4-.2l-1.6.1c-2.1.1-4.2.2-6.2.2-4.2.1-8.3.2-12.5.2-4.2 0-8.3-.1-12.5-.2-2.1-.1-4.2-.1-6.2-.2l-1.6-.1c-.5 0-1 0-1.4.2-.9.3-1.7.9-2.4 1.6" fill="#6b7278"/><ellipse cx="36" cy="40.9" rx="11.9" ry="4.5" fill="#53585b"/><ellipse cx="36" cy="37.9" rx="10.6" ry="3.5" fill="#676e72"/><ellipse cx="36" cy="35.5" rx="9.4" ry="3.1" fill="#53585b"/><path d="m39.8 17.1h-7.6v16.9c0 1.9 7.6 1.9 7.6 0v-16.9" fill="#d2cfcf"/><ellipse cx="36" cy="12.4" rx="10.5" ry="10.4" fill="#ed4c5c"/><path d="m24.1 35.1h-10.1v2.2c1.8 2.2 8.4 2.2 10.2 0-.1 0-.1-2.2-.1-2.2" fill="#a5000c"/><ellipse cx="19" cy="35.1" rx="5.1" ry="2.2" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f57a-1f3fb.svg b/riot/emojione/svg/1f57a-1f3fb.svg new file mode 100644 index 0000000..fc47b48 --- /dev/null +++ b/riot/emojione/svg/1f57a-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m21.5 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/><path d="m38.7 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/></g><path d="m41.9 48.2c-.5-2.5-4.3-4.2-6.7-9.1 0 0-4.1-1.2-10-1.2 0 0-2.6 1.3-1.2 7.3.9 3.6-1 9.7-3.8 14.2 0 0 4.2 1.6 8.6 0 0 0-1.3-3.1.9-9.1.7-1.9-1-3.9.7-8.1 0 0 .8 1.8 6.9 7.3 0 0-1.2 5.6.2 10 0 0 .9.4 4.2.4 3.1 0 4.6-.4 4.6-.4s-2.8-3-4.4-11.3" fill="#c28fef"/><path d="m29.1 38.8c-2.1-1-3.4-1.1-4.2-.8-.3.3-.9 1-1.2 2.3 1.8 1 4.6.8 4.6.8.8-1.5.8-2.3.8-2.3" fill="#9450e0"/><g fill="#c28fef"><path d="m32.9 21.5c0 0 7.2-2.2 10.3-8.1 0 0 .5 2.3 4.2 4.5 0 0-5.4 4.1-9.2 5.8 0 0-.2 7.4 2.7 14.9 0 0-.3.9-7.1.9 0 0 3.5-6.3-.9-18"/><path d="m27.9 21.9c0 0-3.4-2-5-.7-8.9 7-9.4 8.7-8.4 14.2 0 0 1.8-1.3 5 .2 0 0-1.4-5.5 5-8.4 0 0 .2 4.2-2.1 11.2 0 0 1.4 1.9 5.5 1.9 0 0 4.3-9.1 0-18.4"/></g><path d="m44.1 12.4c0 0 3.9 2.1 3.9 5.4h-2.2c0 0-.2-1.8-1.2-2.5-1-.7-.5-2.9-.5-2.9" fill="#9450e0"/><path d="m44.1 12.4c0 0-1.7 1.4-2.8 2.7 0 0 .2 1.2 1.1 2.2l2.5-1.3-1.9 2.3c0 0 .7 1.1 2.1 1.6 0 0 1.8-1 2.9-2.1 0 0-3.2-1.8-3.9-5.4" fill="#ffc7ce"/><path d="m48 12.6c0 0 1.9-1.6 1.4-2.1-.5-.5-.9-.6-1.4 0-.2.2-.6.6-1.3 1.3-.7-.6-1 0-1.2.2-.3.3-.6 1.6-.6 1.6.5 1.4 1.4 2.5 2.7 3.3 1-.6 2.4-1.6 2.4-2 0-1-2-2.3-2-2.3" fill="#ffe1bd"/><path d="m45.5 13.2c0 0 .9-.2 1.3.2l-.2.1c0 0-.3-.2-1.1-.3" fill="#e6b796"/><path d="m14.4 36.5c0 0 1.6 1.1 5.7.2 0-.1-2.1-1.8-5.7-.2" fill="#9450e0"/><path d="m15.4 35.4c0 0-1.1 2.2.7 4.6.5.6 1.8 1.2 3.3.5 1.4-.6.2-1.1-.4-2.3.3-.4.7-.7.5-1.1-.3-.6-1.2-1-1.2-1s.5-.9-2.9-.7" fill="#ffe1bd"/><path d="m19.6 37.2c0-.1-.1-.1-.1-.2.1.3-.3.8-.5.6-.4-.4-.9-.8-.9-.8.6.7 1 1.5 1 1.5.3-.4.7-.7.5-1.1" fill="#e6b796"/><path d="m14 33.1c0 0 .5 2 .4 3.4 0 0 2.3-.9 5.7.2 0 0-.6-2 .1-3.5 0 0-.4-.9-2.1-1.1l-.7 2.9-.7-2.8c.1-.1-1.5-.6-2.7.9" fill="#ffc7ce"/><g fill="#e6b796"><path d="m48.6 15.6c-.3.3-.9.8-1.7-.1-.9-.9-.3-1.5.1-2 .2-.2.4-.4.4-.9 0-.4-.9-.8-.5-.5 0 0 .6.3-.2 1.4-.3.5-.7 1-.3 1.7.5.7 1.1 1.5 2.1.9.9-.7.6-1 .1-.5"/><path d="m32.9 21.2h-4.3l3.5 5.6z"/></g><path d="m35.9 22.1c-.5-.6-1.7-.3-1.7-.3l1.4-1.9c-1.1.8-2.9 1-2.9 1-1 2-.6 5.8-.6 5.8s-.8-3.9-3.5-5.8c0 0-1.4-.2-3.3.2l2.6 1.3-2 .8c0 0 1.3.2 2.9 1.1 0 0 1.6 6.4-.4 14.4l5.5.3c0 0 2.9-5.6-.2-15 1.1-1.2 2.2-1.9 2.2-1.9" fill="#ffc7ce"/><path d="m33.8 39.5c0 0 5.7-2.1 7.1-.9 0 0-.1.9-7.1.9" fill="#9450e0"/><path d="m32.1 27.2c0 0 1.3 4.7-.8 10.5 0 0 2.9-5.2.8-10.5" fill="#c28fef"/><path d="m28.6 7.9c-7.9 0-6.9-2-6.9 7.9 0 4.7 4.2 6.1 8.6 6 4.4-.1 6.9-1.1 6.9-5.8 0-7.8-2.1-8.1-8.6-8.1" fill="#ffe1bd"/><path d="m25 21.3c-.1.7-.1 2-3 1.6 0 0 .4-4.8-1.8-7.5-2.2-2.7-2.6-5.1-.9-7 0 0-2-4.4 7.1-5.6 4.6-.6 8.7 1.1 12.9-.8 0 0 3.8 7.5-3.4 8.4-7.2.9-7.2-1.6-11.4-1 0 0 .5 4.2 1.7 7.1 0 0 .2.8-.8 1.3 0 0-.9-3.9-2.3-4.8-1.4-.9-1.4 1.3-.7 2.5.7 1.2 1.2 1 1.2 1s1.7 2.5 1.4 4.8" fill="#594640"/><g fill="#664e27"><circle cx="27.9" cy="13.4" r="1.5"/><circle cx="35" cy="13.4" r="1.5"/><path d="m33.7 17.8c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f57a-1f3fc.svg b/riot/emojione/svg/1f57a-1f3fc.svg new file mode 100644 index 0000000..289dcb6 --- /dev/null +++ b/riot/emojione/svg/1f57a-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m21.5 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/><path d="m38.7 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/></g><path d="m41.9 48.2c-.5-2.5-4.3-4.2-6.7-9.1 0 0-4.1-1.2-10-1.2 0 0-2.6 1.3-1.2 7.3.9 3.6-1 9.7-3.8 14.2 0 0 4.2 1.6 8.6 0 0 0-1.3-3.1.9-9.1.7-1.9-1-3.9.7-8.1 0 0 .8 1.8 6.9 7.3 0 0-1.2 5.6.2 10 0 0 .9.4 4.2.4 3.1 0 4.6-.4 4.6-.4s-2.8-3-4.4-11.3" fill="#c28fef"/><path d="m29.1 38.8c-2.1-1-3.4-1.1-4.2-.8-.3.3-.9 1-1.2 2.3 1.8 1 4.6.8 4.6.8.8-1.5.8-2.3.8-2.3" fill="#9450e0"/><g fill="#c28fef"><path d="m32.9 21.5c0 0 7.2-2.2 10.3-8.1 0 0 .5 2.3 4.2 4.5 0 0-5.4 4.1-9.2 5.8 0 0-.2 7.4 2.7 14.9 0 0-.3.9-7.1.9 0 0 3.5-6.3-.9-18"/><path d="m27.9 21.9c0 0-3.4-2-5-.7-8.9 7-9.4 8.7-8.4 14.2 0 0 1.8-1.3 5 .2 0 0-1.4-5.5 5-8.4 0 0 .2 4.2-2.1 11.2 0 0 1.4 1.9 5.5 1.9 0 0 4.3-9.1 0-18.4"/></g><path d="m44.1 12.4c0 0 3.9 2.1 3.9 5.4h-2.2c0 0-.2-1.8-1.2-2.5-1-.7-.5-2.9-.5-2.9" fill="#9450e0"/><path d="m44.1 12.4c0 0-1.7 1.4-2.8 2.7 0 0 .2 1.2 1.1 2.2l2.5-1.3-1.9 2.3c0 0 .7 1.1 2.1 1.6 0 0 1.8-1 2.9-2.1 0 0-3.2-1.8-3.9-5.4" fill="#ffc7ce"/><path d="m48 12.6c0 0 1.9-1.6 1.4-2.1-.5-.5-.9-.6-1.4 0-.2.2-.6.6-1.3 1.3-.7-.6-1 0-1.2.2-.3.3-.6 1.6-.6 1.6.5 1.4 1.4 2.5 2.7 3.3 1-.6 2.4-1.6 2.4-2 0-1-2-2.3-2-2.3" fill="#fed0ac"/><path d="m45.5 13.2c0 0 .9-.2 1.3.2l-.2.1c0 0-.3-.2-1.1-.3" fill="#e0a372"/><path d="m14.4 36.5c0 0 1.6 1.1 5.7.2 0-.1-2.1-1.8-5.7-.2" fill="#9450e0"/><path d="m15.4 35.4c0 0-1.1 2.2.7 4.6.5.6 1.8 1.2 3.3.5 1.4-.6.2-1.1-.4-2.3.3-.4.7-.7.5-1.1-.3-.6-1.2-1-1.2-1s.6-.9-2.9-.7" fill="#fed0ac"/><path d="m19.6 37.2c0-.1-.1-.1-.1-.2.1.3-.3.8-.5.6-.4-.4-.9-.8-.9-.8.6.7 1 1.5 1 1.5.3-.4.7-.7.5-1.1" fill="#e0a372"/><path d="m14 33.1c0 0 .5 2 .4 3.4 0 0 2.3-.9 5.7.2 0 0-.6-2 .1-3.5 0 0-.4-.9-2.1-1.1l-.7 2.9-.7-2.8c.1-.1-1.5-.6-2.7.9" fill="#ffc7ce"/><g fill="#e0a372"><path d="m48.6 15.6c-.3.3-.9.8-1.7-.1-.9-.9-.3-1.5.1-2 .2-.2.4-.4.4-.9 0-.4-.9-.8-.5-.5 0 0 .6.3-.2 1.4-.3.5-.7 1-.3 1.7.5.7 1.1 1.5 2.1.9.9-.7.6-1 .1-.5"/><path d="m32.9 21.2h-4.3l3.5 5.6z"/></g><path d="m35.9 22.1c-.5-.6-1.7-.3-1.7-.3l1.4-1.9c-1.1.8-2.9 1-2.9 1-1 2-.6 5.8-.6 5.8s-.8-3.9-3.5-5.8c0 0-1.4-.2-3.3.2l2.6 1.3-2 .8c0 0 1.3.2 2.9 1.1 0 0 1.6 6.4-.4 14.4l5.5.3c0 0 2.9-5.6-.2-15 1.1-1.2 2.2-1.9 2.2-1.9" fill="#ffc7ce"/><path d="m33.8 39.5c0 0 5.7-2.1 7.1-.9 0 0-.1.9-7.1.9" fill="#9450e0"/><path d="m32.1 27.2c0 0 1.3 4.7-.8 10.5 0 0 2.9-5.2.8-10.5" fill="#c28fef"/><path d="m28.6 7.9c-7.9 0-6.9-2-6.9 7.9 0 4.7 4.2 6.1 8.6 6 4.4-.1 6.9-1.1 6.9-5.8 0-7.8-2.1-8.1-8.6-8.1" fill="#fed0ac"/><path d="m25 21.3c-.1.7-.1 2-3 1.6 0 0 .4-4.8-1.8-7.5-2.2-2.7-2.6-5.1-.9-7 0 0-2-4.4 7.1-5.6 4.6-.6 8.7 1.1 12.9-.8 0 0 3.8 7.5-3.4 8.4-7.2.9-7.2-1.6-11.4-1 0 0 .5 4.2 1.7 7.1 0 0 .2.8-.8 1.3 0 0-.9-3.9-2.3-4.8-1.4-.9-1.4 1.3-.7 2.5.7 1.2 1.2 1 1.2 1s1.7 2.5 1.4 4.8" fill="#dbb471"/><g fill="#664e27"><circle cx="27.9" cy="13.4" r="1.5"/><circle cx="35" cy="13.4" r="1.5"/><path d="m33.7 17.8c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f57a-1f3fd.svg b/riot/emojione/svg/1f57a-1f3fd.svg new file mode 100644 index 0000000..0356c2a --- /dev/null +++ b/riot/emojione/svg/1f57a-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m21.5 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/><path d="m38.7 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/></g><path d="m41.9 48.2c-.5-2.5-4.3-4.2-6.7-9.1 0 0-4.1-1.2-10-1.2 0 0-2.6 1.3-1.2 7.3.9 3.6-1 9.7-3.8 14.2 0 0 4.2 1.6 8.6 0 0 0-1.3-3.1.9-9.1.7-1.9-1-3.9.7-8.1 0 0 .8 1.8 6.9 7.3 0 0-1.2 5.6.2 10 0 0 .9.4 4.2.4 3.1 0 4.6-.4 4.6-.4s-2.8-3-4.4-11.3" fill="#c28fef"/><path d="m29.1 38.8c-2.1-1-3.4-1.1-4.2-.8-.3.3-.9 1-1.2 2.3 1.8 1 4.6.8 4.6.8.8-1.5.8-2.3.8-2.3" fill="#9450e0"/><g fill="#c28fef"><path d="m32.9 21.5c0 0 7.2-2.2 10.3-8.1 0 0 .5 2.3 4.2 4.5 0 0-5.4 4.1-9.2 5.8 0 0-.2 7.4 2.7 14.9 0 0-.3.9-7.1.9 0 0 3.5-6.3-.9-18"/><path d="m27.9 21.9c0 0-3.4-2-5-.7-8.9 7-9.4 8.7-8.4 14.2 0 0 1.8-1.3 5 .2 0 0-1.4-5.5 5-8.4 0 0 .2 4.2-2.1 11.2 0 0 1.4 1.9 5.5 1.9 0 0 4.3-9.1 0-18.4"/></g><path d="m44.1 12.4c0 0 3.9 2.1 3.9 5.4h-2.2c0 0-.2-1.8-1.2-2.5-1-.7-.5-2.9-.5-2.9" fill="#9450e0"/><path d="m44.1 12.4c0 0-1.7 1.4-2.8 2.7 0 0 .2 1.2 1.1 2.2l2.5-1.3-1.9 2.3c0 0 .7 1.1 2.1 1.6 0 0 1.8-1 2.9-2.1 0 0-3.2-1.8-3.9-5.4" fill="#ffc7ce"/><path d="m48 12.6c0 0 1.9-1.6 1.4-2.1-.5-.5-.9-.6-1.4 0-.2.2-.6.6-1.3 1.3-.7-.6-1 0-1.2.2-.3.3-.6 1.6-.6 1.6.5 1.4 1.4 2.5 2.7 3.3 1-.6 2.4-1.6 2.4-2 0-1-2-2.3-2-2.3" fill="#d6a57c"/><path d="m45.5 13.2c0 0 .9-.2 1.3.2l-.2.1c0 0-.3-.2-1.1-.3" fill="#b58360"/><path d="m14.4 36.5c0 0 1.6 1.1 5.7.2 0-.1-2.1-1.8-5.7-.2" fill="#9450e0"/><path d="m15.4 35.4c0 0-1.1 2.2.7 4.6.5.6 1.8 1.2 3.3.5 1.4-.6.2-1.1-.4-2.3.3-.4.7-.7.5-1.1-.3-.6-1.2-1-1.2-1s.5-.9-2.9-.7" fill="#d6a57c"/><path d="m19.6 37.2c0-.1-.1-.1-.1-.2.1.3-.3.8-.5.6-.4-.4-.9-.8-.9-.8.6.7 1 1.5 1 1.5.3-.4.7-.7.5-1.1" fill="#b58360"/><path d="m14 33.1c0 0 .5 2 .4 3.4 0 0 2.3-.9 5.7.2 0 0-.6-2 .1-3.5 0 0-.4-.9-2.1-1.1l-.7 2.9-.7-2.8c.1-.1-1.5-.6-2.7.9" fill="#ffc7ce"/><g fill="#b58360"><path d="m48.6 15.6c-.3.3-.9.8-1.7-.1-.9-.9-.3-1.5.1-2 .2-.2.4-.4.4-.9 0-.4-.9-.8-.5-.5 0 0 .6.3-.2 1.4-.3.5-.7 1-.3 1.7.5.7 1.1 1.5 2.1.9.9-.7.6-1 .1-.5"/><path d="m32.9 21.2h-4.3l3.5 5.6z"/></g><path d="m35.9 22.1c-.5-.6-1.7-.3-1.7-.3l1.4-1.9c-1.1.8-2.9 1-2.9 1-1 2-.6 5.8-.6 5.8s-.8-3.9-3.5-5.8c0 0-1.4-.2-3.3.2l2.6 1.3-2 .8c0 0 1.3.2 2.9 1.1 0 0 1.6 6.4-.4 14.4l5.5.3c0 0 2.9-5.6-.2-15 1.1-1.2 2.2-1.9 2.2-1.9" fill="#ffc7ce"/><path d="m33.8 39.5c0 0 5.7-2.1 7.1-.9 0 0-.1.9-7.1.9" fill="#9450e0"/><path d="m32.1 27.2c0 0 1.3 4.7-.8 10.5 0 0 2.9-5.2.8-10.5" fill="#c28fef"/><path d="m28.6 7.9c-7.9 0-6.9-2-6.9 7.9 0 4.7 4.2 6.1 8.6 6 4.4-.1 6.9-1.1 6.9-5.8 0-7.8-2.1-8.1-8.6-8.1" fill="#d6a57c"/><path d="m25 21.3c-.1.7-.1 2-3 1.6 0 0 .4-4.8-1.8-7.5-2.2-2.7-2.6-5.1-.9-7 0 0-2-4.4 7.1-5.6 4.6-.6 8.7 1.1 12.9-.8 0 0 3.8 7.5-3.4 8.4-7.2.9-7.2-1.6-11.4-1 0 0 .5 4.2 1.7 7.1 0 0 .2.8-.8 1.3 0 0-.9-3.9-2.3-4.8-1.4-.9-1.4 1.3-.7 2.5.7 1.2 1.2 1 1.2 1s1.7 2.5 1.4 4.8" fill="#594640"/><g fill="#664e27"><circle cx="27.9" cy="13.4" r="1.5"/><circle cx="35" cy="13.4" r="1.5"/><path d="m33.7 17.8c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f57a-1f3fe.svg b/riot/emojione/svg/1f57a-1f3fe.svg new file mode 100644 index 0000000..70bb51f --- /dev/null +++ b/riot/emojione/svg/1f57a-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m21.5 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/><path d="m38.7 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/></g><path d="m41.9 48.2c-.5-2.5-4.3-4.2-6.7-9.1 0 0-4.1-1.2-10-1.2 0 0-2.6 1.3-1.2 7.3.9 3.6-1 9.7-3.8 14.2 0 0 4.2 1.6 8.6 0 0 0-1.3-3.1.9-9.1.7-1.9-1-3.9.7-8.1 0 0 .8 1.8 6.9 7.3 0 0-1.2 5.6.2 10 0 0 .9.4 4.2.4 3.1 0 4.6-.4 4.6-.4s-2.8-3-4.4-11.3" fill="#c28fef"/><path d="m29.1 38.8c-2.1-1-3.4-1.1-4.2-.8-.3.3-.9 1-1.2 2.3 1.8 1 4.6.8 4.6.8.8-1.5.8-2.3.8-2.3" fill="#9450e0"/><g fill="#c28fef"><path d="m32.9 21.5c0 0 7.2-2.2 10.3-8.1 0 0 .5 2.3 4.2 4.5 0 0-5.4 4.1-9.2 5.8 0 0-.2 7.4 2.7 14.9 0 0-.3.9-7.1.9 0 0 3.5-6.3-.9-18"/><path d="m27.9 21.9c0 0-3.4-2-5-.7-8.9 7-9.4 8.7-8.4 14.2 0 0 1.8-1.3 5 .2 0 0-1.4-5.5 5-8.4 0 0 .2 4.2-2.1 11.2 0 0 1.4 1.9 5.5 1.9 0 0 4.3-9.1 0-18.4"/></g><path d="m44.1 12.4c0 0 3.9 2.1 3.9 5.4h-2.2c0 0-.2-1.8-1.2-2.5-1-.7-.5-2.9-.5-2.9" fill="#9450e0"/><path d="m44.1 12.4c0 0-1.7 1.4-2.8 2.7 0 0 .2 1.2 1.1 2.2l2.5-1.3-1.9 2.3c0 0 .7 1.1 2.1 1.6 0 0 1.8-1 2.9-2.1 0 0-3.2-1.8-3.9-5.4" fill="#ffc7ce"/><path d="m48 12.6c0 0 1.9-1.6 1.4-2.1-.5-.5-.9-.6-1.4 0-.2.2-.6.6-1.3 1.3-.7-.6-1 0-1.2.2-.3.3-.6 1.6-.6 1.6.5 1.4 1.4 2.5 2.7 3.3 1-.6 2.4-1.6 2.4-2 0-1-2-2.3-2-2.3" fill="#b47d56"/><path d="m45.5 13.2c0 0 .9-.2 1.3.2l-.2.1c0 0-.3-.2-1.1-.3" fill="#935e3e"/><path d="m14.4 36.5c0 0 1.6 1.1 5.7.2 0-.1-2.1-1.8-5.7-.2" fill="#9450e0"/><path d="m15.4 35.4c0 0-1.1 2.2.7 4.6.5.6 1.8 1.2 3.3.5 1.4-.6.2-1.1-.4-2.3.3-.4.7-.7.5-1.1-.3-.6-1.2-1-1.2-1s.6-.9-2.9-.7" fill="#b47d56"/><path d="m19.6 37.2c0-.1-.1-.1-.1-.2.1.3-.3.8-.5.6-.4-.4-.9-.8-.9-.8.6.7 1 1.5 1 1.5.3-.4.7-.7.5-1.1" fill="#935e3e"/><path d="m14 33.1c0 0 .5 2 .4 3.4 0 0 2.3-.9 5.7.2 0 0-.6-2 .1-3.5 0 0-.4-.9-2.1-1.1l-.7 2.9-.7-2.8c.1-.1-1.5-.6-2.7.9" fill="#ffc7ce"/><g fill="#935e3e"><path d="m48.6 15.6c-.3.3-.9.8-1.7-.1-.9-.9-.3-1.5.1-2 .2-.2.4-.4.4-.9 0-.4-.9-.8-.5-.5 0 0 .6.3-.2 1.4-.3.5-.7 1-.3 1.7.5.7 1.1 1.5 2.1.9.9-.7.6-1 .1-.5"/><path d="m32.9 21.2h-4.3l3.5 5.6z"/></g><path d="m35.9 22.1c-.5-.6-1.7-.3-1.7-.3l1.4-1.9c-1.1.8-2.9 1-2.9 1-1 2-.6 5.8-.6 5.8s-.8-3.9-3.5-5.8c0 0-1.4-.2-3.3.2l2.6 1.3-2 .8c0 0 1.3.2 2.9 1.1 0 0 1.6 6.4-.4 14.4l5.5.3c0 0 2.9-5.6-.2-15 1.1-1.2 2.2-1.9 2.2-1.9" fill="#ffc7ce"/><path d="m33.8 39.5c0 0 5.7-2.1 7.1-.9 0 0-.1.9-7.1.9" fill="#9450e0"/><path d="m32.1 27.2c0 0 1.3 4.7-.8 10.5 0 0 2.9-5.2.8-10.5" fill="#c28fef"/><path d="m28.6 7.9c-7.9 0-6.9-2-6.9 7.9 0 4.7 4.2 6.1 8.6 6 4.4-.1 6.9-1.1 6.9-5.8 0-7.8-2.1-8.1-8.6-8.1" fill="#b47d56"/><path d="m25 21.3c-.1.7-.1 2-3 1.6 0 0 .4-4.8-1.8-7.5-2.2-2.7-2.6-5.1-.9-7 0 0-2-4.4 7.1-5.6 4.6-.6 8.7 1.1 12.9-.8 0 0 3.8 7.5-3.4 8.4-7.2.9-7.2-1.6-11.4-1 0 0 .5 4.2 1.7 7.1 0 0 .2.8-.8 1.3 0 0-.9-3.9-2.3-4.8-1.4-.9-1.4 1.3-.7 2.5.7 1.2 1.2 1 1.2 1s1.7 2.5 1.4 4.8" fill="#231f20"/><g fill="#664e27"><circle cx="27.9" cy="13.4" r="1.5"/><circle cx="35" cy="13.4" r="1.5"/><path d="m33.7 17.8c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f57a-1f3ff.svg b/riot/emojione/svg/1f57a-1f3ff.svg new file mode 100644 index 0000000..61633d2 --- /dev/null +++ b/riot/emojione/svg/1f57a-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m21.5 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/><path d="m38.7 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/></g><path d="m41.9 48.2c-.5-2.5-4.3-4.2-6.7-9.1 0 0-4.1-1.2-10-1.2 0 0-2.6 1.3-1.2 7.3.9 3.6-1 9.7-3.8 14.2 0 0 4.2 1.6 8.6 0 0 0-1.3-3.1.9-9.1.7-1.9-1-3.9.7-8.1 0 0 .8 1.8 6.9 7.3 0 0-1.2 5.6.2 10 0 0 .9.4 4.2.4 3.1 0 4.6-.4 4.6-.4s-2.8-3-4.4-11.3" fill="#c28fef"/><path d="m29.1 38.8c-2.1-1-3.4-1.1-4.2-.8-.3.3-.9 1-1.2 2.3 1.8 1 4.6.8 4.6.8.8-1.5.8-2.3.8-2.3" fill="#9450e0"/><g fill="#c28fef"><path d="m32.9 21.5c0 0 7.2-2.2 10.3-8.1 0 0 .5 2.3 4.2 4.5 0 0-5.4 4.1-9.2 5.8 0 0-.2 7.4 2.7 14.9 0 0-.3.9-7.1.9 0 0 3.5-6.3-.9-18"/><path d="m27.9 21.9c0 0-3.4-2-5-.7-8.9 7-9.4 8.7-8.4 14.2 0 0 1.8-1.3 5 .2 0 0-1.4-5.5 5-8.4 0 0 .2 4.2-2.1 11.2 0 0 1.4 1.9 5.5 1.9 0 0 4.3-9.1 0-18.4"/></g><path d="m44.1 12.4c0 0 3.9 2.1 3.9 5.4h-2.2c0 0-.2-1.8-1.2-2.5-1-.7-.5-2.9-.5-2.9" fill="#9450e0"/><path d="m44.1 12.4c0 0-1.7 1.4-2.8 2.7 0 0 .2 1.2 1.1 2.2l2.5-1.3-1.9 2.3c0 0 .7 1.1 2.1 1.6 0 0 1.8-1 2.9-2.1 0 0-3.2-1.8-3.9-5.4" fill="#ffc7ce"/><path d="m48 12.6c0 0 1.9-1.6 1.4-2.1-.5-.5-.9-.6-1.4 0-.2.2-.6.6-1.3 1.3-.7-.6-1 0-1.2.2-.3.3-.6 1.6-.6 1.6.5 1.4 1.4 2.5 2.7 3.3 1-.6 2.4-1.6 2.4-2 0-1-2-2.3-2-2.3" fill="#8a6859"/><path d="m45.5 13.2c0 0 .9-.2 1.3.2l-.2.1c0 0-.3-.2-1.1-.3" fill="#705041"/><path d="m14.4 36.5c0 0 1.6 1.1 5.7.2 0-.1-2.1-1.8-5.7-.2" fill="#9450e0"/><path d="m15.4 35.4c0 0-1.1 2.2.7 4.6.5.6 1.8 1.2 3.3.5 1.4-.6.2-1.1-.4-2.3.3-.4.7-.7.5-1.1-.3-.6-1.2-1-1.2-1s.6-.9-2.9-.7" fill="#8a6859"/><path d="m19.6 37.2c0-.1-.1-.1-.1-.2.1.3-.3.8-.5.6-.4-.4-.9-.8-.9-.8.6.7 1 1.5 1 1.5.3-.4.7-.7.5-1.1" fill="#705041"/><path d="m14 33.1c0 0 .5 2 .4 3.4 0 0 2.3-.9 5.7.2 0 0-.6-2 .1-3.5 0 0-.4-.9-2.1-1.1l-.7 2.9-.7-2.8c.1-.1-1.5-.6-2.7.9" fill="#ffc7ce"/><g fill="#705041"><path d="m48.6 15.6c-.3.3-.9.8-1.7-.1-.9-.9-.3-1.5.1-2 .2-.2.4-.4.4-.9 0-.4-.9-.8-.5-.5 0 0 .6.3-.2 1.4-.3.5-.7 1-.3 1.7.5.7 1.1 1.5 2.1.9.9-.7.6-1 .1-.5"/><path d="m32.9 21.2h-4.3l3.5 5.6z"/></g><path d="m35.9 22.1c-.5-.6-1.7-.3-1.7-.3l1.4-1.9c-1.1.8-2.9 1-2.9 1-1 2-.6 5.8-.6 5.8s-.8-3.9-3.5-5.8c0 0-1.4-.2-3.3.2l2.6 1.3-2 .8c0 0 1.3.2 2.9 1.1 0 0 1.6 6.4-.4 14.4l5.5.3c0 0 2.9-5.6-.2-15 1.1-1.2 2.2-1.9 2.2-1.9" fill="#ffc7ce"/><path d="m33.8 39.5c0 0 5.7-2.1 7.1-.9 0 0-.1.9-7.1.9" fill="#9450e0"/><path d="m32.1 27.2c0 0 1.3 4.7-.8 10.5 0 0 2.9-5.2.8-10.5" fill="#c28fef"/><path d="m28.6 7.9c-7.9 0-6.9-2-6.9 7.9 0 4.7 4.2 6.1 8.6 6 4.4-.1 6.9-1.1 6.9-5.8 0-7.8-2.1-8.1-8.6-8.1" fill="#8a6859"/><path d="m25 21.3c-.1.7-.1 2-3 1.6 0 0 .4-4.8-1.8-7.5-2.2-2.7-2.6-5.1-.9-7 0 0-2-4.4 7.1-5.6 4.6-.6 8.7 1.1 12.9-.8 0 0 3.8 7.5-3.4 8.4-7.2.9-7.2-1.6-11.4-1 0 0 .5 4.2 1.7 7.1 0 0 .2.8-.8 1.3 0 0-.9-3.9-2.3-4.8-1.4-.9-1.4 1.3-.7 2.5.7 1.2 1.2 1 1.2 1s1.7 2.5 1.4 4.8" fill="#231f20"/><g fill="#574137"><circle cx="27.9" cy="13.4" r="1.5"/><circle cx="35" cy="13.4" r="1.5"/><path d="m33.7 17.8c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f57a.svg b/riot/emojione/svg/1f57a.svg new file mode 100644 index 0000000..11d2247 --- /dev/null +++ b/riot/emojione/svg/1f57a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m21.5 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/><path d="m38.7 58.9c0 0-1 1.5 0 3.1h2.9v-1.1c0 0 .5 1.1 4.9 1.1 1.5 0 1.7-1.5.1-1.6-1.6-.1-1.4-1.2-2.9-3.1l-5 1.6"/></g><path d="m41.9 48.2c-.5-2.5-4.3-4.2-6.7-9.1 0 0-4.1-1.2-10-1.2 0 0-2.6 1.3-1.2 7.3.9 3.6-1 9.7-3.8 14.2 0 0 4.2 1.6 8.6 0 0 0-1.3-3.1.9-9.1.7-1.9-1-3.9.7-8.1 0 0 .8 1.8 6.9 7.3 0 0-1.2 5.6.2 10 0 0 .9.4 4.2.4 3.1 0 4.6-.4 4.6-.4s-2.8-3-4.4-11.3" fill="#c28fef"/><path d="m29.1 38.8c-2.1-1-3.4-1.1-4.2-.8-.3.3-.9 1-1.2 2.3 1.8 1 4.6.8 4.6.8.8-1.5.8-2.3.8-2.3" fill="#9450e0"/><g fill="#c28fef"><path d="m32.9 21.5c0 0 7.2-2.2 10.3-8.1 0 0 .5 2.3 4.2 4.5 0 0-5.4 4.1-9.2 5.8 0 0-.2 7.4 2.7 14.9 0 0-.3.9-7.1.9 0 0 3.5-6.3-.9-18"/><path d="m27.9 21.9c0 0-3.4-2-5-.7-8.9 7-9.4 8.7-8.4 14.2 0 0 1.8-1.3 5 .2 0 0-1.4-5.5 5-8.4 0 0 .2 4.2-2.1 11.2 0 0 1.4 1.9 5.5 1.9 0 0 4.3-9.1 0-18.4"/></g><path d="m44.1 12.4c0 0 3.9 2.1 3.9 5.4h-2.2c0 0-.2-1.8-1.2-2.5-1-.7-.5-2.9-.5-2.9" fill="#9450e0"/><path d="m44.1 12.4c0 0-1.7 1.4-2.8 2.7 0 0 .2 1.2 1.1 2.2l2.5-1.3-1.9 2.3c0 0 .7 1.1 2.1 1.6 0 0 1.8-1 2.9-2.1 0 0-3.2-1.8-3.9-5.4" fill="#ffc7ce"/><path d="m48 12.6c0 0 1.9-1.6 1.4-2.1-.5-.5-.9-.6-1.4 0-.2.2-.6.6-1.3 1.3-.7-.6-1 0-1.2.2-.3.3-.6 1.6-.6 1.6.5 1.3 1.4 2.5 2.7 3.3 1-.6 2.4-1.6 2.4-2 0-1-2-2.3-2-2.3" fill="#ffdd67"/><path d="m45.5 13.2c0 0 .9-.2 1.3.2l-.2.1c0 0-.3-.2-1.1-.3" fill="#eba352"/><path d="m14.4 36.5c0 0 1.6 1.1 5.7.2 0-.1-2.1-1.8-5.7-.2" fill="#9450e0"/><path d="m15.4 35.4c0 0-1.1 2.2.7 4.6.5.6 1.8 1.2 3.3.5 1.4-.6.2-1.1-.4-2.3.3-.4.7-.7.5-1.1-.3-.6-1.2-1-1.2-1s.6-.9-2.9-.7" fill="#ffdd67"/><path d="m19.6 37.2c0-.1-.1-.1-.1-.2.1.3-.3.8-.5.6-.4-.4-.9-.8-.9-.8.6.7 1 1.5 1 1.5.3-.4.7-.7.5-1.1" fill="#eba352"/><path d="m14 33.1c0 0 .5 2 .4 3.4 0 0 2.3-.9 5.7.2 0 0-.6-2 .1-3.5 0 0-.4-.9-2.1-1.1l-.7 2.8-.7-2.8c.1 0-1.5-.5-2.7 1" fill="#ffc7ce"/><g fill="#eba352"><path d="m48.6 15.6c-.3.3-.9.8-1.7-.1-.9-.9-.3-1.5.1-2 .2-.2.4-.4.4-.9 0-.4-.9-.8-.5-.5 0 0 .6.3-.2 1.4-.3.5-.7 1-.3 1.7.5.7 1.1 1.5 2.1.9.9-.7.6-1 .1-.5"/><path d="m32.9 21.2h-4.3l3.5 5.6z"/></g><path d="m35.9 22.1c-.5-.6-1.7-.3-1.7-.3l1.4-1.9c-1.1.8-2.9 1-2.9 1-1 2-.6 5.8-.6 5.8s-.8-3.9-3.5-5.8c0 0-1.4-.2-3.3.2l2.6 1.3-2 .8c0 0 1.3.2 2.9 1.1 0 0 1.6 6.4-.4 14.4l5.5.3c0 0 2.9-5.6-.2-15 1.1-1.2 2.2-1.9 2.2-1.9" fill="#ffc7ce"/><path d="m33.8 39.5c0 0 5.7-2.1 7.1-.9 0 0-.1.9-7.1.9" fill="#9450e0"/><path d="m32.1 27.2c0 0 1.3 4.7-.8 10.5 0 0 2.9-5.2.8-10.5" fill="#c28fef"/><path d="m28.6 7.9c-7.9 0-6.9-2-6.9 7.9 0 4.7 4.2 6.1 8.6 6 4.4-.1 6.9-1.1 6.9-5.8 0-7.8-2.1-8.1-8.6-8.1" fill="#ffdd67"/><path d="m25 21.3c-.1.7-.1 2-3 1.6 0 0 .4-4.8-1.8-7.5-2.2-2.7-2.6-5.1-.9-7 0 0-2-4.4 7.1-5.6 4.6-.6 8.7 1.1 12.9-.8 0 0 3.8 7.5-3.4 8.4-7.2.9-7.2-1.6-11.4-1 0 0 .5 4.2 1.7 7.1 0 0 .2.8-.8 1.3 0 0-.9-3.9-2.3-4.8-1.4-.9-1.4 1.3-.7 2.5.7 1.2 1.2 1 1.2 1s1.7 2.5 1.4 4.8" fill="#ffb300"/><g fill="#937237"><circle cx="27.9" cy="13.4" r="1.5"/><circle cx="35" cy="13.4" r="1.5"/><path d="m33.7 17.8c-1.5 1.2-3.2 1.2-4.6 0-.2-.1-.3.1-.2.3.5.8 1.4 1.6 2.5 1.6 1.2 0 2.1-.7 2.5-1.6.2-.2 0-.4-.2-.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f587.svg b/riot/emojione/svg/1f587.svg new file mode 100644 index 0000000..b2dafc1 --- /dev/null +++ b/riot/emojione/svg/1f587.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m51.8 51.8c-2-.7-3.6-2.3-4.3-4.3-.3-.7-.4-1.5-.4-2.3v-.7-37.4c0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.1 1.8 4.2 4v33.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0 0 0-28.4 0-28.9 0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4 0 .6 0 28.4 0 28.7 0 .7.2 1.4.5 2.1.4.7 1.1 1.4 1.8 1.8.9.4 1.9.6 2.9.3 1.9-.4 3.2-2.2 3.3-4.1v-33.1c0-3.9-3.2-7.1-7.1-7.1s-7.1 3.2-7.1 7.1v37.2.9c0 .7.1 1.3.2 1.9.8 3.9 3.8 6.9 7.7 7.7 0-.2 0-.5 0-.7.1-.7 0-1.5-.3-2.2"/><path d="m61.2 11.4c0 .5 0 32.3 0 33.4 0 .1 0 .3 0 .4 0 3.6-2.8 6.7-6.3 7 .1.6.2 1.3.2 2 0 .3 0 .6 0 .9 5-.4 9-4.7 9-9.8 0-.5 0-33.7 0-33.8 0-.8-.6-1.4-1.4-1.4-.9-.1-1.5.5-1.5 1.3"/></g><g fill="#ed4c5c"><path d="m44.3 44.3c-5.3 0-32.8 0-32.9 0-.8 0-1.4.6-1.4 1.4 0 .8.6 1.4 1.4 1.4.5 0 29.9 0 33.1 0-.1-.6-.2-1.3-.2-1.9v-.9"/><path d="m54.8 52.2c-.8-3.9-3.9-6.9-7.7-7.7v.7c0 .8.1 1.6.4 2.3 2 .7 3.6 2.3 4.3 4.3.3.7.4 1.5.4 2.3 0 .2 0 .5 0 .7-.3 3.6-3.4 6.3-7 6.3h-38.1c-2.3 0-4.2-1.9-4.2-4.2 0-2.3 1.8-4.1 4-4.2h33.3c.8 0 1.4.6 1.4 1.4 0 .8-.6 1.4-1.4 1.4 0 0-28.4 0-28.9 0-.8 0-1.4.6-1.4 1.4 0 .8.6 1.4 1.4 1.4.6 0 28.4 0 28.7 0 .7 0 1.4-.2 2.1-.5.7-.4 1.4-1.1 1.8-1.8.4-.9.6-1.9.3-2.9-.4-1.9-2.2-3.2-4.1-3.3h-33.1c-3.8.1-7 3.2-7 7.1s3.2 7.1 7.1 7.1h38.1c5.2 0 9.4-4 9.8-9 0-.3 0-.6 0-.9 0-.6 0-1.3-.2-1.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f58a.svg b/riot/emojione/svg/1f58a.svg new file mode 100644 index 0000000..1b61284 --- /dev/null +++ b/riot/emojione/svg/1f58a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#93a2aa"><path d="m36.6 15.1c-1.7 2.6-6.1 5.3-10 7.3.2.2.6.8.8.8 1.1-.5 2.2-.9 3.3-1.4 2.2-1 4.4-2.3 6.4-3.8 4-3.2 5.5-12.8 8.4-13 1.7 0 3.3 2.5 4.5 3.6.6-.6 1.2-1.2 1.7-1.7.1-.1-1.3-1.4-1.4-1.5-1.7-1.7-3.7-3.5-6.4-2.5-3.6 1.4-5.3 9.3-7.3 12.2m9.3-10c0 0 .1 0 0 0m-1.3.2c-.1 0-.1 0 0 0"/><path d="m2.3 60.9c-.3.4-.4.8-.2 1 .2.2.7.1 1-.2l2.4-1.7-1.5-1.5-1.7 2.4"/></g><g fill="#42ade2"><path d="m28.3 26.3l9.4 9.4 23.4-25-7.8-7.8z"/><path transform="matrix(.7071-.7071.7071.7071-22.0935 28.3397)" d="m9.2 35.3h27.9v11h-27.9z"/></g><g fill="#c7d3d8"><path d="m3.2 57.7l3.1 3.1 10.9-6.2-7.8-7.8z"/><path d="m31.2 23.4l9.4 9.4-2.9 2.9-9.4-9.4z"/></g><path d="m53.8 3.4l6.8 6.8c1.9-1.9 1.9-4.9 0-6.8s-4.9-1.9-6.8 0" fill="#42ade2"/><path transform="matrix(.7071-.7071.7071.7071 11.5774 42.2854)" fill="#c7d3d8" d="m55.8 1.3h2v11.8h-2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f58b.svg b/riot/emojione/svg/1f58b.svg new file mode 100644 index 0000000..a15d1aa --- /dev/null +++ b/riot/emojione/svg/1f58b.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m12.3 43.8l7.9 7.9-6.1 10.1c0 0-6.4-.7-12.5 2.2l10-10c.5 0 .9-.1 1.3-.5.7-.7.7-1.7 0-2.4-.7-.7-1.7-.7-2.4 0-.4.4-.5.9-.5 1.3l-10 10c2.9-6.2 2.2-12.5 2.2-12.5l10.1-6.1" fill="#94989b"/><path d="M61.5,2.5c3.3,3.3,3.3,8.6,0,11.9L56.9,19c0,0-1.8,5-10.9,14.1C36.8,42.2,31.8,44,31.8,44l-9.7,9.7L10.3,41.8 + l9.7-9.7c0,0,1.8-5,10.9-14.1S45,7.1,45,7.1l4.7-4.7C53-0.8,58.3-0.8,61.5,2.5z" fill="#3e4347"/><g fill="#94989b"><path transform="matrix(.7071-.7071.7071.7071 6.4709 40.1706)" d="m50.6 3.9h2.2v16.8h-2.2z"/><path transform="matrix(.7065-.7078.7078.7065-20.1404 29.1912)" d="m24 30.5h2.2v16.8h-2.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f58c.svg b/riot/emojione/svg/1f58c.svg new file mode 100644 index 0000000..25a6916 --- /dev/null +++ b/riot/emojione/svg/1f58c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.5 54.6c.9-9.9 5.4-9.7 3-12-2.3-2.3.3-.3-12.3 3.3-4.5 1.3-6.4 5.3-6.7 8.8-.1 1-.8 5.6-4.5 7 0 0 7.8.8 11.7 0 4-.3 8.4-2.3 8.8-7.1" fill="#3e4347"/><path d="m11.6 45.7c0 0 2.8.3 2.4 2.4-.4 2.1 2.2.1 2.3 1.7.1 1.7 2.9.6 2.8 2.2-.1 1.7 1.8 1 1.5 2.5-.3 1.5-.7 3.2-1.9 4.2-1.1 1 .4-4.8-.9-3.6-1.3 1.2-1-2.9-2.8-2.1-1.9.8-.3-3.3-2.4-2.4-2.1.9-1.4-3-2.7-2.7-1.3.4-1.1-.9-1.1-.9s1.1-.8 2.8-1.3" fill="#94989b"/><path d="m4.6 53.8c0 0-.7 6.3-4.6 7.8 0 0 8.4 1.1 12.4-.1 0 0 2-.7-.2-1.8-2.2-1.1-.4-2-1.6-1.8-1.2.1 1.2-1.7-.7-1.5-1.9.2-.4-2.5-1.7-1.9-1.3.7-.9-2-1.6-1.1-.6.8-.4-.9-1-.7s-.8.2-1 1.1" fill="#ed4c5c"/><path d="m10.8 59.9c0 0-.4.3-1.1.6-.3.1-.7.3-1.2.4-.4 0-.8.1-1.3.1-.5 0-.9 0-1.4-.1-.4-.1-.9-.2-1.2-.3-.7-.2-1.1-.4-1.1-.4s.5-.2 1.2-.3c.7-.1 1.6-.2 2.5-.3.9 0 1.8 0 2.5.1.6.1 1.1.2 1.1.2" fill="#ffc7ce"/><path d="m21.2 51.1l-6.4-6.4c0 0 27.8-30.8 37.4-40.7 2.6-2.7 7-2.7 9.7 0 2.7 2.7 2.7 7.1 0 9.7-9.9 9.5-40.7 37.4-40.7 37.4" fill="#89664c"/><path d="m20.2 50l-4.3-4.3c0 0 27.5-29.4 36.8-39.1 2.6-2.6 6.2-3.3 8-1.4 1.8 1.8 1.2 5.4-1.4 8-9.7 9.4-39.1 36.8-39.1 36.8" fill="#d3976e"/><path transform="matrix(.7071-.7071.7071.7071-27.4714 27.231)" fill="#c7d3d8" d="m16.7 41.8h4.9v10h-4.9z"/><path transform="matrix(.7072-.707.707.7072-27.4685 27.2231)" fill="#fff" d="m16.7 43.6h4.9v6.4h-4.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f58d.svg b/riot/emojione/svg/1f58d.svg new file mode 100644 index 0000000..5a76528 --- /dev/null +++ b/riot/emojione/svg/1f58d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.3 51.7l-6.1-6.1c-.9-.9-2.2-.8-2.9.3l-6.9 11.7c-.7 1.1-.5 2.7.4 3.6.9.9 2.5 1 3.6.4l11.6-6.9c1.1-.7 1.3-2 .3-3" fill="#71ad3e"/><path d="m21.6 55.2c-1.2 1.2-3.1 1.1-4.3-.1l-8.4-8.4c-1.2-1.2-1.2-3.1-.1-4.3l39.5-39.5c1.2-1.2 3.1-1.1 4.3.1l8.4 8.4c1.2 1.2 1.2 3.1.1 4.3l-39.5 39.5" fill="#83bf4f"/><path transform="matrix(.7071-.7071.7071.7071-10.2915 33.2278)" fill="#3e4347" d="m11.5 20h46.9v18.1h-46.9z"/><g fill="#52c18e"><path transform="matrix(.7071-.7071.7071.7071 1.4299 38.0826)" d="m44.4 8.3h4.6v18.1h-4.6z"/><path transform="matrix(.7071-.7071.7071.7071-22.013 28.3741)" d="m20.9 31.7h4.6v18.1h-4.6z"/><path d="m35 29c-4.3 4.3-10.7 4.9-14.2 1.4l15.6-15.6c3.5 3.6 2.9 9.9-1.4 14.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f590-1f3fb.svg b/riot/emojione/svg/1f590-1f3fb.svg new file mode 100644 index 0000000..5154c0b --- /dev/null +++ b/riot/emojione/svg/1f590-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 42.3l7.8 1.5 6.4-32.9c.4-2.2-1-4.4-3.1-4.8-2.2-.4-4.3 1.1-4.7 3.3l-6.4 32.9" fill="#ffe1bd"/><path d="m45.2 6.1c-.3-.1-.5-.1-.8-.1 1.8.7 2.8 2.6 2.4 4.6l-6.4 32.9 1.4.3 6.4-32.9c.5-2.3-.9-4.4-3-4.8" fill="#e6b796"/><path d="m26 43.3h9.4v-36.3c0-2.7-2.1-5-4.7-5-2.5 0-4.7 2.2-4.7 5v36.3" fill="#ffe1bd"/><path d="m30.8 2c-.2 0-.5 0-.7.1 2.3.4 4 2.4 4 4.9v36.4h1.4v-36.4c0-2.8-2.1-5-4.7-5" fill="#e6b796"/><path d="m21 43.2l8-2.1-8.7-33.1c-.6-2.3-2.9-3.7-5.1-3.2-2.2.6-3.5 2.9-2.9 5.2l8.7 33.2" fill="#ffe1bd"/><path d="m15.2 4.8c-.2.1-.4.2-.6.3 2-.1 3.8 1.2 4.4 3.3l8.7 33.1 1.4-.4-8.8-33.1c-.6-2.3-2.9-3.7-5.1-3.2" fill="#e6b796"/><path d="m4 13.4c-1.9.9-2.5 3.3-1.5 5.3l13.2 26.3 6.7-3.4-13.2-26.3c-1-2-3.3-2.8-5.2-1.9" fill="#ffe1bd"/><path d="m4 13.4c-.2.1-.4.2-.6.4 1.7-.5 3.6.4 4.5 2.2l13.2 26.3 1.3-.6-13.2-26.4c-1-2-3.3-2.8-5.2-1.9" fill="#e6b796"/><path d="m61.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-7.7-5.7-23-3.1 0 0-8.7 1.2-8.7 5.8 0 0-1.5 11.1 1.6 18.1 4.6 10.4 28.2 13.1 35.6-4.6 1.5-3.5 4.5-6.1 7.2-9.4 3.1-4 8.6-7.2 6.9-10.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m61.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7.1 10.5-2.7 3.3-5.7 5.9-7.2 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27.1 8.8 33.8-7.3 1.5-3.5 4.5-6.1 7.2-9.4 3.3-4 8.8-7.2 7.1-10.5"/><path d="m43.1 37.1c-6.5-2.4-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.8-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f590-1f3fc.svg b/riot/emojione/svg/1f590-1f3fc.svg new file mode 100644 index 0000000..00e624a --- /dev/null +++ b/riot/emojione/svg/1f590-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 42.3l7.8 1.5 6.4-32.9c.4-2.2-1-4.4-3.1-4.8-2.2-.4-4.3 1.1-4.7 3.3l-6.4 32.9" fill="#fed0ac"/><path d="m45.2 6.1c-.3-.1-.5-.1-.8-.1 1.8.7 2.8 2.6 2.4 4.6l-6.4 32.9 1.4.3 6.4-32.9c.5-2.3-.9-4.4-3-4.8" fill="#e0a372"/><path d="m26 43.3h9.4v-36.3c0-2.7-2.1-5-4.7-5-2.5 0-4.7 2.2-4.7 5v36.3" fill="#fed0ac"/><path d="m30.8 2c-.2 0-.5 0-.7.1 2.3.4 4 2.4 4 4.9v36.4h1.4v-36.4c0-2.8-2.1-5-4.7-5" fill="#e0a372"/><path d="m21 43.2l8-2.1-8.7-33.1c-.6-2.3-2.9-3.7-5.1-3.2-2.2.6-3.5 2.9-2.9 5.2l8.7 33.2" fill="#fed0ac"/><path d="m15.2 4.8c-.2.1-.4.2-.6.3 2-.1 3.8 1.2 4.4 3.3l8.7 33.1 1.4-.4-8.8-33.1c-.6-2.3-2.9-3.7-5.1-3.2" fill="#e0a372"/><path d="m4 13.4c-1.9.9-2.5 3.3-1.5 5.3l13.2 26.3 6.7-3.4-13.2-26.3c-1-2-3.3-2.8-5.2-1.9" fill="#fed0ac"/><path d="m4 13.4c-.2.1-.4.2-.6.4 1.7-.5 3.6.4 4.5 2.2l13.2 26.3 1.3-.6-13.2-26.4c-1-2-3.3-2.8-5.2-1.9" fill="#e0a372"/><path d="m61.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-7.7-5.7-23-3.1 0 0-8.7 1.2-8.7 5.8 0 0-1.5 11.1 1.6 18.1 4.6 10.4 28.2 13.1 35.6-4.6 1.5-3.5 4.5-6.1 7.2-9.4 3.1-4 8.6-7.2 6.9-10.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m61.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7.1 10.5-2.7 3.3-5.7 5.9-7.2 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27.1 8.8 33.8-7.3 1.5-3.5 4.5-6.1 7.2-9.4 3.3-4 8.8-7.2 7.1-10.5"/><path d="m43.1 37.1c-6.5-2.4-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.8-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f590-1f3fd.svg b/riot/emojione/svg/1f590-1f3fd.svg new file mode 100644 index 0000000..79c9644 --- /dev/null +++ b/riot/emojione/svg/1f590-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 42.3l7.8 1.5 6.4-32.9c.4-2.2-1-4.4-3.1-4.8-2.2-.4-4.3 1.1-4.7 3.3l-6.4 32.9" fill="#d6a57c"/><path d="m45.2 6.1c-.3-.1-.5-.1-.8-.1 1.8.7 2.8 2.6 2.4 4.6l-6.4 32.9 1.4.3 6.4-32.9c.5-2.3-.9-4.4-3-4.8" fill="#b58360"/><path d="m26 43.3h9.4v-36.3c0-2.7-2.1-5-4.7-5-2.5 0-4.7 2.2-4.7 5v36.3" fill="#d6a57c"/><path d="m30.8 2c-.2 0-.5 0-.7.1 2.3.4 4 2.4 4 4.9v36.4h1.4v-36.4c0-2.8-2.1-5-4.7-5" fill="#b58360"/><path d="m21 43.2l8-2.1-8.7-33.1c-.6-2.3-2.9-3.7-5.1-3.2-2.2.6-3.5 2.9-2.9 5.2l8.7 33.2" fill="#d6a57c"/><path d="m15.2 4.8c-.2.1-.4.2-.6.3 2-.1 3.8 1.2 4.4 3.3l8.7 33.1 1.4-.4-8.8-33.1c-.6-2.3-2.9-3.7-5.1-3.2" fill="#b58360"/><path d="m4 13.4c-1.9.9-2.5 3.3-1.5 5.3l13.2 26.3 6.7-3.4-13.2-26.3c-1-2-3.3-2.8-5.2-1.9" fill="#d6a57c"/><path d="m4 13.4c-.2.1-.4.2-.6.4 1.7-.5 3.6.4 4.5 2.2l13.2 26.3 1.3-.6-13.2-26.4c-1-2-3.3-2.8-5.2-1.9" fill="#b58360"/><path d="m61.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-7.7-5.7-23-3.1 0 0-8.7 1.2-8.7 5.8 0 0-1.5 11.1 1.6 18.1 4.6 10.4 28.2 13.1 35.6-4.6 1.5-3.5 4.5-6.1 7.2-9.4 3.1-4 8.6-7.2 6.9-10.5" fill="#d6a57c"/><g fill="#b58360"><path d="m61.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7.1 10.5-2.7 3.3-5.7 5.9-7.2 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27.1 8.8 33.8-7.3 1.5-3.5 4.5-6.1 7.2-9.4 3.3-4 8.8-7.2 7.1-10.5"/><path d="m43.1 37.1c-6.5-2.4-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.8-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f590-1f3fe.svg b/riot/emojione/svg/1f590-1f3fe.svg new file mode 100644 index 0000000..1e01c77 --- /dev/null +++ b/riot/emojione/svg/1f590-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 42.3l7.8 1.5 6.4-32.9c.4-2.2-1-4.4-3.1-4.8-2.2-.4-4.3 1.1-4.7 3.3l-6.4 32.9" fill="#b47d56"/><path d="m45.2 6.1c-.3-.1-.5-.1-.8-.1 1.8.7 2.8 2.6 2.4 4.6l-6.4 32.9 1.4.3 6.4-32.9c.5-2.3-.9-4.4-3-4.8" fill="#935e3e"/><path d="m26 43.3h9.4v-36.3c0-2.7-2.1-5-4.7-5-2.5 0-4.7 2.2-4.7 5v36.3" fill="#b47d56"/><path d="m30.8 2c-.2 0-.5 0-.7.1 2.3.4 4 2.4 4 4.9v36.4h1.4v-36.4c0-2.8-2.1-5-4.7-5" fill="#935e3e"/><path d="m21 43.2l8-2.1-8.7-33.1c-.6-2.3-2.9-3.7-5.1-3.2-2.2.6-3.5 2.9-2.9 5.2l8.7 33.2" fill="#b47d56"/><path d="m15.2 4.8c-.2.1-.4.2-.6.3 2-.1 3.8 1.2 4.4 3.3l8.7 33.1 1.4-.4-8.8-33.1c-.6-2.3-2.9-3.7-5.1-3.2" fill="#935e3e"/><path d="m4 13.4c-1.9.9-2.5 3.3-1.5 5.3l13.2 26.3 6.7-3.4-13.2-26.3c-1-2-3.3-2.8-5.2-1.9" fill="#b47d56"/><path d="m4 13.4c-.2.1-.4.2-.6.4 1.7-.5 3.6.4 4.5 2.2l13.2 26.3 1.3-.6-13.2-26.4c-1-2-3.3-2.8-5.2-1.9" fill="#935e3e"/><path d="m61.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-7.7-5.7-23-3.1 0 0-8.7 1.2-8.7 5.8 0 0-1.5 11.1 1.6 18.1 4.6 10.4 28.2 13.1 35.6-4.6 1.5-3.5 4.5-6.1 7.2-9.4 3.1-4 8.6-7.2 6.9-10.5" fill="#b47d56"/><g fill="#935e3e"><path d="m61.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7.1 10.5-2.7 3.3-5.7 5.9-7.2 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27.1 8.8 33.8-7.3 1.5-3.5 4.5-6.1 7.2-9.4 3.3-4 8.8-7.2 7.1-10.5"/><path d="m43.1 37.1c-6.5-2.4-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.8-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f590-1f3ff.svg b/riot/emojione/svg/1f590-1f3ff.svg new file mode 100644 index 0000000..feae919 --- /dev/null +++ b/riot/emojione/svg/1f590-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 42.3l7.8 1.5 6.4-32.9c.4-2.2-1-4.4-3.1-4.8-2.2-.4-4.3 1.1-4.7 3.3l-6.4 32.9" fill="#8a6859"/><path d="m45.2 6.1c-.3-.1-.5-.1-.8-.1 1.8.7 2.8 2.6 2.4 4.6l-6.4 32.9 1.4.3 6.4-32.9c.5-2.3-.9-4.4-3-4.8" fill="#705041"/><path d="m26 43.3h9.4v-36.3c0-2.7-2.1-5-4.7-5-2.5 0-4.7 2.2-4.7 5v36.3" fill="#8a6859"/><path d="m30.8 2c-.2 0-.5 0-.7.1 2.3.4 4 2.4 4 4.9v36.4h1.4v-36.4c0-2.8-2.1-5-4.7-5" fill="#705041"/><path d="m21 43.2l8-2.1-8.7-33.1c-.6-2.3-2.9-3.7-5.1-3.2-2.2.6-3.5 2.9-2.9 5.2l8.7 33.2" fill="#8a6859"/><path d="m15.2 4.8c-.2.1-.4.2-.6.3 2-.1 3.8 1.2 4.4 3.3l8.7 33.1 1.4-.4-8.8-33.1c-.6-2.3-2.9-3.7-5.1-3.2" fill="#705041"/><path d="m4 13.4c-1.9.9-2.5 3.3-1.5 5.3l13.2 26.3 6.7-3.4-13.2-26.3c-1-2-3.3-2.8-5.2-1.9" fill="#8a6859"/><path d="m4 13.4c-.2.1-.4.2-.6.4 1.7-.5 3.6.4 4.5 2.2l13.2 26.3 1.3-.6-13.2-26.4c-1-2-3.3-2.8-5.2-1.9" fill="#705041"/><path d="m61.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-7.7-5.7-23-3.1 0 0-8.7 1.2-8.7 5.8 0 0-1.5 11.1 1.6 18.1 4.6 10.4 28.2 13.1 35.6-4.6 1.5-3.5 4.5-6.1 7.2-9.4 3.1-4 8.6-7.2 6.9-10.5" fill="#8a6859"/><g fill="#705041"><path d="m61.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7.1 10.5-2.7 3.3-5.7 5.9-7.2 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27.1 8.8 33.8-7.3 1.5-3.5 4.5-6.1 7.2-9.4 3.3-4 8.8-7.2 7.1-10.5"/><path d="m43.1 37.1c-6.5-2.4-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.8-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f590.svg b/riot/emojione/svg/1f590.svg new file mode 100644 index 0000000..daefb13 --- /dev/null +++ b/riot/emojione/svg/1f590.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 42.3l7.8 1.5 6.4-32.9c.4-2.2-1-4.4-3.1-4.8-2.2-.4-4.3 1.1-4.7 3.3l-6.4 32.9" fill="#ffdd67"/><path d="m45.2 6.1c-.3-.1-.5-.1-.8-.1 1.8.7 2.8 2.6 2.4 4.6l-6.4 32.9 1.4.3 6.4-32.9c.5-2.3-.9-4.4-3-4.8" fill="#eba352"/><path d="m26 43.3h9.4v-36.3c0-2.7-2.1-5-4.7-5-2.5 0-4.7 2.2-4.7 5v36.3" fill="#ffdd67"/><path d="m30.8 2c-.2 0-.5 0-.7.1 2.3.4 4 2.4 4 4.9v36.4h1.4v-36.4c0-2.8-2.1-5-4.7-5" fill="#eba352"/><path d="m21 43.2l8-2.1-8.7-33.1c-.6-2.3-2.9-3.7-5.1-3.2-2.2.6-3.5 2.9-2.9 5.2l8.7 33.2" fill="#ffdd67"/><path d="m15.2 4.8c-.2.1-.4.2-.6.3 2-.1 3.8 1.2 4.4 3.3l8.7 33.1 1.4-.4-8.8-33.1c-.6-2.3-2.9-3.7-5.1-3.2" fill="#eba352"/><path d="m4 13.4c-1.9.9-2.5 3.3-1.5 5.3l13.2 26.3 6.7-3.4-13.2-26.3c-1-2-3.3-2.8-5.2-1.9" fill="#ffdd67"/><path d="m4 13.4c-.2.1-.4.2-.6.4 1.7-.5 3.6.4 4.5 2.2l13.2 26.3 1.3-.6-13.2-26.4c-1-2-3.3-2.8-5.2-1.9" fill="#eba352"/><path d="m61.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-7.7-5.7-23-3.1 0 0-8.7 1.2-8.7 5.8 0 0-1.5 11.1 1.6 18.1 4.6 10.4 28.2 13.1 35.6-4.6 1.5-3.5 4.5-6.1 7.2-9.4 3.1-4 8.6-7.2 6.9-10.5" fill="#ffdd67"/><g fill="#eba352"><path d="m61.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7.1 10.5-2.7 3.3-5.7 5.9-7.2 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27.1 8.8 33.8-7.3 1.5-3.5 4.5-6.1 7.2-9.4 3.3-4 8.8-7.2 7.1-10.5"/><path d="m43.1 37.1c-6.5-2.4-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.8-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f595-1f3fb.svg b/riot/emojione/svg/1f595-1f3fb.svg new file mode 100644 index 0000000..74a6b8c --- /dev/null +++ b/riot/emojione/svg/1f595-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.5 31.5c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 6.3 2.1 6.3 4.7l-2.6-25.1c0-2.4 3-4.4 6.9-4.4h.1c3.8 0 6.9 2 6.9 4.4l-1.2 24.6c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 5.3 2.1 5.3 4.7v2.7c.5-1.9 2.4-3.2 4.6-2.7 4.5 1.2 3.6 4.8 4.1 8.7.5 4.8 1.7 7.9 1.3 9.6-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3" fill="#ffe1bd"/><g fill="#e6b796"><path d="m13.5 31.5c0-1.4.7-2.7 1.8-3.5-1.9 2.4-.6 19.4 1.7 24.2 1.2 2.4 5.3 1.7 8.3 3.1 3 1.4 3.7 3.8 6.4 4 2.4.3 5.2-1.4 8.3-2.1 3.6-.9 6.1-.6 8.3-2.6 1.1-1 1.6-2.5 3.8-3.2 1.6-.5 2.7-1 3.9-2.2 0 0 0 .1 0 .1-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3"/><path d="m22.6 5.3c-.9 3.8 2.5 38.4 2.5 38.4 0 2.5 1.3 1.5 1.3-1 0 0-3.6-32.5-2.6-37.3.4-2 1.8-2.6 4.2-3.3 0 0-4.6.2-5.4 3.2"/><path d="m37 42.3v-13c0-.7.1-1.4.5-2-1.3.9-2.1 2.2-2.1 3.7v13c-.1 2.7 1.6.9 1.6-1.7"/><path d="m47.4 43.6v-10.4c0-.6.1-1.2.4-1.8-1.1.8-1.9 2-1.9 3.4v10.4c0 2.3 1.5.7 1.5-1.6"/><path d="m34.4 10.8c.8-5.3-1.7-5.5-4.8-5.5-3.1 0-5.6.2-4.8 5.5.3 2 2.4 2.7 4.8 2.7s4.5-.8 4.8-2.7"/></g><path d="m34.5 9.9c.8-5.7-1.7-5.9-4.9-5.9-3.2 0-5.7.2-4.9 5.8.3 2.1 2.4 2.8 4.9 2.8 2.5 0 4.6-.7 4.9-2.7" fill="#ffe8dc"/><path d="m15.3 53.6c-3.6-4.2-8.3-6.4-7.1-9.5 1-3 3.1-2.9 5.8-6.3l1.3 15.8" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f595-1f3fc.svg b/riot/emojione/svg/1f595-1f3fc.svg new file mode 100644 index 0000000..57bccaa --- /dev/null +++ b/riot/emojione/svg/1f595-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.5 31.5c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 6.3 2.1 6.3 4.7l-2.6-25.1c0-2.4 3-4.4 6.9-4.4h.1c3.8 0 6.9 2 6.9 4.4l-1.2 24.6c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 5.3 2.1 5.3 4.7v2.7c.5-1.9 2.4-3.2 4.6-2.7 4.5 1.2 3.6 4.8 4.1 8.7.5 4.8 1.7 7.9 1.3 9.6-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3" fill="#fed0ac"/><g fill="#e0a372"><path d="m13.5 31.5c0-1.4.7-2.7 1.8-3.5-1.9 2.4-.6 19.4 1.7 24.2 1.2 2.4 5.3 1.7 8.3 3.1 3 1.4 3.7 3.8 6.4 4 2.4.3 5.2-1.4 8.3-2.1 3.6-.9 6.1-.6 8.3-2.6 1.1-1 1.6-2.5 3.8-3.2 1.6-.5 2.7-1 3.9-2.2 0 0 0 .1 0 .1-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3"/><path d="m22.6 5.3c-.9 3.8 2.5 38.4 2.5 38.4 0 2.5 1.3 1.5 1.3-1 0 0-3.6-32.5-2.6-37.3.4-2 1.8-2.6 4.2-3.3 0 0-4.6.2-5.4 3.2"/><path d="m37 42.3v-13c0-.7.1-1.4.5-2-1.3.9-2.1 2.2-2.1 3.7v13c-.1 2.7 1.6.9 1.6-1.7"/><path d="m47.4 43.6v-10.4c0-.6.1-1.2.4-1.8-1.1.8-1.9 2-1.9 3.4v10.4c0 2.3 1.5.7 1.5-1.6"/><path d="m34.4 10.8c.8-5.3-1.7-5.5-4.8-5.5-3.1 0-5.6.2-4.8 5.5.3 2 2.4 2.7 4.8 2.7s4.5-.8 4.8-2.7"/></g><path d="m34.5 9.9c.8-5.7-1.7-5.9-4.9-5.9-3.2 0-5.7.2-4.9 5.8.3 2.1 2.4 2.8 4.9 2.8 2.5 0 4.6-.7 4.9-2.7" fill="#ffe8dc"/><path d="m15.3 53.6c-3.6-4.2-8.3-6.4-7.1-9.5 1-3 3.1-2.9 5.8-6.3l1.3 15.8" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f595-1f3fd.svg b/riot/emojione/svg/1f595-1f3fd.svg new file mode 100644 index 0000000..8ae9550 --- /dev/null +++ b/riot/emojione/svg/1f595-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.5 31.5c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 6.3 2.1 6.3 4.7l-2.6-25.1c0-2.4 3-4.4 6.9-4.4h.1c3.8 0 6.9 2 6.9 4.4l-1.2 24.6c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 5.3 2.1 5.3 4.7v2.7c.5-1.9 2.4-3.2 4.6-2.7 4.5 1.2 3.6 4.8 4.1 8.7.5 4.8 1.7 7.9 1.3 9.6-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3" fill="#d6a57c"/><g fill="#b58360"><path d="m13.5 31.5c0-1.4.7-2.7 1.8-3.5-1.9 2.4-.6 19.4 1.7 24.2 1.2 2.4 5.3 1.7 8.3 3.1 3 1.4 3.7 3.8 6.4 4 2.4.3 5.2-1.4 8.3-2.1 3.6-.9 6.1-.6 8.3-2.6 1.1-1 1.6-2.5 3.8-3.2 1.6-.5 2.7-1 3.9-2.2 0 0 0 .1 0 .1-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3"/><path d="m22.6 5.3c-.9 3.8 2.5 38.4 2.5 38.4 0 2.5 1.3 1.5 1.3-1 0 0-3.6-32.5-2.6-37.3.4-2 1.8-2.6 4.2-3.3 0 0-4.6.2-5.4 3.2"/><path d="m37 42.3v-13c0-.7.1-1.4.5-2-1.3.9-2.1 2.2-2.1 3.7v13c-.1 2.7 1.6.9 1.6-1.7"/><path d="m47.4 43.6v-10.4c0-.6.1-1.2.4-1.8-1.1.8-1.9 2-1.9 3.4v10.4c0 2.3 1.5.7 1.5-1.6"/><path d="m34.4 10.8c.8-5.3-1.7-5.5-4.8-5.5-3.1 0-5.6.2-4.8 5.5.3 2 2.4 2.7 4.8 2.7s4.5-.8 4.8-2.7"/></g><path d="m34.5 9.9c.8-5.7-1.7-5.9-4.9-5.9-3.2 0-5.7.2-4.9 5.8.3 2.1 2.4 2.8 4.9 2.8 2.5 0 4.6-.7 4.9-2.7" fill="#ffe8dc"/><path d="m15.3 53.6c-3.6-4.2-8.3-6.4-7.1-9.5 1-3 3.1-2.9 5.8-6.3l1.3 15.8" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f595-1f3fe.svg b/riot/emojione/svg/1f595-1f3fe.svg new file mode 100644 index 0000000..b571c15 --- /dev/null +++ b/riot/emojione/svg/1f595-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.5 31.5c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 6.3 2.1 6.3 4.7l-2.6-25.1c0-2.4 3-4.4 6.9-4.4h.1c3.8 0 6.9 2 6.9 4.4l-1.2 24.6c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 5.3 2.1 5.3 4.7v2.7c.5-1.9 2.4-3.2 4.6-2.7 4.5 1.2 3.6 4.8 4.1 8.7.5 4.8 1.7 7.9 1.3 9.6-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3" fill="#b47d56"/><g fill="#935e3e"><path d="m13.5 31.5c0-1.4.7-2.7 1.8-3.5-1.9 2.4-.6 19.4 1.7 24.2 1.2 2.4 5.3 1.7 8.3 3.1 3 1.4 3.7 3.8 6.4 4 2.4.3 5.2-1.4 8.3-2.1 3.6-.9 6.1-.6 8.3-2.6 1.1-1 1.6-2.5 3.8-3.2 1.6-.5 2.7-1 3.9-2.2 0 0 0 .1 0 .1-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3"/><path d="m22.6 5.3c-.9 3.8 2.5 38.4 2.5 38.4 0 2.5 1.3 1.5 1.3-1 0 0-3.6-32.5-2.6-37.3.4-2 1.8-2.6 4.2-3.3 0 0-4.6.2-5.4 3.2"/><path d="m37 42.3v-13c0-.7.1-1.4.5-2-1.3.9-2.1 2.2-2.1 3.7v13c-.1 2.7 1.6.9 1.6-1.7"/><path d="m47.4 43.6v-10.4c0-.6.1-1.2.4-1.8-1.1.8-1.9 2-1.9 3.4v10.4c0 2.3 1.5.7 1.5-1.6"/><path d="m34.4 10.8c.8-5.3-1.7-5.5-4.8-5.5-3.1 0-5.6.2-4.8 5.5.3 2 2.4 2.7 4.8 2.7s4.5-.8 4.8-2.7"/></g><path d="m34.5 9.9c.8-5.7-1.7-5.9-4.9-5.9-3.2 0-5.7.2-4.9 5.8.3 2.1 2.4 2.8 4.9 2.8 2.5 0 4.6-.7 4.9-2.7" fill="#ffe8dc"/><path d="m15.3 53.6c-3.6-4.2-8.3-6.4-7.1-9.5 1-3 3.1-2.9 5.8-6.3l1.3 15.8" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f595-1f3ff.svg b/riot/emojione/svg/1f595-1f3ff.svg new file mode 100644 index 0000000..63062da --- /dev/null +++ b/riot/emojione/svg/1f595-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.5 31.5c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 6.3 2.1 6.3 4.7l-2.6-25.1c0-2.4 3-4.4 6.9-4.4h.1c3.8 0 6.9 2 6.9 4.4l-1.2 24.6c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 5.3 2.1 5.3 4.7v2.7c.5-1.9 2.4-3.2 4.6-2.7 4.5 1.2 3.6 4.8 4.1 8.7.5 4.8 1.7 7.9 1.3 9.6-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3" fill="#8a6859"/><g fill="#705041"><path d="m13.5 31.5c0-1.4.7-2.7 1.8-3.5-1.9 2.4-.6 19.4 1.7 24.2 1.2 2.4 5.3 1.7 8.3 3.1 3 1.4 3.7 3.8 6.4 4 2.4.3 5.2-1.4 8.3-2.1 3.6-.9 6.1-.6 8.3-2.6 1.1-1 1.6-2.5 3.8-3.2 1.6-.5 2.7-1 3.9-2.2 0 0 0 .1 0 .1-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3"/><path d="m22.6 5.3c-.9 3.8 2.5 38.4 2.5 38.4 0 2.5 1.3 1.5 1.3-1 0 0-3.6-32.5-2.6-37.3.4-2 1.8-2.6 4.2-3.3 0 0-4.6.2-5.4 3.2"/><path d="m37 42.3v-13c0-.7.1-1.4.5-2-1.3.9-2.1 2.2-2.1 3.7v13c-.1 2.7 1.6.9 1.6-1.7"/><path d="m47.4 43.6v-10.4c0-.6.1-1.2.4-1.8-1.1.8-1.9 2-1.9 3.4v10.4c0 2.3 1.5.7 1.5-1.6"/><path d="m34.4 10.8c.8-5.3-1.7-5.5-4.8-5.5-3.1 0-5.6.2-4.8 5.5.3 2 2.4 2.7 4.8 2.7s4.5-.8 4.8-2.7"/></g><path d="m34.5 9.9c.8-5.7-1.7-5.9-4.9-5.9-3.2 0-5.7.2-4.9 5.8.3 2.1 2.4 2.8 4.9 2.8 2.5 0 4.6-.7 4.9-2.7" fill="#ffe8dc"/><path d="m15.3 53.6c-3.6-4.2-8.3-6.4-7.1-9.5 1-3 3.1-2.9 5.8-6.3l1.3 15.8" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f595.svg b/riot/emojione/svg/1f595.svg new file mode 100644 index 0000000..a424791 --- /dev/null +++ b/riot/emojione/svg/1f595.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.5 31.5c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 6.3 2.1 6.3 4.7l-2.6-25.1c0-2.4 3-4.4 6.9-4.4h.1c3.8 0 6.9 2 6.9 4.4l-1.2 24.6c0-2.6 2.4-4.7 5.3-4.7h.1c2.9 0 5.3 2.1 5.3 4.7v2.7c.5-1.9 2.4-3.2 4.6-2.7 4.5 1.2 3.6 4.8 4.1 8.7.5 4.8 1.7 7.9 1.3 9.6-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3" fill="#ffdd67"/><g fill="#eba352"><path d="m13.5 31.5c0-1.4.7-2.7 1.8-3.5-1.9 2.4-.6 19.4 1.7 24.2 1.2 2.4 5.3 1.7 8.3 3.1 3 1.4 3.7 3.8 6.4 4 2.4.3 5.2-1.4 8.3-2.1 3.6-.9 6.1-.6 8.3-2.6 1.1-1 1.6-2.5 3.8-3.2 1.6-.5 2.7-1 3.9-2.2 0 0 0 .1 0 .1-1 3.7-3.7 3.2-5.1 4.2-1.4 1-1.8 2.6-2.9 3.6-2.2 2-6.2 1.6-9.8 2.5-3.1.8-5.9 2.6-8.3 2.3-2.7-.3-3.4-2.6-6.4-4-3-1.4-7.1-.7-8.3-3.1-2.3-4.8-1.7-23.3-1.7-23.3"/><path d="m22.6 5.3c-.9 3.8 2.5 38.4 2.5 38.4 0 2.5 1.3 1.5 1.3-1 0 0-3.6-32.5-2.6-37.3.4-2 1.8-2.6 4.2-3.3 0 0-4.6.2-5.4 3.2"/><path d="m37 42.3v-13c0-.7.1-1.4.5-2-1.3.9-2.1 2.2-2.1 3.7v13c-.1 2.7 1.6.9 1.6-1.7"/><path d="m47.4 43.6v-10.4c0-.6.1-1.2.4-1.8-1.1.8-1.9 2-1.9 3.4v10.4c0 2.3 1.5.7 1.5-1.6"/><path d="m34.4 10.8c.8-5.3-1.7-5.5-4.8-5.5-3.1 0-5.6.2-4.8 5.5.3 2 2.4 2.7 4.8 2.7s4.5-.8 4.8-2.7"/></g><path d="m34.5 9.9c.8-5.7-1.7-5.9-4.9-5.9-3.2 0-5.7.2-4.9 5.8.3 2.1 2.4 2.8 4.9 2.8 2.5 0 4.6-.7 4.9-2.7" fill="#ffe8dc"/><path d="m15.2 53.6c-3.6-4.2-8.3-6.4-7.1-9.5 1-3 3.1-2.9 5.8-6.3l1.3 15.8" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f596-1f3fb.svg b/riot/emojione/svg/1f596-1f3fb.svg new file mode 100644 index 0000000..73de3c3 --- /dev/null +++ b/riot/emojione/svg/1f596-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m31.1 43.5l7.7 1.8 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9-2.1-.5-4.2.9-4.8 3.2l-7.6 32.6"/><path d="m22.1 41.3l9 2.2 8.3-35.5c.6-2.6-.9-5.3-3.4-5.9-2.5-.6-5 1.1-5.7 3.8l-8.2 35.4"/><path d="m20.3 42.8l8.4-2.2-9.8-33c-.7-2.3-3.1-3.7-5.5-3.1-2.3.6-3.7 3-3 5.3l9.9 33"/><path d="m6.9 11.5c-2.2.6-3.3 2.7-2.7 4.9l8.4 28.4 7.7-2-8.4-28.4c-.7-2.1-2.9-3.4-5-2.9"/></g><g fill="#e6b796"><path d="m43.5 7.7c-.2-.1-.5-.1-.7-.1 1.7.8 2.7 2.7 2.2 4.7l-7.6 32.7 1.4.3 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9"/><path d="m36 2.1c-.2 0-.5-.1-.7-.1 2.1.9 3.3 3.3 2.7 5.7l-4.7 20.1.9 2.5 5.2-22.3c.6-2.6-.9-5.3-3.4-5.9"/><path d="m13.5 4.5c-.3.1-.5.2-.7.3 2.1-.2 4.1 1.1 4.7 3.2l5.7 19.3 2.1 1.9-6.4-21.6c-.6-2.3-3.1-3.7-5.4-3.1"/><path d="m6.9 11.5c-.3.1-.5.2-.7.3 1.9-.1 3.7 1.1 4.3 3l4 13.6 2.1 1.7-4.6-15.6c-.8-2.2-3-3.5-5.1-3"/></g><path d="m59.7 29.2c-1.5-3.1-6.5-2.9-11.6 2.7-3.5 3.9-5.1 5.3-8.6 5.3l.8-4.5-30.9 1.2c0 0-1.8 12.8 1.2 19.8 4.5 10.4 27.8 13.2 35.1-4.6 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m59.7 29.2c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7 10.5-2.6 3.3-5.6 5.9-7.1 9.4-6.3 15.4-24.6 15.4-32.3 8.3 7 8 26.7 8.8 33.4-7.3 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5"/><path d="m40.7 37.1c-6.5-2.4-18 2.1-16.4 13.7 0-10.9 10.1-13.6 15.5-13.6.7 0 .9-.1.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f596-1f3fc.svg b/riot/emojione/svg/1f596-1f3fc.svg new file mode 100644 index 0000000..acd4f53 --- /dev/null +++ b/riot/emojione/svg/1f596-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m31.1 43.5l7.7 1.8 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9-2.1-.5-4.2.9-4.8 3.2l-7.6 32.6"/><path d="m22.1 41.3l9 2.2 8.3-35.5c.6-2.6-.9-5.3-3.4-5.9-2.5-.6-5 1.1-5.7 3.8l-8.2 35.4"/><path d="m20.3 42.8l8.4-2.2-9.8-33c-.7-2.3-3.1-3.7-5.5-3.1-2.3.6-3.7 3-3 5.3l9.9 33"/><path d="m6.9 11.5c-2.2.6-3.3 2.7-2.7 4.9l8.4 28.4 7.7-2-8.4-28.4c-.7-2.1-2.9-3.4-5-2.9"/></g><g fill="#e0a372"><path d="m43.5 7.7c-.2-.1-.5-.1-.7-.1 1.7.8 2.7 2.7 2.2 4.7l-7.6 32.7 1.4.3 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9"/><path d="m36 2.1c-.2 0-.5-.1-.7-.1 2.1.9 3.3 3.3 2.7 5.7l-4.7 20.1.9 2.5 5.2-22.3c.6-2.6-.9-5.3-3.4-5.9"/><path d="m13.5 4.5c-.3.1-.5.2-.7.3 2.1-.2 4.1 1.1 4.7 3.2l5.7 19.3 2.1 1.9-6.4-21.6c-.6-2.3-3.1-3.7-5.4-3.1"/><path d="m6.9 11.5c-.3.1-.5.2-.7.3 1.9-.1 3.7 1.1 4.3 3l4 13.6 2.1 1.7-4.6-15.6c-.8-2.2-3-3.5-5.1-3"/></g><path d="m59.7 29.2c-1.5-3.1-6.5-2.9-11.6 2.7-3.5 3.9-5.1 5.3-8.6 5.3l.8-4.5-30.9 1.2c0 0-1.8 12.8 1.2 19.8 4.5 10.4 27.8 13.2 35.1-4.6 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m59.7 29.2c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7 10.5-2.6 3.3-5.6 5.9-7.1 9.4-6.3 15.4-24.6 15.4-32.3 8.3 7 8 26.7 8.8 33.4-7.3 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5"/><path d="m40.7 37.1c-6.5-2.4-18 2.1-16.4 13.7 0-10.9 10.1-13.6 15.5-13.6.7 0 .9-.1.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f596-1f3fd.svg b/riot/emojione/svg/1f596-1f3fd.svg new file mode 100644 index 0000000..ab30859 --- /dev/null +++ b/riot/emojione/svg/1f596-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m31.1 43.5l7.7 1.8 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9-2.1-.5-4.2.9-4.8 3.2l-7.6 32.6"/><path d="m22.1 41.3l9 2.2 8.3-35.5c.6-2.6-.9-5.3-3.4-5.9-2.5-.6-5 1.1-5.7 3.8l-8.2 35.4"/><path d="m20.3 42.8l8.4-2.2-9.8-33c-.7-2.3-3.1-3.7-5.5-3.1-2.3.6-3.7 3-3 5.3l9.9 33"/><path d="m6.9 11.5c-2.2.6-3.3 2.7-2.7 4.9l8.4 28.4 7.7-2-8.4-28.4c-.7-2.1-2.9-3.4-5-2.9"/></g><g fill="#b58360"><path d="m43.5 7.7c-.2-.1-.5-.1-.7-.1 1.7.8 2.7 2.7 2.2 4.7l-7.6 32.7 1.4.3 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9"/><path d="m36 2.1c-.2 0-.5-.1-.7-.1 2.1.9 3.3 3.3 2.7 5.7l-4.7 20.1.9 2.5 5.2-22.3c.6-2.6-.9-5.3-3.4-5.9"/><path d="m13.5 4.5c-.3.1-.5.2-.7.3 2.1-.2 4.1 1.1 4.7 3.2l5.7 19.3 2.1 1.9-6.4-21.6c-.6-2.3-3.1-3.7-5.4-3.1"/><path d="m6.9 11.5c-.3.1-.5.2-.7.3 1.9-.1 3.7 1.1 4.3 3l4 13.6 2.1 1.7-4.6-15.6c-.8-2.2-3-3.5-5.1-3"/></g><path d="m59.7 29.2c-1.5-3.1-6.5-2.9-11.6 2.7-3.5 3.9-5.1 5.3-8.6 5.3l.8-4.5-30.9 1.2c0 0-1.8 12.8 1.2 19.8 4.5 10.4 27.8 13.2 35.1-4.6 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5" fill="#d6a57c"/><g fill="#b58360"><path d="m59.7 29.2c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7 10.5-2.6 3.3-5.6 5.9-7.1 9.4-6.3 15.4-24.6 15.4-32.3 8.3 7 8 26.7 8.8 33.4-7.3 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5"/><path d="m40.7 37.1c-6.5-2.4-18 2.1-16.4 13.7 0-10.9 10.1-13.6 15.5-13.6.7 0 .9-.1.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f596-1f3fe.svg b/riot/emojione/svg/1f596-1f3fe.svg new file mode 100644 index 0000000..6104d99 --- /dev/null +++ b/riot/emojione/svg/1f596-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m31.1 43.5l7.7 1.8 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9-2.1-.5-4.2.9-4.8 3.2l-7.6 32.6"/><path d="m22.1 41.3l9 2.2 8.3-35.5c.6-2.6-.9-5.3-3.4-5.9-2.5-.6-5 1.1-5.7 3.8l-8.2 35.4"/><path d="m20.3 42.8l8.4-2.2-9.8-33c-.7-2.3-3.1-3.7-5.5-3.1-2.3.6-3.7 3-3 5.3l9.9 33"/><path d="m6.9 11.5c-2.2.6-3.3 2.7-2.7 4.9l8.4 28.4 7.7-2-8.4-28.4c-.7-2.1-2.9-3.4-5-2.9"/></g><g fill="#935e3e"><path d="m43.5 7.7c-.2-.1-.5-.1-.7-.1 1.7.8 2.7 2.7 2.2 4.7l-7.6 32.7 1.4.3 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9"/><path d="m36 2.1c-.2 0-.5-.1-.7-.1 2.1.9 3.3 3.3 2.7 5.7l-4.7 20.1.9 2.5 5.2-22.3c.6-2.6-.9-5.3-3.4-5.9"/><path d="m13.5 4.5c-.3.1-.5.2-.7.3 2.1-.2 4.1 1.1 4.7 3.2l5.7 19.3 2.1 1.9-6.4-21.6c-.6-2.3-3.1-3.7-5.4-3.1"/><path d="m6.9 11.5c-.3.1-.5.2-.7.3 1.9-.1 3.7 1.1 4.3 3l4 13.6 2.1 1.7-4.6-15.6c-.8-2.2-3-3.5-5.1-3"/></g><path d="m59.7 29.2c-1.5-3.1-6.5-2.9-11.6 2.7-3.5 3.9-5.1 5.3-8.6 5.3l.8-4.5-30.9 1.2c0 0-1.8 12.8 1.2 19.8 4.5 10.4 27.8 13.2 35.1-4.6 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5" fill="#b47d56"/><g fill="#935e3e"><path d="m59.7 29.2c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7 10.5-2.6 3.3-5.6 5.9-7.1 9.4-6.3 15.4-24.6 15.4-32.3 8.3 7 8 26.7 8.8 33.4-7.3 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5"/><path d="m40.7 37.1c-6.5-2.4-18 2.1-16.4 13.7 0-10.9 10.1-13.6 15.5-13.6.7 0 .9-.1.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f596-1f3ff.svg b/riot/emojione/svg/1f596-1f3ff.svg new file mode 100644 index 0000000..e936d88 --- /dev/null +++ b/riot/emojione/svg/1f596-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m31.1 43.5l7.7 1.8 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9-2.1-.5-4.2.9-4.8 3.2l-7.6 32.6"/><path d="m22.1 41.3l9 2.2 8.3-35.5c.6-2.6-.9-5.3-3.4-5.9-2.5-.6-5 1.1-5.7 3.8l-8.2 35.4"/><path d="m20.3 42.8l8.4-2.2-9.8-33c-.7-2.3-3.1-3.7-5.5-3.1-2.3.6-3.7 3-3 5.3l9.9 33"/><path d="m6.9 11.5c-2.2.6-3.3 2.7-2.7 4.9l8.4 28.4 7.7-2-8.4-28.4c-.7-2.1-2.9-3.4-5-2.9"/></g><g fill="#705041"><path d="m43.5 7.7c-.2-.1-.5-.1-.7-.1 1.7.8 2.7 2.7 2.2 4.7l-7.6 32.7 1.4.3 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9"/><path d="m36 2.1c-.2 0-.5-.1-.7-.1 2.1.9 3.3 3.3 2.7 5.7l-4.7 20.1.9 2.5 5.2-22.3c.6-2.6-.9-5.3-3.4-5.9"/><path d="m13.5 4.5c-.3.1-.5.2-.7.3 2.1-.2 4.1 1.1 4.7 3.2l5.7 19.3 2.1 1.9-6.4-21.6c-.6-2.3-3.1-3.7-5.4-3.1"/><path d="m6.9 11.5c-.3.1-.5.2-.7.3 1.9-.1 3.7 1.1 4.3 3l4 13.6 2.1 1.7-4.6-15.6c-.8-2.2-3-3.5-5.1-3"/></g><path d="m59.7 29.2c-1.5-3.1-6.5-2.9-11.6 2.7-3.5 3.9-5.1 5.3-8.6 5.3l.8-4.5-30.9 1.2c0 0-1.8 12.8 1.2 19.8 4.5 10.4 27.8 13.2 35.1-4.6 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5" fill="#8a6859"/><g fill="#705041"><path d="m59.7 29.2c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7 10.5-2.6 3.3-5.6 5.9-7.1 9.4-6.3 15.4-24.6 15.4-32.3 8.3 7 8 26.7 8.8 33.4-7.3 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5"/><path d="m40.7 37.1c-6.5-2.4-18 2.1-16.4 13.7 0-10.9 10.1-13.6 15.5-13.6.7 0 .9-.1.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f596.svg b/riot/emojione/svg/1f596.svg new file mode 100644 index 0000000..b2fb218 --- /dev/null +++ b/riot/emojione/svg/1f596.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m31.1 43.5l7.7 1.8 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9-2.1-.5-4.2.9-4.8 3.2l-7.6 32.6"/><path d="m22.1 41.3l9 2.2 8.3-35.5c.6-2.6-.9-5.3-3.4-5.9-2.5-.6-5 1.1-5.7 3.8l-8.2 35.4"/><path d="m20.3 42.8l8.4-2.2-9.8-33c-.7-2.3-3.1-3.7-5.5-3.1-2.3.6-3.7 3-3 5.3l9.9 33"/><path d="m6.9 11.5c-2.2.6-3.3 2.7-2.7 4.9l8.4 28.4 7.7-2-8.4-28.4c-.7-2.1-2.9-3.4-5-2.9"/></g><g fill="#eba352"><path d="m43.5 7.7c-.2-.1-.5-.1-.7-.1 1.7.8 2.7 2.7 2.2 4.7l-7.6 32.7 1.4.3 7.6-32.7c.5-2.2-.8-4.4-2.9-4.9"/><path d="m36 2.1c-.2 0-.5-.1-.7-.1 2.1.9 3.3 3.3 2.7 5.7l-4.7 20.1.9 2.5 5.2-22.3c.6-2.6-.9-5.3-3.4-5.9"/><path d="m13.5 4.5c-.3.1-.5.2-.7.3 2.1-.2 4.1 1.1 4.7 3.2l5.7 19.3 2.1 1.9-6.4-21.6c-.6-2.3-3.1-3.7-5.4-3.1"/><path d="m6.9 11.5c-.3.1-.5.2-.7.3 1.9-.1 3.7 1.1 4.3 3l4 13.6 2.1 1.7-4.6-15.6c-.8-2.2-3-3.5-5.1-3"/></g><path d="m59.7 29.2c-1.5-3.1-6.5-2.9-11.6 2.7-3.5 3.9-5.1 5.3-8.6 5.3l.8-4.5-30.9 1.2c0 0-1.8 12.8 1.2 19.8 4.5 10.4 27.8 13.2 35.1-4.6 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5" fill="#ffdd67"/><g fill="#eba352"><path d="m59.7 29.2c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.8 6.5-7 10.5-2.6 3.3-5.6 5.9-7.1 9.4-6.3 15.4-24.6 15.4-32.3 8.3 7 8 26.7 8.8 33.4-7.3 1.5-3.5 4.4-6.1 7.1-9.4 3.1-4 8.6-7.1 6.9-10.5"/><path d="m40.7 37.1c-6.5-2.4-18 2.1-16.4 13.7 0-10.9 10.1-13.6 15.5-13.6.7 0 .9-.1.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5a4.svg b/riot/emojione/svg/1f5a4.svg new file mode 100644 index 0000000..5cedc5f --- /dev/null +++ b/riot/emojione/svg/1f5a4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5a5.svg b/riot/emojione/svg/1f5a5.svg new file mode 100644 index 0000000..852287c --- /dev/null +++ b/riot/emojione/svg/1f5a5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,6c0-2-2-4-4-4H6C4,2,2,4,2,6v38h60V6z" fill="#212528"/><path d="M2,44v4c0,2,2,4,4,4h52c2,0,4-2,4-4v-4H2z" fill="#ddd"/><path d="m24 54c0 4-4 4-8 4h32c-4 0-8 0-8-4v-2h-16v2" fill="#bfbebe"/><path fill="#3e4347" d="m6 6h52v34h-52z"/><g fill="#94989b"><circle cx="32" cy="47.9" r="1"/><path d="m16 58h32v4h-32z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5a8.svg b/riot/emojione/svg/1f5a8.svg new file mode 100644 index 0000000..4eb491f --- /dev/null +++ b/riot/emojione/svg/1f5a8.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M52,16c-10,0-30,0-40,0C8.3,16,2,21.1,2,26.8C2,32.5,4.2,54,4.2,54h55.5c0,0,2.2-21.5,2.2-27.2 + C62,21.1,55.7,16,52,16z" fill="#e8e8e8"/><g fill="#b2c1c0"><path d="m7 54v4c0 1.1.9 2 2 2h46c1.1 0 2-.9 2-2v-4h-50"/><path d="M48.7,16c-8.3,0-25,0-33.3,0C12.3,16,7,21.1,7,26.8C7,32.5,8.9,54,8.9,54h46.3c0,0,1.9-21.5,1.9-27.2 + C57,21.1,51.7,16,48.7,16z"/></g><path d="m52 50c0 2.2-.5 4-1 4h-38c-.6 0-1-1.8-1-4 0-2.2.4-3 1-3h38c.5 0 1 .8 1 3" fill="#62727a"/><path d="m51.9 58c-3.7-4.8-5-8-5-8h-29.8c0 0-1.2 3.2-5 8s2.6 3.9 6.9 3.9h26c4.2 0 10.6 1 6.9-3.9" fill="#e8e8e8"/><g fill="#b2c1c0"><path d="m19.9 52.3c-1 2.4-2.4 4.8-3.8 7-.3.5.5.9.8.4 1.5-2.3 2.9-4.7 3.9-7.2.2-.5-.7-.7-.9-.2"/><path d="m25.7 52.3c-.4 2.4-1.2 4.8-1.9 7.1-.2.5.8.8.9.2.8-2.3 1.5-4.7 1.9-7.1.1-.5-.8-.7-.9-.2"/><path d="m37.3 52.6c.4 2.4 1.2 4.8 1.9 7.1.2.5 1.1.3.9-.2-.8-2.3-1.5-4.7-1.9-7.1 0-.6-.9-.4-.9.2"/><path d="m43.2 52.6c1 2.5 2.5 4.9 3.9 7.2.3.5 1.2 0 .8-.4-1.4-2.2-2.9-4.6-3.8-7-.2-.6-1.1-.4-.9.2"/><path d="m31.5 52.4c0 2.4 0 4.7 0 7.1 0 .6 1 .6 1 0 0-2.4 0-4.7 0-7.1 0-.5-1-.5-1 0"/></g><path d="m16.9 18c-2.1 1.1-2.4 3.8-2.4 4.5 0 1 0 1.5 5.8 1.5 5.8 0 17.5 0 23.3 0 5.8 0 5.8-.5 5.8-1.5 0-.7-.3-3.4-2.4-4.5h-30.1" fill="#62727a"/><path d="m45 2h-26c-1.1 0-2 .9-2 2v16h30v-16c0-1.1-.9-2-2-2" fill="#b2c1c0"/><path d="m44 4h-24c-.5 0-1 .4-1 1v15h26v-15c0-.5-.5-1-1-1" fill="#e8e8e8"/><path d="M32,8c-2.7,0-5-1.3-6.5-3.3C26.6,7.2,29.1,9,32,9s5.4-1.8,6.5-4.3C37,6.7,34.7,8,32,8z" fill="#b2c1c0"/><path fill="#fff" d="m21 9h22v11h-22z"/><path d="m53 27c0 .6 0 1-21 1s-21-.4-21-1 0-1 21-1 21 .4 21 1" fill="#e8e8e8"/><circle cx="50" cy="34" r="1" fill="#f15744"/><circle cx="50" cy="38" r="1" fill="#c7e755"/><path d="m41.9 50h-19.8c0 0-.6 4.8-3.1 8h26c-2.5-3.2-3.1-8-3.1-8" fill="#fff"/><path d="m21 38c0 .5-.5 1-1 1h-7c-.6 0-1-.5-1-1v-4c0-.5.4-1 1-1h7c.5 0 1 .5 1 1v4" fill="#c7e755"/><g fill="#62727a"><path d="m13 41.5h2c.4 0 .7-.2.8-.5.1.1.2.3.2.5 0 .5-.4 1-1 1h-2c-.6 0-1-.5-1-1 0-.2.1-.4.2-.5.1.3.4.5.8.5"/><path d="m18 41.5h2c.4 0 .7-.2.8-.5.1.1.2.3.2.5 0 .5-.5 1-1 1h-2c-.5 0-1-.5-1-1 0-.2.1-.4.2-.5.1.3.4.5.8.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5b1.svg b/riot/emojione/svg/1f5b1.svg new file mode 100644 index 0000000..ed83ffe --- /dev/null +++ b/riot/emojione/svg/1f5b1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m19 58.7h-2.4c0-3.2-2.9-8.2-5.1-11.8-3.4-5.4-9.5-13.2-9.5-23.9 0-6.3 2-11.2 6.8-13.2 3.9-1.6 8.1.1 10.8 2.8l-1.7 1.7c-2-2-5.2-3.5-8.2-2.3-3.9 1.6-5.3 5.7-5.3 11 0 9.9 5.8 17.1 9.2 22.6 2.4 4 5.4 9.3 5.4 13.1" fill="#94989b"/><g fill="#bcc2cc"><path d="m13.2 14.5c-.8-.8-.9-1.8-.4-2.3l2.6-2.6c.5-.5 1.6-.3 2.3.4l-4.5 4.5"/><path d="m19.1 42.8c-13.1-13.1-10.8-22.9-3.4-30.3 7.4-7.4 17.2-9.7 30.3 3.3 16.5 16.5 18.4 30.4 11 37.9-7.5 7.4-21.5 5.5-37.9-10.9"/></g><g fill="#d8dfeb"><path d="m28.1 24.9c-5.1 5-9.1 10.6-11.6 16.5.7.8 1.5 1.6 2.3 2.4 16.5 16.6 30.9 18.2 38.7 10.4s6.1-22.1-10.4-38.7c-.8-.8-1.6-1.6-2.4-2.3-6 2.6-11.5 6.6-16.6 11.7"/><path d="m44 12.6c-9.4-8.5-17-8.9-23.2-5.4l11.8 11.8c3.6-2.8 7.3-5 11.4-6.4"/><path d="m11.1 16.8l11.9 11.9c1.3-1.6 2.7-3.2 4.2-4.7 1.5-1.5 3.1-2.9 4.7-4.2l-11.8-11.9c-1.8 1-3.5 2.4-5 3.9-1.6 1.6-3 3.3-4 5"/><path d="m15.8 40.7c1.4-4 3.7-7.8 6.5-11.4l-11.9-11.8c-3.5 6.3-3.1 13.9 5.4 23.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5b2.svg b/riot/emojione/svg/1f5b2.svg new file mode 100644 index 0000000..35468b2 --- /dev/null +++ b/riot/emojione/svg/1f5b2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52 62v-43.1c0-8.4-4-15-14-15-7.3 0-12 5.6-12 13.1h-2c0-9.4 5.7-15 14-15 10.7 0 16 6.6 16 16.9v43.1h-2" fill="#d0d0d0"/><path d="m40 33.1c0 16-6.7 28.9-15 28.9-8.3 0-15-12.9-15-28.9 0-9.8 6.7-22.7 15-22.7 8.3 0 15 12.9 15 22.7" fill="#3e4347"/><g fill="#94989b"><path d="m15.2 25.5c-.7 2.5-1.2 5.1-1.2 7.6 0 4.9.6 9.3 1.6 13.1.3-.5.6-1 1-1.6 5.8-10.5 2.5-16.1-1.4-19.1"/><path d="m34.8 25.5c-3.9 2.9-7.2 8.6-1.4 19 .3.6.7 1.1 1 1.6 1-3.8 1.6-8.3 1.6-13.1 0-2.4-.4-5-1.2-7.5"/></g><ellipse cx="25" cy="21.7" rx="6" ry="5.6" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5bc.svg b/riot/emojione/svg/1f5bc.svg new file mode 100644 index 0000000..a0f89d0 --- /dev/null +++ b/riot/emojione/svg/1f5bc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#333" d="m2 4v56l30-28z"/><path fill="#697277" d="m62 4h-60l30 28z"/><path fill="#333" d="m2 60h60l-30-28z"/><path fill="#697277" d="m32 32l30 28v-56z"/><path fill="#52595e" d="m5 7h54v50h-54z"/><path fill="#697277" d="m9 11v42l23-21z"/><path fill="#333" d="m55 11h-46l23 21z"/><path fill="#697277" d="m9 53h46l-23-21z"/><path fill="#333" d="m32 32l23 21v-42z"/><path fill="#42ade2" d="m16 18h32v18h-32z"/><path fill="#fed0ac" d="m16 34.7h32v11.3h-32z"/><circle cx="40.5" cy="24.5" r="3.8" fill="#ffce31"/><path fill="#89664c" d="M21.3 37.9 32 41 32 28.4z"/><path fill="#d3976e" d="M42.7 37.9 32 41 32 28.4z"/><path d="M11,13v38h42V13H11z M47,45H17V19h30V45z" fill="#fff"/><path d="M12,14v36h40V14H12z M48.2,46.2H15.8V17.8h32.3V46.2z" fill="#bfb3a4"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5c2.svg b/riot/emojione/svg/1f5c2.svg new file mode 100644 index 0000000..d2046e8 --- /dev/null +++ b/riot/emojione/svg/1f5c2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63.4 24.7h-15.7v34.3l16-32.4c.5-1 .4-1.8-.3-1.9" fill="#89664c"/><path d="m60.8 21.3h-15.7l2.6 37.7 13.4-35.8c.5-1 .3-1.8-.3-1.9" fill="#aa7d5e"/><path d="m56.1 17.9h-8.4v41.1l9.4-38.8c.3-1.3-.2-2.3-1-2.3" fill="#d3976e"/><path d="m52.2 13h-8.4l3.9 46 5.4-43.7c.3-1.3-.1-2.3-.9-2.3" fill="#f2bc97"/><path d="M45.8,11h-22V7.6C23.8,6.2,23,5,22,5H1.9C0.8,5,0,6.2,0,7.6V59h47.7V13.6C47.7,12.1,46.8,11,45.8,11z" fill="#ffce31"/><g fill="#fff"><ellipse cx="10.8" cy="54.7" rx="2.5" ry="2.5"/><path d="m23.9 52.2c-1.4 0-2.5 1.1-2.5 2.5 0 1.4 1.1 2.5 2.5 2.5 1.4 0 2.5-1.1 2.5-2.5 0-1.4-1.1-2.5-2.5-2.5"/><ellipse cx="36.9" cy="54.7" rx="2.5" ry="2.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5c3.svg b/riot/emojione/svg/1f5c3.svg new file mode 100644 index 0000000..4ab8e1b --- /dev/null +++ b/riot/emojione/svg/1f5c3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#534741" d="M64 57.3 28 64 6.5 50.6 42.6 44z"/><path fill="#3e4347" d="m42.6 44l-36.1 6.7v-13.2l36.1-6.7z"/><path fill="#d0d0d0" d="M64 57.4 42.6 44 42.6 30.8 64 47.4z"/><path fill="#ed4c5c" d="m46 43.4l-36 6.7v-13.3l18-3.3v1.9l18-3.2z"/><path fill="#ff8736" d="m51.4 46.5l-36.1 6.6v-13.2l18-3.3v2.3l18.1-3.5z"/><path fill="#83bf4f" d="m56.7 49.9l-36 6.6v-13.2l18-3.3v2l18-3.2z"/><path fill="#ffce31" d="m62.1 53.3l-36 6.7v-13.3l18-3.3v2.6l18-3.8z"/><path fill="#d0d0d0" d="M28 64 6.5 50.6 6.5 37.4 28 54.1z"/><g fill="#3e4347"><path d="m64 57.3l-36 6.7v-9.9l36-6.7z"/><path d="M36 26.8 0 33.4 0 6.6 36 0z"/></g><path fill="#94989b" d="m36 26.8l-36 6.6 6.5 4.1 36.1-6.7z"/><g fill="#d0d0d0"><path d="m0 6.6l3.3 2 3.2 28.8-6.5-4z"/><path d="m36 0l3.3 2 3.3 28.8-6.6-4z"/></g><path fill="#94989b" d="m36 0l-36 6.6 3.3 2 36-6.6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5c4.svg b/riot/emojione/svg/1f5c4.svg new file mode 100644 index 0000000..e27bdf1 --- /dev/null +++ b/riot/emojione/svg/1f5c4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63.2 5.6l-28.7-5.6-22.9 7.5 7.4 13.4 44.9-14.7c-.2-.3-.4-.5-.7-.6" fill="#b9b9bf"/><path d="m63.9 6.2l-44.9 14.7 15.3 27.8 6.8 12.3 22-7.4c0 0 .8-.2.8-.7v-46.2c.1-.2 0-.3 0-.5" fill="#898a90"/><path d="m41.5 60.3c0 .5-.4.8-.8.7l-28.7-5.7c-.5-.1-.9-.5-.9-1v-46.1c0-.5.4-.8.9-.7l28.6 5.6c.5.1.8.5.8 1v46.2z" fill="#9fa1a6"/><g fill="#3e4347"><path d="m14.2 34.2c0-.5.4-.8.8-.7l22.6 4.5c.5.1.8.5.8 1v17.4c0 .5-.4.8-.8.7l-22.6-4.5c-.5-.1-.8-.5-.8-1 0 .1 0-17.4 0-17.4"/><path d="m38.5 34.9c0 .4-.4.7-.8.6l-22.6-4.5c-.5-.1-.8-.5-.8-1s.4-.7.8-.6l22.6 4.5c.4.1.8.6.8 1"/></g><path d="m14.2 11.8c0-.5.4-.8.8-.7l22.6 4.5c.5.1.8.5.8 1v17.4c0 .5-.4.8-.8.7l-22.6-4.5c-.5-.1-.8-.5-.8-1v-17.4" fill="#d0d0d0"/><path d="m23.3 26.3v.8c0 .4.4.9.8 1l4.4.9c.5.1.9-.2.9-.6v-.8l-6.1-1.3" fill="#3e4347"/><path d="m29.4 27.5c0 .5-.4.8-.9.7l-4.4-.9c-.5-.1-.8-.5-.8-1v-3.1c0-.5.4-.8.8-.7l4.4.9c.5.1.9.5.9 1 0 0 0 3.1 0 3.1" fill="#94989b"/><path d="m28.8 25.3c0 .2-.2.4-.4.3l-.8-.2c-.2 0-.4-.3-.4-.5v-.8c0-.2.2-.4.4-.3l.8.2c.2 0 .4.3.4.5v.8" fill="#d0d0d0"/><path fill="#42ade2" d="m11.9 33.1l22.9 2.5-.7 21.6-21.3-4.8z"/><path fill="#ffce31" d="m16.1 31.3l18 14.3-8.7 6.8-18.1-4z"/><path fill="#83bf4f" d="m7 33.8l21.8 7.3-2.5 11.3h-21.8z"/><path fill="#ed4c5c" d="m2.7 41.3l23-.4 4.7 16.3-23.1 2z"/><path fill="#898a90" d="m38.5 56.5l-14.5 6.5v-6.1l14.5-6.5z"/><path d="m24.3 63.3c0 .4-.4.7-.9.6l-22.6-4.4c-.4-.1-.8-.5-.8-.9s.4-.7.8-.6l22.6 4.5c.5 0 .9.4.9.8" fill="#3e4347"/><path d="m0 40.3c0-.5.4-.8.8-.7l22.6 4.4c.5.1.9.5.9 1v17.4c0 .5-.4.8-.9.7l-22.6-4.4c-.5-.1-.8-.5-.8-1v-17.4" fill="#d0d0d0"/><path d="m15.2 55.9l-6.1-1.2v.8c0 .4.4.8.8.9l4.4.9c.5.1.8-.2.8-.6l.1-.8" fill="#3e4347"/><path d="m15.2 55.9c0 .5-.4.8-.8.7l-4.4-.9c-.5-.1-.9-.5-.9-1v-3.1c0-.5.4-.8.9-.7l4.4.9c.5.1.8.5.8 1 0 0 0 3.1 0 3.1" fill="#94989b"/><path d="m14.6 53.8c0 .2-.2.4-.4.3l-.8-.1c-.2 0-.4-.3-.4-.5v-.8c0-.2.2-.4.4-.3l.8.2c.2 0 .4.3.4.5v.7" fill="#d0d0d0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5d1.svg b/riot/emojione/svg/1f5d1.svg new file mode 100644 index 0000000..a83f728 --- /dev/null +++ b/riot/emojione/svg/1f5d1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m4.9 24.5l3.2 25.7c.1 7.6 10.2 13.8 22.6 13.8 12.5 0 22.6-6.2 22.6-13.8l3.2-25.7h-51.6" fill="#b1bcc4"/><g fill="#cad5dd"><path d="m9.1 24.5l2.7 25.7c0 7.6 8.5 13.8 18.9 13.8 10.5 0 18.9-6.2 18.9-13.8l2.7-25.7h-43.2"/><ellipse cx="30.7" cy="25.2" rx="25.8" ry="11.7"/></g><ellipse cx="30.7" cy="24.5" rx="21.1" ry="9.6" fill="#333"/><path d="m17.3 26.4c.4 3.3-4.9-3.7-6.5-1.6-.8 1.1 3.6 6.5 3.6 6.5l11-4.9c0 0 1-8.6-.5-7-3.6 3.8-8.3 1.4-7.6 7" fill="#efd57f"/><path d="m22.8 26.4c-3.4-.5-2.4-6.2-5-5.5-3.5.9-.9 5.3-7.2 8.1 0 0 18.1 12.4 19.6-.1 0 .1-3-6.8-4.9-6.2-1.1.3-.2 4-2.5 3.7" fill="#fee790"/><path d="m33.3 25.7c-.3 3.3 8.5 9.5 8.5 9.5l11.8-9.6c0 0-3.8-1.1-5-2.6-.8-1.1-2-4.2-4.4-3.8-2.6.5-1.8 4.8-3.1 5.8-1.4 1.1-7.6-1.6-7.8.7" fill="#efd57f"/><path d="m48.9 20.4c-1.1-.9-14.1 8.3-14.2 8.6-.4 2.2 5.1 2 5.8 2-.8 4.2 13.5.1 13.8-2.2-1.1-2.5-3-3.6-5.8-3.4-.2 0 2.4-3.3.4-5" fill="#fee790"/><path d="m23.6 35.5c-.8 1.1 17.2-.6 17.4-.9 1.4-1.7-3.4-4.1-4-4.5 2.9-3.3.8-4.4-3.2-3.3.4-6.8-1.2-8.5-4.5 0-1.2-.6-5.4-.1-6.3 2.1-1.1 2.4 4.8 1 .6 6.6" fill="#428bc1"/><path d="m27.3 21.8c-1.8.5-1.1 12.6 1.3 13.2-.2.3-2.5 2.8-1.5 3.6 1.6 1.4 8.9-4.7 8.6-6.5 6.8.8 9-.7.3-4.3.7-1 3.9-4.1 1.8-5.1-2.4-1.2-4.4 3.1-6.1 2.8-1.5-.3-1.9-4.4-4.4-3.7" fill="#42ade2"/><g fill="#b1bcc4"><path d="m51.7 32l-2 18.2c0 7.6-8.5 13.8-18.9 13.8 12.5 0 22.6-6.2 22.6-13.8l3-23.5c-.7 2-2.3 3.8-4.7 5.3"/><path d="m11.8 50.2l-2-18.2c-2.4-1.5-4-3.3-4.6-5.2l3 23.5c0 7.5 10.1 13.7 22.5 13.7-10.4 0-18.9-6.2-18.9-13.8"/></g><path d="m56.6 24.5c-.7-6.2-12-11.1-25.8-11.1-13.9 0-25.1 4.9-25.8 11.1v.2c0 .1 0 .3 0 .4 0 .5.1 1.1.2 1.6.6 1.9 2.2 3.7 4.6 5.3l2 18.2c0 7.6 8.5 13.8 18.9 13.8 10.5 0 18.9-6.2 18.9-13.8l2-18.2c2.4-1.5 4-3.3 4.6-5.2.2-.5.2-1.1.2-1.6 0-.1 0-.3 0-.4l.2-.3m-25.9 9.6c-11.6 0-21.1-4.3-21.1-9.6s9.5-9.5 21.1-9.5c11.6 0 21.1 4.3 21.1 9.6s-9.4 9.5-21.1 9.5" fill="#cad5dd"/><g fill="#7d8b91"><path transform="matrix(.9824-.1867.1867.9824-10.403 2.9474)" d="m9.4 55.9h2.1v1.6h-2.1z"/><path transform="matrix(.9825-.1863.1863.9825-10.1515 5.4152)" d="m22.7 55.9h2.1v1.6h-2.1z"/><path d="m13.7 52.6c0 0 4.1 3.8 11.2 4.7 0 0-.8 5.6-2.7 6.4-3.2 1.4-12-2.7-12.6-6-.4-1.7 4.1-5.1 4.1-5.1"/></g><path d="m13.4 51c0 0 4.1 3.8 11.2 4.7 0 0-.8 5.6-2.7 6.4-3.2 1.4-12-2.7-12.6-6-.4-1.7 4.1-5.1 4.1-5.1" fill="#dfe9ef"/><path d="m54.4 29.9c-1.3 1.7-3.1 3-4.9 4.2-1.9 1.1-3.9 2-5.9 2.6-4.1 1.3-8.5 1.8-12.8 1.8-4.3 0-8.6-.5-12.8-1.7-2.1-.6-4.1-1.5-6-2.6-1.8-1.1-3.6-2.5-4.8-4.3 1.5 1.5 3.4 2.6 5.2 3.4 1.9.9 3.9 1.5 5.9 1.9 4.1.9 8.2 1.2 12.4 1.2 4.2 0 8.3-.4 12.4-1.3 2-.5 4-1.1 5.9-2 1.9-.7 3.8-1.8 5.4-3.2" fill="#fff"/><path d="m58.4 14.7l.6-3.6c.6-2.9-10.8-7.4-22.1-9.6-11.3-2.1-23.8-2.1-24.4.8l-1 3.5 46.9 8.9" fill="#b1bcc4"/><path d="m55.4 14.1l.6-3.6c.6-2.9-9.2-7.2-19.1-9-9.8-1.9-20.7-1.5-21.4 1.4l-.9 3.5 40.8 7.7" fill="#cad5dd"/><path d="M11.6,5.6C12.1,3.2,23,3.2,36,5.6s23,6.4,22.5,8.8c-0.5,2.4-11.5,2.4-24.4,0C21.1,12,11,8,11.6,5.6z" fill="#7d8b91"/><path d="m15.8 6.6c.4-2 9.4-2 20 0s18.8 5.2 18.4 7.2c-.4 2-9.4 2-20 0-10.6-1.9-18.8-5.2-18.4-7.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5d2.svg b/riot/emojione/svg/1f5d2.svg new file mode 100644 index 0000000..edfd8d0 --- /dev/null +++ b/riot/emojione/svg/1f5d2.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60 58.2c0 2.1-1.7 3.7-3.9 3.7h-45.3c-2.1 0-3.9-1.7-3.9-3.7v-44.3c0-2.1 1.7-3.8 3.9-3.8h45.4c2.1 0 3.9 1.7 3.9 3.8v44.3z" fill="#93a2aa"/><path d="M57.1,58.2c0,2.1-1.7,3.7-3.9,3.7H7.9C5.7,62,4,60.3,4,58.2V13.9c0-2.1,1.7-3.8,3.9-3.8h45.4 + c2.1,0,3.9,1.7,3.9,3.8V58.2z" fill="#f0f4f5"/><path d="m52.3 56.4c-6.4 6.2-18 5.6-18 5.6s8.5-2.5 16.3-11.7c5.9-6.9 6.5-15.3 6.5-15.3s3.5 13.3-4.8 21.4" fill="#93a2aa"/><g fill="#3e4347"><ellipse cx="13.1" cy="17" rx="2.9" ry="2.8"/><ellipse cx="24.8" cy="17" rx="2.9" ry="2.8"/><ellipse cx="36.3" cy="17" rx="2.9" ry="2.8"/><ellipse cx="47.9" cy="17" rx="2.9" ry="2.8"/><path d="m40.6 4.6c-.7-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.9 2.1-.1 2.2-.1 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c-.1-1.9-.4-3.9-1.2-5.6m-3.7-.4c.1 0 .1 0 0 0"/><path d="m29 4.6c-.6-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.9 2.1-.1 2.2-.1 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c-.1-1.9-.3-3.9-1.2-5.6m-3.6-.4c0 0 0 0 0 0"/><path d="m17.4 4.6c-.6-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.8 2.1 0 2.2-.1 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c-.1-1.9-.4-3.9-1.3-5.6m-3.6-.4c0 0 0 0 0 0"/><path d="m52.1 4.6c-.6-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.9 2.1-.1 2.2 0 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c0-1.9-.3-3.9-1.2-5.6m-3.6-.4c0 0 0 0 0 0"/></g><g fill="#94989b"><path d="m36.3 16c-.3 0 .4.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.9-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3 0-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.1-2.9 1.4-3.6 2.6-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.9.3 1.9-1.9 0-2"/><path d="m24.8 16c-.4 0 .3.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.9-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3 0-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.1-2.9 1.4-3.6 2.6-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.8.3 1.8-1.9 0-2"/><path d="m13.2 16c-.3 0 .3.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.9-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3 0-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.1-2.9 1.4-3.6 2.6-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.9.3 1.9-1.9 0-2"/><path d="m47.9 16c-.3 0 .3.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.9-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3 0-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.3-2.9 1.6-3.6 2.8-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.9.1 1.9-2.1 0-2.2"/></g><g fill="#7d8b91"><path d="m8.7 25.2h42.9v2.8h-42.9z"/><path d="m8.7 33.6h42.9v2.8h-42.9z"/><path d="m8.7 41.9h42.9v2.8h-42.9z"/><path d="m30.1 50.3h16.6v2.8h-16.6z"/></g><path d="m57.1 35c0 12.9-9.6 27-22.8 27 0 0 5.4-3 5.4-13.9 15.1 0 17.4-13.1 17.4-13.1" fill="#d7dadb"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5d3.svg b/riot/emojione/svg/1f5d3.svg new file mode 100644 index 0000000..abe8a94 --- /dev/null +++ b/riot/emojione/svg/1f5d3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60 58.2c0 2.1-1.7 3.8-3.9 3.8h-45.3c-2.1 0-3.9-1.7-3.9-3.8v-44.3c0-2.1 1.7-3.8 3.9-3.8h45.4c2.1 0 3.9 1.7 3.9 3.8v44.3z" fill="#93a2aa"/><path d="M57.1,13.9c0-2.1-1.7-3.8-3.9-3.8H7.9c-2.1,0-3.9,1.7-3.9,3.8v21.3h53.1V13.9z" fill="#ed4c5c"/><path d="M4,35.1v23.1C4,60.3,5.7,62,7.9,62h45.4c2.1,0,3.9-1.7,3.9-3.8V35.1H4z" fill="#d9e3e8"/><g fill="#3e4347"><ellipse cx="13.1" cy="17" rx="2.9" ry="2.8"/><ellipse cx="24.8" cy="17" rx="2.9" ry="2.8"/><ellipse cx="36.3" cy="17" rx="2.9" ry="2.8"/><ellipse cx="47.9" cy="17" rx="2.9" ry="2.8"/><path d="m40.6 4.6c-.7-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.9 2.1-.1 2.2 0 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c-.1-1.9-.4-3.9-1.2-5.6m-3.7-.4c.1 0 .1 0 0 0"/><path d="m29 4.6c-.6-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.9 2.1-.1 2.2 0 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c-.1-1.9-.3-3.9-1.2-5.6m-3.6-.4c0 0 0 0 0 0"/><path d="m17.4 4.6c-.6-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.8 2.1 0 2.2 0 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c-.1-1.9-.4-3.9-1.3-5.6m-3.6-.4c0 0 0 0 0 0"/><path d="m52.1 4.6c-.6-1.2-1.7-2.5-3.6-2.6-1.8-.1-1.9 2.1-.1 2.2 0 0 .4.3.3.2.4.4.6.9.9 1.4.6 1.4.8 2.9.8 4.4h2.9c0-1.9-.3-3.9-1.2-5.6m-3.6-.4c0 0 0 0 0 0"/></g><g fill="#94989b"><path d="m36.3 16c-.3 0 .4.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.8-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3.1-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.1-2.9 1.4-3.6 2.6-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.8.3 1.8-1.9-.1-2"/><path d="m24.8 16c-.4 0 .3.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.9-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3 0-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.1-2.9 1.4-3.6 2.6-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.8.3 1.8-1.9 0-2"/><path d="m13.2 16c-.3 0 .3.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.9-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3 0-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.1-2.9 1.4-3.6 2.6-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.9.3 1.9-1.9 0-2"/><path d="m47.9 16c-.3 0 .3.1 0 0 .3.1-.4-.3-.2-.2-.4-.4-.6-.9-.9-1.4-.6-1.4-.8-2.9-.8-4.4 0-1.5.2-3 .8-4.4.2-.5.4-.8.8-1.3 0-.1.1-.1.4-.3-.3.2 0 0 .1 0-.2.1-.2.1-.1 0-.2 0-.3 0-.1 0 1.9-.1 1.9-2.3 0-2.2-1.9.3-2.9 1.6-3.6 2.8-.9 1.7-1.1 3.7-1.1 5.5 0 1.8.3 3.8 1.1 5.5.6 1.2 1.7 2.5 3.6 2.6 1.9.1 1.9-2.1 0-2.2"/></g><g fill="#d0d0d0"><path d="m33.5 10.1c0-1.5.2-3.1.8-4.6.3-.7.9-2.1 2-2.1.6 0 .6-.7 0-.7-1.4 0-2.1 1.2-2.6 2-.9 1.7-1.1 3.5-1.1 5.3 0 .6.9.6.9.1"/><path d="m21.9 10.1c0-1.5.2-3.1.8-4.6.3-.7.9-2.1 2-2.1.6 0 .6-.7 0-.7-1.4 0-2.1 1.2-2.6 2-.9 1.7-1.1 3.5-1.1 5.3.1.6.9.6.9.1"/><path d="m10.4 10.1c0-1.5.2-3.1.8-4.6.3-.7.9-2.1 2-2.1.6 0 .6-.7 0-.7-1.4 0-2.1 1.2-2.6 2-.9 1.7-1.1 3.5-1.1 5.3 0 .6.9.6.9.1"/><path d="m45.1 10.1c0-1.5.2-3.1.8-4.6.3-.7.9-2.1 2-2.1.6 0 .6-.7 0-.7-1.4 0-2.1 1.2-2.6 2-.9 1.7-1.1 3.5-1.1 5.3 0 .6.9.6.9.1"/></g><g fill="#fff"><path d="m19.1 28.4v.2c0 .8.1 1.4.3 1.7.1.3.5.5 1 .5.5 0 .8-.2 1-.5.1-.2.1-.6.1-1.1v-7.2h2.2v7.1c0 .9-.2 1.6-.5 2.1-.5.9-1.4 1.3-2.8 1.3s-2.2-.3-2.7-1c-.5-.7-.7-1.6-.7-2.9v-.2h2.1"/><path d="m26 22.1h2.2v6.3c0 .7.1 1.2.3 1.5.3.6.8.9 1.7.9.9 0 1.5-.3 1.7-.9.2-.3.3-.8.3-1.5v-6.3h2.2v6.3c0 1.1-.2 1.9-.5 2.5-.7 1.1-1.9 1.7-3.7 1.7s-3.1-.6-3.7-1.7c-.3-.6-.5-1.5-.5-2.5v-6.3"/><path d="m36.6 22.1h2.2v8.4h5.3v1.8h-7.5v-10.2"/></g><g fill="#333"><path d="m16.1 44.5v-2.8c1.3-.1 2.1-.1 2.6-.3.8-.2 1.4-.5 1.9-1.1.3-.4.6-.9.8-1.5.1-.4.2-.6.2-.8h3.3v20.6h-4.1v-14.1h-4.7"/><path d="m45 41.5c-.6.6-1.4 1.7-2.5 3.2-1.1 1.5-2 3.1-2.7 4.7-.6 1.3-1.1 2.8-1.5 4.7-.5 1.8-.7 3.4-.7 4.6h-4.1c.1-3.7 1.3-7.5 3.6-11.5 1.5-2.5 2.7-4.2 3.7-5.2h-10.1l.1-3.6h14.2v3.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5dc.svg b/riot/emojione/svg/1f5dc.svg new file mode 100644 index 0000000..7d7fcab --- /dev/null +++ b/riot/emojione/svg/1f5dc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m39.2 56.8h20.1v2.1h-20.1z"/><path fill="#3e4347" d="m46.5 44.8h5.5v4.5h-5.5z"/><g fill="#94989b"><path d="m18.9 9.2c3 0 5.9 0 8.9 0 2.4 0 4.9 0 7.3 0 2 2.2 4 4.3 5.9 6.5.1.2.3.3.4.5.7.7 1.5 1.1 2.5 1.1.5 0 1.1 0 1.6 0 2.1 0 4.1 0 6.2 0 1 0 2.1 0 3.1 0 1.8 0 3.3-1.6 3.3-3.6s-1.6-3.7-3.4-3.7c-3.2 0-6.4 0-9.6 0-2-2.2-4-4.3-5.9-6.5-.1-.2-.3-.3-.4-.5-.7-.6-1.5-1-2.4-1-.4 0-17.4 0-17.5 0-1.8 0-3.3 1.6-3.3 3.6 0 2 1.5 3.6 3.3 3.6"/><path d="m54.7 37.6c-3.3 0-6.6 0-9.9 0-1 0-1.9-.1-2.7.5-.6.4-1 1-1.5 1.5-1.4 1.6-2.9 3.1-4.3 4.7-.4.5-.9.9-1.3 1.4-2.5 0-5 0-7.5 0-2.9 0-5.8 0-8.7 0-1.8 0-3.3 1.6-3.3 3.6s1.5 3.6 3.3 3.6c3 0 5.9 0 8.9 0 2 0 4 0 6 0 .7 0 1.3 0 2 0 1.1 0 2.1-.1 3-1.1 2.1-2.3 4.3-4.6 6.4-7 2.8 0 5.7 0 8.5 0 .4 0 .7 0 1.1 0 1.8 0 3.3-1.6 3.3-3.6 0-2-1.5-3.6-3.3-3.6"/></g><path fill="#d0d0d0" d="m43.8 17.3h11v20.3h-11z"/><g fill="#3e4347"><path d="m54.7 20.6l-10.9 3.4v-3.4l10.9-3.3z"/><path d="m54.7 27.4l-10.9 3.4v-3.4l10.9-3.4z"/><path d="m54.7 34.2l-10.9 3.4v-3.4l10.9-3.4z"/></g><path d="m54.7 60.6c0 .8-.6 1.4-1.3 1.4h-8.3c-.7 0-1.3-.6-1.3-1.4v-5.3c0-.8.6-1.4 1.3-1.4h8.3c.7 0 1.3.6 1.3 1.4v5.3" fill="#94989b"/><g fill="#d0d0d0"><path d="m46.5 53.8h2.7v8.2h-2.7z"/><path d="m50.6 53.8h1.4v8.2h-1.4z"/></g><ellipse cx="39.2" cy="57.9" rx="2.7" ry="2.9" fill="#94989b"/><ellipse cx="40" cy="56.8" rx=".8" ry=".9" fill="#d0d0d0"/><ellipse cx="59.3" cy="57.9" rx="2.7" ry="2.9" fill="#94989b"/><ellipse cx="60.3" cy="56.8" rx=".8" ry=".9" fill="#d0d0d0"/><path fill="#94989b" d="m46.5 49.3h5.5v4.5h-5.5z"/><path d="m34.4 21.3v-12.2c0 0-18.4-2.2-25 0-2 .6-5.5 4-5.5 6.1s3.6 5.5 5.5 6.1c6.6 2.2 25 0 25 0" fill="#428bc1"/><path d="m34.4 20.1v-9.7c0 0-17-1.7-23.2 0-1.8.5-5.1 3.2-5.1 4.8s3.3 4.3 5.1 4.8c6.2 1.8 23.2.1 23.2.1" fill="#ddeaf2"/><path d="m37.2 33.6v-12.4c0 0-23.1-2.1-29.7.1-2 .6-5.5 4-5.5 6.1 0 2.1 3.6 5.5 5.5 6.1 6.6 2.2 29.7.1 29.7.1" fill="#ed4c5c"/><path d="m37.2 32.1v-9.4c0 0-21.7-1.6-27.8.1-1.8.5-5.2 3.1-5.2 4.6 0 1.6 3.3 4.1 5.2 4.6 6.2 1.7 27.8.1 27.8.1" fill="#ddeaf2"/><path d="m35.1 45.6v-11.9c0 0-16.3-2.3-22.9-.1-2 .6-5.5 4-5.5 6.1s3.6 5.5 5.5 6.1c6.6 2.1 22.9-.2 22.9-.2" fill="#ffce31"/><path d="m35.1 44.2v-9.2c0 0-14.9-1.8-21-.1-1.8.5-5 3.1-5 4.7 0 1.6 3.3 4.2 5 4.7 6.1 1.7 21-.1 21-.1" fill="#ddeaf2"/><g fill="#94989b"><path d="m34.4 13.3l-18.1-.9h18.1z"/><path d="m34.4 17.1l-13.1.2 13.1-1.1z"/><path d="m37.2 25.4l-9.4-.5 9.4-.5z"/><path d="m37.2 28.5l-19.3 1.2 19.3-2.1z"/><path d="m35.1 39.2l-11.1-2 11.1 1.1z"/><path d="m35.1 41.6l-17.8.7 17.8-1.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5dd.svg b/riot/emojione/svg/1f5dd.svg new file mode 100644 index 0000000..9bbf4f2 --- /dev/null +++ b/riot/emojione/svg/1f5dd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#595959" d="m13.3 56.3l-1.7-1.8 4.1-4.1-2.1-2.1 4.1-4 2.1 2.1 4.2-4.2 1.8 1.8-1.1 1.1 1.6 1.5 1.1-1.1.9 1 3.3 3.3-3 2.9-3.3-3.2-2.1 2 3.2 3.2-2.3 2.2-3.1-3.2-2.1 2.1 3.2 3.2-3 3-3.2-3.2-.1-.1-.9-.9 1.1-1-1.6-1.6z"/><path d="m55.2 13.9c1.8-1 3-2.9 3-5.2 0-3.3-2.7-5.9-6-5.9-2.2 0-4.2 1.2-5.2 2.9-1.3-2.2-3.7-3.7-6.5-3.7-4.2 0-7.5 3.3-7.5 7.4 0 4.1 3.4 7.4 7.5 7.4.4 0 .7 0 1-.1l-1.1 1h-2.3v2.2l-.6.6-.2-.2c-.5-.5-1.4-.5-1.9 0l-.1.1c-.5.5-.5 1.3 0 1.8l.2.2-27.8 27.7.5.5-.7.7c-.7-.3-1.6-.3-2.1.2-.7.7-.5 2 .4 2.9.9.9 2.3 1.1 3 .4.5-.5.5-1.3.2-2.1l.7-.7.5.5 27.8-27.5.2.2c.5.5 1.4.5 1.9 0l.1-.1c.5-.5.5-1.3 0-1.8l-.2-.2.6-.6h2.3v-2.2l1.1-1c0 .3-.1.7-.1 1 0 4.1 3.4 7.4 7.5 7.4s7.5-3.3 7.5-7.4c.1-2.8-1.4-5.2-3.7-6.4m-3.7 11.3c-2.8 0-5-2.2-5-5 0-1.1.3-2.1.9-2.9l-1.2-1.2.5-.5c.8.4 1.6.3 2.1-.2.7-.7.5-2-.4-2.9-.9-.9-2.3-1.1-3-.4-.5.5-.5 1.3-.2 2.1l-.5.5-1.2-1.2c-.8.6-1.9 1-3 1-2.8 0-5-2.2-5-5s2.2-5 5-5c2.8 0 5 2.2 5 5h3.1c0-.2-.1-.4-.1-.6 0-2.1 1.7-3.7 3.7-3.7 2.1 0 3.7 1.7 3.7 3.7s-1.7 3.7-3.7 3.7c-.2 0-.5 0-.7-.1v2.8c0 0 0 0 0 0 2.8 0 5 2.2 5 5s-2.2 4.9-5 4.9" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5de.svg b/riot/emojione/svg/1f5de.svg new file mode 100644 index 0000000..fc37886 --- /dev/null +++ b/riot/emojione/svg/1f5de.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse transform="matrix(.7071-.7071.7071.7071-3.5789 8.6397)" cx="8.6" cy="8.6" rx="11.8" ry="3.3" fill="#94989b"/><g fill="#d0d0d0"><path d="m38.4 25.6c-5.5-5.6-19.9-23.3-21.3-25.1.9 1.4-1.7 6-6.1 10.5-4.4 4.4-9 7.1-10.5 6.1 1.8 1.4 19.5 15.8 25.1 21.3 5.6 5.6 19.9 23.3 21.3 25.1 0 .1.1.1.1.2 1.3 1.3 6-1.4 10.6-6 4.6-4.6 7.3-9.4 6-10.6 0 0-.1-.1-.2-.1-1.7-1.5-19.4-15.9-25-21.4"/><path d="m11.3 3c.8-.3 1.3-.4 1.6-.1.7.7-.9 3.5-3.7 6.3s-5.6 4.4-6.3 3.7c-.1-.1-.2-.2-.2-.4-.5 1.1-.6 1.9-.2 2.3 1 1 4.7-1.2 8.4-4.9 3.7-3.7 5.9-7.5 4.9-8.4-.6-.7-2.3 0-4.5 1.5"/><path d="m7.1 9.3c-.4-.4.4-1.8 1.8-3.2 1.3-1.3 2.6-2 3.1-1.9 0-.1 0-.2-.1-.3-.5-.5-2.3.6-4 2.4-1.8 1.8-2.8 3.6-2.4 4 .3.3 1.4-.1 2.6-1.1-.4.2-.8.3-1 .1"/></g><g fill="#94989b"><path d="m25.1 34.1l1.8-2-17.4-15.7c-.8.6-1.6 1.1-2.3 1.6l17.9 16.1"/><path d="m18.4 7.2c-.5.7-1.1 1.5-1.6 2.2l15.6 17.4 3.6 3.6 22.7 22.1 1.7-2-22.5-22-3.6-3.6-15.9-17.7"/><path d="m12.2 14.1l16.4 16.4 1.9-1.9-16.4-16.4c-.1.1-.3.3-.4.4-.5.6-1 1-1.5 1.5"/></g><path d="m41.2 27.1c0 0 .7 1.8-5.8 8.3-6.5 6.5-8.3 5.8-8.3 5.8l-6.8-6.8c0 0 1.7.8 8.3-5.8 6.6-6.6 5.8-8.3 5.8-8.3l6.8 6.8" fill="#3e4347"/><path d="m48.5 61.2c.5-.2 1.2-.5 2.3-1.2 1.6-1 3.3-2.5 5-4.2l-18.4-18.4c-1.6 1.6-3.2 3.1-4.9 4.6 5.9 6.7 13.7 16.3 16 19.2" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5e1.svg b/riot/emojione/svg/1f5e1.svg new file mode 100644 index 0000000..8802fe0 --- /dev/null +++ b/riot/emojione/svg/1f5e1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m36.8 30.4c0 0 14.6 8.6 27.2 33.6l-30.4-30.4 3.2-3.2" fill="#94989b"/><path d="m30.4 36.8c0 0 8.6 14.6 33.6 27.2l-30.4-30.4-3.2 3.2" fill="#d0d0d0"/><path d="m3.6 13.7c-1-1-1-2.7 0-3.8l6.3-6.3c1-1 2.7-1 3.8 0l22.6 25.1c1 1 1 2.7 0 3.8l-3.8 3.8c-1 1-2.7 1-3.8 0l-25.1-22.6" fill="#3e4347"/><g fill="#d3976e"><path d="m5.8 13.1l7.4-7.3c1-1 1-2.7 0-3.8l-.2-.2c-.8-.8-2-1-3-.5-2.5-1.9-6-1.7-8.2.5-2.2 2.2-2.4 5.7-.5 8.1-.4 1-.3 2.2.5 3l.2.2c1 1 2.7 1 3.8 0"/><path d="m44.2 8.7c-2.8-1.3-5.8-.4-7.6 2.2-2 3-1.3 5.7 0 7.2 1.3 1.6 3.3 2.1 5.1 1.3.9-.4 1.3-1.4.9-2.3-.4-.9-1.4-1.3-2.3-.9-.3.1-.6 0-.9-.4-.6-.7-.5-1.8.3-3 1.1-1.7 2.5-1.3 3.3-1 1.6.7 2.8 2.6 2.2 5-1.1 4-5.2 9.7-11.8 16.3-6.9 6.7-12.5 10.8-16.5 11.9-2.3.6-4.3-.6-5-2.2-.3-.7-.7-2.1 1-3.3 1.2-.8 2.3-.9 3-.3.3.3.5.7.4.9-.4.9 0 1.9.9 2.3.9.4 1.9 0 2.3-.9.8-1.7.3-3.7-1.3-5.1-1.5-1.2-4.2-2-7.2 0-2.7 1.8-3.5 4.8-2.2 7.6 1.3 2.9 4.9 5.2 9.1 4.1 4.7-1.3 10.7-5.5 17.9-12.7 7.2-7.2 11.4-13.2 12.7-17.9 1-3.9-1.4-7.5-4.3-8.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5e3.svg b/riot/emojione/svg/1f5e3.svg new file mode 100644 index 0000000..9ba8a6c --- /dev/null +++ b/riot/emojione/svg/1f5e3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#5d6d74"><path d="m38.5 42.6c-4.6-1.5-3.3-2.6 1.1-4.3 2.1-.8.8-2.5.9-3.8 0-.6 2.5-.5 2.3-2.9-.1-1.7-3.8-4.1-4.8-5.1-.6-.6 1.2-2.2-.1-3.6-1.7-1.9-2-5.3-3-7.2 0 0 .8-1.2.2-1.9-5.2-5.8-24.5-5.2-29.5 3.4-5.5 9.7-5.6 23 5.9 30.2 5.1 3.2-1.4 14.6-1.4 14.6h20.3c0-1.9-2.3-8.9 1.7-8.6 3.4.3 7.7.1 7.3-3.8-.1-1.2-.2-2.2.6-3.2.8-.9 2-2.7-1.5-3.8"/><path d="m43.1 40.8l18.9 2.5v-5z"/><path d="m58.5 57.1l2-4.3-17.4-9.4z"/><path d="m60.5 28.8l-2-4.3-15.4 13.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5e8.svg b/riot/emojione/svg/1f5e8.svg new file mode 100644 index 0000000..b8c77e4 --- /dev/null +++ b/riot/emojione/svg/1f5e8.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M8.6,5h46.9c3.6,0,6.6,2.9,6.6,6.5v29.8c0,3.6-2.9,6.5-6.6,6.5h-6.9V59L38.1,47.8H8.6c-3.6,0-6.6-2.9-6.6-6.5 + V11.5C2,7.9,4.9,5,8.6,5z" fill="#4fd1d9"/><g fill="#fff"><circle cx="48" cy="26.4" r="4.2"/><circle cx="32" cy="26.4" r="4.2"/><circle cx="16" cy="26.4" r="4.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5ef.svg b/riot/emojione/svg/1f5ef.svg new file mode 100644 index 0000000..ed82900 --- /dev/null +++ b/riot/emojione/svg/1f5ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.4 18.1c1.3-1.6.6-2.8-1.4-2.6l-10.5 1.2c-2 .2-3.7-1.3-3.7-3.4l-.2-9.5c0-2.1-1.1-2.4-2.2-.7l-7.5 10.7c-1.2 1.7-3.1 1.7-4.2-.1l-5.1-7.6c-1.1-1.7-2.3-1.4-2.7.6l-1.2 7.4c-.3 2.1-2.1 3-3.9 2.1l-13.6-6.6c-1.8-.9-2.4-.2-1.4 1.6l6.9 11.7c1.1 1.8.5 4.1-1.3 5.1l-6.2 3.6c-1.8 1-1.6 2.2.4 2.5l10 2c2 .4 3.9 2.5 3.2 4.5-2.1 6.1-14.3 21.4-14.3 21.4s18.4-9.4 23.4-14.2c1.5-1.4 3.4-2.1 5-.9l6.7 5.2c1.6 1.3 2.9.6 2.8-1.5l-.2-6.5c-.1-2.1 1.4-3.1 3.2-2.3l14.5 6.3c1.9.8 2.4.1 1.3-1.6l-7-10.4c-1.2-1.7-1.1-4.4.2-6.1l9-11.9" fill="#4fd1d9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5f3.svg b/riot/emojione/svg/1f5f3.svg new file mode 100644 index 0000000..c0cfc83 --- /dev/null +++ b/riot/emojione/svg/1f5f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="M61.3 54.7 10.3 64 7.9 20.7 64 18.3z"/><path fill="#c94747" d="M10.3 64 2.6 49.4 0 15.5 7.9 20.7z"/><path fill="#881a0e" d="M64 18.3 7.9 20.7 0 15.5 42.1 14.4z"/><g fill="#fff"><path d="m24 30.1l2.8-.1-4.8 18.2-2.6.3-4.3-17.9 3.1-.2 2.7 13.6 3.1-13.9"/><path d="m37.5 44.8c-.9 1.4-2.2 2.2-4 2.5-1.7.2-3.1-.3-4-1.5-1.2-1.5-1.8-3.9-1.8-7 .1-3.2.8-5.7 2.1-7.4 1-1.4 2.3-2.1 4.1-2.2 1.7-.1 3 .5 3.9 1.8 1.1 1.5 1.7 3.7 1.6 6.8-.1 2.9-.7 5.3-1.9 7m-1.5-2.4c.6-1.1.9-2.6.9-4.5 0-1.9-.2-3.3-.8-4.3-.6-1-1.3-1.5-2.3-1.4-1 .1-1.8.6-2.4 1.7-.6 1.1-1 2.6-1 4.6 0 2 .2 3.4.8 4.4.6 1 1.4 1.4 2.4 1.3 1-.1 1.8-.7 2.4-1.8"/><path d="m49.3 28.8v2.8l-3.2.2-.2 13.4-2.3.3.2-13.5-3.4.2.1-3 8.8-.4"/><path d="m58.1 31.1l-5.3.3-.1 3.4 4.9-.4v2.7l-4.9.4-.1 4.1 5.6-.6v2.8l-7.7.9.3-16 7.5-.4-.2 2.8"/></g><path d="m44.2 0c-11.3.2-22.7.4-34 .6 2.3 10 .1 18.2.1 18.2l34-1.6c0 .1 2.2-7.1-.1-17.2" fill="#dfe9ef"/><g fill="#83bf4f"><path d="m40.8 6.8c-5.8.1-11.5.2-17.3.4 0-.5 0-.9 0-1.4 5.8-.2 11.5-.3 17.3-.4 0 .5 0 .9 0 1.4"/><path d="m18.5 8.7c-.1.2-.3.2-.5.1-.8-.7-1.7-1.3-2.5-2-.2-.1-.2-.3 0-.5.1-.1.2-.2.3-.2.2-.1.4-.1.6 0 .5.3.9.7 1.4 1 .2.1.4.1.5-.1.6-.9 1.1-1.8 1.6-2.7.1-.2.3-.2.6-.2.1 0 .3.1.4.1.1.2.2.4.1.6-.8 1.3-1.6 2.6-2.5 3.9"/></g><g fill="#93a2aa"><path d="m40.2 15.1c-5.8.1-11.6.3-17.4.4.1-.5.1-.9.2-1.4 5.8-.1 11.6-.2 17.4-.4-.1.5-.2.9-.2 1.4"/><path d="m20.1 17.2c-1.9 0-3.8.1-5.7.1.2-1.6.4-3.1.6-4.7 1.9 0 3.8-.1 5.7-.1-.2 1.5-.4 3.1-.6 4.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5fa.svg b/riot/emojione/svg/1f5fa.svg new file mode 100644 index 0000000..182a68f --- /dev/null +++ b/riot/emojione/svg/1f5fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#dfe9ef" d="M21.6 56.6 2 58.2 8.1 5 27.1 3.8z"/><path fill="#bbc3c7" d="m43.4 62l-21.8-5.4 5.5-52.8 13.8 6z"/><path fill="#dfe9ef" d="M62 55.2 43.4 62 40.9 9.8 55.9 2z"/><path fill="#5df6ff" d="m22.1 52.1l-15.3 1.2 4.7-44.8 15.2-.9z"/><path fill="#00c0cf" d="m43.2 58l-21.1-5.9 4.6-44.5 14.4 6z"/><path fill="#5df6ff" d="M57.9 52.5 43.2 58 41.1 13.6 53 7.9z"/><g opacity=".7"><path d="m21.6 36c-.3.1-.6.3-.8.5.1.1.1.1.1.1-1.9 3.5 1.1 4.7 1.1 4.7-1.2 6.1 1.3 8.1 1.3 8.1-.6-4.6 3-7.6 3-7.6 1-4.7-3.3-5.6-4.7-5.8" fill="#f361f5"/><path d="m20.4 35.6c-1.8-1.2-1.8-3.1-1.8-3.1 3 0 6.3-4.4 6.3-4.4-2.2-7-3.1-1.1-3.1-1.1-3.2-3.4.9-5 .9-5-2.5-1-3.6-3.8-3.6-3.8-.1 1.8-.9 1.7-.9 1.7-5.7-3.1-6.7 1.9-6.7 1.9.9 2.7-1 3-1 3 1.9.3 2.9-2.1 2.9-2.1 3.9 1.8 1.8 8.4 1.8 8.4 1.5.8 1.9 3.6 1.9 3.6 1.1.3 2.1.9 2.9 1.4.1-.3.2-.4.4-.5" fill="#edba53"/><path d="m26.4 16.1c0 0-1.7-1.1-4.5.6 0 0-.7 6.3 4.5-.6" fill="#eef8fb"/><path d="m30.6 17.5c-2.2-3.6-5.8 1.3-5.8 1.3 1.3 1 1.4 1.9 1.2 2.7-.9 3 .3 3.9.3 3.9.7-2.5 3.1-2.9 3.1-2.9-.3-2.3 1.2-5 1.2-5" fill="#5f5cff"/><path d="m36.7 33.7c-.2.1-.4.1-.6 0-.5-.5-.8-1.1-1.1-1.7-.1-.1-.1-.2-.1-.3-1.7-.6-5-1.2-5.5 3.4 0 0 .6 3.1 2.7 1.5 0 0 2.3.4 1.4 4.5 0 0 .4 3.2 2.4 2.9 0 0 .5-4.6 3.1-8.2-.1.1-1.1 1.1-2.3-2.1" fill="#ff7033"/><path d="m53.3 18.1c0 0-4.9 1.7-10.3 1.2 0 0 .5-1.6-1.4-1.8 0 0-2.5 3-1.4 4.7 0 0-.5 3-1.1-1.4 0 0-1 2.6-2.5 2 0 0-.4 2.6-1.3.9 0 0 .7.3.9-.5 0 0-2.1-2.1-3.3 1.1 0 0-1 .4-.6 1.8 0 0 .7-1.2 1.1.6 0 0 .4-.3.5-2.6 0 0 1-.5.2 1.4 0 0 2.2 0-1.2 1.9 0 0-.2 0-.3-.7 0 0-.5 1.7-1.6 2.3 0 0 .3.7-.5 1 0 0-.4 1.1.6 1.1 0 0 .9-2.5 2.6-.5 0 0 .3-.1-.2-1.1 0 0 .9.3 1.2 1.6 0 0 .5-.1.6-1.2 0 0 .7-1.5 1.8.3 0 0-1.5-.4-1.9 1 0 0 .7-.3 1.1.1 0 0 0 .7-.4.9.2.3.4.7.7.9.2.2.2.4.1.6.8 1.3 2.2 2.9 3.3.3 0 0-1.4.7-1.8-1.3 0 0 3.5.4 4.4 3.9 0 0 1-.7 1.3-3 0 0 1.2.1 2.6 3 0 0 .6-.1.3-2 0 0 2.3-.9 1-4.6 0 0 1.9 2.5 1.3-.7 0 0 2.1-2.4-.4-4 0 0 .1-1.8 1.6-1.5 0 0 1.5-3.7.8.7 0 0 0 .9 1 1.8 0 0 .4-1.4-.3-3 .2-.2 1.7-2.9 1.5-5.2" fill="#6c732d"/><g fill="#f361f5"><path d="m31.9 27.8c.4-.9-.9-1.8-.9-1.8.2 2 .5 2.6.9 1.8"/><path d="m30.3 27.9c0 0 .6-.1.5-.8 0 0-.5 0-.5.8"/><path d="m30.1 23.8c0 0-1.6 0-1 .8.5.7 1-.8 1-.8"/></g><path d="m38.2 42.5c0 0 .5-.9.5-2.4 0 0-1.6 1.7-.5 2.4" fill="#edff54"/><path d="m48.4 36.6c0 0-1.1 1-.9 1.9.2.9 1.2-.2.9-1.9" fill="#eef8fb"/><path d="m53 39.8c.5-.8-2.7-1.8-2.7-1.8.6.8 2.2 2.5 2.7 1.8" fill="#edff54"/><path d="m49.3 39.9c.8-1.2-2.3-.6-2.3-.6s2 1.1 2.3.6" fill="#f361f5"/><g fill="#f33"><path d="m50.5 40.2c0 0-.6 1.3-2.9 1.8 0 0 .5 1 0 3 0 0 2.3-2.7 3.6 1.2 0 0 1.1.6 1.9-3 0 0-1-1.3-1.3-3.1.1 0-.2 2.3-1.3.1"/><path d="m49.5 31.5c0 0 2.6-.9 1.5-3 .1-.1.3-.2.3-.2-1.1-1.7-.7.7-.7.7.1-.2.2-.3.2-.4 0 .8-.1 1.9-1.3 2.9"/><path d="m22.6 23.5c0 0 1.9 2.7 2.1-.3.1-.7-.2-.8-.5-.8-.1-2-1.5-2.6-1.5-2.6-.9.5-.8 1.2-.8 1.2.8.1 1.3 1.1 1.6 1.9-.1.3-.4.6-.9.6"/></g><path d="m31.3 15.9c.6-1.2-1.2-2.6-1.2-2.6.2 2.9.6 3.8 1.2 2.6" fill="#edff54"/><path d="m29.8 14.8c0 0-.7.1-.7 1.2 0 0 .9-.1.7-1.2" fill="#fff"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5fb.svg b/riot/emojione/svg/1f5fb.svg new file mode 100644 index 0000000..17545f8 --- /dev/null +++ b/riot/emojione/svg/1f5fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#42ade2" d="m0 0h64v64h-64z"/><path fill="#464d51" d="m58 41.5l-20.5-8.5-25.6 4.4-11.9 6.6v20h64v-20z"/><path d="m37.2 34.3c0 0-2.8-12.2-3.4-12.3-.2 0-.7.1-1.2.3-1 .4-1.1.1-2.1-.1-.8-.2-1.4.3-1.8.6-1.9 1.2-4.7 4.8-6.3 6.3-2.4 2.3-10.5 8.3-10.5 8.3s-1.6 1.5-3.3 4.6c0 0 3.3-2.2 4.7-2.3.8 0 .2 2.3.2 2.3l4.9-3.3-3 3.3c0 0 3.6-1.4 6-2.8 1.4-.8 3.6-3.8 3.9-3.2.5 1-1.9 3.8-1.9 3.8l1.2-.4-1.2 2.3 3.4-3.1-2 3.4c0 0 2.5-3.1 3.1-3.5 4.1-2.9-1.9 4.2-1.9 4.2s6.8-3.6 9.2-3.9c3.1-.5 6.5 2.7 6.5 2.7l-4.5-7.2" fill="#fff"/><g fill="#c5ccd6"><path d="m59 43.6c-.9-1.1-1-2.1-1-2.1s-10.9-6.9-14.1-9.7c-2.3-2-6.4-6.6-8.5-8.8-.4-.4-1.3-1.2-1.8-1.1-1.3.4-2 3.8-3.1 4.5 0 0 .7.8.3 2.5 0 0 1.3-1.5 1.3-.3 0 2.3 1.7 2.1 2 3.2 1.3 4.2 3.3 7.1 4.3 7.5 1.9.8 3.4 2.2 3.4 2.2l-.8-2.1c2.5-.1 3.9 1.3 3.9 1.3s.1-2 1-1.7c2.4.7 6 3.9 6 3.9s-.1-1.3.8-1.4c2.1-.3 6.3 2.1 6.3 2.1"/><path d="m18.5 36.5l3.8-5.7-1.2 3.4z"/><path d="m23.6 33.9v-2.2l3.8-3.5z"/></g><g fill="#fff"><path d="m60.4 14.4c0 0 0 0 0 0 0-.2 0-.3 0-.5 0-1.1-1.1-2-2.6-2.1-.9-1.2-2.7-2.1-4.7-2.1-2.6 0-4.7 1.3-5.2 3-.2 0-.3 0-.5 0-1.4 0-2.6.7-2.9 1.7 0 0 0 0-.1 0-1.1 0-2 .6-2 1.4 0 .8.9 1.4 2 1.4.4 0 .8-.1 1.1-.3.4.3.9.5 1.5.5.2 0 .4 0 .6-.1.3.5 1 .8 1.8.8.3 0 .6-.1.9-.2.9.5 2 .7 3.1.7 1.1 0 2.1-.2 3-.7.3.1.5.1.8.1 1.1 0 2-.4 2.6-1.1.2.1.5.1.7.1 1.1 0 2-.6 2-1.4-.1-.6-1-1.2-2.1-1.2"/><path d="m6.9 26c0 0 .1 0 0 0 0-.1 0-.2 0-.3 0-.6.6-1 1.3-1.1.5-.6 1.4-1 2.4-1 1.3 0 2.4.7 2.7 1.5.1 0 .2 0 .2 0 .7 0 1.3.4 1.5.9.6 0 1 .3 1 .7s-.4.7-1 .7c-.2 0-.4 0-.6-.1-.2.1-.4.2-.7.2-.1 0-.2 0-.3 0-.2.2-.5.4-.9.4-.2 0-.3 0-.4-.1-.4.2-1 .4-1.6.4-.6 0-1.1-.1-1.5-.3-.1 0-.3 0-.4 0-.6 0-1-.2-1.3-.5-.1 0-.2.1-.4.1-.6 0-1-.3-1-.7 0-.5.5-.8 1-.8"/><path d="m38.4 9.8c0 0 0 0 0 0 0-.1 0-.2 0-.3 0-.6.6-1 1.3-1.1.5-.6 1.4-1 2.4-1 1.3 0 2.4.7 2.7 1.5.1 0 .2 0 .2 0 .7 0 1.3.4 1.5.9.6 0 1 .3 1 .7s-.4.7-1 .7c-.2 0-.4 0-.6-.1-.2.1-.4.2-.7.2-.1 0-.2 0-.3 0-.2.2-.5.4-.9.4-.2 0-.3 0-.4-.1-.4.2-1 .4-1.6.4-.6 0-1.1-.1-1.5-.3-.1 0-.3 0-.4 0-.6 0-1-.2-1.3-.5-.1 0-.2.1-.4.1-.5 0-1-.3-1-.7 0-.5.4-.8 1-.8"/><path d="m10.2 18.8c-.1 0-.1 0-.2 0-.3-.7-1-1.2-1.8-1.5.1-.2.2-.5.2-.7 0-1.2-1.2-2.3-2.9-2.6-1.1-1.4-3.1-2.4-5.4-2.6v11.4c1.4 0 2.8-.4 3.9-.9.7.4 1.5.6 2.4.6.8 0 1.6-.2 2.2-.5.5.3 1.1.5 1.7.5 1.4 0 2.6-.8 2.6-1.8-.1-1.1-1.3-1.9-2.7-1.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5fc.svg b/riot/emojione/svg/1f5fc.svg new file mode 100644 index 0000000..cb64daa --- /dev/null +++ b/riot/emojione/svg/1f5fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#dae3ea" d="m38.7 47.5h-13.4l-1.3-3.5h16z"/><path d="m38.7 48.2h-13.4c-1.7 6.2-4.1 10.8-9.3 15.8h7.7c0 0 2.7-9.5 8.3-9.5s8.3 9.5 8.3 9.5h7.7c-5.2-5-7.6-9.6-9.3-15.8" fill="#ed4c5c"/><g fill="#dae3ea"><path d="m18 25.7c0 .9-.7 1.7-1.7 1.7h-14.6c-.9 0-1.7-.7-1.7-1.7 0-1 .7-1.7 1.7-1.7h14.7c.9 0 1.6.7 1.6 1.7"/><path d="m24.5 22.3c0 .9-.7 1.7-1.7 1.7h-14.6c-.9 0-1.7-.7-1.7-1.7 0-.9.7-1.7 1.7-1.7h14.7c.9.1 1.6.8 1.6 1.7"/><path d="m64 40.7c0 .9-.7 1.7-1.7 1.7h-14.6c-.9 0-1.7-.7-1.7-1.7 0-.9.7-1.7 1.7-1.7h14.7c.9 0 1.6.8 1.6 1.7"/><path d="m60.2 37.4c0 .9-.7 1.7-1.7 1.7h-14.7c-.9 0-1.7-.7-1.7-1.7 0-.9.7-1.7 1.7-1.7h14.7c.9 0 1.7.7 1.7 1.7"/></g><path fill="#ed4c5c" d="m37.5 43.3h-11l1.6-5.6h7.8z"/><path fill="#dae3ea" d="m35.9 37h-7.8l.8-7h6z"/><path fill="#ed4c5c" d="m35 30h-6l.8-6.8h4.4z"/><g fill="#dae3ea"><path d="m28.4 19.6h7.2v2.9h-7.2z"/><path d="m28.4 15h7.2v1.8h-7.2z"/></g><path fill="#ed4c5c" d="m28.4 13.6h7.2v1.4h-7.2z"/><path fill="#c94747" d="m30.7 8.2h2.6v5.4h-2.6z"/><path fill="#dae3ea" d="m30.7 1.5h2.6v6.8h-2.6z"/><path fill="#ed4c5c" d="m30.7 0h2.6v1.5h-2.6z"/><g fill="#c5d0d8"><path d="m30 16.8h4v2.9h-4z"/><path d="m28.3 30h7.5v.7h-7.5z"/></g><g fill="#b2c1c0"><path d="m30.7 7.5h2.6v.7h-2.6z"/><path d="m28.4 21.8h7.2v.7h-7.2z"/><path d="m28.3 30.7h7.5v.7h-7.5z"/><path d="m28.1 32.8h7.9v.7h-7.9z"/><path d="m27.7 34.9h8.6v.7h-8.6z"/></g><g fill="#c5d0d8"><path d="m28.1 32.1h7.9v.7h-7.9z"/><path d="m27.7 34.2h8.6v.7h-8.6z"/><path d="m27.4 36.3h9.3v.7h-9.3z"/></g><g fill="#c94747"><path d="m25.3 47.5h13.3v.7h-13.3z"/><path d="m29.8 22.5h4.3v.7h-4.3z"/><path d="m29.6 43.5h-1.3v-3.3c0-.4.3-.6.6-.6.4 0 .6.3.6.6l.1 3.3"/><path d="m31.6 43.5h-1.3v-3.3c0-.4.3-.6.6-.6.4 0 .6.3.6.6l.1 3.3"/><path d="m33.7 43.5h-1.3v-3.3c0-.4.3-.6.6-.6.4 0 .6.3.6.6l.1 3.3"/><path d="m35.7 43.5h-1.3v-3.3c0-.4.3-.6.6-.6.4 0 .6.3.6.6l.1 3.3"/><path d="m31.6 30h-1.3v-3.3c0-.4.3-.6.6-.6.4 0 .6.3.6.6l.1 3.3"/><path d="m33.7 30h-1.3v-3.3c0-.4.3-.6.6-.6.4 0 .6.3.6.6l.1 3.3"/></g><path fill="#b2c1c0" d="m24 43.3h16v.7h-16z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5fd.svg b/riot/emojione/svg/1f5fd.svg new file mode 100644 index 0000000..fc4d834 --- /dev/null +++ b/riot/emojione/svg/1f5fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#428bc1"><path d="m26 23.5h16v13.9h-16z"/><path d="m23.3 27c0 0-6.9.2-5.5 11.2l4 12.9 7.6-16.7-6.1-7.4"/></g><g fill="#42ade2"><path d="m12.7 18.6l7.1 15.4c0 0 3.1-.7 3.1-5.2l-6.9-12.1-3.3 1.9"/><path d="m40.4 34.6c-2.5-2.2-10.3-2.2-12.7 0-7.3 6.7-7.5 27.4-7.5 27.4h27.7c0 0-.2-20.7-7.5-27.4"/></g><path fill="#428bc1" d="m42 20.2l-.9-.7.5-6.6-3.4 5.4-2-.7-2.2-7.7-2.1 7.7-2 .7-3.4-5.4.5 6.6-1 .7-6.9-1.2 7.4 5.5h7.5 7.6l7.4-5.5z"/><path d="m41.2 24c0 5.7-5.3 8.4-7.2 8.4-2 0-7.2-2.7-7.2-8.4 0 0 14.4-4.3 14.4 0" fill="#42ade2"/><path fill="#428bc1" d="m44.1 54.9l-8.1-8 10.9-10.8 8.1 8z"/><g fill="#42ade2"><path d="m53 49.3c-.4.4-1 .4-1.4 0l-2-2c-.4-.4-.4-1 0-1.4.4-.4 1-.4 1.4 0l2 2c.4.4.4 1 0 1.4"/><path d="m51.9 50.9c-.4.4-1.1.3-1.5-.1l-2.4-2.3c-.4-.4-.5-1.1-.1-1.5.4-.4 1.1-.3 1.5.1l2.4 2.3c.5.4.5 1.1.1 1.5"/><path d="m50.6 52.2c-.4.4-1.1.3-1.5-.1l-2.4-2.3c-.4-.4-.5-1.1-.1-1.5.4-.4 1.1-.3 1.5.1l2.4 2.3c.4.4.5 1.1.1 1.5"/><path d="m49 52.8c-.3.3-.9.3-1.2 0l-1.8-1.7c-.3-.3-.3-.9 0-1.2.3-.3.9-.3 1.2 0l1.8 1.7c.3.3.3.8 0 1.2"/></g><g fill="#428bc1"><path d="m38.6 38.3c0 0-7.2 10.7-3.6 23.7h-5.5c0 0-1.7-14.9 9.1-23.7"/><path d="m38 50.4c0 0-3.5 5.2-1.8 11.6h-2.7c.1 0-.8-7.2 4.5-11.6"/><path d="m32.1 35.6c0 0-8 11.9-4 26.4h-6.1c-.1 0-2-16.5 10.1-26.4"/></g><path d="m23.8 27.7l2.9 3.5c0 0 1.6 5.6-2.9 10.2 0 0 2.1-7.2 0-13.7" fill="#42ade2"/><g fill="#428bc1"><path d="m35.9 28.6c0 .2-.8.6-1.8.6-1 0-1.8-.4-1.8-.6-.1-.2 3.6-.2 3.6 0"/><path d="m35.2 30.4c0 .2-.5.4-1.2.4s-1.2-.3-1.2-.4c0-.1 2.4-.1 2.4 0"/><path d="m39.5 25.1c0 .6-.8 1.4-1.8 1.4-1 0-1.8-.9-1.8-1.4 0-.3 3.6-.3 3.6 0"/><path d="m32.1 25.1c0 .6-.8 1.4-1.8 1.4-1 0-1.8-.9-1.8-1.4.1-.3 3.6-.3 3.6 0"/></g><path d="m11.7 11.8c0 0-2.1-1.4-1.9-4 .3-3 2.7-4.1 2.7-4.1s-.6 2.5 0 2.9c.4.2 1.8 0 1.9-2.3.1-.8-.9-2.3-.9-2.3s2.3.8 3.1 2.7c.6 1.5 0 4 0 4s1.1-.3 1.6-1.7c0 0 .6 3.3-2 4.7h-4.5z" fill="#ff9d27"/><path d="m16 22c0 1-.8 1.9-1.8 1.9h-.5c-1 0-1.8-.8-1.8-1.9v-8.1h4.1v8.1" fill="#428bc1"/><g fill="#42ade2"><path d="m9.7 15.9c0 .5.4 1 1 1h2.9c.5 0 1-.4 1-1 0-.5-.4-1-1-1h-2.9c-.5 0-1 .4-1 1"/><path d="m9.4 17.8c0 .5.5 1 1.1 1h3.3c.6 0 1.1-.4 1.1-1 0-.5-.5-1-1.1-1h-3.3c-.6-.1-1.1.4-1.1 1"/><path d="m9.4 19.6c0 .5.5 1 1.1 1h3.3c.6 0 1.1-.4 1.1-1 0-.5-.5-1-1.1-1h-3.3c-.6 0-1.1.4-1.1 1"/><path d="m10.1 21.1c0 .5.4.8.8.8h2.5c.5 0 .8-.4.8-.8 0-.5-.4-.8-.8-.8h-2.5c-.4 0-.8.3-.8.8"/><ellipse cx="16" cy="16" rx="1.2" ry="1.2"/><path d="m18.2 12v.9h-.9v-.9h-.9v.9h-1v-.9h-.9v.9h-.9v-.9h-.9v.9h-.9v-.9h-1v.9h-.9v-.9h-.9v.9 1.5h10.1v-1.5-.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5fe.svg b/riot/emojione/svg/1f5fe.svg new file mode 100644 index 0000000..2b86ffc --- /dev/null +++ b/riot/emojione/svg/1f5fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#628441"><path d="m10 51.6c-.6-.1-1.6.4-2.3-.4-.7-.8-1.7-.1-1.9.6-.2.7-4.3.9-3.8 1.3.5.5 1.8 2.9 2.3 2.4s1.1-2.1 1.6-1.3.7 2.3-1.1 3.7c-1.8 1.5.9.6.5 2.3-.3 1.9 1.6 1.7 1.9 1.8.3.1 2-.9 2.3-1.6.3-.7 2.1-5.4 1.9-5.8-.2-.4-.8-1.4-1.6-1.2-.7.2 2.4-1.4.2-1.8"/><path d="m9 48.9c-.7.1-2 .7-1.1 1.4.9.7 2.8-.9 3.6 0 .8.9 1.5-1.6 1.8-1 .3.6 2.4.1 3.9-.4 1.5-.5 3.1-1.6 4.6-1.2 1.5.4 2.7.8 1.9 1.4-.8.6-1.4 2-.8 2.2.7.2 1.7 1.7 2.6 1.4.9-.3 2-3.3 3.4-3.2 1.4.1.4-1.4-.5-1.5-.9-.1 1.1-2.5 1.7-1.4.5 1.1 3.5 2 4.1 1.6.7-.4 1.5-1.9 2.5-1.9 1 0-1.5 2.8 0 2 1.5-.7 1.4-3.3 2.6-2.5 1.2.8 1.5-2.4 1.7-1.1.2 1.3-.9 2.4 0 2.1.9-.3 3-2.5 2.6-3.9-.5-1.3-.8-3.4.7-4.2 1.4-.7-.5-5.8.9-5.8 1.4 0 1.4.6 1.4-.8.1-1.4.6-2.1 1.7-3.3 1.1-1.1-1.8-4.8-2.2-5.4-.4-.6.8-2.6-.6-3.3 0 0-1.4-1-1.7 0-.3 1 1.7 1.2 1.5 2-.3.8-2.3.9-2.4-.5-.1-1.5-.8-.1-.8.9s-2.4.1-1.7 1.4-1.3 2.7-.2 3c1.1.3-.4 5.4-1.1 5.9-.8.5-.2 1.5-1.6 1.9-1.4.4-2.8 3.3-4.6 3.8-1.8.5-2.3 1.3-2.5.5-.2-.9-1.6-.7-.4-1.3 1.2-.6 2-1.8.8-1.5-1.3.3-2.5 1.5-2 2.1.5.7.2 1.9-.8 2.6-1 .7-2.6 1.6-1.9 2.3.8.7-.2 2.1-1.1 1.6-.9-.5-1.8-1.9-2.7-1.3-.9.7-3.3 1.2-4.6 1-1.3-.2-3.2-.8-3.4.1-.2.9-2 2.9-2.9 3.1-.8.2-1.4 1-2.4 1.2"/><path d="m20.4 49.3c-.6.1-2-.5-2.5.3-.5.9-1.2.4-1.6.9-.4.5-1.3-1-1.9 0-.6 1-2.1 2.1-1.3 2.7.8.6-.3 1 .4 1.7.7.7 2 .9 2.3 0 .2-.9 1.1-3 2.2-2.5 1.1.5 1.6.8 2 .3s1.1-1.3 1.7-1.5c.4-.1.1-2.2-1.3-1.9"/><path d="m44.1 17.5c.7.7 1 1.3.5 1.4-.5.1-1.4-.8-1.8 0-.4.8-1.2 2.1-2 1.2-.8-.9 1.5-2.4.5-2.6-1-.2-1.8-1.1-1.3-2.1.5-1 1.7-1.5 2.3-1.9.6-.4-.2-.8 0-1.4.3-.6.3-.6 1.5 0 1.1.6 2.3 1 2.3-.4s-1.3-2.1 0-2.5c1.3-.4.6-1.1 1.1-2.1.5-1 0-2.5-.5-3.4-.5-.9.9-2.7 2.3-.8 1.4 1.9 4.8 5.2 6.1 5.4 1.4.1 1.7.5 2.6.9.9.3 3.5-2.5 2.9-1.7-.5.9-1.7 2.3-1.1 2.8.6.5.9 1.3.5 1.6-.4.3 3-.7 1.5.3-1.5.9-2.2.8-2.6 1.4-.4.6-2.3.4-3.2-.1-.8-.5-2.3 1.9-2.7 2.7-.5.7.2 2.4-.5 1.8 0 0-1.7-.8-2.8-1.3-1.1-.5-2.5-1.8-3.5-1.3-1.1.5-1.9 1.5-2.1.9-.1-.3 0-.7-.7-.9-.6-.2-1.5.3-1.6.9-.2.6.2.9.9 1 .8-.2 1.2 0 1.4.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f5ff.svg b/riot/emojione/svg/1f5ff.svg new file mode 100644 index 0000000..3b6c02a --- /dev/null +++ b/riot/emojione/svg/1f5ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#acb8bf" d="m11.7 61l-4.7-29.4 6.9-13.6 1.8-9.3 9.3-2.5 6.2-4.2 7 2.8 5.1.8 4.2 5.4 9.5 7.2-1.3 13 1.2 11.5-1.6 18.3z"/><path d="m19.2 41v20c0 0 4.6 0 12.9 0 8.7 0 14.1 0 14.1 0v-29.4l-27 9.4" fill="#dae3ea"/><path d="m19.2 43.4l4.1 6.1 10-.3c0 0 6.5-2 9.7-6.7 5-7.5 4.4-18.8 4.4-18.8l-28.2 19.7" fill="#62727a"/><g fill="#dae3ea"><path d="m15.7 22c0 0-.5-7.2 6.1-12.2 4.8-3.5 10.5-4.2 14.5-3.2 8.8 2 10.8 13.3 10.8 13.3-3.9 1.2-15.4-5.5-15.4-5.5l-2.3 10.9-7.1.1.1-2.8"/><path d="m15.7 22c0 0-1.2 8.5-.7 11.2.4 2.7 4.2 10.2 4.2 10.2s7.6-.9 10.1-.6c1.1.1 3.1 1.5 4.2 1.3 4.3-.8 10.1-7.9 11.9-11.5 3.1-6.3 1.7-12.8 1.7-12.8l-22-1.7-9.4 3.9"/></g><path d="m22.4 22.6l1.3-7.7c0 0-7.4-.2-8 7l6.7.7" fill="#62727a"/><path d="m31.7 14.3l-2.3 10.9c0 0 2 2.3 2.7 5.1l1.9-10.9-2.3-5.1" fill="#acb8bf"/><g fill="#62727a"><path d="m31.7 14.3c2.1 3.6 1.9 7.6 1.9 7.6 2.7-.7 12 .5 13.5-2.1-6.7-1.4-8.9-6.8-15.4-5.5"/><path d="m29.4 25.3l-7.1.1c0 0 .9 3.8.2 4.8 0 0 5.6-.6 9.7.3-.1 0-.5-3.5-2.8-5.2"/><path d="m20.9 34.3c0 0 .5-3 1.4-3.4.6-.2 2.5 1 2.5 1s2.6-1.5 3.6-1.4c1.9.2 6.2 4.1 6.2 4.1s-4.5-1.6-6.1-1.6c-.8 0-3.2.9-3.2.9s-2-.5-2.7-.5c-.5.3-1.7.9-1.7.9"/><path d="m21.1 38c0 0-.3-2.2.3-2.6.7-.5 2.8.3 3.7.2 1.3-.1 3.7-1.3 5-1.1 1.3.2 4.6 2.4 4.6 2.4s-3.7 0-5.9 1.1c-4.1 2-7.7 0-7.7 0"/></g><g fill="#83bf4f"><path d="m2 56h60v6h-60z"/><path d="m51.5 50.2h.5v7.5h-.5z"/></g><path d="m50.1 45.8v3.3c0 .6.5 1.1 1.1 1.1h1.1v-2.2c0-1.6-2.2-2.2-2.2-2.2" fill="#c94747"/><path d="m53.4 45.8v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v-2.2c0-1.6 2.2-2.2 2.2-2.2" fill="#ed4c5c"/><path fill="#83bf4f" d="m3.7 49.3h.5v7.5h-.5z"/><path d="m2.3 44.9v3.3c0 .6.5 1.1 1.1 1.1h1.1v-2.2c0-1.6-2.2-2.2-2.2-2.2" fill="#c94747"/><path d="m5.6 44.9v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v-2.2c0-1.6 2.2-2.2 2.2-2.2" fill="#ed4c5c"/><path fill="#83bf4f" d="m58.8 52.7h.5v7.5h-.5z"/><path d="m57.5 48.3v3.3c0 .6.5 1.1 1.1 1.1h1.1v-2.2c0-1.6-2.2-2.2-2.2-2.2" fill="#c94747"/><path d="m60.8 48.3v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v-2.2c0-1.6 2.2-2.2 2.2-2.2" fill="#ed4c5c"/><path fill="#83bf4f" d="m19.4 52.7h.5v7.5h-.5z"/><path d="m18 48.3v3.3c0 .6.5 1.1 1.1 1.1h1.1v-2.2c0-1.6-2.2-2.2-2.2-2.2" fill="#c94747"/><path d="m21.3 48.3v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v-2.2c0-1.6 2.2-2.2 2.2-2.2" fill="#ed4c5c"/><path d="m41.6 45.2v3.3c0 .6.5 1.1 1.1 1.1h1.1v-2.2c0-1.6-2.2-2.2-2.2-2.2" fill="#f2b200"/><path d="m44.9 45.2v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v-2.2c0-1.6 2.2-2.2 2.2-2.2" fill="#ffce31"/><path fill="#83bf4f" d="m43 49.6h.5v9.3h-.5z"/><path d="m13.7 46.2v3.3c0 .6.5 1.1 1.1 1.1h1.1v-2.2c0-1.6-2.2-2.2-2.2-2.2" fill="#f2b200"/><path d="m17 46.2v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v-2.2c0-1.6 2.2-2.2 2.2-2.2" fill="#ffce31"/><path fill="#83bf4f" d="m15.1 50.6h.5v9.3h-.5z"/><path d="m30.4 45.9v3.3c0 .6.5 1.1 1.1 1.1h1.1v-2.2c-.1-1.6-2.2-2.2-2.2-2.2" fill="#f2b200"/><path d="m33.6 45.9v3.3c0 .6-.5 1.1-1.1 1.1h-1.1v-2.2c0-1.6 2.2-2.2 2.2-2.2" fill="#ffce31"/><path fill="#83bf4f" d="m31.7 50.3h.5v9.3h-.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f600.svg b/riot/emojione/svg/1f600.svg new file mode 100644 index 0000000..33a4769 --- /dev/null +++ b/riot/emojione/svg/1f600.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m49.7 34.4c-.4-.5-1.1-.4-1.9-.4-15.8 0-15.8 0-31.6 0-.8 0-1.5-.1-1.9.4-3.9 5 .7 19.6 17.7 19.6 17 0 21.6-14.6 17.7-19.6" fill="#664e27"/><path d="m33.8 41.7c-.6 0-1.5.5-1.1 2 .2.7 1.2 1.6 1.2 2.8 0 2.4-3.8 2.4-3.8 0 0-1.2 1-2 1.2-2.8.3-1.4-.6-2-1.1-2-1.6 0-4.1 1.7-4.1 4.6 0 3.2 2.7 5.8 6 5.8 3.3 0 6-2.6 6-5.8-.1-2.8-2.7-4.5-4.3-4.6" fill="#4c3526"/><path d="m24.3 50.7c2.2 1 4.8 1.5 7.7 1.5 2.9 0 5.5-.6 7.7-1.5-2.1-1.1-4.7-1.7-7.7-1.7s-5.6.6-7.7 1.7" fill="#ff717f"/><path d="m47 36c-15 0-15 0-29.9 0-2.1 0-2.1 4-.1 4 10.4 0 19.6 0 30 0 2 0 2-4 0-4" fill="#fff"/><g fill="#664e27"><circle cx="20.5" cy="23" r="5"/><circle cx="43.5" cy="23" r="5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f601.svg b/riot/emojione/svg/1f601.svg new file mode 100644 index 0000000..e3939db --- /dev/null +++ b/riot/emojione/svg/1f601.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m28.5 27.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7 2.2 0 4.4.8 6.2 2.7.6.6 1.5-.4 1.3-.9"/><path d="m50.4 27.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.5.6 1.5-.4 1.3-.9"/><path d="m54 37.4c0-.8-.6-1.8-2.4-2.1-4.4-.6-11.1-1.3-19.6-1.3-8.5 0-15.2.7-19.6 1.3-1.7.3-2.4 1.3-2.4 2.1 0 9.6 3.5 12.6 17.8 12.6h8.4c14.3 0 17.8-3 17.8-12.6"/></g><g fill="#fff"><path d="m48.9 38.2c.2-.5-.1-1-.5-1.1 0 0-7.4-1.1-16.4-1.1-9 0-16.4 1.1-16.4 1.1-.5.1-.7.6-.5 1.1l1.1 2.9c.2.5.8.9 1.3.9h29.1c.5 0 1.1-.4 1.3-.9l1-2.9"/><path d="m32 48c6.4 0 15.5 0 15.2-2.1 0-.4-.1-.8-.3-1.3-.2-.5-.3-.7-1.4-.7-2.4 0-25.3 0-27.1 0-1.1 0-1.2.1-1.4.7-.1.5-.2.9-.3 1.3-.2 2.1 8.9 2.1 15.3 2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f602.svg b/riot/emojione/svg/1f602.svg new file mode 100644 index 0000000..ad3522a --- /dev/null +++ b/riot/emojione/svg/1f602.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m49.7 34.4c-.4-.5-1.1-.4-1.9-.4-15.8 0-15.8 0-31.6 0-.8 0-1.5-.1-1.9.4-3.9 5 .7 19.6 17.7 19.6 17 0 21.6-14.6 17.7-19.6" fill="#664e27"/><path d="m33.8 41.7c-.6 0-1.5.5-1.1 2 .2.7 1.2 1.6 1.2 2.8 0 2.4-3.8 2.4-3.8 0 0-1.2 1-2 1.2-2.8.3-1.4-.6-2-1.1-2-1.6 0-4.1 1.7-4.1 4.6 0 3.2 2.7 5.8 6 5.8 3.3 0 6-2.6 6-5.8-.1-2.8-2.7-4.5-4.3-4.6" fill="#4c3526"/><path d="m24.3 50.7c2.2 1 4.8 1.5 7.7 1.5 2.9 0 5.5-.6 7.7-1.5-2.1-1.1-4.7-1.7-7.7-1.7s-5.6.6-7.7 1.7" fill="#ff717f"/><path d="m47 36c-15 0-15 0-29.9 0-2.1 0-2.1 4-.1 4 10.4 0 19.6 0 30 0 2 0 2-4 0-4" fill="#fff"/><g fill="#65b1ef"><path d="m59.4 36.9c7.3 7.7-2.6 18.1-9.9 10.4-5.3-5.6-5.6-16.3-5.6-16.3s10.2.3 15.5 5.9"/><path d="m14.5 47.3c-7.3 7.7-17.2-2.7-9.9-10.4 5.3-5.6 15.5-5.9 15.5-5.9s-.3 10.7-5.6 16.3"/></g><g fill="#664e27"><path d="m28.5 28.7c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7 2.2 0 4.4.8 6.2 2.7.6.5 1.5-.4 1.3-.9"/><path d="m50.4 28.7c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.5.5 1.5-.4 1.3-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f603.svg b/riot/emojione/svg/1f603.svg new file mode 100644 index 0000000..a526b15 --- /dev/null +++ b/riot/emojione/svg/1f603.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="24.5" r="5"/><circle cx="43.5" cy="24.5" r="5"/><path d="m49 38c0-.8-.5-1.8-1.8-2.1-3.5-.7-8.6-1.3-15.2-1.3-6.6 0-11.7.7-15.2 1.3-1.3.3-1.8 1.3-1.8 2.1 0 7.3 5.6 14.6 17 14.6 11.4 0 17-7.3 17-14.6"/></g><path d="m44.7 38.3c-2.2-.4-6.8-1-12.7-1-5.9 0-10.5.6-12.7 1-1.3.2-1.4.7-1.3 1.5.1.4.1 1 .3 1.6.1.6.3.9 1.3.8 1.9-.2 23-.2 24.9 0 1 .1 1.1-.2 1.3-.8.1-.6.2-1.1.3-1.6 0-.8-.1-1.3-1.4-1.5" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f604.svg b/riot/emojione/svg/1f604.svg new file mode 100644 index 0000000..9d3a840 --- /dev/null +++ b/riot/emojione/svg/1f604.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M62,32c0,16.6-13.4,30-30,30C15.4,62,2,48.6,2,32C2,15.4,15.4,2,32,2C48.6,2,62,15.4,62,32z" fill="#ffdd67" id="0"/><path d="m49 38c0-.8-.5-1.8-1.8-2.1-3.5-.7-8.6-1.3-15.2-1.3-6.6 0-11.7.7-15.2 1.3-1.3.3-1.8 1.3-1.8 2.1 0 7.3 5.6 14.6 17 14.6 11.4 0 17-7.3 17-14.6" fill="#664e27" id="1"/><path d="m28.5 26.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7 2.2 0 4.4.8 6.2 2.7.6.5 1.5-.4 1.3-.9" fill="#664e27" id="2"/><path d="m50.4 26.9c-1.9-5.1-4.7-7.7-7.5-7.7-2.8 0-5.6 2.6-7.5 7.7-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7 2.3 0 4.4.8 6.2 2.7.5.5 1.5-.4 1.3-.9" fill="#664e27" id="3"/><path d="m44.7 38.3c-2.2-.4-6.8-1-12.7-1-5.9 0-10.5.6-12.7 1-1.3.2-1.4.7-1.3 1.5.1.4.1 1 .3 1.6.1.6.3.9 1.3.8 1.9-.2 23-.2 24.9 0 1 .1 1.1-.2 1.3-.8.1-.6.2-1.1.3-1.6 0-.8-.1-1.3-1.4-1.5" fill="#fff"/><use xlink:href="#0"/><use xlink:href="#1"/><use xlink:href="#2"/><use xlink:href="#3"/><path d="m44.7 38.3c-2.2-.4-6.8-1-12.7-1-5.9 0-10.5.6-12.7 1-1.3.2-1.4.7-1.3 1.5.1.4.1 1 .3 1.6.1.6.3.8 1.3.8 12.4 0 12.4 0 24.9 0 1 0 1.1-.2 1.3-.8.1-.6.2-1.1.3-1.6 0-.8-.1-1.3-1.4-1.5" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f605.svg b/riot/emojione/svg/1f605.svg new file mode 100644 index 0000000..da20875 --- /dev/null +++ b/riot/emojione/svg/1f605.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m25.5 26.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.6.5 1.5-.4 1.3-.9"/><path d="m47.4 26.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.5.5 1.5-.4 1.3-.9"/><path d="m46 38c0-.8-.5-1.8-1.8-2.1-3.5-.7-8.6-1.3-15.2-1.3-6.6 0-11.7.7-15.2 1.3-1.3.3-1.8 1.3-1.8 2.1 0 7.3 5.6 14.6 17 14.6 11.4 0 17-7.3 17-14.6"/></g><path d="m41.7 38.3c-2.2-.4-6.8-1-12.7-1-5.9 0-10.5.6-12.7 1-1.3.2-1.4.7-1.3 1.5.1.4.1 1 .3 1.6.1.6.3.9 1.3.8 1.9-.2 23-.2 24.9 0 1 .1 1.1-.2 1.3-.8.1-.6.2-1.1.3-1.6 0-.8-.1-1.3-1.4-1.5" fill="#fff"/><path d="M60,30.2c0,7.2-9.7,7.2-9.7,0c0-5.2,4.9-10.4,4.9-10.4S60,25,60,30.2z" fill="#65b1ef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f606.svg b/riot/emojione/svg/1f606.svg new file mode 100644 index 0000000..a16e007 --- /dev/null +++ b/riot/emojione/svg/1f606.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m51.7 19.4c.6.3.3 1-.2 1.1-2.7.4-5.5.9-8.3 2.4 4 .7 7.2 2.7 9 4.8.4.5-.1 1.1-.5 1-4.8-1.7-9.7-2.7-15.8-2-.5 0-.9-.2-.8-.7 1.6-7.3 10.9-10 16.6-6.6"/><path d="m12.3 19.4c-.6.3-.3 1 .2 1.1 2.7.4 5.5.9 8.3 2.4-4 .7-7.2 2.7-9 4.8-.4.5.1 1.1.5 1 4.8-1.7 9.7-2.7 15.8-2 .5 0 .9-.2.8-.7-1.6-7.3-10.9-10-16.6-6.6"/><path d="m49.7 34.4c-.4-.5-1.1-.4-1.9-.4-15.8 0-15.8 0-31.6 0-.8 0-1.5-.1-1.9.4-3.9 5 .7 19.6 17.7 19.6 17 0 21.6-14.6 17.7-19.6"/></g><path d="m33.8 41.7c-.6 0-1.5.5-1.1 2 .2.7 1.2 1.6 1.2 2.8 0 2.4-3.8 2.4-3.8 0 0-1.2 1-2 1.2-2.8.3-1.4-.6-2-1.1-2-1.6 0-4.1 1.7-4.1 4.6 0 3.2 2.7 5.8 6 5.8s6-2.6 6-5.8c-.1-2.8-2.7-4.5-4.3-4.6" fill="#4c3526"/><path d="m24.3 50.7c2.2 1 4.8 1.5 7.7 1.5s5.5-.6 7.7-1.5c-2.1-1.1-4.7-1.7-7.7-1.7s-5.6.6-7.7 1.7" fill="#ff717f"/><path d="m47 36c-15 0-15 0-29.9 0-2.1 0-2.1 4-.1 4 10.4 0 19.6 0 30 0 2 0 2-4 0-4" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f607.svg b/riot/emojione/svg/1f607.svg new file mode 100644 index 0000000..7109c83 --- /dev/null +++ b/riot/emojione/svg/1f607.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M61,33c0,16-13,29-29,29C16,62,3,49,3,33C3,17,16,4,32,4C48,4,61,17,61,33z" fill="#ffdd67"/><g fill="#664e27"><path d="m28.6 34.4c-1.8-4.9-4.5-7.4-7.2-7.4-2.7 0-5.4 2.5-7.2 7.4-.2.5.7 1.4 1.2.9 1.7-1.8 3.8-2.6 6-2.6 2.2 0 4.3.7 6 2.6.5.5 1.4-.4 1.2-.9"/><path d="m49.8 34.4c-1.8-4.9-4.5-7.4-7.2-7.4-2.7 0-5.4 2.5-7.2 7.4-.2.5.7 1.4 1.2.9 1.7-1.8 3.8-2.6 6-2.6 2.2 0 4.3.7 6 2.6.4.5 1.4-.4 1.2-.9"/><path d="m44.2 42.2c-7.8 5.5-16.5 5.4-24.3 0-.9-.7-1.8.5-1.1 1.5 2.4 3.9 7.2 7.4 13.3 7.4 6.1 0 10.9-3.5 13.3-7.4.5-1-.3-2.1-1.2-1.5"/></g><path d="m54.3 7.2c-.5-4.2-8.4-6.4-25.8-4.6-16.3 1.8-24.6 5.7-24.2 9.8.7 6.4 12.2 8.6 26 7.1 13.8-1.4 24.6-5.9 24-12.3m-24.7 5.4c-9.2 1-16.9.4-17-1.2-.1-.6.9-1.2 2.5-1.9 4.7-3.4 10.6-5.5 16.9-5.5 4.5 0 8.8 1 12.6 2.9.9.3 1.4.6 1.4 1 .2 1.5-7.2 3.7-16.4 4.7" fill="#4aa9ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f608.svg b/riot/emojione/svg/1f608.svg new file mode 100644 index 0000000..bdf4236 --- /dev/null +++ b/riot/emojione/svg/1f608.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f46767"/><g fill="#ffdd67"><path d="m16.7 10.3c-5.6-2.7-9.2-8.1-9.2-8.1-1.5 14.4 4.3 17.9 7.7 18 4.4 0 7.9-6.8 1.5-9.9"/><path d="m47.3 10.3c5.6-2.7 9.2-8.1 9.2-8.1 1.5 14.4-4.3 17.9-7.7 18-4.4 0-7.9-6.8-1.5-9.9"/></g><path d="m17.3 43.3c2.5 1.5 4.9 2.3 7.3 2.9 2.4.6 4.9.8 7.4.8 2.5 0 4.9-.3 7.4-.8 2.4-.6 4.8-1.5 7.3-2.9-1.1 2.7-3.4 4.9-6 6.2-2.7 1.4-5.7 2-8.6 2-3 0-6-.7-8.6-2-2.8-1.3-5.1-3.5-6.2-6.2" fill="#493b30"/><path d="m52.3 26.8c2 4.3.1 9.4-4.2 11.4-4.3 2-9.4.1-11.4-4.2-1.5-3.2 14.1-10.5 15.6-7.2" fill="#fff"/><g fill="#493b30"><path d="m49.8 27.9c1.4 2.9.1 6.4-2.8 7.7-2.9 1.4-6.4.1-7.7-2.8-1-1.8 9.6-6.7 10.5-4.9"/><path d="m53.9 27.1c-1.9.2-3.5.5-5.2.9-1.6.4-3.1 1-4.6 1.7-1.5.7-2.9 1.5-4.2 2.4-1.4 1-2.6 2.1-4 3.4.2-1.9 1.1-3.7 2.4-5.1 1.2-1.5 2.9-2.6 4.6-3.4 1.8-.8 3.7-1.3 5.6-1.3 1.9-.1 3.8.4 5.4 1.4"/></g><path d="m11.7 26.8c-2 4.3-.1 9.4 4.2 11.4 4.3 2 9.4.1 11.4-4.2 1.5-3.2-14.1-10.5-15.6-7.2" fill="#fff"/><g fill="#493b30"><path d="m14.2 27.9c-1.4 2.9-.1 6.4 2.8 7.7 2.9 1.4 6.4.1 7.7-2.8 1-1.8-9.6-6.7-10.5-4.9"/><path d="m10.1 27.1c1.6-1 3.5-1.5 5.4-1.4 1.9 0 3.8.5 5.6 1.3 1.7.8 3.3 2 4.6 3.4 1.2 1.5 2.2 3.2 2.4 5.1-1.3-1.3-2.6-2.4-4-3.4-1.4-1-2.8-1.8-4.2-2.4-1.5-.7-3-1.2-4.6-1.7-1.7-.5-3.3-.7-5.2-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f609.svg b/riot/emojione/svg/1f609.svg new file mode 100644 index 0000000..2e4509e --- /dev/null +++ b/riot/emojione/svg/1f609.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><circle cx="22.3" cy="31.6" r="5" fill="#664e27"/><g fill="#917524"><path d="m51.2 27.5c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m24.5 18.8c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.3-.4 2.2"/></g><g fill="#664e27"><path d="m50.2 34.3c-1.7-3.5-4.4-5.3-7-5.3s-5.2 1.8-7 5.3c-.2.4.7 1 1.2.6 1.7-1.3 3.7-1.8 5.8-1.8s4.1.5 5.8 1.8c.4.3 1.3-.3 1.2-.6"/><path d="m44.1 42.2c-6.9 3.6-16.4 2.9-19.1 2.9-.7 0-1.2.3-1 .9 2 7 17 7 21.1-2.7.5-1.1-.3-1.4-1-1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f60a.svg b/riot/emojione/svg/1f60a.svg new file mode 100644 index 0000000..797c063 --- /dev/null +++ b/riot/emojione/svg/1f60a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#ff717f"><circle cx="50.8" cy="36" r="8" opacity=".8"/><circle cx="13.2" cy="36" r="8" opacity=".8"/></g><g fill="#664e27"><path d="m44.6 40.3c-8.1 5.7-17.1 5.6-25.2 0-1-.7-1.8.5-1.2 1.6 2.5 4 7.4 7.7 13.8 7.7s11.3-3.6 13.8-7.7c.6-1.1-.2-2.3-1.2-1.6"/><path d="m28.5 26.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7 2.2 0 4.4.8 6.2 2.7.6.5 1.5-.4 1.3-.9"/><path d="m50.4 26.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.5.5 1.5-.4 1.3-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f60b.svg b/riot/emojione/svg/1f60b.svg new file mode 100644 index 0000000..932ca7d --- /dev/null +++ b/riot/emojione/svg/1f60b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.6-13.4,30-30,30C15.4,62,2,48.6,2,32C2,15.4,15.4,2,32,2C48.6,2,62,15.4,62,32z" fill="#ffdd67"/><path d="m42 47.9c-5-5-2.8-2.8 2.5-8.1 5.3-5.3 3.1-7.6 8.1-2.5 5 5 5.2 9.9 2.2 12.9-2.9 2.9-7.8 2.7-12.8-2.3" fill="#ff717f"/><path fill="#e2596c" d="m45.6 38.7l6.8 9-8.9-6.8z"/><g fill="#664e27"><path d="m28.5 24.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.6.5 1.5-.4 1.3-.9"/><path d="m50.4 24.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.5.5 1.5-.4 1.3-.9"/><path d="m48.1 33c-4.3 6.1-9.5 7.6-16.1 7.6s-11.8-1.5-16.1-7.6c-.6-.8-2.2-.3-1.8.9 2.3 8 10 12.7 18 12.7s15.7-4.7 18-12.7c.2-1.2-1.4-1.7-2-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f60c.svg b/riot/emojione/svg/1f60c.svg new file mode 100644 index 0000000..4af17f1 --- /dev/null +++ b/riot/emojione/svg/1f60c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#917524"><path d="m53.2 20.7c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m22.5 17.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.4-.4 2.2"/></g><g fill="#664e27"><path d="m44.6 40.3c-8.1 5.7-17.1 5.6-25.2 0-1-.7-1.8.5-1.2 1.6 2.5 4 7.4 7.7 13.8 7.7s11.3-3.6 13.8-7.7c.6-1.1-.2-2.3-1.2-1.6"/><path d="m35.9 27.2c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.6.4-1.2.6-1 1"/><path d="m11.2 27.2c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.7.4-1.2.6-1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f60d.svg b/riot/emojione/svg/1f60d.svg new file mode 100644 index 0000000..4237d7e --- /dev/null +++ b/riot/emojione/svg/1f60d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.6-13.4,30-30,30C15.4,62,2,48.6,2,32C2,15.4,15.4,2,32,2C48.6,2,62,15.4,62,32z" fill="#ffdd67"/><g fill="#f46767"><path d="m61.8 13.2c-.5-2.7-2-4.9-4.5-5.6-2.7-.7-5.1.3-7.4 2.7-1.3-3.6-3.3-6.3-6.5-7.7-3.2-1.4-6.4-.4-8.4 2.1-2.1 2.6-2.9 6.7-.7 12 2.1 5 11.4 15 11.7 15.3.4-.2 10.8-6.7 13.3-9.9 2.5-3.1 3-6.2 2.5-8.9"/><path d="m29 4.7c-2-2.5-5.2-3.5-8.4-2.1-3.2 1.4-5.2 4.1-6.5 7.7-2.4-2.3-4.8-3.4-7.5-2.6-2.4.7-4 2.9-4.5 5.6-.5 2.6.1 5.8 2.5 8.9 2.6 3.1 13 9.6 13.4 9.8.3-.3 9.6-10.3 11.7-15.3 2.2-5.3 1.4-9.3-.7-12"/></g><path d="m49 38.1c0-.8-.5-1.8-1.8-2.1-3.5-.7-8.6-1.3-15.2-1.3-6.6 0-11.7.7-15.2 1.3-1.4.3-1.8 1.3-1.8 2.1 0 7.3 5.6 14.6 17 14.6 11.4-.1 17-7.4 17-14.6" fill="#664e27"/><path d="m44.7 38.3c-2.2-.4-6.8-1-12.7-1-5.9 0-10.5.6-12.7 1-1.3.2-1.4.7-1.3 1.5.1.4.1 1 .3 1.6.1.6.3.9 1.3.8 1.9-.2 23-.2 24.9 0 1 .1 1.1-.2 1.3-.8.1-.6.2-1.1.3-1.6 0-.8-.1-1.3-1.4-1.5" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f60e.svg b/riot/emojione/svg/1f60e.svg new file mode 100644 index 0000000..945ae68 --- /dev/null +++ b/riot/emojione/svg/1f60e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c16.6,0,30,13.4,30,30S48.6,62,32,62C15.4,62,2,48.6,2,32S15.4,2,32,2" fill="#ffdd67"/><path d="m35.8 20.5c-2.2 1.1-5.5 1.1-7.7 0-2.3-1.2-5.2-2-8.7-2.3-3.4-.3-10.5-.3-14 1-.4.1-.8.3-1.2.5-.1.1-.2.2-.2.6v.5c0 1-.1.6.6 1 1.4.8 2.2 2.9 2.6 5.8.6 4.2 2.7 6.9 6 8.1 3.1 1.2 6.6 1.1 9.7-.1 1.7-.7 3.2-1.7 4.4-3.5 2.1-3 1.4-4.9 2.5-7.5.9-2.3 3.5-2.3 4.5 0 1.1 2.6.4 4.5 2.5 7.5 1.2 1.7 2.7 2.8 4.4 3.5 3.1 1.2 6.6 1.3 9.7.1 3.4-1.3 5.4-3.9 6-8.1.4-2.9 1.2-5 2.6-5.8.7-.4.6 0 .6-1v-.5c0-.4 0-.5-.3-.6-.4-.2-.8-.4-1.2-.5-3.6-1.3-10.7-1.3-14-1-3.5.3-6.4 1.1-8.8 2.3" fill="#494949"/><path d="m44.6 42.3c-8.1 5.7-17.1 5.6-25.2 0-1-.7-1.8.5-1.2 1.6 2.5 4 7.4 7.7 13.8 7.7s11.3-3.6 13.8-7.7c.6-1.1-.2-2.3-1.2-1.6" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f60f.svg b/riot/emojione/svg/1f60f.svg new file mode 100644 index 0000000..68a3db6 --- /dev/null +++ b/riot/emojione/svg/1f60f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.6-13.4,30-30,30C15.4,62,2,48.6,2,32S15.4,2,32,2C48.6,2,62,15.4,62,32z" fill="#ffdd67"/><g fill="#664e27"><path d="m53.9 30.8c-3.4-3.9-14-2.5-17.2 2.8-.2.4.4 1 1.1 1.4 2.1-1.5 4.6-2.3 7.2-2.5 0 2.8 2.2 5.1 5 5.1 4 0 5.9-4.5 3.9-6.8"/><path d="m26.6 30.8c-3.3-3.9-14-2.5-17.2 2.8-.2.4.4 1 1.1 1.4 2.1-1.5 4.6-2.3 7.2-2.5 0 2.8 2.2 5.1 5 5.1 3.9 0 5.8-4.5 3.9-6.8"/><path d="m25.8 51.8c5.8 1.4 15.1 0 19.8-3.5 1.2-.9-1.2-4-2.3-3.1-3.2 2.3-11.2 4.1-16.6 2.9-1.4-.4-2.4 3.3-.9 3.7"/></g><g fill="#917524"><path d="m53.2 24.6c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m22.5 21.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.1.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f610.svg b/riot/emojione/svg/1f610.svg new file mode 100644 index 0000000..23a11f7 --- /dev/null +++ b/riot/emojione/svg/1f610.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="27.6" r="5"/><circle cx="43.5" cy="27.6" r="5"/><path d="m38.9 48h-13.8c-1.5 0-1.5-4 0-4h13.7c1.6 0 1.6 4 .1 4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f611.svg b/riot/emojione/svg/1f611.svg new file mode 100644 index 0000000..7938d2c --- /dev/null +++ b/riot/emojione/svg/1f611.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m40 48h-16c-1.5 0-1.5-4 0-4h16c1.5 0 1.5 4 0 4"/><path d="m27.1 32h-16c-1.5 0-1.5-4 0-4h16c1.5 0 1.5 4 0 4"/><path d="m52.9 32h-16c-1.5 0-1.5-4 0-4h16c1.5 0 1.5 4 0 4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f612.svg b/riot/emojione/svg/1f612.svg new file mode 100644 index 0000000..e557627 --- /dev/null +++ b/riot/emojione/svg/1f612.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.6-13.4,30-30,30C15.4,62,2,48.6,2,32C2,15.4,15.4,2,32,2C48.6,2,62,15.4,62,32z" fill="#ffdd67"/><g fill="#664e27"><path d="m53.9 29.2c-3.4-3.9-14-2.5-17.2 2.8-.2.4.4 1 1.1 1.4 2.1-1.5 4.6-2.3 7.2-2.5 0 2.8 2.2 5.1 5 5.1 4 0 5.8-4.5 3.9-6.8"/><path d="m26.5 29.2c-3.3-3.9-14-2.5-17.2 2.8-.2.4.4 1 1.1 1.4 2.1-1.5 4.6-2.3 7.2-2.5 0 2.8 2.2 5.1 5 5.1 4 0 5.9-4.5 3.9-6.8"/><path d="m40.3 44.7c-5.8-1.5-12-.4-16.9 3-1.2.9 1.1 4 2.3 3.2 3.2-2.3 8.4-3.8 13.7-2.4 1.3.3 2.4-3.4.9-3.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f613.svg b/riot/emojione/svg/1f613.svg new file mode 100644 index 0000000..6077267 --- /dev/null +++ b/riot/emojione/svg/1f613.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2S2,15.4,2,32z" fill="#ffdd67"/><path d="M48.5,16.3c0,9.9,13.5,9.9,13.5,0C62,9.1,55.3,2,55.3,2S48.5,9.1,48.5,16.3z" fill="#65b1ef"/><g fill="#664e27"><circle cx="43.5" cy="36" r="5"/><circle cx="20.5" cy="36" r="5"/></g><g fill="#917524"><path d="m25.6 21.9c-3.2 2.7-7.5 3.9-11.7 3.1-.6-.1-1.1 2-.4 2.2 4.8.9 9.8-.5 13.5-3.6.5-.5-1-2.1-1.4-1.7"/><path d="m50.1 24.9c-4.2.7-8.5-.4-11.7-3.1-.4-.4-2 1.2-1.4 1.7 3.7 3.2 8.7 4.5 13.5 3.6.7-.2.2-2.3-.4-2.2"/></g><path d="m40 52h-16c-1.5 0-1.5-4 0-4h16c1.5 0 1.5 4 0 4" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f614.svg b/riot/emojione/svg/1f614.svg new file mode 100644 index 0000000..28de02f --- /dev/null +++ b/riot/emojione/svg/1f614.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#917524"><path d="m53.2 25.7c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m22.5 22.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.4-.4 2.2"/></g><g fill="#664e27"><path d="m35.9 32.2c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.6.4-1.2.6-1 1"/><path d="m11.2 32.2c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.7.4-1.2.6-1 1"/><path d="m38 50h-12c-1.3 0-1.3-4 0-4h12c1.3 0 1.3 4 0 4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f615.svg b/riot/emojione/svg/1f615.svg new file mode 100644 index 0000000..534330c --- /dev/null +++ b/riot/emojione/svg/1f615.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.5 37.2c2.9 16.3 18.4 27.2 34.8 24.3 16.3-2.9 27.2-18.4 24.3-34.8-2.9-16.2-18.5-27.1-34.8-24.2-16.3 2.8-27.2 18.4-24.3 34.7" fill="#ffdd67"/><g fill="#664e27"><circle cx="42.4" cy="24.7" r="5"/><circle cx="19.7" cy="28.7" r="5"/><path d="m43.3 41.8c-5.8-1.5-12-.4-16.9 3-1.2.9 1.1 4 2.3 3.2 3.2-2.3 8.4-3.8 13.7-2.4 1.3.3 2.4-3.3.9-3.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f616.svg b/riot/emojione/svg/1f616.svg new file mode 100644 index 0000000..5f03826 --- /dev/null +++ b/riot/emojione/svg/1f616.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#917524"><path d="m22.6 18.2c-3.2 2.7-7.5 3.9-11.7 3.1-.6-.1-1.1 2-.4 2.2 4.8.9 9.8-.5 13.5-3.6.5-.5-1-2.1-1.4-1.7"/><path d="m53.1 21.2c-4.2.7-8.5-.4-11.7-3.1-.4-.4-2 1.2-1.4 1.7 3.7 3.2 8.7 4.5 13.5 3.6.7-.2.2-2.3-.4-2.2"/></g><g fill="#664e27"><path d="m46.6 42.4c-.5-.6-1.5-.8-2.2-.3l-4.2 2.8c-.7.5-1.8.4-2.4-.1l-4.6-3.9c-.6-.5-1.6-.5-2.3 0l-4.6 3.9c-.6.5-1.7.6-2.4.1l-4.3-2.8c-.7-.5-1.7-.3-2.2.3l-4.4 5.2c-.5.6-.4.8.3.4l3.8-2.1c.7-.4 1.8-.3 2.4.3l4.6 4.5c.6.6 1.6.6 2.3.1l4.5-3.4c.7-.5 1.7-.5 2.4 0l4.4 3.4c.7.5 1.7.4 2.3-.1l4.6-4.5c.6-.6 1.7-.7 2.4-.3l3.8 2.1c.7.4.9.2.3-.4l-4.5-5.2"/><path d="m51.7 28.1c.6.3.3 1-.2 1.1-2.7.4-5.5.9-8.3 2.4 4 .7 7.2 2.7 9 4.8.4.5-.1 1.1-.5 1-4.8-1.7-9.7-2.7-15.8-2-.5 0-.9-.2-.8-.7 1.6-7.3 10.9-10 16.6-6.6"/><path d="m12.3 28.1c-.6.3-.3 1 .2 1.1 2.7.4 5.5.9 8.3 2.4-4 .7-7.2 2.7-9 4.8-.4.5.1 1.1.5 1 4.8-1.7 9.7-2.7 15.8-2 .5 0 .9-.2.8-.7-1.6-7.3-10.9-10-16.6-6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f617.svg b/riot/emojione/svg/1f617.svg new file mode 100644 index 0000000..be87801 --- /dev/null +++ b/riot/emojione/svg/1f617.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m41.5 50.4c1.6-1.6-1.8-3-1.8-5.9s3.4-4.2 1.8-5.9c-1.9-2-6-.5-8.6-3.1 0 2.2 1.8 4.5 5.2 4.5 0 0-2.3.9-2.3 4.5s2.3 4.5 2.3 4.5c-3.4 0-5.2 2.3-5.2 4.5 2.6-2.7 6.7-1.2 8.6-3.1"/><circle cx="20.5" cy="25.6" r="5"/><circle cx="43.5" cy="25.6" r="5"/></g><g fill="#917524"><path d="m50.2 16.7c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2-1.4 1.7"/><path d="m25.5 13.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f618.svg b/riot/emojione/svg/1f618.svg new file mode 100644 index 0000000..983b37b --- /dev/null +++ b/riot/emojione/svg/1f618.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path fill="#f46767" d="m50.9 58h-.1z"/><ellipse cx="22" cy="27" rx="5" ry="6" fill="#664e27"/><path d="m61.4 42.6c-.9-1.8-2.7-3-5-2.8-2.3.2-4.1 1.4-5.6 3.5-1.5-2-3.3-3.3-5.6-3.4-2.3-.1-4.1 1.1-5 2.9-.9 1.8-.9 4.2.9 7 1.8 2.7 9.5 8.2 9.7 8.4.2-.2 7.9-5.8 9.7-8.4 1.8-3 1.8-5.4.9-7.2" fill="#f46767"/><g fill="#664e27"><path d="m51.9 30.5c-1.9-4.1-4.7-6.1-7.5-6.1s-5.6 2-7.5 6.1c-.2.4.8 1.2 1.3.8 1.8-1.5 4-2.1 6.2-2.1s4.4.6 6.2 2.1c.5.4 1.4-.3 1.3-.8"/><path d="m39.5 50.4c1.6-1.6-1.8-3-1.8-5.9s3.4-4.2 1.8-5.9c-1.9-2-6-.5-8.6-3.1 0 2.2 1.8 4.5 5.2 4.5 0 0-2.3.9-2.3 4.5s2.3 4.5 2.3 4.5c-3.4 0-5.2 2.3-5.2 4.5 2.6-2.7 6.7-1.2 8.6-3.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f619.svg b/riot/emojione/svg/1f619.svg new file mode 100644 index 0000000..1ac00e3 --- /dev/null +++ b/riot/emojione/svg/1f619.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m29 26.6c-2.7-4.7-5.9-6.7-8.7-6.3s-5.1 3.5-6 8.8c-.1.5 1 1.3 1.4.7 1.4-2.2 3.4-3.3 5.7-3.7 2.2-.4 4.5 0 6.6 1.5.5.6 1.3-.5 1-1"/><path d="m50.6 22.8c-2.7-4.7-5.9-6.7-8.7-6.3s-5.1 3.5-6 8.8c-.1.5 1 1.3 1.4.7 1.4-2.2 3.4-3.3 5.7-3.7 2.2-.4 4.5 0 6.6 1.5.5.6 1.3-.5 1-1"/><path d="m45.6 45.4c1.3-1.9-2.3-2.6-2.8-5.5-.5-2.9 2.6-4.8.8-6.1-2.2-1.6-6 .6-9-1.6.4 2.1 2.6 4.1 5.9 3.5 0 0-2.1 1.3-1.5 4.8.6 3.5 3 4 3 4-3.3.6-4.7 3.2-4.3 5.3 2-2.8 6.4-2.1 7.9-4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f61a.svg b/riot/emojione/svg/1f61a.svg new file mode 100644 index 0000000..7a3cf76 --- /dev/null +++ b/riot/emojione/svg/1f61a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m45.6 45.4c1.3-1.9-2.3-2.6-2.8-5.5s2.6-4.8.8-6.1c-2.2-1.6-6 .6-9-1.6.4 2.1 2.6 4.1 5.9 3.5 0 0-2.1 1.3-1.5 4.8.6 3.5 3 4 3 4-3.3.6-4.7 3.2-4.3 5.3 2-2.8 6.4-2.1 7.9-4.4" fill="#664e27"/><g fill="#ff717f"><path d="m55 20.9c-4.2-1-8.2.4-9 3.2-.8 2.8 1.9 6 6.1 7 4.2 1 8.2-.4 9-3.2.8-2.8-2-5.9-6.1-7" opacity=".8"/><path d="m21.9 29.7c-2.4-2.9-8.3-3-13.1-.2-4.8 2.9-6.8 7.6-4.3 10.5 2.4 2.9 8.3 3 13.1.2 4.8-2.8 6.7-7.5 4.3-10.5" opacity=".8"/></g><g fill="#664e27"><path d="m35.2 17.7c5.5 7.1 13.9 5.6 16.7-2.9.1-.4-.4-.5-1.2-.8-3.6 4-10.4 4.9-14.7 2.6-.6.4-1.1.7-.8 1.1"/><path d="m10.8 22c5.5 7.1 13.9 5.6 16.7-2.9.1-.4-.4-.5-1.2-.8-3.6 4-10.4 4.9-14.7 2.6-.6.4-1.1.7-.8 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f61b.svg b/riot/emojione/svg/1f61b.svg new file mode 100644 index 0000000..ccef634 --- /dev/null +++ b/riot/emojione/svg/1f61b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m47.9 38c-3.3 0-9.7 0-15.9 0s-12.6 0-15.9 0c-.7 0-1.1.5-1.1 1 0 7.3 6 15 17 15s17-7.7 17-15c0-.5-.4-1-1.1-1" fill="#664e27"/><path d="m41.2 44c-2.3 0-9.2 0-9.2 0s-6.9 0-9.2 0c-.7 0-.8.3-.8.8 0 .9 0 2.4 0 4 0 8.8 4.5 13.2 10 13.2 5.5 0 10-4.4 10-13.2 0-1.6 0-3.1 0-4 0-.5-.1-.8-.8-.8" fill="#ff717f"/><path fill="#e2596c" d="M33.5 44 32 57.8 30.5 44z"/><g fill="#664e27"><circle cx="20.5" cy="24.5" r="5"/><circle cx="43.5" cy="24.5" r="5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f61c.svg b/riot/emojione/svg/1f61c.svg new file mode 100644 index 0000000..413c3d2 --- /dev/null +++ b/riot/emojione/svg/1f61c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m31.2 24.6c0 5.5-4.5 10-10 10-5.5 0-10-4.5-10-10 0-5.5 4.5-10 10-10 5.6 0 10 4.5 10 10" fill="#fff"/><g fill="#664e27"><circle cx="21.2" cy="24.6" r="4.5"/><path d="m51 29.1c-1.9-4.1-4.7-6.1-7.5-6.1s-5.6 2-7.5 6.1c-.2.4.8 1.2 1.3.8 1.8-1.5 4-2.1 6.2-2.1s4.4.6 6.2 2.1c.5.4 1.5-.4 1.3-.8"/><path d="m47.9 38c-3.3 0-9.7 0-15.9 0s-12.6 0-15.9 0c-.7 0-1.1.5-1.1 1 0 7.3 6 15 17 15s17-7.7 17-15c0-.5-.4-1-1.1-1"/></g><path d="m41.2 44c-2.3 0-9.2 0-9.2 0s-6.9 0-9.2 0c-.7 0-.8.3-.8.8 0 .9 0 2.4 0 4 0 8.8 4.5 13.2 10 13.2 5.5 0 10-4.4 10-13.2 0-1.6 0-3.1 0-4 0-.5-.1-.8-.8-.8" fill="#ff717f"/><path fill="#e2596c" d="M33.5 44 32 57.8 30.5 44z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f61d.svg b/riot/emojione/svg/1f61d.svg new file mode 100644 index 0000000..5157da9 --- /dev/null +++ b/riot/emojione/svg/1f61d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m47.9 38c-3.3 0-9.7 0-15.9 0s-12.6 0-15.9 0c-.7 0-1.1.5-1.1 1 0 7.3 6 15 17 15s17-7.7 17-15c0-.5-.4-1-1.1-1" fill="#664e27"/><path d="m41.2 44c-2.3 0-9.2 0-9.2 0s-6.9 0-9.2 0c-.7 0-.8.3-.8.8 0 .9 0 2.4 0 4 0 8.8 4.5 13.2 10 13.2 5.5 0 10-4.4 10-13.2 0-1.6 0-3.1 0-4 0-.5-.1-.8-.8-.8" fill="#ff717f"/><path fill="#e2596c" d="M33.5 44 32 57.8 30.5 44z"/><g fill="#664e27"><path d="m51.7 23.4c.6.3.3 1-.2 1.1-2.7.4-5.5.9-8.3 2.4 4 .7 7.2 2.7 9 4.8.4.5-.1 1.1-.5 1-4.8-1.7-9.7-2.7-15.8-2-.5 0-.9-.2-.8-.7 1.6-7.3 10.9-10 16.6-6.6"/><path d="m12.3 23.4c-.6.3-.3 1 .2 1.1 2.7.4 5.5.9 8.3 2.4-4 .7-7.2 2.7-9 4.8-.4.5.1 1.1.5 1 4.8-1.7 9.7-2.7 15.8-2 .5 0 .9-.2.8-.7-1.6-7.3-10.9-10-16.6-6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f61e.svg b/riot/emojione/svg/1f61e.svg new file mode 100644 index 0000000..143c2f4 --- /dev/null +++ b/riot/emojione/svg/1f61e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m25.5 28.4c1.4 2.9-.4 6.6-3.9 8.3-3.5 1.6-7.5.6-8.9-2.3-.8-1.9 12-7.9 12.8-6"/><path d="m38.5 28.4c-1.4 2.9.4 6.6 3.9 8.3 3.5 1.6 7.5.6 8.9-2.3.8-1.9-12-7.9-12.8-6"/></g><g fill="#917524"><path d="m22.7 19.8c-2.7 3.3-9.2 6.3-13.5 6.3-.6 0-.7 2.2 0 2.2 4.9 0 12-3.3 15.2-7.1.5-.5-1.3-1.8-1.7-1.4"/><path d="m41.3 19.8c2.7 3.3 9.2 6.3 13.5 6.3.6 0 .7 2.2 0 2.2-4.9 0-12-3.3-15.2-7.1-.5-.5 1.3-1.8 1.7-1.4"/></g><path d="m40.6 46.4c-5.4-2.5-11.8-2.5-17.2 0-1.3.6.3 4.2 1.7 3.5 3.6-1.7 8.9-2.3 13.9 0 1.3.6 3-2.8 1.6-3.5" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f61f.svg b/riot/emojione/svg/1f61f.svg new file mode 100644 index 0000000..a1eec05 --- /dev/null +++ b/riot/emojione/svg/1f61f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="29.6" r="5"/><circle cx="43.5" cy="29.6" r="5"/></g><g fill="#917524"><path d="m51.2 18.7c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m24.5 15.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.4-.4 2.2"/></g><path d="m40.6 44.4c-5.4-2.5-11.8-2.5-17.2 0-1.3.6.3 4.2 1.7 3.5 3.6-1.7 8.9-2.3 13.9 0 1.3.6 3-2.8 1.6-3.5" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f620.svg b/riot/emojione/svg/1f620.svg new file mode 100644 index 0000000..a32acbc --- /dev/null +++ b/riot/emojione/svg/1f620.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m41 49.7c-5.8-4.8-12.2-4.8-18 0-.7.6-1.3-.4-.8-1.3 1.8-3.4 5.3-6.5 9.8-6.5s8.1 3.1 9.8 6.5c.5.8-.1 1.8-.8 1.3" fill="#664e27"/><path d="m10.2 24.9c-1.5 4.7.6 10 5.3 12.1 4.6 2.2 10 .5 12.7-3.7l-6.9-7.7-11.1-.7" fill="#fff"/><g fill="#664e27"><path d="m14.2 25.8c-1.4 2.9-.1 6.4 2.8 7.7 2.9 1.4 6.4.1 7.7-2.8 1-1.9-9.6-6.8-10.5-4.9"/><path d="m10.2 24.9c1.6-1 3.5-1.5 5.4-1.5 1.9 0 3.8.5 5.6 1.3 1.7.8 3.3 2 4.6 3.4 1.2 1.5 2.2 3.2 2.4 5.1-1.3-1.3-2.6-2.4-4-3.4-1.4-1-2.8-1.8-4.2-2.4-1.5-.7-3-1.2-4.6-1.7-1.8-.3-3.4-.6-5.2-.8"/></g><path d="m53.8 24.9c1.5 4.7-.6 10-5.3 12.1-4.6 2.2-10 .5-12.7-3.7l6.9-7.7 11.1-.7" fill="#fff"/><g fill="#664e27"><path d="m49.8 25.8c1.4 2.9.1 6.4-2.8 7.7-2.9 1.4-6.4.1-7.7-2.8-1-1.9 9.6-6.8 10.5-4.9"/><path d="m53.8 24.9c-1.6-1-3.5-1.5-5.4-1.5-1.9 0-3.8.5-5.6 1.3-1.7.8-3.3 2-4.6 3.4-1.2 1.5-2.2 3.2-2.4 5.1 1.3-1.3 2.6-2.4 4-3.4 1.4-1 2.8-1.8 4.2-2.4 1.5-.7 3-1.2 4.6-1.7 1.8-.3 3.4-.6 5.2-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f621.svg b/riot/emojione/svg/1f621.svg new file mode 100644 index 0000000..f7c7227 --- /dev/null +++ b/riot/emojione/svg/1f621.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ef5350"/><path d="m41 49.7c-5.8-4.8-12.2-4.8-18 0-.7.6-1.3-.4-.8-1.3 1.8-3.4 5.3-6.5 9.8-6.5s8.1 3.1 9.8 6.5c.5.8-.1 1.8-.8 1.3" fill="#302424"/><path d="m10.2 24.9c-1.5 4.7.6 10 5.3 12.1 4.6 2.2 10 .5 12.7-3.7l-6.9-7.7-11.1-.7" fill="#fff"/><g fill="#302424"><path d="m14.2 25.8c-1.4 2.9-.1 6.4 2.8 7.7 2.9 1.4 6.4.1 7.7-2.8 1-1.9-9.6-6.8-10.5-4.9"/><path d="m10.2 24.9c1.6-1 3.5-1.5 5.4-1.5 1.9 0 3.8.5 5.6 1.3 1.7.8 3.3 2 4.6 3.4 1.2 1.5 2.2 3.2 2.4 5.1-1.3-1.3-2.6-2.4-4-3.4-1.4-1-2.8-1.8-4.2-2.4-1.5-.7-3-1.2-4.6-1.7-1.8-.3-3.4-.6-5.2-.8"/></g><path d="m53.8 24.9c1.5 4.7-.6 10-5.3 12.1-4.6 2.2-10 .5-12.7-3.7l6.9-7.7 11.1-.7" fill="#fff"/><g fill="#302424"><path d="m49.8 25.8c1.4 2.9.1 6.4-2.8 7.7-2.9 1.4-6.4.1-7.7-2.8-1-1.9 9.6-6.8 10.5-4.9"/><path d="m53.8 24.9c-1.6-1-3.5-1.5-5.4-1.5-1.9 0-3.8.5-5.6 1.3-1.7.8-3.3 2-4.6 3.4-1.2 1.5-2.2 3.2-2.4 5.1 1.3-1.3 2.6-2.4 4-3.4 1.4-1 2.8-1.8 4.2-2.4 1.5-.7 3-1.2 4.6-1.7 1.8-.3 3.4-.6 5.2-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f622.svg b/riot/emojione/svg/1f622.svg new file mode 100644 index 0000000..e39209c --- /dev/null +++ b/riot/emojione/svg/1f622.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m40.6 46.4c-5.4-2.5-11.8-2.5-17.2 0-1.3.6.3 4.2 1.7 3.5 3.6-1.7 8.9-2.3 13.9 0 1.3.6 3-2.8 1.6-3.5" fill="#664e27"/><path d="m54 31c0 5-4 9-9 9-5 0-9-4-9-9 0-5 4-9 9-9 5 0 9 4 9 9" fill="#fff"/><circle cx="45" cy="31" r="6" fill="#664e27"/><g fill="#fff"><ellipse cx="46.6" cy="35.5" rx="2.8" ry="3.2"/><ellipse cx="42.8" cy="31" rx="1.6" ry="1.9"/><path d="m28 31c0 5-4 9-9 9-5 0-9-4-9-9 0-5 4-9 9-9 5 0 9 4 9 9"/></g><circle cx="19" cy="31" r="6" fill="#664e27"/><g fill="#fff"><ellipse cx="20.6" cy="35.5" rx="2.8" ry="3.2"/><ellipse cx="16.8" cy="31" rx="1.6" ry="1.9"/></g><path d="m47 36c-5.1 6.8-8 13-8 18.1 0 4.4 3.6 7.9 8 7.9 4.4 0 8-3.5 8-7.9 0-5.1-3-11.4-8-18.1" fill="#65b1ef"/><g fill="#917524"><path d="m53.2 20.7c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m22.5 17.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f623.svg b/riot/emojione/svg/1f623.svg new file mode 100644 index 0000000..9482683 --- /dev/null +++ b/riot/emojione/svg/1f623.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#ff717f"><ellipse transform="matrix(.4226-.9063.9063.4226 1.9347 65.6611)" cx="52.5" cy="31.3" rx="6.5" ry="9" opacity=".8"/><ellipse transform="matrix(.9063-.4226.4226.9063-12.1546 7.7934)" cx="11.5" cy="31.3" rx="9" ry="6.5" opacity=".8"/></g><g fill="#664e27"><path d="m19.4 42.2c8.1-5.7 17.1-5.6 25.2 0 1 .7 1.8-.5 1.2-1.6-2.5-4-7.4-7.7-13.8-7.7s-11.3 3.6-13.8 7.7c-.6 1.1.2 2.3 1.2 1.6"/><path d="m51.7 15.1c.6.3.3 1-.2 1.1-2.7.4-5.5.9-8.3 2.4 4 .7 7.2 2.7 9 4.8.4.5-.1 1.1-.5 1-4.8-1.7-9.7-2.7-15.8-2-.5 0-.9-.2-.8-.7 1.6-7.3 10.9-10 16.6-6.6"/><path d="m12.3 15.1c-.6.3-.3 1 .2 1.1 2.7.4 5.5.9 8.3 2.4-4 .7-7.2 2.7-9 4.8-.4.5.1 1.1.5 1 4.8-1.7 9.7-2.7 15.8-2 .5 0 .9-.2.8-.7-1.6-7.3-10.9-10-16.6-6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f624.svg b/riot/emojione/svg/1f624.svg new file mode 100644 index 0000000..fe5de95 --- /dev/null +++ b/riot/emojione/svg/1f624.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.6-13.4,30-30,30C15.4,62,2,48.6,2,32C2,15.4,15.4,2,32,2C48.6,2,62,15.4,62,32z" fill="#ffdd67"/><g fill="#917524"><path d="m48.4 12.9c-4.2.4-8.1 2.6-10.5 6.1-.3.5-2.2-.7-1.8-1.3 2.8-4 7.2-6.6 12.1-7 .7 0 .8 2.2.2 2.2"/><path d="m26.1 19c-2.4-3.5-6.3-5.7-10.5-6.1-.6 0-.5-2.2.2-2.2 4.9.4 9.3 3 12.1 7 .4.6-1.5 1.8-1.8 1.3"/></g><g fill="#664e27"><path d="m21.2 39.9c7-4.8 14.7-4.8 21.6 0 .8.6 1.6-.4 1-1.3-2.1-3.4-6.4-6.5-11.8-6.5s-9.7 3.1-11.8 6.5c-.6.9.2 1.9 1 1.3"/><path d="m35.9 21c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.6.5-1.2.6-1 1"/><path d="m11.2 21c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.7.5-1.2.6-1 1"/></g><g fill="#d8d8d8"><path d="m61.7 47.3c-1-2.5-4.3-3.8-7.3-3-1.6.4-2.8 1.3-3.4 2.4-7.8-1.5-15-15.4-15-15.4s.2 11.3 5.9 17.9c-1.2-.4-2.5-.4-3.9-.1-3.1.8-4.7 3.5-3.7 5.9s4.3 3.8 7.3 3c.2-.1.4-.1.6-.2 1.6 3.1 5.9 4.7 10 3.7 4.3-1.1 6.6-4.8 5.2-8.2.2 0 .4-.1.6-.1 3-.7 4.7-3.4 3.7-5.9"/><path d="m2.3 47.3c1-2.5 4.3-3.8 7.3-3 1.6.4 2.8 1.3 3.4 2.4 7.8-1.5 15-15.4 15-15.4s-.2 11.3-5.9 17.9c1.2-.4 2.5-.4 3.9-.1 3.1.8 4.7 3.5 3.7 5.9-1 2.5-4.3 3.8-7.3 3-.2-.1-.4-.1-.6-.2-1.6 3.1-5.9 4.7-10 3.7-4.3-1.1-6.6-4.8-5.2-8.2-.2 0-.4-.1-.6-.1-3-.7-4.7-3.4-3.7-5.9"/></g><g fill="#fff"><path d="m59.3 44.8c-.9-2.6-3.9-4.1-6.8-3.2-1.4.4-2.5 1.4-3.2 2.6-7.2-1.6-13.8-16.4-13.8-16.4s.3 12.1 5.5 19.2c-1.1-.4-2.3-.4-3.5-.1-2.8.9-4.3 3.7-3.4 6.3.9 2.6 3.9 4.1 6.8 3.2.2-.1.4-.1.6-.2 1.5 3.3 5.5 5.1 9.2 3.9 3.9-1.2 6.1-5.1 4.8-8.8.2 0 .4-.1.6-.1 2.6-.9 4.2-3.7 3.2-6.4"/><path d="m4.7 44.8c.9-2.6 3.9-4.1 6.8-3.2 1.4.4 2.5 1.4 3.1 2.6 7.2-1.6 13.8-16.4 13.8-16.4s-.2 12.1-5.4 19.2c1.1-.4 2.3-.4 3.5-.1 2.8.9 4.4 3.7 3.4 6.3-.9 2.6-3.9 4.1-6.8 3.2-.2-.1-.4-.1-.6-.2-1.5 3.3-5.5 5.1-9.2 3.9-3.8-1.1-5.9-5.1-4.6-8.8-.2 0-.4-.1-.6-.1-2.8-.9-4.4-3.7-3.4-6.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f625.svg b/riot/emojione/svg/1f625.svg new file mode 100644 index 0000000..c52759e --- /dev/null +++ b/riot/emojione/svg/1f625.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,16.6,13.4,30,30,30s30-13.4,30-30S48.6,2,32,2S2,15.4,2,32z" fill="#ffdd67"/><path d="m47.7 37.6c0 8.6 11.7 8.6 11.7 0 0-6.3-5.8-12.4-5.8-12.4s-5.9 6.1-5.9 12.4" fill="#65b1ef"/><g fill="#664e27"><circle cx="38.5" cy="35" r="5"/><circle cx="15.5" cy="35" r="5"/></g><g fill="#917524"><path d="m20.6 19.9c-3.2 2.7-7.5 3.9-11.7 3.1-.6-.1-1.1 2-.4 2.2 4.8.9 9.8-.5 13.5-3.6.5-.5-1-2.1-1.4-1.7"/><path d="m45.1 22.9c-4.2.7-8.5-.4-11.7-3.1-.4-.4-2 1.2-1.4 1.7 3.7 3.2 8.7 4.5 13.5 3.6.7-.2.2-2.3-.4-2.2"/></g><path d="m38.1 47.3c-5.8-1.5-12-.4-16.9 3-1.2.9 1.1 4 2.3 3.2 3.2-2.3 8.4-3.8 13.7-2.4 1.3.3 2.4-3.3.9-3.8" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f626.svg b/riot/emojione/svg/1f626.svg new file mode 100644 index 0000000..c037c08 --- /dev/null +++ b/riot/emojione/svg/1f626.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="26" r="5"/><circle cx="43.5" cy="26" r="5"/><path d="m45.7 44c-1.5-3.6-5.1-6-13.7-6-8.6 0-12.2 2.4-13.7 6-.8 1.9.3 4 .3 4 .4 1.2 2.2 2 13.4 2 11.1 0 12.9-.8 13.4-2 0 0 1.1-2.1.3-4"/></g><path d="m42 43c.1-.3 0-.6-.2-.8 0 0-2.2-2.2-9.8-2.2-7.5 0-9.8 2.2-9.8 2.2-.2.1-.2.5-.2.8l.2.6c.1.3.3.5.6.5h18.4c.2 0 .5-.2.6-.5l.2-.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f627.svg b/riot/emojione/svg/1f627.svg new file mode 100644 index 0000000..b97c18b --- /dev/null +++ b/riot/emojione/svg/1f627.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="26" r="5"/><circle cx="43.5" cy="26" r="5"/><path d="m47.7 42c-1.7-3.6-5.9-6-15.7-6-9.8 0-14 2.4-15.7 6-.9 1.9.4 5 .4 5 1.6 3.9 1.4 5 15.3 5 13.9 0 13.6-1.1 15.3-5 0 0 1.3-3.1.4-5"/></g><path d="m43.4 41c.1-.3 0-.6-.2-.8 0 0-2.5-2.2-11.1-2.2-8.6 0-11.1 2.2-11.1 2.2-.2.2-.3.5-.2.8l.2.6c.1.3.4.5.7.5h21c.3 0 .6-.2.7-.5v-.6" fill="#fff"/><g fill="#917524"><path d="m52.2 16.7c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m23.5 13.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f628.svg b/riot/emojione/svg/1f628.svg new file mode 100644 index 0000000..38cfe0b --- /dev/null +++ b/riot/emojione/svg/1f628.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><circle cx="19.5" cy="24.8" r="10" fill="#fff"/><circle cx="19.5" cy="24.8" r="3.5" fill="#664e27"/><circle cx="44.5" cy="24.8" r="10" fill="#fff"/><g fill="#664e27"><circle cx="44.5" cy="24.8" r="3.5"/><path d="m47.7 44c-1.7-3.6-5.9-6-15.7-6-9.8 0-14 2.4-15.7 6-.9 1.9.4 5 .4 5 1.6 3.9 1.4 5 15.3 5 13.9 0 13.6-1.1 15.3-5 0 0 1.3-3.1.4-5"/></g><path d="m43.4 43c.1-.3 0-.6-.2-.8 0 0-2.5-2.2-11.1-2.2s-11.1 2.2-11.1 2.2c-.2.2-.3.5-.2.8l.2.6c.1.3.4.5.7.5h21c.3 0 .6-.2.7-.5v-.6" fill="#fff"/><g fill="#917524"><path d="m50.2 13.5c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.4-1 2-1.4 1.7"/><path d="m25.5 10.2c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.1.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f629.svg b/riot/emojione/svg/1f629.svg new file mode 100644 index 0000000..248da5b --- /dev/null +++ b/riot/emojione/svg/1f629.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#917524"><path d="m39.4 18.2c3.2 2.7 7.5 3.9 11.7 3.1.6-.1 1.1 2 .4 2.2-4.8.9-9.8-.5-13.5-3.6-.5-.5 1-2 1.4-1.7"/><path d="m12.9 21.2c4.2.7 8.5-.4 11.7-3.1.4-.4 2 1.2 1.4 1.7-3.7 3.2-8.7 4.5-13.5 3.6-.7-.2-.2-2.3.4-2.2"/></g><g fill="#664e27"><path d="m35.8 24.8c2 8.8 10.2 11 16.3 4.4.3-.3-.2-.6-.7-1.3-4.9 2.1-11.4.1-14.3-3.8-.8.2-1.4.2-1.3.7"/><path d="m11.8 29.2c6.1 6.6 14.3 4.4 16.3-4.4.1-.4-.5-.5-1.2-.7-3.2 4.3-9.9 5.8-14.4 3.9-.5.5-1 .8-.7 1.2"/><path d="m47.7 44c-1.7-3.6-5.9-6-15.7-6-9.8 0-14 2.4-15.7 6-.9 1.9.4 5 .4 5 1.6 3.9 1.4 5 15.3 5 13.9 0 13.6-1.1 15.3-5 0 0 1.3-3.1.4-5"/></g><path d="m43.4 43c.1-.3 0-.6-.2-.8 0 0-2.5-2.2-11.1-2.2s-11.1 2.2-11.1 2.2c-.2.2-.3.5-.2.8l.2.6c.1.3.4.5.7.5h21c.3 0 .6-.2.7-.5v-.6" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f62a.svg b/riot/emojione/svg/1f62a.svg new file mode 100644 index 0000000..d2dd9f7 --- /dev/null +++ b/riot/emojione/svg/1f62a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m43.8 48.3c0 6.3-5.3 8.4-11.8 8.4s-11.8-2.1-11.8-8.4c0-8.3 5.3-13.7 11.8-13.7 6.5 0 11.8 5.4 11.8 13.7" fill="#664e27"/><path d="m34.7 39c-.8 0-2.1.8-1.7 2.9.2 1.1 1.7 2.4 1.7 4.1 0 3.5-5.5 3.5-5.5 0 0-1.7 1.5-3 1.7-4.1.5-2.1-.8-2.9-1.7-2.9-2.3.1-6.1 2.6-6.1 6.8 0 4.8 3.9 8.7 8.8 8.7s8.8-3.9 8.8-8.7c.1-4.2-3.7-6.8-6-6.8" fill="#4c3526"/><path d="m32 50.7c-6.4 0-8.3 2-8.3 2 1.6 2.8 8.3 2.6 8.3 2.6s6.6.2 8.3-2.6c0 0-1.9-2-8.3-2" fill="#ff717f"/><path d="m30.1 26.8c-1.3-.7-4.1 7.9-8.5 8.7-.4-.5-.9-1-1.4-1.4-4.2-3.5-10.7-2.8-14.5 1.8-3.8 4.5-3.4 11.1.8 14.6 4.2 3.6 10.7 2.8 14.5-1.8 4.9-5.8 10.8-21 9.1-21.9" fill="#52e8b6"/><g fill="#664e27"><path d="m35.9 20.5c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.6.5-1.2.6-1 1"/><path d="m11.2 20.5c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.7.5-1.2.6-1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f62b.svg b/riot/emojione/svg/1f62b.svg new file mode 100644 index 0000000..3ba1a6c --- /dev/null +++ b/riot/emojione/svg/1f62b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#917524"><path d="m38.4 11.2c3.2 2.7 7.5 3.9 11.7 3.1.6-.1 1.1 2 .4 2.2-4.8.9-9.8-.5-13.5-3.6-.5-.5 1-2 1.4-1.7"/><path d="m13.9 14.2c4.2.7 8.5-.4 11.7-3.1.4-.4 2 1.2 1.4 1.7-3.7 3.2-8.7 4.5-13.5 3.6-.7-.2-.2-2.3.4-2.2"/></g><path d="m32 32c-8.8-.1-15.9 5.4-16 12.3 0 3.8 1.3 9.5 5.6 9.5 3.1 0 6.5-3.8 10.4-3.8 3.9 0 7.1 4 10.2 4 3.8 0 5.8-5.7 5.8-9.5.1-6.8-7.2-12.4-16-12.5" fill="#664e27"/><path d="m39 43.2c0-3.1-3-4.9-4.8-4.9-.7 0-1.7.6-1.3 2.1.2.8 1.4 1.7 1.4 3 0 2.5-4.4 2.5-4.4 0 0-1.3 1.2-2.2 1.4-3 .4-1.5-.7-2.1-1.3-2.1-1.8 0-4.8 1.9-4.8 4.9 0 1.9 1 3.4 2.5 4.6h9c1.3-1.2 2.3-2.7 2.3-4.6" fill="#4c3526"/><path d="m32 46c-6 0-8 5-8 5s4-3 8-3 8 3 8 3-2-5-8-5" fill="#ff717f"/><path d="m41.8 37c-2.5-1.9-5.7-3-9.8-3-4.1 0-7.3 1.2-9.8 3-.4.3-.4 1 .3 1 2.4 0 9.4 0 9.4 0s7.1 0 9.4 0c.8 0 .8-.7.5-1" fill="#fff"/><g fill="#664e27"><path d="m51.7 21.1c.6.3.3 1-.2 1.1-2.7.4-5.5.9-8.3 2.4 4 .7 7.2 2.7 9 4.8.4.5-.1 1.1-.5 1-4.8-1.7-9.7-2.7-15.8-2-.5 0-.9-.2-.8-.7 1.6-7.3 10.9-10 16.6-6.6"/><path d="m12.3 21.1c-.6.3-.3 1 .2 1.1 2.7.4 5.5.9 8.3 2.4-4 .7-7.2 2.7-9 4.8-.4.5.1 1.1.5 1 4.8-1.7 9.7-2.7 15.8-2 .5 0 .9-.2.8-.7-1.6-7.3-10.9-10-16.6-6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f62c.svg b/riot/emojione/svg/1f62c.svg new file mode 100644 index 0000000..75c5b7d --- /dev/null +++ b/riot/emojione/svg/1f62c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m52.5 40c-2.2-3.6-7.7-6-20.5-6-12.8 0-18.3 2.4-20.5 6-1.2 1.9.5 5 .5 5 2.1 3.9 1.8 5 20 5 18.1 0 17.9-1.1 20-5 0 0 1.7-3.1.5-5"/><circle cx="20.5" cy="24.5" r="5"/><circle cx="43.5" cy="24.5" r="5"/></g><g fill="#fff"><path d="m48 40c.1-.5-.2-1.2-.6-1.5 0 0-3.9-2.5-15.4-2.5-11.5 0-15.4 2.5-15.4 2.5-.4.3-.7.9-.6 1.5l.2 1c.1.5.6 1 1.1 1h29.3c.5 0 1-.4 1.1-1l.3-1"/><path d="m32 48c6.3 0 15.2 0 15-2.1 0-.4-.1-.8-.3-1.3-.2-.5-.3-.7-1.4-.7-2.4 0-24.9 0-26.7 0-1.1 0-1.2.1-1.4.7-.1.5-.2.9-.3 1.3-.1 2.1 8.8 2.1 15.1 2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f62d.svg b/riot/emojione/svg/1f62d.svg new file mode 100644 index 0000000..0fb4ba9 --- /dev/null +++ b/riot/emojione/svg/1f62d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#65b1ef"><ellipse cx="17.5" cy="59.9" rx="12.5" ry="1.5"/><ellipse cx="44" cy="60.2" rx="18" ry="1.8"/></g><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m44.7 46c-1.4-3.6-4.8-6-12.7-6-8 0-11.3 2.4-12.7 6-.7 1.9.3 5 .3 5 1.3 3.9 1.1 5 12.4 5 11.3 0 11.1-1.1 12.4-5 0 0 1.1-3.1.3-5" fill="#664e27"/><path d="m41 45c.1-.3 0-.6-.2-.8 0 0-2-2.2-8.8-2.2-6.8 0-8.8 2.2-8.8 2.2-.2.1-.2.5-.2.8l.2.6c.1.3.3.5.5.5h16.6c.2 0 .5-.2.5-.5l.2-.6" fill="#fff"/><g fill="#65b1ef"><path d="m44.5 60.5c2.3 0 4.6 0 6.8 0 8.2-9.9-1.5-20 .9-29.8-2.3 0-4.6 2.5-6.8 2.5-3.2 9.5 7.3 17.4-.9 27.3"/><path d="m19.5 60.5c-2.3 0-4.6 0-6.8 0-8.2-9.9 1.5-20-.9-29.8 2.3 0 4.6 2.5 6.8 2.5 3.2 9.5-7.3 17.4.9 27.3"/></g><g fill="#917524"><path d="m40.7 18.3c3 3 7.2 4.5 11.4 4.1.6-.1.9 2.1.2 2.2-4.9.4-9.7-1.3-13.1-4.8-.6-.5 1.1-1.9 1.5-1.5"/><path d="m12 22.4c4.2.4 8.4-1.1 11.4-4.1.4-.4 2.1 1 1.6 1.5-3.4 3.5-8.3 5.2-13.1 4.8-.9 0-.5-2.2.1-2.2"/></g><g fill="#664e27"><path d="m35.9 30.3c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.6.4-1.2.6-1 1"/><path d="m11.2 30.3c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.7.4-1.2.6-1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f62e.svg b/riot/emojione/svg/1f62e.svg new file mode 100644 index 0000000..855b53c --- /dev/null +++ b/riot/emojione/svg/1f62e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="32" cy="45.1" r="7"/><circle cx="20.2" cy="25" r="4.5"/><circle cx="42.7" cy="25" r="4.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f62f.svg b/riot/emojione/svg/1f62f.svg new file mode 100644 index 0000000..d9b0801 --- /dev/null +++ b/riot/emojione/svg/1f62f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20" cy="27" r="5"/><circle cx="44" cy="27" r="5"/></g><g fill="#917524"><path d="m50.2 17c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m25.5 13.8c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.1.2 2.3-.4 2.2"/></g><circle cx="32" cy="48" r="5" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f630.svg b/riot/emojione/svg/1f630.svg new file mode 100644 index 0000000..9ae7444 --- /dev/null +++ b/riot/emojione/svg/1f630.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m40.3 48.1c0 4.6-3.7 8.3-8.3 8.3-4.6 0-8.3-3.7-8.3-8.3 0-4.6 3.7-8.3 8.3-8.3 4.6 0 8.3 3.7 8.3 8.3" fill="#664e27"/><path d="m26.2 44.8c1.2-2 3.3-3.4 5.8-3.4 2.5 0 4.7 1.3 5.8 3.4h-11.6" fill="#fff"/><g fill="#664e27"><circle cx="43.5" cy="33" r="4.5"/><circle cx="20.5" cy="33" r="4.5"/></g><g fill="#917524"><path d="m25.6 17.9c-3.2 2.7-7.5 3.9-11.7 3.1-.6-.1-1.1 2-.4 2.2 4.8.9 9.8-.5 13.5-3.6.5-.5-1-2.1-1.4-1.7"/><path d="m50.1 20.9c-4.2.7-8.5-.4-11.7-3.1-.4-.4-2 1.2-1.4 1.7 3.7 3.2 8.7 4.5 13.5 3.6.7-.2.2-2.3-.4-2.2"/></g><path d="m62 18.5c0 9.4-12.7 9.4-12.7 0 0-6.9 6.4-13.5 6.4-13.5s6.3 6.7 6.3 13.5" fill="#65b1ef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f631.svg b/riot/emojione/svg/1f631.svg new file mode 100644 index 0000000..686c983 --- /dev/null +++ b/riot/emojione/svg/1f631.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-16.5 0-30 13.4-30 30 0 4.9 15.8 22.9 23 27.6 2 1.3 4.7 2.4 7 2.4 2.3 0 5-1.2 7-2.4 7.3-4.7 23-22.7 23-27.6 0-16.6-13.4-30-30-30" fill="#ffdd67"/><path d="m30.5 24.7c0 5.5-4.5 10-10 10-5.5 0-10-4.5-10-10 0-5.5 4.4-10 10-10 5.5 0 10 4.5 10 10" fill="#fff"/><path d="m24 24.7c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5c2 0 3.5 1.6 3.5 3.5" fill="#664e27"/><path d="m53.5 24.7c0 5.5-4.5 10-10 10-5.5 0-10-4.5-10-10 0-5.5 4.5-10 10-10 5.5 0 10 4.5 10 10" fill="#fff"/><g fill="#664e27"><path d="m47 24.7c0 1.9-1.6 3.5-3.5 3.5-2 0-3.5-1.6-3.5-3.5s1.6-3.5 3.5-3.5c1.9 0 3.5 1.6 3.5 3.5"/><path d="m40.4 46.1c0 6.6-3.7 12-8.4 12-4.6 0-8.3-5.4-8.3-12 0-6.6 3.8-12 8.3-12 4.6-.1 8.4 5.3 8.4 12"/></g><path d="m34 41.4c-.6 0-1.6.6-1.2 2.3.2.8 1.3 1.8 1.3 3.2 0 2.7-4 2.7-4 0 0-1.3 1.1-2.3 1.3-3.2.4-1.6-.6-2.3-1.2-2.3-1.7 0-4.5 2-4.5 5.3 0 3.7 2.9 6.7 6.4 6.7 3.6 0 6.4-3 6.4-6.7-.1-3.3-2.8-5.3-4.5-5.3" fill="#4c3526"/><path d="m32 51.9c-3.9 0-4.9 1.1-4.9 1.1 1 2.1 2.8 3.6 4.9 3.6 2.2 0 4-1.4 5-3.6 0 0-1.1-1.1-5-1.1" fill="#ff717f"/><g fill="#917524"><path d="m22.7 7.7c-2.4 3.5-6.2 5.7-10.5 6.1-.6 0-.5 2.2.2 2.2 4.9-.4 9.3-3 12.1-7 .4-.6-1.5-1.8-1.8-1.3"/><path d="m51.8 13.6c-4.2-.4-8-2.6-10.5-6.1-.3-.5-2.2.7-1.8 1.3 2.8 4 7.2 6.6 12.1 7 .7 0 .8-2.2.2-2.2"/></g><g fill="#d8a941"><path d="m48.3 45.7c4-2.9 4.7-9 10-10.9 6.4-2.4 2.7 1.2 2 6.8-1 7.7-6.9 12.2-7.8 18.5-.1.5 0 1.9 0 1.9h-13.7c0 0 .2-2.7 0-3.6-.4-2.8 1.7-7.1 9.5-12.7"/><path d="m15.7 45.7c-4-2.9-4.7-9-10-10.9-6.4-2.4-2.7 1.2-2 6.8 1 7.7 6.9 12.2 7.8 18.5.1.5 0 1.9 0 1.9h13.6c0 0-.1-2.7 0-3.6.6-2.8-1.5-7.1-9.4-12.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f632.svg b/riot/emojione/svg/1f632.svg new file mode 100644 index 0000000..703ddf1 --- /dev/null +++ b/riot/emojione/svg/1f632.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><circle cx="19" cy="29" r="11" fill="#fff"/><path d="m24 29c0 2.8-2.2 5-5 5-2.8 0-5-2.2-5-5s2.2-5 5-5c2.8 0 5 2.2 5 5" fill="#664e27"/><path d="m56 29c0 6.1-4.9 11-11 11-6.1 0-11-4.9-11-11 0-6.1 4.9-11 11-11 6.1 0 11 4.9 11 11" fill="#fff"/><path d="m50 29c0 2.8-2.2 5-5 5-2.8 0-5-2.2-5-5s2.2-5 5-5c2.8 0 5 2.2 5 5" fill="#664e27"/><g fill="#917524"><path d="m50.2 15.8c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m25.5 12.5c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.3-.4 2.2"/></g><circle cx="32" cy="49" r="9" fill="#664e27"/><path d="m26 46c1.2-2.4 3.4-4 6-4 2.6 0 4.8 1.6 6 4h-12" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f633.svg b/riot/emojione/svg/1f633.svg new file mode 100644 index 0000000..8be56d3 --- /dev/null +++ b/riot/emojione/svg/1f633.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#ff717f"><circle cx="52.8" cy="37.1" r="8"/><circle cx="11.2" cy="37.1" r="8"/></g><g fill="#917524"><path d="m54.6 20.6c-2.7-3.3-6.7-5.1-11-5.1-.6 0-.7-2.2 0-2.2 4.9 0 9.5 2.1 12.7 5.9.5.6-1.3 1.9-1.7 1.4"/><path d="m20.3 15.4c-4.2 0-8.3 1.9-11 5.1-.4.5-2.1-.8-1.7-1.4 3.1-3.8 7.8-5.9 12.7-5.9.7 0 .6 2.2 0 2.2"/></g><circle cx="32" cy="49.5" r="4.5" fill="#664e27"/><path d="m29.5 29.1c0 5-4 9-9 9-5 0-9-4-9-9 0-5 4-9 9-9 5 0 9 4.1 9 9" fill="#fff"/><circle cx="20.5" cy="29.1" r="4.5" fill="#664e27"/><path d="m52.5 29.1c0 5-4 9-9 9-5 0-9-4-9-9 0-5 4-9 9-9 5 0 9 4.1 9 9" fill="#fff"/><circle cx="43.5" cy="29.1" r="4.5" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f634.svg b/riot/emojione/svg/1f634.svg new file mode 100644 index 0000000..41beef9 --- /dev/null +++ b/riot/emojione/svg/1f634.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,16.6-10.8,30-30,30C15.4,62,2,48.6,2,32C2,15.4,15.4,2,32,2S62,15.4,62,32z" fill="#ffdd67"/><g fill="#467591"><path d="m26.8 21.3c-.2-.4-.7-.6-1.1-.3l-2 1.2.7-5c0-.2 0-.4-.1-.5l-.6-1.2c-.1-.2-.3-.3-.5-.4-.2-.1-.4 0-.6.1l-4.9 2.9c-.2.1-.3.3-.4.5-.1.2 0 .4.1.6l.7 1.3c.2.4.7.6 1.1.3l1.9-1.1-.7 4.9c0 .2 0 .4.1.5l.7 1.3c.2.3.5.5.9.4.1 0 .1 0 .2-.1l5-2.9c.2-.1.3-.3.4-.5.1-.2 0-.4-.1-.6l-.8-1.4"/><path d="m40.5 8.1c-.1-.2-.3-.3-.5-.4l-7.9-2c-.4-.1-.8.2-.9.6l-.4 1.9c0 .2 0 .4.1.6.1.2.3.3.5.4l3.6.9-5.5 4.7c-.1.1-.2.3-.3.5l-.2 2c0 .2 0 .4.1.6.1.2.3.3.5.4l8 2c.1 0 .2 0 .3 0 .1 0 .2-.1.3-.1.2-.1.3-.3.3-.5l.4-1.9c.1-.4-.2-.9-.6-1l-3.8-1 5.5-4.8c.1-.1.2-.3.3-.5l.4-1.8c0-.2-.1-.4-.2-.6"/><path d="m55 22.4c.2-.1.3-.2.4-.4l1.2-2.5c.2-.4 0-.8-.4-1l-5.8-2.8 10.1-5c.2-.1.3-.2.3-.4l1.1-2.3c.2-.4 0-.8-.4-1l-10.5-4.9c-.4-.2-.8 0-1 .4l-1.2 2.5c-.2.4 0 .8.4 1l5.5 2.6-10 4.9c-.2.1-.3.2-.3.4l-1.2 2.5c-.1.2-.1.4 0 .6 0 .1.1.2.2.3.1.1.1.1.2.1l10.8 5.1c.2 0 .4 0 .6-.1"/></g><g fill="#664e27"><path d="m50 45.2c.8 1.2 1.1 3.6-.6 4.7-1.4.9-3.7.7-5.4 1.8-1.8 1.2-2.5 3.3-3.9 4.2-1.9 1.2-3.7-.2-4.5-1.4-1.4-2.2.7-6.1 4.7-8.6 3.9-2.6 8.3-2.9 9.7-.7"/><path d="m38.3 33.6c7.2 5.4 14.9 1.8 15.3-7.1 0-.5-.6-.4-1.4-.5-2.4 4.8-8.7 7.4-13.5 6.3-.3.7-.7 1.1-.4 1.3"/><path d="m15.9 44.1c7.2 5.4 14.9 1.8 15.3-7.1 0-.5-.6-.4-1.4-.5-2.4 4.8-8.7 7.4-13.5 6.3-.3.6-.8 1-.4 1.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f635.svg b/riot/emojione/svg/1f635.svg new file mode 100644 index 0000000..6556452 --- /dev/null +++ b/riot/emojione/svg/1f635.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m28.6 19.8l-12.1 12.2c-.8.8-3.6-2-2.8-2.8l12.2-12.2c.7-.7 3.5 2.1 2.7 2.8"/><path d="m25.8 32l-12.1-12.2c-.8-.8 2-3.6 2.8-2.8l12.2 12.2c.7.8-2.1 3.6-2.9 2.8"/><path d="m50.3 19.8l-12.1 12.2c-.8.8-3.6-2-2.8-2.8l12.2-12.2c.7-.7 3.5 2.1 2.7 2.8"/><path d="m47.5 32l-12.1-12.2c-.8-.8 2-3.6 2.8-2.8l12.2 12.2c.7.8-2.1 3.6-2.9 2.8"/><circle cx="32" cy="47" r="9"/></g><path d="m26 44c1.2-2.4 3.4-4 6-4 2.6 0 4.8 1.6 6 4h-12" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f636.svg b/riot/emojione/svg/1f636.svg new file mode 100644 index 0000000..9ad70bc --- /dev/null +++ b/riot/emojione/svg/1f636.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="28.5" r="5"/><circle cx="43.5" cy="28.5" r="5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f637.svg b/riot/emojione/svg/1f637.svg new file mode 100644 index 0000000..2fcc6b5 --- /dev/null +++ b/riot/emojione/svg/1f637.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#fff"><path d="m18.2 47.4l-9 4.1c.8 1 1.7 1.9 2.6 2.7l7.6-3.6-1.2-3.2"/><path d="m17.1 35.1l-15.1-3.4c0 .1 0 .2 0 .3 0 1.1.1 2.2.2 3.3l14.2 3.2.7-3.4"/><path d="m54.8 51.5l-9-4.1-1.3 3.3 7.6 3.6c1-.9 1.8-1.8 2.7-2.8"/><path d="m47.7 38.5l14.2-3.2c.1-1.1.2-2.2.2-3.3 0-.1 0-.2 0-.3l-15.1 3.5.7 3.3"/></g><path d="m49.9 39.9c0 10.6-8 19.1-17.9 19.1s-17.9-8.6-17.9-19.1c0-10.6 10.4-8.5 17.9-8.5 7.5-.1 17.9-2.1 17.9 8.5" opacity=".1"/><path d="m49.5 39.1c0 10-7.8 18-17.5 18s-17.5-8.1-17.5-18c0-10 10.2-8.1 17.5-8.1s17.5-1.9 17.5 8.1" fill="#fff"/><g fill="#664e27"><path d="m35.8 20.8c2 8.8 10.2 11 16.3 4.4.3-.3-.2-.6-.7-1.3-4.9 2.1-11.4.1-14.3-3.8-.8.2-1.4.2-1.3.7"/><path d="m11.8 25.2c6.1 6.6 14.3 4.4 16.3-4.4.1-.4-.5-.5-1.2-.7-3.2 4.3-9.9 5.8-14.4 3.9-.5.5-1 .8-.7 1.2"/></g><g fill="#917524"><path d="m53.2 17c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m22.5 13.7c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f638.svg b/riot/emojione/svg/1f638.svg new file mode 100644 index 0000000..6e8aa84 --- /dev/null +++ b/riot/emojione/svg/1f638.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1 11.9 0 22-7 26.1-11.1 0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><g fill="#4c5359"><path d="m36 36c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.4 2-3.1 1.4-3.8"/><path d="m27 32.9c-1.9-5.1-4.7-7.7-7.5-7.7s-5.6 2.6-7.5 7.7c-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7 2.2 0 4.4.8 6.2 2.7.5.6 1.5-.4 1.3-.9"/><path d="m51.9 32.9c-1.9-5.1-4.7-7.7-7.5-7.7-2.8 0-5.6 2.6-7.5 7.7-.2.5.8 1.4 1.3.9 1.8-1.9 4-2.7 6.2-2.7s4.4.8 6.2 2.7c.6.6 1.5-.4 1.3-.9"/><path d="m49 45.4c0-.8-.5-1.8-1.8-2.1-3.5-.6-8.6-1.3-15.2-1.3-6.6 0-11.7.7-15.2 1.3-1.3.3-1.8 1.3-1.8 2.1 0 9.6 2.7 12.6 13.8 12.6h6.5c11 0 13.7-3 13.7-12.6"/></g><g fill="#fff"><path d="m45.1 46.2c.1-.5 0-1-.4-1.1 0 0-5.7-1.1-12.7-1.1-7 0-12.7 1.1-12.7 1.1-.4.1-.6.6-.4 1.1l.9 2.9c.1.5.6.9 1 .9h22.5c.4 0 .8-.4 1-.9l.8-2.9"/><path d="m32 56c4.9 0 12 0 11.8-2.1 0-.4-.1-.8-.2-1.3-.1-.5-.2-.7-1.1-.7-1.9 0-19.5 0-21 0-.8 0-.9.1-1.1.7-.1.5-.2.9-.2 1.3-.2 2.1 6.9 2.1 11.8 2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f639.svg b/riot/emojione/svg/1f639.svg new file mode 100644 index 0000000..1eb62f3 --- /dev/null +++ b/riot/emojione/svg/1f639.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1s22-7 26.1-11.1c0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><g fill="#65b1ef"><path d="m59.4 37.9c7.3 7.7-2.6 18.1-9.9 10.4-5.3-5.6-5.6-16.3-5.6-16.3s10.2.3 15.5 5.9"/><path d="m14.5 48.3c-7.3 7.7-17.2-2.7-9.9-10.4 5.3-5.6 15.5-5.9 15.5-5.9s-.3 10.7-5.6 16.3"/></g><g fill="#4c5359"><path d="m51.7 24.9c.6.3.3 1-.2 1.1-2.7.4-5.5.9-8.3 2.4 4 .7 7.2 2.7 9 4.8.4.5-.1 1.1-.5 1-4.8-1.7-9.7-2.7-15.8-2-.5 0-.9-.2-.8-.7 1.6-7.3 10.9-10 16.6-6.6"/><path d="m12.3 24.9c-.6.3-.3 1 .2 1.1 2.7.4 5.5.9 8.3 2.4-4 .7-7.2 2.7-9 4.8-.4.5.1 1.1.5 1 4.8-1.7 9.7-2.7 15.8-2 .5 0 .9-.2.8-.7-1.6-7.3-10.9-10-16.6-6.6"/><path d="m36 38c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.4 2-3.1 1.4-3.8"/><path d="m45 46.7c0-.6-.4-1.4-1.4-1.6-2.6-.6-6.6-1.1-11.6-1.1-5 0-9 .5-11.6 1-1 .2-1.4 1-1.4 1.6 0 5.7 4.3 11.4 13 11.4 8.7 0 13-5.7 13-11.3"/></g><path d="m25.5 54.6c1.9.9 4 1.4 6.5 1.4 2.5 0 4.6-.5 6.5-1.4-1.8-1-4-1.6-6.5-1.6-2.5 0-4.7.6-6.5 1.6" fill="#ff717f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f63a.svg b/riot/emojione/svg/1f63a.svg new file mode 100644 index 0000000..c708d74 --- /dev/null +++ b/riot/emojione/svg/1f63a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1 11.9 0 22-7 26.1-11.1 0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><path d="m36 38c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.4 2-3.1 1.4-3.8" fill="#4c5359"/><path d="m24.3 30.8c0 0-.5-4.6-4.5-6-4.5-1.7-7.6 2.4-8.5 4.7-1.2 3.4.3 7.1.8 8 .3.6 3.7 3.2 11.2.7 0 0 1.9-3.8 1-7.4" fill="#fff"/><path d="m24.3 30.8c-.4-1.6-1.1-3-2.3-4.1-.5-.5-1.2-1-1.9-1.2-.3-.1-.7-.3-1.1-.3-.2-.1-.6-.2-1-.2-1.5 0-2.8.6-3.9 1.6-1.1 1-1.9 2.3-2.3 3.7-.4 1.4-.3 3 0 4.4.2.7.4 1.5.7 2.2l.1.2c0-.1 0 0 0 0l.1.1c.1.1.2.2.4.3.3.2.6.4.9.5 1.4.6 2.9.8 4.5.8 1.6 0 3.2-.3 4.8-.7-1.5.7-3.1 1.1-4.7 1.4-1.6.2-3.4.2-5-.4-.4-.1-.8-.3-1.2-.6-.2-.1-.4-.3-.6-.4-.1 0-.1-.1-.2-.2l-.1-.1-.1-.1-.2-.3c-.4-.8-.7-1.6-.9-2.4-.4-1.6-.5-3.4-.1-5.1.5-1.7 1.5-3.2 2.8-4.4 1.3-1.1 3.1-1.9 4.9-1.7.4.1.9.1 1.3.3.4.1.8.3 1.2.5.8.4 1.4 1 2 1.6 1.2 1.4 1.8 3 1.9 4.6" fill="#b2b6b8"/><path d="m39.7 30.8c0 0 .5-4.6 4.5-6 4.5-1.7 7.6 2.4 8.5 4.7 1.2 3.4-.3 7.1-.8 8-.3.6-3.7 3.2-11.2.7 0 0-1.9-3.8-1-7.4" fill="#fff"/><path d="m39.7 30.8c.1-1.6.7-3.2 1.7-4.6.5-.7 1.2-1.2 2-1.6.4-.2.8-.4 1.2-.5.4-.1.9-.2 1.3-.3 1.8-.2 3.6.6 4.9 1.7 1.3 1.2 2.3 2.6 2.8 4.4.4 1.7.3 3.5-.1 5.2-.2.8-.5 1.6-.9 2.4l-.2.3-.1.1v.1c-.1.1-.1.1-.2.2-.2.2-.4.3-.6.4-.4.2-.8.4-1.2.6-1.7.6-3.4.6-5 .4-1.6-.3-3.2-.7-4.7-1.4 1.6.3 3.2.6 4.8.7 1.6 0 3.2-.2 4.5-.8.3-.1.7-.3.9-.5.1-.1.3-.2.4-.3l.1-.1c0 0 0 0 0 0l.1-.2c.3-.7.5-1.4.7-2.2.3-1.5.4-3 0-4.4-.4-1.4-1.2-2.7-2.3-3.7-1.1-1-2.4-1.6-3.9-1.6-.4 0-.7.1-1.1.1-.4.1-.7.2-1.1.3-.7.3-1.3.7-1.9 1.2-1 1.1-1.7 2.6-2.1 4.1" fill="#b2b6b8"/><g fill="#4c5359"><ellipse cx="44" cy="32.5" rx="4" ry="4.5"/><ellipse cx="20" cy="32.5" rx="4" ry="4.5"/><path d="m45 46.7c0-.6-.4-1.4-1.4-1.6-2.6-.6-6.6-1.1-11.6-1.1-5 0-9 .5-11.6 1-1 .2-1.4 1-1.4 1.6 0 5.7 4.3 11.4 13 11.4 8.7 0 13-5.7 13-11.3"/></g><path d="m25.5 54.6c1.9.9 4 1.4 6.5 1.4 2.5 0 4.6-.5 6.5-1.4-1.8-1-4-1.6-6.5-1.6s-4.7.6-6.5 1.6" fill="#ff717f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f63b.svg b/riot/emojione/svg/1f63b.svg new file mode 100644 index 0000000..b738825 --- /dev/null +++ b/riot/emojione/svg/1f63b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1 11.9 0 22-7 26.1-11.1 0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><g fill="#f46767"><path d="m60.9 26c-.4-2.1-1.8-3.9-4-4.4-2.4-.6-4.6.3-6.7 2.2-1.2-2.9-3-5.1-5.8-6.2-2.9-1.1-5.8-.4-7.6 1.6-1.9 2.1-2.6 5.3-.6 9.6 1.9 4 10.2 12 10.5 12.2.3-.2 9.6-5.4 11.9-7.9 2.2-2.5 2.7-5 2.3-7.1"/><path d="m27.2 19.2c-1.8-2-4.6-2.8-7.6-1.6-2.9 1.1-4.7 3.3-5.8 6.2-2.1-1.9-4.3-2.7-6.7-2.2-2.2.5-3.6 2.3-4 4.4-.4 2.1.1 4.6 2.3 7.1 2.3 2.5 11.6 7.7 11.9 7.9.2-.2 8.6-8.3 10.5-12.2 2-4.3 1.3-7.5-.6-9.6"/></g><g fill="#4c5359"><path d="m36 38c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.4 2-3.1 1.4-3.8"/><path d="m45 46.7c0-.6-.4-1.4-1.4-1.6-2.6-.6-6.6-1.1-11.6-1.1-5 0-9 .5-11.6 1-1 .2-1.4 1-1.4 1.6 0 5.7 4.3 11.4 13 11.4 8.7 0 13-5.7 13-11.3"/></g><path d="m25.5 54.6c1.9.9 4 1.4 6.5 1.4 2.5 0 4.6-.5 6.5-1.4-1.8-1-4-1.6-6.5-1.6-2.5 0-4.7.6-6.5 1.6" fill="#ff717f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f63c.svg b/riot/emojione/svg/1f63c.svg new file mode 100644 index 0000000..7cebf3d --- /dev/null +++ b/riot/emojione/svg/1f63c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1s22-7 26.1-11.1c0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><path d="m36 38.8c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.5 2-3.2 1.4-3.8" fill="#4c5359"/><path d="m24.3 30.8c0 0-.5-3.6-4.5-5-4.5-1.7-7.6 1.4-8.5 3.7-1.2 3.4.3 7.1.8 8 .3.6 3.7 3.2 11.2.7 0 0 1.9-3.8 1-7.4" fill="#fff"/><path d="m24.3 30.8c0 0-5.9-4.8-6.3-4.8-1.5 0-2.8-.4-3.9.6-1.1 1-1.9 2.3-2.3 3.7-.4 1.4-.3 3 0 4.4.2.7.4 1.5.7 2.2l.1.2c0-.1 0 0 0 0l.1.1c.1.1.2.2.4.3.3.2.6.4.9.5 1.4.6 2.9.8 4.5.8 1.6 0 3.2-.3 4.8-.7-1.5.7-3.1 1.1-4.7 1.4-1.6.2-3.4.2-5-.4-.4-.1-.8-.3-1.2-.6-.2-.1-.4-.3-.6-.4-.1 0-.1-.1-.2-.2l-.1-.1-.1-.1-.2-.3c-.4-.8-.7-1.6-.9-2.4-.4-1.6-.5-3.4-.1-5.1.5-1.7 1.5-3.2 2.8-4.4 1.3-1.1 3.1-.9 4.9-.7.6.1 6.4 6 6.4 6" fill="#b2b6b8"/><path d="m39.7 30.8c0 0 .5-3.6 4.5-5 4.5-1.7 7.6 1.4 8.5 3.7 1.2 3.4-.3 7.1-.8 8-.3.6-3.7 3.2-11.2.7 0 0-1.9-3.8-1-7.4" fill="#fff"/><path d="m39.7 30.8c0 0 5.8-5.9 6.2-6 1.8-.2 3.6-.4 4.9.7 1.3 1.2 2.3 2.6 2.8 4.4.4 1.7.3 3.5-.1 5.2-.2.8-.5 1.6-.9 2.4l-.2.3-.1.1v.1c-.1.1-.1.1-.2.2-.2.2-.4.3-.6.4-.4.2-.8.4-1.2.6-1.7.6-3.4.6-5 .4-1.6-.3-3.2-.7-4.7-1.4 1.6.3 3.2.6 4.8.7 1.6 0 3.2-.2 4.5-.8.3-.1.7-.3.9-.5.1-.1.3-.2.4-.3l.1-.1c0 0 0 0 0 0l.1-.2c.3-.7.5-1.4.7-2.2.3-1.5.4-3 0-4.4-.4-1.4-1.2-2.7-2.3-3.7-1.1-1-2.4-.6-3.9-.6-.3-.1-6.2 4.7-6.2 4.7" fill="#b2b6b8"/><g fill="#4c5359"><ellipse cx="44" cy="32.5" rx="4" ry="4.5"/><ellipse cx="20" cy="32.5" rx="4" ry="4.5"/><path d="m55.9 24.5c-1.9.2-3.5.5-5.2.9-1.6.4-3.1 1-4.6 1.7-1.5.7-2.9 1.5-4.2 2.4-1.4 1-2.6 2.1-4 3.4.2-1.9 1.1-3.7 2.4-5.1 1.2-1.5 2.9-2.6 4.6-3.4 1.8-.8 3.7-1.3 5.6-1.3 1.9 0 3.8.4 5.4 1.4"/><path d="m8.1 24.5c1.6-1 3.5-1.5 5.4-1.4 1.9 0 3.8.5 5.6 1.3 1.7.8 3.3 2 4.6 3.4 1.2 1.5 2.2 3.2 2.4 5.1-1.3-1.3-2.6-2.4-4-3.4-1.4-1-2.8-1.8-4.2-2.4-1.5-.7-3-1.2-4.6-1.7-1.7-.4-3.3-.7-5.2-.9"/><path d="m25.8 53.5c5.8 1.4 15.1 0 19.8-3.5 1.2-.9-1.2-4-2.3-3.1-3.2 2.3-11.2 4.1-16.6 2.9-1.4-.4-2.4 3.3-.9 3.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f63d.svg b/riot/emojione/svg/1f63d.svg new file mode 100644 index 0000000..8d029f9 --- /dev/null +++ b/riot/emojione/svg/1f63d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1 11.9 0 22-7 26.1-11.1 0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><path d="m41.4 53.8c1.6-1.6-1.8-3-1.8-5.9 0-2.9 3.4-4.2 1.8-5.9-1.9-2-6-.5-8.6-3.1 0 2.2 1.8 4.5 5.2 4.5 0 0-2.3.9-2.3 4.5 0 3.6 2.3 4.5 2.3 4.5-3.4 0-5.2 2.3-5.2 4.5 2.5-2.7 6.7-1.2 8.6-3.1" fill="#4c5359"/><g fill="#ff717f"><path d="m23 34.7c-1.7-2.8-7-3.8-11.8-2.1-4.8 1.7-7.3 5.4-5.6 8.2 1.7 2.8 7 3.8 11.8 2.1 4.8-1.7 7.3-5.4 5.6-8.2" opacity=".8"/><path d="m41 34.7c1.7-2.8 7-3.8 11.8-2.1 4.8 1.7 7.3 5.4 5.6 8.2-1.7 2.8-7 3.8-11.8 2.1-4.8-1.7-7.3-5.4-5.6-8.2" opacity=".8"/></g><g fill="#4c5359"><path d="m35.9 25.6c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.6.4-1.2.6-1 1"/><path d="m11.2 25.6c4.2 8 12.7 8 16.9 0 .2-.4-.3-.6-1-1-4.2 3.3-11.1 3-14.9 0-.7.4-1.2.6-1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f63e.svg b/riot/emojione/svg/1f63e.svg new file mode 100644 index 0000000..aa7be0f --- /dev/null +++ b/riot/emojione/svg/1f63e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1 11.9 0 22-7 26.1-11.1 0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><path d="m36 38.8c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.5 2-3.2 1.4-3.8" fill="#4c5359"/><path d="m24.3 30.8c0 0-.5-3.6-4.5-5-4.5-1.6-7.6 1.4-8.5 3.7-1.2 3.4.3 7.1.8 8 .3.6 3.7 3.2 11.2.7 0 0 1.9-3.8 1-7.4" fill="#fff"/><path d="m24.3 30.8c0 0-5.9-4.8-6.3-4.8-1.5 0-2.8-.4-3.9.6-1.1 1-1.9 2.3-2.3 3.7-.4 1.4-.3 3 0 4.4.2.7.4 1.5.7 2.2l.1.2c0-.1 0 0 0 0l.1.1c.1.1.2.2.4.3.3.2.6.4.9.5 1.4.6 2.9.8 4.5.8 1.6 0 3.2-.3 4.8-.7-1.5.7-3.1 1.1-4.7 1.4-1.6.2-3.4.2-5-.4-.4-.1-.8-.3-1.2-.6-.2-.1-.4-.3-.6-.4-.1 0-.1-.1-.2-.2l-.1-.1-.1-.1-.2-.3c-.4-.8-.7-1.6-.9-2.4-.4-1.6-.5-3.4-.1-5.1.5-1.7 1.5-3.2 2.8-4.4 1.3-1.1 3.1-.9 4.9-.7.6.1 6.4 6 6.4 6" fill="#b2b6b8"/><path d="m39.7 30.8c0 0 .5-3.6 4.5-5 4.5-1.6 7.6 1.4 8.5 3.7 1.2 3.4-.3 7.1-.8 8-.3.6-3.7 3.2-11.2.7 0 0-1.9-3.8-1-7.4" fill="#fff"/><path d="m39.7 30.8c0 0 5.8-5.9 6.2-6 1.8-.2 3.6-.4 4.9.7 1.3 1.2 2.3 2.6 2.8 4.4.4 1.7.3 3.5-.1 5.1-.2.8-.5 1.6-.9 2.4l-.2.3-.1.1v.2c-.1.1-.1.1-.2.2-.2.2-.4.3-.6.4-.4.2-.8.4-1.2.6-1.7.6-3.4.6-5 .4-1.6-.3-3.2-.7-4.7-1.4 1.6.3 3.2.6 4.8.7 1.6 0 3.2-.2 4.5-.8.3-.1.7-.3.9-.5.1-.1.3-.2.4-.3l.1-.1c0 0 0 0 0 0l.1-.2c.3-.7.5-1.4.7-2.2.3-1.5.4-3 0-4.4-.4-1.4-1.2-2.7-2.3-3.7-1.1-1-2.4-.6-3.9-.6-.3-.1-6.2 4.7-6.2 4.7" fill="#b2b6b8"/><g fill="#4c5359"><ellipse cx="44" cy="32.5" rx="4" ry="4.5"/><ellipse cx="20" cy="32.5" rx="4" ry="4.5"/><path d="m55.9 24.5c-1.9.2-3.5.5-5.2.9-1.6.4-3.1 1-4.6 1.7-1.5.7-2.9 1.5-4.2 2.4-1.4 1-2.6 2.1-4 3.4.2-1.9 1.1-3.7 2.4-5.1 1.2-1.5 2.9-2.6 4.6-3.4 1.8-.8 3.7-1.3 5.6-1.3 1.9 0 3.8.4 5.4 1.4"/><path d="m8.1 24.5c1.6-1 3.5-1.5 5.4-1.4 1.9 0 3.8.5 5.6 1.3 1.7.8 3.3 2 4.6 3.4 1.2 1.5 2.2 3.2 2.4 5.1-1.3-1.3-2.6-2.4-4-3.4-1.4-1-2.8-1.8-4.2-2.4-1.5-.7-3-1.2-4.6-1.7-1.7-.4-3.3-.7-5.2-.9"/><path d="m23 54.2c5.8-4.8 12.2-4.8 18 0 .7.6 1.3-.4.8-1.3-1.8-3.4-5.3-6.5-9.8-6.5-4.5 0-8.1 3.1-9.8 6.5-.5.9.1 1.9.8 1.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f63f.svg b/riot/emojione/svg/1f63f.svg new file mode 100644 index 0000000..5b17e95 --- /dev/null +++ b/riot/emojione/svg/1f63f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m58.2 50.8c.8-.9 1.4-1.6 1.7-2.2 1.6-2.6 2.1-5.3 2.1-5.3l-2 .4c0 0 2.3-2.5 1.7-7.8l-2 2.1c0 0 1.9-5.4.3-10.4l-2.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-2-1.6c-1.7 5 .3 10.4.3 10.4l-1.9-2.1c-.7 5.3 1.6 7.8 1.6 7.8l-2-.4c0 0 .5 2.7 2.1 5.3.2.5.8 1.3 1.7 2.2 0 0 0 0 .1.1 4.1 4.1 14.2 11.1 26.1 11.1 11.9 0 22-7 26.1-11.1 0-.1.1-.1.1-.1" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><path d="m36 38.8c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.5 2-3.2 1.4-3.8" fill="#4c5359"/><path d="m24.3 30.8c0 0-.5-4.6-4.5-6-4.5-1.7-7.6 2.4-8.5 4.7-1.2 3.4.3 7.1.8 8 .3.6 3.7 3.2 11.2.7 0 0 1.9-3.8 1-7.4" fill="#fff"/><path d="m24.3 30.8c-.4-1.6-1.1-3-2.3-4.1-.5-.5-1.2-1-1.9-1.2-.3-.1-.7-.3-1.1-.3-.2-.1-.6-.2-1-.2-1.5 0-2.8.6-3.9 1.6-1.1 1-1.9 2.3-2.3 3.7-.4 1.4-.3 3 0 4.4.2.7.4 1.5.7 2.2l.1.2c0-.1 0 0 0 0l.1.1c.1.1.2.2.4.3.3.2.6.4.9.5 1.4.6 2.9.8 4.5.8 1.6 0 3.2-.3 4.8-.7-1.5.7-3.1 1.1-4.7 1.4-1.6.2-3.4.2-5-.4-.4-.1-.8-.3-1.2-.6-.2-.1-.4-.3-.6-.4-.1 0-.1-.1-.2-.2l-.1-.1-.1-.1-.2-.3c-.4-.8-.7-1.6-.9-2.4-.4-1.6-.5-3.4-.1-5.1.5-1.7 1.5-3.2 2.8-4.4 1.3-1.1 3.1-1.9 4.9-1.7.4.1.9.1 1.3.3.4.1.8.3 1.2.5.8.4 1.4 1 2 1.6 1.2 1.4 1.8 3 1.9 4.6" fill="#b2b6b8"/><path d="m39.7 30.8c0 0 .5-4.6 4.5-6 4.5-1.7 7.6 2.4 8.5 4.7 1.2 3.4-.3 7.1-.8 8-.3.6-3.7 3.2-11.2.7 0 0-1.9-3.8-1-7.4" fill="#fff"/><path d="m39.7 30.8c.1-1.6.7-3.2 1.7-4.6.5-.7 1.2-1.2 2-1.6.4-.2.8-.4 1.2-.5.4-.1.9-.2 1.3-.3 1.8-.2 3.6.6 4.9 1.7 1.3 1.2 2.3 2.6 2.8 4.4.4 1.7.3 3.5-.1 5.2-.2.8-.5 1.6-.9 2.4l-.2.3-.1.1v.1c-.1.1-.1.1-.2.2-.2.2-.4.3-.6.4-.4.2-.8.4-1.2.6-1.7.6-3.4.6-5 .4-1.6-.3-3.2-.7-4.7-1.4 1.6.3 3.2.6 4.8.7 1.6 0 3.2-.2 4.5-.8.3-.1.7-.3.9-.5.1-.1.3-.2.4-.3l.1-.1c0 0 0 0 0 0l.1-.2c.3-.7.5-1.4.7-2.2.3-1.5.4-3 0-4.4-.4-1.4-1.2-2.7-2.3-3.7-1.1-1-2.4-1.6-3.9-1.6-.4 0-.7.1-1.1.1-.4.1-.7.2-1.1.3-.7.3-1.3.7-1.9 1.2-1 1.1-1.7 2.6-2.1 4.1" fill="#b2b6b8"/><g fill="#4c5359"><circle cx="45" cy="32.5" r="5"/><circle cx="19" cy="32.5" r="5"/></g><g fill="#fff"><ellipse cx="19" cy="36" rx="2.2" ry="2.5"/><ellipse cx="15.3" cy="31.7" rx="1.3" ry="1.5"/><ellipse cx="45" cy="36" rx="2.2" ry="2.5"/><ellipse cx="41.3" cy="31.7" rx="1.3" ry="1.5"/></g><path d="m40.6 49.3c-5.4-2.5-11.8-2.5-17.2 0-1.3.6.3 4.2 1.7 3.5 3.6-1.7 8.9-2.3 13.9 0 1.3.6 3-2.8 1.6-3.5" fill="#4c5359"/><path d="m47 37c-4.8 6.5-7.5 12.5-7.5 17.4 0 4.2 3.4 7.6 7.5 7.6 4.1 0 7.5-3.4 7.5-7.6 0-4.9-2.8-11-7.5-17.4" fill="#65b1ef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f640.svg b/riot/emojione/svg/1f640.svg new file mode 100644 index 0000000..5c1c257 --- /dev/null +++ b/riot/emojione/svg/1f640.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M60.9,2c1.8,13.4,1.5,24.2-1.2,31.1L34.9,14.7C39.8,9.6,49.8,3.5,60.9,2z" fill="#dadee0"/><path d="m57.7 32.2l-10.2-13.3c0 0 1.9-7.3 11.6-12.4 2.9 11.6-1.4 25.7-1.4 25.7" fill="#f7a4a4"/><path d="m53.8 29.2l-6.3-8.2c0 0 2.6-5 8.6-8.2-3.5 7.5-2.3 16.4-2.3 16.4" fill="#f78d8d"/><path d="M3.1,2C1.3,15.4,1.6,26.2,4.3,33.1l24.8-18.5C24.2,9.6,14.2,3.5,3.1,2z" fill="#dadee0"/><path d="m6.3 32.2l10.3-13.3c0 0-1.9-7.3-11.6-12.4-3 11.6 1.3 25.7 1.3 25.7" fill="#f7a4a4"/><path d="m10.2 29.2l6.4-8.2c0 0-2.6-5-8.6-8.2 3.4 7.5 2.2 16.4 2.2 16.4" fill="#f78d8d"/><path d="m59 27.6l-1.2 1.6c0 0 .7-2 .1-3.4l-.9.7c0 0 1.7-4.7.2-6.6-.9 2.8-1.9 2.8-1.9 2.8s1.2-2.1.3-3c-1 1.6-1.8.6-1.8.1.1-.6-.2-1.5 2.7-2-2.3-1.4-5.1-.4-5.1-.4s.1-1.5 2.1-1.4c-1.9-1.6-4.5-.6-4.5-.6-4.1-3.1-9.6-4.9-17.1-4.9-7.4 0-12.9 1.8-17.1 4.9 0 0-2.6-.9-4.5.6 2-.1 2.1 1.4 2.1 1.4s-2.7-1-5.1.4c2.9.4 2.7 1.3 2.7 2 0 .5-.8 1.5-1.8-.1-1 .9.3 3 .3 3s-1 0-1.9-2.8c-1.5 2 .2 6.6.2 6.6l-.9-.7c-.6 1.4.1 3.4.1 3.4l-1-1.6c-4.4 13 12.5 34.4 27 34.4s31.4-21.4 27-34.4" fill="#dadee0"/><g fill="#94989b"><path d="m37.7 10.8c-1.8-.3-3.7-.4-5.7-.4s-3.9.1-5.7.4c.7 3.9 2.8 6.6 5.7 11.6 3-5.1 5-7.8 5.7-11.6"/><path d="m46.8 13.8c-1.9-1.1-4.1-1.9-6.5-2.5.6 2.3 1.9 3.9 3.6 6.9 1.3-2.1 2.2-2.7 2.9-4.4"/><path d="m23.7 11.3c-2.5.6-4.6 1.4-6.5 2.5.7 1.8 1.7 2.3 2.9 4.4 1.8-3.1 3-4.7 3.6-6.9"/></g><g fill="#b2b6b8"><path d="m50.3 37.4c12.6-6.4 3.7 10.7 7.5 19.1 1.1 2.5-4 5.5-6.4 5.5-9.5 0-11.9-19.1-1.1-24.6"/><path d="m13.7 37.4c-12.6-6.4-3.7 10.7-7.5 19.1-1.1 2.5 4 5.5 6.4 5.5 9.5 0 11.9-19.1 1.1-24.6"/></g><path d="m36 30.6c-.8-.9-3.3-1-4-1-.7 0-3.2.1-4 1-.6.7-.1 2.3 1.4 3.8 1 .9 1.9 1.2 2.6 1.2.7 0 1.7-.3 2.6-1.2 1.6-1.5 2-3.1 1.4-3.8" fill="#4c5359"/><path d="m39.4 27.3c0 0 .4-5.2 4.1-6.8 4.1-1.9 6.9 2.7 7.6 5.3 1.1 3.9-.3 8.1-.7 9-.3.6-3.3 3.7-10.1.8 0 0-1.7-4.2-.9-8.3" fill="#fff"/><path d="m39.4 27.3c.1-1.8.6-3.7 1.5-5.2.5-.7 1.1-1.4 1.8-1.9.3-.2.7-.4 1.1-.6.4-.2.8-.2 1.2-.3 1.6-.2 3.3.6 4.4 1.9 1.2 1.3 2.1 3 2.5 5 .4 2 .3 4-.1 5.8-.2.9-.5 1.8-.8 2.7l-.1.3-.1.1-.1.1c-.1.1-.1.1-.1.2-.2.2-.3.4-.5.5-.4.3-.7.5-1.1.7-1.5.7-3 .7-4.5.4-1.5-.3-2.9-.8-4.2-1.6 1.4.4 2.9.7 4.3.7 1.4 0 2.8-.2 4.1-.8.3-.2.6-.4.8-.6.1-.1.2-.2.3-.4v-.1c0 0 0 0 0 0l.1-.3c.3-.8.5-1.6.6-2.5.3-1.7.4-3.4 0-5-.3-1.6-1.1-3.1-2.1-4.2-1-1.2-2.2-1.9-3.5-1.8-.3 0-.7.1-1 .2-.3.1-.7.2-1 .4-.6.3-1.2.8-1.7 1.4-.8 1.5-1.4 3.1-1.8 4.9" fill="#b2b6b8"/><ellipse cx="44.3" cy="29.2" rx="2" ry="5" fill="#4c5359"/><path d="m24.6 27.3c0 0-.4-5.2-4.1-6.8-4.1-1.9-6.9 2.7-7.6 5.3-1.1 3.9.3 8.1.7 9 .3.6 3.3 3.7 10.1.8 0 0 1.7-4.2.9-8.3" fill="#fff"/><path d="m24.6 27.3c-.4-1.8-1-3.4-2-4.6-.5-.6-1.1-1.1-1.7-1.4-.3-.2-.6-.3-1-.4-.3-.1-.6-.1-1-.2-1.3 0-2.6.7-3.5 1.8-1 1.1-1.7 2.6-2.1 4.2-.3 1.6-.3 3.3 0 5 .1.8.4 1.7.6 2.5l.1.3c0-.1 0 0 0 0v.1c.1.1.2.2.3.4.3.2.5.4.8.6 1.2.7 2.7.9 4.1.8 1.4 0 2.9-.3 4.3-.7-1.3.8-2.8 1.3-4.2 1.6-1.5.2-3 .2-4.5-.4-.4-.2-.7-.4-1.1-.7-.2-.1-.3-.3-.5-.5 0-.1-.1-.1-.1-.2l-.1-.1-.1-.1-.1-.3c-.3-.9-.6-1.8-.8-2.7-.4-1.9-.5-3.9-.1-5.8.4-2 1.3-3.6 2.5-5 1.2-1.3 2.8-2.2 4.4-1.9.4.1.8.1 1.2.3.4.1.7.3 1.1.6.7.5 1.3 1.1 1.8 1.9 1.1 1.2 1.6 3.1 1.7 4.9" fill="#b2b6b8"/><g fill="#4c5359"><ellipse cx="19.7" cy="29.2" rx="2" ry="5"/><path d="m40 49c0 6.1-3.6 11-8 11-4.4 0-8-4.9-8-11 0-6.1 3.6-11 8-11 4.4 0 8 4.9 8 11"/></g><path d="m33.9 44.7c-.6 0-1.5.6-1.2 2.1.2.8 1.2 1.7 1.2 2.9 0 2.5-3.9 2.5-3.9 0 0-1.2 1.1-2.2 1.2-2.9.3-1.5-.6-2.1-1.2-2.1-1.6 0-4.3 1.8-4.3 4.8 0 3.4 2.8 6.1 6.1 6.1 3.4 0 6.2-2.8 6.2-6.1.1-3-2.5-4.8-4.1-4.8" fill="#363b40"/><path d="m32 54.3c-3.7 0-4.7 1-4.7 1 1 2 2.7 3.3 4.7 3.3 2.1 0 3.8-1.3 4.8-3.3-.1 0-1.1-1-4.8-1" fill="#ff717f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f641.svg b/riot/emojione/svg/1f641.svg new file mode 100644 index 0000000..aeb3b4f --- /dev/null +++ b/riot/emojione/svg/1f641.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="26.6" r="5"/><circle cx="43.5" cy="26.6" r="5"/><path d="m23 47.6c5.8-4.8 12.2-4.8 18 0 .7.6 1.3-.4.8-1.3-1.8-3.4-5.3-6.5-9.8-6.5s-8.1 3.1-9.8 6.5c-.5.9.1 1.9.8 1.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f642.svg b/riot/emojione/svg/1f642.svg new file mode 100644 index 0000000..753ef7c --- /dev/null +++ b/riot/emojione/svg/1f642.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="26.6" r="5"/><circle cx="43.5" cy="26.6" r="5"/><path d="m44.6 40.3c-8.1 5.7-17.1 5.6-25.2 0-1-.7-1.8.5-1.2 1.6 2.5 4 7.4 7.7 13.8 7.7s11.3-3.6 13.8-7.7c.6-1.1-.2-2.3-1.2-1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f643.svg b/riot/emojione/svg/1f643.svg new file mode 100644 index 0000000..bdb24a7 --- /dev/null +++ b/riot/emojione/svg/1f643.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="43.5" cy="37.4" r="5"/><circle cx="20.5" cy="37.4" r="5"/><path d="m19.4 23.7c8.1-5.7 17.1-5.6 25.2 0 1 .7 1.8-.5 1.2-1.6-2.5-4-7.4-7.6-13.8-7.6s-11.3 3.6-13.8 7.6c-.6 1.1.2 2.3 1.2 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f644.svg b/riot/emojione/svg/1f644.svg new file mode 100644 index 0000000..dcb222c --- /dev/null +++ b/riot/emojione/svg/1f644.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><path d="m45.5 40c6.1 0 11-4.9 11-11 0-1.6-.4-3.2-1-4.6-2.8-1.3-6.3-2-10-2s-7.2.8-10 2c-.6 1.4-1 2.9-1 4.6 0 6.1 4.9 11 11 11" fill="#fff"/><path d="m46 22.4c-.5.7-.8 1.6-.8 2.5 0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-.4-.1-.7-.1-1-2.4-.9-5.2-1.5-8.1-1.5" fill="#664e27"/><path d="m18.5 40c6.1 0 11-4.9 11-11 0-1.6-.4-3.2-1-4.6-2.8-1.3-6.3-2-10-2s-7.2.8-10 2c-.6 1.4-1 2.9-1 4.6 0 6.1 4.9 11 11 11" fill="#fff"/><g fill="#664e27"><path d="m19 22.4c-.5.7-.8 1.6-.8 2.5 0 2.5 2 4.5 4.5 4.5 2.5 0 4.5-2 4.5-4.5 0-.4-.1-.7-.1-1-2.4-.9-5.2-1.5-8.1-1.5"/><path d="m40.6 47.3c-5.4-2.5-11.8-2.5-17.2 0-1.4.7.3 4.2 1.6 3.5 3.6-1.7 8.9-2.3 13.9 0 1.4.6 3.1-2.8 1.7-3.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f645-1f3fb.svg b/riot/emojione/svg/1f645-1f3fb.svg new file mode 100644 index 0000000..ac2255e --- /dev/null +++ b/riot/emojione/svg/1f645-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#594640"/><path d="m15.3 33.3c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.7 10.4 9.1 11.8c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4s-16.7-9-16.7-16.5" fill="#ffe1bd"/><path d="m32 38.2c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#e6b796"/><path d="m36.8 31.4c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.8" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.8" r="1.2" fill="#2b2925"/><path d="m35.8 30c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31.4c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.8" r="3.5" fill="#664e27"/><path d="m28.1 30c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.8" r="1.2" fill="#2b2925"/><path d="m52.4 62c0-15-1.4-15.2-20.4-15.2-19 0-20.4.2-20.4 15.2 0 0 40.8 0 40.8 0" fill="#b386e2"/><g fill="#f4d3ae"><path d="m4.2 20.2c.8.6 13.9 11.2 13.9 11.2l-3.2 6.1c-4.3-2.5-6.2-7.2-12.5-14.3-1.2-1.4.4-4.1 1.8-3"/><path d="m59.8 20.2c-.8.6-13.9 11.2-13.9 11.2l3.2 6.1c4.3-2.6 6.2-7.2 12.5-14.4 1.2-1.3-.4-4-1.8-2.9"/></g><path d="m42.8 44.4c4.4-3.5 7.4-6.2 7.4-6.2l-3.5-7.9c-2.9 2.7-8.6 5.7-14.7 8.7-6.1-3-11.8-5.9-14.8-8.7l-3.5 7.9c0 0 3 2.7 7.4 6.2-10.2 5.4-18.1 11-12 16.6 3.7 3.4 13.7-2 22.9-8.5 9.2 6.4 19.2 11.8 22.9 8.5 6.1-5.6-1.8-11.2-12.1-16.6" fill="#c99ff7"/><g fill="#b386e2"><path d="M23.1 58.1 42.8 44.4 28.4 58z"/><path d="M21.2 44.4 32 39 20.2 43.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f645-1f3fc.svg b/riot/emojione/svg/1f645-1f3fc.svg new file mode 100644 index 0000000..621160c --- /dev/null +++ b/riot/emojione/svg/1f645-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#dbb471"/><path d="m15.3 33.3c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.7 10.4 9.1 11.8c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.3 0-16.7-9-16.7-16.5" fill="#fed0ac"/><path d="m32 38.2c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#e0a372"/><path d="m36.8 31.4c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m44.7 27.8c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.5-3.5-3.5 0-1.9 1.6-3.5 3.5-3.5 1.9.1 3.5 1.6 3.5 3.5" fill="#664e27"/><circle cx="41.2" cy="27.8" r="1.2" fill="#2b2925"/><path d="m35.8 30c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31.4c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.8" r="3.5" fill="#664e27"/><path d="m28.1 30c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.8" r="1.2" fill="#2b2925"/><path d="m52.4 62c0-15-1.4-15.2-20.4-15.2-19 0-20.4.2-20.4 15.2 0 0 40.8 0 40.8 0" fill="#b386e2"/><g fill="#f2c4a5"><path d="m4.2 20.2c.8.6 13.9 11.2 13.9 11.2l-3.2 6.1c-4.3-2.5-6.2-7.2-12.5-14.3-1.2-1.4.4-4.1 1.8-3"/><path d="m59.8 20.2c-.8.6-13.9 11.2-13.9 11.2l3.2 6.1c4.3-2.6 6.2-7.2 12.5-14.4 1.2-1.3-.4-4-1.8-2.9"/></g><path d="m42.8 44.4c4.4-3.5 7.4-6.2 7.4-6.2l-3.5-7.9c-2.9 2.7-8.6 5.7-14.7 8.7-6.1-3-11.8-5.9-14.8-8.7l-3.5 7.9c0 0 3 2.7 7.4 6.2-10.2 5.4-18.1 11-12 16.6 3.7 3.4 13.7-2 22.9-8.5 9.2 6.4 19.2 11.8 22.9 8.5 6.1-5.6-1.8-11.2-12.1-16.6" fill="#c99ff7"/><g fill="#b386e2"><path d="M23.1 58.1 42.8 44.4 28.4 58z"/><path d="M21.2 44.4 32 39 20.2 43.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f645-1f3fd.svg b/riot/emojione/svg/1f645-1f3fd.svg new file mode 100644 index 0000000..4460675 --- /dev/null +++ b/riot/emojione/svg/1f645-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.3-12.1-17.3S41.4,2,32,2z" fill="#594640"/><path d="m15.3 33.3c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.7 10.4 9.1 11.8c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.3 0-16.7-9-16.7-16.5" fill="#d6a57c"/><path d="m32 38.2c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0s0 2.3-3.2 2.3" fill="#b58360"/><path d="m36.8 31.4c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.8" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.8" r="1.2" fill="#2b2925"/><path d="m35.8 30c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31.4c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><path d="m19.3 27.8c0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.5 3.5-3.5 0-1.9-1.6-3.5-3.5-3.5-2 .1-3.5 1.6-3.5 3.5" fill="#664e27"/><path d="m28.1 30c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.8" r="1.2" fill="#2b2925"/><path d="m52.4 62c0-15-1.4-15.2-20.4-15.2-19 0-20.4.2-20.4 15.2h40.8" fill="#b386e2"/><g fill="#cc9b76"><path d="m4.2 20.2c.8.7 13.9 11.2 13.9 11.2l-3.2 6.1c-4.3-2.5-6.2-7.2-12.5-14.3-1.2-1.4.4-4.1 1.8-3"/><path d="m59.8 20.2c-.8.7-13.9 11.2-13.9 11.2l3.2 6.1c4.3-2.6 6.2-7.2 12.5-14.4 1.2-1.3-.4-4-1.8-2.9"/></g><path d="m42.8 44.4c4.4-3.5 7.4-6.2 7.4-6.2l-3.5-7.9c-3 2.7-8.6 5.7-14.8 8.7-6.1-3-11.8-5.9-14.8-8.7l-3.5 7.9c0 0 3 2.7 7.4 6.2-10.1 5.4-18 11-11.9 16.6 3.7 3.4 13.7-2 22.9-8.5 9.2 6.4 19.2 11.8 22.9 8.5 6.1-5.6-1.8-11.2-12.1-16.6" fill="#c99ff7"/><g fill="#b386e2"><path d="M23.1 58.1 42.8 44.4 28.4 58z"/><path d="M21.2 44.4 32 39 20.2 43.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f645-1f3fe.svg b/riot/emojione/svg/1f645-1f3fe.svg new file mode 100644 index 0000000..2a99eab --- /dev/null +++ b/riot/emojione/svg/1f645-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.3-12.1-17.3S41.4,2,32,2z" fill="#231f20"/><path d="m15.3 33.3c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.7 10.4 9.1 11.8c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4s-16.7-9-16.7-16.5" fill="#b47d56"/><path d="m32 38.2c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#935e3e"/><path d="m36.8 31.4c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.8" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.8" r="1.2" fill="#2b2925"/><path d="m35.8 30c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31.4c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.8" r="3.5" fill="#664e27"/><path d="m28.1 30c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.8" r="1.2" fill="#2b2925"/><path d="m52.4 62c0-15-1.4-15.2-20.4-15.2-19 0-20.4.2-20.4 15.2h40.8" fill="#b386e2"/><g fill="#a8734f"><path d="m4.2 20.2c.8.7 13.9 11.2 13.9 11.2l-3.2 6.1c-4.3-2.5-6.2-7.2-12.5-14.3-1.2-1.4.4-4.1 1.8-3"/><path d="m59.8 20.2c-.8.7-13.9 11.2-13.9 11.2l3.2 6.1c4.3-2.6 6.2-7.2 12.5-14.4 1.2-1.3-.4-4-1.8-2.9"/></g><path d="m42.8 44.4c4.4-3.5 7.4-6.2 7.4-6.2l-3.5-7.9c-3 2.7-8.6 5.7-14.8 8.7-6.1-3-11.8-5.9-14.8-8.7l-3.5 7.9c0 0 3 2.7 7.4 6.2-10.1 5.4-18 11-11.9 16.6 3.7 3.4 13.7-2 22.9-8.5 9.2 6.4 19.2 11.8 22.9 8.5 6.1-5.6-1.8-11.2-12.1-16.6" fill="#c99ff7"/><g fill="#b386e2"><path d="M23.1 58.1 42.8 44.4 28.4 58z"/><path d="M21.2 44.4 32 39 20.2 43.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f645-1f3ff.svg b/riot/emojione/svg/1f645-1f3ff.svg new file mode 100644 index 0000000..b32480b --- /dev/null +++ b/riot/emojione/svg/1f645-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.3-12.1-17.3S41.4,2,32,2z" fill="#231f20"/><path d="m15.3 33.3c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.7 10.4 9.1 11.8c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.3 0-16.7-9-16.7-16.5" fill="#8a6859"/><path d="m32 38.2c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#705041"/><path d="m36.8 31.4c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.8" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.8" r="1.2" fill="#2b2925"/><path d="m35.8 30c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31.4c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.8" r="3.5" fill="#664e27"/><path d="m28.1 30c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.8" r="1.2" fill="#2b2925"/><path d="m52.4 62c0-15-1.4-15.2-20.4-15.2-19 0-20.4.2-20.4 15.2h40.8" fill="#b386e2"/><g fill="#7f5f52"><path d="m4.2 20.2c.8.7 13.9 11.2 13.9 11.2l-3.2 6.1c-4.3-2.5-6.2-7.2-12.5-14.3-1.2-1.4.4-4.1 1.8-3"/><path d="m59.8 20.2c-.8.7-13.9 11.2-13.9 11.2l3.2 6.1c4.3-2.6 6.2-7.2 12.5-14.4 1.2-1.3-.4-4-1.8-2.9"/></g><path d="m42.8 44.4c4.4-3.5 7.4-6.2 7.4-6.2l-3.5-7.9c-3 2.7-8.6 5.7-14.8 8.7-6.1-3-11.8-5.9-14.8-8.7l-3.5 7.9c0 0 3 2.7 7.4 6.2-10.1 5.4-18 11-11.9 16.6 3.7 3.4 13.7-2 22.9-8.5 9.2 6.4 19.2 11.8 22.9 8.5 6.1-5.6-1.8-11.2-12.1-16.6" fill="#c99ff7"/><g fill="#b386e2"><path d="M23.1 58.1 42.8 44.4 28.4 58z"/><path d="M21.2 44.4 32 39 20.2 43.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f645.svg b/riot/emojione/svg/1f645.svg new file mode 100644 index 0000000..d735d25 --- /dev/null +++ b/riot/emojione/svg/1f645.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.3-12.1-17.3S41.4,2,32,2z" fill="#ffb300"/><path d="m15.3 33.3c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.7 10.4 9.1 11.8c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.3 0-16.7-9-16.7-16.5" fill="#ffdd67"/><path d="m32 38.2c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#eba352"/><path d="m36.8 31.4c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.8" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.8" r="1.2" fill="#2b2925"/><path d="m35.8 30c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31.4c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.8" r="3.5" fill="#664e27"/><path d="m28.1 30c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.8" r="1.2" fill="#2b2925"/><path d="m52.4 62c0-15-1.4-15.2-20.4-15.2-19 0-20.4.2-20.4 15.2h40.8" fill="#b386e2"/><g fill="#ffd452"><path d="m4.2 20.2c.8.6 13.9 11.2 13.9 11.2l-3.2 6.1c-4.3-2.5-6.2-7.2-12.5-14.3-1.2-1.4.4-4.1 1.8-3"/><path d="m59.8 20.2c-.8.6-13.9 11.2-13.9 11.2l3.2 6.1c4.3-2.6 6.2-7.2 12.5-14.4 1.2-1.3-.4-4-1.8-2.9"/></g><path d="m42.8 44.4c4.4-3.5 7.4-6.2 7.4-6.2l-3.5-7.9c-3 2.7-8.6 5.7-14.8 8.7-6.1-3-11.8-5.9-14.8-8.7l-3.5 7.9c0 0 3 2.7 7.4 6.2-10.1 5.4-18 11-11.9 16.6 3.7 3.4 13.7-2 22.9-8.5 9.2 6.4 19.2 11.8 22.9 8.5 6.1-5.6-1.8-11.2-12.1-16.6" fill="#c99ff7"/><g fill="#b386e2"><path d="M23.1 58.1 42.8 44.4 28.4 58z"/><path d="M21.2 44.4 32 39 20.2 43.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f646-1f3fb.svg b/riot/emojione/svg/1f646-1f3fb.svg new file mode 100644 index 0000000..b8d8dfd --- /dev/null +++ b/riot/emojione/svg/1f646-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.3,2,9.3,11.2,9.3,23.3v26.9h45.3V23.3c0-18-12.3-17.7-12.3-17.7S41.5,2,32,2z" fill="#594640"/><g fill="#ffe1bd"><path d="m31.2 3.2c0-.7-5-.6-6.5-.6-2.6 0-9.8 3.8-9.8 3.8s3.2 4 4.8 4c2.2 0 4.4-1.5 4.4-3.6 0-1.6 7.1-1.5 7.1-3.6"/><path d="m32.8 3.2c0-.7 5-.6 6.5-.6 2.6 0 9.8 3.8 9.8 3.8s-3.2 4-4.8 4c-2.2 0-4.4-1.5-4.4-3.6 0-1.6-7.1-1.5-7.1-3.6"/></g><path d="m61.7 25.8c-1.3-5.1-7.2-12.1-12.5-20.4l-5.9 5.7c0 0 5.7 5.1 9.9 18-2.4 5.9-5.4 14.9-9.6 17.6-2.4-1.2-6.1-1.2-11.6-1.2-5.5 0-9.2 0-11.6 1.2-4.2-2.7-7.2-11.7-9.6-17.6 4.2-12.9 9.9-18 9.9-18l-5.9-5.7c-5.4 8.3-11.2 15.3-12.5 20.4-2.4 9.6 11.1 29.3 10.9 36.2h37.6c-.2-6.9 13.3-26.6 10.9-36.2" fill="#c28fef"/><path d="m15.3 33.5c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-8.9-16.5-16.4" fill="#ffe1bd"/><path d="m32 38.4c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#e6b796"/><path d="m36.8 31.6c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="28" r="3.5" fill="#664e27"/><circle cx="41.2" cy="28" r="1.2" fill="#2b2925"/><path d="m35.8 30.2c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 31.6c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="28" r="3.5" fill="#664e27"/><path d="m28.1 30.2c-1.7-10.5-10.4-3.5-13.8-5 3.5 3.2 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m32 42.2l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#e08672"/><path d="m35 40.8c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#b86e5d"/><circle cx="22.8" cy="28" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f646-1f3fc.svg b/riot/emojione/svg/1f646-1f3fc.svg new file mode 100644 index 0000000..f16fa5a --- /dev/null +++ b/riot/emojione/svg/1f646-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.3,2,9.3,11.2,9.3,23.3v26.9h45.3V23.3c0-18-12.3-17.7-12.3-17.7S41.5,2,32,2z" fill="#dbb471"/><g fill="#fed0ac"><path d="m31.2 3.2c0-.7-5-.6-6.5-.6-2.6 0-9.8 3.8-9.8 3.8s3.2 4 4.8 4c2.2 0 4.4-1.5 4.4-3.6 0-1.6 7.1-1.5 7.1-3.6"/><path d="m32.8 3.2c0-.7 5-.6 6.5-.6 2.6 0 9.8 3.8 9.8 3.8s-3.2 4-4.8 4c-2.2 0-4.4-1.5-4.4-3.6 0-1.6-7.1-1.5-7.1-3.6"/></g><path d="m61.7 25.8c-1.3-5.1-7.2-12.1-12.5-20.4l-5.9 5.7c0 0 5.7 5.1 9.9 18-2.4 5.9-5.4 14.9-9.6 17.6-2.4-1.2-6.1-1.2-11.6-1.2-5.5 0-9.2 0-11.6 1.2-4.2-2.7-7.2-11.7-9.6-17.6 4.2-12.9 9.9-18 9.9-18l-5.9-5.7c-5.4 8.3-11.2 15.3-12.5 20.4-2.4 9.6 11.1 29.3 10.9 36.2h37.6c-.2-6.9 13.3-26.6 10.9-36.2" fill="#c28fef"/><path d="m15.3 33.5c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4s-16.5-8.9-16.5-16.4" fill="#fed0ac"/><path d="m32 38.4c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0 0 2.3-3.2 2.3" fill="#e0a372"/><path d="m36.8 31.6c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="28" r="3.5" fill="#664e27"/><circle cx="41.2" cy="28" r="1.2" fill="#2b2925"/><path d="m35.8 30.2c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 31.6c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><path d="m19.3 28c0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.5 3.5-3.5s-1.6-3.5-3.5-3.5c-2 0-3.5 1.6-3.5 3.5" fill="#664e27"/><path d="m28.1 30.2c-1.7-10.5-10.4-3.5-13.8-5 3.5 3.2 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m32 42.2l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#e08672"/><path d="m35 40.8c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#b86e5d"/><circle cx="22.8" cy="28" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f646-1f3fd.svg b/riot/emojione/svg/1f646-1f3fd.svg new file mode 100644 index 0000000..9bc563c --- /dev/null +++ b/riot/emojione/svg/1f646-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.3,2,9.3,11.2,9.3,23.3v26.9h45.3V23.3c0-18-12.3-17.7-12.3-17.7S41.5,2,32,2z" fill="#594640"/><g fill="#d6a57c"><path d="m31.2 3.2c0-.7-5-.6-6.5-.6-2.6 0-9.8 3.8-9.8 3.8s3.2 4 4.8 4c2.2 0 4.4-1.5 4.4-3.6 0-1.6 7.1-1.5 7.1-3.6"/><path d="m32.8 3.2c0-.7 5-.6 6.5-.6 2.6 0 9.8 3.8 9.8 3.8s-3.2 4-4.8 4c-2.2 0-4.4-1.5-4.4-3.6 0-1.6-7.1-1.5-7.1-3.6"/></g><path d="m61.7 25.8c-1.3-5.1-7.2-12.1-12.5-20.4l-5.9 5.7c0 0 5.7 5.1 9.9 18-2.4 5.9-5.4 14.9-9.6 17.6-2.4-1.2-6.1-1.2-11.6-1.2-5.5 0-9.2 0-11.6 1.2-4.2-2.7-7.2-11.7-9.6-17.6 4.2-12.9 9.9-18 9.9-18l-5.9-5.7c-5.4 8.3-11.2 15.3-12.5 20.4-2.4 9.6 11.1 29.3 10.9 36.2h37.6c-.2-6.9 13.3-26.6 10.9-36.2" fill="#c28fef"/><path d="m15.3 33.5c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-8.9-16.5-16.4" fill="#d6a57c"/><path d="m32 38.4c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#b58360"/><path d="m36.8 31.6c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><path d="m44.7 28c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.5-3.5-3.5s1.6-3.5 3.5-3.5c1.9 0 3.5 1.6 3.5 3.5" fill="#664e27"/><circle cx="41.2" cy="28" r="1.2" fill="#2b2925"/><path d="m35.8 30.2c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 31.6c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="28" r="3.5" fill="#664e27"/><path d="m28.1 30.2c-1.7-10.5-10.4-3.5-13.8-5 3.5 3.2 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m32 42.2l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#b58360"/><path d="m35 40.8c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9s4.6-1.3 7.7-1.9c0 0-2.9.4-4.7-.3" fill="#805c44"/><circle cx="22.8" cy="28" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f646-1f3fe.svg b/riot/emojione/svg/1f646-1f3fe.svg new file mode 100644 index 0000000..5392c73 --- /dev/null +++ b/riot/emojione/svg/1f646-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.3,2,9.3,11.2,9.3,23.3v26.9h45.3V23.3c0-18-12.3-17.7-12.3-17.7S41.5,2,32,2z" fill="#231f20"/><g fill="#b47d56"><path d="m31.2 3.2c0-.7-5-.6-6.5-.6-2.6 0-9.8 3.8-9.8 3.8s3.2 4 4.8 4c2.2 0 4.4-1.5 4.4-3.6 0-1.6 7.1-1.5 7.1-3.6"/><path d="m32.8 3.2c0-.7 5-.6 6.5-.6 2.6 0 9.8 3.8 9.8 3.8s-3.2 4-4.8 4c-2.2 0-4.4-1.5-4.4-3.6 0-1.6-7.1-1.5-7.1-3.6"/></g><path d="m61.7 25.8c-1.3-5.2-7.2-12.1-12.5-20.4l-5.9 5.7c0 0 5.7 5.1 9.9 18-2.4 5.9-5.4 14.9-9.6 17.6-2.4-1.2-6.1-1.2-11.6-1.2-5.5 0-9.2 0-11.6 1.2-4.2-2.7-7.2-11.7-9.6-17.6 4.2-12.9 9.9-18 9.9-18l-5.9-5.7c-5.4 8.3-11.2 15.3-12.5 20.4-2.4 9.6 11.1 29.3 10.9 36.2h37.6c-.2-6.9 13.3-26.6 10.9-36.2" fill="#c28fef"/><path d="m15.3 33.5c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-8.9-16.5-16.4" fill="#b47d56"/><path d="m32 38.4c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#935e3e"/><path d="m36.8 31.6c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="28" r="3.5" fill="#664e27"/><circle cx="41.2" cy="28" r="1.2" fill="#2b2925"/><path d="m35.8 30.2c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 31.6c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="28" r="3.5" fill="#664e27"/><path d="m28.1 30.2c-1.7-10.5-10.4-3.5-13.8-5 3.5 3.2 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m32 42.2l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#935e3e"/><path d="m35 40.8c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#734c31"/><circle cx="22.8" cy="28" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f646-1f3ff.svg b/riot/emojione/svg/1f646-1f3ff.svg new file mode 100644 index 0000000..6a43d0b --- /dev/null +++ b/riot/emojione/svg/1f646-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.3,2,9.3,11.2,9.3,23.3v26.9h45.3V23.3c0-18-12.3-17.7-12.3-17.7S41.5,2,32,2z" fill="#231f20"/><g fill="#8a6859"><path d="m31.2 3.2c0-.7-5-.6-6.5-.6-2.6 0-9.8 3.8-9.8 3.8s3.2 4 4.8 4c2.2 0 4.4-1.5 4.4-3.6 0-1.6 7.1-1.5 7.1-3.6"/><path d="m32.8 3.2c0-.7 5-.6 6.5-.6 2.6 0 9.8 3.8 9.8 3.8s-3.2 4-4.8 4c-2.2 0-4.4-1.5-4.4-3.6 0-1.6-7.1-1.5-7.1-3.6"/></g><path d="m61.7 25.8c-1.3-5.1-7.2-12.1-12.5-20.4l-5.9 5.7c0 0 5.7 5.1 9.9 18-2.4 5.9-5.4 14.9-9.6 17.6-2.4-1.2-6.1-1.2-11.6-1.2-5.5 0-9.2 0-11.6 1.2-4.2-2.7-7.2-11.7-9.6-17.6 4.2-12.9 9.9-18 9.9-18l-5.9-5.7c-5.4 8.3-11.2 15.3-12.5 20.4-2.4 9.6 11.1 29.3 10.9 36.2h37.6c-.2-6.9 13.3-26.6 10.9-36.2" fill="#c28fef"/><path d="m15.3 33.5c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-8.9-16.5-16.4" fill="#8a6859"/><path d="m32 38.4c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#705041"/><path d="m36.8 31.6c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="28" r="3.5" fill="#664e27"/><circle cx="41.2" cy="28" r="1.2" fill="#2b2925"/><path d="m35.8 30.2c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 31.6c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="28" r="3.5" fill="#664e27"/><path d="m28.1 30.2c-1.7-10.5-10.4-3.5-13.8-5 3.5 3.2 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m32 42.2l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#7d5442"/><path d="m35 40.8c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#5c3f34"/><circle cx="22.8" cy="28" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f646.svg b/riot/emojione/svg/1f646.svg new file mode 100644 index 0000000..8a9a964 --- /dev/null +++ b/riot/emojione/svg/1f646.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.3,2,9.3,11.2,9.3,23.3v26.9h45.3V23.3c0-18-12.3-17.7-12.3-17.7S41.5,2,32,2z" fill="#ffb300"/><g fill="#ffdd67"><path d="m31.2 3.2c0-.7-5-.6-6.5-.6-2.6 0-9.8 3.8-9.8 3.8s3.2 4 4.8 4c2.2 0 4.4-1.5 4.4-3.6 0-1.6 7.1-1.5 7.1-3.6"/><path d="m32.8 3.2c0-.7 5-.6 6.5-.6 2.6 0 9.8 3.8 9.8 3.8s-3.2 4-4.8 4c-2.2 0-4.4-1.5-4.4-3.6 0-1.6-7.1-1.5-7.1-3.6"/></g><path d="m61.7 25.8c-1.3-5.1-7.2-12.1-12.5-20.4l-5.9 5.7c0 0 5.7 5.1 9.9 18-2.4 5.9-5.4 14.9-9.6 17.6-2.4-1.2-6.1-1.2-11.6-1.2-5.5 0-9.2 0-11.6 1.2-4.2-2.7-7.2-11.7-9.6-17.6 4.2-12.9 9.9-18 9.9-18l-5.9-5.7c-5.4 8.3-11.2 15.3-12.5 20.4-2.4 9.6 11.1 29.3 10.9 36.2h37.6c-.2-6.9 13.3-26.6 10.9-36.2" fill="#c28fef"/><path d="m15.3 33.5c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-8.9-16.5-16.4" fill="#ffdd67"/><path d="m32 38.4c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#eba352"/><path d="m36.8 31.6c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.1.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="28" r="3.5" fill="#664e27"/><circle cx="41.2" cy="28" r="1.2" fill="#2b2925"/><path d="m35.8 30.2c1.7-10.5 10.4-3.5 13.8-5-3.4 3.2-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.2 31.6c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.8" cy="28" r="3.5" fill="#664e27"/><path d="m28.1 30.2c-1.7-10.5-10.4-3.5-13.8-5 3.5 3.2 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m32 42.2l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#f09985"/><path d="m35 40.8c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#d47f6c"/><circle cx="22.8" cy="28" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f647-1f3fb.svg b/riot/emojione/svg/1f647-1f3fb.svg new file mode 100644 index 0000000..bce8d4b --- /dev/null +++ b/riot/emojione/svg/1f647-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.3 36.7c-8.2-4.3-13.3-.4-13.3-.4s-5-3.9-13.3.5c-7.3 3.8-16.9 12.7-16.2 16.7 0 0 21.9 6.9 29.5 6.9 7.6 0 29.5-6.9 29.5-6.9.7-4-8.9-12.9-16.2-16.8" fill="#428bc1"/><path d="m33.3 58.9c7.8-5.3 10.9-5.2 11.1-5.3.7 1.2 1.7 4.8 2 6.6-.7 1.7-11.6 2.6-13.5.8-.5-.4-.6-1.4.4-2.1" fill="#ffe1bd"/><path d="m55 46.7c2.9-.6 8.9 2.8 6.5 8-2.1 4.6-14.8 5.5-15.1 5.5-.3-1.7-1.3-5.4-2-6.6 2.1-.8 8.2-6.4 10.6-6.9" fill="#428bc1"/><path d="m30.7 58.9c-7.8-5.3-10.9-5.2-11.1-5.3-.7 1.2-1.7 4.8-2 6.6.7 1.7 11.6 2.6 13.5.8.5-.4.6-1.4-.4-2.1" fill="#ffe1bd"/><path d="m9 46.7c-2.9-.6-8.9 2.8-6.5 8 2.1 4.6 14.8 5.5 15.1 5.5.3-1.7 1.3-5.4 2-6.6-2.1-.8-8.2-6.4-10.6-6.9" fill="#428bc1"/><g fill="#2e6c93"><path d="m43 53.3c0 0 2.5 4.2 3.3 6.9.1-3.4-.4-5.2-.8-6.1 1.7-2 8.5-6.9 9.5-7.4-4.3 1.3-12 6.6-12 6.6"/><path d="m21 53.3c0 0-2.5 4.2-3.3 6.9-.1-3.4.4-5.2.8-6.1-1.7-2-8.5-6.9-9.5-7.4 4.3 1.3 12 6.6 12 6.6"/></g><path d="m32 14c11.8 0 19.1 6.6 19.1 14.9v8.1c0 6.5-5.1 6.5-5.1 6.5h-28.7c0 0-4.4 0-4.4-6.5 0-3.1 0-8.2 0-8.2 0-8.2 7.7-14.8 19.1-14.8" fill="#594640"/><path d="m49.3 38.5c0 0-.6-3.5-.7-4.7-.3-4.3-5.2 2.5-16.6 2.5s-16.3-6.8-16.6-2.5c-.1 1.2-.7 4.7-.7 4.7-3.8 0-3.8 5.3 0 5.3 0 6.6 10.3 9.5 17.3 9.5 7 0 17.3-3 17.3-9.5 3.8 0 3.8-5.3 0-5.3" fill="#ffe1bd"/><g fill="#42ade2"><path d="m36 2l3.5 10.5 5-8.9z"/><path d="m53.2 8.2l-4.7 9 9.9-1.3z"/><path d="m28.4 2l-3.6 10.5-5.3-8.9z"/><path d="m10.8 8.2l4.7 9-9.9-1.3z"/></g><g fill="#664e27"><path d="m34.8 49.8c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/><path d="m34.2 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/><path d="m20 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f647-1f3fc.svg b/riot/emojione/svg/1f647-1f3fc.svg new file mode 100644 index 0000000..c492d09 --- /dev/null +++ b/riot/emojione/svg/1f647-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.3 36.7c-8.2-4.3-13.3-.4-13.3-.4s-5.1-3.9-13.3.5c-7.3 3.8-16.9 12.7-16.2 16.7 0 0 21.9 6.9 29.5 6.9s29.5-6.9 29.5-6.9c.7-4-8.9-12.9-16.2-16.8" fill="#428bc1"/><path d="m33.3 58.9c7.8-5.3 10.9-5.2 11.1-5.3.7 1.2 1.7 4.8 2 6.6-.7 1.7-11.6 2.6-13.5.8-.5-.4-.6-1.4.4-2.1" fill="#fed0ac"/><path d="m55 46.7c2.9-.6 8.9 2.8 6.5 8-2.1 4.6-14.8 5.5-15.1 5.5-.3-1.7-1.3-5.4-2-6.6 2.1-.8 8.2-6.4 10.6-6.9" fill="#428bc1"/><path d="m30.7 58.9c-7.8-5.3-10.9-5.2-11.1-5.3-.7 1.2-1.7 4.8-2 6.6.7 1.7 11.6 2.6 13.5.8.5-.4.6-1.4-.4-2.1" fill="#fed0ac"/><path d="m9 46.7c-2.9-.6-8.9 2.8-6.5 8 2.1 4.6 14.8 5.5 15.1 5.5.3-1.7 1.3-5.4 2-6.6-2.1-.8-8.2-6.4-10.6-6.9" fill="#428bc1"/><g fill="#2e6c93"><path d="m43 53.3c0 0 2.5 4.2 3.3 6.9.1-3.4-.4-5.2-.8-6.1 1.7-2 8.5-6.9 9.5-7.4-4.3 1.3-12 6.6-12 6.6"/><path d="m21 53.3c0 0-2.5 4.2-3.3 6.9-.1-3.4.4-5.2.8-6.1-1.7-2-8.5-6.9-9.5-7.4 4.3 1.3 12 6.6 12 6.6"/></g><path d="m32 14c11.8 0 19.1 6.6 19.1 14.9v8.1c0 6.5-5.1 6.5-5.1 6.5h-28.7c0 0-4.4 0-4.4-6.5 0-3.1 0-8.2 0-8.2 0-8.2 7.7-14.8 19.1-14.8" fill="#dbb471"/><path d="m49.3 38.5c0 0-.6-3.5-.7-4.7-.3-4.3-5.2 2.5-16.6 2.5-11.4 0-16.3-6.8-16.6-2.5-.1 1.2-.7 4.7-.7 4.7-3.8 0-3.8 5.3 0 5.3 0 6.6 10.3 9.5 17.3 9.5s17.3-3 17.3-9.5c3.8 0 3.8-5.3 0-5.3" fill="#fed0ac"/><g fill="#42ade2"><path d="m36 2l3.5 10.5 5-8.9z"/><path d="m53.2 8.2l-4.7 9 9.9-1.3z"/><path d="m28.4 2l-3.6 10.5-5.3-8.9z"/><path d="m10.8 8.2l4.7 9-9.9-1.3z"/></g><g fill="#664e27"><path d="m34.8 49.8c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3.1-1.9.2-.3 0-.6-.2-.4"/><path d="m34.2 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/><path d="m20 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f647-1f3fd.svg b/riot/emojione/svg/1f647-1f3fd.svg new file mode 100644 index 0000000..e615034 --- /dev/null +++ b/riot/emojione/svg/1f647-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.3 36.7c-8.3-4.3-13.3-.4-13.3-.4s-5-3.9-13.3.5c-7.3 3.8-16.9 12.7-16.2 16.7 0 0 21.9 6.9 29.5 6.9 7.6 0 29.5-6.9 29.5-6.9.7-4-8.9-12.9-16.2-16.8" fill="#428bc1"/><path d="m33.3 58.9c7.8-5.3 10.9-5.2 11.1-5.3.7 1.2 1.7 4.8 2 6.6-.7 1.7-11.6 2.6-13.5.8-.5-.4-.6-1.4.4-2.1" fill="#d6a57c"/><path d="m55 46.7c2.9-.6 8.9 2.8 6.5 8-2.1 4.6-14.8 5.5-15.1 5.5-.3-1.7-1.3-5.4-2-6.6 2.1-.8 8.2-6.4 10.6-6.9" fill="#428bc1"/><path d="m30.7 58.9c-7.8-5.3-10.9-5.2-11.1-5.3-.7 1.2-1.7 4.8-2 6.6.7 1.7 11.6 2.6 13.5.8.5-.4.6-1.4-.4-2.1" fill="#d6a57c"/><path d="m9 46.7c-2.9-.6-8.9 2.8-6.5 8 2.1 4.6 14.8 5.5 15.1 5.5.3-1.7 1.3-5.4 2-6.6-2.1-.8-8.2-6.4-10.6-6.9" fill="#428bc1"/><g fill="#2e6c93"><path d="m43 53.3c0 0 2.5 4.2 3.3 6.9.1-3.4-.4-5.2-.8-6.1 1.7-2 8.5-6.9 9.5-7.4-4.3 1.3-12 6.6-12 6.6"/><path d="m21 53.3c0 0-2.5 4.2-3.3 6.9-.1-3.4.4-5.2.8-6.1-1.7-2-8.5-6.9-9.5-7.4 4.3 1.3 12 6.6 12 6.6"/></g><path d="m32 14c11.8 0 19.1 6.6 19.1 14.9v8.1c0 6.5-5.1 6.5-5.1 6.5h-28.7c0 0-4.4 0-4.4-6.5 0-3.1 0-8.2 0-8.2 0-8.2 7.7-14.8 19.1-14.8" fill="#594640"/><path d="m49.3 38.5c0 0-.6-3.5-.7-4.7-.3-4.3-5.2 2.5-16.6 2.5s-16.3-6.8-16.6-2.5c-.1 1.2-.7 4.7-.7 4.7-3.8 0-3.8 5.3 0 5.3 0 6.6 10.3 9.5 17.3 9.5s17.3-3 17.3-9.5c3.8 0 3.8-5.3 0-5.3" fill="#d6a57c"/><g fill="#42ade2"><path d="m36 2l3.5 10.5 5-8.9z"/><path d="m53.2 8.2l-4.7 9 9.9-1.3z"/><path d="m28.4 2l-3.6 10.5-5.3-8.9z"/><path d="m10.8 8.2l4.7 9-9.9-1.3z"/></g><g fill="#664e27"><path d="m34.8 49.8c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/><path d="m34.2 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/><path d="m20 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f647-1f3fe.svg b/riot/emojione/svg/1f647-1f3fe.svg new file mode 100644 index 0000000..090651f --- /dev/null +++ b/riot/emojione/svg/1f647-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.3 36.7c-8.2-4.3-13.3-.4-13.3-.4s-5-3.9-13.3.5c-7.3 3.8-16.9 12.7-16.2 16.7 0 0 21.9 6.9 29.5 6.9 7.6 0 29.5-6.9 29.5-6.9.7-4-8.9-12.9-16.2-16.8" fill="#428bc1"/><path d="m33.3 58.9c7.8-5.3 10.9-5.2 11.1-5.3.7 1.2 1.7 4.8 2 6.6-.7 1.7-11.6 2.6-13.5.8-.5-.4-.6-1.4.4-2.1" fill="#b47d56"/><path d="m55 46.7c2.9-.6 8.9 2.8 6.5 8-2.1 4.6-14.8 5.5-15.1 5.5-.3-1.7-1.3-5.4-2-6.6 2.1-.8 8.2-6.4 10.6-6.9" fill="#428bc1"/><path d="m30.7 58.9c-7.8-5.3-10.9-5.2-11.1-5.3-.7 1.2-1.7 4.8-2 6.6.7 1.7 11.6 2.6 13.5.8.5-.4.6-1.4-.4-2.1" fill="#b47d56"/><path d="m9 46.7c-2.9-.6-8.9 2.8-6.5 8 2.1 4.6 14.8 5.5 15.1 5.5.3-1.7 1.3-5.4 2-6.6-2.1-.8-8.2-6.4-10.6-6.9" fill="#428bc1"/><g fill="#2e6c93"><path d="m43 53.3c0 0 2.5 4.2 3.3 6.9.1-3.4-.4-5.2-.8-6.1 1.7-2 8.5-6.9 9.5-7.4-4.3 1.3-12 6.6-12 6.6"/><path d="m21 53.3c0 0-2.5 4.2-3.3 6.9-.1-3.4.4-5.2.8-6.1-1.7-2-8.5-6.9-9.5-7.4 4.3 1.3 12 6.6 12 6.6"/></g><path d="m32 14c11.8 0 19.1 6.6 19.1 14.9v8.1c0 6.5-5.1 6.5-5.1 6.5h-28.7c0 0-4.4 0-4.4-6.5 0-3.1 0-8.2 0-8.2 0-8.2 7.7-14.8 19.1-14.8" fill="#231f20"/><path d="m49.3 38.5c0 0-.6-3.5-.7-4.7-.3-4.3-5.2 2.5-16.6 2.5s-16.3-6.8-16.6-2.5c-.1 1.2-.7 4.7-.7 4.7-3.8 0-3.8 5.3 0 5.3 0 6.6 10.3 9.5 17.3 9.5 7 0 17.3-3 17.3-9.5 3.8 0 3.8-5.3 0-5.3" fill="#b47d56"/><g fill="#42ade2"><path d="m36 2l3.5 10.5 5-8.9z"/><path d="m53.2 8.2l-4.7 9 9.9-1.3z"/><path d="m28.4 2l-3.6 10.5-5.3-8.9z"/><path d="m10.8 8.2l4.7 9-9.9-1.3z"/></g><g fill="#664e27"><path d="m34.8 49.8c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/><path d="m34.2 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/><path d="m20 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f647-1f3ff.svg b/riot/emojione/svg/1f647-1f3ff.svg new file mode 100644 index 0000000..f726d47 --- /dev/null +++ b/riot/emojione/svg/1f647-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.3 36.7c-8.3-4.3-13.3-.4-13.3-.4s-5-3.9-13.3.5c-7.3 3.8-16.9 12.7-16.2 16.7 0 0 21.9 6.9 29.5 6.9 7.6 0 29.5-6.9 29.5-6.9.7-4-8.9-12.9-16.2-16.8" fill="#428bc1"/><path d="m33.3 58.9c7.8-5.3 10.9-5.2 11.1-5.3.7 1.2 1.7 4.8 2 6.6-.7 1.7-11.6 2.6-13.5.8-.5-.4-.6-1.4.4-2.1" fill="#8a6859"/><path d="m55 46.7c2.9-.6 8.9 2.8 6.5 8-2.1 4.6-14.8 5.5-15.1 5.5-.3-1.7-1.3-5.4-2-6.6 2.1-.8 8.2-6.4 10.6-6.9" fill="#428bc1"/><path d="m30.7 58.9c-7.8-5.3-10.9-5.2-11.1-5.3-.7 1.2-1.7 4.8-2 6.6.7 1.7 11.6 2.6 13.5.8.5-.4.6-1.4-.4-2.1" fill="#8a6859"/><path d="m9 46.7c-2.9-.6-8.9 2.8-6.5 8 2.1 4.6 14.8 5.5 15.1 5.5.3-1.7 1.3-5.4 2-6.6-2.1-.8-8.2-6.4-10.6-6.9" fill="#428bc1"/><g fill="#2e6c93"><path d="m43 53.3c0 0 2.5 4.2 3.3 6.9.1-3.4-.4-5.2-.8-6.1 1.7-2 8.5-6.9 9.5-7.4-4.3 1.3-12 6.6-12 6.6"/><path d="m21 53.3c0 0-2.5 4.2-3.3 6.9-.1-3.4.4-5.2.8-6.1-1.7-2-8.5-6.9-9.5-7.4 4.3 1.3 12 6.6 12 6.6"/></g><path d="m32 14c11.8 0 19.1 6.6 19.1 14.9v8.1c0 6.5-5.1 6.5-5.1 6.5h-28.7c0 0-4.4 0-4.4-6.5 0-3.1 0-8.2 0-8.2 0-8.2 7.7-14.8 19.1-14.8" fill="#231f20"/><path d="m49.3 38.5c0 0-.6-3.5-.7-4.7-.3-4.3-5.2 2.5-16.6 2.5-11.4 0-16.3-6.8-16.6-2.5-.1 1.2-.7 4.7-.7 4.7-3.8 0-3.8 5.3 0 5.3 0 6.6 10.3 9.5 17.3 9.5s17.3-3 17.3-9.5c3.8 0 3.8-5.3 0-5.3" fill="#8a6859"/><g fill="#42ade2"><path d="m36 2l3.5 10.5 5-8.9z"/><path d="m53.2 8.2l-4.7 9 9.9-1.3z"/><path d="m28.4 2l-3.6 10.5-5.3-8.9z"/><path d="m10.8 8.2l4.7 9-9.9-1.3z"/></g><g fill="#574137"><path d="m34.8 49.8c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/><path d="m34.2 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/><path d="m20 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f647.svg b/riot/emojione/svg/1f647.svg new file mode 100644 index 0000000..e5deddd --- /dev/null +++ b/riot/emojione/svg/1f647.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.3 36.7c-8.3-4.3-13.3-.4-13.3-.4s-5-3.9-13.3.5c-7.3 3.8-16.9 12.7-16.2 16.7 0 0 21.9 6.9 29.5 6.9 7.6 0 29.5-6.9 29.5-6.9.7-4-8.9-12.9-16.2-16.8" fill="#428bc1"/><path d="m33.3 58.9c7.8-5.3 10.9-5.2 11.1-5.3.7 1.2 1.7 4.8 2 6.6-.7 1.7-11.6 2.6-13.5.8-.5-.4-.6-1.4.4-2.1" fill="#ffdd67"/><path d="m55 46.7c2.9-.6 8.9 2.8 6.5 8-2.1 4.6-14.8 5.5-15.1 5.5-.3-1.7-1.3-5.4-2-6.6 2.1-.8 8.2-6.4 10.6-6.9" fill="#428bc1"/><path d="m30.7 58.9c-7.8-5.3-10.9-5.2-11.1-5.3-.7 1.2-1.7 4.8-2 6.6.7 1.7 11.6 2.6 13.5.8.5-.4.6-1.4-.4-2.1" fill="#ffdd67"/><path d="m9 46.7c-2.9-.6-8.9 2.8-6.5 8 2.1 4.6 14.8 5.5 15.1 5.5.3-1.7 1.3-5.4 2-6.6-2.1-.8-8.2-6.4-10.6-6.9" fill="#428bc1"/><g fill="#2e6c93"><path d="m43 53.3c0 0 2.5 4.2 3.3 6.9.1-3.4-.4-5.2-.8-6.1 1.7-2 8.5-6.9 9.5-7.4-4.3 1.3-12 6.6-12 6.6"/><path d="m21 53.3c0 0-2.5 4.2-3.3 6.9-.1-3.4.4-5.2.8-6.1-1.7-2-8.5-6.9-9.5-7.4 4.3 1.3 12 6.6 12 6.6"/></g><path d="m32 14c11.8 0 19.1 6.6 19.1 14.9v8.1c0 6.5-5.1 6.5-5.1 6.5h-28.7c0 0-4.4 0-4.4-6.5 0-3.1 0-8.2 0-8.2 0-8.2 7.7-14.8 19.1-14.8" fill="#ffb300"/><path d="m49.3 38.5c0 0-.6-3.5-.7-4.7-.3-4.3-5.2 2.5-16.6 2.5-11.4 0-16.3-6.8-16.6-2.5-.1 1.2-.7 4.7-.7 4.7-3.8 0-3.8 5.3 0 5.3 0 6.6 10.3 9.5 17.3 9.5s17.3-3 17.3-9.5c3.8 0 3.8-5.3 0-5.3" fill="#ffdd67"/><g fill="#42ade2"><path d="m36 2l3.5 10.5 5-8.9z"/><path d="m53.2 8.2l-4.7 9 9.9-1.3z"/><path d="m28.4 2l-3.6 10.5-5.3-8.9z"/><path d="m10.8 8.2l4.7 9-9.9-1.3z"/></g><g fill="#937237"><path d="m34.8 49.8c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/><path d="m34.2 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/><path d="m20 43.3c2.4 4.5 7.3 4.5 9.7 0 .1-.2-.2-.3-.6-.6-2.4 1.9-6.4 1.7-8.6 0-.3.2-.6.3-.5.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f648.svg b/riot/emojione/svg/1f648.svg new file mode 100644 index 0000000..b8b5116 --- /dev/null +++ b/riot/emojione/svg/1f648.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="53.8" cy="33" rx="8.2" ry="8.2" fill="#89664c"/><ellipse cx="53.8" cy="33" rx="5.4" ry="5.4" fill="#ffc5d3"/><ellipse cx="10.2" cy="33" rx="8.2" ry="8.2" fill="#89664c"/><ellipse cx="10.2" cy="33" rx="5.4" ry="5.4" fill="#ffc5d3"/><g fill="#89664c"><path d="m43.4 10.8c1.1-.6 1.9-.9 1.9-.9-3.2-1.1-6-1.8-8.5-2.1 1.3-1 2.1-1.3 2.1-1.3-20.4-2.9-30.1 9-30.1 19.5h46.4c-.7-7.4-4.8-12.4-11.8-15.2"/><path d="m55.3 27.6c0-9.7-10.4-17.6-23.3-17.6-12.9 0-23.3 7.9-23.3 17.6 0 2.3.6 4.4 1.6 6.4-1 2-1.6 4.2-1.6 6.4 0 9.7 10.4 17.6 23.3 17.6 12.9 0 23.3-7.9 23.3-17.6 0-2.3-.6-4.4-1.6-6.4 1-2 1.6-4.2 1.6-6.4"/></g><path d="m52 28.2c0-16.9-20-6.1-20-6.1s-20-10.8-20 6.1c0 4.7 2.9 9 7.5 11.7-1.3 1.7-2.1 3.6-2.1 5.7 0 6.1 6.6 11 14.7 11 8.1 0 14.7-4.9 14.7-11 0-2.1-.8-4-2.1-5.7 4.4-2.7 7.3-7 7.3-11.7" fill="#e0ac7e"/><g fill="#3b302a"><path d="m35.1 38.7c0 1.1-.4 2.1-1 2.1s-1-.9-1-2.1c0-1.1.4-2.1 1-2.1s1 1 1 2.1"/><path d="m30.9 38.7c0 1.1-.4 2.1-1 2.1s-1-.9-1-2.1c0-1.1.4-2.1 1-2.1s1 1 1 2.1"/><ellipse transform="matrix(.9608-.2772.2772.9608-11.8674 12.1398)" cx="37" cy="48" rx="4.5" ry="2.7"/></g><path d="M9.3,32.6L2,62h11.9c-1.6-7.7,4-21,4-21L9.3,32.6z" fill="#89664c"/><path d="m15.7 24.9c0 0 4.9-4.5 9.5-3.9 2.3.3-7.1 7.6-7.1 7.6s9.7-8.2 11.7-5.6c1.8 2.3-8.9 9.8-8.9 9.8s10-8.1 9.6-4.6c-.3 3.8-7.9 12.8-12.5 13.8-6.6 1.3-11.8-2.9-8.3-17.5 1.8-7.4 3.5.8 6 .4" fill="#ffd6bb"/><path d="M54.7,32.6L62,62H50.1c1.6-7.7-4-21-4-21L54.7,32.6z" fill="#89664c"/><path d="m48.3 24.9c0 0-4.9-4.5-9.5-3.9-2.3.3 7.1 7.6 7.1 7.6s-9.7-8.2-11.7-5.6c-1.8 2.3 8.9 9.8 8.9 9.8s-10-8.1-9.7-4.6c.4 3.8 8 12.8 12.6 13.8 6.6 1.3 11.8-2.9 8.3-17.5-1.8-7.4-3.5.8-6 .4" fill="#ffd6bb"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f649.svg b/riot/emojione/svg/1f649.svg new file mode 100644 index 0000000..ab6b684 --- /dev/null +++ b/riot/emojione/svg/1f649.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m54 27.6c0-8.6-4.7-14-11.3-16.8 1.1-.6 1.8-.9 1.8-.9-3.1-1.1-5.7-1.8-8-2.1 1.2-1 2-1.3 2-1.3-19.2-3-28.5 9.8-28.5 21.1 0 2.3.6 4.4 1.5 6.4-1 2-1.5 4.2-1.5 6.4 0 9.7 9.9 17.6 22 17.6 12.1 0 22-7.9 22-17.6 0-2.3-.6-4.4-1.5-6.4.9-2 1.5-4.2 1.5-6.4" fill="#89664c"/><path d="m51 28.2c0-17-19-6.2-19-6.2s-19-10.8-19 6.2c0 4.7 2.8 9 7.1 11.7-1.3 1.7-2 3.6-2 5.7 0 6.1 6.2 11 13.9 11 7.7 0 13.9-4.9 13.9-11 0-2.1-.7-4-2-5.7 4.3-2.7 7.1-7 7.1-11.7" fill="#e0ac7e"/><g fill="#3b302a"><path d="m35.1 38.7c0 1.1-.4 2.1-1 2.1s-1-.9-1-2.1c0-1.1.4-2.1 1-2.1s1 1 1 2.1"/><path d="m30.9 38.7c0 1.1-.4 2.1-1 2.1s-1-.9-1-2.1c0-1.1.4-2.1 1-2.1s1 1 1 2.1"/></g><g fill="#89664c"><path d="m51.1 40.5l-1.8 21.5h12.7c-4-12-2.9-22.4-2.9-22.4l-8 .9"/><path d="m12.9 40.5l1.8 21.5h-12.7c4-12 2.9-22.4 2.9-22.4l8 .9"/></g><g fill="#ffd6bb"><path d="m58.4 26.1c-1.7-4.5-4.8-8.2-6.1-6.3-1.2 1.8.1 2-.4 4-1 4.1 1.3 8.2.5 10.1-4.7 11.6 1.3 12.6 3.6 11.6 4.7-1.9 4.4-14.1 2.4-19.4"/><path d="m5.6 26.1c1.7-4.5 4.8-8.2 6.1-6.3 1.2 1.8-.1 2 .4 4 1 4.1-1.3 8.2-.5 10.1 4.7 11.6-1.3 12.6-3.6 11.6-4.7-1.9-4.4-14.1-2.4-19.4"/></g><g fill="#3b302a"><path d="m41.8 44.3c1.4 1.2-2.9 6.9-9.8 7-6.9 0-11.3-5.8-9.8-7 .4-.3 5.2.9 9.8.9 4.7 0 9.5-1.2 9.8-.9"/><ellipse cx="40.7" cy="31.3" rx="3.5" ry="4.5"/><ellipse cx="23.3" cy="31.3" rx="3.5" ry="4.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64a.svg b/riot/emojione/svg/1f64a.svg new file mode 100644 index 0000000..47df40a --- /dev/null +++ b/riot/emojione/svg/1f64a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="53.7" cy="33" rx="8.3" ry="8.2" fill="#89664c"/><ellipse cx="53.7" cy="33" rx="5.4" ry="5.4" fill="#ffc5d3"/><ellipse cx="10.2" cy="33" rx="8.2" ry="8.2" fill="#89664c"/><ellipse cx="10.2" cy="33" rx="5.4" ry="5.4" fill="#ffc5d3"/><g fill="#89664c"><path d="m43.4 10.8c1.1-.6 1.9-.9 1.9-.9-3.2-1.1-6-1.8-8.5-2.1 1.3-1 2.1-1.3 2.1-1.3-20.4-2.9-30.1 9-30.1 19.5h46.4c-.7-7.4-4.8-12.4-11.8-15.2"/><path d="m55.3 27.6c0-9.7-10.4-17.6-23.3-17.6s-23.3 7.9-23.3 17.6c0 2.3.6 4.4 1.6 6.4-1 2-1.6 4.2-1.6 6.4 0 9.7 10.4 17.6 23.3 17.6s23.3-7.9 23.3-17.6c0-2.3-.6-4.4-1.6-6.4 1-2 1.6-4.2 1.6-6.4"/></g><path d="m52 28.2c0-16.9-20-6.1-20-6.1s-20-10.8-20 6.1c0 4.7 2.9 9 7.5 11.7-1.3 1.7-2.1 3.6-2.1 5.7 0 6.1 6.6 11 14.7 11 8.1 0 14.7-4.9 14.7-11 0-2.1-.8-4-2.1-5.7 4.4-2.7 7.3-7 7.3-11.7" fill="#e0ac7e"/><g fill="#3b302a"><path d="m35.1 38.7c0 1.1-.4 2.1-1 2.1s-1-.9-1-2.1c0-1.1.4-2.1 1-2.1s1 1 1 2.1"/><path d="m30.9 38.7c0 1.1-.4 2.1-1 2.1-.6 0-1-.9-1-2.1 0-1.1.4-2.1 1-2.1.5.1 1 1 1 2.1"/><ellipse cx="40.7" cy="31.7" rx="3.5" ry="4.5"/><ellipse cx="23.3" cy="31.7" rx="3.5" ry="4.5"/></g><path fill="#89664c" d="m14.9 52l-8.3 10h12.9l4-3.6z"/><path d="m20.2 43.3c0 0 4.9-4.5 9.5-3.9 2.3.3-7.1 7.6-7.1 7.6s9.7-8.2 11.7-5.6c1.8 2.3-8.9 9.8-8.9 9.8s10-8.1 9.6-4.6c-.3 3.9-7.9 12.9-12.5 13.8-6.6 1.3-11.8-2.9-8.3-17.5 1.8-7.3 3.6.8 6 .4" fill="#ffd6bb"/><path fill="#89664c" d="M48.3 50.2 59 62 45 62 42.8 59.4z"/><path d="m38.2 43.7c0 0-6.2-2.3-10.3 0-2 1.1 9.4 4.3 9.4 4.3s-12.1-3.9-13-.8c-.8 2.9 12 5.7 12 5.7s-12.3-3.7-10.7-.5c1.8 3.4 12.2 8.9 16.8 8 6.8-1.4-1.8-17.3-4.2-16.7" fill="#ddb199"/><path d="m39.6 43.7c0 0-6.2-2.3-10.3 0-2 1.1 9.4 4.3 9.4 4.3s-12.1-3.9-13-.8c-.8 2.9 12 5.7 12 5.7s-12.3-3.7-10.7-.5c1.8 3.4 12.2 8.9 16.8 8 6.6-1.3 9.8-7.2 1-19.4-4.3-6.1-2.9 2.1-5.2 2.7" fill="#ffd6bb"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64b-1f3fb.svg b/riot/emojione/svg/1f64b-1f3fb.svg new file mode 100644 index 0000000..e9e7e3b --- /dev/null +++ b/riot/emojione/svg/1f64b-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M27,2C12.5,2,4.6,11,4.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S36.4,2,27,2z" fill="#594640"/><path d="m59.4 16.7h-7.4c0 0 8 32.4-15 32.4 0 0 0 0 0 0v-7.1h-19.9v7.1c-12.6.3-15.1 2.4-15.1 12.9h50c12.4-15 11.1-28 7.4-45.3" fill="#c28fef"/><g fill="#ffe1bd"><path d="m44.6 11.4c.5-1 2.2-1 3.9.8 1 1.1 1.4 1.5 2.2 1.6l-.3-9.1c0-.7.6-1.4 1.3-1.4.7 0 1.3.6 1.4 1.4v-1c0-.9.7-1.7 1.5-1.7.9 0 1.6.7 1.6 1.6v.7c0-.8.6-1.5 1.3-1.5.8 0 1.4.6 1.4 1.4v1.6c0-.7.5-1.4 1.2-1.4.7 0 1.3.6 1.3 1.3l.2 7c0 .1 0 .1 0 .2 0 0 .6 3.7-.3 6-1.4 3.5-9.2 4.7-11.9-1.2-.5-1.2-1.6-2-2.5-3.1-.9-1.1-2.8-2.1-2.3-3.2"/><path d="m10.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-9-16.5-16.4"/></g><path d="m27 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#e6b796"/><path d="m31.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="36.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="36.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m30.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m22.2 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="17.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m23.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m27 41.7l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#e08672"/><path d="m30 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#b86e5d"/><circle cx="17.7" cy="27.4" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64b-1f3fc.svg b/riot/emojione/svg/1f64b-1f3fc.svg new file mode 100644 index 0000000..9e6ac9c --- /dev/null +++ b/riot/emojione/svg/1f64b-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M27,2C12.5,2,4.6,11,4.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S36.4,2,27,2z" fill="#dbb471"/><path d="m59.4 16.7h-7.4c0 0 8 32.4-15 32.4 0 0 0 0 0 0v-7.1h-19.9v7.1c-12.6.3-15.1 2.4-15.1 12.9h50c12.4-15 11.1-28 7.4-45.3" fill="#c28fef"/><g fill="#fed0ac"><path d="m44.6 11.4c.5-1 2.2-1 3.9.8 1 1.1 1.4 1.5 2.2 1.6l-.3-9.1c0-.7.6-1.4 1.3-1.4.7 0 1.3.6 1.4 1.4v-1c0-.9.7-1.7 1.5-1.7.9 0 1.6.7 1.6 1.6v.7c0-.8.6-1.5 1.3-1.5.8 0 1.4.6 1.4 1.4v1.6c0-.7.5-1.4 1.2-1.4.7 0 1.3.6 1.3 1.3l.2 7c0 .1 0 .1 0 .2 0 0 .6 3.7-.3 6-1.4 3.5-9.2 4.7-11.9-1.2-.5-1.2-1.6-2-2.5-3.1-.9-1.1-2.8-2.1-2.3-3.2"/><path d="m10.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4s-16.5-9-16.5-16.4"/></g><path d="m27 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0 0 2.3-3.2 2.3" fill="#e0a372"/><path d="m31.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="36.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="36.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m30.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m22.2 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><path d="m14.3 27.4c0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.5 3.5-3.5 0-1.9-1.6-3.5-3.5-3.5-2 .1-3.5 1.6-3.5 3.5" fill="#664e27"/><path d="m23.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m27 41.7l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#e08672"/><path d="m30 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#b86e5d"/><circle cx="17.7" cy="27.4" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64b-1f3fd.svg b/riot/emojione/svg/1f64b-1f3fd.svg new file mode 100644 index 0000000..d4e4a75 --- /dev/null +++ b/riot/emojione/svg/1f64b-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M27,2C12.5,2,4.6,11,4.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S36.4,2,27,2z" fill="#594640"/><path d="m59.4 16.7h-7.4c0 0 8 32.4-15 32.4 0 0 0 0 0 0v-7.1h-19.9v7.1c-12.6.3-15.1 2.4-15.1 12.9h50c12.4-15 11.1-28 7.4-45.3" fill="#c28fef"/><g fill="#d6a57c"><path d="m44.6 11.4c.5-1 2.2-1 3.9.8 1 1.1 1.4 1.5 2.2 1.6l-.3-9.1c0-.7.6-1.4 1.3-1.4.7 0 1.3.6 1.4 1.4v-1c0-.9.7-1.7 1.5-1.7.9 0 1.6.7 1.6 1.6v.7c0-.8.6-1.5 1.3-1.5.8 0 1.4.6 1.4 1.4v1.6c0-.7.5-1.4 1.2-1.4.7 0 1.3.6 1.3 1.3l.2 7c0 .1 0 .1 0 .2 0 0 .6 3.7-.3 6-1.4 3.5-9.2 4.7-11.9-1.2-.5-1.2-1.6-2-2.5-3.1-.9-1.1-2.8-2.1-2.3-3.2"/><path d="m10.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-9-16.5-16.4"/></g><path d="m27 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#b58360"/><path d="m31.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m39.7 27.4c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.5-3.5-3.5 0-1.9 1.6-3.5 3.5-3.5 1.9.1 3.5 1.6 3.5 3.5" fill="#664e27"/><circle cx="36.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m30.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m22.2 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="17.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m23.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m27 41.7l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#b58360"/><path d="m30 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9s4.6-1.3 7.7-1.9c0 0-2.9.4-4.7-.3" fill="#805c44"/><circle cx="17.7" cy="27.4" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64b-1f3fe.svg b/riot/emojione/svg/1f64b-1f3fe.svg new file mode 100644 index 0000000..39a1150 --- /dev/null +++ b/riot/emojione/svg/1f64b-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M27,2C12.5,2,4.6,11,4.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S36.4,2,27,2z" fill="#231f20"/><path d="m59.4 16.7h-7.4c0 0 8 32.4-15 32.4 0 0 0 0 0 0v-7.1h-19.9v7.1c-12.6.3-15.1 2.4-15.1 12.9h50c12.4-15 11.1-28 7.4-45.3" fill="#c28fef"/><g fill="#b47d56"><path d="m44.6 11.4c.5-1 2.2-1 3.9.8 1 1.1 1.4 1.5 2.2 1.6l-.3-9.1c0-.7.6-1.4 1.3-1.4.7 0 1.3.6 1.4 1.4v-1c0-.9.7-1.7 1.5-1.7.9 0 1.6.7 1.6 1.6v.7c0-.8.6-1.5 1.3-1.5.8 0 1.4.6 1.4 1.4v1.6c0-.7.5-1.4 1.2-1.4.7 0 1.3.6 1.3 1.3l.2 7c0 .1 0 .1 0 .2 0 0 .6 3.7-.3 6-1.4 3.5-9.2 4.7-11.9-1.2-.5-1.2-1.6-2-2.5-3.1-.9-1.1-2.8-2.1-2.3-3.2"/><path d="m10.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-9-16.5-16.4"/></g><path d="m27 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#935e3e"/><path d="m31.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="36.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="36.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m30.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m22.2 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="17.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m23.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m27 41.7l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#935e3e"/><path d="m30 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#734c31"/><circle cx="17.7" cy="27.4" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64b-1f3ff.svg b/riot/emojione/svg/1f64b-1f3ff.svg new file mode 100644 index 0000000..f8cb017 --- /dev/null +++ b/riot/emojione/svg/1f64b-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M27,2C12.5,2,4.6,11,4.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S36.4,2,27,2z" fill="#231f20"/><path d="m59.4 16.7h-7.4c0 0 8 32.4-15 32.4 0 0 0 0 0 0v-7.1h-19.9v7.1c-12.6.3-15.1 2.4-15.1 12.9h50c12.4-15 11.1-28 7.4-45.3" fill="#c28fef"/><g fill="#8a6859"><path d="m44.6 11.4c.5-1 2.2-1 3.9.8 1 1.1 1.4 1.5 2.2 1.6l-.3-9.1c0-.7.6-1.4 1.3-1.4.7 0 1.3.6 1.4 1.4v-1c0-.9.7-1.7 1.5-1.7.9 0 1.6.7 1.6 1.6v.7c0-.8.6-1.5 1.3-1.5.8 0 1.4.6 1.4 1.4v1.6c0-.7.5-1.4 1.2-1.4.7 0 1.3.6 1.3 1.3l.2 7c0 .1 0 .1 0 .2 0 0 .6 3.7-.3 6-1.4 3.5-9.2 4.7-11.9-1.2-.5-1.2-1.6-2-2.5-3.1-.9-1.1-2.8-2.1-2.3-3.2"/><path d="m10.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6 0-16.5-9-16.5-16.4"/></g><path d="m27 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#705041"/><path d="m31.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="36.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="36.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m30.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m22.2 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="17.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m23.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m27 41.7l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#7d5442"/><path d="m30 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9 4.2 0 4.6-1.3 7.7-1.9 0 0-2.9.4-4.7-.3" fill="#5c3f34"/><circle cx="17.7" cy="27.4" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64b.svg b/riot/emojione/svg/1f64b.svg new file mode 100644 index 0000000..d221b18 --- /dev/null +++ b/riot/emojione/svg/1f64b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M27,2C12.5,2,4.6,11,4.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S36.4,2,27,2z" fill="#ffb300"/><path d="m59.4 16.7h-7.4c0 0 8 32.4-15 32.4 0 0 0 0 0 0v-7.1h-19.9v7.1c-12.6.3-15.1 2.4-15.1 12.9h50c12.4-15 11.1-28 7.4-45.3" fill="#c28fef"/><g fill="#ffdd67"><path d="m44.6 11.4c.5-1 2.2-1 3.9.8 1 1.1 1.4 1.5 2.2 1.6l-.3-9.1c0-.7.6-1.4 1.3-1.4.7 0 1.3.6 1.4 1.4v-1c0-.9.7-1.7 1.5-1.7.9 0 1.6.7 1.6 1.6v.7c0-.8.6-1.5 1.3-1.5.8 0 1.4.6 1.4 1.4v1.6c0-.7.5-1.4 1.2-1.4.7 0 1.3.6 1.3 1.3l.2 7c0 .1 0 .1 0 .2 0 0 .6 3.7-.3 6-1.4 3.5-9.2 4.7-11.9-1.2-.5-1.2-1.6-2-2.5-3.1-.9-1.1-2.8-2.1-2.3-3.2"/><path d="m10.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4s-16.5-9-16.5-16.4"/></g><path d="m27 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#eba352"/><path d="m31.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="36.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="36.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m30.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m22.2 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.1.8 8 0 8 0" fill="#f5f5f5"/><circle cx="17.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m23.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><path d="m27 41.7l-7.7-1.2c4.6 6.6 10.8 6.6 15.4 0l-7.7 1.2" fill="#f09985"/><path d="m30 40.2c-2.3-.9-3 .5-3 .5s-.8-1.4-3-.5c-1.8.7-4.7.3-4.7.3 3.1.7 3.5 1.9 7.7 1.9s4.6-1.3 7.7-1.9c0 0-2.9.4-4.7-.3" fill="#d47f6c"/><circle cx="17.7" cy="27.4" r="1.2" fill="#2b2925"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64c-1f3fb.svg b/riot/emojione/svg/1f64c-1f3fb.svg new file mode 100644 index 0000000..2bec077 --- /dev/null +++ b/riot/emojione/svg/1f64c-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4aa9ff"><path d="m27 2l5 10 5-10z"/><path d="m44.9 3l-.7 11.2 9.3-6.2z"/><path d="m10.5 8l9.4 6.2-.7-11.2z"/></g><path d="m20.4 62h-11.8v-12.9l13.8 3.2c-3.3 3.5-2 9.7-2 9.7" fill="#e6b796"/><g fill="#ffe1bd"><path d="m19.3 62h-13.2c0 0 .2-6.4-2-11.9l16.5 2.4c-1.9 4.9-1.3 9.5-1.3 9.5"/><path d="m18 44.4h5v-22.2c0-1.5-1.1-2.7-2.5-2.7-1.4 0-2.5 1.2-2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m12.1 44.4h5.9v-24.1c0-1.8-1.3-3.3-3-3.3-1.6 0-3 1.5-3 3.3v24.1z"/><path d="m7 44.4h5.2v-22.7c0-1.6-1.2-2.9-2.6-2.9-1.4 0-2.6 1.3-2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m4.6 22.2c-1.3 0-2.3 1.2-2.3 2.7v19.5h4.7v-19.5c0-1.5-1.1-2.7-2.4-2.7"/></g><g fill="#e6b796"><path d="m20.5 19.4c-.2 0-.3 0-.5 0 1.2.2 2.1 1.4 2.1 2.7v22.3h.9v-22.2c0-1.5-1.1-2.8-2.5-2.8"/><path d="m15.1 17c-.2 0-.3 0-.4.1 1.4.2 2.5 1.6 2.5 3.2v16.1l.9 1v-17.1c-.1-1.8-1.4-3.3-3-3.3"/><path d="m9.6 18.8c-.2 0-.3 0-.4 0 1.2.2 2.1 1.4 2.1 2.8v14.7l.9 1v-15.6c-.1-1.6-1.2-2.9-2.6-2.9"/><path d="m4.6 22.2c-.2 0-.3 0-.4.1 1.1.2 1.9 1.3 1.9 2.6v11.5l.9 1v-12.5c0-1.5-1.1-2.7-2.4-2.7"/></g><path d="m31.4 34.2c-1.5-1.7-4.5-.9-6.6 3.5-1.5 3-1.9 2.4-2.7 2.6v-2.7c0 0-19.9-1.3-19.9 1.7 0 0-.9 7.4 1 12 2.9 6.9 17.7 8.7 22.3-3 .9-2.3 2.2-4.8 3.2-7.3 1.3-3 4.4-4.8 2.7-6.8" fill="#ffe1bd"/><g fill="#e6b796"><path d="m30.4 33.5c3.2 2.4-2.7 7-5.5 14.1-4 10.2-15.7 10.2-20.6 5.5 4.5 5.3 17 6.3 21.2-4.8 2.8-7.2 9.6-12.7 4.9-14.8"/><path d="m23 40.2c-3.9-1.4-12.1 1.3-11 9.1 0-7.3 6.5-9 10.1-9 .5 0 .9-.1.9-.1"/><path d="m43.6 62h11.8v-12.9l-13.8 3.2c3.3 3.5 2 9.7 2 9.7"/></g><g fill="#ffe1bd"><path d="m44.7 62h13.2c0 0-.2-6.4 2-11.9l-16.5 2.4c1.9 4.9 1.3 9.5 1.3 9.5"/><path d="m46 44.4h-5v-22.2c0-1.5 1.1-2.7 2.5-2.7 1.4 0 2.5 1.2 2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m51.9 44.4h-5.9v-24.1c0-1.8 1.3-3.3 3-3.3 1.6 0 3 1.5 3 3.3v24.1z"/><path d="m57 44.4h-5.2v-22.7c0-1.6 1.2-2.9 2.6-2.9 1.4 0 2.6 1.3 2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m59.4 22.2c1.3 0 2.3 1.2 2.3 2.7v19.5h-4.7v-19.5c0-1.5 1.1-2.7 2.4-2.7"/></g><g fill="#e6b796"><path d="m43.5 19.4c.2 0 .3 0 .5 0-1.2.2-2.1 1.4-2.1 2.7v22.3h-.9v-22.2c0-1.5 1.1-2.8 2.5-2.8"/><path d="m48.9 17c.2 0 .3 0 .4.1-1.4.2-2.5 1.6-2.5 3.2v16.1l-.9 1v-17.1c.1-1.8 1.4-3.3 3-3.3"/><path d="m54.4 18.8c.2 0 .3 0 .4 0-1.2.2-2.1 1.4-2.1 2.8v14.7l-.9 1v-15.6c.1-1.6 1.2-2.9 2.6-2.9"/><path d="m59.4 22.2c.2 0 .3 0 .4.1-1.1.2-1.9 1.3-1.9 2.6v11.5l-.9 1v-12.5c0-1.5 1.1-2.7 2.4-2.7"/></g><path d="m32.6 34.2c1.5-1.7 4.5-.9 6.6 3.5 1.5 3 1.9 2.4 2.7 2.6v-2.7c0 0 19.9-1.3 19.9 1.7 0 0 .9 7.4-1 12-2.9 6.9-17.7 8.7-22.3-3-.9-2.3-2.2-4.8-3.2-7.3-1.3-3-4.4-4.8-2.7-6.8" fill="#ffe1bd"/><g fill="#e6b796"><path d="m33.6 33.5c-3.2 2.4 2.7 7 5.5 14.1 4 10.2 15.7 10.2 20.6 5.5-4.5 5.3-17 6.3-21.2-4.8-2.8-7.2-9.6-12.7-4.9-14.8"/><path d="m41 40.2c3.9-1.4 12.1 1.3 11 9.1 0-7.3-6.5-9-10.1-9-.5 0-.9-.1-.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64c-1f3fc.svg b/riot/emojione/svg/1f64c-1f3fc.svg new file mode 100644 index 0000000..f90b882 --- /dev/null +++ b/riot/emojione/svg/1f64c-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4aa9ff"><path d="m27 2l5 10 5-10z"/><path d="m44.9 3l-.7 11.2 9.3-6.2z"/><path d="m10.5 8l9.4 6.2-.7-11.2z"/></g><path d="m20.4 62h-11.8v-12.9l13.8 3.2c-3.3 3.5-2 9.7-2 9.7" fill="#e0a372"/><g fill="#fed0ac"><path d="m19.3 62h-13.2c0 0 .2-6.4-2-11.9l16.5 2.4c-1.9 4.9-1.3 9.5-1.3 9.5"/><path d="m18 44.4h5v-22.2c0-1.5-1.1-2.7-2.5-2.7-1.4 0-2.5 1.2-2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m12.1 44.4h5.9v-24.1c0-1.8-1.3-3.3-3-3.3-1.6 0-3 1.5-3 3.3.1 0 .1 24.1.1 24.1"/><path d="m7 44.4h5.2v-22.7c0-1.6-1.2-2.9-2.6-2.9-1.4 0-2.6 1.3-2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m4.6 22.2c-1.3 0-2.3 1.2-2.3 2.7v19.5h4.7v-19.5c0-1.5-1.1-2.7-2.4-2.7"/></g><g fill="#e0a372"><path d="m20.5 19.4c-.2 0-.3 0-.5 0 1.2.2 2.1 1.4 2.1 2.7v22.3h.9v-22.2c0-1.5-1.1-2.8-2.5-2.8"/><path d="m15.1 17c-.2 0-.3 0-.4.1 1.4.2 2.5 1.6 2.5 3.2v16.1l.9 1v-17.1c-.1-1.8-1.4-3.3-3-3.3"/><path d="m9.6 18.8c-.2 0-.3 0-.4 0 1.2.2 2.1 1.4 2.1 2.8v14.7l.9 1v-15.6c-.1-1.6-1.2-2.9-2.6-2.9"/><path d="m4.6 22.2c-.2 0-.3 0-.4.1 1.1.2 1.9 1.3 1.9 2.6v11.5l.9 1v-12.5c0-1.5-1.1-2.7-2.4-2.7"/></g><path d="m31.4 34.2c-1.5-1.7-4.5-.9-6.6 3.5-1.5 3-1.9 2.4-2.7 2.6v-2.7c0 0-19.9-1.3-19.9 1.7 0 0-.9 7.4 1 12 2.9 6.9 17.7 8.7 22.3-3 .9-2.3 2.2-4.8 3.2-7.3 1.3-3 4.4-4.8 2.7-6.8" fill="#fed0ac"/><g fill="#e0a372"><path d="m30.4 33.5c3.2 2.4-2.7 7-5.5 14.1-4 10.2-15.7 10.2-20.6 5.5 4.5 5.3 17 6.3 21.2-4.8 2.8-7.2 9.6-12.7 4.9-14.8"/><path d="m23 40.2c-3.9-1.4-12.1 1.3-11 9.1 0-7.3 6.5-9 10.1-9 .5 0 .9-.1.9-.1"/><path d="m43.6 62h11.8v-12.9l-13.8 3.2c3.3 3.5 2 9.7 2 9.7"/></g><g fill="#fed0ac"><path d="m44.7 62h13.2c0 0-.2-6.4 2-11.9l-16.5 2.4c1.9 4.9 1.3 9.5 1.3 9.5"/><path d="m46 44.4h-5v-22.2c0-1.5 1.1-2.7 2.5-2.7 1.4 0 2.5 1.2 2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m51.9 44.4h-5.9v-24.1c0-1.8 1.3-3.3 3-3.3 1.6 0 3 1.5 3 3.3v24.1z"/><path d="m57 44.4h-5.2v-22.7c0-1.6 1.2-2.9 2.6-2.9 1.4 0 2.6 1.3 2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m59.4 22.2c1.3 0 2.3 1.2 2.3 2.7v19.5h-4.7v-19.5c0-1.5 1.1-2.7 2.4-2.7"/></g><g fill="#e0a372"><path d="m43.5 19.4c.2 0 .3 0 .5 0-1.2.2-2.1 1.4-2.1 2.7v22.3h-.9v-22.2c0-1.5 1.1-2.8 2.5-2.8"/><path d="m48.9 17c.2 0 .3 0 .4.1-1.4.2-2.5 1.6-2.5 3.2v16.1l-.9 1v-17.1c.1-1.8 1.4-3.3 3-3.3"/><path d="m54.4 18.8c.2 0 .3 0 .4 0-1.2.2-2.1 1.4-2.1 2.8v14.7l-.9 1v-15.6c.1-1.6 1.2-2.9 2.6-2.9"/><path d="m59.4 22.2c.2 0 .3 0 .4.1-1.1.2-1.9 1.3-1.9 2.6v11.5l-.9 1v-12.5c0-1.5 1.1-2.7 2.4-2.7"/></g><path d="m32.6 34.2c1.5-1.7 4.5-.9 6.6 3.5 1.5 3 1.9 2.4 2.7 2.6v-2.7c0 0 19.9-1.3 19.9 1.7 0 0 .9 7.4-1 12-2.9 6.9-17.7 8.7-22.3-3-.9-2.3-2.2-4.8-3.2-7.3-1.3-3-4.4-4.8-2.7-6.8" fill="#fed0ac"/><g fill="#e0a372"><path d="m33.6 33.5c-3.2 2.4 2.7 7 5.5 14.1 4 10.2 15.7 10.2 20.6 5.5-4.5 5.3-17 6.3-21.2-4.8-2.8-7.2-9.6-12.7-4.9-14.8"/><path d="m41 40.2c3.9-1.4 12.1 1.3 11 9.1 0-7.3-6.5-9-10.1-9-.5 0-.9-.1-.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64c-1f3fd.svg b/riot/emojione/svg/1f64c-1f3fd.svg new file mode 100644 index 0000000..0b0ed18 --- /dev/null +++ b/riot/emojione/svg/1f64c-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4aa9ff"><path d="m27 2l5 10 5-10z"/><path d="m44.9 3l-.7 11.2 9.3-6.2z"/><path d="m10.5 8l9.4 6.2-.7-11.2z"/></g><path d="m20.4 62h-11.8v-12.9l13.8 3.2c-3.3 3.5-2 9.7-2 9.7" fill="#b58360"/><g fill="#d6a57c"><path d="m19.3 62h-13.2c0 0 .2-6.4-2-11.9l16.5 2.4c-1.9 4.9-1.3 9.5-1.3 9.5"/><path d="m18 44.4h5v-22.2c0-1.5-1.1-2.7-2.5-2.7-1.4 0-2.5 1.2-2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m12.1 44.4h5.9v-24.1c0-1.8-1.3-3.3-3-3.3-1.6 0-3 1.5-3 3.3.1 0 .1 24.1.1 24.1"/><path d="m7 44.4h5.2v-22.7c0-1.6-1.2-2.9-2.6-2.9-1.4 0-2.6 1.3-2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m4.6 22.2c-1.3 0-2.3 1.2-2.3 2.7v19.5h4.7v-19.5c0-1.5-1.1-2.7-2.4-2.7"/></g><g fill="#b58360"><path d="m20.5 19.4c-.2 0-.3 0-.5 0 1.2.2 2.1 1.4 2.1 2.7v22.3h.9v-22.2c0-1.5-1.1-2.8-2.5-2.8"/><path d="m15.1 17c-.2 0-.3 0-.4.1 1.4.2 2.5 1.6 2.5 3.2v16.1l.9 1v-17.1c-.1-1.8-1.4-3.3-3-3.3"/><path d="m9.6 18.8c-.2 0-.3 0-.4 0 1.2.2 2.1 1.4 2.1 2.8v14.7l.9 1v-15.6c-.1-1.6-1.2-2.9-2.6-2.9"/><path d="m4.6 22.2c-.2 0-.3 0-.4.1 1.1.2 1.9 1.3 1.9 2.6v11.5l.9 1v-12.5c0-1.5-1.1-2.7-2.4-2.7"/></g><path d="m31.4 34.2c-1.5-1.7-4.5-.9-6.6 3.5-1.5 3-1.9 2.4-2.7 2.6v-2.7c0 0-19.9-1.3-19.9 1.7 0 0-.9 7.4 1 12 2.9 6.9 17.7 8.7 22.3-3 .9-2.3 2.2-4.8 3.2-7.3 1.3-3 4.4-4.8 2.7-6.8" fill="#d6a57c"/><g fill="#b58360"><path d="m30.4 33.5c3.2 2.4-2.7 7-5.5 14.1-4 10.2-15.7 10.2-20.6 5.5 4.5 5.3 17 6.3 21.2-4.8 2.8-7.2 9.6-12.7 4.9-14.8"/><path d="m23 40.2c-3.9-1.4-12.1 1.3-11 9.1 0-7.3 6.5-9 10.1-9 .5 0 .9-.1.9-.1"/><path d="m43.6 62h11.8v-12.9l-13.8 3.2c3.3 3.5 2 9.7 2 9.7"/></g><g fill="#d6a57c"><path d="m44.7 62h13.2c0 0-.2-6.4 2-11.9l-16.5 2.4c1.9 4.9 1.3 9.5 1.3 9.5"/><path d="m46 44.4h-5v-22.2c0-1.5 1.1-2.7 2.5-2.7 1.4 0 2.5 1.2 2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m51.9 44.4h-5.9v-24.1c0-1.8 1.3-3.3 3-3.3 1.6 0 3 1.5 3 3.3v24.1z"/><path d="m57 44.4h-5.2v-22.7c0-1.6 1.2-2.9 2.6-2.9 1.4 0 2.6 1.3 2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m59.4 22.2c1.3 0 2.3 1.2 2.3 2.7v19.5h-4.7v-19.5c0-1.5 1.1-2.7 2.4-2.7"/></g><g fill="#b58360"><path d="m43.5 19.4c.2 0 .3 0 .5 0-1.2.2-2.1 1.4-2.1 2.7v22.3h-.9v-22.2c0-1.5 1.1-2.8 2.5-2.8"/><path d="m48.9 17c.2 0 .3 0 .4.1-1.4.2-2.5 1.6-2.5 3.2v16.1l-.9 1v-17.1c.1-1.8 1.4-3.3 3-3.3"/><path d="m54.4 18.8c.2 0 .3 0 .4 0-1.2.2-2.1 1.4-2.1 2.8v14.7l-.9 1v-15.6c.1-1.6 1.2-2.9 2.6-2.9"/><path d="m59.4 22.2c.2 0 .3 0 .4.1-1.1.2-1.9 1.3-1.9 2.6v11.5l-.9 1v-12.5c0-1.5 1.1-2.7 2.4-2.7"/></g><path d="m32.6 34.2c1.5-1.7 4.5-.9 6.6 3.5 1.5 3 1.9 2.4 2.7 2.6v-2.7c0 0 19.9-1.3 19.9 1.7 0 0 .9 7.4-1 12-2.9 6.9-17.7 8.7-22.3-3-.9-2.3-2.2-4.8-3.2-7.3-1.3-3-4.4-4.8-2.7-6.8" fill="#d6a57c"/><g fill="#b58360"><path d="m33.6 33.5c-3.2 2.4 2.7 7 5.5 14.1 4 10.2 15.7 10.2 20.6 5.5-4.5 5.3-17 6.3-21.2-4.8-2.8-7.2-9.6-12.7-4.9-14.8"/><path d="m41 40.2c3.9-1.4 12.1 1.3 11 9.1 0-7.3-6.5-9-10.1-9-.5 0-.9-.1-.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64c-1f3fe.svg b/riot/emojione/svg/1f64c-1f3fe.svg new file mode 100644 index 0000000..4137080 --- /dev/null +++ b/riot/emojione/svg/1f64c-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4aa9ff"><path d="m27 2l5 10 5-10z"/><path d="m44.9 3l-.7 11.2 9.3-6.2z"/><path d="m10.5 8l9.4 6.2-.7-11.2z"/></g><path d="m20.4 62h-11.8v-12.9l13.8 3.2c-3.3 3.5-2 9.7-2 9.7" fill="#935e3e"/><g fill="#b47d56"><path d="m19.3 62h-13.2c0 0 .2-6.4-2-11.9l16.5 2.4c-1.9 4.9-1.3 9.5-1.3 9.5"/><path d="m18 44.4h5v-22.2c0-1.5-1.1-2.7-2.5-2.7-1.4 0-2.5 1.2-2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m12.1 44.4h5.9v-24.1c0-1.8-1.3-3.3-3-3.3-1.6 0-3 1.5-3 3.3.1 0 .1 24.1.1 24.1"/><path d="m7 44.4h5.2v-22.7c0-1.6-1.2-2.9-2.6-2.9-1.4 0-2.6 1.3-2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m4.6 22.2c-1.3 0-2.3 1.2-2.3 2.7v19.5h4.7v-19.5c0-1.5-1.1-2.7-2.4-2.7"/></g><g fill="#935e3e"><path d="m20.5 19.4c-.2 0-.3 0-.5 0 1.2.2 2.1 1.4 2.1 2.7v22.3h.9v-22.2c0-1.5-1.1-2.8-2.5-2.8"/><path d="m15.1 17c-.2 0-.3 0-.4.1 1.4.2 2.5 1.6 2.5 3.2v16.1l.9 1v-17.1c-.1-1.8-1.4-3.3-3-3.3"/><path d="m9.6 18.8c-.2 0-.3 0-.4 0 1.2.2 2.1 1.4 2.1 2.8v14.7l.9 1v-15.6c-.1-1.6-1.2-2.9-2.6-2.9"/><path d="m4.6 22.2c-.2 0-.3 0-.4.1 1.1.2 1.9 1.3 1.9 2.6v11.5l.9 1v-12.5c0-1.5-1.1-2.7-2.4-2.7"/></g><path d="m31.4 34.2c-1.5-1.7-4.5-.9-6.6 3.5-1.5 3-1.9 2.4-2.7 2.6v-2.7c0 0-19.9-1.3-19.9 1.7 0 0-.9 7.4 1 12 2.9 6.9 17.7 8.7 22.3-3 .9-2.3 2.2-4.8 3.2-7.3 1.3-3 4.4-4.8 2.7-6.8" fill="#b47d56"/><g fill="#935e3e"><path d="m30.4 33.5c3.2 2.4-2.7 7-5.5 14.1-4 10.2-15.7 10.2-20.6 5.5 4.5 5.3 17 6.3 21.2-4.8 2.8-7.2 9.6-12.7 4.9-14.8"/><path d="m23 40.2c-3.9-1.4-12.1 1.3-11 9.1 0-7.3 6.5-9 10.1-9 .5 0 .9-.1.9-.1"/><path d="m43.6 62h11.8v-12.9l-13.8 3.2c3.3 3.5 2 9.7 2 9.7"/></g><g fill="#b47d56"><path d="m44.7 62h13.2c0 0-.2-6.4 2-11.9l-16.5 2.4c1.9 4.9 1.3 9.5 1.3 9.5"/><path d="m46 44.4h-5v-22.2c0-1.5 1.1-2.7 2.5-2.7 1.4 0 2.5 1.2 2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m51.9 44.4h-5.9v-24.1c0-1.8 1.3-3.3 3-3.3 1.6 0 3 1.5 3 3.3v24.1z"/><path d="m57 44.4h-5.2v-22.7c0-1.6 1.2-2.9 2.6-2.9 1.4 0 2.6 1.3 2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m59.4 22.2c1.3 0 2.3 1.2 2.3 2.7v19.5h-4.7v-19.5c0-1.5 1.1-2.7 2.4-2.7"/></g><g fill="#935e3e"><path d="m43.5 19.4c.2 0 .3 0 .5 0-1.2.2-2.1 1.4-2.1 2.7v22.3h-.9v-22.2c0-1.5 1.1-2.8 2.5-2.8"/><path d="m48.9 17c.2 0 .3 0 .4.1-1.4.2-2.5 1.6-2.5 3.2v16.1l-.9 1v-17.1c.1-1.8 1.4-3.3 3-3.3"/><path d="m54.4 18.8c.2 0 .3 0 .4 0-1.2.2-2.1 1.4-2.1 2.8v14.7l-.9 1v-15.6c.1-1.6 1.2-2.9 2.6-2.9"/><path d="m59.4 22.2c.2 0 .3 0 .4.1-1.1.2-1.9 1.3-1.9 2.6v11.5l-.9 1v-12.5c0-1.5 1.1-2.7 2.4-2.7"/></g><path d="m32.6 34.2c1.5-1.7 4.5-.9 6.6 3.5 1.5 3 1.9 2.4 2.7 2.6v-2.7c0 0 19.9-1.3 19.9 1.7 0 0 .9 7.4-1 12-2.9 6.9-17.7 8.7-22.3-3-.9-2.3-2.2-4.8-3.2-7.3-1.3-3-4.4-4.8-2.7-6.8" fill="#b47d56"/><g fill="#935e3e"><path d="m33.6 33.5c-3.2 2.4 2.7 7 5.5 14.1 4 10.2 15.7 10.2 20.6 5.5-4.5 5.3-17 6.3-21.2-4.8-2.8-7.2-9.6-12.7-4.9-14.8"/><path d="m41 40.2c3.9-1.4 12.1 1.3 11 9.1 0-7.3-6.5-9-10.1-9-.5 0-.9-.1-.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64c-1f3ff.svg b/riot/emojione/svg/1f64c-1f3ff.svg new file mode 100644 index 0000000..e13a1d7 --- /dev/null +++ b/riot/emojione/svg/1f64c-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4aa9ff"><path d="m27 2l5 10 5-10z"/><path d="m44.9 3l-.7 11.2 9.3-6.2z"/><path d="m10.5 8l9.4 6.2-.7-11.2z"/></g><path d="m20.4 62h-11.8v-12.9l13.8 3.2c-3.3 3.5-2 9.7-2 9.7" fill="#705041"/><g fill="#8a6859"><path d="m19.3 62h-13.2c0 0 .2-6.4-2-11.9l16.5 2.4c-1.9 4.9-1.3 9.5-1.3 9.5"/><path d="m18 44.4h5v-22.2c0-1.5-1.1-2.7-2.5-2.7-1.4 0-2.5 1.2-2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m12.1 44.4h5.9v-24.1c0-1.8-1.3-3.3-3-3.3-1.6 0-3 1.5-3 3.3.1 0 .1 24.1.1 24.1"/><path d="m7 44.4h5.2v-22.7c0-1.6-1.2-2.9-2.6-2.9-1.4 0-2.6 1.3-2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m4.6 22.2c-1.3 0-2.3 1.2-2.3 2.7v19.5h4.7v-19.5c0-1.5-1.1-2.7-2.4-2.7"/></g><g fill="#705041"><path d="m20.5 19.4c-.2 0-.3 0-.5 0 1.2.2 2.1 1.4 2.1 2.7v22.3h.9v-22.2c0-1.5-1.1-2.8-2.5-2.8"/><path d="m15.1 17c-.2 0-.3 0-.4.1 1.4.2 2.5 1.6 2.5 3.2v16.1l.9 1v-17.1c-.1-1.8-1.4-3.3-3-3.3"/><path d="m9.6 18.8c-.2 0-.3 0-.4 0 1.2.2 2.1 1.4 2.1 2.8v14.7l.9 1v-15.6c-.1-1.6-1.2-2.9-2.6-2.9"/><path d="m4.6 22.2c-.2 0-.3 0-.4.1 1.1.2 1.9 1.3 1.9 2.6v11.5l.9 1v-12.5c0-1.5-1.1-2.7-2.4-2.7"/></g><path d="m31.4 34.2c-1.5-1.7-4.5-.9-6.6 3.5-1.5 3-1.9 2.4-2.7 2.6v-2.7c0 0-19.9-1.3-19.9 1.7 0 0-.9 7.4 1 12 2.9 6.9 17.7 8.7 22.3-3 .9-2.3 2.2-4.8 3.2-7.3 1.3-3 4.4-4.8 2.7-6.8" fill="#8a6859"/><g fill="#705041"><path d="m30.4 33.5c3.2 2.4-2.7 7-5.5 14.1-4 10.2-15.7 10.2-20.6 5.5 4.5 5.3 17 6.3 21.2-4.8 2.8-7.2 9.6-12.7 4.9-14.8"/><path d="m23 40.2c-3.9-1.4-12.1 1.3-11 9.1 0-7.3 6.5-9 10.1-9 .5 0 .9-.1.9-.1"/><path d="m43.6 62h11.8v-12.9l-13.8 3.2c3.3 3.5 2 9.7 2 9.7"/></g><g fill="#8a6859"><path d="m44.7 62h13.2c0 0-.2-6.4 2-11.9l-16.5 2.4c1.9 4.9 1.3 9.5 1.3 9.5"/><path d="m46 44.4h-5v-22.2c0-1.5 1.1-2.7 2.5-2.7 1.4 0 2.5 1.2 2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m51.9 44.4h-5.9v-24.1c0-1.8 1.3-3.3 3-3.3 1.6 0 3 1.5 3 3.3v24.1z"/><path d="m57 44.4h-5.2v-22.7c0-1.6 1.2-2.9 2.6-2.9 1.4 0 2.6 1.3 2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m59.4 22.2c1.3 0 2.3 1.2 2.3 2.7v19.5h-4.7v-19.5c0-1.5 1.1-2.7 2.4-2.7"/></g><g fill="#705041"><path d="m43.5 19.4c.2 0 .3 0 .5 0-1.2.2-2.1 1.4-2.1 2.7v22.3h-.9v-22.2c0-1.5 1.1-2.8 2.5-2.8"/><path d="m48.9 17c.2 0 .3 0 .4.1-1.4.2-2.5 1.6-2.5 3.2v16.1l-.9 1v-17.1c.1-1.8 1.4-3.3 3-3.3"/><path d="m54.4 18.8c.2 0 .3 0 .4 0-1.2.2-2.1 1.4-2.1 2.8v14.7l-.9 1v-15.6c.1-1.6 1.2-2.9 2.6-2.9"/><path d="m59.4 22.2c.2 0 .3 0 .4.1-1.1.2-1.9 1.3-1.9 2.6v11.5l-.9 1v-12.5c0-1.5 1.1-2.7 2.4-2.7"/></g><path d="m32.6 34.2c1.5-1.7 4.5-.9 6.6 3.5 1.5 3 1.9 2.4 2.7 2.6v-2.7c0 0 19.9-1.3 19.9 1.7 0 0 .9 7.4-1 12-2.9 6.9-17.7 8.7-22.3-3-.9-2.3-2.2-4.8-3.2-7.3-1.3-3-4.4-4.8-2.7-6.8" fill="#8a6859"/><g fill="#705041"><path d="m33.6 33.5c-3.2 2.4 2.7 7 5.5 14.1 4 10.2 15.7 10.2 20.6 5.5-4.5 5.3-17 6.3-21.2-4.8-2.8-7.2-9.6-12.7-4.9-14.8"/><path d="m41 40.2c3.9-1.4 12.1 1.3 11 9.1 0-7.3-6.5-9-10.1-9-.5 0-.9-.1-.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64c.svg b/riot/emojione/svg/1f64c.svg new file mode 100644 index 0000000..0f7f86c --- /dev/null +++ b/riot/emojione/svg/1f64c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4aa9ff"><path d="m27 2l5 10 5-10z"/><path d="m44.9 3l-.7 11.2 9.3-6.2z"/><path d="m10.5 8l9.4 6.2-.7-11.2z"/></g><path d="m20.4 62h-11.8v-12.9l13.8 3.2c-3.3 3.5-2 9.7-2 9.7" fill="#eba352"/><g fill="#ffdd67"><path d="m19.3 62h-13.2c0 0 .2-6.4-2-11.9l16.5 2.4c-1.9 4.9-1.3 9.5-1.3 9.5"/><path d="m18 44.4h5v-22.2c0-1.5-1.1-2.7-2.5-2.7-1.4 0-2.5 1.2-2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m12.1 44.4h5.9v-24.1c0-1.8-1.3-3.3-3-3.3-1.6 0-3 1.5-3 3.3v24.1z"/><path d="m7 44.4h5.2v-22.7c0-1.6-1.2-2.9-2.6-2.9-1.4 0-2.6 1.3-2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m4.6 22.2c-1.3 0-2.3 1.2-2.3 2.7v19.5h4.7v-19.5c0-1.5-1.1-2.7-2.4-2.7"/></g><g fill="#eba352"><path d="m20.5 19.4c-.2 0-.3 0-.5 0 1.2.2 2.1 1.4 2.1 2.7v22.3h.9v-22.2c0-1.5-1.1-2.8-2.5-2.8"/><path d="m15.1 17c-.2 0-.3 0-.4.1 1.4.2 2.5 1.6 2.5 3.2v16.1l.9 1v-17.1c-.1-1.8-1.4-3.3-3-3.3"/><path d="m9.6 18.8c-.2 0-.3 0-.4 0 1.2.2 2.1 1.4 2.1 2.8v14.7l.9 1v-15.6c-.1-1.6-1.2-2.9-2.6-2.9"/><path d="m4.6 22.2c-.2 0-.3 0-.4.1 1.1.2 1.9 1.3 1.9 2.6v11.5l.9 1v-12.5c0-1.5-1.1-2.7-2.4-2.7"/></g><path d="m31.4 34.2c-1.5-1.7-4.5-.9-6.6 3.5-1.5 3-1.9 2.4-2.7 2.6v-2.7c0 0-19.9-1.3-19.9 1.7 0 0-.9 7.4 1 12 2.9 6.9 17.7 8.7 22.3-3 .9-2.3 2.2-4.8 3.2-7.3 1.3-3 4.4-4.8 2.7-6.8" fill="#ffdd67"/><g fill="#eba352"><path d="m30.4 33.5c3.2 2.4-2.7 7-5.5 14.1-4 10.2-15.7 10.2-20.6 5.5 4.5 5.3 17 6.3 21.2-4.8 2.8-7.2 9.6-12.7 4.9-14.8"/><path d="m23 40.2c-3.9-1.4-12.1 1.3-11 9.1 0-7.3 6.5-9 10.1-9 .5 0 .9-.1.9-.1"/><path d="m43.6 62h11.8v-12.9l-13.8 3.2c3.3 3.5 2 9.7 2 9.7"/></g><g fill="#ffdd67"><path d="m44.7 62h13.2c0 0-.2-6.4 2-11.9l-16.5 2.4c1.9 4.9 1.3 9.5 1.3 9.5"/><path d="m46 44.4h-5v-22.2c0-1.5 1.1-2.7 2.5-2.7 1.4 0 2.5 1.2 2.5 2.8 0-.1 0 22.1 0 22.1"/><path d="m51.9 44.4h-5.9v-24.1c0-1.8 1.3-3.3 3-3.3 1.6 0 3 1.5 3 3.3v24.1z"/><path d="m57 44.4h-5.2v-22.7c0-1.6 1.2-2.9 2.6-2.9 1.4 0 2.6 1.3 2.6 2.9 0 0 0 22.7 0 22.7"/><path d="m59.4 22.2c1.3 0 2.3 1.2 2.3 2.7v19.5h-4.7v-19.5c0-1.5 1.1-2.7 2.4-2.7"/></g><g fill="#eba352"><path d="m43.5 19.4c.2 0 .3 0 .5 0-1.2.2-2.1 1.4-2.1 2.7v22.3h-.9v-22.2c0-1.5 1.1-2.8 2.5-2.8"/><path d="m48.9 17c.2 0 .3 0 .4.1-1.4.2-2.5 1.6-2.5 3.2v16.1l-.9 1v-17.1c.1-1.8 1.4-3.3 3-3.3"/><path d="m54.4 18.8c.2 0 .3 0 .4 0-1.2.2-2.1 1.4-2.1 2.8v14.7l-.9 1v-15.6c.1-1.6 1.2-2.9 2.6-2.9"/><path d="m59.4 22.2c.2 0 .3 0 .4.1-1.1.2-1.9 1.3-1.9 2.6v11.5l-.9 1v-12.5c0-1.5 1.1-2.7 2.4-2.7"/></g><path d="m32.6 34.2c1.5-1.7 4.5-.9 6.6 3.5 1.5 3 1.9 2.4 2.7 2.6v-2.7c0 0 19.9-1.3 19.9 1.7 0 0 .9 7.4-1 12-2.9 6.9-17.7 8.7-22.3-3-.9-2.3-2.2-4.8-3.2-7.3-1.3-3-4.4-4.8-2.7-6.8" fill="#ffdd67"/><g fill="#eba352"><path d="m33.6 33.5c-3.2 2.4 2.7 7 5.5 14.1 4 10.2 15.7 10.2 20.6 5.5-4.5 5.3-17 6.3-21.2-4.8-2.8-7.2-9.6-12.7-4.9-14.8"/><path d="m41 40.2c3.9-1.4 12.1 1.3 11 9.1 0-7.3-6.5-9-10.1-9-.5 0-.9-.1-.9-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64d-1f3fb.svg b/riot/emojione/svg/1f64d-1f3fb.svg new file mode 100644 index 0000000..7a858ef --- /dev/null +++ b/riot/emojione/svg/1f64d-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#594640"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.8 32.9c0 0-3.3-.8-3.3-5.7 0-3.8 2.5-4.5 2.5-4.5 8.8 0 23.2-11.5 23.2-11.5s5.4 10.1 10.7 11.5c0 0 2.5.5 2.5 4.5 0 4.8-3.4 5.7-3.4 5.7 0 7.3-10 16.1-16 16.1-6.1 0-16.2-8.8-16.2-16.1" fill="#ffe1bd"/><path d="m26 43c-.1-.1-.2-.2-.2-.3 0-.8 2.7-1.7 6.1-1.7s6.1.9 6.1 1.7c0 .1-.1.2-.1.3 0 0-2.7-.7-6-.7-3.3 0-5.9.7-5.9.7" fill="#664e27"/><g fill="#fff"><path d="m45.4 28.4c0 2.8-2.2 4.9-4.9 4.9-2.7 0-4.9-2.2-4.9-4.9 0-2.7 9.8-2.7 9.8 0"/><path d="m18.6 28.1c0 2.8 2.2 4.9 4.9 4.9 2.7 0 4.9-2.2 4.9-4.9 0-2.7-9.8-2.7-9.8 0"/></g><circle cx="23.5" cy="29.9" r="3.1" fill="#664e27"/><circle cx="23.5" cy="29.9" r="1" fill="#231f20"/><circle cx="40.5" cy="30.2" r="3.1" fill="#664e27"/><g fill="#231f20"><circle cx="40.5" cy="30.2" r="1"/><path d="m17.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/><path d="m34.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/></g><path d="m32 39c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#e6b796"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64d-1f3fc.svg b/riot/emojione/svg/1f64d-1f3fc.svg new file mode 100644 index 0000000..10458b1 --- /dev/null +++ b/riot/emojione/svg/1f64d-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#dbb471"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.8 32.9c0 0-3.3-.8-3.3-5.7 0-3.8 2.5-4.5 2.5-4.5 8.8 0 23.2-11.5 23.2-11.5s5.4 10.1 10.7 11.5c0 0 2.5.5 2.5 4.5 0 4.8-3.4 5.7-3.4 5.7 0 7.3-10 16.1-16 16.1-6.1 0-16.2-8.8-16.2-16.1" fill="#fed0ac"/><path d="m26 43c-.1-.1-.2-.2-.2-.3 0-.8 2.7-1.7 6.1-1.7s6.1.9 6.1 1.7c0 .1-.1.2-.1.3 0 0-2.7-.7-6-.7-3.3 0-5.9.7-5.9.7" fill="#664e27"/><g fill="#fff"><path d="m45.4 28.4c0 2.8-2.2 4.9-4.9 4.9-2.7 0-4.9-2.2-4.9-4.9 0-2.7 9.8-2.7 9.8 0"/><path d="m18.6 28.1c0 2.8 2.2 4.9 4.9 4.9 2.7 0 4.9-2.2 4.9-4.9 0-2.7-9.8-2.7-9.8 0"/></g><circle cx="23.5" cy="29.9" r="3.1" fill="#664e27"/><circle cx="23.5" cy="29.9" r="1" fill="#231f20"/><circle cx="40.5" cy="30.2" r="3.1" fill="#664e27"/><g fill="#231f20"><circle cx="40.5" cy="30.2" r="1"/><path d="m17.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/><path d="m34.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/></g><path d="m32 39c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#e0a372"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64d-1f3fd.svg b/riot/emojione/svg/1f64d-1f3fd.svg new file mode 100644 index 0000000..f9842d0 --- /dev/null +++ b/riot/emojione/svg/1f64d-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#594640"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.8 32.9c0 0-3.3-.8-3.3-5.7 0-3.8 2.5-4.5 2.5-4.5 8.8 0 23.2-11.5 23.2-11.5s5.4 10.1 10.7 11.5c0 0 2.5.5 2.5 4.5 0 4.8-3.4 5.7-3.4 5.7 0 7.3-10 16.1-16 16.1-6.1 0-16.2-8.8-16.2-16.1" fill="#d6a57c"/><path d="m26 43c-.1-.1-.2-.2-.2-.3 0-.8 2.7-1.7 6.1-1.7 3.4 0 6.1.9 6.1 1.7 0 .1-.1.2-.1.3 0 0-2.7-.7-6-.7-3.3 0-5.9.7-5.9.7" fill="#664e27"/><g fill="#fff"><path d="m45.4 28.4c0 2.8-2.2 4.9-4.9 4.9-2.7 0-4.9-2.2-4.9-4.9 0-2.7 9.8-2.7 9.8 0"/><path d="m18.6 28.1c0 2.8 2.2 4.9 4.9 4.9 2.7 0 4.9-2.2 4.9-4.9 0-2.7-9.8-2.7-9.8 0"/></g><circle cx="23.5" cy="29.9" r="3.1" fill="#664e27"/><circle cx="23.5" cy="29.9" r="1" fill="#231f20"/><circle cx="40.5" cy="30.2" r="3.1" fill="#664e27"/><g fill="#231f20"><circle cx="40.5" cy="30.2" r="1"/><path d="m17.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/><path d="m34.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/></g><path d="m32 39c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#b58360"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64d-1f3fe.svg b/riot/emojione/svg/1f64d-1f3fe.svg new file mode 100644 index 0000000..57de38b --- /dev/null +++ b/riot/emojione/svg/1f64d-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#231f20"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.8 32.9c0 0-3.3-.8-3.3-5.7 0-3.8 2.5-4.5 2.5-4.5 8.8 0 23.2-11.5 23.2-11.5s5.4 10.1 10.7 11.5c0 0 2.5.5 2.5 4.5 0 4.8-3.4 5.7-3.4 5.7 0 7.3-10 16.1-16 16.1-6.1 0-16.2-8.8-16.2-16.1" fill="#b47d56"/><path d="m26 43c-.1-.1-.2-.2-.2-.3 0-.8 2.7-1.7 6.1-1.7s6.1.9 6.1 1.7c0 .1-.1.2-.1.3 0 0-2.7-.7-6-.7-3.3 0-5.9.7-5.9.7" fill="#664e27"/><g fill="#fff"><path d="m45.4 28.4c0 2.8-2.2 4.9-4.9 4.9-2.7 0-4.9-2.2-4.9-4.9 0-2.7 9.8-2.7 9.8 0"/><path d="m18.6 28.1c0 2.8 2.2 4.9 4.9 4.9 2.7 0 4.9-2.2 4.9-4.9 0-2.7-9.8-2.7-9.8 0"/></g><circle cx="23.5" cy="29.9" r="3.1" fill="#664e27"/><circle cx="23.5" cy="29.9" r="1" fill="#231f20"/><circle cx="40.5" cy="30.2" r="3.1" fill="#664e27"/><g fill="#231f20"><circle cx="40.5" cy="30.2" r="1"/><path d="m17.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/><path d="m34.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/></g><path d="m32 39c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#935e3e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64d-1f3ff.svg b/riot/emojione/svg/1f64d-1f3ff.svg new file mode 100644 index 0000000..64af62a --- /dev/null +++ b/riot/emojione/svg/1f64d-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#231f20"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.8 32.9c0 0-3.3-.8-3.3-5.7 0-3.8 2.5-4.5 2.5-4.5 8.8 0 23.2-11.5 23.2-11.5s5.4 10.1 10.7 11.5c0 0 2.5.5 2.5 4.5 0 4.8-3.4 5.7-3.4 5.7 0 7.3-10 16.1-16 16.1-6.1 0-16.2-8.8-16.2-16.1" fill="#8a6859"/><path d="m26 43c-.1-.1-.2-.2-.2-.3 0-.8 2.7-1.7 6.1-1.7s6.1.9 6.1 1.7c0 .1-.1.2-.1.3 0 0-2.7-.7-6-.7-3.3 0-5.9.7-5.9.7" fill="#574137"/><g fill="#fff"><path d="m45.4 28.4c0 2.8-2.2 4.9-4.9 4.9-2.7 0-4.9-2.2-4.9-4.9 0-2.7 9.8-2.7 9.8 0"/><path d="m18.6 28.1c0 2.8 2.2 4.9 4.9 4.9 2.7 0 4.9-2.2 4.9-4.9 0-2.7-9.8-2.7-9.8 0"/></g><circle cx="23.5" cy="29.9" r="3.1" fill="#664e27"/><circle cx="23.5" cy="29.9" r="1" fill="#231f20"/><circle cx="40.5" cy="30.2" r="3.1" fill="#664e27"/><g fill="#231f20"><circle cx="40.5" cy="30.2" r="1"/><path d="m17.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/><path d="m34.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/></g><path d="m32 39c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#705041"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64d.svg b/riot/emojione/svg/1f64d.svg new file mode 100644 index 0000000..6309a63 --- /dev/null +++ b/riot/emojione/svg/1f64d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#ffb300"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.8 32.9c0 0-3.3-.8-3.3-5.7 0-3.8 2.5-4.5 2.5-4.5 8.8 0 23.2-11.5 23.2-11.5s5.4 10.1 10.7 11.5c0 0 2.5.5 2.5 4.5 0 4.8-3.4 5.7-3.4 5.7 0 7.3-10 16.1-16 16.1-6.1 0-16.2-8.8-16.2-16.1" fill="#ffdd67"/><path d="m26 43c-.1-.1-.2-.2-.2-.3 0-.8 2.7-1.7 6.1-1.7s6.1.9 6.1 1.7c0 .1-.1.2-.1.3 0 0-2.7-.7-6-.7-3.3 0-5.9.7-5.9.7" fill="#937237"/><g fill="#fff"><path d="m45.4 28.4c0 2.8-2.2 4.9-4.9 4.9-2.7 0-4.9-2.2-4.9-4.9 0-2.7 9.8-2.7 9.8 0"/><path d="m18.6 28.1c0 2.8 2.2 4.9 4.9 4.9 2.7 0 4.9-2.2 4.9-4.9 0-2.7-9.8-2.7-9.8 0"/></g><circle cx="23.5" cy="29.9" r="3.1" fill="#664e27"/><circle cx="23.5" cy="29.9" r="1" fill="#231f20"/><circle cx="40.5" cy="30.2" r="3.1" fill="#664e27"/><g fill="#231f20"><circle cx="40.5" cy="30.2" r="1"/><path d="m17.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/><path d="m34.2 28.2c-.1-.1-.2-.2-.2-.3 0-.8 2.9-1.8 6.5-1.8 3.6 0 6.5 1 6.5 1.8 0 .1-.1.2-.2.3 0 0-2.8-.7-6.3-.7-3.5 0-6.3.7-6.3.7"/></g><path d="m32 39c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64e-1f3fb.svg b/riot/emojione/svg/1f64e-1f3fb.svg new file mode 100644 index 0000000..8d869fd --- /dev/null +++ b/riot/emojione/svg/1f64e-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#594640"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#ffe1bd"/><path d="m32 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#e6b796"/><path d="m36.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m35.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m28.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.4" r="1.2" fill="#2b2925"/><circle cx="32" cy="43.5" r="3" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64e-1f3fc.svg b/riot/emojione/svg/1f64e-1f3fc.svg new file mode 100644 index 0000000..2dfd81c --- /dev/null +++ b/riot/emojione/svg/1f64e-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#dbb471"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#fed0ac"/><path d="m32 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#e0a372"/><path d="m36.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m35.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><path d="m19.3 27.4c0 1.9 1.5 3.5 3.5 3.5 1.9 0 3.5-1.5 3.5-3.5s-1.7-3.4-3.6-3.4c-1.9 0-3.4 1.5-3.4 3.4" fill="#664e27"/><path d="m28.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.4" r="1.2" fill="#2b2925"/><circle cx="32" cy="43.5" r="3" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64e-1f3fd.svg b/riot/emojione/svg/1f64e-1f3fd.svg new file mode 100644 index 0000000..7cf16e6 --- /dev/null +++ b/riot/emojione/svg/1f64e-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#594640"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#d6a57c"/><path d="m32 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#b58360"/><path d="m36.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><path d="m44.7 27.4c0 1.9-1.5 3.5-3.5 3.5-1.9 0-3.5-1.5-3.5-3.5s1.6-3.5 3.5-3.5c1.9.1 3.5 1.6 3.5 3.5" fill="#664e27"/><circle cx="41.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m35.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m28.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.4" r="1.2" fill="#2b2925"/><circle cx="32" cy="43.5" r="3" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64e-1f3fe.svg b/riot/emojione/svg/1f64e-1f3fe.svg new file mode 100644 index 0000000..84d91ba --- /dev/null +++ b/riot/emojione/svg/1f64e-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#231f20"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#b47d56"/><path d="m32 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#935e3e"/><path d="m36.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m35.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m28.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.4" r="1.2" fill="#2b2925"/><circle cx="32" cy="43.5" r="3" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64e-1f3ff.svg b/riot/emojione/svg/1f64e-1f3ff.svg new file mode 100644 index 0000000..00882dd --- /dev/null +++ b/riot/emojione/svg/1f64e-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#231f20"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4s-16.5-9-16.5-16.4" fill="#8a6859"/><path d="m32 37.8c-3.2 0-4.8-2.3-3.2-2.3s4.8 0 6.4 0c1.6 0 0 2.3-3.2 2.3" fill="#705041"/><path d="m36.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m35.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m28.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.4" r="1.2" fill="#2b2925"/><circle cx="32" cy="43.5" r="3" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64e.svg b/riot/emojione/svg/1f64e.svg new file mode 100644 index 0000000..b23b544 --- /dev/null +++ b/riot/emojione/svg/1f64e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2C17.5,2,9.6,11,9.6,22.9V60h44.8V22.9c0-17.7-12.1-17.4-12.1-17.4S41.4,2,32,2z" fill="#ffb300"/><path d="m42 49.1v-7.1h-20v7.1c-12.5.3-15 2.4-15 12.9h50c0-10.5-2.5-12.6-15-12.9" fill="#b386e2"/><path d="m15.3 33c0 0-3.4-.9-3.4-5.8 0-3.9 2.5-4.6 2.5-4.6 9.1 0 25.9-11.7 25.9-11.7s3.5 10.3 8.9 11.7c0 0 2.6.5 2.6 4.6 0 4.9-3.5 5.8-3.5 5.8 0 7.4-10.3 16.4-16.5 16.4-6.1 0-16.5-9-16.5-16.4" fill="#ffdd67"/><path d="m32 37.8c-3.2 0-4.8-2.3-3.2-2.3 1.6 0 4.8 0 6.4 0 1.6 0 0 2.3-3.2 2.3" fill="#eba352"/><path d="m36.8 31c-1.1 0-1-1.4-1-1.4 1.7-8.8 11.5-4.1 11.5-4.1.8 1.5-1.8 5.3-2.5 5.5-3.2.8-8 0-8 0" fill="#f5f5f5"/><circle cx="41.2" cy="27.4" r="3.5" fill="#664e27"/><circle cx="41.2" cy="27.4" r="1.2" fill="#2b2925"/><path d="m35.8 29.6c1.7-10.5 10.4-3.5 13.8-5-3.4 3.3-10.3-3.8-13.8 5" fill="#3b3226"/><path d="m27.1 31c1.1 0 1-1.4 1-1.4-1.7-8.8-11.5-4.1-11.5-4.1-.8 1.5 1.8 5.3 2.5 5.5 3.2.8 8 0 8 0" fill="#f5f5f5"/><circle cx="22.7" cy="27.4" r="3.5" fill="#664e27"/><path d="m28.1 29.6c-1.7-10.5-10.4-3.5-13.8-5 3.4 3.3 10.4-3.8 13.8 5" fill="#3b3226"/><circle cx="22.7" cy="27.4" r="1.2" fill="#2b2925"/><circle cx="32" cy="43.5" r="3" fill="#937237"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64f-1f3fb.svg b/riot/emojione/svg/1f64f-1f3fb.svg new file mode 100644 index 0000000..eddfe82 --- /dev/null +++ b/riot/emojione/svg/1f64f-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M21.4,29c-3.8,14.7-5.5,27.7,2.8,27.7c8.8,0,7.9-13,7.9-28S32.5,2,28,2C23.1,2,25.1,14.7,21.4,29z" fill="#f2d2ac"/><path d="m21.5 47.3c9.6 0 9.9-4.7 9.9-19.6 0-11.6.3-21.4-1.9-25.1 3.3 2.5 2.8 13.2 2.8 26.2 0 14.9 3.5 28-6.1 28-2.1-.1-6.2-9.5-4.7-9.5" fill="#e6b796"/><path d="M36,2c-4.6,0-4.2,11.9-4.2,26.8s-0.8,28,7.9,28c8.3,0,6.6-13.1,2.8-27.7C38.9,14.7,40.9,2,36,2z" fill="#f2d2ac"/><path d="m37.8 56.7c-9.6 0-6.1-13.1-6.1-28 0-13-.4-23.7 2.8-26.2-2.2 3.7-1.9 13.5-1.9 25.1 0 14.9.2 19.6 9.9 19.6 1.5.1-2.6 9.5-4.7 9.5" fill="#e6b796"/><path d="m13.1 47.7l7.6 13.3 8.6-4.5-10.3-16.5c0 0-2.6 6.4-5.9 7.7" fill="#f2d2ac"/><path d="m20.9 38.2c-1 1.6-1.4 8.9-6.1 10.8l5.5 11.2c0 0 6.1-1.5 8.5-3 6.7-4.1-.9-9 3-18.1 2.2-5.1-1.8-17.1-6.6-17.1-4.8 0-2.6 6.9-3 8.7-.6 2.1-.4 4.8-1.3 7.5" fill="#ffe1bd"/><path d="m28.5 56.4c6.7-4.1-1.6-9 2.3-18 1.7-4-.5-12.5-3.8-15.8 3.9 2.5 6.9 11.9 4.9 16.5-4 9 4.5 13.8-2.4 18-.5.3-4.3 2-8.7 3.9l-.7-1.3c4.8-1.4 8-3.1 8.4-3.3" fill="#e6b796"/><path d="M45,40L34.7,56.5l8.6,4.5l7.6-13.2C47.6,46.4,45,40,45,40z" fill="#f2d2ac"/><path d="m41.9 30.6c-.5-1.8 1.8-8.7-3-8.7-4.9.1-8.9 12.1-6.7 17.2 3.9 9.1-3.7 14 3 18.1 2.4 1.5 8.5 3 8.5 3l5.5-11.2c-4.7-2-5.1-9.2-6.1-10.8-.9-2.7-.7-5.4-1.2-7.6" fill="#ffe1bd"/><path d="m43.9 59.7l-.6 1.3c-4.4-1.9-8.2-3.6-8.7-3.9-6.9-4.3 1.6-9-2.4-18-2-4.6 1-14.1 4.9-16.5-3.4 3.3-5.6 11.7-3.8 15.8 3.9 9.1-4.4 13.9 2.3 18 .3.2 3.5 1.9 8.3 3.3" fill="#e6b796"/><g fill="#47b892"><path d="M2,55.3V62h22.2c2.5-4.8-11.6-15.6-11.6-15.6L2,55.3z"/><path d="M51.4,46.4c0,0-14.1,10.8-11.6,15.6H62v-6.7L51.4,46.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64f-1f3fc.svg b/riot/emojione/svg/1f64f-1f3fc.svg new file mode 100644 index 0000000..0501179 --- /dev/null +++ b/riot/emojione/svg/1f64f-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M21.4,29c-3.8,14.7-5.5,27.7,2.8,27.7c8.8,0,7.9-13,7.9-28S32.5,2,28,2C23.1,2,25.1,14.7,21.4,29z" fill="#f2c19b"/><path d="m21.5 47.3c9.6 0 9.9-4.7 9.9-19.6 0-11.6.3-21.4-1.9-25.1 3.3 2.5 2.8 13.2 2.8 26.2 0 14.9 3.5 28-6.1 28-2.1-.1-6.2-9.5-4.7-9.5" fill="#e0a372"/><path d="M36,2c-4.6,0-4.2,11.9-4.2,26.8s-0.8,28,7.9,28c8.3,0,6.6-13.1,2.8-27.7C38.9,14.7,40.9,2,36,2z" fill="#f2c19b"/><path d="m37.8 56.7c-9.6 0-6.1-13.1-6.1-28 0-13-.4-23.7 2.8-26.2-2.2 3.7-1.9 13.5-1.9 25.1 0 14.9.2 19.6 9.9 19.6 1.5.1-2.6 9.5-4.7 9.5" fill="#e0a372"/><path d="m13.1 47.7l7.6 13.3 8.6-4.5-10.3-16.5c0 0-2.6 6.4-5.9 7.7" fill="#f2c19b"/><path d="m20.9 38.2c-1 1.6-1.4 8.9-6.1 10.8l5.5 11.2c0 0 6.1-1.5 8.5-3 6.7-4.1-.9-9 3-18.1 2.2-5.1-1.8-17.1-6.6-17.1-4.8 0-2.6 6.9-3 8.7-.6 2.1-.4 4.8-1.3 7.5" fill="#fed0ac"/><path d="m28.5 56.4c6.7-4.1-1.6-9 2.3-18 1.7-4-.5-12.5-3.8-15.8 3.9 2.5 6.9 11.9 4.9 16.5-4 9 4.5 13.8-2.4 18-.5.3-4.3 2-8.7 3.9l-.7-1.3c4.8-1.4 8-3.1 8.4-3.3" fill="#e0a372"/><path d="M45,40L34.7,56.5l8.6,4.5l7.6-13.2C47.6,46.4,45,40,45,40z" fill="#f2c19b"/><path d="m41.9 30.6c-.5-1.8 1.8-8.7-3-8.7-4.8 0-8.8 12-6.6 17.1 3.9 9.1-3.7 14 3 18.1 2.4 1.5 8.5 3 8.5 3l5.4-11.1c-4.7-2-5.1-9.2-6.1-10.8-.9-2.7-.7-5.4-1.2-7.6" fill="#fed0ac"/><path d="m43.9 59.7l-.6 1.3c-4.4-1.9-8.2-3.6-8.7-3.9-6.9-4.3 1.6-9-2.4-18-2-4.6 1-14.1 4.9-16.5-3.4 3.3-5.6 11.7-3.8 15.8 3.9 9.1-4.4 13.9 2.3 18 .3.2 3.5 1.9 8.3 3.3" fill="#e0a372"/><g fill="#47b892"><path d="M2,55.3V62h22.2c2.5-4.8-11.6-15.6-11.6-15.6L2,55.3z"/><path d="M51.4,46.4c0,0-14.1,10.8-11.6,15.6H62v-6.7L51.4,46.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64f-1f3fd.svg b/riot/emojione/svg/1f64f-1f3fd.svg new file mode 100644 index 0000000..40c74cf --- /dev/null +++ b/riot/emojione/svg/1f64f-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M21.4,29c-3.8,14.7-5.5,27.7,2.8,27.7c8.8,0,7.9-13,7.9-28S32.5,2,28,2C23.1,2,25.1,14.7,21.4,29z" fill="#cc996e"/><path d="m21.5 47.3c9.6 0 9.9-4.7 9.9-19.6 0-11.6.3-21.4-1.9-25.1 3.3 2.5 2.8 13.2 2.8 26.2 0 14.9 3.5 28-6.1 28-2.1-.1-6.2-9.5-4.7-9.5" fill="#b58360"/><path d="M36,2c-4.6,0-4.2,11.9-4.2,26.8s-0.8,28,7.9,28c8.3,0,6.6-13.1,2.8-27.7C38.9,14.7,40.9,2,36,2z" fill="#cc996e"/><path d="m37.8 56.7c-9.6 0-6.1-13.1-6.1-28 0-13-.4-23.7 2.9-26.2-2.2 3.7-1.9 13.5-1.9 25.1 0 14.9.2 19.6 9.9 19.6 1.4.1-2.7 9.5-4.8 9.5" fill="#b58360"/><path d="m13.1 47.7l7.6 13.3 8.6-4.5-10.3-16.5c0 0-2.6 6.4-5.9 7.7" fill="#cc996e"/><path d="m20.9 38.2c-1 1.6-1.4 8.9-6.1 10.8l5.5 11.2c0 0 6.1-1.5 8.5-3 6.7-4.1-.9-9 3-18.1 2.2-5.1-1.8-17.1-6.6-17.1-4.8 0-2.6 6.9-3 8.7-.6 2.1-.4 4.8-1.3 7.5" fill="#d6a57c"/><path d="m28.5 56.4c6.7-4.1-1.6-9 2.3-18 1.7-4-.5-12.5-3.8-15.8 3.9 2.5 6.9 11.9 4.9 16.5-4 9 4.5 13.8-2.4 18-.5.3-4.3 2-8.7 3.9l-.7-1.3c4.8-1.4 8-3.1 8.4-3.3" fill="#b58360"/><path d="M45,40L34.7,56.5l8.6,4.5l7.6-13.2C47.6,46.4,45,40,45,40z" fill="#cc996e"/><path d="m41.9 30.6c-.5-1.8 1.8-8.7-3-8.7-4.8 0-8.8 12-6.6 17.1 3.9 9.1-3.7 14 3 18.1 2.4 1.5 8.5 3 8.5 3l5.4-11.1c-4.7-2-5.1-9.2-6.1-10.8-.9-2.7-.7-5.4-1.2-7.6" fill="#d6a57c"/><path d="m43.9 59.7l-.6 1.3c-4.4-1.9-8.2-3.6-8.7-3.9-6.9-4.3 1.6-9-2.4-18-2-4.6 1-14.1 4.9-16.5-3.4 3.3-5.6 11.7-3.8 15.8 3.9 9.1-4.4 13.9 2.3 18 .3.2 3.5 1.9 8.3 3.3" fill="#b58360"/><g fill="#47b892"><path d="M2,55.3V62h22.2c2.5-4.8-11.6-15.6-11.6-15.6L2,55.3z"/><path d="M51.4,46.4c0,0-14.1,10.8-11.6,15.6H62v-6.7L51.4,46.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64f-1f3fe.svg b/riot/emojione/svg/1f64f-1f3fe.svg new file mode 100644 index 0000000..1e8149f --- /dev/null +++ b/riot/emojione/svg/1f64f-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M21.4,29c-3.8,14.7-5.5,27.7,2.8,27.7c8.8,0,7.9-13,7.9-28S32.5,2,28,2C23.1,2,25.1,14.7,21.4,29z" fill="#a37352"/><path d="m21.5 47.3c9.6 0 9.9-4.7 9.9-19.6 0-11.6.3-21.4-1.9-25.1 3.3 2.5 2.8 13.2 2.8 26.2 0 14.9 3.5 28-6.1 28-2.1-.1-6.2-9.5-4.7-9.5" fill="#935e3e"/><path d="M36,2c-4.6,0-4.2,11.9-4.2,26.8s-0.8,28,7.9,28c8.3,0,6.6-13.1,2.8-27.7C38.9,14.7,40.9,2,36,2z" fill="#a37352"/><path d="m37.8 56.7c-9.6 0-6.1-13.1-6.1-28 0-13-.4-23.7 2.8-26.2-2.2 3.7-1.9 13.5-1.9 25.1 0 14.9.2 19.6 9.9 19.6 1.5.1-2.6 9.5-4.7 9.5" fill="#935e3e"/><path d="m13.1 47.7l7.6 13.3 8.6-4.5-10.3-16.5c0 0-2.6 6.4-5.9 7.7" fill="#a37352"/><path d="m20.9 38.2c-1 1.6-1.4 8.9-6.1 10.8l5.5 11.2c0 0 6.1-1.5 8.5-3 6.7-4.1-.9-9 3-18.1 2.2-5.1-1.8-17.1-6.6-17.1-4.8 0-2.6 6.9-3 8.7-.6 2.1-.4 4.8-1.3 7.5" fill="#b47d56"/><path d="m28.5 56.4c6.7-4.1-1.6-9 2.3-18 1.7-4-.5-12.5-3.8-15.8 3.9 2.5 6.9 11.9 4.9 16.5-4 9 4.5 13.8-2.4 18-.5.3-4.3 2-8.7 3.9l-.7-1.3c4.8-1.4 8-3.1 8.4-3.3" fill="#935e3e"/><path d="M45,40L34.7,56.5l8.6,4.5l7.6-13.2C47.6,46.4,45,40,45,40z" fill="#a37352"/><path d="m41.9 30.6c-.5-1.8 1.8-8.7-3-8.7-4.9.1-8.9 12.1-6.7 17.2 3.9 9.1-3.7 14 3 18.1 2.4 1.5 8.5 3 8.5 3l5.5-11.2c-4.7-2-5.1-9.2-6.1-10.8-.9-2.7-.7-5.4-1.2-7.6" fill="#b47d56"/><path d="m43.9 59.7l-.6 1.3c-4.4-1.9-8.2-3.6-8.7-3.9-6.9-4.3 1.6-9-2.4-18-2-4.6 1-14.1 4.9-16.5-3.4 3.3-5.6 11.7-3.8 15.8 3.9 9.1-4.4 13.9 2.3 18 .3.2 3.5 1.9 8.3 3.3" fill="#935e3e"/><g fill="#47b892"><path d="M2,55.3V62h22.2c2.5-4.8-11.6-15.6-11.6-15.6L2,55.3z"/><path d="M51.4,46.4c0,0-14.1,10.8-11.6,15.6H62v-6.7L51.4,46.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64f-1f3ff.svg b/riot/emojione/svg/1f64f-1f3ff.svg new file mode 100644 index 0000000..3c7a1b6 --- /dev/null +++ b/riot/emojione/svg/1f64f-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M21.4,29c-3.8,14.7-5.5,27.7,2.8,27.7c8.8,0,7.9-13,7.9-28S32.5,2,28,2C23.1,2,25.1,14.7,21.4,29z" fill="#805b4c"/><path d="m21.5 47.3c9.6 0 9.9-4.7 9.9-19.6 0-11.6.3-21.4-1.9-25.1 3.3 2.5 2.9 13.2 2.9 26.2 0 14.9 3.5 28-6.1 28-2.2-.1-6.3-9.5-4.8-9.5" fill="#705041"/><path d="M36,2c-4.6,0-4.2,11.9-4.2,26.8s-0.8,28,7.9,28c8.3,0,6.6-13.1,2.8-27.7C38.9,14.7,40.9,2,36,2z" fill="#805b4c"/><path d="m37.8 56.7c-9.6 0-6.1-13.1-6.1-28 0-13-.4-23.7 2.9-26.2-2.2 3.7-1.9 13.5-1.9 25.1 0 14.9.2 19.6 9.9 19.6 1.4.1-2.7 9.5-4.8 9.5" fill="#705041"/><path d="m13.1 47.7l7.6 13.3 8.6-4.5-10.3-16.5c0 0-2.6 6.4-5.9 7.7" fill="#805b4c"/><path d="m20.9 38.2c-1 1.6-1.4 8.9-6.1 10.8l5.5 11.2c0 0 6.1-1.5 8.5-3 6.7-4.1-.9-9 3-18.1 2.2-5.1-1.8-17.1-6.6-17.1-4.8 0-2.6 6.9-3 8.7-.6 2.1-.4 4.8-1.3 7.5" fill="#8a6859"/><path d="m28.5 56.4c6.7-4.1-1.6-9 2.3-18 1.7-4-.5-12.5-3.8-15.8 3.9 2.5 6.9 11.9 4.9 16.5-4 9 4.5 13.8-2.4 18-.5.3-4.3 2-8.7 3.9l-.7-1.3c4.8-1.4 8-3.1 8.4-3.3" fill="#705041"/><path d="M45,40L34.7,56.5l8.6,4.5l7.6-13.2C47.6,46.4,45,40,45,40z" fill="#805b4c"/><path d="m41.9 30.6c-.5-1.8 1.8-8.7-3-8.7-4.8 0-8.8 12-6.6 17.1 3.9 9.1-3.7 14 3 18.1 2.4 1.5 8.5 3 8.5 3l5.4-11.1c-4.7-2-5.1-9.2-6.1-10.8-.9-2.7-.7-5.4-1.2-7.6" fill="#8a6859"/><path d="m43.9 59.7l-.6 1.3c-4.4-1.9-8.2-3.6-8.7-3.9-6.9-4.3 1.6-9-2.4-18-2-4.6 1-14.1 4.9-16.5-3.4 3.3-5.6 11.7-3.8 15.8 3.9 9.1-4.4 13.9 2.3 18 .3.2 3.5 1.9 8.3 3.3" fill="#705041"/><g fill="#47b892"><path d="M2,55.3V62h22.2c2.5-4.8-11.6-15.6-11.6-15.6L2,55.3z"/><path d="M51.4,46.4c0,0-14.1,10.8-11.6,15.6H62v-6.7L51.4,46.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f64f.svg b/riot/emojione/svg/1f64f.svg new file mode 100644 index 0000000..a6b0bca --- /dev/null +++ b/riot/emojione/svg/1f64f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M21.4,29c-3.8,14.7-5.5,27.7,2.8,27.7c8.8,0,7.9-13,7.9-28S32.5,2,28,2C23.1,2,25.1,14.7,21.4,29z" fill="#ffc95c"/><path d="m21.5 47.3c9.6 0 9.9-4.7 9.9-19.6 0-11.6.3-21.4-1.9-25.1 3.3 2.5 2.8 13.2 2.8 26.2 0 14.9 3.5 28-6.1 28-2.1-.1-6.2-9.5-4.7-9.5" fill="#eba352"/><path d="M36,2c-4.6,0-4.2,11.9-4.2,26.8s-0.8,28,7.9,28c8.3,0,6.6-13.1,2.8-27.7C38.9,14.7,40.9,2,36,2z" fill="#ffc95c"/><path d="m37.8 56.7c-9.6 0-6.1-13.1-6.1-28 0-13-.4-23.7 2.8-26.2-2.2 3.7-1.9 13.5-1.9 25.1 0 14.9.2 19.6 9.9 19.6 1.5.1-2.6 9.5-4.7 9.5" fill="#eba352"/><path d="m13.1 47.7l7.6 13.3 8.6-4.5-10.3-16.5c0 0-2.6 6.4-5.9 7.7" fill="#ffc95c"/><path d="m20.9 38.2c-1 1.6-1.4 8.9-6.1 10.8l5.5 11.2c0 0 6.1-1.5 8.5-3 6.7-4.1-.9-9 3-18.1 2.2-5.1-1.8-17.1-6.6-17.1-4.8 0-2.6 6.9-3 8.7-.6 2.1-.4 4.8-1.3 7.5" fill="#ffdd67"/><path d="m28.5 56.4c6.7-4.1-1.6-9 2.3-18 1.7-4-.5-12.5-3.8-15.8 3.9 2.5 6.9 11.9 4.9 16.5-4 9 4.5 13.8-2.4 18-.5.3-4.3 2-8.7 3.9l-.7-1.3c4.8-1.4 8-3.1 8.4-3.3" fill="#eba352"/><path d="M45,40L34.7,56.5l8.6,4.5l7.6-13.2C47.6,46.4,45,40,45,40z" fill="#ffc95c"/><path d="m41.9 30.6c-.5-1.8 1.8-8.7-3-8.7-4.9.1-8.9 12.1-6.7 17.2 3.9 9.1-3.7 14 3 18.1 2.4 1.5 8.5 3 8.5 3l5.5-11.2c-4.7-2-5.1-9.2-6.1-10.8-.9-2.7-.7-5.4-1.2-7.6" fill="#ffdd67"/><path d="m43.9 59.7l-.6 1.3c-4.4-1.9-8.2-3.6-8.7-3.9-6.9-4.3 1.6-9-2.4-18-2-4.6 1-14.1 4.9-16.5-3.4 3.3-5.6 11.7-3.8 15.8 3.9 9.1-4.4 13.9 2.3 18 .3.2 3.5 1.9 8.3 3.3" fill="#eba352"/><g fill="#47b892"><path d="M2,55.3V62h22.2c2.5-4.8-11.6-15.6-11.6-15.6L2,55.3z"/><path d="M51.4,46.4c0,0-14.1,10.8-11.6,15.6H62v-6.7L51.4,46.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f680.svg b/riot/emojione/svg/1f680.svg new file mode 100644 index 0000000..4ba418a --- /dev/null +++ b/riot/emojione/svg/1f680.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff9d27"><path d="m10.9 48.7c4-4 4.4-5 6.9-2.5 2.5 2.5 1.5 2.8-2.5 6.9-3 3-6.8 2.4-6.8 2.4s-.6-3.8 2.4-6.8"/><path d="m18.5 52.8c1.6-4.2 2.1-4.7-.2-6-2.3-1.3-2.3-.4-3.8 3.8-1.2 3.1.2 5.9.2 5.9s2.7-.5 3.8-3.7"/></g><path d="m16.2 48.9c.9-2.3.9-2.8 2.1-2.1 1.3.7 1 1 .1 3.3-.6 1.7-2.1 2.1-2.1 2.1s-.7-1.5-.1-3.3" fill="#fdf516"/><path d="m17.1 45.7c-1.3-2.3-1.8-1.8-6-.2-3.1 1.2-3.7 3.8-3.7 3.8s2.8 1.4 5.9.2c4.2-1.6 5.1-1.6 3.8-3.8" fill="#ff9d27"/><g fill="#fdf516"><path d="m15 47.8c2.3-.9 2.8-.9 2.1-2.1-.7-1.3-1-1-3.3-.1-1.7.6-2.1 2.1-2.1 2.1s1.6.7 3.3.1"/><path d="m13.9 47.6c2.2-2.2 2.4-2.8 3.8-1.4 1.4 1.4.8 1.6-1.4 3.8-1.7 1.7-3.8 1.3-3.8 1.3s-.2-2 1.4-3.7"/></g><path d="M18.5,38C12.3,27.6,2,31.9,2,31.9s14.7-14.7,24.6-4.8L18.5,38z" fill="#3baacf"/><path d="m23.3 30.3l3.2-3.2c-9.8-9.9-24.5 4.8-24.5 4.8s12.9-9.2 21.3-1.6" fill="#428bc1"/><path d="M26,45.5C36.4,51.7,32.1,62,32.1,62s14.7-14.7,4.8-24.6L26,45.5z" fill="#3baacf"/><path d="m33.7 40.7l3.2-3.2c9.9 9.9-4.8 24.6-4.8 24.6s9.2-13 1.6-21.4" fill="#428bc1"/><path d="m48.8 30.9c-11.7 11.6-24.6 17.9-29.1 13.4-4.5-4.5 1.8-17.4 13.4-29.1 13.6-13.6 28.7-13 28.7-13s.5 15.1-13 28.7" fill="#c5d0d8"/><path d="M45.8,27.6C34.2,39.2,22.6,46.8,19.9,44.1c-2.7-2.7,4.9-14.3,16.5-25.9C50,4.6,62,2,62,2S59.4,14,45.8,27.6z" fill="#dae3ea"/><path d="m24.3 47.5c-.5.5-1.3.5-1.8 0l-6-6c-.5-.5-.5-1.4 0-1.9l1.8-1.8 7.8 7.8-1.8 1.9" fill="#c94747"/><path d="m22.6 45.7c-.5.5-1.1.7-1.4.4l-3.4-3.4c-.3-.3-.1-.9.4-1.4l1.8-1.8 4.4 4.4-1.8 1.8" fill="#f15744"/><path d="m20.9 48.2c-.3.3-1 .3-1.3 0l-3.9-3.9c-.3-.3-.2-.9.1-1.2l1.2-1.2 5.1 5.1-1.2 1.2" fill="#3e4347"/><path d="m20.1 47.4c-.3.3-.9.4-1.1.2l-2.7-2.7c-.2-.2-.1-.7.3-1l1.2-1.2 3.5 3.5-1.2 1.2" fill="#62727a"/><path d="m61.8 2.2c0 0-5.4-.2-12.7 2.6l10.1 10.1c2.8-7.3 2.6-12.7 2.6-12.7" fill="#c94747"/><path d="m61.8 2.2c0 0-4.3.9-10.8 4.6l6.2 6.2c3.7-6.5 4.6-10.8 4.6-10.8" fill="#f15744"/><circle cx="43.5" cy="20.5" r="5" fill="#edf4f9"/><circle cx="43.5" cy="20.5" r="3.3" fill="#3baacf"/><circle cx="33.5" cy="30.5" r="5" fill="#edf4f9"/><circle cx="33.5" cy="30.5" r="3.3" fill="#3baacf"/><g fill="#fff"><path d="m48.9 6.9c-.3.3-.9.3-1.2 0-.3-.3-.3-.9 0-1.2.3-.3.9-.3 1.2 0 .3.3.3.9 0 1.2"/><circle cx="50.6" cy="8.6" r=".8"/><circle cx="53" cy="11" r=".8"/><circle cx="55.3" cy="13.4" r=".8"/><circle cx="57.7" cy="15.7" r=".8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f681.svg b/riot/emojione/svg/1f681.svg new file mode 100644 index 0000000..fa2ce38 --- /dev/null +++ b/riot/emojione/svg/1f681.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m46 20.4c-2 0-3.9-1-4.7-1.9-.8-.9-2.6-1.9-4.7-1.9h-14.9c-10.1 0-17.6 9.9-17.6 26.4 0 2.4 2.6 3.6 4.6 3.6h20.5c2 0 4.8-1.3 6.1-2.8 0 0 4.7-5.6 6.3-7.4 2.3-2.6 5.4-7.5 9.1-7.5h5.6v-8.4c.1-.1-7.7-.1-10.3-.1" fill="#ffce31"/><g fill="#3e4347"><path d="m32 31.2c0 .5-.4.9-.9.9h-3.8c-.5 0-.9-.4-.9-.9v-11.7c0-.5.4-.9.9-.9h3.8c.5 0 .9.4.9.9v11.7"/><path d="m22.6 18.5c-13.4 0-14.8 13.6-14.8 13.6h14.9c1 0 1.9-.8 1.9-1.9v-9.9c-.1.1-.1-1.8-2-1.8"/></g><path d="m60.5 14.8c-1.9 0-7.9 5.6-7.9 5.6v8.4l2.6 1.6c.8.7 1.8.4 2.1-.5 0 0 3.4-9.9 4.6-13.2.3-1.1-.3-1.9-1.4-1.9" fill="#ffce31"/><path d="m36.7 54.1h-5.7c-.1-3.5-.8-7.7-3.7-10.4-1-.9-2.6.4-1.6 1.3 2.3 2.1 2.9 6.1 3 9.1h-16c.1-3.1.7-7 3-9.1 1-.9-.6-2.2-1.6-1.3-2.9 2.7-3.6 6.9-3.7 10.4h-2.8c0 0-3.7.2-4.7-3.9h-.9c0 0 0 6.3 5.6 6.3 0 0 0 0 .1 0h29.1c.5 0 .9-.8.9-1.3-.1-.4-.5-1.1-1-1.1" fill="#62727a"/><path d="m35.9 40.3c1-1.1 2.2-2.6 3.2-3.8h-32.6c0 0-.4 2.1-.4 3.8h29.8" fill="#fff"/><path d="m58.6 28.2l-4-3.2c-.7-.6-1.8-1.7-2.4-2.4l-3.2-4c-.6-.7-1.7-.7-2.4 0-.7.7-.7 1.8 0 2.4l4 3.2c.7.6 1.8 1.7 2.4 2.4l3.2 4c.6.7 1.7.7 2.4 0 .8-.7.8-1.8 0-2.4" fill="#62727a"/><g fill="#b2c1c0"><circle cx="52.6" cy="24.7" r="1.9"/><path d="m28.7 15c-.1-.7-.7-1.2-1.3-1.2h-3.9c-.6 0-1.1.5-1.3 1.2l-.5 1.6h7.5l-.5-1.6"/></g><path d="m48.9 14.6c0 1.1-.8 1.8-1.8 1.5 0 0-11.3-3.5-21.6-3.5-11.2 0-21.6 3.5-21.6 3.5-1 .3-1.8-.3-1.8-1.4 0-1.1.8-2.2 1.9-2.3 0 0 10.3-1.7 21.6-1.7 10.3 0 21.6 1.7 21.6 1.7.8.1 1.7 1.1 1.7 2.2" fill="#62727a"/><g fill="#b2c1c0"><path d="m24.5 9.1h1.9v5.1h-1.9z"/><path d="m27.3 8.4c0 .5-.4.9-.9.9h-1.9c-.5 0-.9-.4-.9-.9 0-.5.4-.9.9-.9h1.9c.5 0 .9.4.9.9"/></g><path d="m27.3 12c0 .5-.4.9-.9.9h-1.9c-.5 0-.9-.4-.9-.9v-1c0-.5.4-.9.9-.9h1.9c.5 0 .9.4.9.9v1" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f682.svg b/riot/emojione/svg/1f682.svg new file mode 100644 index 0000000..829f6e2 --- /dev/null +++ b/riot/emojione/svg/1f682.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="#dae3ea"><circle cx="24.4" cy="12.1" r="3.9"/><circle cx="28.7" cy="10.2" r="4.8"/><circle cx="20" cy="14.2" r="1.9"/><circle cx="35.6" cy="10.3" r="5.8"/><circle cx="42.8" cy="8.8" r="6.8"/></g><g fill="#b2c1c0"><path d="m46.5 10c-.2.6-.6 1.1-1 1.6-.5.5-1 .8-1.7 1.1-1.3.5-2.8.4-4-.1l1-.2c-.6.4-1.1.7-1.7.9-.6.2-1.2.4-1.8.4-1.3 0-2.5-.5-3.2-1.4 1.1.2 2.1.2 3-.1.4-.1.9-.3 1.3-.6.4-.2.8-.5 1.1-.7l.5-.4.6.2c1 .4 1.9.5 2.9.4.5-.1 1-.2 1.5-.4.4-.1.9-.4 1.5-.7"/><path d="m33.5 10.9c-.2 1-1.1 1.9-2.2 2.2-1.1.3-2.3.1-3.3-.3l1.3-.4c-.3.5-.7.8-1.1 1.1-.4.3-.9.5-1.4.5-1 .1-2-.3-2.5-1 .5 0 .8-.1 1.2-.2.4-.1.6-.2.9-.4.3-.2.5-.3.7-.5.2-.2.4-.5.5-.6l.5-.8.8.3c.8.3 1.5.6 2.3.6.6.3 1.4.1 2.3-.5"/></g><path fill="#83bf4f" d="m37.6 15.1h24.4v3.9h-24.4z"/><path fill="#699635" d="m58.2 19v12.8h-16.8v-12.8h-1.9v26.8h20.6v-26.8z"/><g fill="#3e4347"><path d="m58.2 31.8v-12.8h-16.8v12.8h16.8m-7.4-11.2h5.6v9.4h-5.6v-9.4m-7.6 0h5.6v9.4h-5.6v-9.4"/><path d="m13.2 53.7h10.9v4.4h-10.9z"/><path d="m13.2 49.8h41.7v4.6h-41.7z"/></g><g fill="#75a843"><path d="m12.3 30.1h27.2v19.7h-27.2z"/><path d="m14.2 39.5c0 6.7-2.1 10.3-4.7 10.3-2.6 0-4.7-10.3-4.7-10.3s2.1-9.4 4.7-9.4 4.7 2.7 4.7 9.4"/></g><path d="m9.8 32.5c-.9 1.2-2.2 2.7-3.1 7h5.6c0-5.6-1.6-6.3-2.5-7" fill="#83bf4f"/><path fill="#699635" d="m9.5 28.2h6.6v22.5h-6.6z"/><path fill="#ed4c5c" d="m6.7 49.8l-4.7 11.3h11.2v-11.3z"/><g fill="#fff"><path d="m9.4 51.7c.2 0 .3.4.3.9l-.7 5.7c-.1.5-.5.9-.9.9-.5 0-.7-.4-.6-.9l1.4-5.7c0-.5.3-.9.5-.9"/><path d="m6.9 52.6c.2-.5.4-.9.5-.9.1 0 .1.4 0 .9l-1.4 5.7c-.1.5-.5.9-.9.9-.4 0-.6-.4-.4-.9l2.2-5.7"/><path d="m11.9 58.2c0 .5-.3.9-.8.9-.4 0-.7-.4-.7-.9l.7-5.6c.1-.5.3-.9.4-.9s.3.4.3.9l.1 5.6"/></g><path fill="#83bf4f" d="m11.4 30.1h2.8v9.4h-2.8z"/><path fill="#3e4347" d="m16.1 15.1l1.8 3.8v11.2h9.4v-11.2l1.9-3.8z"/><path fill="#94989b" d="m24.5 17l-.9 1.9v11.2h1.8v-11.2l1-1.9z"/><path d="M16.1,39.5h23.4V32H16.1V39.5z" fill="#83bf4f"/><g fill="#3e4347"><path d="m54.2 44.2h-8.8v-.8c0-1-.6-1.8-1.3-1.8h-.8v-5.1h.8c.7 0 1.3-.8 1.3-1.8v-.8h8.8v.8c0 1 .6 1.8 1.3 1.8h.8v5.1h-.8c-.7 0-1.3.8-1.3 1.8v.8m-7.2-1.6h5.7c.2-1.2 1-2.2 2.1-2.5v-2.1c-1-.3-1.8-1.3-2.1-2.5h-5.7c-.2 1.2-1 2.2-2.1 2.5v2.1c1 .3 1.8 1.3 2.1 2.5"/><path d="m52.1 46.7c-4.2 0-7.6 3.4-7.6 7.6 0 4.2 3.4 7.6 7.6 7.6 4.2 0 7.6-3.4 7.6-7.6 0-4.1-3.4-7.6-7.6-7.6m0 13.8c-3.4 0-6.1-2.7-6.1-6.1 0-3.4 2.7-6.1 6.1-6.1 3.4 0 6.1 2.7 6.1 6.1 0 3.3-2.7 6.1-6.1 6.1"/></g><circle cx="52.1" cy="54.4" r="1.5" fill="#699635"/><path fill="#ed4c5c" d="m51.3 49.4h1.5v9.9h-1.5z" id="0"/><path transform="matrix(.8662-.4996.4996.8662-20.1927 33.3032)" fill="#ed4c5c" d="m47.1 53.6h9.9v1.5h-9.9z"/><use transform="matrix(.4999-.8661.8661.4999-21.0336 72.3174)" xlink:href="#0"/><path d="m52.1 48.3c-3.4 0-6.1 2.7-6.1 6.1 0 3.4 2.7 6.1 6.1 6.1 3.4 0 6.1-2.7 6.1-6.1 0-3.4-2.7-6.1-6.1-6.1m0 10.6c-2.5 0-4.6-2-4.6-4.6 0-2.5 2-4.6 4.6-4.6 2.5 0 4.6 2 4.6 4.6 0 2.6-2.1 4.6-4.6 4.6" fill="#ed4c5c"/><path d="m36.8 46.7c-4.2 0-7.6 3.4-7.6 7.6 0 4.2 3.4 7.6 7.6 7.6s7.6-3.4 7.6-7.6c.1-4.1-3.3-7.6-7.6-7.6m0 13.8c-3.4 0-6.1-2.7-6.1-6.1 0-3.4 2.7-6.1 6.1-6.1 3.4 0 6.1 2.7 6.1 6.1 0 3.3-2.7 6.1-6.1 6.1" fill="#3e4347"/><circle cx="36.8" cy="54.4" r="1.5" fill="#699635"/><path fill="#ed4c5c" d="m36.1 49.4h1.5v9.9h-1.5z" id="1"/><path transform="matrix(.8662-.4996.4996.8662-22.2347 25.6776)" fill="#ed4c5c" d="m31.9 53.6h9.9v1.5h-9.9z"/><use transform="matrix(.4999-.8661.8661.4999-28.666 59.098)" xlink:href="#1"/><path d="m36.8 48.3c-3.4 0-6.1 2.7-6.1 6.1 0 3.4 2.7 6.1 6.1 6.1 3.4 0 6.1-2.7 6.1-6.1 0-3.4-2.7-6.1-6.1-6.1m0 10.6c-2.5 0-4.6-2-4.6-4.6 0-2.5 2-4.6 4.6-4.6s4.6 2 4.6 4.6c0 2.6-2 4.6-4.6 4.6" fill="#ed4c5c"/><path d="m19.6 50.7c-3.1 0-5.6 2.5-5.6 5.6 0 3.1 2.5 5.6 5.6 5.6 3.1 0 5.6-2.5 5.6-5.6.1-3-2.5-5.6-5.6-5.6m0 10.2c-2.5 0-4.5-2-4.5-4.5 0-2.5 2-4.5 4.5-4.5s4.5 2 4.5 4.5c0 2.5-2 4.5-4.5 4.5" fill="#3e4347"/><circle cx="19.6" cy="56.4" r="1.1" fill="#699635"/><path fill="#ed4c5c" d="m19.1 52.7h1.1v7.3h-1.1z" id="2"/><path transform="matrix(.866-.5001.5001.866-25.5562 17.3731)" fill="#ed4c5c" d="m16 55.8h7.3v1.1h-7.3z"/><use transform="matrix(.5001-.866.866.5001-38.9963 45.1766)" xlink:href="#2"/><path d="m19.6 51.9c-2.5 0-4.5 2-4.5 4.5 0 2.5 2 4.5 4.5 4.5s4.5-2 4.5-4.5c0-2.5-2-4.5-4.5-4.5m0 7.8c-1.9 0-3.4-1.5-3.4-3.4 0-1.9 1.5-3.4 3.4-3.4 1.9 0 3.4 1.5 3.4 3.4 0 1.9-1.5 3.4-3.4 3.4" fill="#ed4c5c"/><path d="m33.9 28.2c-1 0-1.9.8-1.9 1.9h3.8c0-1-.9-1.9-1.9-1.9" fill="#699635"/><g fill="#83bf4f"><path d="m24.2 50.7h-18.3v-2.9h22c0 0 0 2.9-3.7 2.9"/><path d="m62 49.8h-35.1c0 0 0-4 6.6-4h28.5v4"/></g><path d="m31.5 52.8c0 .5-.4.9-.9.9h-8.9c-.5 0-.9-.4-.9-.9v-2.1c0-.5.4-.9.9-.9h8.9c.5 0 .9.4.9.9 0 .1 0 2.1 0 2.1" fill="#dbb471"/><g fill="#ffdd7d"><path d="m55.7 55c0 .5-.4.9-.9.9h-23.7c-.5 0-.9-.4-.9-.9v-.3c0-.5.4-.9.9-.9h23.7c.5 0 .9.4.9.9v.3"/><path d="m31.7 55.4c-.3.4-.8.6-1.3.3l-2.6-1.5c-.4-.3-.6-.8-.3-1.3l.1-.2c.3-.4.8-.6 1.3-.3l2.6 1.5c.4.3.6.8.3 1.3l-.1.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f683.svg b/riot/emojione/svg/1f683.svg new file mode 100644 index 0000000..8042882 --- /dev/null +++ b/riot/emojione/svg/1f683.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="11" cy="57.2" rx="4.7" ry="4.8" fill="#94989b"/><path d="m11 60.4c-1.7 0-3.1-1.4-3.1-3.2 0-1.7 1.4-3.2 3.1-3.2s3.1 1.4 3.1 3.2c0 1.8-1.4 3.2-3.1 3.2m0-4.7c-.9 0-1.6.7-1.6 1.6 0 .9.7 1.6 1.6 1.6s1.6-.7 1.6-1.6c0-.9-.7-1.6-1.6-1.6" fill="#3e4347"/><ellipse cx="21.4" cy="57.2" rx="4.7" ry="4.8" fill="#94989b"/><path d="m21.4 60.4c-1.7 0-3.1-1.4-3.1-3.2 0-1.7 1.4-3.2 3.1-3.2s3.1 1.4 3.1 3.2c0 1.8-1.4 3.2-3.1 3.2m0-4.7c-.9 0-1.6.7-1.6 1.6 0 .9.7 1.6 1.6 1.6s1.6-.7 1.6-1.6c-.1-.9-.8-1.6-1.6-1.6" fill="#3e4347"/><ellipse cx="42.6" cy="57.2" rx="4.7" ry="4.8" fill="#94989b"/><path d="m42.6 60.4c-1.7 0-3.1-1.4-3.1-3.2 0-1.7 1.4-3.2 3.1-3.2s3.1 1.4 3.1 3.2c0 1.8-1.4 3.2-3.1 3.2m0-4.7c-.9 0-1.6.7-1.6 1.6 0 .9.7 1.6 1.6 1.6s1.6-.7 1.6-1.6c0-.9-.7-1.6-1.6-1.6" fill="#3e4347"/><ellipse cx="53" cy="57.2" rx="4.7" ry="4.8" fill="#94989b"/><path d="m53 60.4c-1.7 0-3.1-1.4-3.1-3.2 0-1.7 1.4-3.2 3.1-3.2s3.1 1.4 3.1 3.2c0 1.8-1.4 3.2-3.1 3.2m0-4.7c-.9 0-1.6.7-1.6 1.6 0 .9.7 1.6 1.6 1.6.9 0 1.6-.7 1.6-1.6-.1-.9-.8-1.6-1.6-1.6" fill="#3e4347"/><path d="m54.3 20h-44.6c-3 0-5.4 2.5-5.4 5.5v31.7h55.4v-31.7c0-3-2.4-5.5-5.4-5.5" fill="#f2b200"/><path d="m54.3 20h-44.6c-3 0-5.4 2.5-5.4 5.5v2.8h55.4v-2.8c0-3-2.4-5.5-5.4-5.5" fill="#699635"/><path fill="#ffe62e" d="m4.3 28.3h55.4v15.2h-55.4z"/><g fill="#3e4347"><path d="m3.7 54.5h.6v2.8h-.6z"/><path d="m2 53.1h1.7v5.5h-1.7z"/><path d="m59.7 54.5h.6v2.8h-.6z"/><path d="m60.3 53.1h1.7v5.5h-1.7z"/></g><path fill="#89664c" d="m26 52.1h12l2.7-2.8h19v-2.8h-20.2l-2.7 2.8h-9.6l-2.7-2.8h-20.2v2.8h19z"/><g fill="#3e4347"><path d="m56.6 39.6c0 .6-.5 1.1-1 1.1h-6c-.6 0-1-.5-1-1.1v-7.5c0-.6.5-1.1 1-1.1h6c.6 0 1 .5 1 1.1v7.5"/><path d="m46.3 39.6c0 .6-.5 1.1-1 1.1h-6c-.6 0-1-.5-1-1.1v-7.5c0-.6.5-1.1 1-1.1h6c.6 0 1 .5 1 1.1v7.5"/><path d="m36.1 39.6c0 .6-.5 1.1-1 1.1h-6c-.6 0-1-.5-1-1.1v-7.5c0-.6.5-1.1 1-1.1h6c.6 0 1 .5 1 1.1v7.5"/><path d="m25.8 39.6c0 .6-.5 1.1-1 1.1h-6c-.6 0-1-.5-1-1.1v-7.5c0-.6.5-1.1 1-1.1h6c.6 0 1 .5 1 1.1v7.5"/><path d="m15.5 39.6c0 .6-.5 1.1-1 1.1h-6c-.6 0-1-.5-1-1.1v-7.5c0-.6.5-1.1 1-1.1h6c.6 0 1 .5 1 1.1v7.5"/><path d="m4.3 53.1h55.4v4.1h-55.4z"/></g><g fill="#b4d7ee"><path d="m14.4 38.5c0 .5-.4.9-.9.9h-4c-.5 0-.9-.4-.9-.9v-5.2c0-.5.4-.9.9-.9h4c.5 0 .9.4.9.9v5.2"/><path d="m24.6 38.5c0 .5-.4.9-.9.9h-4c-.5 0-.9-.4-.9-.9v-5.2c0-.5.4-.9.9-.9h4c.5 0 .9.4.9.9 0-.1 0 5.2 0 5.2"/><path d="m34.9 38.5c0 .5-.4.9-.9.9h-4c-.5 0-.9-.4-.9-.9v-5.2c0-.5.4-.9.9-.9h4c.5 0 .9.4.9.9v5.2"/><path d="m45.2 38.5c0 .5-.4.9-.9.9h-4c-.5 0-.9-.4-.9-.9v-5.2c0-.5.4-.9.9-.9h4c.5 0 .9.4.9.9v5.2"/><path d="m55.4 38.5c0 .5-.4.9-.9.9h-4c-.5 0-.9-.4-.9-.9v-5.2c0-.5.4-.9.9-.9h4c.5 0 .9.4.9.9v5.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f684.svg b/riot/emojione/svg/1f684.svg new file mode 100644 index 0000000..291c00a --- /dev/null +++ b/riot/emojione/svg/1f684.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#83bf4f" d="m62 62h-60v-4.8l60-14.7z"/><path fill="#94989b" d="m2 44.3l60-4.1v1.5l-60 11.1z"/><g fill="#3e4347"><path d="m2 41.7l60-3.7v2l-60 4.3z"/><path d="m2 49.5l60-8.4v1.1l-60 12.8z"/></g><path fill="#c5d0d8" d="m2 53.6l60-11.7v.6l-60 16.6z"/><path d="m47.4 11.9c-.9-.6-3.1-.8-4.2-.6-1.4.2-5 2.7-5 2.7s-2-2.5-4-4.1c-.1 0-.1.1-.2.1-3 2.3-8.8 7.9-11.9 10.1-1.1.8-3.7 2.6-5 2.6-2.7 0-8.3 0-9.3 0-.4 0-.8-.6-.8-1.1 0-2.1 3.2-7.9 6-12.4-2.7 2.8-4.8 6.1-6.3 9.5-1.5 3.3-2.5 6.7-3.2 9.6-.6 2.5-1 4.7-1.1 6.2l-.1 1.2c-.1.5-.1.8-.1.8l36.1.5 23.7.4v-16c-2.9-1.8-12.8-8.4-14.6-9.5" fill="#dfecf4"/><path d="m42.3 6.1c-1.2-.6-3.8-1.5-5.2-1.8-.8-.1-1.7-.2-2.8-.3 2.6 1.1 5.1 2.6 5.1 2.6s-3.6 2.2-5.1 3.2c2 1.6 4 4.1 4 4.1s3.7-2.4 5-2.7c1-.2 3.2.1 4.2.6 1.8 1.1 11.8 7.6 14.6 9.5v-1.3c-.1.1-14.6-11.2-19.8-13.9" fill="#42ade2"/><g fill="#3e4347"><path d="m34.2 4.1c-1.1-.1-2.4-.1-3.8-.1-5.6.1-10.9.6-14.1 2.4-1.5.8-2.5 1.9-3.4 2.8-2.7 4.5-5.9 10.3-5.9 12.3 0 .5.4 1.1.8 1.1 1 0 6.6 0 9.3 0 1.3 0 3.9-1.8 5-2.6 3.1-2.1 8.9-7.7 11.9-10 .1 0 .1-.1.2-.2 1.5-1 5.1-3.2 5.1-3.2s-2.4-1.5-5.1-2.5"/><path d="m52.7 20.2v7.1c.7.2 1.4.4 2.2.7v-6.7c-.8-.4-1.5-.8-2.2-1.1"/><path d="m55.9 21.8v6.5c.6.2 1.1.4 1.7.6v-6.1c-.6-.4-1.2-.7-1.7-1"/></g><path d="m30.1 32c3.8-1.3 10.9-5.5 14.8-6.2.7-.1 2.2.1 2.9.2.9.2 2.3.5 3.8 1v-7.3c-1.5-.7-2.8-1.2-3.7-1.4-.7-.2-2-.2-2.7 0-4.4 1.6-11.7 9.1-15.9 11.3-3.3 1.7-10.1 4.9-13.6 4.9-2.8 0-10.1 0-13.4 0-.1.5-.1.9-.1 1.2 3.3 0 10.9 0 13.9 0 3.6-.1 10.5-2.5 14-3.7" fill="#42ade2"/><g fill="#3e4347"><path d="m60.6 24.4v5.5c.5.2 1 .3 1.4.5v-5.2c-.4-.2-.9-.5-1.4-.8"/><path d="m58.4 23.1v6c.6.2 1.1.4 1.6.5v-5.6c-.6-.3-1.1-.6-1.6-.9"/><path d="m2.1 36.4c0 0 1.3 4.4 5 4.2l54.9-1.7v-1.5l-59.9-1"/></g><path d="m5.9 40.6c0 0 2.4 1.6.5 3.3-1 .9.3 2.6 4.2 2.3 12.9-1.3 51.4-5.3 51.4-5.3v-2l-56.1 1.7" fill="#62727a"/><g fill="#fff"><path d="m24.2 28.7c-1.6 1.6-3.7 2.1-4.7 1.1-1-1-.5-3.1 1.1-4.8 1.6-1.6 3.7-2.1 4.7-1.1 1.1 1 .6 3.2-1.1 4.8"/><path d="m4.5 29.1c.7 0 1.2-1.2 1.1-2.7-.1-1.1-.4-2-.9-2.4-.5 1.5-.9 2.9-1.2 4.2.3.6.6.9 1 .9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f685.svg b/riot/emojione/svg/1f685.svg new file mode 100644 index 0000000..e6e4a7a --- /dev/null +++ b/riot/emojione/svg/1f685.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#94989b" d="m2 56.2h60v5.8h-60z"/><path d="m49.5 51.5c0 3.4 2.5 6.1 5.6 6.1 3.1 0 5.6-2.8 5.6-6.1h-11.2" fill="#3e4347"/><path d="m57 51.5c0 1.1-.8 2-1.9 2-1 0-1.9-.9-1.9-2h-1.9c0 2.3 1.7 4.1 3.8 4.1 2.1 0 3.8-1.8 3.8-4.1h-1.9" fill="#94989b"/><path d="m37.5 51.5c0 3.4 2.5 6.1 5.6 6.1s5.6-2.8 5.6-6.1h-11.2" fill="#3e4347"/><path d="m45 51.5c0 1.1-.8 2-1.9 2-1 0-1.9-.9-1.9-2h-1.9c0 2.3 1.7 4.1 3.8 4.1 2.1 0 3.8-1.8 3.8-4.1h-1.9" fill="#94989b"/><path d="m25.5 51.5c0 3.4 2.5 6.1 5.6 6.1s5.6-2.8 5.6-6.1h-11.2" fill="#3e4347"/><path d="m33 51.5c0 1.1-.8 2-1.9 2-1 0-1.9-.9-1.9-2h-1.9c0 2.3 1.7 4.1 3.8 4.1 2.1 0 3.8-1.8 3.8-4.1h-1.9" fill="#94989b"/><path fill="#52575b" d="m26.9 52.2h35.1v-5.3l-33-.8z"/><path d="m8.6 50.7l-2.8 9.5c0 0 8.6 0 14.2 0 7.2 0 14.1-11.8 14.1-11.8l-25.5 2.3" fill="#42ade2"/><path d="m32.9 12.3l-7.7 11.5c0 0-17.8 6.9-20 16.1-1.4 5.8 3.7 9.5 8.2 11.8 7.9.2 20.6-3.3 20.6-3.3h28v-34.5c0 0-19.2-2.9-29.1-1.6" fill="#c5d0d8"/><path d="m5.3 39.9c2.2-9.2 43.3-23.2 51.4-22.8 0 0-5.5-2.3-13.6-3.8l-18.5 6.3c-.3.5-.4.9-.4.9s-19.8 10.3-22 18.7c-.3 1.1-.3 3.6 0 4.6 1 3 5.1 6.4 7.1 7.2 1.1.4 2.5.6 4.2.7-4.6-2.3-9.6-6-8.2-11.8" fill="#dfecf4"/><path d="m43 13.4c0 0-.1 0 0 0l-6.1-.8c-1.7-.1-3.4-.2-5.2-.2-.7.1-1.2.2-1.6.4-2.5 1-4.8 5.2-5.7 7l18.6-1.7v-4.7" fill="#3e4347"/><path d="M62,42H32.9c0-11.8,16.6-11.8,16.6-11.8H62V42z" fill="#42ade2"/><path d="m20.9 40.2c0 .8-.4 1.5-.9 1.5h-9.3c-.5 0-.9-.7-.9-1.5 0-.8.4-1.5.9-1.5h9.3c.5 0 .9.7.9 1.5" fill="#aab5bc"/><path d="m20.9 51.7c-1.3.2-2.4 1.7-2.4 3.6 0 1.9 1.1 3.4 2.4 3.6v-7.2" fill="#3e4347"/><g fill="#fff"><path d="m20.9 53.1c-.8.1-1.4 1-1.4 2.2 0 1.1.6 2 1.4 2.2v-4.4"/><path d="m20.1 39c-.4.1-.8.6-.8 1.2 0 .6.4 1.1.8 1.2v-2.4"/></g><path d="m14.4 52.8c-1.1.1-1.9 1.3-1.9 2.8 0 1.5.8 2.7 1.9 2.8v-5.6" fill="#3e4347"/><path d="m14.4 53.9c-.6.1-1.1.8-1.1 1.7 0 .9.5 1.6 1.1 1.7v-3.4" fill="#fff"/><path d="m9.8 53.2c-.8.1-1.3 1-1.3 2 0 1.1.6 1.9 1.3 2v-4" fill="#3e4347"/><path d="m9.8 54.1c-.5 0-.8.5-.8 1.2 0 .6.4 1.1.8 1.2v-2.4" fill="#fff"/><path d="m43.7 13.5v4.5l12.3-1.2c0 0-6.7-2.5-12.3-3.3" fill="#3e4347"/><path d="m5.1 41c-.1-1.4.6-2.7 1.4-3.8.8-1.1 1.8-2 2.8-2.9 2.1-1.7 4.4-3.2 6.7-4.5 4.7-2.6 9.7-4.7 14.7-6.6 5-1.8 10.2-3.4 15.4-4.7 2.6-.6 5.2-1.2 7.9-1.6 2.6-.4 5.3-.8 8-.5-2.7.1-5.3.8-7.8 1.4-2.6.6-5.1 1.4-7.7 2.1-5.1 1.6-10.1 3.2-15.1 5.1-5 1.8-9.9 3.8-14.7 6.1-2.4 1.2-4.7 2.4-6.9 3.9-1.1.7-2.1 1.6-3 2.5-.8 1-1.6 2.1-1.7 3.5" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f686.svg b/riot/emojione/svg/1f686.svg new file mode 100644 index 0000000..15d5e1e --- /dev/null +++ b/riot/emojione/svg/1f686.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#94989b" d="m16.4 48.9l-8.6 13.1h4.6l8.4-13.1z"/><path fill="#e6e6e6" d="m16.4 48.9h-4.4l-10 13.1h5.8z"/><path fill="#94989b" d="m47.6 48.9h-4.4l8.4 13.1h4.6z"/><path fill="#e6e6e6" d="m47.6 48.9l8.6 13.1h5.8l-10-13.1z"/><path fill="#3e4347" d="m44 50.1h-24l-7.6 11.9h39.2z"/><path d="m52.4 32.2h-40.8v-23.8c0-.6 10.2-3.4 20.4-3.4s20.4 2.8 20.4 3.4c0 0 0 23.8 0 23.8" fill="#ba573f"/><path d="m54.8 48.5c0 3.7-45.5 3.7-45.5 0v-6.1h45.5v6.1" fill="#c5cdd3"/><path d="m48 52.7c0 4.5-32 4.5-32 0v-7.5h32v7.5" fill="#dae3ea"/><path d="m54.8 42.4h-45.6v-30c0-.8 11.4-4.3 22.8-4.3 11.4 0 22.8 3.5 22.8 4.3v30" fill="#f14e3a"/><g fill="#3e4347"><path d="m11.6 13.7v9.5l19.3-3.2v-9.5c-.2-.8-19.4 2.4-19.3 3.2"/><path d="m33.1 10.5v9.5l19.2 3.1v-9.5c.2-.7-19-3.9-19.2-3.1"/></g><path d="m37.9 42.4h-11.8c0 0 0-16.9 0-19.3 0-2.5 11.7-2.5 11.7 0 .1 3 .1 19.3.1 19.3" fill="#fdf516"/><ellipse cx="32" cy="27.3" rx="3.4" ry="3.3" fill="#3e4347"/><g fill="#f14e3a"><ellipse cx="21.9" cy="5.1" rx="3.2" ry="3.1"/><ellipse cx="42.1" cy="5.1" rx="3.2" ry="3.1"/></g><g fill="#fdf516"><path d="m42.3 33.6c-5-1.1-15.6-1.1-20.6 0-.7.1-1.9.8-1.9 1.9v3.8c0 1 1.3 1.7 1.9 1.9 5 1.1 15.6 1.1 20.6 0 .7-.1 1.9-.8 1.9-1.9v-3.8c.1-1.1-1.2-1.8-1.9-1.9m-.2 5c0 .7-1 1.2-1.6 1.2-4.2.7-12.9.7-17.1 0-.6-.1-1.6-.6-1.6-1.2v-2.5c0-.7 1-1.2 1.6-1.2 4.2-.7 12.9-.7 17.1 0 .6.1 1.6.6 1.6 1.2v2.5"/><path d="m9.2 36.3h45.6v2.1h-45.6z"/></g><path d="m35.3 36.3c0 1.8-1.5 3.3-3.3 3.3s-3.3-1.5-3.3-3.3c0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3" fill="#3e4347"/><circle cx="32" cy="36.3" r="1.5" fill="#fff"/><path fill="#94989b" d="m23 42.4h18v6.5h-18z"/><g fill="#3e4347"><path d="m27.8 46.9h2.1v4.7h-2.1z"/><path d="m34.1 46.9h2.1v4.7h-2.1z"/></g><path fill="#94989b" d="m8.2 42.4h47.7v2.8h-47.7z"/><path fill="#f14e3a" d="m26.1 53h11.7v4.3h-11.7z"/><g fill="#3e4347"><path d="m55.8 32.9c-.1.6-.7 1-1.4.9l-9.3-1.6c-.6-.1-1.1-.7-1-1.3l.4-2.1c.1-.6.7-1 1.4-.9l9.3 1.6c.6.1 1.1.7 1 1.3l-.4 2.1"/><path d="m19.7 30.9c.1.6-.3 1.2-1 1.3l-9.3 1.6c-.6.1-1.3-.3-1.4-.9l-.4-2.1c-.1-.6.3-1.2 1-1.3l9.3-1.6c.6-.1 1.3.3 1.4.9l.4 2.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f687.svg b/riot/emojione/svg/1f687.svg new file mode 100644 index 0000000..5f075ab --- /dev/null +++ b/riot/emojione/svg/1f687.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#3e4347"/><path d="m20.2 46.3l-6.5 9.4c.8.6 1.7 1.2 2.5 1.8l7.3-11.1c0-.1-3.3-.1-3.3-.1" fill="#94989b"/><path d="m20.2 46.3h-3.3l-5.6 7.3c.8.7 1.5 1.4 2.4 2l6.5-9.3" fill="#e6e6e6"/><path d="m43.8 46.3h-3.3l7.3 11.1c.9-.5 1.7-1.1 2.5-1.8l-6.5-9.3" fill="#94989b"/><path d="m43.8 46.3l6.5 9.4c.8-.6 1.6-1.3 2.4-2l-5.6-7.3h-3.3z" fill="#e6e6e6"/><path d="m49.3 44.2c0 1.8-1.4 3.2-3.2 3.2h-28.2c-1.8 0-3.2-1.4-3.2-3.2v-23.5c0-12.6 34.5-12.6 34.5 0l.1 23.5" fill="#c7e755"/><g fill="#3e4347"><path d="m47.2 40.5c0 1.1-.9 1.9-2 1.9h-4.7c-1.1 0-2-.9-2-1.9 0-1.1.9-1.9 2-1.9h4.7c1.2 0 2 .9 2 1.9"/><path d="m16.8 40.5c0-1.1.9-1.9 2-1.9h4.7c1.1 0 2 .9 2 1.9 0 1.1-.9 1.9-2 1.9h-4.7c-1.2.1-2-.8-2-1.9"/><path d="m47.2 30.4c0 1.5-1.2 2.7-2.7 2.7h-25c-1.5 0-2.7-1.2-2.7-2.7v-8.6c0-1.5 1.2-2.7 2.7-2.7h25.1c1.5 0 2.7 1.2 2.7 2.7v8.6z"/></g><g fill="#fff"><circle cx="21.1" cy="40.5" r="1.7"/><circle cx="42.9" cy="40.5" r="1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f688.svg b/riot/emojione/svg/1f688.svg new file mode 100644 index 0000000..f5fc3b0 --- /dev/null +++ b/riot/emojione/svg/1f688.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#94989b" d="m2 56.5h60v5.5h-60z"/><path fill="#62696d" d="m2 56.5h60v1.8h-60z"/><path d="M25.3,14C14.5,14,2,37.4,2,50.6c0,3.2,2.5,5.8,5.7,5.9h0H62V14C62,14,48.9,14,25.3,14z" fill="#dfecf4"/><g fill="#3e4347"><path d="m15.1 19.9c-6.8 7.4-12.5 20.2-13 29.2h10.2c0 0 13.2 0 13.2-7.3 0-5.5 0-22 0-22s-10.4.1-10.4.1"/><path d="m41.5 19.9c-7.3 0-7.3 1.5-7.3 15.4v13.9h27.8v-29.3c0 0-18.6 0-20.5 0"/></g><path d="m2.1 49.1c0 .5-.1 1-.1 1.5 0 3.2 2.5 5.8 5.7 5.9h54.3v-7.3l-59.9-.1" fill="#3baacf"/><path d="M11.5,56.5c0,0,7.3-7.3,22-7.3H62v7.3H11.5z" fill="#fdf516"/><g fill="#62696d"><path d="m47.4 34.5c-.8 0-1.3.7-1.5 1.5l-1.3 10.2h-4.6c-1.4 0-1.4.9-1.4 2v1h10.3v-14.7h-1.5"/><path d="m60.5 34.5c-.8 0-1.3.7-1.5 1.5l-1.3 10.2h-4.7c-1.4 0-1.4.9-1.4 2v1h10.4v-14.7h-1.5"/></g><ellipse cx="6.4" cy="52.8" rx=".7" ry="2.2" fill="#fff"/><path d="m25.4 56.5c0 0 11.3-7.3 24.6-7.3 0 0 11.9 0 11.9-11.1v18.4h-36.5" fill="#3baacf"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f689.svg b/riot/emojione/svg/1f689.svg new file mode 100644 index 0000000..6c3953a --- /dev/null +++ b/riot/emojione/svg/1f689.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3e4347" d="m2 62h17.5l17.8-11.2h-29.2l-6.1 2.4z"/><path d="m23.4 51.5c.1-.1.3-.1.4-.2l-.4.2" fill="#e8e8e8"/><path d="m3.1 33.9c-2.1 9.8-.5 19.6 11.5 19.6 2.5 0 5.7-.4 8.7-2 4.8-2.6 7.6-8 8.7-15.5.1-.7.2-1.3.3-2l-29.2-.1" fill="#c7e755"/><path d="m32.3 33.9c1.2-8.5 3-19.7 6.3-24.8h-22c-2.4 2.5-5.1 5.9-7.8 10.4-2.2 3.7-4.5 9.1-5.6 14.4h29.1" fill="#3e4347"/><path d="m31.7 2c-1.3 0-8.7.6-15.1 7.1h22c1.4-2.3 3.1-3.4 5.2-2.5-1.5-1.2-4-4.6-12.1-4.6" fill="#dae3ea"/><path d="m44.6 7c-7.3-4.7-10.5 14.1-12.3 26.9l25.5-6v-10.9c0 0-6.3-4.7-13.2-10" fill="#c5d0d8"/><g fill="#83bf4f"><path d="m32.3 33.9c-.1.7-.2 1.4-.3 2-1.1 7.6-3.9 12.9-8.7 15.5l34.5-19.4v-4l-25.5 5.9"/><path d="m19.4 41.3c0 .7.2 1.3.5 1.9h6c.3-.6.5-1.2.5-1.9 0-.7-.2-1.3-.5-1.9h-6c-.3.6-.5 1.3-.5 1.9"/><path d="m3.7 41.3c0 .7.2 1.3.5 1.9h6c.3-.6.5-1.2.5-1.9 0-.7-.2-1.3-.5-1.9h-6c-.3.6-.5 1.3-.5 1.9"/></g><g fill="#d6eef0"><path d="m6.4 41.3c0 .7.2 1.3.5 1.9h4.3c.3-.6.5-1.2.5-1.9 0-.7-.2-1.3-.5-1.9h-4.4c-.3.6-.4 1.3-.4 1.9"/><path d="m22.1 41.3c0 .7.2 1.3.5 1.9h4.3c.3-.6.5-1.2.5-1.9 0-.7-.2-1.3-.5-1.9h-4.3c-.4.6-.5 1.3-.5 1.9"/></g><g fill="#3e4347"><path d="m54.6 17.5l-5.7-3.6c-.8-.5-1.5-.1-1.5.9v15.6l8.7-2v-8.1c0-1-.7-2.3-1.5-2.8"/><path d="m43.2 10.3c-2-1.3-4.4 5.9-5.2 8.2-1.4 4.8-2.7 12.9-2.7 12.9-.2 1 .5 1.7 1.4 1.5l7.2-1.7c.9-.2 1.7-1.2 1.7-2.3v-17c0 0-1.5-1-2.4-1.6"/></g><path fill="#94989b" d="m19.5 53.1h42.5v-21.1h-4.2z"/><path fill="#ffe62e" d="m28.8 53.1h-3.1l33.2-21.1h1z"/><path fill="#666" d="m19.5 53.1h42.5v8.9h-42.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f68a.svg b/riot/emojione/svg/1f68a.svg new file mode 100644 index 0000000..e98a079 --- /dev/null +++ b/riot/emojione/svg/1f68a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m43.9 7.4h-2.6c0-1.6-1.4-2.9-3.1-2.9h-12.4c-1.7 0-3.1 1.3-3.1 2.9h-2.6c0-3 2.6-5.4 5.7-5.4h12.4c3.1 0 5.7 2.4 5.7 5.4"/><path d="m28.5 10.5l-1.4.5-2.9-7.5 1.4-.5z"/><path d="m35.5 10.5l1.4.5 2.9-7.5-1.4-.5z"/></g><path fill="#94989b" d="m17.4 50.2l-8 11.8h4.3l7.8-11.8z"/><path fill="#e6e6e6" d="m17.4 50.2h-4l-9.4 11.8h5.4z"/><path fill="#94989b" d="m46.6 50.2h-4.1l7.8 11.8h4.3z"/><path fill="#e6e6e6" d="m46.6 50.2l8 11.8h5.4l-9.4-11.8z"/><path fill="#666" d="m43.2 51.3h-22.4l-7.1 10.7h36.6z"/><path d="M53.3,48c0,14.6-42.5,14.6-42.5,0V23.1c0-18.6,42.5-18.6,42.5,0V48z" fill="#c7e755"/><path d="m53.3 39.7h-42.6v-16.6c0-18.6 42.5-18.6 42.5 0 .1 0 .1 16.6.1 16.6" fill="#dae3ea"/><g fill="#83bf4f"><path d="m50.8 48.3c0 1.1-1.1 2.1-2.4 2.1h-5.8c-1.3 0-2.4-.9-2.4-2.1 0-1.1 1.1-2.1 2.4-2.1h5.8c1.3 0 2.4 1 2.4 2.1"/><path d="m13.2 48.3c0-1.1 1.1-2.1 2.4-2.1h5.8c1.3 0 2.4.9 2.4 2.1 0 1.1-1.1 2.1-2.4 2.1h-5.8c-1.3 0-2.4-1-2.4-2.1"/></g><g fill="#d6eef0"><path d="m16.9 48.3c0-1.1 1.1-2.1 2.4-2.1h2.1c1.3 0 2.4.9 2.4 2.1 0 1.1-1.1 2.1-2.4 2.1h-2.1c-1.3 0-2.4-1-2.4-2.1"/><path d="m40.1 48.3c0-1.1 1.1-2.1 2.4-2.1h2.1c1.3 0 2.4.9 2.4 2.1 0 1.1-1.1 2.1-2.4 2.1h-2.1c-1.3 0-2.4-1-2.4-2.1"/></g><path d="m50.7 39.7c0 1.6-37.4 1.6-37.4 0v-18.6c0-1.6 37.4-1.6 37.4 0v18.6" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f68b.svg b/riot/emojione/svg/1f68b.svg new file mode 100644 index 0000000..8c64b51 --- /dev/null +++ b/riot/emojione/svg/1f68b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#83bf4f" d="m4.8 22.6h54.4v20.6h-54.4z"/><path fill="#ffce31" d="m4.8 43.2h54.4v3.8h-54.4z"/><g fill="#3e4347"><path d="m55.4 18.9h-46.8c-2.1 0-3.8 1.7-3.8 3.8h54.4c0-2.1-1.7-3.8-3.8-3.8"/><path d="m25.4 15.1h13.1v3.8h-13.1z"/><path d="m2 2h60v1.9h-60z"/><path d="m23.6 39.8h-9.4v-11.3c0-3.3 9.4-3.3 9.4 0v11.3"/></g><path d="m21.7 30.1c0-2.3-5.6-2.3-5.6 0v7.5h5.6v-7.5" fill="#b4d7ee"/><path d="m12.3 41.7h-7.5v-16.6c0 0 7.5.2 7.5 4.3v12.3" fill="#3e4347"/><path d="M10.4,31c0-3.7-5.6-3.6-5.6-3.6v12.1h5.6V31z" fill="#b4d7ee"/><path d="m34.8 39.8h-9.4v-11.3c0-3.3 9.4-3.3 9.4 0v11.3" fill="#3e4347"/><path d="m32.9 30.1c0-2.3-5.6-2.3-5.6 0v7.5h5.6v-7.5" fill="#b4d7ee"/><path d="m46.1 39.8h-9.4v-11.3c0-3.3 9.4-3.3 9.4 0v11.3" fill="#3e4347"/><path d="m44.2 30.1c0-2.3-5.6-2.3-5.6 0v7.5h5.6v-7.5" fill="#b4d7ee"/><path d="m57.3 39.8h-9.4v-11.3c0-3.3 9.4-3.3 9.4 0v11.3" fill="#3e4347"/><path d="m55.4 30.1c0-2.3-5.6-2.3-5.6 0v7.5h5.6v-7.5" fill="#b4d7ee"/><g fill="#3e4347"><path d="m5.8 15.5h3.2v5.6h-3.2z"/><path d="m13.5 17.5h9.1v3.7h-9.1z"/><path d="m43.9 17h9.1v3.7h-9.1z"/></g><path fill="#94989b" d="m2 56.4h60v5.6h-60z"/><path fill="#e6e6e6" d="m2 57.3h60v.9h-60z"/><g fill="#3e4347"><path transform="matrix(.5237-.8519.8519.5237 5.7151 33.7073)" d="m27.9 11.3h10.3v.9h-10.3z"/><path transform="matrix(.5242-.8516.8516.5242 7.2242 39.3621)" d="m33.7 12.4h10.3v1.7h-10.3z"/><path transform="matrix(.7881-.6155.6155.7881 2.7438 23.6407)" d="m35.3 2h.9v11.8h-.9z"/><path transform="matrix(.7877-.6161.6161.7877 4.3475 25.2263)" d="m37.9 1.8h1.8v9h-1.8z"/></g><path d="M4.8,47c0,0-1.9,0-1.9,2.8v0.9v2.8h1.9h54.4V47H4.8z" fill="#699635"/><path fill="#3e4347" d="m2.9 52h56.3v1.6h-56.3z"/><path fill="#63686b" d="m18.9 49.8h-9.4l-2.8 3.8h15z"/><circle cx="10.9" cy="53.6" r="2.8" fill="#3e4347"/><circle cx="10.9" cy="53.6" r=".9" fill="#94989b"/><circle cx="17.5" cy="53.6" r="2.8" fill="#3e4347"/><circle cx="17.5" cy="53.6" r=".9" fill="#94989b"/><path fill="#63686b" d="m54.5 49.8h-9.4l-2.8 3.8h15z"/><g fill="#3e4347"><circle cx="46.5" cy="53.6" r="2.8"/><circle cx="53.1" cy="53.6" r="2.8"/></g><g fill="#94989b"><circle cx="46.5" cy="53.6" r=".9"/><circle cx="53.1" cy="53.6" r=".9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f68c.svg b/riot/emojione/svg/1f68c.svg new file mode 100644 index 0000000..99862d5 --- /dev/null +++ b/riot/emojione/svg/1f68c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffce31" d="m2 38.4h60v16.5h-60z"/><g fill="#3e4347"><path d="m2 54.9h60v1.8h-60z"/><path d="m13.8 44.1h48.2v1h-48.2z"/><path d="m13.8 38.8h48.2v1h-48.2z"/></g><g fill="#63686b"><path d="m49.6 46.8c-4.6 0-8.3 3.6-8.3 8.1 0 .6.1 1.2.2 1.8h16.2c.1-.6.2-1.2.2-1.8 0-4.5-3.7-8.1-8.3-8.1"/><path d="m18.6 46.8c-4.6 0-8.3 3.6-8.3 8.1 0 .6.1 1.2.2 1.8h16.2c.1-.6.2-1.2.2-1.8-.1-4.5-3.8-8.1-8.3-8.1"/></g><path d="m59.9 16h-55.6c-1.1 0-2 .9-2.3 2v20.3h60v-20.3c0-1.1-.9-2-2.1-2" fill="#ffce31"/><ellipse cx="49.6" cy="54.9" rx="7.2" ry="7.1" fill="#3e4347"/><ellipse cx="49.6" cy="54.9" rx="3.6" ry="3.6" fill="#94989b"/><ellipse cx="18.6" cy="54.9" rx="7.2" ry="7.1" fill="#3e4347"/><path d="m18.6 51.3c-2 0-3.6 1.6-3.6 3.6 0 2 1.6 3.6 3.6 3.6 2 0 3.6-1.6 3.6-3.6 0-2-1.7-3.6-3.6-3.6" fill="#94989b"/><path fill="#3e4347" d="m2 20.9h3.1v17.4h-3.1z"/><path d="m4.7 53.7c-.3.2-1.5.8-1.5.8v-3.6c0 0 1.2.5 1.5.8.8.5.8 1.4 0 2" fill="#f5f5f5"/><path d="m4.1 41.8c-.2.2-1 .6-1 .6v-2.7c0 0 .8.4 1 .6.5.3.5 1 0 1.5" fill="#ed4c5c"/><path fill="#63686b" d="m14.9 20.9h7.5v4.5h-7.5z"/><path fill="#3e4347" d="m14.9 27.3h7.5v4.5h-7.5z"/><path fill="#63686b" d="m24.1 20.9h7.5v4.5h-7.5z"/><path fill="#3e4347" d="m24.1 27.3h7.5v4.5h-7.5z"/><path fill="#63686b" d="m33.5 20.9h7.5v4.5h-7.5z"/><path fill="#3e4347" d="m33.5 27.3h7.5v4.5h-7.5z"/><path fill="#63686b" d="m42.9 20.9h7.5v4.5h-7.5z"/><path fill="#3e4347" d="m42.9 27.3h7.5v4.5h-7.5z"/><path fill="#63686b" d="m51.7 20.9h7.5v4.5h-7.5z"/><g fill="#3e4347"><path d="m51.7 27.3h7.5v4.5h-7.5z"/><path d="m2 33.6h60v1h-60z"/></g><path fill="#f5f5f5" d="m18.5 43.8l-3.3-3.2v-4.5l3.3-3.2h4.7l3.3 3.2v4.5l-3.3 3.2z"/><path fill="#ed4c5c" d="m19.1 42.4l-2.5-2.3v-3.4l2.5-2.4h3.5l2.5 2.4v3.4l-2.5 2.3z"/><g fill="#94989b"><path d="m13.3 36.5h1.9v3.8h-1.9z"/><path d="m4 23.5h2.7v12.3h-2.7z"/></g><g fill="#3e4347"><path d="m6.7 20.9h6.3v10.9h-6.3z"/><path d="m2 43.6h4.7v6.4h-4.7z"/></g><g fill="#63686b"><path d="m2 44.5h3.8v.9h-3.8z"/><path d="m2 46.3h3.8v.9h-3.8z"/><path d="m2 48.2h3.8v.9h-3.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f68d.svg b/riot/emojione/svg/1f68d.svg new file mode 100644 index 0000000..d2d2f59 --- /dev/null +++ b/riot/emojione/svg/1f68d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m11 57v3c0 1.1.9 2 2 2h4c1.1 0 2-.9 2-2v-3h-8"/><path d="m45 57v3c0 1.1.9 2 2 2h4c1.1 0 2-.9 2-2v-3h-8"/></g><path d="M56,54c0,1.7-1.3,3-3,3H11c-1.7,0-3-1.4-3-3V7.7c0-1.7,1.3-3,3-3h42c1.7,0,3,1.3,3,3V54z" fill="#c5d0d8"/><path d="m56 54c0 1.7-1.3 3-3 3h-42c-1.7 0-3-1.4-3-3v-6h48v6" fill="#428bc1"/><g fill="#3e4347"><path d="M54.7,35.5c0,1.7-1.3,3-3,3H12.3c-1.7,0-3-1.3-3-3V17.8c0-1.7,1.3-3,3-3h39.4c1.7,0,3,1.4,3,3V35.5z"/><path d="m10.6 49.5h8.9v6h-8.9z"/></g><path fill="#f15744" d="m12 51h5.9v3h-5.9z"/><path fill="#3e4347" d="m44.6 49.5h8.9v6h-8.9z"/><path fill="#f15744" d="m46 51h5.9v3h-5.9z"/><path d="m48 11.5c0 1-.8 1.8-1.8 1.8h-28.4c-1 0-1.8-.8-1.8-1.8v-3.6c0-1 .8-1.8 1.8-1.8h28.4c1 0 1.8.8 1.8 1.8v3.6" fill="#3e4347"/><path d="m16.1 4.7c0-1.5.8-2.7 1.8-2.7h28.4c1 0 1.8 1.2 1.8 2.7-.1 0-32 0-32 0" fill="#b2c1c0"/><path fill="#3e4347" d="m22 43.4h20v11.1h-20z"/><g fill="#62727a"><path d="m22.9 44.4h18.2v1h-18.2z"/><path d="m12.5 34.3h18.2v1h-18.2z"/><path d="m27.7 38.5l-7.2-3.7.6-.3 7.6 4z"/><path d="m33.3 34.3h18.2v1h-18.2z"/><path d="m48.5 38.5l-7.2-3.7.6-.3 7.5 4z"/><path d="m22.9 46.4h18.2v1h-18.2z"/><path d="m22.9 48.4h18.2v1h-18.2z"/><path d="m22.9 50.4h18.2v1h-18.2z"/><path d="m22.9 52.4h18.2v1h-18.2z"/></g><g fill="#fff"><ellipse cx="52.2" cy="43.5" rx="2.9" ry="2.9"/><ellipse cx="46" cy="43.5" rx="2.9" ry="2.9"/><ellipse cx="18" cy="43.5" rx="2.9" ry="2.9"/><ellipse cx="11.8" cy="43.5" rx="2.9" ry="2.9"/></g><g fill="#62727a"><path d="m8 24.8c0 .6-.4 1-1 1h-2c-.6 0-1-.4-1-1v-8c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v8"/><path d="m5.8 16.7l-.7-.7 5.8-5.8v1.5z"/><path d="m56 24.8c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1h-2c-.6 0-1 .4-1 1v8"/><path d="m58.2 16.7l.7-.7-5.8-5.8v1.5z"/></g><g fill="#c7e755"><path d="m20.5 8v1.3l-.4.4-.1-.1v-1.8l.5.2m-.6 3.7v-1.8l.1-.1.4.4v1.3l-.5.2m2.5.4h-2.2c-.2 0-.3-.2-.3-.3l.5-.2h1.8l.2.5m-.2-4.2h-1.8l-.5-.2c0-.2.2-.3.3-.3h2.2l-.2.5m0 1.6l.3.3-.3.2h-1.7l-.3-.3.3-.3h1.7z"/><path d="m23.6 8v1.3l-.4.4-.1-.1v-1.8l.5.2m0 2.2v1.4l-.2.5c-.2 0-.3-.2-.3-.3v-1.9l.1-.1.4.4m1.6-2.3h-1.6l-.5-.2c0-.2.2-.3.3-.3h2l-.2.5m-.4 1.6l-.3.3-.3-.3v-1.5h.5l.1 1.5m.6-.2v-1.4l.2-.5c.2 0 .3.2.3.3v1.9l-.1.1-.4-.4m.4.5l.1.1v1.9c0 .2-.2.3-.3.3l-.2-.5v-1.4l.4-.4"/><path d="m26.7 9.7l-.1-.1v-1.6l.3-.3.2.2v1.4l-.4.4m.4.5v1.4l-.2.2-.3-.3v-1.6l.1-.1.4.4m1.6-2.3h-1.5l-.2-.3.3-.3h1.5l.2.3-.3.3m.2 4l-.3.3h-1.5l-.1-.3.3-.3h1.5l.1.3m-.1-2.6v-1.4l.2-.2.3.3v1.5l-.1.1-.4-.3m.4.5l.1.1v1.5l-.3.4-.2-.2v-1.4l.4-.4"/><path d="m30 11.7v-1.8l.1-.1.4.4v1.3l-.5.2m2.3.4h-2c-.2 0-.3-.2-.3-.3l.5-.2h1.6l.2.5m0-2.8v-1.4l.2-.5c.2 0 .3.2.3.3v1.9l-.1.1-.4-.4m.4.5l.1.1v1.9c0 .2-.2.3-.3.3l-.2-.5v-1.4l.4-.4"/><path d="m33.5 9.3v-1.4l.2-.5c.2 0 .3.2.3.3v1.9l-.1.1-.4-.4m.4.4l.1.2v1.9c0 .2-.2.3-.3.3l-.2-.5v-1.4l.4-.5"/><path d="m34.8 9.7l-.1-.1v-1.6l.3-.3.2.2v1.4l-.4.4m.4.5v1.4l-.2.2-.3-.3v-1.6l.1-.1.4.4m1.6-2.3h-1.5l-.3-.3.3-.3h1.5l.2.3-.2.3m.2 4l-.3.3h-1.5l-.3-.3.3-.3h1.5l.3.3m-.1-2.6v-1.4l.2-.2.3.3v1.5l-.1.1-.4-.3m.4.5l.1.1v1.5l-.3.3-.2-.2v-1.4l.4-.3"/><path d="m38.2 9.7l-.1-.1v-1.9c0-.2.2-.3.3-.3l.2.5v1.4l-.4.4m.4.5v1.4l-.2.5c-.2 0-.3-.2-.3-.3v-1.9l.1-.1.4.4m1.6-.9h-.5l-1-1v-.4h.4l1.1 1.1v.3m.2 0v-1.4l.2-.5c.2 0 .3.2.3.3v1.9l-.1.1-.4-.4m.4.5l.1.1v1.9c0 .2-.2.3-.3.3l-.2-.5v-1.4l.4-.4"/><path d="m42.1 8v1.3l-.4.4-.1-.1v-1.8l.5.2m-.5 3.7v-1.8l.1-.1.4.4v1.3l-.5.2m2.5.4h-2.2c-.2 0-.3-.2-.3-.3l.5-.2h1.8l.2.5m-.2-4.2h-1.8l-.5-.2c0-.2.2-.3.3-.3h2.2l-.2.5m-.1 1.6l.3.3-.3.2h-1.7l-.3-.3.3-.3h1.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f68e.svg b/riot/emojione/svg/1f68e.svg new file mode 100644 index 0000000..ec3e927 --- /dev/null +++ b/riot/emojione/svg/1f68e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 37.6l-60 2v-16.1c0-2.6 2.1-4.7 4.7-4.7h50.6c2.6 0 4.7 2.1 4.7 4.7v14.1" fill="#c5d0d8"/><path d="m60.1 39.5h-56.2v-14c0-2.6 2.1-4.7 4.7-4.7h46.9c2.6 0 4.7 2.1 4.7 4.7l-.1 14" fill="#3e4347"/><path fill="#c5d0d8" d="m2 38.7v11.5h60v-13.6h-40.3z"/><path fill="#428bc1" d="m2 50.2h60v6.3h-60z"/><path fill="#fff" d="m2 46.2h60v2h-60z"/><g fill="#63686b"><path d="m49.6 46.2c-4.6 0-8.3 3.8-8.3 8.4 0 .6.1 1.2.2 1.8h16.2c.1-.6.2-1.2.2-1.8 0-4.6-3.7-8.4-8.3-8.4"/><path d="m18.5 46.2c-4.6 0-8.3 3.8-8.3 8.4 0 .6.1 1.2.2 1.8h16.2c.1-.6.2-1.2.2-1.8 0-4.6-3.7-8.4-8.3-8.4"/></g><path d="m49.6 47.3c-4 0-7.2 3.3-7.2 7.3 0 4.1 3.2 7.3 7.2 7.3 4 0 7.2-3.3 7.2-7.3 0-4-3.2-7.3-7.2-7.3" fill="#3e4347"/><ellipse cx="49.6" cy="54.6" rx="3.6" ry="3.7" fill="#94989b"/><path d="m18.5 47.3c-4 0-7.2 3.3-7.2 7.3 0 4.1 3.2 7.3 7.2 7.3 4 0 7.2-3.3 7.2-7.3.1-4-3.1-7.3-7.2-7.3" fill="#3e4347"/><path d="m18.5 51c-2 0-3.6 1.6-3.6 3.7 0 2 1.6 3.7 3.6 3.7 2 0 3.6-1.6 3.6-3.7.1-2.1-1.6-3.7-3.6-3.7" fill="#94989b"/><path fill="#3e4347" d="m8.4 39.6h-6.4v5.8l6.4-1.2z"/><g fill="#fff"><path d="m5.1 42.5c0 1.3-.8 2.3-1.9 2.3-.8 0-.8 0-.8-2.3 0-2.4 0-2.4.8-2.4 1 0 1.9 1.1 1.9 2.4"/><path d="m8 42.1c0 1.1-.7 2-1.6 2-.7 0-.7 0-.7-2s0-2 .7-2c.8 0 1.6.9 1.6 2"/></g><path fill="#3e4347" d="m2 52.2h4.8v2h-4.8z"/><path fill="#c5d0d8" d="m16.5 20.3h1.9v17.8h-1.9z"/><g fill="#3e4347"><path d="m15.6 20.8h.9v7.1h-.9z"/><path d="m18.4 20.8h.9v7.1h-.9z"/></g><path fill="#c5d0d8" d="m31.1 20.1h1.9v17.8h-1.9z"/><g fill="#3e4347"><path d="m30.1 20.8h.9v7.1h-.9z"/><path d="m32.9 20.8h.9v7.1h-.9z"/></g><path fill="#c5d0d8" d="m45.6 20.1h1.9v17.8h-1.9z"/><g fill="#3e4347"><path d="m44.7 20.8h.9v7.1h-.9z"/><path d="m47.5 20.8h.9v7.1h-.9z"/><path d="m25.4 15.1h13.1v3.8h-13.1z"/><path d="m2 2h60v1.9h-60z"/><path transform="matrix(.5237-.8519.8519.5237 5.7151 33.7079)" d="m27.9 11.3h10.3v.9h-10.3z"/><path transform="matrix(.524-.8517.8517.524 7.2275 39.3674)" d="m33.7 12.4h10.3v1.7h-10.3z"/><path transform="matrix(.7881-.6155.6155.7881 2.744 23.6406)" d="m35.3 2h.9v11.8h-.9z"/><path transform="matrix(.7879-.6158.6158.7879 4.3402 25.2133)" d="m37.9 1.8h1.8v9h-1.8z"/></g><path fill="#f15744" d="m62 45.6h-2.3v-2.8l2.3-.1z"/><path fill="#ffd45c" d="m59.7 39.9l2.3-1v3.9h-2.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f68f.svg b/riot/emojione/svg/1f68f.svg new file mode 100644 index 0000000..3e9cb1d --- /dev/null +++ b/riot/emojione/svg/1f68f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#83bf4f" d="m26 26h4v38h-4z"/><path fill="#42ade2" d="m31 30h19v6h-19z"/><path fill="#fc97b2" d="m31 36h19v6h-19z"/><path fill="#42ade2" d="m14 30h11v6h-11z"/><path fill="#fc97b2" d="m14 36h11v6h-11z"/><path fill="#42ade2" d="m31 42h19v6h-19z"/><g fill="#699635"><path d="m26 48h4v2h-4z"/><path d="m25 35h6v2h-6z"/><path d="m25 41h6v2h-6z"/></g><path d="m28 0c-7.7 0-14 6.3-14 14 0 3.9 1.6 7.4 4.1 9.9l9.9 1 9.9-1c2.5-2.5 4.1-6 4.1-9.9 0-7.7-6.3-14-14-14" fill="#42ade2"/><path d="m37.9 23.9l-2.8-2.8c-3.9 3.9-10.2 3.9-14.1 0l-2.8 2.8c2.2 2.2 5 3.5 7.9 3.9v2.2h4v-2.2c2.8-.4 5.6-1.7 7.8-3.9" fill="#ff717f"/><path d="m34 15c0 1.1-.9 2-2 2h-8c-1.1 0-2-.9-2-2v-8c0-1.1.9-2 2-2h8c1.1 0 2 .9 2 2v8" fill="#fff"/><g fill="#42ade2"><path d="m32 10c0 .6-.4 1-1 1h-6c-.5 0-1-.4-1-1v-2c0-.6.5-1 1-1h6c.6 0 1 .4 1 1v2"/><circle cx="25" cy="14" r="1"/><circle cx="31" cy="14" r="1"/></g><g fill="#fff"><path d="m31 16v3c0 .5.5 1 1 1 .6 0 1-.5 1-1v-3h-2"/><path d="m23 16v3c0 .5.5 1 1 1 .6 0 1-.5 1-1v-3h-2"/></g><g fill="#699635"><path d="m25 42h6v6h-6z"/><path d="m25 36h6v6h-6z"/><path d="m25 30h6v6h-6z"/></g><g fill="#83bf4f"><path d="m27 30h2v5h-2z"/><path d="m27 37h2v4h-2z"/><path d="m27 43h2v5h-2z"/></g><g fill="#fff"><path d="m15.9 31.6h1.6v3h-1.6z"/><path d="m19.5 31.6h3.3v3h-3.3z"/><path d="m15.9 37.5h3.3v3h-3.3z"/><path d="m21.2 37.5h1.7v3h-1.7z"/><path d="m42.6 31.5h6.2v1h-6.2z"/><path d="m35.2 31.5h6.2v1h-6.2z"/><path d="m38.6 33.5h10.1v1h-10.1z"/><path d="m37.4 43.5h11.3v1h-11.3z"/><path d="m45 45.5h3.7v1h-3.7z"/><path d="m33.3 45.5h10.6v1h-10.6z"/><path d="m41.5 37.5h7.2v1h-7.2z"/><path d="m32.9 37.5h7.2v1h-7.2z"/><path d="m45 39.5h3.8v1h-3.8z"/><path d="m40.1 39.5h3.8v1h-3.8z"/><path d="m35.5 39.5h3.8v1h-3.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f690.svg b/riot/emojione/svg/1f690.svg new file mode 100644 index 0000000..5357258 --- /dev/null +++ b/riot/emojione/svg/1f690.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 51.6c0 .6.1 3.4-3.6 3.4 0 0-40.9 0-52.9 0-.6 0-3.4-.5-3.5-3.2 0 0 0-8.6 0-14.7 0-8.1 3.6-20.1 15.1-20.1 13.3 0 40.1 0 40.1 0 4.8 0 4.8 3.2 4.8 8.4v26.2" fill="#dae3ea"/><path d="m62 49.8c0 2.5 0 5.2-3.6 5.2 0 0-40.9 0-52.9 0-.6 0-3.4-.5-3.5-3.2v-3.1h60v1.1" fill="#c5d0d8"/><g fill="#3e4347"><path d="m7.9 36h4.5c3.5-4 8.2-4 8.2-4v-12.4c-7.1 0-12.7 3.8-12.7 16.4"/><path d="m2 38.5h3c0 0-.3-13.8 5.2-17.7h-2.4c0-.1-6.2 4.7-5.8 17.7"/><path d="m23.4 19.6h35.1v12.4h-35.1z"/><path d="m6.4 51.8c0 1.1-.7 2-1.6 2-.7 0-.7 0-.7-2s0-2 .7-2c.8 0 1.6.9 1.6 2"/></g><path d="m5.9 51.8c0 .7-.5 1.3-1.1 1.3-.5 0-.5 0-.5-1.3s0-1.3.5-1.3c.6 0 1.1.6 1.1 1.3" fill="#fff"/><path fill="#f15744" d="m62 45.3l-2.3-2.9v-2.8h2.3z"/><path fill="#ffd45c" d="m59.7 36.7l2.3-2.8v5.7h-2.3z"/><path fill="#3e4347" d="m10.6 45.5h-5.8v-3l5.8-.9z"/><path fill="#fff" d="m9.1 45.1h-4.1v-2.2l4.1-.6z"/><path d="m62 46.6c0 0-20.2 0-26.8 0-4.3 0-5.6 2.1-5.6 2.1h32.4v-2.1" fill="#62727a"/><path d="m60.2 54.7c0-5.2-4.2-9.4-9.4-9.4-5.2 0-9.4 4.2-9.4 9.4.1 2.5 18.8 2.5 18.8 0" fill="#c5d0d8"/><path d="m57.9 54.9c0-3.9-3.2-7.1-7.1-7.1-3.9 0-7.1 3.2-7.1 7.1s3.2 7.1 7.1 7.1c3.9 0 7.1-3.2 7.1-7.1" fill="#3e4347"/><circle cx="50.8" cy="54.9" r="4" fill="#dae3ea"/><g fill="#3e4347"><circle cx="50.8" cy="50.9" r="1"/><circle cx="47.3" cy="52.9" r="1"/><circle cx="47.3" cy="56.9" r="1"/><circle cx="50.8" cy="59" r="1"/><circle cx="54.3" cy="56.9" r="1"/><path d="m54.8 53.8c-.5.3-1.1.1-1.4-.4s-.1-1.1.4-1.4c.5-.3 1.1-.1 1.4.4.3.5.1 1.1-.4 1.4"/></g><circle cx="50.8" cy="54.9" r="2" fill="#62727a"/><path d="m28.3 54.7c0-5.2-4.2-9.4-9.4-9.4-5.2 0-9.4 4.2-9.4 9.4 0 2.5 18.8 2.5 18.8 0" fill="#c5d0d8"/><path d="m26 54.9c0-3.9-3.2-7.1-7.1-7.1-3.9 0-7.1 3.2-7.1 7.1s3.2 7.1 7.1 7.1c3.9 0 7.1-3.2 7.1-7.1" fill="#3e4347"/><path d="m22.9 54.9c0-2.2-1.8-4-4-4-2.2 0-4 1.8-4 4 0 2.2 1.8 4 4 4 2.2.1 4-1.7 4-4" fill="#dae3ea"/><g fill="#3e4347"><circle cx="18.9" cy="50.9" r="1"/><circle cx="15.4" cy="52.9" r="1"/><path d="m14.9 56.1c.5-.3 1.1-.1 1.4.4.3.5.1 1.1-.4 1.4-.5.3-1.1.1-1.4-.4-.3-.5-.1-1.2.4-1.4"/><circle cx="18.9" cy="59" r="1"/><circle cx="22.4" cy="56.9" r="1"/><circle cx="22.4" cy="52.9" r="1"/></g><g fill="#62727a"><circle cx="18.9" cy="54.9" r="2"/><path d="m39.2 36.3h15v.9h-15z"/><path d="m25.2 37.6c0 .3-.2.5-.5.5-.3 0-.5-.2-.5-.5v-2.8c0-.3.2-.5.5-.5.3 0 .5.2.5.5v2.8"/><path d="m17.5 36.5c-.3 0-.5-.2-.5-.5 0-.3.2-.5.5-.5h2.8c.3 0 .5.2.5.5 0 .3-.2.5-.5.5h-2.8"/><path d="m2 41.6h1.9v5.6h-1.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f691.svg b/riot/emojione/svg/1f691.svg new file mode 100644 index 0000000..2bcbcff --- /dev/null +++ b/riot/emojione/svg/1f691.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b3bdc4" d="m29.2 12.8h9.4v4.7h-9.4z"/><path d="m4.6 34.4c-.5.6-.7 3.2-.7 3.2v15h54.9c0 0 3.3-9.4 3.3-30 0-7.3-4.6-7.5-20.6-7.5s-20 1.5-23.4 4.7c-3.3 2.9-9.8 10.2-13.5 14.6" fill="#e1e8ed"/><path d="m19.5 20.8l-11.7 12.1h19.5v-15.3c-3.6 0-6.4 1.7-7.8 3.2" fill="#3e4347"/><path d="m62 54.5c0 1-.8 1.9-1.9 1.9h-56.2c-1 0-1.9-.8-1.9-1.9 0-1 .8-1.9 1.9-1.9h56.2c1.1 0 1.9.9 1.9 1.9" fill="#b3bdc4"/><path d="m33.9 6.7c-1.6 0-2.6 1.3-2.8 2.8-.1.8-.9 3.3-.9 3.3h7.5c0 0-.8-2.4-.9-3.3-.3-1.5-1.4-2.8-2.9-2.8" fill="#f15744"/><path d="m32 9.5c0 1 .8 1.9 1.9 1.9v-3.8c-1.1 0-1.9.9-1.9 1.9" fill="#ffc7ce"/><g fill="#f15744"><path d="m40 2l-2.8 4.7 4.6-3.3z"/><path d="m27.7 2l2.9 4.7-4.7-3.3z"/><path d="m38.6 8.6l4.6-1.9 1 1.9z"/><path d="m29.2 8.6l-4.7-1.9-.9 1.9z"/></g><path d="m6.4 46.7v-7.2c0-1-.8-1.9-1.9-1.9h-.6v3.8 7.2h.6c1 0 1.9-.9 1.9-1.9" fill="#62727a"/><g fill="#f15744"><path d="m61.4 36.6h-28.5l-3.8 3.8h-22.7v3.8h24.7l3.7-3.7h26.2c.2-1.2.3-2.5.4-3.9"/><path d="m52.6 25.9c0-.5-.4-.9-.9-.9h-3.3c-.5 0-.9-.4-.9-.9v-3.3c0-.5-.4-.9-.9-.9h-.9c-.5 0-.9.4-.9.9v3.2c0 .5-.4.9-.9.9h-3.3c-.5 0-.9.4-.9.9v.9c0 .5.4.9.9.9h3.3c.5 0 .9.4.9.9v3.5c0 .5.4.9.9.9h.9c.5 0 .9-.4.9-.9v-3.3c0-.5.4-.9.9-.9h3.3c.5 0 .9-.4.9-.9v-1"/></g><path d="m56.4 54.5c0-4.1-3.4-7.5-7.5-7.5-4.1 0-7.5 3.4-7.5 7.5 0 4.1 3.4 7.5 7.5 7.5 4.1 0 7.5-3.4 7.5-7.5" fill="#3e4347"/><path d="m48.9 50.2c2.4 0 4.3 1.9 4.3 4.3 0 2.4-1.9 4.3-4.3 4.3-2.4 0-4.3-1.9-4.3-4.3 0-2.4 1.9-4.3 4.3-4.3" fill="#dae3ea"/><g fill="#3e4347"><circle cx="48.9" cy="50.2" r="1.1"/><circle cx="45.2" cy="52.4" r="1.1"/><circle cx="45.2" cy="56.6" r="1.1"/><circle cx="48.9" cy="58.8" r="1.1"/><circle cx="52.6" cy="56.6" r="1.1"/><path d="m53.1 53.3c-.5.3-1.2.1-1.5-.4-.3-.5-.1-1.2.4-1.5.5-.3 1.2-.1 1.5.4s.1 1.2-.4 1.5"/></g><circle cx="48.9" cy="54.5" r="2.1" fill="#62727a"/><path d="m22.6 54.5c0-4.1-3.4-7.5-7.5-7.5-4.1 0-7.5 3.4-7.5 7.5 0 4.1 3.4 7.5 7.5 7.5 4.2 0 7.5-3.4 7.5-7.5" fill="#3e4347"/><path d="m19.4 54.5c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3 0 2.4 1.9 4.3 4.3 4.3 2.4 0 4.3-1.9 4.3-4.3" fill="#dae3ea"/><g fill="#3e4347"><circle cx="15.1" cy="50.2" r="1.1"/><circle cx="11.4" cy="52.4" r="1.1"/><path d="m10.9 55.7c.5-.3 1.2-.1 1.5.4.3.5.1 1.2-.4 1.5-.5.3-1.2.1-1.5-.4-.3-.5-.1-1.2.4-1.5"/><circle cx="15.1" cy="58.8" r="1.1"/><circle cx="18.8" cy="56.6" r="1.1"/><circle cx="18.8" cy="52.4" r="1.1"/></g><circle cx="15.1" cy="54.5" r="2.1" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f692.svg b/riot/emojione/svg/1f692.svg new file mode 100644 index 0000000..d82b254 --- /dev/null +++ b/riot/emojione/svg/1f692.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#f14e3a"><path d="m18.9 23h-11c-1.1 0-2 .9-2 2s.9 2 2 2h11v-4"/><path d="m61.9 33l-6-6h-26c-1.1 0-2 .9-2 2v22h34v-18"/><path d="m19.9 23h-8.2c-1.1 0-1.7.9-1.8 2l-2.9 11-1.6 1.1c-.9.6-1.9 1.8-2.1 2.9l-1.3 9c-.2 1.1.6 2 1.7 2h18.3v-26c-.1-1.1-1-2-2.1-2"/></g><g fill="#3e4347"><path d="m11.3 33l.7-5c.1-.5-.3-1-.9-1h-2l-2.1 9"/><path d="m19.9 32c0 .6-.4 1.3-.9 1.5l-4.3 1.5c-.5.2-.8-.2-.7-.7l.7-6.2c.1-.6.5-1 1-1h3.4c.5 0 .9.4.8 1v3.9"/></g><g fill="#e1e8ed"><path d="m15.8 49c1.3.7 2.3 1.7 3.1 3h.1 3v-3h-6.2"/><path d="m0 51v4c0 1.1.9 2 2 2h2c0-.3-.1-.7-.1-1 0-3 1.6-5.6 4.1-7h-6c-1.1 0-2 .9-2 2"/><path d="m20.9 52c-1.5-3.5-5-6-9-6s-7.5 2.5-9 6h18"/></g><circle cx="11.9" cy="56" r="8" fill="#3e4347"/><circle cx="11.9" cy="56" r="5" fill="#b2c1c0"/><g fill="#3e4347"><path d="m11.9 51.7c-.8 0-1.2.5-.9 1.2l.5 1.4c.2.6.6.6.9 0l.5-1.4c.2-.7-.2-1.2-1-1.2"/><path d="m7.9 54.7c-.3.7.1 1.3.8 1.2l1.4-.1c.7 0 .8-.4.3-.8l-1.1-.9c-.6-.4-1.2-.1-1.4.6"/><path d="m9.4 59.5c.6.4 1.3.3 1.4-.4l.4-1.4c.2-.7-.1-.9-.7-.5l-1.1.8c-.6.3-.6 1 0 1.5"/><path d="m14.5 59.5c.6-.4.6-1.1.1-1.5l-1.2-.8c-.6-.4-.9-.2-.7.5l.4 1.4c.1.6.7.8 1.4.4"/><path d="m16 54.7c-.2-.7-.9-1-1.4-.5l-1.1.8c-.5.4-.4.8.3.8l1.4.1c.7.1 1-.5.8-1.2"/><circle cx="37.9" cy="56" r="8"/></g><circle cx="37.9" cy="56" r="5" fill="#b2c1c0"/><g fill="#3e4347"><path d="m37.9 51.7c-.8 0-1.2.5-.9 1.2l.5 1.4c.2.6.6.6.9 0l.5-1.4c.2-.7-.2-1.2-1-1.2"/><path d="m33.9 54.7c-.2.7.1 1.3.8 1.2l1.4-.1c.7 0 .8-.4.3-.8l-1.1-.9c-.6-.4-1.2-.1-1.4.6"/><path d="m35.4 59.5c.6.4 1.3.3 1.4-.4l.4-1.4c.2-.7-.1-.9-.7-.5l-1.2.8c-.5.3-.5 1 .1 1.5"/><path d="m40.5 59.5c.6-.4.6-1.1.1-1.5l-1.2-.8c-.6-.4-.9-.2-.7.5l.4 1.4c.1.6.7.8 1.4.4"/><path d="m42 54.7c-.2-.7-.9-1-1.4-.5l-1.1.8c-.5.4-.4.8.3.8l1.4.1c.7.1 1-.5.8-1.2"/><circle cx="54.9" cy="56" r="8"/></g><circle cx="54.9" cy="56" r="5" fill="#b2c1c0"/><g fill="#3e4347"><path d="m54.9 51.7c-.8 0-1.2.5-.9 1.2l.5 1.4c.2.6.6.6.9 0l.5-1.4c.2-.7-.2-1.2-1-1.2"/><path d="m50.9 54.7c-.2.7.1 1.3.8 1.2l1.4-.1c.7 0 .8-.4.3-.8l-1.1-.9c-.6-.4-1.2-.1-1.4.6"/><path d="m52.4 59.5c.6.4 1.3.3 1.4-.4l.4-1.4c.2-.7-.1-.9-.7-.5l-1.2.8c-.5.3-.5 1 .1 1.5"/><path d="m57.5 59.5c.6-.4.6-1.1.1-1.5l-1.2-.8c-.6-.4-.9-.2-.7.5l.4 1.4c.1.6.7.8 1.4.4"/><path d="m59 54.7c-.2-.7-.9-1-1.4-.5l-1.1.8c-.5.4-.4.8.3.8l1.4.1c.7.1 1-.5.8-1.2"/></g><path d="m26.9 35h-4c-.5 0-1 .5-1 1v16h6v-16c0-.5-.4-1-1-1" fill="#b3bdc4"/><g fill="#e1e8ed"><path d="m62 49c-1.8-1.8-4.3-3-7.1-3h-17c-2.7 0-5.2 1.2-7 3h-3v3h3.1c1.4-2.4 4-4 6.9-4 3 0 5.5 1.6 6.9 4h3.2c1.4-2.4 4-4 6.9-4 4.4 0 8 3.6 8 8 0 .3 0 .5 0 .8.7-.3 1.1-1 1.1-1.8v-4c0-1.1-.9-2-2-2"/><path d="m18.9 19h-2c0-.5-.4-1-1-1h-3c-2.2 0-4 1.8-4 4v1h11l-1-4"/></g><path d="m14.9 19h-2c-1.7 0-3 1.3-3 3v1h6v-3c0-.5-.4-1-1-1" fill="#42ade2"/><g fill="#b8331e"><path d="m53.9 43h-16c-1.7 0-3-1.3-3-3v-6c0-1.7 1.3-3 3-3h16c1.7 0 3 1.3 3 3v6c0 1.7-1.3 3-3 3m-16-10c-.6 0-1 .4-1 1v6c0 .6.4 1 1 1h16c.6 0 1-.4 1-1v-6c0-.6-.4-1-1-1h-16"/><path d="m36.9 35h18v1h-18z"/><path d="m36.9 38h18v1h-18z"/></g><path fill="#b2c1c0" d="m54.2 21.3l-2.9-11.1-2.2-.6 2.9 11.1z"/><g fill="#3e4347"><path d="m13.2 3.8c-.1.5-.7.8-1.2.7-.5-.1-.9-.7-.7-1.2l.5-1.9c.1-.5.7-.9 1.2-.7.5.1.9.7.7 1.2l-.5 1.9"/><path d="m15.8 5.6l-4.5-2.3.5-1.9 5.1.3z"/></g><path transform="matrix(.2588-.9659.9659.2588 17.4651 39.8711)" fill="#e1e8ed" d="m32.7-6.4h4v30h-4z"/><path d="m53.1 9.4l-24.5-6.6-2.2-.6-.8.8-4.1 4.1-1 3.9-7.6-2-.5 1.9 25.1 6.7 1.4 2.4 12.6 3.4.5-1.9 1.9.5 2-1.9v-5.8l-2.8-4.9m-30.4 2.1l1-3.9 2.7-2.6 2.1 8.2-5.8-1.7m5.7-6.7l6.9 1.8-5.1 5.1-1.8-6.9m2.6 9l6-6 2.2 8.2-8.2-2.2m10.4 2.7l-2.4-8.9 8.8 2.4-6.4 6.5" fill="#b3bdc4"/><path d="m20.3.6l-1.9-.6c-.5-.1-1.1.2-1.2.7l-2.3 8.7 3.9 1 2.2-8.6c.1-.6-.2-1.1-.7-1.2" fill="#b2c1c0"/><g fill="#3e4347"><circle cx="18.3" cy="4.2" r="1"/><path d="m48.9 16l-7 7h-3v4h17v-11z"/></g><circle cx="51.1" cy="21" r="2" fill="#e1e8ed"/><path d="m26.4 47c0-.5-.4-1-1-1h-1c-.5 0-1 .5-1 1v1c0 .5.5 1 1 1h1c.6 0 1-.5 1-1v-1" fill="#f14e3a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f693.svg b/riot/emojione/svg/1f693.svg new file mode 100644 index 0000000..7964668 --- /dev/null +++ b/riot/emojione/svg/1f693.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34.8 20.6h-2.6c-1.9 0-3.5-1.6-3.5-3.5 0-1.9 1.6-3.5 3.5-3.5h2.6v7" fill="#42ade2"/><path d="m38.9 13.6h2.6c1.9 0 3.5 1.6 3.5 3.5 0 1.9-1.6 3.5-3.5 3.5h-2.6v-7" fill="#f15744"/><path d="m39.1 20.6v-7.4c0-1.2-1-2.2-2.2-2.2s-2.2 1-2.2 2.2v7.4h-2.7v2.2h9.8v-2.2c-.1 0-2.7 0-2.7 0" fill="#cbd1d6"/><path d="m58.2 37.6l-5.3-1.6c-1.1-.3-2.1-1.4-2.3-2.4l-2.2-9.2c-.2-1-1.3-1.9-2.4-1.9h-18.3c-1.1 0-2.4 1-2.9 1.9l-5.3 9.4c-.5.9-1.8 1.9-2.8 2.2l-8.3 2.5c-1.1.3-2.2 1.8-2.5 2.8l.6 2-1.6 1.8-1 9.8h56.2v-14.5c0-1.1-.9-2.5-1.9-2.8" fill="#3e4347"/><g fill="#b4d7ee"><path d="m35.8 33.7c0 .6.4 1 .9 1h7.7c.5 0 .8-.5.7-1l-1.3-7.4c-.1-.6-.6-1-1.1-1h-6c-.5 0-.9.5-.9 1v7.4"/><path d="m33.9 26.3c0-.6-.4-1-.9-1h-5.1c-.5 0-1.1.4-1.4.9l-3.8 7.6c-.2.5 0 .9.5.9h9.7c.5 0 .9-.5.9-1v-7.4z"/></g><path d="m4.9 45.1h2.8c.5 0 1-.4 1.1-.9l.6-1.9c.2-.5-.1-.9-.5-.9h-3l-1 3.7" fill="#fff"/><path d="m60.1 41.3h-2.3c-.4 0-.8.4-.9.9 0 0-.4 1.4-.5 1.9-.1.5.1.9.4.9h3.3c0 .1 0-3.7 0-3.7" fill="#f15744"/><g fill="#b2c1c0"><path d="m56 54.2c0 .7.5 1.2 1.2 1.2h3.6c.7 0 1.2-.5 1.2-1.2v-2.4c0-.7-.5-1.2-1.2-1.2h-3.6c-.7 0-1.2.5-1.2 1.2v2.4"/><path d="m2 54.2c0 .7.5 1.2 1.2 1.2h3.6c.7 0 1.2-.5 1.2-1.2v-2.4c0-.7-.5-1.2-1.2-1.2h-3.6c-.7 0-1.2.5-1.2 1.2v2.4"/><circle cx="52.2" cy="40.6" r="1.2"/></g><path d="m44.6 38.2c0 4.7-6.6 7.1-6.6 13.8h-12c0-6.7-6.6-8.9-6.6-13.8h25.2" fill="#e8e8e8"/><path fill="#dbb471" d="m32 40.6l1.1 3.4h3.6l-2.9 2.1 1.1 3.5-2.9-2.2-2.9 2.2 1.1-3.5-2.9-2.1h3.6z"/><ellipse cx="17.1" cy="53.5" rx="8.4" ry="8.5" fill="#62727a"/><ellipse cx="17.1" cy="53.5" rx="4.8" ry="4.8" fill="#e8e8e8"/><g fill="#3e4347"><path d="m18.2 51.1c-.2.6-.7 1.2-1.1 1.2s-.9-.5-1.1-1.2v-.1c-.2-.6.3-1.2 1.2-1.2.7.1 1.2.6 1 1.3"/><path d="m15.6 51.3c.5.5.7 1.2.4 1.6-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.9-.4-1.6.5-.7 1.2-.9 1.7-.4"/><path d="m14.4 53.7c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.6l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.8-.2-1.5.5-1.7"/><path d="m15.9 55.9c.2-.6.7-1.2 1.1-1.2s.9.5 1.1 1.2v.1c.2.6-.3 1.2-1.2 1.2-.7 0-1.2-.6-1-1.3"/><path d="m18.5 55.7c-.5-.5-.7-1.2-.4-1.6.2-.4.9-.5 1.6-.4h.1c.7.1.9.9.4 1.6-.4.8-1.1 1-1.7.4"/><path d="m19.7 53.3c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.6l.1-.1c.5-.5 1.2-.3 1.6.4.4.8.2 1.6-.5 1.7"/></g><g fill="#e8e8e8"><path d="m19.7 56.9l-1.1.6-4.2-7.3 1.1-.6z"/><path d="m12.8 52.9h8.4v1.2h-8.4z"/><path d="m18.6 49.6l1.1.6-4.2 7.3-1.1-.6z"/></g><ellipse cx="46.9" cy="53.5" rx="8.4" ry="8.5" fill="#62727a"/><ellipse cx="46.9" cy="53.5" rx="4.8" ry="4.8" fill="#e8e8e8"/><g fill="#3e4347"><path d="m48.1 51.1c-.2.6-.7 1.2-1.1 1.2s-.9-.5-1.1-1.2v-.1c-.2-.6.3-1.2 1.2-1.2.7.1 1.2.6 1 1.3"/><path d="m45.5 51.3c.5.5.7 1.2.4 1.6-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.9-.4-1.6.4-.7 1.1-.9 1.7-.4"/><path d="m44.3 53.7c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.6l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.8-.2-1.5.5-1.7"/><path d="m45.8 55.9c.2-.6.7-1.2 1.1-1.2s.9.5 1.1 1.2v.1c.2.6-.3 1.2-1.2 1.2-.7 0-1.2-.6-1-1.3"/><path d="m48.4 55.7c-.5-.5-.7-1.2-.4-1.6.2-.4.9-.5 1.6-.4h.1c.7.1.9.9.4 1.6-.5.8-1.2 1-1.7.4"/><path d="m49.6 53.3c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.6l.1-.1c.5-.5 1.2-.3 1.6.4.4.8.2 1.6-.5 1.7"/></g><g fill="#e8e8e8"><path d="m49.6 56.9l-1.1.6-4.2-7.3 1.1-.6z"/><path d="m42.7 52.9h8.4v1.2h-8.4z"/><path d="m48.5 49.6l1.1.6-4.2 7.3-1.1-.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f694.svg b/riot/emojione/svg/1f694.svg new file mode 100644 index 0000000..680a097 --- /dev/null +++ b/riot/emojione/svg/1f694.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#42ade2"><path d="m36.6 8.3l3.1-6.3-.8 7z"/><path d="M45.2 11.3 49.6 8 47 12.9z"/><path d="m27.8 8.3l-3.1-6.3.8 7z"/><path d="m19.2 11.3l-4.5-3.3 2.6 4.9z"/></g><path fill="#62696d" d="m16.7 19.2h30.6v2.4h-30.6z"/><path fill="#f15744" d="m13.6 16.4h12.2v3.6h-12.2z"/><path fill="#badede" d="m25.9 16.4h12.2v3.6h-12.2z"/><path fill="#42ade2" d="m38.1 16.4h12.2v3.6h-12.2z"/><g fill="#62696d"><path d="m12.2 35.2c0 0-6.2.6-8-.9-1.2-1-2-3.5-.9-4.6 1.3-1.3 5.7-.5 6.9.6 1.3 1.2 2 4.9 2 4.9"/><path d="m51.8 35.2c0 0 6.2.6 8-.9 1.2-1 2-3.5.9-4.6-1.3-1.3-5.7-.5-6.9.6-1.3 1.2-2 4.9-2 4.9"/></g><path d="m60.2 56.7h-56.4c0 0-1.3-14.6 0-15.5 10.7-7.3 8.9-19.6 11-19.6 0 0 6.7-.6 17.1-.6 10.4 0 17.1.6 17.1.6 2.4 0 .1 11.4 11 19.6 1.5 1 .2 15.5.2 15.5" fill="#3e4347"/><path d="m45.1 45.6c0-.7-.5-1.3-1.1-1.3h-23.9c-.6 0-1.1.6-1.1 1.3v7.1h26.1v-7.1" fill="#62696d"/><path d="m16.8 48.7c0 .7-.5 1.2-1.2 1.2l-8.8-.9c-.7 0-1.2-.5-1.2-1.2v-3.6c0-.7.5-1.2 1.2-1.2l8.8.9c.7 0 1.2.5 1.2 1.2v3.6" fill="#fff"/><path d="m8.7 49.2l-1.9-.2c-.7 0-1.2-.5-1.2-1.2v-3.6c0-.7.5-1.2 1.2-1.2l1.8.2v6z" fill="#ffce31"/><path d="m47.2 48.7c0 .7.5 1.2 1.2 1.2l8.8-.9c.7 0 1.2-.5 1.2-1.2v-3.6c0-.7-.5-1.2-1.2-1.2l-8.8 1c-.7 0-1.2.5-1.2 1.2v3.5" fill="#fff"/><path d="m55.3 49.2l1.8-.2c.7 0 1.2-.5 1.2-1.2v-3.6c0-.7-.5-1.2-1.2-1.2l-1.8.2v6" fill="#ffce31"/><g fill="#62696d"><path d="m11.7 34.4c0 0 5.1 2.9 7.5 7.2l-3.5 1.2c0 0-.5-3-4-8.4"/><path d="m52.3 34.4c0 0-5.1 2.9-7.5 7.2l3.5 1.2c0 0 .5-3 4-8.4"/></g><g fill="#3e4347"><path d="m16.9 60.6c0 .8-.5 1.4-1.2 1.4h-8.6c-.7 0-1.2-.6-1.2-1.4v-2.7h11v2.7"/><path d="m58.1 60.6c0 .8-.5 1.4-1.2 1.4h-8.6c-.7 0-1.2-.6-1.2-1.4v-2.7h11v2.7"/></g><path d="m62 57.3c0 .5-.5.8-1.2.8 0 0-12.2.8-28.8.8s-28.8-.7-28.8-.7c-.7 0-1.2-.4-1.2-.8v-4.9c0-.5.5-.8 1.2-.8 0 0 12.2.8 28.8.8s28.8-.8 28.8-.8c.7 0 1.2.4 1.2.8 0-.1 0 4.8 0 4.8" fill="#c5d0d8"/><g fill="#f15744"><ellipse cx="11.4" cy="55.3" rx="1.9" ry="1.9"/><ellipse cx="52.6" cy="55.3" rx="1.9" ry="1.9"/></g><path d="m49.8 33.4c0 0-8.4-.4-17.8-.4-9.3 0-17.8.4-17.8.4l2.5-9.5c0 0 6.6-.4 15.3-.4 8.7 0 15.3.4 15.3.4l2.5 9.5" fill="#b4d7ee"/><path fill="#ffce31" d="m24.5 54.4h15v5.6h-15z"/><g fill="#3e4347"><path d="m22.2 59.2c0 2-4 2-4 0v-8.8c0-2 4-2 4 0v8.8"/><path d="m45.8 59.2c0 2-4 2-4 0v-8.8c0-2 4-2 4 0v8.8"/></g><circle cx="43.8" cy="54.1" r="3.3" fill="#62696d"/><circle cx="43.8" cy="54.1" r="2.3" fill="#fff"/><circle cx="20.2" cy="54.1" r="3.3" fill="#62696d"/><circle cx="20.2" cy="54" r="2.3" fill="#fff"/><g fill="#c5d0d8"><circle cx="13.3" cy="46.7" r="2.6"/><circle cx="50.7" cy="46.7" r="2.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f695.svg b/riot/emojione/svg/1f695.svg new file mode 100644 index 0000000..c6bdad8 --- /dev/null +++ b/riot/emojione/svg/1f695.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.2 38.1l-5.3-1.6c-1.1-.3-2.1-1.4-2.3-2.3l-2.2-9.1c-.2-1-1.3-1.8-2.5-1.8h-18.2c-1.1 0-2.4 1-2.9 1.8l-5.3 9.2c-.5.9-1.8 1.9-2.8 2.2l-8.3 2.5c-1.1.3-2.2 1.8-2.5 2.7l.6 1.9-1.6 1.8-1 3.7h56.2v-8.3c0-1-.9-2.4-1.9-2.7" fill="#ffe62e"/><path d="m62 51.3c0-1.4-.5-2.2-1.5-2.2h-57c-1 0-1.5.8-1.5 2.2 0 .3.1 2 .2 2.3.2 1.2 1.2 1.1 2.3 1.1h55.1c1 0 2 .1 2.3-1.1 0-.3.1-2 .1-2.3" fill="#b2c1c0"/><g fill="#3e4347"><path d="m35.8 34.2c0 .6.4 1 .9 1h7.7c.5 0 .8-.4.7-1l-1.3-7.2c-.1-.6-.6-1-1.1-1h-6c-.5 0-.9.5-.9 1v7.2"/><path d="m33.9 27.1c0-.6-.4-1-.9-1h-5.1c-.5 0-1.1.4-1.4.9l-3.8 7.4c-.2.5 0 .9.5.9h9.7c.5 0 .9-.5.9-1v-7.2z"/></g><path d="m4.9 45.4h2.8c.5 0 1-.4 1.1-.9l.6-1.8c.2-.5-.1-.9-.5-.9h-3l-1 3.6" fill="#fff"/><path d="m60.1 41.7h-2.3c-.4 0-.8.4-.9.9 0 0-.4 1.4-.5 1.8-.1.5.1.9.4.9h3.3v-3.6" fill="#f15744"/><g fill="#3e4347"><path d="m25 42.2c0 .3-.2.5-.5.5h-1.9c-.3 0-.5-.2-.5-.5v-1.8c0-.3.2-.5.5-.5h1.9c.3 0 .5.2.5.5v1.8"/><path d="m27.8 45c0 .3-.2.5-.5.5h-1.9c-.3 0-.5-.2-.5-.5v-1.8c0-.3.2-.5.5-.5h1.9c.3 0 .5.2.5.5v1.8"/><path d="m30.6 42.2c0 .3-.2.5-.5.5h-1.9c-.3 0-.5-.2-.5-.5v-1.8c0-.3.2-.5.5-.5h1.9c.3 0 .5.2.5.5v1.8"/><path d="m33.4 45c0 .3-.2.5-.5.5h-1.9c-.3 0-.5-.2-.5-.5v-1.8c0-.3.2-.5.5-.5h1.9c.3 0 .5.2.5.5v1.8"/><path d="m36.2 42.2c0 .3-.2.5-.5.5h-1.9c-.3 0-.5-.2-.5-.5v-1.8c0-.3.2-.5.5-.5h1.9c.3 0 .5.2.5.5v1.8"/><path d="m39 45c0 .3-.2.5-.5.5h-1.9c-.3 0-.5-.2-.5-.5v-1.8c0-.3.2-.5.5-.5h1.9c.3 0 .5.2.5.5v1.8"/><path d="m41.8 42.2c0 .3-.2.5-.5.5h-1.9c-.3 0-.5-.2-.5-.5v-1.8c0-.3.2-.5.5-.5h1.9c.3 0 .5.2.5.5v1.8"/></g><path d="m34.2 16.7c-.2-.9-1.1-.8-1.9-.8-.9 0-1.7-.1-1.9.8l-.8 4.8h5.4l-.8-4.8" fill="#f15744"/><g fill="#3e4347"><path d="m35.5 21.5h-2.2l-.3-5.6c-.1-1-.4-.9-.8-.9-.3 0-.7-.1-.8.9l-.3 5.5h-2.1c-.6 0-1.1.4-1.1.9v.9h8.7v-.9c0-.4-.5-.8-1.1-.8"/><ellipse cx="16.1" cy="53.7" rx="8.4" ry="8.3"/></g><ellipse cx="16.1" cy="53.7" rx="4.8" ry="4.7" fill="#e8e8e8"/><g fill="#3e4347"><path d="m17.2 51.4c-.2.6-.7 1.2-1.1 1.2s-.9-.5-1.1-1.2v-.1c-.2-.6.3-1.1 1.2-1.1.7 0 1.2.5 1 1.2"/><path d="m14.6 51.6c.5.5.7 1.2.4 1.5-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.8-.4-1.6.5-.7 1.2-.9 1.7-.3"/><path d="m13.4 53.9c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.5l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.7-.2-1.4.5-1.6"/><path d="m14.9 56c.2-.6.7-1.1 1.1-1.1s.9.5 1.1 1.1v.1c.2.6-.3 1.1-1.2 1.1-.7.1-1.2-.5-1-1.2"/><path d="m17.5 55.8c-.5-.5-.7-1.2-.4-1.5.2-.4.9-.5 1.6-.4h.1c.7.1.9.8.4 1.6-.4.7-1.1.9-1.7.3"/><path d="m18.7 53.5c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.5l.1-.1c.5-.5 1.2-.3 1.6.4.4.7.2 1.4-.5 1.6"/></g><g fill="#e8e8e8"><path d="m18.7 57l-1.1.6-4.2-7.2 1.1-.6z"/><path d="m11.8 53.1h8.4v1.2h-8.4z"/><path d="m17.6 49.8l1.1.6-4.2 7.2-1.1-.6z"/></g><ellipse cx="47.9" cy="53.7" rx="8.4" ry="8.3" fill="#3e4347"/><ellipse cx="47.9" cy="53.7" rx="4.8" ry="4.7" fill="#e8e8e8"/><g fill="#3e4347"><path d="m49.1 51.4c-.2.6-.7 1.2-1.1 1.2s-1-.6-1.2-1.2v-.1c-.2-.6.3-1.1 1.2-1.1.8 0 1.3.5 1.1 1.2"/><path d="m46.5 51.6c.5.5.7 1.2.4 1.5-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.8-.4-1.6.4-.7 1.1-.9 1.7-.3"/><path d="m45.3 53.9c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.5l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.7-.2-1.4.5-1.6"/><path d="m46.8 56c.2-.6.7-1.1 1.1-1.1s.9.5 1.1 1.1v.1c.2.6-.3 1.1-1.2 1.1-.7.1-1.2-.5-1-1.2"/><path d="m49.4 55.8c-.5-.5-.7-1.2-.4-1.5.2-.4.9-.5 1.6-.4h.1c.7.1.9.8.4 1.6-.5.7-1.2.9-1.7.3"/><path d="m50.6 53.5c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.5l.1-.1c.5-.5 1.2-.3 1.6.4.4.7.2 1.4-.5 1.6"/></g><g fill="#e8e8e8"><path d="m50.6 57l-1.1.6-4.2-7.2 1.1-.6z"/><path d="m43.7 53.1h8.4v1.2h-8.4z"/><path d="m49.5 49.8l1.1.6-4.2 7.2-1.1-.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f696.svg b/riot/emojione/svg/1f696.svg new file mode 100644 index 0000000..6a02e81 --- /dev/null +++ b/riot/emojione/svg/1f696.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe62e"><path d="m58.2 31.1c0 0-1.9 2.1-1.9 3.8l-.9-4.3 2.8.5"/><path d="m57.3 27.9c0 0 2.7-.5 3.8.5.6.6.9 2.3.9 2.3 0 1-.8 1.8-1.9 1.8h-2.8c-1 0-1.9-.8-1.9-1.8v-.9c0-1.1.9-1.9 1.9-1.9"/><path d="m5.8 31.1c0 0 1.9 2.1 1.9 3.8l.9-4.3-2.8.5"/><path d="m6.7 27.9c0 0-2.7-.5-3.8.5-.6.6-.9 2.3-.9 2.3 0 1 .8 1.8 1.9 1.8h2.8c1 0 1.9-.8 1.9-1.8v-.9c0-1.1-.9-1.9-1.9-1.9"/></g><path d="m40.4 9.5h-16.8c-.5 0-.9.4-.9.9v1.9c0 .5.4.9.9.9h16.9c.5 0 .9-.4.9-.9v-1.9c0-.5-.4-.9-1-.9" fill="#b2c1c0"/><g fill="#3e4347"><path d="m58.2 60.1c0 1-.8 1.9-1.9 1.9h-7.5c-1 0-1.9-.8-1.9-1.9v-7.5c0-1 .8-1.9 1.9-1.9h7.5c1 0 1.9.8 1.9 1.9v7.5"/><path d="m17 60.1c0 1-.8 1.9-1.9 1.9h-7.5c-1 0-1.9-.8-1.9-1.9v-7.5c0-1 .8-1.9 1.9-1.9h7.5c1 0 1.9.8 1.9 1.9v7.5"/></g><g fill="#ffe62e"><path d="m60.8 42c-1.5-4.6-4.1-7.9-4.1-7.9-5.8 0-7.2-7.7-7.2-7.7h-17.5-17.5c0 0-1.4 7.7-7.2 7.7 0 0-2.6 3.4-4.1 7.9-.6 1.8-.2 5.9 0 7.8.1 1 .3 3.3 3.5 3.5 6.4.4 10.2 1.2 25.4 1.2 15.3 0 18.8-.8 25.1-1.2 3.2-.2 3.4-2.5 3.5-3.5.2-1.9.7-6 .1-7.8"/><path d="m52 16.8c-1.6-3.3-3.5-4-5.9-4.4-3.4-.6-7.1-.9-14.1-.9-7.1 0-10.7.3-14.1.9-2.4.4-4.3 1.2-5.9 4.4-1.9 3.8-4.4 16.2-4.4 18.1 0 2 2.1 2.7 4.7 2.7h19.7 19.7c2.5 0 4.7-.7 4.7-2.7 0-1.9-2.5-14.3-4.4-18.1"/></g><path d="m16.9 36.7c-.5 3.1-3.4 5.6-6.5 5.6-3.1 0-5.1-2.5-4.6-5.6.5-3.1 3.4-5.6 6.5-5.6 3.1 0 5.1 2.5 4.6 5.6" fill="#b2c1c0"/><path d="m15.1 36.7c-.4 2.1-2.3 3.8-4.3 3.8-2 0-3.4-1.7-3.1-3.8.3-2.1 2.3-3.8 4.3-3.8 2.1 0 3.4 1.7 3.1 3.8" fill="#fff"/><path d="m47.9 15.5c-1-.7-8.3-1.8-15.9-1.8s-15 1.1-15.9 1.8c-3.7 2.5-4.7 14.2-4.7 14.2s1.9.9 4.7.9c2.2 0 2.8-1.4 15.9-1.4s13.7 1.4 15.9 1.4c2.8 0 4.7-.9 4.7-.9s-1-11.7-4.7-14.2" fill="#3e4347"/><path d="m47.1 36.7c.5 3.1 3.4 5.6 6.5 5.6 3.1 0 5.1-2.5 4.6-5.6-.5-3.1-3.4-5.6-6.5-5.6-3.1 0-5.1 2.5-4.6 5.6" fill="#b2c1c0"/><path d="m48.9 36.7c.3 2.1 2.3 3.8 4.3 3.8 2 0 3.4-1.7 3.1-3.8-.3-2.1-2.3-3.8-4.3-3.8-2.1 0-3.4 1.7-3.1 3.8" fill="#fff"/><path d="m44.7 50.8c-12.7 0-12.6 0-25.3 0-1 0-.2-1.9.6-2.3 4.4-2.1 19.4-1.8 24 0 .9.3 1.7 2.3.7 2.3" fill="#3e4347"/><g fill="#fff"><circle cx="54.5" cy="47.9" r="2.8"/><circle cx="9.5" cy="47.9" r="2.8"/></g><g fill="#f15744"><circle cx="9.5" cy="47.9" r="1.9"/><circle cx="54.5" cy="47.9" r="1.9"/></g><path d="m39.5 2h-15c-.5 0-.9.4-.9.9v6.6h16.9v-6.6c-.1-.5-.5-.9-1-.9" fill="#ffe62e"/><path d="m41.1 39.7c-.5-1.6-2.4-3.6-4-3.9-2.5-.5-7.7-.5-10.2 0-1.7.3-3.5 2.3-4 3.9l-.1.3c-.5 1.6.4 2.9 2.1 2.9h14.3c1.7 0 2.6-1.3 2.1-2.9l-.2-.3" fill="#e8e8e8"/><path d="m32 36.8c-1.9 0-3.7.1-4.8.3-1 .2-2.5 1.7-3 3l-.1.3c-.1.3-.1.6 0 .8.1.2.4.3.7.3h14.3c.3 0 .6-.1.7-.3.1-.2.1-.5 0-.8l-.1-.3c-.4-1.3-1.9-2.8-3-3-1-.1-2.8-.3-4.7-.3" fill="#62727a"/><g fill="#e8e8e8"><path d="m25.7 38.7h12.6c-.4-.4-.8-.8-1.2-.9h-10.2c-.4.2-.8.5-1.2.9"/><path d="m24.7 40.3l-.1.3h14.9l-.1-.3c-.1-.2-.2-.4-.3-.7h-14.1c-.2.3-.3.5-.3.7"/></g><g fill="#62727a"><path d="m26.5 5.1c0-.3-.2-.5-.5-.5h-.1c-.3 0-.5-.2-.5-.4s.2-.4.5-.4h2.1c.3 0 .5.2.5.4s-.2.4-.5.4h-.1c-.3 0-.5.2-.5.5v2.1c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-2.1z"/><path d="m30.5 6.7c-.3 0-.5.2-.6.4v.1c-.1.2-.3.4-.6.4-.3 0-.4-.2-.3-.4l.9-2.9c.1-.2.4-.4.6-.4h.2c.3 0 .5.2.6.4l.9 2.9c.1.2-.1.4-.3.4-.3 0-.5-.2-.6-.4v-.1c-.1-.2-.4-.4-.6-.4h-.2m.1-.7c.2 0 .4-.2.3-.4-.1-.2-.2-.6-.3-.8 0 0 0-.1-.1-.3 0 0-.1.2-.1.5 0 0 0 .1-.1.3l-.1.3c.1.2.2.4.4.4"/><path d="m36 7.6c-.3 0-.5-.2-.6-.3-.1-.2-.3-.5-.4-.8 0 0 0 0-.1-.3 0 0-.1.2-.2.4 0 0 0 0-.1.3l-.1.3c-.1.2-.4.4-.7.4h-.1c-.3 0-.4-.2-.2-.4l.7-1.1c.1-.2.1-.6 0-.8l-.6-1c-.1-.2 0-.4.2-.4h.1c.3 0 .5.2.6.3s.3.5.4.8c0 0 0 0 .1.2 0 0 .1-.2.2-.4 0 0 0 0 .1-.2l.1-.3c.1-.2.4-.4.7-.4h.1c.3 0 .4.2.2.4l-.6 1c-.1.2-.1.6 0 .8l.7 1.1c0 .2-.1.4-.5.4"/><path d="m38.1 3.9c.2 0 .5.2.5.5v2.8c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-2.9c.1-.2.3-.4.5-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f697.svg b/riot/emojione/svg/1f697.svg new file mode 100644 index 0000000..da85c34 --- /dev/null +++ b/riot/emojione/svg/1f697.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.2 37.9l-3.4-1.6c-1.1-.3-2.1-1.4-2.3-2.4l-2.2-10.1c-.2-1-1.3-1.9-2.4-1.9h-22c-1.1 0-2.4 1-2.9 1.9 0 0-3.3 6.5-4.3 8.4-.5.9-2.7 2.8-3.8 3.1-2.1.8-6.4 3.4-6.4 3.4-1.1.3-2.2 1.8-2.5 2.7l.6 1.9-1.6 1.8-1 3.7h56.2v-8.4c-.1-.8-1-2.2-2-2.5" fill="#f15744"/><path d="m62 51.2c0-1.4-.5-2.2-1.5-2.2h-57c-1 0-1.5.8-1.5 2.2 0 .3.1 2 .2 2.3.2 1.2 1.2 1.1 2.3 1.1h55.1c1 0 2 .1 2.3-1.1 0-.3.1-2 .1-2.3" fill="#b2c1c0"/><g fill="#3e4347"><path d="m37.6 34c0 .6.4 1 .9 1h9.6c.5 0 .8-.5.7-1l-1.3-8.2c-.1-.6-.6-1-1.1-1h-7.9c-.5 0-.9.5-.9 1v8.2"/><path d="m34.8 25.8c0-.6-.4-1-.9-1h-7c-.5 0-1.1.4-1.4.9l-3.8 8.4c-.2.5 0 .9.5.9h11.6c.5 0 .9-.5.9-1v-8.2z"/></g><path d="m4.9 45.3h2.8c.5 0 1-.4 1.1-.9l.6-1.9c.2-.5-.1-.9-.5-.9h-3l-1 3.7" fill="#fff"/><path d="m60.1 41.5h-2.3c-.4 0-.8.4-.9.9 0 0-.4 1.4-.5 1.9-.1.5.1.9.4.9h3.3v-3.7" fill="#ffe62e"/><ellipse cx="16.1" cy="53.6" rx="8.4" ry="8.4" fill="#3e4347"/><path d="m20.9 53.6c0 2.6-2.2 4.8-4.8 4.8-2.7 0-4.8-2.1-4.8-4.8 0-2.6 2.2-4.8 4.8-4.8 2.6 0 4.8 2.2 4.8 4.8" fill="#e8e8e8"/><g fill="#3e4347"><path d="m17.2 51.3c-.2.6-.7 1.2-1.1 1.2s-.9-.5-1.1-1.2v-.1c-.2-.6.3-1.2 1.2-1.2.7 0 1.2.6 1 1.3"/><path d="m14.6 51.5c.4.5.6 1.2.4 1.5-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.9-.4-1.6.5-.7 1.2-.9 1.7-.3"/><path d="m13.4 53.8c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.6l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.8-.2-1.5.5-1.7"/><path d="m14.9 56c.2-.6.7-1.2 1.1-1.2s.9.5 1.1 1.2v.1c.2.6-.3 1.2-1.2 1.2-.7-.1-1.2-.6-1-1.3"/><path d="m17.5 55.8c-.5-.5-.7-1.2-.4-1.6.2-.4.9-.5 1.6-.4h.1c.7.1.9.9.4 1.6-.4.7-1.1.9-1.7.4"/><path d="m18.7 53.4c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.6l.1-.1c.5-.5 1.2-.3 1.6.4.4.9.2 1.6-.5 1.7"/></g><g fill="#e8e8e8"><path d="m18.7 57l-1.1.6-4.2-7.3 1.1-.6z"/><path d="m11.8 53h8.4v1.2h-8.4z"/><path d="m17.6 49.7l1.1.6-4.2 7.3-1.1-.6z"/></g><ellipse cx="47.9" cy="53.6" rx="8.4" ry="8.4" fill="#3e4347"/><path d="m52.8 53.6c0 2.6-2.2 4.8-4.8 4.8s-4.8-2.1-4.8-4.8c0-2.6 2.2-4.8 4.8-4.8s4.8 2.2 4.8 4.8" fill="#e8e8e8"/><g fill="#3e4347"><path d="m49.1 51.3c-.2.6-.7 1.2-1.1 1.2s-.9-.5-1.1-1.2v-.1c-.2-.6.3-1.2 1.2-1.2.7 0 1.2.6 1 1.3"/><path d="m46.5 51.5c.5.5.7 1.2.4 1.6-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.9-.4-1.6.4-.8 1.1-1 1.7-.4"/><path d="m45.3 53.8c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.6l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.8-.2-1.5.5-1.7"/><path d="m46.8 56c.2-.6.7-1.2 1.1-1.2s.9.5 1.1 1.2v.1c.2.6-.3 1.2-1.2 1.2-.7-.1-1.2-.6-1-1.3"/><path d="m49.4 55.8c-.5-.5-.7-1.2-.4-1.6.2-.4.9-.5 1.6-.4h.1c.7.1.9.9.4 1.6-.5.7-1.2.9-1.7.4"/><path d="m50.6 53.4c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.6l.1-.1c.5-.5 1.2-.3 1.6.4.4.9.2 1.6-.5 1.7"/></g><g fill="#e8e8e8"><path d="m50.6 57l-1.1.6-4.2-7.3 1.1-.6z"/><path d="m43.7 53h8.4v1.2h-8.4z"/><path d="m49.5 49.7l1.1.6-4.2 7.3-1.1-.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f698.svg b/riot/emojione/svg/1f698.svg new file mode 100644 index 0000000..cd0a888 --- /dev/null +++ b/riot/emojione/svg/1f698.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55.4 33.1c0 0-5.3-13.7-7.2-14.8-2.9-1.8-12.3-2.3-16.2-2.3-3.9 0-13.3.5-16.2 2.3-1.9 1.1-7.2 14.8-7.2 14.8h46.8" fill="#428bc1"/><g fill="#3e4347"><path d="m5.8 50.3v9.7c0 1.1.8 2 1.9 2h3.8c1 0 1.9-.9 1.9-2v-9.8h-7.6z"/><path d="m50.8 50.3v9.7c0 1.1.8 2 1.9 2h3.8c1 0 1.9-.9 1.9-2v-9.8h-7.6z"/></g><path d="m60.5 50.5c-.5 1-1.9 1.8-3.1 1.8h-50.8c-1.2 0-2.5-.8-3.1-1.8l-.2-.5c-.5-1-.5-2.2.1-2.7.6-.5 2-1 3.2-1h50.8c1.2 0 2.6.4 3.2 1 .6.5.6 1.8.1 2.7l-.2.5" fill="#428bc1"/><path d="m56.2 48.3c.5.5.1 1-.9 1h-46.6c-1 0-1.4-.4-.9-1 .5-.5 1.7-1 2.7-1h43c1 0 2.2.5 2.7 1" fill="#42ade2"/><path d="m59.5 34.3c-2.2-1.1-5-2.3-5-2.3h-45c0 0-2.9 1.2-5 2.3-1.6.8-2.5 1.3-2.5 2.8l1.1 7.2c.3 1.7 2.5 3 4.9 3h48c2.4 0 4.6-1.4 4.9-3l1.1-7.2c0-1.5-.9-2-2.5-2.8" fill="#428bc1"/><path d="m51.6 30.4c0 0-3.2-9.4-4.9-10.4-2.6-1.5-11.2-2-14.7-2-3.5 0-12.1.5-14.7 2-1.7 1-4.9 10.4-4.9 10.4-.4.7.3 1.3 1.5 1.3h36.2c1.2 0 1.9-.6 1.5-1.3" fill="#3e4347"/><path d="m42.1 31.5c-1.9-1.8-4.1-1.8-5.2-1.8-2.9 0-6.9 0-9.8 0-1.1 0-3.5 0-5.2 1.8-.4.4-2.1 2.1-2.1 2.1h24.4c0 0-1.7-1.7-2.1-2.1" fill="#42ade2"/><path d="m40.6 32.8c-.6-.6-.9-1.1-3.6-1.1-2.5 0-8.4 0-10.8 0-1.9 0-2 .5-2.7 1.1-.2.2-.8.9-.8.9h18.8c-.1-.1-.7-.7-.9-.9" fill="#3e4347"/><path d="m7.6 52.2c0 0 .2 1.6.4 2.2.3 1 1.7 1.8 2.8 1.8h42.4c1.1 0 2.5-.7 2.8-1.8.2-.5.4-2.2.4-2.2h-48.8" fill="#42ade2"/><path d="m44.2 57c-5.2 1.5-19.2 1.5-24.4 0-.4-.1-.9-.9-.9-.9h26.2c0 0-.5.8-.9.9" fill="#3e4347"/><path d="m59 41.5c-.4 2.1-2.4 3.8-4.5 3.8h-45c-2.1 0-4.1-1.7-4.5-3.8l-.4-2.1c-.4-2.1 1-3.8 3-3.8h48.8c2.1 0 3.4 1.7 3 3.8l-.4 2.1" fill="#42ade2"/><path d="m25.9 42.2c-.9.6-2.4 1.2-3.5 1.2h-13.8c-1.1 0-2-.9-2-2v-2c0-1.1.9-2 2-2h13.7c1.1 0 2.7.5 3.5 1.2l.8.6c.9.6.9 1.7 0 2.3l-.7.7" fill="#3e4347"/><g fill="#f9f3d9"><ellipse cx="11.4" cy="40.5" rx="2.8" ry="2.9"/><ellipse cx="19.8" cy="40.5" rx="2.8" ry="2.9"/></g><path d="m38.1 42.2c.9.6 2.4 1.2 3.5 1.2h13.7c1.1 0 2-.9 2-2v-2c0-1.1-.9-2-2-2h-13.7c-1.1 0-2.7.5-3.5 1.2l-.8.6c-.9.6-.9 1.7 0 2.3l.8.7" fill="#3e4347"/><g fill="#f9f3d9"><ellipse cx="52.6" cy="40.5" rx="2.8" ry="2.9"/><ellipse cx="44.2" cy="40.5" rx="2.8" ry="2.9"/></g><g fill="#428bc1"><path d="m9.5 31.7c.1.5-.2 1-.8 1h-3.2c-.5 0-1.1-.4-1.2-1l-.4-2c-.1-.5.2-1 .8-1h3.1c.6 0 1.1.4 1.2 1l.5 2"/><path d="m54.5 31.7c-.1.5.2 1 .8 1h3.1c.5 0 1.1-.4 1.2-1l.4-2c.1-.5-.2-1-.8-1h-3.1c-.5 0-1.1.4-1.2 1l-.4 2"/></g><g fill="#b4d7ee"><path d="m38.6 35.6h-13.2l1.9-2h9.4z"/><path d="m25.4 52.2h13.1v3.9h-13.1z"/></g><g fill="#428bc1"><path d="m30.8 33.6h1.9v2h-1.9z"/><path d="m30.8 52.2h1.9v3.9h-1.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f699.svg b/riot/emojione/svg/1f699.svg new file mode 100644 index 0000000..12d1b6d --- /dev/null +++ b/riot/emojione/svg/1f699.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.2 41.1c.1.5-.2 1-.6 1.1l-2.1.4-2.1-12.2 1.8-.2c.5-.1 1 .2 1.1.7l1.9 10.2" fill="#3e4347"/><path d="m56.3 27.7c0 0 1.3-.5 1.3-2.7 0 0-12.4 0-23.9 0-2.1 0-4.8-.1-7.2 4.5-2.1 3.9-5.3 8.1-5.4 8.2-12.4 0-15.4 6.7-16.2 7.5-1.3 1.3-.9 9.4-.9 9.4h2.3 51.3c0 0 2.6 0 2.6-4.1-.1-4.2-3.9-22.8-3.9-22.8" fill="#42ade2"/><g fill="#3e4347"><path d="m5.8 55.5c0 .5-.4.9-.9.9h-2c-.5 0-.9-.4-.9-.9v-4.6c0-.5.4-.9.9-.9h1.9c.5 0 .9.4.9.9l.1 4.6"/><path d="m38.9 55.5c0 .5-.4.9-.9.9h-12c-.5 0-.9-.4-.9-.9v-1.8c0-.5.4-.9.9-.9h12c.5 0 .9.4.9.9v1.8"/><path d="m62 55.5c0 .5-.4.9-.9.9h-1.9c-.5 0-.9-.4-.9-.9v-5.5c0-.5.4-.9.9-.9h1.9c.5 0 .9.4.9.9v5.5"/></g><g fill="#b4d7ee"><path d="m16.1 44.7c3.7 0 6.9 2.2 8.5 5.4-.8-4.2-4.3-7.4-8.5-7.4-4.2 0-7.7 3.2-8.5 7.4 1.6-3.3 4.8-5.4 8.5-5.4"/><path d="m47.9 44.7c3.7 0 6.8 2.2 8.4 5.4-.7-4.2-4.2-7.4-8.4-7.4-4.2 0-7.7 3.2-8.4 7.4 1.6-3.3 4.8-5.4 8.4-5.4"/></g><path d="m3.9 49.1c0 0 0-2.5.5-3 .5-.6 1.8-.8 3-.6.9.2-.5 2.6-3.5 3.6" fill="#d6eef0"/><g fill="#3e4347"><path d="m41.7 38.2c0 .7.5 1.2 1.1 1.2h9.2c.6 0 1-.5.9-1.2l-1.6-8.6c-.1-.7-.7-1.2-1.3-1.2h-7.2c-.6 0-1.1.5-1.1 1.2 0 0 0 8.6 0 8.6"/><path d="m39.5 29.6c0-.7-.5-1.2-1.1-1.2h-6.1c-.6 0-1.3.5-1.6 1.1l-4.5 8.9c-.3.6 0 1.1.6 1.1h11.6c.6 0 1.1-.5 1.1-1.2v-8.7"/><ellipse cx="16.1" cy="53.7" rx="8.4" ry="8.3"/></g><ellipse cx="16.1" cy="53.7" rx="4.8" ry="4.7" fill="#e8e8e8"/><g fill="#3e4347"><path d="m17.2 51.4c-.2.6-.7 1.1-1.1 1.1s-.9-.5-1.1-1.1v-.1c-.2-.6.3-1.1 1.2-1.1.7 0 1.2.5 1 1.2"/><path d="m14.6 51.6c.5.5.7 1.2.4 1.5-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.8-.4-1.6.5-.7 1.2-.9 1.7-.3"/><path d="m13.4 53.9c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.5l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.7-.2-1.4.5-1.6"/><path d="m14.9 56c.2-.6.7-1.1 1.1-1.1s.9.5 1.1 1.1v.1c.2.6-.3 1.1-1.2 1.1-.7.1-1.2-.5-1-1.2"/><path d="m17.5 55.8c-.5-.5-.7-1.2-.4-1.5.2-.4.9-.5 1.6-.4h.1c.7.1.9.8.4 1.6-.4.7-1.1.9-1.7.3"/><path d="m18.7 53.5c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.5l.1-.1c.5-.5 1.2-.3 1.6.4.4.7.2 1.4-.5 1.6"/></g><g fill="#e8e8e8"><path d="m18.7 57l-1.1.6-4.2-7.2 1.1-.6z"/><path d="m11.8 53.1h8.4v1.2h-8.4z"/><path d="m17.6 49.8l1.1.6-4.2 7.2-1.1-.6z"/></g><ellipse cx="47.9" cy="53.7" rx="8.4" ry="8.3" fill="#3e4347"/><ellipse cx="47.9" cy="53.7" rx="4.8" ry="4.7" fill="#e8e8e8"/><g fill="#3e4347"><path d="m49.1 51.4c-.2.6-.7 1.1-1.1 1.1s-1-.5-1.2-1.1v-.1c-.2-.6.3-1.1 1.2-1.1.8 0 1.3.5 1.1 1.2"/><path d="m46.5 51.6c.5.5.7 1.2.4 1.5-.2.4-.9.5-1.6.4h-.1c-.7-.1-.9-.8-.4-1.6.4-.7 1.1-.9 1.7-.3"/><path d="m45.3 53.9c.7-.1 1.4 0 1.6.4.2.4 0 1.1-.4 1.5l-.1.1c-.5.5-1.2.3-1.6-.4-.4-.7-.2-1.4.5-1.6"/><path d="m46.8 56c.2-.6.7-1.1 1.1-1.1s.9.5 1.1 1.1v.1c.2.6-.3 1.1-1.2 1.1-.7.1-1.2-.5-1-1.2"/><path d="m49.4 55.8c-.5-.5-.7-1.2-.4-1.5.2-.4.9-.5 1.6-.4h.1c.7.1.9.8.4 1.6-.5.7-1.2.9-1.7.3"/><path d="m50.6 53.5c-.7.1-1.4 0-1.6-.4-.2-.4 0-1.1.4-1.5l.1-.1c.5-.5 1.2-.3 1.6.4.4.7.2 1.4-.5 1.6"/></g><g fill="#e8e8e8"><path d="m50.6 57l-1.1.6-4.2-7.2 1.1-.6z"/><path d="m43.7 53.1h8.4v1.2h-8.4z"/><path d="m49.5 49.8l1.1.6-4.2 7.2-1.1-.6z"/></g><g fill="#3e4347"><path d="m37.7 21c0 0-2.1 1-2.1 4h2.1c0 0-.2-2.6 1.9-4h-1.9"/><path d="m49.6 21c0 0 2.1 1 2.1 4h-2.1c0 0 .2-2.6-1.9-4h1.9"/><path d="m34.5 22h18.1c1.5 0 1.5-2 0-2h-18.1c-1.5 0-1.5 2 0 2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f69a.svg b/riot/emojione/svg/1f69a.svg new file mode 100644 index 0000000..c543e98 --- /dev/null +++ b/riot/emojione/svg/1f69a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 50.8c0-1-.8-1.9-1.9-1.9h-56.2c-1 0-1.9.8-1.9 1.9v1.9c0 1 .8 1.9 1.9 1.9h56.2c1 0 1.9-.8 1.9-1.9v-1.9" fill="#b2c1c0"/><ellipse cx="12.3" cy="55.5" rx="6.6" ry="6.5" fill="#3e4347"/><ellipse cx="12.3" cy="55.5" rx="3.8" ry="3.7" fill="#b2c1c0"/><ellipse cx="50.8" cy="55.5" rx="6.6" ry="6.5" fill="#3e4347"/><ellipse cx="50.8" cy="55.5" rx="3.8" ry="3.7" fill="#b2c1c0"/><path d="m54.5 19h-26.3c-3.1 0-5.6 2.5-5.6 5.6v24.3h37.5v-24.3c0-3.1-2.5-5.6-5.6-5.6" fill="#62727a"/><path d="m15.1 26.5c-4.5 0-5.6 0-5.6 7.5 0 5.6-5.6 5.6-5.6 11.2v3.7h18.8v-22.4c-.1 0-5.2 0-7.6 0" fill="#f15744"/><path fill="#ffce31" d="m5.8 43.3h1.9v3.7h-1.9z"/><path d="m12.8 39.6c-1.1 0-1.7.8-1.3 1.8l1.6 4c.4 1 1.6 1.7 2.7 1.7h3c1.1 0 2-.8 2-1.9v-3.7c0-1-.9-1.9-2-1.9h-6" fill="#d33b23"/><g fill="#3e4347"><path d="m20.8 28.3h-7.5c0 0-1.9.2-1.9 2.8v4.5c0 0 0 2.1 1.9 2.1s7.5 0 7.5 0v-9.4"/><circle cx="12.3" cy="51.7" r=".9"/><circle cx="9.1" cy="53.6" r=".9"/><path d="m8.6 56.5c.4-.3 1-.1 1.3.3.3.4.1 1-.3 1.3-.4.3-1 .1-1.3-.3-.3-.5-.2-1 .3-1.3"/><circle cx="12.3" cy="59.2" r=".9"/><circle cx="15.6" cy="57.3" r=".9"/><circle cx="15.6" cy="53.6" r=".9"/></g><ellipse cx="12.3" cy="55.5" rx="1.9" ry="1.9" fill="#62727a"/><g fill="#3e4347"><circle cx="50.8" cy="51.7" r=".9"/><circle cx="47.5" cy="53.6" r=".9"/><path d="m47 56.5c.4-.3 1-.1 1.3.3.3.4.1 1-.3 1.3-.4.3-1 .1-1.3-.3-.3-.5-.1-1 .3-1.3"/><circle cx="50.8" cy="59.2" r=".9"/><circle cx="54" cy="57.3" r=".9"/><circle cx="54" cy="53.6" r=".9"/></g><ellipse cx="50.8" cy="55.5" rx="1.9" ry="1.9" fill="#62727a"/><g fill="#fff"><path d="m28.4 32.7c-.5-.4-1.2-.6-2.2-.6-.6 0-1.2 0-1.6.1v5.4c.3 0 .8.1 1.4.1 1.1 0 1.9-.3 2.5-.8.5-.5.9-1.2.9-2.2-.2-.9-.5-1.5-1-2m-2.3 4.2c-.2 0-.4 0-.6 0v-3.9c.1 0 .4-.1.7-.1 1.3 0 2 .7 2 1.9 0 1.4-.8 2.1-2.1 2.1"/><path d="m33.2 35.2h-2.1v1.6h2.3v.8h-3.3v-5.5h3.2v.9h-2.2v1.4h2.1v.8"/><path d="m35.3 36.8v-4.7h-1v5.5h3.3v-.8z"/><path d="m38.3 32.1h1v5.5h-1z"/><path d="m43.7 32.1l-.8 2.5c-.2.7-.4 1.3-.6 2-.1-.7-.3-1.3-.5-2l-.8-2.5h-1l1.8 5.5h1.2l1.9-5.5c-.1 0-1.2 0-1.2 0"/><path d="m46.4 36.8v-1.6h2.1v-.8h-2.1v-1.4h2.2v-.9h-3.2v5.5h3.3v-.8z"/><path d="m53.1 36.1c-.1-.5-.4-.9-.8-1.1.5-.2 1-.7 1-1.4 0-.5-.2-.8-.5-1.1-.4-.3-.9-.4-1.7-.4-.6 0-1.1 0-1.5.1v5.4h1v-2.3h.5c.6 0 .8.2 1 1 .2.7.3 1.1.4 1.3h1c-.1-.2-.2-.8-.4-1.5m-1.9-1.5h-.6v-1.7c.1 0 .3 0 .6 0 .7 0 1.1.3 1.1.9 0 .5-.4.8-1.1.8"/><path d="m57.1 32.1l-.7 1.4c-.2.4-.3.7-.5 1.1-.1-.4-.3-.7-.5-1.1l-.7-1.4h-1.1l1.7 3.2v2.3h1v-2.3l1.8-3.2h-1"/></g><g fill="#3e4347"><path d="m27.3 30.2v-5.6c0-.5.4-.9.9-.9h26.2c.5 0 .9.4.9.9v5.6h1.9v-5.6c0-1.5-1.3-2.8-2.8-2.8h-26.2c-1.6 0-2.8 1.3-2.8 2.8v5.6c0 0 1.9 0 1.9 0"/><path d="m55.4 39.6v3.7c0 .5-.4.9-.9.9h-26.3c-.5 0-.9-.4-.9-.9v-3.7h-1.9v3.7c0 1.5 1.3 2.8 2.8 2.8h26.2c1.6 0 2.8-1.3 2.8-2.8v-3.7h-1.8"/></g><g fill="#b2c1c0"><circle cx="29.2" cy="25.5" r=".9"/><circle cx="53.6" cy="25.5" r=".9"/><circle cx="29.2" cy="42.4" r=".9"/><circle cx="53.6" cy="42.4" r=".9"/></g><path d="m37.6 55.5c0 1-.8 1.9-1.9 1.9h-7.5c-1 0-1.9-.8-1.9-1.9v-1.9c0-1 .8-1.9 1.9-1.9h7.5c1 0 1.9.8 1.9 1.9v1.9" fill="#62727a"/><path d="m28.5 52.7c-.6 0-1.2.4-1.2.9 0 .5.5.9 1.2.9h7c.6 0 1.2-.4 1.2-.9 0-.5-.5-.9-1.2-.9h-7" fill="#b2c1c0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f69b.svg b/riot/emojione/svg/1f69b.svg new file mode 100644 index 0000000..5f0fbc1 --- /dev/null +++ b/riot/emojione/svg/1f69b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><ellipse cx="2.9" cy="37.4" rx=".5" ry="2.1"/><path d="m2.9 35.3h1.4v4.3h-1.4z"/></g><ellipse cx="2.9" cy="37.4" rx=".2" ry="1.1" fill="#b2c1c0"/><g fill="#3e4347"><ellipse cx="4.7" cy="39.1" rx=".6" ry="2.7"/><ellipse cx="6.6" cy="39.1" rx=".6" ry="2.7"/><path d="m4.7 36.3h1.8v5.4h-1.8z"/></g><g fill="#b2c1c0"><ellipse cx="4.7" cy="39.1" rx=".3" ry="1.4"/><path d="M12.1 44.4 2 35.5 2 25.4 12.1 16.6z"/></g><path fill="#e1e8ed" d="m9.5 44.4l-4.1-4v-4.4l4.1 1.2z"/><path fill="#fff" d="m9.5 37.2l-4.1-1.2h1.6l5.1 1.2z"/><g fill="#62727a"><path d="m12.1 16.6h13.4v27.8h-13.4z"/><path d="m9.5 37.2h4.9v7.2h-4.9z"/></g><path fill="#c94747" d="m21.3 37.2h12.3v11.8h-12.3z"/><g fill="#3e4347"><path d="m29.7 60.2c0 1-.8 1.8-1.7 1.8h-3.4c-.9 0-1.7-.8-1.7-1.8v-15.2c0-1 .8-1.8 1.7-1.8h3.4c.9 0 1.7.8 1.7 1.8v15.2"/><ellipse cx="56" cy="50.7" rx="3.4" ry="8.4"/><ellipse cx="52.6" cy="50.7" rx="3.4" ry="8.4"/><path d="m52.2 50.7h4.2v8.4h-4.2z"/><path d="m11 38.6h2.5v9.4h-2.5z"/><ellipse cx="13.6" cy="43.2" rx=".8" ry="4.7"/><ellipse cx="11" cy="43.2" rx=".9" ry="4.7"/></g><g fill="#b2c1c0"><ellipse cx="11" cy="43.2" rx=".4" ry="2.8"/><path d="m39.9 2c-.2 0-.4 0-.6.1-.2.4-.3.8-.3 1.3 0 .3.1.7.2 1 .4 0 .7.1.7.5 0 2.7 0 10.3 0 10.3h1.7v-11.3c0-1.1-.8-1.9-1.7-1.9"/></g><path d="m59.2 38.3c-.5-.5-2.3-1.4-2.3-1.4s-.5-5-1.4-6.1c-.9-1.1-7.2-2.3-8.5-5.4-1.3-3.1-1.8-5.4-1.8-5.4s1.5 0 1-1.2c-.5-1.2-2.8-3.4-5.4-4 0 0-1.3-2-3.3-2.6-2.1-.6-19.5-3.3-20.4-.7-1.8 5.4-1.9 10.6-2.7 26 0 0-1.6.5-1.6 1.8 0 1.3 0 5.9 0 5.9l8.6 4.6c.3-4.9 1.3-8.5 2.5-8.5 1.4 0 2.5 5 2.5 11.2 1.3.5 3.9 1.2 8.4 1 7.2-.4 27.2-3 27.2-3s.5-8.6-2.8-12.2" fill="#f15744"/><path d="m56 43.2c.1.5-.3 1-.8 1l-14.2.9c-.5 0-.9-.4-.9-.9l-1.1-11.3c0-.5.3-.9.8-.9h14.2c.5 0 .9.4 1 .9l1 10.3" fill="#b2c1c0"/><path d="m19.1 28.2c0 .5.4 1 .9 1h2.5c.5 0 .9-.4.9-1v-7.8c0-.5-.4-.8-.8-.6l-2.7 1.3c-.4.2-.8.8-.8 1.4v5.7" fill="#3e4347"/><path d="m51.9 30.8c.9 0 .9-.1 0-.2l-13.7-1.2c-.9-.1-2.5-.4-3.4-.6l-5.3-1.4c-.9-.2-1-.1-.1.3l4.6 2.3c.9.4 1.7 1.6 2 2.5l2.7 10.9c.2 1 .3 1 .2 0l-1.4-10.8c-.1-1 .5-1.8 1.5-1.8h12.9" fill="#fed0ac"/><g fill="#b2c1c0"><path d="m17 34.1c-1 .9-2.4.9-3.4 0 0-6.4 0-12.8 0-19.2 1-.9 2.4-.9 3.4 0 0 6.4 0 12.8 0 19.2"/><path d="m14.4 2c-.2 0-.4 0-.6.1-.2.4-.3.8-.3 1.3 0 .3.1.7.2 1 .4 0 .7.1.7.5 0 2.7 0 10.3 0 10.3h1.7v-11.3c0-1.1-.8-1.9-1.7-1.9"/></g><g fill="#3e4347"><path d="m41 34.7c.1.5.5.9 1 .9l3.6-.1c.5 0 .9-.4.8-.9-.1-.5-.5-.9-1-.9l-3.6.1c-.5 0-.9.4-.8.9"/><path d="m41.5 38.4c.1.5.5.9 1 .9l3.6-.1c.5 0 .9-.4.8-.9-.1-.5-.5-.9-1-.9l-3.6.1c-.6 0-.9.4-.8.9"/><path d="m41.9 42.1c.1.5.5.9 1 .9l3.6-.1c.5 0 .9-.4.8-.9-.1-.5-.5-.9-1-.9l-3.6.1c-.5-.1-.9.4-.8.9"/><path d="m49 33.7c-.5 0-.9.4-.8.9.1.5.5.9 1 .9l3.6-.1c.5 0 .9-.4.8-.9-.1-.5-.5-.9-1-.9l-3.6.1"/><path d="m48.7 38.3c.1.5.5.9 1 .9l3.6-.1c.5 0 .9-.4.8-.9-.1-.5-.5-.9-1-.9l-3.6.1c-.5-.1-.9.4-.8.9"/><path d="m49.1 41.9c.1.5.5.9 1 .9l3.6-.1c.5 0 .9-.4.8-.9-.1-.5-.5-.9-1-.9l-3.6.1c-.5 0-.8.4-.8.9"/><path d="m34.9 19.4l-8.6-.6c-.4 0-.8.4-.8.9v4.8c0 .5.4 1 .8 1l9 .4-.4-6.5"/><path d="m45.8 25.5l-1.7-4.6c-.1-.5-.6-.9-1.1-.9l-7-.5.4 6.5 8.9.4c.4 0 .7-.4.5-.9"/></g><g fill="#fff"><path d="m39.9 50.3c0 .5-.4 1-.8 1l-5.1.3c-.5 0-.8-.4-.8-.9v-1.5c0-.5.4-1 .8-1l5.1-.3c.5 0 .8.4.8.9v1.5"/><path d="m60.3 48.3c0 .5-.4 1-.8 1.1l-3.5.4c-.5.1-.8-.3-.8-.9v-1.3c0-.5.4-1 .8-1.1l3.4-.4c.5-.1.8.3.8.9v1.3z"/></g><path fill="#62727a" d="m21.6 53.6l-8.9-7.5v-3.3l8.9 5.7z"/><path d="m22.1 47.9c-.5 0-.9.4-.9.9v7.5c0 .5.4.9.9.9h.9v-9.4l-.9.1" fill="#b2c1c0"/><g fill="#fed0ac"><path d="m22.1 36.4c0 0 7.5-4.4 10.7 4.9 3 9.2-4.2-5.1-10.7-4.9"/><path d="m21.3 13.3c0 0 3.5-2 4.9 2.3 1.5 4.2-1.9-2.4-4.9-2.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f69c.svg b/riot/emojione/svg/1f69c.svg new file mode 100644 index 0000000..794c2d3 --- /dev/null +++ b/riot/emojione/svg/1f69c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b8331e" d="m28.2 38.6h-23.1v6.5l9.1 7.5h33.7v-14z"/><path d="m52.6 17h-23.4l-2.8 21.4h-21.3v1.6h21.1l4.4 6.4h7.1l17.8-7.8-2.9-21.6m-4.7 19.7v-12.4c-5.2 0-2.3 4.5-4.2 7.3-2.6 3.7-7.4.4-7.4 5h-7.1l1.9-17.8h1.2v1.8c-.5.3-.8.8-.8 1.4v6.3c0 .9.8 1.7 1.7 1.7.9 0 1.7-.8 1.7-1.7v-6.3c0-.9-.8-1.7-1.7-1.7v-1.5h17.6l1.9 17.8-4.8.1" fill="#3e4347"/><g fill="#f14e3a"><path d="m54 17c0 .7-.2 1-.9 1h-24.2c-.7 0-.9-.3-.9-1v-2c0-.7.2-1 .9-1h24.2c.7 0 .9.3.9 1v2"/><path d="m6.9 33.3l21.3-3.3v8.4h-23.9c0 0 1.7-4.1 2.6-5.1"/><path d="m37.3 45.1c2-4.3 6-7.3 10.7-7.3 4.6 0 8.5 2.8 10.6 7l3.4-1.6c-2.5-5.8-7.8-9.4-14-9.4-6.3 0-11.6 3.4-14.1 9.4l3.4 1.9"/></g><circle cx="47.9" cy="49.8" r="12.2" fill="#3e4347"/><path d="m54.5 49.8c0 3.6-2.9 6.6-6.6 6.6-3.6 0-6.6-2.9-6.6-6.6 0-3.6 2.9-6.6 6.6-6.6 3.7 0 6.6 3 6.6 6.6" fill="#ffd45c"/><circle cx="47.9" cy="49.8" r="2.8" fill="#3e4347"/><path d="m15.3 43.6c-2.3-1.1-4.8-1.5-7.1-.9-.7-1.7-2.4-2.9-4.3-2.9v-11.4h-1.9v14.1h1.9v-.9c1.1 0 2.1.7 2.5 1.6-.7.3-1.5.7-2.1 1.2h-2.3v2.9h3l13.6 6.6h2.7c.2-4.5-2-8.4-6-10.3" fill="#f14e3a"/><circle cx="10.4" cy="53.6" r="8.4" fill="#3e4347"/><path d="m15.1 53.6c0 2.6-2.1 4.7-4.7 4.7-2.6 0-4.7-2.1-4.7-4.7s2.1-4.7 4.7-4.7c2.6 0 4.7 2.1 4.7 4.7" fill="#ffd45c"/><circle cx="10.4" cy="53.6" r="1.9" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f69d.svg b/riot/emojione/svg/1f69d.svg new file mode 100644 index 0000000..4244515 --- /dev/null +++ b/riot/emojione/svg/1f69d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#aab5bc" d="m2 34.2h60v5.6h-60z"/><path fill="#c5d0d8" d="m2 39.8h60v5.6h-60z"/><path fill="#dfecf4" d="m2 43.1h60v.9h-60z"/><g fill="#3e4347"><path d="m2 34.2h60v.9h-60z"/><path d="m4.8 36.5h3.7v1.9h-3.7z"/><path d="m12.3 36.5h3.8v1.9h-3.8z"/><path d="m19.8 36.5h3.8v1.9h-3.8z"/><path d="m27.3 36.5h3.8v1.9h-3.8z"/></g><path fill="#c5d0d8" d="m9.5 45.5h7.5v16.5h-7.5z"/><path fill="#dfecf4" d="m10.8 45.5h4.7v16.5h-4.7z"/><path fill="#c5d0d8" d="m47 45.5h7.5v16.5h-7.5z"/><path fill="#dfecf4" d="m48.3 45.5h4.7v16.5h-4.7z"/><path fill="#c5d0d8" d="m28.2 45.5h7.5v16.5h-7.5z"/><path fill="#dfecf4" d="m29.6 45.5h4.7v16.5h-4.7z"/><path d="M7.7,24.1c0,3.8,9.9,13.5,22.9,13.5H62V24.1H7.7" fill="#c5d0d8"/><path d="m7.7 24.1c0 .8.5 1.9 1.3 3.1h53v-3.1h-54.3" fill="#3e4347"/><path d="m45.5 39.9c-8.6 0-12.7-3.6-16.2-6.8-2.8-2.5-5.4-4.9-9.5-4.9h-10c.9 1 1.9 2.1 3.3 3.1h6.7c2.9 0 4.9 1.8 7.4 4.1 3.8 3.4 8.5 7.6 18.3 7.6h16.5v-3.1c0 0-16.5 0-16.5 0" fill="#428bc1"/><path d="m46.4 37.3c-8.6 0-12.7-3.6-16.2-6.8-2.8-2.5-5.4-4.9-9.5-4.9h-11.8v1.4c.4.6.8 1.1 1.4 1.7h10.4c2.9 0 4.9 1.8 7.4 4.1 3.8 3.4 8.5 7.6 18.3 7.6h15.6v-3.1h-15.6" fill="#3e4347"/><path d="M37.1,2h-2.4c-7.9,0-27,14.7-27,22.1h35.1H62V2H37.1z" fill="#dfecf4"/><g fill="#3e4347"><path d="m34.3 6.8c0-3-1.3-3-5.9-3 0 0-13.6 5.9-19.9 17.3 0 0 13.7-4 21.6-4 2.3 0 4.2-7 4.2-10.3"/><path d="m62 3.8v15.3c0 0-.3 0-3.1 0-4.8 0-17.6-15.3-12.1-15.3 3.8 0 15.2 0 15.2 0"/><path d="m42.5 15.4c0 1.5-1.2 2.7-2.7 2.7-1.5 0-2.7-1.2-2.7-2.7v-8.9c0-1.5 1.2-2.7 2.7-2.7 1.5 0 2.7 1.2 2.7 2.7v8.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f69e.svg b/riot/emojione/svg/1f69e.svg new file mode 100644 index 0000000..2bbbd3a --- /dev/null +++ b/riot/emojione/svg/1f69e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#63686b" d="m2 15.8l11.8-5.3 8.9-8.5 3.3 6.7 5 3 2.9 4.1 2.9-2.9 2.9-1.5 1.6 4 2.3 1.4 3.4-4.4 1.7-.4 2.6-4.6 5.1 5.5 1.8 4.5 3.8 4.2v36.6h-60z"/><g fill="#c5d0d8"><path d="m22.7 2l.1 3.8-1.8 1.6-.9 3.1 3-1.7 2-.6.9.5z"/><path d="m27.1 9.3l-.3 2.3-2.3 3.4-3.5 9.1 2.3-.3 1.2 3.2 1.8-2.7 1.6 1.4.9 6.4 2.7-2.5.4-4.2 1.5 4.2.7 4.3 1.6-8.5-1.8-9.6-2.9-4.1z"/><path d="m39.7 11.4l-.3 5-2.6 4-.6 6.9 3.5-5.4 1.2 3.5 3.1 6.3v-5.1l-.6-6.2.2-3.6-2.3-1.4z"/><path d="m51.3 7.4l1.4 4-1.1 1-.3 5.6-3.1 1.5v5.9l-1.4 5.4 2.9.9 1.9 2.6 2-.4 4 6.7-.6-4.2 2.4 1.4.5-4.8 2.1 4v-15.4l-3.8-4.2-1.8-4.5z"/><path d="m10.4 30l1.6-8.1 7-5.3-1.7-.6 1-4.9-2.8 5.5-2.9 1.5 1.4-4-1.4.9.4-3.6-2.6 4.9-1 6.5-3.1-8.9-4.3 1.9v22z"/></g><path fill="#3e4347" d="m2 58.2h60v1.9h-60z"/><path fill="#89664c" d="m2 60.1h60v1.9h-60z"/><g fill="#dbb471"><path d="m39.5 60.1h3.8v1.9h-3.8z"/><path d="m32 60.1h3.8v1.9h-3.8z"/><path d="m54.5 60.1h3.8v1.9h-3.8z"/><path d="m47 60.1h3.8v1.9h-3.8z"/><path d="m9.5 60.1h3.8v1.9h-3.8z"/><path d="m2 60.1h3.8v1.9h-3.8z"/><path d="m24.5 60.1h3.8v1.9h-3.8z"/><path d="m17 60.1h3.8v1.9h-3.8z"/></g><circle cx="27.1" cy="55.1" r="4.4" fill="#94989b"/><path d="m27.1 58.1c-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9s2.9 1.3 2.9 2.9c0 1.5-1.3 2.9-2.9 2.9m0-4.4c-.8 0-1.5.7-1.5 1.5 0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5c0-.9-.7-1.5-1.5-1.5" fill="#3e4347"/><circle cx="36.9" cy="55.1" r="4.4" fill="#94989b"/><path d="m36.9 58.1c-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9 1.6 0 2.9 1.3 2.9 2.9 0 1.5-1.3 2.9-2.9 2.9m0-4.4c-.8 0-1.5.7-1.5 1.5 0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5-.1-.9-.7-1.5-1.5-1.5" fill="#3e4347"/><circle cx="57" cy="55.1" r="4.4" fill="#94989b"/><path d="m57 58.1c-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9 1.6 0 2.9 1.3 2.9 2.9 0 1.5-1.3 2.9-2.9 2.9m0-4.4c-.8 0-1.5.7-1.5 1.5 0 .8.7 1.5 1.5 1.5.8 0 1.5-.7 1.5-1.5-.1-.9-.7-1.5-1.5-1.5" fill="#3e4347"/><path d="M62,20.7H25.9c-2.8,0-5.1,2.3-5.1,5.1v29.4H62V25.8V20.7z" fill="#f2b200"/><path d="M62,20.7H25.9c-2.8,0-5.1,2.3-5.1,5.1v2.6H62V20.7z" fill="#699635"/><path fill="#ffe62e" d="m20.7 28.3h41.3v14h-41.3z"/><g fill="#3e4347"><path d="m20.1 52.6h.6v2.6h-.6z"/><path d="m18.6 51.3h1.6v5.1h-1.6z"/></g><path fill="#89664c" d="m41.3 50.3h11.3l2.5-2.5h6.9v-2.6h-7.9l-2.6 2.6h-9.2l-2.5-2.6h-19.1v2.6h18z"/><g fill="#3e4347"><path d="m60.5 38.8c0 .5-.4 1-1 1h-5.7c-.5 0-1-.4-1-1v-7c0-.5.4-1 1-1h5.7c.5 0 1 .4 1 1v7"/><path d="m50.8 38.8c0 .5-.4 1-1 1h-5.7c-.5 0-1-.4-1-1v-7c0-.5.4-1 1-1h5.7c.5 0 1 .4 1 1v7"/><path d="m41 38.8c0 .5-.4 1-1 1h-5.7c-.5 0-1-.4-1-1v-7c0-.5.4-1 1-1h5.7c.5 0 1 .4 1 1 0 0 0 7 0 7"/><path d="m31.3 38.8c0 .5-.4 1-1 1h-5.7c-.5 0-1-.4-1-1v-7c0-.5.4-1 1-1h5.7c.5 0 1 .4 1 1v7"/><path d="m20.7 51.3h41.3v3.8h-41.3z"/></g><g fill="#b4d7ee"><path d="m30.3 37.8c0 .5-.4.9-.9.9h-3.8c-.5 0-.9-.4-.9-.9v-4.9c0-.5.4-.9.9-.9h3.8c.5 0 .9.4.9.9v4.9"/><path d="m40 37.8c0 .5-.4.9-.9.9h-3.8c-.5 0-.9-.4-.9-.9v-4.9c0-.5.4-.9.9-.9h3.8c.5 0 .9.4.9.9v4.9"/><path d="m49.7 37.8c0 .5-.4.9-.9.9h-3.8c-.5 0-.9-.4-.9-.9v-4.9c0-.5.4-.9.9-.9h3.8c.5 0 .9.4.9.9v4.9"/><path d="m59.4 37.8c0 .5-.4.9-.9.9h-3.8c-.5 0-.9-.4-.9-.9v-4.9c0-.5.4-.9.9-.9h3.8c.5 0 .9.4.9.9v4.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f69f.svg b/riot/emojione/svg/1f69f.svg new file mode 100644 index 0000000..9f19748 --- /dev/null +++ b/riot/emojione/svg/1f69f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#94989b"><path d="m2 9.5h60v1.9h-60z"/><path d="m2 17h60v1.9h-60z"/></g><g fill="#63686b"><path d="m2 11.4h60v5.6h-60z"/><circle cx="54.5" cy="5.8" r="3.8"/></g><circle cx="54.5" cy="5.8" r="2.3" fill="#3e4347"/><circle cx="26.4" cy="5.8" r="3.8" fill="#63686b"/><circle cx="26.4" cy="5.8" r="2.3" fill="#3e4347"/><circle cx="35.8" cy="5.8" r="3.8" fill="#63686b"/><g fill="#3e4347"><circle cx="35.8" cy="5.8" r="2.3"/><path d="m28.2 2h5.6v16.9h-5.6z"/></g><path fill="#63686b" d="m29.2 2h3.8v16.9h-3.8z"/><path fill="#3e4347" d="m56.4 2h5.6v16.9h-5.6z"/><g fill="#63686b"><path d="m57.3 2h3.8v16.9h-3.8z"/><path d="m43.2 27.3h15v24.4h-15z"/></g><path fill="#3e4347" d="m45.1 29.2h11.2v20.6h-11.2z"/><path fill="#63686b" d="m24.5 27.3h15v24.4h-15z"/><path fill="#3e4347" d="m26.4 29.2h11.2v20.6h-11.2z"/><path fill="#63686b" d="m20.8 27.3h-7.6l-7.4 24.4h15z"/><path fill="#3e4347" d="m18.9 29.2v20.6h-11.3l7.5-20.6z"/><g fill="#ed4c5c"><path d="m16.1 23.6c-5.6 0-6.6 3.8-6.6 3.8l-7.5 24.3c0 7.5 0 10.3 14.8 10.3h45.2v-10.3-24.4-3.8c0 .1-34 .1-45.9.1m23.4 3.7v24.4h-15v-24.4h15m-33.7 24.4l7.5-24.4h7.5v24.4h-15m52.4 0h-15v-24.4h15v24.4"/><path d="m24.5 18.9h37.5v3.8h-37.5z"/></g><path fill="#63686b" d="m28.2 22.6h33.8v.9h-33.8z"/><path fill="#fff" d="m2.9 53.1h2.8v2.8h-2.8z"/><path fill="#ffce31" d="m5.8 53.1h5.6v2.8h-5.6z"/><g fill="#94989b"><path d="m25.4 4.8h11.2v1.9h-11.2z"/><path d="m53.6 4.8h8.4v1.9h-8.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a0.svg b/riot/emojione/svg/1f6a0.svg new file mode 100644 index 0000000..e8eb108 --- /dev/null +++ b/riot/emojione/svg/1f6a0.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#94989b" d="m30.7 6.7h3.8v15h-3.8z"/><g fill="#3e4347"><path d="M62 17 2 5.8 2 3.9 62 15.1z"/><path d="m42.3 9.5l-20.6-3.7v-1.9l20.6 3.7z"/><circle cx="21.8" cy="4.8" r="2.8"/></g><circle cx="21.8" cy="4.8" r=".9" fill="#94989b"/><circle cx="42.2" cy="8.6" r="2.8" fill="#3e4347"/><circle cx="42.2" cy="8.6" r=".9" fill="#94989b"/><path fill="#d0d0d0" d="m30.7 14.2h3.8v7.5h-3.8z"/><path d="M62,51.7C62,57.4,57.4,62,51.7,62H12.3C6.6,62,2,57.4,2,51.7V30.8c0-5.7,4.6-10.3,10.3-10.3h39.5 + c5.7,0,10.3,4.6,10.3,10.3V51.7z" fill="#dae3ea"/><path d="m57.9 47.5h-51.8v-14.7c0-4.7 3.8-8.5 8.5-8.5h34.9c4.7 0 8.5 3.8 8.5 8.5l-.1 14.7" fill="#3e4347"/><path d="M62,51.7C62,57.4,57.4,62,51.7,62H12.3C6.6,62,2,57.4,2,51.7H62z" fill="#ed4c5c"/><g fill="#dae3ea"><path d="m61.1 55.8c.3-.7.5-1.3.7-2.1h-59.6c.1.7.4 1.4.7 2.1h58.2"/><path d="m43.9 21.5h4.1v27h-4.1z"/><path d="m30 21.5h4.1v27h-4.1z"/><path d="m16 21.5h4.1v27h-4.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a1.svg b/riot/emojione/svg/1f6a1.svg new file mode 100644 index 0000000..84de8fd --- /dev/null +++ b/riot/emojione/svg/1f6a1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#94989b"><path d="m30 11.5h4v12h-4z"/><path d="m39.6 13l-15.7-3.1.5-2.9 3.5.7 3-2.5 3.9.7 2.1 3.5 3.2.6z"/></g><path fill="#3e4347" d="M62 19.1 2 7 2 5 62 17z"/><path d="M55,49H9c0,0,0-13.1,0-17.5c0-5.5,4.5-10,10-10H45c5.5,0,10,4.5,10,10V49z" fill="#ed4c5c"/><path d="m51 44.9h-38v-11.5c0-4.6 3.7-8.3 8.3-8.3h21.4c4.6 0 8.3 3.7 8.3 8.3v11.5" fill="#3e4347"/><path d="m55 49c0 5.5-4.5 10-10 10h-26c-5.5 0-10-4.5-10-10h46" fill="#dae3ea"/><g fill="#ed4c5c"><path d="m24.8 46.9h-2.7c0-11.8 4-24 4-24h2.7c0-.1-4 12.2-4 24"/><path d="m39.2 46.9h2.7c0-11.8-4-24-4-24h-2.7c0-.1 4 12.2 4 24"/><path d="m54.1 53c.3-.6.5-1.3.6-2h-45.5c.1.7.4 1.4.6 2h44.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a2.svg b/riot/emojione/svg/1f6a2.svg new file mode 100644 index 0000000..032a22c --- /dev/null +++ b/riot/emojione/svg/1f6a2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#c94747" d="m21.2 23.8l-4.6 1.5v1.6l4.6-1.3z"/><path fill="#3e4347" d="m21.2 25.6l-4.6 1.3v1.8l4.6-1.3z"/><path fill="#75d6ff" d="m2 51.7h60v10.3h-60z"/><path d="m30.2 15.6c0 0-.1 0-.1 0 .1-.3.1-.6.1-.9 0-1.7-1.2-3.2-2.9-3.5-.5-2-2.3-3.5-4.4-3.5-.6 0-1.3.1-1.8.4-1-1.5-2.6-2.4-4.5-2.4-.2 0-.4 0-.6 0-1-2.2-3.2-3.7-5.8-3.7-3.5 0-6.3 2.8-6.3 6.4s2.8 6.4 6.4 6.4c.7 0 1.4-.1 2-.3 1 1.3 2.6 2.2 4.3 2.2 1.2 0 2.3-.4 3.2-1.1.8.8 1.9 1.3 3.1 1.3.2 0 .4 0 .6-.1.6 1 1.8 1.6 3 1.6.7 0 1.3-.2 1.9-.5.2.8.9 1.4 1.8 1.4 1 0 1.8-.8 1.8-1.8 0-1.1-.8-1.9-1.8-1.9" fill="#dae3ea"/><path d="m33.7 18.2c-1.1-.5-2.3-.7-3.5-.7-1.4 0-3.3.3-4.5.9l-.9 7.2h12.7l-3.8-7.4" fill="#94989b"/><path fill="#62727a" d="m18.4 27.4l-4.5 2.1v5.2h2.7v10.9h23.6v-11.8z"/><path fill="#b2c1c0" d="m18.4 27.4v5.5h2.7v11.8h23.6v-11.8h2.8v-5.5z"/><path fill="#62727a" d="m21.1 47.5l-10.9 1.7v-9.1l10.9-5.4z"/><path d="m56.3 56.9c0 0-30.8 6.5-45.3 1.2-2-.7-4.3-2-7.1-4.9v-4.4c0 0 10.3-1.3 22.9-8.1 15.5-8.3 29.1-8.7 33.5-6.8-.1-.1-4 6.2-4 23" fill="#f15744"/><path d="m56.5 51.9c.1-3.8 1.3-5.4 2.8-7.9 5.5-8.8.9-10.1.9-10.1-3.5 5.8-3.7 18-3.7 18" fill="#d33b23"/><path d="m59.3 35.7c-5.6-1.6-18.5-.4-32.7 7.2-12.4 6.7-22.6 7.2-22.7 7.2v.9c.1 0 10.5-.5 23.1-7.2 13.8-7.4 26.6-8.6 32-7.2.1-.3.2-.6.3-.9" fill="#fff"/><path d="m59.3 35.8c-.1.3-.2.6-.3.8.8.3 2.2 1.1 2.7 2.6.2-.5.3-1 .3-1.4-.8-1.1-2-1.7-2.7-2" fill="#b2c1c0"/><path fill="#62727a" d="m21.2 25.6h23.5v1.8h-23.5z"/><path fill="#ff9d27" d="m21.2 23.8h23.5v1.8h-23.5z"/><path fill="#c5d0d8" d="m18.4 27.4h29.1v5.4h-29.1z"/><g fill="#94989b"><path d="m20.3 28.8h1.3v2.7h-1.3z"/><path d="m23.7 28.8h1.3v2.7h-1.3z"/><path d="m27.1 28.8h1.3v2.7h-1.3z"/><path d="m30.5 28.8h1.3v2.7h-1.3z"/><path d="m34 28.8h1.3v2.7h-1.3z"/><path d="m37.4 28.8h1.3v2.7h-1.3z"/><path d="m40.8 28.8h1.3v2.7h-1.3z"/><path d="m44.2 28.8h1.3v2.7h-1.3z"/></g><g fill="#62727a"><path d="m22.9 33.8h3.6v1.8h-3.6z"/><path d="m42.9 34.3l-3.6 1v-1.5h3.6z"/><path d="m33.8 33.8h3.6v1.8h-3.6z"/><path d="m28.4 33.8h3.6v1.8h-3.6z"/></g><g fill="#fff"><path d="m13.5 41.4l-2.3 1.1v2.2l2.3-.9z"/><path d="m20.1 38.1l-2.3 1.2v2.8l2.3-.9z"/><path d="m16.8 39.8l-2.3 1.1v2.5l2.3-.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a3-1f3fb.svg b/riot/emojione/svg/1f6a3-1f3fb.svg new file mode 100644 index 0000000..a97ed61 --- /dev/null +++ b/riot/emojione/svg/1f6a3-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.1 29.4c-.4 1.4-2.9 1.4-3.1 1.3-.2-.1-2.3-1.4-1.9-2.8.4-1.4.4-1.6 3-.9 2.5.8 2.4 1 2 2.4" fill="#e0ac68"/><path d="m23.4 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path d="m42.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.7-.7 1.2-.6" fill="#ffe1bd"/><path fill="#e0ac68" d="m42.3 42l4.5-13.4h-2.5l-4.4 13.2z"/><path fill="#7a5136" d="M49.3 43.9 61 41 3 37.2z"/><path d="m24.3 26.2v-1.3h-3.8v1.3c0 .7-.6 1.3-1.3 1.3h6.5c-.8 0-1.4-.5-1.4-1.3" fill="#ffe1bd"/><path d="m27.2 27.2h-9.4c-1.5 0-2.7 1.2-2.7 2.6 0 .2 0 .4.1.6l2.5 13.5h12l-2.5-16.7" fill="#47b892"/><path d="m59.2 54.9l1.8-11.8-11.7 1-46.3-6.9c-.4 8.3 11.7 17.7 11.7 17.7h44.5" fill="#d3976e"/><path d="m61 43.1v-2.1l-11.7 1.9-46.3-5.7c0 .8 0 1.6.2 2.4l46.1 5.7 11.7-2.2" fill="#af7146"/><path fill="#d3976e" d="m49.3 42.9v2.4l11.7-2.2v-2.1z"/><path fill="#ffe1bd" d="m61 53.9h-11.7v-8.6l11.7-2.2z"/><path d="m57.7 48.7c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-4.3-1.6-4.3-1.6v14.9h60v-14.9c.2 0-1.7 1.6-4.1 1.6" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.4-.3 13.6 3.9 18.5 1.5"/><path d="m35.4 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/><path d="m47 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.5-.3 13.7 3.9 18.5 1.5"/><path d="m58.7 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/></g><path d="m18.3 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path fill="#fbbf67" d="m31.1 59.7h-2.5l10.5-31.1h2.5z"/><path d="m37.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.6-.7 1.2-.6" fill="#ffe1bd"/><g fill="#fbbf67"><path d="m30.9 56.3c-2.4-1-6.1 1.1-7.1 4.7h9.4c.9-2.2-.7-4-2.3-4.7"/><path d="m43.1 29.4c-.5 1.6-3.3 1.6-3.5 1.5-.2-.1-2.6-1.6-2.2-3.1.5-1.6.5-1.8 3.4-1 2.9.8 2.7 1 2.3 2.6"/></g><path d="m11.1 13.9l1.2 2.1h20.3l.9-2.3c0-8.2-1.9-11.6-11-11.7-9.1-.1-11.4 3.5-11.4 11.9" fill="#594640"/><path d="m32.6 13.7c-.1.5-.2.9-.3 1.2-.2.4-.7.7-.7.7s.1-.9.1-2.2c-.5-7.5-1-3.9-9.3-3.9-8.3 0-8.7-3.6-9.3 3.9 0 1.3.1 2.2.1 2.2s-.5-.3-.7-.7c-.1-.3-.2-.7-.3-1.2-.8-.2-1.8 0-1.8 2.2 0 1.4.5 2.6 2.3 2.7.6 4.7 6.9 7.9 9.7 7.9 2.8 0 9.1-3.1 9.7-7.9 1.7-.1 2.3-1.3 2.3-2.7 0-2.2-1-2.4-1.8-2.2" fill="#ffe1bd"/><g fill="#664e27"><circle cx="18.2" cy="16.2" r="1.7"/><circle cx="26.7" cy="16.2" r="1.7"/><path d="m25.2 21.5c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a3-1f3fc.svg b/riot/emojione/svg/1f6a3-1f3fc.svg new file mode 100644 index 0000000..4579d7f --- /dev/null +++ b/riot/emojione/svg/1f6a3-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.1 29.4c-.4 1.4-2.9 1.4-3.1 1.3-.2-.1-2.3-1.4-1.9-2.8.4-1.4.4-1.6 3-.9 2.5.8 2.4 1 2 2.4" fill="#e0ac68"/><path d="m23.4 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path d="m42.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.7-.7 1.2-.6" fill="#fed0ac"/><path fill="#e0ac68" d="m42.3 42l4.5-13.4h-2.5l-4.4 13.2z"/><path fill="#7a5136" d="M49.3 43.9 61 41 3 37.2z"/><path d="m24.3 26.2v-1.3h-3.8v1.3c0 .7-.6 1.3-1.3 1.3h6.5c-.8 0-1.4-.5-1.4-1.3" fill="#fed0ac"/><path d="m27.2 27.2h-9.4c-1.5 0-2.7 1.2-2.7 2.6 0 .2 0 .4.1.6l2.5 13.5h12l-2.5-16.7" fill="#47b892"/><path d="m59.2 54.9l1.8-11.8-11.7 1-46.3-6.9c-.4 8.3 11.7 17.7 11.7 17.7h44.5" fill="#d3976e"/><path d="m61 43.1v-2.1l-11.7 1.9-46.3-5.7c0 .8 0 1.6.2 2.4l46.1 5.7 11.7-2.2" fill="#af7146"/><path fill="#d3976e" d="m49.3 42.9v2.4l11.7-2.2v-2.1z"/><path fill="#fed0ac" d="m61 53.9h-11.7v-8.6l11.7-2.2z"/><path d="m57.7 48.7c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-4.3-1.6-4.3-1.6v14.9h60v-14.9c.2 0-1.7 1.6-4.1 1.6" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.4-.3 13.6 3.9 18.5 1.5"/><path d="m35.4 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/><path d="m47 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.5-.3 13.7 3.9 18.5 1.5"/><path d="m58.7 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/></g><path d="m18.3 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path fill="#fbbf67" d="m31.1 59.7h-2.5l10.5-31.1h2.5z"/><path d="m37.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.6-.7 1.2-.6" fill="#fed0ac"/><g fill="#fbbf67"><path d="m30.9 56.3c-2.4-1-6.1 1.1-7.1 4.7h9.4c.9-2.2-.7-4-2.3-4.7"/><path d="m43.1 29.4c-.5 1.6-3.3 1.6-3.5 1.5-.2-.1-2.6-1.6-2.2-3.1.5-1.6.5-1.8 3.4-1 2.9.8 2.7 1 2.3 2.6"/></g><path d="m11.1 13.9l1.2 2.1h20.3l.9-2.3c0-8.2-1.9-11.6-11-11.7-9.1-.1-11.4 3.5-11.4 11.9" fill="#dbb471"/><path d="m32.6 13.7c-.1.5-.2.9-.3 1.2-.2.4-.7.7-.7.7s.1-.9.1-2.2c-.5-7.5-1-3.9-9.3-3.9-8.3 0-8.7-3.6-9.3 3.9 0 1.3.1 2.2.1 2.2s-.5-.3-.7-.7c-.1-.3-.2-.7-.3-1.2-.8-.2-1.8 0-1.8 2.2 0 1.4.5 2.6 2.3 2.7.6 4.7 6.9 7.9 9.7 7.9 2.8 0 9.1-3.1 9.7-7.9 1.7-.1 2.3-1.3 2.3-2.7 0-2.2-1-2.4-1.8-2.2" fill="#fed0ac"/><g fill="#664e27"><circle cx="18.2" cy="16.2" r="1.7"/><circle cx="26.7" cy="16.2" r="1.7"/><path d="m25.2 21.5c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a3-1f3fd.svg b/riot/emojione/svg/1f6a3-1f3fd.svg new file mode 100644 index 0000000..30f40ac --- /dev/null +++ b/riot/emojione/svg/1f6a3-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.1 29.4c-.4 1.4-2.9 1.4-3.1 1.3-.2-.1-2.3-1.4-1.9-2.8.4-1.4.4-1.6 3-.9 2.5.8 2.4 1 2 2.4" fill="#e0ac68"/><path d="m23.4 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path d="m42.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.7-.7 1.2-.6" fill="#d6a57c"/><path fill="#e0ac68" d="m42.3 42l4.5-13.4h-2.5l-4.4 13.2z"/><path fill="#7a5136" d="M49.3 43.9 61 41 3 37.2z"/><path d="m24.3 26.2v-1.3h-3.8v1.3c0 .7-.6 1.3-1.3 1.3h6.5c-.8 0-1.4-.5-1.4-1.3" fill="#d6a57c"/><path d="m27.2 27.2h-9.4c-1.5 0-2.7 1.2-2.7 2.6 0 .2 0 .4.1.6l2.5 13.5h12l-2.5-16.7" fill="#47b892"/><path d="m59.2 54.9l1.8-11.8-11.7 1-46.3-6.9c-.4 8.3 11.7 17.7 11.7 17.7h44.5" fill="#d3976e"/><path d="m61 43.1v-2.1l-11.7 1.9-46.3-5.7c0 .8 0 1.6.2 2.4l46.1 5.7 11.7-2.2" fill="#af7146"/><path fill="#d3976e" d="m49.3 42.9v2.4l11.7-2.2v-2.1z"/><path fill="#d6a57c" d="m61 53.9h-11.7v-8.6l11.7-2.2z"/><path d="m57.7 48.7c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-4.3-1.6-4.3-1.6v14.9h60v-14.9c.2 0-1.7 1.6-4.1 1.6" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.4-.3 13.6 3.9 18.5 1.5"/><path d="m35.4 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/><path d="m47 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.5-.3 13.7 3.9 18.5 1.5"/><path d="m58.7 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/></g><path d="m18.3 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path fill="#fbbf67" d="m31.1 59.7h-2.5l10.5-31.1h2.5z"/><path d="m37.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.6-.7 1.2-.6" fill="#d6a57c"/><g fill="#fbbf67"><path d="m30.9 56.3c-2.4-1-6.1 1.1-7.1 4.7h9.4c.9-2.2-.7-4-2.3-4.7"/><path d="m43.1 29.4c-.5 1.6-3.3 1.6-3.5 1.5-.2-.1-2.6-1.6-2.2-3.1.5-1.6.5-1.8 3.4-1 2.9.8 2.7 1 2.3 2.6"/></g><path d="m11.1 13.9l1.2 2.1h20.3l.9-2.3c0-8.2-1.9-11.6-11-11.7-9.1-.1-11.4 3.5-11.4 11.9" fill="#594640"/><path d="m32.6 13.7c-.1.5-.2.9-.3 1.2-.2.4-.7.7-.7.7s.1-.9.1-2.2c-.5-7.5-1-3.9-9.3-3.9-8.3 0-8.7-3.6-9.3 3.9 0 1.3.1 2.2.1 2.2s-.5-.3-.7-.7c-.1-.3-.2-.7-.3-1.2-.8-.2-1.8 0-1.8 2.2 0 1.4.5 2.6 2.3 2.7.6 4.7 6.9 7.9 9.7 7.9 2.8 0 9.1-3.1 9.7-7.9 1.7-.1 2.3-1.3 2.3-2.7 0-2.2-1-2.4-1.8-2.2" fill="#d6a57c"/><g fill="#664e27"><circle cx="18.2" cy="16.2" r="1.7"/><circle cx="26.7" cy="16.2" r="1.7"/><path d="m25.2 21.5c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a3-1f3fe.svg b/riot/emojione/svg/1f6a3-1f3fe.svg new file mode 100644 index 0000000..3b64992 --- /dev/null +++ b/riot/emojione/svg/1f6a3-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.1 29.4c-.4 1.4-2.9 1.4-3.1 1.3-.2-.1-2.3-1.4-1.9-2.8.4-1.4.4-1.6 3-.9 2.5.8 2.4 1 2 2.4" fill="#e0ac68"/><path d="m23.4 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path d="m42.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.7-.7 1.2-.6" fill="#b47d56"/><path fill="#e0ac68" d="m42.3 42l4.5-13.4h-2.5l-4.4 13.2z"/><path fill="#7a5136" d="M49.3 43.9 61 41 3 37.2z"/><path d="m24.3 26.2v-1.3h-3.8v1.3c0 .7-.6 1.3-1.3 1.3h6.5c-.8 0-1.4-.5-1.4-1.3" fill="#b47d56"/><path d="m27.2 27.2h-9.4c-1.5 0-2.7 1.2-2.7 2.6 0 .2 0 .4.1.6l2.5 13.5h12l-2.5-16.7" fill="#47b892"/><path d="m59.2 54.9l1.8-11.8-11.7 1-46.3-6.9c-.4 8.3 11.7 17.7 11.7 17.7h44.5" fill="#d3976e"/><path d="m61 43.1v-2.1l-11.7 1.9-46.3-5.7c0 .8 0 1.6.2 2.4l46.1 5.7 11.7-2.2" fill="#af7146"/><path fill="#d3976e" d="m49.3 42.9v2.4l11.7-2.2v-2.1z"/><path fill="#b47d56" d="m61 53.9h-11.7v-8.6l11.7-2.2z"/><path d="m57.7 48.7c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-4.3-1.6-4.3-1.6v14.9h60v-14.9c.2 0-1.7 1.6-4.1 1.6" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.4-.3 13.6 3.9 18.5 1.5"/><path d="m35.4 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/><path d="m47 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.5-.3 13.7 3.9 18.5 1.5"/><path d="m58.7 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/></g><path d="m18.3 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path fill="#fbbf67" d="m31.1 59.7h-2.5l10.5-31.1h2.5z"/><path d="m37.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.6-.7 1.2-.6" fill="#b47d56"/><g fill="#fbbf67"><path d="m30.9 56.3c-2.4-1-6.1 1.1-7.1 4.7h9.4c.9-2.2-.7-4-2.3-4.7"/><path d="m43.1 29.4c-.5 1.6-3.3 1.6-3.5 1.5-.2-.1-2.6-1.6-2.2-3.1.5-1.6.5-1.8 3.4-1 2.9.8 2.7 1 2.3 2.6"/></g><path d="m11.1 13.9l1.2 2.1h20.3l.9-2.3c0-8.2-1.9-11.6-11-11.7-9.1-.1-11.4 3.5-11.4 11.9" fill="#231f20"/><path d="m32.6 13.7c-.1.5-.2.9-.3 1.2-.2.4-.7.7-.7.7s.1-.9.1-2.2c-.5-7.5-1-3.9-9.3-3.9-8.3 0-8.7-3.6-9.3 3.9 0 1.3.1 2.2.1 2.2s-.5-.3-.7-.7c-.1-.3-.2-.7-.3-1.2-.8-.2-1.8 0-1.8 2.2 0 1.4.5 2.6 2.3 2.7.6 4.7 6.9 7.9 9.7 7.9 2.8 0 9.1-3.1 9.7-7.9 1.7-.1 2.3-1.3 2.3-2.7 0-2.2-1-2.4-1.8-2.2" fill="#b47d56"/><g fill="#664e27"><circle cx="18.2" cy="16.2" r="1.7"/><circle cx="26.7" cy="16.2" r="1.7"/><path d="m25.2 21.5c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a3-1f3ff.svg b/riot/emojione/svg/1f6a3-1f3ff.svg new file mode 100644 index 0000000..57bd8c0 --- /dev/null +++ b/riot/emojione/svg/1f6a3-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.1 29.4c-.4 1.4-2.9 1.4-3.1 1.3-.2-.1-2.3-1.4-1.9-2.8.4-1.4.4-1.6 3-.9 2.5.8 2.4 1 2 2.4" fill="#e0ac68"/><path d="m23.4 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path d="m42.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.7-.7 1.2-.6" fill="#8a6859"/><path fill="#e0ac68" d="m42.3 42l4.5-13.4h-2.5l-4.4 13.2z"/><path fill="#7a5136" d="M49.3 43.9 61 41 3 37.2z"/><path d="m24.3 26.2v-1.3h-3.8v1.3c0 .7-.6 1.3-1.3 1.3h6.5c-.8 0-1.4-.5-1.4-1.3" fill="#8a6859"/><path d="m27.2 27.2h-9.4c-1.5 0-2.7 1.2-2.7 2.6 0 .2 0 .4.1.6l2.5 13.5h12l-2.5-16.7" fill="#47b892"/><path d="m59.2 54.9l1.8-11.8-11.7 1-46.3-6.9c-.4 8.3 11.7 17.7 11.7 17.7h44.5" fill="#d3976e"/><path d="m61 43.1v-2.1l-11.7 1.9-46.3-5.7c0 .8 0 1.6.2 2.4l46.1 5.7 11.7-2.2" fill="#af7146"/><path fill="#d3976e" d="m49.3 42.9v2.4l11.7-2.2v-2.1z"/><path fill="#8a6859" d="m61 53.9h-11.7v-8.6l11.7-2.2z"/><path d="m57.7 48.7c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-4.3-1.6-4.3-1.6v14.9h60v-14.9c.2 0-1.7 1.6-4.1 1.6" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.4-.3 13.6 3.9 18.5 1.5"/><path d="m35.4 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/><path d="m47 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.5-.3 13.7 3.9 18.5 1.5"/><path d="m58.7 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/></g><path d="m18.3 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path fill="#fbbf67" d="m31.1 59.7h-2.5l10.5-31.1h2.5z"/><path d="m37.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.6-.7 1.2-.6" fill="#8a6859"/><g fill="#fbbf67"><path d="m30.9 56.3c-2.4-1-6.1 1.1-7.1 4.7h9.4c.9-2.2-.7-4-2.3-4.7"/><path d="m43.1 29.4c-.5 1.6-3.3 1.6-3.5 1.5-.2-.1-2.6-1.6-2.2-3.1.5-1.6.5-1.8 3.4-1 2.9.8 2.7 1 2.3 2.6"/></g><path d="m11.1 13.9l1.2 2.1h20.3l.9-2.3c0-8.2-1.9-11.6-11-11.7-9.1-.1-11.4 3.5-11.4 11.9" fill="#231f20"/><path d="m32.6 13.7c-.1.5-.2.9-.3 1.2-.2.4-.7.7-.7.7s.1-.9.1-2.2c-.5-7.5-1-3.9-9.3-3.9-8.3 0-8.7-3.6-9.3 3.9 0 1.3.1 2.2.1 2.2s-.5-.3-.7-.7c-.1-.3-.2-.7-.3-1.2-.8-.2-1.8 0-1.8 2.2 0 1.4.5 2.6 2.3 2.7.6 4.7 6.9 7.9 9.7 7.9 2.8 0 9.1-3.1 9.7-7.9 1.7-.1 2.3-1.3 2.3-2.7 0-2.2-1-2.4-1.8-2.2" fill="#8a6859"/><g fill="#574137"><circle cx="18.2" cy="16.2" r="1.7"/><circle cx="26.7" cy="16.2" r="1.7"/><path d="m25.2 21.5c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a3.svg b/riot/emojione/svg/1f6a3.svg new file mode 100644 index 0000000..89eb387 --- /dev/null +++ b/riot/emojione/svg/1f6a3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48.1 29.4c-.4 1.4-2.9 1.4-3.1 1.3-.2-.1-2.3-1.4-1.9-2.8.4-1.4.4-1.6 3-.9 2.5.8 2.4 1 2 2.4" fill="#e0ac68"/><path d="m23.4 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path d="m42.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.7-.7 1.2-.6" fill="#ffdd67"/><path fill="#e0ac68" d="m42.3 42l4.5-13.4h-2.5l-4.4 13.2z"/><path fill="#7a5136" d="M49.3 43.9 61 41 3 37.2z"/><path d="m24.3 26.2v-1.3h-3.8v1.3c0 .7-.6 1.3-1.3 1.3h6.5c-.8 0-1.4-.5-1.4-1.3" fill="#ffdd67"/><path d="m27.2 27.2h-9.4c-1.5 0-2.7 1.2-2.7 2.6 0 .2 0 .4.1.6l2.5 13.5h12l-2.5-16.7" fill="#47b892"/><path d="m59.2 54.9l1.8-11.8-11.7 1-46.3-6.9c-.4 8.3 11.7 17.7 11.7 17.7h44.5" fill="#d3976e"/><path d="m61 43.1v-2.1l-11.7 1.9-46.3-5.7c0 .8 0 1.6.2 2.4l46.1 5.7 11.7-2.2" fill="#af7146"/><path fill="#d3976e" d="m49.3 42.9v2.4l11.7-2.2v-2.1z"/><path fill="#ffdd67" d="m61 53.9h-11.7v-8.6l11.7-2.2z"/><path d="m57.7 48.7c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-2.7-1.6-4.3-1.6s-1.9 1.6-4.3 1.6-2.7-1.6-4.3-1.6-1.9 1.6-4.3 1.6c-2.4 0-4.3-1.6-4.3-1.6v14.9h60v-14.9c.2 0-1.7 1.6-4.1 1.6" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.4-.3 13.6 3.9 18.5 1.5"/><path d="m35.4 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/><path d="m47 59.4c-6.8.9-11.4-4.6-18.5-1.5 5.5-.3 13.7 3.9 18.5 1.5"/><path d="m58.7 53.5c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/></g><path d="m18.3 28.7c-.1 0-.2 0-.2 0-.9 0-1.6.7-1.6 1.6 0 .7.4 1.2 1 1.4l17.7 5.5.9-2.9-17.8-5.6" fill="#3b946f"/><path fill="#fbbf67" d="m31.1 59.7h-2.5l10.5-31.1h2.5z"/><path d="m37.3 33.6l.7.2c.4.1.6.4.7.8.9.4 2 1.1 1.4 2.8-.1.3-.6 1.8-2.5 1.2-2.7-.9-2.7-.9-2-3l.5-1.4c.1-.5.6-.7 1.2-.6" fill="#ffdd67"/><g fill="#fbbf67"><path d="m30.9 56.3c-2.4-1-6.1 1.1-7.1 4.7h9.4c.9-2.2-.7-4-2.3-4.7"/><path d="m43.1 29.3c-.5 1.6-3.3 1.6-3.5 1.5-.2-.1-2.6-1.6-2.2-3.1.5-1.6.5-1.8 3.4-1s2.7 1.1 2.3 2.6"/></g><path d="m11.1 13.9l1.2 2.1h20.3l.9-2.3c0-8.2-1.9-11.6-11-11.7-9.1-.1-11.4 3.5-11.4 11.9" fill="#ffb300"/><path d="m32.6 13.7c-.1.5-.2.9-.3 1.2-.2.4-.7.7-.7.7s.1-.9.1-2.2c-.5-7.5-1-3.9-9.3-3.9-8.3 0-8.7-3.6-9.3 3.9 0 1.3.1 2.2.1 2.2s-.5-.3-.7-.7c-.1-.3-.2-.7-.3-1.2-.8-.2-1.8 0-1.8 2.2 0 1.4.5 2.6 2.3 2.7.6 4.7 6.9 7.9 9.7 7.9 2.8 0 9.1-3.1 9.7-7.9 1.7-.1 2.3-1.3 2.3-2.7 0-2.2-1-2.4-1.8-2.2" fill="#ffdd67"/><g fill="#937237"><circle cx="18.2" cy="16.2" r="1.7"/><circle cx="26.7" cy="16.2" r="1.7"/><path d="m25.2 21.5c-1.8 1.4-3.8 1.4-5.6 0-.2-.2-.4.1-.3.4.5 1 1.6 1.9 3 1.9 1.4 0 2.5-.9 3-1.9.3-.3.1-.6-.1-.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a4.svg b/riot/emojione/svg/1f6a4.svg new file mode 100644 index 0000000..70aa1ad --- /dev/null +++ b/riot/emojione/svg/1f6a4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffb300"><path d="m36.8 23.2c-.1 1-2.3-.4-1.3-2.4 1.4-2.8 4.8-2.8 4.8-2.8s-3.1 2.5-3.5 5.2"/><path d="m38.6 22.5c-.3.9-2-.9-.7-2.5 1.9-2.3 5-1.5 5-1.5s-3.4 1.7-4.3 4"/><path d="m40.2 22.3c-.5.7-1.6-1.3 0-2.5 2.3-1.6 5-.1 5-.1s-3.5.7-5 2.6"/></g><path fill="#ffdd67" d="m41.3 27.8l1.6-.9v5.6h-3.6z"/><path d="m38.8 30.4c1.1.7.5 2.1.5 2.1 1.5 0 2.5-2.9 2.5-4.7l-3 2.6" fill="#eba352"/><path d="m42.4 20.4l-6.5 2.3c-.8 1.5-.3 2.3-.3 3 0 .3-.6.8-.9 1.1-.7.6.5 1.1.9 1 .3.6-.5 1 1.4.6 0 0-2 .8-.6 1.2-.1.8-.3 2.3 3.8.7 1.2-.5 1.6-2.6 1.6-2.6l2-.4-1.4-6.9" fill="#ffdd67"/><path d="m37.7 19.9c4.3-1.4 6.6.8 7 1.8 1.1 2.6.2 5.5-1.9 7.7 0 0-.9-.4-1.1-1.6 0 0 1.1.5 1.5-1.8.4-1.9-1.6-2.9-2.6-.3h-.3c-.6-1.3.5-2.9-1-3.4-1.3-.5-3.6.7-3.6.7-.5-.8.3-2.6 2-3.1" fill="#ffb300"/><path d="m37.2 25.7c0 .4-.2.7-.5.7-.3 0-.4-.3-.4-.7 0-.4.1-.7.4-.7.2-.1.5.2.5.7" fill="#937237"/><path d="m41.3 26.2c0-.8.7-1.5 1.3-1.5 0 0-1.1.9-.9 2.2.1 0-.4-.2-.4-.7" fill="#eba352"/><path d="m37.6 28.3c0 0-.8.6-1.1.7-.6.3-.7.1-.3-.2.3-.2.8-.4.8-.4l.6-.1" fill="#937237"/><path d="m43.3 39.5l-5.4-.5c0 0 .4-4.5 1.1-6.3.6-1.6 3.9-.7 3.9-.7l.4 7.5" fill="#47b892"/><g fill="#3b946f"><path d="m41.7 33.4c-.3-.3-.8-.3-1.2 0l-2.1 2.2 1.2 1.1 2.1-2.2c.3-.3.3-.8 0-1.1"/><path d="m39.9 36c0-.4-.4-.8-.8-.8l-3.2.1.1 1.7 3.2-.1c.4 0 .8-.4.7-.9"/></g><path d="m36.3 36.3v-.8c0-.3-.2-.5-.5-.5h-.4c-.2 0-.4.1-.5.3-.5 0-1.2.1-1.2 1.1 0 .2-.1 1 1 1.1 1.5 0 1.5 0 1.6-1.2" fill="#ffdd67"/><path fill="#42ade2" d="m2 42h60v20h-60z"/><path fill="#c94747" d="m2 32.8h23.8l7.3 7.1z"/><path d="m2 32.8c0 0 6.8 13.9 26.2 19h30.5l3.3-10.1-60-8.9" fill="#dae3ea"/><path d="m28.7 48.8h27.1l-27.2-4.6 28.4.6-46.7-7.8c3.6 4.1 9.5 9.1 18.4 11.8" fill="#f15744"/><path d="m34.6 28.2c0 0-1.5 0-4.4 1.6-3 1.6-4.4 3.1-4.4 3.1l4.2 4.1 4.6.7v-9.5" fill="#6adbc6"/><path d="m32.4 30.3c-1.3.4-2.5 1.1-3.6 2-1 .8 0 2.5.9 1.7.9-.7 2-1.4 3.1-1.8 1.2-.3.7-2.3-.4-1.9" fill="#fff"/><path d="m34.6 51.8c0 0 5.5-2.1 7.1-1.6.4.1 0 .8 0 .8s4.3-3.6 6.6-3.2c1.6.3 0 3.1 0 3.1s4-6.4 7.7-6c2.2.2.9 4 .9 4l5-10v13h-27.3z" fill="#428bc1"/><path d="m34.6 51.8c0 0 5.5-1.7 7.1-1.3.4.1 0 .7 0 .7s4.3-3 6.6-2.7c1.6.2 0 2.5 0 2.5s4-5.3 7.7-5c2.2.2.9 3.3.9 3.3l5-8.2v10.7h-27.3" fill="#42ade2"/><path d="m40.1 51.8c0 0 6.8-2.8 7.9-2.7 1.7.2.8 2 .8 2s2.8-2.8 4.3-2.5c1 .2 0 2.3 0 2.3s2.6-4.8 5-4.6c1.4.2.6 3 .6 3l3.3-2.1v4.4l-21.9.2" fill="#bbecff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a5.svg b/riot/emojione/svg/1f6a5.svg new file mode 100644 index 0000000..30aa0d0 --- /dev/null +++ b/riot/emojione/svg/1f6a5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M2,32c0,8.2,6.8,15,15,15h30c8.3,0,15-6.8,15-15s-6.7-15-15-15H17C8.8,17,2,23.8,2,32z" fill="#94989b"/><path d="m3.9 32c0 7.2 5.9 13.1 13.1 13.1h30c7.2 0 13.1-5.9 13.1-13.1s-5.9-13.1-13.1-13.1h-30c-7.2 0-13.1 5.9-13.1 13.1" fill="#3e4347"/><circle cx="32" cy="32" r="7.5" fill="#ffe62e"/><circle cx="13.2" cy="32" r="7.5" fill="#ed4c5c"/><circle cx="50.8" cy="32" r="7.5" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a6.svg b/riot/emojione/svg/1f6a6.svg new file mode 100644 index 0000000..7f6e697 --- /dev/null +++ b/riot/emojione/svg/1f6a6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-8.2 0-15 6.8-15 15v30c0 8.3 6.8 15 15 15s15-6.7 15-15v-30c0-8.2-6.8-15-15-15" fill="#94989b"/><path d="m32 3.9c-7.2 0-13.1 5.9-13.1 13.1v30c0 7.2 5.9 13.1 13.1 13.1s13.1-5.9 13.1-13.1v-30c0-7.2-5.9-13.1-13.1-13.1" fill="#3e4347"/><circle cx="32" cy="32" r="7.5" fill="#ffe62e"/><circle cx="32" cy="13.2" r="7.5" fill="#ed4c5c"/><circle cx="32" cy="50.8" r="7.5" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a7.svg b/riot/emojione/svg/1f6a7.svg new file mode 100644 index 0000000..c48a759 --- /dev/null +++ b/riot/emojione/svg/1f6a7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffce31" d="m3.4 17.5h57.2v19.7h-57.2z"/><g fill="#3e4347"><path d="m12.7 37.1h-9.3l8.6-19.6h9.3z"/><path d="m23.1 37.1l8.1-19.6h9.7l-8.1 19.6"/><path d="m42.7 37.1l8.1-19.6h9.8l-8.1 19.6"/></g><path fill="#94989b" d="m11.4 10.9h3.8v6.1h-3.8z"/><path fill="#d0d0d0" d="m12.3 10.9h1.9v6.1h-1.9z"/><circle cx="13.2" cy="8.6" r="6.6" fill="#94989b"/><circle cx="13.2" cy="8.6" r="5.6" fill="#d0d0d0"/><circle cx="13.2" cy="8.6" r="4.7" fill="#ed4c5c"/><path fill="#94989b" d="m48.9 10.9h3.8v6.1h-3.8z"/><path fill="#d0d0d0" d="m49.8 10.9h1.9v6.1h-1.9z"/><circle cx="50.8" cy="8.6" r="6.6" fill="#94989b"/><circle cx="50.8" cy="8.6" r="5.6" fill="#d0d0d0"/><circle cx="50.8" cy="8.6" r="4.7" fill="#ed4c5c"/><path fill="#94989b" d="m11.4 37.6h3.8v24.4h-3.8z"/><path fill="#d0d0d0" d="m12.3 37.6h1.9v24.4h-1.9z"/><path d="m17 62h-7.5c0 0 1.9-2.5 1.9-3.3h3.8c-.1.8 1.8 3.3 1.8 3.3" fill="#3e4347"/><path fill="#94989b" d="m48.9 37.6h3.8v24.4h-3.8z"/><path fill="#d0d0d0" d="m49.8 37.6h1.9v24.4h-1.9z"/><path d="m54.5 62h-7.5c0 0 1.9-2.5 1.9-3.3h3.8c-.1.8 1.8 3.3 1.8 3.3" fill="#3e4347"/><path fill="#94989b" d="m7.9 44.2h48.1v3.8h-48.1z"/><path fill="#d0d0d0" d="m9.5 45.1h45v1.9h-45z"/><g fill="#3e4347"><circle cx="13.2" cy="46.1" r=".7"/><circle cx="50.8" cy="46.1" r=".7"/></g><path d="m61.1 17h-58.2c-.5 0-.9.4-.9.9v18.8c0 .5.4.9.9.9h58.1c.5 0 .9-.4.9-.9v-18.8c.1-.5-.3-.9-.8-.9m-1 17.8c0 .5-.4.9-.9.9h-54.4c-.5 0-.9-.4-.9-.9v-15c0-.5.4-.9.9-.9h54.4c.5 0 .9.4.9.9v15" fill="#d0d0d0"/><path d="m61.1 17.5c.3 0 .5.2.5.5v18.8c0 .3-.2.5-.5.5h-58.2c-.3 0-.5-.2-.5-.5v-18.9c0-.3.2-.5.5-.5h58.2m-56.3 18.8h54.4c.8 0 1.4-.6 1.4-1.4v-15c0-.8-.6-1.4-1.4-1.4h-54.4c-.8 0-1.4.6-1.4 1.4v15c0 .8.6 1.4 1.4 1.4m56.3-19.2h-58.2c-.5 0-.9.4-.9.9v18.8c0 .5.4.9.9.9h58.1c.5 0 .9-.4.9-.9v-18.8c.1-.5-.3-.9-.8-.9zm-56.3 18.8c-.5 0-.9-.4-.9-.9v-15c0-.5.4-.9.9-.9h54.4c.5 0 .9.4.9.9v15c0 .5-.4.9-.9.9h-54.4" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a8.svg b/riot/emojione/svg/1f6a8.svg new file mode 100644 index 0000000..2a00519 --- /dev/null +++ b/riot/emojione/svg/1f6a8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m9.3 52.5v4.2c0 2.4 10.2 4.3 22.7 4.3s22.7-1.9 22.7-4.2v-4.2l-45.4-.1" fill="#3e4347"/><path d="m12.8 52.5v4.2c0 2.3 8.6 4.2 19.2 4.2s19.2-1.9 19.2-4.2v-4.2h-38.4" fill="#62696d"/><path fill="#c94747" d="m54.7 52.5h-45.4l5-25.1h35.4z"/><ellipse cx="32" cy="52.5" rx="22.7" ry="4.2" fill="#b23838"/><path d="m51.2 52.2l-4.2-24.8h-30l-4.2 24.9c0 .1 0 .2 0 .3 0 2.3 8.6 4.2 19.2 4.2s19.2-1.9 19.2-4.2c0-.2 0-.3 0-.4" opacity=".3" fill="#ffc7ce"/><ellipse cx="32" cy="27.4" rx="17.7" ry="4.2" fill="#ed4c5c"/><g opacity=".5"><path d="m17.2 27.8c0-.7.6-1.2 1.2-1.5.6-.4 1.2-.6 1.8-.9 1.3-.4 2.6-.7 3.9-1 2.6-.5 5.3-.6 7.9-.7 2.6 0 5.3.2 7.9.7 1.3.2 2.6.5 3.9 1 .6.2 1.2.5 1.8.9.5.3 1.2.8 1.2 1.5-.1-.7-.8-1-1.3-1.3-.6-.3-1.2-.5-1.8-.6-1.3-.3-2.5-.5-3.8-.7-2.6-.3-5.2-.4-7.8-.4-2.6 0-5.2.1-7.8.4-1.3.1-2.6.4-3.8.7-.6.2-1.3.3-1.8.6-.7.3-1.4.7-1.5 1.3" fill="#c94747"/></g><ellipse cx="32" cy="40.2" rx="13.5" ry="13.4" opacity=".3" fill="#ffc7ce"/><path fill="#ffe6ea" d="m44.7 40.2l-7.8-2 4.3-7.2-7.2 4.4-2-7.9-2 7.9-7.2-4.4 4.3 7.2-7.8 2 7.8 2-4.3 7.2 7.2-4.3 2 7.8 2-7.8 7.2 4.3-4.3-7.2z"/><g fill="#f15744"><path d="m56.9 8l-7.9 11.9 12.8-7z"/><path d="m7.1 8l7.9 11.9-12.8-7z"/><path d="m0 23.1l12 4-12 1.7z"/><path d="m64 23.1l-12 4 12 1.7z"/><path d="M17.2 4 25.3 18.2 23.7 3z"/><path d="M46.8 4 38.7 18.2 40.3 3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6a9.svg b/riot/emojione/svg/1f6a9.svg new file mode 100644 index 0000000..d07347b --- /dev/null +++ b/riot/emojione/svg/1f6a9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m26.2 61.5c0 1.4-4.3 2.5-9.7 2.5-5.4 0-9.7-1.1-9.7-2.5 0-1.4 4.3-2.5 9.7-2.5 5.3 0 9.7 1.2 9.7 2.5" fill="#ccc"/><path d="m56.1 17.7c-1.9-.9-33.1-15.6-37.7-17.7v39.5c4.5-2.1 35.7-16.8 37.6-17.7 1.6-.7 1.6-3.4.1-4.1" fill="#ed4c5c"/><path fill="#d3976e" d="m14.5 0h3.9v61.5h-3.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6aa.svg b/riot/emojione/svg/1f6aa.svg new file mode 100644 index 0000000..ac7fa2f --- /dev/null +++ b/riot/emojione/svg/1f6aa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M3,29v32h58V29C61-10,3-9.4,3,29z" fill="#89664c"/><path d="M7.2,31.2V61h49.5V31.2C56.8-5,7.2-4.5,7.2,31.2z" fill="#594640"/><path d="M8,31.7V61H56V31.7C56-4.1,8-3.5,8,31.7z" fill="#a37d64"/><path fill="#94989b" d="m0 61h64v3h-64z"/><g fill="#594640"><path d="m35.2 30.5h16.6c-.6-12.1-8.3-18.6-16.6-19.8 0 0 0 19.8 0 19.8"/><path d="m29.7 30.5v-19.7c-8.3 1.2-16 7.9-16.6 19.7h16.6"/><path d="m35.2 36.1h16.7v19.9h-16.7z"/><path d="m13 36.1h16.7v19.9h-16.7z"/></g><g fill="#89664c"><path d="m34.8 30.1h16.6c-.6-12.1-8.3-18.6-16.6-19.8 0 .1 0 19.8 0 19.8"/><path d="m29.2 30.1v-19.7c-8.3 1.2-16 7.9-16.6 19.7h16.6"/><path d="m34.8 35.7h16.7v19.9h-16.7z"/><path d="m12.5 35.7h16.7v19.9h-16.7z"/></g><path fill="#ffce31" d="m47.5 28.9h7v14h-7z"/><path fill="#f2b200" d="m48 29.4h6v13h-6z"/><path d="m52 41.2l-.4-2.7c.2-.2.4-.5.4-.8 0-.6-.4-1-1-1-.6 0-1 .4-1 1 0 .3.2.6.4.8l-.4 2.7h2" fill="#3e4347"/><circle cx="51" cy="33" r="2.9" fill="#b78300"/><path d="m53.8 32.5c0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9 1.6 0 2.9 1.3 2.9 2.9" fill="#ffd664"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6ab.svg b/riot/emojione/svg/1f6ab.svg new file mode 100644 index 0000000..1877e1d --- /dev/null +++ b/riot/emojione/svg/1f6ab.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-16.6 0-30 13.4-30 30 0 16.6 13.4 30 30 30s30-13.4 30-30c0-16.6-13.4-30-30-30m22 30c0 4.6-1.4 8.9-3.9 12.5l-30.6-30.6c3.6-2.5 7.9-3.9 12.5-3.9 12.2 0 22 9.9 22 22m-44 0c0-4.6 1.4-8.9 3.9-12.5l30.6 30.6c-3.6 2.5-7.9 3.9-12.5 3.9-12.1 0-22-9.9-22-22" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6ac.svg b/riot/emojione/svg/1f6ac.svg new file mode 100644 index 0000000..2f44e92 --- /dev/null +++ b/riot/emojione/svg/1f6ac.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#f2b200" d="m0 50h26v14h-26z"/><path fill="#dce5e5" d="m26 50h34v14h-34z"/><path fill="#ff8736" d="m60 50h4v14h-4z"/><path d="M33.5,16C28.4,35.1,43.9,9,64,47C53.3,32.9,18.8,43.2,4.3,27.5C-15.8,5.8,41.9-15.6,33.5,16z" fill="#abc2c6"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6ad.svg b/riot/emojione/svg/1f6ad.svg new file mode 100644 index 0000000..f02dd41 --- /dev/null +++ b/riot/emojione/svg/1f6ad.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><path fill="#eda454" d="m12 32h15.4v8h-15.4z"/><path fill="#fff" d="m27.4 32h20.2v8h-20.2z"/><g fill="#ffce31"><ellipse cx="13.3" cy="36" rx=".7" ry=".9"/><path d="m14 33.4c0 .5-.3.9-.7.9-.4 0-.7-.4-.7-.9 0-.5.3-.9.7-.9.4.1.7.5.7.9"/><ellipse cx="13.3" cy="38.6" rx=".7" ry=".9"/><ellipse cx="15.2" cy="37.1" rx=".7" ry=".9"/><ellipse cx="15.2" cy="34.9" rx=".7" ry=".9"/><ellipse cx="17.1" cy="36" rx=".7" ry=".9"/><path d="m17.8 33.4c0 .5-.3.9-.7.9-.4 0-.7-.4-.7-.9 0-.5.3-.9.7-.9.4.1.7.5.7.9"/><ellipse cx="17.1" cy="38.6" rx=".7" ry=".9"/><path d="m15.2 38.6c-.4 0-.7.4-.7.9h1.4c0-.6-.3-.9-.7-.9"/><path d="m15.2 33.4c.4 0 .7-.4.7-.9h-1.4c0 .5.3.9.7.9"/><ellipse cx="18.9" cy="37.1" rx=".7" ry=".9"/><ellipse cx="18.9" cy="34.9" rx=".7" ry=".9"/><path d="m18.9 38.6c-.4 0-.7.4-.7.9h1.4c0-.6-.3-.9-.7-.9"/><path d="m18.9 33.4c.4 0 .7-.4.7-.9h-1.4c0 .5.3.9.7.9"/><ellipse cx="20.5" cy="36" rx=".7" ry=".9"/><path d="m21.2 33.4c0 .5-.3.9-.7.9s-.7-.4-.7-.9c0-.5.3-.9.7-.9.4.1.7.5.7.9"/><ellipse cx="20.5" cy="38.6" rx=".7" ry=".9"/><ellipse cx="22.5" cy="37.1" rx=".7" ry=".9"/><ellipse cx="22.5" cy="34.9" rx=".7" ry=".9"/><ellipse cx="24.4" cy="36" rx=".7" ry=".9"/><path d="m25.1 33.4c0 .5-.3.9-.7.9s-.7-.4-.7-.9c0-.5.3-.9.7-.9s.7.5.7.9"/><ellipse cx="24.4" cy="38.6" rx=".7" ry=".9"/><path d="m22.5 38.6c-.4 0-.7.4-.7.9h1.4c-.1-.6-.4-.9-.7-.9"/><path d="m22.5 33.4c.4 0 .7-.4.7-.9h-1.4c0 .5.3.9.7.9"/><path d="m26.8 37.1c0 .5-.3.9-.7.9-.4 0-.7-.4-.7-.9 0-.5.3-.9.7-.9.4 0 .7.4.7.9"/><ellipse cx="26.2" cy="34.9" rx=".7" ry=".9"/><path d="m26.2 38.6c-.4 0-.7.4-.7.9h1.4c-.1-.6-.4-.9-.7-.9"/><path d="m26.2 33.4c.4 0 .7-.4.7-.9h-1.4c0 .5.3.9.7.9"/></g><path fill="#ff8736" d="m47.6 32h2.4v8h-2.4z"/><path transform="matrix(.7071-.7071.7071.7071-13.2556 32.0003)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/><path d="M30.6,11.9C27.5,23.7,37.1,7.5,49.5,31c-6.6-8.7-27.9-2.4-36.8-12C0.2,5.6,35.9-7.6,30.6,11.9z" fill="#abc2c6"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6ae.svg b/riot/emojione/svg/1f6ae.svg new file mode 100644 index 0000000..54cbd38 --- /dev/null +++ b/riot/emojione/svg/1f6ae.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m28 38l-1 10h-8l-1-10h-2v13h14v-13z"/><path d="m20 37l3-3 3 4-4 2z"/><path d="m45 23h-6-6c-1 0-2 1-2 2l-1 4-5 3 1 2 6-2 2-5 1 24h3l1-13 1 13h3l1-24 1 9h3l-1-11c0-1-1-2-2-2"/><path d="m43 19c0 1-1 2-2 2h-4c-1 0-2-1-2-2v-4c0-1 1-2 2-2h4c1 0 2 1 2 2v4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6af.svg b/riot/emojione/svg/1f6af.svg new file mode 100644 index 0000000..bfc991b --- /dev/null +++ b/riot/emojione/svg/1f6af.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32.1" r="30" fill="#ff5a79"/><circle cx="32" cy="32.1" r="24" fill="#333"/><g fill="#fff"><path d="m32.6 20.5h2.6c1 0 1.7-.6 1.7-1.4v-3.4c0-.8-.8-1.4-1.7-1.4h-2.6c-1 0-1.7.6-1.7 1.4v3.4c0 .7.8 1.4 1.7 1.4"/><path d="m39.5 22h-11.5c-.8 0-1.5.5-1.5 1.2v5.8l-3.7 3v1.3l5.8-2.9.7-6v25.6h3l1.5-11.6 1.5 11.6h3v-25.7l1.3 11.6h1.4v-12.7c0-.7-.7-1.2-1.5-1.2"/><path d="m20 34.3h2.8v3.8h-2.8z"/><path d="m23.8 38.9h2.8v3.8h-2.8z"/><path d="m19.2 43.2h2.8v3.8h-2.8z"/></g><path transform="matrix(.7071-.7071.7071.7071-13.2935 32.0473)" fill="#ff5a79" d="m29 2.9h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b0.svg b/riot/emojione/svg/1f6b0.svg new file mode 100644 index 0000000..504d3ce --- /dev/null +++ b/riot/emojione/svg/1f6b0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m36.6 24.1v-1h-7.6v1c0 .6-.5 1-1 1h-5c-2.3 0-4.2 1.9-4.2 4.3v5.1h5.7v-1.8c0-1 .8-1.8 1.8-1.8h.6c.2 0 .5.2.6.4 1 1.9 3 3.1 5.3 3.1 2.3 0 4.2-1.3 5.3-3.2.1-.2.4-.4.6-.4h4.8v-5.8h-5.9c-.6.2-1-.3-1-.9"/><path d="m24.5 16.7c.2 0 1.5 0 1.6-.1.6 0 1.3-.1 4.4-.1.1.2.3.3.5.5v2.3h-1c-.6 0-1 .5-1 1s.5 1 1 1h1 3.5 1c.6 0 1-.5 1-1s-.5-1-1-1h-1v-2.3c.2-.1.3-.3.5-.5 3.1 0 3.8.1 4.4.1.2 0 1.5.1 1.6.1 1 0 1.9-.8 1.9-1.9s-.8-1.9-1.9-1.9c-.2 0-1.5 0-1.6.1-.6 0-1.3.1-4.4.1-.5-.7-1.3-1.1-2.2-1.1s-1.7.4-2.2 1.1c-3.1 0-3.8-.1-4.4-.1-.2 0-1.5-.1-1.6-.1-1 0-1.9.8-1.9 1.9s.8 1.9 1.8 1.9"/><path d="m45.2 23.1h2.8v9.7h-2.8z"/><path d="m17.5 52h8.3l1.5-14h-11.3l1.5 14m8.4-9h-8.4l-.4-4h9.3l-.5 4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b1.svg b/riot/emojione/svg/1f6b1.svg new file mode 100644 index 0000000..0eec893 --- /dev/null +++ b/riot/emojione/svg/1f6b1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><g fill="#fff"><path d="m35.3 26.1v-.8h-5.8v.8c0 .4-.3.8-.8.8h-3.8c-1.8 0-3.2 1.4-3.2 3.2v3.8h4.3v-1.3c0-.7.6-1.3 1.3-1.3h.5c.2 0 .4.2.5.3.8 1.4 2.3 2.3 4 2.3 1.7 0 3.2-.9 4-2.4.1-.1.3-.3.5-.3h3.7v-4.3h-4.5c-.4-.1-.7-.4-.7-.8"/><path d="m26.6 19.3c.1 0 1.1 0 1.2 0 .5 0 1-.1 3.4-.1.1.1.2.3.4.4v1.7h-.8c-.4 0-.8.3-.8.8s.3.8.8.8h.8 2.6.8c.4 0 .8-.3.8-.8s-.3-.8-.8-.8h-.8v-1.7c.1-.1.2-.2.4-.4 2.4 0 2.9.1 3.4.1.1 0 1.1 0 1.2 0 .8 0 1.4-.6 1.4-1.4s-.6-1.4-1.4-1.4c-.1 0-1.1 0-1.2 0-.5 0-1 .1-3.4.1-.4-.5-1-.8-1.7-.8-.7 0-1.3.3-1.7.8-2.4 0-2.9-.1-3.4-.1-.1 0-1.1 0-1.2 0-.8 0-1.4.6-1.4 1.4s.6 1.4 1.4 1.4"/><path d="m42.2 25.3h1.7v6.8h-1.7z"/><path d="m21.2 46.6h6.3l1.1-10.2h-8.6l1.2 10.2m6.3-6.5h-6.3l-.3-3h7l-.4 3"/></g><path transform="matrix(.7071-.7071.7071.7071-13.2553 31.9997)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b2.svg b/riot/emojione/svg/1f6b2.svg new file mode 100644 index 0000000..0a4447d --- /dev/null +++ b/riot/emojione/svg/1f6b2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#62727a"><path d="m27.5 51c0-3 2.3-5.5 5-5.5.2 0 .4 0 .6 0l19 2c2 .3 3.4 1.7 3.4 3.5 0 1.8-1.4 3.2-3.4 3.5l-19 2c-.2 0-.4 0-.6 0-2.7 0-5-2.5-5-5.5m1 0c0 2.4 1.9 4.5 4 4.5.1 0 .3 0 .5 0l19-2c1.3-.2 2.6-1 2.6-2.5s-1.3-2.3-2.6-2.5l-19-2c-.1 0-.3 0-.4 0-2.2 0-4.1 2.1-4.1 4.5"/><path d="m40 51c0-6.6 5.4-12 12-12s12 5.4 12 12-5.4 12-12 12-12-5.4-12-12m2 0c0 5.5 4.5 10 10 10s10-4.5 10-10-4.5-10-10-10-10 4.5-10 10"/><path d="m0 51c0-6.6 5.4-12 12-12s12 5.4 12 12-5.4 12-12 12-12-5.4-12-12m2 0c0 5.5 4.5 10 10 10s10-4.5 10-10-4.5-10-10-10-10 4.5-10 10"/></g><g fill="#42ade2"><path d="m42 51c0-5.5 4.5-10 10-10s10 4.5 10 10-4.5 10-10 10-10-4.5-10-10m2 0c0 4.4 3.6 8 8 8s8-3.6 8-8c0-4.4-3.6-8-8-8s-8 3.6-8 8"/><path d="m2 51c0-5.5 4.5-10 10-10s10 4.5 10 10-4.5 10-10 10-10-4.5-10-10m2 0c0 4.4 3.6 8 8 8s8-3.6 8-8c0-4.4-3.6-8-8-8s-8 3.6-8 8"/></g><g fill="#ff9d27"><path d="m61.3 41.7c-8.3-8-21.9-2.3-22.3 9.3 0 1.3-2 1.3-2 0 .4-13.4 16.1-19.9 25.7-10.7.9.9-.5 2.3-1.4 1.4"/><path d="m2.7 41.7c8.3-8 21.9-2.3 22.3 9.3 0 1.3 2 1.3 2 0-.4-13.4-16.1-19.9-25.7-10.7-.9.9.5 2.3 1.4 1.4"/></g><path d="m51 50c-.7-5.8-4.2-10.7-9.5-13.2-1.2-.6-.1-2.3 1-1.7 6 2.9 9.7 8.4 10.5 14.9.2 1.3-1.8 1.3-2 0" fill="#42ade2"/><path d="m15.5 22.1c2.2-1.5 5.2-2 7.8-2 1.3 0 1.3 2 0 2-1.9 0-3.9.3-5.7 1.1.7.7 1.4 1.4 2.1 2.1.2.2.4.6.3 1-.5 1.3-1 2.7-1.5 4-.4 1.2-2.4.7-1.9-.5.4-1.2.9-2.3 1.3-3.5-.9-.9-1.7-1.7-2.5-2.5-.6-.6-.4-1.3.1-1.7" fill="#b2c1c0"/><g fill="#42ade2"><path transform="matrix(.3162-.9487.9487.3162-13.1788 65.7207)" d="m29.5 41h19v2h-19z"/><path d="m12.6 51.8c4.8-4 3.5-11.2 3.1-12.8l2.4-7.9c3 .4 14.1 2.6 19.6 12.4l1.7-1c-6.7-12.3-21.2-13.5-21.8-13.5l-.8-.1-3.1 10 .1.3c0 .1 1.8 7.5-2.4 11l1.2 1.6"/></g><g fill="#62727a"><path d="m28 20.1h-4.5v2h4.5c.3 0 .5-.2.5-.5v-1c0-.3-.2-.5-.5-.5"/><circle cx="12" cy="51" r="1"/></g><path d="m16.5 31.1c2.8 1.4 5 4 6.8 6.8 2.9 4.4 5.1 11.2 11.3 11.9h17.5c1.3 0 1.3 2 0 2-5.7 0-12 0-17.3 0-10.1 0-11-14.3-18.2-18.6l-.1-2.1" fill="#42ade2"/><circle cx="52" cy="51" r="2" fill="#62727a"/><path transform="matrix(.3162-.9487.9487.3162.943 61.3081)" fill="#b2c1c0" d="m39.8 29h6.3v2h-6.3z"/><g fill="#62727a"><path d="m40.6 26.1c3.8 0 3.8-2.1 7.1-2.1.8 0 2 1 2.2 1.8.3.8-.8 2.4-1.3 3.1-.7.9-1.7 1.4-2.6.9-1.3-.8-2.6-1.7-6.1 0-.8.4-2.1-.6-2-2.9.1-.7 1.1-.8 2.7-.8"/><path d="m36 51.8h2.6c.5 0 1 .4 1 1s-.5 1-1 1h-2.6c-.5 0-1-.4-1-1s.4-1 1-1"/></g><circle cx="33" cy="51" r="4" fill="#b2c1c0"/><path d="m32.7 52c-1.7-.7-3.3-1.3-5-2-1.2-.5-.7-2.4.5-1.9 1.7.7 3.3 1.3 5 2 1.2.4.7 2.3-.5 1.9" fill="#e8e8e8"/><g fill="#62727a"><path d="m26.8 48h2.5c.6 0 1 .4 1 1s-.4 1-1 1h-2.5c-.6 0-1-.4-1-1s.4-1 1-1"/><path d="m24.5 22.5c0 .3-.2.5-.5.5-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5.3 0 .5.2.5.5v3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b3.svg b/riot/emojione/svg/1f6b3.svg new file mode 100644 index 0000000..320cc23 --- /dev/null +++ b/riot/emojione/svg/1f6b3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><path d="m52 32.8c-.4-.9-.9-1.7-1.6-2.4-.7-.7-1.5-1.2-2.4-1.6-.9-.4-1.9-.6-2.9-.6-1 0-2 .2-2.9.6-.3.1-.5.2-.8.4l-2.5-3.5.9-2.2c.8-.5 1.9-1.1 2.2-1.7.5-1-1.4-.4-5.5-.4 0 0-2.2-.2-1.2.8.6.6 1.8 1.2 2.6 1.6l-.4 1.1h-10.9c0-.1 0-.1 0-.2.1-1.2-.4-2.2-1.1-3.3-.1-.1-.1-.2-.2-.3 0-.1-.1-.1-.1-.2 0-.2.2-.4.4-.4.8 0 3.4 0 3.4 0l1.1-1.7h-5.3c0 0 0 0 0 0-.5 0-1.2.3-1.5 1-.2.4-.1.8 0 1.3.2.4.5.9.9 1.4 1.3 1.5.7 2.7.1 3.9-.1.1-.1.2-.2.4-.2.4-.8 1.3-1.6 2.4-.2-.1-.5-.2-.7-.4-.9-.4-1.9-.6-2.9-.6s-2 .2-2.9.6c-.9.4-1.7.9-2.4 1.6-.7.7-1.2 1.5-1.6 2.4-.4.9-.6 1.9-.6 2.9 0 1 .2 2 .6 2.9.4.9.9 1.7 1.6 2.4.7.7 1.5 1.2 2.4 1.6.9.4 1.9.6 2.9.6 1 0 2-.2 2.9-.6.9-.4 1.7-.9 2.4-1.6.7-.7 1.2-1.5 1.6-2.4.4-.9.6-1.9.6-2.9 0-1-.2-2-.6-2.9-.4-.9-.9-1.7-1.6-2.4-.1-.1-.2-.2-.3-.3.3-.4.5-.7.7-1.1l7 7.2c-.1.2-.2.5-.2.8 0 1.1.8 2 1.9 2.1l.4 2.3h-.7v.8h2.3v-.8h-.8l-.4-2.4c.7-.2 1.2-.7 1.4-1.4l2.3-.3c.1.4.2.8.4 1.2.4.9.9 1.7 1.6 2.4.7.7 1.5 1.2 2.4 1.6.9.4 1.9.6 2.9.6 1 0 2-.2 2.9-.6.9-.4 1.7-.9 2.4-1.6.7-.7 1.2-1.5 1.6-2.4.4-.9.6-1.9.6-2.9 0-.9-.2-1.9-.6-2.8m-27.4 2.9c0 3.2-2.6 5.8-5.8 5.8-3.2 0-5.7-2.6-5.7-5.8 0-3.2 2.6-5.8 5.7-5.8 1 0 1.9.2 2.6.6-1.2 1.7-2.6 3.6-3.3 4.6-.1.1-.2.3-.2.5 0 .5.4.8.8.8.3 0 .5-.1.7-.3.3-.4 1.9-2.5 3.3-4.6 1.2 1.1 1.9 2.6 1.9 4.2m.9-8.1c.1-.1.1-.2.2-.3.1-.2.2-.4.3-.6h10.8l-3.3 8.3-.5-3h.7v-1h-2.3v.8h.8l.5 3.2-7.2-7.4c0 0 0 0 0 0m9.9 8.4c-.1-.2-.2-.3-.3-.4l3.1-7.9 1.9 2.6c-.1.1-.1.1-.2.2-.7.7-1.2 1.5-1.6 2.4-.4.9-.6 1.9-.6 2.9l-2.3.2m5.7-4.4l2.5 3.4-4.2.5c0-1.5.7-2.9 1.7-3.9m4 9.9c-2.7 0-4.9-1.8-5.5-4.3l7.1-.8-4.2-5.8c.8-.4 1.7-.7 2.7-.7 3.2 0 5.7 2.6 5.7 5.8 0 3.2-2.6 5.8-5.8 5.8" fill="#fff"/><path transform="matrix(.7071-.7071.7071.7071-13.2553 31.9997)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b4-1f3fb.svg b/riot/emojione/svg/1f6b4-1f3fb.svg new file mode 100644 index 0000000..23c64dc --- /dev/null +++ b/riot/emojione/svg/1f6b4-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffe1bd" d="m25.1 16.1l2.1-2.6 3.9 9.3-6.1 2.5z"/><path d="m22.8 22.1c2.2.4 2.2 3.2 2.2 3.2 2.5-1 2.2-6.6.9-9.6l-3.1 6.4" fill="#e6b796"/><path d="m21.8 3.2l-9.2 8.2c-.3 3.1 1.2 4 1.6 5.1.2.5-.4 1.8-.8 2.4-.7 1.5 1.5 1.5 2.2 1.1.9.9-.2 2.1 2.8.1 0 0-2.7 2.8-.1 2.4.3 1.4 1.1 4 6.8-1.4 1.7-1.6 1-5.4 1-5.4l3.1-2-7.4-10.5" fill="#ffe1bd"/><path d="m13.8 5.4c6.1-5.3 11.5-3.2 12.9-1.9 3.6 3.6 4.1 9.1 2.3 14.1 0 0-1.8 0-2.9-1.9 0 0 2.1.1 1.3-4-.7-3.4-4.7-3.7-4.6 1.3l-.5.2c-1.8-1.8-1.3-5.2-4.1-5-2.5.2-5.6 3.8-5.6 3.8-1.3-1-1.3-4.4 1.2-6.6" fill="#594640"/><path d="m16.8 15.4c.3.7.1 1.4-.4 1.6-.5.2-.8-.3-1.1-1-.3-.7-.4-1.3.1-1.5.5-.1 1.1.2 1.4.9" fill="#664e27"/><path d="m24 13.5c-.6-1.3.1-2.9 1.2-3.4 0 0-1.2 2.3.1 4.3 0 0-.9 0-1.3-.9" fill="#e6b796"/><path d="m19.3 19.4c0 0-.9 1.5-1.3 2-.8.9-1 .6-.7 0 .3-.5 1-1.2 1-1.2l1-.8" fill="#664e27"/><g fill="#3b946f"><path d="m25 24.3l-1.6 7.4 3.1.5.7-6.3z"/><path d="m26.5 31.8c-.2-.8-1-1.3-1.9-1.1l-6 1.4.7 3 6-1.4c.9-.2 1.4-1.1 1.2-1.9"/></g><path d="m19.4 33.5l-.2-1.5c-.1-.5-.6-.9-1.1-.8l-.7.1c-.4 0-.7.3-.8.7-1 .2-2.2.7-2 2.5 0 .3.2 1.9 2.2 1.7 2.9-.5 2.9-.5 2.6-2.7" fill="#e6b796"/><path d="m29.9 49.4c-1.6.1-2.8 1.5-2.7 3.1l6.9-.5c.8-.1 1.4-.7 1.4-1.5l-.1-1.4-5.5.3" fill="#d3976e"/><g fill="#3e4347"><path d="m35.4 48.9l-5.5.5-.8-9.7 5.6-.4z"/><path d="m34.8 41.5l-5.7-1.8 5.4-6.8 6.5 1.2z"/></g><g fill="#333"><path d="m13.8 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5s-2-2.3-2.6-3.6c-.6-1.5-.9-3-.9-4.5 0-1.6.3-3.1.9-4.5.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7-1.1 1.1-2.3 1.9-3.7 2.5-1.4.5-2.9.8-4.5.8m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c0-5.2-4.4-9.5-9.7-9.5"/><path d="m50.2 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5-1.1-1.1-1.9-2.3-2.5-3.7-.6-1.4-.9-2.9-.9-4.5s.3-3.1.9-4.5c.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7s-2.3 1.9-3.7 2.5c-1.4.6-3 .9-4.6.9m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c.1-5.2-4.3-9.5-9.7-9.5"/></g><path d="m41.7 36.2l2.1-5.2-1.4-.5-2.1 5.1h-22.3l-2.2-2.3-1.1 1 2.6 2.7h3.4v2.8l13.9 13.5 6.3-15.3 8.6 12.7 1.4-.6-9.2-13.9m-7.5 14.5l-12.7-12.3.6-1.5h17.6l-5.5 13.8" fill="#ed4c5c"/><ellipse cx="50.2" cy="50.5" rx="2.4" ry="2.3" fill="#333"/><g fill="#94989b"><path d="m26.9 51.9h4v1.3h-4z"/><path d="m38.7 53.6h4v1.3h-4z"/></g><path fill="#b3b3b3" d="m30.7 52.3v.6l4 .5v-.6z"/><ellipse cx="34.7" cy="53.7" rx="3.3" ry="3.2" fill="#333"/><g fill="#b3b3b3"><ellipse cx="34.7" cy="53.7" rx=".8" ry=".8"/><path d="m34.7 54l4 .5v-.6l-4-.6z"/></g><path d="m38.6 51.9c-1.5.5-2.4 2.1-1.9 3.6l6.6-2.1c.8-.2 1.2-1 .9-1.8l-.4-1.3-5.2 1.6" fill="#d3976e"/><g fill="#3e4347"><path d="m43.8 50.2l-4.7 1.5-3.6-11.3 5.3-1.7z"/><path d="m41.3 40.8l-5.8-.4 4.6-8.7 4.9 2.5z"/></g><path d="M46,28.5l-11.5,4.5L25,24.3c0,0,2.4-4.9,3.7-5.1C38,17.4,46,28.5,46,28.5z" fill="#47b892"/><path d="m45 34.2l-10.2.6-.3-1.8 11.3-4.8c1.8 2.5-.8 6-.8 6" fill="#3e4347"/><g fill="#47b892"><path d="m25 24.3l-.3 7.4 3.1.1.3-5.9c0-.8-3.1-1.6-3.1-1.6"/><path d="m27.7 31.4c-.3-.8-1.2-1.1-2-.8l-5.7 2.1 1.1 2.8 5.7-2.2c.8-.2 1.2-1.1.9-1.9"/></g><path d="m20.9 34.1l-.4-1.4c-.1-.5-.7-.8-1.2-.7l-.7.2c-.4.1-.6.4-.7.8-.9.3-2.1 1-1.6 2.7.1.3.5 1.9 2.4 1.3 2.8-.8 2.8-.8 2.2-2.9" fill="#ffe1bd"/><path fill="#ed4c5c" d="m14.2 51.2l-1.3-.8 8.3-14.5 1.4.8z"/><ellipse cx="13.8" cy="50.5" rx="1.2" ry="1.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b4-1f3fc.svg b/riot/emojione/svg/1f6b4-1f3fc.svg new file mode 100644 index 0000000..3451fe9 --- /dev/null +++ b/riot/emojione/svg/1f6b4-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fed0ac" d="m25.1 16.1l2.1-2.6 3.9 9.3-6.1 2.5z"/><path d="m22.8 22.1c2.2.4 2.2 3.2 2.2 3.2 2.5-1 2.2-6.6.9-9.6l-3.1 6.4" fill="#e0a372"/><path d="m21.8 3.2l-9.2 8.2c-.3 3.1 1.2 4 1.6 5.1.2.5-.4 1.8-.8 2.4-.7 1.5 1.5 1.5 2.2 1.1.9.9-.2 2.1 2.8.1 0 0-2.7 2.8-.1 2.4.3 1.4 1.1 4 6.8-1.4 1.7-1.6 1-5.4 1-5.4l3.1-2-7.4-10.5" fill="#fed0ac"/><path d="m13.8 5.4c6.1-5.3 11.5-3.2 12.9-1.9 3.6 3.6 4.1 9.1 2.3 14.1 0 0-1.8 0-2.9-1.9 0 0 2.1.1 1.3-4-.7-3.4-4.7-3.7-4.6 1.3l-.5.2c-1.8-1.8-1.3-5.2-4.1-5-2.5.2-5.6 3.8-5.6 3.8-1.3-1-1.3-4.4 1.2-6.6" fill="#dbb471"/><path d="m16.8 15.4c.3.7.1 1.4-.4 1.6-.5.2-.8-.3-1.1-1-.3-.7-.4-1.3.1-1.5.5-.1 1.1.2 1.4.9" fill="#664e27"/><path d="m24 13.5c-.6-1.3.1-2.9 1.2-3.4 0 0-1.2 2.3.1 4.3 0 0-.9 0-1.3-.9" fill="#e0a372"/><path d="m19.3 19.4c0 0-.9 1.5-1.3 2-.8.9-1 .6-.7 0 .3-.5 1-1.2 1-1.2l1-.8" fill="#664e27"/><g fill="#3b946f"><path d="m25 24.3l-1.6 7.4 3.1.5.7-6.3z"/><path d="m26.5 31.8c-.2-.8-1-1.3-1.9-1.1l-6 1.4.7 3 6-1.4c.9-.2 1.4-1.1 1.2-1.9"/></g><path d="m19.4 33.5l-.2-1.5c-.1-.5-.6-.9-1.1-.8l-.7.1c-.4 0-.7.3-.8.7-1 .2-2.2.7-2 2.5 0 .3.2 1.9 2.2 1.7 2.9-.5 2.9-.5 2.6-2.7" fill="#e0a372"/><path d="m29.9 49.4c-1.6.1-2.8 1.5-2.7 3.1l6.9-.5c.8-.1 1.4-.7 1.4-1.5l-.1-1.4-5.5.3" fill="#d3976e"/><g fill="#3e4347"><path d="m35.4 48.9l-5.5.5-.8-9.7 5.6-.4z"/><path d="m34.8 41.5l-5.7-1.8 5.4-6.8 6.5 1.2z"/></g><g fill="#333"><path d="m13.8 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5s-2-2.3-2.6-3.6c-.6-1.5-.9-3-.9-4.5 0-1.6.3-3.1.9-4.5.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7-1.1 1.1-2.3 1.9-3.7 2.5-1.4.5-2.9.8-4.5.8m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c0-5.2-4.4-9.5-9.7-9.5"/><path d="m50.2 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5-1.1-1.1-1.9-2.3-2.5-3.7-.6-1.4-.9-2.9-.9-4.5s.3-3.1.9-4.5c.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7s-2.3 1.9-3.7 2.5c-1.4.6-3 .9-4.6.9m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c.1-5.2-4.3-9.5-9.7-9.5"/></g><path d="m41.7 36.2l2.1-5.2-1.4-.5-2.1 5.1h-22.3l-2.2-2.3-1.1 1 2.6 2.7h3.4v2.8l13.9 13.5 6.3-15.3 8.6 12.7 1.4-.6-9.2-13.9m-7.5 14.5l-12.7-12.3.6-1.5h17.6l-5.5 13.8" fill="#ed4c5c"/><ellipse cx="50.2" cy="50.5" rx="2.4" ry="2.3" fill="#333"/><g fill="#94989b"><path d="m26.9 51.9h4v1.3h-4z"/><path d="m38.7 53.6h4v1.3h-4z"/></g><path fill="#b3b3b3" d="m30.7 52.3v.6l4 .5v-.6z"/><ellipse cx="34.7" cy="53.7" rx="3.3" ry="3.2" fill="#333"/><g fill="#b3b3b3"><ellipse cx="34.7" cy="53.7" rx=".8" ry=".8"/><path d="m34.7 54l4 .5v-.6l-4-.6z"/></g><path d="m38.6 51.9c-1.5.5-2.4 2.1-1.9 3.6l6.6-2.1c.8-.2 1.2-1 .9-1.8l-.4-1.3-5.2 1.6" fill="#d3976e"/><g fill="#3e4347"><path d="m43.8 50.2l-4.7 1.5-3.6-11.3 5.3-1.7z"/><path d="m41.3 40.8l-5.8-.4 4.6-8.7 4.9 2.5z"/></g><path d="M46,28.5l-11.5,4.5L25,24.3c0,0,2.4-4.9,3.7-5.1C38,17.4,46,28.5,46,28.5z" fill="#47b892"/><path d="m45 34.2l-10.2.6-.3-1.8 11.3-4.8c1.8 2.5-.8 6-.8 6" fill="#3e4347"/><g fill="#47b892"><path d="m25 24.3l-.3 7.4 3.1.1.3-5.9c0-.8-3.1-1.6-3.1-1.6"/><path d="m27.7 31.4c-.3-.8-1.2-1.1-2-.8l-5.7 2.1 1.1 2.8 5.7-2.2c.8-.2 1.2-1.1.9-1.9"/></g><path d="m20.9 34.1l-.4-1.4c-.1-.5-.7-.8-1.2-.7l-.7.2c-.4.1-.6.4-.7.8-.9.3-2.1 1-1.6 2.7.1.3.5 1.9 2.4 1.3 2.8-.8 2.8-.8 2.2-2.9" fill="#fed0ac"/><path fill="#ed4c5c" d="m14.2 51.2l-1.3-.8 8.3-14.5 1.4.8z"/><ellipse cx="13.8" cy="50.5" rx="1.2" ry="1.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b4-1f3fd.svg b/riot/emojione/svg/1f6b4-1f3fd.svg new file mode 100644 index 0000000..a5b9598 --- /dev/null +++ b/riot/emojione/svg/1f6b4-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6a57c" d="m25.1 16.1l2.1-2.6 3.9 9.3-6.1 2.5z"/><path d="m22.8 22.1c2.2.4 2.2 3.2 2.2 3.2 2.5-1 2.2-6.6.9-9.6l-3.1 6.4" fill="#b58360"/><path d="m21.8 3.2l-9.2 8.2c-.3 3.1 1.2 4 1.6 5.1.2.5-.4 1.8-.8 2.4-.7 1.5 1.5 1.5 2.2 1.1.9.9-.2 2.1 2.8.1 0 0-2.7 2.8-.1 2.4.3 1.4 1.1 4 6.8-1.4 1.7-1.6 1-5.4 1-5.4l3.1-2-7.4-10.5" fill="#d6a57c"/><path d="m13.8 5.4c6.1-5.3 11.5-3.2 12.9-1.9 3.6 3.6 4.1 9.1 2.3 14.1 0 0-1.8 0-2.9-1.9 0 0 2.1.1 1.3-4-.7-3.4-4.7-3.7-4.6 1.3l-.5.2c-1.8-1.8-1.3-5.2-4.1-5-2.5.2-5.6 3.8-5.6 3.8-1.3-1-1.3-4.4 1.2-6.6" fill="#594640"/><path d="m16.8 15.4c.3.7.1 1.4-.4 1.6-.5.2-.8-.3-1.1-1-.3-.7-.4-1.3.1-1.5.5-.1 1.1.2 1.4.9" fill="#664e27"/><path d="m24 13.5c-.6-1.3.1-2.9 1.2-3.4 0 0-1.2 2.3.1 4.3 0 0-.9 0-1.3-.9" fill="#b58360"/><path d="m19.3 19.4c0 0-.9 1.5-1.3 2-.8.9-1 .6-.7 0 .3-.5 1-1.2 1-1.2l1-.8" fill="#664e27"/><g fill="#3b946f"><path d="m25 24.3l-1.6 7.4 3.1.5.7-6.3z"/><path d="m26.5 31.8c-.2-.8-1-1.3-1.9-1.1l-6 1.4.7 3 6-1.4c.9-.2 1.4-1.1 1.2-1.9"/></g><path d="m19.4 33.5l-.2-1.5c-.1-.5-.6-.9-1.1-.8l-.7.1c-.4 0-.7.3-.8.7-1 .2-2.2.7-2 2.5 0 .3.2 1.9 2.2 1.7 2.9-.5 2.9-.5 2.6-2.7" fill="#b58360"/><path d="m29.9 49.4c-1.6.1-2.8 1.5-2.7 3.1l6.9-.5c.8-.1 1.4-.7 1.4-1.5l-.1-1.4-5.5.3" fill="#d3976e"/><g fill="#3e4347"><path d="m35.4 48.9l-5.5.5-.8-9.7 5.6-.4z"/><path d="m34.8 41.5l-5.7-1.8 5.4-6.8 6.5 1.2z"/></g><g fill="#333"><path d="m13.8 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5s-2-2.3-2.6-3.6c-.6-1.5-.9-3-.9-4.5 0-1.6.3-3.1.9-4.5.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7-1.1 1.1-2.3 1.9-3.7 2.5-1.4.5-2.9.8-4.5.8m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c0-5.2-4.4-9.5-9.7-9.5"/><path d="m50.2 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5-1.1-1.1-1.9-2.3-2.5-3.7-.6-1.4-.9-2.9-.9-4.5s.3-3.1.9-4.5c.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7s-2.3 1.9-3.7 2.5c-1.4.6-3 .9-4.6.9m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c.1-5.2-4.3-9.5-9.7-9.5"/></g><path d="m41.7 36.2l2.1-5.2-1.4-.5-2.1 5.1h-22.3l-2.2-2.3-1.1 1 2.6 2.7h3.4v2.8l13.9 13.5 6.3-15.3 8.6 12.7 1.4-.6-9.2-13.9m-7.5 14.5l-12.7-12.3.6-1.5h17.6l-5.5 13.8" fill="#ed4c5c"/><ellipse cx="50.2" cy="50.5" rx="2.4" ry="2.3" fill="#333"/><g fill="#94989b"><path d="m26.9 51.9h4v1.3h-4z"/><path d="m38.7 53.6h4v1.3h-4z"/></g><path fill="#b3b3b3" d="m30.7 52.3v.6l4 .5v-.6z"/><ellipse cx="34.7" cy="53.7" rx="3.3" ry="3.2" fill="#333"/><g fill="#b3b3b3"><ellipse cx="34.7" cy="53.7" rx=".8" ry=".8"/><path d="m34.7 54l4 .5v-.6l-4-.6z"/></g><path d="m38.6 51.9c-1.5.5-2.4 2.1-1.9 3.6l6.6-2.1c.8-.2 1.2-1 .9-1.8l-.4-1.3-5.2 1.6" fill="#d3976e"/><g fill="#3e4347"><path d="m43.8 50.2l-4.7 1.5-3.6-11.3 5.3-1.7z"/><path d="m41.3 40.8l-5.8-.4 4.6-8.7 4.9 2.5z"/></g><path d="M46,28.5l-11.5,4.5L25,24.3c0,0,2.4-4.9,3.7-5.1C38,17.4,46,28.5,46,28.5z" fill="#47b892"/><path d="m45 34.2l-10.2.6-.3-1.8 11.3-4.8c1.8 2.5-.8 6-.8 6" fill="#3e4347"/><g fill="#47b892"><path d="m25 24.3l-.3 7.4 3.1.1.3-5.9c0-.8-3.1-1.6-3.1-1.6"/><path d="m27.7 31.4c-.3-.8-1.2-1.1-2-.8l-5.7 2.1 1.1 2.8 5.7-2.2c.8-.2 1.2-1.1.9-1.9"/></g><path d="m20.9 34.1l-.4-1.4c-.1-.5-.7-.8-1.2-.7l-.7.2c-.4.1-.6.4-.7.8-.9.3-2.1 1-1.6 2.7.1.3.5 1.9 2.4 1.3 2.8-.8 2.8-.8 2.2-2.9" fill="#d6a57c"/><path fill="#ed4c5c" d="m14.2 51.2l-1.3-.8 8.3-14.5 1.4.8z"/><ellipse cx="13.8" cy="50.5" rx="1.2" ry="1.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b4-1f3fe.svg b/riot/emojione/svg/1f6b4-1f3fe.svg new file mode 100644 index 0000000..1dcaae8 --- /dev/null +++ b/riot/emojione/svg/1f6b4-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b47d56" d="m25.1 16.1l2.1-2.6 3.9 9.3-6.1 2.5z"/><path d="m22.8 22.1c2.2.4 2.2 3.2 2.2 3.2 2.5-1 2.2-6.6.9-9.6l-3.1 6.4" fill="#935e3e"/><path d="m21.8 3.2l-9.2 8.2c-.3 3.1 1.2 4 1.6 5.1.2.5-.4 1.8-.8 2.4-.7 1.5 1.5 1.5 2.2 1.1.9.9-.2 2.1 2.8.1 0 0-2.7 2.8-.1 2.4.3 1.4 1.1 4 6.8-1.4 1.7-1.6 1-5.4 1-5.4l3.1-2-7.4-10.5" fill="#b47d56"/><path d="m13.8 5.4c6.1-5.3 11.5-3.2 12.9-1.9 3.6 3.6 4.1 9.1 2.3 14.1 0 0-1.8 0-2.9-1.9 0 0 2.1.1 1.3-4-.7-3.4-4.7-3.7-4.6 1.3l-.5.2c-1.8-1.8-1.3-5.2-4.1-5-2.5.2-5.6 3.8-5.6 3.8-1.3-1-1.3-4.4 1.2-6.6" fill="#231f20"/><path d="m16.8 15.4c.3.7.1 1.4-.4 1.6-.5.2-.8-.3-1.1-1-.3-.7-.4-1.3.1-1.5.5-.1 1.1.2 1.4.9" fill="#664e27"/><path d="m24 13.5c-.6-1.3.1-2.9 1.2-3.4 0 0-1.2 2.3.1 4.3 0 0-.9 0-1.3-.9" fill="#935e3e"/><path d="m19.3 19.4c0 0-.9 1.5-1.3 2-.8.9-1 .6-.7 0 .3-.5 1-1.2 1-1.2l1-.8" fill="#664e27"/><g fill="#3b946f"><path d="m25 24.3l-1.6 7.4 3.1.5.7-6.3z"/><path d="m26.5 31.8c-.2-.8-1-1.3-1.9-1.1l-6 1.4.7 3 6-1.4c.9-.2 1.4-1.1 1.2-1.9"/></g><path d="m19.4 33.5l-.2-1.5c-.1-.5-.6-.9-1.1-.8l-.7.1c-.4 0-.7.3-.8.7-1 .2-2.2.7-2 2.5 0 .3.2 1.9 2.2 1.7 2.9-.5 2.9-.5 2.6-2.7" fill="#935e3e"/><path d="m29.9 49.4c-1.6.1-2.8 1.5-2.7 3.1l6.9-.5c.8-.1 1.4-.7 1.4-1.5l-.1-1.4-5.5.3" fill="#d3976e"/><g fill="#3e4347"><path d="m35.4 48.9l-5.5.5-.8-9.7 5.6-.4z"/><path d="m34.8 41.5l-5.7-1.8 5.4-6.8 6.5 1.2z"/></g><g fill="#333"><path d="m13.8 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5s-2-2.3-2.6-3.6c-.6-1.5-.9-3-.9-4.5 0-1.6.3-3.1.9-4.5.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7-1.1 1.1-2.3 1.9-3.7 2.5-1.4.5-2.9.8-4.5.8m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c0-5.2-4.4-9.5-9.7-9.5"/><path d="m50.2 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5-1.1-1.1-1.9-2.3-2.5-3.7-.6-1.4-.9-2.9-.9-4.5s.3-3.1.9-4.5c.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7s-2.3 1.9-3.7 2.5c-1.4.6-3 .9-4.6.9m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c.1-5.2-4.3-9.5-9.7-9.5"/></g><path d="m41.7 36.2l2.1-5.2-1.4-.5-2.1 5.1h-22.3l-2.2-2.3-1.1 1 2.6 2.7h3.4v2.8l13.9 13.5 6.3-15.3 8.6 12.7 1.4-.6-9.2-13.9m-7.5 14.5l-12.7-12.3.6-1.5h17.6l-5.5 13.8" fill="#ed4c5c"/><ellipse cx="50.2" cy="50.5" rx="2.4" ry="2.3" fill="#333"/><g fill="#94989b"><path d="m26.9 51.9h4v1.3h-4z"/><path d="m38.7 53.6h4v1.3h-4z"/></g><path fill="#b3b3b3" d="m30.7 52.3v.6l4 .5v-.6z"/><ellipse cx="34.7" cy="53.7" rx="3.3" ry="3.2" fill="#333"/><g fill="#b3b3b3"><ellipse cx="34.7" cy="53.7" rx=".8" ry=".8"/><path d="m34.7 54l4 .5v-.6l-4-.6z"/></g><path d="m38.6 51.9c-1.5.5-2.4 2.1-1.9 3.6l6.6-2.1c.8-.2 1.2-1 .9-1.8l-.4-1.3-5.2 1.6" fill="#d3976e"/><g fill="#3e4347"><path d="m43.8 50.2l-4.7 1.5-3.6-11.3 5.3-1.7z"/><path d="m41.3 40.8l-5.8-.4 4.6-8.7 4.9 2.5z"/></g><path d="M46,28.5l-11.5,4.5L25,24.3c0,0,2.4-4.9,3.7-5.1C38,17.4,46,28.5,46,28.5z" fill="#47b892"/><path d="m45 34.2l-10.2.6-.3-1.8 11.3-4.8c1.8 2.5-.8 6-.8 6" fill="#3e4347"/><g fill="#47b892"><path d="m25 24.3l-.3 7.4 3.1.1.3-5.9c0-.8-3.1-1.6-3.1-1.6"/><path d="m27.7 31.4c-.3-.8-1.2-1.1-2-.8l-5.7 2.1 1.1 2.8 5.7-2.2c.8-.2 1.2-1.1.9-1.9"/></g><path d="m20.9 34.1l-.4-1.4c-.1-.5-.7-.8-1.2-.7l-.7.2c-.4.1-.6.4-.7.8-.9.3-2.1 1-1.6 2.7.1.3.5 1.9 2.4 1.3 2.8-.8 2.8-.8 2.2-2.9" fill="#b47d56"/><path fill="#ed4c5c" d="m14.2 51.2l-1.3-.8 8.3-14.5 1.4.8z"/><ellipse cx="13.8" cy="50.5" rx="1.2" ry="1.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b4-1f3ff.svg b/riot/emojione/svg/1f6b4-1f3ff.svg new file mode 100644 index 0000000..44fc622 --- /dev/null +++ b/riot/emojione/svg/1f6b4-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#8a6859" d="m25.1 16.1l2.1-2.6 3.9 9.3-6.1 2.5z"/><path d="m22.8 22.1c2.2.4 2.2 3.2 2.2 3.2 2.5-1 2.2-6.6.9-9.6l-3.1 6.4" fill="#705041"/><path d="m21.8 3.2l-9.2 8.2c-.3 3.1 1.2 4 1.6 5.1.2.5-.4 1.8-.8 2.4-.7 1.5 1.5 1.5 2.2 1.1.9.9-.2 2.1 2.8.1 0 0-2.7 2.8-.1 2.4.3 1.4 1.1 4 6.8-1.4 1.7-1.6 1-5.4 1-5.4l3.1-2-7.4-10.5" fill="#8a6859"/><path d="m13.8 5.4c6.1-5.3 11.5-3.2 12.9-1.9 3.6 3.6 4.1 9.1 2.3 14.1 0 0-1.8 0-2.9-1.9 0 0 2.1.1 1.3-4-.7-3.4-4.7-3.7-4.6 1.3l-.5.2c-1.8-1.8-1.3-5.2-4.1-5-2.5.2-5.6 3.8-5.6 3.8-1.3-1-1.3-4.4 1.2-6.6" fill="#231f20"/><path d="m16.8 15.4c.3.7.1 1.4-.4 1.6-.5.2-.8-.3-1.1-1-.3-.7-.4-1.3.1-1.5.5-.1 1.1.2 1.4.9" fill="#574137"/><path d="m24 13.5c-.6-1.3.1-2.9 1.2-3.4 0 0-1.2 2.3.1 4.3 0 0-.9 0-1.3-.9" fill="#705041"/><path d="m19.3 19.4c0 0-.9 1.5-1.3 2-.8.9-1 .6-.7 0 .3-.5 1-1.2 1-1.2l1-.8" fill="#574137"/><g fill="#3b946f"><path d="m25 24.3l-1.6 7.4 3.1.5.7-6.3z"/><path d="m26.5 31.8c-.2-.8-1-1.3-1.9-1.1l-6 1.4.7 3 6-1.4c.9-.2 1.4-1.1 1.2-1.9"/></g><path d="m19.4 33.5l-.2-1.5c-.1-.5-.6-.9-1.1-.8l-.7.1c-.4 0-.7.3-.8.7-1 .2-2.2.7-2 2.5 0 .3.2 1.9 2.2 1.7 2.9-.5 2.9-.5 2.6-2.7" fill="#705041"/><path d="m29.9 49.4c-1.6.1-2.8 1.5-2.7 3.1l6.9-.5c.8-.1 1.4-.7 1.4-1.5l-.1-1.4-5.5.3" fill="#d3976e"/><g fill="#3e4347"><path d="m35.4 48.9l-5.5.5-.8-9.7 5.6-.4z"/><path d="m34.8 41.5l-5.7-1.8 5.4-6.8 6.5 1.2z"/></g><g fill="#333"><path d="m13.8 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5s-2-2.3-2.6-3.6c-.6-1.5-.9-3-.9-4.5 0-1.6.3-3.1.9-4.5.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7-1.1 1.1-2.3 1.9-3.7 2.5-1.4.5-2.9.8-4.5.8m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c0-5.2-4.4-9.5-9.7-9.5"/><path d="m50.2 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5-1.1-1.1-1.9-2.3-2.5-3.7-.6-1.4-.9-2.9-.9-4.5s.3-3.1.9-4.5c.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7s-2.3 1.9-3.7 2.5c-1.4.6-3 .9-4.6.9m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c.1-5.2-4.3-9.5-9.7-9.5"/></g><path d="m41.7 36.2l2.1-5.2-1.4-.5-2.1 5.1h-22.3l-2.2-2.3-1.1 1 2.6 2.7h3.4v2.8l13.9 13.5 6.3-15.3 8.6 12.7 1.4-.6-9.2-13.9m-7.5 14.5l-12.7-12.3.6-1.5h17.6l-5.5 13.8" fill="#ed4c5c"/><ellipse cx="50.2" cy="50.5" rx="2.4" ry="2.3" fill="#333"/><g fill="#94989b"><path d="m26.9 51.9h4v1.3h-4z"/><path d="m38.7 53.6h4v1.3h-4z"/></g><path fill="#b3b3b3" d="m30.7 52.3v.6l4 .5v-.6z"/><ellipse cx="34.7" cy="53.7" rx="3.3" ry="3.2" fill="#333"/><g fill="#b3b3b3"><ellipse cx="34.7" cy="53.7" rx=".8" ry=".8"/><path d="m34.7 54l4 .5v-.6l-4-.6z"/></g><path d="m38.6 51.9c-1.5.5-2.4 2.1-1.9 3.6l6.6-2.1c.8-.2 1.2-1 .9-1.8l-.4-1.3-5.2 1.6" fill="#d3976e"/><g fill="#3e4347"><path d="m43.8 50.2l-4.7 1.5-3.6-11.3 5.3-1.7z"/><path d="m41.3 40.8l-5.8-.4 4.6-8.7 4.9 2.5z"/></g><path d="M46,28.5l-11.5,4.5L25,24.3c0,0,2.4-4.9,3.7-5.1C38,17.4,46,28.5,46,28.5z" fill="#47b892"/><path d="m45 34.2l-10.2.6-.3-1.8 11.3-4.8c1.8 2.5-.8 6-.8 6" fill="#3e4347"/><g fill="#47b892"><path d="m25 24.3l-.3 7.4 3.1.1.3-5.9c0-.8-3.1-1.6-3.1-1.6"/><path d="m27.7 31.4c-.3-.8-1.2-1.1-2-.8l-5.7 2.1 1.1 2.8 5.7-2.2c.8-.2 1.2-1.1.9-1.9"/></g><path d="m20.9 34.1l-.4-1.4c-.1-.5-.7-.8-1.2-.7l-.7.2c-.4.1-.6.4-.7.8-.9.3-2.1 1-1.6 2.7.1.3.5 1.9 2.4 1.3 2.8-.8 2.8-.8 2.2-2.9" fill="#8a6859"/><path fill="#ed4c5c" d="m14.2 51.2l-1.3-.8 8.3-14.5 1.4.8z"/><ellipse cx="13.8" cy="50.5" rx="1.2" ry="1.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b4.svg b/riot/emojione/svg/1f6b4.svg new file mode 100644 index 0000000..d66ad5c --- /dev/null +++ b/riot/emojione/svg/1f6b4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m26.1 16.1l2.1-2.6 3.9 9.3-6.1 2.5z"/><path d="m23.8 22.1c2.2.4 2.2 3.2 2.2 3.2 2.5-1 2.2-6.6.9-9.6l-3.1 6.4" fill="#eba352"/><path d="m22.8 3.2l-9.2 8.2c-.3 3.1 1.2 4 1.6 5.1.2.5-.4 1.8-.8 2.4-.7 1.5 1.5 1.5 2.2 1.1.9.9-.2 2.1 2.8.1 0 0-2.7 2.8-.1 2.4.3 1.4 1.1 4 6.8-1.4 1.7-1.6 1-5.4 1-5.4l3.1-2-7.4-10.5" fill="#ffdd67"/><path d="m14.8 5.4c6.1-5.3 11.5-3.2 12.9-1.9 3.6 3.6 4.1 9.1 2.3 14.1 0 0-1.8 0-2.9-1.9 0 0 2.1.1 1.3-4-.7-3.4-4.7-3.7-4.6 1.3l-.5.2c-1.8-1.8-1.3-5.2-4.1-5-2.5.2-5.6 3.8-5.6 3.8-1.3-1-1.3-4.4 1.2-6.6" fill="#ffb300"/><path d="m17.8 15.4c.3.7.1 1.4-.4 1.6-.5.2-.8-.3-1.1-1-.3-.7-.4-1.3.1-1.5.5-.1 1.1.2 1.4.9" fill="#937237"/><path d="m25 13.5c-.6-1.3.1-2.9 1.2-3.4 0 0-1.2 2.3.1 4.3 0 0-.9 0-1.3-.9" fill="#eba352"/><path d="m20.3 19.4c0 0-.9 1.5-1.3 2-.8.9-1 .6-.7 0 .3-.5 1-1.2 1-1.2l1-.8" fill="#937237"/><g fill="#3b946f"><path d="m26 24.3l-1.6 7.4 3.1.5.7-6.3z"/><path d="m27.5 31.8c-.2-.8-1-1.3-1.9-1.1l-6 1.4.7 3 6-1.4c.9-.2 1.4-1.1 1.2-1.9"/></g><path d="m20.4 33.5l-.2-1.5c-.1-.5-.6-.9-1.1-.8l-.7.1c-.4 0-.7.3-.8.7-1 .2-2.2.7-2 2.5 0 .3.2 1.9 2.2 1.7 2.9-.5 2.9-.5 2.6-2.7" fill="#eba352"/><path d="m30.9 49.4c-1.6.1-2.8 1.5-2.7 3.1l6.9-.5c.8-.1 1.4-.7 1.4-1.5l-.1-1.4-5.5.3" fill="#d3976e"/><g fill="#3e4347"><path d="m36.4 48.9l-5.5.5-.8-9.7 5.6-.4z"/><path d="m35.8 41.5l-5.7-1.8 5.4-6.8 6.5 1.2z"/></g><g fill="#333"><path d="m14.8 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5s-2-2.3-2.6-3.6c-.6-1.5-.9-3-.9-4.5 0-1.6.3-3.1.9-4.5.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7-1.1 1.1-2.3 1.9-3.7 2.5-1.4.5-2.9.8-4.5.8m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c0-5.2-4.4-9.5-9.7-9.5"/><path d="m51.2 62c-1.6 0-3.1-.3-4.6-.9-1.4-.6-2.7-1.4-3.7-2.5-1.1-1.1-1.9-2.3-2.5-3.7-.6-1.4-.9-2.9-.9-4.5s.3-3.1.9-4.5c.6-1.4 1.4-2.6 2.5-3.7 1.1-1.1 2.3-1.9 3.7-2.5 1.5-.6 3-.9 4.6-.9s3.1.3 4.6.9c1.4.6 2.7 1.4 3.7 2.5 1.1 1.1 1.9 2.3 2.5 3.7.6 1.4.9 2.9.9 4.5 0 1.6-.3 3.1-.9 4.5-.6 1.4-1.4 2.6-2.5 3.7s-2.3 1.9-3.7 2.5c-1.4.6-3 .9-4.6.9m0-21.1c-5.4 0-9.7 4.3-9.7 9.5 0 5.3 4.4 9.5 9.7 9.5s9.7-4.3 9.7-9.5c.1-5.2-4.3-9.5-9.7-9.5"/></g><path d="m42.7 36.2l2.1-5.2-1.4-.5-2.1 5.1h-22.3l-2.2-2.3-1.1 1 2.6 2.7h3.4v2.8l13.9 13.5 6.3-15.3 8.6 12.7 1.4-.6-9.2-13.9m-7.5 14.5l-12.7-12.3.6-1.5h17.6l-5.5 13.8" fill="#ed4c5c"/><ellipse cx="51.2" cy="50.5" rx="2.4" ry="2.3" fill="#333"/><g fill="#94989b"><path d="m27.9 51.9h4v1.3h-4z"/><path d="m39.7 53.6h4v1.3h-4z"/></g><path fill="#b3b3b3" d="m31.7 52.3v.6l4 .5v-.6z"/><ellipse cx="35.7" cy="53.7" rx="3.3" ry="3.2" fill="#333"/><g fill="#b3b3b3"><ellipse cx="35.7" cy="53.7" rx=".8" ry=".8"/><path d="m35.7 54l4 .5v-.6l-4-.6z"/></g><path d="m39.6 51.9c-1.5.5-2.4 2.1-1.9 3.6l6.6-2.1c.8-.2 1.2-1 .9-1.8l-.4-1.3-5.2 1.6" fill="#d3976e"/><g fill="#3e4347"><path d="m44.8 50.2l-4.7 1.5-3.6-11.3 5.3-1.7z"/><path d="m42.3 40.8l-5.8-.4 4.6-8.7 4.9 2.5z"/></g><path d="M47,28.5l-11.5,4.5L26,24.3c0,0,2.4-4.9,3.7-5.1C39,17.4,47,28.5,47,28.5z" fill="#47b892"/><path d="m46 34.2l-10.2.6-.3-1.8 11.3-4.8c1.8 2.5-.8 6-.8 6" fill="#3e4347"/><g fill="#47b892"><path d="m26 24.3l-.3 7.4 3.1.1.3-5.9c0-.8-3.1-1.6-3.1-1.6"/><path d="m28.7 31.4c-.3-.8-1.2-1.1-2-.8l-5.7 2.1 1.1 2.8 5.7-2.2c.8-.2 1.2-1.1.9-1.9"/></g><path d="m21.9 34.1l-.4-1.4c-.1-.5-.7-.8-1.2-.7l-.7.2c-.4.1-.6.4-.7.8-.9.3-2.1 1-1.6 2.7.1.3.5 1.9 2.4 1.3 2.8-.8 2.8-.8 2.2-2.9" fill="#ffdd67"/><path fill="#ed4c5c" d="m15.2 51.2l-1.3-.8 8.3-14.5 1.4.8z"/><ellipse cx="14.8" cy="50.5" rx="1.2" ry="1.2" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b5-1f3fb.svg b/riot/emojione/svg/1f6b5-1f3fb.svg new file mode 100644 index 0000000..5ce96f5 --- /dev/null +++ b/riot/emojione/svg/1f6b5-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffe1bd" d="m37 16.4l2.8-1.5v9.5h-6.2z"/><path d="m32.9 20.8c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#e6b796"/><path d="m38.8 4l-11 3.8c-1.4 2.5-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#ffe1bd"/><path d="m31.1 3.1c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.5-4.3 3.5-5.3" fill="#594640"/><path d="m30.1 12.8c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#664e27"/><path d="m37 13.7c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#e6b796"/><path d="m30.8 17.2c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><path d="M62,62v-7.1c0,0-25.2-7-60-40.6V62H62z" fill="#aec470"/><path d="M62,62v-3.3c0,0-25.1,6.4-60-22.5V62H62z" fill="#95a55b"/><g fill="#3e4347"><path d="m37.9 18.7l-1.3.2-2-8.6 1.3-.2z"/><path d="m37.6 19l-1.1-.7 4.2-4.7 1.1.6z"/><path transform="matrix(.1669-.986.986.1669 11.186 53.0165)" d="m34.6 19h4.8v1.7h-4.8z"/></g><path d="m43.9 15.3c-.7 1.6-5.5-2.8-8.7-4.2-3.5-1.5-9.5-2.2-9-3.5 2.1-4.8 7.7-6.9 12.6-4.8 5 2.1 7.2 7.7 5.1 12.5" fill="#f15744"/><g fill="#3b946f"><path d="m34.6 22.7c-.7-.4-1.5-.2-1.9.5l-2.6 4.4 2.4 1.4 2.6-4.4c.4-.7.1-1.5-.5-1.9"/><path d="m32.5 28.5c.1-.7-.5-1.4-1.2-1.5l-5.3-.6-.3 2.6 5.3.7c.8.1 1.5-.4 1.5-1.2"/></g><path d="m26.2 27.8l.3-1.3c.1-.5-.2-.9-.7-1l-.6-.1c-.3-.1-.7.1-.9.3-.9-.1-2-.1-2.4 1.5-.1.3-.4 1.6 1.3 2 2.6.5 2.6.5 3-1.4" fill="#e6b796"/><path d="m30.1 44c-1.4-.4-2.8.4-3.1 1.7l5.9 1.6c.7.2 1.4-.2 1.6-.9l.3-1.2-4.7-1.2" fill="#d3976e"/><g fill="#3e4347"><path d="m34.7 45.2l-4.6-1.3 2.3-8.1 4.6 1.3z"/><path d="m36.5 39l-4.1-3.2 6.4-4 4.9 2.9z"/></g><g fill="#333"><path d="m13.1 49.5c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .4-1.2 1.1-2.3 2.1-3.3.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2.6 1.2.9 2.5 1 3.8.1 1.4-.1 2.7-.6 4-.5 1.2-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3-1.2.5-2.5.9-3.8.9-1.4 0-2.7-.2-4-.7m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.6-4.4-.7-9.2-5.1-10.8"/><path d="m43 60.4c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .5-1.3 1.2-2.4 2.1-3.4.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2s.9 2.5 1 3.8c.1 1.4-.1 2.7-.6 4-.5 1.3-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3s-2.4.9-3.7.9c-1.4.1-2.8-.1-4.1-.6m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.7-4.4-.7-9.2-5.1-10.8"/></g><path d="m43.7 36.6l3.3-3.6-1-.9-3.2 3.5-18.3-6.6-1.1-2.5-1.2.5 1.3 3 2.8 1-.8 2.3 7.4 15.3 9.7-10.7 3.3 13 1.3-.1-3.5-14.2m-10.5 9.7l-6.7-13.9.9-1 14.5 5.3-8.7 9.6" fill="#ed4c5c"/><ellipse transform="matrix(.3419-.9397.9397.3419-17.2712 77.1916)" cx="46.5" cy="50.9" rx="2" ry="2.1" fill="#333"/><g fill="#94989b"><path transform="matrix(.3421-.9397.9397.3421-24.8566 57.0869)" d="m27.8 44.5h1.1v3.5h-1.1z"/><path transform="matrix(.342-.9397.9397.342-23.359 68.9155)" d="m37 49.4h1.1v3.5h-1.1z"/></g><path fill="#b3b3b3" d="m29.9 46.6l-.2.5 3.1 1.6.2-.5z"/><ellipse transform="matrix(.3419-.9397.9397.3419-24.3947 62.974)" cx="32.8" cy="48.9" rx="2.8" ry="2.9" fill="#333"/><g fill="#b3b3b3"><ellipse transform="matrix(.3415-.9399.9399.3415-24.3909 63.0019)" cx="32.8" cy="48.9" rx=".7" ry=".7"/><path d="m32.7 49.2l3.1 1.6.2-.5-3.1-1.6z"/></g><path d="m36.5 48.6c-1.4-.1-2.6 1-2.6 2.4l6.1.2c.7 0 1.3-.5 1.3-1.2v-1.2l-4.8-.2" fill="#d3976e"/><g fill="#3e4347"><path d="m41.3 48.8l-4.3-.2.4-10.3 4.8.2z"/><path d="m42 40.4l-4.6-2.1 6.3-5.8 3.3 3.5z"/></g><path d="m49.6 31.6l-10.8.2-5.1-9.4c0 0 3.1-1.9 4.3-1.7 8.2 1.4 11.6 10.9 11.6 10.9" fill="#47b892"/><path d="m47 36l-8.6-2.6.3-1.5 10.7-.6c.8 2.6-2.4 4.7-2.4 4.7" fill="#3e4347"/><g fill="#47b892"><path d="m34.8 22.4c-.7-.3-1.5 0-1.8.7l-2 4.7 2.5 1 2-4.7c.4-.6 0-1.4-.7-1.7"/><path d="m33.7 28.5c0-.7-.6-1.3-1.4-1.3l-5.3.1v2.7l5.3-.1c.8 0 1.4-.6 1.4-1.4"/></g><path d="m27.3 28.7l.1-1.3c0-.5-.3-.9-.8-.9l-.6-.1c-.3 0-.7.1-.8.4-.9 0-2 .2-2.1 1.8 0 .3-.1 1.7 1.6 1.8 2.5.2 2.5.2 2.6-1.7" fill="#ffe1bd"/><path fill="#ed4c5c" d="m16.7 40.8l-.9-1.1 11.2-9.4.9 1z"/><ellipse transform="matrix(.3413-.94.94.3413-26.7403 41.8999)" cx="16.5" cy="40" rx="1" ry="1" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b5-1f3fc.svg b/riot/emojione/svg/1f6b5-1f3fc.svg new file mode 100644 index 0000000..9b088b9 --- /dev/null +++ b/riot/emojione/svg/1f6b5-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fed0ac" d="m37 16.4l2.8-1.5v9.5h-6.2z"/><path d="m32.9 20.8c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#e0a372"/><path d="m38.8 4l-11 3.8c-1.4 2.5-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#fed0ac"/><path d="m31.1 3.1c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.5-4.3 3.5-5.3" fill="#dbb471"/><path d="m30.1 12.8c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#664e27"/><path d="m37 13.7c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#e0a372"/><path d="m30.8 17.2c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><path d="M62,62v-7.1c0,0-25.2-7-60-40.6V62H62z" fill="#aec470"/><path d="M62,62v-3.3c0,0-25.1,6.4-60-22.5V62H62z" fill="#95a55b"/><g fill="#3e4347"><path d="m37.9 18.7l-1.3.2-2-8.6 1.3-.2z"/><path d="m37.6 19l-1.1-.7 4.2-4.7 1.1.6z"/><path transform="matrix(.1669-.986.986.1669 11.186 53.0165)" d="m34.6 19h4.8v1.7h-4.8z"/></g><path d="m43.9 15.3c-.7 1.6-5.5-2.8-8.7-4.2-3.5-1.5-9.5-2.2-9-3.5 2.1-4.8 7.7-6.9 12.6-4.8 5 2.1 7.2 7.7 5.1 12.5" fill="#f15744"/><g fill="#3b946f"><path d="m34.6 22.7c-.7-.4-1.5-.2-1.9.5l-2.6 4.4 2.4 1.4 2.6-4.4c.4-.7.1-1.5-.5-1.9"/><path d="m32.5 28.5c.1-.7-.5-1.4-1.2-1.5l-5.3-.6-.3 2.6 5.3.7c.8.1 1.5-.4 1.5-1.2"/></g><path d="m26.2 27.8l.3-1.3c.1-.5-.2-.9-.7-1l-.6-.1c-.3-.1-.7.1-.9.3-.9-.1-2-.1-2.4 1.5-.1.3-.4 1.6 1.3 2 2.6.5 2.6.5 3-1.4" fill="#e0a372"/><path d="m30.1 44c-1.4-.4-2.8.4-3.1 1.7l5.9 1.6c.7.2 1.4-.2 1.6-.9l.3-1.2-4.7-1.2" fill="#d3976e"/><g fill="#3e4347"><path d="m34.7 45.2l-4.6-1.3 2.3-8.1 4.6 1.3z"/><path d="m36.5 39l-4.1-3.2 6.4-4 4.9 2.9z"/></g><g fill="#333"><path d="m13.1 49.5c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .4-1.2 1.1-2.3 2.1-3.3.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2.6 1.2.9 2.5 1 3.8.1 1.4-.1 2.7-.6 4-.5 1.2-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3-1.2.5-2.5.9-3.8.9-1.4 0-2.7-.2-4-.7m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.6-4.4-.7-9.2-5.1-10.8"/><path d="m43 60.4c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .5-1.3 1.2-2.4 2.1-3.4.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2s.9 2.5 1 3.8c.1 1.4-.1 2.7-.6 4-.5 1.3-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3s-2.4.9-3.7.9c-1.4.1-2.8-.1-4.1-.6m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.7-4.4-.7-9.2-5.1-10.8"/></g><path d="m43.7 36.6l3.3-3.6-1-.9-3.2 3.5-18.3-6.6-1.1-2.5-1.2.5 1.3 3 2.8 1-.8 2.3 7.4 15.3 9.7-10.7 3.3 13 1.3-.1-3.5-14.2m-10.5 9.7l-6.7-13.9.9-1 14.5 5.3-8.7 9.6" fill="#ed4c5c"/><ellipse transform="matrix(.3419-.9397.9397.3419-17.2712 77.1916)" cx="46.5" cy="50.9" rx="2" ry="2.1" fill="#333"/><g fill="#94989b"><path transform="matrix(.3421-.9397.9397.3421-24.8566 57.0869)" d="m27.8 44.5h1.1v3.5h-1.1z"/><path transform="matrix(.342-.9397.9397.342-23.359 68.9155)" d="m37 49.4h1.1v3.5h-1.1z"/></g><path fill="#b3b3b3" d="m29.9 46.6l-.2.5 3.1 1.6.2-.5z"/><ellipse transform="matrix(.3419-.9397.9397.3419-24.3947 62.974)" cx="32.8" cy="48.9" rx="2.8" ry="2.9" fill="#333"/><g fill="#b3b3b3"><ellipse transform="matrix(.3415-.9399.9399.3415-24.3909 63.0019)" cx="32.8" cy="48.9" rx=".7" ry=".7"/><path d="m32.7 49.2l3.1 1.6.2-.5-3.1-1.6z"/></g><path d="m36.5 48.6c-1.4-.1-2.6 1-2.6 2.4l6.1.2c.7 0 1.3-.5 1.3-1.2v-1.2l-4.8-.2" fill="#d3976e"/><g fill="#3e4347"><path d="m41.3 48.8l-4.3-.2.4-10.3 4.8.2z"/><path d="m42 40.4l-4.6-2.1 6.3-5.8 3.3 3.5z"/></g><path d="m49.6 31.6l-10.8.2-5.1-9.4c0 0 3.1-1.9 4.3-1.7 8.2 1.4 11.6 10.9 11.6 10.9" fill="#47b892"/><path d="m47 36l-8.6-2.6.3-1.5 10.7-.6c.8 2.6-2.4 4.7-2.4 4.7" fill="#3e4347"/><g fill="#47b892"><path d="m34.8 22.4c-.7-.3-1.5 0-1.8.7l-2 4.7 2.5 1 2-4.7c.4-.6 0-1.4-.7-1.7"/><path d="m33.7 28.5c0-.7-.6-1.3-1.4-1.3l-5.3.1v2.7l5.3-.1c.8 0 1.4-.6 1.4-1.4"/></g><path d="m27.3 28.7l.1-1.3c0-.5-.3-.9-.8-.9l-.6-.1c-.3 0-.7.1-.8.4-.9 0-2 .2-2.1 1.8 0 .3-.1 1.7 1.6 1.8 2.5.2 2.5.2 2.6-1.7" fill="#fed0ac"/><path fill="#ed4c5c" d="m16.7 40.8l-.9-1.1 11.2-9.4.9 1z"/><ellipse transform="matrix(.3413-.94.94.3413-26.7403 41.8999)" cx="16.5" cy="40" rx="1" ry="1" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b5-1f3fd.svg b/riot/emojione/svg/1f6b5-1f3fd.svg new file mode 100644 index 0000000..561ba2d --- /dev/null +++ b/riot/emojione/svg/1f6b5-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6a57c" d="m37 16.4l2.8-1.5v9.5h-6.2z"/><path d="m32.9 20.8c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#b58360"/><path d="m38.8 4l-11 3.8c-1.4 2.5-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#d6a57c"/><path d="m31.1 3.1c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.5-4.3 3.5-5.3" fill="#594640"/><path d="m30.1 12.8c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#664e27"/><path d="m37 13.7c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#b58360"/><path d="m30.8 17.2c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><path d="M62,62v-7.1c0,0-25.2-7-60-40.6V62H62z" fill="#aec470"/><path d="M62,62v-3.3c0,0-25.1,6.4-60-22.5V62H62z" fill="#95a55b"/><g fill="#3e4347"><path d="m37.9 18.7l-1.3.2-2-8.6 1.3-.2z"/><path d="m37.6 19l-1.1-.7 4.2-4.7 1.1.6z"/><path transform="matrix(.1669-.986.986.1669 11.186 53.0165)" d="m34.6 19h4.8v1.7h-4.8z"/></g><path d="m43.9 15.3c-.7 1.6-5.5-2.8-8.7-4.2-3.5-1.5-9.5-2.2-9-3.5 2.1-4.8 7.7-6.9 12.6-4.8 5 2.1 7.2 7.7 5.1 12.5" fill="#f15744"/><g fill="#3b946f"><path d="m34.6 22.7c-.7-.4-1.5-.2-1.9.5l-2.6 4.4 2.4 1.4 2.6-4.4c.4-.7.1-1.5-.5-1.9"/><path d="m32.5 28.5c.1-.7-.5-1.4-1.2-1.5l-5.3-.6-.3 2.6 5.3.7c.8.1 1.5-.4 1.5-1.2"/></g><path d="m26.2 27.8l.3-1.3c.1-.5-.2-.9-.7-1l-.6-.1c-.3-.1-.7.1-.9.3-.9-.1-2-.1-2.4 1.5-.1.3-.4 1.6 1.3 2 2.6.5 2.6.5 3-1.4" fill="#b58360"/><path d="m30.1 44c-1.4-.4-2.8.4-3.1 1.7l5.9 1.6c.7.2 1.4-.2 1.6-.9l.3-1.2-4.7-1.2" fill="#d3976e"/><g fill="#3e4347"><path d="m34.7 45.2l-4.6-1.3 2.3-8.1 4.6 1.3z"/><path d="m36.5 39l-4.1-3.2 6.4-4 4.9 2.9z"/></g><g fill="#333"><path d="m13.1 49.5c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .4-1.2 1.1-2.3 2.1-3.3.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2.6 1.2.9 2.5 1 3.8.1 1.4-.1 2.7-.6 4-.5 1.2-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3-1.2.5-2.5.9-3.8.9-1.4 0-2.7-.2-4-.7m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.6-4.4-.7-9.2-5.1-10.8"/><path d="m43 60.4c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .5-1.3 1.2-2.4 2.1-3.4.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2s.9 2.5 1 3.8c.1 1.4-.1 2.7-.6 4-.5 1.3-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3s-2.4.9-3.7.9c-1.4.1-2.8-.1-4.1-.6m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.7-4.4-.7-9.2-5.1-10.8"/></g><path d="m43.7 36.6l3.3-3.6-1-.9-3.2 3.5-18.3-6.6-1.1-2.5-1.2.5 1.3 3 2.8 1-.8 2.3 7.4 15.3 9.7-10.7 3.3 13 1.3-.1-3.5-14.2m-10.5 9.7l-6.7-13.9.9-1 14.5 5.3-8.7 9.6" fill="#ed4c5c"/><ellipse transform="matrix(.3419-.9397.9397.3419-17.2712 77.1916)" cx="46.5" cy="50.9" rx="2" ry="2.1" fill="#333"/><g fill="#94989b"><path transform="matrix(.3421-.9397.9397.3421-24.8566 57.0869)" d="m27.8 44.5h1.1v3.5h-1.1z"/><path transform="matrix(.342-.9397.9397.342-23.359 68.9155)" d="m37 49.4h1.1v3.5h-1.1z"/></g><path fill="#b3b3b3" d="m29.9 46.6l-.2.5 3.1 1.6.2-.5z"/><ellipse transform="matrix(.3419-.9397.9397.3419-24.3947 62.974)" cx="32.8" cy="48.9" rx="2.8" ry="2.9" fill="#333"/><g fill="#b3b3b3"><ellipse transform="matrix(.3415-.9399.9399.3415-24.3909 63.0019)" cx="32.8" cy="48.9" rx=".7" ry=".7"/><path d="m32.7 49.2l3.1 1.6.2-.5-3.1-1.6z"/></g><path d="m36.5 48.6c-1.4-.1-2.6 1-2.6 2.4l6.1.2c.7 0 1.3-.5 1.3-1.2v-1.2l-4.8-.2" fill="#d3976e"/><g fill="#3e4347"><path d="m41.3 48.8l-4.3-.2.4-10.3 4.8.2z"/><path d="m42 40.4l-4.6-2.1 6.3-5.8 3.3 3.5z"/></g><path d="m49.6 31.6l-10.8.2-5.1-9.4c0 0 3.1-1.9 4.3-1.7 8.2 1.4 11.6 10.9 11.6 10.9" fill="#47b892"/><path d="m47 36l-8.6-2.6.3-1.5 10.7-.6c.8 2.6-2.4 4.7-2.4 4.7" fill="#3e4347"/><g fill="#47b892"><path d="m34.8 22.4c-.7-.3-1.5 0-1.8.7l-2 4.7 2.5 1 2-4.7c.4-.6 0-1.4-.7-1.7"/><path d="m33.7 28.5c0-.7-.6-1.3-1.4-1.3l-5.3.1v2.7l5.3-.1c.8 0 1.4-.6 1.4-1.4"/></g><path d="m27.3 28.7l.1-1.3c0-.5-.3-.9-.8-.9l-.6-.1c-.3 0-.7.1-.8.4-.9 0-2 .2-2.1 1.8 0 .3-.1 1.7 1.6 1.8 2.5.2 2.5.2 2.6-1.7" fill="#d6a57c"/><path fill="#ed4c5c" d="m16.7 40.8l-.9-1.1 11.2-9.4.9 1z"/><ellipse transform="matrix(.3413-.94.94.3413-26.7403 41.8999)" cx="16.5" cy="40" rx="1" ry="1" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b5-1f3fe.svg b/riot/emojione/svg/1f6b5-1f3fe.svg new file mode 100644 index 0000000..a1153c3 --- /dev/null +++ b/riot/emojione/svg/1f6b5-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b47d56" d="m37 16.4l2.8-1.5v9.5h-6.2z"/><path d="m32.9 20.8c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#935e3e"/><path d="m38.8 4l-11 3.8c-1.4 2.5-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#b47d56"/><path d="m31.1 3.1c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.5-4.3 3.5-5.3" fill="#231f20"/><path d="m30.1 12.8c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#664e27"/><path d="m37 13.7c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#935e3e"/><path d="m30.8 17.2c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><path d="M62,62v-7.1c0,0-25.2-7-60-40.6V62H62z" fill="#aec470"/><path d="M62,62v-3.3c0,0-25.1,6.4-60-22.5V62H62z" fill="#95a55b"/><g fill="#3e4347"><path d="m37.9 18.7l-1.3.2-2-8.6 1.3-.2z"/><path d="m37.6 19l-1.1-.7 4.2-4.7 1.1.6z"/><path transform="matrix(.1669-.986.986.1669 11.186 53.0165)" d="m34.6 19h4.8v1.7h-4.8z"/></g><path d="m43.9 15.3c-.7 1.6-5.5-2.8-8.7-4.2-3.5-1.5-9.5-2.2-9-3.5 2.1-4.8 7.7-6.9 12.6-4.8 5 2.1 7.2 7.7 5.1 12.5" fill="#f15744"/><g fill="#3b946f"><path d="m34.6 22.7c-.7-.4-1.5-.2-1.9.5l-2.6 4.4 2.4 1.4 2.6-4.4c.4-.7.1-1.5-.5-1.9"/><path d="m32.5 28.5c.1-.7-.5-1.4-1.2-1.5l-5.3-.6-.3 2.6 5.3.7c.8.1 1.5-.4 1.5-1.2"/></g><path d="m26.2 27.8l.3-1.3c.1-.5-.2-.9-.7-1l-.6-.1c-.3-.1-.7.1-.9.3-.9-.1-2-.1-2.4 1.5-.1.3-.4 1.6 1.3 2 2.6.5 2.6.5 3-1.4" fill="#935e3e"/><path d="m30.1 44c-1.4-.4-2.8.4-3.1 1.7l5.9 1.6c.7.2 1.4-.2 1.6-.9l.3-1.2-4.7-1.2" fill="#d3976e"/><g fill="#3e4347"><path d="m34.7 45.2l-4.6-1.3 2.3-8.1 4.6 1.3z"/><path d="m36.5 39l-4.1-3.2 6.4-4 4.9 2.9z"/></g><g fill="#333"><path d="m13.1 49.5c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .4-1.2 1.1-2.3 2.1-3.3.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2.6 1.2.9 2.5 1 3.8.1 1.4-.1 2.7-.6 4-.5 1.2-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3-1.2.5-2.5.9-3.8.9-1.4 0-2.7-.2-4-.7m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.6-4.4-.7-9.2-5.1-10.8"/><path d="m43 60.4c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .5-1.3 1.2-2.4 2.1-3.4.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2s.9 2.5 1 3.8c.1 1.4-.1 2.7-.6 4-.5 1.3-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3s-2.4.9-3.7.9c-1.4.1-2.8-.1-4.1-.6m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.7-4.4-.7-9.2-5.1-10.8"/></g><path d="m43.7 36.6l3.3-3.6-1-.9-3.2 3.5-18.3-6.6-1.1-2.5-1.2.5 1.3 3 2.8 1-.8 2.3 7.4 15.3 9.7-10.7 3.3 13 1.3-.1-3.5-14.2m-10.5 9.7l-6.7-13.9.9-1 14.5 5.3-8.7 9.6" fill="#ed4c5c"/><ellipse transform="matrix(.3419-.9397.9397.3419-17.2712 77.1916)" cx="46.5" cy="50.9" rx="2" ry="2.1" fill="#333"/><g fill="#94989b"><path transform="matrix(.3421-.9397.9397.3421-24.8566 57.0869)" d="m27.8 44.5h1.1v3.5h-1.1z"/><path transform="matrix(.342-.9397.9397.342-23.359 68.9155)" d="m37 49.4h1.1v3.5h-1.1z"/></g><path fill="#b3b3b3" d="m29.9 46.6l-.2.5 3.1 1.6.2-.5z"/><ellipse transform="matrix(.3419-.9397.9397.3419-24.3947 62.974)" cx="32.8" cy="48.9" rx="2.8" ry="2.9" fill="#333"/><g fill="#b3b3b3"><ellipse transform="matrix(.3415-.9399.9399.3415-24.3909 63.0019)" cx="32.8" cy="48.9" rx=".7" ry=".7"/><path d="m32.7 49.2l3.1 1.6.2-.5-3.1-1.6z"/></g><path d="m36.5 48.6c-1.4-.1-2.6 1-2.6 2.4l6.1.2c.7 0 1.3-.5 1.3-1.2v-1.2l-4.8-.2" fill="#d3976e"/><g fill="#3e4347"><path d="m41.3 48.8l-4.3-.2.4-10.3 4.8.2z"/><path d="m42 40.4l-4.6-2.1 6.3-5.8 3.3 3.5z"/></g><path d="m49.6 31.6l-10.8.2-5.1-9.4c0 0 3.1-1.9 4.3-1.7 8.2 1.4 11.6 10.9 11.6 10.9" fill="#47b892"/><path d="m47 36l-8.6-2.6.3-1.5 10.7-.6c.8 2.6-2.4 4.7-2.4 4.7" fill="#3e4347"/><g fill="#47b892"><path d="m34.8 22.4c-.7-.3-1.5 0-1.8.7l-2 4.7 2.5 1 2-4.7c.4-.6 0-1.4-.7-1.7"/><path d="m33.7 28.5c0-.7-.6-1.3-1.4-1.3l-5.3.1v2.7l5.3-.1c.8 0 1.4-.6 1.4-1.4"/></g><path d="m27.3 28.7l.1-1.3c0-.5-.3-.9-.8-.9l-.6-.1c-.3 0-.7.1-.8.4-.9 0-2 .2-2.1 1.8 0 .3-.1 1.7 1.6 1.8 2.5.2 2.5.2 2.6-1.7" fill="#b47d56"/><path fill="#ed4c5c" d="m16.7 40.8l-.9-1.1 11.2-9.4.9 1z"/><ellipse transform="matrix(.3413-.94.94.3413-26.7403 41.8999)" cx="16.5" cy="40" rx="1" ry="1" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b5-1f3ff.svg b/riot/emojione/svg/1f6b5-1f3ff.svg new file mode 100644 index 0000000..ca9993a --- /dev/null +++ b/riot/emojione/svg/1f6b5-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#8a6859" d="m37 16.4l2.8-1.5v9.5h-6.2z"/><path d="m32.9 20.8c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#705041"/><path d="m38.8 4l-11 3.8c-1.4 2.5-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#8a6859"/><path d="m31.1 3.1c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.5-4.3 3.5-5.3" fill="#231f20"/><path d="m30.1 12.8c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#574137"/><path d="m37 13.7c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#705041"/><path d="m30.8 17.2c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#574137"/><path d="M62,62v-7.1c0,0-25.2-7-60-40.6V62H62z" fill="#aec470"/><path d="M62,62v-3.3c0,0-25.1,6.4-60-22.5V62H62z" fill="#95a55b"/><g fill="#3e4347"><path d="m37.9 18.7l-1.3.2-2-8.6 1.3-.2z"/><path d="m37.6 19l-1.1-.7 4.2-4.7 1.1.6z"/><path transform="matrix(.1669-.986.986.1669 11.186 53.0165)" d="m34.6 19h4.8v1.7h-4.8z"/></g><path d="m43.9 15.3c-.7 1.6-5.5-2.8-8.7-4.2-3.5-1.5-9.5-2.2-9-3.5 2.1-4.8 7.7-6.9 12.6-4.8 5 2.1 7.2 7.7 5.1 12.5" fill="#f15744"/><g fill="#3b946f"><path d="m34.6 22.7c-.7-.4-1.5-.2-1.9.5l-2.6 4.4 2.4 1.4 2.6-4.4c.4-.7.1-1.5-.5-1.9"/><path d="m32.5 28.5c.1-.7-.5-1.4-1.2-1.5l-5.3-.6-.3 2.6 5.3.7c.8.1 1.5-.4 1.5-1.2"/></g><path d="m26.2 27.8l.3-1.3c.1-.5-.2-.9-.7-1l-.6-.1c-.3-.1-.7.1-.9.3-.9-.1-2-.1-2.4 1.5-.1.3-.4 1.6 1.3 2 2.6.5 2.6.5 3-1.4" fill="#705041"/><path d="m30.1 44c-1.4-.4-2.8.4-3.1 1.7l5.9 1.6c.7.2 1.4-.2 1.6-.9l.3-1.2-4.7-1.2" fill="#d3976e"/><g fill="#3e4347"><path d="m34.7 45.2l-4.6-1.3 2.3-8.1 4.6 1.3z"/><path d="m36.5 39l-4.1-3.2 6.4-4 4.9 2.9z"/></g><g fill="#333"><path d="m13.1 49.5c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .4-1.2 1.1-2.3 2.1-3.3.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2.6 1.2.9 2.5 1 3.8.1 1.4-.1 2.7-.6 4-.5 1.2-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3-1.2.5-2.5.9-3.8.9-1.4 0-2.7-.2-4-.7m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.6-4.4-.7-9.2-5.1-10.8"/><path d="m43 60.4c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .5-1.3 1.2-2.4 2.1-3.4.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2s.9 2.5 1 3.8c.1 1.4-.1 2.7-.6 4-.5 1.3-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3s-2.4.9-3.7.9c-1.4.1-2.8-.1-4.1-.6m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.7-4.4-.7-9.2-5.1-10.8"/></g><path d="m43.7 36.6l3.3-3.6-1-.9-3.2 3.5-18.3-6.6-1.1-2.5-1.2.5 1.3 3 2.8 1-.8 2.3 7.4 15.3 9.7-10.7 3.3 13 1.3-.1-3.5-14.2m-10.5 9.7l-6.7-13.9.9-1 14.5 5.3-8.7 9.6" fill="#ed4c5c"/><ellipse transform="matrix(.3419-.9397.9397.3419-17.2712 77.1916)" cx="46.5" cy="50.9" rx="2" ry="2.1" fill="#333"/><g fill="#94989b"><path transform="matrix(.3421-.9397.9397.3421-24.8566 57.0869)" d="m27.8 44.5h1.1v3.5h-1.1z"/><path transform="matrix(.342-.9397.9397.342-23.359 68.9155)" d="m37 49.4h1.1v3.5h-1.1z"/></g><path fill="#b3b3b3" d="m29.9 46.6l-.2.5 3.1 1.6.2-.5z"/><ellipse transform="matrix(.3419-.9397.9397.3419-24.3947 62.974)" cx="32.8" cy="48.9" rx="2.8" ry="2.9" fill="#333"/><g fill="#b3b3b3"><ellipse transform="matrix(.3415-.9399.9399.3415-24.3909 63.0019)" cx="32.8" cy="48.9" rx=".7" ry=".7"/><path d="m32.7 49.2l3.1 1.6.2-.5-3.1-1.6z"/></g><path d="m36.5 48.6c-1.4-.1-2.6 1-2.6 2.4l6.1.2c.7 0 1.3-.5 1.3-1.2v-1.2l-4.8-.2" fill="#d3976e"/><g fill="#3e4347"><path d="m41.3 48.8l-4.3-.2.4-10.3 4.8.2z"/><path d="m42 40.4l-4.6-2.1 6.3-5.8 3.3 3.5z"/></g><path d="m49.6 31.6l-10.8.2-5.1-9.4c0 0 3.1-1.9 4.3-1.7 8.2 1.4 11.6 10.9 11.6 10.9" fill="#47b892"/><path d="m47 36l-8.6-2.6.3-1.5 10.7-.6c.8 2.6-2.4 4.7-2.4 4.7" fill="#3e4347"/><g fill="#47b892"><path d="m34.8 22.4c-.7-.3-1.5 0-1.8.7l-2 4.7 2.5 1 2-4.7c.4-.6 0-1.4-.7-1.7"/><path d="m33.7 28.5c0-.7-.6-1.3-1.4-1.3l-5.3.1v2.7l5.3-.1c.8 0 1.4-.6 1.4-1.4"/></g><path d="m27.3 28.7l.1-1.3c0-.5-.3-.9-.8-.9l-.6-.1c-.3 0-.7.1-.8.4-.9 0-2 .2-2.1 1.8 0 .3-.1 1.7 1.6 1.8 2.5.2 2.5.2 2.6-1.7" fill="#8a6859"/><path fill="#ed4c5c" d="m16.7 40.8l-.9-1.1 11.2-9.4.9 1z"/><ellipse transform="matrix(.3413-.94.94.3413-26.7403 41.8999)" cx="16.5" cy="40" rx="1" ry="1" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b5.svg b/riot/emojione/svg/1f6b5.svg new file mode 100644 index 0000000..0d5eb71 --- /dev/null +++ b/riot/emojione/svg/1f6b5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m37 16.4l2.8-1.5v9.5h-6.2z"/><path d="m32.9 20.8c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#eba352"/><path d="m38.8 4l-11 3.8c-1.4 2.5-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#ffdd67"/><path d="m31.1 3.1c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.5-4.3 3.5-5.3" fill="#ffb300"/><path d="m30.1 12.8c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#937237"/><path d="m37 13.7c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#eba352"/><path d="m30.8 17.2c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#937237"/><path d="M62,62v-7.1c0,0-25.2-7-60-40.6V62H62z" fill="#aec470"/><path d="M62,62v-3.3c0,0-25.1,6.4-60-22.5V62H62z" fill="#95a55b"/><g fill="#3e4347"><path d="m37.9 18.7l-1.3.2-2-8.6 1.3-.2z"/><path d="m37.6 19l-1.1-.7 4.2-4.7 1.1.6z"/><path transform="matrix(.1669-.986.986.1669 11.186 53.0165)" d="m34.6 19h4.8v1.7h-4.8z"/></g><path d="m43.9 15.3c-.7 1.6-5.5-2.8-8.7-4.2-3.5-1.5-9.5-2.2-9-3.5 2.1-4.8 7.7-6.9 12.6-4.8 5 2.1 7.2 7.7 5.1 12.5" fill="#f15744"/><g fill="#3b946f"><path d="m34.6 22.7c-.7-.4-1.5-.2-1.9.5l-2.6 4.4 2.4 1.4 2.6-4.4c.4-.7.1-1.5-.5-1.9"/><path d="m32.5 28.5c.1-.7-.5-1.4-1.2-1.5l-5.3-.6-.3 2.6 5.3.7c.8.1 1.5-.4 1.5-1.2"/></g><path d="m26.2 27.8l.3-1.3c.1-.5-.2-.9-.7-1l-.6-.1c-.3-.1-.7.1-.9.3-.9-.1-2-.1-2.4 1.5-.1.3-.4 1.6 1.3 2 2.6.5 2.6.5 3-1.4" fill="#eba352"/><path d="m30.1 44c-1.4-.4-2.8.4-3.1 1.7l5.9 1.6c.7.2 1.4-.2 1.6-.9l.3-1.2-4.7-1.2" fill="#d3976e"/><g fill="#3e4347"><path d="m34.7 45.2l-4.6-1.3 2.3-8.1 4.6 1.3z"/><path d="m36.5 39l-4.1-3.2 6.4-4 4.9 2.9z"/></g><g fill="#333"><path d="m13.1 49.5c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .4-1.2 1.1-2.3 2.1-3.3.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2.6 1.2.9 2.5 1 3.8.1 1.4-.1 2.7-.6 4-.5 1.2-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3-1.2.5-2.5.9-3.8.9-1.4 0-2.7-.2-4-.7m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.6-4.4-.7-9.2-5.1-10.8"/><path d="m43 60.4c-1.3-.5-2.5-1.2-3.5-2.1-1-.9-1.8-2-2.3-3.2-.6-1.2-.9-2.5-1-3.8-.1-1.4.1-2.7.6-4 .5-1.3 1.2-2.4 2.1-3.4.9-1 2-1.7 3.2-2.3 1.2-.5 2.5-.9 3.8-.9 1.4-.1 2.7.1 4 .6 1.3.5 2.5 1.2 3.5 2.1 1 .9 1.8 2 2.3 3.2s.9 2.5 1 3.8c.1 1.4-.1 2.7-.6 4-.5 1.3-1.2 2.4-2.1 3.4-.9 1-2 1.7-3.2 2.3s-2.4.9-3.7.9c-1.4.1-2.8-.1-4.1-.6m6.3-17.3c-4.4-1.6-9.3.6-10.9 4.9-1.6 4.3.7 9.1 5.1 10.8 4.4 1.6 9.3-.6 10.9-4.9 1.7-4.4-.7-9.2-5.1-10.8"/></g><path d="m43.7 36.6l3.3-3.6-1-.9-3.2 3.5-18.3-6.6-1.1-2.5-1.2.5 1.3 3 2.8 1-.8 2.3 7.4 15.3 9.7-10.7 3.3 13 1.3-.1-3.5-14.2m-10.5 9.7l-6.7-13.9.9-1 14.5 5.3-8.7 9.6" fill="#ed4c5c"/><ellipse transform="matrix(.3419-.9397.9397.3419-17.2712 77.1916)" cx="46.5" cy="50.9" rx="2" ry="2.1" fill="#333"/><g fill="#94989b"><path transform="matrix(.3421-.9397.9397.3421-24.8566 57.0869)" d="m27.8 44.5h1.1v3.5h-1.1z"/><path transform="matrix(.342-.9397.9397.342-23.359 68.9155)" d="m37 49.4h1.1v3.5h-1.1z"/></g><path fill="#b3b3b3" d="m29.9 46.6l-.2.5 3.1 1.6.2-.5z"/><ellipse transform="matrix(.3419-.9397.9397.3419-24.3947 62.974)" cx="32.8" cy="48.9" rx="2.8" ry="2.9" fill="#333"/><g fill="#b3b3b3"><ellipse transform="matrix(.3415-.9399.9399.3415-24.3909 63.0019)" cx="32.8" cy="48.9" rx=".7" ry=".7"/><path d="m32.7 49.2l3.1 1.6.2-.5-3.1-1.6z"/></g><path d="m36.5 48.6c-1.4-.1-2.6 1-2.6 2.4l6.1.2c.7 0 1.3-.5 1.3-1.2v-1.2l-4.8-.2" fill="#d3976e"/><g fill="#3e4347"><path d="m41.3 48.8l-4.3-.2.4-10.3 4.8.2z"/><path d="m42 40.4l-4.6-2.1 6.3-5.8 3.3 3.5z"/></g><path d="m49.6 31.6l-10.8.2-5.1-9.4c0 0 3.1-1.9 4.3-1.7 8.2 1.4 11.6 10.9 11.6 10.9" fill="#47b892"/><path d="m47 36l-8.6-2.6.3-1.5 10.7-.6c.8 2.6-2.4 4.7-2.4 4.7" fill="#3e4347"/><g fill="#47b892"><path d="m34.8 22.4c-.7-.3-1.5 0-1.8.7l-2 4.7 2.5 1 2-4.7c.4-.6 0-1.4-.7-1.7"/><path d="m33.7 28.5c0-.7-.6-1.3-1.4-1.3l-5.3.1v2.7l5.3-.1c.8 0 1.4-.6 1.4-1.4"/></g><path d="m27.3 28.7l.1-1.3c0-.5-.3-.9-.8-.9l-.6-.1c-.3 0-.7.1-.8.4-.9 0-2 .2-2.1 1.8 0 .3-.1 1.7 1.6 1.8 2.5.2 2.5.2 2.6-1.7" fill="#ffdd67"/><path fill="#ed4c5c" d="m16.7 40.8l-.9-1.1 11.2-9.4.9 1z"/><ellipse transform="matrix(.3413-.94.94.3413-26.7403 41.8999)" cx="16.5" cy="40" rx="1" ry="1" fill="#333"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b6-1f3fb.svg b/riot/emojione/svg/1f6b6-1f3fb.svg new file mode 100644 index 0000000..b4d3dde --- /dev/null +++ b/riot/emojione/svg/1f6b6-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffe1bd" d="m32.6 16.1l2.7-1.5v9.5h-6.1z"/><path d="m28.4 20.5c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#e6b796"/><path d="m34.4 3.7l-11 3.8c-1.4 2.6-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#ffe1bd"/><path d="m26.6 2.8c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.6-4.3 3.5-5.3" fill="#594640"/><path d="m25.7 12.5c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#664e27"/><path d="m32.6 13.4c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#e6b796"/><path d="m26.4 16.9c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><g fill="#d3976e"><path d="m21.6 58.8c-1.9 0-3.6 1.4-3.6 3.2h8.1c.9 0 1.9-.7 1.9-1.6v-1.6h-6.4"/><path d="m39.7 56.7c-1.4 1.2-1.7 3.3-.5 4.6l6.1-5c.7-.6 1-1.7.4-2.4l-1.1-1.2-4.9 4"/></g><path fill="#3b946f" d="m32.4 24.6l4.2 12.3 3.7-.2-4.8-14.4z"/><path d="m38.4 36l-1.7.3c-.6.1-1 .7-.9 1.3l.2.8c.1.4.4.7.8.8.3 1 1 2.4 3.1 2 .3-.1 2.3-.4 1.8-2.6-.7-3.1-.7-3.1-3.3-2.6" fill="#ffe1bd"/><path d="m37.2 39.3c1.5-.4 1-1.9.8-2.9 0-.2-.3-.1-.3.1.2.9.7 2.2-.6 2.5-.1.1 0 .4.1.3" fill="#e6b796"/><path d="m36.6 38.7h-11.6c0 0-.8-8.5 2.2-13.9 2.2-4.1 8.3-2.4 8.3-2.4l1.1 16.3" fill="#47b892"/><path fill="#3e4347" d="m36.6 46.9l.1-8.2h-11.7l-2.8 9.1-.6 11h6.4l1-9.7 1-2 .3 3.2 9.6 6.2 4.7-3.7z"/><path d="m33.3 26.2c.2-1-.5-2-1.6-2.2-1.1-.2-2.1.5-2.3 1.5l-1.1 6-5.6 3.8 2.4 3.1 6.3-4.3c.3-.2.6-.6.7-.9.1-.2.1-.3.1-.5l1.1-6.5" fill="#3b946f"/><path d="m24.7 36.8l-1-1.6c-.4-.6-1.1-.8-1.7-.4l-.8.4c-.4.2-.7.7-.6 1.1-1 .7-2.2 1.8-1 3.8.2.3 1.3 2.1 3.5.9 3.1-1.8 3.1-1.8 1.6-4.2" fill="#ffe1bd"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b6-1f3fc.svg b/riot/emojione/svg/1f6b6-1f3fc.svg new file mode 100644 index 0000000..8c15b9b --- /dev/null +++ b/riot/emojione/svg/1f6b6-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fed0ac" d="m32.6 16.1l2.7-1.5v9.5h-6.1z"/><path d="m28.4 20.5c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#e0a372"/><path d="m34.4 3.7l-11 3.8c-1.4 2.5-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#fed0ac"/><path d="m26.6 2.8c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.6-4.3 3.5-5.3" fill="#dbb471"/><path d="m25.7 12.5c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#664e27"/><path d="m32.6 13.4c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#e0a372"/><path d="m26.4 16.9c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><g fill="#d3976e"><path d="m21.6 58.8c-1.9 0-3.6 1.4-3.6 3.2h8.1c.9 0 1.9-.7 1.9-1.6v-1.6h-6.4"/><path d="m39.7 56.7c-1.4 1.2-1.7 3.3-.5 4.6l6.1-5c.7-.6 1-1.7.3-2.4l-1.1-1.2-4.8 4"/></g><path fill="#3b946f" d="m32.4 24.6l4.2 12.3 3.7-.2-4.8-14.4z"/><path d="m38.4 36l-1.7.3c-.6.1-1 .7-.9 1.3l.2.8c.1.4.4.7.8.8.3 1 1 2.4 3.1 2 .3-.1 2.3-.4 1.8-2.6-.7-3.1-.7-3.1-3.3-2.6" fill="#fed0ac"/><path d="m37.2 39.3c1.5-.4 1-1.9.8-2.9 0-.2-.3-.1-.3.1.2.9.7 2.2-.6 2.5-.1.1 0 .4.1.3" fill="#e0a372"/><path d="m36.6 38.7h-11.6c0 0-.8-8.5 2.2-13.9 2.2-4.1 8.3-2.4 8.3-2.4l1.1 16.3" fill="#47b892"/><path fill="#3e4347" d="m36.6 46.9v-8.2h-11.6l-2.8 9.1-.6 11h6.4l1-9.7 1-2 .3 3.2 9.6 6.2 4.7-3.7z"/><path d="m33.3 26.2c.2-1-.5-2-1.6-2.2-1.1-.2-2.1.5-2.3 1.5l-1.1 6-5.6 3.8 2.4 3.1 6.3-4.3c.3-.2.6-.6.7-.9.1-.2.1-.3.1-.5l1.1-6.5" fill="#3b946f"/><path d="m24.7 36.8l-1-1.6c-.4-.6-1.1-.8-1.7-.4l-.8.4c-.4.2-.7.7-.6 1.1-1 .7-2.2 1.8-1 3.8.2.3 1.3 2.1 3.5.9 3.1-1.8 3.1-1.8 1.6-4.2" fill="#fed0ac"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b6-1f3fd.svg b/riot/emojione/svg/1f6b6-1f3fd.svg new file mode 100644 index 0000000..69ef31c --- /dev/null +++ b/riot/emojione/svg/1f6b6-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6a57c" d="m32.6 16.1l2.8-1.5v9.5h-6.2z"/><path d="m28.4 20.5c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#b58360"/><path d="m34.4 3.7l-11 3.8c-1.4 2.6-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#d6a57c"/><path d="m26.6 2.8c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.6-4.3 3.5-5.3" fill="#594640"/><path d="m25.7 12.5c0 .7-.4 1.2-.9 1.2-.5 0-.6-.6-.6-1.2 0-.7.1-1.2.6-1.2.5 0 .9.6.9 1.2" fill="#664e27"/><path d="m32.6 13.4c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#b58360"/><path d="m26.4 16.9c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><g fill="#d3976e"><path d="m21.6 58.8c-1.9 0-3.6 1.4-3.6 3.2h8.1c.9 0 1.9-.7 1.9-1.6v-1.6h-6.4"/><path d="m39.7 56.7c-1.4 1.2-1.7 3.3-.5 4.6l6.1-5c.7-.6 1-1.7.3-2.4l-1.1-1.2-4.8 4"/></g><path fill="#3b946f" d="m32.4 24.6l4.2 12.3 3.7-.2-4.8-14.4z"/><path d="m38.4 36l-1.7.3c-.6.1-1 .7-.9 1.3l.2.8c.1.4.4.7.8.8.3 1 1 2.4 3.1 2 .3-.1 2.3-.4 1.8-2.6-.7-3.1-.7-3.1-3.3-2.6" fill="#d6a57c"/><path d="m37.2 39.3c1.5-.4 1-1.9.8-2.9 0-.2-.3-.1-.3.1.2.9.7 2.2-.6 2.5-.1.1 0 .4.1.3" fill="#b58360"/><path d="m36.6 38.7h-11.6c0 0-.8-8.5 2.2-13.9 2.2-4.1 8.3-2.4 8.3-2.4l1.1 16.3" fill="#47b892"/><path fill="#3e4347" d="m36.6 46.9l.1-8.2h-11.7l-2.8 9.1-.6 11h6.4l1-9.7 1-2 .3 3.2 9.6 6.2 4.7-3.7z"/><path d="m33.3 26.2c.2-1-.5-2-1.6-2.2-1.1-.2-2.1.5-2.3 1.5l-1.1 6-5.6 3.8 2.4 3.1 6.3-4.3c.3-.2.6-.6.7-.9.1-.2.1-.3.1-.5l1.1-6.5" fill="#3b946f"/><path d="m24.7 36.8l-1-1.6c-.4-.6-1.1-.8-1.7-.4l-.8.4c-.4.2-.7.7-.6 1.1-1 .7-2.2 1.8-1 3.8.2.3 1.3 2.1 3.5.9 3.1-1.8 3.1-1.8 1.6-4.2" fill="#d6a57c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b6-1f3fe.svg b/riot/emojione/svg/1f6b6-1f3fe.svg new file mode 100644 index 0000000..82b4e83 --- /dev/null +++ b/riot/emojione/svg/1f6b6-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b47d56" d="m32.6 16.1l2.7-1.5v9.5h-6.1z"/><path d="m28.4 20.5c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#935e3e"/><path d="m34.4 3.7l-11 3.8c-1.4 2.6-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#b47d56"/><path d="m26.6 2.8c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.6-4.3 3.5-5.3" fill="#231f20"/><path d="m25.7 12.5c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#664e27"/><path d="m32.6 13.4c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#935e3e"/><path d="m26.4 16.9c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#664e27"/><g fill="#d3976e"><path d="m21.6 58.8c-1.9 0-3.6 1.4-3.6 3.2h8.1c.9 0 1.9-.7 1.9-1.6v-1.6h-6.4"/><path d="m39.7 56.7c-1.4 1.2-1.7 3.3-.5 4.6l6.1-5c.7-.6 1-1.7.4-2.4l-1.1-1.2-4.9 4"/></g><path fill="#3b946f" d="m32.4 24.6l4.2 12.3 3.7-.2-4.8-14.4z"/><path d="m38.4 36l-1.7.3c-.6.1-1 .7-.9 1.3l.2.8c.1.4.4.7.8.8.3 1 1 2.4 3.1 2 .3-.1 2.3-.4 1.8-2.6-.7-3.1-.7-3.1-3.3-2.6" fill="#b47d56"/><path d="m37.2 39.3c1.5-.4 1-1.9.8-2.9 0-.2-.3-.1-.3.1.2.9.7 2.2-.6 2.5-.1.1 0 .4.1.3" fill="#935e3e"/><path d="m36.6 38.7h-11.6c0 0-.8-8.5 2.2-13.9 2.2-4.1 8.3-2.4 8.3-2.4l1.1 16.3" fill="#47b892"/><path fill="#3e4347" d="m36.6 46.9l.1-8.2h-11.7l-2.8 9.1-.6 11h6.4l1-9.7 1-2 .3 3.2 9.6 6.2 4.7-3.7z"/><path d="m33.3 26.2c.2-1-.5-2-1.6-2.2-1.1-.2-2.1.5-2.3 1.5l-1.1 6-5.6 3.8 2.4 3.1 6.3-4.3c.3-.2.6-.6.7-.9.1-.2.1-.3.1-.5l1.1-6.5" fill="#3b946f"/><path d="m24.7 36.8l-1-1.6c-.4-.6-1.1-.8-1.7-.4l-.8.4c-.4.2-.7.7-.6 1.1-1 .7-2.2 1.8-1 3.8.2.3 1.3 2.1 3.5.9 3.1-1.8 3.1-1.8 1.6-4.2" fill="#b47d56"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b6-1f3ff.svg b/riot/emojione/svg/1f6b6-1f3ff.svg new file mode 100644 index 0000000..454b2a9 --- /dev/null +++ b/riot/emojione/svg/1f6b6-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#8a6859" d="m32.6 16.1l2.7-1.5v9.5h-6.1z"/><path d="m28.4 20.5c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#705041"/><path d="m34.4 3.7l-11 3.8c-1.4 2.6-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#8a6859"/><path d="m26.6 2.8c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.6-4.3 3.5-5.3" fill="#231f20"/><path d="m25.7 12.5c0 .7-.4 1.2-.9 1.2-.5 0-.6-.6-.6-1.2 0-.7.1-1.2.6-1.2.5 0 .9.6.9 1.2" fill="#574137"/><path d="m32.6 13.4c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#705041"/><path d="m26.4 16.9c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#574137"/><g fill="#d3976e"><path d="m21.6 58.8c-1.9 0-3.6 1.4-3.6 3.2h8.1c.9 0 1.9-.7 1.9-1.6v-1.6h-6.4"/><path d="m39.7 56.7c-1.4 1.2-1.7 3.3-.5 4.6l6.1-5c.7-.6 1-1.7.3-2.4l-1.1-1.2-4.8 4"/></g><path fill="#3b946f" d="m32.4 24.6l4.2 12.3 3.7-.2-4.8-14.4z"/><path d="m38.4 36l-1.7.3c-.6.1-1 .7-.9 1.3l.2.8c.1.4.4.7.8.8.3 1 1 2.4 3.1 2 .3-.1 2.3-.4 1.8-2.6-.7-3.1-.7-3.1-3.3-2.6" fill="#8a6859"/><path d="m37.2 39.3c1.5-.4 1-1.9.8-2.9 0-.2-.3-.1-.3.1.2.9.7 2.2-.6 2.5-.1.1 0 .4.1.3" fill="#705041"/><path d="m36.6 38.7h-11.6c0 0-.8-8.5 2.2-13.9 2.2-4.1 8.3-2.4 8.3-2.4l1.1 16.3" fill="#47b892"/><path fill="#3e4347" d="m36.6 46.9l.1-8.2h-11.7l-2.8 9.1-.6 11h6.4l1-9.7 1-2 .3 3.2 9.6 6.2 4.7-3.7z"/><path d="m33.3 26.2c.2-1-.5-2-1.6-2.2-1.1-.2-2.1.5-2.3 1.5l-1.1 6-5.6 3.8 2.4 3.1 6.3-4.3c.3-.2.6-.6.7-.9.1-.2.1-.3.1-.5l1.1-6.5" fill="#3b946f"/><path d="m24.7 36.8l-1-1.6c-.4-.6-1.1-.8-1.7-.4l-.8.4c-.4.2-.7.7-.6 1.1-1 .7-2.2 1.8-1 3.8.2.3 1.3 2.1 3.5.9 3.1-1.8 3.1-1.8 1.6-4.2" fill="#8a6859"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b6.svg b/riot/emojione/svg/1f6b6.svg new file mode 100644 index 0000000..8ba1d28 --- /dev/null +++ b/riot/emojione/svg/1f6b6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m32.6 16.1l2.7-1.5v9.5h-6.1z"/><path d="m28.4 20.5c1.8 1.1.8 3.6.8 3.6 2.5 0 4.3-4.9 4.3-8l-5.1 4.4" fill="#eba352"/><path d="m34.4 3.7l-11 3.8c-1.4 2.6-.4 3.9-.5 5 0 .5-1 1.4-1.5 1.9-1.2 1 .8 1.9 1.5 1.7.5 1.1-.9 1.7 2.4 1.1 0 0-3.4 1.4-1 2.1-.2 1.3-.5 3.8 6.4 1.2 2-.8 2.8-4.4 2.8-4.4l3.4-.6-2.5-11.8" fill="#ffdd67"/><path d="m26.6 2.8c7.2-2.4 11.2 1.3 11.8 3 1.8 4.4.3 9.4-3.1 13.1 0 0-1.6-.7-1.9-2.7 0 0 1.8.8 2.6-3 .7-3.2-2.7-4.9-4.4-.5h-.5c-1-2.2.8-5-1.8-5.8-2.2-.8-6.2 1.2-6.2 1.2-.7-1.4.6-4.3 3.5-5.3" fill="#ffb300"/><path d="m25.7 12.5c0 .7-.4 1.2-.9 1.2s-.6-.6-.6-1.2c0-.7.1-1.2.6-1.2s.9.6.9 1.2" fill="#937237"/><path d="m32.6 13.4c0-1.3 1.1-2.5 2.2-2.5 0 0-1.9 1.6-1.4 3.8 0 0-.8-.3-.8-1.3" fill="#eba352"/><path d="m26.4 16.9c0 0-1.4 1-1.8 1.2-1 .5-1.1.2-.6-.3.4-.4 1.3-.7 1.3-.7l1.1-.2" fill="#937237"/><g fill="#d3976e"><path d="m21.6 58.8c-1.9 0-3.6 1.4-3.6 3.2h8.1c.9 0 1.9-.7 1.9-1.6v-1.6h-6.4"/><path d="m39.7 56.7c-1.4 1.2-1.7 3.3-.5 4.6l6.1-5c.7-.6 1-1.7.4-2.4l-1.1-1.2-4.9 4"/></g><path fill="#3b946f" d="m32.4 24.6l4.2 12.3 3.7-.2-4.8-14.4z"/><path d="m38.4 36l-1.7.3c-.6.1-1 .7-.9 1.3l.2.8c.1.4.4.7.8.8.3 1 1 2.4 3.1 2 .3-.1 2.3-.4 1.8-2.6-.7-3.1-.7-3.1-3.3-2.6" fill="#ffdd67"/><path d="m37.2 39.3c1.5-.4 1-1.9.8-2.9 0-.2-.3-.1-.3.1.2.9.7 2.2-.6 2.5-.1.1 0 .4.1.3" fill="#eba352"/><path d="m36.6 38.7h-11.6c0 0-.8-8.5 2.2-13.9 2.2-4.1 8.3-2.4 8.3-2.4l1.1 16.3" fill="#47b892"/><path fill="#3e4347" d="m36.6 46.9l.1-8.2h-11.7l-2.8 9.1-.6 11h6.4l1-9.7 1-2 .3 3.2 9.6 6.2 4.7-3.7z"/><path d="m33.3 26.2c.2-1-.5-2-1.6-2.2-1.1-.2-2.1.5-2.3 1.5l-1.1 6-5.6 3.8 2.4 3.1 6.3-4.3c.3-.2.6-.6.7-.9.1-.2.1-.3.1-.5l1.1-6.5" fill="#3b946f"/><path d="m24.7 36.8l-1-1.6c-.4-.6-1.1-.8-1.7-.4l-.8.4c-.4.2-.7.7-.6 1.1-1 .7-2.2 1.8-1 3.8.2.3 1.3 2.1 3.5.9 3.1-1.8 3.1-1.8 1.6-4.2" fill="#ffdd67"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b7.svg b/riot/emojione/svg/1f6b7.svg new file mode 100644 index 0000000..ff92a91 --- /dev/null +++ b/riot/emojione/svg/1f6b7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><circle cx="32" cy="32" r="24" fill="#333"/><g fill="#fff"><path d="m42 47.2l-3.9-9.3c-.3-.8-.5-3.2-.5-3.2 0-.3-.1-.5-.1-.8l-2.3-8.8 3 1.5v2.8c0 .9.7 1.6 1.6 1.6.9 0 1.6-.7 1.6-1.6v-4.8l-8.4-4.3c-.5-.3-1.1-.4-1.8-.4-1.2 0-2.3.5-3.1 1.4l-4 4.1h-5c-.9 0-1.6.7-1.6 1.6 0 .9.7 1.6 1.6 1.6h6.3l2.3-2.3 1.5 6.7-4.1 4.2v10.5c0 .9.7 1.6 1.6 1.6s1.6-.7 1.6-1.6v-9.2l3.3-3.4c.3-.3.7-.5 1.1-.5.6 0 1.2.4 1.4.9l5.3 12.7c.2.6.8 1 1.5 1 .9 0 1.6-.7 1.6-1.6-.4 0-.4-.2-.5-.4"/><circle cx="29.8" cy="15.7" r="2.9"/></g><path transform="matrix(.7071-.7071.7071.7071-13.2553 31.9997)" fill="#ff5a79" d="m29 2.8h6v58.4h-6z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b8.svg b/riot/emojione/svg/1f6b8.svg new file mode 100644 index 0000000..8b9b118 --- /dev/null +++ b/riot/emojione/svg/1f6b8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m34 2.8c-1.1-1.1-2.9-1.1-4 0l-26 26.6c-1.1 1.1-2 3.3-2 4.9v24.9c0 1.5 1.3 2.8 2.8 2.8h54.4c1.5 0 2.8-1.3 2.8-2.9v-24.8c0-1.6-.9-3.8-2-4.9l-26-26.6" fill="#ffce31"/><g fill="#231f20"><path d="m55 59.7h-46c-2.1 0-3.8-1.7-3.8-3.8v-20.8c0-1.7.9-3.9 2.1-5.1l22-22.2c.7-.8 1.7-1.2 2.7-1.2 1 0 2 .4 2.7 1.1l22 22.2c1.2 1.2 2.1 3.4 2.1 5.1v20.8c0 2.2-1.7 3.9-3.8 3.9m-23-50.3c-.3 0-.5.1-.7.3l-22 22.3c-.7.6-1.3 2.1-1.3 3.1v20.8c0 .5.4 1 1 1h46c.5 0 1-.5 1-1v-20.8c0-1-.6-2.4-1.3-3.1l-22-22.3c-.2-.2-.4-.3-.7-.3"/><path d="m36.4 28.6c2.5 0 4.5-2 4.5-4.5s-2-4.5-4.5-4.5c-2.5 0-4.5 2-4.5 4.5s2.1 4.5 4.5 4.5"/><circle cx="25.6" cy="27.7" r="3.6"/><path d="m40.8 44.7l.2-3.2 3.6 1.4 1.4-3.6-3.3-1.3 2.2-4.3c.2-.3.1-.7-.1-1l-2.9-3.9c0 0-.1-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0 0-.1 0-.1-.1-.2-.1-.2-.1 0 0-.1 0-.1 0-.1 0-.3 0-.4 0l-6.4 1.5c-.4.1-.6.4-.7.8l-2.4 5-1.9-3c-.1-.1-.1-.1-.2-.2 0-.1-.1-.2-.1-.3-.2-.2-.4-.3-.7-.3h-5.6c0 0 0 0-.1 0-.4-.1-.8.1-.9.5l-2 3.6-3.6 2.7c-.4.3-.5.9-.2 1.3.2.2.5.4.8.4.2 0 .4-.1.6-.2l3.8-2.8c.1-.1.2-.2.3-.3l.9-1.7.5 3.2-2.8 5.5c-.1.3-.1.6 0 .9.2.3.5.4.8.4h.2l-.5 1.1c-.1.1-.1.2-.1.4l-.3 5.9c0 .5.4 1 .9 1 .5 0 .9-.4.9-.9l.3-5.7.9-1.8h2.8l.1 1c0 .1.1.2.1.3l3.4 6.1c.2.3.5.5.8.5.2 0 .3 0 .5-.1.5-.3.6-.8.4-1.3l-3.4-6-.1-.6h2c.3 0 .6-.2.8-.4.2-.3.2-.6.1-.9l-.7-1.6 1.8.5.7-2.6-1.7-.5.7-2.2 1-.5c.2-.1.4-.2.5-.4l1.1-2.3.3 6c0 0 0 0 0 0l-1.9 3.7c-.1.2-.2.5-.1.7l.5 8.3c0 .7.7 1.3 1.4 1.3 0 0 .1 0 .1 0 .8 0 1.4-.7 1.3-1.5l-.5-7.9 1.9-3.8h1.1l-.3 3.7c0 .3.1.6.2.8l4.6 7.5c.3.4.7.7 1.2.7.3 0 .5-.1.7-.2.7-.4.9-1.3.5-1.9l-4.4-7.2m-12.2-5.3l-.3-.7.6-3.3.9 1.4c0 0 0 0 0 0l-.9 2.6h-.3m13.1-3.6l.2-3.8 1 1.4-1.2 2.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6b9.svg b/riot/emojione/svg/1f6b9.svg new file mode 100644 index 0000000..962b094 --- /dev/null +++ b/riot/emojione/svg/1f6b9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m38 23h-6-6c-1 0-2 1-2 2l-1 11h3l1-9 1 24h3l1-13 1 13h3l1-24 1 9h3l-1-11c0-1-1-2-2-2"/><path d="m36 19c0 1-1 2-2 2h-4c-1 0-2-1-2-2v-4c0-1 1-2 2-2h4c1 0 2 1 2 2v4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6ba.svg b/riot/emojione/svg/1f6ba.svg new file mode 100644 index 0000000..b98439e --- /dev/null +++ b/riot/emojione/svg/1f6ba.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><g fill="#fff"><path d="m36 23h-4-4c-1 0-2 1-2 2l-3 11h3l2-9v4l-2 9h2v11h3v-11h2v11h3v-11h2l-2-9v-4l2 9h3l-3-11c0-1-1-2-2-2"/><path d="m36 19c0 1-1 2-2 2h-4c-1 0-2-1-2-2v-4c0-1 1-2 2-2h4c1 0 2 1 2 2v4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6bb.svg b/riot/emojione/svg/1f6bb.svg new file mode 100644 index 0000000..8ece75f --- /dev/null +++ b/riot/emojione/svg/1f6bb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m46 23h-4-4c-1 0-2 1-2 2l-3 11h3l2-9v4l-2 9h2v11h3v-11h2v11h3v-11h2l-2-9v-4l2 9h3l-3-11c0-1-1-2-2-2"/><path d="m46 19c0 1-1 2-2 2h-4c-1 0-2-1-2-2v-4c0-1 1-2 2-2h4c1 0 2 1 2 2v4"/><path d="m28 23h-6-6c-1 0-2 1-2 2l-1 11h3l1-9 1 24h3l1-13 1 13h3l1-24 1 9h3l-1-11c0-1-1-2-2-2"/><path d="m26 19c0 1-1 2-2 2h-4c-1 0-2-1-2-2v-4c0-1 1-2 2-2h4c1 0 2 1 2 2v4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6bc.svg b/riot/emojione/svg/1f6bc.svg new file mode 100644 index 0000000..4741117 --- /dev/null +++ b/riot/emojione/svg/1f6bc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#eda454"/><g fill="#fff"><path d="m37 19.5c0 1.2-1.2 2.5-2.5 2.5h-5c-1.2 0-2.5-1.2-2.5-2.5v-5c0-1.2 1.2-2.5 2.5-2.5h5c1.2 0 2.5 1.2 2.5 2.5v5"/><path d="m31 41l-5-3-3 7 3 7 3-1-2-6z"/><path d="m33 41l5-3 3 7-3 7-3-1 2-6z"/><path d="m36 24h-8.1l-7.9-3-1 2 7 5v6c0 2 1 3 3 3h6c2 0 3-1 3-3v-6l7-5-1-2-8 3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6bd.svg b/riot/emojione/svg/1f6bd.svg new file mode 100644 index 0000000..5a108e2 --- /dev/null +++ b/riot/emojione/svg/1f6bd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.2 35.8c0 8-6.5 14.5-14.5 14.5v-14.5h14.5" fill="#9e958f"/><path d="m59.3 3.3h-9.8c-.8 0-1.5.7-1.5 1.3v29.9c0 .6.7 1.6 1.5 1.6h9.8c.8 0 1.5-1 1.5-1.6v-29.9c0-.5-.7-1.3-1.5-1.3" fill="#e2d8c7"/><g fill="#c6bbb3"><path d="m60.3 0h-11.8c-1 0-1.8.9-1.8 1.6v1.9c0 .7.8 1.9 1.8 1.9h11.9c1 0 1.8-1.3 1.8-1.9v-1.9c0-.7-.9-1.6-1.9-1.6"/><path d="m44 52c0-2.5.6-4.8 1.8-6.9h-35.3c1.1 2 1.8 4.4 1.8 6.9 0 4.7-2.3 7.9-5.8 10.5h43.4c-3.7-2.6-5.9-5.8-5.9-10.5"/></g><g fill="#e2d8c7"><path d="m51 62.5c0 .8-.7 1.5-1.5 1.5h-42.7c-.8 0-1.5-.7-1.5-1.5 0-.8.7-1.5 1.5-1.5h42.7c.8 0 1.5.7 1.5 1.5"/><path d="m28.1 53.8c12.6 0 22.9-8 22.9-18h-45.8c0 10 10.3 18 22.9 18"/></g><path d="m48.7 35.1c0 1-.7 1.8-1.5 1.8h-43.8c-.8 0-1.5-.8-1.5-1.8 0-1 .7-1.8 1.5-1.8h43.8c.8 0 1.5.8 1.5 1.8" fill="#c6bbb3"/><path d="m48.7 31.4c0 1-.7 1.8-1.5 1.8h-43.8c-.8 0-1.5-.8-1.5-1.8 0-1 .7-1.8 1.5-1.8h43.8c.8 0 1.5.8 1.5 1.8" fill="#42ade2"/><g fill="#636a6b"><circle cx="48" cy="33.5" r="3"/><path d="m58 7.4c0 2-1.6 3.6-3.6 3.6s-3.6-1.6-3.6-3.6h7.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6be.svg b/riot/emojione/svg/1f6be.svg new file mode 100644 index 0000000..71390fb --- /dev/null +++ b/riot/emojione/svg/1f6be.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="M15.6,45L11,19h4l2.9,17.9L21.4,19H26l3.4,18.2L32.3,19h3.9l-4.7,26h-4.1l-3.8-19.4L19.8,45H15.6z"/><path d="m46 41.3c-1.9 0-3.5-1.7-3.5-3.7v-11.2c0-2 1.6-3.7 3.5-3.7 1.9 0 3.5 1.7 3.5 3.7h3.5c0-4.1-3.1-7.4-7-7.4-3.9 0-7 3.3-7 7.4v11.1c0 4.1 3.1 7.4 7 7.4 3.9 0 7-3.3 7-7.4h-3.5c0 2.1-1.6 3.8-3.5 3.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6bf.svg b/riot/emojione/svg/1f6bf.svg new file mode 100644 index 0000000..dd21474 --- /dev/null +++ b/riot/emojione/svg/1f6bf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#e8e8e8" d="M36 21.1 50.9 2 61.2 2 49.7 21.1z"/><path d="m48.3 5.3c0 0 3 1.8 6.4 1.7 3.4-.2 6.4-5 6.4-5l-5.5 9.1-7.3-5.8" fill="#b2c1c0"/><path d="m57.8 37.3l-34.6-27.5c16.3-21.5 50.9 6 34.6 27.5" fill="#e8e8e8"/><path d="m27.7 5.3c-3.1 0-7.6 3.6-7.6 3.6l38.2 30.5c0 0 3.5-4.2 2.6-8.8-.4-1.9-1.6-4.5-3.3-7.1-1.7-2.5-3.8-5-6.2-7.2-2.4-2.2-5-4.2-7.8-5.9-2.7-1.7-5.6-3-8.3-3.9-2.6-.8-5.2-1.2-7.6-1.2" fill="#b2c1c0"/><path d="m26.5 6.7c-2.5.1-5.3.8-7 2.9-1.8 2.2-1.7 5.3-1 8 1.6 5.8 6 10.7 10.4 14.5 4.8 4.1 10.4 7.5 16.5 9.1 4.6 1.2 12.2 1.8 14.2-3.9 1.3-3.7-.4-8-2.3-11.2-2.1-3.6-5-6.7-8.2-9.4-3.3-2.8-6.9-5.2-10.8-7-3.6-1.8-7.7-3.1-11.8-3" fill="#62727a"/><path d="m27.9 8.8c-2.5.1-5.3.9-6.6 3.2-1.4 2.4-.9 5.4.1 7.9 2.2 5.6 6.9 10.2 11.7 13.7 5 3.5 11.2 6.7 17.4 6.4 2.5-.1 5.2-1 6.4-3.4 1.3-2.5.7-5.6-.4-8.1-2.3-5.5-6.9-10-11.6-13.4-4.9-3.4-10.9-6.5-17-6.3" fill="#b2c1c0"/><g fill="#3e4347"><path d="m44.8 33.5c-1.2 0-.9 1.2-.4 1.9.6.8 1.7 1.5 2.8 1.6 1.2 0 1-1.2.4-1.8-.6-1-1.7-1.7-2.8-1.7"/><path d="m36.4 23.5c-1.4 0-1 1.4-.4 2.2.7.9 1.9 1.7 3.1 1.8 1.4 0 1-1.4.4-2.1-.7-1-2-1.9-3.1-1.9"/><path d="m29.5 11.1c-1.5 0-1 1.7-.4 2.5.8 1 2.1 2 3.4 1.9 1.5 0 1.1-1.6.4-2.5-.7-.9-2.1-1.9-3.4-1.9"/><path d="m25.6 18.9c-1.2 0-.8 1.3-.3 2 .6.8 1.7 1.6 2.8 1.6 1.2 0 .8-1.3.3-2-.7-.8-1.7-1.6-2.8-1.6"/><path d="m33.2 29.5c-.9 0-.6.9-.2 1.4.5.6 1.3 1.2 2.1 1.2 1 0 .6-1.1.1-1.5-.5-.6-1.2-1.1-2-1.1"/><path d="m41.1 17.3c-1.7 0-1.3 1.7-.5 2.7.9 1.1 2.4 2.1 3.8 2.1 1.7 0 1.3-1.7.6-2.7-1-1.1-2.5-2.1-3.9-2.1"/><path d="m49.9 27.9c-1.5 0-1.2 1.5-.5 2.4.8 1 2.1 1.9 3.4 1.9 1.5 0 1.2-1.5.5-2.3-.8-1.1-2.1-2-3.4-2"/></g><g fill="#8ad8ff"><path d="m30 11.5l-28 17.3v1l28.7-17.6z"/><path d="m26.4 19.1l-24.4 20.6v1l24.9-20.9z"/><path d="m27.2 19.9l-25.2 24.4v1l25.7-24.8z"/><path d="m28 20.9l-26 27.2v1l26.5-27.8z"/><path d="m31.3 12.6l-29.3 19.8v1l29.9-20.1z"/><path d="M32.3 13.6 2 36 2 37.2 32.9 14.4z"/><path d="M41.2 17.9 2 51.2 2 52.6 42 18.5z"/><path d="M36.5 23.6 2 56.1 2 57.5 37.2 24.3z"/><path d="M42.6 18.9 7.8 62 9.1 62 43.4 19.6z"/><path d="M37.3 24.4 2 62 3.2 62 38.1 25z"/><path d="M38.7 25.7 13 62 14.3 62 39.5 26.4z"/><path d="m44 19.9l-26.2 42.1h1.1l25.9-41.4z"/><path d="m49.9 28.3l-19.8 33.7h1.1l19.6-33.2z"/><path d="m44.7 33.7l-22.9 28.3h1.1l22.7-27.8z"/><path d="m45.8 34.4l-19.7 27.6h1.1l19.5-27.1z"/><path d="m47 35.2l-12.9 26.8h1.1l12.6-26.3z"/><path d="m51.3 29.3l-13.9 32.7h1l13.8-32.3z"/><path d="m52.5 30.2l-11.6 31.8h1l11.6-31.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c0-1f3fb.svg b/riot/emojione/svg/1f6c0-1f3fb.svg new file mode 100644 index 0000000..fa9921f --- /dev/null +++ b/riot/emojione/svg/1f6c0-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.9 36.4c2.2 3.7-4.2 6.6-7.8 6.6-3.6 0-12.4-1.3-10.6-5.2 1.8-4.1 8.9-11.4 12.5-11.4 3.6-.1 3.8 6.4 5.9 10" fill="#ffe1bd"/><g fill="#e6b796"><path d="M45.4,31.9C45,33,44,37.6,43,37.8"/><path d="m21.6 32.6l-11.8-.2c0 0 3.5 3.3 4.8 8l7-3.6c-.9-1.6 0-4.2 0-4.2"/></g><path d="m3.9 31.4c-3.5-5.9-1.2-8.2-1.2-8.2.5-4.4 9.2-7.9 12.6-7.2 7 1.4 6.3 7.6 5.4 8l-8.5 7.3c0 0 2.6 6.6 7 6.3l-8.5 5.1-6.8-11.3" fill="#594640"/><path d="m20.2 34.4c-3.1 1-3.7 2.4-8.4-3.7l2.1-1.2c0 0 1.7-.5.1-6.4-.7-2.7.9-6 2.4-4.9 3 2.3 2.2 4 3 4.6 1.5 1.2 2.5 0 3 1 .3.6-.7 1.2-.6 1.4.1.4.6.4 1.2.5.7 0 0 .9.7 1.7.8.9 1.1 1.2 1.1 1.2-.2.5-.8.8-.3 1.4 1 1.3 1.6 2.5-4.3 4.4" fill="#ffe1bd"/><path d="m18.6 23.4c-.2-.2-.3-.4-.4-.7-.1-.3-.2-.5-.3-.8-.2-.3-.4-.6-.8-.7-.3-.1-.6-.1-.9 0 .3.1.5.2.7.4.2.1.3.3.4.6.1.2.3.5.4.8.3.1.6.4.9.4" fill="#e6b796"/><path d="m9.8 31.9c1.3 1.3 3 1.6 3.9.7.9-.9.6-2.8-.6-4.1-1.3-1.3-3-1.6-3.9-.7-.9.9-.6 2.7.6 4.1" fill="#ffe1bd"/><path d="m10 28.5c.3-.2.7-.2 1.1-.2.4.1.7.3 1 .5.2.2.4.5.5.8.1-.1.2-.2.4-.2-.1.2-.1.3-.1.5 0 .1 0 .3.1.4 0 .1.1.3.2.4.1.1.2.2.4.4-.2.1-.4.1-.6-.1-.2-.1-.3-.4-.4-.6-.1-.2-.1-.5 0-.7 0 0 0-.1.1-.1-.5-.4-1-.7-1.5-.8-.3 0-.6 0-.8 0-.3.1-.6.2-.9.3 0-.2.2-.5.5-.6" fill="#574137"/><path d="m22.8 27.3c.1-.3.3-.6.3-.8.1-.3.1-.5-.3-.8.2 0 .4 0 .6.2.2.2.3.4.3.7 0 .2 0 .4 0 .6.2.1.4.2.6.3.2.2.3.4.4.6.1.2.1.4.1.6-.3-.2-.6-.5-.8-.6-.1 0-.2-.1-.3-.1-.1 0-.3 0-.4 0h-.8l.3-.7" fill="#c94747"/><path d="m15.3 24.1c.4-.1.7 0 1 .1.3.1.7.1 1.1.1.4 0 .8-.1 1.1-.3.3-.2.6-.6.5-1-.6.5-1.1.5-1.8.5-.3 0-.7 0-1 .1-.3-.1-.7.1-.9.5" fill="#574137"/><g fill="#c6bbb3"><path d="m13.1 57.5c0 2.5-.9 4.5-2.9 4.5-2 0-3.4-2.2-2.5-4.5 1.3-3.6 4.5-5.5 6.5-5.5 1.9 0-1.1 3-1.1 5.5"/><path d="m50.9 57.5c0 2.5.9 4.5 2.9 4.5s3.4-2.2 2.5-4.5c-1.3-3.6-4.5-5.5-6.5-5.5-1.9 0 1.1 3 1.1 5.5"/></g><path d="m59.1 40.1c0 18.4-12 18.8-26.9 18.8s-26.8-.4-26.8-18.8h53.7" fill="#e2d8c7"/><path fill="#c6bbb3" d="m5.4 41h53.7v1.2h-53.7z"/><path d="m59.4 41.4h-54.3c-4.1 0-4.1-4.8 0-4.8h54.3c3.5 0 3.5 4.8 0 4.8" fill="#ddd3ca"/><g opacity=".6" fill="#a6aeb0"><path d="m40.3 11.4c-3.7-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m29.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m51.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c0-1f3fc.svg b/riot/emojione/svg/1f6c0-1f3fc.svg new file mode 100644 index 0000000..62648e5 --- /dev/null +++ b/riot/emojione/svg/1f6c0-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.9 36.4c2.2 3.7-4.2 6.6-7.8 6.6-3.6 0-12.4-1.3-10.6-5.2 1.8-4.1 8.9-11.4 12.5-11.4 3.6-.1 3.8 6.4 5.9 10" fill="#fed0ac"/><g fill="#e0a372"><path d="M45.4,31.9C45,33,44,37.6,43,37.8"/><path d="m21.6 32.6l-11.8-.2c0 0 3.5 3.3 4.8 8l7-3.6c-.9-1.6 0-4.2 0-4.2"/></g><path d="m4 31.4c-3.5-5.9-1.2-8.2-1.2-8.2.5-4.4 9.2-7.9 12.6-7.2 7 1.4 6.3 7.6 5.4 8l-8.5 7.3c0 0 2.6 6.6 7 6.3l-8.5 5.1-6.8-11.3" fill="#dbb471"/><path d="m20.2 34.4c-3.1 1-3.7 2.4-8.4-3.7l2.1-1.2c0 0 1.7-.5.1-6.4-.7-2.7.9-6 2.4-4.9 3 2.3 2.2 4 3 4.6 1.5 1.2 2.5 0 3 1 .3.6-.7 1.2-.6 1.4.1.4.6.4 1.2.5.7 0 0 .9.7 1.7.8.9 1.1 1.2 1.1 1.2-.2.5-.8.8-.3 1.4 1 1.3 1.6 2.5-4.3 4.4" fill="#fed0ac"/><path d="m18.6 23.4c-.2-.2-.3-.4-.4-.7-.1-.3-.2-.5-.3-.8-.2-.3-.4-.6-.8-.7-.3-.1-.6-.1-.9 0 .3.1.5.2.7.4.2.1.3.3.4.6.1.2.3.5.4.8.3.1.6.4.9.4" fill="#e0a372"/><path d="m9.8 31.9c1.3 1.3 3 1.6 3.9.7.9-.9.6-2.8-.6-4.1-1.3-1.3-3-1.6-3.9-.7-.9.9-.6 2.7.6 4.1" fill="#fed0ac"/><path d="m10 28.5c.3-.2.7-.2 1.1-.2.4.1.7.3 1 .5.2.2.4.5.5.8.1-.1.2-.2.4-.2-.1.2-.1.3-.1.5 0 .1 0 .3.1.4 0 .1.1.3.2.4.1.1.2.2.4.4-.2.1-.4.1-.6-.1-.2-.1-.3-.4-.4-.6-.1-.2-.1-.5 0-.7 0 0 0-.1.1-.1-.5-.4-1-.7-1.5-.8-.3 0-.6 0-.8 0-.3.1-.6.2-.9.3 0-.2.2-.5.5-.6" fill="#574137"/><path d="m22.8 27.3c.1-.3.3-.6.3-.8.1-.3.1-.5-.3-.8.2 0 .4 0 .6.2.2.2.3.4.3.7 0 .2 0 .4 0 .6.2.1.4.2.6.3.2.2.3.4.4.6.1.2.1.4.1.6-.3-.2-.6-.5-.8-.6-.1 0-.2-.1-.3-.1-.1 0-.3 0-.4 0h-.8l.3-.7" fill="#c94747"/><path d="m15.3 24.1c.4-.1.7 0 1 .1.3.1.7.1 1.1.1.4 0 .8-.1 1.1-.3.3-.2.6-.6.5-1-.6.5-1.1.5-1.8.5-.3 0-.7 0-1 .1-.3-.1-.7.1-.9.5" fill="#574137"/><g fill="#c6bbb3"><path d="m13.1 57.5c0 2.5-.9 4.5-2.9 4.5-2 0-3.4-2.2-2.5-4.5 1.3-3.6 4.5-5.5 6.5-5.5 1.9 0-1.1 3-1.1 5.5"/><path d="m50.9 57.5c0 2.5.9 4.5 2.9 4.5s3.4-2.2 2.5-4.5c-1.3-3.6-4.5-5.5-6.5-5.5-1.9 0 1.1 3 1.1 5.5"/></g><path d="m59.1 40.1c0 18.4-12 18.8-26.9 18.8s-26.8-.4-26.8-18.8h53.7" fill="#e2d8c7"/><path fill="#c6bbb3" d="m5.4 41h53.7v1.2h-53.7z"/><path d="m59.4 41.4h-54.3c-4.1 0-4.1-4.8 0-4.8h54.3c3.5 0 3.5 4.8 0 4.8" fill="#ddd3ca"/><g opacity=".6" fill="#a6aeb0"><path d="m40.3 11.4c-3.6-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m29.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m51.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c0-1f3fd.svg b/riot/emojione/svg/1f6c0-1f3fd.svg new file mode 100644 index 0000000..4c4957f --- /dev/null +++ b/riot/emojione/svg/1f6c0-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.9 36.4c2.2 3.7-4.2 6.6-7.8 6.6-3.6 0-12.4-1.3-10.6-5.2 1.8-4.1 8.9-11.4 12.5-11.4 3.6-.1 3.8 6.4 5.9 10" fill="#d6a57c"/><g fill="#7d5442"><path d="M45.4,31.9C45,33,44,37.6,43,37.8"/><path d="m21.6 32.6l-11.8-.2c0 0 3.5 3.3 4.8 8l7-3.6c-.9-1.6 0-4.2 0-4.2"/></g><path d="m4 31.4c-3.5-5.9-1.2-8.2-1.2-8.2.5-4.4 9.2-7.9 12.6-7.2 7 1.4 6.3 7.6 5.4 8l-8.5 7.3c0 0 2.6 6.6 7 6.3l-8.5 5.1-6.8-11.3" fill="#594640"/><path d="m20.2 34.4c-3.1 1-3.7 2.4-8.4-3.7l2.1-1.2c0 0 1.7-.5.1-6.4-.7-2.7.9-6 2.4-4.9 3 2.3 2.2 4 3 4.6 1.5 1.2 2.5 0 3 1 .3.6-.7 1.2-.6 1.4.1.4.6.4 1.2.5.7 0 0 .9.7 1.7.8.9 1.1 1.2 1.1 1.2-.2.5-.8.8-.3 1.4 1 1.3 1.6 2.5-4.3 4.4" fill="#d6a57c"/><path d="m18.6 23.4c-.2-.2-.3-.4-.4-.7-.1-.3-.2-.5-.3-.8-.2-.3-.4-.6-.8-.7-.3-.1-.6-.1-.9 0 .3.1.5.2.7.4.2.1.3.3.4.6.1.2.3.5.4.8.3.1.6.4.9.4" fill="#7d5442"/><path d="m9.8 31.9c1.3 1.3 3 1.6 3.9.7.9-.9.6-2.8-.6-4.1-1.3-1.3-3-1.6-3.9-.7-.9.9-.6 2.7.6 4.1" fill="#d6a57c"/><path d="m10 28.5c.3-.2.7-.2 1.1-.2.4.1.7.3 1 .5.2.2.4.5.5.8.1-.1.2-.2.4-.2-.1.2-.1.3-.1.5 0 .1 0 .3.1.4 0 .1.1.3.2.4.1.1.2.2.4.4-.2.1-.4.1-.6-.1-.2-.1-.3-.4-.4-.6-.1-.2-.1-.5 0-.7 0 0 0-.1.1-.1-.5-.4-1-.7-1.5-.8-.3 0-.6 0-.8 0-.3.1-.6.2-.9.3 0-.2.2-.5.5-.6" fill="#574137"/><path d="m22.8 27.3c.1-.3.3-.6.3-.8.1-.3.1-.5-.3-.8.2 0 .4 0 .6.2.2.2.3.4.3.7 0 .2 0 .4 0 .6.2.1.4.2.6.3.2.2.3.4.4.6.1.2.1.4.1.6-.3-.2-.6-.5-.8-.6-.1 0-.2-.1-.3-.1-.1 0-.3 0-.4 0h-.8l.3-.7" fill="#c94747"/><path d="m15.3 24.1c.4-.1.7 0 1 .1.3.1.7.1 1.1.1.4 0 .8-.1 1.1-.3.3-.2.6-.6.5-1-.6.5-1.1.5-1.8.5-.3 0-.7 0-1 .1-.3-.1-.7.1-.9.5" fill="#574137"/><g fill="#c6bbb3"><path d="m13.1 57.5c0 2.5-.9 4.5-2.9 4.5-2 0-3.4-2.2-2.5-4.5 1.3-3.6 4.5-5.5 6.5-5.5 1.9 0-1.1 3-1.1 5.5"/><path d="m50.9 57.5c0 2.5.9 4.5 2.9 4.5s3.4-2.2 2.5-4.5c-1.3-3.6-4.5-5.5-6.5-5.5-1.9 0 1.1 3 1.1 5.5"/></g><path d="m59.1 40.1c0 18.4-12 18.8-26.9 18.8s-26.8-.4-26.8-18.8h53.7" fill="#e2d8c7"/><path fill="#c6bbb3" d="m5.4 41h53.7v1.2h-53.7z"/><path d="m59.4 41.4h-54.3c-4.1 0-4.1-4.8 0-4.8h54.3c3.5 0 3.5 4.8 0 4.8" fill="#ddd3ca"/><g opacity=".6" fill="#a6aeb0"><path d="m40.3 11.4c-3.6-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m29.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m51.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c0-1f3fe.svg b/riot/emojione/svg/1f6c0-1f3fe.svg new file mode 100644 index 0000000..43c665f --- /dev/null +++ b/riot/emojione/svg/1f6c0-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.9 36.4c2.2 3.7-4.2 6.6-7.8 6.6-3.6 0-12.3-1.3-10.6-5.2 1.8-4.1 8.9-11.4 12.5-11.4 3.6-.1 3.8 6.4 5.9 10" fill="#b47d56"/><g fill="#7d5442"><path d="M45.4,31.9C45,33,44,37.6,43,37.8"/><path d="m21.6 32.6l-11.8-.2c0 0 3.5 3.3 4.8 8l7-3.6c-.9-1.6 0-4.2 0-4.2"/></g><path d="m4 31.4c-3.5-5.9-1.2-8.2-1.2-8.2.5-4.4 9.2-7.9 12.6-7.2 7 1.4 6.3 7.6 5.4 8l-8.5 7.3c0 0 2.6 6.6 7 6.3l-8.5 5.1-6.8-11.3" fill="#231f20"/><path d="m20.2 34.4c-3.1 1-3.7 2.4-8.4-3.7l2.1-1.2c0 0 1.7-.5.1-6.4-.7-2.7.9-6 2.4-4.9 3 2.3 2.2 4 3 4.6 1.5 1.2 2.5 0 3 1 .3.6-.7 1.2-.6 1.4.1.4.6.4 1.2.5.7 0 0 .9.7 1.7.8.9 1.1 1.2 1.1 1.2-.2.5-.8.8-.3 1.4 1 1.3 1.6 2.5-4.3 4.4" fill="#b47d56"/><path d="m18.6 23.4c-.2-.2-.3-.4-.4-.7-.1-.3-.2-.5-.3-.8-.2-.3-.4-.6-.8-.7-.3-.1-.6-.1-.9 0 .3.1.5.2.7.4.2.1.3.3.4.6.1.2.3.5.4.8.3.1.6.4.9.4" fill="#7d5442"/><path d="m9.8 31.9c1.3 1.3 3 1.6 3.9.7.9-.9.6-2.8-.6-4.1-1.3-1.3-3-1.6-3.9-.7-.9.9-.6 2.7.6 4.1" fill="#b47d56"/><path d="m10 28.5c.3-.2.7-.2 1.1-.2.4.1.7.3 1 .5.2.2.4.5.5.8.1-.1.2-.2.4-.2-.1.2-.1.3-.1.5 0 .1 0 .3.1.4 0 .1.1.3.2.4.1.1.2.2.4.4-.2.1-.4.1-.6-.1-.2-.1-.3-.4-.4-.6-.1-.2-.1-.5 0-.7 0 0 0-.1.1-.1-.5-.4-1-.7-1.5-.8-.3 0-.6 0-.8 0-.3.1-.6.2-.9.3 0-.2.2-.5.5-.6" fill="#574137"/><path d="m22.8 27.3c.1-.3.3-.6.3-.8.1-.3.1-.5-.3-.8.2 0 .4 0 .6.2.2.2.3.4.3.7 0 .2 0 .4 0 .6.2.1.4.2.6.3.2.2.3.4.4.6.1.2.1.4.1.6-.3-.2-.6-.5-.8-.6-.1 0-.2-.1-.3-.1-.1 0-.3 0-.4 0h-.8l.3-.7" fill="#c94747"/><path d="m15.3 24.1c.4-.1.7 0 1 .1.3.1.7.1 1.1.1.4 0 .8-.1 1.1-.3.3-.2.6-.6.5-1-.6.5-1.1.5-1.8.5-.3 0-.7 0-1 .1-.3-.1-.7.1-.9.5" fill="#574137"/><g fill="#c6bbb3"><path d="m13.1 57.5c0 2.5-.9 4.5-2.9 4.5-2 0-3.4-2.2-2.5-4.5 1.3-3.6 4.5-5.5 6.5-5.5 1.9 0-1.1 3-1.1 5.5"/><path d="m50.9 57.5c0 2.5.9 4.5 2.9 4.5s3.4-2.2 2.5-4.5c-1.3-3.6-4.5-5.5-6.5-5.5-1.9 0 1.1 3 1.1 5.5"/></g><path d="m59.1 40.1c0 18.4-12 18.8-26.9 18.8s-26.8-.4-26.8-18.8h53.7" fill="#e2d8c7"/><path fill="#c6bbb3" d="m5.4 41h53.7v1.2h-53.7z"/><path d="m59.4 41.4h-54.3c-4.1 0-4.1-4.8 0-4.8h54.3c3.5 0 3.5 4.8 0 4.8" fill="#ddd3ca"/><g opacity=".6" fill="#a6aeb0"><path d="m40.3 11.4c-3.6-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m29.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.2 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m51.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c0-1f3ff.svg b/riot/emojione/svg/1f6c0-1f3ff.svg new file mode 100644 index 0000000..c036318 --- /dev/null +++ b/riot/emojione/svg/1f6c0-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.9 36.4c2.2 3.7-4.2 6.6-7.8 6.6-3.6 0-12.3-1.3-10.6-5.2 1.8-4.1 8.9-11.4 12.5-11.4 3.6-.1 3.8 6.4 5.9 10" fill="#8a6859"/><g fill="#705041"><path d="M45.4,31.9C45,33,44,37.6,43,37.8"/><path d="m21.6 32.6l-11.8-.2c0 0 3.5 3.3 4.8 8l7-3.6c-.9-1.6 0-4.2 0-4.2"/></g><path d="m4 31.4c-3.5-5.9-1.2-8.2-1.2-8.2.5-4.4 9.2-7.9 12.6-7.2 7 1.4 6.3 7.6 5.4 8l-8.5 7.3c0 0 2.6 6.6 7 6.3l-8.5 5.1-6.8-11.3" fill="#231f20"/><path d="m20.2 34.4c-3.1 1-3.7 2.4-8.4-3.7l2.1-1.2c0 0 1.7-.5.1-6.4-.7-2.7.9-6 2.4-4.9 3 2.3 2.2 4 3 4.6 1.5 1.2 2.5 0 3 1 .3.6-.7 1.2-.6 1.4.1.4.6.4 1.2.5.7 0 0 .9.7 1.7.8.9 1.1 1.2 1.1 1.2-.2.5-.8.8-.3 1.4 1 1.3 1.6 2.5-4.3 4.4" fill="#8a6859"/><path d="m18.6 23.4c-.2-.2-.3-.4-.4-.7-.1-.3-.2-.5-.3-.8-.2-.3-.4-.6-.8-.7-.3-.1-.6-.1-.9 0 .3.1.5.2.7.4.2.1.3.3.4.6.1.2.3.5.4.8.3.1.6.4.9.4" fill="#705041"/><path d="m9.8 31.9c1.3 1.3 3 1.6 3.9.7.9-.9.6-2.8-.6-4.1-1.3-1.3-3-1.6-3.9-.7-.9.9-.6 2.7.6 4.1" fill="#8a6859"/><path d="m10 28.5c.3-.2.7-.2 1.1-.2.4.1.7.3 1 .5.2.2.4.5.5.8.1-.1.2-.2.4-.2-.1.2-.1.3-.1.5 0 .1 0 .3.1.4 0 .1.1.3.2.4.1.1.2.2.4.4-.2.1-.4.1-.6-.1-.2-.1-.3-.4-.4-.6-.1-.2-.1-.5 0-.7 0 0 0-.1.1-.1-.5-.4-1-.7-1.5-.8-.3 0-.6 0-.8 0-.3.1-.6.2-.9.3 0-.2.2-.5.5-.6" fill="#574137"/><path d="m22.8 27.3c.1-.3.3-.6.3-.8.1-.3.1-.5-.3-.8.2 0 .4 0 .6.2.2.2.3.4.3.7 0 .2 0 .4 0 .6.2.1.4.2.6.3.2.2.3.4.4.6.1.2.1.4.1.6-.3-.2-.6-.5-.8-.6-.1 0-.2-.1-.3-.1-.1 0-.3 0-.4 0h-.8l.3-.7" fill="#c94747"/><path d="m15.3 24.1c.4-.1.7 0 1 .1.3.1.7.1 1.1.1.4 0 .8-.1 1.1-.3.3-.2.6-.6.5-1-.6.5-1.1.5-1.8.5-.3 0-.7 0-1 .1-.3-.1-.7.1-.9.5" fill="#574137"/><g fill="#c6bbb3"><path d="m13.1 57.5c0 2.5-.9 4.5-2.9 4.5-2 0-3.4-2.2-2.5-4.5 1.3-3.6 4.5-5.5 6.5-5.5 1.9 0-1.1 3-1.1 5.5"/><path d="m50.9 57.5c0 2.5.9 4.5 2.9 4.5s3.4-2.2 2.5-4.5c-1.3-3.6-4.5-5.5-6.5-5.5-1.9 0 1.1 3 1.1 5.5"/></g><path d="m59.1 40.1c0 18.4-12 18.8-26.9 18.8s-26.8-.4-26.8-18.8h53.7" fill="#e2d8c7"/><path fill="#c6bbb3" d="m5.4 41h53.7v1.2h-53.7z"/><path d="m59.4 41.4h-54.3c-4.1 0-4.1-4.8 0-4.8h54.3c3.5 0 3.5 4.8 0 4.8" fill="#ddd3ca"/><g opacity=".6" fill="#a6aeb0"><path d="m40.3 11.4c-3.6-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m29.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.2 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m51.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c0.svg b/riot/emojione/svg/1f6c0.svg new file mode 100644 index 0000000..6985f1f --- /dev/null +++ b/riot/emojione/svg/1f6c0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m50.9 36.4c2.2 3.7-4.2 6.6-7.8 6.6-3.6 0-12.3-1.3-10.6-5.2 1.8-4.1 8.9-11.4 12.5-11.4 3.6-.1 3.8 6.4 5.9 10" fill="#ffdd67"/><g fill="#eba352"><path d="M45.4,31.9C45,33,44,37.6,43,37.8"/><path d="m21.6 32.6l-11.8-.2c0 0 3.5 3.3 4.8 8l7-3.6c-.9-1.6 0-4.2 0-4.2"/></g><path d="m4 31.4c-3.5-5.9-1.2-8.2-1.2-8.2.5-4.4 9.2-7.9 12.6-7.2 7 1.4 6.3 7.6 5.4 8l-8.5 7.3c0 0 2.6 6.6 7 6.3l-8.5 5.1-6.8-11.3" fill="#ffb300"/><path d="m20.2 34.4c-3.1 1-3.7 2.4-8.4-3.7l2.1-1.2c0 0 1.7-.5.1-6.4-.7-2.7.9-6 2.4-4.9 3 2.3 2.2 4 3 4.6 1.5 1.2 2.5 0 3 1 .3.6-.7 1.2-.6 1.4.1.4.6.4 1.2.5.7 0 0 .9.7 1.7s1.1 1.2 1.1 1.2c-.2.5-.8.8-.3 1.4 1 1.3 1.6 2.5-4.3 4.4" fill="#ffdd67"/><path d="m18.6 23.4c-.2-.2-.3-.4-.4-.7-.1-.3-.2-.5-.3-.8-.2-.3-.4-.6-.8-.7-.3-.1-.6-.1-.9 0 .3.1.5.2.7.4.2.1.3.3.4.6.1.2.3.5.4.8.3.1.6.4.9.4" fill="#eba352"/><path d="m9.8 31.9c1.3 1.3 3 1.6 3.9.7.9-.9.6-2.8-.6-4.1-1.3-1.3-3-1.6-3.9-.7-.9.9-.6 2.7.6 4.1" fill="#ffdd67"/><path d="m10 28.5c.3-.2.7-.2 1.1-.2.4.1.7.3 1 .5.2.2.4.5.5.8.1-.1.2-.2.4-.2-.1.2-.1.3-.1.5 0 .1 0 .3.1.4 0 .1.1.3.2.4.1.1.2.2.4.4-.2.1-.4.1-.6-.1-.2-.1-.3-.4-.4-.6-.1-.2-.1-.5 0-.7 0 0 0-.1.1-.1-.5-.4-1-.7-1.5-.8-.3 0-.6 0-.8 0-.3.1-.6.2-.9.3 0-.2.2-.5.5-.6" fill="#574137"/><path d="m22.8 27.3c.1-.3.3-.6.3-.8.1-.3.1-.5-.3-.8.2 0 .4 0 .6.2.2.2.3.4.3.7 0 .2 0 .4 0 .6.2.1.4.2.6.3.2.2.3.4.4.6.1.2.1.4.1.6-.3-.2-.6-.5-.8-.6-.1 0-.2-.1-.3-.1-.1 0-.3 0-.4 0h-.8l.3-.7" fill="#c94747"/><path d="m15.3 24.1c.4-.1.7 0 1 .1.3.1.7.1 1.1.1.4 0 .8-.1 1.1-.3.3-.2.6-.6.5-1-.6.5-1.1.5-1.8.5-.3 0-.7 0-1 .1-.3-.1-.7.1-.9.5" fill="#574137"/><g fill="#c6bbb3"><path d="m13.1 57.5c0 2.5-.9 4.5-2.9 4.5-2 0-3.4-2.2-2.5-4.5 1.3-3.6 4.5-5.5 6.5-5.5 1.9 0-1.1 3-1.1 5.5"/><path d="m50.9 57.5c0 2.5.9 4.5 2.9 4.5s3.4-2.2 2.5-4.5c-1.3-3.6-4.5-5.5-6.5-5.5-1.9 0 1.1 3 1.1 5.5"/></g><path d="m59.1 40.1c0 18.4-12 18.8-26.9 18.8s-26.8-.4-26.8-18.8h53.7" fill="#e2d8c7"/><path fill="#c6bbb3" d="m5.4 41h53.7v1.2h-53.7z"/><path d="m59.4 41.4h-54.3c-4.1 0-4.1-4.8 0-4.8h54.3c3.5 0 3.5 4.8 0 4.8" fill="#ddd3ca"/><g opacity=".6" fill="#a6aeb0"><path d="m40.3 11.4c-3.6-3.8-1.2-9.4-1.2-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7-6.6 1.2-12.6"/><path d="m29.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.2 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/><path d="m51.3 14.8c-2.8-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.3 4.3 2.1 6.9 2.1 6.9s5.2-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c1.svg b/riot/emojione/svg/1f6c1.svg new file mode 100644 index 0000000..cef7b67 --- /dev/null +++ b/riot/emojione/svg/1f6c1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c6bbb3"><path d="m13.1 57.5c0 2.5-.9 4.5-2.9 4.5-2 0-3.4-2.2-2.5-4.5 1.3-3.6 4.5-5.5 6.5-5.5 1.9 0-1.1 3-1.1 5.5"/><path d="m50.9 57.5c0 2.5.9 4.5 2.9 4.5s3.4-2.2 2.5-4.5c-1.3-3.6-4.5-5.5-6.5-5.5-1.9 0 1.1 3 1.1 5.5"/></g><path d="m59.1 40.1c0 18.4-12 18.8-26.9 18.8s-26.8-.4-26.8-18.8h53.7" fill="#e2d8c7"/><path fill="#c6bbb3" d="m5.4 41h53.7v1.2h-53.7z"/><path d="m59.4 41.4h-54.3c-4.1 0-4.1-4.8 0-4.8h54.3c3.5 0 3.5 4.8 0 4.8" fill="#ddd3ca"/><g opacity=".6" fill="#a6aeb0"><path d="m33.8 14.8c-5-5.2-1.7-12.8-1.7-12.8s-10.5 10.1-3.9 17c7.7 8 3.9 13 3.9 13s9.6-9 1.7-17.2"/><path d="m18.8 19.5c-3.8-3.8-1.3-9.3-1.3-9.3s-7.9 7.3-2.9 12.4c5.8 5.8 2.9 9.5 2.9 9.5s7.2-6.6 1.3-12.6"/><path d="m48.7 19.5c-3.8-3.8-1.3-9.3-1.3-9.3s-7.9 7.3-2.9 12.4c5.8 5.8 2.9 9.5 2.9 9.5s7.2-6.6 1.3-12.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c2.svg b/riot/emojione/svg/1f6c2.svg new file mode 100644 index 0000000..f29b9c7 --- /dev/null +++ b/riot/emojione/svg/1f6c2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m34.3 23c0 4.8 9.6 4.8 9.6 0 0-2.6 0-4.8 0-4.8h-9.6l-3.8 2.9h3.8c0 .6 0 1.3 0 1.9"/><path d="m43.8 17.3v-3.8h-10.5l1 3.8z"/><path d="m24.6 25.6l-10.3-2.2v9.9l10.3 2.1z"/><path d="m24.6 19.1l-10.3 2.1 10.3 2.2z"/><path d="m30.9 43.1l14.4-14.4h-8.7-5.7l-6.7 11.9-1.9-3.4h-5.7l4.8 8.6h5.7l3.8-6.9z"/><path d="m32.6 43.8h15.1v-15.1z"/><path d="m30.9 45.5h16.8v5h-16.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c3.svg b/riot/emojione/svg/1f6c3.svg new file mode 100644 index 0000000..618ee79 --- /dev/null +++ b/riot/emojione/svg/1f6c3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m17.4 43.5h14v6h-14z"/><path d="m11.4 29.5h6v14h-6z"/><path d="m37.2 22c0 4.8 9.6 4.8 9.6 0 0-2.6 0-4.8 0-4.8h-9.6l-3.8 2.9h3.8c0 .6 0 1.3 0 1.9"/><path d="m46.7 16.3v-3.8h-10.5l1 3.8z"/><path d="m33.8 42.1l14.4-14.4h-8.7-5.7l-13.5 14.1h5.7l7.8-8.2z"/><path d="m33.8 44.5h16.8v5h-16.8z"/><path d="m35.5 42.8h15.1v-15.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c4.svg b/riot/emojione/svg/1f6c4.svg new file mode 100644 index 0000000..b7c8c1c --- /dev/null +++ b/riot/emojione/svg/1f6c4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><circle cx="14.5" cy="48" r="2"/><circle cx="21.5" cy="48" r="2"/><circle cx="28.5" cy="48" r="2"/><circle cx="35.5" cy="48" r="2"/><circle cx="42.5" cy="48" r="2"/><circle cx="49.5" cy="48" r="2"/><path d="m41 19h-2v-3.9c0-.6-.4-1-1-1h-12c-.6 0-1 .5-1 1v3.9h-2v-3.9c0-1.7 1.3-3.1 3-3.1h12c1.7 0 3 1.4 3 3.1v3.9"/><path d="m50 19h-3.5v24h3.5c1.1 0 2-.9 2-2v-20c0-1.1-.9-2-2-2"/><path d="m19.5 19h25v24h-25z"/><path d="m17.5 19h-3.5c-1.1 0-2 .9-2 2v20c0 1.1.9 2 2 2h3.5v-24"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6c5.svg b/riot/emojione/svg/1f6c5.svg new file mode 100644 index 0000000..dea7416 --- /dev/null +++ b/riot/emojione/svg/1f6c5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m48.6 52h-33.2c-1.9 0-3.4-1.5-3.4-3.3v-23.4c0-1.8 1.5-3.3 3.4-3.3h33.2c1.9 0 3.4 1.5 3.4 3.3v23.3c0 1.9-1.5 3.4-3.4 3.4m-33.2-28c-.8 0-1.4.6-1.4 1.3v23.3c0 .7.6 1.3 1.4 1.3h33.2c.8 0 1.4-.6 1.4-1.3v-23.3c0-.7-.6-1.3-1.4-1.3h-33.2"/><path d="m47 32h-3v16h3c.6 0 1-.4 1-1v-14c0-.6-.4-1-1-1"/><path d="m38 32v-4c0-1.1-.9-2-2-2h-8c-1.1 0-2 .9-2 2v4h-4v16h20v-16h-4m-2 0h-8v-4h8v4"/><path d="m17 32c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h3v-16h-3"/><path d="m42 14h-14.6c-.7-1.2-2-2-3.4-2-2.2 0-4 1.8-4 4s1.8 4 4 4c1.5 0 2.8-.8 3.4-2h2.6l2-2 2 2h2l2-2 2 2h2l2-2-2-2m-19 4c-1.1 0-2-.9-2-2s.9-2 2-2c1.1 0 2 .9 2 2s-.9 2-2 2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6cb.svg b/riot/emojione/svg/1f6cb.svg new file mode 100644 index 0000000..a33ada1 --- /dev/null +++ b/riot/emojione/svg/1f6cb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m10.4 34.2h-1.2v-22.6c0-1.6.8-4.8 3.8-4.8v1.3c-2.6 0-2.6 3.3-2.6 3.5 0 0 0 22.6 0 22.6" fill="#666"/><path d="m21.6 7c-.5-.5-2.5-1.2-2.5-1.2l-1.6-5.1c-.2-.7-1.9-.8-3.9-.2-2 .6-3.4 1.7-3.2 2.4l1.7 5.3c0 0-1.3 2.3-1.4 3.1-.3 1.6.6 6.3.6 6.3l14-4.2c-.1-.1-2.3-5.2-3.7-6.4" fill="#94989b"/><path d="m12.1 8.1c.2-.6.7-1.2 1.3-1.6.6-.4 1.2-.7 1.8-.9.6-.2 1.3-.4 2-.4.7 0 1.4.1 2 .5-.6-.3-1.3-.4-1.9-.3-.7 0-1.3.2-1.9.4-.6.2-1.2.5-1.8.8-.7.4-1.2.9-1.5 1.5" fill="#3e4347"/><path d="m25.2 13.3c.4 1.4-2.5 3.5-6.3 4.6-3.9 1.2-7.3 1-7.6-.4-.4-1.4 2.5-3.5 6.3-4.6 3.8-1.2 7.3-1 7.6.4" fill="#ffe62e"/><path d="m22.9 12.1c-1.4-.1-3.3.1-5.3.7-2.1.6-4 1.6-5.1 2.5 1.4.1 3.3-.1 5.3-.7 2.2-.6 4-1.5 5.1-2.5" fill="#fff"/><path d="m59.3 40.7c0 1.1-.9 2-2 2h-50.6c-1.1 0-2-.9-2-2v-13c0-1.1.9-2 2-2h50.7c1.1 0 2 .9 2 2v13z" fill="#42ade2"/><g fill="#428bc1"><path d="m59.3 40.7c0 1.1-.9 2-2 2h-50.6c-1.1 0-2-.9-2-2v-13c0-1.1.9-2 2-2h50.7c1.1 0 2 .9 2 2v13z" opacity=".5"/><path d="m45 42.7h-40.3v-15.4c0 0 8 9.2 40.3 15.4"/></g><path d="m62.3 30.5c0-1.8-1.3-3.2-3-3.2-1.6 0-2.9 1.4-2.9 3.2v12.4c0 1.8 1.3 3.2 2.9 3.2 1.6 0 3-1.4 3-3.2v-12.4" fill="#42ade2"/><path d="m56.4 30.5v12.4c0 1.8 1.3 3.2 2.9 3.2 1.6 0 3-1.4 3-3.2 0 0-4.4 1.3-5.9-12.4" fill="#428bc1"/><path fill="#3e4347" d="m6.1 59.8h3.9v4.2h-3.9z"/><g fill="#428bc1"><path d="m45 59.8h-41c-2.2 0-4-1.9-4-4.3 0-2.4 1.8-4.3 4-4.3h41v8.6"/><path d="m45 51.2h-41c-2.2 0-4-1.9-4-4.3 0-2.4 1.8-4.3 4-4.3h41v8.6"/></g><path fill="#3e4347" d="m54 59.8h3.9v4.2h-3.9z"/><g fill="#428bc1"><path d="m19 51.2h41c2.2 0 4 1.9 4 4.3 0 2.4-1.8 4.3-4 4.3h-41v-8.6"/><path d="m19 42.7h41c2.2 0 4 1.9 4 4.3 0 2.4-1.8 4.3-4 4.3h-41v-8.6"/></g><path d="m7.6 30.5c0-1.8-1.3-3.2-2.9-3.2-1.6 0-2.9 1.4-2.9 3.2v12.4c0 1.8 1.3 3.2 2.9 3.2 1.6 0 2.9-1.4 2.9-3.2v-12.4" fill="#42ade2"/><path d="m1.7 30.5v12.4c0 1.8 1.3 3.2 2.9 3.2 1.6 0 2.9-1.4 2.9-3.2.1 0-4.3 1.3-5.8-12.4" fill="#428bc1"/><g fill="#42ade2"><path d="m.3 48.6c-.2-.5-.3-1.1-.3-1.6 0-2.4 1.8-4.3 4-4.3h41c0 0-39.2.9-44.7 5.9"/><path d="m.3 57.2c-.2-.5-.3-1.1-.3-1.7 0-2.4 1.8-4.3 4-4.3h41c0 0-39.2.9-44.7 6"/><path d="m63.7 45.3c.2.5.3 1.1.3 1.7 0 2.4-1.8 4.3-4 4.3h-41c0-.1 39.2-1 44.7-6"/><path d="m63.7 53.8c.2.5.3 1.1.3 1.7 0 2.4-1.8 4.3-4 4.3h-41c0 0 39.2-.9 44.7-6"/></g><path d="m60.4 26.2c0 0-2.9 2.5-3.4 3.8-1 2.8-.3 8.9 0 11.9.1.5.5 1.9.5 1.9s-3.4-.9-4.6-1.1c-2.3-.3-6.8.2-9.1 0-1-.1-4-.8-4-.8s2.6-1.2 3.1-2c1.6-2.5 1.9-8.9 2.1-11.9 0-.4 0-1.7 0-1.7s2.2.7 3 .8c2.2.2 6.8-.2 9-.4.8 0 3.4-.5 3.4-.5" fill="#c7e755"/><path d="m47.4 36.4c.4-1 1-2 1.6-2.8 0-.2-.1-.4-.2-.6-.1-.3-.2-.6-.4-.8-.3-.5-.9-.9-1.4-1.2.6.1 1.3.3 1.8.8.3.2.5.5.7.8 0 .1.1.2.1.2.8-.9 1.6-1.6 2.6-2.3 1-.7 2.2-1.2 3.4-1.5-2 1.4-3.9 2.9-5.5 4.8-.8.9-1.5 1.9-2.1 3-.6 1.1-1.1 2.2-1.5 3.5.2-1.4.5-2.7.9-3.9" fill="#9db730"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6cc.svg b/riot/emojione/svg/1f6cc.svg new file mode 100644 index 0000000..8446d6d --- /dev/null +++ b/riot/emojione/svg/1f6cc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m6 55c0 .5-.4 1-1 1h-2c-.5 0-1-.5-1-1v-42c0-.6.5-1 1-1h2c.6 0 1 .4 1 1v42"/><path d="m5 55.3h4v6.7h-4z"/><path d="m55 55.3h4v6.7h-4z"/><path d="m62 49c0-.5-.4-1-1-1h-58c-.5 0-1 .5-1 1v8c0 .5.5 1 1 1h58c.6 0 1-.5 1-1v-8"/></g><path fill="#b0bdc6" d="m6 40h20v8h-20z"/><path d="m23.5 39.9c0 0-6.3 3.1-14.3.8-2.5-.7-5.3.9-4.8-.3 1.7-3.6 2.2-11-.1-13.9-1.6-2.1 3.6-.6 4.5 2.7 2.7 9.8 14.7 6 14.7 10.7" fill="#dae3ea"/><path fill="#ffdd67" d="m16.8 35l-.7 1.4 5.3 2.6 2.2-4.6z"/><path d="m17.1 34c2.4 1.2 5.2-1.6 5.2-1.6-.2 2 1.3 2 1.3 2-1 2-4.3 2.5-7.1 1.2l.6-1.6" fill="#eba352"/><path d="m8 32.2l6.4-6.9c3.7.5 10.4 4.6 7.3 8.9-.8 1.2-2.8 2.5-5.2 1.4l-1.5 2.1-7-5.5" fill="#ffdd67"/><path d="m7.3 28c-2.9 6 1.8 9.2 5.6 10.1 2.1.5 3.8 0 4.8-.9l-1.3-1.7c0 0-4.8-.6-4.8-4.9 0-1.8 2.6-3.9 2.6-5.4-.8-.9-5.2-.8-6.9 2.8" fill="#ffbc00"/><path d="m60 38c-.5-.5-27.8-13.7-34.9-8.1l-2 18.1h37.9c0 0 .7-8.1-1-10" fill="#ed4c5c"/><path d="m30 27.7c-1-1.4-2.6.6-2.6.6s-.7-1-1.6-.6c-.8.4-1.2 1.8-1.2 1.8s-1-1.1-1.5-.3c-8 12.4.9 30.4.9 30.4s-.7-8.1 1.5-10.1c2-1.8 3.4 3.5 3.4 3.5s-.2-7.8.5-8.4c1.6-1.2 2.9 5 2.9 5s2.5-15.4-2.3-21.9" fill="#a53838"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6cd.svg b/riot/emojione/svg/1f6cd.svg new file mode 100644 index 0000000..1daf857 --- /dev/null +++ b/riot/emojione/svg/1f6cd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="M1.1 39.1 2.2 0 29 2.5 27.2 40.2z"/><path fill="#fcbe10" d="m28.5 18l.2-5-9.6-.8.5-11.1-6.3-.6-.4 8.5-.1 2.7-11.4-.9-.1 5.7 11.4.7-.7 22.9 6.2.3.7-22.9z"/><g fill="#ffce31"><path d="m10.6 13.3c0 0-.4 6.3-5.1 9.9l4.1.4-.5 5c0 0 4.8-5.6 5.6-14.9l-4.1-.4"/><path d="m21.1 14.3c0 0-.8 6.3 3.2 10.7l-4.1-.4-.5 5c0 0-3.7-6.4-2.8-15.7l4.2.4"/></g><path d="m15.4 14.1c-.1 1.6-2.1 3-4.3 3.1l-1.8.1c-2.2.1-3.6-.7-3.1-1.9s.7-3 .4-4.2c-.3-1.2 1.2-1.8 3.4-1.3l1.7.4c2.2.5 3.8 2.2 3.7 3.8" fill="#ffe62e"/><path d="m6.8 15.6c-.2.1 0 .3 0 .4.2.2.7.5 1.6.6.3 0 .6 0 .9 0l1.8-.1c1.2-.1 2.4-.6 3.1-1.3 0 .1-5.2-1.4-7.4.4" fill="#ffce31"/><path d="m16.2 14.1c-.1 1.6 1.5 3.3 3.6 3.8l1.7.4c2.1.5 3.7-.1 3.4-1.3-.3-1.2-.1-3.1.4-4.2.5-1.1-.9-2-3.1-1.9l-1.8.1c-2.1.2-4 1.5-4.2 3.1" fill="#ffe62e"/><g fill="#ffce31"><path d="m24.4 17.2c.2.2-.1.3-.1.4-.2.2-.8.4-1.7.3-.3 0-.6-.1-.9-.1l-1.7-.4c-1.2-.3-2.2-1-2.8-1.8 0-.1 5.4-.5 7.2 1.6"/><path d="m15.6 13.6c0 0-.6.4-1.7-.8-1.3-1.4-3.7.1-.9 1.1 1.5.5 2.6-.3 2.6-.3"/><path d="m16.1 13.7c0 0 .5.5 1.9-.5 1.6-1.1 3.6.7.7 1.2-1.6.2-2.6-.7-2.6-.7"/><path d="m15.6 16.3c-1.2-.1-1.5.7-1.3-2.3.3-3 .5-2.1 1.7-2 1.2.1 1.5-.7 1.3 2.3s-.5 2.1-1.7 2"/></g><path d="m15.6 16.3c-.9-.1-1.3.8-1-2.3.3-3.1.4-2.2 1.4-2.1.9.1 1.3-.8 1 2.3-.3 3.1-.4 2.2-1.4 2.1" fill="#ffe62e"/><path fill="#c28fef" d="m38.8 12.3l4.8-12.3 18.1 5.6-2.8 10z"/><path fill="#ffe62e" d="m45.5 13.4l6.3 1 3.5-10.9-6-1.9z"/><path fill="#42ade2" d="m32.4 11.2v19.5l31.6-.3v-19.2z"/><path fill="#0071bc" d="m32.4 11.2l-5.3 2.1v17.4h5.3z"/><path fill="#3e4347" d="m16 64l-8-4v-34h8z"/><g fill="#62727a"><path d="m8 60l-8 4v-38h8z"/><path d="m16 26h48v38h-48z"/></g><g fill="#3e4347"><circle cx="32" cy="35" r="3"/><circle cx="52" cy="35" r="3"/></g><path d="m31 35c0 4.8 0 5.7 0 10.5 0 6.7 3.9 12.2 11 12.5 3.7.1 7-2 9.2-4.9 1.6-2.2 1.8-4.9 1.8-7.6 0-4.8 0-5.7 0-10.5 0-1.3-2-1.3-2 0 0 4.1 0 4.2 0 8.3 0 1.5 0 2.9 0 4.4-.2 4.8-4.5 8.2-9 8.3-4.4.1-7.9-3.2-8.8-7.3-.4-1.7-.2-3.7-.2-5.4 0-4.1 0-4.2 0-8.3 0-1.3-2-1.3-2 0" fill="#d0d0d0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6ce.svg b/riot/emojione/svg/1f6ce.svg new file mode 100644 index 0000000..96f9fef --- /dev/null +++ b/riot/emojione/svg/1f6ce.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m53.6 51.5c-1.4-.8-3.3-4.7-3.3-4.7h-36.7c0 0-1.8 4-3.3 4.7-1.9 1-5.4 2-5.4 5.7v4.8h54v-4.8c.1-3.7-3.4-4.7-5.3-5.7" fill="#3e4347"/><path d="m55.4 57.9c0 1.1-.8 2-1.8 2h-43.2c-1 0-1.8-.9-1.8-2 0-1.1.8-2 1.8-2h43.2c1 0 1.8.9 1.8 2" fill="#62696d"/><path d="m57 49.8v-3.1c0-14-11.2-22.4-25-22.4s-25 8.4-25 22.4v3.1c0 0 50 0 50 0" fill="#b2c1c0"/><path d="m53.2 49.8v-2.9c0-13.6-9.5-21.5-21.2-21.5-11.7 0-21.2 8-21.2 21.5v2.9h42.4" fill="#dae3ea"/><g fill="#94989b"><path d="m26.8 10.1h10.5v4.1h-10.5z"/><path d="m30.1 14.2h3.7v6.1h-3.7z"/></g><path fill="#3e4347" d="m30.1 14.2h3.7v3.1h-3.7z"/><path fill="#b2c1c0" d="m26 19.8h12v6.1h-12z"/><path fill="#dae3ea" d="m28 19.8h8v6.7h-8z"/><g fill="#42ade2"><path d="M51.1 2 42.2 16.8 56.7 6.4z"/><path d="M12.9 2 21.8 16.8 7.3 6.4z"/><path d="m48 22.8l11.5-6 2.5 6z"/><path d="m16 22.8l-11.5-6-2.5 6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6cf.svg b/riot/emojione/svg/1f6cf.svg new file mode 100644 index 0000000..f2fb4aa --- /dev/null +++ b/riot/emojione/svg/1f6cf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m30.5 9.1c0 0-2.6 1.1-5.5-1.7-1.7-1.6-4.6-3-5.8-3.4h-1.1c0 0-3.8 0-7.8 3.4-2.4 2-4.6 2.2-5 1.7h-1.1c-1.4 3.1-4.2 2.7-4.2 2.7v30.4h34.2l-2.6-33.1h-1.1" fill="#3e4347"/><path d="m31.6 9.1c0 0-2.6 1.1-5.5-1.7-3.5-3.4-6.9-3.4-6.9-3.4s-3.8 0-7.8 3.4c-3.3 2.8-6.1 1.7-6.1 1.7-1.4 3.1-4.2 2.8-4.2 2.8v30.4h34.2v-30.5c0 0-2.5.4-3.7-2.7" fill="#62696d"/><path fill="#3e4347" d="m1.1 35.5l21.4 11.5v9l-21.4-13.8z"/><g fill="#62696d"><path d="m22.5 56l41.5-7v-8l-41.5 6z"/><path d="m21.5 55.4l.4 4.2.6.4v-4z"/></g><g fill="#3e4347"><path d="m22.5 60l1.4-.4.7-3.9-2.1.3z"/><path d="m63.6 53v-3.9l-2.7.5.9 3.7z"/><path d="m.4 42.2v3.2h1.5l1-3.2z"/></g><path fill="#94989b" d="M1.1 35.5 22.5 47 64 41 35 31z"/><path fill="#dae3ea" d="m2.3 29.7l20.9 8.3v7.6l-20.9-10.3z"/><path fill="#ffdd7d" d="m23.2 45.6l38.7-5.1v-6.8l-38.7 4.3z"/><path fill="#fff" d="M2.3 29.7 23.2 38 61.9 33.7 35.3 27z"/><g fill="#b2c1c0"><path d="m4.1 25.6c0 0 1.2 3.2 5 4.7 0 0 5.7-1.7 13.3-1.6 0 0-3-2.7-3.8-5 0 .1-6.6-2.3-14.5 1.9"/><path d="m21.4 24.2c0 0 .8 3.2 3.4 4.7 0 0 3.9-1.7 9-1.6 0 0-2-2.7-2.6-5 .1.1-4.4-2.3-9.8 1.9"/></g><g fill="#dae3ea"><path d="m7.5 23.2c0 0 2.6 3.5 3.8 8.2 0 0 5.7-2.3 13.3-2.2 0 0-3-3.8-3.8-6.9 0 0-5.6-1.1-13.3.9"/><path d="m22.6 22.2c0 0 2.3 3.2 3.4 7.4 0 0 5.1-2.1 11.9-2 0 0-2.7-3.4-3.4-6.2 0 0-5-1-11.9.8"/></g><g fill="#a53838"><path d="m11.8 40c0 0-.6-4.2-.3-5.4.2-.9 1.2-2.2 1.7-2.7 1.4-1.1 6.3-1.5 6.3-1.5s17.7-2.5 23.5-2.3c.9 0 3.3 1.6 3.3 1.6l-27.6 3.5-3 5.3-.3 3.4-3.6-1.9"/><path d="m17.4 35.7l-1.6 2.8-.3 3.3 7.7 3.8v-7.6z"/></g><path fill="#ed4c5c" d="m23.2 38v7.6l38.7-5.1v-6.8z"/><path fill="#c94747" d="m17.4 35.7l5.8 2.3 38.7-4.3-15.8-4-27.3 3.4z"/><path d="m54.4 31.8c0 0-.7-1.2-1-1.5-.4-.3-1.6-.4-1.6-.4s-.4-.9-.6-1c-.5-.2-1.9.7-1.9.7s-.8-1.1-1.1-1.1c-7.3 0-22.6 1.8-29.7 3.9-.8.2-2 2.1-2.4 3-1 2-2.3 6.6-2.6 9.1-.3 2.3 1.1 8.9 1.1 8.9s1.2-4.5 2.3-5.8c.5-.6 1 2.7 1 2.7s.9-4.2 1.2-4.6c.4-.5 1 2.5 1 2.5s.6-6.6 1.1-8.2c.3-1.1 1.4-3 2.1-3.3 7-3.1 21.7-5.6 28.9-5.4.4.1 2.2.5 2.2.5" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6d0.svg b/riot/emojione/svg/1f6d0.svg new file mode 100644 index 0000000..65314e5 --- /dev/null +++ b/riot/emojione/svg/1f6d0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c28fef"><path d="m48.6 25.4l4.4-4-21-19.4-21 19.4 4.4 4 16.6-15.3z"/><path d="m47.9 49.4c1.2-1.2.9-2.9 0-4.1-3-3.9-6.1-7.8-9.1-11.7-1-1.3-3-1-4 0-1.8 1.7-3.5 3.5-5.3 5.2 0 0 0 0-5.5-4.6l-1.4 1.5c4.9 7.8 4.9 7.8 4.9 7.8.7 1.5 2.9 1.1 4 0l3.6-3.5 5.6 8.6c-3.4 3.3-5.3 5.2-8.6 8.5-1.8 1.8-.4 5 2 5 5.2 0 11.8 0 17 0v-2.9c-9.9-2.9-9.9-2.9-9.9-2.9 2.2-2.4 4.5-4.6 6.7-6.9"/><path d="m30.4 23.5l-3.9 3.5c-.6.5-.6 1.4-.1 2l3.3 4c.5.6 1.4.7 2 .1l3.8-3.4c.6-.5.6-1.4.1-2l-3.3-4c-.5-.6-1.3-.7-1.9-.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6d1.svg b/riot/emojione/svg/1f6d1.svg new file mode 100644 index 0000000..4107a85 --- /dev/null +++ b/riot/emojione/svg/1f6d1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#e9edf2" d="M64 45.3 45.3 64 18.7 64 0 45.3 0 18.7 18.7 0 45.3 0 64 18.7z"/><path fill="#ed4c5c" d="M58 42.8 42.8 58 21.2 58 6 42.8 6 21.2 21.2 6 42.8 6 58 21.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6d2.svg b/riot/emojione/svg/1f6d2.svg new file mode 100644 index 0000000..b820572 --- /dev/null +++ b/riot/emojione/svg/1f6d2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b2c1c0"><path d="m53.1 38.6h-7.5v3.8h7.5c1 0 1.9.8 1.9 1.9s-.8 1.9-1.9 1.9h-46.8c-1 0-1.9.8-1.9 1.9 0 1 .8 1.9 1.9 1.9h46.9c3.1 0 5.6-2.5 5.6-5.6 0-3.3-2.6-5.8-5.7-5.8"/><path d="m54.5 25.7l-3.7-.3c0-.1 2.3-13.8 2.8-16.6.3-1.6.9-6.1 6.6-6.1v3.8c-2.3 0-2.6.9-2.8 2.6-.6 2.8-2.9 16.4-2.9 16.6"/></g><path d="m54.7 12.3h-50.7c-1.9 0-2.2 1.8-1.9 2.8l5.7 25.4c.3 1 1.3 1.8 2.4 1.8h39.8c1 0 2-.8 2.2-1.9l4.2-26.3c.1-.9-.7-1.8-1.7-1.8m-47.8 8.5l-1-3.8c-.1-.5.2-.9.7-.9h7.1c.5 0 1 .4 1 .9l.4 3.8c.1.5-.3.9-.8.9h-6.3c-.5 0-1-.4-1.1-.9m3.2 9.3c-.5 0-1-.4-1.2-.9l-.7-2.9c-.1-.5.2-.9.7-.9h5.7c.5 0 1 .4 1 .9l.3 2.8c.1.5-.3.9-.8.9.1.1-5 .1-5 .1m6 8.5h-3.9c-.5 0-1-.4-1.2-.9l-.7-2.9c-.1-.5.2-.9.7-.9h4.5c.5 0 1 .4 1 .9l.3 2.8c.2.5-.2 1-.7 1m11.5-1c0 .5-.4.9-.9.9h-4.9c-.5 0-1-.4-1-.9l-.3-2.8c-.1-.5.3-.9.8-.9h5.4c.5 0 .9.4.9.9v2.8m0-8.4c0 .5-.4.9-.9.9h-5.8c-.5 0-1-.4-1-.9l-.3-2.8c-.1-.5.3-.9.8-.9h6.3c.5 0 .9.4.9.9 0 0 0 2.8 0 2.8m0-8.4c0 .5-.4.9-.9.9h-6.7c-.5 0-1-.4-1-.9l-.5-3.8c-.1-.5.3-.9.8-.9h7.3c.5 0 .9.4.9.9.1 0 .1 3.8.1 3.8m10.2 16.8c-.1.5-.5.9-1 .9h-4.4c-.5 0-.9-.4-.9-.9v-2.8c0-.5.4-.9.9-.9h4.9c.5 0 .9.4.8.9l-.3 2.8m.9-8.4c-.1.5-.5.9-1 .9h-5.3c-.5 0-.9-.4-.9-.9v-2.8c0-.5.4-.9.9-.9h5.8c.5 0 .9.4.8.9l-.3 2.8m.9-8.4c-.1.5-.5.9-1 .9h-6.2c-.5 0-.9-.4-.9-.9v-3.8c0-.5.4-.9.9-.9h6.8c.5 0 .9.4.8.9l-.4 3.8m8.7 16.8c-.1.5-.6.9-1.1.9h-4.8c-.5 0-.9-.4-.8-.9l.3-2.8c.1-.5.5-.9 1-.9h5.1c.5 0 .9.4.8.9l-.5 2.8m1.3-8.4c-.1.5-.6.9-1.1.9h-5.3c-.5 0-.9-.4-.8-.9l.3-2.8c.1-.5.5-.9 1-.9h5.5c.5 0 .9.4.8.9l-.4 2.8m1.3-8.4c-.1.5-.6.9-1.1.9h-5.7c-.5 0-.9-.4-.8-.9l.4-3.8c.1-.5.5-.9 1-.9h5.9c.5 0 .9.4.8.9l-.5 3.8" fill="#f15744"/><circle cx="12.3" cy="56.4" r="5.6" fill="#62727a"/><circle cx="12.3" cy="56.4" r="2.8" fill="#fff"/><circle cx="46.1" cy="56.4" r="5.6" fill="#62727a"/><path d="m48.9 56.4c0 1.6-1.3 2.8-2.8 2.8-1.6 0-2.8-1.3-2.8-2.8 0-1.6 1.3-2.8 2.8-2.8 1.5 0 2.8 1.2 2.8 2.8" fill="#fff"/><path d="m61.1 2h-2.8v5.6h2.8c.5 0 .9-.4.9-.9v-3.8c0-.5-.4-.9-.9-.9" fill="#62727a"/><g fill="#f15744"><path d="m12.3 48.9c-4.1 0-7.5 3.4-7.5 7.5h15c0-4.2-3.3-7.5-7.5-7.5"/><path d="m46.1 48.9c-4.1 0-7.5 3.4-7.5 7.5h15c0-4.2-3.4-7.5-7.5-7.5"/></g><path d="m42.3 38.4c0 .1 0 .1 0 .1s0 0 0-.1" fill="#75a843"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6e0.svg b/riot/emojione/svg/1f6e0.svg new file mode 100644 index 0000000..af26bdb --- /dev/null +++ b/riot/emojione/svg/1f6e0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.9 50.9l30-30c3.5.8 7.3-.1 10-2.8 2.7-2.7 3.6-6.5 2.8-10l-8.7 8.6-6.1-1.6-1.6-6.1 8.7-8.7c-3.5-.8-7.3.1-10 2.8-2.7 2.7-3.6 6.5-2.8 10l-30 30c-3.5-.8-7.3.1-10 2.8-4.2 4.1-4.2 10.9-.1 15 4.1 4.1 10.9 4.1 15 0 2.7-2.7 3.6-6.5 2.8-10m-8.7 8.6l-6.1-1.6-1.6-6.1 4.5-4.5 6.1 1.6 1.6 6.1-4.5 4.5" fill="#94989b"/><path fill="#3e4347" d="m28.8 21.9l-5.6 5.8-5.5-5.7 5.5-5.8z"/><g fill="#94989b"><path d="m16.7 5.1l-9.8 10.1c-.4.4-.4 1 0 1.3l3.7 3.8 3.7 3.8c.4.4.9.4 1.3 0l9.8-10.1c.4-.4.4-1 0-1.3l-7.4-7.6c-.3-.4-.9-.4-1.3 0"/><path d="m.3 22c-.4.4-.4 1 0 1.3l7.3 7.7c.4.4.9.4 1.3 0 0 0 2-2.1 2.1-2.2l-8.6-8.9c-.1 0-2.1 2.1-2.1 2.1"/></g><g fill="#3e4347"><path d="m10.5 20.4l-3.7-3.8c0 0 1.2 2.1-2 2.5-1.3.2-2.1.4-2.5.8l8.6 8.9c.4-.5.6-1.3.8-2.6.4-3.3 2.4-2 2.4-2l-3.6-3.8"/><path d="m39.6 4.3c-10.1-10.3-21.2 1.2-21.2 1.2l6.5 6.7c0 0 6.3-8.5 14.2-6.1.9.3 1.7.7 2 .5.4-.3-.8-1.6-1.5-2.3"/></g><path d="m26 24.8l-3.6 3.7c0 0 1.9 3 5.1 6.3 3.5 3.6 8.2 5.7 12.9 10.5 7 7.2 12.8 15 14.9 17.9.8 1.1.9 1 1.9 0l3-3.1-34.2-35.3" fill="#f2b200"/><path d="m26 24.8l3.6-3.7c0 0 2.9 1.9 6.1 5.2 3.5 3.6 5.5 8.5 10.2 13.3 7 7.2 14.5 13.2 17.4 15.4 1.1.8 1 1 0 2l-3 3.1-34.3-35.3" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6e1.svg b/riot/emojione/svg/1f6e1.svg new file mode 100644 index 0000000..e9a41aa --- /dev/null +++ b/riot/emojione/svg/1f6e1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#728084"><path d="m35.8 23.7h17.9c-.4-8.8-3.3-14.7-3.3-14.7s-5.6.8-9.5 0c-1.8-.4-3.6-1.2-5.1-2.1v16.8"/><path d="m28.2 23.7v-16.8c-1.4.9-3.2 1.7-5 2.1-4 .8-9.5 0-9.5 0s-3 5.9-3.3 14.7h17.8"/><path d="m28.2 31.1h-17.6c.1.4.1.8.2 1.2 1.8 11.3 11.9 20.7 17.4 25.1v-26.3"/><path d="m35.8 31.1v26.3c5.6-4.4 15.6-13.8 17.4-25.1.1-.4.1-.8.2-1.1l-17.6-.1"/></g><g opacity=".3" fill="#b0bdc6"><path d="m36.5 22.7h17.9c-.3-8.8-3.2-14.7-3.2-14.7s-5.6.8-9.5 0c-1.9-.3-3.7-1.2-5.2-2v16.7"/><path d="m27.5 22.7v-16.7c-1.5.8-3.3 1.7-5.1 2-4 .8-9.5 0-9.5 0s-3 5.9-3.3 14.7c-.1 0 17.9 0 17.9 0"/><path d="m27.5 31.8h-17.7c.1.4.1.8.2 1.1 1.9 11.3 11.9 20.7 17.5 25.1v-26.2"/><path d="m36.5 31.8v26.2c5.6-4.4 15.6-13.8 17.4-25.1.1-.4.1-.8.2-1.1h-17.6"/></g><path fill="#89969b" d="m28 3.8h8v57.2h-8z"/><path fill="#b0bdc6" d="m29 3.8h6v57.2h-6z"/><path fill="#89969b" d="m8.8 23.3h46.4v8h-46.4z"/><path fill="#b0bdc6" d="m8.8 24.3h46.4v6h-46.4z"/><g opacity=".2"><path d="m32 60.8c-.3 0-.6-.1-.9-.3-.7-.5-18.5-12.3-21.1-28.2-2.1-13.3 2.7-23.2 2.9-23.7.3-.6 1-1 1.7-.9 0 0 2.3.3 4.9.3 1.5 0 2.7-.1 3.7-.3 3.8-.7 7.7-4.1 7.7-4.1.6-.5 1.5-.5 2.1 0 0 0 4 3.4 7.7 4.2 1 .2 2.3.3 3.7.3 2.6 0 4.8-.3 4.9-.3.7-.1 1.4.3 1.7.9.2.4 5 10.4 2.9 23.6-2.5 15.9-20.3 27.7-21 28.2-.3.2-.6.3-.9.3m-16.6-49.6c-1.1 2.8-3.7 10.8-2.1 20.6 2 12.5 15.2 22.8 18.7 25.4 3.6-2.6 16.7-12.9 18.7-25.4 1.6-9.8-1-17.8-2.1-20.6-1 .1-2.5.2-4.1.2-1.7 0-3.2-.1-4.4-.4-3.3-.7-6.5-2.8-8.1-4-1.6 1.2-4.8 3.4-8.1 4.1-1.2.2-2.7.4-4.4.4-1.6-.1-3.1-.2-4.1-.3"/></g><g fill="#b0bdc6"><path d="m32 64c-.3 0-.7-.1-1-.3-.8-.6-20.6-13.7-23.4-31.4-2.4-14.7 3-25.8 3.2-26.2.4-.7 1.1-1.1 1.9-1 0 0 2.6.4 5.4.4 1.6 0 3-.1 4.2-.3 4.2-.8 8.5-4.6 8.6-4.6.7-.6 1.7-.6 2.4 0 0 0 4.4 3.8 8.6 4.6 1.1.2 2.5.3 4.2.3 2.8 0 5.4-.4 5.4-.4.8-.1 1.5.3 1.9 1 .2.5 5.6 11.5 3.2 26.2-3 17.7-22.8 30.9-23.6 31.4-.3.2-.7.3-1 .3m-18.5-55.1c-1.2 3.1-4.1 11.9-2.4 22.8 2.3 13.9 16.9 25.4 20.9 28.2 4-2.9 18.6-14.3 20.8-28.2 1.7-10.9-1.1-19.8-2.4-22.8-1.1.1-2.7.2-4.5.2-1.9 0-3.5-.1-4.9-.4-3.7-.7-7.3-3.2-9.1-4.5-1.8 1.4-5.4 3.8-9.1 4.5-1.4.3-3 .4-4.9.4-1.6 0-3.3-.1-4.4-.2"/><path d="m32 61.7c-.3 0-.6-.1-.9-.3-.8-.5-19.1-12.7-21.7-29.1-2.2-13.7 2.8-23.9 3-24.3.3-.7 1-1 1.7-.9 0 0 2.4.3 5 .3 1.5 0 2.8-.1 3.9-.3 3.9-.8 7.9-4.3 8-4.3.6-.5 1.6-.5 2.2 0 0 0 4.1 3.5 8 4.3 1.1.2 2.3.3 3.9.3 2.6 0 5-.3 5-.3.7-.1 1.4.3 1.7.9.2.4 5.2 10.7 3 24.3-2.8 16.4-21.1 28.6-21.9 29.1-.3.2-.6.3-.9.3m-17.1-51.1c-1.1 2.9-3.8 11.1-2.2 21.2 2.1 12.8 15.6 23.4 19.3 26.1 3.7-2.7 17.2-13.2 19.3-26.2 1.6-10.1-1.1-18.3-2.2-21.2-1 .1-2.5.2-4.2.2-1.7 0-3.3-.1-4.5-.4-3.4-.6-6.7-2.8-8.4-4.1-1.7 1.3-5 3.5-8.4 4.2-1.3.3-2.8.4-4.5.4-1.7 0-3.2-.1-4.2-.2"/></g><path d="m32 62.9c-.3 0-.7-.1-1-.3-.8-.5-19.9-13.3-22.6-30.4-2.3-14.2 2.9-24.8 3.1-25.3.3-.7 1.1-1.1 1.8-1 0 0 2.5.4 5.2.4 1.6 0 2.9-.1 4-.3 4-.8 8.3-4.4 8.3-4.5.7-.6 1.6-.6 2.3 0 0 0 4.3 3.7 8.3 4.5 1.1.2 2.4.3 4 .3 2.7 0 5.2-.3 5.2-.4.8-.1 1.5.3 1.8 1 .2.4 5.4 11.1 3.1 25.4-2.7 17.1-21.7 29.8-22.5 30.4-.3.1-.7.2-1 .2m-17.8-53.3c-1.2 3-4 11.6-2.3 22.1 2.1 13.5 16.3 24.5 20.1 27.3 3.8-2.8 18-13.8 20.1-27.3 1.7-10.5-1.1-19.1-2.3-22.1-1.1.1-2.7.2-4.4.2-1.8 0-3.4-.1-4.7-.4-3.6-.7-7-3-8.8-4.4-1.7 1.3-5.2 3.6-8.8 4.4-1.3.3-2.9.4-4.7.4-1.6.1-3.2-.1-4.2-.2" fill="#dfe9ef"/><ellipse cx="32" cy="3.1" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="32" cy="3.1" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m32 3.7c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1s1-.4 1.1-1c-.3.3-.7.5-1.1.5" fill="#89969b"/><ellipse cx="50.9" cy="8" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="50.9" cy="8" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m50.9 8.6c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1 .6 0 1-.4 1.1-1-.3.3-.7.5-1.1.5" fill="#89969b"/><ellipse cx="54.3" cy="21.2" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="54.3" cy="21.2" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m54.3 21.8c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1 .6 0 1-.4 1.1-1-.3.3-.7.5-1.1.5" fill="#89969b"/><ellipse cx="52.3" cy="37.7" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="52.3" cy="37.7" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m52.3 38.2c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1s1-.4 1.1-1c-.3.3-.7.5-1.1.5" fill="#89969b"/><ellipse cx="44" cy="50.5" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="44" cy="50.5" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m44 51c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1s1-.4 1.1-1c-.3.4-.7.5-1.1.5" fill="#89969b"/><ellipse cx="32" cy="60.7" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="32" cy="60.7" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m32 61.3c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1 .6 0 1-.4 1.1-1-.3.3-.7.5-1.1.5" fill="#89969b"/><ellipse cx="20" cy="50.5" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="20" cy="50.5" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m20 51c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1 .6 0 1-.4 1.1-1-.3.4-.7.5-1.1.5" fill="#89969b"/><ellipse cx="11.7" cy="37.7" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="11.7" cy="37.7" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m11.7 38.2c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1 .6 0 1-.4 1.1-1-.3.3-.7.5-1.1.5" fill="#89969b"/><ellipse cx="9.7" cy="21.2" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="9.7" cy="21.2" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m9.7 21.8c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1 .6 0 1-.4 1.1-1-.3.3-.7.5-1.1.5" fill="#89969b"/><ellipse cx="13.1" cy="8" rx="1.4" ry="1.4" fill="#b0bdc6"/><ellipse cx="13.1" cy="8" rx="1.1" ry="1.1" fill="#dfe9ef"/><path d="m13.1 8.6c-.4 0-.8-.2-1.1-.5.1.6.5 1 1.1 1 .6 0 1-.4 1.1-1-.3.3-.7.5-1.1.5" fill="#89969b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6e2.svg b/riot/emojione/svg/1f6e2.svg new file mode 100644 index 0000000..c5a60a8 --- /dev/null +++ b/riot/emojione/svg/1f6e2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m7.1 6.9h49.8v50.2h-49.8z"/><ellipse cx="32" cy="57.1" rx="26" ry="4.9"/><ellipse cx="32" cy="23.6" rx="26" ry="4.9"/><ellipse cx="32" cy="40.4" rx="26" ry="4.9"/></g><g fill="#d0d0d0"><ellipse cx="32" cy="6.9" rx="26" ry="4.9"/><path d="m7.4 22.4c3.5 1.9 13.2 4.2 24.6 4.2s21.1-2.3 24.6-4.2c-6.2.9-14.9 2.4-24.6 2.4s-18.4-1.4-24.6-2.4"/><path d="m7.4 39.3c3.5 1.9 13.2 4.2 24.6 4.2s21.1-2.3 24.6-4.2c-6.2.9-14.9 2.4-24.6 2.4s-18.4-1.5-24.6-2.4"/><path d="m7.4 55.6c3.5 1.9 13.2 4.2 24.6 4.2s21.1-2.3 24.6-4.2c-6.2.9-15 2.4-24.6 2.4s-18.4-1.5-24.6-2.4"/></g><ellipse cx="15.7" cy="6.9" rx="3.9" ry="1" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6e3.svg b/riot/emojione/svg/1f6e3.svg new file mode 100644 index 0000000..2ccec72 --- /dev/null +++ b/riot/emojione/svg/1f6e3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m0 20.4c0 0 1.9-3.7 4.6-5.5 6.4-4.2 4.8 9.1 14.5 3.3 3.8-2.2 4.7 2.9 6.9 3.4 4.7 1.2 12.3.6 12.3.6s11.2-2.4 14.8-5.2c3-2.4 5 .2 8.1-1.1 1.3-.6 2.8 0 2.8 0v15.8h-64v-11.3" fill="#699635"/><g fill="#83bf4f"><path d="m27 21c0 0-6.8.3-12.1-3.7-3.7-2.8-5.5 5.4-8.8 5.4-3.4 0-6-4.6-6-4.6v35.2l26.9-32.3"/><path d="M37,21c0,0,2.5,0.5,9.4-2.6c3.2-1.5,4.1,5.7,5.9,5.7c1.6,0,4.2-3.8,6.6-3.9c3.2-0.2,5,1.6,5,1.6v31.4L37,21z"/></g><path fill="#ffdd7d" d="m38.1 21h-12.2l-25.9 25.1v17.9h64v-17.9z"/><path fill="#666" d="m37 21h-10l-27 31.2v11.8h64v-11.8z"/><g fill="#fff"><path d="m64 58v-3.7l-27.4-33.3h-.4z"/><path d="m0 58v-3.7l27.4-33.3h.4z"/><path d="m33.8 64h-3.6l.4-11.9h2.8z"/><path d="m33.1 45.3h-2.2l.3-10h1.6z"/><path d="m32.7 32.8h-1.4l.1-4.3h1.2z"/><path d="m32.5 27.3h-1l.1-2.5h.8z"/><path d="m32.4 24.1h-.8l.1-1.5h.6z"/><path d="m32.3 22.1h-.6v-1.1h.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6e4.svg b/riot/emojione/svg/1f6e4.svg new file mode 100644 index 0000000..4828d42 --- /dev/null +++ b/riot/emojione/svg/1f6e4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m0 22.2c0 0 1.9-5.4 4.6-7.1 6.4-3.8 3.8 10.3 13.5 5 3.8-2.1 4.7 4.6 6.9 5.1 4.7 1.1 17.3.6 17.3.6s2.4-3.9 4.7-4.3c4.2-.8 3.5-6 6.9-7.6 2.3-1.1 4.2 1.3 7.3.1 1.3-.5 2.8-4 2.8-4v18.4l-64 1.5v-7.7" fill="#c7e755"/><path fill="#666" d="m37 24.7h-10l-27 29.5v9.8h64v-9.8z"/><g fill="#594640"><path d="m26.3 27.7h11.3v.3h-11.3z"/><path d="m27.4 26.4h9.2v.3h-9.2z"/><path d="m28.3 25.2h7.4v.3h-7.4z"/><path d="m23.2 31.6h17.6v.5h-17.6z"/><path d="m25 29.4h14v.5h-14z"/></g><g fill="#dbb471"><path d="m36.6 26.4l-.5-.6h-8.2l-.5.6z"/><path d="m37.7 27.7l-.7-.8h-10l-.7.8z"/><path d="m35.7 25.2l-.4-.5h-6.6l-.4.5z"/><path d="m40.8 31.6l-1-1.2h-15.6l-1 1.2z"/><path d="m39 29.4l-.8-1h-12.4l-.8 1z"/></g><g fill="#594640"><path d="m15.3 41.5h33.4v.9h-33.4z"/><path d="m18.4 37.6h27.1v.7h-27.1z"/><path d="m21.1 34.2h21.8v.7h-21.8z"/><path d="m0 60.7h64v1.8h-64z"/><path d="m6.1 53h51.8v1.5h-51.8z"/><path d="m11.4 46.4h41.2v1.5h-41.2z"/></g><g fill="#dbb471"><path d="m45.6 37.6l-1.6-1.9h-24l-1.6 1.9z"/><path d="m48.7 41.5l-2-2.4h-29.4l-2 2.4z"/><path d="m42.9 34.2l-1.2-1.5h-19.4l-1.2 1.5z"/><path d="m57.9 53l-3-3.7h-45.8l-3 3.7z"/><path d="m60.2 55.9h-56.4l-3.8 4.8h64z"/><path d="m52.6 46.4l-2.4-2.9h-36.4l-2.4 2.9z"/></g><path fill="#666" d="m11 64l19.1-39.3h-.1l-19 36.4z"/><path fill="#3e4347" d="m7 61.1h4v2.9h-4z"/><path fill="#e6e6e6" d="m29.6 24.7l-22.6 36.4h4l19-36.4z"/><path fill="#666" d="m53 64l-19.1-39.3h.1l19 36.4z"/><path fill="#e6e6e6" d="m34.4 24.7l22.6 36.4h-4l-19-36.4z"/><path fill="#3e4347" d="m52.9 61.1h4v2.9h-4z"/><g fill="#83bf4f"><path d="m27 24.7c0 0-4.7-1.8-6.7-.8-3.2 1.6-2.8-3.5-5.4-4.6-2.8-1.2-6.1 3.3-8.8 2.9-3.5-.3-6.1-6.2-6.1-6.2v38.2l27-29.5"/><path d="m37 24.7c0 0 3.9-.6 5-1.9 1-1.1 2.8-4.2 4.9-4.3 2.6-.2 5.4 2.8 6.9 2.9 1.6 0 1.1-4.5 5.1-5.4 3.2-.7 5 3.5 5 3.5v34.7l-26.9-29.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6e5.svg b/riot/emojione/svg/1f6e5.svg new file mode 100644 index 0000000..db896db --- /dev/null +++ b/riot/emojione/svg/1f6e5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#42ade2" d="m2 49.6h60v12.4h-60z"/><g fill="#3e4347"><path d="m50.3 42.5h1.1v4.8h-1.1z"/><path d="m59.2 42.5h1.1v4.8h-1.1z"/><path d="m54.7 42.5h1.1v4.8h-1.1z"/></g><path fill="#dae3ea" d="m44.7 27.7h-16.7l-5.5 9.7 27.8 8.5z"/><path fill="#3e4347" d="m43.9 42.3h17v1.2h-17z"/><path fill="#c5d0d8" d="m42.7 27.7h-6.7l2.2-9.7h2.3z"/><path fill="#dae3ea" d="m25.7 32.5h-23.7l6.3 9.2 1.7-1.4-3.6-5.3h4.4v4.8h2.2v-4.8h3.9v4.8h2.2v-4.8h6.6z"/><path d="m47.2 45.9c-.5 0-.8.5-.7 1.2v.1c.2.6.7 1.1 1.3 1.1h13.2c.5 0 1-.5 1-1.2 0-.7-.4-1.2-1-1.2h-13.8" fill="#3e4347"/><path d="m58.5 54.3c0 0-14.4 0-31 0-12.5 0-22.2-17-22.2-17h17.2c22.2 0 27.6 10.9 33.7 10.9h4.6l-2.3 6.1" fill="#f15744"/><path d="m14.6 48.7h7.9c11.4 0 18.3 2.9 23.2 5.7 3 0 5.5 0 7.6 0-5.3-2.5-12.1-10.2-30.8-10.2h-12.3c1.2 1.5 2.7 3 4.4 4.5" fill="#c94747"/><g fill="#3e4347"><path d="m28.8 29.5l-4 7.3h16.6l-2.2-7.3z"/><path d="m32.7 41c-.6 0-1.1.5-1.1 1.2v2.4c0 .7.5 1.2 1.1 1.2h2.2c.6 0 1.1-.5 1.1-1.2v-2.4c0-.7-.5-1.2-1.1-1.2h-2.2"/><path d="m26 41c-.6 0-1.1.5-1.1 1.2v2.4c0 .7.5 1.2 1.1 1.2h2.2c.6 0 1.1-.5 1.1-1.2v-2.4c0-.7-.5-1.2-1.1-1.2h-2.2"/></g><path d="m44.9 22.8c0-.7-.5-1.2-1.1-1.2h-8.9c-.6 0-1.1.5-1.1 1.2 0 .7.5 1.2 1.1 1.2h8.9c.6.1 1.1-.5 1.1-1.2" fill="#dae3ea"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6e9.svg b/riot/emojione/svg/1f6e9.svg new file mode 100644 index 0000000..191a114 --- /dev/null +++ b/riot/emojione/svg/1f6e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffce31" d="m43.4 25.1l14.4-1.7-14 5.1"/><path d="m44.4 24.5c0 0-5.2-.2-9.3 3.2v4.3c0 0 5.2 0 9.3-3.2.5-.4 1-1 1-2.1 0-1.2-.4-2.2-1-2.2" fill="#b2c1c0"/><path fill="#42ade2" d="m9.3 25.1l8.2 16.3 13.1-4.2-17.2-13.3z"/><path fill="#428bc1" d="m13.4 17.6v6.3l-4.1 1.2 2.1-6.2z"/><ellipse cx="35.1" cy="30.1" rx="1" ry="2.5" fill="#3e4347"/><path d="m50.6 17.6l-5.7 9.8c0 0-23.3 6.5-31.5 9.3-8.2 2.9-5.4 5.7-11.3 11.5-6.8 6.5 2.7 6.9 33.9-5.6 2.8-1.1 4.2-5.7 8.7-8.6 4.8-3.1 9-4.4 9-4.4l3.1-14.4-6.2 2.4" fill="#dae3ea"/><g fill="#42ade2"><path d="m51.6 10.1l-4.1 1.3 3.1 6.5 9.2 2.2 4.2-2.9-7.2-2.1z"/><path d="M21.3 46.5 59.9 53.9 64 51 37.2 39.5z"/></g><path fill="#428bc1" d="m64 43.9v7.1l-4.1 2.9 2.1-8.7z"/><path d="m8.2 39.7c-1.2 1.2-1.8 2.6-2.8 4.3.9 1.1 2.3 1.7 3.9 1.7 2.9 0 5.2-2.2 5.2-5 0 0-2.3 0-3.1 0-1.3.1-2.4-.4-3.2-1" fill="#3e4347"/><path d="m10.4 49.3l-1 .2c-.6-6.5 1.1-9.9 1.2-10l.8 1-.4-.5.4.5c-.1 0-1.6 3-1 8.8" fill="#dae3ea"/><g fill="#3e4347"><ellipse cx="21.7" cy="40.8" rx="1" ry="1.9"/><ellipse cx="25.8" cy="39.5" rx="1" ry="1.9"/><ellipse cx="29.9" cy="38.2" rx="1" ry="1.9"/></g><path fill="#ffce31" d="m51.6 30l12.4-3.3-11.9 6.7"/><path d="m51.6 29.5c0 0-5.2-.3-9.3 3.7v5c0 0 5.2 0 9.3-3.7.5-.4 1-1.1 1-2.5 0-1.4-.4-2.5-1-2.5" fill="#b2c1c0"/><ellipse cx="42.3" cy="35.8" rx="1" ry="2.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6eb.svg b/riot/emojione/svg/1f6eb.svg new file mode 100644 index 0000000..5220fb3 --- /dev/null +++ b/riot/emojione/svg/1f6eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32.9 11c0 0-2.5-1.2-4.6-2.1-2-.9-2.6-2.1-1.1-2.6 1.4-.5 4.7-.7 7.3-.6 1.1.1 4.6.3 4.6.3 2.6.1 2.8 1 .4 1.8l-6.6 3.2" fill="#42ade2"/><path d="M8.3,20.4c0,0-2.6,1-2.8,2.2C5.2,23.6,4.3,37.3,62.2,5c3.4-1.9,1.7-4-3-4.5C45-1.1,48.5,0,8.3,20.4z" fill="#dae3ea"/><path d="m21.1 13.8c0 0-12.8-3.8-17-5.2-2.7-.9-4 2.1-4 2.1s5 12.2 5.5 11.9l15.4-7.9c.5-.3.5-.7.1-.9" fill="#42ade2"/><path d="m34.8 25.5c0 0-10.4.9-17.5 8.1-.4.4-1.2 1.5.1 2.1 2.5.7 8.4 1.3 18.4-3.5l-1-6.7" fill="#c5d0d8"/><path d="m35.9 32.1c-.9.3-1.9-.9-2.4-2.7-.4-1.8-.1-3.5.8-3.8.9-.3 1.9.9 2.4 2.7.4 1.8.1 3.5-.8 3.8" fill="#94989b"/><path d="m33.3 15.2c-2.5 1.1-3.7 1.7-5.1 4l-10.4 15.6c-1.4 2.3-.4 3.4 2.2 2.6 2.6-.9 6.2-3.2 7.9-5.3l16.5-19.6c1.7-2.1 1.1-2.8-1.4-1.7l-9.7 4.4" fill="#42ade2"/><g fill="#3e4347"><path d="m35.1 29.6c-.3-1.3-.9-2.3-1.6-2.6-.1.7-.1 1.5.1 2.4.3 1.3.9 2.3 1.6 2.6.1-.7.1-1.5-.1-2.4"/><path d="m54.4.7c-.5.8-3.2 3.1-3.2 3.1s.5.9 2.1.4c1.3-.4 2.6-1.6 3.3-3l-2.2-.5"/><circle cx="21.3" cy="17.4" r="1"/><circle cx="24.9" cy="15.6" r="1"/><circle cx="28.5" cy="13.7" r="1"/><circle cx="32.2" cy="11.8" r="1"/><circle cx="35.8" cy="9.9" r="1"/><circle cx="39.4" cy="8.1" r="1"/><circle cx="43" cy="6.2" r="1"/></g><ellipse cx="32" cy="61.5" rx="24.6" ry="2.5" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6ec.svg b/riot/emojione/svg/1f6ec.svg new file mode 100644 index 0000000..c170f90 --- /dev/null +++ b/riot/emojione/svg/1f6ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m30.6 26.3c.7 1 .5 2.3-.3 2.8-.8.5-2 .1-2.6-.9-.7-1-.5-2.3.2-2.8.9-.5 2-.1 2.7.9" fill="#3e4347"/><path d="m30.7 17.3c0 0-1.4-2.1-2.5-3.9-1.1-1.7-1-2.9.3-2.5 1.3.3 4 1.7 5.9 3.1.9.6 3.5 2.5 3.5 2.5 1.9 1.4 1.7 2.1-.6 1.6l-6.6-.8" fill="#42ade2"/><g fill="#3e4347"><path d="m34.5 26.7c.7 1 .5 2.3-.3 2.8-.8.5-2 .1-2.6-.9-.7-1-.5-2.3.3-2.8.7-.5 1.9-.1 2.6.9"/><path d="m55.5 29.2c.7 1 .5 2.3-.3 2.8-.8.5-2 .1-2.6-.9-.7-1-.5-2.3.2-2.8.9-.5 2.1-.1 2.7.9"/></g><path d="m54.9 30c-.2-2.2-.3-4.4-.5-6.6-.1-1.1-1.8-.9-1.7.2.2 2.2.3 4.4.5 6.6.1 1.1 1.8 1 1.7-.2" fill="#94989b"/><path d="m3.8 12.3c0 0-2.7-1.3-3.4 0-1.8 3.3.8 11.9 61.1 15.2 3.6.2 3.2-2.3-.2-5-10.2-8.2 4.3-4.9-57.5-10.2" fill="#dae3ea"/><path d="m57.5 20.3c-.7.4-4 .8-4 .8s0 .9 1.4 1.3c1.2.4 2.8 0 4-.7l-1.4-1.4" fill="#3e4347"/><path d="m16.8 13.4c0 0-8.1-9.2-10.7-12.4-1.6-2-4.1-.4-4.1-.4s-2.1 11.7-1.6 11.8l15.9 1.6c.5.1.7-.2.5-.6" fill="#42ade2"/><path d="m38.3 27c.7 1 .5 2.3-.3 2.8-.8.5-2 .1-2.6-.9-.7-1-.5-2.3.3-2.8.8-.5 2-.1 2.6.9" fill="#3e4347"/><path d="m37.2 27.6c-1.9-1.7-3.8-3.5-5.8-5.2-.2-.2-.6-.1-.7.2-.7 1.5-1.3 3-2 4.5 0 .1 0 .2 0 .3 0 .2.1.3.3.3 2.6.2 5.2.5 7.7.7.6 0 .8-.5.5-.8" fill="#94989b"/><path d="m25.2 29.5c0 0-8.5-4.4-17.5-2.3-.5.1-1.7.6-1 1.7 1.6 1.8 5.9 5.1 15.9 6.3l2.6-5.7" fill="#c5d0d8"/><path d="m23 35.1c-.8-.2-1.1-1.6-.5-3.2.5-1.6 1.6-2.7 2.4-2.5.8.2 1.1 1.6.5 3.2-.5 1.6-1.6 2.7-2.4 2.5" fill="#94989b"/><path d="m23.5 32.8c.4-1.1.4-2.2 0-2.8-.4.5-.8 1.1-1.1 1.9-.4 1.1-.4 2.2 0 2.8.4-.5.8-1.1 1.1-1.9" fill="#3e4347"/><path d="m29 20.7c-2.5-.4-3.7-.5-5.9.6l-15.5 7c-2.2 1.1-2 2.5.5 3.1 2.4.6 6.4.5 8.7-.2l22.2-7.1c2.3-.7 2.2-1.7-.3-2l-9.7-1.4" fill="#42ade2"/><g fill="#3e4347"><circle cx="19.3" cy="17.4" r=".9"/><path d="m23.1 16.9c-.5 0-.9.3-.9.8 0 .5.3.9.8.9.5 0 .9-.3.9-.8 0-.5-.4-.9-.8-.9"/><circle cx="26.7" cy="18" r=".9"/><circle cx="30.4" cy="18.3" r=".9"/><circle cx="34.1" cy="18.6" r=".9"/><circle cx="37.8" cy="18.9" r=".9"/><path d="m41.6 18.4c-.5 0-.9.3-.9.8 0 .5.3.9.8.9.5 0 .9-.3.9-.8 0-.5-.3-.9-.8-.9"/><circle cx="45.2" cy="19.5" r=".9"/></g><ellipse cx="31.3" cy="61.5" rx="24.6" ry="2.5" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6f0.svg b/riot/emojione/svg/1f6f0.svg new file mode 100644 index 0000000..1d11f7a --- /dev/null +++ b/riot/emojione/svg/1f6f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="m24.4 24.4c3.2-3.2 3.2-8.4 0-11.6l-11.6 11.6c3.2 3.2 8.4 3.2 11.6 0" fill="#d0d0d0"/><path d="m27 27c-4.3 4.3-4.3 4.3-6 2.6-1.7-1.7-1.7-1.7 2.6-6 4.3-4.3 4.3-4.3 6-2.6 1.7 1.7 1.7 1.7-2.6 6" fill="#94989b"/><path d="m37.2 37.2c-4.3 4.3-4.3 4.3-6 2.6-.4-.4-6.6-6.6-6.9-6.9-1.7-1.7-1.7-1.7 2.6-6 4.3-4.3 4.3-4.3 6-2.6.4.4 6.6 6.6 6.9 6.9 1.7 1.7 1.7 1.7-2.6 6" fill="#7f8285"/><path d="m39.6 39.6c-3.2 3.2-3.2 3.2-4.5 1.9-1.3-1.3-1.3-1.3 1.9-4.5 3.2-3.2 3.2-3.2 4.5-1.9 1.3 1.2 1.3 1.2-1.9 4.5" fill="#646669"/><path d="m22.2 15l-7.1-1.3c0-.3-.1-.5-.3-.7-.4-.4-1.2-.4-1.6 0-.4.4-.4 1.2 0 1.6.2.2.4.3.6.3l1.4 7.2.8-.8h-.2l-1.2-6.5c.1-.1.2-.1.3-.2.1-.1.1-.1.1-.2l6.5 1.2v.2l.7-.8" fill="#94989b"/><g fill="#3e4347"><path transform="matrix(.7073-.7069.7069.7073-18.2947 29.8994)" d="m25.9 36.4h2.1v1.3h-2.1z"/><path transform="matrix(.7071-.7071.7071.7071-8.1867 34.0994)" d="m36 26.3h2.1v1.3h-2.1z"/></g><path d="m31.1 42.6c.2.2.2.5 0 .7l-18.6 18.6c-.2.2-.5.2-.7 0l-9.7-9.7c-.1-.2-.1-.5 0-.7l18.6-18.6c.2-.2.5-.2.7 0l9.7 9.7" fill="#428bc1" id="0"/><use xlink:href="#0"/><path d="m61.9 11.9c.2.2.2.5 0 .7l-18.6 18.5c-.2.2-.5.2-.7 0l-9.7-9.7c-.2-.2-.2-.5 0-.7l18.6-18.6c.2-.1.5-.1.6 0l9.8 9.8" fill="#428bc1"/><g fill="#42ade2"><path d="m3.3 51.8l.7.7h16.4l5.1-5.1h-17.8z"/><path d="m29.2 42.3h-16.4l-2.5 2.6h17.7l1.9-1.9z"/><path d="m34.1 21l.7.7h16.4l5.1-5.1h-17.8z"/><path d="m60 11.5h-16.4l-2.5 2.6h17.7l1.9-1.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6f3.svg b/riot/emojione/svg/1f6f3.svg new file mode 100644 index 0000000..81b10ac --- /dev/null +++ b/riot/emojione/svg/1f6f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#e8e8e8"><path d="m41.4 2c-.7 0-1.3.2-1.9.5-.6-.3-1.2-.5-1.9-.5-3.4 0-3.8 2.6-3.8 2.6-1.6 0-2.8 1.3-2.8 2.8 0 1.6 1.3 2.8 2.8 2.8.9 0 1.7-.4 2.2-1.1.5.2 1 .3 1.5.3.7 0 1.3-.2 1.9-.5.6.3 1.2.5 1.9.5 2.1 0 3.8-1.7 3.8-3.7 0-2-1.7-3.7-3.7-3.7"/><path d="m51.7 11.9c-.7 0-1.3.2-1.9.5-.6-.3-1.2-.5-1.9-.5-3.4 0-3.8 2.7-3.8 2.7-1.6 0-2.8 1.3-2.8 2.8 0 1.6 1.3 2.8 2.8 2.8.9 0 1.7-.4 2.2-1.1.5.2 1 .3 1.5.3.7 0 1.3-.2 1.9-.5.6.3 1.2.5 1.9.5 2.1 0 3.8-1.7 3.8-3.7 0-2.1-1.6-3.8-3.7-3.8"/></g><g fill="#fff"><path d="m40.4 18.5v30.3h7.5v-30.3c-2.2-2.2-5.2-1.8-7.5 0"/><path d="m29.2 8.2v30.3h7.5v-30.3c-2.3-2.2-5.3-1.8-7.5 0"/></g><path d="m29.2 10.1v30.3h7.5v-30.3c-2.3-2.2-5.3-1.9-7.5 0" fill="#ed4c5c"/><path d="m29.2 11.9v30.3h7.5v-30.3c-2.3-2.2-5.3-1.8-7.5 0" fill="#fff"/><path d="m40.4 20.3v30.3h7.5v-30.3c-2.2-2.1-5.2-1.8-7.5 0" fill="#ed4c5c"/><path d="m40.4 22.2v30.3h7.5v-30.3c-2.2-2.2-5.2-1.8-7.5 0" fill="#fff"/><g fill="#94989b"><path d="m58.7 47.8h-47.8v-24.3l1.9-1.9v-2.7l1.9-1v-2l7.5-3.4 15 2.6 21.5 20.1z"/><path d="m35.2 15.1v3.7l-1.8.4v3.4l-1.9-.2v3.9h-1.8v4.4l29 15.1v-10.6l-21.5-20.1z"/></g><path d="m8.6 24.5c0 0-5.1 1.8-6.6 6.5 0 0 1.6 5.7 6.1 12.6 4.5 6.9 7 16.4 7 16.4v-28.3l-6.5-7.2" fill="#fff"/><g fill="#3e4347"><path d="m28.2 27.3v2l-4.9-2.1z"/><path d="m30.1 23.5v1.7l-13.6-1.7z"/><path d="m32 19.8v1.7l-13.6-1.7z"/><path d="m33.9 16v1.7l-13.6-1.7z"/></g><path fill="#fff" d="m14.7 14.2v1.8l7.5-1.8v-1.9z"/><path fill="#e8e8e8" d="m22.2 12.3v1.9l15 1.8v-1.8z"/><path fill="#d0d0d0" d="m37.2 16v-1.8l21.5 21v.5z"/><path fill="#fff" d="m12.8 17.9v1.9l7.5-1.9v-1.9z"/><path fill="#e8e8e8" d="m20.3 16v1.9l15 1.9v-1.9z"/><path fill="#d0d0d0" d="m35.3 19.8v-1.9l23.4 20.1v.5z"/><path fill="#fff" d="m10.9 21.6v1.9l7.5-1.9v-1.8z"/><path fill="#e8e8e8" d="m18.4 19.8v1.8l15 1.9v-1.9z"/><path fill="#d0d0d0" d="m33.4 23.5v-1.9l25.3 19.2v.5z"/><path fill="#fff" d="m9 25.4v1.9l7.5-1.9v-1.9z"/><path fill="#e8e8e8" d="m16.5 23.5v1.9l15 1.9v-1.9z"/><path fill="#d0d0d0" d="m31.5 27.3v-1.9l27.2 18.2v.5z"/><g fill="#3e4347"><path d="m57.8 36.9v-.9l-21.6-19.1v1.5z"/><path d="m57.7 39.6v-.9l-23.4-18.2v1.4z"/><path d="m57.8 42.6v-.8l-25.3-17.7v1.4z"/><path d="m30.6 28.3v1.2l27.2 15.6v-.8z"/></g><path d="m8.6 24.5c0 0-1.1 7.9 2.1 17 4.4 12.6 4.2 18.5 4.2 18.5h41.7c0 0 .2-2.8 2.8-6.4 2.6-3.6 2.6-5.8 2.6-5.8s-40.9-26.4-53.4-23.3" fill="#d0d0d0"/><path fill="#3e4347" d="m58.3 46.8l-30.9-15.2v2.8l30.9 14z"/><g fill="#e8e8e8"><path d="m56.6 44.6v2.5h.5v-2.5z"/><path d="m50 40.7v3.1h.5v-3.1z"/><path d="m43 36.6v4.4h.5v-4.4z"/><path d="m35 32.6v5.4h.4v-5.4z"/></g><g fill="#ed4c5c"><path d="m57.2 47.1c.4.6-.5.7-1.9.4-1.4-.4-2.9-1.1-3.3-1.7-.4-.6.5-.7 1.9-.4 1.4.4 2.9 1.1 3.3 1.7"/><path d="m50.7 44.1c.4.7-.5.9-2.1.6-1.6-.4-3.2-1.3-3.6-1.9-.4-.7.5-.9 2.1-.6 1.6.4 3.2 1.2 3.6 1.9"/><path d="m43.6 40.8c.5.7-.5 1-2.2.6-1.7-.3-3.5-1.2-3.9-1.8-.5-.7.5-1 2.2-.6 1.6.3 3.4 1.2 3.9 1.8"/><path d="m35.8 37.6c.6.8-.5 1.2-2.5.8-2-.3-4-1.2-4.6-2-.6-.8.5-1.2 2.5-.8 1.9.3 4 1.2 4.6 2"/></g><g fill="#e8e8e8"><path d="m29 29.6v6.4h.4v-6.4z"/><path d="m37.5 34v5.2h.4v-5.2z"/><path d="m45.3 37.9v4.5h.5v-4.5z"/><path d="m52.2 42v3.4h.5v-3.4z"/></g><g fill="#94989b"><path d="m5.4 15.9c0 0-.1-1.3 1.8-1.8 0 0 .6-1.6 2.8-1.5 0 0-2.3.9-2.1 2.3-.1 0-1.7-.4-2.5 1"/><path d="m5.8 6.9c0 0 .6-1.1 2.4-.5 0 0 1.4-1.1 3.2.3 0 0-2.4-.5-3 .7-.1 0-1.2-1.2-2.6-.5"/></g><path fill="#75d6ff" d="m2 56h60v6h-60z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6f4.svg b/riot/emojione/svg/1f6f4.svg new file mode 100644 index 0000000..a0f4a49 --- /dev/null +++ b/riot/emojione/svg/1f6f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><ellipse cx="9.5" cy="7" rx="2.3" ry="4"/><path d="m2.9 5h4.7v4h-4.7z"/><ellipse cx="2.9" cy="7" rx=".9" ry="2"/></g><ellipse cx="9.5" cy="7" rx=".9" ry="2" fill="#83bf4f"/><ellipse cx="55.4" cy="54" rx="6.6" ry="7" fill="#3e4347"/><path fill="#83bf4f" d="m9.5 5h13.1v4h-13.1z"/><g fill="#3e4347"><ellipse cx="21.7" cy="7" rx="2.3" ry="4"/><path d="m22.6 5h6.6v4h-6.6z"/></g><ellipse cx="29.2" cy="7" rx="1.4" ry="2" fill="#94989b"/><path d="m28.3 52c0 0-1.7-8-9.4-8-2.7 0-4.4-1.8-5.2-3.1-.4-.7-1.7-2.9-1.7-2.9l-3.2 2 9 16h37.6v-4c0 0-16.3 0-27.1 0" fill="#83bf4f"/><path d="m58.7 54c0 1.9-1.5 3.5-3.3 3.5s-3.3-1.6-3.3-3.5 1.5-3.5 3.3-3.5 3.3 1.6 3.3 3.5" fill="#d0d0d0"/><path d="m55.4 46.5c3.1 0 5.6-.5 5.6-1.1-1.6-1.2-3.5-1.9-5.6-1.9-5.4 0-9.8 4.7-9.8 10.5h2.8c0-4.1 3.2-7.5 7-7.5" fill="#83bf4f"/><ellipse cx="55.4" cy="54" rx="2.2" ry="2.3" fill="#fff"/><path d="m13.7 40.9c-.4-.7-1.7-2.9-1.7-2.9l-1.4.9-.6 3.5 2.9 5.2 1-6.1c0-.3-.1-.4-.2-.6" opacity=".5" fill="#3e4347"/><path d="m57.8 44.8c0 .3-3.4-.7-6.7 1.4-3.3 2-4.3 5.9-4.5 5.8-.3.1.4-4.4 4-6.7 3.7-2.4 7.4-.8 7.2-.5" fill="#c7e755"/><g fill="#3e4347"><path d="m6.6 47.2c.3-.1.6-.2.9-.2l.1-.8c.2-1.2.4-1.7 1.2-1.8s-1.5-.1-2.2 2.8" opacity=".5"/><path d="m9.5 47h-1.9c-2.6 0-4.7 3.1-4.7 7s2.1 7 4.7 7h1.9c2.6 0 4.7-3.1 4.7-7s-2.1-7-4.7-7"/></g><path d="m11.8 54c0 1.9-1 3.5-2.3 3.5s-2.3-1.6-2.3-3.5 1-3.5 2.3-3.5 2.3 1.6 2.3 3.5" fill="#d0d0d0"/><ellipse cx="9.5" cy="54" rx="1.6" ry="2.3" fill="#fff"/><g opacity=".25"><path d="m5 54c0 3.9 2.7 6.3 2.8 6 .2-.2-2-2.5-1.9-6-.1-3.5 2.1-5.8 1.9-6-.1-.3-2.8 2.1-2.8 6" fill="#fff"/></g><path d="m11.4 42.1l6-37.1h-3.8l-5.8 36.6c-1.4.6-2.2 2.1-2.5 4.1l-.5 2.8c.7-.9 1.7-1.5 2.7-1.5l.1-.8c.2-1.4.5-2 1.8-1.7.5.1.5 1.2.2 2.6l-1.1 6.5c0 0 0 0 0 0-.1.7.3 1.4 1 1.5.7.1 1.3-.4 1.4-1.1l1.1-6.5c.6-2.2.7-4.4-.6-5.4" fill="#83bf4f"/><g fill="#c7e755"><path d="m9.9 43.6c.8-.3 1.6.8.9 4.5s-.9 2.7-.3-1.8c.4-2.7-1.1-2.5-.6-2.7"/><path d="m11.8 25.6c-1.5 8.9-2.8 16.1-3.1 16.1-.2 0 .8-7.3 2.3-16.2 1.5-8.9 2.8-16.1 3.1-16.1.2 0-.9 7.3-2.3 16.2"/><ellipse cx="14.2" cy="6.2" rx="4.7" ry=".5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6f5.svg b/riot/emojione/svg/1f6f5.svg new file mode 100644 index 0000000..7d7f738 --- /dev/null +++ b/riot/emojione/svg/1f6f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="52" cy="54.5" r="7.5" fill="#3e4347"/><circle cx="52" cy="54.3" r="3.8" fill="#94989b"/><circle cx="10.5" cy="54.5" r="7.5" fill="#3e4347"/><circle cx="10.5" cy="54.5" r="3.8" fill="#94989b"/><path d="m53 36.9h-21.4c0 0 5.3 2.3 5.3 7.2 0 2.7-2.4 4.8-5.3 4.8h-9.7c-1.7 0-3.1-5.3-3.1-11.9 0-6.8 2.7-10.4 2.7-10.4v-2.1c0-.7-.4-1.3-.9-1.3-.7-.1-1.5-.5-1.7-1.4-.5-1.8-1.7-1.8-2.5-1.8-1.4 0-1.4 0-1.4 0v6.6h3.4c0 0-7.9 10.4-7.9 15.6 0 .8.8 2 .8 2-.3 0-.5 0-.8 0-3.4 0-6.8 1.9-8.4 4.8-.8 1.4 5.9.6 8.4 1.9 2.1 1.1 3 2.9 6.5 2.9.8 0 1.4 0 1.8 0 0 0 0 0 1.1 0 .1 0 .2 0 .4 0 1.3 0 1.8 1 3.2 1h38.5c0-11.3-9-17.9-9-17.9" fill="#f2b200"/><g fill="#d0d0d0"><path d="m14 20h.9v6.6h-.9z"/><path d="m13.1 23.3c0 1.3.4 2.3.9 2.3v-4.7c-.5 0-.9 1.1-.9 2.4"/></g><g fill="#94989b"><path d="m14 20v6.6h.9c0 0-.9-3.3-.9-6.6"/><path d="m14 25.6v-1.2c-.7-.3-.9-1.1-.9-1.1 0 1.3.4 2.3.9 2.3"/></g><g fill="#3e4347"><circle cx="20.8" cy="24.6" r="1"/><path d="m23.3 25c-.1-.1-.2-.2-.3-.3l-2-.8c-.4-.1-.8.1-.9.5-.1.4.1.8.5.9l1.7.7c.2.1.4.1.6 0 .4-.2.5-.6.4-1"/></g><circle cx="22.6" cy="25.4" r=".6" fill="#94989b"/><path d="m55.8 31.3c0-1-.8-1.9-1.9-1.8l-22.5.8c-1 0-1.9.9-1.9 2v2.7c0 1 .8 1.9 1.9 1.9h22.5c1 0 1.9-.9 1.9-1.9v-3.7" fill="#3e4347"/><path d="m30.5 32.1l24.3-.8c0-.5-.4-.9-.9-.9l-22.5.8c-.5 0-.9.4-.9.9" fill="#94989b"/><path d="m57.8 43.9c-1-.8-2.1-1.5-3.2-2-1.1-.6-2.3-1.1-3.5-1.4-1.2-.3-2.4-.6-3.7-.7-1.2-.1-2.5 0-3.6.3-2.3.6-4.3 2.4-5.2 4.7-.9 2.3-.6 4.9.3 7.3-.7-1.1-1.1-2.3-1.3-3.6-.2-1.3-.1-2.6.3-3.9.4-1.3 1.1-2.5 2.1-3.4 1-.9 2.2-1.6 3.5-1.9 1.3-.4 2.7-.4 3.9-.3 1.3.1 2.6.4 3.8.9 2.6.8 4.9 2.2 6.6 4" fill="#89664c"/><path d="m58.6 45.2c-1-.7-2-1.3-3.1-1.8-1.1-.5-2.2-.9-3.3-1.2-1.1-.3-2.3-.5-3.5-.6-1.2-.1-2.3-.1-3.4.2-2.3.4-4.3 1.8-5.3 3.8-1 2.1-.8 4.6.2 6.8-.7-1-1.1-2.2-1.3-3.4-.2-1.2 0-2.5.4-3.7.5-1.2 1.3-2.2 2.3-3 1-.8 2.2-1.3 3.4-1.5 1.2-.2 2.5-.2 3.7-.1 1.2.1 2.4.4 3.6.8 2.4.8 4.5 2 6.3 3.7" fill="#ffce31"/><g fill="#d0d0d0"><circle cx="8" cy="54.5" r=".5"/><circle cx="8.7" cy="56.3" r=".5"/><circle cx="10.5" cy="57" r=".5"/><circle cx="12.3" cy="56.3" r=".5"/><circle cx="13" cy="54.5" r=".5"/><circle cx="12.3" cy="52.7" r=".5"/><circle cx="10.5" cy="52" r=".5"/><circle cx="8.7" cy="52.7" r=".5"/></g><path d="m19.2 51.6c-.5-1.4-1.2-2.6-2.1-3.6-1-1-2.2-1.7-3.5-2.1-1.3-.4-2.7-.3-4 0-1.3.4-2.6 1-3.7 2 .8-1.2 2-2.2 3.5-2.7 1.4-.5 3-.6 4.5-.2 1.5.4 2.8 1.3 3.8 2.5.9 1.2 1.4 2.6 1.5 4.1" fill="#ffce31"/><g fill="#d0d0d0"><circle cx="10.5" cy="54.5" r=".9"/><circle cx="50.2" cy="56.1" r=".5"/><circle cx="52" cy="56.8" r=".5"/><circle cx="53.8" cy="56.1" r=".5"/><path d="m51.2 54.7c.2.3.5.5.8.5s.7-.2.8-.5h-1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f6f6.svg b/riot/emojione/svg/1f6f6.svg new file mode 100644 index 0000000..3d86164 --- /dev/null +++ b/riot/emojione/svg/1f6f6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m6.1 38.9c0 0-5.5 10.6-3.7 20.1 1.8 9.5 23.4-5.3 39.6-20.1 16.2-14.8 21.3-22 19.8-36.7 0 0 1.5 17.5-21.6 30.1-23.2 12.5-32.3 9.1-34.1 6.6" fill="#eda454"/><path d="m40.2 32.3c15.8-8.7 20.1-19.6 21.2-25.6.4-2.5.4-4.2.4-4.5 0-1.5-5.6 7.2-12.4 11.5-6.8 4.3-30.6 22.2-34.3 25.2-3.7 3-9 0-9 0 1.8 2.5 10.9 5.9 34.1-6.6" fill="#f9b978"/><g fill="#3e4347"><path d="m32.4 27.2c-7.5 5.6-14.8 11.1-16.7 12.6-.1.1-.2.2-.4.3 4.8-.4 12.6-2.4 24.4-8.8 2.4-1.3 4.5-2.7 6.4-4.1h-13.7"/><path d="m60.1 5.1c-2.3 2.6-6 6.9-10.3 9.6-2.5 1.6-7.5 5.1-12.9 9.1h13.2c7.1-6.6 9.4-13.3 10.1-17.4.1-.7.2-1.3.2-1.9.1.2-.1.4-.3.6"/><path d="m26.1 35.2c.6 1.2 2.2 8.6 4.2 12.6.1.2.2.4.3.6 1.5-1.1 3-2.3 4.5-3.5 0-.1-.1-.2-.1-.2-1.9-3.8-6.8-9.3-7.4-10.5-.6-1.2-1.1-2.4-1.7-3.5-.5.4-1.1.8-1.6 1.2.6 1 1.2 2.1 1.8 3.3" opacity=".5"/></g><path d="m27.9 31.2c-13.5-27-13.5-27-13.5-27 .5-.3.7-1.1.4-1.6-.3-.6-.9-.8-1.4-.4l-1.8 1.2c-.6.3-.7 1-.5 1.6.3.6.9.8 1.4.4 0 0-.5-1 13.5 27 .7 1.4 2.6 10 4.9 14.6 3.2 6.3 6.9 13.7 6.9 13.7.6 1.2 1.9 1.6 2.9.9l1.8-1.2c1-.7 1.3-2.2.8-3.3 0 0-3.7-7.4-6.9-13.7-2.2-4.4-7.8-10.8-8.5-12.2" fill="#a87d5d"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f910.svg b/riot/emojione/svg/1f910.svg new file mode 100644 index 0000000..51851ff --- /dev/null +++ b/riot/emojione/svg/1f910.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#696a6b"><path d="m47.9 43.9l-4 4c-.2.2-.2.4 0 .6l9.6 11.4c.1.1.4.2.5 0l5.9-5.9c.2-.2.2-.4 0-.6l-11.4-9.6c-.2-.1-.4-.1-.6.1m9.8 9.7c.1.1.1.4 0 .5l-3.7 3.6c-.1.1-.4.1-.5 0l-3.2-3.7 3.6-3.6 3.8 3.2"/><path d="m47.6 42h-3.2c-.2 0-.4.2-.4.4v2c0-.2-.2-.4-.4-.4h-3.2c-.2 0-.4.2-.4.4v-2c0-.2-.2-.4-.4-.4h-3.2c-.2 0-.4.2-.4.4v2c0-.2-.2-.4-.4-.4h-3.2c-.2 0-.4.2-.4.4v-2c0-.2-.2-.4-.4-.4h-3.2c-.2 0-.4.2-.4.4v2c0-.2-.2-.4-.4-.4h-3.2c-.2 0-.4.2-.4.4v-2c0-.2-.2-.4-.4-.4h-3.2c-.2 0-.4.2-.4.4v2c0-.2-.2-.4-.4-.4h-3.2c-.2 0-.4.2-.4.4v5.3c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v-2c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v2c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v-2c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v2c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v-2c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v2c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v-2c0 .2.2.4.4.4h3.2c.2 0 .4-.2.4-.4v-5.3c0-.2-.2-.4-.4-.4"/></g><g fill="#664e27"><circle cx="20.5" cy="29" r="5"/><circle cx="43.5" cy="29" r="5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f911.svg b/riot/emojione/svg/1f911.svg new file mode 100644 index 0000000..19404ab --- /dev/null +++ b/riot/emojione/svg/1f911.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><path d="m19 20.8c0-2.4 5.3-1.3 7 .4 1-1.7.5-3.2.5-3.2s-1.5-1.1-3.8-1.5v-2.2c-1.8-.6-3.8 0-3.8 0v2.1c0 0-3.6.7-3.6 4.4 0 4.9 7.4 3.9 7.4 7 0 2.3-5 1.3-7.4-.5-.8 1.8 0 3.4 0 3.4 1.8.8 3.6 1 3.6 1v2c0 0 2 .6 3.8 0v-2.1c0 0 4.2-.2 4.2-3.8.1-4.7-7.9-4.3-7.9-7"/><path d="m41 20.8c0-2.4 5.3-1.3 7 .4 1-1.7.5-3.2.5-3.2s-1.5-1.1-3.8-1.5v-2.2c-1.8-.6-3.8 0-3.8 0v2.1c0 0-3.6.7-3.6 4.4 0 4.9 7.4 3.9 7.4 7 0 2.3-5 1.3-7.4-.5-.8 1.8 0 3.4 0 3.4 1.8.8 3.6 1 3.6 1v2c0 0 2 .6 3.8 0v-2.1c0 0 4.2-.2 4.2-3.8.1-4.7-7.9-4.3-7.9-7"/><path d="m47.9 38c-3.3 0-9.7 0-15.9 0-6.2 0-12.6 0-15.9 0-.7 0-1.1.5-1.1 1 0 7.3 6 15 17 15 11 0 17-7.7 17-15 0-.5-.4-1-1.1-1"/></g><path d="m41.2 44c-2.3 0-9.2 0-9.2 0s-6.9 0-9.2 0c-.7 0-.8.3-.8.8 0 .9 0 2.4 0 4 0 8.8 4.5 13.2 10 13.2 5.5 0 10-4.4 10-13.2 0-1.6 0-3.1 0-4 0-.5-.1-.8-.8-.8" fill="#74e063"/><g fill="#449636"><path d="m30.7 49.5c0-1.6 3.3-.8 4.4.3.7-1.1.3-2.1.3-2.1s-1-.7-2.4-1v-1.5c-1.1-.4-2.4 0-2.4 0v1.4c0 0-2.3.4-2.3 2.9 0 3.2 4.7 2.5 4.7 4.6 0 1.5-3.1.9-4.7-.3-.5 1.2 0 2.2 0 2.2 1.1.5 2.3.7 2.3.7v1.3c0 0 1.2.4 2.4 0v-1.4c0 0 2.6-.2 2.6-2.5.2-3.1-4.9-2.8-4.9-4.6"/><path d="m39.6 44v3.5c0 8.3-3 12-7.6 12-4.6 0-7.6-3.6-7.6-12v-3.5h-.8v3.5c0 8.9 3.3 12.9 8.4 12.9 5.1 0 8.4-4 8.4-12.9v-3.5h-.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f912.svg b/riot/emojione/svg/1f912.svg new file mode 100644 index 0000000..2b9d9b0 --- /dev/null +++ b/riot/emojione/svg/1f912.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="43.5" cy="30.3" r="5"/><circle cx="20.5" cy="30.3" r="5"/></g><g fill="#917524"><path d="m25.6 15.2c-3.2 2.7-7.5 3.9-11.7 3.1-.6-.1-1.1 2-.4 2.2 4.8.9 9.8-.5 13.5-3.6.5-.5-1-2.1-1.4-1.7"/><path d="m50.1 18.2c-4.2.7-8.5-.4-11.7-3.1-.4-.4-2 1.2-1.4 1.7 3.7 3.2 8.7 4.5 13.5 3.6.7-.2.2-2.3-.4-2.2"/></g><path d="m4.4 38.7l24.2 14.2 4.6-6.5-21.4-18.1c-6.4-4.5-13.7 5.9-7.4 10.4" fill="#e5e5e5"/><path d="m5.8 36.5l23.8 15 2.8-3.9-22.2-17.3c-3.7-2.6-8.1 3.6-4.4 6.2" fill="#fff"/><path fill="#ed4c5c" d="m7.5 36.2l22.1 14.4 1.9-2.6-21.1-16z"/><ellipse transform="matrix(.5763-.8172.8172.5763-24.0655 21.7566)" cx="9" cy="34.1" rx="2.6" ry=".9" fill="#a5203c"/><g fill="#51575b"><path d="m18.1 41.5l-2 2.8-.9-.5 2-2.9z"/><path d="m20.5 43.2l-1.9 2.7-.9-.5 1.9-2.8z"/><path d="m23 44.9l-1.9 2.6-.8-.5 1.8-2.6z"/><path d="m25.4 46.6l-1.6 2.4-.9-.6 1.7-2.3z"/><path d="m27.9 48.3l-1.5 2.2-.9-.6 1.5-2.1z"/></g><path d="m41.5 43.9c-6 .3-11.6 3.3-15.2 8-.9 1.2 2.2 3.5 3.1 2.3 2.4-3.1 6.8-6.2 12.3-6.5 1.4 0 1.3-3.8-.2-3.8" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f913.svg b/riot/emojione/svg/1f913.svg new file mode 100644 index 0000000..1dc83d7 --- /dev/null +++ b/riot/emojione/svg/1f913.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#fff"><circle cx="17" cy="30" r="11"/><circle cx="47" cy="30" r="11"/></g><g fill="#494949"><path d="m36 27c-1.8-1.3-6.2-1.3-8 0-1.1-1-.9-2.1-2-3.1 3.1-2.3 8.4-2.7 12 0-1.1 1-.9 2.1-2 3.1"/><path d="m47 17c-7.2 0-13 5.8-13 13s5.8 13 13 13 13-5.8 13-13-5.8-13-13-13m0 23c-5.5 0-10-4.5-10-10 0-5.5 4.5-10 10-10s10 4.5 10 10c0 5.5-4.5 10-10 10"/><path d="m17 17c-7.2 0-13 5.8-13 13 0 7.2 5.8 13 13 13 7.2 0 13-5.8 13-13s-5.8-13-13-13m0 23c-5.5 0-10-4.5-10-10 0-5.5 4.5-10 10-10s10 4.5 10 10c0 5.5-4.5 10-10 10"/></g><g fill="#664e27"><ellipse cx="20" cy="30.5" rx="4" ry="5"/><ellipse cx="44" cy="30.5" rx="4" ry="5"/><path d="m26.7 51.3c5.8 1.5 12 .4 16.9-3 1.2-.9-1.1-4-2.3-3.2-3.2 2.3-8.4 3.8-13.7 2.4-1.3-.3-2.4 3.4-.9 3.8"/></g><g fill="#917524"><path d="m53.2 15.7c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m22.5 12.4c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.2.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f914.svg b/riot/emojione/svg/1f914.svg new file mode 100644 index 0000000..3b5fe13 --- /dev/null +++ b/riot/emojione/svg/1f914.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M4,30c0,15.5,12.5,28,28,28s28-12.5,28-28S47.5,2,32,2S4,14.5,4,30z" fill="#ffdd67"/><g fill="#917524"><path d="m14.2 12c3.4-2 7.5-2.3 11.3-1 .5.2 1.3-1.7.7-1.9-4.3-1.6-9-1.2-13 1.1-.6.3.5 2.1 1 1.8"/><path d="m38.2 15c3.4-2 7.5-2.3 11.3-1 .5.2 1.3-1.7.7-1.9-4.3-1.6-9-1.2-13 1.1-.6.3.5 2 1 1.8"/></g><path d="m24.1 34.7c5.1-1.3 10.7-.4 15 2.6 1.1.7-.9 3.5-2 2.7-2.9-1.9-7.4-3.3-12.1-2.1-1.2.3-2.2-2.8-.9-3.2" fill="#664e27"/><path d="m42.8 29.1c-4.1 0-7.5-3.4-7.5-7.5 0-1.7.6-3.3 1.5-4.5 1.7-.5 3.6-.7 5.6-.7 2.4 0 4.7.4 6.7 1.1.8 1.2 1.3 2.6 1.3 4.2-.1 4.1-3.4 7.4-7.6 7.4" fill="#fff"/><path d="m43.8 16.4c.4.6.7 1.3.7 2.1 0 2.1-1.7 3.8-3.8 3.8s-3.7-1.7-3.7-3.7c0-.6.1-1.1.4-1.6 1.5-.4 3.2-.6 5-.6.5 0 1 0 1.4 0" fill="#664e27"/><path d="m21.2 29.1c-4.1 0-7.5-3.4-7.5-7.5 0-1.7.6-3.3 1.5-4.5 1.7-.5 3.6-.7 5.6-.7 2.4 0 4.7.4 6.7 1.1.8 1.2 1.3 2.6 1.3 4.2-.1 4.1-3.5 7.4-7.6 7.4" fill="#fff"/><path d="m22.2 16.4c.4.6.7 1.3.7 2.1 0 2.1-1.7 3.8-3.8 3.8s-3.8-1.7-3.8-3.8c0-.6.1-1.1.4-1.6 1.5-.4 3.2-.6 5-.6.6.1 1 .1 1.5.1" fill="#664e27"/><path d="m32.6 44c-4.2 1-14.9 2.3-16.8.3-.9-.9-.7-2.2-.4-4.5.3-2.3-1.9-4.7-3.5-4.9-1.9-.2-3 1.2-2.3 3.2 1.4 4.5-1.4 5.9-1.6 9.2-.1 1.9-.7 5.1 2.2 9.2 3.3 4.6 9 4.7 11 4.6 2.3-.1 3.3-.2 3.8-1.2.6-1.2.3-1.5.6-1.9.5-.9.8-.8 1.1-1.9.3-1.1-.5-1.8-.3-2.3.4-1.2 1.4-1 .4-3.8 3.4-.5 5.6-1 7.6-2.2 3.7-2 .5-4.3-1.8-3.8" fill="#fff"/><path d="m17.5 61.7c-3.4-.6-6.2-2.3-8-4.8-2.8-3.9-2.6-7-2.4-9.1 0-.2 0-.5 0-.7.1-1.4.5-2.5 1-3.6.7-1.6 1.3-2.9.5-5.3-.4-1.2-.3-2.4.5-3.2.7-.7 1.7-1.1 2.9-.9 0 0 .1 0 .1 0 2.1.4 4.5 3.2 4.2 5.9-.3 2.2-.4 3.2.2 3.8.1.1.4.4 1.5.5 3.8.7 11.3-.4 14.4-1.1.5-.1 1.1-.1 1.7 0 1.5.3 2.6 1.2 2.9 2.3.1.7.1 2-2 3.2-2 1.1-4.1 1.7-7 2.1.8 2-1.1 2.7-.7 3.5.5 1.1.4 2-.7 3.1-.8.7.2 1.6-.6 3-.9 1.5-2.4 1.6-4.6 1.7-1.5-.1-2.7-.1-3.9-.4m-7.6-24.5c.7 3.3.9 4.5-.3 7.2-1.8 3.6-2.5 13.8 8.2 15.7 6.5 1.2 7.5-.4 7.2-2.1-.2-1.1.7-1.5 1-1.9.7-1.2-.3-1.8-.3-2.3 0-.9.9-.9 1.1-1.8.3-1.6-1.7-2.2 0-2.3 3.3-.2 5.5-.8 7.4-2.1 1.8-1.2.5-3.7-1.9-3.2-5.6 1.2-14 2.6-16.8 0-1.3-1.2-.3-2.6-.4-5.3-.2-3.6-5.9-5-5.2-1.9" fill="#cccfd4"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f915.svg b/riot/emojione/svg/1f915.svg new file mode 100644 index 0000000..26dfd8c --- /dev/null +++ b/riot/emojione/svg/1f915.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="31.9" cy="32.1" r="29.9" fill="#ffdd67"/><g fill="#664e27"><circle cx="43.7" cy="30" r="5"/><circle cx="20.2" cy="30" r="5"/></g><path d="m32 2c-6 0-11.7 1.8-16.4 4.9 17.7 9.1 33.2 23 41.7 41.2 3-4.6 4.7-10.2 4.7-16.1 0-16.6-13.4-30-30-30" fill="#cccfd4"/><path d="m32.9 3.6c-5.5 0-10.6 1.6-14.9 4.4 16.7 7.7 31.6 19.3 39.4 35.8 3.1-5.8 2.9-12.9 2.9-12.9-.1-15.1-12.3-27.3-27.4-27.3" fill="#fff"/><path d="m15.8 6.7c14.5-.1 28.9 3.3 41.9 9.8 2.7 4.5 4.3 9.8 4.3 15.5 0 .5 0 .9 0 1.4-17.2-10.6-37.4-15.3-57.5-13.4 2.4-5.5 6.4-10.1 11.3-13.3" fill="#cccfd4"/><path d="m17 8.1c13.6-.1 27.6 4 39.8 9.6 3.3 6.5 3.5 11.9 3.5 11.9-16.5-8.7-35.4-13.1-52.9-11.4 0 0 4.2-7.8 9.6-10.1" fill="#fff"/><path d="m40.3 42.8c-5.8-1.5-12-.4-16.9 3-1.2.9 1.1 4 2.3 3.2 3.2-2.3 8.4-3.8 13.7-2.4 1.3.3 2.4-3.3.9-3.8" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f916.svg b/riot/emojione/svg/1f916.svg new file mode 100644 index 0000000..047eae1 --- /dev/null +++ b/riot/emojione/svg/1f916.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.6 13.7c-.7-1-1.6-1.7-2.7-2.2-3.4-1.7-11.6-1.3-12.3-5.7-.9-5.7-5.9.1-6.8.1-1.1 0-1.6-3.9-3.7-3.9-2.2 0-2.7 3.9-3.7 3.9-.9 0-5.9-5.8-6.8-.1-.7 4.3-9 4-12.3 5.7-1 .5-2 1.2-2.7 2.2-.5.8.6 1.6 1.2.9 1.6-2 4.8-2.4 7.1-2.8 1.9-.4 4-.6 5.9-1.4 2.6-1 2.5-4.9 3.3-4.9.6 0 2.7 3 4.5 3 1.6 0 2.6-3.7 3.5-3.7.9 0 1.9 3.7 3.5 3.7 1.9 0 4-3 4.6-3 .8 0 .7 3.9 3.3 4.9 1.8.8 3.9 1 5.9 1.4 2.3.5 5.6.8 7.1 2.8.5.7 1.6-.2 1.1-.9" fill="#00b9f1"/><path d="M53,57c0,2.8-2.2,5-5,5H16c-2.8,0-5-2.2-5-5V36h42V57z" fill="#89967a"/><path d="m32 12c-15.5 0-21 8.5-21 24v21h42v-21c0-15.5-5.5-24-21-24" fill="#b6c4a7"/><g fill="#89967a"><path d="m11 55c-1.1 0-2-1.2-2-2.6v-6.8c0-1.4.9-2.6 2-2.6v12"/><path d="m53 43c1.1 0 2 1.2 2 2.6v6.8c0 1.4-.9 2.6-2 2.6v-12"/></g><g fill="#3e4347"><path d="m7 20h-2v30h2 2v-2h-2z"/><path d="m57 20v28h-2v2h2 2v-30z"/></g><circle cx="58" cy="20" r="4" fill="#00b9f1"/><g enable-background="new"><circle cx="6" cy="20" r="4" fill="#ff5263"/></g><path d="m21.5 39.5c-4.4 0-8-3.6-8-8 0-4.4 3.6-8 8-8 4.4 0 8 3.6 8 8 0 4.4-3.6 8-8 8" fill="#efffd9"/><circle cx="21.5" cy="31.5" r="6" fill="#545b61"/><circle cx="21.5" cy="31.5" r="2.3" fill="#ff5263"/><path d="m42.5 39.5c-4.4 0-8-3.6-8-8 0-4.4 3.6-8 8-8 4.4 0 8 3.6 8 8 0 4.4-3.6 8-8 8" fill="#efffd9"/><path d="m42.5 37.5c-3.3 0-6-2.7-6-6 0-3.3 2.7-6 6-6 3.3 0 6 2.7 6 6 0 3.3-2.7 6-6 6" fill="#545b61"/><circle cx="42.5" cy="31.5" r="2.3" fill="#ff5263"/><path d="m19.8 54.1c-7.4 0-7.4-13 0-13h24.5c7.4 0 7.4 13 0 13h-24.5" fill="#efffd9"/><path d="m20.5 52.6c-6 0-6-10 0-10h23c6 0 6 10 0 10h-23" fill="#89967a"/><g opacity=".7" fill="#3e4347"><path d="m21.2 50.7c0 1.2-2 1.2-2 0v-6.1c0-1.2 2-1.2 2 0v6.1"/><path d="m25.9 50.7c0 1.2-2 1.2-2 0v-6.1c0-1.2 2-1.2 2 0v6.1"/><path d="m30.6 50.7c0 1.2-2 1.2-2 0v-6.1c0-1.2 2-1.2 2 0v6.1"/><path d="m35.4 50.7c0 1.2-2 1.2-2 0v-6.1c0-1.2 2-1.2 2 0v6.1"/><path d="m40.1 50.7c0 1.2-2 1.2-2 0v-6.1c0-1.2 2-1.2 2 0v6.1"/><path d="m44.8 50.7c0 1.2-2 1.2-2 0v-6.1c0-1.2 2-1.2 2 0v6.1"/></g><circle cx="32" cy="37" r="2" fill="#f5f5f5"/><path transform="matrix(.7071-.7071.7071.7071-16.7765 33.4583)" fill="#545b61" d="m31.6 35h.8v4h-.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f917.svg b/riot/emojione/svg/1f917.svg new file mode 100644 index 0000000..238b5a7 --- /dev/null +++ b/riot/emojione/svg/1f917.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="30" r="28" fill="#ffdd67"/><g fill="#ff717f"><ellipse transform="matrix(.2588-.9659.9659.2588 16.2122 64.2167)" cx="49.9" cy="21.5" rx="6.1" ry="8.4" opacity=".8"/><ellipse transform="matrix(.8192-.5735.5735.8192-13.9487 12.1328)" cx="12.3" cy="28.2" rx="8.4" ry="6.1" opacity=".8"/></g><g fill="#664e27"><path d="m26.7 18.2c-2.5-4.3-5.3-6.1-7.8-5.6-2.5.4-4.6 3.1-5.4 8-.1.5.9 1.2 1.3.6 1.3-2 3.1-3 5.1-3.3 2-.4 4 0 5.9 1.4.5.3 1.2-.7.9-1.1"/><path d="m46.2 14.7c-2.5-4.2-5.3-6.1-7.8-5.6-2.5.4-4.6 3.2-5.4 8-.1.5.9 1.2 1.3.6 1.3-2 3.1-3 5.1-3.3 2-.4 4 0 5.9 1.4.4.3 1.1-.6.9-1.1"/><path d="m42.9 26.5c-6.3 6.3-14.3 7.7-22.4 3.9-1-.5-1.6.7-.8 1.6 2.8 3.2 7.8 5.6 13.4 4.6 5.6-1 9.5-5 11-9 .5-.9-.4-1.8-1.2-1.1"/></g><path d="m27.2 46.8c0 0 1.8-.6 1.1-3-.7-2.5-6.9 0-10-1.2 0 0 2.5-.8 1.7-2.9-.8-1.9-7.6-2.6-14.3 2.6-6.7 5.2-2.4 17.2 5.9 18.7 5.8 1 14.6.9 15.7-1.6.9-2-1.9-2.7-1.9-2.7s3.5 0 3.5-2.7c0-1.6-1.3-1.6-1.3-1.6s2.9-.4 2.9-3.1c.1-2.3-3.3-2.5-3.3-2.5" fill="#fff"/><path d="m28.4 46.9c2.2-1.5.3-5.1-2.4-4.7-2.3.4-6.3.4-6.3.4 0 0 1.3-.5 1-2.2-.3-1.7-2.7-4.2-12.3-.3-3.6 1.5-5.9 4.5-6.3 8.2-.4 4 1.4 8.7 4.3 10.8 3.2 2.4 10.7 3.8 17.9 2.4 4.8-.9 4.3-4 2.3-4.5 3.3-.6 3.6-3.4 2-4.2 3.7-1.2 2.7-5.8-.2-5.9m-2.6 5.1c-1.9.2-7 .6-7 .6s3.5.7 7.2.1c3.3-.5 3.1 2.8-1.5 3.4-2.2.3-5.7.4-5.7.4s3.2.5 4.9.3c4.4-.6 3.9 2.7-.2 3.3-7.3 1-13.2 0-16.1-2.1-4.1-3-6.5-13 1.5-16.7 3.6-1.7 9.5-3.2 10.4-1.2 1.2 2.9-4.2 3.2-4.2 3.2s4.4.6 10.7-.1c1.7-.2 3 1.9.9 3.1-1.8 1.1-7.9 1.5-7.9 1.5s3.3.1 7.9-.3c3.7-.3 4 3.9-.9 4.5" fill="#cccfd4"/><path d="m36.8 46.8c0 0-1.8-.6-1.1-3 .7-2.5 6.9 0 10-1.2 0 0-2.5-.8-1.7-2.9.8-1.9 7.6-2.6 14.3 2.6 6.7 5.2 2.3 17.2-5.9 18.6-5.8 1-14.6.9-15.7-1.6-.9-2 1.9-2.7 1.9-2.7s-3.5 0-3.5-2.7c0-1.6 1.3-1.6 1.3-1.6s-2.9-.4-2.9-3.1c-.1-2.2 3.3-2.4 3.3-2.4" fill="#fff"/><path d="m35.4 52.7c-1.5.8-1.2 3.6 2 4.2-2 .5-2.5 3.6 2.3 4.5 7.3 1.4 14.7.1 17.9-2.4 2.8-2.1 4.7-6.8 4.3-10.8-.4-3.7-2.7-6.7-6.3-8.2-9.7-3.9-12-1.5-12.3.3-.3 1.7 1 2.2 1 2.2 0 0-4 0-6.3-.4-2.7-.5-4.6 3.2-2.4 4.7-2.9.2-3.9 4.8-.2 5.9m1.9-5.2c4.6.4 7.9.3 7.9.3s-6.1-.4-7.9-1.5c-2.1-1.2-.8-3.3.9-3.1 6.4.8 10.7.1 10.7.1s-5.4-.4-4.2-3.2c.9-2 6.8-.5 10.4 1.2 8 3.8 5.5 13.7 1.5 16.7-2.8 2.1-8.8 3.2-16.1 2.1-4.2-.6-4.7-3.9-.2-3.3 1.7.2 4.9-.3 4.9-.3s-3.5-.1-5.7-.4c-4.6-.6-4.8-3.9-1.5-3.4 3.6.5 7.2-.1 7.2-.1s-5.1-.3-7-.6c-4.9-.6-4.6-4.8-.9-4.5" fill="#cccfd4"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f918-1f3fb.svg b/riot/emojione/svg/1f918-1f3fb.svg new file mode 100644 index 0000000..2ac3bea --- /dev/null +++ b/riot/emojione/svg/1f918-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.1 47.3c.4 2.3 2.7 3.8 5.1 3.4 2.4-.4 4-2.6 3.5-4.9l-6-32.7c-.4-2.3-2.7-3.8-5.1-3.4-2.4.4-4 2.6-3.5 4.9l6 32.7" fill="#ffe1bd"/><path d="m21 50.1c2.4-.4 4-2.6 3.6-4.9l-6-32.7c-.2-1.2-1-2.3-2-2.9 2 .1 3.8 1.5 4.2 3.5l6 32.7c.4 2.3-1.1 4.5-3.5 4.9-1.1.2-2.1 0-3-.5.1 0 .4 0 .7-.1" fill="#e6b796"/><g fill="#ffe1bd"><path d="m47.1 34.4c0 0-23.1 2-25.4-4.7l-6.1 4.5c0 0-1.9 11 1.1 18.4 3.2 7.9 13.7 7.5 13.7 7.5 10.8 2.2 15.2.5 19.7-9.9 1.6-3.7-3-15.8-3-15.8"/><path d="m39.5 39.2c-.1 2.3 1.7 4.3 4.1 4.4 2.4.1 4.5-1.7 4.6-4l1.8-33.2c.1-2.3-1.7-4.3-4.1-4.4-2.4-.1-4.5 1.7-4.6 4l-1.8 33.2"/></g><path d="m41.8 42.6c2.4.1 4.5-1.7 4.6-4l1.6-33.3c.1-1.3-.5-2.4-1.3-3.2 2 .5 3.4 2.3 3.3 4.3l-1.7 33.2c-.1 2.3-2.2 4.1-4.6 4-1.1-.1-2.1-.5-2.8-1.2.3.1.6.1.9.2" fill="#e6b796"/><g fill="#ffe1bd"><path d="m22.7 26.6c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3v-6.7"/><path d="m31.5 26.1c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3 0 0 0-6.7 0-6.7"/></g><g fill="#e6b796"><path d="m25.8 36c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.5 1.6.9 2.6.9"/><path d="m34.6 35.5c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.6 1.6.9 2.6.9"/><path d="m43.5 41.7c-5.9-2.1-16.3 1.8-14.9 12 0-9.6 8.9-11.9 13.9-11.9.6 0 1-.1 1-.1"/><path d="m42.1 31.8c-3.3-2.4-4.3.8-10.2.3-2.6-.2-4.3 5-.6 7.4 5.2 3.3 6-.5 7.2 1.1 1.2 1.7 2.5 2.2 3.5 4.1.7 1.4 6.7.1 7.7-2.6 1.9-5-2.5-6.4-7.6-10.3"/></g><path d="m42.4 32.8c-3.4-2.5-4.5.8-10.7.3-2.7-.2-4.5 5.2-.6 7.7 5.4 3.4 6.3-.5 7.5 1.2 1.3 1.8 2.6 2.3 3.7 4.3.8 1.5-2.2 6.5-2.2 6.5s5.4 5.6 7.1 3c3.2-4.9 3.7-7.7 4-10.8.5-7.2-3.4-8.2-8.8-12.2" fill="#ffe1bd"/><g fill="#e6b796"><path d="m41.4 46.3c.2.5.1 1.3-.2 2.1.6-1.3 1-2.7.7-3.4-1-2-1.7-2.5-3-4.3-1.2-1.7-2.1 2.2-7.5-1.2-2-1.3-2.5-3.3-2.1-5-1 1.7-.9 4.6 1.6 6.2 5.4 3.4 6.3-.5 7.5 1.2 1.4 1.9 2 2.4 3 4.4"/><path d="m46.6 34.9c6.9 5.3 3.9 15.7.6 20.1-5.2 6.9-10 5.9-16.7 4.5 0 0-8.8 1-13.6-6.8 3 8.2 13.6 7.8 13.6 7.8 7.2 2.2 12.2 2.7 17.7-4.4 3.4-4.5 7.2-16.9-1.6-21.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f918-1f3fc.svg b/riot/emojione/svg/1f918-1f3fc.svg new file mode 100644 index 0000000..edbd0b2 --- /dev/null +++ b/riot/emojione/svg/1f918-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.1 47.3c.4 2.3 2.7 3.8 5.1 3.4 2.4-.4 4-2.6 3.5-4.9l-6-32.7c-.4-2.3-2.7-3.8-5.1-3.4-2.4.4-4 2.6-3.5 4.9l6 32.7" fill="#fed0ac"/><path d="m21 50.1c2.4-.4 4-2.6 3.6-4.9l-6-32.7c-.2-1.2-1-2.3-2-2.9 2 .1 3.8 1.5 4.2 3.5l6 32.7c.4 2.3-1.1 4.5-3.5 4.9-1.1.2-2.1 0-3-.5.1 0 .4 0 .7-.1" fill="#e0a372"/><g fill="#fed0ac"><path d="m47.1 34.4c0 0-23.1 2-25.4-4.7l-6.1 4.5c0 0-1.9 11 1.1 18.4 3.2 7.9 13.7 7.5 13.7 7.5 10.8 2.2 15.2.5 19.7-9.9 1.6-3.7-3-15.8-3-15.8"/><path d="m39.5 39.2c-.1 2.3 1.7 4.3 4.1 4.4 2.4.1 4.5-1.7 4.6-4l1.7-33.2c.1-2.3-1.7-4.3-4.1-4.4-2.4-.1-4.5 1.7-4.6 4l-1.7 33.2"/></g><path d="m41.8 42.6c2.4.1 4.5-1.7 4.6-4l1.6-33.3c.1-1.3-.5-2.4-1.3-3.2 2 .5 3.4 2.3 3.3 4.3l-1.7 33.2c-.1 2.3-2.2 4.1-4.6 4-1.1-.1-2.1-.5-2.8-1.2.3.1.6.1.9.2" fill="#e0a372"/><g fill="#fed0ac"><path d="m22.7 26.6c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3v-6.7"/><path d="m31.5 26.1c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3 0 0 0-6.7 0-6.7"/></g><g fill="#e0a372"><path d="m25.8 36c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.5 1.6.9 2.6.9"/><path d="m34.6 35.5c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.6 1.6.9 2.6.9"/><path d="m43.5 41.7c-5.9-2.1-16.3 1.8-14.9 12 0-9.6 8.9-11.9 13.9-11.9.6 0 1-.1 1-.1"/><path d="m42.1 31.8c-3.3-2.4-4.3.8-10.2.3-2.6-.2-4.3 5-.6 7.4 5.2 3.3 6-.5 7.2 1.1 1.2 1.7 2.5 2.2 3.5 4.1.7 1.4 6.7.1 7.7-2.6 1.9-5-2.5-6.4-7.6-10.3"/></g><path d="m42.4 32.8c-3.4-2.5-4.5.8-10.7.3-2.7-.2-4.5 5.2-.6 7.7 5.4 3.4 6.3-.5 7.5 1.2 1.3 1.8 2.6 2.3 3.7 4.3.8 1.5-2.2 6.5-2.2 6.5s5.4 5.6 7.1 3c3.2-4.9 3.7-7.7 4-10.8.5-7.2-3.4-8.2-8.8-12.2" fill="#fed0ac"/><g fill="#e0a372"><path d="m41.4 46.3c.2.5.1 1.3-.2 2.1.6-1.3 1-2.7.7-3.4-1-2-1.7-2.5-3-4.3-1.2-1.7-2.1 2.2-7.5-1.2-2-1.3-2.5-3.3-2.1-5-1 1.7-.9 4.6 1.6 6.2 5.4 3.4 6.3-.5 7.5 1.2 1.4 1.9 2 2.4 3 4.4"/><path d="m46.6 34.9c6.9 5.3 3.9 15.7.6 20.1-5.2 6.9-10 5.9-16.7 4.5 0 0-8.8 1-13.6-6.8 3 8.2 13.6 7.8 13.6 7.8 7.2 2.2 12.2 2.7 17.7-4.4 3.4-4.5 7.2-16.9-1.6-21.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f918-1f3fd.svg b/riot/emojione/svg/1f918-1f3fd.svg new file mode 100644 index 0000000..39f8819 --- /dev/null +++ b/riot/emojione/svg/1f918-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.1 47.3c.4 2.3 2.7 3.8 5.1 3.4 2.4-.4 4-2.6 3.5-4.9l-6-32.7c-.4-2.3-2.7-3.8-5.1-3.4-2.4.4-4 2.6-3.5 4.9l6 32.7" fill="#d6a57c"/><path d="m21 50.1c2.4-.4 4-2.6 3.6-4.9l-6-32.7c-.2-1.2-1-2.3-2-2.9 2 .1 3.8 1.5 4.2 3.5l6 32.7c.4 2.3-1.1 4.5-3.5 4.9-1.1.2-2.1 0-3-.5.1 0 .4 0 .7-.1" fill="#b58360"/><g fill="#d6a57c"><path d="m47.1 34.4c0 0-23.1 2-25.4-4.7l-6.1 4.5c0 0-1.9 11 1.1 18.4 3.2 7.9 13.7 7.5 13.7 7.5 10.8 2.2 15.2.5 19.7-9.9 1.6-3.7-3-15.8-3-15.8"/><path d="m39.5 39.2c-.1 2.3 1.7 4.3 4.1 4.4 2.4.1 4.5-1.7 4.6-4l1.8-33.2c.1-2.3-1.7-4.3-4.1-4.4-2.4-.1-4.5 1.7-4.6 4l-1.8 33.2"/></g><path d="m41.8 42.6c2.4.1 4.5-1.7 4.6-4l1.6-33.3c.1-1.3-.5-2.4-1.3-3.2 2 .5 3.4 2.3 3.3 4.3l-1.7 33.2c-.1 2.3-2.2 4.1-4.6 4-1.1-.1-2.1-.5-2.8-1.2.3.1.6.1.9.2" fill="#b58360"/><g fill="#d6a57c"><path d="m22.7 26.6c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3v-6.7"/><path d="m31.5 26.1c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3 0 0 0-6.7 0-6.7"/></g><g fill="#b58360"><path d="m25.8 36c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.5 1.6.9 2.6.9"/><path d="m34.6 35.5c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.6 1.6.9 2.6.9"/><path d="m43.5 41.7c-5.9-2.1-16.3 1.8-14.9 12 0-9.6 8.9-11.9 13.9-11.9.6 0 1-.1 1-.1"/><path d="m42.1 31.8c-3.3-2.4-4.3.8-10.2.3-2.6-.2-4.3 5-.6 7.4 5.2 3.3 6-.5 7.2 1.1 1.2 1.7 2.5 2.2 3.5 4.1.7 1.4 6.7.1 7.7-2.6 1.9-5-2.5-6.4-7.6-10.3"/></g><path d="m42.4 32.8c-3.4-2.5-4.5.8-10.7.3-2.7-.2-4.5 5.2-.6 7.7 5.4 3.4 6.3-.5 7.5 1.2 1.3 1.8 2.6 2.3 3.7 4.3.8 1.5-2.2 6.5-2.2 6.5s5.4 5.6 7.1 3c3.2-4.9 3.7-7.7 4-10.8.5-7.2-3.4-8.2-8.8-12.2" fill="#d6a57c"/><g fill="#b58360"><path d="m41.4 46.3c.2.5.1 1.3-.2 2.1.6-1.3 1-2.7.7-3.4-1-2-1.7-2.5-3-4.3-1.2-1.7-2.1 2.2-7.5-1.2-2-1.3-2.5-3.3-2.1-5-1 1.7-.9 4.6 1.6 6.2 5.4 3.4 6.3-.5 7.5 1.2 1.4 1.9 2 2.4 3 4.4"/><path d="m46.6 34.9c6.9 5.3 3.9 15.7.6 20.1-5.2 6.9-10 5.9-16.7 4.5 0 0-8.8 1-13.6-6.8 3 8.2 13.6 7.8 13.6 7.8 7.2 2.2 12.2 2.7 17.7-4.4 3.4-4.5 7.2-16.9-1.6-21.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f918-1f3fe.svg b/riot/emojione/svg/1f918-1f3fe.svg new file mode 100644 index 0000000..b8b1f45 --- /dev/null +++ b/riot/emojione/svg/1f918-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.1 47.3c.4 2.3 2.7 3.8 5.1 3.4 2.4-.4 4-2.6 3.5-4.9l-6-32.7c-.4-2.3-2.7-3.8-5.1-3.4-2.4.4-4 2.6-3.5 4.9l6 32.7" fill="#b47d56"/><path d="m21 50.1c2.4-.4 4-2.6 3.6-4.9l-6-32.7c-.2-1.2-1-2.3-2-2.9 2 .1 3.8 1.5 4.2 3.5l6 32.7c.4 2.3-1.1 4.5-3.5 4.9-1.1.2-2.1 0-3-.5.1 0 .4 0 .7-.1" fill="#935e3e"/><g fill="#b47d56"><path d="m47.1 34.4c0 0-23.1 2-25.4-4.7l-6.1 4.5c0 0-1.9 11 1.1 18.4 3.2 7.9 13.7 7.5 13.7 7.5 10.8 2.2 15.2.5 19.7-9.9 1.6-3.7-3-15.8-3-15.8"/><path d="m39.5 39.2c-.1 2.3 1.7 4.3 4.1 4.4 2.4.1 4.5-1.7 4.6-4l1.7-33.2c.1-2.3-1.7-4.3-4.1-4.4-2.4-.1-4.5 1.7-4.6 4l-1.7 33.2"/></g><path d="m41.8 42.6c2.4.1 4.5-1.7 4.6-4l1.6-33.3c.1-1.3-.5-2.4-1.3-3.2 2 .5 3.4 2.3 3.3 4.3l-1.7 33.2c-.1 2.3-2.2 4.1-4.6 4-1.1-.1-2.1-.5-2.8-1.2.3.1.6.1.9.2" fill="#935e3e"/><g fill="#b47d56"><path d="m22.7 26.6c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3v-6.7"/><path d="m31.5 26.1c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3 0 0 0-6.7 0-6.7"/></g><g fill="#935e3e"><path d="m25.8 36c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.5 1.6.9 2.6.9"/><path d="m34.6 35.5c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.6 1.6.9 2.6.9"/><path d="m43.5 41.7c-5.9-2.1-16.3 1.8-14.9 12 0-9.6 8.9-11.9 13.9-11.9.6 0 1-.1 1-.1"/><path d="m42.1 31.8c-3.3-2.4-4.3.8-10.2.3-2.6-.2-4.3 5-.6 7.4 5.2 3.3 6-.5 7.2 1.1 1.2 1.7 2.5 2.2 3.5 4.1.7 1.4 6.7.1 7.7-2.6 1.9-5-2.5-6.4-7.6-10.3"/></g><path d="m42.4 32.8c-3.4-2.5-4.5.8-10.7.3-2.7-.2-4.5 5.2-.6 7.7 5.4 3.4 6.3-.5 7.5 1.2 1.3 1.8 2.6 2.3 3.7 4.3.8 1.5-2.2 6.5-2.2 6.5s5.4 5.6 7.1 3c3.2-4.9 3.7-7.7 4-10.8.5-7.2-3.4-8.2-8.8-12.2" fill="#b47d56"/><g fill="#935e3e"><path d="m41.4 46.3c.2.5.1 1.3-.2 2.1.6-1.3 1-2.7.7-3.4-1-2-1.7-2.5-3-4.3-1.2-1.7-2.1 2.2-7.5-1.2-2-1.3-2.5-3.3-2.1-5-1 1.7-.9 4.6 1.6 6.2 5.4 3.4 6.3-.5 7.5 1.2 1.4 1.9 2 2.4 3 4.4"/><path d="m46.6 34.9c6.9 5.3 3.9 15.7.6 20.1-5.2 6.9-10 5.9-16.7 4.5 0 0-8.8 1-13.6-6.8 3 8.2 13.6 7.8 13.6 7.8 7.2 2.2 12.2 2.7 17.7-4.4 3.4-4.5 7.2-16.9-1.6-21.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f918-1f3ff.svg b/riot/emojione/svg/1f918-1f3ff.svg new file mode 100644 index 0000000..1dfacef --- /dev/null +++ b/riot/emojione/svg/1f918-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.1 47.3c.4 2.3 2.7 3.8 5.1 3.4 2.4-.4 4-2.6 3.5-4.9l-6-32.7c-.4-2.3-2.7-3.8-5.1-3.4-2.4.4-4 2.6-3.5 4.9l6 32.7" fill="#8a6859"/><path d="m21 50.1c2.4-.4 4-2.6 3.6-4.9l-6-32.7c-.2-1.2-1-2.3-2-2.9 2 .1 3.8 1.5 4.2 3.5l6 32.7c.4 2.3-1.1 4.5-3.5 4.9-1.1.2-2.1 0-3-.5.1 0 .4 0 .7-.1" fill="#705041"/><g fill="#8a6859"><path d="m47.1 34.4c0 0-23.1 2-25.4-4.7l-6.1 4.5c0 0-1.9 11 1.1 18.4 3.2 7.9 13.7 7.5 13.7 7.5 10.8 2.2 15.2.5 19.7-9.9 1.6-3.7-3-15.8-3-15.8"/><path d="m39.5 39.2c-.1 2.3 1.7 4.3 4.1 4.4 2.4.1 4.5-1.7 4.6-4l1.8-33.2c.1-2.3-1.7-4.3-4.1-4.4-2.4-.1-4.5 1.7-4.6 4l-1.8 33.2"/></g><path d="m41.8 42.6c2.4.1 4.5-1.7 4.6-4l1.6-33.3c.1-1.3-.5-2.4-1.3-3.2 2 .5 3.4 2.3 3.3 4.3l-1.7 33.2c-.1 2.3-2.2 4.1-4.6 4-1.1-.1-2.1-.5-2.8-1.2.3.1.6.1.9.2" fill="#705041"/><g fill="#8a6859"><path d="m22.7 26.6c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3v-6.7"/><path d="m31.5 26.1c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3 0 0 0-6.7 0-6.7"/></g><g fill="#705041"><path d="m25.8 36c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.5 1.6.9 2.6.9"/><path d="m34.6 35.5c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.6 1.6.9 2.6.9"/><path d="m43.5 41.7c-5.9-2.1-16.3 1.8-14.9 12 0-9.6 8.9-11.9 13.9-11.9.6 0 1-.1 1-.1"/><path d="m42.1 31.8c-3.3-2.4-4.3.8-10.2.3-2.6-.2-4.3 5-.6 7.4 5.2 3.3 6-.5 7.2 1.1 1.2 1.7 2.5 2.2 3.5 4.1.7 1.4 6.7.1 7.7-2.6 1.9-5-2.5-6.4-7.6-10.3"/></g><path d="m42.4 32.8c-3.4-2.5-4.5.8-10.7.3-2.7-.2-4.5 5.2-.6 7.7 5.4 3.4 6.3-.5 7.5 1.2 1.3 1.8 2.6 2.3 3.7 4.3.8 1.5-2.2 6.5-2.2 6.5s5.4 5.6 7.1 3c3.2-4.9 3.7-7.7 4-10.8.5-7.2-3.4-8.2-8.8-12.2" fill="#8a6859"/><g fill="#705041"><path d="m41.4 46.3c.2.5.1 1.3-.2 2.1.6-1.3 1-2.7.7-3.4-1-2-1.7-2.5-3-4.3-1.2-1.7-2.1 2.2-7.5-1.2-2-1.3-2.5-3.3-2.1-5-1 1.7-.9 4.6 1.6 6.2 5.4 3.4 6.3-.5 7.5 1.2 1.4 1.9 2 2.4 3 4.4"/><path d="m46.6 34.9c6.9 5.3 3.9 15.7.6 20.1-5.2 6.9-10 5.9-16.7 4.5 0 0-8.8 1-13.6-6.8 3 8.2 13.6 7.8 13.6 7.8 7.2 2.2 12.2 2.7 17.7-4.4 3.4-4.5 7.2-16.9-1.6-21.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f918.svg b/riot/emojione/svg/1f918.svg new file mode 100644 index 0000000..125c338 --- /dev/null +++ b/riot/emojione/svg/1f918.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m18.1 47.3c.4 2.3 2.7 3.8 5.1 3.4 2.4-.4 4-2.6 3.5-4.9l-6-32.7c-.4-2.3-2.7-3.8-5.1-3.4-2.4.4-4 2.6-3.5 4.9l6 32.7" fill="#ffdd67"/><path d="m21 50.1c2.4-.4 4-2.6 3.6-4.9l-6-32.7c-.2-1.2-1-2.3-2-2.9 2 .1 3.8 1.5 4.2 3.5l6 32.7c.4 2.3-1.1 4.5-3.5 4.9-1.1.2-2.1 0-3-.5.1 0 .4 0 .7-.1" fill="#eba352"/><g fill="#ffdd67"><path d="m47.1 34.4c0 0-23.1 2-25.4-4.7l-6.1 4.5c0 0-1.9 11 1.1 18.4 3.2 7.9 13.7 7.5 13.7 7.5 10.8 2.2 15.2.5 19.7-9.9 1.6-3.7-3-15.8-3-15.8"/><path d="m39.5 39.2c-.1 2.3 1.7 4.3 4.1 4.4 2.4.1 4.5-1.7 4.6-4l1.8-33.2c.1-2.3-1.7-4.3-4.1-4.4-2.4-.1-4.5 1.7-4.6 4l-1.8 33.2"/></g><path d="m41.8 42.6c2.4.1 4.5-1.7 4.6-4l1.6-33.3c.1-1.3-.5-2.4-1.3-3.2 2 .5 3.4 2.3 3.3 4.3l-1.7 33.2c-.1 2.3-2.2 4.1-4.6 4-1.1-.1-2.1-.5-2.8-1.2.3.1.6.1.9.2" fill="#eba352"/><g fill="#ffdd67"><path d="m22.7 26.6c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3v-6.7"/><path d="m31.5 26.1c0-2.4 1.9-4.3 4.3-4.3h.1c2.4 0 4.3 1.9 4.3 4.3v6.7c0 2.4-1.9 4.3-4.3 4.3h-.1c-2.4 0-4.3-1.9-4.3-4.3 0 0 0-6.7 0-6.7"/></g><g fill="#eba352"><path d="m25.8 36c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.5 1.6.9 2.6.9"/><path d="m34.6 35.5c2.5 0 4.4-1.9 4.4-4.2v-6.7c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.7c0 2.4-1.9 4.2-4.3 4.2h-.1c-1.8 0-3.3-1-3.9-2.5.7.6 1.6.9 2.6.9"/><path d="m43.5 41.7c-5.9-2.1-16.3 1.8-14.9 12 0-9.6 8.9-11.9 13.9-11.9.6 0 1-.1 1-.1"/><path d="m42.1 31.8c-3.3-2.4-4.3.8-10.2.3-2.6-.2-4.3 5-.6 7.4 5.2 3.3 6-.5 7.2 1.1 1.2 1.7 2.5 2.2 3.5 4.1.7 1.4 6.7.1 7.7-2.6 1.9-5-2.5-6.4-7.6-10.3"/></g><path d="m42.4 32.8c-3.4-2.5-4.5.8-10.7.3-2.7-.2-4.5 5.2-.6 7.7 5.4 3.4 6.3-.5 7.5 1.2 1.3 1.8 2.6 2.3 3.7 4.3.8 1.5-2.2 6.5-2.2 6.5s5.4 5.6 7.1 3c3.2-4.9 3.7-7.7 4-10.8.5-7.2-3.4-8.2-8.8-12.2" fill="#ffdd67"/><g fill="#eba352"><path d="m41.4 46.3c.2.5.1 1.3-.2 2.1.6-1.3 1-2.7.7-3.4-1-2-1.7-2.5-3-4.3-1.2-1.7-2.1 2.2-7.5-1.2-2-1.3-2.5-3.3-2.1-5-1 1.7-.9 4.6 1.6 6.2 5.4 3.4 6.3-.5 7.5 1.2 1.4 1.9 2 2.4 3 4.4"/><path d="m46.6 34.9c6.9 5.3 3.9 15.7.6 20.1-5.2 6.9-10 5.9-16.7 4.5 0 0-8.8 1-13.6-6.8 3 8.2 13.6 7.8 13.6 7.8 7.2 2.2 12.2 2.7 17.7-4.4 3.4-4.5 7.2-16.9-1.6-21.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f919-1f3fb.svg b/riot/emojione/svg/1f919-1f3fb.svg new file mode 100644 index 0000000..6798a54 --- /dev/null +++ b/riot/emojione/svg/1f919-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m47.8 31c0 0-8.6-6.5-9.8-8.5-1.4-2.4-2.1-6.1 1.9-8.6 4.2-2.7 6.3-7 5-9.6-1.6-3.2-5.1-3.1-7.7.4-5.9 7.6-12.5 10.9-16.2 16.7-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l7.2 4.2 20.5-21.4"/><path d="m28.7 52.5c2.4 2.1 8.5 8.1 8.5 8.1 3.7 3.2 8.6-2.2 4.9-5.4l-10.8-9.8c.1 0-6.2 3.9-2.6 7.1"/></g><path d="m42.3 55.3c2.9 3-1.6 7.8-4.9 4.4-2.6-2.7-5.1-5.5-10.1-8.6-2.9-1.8-5.9-3.5-5.9-3.5-3.6-2.1-7.5-8.3-5.4-13.8 1.4-3.7 4.1-8.8 6.3-12.1 3.7-5.8 10.2-9.5 16.1-17.1.8-1.1 2.5-2.7 4.4-2.3-1.7-.6-3.8.2-5.6 2.5-5.9 7.5-12.5 10.8-16.2 16.6-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l6.5 3.8c5.5 3.4 7.1 5.9 10.3 8.7 1.7 1.4 4 1.9 5.5.2 1.8-2 1.4-4.2-.1-5.6" fill="#e6b796"/><path d="m37.7 22.2c11.5 6.4 12.3 10.9 12.3 13.6-.1 4.9-6.8 5-8 .8l-.6-5.9c-.5-5-8-10.9-3.7-8.5" fill="#ffe1bd"/><path d="m23 31.5c4.3 2.6 9.8 1.4 12.7-2.7-.2.6-.4 1.2-.8 1.7-2.2 3.6-6.8 4.8-10.4 2.7-1-.6-1.9-1.5-2.5-2.4.4.2.7.5 1 .7" fill="#e6b796"/><path d="m36.8 42l-3.6.3-2.7-2.3c-3.3-2.7-7.6 2.7-4.4 5.4l3.9 3.2c.8.6 1.4.8 2.4.7l5.1-.5c4.2-.3 3.5-7.2-.7-6.8" fill="#ffe1bd"/><path d="m38.1 48.2l-5.1.4c-1.1.1-1.7-.1-2.4-.7l-3.9-3.2c-1.4-1.2-1.4-2.9-.6-4.2-1.3 1.3-1.7 3.5 0 4.9l3.9 3.2c.8.6 1.4.8 2.4.7l5.1-.5c1.1-.1 1.9-.7 2.4-1.5-.5.5-1.1.8-1.8.9" fill="#e6b796"/><path d="m41.3 36l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#ffe1bd"/><path d="m42.8 43.2l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.6.6-1.3 1-2.1 1" fill="#e6b796"/><path d="m45.8 31.7l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#ffe1bd"/><g fill="#e6b796"><path d="m42.1 32.7c0 0 1.3-.9 3.6-.7-1.7-.9-3.7-.3-3.7-.3s-3.9-4.6-7.5-2.7c3.8-.8 7.6 3.7 7.6 3.7"/><path d="m47.2 38.9l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.5.6-1.2.9-2.1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f919-1f3fc.svg b/riot/emojione/svg/1f919-1f3fc.svg new file mode 100644 index 0000000..1c604fa --- /dev/null +++ b/riot/emojione/svg/1f919-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m47.8 31c0 0-8.6-6.5-9.8-8.5-1.4-2.4-2.1-6.1 1.9-8.6 4.2-2.7 6.3-7 5-9.6-1.6-3.2-5.1-3.1-7.7.4-5.9 7.6-12.5 10.9-16.2 16.7-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l7.2 4.2 20.5-21.4"/><path d="m28.7 52.5c2.4 2.1 8.5 8.1 8.5 8.1 3.7 3.2 8.6-2.2 4.9-5.4l-10.8-9.8c.1 0-6.2 3.9-2.6 7.1"/></g><path d="m42.3 55.3c2.9 3-1.6 7.8-4.9 4.4-2.6-2.7-5.1-5.5-10.1-8.6-2.9-1.8-5.9-3.5-5.9-3.5-3.6-2.1-7.5-8.3-5.4-13.8 1.4-3.7 4.1-8.8 6.3-12.1 3.7-5.8 10.2-9.5 16.1-17.1.8-1.1 2.5-2.7 4.4-2.3-1.7-.6-3.8.2-5.6 2.5-5.9 7.5-12.5 10.8-16.2 16.6-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l6.5 3.8c5.5 3.4 7.1 5.9 10.3 8.7 1.7 1.4 4 1.9 5.5.2 1.8-2 1.4-4.2-.1-5.6" fill="#e0a372"/><path d="m37.7 22.2c11.5 6.4 12.3 10.9 12.3 13.6-.1 4.9-6.8 5-8 .8l-.6-5.9c-.5-5-8-10.9-3.7-8.5" fill="#fed0ac"/><path d="m23 31.5c4.3 2.6 9.8 1.4 12.7-2.7-.2.6-.4 1.2-.8 1.7-2.2 3.6-6.8 4.8-10.4 2.7-1-.6-1.9-1.5-2.5-2.4.4.2.7.5 1 .7" fill="#e0a372"/><path d="m36.8 42l-3.6.3-2.7-2.3c-3.3-2.7-7.6 2.7-4.4 5.4l3.9 3.2c.7.6 1.4.8 2.4.7l5.1-.5c4.2-.3 3.5-7.2-.7-6.8" fill="#fed0ac"/><path d="m38.1 48.2l-5.1.4c-1.1.1-1.7-.1-2.4-.7l-3.9-3.2c-1.4-1.2-1.4-2.9-.6-4.2-1.3 1.3-1.7 3.5 0 4.9l3.9 3.2c.7.6 1.4.8 2.4.7l5.1-.5c1.1-.1 1.9-.7 2.4-1.5-.5.5-1.1.8-1.8.9" fill="#e0a372"/><path d="m41.3 36l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#fed0ac"/><path d="m42.8 43.2l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.6.6-1.3 1-2.1 1" fill="#e0a372"/><path d="m45.8 31.7l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#fed0ac"/><g fill="#e0a372"><path d="m42.1 32.7c0 0 1.3-.9 3.6-.7-1.7-.9-3.7-.3-3.7-.3s-3.9-4.6-7.5-2.7c3.8-.8 7.6 3.7 7.6 3.7"/><path d="m47.2 38.9l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.5.6-1.2.9-2.1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f919-1f3fd.svg b/riot/emojione/svg/1f919-1f3fd.svg new file mode 100644 index 0000000..7270638 --- /dev/null +++ b/riot/emojione/svg/1f919-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m47.8 31c0 0-8.6-6.5-9.8-8.5-1.4-2.4-2.1-6.1 1.9-8.6 4.2-2.7 6.3-7 5-9.6-1.6-3.2-5.1-3.1-7.7.4-5.9 7.6-12.5 10.9-16.2 16.7-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l7.2 4.2 20.5-21.4"/><path d="m28.7 52.5c2.4 2.1 8.5 8.1 8.5 8.1 3.7 3.2 8.6-2.2 4.9-5.4l-10.8-9.8c.1 0-6.2 3.9-2.6 7.1"/></g><path d="m42.3 55.3c2.9 3-1.6 7.8-4.9 4.4-2.6-2.7-5.1-5.5-10.1-8.6-2.9-1.8-5.9-3.5-5.9-3.5-3.6-2.1-7.5-8.3-5.4-13.8 1.4-3.7 4.1-8.8 6.3-12.1 3.7-5.8 10.2-9.5 16.1-17.1.8-1.1 2.5-2.7 4.4-2.3-1.7-.6-3.8.2-5.6 2.5-5.9 7.5-12.5 10.8-16.2 16.6-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l6.5 3.8c5.5 3.4 7.1 5.9 10.3 8.7 1.7 1.4 4 1.9 5.5.2 1.8-2 1.4-4.2-.1-5.6" fill="#b58360"/><path d="m37.7 22.2c11.5 6.4 12.3 10.9 12.3 13.6-.1 4.9-6.8 5-8 .8l-.6-5.9c-.5-5-8-10.9-3.7-8.5" fill="#d6a57c"/><path d="m23 31.5c4.3 2.6 9.8 1.4 12.7-2.7-.2.6-.4 1.2-.8 1.7-2.2 3.6-6.8 4.8-10.4 2.7-1-.6-1.9-1.5-2.5-2.4.4.2.7.5 1 .7" fill="#b58360"/><path d="m36.8 42l-3.6.3-2.7-2.3c-3.3-2.7-7.6 2.7-4.4 5.4l3.9 3.2c.7.6 1.4.8 2.4.7l5.1-.5c4.2-.3 3.5-7.2-.7-6.8" fill="#d6a57c"/><path d="m38.1 48.2l-5.1.4c-1.1.1-1.7-.1-2.4-.7l-3.9-3.2c-1.4-1.2-1.4-2.9-.6-4.2-1.3 1.3-1.7 3.5 0 4.9l3.9 3.2c.7.6 1.4.8 2.4.7l5.1-.5c1.1-.1 1.9-.7 2.4-1.5-.5.5-1.1.8-1.8.9" fill="#b58360"/><path d="m41.3 36l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#d6a57c"/><path d="m42.8 43.2l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.6.6-1.3 1-2.1 1" fill="#b58360"/><path d="m45.8 31.7l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#d6a57c"/><g fill="#b58360"><path d="m42.1 32.7c0 0 1.3-.9 3.6-.7-1.7-.9-3.7-.3-3.7-.3s-3.9-4.6-7.5-2.7c3.8-.8 7.6 3.7 7.6 3.7"/><path d="m47.2 38.9l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.5.6-1.2.9-2.1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f919-1f3fe.svg b/riot/emojione/svg/1f919-1f3fe.svg new file mode 100644 index 0000000..c7d9afa --- /dev/null +++ b/riot/emojione/svg/1f919-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m47.8 31c0 0-8.6-6.5-9.8-8.5-1.4-2.4-2.1-6.1 1.9-8.6 4.2-2.7 6.3-7 5-9.6-1.6-3.2-5.1-3.1-7.7.4-5.9 7.6-12.5 10.9-16.2 16.7-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l7.2 4.2 20.5-21.4"/><path d="m28.7 52.5c2.4 2.1 8.5 8.1 8.5 8.1 3.7 3.2 8.6-2.2 4.9-5.4l-10.8-9.8c.1 0-6.2 3.9-2.6 7.1"/></g><path d="m42.3 55.3c2.9 3-1.6 7.8-4.9 4.4-2.6-2.7-5.1-5.5-10.1-8.6-2.9-1.8-5.9-3.5-5.9-3.5-3.6-2.1-7.5-8.3-5.4-13.8 1.4-3.7 4.1-8.8 6.3-12.1 3.7-5.8 10.2-9.5 16.1-17.1.8-1.1 2.5-2.7 4.4-2.3-1.7-.6-3.8.2-5.6 2.5-5.9 7.5-12.5 10.8-16.2 16.6-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l6.5 3.8c5.5 3.4 7.1 5.9 10.3 8.7 1.7 1.4 4 1.9 5.5.2 1.8-2 1.4-4.2-.1-5.6" fill="#935e3e"/><path d="m37.7 22.2c11.5 6.4 12.3 10.9 12.3 13.6-.1 4.9-6.8 5-8 .8l-.6-5.9c-.5-5-8-10.9-3.7-8.5" fill="#b47d56"/><path d="m23 31.5c4.3 2.6 9.8 1.4 12.7-2.7-.2.6-.4 1.2-.8 1.7-2.2 3.6-6.8 4.8-10.4 2.7-1-.6-1.9-1.5-2.5-2.4.4.2.7.5 1 .7" fill="#935e3e"/><path d="m36.8 42l-3.6.3-2.7-2.3c-3.3-2.7-7.6 2.7-4.4 5.4l3.9 3.2c.8.6 1.4.8 2.4.7l5.1-.5c4.2-.3 3.5-7.2-.7-6.8" fill="#b47d56"/><path d="m38.1 48.2l-5.1.4c-1.1.1-1.7-.1-2.4-.7l-3.9-3.2c-1.4-1.2-1.4-2.9-.6-4.2-1.3 1.3-1.7 3.5 0 4.9l3.9 3.2c.7.6 1.4.8 2.4.7l5.1-.5c1.1-.1 1.9-.7 2.4-1.5-.5.5-1.1.8-1.8.9" fill="#935e3e"/><path d="m41.3 36l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#b47d56"/><path d="m42.8 43.2l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.6.6-1.3 1-2.1 1" fill="#935e3e"/><path d="m45.8 31.7l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#b47d56"/><g fill="#935e3e"><path d="m42.1 32.7c0 0 1.3-.9 3.6-.7-1.7-.9-3.7-.3-3.7-.3s-3.9-4.6-7.5-2.7c3.8-.8 7.6 3.7 7.6 3.7"/><path d="m47.2 38.9l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.5.6-1.2.9-2.1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f919-1f3ff.svg b/riot/emojione/svg/1f919-1f3ff.svg new file mode 100644 index 0000000..7f95819 --- /dev/null +++ b/riot/emojione/svg/1f919-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m47.8 31c0 0-8.6-6.5-9.8-8.5-1.4-2.4-2.1-6.1 1.9-8.6 4.2-2.7 6.3-7 5-9.6-1.6-3.2-5.1-3.1-7.7.4-5.9 7.6-12.5 10.9-16.2 16.7-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l7.2 4.2 20.5-21.4"/><path d="m28.7 52.5c2.4 2.1 8.5 8.1 8.5 8.1 3.7 3.2 8.6-2.2 4.9-5.4l-10.8-9.8c.1 0-6.2 3.9-2.6 7.1"/></g><path d="m42.3 55.3c2.9 3-1.6 7.8-4.9 4.4-2.6-2.7-5.1-5.5-10.1-8.6-2.9-1.8-5.9-3.5-5.9-3.5-3.6-2.1-7.5-8.3-5.4-13.8 1.4-3.7 4.1-8.8 6.3-12.1 3.7-5.8 10.2-9.5 16.1-17.1.8-1.1 2.5-2.7 4.4-2.3-1.7-.6-3.8.2-5.6 2.5-5.9 7.5-12.5 10.8-16.2 16.6-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l6.5 3.8c5.5 3.4 7.1 5.9 10.3 8.7 1.7 1.4 4 1.9 5.5.2 1.8-2 1.4-4.2-.1-5.6" fill="#705041"/><path d="m37.7 22.2c11.5 6.4 12.3 10.9 12.3 13.6-.1 4.9-6.8 5-8 .8l-.6-5.9c-.5-5-8-10.9-3.7-8.5" fill="#8a6859"/><path d="m23 31.5c4.3 2.6 9.8 1.4 12.7-2.7-.2.6-.4 1.2-.8 1.7-2.2 3.6-6.8 4.8-10.4 2.7-1-.6-1.9-1.5-2.5-2.4.4.2.7.5 1 .7" fill="#705041"/><path d="m36.8 42l-3.6.3-2.7-2.3c-3.3-2.7-7.6 2.7-4.4 5.4l3.9 3.2c.8.6 1.4.8 2.4.7l5.1-.5c4.2-.3 3.5-7.2-.7-6.8" fill="#8a6859"/><path d="m38.1 48.2l-5.1.4c-1.1.1-1.7-.1-2.4-.7l-3.9-3.2c-1.4-1.2-1.4-2.9-.6-4.2-1.3 1.3-1.7 3.5 0 4.9l3.9 3.2c.8.6 1.4.8 2.4.7l5.1-.5c1.1-.1 1.9-.7 2.4-1.5-.5.5-1.1.8-1.8.9" fill="#705041"/><path d="m41.3 36l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#8a6859"/><path d="m42.8 43.2l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.6.6-1.3 1-2.1 1" fill="#705041"/><path d="m45.8 31.7l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#8a6859"/><g fill="#705041"><path d="m42.1 32.7c0 0 1.3-.9 3.6-.7-1.7-.9-3.7-.3-3.7-.3s-3.9-4.6-7.5-2.7c3.8-.8 7.6 3.7 7.6 3.7"/><path d="m47.2 38.9l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.5.6-1.2.9-2.1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f919.svg b/riot/emojione/svg/1f919.svg new file mode 100644 index 0000000..84df19c --- /dev/null +++ b/riot/emojione/svg/1f919.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m47.8 31c0 0-8.6-6.5-9.8-8.5-1.4-2.4-2.1-6.1 1.9-8.6 4.2-2.7 6.3-7 5-9.6-1.6-3.2-5.1-3.1-7.7.4-5.9 7.6-12.5 10.9-16.2 16.7-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l7.2 4.2 20.5-21.4"/><path d="m28.7 52.5c2.4 2.1 8.5 8.1 8.5 8.1 3.7 3.2 8.6-2.2 4.9-5.4l-10.8-9.8c.1 0-6.2 3.9-2.6 7.1"/></g><path d="m42.3 55.3c2.9 3-1.6 7.8-4.9 4.4-2.6-2.7-5.1-5.5-10.1-8.6-2.9-1.8-5.9-3.5-5.9-3.5-3.6-2.1-7.5-8.3-5.4-13.8 1.4-3.7 4.1-8.8 6.3-12.1 3.7-5.8 10.2-9.5 16.1-17.1.8-1.1 2.5-2.7 4.4-2.3-1.7-.6-3.8.2-5.6 2.5-5.9 7.5-12.5 10.8-16.2 16.6-2.2 3.4-5.1 8.6-6.5 12.4-2 5.5 2 12.4 5.6 14.4l6.5 3.8c5.5 3.4 7.1 5.9 10.3 8.7 1.7 1.4 4 1.9 5.5.2 1.8-2 1.4-4.2-.1-5.6" fill="#eba352"/><path d="m37.7 22.2c11.5 6.4 12.3 10.9 12.3 13.6-.1 4.9-6.8 5-8 .8l-.6-5.9c-.5-5-8-10.9-3.7-8.5" fill="#ffdd67"/><path d="m23 31.5c4.3 2.6 9.8 1.4 12.7-2.7-.2.6-.4 1.2-.8 1.7-2.2 3.6-6.8 4.8-10.4 2.6-1-.6-1.9-1.5-2.5-2.4.4.3.7.6 1 .8" fill="#eba352"/><path d="m36.8 42l-3.6.3-2.7-2.3c-3.3-2.7-7.6 2.7-4.4 5.4l3.9 3.2c.8.6 1.4.8 2.4.7l5.1-.5c4.2-.3 3.5-7.2-.7-6.8" fill="#ffdd67"/><path d="m38.1 48.2l-5.1.4c-1.1.1-1.7-.1-2.4-.7l-3.9-3.2c-1.4-1.2-1.4-2.9-.6-4.2-1.3 1.3-1.7 3.5 0 4.9l3.9 3.2c.7.6 1.4.8 2.4.7l5.1-.5c1.1-.1 1.9-.7 2.4-1.5-.5.5-1.1.8-1.8.9" fill="#eba352"/><path d="m41.3 36l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#ffdd67"/><path d="m42.8 43.2l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.6.6-1.3 1-2.1 1" fill="#eba352"/><path d="m45.8 31.7l-4.1.4-3.2-2.7c-3.8-3.1-8.9 3.1-5.1 6.3l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c4.8-.4 4-8.5-.9-8" fill="#ffdd67"/><g fill="#eba352"><path d="m42.1 32.7c0 0 1.3-.9 3.6-.7-1.7-.9-3.7-.3-3.7-.3s-3.9-4.6-7.5-2.7c3.8-.8 7.6 3.7 7.6 3.7"/><path d="m47.2 38.9l-5.9.6c-1.2.1-1.9-.2-2.8-.8l-4.6-3.8c-1.7-1.4-1.6-3.4-.7-4.9-1.5 1.6-2 4.1 0 5.7l4.6 3.8c.9.7 1.6 1 2.8.8l5.9-.6c1.3-.1 2.2-.8 2.8-1.8-.5.6-1.2.9-2.1 1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91a-1f3fb.svg b/riot/emojione/svg/1f91a-1f3fb.svg new file mode 100644 index 0000000..7a7baa8 --- /dev/null +++ b/riot/emojione/svg/1f91a-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.3 40.9h-8.1v-31.6c0-2.1 1.8-3.9 4-3.9 2.2 0 4 1.8 4 3.9l.1 31.6" fill="#ffe1bd"/><path d="m25.3 5.5c.3 0 .5 0 .7.1-1.9.3-3.3 1.9-3.3 3.8v31.6h-1.4v-31.7c-.1-2.1 1.7-3.8 4-3.8" fill="#e6b796"/><path d="m38.4 40.9h-9v-34.2c0-2.6 2-4.7 4.5-4.7 2.5 0 4.5 2.1 4.5 4.7 0 0 0 34.2 0 34.2" fill="#ffe1bd"/><path d="m33.8 2c.2 0 .5 0 .7.1-2.2.3-3.8 2.3-3.8 4.6v34.2h-1.4v-34.2c0-2.6 2-4.7 4.5-4.7" fill="#e6b796"/><path d="m46.2 40.9h-7.9v-32.2c0-2.2 1.8-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1l.1 32.2" fill="#ffe1bd"/><path d="m42.3 4.6c.2 0 .5 0 .7.1-1.8.3-3.3 2-3.3 4v32.2h-1.4v-32.2c.1-2.3 1.8-4.1 4-4.1" fill="#e6b796"/><path d="m49.8 9.4c2 0 3.6 1.7 3.6 3.8v27.7h-7.2v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#ffe1bd"/><path d="m49.8 9.4c.2 0 .5 0 .7.1-1.7.3-2.9 1.9-2.9 3.7v27.7h-1.4v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#e6b796"/><path d="m13.5 30.2c4.3.4 5.7 3.7 6.2 5.4l.2.8c0 0 .5.5 1.1 1.4.1 0 .1 0 .2 0 0 0 1.9-3 1.8-9.2l6.3.5 1.4 1 7.7-.1 1.3 1.4 6.6-.4 1.4 1.3c0 0 5.7 0 5.8.6.5 2.1 1 5 0 13.5-2.4 20.5-28.8 16.8-34.2 7.7-1-1.7-4.9-6.5-4.9-6.5-.6-.5-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.8-1.8.2-4.7 3.2-4.4" fill="#ffe1bd"/><g fill="#e6b796"><path d="m11 31c-.2.7-.1 1.4.1 1.9 2 4.2 2.7 7.8 3 10.7.1 1 .5 2.1 1.1 2.7 2.9 3 7.2 14.4 17.5 14.4 11.4 0 16.9-5.2 18.6-7.4-1.3 3.2-6.7 8.6-18.7 8.6-11.2 0-14.2-10.1-18.2-14.6-.7-.9-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.5-.9-.3-2.4.7-3.3"/><path d="m20.1 41.8c0 0-1.3-4.1-1.8-6-.4-1.6-1.9-4.5-4.5-5.6 4 .5 5.4 3.8 5.9 5.4l.2.8c0 0 .7.5 1.3 1.4 0 0-1.3 1.8-1.1 4"/><path d="m28.9 26.9c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.1-.2-1.7"/><path d="m38 27.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/><path d="m45.8 28.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91a-1f3fc.svg b/riot/emojione/svg/1f91a-1f3fc.svg new file mode 100644 index 0000000..7343906 --- /dev/null +++ b/riot/emojione/svg/1f91a-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.3 40.9h-8.1v-31.6c0-2.1 1.8-3.9 4-3.9 2.2 0 4 1.8 4 3.9l.1 31.6" fill="#fed0ac"/><path d="m25.3 5.5c.3 0 .5 0 .7.1-1.9.3-3.3 1.9-3.3 3.8v31.6h-1.4v-31.7c-.1-2.1 1.7-3.8 4-3.8" fill="#e0a372"/><path d="m38.4 40.9h-9v-34.2c0-2.6 2-4.7 4.5-4.7 2.5 0 4.5 2.1 4.5 4.7v34.2" fill="#fed0ac"/><path d="m33.8 2c.2 0 .5 0 .7.1-2.2.3-3.8 2.3-3.8 4.6v34.2h-1.4v-34.2c0-2.6 2-4.7 4.5-4.7" fill="#e0a372"/><path d="m46.2 40.9h-7.9v-32.2c0-2.2 1.8-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1l.1 32.2" fill="#fed0ac"/><path d="m42.3 4.6c.2 0 .5 0 .7.1-1.8.3-3.3 2-3.3 4v32.2h-1.4v-32.2c.1-2.3 1.8-4.1 4-4.1" fill="#e0a372"/><path d="m49.8 9.4c2 0 3.6 1.7 3.6 3.8v27.7h-7.2v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#fed0ac"/><path d="m49.8 9.4c.2 0 .5 0 .7.1-1.7.3-2.9 1.9-2.9 3.7v27.7h-1.4v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#e0a372"/><path d="m13.5 30.2c4.3.4 5.7 3.7 6.2 5.4l.2.8c0 0 .5.5 1.1 1.4.1 0 .1 0 .2 0 0 0 1.9-3 1.8-9.2l6.3.5 1.4 1 7.7-.1 1.3 1.4 6.6-.4 1.4 1.3c0 0 5.7 0 5.8.6.5 2.1 1 5 0 13.5-2.4 20.5-28.8 16.8-34.2 7.7-1-1.7-4.9-6.5-4.9-6.5-.6-.5-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.8-1.8.2-4.7 3.2-4.4" fill="#fed0ac"/><g fill="#e0a372"><path d="m11 31c-.2.7-.1 1.4.1 1.9 2 4.2 2.7 7.8 3 10.7.1 1 .5 2.1 1.1 2.7 2.9 3 7.2 14.4 17.5 14.4 11.4 0 16.9-5.2 18.6-7.4-1.3 3.2-6.7 8.6-18.7 8.6-11.2 0-14.2-10.1-18.2-14.6-.7-.9-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.5-.9-.3-2.4.7-3.3"/><path d="m20.1 41.8c0 0-1.3-4.1-1.8-6-.4-1.6-1.9-4.5-4.5-5.6 4 .5 5.4 3.8 5.9 5.4l.2.8c0 0 .7.5 1.3 1.4 0 0-1.3 1.8-1.1 4"/><path d="m28.9 26.9c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.1-.2-1.7"/><path d="m38 27.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/><path d="m45.8 28.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91a-1f3fd.svg b/riot/emojione/svg/1f91a-1f3fd.svg new file mode 100644 index 0000000..55f936d --- /dev/null +++ b/riot/emojione/svg/1f91a-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.3 40.9h-8.1v-31.6c0-2.1 1.8-3.9 4-3.9 2.2 0 4 1.8 4 3.9l.1 31.6" fill="#d6a57c"/><path d="m25.3 5.5c.3 0 .5 0 .7.1-1.9.3-3.3 1.9-3.3 3.8v31.6h-1.4v-31.7c-.1-2.1 1.7-3.8 4-3.8" fill="#b58360"/><path d="m38.4 40.9h-9v-34.2c0-2.6 2-4.7 4.5-4.7 2.5 0 4.5 2.1 4.5 4.7 0 0 0 34.2 0 34.2" fill="#d6a57c"/><path d="m33.8 2c.2 0 .5 0 .7.1-2.2.3-3.8 2.3-3.8 4.6v34.2h-1.4v-34.2c0-2.6 2-4.7 4.5-4.7" fill="#b58360"/><path d="m46.2 40.9h-7.9v-32.2c0-2.2 1.8-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1l.1 32.2" fill="#d6a57c"/><path d="m42.3 4.6c.2 0 .5 0 .7.1-1.8.3-3.3 2-3.3 4v32.2h-1.4v-32.2c.1-2.3 1.8-4.1 4-4.1" fill="#b58360"/><path d="m49.8 9.4c2 0 3.6 1.7 3.6 3.8v27.7h-7.2v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#d6a57c"/><path d="m49.8 9.4c.2 0 .5 0 .7.1-1.7.3-2.9 1.9-2.9 3.7v27.7h-1.4v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#b58360"/><path d="m13.5 30.2c4.3.4 5.7 3.7 6.2 5.4l.2.8c0 0 .5.5 1.1 1.4.1 0 .1 0 .2 0 0 0 1.9-3 1.8-9.2l6.3.5 1.4 1 7.7-.1 1.3 1.4 6.6-.4 1.4 1.3c0 0 5.7 0 5.8.6.5 2.1 1 5 0 13.5-2.4 20.5-28.8 16.8-34.2 7.7-1-1.7-4.9-6.5-4.9-6.5-.6-.5-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.8-1.8.2-4.7 3.2-4.4" fill="#d6a57c"/><g fill="#b58360"><path d="m11 31c-.2.7-.1 1.4.1 1.9 2 4.2 2.7 7.8 3 10.7.1 1 .5 2.1 1.1 2.7 2.9 3 7.2 14.4 17.5 14.4 11.4 0 16.9-5.2 18.6-7.4-1.3 3.2-6.7 8.6-18.7 8.6-11.2 0-14.2-10.1-18.2-14.6-.7-.9-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.5-.9-.3-2.4.7-3.3"/><path d="m20.1 41.8c0 0-1.3-4.1-1.8-6-.4-1.6-1.9-4.5-4.5-5.6 4 .5 5.4 3.8 5.9 5.4l.2.8c0 0 .7.5 1.3 1.4 0 0-1.3 1.8-1.1 4"/><path d="m28.9 26.9c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.1-.2-1.7"/><path d="m38 27.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/><path d="m45.8 28.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91a-1f3fe.svg b/riot/emojione/svg/1f91a-1f3fe.svg new file mode 100644 index 0000000..6dc3b22 --- /dev/null +++ b/riot/emojione/svg/1f91a-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.3 40.9h-8.1v-31.6c0-2.1 1.8-3.9 4-3.9 2.2 0 4 1.8 4 3.9l.1 31.6" fill="#b47d56"/><path d="m25.3 5.5c.3 0 .5 0 .7.1-1.9.3-3.3 1.9-3.3 3.8v31.6h-1.4v-31.7c-.1-2.1 1.7-3.8 4-3.8" fill="#935e3e"/><path d="m38.4 40.9h-9v-34.2c0-2.6 2-4.7 4.5-4.7 2.5 0 4.5 2.1 4.5 4.7v34.2" fill="#b47d56"/><path d="m33.8 2c.2 0 .5 0 .7.1-2.2.3-3.8 2.3-3.8 4.6v34.2h-1.4v-34.2c0-2.6 2-4.7 4.5-4.7" fill="#935e3e"/><path d="m46.2 40.9h-7.9v-32.2c0-2.2 1.8-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1l.1 32.2" fill="#b47d56"/><path d="m42.3 4.6c.2 0 .5 0 .7.1-1.8.3-3.3 2-3.3 4v32.2h-1.4v-32.2c.1-2.3 1.8-4.1 4-4.1" fill="#935e3e"/><path d="m49.8 9.4c2 0 3.6 1.7 3.6 3.8v27.7h-7.2v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#b47d56"/><path d="m49.8 9.4c.2 0 .5 0 .7.1-1.7.3-2.9 1.9-2.9 3.7v27.7h-1.4v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#935e3e"/><path d="m13.5 30.2c4.3.4 5.7 3.7 6.2 5.4l.2.8c0 0 .5.5 1.1 1.4.1 0 .1 0 .2 0 0 0 1.9-3 1.8-9.2l6.3.5 1.4 1 7.7-.1 1.3 1.4 6.6-.4 1.4 1.3c0 0 5.7 0 5.8.6.5 2.1 1 5 0 13.5-2.4 20.5-28.8 16.8-34.2 7.7-1-1.7-4.9-6.5-4.9-6.5-.6-.5-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.8-1.8.2-4.7 3.2-4.4" fill="#b47d56"/><g fill="#935e3e"><path d="m11 31c-.2.7-.1 1.4.1 1.9 2 4.2 2.7 7.8 3 10.7.1 1 .5 2.1 1.1 2.7 2.9 3 7.2 14.4 17.5 14.4 11.4 0 16.9-5.2 18.6-7.4-1.3 3.2-6.7 8.6-18.7 8.6-11.2 0-14.2-10.1-18.2-14.6-.7-.9-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.5-.9-.3-2.4.7-3.3"/><path d="m20.1 41.8c0 0-1.3-4.1-1.8-6-.4-1.6-1.9-4.5-4.5-5.6 4 .5 5.4 3.8 5.9 5.4l.2.8c0 0 .7.5 1.3 1.4 0 0-1.3 1.8-1.1 4"/><path d="m28.9 26.9c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.1-.2-1.7"/><path d="m38 27.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/><path d="m45.8 28.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91a-1f3ff.svg b/riot/emojione/svg/1f91a-1f3ff.svg new file mode 100644 index 0000000..d27a387 --- /dev/null +++ b/riot/emojione/svg/1f91a-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.3 40.9h-8.1v-31.6c0-2.1 1.8-3.9 4-3.9 2.2 0 4 1.8 4 3.9l.1 31.6" fill="#8a6859"/><path d="m25.3 5.5c.3 0 .5 0 .7.1-1.9.3-3.3 1.9-3.3 3.8v31.6h-1.4v-31.7c-.1-2.1 1.7-3.8 4-3.8" fill="#705041"/><path d="m38.4 40.9h-9v-34.2c0-2.6 2-4.7 4.5-4.7 2.5 0 4.5 2.1 4.5 4.7v34.2" fill="#8a6859"/><path d="m33.8 2c.2 0 .5 0 .7.1-2.2.3-3.8 2.3-3.8 4.6v34.2h-1.4v-34.2c0-2.6 2-4.7 4.5-4.7" fill="#705041"/><path d="m46.2 40.9h-7.9v-32.2c0-2.2 1.8-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1l.1 32.2" fill="#8a6859"/><path d="m42.3 4.6c.2 0 .5 0 .7.1-1.8.3-3.3 2-3.3 4v32.2h-1.4v-32.2c.1-2.3 1.8-4.1 4-4.1" fill="#705041"/><path d="m49.8 9.4c2 0 3.6 1.7 3.6 3.8v27.7h-7.2v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#8a6859"/><path d="m49.8 9.4c.2 0 .5 0 .7.1-1.7.3-2.9 1.9-2.9 3.7v27.7h-1.4v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#705041"/><path d="m13.5 30.2c4.3.4 5.7 3.7 6.2 5.4l.2.8c0 0 .5.5 1.1 1.4.1 0 .1 0 .2 0 0 0 1.9-3 1.8-9.2l6.3.5 1.4 1 7.7-.1 1.3 1.4 6.6-.4 1.4 1.3c0 0 5.7 0 5.8.6.5 2.1 1 5 0 13.5-2.4 20.5-28.8 16.8-34.2 7.7-1-1.7-4.9-6.5-4.9-6.5-.6-.5-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.8-1.8.2-4.7 3.2-4.4" fill="#8a6859"/><g fill="#705041"><path d="m11 31c-.2.7-.1 1.4.1 1.9 2 4.2 2.7 7.8 3 10.7.1 1 .5 2.1 1.1 2.7 2.9 3 7.2 14.4 17.5 14.4 11.4 0 16.9-5.2 18.6-7.4-1.3 3.2-6.7 8.6-18.7 8.6-11.2 0-14.2-10.1-18.2-14.6-.7-.9-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.5-.9-.3-2.4.7-3.3"/><path d="m20.1 41.8c0 0-1.3-4.1-1.8-6-.4-1.6-1.9-4.5-4.5-5.6 4 .5 5.4 3.8 5.9 5.4l.2.8c0 0 .7.5 1.3 1.4 0 0-1.3 1.8-1.1 4"/><path d="m28.9 26.9c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.1-.2-1.7"/><path d="m38 27.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/><path d="m45.8 28.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91a.svg b/riot/emojione/svg/1f91a.svg new file mode 100644 index 0000000..74d0015 --- /dev/null +++ b/riot/emojione/svg/1f91a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.3 40.9h-8.1v-31.6c0-2.1 1.8-3.9 4-3.9 2.2 0 4 1.8 4 3.9l.1 31.6" fill="#ffdd67"/><path d="m25.3 5.5c.3 0 .5 0 .7.1-1.9.3-3.3 1.9-3.3 3.8v31.6h-1.4v-31.7c-.1-2.1 1.7-3.8 4-3.8" fill="#eba352"/><path d="m38.4 40.9h-9v-34.2c0-2.6 2-4.7 4.5-4.7 2.5 0 4.5 2.1 4.5 4.7 0 0 0 34.2 0 34.2" fill="#ffdd67"/><path d="m33.8 2c.2 0 .5 0 .7.1-2.2.3-3.8 2.3-3.8 4.6v34.2h-1.4v-34.2c0-2.6 2-4.7 4.5-4.7" fill="#eba352"/><path d="m46.2 40.9h-7.9v-32.2c0-2.2 1.8-4.1 3.9-4.1 2.2 0 3.9 1.8 3.9 4.1l.1 32.2" fill="#ffdd67"/><path d="m42.3 4.6c.2 0 .5 0 .7.1-1.8.3-3.3 2-3.3 4v32.2h-1.4v-32.2c.1-2.3 1.8-4.1 4-4.1" fill="#eba352"/><path d="m49.8 9.4c2 0 3.6 1.7 3.6 3.8v27.7h-7.2v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#ffdd67"/><path d="m49.8 9.4c.2 0 .5 0 .7.1-1.7.3-2.9 1.9-2.9 3.7v27.7h-1.4v-27.7c0-2.1 1.6-3.8 3.6-3.8" fill="#eba352"/><path d="m13.5 30.2c4.3.4 5.7 3.7 6.2 5.4l.2.8c0 0 .5.5 1.1 1.4.1 0 .1 0 .2 0 0 0 1.9-3 1.8-9.2l6.3.5 1.4 1 7.7-.1 1.3 1.4 6.6-.4 1.4 1.3c0 0 5.7 0 5.8.6.5 2.1 1 5 0 13.5-2.4 20.5-28.8 16.8-34.2 7.7-1-1.7-4.9-6.5-4.9-6.5-.6-.5-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.8-1.8.2-4.7 3.2-4.4" fill="#ffdd67"/><g fill="#eba352"><path d="m11 31c-.2.7-.1 1.4.1 1.9 2 4.2 2.7 7.8 3 10.7.1 1 .5 2.1 1.1 2.7 2.9 3 7.2 14.4 17.5 14.4 11.4 0 16.9-5.2 18.6-7.4-1.3 3.2-6.7 8.6-18.7 8.6-11.2 0-14.2-10.1-18.2-14.6-.7-.9-1-1.3-1.1-2.3-.3-2.9-1-6.5-3-10.7-.5-.9-.3-2.4.7-3.3"/><path d="m20.1 41.8c0 0-1.3-4.1-1.8-6-.4-1.6-1.9-4.5-4.5-5.6 4 .5 5.4 3.8 5.9 5.4l.2.8c0 0 .7.5 1.3 1.4 0 0-1.3 1.8-1.1 4"/><path d="m28.9 26.9c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.1-.2-1.7"/><path d="m38 27.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/><path d="m45.8 28.6c.2.5.5 1 .8 1.4.3.4.6.9.9 1.4.3.5.5 1.1.5 1.7 0 .6-.2 1.2-.5 1.7 0-.6-.1-1.1-.2-1.6-.1-.5-.3-.9-.6-1.4-.2-.5-.5-.9-.7-1.5-.3-.5-.4-1.2-.2-1.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91b-1f3fb.svg b/riot/emojione/svg/1f91b-1f3fb.svg new file mode 100644 index 0000000..00f8540 --- /dev/null +++ b/riot/emojione/svg/1f91b-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 7.8c2.7 1.7 6.2 5.5 10.4 7.2 3.8 1.5 11.9 2.3 11.9 2.3v31c0 0-14.8-1-19.6 2.9l-2.7-43.4" fill="#ffe1bd"/><path d="m42.7 48.3c0 0 10.2-2.8 19.3-2.8v2.7c-6.6 0-19.6 2.9-19.6 2.9l.3-2.8" fill="#e6b796"/><path d="m17.9 14.1c0 0 6.5-6.5 9.4-7.9 10.6-5.3 20.2 7.6 19.9 18.5-.2 6.3-1.1 15.9-2.5 22-2.1 9-14.9 9.3-20.5 8.7l-6.3-41.3" fill="#ffe1bd"/><path d="m24.2 54.2c10.9 0 18.1-3.3 21.4-8.4-.5 6.8-9.8 11-21.4 10 0 0 0-1.6 0-1.6" fill="#e6b796"/><path d="M30.2,6.2C12.2,4,5.1,13.5,3.1,17c-1.8,3.1-1.1,6.1,0.7,8c2,2.1,12.2,4.8,12.2,4.8S37,7,30.2,6.2z" fill="#ffe1bd"/><path d="m37 36c-6.9-.6-9.5-6-10.6-8.5l-.9 4c0 0 1.7 5.2 8.4 5.4 1.7.1 3.3-.2 4.7-.9-.5.1-1.1.1-1.6 0" fill="#e6b796"/><path d="m14.6 46.2l3.2 3.1 4.2-.4c4.9-.4 5.5 8.9.6 9.3l-5.9.6c-1.1.1-1.9-.1-2.8-1.1l-4.5-4.4c-3.9-3.7 1.4-10.8 5.2-7.1" fill="#ffe1bd"/><path d="m9.2 52.1l4.5 4.4c.9.9 1.7 1.1 2.8 1.1l5.9-.6c2.2-.2 3.3-2.1 3.4-4.2.3 2.4-.8 5.3-3.4 5.6l-6 .6c-1.1.1-1.8-.3-2.7-1.3l-4.5-4.4c-1-1-1.4-2.3-1.3-3.5.3.8.6 1.6 1.3 2.3" fill="#e6b796"/><path d="m13 36.5l3.7 3.7 4.9-.5c5.8-.5 6.5 10.5.7 11l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-4.3-4.4 1.9-12.8 6.3-8.4" fill="#ffe1bd"/><path d="m6.7 43.4l5.3 5.2c1.1 1.1 2 1.3 3.3 1.3l7-.7c2.6-.2 3.9-2.5 4-4.9.4 2.9-.9 6.1-3.9 6.4l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-1.2-1.2-1.6-2.7-1.5-4.1.2.9.6 1.8 1.4 2.6" fill="#e6b796"/><path d="m12.7 25.3l4.4 4.3 5.7-.5c6.8-.6 7.6 12.2.8 12.8l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-5.2-5.2 2.1-14.9 7.3-9.8" fill="#ffe1bd"/><g fill="#e6b796"><path d="m5.3 33.4l6.2 6.1c1.3 1.3 2.3 1.6 3.8 1.5l8.2-.8c3-.3 4.5-2.9 4.7-5.7.4 3.4-1 7.1-4.6 7.4l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.2 1.1.7 2.1 1.6 3.1"/><path d="m14.4 20.2c0 0-.8-2.4-3.5-4.2 2.6.4 4.4 3 4.4 3l-.9 1.2"/><path d="m3.7 23.7l6.2 6.1c1.3 1.3 2.3 1.5 3.8 1.5l.1 1.7c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.1 1 .7 2.1 1.6 3.1"/></g><path d="m30.8 21.6l-5.1 3.8-1.1 6.9c-1.3 8.1-12.9 5.1-11.6-3l1.6-9.8c.4-1.8.5-3 2-4.1l7.2-5.4c6.2-4.4 13 7.2 7 11.6" fill="#ffe1bd"/><g fill="#e6b796"><path d="m18.6 37.1c-3.9-.1-7-3.6-6-7.8 2-8.4 1.7-10.8 2.5-12.3 2-3.4 12.1-10.6 12.8-11.1-.3.4-10.7 9.6-11.6 11.7-1 2.2-1.1 5.7-2 9.8-1.4 6.2.8 7.8 4.3 9.7"/><path d="m25.7 25.6c0 0 2-.7 4.5-3.3-1.6 3.8-3.3 4.1-3.3 4.1s-1.3 10.9-7 10.8c4.5-1.6 5.8-11.6 5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91b-1f3fc.svg b/riot/emojione/svg/1f91b-1f3fc.svg new file mode 100644 index 0000000..92dd899 --- /dev/null +++ b/riot/emojione/svg/1f91b-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 7.8c2.7 1.7 6.2 5.5 10.4 7.2 3.8 1.5 11.9 2.3 11.9 2.3v31c0 0-14.8-1-19.6 2.9l-2.7-43.4" fill="#fed0ac"/><path d="m42.7 48.3c0 0 10.2-2.8 19.3-2.8v2.7c-6.6 0-19.6 2.9-19.6 2.9l.3-2.8" fill="#e0a372"/><path d="m17.9 14.1c0 0 6.5-6.5 9.4-7.9 10.6-5.3 20.2 7.6 19.9 18.5-.2 6.3-1.1 15.9-2.5 22-2.1 9-14.9 9.3-20.5 8.7l-6.3-41.3" fill="#fed0ac"/><path d="m24.2 54.2c10.9 0 18.1-3.3 21.5-8.4-.5 6.8-9.8 11-21.5 10v-1.6" fill="#e0a372"/><path d="M30.2,6.2C12.2,4,5.1,13.5,3.1,17c-1.8,3.1-1.1,6.1,0.7,8c2,2.1,12.2,4.8,12.2,4.8S37,6.9,30.2,6.2z" fill="#fed0ac"/><path d="m37 36c-6.9-.6-9.5-6-10.6-8.5l-.9 4c0 0 1.7 5.2 8.4 5.4 1.7.1 3.3-.2 4.7-.9-.5.1-1.1.1-1.6 0" fill="#e0a372"/><path d="m14.6 46.2l3.2 3.1 4.2-.4c4.9-.4 5.5 8.9.6 9.3l-5.9.6c-1.1.1-1.9-.1-2.8-1.1l-4.5-4.4c-3.9-3.7 1.4-10.8 5.2-7.1" fill="#fed0ac"/><path d="m9.2 52l4.5 4.4c.9.9 1.7 1.1 2.8 1.1l5.9-.6c2.2-.2 3.3-2.1 3.4-4.2.3 2.4-.8 5.3-3.4 5.6l-6 .6c-1.1.1-1.8-.3-2.7-1.3l-4.5-4.4c-1-1-1.4-2.3-1.3-3.5.3.9.6 1.7 1.3 2.3" fill="#e0a372"/><path d="m13 36.5l3.7 3.7 4.9-.5c5.8-.5 6.5 10.5.7 11l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-4.3-4.4 1.9-12.8 6.3-8.4" fill="#fed0ac"/><path d="m6.7 43.4l5.3 5.2c1.1 1.1 2 1.3 3.3 1.3l7-.7c2.6-.2 3.9-2.5 4-4.9.4 2.9-.9 6.1-3.9 6.4l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-1.2-1.2-1.6-2.7-1.5-4.1.2.9.6 1.8 1.4 2.6" fill="#e0a372"/><path d="m12.7 25.3l4.4 4.3 5.7-.5c6.8-.6 7.6 12.2.8 12.8l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.2c-5.2-5.1 2.1-14.8 7.3-9.7" fill="#fed0ac"/><g fill="#e0a372"><path d="m5.3 33.4l6.2 6.1c1.3 1.3 2.3 1.6 3.8 1.5l8.2-.8c3-.3 4.5-2.9 4.7-5.7.4 3.4-1 7.1-4.6 7.4l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.2 1.1.7 2.1 1.6 3.1"/><path d="m14.4 20.2c0 0-.8-2.4-3.5-4.2 2.6.4 4.4 3 4.4 3l-.9 1.2"/><path d="m3.7 23.6l6.2 6.1c1.3 1.3 2.3 1.5 3.8 1.5l.1 1.7c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.1 1.1.7 2.2 1.6 3.1"/></g><path d="m30.8 21.6l-5.1 3.8-1.1 6.9c-1.3 8.1-12.9 5.1-11.6-3l1.6-9.8c.3-1.8.5-3 2-4.1l7.2-5.4c6.2-4.4 13 7.2 7 11.6" fill="#fed0ac"/><g fill="#e0a372"><path d="m18.6 37.1c-3.9-.1-7-3.6-6-7.8 2-8.4 1.7-10.8 2.5-12.3 2-3.4 12.1-10.6 12.8-11.1-.3.4-10.7 9.6-11.6 11.7-1 2.2-1.1 5.7-2 9.8-1.4 6.2.8 7.8 4.3 9.7"/><path d="m25.7 25.6c0 0 2-.7 4.5-3.3-1.6 3.8-3.3 4.1-3.3 4.1s-1.3 10.9-7 10.8c4.5-1.6 5.8-11.6 5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91b-1f3fd.svg b/riot/emojione/svg/1f91b-1f3fd.svg new file mode 100644 index 0000000..6254ca9 --- /dev/null +++ b/riot/emojione/svg/1f91b-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 7.8c2.7 1.7 6.2 5.5 10.4 7.2 3.8 1.5 11.9 2.3 11.9 2.3v31c0 0-14.8-1-19.6 2.9l-2.7-43.4" fill="#d6a57c"/><path d="m42.7 48.3c0 0 10.2-2.8 19.3-2.8v2.7c-6.6 0-19.6 2.9-19.6 2.9l.3-2.8" fill="#b58360"/><path d="m17.9 14.1c0 0 6.5-6.5 9.4-7.9 10.6-5.3 20.2 7.6 19.9 18.5-.2 6.3-1.1 15.9-2.5 22-2.1 9-14.9 9.3-20.5 8.7l-6.3-41.3" fill="#d6a57c"/><path d="m24.2 54.2c10.9 0 18.1-3.3 21.4-8.4-.5 6.8-9.8 11-21.4 10 0 0 0-1.6 0-1.6" fill="#b58360"/><path d="M30.2,6.2C12.2,4,5.1,13.5,3.1,17c-1.8,3.1-1.1,6.1,0.7,8c2,2.1,12.2,4.8,12.2,4.8S37,7,30.2,6.2z" fill="#d6a57c"/><path d="m37 36c-6.9-.6-9.5-6-10.6-8.5l-.9 4c0 0 1.7 5.2 8.4 5.4 1.7.1 3.3-.2 4.7-.9-.5.1-1.1.1-1.6 0" fill="#b58360"/><path d="m14.6 46.2l3.2 3.1 4.2-.4c4.9-.4 5.5 8.9.6 9.3l-5.9.6c-1.1.1-1.9-.1-2.8-1.1l-4.5-4.4c-3.9-3.7 1.4-10.8 5.2-7.1" fill="#d6a57c"/><path d="m9.2 52.1l4.5 4.4c.9.9 1.7 1.1 2.8 1.1l5.9-.6c2.2-.2 3.3-2.1 3.4-4.2.3 2.4-.8 5.3-3.4 5.6l-6 .6c-1.1.1-1.8-.3-2.7-1.3l-4.5-4.4c-1-1-1.4-2.3-1.3-3.5.3.8.6 1.6 1.3 2.3" fill="#b58360"/><path d="m13 36.5l3.7 3.7 4.9-.5c5.8-.5 6.5 10.5.7 11l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-4.3-4.4 1.9-12.8 6.3-8.4" fill="#d6a57c"/><path d="m6.7 43.4l5.3 5.2c1.1 1.1 2 1.3 3.3 1.3l7-.7c2.6-.2 3.9-2.5 4-4.9.4 2.9-.9 6.1-3.9 6.4l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-1.2-1.2-1.6-2.7-1.5-4.1.2.9.6 1.8 1.4 2.6" fill="#b58360"/><path d="m12.7 25.3l4.4 4.3 5.7-.5c6.8-.6 7.6 12.2.8 12.8l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-5.2-5.2 2.1-14.9 7.3-9.8" fill="#d6a57c"/><g fill="#b58360"><path d="m5.3 33.4l6.2 6.1c1.3 1.3 2.3 1.6 3.8 1.5l8.2-.8c3-.3 4.5-2.9 4.7-5.7.4 3.4-1 7.1-4.6 7.4l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.2 1.1.7 2.1 1.6 3.1"/><path d="m14.4 20.2c0 0-.8-2.4-3.5-4.2 2.6.4 4.4 3 4.4 3l-.9 1.2"/><path d="m3.7 23.7l6.2 6.1c1.3 1.3 2.3 1.5 3.8 1.5l.1 1.7c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.1 1 .7 2.1 1.6 3.1"/></g><path d="m30.8 21.6l-5.1 3.8-1.1 6.9c-1.3 8.1-12.9 5.1-11.6-3l1.6-9.8c.4-1.8.5-3 2-4.1l7.2-5.4c6.2-4.4 13 7.2 7 11.6" fill="#d6a57c"/><g fill="#b58360"><path d="m18.6 37.1c-3.9-.1-7-3.6-6-7.8 2-8.4 1.7-10.8 2.5-12.3 2-3.4 12.1-10.6 12.8-11.1-.3.4-10.7 9.6-11.6 11.7-1 2.2-1.1 5.7-2 9.8-1.4 6.2.8 7.8 4.3 9.7"/><path d="m25.7 25.6c0 0 2-.7 4.5-3.3-1.6 3.8-3.3 4.1-3.3 4.1s-1.3 10.9-7 10.8c4.5-1.6 5.8-11.6 5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91b-1f3fe.svg b/riot/emojione/svg/1f91b-1f3fe.svg new file mode 100644 index 0000000..074eca3 --- /dev/null +++ b/riot/emojione/svg/1f91b-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 7.8c2.7 1.7 6.2 5.5 10.4 7.2 3.8 1.5 11.9 2.3 11.9 2.3v31c0 0-14.8-1-19.6 2.9l-2.7-43.4" fill="#b47d56"/><path d="m42.7 48.3c0 0 10.2-2.8 19.3-2.8v2.7c-6.6 0-19.6 2.9-19.6 2.9l.3-2.8" fill="#935e3e"/><path d="m17.9 14.1c0 0 6.5-6.5 9.4-7.9 10.6-5.3 20.2 7.6 19.9 18.5-.2 6.3-1.1 15.9-2.5 22-2.1 9-14.9 9.3-20.5 8.7l-6.3-41.3" fill="#b47d56"/><path d="m24.2 54.2c10.9 0 18.1-3.3 21.4-8.4-.5 6.8-9.8 11-21.4 10 0 0 0-1.6 0-1.6" fill="#935e3e"/><path d="M30.2,6.2C12.2,4,5.1,13.5,3.1,17c-1.8,3.1-1.1,6.1,0.7,8c2,2.1,12.2,4.8,12.2,4.8S37,7,30.2,6.2z" fill="#b47d56"/><path d="m37 36c-6.9-.6-9.5-6-10.6-8.5l-.9 4c0 0 1.7 5.2 8.4 5.4 1.7.1 3.3-.2 4.7-.9-.5.1-1.1.1-1.6 0" fill="#935e3e"/><path d="m14.6 46.2l3.2 3.1 4.2-.4c4.9-.4 5.5 8.9.6 9.3l-5.9.6c-1.1.1-1.9-.1-2.8-1.1l-4.5-4.4c-3.9-3.7 1.4-10.8 5.2-7.1" fill="#b47d56"/><path d="m9.2 52.1l4.5 4.4c.9.9 1.7 1.1 2.8 1.1l5.9-.6c2.2-.2 3.3-2.1 3.4-4.2.3 2.4-.8 5.3-3.4 5.6l-6 .6c-1.1.1-1.8-.3-2.7-1.3l-4.5-4.4c-1-1-1.4-2.3-1.3-3.5.3.8.6 1.6 1.3 2.3" fill="#935e3e"/><path d="m13 36.5l3.7 3.7 4.9-.5c5.8-.5 6.5 10.5.7 11l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-4.3-4.4 1.9-12.8 6.3-8.4" fill="#b47d56"/><path d="m6.7 43.4l5.3 5.2c1.1 1.1 2 1.3 3.3 1.3l7-.7c2.6-.2 3.9-2.5 4-4.9.4 2.9-.9 6.1-3.9 6.4l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-1.2-1.2-1.6-2.7-1.5-4.1.2.9.6 1.8 1.4 2.6" fill="#935e3e"/><path d="m12.7 25.3l4.4 4.3 5.7-.5c6.8-.6 7.6 12.2.8 12.8l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-5.2-5.2 2.1-14.9 7.3-9.8" fill="#b47d56"/><g fill="#935e3e"><path d="m5.3 33.4l6.2 6.1c1.3 1.3 2.3 1.6 3.8 1.5l8.2-.8c3-.3 4.5-2.9 4.7-5.7.4 3.4-1 7.1-4.6 7.4l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.2 1.1.7 2.1 1.6 3.1"/><path d="m14.4 20.2c0 0-.8-2.4-3.5-4.2 2.6.4 4.4 3 4.4 3l-.9 1.2"/><path d="m3.7 23.7l6.2 6.1c1.3 1.3 2.3 1.5 3.8 1.5l.1 1.7c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.1 1 .7 2.1 1.6 3.1"/></g><path d="m30.8 21.6l-5.1 3.8-1.1 6.9c-1.3 8.1-12.9 5.1-11.6-3l1.6-9.8c.4-1.8.5-3 2-4.1l7.2-5.4c6.2-4.4 13 7.2 7 11.6" fill="#b47d56"/><g fill="#935e3e"><path d="m18.6 37.1c-3.9-.1-7-3.6-6-7.8 2-8.4 1.7-10.8 2.5-12.3 2-3.4 12.1-10.6 12.8-11.1-.3.4-10.7 9.6-11.6 11.7-1 2.2-1.1 5.7-2 9.8-1.4 6.2.8 7.8 4.3 9.7"/><path d="m25.7 25.6c0 0 2-.7 4.5-3.3-1.6 3.8-3.3 4.1-3.3 4.1s-1.3 10.9-7 10.8c4.5-1.6 5.8-11.6 5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91b-1f3ff.svg b/riot/emojione/svg/1f91b-1f3ff.svg new file mode 100644 index 0000000..163866b --- /dev/null +++ b/riot/emojione/svg/1f91b-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 7.8c2.7 1.7 6.2 5.5 10.4 7.2 3.8 1.5 11.9 2.3 11.9 2.3v31c0 0-14.8-1-19.6 2.9l-2.7-43.4" fill="#8a6859"/><path d="m42.7 48.3c0 0 10.2-2.8 19.3-2.8v2.7c-6.6 0-19.6 2.9-19.6 2.9l.3-2.8" fill="#705041"/><path d="m17.9 14.1c0 0 6.5-6.5 9.4-7.9 10.6-5.3 20.2 7.6 19.9 18.5-.2 6.3-1.1 15.9-2.5 22-2.1 9-14.9 9.3-20.5 8.7l-6.3-41.3" fill="#8a6859"/><path d="m24.2 54.2c10.9 0 18.1-3.3 21.4-8.4-.5 6.8-9.8 11-21.4 10 0 0 0-1.6 0-1.6" fill="#705041"/><path d="M30.2,6.2C12.2,4,5.1,13.5,3.1,17c-1.8,3.1-1.1,6.1,0.7,8c2,2.1,12.2,4.8,12.2,4.8S37,6.9,30.2,6.2z" fill="#8a6859"/><path d="m37 36c-6.9-.6-9.5-6-10.6-8.5l-.9 4c0 0 1.7 5.2 8.4 5.4 1.7.1 3.3-.2 4.7-.9-.5.1-1.1.1-1.6 0" fill="#705041"/><path d="m14.6 46.2l3.2 3.1 4.2-.4c4.9-.4 5.5 8.9.6 9.3l-5.9.6c-1.1.1-1.9-.1-2.8-1.1l-4.5-4.4c-3.9-3.7 1.4-10.8 5.2-7.1" fill="#8a6859"/><path d="m9.2 52l4.5 4.4c.9.9 1.7 1.1 2.8 1.1l5.9-.6c2.2-.2 3.3-2.1 3.4-4.2.3 2.4-.8 5.3-3.4 5.6l-6 .6c-1.1.1-1.8-.3-2.7-1.3l-4.5-4.4c-1-1-1.4-2.3-1.3-3.5.3.9.6 1.7 1.3 2.3" fill="#705041"/><path d="m13 36.5l3.7 3.7 4.9-.5c5.8-.5 6.5 10.5.7 11l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-4.3-4.4 1.9-12.8 6.3-8.4" fill="#8a6859"/><path d="m6.7 43.4l5.3 5.2c1.1 1.1 2 1.3 3.3 1.3l7-.7c2.6-.2 3.9-2.5 4-4.9.4 2.9-.9 6.1-3.9 6.4l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-1.2-1.2-1.6-2.7-1.5-4.1.2.9.6 1.8 1.4 2.6" fill="#705041"/><path d="m12.7 25.3l4.4 4.3 5.7-.5c6.8-.6 7.6 12.2.8 12.8l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.2c-5.2-5.1 2.1-14.8 7.3-9.7" fill="#8a6859"/><g fill="#705041"><path d="m5.3 33.4l6.2 6.1c1.3 1.3 2.3 1.6 3.8 1.5l8.2-.8c3-.3 4.5-2.9 4.7-5.7.4 3.4-1 7.1-4.6 7.4l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.2 1.1.7 2.1 1.6 3.1"/><path d="m14.4 20.2c0 0-.8-2.4-3.5-4.2 2.6.4 4.4 3 4.4 3l-.9 1.2"/><path d="m3.7 23.6l6.2 6.1c1.3 1.3 2.3 1.5 3.8 1.5l.1 1.7c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.1 1.1.7 2.2 1.6 3.1"/></g><path d="m30.8 21.6l-5.1 3.8-1.1 6.9c-1.3 8.1-12.9 5.1-11.6-3l1.6-9.8c.4-1.8.5-3 2-4.1l7.2-5.4c6.2-4.4 13 7.2 7 11.6" fill="#8a6859"/><g fill="#705041"><path d="m18.6 37.1c-3.9-.1-7-3.6-6-7.8 2-8.4 1.7-10.8 2.5-12.3 2-3.4 12.1-10.6 12.8-11.1-.3.4-10.7 9.6-11.6 11.7-1 2.2-1.1 5.7-2 9.8-1.4 6.2.8 7.8 4.3 9.7"/><path d="m25.7 25.6c0 0 2-.7 4.5-3.3-1.6 3.8-3.3 4.1-3.3 4.1s-1.3 10.9-7 10.8c4.5-1.6 5.8-11.6 5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91b.svg b/riot/emojione/svg/1f91b.svg new file mode 100644 index 0000000..ea97a80 --- /dev/null +++ b/riot/emojione/svg/1f91b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.6 7.8c2.7 1.7 6.2 5.5 10.4 7.2 3.8 1.5 11.9 2.3 11.9 2.3v31c0 0-14.8-1-19.6 2.9l-2.7-43.4" fill="#ffdd67"/><path d="m42.7 48.3c0 0 10.2-2.8 19.3-2.8v2.7c-6.6 0-19.6 2.9-19.6 2.9l.3-2.8" fill="#eba352"/><path d="m17.9 14.1c0 0 6.5-6.5 9.4-7.9 10.6-5.3 20.2 7.6 19.9 18.5-.2 6.3-1.1 15.9-2.5 22-2.1 9-14.9 9.3-20.5 8.7l-6.3-41.3" fill="#ffdd67"/><path d="m24.2 54.2c10.9 0 18.1-3.3 21.5-8.4-.5 6.8-9.8 11-21.5 10v-1.6" fill="#eba352"/><path d="M30.2,6.2C12.2,4,5.1,13.5,3.1,17c-1.8,3.1-1.1,6.1,0.7,8c2,2.1,12.2,4.8,12.2,4.8S37,7,30.2,6.2z" fill="#ffdd67"/><path d="m37 36c-6.9-.6-9.5-6-10.6-8.5l-.9 4c0 0 1.7 5.2 8.4 5.4 1.7.1 3.3-.2 4.7-.9-.5.1-1.1.1-1.6 0" fill="#eba352"/><path d="m14.6 46.2l3.2 3.1 4.2-.4c4.9-.4 5.5 8.9.6 9.3l-5.9.6c-1.1.1-1.9-.1-2.8-1.1l-4.5-4.4c-3.9-3.7 1.4-10.8 5.2-7.1" fill="#ffdd67"/><path d="m9.2 52l4.5 4.4c.9.9 1.7 1.1 2.8 1.1l5.9-.6c2.2-.2 3.3-2.1 3.4-4.2.3 2.4-.8 5.3-3.4 5.6l-6 .6c-1.1.1-1.8-.3-2.7-1.3l-4.5-4.4c-1-1-1.4-2.3-1.3-3.5.3.9.6 1.7 1.3 2.3" fill="#eba352"/><path d="m13 36.5l3.7 3.7 4.9-.5c5.8-.5 6.5 10.5.7 11l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-4.3-4.4 1.9-12.8 6.3-8.4" fill="#ffdd67"/><path d="m6.7 43.4l5.3 5.2c1.1 1.1 2 1.3 3.3 1.3l7-.7c2.6-.2 3.9-2.5 4-4.9.4 2.9-.9 6.1-3.9 6.4l-7 .7c-1.3.1-2.2-.2-3.3-1.3l-5.3-5.2c-1.2-1.2-1.6-2.7-1.5-4.1.2.9.6 1.8 1.4 2.6" fill="#eba352"/><path d="m12.7 25.3l4.4 4.3 5.7-.5c6.8-.6 7.6 12.2.8 12.8l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.2c-5.2-5.1 2.1-14.8 7.3-9.7" fill="#ffdd67"/><g fill="#eba352"><path d="m5.3 33.4l6.2 6.1c1.3 1.3 2.3 1.6 3.8 1.5l8.2-.8c3-.3 4.5-2.9 4.7-5.7.4 3.4-1 7.1-4.6 7.4l-8.2.8c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.2 1.1.7 2.1 1.6 3.1"/><path d="m14.4 20.2c0 0-.8-2.4-3.5-4.2 2.6.4 4.4 3 4.4 3l-.9 1.2"/><path d="m3.7 23.6l6.2 6.1c1.3 1.3 2.3 1.5 3.8 1.5l.1 1.7c-1.5.1-2.6-.2-3.8-1.5l-6.2-6.1c-1.4-1.4-1.9-3.1-1.7-4.8.1 1.1.7 2.2 1.6 3.1"/></g><path d="m30.8 21.6l-5.1 3.8-1.1 6.9c-1.3 8.1-12.9 5.1-11.6-3l1.6-9.8c.3-1.8.5-3 2-4.1l7.2-5.4c6.2-4.4 13 7.2 7 11.6" fill="#ffdd67"/><g fill="#eba352"><path d="m18.6 37.1c-3.9-.1-7-3.6-6-7.8 2-8.4 1.7-10.8 2.5-12.3 2-3.4 12.1-10.6 12.8-11.1-.3.4-10.7 9.6-11.6 11.7-1 2.2-1.1 5.7-2 9.8-1.4 6.2.8 7.8 4.3 9.7"/><path d="m25.7 25.6c0 0 2-.7 4.5-3.3-1.6 3.8-3.3 4.1-3.3 4.1s-1.3 10.9-7 10.8c4.5-1.6 5.8-11.6 5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91c-1f3fb.svg b/riot/emojione/svg/1f91c-1f3fb.svg new file mode 100644 index 0000000..d3c0de3 --- /dev/null +++ b/riot/emojione/svg/1f91c-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.4 7.8c-2.7 1.7-6.2 5.5-10.4 7.2-3.9 1.5-12 2.3-12 2.3v31c0 0 14.8-1 19.6 2.9l2.8-43.4" fill="#ffe1bd"/><path d="m21.3 48.3c0 0-10.2-2.8-19.3-2.8v2.7c6.6 0 19.6 2.9 19.6 2.9l-.3-2.8" fill="#e6b796"/><path d="m46.1 14.1c0 0-6.5-6.5-9.4-7.9-10.6-5.3-20.2 7.6-19.9 18.5.2 6.3 1.1 15.9 2.5 22 2.1 9 14.9 9.3 20.5 8.7l6.3-41.3" fill="#ffe1bd"/><path d="m39.8 54.2c-10.9 0-18.1-3.3-21.5-8.4.5 6.8 9.8 11 21.5 10v-1.6" fill="#e6b796"/><path d="M33.8,6.2C51.8,4,58.9,13.5,60.9,17c1.8,3.1,1.1,6.1-0.7,8c-2,2.1-12.2,4.8-12.2,4.8S27,7,33.8,6.2z" fill="#ffe1bd"/><path d="m27 36c6.9-.6 9.5-6 10.6-8.5l.9 4c0 0-1.7 5.2-8.4 5.4-1.7.1-3.3-.2-4.7-.9.5.1 1.1.1 1.6 0" fill="#e6b796"/><path d="m49.4 46.2l-3.2 3.1-4.2-.4c-4.9-.4-5.5 8.9-.6 9.3l5.9.6c1.1.1 1.9-.1 2.8-1.1l4.5-4.4c3.9-3.7-1.4-10.8-5.2-7.1" fill="#ffe1bd"/><path d="m54.8 52.1l-4.5 4.4c-.9.9-1.7 1.1-2.8 1.1l-6-.6c-2.2-.2-3.3-2.1-3.4-4.2-.3 2.4.8 5.3 3.4 5.6l6 .6c1.1.1 1.8-.3 2.7-1.3l4.5-4.4c1-1 1.4-2.3 1.3-3.5-.2.8-.5 1.6-1.2 2.3" fill="#e6b796"/><path d="m51 36.5l-3.7 3.7-4.9-.5c-5.8-.5-6.5 10.5-.7 11l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c4.3-4.4-1.9-12.8-6.3-8.4" fill="#ffe1bd"/><path d="m57.3 43.4l-5.3 5.2c-1.1 1.1-2 1.3-3.3 1.3l-7-.7c-2.6-.2-3.9-2.5-4-4.9-.4 2.9.9 6.1 3.9 6.4l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c1.2-1.2 1.6-2.7 1.5-4.1-.2.9-.6 1.8-1.4 2.6" fill="#e6b796"/><path d="m51.3 25.3l-4.3 4.3-5.8-.6c-6.8-.6-7.6 12.2-.8 12.8l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c5.2-5.1-2.1-14.8-7.3-9.7" fill="#ffe1bd"/><g fill="#e6b796"><path d="m58.7 33.4l-6.2 6.1c-1.3 1.3-2.3 1.6-3.8 1.5l-8.2-.8c-3-.3-4.5-2.9-4.7-5.7-.4 3.4 1 7.1 4.6 7.4l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.2 1.1-.7 2.1-1.6 3.1"/><path d="m49.6 20.2c0 0 .8-2.4 3.5-4.2-2.6.4-4.4 3-4.4 3l.9 1.2"/><path d="m60.3 23.7l-6.2 6.1c-1.3 1.3-2.3 1.5-3.8 1.5l-.1 1.7c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.1 1-.6 2.1-1.6 3.1"/></g><path d="m33.2 21.6l5.1 3.8 1.1 6.9c1.3 8.1 12.9 5.1 11.6-3l-1.7-9.8c-.3-1.8-.5-3-2-4.1l-7.3-5.3c-6-4.5-12.8 7.1-6.8 11.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m45.4 37.1c3.9-.1 7-3.6 6-7.8-2-8.4-1.7-10.8-2.5-12.3-2-3.4-12.1-10.6-12.8-11.1.3.4 10.7 9.6 11.6 11.7 1 2.2 1.1 5.7 2 9.8 1.4 6.2-.8 7.8-4.3 9.7"/><path d="m38.3 25.6c0 0-2-.7-4.5-3.3 1.6 3.8 3.3 4.1 3.3 4.1s1.3 10.9 7 10.8c-4.5-1.6-5.8-11.6-5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91c-1f3fc.svg b/riot/emojione/svg/1f91c-1f3fc.svg new file mode 100644 index 0000000..9459974 --- /dev/null +++ b/riot/emojione/svg/1f91c-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.4 7.8c-2.7 1.7-6.2 5.5-10.4 7.2-3.9 1.5-12 2.3-12 2.3v31c0 0 14.8-1 19.6 2.9l2.8-43.4" fill="#fed0ac"/><path d="m21.3 48.3c0 0-10.2-2.8-19.3-2.8v2.7c6.6 0 19.6 2.9 19.6 2.9l-.3-2.8" fill="#e0a372"/><path d="m46.1 14.1c0 0-6.5-6.5-9.4-7.9-10.6-5.3-20.2 7.6-19.9 18.5.2 6.3 1.1 15.9 2.5 22 2.1 9 14.9 9.3 20.5 8.7l6.3-41.3" fill="#fed0ac"/><path d="m39.8 54.2c-10.9 0-18.1-3.3-21.5-8.4.5 6.8 9.8 11 21.5 10v-1.6" fill="#e0a372"/><path d="M33.8,6.2C51.8,4,58.9,13.5,60.9,17c1.8,3.1,1.1,6.1-0.7,8c-2,2.1-12.2,4.8-12.2,4.8S27,7,33.8,6.2z" fill="#fed0ac"/><path d="m27 36c6.9-.6 9.5-6 10.6-8.5l.9 4c0 0-1.7 5.2-8.4 5.4-1.7.1-3.3-.2-4.7-.9.5.1 1.1.1 1.6 0" fill="#e0a372"/><path d="m49.4 46.2l-3.2 3.1-4.2-.4c-4.9-.4-5.5 8.9-.6 9.3l5.9.6c1.1.1 1.9-.1 2.8-1.1l4.5-4.4c3.9-3.7-1.4-10.8-5.2-7.1" fill="#fed0ac"/><path d="m54.8 52.1l-4.5 4.4c-.9.9-1.7 1.1-2.8 1.1l-6-.6c-2.2-.2-3.3-2.1-3.4-4.2-.3 2.4.8 5.3 3.4 5.6l6 .6c1.1.1 1.8-.3 2.7-1.3l4.5-4.4c1-1 1.4-2.3 1.3-3.5-.2.8-.5 1.6-1.2 2.3" fill="#e0a372"/><path d="m51 36.5l-3.7 3.7-4.9-.5c-5.8-.5-6.5 10.5-.7 11l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c4.3-4.4-1.9-12.8-6.3-8.4" fill="#fed0ac"/><path d="m57.3 43.4l-5.3 5.2c-1.1 1.1-2 1.3-3.3 1.3l-7-.7c-2.6-.2-3.9-2.5-4-4.9-.4 2.9.9 6.1 3.9 6.4l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c1.2-1.2 1.6-2.7 1.5-4.1-.2.9-.6 1.8-1.4 2.6" fill="#e0a372"/><path d="m51.3 25.3l-4.3 4.3-5.8-.6c-6.8-.6-7.6 12.2-.8 12.8l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c5.2-5.1-2.1-14.8-7.3-9.7" fill="#fed0ac"/><g fill="#e0a372"><path d="m58.7 33.4l-6.2 6.1c-1.3 1.3-2.3 1.6-3.8 1.5l-8.2-.8c-3-.3-4.5-2.9-4.7-5.7-.4 3.4 1 7.1 4.6 7.4l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.2 1.1-.7 2.1-1.6 3.1"/><path d="m49.6 20.2c0 0 .8-2.4 3.5-4.2-2.6.4-4.4 3-4.4 3l.9 1.2"/><path d="m60.3 23.7l-6.2 6.1c-1.3 1.3-2.3 1.5-3.8 1.5l-.1 1.7c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.1 1-.6 2.1-1.6 3.1"/></g><path d="m33.2 21.6l5.1 3.8 1.1 6.9c1.3 8.1 12.9 5.1 11.6-3l-1.7-9.8c-.3-1.8-.5-3-2-4.1l-7.3-5.3c-6-4.5-12.8 7.1-6.8 11.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m45.4 37.1c3.9-.1 7-3.6 6-7.8-2-8.4-1.7-10.8-2.5-12.3-2-3.4-12.1-10.6-12.8-11.1.3.4 10.7 9.6 11.6 11.7 1 2.2 1.1 5.7 2 9.8 1.4 6.2-.8 7.8-4.3 9.7"/><path d="m38.3 25.6c0 0-2-.7-4.5-3.3 1.6 3.8 3.3 4.1 3.3 4.1s1.3 10.9 7 10.8c-4.5-1.6-5.8-11.6-5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91c-1f3fd.svg b/riot/emojione/svg/1f91c-1f3fd.svg new file mode 100644 index 0000000..c540bb0 --- /dev/null +++ b/riot/emojione/svg/1f91c-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.4 7.8c-2.7 1.7-6.2 5.5-10.4 7.2-3.9 1.5-12 2.3-12 2.3v31c0 0 14.8-1 19.6 2.9l2.8-43.4" fill="#d6a57c"/><path d="m21.3 48.3c0 0-10.2-2.8-19.3-2.8v2.7c6.6 0 19.6 2.9 19.6 2.9l-.3-2.8" fill="#b58360"/><path d="m46.1 14.1c0 0-6.5-6.5-9.4-7.9-10.6-5.3-20.2 7.6-19.9 18.5.2 6.3 1.1 15.9 2.5 22 2.1 9 14.9 9.3 20.5 8.7l6.3-41.3" fill="#d6a57c"/><path d="m39.8 54.2c-10.9 0-18.1-3.3-21.5-8.4.5 6.8 9.8 11 21.5 10v-1.6" fill="#b58360"/><path d="M33.8,6.2C51.8,4,58.9,13.5,60.9,17c1.8,3.1,1.1,6.1-0.7,8c-2,2.1-12.2,4.8-12.2,4.8S27,7,33.8,6.2z" fill="#d6a57c"/><path d="m27 36c6.9-.6 9.5-6 10.6-8.5l.9 4c0 0-1.7 5.2-8.4 5.4-1.7.1-3.3-.2-4.7-.9.5.1 1.1.1 1.6 0" fill="#b58360"/><path d="m49.4 46.2l-3.2 3.1-4.2-.4c-4.9-.4-5.5 8.9-.6 9.3l5.9.6c1.1.1 1.9-.1 2.8-1.1l4.5-4.4c3.9-3.7-1.4-10.8-5.2-7.1" fill="#d6a57c"/><path d="m54.8 52.1l-4.5 4.4c-.9.9-1.7 1.1-2.8 1.1l-6-.6c-2.2-.2-3.3-2.1-3.4-4.2-.3 2.4.8 5.3 3.4 5.6l6 .6c1.1.1 1.8-.3 2.7-1.3l4.5-4.4c1-1 1.4-2.3 1.3-3.5-.2.8-.5 1.6-1.2 2.3" fill="#b58360"/><path d="m51 36.5l-3.7 3.7-4.9-.5c-5.8-.5-6.5 10.5-.7 11l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c4.3-4.4-1.9-12.8-6.3-8.4" fill="#d6a57c"/><path d="m57.3 43.4l-5.3 5.2c-1.1 1.1-2 1.3-3.3 1.3l-7-.7c-2.6-.2-3.9-2.5-4-4.9-.4 2.9.9 6.1 3.9 6.4l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c1.2-1.2 1.6-2.7 1.5-4.1-.2.9-.6 1.8-1.4 2.6" fill="#b58360"/><path d="m51.3 25.3l-4.3 4.3-5.8-.6c-6.8-.6-7.6 12.2-.8 12.8l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c5.2-5.1-2.1-14.8-7.3-9.7" fill="#d6a57c"/><g fill="#b58360"><path d="m58.7 33.4l-6.2 6.1c-1.3 1.3-2.3 1.6-3.8 1.5l-8.2-.8c-3-.3-4.5-2.9-4.7-5.7-.4 3.4 1 7.1 4.6 7.4l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.2 1.1-.7 2.1-1.6 3.1"/><path d="m49.6 20.2c0 0 .8-2.4 3.5-4.2-2.6.4-4.4 3-4.4 3l.9 1.2"/><path d="m60.3 23.7l-6.2 6.1c-1.3 1.3-2.3 1.5-3.8 1.5l-.1 1.7c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.1 1-.6 2.1-1.6 3.1"/></g><path d="m33.2 21.6l5.1 3.8 1.1 6.9c1.3 8.1 12.9 5.1 11.6-3l-1.7-9.8c-.3-1.8-.5-3-2-4.1l-7.3-5.3c-6-4.5-12.8 7.1-6.8 11.5" fill="#d6a57c"/><g fill="#b58360"><path d="m45.4 37.1c3.9-.1 7-3.6 6-7.8-2-8.4-1.7-10.8-2.5-12.3-2-3.4-12.1-10.6-12.8-11.1.3.4 10.7 9.6 11.6 11.7 1 2.2 1.1 5.7 2 9.8 1.4 6.2-.8 7.8-4.3 9.7"/><path d="m38.3 25.6c0 0-2-.7-4.5-3.3 1.6 3.8 3.3 4.1 3.3 4.1s1.3 10.9 7 10.8c-4.5-1.6-5.8-11.6-5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91c-1f3fe.svg b/riot/emojione/svg/1f91c-1f3fe.svg new file mode 100644 index 0000000..c3a410c --- /dev/null +++ b/riot/emojione/svg/1f91c-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.4 7.8c-2.7 1.7-6.2 5.5-10.4 7.2-3.9 1.5-12 2.3-12 2.3v31c0 0 14.8-1 19.6 2.9l2.8-43.4" fill="#b47d56"/><path d="m21.3 48.3c0 0-10.2-2.8-19.3-2.8v2.7c6.6 0 19.6 2.9 19.6 2.9l-.3-2.8" fill="#935e3e"/><path d="m46.1 14.1c0 0-6.5-6.5-9.4-7.9-10.6-5.3-20.2 7.6-19.9 18.5.2 6.3 1.1 15.9 2.5 22 2.1 9 14.9 9.3 20.5 8.7l6.3-41.3" fill="#b47d56"/><path d="m39.8 54.2c-10.9 0-18.1-3.3-21.5-8.4.5 6.8 9.8 11 21.5 10v-1.6" fill="#935e3e"/><path d="M33.8,6.2C51.8,4,58.9,13.5,60.9,17c1.8,3.1,1.1,6.1-0.7,8c-2,2.1-12.2,4.8-12.2,4.8S27,7,33.8,6.2z" fill="#b47d56"/><path d="m27 36c6.9-.6 9.5-6 10.6-8.5l.9 4c0 0-1.7 5.2-8.4 5.4-1.7.1-3.3-.2-4.7-.9.5.1 1.1.1 1.6 0" fill="#935e3e"/><path d="m49.4 46.2l-3.2 3.1-4.2-.4c-4.9-.4-5.5 8.9-.6 9.3l5.9.6c1.1.1 1.9-.1 2.8-1.1l4.5-4.4c3.9-3.7-1.4-10.8-5.2-7.1" fill="#b47d56"/><path d="m54.8 52.1l-4.5 4.4c-.9.9-1.7 1.1-2.8 1.1l-6-.6c-2.2-.2-3.3-2.1-3.4-4.2-.3 2.4.8 5.3 3.4 5.6l6 .6c1.1.1 1.8-.3 2.7-1.3l4.5-4.4c1-1 1.4-2.3 1.3-3.5-.2.8-.5 1.6-1.2 2.3" fill="#935e3e"/><path d="m51 36.5l-3.7 3.7-4.9-.5c-5.8-.5-6.5 10.5-.7 11l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c4.3-4.4-1.9-12.8-6.3-8.4" fill="#b47d56"/><path d="m57.3 43.4l-5.3 5.2c-1.1 1.1-2 1.3-3.3 1.3l-7-.7c-2.6-.2-3.9-2.5-4-4.9-.4 2.9.9 6.1 3.9 6.4l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c1.2-1.2 1.6-2.7 1.5-4.1-.2.9-.6 1.8-1.4 2.6" fill="#935e3e"/><path d="m51.3 25.3l-4.3 4.3-5.8-.6c-6.8-.6-7.6 12.2-.8 12.8l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c5.2-5.1-2.1-14.8-7.3-9.7" fill="#b47d56"/><g fill="#935e3e"><path d="m58.7 33.4l-6.2 6.1c-1.3 1.3-2.3 1.6-3.8 1.5l-8.2-.8c-3-.3-4.5-2.9-4.7-5.7-.4 3.4 1 7.1 4.6 7.4l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.2 1.1-.7 2.1-1.6 3.1"/><path d="m49.6 20.2c0 0 .8-2.4 3.5-4.2-2.6.4-4.4 3-4.4 3l.9 1.2"/><path d="m60.3 23.7l-6.2 6.1c-1.3 1.3-2.3 1.5-3.8 1.5l-.1 1.7c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.1 1-.6 2.1-1.6 3.1"/></g><path d="m33.2 21.6l5.1 3.8 1.1 6.9c1.3 8.1 12.9 5.1 11.6-3l-1.7-9.8c-.3-1.8-.5-3-2-4.1l-7.3-5.3c-6-4.5-12.8 7.1-6.8 11.5" fill="#b47d56"/><g fill="#935e3e"><path d="m45.4 37.1c3.9-.1 7-3.6 6-7.8-2-8.4-1.7-10.8-2.5-12.3-2-3.4-12.1-10.6-12.8-11.1.3.4 10.7 9.6 11.6 11.7 1 2.2 1.1 5.7 2 9.8 1.4 6.2-.8 7.8-4.3 9.7"/><path d="m38.3 25.6c0 0-2-.7-4.5-3.3 1.6 3.8 3.3 4.1 3.3 4.1s1.3 10.9 7 10.8c-4.5-1.6-5.8-11.6-5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91c-1f3ff.svg b/riot/emojione/svg/1f91c-1f3ff.svg new file mode 100644 index 0000000..1ff1b64 --- /dev/null +++ b/riot/emojione/svg/1f91c-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.4 7.8c-2.7 1.7-6.2 5.5-10.4 7.2-3.9 1.5-12 2.3-12 2.3v31c0 0 14.8-1 19.6 2.9l2.8-43.4" fill="#8a6859"/><path d="m21.3 48.3c0 0-10.2-2.8-19.3-2.8v2.7c6.6 0 19.6 2.9 19.6 2.9l-.3-2.8" fill="#705041"/><path d="m46.1 14.1c0 0-6.5-6.5-9.4-7.9-10.6-5.3-20.2 7.6-19.9 18.5.2 6.3 1.1 15.9 2.5 22 2.1 9 14.9 9.3 20.5 8.7l6.3-41.3" fill="#8a6859"/><path d="m39.8 54.2c-10.9 0-18.1-3.3-21.5-8.4.5 6.8 9.8 11 21.5 10v-1.6" fill="#705041"/><path d="M33.8,6.2C51.8,4,58.9,13.5,60.9,17c1.8,3.1,1.1,6.1-0.7,8c-2,2.1-12.2,4.8-12.2,4.8S27,7,33.8,6.2z" fill="#8a6859"/><path d="m27 36c6.9-.6 9.5-6 10.6-8.5l.9 4c0 0-1.7 5.2-8.4 5.4-1.7.1-3.3-.2-4.7-.9.5.1 1.1.1 1.6 0" fill="#705041"/><path d="m49.4 46.2l-3.2 3.1-4.2-.4c-4.9-.4-5.5 8.9-.6 9.3l5.9.6c1.1.1 1.9-.1 2.8-1.1l4.5-4.4c3.9-3.7-1.4-10.8-5.2-7.1" fill="#8a6859"/><path d="m54.8 52.1l-4.5 4.4c-.9.9-1.7 1.1-2.8 1.1l-6-.6c-2.2-.2-3.3-2.1-3.4-4.2-.3 2.4.8 5.3 3.4 5.6l6 .6c1.1.1 1.8-.3 2.7-1.3l4.5-4.4c1-1 1.4-2.3 1.3-3.5-.2.8-.5 1.6-1.2 2.3" fill="#705041"/><path d="m51 36.5l-3.7 3.7-4.9-.5c-5.8-.5-6.5 10.5-.7 11l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c4.3-4.4-1.9-12.8-6.3-8.4" fill="#8a6859"/><path d="m57.3 43.4l-5.3 5.2c-1.1 1.1-2 1.3-3.3 1.3l-7-.7c-2.6-.2-3.9-2.5-4-4.9-.4 2.9.9 6.1 3.9 6.4l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c1.2-1.2 1.6-2.7 1.5-4.1-.2.9-.6 1.8-1.4 2.6" fill="#705041"/><path d="m51.3 25.3l-4.3 4.3-5.8-.6c-6.8-.6-7.6 12.2-.8 12.8l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c5.2-5.1-2.1-14.8-7.3-9.7" fill="#8a6859"/><g fill="#705041"><path d="m58.7 33.4l-6.2 6.1c-1.3 1.3-2.3 1.6-3.8 1.5l-8.2-.8c-3-.3-4.5-2.9-4.7-5.7-.4 3.4 1 7.1 4.6 7.4l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.2 1.1-.7 2.1-1.6 3.1"/><path d="m49.6 20.2c0 0 .8-2.4 3.5-4.2-2.6.4-4.4 3-4.4 3l.9 1.2"/><path d="m60.3 23.7l-6.2 6.1c-1.3 1.3-2.3 1.5-3.8 1.5l-.1 1.7c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.1 1-.6 2.1-1.6 3.1"/></g><path d="m33.2 21.6l5.1 3.8 1.1 6.9c1.3 8.1 12.9 5.1 11.6-3l-1.7-9.8c-.3-1.8-.5-3-2-4.1l-7.3-5.3c-6-4.5-12.8 7.1-6.8 11.5" fill="#8a6859"/><g fill="#705041"><path d="m45.4 37.1c3.9-.1 7-3.6 6-7.8-2-8.4-1.7-10.8-2.5-12.3-2-3.4-12.1-10.6-12.8-11.1.3.4 10.7 9.6 11.6 11.7 1 2.2 1.1 5.7 2 9.8 1.4 6.2-.8 7.8-4.3 9.7"/><path d="m38.3 25.6c0 0-2-.7-4.5-3.3 1.6 3.8 3.3 4.1 3.3 4.1s1.3 10.9 7 10.8c-4.5-1.6-5.8-11.6-5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91c.svg b/riot/emojione/svg/1f91c.svg new file mode 100644 index 0000000..80a75c9 --- /dev/null +++ b/riot/emojione/svg/1f91c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m24.4 7.8c-2.7 1.7-6.2 5.5-10.4 7.2-3.9 1.5-12 2.3-12 2.3v31c0 0 14.8-1 19.6 2.9l2.8-43.4" fill="#ffdd67"/><path d="m21.3 48.3c0 0-10.2-2.8-19.3-2.8v2.7c6.6 0 19.6 2.9 19.6 2.9l-.3-2.8" fill="#eba352"/><path d="m46.1 14.1c0 0-6.5-6.5-9.4-7.9-10.6-5.3-20.2 7.6-19.9 18.5.2 6.3 1.1 15.9 2.5 22 2.1 9 14.9 9.3 20.5 8.7l6.3-41.3" fill="#ffdd67"/><path d="m39.8 54.2c-10.9 0-18.1-3.3-21.4-8.4.5 6.8 9.8 11 21.4 10v-1.6" fill="#eba352"/><path d="M33.8,6.2C51.8,4,58.9,13.5,60.9,17c1.8,3.1,1.1,6.1-0.7,8c-2,2.1-12.2,4.8-12.2,4.8S27,7,33.8,6.2z" fill="#ffdd67"/><path d="m27 36c6.9-.6 9.5-6 10.6-8.5l.9 4c0 0-1.7 5.2-8.4 5.4-1.7.1-3.3-.2-4.7-.9.5.1 1.1.1 1.6 0" fill="#eba352"/><path d="m49.4 46.2l-3.2 3.1-4.2-.4c-4.9-.4-5.5 8.9-.6 9.3l5.9.6c1.1.1 1.9-.1 2.8-1.1l4.5-4.4c3.9-3.7-1.4-10.8-5.2-7.1" fill="#ffdd67"/><path d="m54.8 52l-4.5 4.4c-.9.9-1.7 1.1-2.8 1.1l-6-.5c-2.2-.2-3.3-2.1-3.4-4.2-.3 2.4.8 5.3 3.4 5.6l6 .6c1.1.1 1.8-.3 2.7-1.3l4.5-4.4c1-1 1.4-2.3 1.3-3.5-.2.8-.5 1.6-1.2 2.2" fill="#eba352"/><path d="m51 36.5l-3.7 3.7-4.9-.5c-5.8-.5-6.5 10.5-.7 11l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c4.3-4.4-1.9-12.8-6.3-8.4" fill="#ffdd67"/><path d="m57.3 43.4l-5.3 5.2c-1.1 1.1-2 1.3-3.3 1.3l-7-.7c-2.6-.2-3.9-2.5-4-4.9-.4 2.9.9 6.1 3.9 6.4l7 .7c1.3.1 2.2-.2 3.3-1.3l5.3-5.2c1.2-1.2 1.6-2.7 1.5-4.1-.2.9-.6 1.8-1.4 2.6" fill="#eba352"/><path d="m51.3 25.3l-4.3 4.3-5.8-.6c-6.8-.6-7.6 12.2-.8 12.8l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c5.2-5.1-2.1-14.8-7.3-9.7" fill="#ffdd67"/><g fill="#eba352"><path d="m58.7 33.4l-6.2 6.1c-1.3 1.3-2.3 1.6-3.8 1.5l-8.2-.8c-3-.3-4.5-2.9-4.7-5.7-.4 3.4 1 7.1 4.6 7.4l8.2.8c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.2 1.1-.7 2.1-1.6 3.1"/><path d="m49.6 20.2c0 0 .8-2.4 3.5-4.2-2.6.4-4.4 3-4.4 3l.9 1.2"/><path d="m60.3 23.6l-6.2 6.1c-1.3 1.3-2.3 1.5-3.8 1.5l-.1 1.7c1.5.1 2.6-.2 3.8-1.5l6.2-6.1c1.4-1.4 1.9-3.1 1.7-4.8-.1 1.1-.7 2.2-1.6 3.1"/></g><path d="m33.2 21.6l5.1 3.8 1.1 6.9c1.3 8.1 12.9 5.1 11.6-3l-1.7-9.8c-.3-1.8-.5-3-2-4.1l-7.3-5.3c-6-4.5-12.8 7.1-6.8 11.5" fill="#ffdd67"/><g fill="#eba352"><path d="m45.4 37.1c3.9-.1 7-3.6 6-7.8-2-8.4-1.7-10.8-2.5-12.3-2-3.4-12.1-10.6-12.8-11.1.3.4 10.7 9.6 11.6 11.7 1 2.2 1.1 5.7 2 9.8 1.4 6.2-.8 7.8-4.3 9.7"/><path d="m38.3 25.6c0 0-2-.7-4.5-3.3 1.6 3.8 3.3 4.1 3.3 4.1s1.3 10.9 7 10.8c-4.5-1.6-5.8-11.6-5.8-11.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91d-1f3fb.svg b/riot/emojione/svg/1f91d-1f3fb.svg new file mode 100644 index 0000000..bc7cf60 --- /dev/null +++ b/riot/emojione/svg/1f91d-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.3 33.4l-1.2-18.1-8.3 5.1c-4.1-.7-5.2-.7-8.4-2.3-1.9-.9-4.3-.3-5.5.4-1.8-1.9-13.5.9-14.8 1.5-3.5-1-8.7-5.1-8.7-5.1l-1.7 20.5 2.3.6c.2.7.8 2.4.8 2.4-2.2 2.8.4 6.1 2.9 5-1.1 2.8 1.8 5.4 4.1 3.6-.3 2.6 2.4 4.5 4.4 2.7-.9 3.1 2.6 5.4 4.7 2.9 1.5 1 2.9 1.8 4.1 2.2 2.1.9 4.4-1.1 4-3.6 2.4 2.8 6 .1 5.2-3 2.7 2.1 6-1.4 4.3-4.5 3 1.7 5.6-2.9 2.7-5.9l9.1-4.4" fill="#ffe1bd"/><g fill="#e6b796"><path d="m13.9 36.3c1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.4 1.3.6.3 1.3.3 2 0 .1-.3.3-.7.6-1l.7-.8c.4-.5.9-.9 1.3-1.1.8-2.1-.6-4.1-2.4-4.2"/><path d="m25.4 46.2c1.6.4 2.8 2.5 1.6 4.8l-.6.9c-.6 1.1-1.4 1.6-2.2 1.7 1.1.3 2.3-.1 3.1-1.6l.6-.9c1.4-2.8-.5-5.1-2.5-4.9"/><path d="m18.3 45.4l1.6-2.5c-.1-1.4-1.3-2.6-2.5-2.7 1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.5 1.3.8.4 1.7.3 2.6-.3.1-.5.3-1.1.6-1.6"/><path d="m22.6 40.9c1.6.5 2.7 2.7 1.3 4.9l-1.9 3c-.7 1.1-1.5 1.5-2.3 1.5 1 .3 2.3 0 3.2-1.4l1.9-3c1.6-2.6-.2-5.1-2.2-5"/><path d="m35.9 43.4c.1 0 1.3-.2 1.7-.2-1.5-1.5-3.9-.3-5.3-1.1 1 1.7 3.1 1.3 3.3 1.3l2.4 3.1c2 2.5.4 5.4-1.7 5.7 2.2.7 4.4-1.6 3.7-4.1-.1-.1-4.1-4.7-4.1-4.7"/><path d="m38.3 37.6c0 0 1.5-.3 2.8-.3-1.5-1.2-3.8-.1-5.3-1.1.6 1.3 1.9 1.3 2.3 1.3l4.6 5.3c2.1 2.4.6 5.3-1.5 5.8 2.4.7 4.7-2.4 3.2-5.1-1-.3-6.1-5.9-6.1-5.9"/><path d="m35.1 49.1c-1.5-1.2-3.6-.3-4.5-.9.5 1.4 2.4 1.1 2.5 1.1 1.7 2.6-.1 5.3-2.2 5.5 2.1.9 4.4-1.1 4-3.6-.1-.1-1.5-1.9-1.5-1.9.2-.1 1.3-.2 1.7-.2"/><path d="m55.2 31.7c0 0-1.7 3.5-8.3 5.4-.9-1.1-2.8-3.3-5-5.2 1.4-.3 2.1-1.4 3.2-1.6-.4-.4-1.8-.2-2.9.2-2 .7-6.6-2.5-6.6-2.5l-3.8.5c-2.7 2.6-8.5 4-8.8 0-.2-2.8 5.9-4.7 7.8-6.5 2.4-2.3 4.5-5.2 8.4-3.2 3.2 1.6 4.5 1.5 8.9 2.3 1.5.3 2.5 1 3.6 2.5-.9-2.1-2.2-3-3.8-3.3l7-3.3.1-1.7-8.3 4.7c-3.8-.6-5.2-.6-8.3-2.1-2-1-3.6-.7-4.9.1-2.4-1.4-3.8-1.1-4.7-.9-2.8.9-7.3 1-11.3 2.6.7.2 1.4.4 1.9.4 3.9-1.2 8-1.1 9.9-1.8.6-.2 1.8-.2 3.1.5-.8.7-1.5 1.5-2.3 2.3-1.9 1.8-7.7 4.4-7.3 7.7.2 1.6 2.4 5.8 9.7 1.1l3.1-.4c0 0 5.7 2.7 11 8.9 2.1 2.4.8 5-1.3 5.6 2.7.5 5-3.3 2.4-5.9l6.3-3.4 1.2-3"/></g><path d="m53.4 16.3l3.3 17.1-2.7 1.2c-1.4-3.7-3.5-12.6-3-16.9l2.4-1.4" fill="#3b946f"/><path d="m11.1 38c-.5-1.2-.8-2.8-.8-2.8l-2.5-1.7-.2 1.9 2.2.6c.3 1 .6 1.8 1 2.4l.3-.4" fill="#e6b796"/><path d="m6.1 35.1l5.4-18.7 2.5 1.7c.4 2.8-4.2 15.6-5.9 17.5l-2-.5" fill="#3b946f"/><g fill="#47b892"><path d="m53.3 16.2c-.8.5 2.1 17.8 3.3 17.3 3.8-1.7 5.5-2.2 5.5-2.2v-20.6c-.1 0-2.4 1.7-8.8 5.5"/><path d="m2 9v25.5c0 0 1.8.3 4.1.8 1.3.3 6-18.5 5.7-18.8-3.4-2.3-9.8-7.5-9.8-7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91d-1f3fc.svg b/riot/emojione/svg/1f91d-1f3fc.svg new file mode 100644 index 0000000..c13f18b --- /dev/null +++ b/riot/emojione/svg/1f91d-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.3 33.4l-1.2-18.1-8.3 5.1c-4.1-.7-5.2-.7-8.4-2.3-1.9-.9-4.3-.3-5.5.4-1.8-1.9-13.5.9-14.8 1.5-3.5-1-8.7-5.1-8.7-5.1l-1.8 20.5 2.4.6c.2.7.8 2.4.8 2.4-2.2 2.8.4 6.1 2.9 5-1.1 2.8 1.8 5.4 4.1 3.6-.3 2.6 2.4 4.5 4.4 2.7-.9 3.1 2.6 5.4 4.7 2.9 1.5 1 2.9 1.8 4.1 2.2 2.1.9 4.4-1.1 4-3.6 2.4 2.8 6 .1 5.2-3 2.7 2.1 6-1.4 4.3-4.5 3 1.7 5.6-2.9 2.7-5.9l9.1-4.4" fill="#fed0ac"/><g fill="#e0a372"><path d="m13.9 36.3c1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.4 1.3.6.3 1.3.3 2 0 .1-.3.3-.7.6-1l.7-.8c.4-.5.9-.9 1.3-1.1.8-2.1-.6-4.1-2.4-4.2"/><path d="m25.4 46.2c1.6.4 2.8 2.5 1.6 4.8l-.6.9c-.6 1.1-1.4 1.6-2.2 1.7 1.1.3 2.3-.1 3.1-1.6l.6-.9c1.4-2.8-.5-5.1-2.5-4.9"/><path d="m18.3 45.4l1.6-2.5c-.1-1.4-1.3-2.6-2.5-2.7 1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.5 1.3.8.4 1.7.3 2.6-.3.1-.5.3-1.1.6-1.6"/><path d="m22.6 40.9c1.6.5 2.7 2.7 1.3 4.9l-1.9 3c-.7 1.1-1.5 1.5-2.3 1.5 1 .3 2.3 0 3.2-1.4l1.9-3c1.6-2.6-.2-5.1-2.2-5"/><path d="m35.9 43.4c.1 0 1.3-.2 1.7-.2-1.5-1.5-3.9-.3-5.3-1.1 1 1.7 3.1 1.3 3.3 1.3l2.4 3.1c2 2.5.4 5.4-1.7 5.7 2.2.7 4.4-1.6 3.7-4.1-.1-.1-4.1-4.7-4.1-4.7"/><path d="m38.3 37.6c0 0 1.5-.3 2.8-.3-1.5-1.2-3.8-.1-5.3-1.1.6 1.3 1.9 1.3 2.3 1.3l4.6 5.3c2.1 2.4.6 5.3-1.5 5.8 2.4.7 4.7-2.4 3.2-5.1-1-.3-6.1-5.9-6.1-5.9"/><path d="m35.1 49.1c-1.5-1.2-3.6-.3-4.5-.9.5 1.4 2.4 1.1 2.5 1.1 1.7 2.6-.1 5.3-2.2 5.5 2.1.9 4.4-1.1 4-3.6-.1-.1-1.5-1.9-1.5-1.9.2-.1 1.3-.2 1.7-.2"/><path d="m55.2 31.7c0 0-1.7 3.5-8.3 5.4-.9-1.1-2.8-3.3-5-5.2 1.4-.3 2.1-1.4 3.2-1.6-.4-.4-1.8-.2-2.9.2-2 .7-6.6-2.5-6.6-2.5l-3.8.5c-2.7 2.6-8.5 4-8.8 0-.2-2.8 5.9-4.7 7.8-6.5 2.4-2.3 4.5-5.2 8.4-3.2 3.2 1.6 4.5 1.5 8.9 2.3 1.5.3 2.5 1 3.6 2.5-.9-2.1-2.2-3-3.8-3.3l7-3.3.1-1.7-8.3 4.7c-3.8-.6-5.2-.6-8.3-2.1-2-1-3.6-.7-4.9.1-2.4-1.4-3.8-1.1-4.7-.9-2.8.9-7.3 1-11.3 2.6.7.2 1.4.4 1.9.4 3.9-1.2 8-1.1 9.9-1.8.6-.2 1.8-.2 3.1.5-.8.7-1.5 1.5-2.3 2.3-1.9 1.8-7.7 4.4-7.3 7.7.2 1.6 2.4 5.8 9.7 1.1l3.1-.4c0 0 5.7 2.7 11 8.9 2.1 2.4.8 5-1.3 5.6 2.7.5 5-3.3 2.4-5.9l6.3-3.4 1.2-3"/></g><path d="m53.4 16.3l3.3 17.1-2.7 1.2c-1.4-3.7-3.5-12.6-3-16.9l2.4-1.4" fill="#3b946f"/><path d="m11.1 38c-.5-1.2-.8-2.8-.8-2.8l-2.5-1.7-.2 1.9 2.2.6c.3 1 .6 1.8 1 2.4l.3-.4" fill="#e0a372"/><path d="m6.1 35.1l5.4-18.7 2.5 1.7c.4 2.8-4.2 15.6-5.9 17.5l-2-.5" fill="#3b946f"/><g fill="#47b892"><path d="m53.3 16.2c-.8.5 2.1 17.8 3.3 17.3 3.8-1.7 5.5-2.2 5.5-2.2v-20.6c-.1 0-2.4 1.7-8.8 5.5"/><path d="m2 9v25.5c0 0 1.8.3 4.1.8 1.3.3 6-18.5 5.7-18.8-3.4-2.3-9.8-7.5-9.8-7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91d-1f3fd.svg b/riot/emojione/svg/1f91d-1f3fd.svg new file mode 100644 index 0000000..76871fc --- /dev/null +++ b/riot/emojione/svg/1f91d-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.3 33.4l-1.2-18.1-8.3 5.1c-4.1-.7-5.2-.7-8.4-2.3-1.9-.9-4.3-.3-5.5.4-1.8-1.9-13.5.9-14.8 1.5-3.5-1-8.7-5.1-8.7-5.1l-1.7 20.5 2.3.6c.2.7.8 2.4.8 2.4-2.2 2.8.4 6.1 2.9 5-1.1 2.8 1.8 5.4 4.1 3.6-.3 2.6 2.4 4.5 4.4 2.7-.9 3.1 2.6 5.4 4.7 2.9 1.5 1 2.9 1.8 4.1 2.2 2.1.9 4.4-1.1 4-3.6 2.4 2.8 6 .1 5.2-3 2.7 2.1 6-1.4 4.3-4.5 3 1.7 5.6-2.9 2.7-5.9l9.1-4.4" fill="#d6a57c"/><g fill="#b58360"><path d="m13.9 36.3c1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.4 1.3.6.3 1.3.3 2 0 .1-.3.3-.7.6-1l.7-.8c.4-.5.9-.9 1.3-1.1.8-2.1-.6-4.1-2.4-4.2"/><path d="m25.4 46.2c1.6.4 2.8 2.5 1.6 4.8l-.6.9c-.6 1.1-1.4 1.6-2.2 1.7 1.1.3 2.3-.1 3.1-1.6l.6-.9c1.4-2.8-.5-5.1-2.5-4.9"/><path d="m18.3 45.4l1.6-2.5c-.1-1.4-1.3-2.6-2.5-2.7 1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.5 1.3.8.4 1.7.3 2.6-.3.1-.5.3-1.1.6-1.6"/><path d="m22.6 40.9c1.6.5 2.7 2.7 1.3 4.9l-1.9 3c-.7 1.1-1.5 1.5-2.3 1.5 1 .3 2.3 0 3.2-1.4l1.9-3c1.6-2.6-.2-5.1-2.2-5"/><path d="m35.9 43.4c.1 0 1.3-.2 1.7-.2-1.5-1.5-3.9-.3-5.3-1.1 1 1.7 3.1 1.3 3.3 1.3l2.4 3.1c2 2.5.4 5.4-1.7 5.7 2.2.7 4.4-1.6 3.7-4.1-.1-.1-4.1-4.7-4.1-4.7"/><path d="m38.3 37.6c0 0 1.5-.3 2.8-.3-1.5-1.2-3.8-.1-5.3-1.1.6 1.3 1.9 1.3 2.3 1.3l4.6 5.3c2.1 2.4.6 5.3-1.5 5.8 2.4.7 4.7-2.4 3.2-5.1-1-.3-6.1-5.9-6.1-5.9"/><path d="m35.1 49.1c-1.5-1.2-3.6-.3-4.5-.9.5 1.4 2.4 1.1 2.5 1.1 1.7 2.6-.1 5.3-2.2 5.5 2.1.9 4.4-1.1 4-3.6-.1-.1-1.5-1.9-1.5-1.9.2-.1 1.3-.2 1.7-.2"/><path d="m55.2 31.7c0 0-1.7 3.5-8.3 5.4-.9-1.1-2.8-3.3-5-5.2 1.4-.3 2.1-1.4 3.2-1.6-.4-.4-1.8-.2-2.9.2-2 .7-6.6-2.5-6.6-2.5l-3.8.5c-2.7 2.6-8.5 4-8.8 0-.2-2.8 5.9-4.7 7.8-6.5 2.4-2.3 4.5-5.2 8.4-3.2 3.2 1.6 4.5 1.5 8.9 2.3 1.5.3 2.5 1 3.6 2.5-.9-2.1-2.2-3-3.8-3.3l7-3.3.1-1.7-8.3 4.7c-3.8-.6-5.2-.6-8.3-2.1-2-1-3.6-.7-4.9.1-2.4-1.4-3.8-1.1-4.7-.9-2.8.9-7.3 1-11.3 2.6.7.2 1.4.4 1.9.4 3.9-1.2 8-1.1 9.9-1.8.6-.2 1.8-.2 3.1.5-.8.7-1.5 1.5-2.3 2.3-1.9 1.8-7.7 4.4-7.3 7.7.2 1.6 2.4 5.8 9.7 1.1l3.1-.4c0 0 5.7 2.7 11 8.9 2.1 2.4.8 5-1.3 5.6 2.7.5 5-3.3 2.4-5.9l6.3-3.4 1.2-3"/></g><path d="m53.4 16.3l3.3 17.1-2.7 1.2c-1.4-3.7-3.5-12.6-3-16.9l2.4-1.4" fill="#3b946f"/><path d="m11.1 38c-.5-1.2-.8-2.8-.8-2.8l-2.5-1.7-.2 1.9 2.2.6c.3 1 .6 1.8 1 2.4l.3-.4" fill="#b58360"/><path d="m6.1 35.1l5.4-18.7 2.5 1.7c.4 2.8-4.2 15.6-5.9 17.5l-2-.5" fill="#3b946f"/><g fill="#47b892"><path d="m53.3 16.2c-.8.5 2.1 17.8 3.3 17.3 3.8-1.7 5.5-2.2 5.5-2.2v-20.6c-.1 0-2.4 1.7-8.8 5.5"/><path d="m2 9v25.5c0 0 1.8.3 4.1.8 1.3.3 6-18.5 5.7-18.8-3.4-2.3-9.8-7.5-9.8-7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91d-1f3fe.svg b/riot/emojione/svg/1f91d-1f3fe.svg new file mode 100644 index 0000000..45a6c82 --- /dev/null +++ b/riot/emojione/svg/1f91d-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.3 33.4l-1.2-18.1-8.3 5.1c-4.1-.7-5.2-.7-8.4-2.3-1.9-.9-4.3-.3-5.5.4-1.8-1.9-13.5.9-14.8 1.5-3.5-1-8.7-5.1-8.7-5.1l-1.7 20.5 2.3.6c.2.7.8 2.4.8 2.4-2.2 2.8.4 6.1 2.9 5-1.1 2.8 1.8 5.4 4.1 3.6-.3 2.6 2.4 4.5 4.4 2.7-.9 3.1 2.6 5.4 4.7 2.9 1.5 1 2.9 1.8 4.1 2.2 2.1.9 4.4-1.1 4-3.6 2.4 2.8 6 .1 5.2-3 2.7 2.1 6-1.4 4.3-4.5 3 1.7 5.6-2.9 2.7-5.9l9.1-4.4" fill="#b47d56"/><g fill="#935e3e"><path d="m13.9 36.3c1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.4 1.3.6.3 1.3.3 2 0 .1-.3.3-.7.6-1l.7-.8c.4-.5.9-.9 1.3-1.1.8-2.1-.6-4.1-2.4-4.2"/><path d="m25.4 46.2c1.6.4 2.8 2.5 1.6 4.8l-.6.9c-.6 1.1-1.4 1.6-2.2 1.7 1.1.3 2.3-.1 3.1-1.6l.6-.9c1.4-2.8-.5-5.1-2.5-4.9"/><path d="m18.3 45.4l1.6-2.5c-.1-1.4-1.3-2.6-2.5-2.7 1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.5 1.3.8.4 1.7.3 2.6-.3.1-.5.3-1.1.6-1.6"/><path d="m22.6 40.9c1.6.5 2.7 2.7 1.3 4.9l-1.9 3c-.7 1.1-1.5 1.5-2.3 1.5 1 .3 2.3 0 3.2-1.4l1.9-3c1.6-2.6-.2-5.1-2.2-5"/><path d="m35.9 43.4c.1 0 1.3-.2 1.7-.2-1.5-1.5-3.9-.3-5.3-1.1 1 1.7 3.1 1.3 3.3 1.3l2.4 3.1c2 2.5.4 5.4-1.7 5.7 2.2.7 4.4-1.6 3.7-4.1-.1-.1-4.1-4.7-4.1-4.7"/><path d="m38.3 37.6c0 0 1.5-.3 2.8-.3-1.5-1.2-3.8-.1-5.3-1.1.6 1.3 1.9 1.3 2.3 1.3l4.6 5.3c2.1 2.4.6 5.3-1.5 5.8 2.4.7 4.7-2.4 3.2-5.1-1-.3-6.1-5.9-6.1-5.9"/><path d="m35.1 49.1c-1.5-1.2-3.6-.3-4.5-.9.5 1.4 2.4 1.1 2.5 1.1 1.7 2.6-.1 5.3-2.2 5.5 2.1.9 4.4-1.1 4-3.6-.1-.1-1.5-1.9-1.5-1.9.2-.1 1.3-.2 1.7-.2"/><path d="m55.2 31.7c0 0-1.7 3.5-8.3 5.4-.9-1.1-2.8-3.3-5-5.2 1.4-.3 2.1-1.4 3.2-1.6-.4-.4-1.8-.2-2.9.2-2 .7-6.6-2.5-6.6-2.5l-3.8.5c-2.7 2.6-8.5 4-8.8 0-.2-2.8 5.9-4.7 7.8-6.5 2.4-2.3 4.5-5.2 8.4-3.2 3.2 1.6 4.5 1.5 8.9 2.3 1.5.3 2.5 1 3.6 2.5-.9-2.1-2.2-3-3.8-3.3l7-3.3.1-1.7-8.3 4.7c-3.8-.6-5.2-.6-8.3-2.1-2-1-3.6-.7-4.9.1-2.4-1.4-3.8-1.1-4.7-.9-2.8.9-7.3 1-11.3 2.6.7.2 1.4.4 1.9.4 3.9-1.2 8-1.1 9.9-1.8.6-.2 1.8-.2 3.1.5-.8.7-1.5 1.5-2.3 2.3-1.9 1.8-7.7 4.4-7.3 7.7.2 1.6 2.4 5.8 9.7 1.1l3.1-.4c0 0 5.7 2.7 11 8.9 2.1 2.4.8 5-1.3 5.6 2.7.5 5-3.3 2.4-5.9l6.3-3.4 1.2-3"/></g><path d="m53.4 16.3l3.3 17.1-2.7 1.2c-1.4-3.7-3.5-12.6-3-16.9l2.4-1.4" fill="#3b946f"/><path d="m11.1 38c-.5-1.2-.8-2.8-.8-2.8l-2.5-1.7-.2 1.9 2.2.6c.3 1 .6 1.8 1 2.4l.3-.4" fill="#935e3e"/><path d="m6.1 35.1l5.4-18.7 2.5 1.7c.4 2.8-4.2 15.6-5.9 17.5l-2-.5" fill="#3b946f"/><g fill="#47b892"><path d="m53.3 16.2c-.8.5 2.1 17.8 3.3 17.3 3.8-1.7 5.5-2.2 5.5-2.2v-20.6c-.1 0-2.4 1.7-8.8 5.5"/><path d="m2 9v25.5c0 0 1.8.3 4.1.8 1.3.3 6-18.5 5.7-18.8-3.4-2.3-9.8-7.5-9.8-7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91d-1f3ff.svg b/riot/emojione/svg/1f91d-1f3ff.svg new file mode 100644 index 0000000..4444426 --- /dev/null +++ b/riot/emojione/svg/1f91d-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.3 33.4l-1.2-18.1-8.3 5.1c-4.1-.7-5.2-.7-8.4-2.3-1.9-.9-4.3-.3-5.5.4-1.8-1.9-13.5.9-14.8 1.5-3.5-1-8.7-5.1-8.7-5.1l-1.7 20.5 2.3.6c.2.7.8 2.4.8 2.4-2.2 2.8.4 6.1 2.9 5-1.1 2.8 1.8 5.4 4.1 3.6-.3 2.6 2.4 4.5 4.4 2.7-.9 3.1 2.6 5.4 4.7 2.9 1.5 1 2.9 1.8 4.1 2.2 2.1.9 4.4-1.1 4-3.6 2.4 2.8 6 .1 5.2-3 2.7 2.1 6-1.4 4.3-4.5 3 1.7 5.6-2.9 2.7-5.9l9.1-4.4" fill="#8a6859"/><g fill="#705041"><path d="m13.9 36.3c1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.4 1.3.6.3 1.3.3 2 0 .1-.3.3-.7.6-1l.7-.8c.4-.5.9-.9 1.3-1.1.8-2.1-.6-4.1-2.4-4.2"/><path d="m25.4 46.2c1.6.4 2.8 2.5 1.6 4.8l-.6.9c-.6 1.1-1.4 1.6-2.2 1.7 1.1.3 2.3-.1 3.1-1.6l.6-.9c1.4-2.8-.5-5.1-2.5-4.9"/><path d="m18.3 45.4l1.6-2.5c-.1-1.4-1.3-2.6-2.5-2.7 1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.5 1.3.8.4 1.7.3 2.6-.3.1-.5.3-1.1.6-1.6"/><path d="m22.6 40.9c1.6.5 2.7 2.7 1.3 4.9l-1.9 3c-.7 1.1-1.5 1.5-2.3 1.5 1 .3 2.3 0 3.2-1.4l1.9-3c1.6-2.6-.2-5.1-2.2-5"/><path d="m35.9 43.4c.1 0 1.3-.2 1.7-.2-1.5-1.5-3.9-.3-5.3-1.1 1 1.7 3.1 1.3 3.3 1.3l2.4 3.1c2 2.5.4 5.4-1.7 5.7 2.2.7 4.4-1.6 3.7-4.1-.1-.1-4.1-4.7-4.1-4.7"/><path d="m38.3 37.6c0 0 1.5-.3 2.8-.3-1.5-1.2-3.8-.1-5.3-1.1.6 1.3 1.9 1.3 2.3 1.3l4.6 5.3c2.1 2.4.6 5.3-1.5 5.8 2.4.7 4.7-2.4 3.2-5.1-1-.3-6.1-5.9-6.1-5.9"/><path d="m35.1 49.1c-1.5-1.2-3.6-.3-4.5-.9.5 1.4 2.4 1.1 2.5 1.1 1.7 2.6-.1 5.3-2.2 5.5 2.1.9 4.4-1.1 4-3.6-.1-.1-1.5-1.9-1.5-1.9.2-.1 1.3-.2 1.7-.2"/><path d="m55.2 31.7c0 0-1.7 3.5-8.3 5.4-.9-1.1-2.8-3.3-5-5.2 1.4-.3 2.1-1.4 3.2-1.6-.4-.4-1.8-.2-2.9.2-2 .7-6.6-2.5-6.6-2.5l-3.8.5c-2.7 2.6-8.5 4-8.8 0-.2-2.8 5.9-4.7 7.8-6.5 2.4-2.3 4.5-5.2 8.4-3.2 3.2 1.6 4.5 1.5 8.9 2.3 1.5.3 2.5 1 3.6 2.5-.9-2.1-2.2-3-3.8-3.3l7-3.3.1-1.7-8.3 4.7c-3.8-.6-5.2-.6-8.3-2.1-2-1-3.6-.7-4.9.1-2.4-1.4-3.8-1.1-4.7-.9-2.8.9-7.3 1-11.3 2.6.7.2 1.4.4 1.9.4 3.9-1.2 8-1.1 9.9-1.8.6-.2 1.8-.2 3.1.5-.8.7-1.5 1.5-2.3 2.3-1.9 1.8-7.7 4.4-7.3 7.7.2 1.6 2.4 5.8 9.7 1.1l3.1-.4c0 0 5.7 2.7 11 8.9 2.1 2.4.8 5-1.3 5.6 2.7.5 5-3.3 2.4-5.9l6.3-3.4 1.2-3"/></g><path d="m53.4 16.3l3.3 17.1-2.7 1.2c-1.4-3.7-3.5-12.6-3-16.9l2.4-1.4" fill="#3b946f"/><path d="m11.1 38c-.5-1.2-.8-2.8-.8-2.8l-2.5-1.7-.2 1.9 2.2.6c.3 1 .6 1.8 1 2.4l.3-.4" fill="#705041"/><path d="m6.1 35.1l5.4-18.7 2.5 1.7c.4 2.8-4.2 15.6-5.9 17.5l-2-.5" fill="#3b946f"/><g fill="#47b892"><path d="m53.3 16.2c-.8.5 2.1 17.8 3.3 17.3 3.8-1.7 5.5-2.2 5.5-2.2v-20.6c-.1 0-2.4 1.7-8.8 5.5"/><path d="m2 9v25.5c0 0 1.8.3 4.1.8 1.3.3 6-18.5 5.7-18.8-3.4-2.3-9.8-7.5-9.8-7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91d.svg b/riot/emojione/svg/1f91d.svg new file mode 100644 index 0000000..185bf3b --- /dev/null +++ b/riot/emojione/svg/1f91d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.3 33.4l-1.2-18.1-8.3 5.1c-4.1-.7-5.2-.7-8.4-2.2-1.9-.9-4.3-.3-5.5.4-1.8-1.9-13.5.9-14.8 1.5-3.5-1.1-8.7-5.1-8.7-5.1l-1.8 20.4 2.4.6c.2.7.8 2.4.8 2.4-2.2 2.8.4 6.1 2.9 5-1.1 2.8 1.8 5.4 4.1 3.6-.3 2.6 2.4 4.5 4.4 2.7-.9 3.1 2.6 5.4 4.7 2.9 1.5 1 2.9 1.8 4.1 2.2 2.1.9 4.4-1.1 4-3.6 2.4 2.8 6 .1 5.2-3 2.7 2.1 6-1.4 4.3-4.5 3 1.7 5.6-2.9 2.7-5.9l9.1-4.4" fill="#ffdd67"/><g fill="#eba352"><path d="m13.9 36.3c1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.4 1.3.6.3 1.3.3 2 0 .1-.3.3-.7.6-1l.7-.8c.4-.5.9-.9 1.3-1.1.8-2.1-.6-4.1-2.4-4.2"/><path d="m25.3 46.2c1.6.4 2.8 2.5 1.6 4.8l-.6.9c-.6 1.1-1.4 1.6-2.2 1.7 1.1.3 2.3-.1 3.1-1.6l.6-.9c1.5-2.8-.4-5.1-2.5-4.9"/><path d="m18.3 45.4l1.6-2.5c-.1-1.4-1.3-2.6-2.5-2.7 1.5.7 2.5 3 .9 5l-.7.8c-.8 1-1.6 1.3-2.5 1.3.8.4 1.7.3 2.6-.3.1-.5.3-1.1.6-1.6"/><path d="m22.6 40.9c1.6.5 2.7 2.7 1.3 4.9l-1.9 3c-.7 1.1-1.5 1.5-2.3 1.5 1 .3 2.3 0 3.2-1.4l1.9-3c1.6-2.6-.2-5.1-2.2-5"/><path d="m35.9 43.4c.1 0 1.3-.2 1.7-.2-1.5-1.5-3.9-.3-5.3-1.1 1 1.7 3.1 1.3 3.3 1.3l2.4 3.1c2 2.5.4 5.4-1.7 5.7 2.2.7 4.4-1.6 3.7-4.1-.1-.1-4.1-4.7-4.1-4.7"/><path d="m38.3 37.6c0 0 1.5-.3 2.8-.3-1.5-1.2-3.8-.1-5.3-1.1.6 1.3 1.9 1.3 2.3 1.4l4.6 5.3c2.1 2.4.6 5.3-1.5 5.8 2.4.7 4.7-2.4 3.2-5.1-1-.4-6.1-6-6.1-6"/><path d="m35.1 49.1c-1.5-1.2-3.6-.3-4.5-.9.5 1.4 2.4 1.1 2.5 1.1 1.7 2.6-.1 5.3-2.2 5.5 2.1.9 4.4-1.1 4-3.6-.1-.1-1.5-1.9-1.5-1.9.2-.1 1.3-.2 1.7-.2"/><path d="m55.2 31.7c0 0-1.7 3.5-8.3 5.4-.9-1.1-2.8-3.3-5-5.2 1.4-.3 2.1-1.4 3.2-1.6-.4-.4-1.8-.2-2.9.2-2 .7-6.6-2.5-6.6-2.5l-3.8.5c-2.7 2.6-8.5 4-8.8 0-.2-2.8 5.9-4.7 7.8-6.5 2.4-2.3 4.5-5.2 8.4-3.2 3.2 1.6 4.5 1.5 8.9 2.3 1.5.3 2.5 1 3.6 2.5-.9-2.1-2.2-3-3.8-3.3l7-3.3.1-1.7-8.3 4.7c-3.8-.6-5.2-.6-8.3-2.1-2-1-3.6-.7-4.9.1-2.4-1.4-3.8-1.1-4.7-.9-2.8.9-7.3 1-11.3 2.6.7.2 1.4.4 1.9.4 3.9-1.2 8-1.1 9.9-1.8.6-.2 1.8-.2 3.1.5-.8.7-1.5 1.5-2.3 2.3-1.9 1.8-7.7 4.4-7.3 7.7.2 1.6 2.4 5.8 9.7 1.1l3.1-.4c0 0 5.7 2.7 11 8.9 2.1 2.4.8 5-1.3 5.6 2.7.5 5-3.3 2.4-5.9l6.3-3.4 1.2-3"/></g><path d="m53.4 16.3l3.3 17.1-2.7 1.2c-1.4-3.7-3.5-12.6-3-16.9l2.4-1.4" fill="#3b946f"/><path d="m11.1 38c-.5-1.2-.8-2.8-.8-2.8l-2.5-1.7-.2 1.9 2.2.6c.3 1 .6 1.8 1 2.4l.3-.4" fill="#eba352"/><path d="m6.1 35.1l5.4-18.7 2.5 1.7c.4 2.8-4.2 15.6-5.9 17.5l-2-.5" fill="#3b946f"/><g fill="#47b892"><path d="m53.3 16.2c-.8.5 2.1 17.8 3.3 17.3 3.8-1.7 5.5-2.2 5.5-2.2v-20.6c-.1 0-2.4 1.7-8.8 5.5"/><path d="m2 9v25.5c0 0 1.8.3 4.1.8 1.3.3 6-18.5 5.7-18.8-3.4-2.3-9.8-7.5-9.8-7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91e-1f3fb.svg b/riot/emojione/svg/1f91e-1f3fb.svg new file mode 100644 index 0000000..aa4cd73 --- /dev/null +++ b/riot/emojione/svg/1f91e-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m49.3 34.4c0 0 2.9 13.6-1.1 20.3-6 9.9-27.4 11.7-33.2-6.8-.6-2 8.4-17.8 8.4-17.8l25.9 4.3"/><path d="m35.1 30.3c1 2 0 4.5-2.2 5.4-2.2 1-4.8.1-5.8-2l-13.7-25.9c-1-2 0-4.5 2.2-5.4 2.2-1 4.8-.1 5.8 2l13.7 25.9"/></g><g fill="#e6b796"><path d="m34.3 34.1c-2.2 1-4.8.1-5.8-2l-13.7-25.9c-.5-1.1-.5-2.3 0-3.4-1.6 1.1-2.3 3.2-1.4 5l13.7 25.9c1 2 3.6 3 5.8 2 1-.4 1.8-1.2 2.2-2.1-.2.2-.5.4-.8.5"/><path d="m29.2 28c.1 2.4 1.6 3.5 7.5 2l.8 3-16 .2 8.4-13.1-.7 7.9"/></g><path d="m24.3 39.4c-.6 2.3-3.2 3.7-5.6 3.1-2.5-.6-4-3-3.4-5.3l8.9-29.2c.6-2.3 2.6-3.7 5-3.1 2.5.6 4 3 3.4 5.3l-8.3 29.2" fill="#ffe1bd"/><path d="m20.9 42.1c-2.5-.6-4-3-3.4-5.3l8.3-29.2c.3-1.3 1.2-2.3 2.4-2.8-2.2-.1-4.2 1.2-4.7 3.3l-8.3 29.2c-.6 2.3.9 4.7 3.4 5.3 1.1.3 2.3.1 3.3-.3-.3-.1-.6-.1-1-.2" fill="#e6b796"/><path d="m51 31.6c.1-2.3-1.5-4.2-3.7-4.4h-.1c-2.2-.2-4 1.5-4.2 3.8l-.4 6.3c-.1 2.3 1.5 4.2 3.7 4.4h.1c2.2.2 4-1.5 4.2-3.8l.4-6.3" fill="#ffe1bd"/><path d="m47.6 40.2c-2.2-.2-3.8-2.1-3.7-4.4l.4-6.3c0-.6.2-1.2.5-1.7-1 .7-1.7 1.8-1.7 3.1l-.4 6.3c-.1 2.3 1.4 4.2 3.6 4.4 1.6.1 3-.7 3.7-2.1-.6.6-1.5.8-2.4.7" fill="#e6b796"/><path d="m43.8 26.9c.2-2.8-1.7-5.1-4.3-5.3h-.1c-2.6-.2-4.8 1.9-5 4.7l-.5 7.7c-.2 2.8 1.7 5.1 4.3 5.3h.1c2.6.2 4.8-1.9 5-4.7l.5-7.7" fill="#ffe1bd"/><g fill="#e6b796"><path d="m39.7 37.6c-2.6-.2-4.5-2.5-4.3-5.2l.6-7.7c.1-.7.3-1.4.6-2.1-1.2.8-2 2.2-2.1 3.8l-.9 7.8c-.2 2.8 2 5 4.6 5.1h.1c1.9.1 3.6-.9 4.4-2.6-1 .6-2 .9-3 .9"/><path d="m26.1 31.2c3.5-2 4.2 1.2 10.2 1.3 2.6.1 3.8 5.3-.2 7.2-5.5 2.6-6-1.1-7.3.4-1.4 1.5-2.8 1.8-4 3.6-.8 1.3-7.7-.7-8.4-3.4-1.4-5.1 4.1-5.9 9.7-9.1"/></g><path d="m25.7 32.1c3.7-2.1 4.4 1.2 10.6 1.4 2.7.1 3.9 5.5-.2 7.5-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.9 1.9-4.1 3.8-.9 1.4 1.5 6.5 1.5 6.5s-7 4.8-8.5 2.1c-2.7-5.1-1.9-9-1.8-12 .2-7.1 4.3-6.4 10.1-9.7" fill="#ffe1bd"/><g fill="#e6b796"><path d="m18.6 35.4c-3.9 1.7-3.7 11.5-.8 16.2 7.2 11.7 21.3 11.4 28.8 5.1-7 7.2-22.1 8-29.9-4.1-3.2-4.8-4.2-15.9 1.9-17.2"/><path d="m25.2 45.2c-.3.4-.2 1.2-.1 2.1-.4-1.3-.7-2.7-.3-3.3 1.3-1.9 2-2.2 3.5-3.9 1.4-1.5 1.9 2.4 7.6-.4 2.1-1 2.8-2.9 2.6-4.6.8 1.8.4 4.6-2.3 5.9-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.2 1.9-3.4 3.8"/><path d="m38.8 53.6c0-6.5-5-11.8-11.4-12.3.8-.2 1.6-.3 2.4-.3 5.5 0 9.9 4.4 9.9 9.8 0 1.6-.4 3-1 4.4 0-.6.1-1.1.1-1.6"/><path d="m40.7 41.4c1.1-.3 2.2-.2 3.1.2-.4 0-.8.1-1.2.2-3.1.8-5 4-4.4 7.1-.4-.5-.7-1-.8-1.7-.7-2.5.8-5.1 3.3-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91e-1f3fc.svg b/riot/emojione/svg/1f91e-1f3fc.svg new file mode 100644 index 0000000..bf4eff6 --- /dev/null +++ b/riot/emojione/svg/1f91e-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m49.3 34.4c0 0 2.9 13.6-1.1 20.3-6 9.9-27.4 11.7-33.2-6.8-.6-2 8.4-17.8 8.4-17.8l25.9 4.3"/><path d="m35.1 30.3c1 2 0 4.5-2.2 5.4-2.2 1-4.8.1-5.8-2l-13.7-25.9c-1-2 0-4.5 2.2-5.4 2.2-1 4.8-.1 5.8 2l13.7 25.9"/></g><g fill="#e0a372"><path d="m34.3 34.1c-2.2 1-4.8.1-5.8-2l-13.7-25.9c-.5-1.1-.5-2.3 0-3.4-1.6 1.1-2.3 3.2-1.4 5l13.7 25.9c1 2 3.6 3 5.8 2 1-.4 1.8-1.2 2.2-2.1-.2.2-.5.4-.8.5"/><path d="m29.2 28c.1 2.4 1.6 3.5 7.5 2l.8 3-16 .2 8.4-13.1-.7 7.9"/></g><path d="m24.3 39.4c-.6 2.3-3.2 3.7-5.6 3.1-2.5-.6-4-3-3.4-5.3l8.9-29.2c.6-2.3 2.6-3.7 5-3.1 2.5.6 4 3 3.4 5.3l-8.3 29.2" fill="#fed0ac"/><path d="m20.9 42.1c-2.5-.6-4-3-3.4-5.3l8.3-29.1c.3-1.3 1.2-2.3 2.4-2.8-2.2-.1-4.2 1.2-4.7 3.3l-8.3 29.2c-.6 2.3.9 4.7 3.4 5.3 1.1.3 2.3.1 3.3-.3-.3-.2-.6-.2-1-.3" fill="#e0a372"/><path d="m51 31.6c.1-2.3-1.5-4.2-3.7-4.4h-.1c-2.2-.2-4 1.5-4.2 3.8l-.4 6.3c-.1 2.3 1.5 4.2 3.7 4.4h.1c2.2.2 4-1.5 4.2-3.8l.4-6.3" fill="#fed0ac"/><path d="m47.6 40.2c-2.2-.2-3.8-2.1-3.7-4.4l.4-6.3c0-.6.2-1.2.5-1.7-1 .7-1.7 1.8-1.7 3.1l-.4 6.3c-.1 2.3 1.4 4.2 3.6 4.4 1.6.1 3-.7 3.7-2.1-.6.6-1.5.8-2.4.7" fill="#e0a372"/><path d="m43.8 26.9c.2-2.8-1.7-5.1-4.3-5.3h-.1c-2.6-.2-4.8 1.9-5 4.7l-.5 7.7c-.2 2.8 1.7 5.1 4.3 5.3h.1c2.6.2 4.8-1.9 5-4.7l.5-7.7" fill="#fed0ac"/><g fill="#e0a372"><path d="m39.7 37.6c-2.6-.2-4.5-2.5-4.3-5.2l.6-7.7c.1-.7.3-1.4.6-2.1-1.2.8-2 2.2-2.1 3.8l-.9 7.8c-.2 2.8 2 5 4.6 5.1h.1c1.9.1 3.6-.9 4.4-2.6-1 .6-2 .9-3 .9"/><path d="m26.1 31.2c3.5-2 4.2 1.2 10.2 1.3 2.6.1 3.8 5.3-.2 7.2-5.5 2.6-6-1.1-7.3.4-1.4 1.5-2.8 1.8-4 3.6-.8 1.3-7.7-.7-8.4-3.4-1.4-5.1 4.1-5.9 9.7-9.1"/></g><path d="m25.7 32.1c3.7-2.1 4.4 1.2 10.6 1.4 2.7.1 3.9 5.5-.2 7.5-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.9 1.9-4.1 3.8-.9 1.4 1.5 6.5 1.5 6.5s-7 4.8-8.5 2.1c-2.7-5.1-1.9-9-1.8-12 .2-7.1 4.3-6.4 10.1-9.7" fill="#fed0ac"/><g fill="#e0a372"><path d="m18.6 35.4c-3.9 1.7-3.7 11.5-.8 16.2 7.2 11.7 21.3 11.4 28.8 5.1-7 7.2-22.1 8-29.9-4.1-3.2-4.8-4.2-15.9 1.9-17.2"/><path d="m25.2 45.2c-.3.4-.2 1.2-.1 2.1-.4-1.3-.7-2.7-.3-3.3 1.3-1.9 2-2.2 3.5-3.9 1.4-1.5 1.9 2.4 7.6-.4 2.1-1 2.8-2.9 2.6-4.6.8 1.8.4 4.6-2.3 5.9-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.2 1.9-3.4 3.8"/><path d="m38.8 53.6c0-6.5-5-11.8-11.4-12.3.8-.2 1.6-.3 2.4-.3 5.5 0 9.9 4.4 9.9 9.8 0 1.6-.4 3-1 4.4 0-.6.1-1.1.1-1.6"/><path d="m40.7 41.4c1.1-.3 2.2-.2 3.1.2-.4 0-.8.1-1.2.2-3.1.8-5 4-4.4 7.1-.4-.5-.7-1-.8-1.7-.7-2.5.8-5.1 3.3-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91e-1f3fd.svg b/riot/emojione/svg/1f91e-1f3fd.svg new file mode 100644 index 0000000..5562818 --- /dev/null +++ b/riot/emojione/svg/1f91e-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m49.3 34.4c0 0 2.9 13.6-1.1 20.3-6 9.9-27.4 11.7-33.2-6.8-.6-2 8.4-17.8 8.4-17.8l25.9 4.3"/><path d="m35.1 30.3c1 2 0 4.5-2.2 5.4-2.2 1-4.8.1-5.8-2l-13.7-25.9c-1-2 0-4.5 2.2-5.4 2.2-1 4.8-.1 5.8 2l13.7 25.9"/></g><g fill="#b58360"><path d="m34.3 34.1c-2.2 1-4.8.1-5.8-2l-13.7-25.9c-.5-1.1-.5-2.3 0-3.4-1.6 1.1-2.3 3.2-1.4 5l13.7 25.9c1 2 3.6 3 5.8 2 1-.4 1.8-1.2 2.2-2.1-.2.2-.5.4-.8.5"/><path d="m29.2 28c.1 2.4 1.6 3.5 7.5 2l.8 3-16 .2 8.4-13.1-.7 7.9"/></g><path d="m24.3 39.4c-.6 2.3-3.2 3.7-5.6 3.1-2.5-.6-4-3-3.4-5.3l8.9-29.2c.6-2.3 2.6-3.7 5-3.1 2.5.6 4 3 3.4 5.3l-8.3 29.2" fill="#d6a57c"/><path d="m20.9 42.1c-2.5-.6-4-3-3.4-5.3l8.3-29.1c.3-1.3 1.2-2.3 2.4-2.8-2.2-.1-4.2 1.2-4.7 3.3l-8.3 29.2c-.6 2.3.9 4.7 3.4 5.3 1.1.3 2.3.1 3.3-.3-.3-.2-.6-.2-1-.3" fill="#b58360"/><path d="m51 31.6c.1-2.3-1.5-4.2-3.7-4.4h-.1c-2.2-.2-4 1.5-4.2 3.8l-.4 6.3c-.1 2.3 1.5 4.2 3.7 4.4h.1c2.2.2 4-1.5 4.2-3.8l.4-6.3" fill="#d6a57c"/><path d="m47.6 40.2c-2.2-.2-3.8-2.1-3.7-4.4l.4-6.3c0-.6.2-1.2.5-1.7-1 .7-1.7 1.8-1.7 3.1l-.4 6.3c-.1 2.3 1.4 4.2 3.6 4.4 1.6.1 3-.7 3.7-2.1-.6.6-1.5.8-2.4.7" fill="#b58360"/><path d="m43.8 26.9c.2-2.8-1.7-5.1-4.3-5.3h-.1c-2.6-.2-4.8 1.9-5 4.7l-.5 7.7c-.2 2.8 1.7 5.1 4.3 5.3h.1c2.6.2 4.8-1.9 5-4.7l.5-7.7" fill="#d6a57c"/><g fill="#b58360"><path d="m39.7 37.6c-2.6-.2-4.5-2.5-4.3-5.2l.6-7.7c.1-.7.3-1.4.6-2.1-1.2.8-2 2.2-2.1 3.8l-.9 7.8c-.2 2.8 2 5 4.6 5.1h.1c1.9.1 3.6-.9 4.4-2.6-1 .6-2 .9-3 .9"/><path d="m26.1 31.2c3.5-2 4.2 1.2 10.2 1.3 2.6.1 3.8 5.3-.2 7.2-5.5 2.6-6-1.1-7.3.4-1.4 1.5-2.8 1.8-4 3.6-.8 1.3-7.7-.7-8.4-3.4-1.4-5.1 4.1-5.9 9.7-9.1"/></g><path d="m25.7 32.1c3.7-2.1 4.4 1.2 10.6 1.4 2.7.1 3.9 5.5-.2 7.5-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.9 1.9-4.1 3.8-.9 1.4 1.5 6.5 1.5 6.5s-7 4.8-8.5 2.1c-2.7-5.1-1.9-9-1.8-12 .2-7.1 4.3-6.4 10.1-9.7" fill="#d6a57c"/><g fill="#b58360"><path d="m18.6 35.4c-3.9 1.7-3.7 11.5-.8 16.2 7.2 11.7 21.3 11.4 28.8 5.1-7 7.2-22.1 8-29.9-4.1-3.2-4.8-4.2-15.9 1.9-17.2"/><path d="m25.2 45.2c-.3.4-.2 1.2-.1 2.1-.4-1.3-.7-2.7-.3-3.3 1.3-1.9 2-2.2 3.5-3.9 1.4-1.5 1.9 2.4 7.6-.4 2.1-1 2.8-2.9 2.6-4.6.8 1.8.4 4.6-2.3 5.9-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.2 1.9-3.4 3.8"/><path d="m38.8 53.6c0-6.5-5-11.8-11.4-12.3.8-.2 1.6-.3 2.4-.3 5.5 0 9.9 4.4 9.9 9.8 0 1.6-.4 3-1 4.4 0-.6.1-1.1.1-1.6"/><path d="m40.7 41.4c1.1-.3 2.2-.2 3.1.2-.4 0-.8.1-1.2.2-3.1.8-5 4-4.4 7.1-.4-.5-.7-1-.8-1.7-.7-2.5.8-5.1 3.3-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91e-1f3fe.svg b/riot/emojione/svg/1f91e-1f3fe.svg new file mode 100644 index 0000000..5067aae --- /dev/null +++ b/riot/emojione/svg/1f91e-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m49.3 34.4c0 0 2.9 13.6-1.1 20.3-6 9.9-27.4 11.7-33.2-6.8-.6-2 8.4-17.8 8.4-17.8l25.9 4.3"/><path d="m35.1 30.3c1 2 0 4.5-2.2 5.4-2.2 1-4.8.1-5.8-2l-13.7-25.9c-1-2 0-4.5 2.2-5.4 2.2-1 4.8-.1 5.8 2l13.7 25.9"/></g><g fill="#935e3e"><path d="m34.3 34.1c-2.2 1-4.8.1-5.8-2l-13.7-25.9c-.5-1.1-.5-2.3 0-3.4-1.6 1.1-2.3 3.2-1.4 5l13.7 25.9c1 2 3.6 3 5.8 2 1-.4 1.8-1.2 2.2-2.1-.2.2-.5.4-.8.5"/><path d="m29.2 28c.1 2.4 1.6 3.5 7.5 2l.8 3-16 .2 8.4-13.1-.7 7.9"/></g><path d="m24.3 39.4c-.6 2.3-3.2 3.7-5.6 3.1-2.5-.6-4-3-3.4-5.3l8.9-29.2c.6-2.3 2.6-3.7 5-3.1 2.5.6 4 3 3.4 5.3l-8.3 29.2" fill="#b47d56"/><path d="m20.9 42.1c-2.5-.6-4-3-3.4-5.3l8.3-29.2c.3-1.3 1.2-2.3 2.4-2.8-2.2-.1-4.1 1.2-4.7 3.3l-8.3 29.2c-.6 2.3.9 4.7 3.4 5.3 1.1.3 2.3.1 3.3-.3-.3-.1-.6-.1-1-.2" fill="#935e3e"/><path d="m51 31.6c.1-2.3-1.5-4.2-3.7-4.4h-.1c-2.2-.2-4 1.5-4.2 3.8l-.4 6.3c-.1 2.3 1.5 4.2 3.7 4.4h.1c2.2.2 4-1.5 4.2-3.8l.4-6.3" fill="#b47d56"/><path d="m47.6 40.2c-2.2-.2-3.8-2.1-3.7-4.4l.4-6.3c0-.6.2-1.2.5-1.7-1 .7-1.7 1.8-1.7 3.1l-.4 6.3c-.1 2.3 1.4 4.2 3.6 4.4 1.6.1 3-.7 3.7-2.1-.6.6-1.5.8-2.4.7" fill="#935e3e"/><path d="m43.8 26.9c.2-2.8-1.7-5.1-4.3-5.3h-.1c-2.6-.2-4.8 1.9-5 4.7l-.5 7.7c-.2 2.8 1.7 5.1 4.3 5.3h.1c2.6.2 4.8-1.9 5-4.7l.5-7.7" fill="#b47d56"/><g fill="#935e3e"><path d="m39.7 37.6c-2.6-.2-4.5-2.5-4.3-5.2l.6-7.7c.1-.7.3-1.4.6-2.1-1.2.8-2 2.2-2.1 3.8l-.9 7.8c-.2 2.8 2 5 4.6 5.1h.1c1.9.1 3.6-.9 4.4-2.6-1 .6-2 .9-3 .9"/><path d="m26.1 31.2c3.5-2 4.2 1.2 10.2 1.3 2.6.1 3.8 5.3-.2 7.2-5.5 2.6-6-1.1-7.3.4-1.4 1.5-2.8 1.8-4 3.6-.8 1.3-7.7-.7-8.4-3.4-1.4-5.1 4.1-5.9 9.7-9.1"/></g><path d="m25.7 32.1c3.7-2.1 4.4 1.2 10.6 1.4 2.7.1 3.9 5.5-.2 7.5-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.9 1.9-4.1 3.8-.9 1.4 1.5 6.5 1.5 6.5s-7 4.8-8.5 2.1c-2.7-5.1-1.9-9-1.8-12 .2-7.1 4.3-6.4 10.1-9.7" fill="#b47d56"/><g fill="#935e3e"><path d="m18.6 35.4c-3.9 1.7-3.7 11.5-.8 16.2 7.2 11.7 21.3 11.4 28.8 5.1-7 7.2-22.1 8-29.9-4.1-3.2-4.8-4.2-15.9 1.9-17.2"/><path d="m25.2 45.2c-.3.4-.2 1.2-.1 2.1-.4-1.3-.7-2.7-.3-3.3 1.3-1.9 2-2.2 3.5-3.9 1.4-1.5 1.9 2.4 7.6-.4 2.1-1 2.8-2.9 2.6-4.6.8 1.8.4 4.6-2.3 5.9-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.2 1.9-3.4 3.8"/><path d="m38.8 53.6c0-6.5-5-11.8-11.4-12.3.8-.2 1.6-.3 2.4-.3 5.5 0 9.9 4.4 9.9 9.8 0 1.6-.4 3-1 4.4 0-.6.1-1.1.1-1.6"/><path d="m40.7 41.4c1.1-.3 2.2-.2 3.1.2-.4 0-.8.1-1.2.2-3.1.8-5 4-4.4 7.1-.4-.5-.7-1-.8-1.7-.7-2.5.8-5.1 3.3-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91e-1f3ff.svg b/riot/emojione/svg/1f91e-1f3ff.svg new file mode 100644 index 0000000..741dc66 --- /dev/null +++ b/riot/emojione/svg/1f91e-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m49.3 34.4c0 0 2.9 13.6-1.1 20.3-6 9.9-27.4 11.7-33.2-6.8-.6-2 8.4-17.8 8.4-17.8l25.9 4.3"/><path d="m35.1 30.3c1 2 0 4.5-2.2 5.4-2.2 1-4.8.1-5.8-2l-13.7-25.9c-1-2 0-4.5 2.2-5.4 2.2-1 4.8-.1 5.8 2l13.7 25.9"/></g><g fill="#705041"><path d="m34.3 34.1c-2.2 1-4.8.1-5.8-2l-13.7-25.9c-.5-1.1-.5-2.3 0-3.4-1.6 1.1-2.3 3.2-1.4 5l13.7 25.9c1 2 3.6 3 5.8 2 1-.4 1.8-1.2 2.2-2.1-.2.2-.5.4-.8.5"/><path d="m29.2 28c.1 2.4 1.6 3.5 7.5 2l.8 3-16 .2 8.4-13.1-.7 7.9"/></g><path d="m24.3 39.4c-.6 2.3-3.2 3.7-5.6 3.1-2.5-.6-4-3-3.4-5.3l8.9-29.2c.6-2.3 2.6-3.7 5-3.1 2.5.6 4 3 3.4 5.3l-8.3 29.2" fill="#8a6859"/><path d="m20.9 42.1c-2.5-.6-4-3-3.4-5.3l8.3-29.1c.3-1.3 1.2-2.3 2.4-2.8-2.2-.1-4.2 1.2-4.7 3.3l-8.3 29.2c-.6 2.3.9 4.7 3.4 5.3 1.1.3 2.3.1 3.3-.3-.3-.2-.6-.2-1-.3" fill="#705041"/><path d="m51 31.6c.1-2.3-1.5-4.2-3.7-4.4h-.1c-2.2-.2-4 1.5-4.2 3.8l-.4 6.3c-.1 2.3 1.5 4.2 3.7 4.4h.1c2.2.2 4-1.5 4.2-3.8l.4-6.3" fill="#8a6859"/><path d="m47.6 40.2c-2.2-.2-3.8-2.1-3.7-4.4l.4-6.3c0-.6.2-1.2.5-1.7-1 .7-1.7 1.8-1.7 3.1l-.4 6.3c-.1 2.3 1.4 4.2 3.6 4.4 1.6.1 3-.7 3.7-2.1-.6.6-1.5.8-2.4.7" fill="#705041"/><path d="m43.8 26.9c.2-2.8-1.7-5.1-4.3-5.3h-.1c-2.6-.2-4.8 1.9-5 4.7l-.5 7.7c-.2 2.8 1.7 5.1 4.3 5.3h.1c2.6.2 4.8-1.9 5-4.7l.5-7.7" fill="#8a6859"/><g fill="#705041"><path d="m39.7 37.6c-2.6-.2-4.5-2.5-4.3-5.2l.6-7.7c.1-.7.3-1.4.6-2.1-1.2.8-2 2.2-2.1 3.8l-.9 7.8c-.2 2.8 2 5 4.6 5.1h.1c1.9.1 3.6-.9 4.4-2.6-1 .6-2 .9-3 .9"/><path d="m26.1 31.2c3.5-2 4.2 1.2 10.2 1.3 2.6.1 3.8 5.3-.2 7.2-5.5 2.6-6-1.1-7.3.4-1.4 1.5-2.8 1.8-4 3.6-.8 1.3-7.7-.7-8.4-3.4-1.4-5.1 4.1-5.9 9.7-9.1"/></g><path d="m25.7 32.1c3.7-2.1 4.4 1.2 10.6 1.4 2.7.1 3.9 5.5-.2 7.5-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.9 1.9-4.1 3.8-.9 1.4 1.5 6.5 1.5 6.5s-7 4.8-8.5 2.1c-2.7-5.1-1.9-9-1.8-12 .2-7.1 4.3-6.4 10.1-9.7" fill="#8a6859"/><g fill="#705041"><path d="m18.6 35.4c-3.9 1.7-3.7 11.5-.8 16.2 7.2 11.7 21.3 11.4 28.8 5.1-7 7.2-22.1 8-29.9-4.1-3.2-4.8-4.2-15.9 1.9-17.2"/><path d="m25.2 45.2c-.3.4-.2 1.2-.1 2.1-.4-1.3-.7-2.7-.3-3.3 1.3-1.9 2-2.2 3.5-3.9 1.4-1.5 1.9 2.4 7.6-.4 2.1-1 2.8-2.9 2.6-4.6.8 1.8.4 4.6-2.3 5.9-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.2 1.9-3.4 3.8"/><path d="m38.8 53.6c0-6.5-5-11.8-11.4-12.3.8-.2 1.6-.3 2.4-.3 5.5 0 9.9 4.4 9.9 9.8 0 1.6-.4 3-1 4.4 0-.6.1-1.1.1-1.6"/><path d="m40.7 41.4c1.1-.3 2.2-.2 3.1.2-.4 0-.8.1-1.2.2-3.1.8-5 4-4.4 7.1-.4-.5-.7-1-.8-1.7-.7-2.5.8-5.1 3.3-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f91e.svg b/riot/emojione/svg/1f91e.svg new file mode 100644 index 0000000..574dcc1 --- /dev/null +++ b/riot/emojione/svg/1f91e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m49.3 34.4c0 0 2.9 13.6-1.1 20.3-6 9.9-27.4 11.7-33.2-6.8-.6-2 8.4-17.8 8.4-17.8l25.9 4.3"/><path d="m35.1 30.3c1 2 0 4.5-2.2 5.4-2.2 1-4.8.1-5.8-2l-13.7-25.9c-1-2 0-4.5 2.2-5.4 2.2-1 4.8-.1 5.8 2l13.7 25.9"/></g><g fill="#eba352"><path d="m34.3 34.1c-2.2 1-4.8.1-5.8-2l-13.7-25.9c-.5-1.1-.5-2.3 0-3.4-1.6 1.1-2.3 3.2-1.4 5l13.7 25.9c1 2 3.6 3 5.8 2 1-.4 1.8-1.2 2.2-2.1-.2.2-.5.4-.8.5"/><path d="m29.2 28c.1 2.4 1.6 3.5 7.5 2l.8 3-16 .2 8.4-13.1-.7 7.9"/></g><path d="m24.3 39.4c-.6 2.3-3.2 3.7-5.6 3.1-2.5-.6-4-3-3.4-5.3l8.9-29.2c.6-2.3 2.6-3.7 5-3.1 2.5.6 4 3 3.4 5.3l-8.3 29.2" fill="#ffdd67"/><path d="m20.9 42.1c-2.5-.6-4-3-3.4-5.3l8.3-29.1c.3-1.3 1.2-2.3 2.4-2.8-2.2-.1-4.2 1.2-4.7 3.3l-8.3 29.2c-.6 2.3.9 4.7 3.4 5.3 1.1.3 2.3.1 3.3-.3-.3-.2-.6-.2-1-.3" fill="#eba352"/><path d="m51 31.6c.1-2.3-1.5-4.2-3.7-4.4h-.1c-2.2-.2-4 1.5-4.2 3.8l-.4 6.3c-.1 2.3 1.5 4.2 3.7 4.4h.1c2.2.2 4-1.5 4.2-3.8l.4-6.3" fill="#ffdd67"/><path d="m47.6 40.2c-2.2-.2-3.8-2.1-3.7-4.4l.4-6.3c0-.6.2-1.2.5-1.7-1 .7-1.7 1.8-1.7 3.1l-.4 6.3c-.1 2.3 1.4 4.2 3.6 4.4 1.6.1 3-.7 3.7-2.1-.6.6-1.5.8-2.4.7" fill="#eba352"/><path d="m43.8 26.9c.2-2.8-1.7-5.1-4.3-5.3h-.1c-2.6-.2-4.8 1.9-5 4.7l-.5 7.7c-.2 2.8 1.7 5.1 4.3 5.3h.1c2.6.2 4.8-1.9 5-4.7l.5-7.7" fill="#ffdd67"/><g fill="#eba352"><path d="m39.7 37.6c-2.6-.2-4.5-2.5-4.3-5.2l.6-7.7c.1-.7.3-1.4.6-2.1-1.2.8-2 2.2-2.1 3.8l-.9 7.8c-.2 2.8 2 5 4.6 5.1h.1c1.9.1 3.6-.9 4.4-2.6-1 .6-2 .9-3 .9"/><path d="m26.1 31.2c3.5-2 4.2 1.2 10.2 1.3 2.6.1 3.8 5.3-.2 7.2-5.5 2.6-6-1.1-7.3.4-1.4 1.5-2.8 1.8-4 3.6-.8 1.3-7.7-.7-8.4-3.4-1.4-5.1 4.1-5.9 9.7-9.1"/></g><path d="m25.7 32.1c3.7-2.1 4.4 1.2 10.6 1.4 2.7.1 3.9 5.5-.2 7.5-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.9 1.9-4.1 3.8-.9 1.4 1.5 6.5 1.5 6.5s-7 4.8-8.5 2.1c-2.7-5.1-1.9-9-1.8-12 .2-7.1 4.3-6.4 10.1-9.7" fill="#ffdd67"/><g fill="#eba352"><path d="m18.6 35.4c-3.9 1.7-3.7 11.5-.8 16.2 7.2 11.7 21.3 11.4 28.8 5.1-7 7.2-22.1 8-29.9-4.1-3.2-4.8-4.2-15.9 1.9-17.2"/><path d="m25.2 45.2c-.3.4-.2 1.2-.1 2.1-.4-1.3-.7-2.7-.3-3.3 1.3-1.9 2-2.2 3.5-3.9 1.4-1.5 1.9 2.4 7.6-.4 2.1-1 2.8-2.9 2.6-4.6.8 1.8.4 4.6-2.3 5.9-5.7 2.7-6.2-1.1-7.6.4-1.5 1.6-2.2 1.9-3.4 3.8"/><path d="m38.8 53.6c0-6.5-5-11.8-11.4-12.3.8-.2 1.6-.3 2.4-.3 5.5 0 9.9 4.4 9.9 9.8 0 1.6-.4 3-1 4.4 0-.6.1-1.1.1-1.6"/><path d="m40.7 41.4c1.1-.3 2.2-.2 3.1.2-.4 0-.8.1-1.2.2-3.1.8-5 4-4.4 7.1-.4-.5-.7-1-.8-1.7-.7-2.5.8-5.1 3.3-5.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f920.svg b/riot/emojione/svg/1f920.svg new file mode 100644 index 0000000..11437ce --- /dev/null +++ b/riot/emojione/svg/1f920.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#89664c"><path d="m2.1 19.6c-1 2.7 3.6 12.1 7.7 13.2 8.8 2.3 22.1-4 22.1-4s-11.2-5.1-15.4-6.6c-10.8-4.1-13.7-4.3-14.4-2.6"/><path d="m61.9 19.6c1 2.7-3.6 12.1-7.7 13.2-8.8 2.3-22.1-4-22.1-4s11.2-5.1 15.4-6.6c10.8-4.1 13.7-4.3 14.4-2.6"/></g><path d="m55 39c0 12.7-10.3 23-23 23-12.7 0-23-10.3-23-23 0-12.7 10.3-23 23-23 12.7 0 23 10.3 23 23" fill="#ffdd67"/><path d="m44.1 11.5c-2.1-3.1.3-4.8-1.4-7.6-1-1.8-2-2.6-3.5-1.2-2.4 2.5-5.2 3.5-7.2 3.5-2 0-4.8-1-7.2-3.5-1.5-1.5-2.4-.6-3.5 1.2-1.7 2.8.7 4.5-1.4 7.6-1.3 1.9-2.6 9.3-2.6 9.3l14.7 2.9 14.7-2.9c0 0-1.3-7.4-2.6-9.3" fill="#d3976e"/><path d="m22.4 5.9c0 0 4.5 3 4.4 4.6-.1 1.8-5.6 5-5.6 5s2.5-3.9 2.6-5.3c.1-1.2-1.4-4.3-1.4-4.3" fill="#fed0ac"/><path d="m41.6 5.9c0 0-4.5 3-4.4 4.6.1 1.8 5.6 5 5.6 5s-2.5-3.9-2.6-5.3c-.1-1.2 1.4-4.3 1.4-4.3" fill="#89664c"/><path d="m47 20.3c-8.6 2.2-15 2.2-15 2.2s-6.4 0-15-2.2l-.7 2.1 15.7 3.6 15.7-3.6-.7-2.1" fill="#3e4347"/><path d="m32 25c0 0-7.4.2-20.7-4.6 0 0 5.1 3.8 7.8 7 5.1 6.2 20.8 6.2 25.9 0 2.6-3.2 7.8-7 7.8-7-13.4 4.8-20.8 4.6-20.8 4.6" fill="#d3976e"/><g fill="#664e27"><path d="m39.6 47.9c-4.9 3.6-10.4 3.6-15.3 0-.6-.4-1.1.3-.7 1 1.5 2.6 4.5 4.9 8.4 4.9 3.9 0 6.9-2.3 8.4-4.9.4-.7-.2-1.4-.8-1"/><circle cx="23.2" cy="36.9" r="3.8"/><circle cx="40.8" cy="36.9" r="3.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f921.svg b/riot/emojione/svg/1f921.svg new file mode 100644 index 0000000..63812e7 --- /dev/null +++ b/riot/emojione/svg/1f921.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 27.2c0-3-1.5-5.6-3.9-7.1.3-.9.5-1.9.5-2.9 0-4.7-3.7-8.6-8.3-8.7-1.3-2.5-3.9-4.3-6.9-4.3-1.5 0-2.9.4-4.1 1.2-1.5-2-4.2-3.4-7.3-3.4-3.1 0-5.8 1.4-7.4 3.4-1.2-.8-2.6-1.2-4.1-1.2-3 0-5.6 1.7-6.9 4.3-4.6.1-8.3 3.9-8.3 8.7 0 1 .2 2 .5 2.9-2.3 1.5-3.8 4.1-3.8 7.1 0 2 .7 3.9 1.9 5.4-.5 1-.8 2.1-.8 3.3 0 2.7 1.5 5.1 3.7 6.3 0 .3-.1.5-.1.8 0 3.9 3.1 7.1 6.9 7.1s32.9 0 36.7 0 6.9-3.2 6.9-7.1c0-.3 0-.6 0-.8 2.2-1.2 3.7-3.6 3.7-6.3 0-1.2-.3-2.3-.8-3.3 1.2-1.5 1.9-3.3 1.9-5.4" fill="#42ade2"/><path d="m51.8 35c-.1.9-.3 1.8-.6 2.3-.5.9-1.4 1.4-1.4 1.4s.3-.9.2-3.4c-1.3-19.9-3.7-11-17.9-11-14.2 0-16.6-8.9-17.9 11-.1 2.5.2 3.4.2 3.4s-.9-.5-1.4-1.4c-.3-.5-.4-1.3-.6-2.3-1.5-.4-3.5-.1-3.5 4.3 0 2.7 1 5 4.4 5.2 1.4 11 5.7 12.8 14.3 16.7 2.3 1 6.9 1 9.1 0 8.6-3.9 12.9-5.7 14.3-16.7 3.4-.2 4.4-2.5 4.4-5.2-.2-4.4-2.1-4.7-3.6-4.3" fill="#fed0ac"/><path d="m49.1 35.5c-1.3-19.2-3.5-9.9-17.1-9.9s-15.8-9.3-17.1 9.9c-.1 2.4.4 6.7.7 8.9.8 5.2 3.9 12.2 12 16 2.2 1 6.6 1 8.7 0 8.2-3.7 11.3-10.8 12-16 .4-2.3.9-6.6.8-8.9" fill="#f5f5f5"/><path d="m41.2 49.3c-3.8 3.9-3.3 8.8-9.2 8.8-5.9 0-5.4-4.9-9.2-8.8-3.7-3.9 5.1.5 9.2.5 4.1 0 12.9-4.4 9.2-.5" fill="#574137"/><path d="m38.9 48.2l-6.9 1.6-6.9-1.6c0 0-.2 1.6.5 2.3 1 1 4.8 1.5 6.5 1.5 1.7 0 5.4-.5 6.5-1.5.5-.6.3-2.3.3-2.3" fill="#fff"/><path d="m32 55.1c-2.8 0-3.7 2-3.7 2l3.7.6 3.7-.6c0 0-.9-2-3.7-2" fill="#ff717f"/><path d="m32 49c-2.3 0-15.8-5-9.9.6 3.2 3 3.2 10 9.9 10s6.7-6.9 9.9-10c5.9-5.6-7.6-.6-9.9-.6m7.9 1.1c-3.3 3.3-2.8 7.3-7.9 7.4-5.1 0-4.6-4.1-7.9-7.4-3.2-3.2 4.4.4 7.9.4 3.5 0 11.1-3.7 7.9-.4" fill="#cf4350"/><circle cx="32" cy="43.4" r="6.6" fill="#ff5263"/><path d="m27 35.8c0 2.9-8 2.9-8 0 0-9.9 8-9.9 8 0" fill="#f5f5f5"/><path d="m27.7 36.2c0 3.7-10 3.7-10 0 0-12.3 10-12.3 10 0" fill="#3e4347"/><path d="m27.4 36.3c0 2.9-8 2.9-8 0 0-9.9 8-9.9 8 0" fill="#f5f5f5"/><ellipse cx="23.7" cy="34.5" rx="2.5" ry="3.5" fill="#0a84a5"/><circle cx="23.7" cy="34.5" r=".8" fill="#231f20"/><path d="m36.3 36.2c0 3.7 10 3.7 10 0 0-12.3-10-12.3-10 0" fill="#3e4347"/><path d="m36.6 36.3c0 2.9 8 2.9 8 0 0-9.9-8-9.9-8 0" fill="#f5f5f5"/><ellipse cx="40.3" cy="34.5" rx="2.5" ry="3.5" fill="#0a84a5"/><circle cx="40.3" cy="34.5" r=".8" fill="#231f20"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f922.svg b/riot/emojione/svg/1f922.svg new file mode 100644 index 0000000..893e564 --- /dev/null +++ b/riot/emojione/svg/1f922.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#c7e755"/><g fill="#425e21"><circle cx="20.5" cy="27" r="4.5"/><circle cx="43.5" cy="27" r="4.5"/><path d="m37.4 43.2h-10.8c-.7 0-.7-2.5 0-2.5h10.7c.8 0 .8 2.5.1 2.5"/><path d="m23.7 35c1 2 1.6 4.4 1.6 7 0 2.6-.6 5-1.6 7 2.1-.9 3.6-3.7 3.6-7s-1.5-6.1-3.6-7"/><path d="m40.3 49c-1-2-1.6-4.4-1.6-7 0-2.6.6-5 1.6-7-2.1.9-3.6 3.7-3.6 7s1.5 6 3.6 7"/></g><g fill="#75a843"><path d="m25.6 15.9c-3.2 2.7-7.5 3.9-11.7 3.1-.6-.1-1.1 2-.4 2.2 4.8.9 9.8-.5 13.5-3.6.5-.5-1-2.1-1.4-1.7"/><path d="m50.1 18.9c-4.2.7-8.5-.4-11.7-3.1-.4-.4-2 1.2-1.4 1.7 3.7 3.2 8.7 4.5 13.5 3.6.7-.2.2-2.3-.4-2.2"/></g><g opacity=".5" fill="#ff717f"><path d="m51.7 30.3c4.9 0 8.8 4 8.8 8.8 0 4.9-4 8.8-8.8 8.8-4.9 0-8.8-4-8.8-8.8-.1-4.8 3.9-8.8 8.8-8.8" opacity=".8"/><circle cx="12.3" cy="39.1" r="8.8" opacity=".8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f923.svg b/riot/emojione/svg/1f923.svg new file mode 100644 index 0000000..e029257 --- /dev/null +++ b/riot/emojione/svg/1f923.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.9 55.7c1.2-1-2.9-12.1-4-13.1-.8-.7-4.4-.3-5.6.7-4.2 3.4-.3 13 4.5 14.3 1.3.4 4.1-1 5.1-1.9" fill="#286699"/><path d="m15.4 59.7c1.3-1.2-3.8-15.4-5.1-16.7-.9-.9-5-.6-6.4.7-4.6 4.2.2 16.4 5.7 18.2 1.5.5 4.6-1.1 5.8-2.2" fill="#b2c1c0"/><path d="m16.1 59.5c1.1-1.2-4-15.3-5.2-16.6-.8-.9-4.5-.8-5.6.4-3.9 3.9.8 16.1 5.7 18.1 1.5.6 4.1-.9 5.1-1.9" fill="#e8e8e8"/><path d="m19 58c1.5-1.3-3.5-14.7-4.8-15.9-.9-.8-5.4-.4-6.9.9-5.1 4.2-.4 15.8 5.4 17.3 1.7.5 5-1.2 6.3-2.3" fill="#3383c4"/><path d="m18.2 56.5c.2-.7-3.7-11.8-4.3-13-.4-.8-1.5-1.3-1.7-.6-.6 2.2 2.9 11.9 4.7 14.2.6.6 1.1 0 1.3-.6" fill="#e8e8e8"/><path d="m16.4 57.1c.2-.7-3.7-11.8-4.3-13-.4-.8-1.5-1.3-1.7-.6-.6 2.2 2.9 11.9 4.7 14.2.6.6 1.2 0 1.3-.6" fill="#fff"/><circle cx="38" cy="34" r="24" fill="#ffdd67"/><path d="m35.6 48c.4-.3.3-.9.3-1.5.1-12.5.1-12.5.1-25 0-.6.1-1.2-.3-1.5-4-3.1-15.6.5-15.6 14-.1 13.4 11.6 17.1 15.5 14" fill="#664e27"/><path d="m29.8 35.5c0-.5-.4-1.2-1.6-.9-.6.1-1.3.9-2.2.9-1.9 0-1.9-3 0-3 .9 0 1.6.8 2.2.9 1.1.3 1.6-.4 1.6-.9 0-1.2-1.4-3.3-3.7-3.3-2.6 0-4.7 2.1-4.7 4.7 0 2.6 2.1 4.7 4.7 4.7 2.3.1 3.7-1.9 3.7-3.1" fill="#4c3526"/><path d="m22.7 27.9c-.8 1.8-1.2 3.8-1.2 6.1 0 2.3.4 4.3 1.2 6.1.8-1.7 1.3-3.7 1.3-6.1 0-2.4-.5-4.4-1.3-6.1" fill="#ff717f"/><path d="m34 45.8c0-11.8 0-11.8 0-23.6 0-1.6-3-1.6-3 0 0 8.2 0 15.4 0 23.6 0 1.6 3 1.6 3 0" fill="#fff"/><g fill="#664e27"><path d="m40.7 31.2c4.1-1.5 6.1-3.7 6.1-6s-2-4.5-6.1-6c-.4-.1-1.2.6-.8 1 1.5 1.4 2.1 3.2 2.1 5 0 1.8-.6 3.5-2.1 5-.4.4.4 1.2.8 1"/><path d="m40.7 48.7c4.1-1.5 6.1-3.7 6.1-6 0-2.2-2-4.5-6.1-6-.4-.1-1.2.6-.8 1 1.5 1.4 2.1 3.2 2.1 5 0 1.8-.6 3.5-2.1 5-.4.4.4 1.2.8 1"/></g><path d="m18.7 8.2c-1.8-.5-9.4 10.7-9.6 12.3-.1 1.2 2.6 4.3 4.4 4.8 6 1.6 12.4-8.3 10.3-13.6-.5-1.5-3.6-3.1-5.1-3.5" fill="#286699"/><path d="m15.8 3.9c-2.1-.6-11.4 13-11.6 15-.1 1.4 3.2 5.2 5.4 5.8 7.3 1.9 15-10.1 12.6-16.5-.7-1.8-4.5-3.8-6.4-4.3" fill="#3383c4"/><path d="m14.5 2.3c-1.8-.2-11.6 13.9-12.1 15.9-.3 1.4 2 4.5 3.8 4.7 5.9.8 14.3-11.7 13.1-17.4-.4-1.6-3.3-3-4.8-3.2" fill="#b2c1c0"/><path d="m14.1 2c-1.6-.1-11.5 14-12.1 15.9-.4 1.3 1.5 4.2 3.1 4.3 5.4.4 13.8-12 13-17.4-.1-1.6-2.7-2.7-4-2.8" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f924.svg b/riot/emojione/svg/1f924.svg new file mode 100644 index 0000000..4e30304 --- /dev/null +++ b/riot/emojione/svg/1f924.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m53 60.1c0 1.1-6.1 1.9-13.7 1.9-7.5 0-13.7-.9-13.7-1.9 0-1.1 6.1-1.9 13.7-1.9 7.6 0 13.7.8 13.7 1.9" fill="#42ade2"/><path d="M62,32c0,16.6-10.8,30-30,30C15.4,62,2,48.6,2,32C2,15.4,15.4,2,32,2C48.6,2,62,15.4,62,32z" fill="#ffdd67"/><path d="m44.2 61.5c-1.7 0-3.5 0-5.2 0 1.3-2.8 1.3-6.1 0-8.9 1.7 0 3.5 0 5.2 0 1.3 2.8 1.3 6.1 0 8.9" fill="#42ade2"/><path d="m44.5 52.1c-.2 1.7-1.8 4-4.1 3.8-1.9-.2-3.8-2.2-6.2-2.5-2.5-.3-4.8 1.1-6.7.8-2.6-.3-3.2-2.9-3-4.6.4-3 5.2-4.9 10.7-4.2 5.5.6 9.7 3.6 9.3 6.7" fill="#664e27"/><circle cx="20.5" cy="29" r="10" fill="#fff"/><circle cx="20.5" cy="29" r="3.5" fill="#664e27"/><circle cx="43.5" cy="29" r="10" fill="#fff"/><circle cx="43.5" cy="29" r="3.5" fill="#664e27"/><g fill="#917524"><path d="m53.2 18.9c-3.2-2.7-7.5-3.9-11.7-3.1-.6.1-1.1-2-.4-2.2 4.8-.9 9.8.5 13.5 3.6.6.5-1 2.1-1.4 1.7"/><path d="m22.5 11.7c-4.2-.7-8.5.4-11.7 3.1-.4.4-2-1.2-1.4-1.7 3.7-3.2 8.7-4.5 13.5-3.6.7.1.2 2.3-.4 2.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f925.svg b/riot/emojione/svg/1f925.svg new file mode 100644 index 0000000..7446d3f --- /dev/null +++ b/riot/emojione/svg/1f925.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,32c0,15.5-10,28-28,28C18.5,60,6,47.5,6,32C6,16.5,18.5,4,34,4C49.5,4,62,16.5,62,32z" fill="#ffdd67"/><path d="m30.4 26.1c0 5.4-4.3 9.7-9.7 9.7-5.4 0-9.7-4.3-9.7-9.7 0-5.3 4.3-9.7 9.7-9.7 5.4 0 9.7 4.3 9.7 9.7" fill="#fff"/><circle cx="24" cy="28.2" r="3.2" fill="#664e27"/><path d="m54.7 26.1c0 5.4-4.3 9.7-9.7 9.7-5.4 0-9.7-4.3-9.7-9.7s4.3-9.7 9.7-9.7c5.3 0 9.7 4.3 9.7 9.7" fill="#fff"/><g fill="#664e27"><circle cx="40.7" cy="28.2" r="3.2"/><path d="m45.7 48c-1.4-3.6-4.8-6-12.7-6-8 0-11.3 2.4-12.7 6-.7 1.9.3 4 .3 4 .4 1.2 2.1 2 12.4 2 10.3 0 12-.8 12.4-2 0 0 1.1-2.1.3-4"/></g><path d="m42 47.1c.1-.2 0-.5-.2-.7 0 0-2-1.9-8.8-1.9-6.8 0-8.8 1.9-8.8 1.9-.2.2-.2.5-.2.7l.2.5c.1.2.3.4.5.4h16.6c.2 0 .5-.2.5-.4l.2-.5" fill="#fff"/><path d="m30.6 39.3c-7.3 1.3-15.7 1.8-23.1 1.2-8.7-.7-6.2-11.2 1-9.6 7.3 1.3 14.7 1.8 22.1 1.3 4.5-.2 4.6 6.1 0 7.1" fill="#eba352"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f926-1f3fb.svg b/riot/emojione/svg/1f926-1f3fb.svg new file mode 100644 index 0000000..60e2089 --- /dev/null +++ b/riot/emojione/svg/1f926-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M33.6,2C52,2,62,13.4,62,28.3V62H5.3V28.3C5.3,6.1,20.6,6.5,20.6,6.5S21.8,2,33.6,2z" fill="#594640"/><path fill="#c28fef" d="m21 52.2h25.2v9.8h-25.2z"/><path d="m54.1 44.8c0 0 4.1-1 4.1-7.1 0-4.8-3.1-5.6-3.1-5.6-19.1 0-29.3-9.4-29.3-9.4s-6.9 7.7-13.5 9.4c0 0-3.2.6-3.2 5.6 0 6.1 4.3 7.1 4.3 7.1 0 3.8 12.7 16.2 20.3 16.2 7.6.1 20.4-12.3 20.4-16.2" fill="#ffe1bd"/><ellipse cx="33.6" cy="55.2" rx="4" ry="3" fill="#664e27"/><path d="m13.7 17.3c0 0 2.9 1.4 3.9 5.3.6 2.3.9 2.4 2 3.2l6.2-12c.6-1.1 1.9-1.5 2.9-.9 1 .6 1.4 1.9.8 3l.7-1.4c.7-1.3 2.3-1.8 3.5-1.1 1.2.7 1.7 2.2 1 3.5l-.5 1c.6-1.1 2-1.6 3-1 1.1.6 1.4 1.9.8 3.1l-1.2 2.3c.6-1 1.8-1.5 2.8-.9 1 .5 1.6 1.9 1 2.9-10.1 18.1-10.7 19.2-15.3 19.8 0 0-3.9 4.4-7 17.9l1.6-25.1-6.2-19.6" opacity=".3"/><path d="m23.9 42l-8.7-4.7c0 0-7.4 10-13.2 24.6h16.3c0 .1.1-11.2 5.6-19.9" fill="#b386e2"/><path d="m11.4 17.3c1.5-1 3.9.3 4.8 4.2.6 2.3.7 3.2 1.8 4l7-12.8c1.8-3 4.9-1.1 3.5 1.9l-5.1 10 6.4-10.8c1.6-3 5.8-1.6 4.1 2l-6.2 10.7 6-9.2c2.1-3.2 5-.9 3.5 1.6l-5.1 9.7 4.8-7c1.6-2.5 4.3-.5 3 1.8 0 0-8 15.5-11.3 18-4.8 3.7-16.6-.9-15.7-11.1.2-2-.6-4-1-6.2-.3-2.8-2.2-5.7-.5-6.8" fill="#ffe1bd"/><path d="m38.4 40.8c2.7 5.1 8.2 5.1 10.9 0 .1-.3-.2-.4-.7-.7-2.7 2.1-7.2 2-9.6 0-.4.4-.8.5-.6.7" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f926-1f3fc.svg b/riot/emojione/svg/1f926-1f3fc.svg new file mode 100644 index 0000000..a5fc0ae --- /dev/null +++ b/riot/emojione/svg/1f926-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M33.6,2C52,2,62,13.4,62,28.3V62H5.3V28.3C5.3,6.1,20.6,6.5,20.6,6.5S21.8,2,33.6,2z" fill="#dbb471"/><path fill="#c28fef" d="m21 52.2h25.2v9.8h-25.2z"/><path d="m54.1 44.8c0 0 4.1-1 4.1-7.1 0-4.8-3.1-5.6-3.1-5.6-19.1 0-29.3-9.4-29.3-9.4s-6.9 7.7-13.5 9.4c0 0-3.2.6-3.2 5.6 0 6.1 4.3 7.1 4.3 7.1 0 3.8 12.7 16.2 20.3 16.2 7.6.1 20.4-12.3 20.4-16.2" fill="#fed0ac"/><ellipse cx="33.6" cy="55.2" rx="4" ry="3" fill="#664e27"/><path d="m13.7 17.3c0 0 2.9 1.4 3.9 5.3.6 2.3.9 2.4 2 3.2l6.2-12c.6-1.1 1.9-1.5 2.9-.9 1 .6 1.4 1.9.8 3l.7-1.4c.7-1.3 2.3-1.8 3.5-1.1 1.2.7 1.7 2.2 1 3.5l-.5 1c.6-1.1 2-1.6 3-1 1.1.6 1.4 1.9.8 3.1l-1.2 2.3c.6-1 1.8-1.5 2.8-.9 1 .5 1.6 1.9 1 2.9-10.1 18.1-10.7 19.2-15.3 19.8 0 0-3.9 4.4-7 17.9l1.6-25.1-6.2-19.6" opacity=".3"/><path d="m23.9 42l-8.7-4.7c0 0-7.4 10-13.2 24.6h16.3c0 .1.1-11.2 5.6-19.9" fill="#b386e2"/><path d="m11.4 17.3c1.5-1 3.9.3 4.8 4.2.6 2.3.7 3.2 1.8 4l7-12.8c1.8-3 4.9-1.1 3.5 1.9l-5.1 10 6.4-10.8c1.6-3 5.8-1.6 4.1 2l-6.2 10.7 6-9.2c2.1-3.2 5-.9 3.5 1.6l-5.1 9.7 4.8-7c1.6-2.5 4.3-.5 3 1.8 0 0-8 15.5-11.3 18-4.8 3.7-16.6-.9-15.7-11.1.2-2-.6-4-1-6.2-.3-2.8-2.2-5.7-.5-6.8" fill="#fed0ac"/><path d="m38.4 40.8c2.7 5.1 8.2 5.1 10.9 0 .1-.3-.2-.4-.7-.7-2.7 2.1-7.2 2-9.6 0-.4.4-.8.5-.6.7" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f926-1f3fd.svg b/riot/emojione/svg/1f926-1f3fd.svg new file mode 100644 index 0000000..ea86bb8 --- /dev/null +++ b/riot/emojione/svg/1f926-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M33.6,2C52,2,62,13.4,62,28.3V62H5.3V28.3C5.3,6.1,20.6,6.5,20.6,6.5S21.8,2,33.6,2z" fill="#594640"/><path fill="#c28fef" d="m21 52.2h25.2v9.8h-25.2z"/><path d="m54.1 44.8c0 0 4.1-1 4.1-7.1 0-4.8-3.1-5.6-3.1-5.6-19.1 0-29.3-9.4-29.3-9.4s-6.9 7.7-13.5 9.4c0 0-3.2.6-3.2 5.6 0 6.1 4.3 7.1 4.3 7.1 0 3.8 12.7 16.2 20.3 16.2 7.6.1 20.4-12.3 20.4-16.2" fill="#d6a57c"/><ellipse cx="33.6" cy="55.2" rx="4" ry="3" fill="#664e27"/><path d="m13.7 17.3c0 0 2.9 1.4 3.9 5.3.6 2.3.9 2.4 2 3.2l6.2-12c.6-1.1 1.9-1.5 2.9-.9 1 .6 1.4 1.9.8 3l.7-1.4c.7-1.3 2.3-1.8 3.5-1.1 1.2.7 1.7 2.2 1 3.5l-.5 1c.6-1.1 2-1.6 3-1 1.1.6 1.4 1.9.8 3.1l-1.2 2.3c.6-1 1.8-1.5 2.8-.9 1 .5 1.6 1.9 1 2.9-10.1 18.1-10.7 19.2-15.3 19.8 0 0-3.9 4.4-7 17.9l1.6-25.1-6.2-19.6" opacity=".3"/><path d="m23.9 42l-8.7-4.7c0 0-7.4 10-13.2 24.6h16.3c0 .1.1-11.2 5.6-19.9" fill="#b386e2"/><path d="m11.4 17.3c1.5-1 3.9.3 4.8 4.2.6 2.3.7 3.2 1.8 4l7-12.8c1.8-3 4.9-1.1 3.5 1.9l-5.1 10 6.4-10.8c1.6-3 5.8-1.6 4.1 2l-6.2 10.7 6-9.2c2.1-3.2 5-.9 3.5 1.6l-5.1 9.7 4.8-7c1.6-2.5 4.3-.5 3 1.8 0 0-8 15.5-11.3 18-4.8 3.7-16.6-.9-15.7-11.1.2-2-.6-4-1-6.2-.3-2.8-2.2-5.7-.5-6.8" fill="#d6a57c"/><path d="m38.4 40.8c2.7 5.1 8.2 5.1 10.9 0 .1-.3-.2-.4-.7-.7-2.7 2.1-7.2 2-9.6 0-.4.4-.8.5-.6.7" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f926-1f3fe.svg b/riot/emojione/svg/1f926-1f3fe.svg new file mode 100644 index 0000000..27bb43a --- /dev/null +++ b/riot/emojione/svg/1f926-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M33.6,2C52,2,62,13.4,62,28.3V62H5.3V28.3C5.3,6.1,20.6,6.5,20.6,6.5S21.8,2,33.6,2z" fill="#231f20"/><path fill="#c28fef" d="m21 52.2h25.2v9.8h-25.2z"/><path d="m54.1 44.8c0 0 4.1-1 4.1-7.1 0-4.8-3.1-5.6-3.1-5.6-19.2 0-29.3-9.4-29.3-9.4s-6.9 7.7-13.5 9.4c0 0-3.2.6-3.2 5.6 0 6.1 4.3 7.1 4.3 7.1 0 3.8 12.7 16.2 20.3 16.2 7.6.1 20.4-12.3 20.4-16.2" fill="#b47d56"/><ellipse cx="33.6" cy="55.2" rx="4" ry="3" fill="#664e27"/><path d="m13.7 17.3c0 0 2.9 1.4 3.9 5.3.6 2.3.9 2.4 2 3.2l6.2-12c.6-1.1 1.9-1.5 2.9-.9 1 .6 1.4 1.9.8 3l.7-1.4c.7-1.3 2.3-1.8 3.5-1.1 1.2.7 1.7 2.2 1 3.5l-.5 1c.6-1.1 2-1.6 3-1 1.1.6 1.4 1.9.8 3.1l-1.2 2.3c.6-1 1.8-1.5 2.8-.9 1 .5 1.6 1.9 1 2.9-10.1 18.1-10.7 19.2-15.3 19.8 0 0-3.9 4.4-7 17.9l1.6-25.1-6.2-19.6" opacity=".3"/><path d="m23.9 42l-8.7-4.7c0 0-7.4 10-13.2 24.6h16.3c0 .1.1-11.2 5.6-19.9" fill="#b386e2"/><path d="m11.4 17.3c1.5-1 3.9.3 4.8 4.2.6 2.3.7 3.2 1.8 4l7-12.8c1.8-3 4.9-1.1 3.5 1.9l-5.1 10 6.4-10.8c1.6-3 5.8-1.6 4.1 2l-6.2 10.7 6-9.2c2.1-3.2 5-.9 3.5 1.6l-5.1 9.7 4.8-7c1.6-2.5 4.3-.5 3 1.8 0 0-8 15.5-11.3 18-4.8 3.7-16.6-.9-15.7-11.1.2-2-.6-4-1-6.2-.3-2.8-2.2-5.7-.5-6.8" fill="#b47d56"/><path d="m38.4 40.8c2.7 5.1 8.2 5.1 10.9 0 .1-.3-.2-.4-.7-.7-2.7 2.1-7.2 2-9.6 0-.4.4-.8.5-.6.7" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f926-1f3ff.svg b/riot/emojione/svg/1f926-1f3ff.svg new file mode 100644 index 0000000..2f70443 --- /dev/null +++ b/riot/emojione/svg/1f926-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M33.6,2C52,2,62,13.4,62,28.3V62H5.3V28.3C5.3,6.1,20.6,6.5,20.6,6.5S21.8,2,33.6,2z" fill="#231f20"/><path fill="#c28fef" d="m21 52.2h25.2v9.8h-25.2z"/><path d="m54.1 44.8c0 0 4.1-1 4.1-7.1 0-4.8-3.1-5.6-3.1-5.6-19.1 0-29.3-9.4-29.3-9.4s-6.9 7.7-13.5 9.4c0 0-3.2.6-3.2 5.6 0 6.1 4.3 7.1 4.3 7.1 0 3.8 12.7 16.2 20.3 16.2 7.6.1 20.4-12.3 20.4-16.2" fill="#8a6859"/><ellipse cx="33.6" cy="55.2" rx="4" ry="3" fill="#574137"/><path d="m13.7 17.3c0 0 2.9 1.4 3.9 5.3.6 2.3.9 2.4 2 3.2l6.2-12c.6-1.1 1.9-1.5 2.9-.9 1 .6 1.4 1.9.8 3l.7-1.4c.7-1.3 2.3-1.8 3.5-1.1 1.2.7 1.7 2.2 1 3.5l-.5 1c.6-1.1 2-1.6 3-1 1.1.6 1.4 1.9.8 3.1l-1.2 2.3c.6-1 1.8-1.5 2.8-.9 1 .5 1.6 1.9 1 2.9-10.1 18.1-10.7 19.2-15.3 19.8 0 0-3.9 4.4-7 17.9l1.6-25.1-6.2-19.6" opacity=".3"/><path d="m23.9 42l-8.7-4.7c0 0-7.4 10-13.2 24.6h16.3c0 .1.1-11.2 5.6-19.9" fill="#b386e2"/><path d="m11.4 17.3c1.5-1 3.9.3 4.8 4.2.6 2.3.7 3.2 1.8 4l7-12.8c1.8-3 4.9-1.1 3.5 1.9l-5.1 10 6.4-10.8c1.6-3 5.8-1.6 4.1 2l-6.2 10.7 6-9.2c2.1-3.2 5-.9 3.5 1.6l-5.1 9.7 4.8-7c1.6-2.5 4.3-.5 3 1.8 0 0-8 15.5-11.3 18-4.8 3.7-16.6-.9-15.7-11.1.2-2-.6-4-1-6.2-.3-2.8-2.2-5.7-.5-6.8" fill="#8a6859"/><path d="m38.4 40.8c2.7 5.1 8.2 5.1 10.9 0 .1-.3-.2-.4-.7-.7-2.7 2.1-7.2 2-9.6 0-.4.4-.8.5-.6.7" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f926.svg b/riot/emojione/svg/1f926.svg new file mode 100644 index 0000000..bff8eff --- /dev/null +++ b/riot/emojione/svg/1f926.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M33.6,2C52,2,62,13.4,62,28.3V62H5.3V28.3C5.3,6.1,20.6,6.5,20.6,6.5S21.8,2,33.6,2z" fill="#ffb300"/><path fill="#c28fef" d="m21 52.2h25.2v9.8h-25.2z"/><path d="m54.1 44.8c0 0 4.1-1 4.1-7.1 0-4.8-3.1-5.6-3.1-5.6-19.1 0-29.3-9.4-29.3-9.4s-6.9 7.7-13.5 9.4c0 0-3.2.6-3.2 5.6 0 6.1 4.3 7.1 4.3 7.1 0 3.8 12.7 16.2 20.3 16.2 7.6.1 20.4-12.3 20.4-16.2" fill="#ffdd67"/><ellipse cx="33.6" cy="55.2" rx="4" ry="3" fill="#937237"/><path d="m13.7 17.3c0 0 2.9 1.4 3.9 5.3.6 2.3.9 2.4 2 3.2l6.2-12c.6-1.1 1.9-1.5 2.9-.9 1 .6 1.4 1.9.8 3l.7-1.4c.7-1.3 2.3-1.8 3.5-1.1 1.2.7 1.7 2.2 1 3.5l-.5 1c.6-1.1 2-1.6 3-1 1.1.6 1.4 1.9.8 3.1l-1.2 2.3c.6-1 1.8-1.5 2.8-.9 1 .5 1.6 1.9 1 2.9-10.1 18.1-10.7 19.2-15.3 19.8 0 0-3.9 4.4-7 17.9l1.6-25.1-6.2-19.6" opacity=".3"/><path d="m23.9 42l-8.7-4.7c0 0-7.4 10-13.2 24.6h16.3c0 .1.1-11.2 5.6-19.9" fill="#b386e2"/><path d="m11.4 17.3c1.5-1 3.9.3 4.8 4.2.6 2.3.7 3.2 1.8 4l7-12.8c1.8-3 4.9-1.1 3.5 1.9l-5.1 10 6.4-10.8c1.6-3 5.8-1.6 4.1 2l-6.2 10.7 6-9.2c2.1-3.2 5-.9 3.5 1.6l-5.1 9.7 4.8-7c1.6-2.5 4.3-.5 3 1.8 0 0-8 15.5-11.3 18-4.8 3.7-16.6-.9-15.7-11.1.2-2-.6-4-1-6.2-.3-2.8-2.2-5.7-.5-6.8" fill="#ffdd67"/><path d="m38.4 40.8c2.7 5.1 8.2 5.1 10.9 0 .1-.3-.2-.4-.7-.7-2.7 2.1-7.2 2-9.6 0-.4.4-.8.5-.6.7" fill="#937237"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f927.svg b/riot/emojione/svg/1f927.svg new file mode 100644 index 0000000..1c513dd --- /dev/null +++ b/riot/emojione/svg/1f927.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="35" cy="29" r="27" fill="#ffdd67"/><g fill="#917524"><path d="m20.5 12.7c-.6.1-.4 2 .2 2 3.8-.3 7.6 1 10.2 3.7.4.4 1.8-.9 1.4-1.4-3.1-3.1-7.4-4.7-11.8-4.3"/><path d="m49.5 12.7c-4.4-.4-8.7 1.2-11.8 4.3-.4.5 1 1.8 1.4 1.4 2.7-2.7 6.4-4.1 10.2-3.7.5.1.8-1.9.2-2"/></g><path d="m33.1 29.3c-8.1 3.7-11.9 8-31.1 8.5 0 0 2 14.1 12.9 12.2 7.3-1.2 4.3 10.3 4.3 10.3s8-10.3 10-4.6c2.1 5.9 6.8 6.2 6.8 6.2 8.5-11.6 7.2-37.2-2.9-32.6" fill="#f5f5f5"/><g fill="#d6d6d6"><path d="m37.3 34.8c-.4-1.1-7.2 11.2-18 25.5 4.6-.6 8-7.6 9.2-4.5.6 1.7 3.7 4.3 3.7 4.3s8.6-14.5 5.1-25.3"/><path d="m32.3 33.5c.9-3.9-12.2 3.6-27.5 11.9 3.9 7.4 10 4.2 12.7 4.9 0 0 12.8-8.3 14.8-16.8"/></g><g fill="#664e27"><path d="m51.9 19.8c.5.3.3.9-.1.9-2.3.3-4.8.7-7.1 2 3.5.6 6.2 2.3 7.7 4.1.3.4-.1 1-.5.8-4.1-1.5-8.3-2.3-13.6-1.7-.4 0-.8-.2-.7-.6 1.4-6.1 9.4-8.4 14.3-5.5"/><path d="m18.1 19.8c-.5.3-.3.9.1.9 2.3.3 4.8.7 7.1 2-3.5.6-6.2 2.3-7.7 4.1-.3.4.1 1 .5.8 4.1-1.5 8.3-2.3 13.6-1.7.4 0 .8-.2.7-.6-1.4-6.1-9.4-8.4-14.3-5.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f930-1f3fb.svg b/riot/emojione/svg/1f930-1f3fb.svg new file mode 100644 index 0000000..4b1d23f --- /dev/null +++ b/riot/emojione/svg/1f930-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.9 27.3l-8.5-.6c0 4.8-10.4 7-10.4 10.8 0 2.7 2.5 3.4 2.5 3.4s-7.9 3-7.9 11.4c0 6.7 5.3 9.6 11.6 9.6h10.3c0 0 .7-2-.6-9.1-2.5-13.9 7.6-11.6 3-25.5" fill="#e84d88"/><path d="m20.4 46.7l.6-1.4 1.1-.3c2.7 0 3.5 1.7 4.9 1.7v5.7c0 0-1.1 1-5.4 1-2.1 0-3.5-1.4-4.1-4.4-.7-2.4 2.9-2.3 2.9-2.3" fill="#ffe1bd"/><path d="m22.1 45c0 0-1.2.3-1.2 1 0 .4 1.4-.1 2.4 1-1.4-.7-3-.3-3-.3-.6-.6-.1-1.7 1.8-1.7" fill="#e6b796"/><g fill="#231f20"><path d="m26 46.2c5.8-1.2 11.6-3.1 11.6-3.1l-.9 7.6.2 1.2c0 0-3.5 1.9-10.8 2.5v-.6c0 0-5.4.8-7.1-1.2 2.7 1.2 7-.2 7-.2v-6.2" opacity=".3"/><path opacity=".3" d="m35.8 31.5l4.1 7.2-1.3 2.5z"/></g><path d="m42.2 27.3c0 0 7.7 11.8 6.7 16.7-1.1 5.6-22.3 8.8-22.3 8.8l-.3-6.4c0 0 13.1-3.1 14.8-5.4-1.1-2.5-5.3-9.6-5.3-9.6l6.4-4.1" fill="#e84d88"/><path d="m28.4 26.3l8.4-14.8.2 15.3c-3.5 1.5-5.5 0-5.5 0-1.1-2-3.1-.5-3.1-.5" fill="#e6b796"/><path d="m40.3 9.1c-3.4-6.7-8.9-6.3-8.9-6.3-6.9-3.1-14.3 3.6-15.7 7.4-2.9 7.7 3.8 10.8 4.7 10.1l14.3-4.5c0 0 2.9 3 1.6 9-1.3 5.9 4.7 10.3 4.7 10.3s5.9-12.8-.7-26" fill="#594640"/><path d="m17.2 12.4c-.2-2.1 4.1-1.7 6.4.6 5 5.1 6.5 3.8 6.5 3.8-.3-.4-.5-.9-.6-1.4-.5-2 .2-3.9 1.7-4.2 1.5-.3 3.2 1.1 3.7 3.1.5 1.8-.1 3.5-1.3 4.1 1.8 5.5.1 5.6-2.5 7.6-5.6 4.6-6.5 3.4-7.1 1.6-.3-.8-.9-.4-1.6-.5 0 0-.1-.5-.6-1.8-.4-1.3-1.7-1.1-1.3-1.8.4-.7.6-1.1.3-1.5-.1-.2-1.4.4-1.8-.3-.7-1.2 1.1-1.4.8-3.6 0-1.2-2.2-1.4-2.6-5.7" fill="#ffe1bd"/><path d="m22.4 24.2c-.4 0-.7-.1-1-.2-.3-.1-.6-.3-.6-.8-.2.1-.2.4-.2.7.1.3.3.5.5.7.2.2.4.3.6.4-.1.2-.1.5 0 .8.1.3.2.5.3.7.2.2.3.4.5.5 0-.5-.1-.9-.1-1.2 0-.1.1-.3.1-.4.1-.1.2-.3.3-.4l.5-.8h-.9" fill="#c94747"/><path d="m31.3 12.4c-.4.2-.7.5-.8.9-.2.4-.2.9-.1 1.3.1.4.2.7.4 1-.2 0-.3.1-.4.2.2 0 .4.1.5.2.1.1.3.2.4.3.1.1.2.2.3.4.1.1.1.3.2.6.2-.1.3-.4.3-.6 0-.3-.1-.6-.3-.8-.2-.2-.4-.4-.7-.4-.1 0-.1 0-.2 0-.1-.8-.1-1.4.1-2 .1-.3.3-.6.6-.8.2-.2.5-.5.8-.7-.3.1-.7.2-1.1.4" fill="#664e27"/><path d="m20.9 17.8c-.1-.4-.2-.6-.4-.8-.2-.2-.4-.5-.6-.8-.2-.3-.3-.8-.3-1.2.1-.4.3-.7.6-.8-.1.3-.1.7-.1.9s.1.5.3.8c.1.3.4.6.5.9.2.2.3.7 0 1" fill="#e6b796"/><path d="m23.7 15c-.3.3-.4.7-.6 1.1-.1.4-.3.8-.6 1.1-.2.4-.6.7-1 .9-.4.2-1 .2-1.4-.1.9-.3 1.2-.8 1.6-1.4.2-.3.4-.6.7-1 .4-.4.8-.7 1.3-.6" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f930-1f3fc.svg b/riot/emojione/svg/1f930-1f3fc.svg new file mode 100644 index 0000000..b168358 --- /dev/null +++ b/riot/emojione/svg/1f930-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.9 27.3l-8.5-.6c0 4.8-10.4 7-10.4 10.8 0 2.7 2.5 3.4 2.5 3.4s-7.9 3-7.9 11.4c0 6.7 5.3 9.6 11.6 9.6h10.3c0 0 .7-2-.6-9.1-2.5-13.9 7.6-11.6 3-25.5" fill="#e84d88"/><path d="m20.4 46.7l.6-1.4 1.1-.3c2.7 0 3.5 1.7 4.9 1.7v5.7c0 0-1.1 1-5.4 1-2.1 0-3.5-1.4-4.1-4.4-.7-2.4 2.9-2.3 2.9-2.3" fill="#fed0ac"/><path d="m22.1 45c0 0-1.2.3-1.2 1 0 .4 1.4-.1 2.4 1-1.4-.7-3-.3-3-.3-.6-.6-.1-1.7 1.8-1.7" fill="#e0a372"/><g fill="#231f20"><path d="m26 46.2c5.8-1.2 11.6-3.1 11.6-3.1l-.9 7.6.2 1.2c0 0-3.5 1.9-10.8 2.5v-.6c0 0-5.4.8-7.1-1.2 2.7 1.2 7-.2 7-.2v-6.2" opacity=".3"/><path opacity=".3" d="m35.8 31.5l4.1 7.2-1.3 2.5z"/></g><path d="m42.2 27.3c0 0 7.7 11.8 6.7 16.7-1.1 5.6-22.3 8.8-22.3 8.8l-.3-6.4c0 0 13.1-3.1 14.8-5.4-1.1-2.5-5.3-9.6-5.3-9.6l6.4-4.1" fill="#e84d88"/><path d="m28.4 26.3l8.4-14.8.2 15.3c-3.5 1.5-5.5 0-5.5 0-1.1-2-3.1-.5-3.1-.5" fill="#e0a372"/><path d="m40.3 9.1c-3.4-6.7-8.9-6.3-8.9-6.3-6.9-3.1-14.3 3.6-15.7 7.4-2.9 7.7 3.8 10.8 4.7 10.1l14.3-4.5c0 0 2.9 3 1.6 9-1.3 5.9 4.7 10.3 4.7 10.3s5.9-12.8-.7-26" fill="#dbb471"/><path d="m17.2 12.4c-.2-2.1 4.1-1.7 6.4.6 5 5.1 6.5 3.8 6.5 3.8-.3-.4-.5-.9-.6-1.4-.5-2 .2-3.9 1.7-4.2 1.5-.3 3.2 1.1 3.7 3.1.5 1.8-.1 3.5-1.3 4.1 1.8 5.5.1 5.6-2.5 7.6-5.6 4.6-6.5 3.4-7.1 1.6-.3-.8-.9-.4-1.6-.5 0 0-.1-.5-.6-1.8-.4-1.3-1.7-1.1-1.3-1.8.4-.7.6-1.1.3-1.5-.1-.2-1.4.4-1.8-.3-.7-1.2 1.1-1.4.8-3.6 0-1.2-2.2-1.4-2.6-5.7" fill="#fed0ac"/><path d="m22.4 24.2c-.4 0-.7-.1-1-.2-.3-.1-.6-.3-.6-.8-.2.1-.2.4-.2.7.1.3.3.5.5.7.2.2.4.3.6.4-.1.2-.1.5 0 .8.1.3.2.5.3.7.2.2.3.4.5.5 0-.5-.1-.9-.1-1.2 0-.1.1-.3.1-.4.1-.1.2-.3.3-.4l.5-.8h-.9" fill="#c94747"/><path d="m31.3 12.4c-.4.2-.7.5-.8.9-.2.4-.2.9-.1 1.3.1.4.2.7.4 1-.2 0-.3.1-.4.2.2 0 .4.1.5.2.1.1.3.2.4.3.1.1.2.2.3.4.1.1.1.3.2.6.2-.1.3-.4.3-.6 0-.3-.1-.6-.3-.8-.2-.2-.4-.4-.7-.4-.1 0-.1 0-.2 0-.1-.8-.1-1.4.1-2 .1-.3.3-.6.6-.8.2-.2.5-.5.8-.7-.3.1-.7.2-1.1.4" fill="#664e27"/><path d="m20.9 17.8c-.1-.4-.2-.6-.4-.8-.2-.2-.4-.5-.6-.8-.2-.3-.3-.8-.3-1.2.1-.4.3-.7.6-.8-.1.3-.1.7-.1.9s.1.5.3.8c.1.3.4.6.5.9.2.2.3.7 0 1" fill="#e0a372"/><path d="m23.7 15c-.3.3-.4.7-.6 1.1-.1.4-.3.8-.6 1.1-.2.4-.6.7-1 .9-.4.2-1 .2-1.4-.1.8-.3 1.2-.8 1.6-1.4.2-.3.4-.6.7-1 .4-.4.8-.7 1.3-.6" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f930-1f3fd.svg b/riot/emojione/svg/1f930-1f3fd.svg new file mode 100644 index 0000000..dbb32ea --- /dev/null +++ b/riot/emojione/svg/1f930-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.9 27.3l-8.5-.6c0 4.8-10.4 7-10.4 10.8 0 2.7 2.5 3.4 2.5 3.4s-7.9 3-7.9 11.4c0 6.7 5.3 9.6 11.6 9.6h10.3c0 0 .7-2-.6-9.1-2.5-13.9 7.6-11.6 3-25.5" fill="#e84d88"/><path d="m20.4 46.7l.6-1.4 1.1-.3c2.7 0 3.6 1.7 4.9 1.7v5.7c0 0-1.1 1-5.4 1-2.1 0-3.5-1.4-4.1-4.4-.7-2.4 2.9-2.3 2.9-2.3" fill="#d6a57c"/><path d="m22.1 45c0 0-1.2.3-1.2 1 0 .4 1.4-.1 2.4 1-1.4-.7-3-.3-3-.3-.6-.6-.1-1.7 1.8-1.7" fill="#b58360"/><g fill="#231f20"><path d="m26 46.2c5.8-1.2 11.6-3.1 11.6-3.1l-.9 7.6.2 1.2c0 0-3.5 1.9-10.8 2.5v-.6c0 0-5.4.8-7.1-1.2 2.7 1.2 7-.2 7-.2v-6.2" opacity=".3"/><path opacity=".3" d="m35.8 31.5l4.1 7.2-1.3 2.5z"/></g><path d="m42.2 27.3c0 0 7.7 11.8 6.7 16.7-1.1 5.6-22.3 8.8-22.3 8.8l-.3-6.4c0 0 13.1-3.1 14.8-5.4-1.1-2.5-5.3-9.6-5.3-9.6l6.4-4.1" fill="#e84d88"/><path d="m28.4 26.3l8.4-14.8.2 15.3c-3.5 1.5-5.5 0-5.5 0-1.1-2-3.1-.5-3.1-.5" fill="#b58360"/><path d="m40.3 9.1c-3.4-6.7-8.9-6.3-8.9-6.3-6.9-3.1-14.3 3.6-15.7 7.4-2.9 7.7 3.8 10.8 4.7 10.1l14.3-4.5c0 0 2.9 3 1.6 9-1.3 5.9 4.7 10.3 4.7 10.3s5.9-12.8-.7-26" fill="#594640"/><path d="m17.2 12.4c-.2-2.1 4.1-1.7 6.4.6 5 5.1 6.5 3.8 6.5 3.8-.3-.4-.5-.9-.6-1.4-.5-2 .2-3.9 1.7-4.2 1.5-.3 3.2 1.1 3.7 3.1.5 1.8-.1 3.5-1.3 4.1 1.8 5.5.1 5.6-2.5 7.6-5.6 4.6-6.5 3.4-7.1 1.6-.3-.8-.9-.4-1.6-.5 0 0-.1-.5-.6-1.8-.4-1.3-1.7-1.1-1.3-1.8.4-.7.6-1.1.3-1.5-.1-.2-1.4.4-1.8-.3-.7-1.2 1.1-1.4.8-3.6 0-1.2-2.2-1.4-2.6-5.7" fill="#d6a57c"/><path d="m22.4 24.2c-.4 0-.7-.1-1-.2-.3-.1-.6-.3-.6-.8-.2.1-.2.4-.2.7.1.3.3.5.5.7.2.2.4.3.6.4-.1.2-.1.5 0 .8.1.3.2.5.3.7.2.2.3.4.5.5 0-.5-.1-.9-.1-1.2 0-.1.1-.3.1-.4s.2-.3.3-.4l.5-.8h-.9" fill="#c94747"/><path d="m31.3 12.4c-.4.2-.7.5-.8.9-.2.4-.2.9-.1 1.3.1.4.2.7.4 1-.2 0-.3.1-.4.2.2 0 .4.1.5.2.1.1.3.2.4.3.1.1.2.2.3.4.1.1.1.3.2.6.2-.1.3-.4.3-.6 0-.3-.1-.6-.3-.8-.2-.2-.4-.4-.7-.4-.1 0-.1 0-.2 0-.1-.8-.1-1.4.1-2 .1-.3.3-.6.6-.8.2-.2.5-.5.8-.7-.3.1-.7.2-1.1.4" fill="#664e27"/><path d="m20.9 17.8c-.1-.4-.2-.6-.4-.8-.2-.2-.4-.5-.6-.8-.2-.3-.3-.8-.3-1.2.1-.4.3-.7.6-.8-.1.3-.1.7-.1.9s.1.5.3.8c.1.3.4.6.5.9.2.2.3.7 0 1" fill="#b58360"/><path d="m23.7 15c-.3.3-.4.7-.6 1.1-.1.4-.3.8-.6 1.1-.2.4-.6.7-1 .9-.4.2-1 .2-1.4-.1.8-.3 1.2-.8 1.6-1.4.2-.3.4-.6.7-1 .4-.4.8-.7 1.3-.6" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f930-1f3fe.svg b/riot/emojione/svg/1f930-1f3fe.svg new file mode 100644 index 0000000..a3bab2c --- /dev/null +++ b/riot/emojione/svg/1f930-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.9 27.3l-8.5-.6c0 4.8-10.4 7-10.4 10.8 0 2.7 2.5 3.4 2.5 3.4s-7.9 3-7.9 11.4c0 6.7 5.3 9.6 11.6 9.6h10.3c0 0 .7-2-.6-9.1-2.5-13.9 7.6-11.6 3-25.5" fill="#e84d88"/><path d="m20.4 46.7l.6-1.4 1.1-.3c2.7 0 3.5 1.7 4.9 1.7v5.7c0 0-1.1 1-5.4 1-2.1 0-3.5-1.4-4.1-4.4-.7-2.4 2.9-2.3 2.9-2.3" fill="#b47d56"/><path d="m22.1 45c0 0-1.2.3-1.2 1 0 .4 1.4-.1 2.4 1-1.4-.7-3-.3-3-.3-.6-.6-.1-1.7 1.8-1.7" fill="#935e3e"/><g fill="#231f20"><path d="m26 46.2c5.8-1.2 11.6-3.1 11.6-3.1l-.9 7.6.2 1.2c0 0-3.5 1.9-10.8 2.5v-.6c0 0-5.4.8-7.1-1.2 2.7 1.2 7-.2 7-.2v-6.2" opacity=".3"/><path opacity=".3" d="m35.8 31.5l4.1 7.2-1.3 2.5z"/></g><path d="m42.2 27.3c0 0 7.7 11.8 6.7 16.7-1.1 5.6-22.3 8.8-22.3 8.8l-.3-6.4c0 0 13.1-3.1 14.8-5.4-1.1-2.5-5.3-9.6-5.3-9.6l6.4-4.1" fill="#e84d88"/><path d="m28.4 26.3l8.4-14.8.2 15.3c-3.5 1.5-5.5 0-5.5 0-1.1-2-3.1-.5-3.1-.5" fill="#935e3e"/><path d="m40.3 9.1c-3.4-6.7-8.9-6.3-8.9-6.3-6.9-3.1-14.3 3.6-15.7 7.4-2.9 7.7 3.8 10.8 4.7 10.1l14.3-4.5c0 0 2.9 3 1.6 9-1.3 5.9 4.7 10.3 4.7 10.3s5.9-12.8-.7-26" fill="#231f20"/><path d="m17.2 12.4c-.2-2.1 4.1-1.7 6.4.6 5 5.1 6.5 3.8 6.5 3.8-.3-.4-.5-.9-.6-1.4-.5-2 .2-3.9 1.7-4.2 1.5-.3 3.2 1.1 3.7 3.1.5 1.8-.1 3.5-1.3 4.1 1.8 5.5.1 5.6-2.5 7.6-5.6 4.6-6.5 3.4-7.1 1.6-.3-.8-.9-.4-1.6-.5 0 0-.1-.5-.6-1.8-.4-1.3-1.7-1.1-1.3-1.8.4-.7.6-1.1.3-1.5-.1-.2-1.4.4-1.8-.3-.7-1.2 1.1-1.4.8-3.6 0-1.2-2.2-1.4-2.6-5.7" fill="#b47d56"/><path d="m22.4 24.2c-.4 0-.7-.1-1-.2-.3-.1-.6-.3-.6-.8-.2.1-.2.4-.2.7.1.3.3.5.5.7.2.2.4.3.6.4-.1.2-.1.5 0 .8.1.3.2.5.3.7.2.2.3.4.5.5 0-.5-.1-.9-.1-1.2 0-.1.1-.3.1-.4.1-.1.2-.3.3-.4l.5-.8h-.9" fill="#c94747"/><path d="m31.3 12.4c-.4.2-.7.5-.8.9-.2.4-.2.9-.1 1.3.1.4.2.7.4 1-.2 0-.3.1-.4.2.2 0 .4.1.5.2.1.1.3.2.4.3.1.1.2.2.3.4.1.1.1.3.2.6.2-.1.3-.4.3-.6 0-.3-.1-.6-.3-.8-.2-.2-.4-.4-.7-.4-.1 0-.1 0-.2 0-.1-.8-.1-1.4.1-2 .1-.3.3-.6.6-.8.2-.2.5-.5.8-.7-.3.1-.7.2-1.1.4" fill="#664e27"/><path d="m20.9 17.8c-.1-.4-.2-.6-.4-.8-.2-.2-.4-.5-.6-.8-.2-.3-.3-.8-.3-1.2.1-.4.3-.7.6-.8-.1.3-.1.7-.1.9s.1.5.3.8c.1.3.4.6.5.9.2.2.3.7 0 1" fill="#935e3e"/><path d="m23.7 15c-.3.3-.4.7-.6 1.1-.1.4-.3.8-.6 1.1-.2.4-.6.7-1 .9-.4.2-1 .2-1.4-.1.8-.3 1.2-.8 1.6-1.4.2-.3.4-.6.7-1 .4-.4.8-.7 1.3-.6" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f930-1f3ff.svg b/riot/emojione/svg/1f930-1f3ff.svg new file mode 100644 index 0000000..ad37b4b --- /dev/null +++ b/riot/emojione/svg/1f930-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.9 27.3l-8.5-.6c0 4.8-10.4 7-10.4 10.8 0 2.7 2.5 3.4 2.5 3.4s-7.9 3-7.9 11.4c0 6.7 5.3 9.6 11.6 9.6h10.3c0 0 .7-2-.6-9.1-2.5-13.9 7.6-11.6 3-25.5" fill="#e84d88"/><path d="m20.4 46.7l.6-1.4 1.1-.3c2.7 0 3.5 1.7 4.9 1.7v5.7c0 0-1.1 1-5.4 1-2.1 0-3.5-1.4-4.1-4.4-.7-2.4 2.9-2.3 2.9-2.3" fill="#8a6859"/><path d="m22.1 45c0 0-1.2.3-1.2 1 0 .4 1.4-.1 2.4 1-1.4-.7-3-.3-3-.3-.6-.6-.1-1.7 1.8-1.7" fill="#705041"/><g fill="#231f20"><path d="m26 46.2c5.8-1.2 11.6-3.1 11.6-3.1l-.9 7.6.2 1.2c0 0-3.5 1.9-10.8 2.5v-.6c0 0-5.4.8-7.1-1.2 2.7 1.2 7-.2 7-.2v-6.2" opacity=".3"/><path opacity=".3" d="m35.8 31.5l4.1 7.2-1.3 2.5z"/></g><path d="m42.2 27.3c0 0 7.7 11.8 6.7 16.7-1.1 5.6-22.3 8.8-22.3 8.8l-.3-6.4c0 0 13.1-3.1 14.8-5.4-1.1-2.5-5.3-9.6-5.3-9.6l6.4-4.1" fill="#e84d88"/><path d="m28.4 26.3l8.4-14.8.2 15.3c-3.5 1.5-5.5 0-5.5 0-1.1-2-3.1-.5-3.1-.5" fill="#705041"/><path d="m40.3 9.1c-3.4-6.7-8.9-6.3-8.9-6.3-6.9-3.1-14.3 3.6-15.7 7.4-2.9 7.7 3.8 10.8 4.7 10.1l14.3-4.5c0 0 2.9 3 1.6 9-1.3 5.9 4.7 10.3 4.7 10.3s5.9-12.8-.7-26" fill="#231f20"/><path d="m17.2 12.4c-.2-2.1 4.1-1.7 6.4.6 5 5.1 6.5 3.8 6.5 3.8-.3-.4-.5-.9-.6-1.4-.5-2 .2-3.9 1.7-4.2 1.5-.3 3.2 1.1 3.7 3.1.5 1.8-.1 3.5-1.3 4.1 1.8 5.5.1 5.6-2.5 7.6-5.6 4.6-6.5 3.4-7.1 1.6-.3-.8-.9-.4-1.6-.5 0 0-.1-.5-.6-1.8-.4-1.3-1.7-1.1-1.3-1.8.4-.7.6-1.1.3-1.5-.1-.2-1.4.4-1.8-.3-.7-1.2 1.1-1.4.8-3.6 0-1.2-2.2-1.4-2.6-5.7" fill="#8a6859"/><path d="m22.4 24.2c-.4 0-.7-.1-1-.2-.3-.1-.6-.3-.6-.8-.2.1-.2.4-.2.7.1.3.3.5.5.7.2.2.4.3.6.4-.1.2-.1.5 0 .8.1.3.2.5.3.7.2.2.3.4.5.5 0-.5-.1-.9-.1-1.2 0-.1.1-.3.1-.4.1-.1.2-.3.3-.4l.5-.8h-.9" fill="#c94747"/><path d="m31.3 12.4c-.4.2-.7.5-.8.9-.2.4-.2.9-.1 1.3.1.4.2.7.4 1-.2 0-.3.1-.4.2.2 0 .4.1.5.2.1.1.3.2.4.3.1.1.2.2.3.4.1.1.1.3.2.6.2-.1.3-.4.3-.6 0-.3-.1-.6-.3-.8-.2-.2-.4-.4-.7-.4-.1 0-.1 0-.2 0-.1-.8-.1-1.4.1-2 .1-.3.3-.6.6-.8.2-.2.5-.5.8-.7-.3.1-.7.2-1.1.4" fill="#574137"/><path d="m20.9 17.8c-.1-.4-.2-.6-.4-.8-.2-.2-.4-.5-.6-.8-.2-.3-.3-.8-.3-1.2.1-.4.3-.7.6-.8-.1.3-.1.7-.1.9s.1.5.3.8c.1.3.4.6.5.9.2.2.3.7 0 1" fill="#705041"/><path d="m23.7 15c-.3.3-.4.7-.6 1.1-.1.4-.3.8-.6 1.1-.2.4-.6.7-1 .9-.4.2-1 .2-1.4-.1.9-.3 1.2-.8 1.6-1.4.2-.3.4-.6.7-1 .4-.4.8-.7 1.3-.6" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f930.svg b/riot/emojione/svg/1f930.svg new file mode 100644 index 0000000..768b902 --- /dev/null +++ b/riot/emojione/svg/1f930.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m39.9 27.3l-8.5-.6c0 4.8-10.4 7-10.4 10.8 0 2.7 2.5 3.4 2.5 3.4s-7.9 3-7.9 11.4c0 6.7 5.3 9.6 11.6 9.6h10.3c0 0 .7-2-.6-9.1-2.5-13.9 7.6-11.6 3-25.5" fill="#e84d88"/><path d="m20.4 46.7l.6-1.4 1.1-.3c2.7 0 3.5 1.7 4.9 1.7v5.7c0 0-1.1 1-5.4 1-2.1 0-3.5-1.4-4.1-4.4-.7-2.4 2.9-2.3 2.9-2.3" fill="#ffdd67"/><path d="m22.1 45c0 0-1.2.3-1.2 1 0 .4 1.4-.1 2.4 1-1.4-.7-3-.3-3-.3-.6-.6-.1-1.7 1.8-1.7" fill="#eba352"/><g fill="#231f20"><path d="m26 46.2c5.8-1.2 11.6-3.1 11.6-3.1l-.9 7.6.2 1.2c0 0-3.5 1.9-10.8 2.5v-.6c0 0-5.4.8-7.1-1.2 2.7 1.2 7-.2 7-.2v-6.2" opacity=".3"/><path opacity=".3" d="m35.8 31.5l4.1 7.2-1.3 2.5z"/></g><path d="m42.2 27.3c0 0 7.7 11.8 6.7 16.7-1.1 5.6-22.3 8.8-22.3 8.8l-.3-6.4c0 0 13.1-3.1 14.8-5.4-1.1-2.5-5.3-9.6-5.3-9.6l6.4-4.1" fill="#e84d88"/><path d="m28.4 26.3l8.4-14.8.2 15.3c-3.5 1.5-5.5 0-5.5 0-1.1-2-3.1-.5-3.1-.5" fill="#eba352"/><path d="m40.3 9.1c-3.4-6.7-8.9-6.3-8.9-6.3-6.9-3.1-14.3 3.6-15.7 7.4-2.9 7.7 3.8 10.8 4.7 10.1l14.3-4.5c0 0 2.9 3 1.6 9-1.3 5.9 4.7 10.3 4.7 10.3s5.9-12.8-.7-26" fill="#ffb300"/><path d="m17.2 12.4c-.2-2.1 4.1-1.7 6.4.6 5 5.1 6.5 3.8 6.5 3.8-.3-.4-.5-.9-.6-1.4-.5-2 .2-3.9 1.7-4.2 1.5-.3 3.2 1.1 3.7 3.1.5 1.8-.1 3.5-1.3 4.1 1.8 5.5.1 5.6-2.5 7.6-5.6 4.6-6.5 3.4-7.1 1.6-.3-.8-.9-.4-1.6-.5 0 0-.1-.5-.6-1.8-.4-1.3-1.7-1.1-1.3-1.8.4-.7.6-1.1.3-1.5-.1-.2-1.4.4-1.8-.3-.7-1.1 1.1-1.4.8-3.6 0-1.2-2.2-1.4-2.6-5.7" fill="#ffdd67"/><path d="m22.4 24.2c-.4 0-.7-.1-1-.2-.3-.1-.6-.3-.6-.8-.2.1-.2.4-.2.7.1.3.3.5.5.7.2.2.4.3.6.4-.1.2-.1.5 0 .8.1.3.2.5.3.7.2.2.3.4.5.5 0-.5-.1-.9-.1-1.2 0-.1.1-.3.1-.4.1-.1.2-.3.3-.4l.5-.8h-.9" fill="#c94747"/><path d="m31.3 12.4c-.4.2-.7.5-.8.9-.2.4-.2.9-.1 1.3.1.4.2.7.4 1-.2 0-.3.1-.4.2.2 0 .4.1.5.2.1.1.3.2.4.3.1.1.2.2.3.4.1.1.1.3.2.6.2-.1.3-.4.3-.6 0-.3-.1-.6-.3-.8-.2-.2-.4-.4-.7-.4-.1 0-.1 0-.2 0-.1-.8-.1-1.4.1-2 .1-.3.3-.6.6-.8.2-.2.5-.5.8-.7-.3.1-.7.2-1.1.4" fill="#664e27"/><path d="m20.9 17.8c-.1-.4-.2-.6-.4-.8-.2-.2-.4-.5-.6-.8-.2-.3-.3-.8-.3-1.2.1-.4.3-.7.6-.8-.1.3-.1.7-.1.9 0 .3.1.5.3.8.1.3.4.6.5.9.2.2.3.7 0 1" fill="#eba352"/><path d="m23.7 15c-.3.3-.4.7-.6 1.1-.1.4-.3.8-.6 1.1-.2.4-.6.7-1 .9-.4.2-1 .2-1.4-.1.8-.3 1.2-.8 1.6-1.4.2-.3.4-.6.7-1 .4-.4.8-.7 1.3-.6" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f933-1f3fb.svg b/riot/emojione/svg/1f933-1f3fb.svg new file mode 100644 index 0000000..891ddd1 --- /dev/null +++ b/riot/emojione/svg/1f933-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m38.6 32.7v-1.6h-4.4v1.6c0 .9-.7 1.6-1.5 1.6h7.5c-.9 0-1.6-.7-1.6-1.6"/><path d="m30.7 34.3h11.3v5.1h-11.3z"/></g><path d="m25.9 34.3c-1.4 0-2.1.8-2.6 1.3-16 18.2-16 18.2-16 18.2h3.2c2.5 0 3.3-.9 4-1.7 15.7-17.8 15.7-17.8 15.7-17.8h-4.3" fill="#75a843"/><path d="m4.9 43.8l4.8 2.9c.9.5 2 .3 2.6-.6.6-.8.3-2-.6-2.5l-4.8-2.9c-.9-.5-2-.3-2.6.6-.5.8-.2 2 .6 2.5" fill="#e6b796"/><path d="m17.7 48.3c0 .6-.5 1.1-1.1 1.1h-9.2c-.6 0-1.1-.5-1.1-1.1v-20.6c0-.6.5-1.1 1.1-1.1h9.1c.6 0 1.1.5 1.1 1.1v20.6z" fill="#3e4347"/><circle cx="12" cy="31.1" r="1.1" fill="#b2c1c0"/><circle cx="12" cy="31.1" r=".6" fill="#3e4347"/><path d="m12.8 51.5c0 1.3-1 2.3-2.3 2.3h-4.2c-1.3 0-2.3-1-2.3-2.3v-7.7c0-1.3 1-2.3 2.3-2.3h4.3c1.3 0 2.3 1 2.3 2.3v7.7z" fill="#ffe1bd"/><path d="m53.4 24.9v4.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4v-4.2c0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4" fill="#e6b796"/><path d="m60 34.1c0 .9-.8 1.7-1.7 1.7h-3.2c-.9 0-1.7-.8-1.7-1.7v-5.8c0-.9.8-1.7 1.7-1.7h3.2c.9 0 1.7.8 1.7 1.7v5.8" fill="#ffe1bd"/><path d="m16.3 28.7c0 .2-.1.3-.3.3h-.6c-.2 0-.3-.1-.3-.3v-.6c0-.2.1-.3.3-.3h.6c.2 0 .3.1.3.3 0 .1 0 .6 0 .6" fill="#fff"/><path d="m54.3 35.6c-1 2.2-1.9 4.2-2.7 6-.8-1.8-1.7-3.8-2.7-6-.3-.7-1.2-1.3-2.6-1.3h-2.6c0 0 3.5 7.9 4.7 10.5 0 .1.9 2 2.8 2h.2c.6 0 2.4-.2 3.2-2l4.1-9.1h-4.4z" fill="#75a843"/><path d="m46.4 34.3h-5.6c-.5 2.1-2.3 3.7-4.4 3.7-2.1 0-3.9-1.6-4.4-3.7h-5.6v25.7c0 0 3.4 2 10 2 6.5 0 10-2 10-2v-25.7" fill="#83bf4f"/><path d="m22.4 16.6l1.4 2.6h25.1l1.1-2.8c0-10-2.4-14.3-13.5-14.4-11.3-.1-14.1 4.4-14.1 14.6" fill="#594640"/><path d="m49 16.5c-.1.6-.2 1.1-.4 1.4-.3.6-.9.9-.9.9s.2-1.1.1-2.7c-.6-9.3-1.2-4.8-11.4-4.8-10.2 0-10.8-4.5-11.4 4.8-.1 1.6.1 2.7.1 2.7s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.4-1-.3-2.2 0-2.2 2.8 0 1.7.6 3.2 2.8 3.3.8 5.8 8.5 9.7 12 9.7 3.5 0 11.3-3.9 12-9.7 2.1-.2 2.8-1.6 2.8-3.3 0-2.9-1.3-3.1-2.2-2.8" fill="#ffe1bd"/><g fill="#664e27"><circle cx="31.1" cy="19.5" r="2.2"/><circle cx="41.6" cy="19.5" r="2.2"/><path d="m40.4 26.7c0 1.5-2 2.3-4 2.3-2 0-4-.8-4-2.3 0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f933-1f3fc.svg b/riot/emojione/svg/1f933-1f3fc.svg new file mode 100644 index 0000000..8e9e654 --- /dev/null +++ b/riot/emojione/svg/1f933-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m38.6 32.7v-1.6h-4.4v1.6c0 .9-.7 1.6-1.5 1.6h7.5c-.9 0-1.6-.7-1.6-1.6"/><path d="m30.7 34.3h11.3v5.1h-11.3z"/></g><path d="m25.9 34.3c-1.4 0-2.1.8-2.6 1.3-16 18.2-16 18.2-16 18.2h3.2c2.5 0 3.3-.9 4-1.7 15.7-17.8 15.7-17.8 15.7-17.8h-4.3" fill="#75a843"/><path d="m4.9 43.8l4.8 2.9c.9.5 2 .3 2.6-.6.6-.8.3-2-.6-2.5l-4.8-2.9c-.9-.5-2-.3-2.6.6-.5.8-.2 2 .6 2.5" fill="#e0a372"/><path d="m17.7 48.3c0 .6-.5 1.1-1.1 1.1h-9.2c-.6 0-1.1-.5-1.1-1.1v-20.6c0-.6.5-1.1 1.1-1.1h9.1c.6 0 1.1.5 1.1 1.1v20.6z" fill="#3e4347"/><circle cx="12" cy="31.1" r="1.1" fill="#b2c1c0"/><circle cx="12" cy="31.1" r=".6" fill="#3e4347"/><path d="m12.8 51.5c0 1.3-1 2.3-2.3 2.3h-4.2c-1.3 0-2.3-1-2.3-2.3v-7.7c0-1.3 1-2.3 2.3-2.3h4.3c1.3 0 2.3 1 2.3 2.3v7.7z" fill="#fed0ac"/><path d="m53.4 24.9v4.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4v-4.2c0-.8-.6-1.4-1.4-1.4s-1.4.6-1.4 1.4" fill="#e0a372"/><path d="m60 34.1c0 .9-.8 1.7-1.7 1.7h-3.2c-.9 0-1.7-.8-1.7-1.7v-5.8c0-.9.8-1.7 1.7-1.7h3.2c.9 0 1.7.8 1.7 1.7v5.8" fill="#fed0ac"/><path d="m16.3 28.7c0 .2-.1.3-.3.3h-.6c-.2 0-.3-.1-.3-.3v-.6c0-.2.1-.3.3-.3h.6c.2 0 .3.1.3.3 0 .1 0 .6 0 .6" fill="#fff"/><path d="m54.3 35.6c-1 2.2-1.9 4.2-2.7 6-.8-1.8-1.7-3.8-2.7-6-.3-.7-1.2-1.3-2.6-1.3h-2.6c0 0 3.5 7.9 4.7 10.5 0 .1.9 2 2.8 2h.2c.6 0 2.4-.2 3.2-2l4.1-9.1h-4.4z" fill="#75a843"/><path d="m46.4 34.3h-5.6c-.5 2.1-2.3 3.7-4.4 3.7-2.1 0-3.9-1.6-4.4-3.7h-5.6v25.7c0 0 3.5 2 10 2 6.5 0 10-2 10-2v-25.7" fill="#83bf4f"/><path d="m22.4 16.6l1.4 2.6h25.1l1.1-2.8c0-10-2.4-14.3-13.5-14.4-11.3-.1-14.1 4.4-14.1 14.6" fill="#dbb471"/><path d="m49 16.5c-.1.6-.2 1.1-.4 1.4-.3.6-.9.9-.9.9s.2-1.1.1-2.7c-.6-9.3-1.2-4.8-11.4-4.8-10.2 0-10.8-4.5-11.4 4.8-.1 1.6.1 2.7.1 2.7s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.4-1-.3-2.2 0-2.2 2.8 0 1.7.6 3.2 2.8 3.3.8 5.8 8.5 9.7 12 9.7 3.5 0 11.3-3.9 12-9.7 2.1-.2 2.8-1.6 2.8-3.3 0-2.9-1.3-3.1-2.2-2.8" fill="#fed0ac"/><g fill="#664e27"><circle cx="31.1" cy="19.5" r="2.2"/><circle cx="41.6" cy="19.5" r="2.2"/><path d="m40.4 26.7c0 1.5-2 2.3-4 2.3-2 0-4-.8-4-2.3 0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f933-1f3fd.svg b/riot/emojione/svg/1f933-1f3fd.svg new file mode 100644 index 0000000..d40f5f7 --- /dev/null +++ b/riot/emojione/svg/1f933-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m38.6 32.7v-1.6h-4.4v1.6c0 .9-.7 1.6-1.5 1.6h7.5c-.9 0-1.6-.7-1.6-1.6"/><path d="m42 39.3h-11.3v-5h11.3z"/></g><path d="m25.9 34.3c-1.4 0-2.1.8-2.6 1.3-16 18.2-16 18.2-16 18.2h3.2c2.5 0 3.3-.9 4-1.7 15.7-17.8 15.7-17.8 15.7-17.8h-4.3" fill="#75a843"/><path d="m4.9 43.8l4.8 2.9c.9.5 2 .3 2.6-.6.6-.8.3-2-.6-2.5l-4.8-2.9c-.9-.5-2-.3-2.6.6-.5.8-.2 2 .6 2.5" fill="#b58360"/><path d="m17.7 48.3c0 .6-.5 1.1-1.1 1.1h-9.2c-.6 0-1.1-.5-1.1-1.1v-20.6c0-.6.5-1.1 1.1-1.1h9.1c.6 0 1.1.5 1.1 1.1v20.6z" fill="#3e4347"/><circle cx="12" cy="31.1" r="1.1" fill="#b2c1c0"/><circle cx="12" cy="31.1" r=".6" fill="#3e4347"/><path d="m12.8 51.5c0 1.3-1 2.3-2.3 2.3h-4.2c-1.3 0-2.3-1-2.3-2.3v-7.7c0-1.3 1-2.3 2.3-2.3h4.3c1.3 0 2.3 1 2.3 2.3v7.7z" fill="#d6a57c"/><path d="m53.4 24.9v4.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4v-4.2c0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4" fill="#b58360"/><path d="m60 34.1c0 .9-.8 1.7-1.7 1.7h-3.2c-.9 0-1.7-.8-1.7-1.7v-5.8c0-.9.8-1.7 1.7-1.7h3.2c.9 0 1.7.8 1.7 1.7v5.8" fill="#d6a57c"/><path d="m16.3 28.7c0 .2-.1.3-.3.3h-.6c-.2 0-.3-.1-.3-.3v-.6c0-.2.1-.3.3-.3h.6c.2 0 .3.1.3.3v.6" fill="#fff"/><path d="m54.3 35.6c-1 2.2-1.9 4.2-2.7 6-.8-1.8-1.7-3.8-2.7-6-.3-.7-1.2-1.3-2.6-1.3h-2.6c0 0 3.5 7.9 4.7 10.5 0 .1.9 2 2.8 2h.2c.6 0 2.4-.2 3.2-2l4.1-9.1h-4.4z" fill="#75a843"/><path d="m46.4 34.3h-5.6c-.5 2.1-2.3 3.7-4.4 3.7-2.1 0-3.9-1.6-4.4-3.7h-5.6v25.7c0 0 3.5 2 10 2 6.5 0 10-2 10-2v-25.7" fill="#83bf4f"/><path d="m22.4 16.6l1.4 2.6h25.1l1.1-2.8c0-10-2.4-14.3-13.5-14.4-11.3-.1-14.1 4.4-14.1 14.6" fill="#594640"/><path d="m49 16.5c-.1.6-.2 1.1-.4 1.4-.3.6-.9.9-.9.9s.2-1.1.1-2.7c-.6-9.3-1.2-4.8-11.4-4.8-10.2 0-10.8-4.5-11.4 4.8-.1 1.6.1 2.7.1 2.7s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.4-1-.3-2.2 0-2.2 2.8 0 1.7.6 3.2 2.8 3.3.8 5.8 8.5 9.7 12 9.7 3.5 0 11.3-3.9 12-9.7 2.1-.2 2.8-1.6 2.8-3.3 0-2.9-1.3-3.1-2.2-2.8" fill="#d6a57c"/><g fill="#664e27"><circle cx="31.1" cy="19.5" r="2.2"/><circle cx="41.6" cy="19.5" r="2.2"/><path d="m40.4 26.7c0 1.5-2 2.3-4 2.3s-4-.8-4-2.3c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f933-1f3fe.svg b/riot/emojione/svg/1f933-1f3fe.svg new file mode 100644 index 0000000..d19b5ea --- /dev/null +++ b/riot/emojione/svg/1f933-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m38.6 32.7v-1.6h-4.4v1.6c0 .9-.7 1.6-1.5 1.6h7.5c-.9 0-1.6-.7-1.6-1.6"/><path d="m30.7 34.3h11.3v5.1h-11.3z"/></g><path d="m25.9 34.3c-1.4 0-2.1.8-2.6 1.3-16 18.2-16 18.2-16 18.2h3.2c2.5 0 3.3-.9 4-1.7 15.7-17.8 15.7-17.8 15.7-17.8h-4.3" fill="#75a843"/><path d="m4.9 43.8l4.8 2.9c.9.5 2 .3 2.6-.6.6-.8.3-2-.6-2.5l-4.8-2.9c-.9-.5-2-.3-2.6.6-.5.8-.2 2 .6 2.5" fill="#935e3e"/><path d="m17.7 48.3c0 .6-.5 1.1-1.1 1.1h-9.2c-.6 0-1.1-.5-1.1-1.1v-20.6c0-.6.5-1.1 1.1-1.1h9.1c.6 0 1.1.5 1.1 1.1v20.6z" fill="#3e4347"/><circle cx="12" cy="31.1" r="1.1" fill="#b2c1c0"/><circle cx="12" cy="31.1" r=".6" fill="#3e4347"/><path d="m12.8 51.5c0 1.3-1 2.3-2.3 2.3h-4.2c-1.3 0-2.3-1-2.3-2.3v-7.7c0-1.3 1-2.3 2.3-2.3h4.3c1.3 0 2.3 1 2.3 2.3v7.7z" fill="#b47d56"/><path d="m53.4 24.9v4.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4v-4.2c0-.8-.6-1.4-1.4-1.4s-1.4.6-1.4 1.4" fill="#935e3e"/><path d="m60 34.1c0 .9-.8 1.7-1.7 1.7h-3.2c-.9 0-1.7-.8-1.7-1.7v-5.8c0-.9.8-1.7 1.7-1.7h3.2c.9 0 1.7.8 1.7 1.7v5.8" fill="#b47d56"/><path d="m16.3 28.7c0 .2-.1.3-.3.3h-.6c-.2 0-.3-.1-.3-.3v-.6c0-.2.1-.3.3-.3h.6c.2 0 .3.1.3.3 0 .1 0 .6 0 .6" fill="#fff"/><path d="m54.3 35.6c-1 2.2-1.9 4.2-2.7 6-.8-1.8-1.7-3.8-2.7-6-.3-.7-1.2-1.3-2.6-1.3h-2.6c0 0 3.5 7.9 4.7 10.5 0 .1.9 2 2.8 2h.2c.6 0 2.4-.2 3.2-2l4.1-9.1h-4.4z" fill="#75a843"/><path d="m46.4 34.3h-5.6c-.5 2.1-2.3 3.7-4.4 3.7-2.1 0-3.9-1.6-4.4-3.7h-5.6v25.7c0 0 3.5 2 10 2 6.5 0 10-2 10-2v-25.7" fill="#83bf4f"/><path d="m22.4 16.6l1.4 2.6h25.1l1.1-2.8c0-10-2.4-14.3-13.5-14.4-11.3-.1-14.1 4.4-14.1 14.6" fill="#231f20"/><path d="m49 16.5c-.1.6-.2 1.1-.4 1.4-.3.6-.9.9-.9.9s.2-1.1.1-2.7c-.6-9.3-1.2-4.8-11.4-4.8-10.2 0-10.8-4.5-11.4 4.8-.1 1.6.1 2.7.1 2.7s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.4-1-.3-2.2 0-2.2 2.8 0 1.7.6 3.2 2.8 3.3.8 5.8 8.5 9.7 12 9.7 3.5 0 11.3-3.9 12-9.7 2.1-.2 2.8-1.6 2.8-3.3 0-2.9-1.3-3.1-2.2-2.8" fill="#b47d56"/><g fill="#664e27"><circle cx="31.1" cy="19.5" r="2.2"/><circle cx="41.6" cy="19.5" r="2.2"/><path d="m40.4 26.7c0 1.5-2 2.3-4 2.3-2 0-4-.8-4-2.3 0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f933-1f3ff.svg b/riot/emojione/svg/1f933-1f3ff.svg new file mode 100644 index 0000000..3be2743 --- /dev/null +++ b/riot/emojione/svg/1f933-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m38.6 32.7v-1.6h-4.4v1.6c0 .9-.7 1.6-1.5 1.6h7.5c-.9 0-1.6-.7-1.6-1.6"/><path d="m30.7 34.3h11.3v5.1h-11.3z"/></g><path d="m25.9 34.3c-1.4 0-2.1.8-2.6 1.3-16 18.2-16 18.2-16 18.2h3.2c2.5 0 3.3-.9 4-1.7 15.7-17.8 15.7-17.8 15.7-17.8h-4.3" fill="#75a843"/><path d="m4.9 43.8l4.8 2.9c.9.5 2 .3 2.6-.6.6-.8.3-2-.6-2.5l-4.8-2.9c-.9-.5-2-.3-2.6.6-.5.8-.2 2 .6 2.5" fill="#705041"/><path d="m17.7 48.3c0 .6-.5 1.1-1.1 1.1h-9.2c-.6 0-1.1-.5-1.1-1.1v-20.6c0-.6.5-1.1 1.1-1.1h9.1c.6 0 1.1.5 1.1 1.1v20.6z" fill="#3e4347"/><circle cx="12" cy="31.1" r="1.1" fill="#b2c1c0"/><circle cx="12" cy="31.1" r=".6" fill="#3e4347"/><path d="m12.8 51.5c0 1.3-1 2.3-2.3 2.3h-4.2c-1.3 0-2.3-1-2.3-2.3v-7.7c0-1.3 1-2.3 2.3-2.3h4.3c1.3 0 2.3 1 2.3 2.3l-.1 7.7" fill="#8a6859"/><path d="m53.4 24.9v4.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4v-4.2c0-.8-.6-1.4-1.4-1.4-.8 0-1.4.6-1.4 1.4" fill="#705041"/><path d="m60 34.1c0 .9-.8 1.7-1.7 1.7h-3.2c-.9 0-1.7-.8-1.7-1.7v-5.8c0-.9.8-1.7 1.7-1.7h3.2c.9 0 1.7.8 1.7 1.7v5.8" fill="#8a6859"/><path d="m16.3 28.7c0 .2-.1.3-.3.3h-.6c-.2 0-.3-.1-.3-.3v-.6c0-.2.1-.3.3-.3h.6c.2 0 .3.1.3.3v.6" fill="#fff"/><path d="m54.3 35.6c-1 2.2-1.9 4.2-2.7 6-.8-1.8-1.7-3.8-2.7-6-.3-.7-1.2-1.3-2.6-1.3h-2.6c0 0 3.5 7.9 4.7 10.5 0 .1.9 2 2.8 2h.2c.6 0 2.4-.2 3.2-2l4.1-9.1h-4.4z" fill="#75a843"/><path d="m46.4 34.3h-5.6c-.5 2.1-2.3 3.7-4.4 3.7-2.1 0-3.9-1.6-4.4-3.7h-5.6v25.7c0 0 3.4 2 10 2 6.5 0 10-2 10-2v-25.7" fill="#83bf4f"/><path d="m22.4 16.6l1.4 2.6h25.1l1.1-2.8c0-10-2.4-14.3-13.5-14.4-11.3-.1-14.1 4.4-14.1 14.6" fill="#231f20"/><path d="m49 16.5c-.1.6-.2 1.1-.4 1.4-.3.6-.9.9-.9.9s.2-1.1.1-2.7c-.6-9.3-1.2-4.8-11.4-4.8-10.2 0-10.8-4.5-11.4 4.8-.1 1.6.1 2.7.1 2.7s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.4-1-.3-2.2 0-2.2 2.8 0 1.7.6 3.2 2.8 3.3.8 5.8 8.5 9.7 12 9.7s11.3-3.9 12-9.7c2.1-.2 2.8-1.6 2.8-3.3 0-2.9-1.3-3.1-2.2-2.8" fill="#8a6859"/><g fill="#574137"><circle cx="31.1" cy="19.5" r="2.2"/><circle cx="41.6" cy="19.5" r="2.2"/><path d="m40.4 26.7c0 1.5-2 2.3-4 2.3-2 0-4-.8-4-2.3 0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f933.svg b/riot/emojione/svg/1f933.svg new file mode 100644 index 0000000..009221c --- /dev/null +++ b/riot/emojione/svg/1f933.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m38.6 32.7v-1.6h-4.4v1.6c0 .9-.7 1.6-1.5 1.6h7.5c-.9 0-1.6-.7-1.6-1.6"/><path d="m30.7 34.3h11.3v5.1h-11.3z"/></g><path d="m25.9 34.3c-1.4 0-2.1.8-2.6 1.3-16 18.2-16 18.2-16 18.2h3.2c2.5 0 3.3-.9 4-1.7 15.7-17.8 15.7-17.8 15.7-17.8h-4.3" fill="#75a843"/><path d="m4.9 43.8l4.8 2.9c.9.5 2 .3 2.6-.6.6-.8.3-2-.6-2.5l-4.8-2.9c-.9-.5-2-.3-2.6.6-.5.8-.2 2 .6 2.5" fill="#eba352"/><path d="m17.7 48.3c0 .6-.5 1.1-1.1 1.1h-9.2c-.6 0-1.1-.5-1.1-1.1v-20.6c0-.6.5-1.1 1.1-1.1h9.1c.6 0 1.1.5 1.1 1.1v20.6z" fill="#3e4347"/><circle cx="12" cy="31.1" r="1.1" fill="#b2c1c0"/><circle cx="12" cy="31.1" r=".6" fill="#3e4347"/><path d="m12.8 51.5c0 1.3-1 2.3-2.3 2.3h-4.2c-1.3 0-2.3-1-2.3-2.3v-7.7c0-1.3 1-2.3 2.3-2.3h4.3c1.3 0 2.3 1 2.3 2.3v7.7z" fill="#ffdd67"/><path d="m53.4 24.9v4.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4v-4.2c0-.8-.6-1.4-1.4-1.4s-1.4.6-1.4 1.4" fill="#eba352"/><path d="m60 34.1c0 .9-.8 1.7-1.7 1.7h-3.2c-.9 0-1.7-.8-1.7-1.7v-5.8c0-.9.8-1.7 1.7-1.7h3.2c.9 0 1.7.8 1.7 1.7v5.8" fill="#ffdd67"/><path d="m16.3 28.7c0 .2-.1.3-.3.3h-.6c-.2 0-.3-.1-.3-.3v-.6c0-.2.1-.3.3-.3h.6c.2 0 .3.1.3.3 0 .1 0 .6 0 .6" fill="#fff"/><path d="m54.3 35.6c-1 2.2-1.9 4.2-2.7 6-.8-1.8-1.7-3.8-2.7-6-.3-.7-1.2-1.3-2.6-1.3h-2.6c0 0 3.5 7.9 4.7 10.5 0 .1.9 2 2.8 2h.2c.6 0 2.4-.2 3.2-2l4.1-9.1h-4.4z" fill="#75a843"/><path d="m46.4 34.3h-5.6c-.5 2.1-2.3 3.7-4.4 3.7-2.1 0-3.9-1.6-4.4-3.7h-5.6v25.7c0 0 3.5 2 10 2 6.5 0 10-2 10-2v-25.7" fill="#83bf4f"/><path d="M22.4,16.7l1.4,2.6h25.1l1.1-2.8C50,6.4,47.6,2.1,36.5,2C25.2,1.9,22.4,6.4,22.4,16.7z" fill="#ffb300"/><path d="m49 16.5c-.1.6-.2 1.1-.4 1.4-.3.6-.9.9-.9.9s.2-1.1.1-2.7c-.6-9.3-1.2-4.8-11.4-4.8-10.2 0-10.8-4.5-11.4 4.8-.1 1.6.1 2.7.1 2.7s-.6-.3-.9-.9c-.2-.3-.3-.9-.4-1.4-1-.3-2.2 0-2.2 2.8 0 1.7.6 3.2 2.8 3.3.8 5.8 8.5 9.7 12 9.7 3.5 0 11.3-3.9 12-9.7 2.1-.2 2.8-1.6 2.8-3.3 0-2.9-1.3-3.1-2.2-2.8" fill="#ffdd67"/><g fill="#937237"><circle cx="31.1" cy="19.5" r="2.2"/><circle cx="41.6" cy="19.5" r="2.2"/><path d="m40.4 26.7c0 1.5-2 2.3-4 2.3-2 0-4-.8-4-2.3 0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f934-1f3fb.svg b/riot/emojione/svg/1f934-1f3fb.svg new file mode 100644 index 0000000..9688cea --- /dev/null +++ b/riot/emojione/svg/1f934-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8.3 38.3h47.3c0-25.5-3.6-31-23.7-31-19.9.1-23.6 5.5-23.6 31" fill="#594640"/><path d="m53.7 32.7c-.2 1-.4 1.9-.6 2.4-.5.9-1.5 1.5-1.5 1.5s.3-1.9.2-4.6c-1.1-15.8-2-11.4-19.7-11.4s-18.6-4.3-19.7 11.4c-.1 2.7.2 4.6.2 4.6s-1-.5-1.6-1.5c-.3-.5-.5-1.4-.6-2.4-1.7-.4-3.8-.1-3.8 4.7 0 2.9 1.1 5.4 4.8 5.6 1.2 9.3 6.6 14.1 15.7 18.1 2.5 1.1 7.6 1.1 10 0 9.1-4.1 14.5-8.8 15.7-18.1 3.7-.3 4.8-2.7 4.8-5.6-.1-4.7-2.3-5.1-3.9-4.7" fill="#ffe1bd"/><path d="m40.2 50.9c0 3.4-4.1 5.1-8.2 5.1-4.1 0-8.2-1.7-8.2-5.1 0 0 0-.9.8-.9 3.7 0 11.1 0 14.7 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m21.1 31.5c-4.5 0-6.4 1.7-6.4 3.3 0 1.6 0 4 6 4 5.8 0 6.7-.7 6.7-3.2.1-1.6-1.8-4.1-6.3-4.1" fill="#f5f5f5"/><path d="m25.6 34.3c0 2.3-1.8 4.1-4.1 4.1-2.3 0-4.1-1.8-4.1-4.1 0-2.3 1.8-4.1 4.1-4.1 2.3 0 4.1 1.9 4.1 4.1" fill="#664e27"/><path d="m22.9 34.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.8.1 1.4.7 1.4 1.4" fill="#231f20"/><path d="m14.7 34.8c0-6.4 12.8-6.4 12.8.9-1.9-5.5-11-5.5-12.8-.9" fill="#664e27"/><path d="m42.9 31.5c4.6 0 6.4 1.7 6.4 3.3 0 1.6 0 4-6 4-5.8 0-6.7-.7-6.7-3.2 0-1.6 1.8-4.1 6.3-4.1" fill="#f5f5f5"/><path d="m38.4 34.3c0 2.3 1.8 4.1 4.1 4.1 2.3 0 4.1-1.8 4.1-4.1 0-2.3-1.8-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.1" fill="#664e27"/><path d="m41.1 34.3c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8.1-1.4.7-1.4 1.4" fill="#231f20"/><path d="m49.3 34.8c0-6.4-12.8-6.4-12.8.9 1.9-5.5 11-5.5 12.8-.9" fill="#664e27"/><path d="m32 47c-3.3 0-5-3-3.3-3 1.7 0 5 0 6.7 0 1.6 0-.1 3-3.4 3" fill="#e6b796"/><g fill="#d9a000"><path d="m22 8l-4-4-4 4h2v4h6z"/><path d="m50 8l-4-4-4 4v4h6v-4z"/></g><path d="m54 16h-44c0-13.3 44-13.3 44 0" fill="#9450e0"/><path d="m48 16h-36c0-10.7 36-10.7 36 0" fill="#7e44bf"/><path fill="#d9a000" d="m8 20h48v6h-48z"/><path fill="#ffce31" d="m50 10l2 2v2h-16v-2l2-2-6-8-6 8 2 2v2h-16v-2l2-2-8-6.1 2 20.1h48l2-20.1z"/><path fill="#66caf2" d="m32 22v-3.1h2z"/><g fill="#428bc1"><path d="m32 22l-2-3.1h2z"/><path d="m34 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m32 16v2.9h-2z"/><path d="m14.8 22v-3.1h1.9z"/></g><g fill="#428bc1"><path d="m14.8 22l-2.1-3.1h2.1z"/><path d="m16.7 18.9h-1.9v-2.9z"/></g><g fill="#66caf2"><path d="m14.8 16v2.9h-2.1z"/><path d="m23.4 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m23.4 22l-2-3.1h2z"/><path d="m25.4 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m23.4 16v2.9h-2z"/><path d="m40.7 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m40.7 22l-2-3.1h2z"/><path d="m42.7 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m40.7 16v2.9h-2z"/><path d="m49.3 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m49.3 22l-2-3.1h2z"/><path d="m51.3 18.9h-2v-2.9z"/></g><path fill="#66caf2" d="m49.3 16v2.9h-2z"/><path fill="#428bc1" d="m8 22l-2-3.1h2z"/><g fill="#66caf2"><path d="m8 16v2.9h-2z"/><path d="m56 22v-3.1h2z"/></g><path fill="#428bc1" d="m58 18.9h-2v-2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f934-1f3fc.svg b/riot/emojione/svg/1f934-1f3fc.svg new file mode 100644 index 0000000..cc27b53 --- /dev/null +++ b/riot/emojione/svg/1f934-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8.3 38.3h47.3c0-25.5-3.6-31-23.7-31-19.9.1-23.6 5.5-23.6 31" fill="#dbb471"/><path d="m53.7 32.7c-.2 1-.4 1.9-.6 2.4-.5.9-1.5 1.5-1.5 1.5s.3-1.9.2-4.6c-1.1-15.8-2-11.4-19.7-11.4s-18.6-4.3-19.7 11.4c-.1 2.7.2 4.6.2 4.6s-1-.5-1.6-1.5c-.3-.5-.5-1.4-.6-2.4-1.7-.4-3.8-.1-3.8 4.7 0 2.9 1.1 5.4 4.8 5.6 1.2 9.3 6.6 14.1 15.7 18.1 2.5 1.1 7.6 1.1 10 0 9.1-4.1 14.5-8.8 15.7-18.1 3.7-.3 4.8-2.7 4.8-5.6-.1-4.7-2.3-5.1-3.9-4.7" fill="#fed0ac"/><path d="m40.2 50.9c0 3.4-4.1 5.1-8.2 5.1s-8.2-1.7-8.2-5.1c0 0 0-.9.8-.9 3.7 0 11.1 0 14.7 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m21.1 31.5c-4.5 0-6.4 1.7-6.4 3.3 0 1.6 0 4 6 4 5.8 0 6.7-.7 6.7-3.2.1-1.6-1.8-4.1-6.3-4.1" fill="#f5f5f5"/><path d="m25.6 34.3c0 2.3-1.8 4.1-4.1 4.1-2.3 0-4.1-1.8-4.1-4.1 0-2.3 1.8-4.1 4.1-4.1 2.3 0 4.1 1.9 4.1 4.1" fill="#664e27"/><path d="m22.9 34.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.8.1 1.4.7 1.4 1.4" fill="#231f20"/><path d="m14.7 34.8c0-6.4 12.8-6.4 12.8.9-1.9-5.5-11-5.5-12.8-.9" fill="#664e27"/><path d="m42.9 31.5c4.6 0 6.4 1.7 6.4 3.3 0 1.6 0 4-6 4-5.8 0-6.7-.7-6.7-3.2 0-1.6 1.8-4.1 6.3-4.1" fill="#f5f5f5"/><path d="m38.4 34.3c0 2.3 1.8 4.1 4.1 4.1 2.3 0 4.1-1.8 4.1-4.1 0-2.3-1.8-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.1" fill="#664e27"/><path d="m41.1 34.3c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8.1-1.4.7-1.4 1.4" fill="#231f20"/><path d="m49.3 34.8c0-6.4-12.8-6.4-12.8.9 1.9-5.5 11-5.5 12.8-.9" fill="#664e27"/><path d="m32 47c-3.3 0-5-3-3.3-3 1.7 0 5 0 6.7 0 1.6 0-.1 3-3.4 3" fill="#e0a372"/><g fill="#d9a000"><path d="m22 8l-4-4-4 4h2v4h6z"/><path d="m50 8l-4-4-4 4v4h6v-4z"/></g><path d="m54 16h-44c0-13.3 44-13.3 44 0" fill="#9450e0"/><path d="m48 16h-36c0-10.7 36-10.7 36 0" fill="#7e44bf"/><path fill="#d9a000" d="m8 20h48v6h-48z"/><path fill="#ffce31" d="m50 10l2 2v2h-16v-2l2-2-6-8-6 8 2 2v2h-16v-2l2-2-8-6.1 2 20.1h48l2-20.1z"/><path fill="#66caf2" d="m32 22v-3.1h2z"/><g fill="#428bc1"><path d="m32 22l-2-3.1h2z"/><path d="m34 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m32 16v2.9h-2z"/><path d="m14.8 22v-3.1h1.9z"/></g><g fill="#428bc1"><path d="m14.8 22l-2.1-3.1h2.1z"/><path d="m16.7 18.9h-1.9v-2.9z"/></g><g fill="#66caf2"><path d="m14.8 16v2.9h-2.1z"/><path d="m23.4 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m23.4 22l-2-3.1h2z"/><path d="m25.4 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m23.4 16v2.9h-2z"/><path d="m40.7 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m40.7 22l-2-3.1h2z"/><path d="m42.7 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m40.7 16v2.9h-2z"/><path d="m49.3 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m49.3 22l-2-3.1h2z"/><path d="m51.3 18.9h-2v-2.9z"/></g><path fill="#66caf2" d="m49.3 16v2.9h-2z"/><path fill="#428bc1" d="m8 22l-2-3.1h2z"/><g fill="#66caf2"><path d="m8 16v2.9h-2z"/><path d="m56 22v-3.1h2z"/></g><path fill="#428bc1" d="m58 18.9h-2v-2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f934-1f3fd.svg b/riot/emojione/svg/1f934-1f3fd.svg new file mode 100644 index 0000000..44a0524 --- /dev/null +++ b/riot/emojione/svg/1f934-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8.3 38.3h47.3c0-25.5-3.6-31-23.7-31-19.9.1-23.6 5.5-23.6 31" fill="#594640"/><path d="m53.7 32.7c-.2 1-.4 1.9-.6 2.4-.5.9-1.5 1.5-1.5 1.5s.3-1.9.2-4.6c-1.1-15.8-2-11.4-19.7-11.4s-18.6-4.3-19.7 11.4c-.1 2.7.2 4.6.2 4.6s-1-.5-1.6-1.5c-.3-.5-.5-1.4-.6-2.4-1.7-.4-3.8-.1-3.8 4.7 0 2.9 1.1 5.4 4.8 5.6 1.2 9.3 6.6 14.1 15.7 18.1 2.5 1.1 7.6 1.1 10 0 9.1-4.1 14.5-8.8 15.7-18.1 3.7-.3 4.8-2.7 4.8-5.6-.1-4.7-2.3-5.1-3.9-4.7" fill="#d6a57c"/><path d="m40.2 50.9c0 3.4-4.1 5.1-8.2 5.1-4.1 0-8.2-1.7-8.2-5.1 0 0 0-.9.8-.9 3.7 0 11.1 0 14.7 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m21.1 31.5c-4.6 0-6.4 1.7-6.4 3.3 0 1.6 0 4 6 4 5.8 0 6.7-.7 6.7-3.2.1-1.6-1.8-4.1-6.3-4.1" fill="#f5f5f5"/><path d="m25.6 34.3c0 2.3-1.8 4.1-4.1 4.1-2.3 0-4.1-1.8-4.1-4.1 0-2.3 1.8-4.1 4.1-4.1 2.3 0 4.1 1.9 4.1 4.1" fill="#664e27"/><path d="m22.9 34.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.8.1 1.4.7 1.4 1.4" fill="#231f20"/><path d="m14.7 34.8c0-6.4 12.8-6.4 12.8.9-1.9-5.5-11-5.5-12.8-.9" fill="#664e27"/><path d="m42.9 31.5c4.6 0 6.4 1.7 6.4 3.3 0 1.6 0 4-6 4-5.8 0-6.7-.7-6.7-3.2 0-1.6 1.8-4.1 6.3-4.1" fill="#f5f5f5"/><path d="m38.4 34.3c0 2.3 1.8 4.1 4.1 4.1 2.3 0 4.1-1.8 4.1-4.1 0-2.3-1.8-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.1" fill="#664e27"/><path d="m41.1 34.3c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8.1-1.4.7-1.4 1.4" fill="#231f20"/><path d="m49.3 34.8c0-6.4-12.8-6.4-12.8.9 1.9-5.5 11-5.5 12.8-.9" fill="#664e27"/><path d="m32 47c-3.3 0-5-3-3.3-3s5 0 6.7 0c1.6 0-.1 3-3.4 3" fill="#b58360"/><g fill="#d9a000"><path d="m22 8l-4-4-4 4h2v4h6z"/><path d="m50 8l-4-4-4 4v4h6v-4z"/></g><path d="m54 16h-44c0-13.3 44-13.3 44 0" fill="#9450e0"/><path d="m48 16h-36c0-10.7 36-10.7 36 0" fill="#7e44bf"/><path fill="#d9a000" d="m8 20h48v6h-48z"/><path fill="#ffce31" d="m50 10l2 2v2h-16v-2l2-2-6-8-6 8 2 2v2h-16v-2l2-2-8-6.1 2 20.1h48l2-20.1z"/><path fill="#66caf2" d="m32 22v-3.1h2z"/><g fill="#428bc1"><path d="m32 22l-2-3.1h2z"/><path d="m34 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m32 16v2.9h-2z"/><path d="m14.8 22v-3.1h1.9z"/></g><g fill="#428bc1"><path d="m14.8 22l-2.1-3.1h2.1z"/><path d="m16.7 18.9h-1.9v-2.9z"/></g><g fill="#66caf2"><path d="m14.8 16v2.9h-2.1z"/><path d="m23.4 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m23.4 22l-2-3.1h2z"/><path d="m25.4 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m23.4 16v2.9h-2z"/><path d="m40.7 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m40.7 22l-2-3.1h2z"/><path d="m42.7 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m40.7 16v2.9h-2z"/><path d="m49.3 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m49.3 22l-2-3.1h2z"/><path d="m51.3 18.9h-2v-2.9z"/></g><path fill="#66caf2" d="m49.3 16v2.9h-2z"/><path fill="#428bc1" d="m8 22l-2-3.1h2z"/><g fill="#66caf2"><path d="m8 16v2.9h-2z"/><path d="m56 22v-3.1h2z"/></g><path fill="#428bc1" d="m58 18.9h-2v-2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f934-1f3fe.svg b/riot/emojione/svg/1f934-1f3fe.svg new file mode 100644 index 0000000..71c66cb --- /dev/null +++ b/riot/emojione/svg/1f934-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8.3 38.3h47.3c0-25.5-3.6-31-23.7-31-19.9.1-23.6 5.5-23.6 31" fill="#231f20"/><path d="m53.7 32.7c-.2 1-.4 1.9-.6 2.4-.5.9-1.5 1.5-1.5 1.5s.3-1.9.2-4.6c-1.1-15.8-2-11.4-19.7-11.4s-18.6-4.3-19.7 11.4c-.1 2.7.2 4.6.2 4.6s-1-.5-1.6-1.5c-.3-.5-.5-1.4-.6-2.4-1.7-.4-3.8-.1-3.8 4.7 0 2.9 1.1 5.4 4.8 5.6 1.2 9.3 6.6 14.1 15.7 18.1 2.5 1.1 7.6 1.1 10 0 9.1-4.1 14.5-8.8 15.7-18.1 3.7-.3 4.8-2.7 4.8-5.6-.1-4.7-2.3-5.1-3.9-4.7" fill="#b47d56"/><path d="m40.2 50.9c0 3.4-4.1 5.1-8.2 5.1s-8.2-1.7-8.2-5.1c0 0 0-.9.8-.9 3.7 0 11.1 0 14.7 0 .9 0 .9.9.9.9" fill="#664e27"/><path d="m21.1 31.5c-4.5 0-6.4 1.7-6.4 3.3 0 1.6 0 4 6 4 5.8 0 6.7-.7 6.7-3.2.1-1.6-1.8-4.1-6.3-4.1" fill="#f5f5f5"/><path d="m25.6 34.3c0 2.3-1.8 4.1-4.1 4.1-2.3 0-4.1-1.8-4.1-4.1 0-2.3 1.8-4.1 4.1-4.1 2.3 0 4.1 1.9 4.1 4.1" fill="#664e27"/><path d="m22.9 34.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.8.1 1.4.7 1.4 1.4" fill="#231f20"/><path d="m14.7 34.8c0-6.4 12.8-6.4 12.8.9-1.9-5.5-11-5.5-12.8-.9" fill="#664e27"/><path d="m42.9 31.5c4.6 0 6.4 1.7 6.4 3.3 0 1.6 0 4-6 4-5.8 0-6.7-.7-6.7-3.2 0-1.6 1.8-4.1 6.3-4.1" fill="#f5f5f5"/><path d="m38.4 34.3c0 2.3 1.8 4.1 4.1 4.1 2.3 0 4.1-1.8 4.1-4.1 0-2.3-1.8-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.1" fill="#664e27"/><path d="m41.1 34.3c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8.1-1.4.7-1.4 1.4" fill="#231f20"/><path d="m49.3 34.8c0-6.4-12.8-6.4-12.8.9 1.9-5.5 11-5.5 12.8-.9" fill="#664e27"/><path d="m32 47c-3.3 0-5-3-3.3-3 1.7 0 5 0 6.7 0 1.6 0-.1 3-3.4 3" fill="#935e3e"/><g fill="#d9a000"><path d="m22 8l-4-4-4 4h2v4h6z"/><path d="m50 8l-4-4-4 4v4h6v-4z"/></g><path d="m54 16h-44c0-13.3 44-13.3 44 0" fill="#9450e0"/><path d="m48 16h-36c0-10.7 36-10.7 36 0" fill="#7e44bf"/><path fill="#d9a000" d="m8 20h48v6h-48z"/><path fill="#ffce31" d="m50 10l2 2v2h-16v-2l2-2-6-8-6 8 2 2v2h-16v-2l2-2-8-6.1 2 20.1h48l2-20.1z"/><path fill="#66caf2" d="m32 22v-3.1h2z"/><g fill="#428bc1"><path d="m32 22l-2-3.1h2z"/><path d="m34 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m32 16v2.9h-2z"/><path d="m14.8 22v-3.1h1.9z"/></g><g fill="#428bc1"><path d="m14.8 22l-2.1-3.1h2.1z"/><path d="m16.7 18.9h-1.9v-2.9z"/></g><g fill="#66caf2"><path d="m14.8 16v2.9h-2.1z"/><path d="m23.4 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m23.4 22l-2-3.1h2z"/><path d="m25.4 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m23.4 16v2.9h-2z"/><path d="m40.7 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m40.7 22l-2-3.1h2z"/><path d="m42.7 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m40.7 16v2.9h-2z"/><path d="m49.3 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m49.3 22l-2-3.1h2z"/><path d="m51.3 18.9h-2v-2.9z"/></g><path fill="#66caf2" d="m49.3 16v2.9h-2z"/><path fill="#428bc1" d="m8 22l-2-3.1h2z"/><g fill="#66caf2"><path d="m8 16v2.9h-2z"/><path d="m56 22v-3.1h2z"/></g><path fill="#428bc1" d="m58 18.9h-2v-2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f934-1f3ff.svg b/riot/emojione/svg/1f934-1f3ff.svg new file mode 100644 index 0000000..d45a0f0 --- /dev/null +++ b/riot/emojione/svg/1f934-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8.3 38.3h47.3c0-25.5-3.6-31-23.7-31-19.9.1-23.6 5.5-23.6 31" fill="#231f20"/><path d="m53.7 32.7c-.2 1-.4 1.9-.6 2.4-.5.9-1.5 1.5-1.5 1.5s.3-1.9.2-4.6c-1.1-15.8-2-11.4-19.7-11.4-17.6 0-18.6-4.3-19.7 11.4-.1 2.7.2 4.6.2 4.6s-1-.5-1.6-1.5c-.3-.5-.5-1.4-.6-2.4-1.7-.4-3.8-.1-3.8 4.7 0 2.9 1.1 5.4 4.8 5.6 1.2 9.3 6.6 14.1 15.7 18.1 2.5 1.1 7.6 1.1 10 0 9.1-4.1 14.5-8.8 15.7-18.1 3.7-.3 4.8-2.7 4.8-5.6-.1-4.7-2.3-5.1-3.9-4.7" fill="#8a6859"/><path d="m40.2 50.9c0 3.4-4.1 5.1-8.2 5.1-4.1 0-8.2-1.7-8.2-5.1 0 0 0-.9.8-.9 3.7 0 11.1 0 14.7 0 .9 0 .9.9.9.9" fill="#574137"/><path d="m21.1 31.5c-4.5 0-6.4 1.7-6.4 3.3 0 1.6 0 4 6 4 5.8 0 6.7-.7 6.7-3.2.1-1.6-1.8-4.1-6.3-4.1" fill="#f5f5f5"/><path d="m25.6 34.3c0 2.3-1.8 4.1-4.1 4.1-2.3 0-4.1-1.8-4.1-4.1 0-2.3 1.8-4.1 4.1-4.1 2.3 0 4.1 1.9 4.1 4.1" fill="#574137"/><path d="m22.9 34.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.8.1 1.4.7 1.4 1.4" fill="#231f20"/><path d="m14.7 34.8c0-6.4 12.8-6.4 12.8.9-1.9-5.5-11-5.5-12.8-.9" fill="#574137"/><path d="m42.9 31.5c4.6 0 6.4 1.7 6.4 3.3 0 1.6 0 4-6 4-5.8 0-6.7-.7-6.7-3.2 0-1.6 1.8-4.1 6.3-4.1" fill="#f5f5f5"/><path d="m38.4 34.3c0 2.3 1.8 4.1 4.1 4.1 2.3 0 4.1-1.8 4.1-4.1 0-2.3-1.8-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.1" fill="#574137"/><path d="m41.1 34.3c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8.1-1.4.7-1.4 1.4" fill="#231f20"/><path d="m49.3 34.8c0-6.4-12.8-6.4-12.8.9 1.9-5.5 11-5.5 12.8-.9" fill="#574137"/><path d="m32 47c-3.3 0-5-3-3.3-3 1.7 0 5 0 6.7 0 1.6 0-.1 3-3.4 3" fill="#705041"/><g fill="#d9a000"><path d="m22 8l-4-4-4 4h2v4h6z"/><path d="m50 8l-4-4-4 4v4h6v-4z"/></g><path d="m54 16h-44c0-13.3 44-13.3 44 0" fill="#9450e0"/><path d="m48 16h-36c0-10.7 36-10.7 36 0" fill="#7e44bf"/><path fill="#d9a000" d="m8 20h48v6h-48z"/><path fill="#ffce31" d="m50 10l2 2v2h-16v-2l2-2-6-8-6 8 2 2v2h-16v-2l2-2-8-6.1 2 20.1h48l2-20.1z"/><path fill="#66caf2" d="m32 22v-3.1h2z"/><g fill="#428bc1"><path d="m32 22l-2-3.1h2z"/><path d="m34 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m32 16v2.9h-2z"/><path d="m14.8 22v-3.1h1.9z"/></g><g fill="#428bc1"><path d="m14.8 22l-2.1-3.1h2.1z"/><path d="m16.7 18.9h-1.9v-2.9z"/></g><g fill="#66caf2"><path d="m14.8 16v2.9h-2.1z"/><path d="m23.4 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m23.4 22l-2-3.1h2z"/><path d="m25.4 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m23.4 16v2.9h-2z"/><path d="m40.7 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m40.7 22l-2-3.1h2z"/><path d="m42.7 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m40.7 16v2.9h-2z"/><path d="m49.3 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m49.3 22l-2-3.1h2z"/><path d="m51.3 18.9h-2v-2.9z"/></g><path fill="#66caf2" d="m49.3 16v2.9h-2z"/><path fill="#428bc1" d="m8 22l-2-3.1h2z"/><g fill="#66caf2"><path d="m8 16v2.9h-2z"/><path d="m56 22v-3.1h2z"/></g><path fill="#428bc1" d="m58 18.9h-2v-2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f934.svg b/riot/emojione/svg/1f934.svg new file mode 100644 index 0000000..a075a6b --- /dev/null +++ b/riot/emojione/svg/1f934.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m8.3 38.3h47.3c0-25.5-3.6-31-23.7-31-19.9.1-23.6 5.5-23.6 31" fill="#ffb300"/><path d="m53.7 32.7c-.2 1-.4 1.9-.6 2.4-.5.9-1.5 1.5-1.5 1.5s.3-1.9.2-4.6c-1.1-15.8-2-11.4-19.7-11.4-17.6 0-18.6-4.3-19.7 11.4-.1 2.7.2 4.6.2 4.6s-1-.5-1.6-1.5c-.3-.5-.5-1.4-.6-2.4-1.7-.4-3.8-.1-3.8 4.7 0 2.9 1.1 5.4 4.8 5.6 1.2 9.3 6.6 14.1 15.7 18.1 2.5 1.1 7.6 1.1 10 0 9.1-4.1 14.5-8.8 15.7-18.1 3.7-.3 4.8-2.7 4.8-5.6-.1-4.7-2.3-5.1-3.9-4.7" fill="#ffdd67"/><path d="m40.2 50.9c0 3.4-4.1 5.1-8.2 5.1s-8.2-1.7-8.2-5.1c0 0 0-.9.8-.9 3.7 0 11.1 0 14.7 0 .9 0 .9.9.9.9" fill="#937237"/><path d="m21.1 31.5c-4.5 0-6.4 1.6-6.4 3.3 0 1.6 0 4 6 4 5.8 0 6.7-.7 6.7-3.2.1-1.6-1.8-4.1-6.3-4.1" fill="#f5f5f5"/><path d="m25.6 34.3c0 2.3-1.8 4.1-4.1 4.1-2.3 0-4.1-1.8-4.1-4.1 0-2.3 1.8-4.1 4.1-4.1 2.3 0 4.1 1.9 4.1 4.1" fill="#664e27"/><path d="m22.9 34.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4 0-.8.6-1.4 1.4-1.4.8.1 1.4.7 1.4 1.4" fill="#231f20"/><path d="m14.7 34.8c0-6.4 12.8-6.4 12.8.9-1.9-5.5-11-5.5-12.8-.9" fill="#664e27"/><path d="m42.9 31.5c4.6 0 6.4 1.6 6.4 3.3 0 1.6 0 4-6 4-5.8 0-6.7-.7-6.7-3.2 0-1.6 1.8-4.1 6.3-4.1" fill="#f5f5f5"/><path d="m38.4 34.3c0 2.3 1.8 4.1 4.1 4.1 2.3 0 4.1-1.8 4.1-4.1 0-2.3-1.8-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.1" fill="#664e27"/><path d="m41.1 34.3c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4 0-.8-.6-1.4-1.4-1.4-.8.1-1.4.7-1.4 1.4" fill="#231f20"/><path d="m49.3 34.8c0-6.4-12.8-6.4-12.8.9 1.9-5.5 11-5.5 12.8-.9" fill="#664e27"/><path d="m32 47c-3.3 0-5-3-3.3-3 1.7 0 5 0 6.7 0 1.6 0-.1 3-3.4 3" fill="#eba352"/><g fill="#d9a000"><path d="m22 8l-4-4-4 4h2v4h6z"/><path d="m50 8l-4-4-4 4v4h6v-4z"/></g><path d="m54 16h-44c0-13.3 44-13.3 44 0" fill="#9450e0"/><path d="m48 16h-36c0-10.7 36-10.7 36 0" fill="#7e44bf"/><path fill="#d9a000" d="m8 20h48v6h-48z"/><path fill="#ffce31" d="m50 10l2 2v2h-16v-2l2-2-6-8-6 8 2 2v2h-16v-2l2-2-8-6.1 2 20.1h48l2-20.1z"/><path fill="#66caf2" d="m32 22v-3.1h2z"/><g fill="#428bc1"><path d="m32 22l-2-3.1h2z"/><path d="m34 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m32 16v2.9h-2z"/><path d="m14.8 22v-3.1h1.9z"/></g><g fill="#428bc1"><path d="m14.8 22l-2.1-3.1h2.1z"/><path d="m16.7 18.9h-1.9v-2.9z"/></g><g fill="#66caf2"><path d="m14.8 16v2.9h-2.1z"/><path d="m23.4 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m23.4 22l-2-3.1h2z"/><path d="m25.4 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m23.4 16v2.9h-2z"/><path d="m40.7 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m40.7 22l-2-3.1h2z"/><path d="m42.7 18.9h-2v-2.9z"/></g><g fill="#66caf2"><path d="m40.7 16v2.9h-2z"/><path d="m49.3 22v-3.1h2z"/></g><g fill="#428bc1"><path d="m49.3 22l-2-3.1h2z"/><path d="m51.3 18.9h-2v-2.9z"/></g><path fill="#66caf2" d="m49.3 16v2.9h-2z"/><path fill="#428bc1" d="m8 22l-2-3.1h2z"/><g fill="#66caf2"><path d="m8 16v2.9h-2z"/><path d="m56 22v-3.1h2z"/></g><path fill="#428bc1" d="m58 18.9h-2v-2.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f935-1f3fb.svg b/riot/emojione/svg/1f935-1f3fb.svg new file mode 100644 index 0000000..b5259d6 --- /dev/null +++ b/riot/emojione/svg/1f935-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#e6b796" d="m26.7 32.8h10.6v6.5h-10.6z"/><path d="m54 62c0 0 0 0-5-22-.2-.8-1.2-3.2-3.5-3.4-8.5-.6-8.2-.4-8.2-.4 0 1.6-2.4 3-5.3 3-2.9 0-5.3-1.3-5.3-3 0 0 .3-.2-8.2.4-2.2.2-3.3 2.4-3.5 3.4-5 22-5 22-5 22h6l3-14 1 14h24l1-14 3 14h6" fill="#3e4347"/><path d="m32 61c0 0 8.3-14.5 7.4-19.4-.2-1-1.5-2.8-2.4-4-.7 1.5-2.7 2.5-5 2.5-2.3 0-4.3-1.1-5-2.5-1 1.2-2.3 2.9-2.4 3.9-.9 5.1 7.4 19.5 7.4 19.5" fill="#fff"/><g fill="#646464"><path d="m32 61l11-13.7-4.1-6.2z"/><path d="m37.3 35.1c0 0 4.1 3.5 5.1 6.9l-2.1 2.2-3.3-6.5.3-2.6"/><path d="m32 61l-11-13.7 4.1-6.2z"/><path d="m26.7 35.1c0 0-4.1 3.5-5.1 6.9l2.1 2.2 3.2-6.6-.2-2.5"/></g><path d="m38.4 42.2c.5 1.1-4.8-1-4.8-1v-2.4c0 0 5.1-2.8 4.8-1.7-.4 1.4-.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m36.2 39.8l-2.2-.1 1.5-1.2-1.9.9v1.2l2.1.7-1.6-1z"/><path d="m25.6 42.2c-.5 1.1 4.8-1 4.8-1v-2.4c0 0-5.1-2.8-4.8-1.7.4 1.4.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m27.8 39.8l2.2-.1-1.5-1.2 1.9.9v1.2l-2.1.7 1.6-1z"/><g fill="#3e4347"><path d="m33.6 41.6c-.6.5-2.6.5-3.1 0-.6-.5-.6-2.5 0-3 .6-.5 2.6-.5 3.1 0 .5.4.5 2.4 0 3"/><path d="m32 43.7l-1.2 1.2 1.2 1.1 1.2-1.1z"/><path d="m32 48.8l-1.2 1.1 1.2 1.2 1.2-1.2z"/><path d="M32 53.9 30.8 55 32 56.1 33.2 55z"/></g><path d="m16.4 18.3l1.6 2.9h28l1.2-3.1c0-11.2-2.6-16-15.1-16.1-12.5-.1-15.7 4.9-15.7 16.3" fill="#594640"/><path d="m46 18.1c-.1.6-.2 1.3-.4 1.6-.3.6-1 1-1 1s.2-1.3.1-3c-.7-10.4-1.3-5.4-12.7-5.4-11.4 0-12-5-12.7 5.4-.1 1.8.1 3 .1 3s-.7-.4-1-1c-.2-.3-.3-1-.4-1.6-1.1-.3-2.5 0-2.5 3.1 0 1.9.7 3.5 3.1 3.7.8 6.5 9.5 10.8 13.4 10.8 3.9 0 12.6-4.3 13.4-10.8 2.4-.2 3.1-1.8 3.1-3.7 0-3.1-1.4-3.3-2.5-3.1" fill="#ffe1bd"/><g fill="#664e27"><circle cx="26.1" cy="21" r="2.4"/><circle cx="37.9" cy="21" r="2.4"/><path d="m36 28.4c0 1.7-2 2.6-4 2.6s-4-.9-4-2.6c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f935-1f3fc.svg b/riot/emojione/svg/1f935-1f3fc.svg new file mode 100644 index 0000000..d57750a --- /dev/null +++ b/riot/emojione/svg/1f935-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#e0a372" d="m26.7 32.8h10.6v6.5h-10.6z"/><path d="m54 62c0 0 0 0-5-22-.2-.8-1.2-3.2-3.5-3.4-8.5-.6-8.2-.4-8.2-.4 0 1.6-2.4 3-5.3 3-2.9 0-5.3-1.3-5.3-3 0 0 .3-.2-8.2.4-2.2.2-3.3 2.4-3.5 3.4-5 22-5 22-5 22h6l3-14 1 14h24l1-14 3 14h6" fill="#3e4347"/><path d="m32 61c0 0 8.3-14.5 7.4-19.4-.2-1-1.5-2.8-2.4-4-.7 1.5-2.7 2.5-5 2.5-2.3 0-4.3-1.1-5-2.5-1 1.2-2.3 2.9-2.4 3.9-.9 5.1 7.4 19.5 7.4 19.5" fill="#fff"/><g fill="#646464"><path d="m32 61l11-13.7-4.1-6.2z"/><path d="m37.3 35.1c0 0 4.1 3.5 5.1 6.9l-2.1 2.2-3.3-6.5.3-2.6"/><path d="m32 61l-11-13.7 4.1-6.2z"/><path d="m26.7 35.1c0 0-4.1 3.5-5.1 6.9l2.1 2.2 3.2-6.6-.2-2.5"/></g><path d="m38.4 42.2c.5 1.1-4.8-1-4.8-1v-2.4c0 0 5.1-2.8 4.8-1.7-.4 1.4-.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m36.2 39.8l-2.2-.1 1.5-1.2-1.9.9v1.2l2.1.7-1.6-1z"/><path d="m25.6 42.2c-.5 1.1 4.8-1 4.8-1v-2.4c0 0-5.1-2.8-4.8-1.7.4 1.4.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m27.8 39.8l2.2-.1-1.5-1.2 1.9.9v1.2l-2.1.7 1.6-1z"/><g fill="#3e4347"><path d="m33.6 41.6c-.6.5-2.6.5-3.1 0-.6-.5-.6-2.5 0-3 .6-.5 2.6-.5 3.1 0 .5.4.5 2.4 0 3"/><path d="m32 43.7l-1.2 1.2 1.2 1.1 1.2-1.1z"/><path d="m32 48.8l-1.2 1.1 1.2 1.2 1.2-1.2z"/><path d="M32 53.9 30.8 55 32 56.1 33.2 55z"/></g><path d="m16.4 18.3l1.6 2.9h28l1.2-3.1c0-11.2-2.6-16-15.1-16.1-12.5-.1-15.7 4.9-15.7 16.3" fill="#dbb471"/><path d="m46 18.1c-.1.6-.2 1.3-.4 1.6-.3.6-1 1-1 1s.2-1.3.1-3c-.7-10.4-1.3-5.4-12.7-5.4-11.4 0-12-5-12.7 5.4-.1 1.8.1 3 .1 3s-.7-.4-1-1c-.2-.3-.3-1-.4-1.6-1.1-.3-2.5 0-2.5 3.1 0 1.9.7 3.5 3.1 3.7.8 6.5 9.5 10.8 13.4 10.8 3.9 0 12.6-4.3 13.4-10.8 2.4-.2 3.1-1.8 3.1-3.7 0-3.1-1.4-3.3-2.5-3.1" fill="#fed0ac"/><g fill="#664e27"><circle cx="26.1" cy="21" r="2.4"/><circle cx="37.9" cy="21" r="2.4"/><path d="m36 28.4c0 1.7-2 2.6-4 2.6s-4-.9-4-2.6c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f935-1f3fd.svg b/riot/emojione/svg/1f935-1f3fd.svg new file mode 100644 index 0000000..9c816e3 --- /dev/null +++ b/riot/emojione/svg/1f935-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b58360" d="m26.7 32.8h10.6v6.5h-10.6z"/><path d="m54 62c0 0 0 0-5-22-.2-.8-1.2-3.2-3.5-3.4-8.5-.6-8.2-.4-8.2-.4 0 1.6-2.4 3-5.3 3s-5.3-1.3-5.3-3c0 0 .3-.2-8.2.4-2.2.2-3.3 2.4-3.5 3.4-5 22-5 22-5 22h6l3-14 1 14h24l1-14 3 14h6" fill="#3e4347"/><path d="m32 61c0 0 8.3-14.5 7.4-19.4-.2-1-1.5-2.8-2.4-4-.7 1.5-2.7 2.5-5 2.5-2.3 0-4.3-1.1-5-2.5-1 1.2-2.3 2.9-2.4 3.9-.9 5.1 7.4 19.5 7.4 19.5" fill="#fff"/><g fill="#646464"><path d="m32 61l11-13.7-4.1-6.2z"/><path d="m37.3 35.1c0 0 4.1 3.5 5.1 6.9l-2.1 2.2-3.3-6.5.3-2.6"/><path d="m32 61l-11-13.7 4.1-6.2z"/><path d="m26.7 35.1c0 0-4.1 3.5-5.1 6.9l2.1 2.2 3.2-6.6-.2-2.5"/></g><path d="m38.4 42.2c.5 1.1-4.8-1-4.8-1v-2.4c0 0 5.1-2.8 4.8-1.7-.4 1.4-.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m36.2 39.8l-2.2-.1 1.5-1.2-1.9.9v1.2l2.1.7-1.6-1z"/><path d="m25.6 42.2c-.5 1.1 4.8-1 4.8-1v-2.4c0 0-5.1-2.8-4.8-1.7.4 1.4.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m27.8 39.8l2.2-.1-1.5-1.2 1.9.9v1.2l-2.1.7 1.6-1z"/><g fill="#3e4347"><path d="m33.6 41.6c-.6.5-2.6.5-3.1 0-.6-.5-.6-2.5 0-3 .6-.5 2.6-.5 3.1 0 .5.4.5 2.4 0 3"/><path d="m32 43.7l-1.2 1.2 1.2 1.1 1.2-1.1z"/><path d="m32 48.8l-1.2 1.1 1.2 1.2 1.2-1.2z"/><path d="M32 53.9 30.8 55 32 56.1 33.2 55z"/></g><path d="m16.4 18.3l1.6 2.9h28l1.2-3.1c0-11.2-2.6-16-15.1-16.1-12.5-.1-15.7 4.9-15.7 16.3" fill="#594640"/><path d="m46 18.1c-.1.6-.2 1.3-.4 1.6-.3.6-1 1-1 1s.2-1.3.1-3c-.7-10.4-1.3-5.4-12.7-5.4-11.4 0-12-5-12.7 5.4-.1 1.8.1 3 .1 3s-.7-.4-1-1c-.2-.3-.3-1-.4-1.6-1.1-.3-2.5 0-2.5 3.1 0 1.9.7 3.5 3.1 3.7.8 6.5 9.5 10.8 13.4 10.8 3.9 0 12.6-4.3 13.4-10.8 2.4-.2 3.1-1.8 3.1-3.7 0-3.1-1.4-3.3-2.5-3.1" fill="#d6a57c"/><g fill="#664e27"><circle cx="26.1" cy="21" r="2.4"/><circle cx="37.9" cy="21" r="2.4"/><path d="m36 28.4c0 1.7-2 2.6-4 2.6s-4-.9-4-2.6c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f935-1f3fe.svg b/riot/emojione/svg/1f935-1f3fe.svg new file mode 100644 index 0000000..e15d176 --- /dev/null +++ b/riot/emojione/svg/1f935-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#935e3e" d="m26.7 32.8h10.6v6.5h-10.6z"/><path d="m54 62c0 0 0 0-5-22-.2-.8-1.2-3.2-3.5-3.4-8.5-.6-8.2-.4-8.2-.4 0 1.6-2.4 3-5.3 3-2.9 0-5.3-1.3-5.3-3 0 0 .3-.2-8.2.4-2.2.2-3.3 2.4-3.5 3.4-5 22-5 22-5 22h6l3-14 1 14h24l1-14 3 14h6" fill="#3e4347"/><path d="m32 61c0 0 8.3-14.5 7.4-19.4-.2-1-1.5-2.8-2.4-4-.7 1.5-2.7 2.5-5 2.5-2.3 0-4.3-1.1-5-2.5-1 1.2-2.3 2.9-2.4 3.9-.9 5.1 7.4 19.5 7.4 19.5" fill="#fff"/><g fill="#646464"><path d="m32 61l11-13.7-4.1-6.2z"/><path d="m37.3 35.1c0 0 4.1 3.5 5.1 6.9l-2.1 2.2-3.3-6.5.3-2.6"/><path d="m32 61l-11-13.7 4.1-6.2z"/><path d="m26.7 35.1c0 0-4.1 3.5-5.1 6.9l2.1 2.2 3.2-6.6-.2-2.5"/></g><path d="m38.4 42.2c.5 1.1-4.8-1-4.8-1v-2.4c0 0 5.1-2.8 4.8-1.7-.4 1.4-.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m36.2 39.8l-2.2-.1 1.5-1.2-1.9.9v1.2l2.1.7-1.6-1z"/><path d="m25.6 42.2c-.5 1.1 4.8-1 4.8-1v-2.4c0 0-5.1-2.8-4.8-1.7.4 1.4.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m27.8 39.8l2.2-.1-1.5-1.2 1.9.9v1.2l-2.1.7 1.6-1z"/><g fill="#3e4347"><path d="m33.6 41.6c-.6.5-2.6.5-3.1 0-.6-.5-.6-2.5 0-3 .6-.5 2.6-.5 3.1 0 .5.4.5 2.4 0 3"/><path d="m32 43.7l-1.2 1.2 1.2 1.1 1.2-1.1z"/><path d="m32 48.8l-1.2 1.1 1.2 1.2 1.2-1.2z"/><path d="M32 53.9 30.8 55 32 56.1 33.2 55z"/></g><path d="m16.4 18.3l1.6 2.9h28l1.2-3.1c0-11.2-2.6-16-15.1-16.1-12.5-.1-15.7 4.9-15.7 16.3" fill="#231f20"/><path d="m46 18.1c-.1.6-.2 1.3-.4 1.6-.3.6-1 1-1 1s.2-1.3.1-3c-.7-10.4-1.3-5.4-12.7-5.4-11.4 0-12-5-12.7 5.4-.1 1.8.1 3 .1 3s-.7-.4-1-1c-.2-.3-.3-1-.4-1.6-1.1-.3-2.5 0-2.5 3.1 0 1.9.7 3.5 3.1 3.7.8 6.5 9.5 10.8 13.4 10.8 3.9 0 12.6-4.3 13.4-10.8 2.4-.2 3.1-1.8 3.1-3.7 0-3.1-1.4-3.3-2.5-3.1" fill="#b47d56"/><g fill="#664e27"><circle cx="26.1" cy="21" r="2.4"/><circle cx="37.9" cy="21" r="2.4"/><path d="m36 28.4c0 1.7-2 2.6-4 2.6s-4-.9-4-2.6c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f935-1f3ff.svg b/riot/emojione/svg/1f935-1f3ff.svg new file mode 100644 index 0000000..f8655db --- /dev/null +++ b/riot/emojione/svg/1f935-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#705041" d="m26.7 32.8h10.6v6.5h-10.6z"/><path d="m54 62c0 0 0 0-5-22-.2-.8-1.2-3.2-3.5-3.4-8.5-.6-8.2-.4-8.2-.4 0 1.6-2.4 3-5.3 3-2.9 0-5.3-1.3-5.3-3 0 0 .3-.2-8.2.4-2.2.2-3.3 2.4-3.5 3.4-5 22-5 22-5 22h6l3-14 1 14h24l1-14 3 14h6" fill="#3e4347"/><path d="m32 61c0 0 8.3-14.5 7.4-19.4-.2-1-1.5-2.8-2.4-4-.7 1.5-2.7 2.5-5 2.5-2.3 0-4.3-1.1-5-2.5-1 1.2-2.3 2.9-2.4 3.9-.9 5.1 7.4 19.5 7.4 19.5" fill="#fff"/><g fill="#646464"><path d="m32 61l11-13.7-4.1-6.2z"/><path d="m37.3 35.1c0 0 4.1 3.5 5.1 6.9l-2.1 2.2-3.3-6.5.3-2.6"/><path d="m32 61l-11-13.7 4.1-6.2z"/><path d="m26.7 35.1c0 0-4.1 3.5-5.1 6.9l2.1 2.2 3.2-6.6-.2-2.5"/></g><path d="m38.4 42.2c.5 1.1-4.8-1-4.8-1v-2.4c0 0 5.1-2.8 4.8-1.7-.4 1.4-.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m36.2 39.8l-2.2-.1 1.5-1.2-1.9.9v1.2l2.1.7-1.6-1z"/><path d="m25.6 42.2c-.5 1.1 4.8-1 4.8-1v-2.4c0 0-5.1-2.8-4.8-1.7.4 1.4.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m27.8 39.8l2.2-.1-1.5-1.2 1.9.9v1.2l-2.1.7 1.6-1z"/><g fill="#3e4347"><path d="m33.6 41.6c-.6.5-2.6.5-3.1 0-.6-.5-.6-2.5 0-3 .6-.5 2.6-.5 3.1 0 .5.4.5 2.4 0 3"/><path d="m32 43.7l-1.2 1.2 1.2 1.1 1.2-1.1z"/><path d="m32 48.8l-1.2 1.1 1.2 1.2 1.2-1.2z"/><path d="M32 53.9 30.8 55 32 56.1 33.2 55z"/></g><path d="m16.4 18.3l1.6 2.9h28l1.2-3.1c0-11.2-2.6-16-15.1-16.1-12.5-.1-15.7 4.9-15.7 16.3" fill="#231f20"/><path d="m46 18.1c-.1.6-.2 1.3-.4 1.6-.3.6-1 1-1 1s.2-1.3.1-3c-.7-10.4-1.3-5.4-12.7-5.4-11.4 0-12-5-12.7 5.4-.1 1.8.1 3 .1 3s-.7-.4-1-1c-.2-.3-.3-1-.4-1.6-1.1-.3-2.5 0-2.5 3.1 0 1.9.7 3.5 3.1 3.7.8 6.5 9.5 10.8 13.4 10.8 3.9 0 12.6-4.3 13.4-10.8 2.4-.2 3.1-1.8 3.1-3.7 0-3.1-1.4-3.3-2.5-3.1" fill="#8a6859"/><g fill="#574137"><circle cx="26.1" cy="21" r="2.4"/><circle cx="37.9" cy="21" r="2.4"/><path d="m36 28.4c0 1.7-2 2.6-4 2.6s-4-.9-4-2.6c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f935.svg b/riot/emojione/svg/1f935.svg new file mode 100644 index 0000000..228b84a --- /dev/null +++ b/riot/emojione/svg/1f935.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#eba352" d="m26.7 32.8h10.6v6.5h-10.6z"/><path d="m54 62c0 0 0 0-5-22-.2-.8-1.2-3.2-3.5-3.4-8.5-.6-8.2-.4-8.2-.4 0 1.6-2.4 3-5.3 3-2.9 0-5.3-1.3-5.3-3 0 0 .3-.2-8.2.4-2.2.2-3.3 2.4-3.5 3.4-5 22-5 22-5 22h6l3-14 1 14h24l1-14 3 14h6" fill="#3e4347"/><path d="m32 61c0 0 8.3-14.5 7.4-19.4-.2-1-1.5-2.8-2.4-4-.7 1.5-2.7 2.5-5 2.5-2.3 0-4.3-1.1-5-2.5-1 1.2-2.3 2.9-2.4 3.9-.9 5.1 7.4 19.5 7.4 19.5" fill="#fff"/><g fill="#646464"><path d="m32 61l11-13.7-4.1-6.2z"/><path d="m37.3 35.1c0 0 4.1 3.5 5.1 6.9l-2.1 2.2-3.3-6.5.3-2.6"/><path d="m32 61l-11-13.7 4.1-6.2z"/><path d="m26.7 35.1c0 0-4.1 3.5-5.1 6.9l2.1 2.2 3.2-6.6-.2-2.5"/></g><path d="m38.4 42.2c.5 1.1-4.8-1-4.8-1v-2.4c0 0 5.1-2.8 4.8-1.7-.4 1.4-.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m36.2 39.8l-2.2-.1 1.5-1.2-1.9.9v1.2l2.1.7-1.6-1z"/><path d="m25.6 42.2c-.5 1.1 4.8-1 4.8-1v-2.4c0 0-5.1-2.8-4.8-1.7.4 1.4.4 4.2 0 5.1" fill="#3e4347"/><path fill="#646464" d="m27.8 39.8l2.2-.1-1.5-1.2 1.9.9v1.2l-2.1.7 1.6-1z"/><g fill="#3e4347"><path d="m33.6 41.6c-.6.5-2.6.5-3.1 0-.6-.5-.6-2.5 0-3 .6-.5 2.6-.5 3.1 0 .5.4.5 2.4 0 3"/><path d="m32 43.7l-1.2 1.2 1.2 1.1 1.2-1.1z"/><path d="m32 48.8l-1.2 1.1 1.2 1.2 1.2-1.2z"/><path d="M32 53.9 30.8 55 32 56.1 33.2 55z"/></g><path d="m16.4 18.3l1.6 2.9h28l1.2-3.1c0-11.2-2.6-16-15.1-16.1-12.5-.1-15.7 4.9-15.7 16.3" fill="#ffb300"/><path d="m46 18.1c-.1.6-.2 1.3-.4 1.6-.3.6-1 1-1 1s.2-1.3.1-3c-.7-10.4-1.3-5.4-12.7-5.4-11.4 0-12-5-12.7 5.4-.1 1.8.1 3 .1 3s-.7-.4-1-1c-.2-.3-.3-1-.4-1.6-1.1-.3-2.5 0-2.5 3.1 0 1.9.7 3.5 3.1 3.7.8 6.5 9.5 10.8 13.4 10.8 3.9 0 12.6-4.3 13.4-10.8 2.4-.2 3.1-1.8 3.1-3.7 0-3.1-1.4-3.3-2.5-3.1" fill="#ffdd67"/><g fill="#937237"><circle cx="26.1" cy="21" r="2.4"/><circle cx="37.9" cy="21" r="2.4"/><path d="m36 28.4c0 1.7-2 2.6-4 2.6s-4-.9-4-2.6c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f936-1f3fb.svg b/riot/emojione/svg/1f936-1f3fb.svg new file mode 100644 index 0000000..42ba4e6 --- /dev/null +++ b/riot/emojione/svg/1f936-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="31.9" cy="13" rx="19.7" ry="11" fill="#d93d3d"/><ellipse cx="31.9" cy="16.8" rx="24" ry="11" fill="#e2e9ed"/><path d="M61.8,62H2c0-11.8,13.4-12.9,29.9-12.9C48.4,49.1,61.8,50.2,61.8,62z" fill="#ff4848"/><path d="m51.7 50.7c0 1.4-3.7 1.4-4.9 2.5-.9.9-.1 4.6-1.5 5.3-1.2.6-3.8-2.3-5.3-1.9-1.3.3-2.1 4.1-3.6 4.3-1.4.2-3-3.3-4.5-3.3-1.5 0-3.1 3.5-4.5 3.3-1.5-.2-2.2-4-3.6-4.3-1.5-.4-4.1 2.5-5.3 1.9-1.5-.7-.6-4.4-1.5-5.3-1.2-1.1-4.9-1.1-4.9-2.5.1-1.4 39.6-1.4 39.6 0" fill="#fff"/><path d="m54.3 25.9c-13.8-13.9-31.1-13.9-44.9 0l.1 15.4c0 6.7 6.6 14 22.8 14 15.4 0 22-6 22-14v-15.4" fill="#ffe1bd"/><path d="m38.3 46.2c.1.1.2.3.2.5 0 1.5-3 3.3-6.7 3.3-3.7 0-6.7-1.8-6.7-3.3 0-.2.1-.4.2-.6 0 0 2.9 1.3 6.5 1.3 3.7.1 6.5-1.2 6.5-1.2" fill="#454749"/><path d="m31.9 8.3c-26.9 0-31.6 21.2-22.4 28.5 0 0 4.6-7.8 14.3-11.6 3.2-1.2 5.9-2.4 8.1-3.6 2.2 1.1 4.9 2.3 8.1 3.6 9.7 3.7 14.3 11.6 14.3 11.6 9.2-7.3 4.5-28.5-22.4-28.5" fill="#8b9fa5"/><g fill="#454749"><path d="m41.5 48.6c-.5 0-1-.1-1.5-.3-.5-.2-.9-.5-1.3-.8-.8-.6-1.4-1.6-1.4-2.6.7.7 1.3 1.3 2 1.9.7.6 1.5 1.1 2.2 1.8"/><path d="m22.2 48.6c.7-.7 1.5-1.2 2.1-1.8.7-.6 1.3-1.2 2-1.9 0 1-.7 1.9-1.4 2.6-.4.3-.8.6-1.3.8-.4.1-.9.3-1.4.3"/><path d="m19.3 36.7l-.3-2.7c.7-.1 1.7-.3 2.8-.5 5.2-1 13.9-2.7 23.4.5l-.9 2.5c-8.8-3-17.1-1.4-22-.4-1.2.3-2.2.5-3 .6"/><ellipse cx="21" cy="35.4" rx="8" ry="8"/></g><ellipse cx="21" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><ellipse cx="42.8" cy="35.4" rx="8" ry="8" fill="#454749"/><ellipse cx="42.8" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m60 26.1c0 13.3.7-6.8-28.1-6.8-28.8 0-28.1 20.1-28.1 6.8 0-13.3 12.6-19.1 28.1-19.1 15.5 0 28.1 5.8 28.1 19.1" fill="#ff4848"/><path d="m6.8 33.6c0 0-6-2.4-4.3-6.2.6-1.5 4.3-1.1 5.7-2 1.7-1.1 3.6-5.6 5.6-6.1 1.2-.3 3.3 1.9 4.5 1.8 1.9-.2 4.2-3.9 6.1-4.3 2.3-.4 6.8 2.5 9.1 2.4 2-.1 5.3-3.3 7.3-3.1 2.2.2 4.9 4.3 6.9 5.1 1.9.7 6.5-.7 8 .5 1 .8.3 3.9 1 4.9.9 1.3 5.3 1.9 5.3 3.4 0 3.6-5.2 4-5.2 4s.9-2.6.5-3.1c-.8-1.1-4.6-1.2-5.2-2.5-.6-1.2 1-3.2.1-4.1-1.4-1.4-4.8.9-6.8.5-1.7-.4-3.9-4-5.7-4.1-1.9-.1-4.7 3.3-6.6 3.4-1.8.1-4.9-2.7-6.7-2.4-2 .3-4.3 4.7-6.3 4.7-1.6 0-4.3-3.3-5.9-2.9-1.9.4-1.7 4.9-3.4 5.9-1 .6-3.8-.8-4.6 0-.8.6.6 4.2.6 4.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f936-1f3fc.svg b/riot/emojione/svg/1f936-1f3fc.svg new file mode 100644 index 0000000..039a576 --- /dev/null +++ b/riot/emojione/svg/1f936-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="31.9" cy="13" rx="19.7" ry="11" fill="#d93d3d"/><ellipse cx="31.9" cy="16.8" rx="24" ry="11" fill="#e2e9ed"/><path d="M61.8,62H2c0-11.8,13.4-12.9,29.9-12.9C48.4,49.1,61.8,50.2,61.8,62z" fill="#ff4848"/><path d="m51.7 50.7c0 1.4-3.7 1.4-4.9 2.5-.9.9-.1 4.6-1.5 5.3-1.2.6-3.8-2.3-5.3-1.9-1.3.3-2.1 4.1-3.6 4.3-1.4.2-3-3.3-4.5-3.3-1.5 0-3.1 3.5-4.5 3.3-1.5-.2-2.3-4-3.6-4.3-1.5-.4-4.1 2.5-5.3 1.9-1.5-.7-.6-4.4-1.5-5.3-1.2-1.1-4.9-1.1-4.9-2.5.1-1.4 39.6-1.4 39.6 0" fill="#fff"/><path d="m54.3 25.9c-13.8-13.9-31.1-13.9-44.9 0l.1 15.4c0 6.7 6.6 14 22.8 14 15.4 0 22-6 22-14v-15.4" fill="#fed0ac"/><path d="m38.3 46.2c.1.1.2.3.2.5 0 1.5-3 3.3-6.6 3.3s-6.7-1.8-6.7-3.3c0-.2.1-.4.2-.6 0 0 2.9 1.3 6.5 1.3 3.6.1 6.4-1.2 6.4-1.2" fill="#454749"/><path d="m31.9 8.3c-26.9 0-31.6 21.2-22.4 28.5 0 0 4.6-7.8 14.3-11.6 3.2-1.2 5.9-2.4 8.1-3.6 2.2 1.1 4.9 2.3 8.1 3.6 9.7 3.7 14.3 11.6 14.3 11.6 9.2-7.3 4.5-28.5-22.4-28.5" fill="#8b9fa5"/><g fill="#454749"><path d="m41.5 48.6c-.5 0-1-.1-1.5-.3-.5-.2-.9-.5-1.3-.8-.8-.6-1.4-1.6-1.4-2.6.7.7 1.3 1.3 2 1.9.7.6 1.5 1.1 2.2 1.8"/><path d="m22.2 48.6c.7-.7 1.5-1.2 2.2-1.8.7-.6 1.3-1.2 2-1.9 0 1-.7 1.9-1.4 2.6-.4.3-.8.6-1.3.8-.5.1-1 .3-1.5.3"/><path d="m19.3 36.7l-.3-2.7c.7-.1 1.7-.3 2.8-.5 5.2-1 13.9-2.7 23.4.5l-.9 2.5c-8.8-3-17.1-1.4-22-.4-1.2.3-2.2.5-3 .6"/><ellipse cx="21" cy="35.4" rx="8" ry="8"/></g><ellipse cx="21" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m50.8 35.4c0 4.4-3.6 8-8 8-4.4 0-8-3.6-8-8s3.6-8 8-8c4.4 0 8 3.6 8 8" fill="#454749"/><ellipse cx="42.8" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m60 26.1c0 13.3.7-6.8-28.1-6.8-28.8 0-28.1 20.1-28.1 6.8 0-13.3 12.6-19.1 28.1-19.1 15.5 0 28.1 5.8 28.1 19.1" fill="#ff4848"/><path d="m6.8 33.6c0 0-6-2.4-4.3-6.2.6-1.5 4.3-1.1 5.7-2 1.7-1.1 3.6-5.6 5.6-6.1 1.2-.3 3.3 1.9 4.5 1.8 1.9-.2 4.2-3.9 6.1-4.3 2.3-.4 6.8 2.5 9.1 2.4 2-.1 5.3-3.3 7.3-3.1 2.2.2 4.9 4.3 6.9 5.1 1.9.7 6.5-.7 8 .5 1 .8.3 3.9 1 4.9.9 1.3 5.3 1.9 5.3 3.4 0 3.6-5.2 4-5.2 4s.9-2.6.5-3.1c-.8-1.1-4.6-1.2-5.2-2.5-.6-1.2 1-3.2.1-4.1-1.4-1.4-4.8.9-6.8.5-1.7-.4-3.9-4-5.7-4.1-1.9-.1-4.7 3.3-6.6 3.4-1.8.1-4.9-2.7-6.7-2.4-2 .3-4.3 4.7-6.3 4.7-1.6 0-4.3-3.3-5.9-2.9-1.9.4-1.7 4.9-3.4 5.9-1 .6-3.8-.8-4.6 0-.8.6.6 4.2.6 4.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f936-1f3fd.svg b/riot/emojione/svg/1f936-1f3fd.svg new file mode 100644 index 0000000..a28a074 --- /dev/null +++ b/riot/emojione/svg/1f936-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="31.9" cy="13" rx="19.7" ry="11" fill="#d93d3d"/><ellipse cx="31.9" cy="16.8" rx="24" ry="11" fill="#e2e9ed"/><path d="M61.8,62H2c0-11.8,13.4-12.9,29.9-12.9C48.4,49.1,61.8,50.2,61.8,62z" fill="#ff4848"/><path d="m51.7 50.7c0 1.4-3.7 1.4-4.9 2.5-.9.9-.1 4.6-1.5 5.3-1.2.6-3.8-2.3-5.3-1.9-1.3.3-2.1 4.1-3.6 4.3-1.4.2-3-3.3-4.5-3.3-1.5 0-3.1 3.5-4.5 3.3-1.5-.2-2.2-4-3.6-4.3-1.5-.4-4.1 2.5-5.3 1.9-1.5-.7-.6-4.4-1.5-5.3-1.2-1.1-4.9-1.1-4.9-2.5.1-1.4 39.6-1.4 39.6 0" fill="#fff"/><path d="m54.3 25.9c-13.8-13.9-31.1-13.9-44.9 0l.1 15.4c0 6.7 6.6 14 22.8 14 15.4 0 22-6 22-14v-15.4" fill="#d6a57c"/><path d="m38.3 46.2c.1.1.2.3.2.5 0 1.5-3 3.3-6.6 3.3-3.7 0-6.7-1.8-6.7-3.3 0-.2.1-.4.2-.6 0 0 2.9 1.3 6.5 1.3 3.6.1 6.4-1.2 6.4-1.2" fill="#454749"/><path d="m31.9 8.3c-26.9 0-31.6 21.2-22.4 28.5 0 0 4.6-7.8 14.3-11.6 3.2-1.2 5.9-2.4 8.1-3.6 2.2 1.1 4.9 2.3 8.1 3.6 9.7 3.7 14.3 11.6 14.3 11.6 9.2-7.3 4.5-28.5-22.4-28.5" fill="#8b9fa5"/><g fill="#454749"><path d="m41.5 48.6c-.5 0-1-.1-1.5-.3-.5-.2-.9-.5-1.3-.8-.8-.6-1.4-1.6-1.4-2.6.7.7 1.3 1.3 2 1.9.7.6 1.5 1.1 2.2 1.8"/><path d="m22.2 48.6c.7-.7 1.5-1.2 2.2-1.8.7-.6 1.3-1.2 2-1.9 0 1-.7 1.9-1.4 2.6-.4.3-.8.6-1.3.8-.5.1-1 .3-1.5.3"/><path d="m19.3 36.7l-.3-2.7c.7-.1 1.7-.3 2.8-.5 5.2-1 13.9-2.7 23.4.5l-.9 2.5c-8.8-3-17.1-1.4-22-.4-1.2.3-2.2.5-3 .6"/><ellipse cx="21" cy="35.4" rx="8" ry="8"/></g><ellipse cx="21" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m50.8 35.4c0 4.4-3.6 8-8 8-4.4 0-8-3.6-8-8s3.6-8 8-8c4.4 0 8 3.6 8 8" fill="#454749"/><ellipse cx="42.8" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m60 26.1c0 13.3.7-6.8-28.1-6.8-28.8 0-28.1 20.1-28.1 6.8 0-13.3 12.6-19.1 28.1-19.1 15.5 0 28.1 5.8 28.1 19.1" fill="#ff4848"/><path d="m6.8 33.6c0 0-6-2.4-4.3-6.2.6-1.5 4.3-1.1 5.7-2 1.7-1.1 3.6-5.6 5.6-6.1 1.2-.3 3.3 1.9 4.5 1.8 1.9-.2 4.2-3.9 6.1-4.3 2.3-.4 6.8 2.5 9.1 2.4 2-.1 5.3-3.3 7.3-3.1 2.2.2 4.9 4.3 6.9 5.1 1.9.7 6.5-.7 8 .5 1 .8.3 3.9 1 4.9.9 1.3 5.3 1.9 5.3 3.4 0 3.6-5.2 4-5.2 4s.9-2.6.5-3.1c-.8-1.1-4.6-1.2-5.2-2.5-.6-1.2 1-3.2.1-4.1-1.4-1.4-4.8.9-6.8.5-1.7-.4-3.9-4-5.7-4.1-1.9-.1-4.7 3.3-6.6 3.4-1.8.1-4.9-2.7-6.7-2.4-2 .3-4.3 4.7-6.3 4.7-1.6 0-4.3-3.3-5.9-2.9-1.9.4-1.7 4.9-3.4 5.9-1 .6-3.8-.8-4.6 0-.8.6.6 4.2.6 4.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f936-1f3fe.svg b/riot/emojione/svg/1f936-1f3fe.svg new file mode 100644 index 0000000..bac1e46 --- /dev/null +++ b/riot/emojione/svg/1f936-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="31.9" cy="13" rx="19.7" ry="11" fill="#d93d3d"/><ellipse cx="31.9" cy="16.8" rx="24" ry="11" fill="#e2e9ed"/><path d="M61.8,62H2c0-11.8,13.4-12.9,29.9-12.9C48.4,49.1,61.8,50.2,61.8,62z" fill="#ff4848"/><path d="m51.7 50.7c0 1.4-3.7 1.4-4.9 2.5-.9.9-.1 4.6-1.5 5.3-1.2.6-3.8-2.3-5.3-1.9-1.3.3-2.1 4.1-3.6 4.3-1.4.2-3-3.3-4.5-3.3-1.5 0-3.1 3.5-4.5 3.3-1.5-.2-2.2-4-3.6-4.3-1.5-.4-4.1 2.5-5.3 1.9-1.5-.7-.6-4.4-1.5-5.3-1.2-1.1-4.9-1.1-4.9-2.5.1-1.4 39.6-1.4 39.6 0" fill="#fff"/><path d="m54.3 25.9c-13.8-13.9-31.1-13.9-44.9 0l.1 15.4c0 6.7 6.6 14 22.8 14 15.4 0 22-6 22-14v-15.4" fill="#b47d56"/><path d="m38.3 46.2c.1.1.2.3.2.5 0 1.5-3 3.3-6.6 3.3-3.7 0-6.7-1.8-6.7-3.3 0-.2.1-.4.2-.6 0 0 2.9 1.3 6.5 1.3 3.6.1 6.4-1.2 6.4-1.2" fill="#454749"/><path d="m31.9 8.3c-26.9 0-31.6 21.2-22.4 28.5 0 0 4.6-7.8 14.3-11.6 3.2-1.2 5.9-2.4 8.1-3.6 2.2 1.1 4.9 2.3 8.1 3.6 9.7 3.7 14.3 11.6 14.3 11.6 9.2-7.3 4.5-28.5-22.4-28.5" fill="#8b9fa5"/><g fill="#454749"><path d="m41.5 48.6c-.5 0-1-.1-1.5-.3-.5-.2-.9-.5-1.3-.8-.8-.6-1.4-1.6-1.4-2.6.7.7 1.3 1.3 2 1.9.7.6 1.5 1.1 2.2 1.8"/><path d="m22.2 48.6c.7-.7 1.5-1.2 2.1-1.8.7-.6 1.3-1.2 2-1.9 0 1-.7 1.9-1.4 2.6-.4.3-.8.6-1.3.8-.4.1-.9.3-1.4.3"/><path d="m19.3 36.7l-.3-2.7c.7-.1 1.7-.3 2.8-.5 5.2-1 13.9-2.7 23.4.5l-.9 2.5c-8.8-3-17.1-1.4-22-.4-1.2.3-2.2.5-3 .6"/><ellipse cx="21" cy="35.4" rx="8" ry="8"/></g><ellipse cx="21" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><ellipse cx="42.8" cy="35.4" rx="8" ry="8" fill="#454749"/><ellipse cx="42.8" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m60 26.1c0 13.3.7-6.8-28.1-6.8-28.8 0-28.1 20.1-28.1 6.8 0-13.3 12.6-19.1 28.1-19.1 15.5 0 28.1 5.8 28.1 19.1" fill="#ff4848"/><path d="m6.8 33.6c0 0-6-2.4-4.3-6.2.6-1.5 4.3-1.1 5.7-2 1.7-1.1 3.6-5.6 5.6-6.1 1.2-.3 3.3 1.9 4.5 1.8 1.9-.2 4.2-3.9 6.1-4.3 2.3-.4 6.8 2.5 9.1 2.4 2-.1 5.3-3.3 7.3-3.1 2.2.2 4.9 4.3 6.9 5.1 1.9.7 6.5-.7 8 .5 1 .8.3 3.9 1 4.9.9 1.3 5.3 1.9 5.3 3.4 0 3.6-5.2 4-5.2 4s.9-2.6.5-3.1c-.8-1.1-4.6-1.2-5.2-2.5-.6-1.2 1-3.2.1-4.1-1.4-1.4-4.8.9-6.8.5-1.7-.4-3.9-4-5.7-4.1-1.9-.1-4.7 3.3-6.6 3.4-1.8.1-4.9-2.7-6.7-2.4-2 .3-4.3 4.7-6.3 4.7-1.6 0-4.3-3.3-5.9-2.9-1.9.4-1.7 4.9-3.4 5.9-1 .6-3.8-.8-4.6 0-.8.6.6 4.2.6 4.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f936-1f3ff.svg b/riot/emojione/svg/1f936-1f3ff.svg new file mode 100644 index 0000000..bd8eb1b --- /dev/null +++ b/riot/emojione/svg/1f936-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="31.9" cy="13" rx="19.7" ry="11" fill="#d93d3d"/><ellipse cx="31.9" cy="16.8" rx="24" ry="11" fill="#e2e9ed"/><path d="M61.8,62H2c0-11.8,13.4-12.9,29.9-12.9C48.4,49.1,61.8,50.2,61.8,62z" fill="#ff4848"/><path d="m51.7 50.7c0 1.4-3.7 1.4-4.9 2.5-.9.9-.1 4.6-1.5 5.3-1.2.6-3.8-2.3-5.3-1.9-1.3.3-2.1 4.1-3.6 4.3-1.4.2-3-3.3-4.5-3.3-1.5 0-3.1 3.5-4.5 3.3-1.5-.2-2.3-4-3.6-4.3-1.5-.4-4.1 2.5-5.3 1.9-1.5-.7-.6-4.4-1.5-5.3-1.2-1.1-4.9-1.1-4.9-2.5.1-1.4 39.6-1.4 39.6 0" fill="#fff"/><path d="m54.3 25.9c-13.8-13.9-31.1-13.9-44.9 0l.1 15.4c0 6.7 6.6 14 22.8 14 15.4 0 22-6 22-14v-15.4" fill="#8a6859"/><path d="m38.3 46.2c.1.1.2.3.2.5 0 1.5-3 3.3-6.6 3.3s-6.7-1.8-6.7-3.3c0-.2.1-.4.2-.6 0 0 2.9 1.3 6.5 1.3 3.6.1 6.4-1.2 6.4-1.2" fill="#454749"/><path d="m31.9 8.3c-26.9 0-31.6 21.2-22.4 28.5 0 0 4.6-7.8 14.3-11.6 3.2-1.2 5.9-2.4 8.1-3.6 2.2 1.1 4.9 2.3 8.1 3.6 9.7 3.7 14.3 11.6 14.3 11.6 9.2-7.3 4.5-28.5-22.4-28.5" fill="#8b9fa5"/><g fill="#454749"><path d="m41.5 48.6c-.5 0-1-.1-1.5-.3-.5-.2-.9-.5-1.3-.8-.8-.6-1.4-1.6-1.4-2.6.7.7 1.3 1.3 2 1.9.7.6 1.5 1.1 2.2 1.8"/><path d="m22.2 48.6c.7-.7 1.5-1.2 2.1-1.8.7-.6 1.3-1.2 2-1.9 0 1-.7 1.9-1.4 2.6-.4.3-.8.6-1.3.8-.4.1-.9.3-1.4.3"/><path d="m19.3 36.7l-.3-2.7c.7-.1 1.7-.3 2.8-.5 5.2-1 13.9-2.7 23.4.5l-.9 2.5c-8.8-3-17.1-1.4-22-.4-1.2.3-2.2.5-3 .6"/><ellipse cx="21" cy="35.4" rx="8" ry="8"/></g><ellipse cx="21" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m50.8 35.4c0 4.4-3.6 8-8 8-4.4 0-8-3.6-8-8s3.6-8 8-8c4.4 0 8 3.6 8 8" fill="#454749"/><path d="m48.3 35.4c0 3-2.5 5.5-5.5 5.5-3 0-5.5-2.5-5.5-5.5s2.4-5.5 5.5-5.5c3 0 5.5 2.5 5.5 5.5" fill="#b4d7ee"/><path d="m60 26.1c0 13.3.7-6.8-28.1-6.8-28.8 0-28.1 20.1-28.1 6.8 0-13.3 12.6-19.1 28.1-19.1 15.5 0 28.1 5.8 28.1 19.1" fill="#ff4848"/><path d="m6.8 33.6c0 0-6-2.4-4.3-6.2.6-1.5 4.3-1.1 5.7-2 1.7-1.1 3.6-5.6 5.6-6.1 1.2-.3 3.3 1.9 4.5 1.8 1.9-.2 4.2-3.9 6.1-4.3 2.3-.4 6.8 2.5 9.1 2.4 2-.1 5.3-3.3 7.3-3.1 2.2.2 4.9 4.3 6.9 5.1 1.9.7 6.5-.7 8 .5 1 .8.3 3.9 1 4.9.9 1.3 5.3 1.9 5.3 3.4 0 3.6-5.2 4-5.2 4s.9-2.6.5-3.1c-.8-1.1-4.6-1.2-5.2-2.5-.6-1.2 1-3.2.1-4.1-1.4-1.4-4.8.9-6.8.5-1.7-.4-3.9-4-5.7-4.1-1.9-.1-4.7 3.3-6.6 3.4-1.8.1-4.9-2.7-6.7-2.4-2 .3-4.3 4.7-6.3 4.7-1.6 0-4.3-3.3-5.9-2.9-1.9.4-1.7 4.9-3.4 5.9-1 .6-3.8-.8-4.6 0-.8.6.6 4.2.6 4.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f936.svg b/riot/emojione/svg/1f936.svg new file mode 100644 index 0000000..c2c0e98 --- /dev/null +++ b/riot/emojione/svg/1f936.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="31.9" cy="13" rx="19.7" ry="11" fill="#d93d3d"/><ellipse cx="31.9" cy="16.8" rx="24" ry="11" fill="#e2e9ed"/><path d="M61.8,62H2c0-11.8,13.4-12.9,29.9-12.9C48.4,49.1,61.8,50.2,61.8,62z" fill="#ff4848"/><path d="m51.7 50.7c0 1.4-3.7 1.4-4.9 2.5-.9.9-.1 4.6-1.5 5.3-1.2.6-3.8-2.3-5.3-1.9-1.3.3-2.1 4.1-3.6 4.3-1.4.2-3-3.3-4.5-3.3-1.5 0-3.1 3.5-4.5 3.3-1.5-.2-2.3-4-3.6-4.3-1.5-.4-4.1 2.5-5.3 1.9-1.5-.7-.6-4.4-1.5-5.3-1.2-1.1-4.9-1.1-4.9-2.5.1-1.4 39.6-1.4 39.6 0" fill="#fff"/><path d="m54.3 25.9c-13.8-13.9-31.1-13.9-44.9 0l.1 15.4c0 6.7 6.6 14 22.8 14 15.4 0 22-6 22-14v-15.4" fill="#ffdd67"/><path d="m38.3 46.2c.1.1.2.3.2.5 0 1.5-3 3.3-6.6 3.3s-6.7-1.8-6.7-3.3c0-.2.1-.4.2-.6 0 0 2.9 1.3 6.5 1.3 3.6.1 6.4-1.2 6.4-1.2" fill="#454749"/><path d="m31.9 8.3c-26.9 0-31.6 21.2-22.4 28.5 0 0 4.6-7.8 14.3-11.6 3.2-1.2 5.9-2.4 8.1-3.6 2.2 1.1 4.9 2.3 8.1 3.6 9.7 3.7 14.3 11.6 14.3 11.6 9.2-7.3 4.5-28.5-22.4-28.5" fill="#8b9fa5"/><g fill="#454749"><path d="m41.5 48.6c-.5 0-1-.1-1.5-.3-.5-.2-.9-.5-1.3-.8-.8-.6-1.4-1.6-1.4-2.6.7.7 1.3 1.3 2 1.9.7.6 1.5 1.1 2.2 1.8"/><path d="m22.2 48.6c.7-.7 1.5-1.2 2.1-1.8.7-.6 1.3-1.2 2-1.9 0 1-.7 1.9-1.4 2.6-.4.3-.8.6-1.3.8-.4.1-.9.3-1.4.3"/><path d="m19.3 36.7l-.3-2.7c.7-.1 1.7-.3 2.8-.5 5.2-1 13.9-2.7 23.4.5l-.9 2.5c-8.8-3-17.1-1.4-22-.4-1.2.3-2.2.5-3 .6"/><ellipse cx="21" cy="35.4" rx="8" ry="8"/></g><ellipse cx="21" cy="35.4" rx="5.5" ry="5.5" fill="#b4d7ee"/><path d="m50.8 35.4c0 4.4-3.6 8-8 8-4.4 0-8-3.6-8-8s3.6-8 8-8c4.4 0 8 3.6 8 8" fill="#454749"/><path d="m48.3 35.4c0 3-2.5 5.5-5.5 5.5-3 0-5.5-2.5-5.5-5.5s2.4-5.5 5.5-5.5c3 0 5.5 2.5 5.5 5.5" fill="#b4d7ee"/><path d="m60 26.1c0 13.3.7-6.8-28.1-6.8-28.8 0-28.1 20.1-28.1 6.8 0-13.3 12.6-19.1 28.1-19.1 15.5 0 28.1 5.8 28.1 19.1" fill="#ff4848"/><path d="m6.8 33.6c0 0-6-2.4-4.3-6.2.6-1.5 4.3-1.1 5.7-2 1.7-1.1 3.6-5.6 5.6-6.1 1.2-.3 3.3 1.9 4.5 1.8 1.9-.2 4.2-3.9 6.1-4.3 2.3-.4 6.8 2.5 9.1 2.4 2-.1 5.3-3.3 7.3-3.1 2.2.2 4.9 4.3 6.9 5.1 1.9.7 6.5-.7 8 .5 1 .8.3 3.9 1 4.9.9 1.3 5.3 1.9 5.3 3.4 0 3.6-5.2 4-5.2 4s.9-2.6.5-3.1c-.8-1.1-4.6-1.2-5.2-2.5-.6-1.2 1-3.2.1-4.1-1.4-1.4-4.8.9-6.8.5-1.7-.4-3.9-4-5.7-4.1-1.9-.1-4.7 3.3-6.6 3.4-1.8.1-4.9-2.7-6.7-2.4-2 .3-4.3 4.7-6.3 4.7-1.6 0-4.3-3.3-5.9-2.9-1.9.4-1.7 4.9-3.4 5.9-1 .6-3.8-.8-4.6 0-.8.6.6 4.2.6 4.2" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f937-1f3fb.svg b/riot/emojione/svg/1f937-1f3fb.svg new file mode 100644 index 0000000..e654bcd --- /dev/null +++ b/riot/emojione/svg/1f937-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-13.4,0-20.8,8.5-20.8,19.7v22.7h41.6V21.7c0-16.7-11.2-16.4-11.2-16.4S40.7,2,32,2z" fill="#594640"/><path d="m51.1 36.7c-5.2-4.7-19 4.3-19.1 4.3-.1-.1-13.9-9-19.1-4.3-4.8 4.4.8 25.3.8 25.3h36.5c.1 0 5.7-20.9.9-25.3" fill="#c28fef"/><path d="m17.7 33.2c0 0-3.1-.2-3.9-4.7-.6-3.5 1.5-4.6 1.5-4.6 7.7-3.9 19.3-14.3 19.3-14.3s5.4 5.4 11.6 8.9c0 0 2.4 0 3.1 3.8.8 4.5-2.2 5.8-2.2 5.8 1.2 6.8-6.5 16.5-12 17.5-5.5.9-16.2-5.6-17.4-12.4" fill="#ffe1bd"/><g fill="#664e27"><path d="m28.6 40.9c-.1 0-.2-.1-.2-.2-.1-.7 2.2-2.7 5.2-3.2 3.1-.5 5.8.5 6 1.2 0 .1 0 .2-.1.3 0 0-2.6-1.1-5.7-.5-3 .5-5.2 2.4-5.2 2.4"/><path d="m18.1 23c-.1-.1-.1-.1-.1-.2 0-.6 2-1.5 4.6-1.6 2.6-.2 4.8.4 4.8 1.1 0 .1 0 .2-.1.2 0 0-2.1-.4-4.6-.2-2.6.1-4.6.7-4.6.7"/><path d="m42.8 16.7c.1-.1.1-.2 0-.2-.2-.6-2.5-.5-4.9.4-2.4.9-4.1 2.4-3.9 2.9 0 .1.1.1.2.2 0 0 1.7-1.2 4.1-2.1 2.4-1 4.5-1.2 4.5-1.2"/></g><path d="m37 34.4c.2 1-2.8 1.8-3.5 2-.7.1-3.8.3-3.9-.7-.1-.1 7.3-1.8 7.4-1.3" fill="#e6b796"/><path d="m27.1 29.8c.9-.2.4-2.4.4-2.4-3.7-5.5-8.9-.7-8.9-.7-2.1 1.4 1.8 4.1 2.3 4.1 2.6.3 6.2-1 6.2-1" fill="#f5f5f5"/><path d="m26 27.1c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3.1.8 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m24.2 27.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.2 1.2.8"/><path d="m28.4 28.1c-.9-.8-1.7-1.5-2.7-2-.9-.5-1.9-.7-3-.6-1 .1-2 .5-3.1.9-.5.2-1.1.4-1.7.5-.6.1-1.3.2-1.7-.2.6.1 1.1-.1 1.6-.3.5-.2 1-.5 1.5-.8 1-.6 2.1-1.1 3.4-1.2.6 0 1.3 0 1.9.2.6.2 1.2.5 1.7.8.8.7 1.6 1.7 2.1 2.7"/></g><path d="m37.1 28c-.9.2-1.1-2.1-1.1-2.1 1.6-6.4 8.2-3.7 8.2-3.7 2.5.6-.3 4.4-.8 4.7-2.4 1.1-6.3 1.1-6.3 1.1" fill="#f5f5f5"/><path d="m42.9 24.2c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3 .7 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m41.1 24.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.3 1.2.8"/><path d="m35.4 26.9c.1-1.1.5-2.3 1.2-3.3.3-.5.8-1 1.3-1.3.5-.4 1.1-.6 1.7-.8 1.2-.3 2.4-.2 3.6 0 .6.1 1.1.2 1.7.3.5.1 1.1.1 1.6-.2-.3.5-1 .7-1.6.8-.6.1-1.2.1-1.7.1-1.1 0-2.2 0-3.2.2-1 .2-1.9.8-2.6 1.6-.9.6-1.4 1.6-2 2.6"/><path d="m16.6 49.9l-.8 12.1h11.1l-1.3-12.8h-.8c-.1-.7-.2-1.4-1.1-3.2-1.5-3.3-7.4-2.1-9.7-1.5l-2 5.5c3.6.4 4.6-.1 4.6-.1" opacity=".2"/></g><path d="m17.4 50.4v-1.1c0 0-10.2 2.1-14-1.4-4.8-4.5 3.4-2 9.6-3.5 2.2-.6 8.1-1.7 9.7 1.5 1.7 3.5 1.3 4.5 1.3 4.5h-6.6c0 0 0 0 0 0" fill="#ffe1bd"/><path fill="#c28fef" d="m16.3 62l.8-12.3h7.7l1.1 12.3z"/><path d="m47.4 49.9l.8 12.1h-11.1l1.3-12.8h.8c.1-.7.2-1.4 1.1-3.2 1.5-3.3 7.4-2.1 9.7-1.5l2 5.6c-3.6.3-4.6-.2-4.6-.2" opacity=".2" fill="#231f20"/><path d="m46.6 50.4v-1.1c0 0 10.2 2.1 14-1.4 4.8-4.5-3.4-2-9.6-3.5-2.2-.6-8.2-1.7-9.7 1.5-1.7 3.5-1.3 4.5-1.3 4.5h6.6" fill="#ffe1bd"/><path fill="#c28fef" d="m47.7 62l-.8-12.3h-7.7l-1.1 12.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f937-1f3fc.svg b/riot/emojione/svg/1f937-1f3fc.svg new file mode 100644 index 0000000..8686bdf --- /dev/null +++ b/riot/emojione/svg/1f937-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-13.4,0-20.8,8.5-20.8,19.7v22.7h41.6V21.7c0-16.7-11.2-16.4-11.2-16.4S40.7,2,32,2z" fill="#dbb471"/><path d="m51.1 36.7c-5.2-4.7-19 4.3-19.1 4.3-.1-.1-13.9-9-19.1-4.3-4.8 4.4.8 25.3.8 25.3h36.5c.1 0 5.7-20.9.9-25.3" fill="#c28fef"/><path d="m17.7 33.2c0 0-3.1-.2-3.9-4.7-.6-3.5 1.5-4.6 1.5-4.6 7.7-3.9 19.3-14.3 19.3-14.3s5.4 5.4 11.6 8.9c0 0 2.4 0 3.1 3.8.8 4.5-2.2 5.8-2.2 5.8 1.2 6.8-6.5 16.5-12 17.5-5.5.9-16.2-5.6-17.4-12.4" fill="#fed0ac"/><g fill="#664e27"><path d="m28.6 40.9c-.1 0-.2-.1-.2-.2-.1-.7 2.2-2.7 5.2-3.2 3.1-.5 5.8.5 6 1.2 0 .1 0 .2-.1.3 0 0-2.6-1.1-5.7-.5-3 .5-5.2 2.4-5.2 2.4"/><path d="m18.1 23c-.1-.1-.1-.1-.1-.2 0-.6 2-1.5 4.6-1.6 2.6-.2 4.8.4 4.8 1.1 0 .1 0 .2-.1.2 0 0-2.1-.4-4.6-.2-2.6.1-4.6.7-4.6.7"/><path d="m42.8 16.7c.1-.1.1-.2 0-.2-.2-.6-2.5-.5-4.9.4-2.4.9-4.1 2.4-3.9 2.9 0 .1.1.1.2.2 0 0 1.7-1.2 4.1-2.1 2.4-1 4.5-1.2 4.5-1.2"/></g><path d="m37 34.4c.2 1-2.8 1.8-3.5 2-.7.1-3.8.3-3.9-.7-.1-.1 7.3-1.8 7.4-1.3" fill="#e0a372"/><path d="m27.1 29.8c.9-.2.4-2.4.4-2.4-3.7-5.5-8.9-.7-8.9-.7-2.1 1.4 1.8 4.1 2.3 4.1 2.6.3 6.2-1 6.2-1" fill="#f5f5f5"/><path d="m26 27.1c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3.1.8 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m24.2 27.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.2 1.2.8"/><path d="m28.4 28.1c-.9-.8-1.7-1.5-2.7-2-.9-.5-1.9-.7-3-.6-1 .1-2 .5-3.1.9-.5.2-1.1.4-1.7.5-.6.1-1.3.2-1.7-.2.6.1 1.1-.1 1.6-.3.5-.2 1-.5 1.5-.8 1-.6 2.1-1.1 3.4-1.2.6 0 1.3 0 1.9.2.6.2 1.2.5 1.7.8.8.7 1.6 1.7 2.1 2.7"/></g><path d="m37.1 28c-.9.2-1.1-2.1-1.1-2.1 1.6-6.4 8.2-3.7 8.2-3.7 2.5.6-.3 4.4-.8 4.7-2.4 1.1-6.3 1.1-6.3 1.1" fill="#f5f5f5"/><path d="m42.9 24.2c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3 .7 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m41.1 24.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.3 1.2.8"/><path d="m35.4 26.9c.1-1.1.5-2.3 1.2-3.3.3-.5.8-1 1.3-1.3.5-.4 1.1-.6 1.7-.8 1.2-.3 2.4-.2 3.6 0 .6.1 1.1.2 1.7.3.5.1 1.1.1 1.6-.2-.3.5-1 .7-1.6.8-.6.1-1.2.1-1.7.1-1.1 0-2.2 0-3.2.2-1 .2-1.9.8-2.6 1.6-.9.6-1.4 1.6-2 2.6"/><path d="m16.6 49.9l-.8 12.1h11.1l-1.3-12.8h-.8c-.1-.7-.2-1.4-1.1-3.2-1.5-3.3-7.4-2.1-9.7-1.5l-2 5.5c3.6.4 4.6-.1 4.6-.1" opacity=".2"/></g><path d="m17.4 50.4v-1.1c0 0-10.2 2.1-14-1.4-4.8-4.5 3.4-2 9.6-3.5 2.2-.6 8.1-1.7 9.7 1.5 1.7 3.5 1.3 4.5 1.3 4.5h-6.6" fill="#fed0ac"/><path fill="#c28fef" d="m16.3 62l.8-12.3h7.7l1.1 12.3z"/><path d="m47.4 49.9l.8 12.1h-11.1l1.3-12.8h.8c.1-.7.2-1.4 1.1-3.2 1.5-3.3 7.4-2.1 9.7-1.5l2 5.6c-3.6.3-4.6-.2-4.6-.2" opacity=".2" fill="#231f20"/><path d="m46.6 50.4v-1.1c0 0 10.2 2.1 14-1.4 4.8-4.5-3.4-2-9.6-3.5-2.2-.6-8.1-1.7-9.7 1.5-1.7 3.5-1.3 4.5-1.3 4.5h6.6" fill="#fed0ac"/><path fill="#c28fef" d="m47.7 62l-.8-12.3h-7.7l-1.1 12.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f937-1f3fd.svg b/riot/emojione/svg/1f937-1f3fd.svg new file mode 100644 index 0000000..ee50fbb --- /dev/null +++ b/riot/emojione/svg/1f937-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-13.4,0-20.8,8.5-20.8,19.7v22.7h41.6V21.7c0-16.7-11.2-16.4-11.2-16.4S40.7,2,32,2z" fill="#594640"/><path d="m51.1 36.7c-5.2-4.7-19 4.3-19.1 4.3-.1-.1-13.9-9-19.1-4.3-4.8 4.4.8 25.3.8 25.3h36.5c.1 0 5.7-20.9.9-25.3" fill="#c28fef"/><path d="m17.7 33.2c0 0-3.1-.2-3.9-4.7-.6-3.5 1.5-4.6 1.5-4.6 7.7-3.9 19.3-14.3 19.3-14.3s5.4 5.4 11.6 8.9c0 0 2.4 0 3.1 3.8.8 4.5-2.2 5.8-2.2 5.8 1.2 6.8-6.5 16.5-12 17.5-5.5.9-16.2-5.6-17.4-12.4" fill="#d6a57c"/><g fill="#664e27"><path d="m28.6 40.9c-.1 0-.2-.1-.2-.2-.1-.7 2.2-2.7 5.2-3.2 3.1-.5 5.8.5 6 1.2 0 .1 0 .2-.1.3 0 0-2.6-1.1-5.7-.5-3 .5-5.2 2.4-5.2 2.4"/><path d="m18.1 23c-.1-.1-.1-.1-.1-.2 0-.6 2-1.5 4.6-1.6 2.6-.2 4.8.4 4.8 1.1 0 .1 0 .2-.1.2 0 0-2.1-.4-4.6-.2-2.6.1-4.6.7-4.6.7"/><path d="m42.8 16.7c.1-.1.1-.2 0-.2-.2-.6-2.5-.5-4.9.4-2.4.9-4.1 2.4-3.9 2.9 0 .1.1.1.2.2 0 0 1.7-1.2 4.1-2.1 2.4-1 4.5-1.2 4.5-1.2"/></g><path d="m37 34.4c.2 1-2.8 1.8-3.5 2-.7.1-3.8.3-3.9-.7-.1-.1 7.3-1.8 7.4-1.3" fill="#b58360"/><path d="m27.1 29.8c.9-.2.4-2.4.4-2.4-3.7-5.5-8.9-.7-8.9-.7-2.1 1.4 1.8 4.1 2.3 4.1 2.6.3 6.2-1 6.2-1" fill="#f5f5f5"/><path d="m26 27.1c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3.1.8 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m24.2 27.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.2 1.2.8"/><path d="m28.4 28.1c-.9-.8-1.7-1.5-2.7-2-.9-.5-1.9-.7-3-.6-1 .1-2 .5-3.1.9-.5.2-1.1.4-1.7.5-.6.1-1.3.2-1.7-.2.6.1 1.1-.1 1.6-.3.5-.2 1-.5 1.5-.8 1-.6 2.1-1.1 3.4-1.2.6 0 1.3 0 1.9.2.6.2 1.2.5 1.7.8.8.7 1.6 1.7 2.1 2.7"/></g><path d="m37.1 28c-.9.2-1.1-2.1-1.1-2.1 1.6-6.4 8.2-3.7 8.2-3.7 2.5.6-.3 4.4-.8 4.7-2.4 1.1-6.3 1.1-6.3 1.1" fill="#f5f5f5"/><path d="m42.9 24.2c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3 .7 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m41.1 24.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.3 1.2.8"/><path d="m35.4 26.9c.1-1.1.5-2.3 1.2-3.3.3-.5.8-1 1.3-1.3.5-.4 1.1-.6 1.7-.8 1.2-.3 2.4-.2 3.6 0 .6.1 1.1.2 1.7.3.5.1 1.1.1 1.6-.2-.3.5-1 .7-1.6.8-.6.1-1.2.1-1.7.1-1.1 0-2.2 0-3.2.2-1 .2-1.9.8-2.6 1.6-.9.6-1.4 1.6-2 2.6"/><path d="m16.6 49.9l-.8 12.1h11.1l-1.3-12.8h-.8c-.1-.7-.2-1.4-1.1-3.2-1.5-3.3-7.4-2.1-9.7-1.5l-2 5.5c3.6.4 4.6-.1 4.6-.1" opacity=".2"/></g><path d="m17.4 50.4v-1.1c0 0-10.2 2.1-14-1.4-4.8-4.5 3.4-2 9.6-3.5 2.2-.6 8.1-1.7 9.7 1.5 1.7 3.5 1.3 4.5 1.3 4.5h-6.6" fill="#d6a57c"/><path fill="#c28fef" d="m16.3 62l.8-12.3h7.7l1.1 12.3z"/><path d="m47.4 49.9l.8 12.1h-11.1l1.3-12.8h.8c.1-.7.2-1.4 1.1-3.2 1.5-3.3 7.4-2.1 9.7-1.5l2 5.6c-3.6.3-4.6-.2-4.6-.2" opacity=".2" fill="#231f20"/><path d="m46.6 50.4v-1.1c0 0 10.2 2.1 14-1.4 4.8-4.5-3.4-2-9.6-3.5-2.2-.6-8.1-1.7-9.7 1.5-1.7 3.5-1.3 4.5-1.3 4.5h6.6" fill="#d6a57c"/><path fill="#c28fef" d="m47.7 62l-.8-12.3h-7.7l-1.1 12.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f937-1f3fe.svg b/riot/emojione/svg/1f937-1f3fe.svg new file mode 100644 index 0000000..4a7bc96 --- /dev/null +++ b/riot/emojione/svg/1f937-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-13.4,0-20.8,8.5-20.8,19.7v22.7h41.6V21.7c0-16.7-11.2-16.4-11.2-16.4S40.7,2,32,2z" fill="#231f20"/><path d="m51.1 36.7c-5.2-4.7-19 4.3-19.1 4.3-.1-.1-13.9-9-19.1-4.3-4.8 4.4.8 25.3.8 25.3h36.5c.1 0 5.7-20.9.9-25.3" fill="#c28fef"/><path d="m17.7 33.2c0 0-3.1-.2-3.9-4.7-.6-3.5 1.5-4.6 1.5-4.6 7.7-3.9 19.3-14.3 19.3-14.3s5.4 5.4 11.6 8.9c0 0 2.4 0 3.1 3.8.8 4.5-2.2 5.8-2.2 5.8 1.2 6.8-6.5 16.5-12 17.5-5.5.9-16.2-5.6-17.4-12.4" fill="#b47d56"/><g fill="#664e27"><path d="m28.6 40.9c-.1 0-.2-.1-.2-.2-.1-.7 2.2-2.7 5.2-3.2 3.1-.5 5.8.5 6 1.2 0 .1 0 .2-.1.3 0 0-2.6-1.1-5.7-.5-3 .5-5.2 2.4-5.2 2.4"/><path d="m18.1 23c-.1-.1-.1-.1-.1-.2 0-.6 2-1.5 4.6-1.6 2.6-.2 4.8.4 4.8 1.1 0 .1 0 .2-.1.2 0 0-2.1-.4-4.6-.2-2.6.1-4.6.7-4.6.7"/><path d="m42.8 16.7c.1-.1.1-.2 0-.2-.2-.6-2.5-.5-4.9.4-2.4.9-4.1 2.4-3.9 2.9 0 .1.1.1.2.2 0 0 1.7-1.2 4.1-2.1 2.4-1 4.5-1.2 4.5-1.2"/></g><path d="m37 34.4c.2 1-2.8 1.8-3.5 2-.7.1-3.8.3-3.9-.7-.1-.1 7.3-1.8 7.4-1.3" fill="#935e3e"/><path d="m27.1 29.8c.9-.2.4-2.4.4-2.4-3.7-5.5-8.9-.7-8.9-.7-2.1 1.4 1.8 4.1 2.3 4.1 2.6.3 6.2-1 6.2-1" fill="#f5f5f5"/><path d="m26 27.1c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3.1.8 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m24.2 27.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.2 1.2.8"/><path d="m28.4 28.1c-.9-.8-1.7-1.5-2.7-2-.9-.5-1.9-.7-3-.6-1 .1-2 .5-3.1.9-.5.2-1.1.4-1.7.5-.6.1-1.3.2-1.7-.2.6.1 1.1-.1 1.6-.3.5-.2 1-.5 1.5-.8 1-.6 2.1-1.1 3.4-1.2.6 0 1.3 0 1.9.2.6.2 1.2.5 1.7.8.8.7 1.6 1.7 2.1 2.7"/></g><path d="m37.1 28c-.9.2-1.1-2.1-1.1-2.1 1.6-6.4 8.2-3.7 8.2-3.7 2.5.6-.3 4.4-.8 4.7-2.4 1.1-6.3 1.1-6.3 1.1" fill="#f5f5f5"/><path d="m42.9 24.2c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3 .7 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m41.1 24.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.3 1.2.8"/><path d="m35.4 26.9c.1-1.1.5-2.3 1.2-3.3.3-.5.8-1 1.3-1.3.5-.4 1.1-.6 1.7-.8 1.2-.3 2.4-.2 3.6 0 .6.1 1.1.2 1.7.3.5.1 1.1.1 1.6-.2-.3.5-1 .7-1.6.8-.6.1-1.2.1-1.7.1-1.1 0-2.2 0-3.2.2-1 .2-1.9.8-2.6 1.6-.9.6-1.4 1.6-2 2.6"/><path d="m16.6 49.9l-.8 12.1h11.1l-1.3-12.8h-.8c-.1-.7-.2-1.4-1.1-3.2-1.5-3.3-7.4-2.1-9.7-1.5l-2 5.5c3.6.4 4.6-.1 4.6-.1" opacity=".2"/></g><path d="m17.4 50.4v-1.1c0 0-10.2 2.1-14-1.4-4.8-4.5 3.4-2 9.6-3.5 2.2-.6 8.1-1.7 9.7 1.5 1.7 3.5 1.3 4.5 1.3 4.5h-6.6" fill="#b47d56"/><path fill="#c28fef" d="m16.3 62l.8-12.3h7.7l1.1 12.3z"/><path d="m47.4 49.9l.8 12.1h-11.1l1.3-12.8h.8c.1-.7.2-1.4 1.1-3.2 1.5-3.3 7.4-2.1 9.7-1.5l2 5.6c-3.6.3-4.6-.2-4.6-.2" opacity=".2" fill="#231f20"/><path d="m46.6 50.4v-1.1c0 0 10.2 2.1 14-1.4 4.8-4.5-3.4-2-9.6-3.5-2.2-.6-8.1-1.7-9.7 1.5-1.7 3.5-1.3 4.5-1.3 4.5h6.6" fill="#b47d56"/><path fill="#c28fef" d="m47.7 62l-.8-12.3h-7.7l-1.1 12.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f937-1f3ff.svg b/riot/emojione/svg/1f937-1f3ff.svg new file mode 100644 index 0000000..25bfd9e --- /dev/null +++ b/riot/emojione/svg/1f937-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-13.4,0-20.8,8.5-20.8,19.7v22.7h41.6V21.7c0-16.7-11.2-16.4-11.2-16.4S40.7,2,32,2z" fill="#231f20"/><path d="m51.1 36.7c-5.2-4.7-19 4.3-19.1 4.3-.1-.1-13.9-9-19.1-4.3-4.8 4.4.8 25.3.8 25.3h36.5c.1 0 5.7-20.9.9-25.3" fill="#c28fef"/><path d="m17.7 33.2c0 0-3.1-.2-3.9-4.7-.6-3.5 1.5-4.6 1.5-4.6 7.7-3.9 19.3-14.3 19.3-14.3s5.4 5.4 11.6 8.9c0 0 2.4 0 3.1 3.8.8 4.5-2.2 5.8-2.2 5.8 1.2 6.8-6.5 16.5-12 17.5-5.5.9-16.2-5.6-17.4-12.4" fill="#8a6859"/><g fill="#574137"><path d="m28.6 40.9c-.1 0-.2-.1-.2-.2-.1-.7 2.2-2.7 5.2-3.2 3.1-.5 5.8.5 6 1.2 0 .1 0 .2-.1.3 0 0-2.6-1.1-5.7-.5-3 .5-5.2 2.4-5.2 2.4"/><path d="m18.1 23c-.1-.1-.1-.1-.1-.2 0-.6 2-1.5 4.6-1.6 2.6-.2 4.8.4 4.8 1.1 0 .1 0 .2-.1.2 0 0-2.1-.4-4.6-.2-2.6.1-4.6.7-4.6.7"/><path d="m42.8 16.7c.1-.1.1-.2 0-.2-.2-.6-2.5-.5-4.9.4-2.4.9-4.1 2.4-3.9 2.9 0 .1.1.1.2.2 0 0 1.7-1.2 4.1-2.1 2.4-1 4.5-1.2 4.5-1.2"/></g><path d="m37 34.4c.2 1-2.8 1.8-3.5 2-.7.1-3.8.3-3.9-.7-.1-.1 7.3-1.8 7.4-1.3" fill="#705041"/><path d="m27.1 29.8c.9-.2.4-2.4.4-2.4-3.7-5.5-8.9-.7-8.9-.7-2.1 1.4 1.8 4.1 2.3 4.1 2.6.3 6.2-1 6.2-1" fill="#f5f5f5"/><path d="m26 27.1c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3.1.8 3.3 2.3" fill="#574137"/><g fill="#231f20"><path d="m24.2 27.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.2 1.2.8"/><path d="m28.4 28.1c-.9-.8-1.7-1.5-2.7-2-.9-.5-1.9-.7-3-.6-1 .1-2 .5-3.1.9-.5.2-1.1.4-1.7.5-.6.1-1.3.2-1.7-.2.6.1 1.1-.1 1.6-.3.5-.2 1-.5 1.5-.8 1-.6 2.1-1.1 3.4-1.2.6 0 1.3 0 1.9.2.6.2 1.2.5 1.7.8.8.7 1.6 1.7 2.1 2.7"/></g><path d="m37.1 28c-.9.2-1.1-2.1-1.1-2.1 1.6-6.4 8.2-3.7 8.2-3.7 2.5.6-.3 4.4-.8 4.7-2.4 1.1-6.3 1.1-6.3 1.1" fill="#f5f5f5"/><path d="m42.9 24.2c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3 .7 3.3 2.3" fill="#574137"/><g fill="#231f20"><path d="m41.1 24.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.3 1.2.8"/><path d="m35.4 26.9c.1-1.1.5-2.3 1.2-3.3.3-.5.8-1 1.3-1.3.5-.4 1.1-.6 1.7-.8 1.2-.3 2.4-.2 3.6 0 .6.1 1.1.2 1.7.3.5.1 1.1.1 1.6-.2-.3.5-1 .7-1.6.8-.6.1-1.2.1-1.7.1-1.1 0-2.2 0-3.2.2-1 .2-1.9.8-2.6 1.6-.9.6-1.4 1.6-2 2.6"/><path d="m16.6 49.9l-.8 12.1h11.1l-1.3-12.8h-.8c-.1-.7-.2-1.4-1.1-3.2-1.5-3.3-7.4-2.1-9.7-1.5l-2 5.5c3.6.4 4.6-.1 4.6-.1" opacity=".2"/></g><path d="m17.4 50.4v-1.1c0 0-10.2 2.1-14-1.4-4.8-4.5 3.4-2 9.6-3.5 2.2-.6 8.1-1.7 9.7 1.5 1.7 3.5 1.3 4.5 1.3 4.5h-6.6c0 0 0 0 0 0" fill="#8a6859"/><path fill="#c28fef" d="m16.3 62l.8-12.3h7.7l1.1 12.3z"/><path d="m47.4 49.9l.8 12.1h-11.1l1.3-12.8h.8c.1-.7.2-1.4 1.1-3.2 1.5-3.3 7.4-2.1 9.7-1.5l2 5.6c-3.6.3-4.6-.2-4.6-.2" opacity=".2" fill="#231f20"/><path d="m46.6 50.4v-1.1c0 0 10.2 2.1 14-1.4 4.8-4.5-3.4-2-9.6-3.5-2.2-.6-8.2-1.7-9.7 1.5-1.7 3.5-1.3 4.5-1.3 4.5h6.6" fill="#8a6859"/><path fill="#c28fef" d="m47.7 62l-.8-12.3h-7.7l-1.1 12.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f937.svg b/riot/emojione/svg/1f937.svg new file mode 100644 index 0000000..c2ab59f --- /dev/null +++ b/riot/emojione/svg/1f937.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M32,2c-13.4,0-20.8,8.5-20.8,19.7v22.7h41.6V21.7c0-16.7-11.2-16.4-11.2-16.4S40.7,2,32,2z" fill="#ffb300"/><path d="m51.1 36.7c-5.2-4.7-19 4.3-19.1 4.3-.1-.1-13.9-9-19.1-4.3-4.8 4.4.8 25.3.8 25.3h36.5c.1 0 5.7-20.9.9-25.3" fill="#c28fef"/><path d="m17.7 33.2c0 0-3.1-.2-3.9-4.7-.6-3.5 1.5-4.6 1.5-4.6 7.7-3.9 19.3-14.3 19.3-14.3s5.4 5.4 11.6 8.9c0 0 2.4 0 3.1 3.8.8 4.5-2.2 5.8-2.2 5.8 1.2 6.8-6.5 16.5-12 17.5-5.5.9-16.2-5.6-17.4-12.4" fill="#ffdd67"/><g fill="#937237"><path d="m28.6 40.9c-.1 0-.2-.1-.2-.2-.1-.7 2.2-2.7 5.2-3.2 3.1-.5 5.8.5 6 1.2 0 .1 0 .2-.1.3 0 0-2.6-1.1-5.7-.5-3 .5-5.2 2.4-5.2 2.4"/><path d="m18.1 23c-.1-.1-.1-.1-.1-.2 0-.6 2-1.5 4.6-1.6 2.6-.2 4.8.4 4.8 1.1 0 .1 0 .2-.1.2 0 0-2.1-.4-4.6-.2-2.6.1-4.6.7-4.6.7"/><path d="m42.8 16.7c.1-.1.1-.2 0-.2-.2-.6-2.5-.5-4.9.4-2.4.9-4.1 2.4-3.9 2.9 0 .1.1.1.2.2 0 0 1.7-1.2 4.1-2.1 2.4-1 4.5-1.2 4.5-1.2"/></g><path d="m37 34.4c.2 1-2.8 1.8-3.5 2-.7.1-3.8.3-3.9-.7-.1-.1 7.3-1.8 7.4-1.3" fill="#eba352"/><path d="m27.1 29.8c.9-.2.4-2.4.4-2.4-3.7-5.5-8.9-.7-8.9-.7-2.1 1.4 1.8 4.1 2.3 4.1 2.6.3 6.2-1 6.2-1" fill="#f5f5f5"/><path d="m26 27.1c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3.1.8 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m24.2 27.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.2 1.2.8"/><path d="m28.4 28.1c-.9-.8-1.7-1.5-2.7-2-.9-.5-1.9-.7-3-.6-1 .1-2 .5-3.1.9-.5.2-1.1.4-1.7.5-.6.1-1.3.2-1.7-.2.6.1 1.1-.1 1.6-.3.5-.2 1-.5 1.5-.8 1-.6 2.1-1.1 3.4-1.2.6 0 1.3 0 1.9.2.6.2 1.2.5 1.7.8.8.7 1.6 1.7 2.1 2.7"/></g><path d="m37.1 28c-.9.2-1.1-2.1-1.1-2.1 1.6-6.4 8.2-3.7 8.2-3.7 2.5.6-.3 4.4-.8 4.7-2.4 1.1-6.3 1.1-6.3 1.1" fill="#f5f5f5"/><path d="m42.9 24.2c.3 1.6-.8 3-2.3 3.3-1.6.3-3-.8-3.3-2.3-.3-1.6.8-3 2.3-3.3 1.6-.3 3 .7 3.3 2.3" fill="#664e27"/><g fill="#231f20"><path d="m41.1 24.5c.1.5-.3 1.1-.8 1.2-.5.1-1.1-.3-1.2-.8-.1-.5.3-1.1.8-1.2.6-.1 1.1.3 1.2.8"/><path d="m35.4 26.9c.1-1.1.5-2.3 1.2-3.3.3-.5.8-1 1.3-1.3.5-.4 1.1-.6 1.7-.8 1.2-.3 2.4-.2 3.6 0 .6.1 1.1.2 1.7.3.5.1 1.1.1 1.6-.2-.3.5-1 .7-1.6.8-.6.1-1.2.1-1.7.1-1.1 0-2.2 0-3.2.2-1 .2-1.9.8-2.6 1.6-.9.6-1.4 1.6-2 2.6"/><path d="m16.6 49.9l-.8 12.1h11.1l-1.3-12.8h-.8c-.1-.7-.2-1.4-1.1-3.2-1.5-3.3-7.4-2.1-9.7-1.5l-2 5.5c3.6.4 4.6-.1 4.6-.1" opacity=".2"/></g><path d="m17.4 50.4v-1.1c0 0-10.2 2.1-14-1.4-4.8-4.5 3.4-2 9.6-3.5 2.2-.6 8.1-1.7 9.7 1.5 1.7 3.5 1.3 4.5 1.3 4.5h-6.6" fill="#ffdd67"/><path fill="#c28fef" d="m16.3 62l.8-12.3h7.7l1.1 12.3z"/><path d="m47.4 49.9l.8 12.1h-11.1l1.3-12.8h.8c.1-.7.2-1.4 1.1-3.2 1.5-3.3 7.4-2.1 9.7-1.5l2 5.6c-3.6.3-4.6-.2-4.6-.2" opacity=".2" fill="#231f20"/><path d="m46.6 50.4v-1.1c0 0 10.2 2.1 14-1.4 4.8-4.5-3.4-2-9.6-3.5-2.2-.6-8.1-1.7-9.7 1.5-1.7 3.5-1.3 4.5-1.3 4.5h6.6" fill="#ffdd67"/><path fill="#c28fef" d="m47.7 62l-.8-12.3h-7.7l-1.1 12.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f938-1f3fb.svg b/riot/emojione/svg/1f938-1f3fb.svg new file mode 100644 index 0000000..41bb168 --- /dev/null +++ b/riot/emojione/svg/1f938-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m44.6 33.7l6.7 3.8 6.7 6.8-3.7 2.4-5.5-5.9-5.3-2.8z"/><path d="m55.2 45l-1.9 1.7c-.7.6-.8 1.6-.2 2.3l.8 1c.4.5 1 .7 1.6.5 1.1 1.2 2.9 2.5 5.2.5.4-.3 2.5-2.2.4-4.7-3-3.8-3-3.8-5.9-1.3"/><path d="m22.6 58.8c-2 1.5-4.6 1.3-4.6 2.2s1.6.9 3.9.9c2.1 0 4.5-1.9 5.6-.9 1.1.9 2.4.9 3.9.9 1.4 0 1.3-2.1 0-2.1-1.3 0-3-2.8-3.3-4-.7-2.8-1.5-8.5-1.5-8.5s-.6 1.5 2.6-4.3c0 0 2.4-5 .8-6.7-1.8-1.8-3.7-.2-5.8 5.3-2.1 5.4-2 5.5-2 5.5s0 0 1.4 7.9c.2 1.4 1 2.4-1 3.8"/><path d="m28.6 38.9c0-2 2.4-3.6 5.3-3.6 3 0 5.3 1.6 5.3 3.6 0 2-2.4 3.6-5.3 3.6-2.9 0-5.3-1.6-5.3-3.6"/></g><g fill="#3e4347"><path d="m29.2 43c0 0 .5-.8 2.8-.8 0-.2-.1-.4-.1-.6 0-2.3 1.8-4.1 4-4.1 1.4 0 2.6.8 3.4 1.9 0 0 0 0 2.1-.7l2.9.1c0 0 2.1-2.7 3.2-5.4 0 0-6.2.5-9.9-6.2l-5-2.4-4.3 3.4c0 0-2.3 3.8-2.3 9.7 0-.1 3.2.7 3.2 5.1"/><path d="m49.6 6.5l-3.8-1.1c-.4-1.4-.2-1.8-.2-1.8 0-.9.7-1.6 1.6-1.6h8.2c-.4 2.2-3.6 4.2-5.8 4.5"/></g><path d="m45.7 5.4l3.8 1.1c0 0-1.9 5.1-2.9 8.9-.3 1.2-1.2 1.6-1.6 2.1-2.4 3.1-7.1 6.4-7.1 6.4l-4.1-4.6c0 0 3.4-3.3 7-5.2.3-.2 1.7-1.3 1.9-2.4.3-2.4 2.6-4.3 3-6.3" fill="#ffe1bd"/><path d="m9.3 15.4l2.6-3c-.5-1.4-.8-1.6-.8-1.6-.5-.7-1.5-1-2.2-.5l-7 4.4c1.5 1.7 5.4 1.8 7.4.7" fill="#3e4347"/><path d="m11.9 12.4l-2.6 3c0 0 4.1 2.8 6.5 5.9.8 1 1.8 1 2.3 1.3 3.4 1.9 9 3 9 3l2-5.9c0 0-5.3-1.9-9.3-2.2-.4 0-1 0-1.8-.9-1.5-1.7-4.6-2.8-6.1-4.2" fill="#ffe1bd"/><path d="m22.6 25.1c0 0 .6-4.3 4-7 0 0 4.3 1.9 5.3 1.8 1-.1 4.5-3.4 4.5-3.4s3.4 1.9 5.8 5.8l-4.6 4.9c0 0-2.6-1.3-9.3 1 0 0-2.6-.9-5.7-3.1" fill="#428bc1"/><path d="m23.1 42.5c0 0 3.7.8 4.9 3.6 0 0 .8-2.7 2.6-5.4l-4.3-3.8c0 0-1.6 2.1-3.2 5.6" fill="#3e4347"/><path d="m48.7 47.2l-1.6-1.3-16.3 6.4v2.1c2.6 6.6 5.2 8.7 12.5 6 7.3-2.9 8-6.5 5.4-13.2" fill="#594640"/><path d="m31.5 54c-.1-.4-.2-.8-.1-1 .1-.4.4-.8.4-.8s.2.8.6 1.8c2.8 5.9 2 2.8 8.7.2 6.7-2.6 8.1.2 6.2-6-.4-1-.8-1.7-.8-1.7s.5.1.8.3c.2.2.4.5.6.8.7-.1 1.5-.5.7-2.4-.4-1.1-1.2-1.9-2.7-1.4-2-3.6-8-4.1-10.3-3.2-2.3.9-6.3 5.4-5.4 9.4-1.4.6-1.4 1.7-1 2.9.9 1.7 1.7 1.6 2.3 1.1" fill="#ffe1bd"/><g fill="#664e27"><circle cx="42.3" cy="47.5" r="1.5"/><circle cx="35.5" cy="50.2" r="1.5"/><path d="m35 45.5c1-1.7 2.6-2.3 4.5-1.7.2.1.3-.2.1-.4-.7-.6-1.9-1-3-.6s-1.7 1.5-1.9 2.5c-.1.2.2.4.3.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f938-1f3fc.svg b/riot/emojione/svg/1f938-1f3fc.svg new file mode 100644 index 0000000..17ccde4 --- /dev/null +++ b/riot/emojione/svg/1f938-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m44.6 33.7l6.7 3.8 6.7 6.8-3.7 2.4-5.5-5.9-5.3-2.8z"/><path d="m55.2 45l-1.9 1.7c-.7.6-.8 1.6-.2 2.3l.8 1c.4.5 1 .7 1.6.5 1.1 1.2 2.9 2.5 5.2.5.4-.3 2.5-2.2.4-4.7-3-3.8-3-3.8-5.9-1.3"/><path d="m22.6 58.8c-2 1.5-4.6 1.3-4.6 2.2s1.6.9 3.9.9c2.1 0 4.5-1.9 5.6-.9 1.1.9 2.4.9 3.9.9 1.4 0 1.3-2.1 0-2.1-1.3 0-3-2.8-3.3-4-.7-2.8-1.5-8.5-1.5-8.5s-.6 1.5 2.6-4.3c0 0 2.4-5 .8-6.7-1.8-1.8-3.7-.2-5.8 5.3-2.1 5.4-2 5.5-2 5.5s0 0 1.4 7.9c.2 1.4 1 2.4-1 3.8"/><path d="m28.6 38.9c0-2 2.4-3.6 5.3-3.6 3 0 5.3 1.6 5.3 3.6 0 2-2.4 3.6-5.3 3.6-2.9 0-5.3-1.6-5.3-3.6"/></g><g fill="#3e4347"><path d="m29.2 43c0 0 .5-.8 2.8-.8 0-.2-.1-.4-.1-.6 0-2.3 1.8-4.1 4-4.1 1.4 0 2.6.8 3.4 1.9 0 0 0 0 2.1-.7l2.9.1c0 0 2.1-2.7 3.2-5.4 0 0-6.2.5-9.9-6.2l-5-2.4-4.3 3.4c0 0-2.3 3.8-2.3 9.7 0-.1 3.2.7 3.2 5.1"/><path d="m49.6 6.5l-3.8-1.1c-.4-1.4-.2-1.8-.2-1.8 0-.9.7-1.6 1.6-1.6h8.2c-.4 2.2-3.6 4.2-5.8 4.5"/></g><path d="m45.7 5.4l3.8 1.1c0 0-1.9 5.1-2.9 8.9-.3 1.2-1.2 1.6-1.6 2.1-2.4 3.1-7.1 6.4-7.1 6.4l-4.1-4.6c0 0 3.4-3.3 7-5.2.3-.2 1.7-1.3 1.9-2.4.3-2.4 2.6-4.3 3-6.3" fill="#fed0ac"/><path d="m9.3 15.4l2.6-3c-.5-1.4-.8-1.6-.8-1.6-.5-.7-1.5-1-2.2-.5l-7 4.4c1.5 1.7 5.4 1.8 7.4.7" fill="#3e4347"/><path d="m11.9 12.4l-2.6 3c0 0 4.1 2.8 6.5 5.9.8 1 1.8 1 2.3 1.3 3.4 1.9 9 3 9 3l2-5.9c0 0-5.3-1.9-9.3-2.2-.4 0-1 0-1.8-.9-1.5-1.7-4.6-2.8-6.1-4.2" fill="#fed0ac"/><path d="m22.6 25.1c0 0 .6-4.3 4-7 0 0 4.3 1.9 5.3 1.8 1-.1 4.5-3.4 4.5-3.4s3.4 1.9 5.8 5.8l-4.6 4.9c0 0-2.6-1.3-9.3 1 0 0-2.6-.9-5.7-3.1" fill="#428bc1"/><path d="m23.1 42.5c0 0 3.7.8 4.9 3.6 0 0 .8-2.7 2.6-5.4l-4.3-3.8c0 0-1.6 2.1-3.2 5.6" fill="#3e4347"/><path d="m48.7 47.2l-1.6-1.3-16.3 6.4v2.1c2.6 6.6 5.2 8.7 12.5 6 7.3-2.9 8-6.5 5.4-13.2" fill="#dbb471"/><path d="m31.5 54c-.1-.4-.2-.8-.1-1 .1-.4.4-.8.4-.8s.2.8.6 1.8c2.8 5.9 2 2.8 8.7.2 6.7-2.6 8.1.2 6.2-6-.4-1-.8-1.7-.8-1.7s.5.1.8.3c.2.2.4.5.6.8.7-.1 1.5-.5.7-2.4-.4-1.1-1.2-1.9-2.7-1.4-2-3.6-8-4.1-10.3-3.2-2.3.9-6.3 5.4-5.4 9.4-1.4.6-1.4 1.7-1 2.9.9 1.7 1.7 1.6 2.3 1.1" fill="#fed0ac"/><g fill="#664e27"><circle cx="42.3" cy="47.5" r="1.5"/><circle cx="35.5" cy="50.2" r="1.5"/><path d="m35 45.5c1-1.7 2.6-2.3 4.5-1.7.2.1.3-.2.1-.4-.7-.6-1.9-1-3-.6-1.1.4-1.7 1.5-1.9 2.5-.1.2.2.4.3.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f938-1f3fd.svg b/riot/emojione/svg/1f938-1f3fd.svg new file mode 100644 index 0000000..e76db7a --- /dev/null +++ b/riot/emojione/svg/1f938-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m44.6 33.7l6.7 3.8 6.7 6.8-3.7 2.4-5.5-5.9-5.3-2.8z"/><path d="m55.2 45l-1.9 1.7c-.7.6-.8 1.6-.2 2.3l.8 1c.4.5 1 .7 1.6.5 1.1 1.2 2.9 2.5 5.2.5.4-.3 2.5-2.2.4-4.7-3-3.8-3-3.8-5.9-1.3"/><path d="m22.6 58.8c-2 1.5-4.6 1.3-4.6 2.2s1.6.9 3.9.9c2.1 0 4.5-1.9 5.6-.9 1.1.9 2.4.9 3.9.9 1.4 0 1.3-2.1 0-2.1-1.3 0-3-2.8-3.3-4-.7-2.8-1.5-8.5-1.5-8.5s-.6 1.5 2.6-4.3c0 0 2.4-5 .8-6.7-1.8-1.8-3.7-.2-5.8 5.3-2.1 5.4-2 5.5-2 5.5s0 0 1.4 7.9c.2 1.4 1 2.4-1 3.8"/><path d="m28.6 38.9c0-2 2.4-3.6 5.3-3.6 3 0 5.3 1.6 5.3 3.6 0 2-2.4 3.6-5.3 3.6-2.9 0-5.3-1.6-5.3-3.6"/></g><g fill="#3e4347"><path d="m29.2 43c0 0 .5-.8 2.8-.8 0-.2-.1-.4-.1-.6 0-2.3 1.8-4.1 4-4.1 1.4 0 2.6.8 3.4 1.9 0 0 0 0 2.1-.7l2.9.1c0 0 2.1-2.7 3.2-5.4 0 0-6.2.5-9.9-6.2l-5-2.4-4.3 3.4c0 0-2.3 3.8-2.3 9.7 0-.1 3.2.7 3.2 5.1"/><path d="m49.6 6.5l-3.8-1.1c-.4-1.4-.2-1.8-.2-1.8 0-.9.7-1.6 1.6-1.6h8.2c-.4 2.2-3.6 4.2-5.8 4.5"/></g><path d="m45.7 5.4l3.8 1.1c0 0-1.9 5.1-2.9 8.9-.3 1.2-1.2 1.6-1.6 2.1-2.4 3.1-7.1 6.4-7.1 6.4l-4.1-4.6c0 0 3.4-3.3 7-5.2.3-.2 1.7-1.3 1.9-2.4.3-2.4 2.6-4.3 3-6.3" fill="#d6a57c"/><path d="m9.3 15.4l2.6-3c-.5-1.4-.8-1.6-.8-1.6-.5-.7-1.5-1-2.2-.5l-7 4.4c1.5 1.7 5.4 1.8 7.4.7" fill="#3e4347"/><path d="m11.9 12.4l-2.6 3c0 0 4.1 2.8 6.5 5.9.8 1 1.8 1 2.3 1.3 3.4 1.9 9 3 9 3l2-5.9c0 0-5.3-1.9-9.3-2.2-.4 0-1 0-1.8-.9-1.5-1.7-4.6-2.8-6.1-4.2" fill="#d6a57c"/><path d="m22.6 25.1c0 0 .6-4.3 4-7 0 0 4.3 1.9 5.3 1.8 1-.1 4.5-3.4 4.5-3.4s3.4 1.9 5.8 5.8l-4.6 4.9c0 0-2.6-1.3-9.3 1 0 0-2.6-.9-5.7-3.1" fill="#428bc1"/><path d="m23.1 42.5c0 0 3.7.8 4.9 3.6 0 0 .8-2.7 2.6-5.4l-4.3-3.8c0 0-1.6 2.1-3.2 5.6" fill="#3e4347"/><path d="m48.7 47.2l-1.6-1.3-16.3 6.4v2.1c2.6 6.6 5.2 8.7 12.5 6 7.3-2.9 8-6.5 5.4-13.2" fill="#594640"/><path d="m31.5 54c-.1-.4-.2-.8-.1-1 .1-.4.4-.8.4-.8s.2.8.6 1.8c2.8 5.9 2 2.8 8.7.2 6.7-2.6 8.1.2 6.2-6-.4-1-.8-1.7-.8-1.7s.5.1.8.3c.2.2.4.5.6.8.7-.1 1.5-.5.7-2.4-.4-1.1-1.2-1.9-2.7-1.4-2-3.6-8-4.1-10.3-3.2-2.3.9-6.3 5.4-5.4 9.4-1.4.6-1.4 1.7-1 2.9.9 1.7 1.7 1.6 2.3 1.1" fill="#d6a57c"/><g fill="#664e27"><circle cx="42.3" cy="47.5" r="1.5"/><circle cx="35.5" cy="50.2" r="1.5"/><path d="m35 45.5c1-1.7 2.6-2.3 4.5-1.7.2.1.3-.2.1-.4-.7-.6-1.9-1-3-.6s-1.7 1.5-1.9 2.5c-.1.2.2.4.3.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f938-1f3fe.svg b/riot/emojione/svg/1f938-1f3fe.svg new file mode 100644 index 0000000..83a3dd3 --- /dev/null +++ b/riot/emojione/svg/1f938-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m44.6 33.7l6.7 3.8 6.7 6.8-3.7 2.4-5.5-5.9-5.3-2.8z"/><path d="m55.2 45l-1.9 1.7c-.7.6-.8 1.6-.2 2.3l.8 1c.4.5 1 .7 1.6.5 1.1 1.2 2.9 2.5 5.2.5.4-.3 2.5-2.2.4-4.7-3-3.8-3-3.8-5.9-1.3"/><path d="m22.6 58.8c-2 1.5-4.6 1.3-4.6 2.2s1.6.9 3.9.9c2.1 0 4.5-1.9 5.6-.9 1.1.9 2.4.9 3.9.9 1.4 0 1.3-2.1 0-2.1-1.3 0-3-2.8-3.3-4-.7-2.8-1.5-8.5-1.5-8.5s-.6 1.5 2.6-4.3c0 0 2.4-5 .8-6.7-1.8-1.8-3.7-.2-5.8 5.3-2.1 5.4-2 5.5-2 5.5s0 0 1.4 7.9c.2 1.4 1 2.4-1 3.8"/><path d="m28.6 38.9c0-2 2.4-3.6 5.3-3.6 3 0 5.3 1.6 5.3 3.6 0 2-2.4 3.6-5.3 3.6-2.9 0-5.3-1.6-5.3-3.6"/></g><g fill="#3e4347"><path d="m29.2 43c0 0 .5-.8 2.8-.8 0-.2-.1-.4-.1-.6 0-2.3 1.8-4.1 4-4.1 1.4 0 2.6.8 3.4 1.9 0 0 0 0 2.1-.7l2.9.1c0 0 2.1-2.7 3.2-5.4 0 0-6.2.5-9.9-6.2l-5-2.4-4.3 3.4c0 0-2.3 3.8-2.3 9.7 0-.1 3.2.7 3.2 5.1"/><path d="m49.6 6.5l-3.8-1.1c-.4-1.4-.2-1.8-.2-1.8 0-.9.7-1.6 1.6-1.6h8.2c-.4 2.2-3.6 4.2-5.8 4.5"/></g><path d="m45.7 5.4l3.8 1.1c0 0-1.9 5.1-2.9 8.9-.3 1.2-1.2 1.6-1.6 2.1-2.4 3.1-7.1 6.4-7.1 6.4l-4.1-4.6c0 0 3.4-3.3 7-5.2.3-.2 1.7-1.3 1.9-2.4.3-2.4 2.6-4.3 3-6.3" fill="#b47d56"/><path d="m9.3 15.4l2.6-3c-.5-1.4-.8-1.6-.8-1.6-.5-.7-1.5-1-2.2-.5l-7 4.4c1.5 1.7 5.4 1.8 7.4.7" fill="#3e4347"/><path d="m11.9 12.4l-2.6 3c0 0 4.1 2.8 6.5 5.9.8 1 1.8 1 2.3 1.3 3.4 1.9 9 3 9 3l2-5.9c0 0-5.3-1.9-9.3-2.2-.4 0-1 0-1.8-.9-1.5-1.7-4.6-2.8-6.1-4.2" fill="#b47d56"/><path d="m22.6 25.1c0 0 .6-4.3 4-7 0 0 4.3 1.9 5.3 1.8 1-.1 4.5-3.4 4.5-3.4s3.4 1.9 5.8 5.8l-4.6 4.9c0 0-2.6-1.3-9.3 1 0 0-2.6-.9-5.7-3.1" fill="#428bc1"/><path d="m23.1 42.5c0 0 3.7.8 4.9 3.6 0 0 .8-2.7 2.6-5.4l-4.3-3.8c0 0-1.6 2.1-3.2 5.6" fill="#3e4347"/><path d="m48.7 47.2l-1.6-1.3-16.3 6.4v2.1c2.6 6.6 5.2 8.7 12.5 6 7.3-2.9 8-6.5 5.4-13.2" fill="#231f20"/><path d="m31.5 54c-.1-.4-.2-.8-.1-1 .1-.4.4-.8.4-.8s.2.8.6 1.8c2.8 5.9 2 2.8 8.7.2 6.7-2.6 8.1.2 6.2-6-.4-1-.8-1.7-.8-1.7s.5.1.8.3c.2.2.4.5.6.8.7-.1 1.5-.5.7-2.4-.4-1.1-1.2-1.9-2.7-1.4-2-3.6-8-4.1-10.3-3.2-2.3.9-6.3 5.4-5.4 9.4-1.4.6-1.4 1.7-1 2.9.9 1.7 1.7 1.6 2.3 1.1" fill="#b47d56"/><g fill="#664e27"><circle cx="42.3" cy="47.5" r="1.5"/><circle cx="35.5" cy="50.2" r="1.5"/><path d="m35 45.5c1-1.7 2.6-2.3 4.5-1.7.2.1.3-.2.1-.4-.7-.6-1.9-1-3-.6s-1.7 1.5-1.9 2.5c-.1.2.2.4.3.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f938-1f3ff.svg b/riot/emojione/svg/1f938-1f3ff.svg new file mode 100644 index 0000000..347df3b --- /dev/null +++ b/riot/emojione/svg/1f938-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m44.6 33.7l6.7 3.8 6.7 6.8-3.7 2.4-5.5-5.9-5.3-2.8z"/><path d="m55.2 45l-1.9 1.7c-.7.6-.8 1.6-.2 2.3l.8 1c.4.5 1 .7 1.6.5 1.1 1.2 2.9 2.5 5.2.5.4-.3 2.5-2.2.4-4.7-3-3.8-3-3.8-5.9-1.3"/><path d="m22.6 58.8c-2 1.5-4.6 1.3-4.6 2.2s1.6.9 3.9.9c2.1 0 4.5-1.9 5.6-.9 1.1.9 2.4.9 3.9.9 1.4 0 1.3-2.1 0-2.1-1.3 0-3-2.8-3.3-4-.7-2.8-1.5-8.5-1.5-8.5s-.6 1.5 2.6-4.3c0 0 2.4-5 .8-6.7-1.8-1.8-3.7-.2-5.8 5.3-2.1 5.4-2 5.5-2 5.5s0 0 1.4 7.9c.2 1.4 1 2.4-1 3.8"/><path d="m28.6 38.9c0-2 2.4-3.6 5.3-3.6 3 0 5.3 1.6 5.3 3.6 0 2-2.4 3.6-5.3 3.6-2.9 0-5.3-1.6-5.3-3.6"/></g><g fill="#3e4347"><path d="m29.2 43c0 0 .5-.8 2.8-.8 0-.2-.1-.4-.1-.6 0-2.3 1.8-4.1 4-4.1 1.4 0 2.6.8 3.4 1.9 0 0 0 0 2.1-.7l2.9.1c0 0 2.1-2.7 3.2-5.4 0 0-6.2.5-9.9-6.2l-5-2.4-4.3 3.4c0 0-2.3 3.8-2.3 9.7 0-.1 3.2.7 3.2 5.1"/><path d="m49.6 6.5l-3.8-1.1c-.4-1.4-.2-1.8-.2-1.8 0-.9.7-1.6 1.6-1.6h8.2c-.4 2.2-3.6 4.2-5.8 4.5"/></g><path d="m45.7 5.4l3.8 1.1c0 0-1.9 5.1-2.9 8.9-.3 1.2-1.2 1.6-1.6 2.1-2.4 3.1-7.1 6.4-7.1 6.4l-4.1-4.6c0 0 3.4-3.3 7-5.2.3-.2 1.7-1.3 1.9-2.4.3-2.4 2.6-4.3 3-6.3" fill="#8a6859"/><path d="m9.3 15.4l2.6-3c-.5-1.4-.8-1.6-.8-1.6-.5-.7-1.5-1-2.2-.5l-7 4.4c1.5 1.7 5.4 1.8 7.4.7" fill="#3e4347"/><path d="m11.9 12.4l-2.6 3c0 0 4.1 2.8 6.5 5.9.8 1 1.8 1 2.3 1.3 3.4 1.9 9 3 9 3l2-5.9c0 0-5.3-1.9-9.3-2.2-.4 0-1 0-1.8-.9-1.5-1.7-4.6-2.8-6.1-4.2" fill="#8a6859"/><path d="m22.6 25.1c0 0 .6-4.3 4-7 0 0 4.3 1.9 5.3 1.8 1-.1 4.5-3.4 4.5-3.4s3.4 1.9 5.8 5.8l-4.6 4.9c0 0-2.6-1.3-9.3 1 0 0-2.6-.9-5.7-3.1" fill="#428bc1"/><path d="m23.1 42.5c0 0 3.7.8 4.9 3.6 0 0 .8-2.7 2.6-5.4l-4.3-3.8c0 0-1.6 2.1-3.2 5.6" fill="#3e4347"/><path d="m48.7 47.2l-1.6-1.3-16.3 6.4v2.1c2.6 6.6 5.2 8.7 12.5 6 7.3-2.9 8-6.5 5.4-13.2" fill="#231f20"/><path d="m31.5 54c-.1-.4-.2-.8-.1-1 .1-.4.4-.8.4-.8s.2.8.6 1.8c2.8 5.9 2 2.8 8.7.2 6.7-2.6 8.1.2 6.2-6-.4-1-.8-1.7-.8-1.7s.5.1.8.3c.2.2.4.5.6.8.7-.1 1.5-.5.7-2.4-.4-1.1-1.2-1.9-2.7-1.4-2-3.6-8-4.1-10.3-3.2-2.3.9-6.3 5.4-5.4 9.4-1.4.6-1.4 1.7-1 2.9.9 1.7 1.7 1.6 2.3 1.1" fill="#8a6859"/><g fill="#574137"><circle cx="42.3" cy="47.5" r="1.5"/><circle cx="35.5" cy="50.2" r="1.5"/><path d="m35 45.5c1-1.7 2.6-2.3 4.5-1.7.2.1.3-.2.1-.4-.7-.6-1.9-1-3-.6s-1.7 1.5-1.9 2.5c-.1.2.2.4.3.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f938.svg b/riot/emojione/svg/1f938.svg new file mode 100644 index 0000000..d3c2a1a --- /dev/null +++ b/riot/emojione/svg/1f938.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m44.6 33.7l6.7 3.8 6.7 6.8-3.7 2.4-5.5-5.9-5.3-2.8z"/><path d="m55.2 45l-1.9 1.7c-.7.6-.8 1.6-.2 2.3l.8 1c.4.5 1 .7 1.6.5 1.1 1.2 2.9 2.5 5.2.5.4-.3 2.5-2.2.4-4.7-3-3.8-3-3.8-5.9-1.3"/><path d="m22.6 58.8c-2 1.5-4.6 1.3-4.6 2.2s1.6.9 3.9.9c2.1 0 4.5-1.9 5.6-.9 1.1.9 2.4.9 3.9.9 1.4 0 1.3-2.1 0-2.1-1.3 0-3-2.8-3.3-4-.7-2.8-1.5-8.5-1.5-8.5s-.6 1.5 2.6-4.3c0 0 2.4-5 .8-6.7-1.8-1.8-3.7-.2-5.8 5.3-2.1 5.4-2 5.5-2 5.5s0 0 1.4 7.9c.2 1.4 1 2.4-1 3.8"/><path d="m28.6 38.9c0-2 2.4-3.6 5.3-3.6 3 0 5.3 1.6 5.3 3.6 0 2-2.4 3.6-5.3 3.6-2.9 0-5.3-1.6-5.3-3.6"/></g><g fill="#3e4347"><path d="m29.2 43c0 0 .5-.8 2.8-.8 0-.2-.1-.4-.1-.6 0-2.3 1.8-4.1 4-4.1 1.4 0 2.6.8 3.4 1.9 0 0 0 0 2.1-.7l2.9.1c0 0 2.1-2.7 3.2-5.4 0 0-6.2.5-9.9-6.2l-5-2.4-4.3 3.4c0 0-2.3 3.8-2.3 9.7 0-.1 3.2.7 3.2 5.1"/><path d="m49.6 6.5l-3.8-1.1c-.4-1.4-.2-1.8-.2-1.8 0-.9.7-1.6 1.6-1.6h8.2c-.4 2.2-3.6 4.2-5.8 4.5"/></g><path d="m45.7 5.4l3.8 1.1c0 0-1.9 5.1-2.9 8.9-.3 1.2-1.2 1.6-1.6 2.1-2.4 3.1-7.1 6.4-7.1 6.4l-4.1-4.6c0 0 3.4-3.3 7-5.2.3-.2 1.7-1.3 1.9-2.4.3-2.4 2.6-4.3 3-6.3" fill="#ffdd67"/><path d="m9.3 15.4l2.6-3c-.5-1.4-.8-1.6-.8-1.6-.5-.7-1.5-1-2.2-.5l-7 4.4c1.5 1.7 5.4 1.8 7.4.7" fill="#3e4347"/><path d="m11.9 12.4l-2.6 3c0 0 4.1 2.8 6.5 5.9.8 1 1.8 1 2.3 1.3 3.4 1.9 9 3 9 3l2-5.9c0 0-5.3-1.9-9.3-2.2-.4 0-1 0-1.8-.9-1.5-1.7-4.6-2.8-6.1-4.2" fill="#ffdd67"/><path d="m22.6 25.1c0 0 .6-4.3 4-7 0 0 4.3 1.9 5.3 1.8 1-.1 4.5-3.4 4.5-3.4s3.4 1.9 5.8 5.8l-4.6 4.9c0 0-2.6-1.3-9.3 1 0 0-2.6-.9-5.7-3.1" fill="#428bc1"/><path d="m23.1 42.5c0 0 3.7.8 4.9 3.6 0 0 .8-2.7 2.6-5.4l-4.3-3.8c0 0-1.6 2.1-3.2 5.6" fill="#3e4347"/><path d="m48.7 47.2l-1.6-1.3-16.3 6.4v2.1c2.6 6.6 5.2 8.7 12.5 6 7.3-2.9 8-6.5 5.4-13.2" fill="#ffb300"/><path d="m31.5 54c-.1-.4-.2-.8-.1-1 .1-.4.4-.8.4-.8s.2.8.6 1.8c2.8 5.9 2 2.8 8.7.2 6.7-2.6 8.1.2 6.2-6-.4-1-.8-1.7-.8-1.7s.5.1.8.3c.2.2.4.5.6.8.7-.1 1.5-.5.7-2.4-.4-1.1-1.2-1.9-2.7-1.4-2-3.6-8-4.1-10.3-3.2-2.3.9-6.3 5.4-5.4 9.4-1.4.6-1.4 1.7-1 2.9.9 1.7 1.7 1.6 2.3 1.1" fill="#ffdd67"/><g fill="#937237"><circle cx="42.3" cy="47.5" r="1.5"/><circle cx="35.5" cy="50.2" r="1.5"/><path d="m35 45.5c1-1.7 2.6-2.3 4.5-1.7.2.1.3-.2.1-.4-.7-.6-1.9-1-3-.6-1.1.4-1.7 1.5-1.9 2.5-.1.2.2.4.3.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f939-1f3fb.svg b/riot/emojione/svg/1f939-1f3fb.svg new file mode 100644 index 0000000..db37b39 --- /dev/null +++ b/riot/emojione/svg/1f939-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48 6c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#42ade2"/><circle cx="6" cy="30" r="4" fill="#c28fef"/><path d="m17 10c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ed4c5c"/><path d="m62 24c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ffce31"/><circle cx="54" cy="53" r="4" fill="#83bf4f"/><path d="m57 56.1l-1.3 2.6 2.5 1.5c0 0 .8-2.4 1-3.2.3-1.4-1.4-2.3-2.2-.9" fill="#e6b796"/><g fill="#3b946f"><path d="m18 56.3c2.2 0 3-1.6 3.5-2.6 1.1-2.6 4.1-10.5 4.1-10.5h-2.7c-1.5 0-2.4.7-2.7 1.4l-2.8 7.4h-3.3l1.2 2.6c.4.6 1.2 1.7 2.7 1.7"/><path d="m50.3 61.6c-2.2 0-2.5-.8-3.1-2.7l-5.5-15.7h2.7c1.5 0 2.4.7 2.7 1.4l3.8 12.6h3.3l-1.2 2.7c-.4.6-1.2 1.7-2.7 1.7"/></g><path d="m13.2 47.6l1.3 2.6-2.5 1.5c0 0-.8-2.4-1-3.2-.3-1.5 1.4-2.3 2.2-.9" fill="#e6b796"/><g fill="#ffe1bd"><path d="m11.7 51.5v-2.6c.3-1.9 9.4-1.9 9.1 0v2.6c-.2 1.9-9.3 1.9-9.1 0"/><path d="m58.5 60v-2.6c-.3-1.9-9.4-1.9-9.1 0v2.6c.2 1.9 9.3 1.9 9.1 0"/><path d="m36 41.6v-1.7h-4.7v1.7c0 1-.7 1.7-1.6 1.7h7.9c-.9 0-1.6-.7-1.6-1.7"/><path d="m27.5 43.2h12.3v7.1h-12.3z"/></g><path d="m44.2 43.2h-5.9c-.5 2.2-2.4 3.9-4.7 3.9-2.3 0-4.2-1.7-4.7-3.9h-5.9v18.8h21.1l.1-18.8" fill="#47b892"/><path d="m20.1 26.3l1.4 2.6h24.4l1.1-2.7c0-9.8-2.3-14-13.1-14.1-11.1-.1-13.8 4.3-13.8 14.2" fill="#594640"/><path d="m45.9 26.2c-.1.6-.2 1.1-.4 1.4-.3.5-.9.8-.9.8s.2-1.1.1-2.6c-.6-9-1.1-4.7-11.1-4.7-10 0-10.5-4.3-11.1 4.7-.1 1.5.1 2.6.1 2.6s-.6-.3-.9-.8c-.2-.3-.3-.8-.4-1.4-.9-.2-2.2 0-2.2 2.7 0 1.7.6 3.1 2.7 3.2.7 5.6 8.3 9.4 11.7 9.4s10.9-3.8 11.7-9.4c2.1-.1 2.7-1.5 2.7-3.2.1-2.8-1.1-3-2-2.7" fill="#ffe1bd"/><g fill="#664e27"><circle cx="28.6" cy="27.1" r="2.1"/><circle cx="38.8" cy="27.1" r="2.1"/><path d="m37.7 34.7c0 1.5-2 2.3-4 2.3s-4-.8-4-2.3c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f939-1f3fc.svg b/riot/emojione/svg/1f939-1f3fc.svg new file mode 100644 index 0000000..bb834f7 --- /dev/null +++ b/riot/emojione/svg/1f939-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48 6c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#42ade2"/><circle cx="6" cy="30" r="4" fill="#c28fef"/><path d="m17 10c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ed4c5c"/><path d="m62 24c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ffce31"/><circle cx="54" cy="53" r="4" fill="#83bf4f"/><path d="m57 56.1l-1.3 2.6 2.5 1.5c0 0 .8-2.4 1-3.2.3-1.4-1.4-2.3-2.2-.9" fill="#e0a372"/><g fill="#3b946f"><path d="m18 56.3c2.2 0 3-1.6 3.5-2.6 1.1-2.6 4.1-10.5 4.1-10.5h-2.7c-1.5 0-2.4.7-2.7 1.4l-2.8 7.4h-3.3l1.2 2.6c.4.6 1.2 1.7 2.7 1.7"/><path d="m50.3 61.6c-2.2 0-2.5-.8-3.1-2.7l-5.5-15.7h2.7c1.5 0 2.4.7 2.7 1.4l3.8 12.6h3.3l-1.2 2.7c-.4.6-1.2 1.7-2.7 1.7"/></g><path d="m13.2 47.6l1.3 2.6-2.5 1.5c0 0-.8-2.4-1-3.2-.3-1.5 1.4-2.3 2.2-.9" fill="#e0a372"/><g fill="#fed0ac"><path d="m11.7 51.5v-2.6c.3-1.9 9.4-1.9 9.1 0v2.6c-.2 1.9-9.3 1.9-9.1 0"/><path d="m58.5 60v-2.6c-.3-1.9-9.4-1.9-9.1 0v2.6c.2 1.9 9.3 1.9 9.1 0"/><path d="m36 41.6v-1.7h-4.7v1.7c0 1-.7 1.7-1.6 1.7h7.9c-.9 0-1.6-.7-1.6-1.7"/><path d="m27.5 43.2h12.3v7.1h-12.3z"/></g><path d="m44.2 43.2h-5.9c-.5 2.2-2.4 3.9-4.7 3.9-2.3 0-4.2-1.7-4.7-3.9h-5.9v18.8h21.1l.1-18.8" fill="#47b892"/><path d="m20.1 26.3l1.4 2.6h24.4l1.1-2.7c0-9.8-2.3-14-13.1-14.1-11.1-.1-13.8 4.3-13.8 14.2" fill="#dbb471"/><path d="m45.9 26.2c-.1.6-.2 1.1-.4 1.4-.3.5-.9.8-.9.8s.2-1.1.1-2.6c-.6-9-1.1-4.7-11.1-4.7-10 0-10.5-4.3-11.1 4.7-.1 1.5.1 2.6.1 2.6s-.6-.3-.9-.8c-.2-.3-.3-.8-.4-1.4-.9-.2-2.2 0-2.2 2.7 0 1.7.6 3.1 2.7 3.2.7 5.6 8.3 9.4 11.7 9.4s10.9-3.8 11.7-9.4c2.1-.1 2.7-1.5 2.7-3.2.1-2.8-1.1-3-2-2.7" fill="#fed0ac"/><g fill="#664e27"><circle cx="28.5" cy="27.1" r="2.1"/><circle cx="38.8" cy="27.1" r="2.1"/><path d="m37.7 34.7c0 1.5-2 2.3-4 2.3-2 0-4-.8-4-2.3 0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f939-1f3fd.svg b/riot/emojione/svg/1f939-1f3fd.svg new file mode 100644 index 0000000..8c2b703 --- /dev/null +++ b/riot/emojione/svg/1f939-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48 6c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#42ade2"/><circle cx="6" cy="30" r="4" fill="#c28fef"/><path d="m17 10c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ed4c5c"/><path d="m62 24c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ffce31"/><circle cx="54" cy="53" r="4" fill="#83bf4f"/><path d="m57 56.1l-1.3 2.6 2.5 1.5c0 0 .8-2.4 1-3.2.3-1.4-1.4-2.3-2.2-.9" fill="#b58360"/><g fill="#3b946f"><path d="m18 56.3c2.2 0 3-1.6 3.5-2.6 1.1-2.6 4.1-10.5 4.1-10.5h-2.7c-1.5 0-2.4.7-2.7 1.4l-2.8 7.4h-3.3l1.2 2.6c.4.6 1.2 1.7 2.7 1.7"/><path d="m50.3 61.6c-2.2 0-2.5-.8-3.1-2.7l-5.5-15.7h2.7c1.5 0 2.4.7 2.7 1.4l3.8 12.6h3.3l-1.2 2.7c-.4.6-1.2 1.7-2.7 1.7"/></g><path d="m13.2 47.6l1.3 2.6-2.5 1.5c0 0-.8-2.4-1-3.2-.3-1.5 1.4-2.3 2.2-.9" fill="#b58360"/><g fill="#d6a57c"><path d="m11.7 51.5v-2.6c.3-1.9 9.4-1.9 9.1 0v2.6c-.2 1.9-9.3 1.9-9.1 0"/><path d="m58.5 60v-2.6c-.3-1.9-9.4-1.9-9.1 0v2.6c.2 1.9 9.3 1.9 9.1 0"/><path d="m36 41.6v-1.7h-4.7v1.7c0 1-.7 1.7-1.6 1.7h7.9c-.9 0-1.6-.7-1.6-1.7"/><path d="m27.5 43.2h12.3v7.1h-12.3z"/></g><path d="m44.2 43.2h-5.9c-.5 2.2-2.4 3.9-4.7 3.9-2.3 0-4.2-1.7-4.7-3.9h-5.9v18.8h21.1l.1-18.8" fill="#47b892"/><path d="m20.1 26.3l1.4 2.6h24.4l1.1-2.7c0-9.8-2.3-14-13.1-14.1-11.1-.1-13.8 4.3-13.8 14.2" fill="#594640"/><path d="m45.9 26.2c-.1.6-.2 1.1-.4 1.4-.3.5-.9.8-.9.8s.2-1.1.1-2.6c-.6-9-1.1-4.7-11.1-4.7-10 0-10.5-4.3-11.1 4.7-.1 1.5.1 2.6.1 2.6s-.6-.3-.9-.8c-.2-.3-.3-.8-.4-1.4-.9-.2-2.2 0-2.2 2.7 0 1.7.6 3.1 2.7 3.2.7 5.6 8.3 9.4 11.7 9.4s10.9-3.8 11.7-9.4c2.1-.1 2.7-1.5 2.7-3.2.1-2.8-1.1-3-2-2.7" fill="#d6a57c"/><g fill="#664e27"><circle cx="28.6" cy="27.1" r="2.1"/><circle cx="38.8" cy="27.1" r="2.1"/><path d="m37.7 34.7c0 1.5-2 2.3-4 2.3s-4-.8-4-2.3c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f939-1f3fe.svg b/riot/emojione/svg/1f939-1f3fe.svg new file mode 100644 index 0000000..fcf0992 --- /dev/null +++ b/riot/emojione/svg/1f939-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48 6c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#42ade2"/><circle cx="6" cy="30" r="4" fill="#c28fef"/><path d="m17 10c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ed4c5c"/><path d="m62 24c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ffce31"/><circle cx="54" cy="53" r="4" fill="#83bf4f"/><path d="m57 56.1l-1.3 2.6 2.5 1.5c0 0 .8-2.4 1-3.2.3-1.4-1.4-2.3-2.2-.9" fill="#935e3e"/><g fill="#3b946f"><path d="m18 56.3c2.2 0 3-1.6 3.5-2.6 1.1-2.6 4.1-10.5 4.1-10.5h-2.7c-1.5 0-2.4.7-2.7 1.4l-2.8 7.4h-3.3l1.2 2.6c.4.6 1.2 1.7 2.7 1.7"/><path d="m50.3 61.6c-2.2 0-2.5-.8-3.1-2.7l-5.5-15.7h2.7c1.5 0 2.4.7 2.7 1.4l3.8 12.6h3.3l-1.2 2.7c-.4.6-1.2 1.7-2.7 1.7"/></g><path d="m13.2 47.6l1.3 2.6-2.5 1.5c0 0-.8-2.4-1-3.2-.3-1.5 1.4-2.3 2.2-.9" fill="#935e3e"/><g fill="#b47d56"><path d="m11.7 51.5v-2.6c.3-1.9 9.4-1.9 9.1 0v2.6c-.2 1.9-9.3 1.9-9.1 0"/><path d="m58.5 60v-2.6c-.3-1.9-9.4-1.9-9.1 0v2.6c.2 1.9 9.3 1.9 9.1 0"/><path d="m36 41.6v-1.7h-4.7v1.7c0 1-.7 1.7-1.6 1.7h7.9c-.9 0-1.6-.7-1.6-1.7"/><path d="m27.5 43.2h12.3v7.1h-12.3z"/></g><path d="m44.2 43.2h-5.9c-.5 2.2-2.4 3.9-4.7 3.9-2.3 0-4.2-1.7-4.7-3.9h-5.9v18.8h21.1l.1-18.8" fill="#47b892"/><path d="m20.1 26.3l1.4 2.6h24.4l1.1-2.7c0-9.8-2.3-14-13.1-14.1-11.1-.1-13.8 4.3-13.8 14.2" fill="#231f20"/><path d="m45.9 26.2c-.1.6-.2 1.1-.4 1.4-.3.5-.9.8-.9.8s.2-1.1.1-2.6c-.6-9-1.1-4.7-11.1-4.7-10 0-10.5-4.3-11.1 4.7-.1 1.5.1 2.6.1 2.6s-.6-.3-.9-.8c-.2-.3-.3-.8-.4-1.4-.9-.2-2.2 0-2.2 2.7 0 1.7.6 3.1 2.7 3.2.7 5.6 8.3 9.4 11.7 9.4s10.9-3.8 11.7-9.4c2.1-.1 2.7-1.5 2.7-3.2.1-2.8-1.1-3-2-2.7" fill="#b47d56"/><g fill="#664e27"><circle cx="28.6" cy="27.1" r="2.1"/><circle cx="38.8" cy="27.1" r="2.1"/><path d="m37.7 34.7c0 1.5-2 2.3-4 2.3s-4-.8-4-2.3c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f939-1f3ff.svg b/riot/emojione/svg/1f939-1f3ff.svg new file mode 100644 index 0000000..b1d6168 --- /dev/null +++ b/riot/emojione/svg/1f939-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48 6c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#42ade2"/><circle cx="6" cy="30" r="4" fill="#c28fef"/><path d="m17 10c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ed4c5c"/><path d="m62 24c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ffce31"/><circle cx="54" cy="53" r="4" fill="#83bf4f"/><path d="m57 56.1l-1.3 2.6 2.5 1.5c0 0 .8-2.4 1-3.2.3-1.4-1.4-2.3-2.2-.9" fill="#705041"/><g fill="#3b946f"><path d="m18 56.3c2.2 0 3-1.6 3.5-2.6 1.1-2.6 4.1-10.5 4.1-10.5h-2.7c-1.5 0-2.4.7-2.7 1.4l-2.8 7.4h-3.3l1.2 2.6c.4.6 1.2 1.7 2.7 1.7"/><path d="m50.3 61.6c-2.2 0-2.5-.8-3.1-2.7l-5.5-15.7h2.7c1.5 0 2.4.7 2.7 1.4l3.8 12.6h3.3l-1.2 2.7c-.4.6-1.2 1.7-2.7 1.7"/></g><path d="m13.2 47.6l1.3 2.6-2.5 1.5c0 0-.8-2.4-1-3.2-.3-1.5 1.4-2.3 2.2-.9" fill="#705041"/><g fill="#8a6859"><path d="m11.7 51.5v-2.6c.3-1.9 9.4-1.9 9.1 0v2.6c-.2 1.9-9.3 1.9-9.1 0"/><path d="m58.5 60v-2.6c-.3-1.9-9.4-1.9-9.1 0v2.6c.2 1.9 9.3 1.9 9.1 0"/><path d="m36 41.6v-1.7h-4.7v1.7c0 1-.7 1.7-1.6 1.7h7.9c-.9 0-1.6-.7-1.6-1.7"/><path d="m27.5 43.2h12.3v7.1h-12.3z"/></g><path d="m44.2 43.2h-5.9c-.5 2.2-2.4 3.9-4.7 3.9-2.3 0-4.2-1.7-4.7-3.9h-5.9v18.8h21.1l.1-18.8" fill="#47b892"/><path d="m20.1 26.3l1.4 2.6h24.4l1.1-2.7c0-9.8-2.3-14-13.1-14.1-11.1-.1-13.8 4.3-13.8 14.2" fill="#231f20"/><path d="m45.9 26.2c-.1.6-.2 1.1-.4 1.4-.3.5-.9.8-.9.8s.2-1.1.1-2.6c-.6-9-1.1-4.7-11.1-4.7-10 0-10.5-4.3-11.1 4.7-.1 1.5.1 2.6.1 2.6s-.6-.3-.9-.8c-.2-.3-.3-.8-.4-1.4-.9-.2-2.2 0-2.2 2.7 0 1.7.6 3.1 2.7 3.2.7 5.6 8.3 9.4 11.7 9.4s10.9-3.8 11.7-9.4c2.1-.1 2.7-1.5 2.7-3.2.1-2.8-1.1-3-2-2.7" fill="#8a6859"/><g fill="#574137"><circle cx="28.6" cy="27.1" r="2.1"/><circle cx="38.8" cy="27.1" r="2.1"/><path d="m37.7 34.7c0 1.5-2 2.3-4 2.3s-4-.8-4-2.3c0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f939.svg b/riot/emojione/svg/1f939.svg new file mode 100644 index 0000000..3859ff2 --- /dev/null +++ b/riot/emojione/svg/1f939.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m48 6c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#42ade2"/><circle cx="6" cy="30" r="4" fill="#c28fef"/><path d="m17 10c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ed4c5c"/><path d="m62 24c0 2.2-1.8 4-4 4-2.2 0-4-1.8-4-4 0-2.2 1.8-4 4-4 2.2 0 4 1.8 4 4" fill="#ffce31"/><circle cx="54" cy="53" r="4" fill="#83bf4f"/><path d="m57 56.1l-1.3 2.6 2.5 1.5c0 0 .8-2.4 1-3.2.3-1.4-1.4-2.3-2.2-.9" fill="#eba352"/><g fill="#3b946f"><path d="m18 56.3c2.2 0 3-1.6 3.5-2.6 1.1-2.6 4.1-10.5 4.1-10.5h-2.7c-1.5 0-2.4.7-2.7 1.4l-2.8 7.4h-3.3l1.2 2.6c.4.6 1.2 1.7 2.7 1.7"/><path d="m50.3 61.6c-2.2 0-2.5-.8-3.1-2.7l-5.5-15.7h2.7c1.5 0 2.4.7 2.7 1.4l3.8 12.6h3.3l-1.2 2.7c-.4.6-1.2 1.7-2.7 1.7"/></g><path d="m13.2 47.6l1.3 2.6-2.5 1.5c0 0-.8-2.4-1-3.2-.3-1.5 1.4-2.3 2.2-.9" fill="#eba352"/><g fill="#ffdd67"><path d="m11.7 51.5v-2.6c.3-1.9 9.4-1.9 9.1 0v2.6c-.2 1.9-9.3 1.9-9.1 0"/><path d="m58.5 60v-2.6c-.3-1.9-9.4-1.9-9.1 0v2.6c.2 1.9 9.3 1.9 9.1 0"/><path d="m36 41.6v-1.7h-4.7v1.7c0 1-.7 1.7-1.6 1.7h7.9c-.9 0-1.6-.7-1.6-1.7"/><path d="m27.5 43.2h12.3v7.1h-12.3z"/></g><path d="m44.2 43.2h-5.9c-.5 2.2-2.4 3.9-4.7 3.9-2.3 0-4.2-1.7-4.7-3.9h-5.9v18.8h21.1l.1-18.8" fill="#47b892"/><path d="m20.1 26.3l1.4 2.6h24.4l1.1-2.7c0-9.8-2.3-14-13.1-14.1-11.1-.1-13.8 4.3-13.8 14.2" fill="#ffb300"/><path d="m45.9 26.2c-.1.6-.2 1.1-.4 1.4-.3.5-.9.8-.9.8s.2-1.1.1-2.6c-.6-9-1.1-4.7-11.1-4.7-10 0-10.5-4.3-11.1 4.7-.1 1.5.1 2.6.1 2.6s-.6-.3-.9-.8c-.2-.3-.3-.8-.4-1.4-.9-.2-2.2 0-2.2 2.7 0 1.7.6 3.1 2.7 3.2.7 5.6 8.3 9.4 11.7 9.4s10.9-3.8 11.7-9.4c2.1-.1 2.7-1.5 2.7-3.2.1-2.8-1.1-3-2-2.7" fill="#ffdd67"/><g fill="#937237"><circle cx="28.5" cy="27.1" r="2.1"/><circle cx="38.8" cy="27.1" r="2.1"/><path d="m37.7 34.7c0 1.5-2 2.3-4 2.3-2 0-4-.8-4-2.3 0 0 0-.4.4-.4 1.8 0 5.4 0 7.2 0 .4 0 .4.4.4.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93a.svg b/riot/emojione/svg/1f93a.svg new file mode 100644 index 0000000..f566e06 --- /dev/null +++ b/riot/emojione/svg/1f93a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m25.7 25.6c0 0 5.5 1.8 5.5 6 2.9 0 .4-6-5.5-6" fill="#838e96"/><path d="m27 35.6c0 0-1.9-.8-4-3l5-4.7c2 2 2.9 3.8 2.9 3.8l-3.9 3.9" fill="#ffdd67"/><path d="m28.1 28c0 0-.5 2.2-2.2 3.9-1.4 1.4-.5 2.8-.5 2.8s-2-1.2-2.6-2.2c.1 0 4.3-4.4 5.3-4.5" fill="#eba352"/><path d="m21.8 26.4c-1.9 1.8-1.5 5.2-.4 6.3 1.1 1.2 2.6-.3 4.5-2.1 1.9-1.8 3.3-3.3 2.2-4.5-1.2-1.2-4.5-1.5-6.3.3" fill="#e8e8e8"/><path d="m24.8 25.1c-.4.5-1.1 1.7 0 1.8 1.5.2 3.9.4 2.1 2.6-.3.3-.7.7-1 1-1.9 1.8-3.4 3.3-4.5 2.1-1.1-1.2-1.5-4.5.4-6.3.8-.7 1.9-1.1 3-1.2" fill="#b2c1c0"/><path d="m24.2 27.3l-22.2-20.8 21.9 21.9c.4-.4.5-.9.3-1.1" fill="#838e96"/><path d="m22.6 28.8l-20.6-22.3 21.9 21.9c-.5.4-1.1.6-1.3.4" fill="#3e4347"/><path d="m22.8 32.5c0 .2-.7.4-1.1 0-1.7-1.6-.7-4.5-.7-4.5s-.4 2.8 1.1 4.2c.2.2.7.2.7.3" fill="#fff"/><g fill="#e8e8e8"><path d="m30.5 30.8c4.3 3.2 5.8 2.5 7.5 4.1 2.1-4.5 5.4-6.3 5.4-6.3 1-5 5.6-5.6 5.6-5.6l-1.6 11.7c0 0-5.3 7-9.9 7-1.2 0-11.9-6.4-11.9-6.4 4.2-1.4 4.9-4.5 4.9-4.5"/><path d="m58.8 23.6c0 0-.1-2 1.7-5 2-3.4 4.3-16-8.4-16v21h6.7"/></g><path d="m45.1 12.3c0 5.7 3.6 10.3 6.4 10.3 2.8 0 5.1-4.6 5.1-10.3 0-5.7-2.1-10.3-5-10.3-2.8 0-6.5 4.6-6.5 10.3" fill="#b2c1c0"/><path d="m44.5 12.3c0 5 2.9 9 5.1 9s3.8-4 3.8-9c0-5-1.7-9-3.8-9s-5.1 4-5.1 9" fill="#3e4347"/><g fill="#b2c1c0"><path d="m50 11.8l1.3 1.8-1.3 1.8-1.2-1.8z"/><path d="m50.3 18.3l-.9 1.3-.9-1.3.9-1.2z"/><path d="m47.1 16l-.7.9-.6-.9.6-.9z"/><path d="m48.2 16l-.7-.9.7-.9.6.9z"/><path d="m50.9 9.9l-.6.9-.6-.9.6-.9z"/><path d="m50 6.6l.7-1 .6 1-.6.9z"/><path d="m48.2 5l.6-1 .6 1-.6.9z"/><path d="m51.8 11.4l.6.9-.6.9-.7-.9z"/><path d="m51.9 17.2l-.6.9-.6-.9.6-.9z"/><path d="m46.9 12l.6-.9.7.9-.7.9z"/><path d="m46.8 9.9l-.4-.7.4-.6.5.6z"/><path d="m46.7 6.3l.5-.7.4.7-.4.6z"/><path d="m45.4 13.5l.4-.6.5.6-.5.7z"/><path d="m47.7 18.3l-.4.7-.5-.7.5-.6z"/><path d="m47.4 8.3l.9-1.4 1 1.4-1 1.3z"/></g><path d="m53.9 62h-11.8c0 0 .8-5.6 6.9-13 0 0 7.4-14.1 7.4-28.3 0 0 3.7.6 5.6 2.7v38.2c-1.7-1.6-3-3.6-3-3.6l-2.1-.2c-.1-.1-.8 2-3 4.2" fill="#e8e8e8"/><path d="m46.4 23.6c3.6-3.8 12.1-.6 13.9.8 0 0-1.6 9.2 1.7 20.7v6.8c-1.4 1-3.3 4.1-3 6.2-.7 0-1.4 0-2.1-.2-5.2-4.5-8-8.8-8-8.8-4.6-11.5-6.1-21.7-2.5-25.5" fill="#b2c1c0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93c-1f3fb.svg b/riot/emojione/svg/1f93c-1f3fb.svg new file mode 100644 index 0000000..107ff26 --- /dev/null +++ b/riot/emojione/svg/1f93c-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#e6b796"><path d="m44.4 9.3c-3 3.7-4.3 7.1-12.2 11.6-2.8 1.6-3.2 5-4.3 4.8-6.3-1.3-20.4-2.7-20.4-2.7l-1.5 8.2c-.8 11.3 18.5 7.4 22.9 5.4 2.7-1.2 4.5-1.4 5.8-3.7 1.2-2.2 3.3.5 15.3-19.9l-5.6-3.7"/><path d="m46.2 31.5l9.2-7.6 3 11.6-9.3 2.7z"/></g><path d="m50.5 7.1l-14.8 8.9c-.9 4.2.9 5.8 1.2 7.4.2.7-.8 2.4-1.4 3.3-1.2 2 1.8 2.4 2.7 1.9 1 1.4.7 2.2 1.5 1.6.7-.5 2.1 2.3 1.9 3.1l10.8-1.5-1.9-24.7" fill="#ffe1bd"/><path d="m43 2.9c12-3.3 16.4 7.3 16.7 15.4.2 4.3-2.8 8.4-4.8 10.1l-9.3-16.8c-1.9-.3-8.4 5.4-9.9 4.4-4-2.7.2-11.1 7.3-13.1" fill="#594640"/><path d="m41.6 3.9l6.1 12c-.3 1-.8 2.4-.5 4.2 2.1 12.4 4.8 7.9 8.4 2.6 1-1.5 1.5-3.7 1.5-4.8l2.9-1.1c1-.4.2-3.5-.8-3l-3.2 1.2c-.8-.9-5.3-1.9-6.4-1.4l-5.6-11c-.6-1.3-3-.4-2.4 1.3" fill="#ed4c5c"/><path d="m12.8 6l14.7 10c.9 4.2-.9 5.8-1.2 7.4-.2.7.8 2.4 1.4 3.3 1.2 2-1.8 2.4-2.7 1.9-1 1.4-.7 2.2-1.5 1.6-.7-.5-2.3 2.4-1.9 3.1.4.6-.4.8-1.2.2-.9 3.4-2.8 2.7-6.9 1.2-8.6-3.2-.7-28.7-.7-28.7" fill="#ffe1bd"/><path d="m20.1 2.9c-11.9-3.3-16.3 7.3-16.6 15.4-.2 4.3 1.1 7.4 3.2 9.2l1.4-.5 9.5-15.3c1.9-.3 8.5 5.4 9.9 4.4 3.9-2.8-.2-11.2-7.4-13.2" fill="#594640"/><path d="m19.1 2.6l-5.6 11c-1.1-.5-5.5.5-6.4 1.4l-3.1-1.2c-.9-.4-1.8 2.6-.8 3l2.9 1.1c.1 1.1.5 3.3 1.5 4.8 3.6 5.3 6.3 9.9 8.4-2.6.3-1.8-.2-3.2-.5-4.2l6-12.1c.7-1.3-1.6-2.4-2.4-1.2" fill="#42ade2"/><path d="m15.6 34.8l-1.8-10.6c-.2-1.4-2.9-.9-2.6.5l1.8 10.6 2.6-.5" fill="#e8e8e8"/><path d="m17.4 62c0 0 3.6-8 3.6-13.6 0-8.3-6.1-10.9-10.4-12.3-4.1-1.3-4.6-5-4.6-5-1 0-6.2 6.8-3 16.8 2.5 7.9-.4 14-.4 14h14.8z" fill="#42ade2"/><path d="m4.8 62h6.5c0 0 4.9-4.8 4.9-13.3 0-12.2-8.2-12.9-10.7-10.4-3.1 3.4-1.4 6.7.3 13.5 1 4-1 10.2-1 10.2" fill="#e6b796"/><path d="m46.5 62c0 0-3.6-8-3.6-13.6 0-8.3 6.1-10.9 10.4-12.3 4.1-1.3 4.6-5 4.6-5 1 0 6.2 6.8 3 16.8-2.5 7.9.4 14 .4 14h-14.8z" fill="#ed4c5c"/><path d="m59.1 62h-6.5c0 0-4.9-4.8-4.9-13.3 0-12.2 8.2-12.9 10.7-10.4 3.2 3.4 1.5 6.7-.2 13.5-1 4 .9 10.2.9 10.2" fill="#e6b796"/><path d="m41.7 32.9c0 0 3.7-1.9 7.3-4.8.5-.4.6-3.8 4.2-6.1 2.1-1.3 3.2.3 4-.1.9-.4 2.3 0 2.3 0l-6.3 10.7-11.5.3" opacity=".3" fill="#3e4347"/><path d="m60.8 23.1c-1.5-3-4.9.1-4.9.1s-.9-2.2-3.2-.3c-2.7 2.2-2.1 4.7-3.3 5.9-2.7 2-5.6 3.9-12.3 5.3-3.2.6-4.5 3.7-5.5 3.2-5.6-3.3-10.6 1.6-15.4 0-10.1-3.5-12.9 1.6-12.7 6.9.2 3.8 4.8 5.8 8.3 6.6 8.3 2.1 14.1-2.6 18.9-3.1 2.9-.3 3.5.4 5.4-1.4 1.7-1.7 2.9 1.2 17.8-11.8 0 0 2.1.2 6.5-3.5 2-1.7 2.2-4.3.4-7.9" fill="#ffe1bd"/><path d="m25.1 43c0 0 4.9.7 7.6-6-4.6 5.6-7.6 6-7.6 6" fill="#e6b796"/><path d="m32.3 47.6c0 0-6.5-2-12.7-8.7-1.1-1.2-.7-3.4-3.6-5.4l-3.1.3c-.6-.6-2.7-3.2-4.6-1.2-1.8 1.8-2.6 6.6-1.2 8.4.8 1 7 5 7.4 5.5 4.7 5.7 5.3 9.4 5.3 9.4s.8-2.2 1.2-5.1l11.3-3.2" opacity=".3" fill="#3e4347"/><path d="m60.9 41.9c-2.3-5.8-7.9-7.3-13.2-.3-3.1 4.1-9.7 2.4-13.2 7.7-2.2-3.4-7.3-2-15.4-9.6 0 0-.2-4.1-3.1-6.2-2-1.5-3.1.3-3.1.3s-3.4-3.1-4.9-.1c-1.8 3.6-1.9 6.5.5 7.9 4.1 2.5 6.5 2.8 6.5 2.8 12.8 14.5 13.8 12.1 15.5 13.4 2.9 2.5 3.8 2.1 9.6.4 4.6-1.3 11.6-1.1 17.9-7.2 2.4-2.6 4.3-5.6 2.9-9.1" fill="#ffe1bd"/><g fill="#e6b796"><path d="m46.9 42.7c0 0 6.3 5.3 10.3 4.2-3.7 2-8.3-.6-10.3-4.2"/><path d="m44 50.1c0 0-3.5 3.6-9.5-.1 6.9 1.7 9.5.1 9.5.1"/></g><g fill="#664e27"><path d="m40.9 22.3c.3 1.1-.1 2.2-.9 2.4-.8.2-1.2-.6-1.6-1.7-.3-1.2 2.2-1.8 2.5-.7"/><path d="m22.7 22.3c-.3 1.1.1 2.2.9 2.4.8.2 1.2-.6 1.6-1.7.2-1.2-2.2-1.8-2.5-.7"/><path d="m22.3 29.8c0 0-1.5 1.7-1.4 2.9 0 0-1.8-1.4-1.2-2.4.5-1 2.6-.5 2.6-.5"/><path d="m40.8 29.8c0 0 1.5 1.7 1.4 2.9 0 0 1.8-1.4 1.2-2.4-.4-1-2.6-.5-2.6-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93c-1f3fc.svg b/riot/emojione/svg/1f93c-1f3fc.svg new file mode 100644 index 0000000..e417df2 --- /dev/null +++ b/riot/emojione/svg/1f93c-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#e0a372"><path d="m44.4 9.3c-3 3.7-4.3 7.1-12.2 11.6-2.8 1.6-3.2 5-4.3 4.8-6.3-1.3-20.4-2.7-20.4-2.7l-1.5 8.2c-.8 11.3 18.5 7.4 22.9 5.4 2.7-1.2 4.5-1.4 5.8-3.7 1.2-2.2 3.3.5 15.3-19.9l-5.6-3.7"/><path d="m46.2 31.5l9.2-7.6 3 11.6-9.3 2.7z"/></g><path d="m50.5 7.1l-14.8 8.9c-.9 4.2.9 5.8 1.2 7.4.2.7-.8 2.4-1.4 3.3-1.2 2 1.8 2.4 2.7 1.9 1 1.4.7 2.2 1.5 1.6.7-.5 2.1 2.3 1.9 3.1l10.8-1.5-1.9-24.7" fill="#fed0ac"/><path d="m43 2.9c12-3.3 16.4 7.3 16.7 15.4.2 4.3-2.8 8.4-4.8 10.1l-9.3-16.8c-1.9-.3-8.4 5.4-9.9 4.4-4-2.7.2-11.1 7.3-13.1" fill="#dbb471"/><path d="m41.6 3.9l6.1 12c-.3 1-.8 2.4-.5 4.2 2.1 12.4 4.8 7.9 8.4 2.6 1-1.5 1.5-3.7 1.5-4.8l2.9-1.1c1-.4.2-3.5-.8-3l-3.2 1.2c-.8-.9-5.3-1.9-6.4-1.4l-5.6-11c-.6-1.3-3-.4-2.4 1.3" fill="#ed4c5c"/><path d="m12.8 6l14.7 10c.9 4.2-.9 5.8-1.2 7.4-.2.7.8 2.4 1.4 3.3 1.2 2-1.8 2.4-2.7 1.9-1 1.4-.7 2.2-1.5 1.6-.7-.5-2.3 2.4-1.9 3.1.4.6-.4.8-1.2.2-.9 3.4-2.8 2.7-6.9 1.2-8.6-3.2-.7-28.7-.7-28.7" fill="#fed0ac"/><path d="m20.1 2.9c-11.9-3.3-16.3 7.3-16.6 15.4-.2 4.3 1.1 7.4 3.2 9.2l1.4-.5 9.5-15.3c1.9-.3 8.5 5.4 9.9 4.4 3.9-2.8-.2-11.2-7.4-13.2" fill="#dbb471"/><path d="m19.1 2.6l-5.6 11c-1.1-.5-5.5.5-6.4 1.4l-3.1-1.2c-.9-.4-1.8 2.6-.8 3l2.9 1.1c.1 1.1.5 3.3 1.5 4.8 3.6 5.3 6.3 9.9 8.4-2.6.3-1.8-.2-3.2-.5-4.2l6-12.1c.7-1.3-1.6-2.4-2.4-1.2" fill="#42ade2"/><path d="m15.6 34.8l-1.8-10.6c-.2-1.4-2.9-.9-2.6.5l1.8 10.6 2.6-.5" fill="#e8e8e8"/><path d="m17.4 62c0 0 3.6-8 3.6-13.6 0-8.3-6.1-10.9-10.4-12.3-4.1-1.3-4.6-5-4.6-5-1 0-6.2 6.8-3 16.8 2.5 7.9-.4 14-.4 14h14.8z" fill="#42ade2"/><path d="m4.8 62h6.5c0 0 4.9-4.8 4.9-13.3 0-12.2-8.2-12.9-10.7-10.4-3.1 3.4-1.4 6.7.3 13.5 1 4-1 10.2-1 10.2" fill="#e0a372"/><path d="m46.5 62c0 0-3.6-8-3.6-13.6 0-8.3 6.1-10.9 10.4-12.3 4.1-1.3 4.6-5 4.6-5 1 0 6.2 6.8 3 16.8-2.5 7.9.4 14 .4 14h-14.8z" fill="#ed4c5c"/><path d="m59.1 62h-6.5c0 0-4.9-4.8-4.9-13.3 0-12.2 8.2-12.9 10.7-10.4 3.2 3.4 1.5 6.7-.2 13.5-1 4 .9 10.2.9 10.2" fill="#e0a372"/><path d="m41.7 32.9c0 0 3.7-1.9 7.3-4.8.5-.4.6-3.8 4.2-6.1 2.1-1.3 3.2.3 4-.1.9-.4 2.3 0 2.3 0l-6.3 10.7-11.5.3" opacity=".3" fill="#3e4347"/><path d="m60.8 23.1c-1.5-3-4.9.1-4.9.1s-.9-2.2-3.2-.3c-2.7 2.2-2.1 4.7-3.3 5.9-2.7 2-5.6 3.9-12.3 5.3-3.2.6-4.5 3.7-5.5 3.2-5.6-3.3-10.6 1.6-15.4 0-10.1-3.5-12.9 1.6-12.7 6.9.2 3.8 4.8 5.8 8.3 6.6 8.3 2.1 14.1-2.6 18.9-3.1 2.9-.3 3.5.4 5.4-1.4 1.7-1.7 2.9 1.2 17.8-11.8 0 0 2.1.2 6.5-3.5 2-1.7 2.2-4.3.4-7.9" fill="#fed0ac"/><path d="m25.1 43c0 0 4.9.7 7.6-6-4.6 5.6-7.6 6-7.6 6" fill="#e0a372"/><path d="m32.3 47.6c0 0-6.5-2-12.7-8.7-1.1-1.2-.7-3.4-3.6-5.4l-3.1.3c-.6-.6-2.7-3.2-4.6-1.2-1.8 1.8-2.6 6.6-1.2 8.4.8 1 7 5 7.4 5.5 4.7 5.7 5.3 9.4 5.3 9.4s.8-2.2 1.2-5.1l11.3-3.2" opacity=".3" fill="#3e4347"/><path d="m60.9 41.9c-2.3-5.8-7.9-7.3-13.2-.3-3.1 4.1-9.7 2.4-13.2 7.7-2.2-3.4-7.3-2-15.4-9.6 0 0-.2-4.1-3.1-6.2-2-1.5-3.1.3-3.1.3s-3.4-3.1-4.9-.1c-1.8 3.6-1.9 6.5.5 7.9 4.1 2.5 6.5 2.8 6.5 2.8 12.8 14.5 13.8 12.1 15.5 13.4 2.9 2.5 3.8 2.1 9.6.4 4.6-1.3 11.6-1.1 17.9-7.2 2.4-2.6 4.3-5.6 2.9-9.1" fill="#fed0ac"/><g fill="#e0a372"><path d="m46.9 42.7c0 0 6.3 5.3 10.3 4.2-3.7 2-8.3-.6-10.3-4.2"/><path d="m44 50.1c0 0-3.5 3.6-9.5-.1 6.9 1.7 9.5.1 9.5.1"/></g><g fill="#664e27"><path d="m40.9 22.3c.3 1.1-.1 2.2-.9 2.4-.8.2-1.2-.6-1.6-1.7-.3-1.2 2.2-1.8 2.5-.7"/><path d="m22.7 22.3c-.3 1.1.1 2.2.9 2.4.8.2 1.2-.6 1.6-1.7.2-1.2-2.2-1.8-2.5-.7"/><path d="m22.3 29.8c0 0-1.5 1.7-1.4 2.9 0 0-1.8-1.4-1.2-2.4.5-1 2.6-.5 2.6-.5"/><path d="m40.8 29.8c0 0 1.5 1.7 1.4 2.9 0 0 1.8-1.4 1.2-2.4-.4-1-2.6-.5-2.6-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93c-1f3fd.svg b/riot/emojione/svg/1f93c-1f3fd.svg new file mode 100644 index 0000000..5b897f9 --- /dev/null +++ b/riot/emojione/svg/1f93c-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b58360"><path d="m44.4 9.3c-3 3.7-4.3 7.1-12.2 11.6-2.8 1.6-3.2 5-4.3 4.8-6.3-1.3-20.4-2.7-20.4-2.7l-1.5 8.2c-.8 11.3 18.5 7.4 22.9 5.4 2.7-1.2 4.5-1.4 5.8-3.7 1.2-2.2 3.3.5 15.3-19.9l-5.6-3.7"/><path d="m46.2 31.5l9.2-7.6 3 11.6-9.3 2.7z"/></g><path d="m50.5 7.1l-14.9 8.9c-.9 4.2.9 5.8 1.2 7.4.2.7-.8 2.4-1.4 3.3-1.2 2 1.8 2.4 2.7 1.9 1 1.4.7 2.2 1.5 1.6.7-.5 2.1 2.3 1.9 3.1l10.8-1.5-1.8-24.7" fill="#d6a57c"/><path d="m43 2.9c12-3.3 16.4 7.3 16.7 15.4.2 4.3-2.8 8.4-4.8 10.1l-9.3-16.8c-1.9-.3-8.4 5.4-9.9 4.4-4-2.7.2-11.1 7.3-13.1" fill="#594640"/><path d="m41.6 3.9l6.1 12c-.3 1-.8 2.4-.5 4.2 2.1 12.4 4.8 7.9 8.4 2.6 1-1.5 1.5-3.7 1.5-4.8l2.9-1.1c1-.4.2-3.5-.8-3l-3.2 1.2c-.8-.9-5.3-1.9-6.4-1.4l-5.6-11c-.6-1.3-3-.4-2.4 1.3" fill="#ed4c5c"/><path d="m12.8 6l14.7 10c.9 4.2-.9 5.8-1.2 7.4-.2.7.8 2.4 1.4 3.3 1.2 2-1.8 2.4-2.7 1.9-1 1.4-.7 2.2-1.5 1.6-.7-.5-2.3 2.4-1.9 3.1.4.6-.4.8-1.2.2-.9 3.4-2.8 2.7-6.9 1.2-8.6-3.2-.7-28.7-.7-28.7" fill="#d6a57c"/><path d="m20.1 2.9c-11.9-3.3-16.3 7.3-16.6 15.4-.2 4.3 1.1 7.4 3.2 9.2l1.4-.5 9.5-15.3c1.9-.3 8.5 5.4 9.9 4.4 3.9-2.8-.2-11.2-7.4-13.2" fill="#594640"/><path d="m19.1 2.6l-5.6 11c-1.1-.5-5.5.5-6.4 1.4l-3.1-1.2c-.9-.4-1.8 2.6-.8 3l2.9 1.1c.1 1.1.5 3.3 1.5 4.8 3.6 5.3 6.3 9.9 8.4-2.6.3-1.8-.2-3.2-.5-4.2l6-12.1c.7-1.3-1.6-2.4-2.4-1.2" fill="#42ade2"/><path d="m15.6 34.8l-1.8-10.6c-.2-1.4-2.9-.9-2.6.5l1.8 10.6 2.6-.5" fill="#e8e8e8"/><path d="m17.4 62c0 0 3.6-8 3.6-13.6 0-8.3-6.1-10.9-10.4-12.3-4.1-1.3-4.6-5-4.6-5-1 0-6.2 6.8-3 16.8 2.5 7.9-.4 14-.4 14h14.8z" fill="#42ade2"/><path d="m4.8 62h6.5c0 0 4.9-4.8 4.9-13.3 0-12.2-8.2-12.9-10.7-10.4-3.1 3.4-1.4 6.7.3 13.5 1 4-1 10.2-1 10.2" fill="#b58360"/><path d="m46.5 62c0 0-3.6-8-3.6-13.6 0-8.3 6.1-10.9 10.4-12.3 4.1-1.3 4.6-5 4.6-5 1 0 6.2 6.8 3 16.8-2.5 7.9.4 14 .4 14h-14.8z" fill="#ed4c5c"/><path d="m59.1 62h-6.5c0 0-4.9-4.8-4.9-13.3 0-12.2 8.2-12.9 10.7-10.4 3.2 3.4 1.5 6.7-.2 13.5-1 4 .9 10.2.9 10.2" fill="#b58360"/><path d="m41.7 32.9c0 0 3.7-1.9 7.3-4.8.5-.4.6-3.8 4.2-6.1 2.1-1.3 3.2.3 4-.1.9-.4 2.3 0 2.3 0l-6.3 10.7-11.5.3" opacity=".3" fill="#3e4347"/><path d="m60.7 23.1c-1.5-3-4.9.1-4.9.1s-.8-2.2-3.1-.3c-2.7 2.2-2.1 4.7-3.3 5.9-2.7 2-5.6 3.9-12.3 5.3-3.2.6-4.5 3.7-5.5 3.2-5.6-3.3-10.6 1.6-15.4 0-10.1-3.5-12.9 1.6-12.7 6.9.2 3.8 4.8 5.8 8.3 6.6 8.3 2.1 14.1-2.6 18.9-3.1 2.9-.3 3.5.4 5.4-1.4 1.7-1.7 2.9 1.2 17.8-11.8 0 0 2.1.2 6.5-3.5 2-1.7 2.2-4.3.3-7.9" fill="#d6a57c"/><path d="m25.1 43c0 0 4.9.7 7.6-6-4.6 5.6-7.6 6-7.6 6" fill="#b58360"/><path d="m32.3 47.6c0 0-6.5-2-12.7-8.7-1.1-1.2-.7-3.4-3.6-5.4l-3.1.3c-.6-.6-2.7-3.2-4.6-1.2-1.8 1.8-2.6 6.6-1.2 8.4.8 1 7 5 7.4 5.5 4.7 5.7 5.3 9.4 5.3 9.4s.8-2.2 1.2-5.1l11.3-3.2" opacity=".3" fill="#3e4347"/><path d="m60.9 41.9c-2.3-5.8-7.9-7.3-13.2-.3-3.1 4.1-9.7 2.4-13.2 7.7-2.2-3.4-7.3-2-15.4-9.6 0 0-.2-4.1-3.1-6.2-2-1.5-3.1.3-3.1.3s-3.4-3.1-4.9-.1c-1.8 3.6-1.9 6.5.5 7.9 4.1 2.5 6.5 2.8 6.5 2.8 12.8 14.5 13.8 12.1 15.5 13.4 2.9 2.5 3.8 2.1 9.6.4 4.6-1.3 11.6-1.1 17.9-7.2 2.4-2.6 4.3-5.6 2.9-9.1" fill="#d6a57c"/><g fill="#b58360"><path d="m46.9 42.7c0 0 6.3 5.3 10.3 4.2-3.7 2-8.3-.6-10.3-4.2"/><path d="m44 50.1c0 0-3.5 3.6-9.5-.1 6.9 1.7 9.5.1 9.5.1"/></g><g fill="#664e27"><path d="m40.9 22.3c.3 1.1-.1 2.2-.9 2.4-.8.2-1.2-.6-1.6-1.7-.3-1.2 2.2-1.8 2.5-.7"/><path d="m22.7 22.3c-.3 1.1.1 2.2.9 2.4.8.2 1.2-.6 1.6-1.7.2-1.2-2.2-1.8-2.5-.7"/><path d="m22.3 29.8c0 0-1.5 1.7-1.4 2.9 0 0-1.8-1.4-1.2-2.4.5-1 2.6-.5 2.6-.5"/><path d="m40.8 29.8c0 0 1.5 1.7 1.4 2.9 0 0 1.8-1.4 1.2-2.4-.4-1-2.6-.5-2.6-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93c-1f3fe.svg b/riot/emojione/svg/1f93c-1f3fe.svg new file mode 100644 index 0000000..7f34250 --- /dev/null +++ b/riot/emojione/svg/1f93c-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#935e3e"><path d="m44.4 9.3c-3 3.7-4.3 7.1-12.2 11.6-2.8 1.6-3.2 5-4.3 4.8-6.3-1.3-20.4-2.7-20.4-2.7l-1.5 8.2c-.8 11.3 18.5 7.4 22.9 5.4 2.7-1.2 4.5-1.4 5.8-3.7 1.2-2.2 3.3.5 15.3-19.9l-5.6-3.7"/><path d="m46.2 31.5l9.2-7.6 3 11.6-9.3 2.7z"/></g><path d="m50.5 7.1l-14.9 8.9c-.9 4.2.9 5.8 1.2 7.4.2.7-.8 2.4-1.4 3.3-1.2 2 1.8 2.4 2.7 1.9 1 1.4.7 2.2 1.5 1.6.7-.5 2.1 2.3 1.9 3.1l10.8-1.5-1.8-24.7" fill="#b47d56"/><path d="m43 2.9c12-3.3 16.4 7.3 16.7 15.4.2 4.3-2.8 8.4-4.8 10.1l-9.3-16.8c-1.9-.3-8.4 5.4-9.9 4.4-4-2.7.2-11.1 7.3-13.1" fill="#231f20"/><path d="m41.6 3.9l6.1 12c-.3 1-.8 2.4-.5 4.2 2.1 12.4 4.8 7.9 8.4 2.6 1-1.5 1.5-3.7 1.5-4.8l2.9-1.1c1-.4.2-3.5-.8-3l-3.2 1.2c-.8-.9-5.3-1.9-6.4-1.4l-5.6-11c-.6-1.3-3-.4-2.4 1.3" fill="#ed4c5c"/><path d="m12.8 6l14.7 10c.9 4.2-.9 5.8-1.2 7.4-.2.7.8 2.4 1.4 3.3 1.2 2-1.8 2.4-2.7 1.9-1 1.4-.7 2.2-1.5 1.6-.7-.5-2.3 2.4-1.9 3.1.4.6-.4.8-1.2.2-.9 3.4-2.8 2.7-6.9 1.2-8.6-3.2-.7-28.7-.7-28.7" fill="#b47d56"/><path d="m20.1 2.9c-11.9-3.3-16.3 7.3-16.6 15.4-.2 4.3 1.1 7.4 3.2 9.2l1.4-.5 9.5-15.3c1.9-.3 8.5 5.4 9.9 4.4 3.9-2.8-.2-11.2-7.4-13.2" fill="#231f20"/><path d="m19.1 2.6l-5.6 11c-1.1-.5-5.5.5-6.4 1.4l-3.1-1.2c-.9-.4-1.8 2.6-.8 3l2.9 1.1c.1 1.1.5 3.3 1.5 4.8 3.6 5.3 6.3 9.9 8.4-2.6.3-1.8-.2-3.2-.5-4.2l6-12.1c.7-1.3-1.6-2.4-2.4-1.2" fill="#42ade2"/><path d="m15.6 34.8l-1.8-10.6c-.2-1.4-2.9-.9-2.6.5l1.8 10.6 2.6-.5" fill="#e8e8e8"/><path d="m17.4 62c0 0 3.6-8 3.6-13.6 0-8.3-6.1-10.9-10.4-12.3-4.1-1.3-4.6-5-4.6-5-1 0-6.2 6.8-3 16.8 2.5 7.9-.4 14-.4 14h14.8z" fill="#42ade2"/><path d="m4.8 62h6.5c0 0 4.9-4.8 4.9-13.3 0-12.2-8.2-12.9-10.7-10.4-3.1 3.4-1.4 6.7.3 13.5 1 4-1 10.2-1 10.2" fill="#935e3e"/><path d="m46.5 62c0 0-3.6-8-3.6-13.6 0-8.3 6.1-10.9 10.4-12.3 4.1-1.3 4.6-5 4.6-5 1 0 6.2 6.8 3 16.8-2.5 7.9.4 14 .4 14h-14.8z" fill="#ed4c5c"/><path d="m59.1 62h-6.5c0 0-4.9-4.8-4.9-13.3 0-12.2 8.2-12.9 10.7-10.4 3.2 3.4 1.5 6.7-.2 13.5-1 4 .9 10.2.9 10.2" fill="#935e3e"/><path d="m41.7 32.9c0 0 3.7-1.9 7.3-4.8.5-.4.6-3.8 4.2-6.1 2.1-1.3 3.2.3 4-.1.9-.4 2.3 0 2.3 0l-6.3 10.7-11.5.3" opacity=".3" fill="#3e4347"/><path d="m60.7 23.1c-1.5-3-4.9.1-4.9.1s-.8-2.2-3.1-.3c-2.7 2.2-2.1 4.7-3.3 5.9-2.7 2-5.6 3.9-12.3 5.3-3.2.6-4.5 3.7-5.5 3.2-5.6-3.3-10.6 1.6-15.4 0-10.1-3.5-12.9 1.6-12.7 6.9.2 3.8 4.8 5.8 8.3 6.6 8.3 2.1 14.1-2.6 18.9-3.1 2.9-.3 3.5.4 5.4-1.4 1.7-1.7 2.9 1.2 17.8-11.8 0 0 2.1.2 6.5-3.5 2-1.7 2.2-4.3.3-7.9" fill="#b47d56"/><path d="m25.1 43c0 0 4.9.7 7.6-6-4.6 5.6-7.6 6-7.6 6" fill="#935e3e"/><path d="m32.3 47.6c0 0-6.5-2-12.7-8.7-1.1-1.2-.7-3.4-3.6-5.4l-3.1.3c-.6-.6-2.7-3.2-4.6-1.2-1.8 1.8-2.6 6.6-1.2 8.4.8 1 7 5 7.4 5.5 4.7 5.7 5.3 9.4 5.3 9.4s.8-2.2 1.2-5.1l11.3-3.2" opacity=".3" fill="#3e4347"/><path d="m60.9 41.9c-2.3-5.8-7.9-7.3-13.2-.3-3.1 4.1-9.7 2.4-13.2 7.7-2.2-3.4-7.3-2-15.4-9.6 0 0-.2-4.1-3.1-6.2-2-1.5-3.1.3-3.1.3s-3.4-3.1-4.9-.1c-1.8 3.6-1.9 6.5.5 7.9 4.1 2.5 6.5 2.8 6.5 2.8 12.8 14.5 13.8 12.1 15.5 13.4 2.9 2.5 3.8 2.1 9.6.4 4.6-1.3 11.6-1.1 17.9-7.2 2.4-2.6 4.3-5.6 2.9-9.1" fill="#b47d56"/><g fill="#935e3e"><path d="m46.9 42.7c0 0 6.3 5.3 10.3 4.2-3.7 2-8.3-.6-10.3-4.2"/><path d="m44 50.1c0 0-3.5 3.6-9.5-.1 6.9 1.7 9.5.1 9.5.1"/></g><g fill="#664e27"><path d="m40.9 22.3c.3 1.1-.1 2.2-.9 2.4-.8.2-1.2-.6-1.6-1.7-.3-1.2 2.2-1.8 2.5-.7"/><path d="m22.7 22.3c-.3 1.1.1 2.2.9 2.4.8.2 1.2-.6 1.6-1.7.2-1.2-2.2-1.8-2.5-.7"/><path d="m22.3 29.8c0 0-1.5 1.7-1.4 2.9 0 0-1.8-1.4-1.2-2.4.5-1 2.6-.5 2.6-.5"/><path d="m40.8 29.8c0 0 1.5 1.7 1.4 2.9 0 0 1.8-1.4 1.2-2.4-.4-1-2.6-.5-2.6-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93c-1f3ff.svg b/riot/emojione/svg/1f93c-1f3ff.svg new file mode 100644 index 0000000..a4e5ecc --- /dev/null +++ b/riot/emojione/svg/1f93c-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#705041"><path d="m44.4 9.3c-3 3.7-4.3 7.1-12.2 11.6-2.8 1.6-3.2 5-4.3 4.8-6.3-1.3-20.4-2.7-20.4-2.7l-1.5 8.2c-.8 11.3 18.5 7.4 22.9 5.4 2.7-1.2 4.5-1.4 5.8-3.7 1.2-2.2 3.3.5 15.3-19.9l-5.6-3.7"/><path d="m46.2 31.5l9.2-7.6 3 11.6-9.3 2.7z"/></g><path d="m50.5 7.1l-14.8 8.9c-.9 4.2.9 5.8 1.2 7.4.2.7-.8 2.4-1.4 3.3-1.2 2 1.8 2.4 2.7 1.9 1 1.4.7 2.2 1.5 1.6.7-.5 2.1 2.3 1.9 3.1l10.8-1.5-1.9-24.7" fill="#8a6859"/><path d="m43 2.9c12-3.3 16.4 7.3 16.7 15.4.2 4.3-2.8 8.4-4.8 10.1l-9.3-16.8c-1.9-.3-8.4 5.4-9.9 4.4-4-2.7.2-11.1 7.3-13.1" fill="#231f20"/><path d="m41.6 3.9l6.1 12c-.3 1-.8 2.4-.5 4.2 2.1 12.4 4.8 7.9 8.4 2.6 1-1.5 1.5-3.7 1.5-4.8l2.9-1.1c1-.4.2-3.5-.8-3l-3.2 1.2c-.8-.9-5.3-1.9-6.4-1.4l-5.6-11c-.6-1.3-3-.4-2.4 1.3" fill="#ed4c5c"/><path d="m12.8 6l14.7 10c.9 4.2-.9 5.8-1.2 7.4-.2.7.8 2.4 1.4 3.3 1.2 2-1.8 2.4-2.7 1.9-1 1.4-.7 2.2-1.5 1.6-.7-.5-2.3 2.4-1.9 3.1.4.6-.4.8-1.2.2-.9 3.4-2.8 2.7-6.9 1.2-8.6-3.2-.7-28.7-.7-28.7" fill="#8a6859"/><path d="m20.1 2.9c-11.9-3.3-16.3 7.3-16.6 15.4-.2 4.3 1.1 7.4 3.2 9.2l1.4-.5 9.5-15.3c1.9-.3 8.5 5.4 9.9 4.4 3.9-2.8-.2-11.2-7.4-13.2" fill="#231f20"/><path d="m19.1 2.6l-5.6 11c-1.1-.5-5.5.5-6.4 1.4l-3.1-1.2c-.9-.4-1.8 2.6-.8 3l2.9 1.1c.1 1.1.5 3.3 1.5 4.8 3.6 5.3 6.3 9.9 8.4-2.6.3-1.8-.2-3.2-.5-4.2l6-12.1c.7-1.3-1.6-2.4-2.4-1.2" fill="#42ade2"/><path d="m15.6 34.8l-1.8-10.6c-.2-1.4-2.9-.9-2.6.5l1.8 10.6 2.6-.5" fill="#e8e8e8"/><path d="m17.4 62c0 0 3.6-8 3.6-13.6 0-8.3-6.1-10.9-10.4-12.3-4.1-1.3-4.6-5-4.6-5-1 0-6.2 6.8-3 16.8 2.5 7.9-.4 14-.4 14h14.8z" fill="#42ade2"/><path d="m4.8 62h6.5c0 0 4.9-4.8 4.9-13.3 0-12.2-8.2-12.9-10.7-10.4-3.1 3.4-1.4 6.7.3 13.5 1 4-1 10.2-1 10.2" fill="#705041"/><path d="m46.5 62c0 0-3.6-8-3.6-13.6 0-8.3 6.1-10.9 10.4-12.3 4.1-1.3 4.6-5 4.6-5 1 0 6.2 6.8 3 16.8-2.5 7.9.4 14 .4 14h-14.8z" fill="#ed4c5c"/><path d="m59.1 62h-6.5c0 0-4.9-4.8-4.9-13.3 0-12.2 8.2-12.9 10.7-10.4 3.2 3.4 1.5 6.7-.2 13.5-1 4 .9 10.2.9 10.2" fill="#705041"/><path d="m41.7 32.9c0 0 3.7-1.9 7.3-4.8.5-.4.6-3.8 4.2-6.1 2.1-1.3 3.2.3 4-.1.9-.4 2.3 0 2.3 0l-6.3 10.7-11.5.3" opacity=".3" fill="#3e4347"/><path d="m60.8 23.1c-1.5-3-4.9.1-4.9.1s-.9-2.2-3.2-.3c-2.7 2.2-2.1 4.7-3.3 5.9-2.7 2-5.6 3.9-12.3 5.3-3.2.6-4.5 3.7-5.5 3.2-5.6-3.3-10.6 1.6-15.4 0-10.1-3.5-12.9 1.6-12.7 6.9.2 3.8 4.8 5.8 8.3 6.6 8.3 2.1 14.1-2.6 18.9-3.1 2.9-.3 3.5.4 5.4-1.4 1.7-1.7 2.9 1.2 17.8-11.8 0 0 2.1.2 6.5-3.5 2-1.7 2.2-4.3.4-7.9" fill="#8a6859"/><path d="m25.1 43c0 0 4.9.7 7.6-6-4.6 5.6-7.6 6-7.6 6" fill="#705041"/><path d="m32.3 47.6c0 0-6.5-2-12.7-8.7-1.1-1.2-.7-3.4-3.6-5.4l-3.1.3c-.6-.6-2.7-3.2-4.6-1.2-1.8 1.8-2.6 6.6-1.2 8.4.8 1 7 5 7.4 5.5 4.7 5.7 5.3 9.4 5.3 9.4s.8-2.2 1.2-5.1l11.3-3.2" opacity=".3" fill="#3e4347"/><path d="m60.9 41.9c-2.3-5.8-7.9-7.3-13.2-.3-3.1 4.1-9.7 2.4-13.2 7.7-2.2-3.4-7.3-2-15.4-9.6 0 0-.2-4.1-3.1-6.2-2-1.5-3.1.3-3.1.3s-3.4-3.1-4.9-.1c-1.8 3.6-1.9 6.5.5 7.9 4.1 2.5 6.5 2.8 6.5 2.8 12.8 14.5 13.8 12.1 15.5 13.4 2.9 2.5 3.8 2.1 9.6.4 4.6-1.3 11.6-1.1 17.9-7.2 2.4-2.6 4.3-5.6 2.9-9.1" fill="#8a6859"/><g fill="#705041"><path d="m46.9 42.7c0 0 6.3 5.3 10.3 4.2-3.7 2-8.3-.6-10.3-4.2"/><path d="m44 50.1c0 0-3.5 3.6-9.5-.1 6.9 1.7 9.5.1 9.5.1"/></g><g fill="#574137"><path d="m40.9 22.3c.3 1.1-.1 2.2-.9 2.4-.8.2-1.2-.6-1.6-1.7-.3-1.2 2.2-1.8 2.5-.7"/><path d="m22.7 22.3c-.3 1.1.1 2.2.9 2.4.8.2 1.2-.6 1.6-1.7.2-1.2-2.2-1.8-2.5-.7"/><path d="m22.3 29.8c0 0-1.5 1.7-1.4 2.9 0 0-1.8-1.4-1.2-2.4.5-1 2.6-.5 2.6-.5"/><path d="m40.8 29.8c0 0 1.5 1.7 1.4 2.9 0 0 1.8-1.4 1.2-2.4-.4-1-2.6-.5-2.6-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93c.svg b/riot/emojione/svg/1f93c.svg new file mode 100644 index 0000000..694ce76 --- /dev/null +++ b/riot/emojione/svg/1f93c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#eba352"><path d="m44.4 9.3c-3 3.7-4.3 7.1-12.2 11.6-2.8 1.6-3.2 5-4.3 4.8-6.3-1.3-20.4-2.7-20.4-2.7l-1.5 8.2c-.8 11.3 18.5 7.4 22.9 5.4 2.7-1.2 4.5-1.4 5.8-3.7 1.2-2.2 3.3.5 15.3-19.9l-5.6-3.7"/><path d="m46.2 31.5l9.2-7.6 3 11.6-9.3 2.7z"/></g><path d="m50.5 7.1l-14.8 8.9c-.9 4.2.9 5.8 1.2 7.4.2.7-.8 2.4-1.4 3.3-1.2 2 1.8 2.4 2.7 1.9 1 1.4.7 2.2 1.5 1.6.7-.5 2.1 2.3 1.9 3.1l10.8-1.5-1.9-24.7" fill="#ffdd67"/><path d="m43 2.9c12-3.3 16.4 7.3 16.7 15.4.2 4.3-2.8 8.4-4.8 10.1l-9.3-16.8c-1.9-.3-8.5 5.4-9.9 4.4-4-2.7.2-11.1 7.3-13.1" fill="#ffb300"/><path d="m41.6 3.9l6.1 12c-.3 1-.8 2.4-.5 4.2 2.1 12.4 4.8 7.9 8.4 2.6 1-1.5 1.5-3.7 1.5-4.8l2.9-1.1c1-.4.2-3.5-.8-3l-3.2 1.2c-.8-.9-5.3-1.9-6.4-1.4l-5.6-11c-.6-1.3-3-.4-2.4 1.3" fill="#ed4c5c"/><path d="m12.8 6l14.7 10c.9 4.2-.9 5.8-1.2 7.4-.2.7.8 2.4 1.4 3.3 1.2 2-1.8 2.4-2.7 1.9-1 1.4-.7 2.2-1.5 1.6-.7-.5-2.3 2.4-1.9 3.1.4.6-.4.8-1.2.2-.9 3.4-2.8 2.7-6.9 1.2-8.6-3.2-.7-28.7-.7-28.7" fill="#ffdd67"/><path d="m20.1 2.9c-11.9-3.3-16.3 7.3-16.6 15.4-.2 4.3 1.1 7.4 3.2 9.2l1.4-.5 9.5-15.3c1.9-.3 8.5 5.4 9.9 4.4 3.9-2.8-.2-11.2-7.4-13.2" fill="#ffb300"/><path d="m19.1 2.6l-5.6 11c-1.1-.5-5.5.5-6.4 1.4l-3.1-1.2c-.9-.4-1.8 2.6-.8 3l2.9 1.1c.1 1.1.5 3.3 1.5 4.8 3.6 5.3 6.3 9.9 8.4-2.6.3-1.8-.2-3.2-.5-4.2l6-12.1c.7-1.3-1.6-2.4-2.4-1.2" fill="#42ade2"/><path d="m15.6 34.8l-1.8-10.6c-.2-1.4-2.9-.9-2.6.5l1.8 10.6 2.6-.5" fill="#e8e8e8"/><path d="m17.4 62c0 0 3.6-8 3.6-13.6 0-8.3-6.1-10.9-10.4-12.3-4.1-1.3-4.6-5-4.6-5-1 0-6.2 6.8-3 16.8 2.5 7.9-.4 14-.4 14h14.8z" fill="#42ade2"/><path d="m4.8 62h6.5c0 0 4.9-4.8 4.9-13.3 0-12.2-8.2-12.9-10.7-10.4-3.1 3.4-1.4 6.7.3 13.5 1 4-1 10.2-1 10.2" fill="#eba352"/><path d="m46.5 62c0 0-3.6-8-3.6-13.6 0-8.3 6.1-10.9 10.4-12.3 4.1-1.3 4.6-5 4.6-5 1 0 6.2 6.8 3 16.8-2.5 7.9.4 14 .4 14h-14.8z" fill="#ed4c5c"/><path d="m59.1 62h-6.5c0 0-4.9-4.8-4.9-13.3 0-12.2 8.2-12.9 10.7-10.4 3.2 3.4 1.5 6.7-.2 13.5-1 4 .9 10.2.9 10.2" fill="#eba352"/><path d="m41.7 32.9c0 0 3.7-1.9 7.3-4.8.5-.4.6-3.8 4.2-6.1 2.1-1.3 3.2.3 4-.1.9-.4 2.3 0 2.3 0l-6.3 10.7-11.5.3" opacity=".3" fill="#3e4347"/><path d="m60.7 23.1c-1.5-3-4.9.1-4.9.1s-.8-2.2-3.1-.3c-2.7 2.2-2.1 4.7-3.3 5.9-2.7 2-5.6 3.9-12.3 5.3-3.2.6-4.5 3.7-5.5 3.2-5.6-3.3-10.6 1.6-15.4 0-10.1-3.5-12.9 1.6-12.7 6.9.2 3.8 4.8 5.8 8.3 6.6 8.3 2.1 14.1-2.6 18.9-3.1 2.9-.3 3.5.4 5.4-1.4 1.7-1.7 2.9 1.2 17.8-11.8 0 0 2.1.2 6.5-3.5 2-1.7 2.2-4.3.3-7.9" fill="#ffdd67"/><path d="m25.1 43c0 0 4.9.7 7.6-6-4.6 5.6-7.6 6-7.6 6" fill="#eba352"/><path d="m32.3 47.6c0 0-6.5-2-12.7-8.7-1.1-1.2-.7-3.4-3.6-5.4l-3.1.3c-.6-.6-2.7-3.2-4.6-1.2-1.8 1.8-2.6 6.6-1.2 8.4.8 1 7 5 7.4 5.5 4.7 5.7 5.3 9.4 5.3 9.4s.8-2.2 1.2-5.1l11.3-3.2" opacity=".3" fill="#3e4347"/><path d="m60.9 41.9c-2.3-5.8-7.9-7.3-13.2-.3-3.1 4.1-9.7 2.4-13.2 7.7-2.2-3.4-7.3-2-15.4-9.6 0 0-.2-4.1-3.1-6.2-2-1.5-3.1.3-3.1.3s-3.4-3.1-4.9-.1c-1.8 3.6-1.9 6.5.5 7.9 4.1 2.5 6.5 2.8 6.5 2.8 12.8 14.5 13.8 12.1 15.5 13.4 2.9 2.5 3.8 2.1 9.6.4 4.6-1.3 11.6-1.1 17.9-7.2 2.4-2.6 4.3-5.6 2.9-9.1" fill="#ffdd67"/><g fill="#eba352"><path d="m46.9 42.7c0 0 6.3 5.3 10.3 4.2-3.7 2-8.3-.6-10.3-4.2"/><path d="m44 50.1c0 0-3.5 3.6-9.5-.1 6.9 1.7 9.5.1 9.5.1"/></g><g fill="#937237"><path d="m40.9 22.3c.3 1.1-.1 2.2-.9 2.4-.8.2-1.2-.6-1.6-1.7-.3-1.2 2.2-1.8 2.5-.7"/><path d="m22.7 22.3c-.3 1.1.1 2.2.9 2.4.8.2 1.2-.6 1.6-1.7.2-1.2-2.2-1.8-2.5-.7"/><path d="m22.3 29.8c0 0-1.5 1.7-1.4 2.9 0 0-1.8-1.4-1.2-2.4.5-1 2.6-.5 2.6-.5"/><path d="m40.8 29.8c0 0 1.5 1.7 1.4 2.9 0 0 1.8-1.4 1.2-2.4-.4-1-2.6-.5-2.6-.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93d-1f3fb.svg b/riot/emojione/svg/1f93d-1f3fb.svg new file mode 100644 index 0000000..ab8d140 --- /dev/null +++ b/riot/emojione/svg/1f93d-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m48.2 14.7l-3.3 8.4-6.5 2.8c0 0-10 2.7-10.4 2.8l-10.2 3.7c-.8.2-1.5.7-1.9 1.4l-4.2 8.6c-1.7-.4-2.1.4-3.4 4-1.2 3.1 1.5 4.1 2 4.3 2.9 1.1 4.3-.8 5-2.3.6-.1 1.2-.5 1.4-1.1l.4-1.2c.2-.7 0-1.4-.4-1.8l3.5-7.1 2.7-1c-.4 5.7 2.1 12.8-.1 19.8l19.1-.7c-5.5-6.9-2-15.6-1.8-22.6l8.4-5.4c.4-.3.8-.7 1-1.2l3.7-9.5-5-1.9"/><path d="m32.7 20.6l3.6-1.1-2.2 11.2-7.3-1.4z"/></g><path d="m26.8 24.9c1.9 1.7.1 4.4.1 4.4 3 .6 6.2-4.8 6.9-8.4l-7 4" fill="#e6b796"/><path d="m37.8 6.4l-13.9 1.9c-2.2 2.7-1.4 4.5-1.8 5.8-.1.6-1.5 1.4-2.3 1.8-1.6 1 .5 2.4 1.4 2.4.3 1.4-1.5 1.8 2.5 1.8 0 0-4.3.9-1.6 2.2-.6 1.5-1.5 4.4 7.3 3 2.6-.4 4.3-4.5 4.3-4.5l4.3.2-.2-14.6" fill="#ffe1bd"/><g fill="#664e27"><path d="m25.4 14.8c-.2.8-.8 1.4-1.3 1.3-.6-.1-.6-.8-.4-1.6.2-.8.5-1.4 1-1.3.5 0 .8.7.7 1.6"/><path d="m25.2 20.1c0 0-1.8.9-2.4 1-1.3.4-1.4-.1-.6-.4.6-.3 1.7-.6 1.7-.6h1.3"/></g><path d="m57 3.1c4.6 2.4 6.4 8 3.9 12.5-2.5 4.5-8.2 6.2-12.8 3.8-4.6-2.4-6.4-8-3.9-12.5 2.4-4.5 8.1-6.2 12.8-3.8" fill="#ffce31"/><path d="m59.4 4.9c-4.9.6-8.3 2.4-9.6 3.3-.3-.5-.5-1-.7-1.7.7-.7 2.9-2.7 7.2-3.7-.9-.4-1.8-.6-2.7-.7-2.3.8-3.9 1.9-4.8 2.7 0-.6 0-1.3.1-2.1-.6.2-1.1.5-1.6.8-.4 5.6 3.2 7.7 4.5 8.3 0 .4.1 1.1-.2 2-1.4-.6-4.8-2.5-7.6-6.7-.3.5-.5 1.1-.7 1.6 2.9 4 6.3 5.8 7.8 6.5-.3.5-.6 1-1.1 1.4-1-.2-3.9-1.2-7-4.6.1.9.3 1.8.6 2.7 2 1.7 3.8 2.6 5 3-.5.4-1.2.7-1.9 1 .4.3.8.6 1.3.8.1 0 .2.1.3.1 5-2.5 5.1-6.6 5-8 .3-.2.9-.6 1.7-.8 0 1.6-.1 5.4-2 9.8.6 0 1.2-.1 1.7-.2 1.8-4.5 1.8-8.2 1.8-9.8.6 0 1.2 0 1.8.2.3.9.9 3.8-.4 8.1.7-.5 1.4-1.1 2-1.8.5-2.5.3-4.5.1-5.7.6.3 1.2.7 1.9 1.2.1-.6.1-1.2.1-1.8-4.7-3.2-8.4-1.2-9.6-.4-.4-.2-1-.5-1.6-1.1 1.3-.8 4.8-2.6 9.7-3-.3-.5-.7-.9-1.1-1.4" fill="#f2b200"/><g fill="#e6b796"><ellipse transform="matrix(.9994-.0353.0353.9994-1.2782.9539)" cx="26.4" cy="36.7" rx="1.1" ry="1.5"/><ellipse transform="matrix(.9994-.0348.0348.9994-1.2043 1.1884)" cx="33.5" cy="35.2" rx="1.1" ry="1.5"/></g><path d="m23.3 9.2c0 0 11.6.5 12.1 14.3 0 0 7.4-2 7.1-11-.3-9.1-12.5-14.8-19.2-3.3" fill="#ed4c5c"/><path d="m42.2 10.2c-2.9 1.7-3.8 4.9-3.8 4.9-1.4-1.3-2.5-1.2-2.5-1.2-1 .8-1.3 2.8-1.3 4.7.4 1.4.7 3 .7 4.8 0 0 7.4-2 7.1-11 .1-.8 0-1.5-.2-2.2" opacity=".5" fill="#3e4347"/><path d="m37.9 16.6c.1 1.6-1.2 3-2.9 3.1-1.6.1-3-1.2-3.1-2.9-.1-1.6 1.2-3 2.9-3.1 1.7 0 3.1 1.3 3.1 2.9" fill="#ed4c5c"/><g fill="#3e4347"><circle cx="33.9" cy="15.3" r=".5"/><circle cx="35.9" cy="15.2" r=".5"/><path d="m34 17.7c-.3 0-.5.2-.5.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.3-.2-.5-.5-.5"/><circle cx="36" cy="18.1" r=".5"/><circle cx="33" cy="16.8" r=".5"/><circle cx="35" cy="16.7" r=".5"/><circle cx="37" cy="16.6" r=".5"/></g><path d="m57.7 51.7c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2c-1.6 0-1.9 1.2-4.3 1.2s-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-4.3-1.2-4.3-1.2v11.5h60v-11.5c.2 0-1.7 1.2-4.1 1.2" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m35.4 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/><path d="m47.1 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m58.7 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93d-1f3fc.svg b/riot/emojione/svg/1f93d-1f3fc.svg new file mode 100644 index 0000000..85395e0 --- /dev/null +++ b/riot/emojione/svg/1f93d-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m48.2 14.7l-3.3 8.4-6.5 2.8c0 0-10 2.7-10.4 2.8l-10.2 3.7c-.8.2-1.5.7-1.9 1.4l-4.2 8.6c-1.7-.4-2.1.4-3.4 4-1.2 3.1 1.5 4.1 2 4.3 2.9 1.1 4.3-.8 5-2.3.6-.1 1.2-.5 1.4-1.1l.4-1.2c.2-.7.1-1.4-.4-1.8l3.5-7.1 2.7-1c-.4 5.7 2.1 12.8-.1 19.8l19.1-.7c-5.5-6.9-2-15.6-1.8-22.6l8.4-5.4c.4-.3.8-.7 1-1.2l3.7-9.5-5-1.9"/><path d="m32.7 20.6l3.6-1.1-2.2 11.2-7.3-1.4z"/></g><path d="m26.8 24.9c1.9 1.7.1 4.4.1 4.4 3 .6 6.2-4.8 6.9-8.4l-7 4" fill="#e0a372"/><path d="m37.8 6.4l-13.9 1.9c-2.2 2.7-1.4 4.5-1.8 5.8-.1.6-1.5 1.4-2.3 1.8-1.6 1 .5 2.4 1.4 2.4.3 1.4-1.5 1.8 2.5 1.8 0 0-4.3.9-1.6 2.2-.6 1.5-1.5 4.4 7.3 3 2.6-.4 4.3-4.5 4.3-4.5l4.3.2-.2-14.6" fill="#fed0ac"/><g fill="#664e27"><path d="m25.4 14.8c-.2.8-.8 1.4-1.3 1.3-.6-.1-.6-.8-.4-1.6.2-.8.5-1.4 1-1.3.5 0 .8.7.7 1.6"/><path d="m25.2 20.1c0 0-1.8.9-2.4 1-1.3.4-1.4-.1-.6-.4.6-.3 1.7-.6 1.7-.6h1.3"/></g><path d="m57 3.1c4.6 2.4 6.4 8 3.9 12.5-2.5 4.5-8.2 6.2-12.8 3.8-4.6-2.4-6.4-8-3.9-12.5 2.4-4.5 8.1-6.2 12.8-3.8" fill="#ffce31"/><path d="m59.4 4.9c-4.9.6-8.3 2.4-9.6 3.3-.3-.5-.5-1-.7-1.7.7-.7 2.9-2.7 7.2-3.7-.9-.4-1.8-.6-2.7-.7-2.3.8-3.9 1.9-4.8 2.7 0-.6 0-1.3.1-2.1-.6.2-1.1.5-1.6.8-.4 5.6 3.2 7.7 4.5 8.3 0 .4.1 1.1-.2 2-1.4-.6-4.8-2.5-7.6-6.7-.3.5-.5 1.1-.7 1.6 2.9 4 6.3 5.8 7.8 6.5-.3.5-.6 1-1.1 1.4-1-.2-3.9-1.2-7-4.6.1.9.3 1.8.6 2.7 2 1.7 3.8 2.6 5 3-.5.4-1.2.7-1.9 1 .4.3.8.6 1.3.8.1 0 .2.1.3.1 5-2.5 5.1-6.6 5-8 .3-.2.9-.6 1.7-.8 0 1.6-.1 5.4-2 9.8.6 0 1.2-.1 1.7-.2 1.8-4.5 1.8-8.2 1.8-9.8.6 0 1.2 0 1.8.2.3.9.9 3.8-.4 8.1.7-.5 1.4-1.1 2-1.8.5-2.5.3-4.5.1-5.7.6.3 1.2.7 1.9 1.2.1-.6.1-1.2.1-1.8-4.7-3.2-8.4-1.2-9.6-.4-.4-.2-1-.5-1.6-1.1 1.3-.8 4.8-2.6 9.7-3-.3-.5-.7-.9-1.1-1.4" fill="#f2b200"/><g fill="#e0a372"><ellipse transform="matrix(.9994-.0353.0353.9994-1.2782.9539)" cx="26.4" cy="36.7" rx="1.1" ry="1.5"/><ellipse transform="matrix(.9994-.0348.0348.9994-1.2043 1.1884)" cx="33.5" cy="35.2" rx="1.1" ry="1.5"/></g><path d="m23.3 9.2c0 0 11.6.5 12.1 14.3 0 0 7.4-2 7.1-11-.3-9.1-12.5-14.8-19.2-3.3" fill="#ed4c5c"/><path d="m42.2 10.2c-2.9 1.7-3.8 4.9-3.8 4.9-1.4-1.3-2.5-1.2-2.5-1.2-1 .8-1.3 2.8-1.3 4.7.4 1.4.7 3 .7 4.8 0 0 7.4-2 7.1-11 .1-.8 0-1.5-.2-2.2" opacity=".5" fill="#3e4347"/><ellipse transform="matrix(.9994-.0348.0348.9994-.5599 1.2271)" cx="35" cy="16.7" rx="3" ry="3" fill="#ed4c5c"/><g fill="#3e4347"><circle cx="33.9" cy="15.3" r=".5"/><circle cx="35.9" cy="15.2" r=".5"/><circle cx="34" cy="18.2" r=".5"/><circle cx="36" cy="18.1" r=".5"/><circle cx="33" cy="16.8" r=".5"/><circle cx="35" cy="16.7" r=".5"/><path d="m36.9 16.1c-.3 0-.5.2-.5.5 0 .3.2.5.5.5.3 0 .5-.2.5-.5 0-.3-.2-.5-.5-.5"/></g><path d="m57.7 51.7c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2c-1.6 0-1.9 1.2-4.3 1.2-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-4.3-1.2-4.3-1.2v11.5h60v-11.5c.2 0-1.7 1.2-4.1 1.2" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m35.4 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/><path d="m47 60c-6.8.7-11.4-3.5-18.5-1.1 5.5-.3 13.7 2.9 18.5 1.1"/><path d="m58.7 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93d-1f3fd.svg b/riot/emojione/svg/1f93d-1f3fd.svg new file mode 100644 index 0000000..3977b73 --- /dev/null +++ b/riot/emojione/svg/1f93d-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m48.2 14.7l-3.3 8.4-6.5 2.8c0 0-10 2.7-10.4 2.8l-10.2 3.7c-.8.2-1.5.7-1.9 1.4l-4.2 8.6c-1.7-.4-2.1.4-3.4 4-1.2 3.1 1.5 4.1 2 4.3 2.9 1.1 4.3-.8 5-2.3.6-.1 1.2-.5 1.4-1.1l.4-1.2c.2-.7 0-1.4-.4-1.8l3.5-7.1 2.7-1c-.4 5.7 2.1 12.8-.1 19.8l19.1-.7c-5.5-6.9-2-15.6-1.8-22.6l8.4-5.4c.4-.3.8-.7 1-1.2l3.7-9.5-5-1.9"/><path d="m32.7 20.6l3.6-1.1-2.2 11.2-7.3-1.4z"/></g><path d="m26.8 24.9c1.9 1.7.1 4.4.1 4.4 3 .6 6.2-4.8 6.9-8.4l-7 4" fill="#b58360"/><path d="m37.8 6.4l-13.9 1.9c-2.2 2.7-1.4 4.5-1.8 5.8-.1.6-1.5 1.4-2.3 1.8-1.6 1 .5 2.4 1.4 2.4.3 1.4-1.5 1.8 2.5 1.8 0 0-4.3.9-1.6 2.2-.6 1.5-1.5 4.4 7.3 3 2.6-.4 4.3-4.5 4.3-4.5l4.3.2-.2-14.6" fill="#d6a57c"/><g fill="#664e27"><path d="m25.4 14.8c-.2.8-.8 1.4-1.3 1.3-.6-.1-.6-.8-.4-1.6.2-.8.5-1.4 1-1.3.5 0 .8.7.7 1.6"/><path d="m25.2 20.1c0 0-1.8.9-2.4 1-1.3.4-1.4-.1-.6-.4.6-.3 1.7-.6 1.7-.6h1.3"/></g><path d="m57 3.1c4.6 2.4 6.4 8 3.9 12.5-2.5 4.5-8.2 6.2-12.8 3.8-4.6-2.4-6.4-8-3.9-12.5 2.4-4.5 8.1-6.2 12.8-3.8" fill="#ffce31"/><path d="m59.4 4.9c-4.9.6-8.3 2.4-9.6 3.3-.3-.5-.5-1-.7-1.7.7-.7 2.9-2.7 7.2-3.7-.9-.4-1.8-.6-2.7-.7-2.3.8-3.9 1.9-4.8 2.7 0-.6 0-1.3.1-2.1-.6.2-1.1.5-1.6.8-.4 5.6 3.2 7.7 4.5 8.3 0 .4.1 1.1-.2 2-1.4-.6-4.8-2.5-7.6-6.7-.3.5-.5 1.1-.7 1.6 2.9 4 6.3 5.8 7.8 6.5-.3.5-.6 1-1.1 1.4-1-.2-3.9-1.2-7-4.6.1.9.3 1.8.6 2.7 2 1.7 3.8 2.6 5 3-.5.4-1.2.7-1.9 1 .4.3.8.6 1.3.8.1 0 .2.1.3.1 5-2.5 5.1-6.6 5-8 .3-.2.9-.6 1.7-.8 0 1.6-.1 5.4-2 9.8.6 0 1.2-.1 1.7-.2 1.8-4.5 1.8-8.2 1.8-9.8.6 0 1.2 0 1.8.2.3.9.9 3.8-.4 8.1.7-.5 1.4-1.1 2-1.8.5-2.5.3-4.5.1-5.7.6.3 1.2.7 1.9 1.2.1-.6.1-1.2.1-1.8-4.7-3.2-8.4-1.2-9.6-.4-.4-.2-1-.5-1.6-1.1 1.3-.8 4.8-2.6 9.7-3-.3-.5-.7-.9-1.1-1.4" fill="#f2b200"/><g fill="#b58360"><ellipse transform="matrix(.9994-.0353.0353.9994-1.2782.9539)" cx="26.4" cy="36.7" rx="1.1" ry="1.5"/><ellipse transform="matrix(.9994-.0348.0348.9994-1.2043 1.1884)" cx="33.5" cy="35.2" rx="1.1" ry="1.5"/></g><path d="m23.3 9.2c0 0 11.6.5 12.1 14.3 0 0 7.4-2 7.1-11-.3-9.1-12.5-14.8-19.2-3.3" fill="#ed4c5c"/><path d="m42.2 10.2c-2.9 1.7-3.8 4.9-3.8 4.9-1.4-1.3-2.5-1.2-2.5-1.2-1 .8-1.3 2.8-1.3 4.7.4 1.4.7 3 .7 4.8 0 0 7.4-2 7.1-11 .1-.8 0-1.5-.2-2.2" opacity=".5" fill="#3e4347"/><path d="m37.9 16.6c.1 1.6-1.2 3-2.9 3.1-1.6.1-3-1.2-3.1-2.9-.1-1.6 1.2-3 2.9-3.1 1.7 0 3.1 1.3 3.1 2.9" fill="#ed4c5c"/><g fill="#3e4347"><circle cx="33.9" cy="15.3" r=".5"/><circle cx="35.9" cy="15.2" r=".5"/><path d="m34 17.7c-.3 0-.5.2-.5.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.3-.2-.5-.5-.5"/><circle cx="36" cy="18.1" r=".5"/><circle cx="33" cy="16.8" r=".5"/><circle cx="35" cy="16.7" r=".5"/><path d="m36.9 16.1c-.3 0-.5.2-.5.5 0 .3.2.5.5.5.3 0 .5-.2.5-.5 0-.3-.2-.5-.5-.5"/></g><path d="m57.7 51.7c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2c-1.6 0-1.9 1.2-4.3 1.2s-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-4.3-1.2-4.3-1.2v11.5h60v-11.5c.2 0-1.7 1.2-4.1 1.2" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m35.4 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/><path d="m47.1 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m58.7 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93d-1f3fe.svg b/riot/emojione/svg/1f93d-1f3fe.svg new file mode 100644 index 0000000..d25f2bf --- /dev/null +++ b/riot/emojione/svg/1f93d-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m48.2 14.7l-3.3 8.4-6.5 2.8c0 0-10 2.7-10.4 2.8l-10.2 3.7c-.8.2-1.5.7-1.9 1.4l-4.2 8.6c-1.7-.4-2.1.4-3.4 4-1.2 3.1 1.5 4.1 2 4.3 2.9 1.1 4.3-.8 5-2.3.6-.1 1.2-.5 1.4-1.1l.4-1.2c.2-.7.1-1.4-.4-1.8l3.5-7.1 2.7-1c-.4 5.7 2.1 12.8-.1 19.8l19.1-.7c-5.5-6.9-2-15.6-1.8-22.6l8.4-5.4c.4-.3.8-.7 1-1.2l3.7-9.5-5-1.9"/><path d="m32.7 20.6l3.6-1.1-2.2 11.2-7.3-1.4z"/></g><path d="m26.8 24.9c1.9 1.7.1 4.4.1 4.4 3 .6 6.2-4.8 6.9-8.4l-7 4" fill="#935e3e"/><path d="m37.8 6.4l-13.9 1.9c-2.2 2.7-1.4 4.5-1.8 5.8-.1.6-1.5 1.4-2.3 1.8-1.6 1 .5 2.4 1.4 2.4.3 1.4-1.5 1.8 2.5 1.8 0 0-4.3.9-1.6 2.2-.6 1.5-1.5 4.4 7.3 3 2.6-.4 4.3-4.5 4.3-4.5l4.3.2-.2-14.6" fill="#b47d56"/><g fill="#664e27"><path d="m25.4 14.8c-.2.8-.8 1.4-1.3 1.3-.6-.1-.6-.8-.4-1.6.2-.8.5-1.4 1-1.3.5 0 .8.7.7 1.6"/><path d="m25.2 20.1c0 0-1.8.9-2.4 1-1.3.4-1.4-.1-.6-.4.6-.3 1.7-.6 1.7-.6h1.3"/></g><path d="m57 3.1c4.6 2.4 6.4 8 3.9 12.5-2.5 4.5-8.2 6.2-12.8 3.8-4.6-2.4-6.4-8-3.9-12.5 2.4-4.5 8.1-6.2 12.8-3.8" fill="#ffce31"/><path d="m59.4 4.9c-4.9.6-8.3 2.4-9.6 3.3-.3-.5-.5-1-.7-1.7.7-.7 2.9-2.7 7.2-3.7-.9-.4-1.8-.6-2.7-.7-2.3.8-3.9 1.9-4.8 2.7 0-.6 0-1.3.1-2.1-.6.2-1.1.5-1.6.8-.4 5.6 3.2 7.7 4.5 8.3 0 .4.1 1.1-.2 2-1.4-.6-4.8-2.5-7.6-6.7-.3.5-.5 1.1-.7 1.6 2.9 4 6.3 5.8 7.8 6.5-.3.5-.6 1-1.1 1.4-1-.2-3.9-1.2-7-4.6.1.9.3 1.8.6 2.7 2 1.7 3.8 2.6 5 3-.5.4-1.2.7-1.9 1 .4.3.8.6 1.3.8.1 0 .2.1.3.1 5-2.5 5.1-6.6 5-8 .3-.2.9-.6 1.7-.8 0 1.6-.1 5.4-2 9.8.6 0 1.2-.1 1.7-.2 1.8-4.5 1.8-8.2 1.8-9.8.6 0 1.2 0 1.8.2.3.9.9 3.8-.4 8.1.7-.5 1.4-1.1 2-1.8.5-2.5.3-4.5.1-5.7.6.3 1.2.7 1.9 1.2.1-.6.1-1.2.1-1.8-4.7-3.2-8.4-1.2-9.6-.4-.4-.2-1-.5-1.6-1.1 1.3-.8 4.8-2.6 9.7-3-.3-.5-.7-.9-1.1-1.4" fill="#f2b200"/><g fill="#935e3e"><ellipse transform="matrix(.9994-.0353.0353.9994-1.2782.9539)" cx="26.4" cy="36.7" rx="1.1" ry="1.5"/><ellipse transform="matrix(.9994-.0348.0348.9994-1.2043 1.1884)" cx="33.5" cy="35.2" rx="1.1" ry="1.5"/></g><path d="m23.3 9.2c0 0 11.6.5 12.1 14.3 0 0 7.4-2 7.1-11-.3-9.1-12.5-14.8-19.2-3.3" fill="#ed4c5c"/><path d="m42.2 10.2c-2.9 1.7-3.8 4.9-3.8 4.9-1.4-1.3-2.5-1.2-2.5-1.2-1 .8-1.3 2.8-1.3 4.7.4 1.4.7 3 .7 4.8 0 0 7.4-2 7.1-11 .1-.8 0-1.5-.2-2.2" opacity=".5" fill="#3e4347"/><ellipse transform="matrix(.9994-.0348.0348.9994-.5599 1.2272)" cx="35" cy="16.7" rx="3" ry="3" fill="#ed4c5c"/><g fill="#3e4347"><circle cx="33.9" cy="15.3" r=".5"/><circle cx="35.9" cy="15.2" r=".5"/><circle cx="34" cy="18.2" r=".5"/><circle cx="36" cy="18.1" r=".5"/><circle cx="33" cy="16.8" r=".5"/><circle cx="35" cy="16.7" r=".5"/><path d="m36.9 16.1c-.3 0-.5.2-.5.5 0 .3.2.5.5.5.3 0 .5-.2.5-.5 0-.3-.2-.5-.5-.5"/></g><path d="m57.7 51.7c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2c-1.6 0-1.9 1.2-4.3 1.2s-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-4.3-1.2-4.3-1.2v11.5h60v-11.5c.2 0-1.7 1.2-4.1 1.2" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m35.4 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/><path d="m47.1 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m58.7 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93d-1f3ff.svg b/riot/emojione/svg/1f93d-1f3ff.svg new file mode 100644 index 0000000..16cd1bb --- /dev/null +++ b/riot/emojione/svg/1f93d-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m48.2 14.7l-3.3 8.4-6.5 2.8c0 0-10 2.7-10.4 2.8l-10.2 3.7c-.8.2-1.5.7-1.9 1.4l-4.2 8.6c-1.7-.4-2.1.4-3.4 4-1.2 3.1 1.5 4.1 2 4.3 2.9 1.1 4.3-.8 5-2.3.6-.1 1.2-.5 1.4-1.1l.4-1.2c.2-.7.1-1.4-.4-1.8l3.5-7.1 2.7-1c-.4 5.7 2.1 12.8-.1 19.8l19.1-.7c-5.5-6.9-2-15.6-1.8-22.6l8.4-5.4c.4-.3.8-.7 1-1.2l3.7-9.5-5-1.9"/><path d="m32.7 20.6l3.6-1.1-2.2 11.2-7.3-1.4z"/></g><path d="m26.8 24.9c1.9 1.7.1 4.4.1 4.4 3 .6 6.2-4.8 6.9-8.4l-7 4" fill="#705041"/><path d="m37.8 6.4l-13.9 1.9c-2.2 2.7-1.4 4.5-1.8 5.8-.1.6-1.5 1.4-2.3 1.8-1.6 1 .5 2.4 1.4 2.4.3 1.4-1.5 1.8 2.5 1.8 0 0-4.3.9-1.6 2.2-.6 1.5-1.5 4.4 7.3 3 2.6-.4 4.3-4.5 4.3-4.5l4.3.2-.2-14.6" fill="#8a6859"/><g fill="#574137"><path d="m25.4 14.8c-.2.8-.8 1.4-1.3 1.3-.6-.1-.6-.8-.4-1.6.2-.8.5-1.4 1-1.3.5 0 .8.7.7 1.6"/><path d="m25.2 20.1c0 0-1.8.9-2.4 1-1.3.4-1.4-.1-.6-.4.6-.3 1.7-.6 1.7-.6h1.3"/></g><path d="m57 3.1c4.6 2.4 6.4 8 3.9 12.5-2.5 4.5-8.2 6.2-12.8 3.8-4.6-2.4-6.4-8-3.9-12.5 2.4-4.5 8.1-6.2 12.8-3.8" fill="#ffce31"/><path d="m59.4 4.9c-4.9.6-8.3 2.4-9.6 3.3-.3-.5-.5-1-.7-1.7.7-.7 2.9-2.7 7.2-3.7-.9-.4-1.8-.6-2.7-.7-2.3.8-3.9 1.9-4.8 2.7 0-.6 0-1.3.1-2.1-.6.2-1.1.5-1.6.8-.4 5.6 3.2 7.7 4.5 8.3 0 .4.1 1.1-.2 2-1.4-.6-4.8-2.5-7.6-6.7-.3.5-.5 1.1-.7 1.6 2.9 4 6.3 5.8 7.8 6.5-.3.5-.6 1-1.1 1.4-1-.2-3.9-1.2-7-4.6.1.9.3 1.8.6 2.7 2 1.7 3.8 2.6 5 3-.5.4-1.2.7-1.9 1 .4.3.8.6 1.3.8.1 0 .2.1.3.1 5-2.5 5.1-6.6 5-8 .3-.2.9-.6 1.7-.8 0 1.6-.1 5.4-2 9.8.6 0 1.2-.1 1.7-.2 1.8-4.5 1.8-8.2 1.8-9.8.6 0 1.2 0 1.8.2.3.9.9 3.8-.4 8.1.7-.5 1.4-1.1 2-1.8.5-2.5.3-4.5.1-5.7.6.3 1.2.7 1.9 1.2.1-.6.1-1.2.1-1.8-4.7-3.2-8.4-1.2-9.6-.4-.4-.2-1-.5-1.6-1.1 1.3-.8 4.8-2.6 9.7-3-.3-.5-.7-.9-1.1-1.4" fill="#f2b200"/><g fill="#705041"><ellipse transform="matrix(.9994-.0353.0353.9994-1.2782.9539)" cx="26.4" cy="36.7" rx="1.1" ry="1.5"/><ellipse transform="matrix(.9994-.0348.0348.9994-1.2043 1.1884)" cx="33.5" cy="35.2" rx="1.1" ry="1.5"/></g><path d="m23.3 9.2c0 0 11.6.5 12.1 14.3 0 0 7.4-2 7.1-11-.3-9.1-12.5-14.8-19.2-3.3" fill="#ed4c5c"/><path d="m42.2 10.2c-2.9 1.7-3.8 4.9-3.8 4.9-1.4-1.3-2.5-1.2-2.5-1.2-1 .8-1.3 2.8-1.3 4.7.4 1.4.7 3 .7 4.8 0 0 7.4-2 7.1-11 .1-.8 0-1.5-.2-2.2" opacity=".5" fill="#3e4347"/><ellipse transform="matrix(.9994-.0348.0348.9994-.5599 1.2272)" cx="35" cy="16.7" rx="3" ry="3" fill="#ed4c5c"/><g fill="#3e4347"><circle cx="33.9" cy="15.3" r=".5"/><circle cx="35.9" cy="15.2" r=".5"/><circle cx="34" cy="18.2" r=".5"/><circle cx="36" cy="18.1" r=".5"/><circle cx="33" cy="16.8" r=".5"/><circle cx="35" cy="16.7" r=".5"/><path d="m36.9 16.1c-.3 0-.5.2-.5.5 0 .3.2.5.5.5.3 0 .5-.2.5-.5 0-.3-.2-.5-.5-.5"/></g><path d="m57.7 51.7c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2c-1.6 0-1.9 1.2-4.3 1.2s-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-4.3-1.2-4.3-1.2v11.5h60v-11.5c.2 0-1.7 1.2-4.1 1.2" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m35.4 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/><path d="m47.1 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m58.7 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93d.svg b/riot/emojione/svg/1f93d.svg new file mode 100644 index 0000000..1ba0ab8 --- /dev/null +++ b/riot/emojione/svg/1f93d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m48.2 14.7l-3.3 8.4-6.5 2.8c0 0-10 2.7-10.4 2.8l-10.2 3.7c-.8.2-1.5.7-1.9 1.4l-4.2 8.6c-1.7-.4-2.1.4-3.4 4-1.2 3.1 1.5 4.1 2 4.3 2.9 1.1 4.3-.8 5-2.3.6-.1 1.2-.5 1.4-1.1l.4-1.2c.2-.7 0-1.4-.4-1.8l3.5-7.1 2.7-1c-.4 5.7 2.1 12.8-.1 19.8l19.1-.7c-5.5-6.9-2-15.6-1.8-22.6l8.4-5.4c.4-.3.8-.7 1-1.2l3.7-9.5-5-1.9"/><path d="m32.7 20.6l3.6-1.1-2.2 11.2-7.3-1.4z"/></g><path d="m26.8 24.9c1.9 1.7.1 4.4.1 4.4 3 .6 6.2-4.8 6.9-8.4l-7 4" fill="#eba352"/><path d="m37.8 6.4l-13.9 1.9c-2.2 2.7-1.4 4.5-1.8 5.8-.1.6-1.5 1.4-2.3 1.8-1.6 1 .5 2.4 1.4 2.4.3 1.4-1.5 1.8 2.5 1.8 0 0-4.3.9-1.6 2.2-.6 1.5-1.5 4.4 7.3 3 2.6-.4 4.3-4.5 4.3-4.5l4.3.2-.2-14.6" fill="#ffdd67"/><g fill="#937237"><path d="m25.4 14.8c-.2.8-.8 1.4-1.3 1.3-.6-.1-.6-.8-.4-1.6.2-.8.5-1.4 1-1.3s.8.7.7 1.6"/><path d="m25.2 20.1c0 0-1.8.9-2.4 1-1.3.4-1.4-.1-.6-.4.6-.3 1.7-.6 1.7-.6h1.3"/></g><path d="m57 3.1c4.6 2.4 6.4 8 3.9 12.5-2.5 4.5-8.2 6.2-12.8 3.8-4.6-2.4-6.4-8-3.9-12.5 2.4-4.5 8.1-6.2 12.8-3.8" fill="#ffce31"/><path d="m59.4 4.9c-4.9.6-8.3 2.4-9.6 3.3-.3-.5-.5-1-.7-1.7.7-.7 2.9-2.7 7.2-3.7-.9-.4-1.8-.6-2.7-.7-2.3.8-3.9 1.9-4.8 2.7 0-.6 0-1.3.1-2.1-.6.2-1.1.5-1.6.8-.4 5.6 3.2 7.7 4.5 8.3 0 .4.1 1.1-.2 2-1.4-.6-4.8-2.5-7.6-6.7-.3.5-.5 1.1-.7 1.6 2.9 4 6.3 5.8 7.8 6.5-.3.5-.6 1-1.1 1.4-1-.2-3.9-1.2-7-4.6.1.9.3 1.8.6 2.7 2 1.7 3.8 2.6 5 3-.5.4-1.2.7-1.9 1 .4.3.8.6 1.3.8.1 0 .2.1.3.1 5-2.5 5.1-6.6 5-8 .3-.2.9-.6 1.7-.8 0 1.6-.1 5.4-2 9.8.6 0 1.2-.1 1.7-.2 1.8-4.5 1.8-8.2 1.8-9.8.6 0 1.2 0 1.8.2.3.9.9 3.8-.4 8.1.7-.5 1.4-1.1 2-1.8.5-2.5.3-4.5.1-5.7.6.3 1.2.7 1.9 1.2.1-.6.1-1.2.1-1.8-4.7-3.2-8.4-1.2-9.6-.4-.4-.2-1-.5-1.6-1.1 1.3-.8 4.8-2.6 9.7-3-.3-.5-.7-.9-1.1-1.4" fill="#f2b200"/><g fill="#eba352"><ellipse transform="matrix(.9994-.0353.0353.9994-1.2782.9539)" cx="26.4" cy="36.7" rx="1.1" ry="1.5"/><path d="m34.6 35.2c0 .8-.4 1.5-1.1 1.5-.6 0-1.1-.6-1.2-1.4 0-.8.4-1.5 1.1-1.5.7-.1 1.2.5 1.2 1.4"/></g><path d="m23.3 9.2c0 0 11.6.5 12.1 14.3 0 0 7.4-2 7.1-11-.3-9.1-12.5-14.8-19.2-3.3" fill="#ed4c5c"/><path d="m42.2 10.2c-2.9 1.7-3.8 4.9-3.8 4.9-1.4-1.3-2.5-1.2-2.5-1.2-1 .8-1.3 2.8-1.3 4.7.4 1.4.7 3 .7 4.8 0 0 7.4-2 7.1-11 .1-.8 0-1.5-.2-2.2" opacity=".5" fill="#3e4347"/><path d="m37.9 16.6c.1 1.6-1.2 3-2.9 3.1-1.6.1-3-1.2-3.1-2.9-.1-1.6 1.2-3 2.9-3.1 1.7 0 3.1 1.3 3.1 2.9" fill="#ed4c5c"/><g fill="#3e4347"><circle cx="33.9" cy="15.3" r=".5"/><circle cx="35.9" cy="15.2" r=".5"/><path d="m34 17.7c-.3 0-.5.2-.5.5 0 .3.2.5.5.5s.5-.2.5-.5c0-.3-.2-.5-.5-.5"/><circle cx="36" cy="18.1" r=".5"/><path d="m33 16.3c-.3 0-.5.2-.5.5 0 .3.2.5.5.5.3 0 .5-.2.5-.5 0-.3-.3-.5-.5-.5"/><circle cx="35" cy="16.7" r=".5"/><path d="m36.9 16.1c-.3 0-.5.2-.5.5 0 .3.2.5.5.5.3 0 .5-.2.5-.5 0-.3-.2-.5-.5-.5"/></g><path d="m57.7 51.7c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2c-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2c-1.6 0-1.9 1.2-4.3 1.2-2.4 0-2.7-1.2-4.3-1.2s-1.9 1.2-4.3 1.2-2.7-1.2-4.3-1.2-1.9 1.2-4.3 1.2c-2.4 0-4.3-1.2-4.3-1.2v11.5h60v-11.5c.2 0-1.7 1.2-4.1 1.2" fill="#75d6ff"/><g fill="#42ade2"><path d="m23.8 60c-6.8.7-11.4-3.5-18.5-1.1 5.4-.3 13.6 2.9 18.5 1.1"/><path d="m35.4 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/><path d="m47 60c-6.8.7-11.4-3.5-18.5-1.1 5.5-.3 13.7 2.9 18.5 1.1"/><path d="m58.7 55.4c-6.8.7-11.5-3.6-18.5-1.1 5.5-.3 13.6 3 18.5 1.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93e-1f3fb.svg b/riot/emojione/svg/1f93e-1f3fb.svg new file mode 100644 index 0000000..58ad79f --- /dev/null +++ b/riot/emojione/svg/1f93e-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffe1bd" d="m33.5 18l-3.1-1.8v10.8h6.9z"/><path d="m38.2 22.9c-2 1.3-.9 4.1-.9 4.1-2.8 0-4.8-5.6-4.8-9l5.7 4.9" fill="#e6b796"/><path d="m31.4 3.9l12.4 4.3c1.6 2.9.5 4.4.6 5.6 0 .6 1.1 1.6 1.7 2.1 1.3 1.2-.9 2.1-1.7 2-.5 1.2 1 2-2.7 1.2 0 0 3.8 1.6 1.1 2.3.3 1.5.5 4.3-7.2 1.4-2.3-.8-3.1-4.8-3.1-4.8l-3.9-.7 2.8-13.4" fill="#ffe1bd"/><path d="m40.2 2.9c-8.2-2.7-12.6 1.5-13.4 3.4-2.1 5-.3 10.6 3.5 14.8 0 0 1.8-.8 2.1-3 0 0-2 .9-2.9-3.4-.8-3.6 3.1-5.5 5-.6h.5c1.1-2.5-.9-5.6 2-6.6 2.5-.8 7.1 1.4 7.1 1.4.9-1.6-.5-4.9-3.9-6" fill="#594640"/><path d="m41.3 13.9c0 .8.4 1.4 1 1.4s.7-.6.7-1.4-.2-1.4-.7-1.4-1 .6-1 1.4" fill="#664e27"/><path d="m33.5 14.9c0-1.5-1.3-2.8-2.5-2.8 0 0 2.2 1.8 1.6 4.2 0 0 .9-.3.9-1.4" fill="#e6b796"/><path d="m40.5 18.9c0 0 1.5 1.1 2 1.4 1.1.6 1.3.2.7-.3-.5-.4-1.5-.8-1.5-.8l-1.2-.3" fill="#664e27"/><path d="m25.1 22.9l-2.6-6-3.5 1.6 2.9 6.7c.4 1 3.9 2.1 3.9 2.1l1.9-.9v-2.4l-2.6-1.1" fill="#ffe1bd"/><g fill="#3e4347"><path d="m17.9 58.6l.9-4.1c-.9-.8-1.2-.8-1.2-.8-.6-.3-1.4 0-1.7.6l-3.9 7.5c1.4.7 4.3-.3 5.9-3.2"/><path d="m31.6 54.9l1.5-3.8c-1-.7-3.3-1.7-3.3-1.7l-4 8.8c1.5.5 4.4-.4 5.8-3.3"/></g><g fill="#ffe1bd"><path d="m18.8 54.5l-.9 4.1c0 0 4.9-1.5 8.3-2 3.4-.6 6.2-7.5 6.2-7.5l-5.8-1.2c0 0-1.3 4.7-2.3 4.7-1.9-.1-3.9 2.3-5.5 1.9"/><path d="m31.6 54.9l1.5-3.8c1.4.4 2-.3 3.5.4 1.5.7.4-2.3.4-2.3l6.1-.8c0 0-.4 10.3-5.6 8.3-3.2-1.3-5.9-1.8-5.9-1.8"/></g><path d="M16,8.8c-3.1,1.8-4.1,5.6-2.4,8.7c1.8,3,5.7,4.1,8.8,2.3c3.1-1.8,4.1-5.6,2.4-8.7C23,8.1,19,7,16,8.8z" fill="#b5de24"/><path fill="#c94747" d="m38.4 26.5l4.4 1.6-.5 4.1-5.2-1.7z"/><path d="m51.7 38.8c-1.1-2.5-1.3-3.1-2.5-2.8 0 0-2.8-5.6-3.5-6.3-.8-.8-2.9-1.6-2.9-1.6l-.5 4.1.8.2 2.7 5.1c-.9.9.1 2.8 1.1 2.9 1.5 3.7 6.3 1.8 4.8-1.6" fill="#ffe1bd"/><path d="m42.7 40.7c0 0-2.6-9.8-3.7-13.6-.9-3.2-8.9-2.4-9.1-2.3l-2.2-.8c-.1 1.4-.8 2.6-1.9 3.4 0 0 3.7 1.4 3.7 1.5l-.5 11.9-3.6 7 7.1 1.5c.4-.7.7-1.4 1-2.1.7-1.2 1.9-1.1 2.4.3.2.6.4 1.2.6 1.8l6.8-.9-.6-7.7" fill="#ed4c5c"/><g fill="#ffce31"><path d="m25.5 47.7l1.1.2 1.7-2.3v2.7l1.1.2v-6.1z"/><path d="m41.7 48.6l1.1-.2.4-2-.3-3.1z"/><path d="m35.6 29.2l-1.9-4.5c-.4 0-.8 0-1.2-.1l.7 1.6-2.2-1.5c-.7 0-1.1.1-1.2.1l-1.3-.5 7.1 4.9"/><path d="m39.1 27.8c-.1-.2-.1-.5-.2-.7-.1-.4-.3-.7-.6-.9l-1.3 3 2.1-1.4"/><path d="m36.5 26.7l.7-1.3c-.7-.3-1.4-.5-2.3-.6l1.6 1.9"/></g><g fill="#3e4347"><path d="m25.9 49.6c-.6 1.1-1.4 2-2.4 2.7.4 4 2.6 4.5 2.6 4.5 1.7 0 3.4-1.1 3.8-2.7-.3-1.2-1.5-3-4-4.5"/><path d="m37.3 51c-.1.1-.2.3-.4.3-.4 4.2.5 5.5.5 5.5 3.4 1.1 4.7-2.3 4.7-2.3-.8-2.2-3.1-3.5-4.8-3.5"/></g><g fill="#ed4c5c"><path d="m16.2 8.7c.3.4.8.9 1.5 1.4 2.7 2.3 3.1 1.8 3.6 1.2.5-.6.9-1.1-1.8-3.4-1.2 0-2.3.2-3.3.8"/><path d="m16.9 20.2c.2-.5.4-1.2.6-2.3.6-3.5 0-3.6-.8-3.7s-1.4-.3-2 3.2c-.1.4-.1.8-.2 1.2.7.7 1.5 1.3 2.4 1.6"/><path d="m25.6 13.7c-.5.1-1.1.3-1.8.6-3.3 1.2-3.1 1.8-2.8 2.5.3.7.5 1.3 3.8.1.1 0 .2-.1.4-.1.3-1 .5-2.1.4-3.1"/></g><path d="m25.6 13.8c0-.1 0-.1 0 0-.1-.1-.2 0-.3 0h.3" fill="#42ade2"/><path d="m36.2 37.5c-5.4 0-5.4-4.8 0-4.8 5.4 0 5.4 4.8 0 4.8" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93e-1f3fc.svg b/riot/emojione/svg/1f93e-1f3fc.svg new file mode 100644 index 0000000..fb609ba --- /dev/null +++ b/riot/emojione/svg/1f93e-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#fed0ac" d="m33.5 18l-3.1-1.8v10.8h6.9z"/><path d="m38.2 22.9c-2 1.3-.9 4.1-.9 4.1-2.8 0-4.8-5.6-4.8-9l5.7 4.9" fill="#e0a372"/><path d="m31.4 3.9l12.4 4.3c1.6 2.9.5 4.4.6 5.6 0 .6 1.1 1.6 1.7 2.1 1.3 1.2-.9 2.1-1.7 2-.5 1.2 1 2-2.7 1.2 0 0 3.8 1.6 1.1 2.3.3 1.5.5 4.3-7.2 1.4-2.3-.8-3.1-4.8-3.1-4.8l-3.9-.7 2.8-13.4" fill="#fed0ac"/><path d="m40.2 2.9c-8.2-2.7-12.6 1.5-13.4 3.4-2.1 5-.3 10.6 3.5 14.8 0 0 1.8-.8 2.1-3 0 0-2 .9-2.9-3.4-.8-3.6 3.1-5.5 5-.6h.5c1.1-2.5-.9-5.6 2-6.6 2.5-.8 7.1 1.4 7.1 1.4.9-1.6-.5-4.9-3.9-6" fill="#dbb471"/><path d="m41.3 13.9c0 .8.4 1.4 1 1.4.5 0 .7-.6.7-1.4s-.2-1.4-.7-1.4c-.6 0-1 .6-1 1.4" fill="#664e27"/><path d="m33.5 14.9c0-1.5-1.3-2.8-2.5-2.8 0 0 2.2 1.8 1.6 4.2 0 0 .9-.3.9-1.4" fill="#e0a372"/><path d="m40.5 18.9c0 0 1.5 1.1 2 1.4 1.1.6 1.3.2.7-.3-.5-.4-1.5-.8-1.5-.8l-1.2-.3" fill="#664e27"/><path d="m25.1 22.9l-2.6-6-3.5 1.6 2.9 6.7c.4 1 3.9 2.1 3.9 2.1l1.9-.9v-2.4l-2.6-1.1" fill="#fed0ac"/><g fill="#3e4347"><path d="m17.9 58.6l.9-4.1c-.9-.8-1.2-.8-1.2-.8-.6-.3-1.4 0-1.7.6l-3.9 7.5c1.4.7 4.3-.3 5.9-3.2"/><path d="m31.6 54.9l1.5-3.8c-1-.7-3.3-1.7-3.3-1.7l-4 8.8c1.5.5 4.4-.4 5.8-3.3"/></g><g fill="#fed0ac"><path d="m18.8 54.5l-.9 4.1c0 0 4.9-1.5 8.3-2 3.4-.6 6.2-7.5 6.2-7.5l-5.8-1.2c0 0-1.3 4.7-2.3 4.7-1.9-.1-3.9 2.3-5.5 1.9"/><path d="m31.6 54.9l1.5-3.8c1.4.4 2-.3 3.5.4 1.5.7.4-2.3.4-2.3l6.1-.8c0 0-.4 10.3-5.6 8.3-3.2-1.3-5.9-1.8-5.9-1.8"/></g><path d="M16,8.8c-3.1,1.8-4.1,5.6-2.4,8.7c1.8,3,5.7,4.1,8.8,2.3c3.1-1.8,4.1-5.6,2.4-8.7C23,8.1,19,7,16,8.8z" fill="#b5de24"/><path fill="#c94747" d="m38.4 26.5l4.4 1.6-.5 4.1-5.2-1.7z"/><path d="m51.7 38.8c-1.1-2.5-1.3-3.1-2.5-2.8 0 0-2.7-5.6-3.5-6.3-.8-.8-2.9-1.6-2.9-1.6l-.5 4.1.8.2 2.7 5.1c-.9.9.1 2.8 1.1 2.9 1.5 3.7 6.3 1.8 4.8-1.6" fill="#fed0ac"/><path d="m42.7 40.7c0 0-2.6-9.8-3.7-13.6-.9-3.2-8.9-2.4-9.1-2.3l-2.2-.8c-.1 1.4-.8 2.6-1.9 3.4 0 0 3.7 1.4 3.7 1.5l-.5 11.9-3.6 7 7.1 1.5c.4-.7.7-1.4 1-2.1.7-1.2 1.9-1.1 2.4.3.2.6.4 1.2.6 1.8l6.8-.9-.6-7.7" fill="#ed4c5c"/><g fill="#ffce31"><path d="m25.5 47.7l1.1.2 1.7-2.3v2.7l1.1.2v-6.1z"/><path d="m41.7 48.6l1.1-.2.4-2-.3-3.1z"/><path d="m35.6 29.2l-1.9-4.5c-.4 0-.8 0-1.2-.1l.7 1.6-2.2-1.5c-.7 0-1.1.1-1.2.1l-1.3-.5 7.1 4.9"/><path d="m39.1 27.8c-.1-.2-.1-.5-.2-.7-.1-.4-.3-.7-.6-.9l-1.3 3 2.1-1.4"/><path d="m36.5 26.7l.7-1.3c-.7-.3-1.4-.5-2.3-.6l1.6 1.9"/></g><g fill="#3e4347"><path d="m25.9 49.6c-.6 1.1-1.4 2-2.4 2.7.4 4 2.6 4.5 2.6 4.5 1.7 0 3.4-1.1 3.8-2.7-.3-1.2-1.5-3-4-4.5"/><path d="m37.3 51c-.1.1-.2.3-.4.3-.4 4.2.5 5.5.5 5.5 3.4 1.1 4.7-2.3 4.7-2.3-.8-2.2-3.1-3.5-4.8-3.5"/></g><g fill="#ed4c5c"><path d="m16.2 8.7c.3.4.8.9 1.5 1.4 2.7 2.3 3.1 1.8 3.6 1.2.5-.6.9-1.1-1.8-3.4-1.2 0-2.3.2-3.3.8"/><path d="m16.9 20.2c.2-.5.4-1.2.6-2.3.6-3.5 0-3.6-.8-3.7s-1.4-.3-2 3.2c-.1.4-.1.8-.2 1.2.7.7 1.5 1.3 2.4 1.6"/><path d="m25.6 13.7c-.5.1-1.1.3-1.8.6-3.3 1.2-3.1 1.8-2.8 2.5.3.7.5 1.3 3.8.1.1 0 .2-.1.4-.1.3-1 .5-2.1.4-3.1"/></g><path d="m25.6 13.8c0-.1 0-.1 0 0-.1-.1-.2 0-.3 0h.3" fill="#42ade2"/><path d="m36.2 37.4c-5.4 0-5.4-4.8 0-4.8 5.4.1 5.4 4.8 0 4.8" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93e-1f3fd.svg b/riot/emojione/svg/1f93e-1f3fd.svg new file mode 100644 index 0000000..facf15d --- /dev/null +++ b/riot/emojione/svg/1f93e-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d6a57c" d="m33.5 18l-3.1-1.8v10.8h6.9z"/><path d="m38.2 22.9c-2 1.3-.9 4.1-.9 4.1-2.8 0-4.8-5.6-4.8-9l5.7 4.9" fill="#b58360"/><path d="m31.4 3.9l12.4 4.3c1.6 2.9.5 4.4.6 5.6 0 .6 1.1 1.6 1.7 2.1 1.3 1.2-.9 2.1-1.7 2-.5 1.2 1 2-2.7 1.2 0 0 3.8 1.6 1.1 2.3.3 1.5.5 4.3-7.2 1.4-2.3-.8-3.1-4.8-3.1-4.8l-3.9-.7 2.8-13.4" fill="#d6a57c"/><path d="m40.2 2.9c-8.2-2.7-12.6 1.5-13.4 3.4-2.1 5-.3 10.6 3.5 14.8 0 0 1.8-.8 2.1-3 0 0-2 .9-2.9-3.4-.8-3.6 3.1-5.5 5-.6h.5c1.1-2.5-.9-5.6 2-6.6 2.5-.8 7.1 1.4 7.1 1.4.9-1.6-.5-4.9-3.9-6" fill="#594640"/><path d="m41.3 13.9c0 .8.4 1.4 1 1.4s.7-.6.7-1.4-.2-1.4-.7-1.4-1 .6-1 1.4" fill="#664e27"/><path d="m33.5 14.9c0-1.5-1.3-2.8-2.5-2.8 0 0 2.2 1.8 1.6 4.2 0 0 .9-.3.9-1.4" fill="#b58360"/><path d="m40.5 18.9c0 0 1.5 1.1 2 1.4 1.1.6 1.3.2.7-.3-.5-.4-1.5-.8-1.5-.8l-1.2-.3" fill="#664e27"/><path d="m25.1 22.9l-2.6-6-3.5 1.6 2.9 6.7c.4 1 3.9 2.1 3.9 2.1l1.9-.9v-2.4l-2.6-1.1" fill="#d6a57c"/><g fill="#3e4347"><path d="m17.9 58.6l.9-4.1c-.9-.8-1.2-.8-1.2-.8-.6-.3-1.4 0-1.7.6l-3.9 7.5c1.4.7 4.3-.3 5.9-3.2"/><path d="m31.6 54.9l1.5-3.8c-1-.7-3.3-1.7-3.3-1.7l-4 8.8c1.5.5 4.4-.4 5.8-3.3"/></g><g fill="#d6a57c"><path d="m18.8 54.5l-.9 4.1c0 0 4.9-1.5 8.3-2 3.4-.6 6.2-7.5 6.2-7.5l-5.8-1.2c0 0-1.3 4.7-2.3 4.7-1.9-.1-3.9 2.3-5.5 1.9"/><path d="m31.6 54.9l1.5-3.8c1.4.4 2-.3 3.5.4 1.5.7.4-2.3.4-2.3l6.1-.8c0 0-.4 10.3-5.6 8.3-3.2-1.3-5.9-1.8-5.9-1.8"/></g><path d="M16,8.8c-3.1,1.8-4.1,5.6-2.4,8.7c1.8,3,5.7,4.1,8.8,2.3c3.1-1.8,4.1-5.6,2.4-8.7C23,8.1,19,7,16,8.8z" fill="#b5de24"/><path fill="#c94747" d="m38.4 26.5l4.4 1.6-.5 4.1-5.2-1.7z"/><path d="m51.7 38.8c-1.1-2.5-1.3-3.1-2.5-2.8 0 0-2.8-5.6-3.5-6.3-.8-.8-2.9-1.6-2.9-1.6l-.5 4.1.8.2 2.7 5.1c-.9.9.1 2.8 1.1 2.9 1.5 3.7 6.3 1.8 4.8-1.6" fill="#d6a57c"/><path d="m42.7 40.7c0 0-2.6-9.8-3.7-13.6-.9-3.2-8.9-2.4-9.1-2.3l-2.2-.8c-.1 1.4-.8 2.6-1.9 3.4 0 0 3.7 1.4 3.7 1.5l-.5 11.9-3.6 7 7.1 1.5c.4-.7.7-1.4 1-2.1.7-1.2 1.9-1.1 2.4.3.2.6.4 1.2.6 1.8l6.8-.9-.6-7.7" fill="#ed4c5c"/><g fill="#ffce31"><path d="m25.5 47.7l1.1.2 1.7-2.3v2.7l1.1.2v-6.1z"/><path d="m41.7 48.6l1.1-.2.4-2-.3-3.1z"/><path d="m35.6 29.2l-1.9-4.5c-.4 0-.8 0-1.2-.1l.7 1.6-2.2-1.5c-.7 0-1.1.1-1.2.1l-1.3-.5 7.1 4.9"/><path d="m39.1 27.8c-.1-.2-.1-.5-.2-.7-.1-.4-.3-.7-.6-.9l-1.3 3 2.1-1.4"/><path d="m36.5 26.7l.7-1.3c-.7-.3-1.4-.5-2.3-.6l1.6 1.9"/></g><g fill="#3e4347"><path d="m25.9 49.6c-.6 1.1-1.4 2-2.4 2.7.4 4 2.6 4.5 2.6 4.5 1.7 0 3.4-1.1 3.8-2.7-.3-1.2-1.5-3-4-4.5"/><path d="m37.3 51c-.1.1-.2.3-.4.3-.4 4.2.5 5.5.5 5.5 3.4 1.1 4.7-2.3 4.7-2.3-.8-2.2-3.1-3.5-4.8-3.5"/></g><g fill="#ed4c5c"><path d="m16.2 8.7c.3.4.8.9 1.5 1.4 2.7 2.3 3.1 1.8 3.6 1.2.5-.6.9-1.1-1.8-3.4-1.2 0-2.3.2-3.3.8"/><path d="m16.9 20.2c.2-.5.4-1.2.6-2.3.6-3.5 0-3.6-.8-3.7s-1.4-.3-2 3.2c-.1.4-.1.8-.2 1.2.7.7 1.5 1.3 2.4 1.6"/><path d="m25.6 13.7c-.5.1-1.1.3-1.8.6-3.3 1.2-3.1 1.8-2.8 2.5.3.7.5 1.3 3.8.1.1 0 .2-.1.4-.1.3-1 .5-2.1.4-3.1"/></g><path d="m25.6 13.8c0-.1 0-.1 0 0-.1-.1-.2 0-.3 0h.3" fill="#42ade2"/><path d="m36.2 37.5c-5.4 0-5.4-4.8 0-4.8 5.4 0 5.4 4.8 0 4.8" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93e-1f3fe.svg b/riot/emojione/svg/1f93e-1f3fe.svg new file mode 100644 index 0000000..2b3023f --- /dev/null +++ b/riot/emojione/svg/1f93e-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b47d56" d="m33.5 18l-3.1-1.8v10.8h6.9z"/><path d="m38.2 22.9c-2 1.3-.9 4.1-.9 4.1-2.8 0-4.8-5.6-4.8-9l5.7 4.9" fill="#935e3e"/><path d="m31.4 3.9l12.4 4.3c1.6 2.9.5 4.4.6 5.6 0 .6 1.1 1.6 1.7 2.1 1.3 1.2-.9 2.1-1.7 2-.5 1.2 1 2-2.7 1.2 0 0 3.8 1.6 1.1 2.3.3 1.5.5 4.3-7.2 1.4-2.3-.8-3.1-4.8-3.1-4.8l-3.9-.7 2.8-13.4" fill="#b47d56"/><path d="m40.2 2.9c-8.2-2.7-12.6 1.5-13.4 3.4-2.1 5-.3 10.6 3.5 14.8 0 0 1.8-.8 2.1-3 0 0-2 .9-2.9-3.4-.8-3.6 3.1-5.5 5-.6h.5c1.1-2.5-.9-5.6 2-6.6 2.5-.8 7.1 1.4 7.1 1.4.9-1.6-.5-4.9-3.9-6" fill="#231f20"/><path d="m41.3 13.9c0 .8.4 1.4 1 1.4s.7-.6.7-1.4-.2-1.4-.7-1.4-1 .6-1 1.4" fill="#664e27"/><path d="m33.5 14.9c0-1.5-1.3-2.8-2.5-2.8 0 0 2.2 1.8 1.6 4.2 0 0 .9-.3.9-1.4" fill="#935e3e"/><path d="m40.5 18.9c0 0 1.5 1.1 2 1.4 1.1.6 1.3.2.7-.3-.5-.4-1.5-.8-1.5-.8l-1.2-.3" fill="#664e27"/><path d="m25.1 22.9l-2.6-6-3.5 1.6 2.9 6.7c.4 1 3.9 2.1 3.9 2.1l1.9-.9v-2.4l-2.6-1.1" fill="#b47d56"/><g fill="#3e4347"><path d="m17.9 58.6l.9-4.1c-.9-.8-1.2-.8-1.2-.8-.6-.3-1.4 0-1.7.6l-3.9 7.5c1.4.7 4.3-.3 5.9-3.2"/><path d="m31.6 54.9l1.5-3.8c-1-.7-3.3-1.7-3.3-1.7l-4 8.8c1.5.5 4.4-.4 5.8-3.3"/></g><g fill="#b47d56"><path d="m18.8 54.5l-.9 4.1c0 0 4.9-1.5 8.3-2 3.4-.6 6.2-7.5 6.2-7.5l-5.8-1.2c0 0-1.3 4.7-2.3 4.7-1.9-.1-3.9 2.3-5.5 1.9"/><path d="m31.6 54.9l1.5-3.8c1.4.4 2-.3 3.5.4 1.5.7.4-2.3.4-2.3l6.1-.8c0 0-.4 10.3-5.6 8.3-3.2-1.3-5.9-1.8-5.9-1.8"/></g><path d="M16,8.8c-3.1,1.8-4.1,5.6-2.4,8.7c1.8,3,5.7,4.1,8.8,2.3c3.1-1.8,4.1-5.6,2.4-8.7C23,8.1,19,7,16,8.8z" fill="#b5de24"/><path fill="#c94747" d="m38.4 26.5l4.4 1.6-.5 4.1-5.2-1.7z"/><path d="m51.7 38.8c-1.1-2.5-1.3-3.1-2.5-2.8 0 0-2.8-5.6-3.5-6.3-.8-.8-2.9-1.6-2.9-1.6l-.5 4.1.8.2 2.7 5.1c-.9.9.1 2.8 1.1 2.9 1.5 3.7 6.3 1.8 4.8-1.6" fill="#b47d56"/><path d="m42.7 40.7c0 0-2.6-9.8-3.7-13.6-.9-3.2-8.9-2.4-9.1-2.3l-2.2-.8c-.1 1.4-.8 2.6-1.9 3.4 0 0 3.7 1.4 3.7 1.5l-.5 11.9-3.6 7 7.1 1.5c.4-.7.7-1.4 1-2.1.7-1.2 1.9-1.1 2.4.3.2.6.4 1.2.6 1.8l6.8-.9-.6-7.7" fill="#ed4c5c"/><g fill="#ffce31"><path d="m25.5 47.7l1.1.2 1.7-2.3v2.7l1.1.2v-6.1z"/><path d="m41.7 48.6l1.1-.2.4-2-.3-3.1z"/><path d="m35.6 29.2l-1.9-4.5c-.4 0-.8 0-1.2-.1l.7 1.6-2.2-1.5c-.7 0-1.1.1-1.2.1l-1.3-.5 7.1 4.9"/><path d="m39.1 27.8c-.1-.2-.1-.5-.2-.7-.1-.4-.3-.7-.6-.9l-1.3 3 2.1-1.4"/><path d="m36.5 26.7l.7-1.3c-.7-.3-1.4-.5-2.3-.6l1.6 1.9"/></g><g fill="#3e4347"><path d="m25.9 49.6c-.6 1.1-1.4 2-2.4 2.7.4 4 2.6 4.5 2.6 4.5 1.7 0 3.4-1.1 3.8-2.7-.3-1.2-1.5-3-4-4.5"/><path d="m37.3 51c-.1.1-.2.3-.4.3-.4 4.2.5 5.5.5 5.5 3.4 1.1 4.7-2.3 4.7-2.3-.8-2.2-3.1-3.5-4.8-3.5"/></g><g fill="#ed4c5c"><path d="m16.2 8.7c.3.4.8.9 1.5 1.4 2.7 2.3 3.1 1.8 3.6 1.2.5-.6.9-1.1-1.8-3.4-1.2 0-2.3.2-3.3.8"/><path d="m16.9 20.2c.2-.5.4-1.2.6-2.3.6-3.5 0-3.6-.8-3.7s-1.4-.3-2 3.2c-.1.4-.1.8-.2 1.2.7.7 1.5 1.3 2.4 1.6"/><path d="m25.6 13.7c-.5.1-1.1.3-1.8.6-3.3 1.2-3.1 1.8-2.8 2.5.3.7.5 1.3 3.8.1.1 0 .2-.1.4-.1.3-1 .5-2.1.4-3.1"/></g><path d="m25.6 13.8c0-.1 0-.1 0 0-.1-.1-.2 0-.3 0h.3" fill="#42ade2"/><path d="m36.2 37.5c-5.4 0-5.4-4.8 0-4.8 5.4 0 5.4 4.8 0 4.8" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93e-1f3ff.svg b/riot/emojione/svg/1f93e-1f3ff.svg new file mode 100644 index 0000000..65220a5 --- /dev/null +++ b/riot/emojione/svg/1f93e-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#8a6859" d="m33.5 18l-3.1-1.8v10.8h6.9z"/><path d="m38.2 22.9c-2 1.3-.9 4.1-.9 4.1-2.8 0-4.8-5.6-4.8-9l5.7 4.9" fill="#705041"/><path d="m31.4 3.9l12.4 4.3c1.6 2.9.5 4.4.6 5.6 0 .6 1.1 1.6 1.7 2.1 1.3 1.2-.9 2.1-1.7 2-.5 1.2 1 2-2.7 1.2 0 0 3.8 1.6 1.1 2.3.3 1.5.5 4.3-7.2 1.4-2.3-.8-3.1-4.8-3.1-4.8l-3.9-.7 2.8-13.4" fill="#8a6859"/><path d="m40.2 2.9c-8.2-2.7-12.6 1.5-13.4 3.4-2.1 5-.3 10.6 3.5 14.8 0 0 1.8-.8 2.1-3 0 0-2 .9-2.9-3.4-.8-3.6 3.1-5.5 5-.6h.5c1.1-2.5-.9-5.6 2-6.6 2.5-.8 7.1 1.4 7.1 1.4.9-1.6-.5-4.9-3.9-6" fill="#231f20"/><path d="m41.3 13.9c0 .8.4 1.4 1 1.4s.7-.6.7-1.4-.2-1.4-.7-1.4-1 .6-1 1.4" fill="#574137"/><path d="m33.5 14.9c0-1.5-1.3-2.8-2.5-2.8 0 0 2.2 1.8 1.6 4.2 0 0 .9-.3.9-1.4" fill="#705041"/><path d="m40.5 18.9c0 0 1.5 1.1 2 1.4 1.1.6 1.3.2.7-.3-.5-.4-1.5-.8-1.5-.8l-1.2-.3" fill="#574137"/><path d="m25.1 22.9l-2.6-6-3.5 1.6 2.9 6.7c.4 1 3.9 2.1 3.9 2.1l1.9-.9v-2.4l-2.6-1.1" fill="#8a6859"/><g fill="#3e4347"><path d="m17.9 58.6l.9-4.1c-.9-.8-1.2-.8-1.2-.8-.6-.3-1.4 0-1.7.6l-3.9 7.5c1.4.7 4.3-.3 5.9-3.2"/><path d="m31.6 54.9l1.5-3.8c-1-.7-3.3-1.7-3.3-1.7l-4 8.8c1.5.5 4.4-.4 5.8-3.3"/></g><g fill="#8a6859"><path d="m18.8 54.5l-.9 4.1c0 0 4.9-1.5 8.3-2 3.4-.6 6.2-7.5 6.2-7.5l-5.8-1.2c0 0-1.3 4.7-2.3 4.7-1.9-.1-3.9 2.3-5.5 1.9"/><path d="m31.6 54.9l1.5-3.8c1.4.4 2-.3 3.5.4 1.5.7.4-2.3.4-2.3l6.1-.8c0 0-.4 10.3-5.6 8.3-3.2-1.3-5.9-1.8-5.9-1.8"/></g><path d="M16,8.8c-3.1,1.8-4.1,5.6-2.4,8.7c1.8,3,5.7,4.1,8.8,2.3c3.1-1.8,4.1-5.6,2.4-8.7C23,8.1,19,7,16,8.8z" fill="#b5de24"/><path fill="#c94747" d="m38.4 26.5l4.4 1.6-.5 4.1-5.2-1.7z"/><path d="m51.7 38.8c-1.1-2.5-1.3-3.1-2.5-2.8 0 0-2.8-5.6-3.5-6.3-.8-.8-2.9-1.6-2.9-1.6l-.5 4.1.8.2 2.7 5.1c-.9.9.1 2.8 1.1 2.9 1.5 3.7 6.3 1.8 4.8-1.6" fill="#8a6859"/><path d="m42.7 40.7c0 0-2.6-9.8-3.7-13.6-.9-3.2-8.9-2.4-9.1-2.3l-2.2-.8c-.1 1.4-.8 2.6-1.9 3.4 0 0 3.7 1.4 3.7 1.5l-.5 11.9-3.6 7 7.1 1.5c.4-.7.7-1.4 1-2.1.7-1.2 1.9-1.1 2.4.3.2.6.4 1.2.6 1.8l6.8-.9-.6-7.7" fill="#ed4c5c"/><g fill="#ffce31"><path d="m25.5 47.7l1.1.2 1.7-2.3v2.7l1.1.2v-6.1z"/><path d="m41.7 48.6l1.1-.2.4-2-.3-3.1z"/><path d="m35.6 29.2l-1.9-4.5c-.4 0-.8 0-1.2-.1l.7 1.6-2.2-1.5c-.7 0-1.1.1-1.2.1l-1.3-.5 7.1 4.9"/><path d="m39.1 27.8c-.1-.2-.1-.5-.2-.7-.1-.4-.3-.7-.6-.9l-1.3 3 2.1-1.4"/><path d="m36.5 26.7l.7-1.3c-.7-.3-1.4-.5-2.3-.6l1.6 1.9"/></g><g fill="#3e4347"><path d="m25.9 49.6c-.6 1.1-1.4 2-2.4 2.7.4 4 2.6 4.5 2.6 4.5 1.7 0 3.4-1.1 3.8-2.7-.3-1.2-1.5-3-4-4.5"/><path d="m37.3 51c-.1.1-.2.3-.4.3-.4 4.2.5 5.5.5 5.5 3.4 1.1 4.7-2.3 4.7-2.3-.8-2.2-3.1-3.5-4.8-3.5"/></g><g fill="#ed4c5c"><path d="m16.2 8.7c.3.4.8.9 1.5 1.4 2.7 2.3 3.1 1.8 3.6 1.2.5-.6.9-1.1-1.8-3.4-1.2 0-2.3.2-3.3.8"/><path d="m16.9 20.2c.2-.5.4-1.2.6-2.3.6-3.5 0-3.6-.8-3.7s-1.4-.3-2 3.2c-.1.4-.1.8-.2 1.2.7.7 1.5 1.3 2.4 1.6"/><path d="m25.6 13.7c-.5.1-1.1.3-1.8.6-3.3 1.2-3.1 1.8-2.8 2.5.3.7.5 1.3 3.8.1.1 0 .2-.1.4-.1.3-1 .5-2.1.4-3.1"/></g><path d="m25.6 13.8c0-.1 0-.1 0 0-.1-.1-.2 0-.3 0h.3" fill="#42ade2"/><path d="m36.2 37.4c-5.4 0-5.4-4.8 0-4.8 5.4.1 5.4 4.8 0 4.8" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f93e.svg b/riot/emojione/svg/1f93e.svg new file mode 100644 index 0000000..d3a20ac --- /dev/null +++ b/riot/emojione/svg/1f93e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffdd67" d="m33.5 18l-3.1-1.8v10.8h6.9z"/><path d="m38.2 22.9c-2 1.3-.9 4.1-.9 4.1-2.8 0-4.8-5.6-4.8-9l5.7 4.9" fill="#eba352"/><path d="m31.4 3.9l12.4 4.3c1.6 2.9.5 4.4.6 5.6 0 .6 1.1 1.6 1.7 2.1 1.3 1.2-.9 2.1-1.7 2-.5 1.2 1 2-2.7 1.2 0 0 3.8 1.6 1.1 2.3.3 1.5.5 4.3-7.2 1.4-2.3-.8-3.1-4.8-3.1-4.8l-3.9-.7 2.8-13.4" fill="#ffdd67"/><path d="m40.2 2.9c-8.2-2.7-12.6 1.5-13.4 3.4-2.1 5-.3 10.6 3.5 14.8 0 0 1.8-.8 2.1-3 0 0-2 .9-2.9-3.4-.8-3.6 3.1-5.5 5-.6h.5c1.1-2.5-.9-5.6 2-6.6 2.5-.8 7.1 1.4 7.1 1.4.9-1.6-.5-4.9-3.9-6" fill="#ffb300"/><path d="m41.3 13.9c0 .8.4 1.4 1 1.4s.7-.6.7-1.4-.2-1.4-.7-1.4-1 .6-1 1.4" fill="#937237"/><path d="m33.5 14.9c0-1.5-1.3-2.8-2.5-2.8 0 0 2.2 1.8 1.6 4.2 0 0 .9-.3.9-1.4" fill="#eba352"/><path d="m40.5 18.9c0 0 1.5 1.1 2 1.4 1.1.6 1.3.2.7-.3-.5-.4-1.5-.8-1.5-.8l-1.2-.3" fill="#937237"/><path d="m25.1 22.9l-2.6-6-3.5 1.6 2.9 6.7c.4 1 3.9 2.1 3.9 2.1l1.9-.9v-2.4l-2.6-1.1" fill="#ffdd67"/><g fill="#3e4347"><path d="m17.9 58.6l.9-4.1c-.9-.8-1.2-.8-1.2-.8-.6-.3-1.4 0-1.7.6l-3.9 7.5c1.4.7 4.3-.3 5.9-3.2"/><path d="m31.6 54.9l1.5-3.8c-1-.7-3.3-1.7-3.3-1.7l-4 8.8c1.5.5 4.4-.4 5.8-3.3"/></g><g fill="#ffdd67"><path d="m18.8 54.5l-.9 4.1c0 0 4.9-1.5 8.3-2 3.4-.6 6.2-7.5 6.2-7.5l-5.8-1.2c0 0-1.3 4.7-2.3 4.7-1.9-.1-3.9 2.3-5.5 1.9"/><path d="m31.6 54.9l1.5-3.8c1.4.4 2-.3 3.5.4 1.5.7.4-2.3.4-2.3l6.1-.8c0 0-.4 10.3-5.6 8.3-3.2-1.3-5.9-1.8-5.9-1.8"/></g><path d="M16,8.8c-3.1,1.8-4.1,5.6-2.4,8.7c1.8,3,5.7,4.1,8.8,2.3c3.1-1.8,4.1-5.6,2.4-8.7C23,8.1,19,7,16,8.8z" fill="#b5de24"/><path fill="#c94747" d="m38.4 26.5l4.4 1.6-.5 4.1-5.2-1.7z"/><path d="m51.7 38.8c-1.1-2.5-1.3-3.1-2.5-2.8 0 0-2.8-5.6-3.5-6.3-.8-.8-2.9-1.6-2.9-1.6l-.5 4.1.8.2 2.7 5.1c-.9.9.1 2.8 1.1 2.9 1.5 3.7 6.3 1.8 4.8-1.6" fill="#ffdd67"/><path d="m42.7 40.7c0 0-2.6-9.8-3.7-13.6-.9-3.2-8.9-2.4-9.1-2.3l-2.2-.8c-.1 1.4-.8 2.6-1.9 3.4 0 0 3.7 1.4 3.7 1.5l-.5 11.9-3.6 7 7.1 1.5c.4-.7.7-1.4 1-2.1.7-1.2 1.9-1.1 2.4.3.2.6.4 1.2.6 1.8l6.8-.9-.6-7.7" fill="#ed4c5c"/><g fill="#ffce31"><path d="m25.5 47.7l1.1.2 1.7-2.3v2.7l1.1.2v-6.1z"/><path d="m41.7 48.6l1.1-.2.4-2-.3-3.1z"/><path d="m35.6 29.2l-1.9-4.5c-.4 0-.8 0-1.2-.1l.7 1.6-2.2-1.5c-.7 0-1.1.1-1.2.1l-1.3-.5 7.1 4.9"/><path d="m39.1 27.8c-.1-.2-.1-.5-.2-.7-.1-.4-.3-.7-.6-.9l-1.3 3 2.1-1.4"/><path d="m36.5 26.7l.7-1.3c-.7-.3-1.4-.5-2.3-.6l1.6 1.9"/></g><g fill="#3e4347"><path d="m25.9 49.6c-.6 1.1-1.4 2-2.4 2.7.4 4 2.6 4.5 2.6 4.5 1.7 0 3.4-1.1 3.8-2.7-.3-1.2-1.5-3-4-4.5"/><path d="m37.3 51c-.1.1-.2.3-.4.3-.4 4.2.5 5.5.5 5.5 3.4 1.1 4.7-2.3 4.7-2.3-.8-2.2-3.1-3.5-4.8-3.5"/></g><g fill="#ed4c5c"><path d="m16.2 8.7c.3.4.8.9 1.5 1.4 2.7 2.3 3.1 1.8 3.6 1.2.5-.6.9-1.1-1.8-3.4-1.2 0-2.3.2-3.3.8"/><path d="m16.9 20.2c.2-.5.4-1.2.6-2.3.6-3.5 0-3.6-.8-3.7s-1.4-.3-2 3.2c-.1.4-.1.8-.2 1.2.7.7 1.5 1.3 2.4 1.6"/><path d="m25.6 13.7c-.5.1-1.1.3-1.8.6-3.3 1.2-3.1 1.8-2.8 2.5.3.7.5 1.3 3.8.1.1 0 .2-.1.4-.1.3-1 .5-2.1.4-3.1"/></g><path d="m25.6 13.8c0-.1 0-.1 0 0-.1-.1-.2 0-.3 0h.3" fill="#42ade2"/><path d="m36.2 37.5c-5.4 0-5.4-4.8 0-4.8 5.4 0 5.4 4.8 0 4.8" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f940.svg b/riot/emojione/svg/1f940.svg new file mode 100644 index 0000000..dda76b8 --- /dev/null +++ b/riot/emojione/svg/1f940.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m38.7 15.9c-.2-3.5-1.3-7-3.9-9.5-1.3-1.3-2.9-2.2-4.6-2.7-1.8-.5-3.6-.3-5.2.3-1.6.7-3 1.8-4 3.1-1 1.3-1.8 2.8-2.3 4.4-1.1 3.1-1.4 6.4-.7 9.7.6 3.2 1.9 6.5 3.2 9.7 1.3 3.3 2.7 6.6 3.9 10 2.4 6.8 3.8 14 4 21.1h-6.1c.2-6.7-.6-13.4-2.5-20-.9-3.3-2.1-6.6-3.2-9.9-1.1-3.3-2.3-6.8-2.7-10.4-.5-3.6 0-7.5 1.5-10.9.8-1.7 1.8-3.4 3.1-4.8 1.3-1.5 3.1-2.7 5.2-3.4 2.1-.7 4.4-.7 6.4 0 2 .7 3.7 1.9 4.9 3.3 2.3 2.9 3.1 6.5 3 10" fill="#7b853d"/><g fill="#9ca84d"><path d="m3.9 23.5c4.9-7.1 11.8-5.3 11.8-5.3s4.2 3.9-2.3 10c-4.5 4.1-6.4 12.3-6.4 12.3s-8.8-8.8-3.1-17"/><path d="m38.4 52.4c-6.9-3.6-5.1-8.7-5.1-8.7s3.8-3.1 9.7 1.7c4 3.3 12 4.8 12 4.8s-8.6 6.5-16.6 2.2"/></g><path d="m48 17c-7-5.7-10.3-8.7-14.3-6.6-4 2.1-2 17.2 6.5 18 8.3.8 11.7 6.2 11.7 6.2s7.4-8.4-3.9-17.6" fill="#803c3c"/><path d="m34.8 21.8c-1.5-8.1-3.8-12.1.2-14.2 4-2.1 22 9.8 17.1 15.5-6 7.1-5.8 11.6-5.8 11.6s-9.2-.8-11.5-12.9" fill="#663030"/><path d="m38.3 27.9c1.9 2.8 14.1-.3 18.9 3.1 0 0 2.2-6.9-2.7-10.2-2.8-1.8-22.6-2.4-16.2 7.1" fill="#994848"/><path d="m42.3 22.5c-12.8-6-13.1-13.4-7.8-16.1 5.3-2.7 15 .2 18.2 7.8 3.2 7.8 9.3 12.5 9.3 12.5s-9.9.4-19.7-4.2" fill="#b35454"/><path d="m48.7 20.2c1.5-12.4-9.3-16.3-14.6-13.6-5.3 2.7-5.7 10.7-.9 17.7 4.8 7.1 6.1 12.2 6.1 12.2s8.3-7.5 9.4-16.3" fill="#cc6060"/><path d="M36,9.7c-8.1,4.3-7-1.2-1.7-3.9c13-6.7,21.3,6.7,21.3,6.7S43.1,5.8,36,9.7z" fill="#7b853d"/><path d="m36 9.7c1.5-2.2 6.2-6.6.2-5.1-11.8 2.9-5.8 20.3-5.8 20.3s1.1-8.8 5.6-15.2" fill="#9ca84d"/><g fill="#594640"><path d="m16.3 46.6l7-3.1.6 4z"/><path d="m23.9 25.4l-4.6 3.4-1.1-2.9z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f941.svg b/riot/emojione/svg/1f941.svg new file mode 100644 index 0000000..3a07224 --- /dev/null +++ b/riot/emojione/svg/1f941.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ed4c5c" d="m60.1 52.1l-28.1 6.4-28.1-6.4v-17.9h56.2z"/><path d="m32 37.7c0 0-23.4-.6-30-10.4v5.7c0 0 3.2 8.5 30 8.5 26.8 0 30-8.5 30-8.5v-5.7c-6.6 9.8-30 10.4-30 10.4" fill="#b2c1c0"/><path d="m32 16.9c-16.6 0-30 4.7-30 10.4s13.4 10.4 30 10.4c16.6 0 30-4.7 30-10.4s-13.4-10.4-30-10.4" fill="#e8e8e8"/><path d="m32 56.6c0 0-23.4-.6-30-10.4v5.7c0 0 3.2 8.5 30 8.5 26.8 0 30-8.5 30-8.5v-5.7c-6.6 9.8-30 10.4-30 10.4" fill="#b2c1c0"/><path d="m60.1 42.6c0 0 0 0 0 3.6 0 5.2-12.6 9.5-28.1 9.5-15.5 0-28.1-4.2-28.1-9.5v-3.6c-1.2 1.1-1.9 2.3-1.9 3.6 0 5.7 13.4 10.4 30 10.4 16.6 0 30-4.7 30-10.4 0-1.3-.7-2.5-1.9-3.6" fill="#e8e8e8"/><path d="m25.2 38.5c0 0 0 0 0 0" opacity=".5" fill="#3e4347"/><path d="m32 21.6c13.7 0 25.1 3.3 27.6 7.6.4-.6.6-1.3.6-1.9 0-5.2-12.1-9.5-28.2-9.5s-28.1 4.4-28.1 9.5c0 .6.2 1.3.5 1.9 2.6-4.3 14-7.6 27.6-7.6" fill="#b2c1c0"/><path d="m32 36.4c14 0 25-3 27.6-7.1-2.5-4.4-13.9-7.6-27.6-7.6-13.6 0-25 3.3-27.6 7.6 2.5 4.1 13.5 7.1 27.6 7.1" fill="#fff"/><path d="m46.5 23.4c-.6-.3-1.2-.5-1.7-.5l-36.2-20.9c-.5-.2-1.9 2.1-1.4 2.4l36.7 20.2c.2.4.7.9 1.2 1.2 3.5 2 4.9-.4 1.4-2.4" fill="#d3976e"/><path fill="#89664c" d="m33.7 19l2.2-1.2-1.7-1-2.2 1.3z"/><path d="m55.4 2l-36.2 20.9c-.5 0-1.1.1-1.7.5-3.5 2-2.1 4.4 1.4 2.4.6-.3 1-.8 1.2-1.2l36.7-20.2c.5-.3-.9-2.6-1.4-2.4" fill="#d3976e"/><path d="m3.9 53.3v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="6.7" cy="53.3" rx="2.8" ry=".9" fill="#e8e8e8"/><path d="m5.8 38.6v14.6c0 .3.4.5.9.5s.9-.2.9-.5v-14.6h-1.8" fill="#8a8e91"/><path d="m3.9 34.4v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="6.7" cy="34.4" rx="2.8" ry=".9" fill="#e8e8e8"/><path d="m54.5 53.3v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="57.3" cy="53.3" rx="2.8" ry=".9" fill="#e8e8e8"/><path d="m56.4 38.6v14.6c0 .3.4.5.9.5s.9-.2.9-.5v-14.6h-1.8" fill="#8a8e91"/><path d="m54.5 34.4v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="57.3" cy="34.4" rx="2.8" ry=".9" fill="#e8e8e8"/><path d="m38.6 57.1v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="41.4" cy="57.1" rx="2.8" ry=".9" fill="#e8e8e8"/><path d="m40.4 42.4v14.6c0 .3.4.5.9.5s.9-.2.9-.5v-14.6h-1.8" fill="#8a8e91"/><path d="m38.6 38.2v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="41.4" cy="38.2" rx="2.8" ry=".9" fill="#e8e8e8"/><path d="m19.8 57.1v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="22.6" cy="57.1" rx="2.8" ry=".9" fill="#e8e8e8"/><path d="m21.7 42.4v14.6c0 .3.4.5.9.5s.9-.2.9-.5v-14.6h-1.8" fill="#8a8e91"/><path d="m19.8 38.2v3.8c0 1.5 5.6 1.5 5.6 0v-3.8h-5.6" fill="#b2c1c0"/><ellipse cx="22.6" cy="38.2" rx="2.8" ry=".9" fill="#e8e8e8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f942.svg b/riot/emojione/svg/1f942.svg new file mode 100644 index 0000000..41384a1 --- /dev/null +++ b/riot/emojione/svg/1f942.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.3 5.7c0 0-2.2-1.9-6.2-3-4-1.1-6.8-.5-6.8-.5s-.4-.2-2 4c-2.9 7.8-4.2 14.5-2 27.4.6 3.4.6 4.3-.8 9.5-1.1 4.1-2.4 7-3.2 8.4-3.4-.6-6.1-.3-6.4.9-.4 1.4 2.7 3.4 6.8 4.5 4.1 1.1 7.8.9 8.1-.5.3-1.2-2-2.9-5.4-4.1.1-1.6.3-4.8 1.4-8.9 1.4-5.2 1.9-6 4.1-8.7 8.5-9.9 10.7-16.4 12.1-24.6.8-4.4.3-4.4.3-4.4" opacity=".8" fill="#a1b8c7"/><path d="m9.3 55.3c-5.1-1.4-5.6-2.4-5.6-2.4.3 1.9 4.7 3 5.3 3.2.7.2 5 1.4 6.3-.1 0 0-.9.6-6-.7" fill="#fff"/><path d="m8.7 52.4c-.2.3-.1.8.4 1 .6.2.7-.4 1-1.7.5-2.3 2.7-9.8 2.7-9.8s-1.9 6.5-4.1 10.5" opacity=".33" fill="#3e4347"/><path d="m19.9 13.7c-2.6 0-5.9.2-7 3.1-.5 3.5-.5 7.4.1 12.3.4 3.6 3.6 4.3 5.5 1.8 6-8 8-13.7 9.2-21 .4-2.7-3.5 3.8-7.8 3.8" fill="#fed0ac"/><path d="m25.5 9.5c.4-2.4 1.4-1.7 1.2 0-.2 1.7-1.9 9.3-6 16.1-4.2 6.7 3.4-6.9 4.8-16.1" opacity=".33" fill="#3e4347"/><path d="m56 56.8c-.3-1.2-3-1.5-6.4-.9-.8-1.4-2.1-4.3-3.2-8.4-1.4-5.2-1.4-6.1-.8-9.5 2.2-12.9.9-19.6-2-27.4-1.5-4.2-2-4-2-4s-2.8-.7-6.8.4c-4 1.1-6.2 3-6.2 3s-.5 0 .3 4.4c1.4 8.2 3.6 14.7 11.9 24.7 2.2 2.7 2.7 3.4 4.1 8.7 1.1 4.1 1.4 7.2 1.4 8.9-3.4 1.2-5.7 2.9-5.4 4.1.4 1.4 4 1.6 8.1.5 4.3-1.1 7.3-3.1 7-4.5" opacity=".8" fill="#a1b8c7"/><path d="m48.7 59.6c5.1-1.4 5.6-2.4 5.6-2.4-.3 1.9-4.7 3.1-5.4 3.2-.7.2-5 1.4-6.3-.1.1 0 1 .7 6.1-.7" fill="#fff"/><path d="m49.3 56.7c.2.3.1.8-.4 1-.6.2-.7-.4-1-1.7-.5-2.3-2.7-9.9-2.7-9.9s1.9 6.7 4.1 10.6" opacity=".33" fill="#3e4347"/><path d="m38.1 18.1c2.6 0 5.9.2 7 3.1.5 3.5.5 7.4-.1 12.3-.4 3.6-4 3.8-6 1.1-5.6-7.7-7.5-13.3-8.7-20.3-.4-2.8 3.5 3.8 7.8 3.8" fill="#fed0ac"/><g fill="#fff"><path d="m22.5 5.6c-4.5-1.2-6-2.5-6-2.5.1.3.4.7.8 1-.6 1.3-3.8 8.5-4 16.2-.1 4 .3 9.7.8 13.8-.1-5.2.6-13.6 1.7-18.8 1.3-6.4 2.6-9.2 3.1-10.1 1.2.6 2.5 1.1 3.3 1.3 0 0 0 0 .1 0-.3 2.3-2 13.6-7 26.7 0 0 7.7-15.2 9.1-26.3 1.8.2 3.9.3 4.5-.4.1 0-1.9.3-6.4-.9" opacity=".5"/><path d="m31.3 13.8c.2 1.7 1.9 9.3 6 16.1 4.1 6.8-3.4-6.9-4.8-16.1-.3-2.3-1.3-1.7-1.2 0" opacity=".5"/><path d="m33.6 11.2c1.4 11.2 9.2 27.2 9.2 27.2-5.1-13.2-6.8-25.2-7.1-27.6 0 0 0 0 .1 0 1.7-.5 5.5-2.1 5.8-3.4 0 0-1.5 1.3-6 2.5-4.6 1.3-6.6.9-6.6.9.6.7 2.7.6 4.6.4" opacity=".5"/></g><path d="m40.9 12.2c-.8-2.3.4-2.2 1.1-.6.7 1.6 2.8 9.2 2.3 17.3-.5 8-.2-7.8-3.4-16.7" opacity=".33" fill="#3e4347"/><g fill="#42ade2"><path d="M47.7 18.1 62 14.7 59 9z"/><path d="m49.3 21.1l8.3 6.9 2.6-4.9z"/><path d="m46 13.3l7.5-8.7-5.1-2.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f943.svg b/riot/emojione/svg/1f943.svg new file mode 100644 index 0000000..025cd0b --- /dev/null +++ b/riot/emojione/svg/1f943.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 58.3c-.2 2.1-2.1 3.7-4.1 3.7h-41.8c-2.1 0-4-1.7-4.1-3.7l-5-52.6c-.2-2 1.4-3.7 3.5-3.7h53.1c2.1 0 3.6 1.7 3.4 3.7l-5 52.6" fill="#e8e8e8"/><path d="m54.1 46.1c-6.3 0-12.2 3.8-12.2 3.8s11.4-1.8 10.3-.9c-8.5 6.4-34 6.2-39 .5-2.7-3.1 17.2 4.3 21.1-3.3h-24.4c-1 0-1.8.8-1.6 1.9l1.3 9.4c.1 1 1.1 1.9 2.1 1.9h40.4c1 0 2-.8 2.1-1.9l1.3-9.4c.3-1.2.2-2-1.4-2" fill="#b2c1c0"/><path d="m56.9 31.1c.1-1-.7-1.9-1.7-1.9h-46.4c-1 0-1.8.8-1.7 1.9l1.1 11.3c.1 1 1 1.9 2.1 1.9h43.6c1 0 2-.8 2.1-1.9l.9-11.3" fill="#89664c"/><g fill="#e8e8e8"><path d="m18.5 55.3c-3.6-.7-7.4-4.1-7.2-1.2.4 5 1.6 3 12.7 3s-4.3-1.5-5.5-1.8"/><path d="m46.1 55.3c3.6-.7 7.4-4.1 7.2-1.2-.4 5-1.6 3-12.7 3s4.3-1.5 5.5-1.8"/></g><path d="m53.6 41.4c0-.5 0-.9-21.6-.9-21.7 0-21.6.4-21.6.9s-.1.9 21.6.9c21.6 0 21.6-.4 21.6-.9" opacity=".67" fill="#594640"/><path d="m51.7 40.4c1 .2 2-.5 2.1-1.5l.7-5.9c.1-1.1-.7-1.9-1.7-1.9h-42.5c-1.1 0-1.1.3 0 .5 0 0 5.7.3 11.3 1.4 3.9.8 5.3 2.1 9.9 3.1 4.4.9 6.6.5 10.7 1.3 5 1.1 9.5 3 9.5 3" opacity=".67" fill="#ff8736"/><path d="m45.1 40.4c0 1 .8 1.9 1.7 1.9h5.5c1 0 1.9-.8 2-1.9 1-8 2.9-25.8 3.9-33.8.1-1-.6-1.9-1.6-1.9h-9.1c-1 0-1.8.8-1.8 1.9-.1 8.1-.4 25.9-.6 33.8" opacity=".5" fill="#fff"/><path d="m31.9 27.7c.3-1.1 0-2.9-.6-3.9l-3.7-6.4c-.6-1-1.9-1.6-3-1.3l-7.3 1.9c-1.1.3-2.4 1.4-2.8 2.4l-2.8 6.1c-.3.7-.4 1.7-.1 2.6h20l.3-1.4" opacity=".5" fill="#b2c1c0"/><path d="m16.5 37.2c.6 1 2 1.5 3.1 1.2l8.4-2.2c1.1-.3 2.2-1.4 2.5-2.6l1.1-4.6h-20c.1.4.2.8.4 1.1l4.5 7.1" opacity=".5" fill="#ff8736"/><path d="m14.1 31.7c1.3 2.3 3.1 6 4.8 5.5 1.7-.5 6.5-1.7 7.4-2 .9-.2 1.2-1.8-3.5-.5-4.8 1.3-6-.8-7.7-3.5-1.7-2.6-2.3-1.7-1 .5" opacity=".67" fill="#89664c"/><path d="m51 27.7l-4.7-4.9c-.7-.7-2.1-1.2-3.1-1.1l-5.9.6c-1 .1-2.2 1-2.7 1.9l-2.4 5h19.5c-.1-.6-.3-1.1-.7-1.5" opacity=".5" fill="#b2c1c0"/><path d="m31.7 34l5.4 5.6c.7.7 2.1 1.1 3 .8l5.2-1.6c1-.3 2.2-1.3 2.7-2.2l3.3-5.8c.2-.4.3-1 .3-1.5h-19.4l-.9 1.7c-.4.9-.3 2.3.4 3" opacity=".5" fill="#ff8736"/><path d="m34.4 26.6c-1.2 2.1-3.2 5.1-2.1 6.3 1.1 1.2 4.2 4.3 4.8 4.9.6.6 1.9.2-1.2-3-3.1-3.2-2-5-.7-7.6 1.4-2.6.4-2.7-.8-.6" opacity=".67" fill="#89664c"/><path d="m42.9 31.9c0 1.9-5.5 7.3-3.8 7.5 1.2.1 3.3-5.1 5.4-6.7 1.3-1 3.4-1.3 5.1-2.1 2.1-1.1.5-1.5-2.2-.4-1.5.6-2.9-.2-4-1h-1.8c.8.9 1.3 1.8 1.3 2.7" opacity=".5" fill="#ffce31"/><path d="m42.1 27.9c0 0-3.8-5-4.7-4.1-.8.8 2.3 3.1 4.2 5.4h1.8c-.8-.7-1.3-1.3-1.3-1.3" fill="#fff"/><path d="m29 34.3c.5-.7-.8-2.8-1.9-5.1h-1.2c1.2 2.7 2.3 6.1 3.1 5.1" opacity=".5" fill="#ffce31"/><path d="m26.5 19.2c.2-2.7-1.1-1.3-1.6 1.9-.5 3.2-5.2 3.9-5.2 3.9s-6.9.9-6.6 2.3c.5 1.8 8-2.5 10.9-.9.6.3 1.2 1.5 1.8 2.8h1.2c-.7-1.4-1.3-2.8-1.4-3.9-.2-1.8.7-4 .9-6.1" fill="#fff"/><g opacity=".5"><path d="m11.1 42.5c1.2 0 .7-8.4-.2-18.9-.8-10.4-2.2-18.9-3-18.9-1.4 0-.7 8.4.2 18.9.8 10.4 2.2 18.9 3 18.9" fill="#fff"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f944.svg b/riot/emojione/svg/1f944.svg new file mode 100644 index 0000000..f69528c --- /dev/null +++ b/riot/emojione/svg/1f944.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.9 38.4c-3.3-3.3-5.6-5.6-10.4-10.4-3.1-3.1-.4-11-8.6-19.2-5.8-5.8-15.3-9-19.2-5.1-3.9 3.9-.7 13.4 5.1 19.2 8.2 8.2 16 5.5 19.2 8.6 4.8 4.8 7.1 7.1 10.4 10.4 4.3 4.3 4.6 5.8 11.3 14.8 3.3 4.5 6.5 7.3 10.4 3.4 4-4 1.1-7.1-3.4-10.4-9-6.7-10.4-7-14.8-11.3" fill="#d0d0d0"/><path d="m15.6 5.9c5.4 6.9 7.2 14.9 4.4 20.1.2 0 .4.1.5.1 1.9 0 3.6-.5 4.8-1.7 1.2-1.2 2-2.9 1.7-4.8-.4-2.8-1.9-6-5.2-9.3-1.8-1.9-4-3.4-6.2-4.4" fill="#fff"/><path d="m13.2 23.7c-6.9-6.9-9.2-15.8-5.5-20.4-1.3.1-2.3.5-3.1 1.3-3.1 3.1-.6 11.7 5.1 17.4 2.3 2.3 4.6 3.7 6.7 4.6 0 0 0-.1-.1-.1-1.1-.8-2.1-1.8-3.1-2.8" fill="#94989b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f945.svg b/riot/emojione/svg/1f945.svg new file mode 100644 index 0000000..181c852 --- /dev/null +++ b/riot/emojione/svg/1f945.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g opacity=".6"><path d="m58.3 39.8l2.9-3.1v-4.2l-2.9-3.1 2.9-3.1v-4.2l-2.9-3.1 2.9-3.1v-4.2l-2.9-3.1 2.9-3.1v-.3h-3.6l-1.3 1.3-1.3-1.3h-7.2l-1.3 1.3-1.3-1.3h-7.2l-1.3 1.3-1.3-1.3h-7.2l-1.3 1.3-1.3-1.3h-7.2l-1.3 1.3-1.3-1.3h-6.9l-1.3 1.3-1.2-1.3h-3.7v.3l2.9 3.1-2.9 3.1v4.2l3 3.1-2.9 3.1v4.2l2.9 3.1-2.9 3.1v4.2l2.9 3.1-2.9 3.1v2.1h1.9l2.9-3.1 2.9 3.1h3.9l2.9-3.1 2.9 3.1h3.9l2.9-3.1 3 3.1h4l2.9-3.1 2.9 3.1h3.9l2.9-3.1 2.9 3.1h3.9l2.9-3.1 2.9 3.1h1.9v-2.1l-2.8-3.1m1-15.6l-2.9 3.1-2.9-3.1 2.9-3.1 2.9 3.1m-43.9 5.2l-2.9 3.1-2.9-3.1 2.9-3.1 2.9 3.1m-5.8-10.4l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m4.8 5.2l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m4.9-5.2l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m2.9 7.3l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m2-2.1l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m4.9-5.2l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m2.9 7.3l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m2-2.1l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m4.8-5.2l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m3 7.3l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m1.9-2.1l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m4.9-5.2l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m2.9 7.3l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m4.9-15.6l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.9-5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.9 5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.8-5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.9 5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.9-5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.9 5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.9-5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.8 5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-4.9-5.2l2.9 3.1-2.9 3.1-2.9-3.1 2.9-3.1m-7.8 8.3l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m0 10.4l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m0 10.4l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m7.8 8.3l-2.9-3.1 2.9-3.1 2.9 3.1-2.9 3.1m1.9-8.3l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m7.8 8.3l-2.9-3.1 2.9-3.1 2.9 3.1-2.9 3.1m2-8.3l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m7.8 8.3l-2.9-3.1 2.9-3.1 2.9 3.1-2.9 3.1m2-8.3l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m7.8 8.3l-2.9-3.1 2.9-3.1 2.9 3.1-2.9 3.1m1.9-8.3l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1m7.8 8.3l-2.9-3.1 2.9-3.1 2.9 3.1-2.9 3.1m2-8.3l2.9-3.1 2.9 3.1-2.9 3.1-2.9-3.1" fill="#d0d0d0"/></g><path d="m58.3 2h-52.6c-2 0-3.7 1.8-3.7 4v39c0 .6.8 1 1.9 1s1.9-.4 1.9-1v-39h52.5v39c0 .6.8 1 1.9 1 1 0 1.9-.4 1.9-1v-39c-.1-2.2-1.8-4-3.8-4" fill="#d0d0d0"/><circle cx="41" cy="49" r="12.7" fill="#fff"/><path d="m54 49c0-.3.1-4.7-2.5-7.6-.1-.3-.7-1.3-2.4-2.6-1.2-.9-2.4-1.6-2.5-1.6 0 0 0 0 0 0-.1-.1-2.3-1.2-4.9-1.2-.2 0-.4 0-.6 0-2 0-4 .5-5.2 1-1.1.5-2.2 1.3-2.3 1.3-1.5.8-4.3 4.1-4.5 5.9-.9 1.1-1.6 6.3 0 9.4 1.2 4.3 5.5 6.5 5.8 6.7.2.1 2.6 1.6 5.5 1.6.1 0 .9 0 1.1 0 3.1 0 7.8-2.2 8.8-3.9 2.5-1.9 3.9-6.9 3.7-9m-19.2 6.5c-1.2-2-2-4.6-2.1-5.2.4-.6 2.3-3.5 3.4-4.3.6.1 3.2.6 5.7 1 .3.8 1.7 4.3 2.1 5.7-.4.5-2.1 2.5-3.8 4-1.7 0-4.7-1-5.3-1.2m15.7-14c0 .2-.1.9-.4 1.7-.7-.3-2.3-1.1-4.6-1.2-.3-.5-1.6-2.3-3.7-3.5.3-.5.7-1.2.9-1.4.1 0 .2 0 .4 0 1.1 0 3 .7 3.2.8.1 0 3.5 1.8 4.2 3.6m-18.3 8.4c-1.5-.3-2.4-.7-2.6-.9-.6-2-.1-4.2 0-4.5.5-1 2.1-3.5 3.1-3.9 1.1-.2 2.4.1 2.9.2-.1.7-.1 2.7.1 4.7-1.1.9-3 3.7-3.5 4.4m8.7-13.2c.3 0 .8.1 1.2.2-.3.4-.7 1.1-.8 1.4-.7.1-3.3.6-5.3 1.9-.4-.1-1.6-.4-2.8-.3.3-.6.7-1 .8-1 0-.1 3.1-2.3 6.9-2.2m8.2 16.5c-.5 0-2.5-.1-4.6-.6-.4-1.4-1.8-5-2.1-5.8 1.3-1.9 2.6-3.7 3-4.2 2.5.1 4.2 1 4.5 1.2 1.4 2.3 1.7 4.6 1.8 5-.7 2.4-2.2 4-2.6 4.4m-20.4-5.7c0 .5.1 1.1.3 1.7-.1.4-.2.8-.3 1.1-.1-.9-.1-1.9 0-2.8m4.2 10.1c.7-.6 1.5-1.2 1.8-1.5.7.2 3.6 1.2 5.5 1.2.3.4 1.3 1.7 2.6 2.8-.8.8-1.9 1.1-2.1 1.2-3.6.1-7-1.9-7.8-3.7m9.3 3.7c.4-.2.8-.5 1.2-.9.6-.1 3-.5 5.2-2.1.1 0 .4 0 .6 0-1.4 1.3-4.5 2.7-7 3m6.7-3.6c.8-2 .8-3.6.7-4.1.4-.4 1.9-2 2.7-4.4.4.1.7.2.9.2 0 .2.1.6.1 1.2-.3 2.2-1.5 5.5-3.5 6.9-.2.2-.6.2-.9.2" fill="#4a4e51"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f947.svg b/riot/emojione/svg/1f947.svg new file mode 100644 index 0000000..abb7620 --- /dev/null +++ b/riot/emojione/svg/1f947.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#428bc1" d="m46.1 2l-11.3 16.9h5.6l12.6-16.9z"/><path fill="#e8e8e8" d="m40.4 2l-11.2 16.9h5.6l11.3-16.9z"/><path fill="#ed4c5c" d="m34.8 2l-11.2 16.9h5.6l11.2-16.9z"/><g fill="#ffce31"><circle cx="32" cy="41.4" r="20.6"/><path d="m21.7 15.1c-.5 0-.9.4-.9.9v8.4c0 .5.4.9.9.9h20.6c.5 0 .9-.4.9-.9v-8.4c0-.5-.4-.9-.9-.9h-20.6m19.7 6.6c0 .5-.4.9-.9.9h-16.9c-.5 0-.9-.4-.9-.9v-3.8c0-.5.4-.9.9-.9h16.9c.5 0 .9.4.9.9v3.8"/></g><path d="m14.3 43.8c0-11.2 8.6-20.3 19.6-21.1-.5 0-1.1-.1-1.6-.1-10.5 0-19 8.5-19 19.1 0 3.1.8 6.1 2.1 8.7-.7-2.1-1.1-4.3-1.1-6.6" opacity=".5" fill="#89664c"/><path d="m39.9 57.3c9.3-6.2 12.1-18.3 6.7-27.7.3.4.6.8.9 1.2 5.8 8.6 3.4 20.3-5.3 26.2-2.6 1.8-5.5 2.8-8.4 3.1 2.2-.6 4.2-1.5 6.1-2.8" opacity=".33" fill="#fff"/><path fill="#ed4c5c" d="m23.6 18.9h5.6l-11.3-16.9h-6.9z"/><path fill="#e8e8e8" d="m29.2 18.9h5.6l-11.2-16.9h-5.7z"/><path opacity=".5" fill="#3e4347" d="m32.9 4.8l-2.8 4.2 6.6 9.9h3.7l1-1.4z"/><path fill="#428bc1" d="m34.8 18.9h5.6l-11.2-16.9h-5.6z"/><g fill="#89664c"><path d="m26.8 35.2v1c1 0 1.9-.2 2.8-.6v-1.4c-.8.6-1.7.9-2.8 1" opacity=".5"/><path opacity=".5" d="m33.4 28.7h.9v21.6h-.9z"/><path opacity=".5" d="m37.2 51.2v2.8h-10.4v1h11.3v-3.8z"/></g><g fill="#fff"><path opacity=".33" d="m34.3 50.3h2.8v.9h-2.8z"/><path d="m30.6 28.7h2.8v-.9h-3.8c0 2.1-1.7 3.8-3.8 3.8v3.7c.3 0 .6 0 .9-.1v-2.8c2.2.1 3.9-1.6 3.9-3.7" opacity=".33"/><path d="m30.6 51.2v-16c-.3.2-.6.3-.9.5v14.6h-3.8v3.7h.9v-2.8h3.8" opacity=".33"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f948.svg b/riot/emojione/svg/1f948.svg new file mode 100644 index 0000000..2da21e1 --- /dev/null +++ b/riot/emojione/svg/1f948.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#428bc1" d="m46.1 2l-11.3 16.9h5.6l12.6-16.9z"/><path fill="#e8e8e8" d="m40.4 2l-11.2 16.9h5.6l11.3-16.9z"/><path fill="#ed4c5c" d="m34.8 2l-11.2 16.9h5.6l11.2-16.9z"/><g fill="#b2c1c0"><circle cx="32" cy="41.4" r="20.6"/><path d="m21.7 15.1c-.5 0-.9.4-.9.9v8.4c0 .5.4.9.9.9h20.6c.5 0 .9-.4.9-.9v-8.4c0-.5-.4-.9-.9-.9h-20.6m19.7 6.6c0 .5-.4.9-.9.9h-16.9c-.5 0-.9-.4-.9-.9v-3.8c0-.5.4-.9.9-.9h16.9c.5 0 .9.4.9.9v3.8"/></g><path d="m14.3 43.8c0-11.2 8.6-20.3 19.6-21.1-.5 0-1.1-.1-1.6-.1-10.5 0-19 8.5-19 19.1 0 3.1.8 6.1 2.1 8.7-.7-2.1-1.1-4.3-1.1-6.6" opacity=".5" fill="#3e4347"/><path d="m39.9 57.3c9.3-6.2 12.1-18.3 6.7-27.7.3.4.6.8.9 1.3 5.8 8.6 3.4 20.3-5.3 26.2-2.6 1.8-5.5 2.8-8.4 3.1 2.2-.7 4.2-1.6 6.1-2.9" opacity=".33" fill="#fff"/><path fill="#ed4c5c" d="m23.6 18.9h5.6l-11.3-16.9h-6.9z"/><path fill="#e8e8e8" d="m29.2 18.9h5.6l-11.2-16.9h-5.7z"/><path opacity=".5" fill="#3e4347" d="m32.9 4.8l-2.8 4.2 6.6 9.9h3.7l1-1.4z"/><path fill="#428bc1" d="m34.8 18.9h5.6l-11.2-16.9h-5.6z"/><g fill="#3e4347"><path d="m31.5 31.5c-2.1 0-3.8 1.7-3.8 3.7h-2.7c0 .3-.1.6-.1.9h3.8c0-2.1 1.7-3.8 3.8-3.8.8 0 1.5.3 2.1.7-.7-.8-1.8-1.5-3.1-1.5" opacity=".5"/><path opacity=".5" d="m39 54h-14v1h15v-3.8h-1z"/><path d="m31.5 42.8c-2.1 0-3.8 1.7-3.8 3.8v3.8h.9v-2.8c0-2.1 1.7-3.8 3.8-3.8 4.1 0 7.5-3.4 7.5-7.5 0-2.3-1-4.4-2.7-5.8 1.1 1.3 1.8 3 1.8 4.8 0 4.1-3.3 7.5-7.5 7.5" opacity=".5"/></g><g fill="#fff"><path opacity=".33" d="m28.7 50.3h10.3v.9h-10.3z"/><path d="m32.5 40c2.1 0 3.8-1.7 3.8-3.8 0-1.3-.6-2.4-1.6-3.1.4.6.7 1.3.7 2.1 0 2.1-1.7 3.8-3.8 3.8-4.1 0-7.5 3.4-7.5 7.5v7.5h.9v-6.6c0-4.1 3.3-7.4 7.5-7.4" opacity=".33"/><path d="m32.5 28.7c1.8 0 3.5.7 4.8 1.8-1.4-1.6-3.4-2.7-5.8-2.7-4.1 0-7.5 3.4-7.5 7.5h1c.5-3.7 3.6-6.6 7.5-6.6" opacity=".33"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f949.svg b/riot/emojione/svg/1f949.svg new file mode 100644 index 0000000..1322b55 --- /dev/null +++ b/riot/emojione/svg/1f949.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#428bc1" d="m46.1 2l-11.3 16.9h5.6l12.6-16.9z"/><path fill="#e8e8e8" d="m40.4 2l-11.2 16.9h5.6l11.3-16.9z"/><path fill="#ed4c5c" d="m34.8 2l-11.2 16.9h5.6l11.2-16.9z"/><g fill="#d3976e"><circle cx="32" cy="41.4" r="20.6"/><path d="m21.7 15.1c-.5 0-.9.4-.9.9v8.4c0 .5.4.9.9.9h20.6c.5 0 .9-.4.9-.9v-8.4c0-.5-.4-.9-.9-.9h-20.6m19.7 6.6c0 .5-.4.9-.9.9h-16.9c-.5 0-.9-.4-.9-.9v-3.8c0-.5.4-.9.9-.9h16.9c.5 0 .9.4.9.9v3.8"/></g><path d="m14.3 43.8c0-11.2 8.6-20.3 19.6-21.1-.5 0-1.1-.1-1.6-.1-10.5 0-19 8.5-19 19.1 0 3.1.8 6.1 2.1 8.7-.7-2.1-1.1-4.3-1.1-6.6" opacity=".5" fill="#3e4347"/><path d="m39.9 57.3c9.3-6.2 12.1-18.3 6.7-27.7.3.4.6.8.9 1.2 5.8 8.6 3.4 20.3-5.3 26.2-2.6 1.8-5.5 2.8-8.4 3.1 2.2-.6 4.2-1.5 6.1-2.8" opacity=".33" fill="#fff"/><path fill="#ed4c5c" d="m23.6 18.9h5.6l-11.3-16.9h-6.9z"/><path fill="#e8e8e8" d="m29.2 18.9h5.6l-11.2-16.9h-5.7z"/><path opacity=".5" fill="#3e4347" d="m32.9 4.8l-2.8 4.2 6.6 9.9h3.7l1-1.4z"/><path fill="#428bc1" d="m34.8 18.9h5.6l-11.2-16.9h-5.6z"/><g fill="#3e4347"><path d="m31.5 31.5c-2.1 0-3.8 1.7-3.8 3.7h-2.7c0 .3-.1.6-.1.9h3.8c0-2.1 1.7-3.8 3.8-3.8.8 0 1.5.3 2.1.7-.7-.8-1.8-1.5-3.1-1.5" opacity=".5"/><path d="m37.4 41.8c1.6-1.4 2.6-3.4 2.6-5.6 0-2.3-1-4.4-2.7-5.8 1.1 1.3 1.8 3 1.8 4.8 0 2.2-1 4.3-2.6 5.6 1.6 1.4 2.6 3.4 2.6 5.6 0 4.1-3.4 7.5-7.5 7.5-1.8 0-3.5-.7-4.8-1.8 1.4 1.6 3.4 2.7 5.8 2.7 4.1 0 7.5-3.4 7.5-7.5-.1-2.1-1.1-4.1-2.7-5.5" opacity=".5"/></g><g fill="#fff"><path d="m32.5 28.7c1.8 0 3.5.7 4.8 1.8-1.4-1.6-3.4-2.7-5.8-2.7-4.1 0-7.5 3.4-7.5 7.5h1c.5-3.7 3.6-6.6 7.5-6.6" opacity=".33"/><path d="m36.2 36.2c0-1.3-.6-2.4-1.6-3.1.4.6.7 1.3.7 2.1 0 2.1-1.7 3.8-3.8 3.8v3.8c.3 0 .6.1.9.1v-2.9c2.1 0 3.8-1.7 3.8-3.8" opacity=".33"/><path d="m32.5 51.2c2.1 0 3.8-1.7 3.8-3.8 0-1.3-.6-2.4-1.6-3.1.4.6.7 1.3.7 2.1 0 2.1-1.7 3.8-3.8 3.8-.8 0-1.5-.3-2.1-.7.6 1.1 1.7 1.7 3 1.7" opacity=".33"/><path d="m27.9 47.5c-.1-.3-.1-.6-.1-.9h-3.8c0 2.3 1 4.4 2.7 5.8-1.1-1.3-1.8-3-1.8-4.8l3-.1" opacity=".33"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f94a.svg b/riot/emojione/svg/1f94a.svg new file mode 100644 index 0000000..752af12 --- /dev/null +++ b/riot/emojione/svg/1f94a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m15.6 59c0 0 7.3-3.8 14.9-2.3 7.1 1.4 7.3-3 11.1-3s3.2-3.4 6.1-3.2c0 0 1.3.1 1.3 1.4 0 0-2.4.1-3.4 2s-6.6 1.7-8.8 3.9c-2.7 2.7-10.3.9-13.5 1.2-2.5.3-5.5 3-9.8 3l2.1-3"/><path d="m27.3 53.6c0 0 4.6-.2 7.3 1.8 2.8 2 4.8 4.5 8.3 3.3 3.5-1.2 6.8-2.1 10.6-.9 0 0 .5-.7.4-1.5 0 0-2.4-1.4-5.2-.8s-5.6 2.2-7.4 1.6-5.6-4.7-11.7-4.7l-2.3 1.2"/><path d="m55.8 57.7c.1-.2.1-.4 0-.4l-3.3-1.2-.3.7 3.3 1.2c0 0 .2-.1.3-.3"/></g><path d="m14.3 37.6c0 0-5.4-18.3 13.1-24.3 16.4-5.2 11 10.1-13.1 24.3" fill="#c94747"/><path d="m27.4 10.6c-8.6 22.2-14.5 21.6-10.5 29.4l1.5 19.8c0 0 2.7-1.6 9.1-5.3 4.8-2.8 14.3-3.5 20.7-7.3 11.3-6.6 17.8-16.7 11.3-28.1-6.5-11.3-24.9-27.2-32.1-8.5" fill="#ed4c5c"/><path d="m24.4 42.8c-3.2-5.6-8.2-8.7-11.2-7l-9.1 5.3 11.5 20.4 9.1-5.3c3-1.8 2.9-7.8-.3-13.4" fill="#c94747"/><path d="m15.4 48.1c3.2 5.6 3.3 11.6.3 13.4-3 1.8-8-1.4-11.2-7-3.2-5.6-3.3-11.6-.3-13.4 3-1.7 8 1.4 11.2 7" fill="#3e4347"/><path d="m13.6 49.1c2.3 4.1 2.5 8.4.5 9.6-2 1.2-5.6-1.1-7.9-5.2-2.3-4.1-2.5-8.4-.5-9.6 2.1-1.2 5.6 1.2 7.9 5.2" fill="#ed4c5c"/><path d="m13.6 49.1c-1.9-3.4-4.7-5.6-6.8-5.5-.4 1.9.2 4.8 1.8 7.6 1.9 3.4 4.7 5.6 6.8 5.5.4-1.9-.2-4.8-1.8-7.6" fill="#c94747"/><path d="m38.7 6c3-1.8 12.6 5.4 17 13.1 4.4 7.7-2.5 9.2-6.9 1.5-4.3-7.8-15-11.8-10.1-14.6" fill="#ff717f"/><path d="m26.2 13.8c0 0-2 9.4-8.9 17.1 0 0 4.4-7 6-15.9l2.9-1.2" fill="#3e4347"/><path d="m30 9.9c3.4-1 .1-3.8 2-6-1.8 1.4-4.1 3.4-5 6.7-4.6 17.5-11.3 19.2-11.4 24.8 1.2-.8 3.8-3.3 6.8-2.5 4.3 1.2-4.9-4.5.2-3.8 5.2.6-2.1-3.7 2.6-4 4.7-.3-4-5 2.1-4.9 6.1.1-3.5-4.1 3.5-4.5 7-.6-5-4.6-.8-5.8" fill="#c94747"/><path d="m9 39.9c2.7 1.2 5.5 3.9 7.6 7.5 2.1 3.7 2.9 7.4 2.6 10.4l4.9-2.9c2-1.2 2.2-6.2-.8-11.5-2.5-4.4-6-6.8-8.1-6.8-.5 0-.8.1-1.2.3l-5 3" fill="#fff"/><path d="m51 50.7c0-.2-.1-.4-.2-.4l-3.6.7.1.8 3.5-.6c.1-.1.2-.3.2-.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f94b.svg b/riot/emojione/svg/1f94b.svg new file mode 100644 index 0000000..44fc92b --- /dev/null +++ b/riot/emojione/svg/1f94b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.7 52.7c0-34.4-7.9-43.1-7.9-43.1-12.1-6.1-14.6-6.4-20-6.5-.4 0-1.2 0-1.6 0-5.4.1-7.9.4-20.1 6.5 0 0-7.9 8.7-7.9 43.1 0 0 3.9-1.2 11.6 0 0 0-.8 3-2.9 7.1 0 0 8.2 2.7 19.3-1.5 12.3 4.7 20.8 1.5 20.8 1.5-2.1-4.1-2.9-7.1-2.9-7.1 7.7-1.2 11.6 0 11.6 0" fill="#fff"/><g fill="#3e4347"><path d="m47.1 34c0 0 5-1.1 8.5.7 0 0-5.3-1.1-8.8 1.9l.3-2.6"/><path d="m61.6 43.8c0 0-3.8-1.4-9.4 0 0 0 6.2-.1 9.6 2.8l-.2-2.8"/><path d="m48.7 47.8c0 0 3.1-1.6 7.2-1.2 0 0-4-1.5-7.7-.9l.5 2.1"/><path d="m49.4 20.7l-2.1 2.6c0 0-.2-1.2-1.3-3 0 0 1.1 4.9 0 11.3-1.2 6.9-.3 20.8 4.4 28.7l1.7-2.2c0 0-6.1-16.9-4.2-26 1.5-7.2-.6-6.8 1.5-11.4"/><path d="m28.1 41.2c0 0-5.1 2.1-9.9 11.5 0 0 2.3.7 4.4 1.3 0 0 3.8-7.4 9.5-12.1l-4-.7"/><path d="m33.8 40.1c0 0 5.1 2.1 9.9 11.5 0 0-2.3.7-4.4 1.3 0 0-3.8-7.4-9.5-12.1l4-.7"/><path d="M18.7,6c0,0,2.1,6.1,7.6,14.4c0,0-4.4-10.9-5.1-15.7L18.7,6z"/><path d="m30.7 37.5c0 0-5.7 3.7-5 4.3.7.6 4.3 4.4 5 3.9.7-.6 5.7-4.2 5-4.8-.8-.7-4.1-4-5-3.4"/><path d="m18 34c0 0-5-1.1-8.5.7 0 0 5.3-1.1 8.8 1.9l-.3-2.6"/><path d="m3.5 43.8c0 0 3.8-1.4 9.4 0 0 0-6.2-.1-9.6 2.8l.2-2.8"/><path d="m16.5 47.8c0 0-3.1-1.6-7.2-1.2 0 0 4-1.5 7.7-.9l-.5 2.1"/><path d="m14.8 20.7l2.1 2.6c0 0 .2-1.2 1.3-3 0 0-1.1 4.9 0 11.3 1.2 6.9.3 20.8-4.4 28.7l-1.7-2.2c0 0 6.1-16.9 4.2-26-1.4-7.2.6-6.8-1.5-11.4"/><path d="m17.2 39.9v2.8c16.4 2 29.2 0 29.2 0v-2.8c-17.7-2.2-29.2 0-29.2 0"/><path d="m45.6 6c0 0-2.1 6.1-7.6 14.4 0 0 4.4-10.9 5.1-15.7l2.5 1.3"/></g><path d="m25.2 3.7c0 0 2.7 11.2 7.4 19.7 0 0 5.8-13.6 6.2-19.7 0 0-7.7-1.5-13.6 0" fill="#d0d0d0"/><path d="m26.3 4.6c0 0 2.7 5.2 6.3 7.9 0 0 3.4-2.3 5.3-7.7l-5.2 19.5-5.7-13.8-.7-5.9" fill="#94989b"/><g fill="#3e4347"><path d="m32.3 25c-5.9-8-8.5-20-8.6-20.5l2.5-.4c0 .1 2.6 12.1 8.2 19.8l-2.1 1.1"/><path d="m28.5 40.3l-2.4-.8c6.1-12.7 12-35.2 12-35.5l2.5.5c0 .2-5.9 22.9-12.1 35.8"/><path d="m44.4 62c-3.5 0-8-.6-13.2-2.5-11.2 4-19.4 1.4-19.8 1.3l-1.2-.4.5-1c1.3-2.5 2.1-4.6 2.5-5.8-6.2-.8-9.5.1-9.5.2l-1.7.5v-1.5c0-34.4 7.8-43.5 8.1-43.8l.2-.2.2-.1c12.4-6.2 15.1-6.5 20.7-6.7.4 0 1.3 0 1.7 0 5.5.1 8.3.4 20.7 6.7l.2.1.1.2c.3.4 8.1 9.4 8.1 43.8v1.5l-1.7-.5c0 0-3.3-.9-9.5-.1.4 1.2 1.2 3.3 2.5 5.8l.5 1-1.2.4c-.2 0-3.2 1.1-8.2 1.1m-12.1-4.4c8.7 3.2 15.4 2.2 18 1.6-1.7-3.6-2.4-6.1-2.4-6.2l-.3-1.1 1.3-.2c5-.8 8.6-.6 10.5-.3-.2-30-6.5-39.6-7.5-40.9-12.1-6.1-14.3-6.2-19.1-6.3-.4 0-1.1 0-1.5 0-4.8.1-7.1.2-19.2 6.3-.9 1.3-7.3 10.9-7.5 40.9 1.9-.3 5.5-.5 10.5.3l1.3.2-.3 1.1c0 .1-.7 2.6-2.4 6.1 2.5.5 8.5 1.2 16-1.4-.9-2.7-3.3-10.4-3.3-14.8h2.6c0 4.3 2.6 12.6 3.3 14.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f950.svg b/riot/emojione/svg/1f950.svg new file mode 100644 index 0000000..184e56c --- /dev/null +++ b/riot/emojione/svg/1f950.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 5.1c7.9-.8 15.2 8 3.4 14-7.9 4-15.1 9.2-21.3 15.3l-17-16.9c7.4-7.2 18.5-10.7 34.9-12.4" fill="#fbbf67"/><path d="m5.1 52.4c1.4-16.7 5-27.7 12.4-34.9l17 16.9c-6.2 6.2-11.4 13.4-15.4 21.3-6 12-14.7 4.5-14-3.3" fill="#d99634"/><path d="m53.3 9c-12.7.2-22.6 1.7-30.4 5 7-4.1 16.2-6.4 28.3-7.8 4.3-.5 8.5 2 9.3 5.3-1.8-1.5-4.4-2.6-7.2-2.5" fill="#ffebb8"/><path d="m11.7 54.7c4.3 1.8 8.6 1 9.8-1.5 6.4-13 16.9-23.5 30-29.9 2.5-1.3 3.3-5.6 1.5-9.8-.5-1.1-1-2.3-1.5-3.4-1.8-4.3-6.1-6.6-9.5-4.9-16.8 8.2-30.3 21.8-38.6 38.6-1.7 3.4.7 7.8 4.9 9.5 1.1.5 2.3 1 3.4 1.4" fill="#d99634"/><path d="m10.3 52.1c4.1 1.6 8.3.7 9.6-1.8 6.8-13 17.4-23.6 30.4-30.3 2.5-1.3 3.4-5.5 1.8-9.6-.4-1.1-.9-2.2-1.3-3.3-1.6-4.1-5.7-6.2-9.1-4.5-16.7 8.7-30.4 22.4-39.1 39.1-1.7 3.3.4 7.5 4.5 9.1 1.1.4 2.2.8 3.2 1.3" fill="#fbbf67"/><path d="m42.2 7.2c-8.2 3.3-15.8 7.7-22.8 13 6.4-6.3 13.8-11.6 21.8-15.7 3.4-1.7 7.7.5 9.4 4.7.3.7.6 1.4.9 2.1-2-3.6-5.9-5.5-9.3-4.1" fill="#ffebb8"/><path d="m16.7 45.5c4 1.5 8.3.1 10.1-2.9 3.9-6.5 9.4-12 15.9-15.9 3-1.8 4.4-6.1 2.9-10.1-1.3-3.1-2.6-6.3-3.9-9.4-1.5-4-7.2-5.5-12.1-2.6-10.3 6.2-18.8 14.7-24.9 24.9-2.9 4.9-1.4 10.6 2.6 12.1 3.1 1.3 6.2 2.6 9.4 3.9" fill="#fbbf67"/><path d="m17.9 48.4c4.2 1.6 8.6.1 10.3-3 3.7-6.7 9.1-12.4 15.6-16.4 3-1.9 4.3-6.3 2.5-10.4-1.5-3.2-3-6.5-4.5-9.7-1.8-4.1-7.7-5.6-12.7-2.6-10.3 6.2-18.7 15-24.5 25.6-2.7 5.1-.8 10.9 3.4 12.5 3.3 1.3 6.6 2.7 9.9 4" fill="#d99634"/><path d="m16.4 45.2c4 1.5 8.3.1 10.1-2.9 3.9-6.5 9.4-12 15.9-15.9 3-1.8 4.4-6.1 2.9-10.1-1.3-3.1-2.6-6.3-3.9-9.4-1.5-4-7.2-5.5-12.1-2.6-10.3 6.2-18.8 14.7-24.9 24.9-3 5-1.4 10.6 2.5 12.1 3.2 1.3 6.3 2.6 9.5 3.9" fill="#fbbf67"/><path d="m43.4 19c-1.4-2.8-2.7-5.7-4.1-8.5-1.6-3.6-6.9-4.8-11.2-1.9-9 5.9-16.4 14-21.5 23.5-1 2-1.3 4-1 5.8-1.3-2.3-1.3-5.6.5-8.7 5.6-9.5 13.6-17.4 23-23 4.6-2.7 9.8-1.3 11.2 2.4 1.2 2.9 2.4 5.8 3.6 8.7.7 1.9.7 3.9.2 5.6.1-1.2-.1-2.6-.7-3.9" fill="#ffebb8"/><path d="m27.9 30.9c3.7 3.7.1-24.6-5-23.4-5.8 1.3-14.2 9.7-15.5 15.4-1.1 5.1 10.9-1.6 20.5 8" fill="#d99634"/><path d="m26.1 27.9c5.6 5.6 1.1-23.7-3.9-22.4-5.6 1.5-14.2 10-15.7 15.7-1.3 5 10.3-2.6 19.6 6.7" fill="#fbbf67"/><g fill="#ffebb8"><path d="m20.6 10.8c-3.6 1-8.4 6.7-10.6 10.6-.3-.6-.5-1.2-.3-1.8 1.1-4.2 7.5-10.6 11.7-11.7 3.7-1 6 9.6 6.1 14.7-1.5-4.5-3.8-12.6-6.9-11.8"/><path transform="matrix(.7077-.7065.7065.7077-6.8974 18.913)" d="m18.8 17.2h1.3v1.3h-1.3z"/><path transform="matrix(.7073-.7069.7069.7073-5.805 20.9655)" d="m21.8 16.9h1.3v1.3h-1.3z"/><path transform="matrix(.7073-.7069.7069.7073-19.3501 16.2871)" d="m9.4 30.9h1.3v1.3h-1.3z"/><path transform="matrix(.7071-.7071.7071.7071-22.4351 16.5292)" d="m8.1 34.7h1.3v1.3h-1.3z"/><path transform="matrix(.7067-.7075.7075.7067-30.3525 15.9475)" d="m3.4 43.9h1.3v1.3h-1.3z"/><path transform="matrix(.7075-.7067.7067.7075-31.8156 17.2783)" d="m4.3 46.4h1.3v1.3h-1.3z"/></g><g fill="#fbbf67"><path transform="matrix(.7075-.7067.7067.7075-37.0121 24.7162)" d="m10.7 56.4h1.3v1.3h-1.3z"/><path transform="matrix(.7071-.7071.7071.7071-38.7091 24.3121)" d="m9.4 58.2h1.3v1.3h-1.3z"/></g><g fill="#ffebb8"><path transform="matrix(.7071-.7071.7071.7071 3.5572 28.1592)" d="m35.1 9.1h1.3v1.3h-1.3z"/><path transform="matrix(.7073-.7069.7069.7073 1.1047 30.6667)" d="m36.9 13.4h1.3v1.3h-1.3z"/><path transform="matrix(.7073-.7069.7069.7073 5.3647 39.1435)" d="m49.3 12.5h1.3v1.3h-1.3z"/><path transform="matrix(.7073-.7069.7069.7073 7.1954 37.6337)" d="m48.4 9.5h1.3v1.3h-1.3z"/><path transform="matrix(.7073-.7069.7069.7073 5.4746 37.595)" d="m47.5 11.5h1.3v1.3h-1.3z"/><path transform="matrix(.7079-.7063.7063.7079 8.3941 44.6746)" d="m57.6 11.5h1.3v1.3h-1.3z"/><path transform="matrix(.7069-.7073.7073.7069 6.5722 44.7649)" d="m56.7 13.8h1.3v1.3h-1.3z"/><path transform="matrix(.7074-.7069.7069.7074-4.4574 19.0453)" d="m19.8 13.9h1.9v1.9h-1.9z"/><path transform="matrix(.7071-.7071.7071.7071-23.0582 18.581)" d="m9.9 36.2h1.9v1.9h-1.9z"/></g><path transform="matrix(.7074-.7069.7069.7074-36.7195 22.7284)" fill="#fbbf67" d="m8.1 54.7h1.9v1.9h-1.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f951.svg b/riot/emojione/svg/1f951.svg new file mode 100644 index 0000000..b8c26d2 --- /dev/null +++ b/riot/emojione/svg/1f951.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.2 7.9l2.5 2.6 5.3-3.5c2.2-.3 3.2-5-2.8-3.5-1.5.4-3.8 1.5-5 4.4" fill="#89664c"/><path d="m61.1 7c1.8-.7.5-2.8.5-2.8s.4 1.5-2.4 1.9c-4.1.6-5.2 3.6-5.2 3.6l.7.7c0 0 2.4-1.8 6.4-3.4" fill="#594640"/><path d="m53.5 6c8.8 9.3 1.2 23.3-7.6 39.5-.7 1.4-1.5 2.7-2.2 4.1-6.2 11.5-15.3 12.7-20.2 12.4-5.5-.4-11-3-14.7-6.9-3.8-4-6.3-9.8-6.7-15.7-.4-5.2.5-15.1 11.1-22 1.2-.8 2.5-1.6 3.7-2.4 14.9-9.8 27.8-18.3 36.6-9" fill="#699635"/><g fill="#c7e755"><path d="m15 19.9c14.5-9.4 29.3-20.4 37-12.2 7.7 8.1-7.5 18.6-16 34.5-8.5 15.8-18.9 18.5-25.8 11.3-6.8-7.3-9.8-24.1 4.8-33.6"/><path d="m11.8 51.8c1.6 1.6 3.3 2.5 5.3 2.6 5.5.4 11.6-4.8 16.7-14.2 2.9-5.5 6.6-10.3 9.9-14.6 5.2-6.7 10-13.1 6.9-16.4-5.3-5.6-19 3.4-30 10.7-1.2.8-2.5 1.6-3.7 2.4-9.1 5.9-9.9 14-9.6 18.3.3 4.4 2 8.6 4.5 11.2"/></g><path d="m11.8 51.8c1.6 1.6 3.3 2.5 5.3 2.6 5.5.4 11.6-4.8 16.7-14.2 2.9-5.5 6.6-10.3 9.9-14.6 5.2-6.7 10-13.1 6.9-16.4-5.3-5.6-19 3.4-30 10.7-1.2.8-2.5 1.6-3.7 2.4-9.1 5.9-9.9 14-9.6 18.3.3 4.4 2 8.6 4.5 11.2" opacity=".33" fill="#ffce31"/><path d="m17.2 27c6-6.6 14.8-6 16.6-2 1.8 4-.8 10-4.8 14.4-4.1 4.4-9.6 7.3-13.3 5.5-3.8-1.8-4.5-11.3 1.5-17.9" fill="#89664c"/><path d="m16.5 33.6c2.6-3.8 5.3-4.8 4.8-3.9-.4.9-1.8 3.1-2.6 5.1-.9 2-1.4 3.7-2.4 4.3-1 .8-2.3-1.4.2-5.5" fill="#d3976e"/><path d="m26.4 36.7c-3.5 3.7-7.7 6.6-11.7 7.5.3.3.6.6 1 .7 3.8 1.9 9.2-1 13.3-5.5 4-4.4 6.6-10.4 4.8-14.4-.2-.4-.4-.7-.7-1-.7 4.2-3.3 8.9-6.7 12.7" fill="#594640"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f952.svg b/riot/emojione/svg/1f952.svg new file mode 100644 index 0000000..d72b1ce --- /dev/null +++ b/riot/emojione/svg/1f952.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m59.9 21.3c-9.5-12-26-6.4-26-6.4-2.3 2.5-4.6 5.2-6.9 8.1-1.5-.5-2.8 1.5-2 2.6-2.1 2.8-4.3 5.3-6.5 7.7-1.8-.4-2.2 1.2-2 2.2-1.5 1.6-3 3.2-4.4 4.6 0 0-13.4 17.9 12.5 16.3 1.1-.6 2.3-1.3 3.4-2 1.4 1.7 2.9-.6 2.7-1.8 1.8-1.2 3.7-2.5 5.7-4 .8.2 1.9.2 2-1.5 1.6-1.2 3.1-2.5 4.7-3.8 2-1.7 3.8-3.4 5.5-5.1 1.1.1 2.9-.2 2.6-2.9 2.3-2.7 4.2-5.4 5.8-8.1.8-.1 2.3-.6 1.3-2.3.5-1.2 1.1-2.4 1.6-3.6" fill="#75a843"/><path d="m39.9 33.5c-1.4 1.2-4.2.7-5.5 1.8-4.5 3.9-4.1 6.7-4.9 7.6-.8.9-3.3-.2-3.7 4.1 1-1.9 3.2-2 4.3-4.1 1.8-3.5 7.4-4.7 9.8-9.4" opacity=".8" fill="#c7e755"/><path d="m13.4 38.8c-1.5 1.5-2.9 3-4.1 4.4-1.4-.7-2.9 1.3-2.6 3.1-2.5 3.1-4 6-3.9 8.9-1.1 1.7-1 3.1 1.3 4 1.6 2.5 4.8 3.1 9.1 2.1.8.7 2.2 1.6 3.3-1 3-1.1 6.3-2.7 9.9-4.8-1.3-1.9-12.4 3.7-5.2-1.8 8.5-6.4-10 3-2.1-4.4 7.9-7.4-10.6 4.1-4.7-1.6 5.9-5.8 2-5.2-2.6-2.6-3.5 1.9-.4-3.3 1.6-6.3" fill="#558730"/><path d="m58.2 3.1c-4.5-2.6-10.3-.5-16.5 4.5-1.5-.8-2.9 0-3.5 3.1-.1.1-3.5 3.4-5.1 5.2 0 0 .4 1.2.4 1.6-.3 1.7-1.2 3.3-2.2 4.7-1 1.4-2.1 2.7-3.2 3.9-1.1 1.1-9.7 12.4-10 12.7.6.2 1.8 1.2 5.4-5.4.6-1.1 2.4-1.5 3.2-2.7.9-1.2.9-3.1 1.7-4.5.8-1.4 3-1.8 4-3.2 1-1.3 2-4.9 3.2-6.1 2.4-2.4 3.1-1.9 2.9-.3-.5 2.4 3.8-3 3.1.4-.6 3.1-3.2 5.1-4.3 6.7-5.7 8.1-10.7 9.5-11 10.9-.9 4.8-3.8 4.5-5.1 8.1 4.3-1.4 3.5-3.3 8.1-5.2 1.3-.6.1-4.4 5.6-8.4 3.5-2.6 2.4-4.7 7.5-8.5 1-.7 5.1-7.8 2.6-1.4-1.1 2.9 7.8-5.3 6.3-2-5.5 12-7.3 7.2-10.7 15.8 4-5.8 6.7-4.6 11-12.4 2.8-5.1 5.6 1.5 2.9 4.7-3.5 4.1-4.5 5.9-5.7 7.1-1.2 1.2-4.4 1.4-7.2 7.9 4.1-4.1 3.9-.9 7.6-7.3 4.5-7.6 8.2-6.1 9.9-9.7 4.2-9.6 3.8-17.5-.9-20.2" fill="#c7e755"/><g fill="#75a843"><path d="m45.1 9.5c.2.2.1.8-.4 1.2-.4.4-1 .6-1.2.4-.2-.2-.1-.8.4-1.2.4-.4.9-.6 1.2-.4" opacity=".8"/><path d="m51.6 6.3c.3.3.1.9-.4 1.4-.5.5-1.1.7-1.3.4-.3-.3-.1-.9.4-1.4.5-.5 1.1-.6 1.3-.4" opacity=".8"/><path d="m51.8 12.3c.2.2.1.6-.3.9-.3.3-.7.5-.9.3-.2-.2-.1-.6.3-.9.3-.4.7-.5.9-.3" opacity=".8"/><path d="m57.7 7.5c.3.3.2 1.1-.4 1.6-.5.5-1.2.7-1.6.4-.3-.3-.2-1.1.4-1.6.5-.6 1.2-.8 1.6-.4" opacity=".8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f953.svg b/riot/emojione/svg/1f953.svg new file mode 100644 index 0000000..d702dc5 --- /dev/null +++ b/riot/emojione/svg/1f953.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 44.8c1.8 3.4 2.8 4.2 8.3 4.8 6.4.7 1.7 4.3 12.1 5.2 9.7-4 5.2-5.8 12.6-9.1 11.2-5 8.3-7.5 14.6-10.9 10.3-5.4 6.3-8.3 12.4-11.5-2-3.8-5-2.4-6.4-5.1-2.2-4.3-5.4-1.9-5.4-7.3-7.7 5-4.7 7.3-15.3 12.4-7.8 3.7-5 7.7-16.6 11.3-7.6 2.4-6.3 8.2-16.3 10.2" fill="#c94747"/><path d="m3.3 46.9c11.7-1.1 6.9-8.6 17.3-10.5 8.6-1.6 10-8.4 17.8-10.3 7.1-1.8 2.6-5.6 12.7-11.9 1.6 1.4 3.2 1.2 4.1 3.2-6.7 3.1-5.3 8.5-14.1 11.8-11.1 4.2-6.7 5.4-17.5 9.9-9 3.7-8.5 8.3-15.4 10.1-.1.1-3.5.1-4.9-2.3" fill="#ffa6af"/><path d="m13.7 50.8c9.4-1.7 7.7-8.2 13.3-9.3 10.3-2 10.3-7.1 17.1-10 8.9-3.8 8.5-8 13.4-11.6 0 0 2 .2 3.3 1.7-5.7 3.4-2.9 7.8-13.4 11.9-6.6 2.6-5.5 6.6-15.9 10.4-6.6 2.4-4.2 6.6-13.9 9.9-2.3-.4-3.9-3-3.9-3" fill="#fed0ac"/><g fill="#fff"><path d="m56.1 23c0 0-1.5 1.3-2.5 3.7-1.1 2.4-5.2 2.4-8.5 6.2 0 0 2.6-1.8 5.8-2.6 5.9-1.7 3-4.3 5.2-7.3"/><path d="m48.5 22.4c-1.4 1.4-3.4 3.1-10.3 5.2-4.4 1.3-7.1 4.2-8.7 6.3-.7.8-2.4 2.5-5.5 3.7 0 0 4.5-1.1 7-4.1 3-3.6 4.6-4.2 10.4-6 5.4-1.6 7.1-5.1 7.1-5.1"/><path d="m22.7 42.4c-4.5.9-5 4.9-10 6.6 0 0 3.6-.8 6.1-3.6 1.8-1.9 3.9-3 3.9-3"/></g><path d="m16 35.6c0 0-.9.5-1.8 1.1 3.1 9 8.1 9 12.7 15.8 1.1-.7 1.5-1.2 1.5-1.2 3.3-8.1-12.4-15.7-12.4-15.7" opacity=".7" fill="#3e4347"/><path d="m47.2 40c-11.9-8.1-7.3-11.7-14.7-18.6-10.2-9.5-5.9-11-12.8-19.4-2 6-4.7 2.2-8.7 6.3-2.5 2.5-5.4-.2-9 3.4 5.7 5.8.2 7.6 9.9 17.4 5.9 6 1.8 7.8 12.6 17.4 7.1 6.3 1.4 6.7 11 14.7 12 2.7 8.1-3 15.5-1.5 6.4 1.3 7.9.8 11.1-2.4-10.7-5.8-7.2-12-14.9-17.3" fill="#c94747"/><path d="m59.8 59.2c-12.9-5.4-4.8-12.1-15.8-18-9.1-4.9-8.3-13-16.3-17.9-7.4-4.6-.9-7.2-10.1-17.9-2.3 1-4 .3-5.7 2.2 6.5 5.9 3 11.4 11.7 18.4 11 8.7 5.7 8.5 16.2 17.4 8.8 7.4 6.6 12.4 13.7 16.9 0-.1 3.8 1 6.3-1.1" fill="#ffa6af"/><path d="m46.7 59.9c-10-5.3-5.7-12-11.7-15.2-10.9-6-9.1-11.7-15.7-17.4-8.6-7.5-6.7-12-11-17.8 0 0-2.4-.5-4.3.8 5.3 5.9.5 9.8 10.9 18.2 6.6 5.3 3.8 9.4 14.3 17.4 6.5 5 2.4 9 12.1 16.1 2.6.2 5.4-2.1 5.4-2.1" fill="#fed0ac"/><g fill="#fff"><path d="m8.8 13.4c0 0 1.3 2 1.5 5 .3 3.1 5 4.6 7.4 10 0 0-2.3-2.9-5.6-5-6.1-3.9-1.9-5.8-3.3-10"/><path d="m17.6 15.5c1.1 2.1 2.7 4.7 9.8 9.5 4.5 3 6.5 7.2 7.6 10.2.4 1.2 1.8 3.7 4.9 6.2 0 0-4.7-2.9-6.5-7.1-2.1-5.1-3.7-6.4-9.6-10.5-5.6-3.8-6.2-8.3-6.2-8.3"/><path d="m39.5 47.2c4.7 2.6 3.9 7.3 8.9 11 0 0-3.8-2.2-5.6-6.2-1.4-2.8-3.3-4.8-3.3-4.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f954.svg b/riot/emojione/svg/1f954.svg new file mode 100644 index 0000000..15d99ff --- /dev/null +++ b/riot/emojione/svg/1f954.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M38.7,2c-12.4,0-14.6,10.9-24,17C3.1,26.7,0,35.5,3.2,45.1c4.1,12.4,15.5,21,28.8,14.2 + c13.3-6.8,18.3-19.1,25.1-25.5C65.4,26,64.4,2,38.7,2z" fill="#bf906c"/><path d="m59.4 12.1c.7 4 .8 11.7-1.8 15.5-1.1 1.7-3 4.1-4.1 5.5 2.7-6.1 1.4-9.7 1.4-9.7-3.1 14.3-12 15.2-17.8 26.1 0 0 5.2-3.1 8.6-6.6 0 0-4.7 11.5-15.9 12.9-10.4 1.3-11 4.6-13.9 4.6 4.3 2.8 10.5 1.8 16-1 13.3-6.8 18.3-19.1 25.1-25.5 5.9-5.6 6.4-15.8 2.4-21.8" fill="#805f47"/><g fill="#cc9a72"><path d="m27.5 51.2c.3 1.4-1.5 2.9-3.9 3.4-2.4.4-4.6-.4-4.8-1.8-.3-1.4 2.1.6 4.5.1 2.4-.5 3.9-3.2 4.2-1.7"/><path d="m12.8 50.7c-1.1.8-3-.3-4.4-2.6-1.3-2.3-1.6-4.8-.5-5.6 1.1-.8.4 2.4 1.7 4.6 1.4 2.3 4.3 2.7 3.2 3.6"/><path d="m8.7 37.6c-1.3 0-2.3-2.2-2.3-4.9.1-2.7 1.2-4.9 2.5-4.9 1.3 0-.9 2.2-.9 4.9-.1 2.7 2 4.9.7 4.9"/><path d="m37.4 42.8c.2 1.5-1.7 3-4.2 3.3-2.5.3-4.7-.6-4.9-2.1-.2-1.5 2.2.7 4.7.4 2.5-.4 4.2-3.1 4.4-1.6"/><path d="m46.9 13.4c1.3.1 2.1 2.3 1.8 5-.3 2.7-1.6 4.8-2.9 4.8-1.3-.1 1.1-2.1 1.4-4.8.2-2.8-1.7-5.1-.3-5"/><path d="m28.6 10.8c-.6-.8.1-2.4 1.7-3.6 1.6-1.2 3.5-1.6 4.1-.8.6.8-1.7.5-3.3 1.7-1.6 1.3-1.9 3.5-2.5 2.7"/><path d="m18.4 21.8c-.6-1.3 1.1-3.1 3.7-4.1 2.7-1 5.3-.8 5.9.5.6 1.3-2.5 0-5.2 1-2.6.9-3.8 3.8-4.4 2.6"/><path d="m26.3 33.8c1.1 1.6-.1 4.6-2.8 6.9-2.7 2.2-5.8 2.7-6.9 1.2-1.1-1.6 2.9-.8 5.6-3 2.6-2.3 2.9-6.7 4.1-5.1"/><path d="m42.6 5.3c1.3 1.2.6 4.2-1.5 6.6-2.1 2.4-4.8 3.4-6.1 2.2-1.3-1.2 2.5-1.2 4.6-3.6 2.1-2.4 1.7-6.4 3-5.2"/><path d="m44.4 29.4c1 1.3 0 4-2.2 5.9-2.2 2-4.9 2.5-5.9 1.2-1-1.3 2.4-.8 4.7-2.8 2.2-1.9 2.4-5.6 3.4-4.3"/><path d="m22.3 27.6c.2 1.4-1.7 2.9-4.2 3.4-2.5.5-4.7-.2-4.9-1.6-.2-1.4 2.1.5 4.6 0 2.6-.6 4.3-3.2 4.5-1.8"/><path d="m55.4 12.6c1.3.6 1.6 3 .7 5.4-.9 2.4-2.6 3.9-3.9 3.3-1.3-.6 1.5-1.6 2.4-4 .9-2.4-.5-5.3.8-4.7"/><path d="m38.2 23c.3 1.5-1.9 3.4-4.8 4.4-3 .9-5.6.5-5.9-1-.3-1.5 2.6.2 5.6-.8 2.9-.9 4.8-4.1 5.1-2.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f955.svg b/riot/emojione/svg/1f955.svg new file mode 100644 index 0000000..468c7a2 --- /dev/null +++ b/riot/emojione/svg/1f955.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m40.1 30.1c-1.4-.8-6.1-5.6-6.9-6.9-1.8-3.1-4.9 1.3-5.7 2.6-.7 1.3-2.1 3.2-3.2 4.1-1.2.9-3.4 2.5-4.1 4.8-.7 2.2-3.5 4.4-4.3 5.5-.7 1.1-1.9 3.2-3.8 4.8-1.9 1.6-3.3 3.5-3.7 5.1-.4 1.6-2.6 2.1-2.9 3.7-.4 1.6-1.8 4.4-2.6 5.3-2.1 2.4-.3 4.3 2.1 2.1.9-.8 4.5-5.1 6.1-5.5s4.2-2.5 5.8-4.4c1.6-1.9 5.6-4.1 7.2-5.8 2.5-2.6 6.2-3 9.3-6.4 2.8-3.2 12.1-5.8 6.7-9" fill="#e88f27"/><g fill="#ffce31"><path d="m9.3 53.3c1.1.3-1.4-1.8-2-.6-.6 1.2-1.3 1.8-1.7 3-.4 1.2-2 2.8-2.5 4-.5 1.2-.3 2 .8.1 1.1-1.9 1.5-2.6 2.6-3.7 1.1-1 .8-3.4 2.8-2.8"/><path d="m11 51.8c.5-.5-1.1-.7-.6-1.5.7-1 2-1.7 3.4-4.6 0 0 1.9 1.5 2.4.9.6-.8-1.8-2.4-2.4-2.2-1.1.3-1.5 2.7-4.4 5.5-.9 1 .9 2.6 1.6 1.9"/><path d="m28 33c.6-.7-1.7-2.7-2.3-2.6-1.1.2-1.7 2.6-4.8 5.1-1.1.9.6 2.8 1.4 2.1.5-.5-1.1-.9-.5-1.6.7-.9 2.1-1.5 3.8-4.3 0 .1 1.9 1.8 2.4 1.3"/><path d="m20.4 39.6c-.2.5-1-.6-1.4-.1-.6.7-.7 1.8-2.6 3.5 0 0 1.9 1.1 1.5 1.6-.4.6-2.6-.8-2.6-1.2-.1-.9 1.7-1.7 3-4.4.5-1.1 2.5-.1 2.1.6"/><path d="m31.5 24.4c-.9 0-1.5 1.9-4.1 3.5-.9.6.4 2.5 1 2.1.4-.3-.8-1-.3-1.4.6-.6 1.8-.9 3.2-3 0 0 1.4 1.9 1.9 1.5.6-.6-1.2-2.7-1.7-2.7"/></g><path d="m62 14c-13.1.9-6.2-8.1-6.2-8.1s-5.1 2.7-6.4 1.6l.2-5.5c0 0-4.2 3.1-5.7 3l-5.1-1.8c0 0 .6 2.9.3 4.7l-3.8.2c9.5 7.9.3 5.5.3 5.5 8.2 5.7 2 11.7-.3 13.7-.9.8 1.3 2.7 1.7 2.1 2.1-2.9 8.2-11.5 13.6-1.6 0 0-.4-7.8 5.4-1.7-2.5-7.5 5.1-5.1 5.1-5.1l-3.7-2.7c.1 0 .9-2.5 4.6-4.3" fill="#699635"/><path d="m61.1 20.9c0 0-.4-3.7-3.8-4.9-1.5-.5 4.6-2 4.6-2-3.2-2.1-7.3-.6-6-2.6 2-3-.1-5.5-.1-5.5s-5.2 4.1-5 1.9c.3-3.7-1.2-5.8-1.2-5.8s-3.4 4.5-4.3 3.4c-2-2.4-6.5-2.1-6.5-2.1s4.2 4.6 1.2 4.5c-2.4-.1-4.7.3-4.7.3s7.1 4.9 4.9 4.7c-2.2-.3-4.6.8-4.6.8s6.2 1.9 4.3 8.2c-.5 1.6-2.4 4.2-4.8 6.2.4 1.3 1.3 1.4 1.3 1.4s3.7-4.5 5.1-5.5c6.6-4.9 9.2 3.9 9.2 3.9s1.7-2 1.9-5.3c.1-3 3.6 3.6 3.6 3.6s1.3-2.9.3-5.4c-1.4-2.7 4.6.2 4.6.2" fill="#83bf4f"/><g fill="#699635"><path d="m48.4 5.5c0 6.8-3.8 12.8-3.8 12.8 6.8-6.4 3.8-12.8 3.8-12.8"/><path d="m41.2 8.9c1.7 6 0 12.2 0 12.2 4.2-7.3 0-12.2 0-12.2"/><path d="M57,18.1C48,17,39.8,24,39.8,24C49.1,13.5,57,18.1,57,18.1z"/><path d="m47.2 16.8c0 0 5.1-3 10-2.7 0 0-4.3-2.9-10 2.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f956.svg b/riot/emojione/svg/1f956.svg new file mode 100644 index 0000000..dc1e86f --- /dev/null +++ b/riot/emojione/svg/1f956.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m28.8 54.5c-11.2.7-21.2 1-24.8-1.6-5.1-3.8.7-19.2 4.9-24.6l50.9-12.8c6.3 11.6-1.8 15.9-12.8 23.5-10 7-13.8 15.1-18.2 15.5" fill="#fbd399"/><path d="m30.9 44.5c-8.7 8.3-34.1 14.1-27.5-7.1 2.9-9.4 8.5-10.7 9.3-12.4 2.2-4.9 8.4-7.2 10.6-7.9 5.2-1.5 2.3-6 15.7-5.4 1.2.1 3.8-2.1 6.7-2.5 7.9-1.2 13 3.6 14.1 6.4 5.3 13.2-9.1 10.2-28.9 28.9" fill="#fbbf67"/><path d="m7.5 53.1c-8.6-1.1-3.8-19.4 2.4-23.8 6.2-4.5 14.9-1.9 19.5 5.7 4.6 7.7 4.7 17.8-2.8 18.6-6.3.6-12 .4-19.1-.5" fill="#fff3e3"/><path d="m14.4 25c4.4-.9 8.2-3.8 16.1.9 5.7 4.7 6.8 8.6 7 5.7.9-4-6.9-11.1-14.2-10.5-7.2-.7-13.9 6.4-8.9 3.9" fill="#d3976e"/><path d="m13.4 25.1c.2-.6 7.9-5.1 13.3-2.7 5.1 2.2 6.7 4.2 9.5 8.3.4.6.6 1.1.9 1.5.1 0 .1-.2 0-.8.5-3.1-4.9-9.8-11.4-10.3-6.2-1.3-13.6 3.5-12.3 4" fill="#89664c"/><path d="m26.9 16.5c3.4-.7 6.2-2.9 12.1.7 4.3 3.6 5.1 6.5 5.3 4.3.7-3-5.2-8.4-10.7-7.9-5.4-.6-10.5 4.7-6.7 2.9" fill="#d3976e"/><path d="m26.1 16.5c.1-.5 6-3.8 10-2 3.8 1.6 5.1 3.2 7.2 6.3.3.5.5.8.7 1.1 0 0 .1-.2 0-.6.4-2.4-3.7-7.4-8.6-7.7-4.7-1.1-10.3 2.6-9.3 2.9" fill="#89664c"/><path d="m41.2 11.7c2.5-.2 4.7-1.6 8.8 1.5 2.8 2.9 3.2 5.1 3.5 3.5.7-2.2-3.2-6.5-7.2-6.6-3.9-.7-8 2.7-5.1 1.6" fill="#d3976e"/><path d="m40.6 11.7c.1-.3 4.6-2.3 7.4-.7 2.7 1.5 3.4 2.7 4.7 5.1.2.4.3.7.4.9 0 0 .1-.1.1-.4.5-1.7-2.1-5.7-5.7-6.3-3.3-1.1-7.5 1.1-6.9 1.4" fill="#89664c"/><g fill="#ede0d1"><path d="M7.1 47.2 8.2 46 7.1 44.8 6 46z"/><path d="m12.2 32.1l1.1-1.1-1.1-1.2-1.1 1.2z"/><path d="m7.7 39.3l1.1-1.1-1.1-1.2-1.1 1.2z"/><path d="m10.5 40.5l1.1-1.2-1.1-1.1-1.1 1.1z"/><path d="m16.5 49.5l1.1-1.2-1.1-1.1-1.1 1.1z"/><path d="m19.6 47.2l1.1-1.2-1.1-1.2-1.1 1.2z"/><path d="m26.7 37.6l1.1-1.2-1.1-1.1-1.1 1.1z"/><path d="m21.3 33.8l1.1-1.2-1.1-1.1-1.1 1.1z"/><path d="m29.2 48.3l1.1-1.1-1.1-1.2-1.1 1.2z"/><path d="m28.1 45.6l1.1-1.2-1.1-1.1-1.1 1.1z"/><path d="m23.4 38.8l1.7-1.8-1.7-1.7-1.6 1.7z"/><path d="m19.3 51.8l1.7-1.7-1.7-1.8-1.7 1.8z"/><path d="m6 44l1.6-1.8-1.6-1.7-1.7 1.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f957.svg b/riot/emojione/svg/1f957.svg new file mode 100644 index 0000000..e0a2a01 --- /dev/null +++ b/riot/emojione/svg/1f957.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 33.2c0 13.2 13.4 28.8 30 28.8 16.6 0 30-15.6 30-28.8 0 0-60 0-60 0" fill="#b2c1c0"/><path d="m62 33.2c0 8.5-13.4 15.4-30 15.4-16.6 0-30-6.9-30-15.4 0-8.5 13.4-15.4 30-15.4 16.6 0 30 6.9 30 15.4" fill="#e8e8e8"/><path d="m32 46.6c-15.2 0-28.1-6.2-28.1-13.5 0-7.3 12.9-13.5 28.1-13.5 15.2 0 28.1 6.2 28.1 13.5 0 7.4-12.9 13.5-28.1 13.5" fill="#b2c1c0"/><path d="m12.5 16.4c.1 1.7.9 7.4.2 10 4.4.8 1.1-7.7-.2-10" fill="#699635"/><path d="m55.6 27.7c2-4.6-1.1-9.4-3.1-6.6-2 2.8-.5 4.6-5.6 3.6-1.1-1.9 1.6-7.7 0-8.8-2.6-1.7-2.6 4.7-5.6 1-3-3.6-3.1 4.9-7.6 4.9-2.2 0 .9-6.6-4.1-7.9-5-1.3-3.6 4.4-9.6 1.1-6-3.3-9.1 1.7-6.3 3.8 2.7 2.1.5 6.3.1 7.9-3.4-1.6-3.2 5.3-3.1 6.4-2.4.8-6.3 2.5-6.4 2.6 2.5 6 14.1 10.9 27.7 10.9 15.2 0 28.1-6.2 28.1-13.5 0-7.4-7.8 2.1-4.5-5.4" fill="#83bf4f"/><path d="m38.3 36c2.5-5.3-3.6-3.1-5.9-.8-.1-3.8 1.9-6.2 3.6-8.8-2.8 2-5.8 4.3-9.1 5.5 1.9 2.2 2.9 5.2 3.3 8.1 8 .8 6.2 4.6 5.8 6.5 9.5-.7-.1-5.3 2.3-10.5" fill="#699635"/><g fill="#ed4c5c"><path d="m17.3 22.8c-1.6 1.6-2.1 3.6-1.1 4.6.9 1 2.9.5 4.5-1.1 1.6-1.6 2.1-3.6 1.1-4.6-1-.9-3-.4-4.5 1.1"/><path d="m38.4 41.6c-1.6 1.6-2.1 3.6-1.1 4.6.9 1 2.9.5 4.5-1.1 1.6-1.6 2.1-3.6 1.1-4.6-.9-1-2.9-.5-4.5 1.1"/></g><path d="m26.1 20c-3.9.2-5.7 10.3-8.5 9.7 2.3 2.2 3.5 5.5 3.5 8.7.6.1 1.5-1.6 2 .2-.7-5.5-.5-11.5 3-18.6" fill="#699635"/><path d="m42.4 23.3c1 2 .9 4.1-.3 4.7-1.2.6-2.9-.4-4-2.4-1-2-.9-4.1.3-4.7 1.2-.6 3 .4 4 2.4" fill="#ed4c5c"/><path d="m50.1 25c-8.5-1-9.8-1.2-2.7 5.9 1.9 2.4-5.3 7.5-7.9 8 3.3 6.3 3.9 6.9 8.5 5.3 6.4-2.2 3.2-9.7 6.2-8.1-1.6-2.4-10.6-3.5-4.1-11.1" fill="#699635"/><path d="m55.3 30.1c-.2-1.1 2.2-3.6 1.7-7.1-.5-3.2-4.2-5.1-5.3-1.4-1 3.4-4.2 2.6-4.2 2.6 2.1-8.2 1-12.2-3.6-7.3-2.4 2.5-.2-8.5-7.8 3.2-3.9 6-2.3-13.7-9.3-6.5-5.6 5.7-9.9-5.4-13.6 1.3-1.9 3.5 2.2 4 1.1 10.8 0 0-4.2-2.6-3.8 6 .1 1.5-7.4 1.8-5.7 4.3 1.7-.7 12.4-5.8 11.8-1.1-.2 1.4-1.1 5.9 1.4 5.7 2.7-.2 5.2-4.4 5.3.4.1 3.7 1.9 3.9 4.5 1.6.7-.6 1.2-1.6 2.2-2 1.8-.7 3.5.3 5.2.9 3.2 1.2 2.3-3.3.1-4.1-.4-.1-2.9-.5-2.7-.9.4-1.2 1.8-2 2.8-2.5.9-.4 1.9-.7 2.9-.7 1.4.1.9 1 .6 2.1-.3 1.3-.1 3 1.3 3.4 1.6.5 2.9-1 4-1.9.8-.7 6.1-4.1 4.3-.5-1.1 2.1-6.4 2.8-4 5.9 1.6 2 3.8 1.1 5-.8 1-1.5 1.4-3.3 1.8-5.1.3-1.4.4-2.2 1.8-1.5 1.9 1 4.3 3.2 4.4-.4.1-2.4 1-6.8 3.1-2.6-1.3-5.5-5.1-.3-5.3-1.8m-13 6.8c-.1.1-2.6 1.9-3 .2-.3-1.3 1-2.8.2-3.9-1.4-1.9-5.1-.1-6.5.9-.8.6-2.8 2.5-1.3 3.4 1.1.7 2.8.3 3.8 1.3.8.8 1 2.3-.4 1.7-1.8-.7-3.6-1.6-5.6-.8-1.1.4-3.8 4.4-5.1 3.6-.7-.4-.4-3.2-.5-4-.3-2.3-1.9-1.9-3.4-1-.6.4-2.4 1.7-3.1 1.2-.7-.5-.3-2.7-.2-3.4.5-4.3-2.3-4.7-5.9-3.7 0-1.3-.1-6.5 2.3-5.6 1.4.5 5 4.9 6.3 2.4 1.4-2.7 7.6-14.6 7.6-5.7 0 2.4-2.1 7.5-.4 8.7 1.5 1 5.3-3.2 6.3-3.8 2.5-1.7 5.3-3.3 6.6.5.9 2.5 1.1 5.8 4.2 6.5-.8.5-1.4 1-1.9 1.5m4.8-4.2c-.3 1.8-2.4 2.2-3.8 1.4-2.9-1.7-1.3-7.6-4.9-8.5-4.3-1.1-9.9 6.4-10.7 5.6-1-1.1 1.1-5.7.8-8.7-.9-7.7-6.9-.2-9.3 6-.5 1.2-4.2-2-4.2-2 1.9-8.2-2.6-8.1-1.2-10.7 2.9-5.8 7.2 5.4 13.1-.7 6.4-6.5 4 14.6 10 5.7 5.5-8.1 4.6-1.4 5.8-1.8 2.1-.7 5.7-7.6 3.8 5.1-11.9-2.2 1.2 5.1.6 8.6m8.8 3.1c-1.5-.3-3.1-2.9-4.9-2-1.5.7-1.6 4.7-2.2 6.1-.7 1.7-3 3.8-4.4 1.3-.3-.6 4-3.3 4.5-4.5 1-2.3-1.1-2.5-.9-4 .7-4.6-10.3-9.2-.4-7.5 5.6 1 4.3-5.9 6.9-4.4 5 3-3.7 10.5 1.9 10.6-.4 1.5-.2 3-.5 4.4" fill="#c7e755"/><path d="m8.6 34.6c1.6 1.5 2.1 3.6 1.1 4.6-.9 1-2.9.5-4.5-1.1-1.6-1.6-2.1-3.6-1.1-4.6 1-.9 3-.4 4.5 1.1" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f958.svg b/riot/emojione/svg/1f958.svg new file mode 100644 index 0000000..2062eae --- /dev/null +++ b/riot/emojione/svg/1f958.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><circle cx="32" cy="32" r="30"/><path d="m6.3 18l-2.7-2.7c-2.1-2.1-2.1-5.5 0-7.5l4.2-4.2c2.1-2.1 5.5-2.1 7.5 0l2.7 2.7-3.1 3.1-2.7-2.7c-.3-.3-.9-.3-1.3 0l-4.2 4.2c-.3.3-.3.9 0 1.3l2.7 2.7-3.1 3.1"/><path d="m57.7 46l2.7 2.7c2.1 2.1 2.1 5.5 0 7.5l-4.2 4.2c-2.1 2.1-5.5 2.1-7.5 0l-2.7-2.7 3.1-3.1 2.7 2.7c.3.3.9.3 1.3 0l4.2-4.2c.3-.3.3-.9 0-1.3l-2.7-2.7 3.1-3.1"/></g><circle cx="32" cy="32" r="23.4" fill="#f2b200"/><path d="m39.6 11.4c-5-2.6-12.9 2.4-12 6.6.9 4.2 11.2 7.2 14 13.1 2.8 5.9 4.1 7.8 9.1 3.8 4.9-4.1 7.2-13.8-11.1-23.5" fill="#b47d56"/><g fill="#89664c"><path d="m38.8 13.8c3.4 0-2.1 1.9-5.3 4.7-1.6 1.4-.9-4.7 5.3-4.7"/><path d="m46.1 18.7c3.4 0-2.1 1.9-5.4 4.7-1.5 1.3-.8-4.7 5.4-4.7"/><path d="m50.6 26.2c3.4 0-2.1 1.9-5.4 4.7-1.5 1.3-.7-4.7 5.4-4.7"/></g><path d="m10.7 38c-1.9-4.8 4.4-10.7 8.5-9.2 4.2 1.5 5.7 10.9 11.2 14.4 5.5 3.4 7.3 4.9 2.5 8.5-4.9 3.6-15.1 3.8-22.2-13.7" fill="#b47d56"/><g fill="#89664c"><path d="m13.4 39.3c-.5 2.9 2.2-1.5 5.6-3.8 1.6-1.1-4.7-1.5-5.6 3.8"/><path d="m16.8 45.4c-.5 2.9 2.2-1.5 5.6-3.8 1.6-1.1-4.7-1.5-5.6 3.8"/><path d="m22.8 49.9c-.5 2.9 2.2-1.5 5.6-3.8 1.6-1.1-4.6-1.6-5.6 3.8"/></g><g fill="#699635"><path d="m25.6 13c-2.2-2.1-2.2-2.1-8.6 4.6-3.5 3.7-5.3 7.6-4.1 8.7 2.2 2.1 2.2 2.1 8.5-4.6 3.6-3.6 5.4-7.5 4.2-8.7"/><path d="m51.5 40.2c-1.8-2.4-1.8-2.4-9.1 2.8-4.1 2.9-6.5 6.3-5.6 7.6 1.8 2.4 1.8 2.4 9.1-2.8 4.1-2.9 6.6-6.3 5.6-7.6"/><path d="m38.6 33.2c1.3-3 1.3-3-7.5-7.1-4.9-2.3-9.4-2.8-10.1-1.2-1.3 3-1.3 3 7.5 7.1 4.8 2.3 9.3 2.8 10.1 1.2"/></g><path d="m43.5 37.8c.2-2.2-1.6-1.1-4.9-1.2-3.3-.2-2.4 2.4-2.2 4.5.1 2.1 1.4.4 6.2.5 1.8.1.6-1.6.9-3.8" fill="#ed4c5c"/><path d="m29.9 34.1c-2.5-.9-1.7.8-3 3.2-1.3 2.4 2.1 2.5 4.6 3.1 2.5.6.9-.9 2.6-4.4.7-1.3-1.7-1-4.2-1.9" fill="#ffce31"/><path d="m24.5 18.9c-2.5-.9-1.7.8-3 3.2-1.3 2.4 2.1 2.5 4.6 3.1 2.5.6.9-.9 2.6-4.4.7-1.3-1.7-1-4.2-1.9" fill="#ed4c5c"/><path d="m14 26.2c-2.5-.9-1.7.8-3 3.2-1.3 2.4 2.1 2.5 4.6 3.1 2.5.6.9-.9 2.6-4.4.7-1.4-1.7-1.1-4.2-1.9" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f959.svg b/riot/emojione/svg/1f959.svg new file mode 100644 index 0000000..8be63ab --- /dev/null +++ b/riot/emojione/svg/1f959.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m2.3 42c2.2 4.6 7 9.6 16.5 11 9.4 1.4 19.8 4.5 27.6 2.3 7.8-2.1 14.8-6.3 15.6-10.2.8-3.8-25.8-28.5-30.7-35.3-5-6.8-10.4 7.4-14.5 11.5-4.1 4-17 15.4-14.5 20.7"/><path d="m55.8 39.1c-1.9-2.2-5.8-8.3-7.7-9.4s-8.3-7.8-8.3-7.8c-4.6-6.2-7-8.1-9.4-10.7-2.2-2.4-2.4-1.8-3.9-.6-1.6 1.2-5.3 6.7-6.7 9.5-1.4 2.8-3.8 4.3-5.6 6-5.5 5-9.8 12-9.8 12s-3.6 5.7 1.7 1.8c5.3-3.8 17-22.7 19.4-22.7 3.1 0 6.1 6 8.6 10.3 2.6 4.3 6.5 6.2 9.5 10.7 3 4.4 6.2 14.1 8.9 13.1s7.5-4.2 8-6.2c.4-2.1-2.9-3.8-4.7-6"/></g><path d="m55.8 39.1c-1.9-2.2-5.8-8.3-7.7-9.4s-8.3-7.8-8.3-7.8c-4.6-6.2-7-8.1-9.4-10.7-2.2-2.4-2.4-1.8-3.9-.6-1.6 1.2-5.3 6.7-6.7 9.5-1.4 2.8-3.8 4.3-5.6 6-5.5 5-9.8 12-9.8 12s-3.6 5.7 1.7 1.8c5.3-3.8 17-22.7 19.4-22.7 3.1 0 6.1 6 8.6 10.3 2.6 4.3 6.5 6.2 9.5 10.7 3 4.4 6.2 14.1 8.9 13.1s7.5-4.2 8-6.2c.4-2.1-2.9-3.8-4.7-6" opacity=".67" fill="#fff"/><path d="m13.7 27.8c-.9-.4-4.6-1.8-5.2-.9s.4 3.5-1.9 3.2c-2.2-.2-1.8 1.1-2.5 1.9s-1.1 2-.9 2.4 1.1 5.3 2.1 4.4c1-.9 9.7-10.5 8.4-11" fill="#d3976e"/><path d="m12.8 28.8c0 0-2.1-4.2-1.2-5.2s2.3.5 2.9-1.1-.2-4.2 1.9-3.8c2.1.5 2.1-2 3-2.1s4.3-.1 3.4.8c-.9.9-5 5.1-6.2 7.1s-3.1 5.8-3.8 4.3" fill="#83bf4f"/><path d="m38.2 26.2c0 0 5.1-5.6 10.1-1.6 4.7 3.8 3.7 9.6 1.4 14.3l-11.5-12.7" fill="#c94747"/><path d="m49.7 37.7c1.5-4.2 1.6-8.9-2.4-12.1-3-2.4-6-1.4-7.9-.2l10.3 12.3" fill="#ed4c5c"/><path d="m35.3 20.2c1.9 0 4.2-4.8 4.6-1.9s3.4.9 3.6 2.9-.6 3.8.8 3.9c1.4.2 1.1-.7 1.1 6.8 0 0 .5 2.1-1.1 1.5s-12.5-13.2-9-13.2" fill="#83bf4f"/><g fill="#d3976e"><path d="m43.8 31c1.3-.2 2.9-1.9 4.3 0s.4 4.5 2.8 4.8 3 2.2 3 4 2 1.8 2.7 2.4-.8 3.1-1.3 3.8-1.2 2.2-2 1.1-1.9-6.6-5.6-9.2-7.1-6.3-3.9-6.9"/><path d="m27.3 14.1c0 0 4.1-4.1 6.7-4.6s1.8 1.8 2.3 2.8c.9 1.8.9 1.4 1.9 2.5s-.6 5.6-.7 7.5-.4 3.7-1.5 2.5c-1.1-1.2-1.9-5.7-4.2-6.7-2.3-.9-6.1-2.5-4.5-4"/><path d="m47.2 53c-.3.2-5.6-7-11.9-16-6.3-9-11.2-16.5-10.9-16.7.3-.2 5.6 6.9 11.9 16 6.2 9 11.1 16.5 10.9 16.7"/><path d="m9.9 48.8c.2.3 5.2-4.9 11.2-11.5 6-6.6 10.7-12.1 10.5-12.4-.2-.3-5.2 4.9-11.2 11.5-6.1 6.6-10.8 12.2-10.5 12.4"/><path d="m18.2 48c.2.3 4-3.3 8.5-8.1 4.5-4.8 8-8.9 7.8-9.1-.2-.3-4 3.3-8.5 8.1-4.4 4.7-8 8.8-7.8 9.1"/><path d="m41.5 54c-.3.2-3.7-4.2-7.6-9.8-3.9-5.6-6.9-10.4-6.6-10.6.3-.2 3.6 4.2 7.6 9.8 3.9 5.6 6.9 10.4 6.6 10.6"/><path d="m39.6 36c.2.2-2.4 3.6-5.9 7.5-3.5 3.9-6.5 6.9-6.7 6.7-.2-.2 2.4-3.6 5.9-7.5 3.4-3.9 6.4-6.9 6.7-6.7"/><path d="m26.5 52c-.3.2-2.9-3.1-5.9-7.5-3-4.3-5.2-8-5-8.2.3-.2 2.9 3.1 5.9 7.5 3.1 4.3 5.3 8 5 8.2"/><path d="m19 51c-.3.2-2.4-2.4-4.7-5.7-2.4-3.4-4-6.3-3.8-6.5.3-.2 2.4 2.4 4.7 5.7 2.4 3.4 4.1 6.3 3.8 6.5"/><path d="m25.3 23.3c.2.2-1.8 2.9-4.5 6-2.7 3.1-5.1 5.3-5.3 5.1-.2-.2 1.8-2.9 4.5-6 2.7-3 5.1-5.3 5.3-5.1"/><path d="m44.1 41.3c.2.2-1.8 2.9-4.5 6-2.7 3.1-5.1 5.3-5.3 5.1-.2-.2 1.8-2.9 4.5-6 2.6-3 5-5.3 5.3-5.1"/><path d="m34 53c-.3.2-4.2-4.9-8.7-11.5-4.6-6.6-8.1-12-7.8-12.2.3-.2 4.2 4.9 8.7 11.5 4.6 6.5 8.1 12 7.8 12.2"/></g><g fill="#89664c"><path d="m12 28.6c.7-.9-2.4.2-2.6 1.9-.2 1.6-3.1 3.5-3.4 4.6-.3 1-1.3 1.6-1.2 2.4.2.8 5.3-6.2 7.2-8.9"/><path d="m28.3 14.8c.2.9 2.2 1.6 3.7 2.2 1.5.6 3.2 4.3 3.8 5.8.6 1.5 1.2 1.5.8.5s-1.4-6.3-3.9-7.3c-2.9-1.2-4.7-2.4-4.4-1.2"/><path d="m44.9 32.4c-.8-.8-1.4.1-.8.9.6.8 2.6 2.5 3.9 3.5s3.1 2 4.4 5.7 2.1 4.3 2.4 3.1-1.4-1.9-2.2-4.6-3.9-4.5-4.8-5.6-2.1-2.2-2.9-3"/><path d="m36.7 20.3c-.4-1.6-1.4-5.1-4.7-6s-1.7-1.6.2-1.3 4 2.3 4.8 5.6c.6 2.5 0 2.7-.3 1.7" opacity=".67"/><path d="m34.3 11.5c-1.1-.5-2.1-.2-1.6.6.6.8 2.7.2 4 3.1s.8-2.3-2.4-3.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f95a.svg b/riot/emojione/svg/1f95a.svg new file mode 100644 index 0000000..005e3e6 --- /dev/null +++ b/riot/emojione/svg/1f95a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M53.6,29.8C51.1,11.8,39.7,2,32,2s-19.1,9.8-21.6,27.8C8,47.8,15.9,62,32,62S56,47.8,53.6,29.8z" fill="#ffc294"/><path d="m53.6 29.8c-2-14.2-9.5-23.3-16.4-26.5 4.7 4.7 8.9 12.1 10.2 22.1 2.5 18-5.4 32.2-21.6 32.2-3.5 0-6.6-.7-9.2-1.9 3.7 4 8.9 6.3 15.4 6.3 16.1 0 24-14.2 21.6-32.2" opacity=".33" fill="#d3976e"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f95b.svg b/riot/emojione/svg/1f95b.svg new file mode 100644 index 0000000..877c052 --- /dev/null +++ b/riot/emojione/svg/1f95b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-9.9 0-18 3.8-18 8.4 0 0 0 28 7.7 43.7.7 4.5 5 7.9 10.3 7.9 5.2 0 9.5-3.4 10.3-7.9 7.7-15.7 7.7-43.7 7.7-43.7 0-4.6-8.1-8.4-18-8.4" opacity=".8" fill="#a1b8c7"/><g fill="#555e63"><path d="m32 58.3c-4.3 0-8.1-1.7-10.3-4.2.7 4.5 5 7.9 10.3 7.9 5.2 0 9.5-3.4 10.3-7.9-2.2 2.5-6 4.2-10.3 4.2" opacity=".3"/><path d="m32 59c-3.4 0-6.4-.9-8.1-2.3.6 2.4 4 4.3 8.1 4.3 4.1 0 7.5-1.9 8.1-4.3-1.7 1.4-4.7 2.3-8.1 2.3" opacity=".3"/></g><path d="m32 14.2c-8.6 0-15 2.9-15 7.2 0 0 .8 18.5 6.1 31 1.9 2.3 5.2 3.8 8.9 3.8s7-1.5 8.9-3.8c5.3-12.5 6.1-31 6.1-31 0-4.3-6.4-7.2-15-7.2" fill="#fff"/><g fill="#f2ece3"><path d="m32 14.2c-9.2 0-15 3-15 7.3 0 4.3 6.3 8 15 8s15-3.7 15-8c0-4.3-5.8-7.3-15-7.3"/><path d="m37.8 30.1c-1.2 0-2.2-.6-2.3-1.4 0-.5.2-.9.7-1.3.4-.3 1-.5 1.6-.5.1 0 .2 0 .3 0 1.2 0 2.2.6 2.3 1.4 0 .5-.2.9-.7 1.3-.4.3-1 .5-1.6.5-.1-.1-.2 0-.3 0"/><path d="m41.6 29.3c-.5 0-1-.2-1.2-.6-.2-.3-.2-.7 0-1.1.2-.3.5-.6.8-.8.3-.2.7-.2 1-.2.5 0 1 .2 1.2.6.4.6 0 1.5-.8 1.9-.4.1-.7.2-1 .2"/><path d="m33.5 30.5c-.9 0-1.5-.5-1.6-1.1 0-.4.1-.7.5-1 .3-.2.7-.4 1.1-.4.1 0 .2 0 .2 0 .9 0 1.5.5 1.6 1.1.1.7-.6 1.3-1.5 1.4-.1 0-.2 0-.3 0"/><path d="m30.2 30.8c-.4 0-.7-.1-.9-.4-.2-.2-.3-.6-.2-.9.1-.3.2-.6.5-.7.3-.2.6-.3.9-.3.4 0 .7.1.9.4.4.5.3 1.2-.3 1.6-.3.2-.6.3-.9.3"/></g><path d="m44.7 25.6c-.3-.3-.9-.3-1.3 0-.2.2-.3.4-.4.6-.2-.1-.5-.2-.8-.2-.4 0-.9.1-1.3.3-.3.2-.5.4-.7.6-.5-.4-1.2-.7-2.1-.7-.1 0-.2 0-.4 0-.7.1-1.4.3-1.9.6-.4.3-.6.6-.7.9-.4-.3-.9-.4-1.4-.4-.1 0-.2 0-.3 0-.5.1-1 .3-1.4.6-.2.1-.3.3-.4.5-.3-.3-.7-.5-1.2-.5-.4 0-.9.1-1.2.4-.2.1-.3.3-.4.4 0-.1-.1-.1-.1-.2-.3-.3-.9-.3-1.3 0-.1.1-.1.1-.2.2 0-.1-.1-.2-.1-.3-.3-.3-.8-.3-1.2 0-.4.3-.5.8-.2 1.1.3.3.8.3 1.2 0 .1 0 .1-.1.1-.1s.1.3.1.4c.3.3.9.3 1.3 0 0 .4.1.7.4 1 .3.4.8.6 1.3.6.4 0 .9-.1 1.2-.4.2-.1.4-.3.5-.5.4.4 1 .6 1.7.6.1 0 .2 0 .3 0 .8-.1 1.5-.5 1.8-1.1.5.4 1.3.7 2.1.7.1 0 .2 0 .4 0 .7-.1 1.4-.3 1.9-.6.2-.1.3-.3.4-.4.3.2.7.3 1.1.3.4 0 .9-.1 1.3-.3 1.1-.5 1.5-1.6 1.1-2.4.2 0 .4-.1.5-.2.5-.6.6-1.1.3-1.5m-14 4.5c-.2.1-.3.2-.5.2-.2 0-.3-.1-.5-.2-.2-.2-.1-.6.2-.9.2-.1.3-.2.5-.2.2 0 .3.1.5.2.2.3.1.7-.2.9m3-.1c-.1 0-.1 0-.2 0-.5 0-1-.3-1-.6-.1-.4.4-.8 1-.9.1 0 .1 0 .2 0 .5 0 1 .3 1 .6.1.4-.4.8-1 .9m4.4-.5c-.1 0-.2 0-.3 0-.9 0-1.7-.4-1.7-1-.1-.6.7-1.2 1.8-1.3.1 0 .2 0 .3 0 .9 0 1.7.4 1.7 1 0 .7-.8 1.2-1.8 1.3m4.2-.9c-.2.1-.5.2-.7.2-.3 0-.6-.1-.7-.3-.2-.4.1-.9.6-1.2.2-.1.5-.2.7-.2.3 0 .6.1.7.3.2.3-.1.9-.6 1.2" fill="#fff"/><path d="m32 2c-9.9 0-18 3.8-18 8.4 0 4.6 8.1 8.4 18 8.4 9.9 0 18-3.8 18-8.4 0-4.6-8.1-8.4-18-8.4m0 14.6c-9.1 0-16.5-3-16.5-6.7 0-3.7 7.4-7.2 16.5-7.2 9.1 0 16.5 3.5 16.5 7.2 0 3.7-7.4 6.7-16.5 6.7" opacity=".3" fill="#555e63"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f95c.svg b/riot/emojione/svg/1f95c.svg new file mode 100644 index 0000000..3866204 --- /dev/null +++ b/riot/emojione/svg/1f95c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m42.6 40.2c4-4.6 8.5-4.5 13.6-9.6 6.6-6.6 7.7-16.3 3-22.7-.1-1.6-.4-3.9-1-4.8-.3-.4-1.3-1.2-1.8-1.1-.6.1-1.4.9-2 1.7-6.4-3.3-15-1.9-20.9 4.1-5.1 5.1-4.5 10.1-9.1 14.1-5.6 4.9-11.3 2.1-16.8 7.6-7.3 7.3-7.1 19.2.4 26.7 7.5 7.5 19.5 7.6 26.8.4 5.3-5.5 2.8-10.7 7.8-16.4" fill="#ffc294"/><path d="m56.3 2.5c-.6 0-1.7 1.6-1.7 1.6l3.1 2.6c0 0 .3-1.6-.1-2.7-.3-1-1.1-1.5-1.3-1.5" fill="#dba780"/><g fill="#e8b188"><path d="m42 3.9c-.2.2 1.6 1.2 2.3 1.2 1.2.1 4.8-1.5 4.5-1.8-.8-.7-5.4-.8-6.8.6"/><path d="m39.2 5.1c.8-.1 3 .6 3.1 1.1.1.4-3.6 4.1-4.4 4.4-.8.3-3.6-1.5-3.5-1.9.2-.7 3.3-3.4 4.8-3.6"/></g><g fill="#dba780"><path d="m32.3 10.4c.5-.3 3.9 1.1 3.9 1.7 0 .5-3.6 4.8-4.2 4.8-.7 0-2-.7-2.2-1.4-.2-.4 1.9-4.7 2.5-5.1"/><path d="m28.9 17.4c-.5.2-2.5 3.5-2.6 3.9-.1.7 1.3 1.7 2 1.6.4 0 3.2-3.3 3.3-3.9.1-.6-2-1.9-2.7-1.6"/></g><g fill="#e8b188"><path d="m22.4 27.6c.6 0 3.5-2.4 3.8-2.7.4-.6-.5-1.9-1.2-2-.4-.1-4.1 2.1-4.4 2.5-.4.4 1.1 2.2 1.8 2.2"/><path d="m14.4 31c.7.1 4.7-2.1 5-2.5.6-.6-.2-2.4-1-2.7-.4-.2-5.3 1.6-5.7 2-.6.6.7 3 1.7 3.2"/></g><path d="m8.5 36c.7-.1 3.9-3.4 4-3.9.3-.8-1.5-2.9-2.4-3-.4-.1-3.8 3.6-4.1 4.2-.3.6 1.5 2.8 2.5 2.7" fill="#dba780"/><g fill="#cf9d78"><path d="m7.1 38.6c.2-.6-1.5-2.7-2.2-3-.4-.1-1.7 4.6-1.6 5.4 0 .6 1.2 1.9 2 2 .6 0 1.7-4.1 1.8-4.4"/><path d="m5 45.1c.1-.5-1.2-1.8-1.8-2-.4-.1.4 6 1 6 .5 0 .7-3.7.8-4"/><path d="m8.2 49.7c.1-.5-1.3-3-2-3-.8 0-1.1 4.4-.1 5.4.8.9 2-2.1 2.1-2.4"/><path d="m8.4 40.1c-1-.1-2.1 4-1.9 4.5.1.3 2.2 3.2 2.5 3.3.6.1 2.7-3.3 2.6-3.8-.2-.8-2.5-3.9-3.2-4"/></g><g fill="#e8b188"><path d="m23.2 33c.1-1-2.3-3.8-2.7-3.6-.3.1-5 2.8-5.1 3.2-.1.6 2.5 3.9 3 3.8.8-.2 4.7-2.7 4.8-3.4"/><path d="m29.8 28.3c.1-1-2-2.7-2.4-2.4-.4.1-4.5 2.8-4.6 3.1-.1.6 1.8 3.3 2.3 3.2.9-.2 4.6-3.1 4.7-3.9"/></g><g fill="#dba780"><path d="m35.9 22.6c.1-1-2.7-3-3.2-2.7-.3.1-3.5 3.9-3.6 4.2-.1.6 1.8 3 2.3 2.9.9-.2 4.5-3.6 4.5-4.4"/><path d="m41.1 16c.1-1-3.2-3.1-3.7-2.9-.3.1-3.6 4.6-3.7 4.9-.1.6 2.6 2.9 3.1 2.8.9-.1 4.3-4 4.3-4.8"/></g><g fill="#e8b188"><path d="m47.5 10c.1-1-3.1-3.1-3.6-2.8-.3.1-4.4 4-4.5 4.3-.1.6 2.8 3 3.4 2.9.8-.2 4.6-3.7 4.7-4.4"/><path d="m53.5 5.2c.1-1-2.4-1.7-2.8-1.5-.3.1-4.5 2.1-4.5 2.4-.1.6 2.5 2.9 3 2.8.7-.1 4.2-2.9 4.3-3.7"/></g><g fill="#dba780"><path d="m13.8 33.5c-1-.1-4.4 3.6-4.4 4.5 0 .7 2.4 3.8 3.3 3.9.6.1 4.1-3.3 4.1-4.4-.1-.9-2.3-4-3-4"/><path d="m60.2 22.1c-.2.2-1.2-1.6-1.2-2.3-.1-1.2 1.5-4.8 1.8-4.5.7.8.8 5.4-.6 6.8"/><path d="m59 24.8c.1-.8-.6-3-1.1-3.1-.5-.1-4.1 3.6-4.4 4.4-.3.8 1.5 3.6 1.9 3.5.7-.1 3.4-3.3 3.6-4.8"/></g><g fill="#cf9d78"><path d="m53.7 31.8c.3-.5-1.1-3.8-1.7-3.9-.5 0-4.9 3.6-4.8 4.2 0 .7.7 2 1.4 2.2.4.1 4.7-2 5.1-2.5"/><path d="m46.7 35.2c-.2.5-3.5 2.5-3.9 2.6-.7.1-1.7-1.3-1.6-2 0-.4 3.3-3.2 3.9-3.3.5-.2 1.9 1.9 1.6 2.7"/></g><g fill="#dba780"><path d="m36.5 41.6c0-.6 2.4-3.5 2.7-3.7.6-.4 1.9.5 2 1.2.1.4-2.1 4.1-2.5 4.4-.4.3-2.3-1.1-2.2-1.9"/><path d="m33.1 49.6c-.1-.7 2.1-4.7 2.5-5 .6-.6 2.4.2 2.7 1 .2.4-1.6 5.3-2.1 5.7-.5.6-3-.7-3.1-1.7"/></g><g fill="#cf9d78"><path d="m28.1 55.5c.1-.7 3.4-3.9 3.9-4 .8-.3 2.9 1.5 3 2.4.1.5-3.6 3.9-4.2 4.2-.7.2-2.8-1.7-2.7-2.6"/><path d="m25.5 56.8c.7-.2 2.7 1.5 3 2.2.1.4-4.6 1.6-5.4 1.6-.6 0-2-1.2-2-2-.1-.5 4-1.7 4.4-1.8"/><path d="m18.9 59c.5-.1 1.8 1.2 2 1.8.1.4-6-.4-6-1 0-.5 3.7-.7 4-.8"/><path d="m14.3 55.8c.5-.1 3 1.3 3 2 0 .8-4.4 1.1-5.4.1-.9-.9 2.1-2 2.4-2.1"/><path d="m23.9 55.6c.1 1-4.1 2.1-4.5 1.9-.3-.1-3.2-2.2-3.3-2.5-.1-.6 3.3-2.7 3.8-2.6.9.2 4 2.4 4 3.2"/></g><g fill="#dba780"><path d="m31.1 40.8c1-.1 3.8 2.3 3.6 2.7-.1.3-2.9 5-3.2 5.1-.6.1-3.9-2.5-3.8-3 .1-.8 2.6-4.7 3.4-4.8"/><path d="m35.7 34.3c1-.1 2.7 2 2.4 2.4-.1.3-2.7 4.4-3.1 4.5-.6.1-3.3-1.8-3.2-2.3.2-.9 3.2-4.6 3.9-4.6"/></g><g fill="#cf9d78"><path d="m41.4 28.1c1-.1 3 2.7 2.8 3.2-.1.3-3.9 3.5-4.2 3.6-.6.1-3-1.8-2.9-2.3.2-.9 3.6-4.4 4.3-4.5"/><path d="m48 22.9c1-.1 3.1 3.2 2.9 3.7-.1.3-4.6 3.6-4.9 3.7-.6.1-2.9-2.6-2.8-3.1.2-.9 4.1-4.2 4.8-4.3"/></g><g fill="#dba780"><path d="m54.1 16.6c1-.1 3.1 3.1 2.8 3.6-.1.3-4 4.4-4.3 4.5-.6.1-3-2.8-2.9-3.4.2-.8 3.7-4.7 4.4-4.7"/><path d="m58.9 10.6c1-.1 1.7 2.4 1.5 2.8-.1.3-2.1 4.5-2.4 4.5-.6.1-2.9-2.5-2.8-3 .1-.8 3-4.2 3.7-4.3"/></g><g fill="#cf9d78"><path d="m30.6 50.2c.1 1-3.6 4.4-4.5 4.4-.7 0-3.8-2.4-3.9-3.3-.1-.6 3.3-4.1 4.4-4 .8 0 3.9 2.2 4 2.9"/><path d="m9.4 51c-1-.1-2 2.7-1.8 3.2.1.3 1.9 2.2 2.2 2.2.6.1 3.1-1.4 3-2-.1-.9-2.6-3.4-3.4-3.4"/><path d="m13.3 45.9c-1.3-.1-3.3 3.2-3 3.8.2.4 3.5 3.8 3.9 3.9.9.2 3.7-2.1 3.6-3.2-.1-1.1-3.5-4.4-4.5-4.5"/></g><g fill="#e8b188"><path d="m25.3 43.6c1.5 0 3.9-3.8 3.6-4.5-.2-.5-3.8-4.2-4.3-4.3-1-.2-4.4 2.5-4.3 3.8 0 1.3 3.8 5 5 5"/><path d="m30.3 37.1c1.2-.2 3.9-3.8 3.7-4.4-.1-.4-2.6-3-3-3-.8 0-4.1 2.8-4.2 3.9-.1 1.1 2.5 3.6 3.5 3.5"/></g><g fill="#dba780"><path d="m36 31.4c1.4-.3 4.4-4.4 4.3-5-.1-.4-2.6-3-3-3-.9.1-4.6 3.3-4.8 4.5-.2 1.2 2.4 3.7 3.5 3.5"/><path d="m42.6 17.4c-1.4.3-4.4 4.4-4.3 5 .1.4 2.8 3.3 3.3 3.3.9 0 4.7-3.2 4.8-4.5.1-1.2-2.8-4-3.8-3.8"/></g><g fill="#e8b188"><path d="m48.9 11.1c-1.5.2-5.2 4-5 4.6.1.4 3.7 4.2 4.2 4.2.9 0 4.5-3.9 4.5-5.1.1-1.2-2.6-3.8-3.7-3.7"/><path d="m54.8 6.4c-1.2.3-4.4 3.5-4.3 4 .1.3 2.6 3 3 3 .7-.1 3.8-3.4 4-4.4.1-.9-1.9-2.8-2.7-2.6"/></g><path d="m18.5 39.9c-1.5-.1-4.1 3.2-4 4 .1.9 4.5 5.5 5.5 5.5 1 0 4-2.8 3.9-4.2-.2-1.4-4.2-5.3-5.4-5.3" fill="#dba780"/><g opacity=".2" fill="#3e4347"><path d="m42.6 3.5c-.2.1-.4.3-.6.4-.2.2 1.6 1.2 2.3 1.2 1.2.1 4.8-1.5 4.5-1.8-.2-.1-.4-.2-.8-.3-1.1.5-2.9 1.2-3.7 1.2-.4 0-1.2-.4-1.7-.7"/><path d="m37.9 9.6c-.6.2-2.4-.8-3.2-1.4-.2.2-.3.4-.3.5-.1.4 2.7 2.2 3.5 1.9.8-.3 4.5-4 4.4-4.4 0-.1-.1-.2-.4-.4-.9 1.2-3.3 3.6-4 3.8"/><path d="m32 16.1c-.6 0-1.7-.5-2.1-1.1-.1.3-.2.6-.1.7.2.6 1.5 1.3 2.2 1.3.6 0 4.2-4.3 4.2-4.8 0-.1-.1-.2-.3-.4-.9 1.3-3.4 4.3-3.9 4.3"/><path d="m28.3 22c-.5.1-1.4-.5-1.8-1.1-.1.2-.1.3-.1.3-.1.7 1.3 1.7 2 1.6.4 0 3.2-3.3 3.3-3.9 0-.1-.1-.3-.2-.5-.9 1.1-2.9 3.5-3.2 3.6"/><path d="m20.6 25.3c-.3.5 1.1 2.3 1.9 2.3.6 0 3.5-2.4 3.8-2.7.1-.2.1-.6-.1-.9-.3.4-3.2 2.7-3.7 2.7-.5 0-1.3-.8-1.7-1.5-.2 0-.2.1-.2.1"/><path d="m14.3 30.1c-.6-.1-1.4-1.2-1.7-2.1-.4.6.9 2.9 1.8 3 .7.1 4.7-2.1 5-2.5.2-.3.2-.7.1-1.1 0 .1-.1.2-.1.2-.4.4-4.4 2.5-5.1 2.5"/><path d="m8.5 36c.7-.1 3.9-3.4 4-3.9.1-.2 0-.5-.1-.8-.4.7-3.3 3.7-3.9 3.8-.7.1-1.9-1.1-2.4-2-.1.1-.1.1-.1.2-.3.6 1.5 2.8 2.5 2.7"/><path d="m5.3 43c.6 0 1.8-4 1.9-4.4 0-.1 0-.4-.1-.6-.3 1-1.3 4.2-1.8 4.2-.7-.1-1.6-1-1.9-1.6 0 .2-.1.4-.1.5 0 .4 1.2 1.8 2 1.9"/><path d="m4.8 44.6c-.1 1.1-.3 3.6-.7 3.6-.4 0-.9-2.6-1.1-4.4.1 1.6.6 5.3 1.1 5.3.5 0 .7-3.7.8-4 .1-.1 0-.3-.1-.5"/><path d="m8 49.1c-.3.8-1.3 2.9-2 2.2-.3-.3-.5-.9-.6-1.6 0 1 .2 2 .6 2.5.8.8 2-2.2 2-2.5.2-.1.2-.3 0-.6"/><path d="m8.9 47c-.3-.1-2-2.4-2.4-3.1-.1.4-.1.6 0 .7.1.3 2.2 3.2 2.5 3.3.6.1 2.7-3.3 2.6-3.8 0-.1-.1-.3-.2-.4-.4 1-2 3.4-2.5 3.3"/><path d="m18.3 35.5c-.4.1-2.1-1.9-2.8-3.1-.1.1-.2.2-.2.2-.1.6 2.5 3.9 3 3.8.8-.2 4.8-2.7 4.9-3.4 0-.2-.1-.4-.2-.6-.6.9-4 2.9-4.7 3.1"/><path d="m22.8 29c-.1.6 1.8 3.3 2.3 3.2.8-.2 4.6-3.1 4.6-3.9 0-.2-.1-.4-.2-.6-.7 1-3.7 3.4-4.5 3.6-.4.1-1.6-1.4-2.1-2.4 0 0-.1.1-.1.1"/><path d="m31.4 26.1c-.4.1-1.6-1.3-2.1-2.2-.1.1-.1.2-.2.3-.1.6 1.8 3 2.3 2.9.3-.1 1.1-.6 1.9-1.4.4-.5.9-1 1.5-1.5.6-.7 1.1-1.3 1.1-1.5 0-.2-.1-.4-.2-.6-.7 1.1-3.5 3.8-4.3 4"/><path d="m36.8 19.9c-.4.1-2.2-1.3-2.8-2.2-.1.2-.2.3-.2.4-.1.6 2.6 2.9 3.1 2.8.8-.2 4.2-4 4.3-4.8 0-.1-.1-.3-.2-.5-.7 1.2-3.4 4.2-4.2 4.3"/><path d="m42.7 13.4c-.4.1-2.4-1.4-3.1-2.3-.2.2-.3.3-.3.3-.1.6 2.8 3 3.4 2.9.8-.2 4.7-3.6 4.7-4.4 0-.2-.1-.3-.2-.5-.7 1.2-3.7 3.8-4.5 4"/><path d="m49.1 8c-.4.1-2-1.2-2.7-2.1-.2.1-.3.2-.3.3-.1.6 2.5 2.9 3 2.8.8-.2 4.3-3 4.4-3.7 0-.2-.1-.4-.2-.5-.8 1-3.5 3.1-4.2 3.2"/><path d="m12.6 41c-.8-.1-2.5-2.4-3.1-3.4-.1.2-.1.3-.1.4 0 .7 2.4 3.8 3.3 3.9.6.1 4.1-3.3 4.1-4.4 0-.1-.1-.3-.1-.5-.7 1.4-3.5 4.1-4.1 4"/><path d="m59.1 19.2c0 .2-.1.5-.1.6 0 .6 1.1 2.4 1.2 2.3.9-.9 1.2-2.9 1.1-4.6-.1 1.4-.4 2.9-1.1 3.6-.1.2-.9-1.1-1.1-1.9"/><path d="m55.4 28.7c-.3.1-1.5-1.6-1.8-2.7 0 .1-.1.1-.1.1-.3.8 1.5 3.6 1.9 3.5.7-.2 3.4-3.3 3.6-4.8 0-.2 0-.5 0-.8-.4 1.6-2.9 4.5-3.6 4.7"/><path d="m53.6 30.9c-.6.6-4.6 2.6-5.1 2.4-.5-.1-1-.9-1.2-1.5-.1.1-.1.2-.1.3 0 .7.7 2 1.4 2.2.6.2 4.8-1.9 5.2-2.5 0-.2-.1-.5-.2-.9"/><path d="m46.6 34.3c-.5.6-3.5 2.4-3.8 2.5-.5.1-1.2-.6-1.5-1.3-.1.1-.1.2-.1.2-.1.7 1 2.1 1.6 2 .4-.1 3.7-2 3.9-2.6.1-.1.1-.4-.1-.8"/><path d="m38.7 43.5c.4-.3 2.6-4 2.5-4.4 0-.1-.1-.3-.2-.4-.5 1.1-2 3.6-2.3 3.9-.4.3-1.6-.6-2.1-1.3-.1.2-.1.3-.1.4-.1.7 1.8 2.1 2.2 1.8"/><path d="m33.2 49.1c-.1.2-.1.4-.1.5.1.9 2.6 2.2 3.1 1.7.5-.4 2.2-5.3 2.1-5.7 0-.1-.1-.2-.1-.2-.4 1.5-1.6 4.7-2 5.1-.5.4-2.4-.5-3-1.4"/><path d="m35 53.8c0-.1-.1-.3-.2-.5-.7 1-3.5 3.6-4.1 3.8-.5.2-2-.9-2.5-1.9-.1.1-.1.2-.1.3-.1 1 2 2.8 2.7 2.5.6-.3 4.3-3.7 4.2-4.2"/><path d="m28 58.5c-1 .5-4.4 1.3-5 1.3-.4 0-1.3-.7-1.8-1.4-.1.1-.2.2-.2.3.1.8 1.5 2 2 2 .8 0 5.6-1.2 5.4-1.6 0-.2-.2-.4-.4-.6"/><path d="m20.4 60c-1 0-3.2-.3-4.6-.6-.6.1-1 .2-.9.4.1.7 6.2 1.4 6 1 0-.2-.2-.5-.5-.8"/><path d="m17.2 57.8c0-.2-.1-.4-.4-.6-.9.5-3.9.6-5-.1-.2.3-.3.5-.1.8 1.2 1 5.5.6 5.5-.1"/><path d="m16.1 55c.1.3 3 2.3 3.3 2.5.5.2 4.6-1 4.5-1.9 0-.1-.1-.3-.3-.5-.8.8-3.9 1.7-4.3 1.5-.2-.1-2.2-1.4-2.9-2.1-.2.2-.3.4-.3.5"/><path d="m31.4 47.8c-.5.1-2.9-1.7-3.6-2.6-.1.2-.2.4-.2.5-.1.5 3.2 3.1 3.8 3 .3-.1 3-4.8 3.2-5.1 0-.1-.1-.3-.2-.5-.6 1.1-2.7 4.6-3 4.7"/><path d="m35 40.3c-.5.1-2.3-1.1-3-1.9-.1.2-.2.3-.2.5-.1.5 2.5 2.5 3.2 2.3.3-.1 3-4.2 3.1-4.5.1-.1 0-.4-.2-.7-.5 1-2.6 4.2-2.9 4.3"/><path d="m39.9 34c-.5.1-2.1-1.1-2.6-1.8-.1.2-.2.3-.2.4-.1.5 2.2 2.4 2.9 2.3.3-.1 4.1-3.3 4.2-3.6.1-.1 0-.4-.2-.7-.8.8-3.8 3.3-4.1 3.4"/><path d="m43.4 26.8c-.1.1-.2.3-.2.4-.1.5 2.2 3.2 2.8 3.1.3-.1 4.8-3.4 4.9-3.7.1-.1 0-.4-.2-.7-.9.8-4.4 3.4-4.7 3.5-.5.1-2-1.6-2.6-2.6"/><path d="m52.7 23.7c-.5.1-2.2-1.8-2.7-2.8-.1.2-.2.3-.2.4-.1.5 2.3 3.5 2.9 3.4.3-.1 4.2-4.2 4.3-4.5.1-.1 0-.4-.2-.7-.8.9-3.8 4.2-4.1 4.2"/><path d="m58 17.1c-.5.1-2.1-1.6-2.6-2.5-.1.2-.2.3-.2.4-.1.5 2.2 3.2 2.8 3 .3-.1 2.3-4.2 2.4-4.5.1-.1 0-.5 0-.8-.4.6-2.1 4.3-2.4 4.4"/><path d="m30.6 50.2c0-.1-.1-.2-.2-.4-.7 1.3-3.6 3.9-4.4 3.9-.6 0-3-1.8-3.7-2.8-.1.2-.2.4-.2.5.2.9 3.3 3.2 3.9 3.3.9-.1 4.6-3.5 4.6-4.5"/><path d="m12.6 53.9c-.6.7-2.3 1.7-2.8 1.6-.3-.1-1.7-1.5-2.1-2.1-.1.3-.1.6-.1.7.1.3 1.9 2.2 2.2 2.2.6.1 3.1-1.4 3-2 0-.1 0-.2-.2-.4"/><path d="m17.8 50.4c0-.1-.1-.3-.1-.4-.5 1.2-2.8 2.9-3.5 2.7-.4-.1-3.1-2.8-3.8-3.7-.1.3-.1.5-.1.7.2.4 3.5 3.8 3.9 3.9.9.2 3.7-2 3.6-3.2"/><path d="m25.2 42.7c-1 0-4.2-3-4.9-4.6-.1.2-.1.3-.1.5.1 1.3 3.9 5 5 5 1.5 0 3.9-3.8 3.6-4.5 0 0-.1-.1-.1-.2-.5 1.4-2.3 3.9-3.5 3.8"/><path d="m30.2 36.2c-.8.1-2.8-1.7-3.3-2.9-.1.1-.1.2-.1.3-.1 1.1 2.5 3.6 3.5 3.5 1.2-.2 3.9-3.8 3.7-4.4 0-.1-.1-.2-.2-.3-.6 1.2-2.6 3.6-3.6 3.8"/><path d="m35.9 30.5c-.9.2-2.9-1.5-3.4-2.8 0 .1-.1.2-.1.3-.2 1.2 2.4 3.7 3.5 3.5 1.4-.3 4.4-4.4 4.3-5 0-.1-.1-.2-.2-.4-.7 1.3-2.9 4.1-4.1 4.4"/><path d="m46.3 20.6c-.6 1.4-3.9 4.1-4.7 4.1-.4 0-2.4-2.1-3.1-3-.1.3-.2.5-.2.6.1.4 2.8 3.3 3.3 3.3.9 0 4.7-3.2 4.8-4.5 0 0 0-.2-.1-.5"/><path d="m48.1 19.1c-.4 0-3.2-2.8-4-3.9-.2.3-.3.5-.2.6.1.4 3.7 4.2 4.2 4.2.9 0 4.5-3.9 4.5-5.1 0-.2 0-.4-.1-.6-.5 1.5-3.5 4.8-4.4 4.8"/><path d="m53.4 12.5c-.3 0-2-1.7-2.7-2.6-.2.3-.3.4-.3.5.1.3 2.6 3 3 3 .7-.1 3.8-3.4 4-4.4 0-.2 0-.4-.1-.6-.6 1.3-3.2 4.1-3.9 4.1"/><path d="m20 48.5c-.9 0-4.5-3.7-5.3-5.1-.1.2-.1.4-.1.5.1.9 4.5 5.5 5.5 5.5 1 0 4-2.8 3.9-4.2 0-.1-.1-.2-.1-.4-.6 1.5-3.1 3.7-3.9 3.7"/><path d="m33.3 25.6c.5-.5 1-1 1.5-1.5-.5.5-1 1-1.5 1.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f95d.svg b/riot/emojione/svg/1f95d.svg new file mode 100644 index 0000000..d60d50f --- /dev/null +++ b/riot/emojione/svg/1f95d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.7 62c-47.5 0-47.5-60 0-60v60" fill="#9e7658"/><ellipse cx="37.7" cy="32" rx="24.3" ry="30" fill="#89664c"/><ellipse cx="37.7" cy="32" rx="22.9" ry="28.3" fill="#b2d921"/><ellipse cx="37.7" cy="32" rx="20" ry="24.7" fill="#c7e755"/><path d="m53.4 37.3c-.3 1.4-6.2 0-6.7 1.2-.6 1.3 3.3 6.8 2.5 7.8-.8 1-5.3-3.8-6.3-3.1-1 .7.1 7.9-1 8.3-1.1.4-3-6.6-4.2-6.6-1.1 0-3.1 6.9-4.2 6.5-1.2-.4 0-7.6-1-8.3-1-.7-5.5 4.1-6.3 3.1-.8-1 3.1-6.5 2.5-7.8-.6-1.2-6.4.1-6.7-1.2-.3-1.4 5.3-3.7 5.3-5.2 0-1.4-5.6-3.8-5.3-5.2.3-1.4 6.2 0 6.7-1.2.6-1.3-3.3-6.8-2.5-7.8.8-1 5.3 3.8 6.3 3.1 1-.7-.1-7.9 1-8.3 1.1-.4 3 6.6 4.2 6.6 1.1 0 3.1-6.9 4.2-6.6 1.2.4 0 7.6 1 8.3 1 .7 5.5-4.1 6.3-3.1.8 1-3.1 6.5-2.5 7.8.6 1.2 6.4-.1 6.7 1.2.3 1.4-5.3 3.7-5.3 5.2 0 1.5 5.6 3.9 5.3 5.3" fill="#b2d921"/><path fill="#ecffad" d="m51 32l-8.1 1.7 6.3 6.5-7.7-3.5 2.8 9.5-5.2-7.7-1.4 9.9-1.5-9.9-5.2 7.7 2.8-9.5-7.7 3.5 6.3-6.5-8.1-1.7 8.1-1.7-6.3-6.5 7.7 3.5-2.8-9.5 5.2 7.7 1.5-9.9 1.4 9.9 5.2-7.7-2.8 9.5 7.7-3.5-6.3 6.5z"/><g fill="#3e4347"><path d="m34.9 17.4l-.4 2.4 1.3 1.9.4-2.4z"/><path d="m32.4 14l-.5 2.4 1.3 1.9.5-2.4z"/><path d="m41.4 16.9l-1.7 1.3-.2 2.5 1.7-1.4z"/><path d="m40.4 46.6l.5-2.4-1.4-1.9-.4 2.4z"/><path d="m43 50l.4-2.4-1.3-1.9-.5 2.4z"/><path d="m33.9 47.1l1.7-1.3.2-2.5-1.7 1.4z"/><path d="m49.5 28.6l-1.9-.5-1.6 1.6 2 .5z"/><path d="m52.3 25.5l-2-.6-1.5 1.6 1.9.6z"/><path d="m49.9 36.6l-1-2.1-2-.2 1 2.1z"/><path d="m25.8 35.4l2 .5 1.5-1.6-2-.5z"/><path d="m23.1 38.5l1.9.6 1.5-1.6-1.9-.6z"/><path d="m25.4 27.4l1 2.1 2 .2-1-2.1z"/><path d="m47.2 22.6l-2 .6-.8 2.2 1.9-.5z"/><path d="m48.5 18.3l-1.9.6-.8 2.3 1.9-.6z"/><path d="m26.8 45.7l1.9-.6.9-2.3-2 .6z"/><path d="m30 20.3l.5 2.4 1.8 1-.4-2.4z"/><path d="m26.6 18.6l.4 2.4 1.9 1-.5-2.4z"/><path d="m48.7 45.4l-.4-2.4-1.8-1 .4 2.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f95e.svg b/riot/emojione/svg/1f95e.svg new file mode 100644 index 0000000..603a347 --- /dev/null +++ b/riot/emojione/svg/1f95e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b2c1c0"><path d="m2 45.6h60v2.7h-60z"/><ellipse cx="32" cy="48.4" rx="30" ry="13.6"/></g><ellipse cx="32" cy="45.6" rx="30" ry="13.6" fill="#e8e8e8"/><ellipse cx="31.1" cy="42.9" rx="25.3" ry="12.3" fill="#fed0ac"/><path d="m55.4 41.5c0 6-10.9 10.9-24.4 10.9-13.5 0-24.4-4.9-24.4-10.9 0-6 10.9-10.9 24.4-10.9 13.5 0 24.4 4.9 24.4 10.9" fill="#d3976e"/><path d="m59.2 37.5c0 6-10.9 12.3-24.4 12.3-17.8 0-24.4-6.2-24.4-12.3 0-6 10.9-9.5 24.4-9.5 13.5-.1 24.4 3.4 24.4 9.5" opacity=".5" fill="#594640"/><ellipse cx="35.7" cy="36.1" rx="25.3" ry="12.3" fill="#fed0ac"/><path d="m60.1 34.7c0 6-10.9 10.9-24.4 10.9-13.5 0-24.4-4.9-24.4-10.9 0-6 10.9-10.9 24.4-10.9 13.5 0 24.4 4.9 24.4 10.9" fill="#d3976e"/><path d="m55.4 30.6c0 6-10.1 12.3-22.5 12.3-16.4 0-26.2-6.2-26.2-12.3s13.8-9.5 26.2-9.5 22.5 3.5 22.5 9.5" opacity=".5" fill="#594640"/><ellipse cx="30.1" cy="29.3" rx="25.3" ry="12.3" fill="#fed0ac"/><path d="m54.5 27.9c0 6-10.9 10.9-24.4 10.9-13.5 0-24.4-4.9-24.4-10.9s11-10.9 24.4-10.9c13.5 0 24.4 4.9 24.4 10.9" fill="#d3976e"/><path d="m54 22.5c0 6-10.3 13.6-23 13.6-16.8 0-25.8-7.6-25.8-13.6s13.2-9.5 25.8-9.5 23 3.4 23 9.5" opacity=".5" fill="#594640"/><ellipse cx="29.2" cy="21.1" rx="25.3" ry="12.3" fill="#fed0ac"/><path d="m53.6 19.7c0 6-10.9 10.9-24.4 10.9-13.5 0-24.4-4.9-24.4-10.9 0-6 10.9-10.9 24.4-10.9 13.4 0 24.4 4.9 24.4 10.9" fill="#d3976e"/><path d="m56.4 17.2c0 5.3-10.1 10.7-22.5 10.7-16.4 0-26.2-5.5-26.2-10.7 0-5.3 13.8-8.4 26.2-8.4s22.5 3.1 22.5 8.4" opacity=".5" fill="#594640"/><ellipse cx="32.9" cy="14.3" rx="25.3" ry="12.3" fill="#fed0ac"/><path d="M57.3,12.9c0,6-10.9,10.9-24.4,10.9c-13.5,0-24.4-4.9-24.4-10.9S19.5,2,32.9,2C46.4,2,57.3,6.9,57.3,12.9z" fill="#d3976e"/><g opacity=".8"><path d="m35.5 2.5c-23.2 0-32 11.9-23.5 11.9 3.8 0-3.8 6.8.1 9.2 1.1.7 2.8-1.2 4.1-1.2 4.1 0-4.2 22.9 2.1 22.9 5.4 0-1-15.4 2.6-22.3.5-1 3.5-3.8 3.9-.4.8 6.6 5.2 5.5 9.2 1.4 5.6-5.7 4.5 1.5 8.5 1.5 2.6 0 3.4-3.3 5.7-3.3 4.9 0-3.3 16.9 2.4 16.9 4.7 0-.7-18.8 3.6-18.8 2.2 0-1.2-4 1.7-4 5.4.1.5-13.8-20.4-13.8" fill="#c76a00"/></g><path d="m11.8 11.7c-.9.5-.8 1.4 1.9 1.1 2.7-.4-.5 4.6-.6 7.7-.1 3.1 11.2-6.3 12.5-.6 1.3 5.7 2.8 8.4 7.8 2.9 3.9-4.3 5.3-1.6 8 .6s6.6-5.7 10.5-6.6c3.8-1 4.1-3.7 2.9-5.4-1.2-1.7-2.2-1.2-1.2 1.4.9 2.6-4.1 1.5-6.6 4.3-2.5 2.7-4.2 3.4-6.4 1.4-2.2-2-6.3 0-8.9 3-4.9 5.6-4-5.8-8-5.8-4 0-8.6 3.9-7.9 1.8.5-2 2.5-9.4-4-5.8" opacity=".5" fill="#fff6d1"/><path d="m19.3 7.4c0 2.1 8.9-1.5 12.7-1.5 12.6 0 19.2 6.8 19.2 3.2 0-.7-8.2-4.9-16.3-5-7.9-.1-15.6 1.8-15.6 3.3" opacity=".7" fill="#a13e14"/><g fill="#fff6d1"><path d="m51.5 25.9c0 0 1.4 12.3-1 12.3-1.3 0 1-12.3 1-12.3" opacity=".5"/><path d="m18.8 30.5c0 0 2.3 14.1-.1 14.1-1.9-.1.1-14.1.1-14.1" opacity=".5"/></g><path fill="#fff" d="m25.9 6v2.9l4.5 4.7 10.5-4.4v-3.4l-4.2-1.8z"/><g fill="#dbb471"><path opacity=".5" d="m30.4 9.3v4.3l10.5-4.4v-3.4z"/><path opacity=".25" d="m30.4 9.3l-4.5-3.3v2.9l4.5 4.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f980.svg b/riot/emojione/svg/1f980.svg new file mode 100644 index 0000000..1f7936f --- /dev/null +++ b/riot/emojione/svg/1f980.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m27.6 5.4c-.6.3-3.1 3.4-4.6 3.4s.4-2.7 2.4-4.8c2-2.1 2.8-2.9-1.3-1-2.3 1.1-3.8 2.2-4.7 3.3-.2-.7-.4-1-1.3.1-1.9 2.1-4 5.6-3.1 9.4.1.5.3 1 .5 1.3-.5 3.1.7 7.2 5.6 11.3h1.8c0 0-5-4.1-4.1-9.6 2.2-.4 1.6-.9 4.3-4.4 1.2-1.5 1.3-2.6.9-3.5 3.8-3.1 4.1-5.7 3.6-5.5" fill="#d64553"/><path d="m14.9 15.8c-.9-3.8 1.3-7.2 3.1-9.3 1.9-2.1.7 1.1 2.7 2.2 2 1.1 5 2.4 2.2 5.9-2.7 3.5-2.2 4-4.3 4.4-1 .1-3-.2-3.7-3.2" fill="#ed4c5c"/><path d="m36.4 5.4c.6.3 3.1 3.4 4.6 3.4s-.4-2.7-2.4-4.8c-2-2.1-2.8-2.9 1.3-1 2.3 1.1 3.8 2.2 4.7 3.3.2-.7.4-1 1.3.1 1.9 2.1 4 5.6 3.1 9.4-.1.5-.3 1-.5 1.3.5 3.1-.7 7.2-5.6 11.3h-1.8c0 0 5-4.1 4.1-9.6-2.2-.4-1.6-.9-4.3-4.4-1.2-1.5-1.3-2.6-.9-3.5-3.8-3.1-4.1-5.7-3.6-5.5" fill="#d64553"/><path d="m49.1 15.8c.9-3.8-1.3-7.2-3.1-9.3-1.9-2.1-.7 1.1-2.7 2.2-2 1.1-5 2.4-2.2 5.9 2.7 3.5 2.2 4 4.3 4.4 1 .1 3-.2 3.7-3.2" fill="#ed4c5c"/><g fill="#d64553"><path d="m24.5 23.1c-.6-1.9-1.6-1-1.3-.2.3.9 1.9 4.5.5 7.5l.6.4c0 0 1.6-3 .2-7.7"/><path d="m4.8 35.4c.1.1.3.1.4.1.5 0 1.8-1.3 3.5-2.4.5.2 1.9-.2 3.7-.3 1 .8 4.9 1.8 7.5 3.9 0 0 1.4-.3.7-2.3 0 0-5.2-4.9-6.8-4.4-.3.1-.6.2-.8.4-1.7-.3-3.7-.4-4.3.1-.3.3-.4.6-.5.8-1.5.5-3.8 1.5-4 2.3-.1.3-.1.6 0 .8-.8.9-1.8 2.6-2.2 5.7 0 0 .6-2.4 2.8-4.7"/><path d="m16.6 52.3c.4-.3 1.1-1.6 2-3.1 1.2-.3 4.4-2.8 7.6-3.5 0 0 .6-1.3-1.3-2 0 0-7 1-7.7 2.6-.1.3-.2.6-.2.9-1.3 1.2-2.7 2.7-2.6 3.5 0 .4.2.7.3.9-.5 1.5-1.2 3.9-.7 4.6.2.2.4.4.6.6.2 1.2.9 3.1 3 5.3 0 0-1.4-1.9-1.8-5.1.2-.1.3-.1.4-.3.4-.4.2-2.4.4-4.4"/><path d="m9.4 54.1c.2-.1.3-.1.4-.3.3-.4.1-2.3.3-4.3.4-.3 1.1-1.6 2-3.1 1.2-.3 4.4-2.8 7.6-3.5 0 0 .6-1.3-1.3-2 0 0-7 1-7.7 2.6-.1.3-.2.6-.2.9-1.3 1.2-2.7 2.7-2.6 3.5 0 .4.2.7.3.9-.5 1.5-1.2 3.9-.7 4.6.2.3.4.4.6.6.2 1.2.9 3.1 3 5.3.1-.1-1.3-2-1.7-5.2"/><path d="m11.6 39.2c1.2.4 5.2 0 8.3 1.1 0 0 1.2-.8-.1-2.4 0 0-6.5-2.9-7.9-1.9-.3.2-.5.4-.6.6-1.7.3-3.7.9-4 1.6-.2.3-.2.7-.2 1-1.2 1-3.1 2.7-3 3.5 0 .3.1.6.2.8-.4 1.1-.8 3.1-.2 6.1 0 0-.2-2.4 1.1-5.3.2 0 .3 0 .5 0 .4-.1 1.3-1.9 2.5-3.5.6-.1 1.9-.9 3.4-1.6"/><path d="m39.5 23.1c.6-1.9 1.6-1 1.3-.2-.3.9-1.9 4.5-.5 7.5l-.6.4c0 0-1.6-3-.2-7.7"/><path d="m44.1 36.7c2.6-2.1 6.4-3.1 7.5-3.9 1.7.2 3.2.5 3.7.3 1.7 1.1 3 2.4 3.5 2.4.1 0 .3-.1.4-.1 2.2 2.3 2.8 4.6 2.8 4.6-.4-3-1.4-4.8-2.2-5.6 0-.2 0-.5 0-.8-.2-.8-2.5-1.8-4-2.3-.1-.3-.3-.6-.5-.8-.5-.6-2.6-.4-4.3-.1-.2-.2-.5-.3-.8-.4-1.6-.5-6.8 4.4-6.8 4.4-.7 1.9.7 2.3.7 2.3"/><path d="m49.5 50.7c.1-.8-1.3-2.3-2.6-3.5 0-.3-.1-.6-.2-.9-.6-1.6-7.7-2.6-7.7-2.6-2 .7-1.3 2-1.3 2 3.2.7 6.4 3.2 7.6 3.5.9 1.5 1.6 2.8 2 3.1.2 2 0 3.9.3 4.3.1.1.2.2.4.3-.4 3.2-1.8 5.1-1.8 5.1 2.1-2.2 2.8-4.1 3-5.3.2-.1.4-.3.6-.6.5-.7-.2-3.1-.7-4.6.2-.2.3-.5.4-.8"/><path d="m56 47.8c.1-.8-1.3-2.3-2.6-3.5 0-.3-.1-.6-.2-.9-.6-1.6-7.7-2.6-7.7-2.6-2 .7-1.3 2-1.3 2 3.2.7 6.4 3.2 7.6 3.5.9 1.5 1.6 2.8 2 3.1.2 2 0 3.9.3 4.3.1.1.2.2.4.3-.4 3.2-1.8 5.1-1.8 5.1 2.1-2.2 2.8-4.1 3-5.3.2-.1.4-.3.6-.6.5-.7-.2-3.1-.7-4.6.2-.1.3-.4.4-.8"/><path d="m59.8 42.7c.1-.8-1.8-2.5-3-3.5 0-.3-.1-.6-.2-1-.3-.7-2.3-1.3-4-1.6-.2-.2-.4-.4-.6-.6-1.4-1-7.9 1.9-7.9 1.9-1.3 1.7-.1 2.4-.1 2.4 3.1-1.1 7.1-.7 8.3-1.1 1.5.8 2.8 1.5 3.3 1.6 1.2 1.6 2 3.3 2.5 3.5.1 0 .3 0 .5 0 1.3 2.9 1.1 5.3 1.1 5.3.6-3 .2-5-.2-6.1.2-.3.3-.5.3-.8"/></g><g fill="#ed4c5c"><path d="m37.9 26.6c-.8 0-1.1-1.5-1.4-1.5-.3 0-.1.8-.6 1.2-.2.2-.7.1-.9-.2-.7-.7-.4-1.8-.7-1.8-.3 0 0 1-.7 1.6-.2.2-.6.2-.8 0-.7-.6-.4-1.6-.7-1.6s-.1 1-.7 1.6c-.2.2-.6.2-.8 0-.7-.6-.4-1.6-.7-1.6-.4 0 0 1-.7 1.8-.2.2-.6.3-.9.2-.6-.4-.4-1.2-.6-1.2-.3 0-.6 1.5-1.4 1.5-6.1 0-9.1 5.4-9.1 9.9 0 5.9 6.7 17.8 15 17.8 8.3 0 15-12 15-17.8-.2-4.6-3.2-9.9-9.3-9.9"/><ellipse cx="40.4" cy="22.3" rx="3.9" ry="3.8"/></g><ellipse cx="40.4" cy="22.3" rx="3.4" ry="3.4" fill="#fcfcfa"/><path d="m42.7 22.3c0 1.3-1 2.4-2.3 2.4-1.3 0-2.3-1.1-2.3-2.4 0-1.3 1-2.4 2.3-2.4 1.3 0 2.3 1.1 2.3 2.4" fill="#3e4347"/><ellipse cx="23.6" cy="22.3" rx="3.9" ry="3.8" fill="#ed4c5c"/><ellipse cx="23.6" cy="22.3" rx="3.4" ry="3.4" fill="#fcfcfa"/><path d="m25.9 22.3c0 1.3-1 2.4-2.3 2.4-1.3 0-2.3-1.1-2.3-2.4 0-1.3 1-2.4 2.3-2.4 1.3 0 2.3 1.1 2.3 2.4" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f981.svg b/riot/emojione/svg/1f981.svg new file mode 100644 index 0000000..965e4ef --- /dev/null +++ b/riot/emojione/svg/1f981.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58 21.2c3.9-2.6 4-6.4 4-6.4-3.9-.2-3.8-4.2-7.4-7.8-4.8-4.8-10.9-1.8-10.9-1.8.3-1.5-.5-2.4.1-3.2-8.2 0-11.8 3.5-11.8 3.5 0 0-3.6-3.5-11.8-3.5.5.8-.2 1.7.1 3.2 0 0-6.2-3.1-10.9 1.8-3.6 3.7-3.5 7.7-7.4 7.8 0 0 .1 3.8 4 6.4 0 0-4.1 3.9-3.4 12.1 0 0 1.6-2 5.5-2.7-4.5 3.8-1.9 9.4-5.2 13.2 0 0 4.6 1 6.5-.3-.7 5.9 2.9 8.2 2.9 11.1 4.1-1.3 4.7-5.4 4.7-5.4 0 7.5 2.6 7.2 2.6 11.2 0 0 4.5-.7 6.4-4.5.7 3.5 4.3 3.9 6.2 6.1 1.9-2.2 5.4-2.6 6.2-6.1 1.9 3.7 6.4 4.5 6.4 4.5 0-4 2.6-3.7 2.6-11.2 0 0 .6 4 4.7 5.4 0-2.9 3.6-5.2 2.9-11.1 1.9 1.3 6.5.3 6.5.3-3.3-3.9-.7-9.5-5.2-13.2 3.8.8 5.5 2.7 5.5 2.7.3-8.3-3.8-12.1-3.8-12.1" fill="#8f6b51"/><path d="m55.7 7.1c-2.6-2.1-10.1.2-13 3.8 3.5 1.2 7.6 4.2 10.7 11.4 6.5-3.2 5-13 2.3-15.2" fill="#e5bc5e"/><path d="m52 19.5c3.8-1.6 3-7 1.5-8.2-1.3-1.1-5.1 0-6.7 1.8 1.8 1.4 3.6 3.5 5.2 6.4" fill="#3e4347"/><path d="m21.3 10.9c-2.9-3.6-10.4-5.9-13-3.8-2.7 2.2-4.3 12 2.3 15.2 3.2-7.1 7.2-10.2 10.7-11.4" fill="#e5bc5e"/><path d="m12 19.5c1.6-2.9 3.4-5 5.2-6.4-1.7-1.8-5.4-2.9-6.7-1.8-1.5 1.2-2.3 6.6 1.5 8.2" fill="#3e4347"/><path d="m48.9 28.7c.5-2.2-1.6-7.3-3.5-8.3-.3-.2-1.5 0-1.5 0-.4-.5-2.3-6-7.3-7-3-.5-4.6 2-4.6 2s-1.6-2.6-4.6-2c-5 .9-7 6.5-7.3 7 0 0-1.2-.2-1.5 0-1.9 1.1-3.9 6.1-3.5 8.3.6 2.7 5.3 5.4 5.3 10h23.4c-.1-4.6 4.6-7.3 5.1-10" fill="#e5bc5e"/><path fill="#fff" d="M32 16.4 30.7 19 32 27.1 33.3 19z"/><g fill="#3e4347"><path d="m42.9 26c0 1.7-1.1 3-2.4 3-1.3 0-2.4-1.3-2.4-3 0-1.7 1.1-3 2.4-3 1.3 0 2.4 1.4 2.4 3"/><path d="m21.1 26c0 1.7 1.1 3 2.4 3 1.3 0 2.4-1.3 2.4-3 0-1.7-1.1-3-2.4-3-1.3 0-2.4 1.4-2.4 3"/></g><path d="m20.5 41.8c0 6.4 7.7 11.3 7.7 11.3-.1-1.3.3-2.3.3-2.3.3 1.9 1.2 3.3 1.2 3.3 0-1.6.8-2.3.8-2.3.8 2.2 1.6 3.1 1.6 3.1s.8-.9 1.6-3.1c0 0 .8.7.8 2.3 0 0 .9-1.4 1.2-3.3 0 0 .4 1.1.3 2.3 0 0 7.7-4.9 7.7-11.3h-23.2" fill="#fff"/><path d="m43.3 36.5c-.3-.6-5.4-4.7-5.4-4.7h-11.8c0 0-5 4-5.4 4.7-.5 1-.6 4.2-.2 5.2 0 0 4.9 7.4 11.5 1 6.6 6.4 11.5-1 11.5-1 .4-1 .3-4.2-.2-5.2" fill="#ffda87"/><g fill="#3e4347"><path d="m20.5 41.8c0 0 0 0 0 0"/><path d="m43.5 41.8c0 0 0 0 0 0"/><path d="m33 42.7v-5.9l3.8-1.6c.6-.3 1.1-1 1.1-1.6v-1.7h-11.8v1.7c0 .6.5 1.3 1.1 1.6l3.8 1.6v5.9c-5 4.6-9.9-.4-10.4-.9.6.9 5.4 8.9 11.5 2.6 6 6.3 10.9-1.8 11.5-2.6-.6.6-5.6 5.6-10.6.9"/></g><path d="m37.9 31.9c-1.6-2.9-1.8-3.1-3.2-3.8-1.2-.5-4.1-.5-5.3 0-1.4.6-1.6.9-3.2 3.8h11.7" fill="#ffda87"/><path d="m32 30.3c-3.8 0-5.9 1.6-5.9 1.6s.2-.1 2.3 1.4c1.3 1 2.4 3.6 3.6 3.6 1.2 0 2.3-2.6 3.6-3.6 2.1-1.6 2.3-1.4 2.3-1.4s-2.1-1.6-5.9-1.6" fill="#af7751"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f982.svg b/riot/emojione/svg/1f982.svg new file mode 100644 index 0000000..a1afc31 --- /dev/null +++ b/riot/emojione/svg/1f982.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m51.3 28.2c0 0 .4-1.4-.4-2.9 2.5-3.2 2.4-8.1.7-10.5 1.4-2 1.4-5.1-.4-6.6 0 0-.2-5.1-3.5-5.5l-7.7 4.6c0 0 2 1.2 5.5-.3.2 1.4.8 2.3 1.5 3.1-.8 1.5.1 3.2.1 3.2s-3 2.8-3.7 3.7c-2.1 2.6-2.3 5.9-2.3 5.9l-17.5 11.3-10.1.2 2.8 2.9c0 0 .8-.1 1.1-.1l9.3 7.1-4.1 3.4c1.6.9 17.7-3 17.7-3 .5-.4 2-1.7.4-4l.3-3.5 10.3-9" fill="#3e4347"/><g fill="#6b6b6d"><path d="m46.6 6.3c-1.5.9 1.1 2.5 1.1 3.9 1.7 1.1 3.4-1 3.5-2 .3-1.6-.1-4.6-2.4-5.1.2.5-.1 2-2.2 3.2"/><path d="m32.9 42.5c-5 2-11.9 6.2-6.6 13.6 0 0 0 .1.1.1 0 0-1.6-2.7 1.3-5.8 1.3-1.4 2.4-2.6 2.4-2.6s2.2 1.5 1.6 4.2c-1 4.5-4.4 10-4.4 10s22-5.7 12.6-18c-2.4-2.9-6-1.8-7-1.5"/><path d="m60.4 40.5c.3-.4.5-1 .3-1.8-.6-2.4.8-4.8-.5-5.4.2-.8-3.3-4.6-5.4-4.8-1-1.4-2.9-.5-3.9-.5.3-3.4-3.7-5.5-3.7-5.5 1.7.3 2.5.9 3.3 2 2.4-3.8 1.8-9.6-.6-10.8 2.5-.1 2.7-2.9 1.5-4.7.1 2.6-1.6 3.7-3.1 2.5-1.4-1.1-2 .6-1.5 1.7-3.2 2-5.9 6.6-6.1 9.7-1.7.4-3.2 1-4.4 1.6-2.4-1.6-4.1-2-5.2-1.8-3.1-1.7-3.2 2.6-5.7 4.1-2.2-.5-2.5 3.6-3.9 5.2-1.1.1-2.4.7-2.9 1.6-5.5-2.1-7 1.2-7 1.2-15.9 3.4-7.2 17.4-7.2 17.4s1.3-4.6 4.5-7.9c2.6-2.7 5.3-2.5 5.3-2.5-2.4 6.1 1.9 3.1 2.4 1.3.9-3.2.3-6.4-2.3-8 1.6-.2 1.9 1.8 2.7 1.7.2-1.4 1.1-1.4 1.1-1.4-1.5 1.8-.4 4 .1 4.9-.9.7-1.7 2-.9 4.3 1.1 3.1 1.6 3.1 1.4 1.3-.1-1.8 0-1.9 3.8-1.4 3.8.5.6 2.4 0 3.1-.1.1 0 .2.1.2 5.4-1.7 5.4-4.7 3.5-6.5 1.5.2 2.1 2.4 1.9 3 1.5-1.1 4.1-2.2 5.6-2.7-.1-.7-.1-1.4.1-2.2.3.6 1 2.2 1.7 2.2 3.4-.1 3.7 1.7 4.3.9 1.1-1.3.2-2.6-1-3.9.9.6 1.5 1.3 1.9 2.1.7-.2 2.1-.2 2.9-.2-.2 1.5 2.6 3 4.3 3.8-1.1 1.3.8 4.3.4 5.8-.2.7.2 1 .6 1.1 0 1.2 5.5 1.3 1.6-.6.3-.4.5-1 .3-1.8-.5-2.3.7-4.3-.4-4.9.1-.3.2-1.5-1.3-2.1-2.3-1-2.9-3.3-4-3.1-1.2-1.8-4.3-.3-5.5-.8.9-2-1.1-4.3-3.9-5.5 3.3 1 4.9 2 5.1 4.8 1.8.3 3-.6 4-1.9 1.3.2 2.7-.6 3.8-.7.2 1.7 3 3.2 4.8 4-1.1 1.3.8 4.4.4 5.8-.2.7.2 1 .6 1.1-.1 1 6.1 1.1 1.6-.6.3-.4.5-1 .3-1.8-.6-2.4.8-4.5-.5-4.9.1-1.8-3.6-5.2-5.7-5.5-1-.9-2.9-.4-2.9-.4s1.1-.5 1.5-1.4c1.3.5 2.7-.4 4.3-.5.2 1.5 2.8 2.8 4.5 3.6-.8 1.5.9 4.6.5 6-.2.7.2 1 .7 1.1.2.9 6.2 1.6 1.8-.6m-16.7-23.5c3.4-2.2 8.1 1.8 5.3.6-3-1.2-6.2 0-5.3-.6m-1.5 3.3c4.1-2.7 9.8 2.2 6.3.7s-7.3-.1-6.3-.7m-7.9 5.7c-.6.6-1 1.3-1.1 1.9-.4.1-1.2.3-1.6.4-1.4-.7-2.4-1.2-3.3-1.5 1.6-1 2.1-1.5 2.3-2 .7.1 2.9.6 3.7 1.2m-7.5 5.4c-.9.1-1.7.5-2.5.7.7-.8 2-2 2.7-2.9.4.2.9.5 1.3.8-.7.5-1.2.9-1.5 1.4m12.7 1.2c-4-2.3-9.1-2-7.7-2.3 5.6-1.4 11.7 4.5 7.7 2.3m4.1-3.8c-3.8-1.9-8.5-1.9-7.2-2.1 5.2-.9 11 4 7.2 2.1m2.6-2.9c-3.3-1.7-7.4-1.6-6.2-1.8 4.4-.8 9.4 3.5 6.2 1.8"/></g><ellipse cx="21.5" cy="35.7" rx="3" ry="3.1" fill="#fcfcfa"/><ellipse cx="21.5" cy="35.7" rx="2.1" ry="2.2" fill="#3e4347"/><ellipse cx="28.5" cy="36.8" rx="3.4" ry="3.6" fill="#fcfcfa"/><ellipse cx="28.5" cy="36.8" rx="2.4" ry="2.5" fill="#3e4347"/><path d="m39.4 11.6l-5.9-.2c-1 4.2 5.6 3.4 5.6 5.2 0 .6-.9 1.3-.1 1 3-1 2.4-5.3.4-6" fill="#c94747"/><path d="m39.8 5c-5 .8-7.1 6-5.7 7.3 1 1 2.6.8 4.9-1 1.4-1.1 2.8-2.9 3.3-4.4 2.8-.1 5.4-1.8 6-3.7-1.2-2.1-6.8-1.4-8.5 1.8" fill="#6b6b6d"/><g fill="#3e4347"><path d="m33.7 10.5c-1.1 2.5 2.8 3.9 5.5 1.4 2-1.8 3.8-4.1 3.1-6.5-3.9 7.5-8.4 6.8-8.6 5.1"/><path d="m28 59.6c-.8 1.2-.8 2.4-.8 2.4 2.1-2.1 3.3-2 3-4.1-.3-2.1.7-3 2.2-4.5 1.5-1.5-1.1-3.1-1.1-4.7 0-1.6-1.6-3-1.9-1.2-.3 1.7-1.2 1-2.9 3.7-1.5 2.4-.5 4.4-.2 4.9 0 0 0 .1.1.1 0 0-.5-1.3.4-1.8.9-.5-.5-1.4.3-1.8.8-.4-.2-1.4 1.1-2.4 1.3-.9 1.5-1.8 1.5-1.8s1.6.9.4 2.2c-1.3 1.4-.1 1.4.9 1.7 1 .3-2.1.7-1 1.6 1.1.9-1.5.8-.8 1.9.6 1.2-1.4.6-.7 1.9.7 1.4.3.6-.5 1.9"/><path d="m5.8 50.2c.5-1.2-.3-.8 1.1-1.4 1.5-.6-.2-1.1 1.1-1.5 1.3-.5-.3-1.5 1-1.6 1.3-.1-.2-1.7.6-1.5.8.2 1.5.8 1.8-.6.3-1.3 2-1.3 2-1.3s-.6.7-.5 1.8c0 1.1-1.4 1.4-1.2 2 .2.6-1.3.6-1.2 1.3.2.7-1.2 1.3-1.2 1.3 4.9-.9 6.6-3.3 7.2-5.6-.9 1.8-3.1 2-2.1.4 1.1-2.1-1.2-4-2.5-2.4-1.3 1.7-3.1 1.6-4.3 4s-2.4.4-2.6 2.9c-.2 2.6-.6 4.1-.6 4.1s.9-.8 1.4-1.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f983.svg b/riot/emojione/svg/1f983.svg new file mode 100644 index 0000000..59cc30f --- /dev/null +++ b/riot/emojione/svg/1f983.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 33.9v-7.4c0-1.3-1.1-2.4-2.4-2.4h-3.2l2.8-1.6c1.1-.7 1.5-2.1.9-3.2l-3.7-6.4c-.7-1.1-2.1-1.5-3.2-.9l-2.8 1.6 1.6-2.8c.7-1.1.3-2.6-.9-3.2l-6.4-3.7c-1.1-.7-2.6-.3-3.2.9l-1.6 2.8v-3.2c0-1.3-1.1-2.4-2.4-2.4h-7.4c-1.3 0-2.4 1.1-2.4 2.4v3.2l-1.6-2.8c-.7-1.1-2.1-1.5-3.2-.9l-6.4 3.7c-1.1.7-1.5 2.1-.9 3.2l-6.8 12.3 20.6 11.5 12.1 20.9c.7 1.1 2.1 1.5 3.2.9l6.4-3.7c1.1-.7 1.5-2.1.9-3.2l-1.6-2.8 2.8 1.6c1.1.7 2.6.3 3.2-.9l3.7-6.4c.7-1.1.3-2.6-.9-3.2l-2.7-1.6h3.2c1.2 0 2.3-1 2.3-2.3" fill="#3e4347"/><g fill="#f4bc58"><path d="m16.4 58c-4.4-1.9-.5-5.5-4.5-5.7-4-.2-6.7-2.8-6.7-2.8 4.6-2.1 8.3 3.5 12.7-1.2-3.8 6.3.2 10.4-1.5 9.7"/><path d="m29.5 61.7c-4.5 0-5.5-1.3-7.6-.7-4.5 1.3-6.5.9-6.5.9 4.5-3.4 8.7-2.4 9.3-8.8.3 5.7 6.7 8.6 4.8 8.6"/></g><g fill="#3e4347"><path d="m40.1 31.6c0 11.1-7.7 20.2-17.1 20.2-9.4 0-31-15-15.7-31.1 5.1-5.4 2.9 5.2 17.5 5.2 9.4-.1 15.3-5.5 15.3 5.7"/><path d="m30.8 49.5c0 2.3-3.2 7.3-6 7.3-2.8 0-6-3.4-6-5.7 0-2.3 12-2.7 12-1.6"/></g><g fill="#51575c"><path d="m15.6 33.9c-2 12.3 13.4 20.6 19.8 20.6 6.4 0-.3-7.1 8.8-14.7 8.3-6.9-11.8-5.8-18.2-5.8s-9.4-6.1-10.4-.1"/><path d="m17.6 20.2c.4 3.1 2.1 5.9 4.6 7.4 2.5 1.5 5.5 1.4 8.4.5 2.9-.8 5.5-2.4 8.1-4 2.6-1.7 5-3.6 7.6-5.5-1.9 2.5-4.1 4.8-6.6 6.8-2.5 2-5.3 3.7-8.5 4.7-1.6.4-3.3.7-5 .6-1.7-.2-3.4-.7-4.8-1.7-2.9-2.2-4.2-5.7-3.8-8.8"/></g><path d="m6.2 16c3.2.9 3.7 3.3 5 1.6 2.2-2.6-.2-5.9-2.7-6.8-4.2-1.6-6.5 6.8-6.5 6.8s2.1-2.1 4.2-1.6" fill="#f29a2e"/><path d="m5 22c-.7 1-2.9 3.6-2 4.5.7.7 3.8-1.5 3.8-1.5s-.3 4 .8 4.2c2 .4 2.6-6.1 4.5-7 1.5-.7 6.2.7 6.2-2.3.1-3 .1-10.8-2.5-12.9-2.5-2-6-2.1-9.7 3.5-2.2 3.6 3.8 5-1.1 11.5" fill="#ed4c5c"/><g fill="#3e4347"><ellipse cx="5" cy="13.5" rx=".6" ry=".3"/><path d="m7.2 12.5c0 0-.4-2.4 2.6-2.9 0 0 .9 4.2-2.6 2.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f984.svg b/riot/emojione/svg/1f984.svg new file mode 100644 index 0000000..507937d --- /dev/null +++ b/riot/emojione/svg/1f984.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2 2l4.4 5.9c.3-.6.7-1.2 1-1.9l-5.4-4" fill="#ff9c70"/><path d="m9.1 11.5c.7-.9 1.4-1.8 2-2.7l-3.6-2.7c-.3.6-.7 1.2-1 1.9l2.6 3.5" fill="#ffe76e"/><path d="m11.6 14.9c1.1-1.1 2.2-2.2 3.3-3.3l-3.8-2.8c-.7.9-1.4 1.8-2 2.7l2.5 3.4" fill="#d3ff75"/><path d="m14.1 18.2c1.6-1.2 3.2-2.4 4.8-3.6l-3.9-2.9c-1.1 1.1-2.2 2.2-3.3 3.3l2.4 3.2" fill="#59ffba"/><path d="m16.4 21.3c2.2-1.2 4.4-2.5 6.5-3.7l-4.1-3.1c-1.6 1.2-3.2 2.4-4.8 3.6l2.4 3.2" fill="#73deff"/><path d="m23 17.6c-2.2 1.2-4.4 2.5-6.5 3.7l3.9 5.2 4.9-4.9 1.4-1.4-3.7-2.6" fill="#8387f7"/><g fill="#ff639b"><path d="m32.3 17.8c0 0 4.2-7.1 22.2-8.8-18.3-2-23.5 4.6-23.5 4.6s.7 2.7 1.3 4.2"/><path d="m31.1 18.8c0 0 9-6.3 25.1-5.2l-14.7 7.1c0 0 8.4 1.2 19.8 1.9l-11.9 3.9c0 0 4.2 2.6 11.8 5.1l-8 1.2c0 0 6.3.4 8.7 6.2l-5.5-.4c0 0 2.5 5.9 5.5 9.3l-5.2-3c0 0 3 5.1 5.2 10.1l-5.4-1.6c2.5 5.9 4.8 8.4 4.8 8.4-13.5-4-30.2-43-30.2-43"/></g><path d="m29.4 20.4c0 0 11.9-5.4 28.7-1.6l-18.2 3.6c0 0 12.2.6 19.6 5.8h-11.7c0 0 7.3 1.7 10.6 7.1l-6.9-.7c0 0 7.5 3.2 10.5 9.6l-7.3-3.8c0 0 5.8 3.1 5 13.4l-4.2-8.8c0 0 1.6 10.7 4.8 13.2l-4.4-.1c2 2.2 3 3.9 3 3.9h-10.8l-18.7-41.6" fill="#fca9c9"/><path d="m28.2 19c0 0-.6-4.4 2.6-10.9 0 0 4.1 5.1 5.1 14.2l-7.7-3.3" fill="#b2c1c0"/><path d="m10.4 53.9c1.5 1 5-3 9-3.7 15-2.8 12.2-8.6 12.2-8.6 4.1 5.1-2.2 17.1-5.8 20.4h30.4c-.2-40-25.1-43.2-25.1-43.2-.8-7.2-7-10.8-7-10.8-1.9 4.5-1 12.5-1 12.5-3.1 5.4-18.9 20.3-20.7 22.5-1.8 2.2 3.8 8.8 3.8 8.8 1.5.2 3.4 1.5 4.2 2.1" fill="#eff6f7"/><g fill="#b2c1c0"><path d="m15.1 52c.8-.6 2.7-1.8 5.6-2.4 2-.4 3.9-1 5.7-1.8 1.8-.8 3.4-1.9 4.4-3.6.9-1.6.9-3.7.2-5.5 1.1 1.6 1.5 3.9.5 5.9-.9 2-2.8 3.3-4.7 4.1-1.9.9-3.9 1.4-6 1.7-2.4.3-4.7 1.2-5.7 1.6"/><path d="m6.2 45.8c-.5.4-1.8.6-2.2.1-.4-.5.3-1.6.8-1.9.5-.4 1.2-.3 1.6.2.4.6.3 1.3-.2 1.6"/><path d="m15.9 43.1c-.1 2.3-1.3 4.6-3.1 6.2-.9.8-2 1.5-3.1 1.9-1.1.4-2.4.6-3.6.6 2.3-.7 4.4-1.7 6-3.2.8-.7 1.5-1.6 2.2-2.5.6-.9 1.2-1.9 1.6-3"/></g><path d="m16.4 35.2c0 0 .9-.7 1.7-.5 0 0-1.1 1.1-.3 2.9 0 0 .9-2.1 2.5-2.2 0 0-1.1 1.5.3 2.9 0 0 .3-2.1 2.3-2.8 0 0-.3 1.1.7 2.5 0 0-.3-1.9 1.1-2.9 1.4-.9 3-1.5 3.7-3.8 0 0-3.4 3.5-8.1 2.5-1.1-.4-2.9-.7-3.9 1.4" fill="#3e4347"/><g fill="#b2c1c0"><path d="m25.4 21.6c-1.7-2.2-.6-8.4-.4-9.3.2-1 5.8 2.8 4.3 9.5-.1.6-.4 1.2-1 1.2-.6 0-.6-1.7-.3-2.8.3-1.1-.4 0-.6.7-.3.8-.5.2-.4-.6.1-.8-.6.8-.4 1.7.1.9 0 1.1-1.2-.4"/><path d="m5 42.1c-.5.3-.4.5 0 .3.5-.2 2.7-.7 2.9 1.6 0 0 .1 1.1.4 0 .3-1-.3-3.7-3.3-1.9"/></g><g fill="#ff639b"><path d="m23 18c0 0 2.7 11 13.5 16.6 0 0-26.6-5.8-13.5-16.6"/><path d="m31.1 18.8c0 0 6.8 18 20.8 23-13.8-13.2-10.4-20.6-21.4-25.8 0 0 0 1.3.6 2.8"/></g><path d="m31.7 41.6c0 0 6.3 4.1 1.7 20.4h-7.5c0 0 9.3-11.2 5.8-20.4" fill="#b2c1c0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f985.svg b/riot/emojione/svg/1f985.svg new file mode 100644 index 0000000..afba6f9 --- /dev/null +++ b/riot/emojione/svg/1f985.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m52.4 41.1l-37.5-20.3c0 0-9.4 5.5-10 12.5 0 0 2.2-3.1 5.3-2.8-6.2 2.6-7.3 10.7-7.3 10.7 3.2-3.1 5.9-3.2 5.9-3.2-5.7 3.5-6.8 13.4-6.8 13.4 2.3-2.1 4.6-3.4 4.6-3.4-4.8 7-1.7 14-1.7 14h57.1c0 0 1.2-15.5-9.6-20.9" fill="#594640"/><path d="m37.4 25.6c0 0 4-25.6-14.6-22.6 2.9.6 2.9 3.4 2.9 3.4s-7-2.9-13.3 3.8c4.3 1 4.5 4.7 4.5 4.7s-9.2-.6-10 11.9c3.7-2.4 6.5-1.2 6.5-1.2s-6.8 6.1-2 16.7c2.9-3 3.5-3.6 3.5-3.6s-1.5 5.9 3.5 13c6.1-1.2 7.7-3.9 7.7-3.9s.9 6.6 4.9 10.4c5.8-2.7 8.3-7.3 8.3-7.3s1.1 2.9 6.1 5.6c1.9-3.9.4-9.6.4-9.6s1.8 1.9 3.6 5.8l1-1.3-13-25.8" fill="#b2c1c0"/><path d="m53.1 24.4c4.8-12.5-14.4-26.3-30.3-21.4 4.3.3 5.1 2.3 5.1 2.3s-9.2-1.8-15.5 4.9c4.8.1 7.3 2.2 7.3 2.2s-10.9.6-12.2 12.3c3.4-2.8 7.5-3.5 7.5-3.5s-8.8 8-4.1 18.7c2.9-3 6.7-5.5 6.7-5.5s-3.6 7.2 1.4 14.3c5.1.5 7.9-6.2 7.9-6.2s.7 8.8 4.7 12.6c5.8-2.7 7.3-8.2 7.3-8.2s1.4 5.5 6.4 8.2c1.9-3.9.1-10.4.1-10.4s3.3 3 5 6.8c11-14.3-4.3-15.9-1.2-23.5.1 0 3.4-2.4 3.9-3.6" fill="#e8e8e8"/><path d="m41.6 15.6c-1.2-3.9-6.5-4.4-8.7-1.5-1.4.6-5.1-1.4-5.1-1.4 1.9 3.3 3.6 3.6 4.1 3.6 0 .3-.1.6-.1.9 0 5.9 7.9 6.6 9.7 1.9.4.1 3.3.8 5.1-2.5-2.9 1.5-4.6-.4-5-1" fill="#3e4347"/><circle cx="36.9" cy="17.3" r="3" fill="#c7e755"/><circle cx="36.9" cy="17.3" r="1.5" fill="#3e4347"/><path d="m59.4 35.1c0 0-2.3-3.9-4.9-5.4-7.8-4.5-16.3-2.4-17.7-5.5 8.6-2 26.2 1.7 22.6 10.9" fill="#f2b200"/><path d="m50.6 17.3c3.6-.8 9.7 4.6 11.1 9.6 1.5 5.2-2.8 9.6-2.8 9.6s4.9-12.3-22-12.3c7.8-1.6 12.9-.5 12.9-.5s-.8-6 .8-6.4" fill="#ffce31"/><path d="m52.3 22.2c-1 1.4-.3 1.9.7.5 1-1.5.3-1.9-.7-.5" fill="#3e4347"/><g fill="#fff"><path d="m48.7 39.8c-1.3-3.4-5.7-4.8-5.7-4.8s.5 4.6-.6 7.4c-2.5-2.7-5.4-9.6-5.4-9.6s-.2 7.5-4.4 10.7c-2.9-4.7-3.8-12.2-3.8-12.2s-2.4 4.3-6.1 6.2c-1.2-2.9-1.1-6.4-.8-7.7-2.4 4.3.4 8.7.4 8.7s3.6-1.2 5.5-3.8c.4 6.7 4.1 11.1 4.1 11.1s5.3-2.5 6-7.1c1.2 3.9 4.8 7 4.8 7s2.8-3.4 1.8-8.6c2.4.7 4.4 4.1 4.4 4.1s1.8-2.9-.1-5.7c.3.9.6 3-.1 4.3"/><path d="m25.9 22.6c-.8 2.7-.7 5.1-.7 5.1s5.4.3 7.5-2.9c-2.3 1.9-6.5 1.9-6.5 1.9.6-3.6 2.2-7.3 2.2-7.3s-2.9 2.3-6.6 1.8c3.2-1.7 5-4.6 5-4.6s-3.1.6-4.9.1c.8.6 1.8.9 2.8 1-2.6 2.4-5.9 3.9-5.9 3.9s2.1 1.8 7.1 1"/><path d="m14.2 31c.1-1.2 1.2-2.6 1.9-3.1-3.2 1-3.1 4.8-3.1 4.8s2.2-1.5 4.3-2.1c-.3.6-.5 1.3-.5 2 .2-.9 1.8-2.9 1.8-2.9s-2.4-.1-4.4 1.3"/><path d="m25.7 11c-1.8-2-3.7-2.6-6.1-1.4 0 0 3-.2 6.1 1.4"/><path d="m27.5 11.3c-1-2.8-2.3-3.9-5.2-3.7.1 0 2.9.9 5.2 3.7"/><path d="m28.2 10.2c.1-1.8-.6-3.2-2.5-3.5-.1 0 1.6 1.4 2.5 3.5"/><path d="m49.4 13.5c.9 2.4.3 3.5.3 3.5s-.1-4.4-4.6-5.9c2.5 2.4 4.2 5.9 4.4 8.5 1.2-.7 2.2-3.8-.1-6.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f986.svg b/riot/emojione/svg/1f986.svg new file mode 100644 index 0000000..ee80f71 --- /dev/null +++ b/riot/emojione/svg/1f986.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m25.5 13.4c0-4.4-3.3-8-7.3-8-4 0-7.3 3.6-7.3 8 0 2.4 1.7 5 2.6 7.1.8 1.8.6 8 .6 8h8.1c0 0 0-6.2.7-8 .9-2.1 2.6-4.7 2.6-7.1" fill="#83bf4f"/><path d="m55.8 40.3c-2 1.7-3.9 2.3-3.9 2.3 5-5.6 7-12.2 7-12.2-4.1 4.5-6.6 5-6.6 5 2.6-2.7 6.1-11.9 6.1-11.9s-6.3 5.4-11.6 7.9c-26 12.3-24.6-2.9-24.6-2.9h-8.1c0 6.9-7.1 13.6-2.3 24 5.9 12.6 28.9 7.3 37.3 0 10.9-9.4 11-16.9 11-16.9s-2.1 2.8-4.3 4.7" fill="#d3976e"/><path d="m16.5 17.9c0 0 0 1-1.8 2.6-1.4 1.2-2.7 2.4-4.1 2.4-2.1 0-3.4-2.3-.4-3.4 2.9-1.1 4.7-.3 6.3-1.6" fill="#f29a2e"/><path d="m11.9 15.9c-1.4 0-3.9 2.2-6.2.6-.4-.3-1.1-1.4-1.7-.7-.7.8 3.1 8.7 12.5 2 0 .1-.6-1.9-4.6-1.9" fill="#ffd93b"/><path fill="#e8e8e8" d="m14.1 26.5h8.1v2h-8.1z"/><path d="m54.6 20.6c0 0-9 7.6-22.4 9.1-15.3 1.7-11.9 20 1.9 18.5 9.8-1.1 18-11.9 18-11.9l-6.2 1.7c0 0 5.9-4.6 8.2-9.3l-8.8 3.6c0 0 4.7-2.4 9.3-11.7" fill="#89664c"/><g fill="#d3976e"><path d="m31.9 38.8c-.2-1-.8-1.7-1.6-2.2.1-.3.2-.7.1-1.1-.2-1.1-1.2-1.9-2.4-1.7-.2 0-.4.1-.5.2.9.1 1.7.8 1.8 1.7.1.4 0 .8-.1 1.2.7.4 1.2 1.1 1.3 1.9.2.9-.1 1.8-.7 2.4.5.3.9.8 1.1 1.5.2 1-.4 2-1.3 2.3.2 0 .3 0 .4 0 1.1-.2 1.9-1.3 1.7-2.4-.1-.5-.3-.9-.6-1.2.7-.6 1-1.6.8-2.6"/><path d="m37.3 37.1c-.2-1-.8-1.8-1.6-2.2.1-.3.2-.7.1-1.1-.2-1.1-1.2-1.9-2.4-1.7-.2 0-.4.1-.5.2.9.1 1.7.8 1.8 1.7.1.4 0 .9-.2 1.2.7.4 1.2 1.1 1.3 1.9.2.9-.2 1.8-.7 2.4.5.3.9.8 1 1.5.2 1-.4 2-1.3 2.3.2 0 .3 0 .4 0 1.1-.2 1.9-1.3 1.7-2.4-.1-.5-.3-.9-.6-1.1.8-.7 1.2-1.7 1-2.7"/><path d="m42.9 35.2c-.2-1-.9-1.7-1.8-2 .1-.4.1-.7 0-1.1-.3-1.1-1.4-1.7-2.5-1.4-.2 0-.4.1-.5.2.9 0 1.7.6 2 1.5.1.4.1.8 0 1.2.7.3 1.3.9 1.5 1.8.2.9 0 1.8-.5 2.4.6.2 1 .7 1.2 1.4.2 1-.2 2-1.1 2.4.2 0 .3 0 .4-.1 1.1-.3 1.7-1.4 1.5-2.5-.1-.5-.4-.8-.7-1.1.5-.7.8-1.7.5-2.7"/></g><path d="m16.1 32.2c-1.3 0-2.2.4-2.9 1-1.7 5.4-5.1 11.2-1.4 19.2 1.8 3.8 5.1 6 9.1 6.9-8.7-2.7 2.1-27.1-4.8-27.1" fill="#fed0ac"/><g fill="#83bf4f"><path d="m24 8.6c0 0 1.5 2.5 4 .8 0 0-1.3 3.2-4.9 2.1l.9-2.9"/><path d="m25.3 11.6c0 0 1.8.5 3.7-.9 0 0-1.1 2.9-3.7 3.4 0 .1-2.7-2.8 0-2.5"/><path d="m25.3 14.2c0 0 1.6.9 3.2-.5 0 0-1.2 3.1-4.4 2.5 0 0-.6-2.5 1.2-2"/><path d="m16.5 6.1c0 0-.1-1.2-1.5-2.2 0 0 1.8-.1 3.2 2.2 0 0-.5.7-1.7 0"/><path d="m19.5 6.1c0 0 .1-1.2 1.5-2.2 0 0-1.8-.1-3.2 2.2-.1 0 .5.7 1.7 0"/><path d="m17.4 6.7c0 0-.5-1.8 1.2-4.7 0 0-.4 3.6.3 5.3 0 0-.8-.1-1.5-.6"/></g><path d="m22.4 40.8c.9 4.4 5.2 8.2 11.7 7.4 9.8-1.1 18-11.9 18-11.9s-8.9 9.9-19.2 9.9c-7.7.1-9.9-3.2-10.5-5.4" fill="#594640"/><path d="m13.7 13.4c0-1.3 1-2.6 2.3-2.6 1.3 0 2.3 1.4 2.3 2.6s-1 1.8-2.3 1.8c-1.3 0-2.3-.5-2.3-1.8" fill="#3e4347"/><path d="m57.7 53.4c-2.4 0-2.7-1.4-4.3-1.4s-1.9 1.4-4.3 1.4c-2.4 0-2.7-1.4-4.3-1.4s-1.9 1.4-4.3 1.4c-2.4 0-2.7-1.4-4.3-1.4s-1.9 1.4-4.3 1.4-2.6-1.4-4.2-1.4c-1.6 0-1.9 1.4-4.3 1.4-2.4 0-2.7-1.4-4.3-1.4s-1.9 1.4-4.3 1.4-2.7-1.4-4.2-1.4-1.9 1.4-4.3 1.4c-2.4 0-4.3-1.4-4.3-1.4v10h60v-10c0 0-1.9 1.4-4.3 1.4" fill="#75d6ff"/><g fill="#42ade2"><path d="m29.6 57.9c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/><path d="m52.9 57.9c-6.8.9-11.5-4.6-18.5-1.5 5.5-.4 13.6 3.9 18.5 1.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f987.svg b/riot/emojione/svg/1f987.svg new file mode 100644 index 0000000..77c26c9 --- /dev/null +++ b/riot/emojione/svg/1f987.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a8e91"><path d="m28.2 18.3c-5.6 2.5-8.3-6.3-8.3-6.3l-1.7.2c-4.3 3.4-6.5-2.5-6.5-2.5l-1.6.3c-2.8 5.2-6.3.2-6.3.2 1.7 10.2 11.4 20.3 11.4 20.3 1.7-3.9 7.3 0 11.8-2.6l1.2-9.6"/><path d="m35.8 18.3c5.6 2.5 8.3-6.3 8.3-6.3l1.7.2c4.3 3.4 6.5-2.5 6.5-2.5l1.7.4c2.8 5.2 6.3.2 6.3.2-1.7 10.2-11.4 20.3-11.4 20.3-1.7-3.9-7.3 0-11.8-2.6l-1.3-9.7"/></g><path d="m60.3 10.2c-2.4 7.2-5.9 13.1-10.9 18.1-.5-.5-1.2-.6-2.2-.6 2.4-3.8 5.3-9.8 6.7-17.6.4-1.9-1.3-2.6-1.7-.4-1.2 6.9-3.5 12.8-7 18.1-.9.1-2 .1-3 .1 1.6-4 3.2-9.3 3.6-15.7.1-1.9-1.5-2.4-1.7-.2-.4 5.7-1.5 10.9-3.5 15.8-.7-.1-1.3-.2-2-.5 1-1.9 1.8-4.2 1.9-5.3 0 0-.2.4-.8.8.2-.7.3-2 .2-3.8 0 0-.2.4-.6.8.1-.7.1-1.7-.1-3l-.7 1.2c-.4-1.4-.9-2.8-1.4-4v2.9c0 0-1.4-6.8-.5-12.4.9.4 2.2-.2 2.2-1.6 0-1.4-2.9-.6-2.9-.6s-.9 2.7-1.3 7.4c-2.2-4.9-3-4.9-5.1 0-.3-4.7-1.3-7.4-1.3-7.4s-2.9-.8-2.9.6c0 1.5 1.3 2 2.2 1.6.9 5.6-.5 12.4-.5 12.4v-2.9c-.5 1.2-1 2.6-1.4 4l-.6-1.1c-.2 1.3-.2 2.3-.1 3-.4-.5-.6-.8-.6-.8-.1 1.8 0 3 .2 3.8-.6-.4-.8-.8-.8-.8 0 1 .8 3.4 1.9 5.3-.6.2-1.3.4-2 .5-2-4.9-3.1-10.1-3.5-15.8-.2-2.2-1.8-1.8-1.7.2.4 6.4 2 11.7 3.6 15.7-1.1 0-2.1 0-3-.1-3.5-5.3-5.8-11.2-7-18.1-.4-2.2-2-1.5-1.7.4 1.4 7.8 4.4 13.8 6.7 17.6-1 0-1.7.2-2.2.6-5-4.9-8.4-10.8-10.9-18.1-.9-2.2-2.4-1.2-1.8.6 3.4 10.3 9.4 16.7 11.9 19.1 0 .9.7 1.6 1.6 2.2 0 0-2.7-3.7 6.7-2.8 1.6.1 2.9-.1 4-.6 0 .1.1.1.1.2-1.1 1.8-.8 4.6.7 7.1-6.2 3.7-4.6 11.9-4.6 11.9 5.1-1 7.2-5.4 8.1-8.9 1 .3 1.6.3 2.7 0 .9 3.5 3 7.9 8.1 8.9 0 0 1.7-8.2-4.6-11.9 1.6-2.5 1.9-5.4.7-7.1 0-.1.1-.1.1-.2 1.1.5 2.4.8 4 .6 9.4-.9 6.7 2.8 6.7 2.8.9-.5 1.6-1.3 1.6-2.2 2.6-2.4 8.5-8.8 11.9-19.1.7-1.8-.8-2.8-1.5-.7" fill="#3e4347"/><g fill="#fff"><path d="m34.9 32.6c0 0 .8-1.1-.2-2.7 0 0 .3 1.6-.4 2.4l.6.3"/><path d="m29.1 32.6c0 0-.7-1.1.2-2.7 0 0-.3 1.6.4 2.4l-.6.3"/></g><g fill="#b2c1c0"><path d="m29.5 32.6c.5-.4 1.5-1.1 2.5-1.1 1 0 2 .7 2.5 1.1.9.7 2.3.1 1.3.1-1.7 0-1.7-2.3-3.9-2.3s-2.2 2.3-3.9 2.3c-.9 0 .6.6 1.5-.1"/><path d="m33 33.5c.2-.2-.1-.9-.3-1-.1 0-.2 0-.3 0-.2.2-.2.9 0 1 .1.1.5.1.6 0"/><path d="m31 33.5c.1.1.5.1.6 0 .2-.2.2-.9 0-1-.1 0-.2 0-.3 0-.2.1-.5.8-.3 1"/></g><g fill="#fff"><path d="m34.6 34.5c-.1 1.1-1.2 1.1-1.3 0-.3-.1-.5 0-.5.4 0 .7.5 1.2 1.1 1.2s1.1-.5 1.1-1.2c0-.5-.1-.5-.4-.4"/><path d="m30.8 34.5c-.1 1.1-1.2 1.1-1.3 0-.3-.1-.5 0-.5.4 0 .7.5 1.2 1.1 1.2.6 0 1.1-.5 1.1-1.2 0-.5-.2-.5-.4-.4"/></g><g fill="#ffc7ce"><path d="m27.7 36.9c-4 3.6-3.6 8.3-3.6 8.3 3.4-1.8 4.7-5.1 5.1-6.8-.5-.4-1-.9-1.5-1.5"/><path d="m36.3 36.9c-.5.6-1 1.1-1.5 1.5.5 1.7 1.7 5 5.1 6.8 0 0 .4-4.7-3.6-8.3"/></g><path d="m28.2 23c0 .7.3.9.3.9.3-1.1 1.6-2 1.6-2-.3.6 0 1.2 0 1.2.5-.7 1.8-1.6 1.8-1.6s1.3.9 1.8 1.6c0 0 .3-.6 0-1.2 0 0 1.3.9 1.6 2 0 0 .3-.3.3-.9l1.3 1.6c-.4-1.8-1.3-2.8-2.3-3.3 0 0 .3.8.4 1.2 0 0-1.1-1.3-2.4-1.8 0 0 .3.6.4 1.3l-1-1.3-1.2 1.3c.1-.6.4-1.3.4-1.3-1.3.5-2.4 1.8-2.4 1.8.1-.4.4-1.2.4-1.2-1 .5-1.9 1.5-2.3 3.3l1.3-1.6" fill="#8a8e91"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f988.svg b/riot/emojione/svg/1f988.svg new file mode 100644 index 0000000..c1fffcd --- /dev/null +++ b/riot/emojione/svg/1f988.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M44.8,7c-16.1,4.3-20.2,18.5-20.2,18.5L41,28.9C39.6,22.3,44.8,7,44.8,7z" fill="#b2c1c0"/><path d="m28.5 21.3l13.1-1.8c0 0 .2-1.1.4-1.9-8.8.1-13.5 3.7-13.5 3.7" fill="#879191"/><path d="m53.1 9.4c0 0 3 3 3.8 5.9 4.7 3.2 5.1 7.9 5.1 11 0 10.9-17.2 21.4-17.2 21.4l-42.8-9.2c0-4.3 19.2-19 39-19 6.9 0 16 4.9 18.1 2.6 1.2-1.3-1.3-5.3-2.5-5.3 0 0 .1 2.6-1.2 4.2.5-5.9-2.3-11.6-2.3-11.6" fill="#b2c1c0"/><path d="m19.7 55.2c0 0 0-17 16.6-23.8 0 0 9.5 19.2-16.6 23.8" fill="#ff717f"/><path d="m25.5 38.3c0 0-3.5 10.1-3.6 14.5 0 0 16.5-5.1 12.5-20.6l-8.9 6.1" fill="#ed4c5c"/><path d="m29.6 35.5c0 0-3.5 6-4.1 11.5-.6 5.5 8.5-2.8 9.3-13.6l-5.2 2.1" opacity=".5" fill="#3e4347"/><path d="m15.9 48.2l3.3 2.1-.6-3.9 3 2.2-.6-4 3.5 2.6-1.2-4.9 3.8 3.2-1-5.3 3.9 3.2-1.3-5.2 3.7 2.6-1.2-4.8 3.4 3.3-1.1-5.4c0 0-8.4 5.3-17.6 14.3" fill="#fff"/><g fill="#b2c1c0"><path d="m19.2 50.3l-3.3-2.1 1.2-1.1z"/><path d="m18.5 46.4l3 2.2-2-3.8z"/><path d="m20.9 44.6l3.5 2.6-2.5-4.5z"/><path d="m23.3 42.3l3.8 3.2-2.5-4.6z"/><path d="m26 40.2l3.9 3.2-2.8-5z"/><path d="m28.6 38.2l3.7 2.6-2.7-4.2z"/><path d="m31.2 36l3.4 3.3-2.3-4.6z"/></g><g fill="#fff"><path d="m35.4 40.9l-2.2-1 1.3 3.8c.5-1.1.8-2.1.9-2.8"/><path d="m34.3 44.1l-3.2-1.3 1.4 4c.8-1 1.3-1.9 1.8-2.7"/><path d="m32.1 47.2l-3.2-1.8.9 3.9c.8-.7 1.6-1.4 2.3-2.1"/><path d="m29.4 49.6l-3.3-2.3.8 3.9c1-.5 1.8-1 2.5-1.6"/><path d="m26.6 51.5l-3.4-2.6c0 0 .5 3.2.6 4 1.1-.4 2-.9 2.8-1.4"/><path d="m24 52.9l-3.5-2.8c.2 1.6.7 4 .7 4 1-.4 1.9-.8 2.8-1.2"/></g><g fill="#b2c1c0"><path d="m35 42.4l-1.9-2.6 1.3 3.8c.3-.3.5-.8.6-1.2"/><path d="m33.3 45.6l-2.2-2.9 1.4 4c.3-.3.6-.7.8-1.1"/><path d="m30.8 48.5l-2-3.1.9 3.9c.4-.2.8-.5 1.1-.8"/><path d="m28.1 50.5l-2-3.2.8 3.9c.5-.2.9-.4 1.2-.7"/><path d="m25.1 52.4l-1.8-3.4.6 4.1c.4-.3.8-.5 1.2-.7"/><path d="m22.3 53.7l-1.7-3.6.7 4c.3-.1.6-.3 1-.4"/><path d="m15.7 48.6c0 0 23.6-15.7 21.8-18.3l-13.5 5.4-8.3 12.9"/></g><circle cx="24.7" cy="29.6" r="3.3" fill="#3e4347"/><path d="m15.9 32.1c0 0 4 .8 6-2.5 2-3.3 4.8-3.5 8.6-3.7 0 0-6.1-1.5-9.1.8-3 2.3-2.8 4.7-5.5 5.4" fill="#76807f"/><g fill="#3e4347"><path d="m44 28.6c0 0 1.4-.9 1.6-1.9.3-1.1 1.2-3.2-.1-4.4 0 0 1.8 1 1.1 3.6-.6 2.5-1.5 2.5-2.6 2.7" opacity=".5"/><path d="m45.7 29.4c0 0 1.4-.7 1.8-1.8.4-1 1.4-3.1.3-4.4 0 0 1.7 1.1.8 3.6-.9 2.6-1.8 2.5-2.9 2.6" opacity=".5"/><path d="m47.9 30.2c0 0 1.4-.8 1.7-1.8.3-1 1.4-3.1.1-4.4 0 0 1.7 1.1.9 3.6-.7 2.5-1.6 2.5-2.7 2.6" opacity=".5"/></g><path d="m51.3 38.3c0 0 3.9-.8 4.8 0l-1.5 1.5-3.3-1.5" fill="#879191"/><path d="M51.3,38.3C59.8,38.3,62,57,62,57s-8.1-11-18.4-11L51.3,38.3z" fill="#b2c1c0"/><path d="M2,38.5c0-1.1,11.9-3,20.3-0.2s10.6-12.4,14.8-11.2c4.6,1.3,1,15.6,10.4,19.4c-8.7,7.8-21.6,12.6-27.7,8.7 + c23.9-7.9,16.9-22.4,16.9-22.4S26.6,45,15.9,48.7C12,50.1,2,42,2,38.5z" fill="#e8e8e8"/><path d="m14.9 39.5c0 0 1.6-1 3 0 .6.4-.1 1.3-1.3 1.3-1.1-.1-.7-1-1.7-1.3" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f989.svg b/riot/emojione/svg/1f989.svg new file mode 100644 index 0000000..bde42fe --- /dev/null +++ b/riot/emojione/svg/1f989.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c7e755"><ellipse cx="32" cy="33.5" rx="22.3" ry="25.9"/><path d="m52 43.5h-40l20-27.4z"/></g><g fill="#a3bf2c"><path d="m47.1 51l-3.8 4.2-3.8-4.2 3.8-4.3z"/><path d="m32 51l-3.8 4.2-3.7-4.2 3.7-4.3z"/><path d="m24.5 51l-3.8 4.2-3.8-4.2 3.8-4.3z"/><path d="m39.5 51l-3.7 4.2-3.8-4.2 3.8-4.3z"/></g><g fill="#c7e755"><path d="m43.3 46.7l-3.8 4.3-3.7-4.3 3.7-4.3z"/><path d="m50.8 46.7l-3.7 4.3-3.8-4.3 3.8-4.3z"/><path d="m28.2 46.7l-3.7 4.3-3.8-4.3 3.8-4.3z"/><path d="m20.7 46.7l-3.8 4.3-3.7-4.3 3.7-4.3z"/><path d="M35.8 46.7 32 51 28.2 46.7 32 42.4z"/></g><g fill="#a3bf2c"><path d="m47.1 42.4l-3.8 4.3-3.8-4.3 3.8-4.2z"/><path d="m32 42.4l-3.8 4.3-3.7-4.3 3.7-4.2z"/><path d="m24.5 42.4l-3.8 4.3-3.8-4.3 3.8-4.2z"/><path d="m39.5 42.4l-3.7 4.3-3.8-4.3 3.8-4.2z"/></g><g fill="#c28fef"><path d="M7,30c0,0-1.5,17,11.1,24.5c4.1,2.4-2.5-3.6-0.8-18.4L7,30z"/><path d="m57 30c0 0 1.5 17-11.1 24.5-4.1 2.4 2.5-3.6.8-18.4l10.3-6.1"/></g><g fill="#9450e0"><path d="m32 2c-7.1 7-15 .9-15 .9 4.9 8.8 15 10.4 15 10.4s10.1-1.6 15-10.4c0 0-7.9 6.1-15-.9"/><path d="M18.8,39.4C9.5,39.4,2,31.9,2,22.6S9.5,5.9,18.8,5.9s16.8,7.5,16.8,16.8S28,39.4,18.8,39.4z"/><path d="M45.2,39.4c-9.2,0-16.8-7.5-16.8-16.8S36,5.9,45.2,5.9S62,13.4,62,22.6S54.5,39.4,45.2,39.4z"/></g><circle cx="45.1" cy="22.6" r="13.1" fill="#c7e755"/><circle cx="45.1" cy="22.6" r="9.4" fill="#fff"/><circle cx="45.1" cy="22.6" r="5.6" fill="#3e4347"/><g fill="#c7e755"><path d="m32.5 9.5c0 3.1-.5 5.6-.5 5.6s-.5-2.5-.5-5.6.5-5.6.5-5.6.5 2.5.5 5.6"/><path d="m29.7 10.3c1 2.1 1.3 3.9 1.3 3.9s-1.4-1.5-2.4-3.6c-1-2.1-1.3-3.9-1.3-3.9s1.4 1.5 2.4 3.6"/><path d="m34.3 10.3c-1 2.1-1.3 3.9-1.3 3.9s1.4-1.5 2.4-3.6c1-2.1 1.3-3.9 1.3-3.9s-1.4 1.5-2.4 3.6"/><circle cx="18.9" cy="22.6" r="13.1"/></g><circle cx="18.9" cy="22.6" r="9.4" fill="#fff"/><circle cx="18.9" cy="22.6" r="5.6" fill="#3e4347"/><path d="m28.2 31.1c0 3.2 1.5 6.1 3.8 8 2.3-1.9 3.8-4.8 3.8-8s-1.5-6.1-3.8-8c-2.3 1.9-3.8 4.7-3.8 8" fill="#ffce31"/><g fill="#f2b200"><path d="m32 23.1v16c2.3-1.9 3.8-4.8 3.8-8s-1.5-6.1-3.8-8"/><path d="m18.8 54.9c0 2.5-2 6.1-2 6.1s-2-3.7-2-6.1c0-2.5 4-2.5 4 0"/><path d="m25.4 54.9c0 2.5-2 6.1-2 6.1s-2-3.7-2-6.1c0-2.5 4-2.5 4 0"/><path d="m22.1 54.3c0 3.1-2 7.7-2 7.7s-2-4.6-2-7.7 4-3.1 4 0"/><path d="m42.6 54.9c0 2.5-2 6.1-2 6.1s-2-3.7-2-6.1c0-2.5 4-2.5 4 0"/><path d="m49.2 54.9c0 2.5-2 6.1-2 6.1s-2-3.7-2-6.1c0-2.5 4-2.5 4 0"/><path d="m45.9 54.3c0 3.1-2 7.7-2 7.7s-2-4.6-2-7.7 4-3.1 4 0"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f98a.svg b/riot/emojione/svg/1f98a.svg new file mode 100644 index 0000000..28f9072 --- /dev/null +++ b/riot/emojione/svg/1f98a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55.9 32.1l-22.7-14.9c0 0 12.9-17.4 19.4-14.9 3.1 1.1 5.4 25.1 3.3 29.8" fill="#3e4347"/><path d="m54.9 33.9l-9-4.1c0 0-5.3-14 6.1-24.1 2.4 2 5.1 25 2.9 28.2" fill="#fff"/><path d="m8.1 32.1l22.6-14.9c0 0-12.9-17.4-19.4-14.9-3 1.1-5.3 25.1-3.2 29.8" fill="#3e4347"/><path d="m9.1 33.9l9-4.1c0 0 5.3-14-6.1-24.1-2.4 2-5.1 25-2.9 28.2" fill="#fff"/><path d="M32,13C18.9,13,2,33.6,2,45.4C20.5,45.4,19.7,62,32,62s11.5-16.6,30-16.6C62,33.6,45.1,13,32,13z" fill="#ff8736"/><g fill="#fff"><path d="M32,56.2c0,5.1,9.6,4.2,9.5-2.9c6.7-9.4,19.9-8.7,19.9-8.7C39.6,32.4,32,56.2,32,56.2z"/><path d="M32,56.2c0,5.1-9.6,4.2-9.5-2.9C15.8,44,2.6,44.7,2.6,44.7C24.4,32.4,32,56.2,32,56.2z"/></g><g fill="#ff8736"><path d="m53.4 18.5c-4 .7-4.9 6.3-4.9 6.3l6 5.3c-2.3-5.9-1.1-11.6-1.1-11.6"/><path d="m51.1 13.5c-4.4 3.9-5.1 8.7-5.1 8.7l6 5.3c-2.4-5.8-.9-14-.9-14"/><path d="m10.6 18.5c4 .7 4.9 6.3 4.9 6.3l-6 5.3c2.3-5.9 1.1-11.6 1.1-11.6"/><path d="m12.9 13.5c4.4 3.9 5.1 8.7 5.1 8.7l-6 5.3c2.4-5.8.9-14 .9-14"/></g><path d="m52.8 31.1c-5.7-1.8-10.9-3.4-13.8.9-2.4 3.7.7 9.4.7 9.4 11.2 1.2 13.1-10.3 13.1-10.3" fill="#3e4347"/><ellipse cx="43" cy="36.3" rx="4.2" ry="4.1" fill="#d5ff83"/><g fill="#3e4347"><ellipse cx="43" cy="36.3" rx="2.7" ry="2.7"/><path d="m11.2 31.1c5.7-1.8 10.9-3.4 13.7.9 2.4 3.7-.7 9.4-.7 9.4-11.1 1.2-13-10.3-13-10.3"/></g><ellipse cx="21" cy="36.3" rx="4.2" ry="4.1" fill="#d5ff83"/><g fill="#3e4347"><ellipse cx="21" cy="36.3" rx="2.7" ry="2.7"/><path d="m41.2 47.9c-.7-2.3-1.8-4.4-3-6.5 1.1 2.1 2 4.3 2.5 6.6.5 2.3.7 4.7 0 6.8-.4 1-1 2-1.8 2.6-.8.6-1.8 1-2.7 1-.9 0-1.9-.3-2.5-1-.6-.7-.9-1.6-.8-2.6l-.9.2h-.9c0 1-.2 1.9-.8 2.6-.6.7-1.5 1-2.5 1-.9 0-1.9-.4-2.7-1-.8-.6-1.4-1.6-1.8-2.6-.8-2.1-.6-4.6 0-6.8.5-2.3 1.5-4.5 2.5-6.6-1.2 2-2.3 4.1-3 6.5-.7 2.3-1.1 4.8-.4 7.3.3 1.2 1 2.4 1.9 3.3.9.9 2.1 1.4 3.4 1.5 1.2.1 2.6-.2 3.7-1.2.3-.2.5-.5.7-.8.2.3.4.6.7.8 1 1 2.4 1.3 3.7 1.2 1.3-.1 2.4-.7 3.4-1.5.9-.9 1.6-2 1.9-3.3.5-2.6.1-5.2-.6-7.5"/><path d="m37.6 50.3c-1.1-1.1-4.5-1.2-5.6-1.2-1 0-4.5.1-5.6 1.2-.8.8-.2 2.8 1.9 4.5 1.3 1.1 2.6 1.4 3.6 1.4 1 0 2.3-.3 3.6-1.4 2.3-1.7 2.9-3.7 2.1-4.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f98b.svg b/riot/emojione/svg/1f98b.svg new file mode 100644 index 0000000..794e94d --- /dev/null +++ b/riot/emojione/svg/1f98b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m33.6 40.8c0 0 1.5-4.2 14.2 3.1 12.7 7.3 4 9.2.9 14-3.2 5-16.7 9.2-16.7-11.7v-5.5h1.6z" fill="#e84d88"/><g fill="#9450e0"><path d="m56.6 10.3c9.5 0 4.3 10.8 1 18-3.4 7.2 1.6 12.8-1.5 15.5-4.4 3.9-15-6.2-22.2-3.6v-16.3c0 0 9.8-13.6 22.7-13.6"/><path d="m7.4 10.3c-9.5 0-4.3 10.8-1 18 3.4 7.2-1.6 12.8 1.5 15.5 4.4 3.9 15-6.2 22.2-3.6v-16.3c0 0-9.8-13.6-22.7-13.6"/></g><path d="m30.4 40.8c0 0-1.5-4.2-14.2 3.1-12.7 7.3-4 9.2-.9 14 3.2 5 16.7 9.2 16.7-11.7v-5.5h-1.6z" fill="#e84d88"/><g fill="#ffce31"><path d="m32 27.5c0 0-10.6-13.8-18.2-13.8-7.4 0 5.2 6 1.7 9.4-3.9 3.8-.5 5.5 1.7 7.7 2.8 2.7-10.3 12.7 8.5 7 4.3-1.3 3.7.6 6.3.6v-10.9"/><path d="m32 27.5c0 0 10.6-13.8 18.2-13.8 7.4 0-5.2 6-1.7 9.4 3.9 3.8.5 5.5-1.7 7.7-2.8 2.7 10.3 12.7-8.5 7-4.3-1.3-3.7.6-6.3.6v-10.9"/></g><path d="m8.9 15.9c0 .7-.7 1.2-1.4 1.2-.8 0-1.3-.6-1.3-1.3 0-.7.7-1.2 1.4-1.2.8 0 1.4.6 1.3 1.3" fill="#6adbc6"/><path d="m13 20.7c-.1 1-1 1.8-2.1 1.7-1.1-.1-1.9-.9-1.9-1.9.1-1 1-1.8 2.1-1.7 1.1.1 2 .9 1.9 1.9" fill="#ffce31"/><path d="m11.6 26.1c0 .6-.6 1.1-1.3 1.1-.7 0-1.2-.6-1.2-1.2 0-.6.6-1.1 1.3-1.1.7 0 1.3.6 1.2 1.2" fill="#6adbc6"/><path d="m14.7 31.3c0 1.2-.9 2.1-2.2 2.2-1.3 0-2.3-.9-2.4-2 0-1.2.9-2.1 2.2-2.2 1.3 0 2.3.9 2.4 2" fill="#ffce31"/><g fill="#6adbc6"><path d="m13.4 37.4c0 .7-.6 1.3-1.3 1.3-.8 0-1.4-.5-1.4-1.2 0-.7.6-1.3 1.3-1.3.7 0 1.4.5 1.4 1.2"/><path d="m55.1 15.9c0 .7.7 1.2 1.4 1.2.8 0 1.3-.6 1.3-1.3 0-.7-.7-1.2-1.4-1.2-.8 0-1.4.6-1.3 1.3"/></g><path d="m51 20.7c.1 1 1 1.8 2.1 1.7 1.1-.1 1.9-.9 1.9-1.9-.1-1-1-1.8-2.1-1.7-1.1.1-2 .9-1.9 1.9" fill="#ffce31"/><path d="m52.4 26.1c0 .6.6 1.1 1.3 1.1.7 0 1.2-.6 1.2-1.2 0-.6-.6-1.1-1.3-1.1-.7 0-1.3.6-1.2 1.2" fill="#6adbc6"/><path d="m49.3 31.3c0 1.2.9 2.1 2.2 2.2 1.3 0 2.3-.9 2.4-2 0-1.2-.9-2.1-2.2-2.2-1.3 0-2.3.9-2.4 2" fill="#ffce31"/><path d="m50.6 37.4c0 .7.6 1.3 1.3 1.3.8 0 1.4-.5 1.4-1.2 0-.7-.6-1.3-1.3-1.3-.7 0-1.4.5-1.4 1.2" fill="#6adbc6"/><g fill="#e84d88"><path d="m32.6 29.1c0 0-7.4-7.4-14.9-7.4 0 0 8 .7 14.9 9.1v-1.7"/><path d="m33 32.2c0 0-9.8-.7-15.7 4.5 0 0 6.8-5.1 16.6-3.2l-.9-1.3"/><path d="m33.1 30.6c0 0-9.1-4.3-16.1-1.7 0 0 7.8-2.2 16.6 3.2l-.5-1.5"/><path d="m31.4 29.1c0 0 7.4-7.4 14.9-7.4 0 0-8 .7-14.9 9.1v-1.7"/><path d="m31 32.2c0 0 9.8-.7 15.7 4.5 0 0-6.8-5.1-16.6-3.2l.9-1.3"/><path d="m30.9 30.6c0 0 9.1-4.3 16.1-1.7 0 0-7.8-2.2-16.6 3.2l.5-1.5"/></g><g fill="#ffce31"><path d="m30.4 39.6c0 0-14.5 3.7-14.5 8.6 0 4.6 4 3.2 5 6.3.9 3.1 11.1 7.4 11.1-13.7l-1.6-1.2"/><ellipse cx="13.4" cy="50.8" rx="1.1" ry=".9"/></g><ellipse cx="17.3" cy="55.1" rx="2.2" ry="1.9" fill="#6adbc6"/><g fill="#ffce31"><ellipse cx="21.7" cy="59.1" rx="1.4" ry="1.2"/><path d="m33.6 39.6c0 0 14.5 3.7 14.5 8.6 0 4.6-4 3.2-5 6.3-.9 3.1-11.1 7.4-11.1-13.7l1.6-1.2"/><ellipse cx="50.6" cy="50.8" rx="1.1" ry=".9"/></g><ellipse cx="46.7" cy="55.1" rx="2.2" ry="1.9" fill="#6adbc6"/><ellipse cx="42.3" cy="59.1" rx="1.4" ry="1.2" fill="#ffce31"/><g fill="#e84d88"><path d="m33.4 41.3c-4.1 1.1-10.9 3.5-15 7.6 0 0 5.3-4.7 15-6.8v-.8"/><path d="m33.4 43.8c-3.4 2.2-7.5 5.6-9.4 9.6 0 0 2.7-4.6 9.4-8.8v-.8"/><path d="m30.6 41.3c4.1 1.1 10.9 3.5 15 7.6 0 0-5.3-4.7-15-6.8 0 0 0-.8 0-.8"/><path d="m30.6 43.8c3.4 2.2 7.5 5.6 9.4 9.6 0 0-2.7-4.6-9.4-8.8 0 0 0-.8 0-.8"/></g><g fill="#594640"><path d="m35.8 36.1c0 7.1-1.7 12.9-3.8 12.9s-3.8-5.8-3.8-12.9c0-7.1 0-12.9 3.8-12.9s3.8 5.8 3.8 12.9"/><path d="m35.8 23.7c0 2.3-1.7.6-3.8.6s-3.8 1.7-3.8-.6c0-2.3 1.7-4 3.8-4s3.8 1.7 3.8 4"/><path d="m31.9 21c-.5-1-1-2.3-1.5-3.8-.1-.4-.2-.7-.3-1.1-.1-.4-.1-.8-.2-1.2 0-.4-.1-.8 0-1.2 0-.4.1-.9.1-1.3.3-1.9.7-3.9.6-6-.1-1.1-.3-2.3-1.2-3.1-.4-.4-.9-.7-1.5-.9-.5-.3-1.1-.4-1.6-.4-1.1 0-2.1.1-3 .5-.9.4-1.8 1.1-2.1 1.9-.9 1.8-.3 3.6.6 4.6.5.5 1.1.8 1.7.8.6 0 1-.1 1.4-.3.4-.2.6-.4.7-.5s.2-.2.2-.2-.1.1-.3.2-.4.3-.8.4c-.3.2-.8.3-1.3.2-.4 0-1-.2-1.4-.7-.8-1-1.2-2.7-.4-4.2.4-.7 1.1-1.2 1.9-1.6.8-.3 1.8-.4 2.7-.3.9.1 1.9.4 2.4 1.1.6.6.8 1.5.8 2.5 0 1.9-.5 3.9-.9 5.7-.1.5-.2 1-.2 1.5-.1.5 0 1 0 1.5 0 .5.1.9.2 1.4.1.4.2.9.3 1.3.4 1.6 1 3 1.4 4 .3.7.9 1 1.4.8.4-.2.5-.9.3-1.6"/><path d="m32.1 21c.5-1 1-2.3 1.5-3.8.1-.4.2-.7.3-1.1.1-.4.1-.8.2-1.2 0-.4.1-.8 0-1.2 0-.4-.1-.9-.1-1.3-.3-1.9-.7-3.9-.6-6 .1-1.1.3-2.3 1.2-3.1.4-.4.9-.7 1.5-.9.5-.3 1.1-.4 1.6-.4 1.1 0 2.1.1 3 .5.9.4 1.8 1.1 2.1 1.9.9 1.8.3 3.6-.6 4.6-.5.5-1.1.8-1.7.8-.6 0-1-.1-1.4-.3-.4-.2-.6-.4-.7-.5s-.2-.2-.2-.2.1.1.3.2.4.3.8.4c.3.2.8.3 1.3.2.4 0 1-.2 1.4-.7.8-1 1.2-2.7.4-4.2-.4-.7-1.1-1.2-1.9-1.6-.8-.3-1.8-.4-2.7-.3-.9.1-1.9.4-2.4 1.1-.6.6-.8 1.5-.8 2.5 0 1.9.5 3.9.8 5.7.1.5.2 1 .2 1.5.1.5 0 1 0 1.5 0 .5-.1.9-.2 1.4-.1.4-.2.9-.3 1.3-.4 1.6-1 3-1.4 4-.3.7-.9 1-1.4.8-.3-.2-.4-.9-.2-1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f98c.svg b/riot/emojione/svg/1f98c.svg new file mode 100644 index 0000000..a70a641 --- /dev/null +++ b/riot/emojione/svg/1f98c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#594640"><path d="m21.9 21.9c-.6-1.6-1.1-3-1.4-4.2 10.1-5.4 6.9-10.4 4.5-6.7-1.6 2.6-4 3.8-5 4.2-.4-3.3.3-5.5.6-7.9.6-3.9-3.1-5.8-3.6-4.3-.8 2.3 2.5.9 1.5 6.4-.8 4.2-.1 7.8.6 10-1.5-1.2-3.1-2.4-4.9-3.6-1.2-2.3-2.7-7 .7-12.2 1-1.6-.3-1.7-.8-1.6-1.7.5-4.2 6.6-2.8 11.9-7-5-4.5-11.9-6.2-11.9-2.1 0-1 7.7 2 11.5 1 1.2 2.9 2.6 5.1 4-1.8.8-5.1 1.4-8.4-1.5-.4-.2-1.8-.9-1.8.9 0 1.8 5.9 6.6 12.5 2.3 2.8 1.9 5.6 4 6.8 6.2l5.8 5.2c-.6-3.2-2.5-6-5.2-8.7"/><path d="m42.1 21.9c.7-1.6 1.1-3 1.4-4.2-10.1-5.4-6.9-10.4-4.5-6.7 1.6 2.6 4 3.8 5 4.2.4-3.3-.3-5.5-.6-7.9-.6-3.9 3.1-5.8 3.6-4.3.8 2.3-2.5.9-1.5 6.4.8 4.2.1 7.8-.6 10 1.5-1.2 3.1-2.4 4.9-3.6 1.2-2.3 2.7-7-.7-12.2-1-1.6.3-1.7.8-1.6 1.7.5 4.2 6.6 2.8 11.9 7-5 4.5-11.9 6.2-11.9 2.1 0 1 7.7-2 11.5-1 1.2-2.9 2.6-5.1 4 1.8.8 5.1 1.4 8.4-1.5.4-.3 1.8-1.1 1.8.7 0 1.8-5.9 6.6-12.5 2.3-2.8 1.9-5.6 4-6.8 6.2l-5.8 5.2c.6-3 2.5-5.8 5.2-8.5"/></g><path d="m42.7 39.4c-2.5-4.5.5-7.3-1.4-8.6-3.2-2.2-6.4-2.3-9.3-2.3-2.9 0-6.1.1-9.3 2.3-1.9 1.2 1.1 4.1-1.4 8.6s-.2 8.4 2.8 11.1c3 2.6.2 8.4 4.4 10.6 1 .5 2.2 1 3.5 1 1.3 0 2.5-.5 3.5-1 4.2-2.2 1.4-7.9 4.4-10.6 3.1-2.7 5.4-6.6 2.8-11.1" fill="#d3976e"/><g opacity=".5"><path d="m41.7 35.9c.1 1 .3 2.2 1.1 3.5 2.5 4.5.2 8.4-2.8 11.1-1.3 1.1-1.5 2.7-1.7 4.4 0-2.4.2-6.7 1.9-11.1 1.4-3.9 1.5-5.8 1.5-7.9" fill="#89664c"/></g><g opacity=".5"><path d="m22.3 35.9c-.1 1-.3 2.2-1.1 3.5-2.5 4.5-.2 8.4 2.8 11.1 1.3 1.1 1.5 2.7 1.7 4.4 0-2.4-.2-6.7-1.9-11.1-1.4-3.9-1.5-5.8-1.5-7.9" fill="#89664c"/></g><path d="m27.5 35.7c0 0 0-15.3-14.5-15.3-.1 0 0 15.3 14.5 15.3" fill="#d3976e"/><path d="m15.4 22.6c0 0 5.5 0 9.6 7.6 0 0-3.3-1.8-2.8-1 .5.8 2.9 2.6.4 1.7-2.4-.9-.8.7 0 1.5.8.7-7.2-1.5-7.2-9.8" fill="#89664c"/><path d="m36.5 35.7c0 0 0-15.3 14.5-15.3.1 0 0 15.3-14.5 15.3" fill="#d3976e"/><g fill="#89664c"><path d="m48.6 22.6c0 0-5.5 0-9.6 7.6 0 0 3.3-1.8 2.8-1-.5.8-2.9 2.6-.4 1.7 2.4-.9.8.7 0 1.5-.8.7 7.2-1.5 7.2-9.8"/><path d="m35.7 59.2c.1.3-1.5 1.8-3.7 1.8-2.3 0-3.9-1.6-3.7-1.8.1-.3 1.7.6 3.7.6 2 .1 3.6-.9 3.7-.6"/><path d="m31.5 58.2h.9v1.9h-.9z"/></g><path d="m32 53.9c-2 0-4.5.3-4.5 1.4s1.8 3.6 4.5 3.6c2.7 0 4.5-2.5 4.5-3.6s-2.5-1.4-4.5-1.4" fill="#594640"/><ellipse cx="32" cy="55.4" rx="3.3" ry=".9" fill="#fff"/><g fill="#3e4347"><ellipse transform="matrix(.9848-.1737.1737.9848-6.9915 4.7359)" cx="23.6" cy="42.3" rx="1.7" ry="2.4"/><ellipse transform="matrix(.1737-.9848.9848.1737-8.2527 74.7834)" cx="40.4" cy="42.3" rx="2.4" ry="1.7"/></g><g fill="#89664c"><path d="m23.6 37c-.1.2 1.8 1.5 2.5 4 .8 2.4-.1 4.6.1 4.7.2.2 1.5-2.1.7-4.9-.8-2.8-3.2-4-3.3-3.8"/><path d="m40.4 37c.1.2-1.8 1.5-2.5 4-.8 2.4.1 4.6-.1 4.7-.2.2-1.5-2.1-.7-4.9.8-2.8 3.2-4 3.3-3.8"/><path d="m28.3 28.7c-1.8 1.8-2.9 3.7-.6 8.3 2.6 5.2 1.7 14.7 4.3 14.7 2.7 0 1.8-9.5 4.3-14.7 2.3-4.6 1.2-6.5-.6-8.3-1.3-.2-2.5-.2-3.7-.2-1.2 0-2.4.1-3.7.2" opacity=".5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f98d.svg b/riot/emojione/svg/1f98d.svg new file mode 100644 index 0000000..2c27214 --- /dev/null +++ b/riot/emojione/svg/1f98d.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M51.8,16.1C49.5,6.2,39.6,2,32,2S14.5,6.2,12.2,16.1S-3,30.8,4.1,40.5C9.2,47.5,24.5,62,32,62 + s22.8-14.5,27.9-21.5C67,30.8,54.1,26,51.8,16.1z" fill="#3e4347"/><g fill="#94989b"><path d="m51.5 25c-7-4.7-14.6 1-19.5 1s-12.5-5.7-19.5-1c-7 4.7 1.1 14.8 9 12 10.5-3.8 2.2 4.3.9 7.5-1.2 3.2-2.4 12.5 9.6 12.5s10.8-9.3 9.6-12.5c-1.3-3.2-9.6-10.5.9-7.5 8.3 2.4 16-7.3 9-12"/><path d="m47.8 18.5c-4.7-1.8-9.6 1.6-15.8 1.6-6.2 0-11.2-3.4-15.8-1.6-5.2 2 0 0 5.4 1.6 5.4 1.7 7.7 1.9 10.4 1.9s5-.2 10.4-1.8c5.4-1.7 10.7.3 5.4-1.7" opacity=".5"/><path d="m42.6 15.9c-3.1-1.3-6.4 1.2-10.6 1.2-4.1 0-7.4-2.5-10.6-1.2-3.5 1.5 0 0 3.6 1.2s5.1 1.4 7 1.4c1.8 0 3.3-.1 7-1.4 3.6-1.2 7 .3 3.6-1.2" opacity=".5"/><path d="m29 34.2c-2.4-1.1-1.5 2.6-6.2 4.2-4.6 1.7-2.8 5.6.5 5.6 2.9 0 5.2.1 6.9-2.4 1.8-2.4 1.3-6.3-1.2-7.4"/><path d="m41.2 38.4c-4.6-1.6-3.7-5.4-6.2-4.2-2.4 1.1-3 5-1.2 7.4 1.8 2.4 4 2.4 6.9 2.4 3.3 0 5.1-3.9.5-5.6"/></g><g fill="#3e4347"><path d="m28.5 37.4c.1 1.6.7 5-2.6 5.1-2.9.1-3.7-2.9-.2-3 2.3 0 2.8-2.1 2.8-2.1"/><path d="m35.5 37.4c-.1 1.6-.7 5 2.6 5.1 2.9.1 3.7-2.9.2-3-2.3 0-2.8-2.1-2.8-2.1"/><ellipse cx="32" cy="49" rx="8.6" ry=".5"/></g><path d="m23 34.2c3.3 0 6-2.6 6-5.8h-12c0 3.2 2.7 5.8 6 5.8" fill="#c7e755"/><path d="m23 31.7c1.7 0 3-1.3 3-2.9h-6c0 1.6 1.3 2.9 3 2.9" fill="#89664c"/><path d="m47 28.4c0 3.2-2.7 5.8-6 5.8-3.3 0-6-2.6-6-5.8h12" fill="#c7e755"/><path d="m44 28.8c0 1.6-1.3 2.9-3 2.9s-3-1.3-3-2.9h6" fill="#89664c"/><g fill="#3e4347"><path d="m51.5 28.6c0 .4-8.7.8-19.5.8s-19.5-.4-19.5-.8c0-.4 8.7-.7 19.5-.7s19.5.3 19.5.7"/><path d="m2 35c0 0 0 6.2 4.3 11.7l.9-2c0 0 .1 3 2.7 6.5l.8-3c0 0 .1 4.6 4.1 8.9 0 0 .3-3 .8-4.1 0 0 2.2 4.8 7.5 8 0 0-1.4-2.6 1.7-4.6-.1 0-14.7-21.4-22.8-21.4"/><path d="m62 35c0 0 0 6.2-4.2 11.7l-.9-2c0 0-.1 3-2.7 6.5l-.8-3c0 0-.1 4.6-4.1 8.9 0 0-.3-3-.8-4.1 0 0-2.2 4.8-7.5 8 0 0 1.4-2.6-1.7-4.6 0 0 14.6-21.4 22.7-21.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f98e.svg b/riot/emojione/svg/1f98e.svg new file mode 100644 index 0000000..4f15955 --- /dev/null +++ b/riot/emojione/svg/1f98e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58.8 25.5c-.6 0-2.7 1-3.5 1.1-1.6.1-2.4-.6-1.8-1.8.3-.5 2-2 2.2-2.5.7-1.3-1.5-2.2-2.1-1-.3.5-.4 2.7-.6 3.2-.5 1-1.8 1.1-2.3.4-.4-.6-1-2.8-1.4-3.3-.9-1.2-2.8.1-1.9 1.2.3.5 2.5 1.8 2.7 3-2.6-.5-4.1-3-4.9-4.8.5-.7.9-1.4 1.4-2.1 1.8 1 4 .7 5.5-.9 1.7-2.1 12.3-11.6 9.6-15.1-2.8-3.5-14.6 4.8-17 6.1-2 1.1-2.7 3.3-1.9 5.3-1.6.9-3.8 1.8-6.7 2.6-1.8-.1-6.2-.8-3.4-5.1.8.8 1.1 3.1 1.4 3.6.7 1.4 2.7.2 2-1.2-.3-.5-2-2-2.4-2.6-.4-.7.3-1.9 1.4-1.9.6 0 2.6.8 3.2.8 1.4 0 1.5-2.3.1-2.3-.6 0-2.7.9-3.3.9-1.3.1-1.6-1-.8-2.3.4-.6 2.3-2.1 2.6-2.6.9-1.4-1-2.5-1.9-1.1-.3.5-.8 2.8-1.2 3.5-.8 1.3-1.9 1.6-2.5.4-.3-.5-.5-2.7-.7-3.2-.7-1.3-2.7-.1-2 1.1.3.5 1.9 1.9 2.2 2.4.5.9-.2 2.1-1.1 2.1-.7 0-2.9-.8-3.5-.8-1.4 0-1.5 2.3-.1 2.3.5 0 2.7-.8 3.8-.5-.9 1.2-4.3 6.1.2 8.8-4.9 2.3-11.3 6.2-16.6 11.8-1.6.4-4.1.4-3.8-3.9 1.1.2 2.6 2.1 3.1 2.4 1.3.8 2.5-1.2 1.1-2-.5-.3-2.7-.7-3.4-1.1-.7-.4-.7-1.8.3-2.4.5-.3 2.7-.6 3.2-.9 1.2-.7.2-2.8-1.1-2-.5.3-1.9 2.1-2.4 2.4-1.1.7-1.9 0-1.9-1.6 0-.8.9-3 .9-3.6 0-1.7-2.2-1.7-2.2 0 0 .6.8 2.8.8 3.6 0 1.6-.9 2.3-2 1.6-.5-.3-1.8-2.1-2.3-2.4-1.2-.8-2.4 1.2-1.2 2 .5.3 2.6.7 3.2 1 .9.6.9 1.9.2 2.4-.6.4-2.9.7-3.4 1-1.2.7-.2 2.8 1.1 2 .4-.3 1.8-2 2.9-2.4-.2 1.5-.5 6.7 3.9 7.4-4.1 5.3-8.8 19.7 7.8 25.8 16.2 6 37.3-4.2 41.4-23.5 0 0-9 24-31.1 19.3-6.7-1.4-15.4-5.8-7.2-12.2 1.1-.8 2.2-1.6 3.5-2.4 1 4.4 5.7 4.9 8.1 4.9-.1 1.2-2.1 2.6-2.4 3.1-.8 1.3 1.2 2.5 2 1.1.3-.5.7-2.7 1.1-3.4.4-.7 1.8-.7 2.4.3.3.5.6 2.7.9 3.2.7 1.2 2.8.2 2-1.1-.3-.5-2.1-1.9-2.4-2.4-.7-1.1 0-1.9 1.6-1.9.8 0 3 .9 3.6.9 1.7 0 1.7-2.2 0-2.2-.6 0-2.8.8-3.6.8-1.6 0-2.3-.9-1.6-2 .3-.5 2.1-1.8 2.4-2.3.8-1.2-1.2-2.4-2-1.2-.3.5-.7 2.6-.9 3.2-.6.9-1.9.9-2.4.2-.4-.6-.7-2.9-1-3.4-.7-1.2-2.8-.2-2 1.1.3.5 2.2 2 2.4 3.2-2.2-.3-3.3-1.5-3.8-3-.1-.5-.1-1.2.5-2.1 1.4-.8 2.6-1.6 3.6-2.4 4.9-3.9 7.5-7.6 9.5-10.9 1.3 3.7 5.4 3.6 7.7 3.2.1 1.2-1.9 2.9-2.1 3.4-.7 1.4 1.4 2.4 2.1.9.3-.5.4-2.8.7-3.4.4-.7 1.7-.8 2.4 0 .3.5.9 2.6 1.2 3.1.8 1.2 2.8-.1 1.9-1.2-.3-.5-2.3-1.7-2.6-2.1-.8-1-.2-1.9 1.4-2 .8 0 3 .6 3.7.6 1.3-.2 1.1-2.3-.5-2.2" fill="#83bf4f"/><path d="m50.4 9.5c-1.2 1-3.1.8-4.1-.4-1-1.2-.8-3 .4-4 1.2-1 3.1-.8 4.1.4 1.1 1.2.9 3-.4 4" fill="#e8e8e8"/><path d="m49.5 7.2c-.6.5-1.5.4-2-.2-.5-.6-.4-1.5.2-2 .6-.5 1.5-.4 2 .2.5.6.4 1.5-.2 2" fill="#3e4347"/><path d="m56.3 16.6c-1.2 1-3.1.8-4.1-.4-1-1.2-.8-3 .4-4 1.2-1 3.1-.8 4.1.4 1 1.2.8 3-.4 4" fill="#e8e8e8"/><path d="m53.4 14.5c.6-.5 1.5-.4 2 .2.5.6.4 1.5-.2 2-.6.5-1.5.4-2-.2s-.4-1.4.2-2" fill="#3e4347"/><path d="m39.2 56c-1.2.3-2.4.4-3.7.5-2 2-1.8 2.6 1.8 4 1.3-.4 2.5-.9 3.8-1.4-2.3-1-2.5-.9-1.9-3.1" fill="#c7e755"/><path d="m29.2 56.1c-.3 0-2.5-.6-3.4-.9-3.3 2.5.4 4.1 1.1 6.7 0 0 1.6.3 4.9-.2-.9-3.1-4.7-3-2.6-5.6" fill="#6adbc6"/><path d="m21.4 53.3c-1.3-.8-2.4-1.7-3-2.7-2.9 4.1-5.6-.8-4.2 7.8 1.7 1.3 4.5 2 4.5 2-1.7-6-2.4-4.3 2.7-7.1" fill="#c7e755"/><path d="m18.1 49.9c-.4-1.2-.2-2.5.9-4-6.7-10.3-9.4-.2-12.5-1.5-.1 1.5-.1 3 .3 4.5 6.7-.7 2.6-6.8 11.3 1" fill="#6adbc6"/><path d="m22 43.3c1.2-.9 2.6-1.7 3.9-2.6-10.2-6.8 5.5-8-12.4-9.9-1 1.1-2 2.2-3 3.5 13 3.2 1.5 2.7 11.5 9" fill="#c7e755"/><path d="m20.6 24.6c13.4 1.5-.2 4.5 9.9 13.3 2.3-1.2 3.9-2.8 3.9-2.8-7.3-6.5 9.5-9.4-10-13-1.8.9-3.8 2.5-3.8 2.5" fill="#6adbc6"/><path d="m31.7 18.3c11.5 4.4 4.2 5.9 7.7 11.7 2-2.2 3.2-4.7 3.2-4.7.8-8.7-2.1-4.6-6.7-8.5-.1.1-2.7.9-4.2 1.5" fill="#c7e755"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f98f.svg b/riot/emojione/svg/1f98f.svg new file mode 100644 index 0000000..7329b38 --- /dev/null +++ b/riot/emojione/svg/1f98f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m27.1 9.6c-7.8 1.9-9.5-3.3-9.5-3.3-.7 9.7 7.4 13.9 13 13.9l6.8-5.8c.1.1-2.4-6.6-10.3-4.8" fill="#8a8e91"/><path d="m51.4 4.5c-9 2.4-18.1-.9-19.7 5.5-1.8 7.4-4.1 9.6-5.5 12.7-3.2 7.1-10.2 9.5-14.1 13.7-2.3 8.6-5.5 6.7-3.5 10.5 4.5 8.2-4 7.3 7.2 8.8 7.6 1 9.1 4.4 15.6.2 5.7-3.6 18.6-3.4 18.6-3.4l.5 9.6h11.5v-51l-2.9-7.4-3.8 2.3c0 0-1-2.3-3.9-1.5" fill="#b2c1c0"/><path d="m58.2 39.5c-7.8 15.2-16.1 10.8-24.7 15.3 0 0 13.3-3.6 13.3 7.2h5.2c-.1-11 6.2-22.5 6.2-22.5" fill="#8a8e91"/><path d="m31.8 51.6c-4.4-4.6-5.6 3.8-5.6 3.8s1.1-2.1 2.5-1.8c1.5.3 4.3-.7 3.1-2" fill="#3e4347"/><g fill="#e8e8e8"><path d="m17.8 21.5c-.8 1.3 1.4 8.8 3.5 9.8 2.1 1 7.9-3 7.4-5.7-.4-2.8-10.1-5.4-10.9-4.1"/><path d="m3.4 17.7c-3.7 2.2.5 20.7 7.3 25.8 1.8 1.4 7.1-.4 8.6-2.1 1.6-1.8 3-6 .4-9.4-2.4-3.1-6-1.9-7.3-3-4.6-3.8-8.2-11.8-9-11.3"/></g><path d="m45.3 30.2c0 1.7-1.6 3.1-3.6 3.1-2 0-3.6-1.4-3.6-3.1s1.2-1.2 3.6-3.1c1.5-1.2 3.6 1.3 3.6 3.1" fill="#3e4347"/><g fill="#8a8e91"><path d="m35.2 26.1c0 0 2.8.2 5-1.7 3.1-2.7 4.6-4.2 8.2-2.7 0 0-4.2-5-7.4-1.3-2.1 2.6-1.4 3.6-5.8 5.7"/><path d="m48.9 30.9c0 0-6.8-1.4-9.4 5.6 0-.1 3.5-4.2 9.4-5.6"/></g><path d="m49.7 26.1c0 0-2.8-4-6.5-.6-6.2 5.4-8.2 4.5-8.2 4.5s3.7 2.9 7.4-.2c3.5-3.2 4.5-4.6 7.3-3.7" fill="#3e4347"/><path d="m30.4 25.3c0 0 1 7-7.8 7.5 0 0 2.1 6.4-2.3 9.6 0 0 6.5-2.9 5-8.2 0 .1 9-1 5.1-8.9" fill="#8a8e91"/><path d="m57.7 7.5c0 0-1.9 6.4-7.4 7.7-3.7.8-4.4 2.1-4.4 2.1s.4-4.6 5.7-5.8c3.9-.9 6.1-4 6.1-4" fill="#3e4347"/><g fill="#8a8e91"><path d="m59.6 2c0 0-3.5 3.2-7.7 4.5-4.2 1.3-8.3 3.5-9 8.9 0 0 1.8-5.1 7.7-6.9 5.9-1.8 7.7-2.6 8.6-4.1 0 0 1.2 3.4-.1 7-1 2.1-2.3 4-4.6 4.7-5.1 1.5-5.5 3.5-5.5 3.5 3.4-1.7 4.7-.8 8.2-1.8 9.2-2.8 2.4-15.8 2.4-15.8"/><path d="m10.2 48c0 0 3.1-1.2 4.1-1.1 2.7.3 9.5 5 9.5 5s-6.6-2.7-8.9-3.2c-1.1-.3-4.7-.7-4.7-.7"/><path d="m26.9 49.8c0 0 3.4-.9 4.4-.5.6.2 1.8 1.8 1.8 1.8s-.7-3.1-1.6-3.5c-1.2-.5-4.6 2.2-4.6 2.2"/></g><path d="m49.3 41.8c-6.2 7-15.8 13-15.8 13s15.5-6.1 18.6-13.4c2.3-5.2.5-3.4-2.8.4" fill="#3e4347"/><path d="m56 38.9c0 0-1.3-2.3-2.1-2.6-.9-.3-3.7.9-3.7.9s2.8-2.7 3.9-2.3c1.2.3 1.9 4 1.9 4" fill="#8a8e91"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f990.svg b/riot/emojione/svg/1f990.svg new file mode 100644 index 0000000..7cf07ad --- /dev/null +++ b/riot/emojione/svg/1f990.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.7 13c-7.3-7.1-17 1.5-29.9-11 8 12.9 22.4 6.5 28.5 12.3l1.4-1.3" fill="#ed4c5c"/><g fill="#ff717f"><path d="m54.6 17.9c0 0 0 0 0 0"/><path d="m48.6 16.5l10.4-5.4c-15.9 3.7-22.7-.5-25.6 4.4-7.4-1.2-9.8 3.5-9.8 3.5s-7.6.8-8 6.5c-2.8.3-6.3 2.9-4.9 5.7-3.4 2-5.9 4.7-3.3 7.3-3.7 4.3-2.3 6.2-1.4 6.6-.9 6.6 1.5 7.2 2.3 7.4.1 2.6.9 6.1 4 9.6 0 0 2.4-2.3.8-5.3 0 0 1.7 2.1 4.2 1.8 0 0 .2-2.3-1.3-5.1 0 0 1.9 1.7 4.2.4 0 0-2.4-3.7-6.6-5.1.1-1.1-.2-2.5-1-4.2.8-1.1 1.3-2.7 1.4-5.1 1.3-.9 2.5-2.6 3.3-5.5 1.1-.5 2.4-1.5 3.6-3.2 2.2.3 5.1-.5 8.5-3.5 2.2 0 5-1.1 8.3-4.2 3.5.4 9-.8 17-5.3-.2.1-1.2.4-6.1-1.3"/></g><path d="m43.9 15.7c-.8 2.2-3.2 3.4-5.4 2.6-2.2-.8-3.4-3.2-2.6-5.4.8-2.2 3.2-3.4 5.4-2.6 2.2.8 3.4 3.2 2.6 5.4" fill="#fff"/><path d="m41.8 15c-.4 1.1-1.5 1.6-2.6 1.3-1.1-.4-1.6-1.5-1.3-2.6.4-1.1 1.5-1.6 2.6-1.3 1.1.4 1.7 1.5 1.3 2.6" fill="#3e4347"/><g fill="#ed4c5c"><path d="m12.3 54.7c.5 2.6.1 7.3.1 7.3 1.9-1.3 1.6-4.2 1.6-4.2 1.4.9 3.4.8 3.4.8-3.8-1.5-5.1-3.9-5.1-3.9"/><path d="m37.1 30c.2-.4.6-.4.1-.9-1-.9-4.8.6-8.4-1.4.2-.1.3-.3.5-.4 2.1.1 4.9-.9 8.3-4.3 3.5.4 9-.8 16.9-5.3-1.1.5-17.6 7.4-21.9-1-.6 1.8-.2 3.9 1.8 5.2-6.4 0-17.3-10.7-29.4-5.5 12.5-2.6 19.3 5.5 27 7.4-2.3 1.1-5.5 1.8-8.5-.5 0 0 1.1 2.3 3.4 3.4-5.2 3.7-11.5-1.4-11.5-1.4 1 2.5 2.2 4 3.5 4.8-3.7 4.3-8.4.9-8.4.9 1.7 2 3.2 3 4.6 3.2-.8 2.2-3.1 6.2-7.9 4.2 0 0 2.3 1.6 4.8 1.5-.1 1.6-.8 5.5-6.2 5.1 0 0 2.8 1.5 5.1.8.7 1.6 1.3 4.8-2.8 6.6 0 0 5.1.3 5.6-3.2 1.8 1.2 2.9 2.7 2.9 2.7-1 .2-3.4-.2-3.4-.2 2.7 2.6 4 6.8 4 6.8.2-2.7-1.3-5.1-1.3-5.1 2.1 1.8 4.2.4 4.2.4-2.2-3.2-4.8-4.5-6.4-5 0-1-.3-2.3-1.1-4 .9-1 1.5-2.7 1.4-5.6 1.1-.6 2.1-1.9 2.7-4 .9 1.7 2.8 4.3 6.1 5.7.3.1.6.3 1-.2 3.2 2.9 2.4 6 3.1 6 .4.4 1 1.3 1.1 3.2 0 0 1.2-2 1-4.2 1 0-1.2-4.4-4.4-6.6.4-.3.7-.2.5-.8-.6-1.3-5-1.1-7.5-4.7 1.3-.6 2.3-1.8 3-2.8.8 1.2 3.5 4.5 8 5.4.3.1.7.1.9-.4 3.4 2.1 3.7 5.4 4.3 5.3.4.3 1.2 1.1 1.8 2.9 0 0 .6-2.1.1-4.3.9-.3-2.2-4-5.7-5.6.3-.3.7-.3.3-.8-.8-1.1-4.6-.3-7.8-2.6 1.8-.3 3.5-1.2 4.8-2.2 1.3 1.2 4.4 3.5 8.5 3.5.3 0 .7 0 .8-.5 4.1 1.7 4.6 4.7 5.3 4.5.5.2 1.4.8 2.3 2.5 0 0 .3-2.5-.7-4.2 1.1-.3-2.7-3.4-6.4-4.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f991.svg b/riot/emojione/svg/1f991.svg new file mode 100644 index 0000000..c7e8764 --- /dev/null +++ b/riot/emojione/svg/1f991.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m41.4 42.7c-1.3 1.9 5.5 2.3 2 5.8-9.9 10-18.5-8.5-5.6-10.9 1.8-5.2 6.1-6 6.1-6 1.3-3.4 5.6-6.4 5.6-6.4l-10.6-10.7c0 0-3 4.4-6.3 5.7 0 5.5-6 6.2-6 6.2-2.4 12.8-20.7 4.2-10.8-5.7 3.5-3.5 3.9 3.3 5.8 2 .9-.6 2.5-3.8-.1-6.4-3.3-3.3-15.8 2.9-13.2 14.5.7 3.1 2.3 5.1 4.3 6.2-6.9 2.1-14.6 8.7-8.3 15 1.4 1.5 4.8 4.8 12.2.3 7.4-4.5 1.7-9.1-1.5-8.3-3.2.8 5.5 4.7-3.8 6.1-4.6.7-6-6.6 3.7-9 3.7-.9 6.4-.8 8.7-1-.8 2.1-1.3 4.4-1.6 6.9-.9 9.5-11.9 13-15.4 14-3.6 1 8.6 3.2 15.8-5.8 1.8-2.2 2.9-4.2 3.8-6.1.7 3.3 2.9 6 7.2 7 11.6 2.6 17.7-9.9 14.4-13.2-2.7-2.7-5.8-1.1-6.4-.2" fill="#ed4c5c"/><path d="m32.6 20.2c-.4.1-.7.3-1.1.3-3.8.6-4.3 2.5-4.9 5.9 0 0 0 0 0 .1 1.4.5 3.3 0 4.7-1.3 1.5-1.6 1.9-3.5 1.3-5" fill="#e8e8e8"/><circle cx="29.3" cy="23.1" r="1.5" fill="#3e4347"/><path d="m37.7 37.6c0 0 .1 0 0 0 3.4-.6 5.3-1.1 5.9-4.9.1-.4.2-.7.3-1.1-1.5-.6-3.4-.2-4.9 1.3-1.3 1.4-1.8 3.3-1.3 4.7" fill="#e8e8e8"/><circle cx="41.1" cy="34.9" r="1.5" fill="#3e4347"/><g fill="#9c323c"><path d="m55.8 2.9c0 0-5.5.3-10.3-.8-5-1.2-5.5 13-8.7 18.1-.1-.1 13.9-11.3 19-17.3"/><path d="m33.2 54.3c-6.9-4.2-4.9-10.5-4.9-10.5-.7 1.7-1.3 3.5-2.1 5.3.7 3.3 2.8 6 7.2 7 3.1.7 5.7.3 8-.7-2 .6-5.5.5-8.2-1.1"/><path d="m23.7 40.1c-.8 2.1-1.4 4.4-1.6 6.9-1 9.5-12 13-15.5 14-.4.1-.6.2-.6.3 13.9-1.7 17-9.7 18.4-15.4.7-2.9 1.8-5 2.6-6.3-1.1.3-2.2.5-3.3.5"/><path d="m12.6 37c.6-.2 1.3-.3 1.9-.4.6-.1 1.1-.2 1.7-.3-2.6 0-5.5-.9-7.5-4.2.8 2.4 2.2 4 3.9 4.9"/><path d="m44.5 30.5c.3-.5.7-1 1.1-1.5-.5-.5-1.3-.8-2.7-.6-2.5.3-4.5-.1-5.7-1.3-1.2-1.2-1.6-3.2-1.3-5.7.2-1.4-.1-2.2-.6-2.8-.5.4-1 .8-1.5 1.1.6.5 1 1.3.8 3-.3 2.5.1 4.5 1.3 5.7 1.2 1.2 3.2 1.6 5.7 1.3 1.5-.2 2.4.2 2.9.8"/><path d="m61.1 8.3c0 0-.3 5.5.8 10.4 1.2 5-13 5.6-17.9 8.8 0 0 11.1-14.1 17.1-19.2"/></g><path d="m56.7 17.8c5.4-6.7 5.8-11.9 3.6-14.1-2.2-2.2-7.4-1.8-14 3.7-7.4 6.1-13.4 5.2-14.1 8.3-.7 3.1 4.2.8 3.6 5.7-.3 2.5.1 4.5 1.3 5.7 1.2 1.2 3.2 1.6 5.7 1.3 4.9-.6 2.6 4.3 5.7 3.6 3.1-.7 2.2-6.8 8.2-14.2" fill="#ed4c5c"/><g fill="#9c323c"><ellipse transform="matrix(.7091-.7052.7052.7091-12.7393 30.2502)" cx="30.3" cy="30.6" rx="3.9" ry=".4"/><ellipse transform="matrix(.7106-.7036.7036.7106-13.4602 31.8638)" cx="32" cy="32.3" rx="4.6" ry=".3"/><path d="m33.9 34.2c-1.5 1.5-2.8 2.6-2.9 2.4-.1-.1.9-1.5 2.4-3 1.5-1.5 2.8-2.6 2.9-2.4.2.2-.9 1.5-2.4 3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/1f9c0.svg b/riot/emojione/svg/1f9c0.svg new file mode 100644 index 0000000..3cbd809 --- /dev/null +++ b/riot/emojione/svg/1f9c0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m2.1 31.4c0 0 .1-3.2 0-4.6-.1-1.3.7-.9 1.6-1.6.9-.7 1.9-2.2 2.5-1.6.5.6 1.8 1.3 2.5-1 .7-2.3 1.3-1.6 1.8-2 .5-.4 1.8.4 2.4-.6s.1-1.3 1.5-2.2c1.4-.9 2.4-2 3.6-2 1.2 0 3.7-1 4.3-2.8.6-1.8 1.4-1.7 2.1-2.1.7-.4 1.2-1.3 3.3-1.3 2.1 0 15.7-1.9 31.3 6.4 0 0 1.9 1 2.5 1.4.5.4.6.2.7 4.3.1 4.2-.3 18.2-.3 21.7 0 2.4-.4 2.1-1.4 2.2 0 0-14 2.1-16.1 2.4-2.1.3-2.3.2-3-.3-.6-.5-2.5-.5-3.4.5-.9 1-.3 1-2 1.1-1.7.2-10 1.4-11.7 1.7-1.8.3-2.5-1.2-4.4-1.2-2 .1-3.1 2.2-3.8 2.3-.7.2-11.2 1.7-12.1 1.8-1.1.4-1.9 1.1-1.9.1 0-1-.2-3.2.3-3.4.5-.2 1-.8 1-1.7 0-1.6-1-1.4-1-4.6 0-3.2-.1-6.4.2-6.7 0 0 1.3-.8 1.3-2.7-.2-2.4-1.8-2.1-1.8-3.5" fill="#ffce31"/><path d="m2.1 27.5c-.3-2.1.6-1.5 1.5-2.3.9-.7 1.9-2.2 2.5-1.6.5.6 1.8 1.3 2.5-1 .7-2.3 1.3-1.6 1.8-2 .5-.4 1.8.4 2.4-.6s.1-1.3 1.5-2.2 2.4-2 3.6-2c1.2 0 3.7-1 4.3-2.8.6-1.8 1.4-1.7 2.1-2.1.7-.4 1.2-1.3 3.3-1.3 2.1 0 15.7-1.9 31.3 6.4 0 0 1.9 1 2.5 1.4.1 0 .9 1-.5 1.3-3.9.9-12.4 2.4-21.9 3.9-.3.1-1.4-1-1.7-1-.5.1-.2 1.3-.6 1.4-16.4 2.6-34.5 5.2-34.6 4.5" fill="#ffec40"/><g fill="#d68f00"><path d="m3.6 27.5c.9-.1 6.5-1 6.9-1 1-.1.5-.7 1.4-1.2.8-.5 2.4.5 3 .4.6-.1 15.6-2.3 17.2-2.5 1.6-.2 2.5-.4 2.2-.8s-1-1.6 1.6-1.6 2.6.8 2.8 1c.2.3.4.3 1.1.1.8-.1 5-.6 5-.9 0-.3.4-.8 1.7-.6 1.3.2 1 .5.6 1-.4.5-.6.9-.2 1.5.4.6-1.8-.3-2-1-.2-.8-4.8.6-5.8.6-1 0-1.2-.4-1.5-.7s-.7 1.2.3 1.5c1 .4-.9 1.4-1.8 1.1-.9-.3-.9-1.4-1.9-1.2-1 .2-18.1 3.1-18.9 3.1-.8 0-1.8-.2-2.4.4-.6.6-3.5.5-5.2.6-1.8.5-7 .7-4.1.2"/><path d="m61.3 17.5c-.5-.4-2.5-1.4-2.5-1.4-6.6-3.5-12.9-5.2-18.1-6 .5.1 11.4 3.1 15.7 5.7 3 1.8 3.1 2 2.7 2.6-.4.5-1.3.5-8.7 2-1.4.3-2.4.4-2.3.7 0 .3 2.1-.2 4.3-.4s8.4-1.5 8.9-.9c.2.3.5 2.5.6 4.1 0-.8 0-1.6 0-2.1 0-4.2-.1-3.9-.6-4.3"/><path d="m19.7 50.1c2-.1 2.7 1.4 4.4 1.2 0 0 0 0 .1 0-.4-.1-.8-.4-1.4-.9-2-1.7-4.2-1.7-5-.3-.8 1.4-1.1 1.8-1.9 2.4.7-.3 1.8-2.4 3.8-2.4"/><path d="m39.7 46.6c-2.4.4-2.7 2.7-2.7 2.7.3-.1.3-.4.9-1 .9-1 2.8-1 3.4-.5.3.3.5.4 1 .5-1.2-.2-.5-2.2-2.6-1.7"/></g><g fill="#f2b200"><path d="m42.7 48.4c.1 0 .2 0 .3 0-.1-.1-.2 0-.3 0"/><path d="m42.6 48.4c0 0 0 0 0 0"/></g><g fill="#d68f00"><path d="m3.9 49.3c.1-2-1.5-3.6-1.5-3.6.3 1.7.9 1.8.9 3.1 0 .8-.5 1.4-1 1.7-.1 0-.1.1-.2.3.5-.3 1.8.2 1.8-1.5"/><path d="m3.9 32.6c-.8-.1-1.3-.2-1.6-.4.5.6 1.4.9 1.4 2.6 0 1.9-1.3 2.7-1.3 2.7 0 .1-.1.2-.1.4.4-.8 1.2-.8 2.1-1.6 1.3-1.1 1.4-3.5-.5-3.7"/><path d="m22.8 11.8c-.2.3-.5.6-.7 1.3-.6 1.8-3.1 2.8-4.3 2.8-.2 0-.4 0-.6.1 1.2.3 2.5 1 5.2-1.6 1.3-1.3-.7-1.2.4-2.6"/></g><path d="m9 46c.1.2.2.5.3.7.9 2.2 5.9 3.3 6.1 0 0-.4 0-.8 0-1.1-1.6 1.8-4.7 1.9-6.4.4" fill="#ffec40"/><path d="m15.4 45.6c-.4-2.4-2.9-3.3-4.6-2.8-1.9.5-2.3 1.4-1.8 3.2 1.7 1.5 4.8 1.4 6.4-.4" fill="#d68f00"/><path d="m22.8 30.7c.1.3.1.6.1.9 0 2.5-2.3 4.5-5.1 4.5-2.1 0-4-1.2-4.7-2.8-.3.8-.4 1.7-.4 2.8.4 5.4 8.6 3.7 10.1 0 1.2-2.6 1.3-4.3 0-5.4" fill="#ffec40"/><path d="m17.9 36.1c2.8 0 5.1-2 5.1-4.5 0-.3 0-.6-.1-.9-.5-.5-1.3-.8-2.4-1.1-2.6-.7-6.2.5-7.3 3.7.7 1.7 2.5 2.8 4.7 2.8" fill="#d68f00"/><path d="m28.7 45.7c-1.6 0-3-.8-3.9-2-.6 1.9-.3 4.3 3.4 4.6 4.4.4 6.3-4.2 5.5-6.6-.7 2.3-2.7 4-5 4" fill="#ffec40"/><path d="m28.7 45.7c2.3 0 4.3-1.7 4.9-4-.1-.2-.1-.3-.2-.5-1.4-2.1-5.8-2-7.8.9-.3.4-.6 1-.8 1.5.9 1.3 2.3 2.1 3.9 2.1" fill="#d68f00"/><path d="m58.9 39c-.1 1.7-1.7 3.1-3.8 3.1-1.7 0-3.1-1-3.6-2.3-.1.5-.2 1.1-.2 1.7.1 2.4 3.7 3.9 6.8 1.4 1.6-1.2 1.6-2.7.8-3.9" fill="#ffec40"/><path d="m55.2 42.1c2 0 3.7-1.4 3.8-3.1-.7-1.2-2.2-2.2-3.4-2.2-2.2 0-3.5 1.3-3.9 3 .4 1.4 1.8 2.3 3.5 2.3" fill="#d68f00"/><path d="m48.4 32.6c0 .1 0 .2 0 .3 0 2.8-2.6 5.1-5.9 5.1-2.3 0-4.3-1.2-5.3-2.9.2 1 .7 2.1 1.5 3.3 1.8 2.8 5.3 2.7 7.2.8 2.1-2 3.4-4.4 2.5-6.6" fill="#ffec40"/><path d="m42.6 38c3.2 0 5.9-2.3 5.9-5.1 0-.1 0-.2 0-.3-.2-.6-.6-1.1-1.2-1.6-2.8-2.5-8-1.3-9.3.6-.7 1.1-.9 2.2-.6 3.5.9 1.7 2.9 2.9 5.2 2.9" fill="#d68f00"/><path d="m58 25.3c0 .1 0 .1 0 .2 0 1.9-1.8 3.5-4 3.5-1.6 0-2.9-.8-3.6-2 .2.7.5 1.4 1 2.2 1.2 1.9 3.6 1.8 4.9.5 1.4-1.3 2.3-3 1.7-4.4" fill="#ffec40"/><path d="m54 28.9c2.2 0 4-1.6 4-3.5 0-.1 0-.1 0-.2-.2-.4-.4-.8-.8-1.1-1.9-1.7-5.5-.9-6.3.4-.5.7-.6 1.5-.4 2.4.6 1.2 1.9 2 3.5 2" fill="#d68f00"/><path d="m23.1 18.5c1.2 0 2.3.2 3.1.6-.3-.6-1-1.1-2.2-1.7-2.3-.9-6.2-.2-6 3 0 .1 0 .1 0 .2.6-1.2 2.7-2.1 5.1-2.1" fill="#ffc543"/><path d="m25.3 21.5c.9-.9 1.2-1.7.9-2.4-.9-.4-2-.6-3.1-.6-2.4 0-4.4.9-5 2.1.3 3.1 4.8 3.3 7.2.9" fill="#d68f00"/><path d="m34.3 13.1c.9 0 1.7.2 2.3.6-.2-.5-.6-.9-1.3-1.5-2.4-1.9-5.5-.1-5.3 3.1 0 .2.1.3.1.5.5-1.5 2.2-2.7 4.2-2.7" fill="#ffc543"/><path d="m35.3 16.6c1.3-1.2 1.7-2 1.3-2.9-.7-.3-1.5-.6-2.3-.6-2.1 0-3.8 1.1-4.2 2.6.5 2.7 3.5 2.7 5.2.9" fill="#d68f00"/><path d="m47.7 15.6c.6 0 1.1.1 1.6.2-.1-.3-.2-.5-.5-.8-2.1-1.9-7-.7-7 2.4 0 .7.4 1.3 1 1.6.3-1.9 2.4-3.4 4.9-3.4" fill="#ffc543"/><path d="m47.8 18.3c.7-.5 1.9-1.5 1.6-2.5-.5-.1-1.1-.2-1.6-.2-2.5 0-4.6 1.5-4.9 3.5 1.2.7 3.3.5 4.9-.8" fill="#d68f00"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/203c.svg b/riot/emojione/svg/203c.svg new file mode 100644 index 0000000..7d2d0df --- /dev/null +++ b/riot/emojione/svg/203c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m23 42.4h-10l-4-40.4h18z"/><ellipse cx="18" cy="54.4" rx="7.7" ry="7.6"/><path d="m51 42.4h-10l-4-40.4h18z"/><ellipse cx="46" cy="54.4" rx="7.7" ry="7.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2049.svg b/riot/emojione/svg/2049.svg new file mode 100644 index 0000000..b39038b --- /dev/null +++ b/riot/emojione/svg/2049.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m6 42.4h10l4-40.4h-18z"/><ellipse cx="11" cy="54.4" rx="7.7" ry="7.6"/><path d="m40.2 2.1c-11.6.7-17.7 7.3-18.2 19.2h11.7c.1-4.1 2.5-7.2 6.7-7.7 4.2-.4 8.2.6 9.4 3.4 1.3 3.1-1.6 6.7-3 8.2-2.6 2.8-6.8 4.9-8.9 7.9-2.1 3-2.5 6.9-2.7 11.7h10.3c.1-3.1.3-6 1.7-7.9 2.3-3.1 5.7-4.5 8.5-7 2.7-2.3 5.6-5.1 6-9.5 1.6-12.9-9-19.1-21.5-18.3"/><ellipse cx="40.5" cy="55.6" rx="6.5" ry="6.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2122.svg b/riot/emojione/svg/2122.svg new file mode 100644 index 0000000..321c202 --- /dev/null +++ b/riot/emojione/svg/2122.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m2 2v7.5h10.3v24.5h7.5v-24.5h10.3v-7.5z"/><path d="m54.5 2l-6.6 13.2-6.5-13.2h-7.5v32h7.5v-13.2l6.5 13.2 6.6-13.2v13.2h7.5v-32z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2139.svg b/riot/emojione/svg/2139.svg new file mode 100644 index 0000000..93e13a8 --- /dev/null +++ b/riot/emojione/svg/2139.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m27 27.8h10v24h-10z"/><circle cx="32" cy="17.2" r="5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2194.svg b/riot/emojione/svg/2194.svg new file mode 100644 index 0000000..8ffc7d1 --- /dev/null +++ b/riot/emojione/svg/2194.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m12 32l15.5 16v-11.4h9v11.4l15.5-16-15.5-16v11.4h-9v-11.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2195.svg b/riot/emojione/svg/2195.svg new file mode 100644 index 0000000..803b79d --- /dev/null +++ b/riot/emojione/svg/2195.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m32 52l16-15.5h-11.4v-9h11.4l-16-15.5-16 15.5h11.4v9h-11.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2196.svg b/riot/emojione/svg/2196.svg new file mode 100644 index 0000000..7049c48 --- /dev/null +++ b/riot/emojione/svg/2196.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m19.5 42.1l.5-22.1 22.1-.5-7.5 7.5 13.3 13.2-7.3 7.3-13.2-13.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2197.svg b/riot/emojione/svg/2197.svg new file mode 100644 index 0000000..73cc6a7 --- /dev/null +++ b/riot/emojione/svg/2197.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m44.5 42.1l-.5-22.1-22.1-.5 7.5 7.5-13.3 13.2 7.3 7.3 13.2-13.3z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2198.svg b/riot/emojione/svg/2198.svg new file mode 100644 index 0000000..7a5e967 --- /dev/null +++ b/riot/emojione/svg/2198.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m21.9 44.5l22.1-.5.5-22.1-7.5 7.5-13.2-13.3-7.3 7.3 13.3 13.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2199.svg b/riot/emojione/svg/2199.svg new file mode 100644 index 0000000..29c9464 --- /dev/null +++ b/riot/emojione/svg/2199.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m42.1 44.5l-22.1-.5-.5-22.1 7.5 7.5 13.2-13.3 7.3 7.3-13.3 13.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/21a9.svg b/riot/emojione/svg/21a9.svg new file mode 100644 index 0000000..03a61de --- /dev/null +++ b/riot/emojione/svg/21a9.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M17,46.3l9.1-9.7v6.1h7.3c5.3,0,9.7-5.1,9.7-11.2c0-6.2-4.8-11.3-10.8-11.3h-9.2V12h9.2 + C42.7,12,51,20.7,51,31.4c0,10.5-8,19.4-17.5,19.4h-7.3V56L17,46.3z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/21aa.svg b/riot/emojione/svg/21aa.svg new file mode 100644 index 0000000..fd4773f --- /dev/null +++ b/riot/emojione/svg/21aa.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="M47,46.3l-9.1-9.7v6.1h-7.3c-5.3,0-9.7-5.1-9.7-11.2c0-6.2,4.8-11.3,10.8-11.3h9.2V12h-9.2 + C21.3,12,13,20.7,13,31.4c0,10.5,8,19.4,17.5,19.4h7.3V56L47,46.3z" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/231a.svg b/riot/emojione/svg/231a.svg new file mode 100644 index 0000000..31cbd09 --- /dev/null +++ b/riot/emojione/svg/231a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#e8e8e8" d="m18 46h26v16h-26z"/><g fill="#62727a"><path d="m24 50h14v3h-14z"/><path d="m24 58h14v3h-14z"/></g><path fill="#fff" d="m24 55h14v3h-14z"/><path fill="#62727a" d="m39 54h4v2h-4z"/><path fill="#fff" d="m39 52h4v2h-4z"/><path fill="#62727a" d="m39 49h4v2h-4z"/><path fill="#fff" d="m39 47h4v2h-4z"/><path fill="#62727a" d="m39 59h4v2h-4z"/><path fill="#fff" d="m39 57h4v2h-4z"/><path fill="#62727a" d="m19 54h4v2h-4z"/><path fill="#fff" d="m19 52h4v2h-4z"/><path fill="#62727a" d="m19 49h4v2h-4z"/><path fill="#fff" d="m19 47h4v2h-4z"/><path fill="#62727a" d="m19 59h4v2h-4z"/><path fill="#fff" d="m19 57h4v2h-4z"/><path fill="#e8e8e8" d="m18 2h26v16h-26z"/><path fill="#62727a" d="m24 6h14v3h-14z"/><g fill="#fff"><path d="m24 3h14v3h-14z"/><path d="m24 11h14v3h-14z"/></g><path fill="#62727a" d="m39 10h4v2h-4z"/><path fill="#fff" d="m39 8h4v2h-4z"/><path fill="#62727a" d="m39 5h4v2h-4z"/><path fill="#fff" d="m39 3h4v2h-4z"/><path fill="#62727a" d="m39 15h4v2h-4z"/><path fill="#fff" d="m39 13h4v2h-4z"/><path fill="#62727a" d="m19 10h4v2h-4z"/><path fill="#fff" d="m19 8h4v2h-4z"/><path fill="#62727a" d="m19 5h4v2h-4z"/><path fill="#fff" d="m19 3h4v2h-4z"/><path fill="#62727a" d="m19 15h4v2h-4z"/><path fill="#fff" d="m19 13h4v2h-4z"/><path d="m52 28h-3v8h3c.6 0 1-.4 1-1v-6c0-.5-.5-1-1-1" fill="#e8e8e8"/><g fill="#62727a"><path d="m49 29.5h4v1h-4z"/><path d="m49 31.5h4v1h-4z"/><path d="m49 33.5h4v1h-4z"/><circle cx="31" cy="32" r="20"/></g><circle cx="31" cy="32" r="17.1" fill="#3e4347"/><g fill="#e8e8e8"><circle cx="31" cy="32" r="1.9"/><path d="m32 24.3l-.5-1.8v-2.9c0-3.6-1-3.6-1 0v2.9l-.5 1.8v5.8c0 1.5 1.9 1.5 1.9 0l.1-5.8"/><path transform="matrix(.5002-.8659.8659.5002-12.2166 46.6457)" d="m33.3 29.1h1.9v9.5h-1.9z"/></g><circle cx="31" cy="32" r="1" fill="#62727a"/><g fill="#fff"><circle cx="31" cy="14.9" r="1"/><circle cx="22.4" cy="17.2" r="1"/><circle cx="16.2" cy="23.4" r="1"/><circle cx="13.9" cy="32" r="1"/><circle cx="16.2" cy="40.6" r="1"/><path d="m21.6 46.4c.3-.5.8-.6 1.3-.3.5.3.6.8.4 1.3-.3.5-.8.6-1.3.3-.5-.3-.7-.9-.4-1.3"/><path d="m30 49.1c0-.5.4-1 1-1s1 .4 1 1c0 .5-.4 1-1 1-.5 0-1-.4-1-1"/><circle cx="39.6" cy="46.8" r="1"/><path d="m45.4 41.4c-.5-.3-.6-.8-.3-1.3.3-.5.8-.6 1.3-.3.5.3.6.8.3 1.3-.3.4-.9.6-1.3.3"/><path d="m48.1 33c-.5 0-1-.4-1-1s.4-1 1-1c.5 0 1 .4 1 1 0 .5-.4 1-1 1"/><circle cx="45.8" cy="23.4" r="1"/><circle cx="39.6" cy="17.2" r="1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/231b.svg b/riot/emojione/svg/231b.svg new file mode 100644 index 0000000..18acf0a --- /dev/null +++ b/riot/emojione/svg/231b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m36.9 33.6c-1.6-.5-2.6-.7-2.6-1.6 0-.8 1-1 2.6-1.6 8.7-2.4 11.2-8.7 11.2-19.4h-32.2c0 10.7 2.5 17 11.2 19.4 1.6.5 2.6.7 2.6 1.6 0 .9-1 1-2.6 1.6-8.7 2.4-11.2 8.7-11.2 19.4h32.2c0-10.7-2.5-17-11.2-19.4" fill="#e5e5e5"/><path d="m35.5 33.6c-1.2-.5-1.9-.7-1.9-1.6 0-.8.7-1 1.9-1.6 6.3-2.5 6.9-8.8 6.9-19.4h-20.8c0 10.7.6 17 6.9 19.4 1.2.5 1.9.7 1.9 1.6 0 .9-.7 1-1.9 1.6-6.3 2.5-6.9 8.8-6.9 19.4h20.9c-.1-10.7-.7-17-7-19.4" fill="#f5f5f5"/><path d="M18.8,53h26.4c0-8.8-13.2-14.2-13.2-14.2S18.8,44.2,18.8,53z" fill="#428bc1"/><g fill="#212528"><path d="m56 62c0 1.1-.8 2-1.9 2h-44.2c-1 0-1.9-.9-1.9-2v-3c0-1.1.8-2 1.9-2h44.3c1 0 1.9.9 1.9 2l-.1 3"/><path d="m50 10.2c0 .4-.4.8-.9.8h-34.2c-.5 0-.9-.4-.9-.8v-2.4c0-.4.4-.8.9-.8h34.2c.5 0 .9.4.9.8 0 0 0 2.4 0 2.4"/></g><path d="m45 10.2c0 .4-.3.8-.7.8h-24.6c-.4 0-.7-.4-.7-.8v-2.4c0-.4.3-.8.7-.8h24.6c.4 0 .7.4.7.8v2.4" fill="#51575b"/><g fill="#212528"><path d="m50 56.2c0 .4-.4.8-.9.8h-34.2c-.5 0-.9-.4-.9-.8v-2.4c0-.4.4-.8.9-.8h34.2c.5 0 .9.4.9.8 0 0 0 2.4 0 2.4"/><path d="m56 5c0 1.1-.8 2-1.9 2h-44.2c-1.1 0-1.9-.9-1.9-2v-3c0-1.1.8-2 1.9-2h44.3c1 0 1.9.9 1.9 2l-.1 3"/></g><g fill="#51575b"><path d="m50 5c0 1.1-.7 2-1.5 2h-33c-.8 0-1.5-.9-1.5-2v-3c0-1.1.7-2 1.5-2h33.1c.7 0 1.4.9 1.4 2 0 0 0 3 0 3"/><path d="m50 62c0 1.1-.7 2-1.5 2h-33c-.8 0-1.5-.9-1.5-2v-3c0-1.1.7-2 1.5-2h33.1c.8 0 1.5.9 1.5 2-.1 0-.1 3-.1 3"/></g><path fill="#919191" d="m12 7h1v50h-1z"/><path fill="#cecece" d="m11 7h1v50h-1z"/><path fill="#919191" d="m52 7h1v50h-1z"/><path fill="#cecece" d="m51 7h1v50h-1z"/><path d="m45 56.2c0 .4-.3.8-.7.8h-24.6c-.4 0-.7-.4-.7-.8v-2.4c0-.4.3-.8.7-.8h24.6c.4 0 .7.4.7.8v2.4" fill="#51575b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2328.svg b/riot/emojione/svg/2328.svg new file mode 100644 index 0000000..c282cf7 --- /dev/null +++ b/riot/emojione/svg/2328.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m33 32h-1c0-14.5-5.8-14.5-12-14.5-6.4 0-13 0-13-15.5h1c0 14.5 5.8 14.5 12 14.5 6.4 0 13 0 13 15.5" fill="#94989b"/><path d="M62,59c0,1.7-1.3,3-2.8,3H4.8C3.3,62,2,60.7,2,59V35c0-1.7,1.3-3,2.8-3h54.4c1.6,0,2.8,1.3,2.8,3V59z" fill="#d0d0d0"/><g fill="#fff"><path d="m8 41c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m14 41c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m20 41c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m26 41c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m32 41c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m38 41c0 .5-.4 1-1 1h-2c-.5 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m44 41c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m50 41c0 .5-.4 1-1 1h-2c-.5 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.5 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m52 47c0 .6-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.5.4-1 1-1h2c.5 0 1 .4 1 1v2"/><path d="m46 47c0 .6-.4 1-1 1h-2c-.5 0-1-.4-1-1v-2c0-.5.4-1 1-1h2c.6 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m40 47c0 .6-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.5.4-1 1-1h2c.5 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m34 47c0 .6-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.5.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m28 47c0 .6-.4 1-1 1h-2c-.5 0-1-.4-1-1v-2c0-.5.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m22 47c0 .6-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.5.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m16 47c0 .6-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.5.4-1 1-1h2c.6 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m18 53c0 .5-.4 1-1 1h-2c-.5 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m16 59c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m22 59c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m24 53c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m30 53c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.5 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m36 53c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m42 53c0 .5-.4 1-1 1h-2c-.6 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.6 0 1 .4 1 1v2"/><path d="m48 53c0 .5-.4 1-1 1h-2c-.5 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.5 0 1 .4 1 1v2"/><path d="m50 59c0 .5-.4 1-1 1h-2c-.5 0-1-.4-1-1v-2c0-.6.4-1 1-1h2c.5 0 1 .4 1 1 0 0 0 2 0 2"/><path d="m60 41c0 .5-.4 1-.9 1h-6.2c-.5 0-.9-.4-.9-1v-2c0-.6.4-1 .9-1h6.2c.5 0 .9.4.9 1v2"/><path d="m60 59c0 .5-.4 1-.9 1h-6.2c-.5 0-.9-.4-.9-1v-2c0-.6.4-1 .9-1h6.2c.5 0 .9.4.9 1v2"/><path d="m60 53c0 .5-.4 1-.8 1h-8.4c-.4 0-.8-.4-.8-1v-2c0-.6.4-1 .8-1h8.4c.5 0 .8.4.8 1v2"/><path d="m12 53c0 .5-.4 1-.9 1h-6.2c-.5 0-.9-.4-.9-1v-2c0-.6.4-1 .9-1h6.2c.5 0 .9.4.9 1v2"/><path d="m60 47c0 .6-.4 1-.9 1h-4.2c-.5 0-.9-.4-.9-1v-2c0-.5.4-1 .9-1h4.2c.5 0 .9.4.9 1v2"/><path d="m10 47c0 .6-.4 1-.9 1h-4.2c-.5 0-.9-.4-.9-1v-2c0-.5.4-1 .9-1h4.2c.5 0 .9.4.9 1v2"/><path d="m10 59c0 .5-.4 1-.9 1h-4.2c-.5 0-.9-.5-.9-1v-2c0-.5.4-1 .9-1h4.2c.5 0 .9.4.9 1v2"/><path d="m44 59c0 .5-.4 1-.8 1h-18.4c-.5 0-.8-.4-.8-1v-2c0-.5.4-1 .8-1h18.3c.5 0 .8.4.8 1v2z"/><path d="m8.9 36h-1.8c-1.4 0-1.4-2 0-2h1.8c1.5 0 1.5 2 0 2"/><path d="m14.9 36h-1.9c-1.4 0-1.4-2 0-2h1.9c1.5 0 1.5 2 0 2"/><path d="m20.9 36h-1.9c-1.4 0-1.4-2 0-2h1.9c1.5 0 1.5 2 0 2"/><path d="m26.9 36h-1.8c-1.4 0-1.4-2 0-2h1.8c1.5 0 1.5 2 0 2"/><path d="m32.9 36h-1.8c-1.4 0-1.4-2 0-2h1.8c1.5 0 1.5 2 0 2"/><path d="m38.9 36h-1.8c-1.4 0-1.4-2 0-2h1.8c1.5 0 1.5 2 0 2"/><path d="m44.9 36h-1.8c-1.4 0-1.4-2 0-2h1.8c1.5 0 1.5 2 0 2"/><path d="m50.9 36h-1.8c-1.4 0-1.4-2 0-2h1.8c1.5 0 1.5 2 0 2"/><path d="m56.9 36h-1.8c-1.4 0-1.4-2 0-2h1.8c1.5 0 1.5 2 0 2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23cf.svg b/riot/emojione/svg/23cf.svg new file mode 100644 index 0000000..2229e44 --- /dev/null +++ b/riot/emojione/svg/23cf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m16 33.6l16-19 16 19z"/><path d="m16 37.6h32v5.7h-32z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23e9.svg b/riot/emojione/svg/23e9.svg new file mode 100644 index 0000000..60d4f82 --- /dev/null +++ b/riot/emojione/svg/23e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m19.9 14l12.8 11.9v-11.9l19.4 18-19.4 18v-11.9l-12.8 11.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23ea.svg b/riot/emojione/svg/23ea.svg new file mode 100644 index 0000000..2530af1 --- /dev/null +++ b/riot/emojione/svg/23ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m44.1 14l-12.8 11.9v-11.9l-19.4 18 19.4 18v-11.9l12.8 11.9z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23eb.svg b/riot/emojione/svg/23eb.svg new file mode 100644 index 0000000..fcc82a9 --- /dev/null +++ b/riot/emojione/svg/23eb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="M50 46 38.1 33.3 50 33.3 32 14 14 33.3 25.9 33.3 14 46z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23ec.svg b/riot/emojione/svg/23ec.svg new file mode 100644 index 0000000..17d697d --- /dev/null +++ b/riot/emojione/svg/23ec.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m14 18l11.9 12.7h-11.9l18 19.3 18-19.3h-11.9l11.9-12.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23ed.svg b/riot/emojione/svg/23ed.svg new file mode 100644 index 0000000..4202a01 --- /dev/null +++ b/riot/emojione/svg/23ed.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="M12 18 29.4 32 12 46z"/><path d="m29.4 18l17.4 14-17.4 14z"/><path d="m46.8 18h5.2v28h-5.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23ee.svg b/riot/emojione/svg/23ee.svg new file mode 100644 index 0000000..e8d3c4f --- /dev/null +++ b/riot/emojione/svg/23ee.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="M52 46 34.6 32 52 18z"/><path d="M34.6 46 17.2 32 34.6 18z"/><path d="m12 18h5.2v28h-5.2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23ef.svg b/riot/emojione/svg/23ef.svg new file mode 100644 index 0000000..2fc2c46 --- /dev/null +++ b/riot/emojione/svg/23ef.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m13 16l19 16-19 16z"/><path d="m35.8 16h5.7v32h-5.7z"/><path d="m45.3 16h5.7v32h-5.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23f0.svg b/riot/emojione/svg/23f0.svg new file mode 100644 index 0000000..fe98612 --- /dev/null +++ b/riot/emojione/svg/23f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32.1" cy="35.8" rx="25.2" ry="25.3" fill="#428bc1"/><ellipse cx="32.1" cy="35.8" rx="19.6" ry="19.7" fill="#fff"/><g fill="#428bc1"><path d="M11,48.3L8.8,62h1.9c1.2,0,1.6-1.4,2.4-3.1c1-2.2,3.4-7.9,3.4-7.9L11,48.3z"/><path d="m53.1 48.3l2.3 13.7h-1.9c-1.2 0-1.6-1.4-2.4-3.1-1-2.2-3.4-7.9-3.4-7.9l5.4-2.7"/><path d="m13.3 10.2l5.9 5.9-3.1 3.2-5.9-6z"/><path d="m50.9 10.2l-5.9 5.9 3.1 3.2 5.9-6z"/></g><g fill="#b0b8b8"><path d="M5.7,23.6L23.3,5.7C21.1,3.4,18,2,14.5,2C7.6,2,2,7.7,2,14.6C2,18.1,3.4,21.3,5.7,23.6z"/><path d="m40.5 5.8l17.8 17.7c2.3-2.3 3.7-5.4 3.7-8.9 0-6.9-5.6-12.6-12.6-12.6-3.5.1-6.6 1.5-8.9 3.8"/></g><path fill="#ed4c5c" d="m20.6 46.6l10.3-10.5 1.2 1.2-10.3 10.4z"/><g fill="#428bc1"><ellipse cx="32.1" cy="35.8" rx="3.7" ry="3.7"/><path d="m30.2 21.7h3.7v15h-3.7z"/><path d="m33.9 33.9h7.5v3.7h-7.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23f1.svg b/riot/emojione/svg/23f1.svg new file mode 100644 index 0000000..051d3d5 --- /dev/null +++ b/riot/emojione/svg/23f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 0c-3.3 0-6 2.7-6 6 0 3.3 2.7 6 6 6s6-2.7 6-6c0-3.3-2.7-6-6-6m0 10.3c-2.4 0-4.3-1.9-4.3-4.3s1.9-4.3 4.3-4.3 4.3 1.9 4.3 4.3-1.9 4.3-4.3 4.3" fill="#d0d0d0"/><path fill="#4e5c66" d="m30.5 8.6h3v6.5h-3z"/><path d="m34.5 11.6h-5v-5.7c0-1.5 5-1.5 5 0v5.7" fill="#647a87"/><path transform="matrix(.7069-.7073.7073.7069-10.6189 15.7427)" fill="#4e5c66" d="m11.6 18.6h4.2v4.2h-4.2z"/><path d="m15.6 17.6l-5 5-3.1-3.1c-.6-.6-.6-1.6 0-2.2l2.8-2.8c.6-.6 1.6-.6 2.2 0l3.1 3.1" fill="#647a87"/><path transform="matrix(.7071-.7071.7071.7071.1099 41.6354)" fill="#4e5c66" d="m48.2 18.6h4.2v4.2h-4.2z"/><g fill="#647a87"><path d="m53.4 22.6l-5-5 3.1-3.1c.6-.6 1.6-.6 2.2 0l2.8 2.8c.6.6.6 1.6 0 2.2l-3.1 3.1"/><circle cx="32" cy="39" r="25"/></g><circle cx="32" cy="39" r="21.7" fill="#d2d3d5"/><circle cx="32" cy="39" r="20" fill="#fff"/><path d="M52,39c0,5.5-2.2,10.5-5.8,14.1L32,39V19C43,19,52,28,52,39z" fill="#ed4c5c"/><g fill="#3e4347"><path d="m43.5 50.4l-10.2-12.1-2 2z"/><path d="m31.3 20.7h1.4v5.6h-1.4z"/><path d="m31.3 51.7h1.4v5.6h-1.4z"/><path d="m13.7 38.3h5.6v1.4h-5.6z"/><path d="m44.7 38.3h5.6v1.4h-5.6z"/><path transform="matrix(.8661-.4999.4999.8661-9.0168 15.0271)" d="m22.8 22.9h1.4v2.8h-1.4z"/><path transform="matrix(.5001-.866.866.5001-17.7738 30.286)" d="m16.6 29.1h1.4v2.8h-1.4z"/><path transform="matrix(.8656-.5007.5007.8656-21.4346 15.0628)" d="m15.9 46.8h2.8v1.4h-2.8z"/><path transform="matrix(.5002-.8659.8659.5002-34.6955 47.2015)" d="m22.1 53h2.8v1.4h-2.8z"/><path transform="matrix(.8659-.5002.5002.8659-21.4153 27.4343)" d="m39.8 52.2h1.4v2.8h-1.4z"/><path transform="matrix(.5005-.8658.8658.5005-17.7861 64.0963)" d="m45.9 46.1h1.4v2.8h-1.4z"/><path transform="matrix(.8659-.5002.5002.8659-9.0187 27.4332)" d="m45.2 29.8h2.8v1.4h-2.8z"/><path transform="matrix(.5005-.8658.8658.5005-.8665 47.1914)" d="m39.1 23.6h2.8v1.4h-2.8z"/><circle cx="32" cy="39" r="2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23f2.svg b/riot/emojione/svg/23f2.svg new file mode 100644 index 0000000..c8f4446 --- /dev/null +++ b/riot/emojione/svg/23f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,38.1C62,57.5,48.6,61,32,61S2,57.5,2,38.1C2,18.7,15.4,3,32,3S62,18.7,62,38.1z" fill="#13618d"/><path d="m59 46.1c0 4.6-5.2 13.5-27 13.5s-27-9-27-13.5c0-2.1 7.9 7.7 27 7.7s27-9.9 27-7.7" fill="#055672"/><ellipse cx="32" cy="27.3" rx="22.5" ry="22.8" fill="#428bc1"/><g fill="#f5f5f5"><ellipse transform="matrix(.5003-.8659.8659.5003-26.8623 41.3657)" cx="22.4" cy="44" rx="1.3" ry="1.3"/><ellipse transform="matrix(.5002-.8659.8659.5002 11.5116 41.3739)" cx="41.6" cy="10.7" rx="1.3" ry="1.3"/><ellipse transform="matrix(.866-.5.5.866-16.4066 12.6382)" cx="15.4" cy="36.9" rx="1.3" ry="1.3"/><ellipse transform="matrix(.8658-.5003.5003.8658-2.3538 26.7069)" cx="48.6" cy="17.7" rx="1.3" ry="1.3"/><ellipse cx="12.8" cy="27.3" rx="1.3" ry="1.3"/><ellipse cx="51.2" cy="27.3" rx="1.3" ry="1.3"/><ellipse transform="matrix(.5002-.8659.8659.5002-7.6759 22.184)" cx="15.4" cy="17.7" rx="1.3" ry="1.3"/><ellipse transform="matrix(.5003-.8658.8658.5003-7.6836 60.5495)" cx="48.6" cy="36.9" rx="1.3" ry="1.3"/><ellipse transform="matrix(.866-.5001.5001.866-2.3561 12.6411)" cx="22.4" cy="10.7" rx="1.3" ry="1.3"/><path d="m42.7 43.3c.4.6.2 1.4-.5 1.8-.6.4-1.4.1-1.8-.5-.4-.6-.2-1.4.5-1.8.7-.3 1.5-.1 1.8.5"/><ellipse cx="32" cy="8.1" rx="1.3" ry="1.3"/><ellipse cx="32" cy="46.5" rx="1.3" ry="1.3"/></g><circle cx="32" cy="27.3" r="16" fill="#b0bcc1"/><circle cx="32" cy="25.9" r="14.5" fill="#f5f5f5"/><path d="m37.7 33.3c0 7.3-11.3 7.3-11.3 0-.1-7.3 2.5-21.3 5.6-21.3 3.1 0 5.7 14 5.7 21.3" fill="#b0bcc1"/><path d="m36.9 31.8c0 7-9.9 7-9.9 0 0-7 2.2-20.5 4.9-20.5 2.8 0 5 13.5 5 20.5" fill="#e4e7ea"/><path d="m36.1 29.1c0 6.1-8.3 6.1-8.3 0s1.9-17.7 4.1-17.7c2.4 0 4.2 11.6 4.2 17.7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23f3.svg b/riot/emojione/svg/23f3.svg new file mode 100644 index 0000000..803f932 --- /dev/null +++ b/riot/emojione/svg/23f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m36.9 33.6c-1.6-.5-2.6-.7-2.6-1.6 0-.8 1-1 2.6-1.6 8.7-2.4 11.2-8.7 11.2-19.4h-32.2c0 10.7 2.5 17 11.2 19.4 1.6.5 2.6.7 2.6 1.6 0 .9-1 1-2.6 1.6-8.7 2.4-11.2 8.7-11.2 19.4h32.2c0-10.7-2.5-17-11.2-19.4" fill="#e5e5e5"/><path d="m35.5 33.6c-1.2-.5-1.9-.7-1.9-1.6 0-.8.7-1 1.9-1.6 6.3-2.5 6.9-8.8 6.9-19.4h-20.8c0 10.7.6 17 6.9 19.4 1.2.5 1.9.7 1.9 1.6 0 .9-.7 1-1.9 1.6-6.3 2.5-6.9 8.8-6.9 19.4h20.9c-.1-10.7-.7-17-7-19.4" fill="#f5f5f5"/><path d="m32.9 53c0 0-.6-17.9-.6-21 0-.8 1.6-2 2.3-2.4 3.1-1.8 7-5.3 7-8.9h-19.3c0 3.7 4 7.2 7 8.9.7.4 2.3 1.6 2.3 2.4 0 3.2-.6 21-.6 21h1.9" fill="#428bc1"/><g fill="#212528"><path d="m56 62c0 1.1-.8 2-1.9 2h-44.2c-1 0-1.9-.9-1.9-2v-3c0-1.1.8-2 1.9-2h44.3c1 0 1.9.9 1.9 2l-.1 3"/><path d="m50 10.2c0 .4-.4.8-.9.8h-34.2c-.5 0-.9-.4-.9-.8v-2.4c0-.4.4-.8.9-.8h34.2c.5 0 .9.4.9.8 0 0 0 2.4 0 2.4"/></g><path d="m45 10.2c0 .4-.3.8-.7.8h-24.6c-.4 0-.7-.4-.7-.8v-2.4c0-.4.3-.8.7-.8h24.6c.4 0 .7.4.7.8v2.4" fill="#51575b"/><g fill="#212528"><path d="m50 56.2c0 .4-.4.8-.9.8h-34.2c-.5 0-.9-.4-.9-.8v-2.4c0-.4.4-.8.9-.8h34.2c.5 0 .9.4.9.8 0 0 0 2.4 0 2.4"/><path d="m56 5c0 1.1-.8 2-1.9 2h-44.2c-1.1 0-1.9-.9-1.9-2v-3c0-1.1.8-2 1.9-2h44.3c1 0 1.9.9 1.9 2l-.1 3"/></g><g fill="#51575b"><path d="m50 5c0 1.1-.7 2-1.5 2h-33c-.8 0-1.5-.9-1.5-2v-3c0-1.1.7-2 1.5-2h33.1c.7 0 1.4.9 1.4 2 0 0 0 3 0 3"/><path d="m50 62c0 1.1-.7 2-1.5 2h-33c-.8 0-1.5-.9-1.5-2v-3c0-1.1.7-2 1.5-2h33.1c.8 0 1.5.9 1.5 2-.1 0-.1 3-.1 3"/></g><path fill="#919191" d="m12 7h1v50h-1z"/><path fill="#cecece" d="m11 7h1v50h-1z"/><path fill="#919191" d="m52 7h1v50h-1z"/><path fill="#cecece" d="m51 7h1v50h-1z"/><path d="m45 56.2c0 .4-.3.8-.7.8h-24.6c-.4 0-.7-.4-.7-.8v-2.4c0-.4.3-.8.7-.8h24.6c.4 0 .7.4.7.8v2.4" fill="#51575b"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23f8.svg b/riot/emojione/svg/23f8.svg new file mode 100644 index 0000000..3247d55 --- /dev/null +++ b/riot/emojione/svg/23f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m20 14h8v36h-8z"/><path d="m36 14h8v36h-8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23f9.svg b/riot/emojione/svg/23f9.svg new file mode 100644 index 0000000..874ad6d --- /dev/null +++ b/riot/emojione/svg/23f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m17 17h30v30h-30z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/23fa.svg b/riot/emojione/svg/23fa.svg new file mode 100644 index 0000000..668d682 --- /dev/null +++ b/riot/emojione/svg/23fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><circle cx="32" cy="32" r="15" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/24c2.svg b/riot/emojione/svg/24c2.svg new file mode 100644 index 0000000..fbbf6f8 --- /dev/null +++ b/riot/emojione/svg/24c2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m41 15l-9 9-9-9h-6v34h6v-25l9 9 9-9v25h6v-34z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25aa.svg b/riot/emojione/svg/25aa.svg new file mode 100644 index 0000000..2d0fa0a --- /dev/null +++ b/riot/emojione/svg/25aa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#333" d="m16 16h32v32h-32z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25ab.svg b/riot/emojione/svg/25ab.svg new file mode 100644 index 0000000..ab1ec4d --- /dev/null +++ b/riot/emojione/svg/25ab.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m16 16h32v32h-32z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25b6.svg b/riot/emojione/svg/25b6.svg new file mode 100644 index 0000000..f7ac183 --- /dev/null +++ b/riot/emojione/svg/25b6.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m25 12l20 20-20 20z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25c0.svg b/riot/emojione/svg/25c0.svg new file mode 100644 index 0000000..d67bffc --- /dev/null +++ b/riot/emojione/svg/25c0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="M38 12 18 32 38 52z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25fb.svg b/riot/emojione/svg/25fb.svg new file mode 100644 index 0000000..c3dd9d3 --- /dev/null +++ b/riot/emojione/svg/25fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m8 8h48v48h-48z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25fc.svg b/riot/emojione/svg/25fc.svg new file mode 100644 index 0000000..bf2f030 --- /dev/null +++ b/riot/emojione/svg/25fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#333" d="m8 8h48v48h-48z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25fd.svg b/riot/emojione/svg/25fd.svg new file mode 100644 index 0000000..5f5ab3f --- /dev/null +++ b/riot/emojione/svg/25fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m12 12h40v40h-40z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/25fe.svg b/riot/emojione/svg/25fe.svg new file mode 100644 index 0000000..b2a4c81 --- /dev/null +++ b/riot/emojione/svg/25fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#333" d="m12 12h40v40h-40z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2600.svg b/riot/emojione/svg/2600.svg new file mode 100644 index 0000000..aec6212 --- /dev/null +++ b/riot/emojione/svg/2600.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe62e"><path d="m20.5 59.7l7-7.2c-2.5-.5-4.8-1.5-6.9-2.9l-.1 10.1"/><path d="m43.5 4.3l-7 7.2c2.5.5 4.8 1.5 6.9 2.9l.1-10.1"/><path d="m4.3 43.5l10.1-.1c-1.4-2.1-2.4-4.4-2.9-6.9l-7.2 7"/><path d="m59.7 20.5l-10.1.1c1.3 2.1 2.3 4.4 2.9 6.9l7.2-7"/><path d="m4.3 20.5l7.2 7c.5-2.5 1.5-4.8 2.9-6.9l-10.1-.1"/><path d="m59.7 43.5l-7.2-7c-.5 2.5-1.5 4.8-2.9 6.9l10.1.1"/><path d="m20.5 4.3l.1 10.1c2.1-1.3 4.4-2.3 6.9-2.9l-7-7.2"/><path d="m43.5 59.7l-.1-10.1c-2.1 1.4-4.4 2.4-6.9 2.9l7 7.2"/></g><g fill="#ffce31"><path d="m14.8 44l-4 9.3 9.3-4c-2.1-1.5-3.9-3.3-5.3-5.3"/><path d="m49.2 20l4-9.3-9.2 4c2 1.5 3.8 3.3 5.2 5.3"/><path d="m11.4 28.3l-9.4 3.7 9.4 3.7c-.3-1.2-.4-2.4-.4-3.7s.1-2.5.4-3.7"/><path d="m52.6 35.7l9.4-3.7-9.4-3.7c.2 1.2.4 2.5.4 3.7 0 1.3-.1 2.5-.4 3.7"/><path d="m20 14.8l-9.3-4 4 9.3c1.5-2.1 3.3-3.9 5.3-5.3"/><path d="m44 49.2l9.3 4-4-9.3c-1.5 2.1-3.3 3.9-5.3 5.3"/><path d="m35.7 11.4l-3.7-9.4-3.7 9.4c1.2-.2 2.5-.4 3.7-.4s2.5.1 3.7.4"/><path d="m28.3 52.6l3.7 9.4 3.7-9.4c-1.2.3-2.4.4-3.7.4s-2.5-.1-3.7-.4"/><circle cx="32" cy="32" r="19"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2601.svg b/riot/emojione/svg/2601.svg new file mode 100644 index 0000000..3df7fa6 --- /dev/null +++ b/riot/emojione/svg/2601.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m14 51c-1.1 0-2.1-.2-3.1-.5-4.1-1.4-6.9-5.2-6.9-9.5 0-2.9 1.2-5.6 3.4-7.5.6-.5 1.2-.9 1.9-1.3l.7-2.3c1.7-5.8 7-9.8 13-9.8.6 0 1.2 0 1.9.2.6.1 1.1.2 1.6.3l.3-.5c2.4-4.4 7-7.1 12-7.1 7.6 0 13.7 6.2 13.7 13.7 0 .4 0 .7-.1 1.1v.3c.6.2 1.2.5 1.7.8 3.7 2.1 5.9 6 5.9 10.3 0 5.5-3.8 10.3-9.2 11.5-.9.2-1.8.3-2.6.3h-34.2" fill="#fff"/><path d="m38.7 15c6.5 0 11.7 5.3 11.7 11.7 0 .3 0 .6 0 .9-2.7.2-5.2 1.3-7.1 3 1.4-.8 3.1-1.3 4.9-1.3.7 0 1.3.1 1.9.2 1.1.2 2.1.6 3 1.1 2.9 1.7 4.9 4.9 4.9 8.5 0 4.7-3.3 8.6-7.6 9.6-.7.2-1.4.3-2.2.3h-34.2c-.9 0-1.7-.1-2.5-.4-3.2-1.1-5.5-4.1-5.5-7.6 0-2.4 1.1-4.6 2.7-6 .8-.7 1.6-1.2 2.6-1.5.8-.3 1.7-.5 2.6-.5 2.6 0 4.9 1.2 6.3 3.1h.1c-1.7-3.1-4.9-5.3-8.6-5.7 1.4-4.8 5.8-8.4 11.1-8.4.6 0 1.1.1 1.6.1 1.1.2 2.1.4 3 .9 3.5 1.6 6.1 4.9 6.7 8.9 0 0 0 0 0-.1 0-4.5-2.3-8.5-5.8-10.8 2.2-3.6 6-6 10.4-6m0-4c-5.4 0-10.4 2.8-13.3 7.3-.1 0-.2 0-.3-.1-.8-.1-1.5-.2-2.2-.2-6.9 0-13 4.6-14.9 11.3l-.5 1.6c-.5.3-1 .7-1.4 1.1-2.6 2.2-4.1 5.5-4.1 9 0 5.2 3.3 9.8 8.2 11.4 1.2.4 2.5.6 3.8.6h34.2c1 0 2.1-.1 3.1-.4 6.3-1.5 10.7-7 10.7-13.5 0-4.9-2.7-9.5-6.9-12-.2-.1-.4-.2-.6-.3 0 0 0-.1 0-.1-.1-8.6-7.1-15.7-15.8-15.7z" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2602.svg b/riot/emojione/svg/2602.svg new file mode 100644 index 0000000..2105cf1 --- /dev/null +++ b/riot/emojione/svg/2602.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-.5 0-.9.4-.9.9v4.7h1.9v-4.7c-.1-.5-.5-.9-1-.9" fill="#3e4347"/><path fill="#b8c2c4" d="m31.1 24.5h1.9v24.4h-1.9z"/><path d="M32,6.7v24.4c1.8-2.3,4.5-3.8,7.7-3.8c3.1,0,5.9,1.5,7.7,3.8C45.9,17.3,39.7,6.7,32,6.7z" fill="#ffbe5c"/><path d="M32,6.7v24.4c-1.8-2.3-4.5-3.8-7.7-3.8s-5.9,1.5-7.7,3.8C18.1,17.3,24.3,6.7,32,6.7z" fill="#ed77a8"/><path d="M32,6.7c7.7,0,13.9,10.6,15.4,24.4c1.8-2.3,4.5-3.8,7.7-3.8c2.7,0,5.2,1.1,7,2.9C59,16.8,46.7,6.7,32,6.7z" fill="#c7e86f"/><path d="m32 6.7c-7.7 0-13.9 10.6-15.4 24.4-1.8-2.3-4.5-3.8-7.7-3.8-2.7 0-5.2 1.1-7 2.9 3.1-13.4 15.4-23.5 30.1-23.5" fill="#60d4e0"/><path d="m30.1 48.9v5.6c0 2.1-1.7 3.8-3.8 3.8s-3.8-1.7-3.8-3.8c0-1-.8-1.9-1.9-1.9s-1.9.8-1.9 1.9c0 4.1 3.4 7.5 7.5 7.5s7.5-3.4 7.5-7.5v-5.6h-3.6" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2603.svg b/riot/emojione/svg/2603.svg new file mode 100644 index 0000000..8bfcae8 --- /dev/null +++ b/riot/emojione/svg/2603.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#89664c" d="m52.2 32.2l-2.1 4.4-4.5 2.4.5 1.6 5-2.8 2.4-5z"/><path d="m55.2 34.1c-1.3.4-4.6-1-5-2.3-1.4-4.9 9.5.8 5 2.3" fill="#13618d"/><path d="m57.5 23.2c-5.1-1.7-4.2 5.9-5.4 3.3-.8-1.7-2.3-1.7-2 1.2.3 2.8 3.4 5.2 6.1 4.2 2.6-1 5.5-7.3 1.3-8.7" fill="#428bc1"/><path fill="#89664c" d="m12.9 32.2l2.1 4.4 4.4 2.4-.4 1.6-5.1-2.8-2.4-5z"/><path d="m9.9 34.1c1.3.4 4.6-1 5-2.3 1.4-4.8-9.9.7-5 2.3" fill="#13618d"/><path d="m7.6 23.2c5.1-1.7 4.2 5.9 5.4 3.3.8-1.7 2.3-1.7 2 1.2-.3 2.8-3.4 5.2-6.1 4.2-2.6-1-5.5-7.3-1.3-8.7" fill="#428bc1"/><circle cx="32.5" cy="45" r="17" fill="#d0d0d0"/><path d="m32.5 30c-8.3 0-15 6.7-15 15s6.7 15 15 15c8.3 0 15-6.7 15-15s-6.7-15-15-15" fill="#fff"/><circle cx="32.5" cy="25.5" r="13" fill="#d0d0d0"/><path d="m32.5 14.5c-6.1 0-11 4.9-11 11 0 6.1 4.9 11 11 11 6.1 0 11-4.9 11-11 0-6-4.9-11-11-11" fill="#fff"/><circle cx="32.5" cy="26.4" r="2.5" fill="#ff8736"/><g fill="#3e4347"><circle cx="27.1" cy="21.8" r="2"/><circle cx="37.9" cy="21.8" r="2"/><path d="m30.9 46.3l-1.1-3.2 2.8-2 2.7 2-1 3.2z"/><path d="m30.9 56.1l-1.1-3.2 2.8-2 2.7 2-1 3.2z"/><path d="m32.5 34c-3.1 0-6-1.3-8.1-3.6-1.2-1.3.3-2.6 1.5-1.4 1.7 1.9 4.2 2.9 6.7 2.9 2.5 0 4.9-1.1 6.7-2.9 1.2-1.3 2.7 0 1.5 1.4-2.2 2.2-5.2 3.6-8.3 3.6"/></g><g fill="#a2cbdb"><path d="m12.1 9.1l2.1-3.3-3.3 2.1-.9-5.9-.9 5.9-3.3-2.1 2.1 3.3-5.9.9 5.9.9-2.1 3.3 3.3-2.1.9 5.9.9-5.9 3.3 2.1-2.1-3.3 5.9-.9z"/><path d="m56.1 48.1l2.1-3.3-3.3 2.1-.9-5.9-.9 5.9-3.3-2.1 2.1 3.3-5.9.9 5.9.9-2.1 3.3 3.3-2.1.9 5.9.9-5.9 3.3 2.1-2.1-3.3 5.9-.9z"/><path d="m57.5 7.3l1.7-2.5-2.5 1.7-.7-4.5-.7 4.5-2.5-1.7 1.7 2.5-4.5.7 4.5.7-1.7 2.5 2.5-1.7.7 4.5.7-4.5 2.5 1.7-1.7-2.5 4.5-.7z"/><path d="m10.8 54.2l1.9-2.9-2.9 1.9-.8-5.2-.8 5.2-2.9-1.9 1.9 2.9-5.2.8 5.2.8-1.9 2.9 2.9-1.9.8 5.2.8-5.2 2.9 1.9-1.9-2.9 5.2-.8z"/></g><path d="m20.3 16.5c0 0 0-5.5 4.8-6.4 0 0-.3-4.8 12.7-7.6 5.7-1.2 6.8-1.3 8.2 9.1.5 4 5.5 7.2 1.7 8.4-1.3.5-27.4-3.5-27.4-3.5" fill="#ed4c5c"/><ellipse cx="49" cy="19.7" rx="3.7" ry="3.6" fill="#c4ccce"/><g fill="#f5f5f5"><ellipse cx="49" cy="19" rx="3" ry="2.9"/><path d="m34.3 14.9c-8.3-1.5-15.6.3-16.2 3.9-.3 1.4.1 3.2 1.6 4.5-.6-3.4 7.2-5.5 13.9-4.3 6.8 1.2 12.9 4.7 11.7 8.6 1.9-.8 2.6-2 2.9-3.5.6-3.6-5.6-7.8-13.9-9.2"/></g><path d="m33.7 17.9c-8.3-1.5-16.8 2.4-13.9 5.4 1.1-3.1 7-5 13.8-3.8 6.8 1.2 11.5 4.8 11.8 8 4.1-2.4-3.4-8.1-11.7-9.6" fill="#c4ccce"/><path d="m21.2 31.9c-1.5-1.1-3.6 3.3-2.8 3.7 11.4 6 21 1.5 28.4.1.9 0-1.4-4.2-2.9-3.7-13.1 4.2-17.6 3.4-22.7-.1" fill="#cc2e45"/><path d="m43.8 48.9c-2.6-1-7 1.3-6.4 0 1.7-3.4 3.5-12.6.8-15.3-1.1-1.1 4.2-2.6 5.4-1.6 3.1 2.9 1.9 17.5.2 16.9" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2604.svg b/riot/emojione/svg/2604.svg new file mode 100644 index 0000000..7ad1c66 --- /dev/null +++ b/riot/emojione/svg/2604.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#62bbc7"><path d="m25.5 8.3l-20.6 40.1v10.7h10.7z"/><path d="m55.7 38.5l-50.8 9.9v10.7h10.7z"/></g><g fill="#6dd1de"><path d="m39.7 8.3l-34.8 40.1v10.7h10.7z"/><path d="m55.7 24.3l-40.1 34.8h-10.7v-10.7z"/></g><path fill="#7df0ff" d="m62 2l-57.1 46.4v10.7h10.7z"/><path fill="#c2f8ff" d="m33.4 30.6l-28.5 17.8v10.7h10.7z"/><circle cx="9.6" cy="54.4" r="7.6" fill="#7df0ff"/><circle cx="9.6" cy="54.4" r="6.7" fill="#5995c1"/><circle cx="9.4" cy="49.9" r="1.5" fill="#4b7ea3"/><circle cx="9.3" cy="49.6" r="1.2" fill="#5995c1"/><circle cx="14.2" cy="52.7" r="1" fill="#4b7ea3"/><circle cx="14.1" cy="52.5" r=".8" fill="#5995c1"/><circle cx="11.7" cy="58.8" r="1.5" fill="#4b7ea3"/><circle cx="11.7" cy="58.5" r="1.2" fill="#5995c1"/><circle cx="4.7" cy="52.9" r="1" fill="#4b7ea3"/><circle cx="4.6" cy="52.7" r=".8" fill="#5995c1"/><circle cx="7.9" cy="56.2" r="2.5" fill="#4b7ea3"/><circle cx="7.7" cy="55.7" r="2" fill="#5995c1"/><g fill="#c2f8ff"><path transform="matrix(.7071-.7071.7071.7071-19.2836 18.6395)" d="m11.4 31.2h2.9v2.9h-2.9z"/><path transform="matrix(.7068-.7074.7074.7068-7.9561 29.3277)" d="m30 22.8h2.9v2.9h-2.9z"/><path transform="matrix(.7069-.7073.7073.7069-.3554 24.9898)" d="m28.5 11.5h2.9v2.9h-2.9z"/><path transform="matrix(.7072-.707.707.7072 1.0891 42.875)" d="m50.9 18.7h2.9v2.9h-2.9z"/><path transform="matrix(.7071-.7071.7071.7071-12.6103 43.4481)" d="m44.7 35.5h2.9v2.9h-2.9z"/><path transform="matrix(.7071-.7071.7071.7071-14.9873 23.7388)" d="m20.5 29.3h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-11.5491 20.6382)" d="m18.4 23.6h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-16.744 36.6429)" d="m35.2 37.8h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-24.1163 36.4763)" d="m31.3 46.7h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-18.5117 41.8827)" d="m40.6 42.6h1.4v1.4h-1.4z"/><path transform="matrix(.7075-.7068.7068.7075-3.7945 40.6011)" d="m46.4 24.2h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-5.2721 47.1943)" d="m53.6 29.3h1.4v1.4h-1.4z"/><path transform="matrix(.7073-.7069.7069.7073 4.9054 33.8531)" d="m42.6 10.3h1.4v1.4h-1.4z"/><path transform="matrix(.7073-.7069.7069.7073 10.9414 33.6821)" d="m45.4 2.9h1.4v1.4h-1.4z"/><path transform="matrix(.7073-.7069.7069.7073 4.3338 27.0972)" d="m34.2 7.6h1.4v1.4h-1.4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/260e.svg b/riot/emojione/svg/260e.svg new file mode 100644 index 0000000..2be32eb --- /dev/null +++ b/riot/emojione/svg/260e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#333"><path d="m24.2 56c0 2.2-1.8 4-4 4h-5.6c-2.2 0-4-1.8-4-4v-2.6h13.6v2.6"/><path d="m53.4 56c0 2.2-1.8 4-4 4h-5.6c-2.2 0-4-1.8-4-4v-2.6h13.6v2.6"/></g><path d="m56.1 9.1c-4.6-3-13.7-5.1-24.1-5.1-12 0-22.3 2.7-25.9 6.5-2.5 2.5-4.1 6.2-4.1 10.4 0 3.7 21.6 3.7 21.6 0 0-2.8-.7-5.4-1.9-7.6 3.2-.5 6.7-.7 10.4-.7 3.7 0 7.2.3 10.4.7-1.2 2.1-1.9 4.8-1.9 7.6 0 3.7 21.6 3.7 21.6 0-.2-5.2-2.6-9.6-6.1-11.8" fill="#676e72"/><g fill="#333"><path d="m17.9 10.9c1.4 2.4 5.2 8.5 2.8 10.9 5.3-.2.3-9.9-2.8-10.9"/><path d="m56.4 10.9c1.4 2.4 5.2 8.5 2.8 10.9 5.2-.2.3-9.9-2.8-10.9"/></g><path d="m57.6 51.7c0 2.2-1.8 4-4 4h-43.1c-2.2 0-4-1.8-4-4v-7.3h51.1v7.3" fill="#676e72"/><path d="m57.6 44.4h-51.2c0 0 4.8-11.3 11.3-11.3h28.6c6.5 0 11.3 11.3 11.3 11.3" fill="#333"/><path d="m52.2 39.9h-40.4c0 0 3.7-18 8.9-18h22.5c5.2 0 9 18 9 18" fill="#676e72"/><path d="m40.8 8.1c-1.1 1-1.9 4.1-3.2 4.9-2.4 1.4-8.8 1.4-11.2 0-1.2-.8-2.1-3.9-3.2-4.9-.8-.7-3.5-.8-4 0-1.5 2.4 3 8.7 5.6 9.8 3.3 1.4 11 1.4 14.3 0 2.6-1.1 7.2-7.4 5.6-9.8-.5-.9-3.2-.7-3.9 0" fill="#333"/><path d="m46.8 25.1c1.8 6.5-4.7 13.2-15 13.2-10.3 0-16.6-6.6-14.6-13.2 1.6-5.2 8.1-8.7 14.9-8.7 6.8.1 13.3 3.5 14.7 8.7" fill="#a59a7c"/><path d="m46.1 24.5c1.6 6.1-4.6 12.2-14.3 12.2s-15.6-6.2-13.8-12.2c1.4-4.9 7.7-8.2 14.2-8.2 6.5 0 12.6 3.3 13.9 8.2" fill="#f9eeb6"/><path d="m38 24.6c.3 2.5-2.4 4.6-6 4.6-3.6 0-6.2-2.2-5.9-4.6.3-2.2 3-3.9 6-3.9 3 0 5.7 1.7 5.9 3.9" fill="#a59a7c"/><path d="m37.8 24.4c.2 2.3-2.3 4.3-5.8 4.3-3.4 0-5.9-2-5.7-4.3.3-2.1 2.8-3.7 5.8-3.7 2.9 0 5.4 1.6 5.7 3.7" fill="#d1c5b5"/><g fill="#a8a08d"><path d="m30.5 17.4c-1 .6-1 1.5-.1 2.1 1 .6 2.6.6 3.5 0 .9-.6.9-1.5-.1-2.1-.9-.5-2.4-.5-3.3 0"/><path d="m35.9 20c.1.9 1.3 1.7 2.7 1.7 1.4 0 2.5-.8 2.3-1.7-.2-.9-1.4-1.5-2.7-1.5-1.4 0-2.4.7-2.3 1.5"/><path d="m36.5 29.7c.1 1.3 1.6 2.4 3.4 2.4 1.8 0 3-1.1 2.7-2.4-.2-1.3-1.7-2.2-3.3-2.2-1.6-.1-2.9.9-2.8 2.2"/><path d="m29.6 34c1.3 1.1 3.4 1.1 4.7 0 1.2-1 1.2-2.7-.1-3.6-1.2-.9-3.1-.9-4.4 0-1.3 1-1.4 2.6-.2 3.6"/><path d="m21.3 29.7c-.3 1.3.9 2.4 2.7 2.4 1.8 0 3.3-1.1 3.4-2.4.1-1.3-1.1-2.2-2.7-2.2s-3.1.9-3.4 2.2"/><path d="m20 25.8c.9.8 2.7.8 4 0 1.2-.8 1.4-2 .5-2.7-.9-.7-2.6-.7-3.8 0-1.3.7-1.6 1.9-.7 2.7"/><path d="m28.3 20c.1-.9-.9-1.5-2.3-1.5-1.3 0-2.6.7-2.8 1.5-.2.9.8 1.7 2.3 1.7 1.5 0 2.7-.8 2.8-1.7"/></g><g fill="#fff"><path d="m30.5 17.6c-1 .6-1 1.5-.1 2.1.9.6 2.5.6 3.5 0 .9-.6.9-1.6-.1-2.1-.9-.6-2.4-.6-3.3 0"/><path d="m35.8 20.2c.1.9 1.3 1.7 2.7 1.7 1.4 0 2.4-.8 2.3-1.7-.2-.9-1.4-1.6-2.7-1.6-1.3.1-2.3.7-2.3 1.6"/><path d="m36.5 29.9c.1 1.3 1.6 2.5 3.3 2.5 1.7 0 3-1.1 2.7-2.5-.2-1.3-1.7-2.3-3.3-2.3-1.6.1-2.8 1.1-2.7 2.3"/><path d="m29.6 34.4c1.2 1.1 3.3 1.1 4.6 0 1.2-1.1 1.1-2.7-.1-3.7-1.2-.9-3.1-.9-4.3 0-1.3 1-1.4 2.6-.2 3.7"/><path d="m21.4 29.9c-.3 1.3.9 2.5 2.7 2.5 1.7 0 3.3-1.1 3.4-2.5.1-1.3-1.1-2.3-2.7-2.3-1.6.1-3.1 1.1-3.4 2.3"/><path d="m20.1 26c.9.8 2.7.8 4 0 1.2-.8 1.4-2 .5-2.7-.9-.7-2.6-.7-3.8 0-1.2.7-1.6 1.9-.7 2.7"/><path d="m28.4 20.2c.1-.9-.9-1.6-2.3-1.6-1.3 0-2.5.7-2.7 1.6-.2.9.8 1.7 2.2 1.7 1.5 0 2.7-.8 2.8-1.7"/></g><path fill="#a59a7c" d="m47 32.1l-2.3 1-3.4-7.8.1-.4 5.7 6.8z"/><path fill="#d1c5b5" d="m47.1 31.7l-2.3 1-3.4-7.8 1.3-.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2611.svg b/riot/emojione/svg/2611.svg new file mode 100644 index 0000000..42ff8d4 --- /dev/null +++ b/riot/emojione/svg/2611.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#83bf4f" d="M58.4 0 23.6 38.3 13.5 30.6 7.9 30.6 23.6 56.1 64 0z"/><path d="m53.9 56.1c0 .6-.5 1.1-1.1 1.1h-44.9c-.6 0-1.1-.5-1.1-1.1v-44.9c0-.6.5-1.1 1.1-1.1h30.7l6.1-6.7h-42.5c-1.2 0-2.2 1-2.2 2.2v56.1c0 1.3 1 2.3 2.2 2.3h56.1c1.2 0 2.2-1 2.2-2.2v-43.7l-6.7 9.4c.1 0 .1 28.6.1 28.6" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2614.svg b/riot/emojione/svg/2614.svg new file mode 100644 index 0000000..01ad0ed4 --- /dev/null +++ b/riot/emojione/svg/2614.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 12c-.5 0-.9.4-.9.9v4.7h1.9v-4.7c-.1-.5-.5-.9-1-.9" fill="#3e4347"/><path fill="#b8c2c4" d="m31.1 34.5h1.9v14.4h-1.9z"/><path d="m32 16.7v24.4c1.8-2.3 4.5-3.8 7.7-3.8s5.9 1.5 7.7 3.8c-1.5-13.8-7.7-24.4-15.4-24.4" fill="#ffbe5c"/><path d="m32 16.7v24.4c-1.8-2.3-4.5-3.8-7.7-3.8-3.1 0-5.9 1.5-7.7 3.8 1.5-13.8 7.7-24.4 15.4-24.4" fill="#ed77a8"/><path d="m32 16.7c7.7 0 13.9 10.6 15.4 24.4 1.8-2.3 4.5-3.8 7.7-3.8 2.7 0 5.2 1.1 7 2.9-3.1-13.4-15.4-23.5-30.1-23.5" fill="#c7e86f"/><path d="m32 16.7c-7.7 0-13.9 10.6-15.4 24.4-1.8-2.3-4.5-3.8-7.7-3.8-2.7 0-5.2 1.1-7 2.9 3.1-13.4 15.4-23.5 30.1-23.5" fill="#60d4e0"/><path d="m30.1 48.9v5.6c0 2.1-1.7 3.8-3.8 3.8-2.1 0-3.8-1.7-3.8-3.8 0-1-.8-1.9-1.9-1.9-1 0-1.9.8-1.9 1.9 0 4.1 3.4 7.5 7.5 7.5 4.1 0 7.5-3.4 7.5-7.5v-5.6h-3.6" fill="#3e4347"/><g fill="#75d6ff"><path d="m57.1 2c3.1 4.3 4.9 8.2 4.9 11.4 0 2.7-2.2 5-4.9 5-2.7 0-4.9-2.2-4.9-5 0-3.2 1.8-7.2 4.9-11.4"/><path d="m40.4 12.1c3.1 4.3 4.9 8.2 4.9 11.4 0 2.7-2.2 5-4.9 5-2.7 0-4.9-2.2-4.9-5-.1-3.2 1.8-7.2 4.9-11.4"/><path d="m23.6 2c3.1 4.3 4.9 8.2 4.9 11.4 0 2.7-2.2 5-4.9 5-2.7 0-4.9-2.2-4.9-5 0-3.2 1.9-7.2 4.9-11.4"/><path d="m6.9 12.1c3.1 4.3 4.9 8.2 4.9 11.4 0 2.7-2.2 5-4.9 5-2.7 0-4.9-2.2-4.9-5 0-3.2 1.8-7.2 4.9-11.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2615.svg b/riot/emojione/svg/2615.svg new file mode 100644 index 0000000..cd98ff4 --- /dev/null +++ b/riot/emojione/svg/2615.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#eff6f7"><path d="m49.2 38.3l2.8-2.3 5.8-.3 4.2 4.2c0-5-3.3-8-10-6.1-.4.1-1.7.2-1.7.2l-1.1 4.3"/><path d="m59.6 39.6c0 4.6-10.9 5.9-14.3 8.2-1.4 1-3.8 5.4-3.8 5.4l19.5-11.3c0 0-1.4-5.9-1.4-2.3"/></g><g fill="#d2d8d9"><path d="m49.2 40l1.6-.4c0 0 .3-1.5 1.6-2.7 1.7-1.5 7.3-1.2 7.3 2.5 0 6-11.2 7.8-14.6 10.1-1.4 1-3 4-3 4s1.2.2 1.5 0c5.1-4.2 18.4-6 18.4-13.8 0-2.8-4.1-6.4-10-4.3-.4.1-1.7.2-1.7.2l-1.1 4.4"/><path d="m39.9 55h-26.7c0 0 .3 2.8 3.9 5 1.3.8 4.5 2 9.4 2 5 0 8.1-1.2 9.4-2 3.7-2.2 4-5 4-5"/></g><g fill="#eff6f7"><path d="m51.1 30.2h-49.1c0 0 .6 11.7 7.2 21.2 2.4 3.5 8.2 8.5 17.3 8.5 9.2 0 14.9-5 17.3-8.5 6.6-9.5 7.3-21.2 7.3-21.2"/><ellipse cx="26.5" cy="30.2" rx="24.5" ry="10.2"/></g><path d="m26.5 24.2c11.3 0 20.7 3.2 22.9 7.5.3-.6.5-1.3.5-1.9 0-5.2-10.5-9.4-23.4-9.4-12.9 0-23.4 4.2-23.4 9.4 0 .7.2 1.3.5 1.9 2.2-4.3 11.6-7.5 22.9-7.5" fill="#d2d8d9"/><path d="m26.5 39.2c11.3 0 20.7-3.2 22.9-7.5-2.2-4.3-11.6-7.5-22.9-7.5-11.3 0-20.7 3.2-22.9 7.5 2.2 4.3 11.6 7.5 22.9 7.5" fill="#724e41"/><path d="m42.3 29.2c-3.5-4-14.7-2.2-15.7-.2-1.4-2.1-12.4-3.7-15.7.2-2.1 2.5 2.7 4.8 7.6 6.5 3.1 1.2 0 2.5 0 2.5 12.2 0 20.7-4.3 20.7-4.3 2.7-1.5 4.5-3.1 3.1-4.7" fill="#8f6a54"/><path d="m36.5 30.6c-2-3.2-9.5-1.9-10.3-.3-.8-1.7-7.9-3.1-10.4 0-1.5 1.9 1.5 3.8 4.6 5.2 1.9 1-.2 2-.2 2 8 .1 13.9-3.2 13.9-3.2 2-1.2 3.3-2.4 2.4-3.7" fill="#b59267"/><path d="m33.1 31.7c-1.4-2.1-6.4-1.3-6.9-.2-.5-1.1-5.3-2.1-6.9 0-1 1.3 1 2.6 3.1 3.5 1.3.6-.1 1.3-.1 1.3 5.4.1 9.3-2.2 9.3-2.2 1.2-.7 2-1.5 1.5-2.4" fill="#f9f3d9"/><g opacity=".6" fill="#a6aeb0"><path d="m27.9 11.4c-3.7-3.8-1.3-9.4-1.3-9.4s-7.8 7.4-2.9 12.5c5.7 5.9 2.9 9.5 2.9 9.5s7.1-6.6 1.3-12.6"/><path d="m16.8 14.8c-2.7-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.2 4.3 2.1 6.9 2.1 6.9s5.3-4.8.9-9.2"/><path d="m38.8 14.8c-2.7-2.7-.9-6.8-.9-6.8s-5.8 5.4-2.1 9.1c4.2 4.3 2.1 6.9 2.1 6.9s5.3-4.8.9-9.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2618.svg b/riot/emojione/svg/2618.svg new file mode 100644 index 0000000..d9a9acd --- /dev/null +++ b/riot/emojione/svg/2618.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.8 22c-4.9-3.3-11-1.4-16.1 1.5 4.3-4.2 8-9.7 6.1-15.3-3.5-10.3-14.8-5.7-15.8-.5-1.4-5.5-12.4-9.6-15.8.5-1.9 5.8 2 11.3 6.3 15.5-5.1-3-11.4-5.1-16.3-1.8-8.7 5.9-2.1 15.4 3.5 15.4-4.6 2.3-6.1 14.5 4.5 15.1 8.2.5 13.4-9.9 15.9-16.3l3.4-.9c2.5 6.4 7.7 17.8 16.3 17.3 10.6-.7 9.1-12.8 4.5-15.1 5.6 0 12.2-9.6 3.5-15.4" fill="#83bf4f"/><path d="m31.1 62h-7c0 0 6.3-15.6 6.3-32.1 0-.8 3.2-.8 3.2 0 0 17.2-2.5 32.1-2.5 32.1" fill="#699635"/><path d="m49.8 52.5c10.6-.7 9.1-12.8 4.5-15.1l-22.3-6.1c.9 1.6 6.4 21.9 17.8 21.2" fill="#83bf4f"/><g fill="#7bb246"><path d="m57.8 22c-9.7-6.5-24.2 7.3-25.8 9.3l22.3 6.1c5.6 0 12.2-9.6 3.5-15.4"/><path d="m16.2 8.2c-3.7 11.3 14.5 21.4 15.8 23v-23.6c-1.4-5.4-12.4-9.5-15.8.6"/></g><path d="m47.8 8.2c-3.5-10.3-14.8-5.7-15.8-.5v23.6c1.3-1.4 19.5-11.9 15.8-23.1" fill="#83bf4f"/><path d="m9.7 37.4c-4.6 2.3-6.1 14.5 4.5 15.1 11.4.7 16.9-19.6 17.8-21.2l-22.3 6.1" fill="#7bb246"/><path d="m6.2 22c-8.7 5.9-2.1 15.4 3.5 15.4l22.3-6.1c-1.7-2-16.1-15.8-25.8-9.3" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/261d-1f3fb.svg b/riot/emojione/svg/261d-1f3fb.svg new file mode 100644 index 0000000..6a8b95a --- /dev/null +++ b/riot/emojione/svg/261d-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m44.8 34.5c0 0-31.9-2.5-31.4 2.1 0 0-1.6 11.2 2.3 18 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m38.7 39.1c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-32.9c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v32.9"/></g><path d="m41 42.3c2.4 0 4.3-1.9 4.3-4.2v-32.9c0-1.2-.6-2.4-1.4-3.1 1.9.4 3.4 2.1 3.4 4.1v32.9c0 2.3-1.9 4.2-4.2 4.2-1.1 0-2-.4-2.8-1 .1 0 .4 0 .7 0" fill="#e6b796"/><g fill="#ffe1bd"><path d="m13.4 30c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/><path d="m21.9 26.2c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/><path d="m30.4 25.7c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/></g><g fill="#e6b796"><path d="m16.5 39.3c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.8 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m24.9 35.5c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m33.4 35c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m41 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.2 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.1-6.1-9.6-9.4"/></g><path d="m39.6 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#ffe1bd"/><g fill="#e6b796"><path d="m46.6 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3-4.9 4-16.3-1.9-17.5"/><path d="m40.1 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/261d-1f3fc.svg b/riot/emojione/svg/261d-1f3fc.svg new file mode 100644 index 0000000..d43f1a7 --- /dev/null +++ b/riot/emojione/svg/261d-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m44.8 34.5c0 0-31.9-2.5-31.4 2.1 0 0-1.6 11.2 2.3 18 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m38.7 39.1c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-32.9c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v32.9"/></g><path d="m41 42.3c2.4 0 4.3-1.9 4.3-4.2v-32.9c0-1.2-.6-2.4-1.4-3.1 1.9.4 3.4 2.1 3.4 4.1v32.9c0 2.3-1.9 4.2-4.2 4.2-1.1 0-2-.4-2.8-1 .1 0 .4 0 .7 0" fill="#e0a372"/><g fill="#fed0ac"><path d="m13.4 30c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/><path d="m21.9 26.2c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/><path d="m30.4 25.7c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/></g><g fill="#e0a372"><path d="m16.5 39.3c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.8 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m24.9 35.5c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m33.4 35c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m41 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.2 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.1-6.1-9.6-9.4"/></g><path d="m39.6 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#fed0ac"/><g fill="#e0a372"><path d="m46.6 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3-4.9 4-16.3-1.9-17.5"/><path d="m40.1 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/261d-1f3fd.svg b/riot/emojione/svg/261d-1f3fd.svg new file mode 100644 index 0000000..c548d5d --- /dev/null +++ b/riot/emojione/svg/261d-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m44.8 34.5c0 0-31.9-2.5-31.4 2.1 0 0-1.6 11.2 2.3 18 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m38.7 39.1c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-32.9c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v32.9"/></g><path d="m41 42.3c2.4 0 4.3-1.9 4.3-4.2v-32.9c0-1.2-.6-2.4-1.4-3.1 1.9.4 3.4 2.1 3.4 4.1v32.9c0 2.3-1.9 4.2-4.2 4.2-1.1 0-2-.4-2.8-1 .1 0 .4 0 .7 0" fill="#b58360"/><g fill="#d6a57c"><path d="m13.4 30c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/><path d="m21.9 26.2c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/><path d="m30.4 25.7c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/></g><g fill="#b58360"><path d="m16.5 39.3c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.8 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m24.9 35.5c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m33.4 35c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m41 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.2 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.1-6.1-9.6-9.4"/></g><path d="m39.6 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#d6a57c"/><g fill="#b58360"><path d="m46.6 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3-4.9 4-16.3-1.9-17.5"/><path d="m40.1 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/261d-1f3fe.svg b/riot/emojione/svg/261d-1f3fe.svg new file mode 100644 index 0000000..4b63a6b --- /dev/null +++ b/riot/emojione/svg/261d-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m44.8 34.5c0 0-31.9-2.5-31.4 2.1 0 0-1.6 11.2 2.3 18 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m38.7 39.1c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-32.9c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v32.9"/></g><path d="m41 42.3c2.4 0 4.3-1.9 4.3-4.2v-32.9c0-1.2-.6-2.4-1.4-3.1 1.9.4 3.4 2.1 3.4 4.1v32.9c0 2.3-1.9 4.2-4.2 4.2-1.1 0-2-.4-2.8-1 .1 0 .4 0 .7 0" fill="#935e3e"/><g fill="#b47d56"><path d="m13.4 30c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/><path d="m21.9 26.2c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/><path d="m30.4 25.7c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/></g><g fill="#935e3e"><path d="m16.5 39.3c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.8 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m24.9 35.5c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m33.4 35c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m41 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.2 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.1-6.1-9.6-9.4"/></g><path d="m39.6 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#b47d56"/><g fill="#935e3e"><path d="m46.6 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3-4.9 4-16.3-1.9-17.5"/><path d="m40.1 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/261d-1f3ff.svg b/riot/emojione/svg/261d-1f3ff.svg new file mode 100644 index 0000000..e422854 --- /dev/null +++ b/riot/emojione/svg/261d-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m44.8 34.5c0 0-31.9-2.5-31.4 2.1 0 0-1.6 11.2 2.3 18 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m38.7 39.1c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-32.9c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v32.9"/></g><path d="m41 42.3c2.4 0 4.3-1.9 4.3-4.2v-32.9c0-1.2-.6-2.4-1.4-3.1 1.9.4 3.4 2.1 3.4 4.1v32.9c0 2.3-1.9 4.2-4.2 4.2-1.1 0-2-.4-2.8-1 .1 0 .4 0 .7 0" fill="#705041"/><g fill="#8a6859"><path d="m13.4 30c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/><path d="m21.9 26.2c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/><path d="m30.4 25.7c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3 0 0 0-6.6 0-6.6"/></g><g fill="#705041"><path d="m16.5 39.3c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.8 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m24.9 35.5c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m33.4 35c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m41 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.2 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.1-6.1-9.6-9.4"/></g><path d="m39.6 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#8a6859"/><g fill="#705041"><path d="m46.6 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3-4.9 4-16.3-1.9-17.5"/><path d="m40.1 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/261d.svg b/riot/emojione/svg/261d.svg new file mode 100644 index 0000000..2d47296 --- /dev/null +++ b/riot/emojione/svg/261d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m44.8 34.5c0 0-31.9-2.5-31.4 2.1 0 0-1.6 11.2 2.3 18 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m38.7 39.1c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-32.9c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v32.9"/></g><path d="m41 42.3c2.4 0 4.3-1.9 4.3-4.2v-32.9c0-1.2-.6-2.4-1.4-3.1 1.9.4 3.4 2.1 3.4 4.1v32.9c0 2.3-1.9 4.2-4.2 4.2-1.1 0-2-.4-2.8-1 .1 0 .4 0 .7 0" fill="#eba352"/><g fill="#ffdd67"><path d="m13.4 30c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/><path d="m21.9 26.2c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/><path d="m30.4 25.7c0-2.4 1.9-4.3 4.2-4.3h.1c2.3 0 4.2 1.9 4.2 4.3v6.6c0 2.4-1.9 4.3-4.2 4.3h-.1c-2.3 0-4.2-1.9-4.2-4.3v-6.6"/></g><g fill="#eba352"><path d="m16.5 39.3c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.8 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m24.9 35.5c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.7.6 1.6.9 2.6.9"/><path d="m33.3 35c2.4 0 4.2-1.9 4.2-4.2v-6.6c0-.6-.1-1.2-.4-1.8 1 .8 1.7 2 1.7 3.4v6.6c0 2.4-1.9 4.2-4.2 4.2h-.1c-1.7 0-3.2-1-3.8-2.5.8.6 1.7.9 2.6.9"/><path d="m41 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.2 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.1-6.1-9.6-9.4"/></g><path d="m39.6 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#ffdd67"/><g fill="#eba352"><path d="m46.6 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3-4.9 4-16.3-1.9-17.5"/><path d="m40.1 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2620.svg b/riot/emojione/svg/2620.svg new file mode 100644 index 0000000..c8858de --- /dev/null +++ b/riot/emojione/svg/2620.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#94989b"><path d="m46.5 22c1.2-2.1 1.9-4.5 1.9-7 0-8.3-7.4-15-16.4-15s-16.4 6.7-16.4 15c0 2.5.7 4.9 1.9 7-1.1.8-1.9 2.1-1.9 3.5 0 2.5 2.2 4.5 4.9 4.5.3 0 .5 0 .7-.1-.3.7-.7 1.6-.7 2-.4 1.8 1.6 3.4 3.7 3.4 0 0 1 .1 1.2-.1.8-.7 0-3.8 0-3.8 0-.5.5-1 1-1 .6 0 1 .4 1 1 0 0-.8 3.2 0 3.9.6.6 2.9.6 3.5 0 .8-.7 0-3.9 0-3.9 0-.5.5-1 1-1s1 .4 1 1c0 0-.8 3.2 0 3.9.6.6 2.9.6 3.5 0 .8-.7 0-3.9 0-3.9 0-.5.5-1 1-1 .6 0 1 .4 1 1 0 0-.8 3.1 0 3.8.2.2 1.2.1 1.2.1 2 0 4-1.5 3.7-3.4-.1-.4-.4-1.3-.8-2 .2 0 .5.1.8.1 2.7 0 4.9-2 4.9-4.5.2-1.4-.6-2.6-1.7-3.5m-23.3.9c-1.8-1.2-6.6-6.4-2.7-6.6 2.4-.1 8.3 1.9 8.7 4.1.2 1.4-4.2 3.7-6 2.5m11.6 4.7c-.9.9-4.4.9-5.3 0-.9-.8.6-1.4 1.1-2.3.6-1 .9-1.9 1.6-1.9.7 0 1 .9 1.6 1.9.4.8 1.8 1.5 1 2.3m6.2-4.7c-1.8 1.2-6.3-1.1-6-2.6.4-2.2 6.2-4.2 8.7-4.1 3.9.3-.8 5.4-2.7 6.7"/><path d="m59.5 51.5c-2.2-1.2-3.7-.3-3.7-.3-1.5.9-4.1 1-5.7.1l-12.3-6.5 12.3-6.5c1.6-.8 4.1-.8 5.7.1 0 0 1.5.9 3.7-.3 2.4-1.3 3.2-4 1.8-6.2-.5-.7-.5-.7-.5-.7-.8-.5-1.5-1.7-1.6-2.5 0 0 0 0-.5-.7-1.4-2.2-4.4-2.9-6.8-1.7-2.2 1.2-2.2 2.8-2.2 2.8.1 1.7-1.1 3.7-2.7 4.6l-15.2 8-15.2-8c-1.6-.8-2.8-2.9-2.7-4.6 0 0 .1-1.6-2.2-2.8-2.4-1.3-5.4-.5-6.8 1.7-.5.7-.5.7-.5.7-.1.9-.8 2-1.6 2.5 0 0 0 0-.5.7-1.4 2.2-.6 5 1.8 6.2 2.2 1.2 3.7.3 3.7.3 1.5-.9 4.1-1 5.7-.1l12.3 6.5-12.3 6.5c-1.6.8-4.1.8-5.7-.1 0 0-1.5-.9-3.7.3-2.4 1.3-3.2 4-1.8 6.2.5.7.5.7.5.7 1.1.6 1.8 1.7 1.9 2.6 0 0 0 0 .5.7 1.4 2.2 4.4 2.9 6.8 1.7 2.2-1.2 2.2-2.8 2.2-2.8-.1-1.7 1.1-3.7 2.7-4.6l15.2-8 15.2 8c1.6.8 2.8 2.9 2.7 4.6 0 0-.1 1.6 2.2 2.8 2.4 1.3 5.4.5 6.8-1.7.5-.7.5-.7.5-.7.1-.9.8-2 1.6-2.5 0 0 0 0 .5-.7 1.1-2.2.3-5-2.1-6.3"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2622.svg b/riot/emojione/svg/2622.svg new file mode 100644 index 0000000..b206833 --- /dev/null +++ b/riot/emojione/svg/2622.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#3e4347"/><circle cx="32" cy="32" r="27" fill="#ffe62e"/><g fill="#3e4347"><circle cx="32" cy="32" r="5"/><path d="m8 28.8l17.1 2.2c.2-1.9 1.2-3.5 2.7-4.6l-10.5-13.8c-5 3.9-8.5 9.6-9.3 16.2"/><path d="m32 38.8c-.9 0-1.8-.2-2.7-.5l-6.6 15.9c2.9 1.2 6 1.9 9.3 1.9 3.3 0 6.4-.7 9.3-1.9l-6.6-15.9c-.9.3-1.8.5-2.7.5"/><path d="m38.9 31l17.1-2.2c-.8-6.6-4.3-12.3-9.3-16.1l-10.5 13.7c1.4 1.1 2.4 2.7 2.7 4.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2623.svg b/riot/emojione/svg/2623.svg new file mode 100644 index 0000000..60a22e5 --- /dev/null +++ b/riot/emojione/svg/2623.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#eda454"><path d="m38.4 25.3c1.3-.9 2.3-2.1 3.1-3.5-2.7-1.9-6-3-9.5-3s-6.8 1.1-9.5 3c.8 1.4 1.8 2.6 3.1 3.5 1.9-1.2 4.1-1.9 6.4-1.9s4.6.7 6.4 1.9"/><path d="m48.5 34.1c-1.6 0-3.2.3-4.6 1 0 .1 0 .2 0 .3 0 4.6-2.5 8.5-6.3 10.6.2 1.6.6 3.1 1.4 4.5 5.6-2.7 9.5-8.4 9.5-15.1.1-.4.1-.9 0-1.3"/><path d="m20 35.4c0-.1 0-.2 0-.3-1.4-.6-3-1-4.6-.9 0 .4 0 .8 0 1.3 0 6.7 3.9 12.4 9.5 15.1.8-1.4 1.3-2.9 1.5-4.5-3.8-2.1-6.4-6.1-6.4-10.7"/><path d="m8.8 34c5.9-3.4 13.4-1.7 17.1 3.8l2.3-1.3c-.1-.4-.2-.7-.2-1.1 0-1.9 1.3-3.4 3-3.8v-2.6c-6.7-.5-12-6.1-12-13 0-5.3 3.1-9.9 7.6-11.9-6.7 2.2-11.5 8.6-11.5 16 0 2.3.4 4.4 1.2 6.4-2.1.3-4.1 1-6.1 2.1-6.4 3.7-9.5 11.1-8 18.1-.3-5 2.1-10 6.6-12.7"/><path d="m62 43.3c.1-5.9-3-11.6-8.4-14.8-1.9-1.1-4-1.8-6.1-2.1.8-2 1.2-4.1 1.2-6.4 0 0 0 0 0 0 0-7.5-4.8-13.8-11.5-16 4.5 2 7.6 6.6 7.6 11.9 0 6.9-5.3 12.5-12 13v2.6c1.7.4 3 2 3 3.8 0 .4-.1.8-.2 1.2l2.3 1.3c3.7-5.6 11.2-7.3 17.2-3.9 4.1 2.4 6.5 6.7 6.5 11.2 0 .5 0 .9-.1 1.4.4-1 .5-2.1.5-3.2"/><path d="m42.4 56.3c-4.2-2.4-6.5-6.8-6.5-11.3 0-1.9.4-3.9 1.3-5.7l-2.3-1.3c-.7.8-1.7 1.2-2.9 1.2-1.1 0-2.2-.5-2.9-1.3l-2.3 1.3c3 6.1.8 13.5-5.2 17-4.6 2.7-10 2.2-14-.6 5.3 4.7 13.1 5.8 19.6 2 1.9-1.1 3.5-2.5 4.8-4.2 1.3 1.7 2.9 3.1 4.8 4.2 6.4 3.7 14.3 2.7 19.6-2-4 3-9.5 3.4-14 .7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2626.svg b/riot/emojione/svg/2626.svg new file mode 100644 index 0000000..cc62ecd --- /dev/null +++ b/riot/emojione/svg/2626.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#c28fef" d="m55 32v-8h-19v-7h6v-8h-6v-7h-8v7h-6v8h6v7h-19v8h19v13l-7-3v8l7 3v9h8v-6l7 3v-8l-7-3v-16z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/262a.svg b/riot/emojione/svg/262a.svg new file mode 100644 index 0000000..87fd9c7 --- /dev/null +++ b/riot/emojione/svg/262a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c28fef"><path d="m40.6 58.2c-14.2 0-25.7-11.8-25.7-26.2s11.5-26.2 25.7-26.2c2.2 0 4.4.2 6.4.8-4.5-2.9-9.9-4.6-15.6-4.6-16.2 0-29.4 13.4-29.4 30 0 16.6 13.2 30 29.4 30 5.7 0 11.1-1.7 15.6-4.6-2 .6-4.2.8-6.4.8"/><path d="m49.8 38l7.5 5.2-2.8-8.5 7.5-5.4h-9.3l-2.9-8.5-2.9 8.5h-9.3l7.5 5.4-2.8 8.5z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/262e.svg b/riot/emojione/svg/262e.svg new file mode 100644 index 0000000..01a035a --- /dev/null +++ b/riot/emojione/svg/262e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m9.7 12h8.5c3.2-2.2 7-3.7 11.1-4.2v4.2h5.6v-4.2c4.1.5 7.8 2 11.1 4.2h8.5c-5.7-6.1-13.6-10-22.5-10-8.9 0-16.8 3.9-22.3 10" fill="#66b0dd"/><g fill="#c7e755"><path d="m54.2 22h6.1c-1.3-3.7-3.4-7.1-5.9-10h-8.5c3.6 2.5 6.5 6 8.3 10"/><path d="m18.1 12h-8.4c-2.6 2.9-4.7 6.3-6 10h6.1c1.8-4 4.7-7.5 8.3-10"/><path d="m29.2 12h5.6v10h-5.6z"/></g><g fill="#ffe75a"><path d="m29.2 30.6l-1.4 1.4h8.4l-1.4-1.4v-8.6h-5.6z"/><path d="m56.4 32h5.6c0-3.5-.6-6.9-1.7-10h-6.1c1.4 3.1 2.2 6.4 2.2 10"/><path d="M3.7,22C2.6,25.1,2,28.5,2,32h5.6c0-3.6,0.8-6.9,2.2-10H3.7z"/></g><g fill="#eda454"><path d="m56.4 32c0 3.6-.8 6.9-2.2 10h6.1c1.1-3.1 1.7-6.5 1.7-10h-5.6"/><path d="m17.8 42h7.9l3.5-3.4v3.4h5.6v-3.4l3.5 3.4h7.9l-10-10h-8.4z"/><path d="m9.8 42c-1.4-3.1-2.2-6.4-2.2-10h-5.6c0 3.5.6 6.9 1.7 10h6.1"/></g><g fill="#ed5181"><path d="m29.2 42h5.6v10h-5.6z"/><path d="m46.2 42h-8l9 9c-.4.4-.9.7-1.3 1h8.4c2.6-2.9 4.6-6.3 5.9-10h-6.1c-.8 1.8-1.8 3.5-3 5l-4.9-5"/><path d="m25.7 42h-8l-5 5c-1.2-1.5-2.2-3.2-3-5h-6c1.3 3.7 3.4 7.1 5.9 10h8.4c-.5-.3-.9-.7-1.3-1l9-9"/></g><path d="m54.3 52h-8.4c-3.2 2.2-7 3.7-11.1 4.2v-4.2h-5.6v4.2c-4.1-.5-7.9-2-11.1-4.2h-8.4c5.5 6.1 13.5 10 22.3 10 8.9 0 16.8-3.9 22.3-10" fill="#a374b8"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/262f.svg b/riot/emojione/svg/262f.svg new file mode 100644 index 0000000..e232b66 --- /dev/null +++ b/riot/emojione/svg/262f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m53.2 10.8c11.7 11.7 11.7 30.7 0 42.4-5.9 5.9-15.4 5.9-21.2 0s-5.9-15.3 0-21.2c5.9-5.9 5.9-15.4 0-21.2s-15.4-5.9-21.2 0c11.7-11.7 30.7-11.7 42.4 0" fill="#f5f5f5"/><g fill="#3e4347"><path d="m10.8 53.2c-11.7-11.7-11.7-30.7 0-42.4 5.9-5.9 15.4-5.9 21.2 0 5.9 5.9 5.9 15.4 0 21.2s-5.9 15.4 0 21.2 15.4 5.9 21.2 0c-11.7 11.7-30.7 11.7-42.4 0"/><circle cx="42.6" cy="42.6" r="5.6"/></g><circle cx="21.4" cy="21.4" r="5.6" fill="#f5f5f5"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2638.svg b/riot/emojione/svg/2638.svg new file mode 100644 index 0000000..8c09aa2 --- /dev/null +++ b/riot/emojione/svg/2638.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.3 30.3c-.5 0-1 .2-1.3.6.1-.2.1-.4.1-.6 0-.9-.7-1.7-1.7-1.7-.2 0-.3 0-.5.1-.6-4.6-2.4-8.7-5.1-12.2.2-.1.3-.2.4-.3.6-.6.6-1.7 0-2.3-.6-.6-1.7-.6-2.3 0-.1.1-.1.2-.2.2.1-.1.2-.1.2-.2.6-.6.6-1.7 0-2.3-.6-.6-1.7-.6-2.3 0-.1.1-.2.3-.3.4-3.3-2.7-7.5-4.4-12.1-5 .1-.2.1-.3.1-.5 0-.9-.7-1.7-1.7-1.7-.2 0-.4 0-.6.1.4-.3.6-.8.6-1.3.1-.9-.7-1.6-1.6-1.6s-1.7.7-1.7 1.7c0 .5.2 1 .6 1.3-.2-.1-.4-.1-.6-.1-.9 0-1.7.7-1.7 1.7 0 .2 0 .3.1.5-4.5.5-8.7 2.2-12.1 4.9-.1-.2-.2-.3-.3-.4-.6-.6-1.7-.6-2.3 0-.6.6-.6 1.7 0 2.3.1.1.2.1.2.2-.1-.1-.1-.2-.2-.2-.6-.6-1.7-.6-2.3 0-.6.6-.6 1.7 0 2.3.1.1.3.2.4.3-2.8 3.5-4.5 7.7-5.1 12.3-.2-.1-.3-.1-.5-.1-.9 0-1.7.7-1.7 1.7 0 .2 0 .4.1.6-.3-.4-.8-.6-1.3-.6-.9-.1-1.6.7-1.6 1.6 0 .9.7 1.7 1.7 1.7.5 0 1-.2 1.3-.6-.1.2-.1.4-.1.6 0 .9.7 1.7 1.7 1.7.2 0 .3 0 .5-.1.4 4.5 2.2 8.7 4.9 12.1-.2.1-.3.2-.4.3-.6.6-.6 1.7 0 2.3s1.7.6 2.3 0c.1-.1.1-.2.2-.2-.1.1-.2.1-.2.2-.6.6-.6 1.7 0 2.3.6.6 1.7.6 2.3 0 .1-.1.2-.3.3-.4 3.5 2.7 7.6 4.5 12.2 5.1-.1.2-.1.3-.1.5 0 .9.7 1.7 1.7 1.7.2 0 .4 0 .6-.1-.4.3-.6.8-.6 1.3 0 .9.7 1.7 1.7 1.7.9 0 1.7-.7 1.7-1.7 0-.5-.2-1-.6-1.3.2.1.4.1.6.1.9 0 1.7-.7 1.7-1.7 0-.2 0-.3-.1-.5 4.6-.6 8.7-2.4 12.2-5.1.1.2.2.3.3.4.6.6 1.7.6 2.3 0 .6-.6.6-1.7 0-2.3-.1-.1-.2-.1-.2-.2.1.1.1.2.2.2.6.6 1.7.6 2.3 0s.6-1.7 0-2.3c-.1-.1-.3-.2-.4-.3 2.7-3.5 4.5-7.6 5.1-12.2.2.1.3.1.5.1.9 0 1.7-.7 1.7-1.7 0-.2 0-.4-.1-.6.3.4.8.6 1.3.6.9 0 1.7-.7 1.7-1.7-.2-.8-.9-1.6-1.9-1.6m-26-18.6c3.9.4 7.4 2 10.4 4.3-.1.6-6 7.1-6.5 7.4-1.3-.9-2.8-1.6-4.5-1.9-.2-.6.3-9.3.6-9.8m-4.6 0c.3.5.8 9.2.6 9.8-1.7.3-3.2.9-4.5 1.9-.5-.3-6.4-6.8-6.5-7.4 2.9-2.3 6.5-3.9 10.4-4.3m-13.7 7.6c.6.1 7.1 6 7.4 6.5-.9 1.3-1.6 2.8-1.9 4.5-.6.2-9.3-.3-9.8-.6.4-3.9 2-7.5 4.3-10.4m0 25.4c-2.3-2.9-3.8-6.5-4.3-10.4.5-.3 9.2-.8 9.8-.6.3 1.7.9 3.2 1.9 4.5-.3.5-6.8 6.4-7.4 6.5m13.7 7.6c-3.9-.4-7.4-2-10.4-4.3.1-.6 6-7.1 6.5-7.4 1.3.9 2.8 1.6 4.5 1.9.2.6-.3 9.3-.6 9.8m2.3-15.3c-2.8 0-5-2.2-5-5 0-2.8 2.2-5 5-5 2.8 0 5 2.2 5 5 0 2.8-2.2 5-5 5m2.3 15.3c-.3-.5-.8-9.2-.6-9.8 1.7-.3 3.2-.9 4.5-1.9.5.3 6.4 6.8 6.5 7.4-2.9 2.3-6.5 3.9-10.4 4.3m13.7-7.6c-.6-.1-7.1-6-7.4-6.5.9-1.3 1.6-2.8 1.9-4.5.6-.2 9.3.3 9.8.6-.4 3.9-2 7.5-4.3 10.4m-5.5-14.4c-.3-1.7-.9-3.2-1.9-4.5.3-.5 6.8-6.4 7.4-6.5 2.3 2.9 3.8 6.5 4.3 10.4-.5.3-9.2.8-9.8.6" fill="#c28fef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2639.svg b/riot/emojione/svg/2639.svg new file mode 100644 index 0000000..ead0eb5 --- /dev/null +++ b/riot/emojione/svg/2639.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="24.6" r="5"/><circle cx="43.5" cy="24.6" r="5"/><path d="m19.4 45.8c8.1-5.7 17.1-5.6 25.2 0 1 .7 1.8-.5 1.2-1.6-2.5-4-7.4-7.7-13.8-7.7s-11.3 3.6-13.8 7.7c-.6 1.1.2 2.3 1.2 1.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/263a.svg b/riot/emojione/svg/263a.svg new file mode 100644 index 0000000..f8a5cb7 --- /dev/null +++ b/riot/emojione/svg/263a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffdd67"/><g fill="#664e27"><circle cx="20.5" cy="24.6" r="5"/><circle cx="43.5" cy="24.6" r="5"/><path d="m48.1 37c-4.3 6.1-9.5 7.6-16.1 7.6s-11.8-1.5-16.1-7.6c-.6-.8-2.2-.3-1.8.9 2.3 8 10 12.7 18 12.7s15.7-4.7 18-12.7c.2-1.2-1.4-1.7-2-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2648.svg b/riot/emojione/svg/2648.svg new file mode 100644 index 0000000..f85279e --- /dev/null +++ b/riot/emojione/svg/2648.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#d8544a"/><path d="m44.3 17c-4.3-.2-6.8 3.2-7.9 7.1-1.5 5.3-2.9 10.6-4.4 15.9-1.5-5.3-2.9-10.5-4.4-15.8-1.1-3.9-3.6-7.4-7.9-7.1-3.9.2-6.5 3.8-6.7 7.5-.1 2 2.8 1.9 2.9 0 .1-2.6 1.9-4.4 4.4-4.5 2.6-.1 3.9 2.9 4.4 4.9 1.9 7 3.9 14 5.8 20.9.4 1.5 2.4 1.5 2.8 0 1.9-7 3.9-14 5.8-20.9.7-2.3 1.8-4.8 4.5-4.9 2.5-.2 4.3 2.2 4.4 4.5.1 1.9 3 2 2.9 0-.1-3.8-2.7-7.4-6.6-7.6z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2649.svg b/riot/emojione/svg/2649.svg new file mode 100644 index 0000000..a569cb3 --- /dev/null +++ b/riot/emojione/svg/2649.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#e26a3b"/><path d="m46.6 17c-2.3 0-5 .4-6.8 1.9-2.6 2.1-4.1 6.8-7.8 7.1-3.7-.3-5.2-4.9-7.8-7.1-1.8-1.5-4.5-1.8-6.8-1.9-1.9 0-1.9 3 0 3 3.8 0 5.9 1.7 8 4.8.6.9 1.3 1.7 1.9 2.3-3.3 1.8-5.4 5.6-5.6 9.4-.3 5.9 4.9 10.2 10.2 10.5 5.6.3 9.7-4.7 10.2-10 0-.1.1-.3 0-.4 0-.2 0-.3 0-.4-.3-4-2.5-7.2-5.7-8.8.8-.7 1.4-1.5 2.1-2.5 2.1-3.1 4.2-4.7 8-4.8 2-.1 2-3.1.1-3.1zm-7.3 19.5c-.5 9.7-14.1 9.7-14.6 0-.6-9.7 14.1-9.6 14.6 0z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/264a.svg b/riot/emojione/svg/264a.svg new file mode 100644 index 0000000..f87603f --- /dev/null +++ b/riot/emojione/svg/264a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff8736"/><path d="m50 46c-4.1-1.1-8.3-1.9-12.5-2.2 0-7.9 0-15.7 0-23.6 4.2-.3 8.4-1.1 12.5-2.2 1.8-.5 1.1-3.4-.8-2.9-11.2 3.1-23.1 3.1-34.3 0-1.9-.5-2.7 2.4-.9 2.9 4 1.1 8.2 1.8 12.3 2.2 0 7.9 0 15.7 0 23.6-4.2.3-8.3 1.1-12.3 2.2-1.8.5-1.1 3.4.8 2.9 11.2-3.1 23.1-3.1 34.3 0 1.9.6 2.7-2.4.9-2.9zm-20.7-2.4c0-7.7 0-15.5 0-23.2 1.7.1 3.5.1 5.2 0 0 7.7 0 15.5 0 23.2-1.7-.1-3.4-.1-5.2 0z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/264b.svg b/riot/emojione/svg/264b.svg new file mode 100644 index 0000000..703fda7 --- /dev/null +++ b/riot/emojione/svg/264b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#f2b200"/><g fill="#fff" stroke="#fff" stroke-miterlimit="10"><path d="m28.3 32.1c2.1-3.5.6-8.1-2.6-10.3-.3-.2-.6-.4-.9-.5 5.1-2.1 10.9-1.9 16 .6 1.7.8 3.2-1.7 1.5-2.5-8.2-4-17.4-3-24.5 2.8-.2.1-.3.3-.4.4-.5.5-1 1-1.4 1.6-.1.1-.2.2-.2.3-.1.1-.1.2-.2.4-1.6 3.6-.6 7.6 2.8 9.9 3.5 2.4 8 .6 9.9-2.7zm-9.9-6c3.1-5.1 9.8-.4 7.4 4.6-1.1 2.2-3.7 2.8-5.8 1.7-2.2-1.3-2.6-4.3-1.6-6.3z"/><path d="m48.3 39c1.6-3.6.6-7.6-2.8-9.9-3.4-2.3-7.8-.5-9.8 2.7-2.1 3.5-.6 8.1 2.6 10.3.3.2.6.4.9.5-5.1 2.1-10.9 1.9-16-.6-1.7-.8-3.2 1.7-1.5 2.5 8.2 4 17.4 3 24.5-2.8.2-.1.3-.3.4-.4.5-.5 1-1 1.4-1.6.1-.1.2-.2.2-.3 0-.1 0-.2.1-.4zm-10.1-5.7c1.1-2.2 3.7-2.8 5.8-1.7 2.2 1.2 2.6 4.2 1.6 6.3-3.1 5.2-9.8.5-7.4-4.6z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/264c.svg b/riot/emojione/svg/264c.svg new file mode 100644 index 0000000..e5a2ad1 --- /dev/null +++ b/riot/emojione/svg/264c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ffce31"/><path d="m43 40.2c-.2.8-.4 1.5-.7 2.3-.3.7-.6 1.4-1 2-1.2 2.1-4.6 1.3-4.6-1 .1-3.3 2.7-6.6 4.1-9.5 2.6-5.5 5.2-14.6-1.3-18.9-4.8-3.2-11.2-1.6-14 3.2-2.3 4-.4 9.4 1.5 14.2-3.1-.8-6.4.7-8.1 3.2-2.2 3.2-.6 7.4 2.6 9.3 3.3 2 7.5.6 9.6-2.2.1-.1.2-.2.3-.3.1-.1.1-.2.2-.4.8-1.7.9-3.4.4-5 0-.1 0-.2-.1-.3-1.7-5.6-9.8-20.6 1.9-20.6 7.2 0 7 5.8 6.2 10.3-.8 4.1-3 8-5 11.7-2.1 4-2.6 9.6 2.9 10.9 4.7 1.1 7.2-5 7.9-8.3.6-1.7-2.4-2.5-2.8-.6zm-21.3-3c2.5-4.5 9.6-.5 7.1 3.9-2.9 4.2-9.5.5-7.1-3.9z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/264d.svg b/riot/emojione/svg/264d.svg new file mode 100644 index 0000000..24f569c --- /dev/null +++ b/riot/emojione/svg/264d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#83bf4f"/><path d="m44.1 45c-1.4-1.1-2.9-3.1-3.2-5 3.3-4.1 5.7-9.2 4.9-14.5-.1-.6-.8-1.2-1.4-1.1-1.4.1-2.6.5-3.6 1.2 0-1.3 0-2.6 0-3.9 0-.2 0-.3-.1-.4-.3-3-2.5-5-5.4-5.2-1.6-.1-3 .7-4 1.9-1-1.1-2.4-1.8-4-1.9-1.6-.1-3 .7-4 1.9-1-1.1-2.4-1.8-4-1.9-1.9-.1-1.9 3 0 3.1 1.4 0 2.5 1 2.5 2.5 0 7.3 0 14.6 0 21.9 0 2 2.9 2 2.9 0 0-7.3 0-14.6 0-21.9 0 0 0-.1 0-.1.2-3.3 4.9-3.3 5.1 0 0 7.3 0 14.6 0 21.9 0 2 2.9 2 2.9 0 0-7.3 0-14.6 0-21.9.2-3.3 4.9-3.3 5.1 0 0 3 0 5.9 0 8.9 0 .1 0 .3 0 .4 0 2.7 0 5.4 0 8-1.1 1.3-2.3 2.5-3.6 3.5-1.4 1.3.6 3.4 2 2.2.7-.7 1.5-1.4 2.2-2.1.9 2.1 2.4 3.9 4 5.2 1.8 1.2 3.2-1.5 1.7-2.7zm-1.1-17.2c.8 3.4-1.5 5.8-2.2 7.1 0-1.4 0-2.9 0-4.3.2-1.5 1.1-2.4 2.2-2.8z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/264e.svg b/riot/emojione/svg/264e.svg new file mode 100644 index 0000000..a7c8e0a --- /dev/null +++ b/riot/emojione/svg/264e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#699635"/><g fill="#fff" stroke="#fff" stroke-miterlimit="10"><path d="m47.6 43.5c-10.4 0-20.8 0-31.1 0-1.9 0-1.9 3 0 3 10.4 0 20.8 0 31.1 0 1.9 0 1.9-3 0-3z"/><path d="m16.4 39.1c4 0 8 0 12 0 .8 0 1.5-.7 1.5-1.5 0 0 0 0 0-.1 0-.5-.3-1.1-.7-1.3-8.5-4-6.7-18.8 2.9-18.8 4.3 0 7 3.5 8.1 7.2 1.3 4.6-1.4 9.3-5.3 11.3-.4.2-.7.8-.7 1.3 0 .1 0 .1 0 .2 0 .8.7 1.5 1.5 1.5 4 0 8 0 12 0 1.9 0 1.9-3 0-3-2.7 0-5.5 0-8.2 0 1.2-1.2 2.3-2.7 2.5-3.1 1.2-2.2 1.6-5.2 1.2-7.7-1-6.1-5-10.8-11.1-10.8-5.6 0-9.9 4.6-11.4 9.5-.7 2.5-.5 5.6.5 8 .6 1.3 1.2 2.7 2.2 3.7 0 0 .2.2.4.5-2.5 0-4.9 0-7.4 0-1.9.1-1.9 3.1 0 3.1z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/264f.svg b/riot/emojione/svg/264f.svg new file mode 100644 index 0000000..78de283 --- /dev/null +++ b/riot/emojione/svg/264f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle fill="#24bac5" cx="32" cy="32" r="30"/><path fill="#fff" d="m49.128 42.91c-.076-.162-.163-.303-.266-.43l-1.283-1.302c-1.197-1.205-2.396-2.41-3.594-3.621-.411-.413-.911-.632-1.446-.632-.854 0-1.693.582-2.041 1.416-.325.78-.151 1.617.464 2.237l1.027 1.034c-1.096-.33-1.612-.997-1.674-2.082v-19.024c0-.243-.044-.442-.064-.505-.393-3.406-2.941-5.821-6.344-6.008-1.623-.091-3.157.529-4.353 1.729-1.133-1.042-2.586-1.637-4.236-1.729-1.625-.096-3.146.524-4.341 1.715-1.156-1.063-2.655-1.668-4.322-1.717-1.313 0-2.015 1.035-2.03 2.058-.016 1.071.689 2.178 2.069 2.219 1.21.031 2.121.967 2.163 2.238l.008 23.459c0 2.735 4.274 2.733 4.274 0l-.004-23.454c.089-1.482 1.147-2.146 2.157-2.146 1.018 0 2.079.67 2.158 2.141v23.459c0 2.734 4.273 2.734 4.273 0l-.001-23.433c.079-1.497 1.142-2.167 2.159-2.167s2.08.67 2.158 2.141v19.025c0 .188.025.373.066.512.399 3.368 2.79 5.695 6.117 5.983l-1.267 1.305c-.609.626-.776 1.466-.446 2.248.349.828 1.183 1.405 2.026 1.405.539 0 1.041-.224 1.451-.646l4.797-4.936.021-.03.002.001c.12-.134.226-.296.305-.46.351-.642.351-1.401.017-2.003"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2650.svg b/riot/emojione/svg/2650.svg new file mode 100644 index 0000000..0e7fcde --- /dev/null +++ b/riot/emojione/svg/2650.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#428bc1"/><path d="m48 17.4c0 0 0 0 0 0-.1-.8-.6-1.4-1.4-1.4 0 0 0 0-.1 0-4.8 0-9.7 0-14.5 0-1.9 0-1.9 2.9 0 2.9 3.7 0 7.4 0 11 0-6.1 6.1-12.2 12.2-18.3 18.3-2.1-2.1-4.2-4.2-6.2-6.2-1.3-1.3-3.4.7-2.1 2.1 2.1 2.1 4.2 4.2 6.2 6.2-2.1 2.1-4.2 4.2-6.2 6.2-.4.5-.5 1.1-.2 1.5.2.5.6.8 1.2.9 0 0 0 0 .1 0 .1 0 .2 0 .3 0 .1 0 .1 0 .2-.1.1 0 .1-.1.2-.1.1-.1.2-.1.2-.2 2.1-2.1 4.2-4.2 6.2-6.2 2.1 2.1 4.2 4.2 6.2 6.2 1.3 1.3 3.4-.7 2.1-2.1-2.1-2.1-4.2-4.2-6.2-6.2 6.2-6 12.3-12.1 18.4-18.2 0 3.7 0 7.4 0 11 0 1.9 2.9 1.9 2.9 0 0-4.9 0-9.7 0-14.6z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2651.svg b/riot/emojione/svg/2651.svg new file mode 100644 index 0000000..d632096 --- /dev/null +++ b/riot/emojione/svg/2651.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#44618b"/><path d="m48 37.4c0-.2 0-.3 0-.4-.4-3.7-3.2-6.1-7-6.3-2.2-.1-4.1.9-5.4 2.5-1.3-4.4-2.6-8.7-4-13-1.5-4.6-7.2-5.1-9.9-2.2-1-1.2-2.5-1.9-4.2-1.9-1.9-.1-1.9 2.9 0 2.9 1.4 0 2.6 1 2.7 2.5 0 7.1 0 14.2 0 21.3 0 1.9 2.9 1.9 2.9 0 0-7.1 0-14.1 0-21.2.6-3.3 4.1-3.3 5.5-1.2.5.8.7 2.1 1 3 .6 2.2 1.3 4.3 2 6.5.8 2.5 1.6 5.1 2.4 7.6-.1.3-.1.7-.1.8-.2.9-.5 1.7-.8 2.6-.9 2.3-2.6 4.2-5.2 4.2-1.9.1-1.9 3 0 2.9 3.9-.1 6.5-2.8 7.9-6.2 1.4 1.4 3.3 2.2 5.3 2.3 3.7.2 6.6-2.9 7-6.3-.1-.1-.1-.2-.1-.4zm-11.1.1c0-.1 0-.1 0-.2-.1-4.9 7.9-4.8 8.2.1-.3 5-7.8 5-8.2.1z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2652.svg b/riot/emojione/svg/2652.svg new file mode 100644 index 0000000..7b262f8 --- /dev/null +++ b/riot/emojione/svg/2652.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#785aa0"/><g fill="#fff" stroke="#fff" stroke-miterlimit="10"><path d="m48.8 18.2c-3.2 2.4-6.3 4.8-9.5 7.2 0-2 0-3.9 0-5.9 0-1.1-1.3-2-2.2-1.3-3.2 2.4-6.3 4.8-9.5 7.2 0-2 0-3.9 0-5.9 0-1.1-1.3-2-2.2-1.3-3.9 2.9-7.8 5.9-11.7 8.8-1.5 1.1-.1 3.8 1.5 2.6 3.2-2.4 6.3-4.8 9.5-7.2 0 2 0 3.9 0 5.9 0 1.1 1.3 2 2.2 1.3 3.2-2.4 6.3-4.8 9.5-7.2 0 2 0 3.9 0 5.9 0 1.1 1.3 2 2.2 1.3 3.2-2.4 6.3-4.8 9.5-7.2 0 2 0 3.9 0 5.9 0 2 2.9 2 2.9 0 0-2.9 0-5.9 0-8.8 0-1-1.3-2-2.2-1.3z"/><path d="m48.8 34.2c-3.2 2.4-6.3 4.8-9.5 7.2 0-2 0-3.9 0-5.9 0-1.1-1.3-2-2.2-1.3-3.2 2.4-6.3 4.8-9.5 7.2 0-2 0-3.9 0-5.9 0-1.1-1.3-2-2.2-1.3-3.9 2.9-7.8 5.9-11.7 8.8-1.5 1.1-.1 3.8 1.5 2.6 3.2-2.4 6.3-4.8 9.5-7.2 0 2 0 3.9 0 5.9 0 1.1 1.3 2 2.2 1.3 3.2-2.4 6.3-4.8 9.5-7.2 0 2 0 3.9 0 5.9 0 1.1 1.3 2 2.2 1.3 3.2-2.4 6.3-4.8 9.5-7.2 0 2 0 3.9 0 5.9 0 2 2.9 2 2.9 0 0-2.9 0-5.9 0-8.8 0-1-1.3-2-2.2-1.3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2653.svg b/riot/emojione/svg/2653.svg new file mode 100644 index 0000000..d50acfc --- /dev/null +++ b/riot/emojione/svg/2653.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#c28fef"/><path d="m45.3 45.9c-4.2-3.2-6.5-7.7-7-12.3 2.1 0 4.1 0 6.2 0 2 0 2-3.1 0-3.1-2.1 0-4.1 0-6.2 0 .4-4.6 2.7-9.1 7-12.3 1.6-1.2 0-3.9-1.6-2.7-5.2 3.9-8 9.4-8.4 15-2.1 0-4.1 0-6.2 0-.4-5.7-3.4-11.3-8.8-15.2-1.6-1.2-3.2 1.5-1.6 2.7 4.4 3.2 6.8 7.8 7.3 12.5-2.1 0-4.3 0-6.4 0-2 0-2 3.1 0 3.1 2.1 0 4.3 0 6.4 0-.4 4.7-2.8 9.3-7.2 12.5-1.6 1.2 0 3.8 1.6 2.7 5.4-3.9 8.3-9.5 8.7-15.2 2.1 0 4.1 0 6.2 0 .4 5.6 3.2 11 8.5 15 1.5 1.1 3.1-1.6 1.5-2.7z" fill="#fff" stroke="#fff" stroke-miterlimit="10"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2660.svg b/riot/emojione/svg/2660.svg new file mode 100644 index 0000000..0d9699b --- /dev/null +++ b/riot/emojione/svg/2660.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 32.9c0-14.4-30-30.9-30-30.9s-30 16.5-30 30.9c0 8.6 7.2 15.9 15.9 15.9 4.2 0 7.9-1.6 10.7-4.2l-.4 3.3c-.5 3.6-3 6.9-6.6 7.5l-4.6 1v5.6h30v-5.6l-4.7-.9c-3.6-.6-6.1-3.9-6.6-7.5l-.4-3.3c2.8 2.6 6.5 4.2 10.7 4.2 8.8 0 16-7.4 16-16" fill="#4d5357"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2663.svg b/riot/emojione/svg/2663.svg new file mode 100644 index 0000000..2ee52dd --- /dev/null +++ b/riot/emojione/svg/2663.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47 18.9c0 0-.1 0-.1 0 .1-.6.1-1.2.1-1.9 0-8.3-6.7-15-15-15s-15 6.7-15 15c0 .6.1 1.3.1 1.9 0 0-.1 0-.1 0-8.3 0-15 6.7-15 15s6.7 15 15 15c4.8 0 9.1-2.3 11.8-5.8l-.6 4.9c-.5 3.6-3 6.9-6.6 7.5l-4.6.9v5.6h30v-5.6l-4.7-.9c-3.6-.6-6.1-3.9-6.6-7.5l-.6-4.9c2.7 3.5 7 5.8 11.8 5.8 8.3 0 15-6.7 15-15s-6.6-15-14.9-15" fill="#4d5357"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2665.svg b/riot/emojione/svg/2665.svg new file mode 100644 index 0000000..6659eb1 --- /dev/null +++ b/riot/emojione/svg/2665.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M46.1,2C39.8,2,34.5,5.6,32,10.8C29.5,5.6,24.2,2,17.9,2C9.2,2,2,9.4,2,17.9C2,32.4,32,62,32,62 + s30-29.6,30-44.1C62,9.4,54.8,2,46.1,2z" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2666.svg b/riot/emojione/svg/2666.svg new file mode 100644 index 0000000..654b2f4 --- /dev/null +++ b/riot/emojione/svg/2666.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7071-.7071.7071.7071-13.2551 32.0001)" fill="#ff5a79" d="m10.8 10.8h42.4v42.4h-42.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2668.svg b/riot/emojione/svg/2668.svg new file mode 100644 index 0000000..e65cbcb --- /dev/null +++ b/riot/emojione/svg/2668.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m51.4 33.3c3.3 2.3 5.3 5.2 5.3 8.4 0 7.5-11.1 13.5-24.7 13.5s-24.7-6-24.7-13.5c0-3.2 2-6.1 5.3-8.4-6.5 3-10.6 7.5-10.6 12.4 0 9 13.4 16.3 30 16.3s30-7.3 30-16.3c0-4.9-4.1-9.4-10.6-12.4"/><path d="m20.3 2c0 0-1.8 6.1-1.8 13.3 0 6 4.6 8.9 4.6 13.9 0 9.9-6.3 16.2-6.3 16.2s2.3-5.1 2.3-13.8c0-3-4.3-9.7-4.3-14 0-9.3 5.5-15.6 5.5-15.6"/><path d="m33.4 2c0 0-1.8 6.1-1.8 13.3 0 6 4.6 8.9 4.6 13.9 0 9.9-6.3 16.2-6.3 16.2s2.3-5.1 2.3-13.8c0-3-4.3-9.7-4.3-14-.1-9.3 5.5-15.6 5.5-15.6"/><path d="m46.5 2c0 0-1.8 6.1-1.8 13.3 0 6 4.6 8.9 4.6 13.9 0 9.9-6.3 16.2-6.3 16.2s2.3-5.1 2.3-13.8c0-3-4.3-9.7-4.3-14-.1-9.3 5.5-15.6 5.5-15.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/267b.svg b/riot/emojione/svg/267b.svg new file mode 100644 index 0000000..7d80b6f --- /dev/null +++ b/riot/emojione/svg/267b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m16.2 58.1h14.2v-16.4h-20.1c0 0-.7 5.7-.7 7.7-.3 8.6 6.6 8.7 6.6 8.7" fill="#68963b"/><path d="m19.5 34.8l6.5 3.8-8.6-15.2-17.4.1 6.5 3.8-5.2 9c-.5.9-1.1 2.4-.3 3.7l8.9 15.3c1.6 2.8 4.4 2.7 6.4 2.7 0 0-9.1-1.9-3.3-11.9l6.5-11.3" fill="#83bf4f"/><path d="m62.5 32.7l-7.1-12.3-14.2 8.2 10 17.4c0 0 5.3-2.3 7-3.2 7.6-4.1 4.3-10.1 4.3-10.1" fill="#68963b"/><path d="m40.6 41.5v-7.5l-8.9 15 8.9 15v-7.5h10.4c1.1 0 2.6-.3 3.4-1.6l8.9-15.3c1.6-2.8.2-5.1-.8-6.9 0 0 2.9 8.8-8.7 8.8h-13.2" fill="#83bf4f"/><path d="M18,4.1l-7.1,12.3l14.2,8.2l10-17.4c0,0-4.6-3.5-6.3-4.5C21.6-1.7,18,4.1,18,4.1z" fill="#68963b"/><path d="m36.6 18.7l-6.5 3.8 17.4.2 8.6-15.2-6.5 3.8-5.2-9c-.6-1.1-1.6-2.3-3.1-2.3h-17.7c-3.2 0-4.6 2.4-5.6 4.1 0 0 6.2-6.9 12 3.1l6.6 11.5" fill="#83bf4f"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/267f.svg b/riot/emojione/svg/267f.svg new file mode 100644 index 0000000..3ee86eb --- /dev/null +++ b/riot/emojione/svg/267f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><g fill="#fff"><path d="m48.7 43l-2.5 2.7-6-9.2h-7.2v-4.1h8v-4.2h-8v-8.2h-4v20.6h9.1l7.4 11.4 5.5-5.6z"/><circle cx="31" cy="13" r="4"/><path d="m29.4 48.9c-4.5 0-8.2-3.7-8.2-8.2 0-3 1.7-5.7 4.1-7.1v-4.6c-4.8 1.7-8.2 6.3-8.2 11.6-.1 6.9 5.5 12.4 12.3 12.4 3.9 0 7.4-1.8 9.6-4.6l-2.5-3.7c-1.4 2.5-4.1 4.2-7.1 4.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2692.svg b/riot/emojione/svg/2692.svg new file mode 100644 index 0000000..10516b7 --- /dev/null +++ b/riot/emojione/svg/2692.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m5.3 10.4c-.9.9-.9 2.3 0 3.1l43 43c.9.9 2.3.9 3.1 0l3.1-3.1c.9-.9.9-2.3 0-3.1l-43-43c-.9-.9-2.3-.9-3.1 0l-3.1 3.1" fill="#89664c"/><g fill="#3e4347"><path d="m27.4 11.4c.9.9.9 2.3 0 3.2l-14.8 14.8c-.9.9-2.3.9-3.2 0l-6.7-6.7c-.9-.9-.9-2.3 0-3.2l14.8-14.8c.9-.9 2.3-.9 3.2 0l6.7 6.7"/><path d="m41.4 31l-5.4-5.2 5.4-5.2 5.4 5.2z"/></g><g fill="#94989b"><path d="m57.2 19.7l-9.5-9.2c-.3-.3-.9-.3-1.3 0l-3.5 3.4-3.5 3.4c-.3.3-.3.9 0 1.2l9.5 9.2c.3.3.9.3 1.3 0l7.1-6.9c.3-.3.3-.8-.1-1.1"/><path d="m41.3 4.3c-.3-.3-.9-.3-1.3 0l-7 6.9c-.3.3-.3.9 0 1.2 0 0 2 1.9 2 1.9l8.4-8.1c-.1 0-2.1-1.9-2.1-1.9"/></g><g fill="#3e4347"><path d="m42.9 13.9l3.5-3.4c0 0-2 1.1-2.3-1.8-.1-1.2-.4-1.9-.8-2.4l-8.3 8c.4.3 1.2.6 2.4.7 3.1.3 1.9 2.3 1.9 2.3l3.6-3.4"/><path d="m58 41.1c9.7-9.4-1.1-19.8-1.1-19.8l-6.3 6.1c0 0 7.9 5.9 5.7 13.3-.3.9-.7 1.6-.5 1.9.3.3 1.5-.8 2.2-1.5"/></g><path d="m38.7 28.4l-3.4-3.4c0 0-2.8 1.7-5.9 4.7-3.4 3.3-5.3 7.7-9.8 12-6.8 6.6-10.1 8.1-12.8 10-1 .7-.9.9 0 1.8l2.9 2.8 29-27.9" fill="#f2b200"/><path d="m38.7 28.4l3.5 3.4c0 0-1.8 2.7-4.9 5.7-3.4 3.3-7.9 5.2-12.4 9.5-6.8 6.6-8.4 9.6-10.5 12.3-.8 1-.9.9-1.8 0l-2.9-2.8 29-28.1" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2693.svg b/riot/emojione/svg/2693.svg new file mode 100644 index 0000000..b5f5418 --- /dev/null +++ b/riot/emojione/svg/2693.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b2c1c0"><path d="m3.8 27c0 0-3.7 15.2-.3 17.8 2.2 1.6 3.4-6.3 3.4-6.3s4.2 2.1 5.1-.1c.8-2.3-3.4-2.4-8.2-11.4"/><path d="m60.2 27c0 0 3.7 15.2.3 17.8-2.2 1.6-3.4-6.3-3.4-6.3s-4.2 2.1-5.1-.1c-.8-2.3 3.4-2.4 8.2-11.4"/><path d="m59 35c-23.1 28.1-24.1 6.2-24.1.4-.1-5.4-.5-21.4-.5-21.4h-4.8c0 0-.4 16-.5 21.4 0 5.8-1 27.7-24.1-.4 0 0-.7 9.1 16 20.3 5.6 3.7 11 6.7 11 6.7s5.4-3 11-6.7c16.7-11.2 16-20.3 16-20.3"/></g><path d="m34.5 20c-.1-3.4-.1-6-.1-6h-4.8c0 0-.1 2.6-.1 6h5" opacity=".5" fill="#62727a"/><path d="m32 2c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7m0 11c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4" fill="#b2c1c0"/><g fill="#62727a"><path d="m27 12.5c.2-.2 2 2.1 5 2 2.9.1 4.8-2.2 5-2 .3.1-1.4 3-5 3-3.6 0-5.3-2.9-5-3" opacity=".5"/><path d="m41.3 50c-3.3 0-7.3-2.5-7.4-14.6 0-3-.2-9.4-.3-14.4h-1.6v39.9c1.4-.8 5.9-3.4 10.5-6.4 9.7-6.5 13.4-12.2 14.7-15.7-6.7 7.5-11.9 11.2-15.9 11.2" opacity=".5"/></g><path d="m41 22c-5.9 1.4-12.1 1.4-18 0 0-1.3 0-2.6 0-3.9 5.9-1.4 12.1-1.4 18 0 0 1.2 0 2.6 0 3.9" fill="#b2c1c0"/><path d="m40 21.1c0-.3-3.6 0-8-.1-4.4 0-8-.2-8 .1 0 .3 3.5 1 8 .9 4.5 0 8-.7 8-.9" opacity=".5" fill="#62727a"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2694.svg b/riot/emojione/svg/2694.svg new file mode 100644 index 0000000..368fdc0 --- /dev/null +++ b/riot/emojione/svg/2694.svg @@ -0,0 +1,3 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M48,24c7.5-6.2,9.7-12.9,10.3-17C60.6,5.4,62,4,62,4s1.3,10.9-10.5,20.7C36.2,37.5,21,45.5,21,45.5l-1.3-1.9 + C24.4,40.9,36.2,33.8,48,24z" fill="#96a7a8"/><path d="m19.6 43.6l-1.2-1.8c24.4-20.4 24.9-29.8 24.9-29.8 6.3.1 11.6-2.7 15-5.1-.6 4-2.8 10.7-10.3 17-11.8 9.9-23.6 17-28.4 19.7" fill="#b8c2c4"/><path d="m12.4 45.9c-.9.8-.8 2.3.3 3.3 1.1 1 2.7 1.1 3.6.3.9-.8.8-2.3-.3-3.3-1-1-2.7-1.1-3.6-.3" fill="#c19a61"/><path d="m12.9 46c-.8.7-.7 2 .3 2.8.9.9 2.3 1 3.1.2.8-.7.7-2-.3-2.8-.9-.8-2.3-1-3.1-.2" fill="#dbb471"/><path d="m10.2 47.8c-.9.8-.8 2.3.3 3.3 1.1 1 2.7 1.1 3.6.3.9-.8.8-2.3-.3-3.3-1.1-1-2.7-1.1-3.6-.3" fill="#c19a61"/><path d="m10.7 47.8c-.8.7-.7 2 .3 2.8.9.9 2.3 1 3.1.2.8-.7.7-2-.3-2.8-.9-.8-2.3-.9-3.1-.2" fill="#dbb471"/><path d="m8 49.7c-1 .8-.8 2.3.3 3.3 1.1 1 2.7 1.1 3.6.3.9-.8.8-2.3-.3-3.3-1.1-1-2.7-1.2-3.6-.3" fill="#c19a61"/><path d="m8.4 49.7c-.8.7-.7 2 .3 2.8.9.9 2.3 1 3.1.2.8-.7.7-2-.3-2.8-.9-.8-2.3-.9-3.1-.2" fill="#dbb471"/><path d="m5.7 51.5c-.9.9-.7 2.3.3 3.3 1.1 1 2.7 1.1 3.6.3.9-.8.8-2.3-.3-3.3-1-1-2.6-1.1-3.6-.3" fill="#c19a61"/><path d="m6.2 51.6c-.8.7-.7 2 .3 2.8.9.9 2.3 1 3.1.2.8-.7.7-2-.3-2.8-.9-.9-2.3-1-3.1-.2" fill="#dbb471"/><path d="m3 53.8c3.1-2.7 1.7-.8 3.7 1.2 5.8 6 15.6-2.9 9-8.1-3.8-3-1.1-6.9.8-8.6 1.2-1 .3.8 3.8 4.9 3.5 4.2 1.9 10.8-2.7 14.7-4.8 4-10.6 1.5-12.8-1.2-1.6-1.8-4.3-.9-1.8-2.9" fill="#89664c"/><path d="m11 58.1c1.6 0 3.8-.5 5.6-2.2 2.1-2.1 2.9-4.7 2.3-7.3 1.4 2.9 1 6-1.3 8.2-1.6 1.6-3.7 1.9-5.2 1.8-1.3 0-2.6-.3-3.8-.8.8.3 1.6.4 2.4.3" fill="#dbb471"/><path d="M16,24C8.5,17.7,6.3,11,5.7,7C3.4,5.4,2,4,2,4S0.8,14.9,12.5,24.7C27.8,37.5,43,45.5,43,45.5l1.3-1.9 + C39.6,40.9,27.8,33.8,16,24z" fill="#b0bfc1"/><path d="m44.4 43.6l1.2-1.8c-24.4-20.4-24.9-29.8-24.9-29.8-6.3.1-11.6-2.7-15-5 .6 4 2.8 10.7 10.3 17 11.8 9.8 23.6 16.9 28.4 19.6" fill="#c9d1d3"/><path d="m51.6 45.9c.9.8.8 2.3-.3 3.3-1.1 1-2.7 1.1-3.6.3-.9-.8-.8-2.3.3-3.3 1-1 2.7-1.1 3.6-.3" fill="#c19a61"/><path d="m51.1 46c.8.7.7 2-.3 2.8-.9.9-2.3 1-3.1.2-.8-.7-.7-2 .3-2.8.9-.8 2.3-1 3.1-.2" fill="#dbb471"/><path d="m53.8 47.8c.9.8.8 2.3-.3 3.3-1.1 1-2.7 1.1-3.6.3-.9-.8-.8-2.3.3-3.3 1.1-1 2.7-1.1 3.6-.3" fill="#c19a61"/><path d="m53.3 47.8c.8.7.7 2-.3 2.8-.9.9-2.3 1-3.1.2-.8-.7-.7-2 .3-2.8.9-.8 2.3-.9 3.1-.2" fill="#dbb471"/><path d="m56 49.7c.9.8.8 2.3-.3 3.3-1.1 1-2.7 1.1-3.6.3-.9-.8-.8-2.3.3-3.3 1.1-1 2.7-1.2 3.6-.3" fill="#c19a61"/><path d="m55.6 49.7c.8.7.7 2-.3 2.8-.9.9-2.3 1-3.1.2-.8-.7-.7-2 .3-2.8.9-.8 2.3-.9 3.1-.2" fill="#dbb471"/><path d="m58.3 51.5c.9.8.8 2.3-.3 3.3-1.1 1-2.7 1.1-3.6.3-.9-.8-.8-2.3.3-3.3 1-1 2.6-1.1 3.6-.3" fill="#c19a61"/><path d="m57.8 51.6c.8.7.7 2-.3 2.8-.9.9-2.3 1-3.1.2-.8-.7-.7-2 .3-2.8.9-.9 2.3-1 3.1-.2" fill="#dbb471"/><path d="m61 53.8c-3.2-2.6-1.7-.8-3.7 1.2-5.8 6-15.6-2.9-9-8.1 3.8-3 1.1-6.9-.8-8.6-1.2-1-.3.8-3.8 4.9-3.5 4.2-1.9 10.8 2.7 14.7 4.8 4 10.6 1.5 12.8-1.2 1.6-1.8 4.3-.9 1.8-2.9" fill="#89664c"/><path d="m53 58.1c-1.6 0-3.8-.5-5.6-2.2-2.1-2.1-2.9-4.7-2.3-7.3-1.4 2.9-1 6 1.3 8.2 1.6 1.6 3.7 1.9 5.2 1.8 1.3 0 2.6-.3 3.8-.8-.8.3-1.6.4-2.4.3" fill="#dbb471"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2696.svg b/riot/emojione/svg/2696.svg new file mode 100644 index 0000000..c8042bb --- /dev/null +++ b/riot/emojione/svg/2696.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d0d0d0"><path d="m23.6 36.7h-20.7l10.3-26.2 10.4 26.2m-18-1.9h15.3l-7.7-19.5-7.6 19.5"/><path d="m61.1 36.7h-20.7l10.3-26.2 10.4 26.2m-18-1.9h15.3l-7.7-19.5-7.6 19.5"/></g><path d="m50.3 10.2c0 0-2.2-.8-3.4-1.3-4.3-1.8-9.6-3.9-14.9-3.9s-10.6 2.2-14.9 4c-1.2.5-3.4 1.3-3.4 1.3l-3.3 2.5c0 0 2.7 1.7 4 1.2 1.1-.4 2.2-.9 3.5-1.4 4.1-1.7 9.2-3.8 14.1-3.8s10 2.1 14.1 3.8c1.2.5 2.4 1 3.5 1.4 1.4.5 4-1.2 4-1.2l-3.3-2.6" fill="#b8c2c4"/><g fill="#428bc1"><path d="M2,34.8C2,41,7,46,13.2,46s11.2-5,11.2-11.2H2z"/><path d="M39.5,34.8c0,6.2,5,11.2,11.2,11.2S62,41,62,34.8H39.5z"/></g><path fill="#b8c2c4" d="m30.1 12.3h3.8v41.2h-3.8z"/><path fill="#d0d0d0" d="m29 18.6h6.1v34.9h-6.1z"/><path fill="#545b60" d="m27.7 36.7h8.6v19.7h-8.6z"/><circle cx="13.2" cy="13.2" r="3.8" fill="#dbb471"/><g fill="#545b60"><circle cx="50.8" cy="13.2" r="3.8"/><circle cx="13.2" cy="13.2" r="3.8"/></g><g fill="#fff"><circle cx="13.2" cy="13.2" r="1.9"/><circle cx="50.8" cy="13.2" r="1.9"/></g><g fill="#d0d0d0"><circle cx="32" cy="7.6" r="5.6"/><path d="m32 45.1c-8.3 0-15 4.2-15 9.4h30c0-5.2-6.7-9.4-15-9.4"/></g><path fill="#545b60" d="m15.1 54.5h33.8v3.8h-33.8z"/><path fill="#6b767c" d="m11.4 58.2h41.2v3.8h-41.2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2697.svg b/riot/emojione/svg/2697.svg new file mode 100644 index 0000000..6e63dac --- /dev/null +++ b/riot/emojione/svg/2697.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.5 26.9l1.5-2.7c0 0-19.8-12.1-26.8-13.7-1.5-.4-3-.6-4.6-.6-10.4 0-18.8 8.6-18.8 19.2 0 10.6 8.4 19.2 18.8 19.2s18.8-8.6 18.8-19.2c0-2.1-.3-4.1-1-6l12.1 3.8" opacity=".5" fill="#a1d8f2"/><path d="M14.6,29c0,9.1,7.2,16.6,16.2,16.6S46.9,38.1,46.9,29H14.6z" fill="#bd80ff"/><g fill="#94989b"><path d="m15.5 34.6h-3.6l-9.9 27.4h1.8z"/><path d="m46 34.6h3.6l9.8 27.4h-1.8z"/><path d="m31.6 62h-1.8l-.9-27.4h3.6z"/></g><path d="m9.2 36.5c0 1 .8 1.8 1.8 1.8h39.5c1 0 1.8-.8 1.8-1.8 0-1-.8-1.8-1.8-1.8h-39.5c-1-.1-1.8.8-1.8 1.8" fill="#c5ccd6"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2699.svg b/riot/emojione/svg/2699.svg new file mode 100644 index 0000000..9230ed0 --- /dev/null +++ b/riot/emojione/svg/2699.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#3e4347"><path d="m14.3 18.3c1.1.2 1.6 1.3 1.1 2.3l-3.2 7.6c-.4 1.1-1.5 1.4-2.4.9l-6.8-4.2c-.9-.6-1.3-1.9-.9-3l1.6-3.8c.4-1 1.7-1.7 2.7-1.5l7.9 1.7"/><path d="m9.8 34.8c.9-.6 2-.2 2.5.9l3.2 7.6c.4 1.1-.1 2.1-1.1 2.3l-7.8 1.7c-1.1.2-2.3-.4-2.7-1.5l-1.6-3.8c-.4-1.1 0-2.4.9-3l6.6-4.2"/><path d="m18.3 49.7c.2-1.1 1.3-1.6 2.3-1.1l7.6 3.2c1.1.4 1.4 1.5.9 2.5l-4.3 6.7c-.6.9-1.9 1.3-3 .9l-3.8-1.6c-1-.4-1.7-1.7-1.5-2.7l1.8-7.9"/><path d="m34.8 54.2c-.6-.9-.2-2 .9-2.5l7.6-3.2c1.1-.4 2.1.1 2.3 1.1l1.7 7.8c.2 1.1-.4 2.3-1.5 2.7l-3.8 1.6c-1.1.4-2.4 0-3-.9l-4.2-6.6"/><path d="m49.7 45.7c-1.1-.2-1.6-1.3-1.1-2.3l3.2-7.6c.4-1 1.5-1.4 2.5-.9l6.8 4.3c.9.6 1.3 1.9.9 3l-1.6 3.8c-.4 1-1.7 1.7-2.7 1.5l-8-1.8"/><path d="m54.2 29.2c-.9.6-2 .2-2.5-.9l-3.2-7.6c-.4-1.1.1-2.1 1.1-2.3l7.8-1.7c1.1-.2 2.3.4 2.7 1.5l1.6 3.8c.4 1 0 2.4-.9 3l-6.6 4.2"/><path d="m45.7 14.3c-.2 1.1-1.3 1.6-2.3 1.1l-7.6-3.2c-1.1-.4-1.4-1.5-.9-2.5l4.2-6.7c.6-.9 1.9-1.3 3-.9l3.8 1.6c1 .4 1.7 1.7 1.5 2.7l-1.7 7.9"/><path d="m29.2 9.8c.6.9.2 2-.9 2.5l-7.6 3.2c-1 .4-2.1-.1-2.3-1.1l-1.7-7.8c-.2-1.1.4-2.3 1.5-2.7l3.8-1.6c1.1-.4 2.4 0 3 .9l4.2 6.6"/><path d="M32,6.7C18,6.7,6.7,18,6.7,32S18,57.3,32,57.3C46,57.3,57.3,46,57.3,32C57.3,18,46,6.7,32,6.7z M32,47.9 + c-8.8,0-15.9-7.1-15.9-15.9c0-8.8,7.1-15.9,15.9-15.9c8.8,0,15.9,7.1,15.9,15.9C47.9,40.8,40.8,47.9,32,47.9z"/></g><path d="m32 12.3c-10.9 0-19.7 8.8-19.7 19.7 0 10.9 8.8 19.7 19.7 19.7s19.7-8.8 19.7-19.7-8.8-19.7-19.7-19.7m0 27.2c-4.1 0-7.5-3.4-7.5-7.5s3.4-7.5 7.5-7.5 7.5 3.4 7.5 7.5-3.4 7.5-7.5 7.5" fill="#94989b"/><path d="m32 17c-8.3 0-15 6.7-15 15s6.7 15 15 15c8.3 0 15-6.7 15-15s-6.7-15-15-15m0 22.5c-4.1 0-7.5-3.4-7.5-7.5s3.4-7.5 7.5-7.5 7.5 3.4 7.5 7.5-3.4 7.5-7.5 7.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/269b.svg b/riot/emojione/svg/269b.svg new file mode 100644 index 0000000..0b02d3c --- /dev/null +++ b/riot/emojione/svg/269b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57.9 32c.2-.2.3-.4.5-.6 3.9-5.6 4.7-10.7 2.3-14.5-2.2-3.5-7-5.5-13.4-5.5-1.1 0-2.3.1-3.5.2-2.9-5.9-7.1-9.6-11.8-9.6s-8.9 3.7-11.8 9.6c-1.2-.1-2.4-.2-3.5-.2-6.4 0-11.2 1.9-13.4 5.5-2.4 3.8-1.6 9 2.3 14.5.2.2.4.4.5.6-.2.2-.3.4-.5.6-3.8 5.6-4.6 10.8-2.2 14.6 2.2 3.5 7 5.5 13.4 5.5 1.1 0 2.3-.1 3.5-.2 2.8 5.8 7 9.5 11.7 9.5 4.7 0 8.9-3.7 11.8-9.6 1.2.1 2.4.2 3.5.2 6.4 0 11.2-1.9 13.4-5.5 2.4-3.8 1.6-9-2.3-14.5-.2-.2-.4-.4-.5-.6m-10.7-18.9c5.7 0 9.9 1.6 11.8 4.6 2 3.2 1.2 7.7-2.3 12.7 0 0 0 0-.1.1-2.5-3-5.8-6-9.7-8.6-.6-3.2-1.4-6.1-2.5-8.7 1-.1 2-.1 2.8-.1m-7.4 31.3c-2.6 1.4-5.2 2.5-7.8 3.5-2.6-1-5.3-2.1-7.8-3.5-1.9-1-3.7-2.1-5.5-3.3-.5-2.9-.8-6-.8-9.2s.3-6.3.8-9.2c1.7-1.2 3.5-2.2 5.5-3.3 2.6-1.4 5.2-2.5 7.8-3.5 2.6 1 5.3 2.1 7.8 3.5 1.9 1 3.7 2.1 5.5 3.3.5 2.9.8 6 .8 9.2s-.3 6.3-.8 9.2c-1.7 1.2-3.6 2.3-5.5 3.3m5-.8c-.6 2.5-1.3 4.9-2.3 7-2.6-.3-5.2-.9-7.9-1.8 2.1-.8 4.1-1.8 6.1-2.8 1.5-.8 2.8-1.6 4.1-2.4m-15.4 5.2c-2.7.8-5.4 1.4-7.9 1.8-.9-2.1-1.7-4.4-2.3-7 1.3.8 2.6 1.6 4 2.3 2.1 1.1 4.1 2 6.2 2.9m-12.8-9.1c-3.2-2.4-6-5-8.1-7.7 2.1-2.7 4.9-5.3 8.1-7.7-.3 2.4-.5 5-.5 7.7 0 2.7.1 5.2.5 7.7m2.6-19.3c.6-2.5 1.3-4.9 2.3-7 2.6.3 5.2.9 7.9 1.8-2.1.8-4.1 1.8-6.1 2.9-1.5.7-2.8 1.5-4.1 2.3m15.4-5.2c2.7-.8 5.4-1.4 7.9-1.8.9 2.1 1.7 4.4 2.3 7-1.3-.8-2.6-1.6-4-2.3-2.1-1.1-4.1-2-6.2-2.9m12.8 9.1c3.2 2.4 6 5 8.1 7.7-2.1 2.7-4.9 5.3-8.1 7.7.3-2.4.5-5 .5-7.7 0-2.7-.1-5.2-.5-7.7m-15.4-20.4c3.8 0 7.2 3 9.8 7.9-3.1.5-6.4 1.3-9.8 2.5-3.3-1.2-6.6-2-9.8-2.5 2.6-4.9 6-7.9 9.8-7.9m-24.8 26.5c-3.5-5-4.3-9.5-2.3-12.7 1.9-3 6.1-4.6 11.8-4.6.9 0 1.8 0 2.7.1-1.1 2.6-1.9 5.5-2.5 8.7-3.8 2.6-7.1 5.6-9.7 8.5m9.6 20.5c-5.7 0-9.9-1.6-11.8-4.6-2-3.2-1.2-7.7 2.3-12.7 0 0 0-.1.1-.1 2.5 3 5.8 6 9.7 8.6.6 3.2 1.4 6.1 2.5 8.7-1 .1-1.9.1-2.8.1m15.2 9.2c-3.8 0-7.2-3-9.8-7.9 3.1-.5 6.4-1.3 9.8-2.5 3.3 1.2 6.6 2 9.8 2.5-2.6 4.9-6 7.9-9.8 7.9m27-13.8c-1.9 3-6.1 4.6-11.8 4.6-.9 0-1.8 0-2.7-.1 1.1-2.6 1.9-5.5 2.5-8.7 3.8-2.6 7.1-5.6 9.7-8.6 0 0 0 .1.1.1 3.5 5 4.3 9.5 2.2 12.7" fill="#0071bc"/><circle cx="32" cy="32" r="5.6" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/269c.svg b/riot/emojione/svg/269c.svg new file mode 100644 index 0000000..ce5bad9 --- /dev/null +++ b/riot/emojione/svg/269c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#eda454"><path d="m36.8 51c-.3-1.1 1.1-3.8-1.6-4.5-2.1-.5-3.2 1.5-3.2 1.5s-1.1-2-3.2-1.5c-2.7.7-1.3 3.4-1.6 4.5-.7 2.8-3.2 2.8-3.2 2.8s1.2 1.8 3.2 1.8c1.4 0 1.8-.8 1.8-.8-.3 3 3 7.2 3 7.2s3.4-4.2 3-7.2c0 0 .4.8 1.8.8 2 0 3.2-1.8 3.2-1.8s-2.5 0-3.2-2.8"/><path d="m55.5 25.7c-7.3-5.9-17.5.5-19.8 10.9h-1.1c.8-2.8 2.4-6.7 5.6-10.3 8-9.3-6-14.6-8.2-24.3-2.2 9.7-16.2 15-8.1 24.3 3.2 3.6 4.8 7.5 5.6 10.3h-1.1c-2.3-10.5-12.6-16.9-19.9-10.9-6.9 5.6-2.7 14.5 3.6 16.1 0 0-2.4-7.5 5.1-7.5 2.3 0 4 1 5.1 2.3h-.9v.9h1.4v.9h-1.4v1.6h1.4v1h-1.4v.9h1.4c-.5.6-1.3.9-2.3.9-3.6 0-3.1-3.5-3.1-3.5-3.2.5-6.5 7.2-1.4 10.9 5.4 4 11.9-1 12.7-8.3h.6v4c0 0 1.9 0 2.7 1.4.8-1.4 2.7-1.4 2.7-1.4v-4h.6c.9 7.3 7.3 12.3 12.7 8.3 5.1-3.7 1.8-10.4-1.4-10.9 0 0 .5 3.5-3.1 3.5-1.1 0-1.8-.4-2.3-.9h1.4v-.9h-1.4v-.9h1.4v-1.6h-1.4v-.9h1.4v-.9h-.9c1.1-1.3 2.8-2.3 5.1-2.3 7.5 0 5.1 7.5 5.1 7.5 6.2-1.7 10.4-10.6 3.6-16.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26a0.svg b/riot/emojione/svg/26a0.svg new file mode 100644 index 0000000..e6b1420 --- /dev/null +++ b/riot/emojione/svg/26a0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M5.9,62c-3.3,0-4.8-2.4-3.3-5.3L29.3,4.2c1.5-2.9,3.9-2.9,5.4,0l26.7,52.5c1.5,2.9,0,5.3-3.3,5.3H5.9z" fill="#ffce31"/><g fill="#231f20"><path d="m27.8 23.6l2.8 18.5c.3 1.8 2.6 1.8 2.9 0l2.7-18.5c.5-7.2-8.9-7.2-8.4 0"/><ellipse cx="32" cy="49.6" rx="4.2" ry="4.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26a1.svg b/riot/emojione/svg/26a1.svg new file mode 100644 index 0000000..ac811c5 --- /dev/null +++ b/riot/emojione/svg/26a1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ffce31" d="m44.5 2l-9 2.5-6.1-2.5-9.9 34.4h10.4l-9.1 25.6 22.4-34.4h-13.5z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26aa.svg b/riot/emojione/svg/26aa.svg new file mode 100644 index 0000000..fb39d3e --- /dev/null +++ b/riot/emojione/svg/26aa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#d0d0d0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26ab.svg b/riot/emojione/svg/26ab.svg new file mode 100644 index 0000000..137a56b --- /dev/null +++ b/riot/emojione/svg/26ab.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26b0.svg b/riot/emojione/svg/26b0.svg new file mode 100644 index 0000000..8fb8eb1 --- /dev/null +++ b/riot/emojione/svg/26b0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#594640" d="m5.4 39.6l43.5 19.4v-11.2l-43.5-19.4z"/><path fill="#3f2e29" d="M48.9 59 64 45.7 64 34.5 48.9 47.8z"/><path fill="#6d5650" d="m0 24.9l5.4 14.7v-11.2l-5.4-14.7z"/><path fill="#89664c" d="M0 13.7 5.4 28.4 48.9 47.8 64 34.5 32 9.8 13.1 5z"/><path fill="#dbb471" d="m2.1 13.2l5.1 13.5 41.5 18.9 13.5-11.4-30.6-23.9-18.5-4.6z"/><path fill="#89664c" d="m14.7 12.8l-3.1 2 5.4 3.2-5 3.4 3 1.8 5.3-3.4 22.7 12 2.7-2.3-22.3-12 5-3.4-2.9-1.8-5.5 3.4z"/><path d="m53.1 22.8c-3 2-6.2 3.6-9.8 4.5-1.8.4-3.6.7-5.4.7-.9 0-1.8 0-2.8-.1-.5-.1-.9-.1-1.4-.2-.2 0-.5-.1-.7-.2-.2-.1-.4-.1-.7-.2l.5-1.4c.1.1.4.1.6.2.2.1.4.1.6.2.4.1.8.2 1.3.3.8.2 1.7.3 2.6.3 1.7.1 3.5 0 5.2-.3 3.6-.7 6.9-2 10-3.8" fill="#75a843"/><path d="m44.6 24.4c-.2 2.4-2.2 2.7-2.2 2.7s-2.1-1-1.8-3.4c.2-1.6 2.4-4 2.4-4s1.8 3.1 1.6 4.7" fill="#83bf4f"/><path d="m50.9 21.3c-2.2 2.2-3.4 3.2-2.7 5 .7 1.8 6.5 2.7 6.9-.6.4-3.3 2.5-4 2.5-4s-3.1-4-6.7-.4" fill="#871212"/><g fill="#991d1d"><path d="m52.6 27.1c-3.1-.3-4.6.2-5.4-1.6-.7-1.8 3.9-7.8 6.1-5.2 2.6 3.2 4.4 3.6 4.4 3.6s-.5 3.6-5.1 3.2"/><path d="m55 26.4c1.1-.5 0-5.7 1.4-7.3 0 0-2.6-1.6-3.9 0-.8.9-1.2 8.8 2.5 7.3"/></g><path d="m53 24.2c-2.4 4.5-5.2 3.8-6.2 1.4-1-2.4.2-6 3.2-6.5 3-.5 4.8-2.4 4.8-2.4s0 4-1.8 7.5" fill="#ad2727"/><path d="m52.1 21.3c-4.7-2-6.3 2-5.3 4.4 1 2.4 4 3.4 6.7 2.3 2.7-1.2 4.7-1.1 4.7-1.1s-2.7-4.2-6.1-5.6" fill="#cc3636"/><path d="m48 25.3c1.6 3.7-.5 2.7-1.5.3-2.4-6 2.8-7.9 2.8-7.9s-2.7 4.3-1.3 7.6" fill="#75a843"/><path d="m48 25.3c-.8-.8-2.4-3.2-1.9-.7 1 5.1 7.6 4.5 7.6 4.5s-3.3-1.3-5.7-3.8" fill="#83bf4f"/><path d="m53.2 32.5c-3.5-.9-6.8-2.3-9.8-4.4-1.5-1-2.9-2.3-4.1-3.6-.6-.7-1.2-1.4-1.7-2.2-.3-.4-.5-.8-.8-1.2-.1-.2-.2-.4-.3-.6-.1-.2-.2-.4-.3-.7l1.4-.5c.1.2.1.4.2.6.1.2.2.4.3.6.2.4.4.8.6 1.1.5.8 1 1.5 1.5 2.2 1.1 1.4 2.4 2.6 3.7 3.8 2.7 2.1 5.9 3.8 9.3 4.9" fill="#75a843"/><path d="m52.8 29.8c-3.1-.2-4.6-.5-5.5 1.3-.8 1.8 2.4 6.8 5.1 4.8 2.6-1.9 4.6-.8 4.6-.8s.8-4.9-4.2-5.3" fill="#871212"/><path d="m49.7 35c-1.9-2.5-3.3-3.4-2.4-5.2.8-1.8 8.3-2.2 7.9 1.1-.6 4.2.3 5.7.3 5.7s-3 2.2-5.8-1.6" fill="#991d1d"/><path d="m51.8 36.3c1.1.5 4.2-3.8 6.2-3.8 0 0-.5-3.1-2.6-3-1.1.1-7.1 5.1-3.6 6.8" fill="#ad2727"/><path d="m52.1 33.3c-4.9 1.2-6.3-1.4-5.2-3.8 1.1-2.4 4.5-3.9 6.8-1.9 2.3 1.9 5 2.1 5 2.1s-2.9 2.7-6.6 3.6" fill="#e24b4b"/><path d="m53.6 30.8c-1.7-4.9-5.7-3.5-6.8-1.1-1.1 2.4.2 5.3 2.8 6.6 2.7 1.3 4 2.8 4 2.8s1.2-4.8 0-8.3" fill="#f25151"/><path d="m47.9 30.3c-1.7 3.7-2.3 1.4-1.2-1 2.7-5.8 7.6-3.2 7.6-3.2s-4.9 1-6.4 4.2" fill="#75a843"/><path d="m47.9 30.3c.1-1.2.7-4-.8-1.9-3 4.1 1.8 8.8 1.8 8.8s-1.2-3.4-1-6.9" fill="#83bf4f"/><path fill="#b7925e" d="m6 36.5l41.7 18.6v-2l-41.7-18.6z"/><path fill="#dbb471" d="m8.4 40.1l2.5 1.1v-7.6l-2.5-1.2z"/><path fill="#3f2e29" d="m10.9 41.2l1.3-.7v-1l-.6-.3v-1.4l.6-.3v-4.6l-1.3.7z"/><path fill="#89664c" d="m8.4 32.4l2.5 1.2 1.3-.7-2.6-1.1z"/><path fill="#dbb471" d="m42.4 55l2.5 1.2v-7.6l-2.5-1.2z"/><path fill="#3f2e29" d="m44.9 56.2l1.3-.8v-1l-.6-.3v-1.4l.6-.3v-4.6l-1.3.8z"/><path fill="#89664c" d="m42.4 47.4l2.5 1.2 1.3-.8-2.6-1.1z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26b1.svg b/riot/emojione/svg/26b1.svg new file mode 100644 index 0000000..a752a31 --- /dev/null +++ b/riot/emojione/svg/26b1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m45.4 55.1c0 .1-26.8.1-26.8 0-.9 1-1.2 2-1 2.3.5.8 1.2 1.5 2 2 3.4 2.4 9.3 2.6 12.4 2.6s9-.2 12.4-2.6c.8-.6 1.5-1.2 2-2 .2-.4-.1-1.3-1-2.3" fill="#ffd85c"/><path d="m42.4 52.9h-20.8c-1.4.6-2.4 1.4-3 2.2 0 .1.3 1.1 1.8 2.1 1.7 1.2 5.1 2.6 11.6 2.6s9.9-1.3 11.6-2.6c1.5-1.1 1.7-2.1 1.8-2.1-.7-.8-1.6-1.6-3-2.2" fill="#cf4d4d"/><path d="m23.1 54.1c1.4.7 4 1.5 8.9 1.5 4.4 0 7-.7 8.5-1.3 1.5-.7 1.9-1.4 1.9-1.4v-.9h-20.8v.9c0 0 .3.6 1.5 1.2" fill="#ffd85c"/><path d="m51.8 23.1c-.5-4.4-7-5.9-7-5.9h-25.6c0 0-6.5 1.6-7 5.9-1.8 15.3 9.4 28.9 9.4 28.9s.5.4 1.5.8c1.6.7 4.5 1.6 8.9 1.6 4.1 0 6.8-.7 8.5-1.4 1.3-.5 1.9-1 1.9-1s11.2-13.6 9.4-28.9" fill="#cf4d4d"/><path d="m19.2 16.2v1c0 0 .4.2 1.7.5 1.7.3 5.1.8 11.1.8 6 0 9.4-.5 11.1-.9 1.2-.3 1.7-.5 1.7-.5v-1h-25.6z" fill="#ffd85c"/><path d="m41.2 13.4c0-.9 0-2.5 0-3.4 0-.7.3-1.6 1.9-2.3h-22.2c1.6.7 1.9 1.6 1.9 2.3 0 .9 0 2.5 0 3.4 0 1.5-3.6 2.7-3.6 2.7s.4.2 1.7.5c1.7.4 5.1.9 11.1.9 6 0 9.4-.5 11.1-.9 1.2-.3 1.7-.5 1.7-.5s-3.6-1.2-3.6-2.7" fill="#cf4d4d"/><g fill="#ffd85c"><path d="m20.9 4.5v3.2c0 0 .5.1 1.5.2 1.8.2 5.1.5 9.7.5s7.9-.3 9.7-.5c1-.1 1.5-.2 1.5-.2v-3.2h-22.4"/><path d="m37 2.1c-2.2-.1-5-.1-5-.1s-2.8 0-5 .1c-.6 0-1.2.1-1.7.2v.5h13.3v-.5c-.4-.1-1-.2-1.6-.2"/></g><path d="m38.7 2.8h-13.4c-2.8.3-4.5 1.7-4.5 1.7s.5.1 1.5.2c1.7.3 5 .6 9.7.6s8-.3 9.7-.5c1-.1 1.5-.2 1.5-.2s-1.8-1.5-4.5-1.8" fill="#cf4d4d"/><g fill="#ffd85c"><path d="m33.5 48.8c-1 0-2 0-3 0-.1-8-.1-16-.2-24.1 1.1 0 2.3 0 3.4 0-.1 8.1-.1 16.1-.2 24.1"/><path d="m23.9 33.8c0-1.1-.1-2.1-.1-3.2 5.5.8 11.1.8 16.5 0 0 1.1-.1 2.1-.1 3.2-5.5.8-10.9.8-16.3 0"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26bd.svg b/riot/emojione/svg/26bd.svg new file mode 100644 index 0000000..dc2380e --- /dev/null +++ b/riot/emojione/svg/26bd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="32" rx="29.3" ry="29.3" fill="#fff"/><path d="m61.9 32c0-.7.2-10.9-5.8-17.5-.3-.6-1.5-3-5.6-5.9-2.7-2.1-5.5-3.6-5.8-3.8 0 0 0 0 0 0-.3-.2-5.3-2.8-11.3-2.8-.5 0-.9 0-1.4.1-4.6-.1-8.8 1.1-11.9 2.5-3.2 1.4-5.3 2.8-5.5 3-3.4 1.9-9.9 9.5-10.4 13.6-2.1 2.6-3.8 14.5 0 21.7 2.7 10 12.7 15 13.5 15.4.5.3 5.9 3.7 12.6 3.7.3 0 .6 0 .9 0 .6.1 1.1.1 1.7.1 7.2 0 18-5.1 20.2-9.1 6.2-4.6 9.4-16.2 8.8-21m-44.1 15.1c-2.9-4.6-4.5-10.7-4.9-12.1.9-1.4 5.4-8 7.9-10 1.4.3 7.5 1.4 13.2 2.4.7 1.9 3.9 10 4.8 13.2-1 1.2-4.9 5.7-8.7 9.2-4.1.1-11-2.3-12.3-2.7m36-32.5c0 .4-.1 2-.9 3.9-1.5-.8-5.3-2.4-10.6-2.7-.8-1.2-3.8-5.3-8.5-8.1.6-1.3 1.5-2.8 2.1-3.3.2 0 .4-.1.8-.1 2.5 0 6.9 1.7 7.3 1.8.4.2 8.3 4.4 9.8 8.5m-42 19.4c-3.4-.6-5.5-1.6-6.1-2-1.3-4.6-.2-9.6-.1-10.3 1.3-2.2 4.8-8 7.2-9.1 2.4-.5 5.5.1 6.7.4-.1 1.6-.3 6.1.3 10.9-2.6 2.2-6.9 8.5-8 10.1m19.9-30.5c.8.1 1.9.2 2.7.5-.8 1-1.6 2.5-1.9 3.3-1.6.3-7.5 1.4-12.2 4.4-.9-.2-3.8-.9-6.5-.7.7-1.3 1.7-2.2 1.8-2.3.3-.3 7.4-5.3 16.1-5.2m19.1 38.1c-1.2 0-5.7-.3-10.6-1.5-.9-3.3-4.1-11.4-4.8-13.3 3.1-4.4 6.1-8.5 6.9-9.7 5.7.4 9.7 2.5 10.5 2.9 3.3 5.3 4 10.7 4.1 11.6-1.8 5.5-5.2 9.2-6.1 10m-47.1-13.1c.1 1.3.3 2.6.7 3.9-.3.9-.6 1.8-.7 2.7-.3-2.3-.3-4.6 0-6.6m14.8 28.5l-.4.6.4-.6c-2.5-1.2-4.4-4-5.2-5.1 1.5-1.5 3.4-2.9 4.1-3.4 1.6.6 8.3 2.8 12.6 2.8.7 1 3.1 4 6 6.4-1.8 1.8-4.4 2.6-4.9 2.8-6.8.2-12.6-3.5-12.6-3.5m16.3 3.4c.9-.5 1.9-1.2 2.7-2.1 1.3-.2 6.9-1.1 11.9-4.8.3 0 .9.1 1.5.1-3.1 2.9-10.5 6.2-16.1 6.8m15.4-8.4c1.8-4.7 1.7-8.3 1.6-9.4 1-1 4.4-4.6 6.3-10.1 1 .2 1.7.4 2 .6.1.4.3 1.3.2 2.7-.8 5-3.4 12.6-8.1 15.9-.5.3-1.3.4-2 .3" fill="#4a4e51"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26be.svg b/riot/emojione/svg/26be.svg new file mode 100644 index 0000000..efe314b --- /dev/null +++ b/riot/emojione/svg/26be.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#eff6f7"/><g fill="#cc4c5e"><path d="m50 32.1c-3.8-1.7-7.3-4.3-10.6-7.5-3.2-3.3-5.8-6.9-7.5-10.6-1.9-4.1-2.8-8.2-2.5-11.9-.7.1-1.4.1-2 .2-.2 3.9.7 8.2 2.7 12.5 1.8 4 4.5 7.7 7.9 11.2 3.4 3.4 7.2 6.1 11.2 7.9 3.9 1.8 7.8 2.8 11.5 2.8.3 0 .6 0 1 0 .1-.7.2-1.3.2-2-3.7.2-7.8-.7-11.9-2.6"/><path d="m26.1 37.9c-3.5-3.4-7.2-6.1-11.2-7.9-4.3-2-8.6-2.9-12.6-2.7-.1.7-.2 1.3-.2 2 3.7-.3 7.9.6 12 2.5 3.8 1.7 7.3 4.3 10.6 7.5 3.2 3.3 5.8 6.9 7.5 10.6 1.9 4.1 2.8 8.2 2.5 12 .7-.1 1.4-.1 2-.2.2-4-.7-8.3-2.7-12.6-1.8-4-4.5-7.8-7.9-11.2"/></g><g fill="#ed4c5c"><path d="m7.5 25.2c-3-.9-.4 1.4-.9 3.1-.5 1.7-4 2.2-1 3.1 3 .9 5.9.3 6.4-1.4.6-1.7-1.4-3.9-4.5-4.8"/><path d="m59.1 35.6c.6-1.7-1.3-3.9-4.3-5-3-1-.4 1.4-1 3.1-.6 1.7-4.1 2-1.1 3.1 2.9 1 5.8.5 6.4-1.2"/><path d="m30.2 11.9c1.7-.5 2.4-3.4 1.4-6.4-.9-3-1.4.5-3.1 1-1.7.5-4.1-2.1-3.1.9.9 3 3 5.1 4.8 4.5"/><path d="m49.1 32.3c1.4-1.9.5-4.8-2.1-6.6-2.6-1.8-1.1 1.5-2.6 3.4-1.4 1.9-5.3 1.5-2.7 3.3 2.7 1.8 6 1.8 7.4-.1"/><path d="m41.7 27c1.7-1.6 1.3-4.7-1-6.9-2.3-2.2-1.4 1.3-3.1 2.9-1.7 1.6-5.4.6-3.2 2.9 2.3 2.2 5.5 2.7 7.3 1.1"/><path d="m34.6 19.8c2.1-1 2.6-4.1 1-6.9-1.5-2.8-1.7.9-3.8 2-2.1 1-5.4-.9-3.8 1.8 1.5 2.7 4.4 4.1 6.6 3.1"/><path d="m36.9 52.5c-1-3-1.4.5-3.1 1.1-1.7.6-4.2-2-3.1 1 1 3 3.3 4.9 5 4.3 1.7-.6 2.2-3.5 1.2-6.4"/><path d="m32.5 41.7c-1.8-2.6-1.5 1.2-3.3 2.7-1.9 1.4-5.2 0-3.4 2.6 1.8 2.6 4.8 3.5 6.6 2.1 1.9-1.6 1.9-4.8.1-7.4"/><path d="m26 34.3c-2.2-2.3-1.3 1.4-2.9 3.2-1.6 1.7-5.1.8-2.9 3.1 2.2 2.3 5.3 2.7 6.9 1 1.6-1.8 1.1-5-1.1-7.3"/><path d="m16.8 27.8c-2.8-1.6-.8 1.7-1.8 3.8-1.1 2.1-4.7 2.2-2 3.8 2.8 1.6 5.8 1.1 6.9-1 1-2.1-.3-5-3.1-6.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26c4.svg b/riot/emojione/svg/26c4.svg new file mode 100644 index 0000000..3d083f6 --- /dev/null +++ b/riot/emojione/svg/26c4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="31.9" cy="45" r="17" fill="#d0d0d0"/><path d="m31.9 30c-8.3 0-15 6.7-15 15 0 8.3 6.7 15 15 15s15-6.7 15-15c0-8.3-6.7-15-15-15" fill="#fff"/><circle cx="31.9" cy="25.5" r="13" fill="#d0d0d0"/><path d="m31.9 14.5c-6.1 0-11 4.9-11 11 0 6.1 4.9 11 11 11s11-4.9 11-11c0-6-4.9-11-11-11" fill="#fff"/><circle cx="31.9" cy="26.4" r="2.5" fill="#ff8736"/><g fill="#3e4347"><circle cx="26.5" cy="21.8" r="2"/><circle cx="37.3" cy="21.8" r="2"/></g><g fill="#94989b"><ellipse transform="matrix(.4226-.9063.9063.4226 7.7092 41.1541)" cx="36.2" cy="14.5" rx="2.6" ry="10.1"/><ellipse transform="matrix(.4226-.9063.9063.4226 18.1612 39.7774)" cx="40.3" cy="5.6" rx="1.9" ry="7.6"/></g><path d="m39.5 7.4c-3.5-1.7-6.1-3.7-6.1-4.7l-2.3 9.2c-.3.7 1.7 2.4 4.5 3.7s5.4 1.8 5.7 1.1l5.7-7.7c-.7.7-4 0-7.5-1.6" fill="#3e4347"/><g fill="#89664c"><path d="m62 33.4l-5.8-1.7c1-1.1 2-2.1 3-3.2.3-.4.4-.9 0-1.3-.3-.3-1-.4-1.3 0-1.4 1.5-2.7 2.9-4.1 4.4v-8.4h-1.8v10.4c-1.7 1.8-3.4 3.6-5.1 5.4-.3.4-.4.9 0 1.3.3.3 1 .4 1.3 0 1.9-2 3.8-4 5.6-6 .3-.3.6-.7.9-1l6.7 1.9.6-1.8"/><path d="m12 33.5v-10.4h-1.8v8.4c-1.4-1.5-2.7-2.9-4.1-4.4-.3-.4-1-.3-1.3 0-.4.4-.3.9 0 1.3 1 1.1 2 2.1 3 3.2l-5.8 1.8.5 1.8 6.7-1.9c.4.4.8.8 1.2 1.3 1.8 1.9 3.6 3.8 5.4 5.7.3.4 1 .3 1.3 0 .4-.4.3-.9 0-1.3-1.7-1.9-3.4-3.7-5.1-5.5"/></g><g fill="#3e4347"><path d="m30.3 46.3l-1.1-3.2 2.8-2 2.7 2-1 3.2z"/><path d="m30.3 56.1l-1.1-3.2 2.8-2 2.7 2-1 3.2z"/><path d="m31.9 34c-3.1 0-6-1.3-8.1-3.6-.4-.4-.3-1 .1-1.4.4-.4 1-.3 1.4.1 1.7 1.9 4.2 2.9 6.7 2.9 2.5 0 4.9-1.1 6.7-2.9.4-.4 1-.4 1.4-.1.4.4.4 1 .1 1.4-2.2 2.2-5.2 3.6-8.3 3.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26c5.svg b/riot/emojione/svg/26c5.svg new file mode 100644 index 0000000..ea9730c --- /dev/null +++ b/riot/emojione/svg/26c5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffce31"><path d="m14.7 44.4l4.8-4.9c-1.7-.4-3.3-1-4.7-2l-.1 6.9"/><path d="m30.3 6.6l-4.8 4.9c1.7.4 3.3 1 4.7 2l.1-6.9"/><path d="m3.6 33.3l6.9-.1c-.9-1.4-1.6-3-2-4.7l-4.9 4.8"/><path d="m41.4 17.7l-6.9.1c.9 1.4 1.6 3 2 4.7l4.9-4.8"/><path d="m3.6 17.7l4.9 4.8c.4-1.7 1-3.3 2-4.7l-6.9-.1"/><path d="m41.4 33.3l-4.9-4.8c-.4 1.7-1 3.3-2 4.7l6.9.1"/><path d="m14.7 6.6l.1 6.9c1.4-.9 3-1.6 4.7-2l-4.8-4.9"/><path d="m30.3 44.4l-.1-6.9c-1.4.9-3 1.6-4.7 2l4.8 4.9"/><path d="m10.7 33.7l-2.7 6.3 6.3-2.7c-1.4-1-2.6-2.2-3.6-3.6"/><path d="m34.3 17.3l2.7-6.3-6.3 2.7c1.4 1 2.6 2.2 3.6 3.6"/><path d="m8.4 22.9l-6.4 2.6 6.4 2.6c-.1-.8-.2-1.7-.2-2.6-.1-.9 0-1.7.2-2.6"/><path d="m36.6 28.1l6.4-2.6-6.4-2.6c.2.8.2 1.7.2 2.6 0 .9 0 1.7-.2 2.6"/><path d="m14.3 13.7l-6.3-2.7 2.7 6.3c1-1.4 2.2-2.6 3.6-3.6"/><path d="m30.7 37.3l6.3 2.7-2.7-6.3c-1 1.4-2.2 2.6-3.6 3.6"/><path d="m25.1 11.4l-2.6-6.4-2.6 6.4c.8-.1 1.7-.2 2.6-.2.9-.1 1.7 0 2.6.2"/><path d="m19.9 39.6l2.6 6.4 2.6-6.4c-.8.1-1.7.2-2.6.2-.9 0-1.7 0-2.6-.2"/><circle cx="22.5" cy="25.5" r="13"/></g><path d="m17.2 57.1c-1 0-2-.2-2.9-.5-3.8-1.3-6.4-4.9-6.4-9 0-2.7 1.2-5.4 3.2-7.2.5-.5 1.1-.9 1.7-1.2l.6-2.2c1.5-5.5 6.5-9.3 12.1-9.3.6 0 1.1 0 1.8.1.5.1 1 .2 1.5.3l.2-.5c2.3-4.2 6.6-6.7 11.2-6.7 7.1 0 12.8 5.9 12.8 13.1 0 .4 0 .7 0 1v.3c.5.2 1.1.5 1.6.8 3.4 2 5.5 5.8 5.5 9.8 0 5.3-3.5 9.8-8.6 11-.8.2-1.7.3-2.5.3h-31.8z" fill="#fff"/><path d="m40.3 22.8c6 0 10.9 5 10.9 11.2 0 .3 0 .6 0 .9-2.5.2-4.8 1.2-6.6 2.8 1.3-.8 2.9-1.2 4.6-1.2.6 0 1.2.1 1.8.2 1 .2 1.9.6 2.8 1.1 2.7 1.6 4.6 4.6 4.6 8.1 0 4.4-3 8.2-7.1 9.1-.7.2-1.3.2-2.1.2h-32c-.8 0-1.6-.1-2.3-.4-3-1-5.1-3.9-5.1-7.2 0-2.3 1-4.3 2.6-5.7.7-.6 1.5-1.1 2.4-1.5.8-.3 1.6-.4 2.5-.4 2.4 0 4.5 1.2 5.9 3h.1c-1.6-3-4.5-5.1-8-5.4 1.3-4.6 5.4-8 10.3-8 .5 0 1 .1 1.5.1 1 .1 1.9.4 2.8.8 3.3 1.5 5.7 4.7 6.3 8.5 0 0 0 0 0-.1 0-4.3-2.2-8.1-5.4-10.3 1.8-3.5 5.3-5.8 9.5-5.8m0-3.8c-5 0-9.7 2.6-12.4 7-.1 0-.2 0-.3 0-.8-.1-1.4-.2-2.1-.2-6.4 0-12.2 4.4-13.9 10.7l-.5 1.5c-.5.3-.9.6-1.3 1-2.4 2.1-3.8 5.3-3.8 8.6 0 4.9 3.1 9.3 7.7 10.8 1.1.4 2.3.6 3.5.6h31.9c1 0 1.9-.1 2.9-.3 5.9-1.4 10-6.7 10-12.8 0-4.7-2.5-9.1-6.5-11.4-.2-.1-.4-.2-.6-.3 0 0 0-.1 0-.1 0-8.4-6.5-15.1-14.6-15.1z" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26c8.svg b/riot/emojione/svg/26c8.svg new file mode 100644 index 0000000..03409bb --- /dev/null +++ b/riot/emojione/svg/26c8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#75d6ff"><path d="m10.8 42.9c-.5 1.5-.1 3 1 3.4 1.1.4 2.4-.5 3-2 .6-1.8.7-4.1.2-6.9-2.1 1.9-3.6 3.8-4.2 5.5"/><path d="m13.2 57.4c.6-1.8.7-4.1.2-6.9-2.1 1.8-3.6 3.7-4.2 5.5-.5 1.5-.1 3 1 3.4 1.1.4 2.5-.5 3-2"/><path d="m51.5 37.4c-2.1 1.8-3.6 3.7-4.2 5.5-.5 1.5-.1 3 1 3.4 1.1.4 2.4-.5 3-2 .5-1.7.6-4.1.2-6.9"/><path d="m38.2 55.9c-.5 1.5-.1 3 1 3.4s2.4-.5 3-2c.6-1.8.7-4.1.2-6.9-2 1.9-3.5 3.8-4.2 5.5"/><path d="m46.9 55.9c-.5 1.5-.1 3 1 3.4s2.4-.5 3-2c.6-1.8.7-4.1.2-6.9-2.1 1.9-3.6 3.8-4.2 5.5"/><path d="m18.6 55.9c-.5 1.5-.1 3 1 3.4s2.4-.5 3-2c.6-1.8.7-4.1.2-6.9-2.1 1.9-3.6 3.8-4.2 5.5"/></g><path fill="#ffce31" d="m24.5 31.9l-4.9 16.2h12.5l-4.2 13.9 16.5-20.2h-11.9l2.9-9.9z"/><path d="m18.2 32.5c-.8 0-1.6-.1-2.4-.4-3.1-1-5.3-3.9-5.3-7.2 0-2.2 1-4.3 2.6-5.7.4-.4.9-.7 1.4-1l.5-1.8c1.3-4.4 5.4-7.5 10-7.5.5 0 .9 0 1.5.1.4.1.8.1 1.2.3l.2-.4c1.9-3.3 5.4-5.4 9.2-5.4 5.9 0 10.6 4.7 10.6 10.5 0 .3 0 .6 0 .8v.2c.4.2.9.4 1.3.6 2.8 1.6 4.5 4.6 4.5 7.8 0 4.2-2.9 7.8-7 8.8-.7.2-1.4.2-2 .2h-26.3z" fill="#fff"/><path d="m37.1 5c5 0 9 4 9 8.9 0 .2 0 .5 0 .7-2.1.2-4 1-5.4 2.3 1.1-.6 2.4-1 3.7-1 .5 0 1 .1 1.5.1.8.2 1.6.5 2.3.9 2.3 1.3 3.8 3.7 3.8 6.5 0 3.6-2.5 6.5-5.8 7.3-.7.2-1.2.3-1.8.3h-26.2c-.7 0-1.3-.1-1.9-.3-2.4-.8-4.2-3.1-4.2-5.8 0-1.8.8-3.5 2.1-4.6.6-.5 1.3-.9 2-1.2.6-.2 1.3-.3 2-.3 2 0 3.7.9 4.9 2.4h.1c-1.3-2.4-3.7-4.1-6.6-4.3 1.1-3.7 4.5-6.4 8.5-6.4.4 0 .9 0 1.3.1.8.1 1.6.3 2.3.7 2.7 1.2 4.7 3.7 5.1 6.8 0 0 0 0 0-.1 0-3.4-1.8-6.5-4.5-8.3 1.5-2.8 4.5-4.7 7.8-4.7m0-3c-4.1 0-7.9 2.1-10.1 5.6-.1 0-.2 0-.3 0-.6-.1-1.2-.1-1.7-.1-5.3 0-10 3.5-11.4 8.6l-.3 1.2c-.4.2-.7.5-1.1.8-2 1.7-3.1 4.2-3.1 6.9 0 4 2.5 7.4 6.3 8.7.9.3 1.9.5 2.9.5h26.2c.8 0 1.6-.1 2.4-.3 4.8-1.1 8.2-5.3 8.2-10.3 0-3.8-2-7.3-5.3-9.1-.2-.1-.3-.2-.5-.3 0 0 0-.1 0-.1-.1-6.7-5.5-12.1-12.2-12.1z" fill="#b6c1d1"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26ce.svg b/riot/emojione/svg/26ce.svg new file mode 100644 index 0000000..bacb7e3 --- /dev/null +++ b/riot/emojione/svg/26ce.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#c28fef"/><g fill="#fff"><path d="m32 54c-9.4 0-17-7.6-17-17v-23h6v23c0 6.1 4.9 11 11 11s11-4.9 11-11v-23h6v23c0 9.4-7.6 17-17 17"/><path d="m56 22c-2.6 4.1-6.1 6-8.4 7.2-3.5 2-7.9-.2-11.7-2.1-1.2-.6-2.3-1.1-3.3-1.5-10.9-4.2-19.1-.5-24.6 4.9v7.5c3.6-4.8 12.1-10.3 22.5-6.2.8.3 1.8.8 2.8 1.3 4 2 9.2 4.6 14.5 3 .8-.2 1.7-.6 2.5-1.1 2-1.2 4-2.1 5.6-4.5l.1-8.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26cf.svg b/riot/emojione/svg/26cf.svg new file mode 100644 index 0000000..3c30f7f --- /dev/null +++ b/riot/emojione/svg/26cf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M55.2,61.5c2.3,2.3,8.6-4,6.3-6.3L25.3,19L19,25.3L55.2,61.5z" fill="#89664c"/><path d="M56,60.6c1.6,1.7,6.3-3,4.7-4.7L24.5,19.8l-4.7,4.7L56,60.6z" fill="#ad8366"/><path d="m8.3 14.6c-2.3-2.3 4-8.6 6.3-6.3l6.2 6.2-6.3 6.3-6.2-6.2" fill="#89664c"/><path d="m9.2 13.8c-1.7-1.6 3-6.3 4.7-4.7l6.2 6.2-4.7 4.7-6.2-6.2" fill="#ad8366"/><path d="m20.9 20.9c11.2-11.2 24.3-17.4 33.9-16.8-9-5.3-25.2-.2-38 12.7-12.9 12.8-18 29-12.7 38-.6-9.6 5.6-22.7 16.8-33.9" fill="#94989b"/><path d="m21.9 21.9c11.2-11.2 23.9-17.8 32.9-17.8-8.2-4.5-23.7 1.3-36.5 14.1-12.9 12.9-18.7 28.4-14.2 36.5 0-8.9 6.6-21.6 17.8-32.8" fill="#a6aeb2"/><path d="m27.7 15c.9.9.9 2.3 0 3.2l-9.6 9.6c-.9.9-2.3.9-3.2 0l-4.8-4.8c-.9-.9-.9-2.3 0-3.2l9.6-9.6c.9-.9 2.3-.9 3.2 0l4.8 4.8" fill="#5c6368"/><path d="m26.3 15.9c.8.8.8 2 .1 2.7l-7.9 7.9c-.7.7-2 .7-2.7-.1l-4.2-4.4c-.8-.8-.8-2-.1-2.7l7.9-7.8c.7-.7 2-.7 2.7.1l4.2 4.3" fill="#474d51"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26d1.svg b/riot/emojione/svg/26d1.svg new file mode 100644 index 0000000..bcdd92d --- /dev/null +++ b/riot/emojione/svg/26d1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 64c-15.4 0-28-12.6-28-28v-4h4v4c0 13.2 10.8 24 24 24 13.2 0 24-10.8 24-24v-4h4v4c0 15.4-12.6 28-28 28" fill="#94989b"/><path d="M32,4C16.5,4,4,16.5,4,32h56C60,16.5,47.5,4,32,4z" fill="#ed4c5c"/><g fill="#c94747"><path d="m50 28h7c-1.2-9.6-8.5-17.5-18-20 5.8 3.3 10.1 10.9 11 20"/><path d="m25 8c-9.5 2.5-16.8 10.4-18 20h7c.9-9.1 5.2-16.7 11-20"/></g><g fill="#594640"><path d="m14.7 28c.9-9 4.9-16.5 10.3-20-7.3 3.6-12.7 11.1-14 20h3.7"/><path d="m49.3 28c-1-9-4.9-16.5-10.3-20 7.3 3.6 12.7 11.1 14 20h-3.7"/></g><g fill="#ed4c5c"><path d="m58 26h-52l-6 6h64z"/><circle cx="32" cy="5" r="5"/></g><g fill="#fff"><path d="m30 9h4v16h-4z"/><path d="m24 15h16v4h-16z"/></g><g fill="#3e4347"><path d="m4 32h4v4h-4z"/><path d="m56 32h4v4h-4z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26d3.svg b/riot/emojione/svg/26d3.svg new file mode 100644 index 0000000..a34973b --- /dev/null +++ b/riot/emojione/svg/26d3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d0d0d0"><path d="m19.2 64v-5.3c0-2.7-2.1-4.9-4.7-4.9-2.6 0-4.7 2.2-4.7 4.9v5.3h-4.8v-5.3c0-5.4 4.2-9.7 9.5-9.7 5.2 0 9.5 4.4 9.5 9.7v5.3h-4.8"/><path d="m23.9 27.1v9.7c0 5.4-4.2 9.7-9.5 9.7-5.2 0-9.5-4.4-9.5-9.7v-9.7c0-5.4 4.2-9.7 9.5-9.7 5.3 0 9.5 4.4 9.5 9.7m-14.2 9.8c0 2.7 2.1 4.9 4.7 4.9 2.6 0 4.7-2.2 4.7-4.9v-9.7c0-2.7-2.1-4.9-4.7-4.9-2.6 0-4.7 2.2-4.7 4.9v9.7"/><path d="m23.9 0v5.3c0 5.4-4.2 9.7-9.5 9.7-5.2 0-9.4-4.4-9.4-9.7v-5.3h4.7v5.3c0 2.7 2.1 4.9 4.7 4.9 2.6 0 4.7-2.2 4.7-4.9v-5.3h4.8"/></g><g fill="#94989b"><path d="m16.8 53.9c0-4 0-8.1 0-12.1 0-3.1-4.7-3.1-4.7 0 0 4.1 0 8.1 0 12.1 0 3.1 4.7 3.1 4.7 0"/><path d="m16.8 22.3c0-4.1 0-8.1 0-12.1 0-3.1-4.7-3.1-4.7 0 0 4 0 8.1 0 12.1 0 3.1 4.7 3.1 4.7 0"/></g><g fill="#d0d0d0"><path d="m59 43v9.8c0 5.4-4.2 9.8-9.5 9.8-5.2 0-9.5-4.4-9.5-9.8v-9.8c0-5.4 4.2-9.8 9.5-9.8 5.3 0 9.5 4.4 9.5 9.8m-14.2 9.8c0 2.7 2.1 4.9 4.7 4.9 2.6 0 4.7-2.2 4.7-4.9v-9.8c0-2.7-2.1-4.9-4.7-4.9-2.6 0-4.7 2.2-4.7 4.9v9.8"/><path d="m59 11.2v9.8c0 5.4-4.2 9.8-9.5 9.8-5.2 0-9.5-4.4-9.5-9.8v-9.8c0-5.4 4.2-9.8 9.5-9.8 5.3 0 9.5 4.4 9.5 9.8m-14.2 9.8c0 2.7 2.1 4.9 4.7 4.9 2.6 0 4.7-2.2 4.7-4.9v-9.8c0-2.7-2.1-4.9-4.7-4.9-2.6 0-4.7 2.2-4.7 4.9v9.8"/></g><g fill="#94989b"><path d="m51.9 38.1c0-4.1 0-8.2 0-12.2 0-3.2-4.7-3.2-4.7 0 0 4.1 0 8.2 0 12.2 0 3.2 4.7 3.2 4.7 0"/><path d="m51.9 64c0 0 0-2.6 0-6.6 0-3.2-4.7-3.2-4.7 0 0 4.1 0 6.6 0 6.6h4.7"/><path d="m47.2 0c0 0 0 2.6 0 6.6 0 3.2 4.7 3.2 4.7 0 0-4.1 0-6.6 0-6.6h-4.7"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26d4.svg b/riot/emojione/svg/26d4.svg new file mode 100644 index 0000000..6154529 --- /dev/null +++ b/riot/emojione/svg/26d4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><path fill="#fff" d="m9 26h46v12h-46z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26e9.svg b/riot/emojione/svg/26e9.svg new file mode 100644 index 0000000..570b46d --- /dev/null +++ b/riot/emojione/svg/26e9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#b71c3a" d="m29 9h6v12h-6z"/><path fill="#ed4c5c" d="m9 9h8v44h-8z"/><g fill="#ff6473"><path d="m10 14h5v4h-5z"/><path d="m10 22h5v28h-5z"/></g><path fill="#b71c3a" d="m6.9 9h12v4h-12z"/><path fill="#d82b45" d="m7.5 8h10v4h-10z"/><path d="m21 16c0 0-2.8 2-8 2s-8-2-8-2l.2 4.1c0 0 2.2 1.5 6.5 1.9h2.5c4.3-.5 6.5-1.9 6.5-1.9l.3-4.1" fill="#b71c3a"/><path fill="#474d51" d="m8 51h10v3h-10z"/><path fill="#5c6368" d="m9 52h7v2h-7z"/><path fill="#474d51" d="m7 54h12v10h-12z"/><path fill="#5c6368" d="m8 55h9v9h-9z"/><path fill="#ed4c5c" d="m47 9h8v44h-8z"/><g fill="#ff6473"><path d="m48 14h5v4h-5z"/><path d="m48 22h5v28h-5z"/></g><path fill="#b71c3a" d="m44.9 9h12v4h-12z"/><path fill="#d82b45" d="m45.5 8h10v4h-10z"/><path d="m59 16c0 0-2.8 2-8 2s-8-2-8-2l.2 4.1c0 0 2.2 1.5 6.5 1.9h2.5c4.3-.5 6.5-1.9 6.5-1.9l.3-4.1" fill="#b71c3a"/><path fill="#474d51" d="m46 51h10v3h-10z"/><path fill="#5c6368" d="m47 52h7v2h-7z"/><path fill="#474d51" d="m45 54h12v10h-12z"/><path fill="#5c6368" d="m46 55h9v9h-9z"/><g fill="#d82b45"><path d="m4 20h56v4h-56z"/><path d="m32 7c-19.3 0-30-2-30-2l.8 4c0 0 10.1 2 29.2 2s29.2-2 29.2-2l.8-4c0 0-10.7 2-30 2"/></g><path d="M32,2.7C11.4,2.7,0,0,0,0l0.8,5.3C0.8,5.3,11.6,8,32,8c20.4,0,31.2-2.7,31.2-2.7L64,0C64,0,52.6,2.7,32,2.7z" fill="#474d51"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26ea.svg b/riot/emojione/svg/26ea.svg new file mode 100644 index 0000000..6d8236c --- /dev/null +++ b/riot/emojione/svg/26ea.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m63 62h-62c-.5 0-1 .5-1 1 0 .5.5 1 1 1h62c.6 0 1-.5 1-1 0-.5-.4-1-1-1" fill="#62727a"/><path fill="#d0d0d0" d="m60 62h-56v-18l28-12 28 12z"/><g fill="#89664c"><path d="m21.4 34.1l-20.2 8.3c-1 .4-1.4 1.5-1 2.5.4 1 1.5 1.4 2.5 1l20.2-8.3c1-.4 1.4-1.5 1-2.5-.4-.9-1.6-1.4-2.5-1"/><path d="m42.6 34.1l20.2 8.3c1 .4 1.4 1.5 1 2.5-.4 1-1.5 1.4-2.5 1l-20.2-8.3c-1-.4-1.4-1.5-1-2.5.4-.9 1.6-1.4 2.5-1"/></g><path fill="#e8e8e8" d="m44 62h-24v-36l12-5 12 5z"/><path fill="#ffce31" d="m38.7 5h-5v-5h-3.4v5h-5v3.3h5v11.7h3.4v-11.7h5z"/><path fill="#e8e8e8" d="m20 63h24v1h-24z"/><path fill="#d0d0d0" d="m20 62h24v1h-24z"/><path d="m47.8 25.4l-15.8-6.4-15.8 6.4c-1 .4-1.4 1.5-1 2.4.4.9 1.5 1.4 2.5 1l14.3-5.8 14.4 5.8c1 .4 2.1-.1 2.5-1 .4-.9-.1-2-1.1-2.4" fill="#89664c"/><path d="m30.7 29.8c-.1-.6-.6-.9-1.2-.8 0 0-.1 0-.7.3-.6.2-.7.3-.7.3-.5.3-.6.9-.3 1.4l3.1 4.2c.3.5.6.4.5-.2l-.7-5.2" fill="#42ade2"/><path d="m26 32.9c-.5-.3-1.1-.2-1.3.3l-.6 1.4c-.2.5.2 1.1.7 1.2l5.2.8c.6.1.7-.1.2-.5l-4.2-3.2" fill="#c28fef"/><path d="m24.8 38.3c-.6.1-.9.6-.8 1.2 0 0 0 .1.3.7.2.6.3.7.3.7.3.5.9.6 1.4.3l4.2-3.1c.5-.3.4-.6-.2-.5l-5.2.7" fill="#ed4c5c"/><path d="m27.9 43c-.3.5-.2 1.1.3 1.3l1.4.6c.6.2 1.1-.2 1.2-.7l.8-5.2c.1-.6-.1-.7-.5-.2l-3.2 4.2" fill="#ff8736"/><path d="m33.3 44.2c.1.6.6.9 1.2.8 0 0 .1 0 .7-.3.6-.2.7-.3.7-.3.5-.3.6-.9.3-1.4l-3.2-4.2c-.3-.5-.6-.4-.5.2l.8 5.2" fill="#42ade2"/><path d="m38 41.1c.5.3 1.1.2 1.3-.3l.6-1.4c.2-.6-.2-1.1-.7-1.2l-5.2-.6c-.6-.1-.7.1-.2.5l4.2 3" fill="#c28fef"/><path d="m39.2 35.7c.6-.1.9-.6.8-1.2 0 0 0-.1-.3-.7-.2-.6-.3-.7-.3-.7-.3-.5-.9-.6-1.4-.3l-4.2 3.2c-.5.3-.4.6.2.5l5.2-.8" fill="#ed4c5c"/><path d="m36.1 31c.3-.5.2-1.1-.3-1.3l-1.4-.6c-.5-.2-1.1.2-1.2.7l-.6 5.2c-.1.6.1.7.5.2l3-4.2" fill="#ff8736"/><path d="m32 47c-3.3 0-6 2.7-6 6v9h12v-9c0-3.3-2.7-6-6-6" fill="#d3976e"/><path d="m28 56h8v-3c0-2.2-1.8-4-4-4s-4 1.8-4 4v3" fill="#d6eef0"/><g fill="#62727a"><path d="m11.2 49.5c-.1-.4-.4-.6-.7-.5 0 0-.1 0-.4.2-.4.1-.4.2-.4.2-.3.2-.4.6-.2.9l1.9 2.6c.2.3.3.2.3-.1l-.5-3.3"/><path d="m8.2 51.4c-.3-.2-.7-.1-.8.2l-.4.9c-.1.3.1.7.5.7l3.2.5c.4.1.4-.1.1-.3l-2.6-2"/><path d="m7.5 54.8c-.4.1-.6.4-.5.7 0 0 0 .1.2.4.1.4.2.4.2.4.2.3.6.4.9.2l2.6-1.9c.3-.2.2-.3-.1-.3l-3.3.5"/><path d="m9.4 57.8c-.2.3-.1.7.2.8l.9.4c.3.1.7-.1.7-.5l.5-3.2c.1-.4-.1-.4-.3-.1l-2 2.6"/><path d="m12.8 58.5c.1.4.4.6.7.5 0 0 .1 0 .4-.2.4-.1.4-.2.4-.2.3-.2.4-.6.2-.9l-1.9-2.6c-.2-.3-.3-.2-.3.1l.5 3.3"/><path d="m15.8 56.6c.3.2.7.1.8-.2l.4-.9c.1-.3-.1-.7-.5-.7l-3.2-.5c-.4-.1-.4.1-.1.3l2.6 2"/><path d="m16.5 53.2c.4-.1.6-.4.5-.7 0 0 0-.1-.2-.4-.1-.4-.2-.4-.2-.4-.2-.3-.6-.4-.9-.2l-2.6 1.9c-.3.2-.2.3.1.3l3.3-.5"/><path d="m14.6 50.2c.2-.3.1-.7-.2-.8l-.9-.4c-.3-.1-.7.1-.7.5l-.5 3.2c-.1.4.1.4.3.1l2-2.6"/><path d="m51.2 49.5c-.1-.4-.4-.6-.7-.5 0 0-.1 0-.4.2-.4.1-.4.2-.4.2-.3.2-.4.6-.2.9l1.9 2.6c.2.3.3.2.3-.1l-.5-3.3"/><path d="m48.2 51.4c-.3-.2-.7-.1-.8.2l-.4.9c-.1.3.1.7.5.7l3.2.5c.4.1.4-.1.1-.3l-2.6-2"/><path d="m47.5 54.8c-.4.1-.6.4-.5.7 0 0 0 .1.2.4.1.4.2.4.2.4.2.3.6.4.9.2l2.6-1.9c.3-.2.2-.3-.1-.3l-3.3.5"/><path d="m49.4 57.8c-.2.3-.1.7.2.8l.9.4c.3.1.7-.1.7-.5l.5-3.2c.1-.4-.1-.4-.3-.1l-2 2.6"/><path d="m52.8 58.5c.1.4.4.6.7.5 0 0 .1 0 .4-.2.4-.1.4-.2.4-.2.3-.2.4-.6.2-.9l-1.9-2.6c-.2-.3-.3-.2-.3.1l.5 3.3"/><path d="m55.8 56.6c.3.2.7.1.8-.2l.4-.9c.1-.3-.1-.7-.5-.7l-3.2-.5c-.4-.1-.4.1-.1.3l2.6 2"/><path d="m56.5 53.2c.4-.1.6-.4.5-.7 0 0 0-.1-.2-.4-.1-.4-.2-.4-.2-.4-.2-.3-.6-.4-.9-.2l-2.6 1.9c-.3.2-.2.3.1.3l3.3-.5"/><path d="m54.6 50.2c.2-.3.1-.7-.2-.8l-.9-.4c-.3-.1-.7.1-.7.5l-.5 3.2c-.1.4.1.4.3.1l2-2.6"/></g><g fill="#d3976e"><path d="m31 48h2v14h-2z"/><path d="m26 55h12v7h-12z"/></g><g fill="#89664c"><path d="m28 57.3h3v3h-3z"/><path d="m33 57.3h3v3h-3z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f0.svg b/riot/emojione/svg/26f0.svg new file mode 100644 index 0000000..ae954cf --- /dev/null +++ b/riot/emojione/svg/26f0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#42ade2" d="m0 47h64v17h-64z"/><path d="m0 52.4c0 0 3.6.1 7.5 1.6 3.5 1.4 9.5 3.6 12.5 3.6.7 0 2.4-.5 2.4-.5s9.1 2.6 12.6 2.4c.9 0 2.7-.9 2.7-.9s1.1.1 1.4 0c1.1-.2 2.3-1.1 3.3-1.3.9-.2 3-.1 3.8-.3.9-.2 2.6-1.4 2.6-1.4s2.4 0 3.2-.1c.8-.1 2.8-.5 2.8-.5s2.6.3 3.5.3c1.4 0 5.6-.6 5.6-.6v-7.7h-63.9v5.4" fill="#2b95bf"/><path d="m0 28.3c0 0 3.6-.3 7.5-5.4 3.5-4.6 9.5-12.4 12.5-12.5.7 0 2.4 1.9 2.4 1.9s9.1-8.9 12.5-8.3c.9.2 2.7 3.2 2.7 3.2s1.1-.2 1.4 0c1.1.6 2.3 3.7 3.3 4.4.9.6 3 .3 3.8 1.1.9.8 2.6 4.7 2.6 4.7s2.4.1 3.2.4c.8.3 2.8 1.9 2.8 1.9s2.6-1 3.5-.9c1.4.1 5.6 2.1 5.6 2.1v26.1h-63.8v-18.7" fill="#77994f"/><g fill="#8bce4a"><path d="m56.3 32.4l-7.4-15.1c2.1 5.3 1 13.9 7.4 15.1"/><path d="m54.9 19.6c0 0 .9 5.9 5.6 7.5l-5.6-7.5"/><path d="m18.9 47l-2.9-10.6 3.7 1.5-2.9-7.6h4.6l-2.4-7.9 3-1.2 2-3.8-1.7-5.1 6 11.7 9 11.8 7.3 7 7.5 1.9 4.2 2.3z"/><path d="m37.7 7.2l.9 7.8 2.5 5h-1.7l5.6 7.8-3.7-1.6 2.9 8.4 5.6 4.2-2.1 1.6 6.3 3.3 3.9 3.3h6.1v-2.8l-6.7-3.4-1.6-1.6-1.2 1.2-5.6-9.7-5.6-12.9-2.3-3.5z"/></g><path fill="#dbf763" d="m42.2 47h-42.2v-6.6z"/><path fill="#1d8299" d="m42.2 47h-42.2v3.1z"/><g fill="#b4d7ee"><path d="m5 48.9c1.7-.3 3.1.9 4.8 0 1.9-.9 3.2.4 5 .7-1.7.3-3.1-.9-4.8 0-1.9.9-3.2-.3-5-.7"/><path d="m52.6 52.8c1.7-.3 3.1.9 4.8 0 1.9-.9 3.2.4 5 .7-1.7.3-3.1-.9-4.8 0-1.9.9-3.2-.3-5-.7"/><path d="m15.3 52.8c1.6-.3 2.9.4 4.5.6 1.8.2 3.2-.4 4.9-.9 3.1-1.1 5.4 1 8.3 1.6-1.6.3-2.9-.4-4.5-.6-1.8-.2-3.2.4-4.9.9-3.1 1.1-5.4-1-8.3-1.6"/><path d="m34.9 57.3c1.6-.3 2.9.4 4.5.6 1.8.2 3.2-.4 4.9-.9 3.1-1.1 5.4 1 8.3 1.6-1.6.4-2.9-.4-4.5-.6-1.8-.2-3.2.4-4.9.9-3.1 1.1-5.4-1-8.3-1.6"/><path d="m38.6 48.8c2.4-.3 4.5 1.4 6.9.2 2.7-1.2 4.6.5 7.1.9-2.4.3-4.5-1.4-6.9-.2-2.6 1.2-4.5-.6-7.1-.9"/><path d="m48.1 61.1c2.4-.3 4.5 1.4 6.9.2 2.7-1.2 4.6.5 7.1.9-2.4.3-4.5-1.4-6.9-.2-2.6 1.2-4.5-.6-7.1-.9"/><path d="m3.6 60.3c2.4-.3 4.5 1.4 6.9.2 2.6-1.2 4.6.5 7.1.9-2.4.3-4.5-1.4-6.9-.2-2.6 1.2-4.5-.5-7.1-.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f1.svg b/riot/emojione/svg/26f1.svg new file mode 100644 index 0000000..641b455 --- /dev/null +++ b/riot/emojione/svg/26f1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m54 49.8c-8.1 0-16.7 2.2-22.5 2.9-8.5 1-10.2-2.4-18.5-1.4-4.8.5-13 4.7-13 4.7v8h64v-13c0 0-4.9-1.2-10-1.2" fill="#f4d4a5"/><g fill="#ffebd2"><path transform="matrix(.7071-.7071.7071.7071-39.9291 20.7176)" d="m4.3 57.9h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-40.5565 23.2036)" d="m7 59.9h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-38.4347 22.3247)" d="m7.4 57.2h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-38.8971 25.2086)" d="m10.6 59.2h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-42.1971 21.2422)" d="m4.2 61.2h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-41.5516 18.8003)" d="m1.6 59.2h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-36.1423 23.8605)" d="m10 54.9h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-28.1962 46.043)" d="m41.1 56.7h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-28.1646 50.12)" d="m46.1 58.7h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-26.3291 50.5508)" d="m47.5 56.7h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-26.3593 52.4787)" d="m49.8 57.7h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-24.0107 53.1477)" d="m51.8 55.2h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-21.8461 61.014)" d="m62.4 56.5h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-23.8487 59.539)" d="m59.6 58.2h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-22.352 59.1526)" d="m59.9 56.2h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-27.5627 48.5741)" d="m44.1 56.9h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-20.9989 59.4207)" d="m60.5 54.4h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-26.1932 54.8802)" d="m52.4 58.4h1.4v1.4h-1.4z"/></g><path d="m59.1 54.7c0 .6-1.3.5-2.8.3-.8 1.2-1.8 1.7-2.4 1.7-.3 0-.6-1.2-.5-2.3-1.5-.4-2.6-1-2.5-1.4.3-2.5 8.3.5 8.2 1.7" fill="#a38982"/><path d="m54.1 47.7c.3-.1 1.3.8 2.2 2.1 1.6-.4 2.8-.6 2.8-.3.1.4-.3 1.5-1.2 2.9.8 1.3 1.3 2.3 1 2.5-.4.4-1.4.1-2.9-.3-1 1.1-1.7 1.9-2.3 1.8-.3 0-.4-1.2-.5-2.7-1.5-.6-2.4-1.3-2.5-1.8-.1-.3 1.1-.8 2.6-1.3.2-1.5.5-2.8.8-2.9" fill="#f27a52"/><path fill="#a38982" d="m15.2 58l-1.7-1 8.4-5.1 2 .4z"/><path d="m46.4 4.2c-.5-.3-1.1-.2-1.4.3l-2.5 4.3 1.7 1 2.5-4.3c.3-.5.1-1.1-.3-1.3" fill="#3e4347"/><path fill="#94989b" d="m15.2 58l-1.7-1 20-32.5 1.7 1z"/><path d="m43.9 8.5l-13.1 22.5c2.8-1.2 6.2-1.1 9.1.6 2.9 1.7 4.7 4.5 5.1 7.6 6-13.4 6-26.6-1.1-30.7" fill="#ffbe5c"/><path d="m43.9 8.5l-13.1 22.5c-.4-3-2.2-5.9-5.1-7.6-2.9-1.7-6.3-1.8-9.1-.6 8.7-11.9 20.1-18.4 27.3-14.3" fill="#ed77a8"/><path d="m43.9 8.5c7.1 4.1 7.1 17.3 1.1 30.7 2.8-1.2 6.2-1.1 9.1.6 2.5 1.5 4.2 3.8 4.9 6.4 4.4-14-1.6-29.9-15.1-37.7" fill="#c7e86f"/><path d="m43.9 8.5c-7.1-4.1-18.5 2.4-27.2 14.3-.4-3-2.2-5.9-5.1-7.6-2.5-1.5-5.4-1.7-8-1 9.9-10.8 26.7-13.6 40.3-5.7" fill="#60d4e0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f2.svg b/riot/emojione/svg/26f2.svg new file mode 100644 index 0000000..377ecf8 --- /dev/null +++ b/riot/emojione/svg/26f2.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#83bf4f" d="m0 48.6h64v15.4h-64z"/><path d="m32 55.8c-14.7 0-26.7-1.9-26.7-4.3v5.2c0 2.4 12 4.3 26.7 4.3s26.7-1.9 26.7-4.3v-5.2c0 2.4-12 4.3-26.7 4.3" fill="#d0d0d0"/><ellipse cx="32" cy="45.8" rx="30.5" ry="4.8" fill="#e8e8e8"/><ellipse cx="32" cy="45.8" rx="25.7" ry="2.9" fill="#42ade2"/><path d="m35.8 42.9c-1.6-1.5-1.7-6.3-1.7-6.3h-2.1-2.1c0 0-.1 4.9-1.7 6.3-.9.8-3.3 1.8-3.8 2.9-.2.5 3.4 1 7.6 1s7.9-.5 7.6-1c-.5-1.1-2.9-2.1-3.8-2.9" fill="#e8e8e8"/><path d="m32 36.6h-2.1c0 0 0 1.7-.4 3.3.8.1 1.6.1 2.5.1.9 0 1.7 0 2.5-.1-.3-1.7-.4-3.3-.4-3.3h-2.1" fill="#d0d0d0"/><path d="m36.8 37.2c-1.5 1.9-7.8 1.7-9.5 0-1-1-1-5.7-1-5.7h11.4c0 0 0 4.6-.9 5.7" fill="#e8e8e8"/><path d="m44.7 31.3c-4 2.5-20.9 2.3-25.4 0-2.7-1.4-2.5-7.7-2.5-7.7h30.5c-.1-.1-.2 6.2-2.6 7.7" fill="#d0d0d0"/><ellipse cx="32" cy="23.8" rx="15.2" ry="1.9" fill="#e8e8e8"/><ellipse cx="32" cy="23.8" rx="13.3" ry="1" fill="#42ade2"/><path d="m58.7 53.3c-4.7 1.5-14.9 2.5-26.7 2.5s-21.9-1-26.7-2.5v2.3c4.7 1.5 14.9 2.5 26.7 2.5s21.9-1 26.7-2.5v-2.3" fill="#94989b"/><path d="m32 50.5c-16.8 0-30.5-2.1-30.5-4.8v5.7c0 2.6 13.7 4.8 30.5 4.8s30.5-2.1 30.5-4.8v-5.7c0 2.7-13.7 4.8-30.5 4.8" fill="#d0d0d0"/><path d="m32 23.8c0 0-2.5-13.7-5.7-13.7-3.5.1 4.6 7.2 5.7 13.7" fill="#b4d7ee"/><path d="m31.4 22.8c0 0-10.3-17.9-13.4-13.4-1.2 1.6 8.6 5.8 13.4 13.4" fill="#d6eef0"/><path d="m33.6 23.5c0 0 3.6-11 8.9-9.9 2 .4-7 5.7-8.9 9.9" fill="#b4d7ee"/><g fill="#d6eef0"><path d="m34.9 23.5c0 0 5.5-8.4 11.4-8.4 5.9 0 3.3 3.3 0 3.3-3.3 0-7.8.9-11.4 5.1"/><path d="m31.8 17.3c0 0-.4-12.4-4.5-13.3-3.7-.8 4.6 7 4.5 13.3"/></g><g fill="#b4d7ee"><path d="m32 24.3c0 0 0-24.3 3.6-24.3 2.6 0-3 15-3.6 24.3"/><path d="m21.5 24.4c0 0-7.6-6-7.6 21.5 0 0 .5.8 3.4.8 0 0-.1-21.5 4.2-22.3"/><path d="m42.5 24.4c0 0 7.6-6 7.6 21.5 0 0-.5.8-3.4.8 0 0 .1-21.5-4.2-22.3"/><path d="m30.8 23.5c0 0-5.5-8.4-11.4-8.4-5.9 0-3.3 3.3 0 3.3 3.3 0 7.7.9 11.4 5.1"/></g><path d="m32.1 24.1c0 0 5.9-19.8 9.9-16.2 1.6 1.4-7.1 7.8-9.9 16.2" fill="#d6eef0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f3.svg b/riot/emojione/svg/26f3.svg new file mode 100644 index 0000000..cd35a12 --- /dev/null +++ b/riot/emojione/svg/26f3.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><ellipse cx="32" cy="49.7" rx="30" ry="12.3" fill="#97b113"/><path d="m28 47c0 0 3-6.6 5.6-9.6h-.9c0 0-4.7 5.7-6.7 9.3l2 .3" opacity=".3" fill="#1e1e1e"/><ellipse cx="26.6" cy="50.3" rx="8.7" ry="3.7" fill="#c7c7c7"/><path d="m26.6 48.2c4.2 0 7.7 1.2 8.5 2.9.1-.3.2-.5.2-.8 0-2-3.9-3.7-8.7-3.7s-8.7 1.6-8.7 3.7c0 .3.1.5.2.8.9-1.6 4.3-2.9 8.5-2.9" fill="#3d2905"/><path d="m45 9.3c-.9-.5-15.8-8.2-18-9.3v20.7c2.2-1.1 17.1-8.8 18-9.3.7-.3.7-1.7 0-2.1" fill="#ed4c5c"/><path d="m28 53.9c0 0-.9.1-2.4.1v-7.2h2.4v7.1" opacity=".5" fill="#1e1e1e"/><path fill="#d3976e" d="m25 0h2v54h-2z"/><path fill="#89664c" d="m25 52.2h2v1.8h-2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f4.svg b/riot/emojione/svg/26f4.svg new file mode 100644 index 0000000..306970e --- /dev/null +++ b/riot/emojione/svg/26f4.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#3dd0e0" d="m0 50h64v14h-64z"/><g fill="#b4e7ed"><path d="m4.3 54.4c1.7-.3 3.1.8 4.8 0 1.9-.8 3.2.3 5 .6-1.7.3-3.1-.8-4.8 0-1.9.7-3.2-.3-5-.6"/><path d="m49.9 57.8c1.7-.3 3.1.8 4.8 0 1.9-.8 3.2.3 5 .6-1.7.3-3.1-.8-4.8 0-1.9.8-3.2-.3-5-.6"/><path d="m14.6 58.3c1.6-.3 2.9.4 4.5.6 1.8.2 3.2-.3 4.9-.8 3.1-.9 5.4.9 8.3 1.4-1.6.3-2.9-.4-4.5-.6-1.8-.2-3.2.3-4.9.8-3.1 1-5.4-.9-8.3-1.4"/><path d="m38 54.2c2.4-.3 4.5 1.2 6.9.2 2.7-1.1 4.6.5 7.1.8-2.4.3-4.5-1.2-6.9-.2-2.7 1.1-4.6-.5-7.1-.8"/></g><path fill="#428bc1" d="m61.9 52h-56.7l-5.2-10h64z"/><path fill="#b9c1c6" d="m61 32h-47.9l-6.1 10h54z"/><g fill="#3e4347"><path d="m53 34h6v6h-6z"/><path d="m45 34h6v6h-6z"/><path d="m37 34h6v6h-6z"/><path d="m29 34h6v6h-6z"/><path d="m21 34h6v6h-6z"/><path d="m19 40h-7l3-6h4z"/></g><g fill="#dce1e5"><path d="m10 26h54v6h-54z"/><path d="m12 12h38v4h-38z"/></g><path fill="#b9c1c6" d="m14 16h34v10h-34z"/><g fill="#778389"><path d="m2 38h1v4h-1z"/><path d="m5 38h1v4h-1z"/><path d="m8 38h1v4h-1z"/><path d="m11 38h1v4h-1z"/><path d="m14 38h1v4h-1z"/><path d="m17 38h1v4h-1z"/></g><path fill="#8f989e" d="m0 37h18v1h-18z"/><g fill="#778389"><path d="m61 22h1v4h-1z"/><path d="m58 22h1v4h-1z"/><path d="m55 22h1v4h-1z"/><path d="m52 22h1v4h-1z"/><path d="m49 22h1v4h-1z"/><path d="m46 22h1v4h-1z"/></g><path fill="#8f989e" d="m46 21h18v1h-18z"/><g fill="#778389"><path d="m53 38h1v4h-1z"/><path d="m56 38h1v4h-1z"/><path d="m59 38h1v4h-1z"/><path d="m62 38h1v4h-1z"/></g><path fill="#8f989e" d="m53 37h11v1h-11z"/><g fill="#3e4347"><path d="m16 18h6v6h-6z"/><path d="m24 18h6v6h-6z"/><path d="m32 18h6v6h-6z"/><path d="m40 18h6v6h-6z"/></g><g fill="#8f989e"><path d="m40 4h2v8h-2z"/><path d="m44 6h2v6h-2z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f5.svg b/riot/emojione/svg/26f5.svg new file mode 100644 index 0000000..e69f924 --- /dev/null +++ b/riot/emojione/svg/26f5.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#42ade2" d="m0 48h64v16h-64z"/><g fill="#3e4347"><path d="m31.5 2h1v10h-1z"/><path d="m57 59h-41l-2-2c0 0 16.7-3.2 43 2"/></g><path d="m33 47c0 .6-.4 1-1 1-.5 0-1-.4-1-1v-38c0-.6.5-1 1-1 .6 0 1 .4 1 1v38" fill="#89664c"/><path d="m54 52c0 0-4.6-1.6-10-3-3.4-.9-7.7-1.7-9.6-2.2-.5-.1-1.3-.6-1.7-.9l-1.4-1.2c-.4-.4-1.2-.6-1.8-.6h-8.1c-.5 0-1.3.3-1.7.7l-1.2 1.2c-.4.4-1.2.7-1.7.7h-4.8c-.5 0-.9.4-.8 1l2 8c.1.5.7 1 1.2 1h39.6l1-2.5-1-2.2" fill="#dae3ea"/><path d="m7 46.5c0 0 1.8 4.5 7 10.5 0 0 29.6 2 43 2l-2-5c0 0-23-7.5-48-7.5" fill="#c5d0d8"/><g fill="#3e4347"><path d="m29.5 46.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-1c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v1"/><path d="m25.5 46.5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-1c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v1"/></g><path d="m12 41.3c-.6.5-1.4 1.2-2.1 2-.8.7-1.5 1.5-2 2.1-.5.6-.8 1-.8 1s.4-.3 1-.8 1.4-1.2 2.1-2c.8-.7 1.5-1.5 2-2.1.5-.6.8-1 .8-1s-.4.3-1 .8" fill="#89664c"/><path d="M31,9c0,0-14,21.8-21,34.5c0,0,9.5-2.5,21-2.5V9z" fill="#f9f3d9"/><path fill="#ff9d27" d="m33 9v32l14 3z"/><g fill="#f15744"><path d="m42.8 54h-1.8c0-2.2 1.8-4 4-4v1.8c-1.2 0-2.2 1-2.2 2.2"/><path d="m45 58v-1.8c1.2 0 2.2-1 2.2-2.2h1.8c0 2.2-1.8 4-4 4"/></g><g fill="#fff"><path d="m45 58c-2.2 0-4-1.8-4-4h1.8c0 1.2 1 2.2 2.2 2.2v1.8"/><path d="m49 54h-1.8c0-1.2-1-2.2-2.2-2.2v-1.8c2.2 0 4 1.8 4 4"/></g><g fill="#f15744"><path d="m32.5 3c0 1.3 0 2.6 0 3.9 2.7.5 5.3-2.5 8-2-2.7-1.8-5.3-.1-8-1.9"/><path d="m21.1 24.7c-.5.9-1.1 1.7-1.6 2.6 3.6.4 7.9 1.5 11.5 3.7v-3c0 0-3.1-2.2-9.9-3.3"/></g><path d="m16.7 32c11.2 0 14.3 3 14.3 3v-4c-3.6-2.3-7.9-3.3-11.5-3.7-1 1.7-1.8 2.9-2.8 4.7" fill="#ffce31"/><g fill="#fff"><path d="m44.5 49h1v1h-1z"/><path d="m44.5 58h1v1h-1z"/><path d="m49 53.5h1v1h-1z"/><path d="m40 53.5h1v1h-1z"/></g><g fill="#89664c"><path d="m40.8 53.5h-.5c0-.1.1-2 1.2-3.1 1.2-1.2 3-1.1 3.1-1.1v.5c0 0-1.7-.1-2.7.9-1.1 1-1.1 2.8-1.1 2.8"/><path d="m49.2 53.5c0 0-.1-1.8-1-2.8-1-1-2.7-.9-2.7-.9v-.5c.1 0 1.9-.1 3.1 1.1 1.1 1.1 1.2 3.1 1.2 3.1h-.6"/><path d="m44.4 58.8c-.4 0-1.9-.1-3-1.1-1.1-1.1-1.2-3.1-1.2-3.2h.5c0 0 .1 1.8 1 2.8 1 1 2.7 1 2.7.9v.6c.1 0 .1 0 0 0"/><path d="m45.6 58.8c-.1 0-.1 0 0 0l-.1-.5c0 0 1.7.1 2.7-.9 1-1 1-2.8 1-2.8h.5c0 .1-.1 2-1.2 3.2-1 .9-2.5 1-2.9 1"/></g><circle cx="13" cy="50" r="1.5" fill="#3e4347"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f7.svg b/riot/emojione/svg/26f7.svg new file mode 100644 index 0000000..a9fb9b8 --- /dev/null +++ b/riot/emojione/svg/26f7.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m31.8 22.3l-3.4-8.1-15 3.7c.6 2.6 2 3 2.7 3.8.3.4.1 1.6 0 2.2-.2 1.4 1.7.9 2.1.3 1 .5.4 1.8 2.3-.7 0 0-1.5 3 .6 2 1.3 3.2 10.7-3.2 10.7-3.2" fill="#ffdd67"/><g fill="#937237"><path d="m18 20c.4.5.5 1.1.1 1.4-.3.3-.8 0-1.2-.5-.4-.5-.7-1-.3-1.3.4-.3 1-.1 1.4.4"/><path d="m21.2 22.6c0 0-.3 1.5-.5 2-.4.9-.7.8-.6.2.1-.5.5-1.3.5-1.3l.6-.9"/></g><path d="m34.9 28.9l-1.3 2.9-4.4 6.4c-1.3 1.3-1.3 3.4 0 4.7l6.2-2.3c2.1-1 1.5-3 2-3.6 1.9-2.1 4.6-1.5 6.1-4.4.8-1.6.6-3.7-.3-5.2l-8.3 1.5" fill="#3e4347"/><path d="m45.5 28.4c-2.2-3.7-6.1-3.3-8.8-5.8-5.6-5.2-9-2.8-8.8-1.7.4 3.1-.1 5.4.8 6.2l5 4.6c0 0 1.7-1.6 4.6-2.1 4.6-.8 7.2-1.2 7.2-1.2" fill="#44618b"/><g fill="#cc2e45"><path d="m31.1 17.9c0 0 5.1-1.6 6.9-1.5 1.8.1 5.1 2.2 6.9 2.4 1 .1 3.2-1.1 4-.5.9.6 1.7 3.4 1 4.2-.8 1-3.9.5-5.1.3-2-.5-5.3-3.7-7.4-4-1.8-.3-7 1.5-7 1.5l.7-2.4"/><path d="m29.2 19.3c0 0 3.3-4.2 4.8-5.1 1.6-.9 5.5-1.1 7.1-1.9.9-.5 2-2.7 3-2.7 1.1 0 3.3 1.8 3.3 2.9 0 1.3-2.8 2.6-4 3.1-1.9.8-6.5 0-8.4.9-1.6.8-4.9 5.2-4.9 5.2l-.9-2.4"/></g><path d="m24.1 5.6c.3 2.3-1.3 4.4-3.6 4.6-2.3.3-4.3-1.3-4.6-3.6-.3-2.3 1.3-4.3 3.6-4.6 2.2-.3 4.3 1.4 4.6 3.6" fill="#86d0bf"/><g fill="#44618b"><path d="m30.4 11.6c-1.9-3.7-6-6-10.4-5.4-4.4.5-7.8 3.8-8.7 7.8 2.6-1.6 5.8-2.8 9.3-3.2 3.5-.5 6.9-.2 9.8.8"/><path d="m31.5 15c-3-1.1-6.7-1.6-10.5-1.1-3.8.5-7.2 1.8-9.9 3.6 0 0 0 0 0 .1.7 5.6 4.7.2 10.3-.5 5.6-.7 10.8 3.5 10.1-2.1"/></g><g fill="#86d0bf"><path d="m31.5 15c-.2-1.2-.5-2.4-1.1-3.4-2.9-.9-6.3-1.3-9.8-.9-3.5.4-6.7 1.6-9.3 3.2-.3 1.1-.4 2.3-.2 3.5 2.7-1.8 6.1-3.2 9.9-3.6 3.8-.4 7.4.1 10.5 1.2"/><path d="m30.5 51.1c-1.3.5-2 1.9-1.5 3.2l.9 2.3 10.1-3.7-1.7-4.6-7.8 2.8"/></g><path d="m29.3 55c-.4.2-.7.6-.5 1.1.2.4.6.7 1.1.5l10.1-3.7-.6-1.5-10.1 3.6" fill="#44618b"/><path fill="#86d0bf" d="m38.3 48.3l-6.3 2.2-2.8-7.7 6.2-2.3z"/><g fill="#44618b"><path d="m34 46.3l-3.1 1.1c-.4.2-.7.6-.5 1.1.2.4.6.6 1.1.5l3.1-1.1c.4-.2.7-.6.5-1.1-.2-.4-.6-.7-1.1-.5"/><path d="m32.9 43.2l-3.1 1.1c-.4.2-.7.6-.5 1.1.2.4.6.6 1.1.5l3.1-1.1c.4-.2.7-.6.5-1.1-.2-.4-.7-.7-1.1-.5"/></g><g fill="#ed4c5c"><path d="m19.7 60.2c-.9.3-1.8-.1-2.1-1l-1.6.6c.6 1.7 2.5 2.6 4.2 2l32.8-11.8-.6-1.5-32.7 11.7"/><path d="m51.1 28.2l-36.2 14.2.6 1.5 36.2-14.3c.4-.2.6-.6.5-1.1-.2-.3-.7-.5-1.1-.3"/></g><path d="m50 32.1c.2.4.7.6 1.1.5.4-.2.6-.6.5-1.1l-1.8-4.6c-.2-.4-.7-.6-1.1-.5-.4.2-.6.6-.5 1.1l1.8 4.6" fill="#3e4347"/><path d="m29.7 19.4c-1.4 0-2.7 1.2-2.4 2.5 1.8 7.7-4.4 15.2-4.4 15.2l3.6 3.4c0 0 8.1-11.7 5.7-18.7-.4-1.3-1.1-2.4-2.5-2.4" fill="#86d0bf"/><path d="m22.1 38c-1.7-.2-2.1.9-3.4 1.6-.6.3-.9 1.2-.5 1.5l.9-.3c-.1 1-.6 3 .5 2.9 2-.3 2.4.9 4.5 0 .8-.3 1.5-1.6 1.5-2.3l.8-.8-3.6-3.4-.7.8" fill="#44618b"/><path d="m21.6 26.6c.6 1.2 2.5-.2 3.1 0 .7.2 1.5 1.6 2.2 1.5 2.1-.4.1-4.5 1-5.9.7-1 5.1-1.2 5.6-2.3.2-.4-1-.9-1.2-1.3-.2-.4.3-1.3-.2-1.5-1.7-.6-5 1.8-6.4 2.7-1.7 1.1-4.8 5.2-4.1 6.8" fill="#ed4c5c"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f8.svg b/riot/emojione/svg/26f8.svg new file mode 100644 index 0000000..60adcaf --- /dev/null +++ b/riot/emojione/svg/26f8.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m13.1 50.7c0 0-5.1 4.1-6.7 5.7-2.4 2.3-4 5.6 14.1 5.6 11.5 0 38.5 0 38.5 0v-2.9h-3.9c0 0-2.2-6.6-2.7-8.4-.2-.7-3.2.2-2.8.9.7 1.4-.4 7.5-.4 7.5h-22.6c-2.4 0-.9-1.8-.3-3.8l-3.9-.2c0 0 .6 4-6.4 4-4.4 0-8-.7-6.5-2.1 1.3-1.3 5.6-4.7 5.6-4.7l-2-1.6" fill="#d0d0d0"/><path d="m20.2 42.6c0 0 9.1-4 12.8-13.1 4-10.1-.6-23.5-.6-23.5s1.1-3.2 4.6-3.2c2.3 0 3.4 2.4 3.4 2.4s2 22-1.2 28.6c-6.4 13.1-19 8.8-19 8.8" fill="#ce344a"/><path d="m54.4 5.5c0 0-8.6-4.1-13.7-3.4-3.4.5-4.5 4-4.6 5.7-.3 5.5 2.2 16.1.7 21.4-1.3 4.7-9 13.8-14.1 13.9-.8 0-2.2-1.4-2.9-1-2.4 1.2-10.2 2.1-9.5 7.2.7 4.6 8 7.4 16.4 7.7 4.1.1 12.6-1.5 14.4-7.9.7-2.4 3.8-2.1 3.8-2.1l1.6 6.2h10c0 0 2.1-7.6 2.1-15.4 0-8.3-4.3-9.6-5.7-14.8-1.3-4.5 1.5-17.5 1.5-17.5" fill="#f46767"/><path d="m50.5 7.3c0 0-4.2-5.1-9.3-4.3-3.4.5-4.5 4-4.6 5.7-.3 5.5 2.2 16.1.7 21.4-1.3 4.7-9 13.8-14.1 13.9-.8 0-2.2-1.4-2.9-1-2.4 1.2-9.7 2.6-7.4 7.2 2.5 5.1 22.4 5.2 28.5-6 2.2-4.1 5.3 2 8.4.4 4.9-2.5-2.4-10.8-2.9-18.3-.4-4.7 3.6-19 3.6-19" fill="#ed4c5c"/><g fill="#a8203b"><ellipse cx="25.7" cy="44.9" rx="1.3" ry="1.3"/><ellipse cx="30.1" cy="42.3" rx="1.3" ry="1.3"/><ellipse cx="34.1" cy="39.7" rx="1.3" ry="1.3"/><ellipse cx="37.3" cy="35.4" rx="1.3" ry="1.3"/><ellipse cx="38.6" cy="30.3" rx="1.3" ry="1.3"/><ellipse cx="40.2" cy="25" rx="1.3" ry="1.3"/><ellipse cx="40.4" cy="20.6" rx="1.3" ry="1.3"/><ellipse cx="40" cy="15.5" rx="1.3" ry="1.3"/><ellipse cx="40" cy="9.5" rx="1.3" ry="1.3"/></g><g fill="#d0d0d0"><path d="m25.4 45.3c-.3 0-.6-.1-.7-.4-.1-.2-2.5-4.2 0-6.2.4-.3.9-.2 1.2.1s.3.9-.1 1.2c-1.1.9-.1 3.3.4 4.1.2.4.1.9-.3 1.2-.2-.1-.3 0-.5 0"/><path d="m29.6 42.6c-.2 0-.5-.1-.7-.3-.1-.2-3.3-4.1-1.3-6.6.3-.4.8-.4 1.2-.1.4.3.4.8.1 1.2-1 1.2.6 3.7 1.3 4.4.3.4.2.9-.1 1.2-.1.1-.3.2-.5.2"/><path d="m33.6 40.1c-.2 0-.4-.1-.5-.2-.4-.3-3.8-3.1-3.8-5.7 0-.9.3-1.6 1-2.2.3-.3.9-.3 1.2.1s.3.9-.1 1.2c-.3.3-.4.5-.4.9 0 1.5 2.4 3.7 3.2 4.4.4.3.4.8.1 1.2-.2.2-.4.3-.7.3"/><path d="m36.9 35.9c-.1 0-.2 0-.3-.1-.5-.2-4.5-1.8-5.4-4.2-.3-.8-.2-1.6.2-2.4.2-.4.8-.5 1.2-.3.4.2.6.7.3 1.1-.2.3-.2.6-.1 1 .5 1.3 3 2.7 4.4 3.2.4.2.7.7.5 1.1-.1.4-.4.6-.8.6"/><path d="m38.3 31c0 0-.1 0-.1 0-.5-.1-4.6-.7-5.8-2.7-.4-.7-.5-1.5-.1-2.3.2-.4.7-.6 1.1-.5.4.2.7.7.5 1.1-.2.4-.1.7 0 .9.6 1 3.1 1.7 4.6 1.9.5.1.8.5.7.9-.1.4-.5.7-.9.7"/><path d="m37.1 26c-1.3 0-2.7-.2-3.6-1-.6-.5-1-1.3-.9-2.2 0-.5.4-.8.9-.8.5 0 .8.4.8.9 0 .5.2.7.3.8.9.8 3.5.6 5 .3.5-.1.9.2 1 .7.1.5-.2.9-.7 1-.2.1-1.4.3-2.8.3"/><path d="m37.3 21.6c-1.3 0-2.7-.2-3.6-1-.6-.5-1-1.3-.9-2.2 0-.5.4-.8.9-.8.5 0 .8.4.8.9 0 .5.2.7.3.8.9.8 3.5.6 5 .3.5-.1.9.2 1 .7.1.5-.2.9-.7 1-.2.1-1.4.3-2.8.3"/><path d="m36.9 16.8c-1.3 0-2.7-.2-3.6-.9-.6-.5-1-1.3-.9-2.2 0-.5.4-.8.9-.8.5 0 .8.4.8.9 0 .5.2.7.3.8.9.8 3.5.6 5 .3.5-.1.9.2 1 .7.1.5-.2.9-.7 1-.2 0-1.4.2-2.8.2"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f9-1f3fb.svg b/riot/emojione/svg/26f9-1f3fb.svg new file mode 100644 index 0000000..480994c --- /dev/null +++ b/riot/emojione/svg/26f9-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.9 25.6l-5.6-2.3-2.5-6.1-3.5 1.5 2.8 6.9c.2.4.4.7.7.9.2.1.3.2.5.2l6 2.5c.9.4 2-.1 2.4-1.1.6-1 .2-2.1-.8-2.5" fill="#ffe1bd"/><ellipse cx="16.7" cy="10.8" rx="8.7" ry="8.8" fill="#ff8736"/><g fill="#231f20"><path d="m10.5 4.6c.2.8.5 1.4.8 2.1.3.7.7 1.3 1.1 1.9.8 1.3 1.7 2.5 2.6 3.6.9 1.2 1.9 2.3 3 3.3.5.5 1.1 1 1.7 1.4.6.4 1.3.8 2 1-.8-.1-1.5-.4-2.2-.7-.7-.4-1.3-.8-1.9-1.3-1.2-1-2.2-2.1-3.2-3.2-1-1.2-1.8-2.4-2.6-3.8-.4-.7-.7-1.4-1-2.1 0-.7-.3-1.4-.3-2.2"/><path d="m8 10.6c.5 1.1 1.2 2.1 2 3 .8.8 1.8 1.5 2.9 2 1.1.5 2.2.9 3.3 1.3.6.2 1.1.5 1.6.9.5.4.8 1 .9 1.6-.2-.6-.6-1-1.1-1.3-.5-.3-1-.5-1.6-.7-1.1-.4-2.3-.7-3.4-1.2-1.1-.5-2.2-1.2-3-2.2-.8-1.1-1.3-2.3-1.6-3.4"/><path d="m23.7 16c-.7.3-1.5.4-2.3.1-.8-.4-1.2-1.1-1.5-1.9-.6-1.5-.8-3-1.1-4.5-.3-1.5-.7-3-1.3-4.3-.6-1.3-1.7-2.5-3.2-3.1.8.2 1.5.5 2.1 1 .6.5 1.1 1.1 1.5 1.8.8 1.4 1.2 2.9 1.5 4.4l.4 2.3c.1.8.3 1.5.5 2.2.2.7.6 1.4 1.2 1.8.6.4 1.4.4 2.2.2"/><path d="m21.7 3.6c.4.3.7.7.9 1.1.2.4.4.9.6 1.3.3 1 .5 2 .5 3 .1 2-.4 4-1.5 5.7-.6.8-1.3 1.6-2.1 2.1-.8.6-1.7 1-2.7 1.2-1.9.5-3.8.4-5.7.1 1.9.1 3.8-.1 5.6-.6 1.8-.6 3.4-1.6 4.4-3.2 1-1.5 1.5-3.4 1.5-5.3 0-.9-.1-1.9-.3-2.8-.2-1-.5-1.9-1.2-2.6"/></g><g fill="#3e4347"><path d="m50 58.6l-.9-4.2c.9-.8 1.2-.8 1.2-.8.6-.3 1.4 0 1.7.6l3.7 7.6c-1.4.7-4.2-.3-5.7-3.2"/><path d="m36.6 54.8l-1.4-3.9c.9-.7 2.5-1.5 2.5-1.5.6-.2 1.4.1 1.6.8l2.9 8c-1.4.5-4.2-.5-5.6-3.4"/></g><path fill="#ffe1bd" d="m37.7 16.5l1.8.4-2.2 10.1-3.3-2.5z"/><path d="m39.1 40.3h-13.2c0 0 .3-8 3.4-13.6 2.4-4.4 8.7-3.1 8.7-3.1l1.1 16.7" fill="#47b892"/><g fill="#ffe1bd"><path d="m55 27.4c-2.1-1.7-2.6-2.1-3.5-1.2l-5.7-3.8c-.3-.2-.7-.3-1.1-.3-.2 0-.4.1-.5.1l-6.4 1.4c-1 .2-1.6 1.2-1.4 2.3.2 1 1.2 1.7 2.2 1.5l5.9-1.3 4.7 3.1c-.1.5 0 1 .4 1.3l.7.6c.4.3.9.3 1.2.1 1 .7 2.5 1.3 3.8-.5.3-.2 1.5-1.8-.3-3.3"/><path d="m37.5 23.4c-2.9.1-4.1 5.4-5.4 5.8-2.1.6-2.5-2.1-.8-4.3 2.1-2.8 6.2-1.5 6.2-1.5"/><path d="m49.1 54.4l.9 4.2c0 0-5.5-2-8.5-2.3-1-.1-1.1-1.2-1.6-1.4-2.7-1.5-3.9-6-3.9-6l5.6-1.2c0 0 .2 1.7 1 4.1.1.3.3.7 1.2.6 1.8-.1 3.8 2.3 5.3 2"/><path d="m36.6 54.8l-1.4-3.9c-1.4.4-2-.3-3.4.4-.6.3-.9-.1-.8-.3.4-1.3.4-2 .4-2l-5.9-.8c0 0-.3 4.4 2.2 7.9.6.8 2.9 1 3.4.7 2.9-1.7 5.5-2 5.5-2"/></g><path d="m25.9 40.3h13.2l3.5 7.1-6.9 1.5c-.4-.7-.7-1.5-1-2.1-.2-.4-.6-.8-1.1-.8-.6 0-1 .5-1.2 1.1-.2.6-.4 1.3-.6 1.9l-6.6-.9.7-7.8" fill="#3e4347"/><path d="m32.2 21.9c.5 1.7-.9 3.5-.9 3.5 3.6.7 4.9-2.7 5.9-7.7 0 0-5.9 1.2-5 4.2" fill="#e6b796"/><path d="m39.9 5.5l-11.4 2.3c-1.7 2.3-1 3.8-1.2 4.9-.1.5-1.2 1.2-1.8 1.6-1.3.9.5 2 1.3 1.9.3 1.1-1.1 1.6 2.2 1.4 0 0-3.5.9-1.3 1.9-.4 1.3-1 3.7 6.1 2.1 2.1-.5 3.4-3.9 3.4-3.9l3.5-.1-.8-12.1" fill="#ffe1bd"/><path d="m32.3 3.5c7.5-1.4 10.9 2.9 11.3 4.7 1.2 4.6-1.1 9.3-5 12.5 0 0-1.5-.9-1.5-2.9 0 0 1.7 1.1 3-2.6 1.1-3.1-2-5.2-4.3-1.1l-.4-.1c-.6-2.3 1.5-4.8-.9-6-2.1-1.1-6.4.3-6.4.3-.5-1.5 1.2-4.2 4.2-4.8" fill="#594640"/><path d="m30 13c-.1.7-.6 1.2-1 1.1-.5-.1-.5-.6-.4-1.3.1-.7.3-1.2.8-1.1.4.1.7.7.6 1.3" fill="#664e27"/><path d="m36.7 14.9c.2-1.3 1.5-2.3 2.6-2.2 0 0-2.1 1.3-2 3.5 0 0-.7-.4-.6-1.3" fill="#e6b796"/><path d="m30.1 17.5c0 0-1.5.8-2 1-1 .3-1.2 0-.5-.3.5-.3 1.4-.5 1.4-.5l1.1-.2" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f9-1f3fc.svg b/riot/emojione/svg/26f9-1f3fc.svg new file mode 100644 index 0000000..dd18a65 --- /dev/null +++ b/riot/emojione/svg/26f9-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.9 25.6l-5.6-2.3-2.5-6.1-3.5 1.5 2.8 6.9c.2.4.4.7.7.9.2.1.3.2.5.2l6 2.5c.9.4 2-.1 2.4-1.1.6-1 .2-2.1-.8-2.5" fill="#fed0ac"/><ellipse cx="16.7" cy="10.8" rx="8.7" ry="8.8" fill="#ff8736"/><g fill="#231f20"><path d="m10.5 4.6c.2.8.5 1.4.8 2.1.3.7.7 1.3 1.1 1.9.8 1.3 1.7 2.5 2.6 3.6.9 1.2 1.9 2.3 3 3.3.5.5 1.1 1 1.7 1.4.6.4 1.3.8 2 1-.8-.1-1.5-.4-2.2-.7-.7-.4-1.3-.8-1.9-1.3-1.2-1-2.2-2.1-3.2-3.2-1-1.2-1.8-2.4-2.6-3.8-.4-.7-.7-1.4-1-2.1 0-.7-.3-1.4-.3-2.2"/><path d="m8 10.6c.5 1.1 1.2 2.1 2 3 .8.8 1.8 1.5 2.9 2 1.1.5 2.2.9 3.3 1.3.6.2 1.1.5 1.6.9.5.4.8 1 .9 1.6-.2-.6-.6-1-1.1-1.3-.5-.3-1-.5-1.6-.7-1.1-.4-2.3-.7-3.4-1.2-1.1-.5-2.2-1.2-3-2.2-.8-1.1-1.3-2.3-1.6-3.4"/><path d="m23.7 16c-.7.3-1.5.4-2.3.1-.8-.4-1.2-1.1-1.5-1.9-.6-1.5-.8-3-1.1-4.5-.3-1.5-.7-3-1.3-4.3-.6-1.3-1.7-2.5-3.2-3.1.8.2 1.5.5 2.1 1 .6.5 1.1 1.1 1.5 1.8.8 1.4 1.2 2.9 1.5 4.4l.4 2.3c.1.8.3 1.5.5 2.2.2.7.6 1.4 1.2 1.8.6.4 1.4.4 2.2.2"/><path d="m21.7 3.6c.4.3.7.7.9 1.1.2.4.4.9.6 1.3.3 1 .5 2 .5 3 .1 2-.4 4-1.5 5.7-.6.8-1.3 1.6-2.1 2.1-.8.6-1.7 1-2.7 1.2-1.9.5-3.8.4-5.7.1 1.9.1 3.8-.1 5.6-.6 1.8-.6 3.4-1.6 4.4-3.2 1-1.5 1.5-3.4 1.5-5.3 0-.9-.1-1.9-.3-2.8-.2-1-.5-1.9-1.2-2.6"/></g><g fill="#3e4347"><path d="m50 58.6l-.9-4.2c.9-.8 1.2-.8 1.2-.8.6-.3 1.4 0 1.7.6l3.7 7.6c-1.4.7-4.2-.3-5.7-3.2"/><path d="m36.6 54.8l-1.4-3.9c.9-.7 2.5-1.5 2.5-1.5.6-.2 1.4.1 1.6.8l2.9 8c-1.4.5-4.2-.5-5.6-3.4"/></g><path fill="#fed0ac" d="m37.7 16.5l1.8.4-2.2 10.1-3.3-2.5z"/><path d="m39.1 40.3h-13.2c0 0 .3-8 3.4-13.6 2.4-4.4 8.7-3.1 8.7-3.1l1.1 16.7" fill="#47b892"/><g fill="#fed0ac"><path d="m55 27.4c-2.1-1.7-2.6-2.1-3.5-1.2l-5.7-3.8c-.3-.2-.7-.3-1.1-.3-.2 0-.4.1-.5.1l-6.4 1.4c-1 .2-1.6 1.2-1.4 2.3.2 1 1.2 1.7 2.2 1.5l5.9-1.3 4.7 3.1c-.1.5 0 1 .4 1.3l.7.6c.4.3.9.3 1.2.1 1 .7 2.5 1.3 3.8-.5.3-.2 1.5-1.8-.3-3.3"/><path d="m37.5 23.4c-2.9.1-4.1 5.4-5.4 5.8-2.1.6-2.5-2.1-.8-4.3 2.1-2.8 6.2-1.5 6.2-1.5"/><path d="m49.1 54.4l.9 4.2c0 0-5.5-2-8.5-2.3-1-.1-1.1-1.2-1.6-1.4-2.7-1.5-3.9-6-3.9-6l5.6-1.2c0 0 .2 1.7 1 4.1.1.3.3.7 1.2.6 1.8-.1 3.8 2.3 5.3 2"/><path d="m36.6 54.8l-1.4-3.9c-1.4.4-2-.3-3.4.4-.6.3-.9-.1-.8-.3.4-1.3.4-2 .4-2l-5.9-.8c0 0-.3 4.4 2.2 7.9.6.8 2.9 1 3.4.7 2.9-1.7 5.5-2 5.5-2"/></g><path d="m25.9 40.3h13.2l3.5 7.1-6.9 1.5c-.4-.7-.7-1.5-1-2.1-.2-.4-.6-.8-1.1-.8-.6 0-1 .5-1.2 1.1-.2.6-.4 1.3-.6 1.9l-6.6-.9.7-7.8" fill="#3e4347"/><path d="m32.2 21.9c.5 1.7-.9 3.5-.9 3.5 3.6.7 4.9-2.7 5.9-7.7 0 0-5.9 1.2-5 4.2" fill="#e0a372"/><path d="m39.9 5.5l-11.4 2.3c-1.7 2.3-1 3.8-1.2 4.9-.1.5-1.2 1.2-1.8 1.6-1.3.9.5 2 1.3 1.9.3 1.1-1.1 1.6 2.2 1.4 0 0-3.5.9-1.3 1.9-.4 1.3-1 3.7 6.1 2.1 2.1-.5 3.4-3.9 3.4-3.9l3.5-.1-.8-12.1" fill="#fed0ac"/><path d="m32.3 3.5c7.5-1.4 10.9 2.9 11.3 4.7 1.2 4.6-1.1 9.3-5 12.5 0 0-1.5-.9-1.5-2.9 0 0 1.7 1.1 3-2.6 1.1-3.1-2-5.2-4.3-1.1l-.4-.1c-.6-2.3 1.5-4.8-.9-6-2.1-1.1-6.4.3-6.4.3-.5-1.5 1.2-4.2 4.2-4.8" fill="#dbb471"/><path d="m30 13c-.1.7-.6 1.2-1 1.1-.5-.1-.5-.6-.4-1.3.1-.7.3-1.2.8-1.1.4.1.7.7.6 1.3" fill="#664e27"/><path d="m36.7 14.9c.2-1.3 1.5-2.3 2.6-2.2 0 0-2.1 1.3-2 3.5 0 0-.7-.4-.6-1.3" fill="#e0a372"/><path d="m30.1 17.5c0 0-1.5.8-2 1-1 .3-1.2 0-.5-.3.5-.3 1.4-.5 1.4-.5l1.1-.2" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f9-1f3fd.svg b/riot/emojione/svg/26f9-1f3fd.svg new file mode 100644 index 0000000..0af2608 --- /dev/null +++ b/riot/emojione/svg/26f9-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.9 25.6l-5.6-2.3-2.5-6.1-3.5 1.5 2.8 6.9c.2.4.4.7.7.9.2.1.3.2.5.2l6 2.5c.9.4 2-.1 2.4-1.1.6-1 .2-2.1-.8-2.5" fill="#d6a57c"/><ellipse cx="16.7" cy="10.8" rx="8.7" ry="8.8" fill="#ff8736"/><g fill="#231f20"><path d="m10.5 4.6c.2.8.5 1.4.8 2.1.3.7.7 1.3 1.1 1.9.8 1.3 1.7 2.5 2.6 3.6.9 1.2 1.9 2.3 3 3.3.5.5 1.1 1 1.7 1.4.6.4 1.3.8 2 1-.8-.1-1.5-.4-2.2-.7-.7-.4-1.3-.8-1.9-1.3-1.2-1-2.2-2.1-3.2-3.2-1-1.2-1.8-2.4-2.6-3.8-.4-.7-.7-1.4-1-2.1 0-.7-.3-1.4-.3-2.2"/><path d="m8 10.6c.5 1.1 1.2 2.1 2 3 .8.8 1.8 1.5 2.9 2 1.1.5 2.2.9 3.3 1.3.6.2 1.1.5 1.6.9.5.4.8 1 .9 1.6-.2-.6-.6-1-1.1-1.3-.5-.3-1-.5-1.6-.7-1.1-.4-2.3-.7-3.4-1.2-1.1-.5-2.2-1.2-3-2.2-.8-1.1-1.3-2.3-1.6-3.4"/><path d="m23.7 16c-.7.3-1.5.4-2.3.1-.8-.4-1.2-1.1-1.5-1.9-.6-1.5-.8-3-1.1-4.5-.3-1.5-.7-3-1.3-4.3-.6-1.3-1.7-2.5-3.2-3.1.8.2 1.5.5 2.1 1 .6.5 1.1 1.1 1.5 1.8.8 1.4 1.2 2.9 1.5 4.4l.4 2.3c.1.8.3 1.5.5 2.2.2.7.6 1.4 1.2 1.8.6.4 1.4.4 2.2.2"/><path d="m21.7 3.6c.4.3.7.7.9 1.1.2.4.4.9.6 1.3.3 1 .5 2 .5 3 .1 2-.4 4-1.5 5.7-.6.8-1.3 1.6-2.1 2.1-.8.6-1.7 1-2.7 1.2-1.9.5-3.8.4-5.7.1 1.9.1 3.8-.1 5.6-.6 1.8-.6 3.4-1.6 4.4-3.2 1-1.5 1.5-3.4 1.5-5.3 0-.9-.1-1.9-.3-2.8-.2-1-.5-1.9-1.2-2.6"/></g><g fill="#3e4347"><path d="m50 58.6l-.9-4.2c.9-.8 1.2-.8 1.2-.8.6-.3 1.4 0 1.7.6l3.7 7.6c-1.4.7-4.2-.3-5.7-3.2"/><path d="m36.6 54.8l-1.4-3.9c.9-.7 2.5-1.5 2.5-1.5.6-.2 1.4.1 1.6.8l2.9 8c-1.4.5-4.2-.5-5.6-3.4"/></g><path fill="#d6a57c" d="m37.7 16.5l1.8.4-2.2 10.1-3.3-2.5z"/><path d="m39.1 40.3h-13.2c0 0 .3-8 3.4-13.6 2.4-4.4 8.7-3.1 8.7-3.1l1.1 16.7" fill="#47b892"/><g fill="#d6a57c"><path d="m55 27.4c-2.1-1.7-2.6-2.1-3.5-1.2l-5.7-3.8c-.3-.2-.7-.3-1.1-.3-.2 0-.4.1-.5.1l-6.4 1.4c-1 .2-1.6 1.2-1.4 2.3.2 1 1.2 1.7 2.2 1.5l5.9-1.3 4.7 3.1c-.1.5 0 1 .4 1.3l.7.6c.4.3.9.3 1.2.1 1 .7 2.5 1.3 3.8-.5.3-.2 1.5-1.8-.3-3.3"/><path d="m37.5 23.4c-2.9.1-4.1 5.4-5.4 5.8-2.1.6-2.5-2.1-.8-4.3 2.1-2.8 6.2-1.5 6.2-1.5"/><path d="m49.1 54.4l.9 4.2c0 0-5.5-2-8.5-2.3-1-.1-1.1-1.2-1.6-1.4-2.7-1.5-3.9-6-3.9-6l5.6-1.2c0 0 .2 1.7 1 4.1.1.3.3.7 1.2.6 1.8-.1 3.8 2.3 5.3 2"/><path d="m36.6 54.8l-1.4-3.9c-1.4.4-2-.3-3.4.4-.6.3-.9-.1-.8-.3.4-1.3.4-2 .4-2l-5.9-.8c0 0-.3 4.4 2.2 7.9.6.8 2.9 1 3.4.7 2.9-1.7 5.5-2 5.5-2"/></g><path d="m25.9 40.3h13.2l3.5 7.1-6.9 1.5c-.4-.7-.7-1.5-1-2.1-.2-.4-.6-.8-1.1-.8-.6 0-1 .5-1.2 1.1-.2.6-.4 1.3-.6 1.9l-6.6-.9.7-7.8" fill="#3e4347"/><path d="m32.2 21.9c.5 1.7-.9 3.5-.9 3.5 3.6.7 4.9-2.7 5.9-7.7 0 0-5.9 1.2-5 4.2" fill="#b58360"/><path d="m39.9 5.5l-11.4 2.3c-1.7 2.3-1 3.8-1.2 4.9-.1.5-1.2 1.2-1.8 1.6-1.3.9.5 2 1.3 1.9.3 1.1-1.1 1.6 2.2 1.4 0 0-3.5.9-1.3 1.9-.4 1.3-1 3.7 6.1 2.1 2.1-.5 3.4-3.9 3.4-3.9l3.5-.1-.8-12.1" fill="#d6a57c"/><path d="m32.3 3.5c7.5-1.4 10.9 2.9 11.3 4.7 1.2 4.6-1.1 9.3-5 12.5 0 0-1.5-.9-1.5-2.9 0 0 1.7 1.1 3-2.6 1.1-3.1-2-5.2-4.3-1.1l-.4-.1c-.6-2.3 1.5-4.8-.9-6-2.1-1.1-6.4.3-6.4.3-.5-1.5 1.2-4.2 4.2-4.8" fill="#594640"/><path d="m30 13c-.1.7-.6 1.2-1 1.1-.5-.1-.5-.6-.4-1.3.1-.7.3-1.2.8-1.1.4.1.7.7.6 1.3" fill="#664e27"/><path d="m36.7 14.9c.2-1.3 1.5-2.3 2.6-2.2 0 0-2.1 1.3-2 3.5 0 0-.7-.4-.6-1.3" fill="#b58360"/><path d="m30.1 17.5c0 0-1.5.8-2 1-1 .3-1.2 0-.5-.3.5-.3 1.4-.5 1.4-.5l1.1-.2" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f9-1f3fe.svg b/riot/emojione/svg/26f9-1f3fe.svg new file mode 100644 index 0000000..b0b9d36 --- /dev/null +++ b/riot/emojione/svg/26f9-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.9 25.6l-5.6-2.3-2.5-6.1-3.5 1.5 2.8 6.9c.2.4.4.7.7.9.2.1.3.2.5.2l6 2.5c.9.4 2-.1 2.4-1.1.6-1 .2-2.1-.8-2.5" fill="#b47d56"/><ellipse cx="16.7" cy="10.8" rx="8.7" ry="8.8" fill="#ff8736"/><g fill="#231f20"><path d="m10.5 4.6c.2.8.5 1.4.8 2.1.3.7.7 1.3 1.1 1.9.8 1.3 1.7 2.5 2.6 3.6.9 1.2 1.9 2.3 3 3.3.5.5 1.1 1 1.7 1.4.6.4 1.3.8 2 1-.8-.1-1.5-.4-2.2-.7-.7-.4-1.3-.8-1.9-1.3-1.2-1-2.2-2.1-3.2-3.2-1-1.2-1.8-2.4-2.6-3.8-.4-.7-.7-1.4-1-2.1 0-.7-.3-1.4-.3-2.2"/><path d="m8 10.6c.5 1.1 1.2 2.1 2 3 .8.8 1.8 1.5 2.9 2 1.1.5 2.2.9 3.3 1.3.6.2 1.1.5 1.6.9.5.4.8 1 .9 1.6-.2-.6-.6-1-1.1-1.3-.5-.3-1-.5-1.6-.7-1.1-.4-2.3-.7-3.4-1.2-1.1-.5-2.2-1.2-3-2.2-.8-1.1-1.3-2.3-1.6-3.4"/><path d="m23.7 16c-.7.3-1.5.4-2.3.1-.8-.4-1.2-1.1-1.5-1.9-.6-1.5-.8-3-1.1-4.5-.3-1.5-.7-3-1.3-4.3-.6-1.3-1.7-2.5-3.2-3.1.8.2 1.5.5 2.1 1 .6.5 1.1 1.1 1.5 1.8.8 1.4 1.2 2.9 1.5 4.4l.4 2.3c.1.8.3 1.5.5 2.2.2.7.6 1.4 1.2 1.8.6.4 1.4.4 2.2.2"/><path d="m21.7 3.6c.4.3.7.7.9 1.1.2.4.4.9.6 1.3.3 1 .5 2 .5 3 .1 2-.4 4-1.5 5.7-.6.8-1.3 1.6-2.1 2.1-.8.6-1.7 1-2.7 1.2-1.9.5-3.8.4-5.7.1 1.9.1 3.8-.1 5.6-.6 1.8-.6 3.4-1.6 4.4-3.2 1-1.5 1.5-3.4 1.5-5.3 0-.9-.1-1.9-.3-2.8-.2-1-.5-1.9-1.2-2.6"/></g><g fill="#3e4347"><path d="m50 58.6l-.9-4.2c.9-.8 1.2-.8 1.2-.8.6-.3 1.4 0 1.7.6l3.7 7.6c-1.4.7-4.2-.3-5.7-3.2"/><path d="m36.6 54.8l-1.4-3.9c.9-.7 2.5-1.5 2.5-1.5.6-.2 1.4.1 1.6.8l2.9 8c-1.4.5-4.2-.5-5.6-3.4"/></g><path fill="#b47d56" d="m37.7 16.5l1.8.4-2.2 10.1-3.3-2.5z"/><path d="m39.1 40.3h-13.2c0 0 .3-8 3.4-13.6 2.4-4.4 8.7-3.1 8.7-3.1l1.1 16.7" fill="#47b892"/><g fill="#b47d56"><path d="m55 27.4c-2.1-1.7-2.6-2.1-3.5-1.2l-5.7-3.8c-.3-.2-.7-.3-1.1-.3-.2 0-.4.1-.5.1l-6.4 1.4c-1 .2-1.6 1.2-1.4 2.3.2 1 1.2 1.7 2.2 1.5l5.9-1.3 4.7 3.1c-.1.5 0 1 .4 1.3l.7.6c.4.3.9.3 1.2.1 1 .7 2.5 1.3 3.8-.5.3-.2 1.5-1.8-.3-3.3"/><path d="m37.5 23.4c-2.9.1-4.1 5.4-5.4 5.8-2.1.6-2.5-2.1-.8-4.3 2.1-2.8 6.2-1.5 6.2-1.5"/><path d="m49.1 54.4l.9 4.2c0 0-5.5-2-8.5-2.3-1-.1-1.1-1.2-1.6-1.4-2.7-1.5-3.9-6-3.9-6l5.6-1.2c0 0 .2 1.7 1 4.1.1.3.3.7 1.2.6 1.8-.1 3.8 2.3 5.3 2"/><path d="m36.6 54.8l-1.4-3.9c-1.4.4-2-.3-3.4.4-.6.3-.9-.1-.8-.3.4-1.3.4-2 .4-2l-5.9-.8c0 0-.3 4.4 2.2 7.9.6.8 2.9 1 3.4.7 2.9-1.7 5.5-2 5.5-2"/></g><path d="m25.9 40.3h13.2l3.5 7.1-6.9 1.5c-.4-.7-.7-1.5-1-2.1-.2-.4-.6-.8-1.1-.8-.6 0-1 .5-1.2 1.1-.2.6-.4 1.3-.6 1.9l-6.6-.9.7-7.8" fill="#3e4347"/><path d="m32.2 21.9c.5 1.7-.9 3.5-.9 3.5 3.6.7 4.9-2.7 5.9-7.7 0 0-5.9 1.2-5 4.2" fill="#935e3e"/><path d="m39.9 5.5l-11.4 2.3c-1.7 2.3-1 3.8-1.2 4.9-.1.5-1.2 1.2-1.8 1.6-1.3.9.5 2 1.3 1.9.3 1.1-1.1 1.6 2.2 1.4 0 0-3.5.9-1.3 1.9-.4 1.3-1 3.7 6.1 2.1 2.1-.5 3.4-3.9 3.4-3.9l3.5-.1-.8-12.1" fill="#b47d56"/><path d="m32.3 3.5c7.5-1.4 10.9 2.9 11.3 4.7 1.2 4.6-1.1 9.3-5 12.5 0 0-1.5-.9-1.5-2.9 0 0 1.7 1.1 3-2.6 1.1-3.1-2-5.2-4.3-1.1l-.4-.1c-.6-2.3 1.5-4.8-.9-6-2.1-1.1-6.4.3-6.4.3-.5-1.5 1.2-4.2 4.2-4.8" fill="#231f20"/><path d="m30 13c-.1.7-.6 1.2-1 1.1-.5-.1-.5-.6-.4-1.3.1-.7.3-1.2.8-1.1.4.1.7.7.6 1.3" fill="#664e27"/><path d="m36.7 14.9c.2-1.3 1.5-2.3 2.6-2.2 0 0-2.1 1.3-2 3.5 0 0-.7-.4-.6-1.3" fill="#935e3e"/><path d="m30.1 17.5c0 0-1.5.8-2 1-1 .3-1.2 0-.5-.3.5-.3 1.4-.5 1.4-.5l1.1-.2" fill="#664e27"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f9-1f3ff.svg b/riot/emojione/svg/26f9-1f3ff.svg new file mode 100644 index 0000000..f7ee930 --- /dev/null +++ b/riot/emojione/svg/26f9-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.9 25.6l-5.6-2.3-2.5-6.1-3.5 1.5 2.8 6.9c.2.4.4.7.7.9.2.1.3.2.5.2l6 2.5c.9.4 2-.1 2.4-1.1.6-1 .2-2.1-.8-2.5" fill="#8a6859"/><ellipse cx="16.7" cy="10.8" rx="8.7" ry="8.8" fill="#ff8736"/><g fill="#231f20"><path d="m10.5 4.6c.2.8.5 1.4.8 2.1.3.7.7 1.3 1.1 1.9.8 1.3 1.7 2.5 2.6 3.6.9 1.2 1.9 2.3 3 3.3.5.5 1.1 1 1.7 1.4.6.4 1.3.8 2 1-.8-.1-1.5-.4-2.2-.7-.7-.4-1.3-.8-1.9-1.3-1.2-1-2.2-2.1-3.2-3.2-1-1.2-1.8-2.4-2.6-3.8-.4-.7-.7-1.4-1-2.1 0-.7-.3-1.4-.3-2.2"/><path d="m8 10.6c.5 1.1 1.2 2.1 2 3 .8.8 1.8 1.5 2.9 2 1.1.5 2.2.9 3.3 1.3.6.2 1.1.5 1.6.9.5.4.8 1 .9 1.6-.2-.6-.6-1-1.1-1.3-.5-.3-1-.5-1.6-.7-1.1-.4-2.3-.7-3.4-1.2-1.1-.5-2.2-1.2-3-2.2-.8-1.1-1.3-2.3-1.6-3.4"/><path d="m23.7 16c-.7.3-1.5.4-2.3.1-.8-.4-1.2-1.1-1.5-1.9-.6-1.5-.8-3-1.1-4.5-.3-1.5-.7-3-1.3-4.3-.6-1.3-1.7-2.5-3.2-3.1.8.2 1.5.5 2.1 1 .6.5 1.1 1.1 1.5 1.8.8 1.4 1.2 2.9 1.5 4.4l.4 2.3c.1.8.3 1.5.5 2.2.2.7.6 1.4 1.2 1.8.6.4 1.4.4 2.2.2"/><path d="m21.7 3.6c.4.3.7.7.9 1.1.2.4.4.9.6 1.3.3 1 .5 2 .5 3 .1 2-.4 4-1.5 5.7-.6.8-1.3 1.6-2.1 2.1-.8.6-1.7 1-2.7 1.2-1.9.5-3.8.4-5.7.1 1.9.1 3.8-.1 5.6-.6 1.8-.6 3.4-1.6 4.4-3.2 1-1.5 1.5-3.4 1.5-5.3 0-.9-.1-1.9-.3-2.8-.2-1-.5-1.9-1.2-2.6"/></g><g fill="#3e4347"><path d="m50 58.6l-.9-4.2c.9-.8 1.2-.8 1.2-.8.6-.3 1.4 0 1.7.6l3.7 7.6c-1.4.7-4.2-.3-5.7-3.2"/><path d="m36.6 54.8l-1.4-3.9c.9-.7 2.5-1.5 2.5-1.5.6-.2 1.4.1 1.6.8l2.9 8c-1.4.5-4.2-.5-5.6-3.4"/></g><path fill="#8a6859" d="m37.7 16.5l1.8.4-2.2 10.1-3.3-2.5z"/><path d="m39.1 40.3h-13.2c0 0 .3-8 3.4-13.6 2.4-4.4 8.7-3.1 8.7-3.1l1.1 16.7" fill="#47b892"/><g fill="#8a6859"><path d="m55 27.4c-2.1-1.7-2.6-2.1-3.5-1.2l-5.7-3.8c-.3-.2-.7-.3-1.1-.3-.2 0-.4.1-.5.1l-6.4 1.4c-1 .2-1.6 1.2-1.4 2.3.2 1 1.2 1.7 2.2 1.5l5.9-1.3 4.7 3.1c-.1.5 0 1 .4 1.3l.7.6c.4.3.9.3 1.2.1 1 .7 2.5 1.3 3.8-.5.3-.2 1.5-1.8-.3-3.3"/><path d="m37.5 23.4c-2.9.1-4.1 5.4-5.4 5.8-2.1.6-2.5-2.1-.8-4.3 2.1-2.8 6.2-1.5 6.2-1.5"/><path d="m49.1 54.4l.9 4.2c0 0-5.5-2-8.5-2.3-1-.1-1.1-1.2-1.6-1.4-2.7-1.5-3.9-6-3.9-6l5.6-1.2c0 0 .2 1.7 1 4.1.1.3.3.7 1.2.6 1.8-.1 3.8 2.3 5.3 2"/><path d="m36.6 54.8l-1.4-3.9c-1.4.4-2-.3-3.4.4-.6.3-.9-.1-.8-.3.4-1.3.4-2 .4-2l-5.9-.8c0 0-.3 4.4 2.2 7.9.6.8 2.9 1 3.4.7 2.9-1.7 5.5-2 5.5-2"/></g><path d="m25.9 40.3h13.2l3.5 7.1-6.9 1.5c-.4-.7-.7-1.5-1-2.1-.2-.4-.6-.8-1.1-.8-.6 0-1 .5-1.2 1.1-.2.6-.4 1.3-.6 1.9l-6.6-.9.7-7.8" fill="#3e4347"/><path d="m32.2 21.9c.5 1.7-.9 3.5-.9 3.5 3.6.7 4.9-2.7 5.9-7.7 0 0-5.9 1.2-5 4.2" fill="#705041"/><path d="m39.9 5.5l-11.4 2.3c-1.7 2.3-1 3.8-1.2 4.9-.1.5-1.2 1.2-1.8 1.6-1.3.9.5 2 1.3 1.9.3 1.1-1.1 1.6 2.2 1.4 0 0-3.5.9-1.3 1.9-.4 1.3-1 3.7 6.1 2.1 2.1-.5 3.4-3.9 3.4-3.9l3.5-.1-.8-12.1" fill="#8a6859"/><path d="m32.3 3.5c7.5-1.4 10.9 2.9 11.3 4.7 1.2 4.6-1.1 9.3-5 12.5 0 0-1.5-.9-1.5-2.9 0 0 1.7 1.1 3-2.6 1.1-3.1-2-5.2-4.3-1.1l-.4-.1c-.6-2.3 1.5-4.8-.9-6-2.1-1.1-6.4.3-6.4.3-.5-1.5 1.2-4.2 4.2-4.8" fill="#231f20"/><path d="m30 13c-.1.7-.6 1.2-1 1.1-.5-.1-.5-.6-.4-1.3.1-.7.3-1.2.8-1.1.4.1.7.7.6 1.3" fill="#574137"/><path d="m36.7 14.9c.2-1.3 1.5-2.3 2.6-2.2 0 0-2.1 1.3-2 3.5 0 0-.7-.4-.6-1.3" fill="#705041"/><path d="m30.1 17.5c0 0-1.5.8-2 1-1 .3-1.2 0-.5-.3.5-.3 1.4-.5 1.4-.5l1.1-.2" fill="#574137"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26f9.svg b/riot/emojione/svg/26f9.svg new file mode 100644 index 0000000..ad4502b --- /dev/null +++ b/riot/emojione/svg/26f9.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m29.9 25.6l-5.6-2.3-2.5-6.1-3.5 1.5 2.8 6.9c.2.4.4.7.7.9.2.1.3.2.5.2l6 2.5c.9.4 2-.1 2.4-1.1.6-1 .2-2.1-.8-2.5" fill="#ffdd67"/><ellipse cx="16.7" cy="10.8" rx="8.7" ry="8.8" fill="#ff8736"/><g fill="#231f20"><path d="m10.5 4.6c.2.8.5 1.4.8 2.1.3.7.7 1.3 1.1 1.9.8 1.3 1.7 2.5 2.6 3.6.9 1.2 1.9 2.3 3 3.3.5.5 1.1 1 1.7 1.4.6.4 1.3.8 2 1-.8-.1-1.5-.4-2.2-.7-.7-.4-1.3-.8-1.9-1.3-1.2-1-2.2-2.1-3.2-3.2-1-1.2-1.8-2.4-2.6-3.8-.4-.7-.7-1.4-1-2.1 0-.7-.3-1.4-.3-2.2"/><path d="m8 10.6c.5 1.1 1.2 2.1 2 3 .8.8 1.8 1.5 2.9 2 1.1.5 2.2.9 3.3 1.3.6.2 1.1.5 1.6.9.5.4.8 1 .9 1.6-.2-.6-.6-1-1.1-1.3-.5-.3-1-.5-1.6-.7-1.1-.4-2.3-.7-3.4-1.2-1.1-.5-2.2-1.2-3-2.2-.8-1.1-1.3-2.3-1.6-3.4"/><path d="m23.7 16c-.7.3-1.5.4-2.3.1-.8-.4-1.2-1.1-1.5-1.9-.6-1.5-.8-3-1.1-4.5-.3-1.5-.7-3-1.3-4.3-.6-1.3-1.7-2.5-3.2-3.1.8.2 1.5.5 2.1 1 .6.5 1.1 1.1 1.5 1.8.8 1.4 1.2 2.9 1.5 4.4l.4 2.3c.1.8.3 1.5.5 2.2.2.7.6 1.4 1.2 1.8.6.4 1.4.4 2.2.2"/><path d="m21.7 3.6c.4.3.7.7.9 1.1.2.4.4.9.6 1.3.3 1 .5 2 .5 3 .1 2-.4 4-1.5 5.7-.6.8-1.3 1.6-2.1 2.1-.8.6-1.7 1-2.7 1.2-1.9.5-3.8.4-5.7.1 1.9.1 3.8-.1 5.6-.6 1.8-.6 3.4-1.6 4.4-3.2 1-1.5 1.5-3.4 1.5-5.3 0-.9-.1-1.9-.3-2.8-.2-1-.5-1.9-1.2-2.6"/></g><g fill="#3e4347"><path d="m50 58.6l-.9-4.2c.9-.8 1.2-.8 1.2-.8.6-.3 1.4 0 1.7.6l3.7 7.6c-1.4.7-4.2-.3-5.7-3.2"/><path d="m36.6 54.8l-1.4-3.9c.9-.7 2.5-1.5 2.5-1.5.6-.2 1.4.1 1.6.8l2.9 8c-1.4.5-4.2-.5-5.6-3.4"/></g><path fill="#ffdd67" d="m37.7 16.5l1.8.4-2.2 10.1-3.3-2.5z"/><path d="m39.1 40.3h-13.2c0 0 .3-8 3.4-13.6 2.4-4.4 8.7-3.1 8.7-3.1l1.1 16.7" fill="#47b892"/><g fill="#ffdd67"><path d="m55 27.4c-2.1-1.7-2.6-2.1-3.5-1.2l-5.7-3.8c-.3-.2-.7-.3-1.1-.3-.2 0-.4.1-.5.1l-6.4 1.4c-1 .2-1.6 1.2-1.4 2.3.2 1 1.2 1.7 2.2 1.5l5.9-1.3 4.7 3.1c-.1.5 0 1 .4 1.3l.7.6c.4.3.9.3 1.2.1 1 .7 2.5 1.3 3.8-.5.3-.2 1.5-1.8-.3-3.3"/><path d="m37.5 23.4c-2.9.1-4.1 5.4-5.4 5.8-2.1.6-2.5-2.1-.8-4.3 2.1-2.8 6.2-1.5 6.2-1.5"/><path d="m49.1 54.4l.9 4.2c0 0-5.5-2-8.5-2.3-1-.1-1.1-1.2-1.6-1.4-2.7-1.5-3.9-6-3.9-6l5.6-1.2c0 0 .2 1.7 1 4.1.1.3.3.7 1.2.6 1.8-.1 3.8 2.3 5.3 2"/><path d="m36.6 54.8l-1.4-3.9c-1.4.4-2-.3-3.4.4-.6.3-.9-.1-.8-.3.4-1.3.4-2 .4-2l-5.9-.8c0 0-.3 4.4 2.2 7.9.6.8 2.9 1 3.4.7 2.9-1.7 5.5-2 5.5-2"/></g><path d="m25.9 40.3h13.2l3.5 7.1-6.9 1.5c-.4-.7-.7-1.5-1-2.1-.2-.4-.6-.8-1.1-.8-.6 0-1 .5-1.2 1.1-.2.6-.4 1.3-.6 1.9l-6.6-.9.7-7.8" fill="#3e4347"/><path d="m32.2 21.9c.5 1.7-.9 3.5-.9 3.5 3.6.7 4.9-2.7 5.9-7.7 0 0-5.9 1.2-5 4.2" fill="#eba352"/><path d="m39.9 5.5l-11.4 2.3c-1.7 2.3-1 3.8-1.2 4.9-.1.5-1.2 1.2-1.8 1.6-1.3.9.5 2 1.3 1.9.3 1.1-1.1 1.6 2.2 1.4 0 0-3.5.9-1.3 1.9-.4 1.3-1 3.7 6.1 2.1 2.1-.5 3.4-3.9 3.4-3.9l3.5-.1-.8-12.1" fill="#ffdd67"/><path d="m32.3 3.5c7.5-1.4 10.9 2.9 11.3 4.7 1.2 4.6-1.1 9.3-5 12.5 0 0-1.5-.9-1.5-2.9 0 0 1.7 1.1 3-2.6 1.1-3.1-2-5.2-4.3-1.1l-.4-.1c-.6-2.3 1.5-4.8-.9-6-2.1-1.1-6.4.3-6.4.3-.5-1.5 1.2-4.2 4.2-4.8" fill="#ffb300"/><path d="m30 13c-.1.7-.6 1.2-1 1.1-.5-.1-.5-.6-.4-1.3.1-.7.3-1.2.8-1.1.4.1.7.7.6 1.3" fill="#937237"/><path d="m36.7 14.9c.2-1.3 1.5-2.3 2.6-2.2 0 0-2.1 1.3-2 3.5 0 0-.7-.4-.6-1.3" fill="#eba352"/><path d="m30.1 17.5c0 0-1.5.8-2 1-1 .3-1.2 0-.5-.3.5-.3 1.4-.5 1.4-.5l1.1-.2" fill="#937237"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26fa.svg b/riot/emojione/svg/26fa.svg new file mode 100644 index 0000000..73bb513 --- /dev/null +++ b/riot/emojione/svg/26fa.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#1778bd" d="m0 0h64v57h-64z"/><path fill="#75a843" d="m0 57h64v7h-64z"/><circle cx="52.2" cy="11.8" r="10.8" fill="#42ade2"/><circle cx="52.2" cy="11.8" r="8.9" fill="#6adbc6"/><circle cx="52.2" cy="11.8" r="6.7" fill="#dae3ea"/><g fill="#fff"><circle cx="52.2" cy="11.8" r="4.7"/><path d="m60.9 54.4c-6-25.5-27.7-29-28.9-29.2-1.2.3-23 3.8-28.9 29.2l-1-.3c6.3-26.9 29.6-30 29.9-30.1h.1.1c.2 0 23.6 3.1 29.9 30.1l-1.2.3"/></g><path d="m59.5 46.6c-8.8-24.7-27.5-27.6-27.5-27.6s-18.7 2.9-27.5 27.6c0 0 55 0 55 0" fill="#fbb287"/><path d="M58.3,46.6C49.9,30.5,32,28.7,32,28.7S14.1,30.5,5.7,46.6H58.3z" fill="#e17c5b"/><path d="m57.3 46.6h-50.6c-1.1 3.3-2 6.9-2.7 10.9h56c-.7-4-1.6-7.6-2.7-10.9" fill="#5f606c"/><path d="M57.3,46.6C49.2,31.1,32,29.3,32,29.3S14.8,31.1,6.7,46.6H57.3z" fill="#b6acaa"/><g fill="#333"><path d="m61 53.4l-.9 6.3 2.6-5.8z"/><path d="m1.3 53.9l2.6 5.8-.9-6.3z"/></g><path d="m44.4 52.4c-.3 2-24.6 2-24.9 0-.8-5 2.4-15 4.1-19.8.8-2.4 15.9-2.4 16.8 0 1.7 4.8 4.8 14.8 4 19.8" fill="#fbb287"/><path d="m43.4 51.6c-.3 1.9-22.5 1.9-22.8 0-.7-4.6 2.2-13.8 3.7-18.2.8-2.2 14.6-2.2 15.4 0 1.5 4.4 4.4 13.6 3.7 18.2" fill="#5f606c"/><g fill="#333"><path d="m20.6 51.6c.3 1.9 22.5 1.9 22.8 0 .2-1.3.1-3.1-.2-5h-22.4c-.3 1.9-.4 3.7-.2 5"/><path d="m31.5 31.8h.9v15.3h-.9z"/></g><g fill="#fff"><path transform="matrix(.7071-.7071.7071.7071-1.1816 5.197)" d="m5 3.3h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-.9164 14.4636)" d="m16.3 7.6h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 6.0968 20.4632)" d="m27 2.2h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071 6.4359 28.2145)" d="m36.6 5.6h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-1.3785 22.9737)" d="m26.7 12.8h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-7.7166 11.6714)" d="m9.9 14.8h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071-14.5677 9.331)" d="m3.3 21.5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-9.5586 19.4239)" d="m18 20.5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-.7738 32.3619)" d="m38 16.4h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-3.8423 46.1093)" d="m53.4 27.3h.7v.7h-.7z"/><path transform="matrix(.7071-.7071.7071.7071 2.1006 50.1196)" d="m60.8 21.8h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-8.3535 53.6213)" d="m59.8 36.2h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-26.7443 13.9374)" d="m2.7 38.5h1.4v1.4h-1.4z"/><path transform="matrix(.7071-.7071.7071.7071-17.0977 15.5571)" d="m9.9 28.1h.7v.7h-.7z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/26fd.svg b/riot/emojione/svg/26fd.svg new file mode 100644 index 0000000..cfc136b --- /dev/null +++ b/riot/emojione/svg/26fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="26.8" cy="9" r="9" fill="#e8e8e8"/><path d="m41.8 25h-30c-.6 0-1 .5-1 1v3h32v-3c0-.5-.5-1-1-1" fill="#b2c1c0"/><path fill="#d33b23" d="m12.8 29h28v31h-28z"/><g fill="#62727a"><path d="m41.8 60h-30c-.6 0-1 .5-1 1v1h32v-1c0-.5-.5-1-1-1"/><path d="m42.8 62h-32c-.6 0-1 .5-1 1v1h34v-1c0-.5-.5-1-1-1"/></g><g fill="#fff"><path d="m30.8 30.5h-8c-1.1 0-2 .9-2 2v6c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-6c0-1.1-.9-2-2-2"/><path d="m30.8 44h-8c-.5 0-1 .5-1 1v2c0 .5.5 1 1 1h8c.5 0 1-.5 1-1v-2c0-.5-.5-1-1-1"/></g><path fill="#e8e8e8" d="m24.8 17h4v4h-4z"/><g fill="#d33b23"><path d="m40.8 25c-3.6-2.5-8.5-4-14-4s-10.4 1.5-14 4h28"/><path d="m26.8 15.5c-3.6 0-6.5-2.9-6.5-6.5s2.9-6.5 6.5-6.5 6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5m0-12c-3 0-5.5 2.5-5.5 5.5s2.5 5.5 5.5 5.5 5.5-2.5 5.5-5.5-2.5-5.5-5.5-5.5"/></g><g fill="#fff"><path d="m30.4 59h-7.2c-.8 0-1.4-.6-1.4-1.3v-7.3c0-.7.6-1.3 1.4-1.3h7.2c.8 0 1.4.6 1.4 1.3v7.3c0 .7-.7 1.3-1.4 1.3m-7.2-9c-.2 0-.4.2-.4.3v7.3c0 .2.2.3.4.3h7.2c.2 0 .4-.2.4-.3v-7.3c0-.2-.2-.3-.4-.3h-7.2"/><path d="m31.8 42c0 .5-.5 1-1 1h-8c-.5 0-1-.5-1-1v-4c0-.5.5-1 1-1h8c.5 0 1 .5 1 1v4"/></g><g fill="#62727a"><path d="m24.8 41.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v3"/><path d="m27.8 41.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v3"/><path d="m30.8 41.5c0 .3-.2.5-.5.5h-1c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h1c.3 0 .5.2.5.5v3"/></g><g fill="#3e4347"><path d="m45.4 53.5h-2.9c0-1.6-1.3-2.9-2.9-2.9h-2.9v-2.9h2.9c3.1-.1 5.8 2.5 5.8 5.8"/><path d="m48.3 59.4c-3.2 0-5.9-2.6-5.9-5.9h2.9c0 1.6 1.3 2.9 2.9 2.9 1.6 0 2.9-1.3 2.9-2.9v-22.1h2.9v22.1c.2 3.2-2.4 5.9-5.7 5.9"/></g><path d="m54.2 31.4h-2.9v-.1c-2.5-.4-4.4-2.5-4.4-5.1v-.8l4.4-2.9c0-1.6-1.3-2.9-2.9-2.9v-2.9c3.2 0 5.9 2.6 5.9 5.9l-.1 8.8m-4.3-4.5c.2.6.7 1.1 1.4 1.4v-2.3l-1.4.9" fill="#d0d0d0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2702.svg b/riot/emojione/svg/2702.svg new file mode 100644 index 0000000..a5e934d --- /dev/null +++ b/riot/emojione/svg/2702.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m57 48.6c-4.5 8.2-15.7-3.1-30.8-12.6-2.8-1.8-3.9-4.4-1.3-7.2 0 0-.1-.3-.5-.7l5.7-2.5 26.9 23" fill="#a9b5ae"/><path d="m24.1 2.5c-4.3-3.7-10.9-3.2-14.6 1.1-3.8 4.4-3.3 11 1.1 14.7.5.4 1.8 1.2 1.9 1.3 8.2 4.4 11.1 7.3 12 8.5l5.7-2.5-1.9-1.6c0 0-6.2-2.8-6.8-4.1 1.4-.6 2.7-1.5 3.7-2.7 3.8-4.4 3.3-11-1.1-14.7m-3.2 3.8c2.3 1.9 2.5 5.3.6 7.6-1.9 2.3-5.3 2.5-7.6.6-2.3-1.9-2.5-5.3-.6-7.6 1.9-2.3 5.3-2.5 7.6-.6" fill="#454749"/><path d="m57 15.4c-4.5-8.2-15.7 3-30.7 12.6-2.8 1.8-3.9 4.4-1.3 7.2 0 0-.1.3-.5.7l5.7 2.5 26.8-23" fill="#cedbd5"/><g fill="#454749"><path d="m25.3 46.8c-1-1.2-2.3-2.1-3.7-2.7.6-1.3 6.8-4.1 6.8-4.1l1.9-1.6-5.7-2.5c-1 1.3-3.8 4.1-12 8.5-.1.1-1.4.9-1.9 1.3-4.5 3.7-5 10.3-1.2 14.7 3.7 4.4 10.3 4.9 14.7 1.1 4.3-3.7 4.8-10.3 1.1-14.7m-12 10.3c-1.9-2.3-1.7-5.7.6-7.6 2.3-1.9 5.6-1.7 7.6.6 1.9 2.3 1.7 5.7-.6 7.6-2.3 1.9-5.7 1.7-7.6-.6"/><path d="m31.1 33.7c-1 1.2-2.7 1.3-3.9.4-1.2-1-1.3-2.7-.4-3.9 1-1.2 2.7-1.3 3.9-.4 1.2 1 1.3 2.8.4 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2705.svg b/riot/emojione/svg/2705.svg new file mode 100644 index 0000000..4f0474a --- /dev/null +++ b/riot/emojione/svg/2705.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4bd37b"/><path fill="#fff" d="m46 14l-21 21.6-7-7.2-7 7.2 14 14.4 28-28.8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2708.svg b/riot/emojione/svg/2708.svg new file mode 100644 index 0000000..92d5f73 --- /dev/null +++ b/riot/emojione/svg/2708.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#acb8bf"><path transform="matrix(.7071-.7071.7071.7071-3.2532 11.4792)" d="m6.5 8.3h11.5v2.8h-11.5z"/><path transform="matrix(.7072-.707.707.7072-.5001 22.148)" d="m20.7 10.3h11.5v2.8h-11.5z"/><path transform="matrix(.7073-.7069.7069.7073-20.6921 53.5613)" d="m48.6 50.4h11.5v2.8h-11.5z"/><path transform="matrix(.7073-.7069.7069.7073-11.2004 47.9651)" d="m46.6 36.1h11.5v2.8h-11.5z"/></g><path d="m56.4 60.7c-4.7-42.1-4.7-42.1-4.7-42.1l-6.3-6.3c0 0 0 0-42.1-4.7-2-.2-1.6 4.8.7 5.9 31.7 14.8 31.7 14.8 31.7 14.8s0 0 14.8 31.7c1.1 2.3 6.1 2.7 5.9.7" fill="#42ade2"/><path d="m61.3 8.1c2.2-4.3-1.1-7.6-5.4-5.4-5.5 2.8-13.6 9.1-21.8 17.2-12.8 12.8-21 25.5-18.3 28.3 2.7 2.7 15.5-5.5 28.3-18.3 8.1-8.1 14.4-16.3 17.2-21.8" fill="#dae3ea"/><path d="m22.4 60.2c-1.6-14.8-1.6-14.8-1.6-14.8l-2.2-2.2c0 0 0 0-14.8-1.6-.7-.1-.6 1.7.2 2.1 11.1 5.2 11.1 5.2 11.1 5.2s0 0 5.2 11.1c.4.8 2.2.9 2.1.2" fill="#42ade2"/><path d="m20.2 46.2c-4.5 4.5-8.6 7.6-9.2 6.9-.6-.6 2.5-4.8 6.9-9.3 4.5-4.5 8.6-7.6 9.3-6.9.5.6-2.6 4.8-7 9.3" fill="#acb8bf"/><path d="m59.8 9.7c.5-1.8.3-3.5-.8-4.7-1.1-1.1-2.9-1.4-4.6-.8l-3.4 2.1c1.7-.6 4.2.3 5.3 1.4 1.2 1.2 2 3.6 1.4 5.3l2.1-3.3" fill="#3e4347"/><path transform="matrix(.7068-.7074.7074.7068 11.6051 42.3106)" fill="#dae3ea" d="m52.8 6.7h8v.9h-8z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2709.svg b/riot/emojione/svg/2709.svg new file mode 100644 index 0000000..4337c48 --- /dev/null +++ b/riot/emojione/svg/2709.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b0bdc6"><path d="m.6 48.7l18.5-19.3-14.2-20.5c-.7.9-1.2 2.1-1.3 3.5l-3.6 32.7c-.1 1.4.1 2.6.6 3.6"/><path d="m62.7 5.5l-26.8 24.9 21.1 28.5c1.2-1 2-2.5 2.2-4.3l4.8-44.6c.2-1.8-.4-3.5-1.3-4.5"/></g><path d="m25.7 39.4l-6.6-10-18.5 19.3c.4.9 1.1 1.5 1.9 1.7l50.8 9.6c1.4.3 2.7-.2 3.7-1.1l-21.1-28.5-10.2 9" fill="#cad5dd"/><path d="m59.3 4l-52.2 3.5c-.9.1-1.6.6-2.2 1.4l14.3 20.5 6.6 10 10.2-9 26.7-24.9c-.9-1-2.1-1.6-3.4-1.5" fill="#dfe9ef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270a-1f3fb.svg b/riot/emojione/svg/270a-1f3fb.svg new file mode 100644 index 0000000..425a770 --- /dev/null +++ b/riot/emojione/svg/270a-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m53.1 24l-23.5-10.9-26 8.6c0 0-1.5 11.2 0 22.7 2.3 17.9 21.5 14.8 21.5 14.8 13.7 6.2 27.4.4 33.7-14.5 2.3-5.5 2.6-20.8-5.7-20.7"/><path d="m3.7 16.4c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1"/></g><path d="m8.5 32c3.8 0 6.8-3.2 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.1 1.9 1.3 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.7 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2.9 2.7 1.5 4.2 1.5" fill="#e6b796"/><path d="m17.2 10c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2 0 0 0-11.1 0-11.1" fill="#ffe1bd"/><path d="m22 25.6c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.2 2 1.6 2.7 3.5 2.7 5.9v11.1c0 4-3 7-6.7 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.7 1.6 4.2 1.6" fill="#e6b796"/><path d="m30.9 9.2c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1" fill="#ffe1bd"/><path d="m35.7 24.8c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2 1.5 2.7 3.5 2.7 5.8v11.1c0 4-3 7-6.8 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.6 1.6 4.2 1.6" fill="#e6b796"/><path d="m44.3 12.8c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.2c-3.8 0-6.8-3.2-6.8-7.2v-11.1z" fill="#ffe1bd"/><g fill="#e6b796"><path d="m49.2 28.4c3.8 0 6.7-3.2 6.7-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2.1 1.5 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.6 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.1.9 2.5 1.5 4.1 1.5"/><path d="m41.6 32.3c-5.7-2.8-18.5 2-16 14 0-12.5 11.1-14.6 16-14"/><path d="m44.1 17c-5.3-3.7-7 1.1-16.6.5-4.2-.3-7 7.6-1 11.2 8.3 4.9 9.7-.8 11.6 1.7 2 2.6 4.1 3.3 5.7 6.2 1.2 2.1 12.5.1 14.1-3.9 3.2-7.7-5.5-9.8-13.8-15.7"/></g><path d="m44.7 18.5c-5.5-3.8-7.2 1.2-17.2.5-4.4-.3-7.3 7.9-1 11.6 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.7 4.3 3.4 5.9 6.5 1.2 2.2-3.6 9.8-3.6 9.8s10.4 8.5 13.2 4.5c5.2-7.4 4.7-13.7 5.1-18.3.8-10.7-5.9-10.3-14.5-16.4" fill="#ffe1bd"/><g fill="#e6b796"><path d="m43.1 38.9c.4.7.2 1.9-.3 3.2.9-2 1.6-4.1 1.1-5.1-1.7-3.1-2.7-3.8-4.8-6.5-2-2.6-3.4 3.4-12.1-1.8-3.2-1.9-4-5-3.4-7.5-1.6 2.6-1.5 7 2.6 9.4 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.8 3.1 3.5 4.8 6.5"/><path d="m55.6 24.9c5.5 3.3 3.6 18.4-1.5 25.2-8 10.7-18.5 10.6-29 8.5 0 0-12.7 3.5-20.1-8.5 4.6 12.7 20.1 10.1 20.1 10.1 11.1 3.4 21.9 2.6 30.4-8.4 5.5-7 8.8-24.1.1-26.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270a-1f3fc.svg b/riot/emojione/svg/270a-1f3fc.svg new file mode 100644 index 0000000..64c091b --- /dev/null +++ b/riot/emojione/svg/270a-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m53.1 24l-23.5-10.9-26 8.6c0 0-1.5 11.2 0 22.7 2.3 17.9 21.5 14.8 21.5 14.8 13.7 6.2 27.4.4 33.7-14.5 2.3-5.5 2.6-20.8-5.7-20.7"/><path d="m3.7 16.4c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1"/></g><path d="m8.5 32c3.8 0 6.8-3.2 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.1 1.9 1.3 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.7 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2.9 2.7 1.5 4.2 1.5" fill="#e0a372"/><path d="m17.2 10c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2 0 0 0-11.1 0-11.1" fill="#fed0ac"/><path d="m22 25.6c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.2 2 1.6 2.7 3.5 2.7 5.9v11.1c0 4-3 7-6.7 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.7 1.6 4.2 1.6" fill="#e0a372"/><path d="m30.9 9.2c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1" fill="#fed0ac"/><path d="m35.7 24.8c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2 1.5 2.7 3.5 2.7 5.8v11.1c0 4-3 7-6.8 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.6 1.6 4.2 1.6" fill="#e0a372"/><path d="m44.3 12.8c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.2c-3.8 0-6.8-3.2-6.8-7.2v-11.1z" fill="#fed0ac"/><g fill="#e0a372"><path d="m49.2 28.4c3.8 0 6.7-3.2 6.7-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2.1 1.5 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.6 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.1.9 2.5 1.5 4.1 1.5"/><path d="m41.6 32.3c-5.7-2.8-18.5 2-16 14 0-12.5 11.1-14.6 16-14"/><path d="m44.1 17c-5.3-3.7-7 1.1-16.6.5-4.2-.3-7 7.6-1 11.2 8.3 4.9 9.7-.8 11.6 1.7 2 2.6 4.1 3.3 5.7 6.2 1.2 2.1 12.5.1 14.1-3.9 3.2-7.7-5.5-9.8-13.8-15.7"/></g><path d="m44.7 18.5c-5.5-3.8-7.2 1.2-17.2.5-4.4-.3-7.3 7.9-1 11.6 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.7 4.3 3.4 5.9 6.5 1.2 2.2-3.6 9.8-3.6 9.8s10.4 8.5 13.2 4.5c5.2-7.4 4.7-13.7 5.1-18.3.8-10.7-5.9-10.3-14.5-16.4" fill="#fed0ac"/><g fill="#e0a372"><path d="m43.1 38.9c.4.7.2 1.9-.3 3.2.9-2 1.6-4.1 1.1-5.1-1.7-3.1-2.7-3.8-4.8-6.5-2-2.6-3.4 3.4-12.1-1.8-3.2-1.9-4-5-3.4-7.5-1.6 2.6-1.5 7 2.6 9.4 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.8 3.1 3.5 4.8 6.5"/><path d="m55.6 24.9c5.5 3.3 3.6 18.4-1.5 25.2-8 10.7-18.5 10.6-29 8.5 0 0-12.7 3.5-20.1-8.5 4.6 12.7 20.1 10.1 20.1 10.1 11.1 3.4 21.9 2.6 30.4-8.4 5.5-7 8.8-24.1.1-26.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270a-1f3fd.svg b/riot/emojione/svg/270a-1f3fd.svg new file mode 100644 index 0000000..ac29bb9 --- /dev/null +++ b/riot/emojione/svg/270a-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m53.1 24l-23.5-10.9-26 8.6c0 0-1.5 11.2 0 22.7 2.3 17.9 21.5 14.8 21.5 14.8 13.7 6.2 27.4.4 33.7-14.5 2.3-5.5 2.6-20.8-5.7-20.7"/><path d="m3.7 16.4c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1"/></g><path d="m8.5 32c3.8 0 6.8-3.2 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.1 1.9 1.3 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.7 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2.9 2.7 1.5 4.2 1.5" fill="#b58360"/><path d="m17.2 10c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2 0 0 0-11.1 0-11.1" fill="#d6a57c"/><path d="m22 25.6c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.2 2 1.6 2.7 3.5 2.7 5.9v11.1c0 4-3 7-6.7 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.7 1.6 4.2 1.6" fill="#b58360"/><path d="m30.9 9.2c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1" fill="#d6a57c"/><path d="m35.7 24.8c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2 1.5 2.7 3.5 2.7 5.8v11.1c0 4-3 7-6.8 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.6 1.6 4.2 1.6" fill="#b58360"/><path d="m44.3 12.8c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.2c-3.8 0-6.8-3.2-6.8-7.2v-11.1z" fill="#d6a57c"/><g fill="#b58360"><path d="m49.2 28.4c3.8 0 6.7-3.2 6.7-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2.1 1.5 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.6 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.1.9 2.5 1.5 4.1 1.5"/><path d="m41.6 32.3c-5.7-2.8-18.5 2-16 14 0-12.5 11.1-14.6 16-14"/><path d="m44.1 17c-5.3-3.7-7 1.1-16.6.5-4.2-.3-7 7.6-1 11.2 8.3 4.9 9.7-.8 11.6 1.7 2 2.6 4.1 3.3 5.7 6.2 1.2 2.1 12.5.1 14.1-3.9 3.2-7.7-5.5-9.8-13.8-15.7"/></g><path d="m44.7 18.5c-5.5-3.8-7.2 1.2-17.2.5-4.4-.3-7.3 7.9-1 11.6 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.7 4.3 3.4 5.9 6.5 1.2 2.2-3.6 9.8-3.6 9.8s10.4 8.5 13.2 4.5c5.2-7.4 4.7-13.7 5.1-18.3.8-10.7-5.9-10.3-14.5-16.4" fill="#d6a57c"/><g fill="#b58360"><path d="m43.1 38.9c.4.7.2 1.9-.3 3.2.9-2 1.6-4.1 1.1-5.1-1.7-3.1-2.7-3.8-4.8-6.5-2-2.6-3.4 3.4-12.1-1.8-3.2-1.9-4-5-3.4-7.5-1.6 2.6-1.5 7 2.6 9.4 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.8 3.1 3.5 4.8 6.5"/><path d="m55.6 24.9c5.5 3.3 3.6 18.4-1.5 25.2-8 10.7-18.5 10.6-29 8.5 0 0-12.7 3.5-20.1-8.5 4.6 12.7 20.1 10.1 20.1 10.1 11.1 3.4 21.9 2.6 30.4-8.4 5.5-7 8.8-24.1.1-26.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270a-1f3fe.svg b/riot/emojione/svg/270a-1f3fe.svg new file mode 100644 index 0000000..6b2ae91 --- /dev/null +++ b/riot/emojione/svg/270a-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m53.1 24l-23.5-10.9-26 8.6c0 0-1.5 11.2 0 22.7 2.3 17.9 21.5 14.8 21.5 14.8 13.7 6.2 27.4.4 33.7-14.5 2.3-5.5 2.6-20.8-5.7-20.7"/><path d="m3.7 16.4c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1"/></g><path d="m8.5 32c3.8 0 6.8-3.2 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.1 1.9 1.3 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.7 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2.9 2.7 1.5 4.2 1.5" fill="#935e3e"/><path d="m17.2 10c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2 0 0 0-11.1 0-11.1" fill="#b47d56"/><path d="m22 25.6c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.2 2 1.6 2.7 3.5 2.7 5.9v11.1c0 4-3 7-6.7 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.7 1.6 4.2 1.6" fill="#935e3e"/><path d="m30.9 9.2c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1" fill="#b47d56"/><path d="m35.7 24.8c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2 1.5 2.7 3.5 2.7 5.8v11.1c0 4-3 7-6.8 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.6 1.6 4.2 1.6" fill="#935e3e"/><path d="m44.3 12.8c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.2c-3.8 0-6.8-3.2-6.8-7.2v-11.1z" fill="#b47d56"/><g fill="#935e3e"><path d="m49.2 28.4c3.8 0 6.7-3.2 6.7-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2.1 1.5 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.6 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.1.9 2.5 1.5 4.1 1.5"/><path d="m41.6 32.3c-5.7-2.8-18.5 2-16 14 0-12.5 11.1-14.6 16-14"/><path d="m44.1 17c-5.3-3.7-7 1.1-16.6.5-4.2-.3-7 7.6-1 11.2 8.3 4.9 9.7-.8 11.6 1.7 2 2.6 4.1 3.3 5.7 6.2 1.2 2.1 12.5.1 14.1-3.9 3.2-7.7-5.5-9.8-13.8-15.7"/></g><path d="m44.7 18.5c-5.5-3.8-7.2 1.2-17.2.5-4.4-.3-7.3 7.9-1 11.6 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.7 4.3 3.4 5.9 6.5 1.2 2.2-3.6 9.8-3.6 9.8s10.4 8.5 13.2 4.5c5.2-7.4 4.7-13.7 5.1-18.3.8-10.7-5.9-10.3-14.5-16.4" fill="#b47d56"/><g fill="#935e3e"><path d="m43.1 38.9c.4.7.2 1.9-.3 3.2.9-2 1.6-4.1 1.1-5.1-1.7-3.1-2.7-3.8-4.8-6.5-2-2.6-3.4 3.4-12.1-1.8-3.2-1.9-4-5-3.4-7.5-1.6 2.6-1.5 7 2.6 9.4 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.8 3.1 3.5 4.8 6.5"/><path d="m55.6 24.9c5.5 3.3 3.6 18.4-1.5 25.2-8 10.7-18.5 10.6-29 8.5 0 0-12.7 3.5-20.1-8.5 4.6 12.7 20.1 10.1 20.1 10.1 11.1 3.4 21.9 2.6 30.4-8.4 5.5-7 8.8-24.1.1-26.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270a-1f3ff.svg b/riot/emojione/svg/270a-1f3ff.svg new file mode 100644 index 0000000..ab9f995 --- /dev/null +++ b/riot/emojione/svg/270a-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m53.1 24l-23.5-10.9-26 8.6c0 0-1.5 11.2 0 22.7 2.3 17.9 21.5 14.8 21.5 14.8 13.7 6.2 27.4.4 33.7-14.5 2.3-5.5 2.6-20.8-5.7-20.7"/><path d="m3.7 16.4c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1"/></g><path d="m8.5 32c3.8 0 6.8-3.2 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.1 1.9 1.3 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.7 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2.9 2.7 1.5 4.2 1.5" fill="#705041"/><path d="m17.2 10c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2 0 0 0-11.1 0-11.1" fill="#8a6859"/><path d="m22 25.6c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.2 2 1.6 2.7 3.5 2.7 5.9v11.1c0 4-3 7-6.7 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.7 1.6 4.2 1.6" fill="#705041"/><path d="m30.9 9.2c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1" fill="#8a6859"/><path d="m35.7 24.8c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2 1.5 2.7 3.5 2.7 5.8v11.1c0 4-3 7-6.8 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.6 1.6 4.2 1.6" fill="#705041"/><path d="m44.3 12.8c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.2c-3.8 0-6.8-3.2-6.8-7.2v-11.1z" fill="#8a6859"/><g fill="#705041"><path d="m49.2 28.4c3.8 0 6.7-3.2 6.7-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2.1 1.5 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.6 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.1.9 2.5 1.5 4.1 1.5"/><path d="m41.6 32.3c-5.7-2.8-18.5 2-16 14 0-12.5 11.1-14.6 16-14"/><path d="m44.1 17c-5.3-3.7-7 1.1-16.6.5-4.2-.3-7 7.6-1 11.2 8.3 4.9 9.7-.8 11.6 1.7 2 2.6 4.1 3.3 5.7 6.2 1.2 2.1 12.5.1 14.1-3.9 3.2-7.7-5.5-9.8-13.8-15.7"/></g><path d="m44.7 18.5c-5.5-3.8-7.2 1.2-17.2.5-4.4-.3-7.3 7.9-1 11.6 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.7 4.3 3.4 5.9 6.5 1.2 2.2-3.6 9.8-3.6 9.8s10.4 8.5 13.2 4.5c5.2-7.4 4.7-13.7 5.1-18.3.8-10.7-5.9-10.3-14.5-16.4" fill="#8a6859"/><g fill="#705041"><path d="m43.1 38.9c.4.7.2 1.9-.3 3.2.9-2 1.6-4.1 1.1-5.1-1.7-3.1-2.7-3.8-4.8-6.5-2-2.6-3.4 3.4-12.1-1.8-3.2-1.9-4-5-3.4-7.5-1.6 2.6-1.5 7 2.6 9.4 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.8 3.1 3.5 4.8 6.5"/><path d="m55.6 24.9c5.5 3.3 3.6 18.4-1.5 25.2-8 10.7-18.5 10.6-29 8.5 0 0-12.7 3.5-20.1-8.5 4.6 12.7 20.1 10.1 20.1 10.1 11.1 3.4 21.9 2.6 30.4-8.4 5.5-7 8.8-24.1.1-26.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270a.svg b/riot/emojione/svg/270a.svg new file mode 100644 index 0000000..7f6e6ce --- /dev/null +++ b/riot/emojione/svg/270a.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m53.1 24l-23.5-10.9-26 8.6c0 0-1.5 11.2 0 22.7 2.3 17.9 21.5 14.8 21.5 14.8 13.7 6.2 27.4.4 33.7-14.5 2.3-5.5 2.6-20.8-5.7-20.7"/><path d="m3.7 16.4c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2 0 0 0-11.1 0-11.1"/></g><path d="m8.5 32c3.8 0 6.8-3.2 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.1 1.9 1.3 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.7 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2.9 2.7 1.5 4.2 1.5" fill="#eba352"/><path d="m17.2 10c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2 0 0 0-11.1 0-11.1" fill="#ffdd67"/><path d="m22 25.6c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.3-2.2-.7-3.2 2 1.6 2.7 3.5 2.7 5.9v11.1c0 4-3 7-6.7 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.7 1.6 4.2 1.6" fill="#eba352"/><path d="m30.9 9.2c0-4 3-7.2 6.8-7.2h.1c3.7 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.1c-3.8 0-6.8-3.2-6.8-7.2v-11.1" fill="#ffdd67"/><path d="m35.7 24.8c3.8 0 6.8-3.1 6.8-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2 1.5 2.7 3.5 2.7 5.8v11.1c0 4-3 7-6.8 7h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.2 1 2.6 1.6 4.2 1.6" fill="#eba352"/><path d="m44.3 12.8c0-4 3-7.2 6.8-7.2h.1c3.8 0 6.8 3.2 6.8 7.2v11.1c0 4-3 7.2-6.8 7.2h-.2c-3.8 0-6.8-3.2-6.8-7.2v-11.1z" fill="#ffdd67"/><g fill="#eba352"><path d="m49.2 28.4c3.8 0 6.7-3.2 6.7-7.1v-11.1c0-1.1-.2-2.2-.6-3.1 2.1 1.5 2.7 3.5 2.7 5.8v11.1c0 4-2.9 7.1-6.6 7.1h-.1c-2.7 0-5.1-1.7-6.2-4.2 1.1.9 2.5 1.5 4.1 1.5"/><path d="m41.6 32.3c-5.7-2.8-18.5 2-16 14 0-12.5 11.1-14.6 16-14"/><path d="m44.1 17c-5.3-3.7-7 1.1-16.6.5-4.2-.3-7 7.6-1 11.2 8.3 4.9 9.7-.8 11.6 1.7 2 2.6 4.1 3.3 5.7 6.2 1.2 2.1 12.5.1 14.1-3.9 3.2-7.7-5.5-9.8-13.8-15.7"/></g><path d="m44.7 18.5c-5.5-3.8-7.2 1.2-17.2.5-4.4-.3-7.3 7.9-1 11.6 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.7 4.3 3.4 5.9 6.5 1.2 2.2-3.6 9.8-3.6 9.8s10.4 8.5 13.2 4.5c5.2-7.4 4.7-13.7 5.1-18.3.8-10.7-5.9-10.3-14.5-16.4" fill="#ffdd67"/><g fill="#eba352"><path d="m43.1 38.9c.4.7.2 1.9-.3 3.2.9-2 1.6-4.1 1.1-5.1-1.7-3.1-2.7-3.8-4.8-6.5-2-2.6-3.4 3.4-12.1-1.8-3.2-1.9-4-5-3.4-7.5-1.6 2.6-1.5 7 2.6 9.4 8.7 5.1 10.1-.8 12.1 1.8 2.1 2.8 3.1 3.5 4.8 6.5"/><path d="m55.6 24.9c5.5 3.3 3.6 18.4-1.5 25.2-8 10.7-18.5 10.6-29 8.5 0 0-12.7 3.5-20.1-8.5 4.6 12.7 20.1 10.1 20.1 10.1 11.1 3.4 21.9 2.6 30.4-8.4 5.5-7 8.8-24.1.1-26.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270b-1f3fb.svg b/riot/emojione/svg/270b-1f3fb.svg new file mode 100644 index 0000000..5345aea --- /dev/null +++ b/riot/emojione/svg/270b-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffe1bd"><path d="m10.3 9.9c-2.2 0-3.9 1.8-3.9 4v29.4h7.8v-29.4c0-2.2-1.7-4-3.9-4"/><path d="m31.3 43.3h8.3v-33.5c0-2.2-1.9-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.2-.1 0-.1 33.4-.1 33.4"/></g><path d="m35.5 5.7c-.3 0-.5 0-.7.1 1.9.3 3.4 2 3.4 4v33.5h1.5v-33.5c-.1-2.3-2-4.1-4.2-4.1" fill="#e6b796"/><path d="m14.2 43.3h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#ffe1bd"/><path d="m18.5 4.8c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v21.3l1.5 2.1v-23.5c0-2.4-1.9-4.3-4.3-4.3" fill="#e6b796"/><path d="m22.8 40.5h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#ffe1bd"/><g fill="#e6b796"><path d="m27 2c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v24.1l1.5 2.1v-26.3c0-2.4-1.9-4.3-4.3-4.3"/><path d="m10.3 9.9c-.3 0-.5 0-.7.1 1.8.4 3.2 2 3.2 3.9v17.5l1.5 2.1v-19.6c-.1-2.2-1.8-4-4-4"/></g><path d="m57.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-31.7.1-31.7 2.6 0 0-1.5 11.1 1.6 18.1 4.6 10.4 26.2 12 35.3-4.9 5.3-10 16.1-16.2 14.4-19.5" fill="#ffe1bd"/><g fill="#e6b796"><path d="m57.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.4 6.9-7 10.5-2.9 2.9-5.7 5.9-7.1 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27 8.7 33.8-7.3 1.5-3.5 4.1-6.4 7.1-9.4 3.6-3.7 8.7-7.2 7-10.5"/><path d="m39.1 37.1c-5.9-2.1-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.7-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270b-1f3fc.svg b/riot/emojione/svg/270b-1f3fc.svg new file mode 100644 index 0000000..99d1359 --- /dev/null +++ b/riot/emojione/svg/270b-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#fed0ac"><path d="m10.3 9.9c-2.2 0-3.9 1.8-3.9 4v29.4h7.8v-29.4c0-2.2-1.7-4-3.9-4"/><path d="m31.3 43.3h8.3v-33.5c0-2.2-1.9-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.2-.1 0-.1 33.4-.1 33.4"/></g><path d="m35.5 5.7c-.3 0-.5 0-.7.1 1.9.3 3.4 2 3.4 4v33.5h1.5v-33.5c-.1-2.3-2-4.1-4.2-4.1" fill="#e0a372"/><path d="m14.2 43.3h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#fed0ac"/><path d="m18.5 4.8c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v21.3l1.5 2.1v-23.5c0-2.4-1.9-4.3-4.3-4.3" fill="#e0a372"/><path d="m22.8 40.5h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#fed0ac"/><g fill="#e0a372"><path d="m27 2c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v24.1l1.5 2.1v-26.3c0-2.4-1.9-4.3-4.3-4.3"/><path d="m10.3 9.9c-.3 0-.5 0-.7.1 1.8.4 3.2 2 3.2 3.9v17.5l1.5 2.1v-19.6c-.1-2.2-1.8-4-4-4"/></g><path d="m57.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-31.7.1-31.7 2.6 0 0-1.5 11.1 1.6 18.1 4.6 10.4 26.2 12 35.3-4.9 5.3-10 16.1-16.2 14.4-19.5" fill="#fed0ac"/><g fill="#e0a372"><path d="m57.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.4 6.9-7 10.5-2.9 2.9-5.7 5.9-7.1 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27 8.7 33.8-7.3 1.5-3.5 4.1-6.4 7.1-9.4 3.6-3.7 8.7-7.2 7-10.5"/><path d="m39.1 37.1c-5.9-2.1-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.7-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270b-1f3fd.svg b/riot/emojione/svg/270b-1f3fd.svg new file mode 100644 index 0000000..258c678 --- /dev/null +++ b/riot/emojione/svg/270b-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#d6a57c"><path d="m10.3 9.9c-2.2 0-3.9 1.8-3.9 4v29.4h7.8v-29.4c0-2.2-1.7-4-3.9-4"/><path d="m31.3 43.3h8.3v-33.5c0-2.2-1.9-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.2-.1 0-.1 33.4-.1 33.4"/></g><path d="m35.5 5.7c-.3 0-.5 0-.7.1 1.9.3 3.4 2 3.4 4v33.5h1.5v-33.5c-.1-2.3-2-4.1-4.2-4.1" fill="#b58360"/><path d="m14.2 43.3h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#d6a57c"/><path d="m18.5 4.8c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v21.3l1.5 2.1v-23.5c0-2.4-1.9-4.3-4.3-4.3" fill="#b58360"/><path d="m22.8 40.5h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#d6a57c"/><g fill="#b58360"><path d="m27 2c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v24.1l1.5 2.1v-26.3c0-2.4-1.9-4.3-4.3-4.3"/><path d="m10.3 9.9c-.3 0-.5 0-.7.1 1.8.4 3.2 2 3.2 3.9v17.5l1.5 2.1v-19.6c-.1-2.2-1.8-4-4-4"/></g><path d="m57.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-31.7.1-31.7 2.6 0 0-1.5 11.1 1.6 18.1 4.6 10.4 26.2 12 35.3-4.9 5.3-10 16.1-16.2 14.4-19.5" fill="#d6a57c"/><g fill="#b58360"><path d="m57.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.4 6.9-7 10.5-2.9 2.9-5.7 5.9-7.1 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27 8.7 33.8-7.3 1.5-3.5 4.1-6.4 7.1-9.4 3.6-3.7 8.7-7.2 7-10.5"/><path d="m39.1 37.1c-5.9-2.1-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.7-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270b-1f3fe.svg b/riot/emojione/svg/270b-1f3fe.svg new file mode 100644 index 0000000..3b7b55f --- /dev/null +++ b/riot/emojione/svg/270b-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#b47d56"><path d="m10.3 9.9c-2.2 0-3.9 1.8-3.9 4v29.4h7.8v-29.4c0-2.2-1.7-4-3.9-4"/><path d="m31.3 43.3h8.3v-33.5c0-2.2-1.9-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.2-.1 0-.1 33.4-.1 33.4"/></g><path d="m35.5 5.7c-.3 0-.5 0-.7.1 1.9.3 3.4 2 3.4 4v33.5h1.5v-33.5c-.1-2.3-2-4.1-4.2-4.1" fill="#935e3e"/><path d="m14.2 43.3h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#b47d56"/><path d="m18.5 4.8c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v21.3l1.5 2.1v-23.5c0-2.4-1.9-4.3-4.3-4.3" fill="#935e3e"/><path d="m22.8 40.5h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#b47d56"/><g fill="#935e3e"><path d="m27 2c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v24.1l1.5 2.1v-26.3c0-2.4-1.9-4.3-4.3-4.3"/><path d="m10.3 9.9c-.3 0-.5 0-.7.1 1.8.4 3.2 2 3.2 3.9v17.5l1.5 2.1v-19.6c-.1-2.2-1.8-4-4-4"/></g><path d="m57.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-31.7.1-31.7 2.6 0 0-1.5 11.1 1.6 18.1 4.6 10.4 26.2 12 35.3-4.9 5.3-10 16.1-16.2 14.4-19.5" fill="#b47d56"/><g fill="#935e3e"><path d="m57.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.4 6.9-7 10.5-2.9 2.9-5.7 5.9-7.1 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27 8.7 33.8-7.3 1.5-3.5 4.1-6.4 7.1-9.4 3.6-3.7 8.7-7.2 7-10.5"/><path d="m39.1 37.1c-5.9-2.1-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.7-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270b-1f3ff.svg b/riot/emojione/svg/270b-1f3ff.svg new file mode 100644 index 0000000..b1e8512 --- /dev/null +++ b/riot/emojione/svg/270b-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#8a6859"><path d="m10.3 9.9c-2.2 0-3.9 1.8-3.9 4v29.4h7.8v-29.4c0-2.2-1.7-4-3.9-4"/><path d="m31.3 43.3h8.3v-33.5c0-2.2-1.9-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.2-.1 0-.1 33.4-.1 33.4"/></g><path d="m35.5 5.7c-.3 0-.5 0-.7.1 1.9.3 3.4 2 3.4 4v33.5h1.5v-33.5c-.1-2.3-2-4.1-4.2-4.1" fill="#705041"/><path d="m14.2 43.3h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#8a6859"/><path d="m18.5 4.8c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v21.3l1.5 2.1v-23.5c0-2.4-1.9-4.3-4.3-4.3" fill="#705041"/><path d="m22.8 40.5h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#8a6859"/><g fill="#705041"><path d="m27 2c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v24.1l1.5 2.1v-26.3c0-2.4-1.9-4.3-4.3-4.3"/><path d="m10.3 9.9c-.3 0-.5 0-.7.1 1.8.4 3.2 2 3.2 3.9v17.5l1.5 2.1v-19.6c-.1-2.2-1.8-4-4-4"/></g><path d="m57.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-31.7.1-31.7 2.6 0 0-1.5 11.1 1.6 18.1 4.6 10.4 26.2 12 35.3-4.9 5.3-10 16.1-16.2 14.4-19.5" fill="#8a6859"/><g fill="#705041"><path d="m57.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.4 6.9-7 10.5-2.9 2.9-5.7 5.9-7.1 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27 8.7 33.8-7.3 1.5-3.5 4.1-6.4 7.1-9.4 3.6-3.7 8.7-7.2 7-10.5"/><path d="m39.1 37.1c-5.9-2.1-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.7-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270b.svg b/riot/emojione/svg/270b.svg new file mode 100644 index 0000000..8aca81b --- /dev/null +++ b/riot/emojione/svg/270b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ffdd67"><path d="m10.3 9.9c-2.2 0-3.9 1.8-3.9 4v29.4h7.8v-29.4c0-2.2-1.7-4-3.9-4"/><path d="m31.3 43.3h8.3v-33.5c0-2.2-1.9-4.1-4.1-4.1-2.3 0-4.1 1.9-4.1 4.2-.1 0-.1 33.4-.1 33.4"/></g><path d="m35.5 5.7c-.3 0-.5 0-.7.1 1.9.3 3.4 2 3.4 4v33.5h1.5v-33.5c-.1-2.3-2-4.1-4.2-4.1" fill="#eba352"/><path d="m14.2 43.3h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#ffdd67"/><path d="m18.5 4.8c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v21.3l1.5 2.1v-23.5c0-2.4-1.9-4.3-4.3-4.3" fill="#eba352"/><path d="m22.8 40.5h8.5v-34.2c0-2.4-1.9-4.3-4.3-4.3-2.4 0-4.3 1.9-4.3 4.3l.1 34.2" fill="#ffdd67"/><g fill="#eba352"><path d="m27 2c-.3 0-.5 0-.7.1 2 .4 3.5 2.1 3.5 4.3v24.1l1.5 2.1v-26.3c0-2.4-1.9-4.3-4.3-4.3"/><path d="m10.3 9.9c-.3 0-.5 0-.7.1 1.8.4 3.2 2 3.2 3.9v17.5l1.5 2.1v-19.6c-.1-2.2-1.8-4-4-4"/></g><path d="m57.7 29.3c-1.6-3.1-6.6-2.9-11.7 2.7-3.6 3.9-4.3 5.2-7.9 5.1v-4.1c0 0-31.7.1-31.7 2.6 0 0-1.5 11.1 1.6 18.1 4.6 10.4 26.2 12 35.3-4.9 5.3-10 16.1-16.2 14.4-19.5" fill="#ffdd67"/><g fill="#eba352"><path d="m57.7 29.3c-.3-.6-.7-1-1.2-1.4.1.1.2.2.2.4 1.7 3.4-3.4 6.9-7 10.5-2.9 2.9-5.7 5.9-7.1 9.4-6.4 15.3-25 15.3-32.8 8.3 7.1 8 27 8.7 33.8-7.3 1.5-3.5 4.1-6.4 7.1-9.4 3.6-3.7 8.7-7.2 7-10.5"/><path d="m39.1 37.1c-5.9-2.1-18.1 2-16.5 13.7 0-10.9 9.9-13.6 15.3-13.6.7-.1 1.2-.1 1.2-.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270c-1f3fb.svg b/riot/emojione/svg/270c-1f3fb.svg new file mode 100644 index 0000000..2053e46 --- /dev/null +++ b/riot/emojione/svg/270c-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.3 31.9c-.5 2.2.9 4.5 3.2 5 2.3.5 4.6-.9 5.1-3.1l6.1-26.2c.5-2.2-.9-4.5-3.2-5-2.3-.5-4.6.9-5.1 3.1l-6.1 26.2" fill="#ffe1bd"/><path d="m38.9 35.6c2.4.5 4.6-.9 5.2-3.1l6.1-26.2c.3-1.2 0-2.4-.7-3.3 2.1.9 2.8 2.7 2.4 4.7l-6.1 26.2c-.5 2.2-2.8 3.7-5.1 3.1-1.1-.2-1.9-.8-2.5-1.6.1 0 .4.1.7.2" fill="#e6b796"/><g fill="#ffe1bd"><path d="m45.2 34.5c0 0-8.7-8.6-24.1-4.3 0 0-9.1 1.6-8.6 6.2 0 0-.3 11.4 3.6 18.2 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m29.7 33.4c.4 2.3 2.7 3.7 5 3.3 2.3-.4 3.9-2.6 3.5-4.9l-5-26.4c-.4-2.3-2.7-3.7-5-3.3-2.3.4-3.9 2.6-3.4 4.9l4.9 26.4"/></g><path d="m32.6 36.1c2.4-.4 3.9-2.6 3.5-4.9l-5-26.4c-.3-1.2-1.1-2.2-2.1-2.8 2.2 0 3.8 1.4 4.2 3.4l5 26.4c.4 2.3-1.1 4.5-3.4 4.9-1.1.2-2.1 0-3-.5.2 0 .5 0 .8-.1" fill="#e6b796"/><g fill="#ffe1bd"><path d="m12 32.1c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.3-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/><path d="m20.1 27.4c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.4-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/></g><g fill="#e6b796"><path d="m16.1 41c2.4-.3 4-2.3 3.8-4.7l-.7-6.5c-.1-.6-.4-1.3-.7-1.9 1.5.7 2 1.9 2.2 3.3l.7 6.5c.3 2.3-1.4 4.4-3.7 4.6-1.7.2-3.3-.7-4.1-2 .6.5 1.5.8 2.5.7"/><path d="m24.1 36.3c2.4-.3 4.1-2.3 3.8-4.6l-.7-6.5c-.1-.6-.4-1.4-.7-1.9 1.4.8 2 2 2.2 3.4l.7 6.5c.3 2.3-1.4 4.3-3.8 4.6h-.1c-1.7.2-3.3-.7-4.1-2 .8.4 1.7.6 2.7.5"/><path d="m41.4 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.6 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.2-6.1-9.6-9.4"/></g><path d="m40 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#ffe1bd"/><g fill="#e6b796"><path d="m46.9 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3.1-4.9 4.1-16.3-1.9-17.5"/><path d="m40.5 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270c-1f3fc.svg b/riot/emojione/svg/270c-1f3fc.svg new file mode 100644 index 0000000..7be6171 --- /dev/null +++ b/riot/emojione/svg/270c-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.3 31.9c-.5 2.2.9 4.5 3.2 5 2.3.5 4.6-.9 5.1-3.1l6.1-26.2c.5-2.2-.9-4.5-3.2-5-2.3-.5-4.6.9-5.1 3.1l-6.1 26.2" fill="#fed0ac"/><path d="m38.9 35.6c2.4.5 4.6-.9 5.2-3.1l6.1-26.2c.3-1.2 0-2.4-.7-3.3 2.1.9 2.8 2.7 2.4 4.7l-6.1 26.2c-.5 2.2-2.8 3.7-5.1 3.1-1.1-.2-1.9-.8-2.5-1.6.1 0 .4.1.7.2" fill="#e0a372"/><g fill="#fed0ac"><path d="m45.2 34.5c0 0-8.7-8.6-24.1-4.3 0 0-9.1 1.6-8.6 6.2 0 0-.3 11.4 3.6 18.2 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m29.7 33.4c.4 2.3 2.7 3.7 5 3.3 2.3-.4 3.9-2.6 3.5-4.9l-5-26.4c-.4-2.3-2.7-3.7-5-3.3-2.3.4-3.9 2.6-3.4 4.9l4.9 26.4"/></g><path d="m32.6 36.1c2.4-.4 3.9-2.6 3.5-4.9l-5-26.4c-.3-1.2-1.1-2.2-2.1-2.8 2.2 0 3.8 1.4 4.2 3.4l5 26.4c.4 2.3-1.1 4.5-3.4 4.9-1.1.2-2.1 0-3-.5.2 0 .5 0 .8-.1" fill="#e0a372"/><g fill="#fed0ac"><path d="m12 32.1c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.3-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/><path d="m20.1 27.4c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.4-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/></g><g fill="#e0a372"><path d="m16.1 41c2.4-.3 4-2.3 3.8-4.7l-.7-6.5c-.1-.6-.4-1.3-.7-1.9 1.5.7 2 1.9 2.2 3.3l.7 6.5c.3 2.3-1.4 4.4-3.7 4.6-1.7.2-3.3-.7-4.1-2 .6.5 1.5.8 2.5.7"/><path d="m24.1 36.3c2.4-.3 4.1-2.3 3.8-4.6l-.7-6.5c-.1-.6-.4-1.4-.7-1.9 1.4.8 2 2 2.2 3.4l.7 6.5c.3 2.3-1.4 4.3-3.8 4.6h-.1c-1.7.2-3.3-.7-4.1-2 .8.4 1.7.6 2.7.5"/><path d="m41.4 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.6 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.2-6.1-9.6-9.4"/></g><path d="m40 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#fed0ac"/><g fill="#e0a372"><path d="m46.9 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3.1-4.9 4.1-16.3-1.9-17.5"/><path d="m40.5 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270c-1f3fd.svg b/riot/emojione/svg/270c-1f3fd.svg new file mode 100644 index 0000000..fb5387e --- /dev/null +++ b/riot/emojione/svg/270c-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.3 31.9c-.5 2.2.9 4.5 3.2 5 2.3.5 4.6-.9 5.1-3.1l6.1-26.2c.5-2.2-.9-4.5-3.2-5-2.3-.5-4.6.9-5.1 3.1l-6.1 26.2" fill="#d6a57c"/><path d="m38.9 35.6c2.4.5 4.6-.9 5.2-3.1l6.1-26.2c.3-1.2 0-2.4-.7-3.3 2.1.9 2.8 2.7 2.4 4.7l-6.1 26.2c-.5 2.2-2.8 3.7-5.1 3.1-1.1-.2-1.9-.8-2.5-1.6.1 0 .4.1.7.2" fill="#b58360"/><g fill="#d6a57c"><path d="m45.2 34.5c0 0-8.7-8.6-24.1-4.3 0 0-9.1 1.6-8.6 6.2 0 0-.3 11.4 3.6 18.2 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m29.7 33.4c.4 2.3 2.7 3.7 5 3.3 2.3-.4 3.9-2.6 3.5-4.9l-5-26.4c-.4-2.3-2.7-3.7-5-3.3-2.3.4-3.9 2.6-3.4 4.9l4.9 26.4"/></g><path d="m32.6 36.1c2.4-.4 3.9-2.6 3.5-4.9l-5-26.4c-.3-1.2-1.1-2.2-2.1-2.8 2.2 0 3.8 1.4 4.2 3.4l5 26.4c.4 2.3-1.1 4.5-3.4 4.9-1.1.2-2.1 0-3-.5.2 0 .5 0 .8-.1" fill="#b58360"/><g fill="#d6a57c"><path d="m12 32.1c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.3-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/><path d="m20.1 27.4c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.4-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/></g><g fill="#b58360"><path d="m16.1 41c2.4-.3 4-2.3 3.8-4.7l-.7-6.5c-.1-.6-.4-1.3-.7-1.9 1.5.7 2 1.9 2.2 3.3l.7 6.5c.3 2.3-1.4 4.4-3.7 4.6-1.7.2-3.3-.7-4.1-2 .6.5 1.5.8 2.5.7"/><path d="m24.1 36.3c2.4-.3 4.1-2.3 3.8-4.6l-.7-6.5c-.1-.6-.4-1.4-.7-1.9 1.4.8 2 2 2.2 3.4l.7 6.5c.3 2.3-1.4 4.3-3.8 4.6h-.1c-1.7.2-3.3-.7-4.1-2 .8.4 1.7.6 2.7.5"/><path d="m41.4 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.6 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.2-6.1-9.6-9.4"/></g><path d="m40 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#d6a57c"/><g fill="#b58360"><path d="m46.9 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3.1-4.9 4.1-16.3-1.9-17.5"/><path d="m40.5 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270c-1f3fe.svg b/riot/emojione/svg/270c-1f3fe.svg new file mode 100644 index 0000000..2b8a95d --- /dev/null +++ b/riot/emojione/svg/270c-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.3 31.9c-.5 2.2.9 4.5 3.2 5 2.3.5 4.6-.9 5.1-3.1l6.1-26.2c.5-2.2-.9-4.5-3.2-5-2.3-.5-4.6.9-5.1 3.1l-6.1 26.2" fill="#b47d56"/><path d="m38.9 35.6c2.4.5 4.6-.9 5.2-3.1l6.1-26.2c.3-1.2 0-2.4-.7-3.3 2.1.9 2.8 2.7 2.4 4.7l-6.1 26.2c-.5 2.2-2.8 3.7-5.1 3.1-1.1-.2-1.9-.8-2.5-1.6.1 0 .4.1.7.2" fill="#935e3e"/><g fill="#b47d56"><path d="m45.2 34.5c0 0-8.7-8.6-24.1-4.3 0 0-9.1 1.6-8.6 6.2 0 0-.3 11.4 3.6 18.2 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m29.7 33.4c.4 2.3 2.7 3.7 5 3.3 2.3-.4 3.9-2.6 3.5-4.9l-5-26.4c-.4-2.3-2.7-3.7-5-3.3-2.3.4-3.9 2.6-3.4 4.9l4.9 26.4"/></g><path d="m32.6 36.1c2.4-.4 3.9-2.6 3.5-4.9l-5-26.4c-.3-1.2-1.1-2.2-2.1-2.8 2.2 0 3.8 1.4 4.2 3.4l5 26.4c.4 2.3-1.1 4.5-3.4 4.9-1.1.2-2.1 0-3-.5.2 0 .5 0 .8-.1" fill="#935e3e"/><g fill="#b47d56"><path d="m12 32.1c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.3-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/><path d="m20.1 27.4c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.4-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/></g><g fill="#935e3e"><path d="m16.1 41c2.4-.3 4-2.3 3.8-4.7l-.7-6.5c-.1-.6-.4-1.3-.7-1.9 1.5.7 2 1.9 2.2 3.3l.7 6.5c.3 2.3-1.4 4.4-3.7 4.6-1.7.2-3.3-.7-4.1-2 .6.5 1.5.8 2.5.7"/><path d="m24.1 36.3c2.4-.3 4.1-2.3 3.8-4.6l-.7-6.5c-.1-.6-.4-1.4-.7-1.9 1.4.8 2 2 2.2 3.4l.7 6.5c.3 2.3-1.4 4.3-3.8 4.6h-.1c-1.7.2-3.3-.7-4.1-2 .8.4 1.7.6 2.7.5"/><path d="m41.4 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.6 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.2-6.1-9.6-9.4"/></g><path d="m40 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#b47d56"/><g fill="#935e3e"><path d="m46.9 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3.1-4.9 4.1-16.3-1.9-17.5"/><path d="m40.5 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270c-1f3ff.svg b/riot/emojione/svg/270c-1f3ff.svg new file mode 100644 index 0000000..8d41bbc --- /dev/null +++ b/riot/emojione/svg/270c-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.3 31.9c-.5 2.2.9 4.5 3.2 5 2.3.5 4.6-.9 5.1-3.1l6.1-26.2c.5-2.2-.9-4.5-3.2-5-2.3-.5-4.6.9-5.1 3.1l-6.1 26.2" fill="#8a6859"/><path d="m38.9 35.6c2.4.5 4.6-.9 5.2-3.1l6.1-26.2c.3-1.2 0-2.4-.7-3.3 2.1.9 2.8 2.7 2.4 4.7l-6.1 26.2c-.5 2.2-2.8 3.7-5.1 3.1-1.1-.2-1.9-.8-2.5-1.6.1 0 .4.1.7.2" fill="#705041"/><g fill="#8a6859"><path d="m45.2 34.5c0 0-8.7-8.6-24.1-4.3 0 0-9.1 1.6-8.6 6.2 0 0-.3 11.4 3.6 18.2 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m29.7 33.4c.4 2.3 2.7 3.7 5 3.3 2.3-.4 3.9-2.6 3.5-4.9l-5-26.4c-.4-2.3-2.7-3.7-5-3.3-2.3.4-3.9 2.6-3.4 4.9l4.9 26.4"/></g><path d="m32.6 36.1c2.4-.4 3.9-2.6 3.5-4.9l-5-26.4c-.3-1.2-1.1-2.2-2.1-2.8 2.2 0 3.8 1.4 4.2 3.4l5 26.4c.4 2.3-1.1 4.5-3.4 4.9-1.1.2-2.1 0-3-.5.2 0 .5 0 .8-.1" fill="#705041"/><g fill="#8a6859"><path d="m12 32.1c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.3-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/><path d="m20.1 27.4c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.4-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/></g><g fill="#705041"><path d="m16.1 41c2.4-.3 4-2.3 3.8-4.7l-.7-6.5c-.1-.6-.4-1.3-.7-1.9 1.5.7 2 1.9 2.2 3.3l.7 6.5c.3 2.3-1.4 4.4-3.7 4.6-1.7.2-3.3-.7-4.1-2 .6.5 1.5.8 2.5.7"/><path d="m24.1 36.3c2.4-.3 4.1-2.3 3.8-4.6l-.7-6.5c-.1-.6-.4-1.4-.7-1.9 1.4.8 2 2 2.2 3.4l.7 6.5c.3 2.3-1.4 4.3-3.8 4.6h-.1c-1.7.2-3.3-.7-4.1-2 .8.4 1.7.6 2.7.5"/><path d="m41.4 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.6 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.2-6.1-9.6-9.4"/></g><path d="m40 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#8a6859"/><g fill="#705041"><path d="m46.9 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3.1-4.9 4.1-16.3-1.9-17.5"/><path d="m40.5 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270c.svg b/riot/emojione/svg/270c.svg new file mode 100644 index 0000000..78682b5 --- /dev/null +++ b/riot/emojione/svg/270c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m37.3 31.9c-.5 2.2.9 4.5 3.2 5 2.3.5 4.6-.9 5.1-3.1l6.1-26.2c.5-2.2-.9-4.5-3.2-5-2.3-.5-4.6.9-5.1 3.1l-6.1 26.2" fill="#ffdd67"/><path d="m38.9 35.6c2.4.5 4.6-.9 5.2-3.1l6.1-26.2c.3-1.2 0-2.4-.7-3.3 2.1.9 2.8 2.7 2.4 4.7l-6.1 26.2c-.5 2.2-2.8 3.7-5.1 3.1-1.1-.2-1.9-.8-2.5-1.6.1 0 .4.1.7.2" fill="#eba352"/><g fill="#ffdd67"><path d="m45.2 34.5c0 0-8.7-8.6-24.1-4.3 0 0-9.1 1.6-8.6 6.2 0 0-.3 11.4 3.6 18.2 5.9 10.1 28.6 11.7 34.3-7 1.2-3.7.3-13.7-5.2-13.1"/><path d="m29.7 33.4c.4 2.3 2.7 3.7 5 3.3 2.3-.4 3.9-2.6 3.5-4.9l-5-26.4c-.4-2.3-2.7-3.7-5-3.3-2.3.4-3.9 2.6-3.4 4.9l4.9 26.4"/></g><path d="m32.6 36.1c2.4-.4 3.9-2.6 3.5-4.9l-5-26.4c-.3-1.2-1.1-2.2-2.1-2.8 2.2 0 3.8 1.4 4.2 3.4l5 26.4c.4 2.3-1.1 4.5-3.4 4.9-1.1.2-2.1 0-3-.5.2 0 .5 0 .8-.1" fill="#eba352"/><g fill="#ffdd67"><path d="m12 32.1c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.3-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/><path d="m20.1 27.4c-.3-2.3 1.4-4.4 3.8-4.7h.1c2.4-.2 4.5 1.4 4.7 3.8l.7 6.5c.3 2.3-1.4 4.4-3.8 4.7h-.1c-2.4.2-4.5-1.4-4.7-3.8l-.7-6.5"/></g><g fill="#eba352"><path d="m16.1 41c2.4-.3 4-2.3 3.8-4.7l-.7-6.5c-.1-.6-.4-1.3-.7-1.9 1.5.7 2 1.9 2.2 3.3l.7 6.5c.3 2.3-1.4 4.4-3.7 4.6-1.7.2-3.3-.7-4.1-2 .6.5 1.5.8 2.5.7"/><path d="m24.1 36.3c2.4-.3 4.1-2.3 3.8-4.6l-.7-6.5c-.1-.6-.4-1.4-.7-1.9 1.4.8 2 2 2.2 3.4l.7 6.5c.3 2.3-1.4 4.3-3.8 4.6h-.1c-1.7.2-3.3-.7-4.1-2 .8.4 1.7.6 2.7.5"/><path d="m41.4 40.8c-4.8-2.3-15.7 1.7-13.5 11.7 0-10.4 9.4-12.2 13.5-11.7"/><path d="m39.6 30.5c-3.5-2.1-4.1 1.2-10 1.4-2.6.1-3.7 5.4.2 7.3 5.4 2.7 5.8-1.1 7.2.4 1.4 1.6 2.7 1.9 3.9 3.7.9 1.3 7.6-.7 8.3-3.4 1.3-5.3-4.2-6.1-9.6-9.4"/></g><path d="m40 31.4c-3.6-2.1-4.3 1.2-10.4 1.4-2.7.1-3.9 5.6.2 7.6 5.6 2.8 6.1-1.2 7.4.4 1.5 1.6 2.8 2 4.1 3.9.9 1.4-1.5 6.6-1.5 6.6s6.9 4.9 8.3 2.1c2.6-5.2 1.9-9.2 1.8-12.2-.2-7.1-4.2-6.4-9.9-9.8" fill="#ffdd67"/><g fill="#eba352"><path d="m46.9 34.9c3.8 1.8 3.6 11.7.8 16.5-7.1 11.9-22.7 11.7-30 5.3 6.8 7.3 23.4 8 31.1-4.3 3.1-4.9 4.1-16.3-1.9-17.5"/><path d="m40.5 44.8c.3.4.2 1.2.1 2.1.4-1.4.7-2.8.3-3.4-1.2-1.9-1.9-2.3-3.4-3.9-1.4-1.5-1.8 2.4-7.4-.4-2.1-1-2.8-3-2.6-4.7-.8 1.8-.4 4.6 2.3 6 5.6 2.8 6.1-1.2 7.4.4 1.4 1.6 2.1 2 3.3 3.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270d-1f3fb.svg b/riot/emojione/svg/270d-1f3fb.svg new file mode 100644 index 0000000..438ab1a --- /dev/null +++ b/riot/emojione/svg/270d-1f3fb.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 55c1 1.1 7.9 1 9.1.2 2.5-1.5 19.9-22.4 4.8-28.5-11.5-4.7-14 5.9-15.2 6.8-2.3 1.8-.6 19.4 1.3 21.5" fill="#e6b796"/><g fill="#ffe1bd"><path d="m57.6 54.3c-17.4.1-8.9 2.6-22.8 2.6-5.5 0-10.2-3.6-10.2-8.6v-.1c8.6-5.7-5.8-3.2-3.6-16.7.7-4.5 5.5-4.8 11.8-5.4 5.3-.5 23.2 6.3 23.2 6.3 6.4 2.3 8.8 21.9 1.6 21.9"/><path d="m20.1 23.2c2.8-1.9 16 3.2 16 3.2l-8.1 20.4c0 0-28.6-.8-19.3-8.6 7.8-6.5 7.5-12.3 11.4-15"/></g><g fill="#e6b796"><path d="m7.8 39.1c-2.2 5.5 17.9 6.4 20.6 6.5l-.5 1.2c0 0-26.4-.8-20.1-7.7"/><path d="m27.6 35.1c3.4 5.2 4.9 6.3 4.9 6.3s-3.4-.8-5.7-4.2l.8-2.1"/><path d="m27.4 34c1.5 0 0 7.3 1.7 9.3-.4 1.3-3 .5-3 .5s.8-9 .7-9.5l.6-.3"/><path d="m19.6 40.5l1.5 1.5c0 0 13.7-12.6 17.5-15.1l-4.5-1-14.5 14.6"/></g><path fill="#428bc1" d="m8.5 44.5l4.4 4.3 34.7-34.5-4.4-4.3z"/><g fill="#574137"><path d="m43.9 10.8l2.9 2.8 3.8-3.7-2.9-2.9z"/><path d="m37.8 14.1l5.6 5.5 1-.9-5.6-5.6z"/><path d="m28.8 21.5l.8.7 9.2-9.1-.8-.7z"/></g><path fill="#a9b5ae" d="m12.9 48.8l-9.8 5.4 5.4-9.7z"/><path fill="#574137" d="m2 54.6l.7.7 2-2-.7-.7z"/><path d="m39.4 51.4c.2-.6.3-1.1.4-1.7.1-.3.2-.6.3-1 1-4.3-15.3-7.1-15.3-7.1l-1.2-.3c-2.6-.6-8.3-1.3-12.5 3.5-2.9 3.4.1 6.8 2.8 7 7.3.7 12.7 2.5 16.8 4.2 3.6 1.7 7.2-.2 8.7-4.6" fill="#ffe1bd"/><g fill="#e6b796"><path d="m23.5 42.9c-2.6-.9-6.8-3.2-12.2 1.6 5-6.1 13.1-3 13.4-2.9 7.6 1 12.6-2 12.6-2-1.5 3.8-10 4.6-13.8 3.3"/><path d="m35.3 55.6c13.9 0 5.5-2.5 22.8-2.6 1.5 0 2.7-1.5 3.4-2.9-.5 2.7-2 4.2-3.9 4.2-17.4.1-9 2.7-22.9 2.7-5.5 0-10.7-2.8-15.1-4.2-.1-.1 10.5 2.8 15.7 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270d-1f3fc.svg b/riot/emojione/svg/270d-1f3fc.svg new file mode 100644 index 0000000..3ff16a8 --- /dev/null +++ b/riot/emojione/svg/270d-1f3fc.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 55c1 1.1 7.9 1 9.1.2 2.5-1.5 19.9-22.4 4.8-28.5-11.5-4.7-14 5.9-15.2 6.8-2.3 1.8-.6 19.4 1.3 21.5" fill="#e0a372"/><g fill="#fed0ac"><path d="m57.6 54.3c-17.4.1-8.9 2.6-22.8 2.6-5.5 0-10.2-3.6-10.2-8.6v-.1c8.6-5.7-5.8-3.2-3.6-16.7.7-4.5 5.5-4.8 11.8-5.4 5.3-.5 23.2 6.3 23.2 6.3 6.4 2.3 8.8 21.9 1.6 21.9"/><path d="m20.1 23.2c2.8-1.9 16 3.2 16 3.2l-8.1 20.4c0 0-28.6-.8-19.3-8.6 7.8-6.5 7.5-12.3 11.4-15"/></g><g fill="#e0a372"><path d="m7.8 39.1c-2.2 5.5 17.9 6.4 20.6 6.5l-.5 1.2c0 0-26.4-.8-20.1-7.7"/><path d="m27.6 35.1c3.4 5.2 4.9 6.3 4.9 6.3s-3.4-.8-5.7-4.2l.8-2.1"/><path d="m27.4 34c1.5 0 0 7.3 1.7 9.3-.4 1.3-3 .5-3 .5s.8-9 .7-9.5l.6-.3"/><path d="m19.6 40.5l1.5 1.5c0 0 13.7-12.6 17.5-15.1l-4.5-1-14.5 14.6"/></g><path fill="#428bc1" d="m8.5 44.5l4.4 4.3 34.7-34.5-4.4-4.3z"/><g fill="#574137"><path d="m43.9 10.8l2.9 2.8 3.8-3.7-2.9-2.9z"/><path d="m37.8 14.1l5.6 5.5 1-.9-5.6-5.6z"/><path d="m28.8 21.5l.8.7 9.2-9.1-.8-.7z"/></g><path fill="#a9b5ae" d="m12.9 48.8l-9.8 5.4 5.4-9.7z"/><path fill="#574137" d="m2 54.6l.7.7 2-2-.7-.7z"/><path d="m39.4 51.4c.2-.6.3-1.1.4-1.7.1-.3.2-.6.3-1 1-4.3-15.3-7.1-15.3-7.1l-1.2-.3c-2.6-.6-8.3-1.3-12.5 3.5-2.9 3.4.1 6.8 2.8 7 7.3.7 12.7 2.5 16.8 4.2 3.6 1.7 7.2-.2 8.7-4.6" fill="#fed0ac"/><g fill="#e0a372"><path d="m23.5 42.9c-2.6-.9-6.8-3.2-12.2 1.6 5-6.1 13.1-3 13.4-2.9 7.6 1 12.6-2 12.6-2-1.5 3.8-10 4.6-13.8 3.3"/><path d="m35.3 55.6c13.9 0 5.5-2.5 22.8-2.6 1.5 0 2.7-1.5 3.4-2.9-.5 2.7-2 4.2-3.9 4.2-17.4.1-9 2.7-22.9 2.7-5.5 0-10.7-2.8-15.1-4.2-.1-.1 10.5 2.8 15.7 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270d-1f3fd.svg b/riot/emojione/svg/270d-1f3fd.svg new file mode 100644 index 0000000..57884c0 --- /dev/null +++ b/riot/emojione/svg/270d-1f3fd.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 55c1 1.1 7.9 1 9.1.2 2.5-1.5 19.9-22.4 4.8-28.5-11.5-4.7-14 5.9-15.2 6.8-2.3 1.8-.6 19.4 1.3 21.5" fill="#b58360"/><g fill="#d6a57c"><path d="m57.6 54.3c-17.4.1-8.9 2.6-22.8 2.6-5.5 0-10.2-3.6-10.2-8.6v-.1c8.6-5.7-5.8-3.2-3.6-16.7.7-4.5 5.5-4.8 11.8-5.4 5.3-.5 23.2 6.3 23.2 6.3 6.4 2.3 8.8 21.9 1.6 21.9"/><path d="m20.1 23.2c2.8-1.9 16 3.2 16 3.2l-8.1 20.4c0 0-28.6-.8-19.3-8.6 7.8-6.5 7.5-12.3 11.4-15"/></g><g fill="#b58360"><path d="m7.8 39.1c-2.2 5.5 17.9 6.4 20.6 6.5l-.5 1.2c0 0-26.4-.8-20.1-7.7"/><path d="m27.6 35.1c3.4 5.2 4.9 6.3 4.9 6.3s-3.4-.8-5.7-4.2l.8-2.1"/><path d="m27.4 34c1.5 0 0 7.3 1.7 9.3-.4 1.3-3 .5-3 .5s.8-9 .7-9.5l.6-.3"/><path d="m19.6 40.5l1.5 1.5c0 0 13.7-12.6 17.5-15.1l-4.5-1-14.5 14.6"/></g><path fill="#428bc1" d="m8.5 44.5l4.4 4.3 34.7-34.5-4.4-4.3z"/><g fill="#574137"><path d="m43.9 10.8l2.9 2.8 3.8-3.7-2.9-2.9z"/><path d="m37.8 14.1l5.6 5.5 1-.9-5.6-5.6z"/><path d="m28.8 21.5l.8.7 9.2-9.1-.8-.7z"/></g><path fill="#a9b5ae" d="m12.9 48.8l-9.8 5.4 5.4-9.7z"/><path fill="#574137" d="m2 54.6l.7.7 2-2-.7-.7z"/><path d="m39.4 51.4c.2-.6.3-1.1.4-1.7.1-.3.2-.6.3-1 1-4.3-15.3-7.1-15.3-7.1l-1.2-.3c-2.6-.6-8.3-1.3-12.5 3.5-2.9 3.4.1 6.8 2.8 7 7.3.7 12.7 2.5 16.8 4.2 3.6 1.7 7.2-.2 8.7-4.6" fill="#d6a57c"/><g fill="#b58360"><path d="m23.5 42.9c-2.6-.9-6.8-3.2-12.2 1.6 5-6.1 13.1-3 13.4-2.9 7.6 1 12.6-2 12.6-2-1.5 3.8-10 4.6-13.8 3.3"/><path d="m35.3 55.6c13.9 0 5.5-2.5 22.8-2.6 1.5 0 2.7-1.5 3.4-2.9-.5 2.7-2 4.2-3.9 4.2-17.4.1-9 2.7-22.9 2.7-5.5 0-10.7-2.8-15.1-4.2-.1-.1 10.5 2.8 15.7 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270d-1f3fe.svg b/riot/emojione/svg/270d-1f3fe.svg new file mode 100644 index 0000000..089e890 --- /dev/null +++ b/riot/emojione/svg/270d-1f3fe.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 55c1 1.1 7.9 1 9.1.2 2.5-1.5 19.9-22.4 4.8-28.5-11.5-4.7-14 5.9-15.2 6.8-2.3 1.8-.6 19.4 1.3 21.5" fill="#935e3e"/><g fill="#b47d56"><path d="m57.6 54.3c-17.4.1-8.9 2.6-22.8 2.6-5.5 0-10.2-3.6-10.2-8.6v-.1c8.6-5.7-5.8-3.2-3.6-16.7.7-4.5 5.5-4.8 11.8-5.4 5.3-.5 23.2 6.3 23.2 6.3 6.4 2.3 8.8 21.9 1.6 21.9"/><path d="m20.1 23.2c2.8-1.9 16 3.2 16 3.2l-8.1 20.4c0 0-28.6-.8-19.3-8.6 7.8-6.5 7.5-12.3 11.4-15"/></g><g fill="#935e3e"><path d="m7.8 39.1c-2.2 5.5 17.9 6.4 20.6 6.5l-.5 1.2c0 0-26.4-.8-20.1-7.7"/><path d="m27.6 35.1c3.4 5.2 4.9 6.3 4.9 6.3s-3.4-.8-5.7-4.2l.8-2.1"/><path d="m27.4 34c1.5 0 0 7.3 1.7 9.3-.4 1.3-3 .5-3 .5s.8-9 .7-9.5l.6-.3"/><path d="m19.6 40.5l1.5 1.5c0 0 13.7-12.6 17.5-15.1l-4.5-1-14.5 14.6"/></g><path fill="#428bc1" d="m8.5 44.5l4.4 4.3 34.7-34.5-4.4-4.3z"/><g fill="#574137"><path d="m43.9 10.8l2.9 2.8 3.8-3.7-2.9-2.9z"/><path d="m37.8 14.1l5.6 5.5 1-.9-5.6-5.6z"/><path d="m28.8 21.5l.8.7 9.2-9.1-.8-.7z"/></g><path fill="#a9b5ae" d="m12.9 48.8l-9.8 5.4 5.4-9.7z"/><path fill="#574137" d="m2 54.6l.7.7 2-2-.7-.7z"/><path d="m39.4 51.4c.2-.6.3-1.1.4-1.7.1-.3.2-.6.3-1 1-4.3-15.3-7.1-15.3-7.1l-1.2-.3c-2.6-.6-8.3-1.3-12.5 3.5-2.9 3.4.1 6.8 2.8 7 7.3.7 12.7 2.5 16.8 4.2 3.6 1.7 7.2-.2 8.7-4.6" fill="#b47d56"/><g fill="#935e3e"><path d="m23.5 42.9c-2.6-.9-6.8-3.2-12.2 1.6 5-6.1 13.1-3 13.4-2.9 7.6 1 12.6-2 12.6-2-1.5 3.8-10 4.6-13.8 3.3"/><path d="m35.3 55.6c13.9 0 5.5-2.5 22.8-2.6 1.5 0 2.7-1.5 3.4-2.9-.5 2.7-2 4.2-3.9 4.2-17.4.1-9 2.7-22.9 2.7-5.5 0-10.7-2.8-15.1-4.2-.1-.1 10.5 2.8 15.7 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270d-1f3ff.svg b/riot/emojione/svg/270d-1f3ff.svg new file mode 100644 index 0000000..863dbaa --- /dev/null +++ b/riot/emojione/svg/270d-1f3ff.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 55c1 1.1 7.9 1 9.1.2 2.5-1.5 19.9-22.4 4.8-28.5-11.5-4.7-14 5.9-15.2 6.8-2.3 1.8-.6 19.4 1.3 21.5" fill="#705041"/><g fill="#8a6859"><path d="m57.6 54.3c-17.4.1-8.9 2.6-22.8 2.6-5.5 0-10.2-3.6-10.2-8.6v-.1c8.6-5.7-5.8-3.2-3.6-16.7.7-4.5 5.5-4.8 11.8-5.4 5.3-.5 23.2 6.3 23.2 6.3 6.4 2.3 8.8 21.9 1.6 21.9"/><path d="m20.1 23.2c2.8-1.9 16 3.2 16 3.2l-8.1 20.4c0 0-28.6-.8-19.3-8.6 7.8-6.5 7.5-12.3 11.4-15"/></g><g fill="#705041"><path d="m7.8 39.1c-2.2 5.5 17.9 6.4 20.6 6.5l-.5 1.2c0 0-26.4-.8-20.1-7.7"/><path d="m27.6 35.1c3.4 5.2 4.9 6.3 4.9 6.3s-3.4-.8-5.7-4.2l.8-2.1"/><path d="m27.4 34c1.5 0 0 7.3 1.7 9.3-.4 1.3-3 .5-3 .5s.8-9 .7-9.5l.6-.3"/><path d="m19.6 40.5l1.5 1.5c0 0 13.7-12.6 17.5-15.1l-4.5-1-14.5 14.6"/></g><path fill="#428bc1" d="m8.5 44.5l4.4 4.3 34.7-34.5-4.4-4.3z"/><g fill="#574137"><path d="m43.9 10.8l2.9 2.8 3.8-3.7-2.9-2.9z"/><path d="m37.8 14.1l5.6 5.5 1-.9-5.6-5.6z"/><path d="m28.8 21.5l.8.7 9.2-9.1-.8-.7z"/></g><path fill="#a9b5ae" d="m12.9 48.8l-9.8 5.4 5.4-9.7z"/><path fill="#574137" d="m2 54.6l.7.7 2-2-.7-.7z"/><path d="m39.4 51.4c.2-.6.3-1.1.4-1.7.1-.3.2-.6.3-1 1-4.3-15.3-7.1-15.3-7.1l-1.2-.3c-2.6-.6-8.3-1.3-12.5 3.5-2.9 3.4.1 6.8 2.8 7 7.3.7 12.7 2.5 16.8 4.2 3.6 1.7 7.2-.2 8.7-4.6" fill="#8a6859"/><g fill="#705041"><path d="m23.5 42.9c-2.6-.9-6.8-3.2-12.2 1.6 5-6.1 13.1-3 13.4-2.9 7.6 1 12.6-2 12.6-2-1.5 3.8-10 4.6-13.8 3.3"/><path d="m35.3 55.6c13.9 0 5.5-2.5 22.8-2.6 1.5 0 2.7-1.5 3.4-2.9-.5 2.7-2 4.2-3.9 4.2-17.4.1-9 2.7-22.9 2.7-5.5 0-10.7-2.8-15.1-4.2-.1-.1 10.5 2.8 15.7 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270d.svg b/riot/emojione/svg/270d.svg new file mode 100644 index 0000000..9370c8c --- /dev/null +++ b/riot/emojione/svg/270d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m20.6 55c1 1.1 7.9 1 9.1.2 2.5-1.5 19.9-22.4 4.8-28.5-11.5-4.7-14 5.9-15.2 6.8-2.3 1.8-.6 19.4 1.3 21.5" fill="#eba352"/><g fill="#ffdd67"><path d="m57.6 54.3c-17.4.1-8.9 2.6-22.8 2.6-5.5 0-10.2-3.6-10.2-8.6v-.1c8.6-5.7-5.8-3.2-3.6-16.7.7-4.5 5.5-4.8 11.8-5.4 5.3-.5 23.2 6.3 23.2 6.3 6.4 2.3 8.8 21.9 1.6 21.9"/><path d="m20.1 23.2c2.8-1.9 16 3.2 16 3.2l-8.1 20.4c0 0-28.6-.8-19.3-8.6 7.8-6.5 7.5-12.3 11.4-15"/></g><g fill="#eba352"><path d="m7.8 39.1c-2.2 5.5 17.9 6.4 20.6 6.5l-.5 1.2c0 0-26.4-.8-20.1-7.7"/><path d="m27.6 35.1c3.4 5.2 4.9 6.3 4.9 6.3s-3.4-.8-5.7-4.2l.8-2.1"/><path d="m27.4 34c1.5 0 0 7.3 1.7 9.3-.4 1.3-3 .5-3 .5s.8-9 .7-9.5l.6-.3"/><path d="m19.6 40.5l1.5 1.5c0 0 13.7-12.6 17.5-15.1l-4.5-1-14.5 14.6"/></g><path fill="#428bc1" d="m8.5 44.5l4.4 4.3 34.6-34.5-4.3-4.3z"/><g fill="#574137"><path d="m43.9 10.8l2.9 2.8 3.8-3.7-2.9-2.9z"/><path d="m37.8 14.1l5.6 5.5 1-.9-5.7-5.6z"/><path d="m28.8 21.5l.8.7 9.1-9.1-.7-.7z"/></g><path fill="#a9b5ae" d="m12.9 48.8l-9.8 5.4 5.4-9.7z"/><path fill="#574137" d="m2 54.6l.7.7 2-2-.7-.7z"/><path d="m39.4 51.4c.2-.6.3-1.1.4-1.7.1-.3.2-.6.3-1 1-4.3-15.3-7.1-15.3-7.1l-1.2-.3c-2.6-.6-8.3-1.3-12.5 3.5-2.9 3.4.1 6.8 2.8 7 7.3.7 12.7 2.5 16.8 4.2 3.6 1.7 7.2-.2 8.7-4.6" fill="#ffdd67"/><g fill="#eba352"><path d="m23.5 42.9c-2.6-.9-6.8-3.2-12.2 1.6 5-6.1 13.1-3 13.4-2.9 7.6 1 12.6-2 12.6-2-1.5 3.8-10.1 4.6-13.8 3.3"/><path d="m35.3 55.6c13.9 0 5.5-2.5 22.8-2.6 1.5 0 2.7-1.5 3.4-2.9-.5 2.7-2 4.2-3.9 4.2-17.4.1-9 2.7-22.9 2.7-5.5 0-10.7-2.8-15.1-4.2-.1-.1 10.5 2.8 15.7 2.8"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/270f.svg b/riot/emojione/svg/270f.svg new file mode 100644 index 0000000..55eec77 --- /dev/null +++ b/riot/emojione/svg/270f.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path transform="matrix(.7072-.707.707.7072-13.9145 31.7241)" fill="#ffce31" d="m8.8 22.1h45.1v21.1h-45.1z"/><path d="m61.3 4.6l-1.9-1.9c-3.6-3.6-9.4-3.6-13.1 0l-6.5 6.5 15 15 6.5-6.5c3.6-3.6 3.6-9.5 0-13.1" fill="#ed4c5c"/><path transform="matrix(.7071-.7071.7071.7071.0023 37.4923)" fill="#93a2aa" d="m42.4 8.2h5.8v21.1h-5.8z"/><path transform="matrix(.7071-.7071.7071.7071.00263 37.4922)" fill="#c7d3d8" d="m42.4 10.4h5.8v16.6h-5.8z"/><path fill="#fed0ac" d="m7.9 41.1l-6.5 17 4.5 4.5 17-6.5z"/><path d="m.3 61.1c-.9 2.4.3 3.5 2.7 2.6l8.2-3.1-7.7-7.7-3.2 8.2" fill="#333"/><path transform="matrix(.7071-.7071.7071.7071-13.8881 25.9017)" fill="#ffdf85" d="m4.6 26.2h39.4v7h-39.4z"/><path transform="matrix(.7071-.7071.7071.7071-18.0167 35.8688)" fill="#ff8736" d="m14.6 36.2h39.4v7h-39.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2712.svg b/riot/emojione/svg/2712.svg new file mode 100644 index 0000000..28a3968 --- /dev/null +++ b/riot/emojione/svg/2712.svg @@ -0,0 +1,2 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m43.8 51.7l7.9-7.9 10.1 6.1c0 0-.7 6.4 2.2 12.5l-10-10c0-.5-.1-.9-.5-1.3-.7-.7-1.7-.7-2.4 0-.7.7-.7 1.7 0 2.4.4.4.8.5 1.3.5l10 10c-6.2-2.9-12.5-2.2-12.5-2.2l-6.1-10.1" fill="#94989b"/><path d="M2.5,2.5c3.3-3.3,8.6-3.3,11.9,0L19,7.1c0,0,5,1.8,14.1,10.9C42.2,27.2,44,32.2,44,32.2l9.7,9.7L41.8,53.7 + L32.2,44c0,0-5-1.8-14.1-10.9S7.1,19,7.1,19l-4.7-4.7C-0.8,11-0.8,5.7,2.5,2.5z" fill="#3e4347"/><g fill="#94989b"><path transform="matrix(.707-.7072.7072.707-5.0839 12.2766)" d="m3.9 11.2h16.8v2.2h-16.8z"/><path transform="matrix(.7062-.708.708.7062-16.1014 38.9478)" d="m30.5 37.8h16.8v2.2h-16.8z"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2714.svg b/riot/emojione/svg/2714.svg new file mode 100644 index 0000000..20a0826 --- /dev/null +++ b/riot/emojione/svg/2714.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#4d5357" d="M56 2 18.8 42.9 8 34.7 2 34.7 18.8 62 62 2z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2716.svg b/riot/emojione/svg/2716.svg new file mode 100644 index 0000000..1117a75 --- /dev/null +++ b/riot/emojione/svg/2716.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#4d5357" d="M62 10.6 53.4 2 32 23.4 10.6 2 2 10.6 23.4 32 2 53.4 10.6 62 32 40.6 53.4 62 62 53.4 40.6 32z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/271d.svg b/riot/emojione/svg/271d.svg new file mode 100644 index 0000000..850e144 --- /dev/null +++ b/riot/emojione/svg/271d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m55 23.4c0 0-1.7-1.5-4.2-2.3-.7-2.3-2.4-4-4.4-4-.9 0-1.7.3-2.4.8.8.6 1.5 1.5 1.9 2.6h-10.9v-10c1.2.4 2.2 1 2.8 1.7.6-.6.9-1.4.9-2.2 0-1.9-1.8-3.5-4.3-4.1-.8-2.3-2.4-3.9-2.4-3.9s-1.6 1.6-2.5 3.9c-2.5.7-4.3 2.3-4.3 4.1 0 .8.3 1.6.9 2.2.7-.7 1.6-1.4 2.8-1.7v10h-10.7c.4-1.1 1.1-2 1.9-2.6-.7-.5-1.5-.8-2.4-.8-2 0-3.7 1.7-4.4 4-2.6.8-4.3 2.3-4.3 2.3s1.7 1.5 4.2 2.3c.7 2.3 2.4 4 4.4 4 .9 0 1.7-.3 2.4-.8-.8-.6-1.5-1.5-1.9-2.6h10.9v11.7 15.7c-1.2-.4-2.2-1-2.8-1.7-.6.6-.9 1.4-.9 2.2 0 1.9 1.8 3.5 4.3 4.1.8 2.1 2.4 3.7 2.4 3.7s1.6-1.6 2.5-3.9c2.5-.6 4.3-2.2 4.3-4.1 0-.8-.3-1.6-.9-2.2-.7.7-1.6 1.3-2.8 1.7v-15.7-11.6h10.8c-.4 1.1-1.1 2-1.9 2.6.7.5 1.5.8 2.4.8 2 0 3.7-1.7 4.4-4 2.5-.8 4.2-2.2 4.2-2.2" fill="#c28fef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2721.svg b/riot/emojione/svg/2721.svg new file mode 100644 index 0000000..073f604 --- /dev/null +++ b/riot/emojione/svg/2721.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m58 17.4h-17l-9-15.4-9 15.4h-17l8.5 14.6-8.5 14.6h17l9 15.4 9-15.4h17l-8.5-14.6 8.5-14.6m-6.1 3.6l-4.4 7.5-4.4-7.5h8.8m-19.9-12l4.9 8.4h-9.9l5-8.4m-19.9 12h8.8l-4.4 7.5-4.4-7.5m0 22l4.4-7.5 4.4 7.5h-8.8m19.9 12l-4.9-8.4h9.9l-5 8.4m7-12h-14l-6.4-11 6.4-11h14l6.4 11-6.4 11m12.9 0h-8.8l4.4-7.5 4.4 7.5" fill="#c28fef"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2728.svg b/riot/emojione/svg/2728.svg new file mode 100644 index 0000000..37c0880 --- /dev/null +++ b/riot/emojione/svg/2728.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m22 0c0 16.9-9.1 32-22 32 12.9 0 22 15.1 22 32 0-16.9 9.1-32 22-32-12.9 0-22-15.1-22-32" fill="#ffe54d"/><path d="m53 0c0 8.4-4.6 16-11 16 6.4 0 11 7.6 11 16 0-8.4 4.6-16 11-16-6.4 0-11-7.6-11-16" fill="#6adbc6"/><path d="m48 32c0 8.4-4.6 16-11 16 6.4 0 11 7.6 11 16 0-8.4 4.6-16 11-16-6.4 0-11-7.6-11-16" fill="#ff73c0"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2733.svg b/riot/emojione/svg/2733.svg new file mode 100644 index 0000000..fc0a0d5 --- /dev/null +++ b/riot/emojione/svg/2733.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#24bac5" d="m38.2 34.6l25.8-2.6-25.8-2.6 16.4-20-20 16.4-2.6-25.8-2.6 25.8-20-16.4 16.4 20-25.8 2.6 25.8 2.6-16.4 20 20-16.4 2.6 25.8 2.6-25.8 20 16.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2734.svg b/riot/emojione/svg/2734.svg new file mode 100644 index 0000000..c8f50ed --- /dev/null +++ b/riot/emojione/svg/2734.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#42464c" d="m38.2 34.6l25.8-2.6-25.8-2.6 16.4-20-20 16.4-2.6-25.8-2.6 25.8-20-16.4 16.4 20-25.8 2.6 25.8 2.6-16.4 20 20-16.4 2.6 25.8 2.6-25.8 20 16.4z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2744.svg b/riot/emojione/svg/2744.svg new file mode 100644 index 0000000..1458183 --- /dev/null +++ b/riot/emojione/svg/2744.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.5 30.5h-6.9l4.2-4.2c.6-.6.6-1.5 0-2.1s-1.5-.6-2.1 0l-6.3 6.3h-4.7l2.5-2.5c.6-.6.6-1.5 0-2.1s-1.5-.6-2.1 0l-4.6 4.6h-4.8l9-9h8.9c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5h-5.9l5.5-5.5c.6-.6.6-1.5 0-2.1s-1.5-.6-2.1 0l-5.5 5.5v-5.9c-.1-.9-.7-1.5-1.6-1.5s-1.5.7-1.5 1.5v8.9l-9 9v-4.8l4.6-4.6c.6-.6.6-1.5 0-2.1s-1.5-.6-2.1 0l-2.5 2.5v-4.7l6.3-6.3c.6-.6.6-1.5 0-2.1s-1.5-.6-2.1 0l-4.2 4.2v-7c0-.8-.7-1.5-1.5-1.5s-1.5.7-1.5 1.5v6.9l-4.2-4.2c-.6-.6-1.5-.6-2.1 0s-.6 1.5 0 2.1l6.3 6.3v4.7l-2.5-2.5c-.6-.6-1.5-.6-2.1 0s-.6 1.5 0 2.1l4.6 4.6v4.8l-9-9v-8.9c0-.8-.7-1.4-1.5-1.4s-1.5.7-1.5 1.5v5.9l-5.5-5.5c-.6-.6-1.5-.6-2.1 0s-.6 1.5 0 2.1l5.5 5.5h-5.9c-.9 0-1.5.6-1.5 1.5s.7 1.5 1.5 1.5h8.9l9 9h-4.8l-4.6-4.6c-.6-.6-1.5-.6-2.1 0s-.6 1.5 0 2.1l2.5 2.5h-4.7l-6.3-6.3c-.6-.6-1.5-.6-2.1 0s-.6 1.5 0 2.1l4.2 4.2h-7c-.8 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5h6.9l-4.2 4.2c-.6.6-.6 1.5 0 2.1.3.3.7.4 1.1.4s.8-.1 1.1-.4l6.3-6.3h4.7l-2.6 2.5c-.6.6-.6 1.5 0 2.1.3.3.7.4 1.1.4s.8-.1 1.1-.4l4.6-4.6h4.8l-9 9h-8.9c-.9 0-1.5.7-1.5 1.5s.7 1.5 1.5 1.5h5.9l-5.5 5.5c-.6.6-.6 1.5 0 2.1.3.3.7.4 1.1.4s.8-.1 1.1-.4l5.5-5.5v5.9c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5v-8.9l9-9v4.8l-4.7 4.6c-.6.6-.6 1.5 0 2.1.3.3.7.4 1.1.4s.8-.1 1.1-.4l2.5-2.5v4.7l-6.3 6.3c-.6.6-.6 1.5 0 2.1.3.3.7.4 1.1.4s.8-.1 1.1-.4l4.2-4.2v6.9c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5v-6.9l4.2 4.2c.3.3.7.4 1.1.4s.8-.1 1.1-.4c.6-.6.6-1.5 0-2.1l-6.3-6.3v-4.7l2.5 2.5c.3.3.7.4 1.1.4s.8-.1 1.1-.4c.6-.6.6-1.5 0-2.1l-4.6-4.6v-4.8l9 9v8.9c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5v-5.9l5.5 5.5c.3.3.7.4 1.1.4s.8-.1 1.1-.4c.6-.6.6-1.5 0-2.1l-5.5-5.5h5.9c.8 0 1.5-.7 1.5-1.5s-.7-1.5-1.5-1.5h-8.9l-9-9h4.8l4.6 4.6c.3.3.7.4 1.1.4s.8-.1 1.1-.4c.6-.6.6-1.5 0-2.1l-2.5-2.5h4.7l6.3 6.3c.3.3.7.4 1.1.4s.8-.1 1.1-.4c.6-.6.6-1.5 0-2.1l-4.2-4.2h6.9c.8 0 1.5-.7 1.5-1.5s-1.3-1.5-2.1-1.5" fill="#75d6ff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2747.svg b/riot/emojione/svg/2747.svg new file mode 100644 index 0000000..9c179d6 --- /dev/null +++ b/riot/emojione/svg/2747.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#c28fef"><path d="m32 25.4c1.1 0 4.4-15.5 4.5-19.8.1-2-2-3.7-4.5-3.7-2.5 0-4.6 1.6-4.5 3.7.2 4.3 3.4 19.8 4.5 19.8"/><path d="m25.4 32c0-1.1-15.5-4.4-19.8-4.5-2-.1-3.7 2-3.7 4.5 0 2.5 1.6 4.6 3.7 4.5 4.3-.2 19.8-3.4 19.8-4.5"/><path d="m27.4 24.7l-17.1-14.4 14.5 17.1c.7-1 1.6-1.9 2.6-2.7"/><path d="m36.6 39.3l17.1 14.5-14.4-17.2c-.8 1-1.7 1.9-2.7 2.7"/><path d="m58.3 27.5c-4.3.1-19.8 3.4-19.8 4.5 0 1.1 15.5 4.3 19.8 4.5 2 .1 3.7-2 3.7-4.5 0-2.5-1.6-4.6-3.7-4.5"/><path d="m32 38.6c-1.1 0-4.3 15.5-4.5 19.8-.1 2 2 3.7 4.5 3.7s4.6-1.6 4.5-3.7c-.1-4.3-3.4-19.8-4.5-19.8"/><path d="m39.3 27.4l14.5-17.1-17.2 14.4c1 .8 1.9 1.7 2.7 2.7"/><path d="m24.7 36.6l-14.4 17.1 17.1-14.5c-1-.7-1.9-1.6-2.7-2.6"/><circle cx="32" cy="32" r="4.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/274c.svg b/riot/emojione/svg/274c.svg new file mode 100644 index 0000000..5f60701 --- /dev/null +++ b/riot/emojione/svg/274c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#ff5a79" d="M62 10.6 53.4 2 32 23.4 10.6 2 2 10.6 23.4 32 2 53.4 10.6 62 32 40.6 53.4 62 62 53.4 40.6 32z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/274e.svg b/riot/emojione/svg/274e.svg new file mode 100644 index 0000000..b65d3ec --- /dev/null +++ b/riot/emojione/svg/274e.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,52c0,5.5-4.5,10-10,10H12C6.5,62,2,57.5,2,52V12C2,6.5,6.5,2,12,2h40c5.5,0,10,4.5,10,10V52z" fill="#ff5a79"/><path fill="#fff" d="M50 21.2 42.8 14 32 24.8 21.2 14 14 21.2 24.8 32 14 42.8 21.2 50 32 39.2 42.8 50 50 42.8 39.2 32z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2753.svg b/riot/emojione/svg/2753.svg new file mode 100644 index 0000000..d4b28c8 --- /dev/null +++ b/riot/emojione/svg/2753.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m30.2 2.1c-11.6.7-17.7 7.3-18.2 19.2h11.7c.1-4.1 2.5-7.2 6.7-7.7 4.2-.4 8.2.6 9.4 3.4 1.3 3.1-1.6 6.7-3 8.2-2.6 2.8-6.8 4.9-9 7.9-2.1 3-2.5 6.9-2.7 11.7h10.3c.1-3.1.3-6 1.7-7.9 2.3-3.1 5.7-4.5 8.5-7 2.7-2.3 5.6-5.1 6-9.5 1.7-12.9-8.9-19.1-21.4-18.3"/><ellipse cx="30.5" cy="55.6" rx="6.5" ry="6.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2754.svg b/riot/emojione/svg/2754.svg new file mode 100644 index 0000000..d04a83c --- /dev/null +++ b/riot/emojione/svg/2754.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#a6aeb0"><path d="m30.2 2.1c-11.6.7-17.7 7.3-18.2 19.2h11.7c.1-4.1 2.5-7.2 6.7-7.7 4.2-.4 8.2.6 9.4 3.4 1.3 3.1-1.6 6.7-3 8.2-2.6 2.8-6.8 4.9-9 7.9-2.1 3-2.5 6.9-2.7 11.7h10.3c.1-3.1.3-6 1.7-7.9 2.3-3.1 5.7-4.5 8.5-7 2.7-2.3 5.6-5.1 6-9.5 1.7-12.9-8.9-19.1-21.4-18.3"/><ellipse cx="30.5" cy="55.6" rx="6.5" ry="6.4"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2755.svg b/riot/emojione/svg/2755.svg new file mode 100644 index 0000000..714e210 --- /dev/null +++ b/riot/emojione/svg/2755.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#a6aeb0"><path d="m37 42.4h-10l-4-40.4h18z"/><ellipse cx="32" cy="54.4" rx="7.7" ry="7.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2757.svg b/riot/emojione/svg/2757.svg new file mode 100644 index 0000000..d064e7e --- /dev/null +++ b/riot/emojione/svg/2757.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><path d="m37 42.4h-10l-4-40.4h18z"/><ellipse cx="32" cy="54.4" rx="7.7" ry="7.6"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2763.svg b/riot/emojione/svg/2763.svg new file mode 100644 index 0000000..df6ebed --- /dev/null +++ b/riot/emojione/svg/2763.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#ff5a79"><circle cx="32" cy="52" r="10"/><path d="m57.4 11.8c-4.5-14.5-23.1-10.6-25.4-2.9-2.3-7.7-20.9-11.6-25.4 2.9-2 6.3 1.1 12.2 6.4 15.9 7.1 5 15.5 5 19 14.3 3.5-9.3 11.8-9.3 19-14.3 5.3-3.7 8.4-9.6 6.4-15.9"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2764.svg b/riot/emojione/svg/2764.svg new file mode 100644 index 0000000..12c6742 --- /dev/null +++ b/riot/emojione/svg/2764.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m61.1 18.2c-6.4-17-27.2-9.4-29.1-.9-2.6-9-22.9-15.7-29.1.9-6.9 18.5 26.7 35.1 29.1 37.8 2.4-2.2 36-19.6 29.1-37.8" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2795.svg b/riot/emojione/svg/2795.svg new file mode 100644 index 0000000..c572fec --- /dev/null +++ b/riot/emojione/svg/2795.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#4d5357" d="m38 26v-24h-12v24h-24v12h24v24h12v-24h24v-12z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2796.svg b/riot/emojione/svg/2796.svg new file mode 100644 index 0000000..844614d --- /dev/null +++ b/riot/emojione/svg/2796.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#4d5357" d="m2 26h60v12h-60z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2797.svg b/riot/emojione/svg/2797.svg new file mode 100644 index 0000000..8b3945c --- /dev/null +++ b/riot/emojione/svg/2797.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><g fill="#4d5357"><path d="m2 26h60v12h-60z"/><circle cx="32" cy="9.5" r="7.5"/><circle cx="32" cy="54.5" r="7.5"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/27a1.svg b/riot/emojione/svg/27a1.svg new file mode 100644 index 0000000..125d7d4 --- /dev/null +++ b/riot/emojione/svg/27a1.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m33.7 16l15.3 16-15.3 16v-10.6h-18.7v-10.3h18.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/27b0.svg b/riot/emojione/svg/27b0.svg new file mode 100644 index 0000000..5bf1eac --- /dev/null +++ b/riot/emojione/svg/27b0.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m62 4c-11 0-21.4 2.2-30 6.1-8.6-3.9-19-6.1-30-6.1v9.3c7 0 13.8 1 19.8 2.9-2.1 1.7-4.1 3.5-5.8 5.5-5.5 6.5-7.9 14.1-6.6 21.4 1.9 11.7 12.7 16.9 22.6 16.9s20.7-5.2 22.6-16.8c1.2-7.3-1.1-15-6.6-21.4-1.7-2-3.6-3.8-5.8-5.5 6-1.9 12.8-2.9 19.8-2.9v-9.4m-16.7 37.6c-1 6.2-7.5 9-13.3 9s-12.3-2.8-13.4-9c-1-5.9 1.9-10.8 4.6-13.9 2.3-2.7 5.3-5.1 8.8-7.1 3.5 2 6.5 4.4 8.8 7.1 2.6 3.1 5.5 8 4.5 13.9" fill="#4d5357"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/27bf.svg b/riot/emojione/svg/27bf.svg new file mode 100644 index 0000000..83d211d --- /dev/null +++ b/riot/emojione/svg/27bf.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m56.4 22.3c1.6-.2 3.5-.3 5.6-.3v-4.9c-6.1 0-10.5.9-13 1.6-5.4-1.8-11.1-2.7-17-2.7-6 0-11.8.9-17.3 2.8-2.7-.7-7.5-1.5-12.7-1.7v4.8c2 0 3.9.2 5.6.4-3.3 2.7-5.5 6.8-5.5 11.3 0 8 6.5 14.4 14.4 14.4s14.4-6.4 14.4-14.4c0-5.1-2.7-9.6-6.7-12.1 2.6-.4 5.2-.6 7.9-.6s5.3.2 7.9.6c-4 2.5-6.7 7-6.7 12.1 0 7.9 6.4 14.4 14.4 14.4 7.9 0 14.3-6.4 14.3-14.4 0-4.6-2.2-8.7-5.6-11.3m-30.3 11.3c0 5.3-4.3 9.6-9.6 9.6s-9.6-4.3-9.6-9.6 4.3-9.6 9.6-9.6c5.3.1 9.6 4.4 9.6 9.6m21.5 9.6c-5.3 0-9.6-4.3-9.6-9.6s4.3-9.6 9.6-9.6 9.6 4.3 9.6 9.6c0 5.3-4.3 9.6-9.6 9.6" fill="#4fd1d9"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2934.svg b/riot/emojione/svg/2934.svg new file mode 100644 index 0000000..2d7a211 --- /dev/null +++ b/riot/emojione/svg/2934.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m40.4 19.5v21.2c0 6.8-5.6 12.3-12.5 12.3-3.3 0-6.5-1.3-8.9-3.6l5.1-5c1 1 2.4 1.5 3.8 1.5 3 0 5.4-2.4 5.4-5.3v-21.1h-4.6l8.2-8.5 8.2 8.5h-4.7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2935.svg b/riot/emojione/svg/2935.svg new file mode 100644 index 0000000..00a8a92 --- /dev/null +++ b/riot/emojione/svg/2935.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path d="m40.4 45.1v-22.2c0-7.1-5.6-12.9-12.5-12.9-3.3 0-6.5 1.3-8.9 3.8l5.1 5.2c1-1 2.4-1.6 3.8-1.6 3 0 5.4 2.5 5.4 5.5v22.2h-4.6l8.2 8.9 8.2-8.9h-4.7" fill="#fff"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2b05.svg b/riot/emojione/svg/2b05.svg new file mode 100644 index 0000000..9583aec --- /dev/null +++ b/riot/emojione/svg/2b05.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m30.3 16l-15.3 16 15.3 16v-10.6h18.7v-10.3h-18.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2b06.svg b/riot/emojione/svg/2b06.svg new file mode 100644 index 0000000..efa3322 --- /dev/null +++ b/riot/emojione/svg/2b06.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m48 30.3l-16-15.3-16 15.3h10.6v18.7h10.3v-18.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2b07.svg b/riot/emojione/svg/2b07.svg new file mode 100644 index 0000000..bbd2213 --- /dev/null +++ b/riot/emojione/svg/2b07.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#4fd1d9"/><path fill="#fff" d="m16 33.7l16 15.3 16-15.3h-10.6v-18.7h-10.3v18.7z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2b1b.svg b/riot/emojione/svg/2b1b.svg new file mode 100644 index 0000000..b908105 --- /dev/null +++ b/riot/emojione/svg/2b1b.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#333" d="m2 2h60v60h-60z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2b1c.svg b/riot/emojione/svg/2b1c.svg new file mode 100644 index 0000000..a58c77b --- /dev/null +++ b/riot/emojione/svg/2b1c.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path fill="#d0d0d0" d="m2 2h60v60h-60z"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2b50.svg b/riot/emojione/svg/2b50.svg new file mode 100644 index 0000000..487bf32 --- /dev/null +++ b/riot/emojione/svg/2b50.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="M62,25.2H39.1L32,3l-7.1,22.2H2l18.5,13.7l-7,22.1L32,47.3L50.5,61l-7.1-22.2L62,25.2z" fill="#ffce31"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/2b55.svg b/riot/emojione/svg/2b55.svg new file mode 100644 index 0000000..4626506 --- /dev/null +++ b/riot/emojione/svg/2b55.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m32 2c-16.6 0-30 13.4-30 30s13.4 30 30 30 30-13.4 30-30-13.4-30-30-30m0 51c-11.6 0-21-9.4-21-21s9.4-21 21-21 21 9.4 21 21-9.4 21-21 21" fill="#ff5a79"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/3030.svg b/riot/emojione/svg/3030.svg new file mode 100644 index 0000000..ce6c005 --- /dev/null +++ b/riot/emojione/svg/3030.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m47 41c-5.6 0-10.1-4.2-10.1-9.4 0-2.5-2.2-4.5-4.9-4.5s-4.9 2-4.9 4.5c0 5.2-4.6 9.4-10.1 9.4s-10.1-4.2-10.1-9.4c0-1.3-.6-2.5-1.6-3.3-.9-.7-2-1.1-3.2-1.1v-4.2c2.3 0 4.5.8 6.2 2.2 2 1.6 3.1 4 3.1 6.4 0 2.9 2.5 5.2 5.6 5.2s5.6-2.3 5.6-5.2c0-4.8 4.2-8.6 9.4-8.6s9.4 3.9 9.4 8.6c0 2.9 2.5 5.2 5.6 5.2s5.6-2.3 5.6-5.2c0-2.5 1.1-4.8 3.1-6.4 1.7-1.4 3.9-2.2 6.2-2.2v4.2c-1.2 0-2.3.4-3.2 1.1-1 .9-1.6 2.1-1.6 3.3 0 5.2-4.5 9.4-10.1 9.4" fill="#4d5357"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/303d.svg b/riot/emojione/svg/303d.svg new file mode 100644 index 0000000..3b7e150 --- /dev/null +++ b/riot/emojione/svg/303d.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><path d="m60.1 54.6c-14.1-8.7-17-24.1-18.7-39.2-.4-3.3-2.3-10.4-7.4-7-2 1.4-3.1 3.6-4.3 5.6-1.4 2.4-2.9 4.6-4.6 6.5-.3-5.1-.8-10.2-2.3-14.9-1.1-3.6-5.3-5.2-8-2-2.1 2.5-3.9 10.3-8 9.1-4.9-1.4-6.9 6.1-2.1 7.5 4.3 1.3 8.1-.1 11-3.4.4-.5.8-.9 1.1-1.4.5 4.4.6 9 .9 13.2.2 2.7 3.3 5.2 5.9 3.4 4.5-3 7.7-6.7 10.6-10.8.1.9.2 1.7.3 2.6 2.1 15.1 8.2 29.2 21.6 37.5 4.4 2.8 8.3-4 4-6.7" fill="#eda454"/></svg> \ No newline at end of file diff --git a/riot/emojione/svg/3297.svg b/riot/emojione/svg/3297.svg new file mode 100644 index 0000000..c57b1ab --- /dev/null +++ b/riot/emojione/svg/3297.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><g fill="#fff"><path d="m27.4 39.2c-.7-1-1.9-2.5-3.2-3.9v14.2h-4.8v-12.3c-1.4 1.2-2.7 2.3-4.1 3.2-.4-1.3-1.5-3.8-2.2-4.6 3.8-2.1 7.5-5.8 9.8-9.9h-8.2v-4.6h4.8v-6.8h4.9v6.8h1.3l.9-.2 2.7 1.7c-1 2.7-2.3 5.2-3.9 7.6 1.8 1.4 4.5 3.9 5.3 4.7l-3.3 4.1"/><path d="m47.3 39.2c-.1 4.7-.3 5.4-.9 5.4h-1.2c-.6 0-.6-.1-.6-1.4v-11.9h4.1v-16.3h-17.6v16.3h3c-.4 6.8-1.4 11.1-6.5 13.8 1 .9 2.2 2.7 2.8 3.9 6.3-3.4 7.7-9.1 8.2-17.7h1.8v11.9c0 4.1.8 5.4 4.1 5.4h2.5c2.7 0 3.7-1.6 4-7.7-1.1-.3-2.9-1-3.7-1.7m-3.2-12.5h-8.5v-7.1h8.5v7.1"/></g></svg> \ No newline at end of file diff --git a/riot/emojione/svg/3299.svg b/riot/emojione/svg/3299.svg new file mode 100644 index 0000000..3e75032 --- /dev/null +++ b/riot/emojione/svg/3299.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" enable-background="new 0 0 64 64"><circle cx="32" cy="32" r="30" fill="#ff5a79"/><g fill="#fff"><path d="m25.8 37.5c-.3-.7-.8-1.6-1.4-2.6v15.1h-4.4v-13.5c-1.2 3-2.5 5.7-4 7.6-.4-1.4-1.4-3.6-2.1-4.9 2-2.3 3.9-6.3 5.1-10.1h-4.5v-4.6h5.5v-4.1c-1.5.3-3 .5-4.4.7-.2-1.1-.8-2.7-1.4-3.8 4.1-.6 8.7-1.6 11.4-3l3.2 3.7c-1.3.6-2.9 1.1-4.4 1.5v5h3.7v4.6h-3.7v.3c.9.9 3 3.2 3.9 4.3.4-2 .7-4.3.8-6.3l3.5.9c-.3 4.4-1 9.5-2.7 12.5l-3.3-1.8c.6-1.2 1.2-2.7 1.5-4.3l-2.3 2.8"/><path d="m45.6 39.6c-.1-2.4-.8-5.7-1.8-8.8-1.7 3.9-3.8 7.3-6.2 10.3v2.5c0 1.5.2 1.7 1.2 1.7h3.2c1 0 1.2-.8 1.4-5.7 1 .8 2.7 1.5 4 1.8-.4 6.4-1.6 8.2-4.9 8.2h-4.3c-3.3 0-4.6-.9-4.9-3.9-1.3 1.1-2.7 2.2-4.1 3.2-.7-.9-2.5-2.7-3.5-3.6 2.9-1.7 5.4-3.8 7.6-6.3v-16.7h4.4v10.6c2.8-4.8 4.8-10.5 6.1-16.9l4.7.9c-.8 3.8-1.9 7.3-3.1 10.5l1.6-.4c1.6 3.5 2.9 8.2 3.2 11.4l-4.6 1.2"/><path d="m39.1 23.2c-1.5-1.8-4.7-4.4-7.4-6l3-3.2c2.7 1.5 6 3.8 7.6 5.7l-3.2 3.5"/></g></svg> \ No newline at end of file diff --git a/riot/fonts/Fira_Mono/FiraMono-Bold.ttf b/riot/fonts/Fira_Mono/FiraMono-Bold.ttf new file mode 100755 index 0000000..4b8b1cf Binary files /dev/null and b/riot/fonts/Fira_Mono/FiraMono-Bold.ttf differ diff --git a/riot/fonts/Fira_Mono/FiraMono-Regular.ttf b/riot/fonts/Fira_Mono/FiraMono-Regular.ttf new file mode 100755 index 0000000..5238c09 Binary files /dev/null and b/riot/fonts/Fira_Mono/FiraMono-Regular.ttf differ diff --git a/riot/fonts/Fira_Mono/OFL.txt b/riot/fonts/Fira_Mono/OFL.txt new file mode 100755 index 0000000..ba853c0 --- /dev/null +++ b/riot/fonts/Fira_Mono/OFL.txt @@ -0,0 +1,92 @@ +Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A. +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/riot/fonts/Open_Sans/LICENSE.txt b/riot/fonts/Open_Sans/LICENSE.txt new file mode 100755 index 0000000..75b5248 --- /dev/null +++ b/riot/fonts/Open_Sans/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/riot/fonts/Open_Sans/OpenSans-Bold.ttf b/riot/fonts/Open_Sans/OpenSans-Bold.ttf new file mode 100755 index 0000000..fd79d43 Binary files /dev/null and b/riot/fonts/Open_Sans/OpenSans-Bold.ttf differ diff --git a/riot/fonts/Open_Sans/OpenSans-BoldItalic.ttf b/riot/fonts/Open_Sans/OpenSans-BoldItalic.ttf new file mode 100755 index 0000000..9bc8009 Binary files /dev/null and b/riot/fonts/Open_Sans/OpenSans-BoldItalic.ttf differ diff --git a/riot/fonts/Open_Sans/OpenSans-Italic.ttf b/riot/fonts/Open_Sans/OpenSans-Italic.ttf new file mode 100755 index 0000000..c90da48 Binary files /dev/null and b/riot/fonts/Open_Sans/OpenSans-Italic.ttf differ diff --git a/riot/fonts/Open_Sans/OpenSans-Regular.ttf b/riot/fonts/Open_Sans/OpenSans-Regular.ttf new file mode 100755 index 0000000..db43334 Binary files /dev/null and b/riot/fonts/Open_Sans/OpenSans-Regular.ttf differ diff --git a/riot/fonts/Open_Sans/OpenSans-Semibold.ttf b/riot/fonts/Open_Sans/OpenSans-Semibold.ttf new file mode 100755 index 0000000..1a7679e Binary files /dev/null and b/riot/fonts/Open_Sans/OpenSans-Semibold.ttf differ diff --git a/riot/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf b/riot/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf new file mode 100755 index 0000000..59b6d16 Binary files /dev/null and b/riot/fonts/Open_Sans/OpenSans-SemiboldItalic.ttf differ diff --git a/riot/home-status.html b/riot/home-status.html new file mode 100644 index 0000000..7d50470 --- /dev/null +++ b/riot/home-status.html @@ -0,0 +1,192 @@ +<style type="text/css"> + +/* we deliberately inline style here to avoid flash-of-CSS problems, and to avoid + * voodoo where we have to set display: none by default + */ + +.mx_HomePage_container { + text-align: center; + display: block ! important; + width: 690px; + margin: 20px; +} + +.mx_HomePage_header { + margin-top: 37px; + margin-left: 10px; + width: 670px; + box-sizing: border-box; + font-size: 18px; + background-color: #fff; + box-shadow: 0px 2px 10px 0px rgba(48,55,81,0.05); + border-radius: 5px; + padding: 20px 80px 20px 80px; + align-items: center; +} + +.mx_HomePage_header h1 { + font-size: 29px; + margin-bottom: 10px; +} + +.mx_HomePage_intro h2 { + margin-top: 32px; + font-size: 25px; + color: #49555F; +} + +.mx_HomePage_intro { + margin: auto; + width: 600px; + margin-top: 40px; + margin-bottom: 40px; + font-size: 18px; +} + +.mx_HomePage_coc { + font-size: 16px; +} + +.mx_HomePage_coc a { + color: #4360DF; +} + +.mx_HomePage_room, .mx_HomePage_telegram { + float: left; + background-color: #fff; + box-shadow: 0px 2px 10px 0px rgba(48,55,81,0.05); + border-radius: 5px; + margin: 10px; + width: 210px; + height: 250px; + display: flex; + flex-direction: column; + align-items: center; +} + +.mx_HomePage_telegram { + background-color: transparent; + border: 1px solid rgba(113, 129, 142, 0.2); + box-shadow: none; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + font-size: 16px; + line-height: 25px; + box-sizing: border-box; +} + +.mx_HomePage_telegram a { + text-transform: uppercase; + color: #4360DF; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + font-weight: 600; + opacity: 1.0; + transition: opacity .2s ease; +} + +.mx_HomePage_telegram a:hover { + opacity: 0.5; +} + +.mx_HomePage_room .mx_HomePage_icon { + margin-top: 24px; + margin-bottom: 16px; + width: 50px; + height: 50px; +} + +.mx_HomePage_room .mx_HomePage_name { + display: block; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + font-weight: 600; + font-size: 15px; + color: #49555F; + line-height: 25px; + margin: 0px 12px 0px 12px; +} + +.mx_HomePage_room .mx_HomePage_desc { + flex: 1; + display: block; + margin: 0px 12px 0px 12px; + font-size: 14px; + line-height: 20px; +} + +.mx_HomePage_button { + align-self: normal; + margin: 12px; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: #6CC1F6; + font-size: 13px; + font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1px; + color: #fff ! important; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; +} + +</style> + +<div class="mx_HomePage_container"> + <div class="mx_HomePage_header"> + <div> + <h1>Welcome to Status Community Chat, powered by Riot.</h1> + <p>For contributors, developers and Ethereum-enthusiasts who care about the movement for decentralization.</p> + </div> + </div> + + <div class="mx_HomePage_intro"> + <h2>Our rooms</h2> + <p>Please abide by the channels discussion categories and remain on topic to the specific category details listed.</p> + <p class="mx_HomePage_coc">Before posting please refer to our <a href="https://wiki.status.im/Code_of_conduct">Code of Conduct</a></p> + </div> + + + <div class="mx_HomePage_room"> + <img class="mx_HomePage_icon" src="themes/status/img/a.png"> + <span class="mx_HomePage_name">#announcements</span> + <span class="mx_HomePage_desc">Company wide announcements.</span> + <a class="mx_HomePage_button" href="#/room/#announcements:status.im">Join</a> + </div> + <div class="mx_HomePage_room"> + <img class="mx_HomePage_icon" src="themes/status/img/i.png"> + <span class="mx_HomePage_name">#introductions</span> + <span class="mx_HomePage_desc">Newcomer introductions.</span> + <a class="mx_HomePage_button" href="#/room/#introductions:status.im">Join</a> + </div> + <div class="mx_HomePage_room"> + <img class="mx_HomePage_icon" src="themes/status/img/g.png"> + <span class="mx_HomePage_name">#general</span> + <span class="mx_HomePage_desc">General discussions of Status.</span> + <a class="mx_HomePage_button" href="#/room/#general:status.im">Join</a> + </div> + <div class="mx_HomePage_room"> + <img class="mx_HomePage_icon" src="themes/status/img/d.png"> + <span class="mx_HomePage_name">#dev-status</span> + <span class="mx_HomePage_desc">Contributing to our codebase? Building a DApp or a chatbot? We're here to help.</span> + <a class="mx_HomePage_button" href="#/room/#dev-status:status.im">Join</a> + </div> + <div class="mx_HomePage_room"> + <img class="mx_HomePage_icon" src="themes/status/img/n.png"> + <span class="mx_HomePage_name">#news-articles</span> + <span class="mx_HomePage_desc">Share news, articles related to Ethereum or projects you're excited about</span> + <a class="mx_HomePage_button" href="#/room/#news-articles:status.im">Join</a> + </div> + <div class="mx_HomePage_telegram"> + <p> + Interested in market and cryptocurrency type discussions? + </p> + <a href="https://t.me/StatusNetworkChat">Join Telegram</a> + </div> +</div> diff --git a/riot/home.html b/riot/home.html new file mode 100644 index 0000000..934e491 --- /dev/null +++ b/riot/home.html @@ -0,0 +1,292 @@ +<style type="text/css"> + +/* we deliberately inline style here to avoid flash-of-CSS problems, and to avoid + * voodoo where we have to set display: none by default + */ + +.mx_HomePage_header h1 { + margin-left: 0px; + margin-bottom: 0px; + margin-top: 20px; + margin-right: 20px; + color: #454545; +} + +.mx_HomePage_header h2 { + margin-left: 0px; + margin-top: 5px; + margin-bottom: 20px; + margin-right: 20px; + color: #454545; +} + +.mx_HomePage_header h1 a { + color: #454545; +} + +.mx_HomePage h3 { + margin-top: 30px; +} + +.mx_HomePage_header { + border: 1px solid #76CFA6; + background-color: #eaf5f0; + border-radius: 5px; + align-items: center; +} + +.mx_HomePage_col { + display: flex; + flex-direction: row; +} + +.mx_HomePage_toprow { + flex-wrap: wrap; +} + +.mx_HomePage_row { + flex: 1 1 0; + margin-right: 20px; + display: flex; + flex-direction: row; + flex-wrap: wrap; +} + +.mx_HomePage_logo { + margin-top: 20px; + margin-left: 40px; + margin-right: 40px; + margin-bottom: 20px; + display: inline; + height: 100px; +} + +.mx_HomePage_room { + cursor: pointer; + float: left; + text-decoration: none; + text-align: center; + padding-left: 10px; + padding-right: 10px; + width: 120px; +} + +.mx_HomePage_toprow .mx_HomePage_room { + width: 64px; +} + + +.mx_HomePage_room .mx_HomePage_icon { + border-radius: 50%; + width: 64px; + height: 64px; +} + +.mx_HomePage_room .mx_HomePage_name { + display: block; +} + +.mx_HomePage_room .mx_HomePage_desc { + display: block; + font-size: 12px; + margin-top: 8px; +} + +.mx_HomePage_comment { + display: flex; + align-items: center; + margin-left: 100px; + min-height: 64px; +} + +.mx_HomePage_container h3::after, +.mx_HomePage_container h4::after { + content: ":"; +} + +.mx_HomePage_container { + display: block ! important; + margin: 20px; +} + +.mx_HomePage_container h1, +.mx_HomePage_container h2, +.mx_HomePage_container h3, +.mx_HomePage_container h4 { + font-weight: 600; +} +</style> + +<div class="mx_HomePage_container"> + <div class="mx_HomePage_col mx_HomePage_header"> + <a href="https://riot.im"><img src="home/images/logo.svg" class="mx_HomePage_logo"></a> + <div> + <h1>_t("Welcome to Riot.im")</h1> + <h2>_t("Decentralised, encrypted chat & collaboration powered by [matrix]")</h2> + </div> + </div> + <div class="mx_HomePage_col mx_HomePage_toprow"> + <div class="mx_HomePage_row"> + <div> + <h3>_t("Search the room directory")</h3> + <a class="mx_HomePage_room" href="#/directory"> + <img class="mx_HomePage_icon" src="img/icons-directory.svg"> + </a> + <span class="mx_HomePage_comment"> + _t("Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!") + </span> + </div> + </div> + <div class="mx_HomePage_row"> + <div> + <h3>_t("Chat with Riot Bot")</h3> + <a class="mx_HomePage_room" href="#/user/@riot-bot:matrix.org?action=chat"> + <img class="mx_HomePage_icon" src="home/rooms/riot-bot.png"> + </a> + <span class="mx_HomePage_comment"> + _t("Get started with some tips from Riot Bot!") + </span> + </div> + </div> + </div> + + <h3>_t("General discussion about Matrix and Riot")</h3> + + <div class="mx_HomePage_row"> + <div class="mx_HomePage_room"> + <a href="#/room/#matrix:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/matrix.png"> + <span class="mx_HomePage_name">Matrix HQ</span> + </a> + <span class="mx_HomePage_desc">_t("Discussion of all things Matrix!")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#riot:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/riot.png"> + <span class="mx_HomePage_name">Riot</span> + </a> + <span class="mx_HomePage_desc">_t("Riot/Web & Desktop chat")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#riot-ios:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/riot-ios.png"> + <span class="mx_HomePage_name">#riot-ios</span> + </a> + <span class="mx_HomePage_desc">_t("Riot/iOS & matrix-ios-sdk chat")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#riot-android:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/riot-android.png"> + <span class="mx_HomePage_name">#riot-android</span> + </a> + <span class="mx_HomePage_desc">_t("Riot/Android & matrix-android-sdk chat")</span> + </div> + </div> + + <h3>_t("Matrix technical discussions")</h3> + <h4>_t("Running Matrix services")</h4> + + <div class="mx_HomePage_row"> + <div class="mx_HomePage_room"> + <a href="#/room/#synapse:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/matrix.png"> + <span class="mx_HomePage_name">Synapse Support Community</span> + </a> + <span class="mx_HomePage_desc">_t("Community-run support for Synapse")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#dendrite:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/dendrite.png"> + <span class="mx_HomePage_name">#dendrite:matrix.org</span> + </a> + <span class="mx_HomePage_desc">_t("Admin support for Dendrite")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#homeowners:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/homeowners.png"> + <span class="mx_HomePage_name">Synapse Homeowners</span> + </a> + <span class="mx_HomePage_desc">_t("Announcements about Synapse releases")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#irc:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/irc.png"> + <span class="mx_HomePage_name">IRC Matrix Bridges</span> + </a> + <span class="mx_HomePage_desc">_t("Support for those using and running matrix-appservice-irc")</span> + </div> + </div> + + <h4>_t("Building services on Matrix")</h4> + + <div class="mx_HomePage_row"> + <div class="mx_HomePage_room"> + <a href="#/room/#matrix-dev:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/matrix-dev.png"> + <span class="mx_HomePage_name">#matrix-dev:matrix.org</span> + </a> + <span class="mx_HomePage_desc">_t("Support for those using the Matrix spec")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#e2e:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/e2e.png"> + <span class="mx_HomePage_name">End-to-end crypto in Matrix</span> + </a> + <span class="mx_HomePage_desc">_t("Design and implementation of E2E in Matrix")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#vr:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/vr.png"> + <span class="mx_HomePage_name">#vr:matrix.org</span> + </a> + <span class="mx_HomePage_desc">_t("Implementing VR services with Matrix")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#webrtc:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/webrtc.png"> + <span class="mx_HomePage_name">#webrtc:matrix.org</span> + </a> + <span class="mx_HomePage_desc">_t("Implementing VoIP services with Matrix")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#matrix-identity:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/identity.jpg"> + <span class="mx_HomePage_name">Matrix Identity</span> + </a> + <span class="mx_HomePage_desc">_t("Discussion of the Identity Service API")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#bridging:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/bridging.png"> + <span class="mx_HomePage_name">Matrix Bridging</span> + </a> + <span class="mx_HomePage_desc">_t("Support for those using, running and writing other bridges")</span> + </div> + </div> + + <h4>_t("Contributing code to Matrix and Riot")</h4> + + <div class="mx_HomePage_row"> + <div class="mx_HomePage_room"> + <a href="#/room/#riot-dev:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/riot-dev.png"> + <span class="mx_HomePage_name">#riot-dev</span> + </a> + <span class="mx_HomePage_desc">_t("Dev chat for the Riot/Web dev team")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#dendrite-dev:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/dendrite-dev.png"> + <span class="mx_HomePage_name">#dendrite-dev</span> + </a> + <span class="mx_HomePage_desc">_t("Dev chat for the Dendrite dev team")</span> + </div> + <div class="mx_HomePage_room"> + <a href="#/room/#riotweb-translations:matrix.org"> + <img class="mx_HomePage_icon" src="home/rooms/riot-translations.png"> + <span class="mx_HomePage_name">Riot Translations</span> + </a> + <span class="mx_HomePage_desc">_t("Co-ordination for Riot translators")</span> + </div> + </div> +</div> diff --git a/riot/home/images/logo.svg b/riot/home/images/logo.svg new file mode 100644 index 0000000..a5f70e5 --- /dev/null +++ b/riot/home/images/logo.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + viewBox="0 0 173.6 146.6" style="enable-background:new 0 0 173.6 146.6;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#7DC8A2;} + .st1{fill:#AFDBC5;} + .st2{fill:#764D80;} + .st3{enable-background:new ;} + .st4{fill:none;stroke:#764D80;stroke-miterlimit:10;} +</style> +<title>New_logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/home/images/matrix.svg b/riot/home/images/matrix.svg new file mode 100644 index 0000000..5c7dfbb --- /dev/null +++ b/riot/home/images/matrix.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/home/rooms/bridging.png b/riot/home/rooms/bridging.png new file mode 100644 index 0000000..6b3a55e Binary files /dev/null and b/riot/home/rooms/bridging.png differ diff --git a/riot/home/rooms/dendrite-dev.png b/riot/home/rooms/dendrite-dev.png new file mode 100644 index 0000000..1d96bd8 Binary files /dev/null and b/riot/home/rooms/dendrite-dev.png differ diff --git a/riot/home/rooms/dendrite.png b/riot/home/rooms/dendrite.png new file mode 100644 index 0000000..1d96bd8 Binary files /dev/null and b/riot/home/rooms/dendrite.png differ diff --git a/riot/home/rooms/e2e.png b/riot/home/rooms/e2e.png new file mode 100644 index 0000000..a2bda4b Binary files /dev/null and b/riot/home/rooms/e2e.png differ diff --git a/riot/home/rooms/homeowners.png b/riot/home/rooms/homeowners.png new file mode 100644 index 0000000..ed45f11 Binary files /dev/null and b/riot/home/rooms/homeowners.png differ diff --git a/riot/home/rooms/identity.jpg b/riot/home/rooms/identity.jpg new file mode 100644 index 0000000..f2e1505 Binary files /dev/null and b/riot/home/rooms/identity.jpg differ diff --git a/riot/home/rooms/identity.png b/riot/home/rooms/identity.png new file mode 100644 index 0000000..de1ea60 Binary files /dev/null and b/riot/home/rooms/identity.png differ diff --git a/riot/home/rooms/irc.png b/riot/home/rooms/irc.png new file mode 100644 index 0000000..5f611d1 Binary files /dev/null and b/riot/home/rooms/irc.png differ diff --git a/riot/home/rooms/matrix-dev.png b/riot/home/rooms/matrix-dev.png new file mode 100644 index 0000000..fa54f00 Binary files /dev/null and b/riot/home/rooms/matrix-dev.png differ diff --git a/riot/home/rooms/matrix.png b/riot/home/rooms/matrix.png new file mode 100644 index 0000000..fa54f00 Binary files /dev/null and b/riot/home/rooms/matrix.png differ diff --git a/riot/home/rooms/riot-android.png b/riot/home/rooms/riot-android.png new file mode 100644 index 0000000..fa2bec8 Binary files /dev/null and b/riot/home/rooms/riot-android.png differ diff --git a/riot/home/rooms/riot-bot.png b/riot/home/rooms/riot-bot.png new file mode 100644 index 0000000..9efd4a3 Binary files /dev/null and b/riot/home/rooms/riot-bot.png differ diff --git a/riot/home/rooms/riot-dev.png b/riot/home/rooms/riot-dev.png new file mode 100644 index 0000000..ff8b21a Binary files /dev/null and b/riot/home/rooms/riot-dev.png differ diff --git a/riot/home/rooms/riot-ios.png b/riot/home/rooms/riot-ios.png new file mode 100644 index 0000000..6a0c598 Binary files /dev/null and b/riot/home/rooms/riot-ios.png differ diff --git a/riot/home/rooms/riot-translations.png b/riot/home/rooms/riot-translations.png new file mode 100644 index 0000000..2ae9583 Binary files /dev/null and b/riot/home/rooms/riot-translations.png differ diff --git a/riot/home/rooms/riot.png b/riot/home/rooms/riot.png new file mode 100644 index 0000000..4daa2e4 Binary files /dev/null and b/riot/home/rooms/riot.png differ diff --git a/riot/home/rooms/synapse.png b/riot/home/rooms/synapse.png new file mode 100644 index 0000000..ee0f855 Binary files /dev/null and b/riot/home/rooms/synapse.png differ diff --git a/riot/home/rooms/vr.png b/riot/home/rooms/vr.png new file mode 100644 index 0000000..98b7780 Binary files /dev/null and b/riot/home/rooms/vr.png differ diff --git a/riot/home/rooms/webrtc.png b/riot/home/rooms/webrtc.png new file mode 100644 index 0000000..98b790f Binary files /dev/null and b/riot/home/rooms/webrtc.png differ diff --git a/riot/i18n/bg.json b/riot/i18n/bg.json new file mode 100644 index 0000000..ffa959d --- /dev/null +++ b/riot/i18n/bg.json @@ -0,0 +1,1403 @@ +{ + "OK": "ОК", + "Operation failed": "Операцията е неуспешна", + "Search": "Търсене", + "Custom Server Options": "Потребителски опции за сървър", + "Dismiss": "Затвори", + "powered by Matrix": "базирано на Matrix", + "Warning": "Предупреждение", + "Error": "Грешка", + "Remove": "Премахни", + "Close": "Затвори", + "Cancel": "Отказ", + "Send": "Изпрати", + "Edit": "Редактирай", + "Continue": "Продължи", + "Failed to change password. Is your password correct?": "Неуспешна промяна. Правилно ли сте въвели Вашата парола?", + "Unpin Message": "Откачи съобщението", + "Sun": "нд.", + "Mon": "пн.", + "Tue": "вт.", + "Wed": "ср.", + "Thu": "чт.", + "Fri": "пт.", + "Sat": "сб.", + "Jan": "ян.", + "Feb": "февр.", + "Mar": "март", + "Apr": "апр.", + "May": "май", + "Jun": "юни", + "Jul": "юли", + "Aug": "авг.", + "Sep": "септ.", + "Oct": "окт.", + "Nov": "ноем.", + "Dec": "дек.", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(day)s %(monthName)s %(fullYear)s, %(weekDayName)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "Online": "Онлайн", + "Failed to remove tag %(tagName)s from room": "Неуспешно премахване на %(tagName)s етикет от стаята", + "unknown error code": "неизвестен код за грешка", + "Failed to forget room %(errCode)s": "Неуспешно забравяне на стаята %(errCode)s", + "Mute": "Заглуши", + "Leave": "Напусни", + "Favourite": "Любим", + "Register": "Регистрация", + "Notifications": "Известия", + "Rooms": "Стаи", + "Add rooms to this community": "Добави стаи в тази общност", + "Unnamed room": "Стая без име", + "World readable": "Четимо за всички", + "Guests can join": "Гости могат да се присъединят", + "No rooms to show": "Няма стаи, които да бъдат показани", + "Failed to add tag %(tagName)s to room": "Неуспешно добавяне на %(tagName)s етикет в стаята", + "This email address is already in use": "Този имейл адрес е вече зает", + "This phone number is already in use": "Този телефонен номер е вече зает", + "Failed to verify email address: make sure you clicked the link in the email": "Неуспешно потвърждаване на имейл адреса: уверете се, че сте кликнали върху връзката в имейла", + "The platform you're on": "Платформата, която използвате", + "The version of Riot.im": "Версията на Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Независимо дали сте влезли с профила си или не (не записваме Вашето потребителско име)", + "Your language of choice": "Вашият език по избор", + "Which officially provided instance you are using, if any": "Кой официално-предоставен сървър използвате, ако има такъв", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Дали използвате Richtext режим на Rich Text Editor", + "Your homeserver's URL": "Адресът на Вашия Home сървър", + "Your identity server's URL": "Адресът на Вашия сървър за самоличност", + "Analytics": "Статистика", + "The information being sent to us to help make Riot.im better includes:": "За да направим Riot по-добър, информацията изпратена до нас включва:", + "Call Failed": "Неуспешно повикване", + "Call": "Позвъни", + "Answer": "Отговори", + "You are already in a call.": "Вече сте в разговор.", + "VoIP is unsupported": "Не се поддържа VoIP", + "You cannot place VoIP calls in this browser.": "Не може да осъществите VoIP разговори в този браузър.", + "You cannot place a call with yourself.": "Не може да осъществите разговор със себе си.", + "Existing Call": "Съществуващ разговор", + "Conference calls are not supported in this client": "Групови разговори не се поддържат в тази програма", + "Conference calls are not supported in encrypted rooms": "Групови разговори не се поддържат в шифровани стаи", + "Warning!": "Внимание!", + "Conference calling is in development and may not be reliable.": "Груповите разговори са в процес на разработка и не са надеждни.", + "Review Devices": "Преглед на устройства", + "Failed to set up conference call": "Неуспешно осъществяване на групов разговор", + "Conference call failed.": "Неуспешен групов разговор.", + "The file '%(fileName)s' failed to upload": "Неуспешно качване на файл '%(fileName)s'", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Файлът '%(fileName)s' надхвърля ограничението на размера за качване на този Home сървър", + "Upload Failed": "Качването е неуспешно", + "PM": "PM", + "AM": "AM", + "Who would you like to add to this community?": "Кого бихте желали да добавите в тaзи общност?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Предупреждение: Всеки човек, който добавяте в дадена общност, ще бъде публично видим за знаещите идентификатора на общността", + "Invite new community members": "Покана на нови членове в общността", + "Name or matrix ID": "Име или matrix ID", + "Invite to Community": "Покани в общността", + "Which rooms would you like to add to this community?": "Кои стаи бихте желали да добавите в тази общност?", + "Show these rooms to non-members on the community page and room list?": "Показване на тези стаи на не-членове в страницата на общността и в списъка със стаи?", + "Add rooms to the community": "Добави стаи в общността", + "Room name or alias": "Име или псевдоним на стая", + "Add to community": "Добави в общност", + "Failed to invite the following users to %(groupId)s:": "Следните потребители не могат да бъдат поканени в %(groupId)s:", + "Failed to invite users to community": "Потребителите не могат да бъдат поканени в общността", + "Failed to invite users to %(groupId)s": "Потребителите не могат да бъдат поканени в %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Следните стаи не могат да бъдат добавени в %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot няма разрешение да Ви изпраща известия - моля проверете вашите настройки на браузъра", + "Riot was not given permission to send notifications - please try again": "Riot не е получил разрешение да изпраща известия - моля опитайте отново", + "Unable to enable Notifications": "Неупешно включване на известия", + "This email address was not found": "Този имейл адрес не беше открит", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Изглежда вашият имейл адрес не може да се асоциира с Matrix ID на този Home сървър.", + "Default": "По подразбиране", + "Restricted": "Ограничен", + "Moderator": "Модератор", + "Admin": "Администратор", + "Start a chat": "Започване на чат", + "Who would you like to communicate with?": "С кой бихте желали да си комуникирате?", + "Email, name or matrix ID": "Имейл, име или matrix ID", + "Start Chat": "Започни чат", + "Invite new room members": "Покана на нови членове в стаята", + "Who would you like to add to this room?": "Кого бихте желали да добавите в тази стая?", + "Send Invites": "Изпрати покани", + "Failed to invite user": "Неуспешна покана на потребителя", + "Failed to invite": "Неуспешна покана", + "Failed to invite the following users to the %(roomName)s room:": "Следните потребителите не успяха да бъдат добавени в %(roomName)s:", + "You need to be logged in.": "Трябва да влезете в профила си.", + "You need to be able to invite users to do that.": "За да извършите това, трябва да имате право да добавяте потребители.", + "Unable to create widget.": "Неуспешно създаване на приспособление.", + "Failed to send request.": "Неуспешно изпращане на заявката.", + "This room is not recognised.": "Стаята не е разпозната.", + "Power level must be positive integer.": "Нивото на достъп трябва да бъде позитивно число.", + "Call Anyway": "Позвъни въпреки това", + "Answer Anyway": "Отговори въпреки това", + "Call Timeout": "Изтекло време за повикване", + "The remote side failed to pick up": "Отсрещната страна не успя да отговори", + "Unable to capture screen": "Неуспешно заснемане на екрана", + "You are not in this room.": "Не сте в тази стая.", + "You do not have permission to do that in this room.": "Нямате достъп да направите това в тази стая.", + "Missing room_id in request": "Липсва room_id в заявката", + "Room %(roomId)s not visible": "Стая %(roomId)s не е видима", + "Missing user_id in request": "Липсва user_id в заявката", + "/ddg is not a command": "/ddg не е команда", + "To use it, just wait for autocomplete results to load and tab through them.": "За използване, изчакайте зареждането на списъка с предложения и изберете от него.", + "Unrecognised room alias:": "Непознат псевдоним на стая:", + "Ignored user": "Игнориран потребител", + "You are now ignoring %(userId)s": "Вече игнорирате %(userId)s", + "Unignored user": "Неигнориран потребител", + "You are no longer ignoring %(userId)s": "Вече не игнорирате %(userId)s", + "Device already verified!": "Устройството е вече потвърдено!", + "WARNING: Device already verified, but keys do NOT MATCH!": "ВНИМАНИЕ: Устройстовото е потвърдено, но ключовете не съвпадат!", + "Verified key": "Потвърден ключ", + "Unrecognised command:": "Неразпозната команда:", + "Reason": "Причина", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s прие поканата за %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s прие поканата.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s заяви VoIP групов разговор.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s покани %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s блокира %(targetName)s.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s смени своето име на %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s си сложи име %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s премахна своето име (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s премахна своята профилна снимка.", + "%(senderName)s changed their profile picture.": "%(senderName)s промени своята профилна снимка.", + "%(senderName)s set a profile picture.": "%(senderName)s зададе снимка на профила си.", + "VoIP conference started.": "Започна VoIP групов разговор.", + "%(targetName)s joined the room.": "%(targetName)s се присъедини към стаята.", + "VoIP conference finished.": "Груповият разговор приключи.", + "%(targetName)s rejected the invitation.": "%(targetName)s отхвърли поканата.", + "%(targetName)s left the room.": "%(targetName)s напусна стаята.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s отблокира %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s изгони %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s оттегли поканата си за %(targetName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s смени темата на \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s премахна името на стаята.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s промени името на стаята на %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s изпрати снимка.", + "Someone": "Някой", + "(not supported by this browser)": "(не се поддържа от този браузър)", + "%(senderName)s answered the call.": "%(senderName)s отговори на повикването.", + "(no answer)": "(няма отговор)", + "(unknown failure: %(reason)s)": "(неизвестна грешка: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s прекрати разговора.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s започна %(callType)s разговор.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s изпрати покана на %(targetDisplayName)s да се присъедини към стаята.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s направи бъдещата история на стаята видима за всички членове, от момента на поканването им в нея.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s направи бъдещата история на стаята видима за всички членове, от момента на присъединяването им в нея.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s направи бъдещата история на стаята видима за всички членове в нея.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s направи бъдещата история на стаята видима за всеки.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s направи бъдещата история на стаята видима по непознат начин (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s включи шифроване от край до край (алгоритъм %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s от %(fromPowerLevel)s на %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s смени нивото на достъп на %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s смени закачените съобщения за стаята.", + "%(widgetName)s widget modified by %(senderName)s": "Приспособлението %(widgetName)s беше променено от %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "Приспособлението %(widgetName)s беше добавено от %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Приспособлението %(widgetName)s беше премахнато от %(senderName)s", + "%(displayName)s is typing": "%(displayName)s пише", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s и %(count)s други пишат", + "one": "%(names)s и още един човек пишат" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s и %(lastPerson)s пишат", + "Failure to create room": "Неуспешно създаване на стая", + "Server may be unavailable, overloaded, or you hit a bug.": "Сървърът може би е претоварен, недостъпен или се натъкнахте на проблем.", + "Send anyway": "Изпрати въпреки това", + "Unnamed Room": "Стая без име", + "Your browser does not support the required cryptography extensions": "Вашият браузър не поддържа необходимите разширения за шифроване", + "Not a valid Riot keyfile": "Невалиден файл с ключ за Riot", + "Authentication check failed: incorrect password?": "Неуспешна автентикация: неправилна парола?", + "Failed to join room": "Неуспешно присъединяване към стаята", + "Message Pinning": "Функция за закачане на съобщения", + "Disable Emoji suggestions while typing": "Изключване на предложенията за емотиконите при писане", + "Use compact timeline layout": "Използване на компактно оформление за списъка със съобщения", + "Hide removed messages": "Скриване на премахнати съобщения", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Скриване на съобщения за присъединяване/напускане (не засяга покани/изгонвания/блокирания)", + "Hide avatar changes": "Скриване на информацията за промените на аватара", + "Hide display name changes": "Скриване на информацията за промените на името", + "Hide read receipts": "Скриване на потвържденията за прочитане на съобщение", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Показване на времето в 12-часов формат (напр. 2:30pm)", + "Always show message timestamps": "Винаги показвай часа на съобщението", + "Autoplay GIFs and videos": "Автоматично възпроизвеждане на GIF-файлове и видеа", + "Enable automatic language detection for syntax highlighting": "Включване на автоматично разпознаване на език за подчертаване на синтаксиса", + "Disable big emoji in chat": "Изключване на големи емотикони в чата", + "Don't send typing notifications": "Не показвай на другите, че в момента пиша", + "Automatically replace plain text Emoji": "Автоматично откриване и заместване на емотикони в текста", + "Mirror local video feed": "Показвай ми огледално моя видео образ", + "Disable Peer-to-Peer for 1:1 calls": "Изключване на Peer-to-Peer в 1:1 разговор", + "Never send encrypted messages to unverified devices from this device": "Никога не изпращай шифровани съобщения от това устройство до непотвърдени устройства", + "Never send encrypted messages to unverified devices in this room from this device": "Никога не изпращай шифровани съобщения от това устройство до непотвърдени устройства в тази стая", + "Enable inline URL previews by default": "Включване по подразбиране на URL прегледи", + "Enable URL previews for this room (only affects you)": "Включване на URL прегледи за тази стая (засяга само Вас)", + "Enable URL previews by default for participants in this room": "Включване по подразбиране на URL прегледи за участници в тази стая", + "Room Colour": "Цвят на стая", + "Active call (%(roomName)s)": "Активен разговор (%(roomName)s)", + "unknown caller": "повикване от непознат", + "Incoming voice call from %(name)s": "Входящо гласово повикване от %(name)s", + "Incoming video call from %(name)s": "Входящо видео повикване от %(name)s", + "Incoming call from %(name)s": "Входящо повикване от %(name)s", + "Decline": "Откажи", + "Accept": "Приеми", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Съобщение е изпратено до +%(msisdn)s. Моля, въведете кода за потвърждение, което то съдържа", + "Incorrect verification code": "Неправилен код за потвърждение", + "Enter Code": "Въведи код", + "Submit": "Изпрати", + "Phone": "Телефон", + "Add phone number": "Добави номер", + "Add": "Добави", + "Failed to upload profile picture!": "Неуспешно качване на профилна снимка!", + "Upload new:": "Качи нов:", + "No display name": "Няма име", + "New passwords don't match": "Новите пароли не съвпадат", + "Passwords can't be empty": "Полето с парола не може да е празно", + "Export E2E room keys": "Експортирай E2E ключове за стая", + "Do you want to set an email address?": "Искате ли да зададете имейл адрес?", + "Current password": "Текуща парола", + "Password": "Парола", + "New Password": "Нова парола", + "Confirm password": "Потвърждаване на парола", + "Change Password": "Смяна на парола", + "Your home server does not support device management.": "Вашият Home сървър не поддръжа управление на устройства.", + "Unable to load device list": "Неуспешно зареждане на списък с устройства", + "Authentication": "Автентикация", + "Delete %(count)s devices": { + "other": "Изтрий %(count)s устройства", + "one": "Изтрий устройство" + }, + "Device ID": "Идентификатор на устройство", + "Device Name": "Име на устройство", + "Last seen": "Последно видян", + "Select devices": "Избери устройства", + "Failed to set display name": "Неуспешно задаване на име", + "Disable Notifications": "Изключване на известия", + "Enable Notifications": "Включване на известия", + "Cannot add any more widgets": "Не могат да се добавят повече приспособления", + "The maximum permitted number of widgets have already been added to this room.": "Максимално разрешеният брой приспособления е вече добавен към тази стая.", + "Add a widget": "Добави приспособление", + "Drop File Here": "Пусни файла тук", + "Drop file here to upload": "Пуснете файла тук, за да се качи", + " (unsupported)": " (не се поддържа)", + "Join as voice or video.": "Присъединете се с глас или с видео.", + "Ongoing conference call%(supportedText)s.": "Текущ групов разговор %(supportedText)s.", + "%(senderName)s sent an image": "%(senderName)s изпрати снимка", + "%(senderName)s sent a video": "%(senderName)s изпрати видео", + "%(senderName)s uploaded a file": "%(senderName)s качи файл", + "Options": "Настройки", + "Undecryptable": "Невъзможно разшифроване", + "Encrypted by a verified device": "Шифровано от потвърдено устройство", + "Encrypted by an unverified device": "Шифровано от непотвърдено устройство", + "Unencrypted message": "Нешифровано съобщение", + "Please select the destination room for this message": "Моля, изберете стаята, в която искате да изпратите това съобщение", + "Blacklisted": "В черния списък", + "Verified": "Потвърдено", + "Unverified": "Непотвърдено", + "device id: ": "идентификатор на устройството: ", + "Disinvite": "Отмени поканата", + "Kick": "Изгони", + "Disinvite this user?": "Отмени поканата към този потребител?", + "Kick this user?": "Изгони този потребител?", + "Failed to kick": "Неуспешно изгонване", + "Unban": "Отблокирай", + "Ban": "Блокирай", + "Unban this user?": "Отблокирай този потребител?", + "Ban this user?": "Блокирай този потребител?", + "Failed to ban user": "Неуспешно блокиране на потребителя", + "Failed to mute user": "Неуспешно заглушаване на потребителя", + "Failed to toggle moderator status": "Неуспешна промяна на статуса на модератора", + "Failed to change power level": "Неуспешна промяна на нивото на достъп", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "След като си намалите нивото на достъп, няма да можете да възвърнете тази промяна. Ако сте последния потребител с привилегии в тази стая, ще бъде невъзможно да възвърнете привилегии си.", + "Are you sure?": "Сигурни ли сте?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Няма да можете да възвърнете тази промяна, тъй като повишавате този потребител до същото ниво на достъп като Вашето.", + "No devices with registered encryption keys": "Няма устройства с регистрирани ключове за шифроване", + "Devices": "Устройства", + "Unignore": "Премахни игнорирането", + "Ignore": "Игнорирай", + "Mention": "Спомени", + "Direct chats": "Директни чатове", + "User Options": "Опции на потребителя", + "Invite": "Покани", + "Unmute": "Премахни заглушаването", + "Make Moderator": "Направи модератор", + "Admin Tools": "Инструменти на администратора", + "Level:": "Ниво:", + "and %(count)s others...": { + "other": "и %(count)s други...", + "one": "и още един..." + }, + "Invited": "Поканен", + "Filter room members": "Филтриране на членовете", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (ниво на достъп %(powerLevelNumber)s)", + "Attachment": "Прикачване", + "Upload Files": "Качи файлове", + "Are you sure you want to upload the following files?": "Сигурни ли сте, че искате да качите тези файлове?", + "Encrypted room": "Шифрована стая", + "Unencrypted room": "Нешифрована стая", + "Hangup": "Затвори", + "Voice call": "Гласово повикване", + "Video call": "Видео повикване", + "Upload file": "Качи файл", + "Show Text Formatting Toolbar": "Показване на лентата с инструменти за форматиране на текст", + "Send an encrypted reply…": "Изпрати шифрован отговор…", + "Send a reply (unencrypted)…": "Отговори (нешифрованo)…", + "Send an encrypted message…": "Изпрати шифровано съобщение…", + "Send a message (unencrypted)…": "Изпрати съобщение (нешифровано)…", + "You do not have permission to post to this room": "Нямате разрешение да публикувате в тази стая", + "Turn Markdown on": "Включи Markdown", + "Turn Markdown off": "Изключи Markdown", + "Hide Text Formatting Toolbar": "Скриване на лентата с инструменти за форматиране на текст", + "Server error": "Сървърна грешка", + "Server unavailable, overloaded, or something else went wrong.": "Сървърът е недостъпен, претоварен или нещо друго се обърка.", + "Command error": "Грешка в командата", + "bold": "удебелен", + "italic": "курсивен", + "strike": "задраскан", + "underline": "подчертан", + "code": "код", + "quote": "цитат", + "bullet": "списък", + "numbullet": "номериран списък", + "Markdown is disabled": "Markdown е изключен", + "Markdown is enabled": "Markdown е включен", + "No pinned messages.": "Няма закачени съобщения.", + "Loading...": "Зареждане...", + "Pinned Messages": "Закачени съобщения", + "%(duration)ss": "%(duration)sсек", + "%(duration)sm": "%(duration)sмин", + "%(duration)sh": "%(duration)sч", + "%(duration)sd": "%(duration)sд", + "Online for %(duration)s": "Онлайн от %(duration)s", + "Idle for %(duration)s": "Неактивен от %(duration)s", + "Offline for %(duration)s": "Офлайн от %(duration)s", + "Unknown for %(duration)s": "Неизвестен от %(duration)s", + "Idle": "Неактивен", + "Offline": "Офлайн", + "Unknown": "Неизвестен", + "Replying": "Отговаря", + "Seen by %(userName)s at %(dateTime)s": "Видяно от %(userName)s в %(dateTime)s", + "Failed to set avatar.": "Неуспешно задаване на профилна снимка.", + "Save": "Запази", + "(~%(count)s results)": { + "other": "(~%(count)s резултати)", + "one": "(~%(count)s резултат)" + }, + "Join Room": "Присъедини се към стаята", + "Upload avatar": "Качи профилна снимка", + "Remove avatar": "Премахни профилната снимка", + "Settings": "Настройки", + "Forget room": "Забрави стаята", + "Show panel": "Покажи панелa", + "Drop here to favourite": "За любим пуснeте тук", + "Drop here to tag direct chat": "Пуснете тук, за да означите директен чат", + "Drop here to restore": "Пуснете тук за възстановяване", + "Drop here to demote": "Пуснете тук за понижаване", + "Drop here to tag %(section)s": "Пуснете тук, за да означите като %(section)s", + "Failed to set direct chat tag": "Неуспешно означаване на директен чат", + "Press to start a chat with someone": "Натиснете , за да започнете чат с някого", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Все още не сте в нито една стая! Натиснете , за да направите такава или , за да прегледате директорията", + "Community Invites": "Покани за общност", + "Invites": "Покани", + "Favourites": "Любими", + "People": "Хора", + "Low priority": "Нисък приоритет", + "Historical": "Архив", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Не може да се потвърди, че адреса към който е изпратена тази покана е обвързан с акаунта Ви.", + "This invitation was sent to an email address which is not associated with this account:": "Поканата беше изпратена на имейл адрес, който не е свързан с този профил:", + "You may wish to login with a different account, or add this email to this account.": "Може да искате да влезете с друг профил или да добавите имейл адреса в този.", + "You have been invited to join this room by %(inviterName)s": "Вие сте поканен да се присъедините към тази стая от %(inviterName)s", + "Would you like to accept or decline this invitation?": "Желаете да приемете или да откажете тази покана?", + "Reason: %(reasonText)s": "Причина: %(reasonText)s", + "Rejoin": "Повторно присъединяване", + "You have been kicked from %(roomName)s by %(userName)s.": "Бяхте изгонен от %(roomName)s от %(userName)s.", + "You have been kicked from this room by %(userName)s.": "Бяхте изгонен от тази стая от %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "Бяхте блокиран в %(roomName)s от %(userName)s.", + "You have been banned from this room by %(userName)s.": "Бяхте блокиран в тази стая от %(userName)s.", + "This room": "В тази стая", + "%(roomName)s does not exist.": "%(roomName)s не съществува.", + "%(roomName)s is not accessible at this time.": "%(roomName)s не е достъпна към този момент.", + "You are trying to access %(roomName)s.": "Опитвате се да влезете в %(roomName)s.", + "You are trying to access a room.": "Опитвате се да влезете в стая.", + "Click here to join the discussion!": "Натиснете тук, за да се присъедините към дискусията!", + "This is a preview of this room. Room interactions have been disabled": "Това е преглед на стаята. Интеракции в нея са деактивирани", + "To change the room's avatar, you must be a": "За да смените снимката на стаята, трябва да бъдете", + "To change the room's name, you must be a": "За да смените името на стаята, трябва да бъдете", + "To change the room's main address, you must be a": "За да смените основния адрес на стаята, трябва да бъдете", + "To change the room's history visibility, you must be a": "За да смените видимостта на историята на стаята, трябва да бъдете", + "To change the permissions in the room, you must be a": "За да промените разрешенията в стаята, трябва да бъдете", + "To change the topic, you must be a": "За да смените темата, трябва да бъдете", + "To modify widgets in the room, you must be a": "За да промените приспособленията в стаята, трябва да бъдете", + "Failed to unban": "Неуспешно отблокиране", + "Banned by %(displayName)s": "Блокиран от %(displayName)s", + "Privacy warning": "Предупреждение за сигурност", + "Changes to who can read history will only apply to future messages in this room": "Промени по това кой може да чете историята ще се отнасят само за бъдещи съобщения в тази стая", + "The visibility of existing history will be unchanged": "Видимостта на историята до сега ще остане непроменена", + "End-to-end encryption is in beta and may not be reliable": "Шифроване от край до край е в бета версия и може да не е надеждно", + "Devices will not yet be able to decrypt history from before they joined the room": "Устройства все още не могат да разшифроват история от преди присъединяването към стая", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Веднъж включено, шифроването в стаята не може да бъде изключено (за сега)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Шифровани съобщения не са видими за клиенти, които все още не поддържат шифроване", + "Enable encryption": "Включване на шифроване", + "(warning: cannot be disabled again!)": "(внимание: не може да бъде изключено в последствие!)", + "Encryption is enabled in this room": "Шифроването е включено в тази стая", + "Encryption is not enabled in this room": "Шифроването не е включено в тази стая", + "Privileged Users": "Потребители с привилегии", + "No users have specific privileges in this room": "Никой няма специфични привилегии в тази стая", + "Banned users": "Блокирани потребители", + "This room is not accessible by remote Matrix servers": "Тази стая не е достъпна за далечни Matrix сървъри", + "Leave room": "Напусни стаята", + "Tagged as: ": "Етикет: ", + "To link to a room it must have an address.": "За да дадете линк към стаята, тя трябва да има адрес.", + "Guests cannot join this room even if explicitly invited.": "Гости не могат да се присъединят към тази стая, дори изрично поканени.", + "Click here to fix": "Натиснете тук за поправяне", + "Who can access this room?": "Кой има достъп до тази стая?", + "Only people who have been invited": "Само хора, които са били поканени", + "Anyone who knows the room's link, apart from guests": "Всеки, който знае адреса на стаята (освен гости)", + "Anyone who knows the room's link, including guests": "Всеки, който знае адреса на стаята (включително гости)", + "Publish this room to the public in %(domain)s's room directory?": "Публично публикуване на тази стая в директорията на %(domain)s?", + "Who can read history?": "Кой може да чете историята?", + "Anyone": "Всеки", + "Members only (since the point in time of selecting this option)": "Само членове (от момента на избиране на тази опция)", + "Members only (since they were invited)": "Само членове (от момента, в който те са поканени)", + "Members only (since they joined)": "Само членове (от момента, в който са се присъединили)", + "Permissions": "Разрешения", + "The default role for new room members is": "По подразбиране ролята за нови членове в стаята е", + "To send messages, you must be a": "За да изпращате съобщения, трябва да бъдете", + "To invite users into the room, you must be a": "За да поканите потребители в стаята, трябва да бъдете", + "To configure the room, you must be a": "За да конфигурирате стаята, трябва да бъдете", + "To kick users, you must be a": "За да изгоните потребител, трябва да бъдете", + "To ban users, you must be a": "За да блокирате потребител, трябва да бъдете", + "To remove other users' messages, you must be a": "За да премахнете съобщения на друг потребител, трябва да бъдете", + "To send events of type , you must be a": "За да изпратите събития от вида , трябва да бъдете", + "Advanced": "Разширени", + "This room's internal ID is": "Вътрешният идентификатор на тази стая е", + "Add a topic": "Добавете тема", + "Jump to first unread message.": "Отиди до първото непрочетено съобщение.", + "Scroll to unread messages": "Отиди до непрочетените съобщения", + "Invalid alias format": "Невалиден формат на псевдонима", + "'%(alias)s' is not a valid format for an alias": "%(alias)s не е валиден формат на псевдоним", + "Invalid address format": "Невалиден формат на адреса", + "'%(alias)s' is not a valid format for an address": "%(alias)s не е валиден формат на адрес", + "not specified": "неопределен", + "not set": "незададен", + "Remote addresses for this room:": "Далечни адреси на тази стая:", + "Addresses": "Адреси", + "The main address for this room is": "Основният адрес на тази стая е", + "Local addresses for this room:": "Локалните адреси на тази стая са:", + "This room has no local addresses": "Тази стая няма локални адреси", + "New address (e.g. #foo:%(localDomain)s)": "Нов адрес (напр. #foo:%(localDomain)s)", + "Invalid community ID": "Невалиден идентификатор на общност", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' е невалиден идентификатор на общност", + "Flair": "Значка", + "Showing flair for these communities:": "Показване на значки за тези общности:", + "This room is not showing flair for any communities": "Тази стая не показва значки за нито една общност", + "New community ID (e.g. +foo:%(localDomain)s)": "Нов идентификатор на общност (напр. +foo:%(localDomain)s)", + "You have enabled URL previews by default.": "Вие сте включил URL прегледи по подразбиране.", + "You have disabled URL previews by default.": "Вие сте изключил URL прегледи по подразбиране.", + "URL previews are enabled by default for participants in this room.": "URL прегледи са включени по подразбиране за участниците в тази стая.", + "URL previews are disabled by default for participants in this room.": "URL прегледи са изключени по подразбиране за участниците в тази стая.", + "URL Previews": "URL прегледи", + "Error decrypting audio": "Грешка при разшифроване на аудио файл", + "Error decrypting attachment": "Грешка при разшифроване на прикачен файл", + "Decrypt %(text)s": "Разшифровай %(text)s", + "Download %(text)s": "Изтегли %(text)s", + "(could not connect media)": "(неуспешно свързване на медийните устройства)", + "Usage": "Употреба", + "Remove from community": "Премахни от общността", + "Disinvite this user from community?": "Оттегляне на поканата към този потребител от общността?", + "Remove this user from community?": "Премахване на този потребител от общността?", + "Failed to remove user from community": "Неуспешно премахване на потребителя от тази общност", + "Filter community members": "Филтриране на членовете", + "Removing a room from the community will also remove it from the community page.": "Премахване на стая от общността ще бъде също премахната от страницата с общността.", + "Failed to remove room from community": "Неуспешно премахване на стаята от общността", + "Only visible to community members": "Видимо само за членове на общността", + "Filter community rooms": "Филтрирай стаи на общността", + "Community IDs cannot be empty.": "Идентификаторите на общността не могат да бъдат празни.", + "Create Community": "Създай общност", + "Community Name": "Име на общност", + "Community ID": "Идентификатор на общност", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML за страница на Вашата общност

\n

\n Използвайте дългото описание, за да въведете нови членове в общността, \n или да разпространите важни връзки\n

\n

\n Можете дори да използвате 'img' тагове\n

\n", + "Add rooms to the community summary": "Добавете стаи към обобщението на общността", + "Add users to the community summary": "Добавете потребители към обобщението на общността", + "Failed to update community": "Неуспешно обновяване на общността", + "Leave Community": "Напусни общността", + "Community Settings": "Настройки на общността", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Тези стаи са показани на членове на общността на страницата на общността. Членовете на общността могат да се присъединят към стаите като натиснат върху тях.", + "%(inviter)s has invited you to join this community": "%(inviter)s Ви покани да се присъедините към тази общност", + "You are an administrator of this community": "Вие сте администратор на тази общност", + "You are a member of this community": "Вие сте член на тази общност", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Вашата общност няма дълго описание - HTML страница, която да се показва на членовете на общността.
Натиснете тук, за да отворите настройките и да създадете такова!", + "Community %(groupId)s not found": "Общност %(groupId)s не е намерена", + "Create a new community": "Създаване на нова общност", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Създайте общност, за да групирате потребители и стаи! Изградете персонализирана начална страница, за да маркирате своето пространство в Matrix Вселената.", + "Unknown (user, device) pair:": "Непозната двойка (потребител, устройство):", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Подписващият ключ, който сте предоставили, съвпада с подписващия ключ, който сте получили от устройството %(deviceId)s на %(userId)s. Устройството е маркирано като потвърдено.", + "Hide avatars in user and room mentions": "Скриване на аватара на потребители и стаи при споменаването им", + "Jump to message": "Отиди до съобщението", + "Jump to read receipt": "Отиди до потвърждението за прочитане", + "Revoke Moderator": "Премахване на правата на модератора", + "You should not yet trust it to secure data": "Все още не трябва да се доверявате на това, че ще защити Вашите данни", + "Invalid file%(extra)s": "Невалиден файл%(extra)s", + "Error decrypting image": "Грешка при разшифроване на снимка", + "Error decrypting video": "Грешка при разшифроване на видео", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s промени аватара на %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s премахна аватара на стаята.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s промени аватара на стаята на ", + "Copied!": "Копирано!", + "Failed to copy": "Неуспешно копиране", + "Add an Integration": "Добавяне на интеграция", + "Removed or unknown message type": "Премахнато или неизвестен тип съобщение", + "Message removed by %(userId)s": "Съобщението е премахнато от %(userId)s", + "Message removed": "Съобщението е премахнато", + "This Home Server would like to make sure you are not a robot": "Този Home сървър би искал да се увери, че не сте робот", + "Sign in with CAS": "Влез с CAS", + "To continue, please enter your password.": "За да продължите, моля, въведете своята парола.", + "Password:": "Парола:", + "An email has been sent to %(emailAddress)s": "Имейл беше изпратен на %(emailAddress)s", + "Please check your email to continue registration.": "Моля, проверете имейла си, за да продължите регистрацията.", + "Token incorrect": "Неправителен тоукън", + "A text message has been sent to %(msisdn)s": "Текстово съобщение беше изпратено на %(msisdn)s", + "Please enter the code it contains:": "Моля, въведете кода, който то съдържа:", + "Start authentication": "Започни автентикация", + "Username on %(hs)s": "Потребителско име на %(hs)s", + "User name": "Потребителско име", + "Mobile phone number": "Мобилен номер", + "Forgot your password?": "Забравена парола?", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Sign in with": "Влизане с", + "Email address": "Имейл адрес", + "Sign in": "Вход", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ако не посочите имейл адрес, няма да бъде възможно да възстановите Вашата парола. Сигурни ли сте?", + "Email address (optional)": "Имейл адрес (по избор)", + "You are registering with %(SelectedTeamName)s": "Регистрирате се с %(SelectedTeamName)s", + "Mobile phone number (optional)": "Мобилен номер (по избор)", + "Default server": "Сървър по подразбиране", + "Custom server": "Потребителски сървър", + "Home server URL": "Адрес на Home сървър", + "Identity server URL": "Адрес на сървър за самоличност", + "What does this mean?": "Какво означава това?", + "Failed to withdraw invitation": "Неуспешно оттегляне на поканата", + "Flair will appear if enabled in room settings": "Значката ще се покаже, ако е включена в настройките на стаята", + "Flair will not appear": "Значката няма да се покаже", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Сигурни ли сте, че искате да премахнете '%(roomName)s' от %(groupId)s?", + "Failed to remove '%(roomName)s' from %(groupId)s": "Неуспешно премахване на '%(roomName)s' от %(groupId)s", + "Something went wrong!": "Нещо се обърка!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Видимостта на '%(roomName)s' в %(groupId)s не може да бъде обновена.", + "Visibility in Room List": "Видимост в списъка със стаи", + "Visible to everyone": "Видимо за всеки", + "Something went wrong when trying to get your communities.": "Нещо се обърка при зареждането на Вашите общности.", + "Display your community flair in rooms configured to show it.": "Показване на значката на общността в стаи, конфигурирани да я показват.", + "You're not currently a member of any communities.": "Към момента не сте член на нито една общност.", + "Unknown Address": "Неизвестен адрес", + "NOTE: Apps are not end-to-end encrypted": "ЗАБЕЛЕЖКА: Приложенията не са шифровани от край до край", + "Do you want to load widget from URL:": "Искате ли да заредите приспособление от URL адреса:", + "Allow": "Позволи", + "Delete Widget": "Изтриване на приспособление", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Изтриването на приспособление го премахва за всички потребители в тази стая. Сигурни ли сте, че искате да изтриете това приспособление?", + "Delete widget": "Изтрий приспособлението", + "Revoke widget access": "Премахни достъпа на приспособлението", + "Minimize apps": "Минимизирай приложенията", + "Create new room": "Създай нова стая", + "Unblacklist": "Премахни от черния списък", + "Blacklist": "Добави в черен списък", + "Unverify": "Махни потвърждението", + "Verify...": "Потвърди...", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Вашето непотвърдено устройство '%(displayName)s' изисква ключове за шифроване.", + "I have verified my email address": "Потвърдих имейл адреса си", + "NOT verified": "НЕ е потвърдено", + "verified": "потвърдено", + "No results": "Няма резултати", + "Delete": "Изтрий", + "Communities": "Общности", + "Home": "Начална страница", + "Integrations Error": "Грешка при интеграциите", + "Could not connect to the integration server": "Неуспешно свързване със сървъра с интеграции", + "Manage Integrations": "Управление на интеграциите", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)sсе присъединиха %(count)s пъти", + "one": "%(severalUsers)sсе присъединиха" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)sсе присъедини %(count)s пъти", + "one": "%(oneUser)sсе присъедини" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)sнапуснаха %(count)s пъти", + "one": "%(severalUsers)sнапуснаха" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)sнапусна %(count)s пъти", + "one": "%(oneUser)sнапусна" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)sсе присъединиха и напуснаха %(count)s пъти", + "one": "%(severalUsers)sсе присъединиха и напуснаха" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)sсе присъедини и напусна %(count)s пъти", + "one": "%(oneUser)sсе присъедини и напусна" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)sнапуснаха и се присъединиха отново %(count)s пъти", + "one": "%(severalUsers)sнапуснаха и се присъединиха отново" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)sнапусна и се присъедини отново %(count)s пъти", + "one": "%(oneUser)sнапусна и се присъедини отново" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)sотхвърлиха своите покани %(count)s пъти", + "one": "%(severalUsers)sотхвърлиха своите покани" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)sотхвърли своята покана %(count)s пъти", + "one": "%(oneUser)sотхвърли своята покана" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)sоттеглиха своите покани %(count)s пъти", + "one": "%(severalUsers)sоттеглиха своите покани" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)sоттегли своята покана %(count)s пъти", + "one": "%(oneUser)sоттегли своята покана" + }, + "were invited %(count)s times": { + "other": "бяха поканени %(count)s пъти", + "one": "бяха поканени" + }, + "was invited %(count)s times": { + "other": "беше поканен %(count)s пъти", + "one": "беше поканен" + }, + "were banned %(count)s times": { + "other": "бяха блокирани %(count)s пъти", + "one": "бяха блокирани" + }, + "was banned %(count)s times": { + "other": "беше блокиран %(count)s пъти", + "one": "беше блокиран" + }, + "were unbanned %(count)s times": { + "other": "бяха отблокирани %(count)s пъти", + "one": "бяха отблокирани" + }, + "was unbanned %(count)s times": { + "other": "беше отблокиран %(count)s пъти", + "one": "беше отблокиран" + }, + "were kicked %(count)s times": { + "other": "бяха изгонени %(count)s пъти", + "one": "бяха изгонени" + }, + "was kicked %(count)s times": { + "other": "беше изгонен %(count)s пъти", + "one": "беше изгонен" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)sсмениха своето име %(count)s пъти", + "one": "%(severalUsers)sсмениха своето име" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)sсмени своето име %(count)s пъти", + "one": "%(oneUser)sсмени своето име" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)sсмениха своята профилна снимка %(count)s пъти", + "one": "%(severalUsers)sсмениха своята профилна снимка" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)sсмени своята профилна снимка %(count)s пъти", + "one": "%(oneUser)sсмени своята профилна снимка" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s и %(count)s други", + "one": "%(items)s и още един" + }, + "%(items)s and %(lastItem)s": "%(items)s и %(lastItem)s", + "collapse": "свий", + "expand": "разшири", + "Custom of %(powerLevel)s": "Персонализирано със стойност %(powerLevel)s", + "Custom level": "Персонализирано ниво", + "Custom": "Персонализиран", + "In reply to ": "В отговор на ", + "Room directory": "Директория със стаи", + "Start chat": "Започни чат", + "And %(count)s more...": { + "other": "И %(count)s други..." + }, + "ex. @bob:example.com": "напр. @bob:example.com", + "Add User": "Добави потребител", + "Matrix ID": "Matrix ID", + "Matrix Room ID": "Идентификатор на стаята", + "email address": "имейл адрес", + "Try using one of the following valid address types: %(validTypesList)s.": "Опитайте се да използвате един от следните видове валидни адреси: %(validTypesList)s.", + "You have entered an invalid address.": "Въвели сте невалиден адрес.", + "Create a new chat or reuse an existing one": "Създаване на нов чат или повторно използване на съществуващ", + "Start new chat": "Започни нов чат", + "You already have existing direct chats with this user:": "Вече имате налични директни чатове с този потребител:", + "Start chatting": "Започнете чата", + "Click on the button below to start chatting!": "Натиснете бутона по-долу, за да започнете чата!", + "Start Chatting": "Започнете чата", + "Confirm Removal": "Потвърдете премахването", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Идентификаторите на общността могат да съдържат само a-z, 0-9, или '=_-./'", + "Something went wrong whilst creating your community": "Нещо се обърка по време на създаването на Вашата общност", + "Example": "Пример", + "example": "пример", + "Create": "Създай", + "Create Room": "Създай стая", + "Room name (optional)": "Име на стая (по избор)", + "Advanced options": "Разширени настройки", + "Block users on other matrix homeservers from joining this room": "Не позволявай на потребители от други matrix Home сървъри да се присъединяват към тази стая", + "This setting cannot be changed later!": "Тази настройка не може да бъде променена по-късно!", + "Unknown error": "Неизвестна грешка", + "Incorrect password": "Неправилна парола", + "Deactivate Account": "Деактивация на профила", + "Deactivate my account": "Деактивирай моя профил", + "Device name": "Име на устройство", + "Device key": "Ключ на устройство", + "In future this verification process will be more sophisticated.": "В бъдеще този процес на потвърждение ще бъде по-лесен.", + "Verify device": "Потвърди устройството", + "Start verification": "Започни потвърждението", + "Verification Pending": "Очакване на потвърждение", + "Verification": "Потвърждение", + "I verify that the keys match": "Потвърждавам, че ключовете съвпадат", + "An error has occurred.": "Възникна грешка.", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Добавихте ново устройство '%(displayName)s', което изисква ключове за шифроване.", + "Share without verifying": "Сподели без потвърждение", + "Ignore request": "Игнорирай поканата", + "Loading device info...": "Зареждане на информация за устройството...", + "Encryption key request": "Заявка за ключ за шифроване", + "Unable to restore session": "Неуспешно възстановяване на сесията", + "Invalid Email Address": "Невалиден имейл адрес", + "This doesn't appear to be a valid email address": "Това не изглежда да е валиден имейл адрес", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Моля, проверете своя имейл адрес и натиснете връзката, която той съдържа. След като направите това, натиснете продължи.", + "Unable to add email address": "Неуспешно добавяне на имейл адрес", + "Unable to verify email address.": "Неуспешно потвърждение на имейл адрес.", + "Unable to accept invite": "Неуспешно приемане на поканата", + "Unable to reject invite": "Неуспешно отхвърляне на поканата", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Беше направен опит да се зареди конкретна точка в хронологията на тази стая, но не я намери.", + "Unable to remove contact information": "Неуспешно премахване на информацията за контакти", + "This will allow you to reset your password and receive notifications.": "Това ще Ви позволи да възстановите Вашата парола и да получавате известия.", + "Skip": "Пропусни", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Потребителските имена могат да съдържат само букви, цифри, точки, тирета и долни черти.", + "Username not available": "Потребителското име е заето", + "Username invalid: %(errMessage)s": "Невалидно потребителско име: %(errMessage)s", + "An error occurred: %(error_string)s": "Възникна грешка: %(error_string)s", + "Username available": "Потребителското име не е заето", + "To get started, please pick a username!": "За да започнете, моля изберете потребителско име!", + "If you already have a Matrix account you can log in instead.": "Ако вече имате Matrix профил, можете да влезете с него.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "В момента Вие блокирате непотвърдени устройства; за да изпращате съобщения до тези устройства, трябва да ги потвърдите.", + "Room contains unknown devices": "Стаята съдържа непознати устройства", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" съдържа устройства, който не сте виждали до сега.", + "Unknown devices": "Непознати устройства", + "Private Chat": "Личен чат", + "Public Chat": "Публичен чат", + "Alias (optional)": "Псевдоним (по избор)", + "Name": "Име", + "Topic": "Тема", + "Make this room private": "Направи тази стая лична", + "Share message history with new users": "Сподели историята на съобщенията с нови потребители", + "Encrypt room": "Шифровай стаята", + "You must register to use this functionality": "Трябва да се регистрирате, за да използвате тази функционалност", + "You must join the room to see its files": "Трябва да се присъедините към стаята, за да видите файловете, които съдържа", + "There are no visible files in this room": "Няма видими файлове в тази стая", + "Which rooms would you like to add to this summary?": "Кои стаи бихте искали да добавите в това обобщение?", + "Add to summary": "Добави в обобщението", + "Failed to add the following rooms to the summary of %(groupId)s:": "Неуспешно добавяне на следните стаи в обобщението на %(groupId)s:", + "Add a Room": "Добавяне на стая", + "Failed to remove the room from the summary of %(groupId)s": "Неуспешно премахване на стаята от обобщението на %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Стаята '%(roomName)s' не може да бъде премахната от обобщението.", + "Who would you like to add to this summary?": "Кого бихте желали да добавите в това обобщение?", + "Failed to add the following users to the summary of %(groupId)s:": "Неуспешно добавяне на следните потребители в обобщението на %(groupId)s:", + "Add a User": "Добавяне на потребител", + "Failed to remove a user from the summary of %(groupId)s": "Неуспешно премахване на потребител от обобщението на %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Потребителят '%(displayName)s' не може да бъде премахнат от обобщението.", + "Failed to upload image": "Неуспешно качване на снимката", + "Leave %(groupName)s?": "Напускане на %(groupName)s?", + "Featured Rooms:": "Препоръчани стаи:", + "Featured Users:": "Препоръчани потребители:", + "Long Description (HTML)": "Дълго описание (HTML)", + "Description": "Описание", + "This Home server does not support communities": "Този Home сървър не поддържа общности", + "Failed to load %(groupId)s": "Неуспешно зареждане на %(groupId)s", + "Reject invitation": "Отхвърли поканата", + "Are you sure you want to reject the invitation?": "Сигурни ли сте, че искате да отхвърлите поканата?", + "Failed to reject invitation": "Неуспешно отхвърляне на поканата", + "This room is not public. You will not be able to rejoin without an invite.": "Тази стая не е публична. Няма да можете да се присъедините отново без покана.", + "Are you sure you want to leave the room '%(roomName)s'?": "Сигурни ли сте, че искате да напуснете стаята '%(roomName)s'?", + "Failed to leave room": "Неуспешно напускане на стаята", + "Old cryptography data detected": "Бяха открити стари криптографски данни", + "Your Communities": "Вашите общности", + "Failed to fetch avatar URL": "Неуспешно изтегляне от адреса на аватара", + "Signed Out": "Излязохте", + "For security, this session has been signed out. Please sign in again.": "Поради мерки за сигурност, тази сесия е прекратена. Моля, влезте отново.", + "Logout": "Излез", + "Sign out": "Изход", + "Error whilst fetching joined communities": "Грешка при извличането на общности, към които сте присъединени", + "You have no visible notifications": "Нямате видими известия", + "Scroll to bottom of page": "Отиди до края на страницата", + "Message not sent due to unknown devices being present": "Съобщението не е изпратено поради наличието на непознати устройства", + "Show devices, send anyway or cancel.": "Покажи устройствата, изпрати въпреки това или откажи.", + "%(count)s of your messages have not been sent.": { + "other": "Някои от Вашите съобщение не бяха изпратени.", + "one": "Вашето съобщение не беше изпратено." + }, + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Изпрати всички отново или откажи всички сега. Също така може да изберете индивидуални съобщения, които да изпратите отново или да откажете.", + "one": "Изпрати съобщението отново или откажи съобщението сега." + }, + "Connectivity to the server has been lost.": "Връзката със сървъра е изгубена.", + "Sent messages will be stored until your connection has returned.": "Изпратените съобщения ще бъдат запаметени докато връзката Ви се възвърне.", + "%(count)s new messages": { + "other": "%(count)s нови съобщения", + "one": "%(count)s ново съобщение" + }, + "Active call": "Активен разговор", + "Use with caution": "Внимавайте при използване", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Няма никой друг тук! Поканете други или изключете предупреждението, че стаята е празна?", + "You seem to be uploading files, are you sure you want to quit?": "Изглежда, че качвате файлове. Сигурни ли сте, че искате да затворите програмата?", + "You seem to be in a call, are you sure you want to quit?": "Изглежда, че сте в разговор. Сигурни ли сте, че искате да излезете от програмата?", + "Failed to upload file": "Неуспешно качване на файлове", + "Server may be unavailable, overloaded, or the file too big": "Сървърът може би е недостъпен, претоварен или файлът е твърде голям", + "Search failed": "Търсенето е неуспешно", + "Server may be unavailable, overloaded, or search timed out :(": "Сървърът може би е недостъпен, претоварен или времето за търсене изтече :(", + "No more results": "Няма повече резултати", + "Unknown room %(roomId)s": "Неизвестна стая %(roomId)s", + "Room": "Стая", + "Failed to save settings": "Неуспешно запазване на настройките", + "Failed to reject invite": "Неуспешно отхвърляне на поканата", + "Reject all %(invitedRooms)s invites": "Отхвърли всички %(invitedRooms)s покани", + "Fill screen": "Запълни екрана", + "Click to unmute video": "Натиснете, за да включите звука на видеото", + "Click to mute video": "Натиснете, за да заглушите видеото", + "Click to unmute audio": "Натиснете, за да включите звука", + "Click to mute audio": "Натиснете, за да заглушите звука", + "Clear filter": "Изчисти филтър", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Беше направен опит да се зареди конкретна точка в хронологията на тази стая, но нямате разрешение да разгледате въпросното съобщение.", + "Failed to load timeline position": "Неуспешно зареждане на позицията в хронологията", + "Uploading %(filename)s and %(count)s others": { + "other": "Качване на %(filename)s и %(count)s други", + "zero": "Качване на %(filename)s", + "one": "Качване на %(filename)s и %(count)s друг" + }, + "Light theme": "Светла тема", + "Dark theme": "Тъмна тема", + "Status.im theme": "Тема Status.im", + "Can't load user settings": "Потребителските настройки не могат да бъдат заредени", + "Server may be unavailable or overloaded": "Сървърът може би е недостъпен или претоварен", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "За сигурност, излизането ще изтрие ключовете за шифроване от край до край от този браузър. Ако искате да бъде възможно да разшифровате Вашата история на разговорите от бъдещи Riot сесии, моля експортирайте Вашите ключове за стаите.", + "Success": "Успешно", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Вашата парола беше успешно сменена. Няма да получавате известия на други устройства, докато не влезете отново в профила си от тях", + "Remove Contact Information?": "Премахване на информацията за контакти?", + "Remove %(threePid)s?": "Премахни %(threePid)s?", + "Refer a friend to Riot:": "Покани приятел в Riot:", + "Interface Language": "Език на интерфейса", + "User Interface": "Потребителски интерфейс", + "Autocomplete Delay (ms):": "Забавяне на визуализацията на автоматичните подсказки (мс):", + "": "<не се поддържа>", + "Import E2E room keys": "Импортирай E2E ключове за стая", + "Cryptography": "Криптография", + "Device ID:": "Идентификатор на устройството:", + "Device key:": "Ключ на устройството:", + "Ignored Users": "Игнорирани потребители", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot събира анонимни статистики, за да ни позволи да подобрим приложението.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Поверителността е важна за нас, затова за нашите статистики не събираме лични или идентифициращи Вас данни.", + "Learn more about how we use analytics.": "Научете повече за това как използваме статистическите данни.", + "Labs": "Експерименти", + "These are experimental features that may break in unexpected ways": "Това са експериментални функции , които могат да се счупят по неочаквани начини", + "Clear Cache": "Изчисти кеш", + "Clear Cache and Reload": "Изчисти кеша и зареди отново", + "Updates": "Нови версии", + "Check for update": "Провери за нова версия", + "Bulk Options": "Групови опции", + "Desktop specific": "Специфичен за работния плот", + "Start automatically after system login": "Автоматично стартиране след влизане в системата", + "No media permissions": "Няма разрешения за медийните устройства", + "You may need to manually permit Riot to access your microphone/webcam": "Може да се наложи ръчно да разрешите на Riot да получи достъп до Вашия микрофон/уеб камера", + "Missing Media Permissions, click here to request.": "Липсват разрешения за медийните устройства. Натиснете тук, за да ги поискате.", + "No Microphones detected": "Няма открити микрофони", + "No Webcams detected": "Няма открити уеб камери", + "Default Device": "Устройство по подразбиране", + "Microphone": "Микрофон", + "Camera": "Камера", + "VoIP": "VoIP", + "Email": "Имейл", + "Add email address": "Добави имейл адрес", + "Profile": "Профил", + "Display name": "Име/псевдоним", + "Account": "Акаунт", + "To return to your account in future you need to set a password": "За да се върнете в профила си в бъдеще, трябва да зададете парола", + "Logged in as:": "Влезли сте като:", + "Access Token:": "Тоукън за достъп:", + "click to reveal": "натиснете за показване", + "Homeserver is": "Home сървър:", + "Identity Server is": "Сървър за самоличност:", + "matrix-react-sdk version:": "Версия на matrix-react-sdk:", + "riot-web version:": "Версия на riot-web:", + "olm version:": "Версия на olm:", + "Failed to send email": "Неуспешно изпращане на имейл", + "The email address linked to your account must be entered.": "Имейл адресът, свързан с профила Ви, трябва да бъде въведен.", + "A new password must be entered.": "Трябва да бъде въведена нова парола.", + "New passwords must match each other.": "Новите пароли трябва да съвпадат една с друга.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Имейл беше изпратен на %(emailAddress)s. След като проследите връзката, която съдържа, натиснете по-долу.", + "Your password has been reset": "Вашата парола беше възстановена", + "Return to login screen": "Връщане към страницата за влизане в профила", + "To reset your password, enter the email address linked to your account": "За да възстановите Вашата парола, въведете имейл адреса, свързан с профила Ви", + "New password": "Нова парола", + "Confirm your new password": "Потвърдете новата си парола", + "Send Reset Email": "Изпрати имейл за възстановяване на парола", + "Create an account": "Създаване на профил", + "This Home Server does not support login using email address.": "Този Home сървър не поддържа влизане в профила чрез имейл адрес.", + "Incorrect username and/or password.": "Неправилно потребителско име и/или парола.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Моля, обърнете внимание, че влизате в %(hs)s сървър, а не в matrix.org.", + "Guest access is disabled on this Home Server.": "Достъпът за гости е изключен на този Home сървър.", + "The phone number entered looks invalid": "Въведеният телефонен номер изглежда невалиден", + "This homeserver doesn't offer any login flows which are supported by this client.": "Този Home сървър не предлага методи за влизане, които се поддържат от този клиент.", + "Error: Problem communicating with the given homeserver.": "Грешка: Проблем при комуникацията с дадения Home сървър.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не е възможно свързване към Home сървъра чрез HTTP, когато има HTTPS адрес в лентата на браузъра Ви. Или използвайте HTTPS или включете функция небезопасни скриптове.", + "Sign in to get started": "Влезте в профила си, за да започнете", + "Set a display name:": "Задаване на име:", + "Upload an avatar:": "Качване на профилна снимка:", + "This server does not support authentication with a phone number.": "Този сървър не поддържа автентикация с телефонен номер.", + "Missing password.": "Липсва парола.", + "Passwords don't match.": "Паролите не съвпадат.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Паролата е твърде къса (мин. %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Това не изглежда да е валиден имейл адрес.", + "This doesn't look like a valid phone number.": "Това не изглежда да е валиден телефонен номер.", + "You need to enter a user name.": "Трябва да въведете потребителско име.", + "An unknown error occurred.": "Възникна неизвестна грешка.", + "I already have an account": "Вече имам профил", + "Displays action": "Показва действие", + "Bans user with given id": "Блокира потребители с даден идентификатор", + "Unbans user with given id": "Отблокира потребител с даден идентификатор", + "Define the power level of a user": "Променя нивото на достъп на потребителя", + "Deops user with given id": "Отнема правата на потребител с даден идентификатор", + "Invites user with given id to current room": "Поканва потребител с даден идентификатор в текущата стая", + "Joins room with given alias": "Присъединяване към стая с даден псевдоним", + "Sets the room topic": "Задава темата на стаята", + "Kicks user with given id": "Изгонва потребителя с даден идентификатор", + "Changes your display nickname": "Сменя Вашия псевдоним", + "Searches DuckDuckGo for results": "Търси в DuckDuckGo за резултати", + "Changes colour scheme of current room": "Променя цветовата схема на текущата стая", + "Verifies a user, device, and pubkey tuple": "Потвърждава потребител, устройство или ключова двойка", + "Ignores a user, hiding their messages from you": "Игнорира потребител, скривайки съобщенията му от Вас", + "Stops ignoring a user, showing their messages going forward": "Спира игнорирането на потребител, показвайки съобщенията му занапред", + "Commands": "Команди", + "Results from DuckDuckGo": "Резултати от DuckDuckGo", + "Emoji": "Емотикони", + "Notify the whole room": "Извести всички в стаята", + "Room Notification": "Известие за стая", + "Users": "Потребители", + "unknown device": "неизвестно устройство", + "Ed25519 fingerprint": "Ed25519 отпечатък", + "User ID": "Потребителски идентификатор", + "Curve25519 identity key": "Curve25519 ключ за самоличност", + "Algorithm": "Алгоритъм", + "unencrypted": "нешифрован", + "Decryption error": "Грешка при разшифроването", + "Session ID": "Идентификатор на сесията", + "Claimed Ed25519 fingerprint key": "Заявен ключов отпечатък Ed25519", + "End-to-end encryption information": "Информация за шифроването от край до край", + "Event information": "Информация за събитието", + "Sender device information": "Информация за устройството на подателя", + "Passphrases must match": "Паролите трябва да съвпадат", + "Passphrase must not be empty": "Паролата не трябва да е празна", + "Export room keys": "Експортиране на ключове за стаята", + "Enter passphrase": "Въведи парола", + "Confirm passphrase": "Потвърди парола", + "Export": "Експортирай", + "Import room keys": "Импортиране на ключове за стая", + "File to import": "Файл за импортиране", + "Import": "Импортирай", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Когато тази страница съдържа информация идентифицираща Вас (като например стая, потребител или идентификатор на група), тези данни биват премахнати преди да бъдат изпратени до сървъра.", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Има непознати устройства в тази стая. Ако продължите без да ги потвърдите, ще бъде възможно за някого да подслушва Вашия разговор.", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ВНИМАНИЕ: НЕУСПЕШНО ПОТВЪРЖДАВАНЕ НА КЛЮЧА! Ключът за подписване за %(userId)s и устройството %(deviceId)s е \"%(fprint)s\", което не съвпада с предоставения ключ \"%(fingerprint)s\". Това може да означава, че Вашата комуникация е прихваната!", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Смяната на парола ще нулира всички ключове за шифроване от край до край на всички устройства, правейки историята на шифрования чат невъзможна за четене, освен ако първо не експортирате ключовете за стаята и ги импортирате отново след това. В бъдеще това ще бъде подобрено.", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "На път сте да бъдете отведени до друг сайт, където можете да удостоверите профила си за използване с %(integrationsUrl)s. Искате ли да продължите?", + "Robot check is currently unavailable on desktop - please use a web browser": "Проверка за робот в момента не е налична на работния плот. Моля, използвайте уеб браузър", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Можете да използвате опциите за друг сървър, за да влезете в други Matrix сървъри като посочите различен Home сървър.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Това Ви позволява да използвате това приложение със съществуващ Matrix профил на различен Home сървър.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Възможно е и да зададете друг сървър за самоличност, но това обикновено предотвратява намирането на други потребители по имейл адрес.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Сигурни ли сте, че искате да премахнете (изтриете) това събитие? Забележете, че ако изтриете събитие за промяна на името на стая или тема, това може да обърне промяната.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "За да потвърдите, че на това устройство може да се вярва, моля свържете се със собственика му по друг начин (напр. на живо или чрез телефонен разговор) и го попитайте дали ключът, който той вижда в неговите настройки на потребителя за това устройство, съвпада с ключа по-долу:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ако съвпада, моля натиснете бутона за потвърждение по-долу. Ако не, то тогава някой друг имитира това устройство и вероятно искате вместо това да натиснете бутона за черен списък.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ако преди сте използвали по-нова версия на Riot, Вашата сесия може да не бъде съвместима с текущата версия. Затворете този прозорец и се върнете в по-новата версия.", + "This will be your account name on the homeserver, or you can pick a different server.": "Това ще бъде името на профила Ви на Home сървъра, или можете да изберете друг сървър.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Препоръчваме Ви да минете през процеса за потвърждение за всяко устройство, за да потвърдите, че принадлежат на легитимен собственик. Ако предпочитате, можете да изпратите съобщение без потвърждение.", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Засечени са данни от по-стара версия на Riot. Това ще доведе до неправилна работа на криптографията от край до край в по-старата версия. Шифрованите от край до край съобщения, които са били обменени наскоро (при използването на по-стара версия), може да не успеят да бъдат разшифровани в тази версия. Това също може да доведе до неуспех в обмяната на съобщения в тази версия. Ако имате проблеми, излезте и влезте отново в профила си. За да запазите историята на съобщенията, експортирайте и импортирайте отново Вашите ключове.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Възстановяването на парола ще нулира всички ключове за шифроване от край до край за всички устройства, правейки историята на шифрования чат невъзможна за четене, освен ако първо не експортирате Вашите ключове за стаята и ги импортирате отново след това. В бъдеще това ще бъде подобрено.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Вие сте излязли от профила си от всички устройства и вече няма да получавате известия. За да включите известията отново, влезте в профила си от всички устройства", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Няма връзка с Home сървъра. Моля, проверете Вашата връзка. Уверете се, че SSL сертификатът на Home сървъра е надежден и че някое разширение на браузъра не блокира заявките.", + "none": "няма", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Този процес Ви позволява да експортирате във файл ключовете за съобщения в шифровани стаи. Така ще можете да импортирате файла в друг Matrix клиент, така че той също да може да разшифрова такива съобщения.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Експортираният файл ще позволи на всеки, който може да го прочете, да разшифрова всяко шифровано съобщение, което можете да видите. Трябва да го държите на сигурно място. За да направите това, трябва да въведете парола по-долу, която ще се използва за шифроване на експортираните данни. Ще бъде възможно да се импортират данните само с използване на същата парола.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Този процес позволява да импортирате ключове за шифроване, които преди сте експортирали от друг Matrix клиент. Тогава ще можете да разшифровате всяко съобщение, което другият клиент може да разшифрова.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Експортираният файл може да бъде предпазен с парола. Трябва да въведете парола тук, за да разшифровате файла.", + "Did you know: you can use communities to filter your Riot.im experience!": "Знаете ли, че: може да използвате общности, за да филтрирате Вашето Riot.im преживяване!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "За да създадете филтър, дръпнете и пуснете аватара на общността върху панела за филтриране в най-лявата част на екрана. По всяко време може да натиснете върху аватар от панела, за да видите само стаите и хората от тази общност.", + "Disable Community Filter Panel": "Изключи панела за филтриране на общности", + "Your key share request has been sent - please check your other devices for key share requests.": "Заявката за споделяне на ключ е изпратена. Моля, проверете заявките за споделяне на другите Ви устройства.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Заявки за споделяне на ключове се изпращат автоматично към другите Ви устройства. Ако сте ги отхвърлили от другите устройства, натиснете тук, за да заявите нови за тази сесия.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Ако другите Ви устройства нямат ключа за това съобщение, няма да можете да го разшифровате.", + "Key request sent.": "Заявката за ключ е изпратена.", + "Re-request encryption keys from your other devices.": "Заявете отново ключове за шифроване от другите Ви устройства.", + "%(user)s is a %(userRole)s": "%(user)s е %(userRole)s", + "Code": "Код", + "Debug Logs Submission": "Изпращане на логове за дебъгване", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ако сте изпратили грешка чрез GitHub, логовете за дебъгване могат да ни помогнат да проследим проблема. Логовете за дебъгване съдържат данни за използване на приложението, включващи потребителското Ви име, идентификаторите или псевдонимите на стаите или групите, които сте посетили, и потребителските имена на други потребители. Те не съдържат съобщения.", + "Submit debug logs": "Изпрати логове за дебъгване", + "Opens the Developer Tools dialog": "Отваря прозорец с инструменти на разработчика", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Видяно от %(displayName)s (%(userName)s) в %(dateTime)s", + "Unable to join community": "Неуспешно влизане в общността", + "Unable to leave community": "Неуспешно напускане на общността", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Промени направени по името и аватара на вашата общност може да не се отразят при другите потребители за до 30 минути.", + "Join this community": "Присъединете се в тази общност", + "Leave this community": "Напуснете тази общност", + "Stickerpack": "Пакет със стикери", + "You don't currently have any stickerpacks enabled": "В момента нямате включени пакети със стикери", + "Add a stickerpack": "Добави пакет със стикери", + "Hide Stickers": "Скрий стикери", + "Show Stickers": "Покажи стикери", + "Who can join this community?": "Кой може да се присъедини към тази общност?", + "Everyone": "Всеки", + "Fetching third party location failed": "Неуспешно извличане на адреса на стаята от друга мрежа", + "A new version of Riot is available.": "Налична е нова версия на Riot.", + "Couldn't load home page": "Неуспешно зареждане на началната страница", + "Send Account Data": "Изпращане на Account Data", + "All notifications are currently disabled for all targets.": "В момента известията са изключени за всички цели.", + "Uploading report": "Качване на доклада", + "Sunday": "Неделя", + "Notification targets": "Устройства, получаващи известия", + "Today": "Днес", + "Files": "Файлове", + "You are not receiving desktop notifications": "Не получавате известия на работния плот", + "Friday": "Петък", + "Update": "Актуализиране", + "Unable to fetch notification target list": "Неуспешно извличане на списък с устройства получаващи известия", + "Add an email address above to configure email notifications": "За конфигурация на имейл известия добавете имейл адрес по-горе.", + "Expand panel": "Разшири панела", + "On": "Включено", + "%(count)s Members": { + "other": "%(count)s Членове", + "one": "%(count)s Член" + }, + "Filter room names": "Филтрирай стаи по име", + "Changelog": "Списък на промените", + "Waiting for response from server": "Изчакване на отговор от сървъра", + "Uploaded on %(date)s by %(user)s": "Качено на %(date)s от %(user)s", + "Send Custom Event": "Изпрати потребителско събитие", + "Advanced notification settings": "Разширени настройки за известяване", + "Failed to send logs: ": "Неуспешно изпращане на логове: ", + "delete the alias.": "изтрий псевдонима.", + "To return to your account in future you need to set a password": "За да се върнете в профила си в бъдеще, трябва да зададете парола", + "Forget": "Забрави", + "Hide panel": "Скриване на панела", + "You cannot delete this image. (%(code)s)": "Не можете да изтриете тази снимка. (%(code)s)", + "Cancel Sending": "Откажи изпращането", + "This Room": "В тази стая", + "The Home Server may be too old to support third party networks": "Home сървърът може да е твърде стар, за да поддържа работа с други мрежи", + "Resend": "Изпрати отново", + "Room not found": "Стаята не е намерена", + "Downloading update...": "Сваляне на нова версия...", + "Messages in one-to-one chats": "Съобщения в индивидуални чатове", + "Unavailable": "Не е наличен", + "View Decrypted Source": "Прегледай разшифрования източник", + "Failed to update keywords": "Грешка при обновяване на ключови думи", + "Notes:": "Бележки:", + "remove %(name)s from the directory.": "премахване %(name)s от директорията.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Известия за следните ключови думи изпълняват правила, които не могат да бъдат показани тук:", + "Safari and Opera work too.": "Safari и Opera са други алтернативи.", + "Please set a password!": "Моля, въведете парола!", + "You have successfully set a password!": "Вие успешно зададохте парола!", + "Explore Room State": "Преглед на състоянието на стаята", + "Source URL": "URL на източника", + "Messages sent by bot": "Съобщения изпратени от бот", + "Filter results": "Филтриране на резултати", + "Members": "Членове", + "No update available.": "Няма нова версия.", + "Noisy": "Шумно", + "Failed to get protocol list from Home Server": "Неуспешно получаване на списък с протоколи от Home сървър", + "Collecting app version information": "Събиране на информация за версията на приложението", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Изтриване на псевдонима %(alias)s на стаята и премахване на %(name)s от директорията?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Това ще Ви позволи да се върнете в профила си след излизане от него, и да влезете от други устройства.", + "Enable notifications for this account": "Включване на известия за този профил", + "Directory": "Директория", + "Invite to this community": "Покани в тази общност", + "Search for a room": "Търсене на стая", + "Search…": "Търсене…", + "Messages containing keywords": "Съобщения, съдържащи ключови думи", + "Error saving email notification preferences": "Грешка при запазване на настройките за имейл известяване", + "Tuesday": "Вторник", + "Enter keywords separated by a comma:": "Ключови думи разделени чрез запетая:", + "Forward Message": "Препрати съобщението", + "You have successfully set a password and an email address!": "Вие успешно зададохте парола и имейл адрес!", + "Remove %(name)s from the directory?": "Премахване на %(name)s от директорията?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot използва много разширени браузър харектеристики, някои от които не са налични или са все още експериментални в настоящия Ви браузър.", + "Developer Tools": "Инструменти за разработчика", + "Preparing to send logs": "Подготовка за изпращане на логове", + "Explore Account Data": "Преглед на данните от профила", + "All messages (noisy)": "Всички съобщения (шумно)", + "Saturday": "Събота", + "Remember, you can always set an email address in user settings if you change your mind.": "Ако си промените мнението, винаги може да зададете имейл адрес в настройки на потребителя.", + "Direct Chat": "Директен чат", + "The server may be unavailable or overloaded": "Сървърът не е наличен или е претоварен", + "Reject": "Отхвърли", + "Failed to set Direct Message status of room": "Неуспешно настройване на стаята като Директен чат", + "Monday": "Понеделник", + "Remove from Directory": "Премахни от директорията", + "Enable them now": "Включете ги сега", + "Messages containing my user name": "Съобщения, съдържащи моето потребителско име", + "Toolbox": "Инструменти", + "Collecting logs": "Събиране на логове", + "more": "още", + "GitHub issue link:": "Линк към GitHub issue:", + "Failed to get public room list": "Неуспешно получаване на списък с публични стаи", + "You must specify an event type!": "Трябва да укажате тип на събитието", + "(HTTP status %(httpStatus)s)": "(HTTP статус %(httpStatus)s)", + "All Rooms": "Във всички стаи", + "Please install Chrome or Firefox for the best experience.": "Моля, инсталирайте Chrome или Firefox за най-добро преживяване.", + "Wednesday": "Сряда", + "Quote": "Цитирай", + "Send logs": "Изпращане на логове", + "All messages": "Всички съобщения", + "Call invitation": "Покана за разговор", + "Messages containing my display name": "Съобщения, съдържащи моя псевдоним", + "State Key": "State ключ", + "Failed to send custom event.": "Неуспешно изпращане на потребителско събитие.", + "What's new?": "Какво ново?", + "Notify me for anything else": "Извести ме за всичко останало", + "When I'm invited to a room": "Когато ме поканят в стая", + "Keywords": "Ключови думи", + "Can't update user notification settings": "Неуспешно обновяване на потребителски настройки за известяване", + "Notify for all other messages/rooms": "Извести ме за всички други съобщения/стаи", + "Unable to look up room ID from server": "Стая с такъв идентификатор не е намерена на сървъра", + "Couldn't find a matching Matrix room": "Не успяхме да намерим съответната Matrix стая", + "Invite to this room": "Покани в тази стая", + "You cannot delete this message. (%(code)s)": "Това съобщение не може да бъде изтрито. (%(code)s)", + "Thursday": "Четвъртък", + "I understand the risks and wish to continue": "Разбирам рисковете и желая да продължа", + "Logs sent": "Логовете са изпратени", + "Back": "Назад", + "Reply": "Отговори", + "Show message in desktop notification": "Показване на съдържание в известията на работния плот", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Логовете за дебъгване съдържат данни за използване на приложението, включващи потребителското Ви име, идентификаторите или псевдонимите на стаите или групите, които сте посетили, и потребителските имена на други потребители. Те не съдържат съобщения.", + "Unhide Preview": "Покажи отново прегледа", + "Unable to join network": "Неуспешно присъединяване към мрежата", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Възможна конфигурация на настройките за известия в клиент, различен от Riot. Не могат да бъдат променени в Riot, но важат въпреки това", + "Sorry, your browser is not able to run Riot.": "За жалост, Вашият браузър не може да пусне Riot.", + "Messages in group chats": "Съобщения в групови чатове", + "Yesterday": "Вчера", + "Error encountered (%(errorDetail)s).": "Възникна грешка (%(errorDetail)s).", + "Event Type": "Вид на събитие", + "Low Priority": "Нисък приоритет", + "What's New": "Какво ново", + "Set Password": "Задаване на парола", + "An error occurred whilst saving your email notification preferences.": "Възникна грешка при запазване на настройките за имейл известяване.", + "Enable audible notifications in web client": "Включване на звукови известия в уеб клиент", + "Off": "Изключено", + "Riot does not know how to join a room on this network": "Riot не знае как да се присъедини към стая от тази мрежа", + "Mentions only": "Само при споменаване", + "You can now return to your account after signing out, and sign in on other devices.": "Вече можете да се върнете в профила си след излизане от него и да влезете от други устройства.", + "Enable desktop notifications": "Включване на известия на работния плот", + "Enable email notifications": "Активиране на имейл известия", + "Login": "Вход", + "Download this file": "Изтегли този файл", + "Pin Message": "Закачи съобщението", + "Failed to change settings": "Неуспешна промяна на настройки", + "View Community": "Прегледай общността", + "Event sent!": "Събитието е изпратено!", + "View Source": "Прегледай източника", + "Event Content": "Съдържание на събитието", + "Thank you!": "Благодарим!", + "#example": "#пример", + "Collapse panel": "Свий панела", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "С текущия Ви браузър, изглеждането и усещането на приложението може да бъде неточно, и някои или всички от функциите може да не функционират,работят......... Ако искате може да продължите така или иначе, но сте сами по отношение на евентуалните проблеми, които може да срещнете!", + "Checking for an update...": "Проверяване за нова версия...", + "There are advanced notifications which are not shown here": "Съществуват разширени настройки за известия, които не са показани тук", + "Missing roomId.": "Липсва идентификатор на стая.", + "Picture": "Изображение", + "Every page you use in the app": "Всяка използвана страница от приложението", + "e.g. ": "например: ", + "Your User Agent": "Вашият браузър", + "Your device resolution": "Разделителната способност на устройството Ви", + "Always show encryption icons": "Винаги показвай икони за шифроване", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "В момента не може да се отговаря с файл, така че това ще се изпрати без да бъде отговор.", + "Unable to reply": "Не може да се отговори", + "At this time it is not possible to reply with an emote.": "В момента не може да се отговори с емотикона.", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не може да се зареди събитието, на което е отговорено. Или не съществува или нямате достъп да го видите.", + "Popout widget": "Изкарай в нов прозорец", + "Log out and remove encryption keys?": "Изход и изтриване на ключовете за шифроване?", + "Clear Storage and Sign Out": "Изчисти запазените данни и излез", + "Send Logs": "Изпрати логове", + "Refresh": "Опресни", + "We encountered an error trying to restore your previous session.": "Възникна грешка при възстановяване на предишната Ви сесия.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Изчистване на запазените данни в браузъра може да поправи проблема, но ще Ви изкара от профила и ще направи шифрованите съобщения нечетими.", + "Collapse Reply Thread": "Свий отговорите", + "Enable widget screenshots on supported widgets": "Включи скрийншоти за поддържащи ги приспособления", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Бъговете по Riot се следят в GitHub: създайте проблем в GitHub.", + "e.g. %(exampleValue)s": "напр. %(exampleValue)s", + "Reload widget": "Презареди приспособлението", + "Send analytics data": "Изпращане на статистически данни", + "To notify everyone in the room, you must be a": "За да уведомите всички в стаята, трябва да бъдете", + "Muted Users": "Заглушени потребители", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Моля, помогнете за подобряването на Riot.im като изпращате анонимни данни за ползване. Това ще използва бисквитка (моля, вижте нашата политика за бисквитки).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Моля, помогнете за подобряването на Riot.im като изпращате анонимни данни за ползване. Това ще използва бисквитка.", + "Yes, I want to help!": "Да, искам да помогна!", + "Warning: This widget might use cookies.": "Внимание: това приспособление може да използва бисквитки.", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Това ще направи акаунта Ви неизползваем завинаги. Няма да можете да влезете пак, а регистрирането повторно на същия потребителски идентификатор няма да е възможно. Акаунтът Ви да напусне всички стаи, в които участва. Ще бъдат премахнати и данните за акаунта Ви от сървъра за самоличност. Действието е необратимо.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Деактивирането на акаунта Ви по подразбиране не прави така, че изпратените съобщения да бъдат забравени. Ако искате да забравим съобщенията Ви, моля отбележете с отметка по-долу.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Видимостта на съобщенията в Matrix е подобно на имейл системата. Нашето забравяне означава, че: изпратените от Вас съобщения няма да бъдат споделяни с нови или нерегистрирани потребители, но регистрираните потребители имащи достъп до тях ще продължат да имат достъп до своето копие.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Моля, забравете всички изпратени от мен съобщения, когато акаунта ми се деактивира (Внимание: това ще направи бъдещите потребители да имат само частичен поглед върху кореспонденцията)", + "To continue, please enter your password:": "За да продължите, моля въведете паролата си:", + "password": "парола", + "Can't leave Server Notices room": "Не може да напуснете стая \"Server Notices\"", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Тази стая се използва за важни съобщения от сървъра, така че не можете да я напуснете.", + "Terms and Conditions": "Правила и условия", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "За да продължите да ползвате %(homeserverDomain)s е необходимо да прегледате и да се съгласите с правилата и условията за ползване.", + "Review terms and conditions": "Прегледай правилата и условията", + "Failed to indicate account erasure": "Неуспешно указване на желанието за изтриване на акаунта", + "Try the app first": "Първо пробвайте приложението", + "Encrypting": "Шифроване", + "Encrypted, not sent": "Шифровано, неизпратено", + "Share Link to User": "Сподели връзка с потребител", + "Share room": "Сподели стая", + "Share Room": "Споделяне на стая", + "Link to most recent message": "Създай връзка към най-новото съобщение", + "Share User": "Споделяне на потребител", + "Share Community": "Споделяне на общност", + "Share Room Message": "Споделяне на съобщение от стая", + "Link to selected message": "Създай връзка към избраното съобщение", + "COPY": "КОПИРАЙ", + "Share Message": "Сподели съобщението", + "No Audio Outputs detected": "Не са открити аудио изходи", + "Audio Output": "Аудио изходи", + "Jitsi Conference Calling": "Jitsi конферентни разговори", + "Call in Progress": "Тече разговор", + "A call is already in progress!": "В момента вече тече разговор!", + "You have no historical rooms": "Нямате стаи в архива", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "В шифровани стаи като тази, по подразбиране URL прегледите са изключени, за да се подсигури че сървърът (където става генерирането на прегледите) не може да събира информация за връзките споделени в стаята.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Когато някой сподели URL връзка в съобщение, може да бъде показан URL преглед даващ повече информация за връзката (заглавие, описание и картинка от уебсайта).", + "The email field must not be blank.": "Имейл полето не може да бъде празно.", + "The user name field must not be blank.": "Полето за потребителско име не може да е празно.", + "The phone number field must not be blank.": "Полето за телефонен номер не може да е празно.", + "The password field must not be blank.": "Полето за парола не може да е празно.", + "You can't send any messages until you review and agree to our terms and conditions.": "Не можете да изпращате съобщения докато не прегледате и се съгласите с нашите правила и условия.", + "Demote yourself?": "Понижете себе си?", + "Demote": "Понижение", + "This event could not be displayed": "Това събитие не може да бъде показано", + "A conference call could not be started because the intgrations server is not available": "Не може да бъде започнат конферентен разговор, защото сървърът с интеграции не е достъпен", + "Permission Required": "Необходимо е разрешение", + "A call is currently being placed!": "В момента се осъществява разговор!", + "You do not have permission to start a conference call in this room": "Нямате достъп да започнете конферентен разговор в тази стая", + "Show empty room list headings": "Показване на заглавия за празни стаи", + "deleted": "изтрито", + "underlined": "подчертано", + "inline-code": "код", + "block-quote": "цитат", + "bulleted-list": "списък (с тирета)", + "numbered-list": "номериран списък", + "Failed to remove widget": "Неуспешно премахване на приспособление", + "An error ocurred whilst trying to remove the widget from the room": "Възникна грешка при премахването на приспособлението от стаята", + "This homeserver has hit its Monthly Active User limit": "Този сървър достигна своя лимит за активни потребители на месец", + "Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.", + "System Alerts": "Системни уведомления", + "Internal room ID: ": "Вътрешен идентификатор на стаята: ", + "Room version number: ": "Версия на стаята: ", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Този сървър достигна лимита си за активни потребители на месец. Моля, свържете се с администратора на услугата, за да продължите да я използвате.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Този сървър достигна лимита си за активни потребители на месец и някои потребители няма да успеят да влязат в профила си. Моля, свържете се с администратора на услугата за да се увеличи този лимит.", + "There is a known vulnerability affecting this room.": "Има пропуск в сигурността засягащ тази стая.", + "This room version is vulnerable to malicious modification of room state.": "Тази версия на стаята е уязвима към злонамерена модификация на състоянието й.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Кликнете тук за да обновите стаята до последна версия и подсигурите сигурността й.", + "Only room administrators will see this warning": "Само администратори на стаята виждат това предупреждение", + "Please contact your service administrator to continue using the service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.", + "This homeserver has hit its Monthly Active User limit.": "Този сървър е достигнал лимита си за активни потребители на месец.", + "This homeserver has exceeded one of its resource limits.": "Този сървър е надвишил някой от лимитите си.", + "Please contact your service administrator to get this limit increased.": "Моля, свържете се с администратора на услугата за да се увеличи този лимит.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Този сървър е достигнал своя лимит за потребители на месец, така че някои потребители не биха успели да влязат.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Този сървър е достигнал някой от лимите си, така че някои потребители не биха успели да влязат.", + "Upgrade Room Version": "Обнови версията на стаята", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Обновяването на тази стая изисква затваряне на текущата и създаване на нова на нейно място. За да подсигурим най-доброто изживяване на потребителите, ще:", + "Create a new room with the same name, description and avatar": "Създадем нова стая със същото име, описание и снимка", + "Update any local room aliases to point to the new room": "Обновим всички локални адреси на стаята да сочат към новата", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Забраним комуникацията на потребителите в старата стая и публикуваме съобщение насочващо ги към новата", + "Put a link back to the old room at the start of the new room so people can see old messages": "Поставим връзка в новата стая, водещо обратно към старата, за да може хората да виждат старите съобщения", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър е достигнал лимита си за потребители на месец. Моля, свържете се с администратора на услугата за да продължите да я използвате.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Съобщението Ви не бе изпратено, защото този сървър е някой от лимитите си. Моля, свържете се с администратора на услугата за да продължите да я използвате.", + "Please contact your service administrator to continue using this service.": "Моля, свържете се с администратора на услугата за да продължите да я използвате.", + "Increase performance by only loading room members on first view": "Повишаване на бързодействието чрез отложено зареждане на членовете в стаите", + "Lazy loading members not supported": "Отложеното зареждане на членове не се поддържа", + "Lazy loading is not supported by your current homeserver.": "Отложеното зареждане не се поддържа от текущия сървър.", + "Sorry, your homeserver is too old to participate in this room.": "Съжаляваме, вашият сървър е прекалено стар за да участва в тази стая.", + "Please contact your homeserver administrator.": "Моля, свържете се се със сървърния администратор.", + "Legal": "Юридически", + "Registration Required": "Нужна е регистрация", + "You need to register to do this. Would you like to register now?": "За да направите това е нужно да се регистрирате. Искате ли да се регистрирате сега?", + "Unable to connect to Homeserver. Retrying...": "Неуспешно свързване със сървъра. Опитване отново...", + "This room has been replaced and is no longer active.": "Тази стая е била заменена и вече не е активна.", + "The conversation continues here.": "Разговора продължава тук.", + "Upgrade room to version %(ver)s": "Обновете стаята до версия %(ver)s", + "This room is a continuation of another conversation.": "Тази стая е продължение на предишен разговор.", + "Click here to see older messages.": "Кликнете тук за да видите предишните съобщения.", + "Failed to upgrade room": "Неуспешно обновяване на стаята", + "The room upgrade could not be completed": "Обновяването на тази стая не можа да бъде завършено", + "Upgrade this room to version %(version)s": "Обновете тази стая до версия %(version)s", + "Unable to query for supported registration methods": "Неуспешно запитване за поддържани методи за регистрация", + "Forces the current outbound group session in an encrypted room to be discarded": "Принудително прекратява текущата изходяща групова сесия в шифрована стая", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "one": "%(senderName)s добави %(addedAddresses)s като адрес за тази стая.", + "other": "%(senderName)s добави %(addedAddresses)s като адреси за тази стая." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "one": "%(senderName)s премахна %(removedAddresses)s като адрес за тази стая.", + "other": "%(senderName)s премахна %(removedAddresses)s като адреси за тази стая." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s добави %(addedAddresses)s и премахна %(removedAddresses)s като адреси за тази стая.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s настрой основния адрес на тази стая на %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s премахна основния адрес на тази стая.", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Преди да изпратите логове, трябва да отворите доклад за проблем в Github.", + "What GitHub issue are these logs for?": "За кой Github проблем са тези логове?", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot вече използва 3-5 пъти по-малко памет, като зарежда информация за потребители само когато е нужна. Моля, изчакайте докато ресинхронизираме със сървъра!", + "Updating Riot": "Обновяване на Riot", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

HTML за страницата на Вашата общност

\n

\n Използвайте дългото описание за да въведете нови членове в общността,\n или да разпространите важно връзки\n

\n

\n Можете дори да използвате 'img' тагове\n

\n", + "Submit Debug Logs": "Изпратете логове за диагностика", + "An email address is required to register on this homeserver.": "Необходим е имейл адрес за регистрация на този сървър.", + "A phone number is required to register on this homeserver.": "Необходим е телефонен номер за регистрация на този сървър.", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Преди сте използвали Riot на %(host)s с включено постепенно зареждане на членове. В тази версия, тази настройка е изключена. Понеже локалният кеш не е съвместим при тези две настройки, Riot трябва да синхронизира акаунта Ви наново.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Ако другата версия на Riot все още е отворена в друг таб, моля затворете я. Използването на Riot на един адрес във версии с постепенно и без постепенно зареждане ще причини проблеми.", + "Incompatible local cache": "Несъвместим локален кеш", + "Clear cache and resync": "Изчисти кеша и ресинхронизирай", + "Please accept all of the policies": "Моля, приемете всички политики", + "Please review and accept the policies of this homeserver:": "Моля, прегледайте и приемете политиките на този сървър:", + "Add some now": "Добави сега", + "Riot is not supported on mobile web. Install the app?": "Riot не поддържа мобилен уеб браузър. Инсталиране на приложението?", + "Riot Desktop on %(platformName)s": "Riot Desktop под %(platformName)s", + "Unknown device": "Непознато устройство", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s в %(browserName)s под %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Трябва да използвате HTTPS, за да споделите екрана си.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Може да използвате опциите за друг сървър, за да влезете в други Matrix сървъри като посочите различен Home сървър.
Това Ви позволява да използвате Riot със съществуващ Matrix профил на различен Home сървър.

Възможно е и да зададете друг сървър за самоличност. В този случай обаче няма да бъде възможно да поканите други потребители по имейл адрес, както и самите Вие няма да можете да бъдете поканени по имейл адрес.", + "Welcome to Riot.im": "Добре дошли в Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализиран, шифрован чат и колаборация базирани на [matrix]", + "Search the room directory": "Търсене в директорията със стаи", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix съществуват много стаи, свързани към вече съществуващи мрежи (Slack, IRC, Gitter и т.н.) или независими такива. Разгледайте директорията!", + "Chat with Riot Bot": "Чат с Riot Bot", + "Get started with some tips from Riot Bot!": "Започнете с някои съвети от Riot Bot!", + "General discussion about Matrix and Riot": "Обща дискусия относно Matrix и Riot", + "Discussion of all things Matrix!": "Дискусия за всичко свързано с Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop чат", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk чат", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk чат", + "Matrix technical discussions": "Технически дискусии в Matrix", + "Running Matrix services": "Хостинг на Matrix услуги", + "Community-run support for Synapse": "Поддръжка за Synapse от общността", + "Admin support for Dendrite": "Административна поддръжка за Dendrite", + "Announcements about Synapse releases": "Обявления за нови версии на Synapse", + "Support for those using and running matrix-appservice-irc": "Поддръжка за използващите и работещите с matrix-appservice-irc", + "Building services on Matrix": "Разработка на услуги в Matrix", + "Support for those using the Matrix spec": "Поддръжка за използващите Matrix спецификацията", + "Design and implementation of E2E in Matrix": "Разработване и внедряване на E2E шифроване в Matrix", + "Implementing VR services with Matrix": "Внедряване на VR услуги с Matrix", + "Implementing VoIP services with Matrix": "Внедряване на VoIP услуги с Matrix", + "Discussion of the Identity Service API": "Дискусия върху API услугата за самоличност", + "Support for those using, running and writing other bridges": "Поддръжка за тези, които използват, работят и пишат Matrix мостове", + "Contributing code to Matrix and Riot": "Допринасяне с код към Matrix и Riot", + "Dev chat for the Riot/Web dev team": "Чат за разработващия екип на Riot/Web", + "Dev chat for the Dendrite dev team": "Чат за разработващия екип на Dendrite", + "Co-ordination for Riot translators": "Координация за преводачи на Riot" +} \ No newline at end of file diff --git a/riot/i18n/ca.json b/riot/i18n/ca.json new file mode 100644 index 0000000..ff9f17c --- /dev/null +++ b/riot/i18n/ca.json @@ -0,0 +1,1123 @@ +{ + "People": "Gent", + "Add a widget": "Afegeix un giny", + "Account": "Compte", + "VoIP": "Veu IP", + "No Microphones detected": "No s'ha detectat cap micròfon", + "No Webcams detected": "No s'ha detectat cap càmera web", + "Microphone": "Micròfon", + "Camera": "Càmera", + "Advanced": "Avançat", + "Algorithm": "Algoritme", + "Hide removed messages": "Amaga els missatges esborrats", + "Always show message timestamps": "Mostra sempre la marca de temps del missatge", + "Alias (optional)": "Àlies (opcional)", + "Cancel": "Cancel·la", + "Close": "Tanca", + "Create new room": "Crea una nova sala", + "Error": "Error", + "Failed to forget room %(errCode)s": "No s'ha pogut oblidar la sala %(errCode)s", + "Favourite": "Favorit", + "Mute": "Silencia", + "Room directory": "Directori de sales", + "Settings": "Paràmetres", + "Start chat": "Inicia un xat", + "Failed to change password. Is your password correct?": "Hi ha hagut un error al canviar la vostra contrasenya. És correcte la vostra contrasenya?", + "Continue": "Continua", + "Custom Server Options": "Opcions de servidor personalitzat", + "Dismiss": "Omet", + "Notifications": "Notificacions", + "Remove": "Elimina", + "unknown error code": "codi d'error desconegut", + "OK": "D'acord", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "S'ha enviat un missatge de text a +%(msisdn)s. Entreu si us plau el codi de verificació que conté", + "Operation failed": "No s'ha pogut realitzar l'operació", + "Search": "Cerca", + "powered by Matrix": "amb tecnologia de Matrix", + "Edit": "Edita", + "Unpin Message": "Desenganxa el missatge", + "Register": "Registre", + "Rooms": "Sales", + "Add rooms to this community": "Afegeix sales a aquesta comunitat", + "World readable": "Llegible al món", + "Guests can join": "Els usuaris d'altres xarxes s'hi poden unir", + "This email address is already in use": "Aquesta adreça de correu electrònic ja està en ús", + "This phone number is already in use": "Aquest número de telèfon ja està en ús", + "Failed to verify email address: make sure you clicked the link in the email": "No s'ha pogut verificar l'adreça de correu electrònic. Assegureu-vos de fer clic a l'enllaç del correu electrònic de verificació", + "Call Failed": "No s'ha pogut realitzar la trucada", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Hi ha dispositius desconeguts a aquesta sala. Si continueu sense verificar-los, és possible que algú escolti la vostra trucada.", + "Review Devices": "Revisió de dispositius", + "Call Anyway": "Truca de totes maneres", + "Answer Anyway": "Contesta en tot cas", + "Call": "Truca", + "Answer": "Contesta", + "The remote side failed to pick up": "El costat remot no s'ha pogut recuperar", + "Unable to capture screen": "No s'ha pogut capturar la pantalla", + "Existing Call": "Trucades existents", + "You are already in a call.": "Ja sou a una trucada.", + "VoIP is unsupported": "El VoIP no és compatible aquí", + "You cannot place VoIP calls in this browser.": "No es poden fer trucades VoIP amb aquest navegador.", + "You cannot place a call with yourself.": "No és possible trucar-se a un mateix.", + "Conference calls are not supported in this client": "Aquest client no és compatible amb les trucades de conferència", + "Conference calls are not supported in encrypted rooms": "Les trucades de conferència no es poden fer dins les sales encriptades", + "Warning!": "Avís!", + "Conference calling is in development and may not be reliable.": "Les conferències estan en desenvolupament i podrien no ser fiables.", + "Failed to set up conference call": "No s'ha pogut realitzar la trucada de conferència", + "Conference call failed.": "No s´ha pogut realitzar la trucada de conferència.", + "The file '%(fileName)s' failed to upload": "No s'ha pogut pujar el fitxer '%(fileName)s'", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El fitxer '%(fileName)s' supera el límit de mida per a les càrregues d'aquest servidor", + "Upload Failed": "No s'ha pogut realitzar la pujada", + "Sun": "dg.", + "Mon": "dl.", + "Tue": "dt.", + "Wed": "dc.", + "Thu": "dj.", + "Fri": "dv.", + "Sat": "ds.", + "Jan": "gen.", + "Feb": "febr.", + "Mar": "març", + "Apr": "abr.", + "May": "maig", + "Jun": "juny", + "Jul": "jul.", + "Aug": "ag.", + "Sep": "set.", + "Oct": "oct.", + "Nov": "nov.", + "Dec": "des.", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s%(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s%(day)s%(monthName)s%(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s%(day)s%(monthName)s%(fullYear)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s%(day)s%(monthName)s%(fullYear)s%(time)s", + "Who would you like to add to this community?": "A qui voleu afegir a aquesta comunitat?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Avís: les persones que afegiu a aquesta comunitat seran visibles públicament per a qualsevol que conegui l'ID de la comunitat", + "Invite new community members": "Convida a unir-se a la comunitat a nous membres", + "Name or matrix ID": "Nom o ID de Matrix", + "Invite to Community": "Convida a la comunitat", + "Which rooms would you like to add to this community?": "Quines sales voleu afegir a aquesta comunitat?", + "Show these rooms to non-members on the community page and room list?": "Voleu mostrar a la llista de sales i a la pàgina de la comunitat, aquestes sales, als qui no en siguin membres?", + "Add rooms to the community": "Afegeix sales a la comunitat", + "Room name or alias": "Nom de la sala o àlies", + "Add to community": "Afegeix a la comunitat", + "Failed to invite the following users to %(groupId)s:": "No s'ha pogut convidar al grup %(groupId)s els següents usuaris:", + "Failed to invite users to community": "No s'ha pogut convidar als usuaris a la comunitat", + "Failed to invite users to %(groupId)s": "No s'ha pogut convidar els usuaris al grup %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "No s'ha pogut afegir al grup %(groupId)s les següents sales:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot no té permís per enviar-vos notificacions. Comproveu la configuració del vostre navegador", + "Riot was not given permission to send notifications - please try again": "Riot no ha rebut cap permís per enviar notificacions. Torneu-ho a provar", + "Unable to enable Notifications": "No s'ha pogut activar les notificacions", + "This email address was not found": "Aquesta adreça de correu electrònic no s'ha trobat", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "La vostra adreça de correu electrònic no sembla que estigui associada amb un identificador de Matrix d'aquest servidor.", + "Default": "Per defecte", + "Restricted": "Restringit", + "Moderator": "Moderador", + "Admin": "Admin", + "Start a chat": "Comença un xat", + "Who would you like to communicate with?": "Amb qui es vol comunicar?", + "Email, name or matrix ID": "Correu electrònic, nom o ID de Matrix", + "Start Chat": "Comença un xat", + "Invite new room members": "Convida a nous membres a la sala", + "Who would you like to add to this room?": "A qui vol afegir a aquesta sala?", + "Send Invites": "Envia invitacions", + "Failed to invite user": "No s'ha pogut convidar al usuari", + "Failed to invite": "No s'ha pogut tramitar la invitació", + "Failed to invite the following users to the %(roomName)s room:": "No s'ha pogut convidar a la sala %(roomName)s els següents usuaris:", + "You need to be logged in.": "És necessari estar autenticat.", + "You need to be able to invite users to do that.": "Per poder fer això, heu de poder convidar a altres usuaris.", + "Unable to create widget.": "No s'ha pogut crear el giny.", + "Failed to send request.": "No s'ha pogut enviar la sol·licitud.", + "This room is not recognised.": "No es reconeix aquesta sala.", + "Power level must be positive integer.": "El nivell de poders ha de ser un enter positiu.", + "You are not in this room.": "No heu entrat a aquesta sala.", + "You do not have permission to do that in this room.": "No teniu el permís per realitzar aquesta acció en aquesta sala.", + "Missing room_id in request": "Falta l'ID de la sala en la vostra sol·licitud", + "Room %(roomId)s not visible": "La sala %(roomId)s no és visible", + "Missing user_id in request": "Falta l'ID d'usuari a la vostre sol·licitud", + "Usage": "Ús", + "/ddg is not a command": "/ddg no és un comandament", + "To use it, just wait for autocomplete results to load and tab through them.": "Per utilitzar-lo, simplement espereu que es completin els resultats automàticament i seleccioneu-ne el desitjat.", + "Unrecognised room alias:": "Àlies de sala no reconeguts:", + "Ignored user": "Usuari ignorat", + "You are now ignoring %(userId)s": "S'està ignorant l'usuari %(userId)s", + "Unignored user": "Usuari no ignorat", + "You are no longer ignoring %(userId)s": "Ja no s'està ignorant al usuari %(userId)s", + "Device already verified!": "El dispositiu ja estava verificat!", + "WARNING: Device already verified, but keys do NOT MATCH!": "AVÍS: El dispositiu ja estava verificat, però les claus NO COINCIDIEN!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "AVÍS: NO S'HA POGUT VERIFICAR! La firma de la clau de l'usuari %(userId)s i el dispositiu %(deviceId)s és \"%(fprint)s\", però no coincideix amb la clau \"%(fingerprint)s\". Això pot significar que les vostres comunicacions estan sent interceptades!", + "Verified key": "Claus verificades", + "Call Timeout": "Temps d'espera de les trucades", + "Unknown (user, device) pair:": "Parell desconegut (usuari, dispositiu):", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clau de signatura que heu proporcionat coincideix amb la clau de signatura que heu rebut del dispositiu %(deviceId)s de l'usuari %(userId)s. S'ha marcat el dispositiu com a dispositiu verificat.", + "Unrecognised command:": "Ordre no reconegut:", + "Reason": "Raó", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha acceptat la invitació de %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s ha acceptat una invitació.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s ha sol·licitat una conferència VoIP.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s ha convidat a %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s ha expulsat a %(targetName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s ha establert %(displayName)s com el seu nom visible.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ha retirat el seu nom visible %(oldDisplayName)s.", + "%(senderName)s removed their profile picture.": "%(senderName)s ha retirat la seva foto de perfil.", + "%(senderName)s changed their profile picture.": "%(senderName)s ha canviat la seva foto de perfil.", + "%(senderName)s set a profile picture.": "%(senderName)s ha establert una foto de perfil.", + "VoIP conference started.": "S'ha iniciat la conferència VoIP.", + "%(targetName)s joined the room.": "%(targetName)s ha entrat a la sala.", + "VoIP conference finished.": "S'ha finalitzat la conferència VoIP.", + "%(targetName)s rejected the invitation.": "%(targetName)s ha rebutjat la invitació.", + "%(targetName)s left the room.": "%(targetName)s ha sortit de la sala.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s ha readmès a %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s ha fet fora a %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s ha retirat la invitació per a %(targetName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ha canviat el tema a \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha eliminat el nom de la sala.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ha canviat el nom de la sala a %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s ha enviat una imatge.", + "Someone": "Algú", + "(not supported by this browser)": "(no és compatible amb aquest navegador)", + "%(senderName)s answered the call.": "%(senderName)s ha contestat la trucada.", + "(could not connect media)": "(no s'ha pogut connectar el medi)", + "(no answer)": "(sense resposta)", + "(unknown failure: %(reason)s)": "(error desconegut: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s ha penjat.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s ha col·locat una trucada de %(callType)s.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s ha enviat una invitació a %(targetDisplayName)s a entrar a aquesta sala.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s ha fet visible l'històric futur de la sala per a tots els membres, a partir de que hi són convidats.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s ha fet visible l'històric futur de la sala a tots els membres, des de que entren a la sala.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s ha fet visible l'històric futur de la sala a tots els membres de la sala.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s ha fet visible l´historial de la sala per a tothom.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s ha fet visible l'històric de la sala per a desconeguts (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ha activat l'encriptació d'extrem a extrem (algoritme %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s fins %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha canviat el nivell de poders de %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s ha canviat els missatges fixats de la sala.", + "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s ha modificat el giny %(widgetName)s", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s ha afegit el giny %(widgetName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s ha eliminat el giny %(widgetName)s", + "%(displayName)s is typing": "%(displayName)s està escrivint", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s i %(count)s més estan escrivint", + "one": "%(names)s i algú altre està escrivint" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s i %(lastPerson)s estan escrivint", + "Failure to create room": "No s'ha pogut crear la sala", + "Server may be unavailable, overloaded, or you hit a bug.": "És possible que el servidor no estigui disponible, amb sobrecàrrega o que s'hagi trobat un error.", + "Send anyway": "Envia de totes maneres", + "Send": "Envia", + "Unnamed Room": "Sala sense nom", + "Your browser does not support the required cryptography extensions": "El vostre navegador no és compatible amb els complements criptogràfics necessaris", + "Not a valid Riot keyfile": "El fitxer no és un fitxer de claus de Riot valid", + "Authentication check failed: incorrect password?": "Ha fallat l'autenticació: heu introduït correctament la contrasenya?", + "Failed to join room": "No s'ha pogut entrar a la sala", + "Message Pinning": "Fixació de missatges", + "Disable Emoji suggestions while typing": "Desactiva els suggeriments d'Emoji mentre s'escriu", + "Use compact timeline layout": "Utilitza el disseny compacte de la línia de temps", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Amaga els missatges d'entrada i sortida (no afecta a les invitacions, expulsions o prohibicions)", + "Hide avatar changes": "Amaga els canvis de foto de perfil", + "Hide display name changes": "Amaga els canvis de nom visible", + "Hide read receipts": "Amaga els rebuts llegits", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostra les marques de temps en format de 12 hores (per exemple, 2:30pm)", + "Autoplay GIFs and videos": "Reprodueix de forma automàtica els GIF i vídeos", + "Enable automatic language detection for syntax highlighting": "Activa la detecció automàtica d'idiomes per al ressaltat de sintaxi", + "Disable big emoji in chat": "Desactiva els grans emoji al xat", + "Don't send typing notifications": "No enviïs notificacions d'escriptura", + "Automatically replace plain text Emoji": "Substitueix automàticament Emoji de text pla", + "Disable Peer-to-Peer for 1:1 calls": "Desactiva el Peer-to-Peer per a trucades entre dos", + "Never send encrypted messages to unverified devices in this room from this device": "Des d'aquest dispositiu no enviïs mai a aquesta sala missatges encriptats a dispositius sense verificar", + "Enable inline URL previews by default": "Activa per defecte la vista prèvia d'URLs en línia", + "Enable URL previews for this room (only affects you)": "Activa la vista prèvia d'URLs d'aquesta sala (no afecta a altres usuaris)", + "Enable URL previews by default for participants in this room": "Activa per defecte la vista prèvia d'URLs per als participants d'aquesta sala", + "Room Colour": "Color de la sala", + "Active call (%(roomName)s)": "Trucada activa (%(roomName)s)", + "unknown caller": "trucada d'un desconegut", + "Incoming voice call from %(name)s": "Trucada de veu entrant de %(name)s", + "Hide avatars in user and room mentions": "Amaga els avatars a les mencions de l'usuari i de la sala", + "Never send encrypted messages to unverified devices from this device": "No enviïs mai des de aquest dispositiu missatges encriptats a dispositius no verificats", + "Incoming video call from %(name)s": "Trucada de vídeo entrant de %(name)s", + "Incoming call from %(name)s": "Trucada entrant de %(name)s", + "Decline": "Declina", + "Accept": "Accepta", + "Incorrect verification code": "El codi de verificació és incorrecte", + "Enter Code": "Introduïu el codi", + "Submit": "Envia", + "Phone": "Telèfon", + "Add phone number": "Afegiu un número de telèfon", + "Add": "Afegeix", + "Failed to upload profile picture!": "No s'ha pogut pujar la imatge!", + "Upload new:": "Puja un nou:", + "No display name": "Sense nom visible", + "New passwords don't match": "Les noves contrasenyes no coincideixen", + "Passwords can't be empty": "Les contrasenyes no poden estar buides", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Si canvieu la contrasenya es reiniciaran totes les actuals claus de xifratge d'extrem per a tots els dispositius, fent que l'historial encriptat no sigui llegible, tret que primer exporteu les claus de la vostra sala i les torneu a importar després. En un futur això serà millorat.", + "Export E2E room keys": "Exporta les claus E2E de la sala", + "Do you want to set an email address?": "Voleu establir una adreça de correu electrònic?", + "Current password": "Contrasenya actual", + "Password": "Contrasenya", + "New Password": "Nova contrasenya", + "Confirm password": "Confirma la contrasenya", + "Change Password": "Canvia la contrasenya", + "Your home server does not support device management.": "El seu servidor amfitrió no és compatible amb la gestió de dispositius.", + "Unable to load device list": "No s'ha pogut carregar la llista de dispositius", + "Authentication": "Autenticació", + "Delete %(count)s devices": { + "other": "Suprimeix %(count)s dispositius", + "one": "Suprimeix el dispositiu" + }, + "Device ID": "ID del dispositiu", + "Device Name": "Nom del dispositiu", + "Last seen": "Vist per últim cop", + "Select devices": "Selecciona els dispositius", + "Failed to set display name": "No s'ha pogut establir el nom visible", + "Disable Notifications": "Desactiva les notificacions", + "Enable Notifications": "Activa les notificacions", + "Cannot add any more widgets": "No s'ha pogut afegir cap més giny", + "The maximum permitted number of widgets have already been added to this room.": "Ja s'han afegit el màxim de ginys permesos en aquesta sala.", + "Drop File Here": "Deixeu anar un fitxer aquí", + "Drop file here to upload": "Deixeu anar un arxiu aquí per pujar-lo", + " (unsupported)": " (incompatible)", + "Join as voice or video.": "Uneix-te com voice o video.", + "Ongoing conference call%(supportedText)s.": "Trucada de conferència en curs %(supportedText)s.", + "%(senderName)s sent an image": "%(senderName)s ha enviat una imatge", + "%(senderName)s sent a video": "%(senderName)s ha enviat un vídeo", + "%(senderName)s uploaded a file": "%(senderName)s ha pujat un fitxer", + "Options": "Opcions", + "Undecryptable": "Indesxifrable", + "Encrypted by a verified device": "Encriptat per un dispositiu verificat", + "Encrypted by an unverified device": "Encriptat per un dispositiu no verificat", + "Unencrypted message": "Missatge no encriptat", + "Please select the destination room for this message": "Si us plau, seleccioneu la sala destinatària per a aquest missatge", + "Blacklisted": "Llista negre", + "Verified": "Verificat", + "Unverified": "No verificat", + "device id: ": "ID del dispositiu: ", + "Disinvite": "Descarta la invitació", + "Kick": "Fes fora", + "Disinvite this user?": "Descartar la invitació per a aquest usuari?", + "Kick this user?": "Voleu fer fora a aquest usuari?", + "Failed to kick": "No s'ha pogut fer fora", + "Unban": "Retira l'expulsió", + "Ban": "Expulsa", + "Unban this user?": "Voleu retirar l'expulsió de aquest usuari?", + "This room is not public. You will not be able to rejoin without an invite.": "Aquesta sala no és pública. No podreu tronar a entrar sense invitació.", + "Ban this user?": "Voleu expulsar a aquest usuari?", + "Failed to ban user": "No s'ha pogut expulsar l'usuari", + "Failed to mute user": "No s'ha pogut silenciar l'usuari", + "Failed to toggle moderator status": "No s'ha pogut canviar l'estat del moderador", + "Failed to change power level": "No s'ha pogut canviar el nivell de poders", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "No podreu desfer aquest canvi ja que estareu baixant de grau de privilegis. Només un altre usuari amb més privilegis podrà fer que els recupereu.", + "Are you sure?": "Esteu segur?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podreu desfer aquesta acció ja que esteu donant al usuari el mateix nivell de privilegi que el vostre.", + "No devices with registered encryption keys": "No hi ha cap dispositiu amb les claus d'encriptació registrades", + "Devices": "Dispositius", + "Unignore": "Deixa de ignorar", + "Ignore": "Ignora", + "Jump to read receipt": "Vés a l'últim missatge llegit", + "Mention": "Menciona", + "Invite": "Convida", + "User Options": "Opcions d'usuari", + "Direct chats": "Xats directes", + "Unmute": "No silenciïs", + "Revoke Moderator": "Revoca el moderador", + "Make Moderator": "Fes-lo moderador", + "Admin Tools": "Eines d'administració", + "Level:": "Nivell:", + "and %(count)s others...": { + "other": "i %(count)s altres...", + "one": "i un altre..." + }, + "Invited": "Convidat", + "Filter room members": "Filtra membres de sala", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (poder %(powerLevelNumber)s)", + "Attachment": "Adjunt", + "Upload Files": "Puja fitxers", + "Are you sure you want to upload the following files?": "Confirmeu que voleu pujar els següents fitxers?", + "Encrypted room": "Sala encriptada", + "Unencrypted room": "Sala no encriptada", + "Hangup": "Penja", + "Voice call": "Trucada de veu", + "Video call": "Trucada de vídeo", + "Upload file": "Puja el fitxer", + "Show Text Formatting Toolbar": "Mostra la barra d'eines de format de text", + "Send an encrypted reply…": "Envia una resposta encriptada…", + "Send a reply (unencrypted)…": "Envia una resposta (sense encriptar)…", + "Send an encrypted message…": "Envia un missatge encriptat…", + "Send a message (unencrypted)…": "Envia un missatge (sense encriptar)…", + "You do not have permission to post to this room": "No teniu el permís per escriure en aquesta sala", + "Turn Markdown on": "Activa el Markdown", + "Turn Markdown off": "Desactiva el Markdown", + "Hide Text Formatting Toolbar": "Amaga la barra d'eines de format de text", + "Server error": "S'ha produït un error al servidor", + "Mirror local video feed": "Mostra el vídeo local com un mirall", + "Server unavailable, overloaded, or something else went wrong.": "El servidor no està disponible, està sobrecarregat o alguna altra cosa no ha funcionat correctament.", + "Command error": "S'ha produït un error en l'ordre", + "bold": "negreta", + "italic": "cursiva", + "strike": "tatxat", + "underline": "subratllat", + "code": "codi", + "quote": "cita", + "bullet": "pic", + "numbullet": "pic numerat", + "Markdown is disabled": "El Markdown està desactivat", + "Markdown is enabled": "El Markdown està activat", + "Jump to message": "Salta al missatge", + "No pinned messages.": "No hi ha cap missatge fixat.", + "Loading...": "S'està carregant...", + "Pinned Messages": "Missatges fixats", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "En línia durant %(duration)s", + "Idle for %(duration)s": "Inactiu durant %(duration)s", + "Offline for %(duration)s": "Desconnectat durant %(duration)s", + "Unknown for %(duration)s": "Desconegut durant %(duration)s", + "Online": "Conectat", + "Idle": "Inactiu", + "Offline": "Desconnectat", + "Unknown": "Desconegut", + "Replying": "S'està contestant", + "Seen by %(userName)s at %(dateTime)s": "Vist per %(userName)s el %(dateTime)s", + "No rooms to show": "No hi ha cap sala per a mostrar", + "Unnamed room": "Sala sense nom", + "Failed to set avatar.": "No s'ha pogut establir l'avatar.", + "Save": "Desa", + "(~%(count)s results)": { + "other": "(~%(count)s resultats)", + "one": "(~%(count)s resultat)" + }, + "Join Room": "Entra a la sala", + "Upload avatar": "Puja l'avatar", + "Remove avatar": "Elimina l'avatar", + "Forget room": "Oblida la sala", + "Show panel": "Mostra el plafó", + "Drop here to favourite": "Deixa-ho anar aquí per a marcar-ho com a favorit", + "Drop here to tag direct chat": "Deixa'l anar aquí per posar-li la etiqueta de xat directe", + "Drop here to restore": "Deixa'l anar aquí per a restaurar-lo", + "Drop here to demote": "Deixa'l anar aquí per a baixar-lo de grau", + "Drop here to tag %(section)s": "Deixa´l anar aquí per posar-li la etiqueta de %(section)s", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Encara no ha entrat a cap sala. Premeu per crear una sala o bé per fullejar el directori", + "Community Invites": "Invitacions de les comunitats", + "Invites": "Invitacions", + "Favourites": "Preferits", + "Low priority": "Baixa prioritat", + "Historical": "Històric", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "No s'ha pogut determinar que s'hagi enviat la invitació des de una adreça associada al vostre compte.", + "This invitation was sent to an email address which is not associated with this account:": "Aquesta invitació s'ha enviat a una adreça de correu electrònic que no està associada a aquest compte:", + "Press to start a chat with someone": "Prem per a començar un xat amb algú", + "You may wish to login with a different account, or add this email to this account.": "És possible que vulgueu iniciar la sessió amb un altre compte o bé afegir aquest correu electrònic a aquest compte.", + "You have been invited to join this room by %(inviterName)s": "Heu sigut convidat a aquesta sala per %(inviterName)s", + "Would you like to accept or decline this invitation?": "Voleu accept o bé decline aquesta invitació?", + "Reason: %(reasonText)s": "Raó: %(reasonText)s", + "Rejoin": "Trona a entrar", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s us ha fet fora de la sala %(roomName)s.", + "You have been kicked from this room by %(userName)s.": "%(userName)s vos ha fet fora de la sala.", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s vos ha expulsat de la sala %(roomName)s.", + "You have been banned from this room by %(userName)s.": "Heu sigut expulsat d'aquesta sala per %(userName)s.", + "This room": "Aquesta sala", + "%(roomName)s does not exist.": "La sala %(roomName)s no existeix.", + "%(roomName)s is not accessible at this time.": "La sala %(roomName)s no és accessible en aquest moment.", + "You are trying to access %(roomName)s.": "Esteu intentant accedir a la sala %(roomName)s.", + "You are trying to access a room.": "Esteu intentant accedir a una sala.", + "Click here to join the discussion!": "Click here per a entrar al debat!", + "This is a preview of this room. Room interactions have been disabled": "Aquesta és una vista prèvia de la sala. No s'hi pot interactuar des de aquí", + "To change the room's avatar, you must be a": "Per canviar l'avatar de la sala, heu de ser", + "To change the room's name, you must be a": "Per canviar el nom de la sala, heu de ser", + "To change the room's main address, you must be a": "Per canviar l'adreça principal de la sala, heu de ser", + "To change the room's history visibility, you must be a": "Per canviar la visibilitat de l'historial de la sala, heu de ser", + "To change the permissions in the room, you must be a": "Per canviar els permisos a la sala, heu de ser", + "To change the topic, you must be a": "Per canviar el tema, heu de ser", + "To modify widgets in the room, you must be a": "Per modificar els ginys de la sala, has de ser", + "Failed to unban": "No s'ha pogut expulsar", + "Banned by %(displayName)s": "Expulsat per %(displayName)s", + "Privacy warning": "Avís de privadesa", + "Changes to who can read history will only apply to future messages in this room": "Els canvis de qui pot llegir l'historial només s'aplicaran als missatges futurs d'aquesta sala", + "The visibility of existing history will be unchanged": "La visibilitat de l'historial existent no es modificarà", + "End-to-end encryption is in beta and may not be reliable": "L'encriptació d'extrem a extrem està en fase beta i pot ser que no sigui fiable", + "You should not yet trust it to secure data": "Encara no hi heu de confiar per a comunicacions segures", + "Devices will not yet be able to decrypt history from before they joined the room": "Els dispositius encara no podran desencriptar l'historial d'abans d'entrar a la sala", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Quan s'activa la encriptació en una sala, no es pot desactivar posteriorment (per ara)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Els missatges encriptats no es podran veure en els clients que encara no tenguin implementada la encriptació", + "Enable encryption": "L'encriptació està activada", + "(warning: cannot be disabled again!)": "(avís: no es pot desactivar de nou!)", + "Encryption is enabled in this room": "L'encriptació està activada en aquesta sala", + "Encryption is not enabled in this room": "L'encriptació no està activada en aquesta sala", + "Privileged Users": "Usuaris amb privilegis", + "No users have specific privileges in this room": "Cap usuari té privilegis específics en aquesta sala", + "Banned users": "Usuaris expulsats", + "This room is not accessible by remote Matrix servers": "Aquesta sala no és accessible per a servidors de Matrix remots", + "Leave room": "Surt de la sala", + "Tagged as: ": "Etiquetats com: ", + "To link to a room it must have an address.": "Per poder fer un enllaç a una sala aquesta ha de tenir an address.", + "Guests cannot join this room even if explicitly invited.": "Els usuaris d'altres xarxes no poden entrar a la sala d'aquest esdeveniment encara que hi hagin sigut convidats de forma explícita.", + "Click here to fix": "Feu clic aquí per corregir-ho", + "Who can access this room?": "Qui pot entrar a aquesta sala?", + "Only people who have been invited": "Només les persones que hi hagin sigut convidades", + "Anyone who knows the room's link, apart from guests": "Qualsevol que conegui l'enllaç de la sala, excepte usuaris d'altres xarxes", + "Publish this room to the public in %(domain)s's room directory?": "Voleu que es publiqui aquesta sala al directori de sales públiques de %(domain)s?", + "Who can read history?": "Qui pot llegir l'historial?", + "Anyone": "Qualsevol", + "Members only (since the point in time of selecting this option)": "Només els membres (a partir del punt en què seleccioneu aquesta opció)", + "Members only (since they were invited)": "Només els membres (a partir del punt en què hi són convidats)", + "Members only (since they joined)": "Només els membres (a partir del punt en què entrin a la sala)", + "Permissions": "Permisos", + "The default role for new room members is": "El rol per defecte dels nous membres de la sala és", + "To send messages, you must be a": "Per poder enviar missatges, heu de ser", + "To invite users into the room, you must be a": "Per poder convidar a usuaris a aquesta sala, heu de ser", + "To configure the room, you must be a": "Per poder configurar aquesta sala, heu de ser", + "To kick users, you must be a": "Per poder fer fora a usuaris, heu de ser", + "To ban users, you must be a": "Per expulsar a usuaris, heu de ser", + "To remove other users' messages, you must be a": "Per eliminar missatges d'altres usuaris, heu de ser", + "To send events of type , you must be a": "Per poder enviar esdeveniments de tipus , heu de ser", + "This room's internal ID is": "L'ID d'aquesta sala és", + "Add a topic": "Afegeix un tema", + "Scroll to unread messages": "Desplaça't fins els missatges no llegits", + "Jump to first unread message.": "Salta al primer missatge no llegit.", + "Invalid alias format": "El format de l'àlies no és vàlid", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' no és un format d'àlies vàlid", + "Invalid address format": "L'adreça no té un format vàlid", + "Anyone who knows the room's link, including guests": "Qualsevol que conegui l'enllaç de la sala, inclosos els usuaris d'altres xarxes", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' no és un format vàlid per a una adreça", + "not specified": "sense especificar", + "not set": "sense definir", + "Remote addresses for this room:": "Adreces remotes per a aquesta sala:", + "Addresses": "Adreces", + "The main address for this room is": "L'adreça principal d'aquesta sala és", + "Local addresses for this room:": "Adreces locals d'aquesta sala:", + "This room has no local addresses": "Aquesta sala no té adreces locals", + "New address (e.g. #foo:%(localDomain)s)": "Nova adreça (per exemple #foo:%(localDomain)s)", + "Invalid community ID": "L'ID de la comunitat no és vàlid", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' no és un ID de comunitat vàlid", + "New community ID (e.g. +foo:%(localDomain)s)": "Nou ID de comunitat (per exemple +foo:%(localDomain)s)", + "You have enabled URL previews by default.": "Heu enabled les previsualitzacions per defecte de les URL.", + "You have disabled URL previews by default.": "Heu disabled les previsualitzacions per defecte de les URL.", + "URL previews are enabled by default for participants in this room.": "Les previsualitzacions de les URL estan activades per defecte per als membres d'aquesta sala.", + "URL previews are disabled by default for participants in this room.": "Les previsualitzacions de les URL estan per defecte desactivades per als membres d'aquesta sala.", + "URL Previews": "Previsualitzacions de les URL", + "Error decrypting audio": "S'ha produït un error mentre es desencriptava l'audio", + "Error decrypting attachment": "S'ha produït un error en desencriptar el fitxer adjunt", + "Decrypt %(text)s": "Desencripta %(text)s", + "Download %(text)s": "Baixa %(text)s", + "Invalid file%(extra)s": "Fitxer invàlid%(extra)s", + "Error decrypting image": "S'ha produït un error en desencriptar la imatge", + "Error decrypting video": "S'ha produït un error en desencriptar el vídeo", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s ha canviat el seu avatar per a la sala %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s ha eliminat l'avatar de la sala.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s ha canviat l'avatar de la sala per aquest ", + "Copied!": "Copiat!", + "Failed to copy": "No s'ha pogut copiar", + "Add an Integration": "Afegeix una integració", + "Removed or unknown message type": "El tipus de missatge ha sigut eliminat o és desconegut", + "Message removed by %(userId)s": "El missatge ha sigut eliminat per l'usuari %(userId)s", + "Message removed": "S'ha eliminat el missatge", + "Robot check is currently unavailable on desktop - please use a web browser": "Actualment, la verificació del robot no està disponible a l'escriptori: utilitzeu un web browser", + "Sign in with CAS": "Inicieu sessió amb CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Podeu utilitzar les opcions de servidor personalitzades per a iniciar sessió en altres servidors Matrix, especificant una altre URL de servidor principal.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Això us permet utilitzar aquesta aplicació amb un compte de Matrix existent en un altre servidor.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "També podeu establir un servidor d'identitat personalitzat, però normalment això evitarà la interacció basada en l'adreça de correu electrònic amb altres usuaris.", + "To continue, please enter your password.": "Per poder continuar, si us plau, introduïu una contrasenya.", + "Password:": "Contrasenya:", + "An email has been sent to %(emailAddress)s": "S'ha enviat un correu electrònic a %(emailAddress)s", + "Please check your email to continue registration.": "Reviseu el vostre correu electrònic per a poder continuar amb el registre.", + "Token incorrect": "El testimoni és incorrecte", + "A text message has been sent to %(msisdn)s": "S'ha enviat un missatge de text a %(msisdn)s", + "Please enter the code it contains:": "Introduïu el codi que conté:", + "Start authentication": "Inicia l'autenticació", + "Username on %(hs)s": "Nom d'usuari a %(hs)s", + "User name": "Nom d'usuari", + "Mobile phone number": "Número de telèfon mòbil", + "Forgot your password?": "Heu oblidat la vostra contrasenya?", + "%(serverName)s Matrix ID": "ID de Matrix de %(serverName)s", + "Sign in with": "Inicieu sessió amb", + "Email address": "Correu electrònic", + "Sign in": "Inicia sessió", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Si no especifiqueu una adreça de correu electrònic, no podreu restablir la vostra contrasenya. N'esteu segur?", + "Email address (optional)": "Correu electrònic (opcional)", + "You are registering with %(SelectedTeamName)s": "Esteu registrant-vos amb %(SelectedTeamName)s", + "Mobile phone number (optional)": "Número de telèfon mòbil (opcional)", + "Default server": "Servidor per defecte", + "Custom server": "Servidor personalitzat", + "Identity server URL": "URL del servidor d'identitat", + "What does this mean?": "Què vol dir això?", + "Remove from community": "Elimina de la comunitat", + "Disinvite this user from community?": "Voleu retirar la invitació de aquest usuari a la comunitat?", + "Remove this user from community?": "Voleu eliminar de la comunitat a aquest usuari?", + "Failed to withdraw invitation": "No s'ha pogut retirar la invitació", + "Failed to remove user from community": "No s'ha pogut treure l'usuari de la comunitat", + "Filter community members": "Filtra membres de comunitat", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Esteu segur que voleu treure l'usuari '%(roomName)s' del grup %(groupId)s?", + "Home server URL": "URL del servidor d'origen", + "In reply to ": "In reply to ", + "Removing a room from the community will also remove it from the community page.": "L'eliminació d'una sala de la comunitat també l'eliminarà de la pàgina de la comunitat.", + "Failed to remove room from community": "No s'ha pogut eliminar la sala de la comunitat", + "Failed to remove '%(roomName)s' from %(groupId)s": "No s'ha pogut treure la sala '%(roomName)s' de la comunitat %(groupId)s", + "Something went wrong!": "Alguna cosa ha anat malament!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "No s'ha pogut actualitzar la visibilitat de la sala '%(roomName)s' de la comunitat %(groupId)s.", + "Visibility in Room List": "Visibilitat a la llista de les sales", + "Visible to everyone": "Visible per a tothom", + "Only visible to community members": "Només visible per als membres de la comunitat", + "Filter community rooms": "Filtra sales de comunitats", + "Something went wrong when trying to get your communities.": "S'ha produït un error en intentar obtenir les vostres comunitats.", + "You're not currently a member of any communities.": "Actualment no sou membre de cap comunitat.", + "Unknown Address": "Adreça desconeguda", + "NOTE: Apps are not end-to-end encrypted": "NOTA: Les aplicacions no estan encriptades d'extrem a extrem", + "Do you want to load widget from URL:": "Carregar ginys des de l'URL:", + "Allow": "Permetre", + "Delete Widget": "Suprimeix el giny", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "La supressió d'un giny l'elimina per a tots els usuaris d'aquesta sala. Esteu segur que voleu eliminar aquest giny?", + "Delete widget": "Suprimeix el giny", + "Revoke widget access": "Revoca l'accés del giny", + "Minimize apps": "Minimitza les aplicacions", + "Blacklist": "Llista negre", + "Unverify": "Sense verificar", + "Verify...": "Verificar...", + "No results": "Sense resultats", + "Delete": "Esborra", + "Communities": "Comunitats", + "Home": "Inici", + "Integrations Error": "S'ha produït un error d'integració", + "Could not connect to the integration server": "No s'ha pogut connectar amb el servidor de l'integració", + "Manage Integrations": "Gestiona les integracions", + "%(nameList)s %(transitionList)s": "%(transitionList)s%(nameList)s", + "%(severalUsers)sjoined %(count)s times": { + "one": "%(severalUsers)s han entrat", + "other": "%(severalUsers)s han entrat %(count)s vegades" + }, + "Guest access is disabled on this Home Server.": "L'accés a usuaris d'altres xarxes no està permès en aquest servidor.", + "Unblacklist": "Treure de la llista negre", + "%(oneUser)sjoined %(count)s times": { + "one": "%(oneUser)s s'ha unit", + "other": "%(oneUser)s ha entrat %(count)s vegades" + }, + "%(severalUsers)sleft %(count)s times": { + "one": "%(severalUsers)s han sortit", + "other": "%(severalUsers)s han sortit %(count)s vegades" + }, + "%(oneUser)sleft %(count)s times": { + "one": "%(oneUser)s ha sortit", + "other": "%(oneUser)s ha sortit %(count)s vegades" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s s'han unit i han sortit %(count)s vegades", + "one": "%(severalUsers)s s'han unit i han sortit" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s ha entrat i ha sortit %(count)s vegades", + "one": "%(oneUser)s ha entrat i ha sortit" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s han sortit i han tornat a entrar %(count)s vegades", + "one": "%(severalUsers)s han sortit i han tornat a entrar" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s ha sortit i ha tornat a entrar %(count)s vegades", + "one": "%(oneUser)s ha sortit i ha tornat a entrar" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s han rebutjat les seves invitacions %(count)s vegades", + "one": "%(severalUsers)s han rebutjat les seves invitacions" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s ha rebutjat la seva invitació %(count)s vegades", + "one": "%(oneUser)s ha rebutjat la seva invitació" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "a %(severalUsers)s els hi han retirat les seves invitacions %(count)s vegades", + "one": "a %(severalUsers)s els hi han retirat les seves invitacions" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "a %(oneUser)s li han retirat la seva invitació %(count)s vegades", + "one": "a %(oneUser)s li han retirat la seva invitació" + }, + "were invited %(count)s times": { + "other": "a sigut invitat %(count)s vegades", + "one": "han sigut convidats" + }, + "was invited %(count)s times": { + "other": "ha sigut convidat %(count)s vegades", + "one": "ha sigut convidat" + }, + "were banned %(count)s times": { + "other": "han sigut expulsats %(count)s vegades", + "one": "ha sigut expulsat" + }, + "was banned %(count)s times": { + "other": "ha sigut expulsat %(count)s vegades", + "one": "ha sigut expulsat" + }, + "were unbanned %(count)s times": { + "other": "han sigut readmesos %(count)s vegades", + "one": "han sigut readmesos" + }, + "was unbanned %(count)s times": { + "other": "ha sigut readmès %(count)s vegades", + "one": "ha sigut readmès" + }, + "were kicked %(count)s times": { + "other": "els han fet fora %(count)s vegades", + "one": "els han fet fora" + }, + "was kicked %(count)s times": { + "other": "l'han fet fora %(count)s vegades", + "one": "l'han fet fora" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s han canviat el seu nom %(count)s vegades", + "one": "%(severalUsers)s han canviat el seu nom" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s han canviat el seu nom %(count)s vegades", + "one": "%(oneUser)s ha canviat el seu nom" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s han canviat el seu avatar %(count)s vegades", + "one": "%(severalUsers)s han canviat el seu avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s han canviat el seu avatar %(count)s vegades", + "one": "%(oneUser)s ha canviat el seu avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s i %(count)s altres", + "one": "%(items)s i un altre" + }, + "%(items)s and %(lastItem)s": "%(items)s i %(lastItem)s", + "collapse": "col·lapsa", + "expand": "expandeix", + "Custom of %(powerLevel)s": "Personalitzat de %(powerLevel)s", + "Custom level": "Nivell personalitzat", + "And %(count)s more...": { + "other": "I %(count)s més..." + }, + "ex. @bob:example.com": "per exemple @carles:exemple.cat", + "Add User": "Afegeix un usuari", + "Matrix ID": "ID de Matrix", + "Matrix Room ID": "ID de sala de Matrix", + "email address": "correu electrònic", + "Try using one of the following valid address types: %(validTypesList)s.": "Proveu d'utilitzar un dels següents tipus d'adreça vàlids: %(validTypesList)s.", + "You have entered an invalid address.": "No heu introduït una adreça vàlida.", + "Create a new chat or reuse an existing one": "Creeu un xat nou o feu-ne servit un d'existent", + "Start new chat": "Inicia un nou xat", + "You already have existing direct chats with this user:": "Ja teniu xats directes amb aquest usuari:", + "Start chatting": "Comença a xerrar", + "Click on the button below to start chatting!": "Feu clic al botó de sota per començar a xerrar!", + "Start Chatting": "Comenceu a xatejar", + "Confirm Removal": "Confirmeu l'eliminació", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Esteu segur que voleu eliminar (suprimir) aquest esdeveniment? Tingueu en compte que si suprimiu un nom sala o si feu un canvi de tema, desfaria el canvi.", + "This room is not showing flair for any communities": "Aquesta sala no mostra talent per a cap comunitat", + "Flair": "Talents", + "Showing flair for these communities:": "Mostra els talents d'aquestes comunitats:", + "Flair will appear if enabled in room settings": "Els talents es mostraran si són activats a la configuració de la sala", + "Flair will not appear": "Els talents no es mostraran", + "Display your community flair in rooms configured to show it.": "Mostra els talents de la vostra comunitat dins les sales configurades per a mostrar-los.", + "This Home Server would like to make sure you are not a robot": "Aquest servidor amfitrió es vol assegurar que no sou un robot", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Les ID de les comunitats només poden contendre caràcters a-z, 0-9, o '=_-./'", + "Community IDs cannot be empty.": "Les ID de les comunitats no poden estar buides.", + "Something went wrong whilst creating your community": "S'ha produït un error al crear la vostra comunitat", + "Create Community": "Crea una comunitat", + "Community Name": "Nom de la comunitat", + "Example": "Exemple", + "Community ID": "ID de la comunitat", + "example": "exemple", + "Create": "Crea", + "Create Room": "Crea una sala", + "Room name (optional)": "Nom de la sala (opcional)", + "Advanced options": "Opcions avançades", + "This setting cannot be changed later!": "Aquests paràmetres no es poden canviar després!", + "Unknown error": "S'ha produït un error desconegut", + "Incorrect password": "Contrasenya incorrecta", + "Deactivate Account": "Desactivar el compte", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Per verificar que es pot confiar en aquest dispositiu, poseu-vos en contacte amb el propietari mitjançant altres mitjans (per exemple, en persona o amb una trucada telefònica) i pregunteu-li si la clau que veuen a la configuració del seu usuari, aquest dispositiu coincideix amb la següent clau:", + "Device name": "Nom del dispositiu", + "Device key": "Clau del dispositiu", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Si coincideix, premeu el botó de verificació de sota. Si no coincideix, algú més està interceptant aquest dispositiu i probablement voleu prémer el botó de llista negra.", + "In future this verification process will be more sophisticated.": "En un futur, aquest procés de verificació serà més sofisticat.", + "Verify device": "Verifica el dispositiu", + "I verify that the keys match": "Verifico que les claus coincideixen", + "An error has occurred.": "S'ha produït un error.", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Heu afegit el nou dispositiu '%(displayName)s', que està demanant les claus d'encriptació.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "El dispositiu no verificat '%(displayName)s' està demanat les claus d'encriptació.", + "Start verification": "Inicia la verificació", + "Share without verifying": "Comparteix sense verificar", + "Ignore request": "Ignora la sol·licitud", + "Loading device info...": "S'està carregant la informació del dispositiu...", + "Encryption key request": "Sol·licitud de claus", + "Unable to restore session": "No s'ha pogut restaurar la sessió", + "Invalid Email Address": "El correu electrònic no és vàlid", + "This doesn't appear to be a valid email address": "Aquest no sembla ser un correu electrònic vàlid", + "Verification Pending": "Verificació pendent", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Reviseu el vostre correu electrònic i feu clic a l'enllaç que conté. Un cop fet això, feu clic a Continua.", + "Unable to add email address": "No s'ha pogut afegir el correu electrònic", + "Unable to verify email address.": "No s'ha pogut verificar el correu electrònic.", + "This will allow you to reset your password and receive notifications.": "Això us permetrà restablir la vostra contrasenya i rebre notificacions.", + "Skip": "Omet", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Els noms d'usuari només poden contenir lletres, números, punts, guionets i guionets baixos.", + "Username not available": "Aquest nom d'usuari no està disponible", + "Username invalid: %(errMessage)s": "El nom d'usuari és invàlid: %(errMessage)s", + "An error occurred: %(error_string)s": "S'ha produït un error: %(error_string)s", + "Username available": "Aquest nom d'usuari està disponible", + "To get started, please pick a username!": "Per començar, seleccioneu un nom d'usuari!", + "This will be your account name on the homeserver, or you can pick a different server.": "Aquest serà el nom del seu compte al servidor amfitrió, o bé trieu-ne un altre different server.", + "If you already have a Matrix account you can log in instead.": "Si ja teniu un compte a Matrix, podeu log in.", + "Block users on other matrix homeservers from joining this room": "Impedeix als usuaris d'altres servidors de Matrix d'entrar a aquesta sala", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si anteriorment heu utilitzat un versió de Riot més recent, la vostra sessió podría ser incompatible amb aquesta versió. Tanqueu aquesta finestra i torneu a la versió més recent.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Actualment teniu a la llista negre els dispositius no verificats; per enviar missatges a aquests dispositius, els heu de verificar abans.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Recomanem que dugueu a terme el procès de verificació per a cada dispositiu per tal de confirmar que són del legítim propietari, però podeu enviar el missatge sense verificar-ho si ho preferiu.", + "Room contains unknown devices": "Hi ha dispositius desconeguts a la sala", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "A la sala \"%(RoomName)s\" hi ha dispositius que no havíeu vist abans.", + "Unknown devices": "Dispositius desconeguts", + "Private Chat": "Xat privat", + "Public Chat": "Xat públic", + "Custom": "Personalitzat", + "Name": "Nom", + "Topic": "Tema", + "Make this room private": "Fes que aquesta sala sigui privada", + "Share message history with new users": "Comparteix l'historial dels missatges amb els nous usuaris", + "Encrypt room": "Sala encriptada", + "You must register to use this functionality": "Heu de register per utilitzar aquesta funcionalitat", + "You must join the room to see its files": "Heu d'entrar a la sala per poder-ne veure els fitxers", + "There are no visible files in this room": "No hi ha fitxers visibles en aquesta sala", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

Aquest és l'HTML per a la pàgina de la vostra comunitat

\n

\n Utilitzeu la descripció llarga per a presentar la comunitat a nous membres,\n o per afegir-hi enlaços d'interès. \n

\n

\n També podeu utilitzar etiquetes 'img'.\n

\n", + "Add rooms to the community summary": "Afegiu sales al resum de la comunitat", + "Which rooms would you like to add to this summary?": "Quines sales voleu afegir a aquest resum?", + "Add to summary": "Afegeix-ho al resum", + "Failed to add the following rooms to the summary of %(groupId)s:": "No s'ha pogut afegir al resum de la comunitat %(groupId)s les següents sales:", + "Add a Room": "Afegeix una sala", + "Failed to remove the room from the summary of %(groupId)s": "No s'ha pogut eliminar la sala del resum de la comunitat %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "La sala '%(roomName)s' no s'ha pogut eliminar del resum.", + "Add users to the community summary": "Afegeix usuaris al resum de la comunitat", + "Who would you like to add to this summary?": "A qui vol afegir a aquest resum?", + "Failed to add the following users to the summary of %(groupId)s:": "No s'ha pogut afegir al resum de la comunitat %(groupId)s, els següents usuaris:", + "Add a User": "Afegeix un usuari", + "Failed to remove a user from the summary of %(groupId)s": "No s'ha pogut eliminar l'usuari del resum de la comunitat %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "L'usuari '%(displayName)s' no s'ha pogut eliminar del resum.", + "Failed to upload image": "No s'ha pogut pujar la imatge", + "Failed to update community": "No s'ha pogut actualitzar la comunitat", + "Unable to accept invite": "No s'ha pogut acceptar la invitació", + "Unable to reject invite": "No s'ha pogut rebutjar la invitació", + "Leave Community": "Abandona la comunitat", + "Leave %(groupName)s?": "Voleu sortir de la comunitat %(groupName)s?", + "Leave": "Surt", + "Community Settings": "Paràmetres de la comunitat", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Aquestes sales es mostren a la pàgina de la comunitat als seus membres i poden entrar-hi fent clic sobre elles.", + "Featured Rooms:": "Sales destacades:", + "Featured Users:": "Usuaris destacats:", + "%(inviter)s has invited you to join this community": "%(inviter)s vos convida a unir-vos a aquesta comunitat", + "You are an administrator of this community": "Sou un administrador d'aquesta comunitat", + "You are a member of this community": "Sou un membre d'aquesta comunitat", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Esteu a punt de ser portat a un lloc de tercers perquè pugui autenticar-se amb el vostre compte per utilitzar-lo amb %(integrationsUrl)s. Voleu continuar?", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "La vostra comunitat no té una descripció llarga, una pàgina HTML per mostrar als membres de la comunitat.
Feu clic aquí per obrir la configuració i donar-ne una!", + "Long Description (HTML)": "Descripció llarga (HTML)", + "Description": "Descripció", + "Community %(groupId)s not found": "No s'ha pogut trobar la comunitat %(groupId)s", + "This Home server does not support communities": "Aquest servidor amfitrió no admet comunitats", + "Failed to load %(groupId)s": "No s'ha pogut carregar la comunitat %(groupId)s", + "Reject invitation": "Rebutja la invitació", + "Are you sure you want to reject the invitation?": "Esteu segur que voleu rebutjar la invitació?", + "Failed to reject invitation": "No s'ha pogut rebutjar la invitació", + "Are you sure you want to leave the room '%(roomName)s'?": "Esteu segur que voleu sortir de la sala '%(roomName)s'?", + "Failed to leave room": "No s'ha pogut sortir de la sala", + "For security, this session has been signed out. Please sign in again.": "Per seguretat, aquesta sessió s'ha tancat. Torna a iniciar la sessió.", + "Old cryptography data detected": "S'han detectat dades de criptografia antigues", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "S'han detectat dades d'una versió antiga de Riot. Això pot provocar que l'encriptació d'extrem a extrem no funcioni correctament a la versió anterior. Els missatges encriptats d'extrem a extrem que s'han intercanviat recentment mentre s'utilitzava la versió anterior no es poden desencriptar en aquesta versió. També pot provocar que els missatges intercanviats amb aquesta versió fallin. Si teniu problemes, tanqueu-lo i torneu-ho a engegar. Per poder llegir l'historial dels missatges encriptats, exporteu i torneu a importar les vostres claus.", + "Logout": "Surt", + "Your Communities": "Les teves comunitats", + "Error whilst fetching joined communities": "S'ha produït un error en buscar comunitats unides", + "Create a new community": "Crea una nova comunitat", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea una comunitat per agrupar usuaris i sales! Creeu una pàgina d'inici personalitzada per definir el vostre espai a l'univers Matrix.", + "You have no visible notifications": "No teniu cap notificació visible", + "Scroll to bottom of page": "Desplaça't fins a la part inferior de la pàgina", + "Message not sent due to unknown devices being present": "El missatge no s'ha enviat perquè hi ha dispositius desconeguts presents", + "%(count)s of your messages have not been sent.": { + "other": "Alguns dels vostres missatges no s'han enviat.", + "one": "El vostre missatge no s'ha enviat." + }, + "Warning": "Avís", + "Connectivity to the server has been lost.": "S'ha perdut la connectivitat amb el servidor.", + "Sent messages will be stored until your connection has returned.": "Els missatges enviats s'emmagatzemaran fins que la vostra connexió hagi tornat.", + "%(count)s new messages": { + "other": "%(count)s nous missatges", + "one": "%(count)s nou missatge" + }, + "Active call": "Trucada activa", + "You seem to be uploading files, are you sure you want to quit?": "Sembla que s'està pujant fitxers, esteu segur que voleu sortir?", + "You seem to be in a call, are you sure you want to quit?": "Sembla que està en una trucada, estàs segur que vols sortir?", + "Failed to upload file": "No s'ha pogut pujar el fitxer", + "Server may be unavailable, overloaded, or the file too big": "El servidor pot estar no disponible, sobrecarregat o el fitxer és massa gran", + "Search failed": "No s'ha pogut cercar", + "Server may be unavailable, overloaded, or search timed out :(": "Pot ser que el servidor no estigui disponible, que estigui sobrecarregat o que s'ha esgotat el temps de cerca :(", + "No more results": "No hi ha més resultats", + "Unknown room %(roomId)s": "La sala %(roomId)s és desconeguda", + "Room": "Sala", + "Failed to save settings": "No s'ha pogut desar la configuració", + "Failed to reject invite": "No s'ha pogut rebutjar la invitació", + "Fill screen": "Emplena la pantalla", + "Click to unmute video": "Feu clic per activar el so de vídeo", + "Click to mute video": "Feu clic per desactivar el so de vídeo", + "Click to unmute audio": "Feu clic per activar el so", + "Click to mute audio": "Feu clic per desactivar el so", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "S'ha intentat carregar un punt específic dins la línia de temps d'aquesta sala, però no teniu permís per veure el missatge en qüestió.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "S'ha intentat carregar un punt específic de la línia de temps d'aquesta sala, però no s'ha pogut trobar.", + "Failed to load timeline position": "No s'ha pogut carregar aquesta posició de la línia de temps", + "Show devices, send anyway or cancel.": "Mostra els dispositius, envia de totes maneres o cancel·la.", + "Signed Out": "Sessió tancada", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Reenviar tot o cancel·lar tot ara. També pots seleccionar missatges individualment per reenviar o cancel·lar.", + "one": "Reenviar missarge o cancel·lar missatge ara." + }, + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "No hi ha ningú més aquí! T'agradaria convidar algú o no avisar més que la sala està buida?", + "Uploading %(filename)s and %(count)s others": { + "other": "Pujant %(filename)s i %(count)s més", + "zero": "Pujant %(filename)s" + }, + "Light theme": "Tema clar", + "Dark theme": "Tema fosc", + "Status.im theme": "Tema d'Status.im", + "Sign out": "Tancar sessió", + "Remove %(threePid)s?": "Esborrar %(threePid)s?", + "Interface Language": "Idioma de l'interfície", + "User Interface": "Interfície d'usuari", + "Import E2E room keys": "Importar claus E2E de la sala", + "Cryptography": "Criptografia", + "Device ID:": "ID del dispositiu:", + "Device key:": "Clau del dispositiu:", + "Ignored Users": "Usuaris ignorats", + "Labs": "Laboraroris", + "Use with caution": "Utilitzar amb precaució", + "Deactivate my account": "Desactivar la meva compte", + "Updates": "Actualitzacions", + "matrix-react-sdk version:": "Versió de matrix-react-sdk:", + "riot-web version:": "Versió de riot-web:", + "olm version:": "Versió d'olm:", + "Your password has been reset": "La teva contrasenya s'ha reiniciat", + "New password": "Nova contrasenya", + "Confirm your new password": "Confirma la teva nova contrasenya", + "Incorrect username and/or password.": "Usuari i/o contrasenya incorrectes.", + "The phone number entered looks invalid": "El número de telèfon introduït sembla erroni", + "none": "cap", + "Curve25519 identity key": "Clau de la identitat Curve25519", + "Claimed Ed25519 fingerprint key": "Empremta digital Ed25519 reclamada", + "Session ID": "ID de la sessió", + "End-to-end encryption information": "Informació de l'encriptació d'extrem a extrem", + "Event information": "Informació d'esdeveniment", + "User ID": "ID de l'usuari", + "Decryption error": "Error de desencriptació", + "Sender device information": "Informació del dispositiu remitent", + "Export room keys": "Exporta les claus de la sala", + "Upload an avatar:": "Pujar un avatar:", + "Confirm passphrase": "Introduïu una contrasenya", + "Export": "Exporta", + "Import room keys": "Importa les claus de la sala", + "Import": "Importa", + "The version of Riot.im": "La versió de Riot.im", + "Email": "Correu electrònic", + "Add email address": "Afegeix correu electrònic", + "I have verified my email address": "He verificat l'adreça de correu electrònic", + "Send Reset Email": "Envia email de reinici", + "Your homeserver's URL": "URL del teu homeserver", + "Your identity server's URL": "URL del teu servidor d'identitat", + "Analytics": "Analítiques", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s ha canviat el seu nom visible a %(displayName)s.", + "Server may be unavailable or overloaded": "El servidor pot estar inaccessible o sobrecarregat", + "Display name": "Nom visible", + "Identity Server is": "El servidor d'identitat es", + "Submit debug logs": "Enviar logs de depuració", + "The platform you're on": "La plataforma a la que estàs", + "Whether or not you're logged in (we don't record your user name)": "Si estàs identificat o no (no desem el teu nom d'usuari)", + "Your language of choice": "El teu idioma preferit", + "Which officially provided instance you are using, if any": "Quina instància oficial estàs utilitzant, si escau", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Si estàs utilitzant el mode Richtext del Rich Text Editor o no", + "The information being sent to us to help make Riot.im better includes:": "La informació enviada a Riot.im per ajudar-nos a millorar inclou:", + "Fetching third party location failed": "S'ha produït un error en obtenir la ubicació de tercers", + "A new version of Riot is available.": "Hi ha una nova versió del Riot disponible.", + "Couldn't load home page": "No s'ha pogut carregar la pàgina d'inici", + "Send Account Data": "Envia les dades del compte", + "Advanced notification settings": "Paràmetres avançats de notificacions", + "Uploading report": "S'està enviant l'informe", + "Sunday": "Diumenge", + "Failed to add tag %(tagName)s to room": "No s'ha pogut afegir l'etiqueta %(tagName)s a la sala", + "Notification targets": "Objectius de les notificacions", + "Failed to set direct chat tag": "No s'ha pogut establir l'etiqueta del xat directe", + "Today": "Avui", + "Files": "Fitxers", + "You are not receiving desktop notifications": "No esteu rebent notificacions d'escriptori", + "Friday": "Divendres", + "Update": "Actualització", + "What's New": "Novetats", + "Add an email address above to configure email notifications": "Afegiu més amunt un correu electrònic per a configurar les notificacions", + "Expand panel": "Expandeix el panel", + "On": "Engegat", + "%(count)s Members": { + "other": "%(count)s membres", + "one": "%(count)s membre" + }, + "Filter room names": "Filtra els noms de les sales", + "Changelog": "Registre de canvis", + "Waiting for response from server": "S'està esperant una resposta del servidor", + "Uploaded on %(date)s by %(user)s": "Pujat el %(date)s per l'usuari %(user)s", + "Send Custom Event": "Envia els esdeveniments personalitzats", + "All notifications are currently disabled for all targets.": "Actualment totes les notificacions estan inhabilitades per a tots els objectius.", + "Failed to send logs: ": "No s'han pogut enviar els logs: ", + "delete the alias.": "esborra l'alies.", + "To return to your account in future you need to set a password": "Per poder tornar al vostre compte en un futur, heu de set a password", + "Forget": "Oblida", + "#example": "#exemple", + "Hide panel": "Amaga el panel", + "You cannot delete this image. (%(code)s)": "No podeu eliminar aquesta imatge. (%(code)s)", + "Cancel Sending": "Cancel·la l'enviament", + "This Room": "Aquesta sala", + "The Home Server may be too old to support third party networks": "El servidor local pot ser massa antic per a ser compatible amb xarxes de tercers", + "Resend": "Reenvia", + "Room not found": "No s'ha trobat la sala", + "Messages containing my display name": "Missatges que contenen el meu nom visible", + "Messages in one-to-one chats": "Missatges en xats un a un", + "Unavailable": "No disponible", + "Error saving email notification preferences": "No s'han pogut desar les preferències de les notificacions a causa d'un error", + "View Decrypted Source": "Mostra el codi desencriptat", + "Failed to update keywords": "No s'han pogut actualitzar les paraules clau", + "Notes:": "Notes:", + "remove %(name)s from the directory.": "elimina %(name)s del directori.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Les notificacions sobre les següents paraules clau segueixen regles que no es poden mostrar aquí:", + "Safari and Opera work too.": "Safari i Opera també fan la feina.", + "Please set a password!": "Si us plau, establiu una contrasenya", + "You have successfully set a password!": "Heu establert correctament la contrasenya", + "An error occurred whilst saving your email notification preferences.": "S'ha produït un error en desar les vostres preferències de notificació per correu electrònic.", + "Explore Room State": "Esbrina els estats de les sales", + "Source URL": "URL origen", + "Messages sent by bot": "Missatges enviats pel bot", + "Filter results": "Resultats del filtre", + "Members": "Membres", + "No update available.": "No hi ha cap actualització disponible.", + "Noisy": "Sorollós", + "Failed to get protocol list from Home Server": "No s'ha pogut obtenir la llista de protocols del servidor local", + "Collecting app version information": "S'està recollint la informació de la versió de l'aplicació", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Voleu esborrar de la sala l'alies %(alias)s i retirar %(name)s del directori?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Això farà possible que pugueu tronar al vostre compte des de qualsevol dispositiu.", + "Enable notifications for this account": "Habilita les notificacions per aquest compte", + "Directory": "Directori", + "Invite to this community": "Convida a aquesta comunitat", + "Search for a room": "Busca una sala", + "Search…": "Cerca…", + "Messages containing keywords": "Missatges que contenen keywords", + "When I'm invited to a room": "Quan sóc convidat a una sala", + "Tuesday": "Dimarts", + "Enter keywords separated by a comma:": "Introduïu les paraules clau separades per una coma:", + "Forward Message": "Reenvia el missatge", + "Remove %(name)s from the directory?": "Voleu retirar %(name)s del directori?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilitza moltes funcions avançades del navegador, algunes de les quals no estan disponibles o són experimentals al vostre navegador actual.", + "Developer Tools": "Eines de desenvolupador", + "Preparing to send logs": "Preparant l'enviament de logs", + "Explore Account Data": "Explora les dades del compte", + "Remove from Directory": "Elimina del directori", + "Saturday": "Dissabte", + "Remember, you can always set an email address in user settings if you change your mind.": "Recordeu-ho, si canvieu d'idea, sempre podreu establir una adreça de correu electrònic a las vostra configuració d'usuari.", + "Direct Chat": "Xat directe", + "The server may be unavailable or overloaded": "El servidor pot no estar disponible o sobrecarregat", + "Reject": "Rebutja", + "Failed to set Direct Message status of room": "No s'ha pogut establir l'estat del missatge directe de la sala", + "Monday": "Dilluns", + "All messages (noisy)": "Tots els missatges (sorollós)", + "Enable them now": "Habilita-ho ara", + "Messages containing my user name": "Missatges que contenen el meu nom d'usuari", + "Toolbox": "Caixa d'eines", + "Collecting logs": "S'estan recopilant els registres", + "more": "més", + "GitHub issue link:": "Enllaç de l'issue de GitHub:", + "Failed to get public room list": "No s'ha pogut obtenir el llistat de sales públiques", + "You must specify an event type!": "Heu d'especificar un tipus d'esdeveniment", + "(HTTP status %(httpStatus)s)": "(Estat de l´HTTP %(httpStatus)s)", + "All Rooms": "Totes les sales", + "State Key": "Clau d'estat", + "Please install Chrome or Firefox for the best experience.": "Si us plau, instal·leu Chrome or Firefox per gaudir d'una millor experiència.", + "Wednesday": "Dimecres", + "Send logs": "Envia els registres", + "All messages": "Tots els missatges", + "Call invitation": "Invitació de trucada", + "Downloading update...": "Descarregant l'actualització...", + "You have successfully set a password and an email address!": "Heu establert correctament la vostra contrasenya i l'adreça de correu electrònic", + "Failed to send custom event.": "No s'ha pogut enviar l'esdeveniment personalitzat.", + "What's new?": "Què hi ha de nou?", + "Notify me for anything else": "Notifica'm per a qualsevol altra cosa", + "View Source": "Mostra el codi", + "Keywords": "Paraules clau", + "Can't update user notification settings": "No es poden actualitzar els paràmetres de les notificacions de l'usuari", + "Notify for all other messages/rooms": "Notifica per a tots els altres missatges o sales", + "Unable to look up room ID from server": "No s'ha pogut cercar l'ID de la sala en el servidor", + "Couldn't find a matching Matrix room": "No s'ha pogut trobar una sala de Matrix que coincideixi", + "Invite to this room": "Convida a aquesta sala", + "You cannot delete this message. (%(code)s)": "No podeu eliminar aquest missatge. (%(code)s)", + "Thursday": "Dijous", + "I understand the risks and wish to continue": "Entenc el riscos i desitjo continuar", + "Logs sent": "Logs enviats", + "Back": "Enrere", + "Reply": "Respon", + "Show message in desktop notification": "Mostra els missatges amb notificacions d'escriptori", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Els logs de depuració contenen dades d'ús de l'aplicació que inclouen el teu nom d'usuari, les IDs o pseudònims de les sales o grups que has visitat i els noms d'usuari d'altres usuaris. No contenen missatges.", + "Unhide Preview": "Mostra la previsualització", + "Unable to join network": "No s'ha pogut unir-se a la xarxa", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "És possible que els hàgiu configurat en un client diferent de Riot. No podeu modificar-los amb Riot, però encara s'apliquen", + "Sorry, your browser is not able to run Riot.": "Disculpeu, el seu navegador not pot executar Riot.", + "Quote": "Cita", + "Messages in group chats": "Missatges en xats de grup", + "Yesterday": "Ahir", + "Error encountered (%(errorDetail)s).": "S'ha trobat un error (%(errorDetail)s).", + "Login": "Inicia sessió", + "Low Priority": "Baixa prioritat", + "Unable to fetch notification target list": "No s'ha pogut obtenir la llista d'objectius de les notificacions", + "Set Password": "Establiu una contrasenya", + "Enable audible notifications in web client": "Habilita les notificacions d'àudio al client web", + "Off": "Apagat", + "Riot does not know how to join a room on this network": "El Riot no sap com unir-se a una sala en aquesta xarxa", + "Mentions only": "Només mencions", + "Failed to remove tag %(tagName)s from room": "No s'ha pogut esborrar l'etiqueta %(tagName)s de la sala", + "You can now return to your account after signing out, and sign in on other devices.": "Ara podreu tornar a entrar al vostre compte des de altres dispositius.", + "Enable desktop notifications": "Habilita les notificacions d'escriptori", + "Enable email notifications": "Habilita les notificacions per correu electrònic", + "Event Type": "Tipus d'esdeveniment", + "Download this file": "Descarrega aquest fitxer", + "Pin Message": "Enganxa el missatge", + "Failed to change settings": "No s'han pogut modificar els paràmetres", + "View Community": "Mira la communitat", + "Event sent!": "S'ha enviat l'esdeveniment", + "Event Content": "Contingut de l'esdeveniment", + "Thank you!": "Gràcies!", + "Collapse panel": "Col·lapsa el tauler", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Amb el vostre navegador actual, l'aparença de l'aplicació pot ser completament incorrecta i algunes o totes les funcions poden no funcionar correctament. Si voleu provar-ho de totes maneres, podeu continuar, però esteu sols pel que fa als problemes que pugueu trobar!", + "Checking for an update...": "Comprovant si hi ha actualitzacions...", + "There are advanced notifications which are not shown here": "Hi ha notificacions avançades que no es mostren aquí", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s per a %(osName)s", + "Unknown device": "Dispositiu desconegut", + "Welcome to Riot.im": "Us donem la benvinguda a Riot.im", + "Chat with Riot Bot": "Conversa amb el Bot de Riot", + "Riot is not supported on mobile web. Install the app?": "Riot no és compatible amb la web per a mòbils. Voleu instal·lar l'aplicació per a mòbils?", + "Riot Desktop on %(platformName)s": "Riot d'escriptori per a %(platformName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Heu d'utilitzar HTTPS per poder fer una trucada amb pantalla compartida.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Podeu utilitzar opcions de servidor personalitzades per iniciar sessió en altres servidors Matrix especificant una URL diferent a la del servidor principal.
Això us permet utilitzar Riot amb un compte de Matrix existent en un servidor d'origen diferent.

També podeu establir un servidor d'identitat personalitzat, però no podreu convidar o ser convidat per correu electrònic.", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Xat descentralitzat, encriptat i col·laboratiu amb tecnologia de [matrix]", + "Search the room directory": "Cerqueu el directori de sales", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Ja existeixen moltes sales a Matrix vinculades a xarxes existents (Slack, IRC, Gitter, etc.) o independents. Feu un cop d'ull al directori!", + "Get started with some tips from Riot Bot!": "Comenceu amb alguns consells de Riot Bot!", + "General discussion about Matrix and Riot": "Debat general sobre Matrix i Riot", + "Discussion of all things Matrix!": "Debats sobre qualsevol cosa de Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Xat d'escriptori", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & Xat de matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & Xat matrix-android-sdk", + "Matrix technical discussions": "Debats tècnics sobre Matrix", + "Running Matrix services": "Serveis de Matrix en marxa", + "Community-run support for Synapse": "Suport de la comunitat per a Synapse", + "Admin support for Dendrite": "Suport dels administrador per a Dendrite", + "Announcements about Synapse releases": "Anuncis sobre llançaments de Synapse", + "Support for those using and running matrix-appservice-irc": "Suport per a aquells que utilitzen i executen matrix-appservice-irc", + "Building services on Matrix": "Construir serveis a Matrix", + "Support for those using the Matrix spec": "Suport per a aquells que utilitzen l'especificació Matrix", + "Design and implementation of E2E in Matrix": "Disseny i implementació de l'E2E a Matrix", + "Implementing VR services with Matrix": "Implementació de serveis VR amb Matrix", + "Implementing VoIP services with Matrix": "Implementació de serveis VoIP amb Matrix", + "Discussion of the Identity Service API": "Debat sobre l'API Identity Service", + "Support for those using, running and writing other bridges": "Suport per a aquells que utilitzen, executen i escriuen altres ponts", + "Contributing code to Matrix and Riot": "Contribuir amb codi a Matrix i Riot", + "Dev chat for the Riot/Web dev team": "Xat de l'equip de desenvolupadors Riot/Web per a desenvolupadors", + "Dev chat for the Dendrite dev team": "Xat de l'equip Dendrite per a desenvolupadors" +} \ No newline at end of file diff --git a/riot/i18n/cs.json b/riot/i18n/cs.json new file mode 100644 index 0000000..c018094 --- /dev/null +++ b/riot/i18n/cs.json @@ -0,0 +1,1354 @@ +{ + "Close": "Zavřít", + "Favourites": "Oblíbené", + "Filter room members": "Filtrovat členy místnosti", + "Historical": "Historické", + "Home": "Úvod", + "%(displayName)s is typing": "%(displayName)s právě píše", + "Jump to first unread message.": "Přeskočit na první nepřečtenou zprávu.", + "Logout": "Odhlásit se", + "Low priority": "Nízká priorita", + "Notifications": "Upozornění", + "People": "Lidé", + "Rooms": "Místnosti", + "Scroll to unread messages": "Přejít k nepřečteným zprávám", + "Search": "Hledání", + "Settings": "Nastavení", + "Start Chat": "Začít chat", + "This room": "Tato místnost", + "Unencrypted room": "Nezašifrovaná místnost", + "Failed to upload file": "Nahrání souboru se nezdařilo", + "Video call": "Videohovor", + "Voice call": "Telefonát", + "Sun": "Ne", + "Mon": "Po", + "Tue": "Út", + "Wed": "St", + "Thu": "Čt", + "Fri": "Pá", + "Sat": "So", + "Jan": "Led", + "Feb": "Úno", + "Mar": "Bře", + "Apr": "Dub", + "May": "Kvě", + "Jun": "Čvn", + "Jul": "Čvc", + "Aug": "Srp", + "Sep": "Zář", + "Oct": "Říj", + "Nov": "Lis", + "Dec": "Pro", + "There are no visible files in this room": "V této místnosti nejsou žádné viditelné soubory", + "Create new room": "Založit novou místnost", + "Room directory": "Adresář místností", + "Start chat": "Začít chat", + "Options": "Volby", + "Register": "Zaregistrovat", + "Cancel": "Storno", + "Error": "Chyba", + "Favourite": "V oblíbených", + "Mute": "Ztlumit", + "Continue": "Pokračovat", + "Failed to change password. Is your password correct?": "Nepodařilo se změnit heslo. Zadáváte své heslo správně?", + "Operation failed": "Operace se nezdařila", + "Remove": "Odebrat", + "unknown error code": "neznámý kód chyby", + "OK": "OK", + "Failed to forget room %(errCode)s": "Nepodařilo se zapomenout místnost %(errCode)s", + "Dismiss": "Zahodit", + "powered by Matrix": "poháněno Matrixem", + "Custom Server Options": "Vlastní serverové volby", + "Add a widget": "Přidat widget", + "Accept": "Přijmout", + "%(targetName)s accepted an invitation.": "%(targetName)s přijal/a pozvání.", + "Account": "Účet", + "Access Token:": "Přístupový žeton:", + "Add": "Přidat", + "Add a topic": "Přidat téma", + "Add email address": "Přidat e-mailovou adresu", + "Add phone number": "Přidat telefonní číslo", + "Admin": "Správce", + "Allow": "Povolit", + "VoIP": "VoIP", + "No Microphones detected": "Nerozpoznány žádné mikrofony", + "No Webcams detected": "Nerozpoznány žádné webkamery", + "Default Device": "Výchozí zařízení", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Advanced": "Pokročilé", + "Algorithm": "Algoritmus", + "Hide removed messages": "Skrýt odstraněné zprávy", + "Always show message timestamps": "Vždy zobrazovat časové značky zpráv", + "Authentication": "Ověření", + "A new password must be entered.": "Musíte zadat nové heslo.", + "An error has occurred.": "Nastala chyba.", + "Anyone": "Kdokoliv", + "Are you sure?": "Určitě?", + "Are you sure you want to leave the room '%(roomName)s'?": "Určitě chcete odejít z místnosti '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Určitě chcete odmítnout pozvání?", + "Are you sure you want to upload the following files?": "Určitě chcete nahrát následující soubory?", + "Attachment": "Příloha", + "Autoplay GIFs and videos": "Automaticky přehrávat GIFy a videa", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nelze se připojit k domovskému serveru – zkontrolujte prosím své připojení, prověřte, zdali je SSL certifikát vašeho domovského serveru důvěryhodný, a že některé z rozšíření prohlížeče neblokuje komunikaci.", + "Anyone who knows the room's link, apart from guests": "Kdokoliv, kdo má odkaz na místnost, kromě hostů", + "Anyone who knows the room's link, including guests": "Kdokoliv, kdo má odkaz na místnost, a to i hosté", + "Banned users": "Vykázaní uživatelé", + "Ban": "Vykázat", + "Bans user with given id": "Vykáže uživatele s daným id", + "Bulk Options": "Hromadné volby", + "Can't load user settings": "Nelze načíst uživatelské nastavení", + "Cannot add any more widgets": "Nelze přidat žádné další widgety", + "Change Password": "Změnit heslo", + "%(senderName)s changed their profile picture.": "%(senderName)s změnil/a svůj profilový obrázek.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s změnil/a název místnosti na %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s odstranil/a název místnosti.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s změnil/a téma na „%(topic)s“.", + "Changes to who can read history will only apply to future messages in this room": "Změny viditelnosti historie budou platné až pro budoucí zprávy v této místnosti", + "Changes your display nickname": "Změní vaši zobrazovanou přezdívku", + "Changes colour scheme of current room": "Změní barevné schéma aktuální místnosti", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "V současnosti změna hesla resetuje všechny šifrovací klíče na všech zařízeních, což vám znepřístupní historii zašifrovaných chatů, pokud si nejprve nevyexportujete klíče svých místností a pak je do nich znova nevložíte. Toto bude v budoucnu lépe ošetřeno.", + "Clear Cache and Reload": "Vymazat mezipaměť a načíst znovu", + "Clear Cache": "Vymazat mezipaměť", + "Click here to join the discussion!": "Kliknutím zde se přidáte k diskuzi!", + "Command error": "Chyba příkazu", + "Commands": "Příkazy", + "Conference call failed.": "Konferenční hovor selhal.", + "Conference calling is in development and may not be reliable.": "Konferenční hovory jsou stále ve vývoji a nemusí být spolehlivé.", + "Conference calls are not supported in encrypted rooms": "V šifrovaných místnostech nejsou konferenční hovory podporovány", + "Conference calls are not supported in this client": "V tomto klientovi nejsou konferenční hovory podporovány", + "Confirm password": "Potvrďte heslo", + "Confirm your new password": "Potvrďte své nové heslo", + "Could not connect to the integration server": "Nepodařilo se spojit se začleňovacím serverem", + "%(count)s new messages": { + "one": "%(count)s nová zpráva", + "other": "%(count)s nových zpráv" + }, + "Create an account": "Vytvořit účet", + "Create Room": "Vytvořit místnost", + "Cryptography": "Kryptografie", + "Current password": "Současné heslo", + "Custom": "Vlastní", + "Custom level": "Vlastní úroveň", + "/ddg is not a command": "/ddg není příkazem", + "Deactivate Account": "Deaktivovat účet", + "Deactivate my account": "Deaktivovat můj účet", + "Decline": "Odmítnout", + "Decrypt %(text)s": "Dešifrovat %(text)s", + "Decryption error": "Chyba dešifrování", + "Delete": "Smazat", + "Delete widget": "Vymazat widget", + "Default": "Výchozí", + "Device already verified!": "Zařízení již bylo ověřeno!", + "Device ID": "ID zařízení", + "Device ID:": "ID zařízení:", + "device id: ": "id zařízení: ", + "Device key:": "Klíč zařízení:", + "Devices": "Zařízení", + "Direct chats": "Přímé chaty", + "Disable Notifications": "Vypnout upozornění", + "Disinvite": "Odvolat pozvání", + "Display name": "Zobrazované jméno", + "Don't send typing notifications": "Neupozorňovat ostatní, že píšu", + "Download %(text)s": "Stáhnout %(text)s", + "Drop File Here": "Přetáhněte soubor sem", + "Edit": "Upravit", + "Email": "E-mail", + "Email address": "E-mailová adresa", + "Email address (optional)": "E-mailová adresa (nepovinná)", + "Email, name or matrix ID": "E-mail, jméno nebo matrix ID", + "Emoji": "Emodži", + "Enable automatic language detection for syntax highlighting": "Zapnout kvůli zvýrazňování syntaxe automatické rozpoznávání jazyka", + "Enable encryption": "Zapnout šifrování", + "Enable Notifications": "Zapnout upozornění", + "Encrypted by a verified device": "Zašifrováno ověřeným zařízením", + "Encrypted by an unverified device": "Zašifrováno neověřeným zařízením", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Zašifrované zprávy nepůjde vidět v klientech, kteří šifrování ještě nezavedli", + "Encrypted room": "Zašifrovaná místnost", + "Encryption is enabled in this room": "V této místnosti je zapnuto šifrování", + "Encryption is not enabled in this room": "V této místnosti není zapnuto šifrování", + "%(senderName)s ended the call.": "%(senderName)s ukončil/a hovor.", + "End-to-end encryption information": "Informace o end-to-end šifrování", + "End-to-end encryption is in beta and may not be reliable": "End-to-end šifrování je v raném vývoji a nemusí být spolehlivé", + "Enter Code": "Zadejte kód", + "Enter passphrase": "Zadejte heslo", + "Error decrypting attachment": "Chyba při dešifrování přílohy", + "Error: Problem communicating with the given homeserver.": "Chyba: problém v komunikaci s daným domovským serverem.", + "Event information": "Informace o události", + "Existing Call": "Probíhající hovor", + "Export": "Exportovat", + "Export E2E room keys": "Exportovat E2E klíče místnosti", + "Failed to ban user": "Nepodařilo se vykázat uživatele", + "Failed to join room": "Vstup do místnosti se nezdařil", + "Failed to kick": "Vykopnutí se nezdařilo", + "Failed to leave room": "Odejití z místnosti se nezdařilo", + "Failed to mute user": "Ztlumení uživatele se nezdařilo", + "Failed to send email": "Odeslání e-mailu se nezdařilo", + "Failed to save settings": "Nepodařilo se uložit nastavení", + "Failed to reject invitation": "Nepodařilo se odmítnout pozvání", + "Failed to reject invite": "Nepodařilo se odmítnout pozvánku", + "Failed to send request.": "Odeslání žádosti se nezdařilo.", + "Failed to set avatar.": "Nastavení avataru se nezdařilo.", + "Failed to set display name": "Nepodařilo se nastavit zobrazované jméno", + "Failed to set up conference call": "Nepodařilo se nastavit konferenční hovor", + "Failed to toggle moderator status": "Změna statusu moderátora se nezdařila", + "Failed to unban": "Přijetí zpět se nezdařilo", + "Failed to upload profile picture!": "Nahrání profilového obrázku se nezdařilo", + "Failure to create room": "Vytvoření místnosti se nezdařilo", + "Forget room": "Zapomenout místnost", + "Forgot your password?": "Zapomněl/a jste své heslo?", + "For security, this session has been signed out. Please sign in again.": "Z bezpečnostních důvodů bylo toto přihlášení ukončeno. Přihlašte se prosím znovu.", + "%(names)s and %(lastPerson)s are typing": "%(names)s a %(lastPerson)s píší", + "and %(count)s others...": { + "other": "a %(count)s další...", + "one": "a někdo další..." + }, + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget upravil/a %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget odstranil/a %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget přidal/a %(senderName)s", + "Automatically replace plain text Emoji": "Automaticky nahrazovat textové emodži", + "Failed to upload image": "Obrázek se nepodařilo nahrát", + "%(senderName)s answered the call.": "%(senderName)s přijal/a hovor.", + "Click to mute audio": "Kliknutím ztlumíte zvuk", + "Failed to verify email address: make sure you clicked the link in the email": "E-mailovou adresu se nepodařilo ověřit. Přesvědčte se, že jste kliknul/a na zaslaný odkaz", + "Guest access is disabled on this Home Server.": "Na tomto domovském serveru je hostům vstup odepřen.", + "Guests cannot join this room even if explicitly invited.": "Hosté nemohou vstoupit do této místnosti, i když jsou přímo pozváni.", + "Hide read receipts": "Skrýt potvrzení o přečtení", + "Homeserver is": "Domovský server je", + "Identity Server is": "Server identity je", + "I have verified my email address": "Ověřil/a jsem svoji e-mailovou adresu", + "Import": "Importovat", + "Import E2E room keys": "Importovat E2E klíče místností", + "Incoming call from %(name)s": "Příchozí hovor od %(name)s", + "Incoming video call from %(name)s": "Příchozí videohovor od %(name)s", + "Incoming voice call from %(name)s": "Příchozí hlasový hovor od %(name)s", + "Incorrect username and/or password.": "Nesprávné uživatelské jméno nebo heslo.", + "Incorrect verification code": "Nesprávný ověřovací kód", + "Interface Language": "Jazyk rozhraní", + "Invalid alias format": "Neplaný formát aliasu", + "Invalid address format": "Neplatný formát adresy", + "Invalid Email Address": "Neplatná e-mailová adresa", + "%(senderName)s invited %(targetName)s.": "%(senderName)s pozval/a %(targetName)s.", + "Invite new room members": "Pozvat do místnosti nové členy", + "Invites": "Pozvánky", + "Invites user with given id to current room": "Pozve do aktuální místnosti uživatele s daným id", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' není platný formát adresy", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' není platný formát aliasu", + "Join Room": "Vstoupit do místnosti", + "%(targetName)s joined the room.": "%(targetName)s vstoupil/a do místnosti.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s vykopnul/a %(targetName)s.", + "Kick": "Vykopnout", + "Kicks user with given id": "Vykopne uživatele s daným id", + "Last seen": "Naposledy viděn/a", + "Leave room": "Odejít z místnosti", + "Level:": "Úroveň:", + "Local addresses for this room:": "Místní adresy této místnosti:", + "Logged in as:": "Přihlášen/a jako:", + "matrix-react-sdk version:": "Verze matrix-react-sdk:", + "Mobile phone number": "Číslo mobilního telefonu", + "Mobile phone number (optional)": "Číslo mobilního telefonu (nepovinné)", + "Moderator": "Moderátor", + "Name": "Jméno", + "New address (e.g. #foo:%(localDomain)s)": "Nová adresa (např. #neco:%(localDomain)s)", + "New password": "Nové heslo", + "New passwords don't match": "Nová hesla se neshodují", + "New passwords must match each other.": "Nová hesla se musí shodovat.", + "not set": "nenastaveno", + "not specified": "neurčeno", + "(not supported by this browser)": "(nepodporováno tímto prohlížečem)", + "": "", + "AM": "dop.", + "PM": "odp.", + "NOT verified": "Neověřeno", + "No display name": "Žádné zobrazované jméno", + "No more results": "Žádné další výsledky", + "No results": "Žádné výsledky", + "olm version:": "verze olm:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Jakmile je jednou šifrování v místnosti zapnuto, nelze už vypnout (prozatím)", + "Only people who have been invited": "Pouze lidé, kteří byli pozváni", + "Password": "Heslo", + "Password:": "Heslo:", + "Passwords can't be empty": "Hesla nemohou být prázdná", + "Permissions": "Oprávnění", + "Phone": "Telefon", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s změnil/a úroveň moci o %(powerLevelDiffText)s.", + "Define the power level of a user": "Stanovte úroveň moci uživatele", + "Failed to change power level": "Nepodařilo se změnit úroveň moci", + "Power level must be positive integer.": "Úroveň moci musí být kladné celé číslo.", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (moc %(powerLevelNumber)s)", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Tuto změnu nepůjde vrátit zpět, protože tomuto uživateli nastavujete stejnou úroveň moci, jakou máte vy.", + "Alias (optional)": "Alias (nepovinný)", + "Room name (optional)": "Název místnosti (nepovinný)", + "Results from DuckDuckGo": "Výsledky z DuckDuckGo", + "Return to login screen": "Vrátit k přihlašovací obrazovce", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot není oprávněn posílat vám upozornění – zkontrolujte prosím nastavení svého prohlížeče", + "Riot was not given permission to send notifications - please try again": "Riot nebyl oprávněn k posílání upozornění – zkuste to prosím znovu", + "riot-web version:": "verze riot-web:", + "Room %(roomId)s not visible": "Místnost %(roomId)s není viditelná", + "Room Colour": "Barva místnosti", + "Room contains unknown devices": "V místnosti jsou neznámá zařízení", + "%(roomName)s does not exist.": "%(roomName)s neexistuje.", + "%(roomName)s is not accessible at this time.": "Místnost %(roomName)s není v tuto chvíli dostupná.", + "Save": "Uložit", + "Scroll to bottom of page": "Přejít na konec stránky", + "Send anyway": "Přesto poslat", + "Sender device information": "Informace o odesilatelově zařízení", + "Send Reset Email": "Poslat resetovací e-mail", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s poslal/a obrázek.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s poslal/a %(targetDisplayName)s pozvánku ke vstupu do místnosti.", + "Server error": "Chyba serveru", + "Server may be unavailable or overloaded": "Server může být nedostupný nebo přetížený", + "Server may be unavailable, overloaded, or search timed out :(": "Server může být nedostupný, přetížený nebo vyhledávání vypršelo :(", + "Server may be unavailable, overloaded, or the file too big": "Server může být nedostupný, přetížený nebo soubor je příliš velký", + "Server may be unavailable, overloaded, or you hit a bug.": "Server může být nedostupný, přetížený nebo jste narazili na chybu.", + "Server unavailable, overloaded, or something else went wrong.": "Server je nedostupný, přetížený nebo se pokazilo něco jiného.", + "Session ID": "ID sezení", + "%(senderName)s set a profile picture.": "%(senderName)s si nastavil/a profilový obrázek.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s si změnil/a zobrazované jméno na %(displayName)s.", + "Sets the room topic": "Nastavuje téma místnosti", + "Show panel": "Zobrazit panel", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zobrazovat časové značky v 12hodinovém formátu (např. 2:30 odp.)", + "Sign in": "Přihlásit", + "Sign out": "Odhlásit", + "%(count)s of your messages have not been sent.": { + "other": "Některé z vašich zpráv nebyly odeslány.", + "one": "Vaše zpráva nebyla odeslána." + }, + "Someone": "Někdo", + "Start a chat": "Začít chat", + "Start authentication": "Začít ověření", + "Submit": "Odeslat", + "Success": "Úspěch", + "The main address for this room is": "Hlavní adresa této místnosti je", + "The phone number entered looks invalid": "Zadané telefonní číslo se zdá být neplatné", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Zadaný podepisovaný klíč se shoduje s klíčem obdrženým od uživatele %(userId)s ze zařízení %(deviceId)s. Zařízení je označeno jako ověřené.", + "This email address is already in use": "Tato e-mailová adresa je již používaná", + "This email address was not found": "Tato e-mailová adresa nebyla nalezena", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Soubor '%(fileName)s' překračuje maximální velikost povolenou na tomto domovském serveru", + "The file '%(fileName)s' failed to upload": "Soubor '%(fileName)s' se nepodařilo nahrát", + "This Home Server does not support login using email address.": "Tento domovský server nepodporuje přihlašování e-mailovou adresou.", + "This room has no local addresses": "Tato místnost nemá žádné místní adresy", + "This room is not recognised.": "Tato místnost nebyla rozpoznána.", + "These are experimental features that may break in unexpected ways": "Tyto funkce jsou experimentální a mohou se pokazit nečekanými způsoby", + "The visibility of existing history will be unchanged": "Viditelnost existující historie nebude změněna", + "VoIP is unsupported": "VoIP není podporován", + "Warning!": "Varování!", + "Who can access this room?": "Kdo má přístup k této místnosti?", + "Who can read history?": "Kdo může číst historii?", + "Who would you like to add to this room?": "Koho byste chtěli přidat do této místnosti?", + "Who would you like to communicate with?": "S kým byste chtěli komunikovat?", + "Would you like to accept or decline this invitation?": "Chtěli byste tuto pozvánku přijmout nebo odmítnout?", + "You are not in this room.": "Nejste v této místnosti.", + "You do not have permission to do that in this room.": "V této místnosti nemáte na toto právo.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Ještě nejste v žádné místnosti! Zmáčkněte pro vytvoření místnosti nebo pro prohlížení adresáře", + "You are trying to access %(roomName)s.": "Snažíte se přistoupit k %(roomName)s.", + "You cannot place a call with yourself.": "Nemůžete volat sami sobě.", + "You cannot place VoIP calls in this browser.": "V tomto prohlížeči nelze vytáčet VoIP hovory.", + "You do not have permission to post to this room": "Na přispívání do této místnosti nemáte právo", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s vás vykázal/a z místnosti %(roomName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s vás vykopnul/a z místnosti %(roomName)s.", + "You need to enter a user name.": "Musíte zadat uživatelské jméno.", + "Your password has been reset": "Vaše heslo bylo resetováno", + "Your home server does not support device management.": "Váš domovský server nepodporuje správu zařízení.", + "Online": "Online", + "Offline": "Offline", + "Updates": "Aktualizace", + "Check for update": "Zkontrolovat aktualizace", + "Start chatting": "Zahájit rozhovor", + "Start Chatting": "Začít chatovat", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Textová zpráva byla odeslána na +%(msisdn)s. Prosím vložte ověřovací kód z dané zprávy", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s přijal/a pozvánku pro %(displayName)s.", + "Active call (%(roomName)s)": "Probíhající hovor (%(roomName)s)", + "%(senderName)s banned %(targetName)s.": "%(senderName)s vykázal/a %(targetName)s.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nelze se připojit k domovskému serveru přes HTTP, pokud je v adresním řádku HTTPS. Buď použijte HTTPS, nebo povolte nebezpečné scripty.", + "Click here to fix": "Klikněte zde pro opravu", + "Click to mute video": "Klikněte pro zakázání videa", + "click to reveal": "klikněte pro odhalení", + "Click to unmute video": "Klikněte pro povolení videa", + "Click to unmute audio": "Klikněte pro povolení zvuku", + "Devices will not yet be able to decrypt history from before they joined the room": "Zařízení nebudou schopna dešifrovat historii z doby před jejich vstupem do místnosti", + "Displays action": "Zobrazí akci", + "Do you want to load widget from URL:": "Chcete načíst widget z URL:", + "Ed25519 fingerprint": "Ed25519 otisk", + "Fill screen": "Vyplnit obrazovku", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s z %(fromPowerLevel)s na %(toPowerLevel)s", + "This doesn't appear to be a valid email address": "Tato e-mailová adresa se zdá být neplatná", + "This is a preview of this room. Room interactions have been disabled": "Toto je náhled místnosti. Interakce byly zakázány", + "This phone number is already in use": "Toto číslo se již používá", + "This room is not accessible by remote Matrix servers": "Tato místnost není přístupná vzdáleným Matrix serverům", + "This room's internal ID is": "Vnitřní ID této místnosti je", + "To reset your password, enter the email address linked to your account": "K resetování hesla vložte e-mailovou adresu spojenou s vaším účtem", + "To use it, just wait for autocomplete results to load and tab through them.": "Použijte tak, že vyčkáte na načtení našeptávaných výsledků a ty pak projdete tabulátorem.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Nemáte práva k zobrazení zprávy v daném časovém úseku.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Zpráva v daném časovém úseku nenalezena.", + "Turn Markdown off": "Vypnout Markdown", + "Turn Markdown on": "Zapnout Markdown", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s zapnul/a end-to-end šifrování (algoritmus %(algorithm)s).", + "Unable to add email address": "Nepodařilo se přidat e-mailovou adresu", + "Unable to create widget.": "Nepodařilo se vytvořit widget.", + "Unable to remove contact information": "Nepodařilo se smazat kontaktní údaje", + "Unable to verify email address.": "Nepodařilo se ověřit e-mailovou adresu.", + "Unban": "Přijmout zpět", + "Unbans user with given id": "Přijme zpět uživatele s daným id", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s přijal/a zpět %(targetName)s.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nepodařilo se prokázat, že adresa, na kterou byla tato pozvánka odeslána, se shoduje s adresou přidruženou k vašemu účtu.", + "Unable to capture screen": "Nepodařilo se zachytit obrazovku", + "Unable to enable Notifications": "Nepodařilo se povolit upozornění", + "Unable to load device list": "Nepodařilo se načíst seznam zařízení", + "Undecryptable": "Nerozšifrovatelné", + "unencrypted": "nešifrované", + "Unencrypted message": "Nešifrovaná zpráva", + "unknown caller": "neznámý volající", + "unknown device": "neznámé zařízení", + "Unknown room %(roomId)s": "Neznámá místnost %(roomId)s", + "Unknown (user, device) pair:": "Neznámý pár (uživatel, zařízení):", + "Unmute": "Povolit", + "Unnamed Room": "Nepojmenovaná místnost", + "Unrecognised command:": "Nerozpoznaný příkaz:", + "Unrecognised room alias:": "Nerozpoznaný alias místnosti:", + "Unverified": "Neověřený", + "Uploading %(filename)s and %(count)s others": { + "zero": "Nahrávám %(filename)s", + "one": "Nahrávám %(filename)s a %(count)s další", + "other": "Nahrávám %(filename)s a %(count)s další" + }, + "Upload Failed": "Nahrávání selhalo", + "Upload Files": "Nahrát soubory", + "Upload file": "Nahrát soubor", + "Upload new:": "Nahrát nový:", + "Usage": "Použití", + "Use compact timeline layout": "Použít kompaktní rozvržení timeline", + "Use with caution": "Používejte s opatrností", + "User ID": "Uživatelské ID", + "User Interface": "Uživatelské rozhraní", + "User name": "Uživatelské jméno", + "Username invalid: %(errMessage)s": "Neplatné uživatelské jméno: %(errMessage)s", + "Users": "Uživatelé", + "Verification Pending": "Čeká na ověření", + "Verification": "Ověření", + "verified": "ověreno", + "Verified": "Ověřeno", + "Verified key": "Ověřený klíč", + "(no answer)": "(žádná odpověď)", + "(unknown failure: %(reason)s)": "(neznámá chyba: %(reason)s)", + "(warning: cannot be disabled again!)": "(varování: nepůjde znovu zakázat!)", + "WARNING: Device already verified, but keys do NOT MATCH!": "VAROVÁNÍ: Zařízení byl již ověřeno, ale klíče se NESHODUJÍ!", + "The remote side failed to pick up": "Vzdálené straně se nepodařilo hovor přijmout", + "Who would you like to add to this community?": "Koho chcete přidat do této skupiny?", + "Invite new community members": "Pozvěte nové členy skupiny", + "Name or matrix ID": "Jméno nebo matrix ID", + "Invite to Community": "Pozvat do skupiny", + "Which rooms would you like to add to this community?": "Které místnosti chcete přidat do této skupiny?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varování: osoba, kterou přidáte do této skupiny, bude veřejně viditelná každému, kdo zná ID skupiny", + "Add rooms to the community": "Přidat místnosti do skupiny", + "Room name or alias": "Název nebo alias místnosti", + "Add to community": "Přidat do skupiny", + "Failed to invite the following users to %(groupId)s:": "Následující uživatele se nepodařilo přidat do %(groupId)s:", + "Failed to invite users to community": "Nepodařilo se pozvat uživatele do skupiny", + "Failed to invite users to %(groupId)s": "Nepodařilo se pozvat uživatele do %(groupId)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Failed to add the following rooms to %(groupId)s:": "Nepodařilo se přidat následující místnosti do %(groupId)s:", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Vaše e-mailová adresa zřejmě nepatří k žádnému Matrix ID na tomto domovském serveru.", + "Send Invites": "Odeslat pozvánky", + "Failed to invite user": "Nepodařilo se pozvat uživatele", + "Failed to invite": "Pozvání se nezdařilo", + "Failed to invite the following users to the %(roomName)s room:": "Do místnosti %(roomName)s se nepodařilo pozvat následující uživatele:", + "You need to be logged in.": "Musíte být přihlášen/a.", + "You are now ignoring %(userId)s": "Nyní ignorujete %(userId)s", + "You are no longer ignoring %(userId)s": "Už neignorujete %(userId)s", + "Add rooms to this community": "Přidat místnosti do této skupiny", + "Unpin Message": "Odepnout zprávu", + "Ignored user": "Ignorovaný uživatel", + "Unignored user": "Odignorovaný uživatel", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VAROVÁNÍ: OVĚŘENÍ KLÍČE SELHALO! Podepisovací klíč uživatele %(userId)s a zařízení %(deviceId)s je „%(fprint)s“, což nesouhlasí s dodaným klíčem „%(fingerprint)s“. Toto může znamenat, že vaše komunikace je odposlouchávána!", + "Reason": "Důvod", + "VoIP conference started.": "VoIP konference započata.", + "VoIP conference finished.": "VoIP konference ukončena.", + "%(targetName)s left the room.": "%(targetName)s opustil/a místnost.", + "You are already in a call.": "Již máte probíhající hovor.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s požádal/a o VoIP konferenci.", + "%(senderName)s removed their profile picture.": "%(senderName)s odstranil/a svůj profilový obrázek.", + "%(targetName)s rejected the invitation.": "%(targetName)s odmítl/a pozvání.", + "Communities": "Skupiny", + "Message Pinning": "Připíchnutí zprávy", + "Your browser does not support the required cryptography extensions": "Váš prohlížeč nepodporuje požadovaná kryptografická rozšíření", + "Do you want to set an email address?": "Chcete nastavit e-mailovou adresu?", + "New Password": "Nové heslo", + "Device Name": "Název zařízení", + "Unignore": "Odignorovat", + "Ignore": "Ignorovat", + "Admin Tools": "Nástroje pro správce", + "bold": "tučně", + "italic": "kurzíva", + "strike": "přeškrtnutí", + "underline": "podtržení", + "code": "kód", + "quote": "citace", + "bullet": "odrážka", + "numbullet": "číselný seznam", + "No pinned messages.": "Žádné připíchnuté zprávy.", + "Pinned Messages": "Připíchnuté zprávy", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s odstranil/a svoje zobrazované jméno (%(oldDisplayName)s).", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s odvolal/a pozvánku pro %(targetName)s.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou všem členům, a to od chvíle jejich pozvání.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou všem členům, a to od chvíle jejich vstupu do místnosti.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou všem členům.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s učinil/a budoucí historii místnosti viditelnou komukoliv.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s změnil/a připíchnuté zprávy této místnosti.", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s a %(count)s další píší", + "one": "%(names)s a jeden další píší" + }, + "Authentication check failed: incorrect password?": "Kontrola ověření selhala: špatné heslo?", + "You need to be able to invite users to do that.": "Pro tuto akci musíte mít právo zvát uživatele.", + "Delete Widget": "Smazat widget", + "Error decrypting image": "Chyba při dešifrování obrázku", + "Error decrypting video": "Chyba při dešifrování videa", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odstranil/a avatar místnosti.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s změnil/a avatar místnosti na ", + "Copied!": "Zkopírováno!", + "Failed to copy": "Nepodařilo se zkopírovat", + "Removed or unknown message type": "Zpráva odstraněna nebo neznámého typu", + "Message removed by %(userId)s": "Zprávu odstranil/a %(userId)s", + "This Home Server would like to make sure you are not a robot": "Tento domovský server by se rád přesvědčil, že nejste robot", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Přes vlastní serverové volby se můžete přihlásit k dalším Matrix serverům tak, že zadáte jinou adresu domovského serveru.", + "Identity server URL": "Adresa serveru identity", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Taktéž můžete zadat vlastní server identity, ale to vám zpravidla znemožní interagovat s uživateli na základě e-mailové adresy.", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Smazáním widgetu jej odstraníte všem uživatelům v této místnosti. Určitě chcete tento widget smazat?", + "The maximum permitted number of widgets have already been added to this room.": "V této místnosti již bylo dosaženo limitu pro maximální počet widgetů.", + "Drop file here to upload": "Přetažením sem nahrajete", + "Example": "Příklad", + "Create Community": "Vytvořit komunitu", + "Community Name": "Název skupiny", + "Community ID": "ID skupiny", + "example": "příklad", + "Create": "Vytvořit", + "Advanced options": "Pokročilé volby", + "User Options": "Volby uživatele", + "Please select the destination room for this message": "Vyberte prosím pro tuto zprávu cílovou místnost", + "No devices with registered encryption keys": "Žádná zařízení se zaregistrovanými šifrovacími klíči", + "Jump to read receipt": "Přeskočit na potvrzení o přečtení", + "Invite": "Pozvat", + "Revoke Moderator": "Odebrat moderátorství", + "Make Moderator": "Udělit moderátorství", + "Hangup": "Zavěsit", + "Show Text Formatting Toolbar": "Zobrazit nástroje formátování textu", + "Hide Text Formatting Toolbar": "Skrýt nástroje formátování textu", + "Jump to message": "Přeskočit na zprávu", + "Loading...": "Načítání...", + "Loading device info...": "Načítá se info o zařízení...", + "You seem to be uploading files, are you sure you want to quit?": "Zřejmě právě nahráváte soubory. Chcete přesto odejít?", + "You seem to be in a call, are you sure you want to quit?": "Zřejmě máte probíhající hovor. Chcete přesto odejít?", + "Idle": "Nečinný/á", + "Unknown": "Neznámý", + "Seen by %(userName)s at %(dateTime)s": "Spatřen uživatelem %(userName)s v %(dateTime)s", + "Unnamed room": "Nepojmenovaná místnost", + "World readable": "Světu čitelné", + "Guests can join": "Hosté mohou vstoupit", + "No rooms to show": "Žádné místnosti k zobrazení", + "(~%(count)s results)": { + "other": "(~%(count)s výsledků)", + "one": "(~%(count)s výsledek)" + }, + "Upload avatar": "Nahrát avatar", + "Remove avatar": "Odstranit avatar", + "Mention": "Zmínka", + "Blacklisted": "Na černé listině", + "Invited": "Pozvaní", + "Markdown is disabled": "Markdown je vypnutý", + "Markdown is enabled": "Markdown je zapnutý", + "Press to start a chat with someone": "Zmáčkněte a můžete začít chatovat", + "This invitation was sent to an email address which is not associated with this account:": "Tato pozvánka byla odeslána na e-mailovou aresu, která není přidružená k tomuto účtu:", + "Joins room with given alias": "Vstoupí do místnosti s daným aliasem", + "Leave Community": "Odejít ze skupiny", + "Leave %(groupName)s?": "Odejít z %(groupName)s?", + "Leave": "Odejít", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Skrýt zprávy o vstupu či odejití (pozvánky, vykopnutí a vykázání zůstanou)", + "Failed to remove user from community": "Nepodařilo se odebrat uživatele ze skupiny", + "Failed to remove room from community": "Nepodařilo se odebrat místnost ze skupiny", + "Failed to remove '%(roomName)s' from %(groupId)s": "'%(roomName)s' se nepodařilo odebrat z %(groupId)s", + "Failed to update community": "Nepodařilo se aktualizovat komunitu", + "Failed to load %(groupId)s": "Nepodařilo se načíst %(groupId)s", + "Search failed": "Vyhledávání selhalo", + "Failed to fetch avatar URL": "Nepodařilo se získat adresu avataru", + "Error decrypting audio": "Chyba při dešifrování zvuku", + "Drop here to tag %(section)s": "Přetažením sem oštítkujete %(section)s", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s vás pozval/a ke vstupu do této místnosti", + "Reason: %(reasonText)s": "Důvod: %(reasonText)s", + "Rejoin": "Vstoupit znovu", + "To change the room's avatar, you must be a": "Abyste mohl/a měnit avatar místnosti, musíte být", + "To change the room's name, you must be a": "Abyste mohl/a měnit název místnosti, musíte být", + "To change the room's main address, you must be a": "Abyste mohl/a měnit hlavní adresu místnosti, musíte být", + "To change the room's history visibility, you must be a": "Abyste mohl/a měnit viditelnost historie místnosti, musíte být", + "To change the permissions in the room, you must be a": "Abyste mohl/a měnit oprávnění v místnosti, musíte být", + "To change the topic, you must be a": "Abyste mohl/a měnit téma, musíte být", + "To modify widgets in the room, you must be a": "Abyste mohl/a měnit widgety v místnosti, musíte být", + "Banned by %(displayName)s": "Vykázán/a uživatelem %(displayName)s", + "Privacy warning": "Výstraha o utajení", + "Never send encrypted messages to unverified devices in this room from this device": "Nikdy z tohoto zařízení neposílat šifrované zprávy neověřeným zařízením v této místnosti", + "Privileged Users": "Privilegovaní uživatelé", + "No users have specific privileges in this room": "Žádní uživatelé v této místnosti nemají zvláštní privilegia", + "Tagged as: ": "Oštítkováno jako: ", + "To link to a room it must have an address.": "Aby šlo odkazovat na místnost, musí mít adresu.", + "Publish this room to the public in %(domain)s's room directory?": "Zapsat tuto místnost do veřejného adresáře místností na %(domain)s?", + "The default role for new room members is": "Výchozí role nových členů místnosti je", + "To send messages, you must be a": "Abyste mohl/a posílat zprávy, musíte být", + "To invite users into the room, you must be a": "Abyste mohl/a zvát uživatele do této místnosti, musíte být", + "To configure the room, you must be a": "Abyste mohl/a nastavovat tuto místnost, musíte být", + "To kick users, you must be a": "Abyste mohl/a vykopávat uživatele, musíte být", + "To ban users, you must be a": "Abyste mohl/a vykazovat uživatele, musíte být", + "To remove other users' messages, you must be a": "Abyste mohl/a odstraňovat zprávy ostatních uživatelů, musíte být", + "To send events of type , you must be a": "Abyste mohl/a odesílat události typu , musíte být", + "You should not yet trust it to secure data": "Zatím byste jeho zabezpečení dat neměl/a důvěřovat", + "Remote addresses for this room:": "Vzdálené adresy této místnosti:", + "Invalid community ID": "Neplatné ID skupiny", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' není platné ID skupiny", + "New community ID (e.g. +foo:%(localDomain)s)": "Nové ID skupiny (např. +neco:%(localDomain)s)", + "%(senderName)s sent an image": "%(senderName)s poslal/a obrázek", + "%(senderName)s sent a video": "%(senderName)s poslal/a video", + "%(senderName)s uploaded a file": "%(senderName)s nahrál/a soubor", + "Disinvite this user?": "Odvolat pozvání tohoto uživatele?", + "Kick this user?": "Vykopnout tohoto uživatele?", + "Unban this user?": "Přijmout zpět tohoto uživatele?", + "Ban this user?": "Vykázat tohoto uživatele?", + "Drop here to favourite": "Oblibte přetažením zde", + "Drop here to tag direct chat": "Přímý chat oštítkujte přetažením zde", + "Drop here to restore": "Obnovte přetažením zde", + "Drop here to demote": "Přetažením zde přesunete do pozadí", + "Community Invites": "Komunitní pozvánky", + "You have been kicked from this room by %(userName)s.": "%(userName)s vás vykopl/a z této místnosti.", + "You have been banned from this room by %(userName)s.": "%(userName)s vás vykázal/a z této místnosti.", + "You are trying to access a room.": "Pokoušíte se o přístup do místnosti.", + "Members only (since the point in time of selecting this option)": "Pouze členové (od chvíle vybrání této volby)", + "Members only (since they were invited)": "Pouze členové (od chvíle jejich pozvání)", + "Members only (since they joined)": "Pouze členové (od chvíle jejich vstupu)", + "You have disabled URL previews by default.": "Vypnul/a jste automatické náhledy webových adres.", + "You have enabled URL previews by default.": "Zapnul/a jste automatické náhledy webových adres.", + "URL Previews": "Náhledy webových adres", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s změnil/a avatar místnosti %(roomName)s", + "Add an Integration": "Přidat začlenění", + "Message removed": "Zpráva odstraněna", + "Robot check is currently unavailable on desktop - please use a web browser": "Ochrana před roboty není aktuálně na desktopu dostupná. Použijte prosím webový prohlížeč", + "An email has been sent to %(emailAddress)s": "Na adresu %(emailAddress)s jsme poslali e-mail", + "File to import": "Soubor k importu", + "none": "žádný", + "Passphrases must match": "Hesla se musí shodovat", + "Passphrase must not be empty": "Heslo nesmí být prázdné", + "Export room keys": "Exportovat klíče místnosti", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Tento proces vám umožňuje exportovat do souboru klíče ke zprávám, které jste dostali v šifrovaných místnostech. Když pak tento soubor importujete do jiného Matrix klienta, všechny tyto zprávy bude možné opět dešifrovat.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Kdokoliv, kdo získá přístup k exportovanému souboru, bude moci dešifrovat všechny vaše přijaté zprávy, a proto je třeba dbát zvýšenou pozornost jeho zabezpečení. Z toho důvodu byste měl/a do kolonky níže zadat heslo, se kterým exportovaná data zašifrujeme. Import pak bude možný pouze se znalostí zadaného hesla.", + "Confirm passphrase": "Potvrďte heslo", + "Import room keys": "Importovat klíče místnosti", + "Call Timeout": "Časový limit hovoru", + "Show these rooms to non-members on the community page and room list?": "Zobrazovat tyto místnosti na domovské stránce skupiny a v seznamu místností i pro nečleny?", + "Restricted": "Omezené", + "Missing room_id in request": "V zadání chybí room_id", + "Missing user_id in request": "V zadání chybí user_id", + "(could not connect media)": "(média se nepodařilo spojit)", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s uskutečnil %(callType)s hovor.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s zpřístupnil budoucí historii místnosti neznámým (%(visibility)s).", + "Not a valid Riot keyfile": "Neplatný soubor s klíčem Riot", + "Disable Emoji suggestions while typing": "Zakázat návrhy Emoji během psaní", + "Hide avatar changes": "Skrýt změny avatara", + "Hide display name changes": "Skrýt změny zobrazovaného jména", + "Hide avatars in user and room mentions": "Skrýt avatary avatary v poznámkách uživatelů a místností", + "Disable big emoji in chat": "Zakázat velké Emoji v konverzaci", + "Mirror local video feed": "Zrcadlit lokání video", + "Disable Peer-to-Peer for 1:1 calls": "Zakázat Peer-to-Peer pro 1:1 hovory", + "Never send encrypted messages to unverified devices from this device": "Z tohoto zařízení nikdy neodesílat šifrované zprávy na neověřená zařízení", + "Enable inline URL previews by default": "Nastavit povolení náhledů URL adres jako výchozí", + "Enable URL previews for this room (only affects you)": "Povolit náhledy URL adres pro tuto místnost (ovlivňuje pouze vás)", + "Enable URL previews by default for participants in this room": "Povolit náhledy URL adres pro členy této místnosti jako výchozí", + "Delete %(count)s devices": { + "one": "Smazat zařízení", + "other": "Smazat %(count)s zařízení" + }, + "Select devices": "Vybrat zařízení", + " (unsupported)": " (nepodporované)", + "Join as voice or video.": "Připojte se prostřednictvím audio nebo video.", + "Ongoing conference call%(supportedText)s.": "Probíhající konferenční hovor%(supportedText)s.", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "Online po dobu %(duration)s", + "Idle for %(duration)s": "Idle po dobu %(duration)s", + "Offline for %(duration)s": "Offline po dobu %(duration)s", + "Unknown for %(duration)s": "Neznámý po dobu %(duration)s", + "You may wish to login with a different account, or add this email to this account.": "Můžete se přihlásit k jinému účtu anebo přidat tuto emailovou adresu do právě přihlášeného účtu.", + "Flair": "Zájem", + "Showing flair for these communities:": "Zobrazovat zájmy těmto komunitám:", + "This room is not showing flair for any communities": "Tato místnost nezobrazuje zájmy žádné komunitě", + "URL previews are enabled by default for participants in this room.": "Náhledy URL adres jsou defaultně nastavené jako povolené pro členy této místnosti.", + "URL previews are disabled by default for participants in this room.": "Náhledy URL adres jsou defaultně nastavené jako zakázané pro členy této místnosti.", + "Invalid file%(extra)s": "Neplatný soubor%(extra)s", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Budete přesměrováni na stránku třetí strany k ověření svého účtu pro používání s %(integrationsUrl)s. Chcete pokračovat?", + "Sign in with CAS": "Přihlásit se pomocí CAS", + "This allows you to use this app with an existing Matrix account on a different home server.": "Umožní vám použít aplikaci s existujícím Matrix účtem z jiného domácího serveru.", + "To continue, please enter your password.": "Aby jste mohli pokračovat, zadejte prosím své heslo.", + "Please check your email to continue registration.": "Prosím zkontrolujte své emaily, abyste mohli pokračovat v registraci.", + "Token incorrect": "Neplatný token", + "A text message has been sent to %(msisdn)s": "Na číslo %(msisdn)s byla odeslána textová zpráva", + "Please enter the code it contains:": "Prosím zadejte kód z této zprávy:", + "Username on %(hs)s": "Uživatelské jméno pro %(hs)s", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Sign in with": "Přihlásit se s", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Pokud nezadáte vaši emailovou adresu, nebude možné obnovit vaše heslo. Opravdu chcete pokračovat?", + "You are registering with %(SelectedTeamName)s": "Regristrujete se s %(SelectedTeamName)s", + "Default server": "Výchozí server", + "Custom server": "Vlastní server", + "Home server URL": "Adresa domácího serveru", + "What does this mean?": "Co to znamená?", + "Remove from community": "Odstranit ze skupiny", + "Disinvite this user from community?": "Zrušit pozvání tohoto uživatele?", + "Remove this user from community?": "Odstranit tohoto uživatele ze skupiny?", + "Failed to withdraw invitation": "Stažení pozvání selhalo", + "Filter community members": "Filtrovat členy skupiny", + "Flair will appear if enabled in room settings": "Zájmy budou zobrazeny pokud budou povoleny v nastavení místnosti", + "Flair will not appear": "Zájmy se nebudou zobrazovat", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Opravdu chcete odstranit místnost '%(roomName)s' z %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Pokud odstraníte místnost ze skupiny, odstraní se i odkaz do místnosti ze stránky skupiny.", + "Something went wrong!": "Něco se nepodařilo!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Zobrazení místnosti '%(roomName)s' ve skupině %(groupId)s nelze aktualizovat.", + "Visibility in Room List": "Zobrazení v Seznamu Místností", + "Visible to everyone": "Zobrazení pro každého", + "Only visible to community members": "Zobrazuje se pouze pro členy skupiny", + "Filter community rooms": "Filtrovat místnosti skupiny", + "Something went wrong when trying to get your communities.": "Při pokusu o nahrání vašich skupin se něco pokazilo.", + "Display your community flair in rooms configured to show it.": "Zobrazit zájmy skupiny v místnostech s povoleným zobrazováním.", + "You're not currently a member of any communities.": "V současnosti nejste členem žádné skupiny.", + "Unknown Address": "Neznámá adresa", + "NOTE: Apps are not end-to-end encrypted": "VAROVÁNÍ: Aplikace nejsou end-to-end šifrované", + "Revoke widget access": "Odmítnout přístup k widgetu", + "Unblacklist": "Odstranit z černé listiny", + "Blacklist": "Přidat do černé listiny", + "Unverify": "Zrušit ověřování", + "Verify...": "Ověřit...", + "Integrations Error": "Chyby integrace", + "Manage Integrations": "Správa nastavení", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s%(count)s krát vstoupili", + "one": "%(severalUsers)svstoupili" + }, + "%(oneUser)sjoined %(count)s times": { + "one": "%(oneUser)svstoupil", + "other": "%(oneUser)s %(count)s krát vstoupil" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s %(count)s krát opustili", + "one": "%(severalUsers)sopustili" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s %(count)s krát opustil", + "one": "%(oneUser)sopustil" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s %(count)s krát vstoupili a opustili", + "one": "%(severalUsers)svstoupili a opustili" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s %(count)s krát vstoupil a opustil", + "one": "%(oneUser)svstoupil a opustil" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s %(count)s krát opustili a znovu vstoupili", + "one": "%(severalUsers)sopustili a znovu vstoupili" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s %(count)s krát opustil a znovu vstoupil", + "one": "%(oneUser)sopustil a znovu vstoupil" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s %(count)s krát odmítli pozvání", + "one": "%(severalUsers)sodmítli pozvání" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s %(count)s krát odmítl pozvání", + "one": "%(oneUser)sodmítl pozvání" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)směli %(count)s krát stažené pozvání", + "one": "%(severalUsers)smeli stažené pozvání" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)směl %(count)s krát stažené pozvání", + "one": "%(oneUser)směl stažené pozvání" + }, + "were invited %(count)s times": { + "other": "byli %(count)s krát pozvaní", + "one": "byli pozvaní" + }, + "was invited %(count)s times": { + "other": "byl %(count)s krát pozvaný", + "one": "byl pozvaný" + }, + "were banned %(count)s times": { + "other": "mělid %(count)s krát zakázaný vstup", + "one": "měli zakázaný vstup" + }, + "was banned %(count)s times": { + "other": "měl %(count)s krát zakázaný vstup", + "one": "měl zakázaný vstup" + }, + "were unbanned %(count)s times": { + "other": "měli %(count)s krát povolený vstup", + "one": "měli povolený vstup" + }, + "was unbanned %(count)s times": { + "other": "měl %(count)s krát povolený vstup", + "one": "měl povolený vstup" + }, + "were kicked %(count)s times": { + "other": "byli %(count)s krát vyhozeni", + "one": "byli vyhozeni" + }, + "was kicked %(count)s times": { + "other": "byl %(count)s krát vyhozen", + "one": "byl vyhozen" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)ssi %(count)s krát změnili jméno", + "one": "%(severalUsers)ssi změnili jméno" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)ssi %(count)s krát změnili jméno", + "one": "%(oneUser)ssi změnili jméno" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)ssi %(count)s krát změnili avatara", + "one": "%(severalUsers)ssi změnili avatara" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)ssi %(count)s krát změnil avatara", + "one": "%(oneUser)ssi změnil avatara" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s a %(count)s další", + "one": "%(items)s a jeden další" + }, + "%(items)s and %(lastItem)s": "%(items)s a také %(lastItem)s", + "Custom of %(powerLevel)s": "Vlastní úroveň %(powerLevel)s", + "And %(count)s more...": { + "other": "A %(count)s dalších..." + }, + "ex. @bob:example.com": "pr. @jan:příklad.com", + "Add User": "Přidat uživatele", + "Matrix ID": "Matrix ID", + "Matrix Room ID": "ID Matrix místnosti", + "email address": "emailová adresa", + "Try using one of the following valid address types: %(validTypesList)s.": "Zkuste použít jeden z následujících správných tvarů adres: %(validTypesList)s.", + "You have entered an invalid address.": "Zadali jste neplatnou adresu.", + "Create a new chat or reuse an existing one": "Vytvořte nový chat anebo se připojte k již existujícímu", + "Start new chat": "Začít nový chat", + "You already have existing direct chats with this user:": "S tímto uživatelem již společně chatujete:", + "Click on the button below to start chatting!": "Pro zahájení chatu klikněte na tlačítko níže!", + "Confirm Removal": "Potvrdit odstranění", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Opravdu chcete odstranit (smazat) tuto událost? V případě, že smažete název místnosti anebo změníte téma, je možné, že se změny neprovedou.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ID skupiny může obsahovat pouze znaky a-z, 0-9, or '=_-./'", + "Something went wrong whilst creating your community": "Něco se pokazilo v během vytváření vaší skupiny", + "Block users on other matrix homeservers from joining this room": "Blokovat vstup do místnosti uživatelům z ostatních domácích matrix serverů", + "This setting cannot be changed later!": "Toto nastavení nelze v budoucnu změnit!", + "Unknown error": "Neznámá chyba", + "Incorrect password": "Nesprávné heslo", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Pokud si chcete ověřit, zda je zařízení skutečně důvěryhodné, kontaktujte vlastníka jiným způsobem (např. osobně anebo telefonicky) a zeptejte se ho na klíč, který má pro toto zařízení zobrazený v nastavení a zda se shoduje s klíčem zobrazeným níže:", + "Device name": "Název zařízení", + "Device key": "Klíč zařízení", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Pokud se klíče shodují, stlačte ověřovací tlačítko uvedené níže. Pokud se neshodují, někdo další odposlouchává toto zařízení a v takovém případě by jste měli místo toho vybrat tlačítko černé listiny.", + "In future this verification process will be more sophisticated.": "V budoucnu plánujeme proces ověřování zařízení zjednodušit.", + "Verify device": "Ověřit zařízení", + "I verify that the keys match": "Ověřil jsem, klíče se shodují", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Přidali jste nové zařízení s názvem '%(displayName)s', vyžadující šifrovací klíč.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Vaše neověřené zařízení s názvem '%(displayName)s' vyžaduje šifrovací klíč.", + "Start verification": "Zahájit ověřování", + "Share without verifying": "Sdílet bez ověření", + "Ignore request": "Ignorovat žádost", + "Encryption key request": "Žádost o šifrovací klíč", + "Unable to restore session": "Nelze obnovit relaci", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Pokud jste se v minulosti již přihlásili s novější verzi programu Riot, vaše relace nemusí být kompatibilní s touto verzí. Zavřete prosím toto okno a přihlaste se znovu pomocí nové verze.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Prosím, zkontrolujte si email a klikněte na odkaz ve zprávě, kterou jsme vám zaslali. V případě, že jste tak již učinili, klikněte na tlačítko Pokračovat.", + "This will allow you to reset your password and receive notifications.": "Toto vám umožní obnovit si heslo a přijímat oznámení emailem.", + "Skip": "Přeskočit", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Uživatelské jméno může obsahovat pouze písmena, číslice, tečky, pomlčky a podtržítka.", + "Username not available": "Uživatelské jméno není dostupné", + "An error occurred: %(error_string)s": "Vyskytla se chyba: %(error_string)s", + "Username available": "Dostupné uživatelské jméno", + "To get started, please pick a username!": "Začněte tím, že si zvolíte uživatelské jméno!", + "This will be your account name on the homeserver, or you can pick a different server.": "Toto bude název vašeho účtu na domácím serveru , anebo si můžete zvolit jiný server.", + "If you already have a Matrix account you can log in instead.": "Pokud již účet Matrix máte, můžete se ihned Přihlásit.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Neověřená zařízení jsou v této chvíli na černé listině; pokud chcete zasílat zprávy na tato zařízení, musíte je nejdříve ověřit.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Doporučujeme vám projít procesem ověřování pro všechna zařízení, abyste si potvrdili, že patří jejich pravým vlastníkům, ale pokud si to přejete, můžete zprávu znovu odeslat bez ověřování.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "V místnosti „%(RoomName)s“ jsou zařízení s kterými jste dosud nikdy nekomunikovali.", + "Unknown devices": "Neznámá zařízení", + "Private Chat": "Soukromý chat", + "Public Chat": "Veřejný chat", + "Topic": "Téma", + "Make this room private": "Nastavit místnost jako soukromou", + "Share message history with new users": "Sdílet historii zpráv s novými uživateli", + "Encrypt room": "Zašifrovat místnost", + "You must register to use this functionality": "Musíte být zaregistrovaný pokud chcete využívat této funkce", + "You must join the room to see its files": "Musíte vstoupit do místnosti pokud chcete soubory zobrazit", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML kód vaší skupiny

\n

\n Pomocí dlouhého popisu představte skupinu novým členům anebo uvěďte \n nějaké důležité odkazy\n

\n

\n Můžete používat i HTML 'img' značky\n

\n", + "Add rooms to the community summary": "Přidat místnosti do přehledu skupiny", + "Which rooms would you like to add to this summary?": "Které místnosti se přejete přidat do tohoto přehledu?", + "Add to summary": "Přidat do přehledu", + "Failed to add the following rooms to the summary of %(groupId)s:": "Do přehledu skupiny %(groupId)s se nepodařilo přidat následující místnosti:", + "Add a Room": "Přidat místnost", + "Failed to remove the room from the summary of %(groupId)s": "Z přehledu skupiny %(groupId)s se nepodařilo odstranit místnost", + "The room '%(roomName)s' could not be removed from the summary.": "Nelze odstranit místnost '%(roomName)s' z přehledu.", + "Add users to the community summary": "Přidat uživatele do přehledu skupiny", + "Who would you like to add to this summary?": "Koho si přejete přidat do seznamu?", + "Failed to add the following users to the summary of %(groupId)s:": "Do souhrnného seznamu skupiny %(groupId)s se nepodařilo přidat následující uživatele:", + "Add a User": "Přidat uživatele", + "Failed to remove a user from the summary of %(groupId)s": "Ze souhrnného seznamu skupiny %(groupId)s se nepodařilo odstranit uživatele", + "The user '%(displayName)s' could not be removed from the summary.": "Nelze odstranit uživatele '%(displayName)s' ze souhrnného seznamu.", + "Unable to accept invite": "Nelze přijmout pozvání", + "Unable to reject invite": "Nelze odmítnout pozvání", + "Community Settings": "Nastavení skupiny", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Tyto místnosti se zobrazují všem členům na stránce skupiny. Členové skupiny mohou vstoupit do místnosti kliknutím.", + "Featured Rooms:": "Hlavní místnosti:", + "Featured Users:": "Významní uživatelé:", + "%(inviter)s has invited you to join this community": "%(inviter)s vás pozval ke vstupu do této místnosti", + "You are an administrator of this community": "Jste správcem této skupiny", + "You are a member of this community": "Jste členem této skupiny", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Vaše skupina nemá vyplněný dlouhý popis, který je součástí HTML stránky skupiny a která se zobrazuje jejím členům.
Kliknutím zde otevřete nastavení, kde ho můžete doplnit!", + "Long Description (HTML)": "Dlouhý popis (HTML)", + "Description": "Popis", + "Community %(groupId)s not found": "Skupina %(groupId)s nenalezena", + "This Home server does not support communities": "Tento domácí server nepodporuje skupiny", + "Reject invitation": "Odmítnout pozvání", + "Signed Out": "Jste odhlášeni", + "Your Communities": "Vaše skupiny", + "Error whilst fetching joined communities": "Při získávání vašich skupin se vyskytla chyba", + "Create a new community": "Vytvořit novou skupinu", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Vytvořte skupinu s cílem seskupit uživatele a místnosti! Vytvořte si vlastní domovskou stránku a vymezte tak váš prostor ve světe Matrix.", + "You have no visible notifications": "Nejsou dostupná žádná oznámení", + "Connectivity to the server has been lost.": "Spojení se serverem bylo přerušené.", + "Sent messages will be stored until your connection has returned.": "Odeslané zprávy zůstanou uložené, dokud se spojení znovu neobnoví.", + "Active call": "Aktivní hovor", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Kromě vás není v této místnosti nikdo jiný! Přejete si Pozvat další anebo Přestat upozorňovat na prázdnou místnost?", + "Message not sent due to unknown devices being present": "Zpráva nebyla odeslána vzhledem k nalezeným neznámým zařízením", + "Room": "Místnost", + "Failed to load timeline position": "Nepodařilo se načíst pozici na časové ose", + "Light theme": "Světlý motiv", + "Dark theme": "Tmavý motiv", + "Status.im theme": "Status.im motivu", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "S cílem posílit zabezpečení se všechny end-to-end šifrovací klíče při odhlášení odstraní z tohoto prohlížeče. Pokud chcete dostupnou historii šifrovaných konverzací i při opětovném přihlášení, prosím stáhněte si a bezpečně uložte klíče vašich místností.", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Vaše heslo bylo úspěšně změněno. Na ostatních zařízeních se vám již nebudou zobrazovat okamžitá oznámení do té chvíle než se na nich znovu přihlásíte", + "Remove Contact Information?": "Odstranit kontaktní informace?", + "Remove %(threePid)s?": "Odstranit %(threePid)s?", + "Refer a friend to Riot:": "Doporučit Riot známému:", + "Autocomplete Delay (ms):": "Zpoždění automatického dokončování (ms):", + "Ignored Users": "Ignorovaní uživatelé", + "Analytics": "Analytické údaje", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot sbírá anonymní analytické údaje, které nám umožňují aplikaci dále zlepšovat.", + "Labs": "Experimentální funkce", + "Reject all %(invitedRooms)s invites": "Odmítnutí všech %(invitedRooms)s pozvání", + "Desktop specific": "Specifické pro Desktop zobrazení", + "Start automatically after system login": "Zahájit automaticky po přihlášení do systému", + "No media permissions": "Žádná oprávnění k médiím", + "You may need to manually permit Riot to access your microphone/webcam": "Je možné, že budete potřebovat manuálně povolit Riot přístup k mikrofónu/webkameře", + "Missing Media Permissions, click here to request.": "Kliknutím sem získáte chybějící oprávnění pro přístup k mediálním zařízením.", + "Profile": "Profil", + "To return to your account in future you need to set a password": "Pokud se v budoucnu chcete vrátit k vašemu účtu je třeba si nyní nastavit heslo", + "The email address linked to your account must be entered.": "Musíte zadat emailovou adresu spojenou s vaším účtem.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Změna hesla v této chvílí povede k resetu end-to-end šifrovacích klíčů na všech zařízení a nečitelnosti šifrovaných konverzací pokud si klíče vašich místností předem nestáhnete a následně nenaimportujete zpět. Tato funkce bude v budoucnu vylepšena.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Na adresu %(emailAddress)s byla odeslána zpráva. Potom, co přejdete na odkaz z této zprávy, klikněte níže.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Byli jste odhlášení ze všech zařízení a nebudete již dále dostávat okamžitá oznámení. Povolíte je tak, že se znovu přihlásíte na každém zařízení zvláš'ť", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Upozornění: právě se přihlašujete na server %(hs)s, a nikoliv na server matrix.org.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Tento domácí server nenabízí žádné přihlašovací toky podporované touto službou/klientem.", + "Sign in to get started": "Začněte přihlášením", + "Set a display name:": "Nastavit zobrazované jméno:", + "Upload an avatar:": "Nahrát avatar:", + "This server does not support authentication with a phone number.": "Tento server nepodporuje ověření telefonním číslem.", + "Missing password.": "Chybí heslo.", + "Passwords don't match.": "Hesla se neshodují.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Heslo je velmi krátké (min %(MIN_PASSWORD_LENGTH)s znaků).", + "This doesn't look like a valid email address.": "Zdá se, že toto není platná emailová adresa.", + "This doesn't look like a valid phone number.": "Zdá se, že toto není platné telefonní číslo.", + "An unknown error occurred.": "Vyskytla se neznámá chyba.", + "I already have an account": "Už mám účet", + "Deops user with given id": "Zruší stav moderátor uživateli se zadaným ID", + "Searches DuckDuckGo for results": "Vyhledá výsledky na DuckDuckGo", + "Verifies a user, device, and pubkey tuple": "Ověří zadané údaje uživatele, zařízení a veřejný klíč", + "Ignores a user, hiding their messages from you": "Ignoruje uživatele a skryje všechny jeho zprávy", + "Stops ignoring a user, showing their messages going forward": "Přestane ignorovat uživatele a začne zobrazovat jeho zprávy", + "Notify the whole room": "Oznámení pro celou místnost", + "Room Notification": "Oznámení místnosti", + "Curve25519 identity key": "Klíč totožnosti Curve25519", + "Claimed Ed25519 fingerprint key": "Údajný klíč s otiskem prstu Ed25519", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Tento proces vás provede importem šifrovacích klíčů, které jste si stáhli z jiného Matrix klienta. Po úspěšném naimportování budete v tomto klientovi moci dešifrovat všechny zprávy, které jste mohli dešifrovat v původním klientovi.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Stažený soubor je chráněn heslem. Soubor můžete naimportovat pouze pokud zadáte odpovídající heslo.", + "Call Failed": "Hovor selhal", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "V této místnosti jsou neznámá zařízení: Pokud budete pokračovat bez jejich ověření, někdo může Váš hovor odposlouchávat.", + "Review Devices": "Ověřit zařízení", + "Call Anyway": "Přesto zavolat", + "Answer Anyway": "Přesto přijmout", + "Call": "Hovor", + "Answer": "Přijmout", + "Send": "Odeslat", + "Addresses": "Adresy", + "collapse": "sbalit", + "expand": "rozbalit", + "Old cryptography data detected": "Nalezeny starší šifrované datové zprávy", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Nalezeny datové zprávy ze starší verze Riot. Důsledkem bude, že E2E šifrování nebude ve starší verzi Riot správně fungovat. Šifrované zprávy ze starší verze nemusí být čitelné v nové verzi. Může dojít i k selhání zasílaní zpráv s touto verzí Riot. Pokud zaznamenáte některý z uvedených problému, odhlaste se a přihlaste znovu. Pro zachování historie zpráv exportujte a znovu importujte vaše klíče.", + "Warning": "Upozornění", + "Fetching third party location failed": "Nepodařilo se zjistit umístění třetí strany", + "A new version of Riot is available.": "Je dostupná nová verze Riotu.", + "I understand the risks and wish to continue": "Rozumím rizikům a přeji si pokračovat", + "Couldn't load home page": "Nepodařilo se nahrát úvodní stránku", + "Send Account Data": "Poslat data o účtu", + "Advanced notification settings": "Pokročilé nastavení upozornění", + "Uploading report": "Nahrávám hlášení", + "Sunday": "Neděle", + "Messages sent by bot": "Zprávy poslané robotem", + "Notification targets": "Cíle upozornění", + "Failed to set direct chat tag": "Nepodařilo se nastavit štítek přímého chatu", + "Today": "Dnes", + "Files": "Soubory", + "You are not receiving desktop notifications": "Nedostáváte upozornění na desktopu", + "Friday": "Pátek", + "Update": "Aktualizace", + "What's New": "Co je nového", + "Add an email address above to configure email notifications": "Abyste mohli nastavovat e-mailová upozornění, musíte uvést svoji e-mailovou adresu v kolonce výše", + "Expand panel": "Rozbalit panel", + "On": "Zapnout", + "%(count)s Members": { + "other": "%(count)s Členů", + "one": "%(count)s Člen" + }, + "Filter room names": "Filtrovat místnosti dle názvu", + "Changelog": "Seznam změn", + "Waiting for response from server": "Čekám na odezvu ze serveru", + "Send Custom Event": "Odeslat vlastní událost", + "All notifications are currently disabled for all targets.": "Veškeré notifikace jsou aktuálně pro všechny cíle vypnuty.", + "delete the alias.": "smazat alias.", + "To return to your account in future you need to set a password": "Abyste se mohli ke svému účtu v budoucnu vrátit, musíte si nastavit heslo", + "Forget": "Zapomenout", + "Hide panel": "Skrýt panel", + "You cannot delete this image. (%(code)s)": "Tento obrázek nemůžete smazat. (%(code)s)", + "Cancel Sending": "Zrušit odesílání", + "This Room": "Tato místnost", + "The Home Server may be too old to support third party networks": "Tento domovský server může být příliš zastaralý na to, aby podporoval sítě třetích stran", + "Noisy": "Hlučný", + "Room not found": "Místnost nenalezena", + "Messages containing my display name": "Zprávy obsahující mé zobrazované jméno", + "Remember, you can always set an email address in user settings if you change your mind.": "Vězte, že kdybyste si to rozmysleli, e-mailovou adresu můžete kdykoliv doplnit v uživatelském nastavení.", + "Unavailable": "Nedostupné", + "Error saving email notification preferences": "Chyba při ukládání nastavení e-mailových upozornění", + "View Decrypted Source": "Zobrazit dešifrovaný zdroj", + "Failed to update keywords": "Nepodařilo se aktualizovat klíčová slova", + "remove %(name)s from the directory.": "odebrat %(name)s z adresáře.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Upozornění na následující klíčová slova se řídí pravidly, která zde nelze zobrazit:", + "Safari and Opera work too.": "Safari a Opera fungují taky.", + "Please set a password!": "Prosím nastavte si heslo!", + "You have successfully set a password!": "Úspěšně jste si nastavili heslo!", + "Explore Room State": "Prohlížet stav místnosti", + "Source URL": "Zdrojová URL", + "Failed to add tag %(tagName)s to room": "Nepodařilo se přidat štítek %(tagName)s k místnosti", + "Filter results": "Filtrovat výsledky", + "Members": "Členové", + "No update available.": "Není dostupná žádná aktualizace.", + "Resend": "Poslat znovu", + "Failed to get protocol list from Home Server": "Z domovského serveru se nepodařilo získat seznam protokolů", + "Collecting app version information": "Sbírání informací o verzi aplikace", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Smazat alias místnosti %(alias)s a odstranit %(name)s z adresáře?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Toto vám umožní vrátit se po odhlášení ke svému účtu a používat jej na ostatních zařízeních.", + "Keywords": "Klíčová slova", + "Enable notifications for this account": "Zapnout upozornění na tomto účtu", + "Directory": "Adresář", + "Invite to this community": "Pozvat do této komunity", + "Search for a room": "Hledat místnost", + "Messages containing keywords": "Zprávy obsahující klíčová slova", + "View Source": "Zobrazit zdroj", + "Tuesday": "Úterý", + "Enter keywords separated by a comma:": "Vložte klíčová slova oddělená čárkou:", + "Forward Message": "Přeposlat zprávu", + "You have successfully set a password and an email address!": "Úspěšně jste si nastavili heslo a e-mailovou adresu!", + "Remove %(name)s from the directory?": "Odebrat %(name)s z adresáře?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot používá mnoho pokročilých funkcí, z nichž některé jsou ve vašem současném prohlížeči nedostupné nebo experimentální.", + "Developer Tools": "Nástroje pro vývojáře", + "Enable desktop notifications": "Zapnout upozornění na ploše", + "Explore Account Data": "Prozkoumat data o účtu", + "Remove from Directory": "Odebrat z adresáře", + "Saturday": "Sobota", + "Messages in one-to-one chats": "Zprávy v individuálních chatech", + "Direct Chat": "Přímý chat", + "The server may be unavailable or overloaded": "Server může být nedostupný nebo přetížený", + "Reject": "Odmítnout", + "Failed to set Direct Message status of room": "Nepodařilo se přiřadit místnosti status Přímé zprávy", + "Monday": "Pondělí", + "All messages (noisy)": "Všechny zprávy (hlasitě)", + "Enable them now": "Povolit nyní", + "Messages containing my user name": "Zprávy obsahující mé uživatelské jméno", + "Toolbox": "Sada nástrojů", + "Collecting logs": "Sbírání logů", + "more": "více", + "You must specify an event type!": "Musíte určit typ události!", + "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", + "Invite to this room": "Pozvat do této místnosti", + "Please install Chrome or Firefox for the best experience.": "Pro nejlepší zážitek si prosím nainstalujte Chrome nebo Firefox.", + "Failed to get public room list": "Nepodařilo se získat seznam veřejných místností", + "Send logs": "Odeslat záznamy", + "All messages": "Všechny zprávy", + "Call invitation": "Pozvánka k hovoru", + "Downloading update...": "Stahování aktualizace...", + "State Key": "Stavový klíč", + "Failed to send custom event.": "Nepodařilo se odeslat vlastní událost.", + "What's new?": "Co je nového?", + "Notify me for anything else": "Upozorni mě na cokoliv jiného", + "When I'm invited to a room": "Pokud jsem pozván do místnosti", + "Can't update user notification settings": "Nelze aktualizovat uživatelské nastavení upozornění", + "Notify for all other messages/rooms": "Upozorni na všechny ostatní zprávy/místnosti", + "Unable to look up room ID from server": "Nelze získat ID místnosti ze serveru", + "Couldn't find a matching Matrix room": "Odpovídající Matrix místost nenalezena", + "All Rooms": "Všechny místnosti", + "You cannot delete this message. (%(code)s)": "Tuto zprávu nemůžete smazat. (%(code)s)", + "Thursday": "Čtvrtek", + "Search…": "Vyhledat…", + "Back": "Zpět", + "Failed to change settings": "Nepodařilo se změnit nastavení", + "Reply": "Odpovědět", + "Show message in desktop notification": "Zobrazovat zprávu v upozornění na ploše", + "Unhide Preview": "Zobrazit náhled", + "Unable to join network": "Nelze se připojit k síti", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Snad jste je nastavili v jiném klientu než Riot. V Riotu je nemůžete upravit, ale přesto platí", + "Sorry, your browser is not able to run Riot.": "Omlouváme se, váš prohlížeč není schopný spustit Riot.", + "Uploaded on %(date)s by %(user)s": "Nahráno %(date)s uživatelem %(user)s", + "Messages in group chats": "Zprávy ve skupinových chatech", + "Yesterday": "Včera", + "Error encountered (%(errorDetail)s).": "Nastala chyba (%(errorDetail)s).", + "Login": "Přihlásit", + "Low Priority": "Nízká priorita", + "Riot does not know how to join a room on this network": "Riot neví, jak vstoupit do místosti na této síti", + "Set Password": "Nastavit heslo", + "An error occurred whilst saving your email notification preferences.": "Při ukládání nastavení e-mailových upozornění nastala chyba.", + "Enable audible notifications in web client": "Povolit zvuková upozornění ve webové aplikaci", + "Off": "Vypnout", + "#example": "#příklad", + "Mentions only": "Pouze zmínky", + "Failed to remove tag %(tagName)s from room": "Nepodařilo se odstranit štítek %(tagName)s z místnosti", + "Wednesday": "Středa", + "You can now return to your account after signing out, and sign in on other devices.": "Nyní se můžete ke svému účtu vrátit i po odhlášení a používat jej na ostatních zařízeních.", + "Enable email notifications": "Zapnout upozornění přes e-mail", + "Event Type": "Typ události", + "Download this file": "Stáhnout tento soubor", + "Pin Message": "Připíchnout zprávu", + "Thank you!": "Děkujeme vám!", + "View Community": "Zobrazit Komunitu", + "Event sent!": "Událost odeslána!", + "Event Content": "Obsah události", + "Unable to fetch notification target list": "Nepodařilo se získat seznam cílů upozornění", + "Quote": "Citace", + "Collapse panel": "Sbalit panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Vzhled a chování aplikace může být ve vašem aktuální prohlížeči nesprávné a některé nebo všechny funkce mohou být chybné. Chcete-li i přes to pokračovat, nebudeme vám bránit, ale se všemi problémy, na které narazíte, si musíte poradit sami!", + "Checking for an update...": "Kontrola aktualizací...", + "There are advanced notifications which are not shown here": "Jsou k dispozici pokročilá upozornění, která zde nejsou zobrazena", + "The platform you're on": "Platforma na které jsi", + "The version of Riot.im": "Verze Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Jestli jsi, nebo nejsi přihlášen (tvou přezdívku neukládáme)", + "Your language of choice": "Tvá jazyková volba", + "Which officially provided instance you are using, if any": "Přes kterou oficiální podporovanou instanci Riot.im jste pripojeni (jestli nehostujete Riot sami)", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Jestli při psaní zpráv používáte rozbalenou lištu formátování textu", + "Your homeserver's URL": "URL vámi používaného domovského serveru", + "Your identity server's URL": "URL Vámi používaného serveru totožností", + "e.g. %(exampleValue)s": "např. %(exampleValue)s", + "Every page you use in the app": "Každou stránku v aplikaci, kterou navštívíte", + "e.g. ": "např. ", + "Your User Agent": "Řetězec User Agent Vašeho zařízení", + "Your device resolution": "Rozlišení obrazovky Vašeho zařízení", + "The information being sent to us to help make Riot.im better includes:": "S cílem vylepšovat aplikaci Riot.im shromažďujeme následující údaje:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "V případě, že se na stránce vyskytují identifikační údaje, jako například název místnosti, ID uživatele, místnosti a nebo skupiny, jsou tyto údaje před odesláním na server odstraněny.", + "A conference call could not be started because the intgrations server is not available": "Není možné uskutečnit konferenční hovor, integrační server není k dispozici", + "Call in Progress": "Probíhající hovor", + "A call is currently being placed!": "Právě probíhá jiný hovor!", + "A call is already in progress!": "Jeden hovor už probíhá!", + "Permission Required": "Vyžaduje oprávnění", + "You do not have permission to start a conference call in this room": "Nemáte oprávnění v této místnosti začít konferenční hovor", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "Missing roomId.": "Chybějící ID místnosti.", + "Opens the Developer Tools dialog": "Otevře dialog nástrojů pro vývojáře", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s si změnil zobrazované jméno na %(displayName)s.", + "Always show encryption icons": "Vždy zobrazovat ikony stavu šifrovaní", + "Disable Community Filter Panel": "Zakázat panel Filtr komunity", + "Send analytics data": "Odesílat analytická data", + "Enable widget screenshots on supported widgets": "Povolit screenshot widgetu pro podporované widgety", + "Show empty room list headings": "Zobrazovat nadpisy prázdných seznamů místností", + "This event could not be displayed": "Tato událost nemohla být zobrazena", + "Your key share request has been sent - please check your other devices for key share requests.": "Žádost o sdílení klíče byla odeslána - prosím zkontrolujte si Vaše ostatí zařízení.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Žádost o sdílení klíčů je automaticky odesílaná na Vaše ostatní zařízení. Jestli jste žádost odmítly nebo zrušili dialogové okno se žádostí na ostatních zařízeních, kliknutím sem ji můžete opakovaně pro tuto relaci vyžádat.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Pokud Vaše ostatní zařízení nemají klíč pro tyto zprávy, nebudete je moci dešifrovat.", + "Key request sent.": "Žádost o klíč poslána.", + "Re-request encryption keys from your other devices.": "Znovu vyžádat šifrovací klíče z vašich ostatních zařízení.", + "Encrypting": "Šifruje", + "Encrypted, not sent": "Zašifrováno, ale neodesláno", + "Demote yourself?": "Snížit Vaši vlastní hodnost?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Tuto změnu nebudete moci vzít zpět, protože snižujete svoji vlastní hodnost, jste-li poslední privilegovaný uživatel v místnosti, bude nemožné vaši současnou hodnost získat zpět.", + "Demote": "Degradovat", + "Share Link to User": "Sdílet odkaz na uživatele", + "deleted": "smazáno", + "underlined": "podtrženo", + "inline-code": "vnořený kód", + "block-quote": "citace", + "bulleted-list": "seznam s odrážkami", + "numbered-list": "číselný seznam", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "V současné době nejde odpovědět se souborem, proto toto bude odesláno jako by to odpověď nebyla.", + "Send an encrypted reply…": "Odeslat šifrovanou odpověď …", + "Send a reply (unencrypted)…": "Odeslat odpověď (nešifrovaně) …", + "Send an encrypted message…": "Odeslat šifrovanou zprávu …", + "Send a message (unencrypted)…": "Odeslat zprávu (nešifrovaně) …", + "Unable to reply": "Není možné odpovědět", + "At this time it is not possible to reply with an emote.": "V odpovědi zatím nejde vyjádřit pocit.", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) viděl %(dateTime)s", + "Replying": "Odpovídá", + "Share room": "Sdílet místnost", + "You have no historical rooms": "Nemáte žádné historické místnosti", + "System Alerts": "Systémová varování", + "To notify everyone in the room, you must be a": "Abyste mohli upozornit všechny v místnosti, musíte být", + "%(user)s is a %(userRole)s": "%(user)s je %(userRole)s", + "Muted Users": "Umlčení uživatelé", + "Internal room ID: ": "Vnitřní ID mistnosti: ", + "Room version number: ": "Číslo verze místnosti: ", + "There is a known vulnerability affecting this room.": "Pro tuto místnost existuje známa zranitelnost.", + "This room version is vulnerable to malicious modification of room state.": "Tato verze místnosti je zranitelná zlomyslnou modifikací stavu místnosti.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Pro zaručení integrity místnosti klikněte sem a upgradeujte místnost na nejnovější verzi.", + "Only room administrators will see this warning": "Jen administrátoři místnosti uvidí toto varování", + "You don't currently have any stickerpacks enabled": "Momentálně nemáte aktívní žádné balíčky s nálepkami", + "Add a stickerpack": "Přidat balíček s nálepkami", + "Stickerpack": "Balíček s nálepkami", + "Hide Stickers": "Skrýt nálepky", + "Show Stickers": "Zobrazit nálepky", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "V šifrovaných místnostech, jako je tato, jsou URL náhledy ve výchozím nastavení zakázané, aby bylo možné zajistit, že váš domácí server nemůže shromažďovat informace o odkazech, které v této místnosti vidíte.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Když někdo ve zprávě pošle URL adresu, může být zobrazen její náhled obsahující informace jako titulek, popis a obrázek z cílové stránky.", + "Code": "Kód", + "The email field must not be blank.": "E-mail nemůže být prázdný.", + "The user name field must not be blank.": "Uživatelské jméno nemůže být prázdné.", + "The phone number field must not be blank.": "Telefonní číslo nemůže být prázdné.", + "The password field must not be blank.": "Heslo nemůže být prázdné.", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Prosím pomozte nám vylepšovat Riot.im odesíláním anonymních údajů o používaní. Na tento účel použijeme cookie (přečtěte si jak cookies používáme).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Prosím pomozte nám vylepšovat Riot.im odesíláním anonymních údajů o používaní. Na tento účel použijeme cookie.", + "Yes, I want to help!": "Ano, chci pomoci!", + "Please contact your service administrator to continue using the service.": "Please contact your service administrator to continue using the service.\nProsím kontaktujte Vašeho administratora aby jste mohli pokračovat v používání Vašeho zařízení.", + "This homeserver has hit its Monthly Active User limit.": "Tento domovský server dosáhl svého měsíčního limitu pro aktivní uživatele.", + "This homeserver has exceeded one of its resource limits.": "Tento domovský server překročil některý z limitů.", + "Please contact your service administrator to get this limit increased.": "Prosím kontaktujte Vašeho administrátora pro zvýšení tohoto limitu.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Tento domovský server dosáhl svého měsíčního limitu pro aktivní uživatele, proto se někteří uživatelé nebudou moci přihlásit.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Tento domovský server překročil některý z limitů, proto se někteří uživatelé nebudou moci přihlásit.", + "Warning: This widget might use cookies.": "Varování: tento widget může používat cookies.", + "Failed to remove widget": "Nepovedlo se odstranit widget", + "An error ocurred whilst trying to remove the widget from the room": "Při odstraňování widgetu z místnosti nastala chyba", + "Minimize apps": "Minimalizovat aplikace", + "Reload widget": "Obnovit widget", + "Popout widget": "Otevřít widget v novém okně", + "Picture": "Fotografie", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Není možné načíst událost, na kterou se odpovídalo. Buď neexistuje, nebo nemáte oprávnění ji zobrazit.", + "In reply to ": "V odpovědi na ", + "Preparing to send logs": "Příprava na odeslání záznamů", + "Logs sent": "Záznamy odeslány", + "Failed to send logs: ": "Nepodařilo se odeslat záznamy: ", + "Submit debug logs": "Odeslat ladící záznamy", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ladící záznamy obsahují data o používání aplikace včetně Vašeho uživatelského jména, ID nebo aliasy navštívených místností a skupin a uživatelská jména jiných uživatelů. Neobsahují zprávy.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Bugy Riotu jsou na Githubu: vytvořit bug na Githubu.", + "GitHub issue link:": "Odkaz na hlášení na GitHubu:", + "Notes:": "Poznámky:", + "Community IDs cannot be empty.": "ID komunity nemůže být prázdné.", + "Failed to indicate account erasure": "Nepovedlo se potvrdit výmaz účtu", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Toto učiní účet permanentně nepoužitelný. Nebudete se moci přihlásit a nikdo se nebude moci se stejným uživatelskym ID znovu zaregistrovat. Účet bude odstraněn ze všech místnosti a bude vymazán ze servru identity.Tato akce je nevratná.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Deaktivace účtu automaticky nesmaže zprávy, které jste poslali. Chcete-li je smazat, zaškrtněte prosím odpovídající pole níže.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Viditelnost zpráv v Matrixu je podobná e-mailu. Výmaz Vašich zpráv znamené, že už nebudou sdíleny s žádným novým nebo neregistrovaným uživatelem, ale registrovaní uživatelé, kteří už přístup ke zprávám mají, budou stále mít přístup k jejich kopii.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "S deaktivací účtu si přeji smazat všechny mnou odeslané zprávy (Pozor: způsobí, že noví uživatelé uvidí nekompletní konverzace)", + "To continue, please enter your password:": "Pro pokračování, zadejte Vaše heslo:", + "password": "heslo", + "Upgrade Room Version": "Upgradeovat verzi místnosti", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgradování této místnosti vyžaduje uzavření současné instance místnosti a vytvoření místností nové. Pro co možná nejhladší průběh:", + "Create a new room with the same name, description and avatar": "Vytvoříme místnost se stejným jménem, popisem a avatarem", + "Update any local room aliases to point to the new room": "Aktualizujeme všechny lokální aliasy místnosti tak, aby ukazovaly na novou místnost", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Přerušíme konverzace ve staré verzi místnosti a pošleme uživatelům zprávu o přechodu do nové mistnosti", + "Put a link back to the old room at the start of the new room so people can see old messages": "Na začátek nové místnosti umístíme odkaz na starou místnost tak, aby uživatelé mohli vidět staré zprávy", + "Log out and remove encryption keys?": "Odhlásit se a odstranit šifrovací klíče?", + "Clear Storage and Sign Out": "Vymazat uložiště a odhlásit se", + "Send Logs": "Odeslat záznamy", + "Refresh": "Obnovit", + "We encountered an error trying to restore your previous session.": "V průběhu obnovování Vaší minulé relace nastala chyba.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Vymazání uložiště prohlížeče možna opraví Váš problem, zároveň se tím ale odhlásíte a historie Vašich šifrovaných konverzací se pro Vás může stát nečitelnou.", + "Share Room": "Sdílet místnost", + "Link to most recent message": "Odkaz na nejnovější zprávu", + "Share User": "Sdílet uživatele", + "Share Community": "Sdílet komunitu", + "Share Room Message": "Sdílet zprávu z místnosti", + "Link to selected message": "Odkaz na vybranou zprávu", + "COPY": "Kopírovat", + "Share Message": "Sdílet zprávu", + "Collapse Reply Thread": "Sbalit vlákno odpovědi", + "Unable to join community": "Není možné vstoupit do komunity", + "Unable to leave community": "Není možné opustit komunitu", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Změny ve Vaší komunitě název a avatar možná nebudou viditelné pro ostatní uživatele po dobu až 30 minut.", + "Join this community": "Vstoupit do komunity", + "Leave this community": "Opustit komunitu", + "Who can join this community?": "Kdo může vstoupit do této komunity?", + "Everyone": "Všichni", + "This room is not public. You will not be able to rejoin without an invite.": "Tato místnost není veřejná. Bez pozvánky nebudete moci znovu vstoupit.", + "Can't leave Server Notices room": "Z místnosti \"Server Notices\" nejde odejit", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Tato místnost je určena pro důležité zprávy od domácího servru, a proto z ní nemůžete odejít.", + "Terms and Conditions": "Smluvní podmínky", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Chcete-li nadále používat domovský server %(homeserverDomain)s, měli byste si přečíst a odsouhlasit naše smluvní podmínky.", + "Review terms and conditions": "Přečíst smluvní podmínky", + "Did you know: you can use communities to filter your Riot.im experience!": "Věděli jste, že: práci s Riot.im si můžete zpříjemnit s použitím komunit!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Pro nastavení filtru, přetáhněte obrázek komunity na pantel foltrování na leve straně obrazovky. Potom můžete kdykoliv kliknout na obrazek komunity na tomto panelu a Riot.im Vám bude zobrazovat jen místnosti a lidi z dané komunity.", + "Show devices, send anyway or cancel.": "Zobrazit zařízení, i tak odeslat a nebo zrušit.", + "You can't send any messages until you review and agree to our terms and conditions.": "Dokud si nepřečtete a neodsouhlasíte naše smluvní podmínky, nebudete moci posílat žádné zprávy.", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Vaše zpráva nebyla odeslána, protože tento domácí server dosáhl svého měsíčního limitu pro aktivní uživatele. Prosím kontaktujte Vašeho administratora pro další využívání služby.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Vaše zpráva nebyla odeslána, protože tento domácí server dosáhl limitu. Prosím kontaktujte Vašeho administratora pro další využívání služby.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Znovu poslat všechny nebo zrušit všechny. Můžete též vybrat jednotlivé zprávy pro znovu odeslání nebo zrušení.", + "one": "Znovu poslat zprávu nebo zrušit zprávu." + }, + "Clear filter": "Zrušit filtr", + "Debug Logs Submission": "Odeslání ladících záznamů", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Jestli jste odeslali hlášení o chybě na GitHub, ladící záznamy nám pomohou problém najít. Ladicí záznamy obsahuji data o používání aplikate, která obsahují uživatelské jmeno, ID nebo aliasy navštívených místnosti a uživatelská jména dalších uživatelů. Neobsahují zprávy.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Soukromí je pro nás důležité a proto neshromažďujeme osobní udaje ani udaje na zakladě, kterých by Vás bylo možne identifikovat.", + "Learn more about how we use analytics.": "Dozvědět se více o tom, jak zpracováváme analytické údaje.", + "No Audio Outputs detected": "Nebyly rozpoznány žádné zvukové výstupy", + "Audio Output": "Zvukový výstup", + "Please contact your service administrator to continue using this service.": "Pro pokračování využívání této služby prosím kontaktujte Vašeho administrátora.", + "Try the app first": "Zkuste aplikaci", + "Increase performance by only loading room members on first view": "Zvýšit výkon nahráváním členů místnosti jen poprvé", + "Lazy loading members not supported": "Líné nahrávání členů není podporováno", + "Lazy loading is not supported by your current homeserver.": "Líné nahrávání není podporováno současným domácím serverem.", + "Welcome to Riot.im": "Vítá vás Riot.im", + "Unknown device": "Neznámé zařízení", + "Riot is not supported on mobile web. Install the app?": "Riot není podporovaný na mobilním webu. Nainstalovat aplikaci?", + "You need to be using HTTPS to place a screen-sharing call.": "Pro uskutečnění hovoru se sdílením obrazovky musíte používat HTTPS.", + "Search the room directory": "Prohledat adresář místností", + "Chat with Riot Bot": "Chatujte s Riot Botem", + "Get started with some tips from Riot Bot!": "Začněte s radami od Riot Bota!", + "General discussion about Matrix and Riot": "Obecná diskuse o Matrixu a Riotu", + "Discussion of all things Matrix!": "Diskuse o všem okolo Matrixu!", + "Matrix technical discussions": "Technické diskuse o Matrixu", + "Running Matrix services": "Provozování Matrix služeb", + "Community-run support for Synapse": "Komunitou řízená podpora pro Synapse", + "Announcements about Synapse releases": "Oznámení o vydáních Synapse", + "Support for those using and running matrix-appservice-irc": "Podpora pro používání matrix-appservice-irc", + "Building services on Matrix": "Stavění služeb na Matrixu", + "Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s", + "Admin support for Dendrite": "Správcovská podpora pro Dendrite", + "Support for those using the Matrix spec": "Podpora pro uživatele Matrix specifikace", + "Design and implementation of E2E in Matrix": "Návrh a implementace E2E v Matrixu", + "Implementing VR services with Matrix": "Implementace VR služeb v Matrixu", + "Implementing VoIP services with Matrix": "Implementace VoIP služeb v Matrixu", + "Support for those using, running and writing other bridges": "Podpora pro ty, kteří používají, provozují nebo vyvíjejí ostatní můstky", + "Contributing code to Matrix and Riot": "Přispívaní kódem do Matrixu a Riotu", + "Dev chat for the Riot/Web dev team": "Chat vývojového týmu Riot/Web", + "Dev chat for the Dendrite dev team": "Chat vývojového týmu Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "V Matrixu je spousta samostatných, nebo s jinými sítěmi (Slack, IRC, Gitter aj.) propojených místností. Prohlédněte si jejich adresář!", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s přes %(browserName)s na %(osName)s", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráce na platformě [matrix]", + "Riot/Web & Desktop chat": "Riot/Web a Desktop chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS a matrix-ios-sdk chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android a matrix-android-sdk chat", + "Discussion of the Identity Service API": "Diskuze o API služby identity", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Přes vlastní serverové volby se můžete přihlásit k dalším Matrix serverům tak, že zadáte jinou adresu domovského serveru.
Díky tomu můžete v Riotu používat Matrix účet z jiného domovského serveru.

Můžete nastavit i vlastní server identity, ale pak už nebudete moci zvát ani být zván/a skrze e-mailovou adresu.", + "Co-ordination for Riot translators": "Spolupráce pro překladatele Riot" +} \ No newline at end of file diff --git a/riot/i18n/da.json b/riot/i18n/da.json new file mode 100644 index 0000000..7ce7564 --- /dev/null +++ b/riot/i18n/da.json @@ -0,0 +1,436 @@ +{ + "Filter room members": "Filter medlemmer", + "You have no visible notifications": "Du har ingen synlige meddelelser", + "Invites": "Invitationer", + "Favourites": "Favoritter", + "People": "Personilg chat", + "Rooms": "Rum", + "Low priority": "Lav prioritet", + "Historical": "Historisk", + "New passwords must match each other.": "Nye adgangskoder skal matche hinanden.", + "A new password must be entered.": "Der skal indtastes en ny adgangskode.", + "The email address linked to your account must be entered.": "Den emailadresse, der tilhører til din adgang, skal indtastes.", + "unknown device": "ukendt enhed", + "NOT verified": "IKKE verificeret", + "Blacklisted": "blokeret", + "verified": "verificeret", + "Name": "Navn", + "Device ID": "Enheds-ID", + "Verification": "Verifikation", + "Ed25519 fingerprint": "Ed25519 fingerprint", + "User ID": "Bruger ID", + "Curve25519 identity key": "Curve25519 identitetsnøgle", + "Claimed Ed25519 fingerprint key": "Påstået Ed25519 fingeraftryk nøgle", + "none": "ingen", + "Algorithm": "Algoritme", + "unencrypted": "ukrypteret", + "Decryption error": "Dekrypteringsfejl", + "Session ID": "Sessions ID", + "End-to-end encryption information": "End-to-end krypterings oplysninger", + "Event information": "Hændelses information", + "Sender device information": "Afsende enheds-oplysning", + "Displays action": "Viser handling", + "Bans user with given id": "Forbyder bruger med givet id", + "Deops user with given id": "Fjerner OP af bruger med givet id", + "Invites user with given id to current room": "Inviterer bruger med givet id til nuværende rum", + "Joins room with given alias": "Kommer ind i rum med givet alias", + "Kicks user with given id": "Smid bruger med givet id ud", + "Changes your display nickname": "Ændrer dit visningsnavn", + "Searches DuckDuckGo for results": "Søger DuckDuckGo for resultater", + "Commands": "kommandoer", + "Emoji": "Emoji", + "Sign in": "Log ind", + "Warning!": "Advarsel!", + "Account": "Konto", + "Add email address": "Tilføj e-mail-adresse", + "Add phone number": "Tilføj telefonnummer", + "Admin": "Administrator", + "Advanced": "Avanceret", + "Anyone who knows the room's link, apart from guests": "Alle der kender link til rummet, bortset fra gæster", + "Anyone who knows the room's link, including guests": "Alle der kender link til rummet, inklusiv gæster", + "Are you sure you want to reject the invitation?": "Er du sikker på du vil afvise invitationen?", + "Are you sure you want to upload the following files?": "Er du sikker på du vil sende de følgende filer?", + "Banned users": "Bortviste brugere", + "Bulk Options": "Masseindstillinger", + "Can't load user settings": "Kan ikke indlæse brugerindstillinger", + "Changes to who can read history will only apply to future messages in this room": "Ændringer til hvem der kan læse historie gælder kun for fremtidige meddelelser i dette rum", + "Clear Cache and Reload": "Ryd cache og genindlæs", + "Clear Cache": "Ryd cache", + "Click here to fix": "Klik her for at rette", + "Confirm your new password": "Bekræft din nye adgangskode", + "Continue": "Fortsæt", + "Could not connect to the integration server": "Kunne ikke oprette forbindelse til integrationsserveren", + "Create an account": "Opret en brugerkonto", + "Create Room": "Opret rum", + "Cryptography": "Kryptografi", + "Deactivate Account": "Deaktiver brugerkonto", + "Deactivate my account": "Deaktiver min brugerkonto", + "Default": "Standard", + "Devices will not yet be able to decrypt history from before they joined the room": "Enhederne vil ikke være i stand til at dekryptere historikken fra, før de kom til rummet", + "Display name": "Visningsnavn", + "Email, name or matrix ID": "E-mail, navn eller matrix-ID", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Krypterede meddelelser vil ikke være synlige på klienter, der endnu ikke implementerer kryptering", + "Encrypted room": "Krypteret rummet", + "Encryption is enabled in this room": "Kryptering er aktiveret i dette rum", + "Encryption is not enabled in this room": "Kryptering er ikke aktiveret i dette rum", + "End-to-end encryption is in beta and may not be reliable": "End-to-end kryptering er i beta og kan ikke være pålidelig", + "Error": "Fejl", + "Export E2E room keys": "Eksporter E2E rum nøgler", + "Failed to change password. Is your password correct?": "Kunne ikke ændre password. Er dit password korrekt?", + "Failed to leave room": "Kunne ikke forlade rum", + "Failed to reject invitation": "Kunne ikke afvise invitationen", + "Failed to send email": "Kunne ikke sende e-mail", + "Failed to set avatar.": "Kunne ikke angive avatar.", + "Failed to unban": "Var ikke i stand til at ophæve forbuddet", + "Favourite": "Favorit", + "Notifications": "Notifikationer", + "Remove": "Fjern", + "Settings": "Indstillinger", + "unknown error code": "Ukendt fejlkode", + "%(targetName)s accepted an invitation.": "%(targetName)s accepterede en invitation.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepterede invitationen til %(displayName)s.", + "%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s er ved at skrive", + "%(senderName)s answered the call.": "%(senderName)s besvarede opkaldet.", + "Add a widget": "Tilføj en widget", + "OK": "OK", + "Search": "Søg", + "Custom Server Options": "Brugerdefinerede serverindstillinger", + "Dismiss": "Afskedige", + "powered by Matrix": "Drevet af Matrix", + "Close": "Luk", + "Cancel": "Afbryd", + "Edit": "Rediger", + "Unpin Message": "Fasthold ikke længere Besked", + "Failed to forget room %(errCode)s": "Kunne ikke glemme rummet %(errCode)s", + "Mute": "Sæt på lydløs", + "Leave": "Forlad", + "Register": "Registrér", + "Add rooms to this community": "Tilføj rum til dette fællesskab", + "Unnamed room": "Unavngivet rum", + "World readable": "Læselig af alle", + "Guests can join": "Gæster kan deltage", + "No rooms to show": "Ingen rum at vise", + "This email address is already in use": "Denne emailadresse er allerede i brug", + "This phone number is already in use": "Dette telefonnummer er allerede i brug", + "Failed to verify email address: make sure you clicked the link in the email": "Kunne ikke bekræfte emailaddressen: vær sikker på at du klikke på linket i emailen", + "Call Timeout": "Opkalds Timeout", + "The remote side failed to pick up": "Den anden side tog den ikke", + "Unable to capture screen": "Kunne ikke optage skærm", + "Existing Call": "Eksisterende Opkald", + "You are already in a call.": "Du er allerede i et opkald.", + "VoIP is unsupported": "VoIP er ikke understøttet", + "You cannot place VoIP calls in this browser.": "Du kan ikke lave VoIP-opkald i denne browser.", + "You cannot place a call with yourself.": "Du kan ikke ringe til dig selv.", + "Conference calls are not supported in this client": "Konferenceopkald er ikke undersøttede i denne klient", + "Conference calls are not supported in encrypted rooms": "Konferenceopkald er ikke understøttede i krypterede rum", + "Conference calling is in development and may not be reliable.": "Konferenceopkald er under udvikling og kan være utilregnelige.", + "Failed to set up conference call": "Kunne ikke starte konferenceopkald", + "Conference call failed.": "Konferenceopkald fejlede.", + "The file '%(fileName)s' failed to upload": "Filen '%(fileName)s' kunne ikke uploades", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Filen '%(fileName)s' overskrider denne home servers størrelsesbegrænsning på uploads", + "Upload Failed": "Upload Fejlede", + "Sun": "Søn", + "Mon": "Man", + "Tue": "Tirs", + "Wed": "Ons", + "Thu": "Tors", + "Fri": "Fre", + "Sat": "Lør", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "Maj", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dec", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Who would you like to add to this community?": "Hvem vil du tilføje til dette fællesskab?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Advarsel: alle personer du tilføjer til et fællesskab vil være synlige for alle der kender Fællesskabs ID'et", + "Invite new community members": "Inviter nye fællesskabsmedlemmer", + "Name or matrix ID": "Navn eller matrix ID", + "Invite to Community": "Inviter til Fællesskab", + "Which rooms would you like to add to this community?": "Hvilke rum vil du tilføje til dette fællesskab?", + "Show these rooms to non-members on the community page and room list?": "Vis disse rum til ikke-medlemmer på fællesskabssiden og rumlisten?", + "Add rooms to the community": "Tilføj rum til fællesskabet", + "Room name or alias": "Rum navn eller alias", + "Add to community": "Tilføj til fællesskab", + "Failed to invite the following users to %(groupId)s:": "Kunne ikke invitere de følgende brugere til %(groupId)s:", + "Failed to invite users to community": "Kunne ikke invitere brugere til fællesskab", + "Failed to invite users to %(groupId)s": "Kunne ikke invitere brugere til %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Kunne ikke tilføje de følgende rum til %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikke tilladelse til at sende dig notifikationer - tjek venligst dine browser indstillinger", + "Riot was not given permission to send notifications - please try again": "Riot fik ikke tilladelse til at sende notifikationer - prøv igen", + "Unable to enable Notifications": "Kunne ikke slå Notifikationer til", + "This email address was not found": "Denne emailadresse blev ikke fundet", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Din emailadresse lader ikke til at være tilknyttet en Matrix ID på denne Homeserver.", + "Restricted": "Begrænset", + "Moderator": "Moderator", + "Start a chat": "Start en chat", + "Who would you like to communicate with?": "Hvem vil du kommunikere med?", + "Start Chat": "Start Chat", + "Invite new room members": "Inviter nye rummedlemmer", + "Who would you like to add to this room?": "Hvem vil du tilføje til dette rum?", + "Send Invites": "Send invitationer", + "Failed to invite user": "Kunne ikke invitere bruger", + "Operation failed": "Operation mislykkedes", + "Failed to invite": "Kunne ikke invitere", + "Failed to invite the following users to the %(roomName)s room:": "Kunne ikke invitere de følgende brugere til %(roomName)s rummet:", + "You need to be logged in.": "Du skal være logget ind.", + "You need to be able to invite users to do that.": "Du skal kunne invitere brugere for at gøre dette.", + "Unable to create widget.": "Kunne ikke lave widget.", + "Failed to send request.": "Kunne ikke sende forespørgsel.", + "This room is not recognised.": "Dette rum kan ikke genkendes.", + "Power level must be positive integer.": "Magtniveau skal være positivt heltal.", + "You are not in this room.": "Du er ikke i dette rum.", + "You do not have permission to do that in this room.": "Du har ikke tilladelse til at gøre dét i dette rum.", + "Missing room_id in request": "Mangler room_id i forespørgsel", + "Room %(roomId)s not visible": "rum %(roomId)s ikke synligt", + "Missing user_id in request": "Manglende user_id i forespørgsel", + "Usage": "Brug", + "/ddg is not a command": "/ddg er ikke en kommando", + "To use it, just wait for autocomplete results to load and tab through them.": "For at bruge det skal du bare vente på autocomplete resultaterne indlæser og tab'e igennem dem.", + "Unrecognised room alias:": "Ugenkendt rum alias:", + "Ignored user": "Ignoreret bruger", + "You are now ignoring %(userId)s": "Du ignorere nu %(userId)s", + "Unignored user": "Holdt op med at ignorere bruger", + "You are no longer ignoring %(userId)s": "Du ignorer ikke længere %(userId)s", + "Unknown (user, device) pair:": "Ukendt (bruger, enhed) par:", + "Device already verified!": "Enhed allerede verificeret!", + "WARNING: Device already verified, but keys do NOT MATCH!": "ADVARSEL: Enhed allerede verificeret, men nøgler PASSER IKKE!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ADVARSEL: NØGLE VERIFICERING FEJLEDE! Signaturnøglen for %(userId)s and enhed %(deviceId)s er \"%(fprint)s\" hvilket ikke passer med den oplyste nøgle \"%(fingerprint)s\". Dette kan betyde jeres kommunikation bliver opsnappet!", + "Verified key": "Verificeret nøgle", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signaturnøglen du oplste passer med nøglen fra %(userId)ss enhed %(deviceId)s. Enheden er markeret som verificeret.", + "Unrecognised command:": "Ukendt kommando:", + "Reason": "Årsag", + "%(senderName)s requested a VoIP conference.": "%(senderName)s forespurgte en VoIP konference.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s inviterede %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s bannede %(targetName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s satte deres viste navn til %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s fjernede deres viste navn (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s fjernede deres profilbillede.", + "%(senderName)s changed their profile picture.": "%(senderName)s ændrede deres profilbillede.", + "%(senderName)s set a profile picture.": "%(senderName)s indstillede deres profilbillede.", + "VoIP conference started.": "VoIP konference startet.", + "%(targetName)s joined the room.": "%(targetName)s forbandt til rummet.", + "VoIP conference finished.": "VoIP konference afsluttet.", + "%(targetName)s rejected the invitation.": "%(targetName)s afviste invitationen.", + "%(targetName)s left the room.": "%(targetName)s forlod rummet.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbannede %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kickede %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s trak %(targetName)ss invitation tilbage.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ændrede emnet til \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s fjernede rumnavnet.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ændrede rumnavnet til %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sendte et billed.", + "Someone": "Nogen", + "(not supported by this browser)": "(Ikke understøttet af denne browser)", + "(could not connect media)": "(kunne ikke forbinde til mediet)", + "(no answer)": "(intet svar)", + "(unknown failure: %(reason)s)": "(ukendt fejl: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s afsluttede opkaldet.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s startede et %(callType)s opkald.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s inviterede %(targetDisplayName)s til rummet.", + "Submit debug logs": "Indsend debug-logfiler", + "Online": "Online", + "Fetching third party location failed": "Hentning af tredjeparts placering mislykkedes", + "A new version of Riot is available.": "En ny version a Riot er tilgængelig.", + "Couldn't load home page": "Kunne ikke indlæse startsiden", + "Send Account Data": "Send Konto Data", + "All notifications are currently disabled for all targets.": "Alle meddelelser er for øjeblikket deaktiveret for alle mål.", + "Uploading report": "Uploader rapport", + "Sunday": "Søndag", + "Messages sent by bot": "Beskeder sendt af en bot", + "Notification targets": "Meddelelsesmål", + "Failed to set direct chat tag": "Kunne ikke markere rummet som direkte chat", + "Today": "I dag", + "Files": "Filer", + "You are not receiving desktop notifications": "Du modtager ikke skrivebordsmeddelelser", + "Friday": "Fredag", + "Update": "Opdater", + "What's New": "Hvad er nyt", + "Add an email address above to configure email notifications": "Tilføj en emailadresse ovenfor for at konfigurere e-mail-underretninger", + "Expand panel": "Udvid panel", + "On": "Tændt", + "Filter room names": "Filtrér rumnavne", + "Changelog": "Ændringslog", + "Waiting for response from server": "Venter på svar fra server", + "Uploaded on %(date)s by %(user)s": "Uploadet den %(date)s af %(user)s", + "Send Custom Event": "Send Brugerdefineret Begivenhed", + "Off": "Slukket", + "Advanced notification settings": "Avancerede notifikationsindstillinger", + "delete the alias.": "Slet aliaset.", + "To return to your account in future you need to set a password": "For at komme ind på din konto i fremtiden skal du indstille et password", + "Forget": "Glem", + "#example": "#eksempel", + "Hide panel": "Gem panel", + "You cannot delete this image. (%(code)s)": "Du kan ikke slette dette billede. (%(code)s)", + "Cancel Sending": "Stop Forsendelse", + "Warning": "Advarsel", + "This Room": "Dette rum", + "The Home Server may be too old to support third party networks": "Hjemmeserveren kan være for gammel til at understøtte tredjepartsnetværk", + "Room not found": "Rummet ikke fundet", + "Messages containing my display name": "Beskeder der indeholder mit viste navn", + "Messages in one-to-one chats": "Beskeder i en-til-en chats", + "Unavailable": "Utilgængelig", + "Error saving email notification preferences": "Fejl ved at gemme e-mail-underretningsindstillinger", + "View Decrypted Source": "Se Dekrypteret Kilde", + "Failed to update keywords": "Kunne ikke opdatere søgeord", + "remove %(name)s from the directory.": "fjern %(name)s fra kataloget.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Meddelelser om følgende søgeord følger regler, der ikke kan vises her:", + "Safari and Opera work too.": "Safari og Opera virker også.", + "Please set a password!": "Indstil venligst et password!", + "You have successfully set a password!": "Du har succesfuldt indstillet et password!", + "An error occurred whilst saving your email notification preferences.": "Der opstod en fejl under opbevaring af dine e-mail-underretningsindstillinger.", + "Explore Room State": "Udforsk Rum Tilstand", + "Source URL": "Kilde URL", + "Failed to add tag %(tagName)s to room": "Kunne ikke tilføje tag(s): %(tagName)s til rummet", + "Filter results": "Filtrér resultater", + "Members": "Medlemmer", + "No update available.": "Ingen opdatering tilgængelig.", + "Noisy": "Støjende", + "Failed to get protocol list from Home Server": "Kunne ikke få protokolliste fra Home Server", + "Collecting app version information": "Indsamler app versionsoplysninger", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slet rumaliaset %(alias)s og fjern %(name)s fra kataloget?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Dette vil tillade dig at vende tilbage til din konto efter at have logget ud og at logge ind på andre enheder.", + "Keywords": "Søgeord", + "Enable notifications for this account": "Aktivér underretninger for dette brugernavn", + "Directory": "Rum katalog", + "Invite to this community": "Inviter til dette fællesskab", + "Search for a room": "Søg efter et rum", + "Search…": "Søg…", + "Messages containing keywords": "Beskeder der indeholder keywords", + "When I'm invited to a room": "Når jeg bliver inviteret til et rum", + "Tuesday": "Tirsdag", + "Enter keywords separated by a comma:": "Indtast søgeord adskilt af et komma:", + "Forward Message": "Videresend Besked", + "Remove %(name)s from the directory?": "Fjern %(name)s fra kataloget?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot bruger mange avancerede browser funktioner, hvoraf nogle af dem ikke er tilgængelige eller er eksperimentelle i din browser.", + "Event sent!": "Begivenhed sendt!", + "Explore Account Data": "Udforsk Konto Data", + "Saturday": "Lørdag", + "Remember, you can always set an email address in user settings if you change your mind.": "Husk, du kan altid indstille en emailadresse i dine bruger indstillinger hvis du ombestemmer dig.", + "Direct Chat": "Personlig Chat", + "The server may be unavailable or overloaded": "Serveren kan være utilgængelig eller overbelastet", + "Reject": "Afvis", + "Failed to set Direct Message status of room": "Kunne ikke indstille Direkte Beskedstatus for rummet", + "Monday": "Mandag", + "Remove from Directory": "Fjern fra Katalog", + "Enable them now": "Aktivér dem nu", + "Messages containing my user name": "Beskeder der indeholder mit brugernavn", + "Toolbox": "Værktøjer", + "Collecting logs": "Indsamler logfiler", + "more": "mere", + "You must specify an event type!": "Du skal angive en begivenhedstype!", + "(HTTP status %(httpStatus)s)": "(HTTP tilstand %(httpStatus)s)", + "Invite to this room": "Inviter til dette rum", + "State Key": "Tilstandsnøgle", + "Please install Chrome or Firefox for the best experience.": "Installer venligst Chrome eller Firefox for den bedste oplevelse.", + "Failed to get public room list": "Kunne ikke få offentlig rumliste", + "Send": "Send", + "Send logs": "Send logs", + "All messages": "Alle beskeder", + "Call invitation": "Opkalds invitation", + "Downloading update...": "Downloader opdatering...", + "You have successfully set a password and an email address!": "Du har succesfuldt indstillet et password og en emailadresse!", + "Failed to send custom event.": "Kunne ikke sende brugerdefinerede begivenhed.", + "What's new?": "Hvad er nyt?", + "Notify me for anything else": "Underret mig om noget andet", + "View Source": "Se Kilde", + "Can't update user notification settings": "Kan ikke opdatere brugermeddelelsesindstillinger", + "Notify for all other messages/rooms": "Underret om alle andre meddelelser / rum", + "Unable to look up room ID from server": "Kunne ikke slå rum-id op på server", + "Couldn't find a matching Matrix room": "Kunne ikke finde et matchende Matrix-rum", + "All Rooms": "Alle rum", + "You cannot delete this message. (%(code)s)": "Du kan ikke slette denne besked. (%(code)s)", + "Thursday": "Torsdag", + "I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker at fortsætte", + "Back": "Tilbage", + "Show message in desktop notification": "Vis besked i skrivebordsnotifikation", + "Unhide Preview": "Vis Forhåndsvisning", + "Unable to join network": "Kan ikke forbinde til netværket", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du har muligvis konfigureret dem i en anden klient end Riot. Du kan ikke tune dem i Riot, men de gælder stadig", + "Sorry, your browser is not able to run Riot.": "Beklager, din browser kan ikke køre Riot.", + "Quote": "Citat", + "Messages in group chats": "Beskeder i gruppechats", + "Yesterday": "I går", + "Error encountered (%(errorDetail)s).": "En fejl er opstået (%(errorDetail)s).", + "Event Type": "Begivenhedstype", + "Low Priority": "Lav prioritet", + "Unable to fetch notification target list": "Kan ikke hente meddelelsesmålliste", + "Set Password": "Indstil Password", + "Enable audible notifications in web client": "Aktivér hørbare underretninger i webklienten", + "Resend": "Send igen", + "Riot does not know how to join a room on this network": "Riot ved ikke, hvordan man kan deltage i et rum på dette netværk", + "Mentions only": "Kun nævninger", + "Failed to remove tag %(tagName)s from room": "Kunne ikke fjerne tag(s): %(tagName)s fra rummet", + "Wednesday": "Onsdag", + "You can now return to your account after signing out, and sign in on other devices.": "Du kan nu vende tilbage til din konto efter at have logget ud og logge ind på andre enheder.", + "Enable desktop notifications": "Aktivér desktop meddelelser", + "Enable email notifications": "Aktivér e-mail-underretninger", + "Login": "Log ind", + "Download this file": "Download denne fil", + "Pin Message": "Fasthold Besked", + "Failed to change settings": "Kunne ikke ændre indstillinger", + "Developer Tools": "Udviklingsværktøjer", + "Event Content": "Begivenhedsindhold", + "Thank you!": "Tak!", + "Collapse panel": "Slå panel sammen", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med din nuværnde broser kan udseendet og fornemmelsen af programmet være helt forkert og nogle funktioner virker måske ikke. Hvis du alligevel vil prøve så kan du fortsætte, men det er på egen risiko!", + "Checking for an update...": "Checker om der er en opdatering...", + "There are advanced notifications which are not shown here": "Der er avancerede meddelelser, som ikke vises her", + "%(count)s Members": { + "other": "%(count)s medlemmer", + "one": "%(count)s medlem" + }, + "Logs sent": "Logfiler sendt", + "Reply": "Besvar", + "All messages (noisy)": "Alle meddelelser (højlydt)", + "GitHub issue link:": "Link til GitHub issue:", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debug-logfiler indeholder brugerdata såsom brugernavn, ID'er eller aliaser for de rum eller grupper, du har besøgt, og andres brugernavne. De indeholder ikke meddelelser.", + "Failed to send logs: ": "Kunne ikke sende logfiler: ", + "View Community": "Vis community", + "Notes:": "Noter:", + "Preparing to send logs": "Forbereder afsendelse af logfiler", + "Riot is not supported on mobile web. Install the app?": "Riot understøtter ikke mobilhjemmesider. Vil du installere app'en?", + "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s", + "Unknown device": "Ukendt enhed", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Du skal bruge HTTPS for at lave skærm-delings-opkald.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan bruge de brugerdefinerede server indstillinger til at logge ind på andre Matrix servere ved at skrive en anden Home Server adresse.
Dette tillader dig at bruge Riot med en eksisterende Matrix konto på en anden home server.

Du kan også indstille en brugerdefineret identity server men så vil du ikke kunne invitere brugere ved hjælp af deres emailadresse eller selv blive inviteret med emailadresse.", + "Welcome to Riot.im": "Velkommen til Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliseret, krypteret chat & samarbejde baseret på [matrix]", + "Search the room directory": "Søg i rumkataloget", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Masser af rum ekistere allerede i Matrix, forbundet til eksisterende netværk (Slack, IRC, Gitter osv.) eller selvstændige. Tjek kataloget ud!", + "Chat with Riot Bot": "Chat med Riot Bot", + "Get started with some tips from Riot Bot!": "Kom godt i gang med nogle tips fra Riot Bot!", + "General discussion about Matrix and Riot": "Generel diskussion om Matrix og Riot", + "Discussion of all things Matrix!": "Diskussion om alt der har med Matrix at gøre!", + "Riot/Web & Desktop chat": "Riot/Web- & Desktopchat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", + "Matrix technical discussions": "Matrix tekniske diskussioner", + "Running Matrix services": "Drift af Matrix tjenester", + "Community-run support for Synapse": "Fællesskabsstyret hjælp til Synapse", + "Admin support for Dendrite": "Adminstrationshjælp til Dendrite", + "Announcements about Synapse releases": "Announceringer om Synapse udgivelser", + "Support for those using and running matrix-appservice-irc": "Hjælp til dem der bruger og kører matrix-appservice-irc", + "Building services on Matrix": "Bygning af tjenester på Matrix", + "Support for those using the Matrix spec": "Hjælp til dem der anvender Matrix speciffikationen", + "Design and implementation of E2E in Matrix": "Design og implementering af E2E i Matrix", + "Implementing VR services with Matrix": "Implementering af VR tjenester med Matrix", + "Implementing VoIP services with Matrix": "Implementering af VoIP tjenester med Matrix", + "Discussion of the Identity Service API": "Diskussion af Identity Service API'en", + "Support for those using, running and writing other bridges": "Hjælp til dem der bruger, driver og skriver andre bridges", + "Contributing code to Matrix and Riot": "Biddrag med kode til Matrix og Riot", + "Dev chat for the Riot/Web dev team": "Udviklerchat til Riot/Web udviklerholdet", + "Dev chat for the Dendrite dev team": "Udviklerchat til Dendrite udviklerholdet" +} \ No newline at end of file diff --git a/riot/i18n/de_DE.json b/riot/i18n/de_DE.json new file mode 100644 index 0000000..1d5af0d --- /dev/null +++ b/riot/i18n/de_DE.json @@ -0,0 +1,1403 @@ +{ + "Filter room members": "Raum-Mitglieder filtern", + "You have no visible notifications": "Du hast keine sichtbaren Benachrichtigungen", + "Invites": "Einladungen", + "Favourites": "Favoriten", + "People": "Personen", + "Rooms": "Räume", + "Low priority": "Niedrige Priorität", + "Historical": "Archiv", + "New passwords must match each other.": "Die neuen Passwörter müssen identisch sein.", + "A new password must be entered.": "Es muss ein neues Passwort eingegeben werden.", + "The email address linked to your account must be entered.": "Es muss die mit dem Benutzerkonto verbundene E-Mail-Adresse eingegeben werden.", + "unknown device": "Unbekanntes Gerät", + "NOT verified": "NICHT verifiziert", + "Blacklisted": "Blockiert", + "verified": "verifiziert", + "Name": "Name", + "Device ID": "Geräte-ID", + "Verification": "Verifizierung", + "Ed25519 fingerprint": "Ed25519-Fingerprint", + "User ID": "Benutzer-ID", + "Curve25519 identity key": "Curve25519-Identitäts-Schlüssel", + "Claimed Ed25519 fingerprint key": "Geforderter Ed25519-Fingerprint-Schlüssel", + "none": "nicht vorhanden", + "Algorithm": "Algorithmus", + "unencrypted": "unverschlüsselt", + "Decryption error": "Fehler beim Entschlüsseln", + "Session ID": "Sitzungs-ID", + "End-to-end encryption information": "Informationen zur Ende-zu-Ende-Verschlüsselung", + "Event information": "Ereignis-Information", + "Sender device information": "Geräte-Informationen des Absenders", + "Displays action": "Zeigt Aktionen an", + "Bans user with given id": "Verbannt den Benutzer mit der angegebenen ID", + "Deops user with given id": "Setzt das Berechtigungslevel beim Benutzer mit der angegebenen ID zurück", + "Invites user with given id to current room": "Lädt den Benutzer mit der angegebenen ID in den aktuellen Raum ein", + "Joins room with given alias": "Raum wird mit dem angegebenen Alias betreten", + "Kicks user with given id": "Benutzer mit der angegebenen ID kicken", + "Changes your display nickname": "Ändert deinen angezeigten Nicknamen", + "Change Password": "Passwort ändern", + "Searches DuckDuckGo for results": "Verwendet DuckDuckGo für Suchergebnisse", + "Commands": "Kommandos", + "Emoji": "Emoji", + "Sign in": "Anmelden", + "Warning!": "Warnung!", + "Error": "Fehler", + "Add email address": "E-Mail-Adresse hinzufügen", + "Advanced": "Erweitert", + "Anyone who knows the room's link, apart from guests": "Alle, denen der Raum-Link bekannt ist (ausgenommen Gäste)", + "Anyone who knows the room's link, including guests": "Alle, denen der Raum-Link bekannt ist (auch Gäste)", + "Are you sure you want to reject the invitation?": "Bist du sicher, dass du die Einladung ablehnen willst?", + "Are you sure you want to upload the following files?": "Bist du sicher, dass du die folgenden Dateien hochladen möchtest?", + "Banned users": "Verbannte Benutzer", + "Changes to who can read history will only apply to future messages in this room": "Änderungen, die bestimmen, wer den Chatverlauf lesen kann, gelten nur für zukünftige Nachrichten in diesem Raum", + "Clear Cache and Reload": "Cache leeren und neu laden", + "Confirm your new password": "Neues Passwort bestätigen", + "Continue": "Fortfahren", + "Create an account": "Benutzerkonto erstellen", + "Create Room": "Raum erstellen", + "Cryptography": "Verschlüsselung", + "Deactivate Account": "Benutzerkonto deaktivieren", + "Deactivate my account": "Mein Benutzerkonto deaktivieren", + "Devices will not yet be able to decrypt history from before they joined the room": "Geräte werden nicht in der Lage sein, den bisherigen Chatverlauf vor dem Betreten des Raumes zu entschlüsseln", + "Display name": "Anzeigename", + "Email, name or matrix ID": "E-Mail, Name oder Matrix-ID", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Verschlüsselte Nachrichten werden nicht in Matrix-Clients sichtbar sein, die die Verschlüsselung noch nicht implementiert haben", + "Encrypted room": "Verschlüsselter Raum", + "Encryption is enabled in this room": "Verschlüsselung ist in diesem Raum aktiviert", + "Encryption is not enabled in this room": "Verschlüsselung ist in diesem Raum nicht aktiviert", + "End-to-end encryption is in beta and may not be reliable": "Die Ende-zu-Ende-Verschlüsselung befindet sich aktuell im Beta-Stadium und ist eventuell noch nicht hundertprozentig zuverlässig", + "Failed to send email": "Fehler beim Senden der E-Mail", + "Account": "Benutzerkonto", + "Add phone number": "Telefon-Nr. hinzufügen", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Dein Passwort wurde erfolgreich geändert. Du wirst erst Benachrichtigungen auf anderen Geräten empfangen können, wenn du dich dort erneut anmeldest", + "Can't load user settings": "Benutzereinstellungen können nicht geladen werden", + "Clear Cache": "Cache leeren", + "Click here to fix": "Zum reparieren hier klicken", + "Default": "Standard", + "Export E2E room keys": "E2E-Raum-Schlüssel exportieren", + "Failed to change password. Is your password correct?": "Passwortänderung fehlgeschlagen. Ist dein Passwort richtig?", + "Failed to leave room": "Verlassen des Raums fehlgeschlagen", + "Failed to reject invitation": "Einladung konnte nicht abgelehnt werden", + "Failed to set avatar.": "Profilbild konnte nicht gesetzt werden.", + "Failed to unban": "Aufheben der Verbannung fehlgeschlagen", + "Failed to upload file": "Datei-Upload fehlgeschlagen", + "Favourite": "Favorit", + "Forget room": "Raum entfernen", + "Forgot your password?": "Passwort vergessen?", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Aus Sicherheitsgründen werden beim Ausloggen alle Ende-zu-Ende-Verschlüsselungs-Schlüssel in diesem Browser gelöscht. Wenn du in späteren Riot-Sitzungen den bisherigen Chatverlauf entschlüsseln möchtest, exportiere bitte deine Schlüssel zur sicheren Aufbewahrung.", + "For security, this session has been signed out. Please sign in again.": "Aus Sicherheitsgründen wurde diese Sitzung beendet. Bitte melde dich erneut an.", + "Guests cannot join this room even if explicitly invited.": "Gäste können diesem Raum nicht beitreten, auch wenn sie explizit eingeladen wurden.", + "Hangup": "Auflegen", + "Homeserver is": "Home-Server:", + "Identity Server is": "Identitätsserver:", + "I have verified my email address": "Ich habe meine E-Mail-Adresse verifiziert", + "Import E2E room keys": "E2E-Raum-Schlüssel importieren", + "Invalid Email Address": "Ungültige E-Mail-Adresse", + "Invite new room members": "Neue Raum-Mitglieder einladen", + "Sign in with": "Anmelden mit", + "Leave room": "Raum verlassen", + "Logout": "Abmelden", + "Manage Integrations": "Integrationen verwalten", + "Mobile phone number": "Mobiltelefonnummer", + "Moderator": "Moderator", + "%(serverName)s Matrix ID": "%(serverName)s Matrix-ID", + "Never send encrypted messages to unverified devices from this device": "Niemals verschlüsselte Nachrichten an unverifizierte Geräte von diesem Gerät aus versenden", + "Never send encrypted messages to unverified devices in this room from this device": "Niemals verschlüsselte Nachrichten an unverifizierte Geräte in diesem Raum von diesem Gerät aus senden", + "New password": "Neues Passwort", + "Notifications": "Benachrichtigungen", + "": "", + "No users have specific privileges in this room": "Kein Benutzer hat in diesem Raum besondere Berechtigungen", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Sobald die Verschlüsselung für einen Raum aktiviert wird, kann diese (Stand heute) nicht mehr deaktiviert werden", + "Only people who have been invited": "Nur Personen, die eingeladen wurden", + "Password": "Passwort", + "Permissions": "Berechtigungen", + "Phone": "Telefon", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Bitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Anschließend auf \"Fortsetzen\" klicken.", + "Privacy warning": "Datenschutzwarnung", + "Privileged Users": "Privilegierte Benutzer", + "Profile": "Profil", + "Refer a friend to Riot:": "Freunde zu Riot einladen:", + "Reject invitation": "Einladung ablehnen", + "Remove Contact Information?": "Kontakt-Informationen entfernen?", + "Remove": "Entfernen", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ein Zurücksetzen des Passworts hat aktuell zur Folge, dass sämtliche Ende-zu-Ende-Verschlüsselungs-Schlüssel auf allen Geräten zurückgesetzt werden. Um zu verhindern, dass der bereits verschlüsselte Chatverlauf unlesbar wird, sollten die Raum-Schlüssel deshalb zuvor exportiert und anschließend wieder importiert werden. In Zukunft wird diese Vorgehensweise weiter verbessert und vereinfacht werden.", + "Return to login screen": "Zur Anmeldemaske zurückkehren", + "Room Colour": "Raumfarbe", + "Room name (optional)": "Raumname (optional)", + "Scroll to unread messages": "Zu den ungelesenen Nachrichten springen", + "Send Invites": "Einladungen senden", + "Send Reset Email": "E-Mail zum Zurücksetzen senden", + "Server may be unavailable or overloaded": "Server ist eventuell nicht verfügbar oder überlastet", + "Settings": "Einstellungen", + "Signed Out": "Abgemeldet", + "Sign out": "Abmelden", + "Someone": "Jemand", + "Start a chat": "Chat starten", + "Start Chat": "Chat beginnen", + "Success": "Erfolg", + "The default role for new room members is": "Das Standard-Berechtigungslevel für neue Raum-Mitglieder ist", + "The visibility of existing history will be unchanged": "Die Sichtbarkeit des bereits vorhandenen Chatverlaufs bleibt unverändert", + "This doesn't appear to be a valid email address": "Dies scheint keine gültige E-Mail-Adresse zu sein", + "This is a preview of this room. Room interactions have been disabled": "Dies ist eine Vorschau dieses Raumes. Raum-Interaktionen wurden deaktiviert", + "This room is not accessible by remote Matrix servers": "Remote-Matrix-Server können auf diesen Raum nicht zugreifen", + "This room's internal ID is": "Die interne ID dieses Raumes ist", + "Admin": "Administrator", + "Server may be unavailable, overloaded, or you hit a bug.": "Server ist nicht verfügbar, überlastet oder du bist auf einen Softwarefehler gestoßen.", + "Could not connect to the integration server": "Konnte keine Verbindung zum Integrations-Server herstellen", + "Labs": "Labor", + "Show panel": "Panel anzeigen", + "To reset your password, enter the email address linked to your account": "Um dein Passwort zurückzusetzen, gib bitte die mit deinem Account verknüpfte E-Mail-Adresse ein", + "Unable to add email address": "E-Mail-Adresse konnte nicht hinzugefügt werden", + "Unable to remove contact information": "Die Kontakt-Informationen konnten nicht gelöscht werden", + "Unable to verify email address.": "Die E-Mail-Adresse konnte nicht verifiziert werden.", + "Unban": "Verbannung aufheben", + "Unencrypted room": "Unverschlüsselter Raum", + "unknown error code": "Unbekannter Fehlercode", + "Upload avatar": "Profilbild hochladen", + "Upload Files": "Dateien hochladen", + "Upload file": "Datei hochladen", + "User Interface": "Benutzeroberfläche", + "User name": "Nutzername", + "Users": "Benutzer", + "Verification Pending": "Verifizierung ausstehend", + "Video call": "Video-Anruf", + "Voice call": "Sprachanruf", + "VoIP conference finished.": "VoIP-Konferenz wurde beendet.", + "VoIP conference started.": "VoIP-Konferenz gestartet.", + "(warning: cannot be disabled again!)": "(Warnung: Kann anschließend nicht mehr deaktiviert werden!)", + "Who can access this room?": "Wer hat Zugang zu diesem Raum?", + "Who can read history?": "Wer kann den bisherigen Chatverlauf lesen?", + "Who would you like to add to this room?": "Wen möchtest du zu diesem Raum hinzufügen?", + "Who would you like to communicate with?": "Mit wem möchtest du kommunizieren?", + "You do not have permission to post to this room": "Du hast keine Berechtigung, in diesem Raum etwas zu senden", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s hat dich in diesen Raum eingeladen", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du wurdest auf allen Geräten abgemeldet und wirst keine Push-Benachrichtigungen mehr erhalten. Um die Benachrichtigungen zu reaktivieren, musst du dich auf jedem Gerät neu anmelden", + "Your password has been reset": "Dein Passwort wurde zurückgesetzt", + "You should not yet trust it to secure data": "Du solltest aktuell noch nicht darauf vertrauen, dass deine Daten zuverlässig verschlüsselt werden", + "Bulk Options": "Bulk-Optionen", + "Call Timeout": "Anruf-Timeout", + "Conference call failed.": "Konferenzgespräch fehlgeschlagen.", + "Conference calling is in development and may not be reliable.": "Konferenzgespräche befinden sich noch in der Entwicklungsphase und sind möglicherweise nicht zuverlässig nutzbar.", + "Conference calls are not supported in encrypted rooms": "Konferenzgespräche werden in verschlüsselten Räumen nicht unterstützt", + "Conference calls are not supported in this client": "Konferenzgespräche werden von diesem Client nicht unterstützt", + "Existing Call": "Bereits bestehender Anruf", + "Failed to set up conference call": "Konferenzgespräch konnte nicht gestartet werden", + "Failed to verify email address: make sure you clicked the link in the email": "Verifizierung der E-Mail-Adresse fehlgeschlagen: Bitte stelle sicher, dass du den Link in der E-Mail angeklickt hast", + "Failure to create room": "Raumerstellung fehlgeschlagen", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot hat keine Berechtigung, um Benachrichtigungen zu senden - bitte Browser-Einstellungen überprüfen", + "Riot was not given permission to send notifications - please try again": "Riot hat keine Berechtigung für das Senden von Benachrichtigungen erhalten - bitte erneut versuchen", + "This email address is already in use": "Diese E-Mail-Adresse wird bereits verwendet", + "This email address was not found": "Diese E-Mail-Adresse konnte nicht gefunden werden", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Die Datei '%(fileName)s' überschreitet das Größen-Limit für Uploads auf diesem Heimserver", + "The file '%(fileName)s' failed to upload": "Das Hochladen der Datei '%(fileName)s' schlug fehl", + "The remote side failed to pick up": "Die Gegenstelle konnte nicht abheben", + "This phone number is already in use": "Diese Telefonnummer wird bereits verwendet", + "Unable to capture screen": "Der Bildschirm konnte nicht aufgenommen werden", + "Unable to enable Notifications": "Benachrichtigungen konnten nicht aktiviert werden", + "Upload Failed": "Upload fehlgeschlagen", + "VoIP is unsupported": "VoIP wird nicht unterstützt", + "You are already in a call.": "Du bist bereits in einem Gespräch.", + "You cannot place a call with yourself.": "Du kannst keinen Anruf mit dir selbst starten.", + "You cannot place VoIP calls in this browser.": "VoIP-Gespräche werden von diesem Browser nicht unterstützt.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Deine E-Mail-Adresse scheint nicht mit einer Matrix-ID auf diesem Heimserver verbunden zu sein.", + "Sun": "So", + "Mon": "Mo", + "Tue": "Di", + "Wed": "Mi", + "Thu": "Do", + "Fri": "Fr", + "Sat": "Sa", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mrz", + "Apr": "April", + "May": "Mai", + "Jun": "Jun", + "Jul": "Juli", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dez", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s. %(monthName)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s, %(time)s", + "Set a display name:": "Anzeigename eingeben:", + "Upload an avatar:": "Profilbild hochladen:", + "This server does not support authentication with a phone number.": "Dieser Server unterstützt keine Authentifizierung per Telefonnummer.", + "Missing password.": "Fehlendes Passwort.", + "Passwords don't match.": "Passwörter stimmen nicht überein.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passwort zu kurz (min. %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Dies scheint keine gültige E-Mail-Adresse zu sein.", + "This doesn't look like a valid phone number.": "Dies scheint keine gültige Telefonnummer zu sein.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Benutzernamen dürfen nur Buchstaben, Nummern, Punkte, Binde- und Unterstriche enthalten.", + "An unknown error occurred.": "Ein unbekannter Fehler ist aufgetreten.", + "I already have an account": "Ich habe bereits einen Account", + "An error occurred: %(error_string)s": "Ein Fehler ist aufgetreten: %(error_string)s", + "Topic": "Thema", + "Make this room private": "Mache diesen Raum privat", + "Share message history with new users": "Bisherigen Chatverlauf mit neuen Nutzern teilen", + "Encrypt room": "Raum verschlüsseln", + "%(names)s and %(lastPerson)s are typing": "%(names)s und %(lastPerson)s schreiben", + "%(targetName)s accepted an invitation.": "%(targetName)s hat eine Einladung angenommen.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s hat die Einladung für %(displayName)s akzeptiert.", + "%(senderName)s answered the call.": "%(senderName)s hat den Anruf angenommen.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s hat %(targetName)s verbannt.", + "%(senderName)s changed their profile picture.": "%(senderName)s hat das Profilbild geändert.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s hat das Berechtigungslevel von %(powerLevelDiffText)s geändert.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s hat den Raumnamen geändert zu %(roomName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s hat das Thema geändert in \"%(topic)s\".", + "/ddg is not a command": "/ddg ist kein Kommando", + "%(senderName)s ended the call.": "%(senderName)s hat den Anruf beendet.", + "Failed to send request.": "Anfrage konnte nicht gesendet werden.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s von %(fromPowerLevel)s zu %(toPowerLevel)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s hat %(targetName)s eingeladen.", + "%(displayName)s is typing": "%(displayName)s schreibt", + "%(targetName)s joined the room.": "%(targetName)s hat den Raum betreten.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s hat %(targetName)s gekickt.", + "%(targetName)s left the room.": "%(targetName)s hat den Raum verlassen.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie eingeladen wurden).", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für alle Raum-Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind).", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für: Alle Raum-Mitglieder.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s hat den zukünftigen Chatverlauf sichtbar gemacht für Alle.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hat den zukünftigen Chatverlauf für Unbekannte sichtbar gemacht (%(visibility)s).", + "Missing room_id in request": "Fehlende room_id in Anfrage", + "Missing user_id in request": "Fehlende user_id in Anfrage", + "(not supported by this browser)": "(wird von diesem Browser nicht unterstützt)", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s startete einen %(callType)s-Anruf.", + "Power level must be positive integer.": "Berechtigungslevel muss eine positive ganze Zahl sein.", + "Reason": "Grund", + "%(targetName)s rejected the invitation.": "%(targetName)s hat die Einladung abgelehnt.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s hat den Anzeigenamen entfernt (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s hat das Profilbild gelöscht.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s möchte eine VoIP-Konferenz beginnen.", + "Room %(roomId)s not visible": "Raum %(roomId)s ist nicht sichtbar", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s hat ein Bild gesendet.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s hat %(targetDisplayName)s in diesen Raum eingeladen.", + "%(senderName)s set a profile picture.": "%(senderName)s hat ein Profilbild gesetzt.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s hat den Anzeigenamen geändert in %(displayName)s.", + "This room is not recognised.": "Dieser Raum wurde nicht erkannt.", + "These are experimental features that may break in unexpected ways": "Dies sind experimentelle Funktionen, die in unerwarteter Weise Fehler verursachen können", + "To use it, just wait for autocomplete results to load and tab through them.": "Um diese Funktion zu nutzen, warte einfach auf die Autovervollständigungsergebnisse und benutze dann die TAB-Taste zum durchblättern.", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s hat die Ende-zu-Ende-Verschlüsselung aktiviert (Algorithmus: %(algorithm)s).", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s hat die Verbannung von %(targetName)s aufgehoben.", + "Usage": "Verwendung", + "Use with caution": "Mit Vorsicht zu verwenden", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s hat die Einladung für %(targetName)s zurückgezogen.", + "You need to be able to invite users to do that.": "Du musst die Berechtigung haben, Benutzer einzuladen, um diese Aktion ausführen zu können.", + "You need to be logged in.": "Du musst angemeldet sein.", + "There are no visible files in this room": "Es gibt keine sichtbaren Dateien in diesem Raum", + "Connectivity to the server has been lost.": "Verbindung zum Server wurde unterbrochen.", + "Sent messages will be stored until your connection has returned.": "Gesendete Nachrichten werden gespeichert, bis die Internetverbindung wiederhergestellt wird.", + "Active call": "Aktiver Anruf", + "Drop here to tag %(section)s": "Hierher ziehen: %(section)s taggen", + "click to reveal": "anzeigen", + "You are trying to access %(roomName)s.": "Du versuchst, auf den Raum \"%(roomName)s\" zuzugreifen.", + "Failed to forget room %(errCode)s": "Das Entfernen des Raums ist fehlgeschlagen %(errCode)s", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Eine Textnachricht wurde an +%(msisdn)s gesendet. Bitte den darin enthaltenen Verifizierungscode eingeben", + "and %(count)s others...": { + "other": "und %(count)s weitere...", + "one": "und ein(e) weitere(r)..." + }, + "Are you sure?": "Bist du sicher?", + "Attachment": "Anhang", + "Ban": "Verbannen", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Es kann keine Verbindung zum Heimserver via HTTP aufgebaut werden, wenn die Adresszeile des Browsers eine HTTPS-URL enthält. Entweder HTTPS verwenden oder alternativ unsichere Skripte erlauben.", + "Click to mute audio": "Klicke um den Ton stumm zu stellen", + "Click to mute video": "Klicken, um das Video stummzuschalten", + "Command error": "Befehlsfehler", + "Decrypt %(text)s": "%(text)s entschlüsseln", + "Delete": "Löschen", + "Devices": "Geräte", + "Direct chats": "Direkt-Chats", + "Disinvite": "Einladung zurückziehen", + "Download %(text)s": "%(text)s herunterladen", + "Enter Code": "Code eingeben", + "Failed to ban user": "Verbannen des Benutzers fehlgeschlagen", + "Failed to change power level": "Ändern des Berechtigungslevels fehlgeschlagen", + "Failed to join room": "Betreten des Raumes ist fehlgeschlagen", + "Failed to kick": "Kicken fehlgeschlagen", + "Failed to mute user": "Stummschalten des Nutzers fehlgeschlagen", + "Failed to reject invite": "Ablehnen der Einladung ist fehlgeschlagen", + "Failed to save settings": "Einstellungen konnten nicht gespeichert werden", + "Failed to set display name": "Anzeigename konnte nicht gesetzt werden", + "Fill screen": "Fülle Bildschirm", + "Hide Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste verbergen", + "Incorrect verification code": "Falscher Verifizierungscode", + "Invalid alias format": "Ungültiges Alias-Format", + "Invalid address format": "Ungültiges Adressformat", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' ist kein gültiges Adressformat", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ist kein gültiges Alias-Format", + "Join Room": "Dem Raum beitreten", + "Kick": "Kicken", + "Local addresses for this room:": "Lokale Adressen dieses Raumes:", + "Markdown is disabled": "Markdown ist deaktiviert", + "Markdown is enabled": "Markdown ist aktiviert", + "Message not sent due to unknown devices being present": "Nachrichten wurden nicht gesendet, da unbekannte Geräte anwesend sind", + "New address (e.g. #foo:%(localDomain)s)": "Neue Adresse (z. B. #foo:%(localDomain)s)", + "not set": "nicht gesetzt", + "not specified": "nicht spezifiziert", + "No devices with registered encryption keys": "Keine Geräte mit registrierten Verschlüsselungs-Schlüsseln", + "No more results": "Keine weiteren Ergebnisse", + "No results": "Keine Ergebnisse", + "OK": "OK", + "Revoke Moderator": "Moderator-Status zurückziehen", + "Search": "Suchen", + "Search failed": "Suche ist fehlgeschlagen", + "Server error": "Server-Fehler", + "Server may be unavailable, overloaded, or search timed out :(": "Der Server ist entweder nicht verfügbar, überlastet oder die Suche wurde wegen Zeitüberschreitung abgebrochen :(", + "Server may be unavailable, overloaded, or the file too big": "Server ist entweder nicht verfügbar, überlastet oder die Datei ist zu groß", + "Server unavailable, overloaded, or something else went wrong.": "Server ist nicht verfügbar, überlastet oder ein anderer Fehler ist aufgetreten.", + "%(count)s of your messages have not been sent.": { + "other": "Einige deiner Nachrichten wurden nicht gesendet.", + "one": "Deine Nachricht wurde nicht gesendet." + }, + "Submit": "Absenden", + "This room has no local addresses": "Dieser Raum hat keine lokale Adresse", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden. Dir fehlt jedoch die Berechtigung, die betreffende Nachricht zu sehen.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Es wurde versucht, einen bestimmten Punkt im Chatverlauf dieses Raumes zu laden, der Punkt konnte jedoch nicht gefunden werden.", + "Turn Markdown off": "Markdown deaktiveren", + "Turn Markdown on": "Markdown aktivieren", + "Unable to load device list": "Geräteliste konnte nicht geladen werden", + "Unknown room %(roomId)s": "Unbekannter Raum %(roomId)s", + "You seem to be in a call, are you sure you want to quit?": "Du scheinst in einem Anruf zu sein. Bist du sicher schließen zu wollen?", + "You seem to be uploading files, are you sure you want to quit?": "Du scheinst Dateien hochzuladen. Bist du sicher schließen zu wollen?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du wirst diese Änderung nicht rückgängig machen können, da der Benutzer dasselbe Berechtigungslevel wie du selbst erhalten wird.", + "Make Moderator": "Zum Moderator ernennen", + "Room": "Raum", + "Cancel": "Abbrechen", + "bold": "Fett", + "italic": "Kursiv", + "strike": "Durchgestrichen", + "underline": "Unterstrichen", + "code": "Code", + "quote": "Zitat", + "bullet": "Aufzählung", + "Click to unmute video": "Klicken, um die Video-Stummschaltung zu deaktivieren", + "Click to unmute audio": "Klicken, um den Ton wieder einzuschalten", + "Failed to load timeline position": "Laden der Chat-Position fehlgeschlagen", + "Failed to toggle moderator status": "Umschalten des Moderator-Status fehlgeschlagen", + "Enable encryption": "Verschlüsselung aktivieren", + "The main address for this room is": "Die Hauptadresse für diesen Raum ist", + "Autoplay GIFs and videos": "GIF-Dateien und Videos automatisch abspielen", + "Don't send typing notifications": "Schreibbenachrichtigungen unterdrücken", + "Hide read receipts": "Lesebestätigungen verbergen", + "numbullet": "Nummerierung", + "%(items)s and %(lastItem)s": "%(items)s und %(lastItem)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s. %(monthName)s %(fullYear)s %(time)s", + "Access Token:": "Zugangs-Token:", + "Always show message timestamps": "Nachrichten-Zeitstempel immer anzeigen", + "Authentication": "Authentifizierung", + "An error has occurred.": "Ein Fehler ist aufgetreten.", + "Confirm password": "Passwort bestätigen", + "Current password": "Aktuelles Passwort", + "Email": "E-Mail", + "Interface Language": "Oberflächen-Sprache", + "Logged in as:": "Angemeldet als:", + "matrix-react-sdk version:": "Version von matrix-react-sdk:", + "New passwords don't match": "Die neuen Passwörter stimmen nicht überein", + "olm version:": "Version von olm:", + "Passwords can't be empty": "Passwortfelder dürfen nicht leer sein", + "riot-web version:": "Version von riot-web:", + "Scroll to bottom of page": "Zum Seitenende springen", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zeitstempel im 12-Stunden-Format anzeigen (z. B. 2:30pm)", + "Email address": "E-Mail-Adresse", + "Error decrypting attachment": "Fehler beim Entschlüsseln des Anhangs", + "Mute": "Stummschalten", + "Operation failed": "Aktion fehlgeschlagen", + "You need to enter a user name.": "Du musst einen Benutzernamen eingeben.", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Eine Änderung des Passworts setzt derzeit alle Schlüssel für die E2E-Verschlüsselung auf allen verwendeten Geräten zurück. Bereits verschlüsselte Chat-Inhalte sind somit nur noch lesbar, wenn du zunächst alle Schlüssel exportierst und später wieder importierst. Wir arbeiten an einer Verbesserung dieser momentan noch notwendigen Vorgehensweise.", + "Unmute": "Stummschalten aufheben", + "Invalid file%(extra)s": "Ungültige Datei%(extra)s", + "Remove %(threePid)s?": "%(threePid)s entfernen?", + "Please select the destination room for this message": "Bitte den Raum auswählen, an den diese Nachricht gesendet werden soll", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s hat den Raum-Namen entfernt.", + "Passphrases must match": "Passphrases müssen übereinstimmen", + "Passphrase must not be empty": "Passphrase darf nicht leer sein", + "Export room keys": "Raum-Schlüssel exportieren", + "Enter passphrase": "Passphrase eingeben", + "Confirm passphrase": "Passphrase bestätigen", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Die exportierte Datei ist mit einer Passphrase geschützt. Du kannst die Passphrase hier eingeben, um die Datei zu entschlüsseln.", + "You must join the room to see its files": "Du musst dem Raum beitreten, um die Raum-Dateien sehen zu können", + "Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s Einladungen ablehnen", + "Failed to invite": "Einladen fehlgeschlagen", + "Failed to invite user": "Einladen des Nutzers ist fehlgeschlagen", + "Confirm Removal": "Entfernen bestätigen", + "Unknown error": "Unbekannter Fehler", + "Incorrect password": "Ungültiges Passwort", + "To continue, please enter your password.": "Zum fortfahren bitte Passwort eingeben.", + "Device name": "Geräte-Name", + "Device key": "Geräte-Schlüssel", + "In future this verification process will be more sophisticated.": "Zukünftig wird der Verifizierungsprozess technisch ausgereifter und eleganter gestaltet werden.", + "Verify device": "Gerät verifizieren", + "I verify that the keys match": "Ich bestätige, dass die Schlüssel identisch sind", + "Unable to restore session": "Sitzungswiederherstellung fehlgeschlagen", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Nicht verifizierte Geräte werden aktuell blockiert und auf die Sperrliste gesetzt. Um Nachrichten an diese Geräte senden zu können, müssen diese zunächst verifiziert werden.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" enthält Geräte, die du bislang noch nicht gesehen hast.", + "Unknown devices": "Unbekannte Geräte", + "Unknown Address": "Unbekannte Adresse", + "Verify...": "Verifizieren...", + "ex. @bob:example.com": "z. B. @bob:example.com", + "Add User": "Benutzer hinzufügen", + "Sign in with CAS": "Mit CAS anmelden", + "Custom Server Options": "Benutzerdefinierte Server-Optionen", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Du kannst die erweiterten Server-Optionen nutzen, um dich an anderen Matrix-Servern anzumelden, indem du eine andere Heimserver-URL angibst.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Dies erlaubt es dir, diese App mit einem existierenden Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden.", + "Dismiss": "Ablehnen", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kannst auch einen angepassten Idantitätsserver angeben aber dies wird typischerweise Interaktionen mit anderen Nutzern auf Basis der E-Mail-Adresse verhindern.", + "Please check your email to continue registration.": "Bitte prüfe deine E-Mails, um mit der Registrierung fortzufahren.", + "Token incorrect": "Token fehlerhaft", + "Please enter the code it contains:": "Bitte gib den darin enthaltenen Code ein:", + "powered by Matrix": "betrieben mit Matrix", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Wenn du keine E-Mail-Adresse angibst, wirst du nicht in der Lage sein, dein Passwort zurückzusetzen. Bist du sicher?", + "You are registering with %(SelectedTeamName)s": "Du registrierst dich mit %(SelectedTeamName)s", + "Default server": "Standard-Server", + "Custom server": "Benutzerdefinierter Server", + "Home server URL": "Heimserver-URL", + "Identity server URL": "Identitätsserver-URL", + "What does this mean?": "Was bedeutet das?", + "Error decrypting audio": "Audio-Entschlüsselung fehlgeschlagen", + "Error decrypting image": "Bild-Entschlüsselung fehlgeschlagen", + "Error decrypting video": "Video-Entschlüsselung fehlgeschlagen", + "Import room keys": "Raum-Schlüssel importieren", + "File to import": "Zu importierende Datei", + "Failed to invite the following users to the %(roomName)s room:": "Das Einladen der folgenden Benutzer in den Raum \"%(roomName)s\" ist fehlgeschlagen:", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Bist du sicher, dass du dieses Ereignis entfernen (löschen) möchtest? Wenn du die Änderung eines Raum-Namens oder eines Raum-Themas löscht, kann dies dazu führen, dass die ursprüngliche Änderung rückgängig gemacht wird.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dieser Prozess erlaubt es dir, die Schlüssel für die in verschlüsselten Räumen empfangenen Nachrichten in eine lokale Datei zu exportieren. In Zukunft wird es möglich sein, diese Datei in einen anderen Matrix-Client zu importieren, sodass dieser Client diese Nachrichten ebenfalls entschlüsseln kann.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Mit der exportierten Datei kann jeder, der diese Datei lesen kann, jede verschlüsselte Nachricht entschlüsseln, die für dich lesbar ist. Du solltest die Datei also unbedingt sicher verwahren. Um den Vorgang sicherer zu gestalten, solltest du unten eine Passphrase eingeben, die dazu verwendet wird, die exportierten Daten zu verschlüsseln. Anschließend wird es nur möglich sein, die Daten zu importieren, wenn dieselbe Passphrase verwendet wird.", + "Analytics": "Anonymisierte Analysedaten", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot sammelt anonymisierte Analysedaten, um die Anwendung kontinuierlich verbessern zu können.", + "Add an Integration": "Eine Integration hinzufügen", + "Removed or unknown message type": "Gelöschte Nachricht oder unbekannter Nachrichten-Typ", + "URL Previews": "URL-Vorschau", + "Offline": "Offline", + "Online": "Online", + " (unsupported)": " (nicht unterstützt)", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dieser Prozess erlaubt es dir, die zuvor von einem anderen Matrix-Client exportierten Verschlüsselungs-Schlüssel zu importieren. Danach kannst du alle Nachrichten entschlüsseln, die auch bereits auf dem anderen Client entschlüsselt werden konnten.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Um sicherzustellen, dass diesem Gerät vertraut werden kann, kontaktiere bitte den Eigentümer des Geräts über ein anderes Kommunikationsmittel (z.B. im persönlichen Gespräch oder durch einen Telefonanruf) und vergewissere dich, dass der Schlüssel, den der Eigentümer in den Benutzer-Einstellungen für dieses Gerät sieht, mit dem folgenden Schlüssel identisch ist:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Wenn er identisch ist, bitte den Bestätigen-Button unten verwenden. Falls er nicht identisch sein sollte, hat eine Fremdperson Kontrolle über dieses Gerät und es sollte gesperrt werden.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Wenn du zuvor eine aktuellere Version von Riot verwendet hast, ist deine Sitzung eventuell inkompatibel mit dieser Version. Bitte schließe dieses Fenster und kehre zur aktuelleren Version zurück.", + "Blacklist": "Blockieren", + "Unblacklist": "Entblockieren", + "Unverify": "Verifizierung widerrufen", + "This Home Server would like to make sure you are not a robot": "Dieser Heimserver möchte sicherstellen, dass du kein Roboter bist", + "Drop file here to upload": "Datei hier loslassen zum hochladen", + "Idle": "Untätig", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Wir empfehlen dir, für jedes Gerät den Verifizierungsprozess durchzuführen, um sicherzustellen, dass sie tatsächlich ihrem rechtmäßigem Eigentümer gehören. Alternativ kannst du die Nachrichten auch ohne Verifizierung erneut senden.", + "Ongoing conference call%(supportedText)s.": "Laufendes Konferenzgespräch%(supportedText)s.", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du wirst jetzt auf die Website eines Drittanbieters weitergeleitet, damit du dein Benutzerkonto für die Verwendung von %(integrationsUrl)s authentifizieren kannst. Möchtest du fortfahren?", + "Start automatically after system login": "Nach System-Login automatisch starten", + "Desktop specific": "Desktopspezifisch", + "Jump to first unread message.": "Zur ersten ungelesenen Nachricht springen.", + "Options": "Optionen", + "Invited": "Eingeladen", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s hat das Raum-Bild entfernt.", + "VoIP": "VoIP", + "No Webcams detected": "Keine Webcam erkannt", + "Missing Media Permissions, click here to request.": "Fehlende Medienberechtigungen. Hier klicken, um Berechtigungen zu beantragen.", + "No Microphones detected": "Keine Mikrofone erkannt", + "No media permissions": "Keine Medienberechtigungen", + "You may need to manually permit Riot to access your microphone/webcam": "Gegebenenfalls kann es notwendig sein, dass du Riot manuell den Zugriff auf dein Mikrofon bzw. deine Webcam gewähren musst", + "Default Device": "Standard-Gerät", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Device already verified!": "Gerät bereits verifiziert!", + "Export": "Export", + "Guest access is disabled on this Home Server.": "Der Gastzugang ist auf diesem Heimserver deaktiviert.", + "Import": "Importieren", + "Incorrect username and/or password.": "Inkorrekter Nutzername und/oder Passwort.", + "Results from DuckDuckGo": "Ergebnisse von DuckDuckGo", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Den Signaturschlüssel den du bereitstellst stimmt mit dem Schlüssel den du von %(userId)s's Gerät %(deviceId)s empfangen hast überein. Gerät als verifiziert markiert.", + "Add a topic": "Thema hinzufügen", + "Anyone": "Jeder", + "Are you sure you want to leave the room '%(roomName)s'?": "Bist du sicher, dass du den Raum '%(roomName)s' verlassen möchtest?", + "Custom level": "Benutzerdefiniertes Berechtigungslevel", + "Device ID:": "Geräte-Kennung:", + "device id: ": "Geräte-ID: ", + "Device key:": "Geräte-Schlüssel:", + "Email address (optional)": "E-Mail-Adresse (optional)", + "Publish this room to the public in %(domain)s's room directory?": "Diesen Raum im Raum-Verzeichnis von %(domain)s veröffentlichen?", + "Mobile phone number (optional)": "Mobilfunknummer (optional)", + "Password:": "Passwort:", + "Register": "Registrieren", + "Save": "Speichern", + "Tagged as: ": "Markiert als: ", + "This Home Server does not support login using email address.": "Dieser Heimserver unterstützt den Login mittels E-Mail-Adresse nicht.", + "Unknown (user, device) pair:": "Unbekanntes (Benutzer-/Gerät-)Paar:", + "Remote addresses for this room:": "Remote-Adressen für diesen Raum:", + "Unrecognised command:": "Unbekannter Befehl:", + "Unrecognised room alias:": "Unbekannter Raum-Alias:", + "Use compact timeline layout": "Kompaktes Layout", + "Verified key": "Verifizierter Schlüssel", + "WARNING: Device already verified, but keys do NOT MATCH!": "WARNUNG: Gerät bereits verifiziert, aber Schlüssel sind NICHT GLEICH!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNUNG: SCHLÜSSEL-VERIFIZIERUNG FEHLGESCHLAGEN! Der Signatur-Schlüssel für %(userId)s und das Gerät %(deviceId)s ist \"%(fprint)s\", welcher nicht mit dem bereitgestellten Schlüssel \"%(fingerprint)s\" übereinstimmt. Dies kann bedeuten, dass deine Kommunikation abgehört wird!", + "You have disabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig deaktiviert.", + "You have enabled URL previews by default.": "Du hast die URL-Vorschau standardmäßig aktiviert.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s hat das Raum-Bild geändert zu ", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s hat das Raum-Bild für %(roomName)s geändert", + "Hide removed messages": "Gelöschte Nachrichten verbergen", + "Start new chat": "Neuen Chat starten", + "Add": "Hinzufügen", + "%(count)s new messages": { + "one": "%(count)s neue Nachricht", + "other": "%(count)s neue Nachrichten" + }, + "Error: Problem communicating with the given homeserver.": "Fehler: Problem bei der Kommunikation mit dem angegebenen Home-Server.", + "Failed to fetch avatar URL": "Abrufen der Avatar-URL fehlgeschlagen", + "The phone number entered looks invalid": "Die eingegebene Telefonnummer scheint ungültig zu sein", + "Uploading %(filename)s and %(count)s others": { + "zero": "%(filename)s wird hochgeladen", + "one": "%(filename)s und %(count)s weitere Dateien werden hochgeladen", + "other": "%(filename)s und %(count)s weitere Dateien werden hochgeladen" + }, + "You must register to use this functionality": "Du musst dich registrieren, um diese Funktionalität nutzen zu können", + "Create new room": "Neuen Raum erstellen", + "Room directory": "Raum-Verzeichnis", + "Start chat": "Chat starten", + "New Password": "Neues Passwort", + "Start chatting": "Chat beginnen", + "Start Chatting": "Starte Gespräche", + "Click on the button below to start chatting!": "Unten auf den Button klicken, um einen Chat zu beginnen!", + "Create a new chat or reuse an existing one": "Neuen Chat erstellen oder einen vorhandenen Chat fortsetzen", + "You already have existing direct chats with this user:": "Du hast bereits existierende direkte Chats mit diesem Benutzer:", + "Username available": "Benutzername ist verfügbar", + "Username not available": "Benutzername ist nicht verfügbar", + "Something went wrong!": "Etwas ging schief!", + "This will be your account name on the homeserver, or you can pick a different server.": "Dies wird dein zukünftiger Benutzername auf dem Heimserver. Alternativ kannst du auch einen anderen Server auswählen.", + "If you already have a Matrix account you can log in instead.": "Wenn du bereits ein Matrix-Benutzerkonto hast, kannst du dich stattdessen auch direkt anmelden.", + "Home": "Startseite", + "Username invalid: %(errMessage)s": "Ungültiger Benutzername: %(errMessage)s", + "Accept": "Akzeptieren", + "Active call (%(roomName)s)": "Aktiver Anruf (%(roomName)s)", + "Admin Tools": "Admin-Werkzeuge", + "Alias (optional)": "Alias (optional)", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Verbindung zum Heimserver fehlgeschlagen - bitte überprüfe die Internetverbindung und stelle sicher, dass dem SSL-Zertifikat deines Heimservers vertraut wird und dass Anfragen nicht durch eine Browser-Erweiterung blockiert werden.", + "Click here to join the discussion!": "Hier klicken, um an der Diskussion teilzunehmen!", + "Close": "Schließen", + "Custom": "Erweitert", + "Decline": "Ablehnen", + "Disable Notifications": "Benachrichtigungen deaktivieren", + "Drop File Here": "Lasse Datei hier los", + "Enable Notifications": "Benachrichtigungen aktivieren", + "Encrypted by a verified device": "Von einem vertrauten Gerät verschlüsselt", + "Encrypted by an unverified device": "Von einem nicht verifizierten Gerät verschlüsselt", + "Failed to upload profile picture!": "Hochladen des Profilbild's fehlgeschlagen!", + "Incoming call from %(name)s": "Eingehender Anruf von %(name)s", + "Incoming video call from %(name)s": "Eingehender Video-Anruf von %(name)s", + "Incoming voice call from %(name)s": "Eingehender Sprach-Anruf von %(name)s", + "Join as voice or video.": "Per Sprachanruf oder Videoanruf beitreten.", + "Last seen": "Zuletzt gesehen", + "Level:": "Berechtigungslevel:", + "No display name": "Kein Anzeigename", + "Private Chat": "Privater Chat", + "Public Chat": "Öffentlicher Chat", + "Reason: %(reasonText)s": "Grund: %(reasonText)s", + "Rejoin": "Erneut beitreten", + "Room contains unknown devices": "Raum enthält unbekannte Geräte", + "%(roomName)s does not exist.": "%(roomName)s existert nicht.", + "%(roomName)s is not accessible at this time.": "%(roomName)s ist aktuell nicht zugreifbar.", + "Seen by %(userName)s at %(dateTime)s": "Gesehen von %(userName)s um %(dateTime)s", + "Send anyway": "Trotzdem senden", + "Start authentication": "Authentifizierung beginnen", + "Show Text Formatting Toolbar": "Text-Formatierungs-Werkzeugleiste anzeigen", + "This invitation was sent to an email address which is not associated with this account:": "Diese Einladung wurde an eine E-Mail-Adresse gesendet, die nicht mit diesem Benutzerkonto verknüpft ist:", + "This room": "In diesem Raum", + "To link to a room it must have an address.": "Um einen Raum zu verlinken, muss er eine Adresse haben.", + "Undecryptable": "Nicht entschlüsselbar", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Es konnte nicht ermittelt werden, ob die Adresse, an die diese Einladung gesendet wurde, mit einer mit deinem Benutzerkonto verknüpften Adresse übereinstimmt.", + "Unencrypted message": "Nicht verschlüsselbare Nachricht", + "unknown caller": "Unbekannter Anrufer", + "Unnamed Room": "Unbenannter Raum", + "Unverified": "Nicht verifiziert", + "Upload new:": "Neue(s) hochladen:", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (Berechtigungslevel %(powerLevelNumber)s)", + "Verified": "Verifiziert", + "Would you like to accept or decline this invitation?": "Möchtest du diese Einladung akzeptieren oder ablehnen?", + "You have been banned from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum %(roomName)s verbannt.", + "You have been kicked from %(roomName)s by %(userName)s.": "Du wurdest von %(userName)s aus dem Raum \"%(roomName)s\" gekickt.", + "You may wish to login with a different account, or add this email to this account.": "Du möchtest dich eventuell mit einem anderen Konto anmelden oder alternativ diese E-Mail-Adresse diesem Konto hinzufügen.", + "Your home server does not support device management.": "Dein Heimserver unterstützt kein Geräte-Management.", + "(~%(count)s results)": { + "one": "(~%(count)s Ergebnis)", + "other": "(~%(count)s Ergebnis)" + }, + "Device Name": "Geräte-Name", + "(could not connect media)": "(Medienverbindung konnte nicht hergestellt werden)", + "(no answer)": "(keine Antwort)", + "(unknown failure: %(reason)s)": "(Unbekannter Fehler: %(reason)s)", + "Your browser does not support the required cryptography extensions": "Dein Browser unterstützt die benötigten Verschlüsselungs-Erweiterungen nicht", + "Not a valid Riot keyfile": "Keine gültige Riot-Schlüsseldatei", + "Authentication check failed: incorrect password?": "Authentifizierung fehlgeschlagen: Falsches Passwort?", + "Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer-Verbindung für 1-zu-1-Anrufe deaktivieren", + "Do you want to set an email address?": "Möchtest du eine E-Mail-Adresse setzen?", + "This will allow you to reset your password and receive notifications.": "Dies ermöglicht es dir, dein Passwort zurückzusetzen und Benachrichtigungen zu empfangen.", + "Press to start a chat with someone": "Auf klicken, um einen Chat zu beginnen", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Du bist bislang keinem Raum beigetreten! Auf klicken, um einen Raum zu erstellen, oder auf klicken, um das Raum-Verzeichnis zu durchsuchen", + "To return to your account in future you need to set a password": "Um in Zukunft auf dein Benutzerkonto zugreifen zu können, musst du ein Passwort einrichten", + "Skip": "Überspringen", + "Start verification": "Verifizierung starten", + "Share without verifying": "Ohne Verifizierung verwenden", + "Ignore request": "Anforderung ignorieren", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du hast das neue Gerät '%(displayName)s' hinzugefügt, welches nun Verschlüsselungs-Schlüssel anfordert.", + "Encryption key request": "Anforderung von Verschlüsselungs-Schlüsseln", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Dein nicht verifiziertes Gerät '%(displayName)s' fordert Verschlüsselungs-Schlüssel an.", + "Updates": "Updates", + "Check for update": "Suche nach Updates", + "Add a widget": "Widget hinzufügen", + "Allow": "Erlauben", + "Changes colour scheme of current room": "Ändere Farbschema des aktuellen Raumes", + "Delete widget": "Widget entfernen", + "Define the power level of a user": "Setze das Berechtigungslevel eines Benutzers", + "Edit": "Bearbeiten", + "Enable automatic language detection for syntax highlighting": "Automatische Spracherkennung für die Syntax-Hervorhebung aktivieren", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Betreten-/Verlassen-Benachrichtigungen verbergen (gilt nicht für Einladungen/Kicks/Bans)", + "Revoke widget access": "Ziehe Widget-Zugriff zurück", + "Sets the room topic": "Setzt das Raum-Thema", + "To get started, please pick a username!": "Um zu starten, wähle bitte einen Nutzernamen!", + "Unable to create widget.": "Widget kann nicht erstellt werden.", + "Unbans user with given id": "Verbannung aufheben für Benutzer mit angegebener ID", + "You are not in this room.": "Du bist nicht in diesem Raum.", + "You do not have permission to do that in this room.": "Du hast dafür keine Berechtigung in diesem Raum.", + "Verifies a user, device, and pubkey tuple": "Verifiziert ein Tupel aus Benutzer, Gerät und öffentlichem Schlüssel", + "Autocomplete Delay (ms):": "Verzögerung bei Autovervollständigung (ms):", + "Loading device info...": "Lädt Geräte-Info...", + "Example": "Beispiel", + "Create": "Erstellen", + "Featured Rooms:": "Hervorgehobene Räume:", + "Featured Users:": "Hervorgehobene Benutzer:", + "Automatically replace plain text Emoji": "Klartext-Emoji automatisch ersetzen", + "Failed to upload image": "Bild-Hochladen fehlgeschlagen", + "Hide avatars in user and room mentions": "Profilbilder in Benutzer- und Raum-Erwähnungen verbergen", + "AM": "a. m.", + "PM": "p. m.", + "The maximum permitted number of widgets have already been added to this room.": "Die maximal erlaubte Anzahl an hinzufügbaren Widgets für diesen Raum wurde erreicht.", + "Cannot add any more widgets": "Kann keine weiteren Widgets hinzufügen", + "Do you want to load widget from URL:": "Möchtest du das Widget von folgender URL laden:", + "Integrations Error": "Integrations-Error", + "NOTE: Apps are not end-to-end encrypted": "BEACHTE: Apps sind nicht Ende-zu-Ende-verschlüsselt", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s hat das Widget %(widgetName)s hinzugefügt", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s hat das Widget %(widgetName)s entfernt", + "Robot check is currently unavailable on desktop - please use a web browser": "In der Desktop-Version kann derzeit nicht geprüft werden, ob ein Benutzer ein Roboter ist. Bitte einen Webbrowser verwenden", + "%(widgetName)s widget modified by %(senderName)s": "Das Widget '%(widgetName)s' wurde von %(senderName)s bearbeitet", + "Copied!": "Kopiert!", + "Failed to copy": "Kopieren fehlgeschlagen", + "Ignored Users": "Ignorierte Benutzer", + "Ignore": "Ignorieren", + "You are now ignoring %(userId)s": "%(userId)s wird jetzt ignoriert", + "You are no longer ignoring %(userId)s": "%(userId)s wird nicht mehr ignoriert", + "Message removed by %(userId)s": "Nachricht wurde von %(userId)s entfernt", + "Name or matrix ID": "Name oder Matrix-ID", + "Leave": "Verlassen", + "Failed to invite the following users to %(groupId)s:": "Die folgenden Benutzer konnten nicht in die Gruppe %(groupId)s eingeladen werden:", + "Leave %(groupName)s?": "%(groupName)s verlassen?", + "Add a Room": "Raum hinzufügen", + "Add a User": "Benutzer hinzufügen", + "Light theme": "Helles Thema", + "Dark theme": "Dunkles Thema", + "You have entered an invalid address.": "Du hast eine ungültige Adresse eingegeben.", + "Matrix ID": "Matrix-ID", + "Advanced options": "Erweiterte Optionen", + "Block users on other matrix homeservers from joining this room": "Benutzern auf anderen Matrix-Heimservern das Betreten dieses Raumes verbieten", + "This setting cannot be changed later!": "Diese Einstellung kann später nicht mehr geändert werden!", + "Unignore": "Ignorieren aufheben", + "User Options": "Benutzer-Optionen", + "Unignored user": "Benutzer nicht mehr ignoriert", + "Ignored user": "Benutzer ignoriert", + "Stops ignoring a user, showing their messages going forward": "Beendet das Ignorieren eines Benutzers, nachfolgende Nachrichten werden wieder angezeigt", + "Ignores a user, hiding their messages from you": "Ignoriert einen Benutzer und verbirgt dessen Nachrichten", + "Disable Emoji suggestions while typing": "Emoji-Vorschläge während des Schreibens deaktivieren", + "Banned by %(displayName)s": "Verbannt von %(displayName)s", + "To send messages, you must be a": "Notwendiges Berechtigungslevel, um Nachrichten zu senden:", + "To invite users into the room, you must be a": "Notwendiges Berechtigungslevel, um Benutzer in diesen Raum einladen zu können:", + "To configure the room, you must be a": "Notwendiges Berechtigungslevel, um diesen Raum zu konfigurieren:", + "To kick users, you must be a": "Notwendiges Berechtigungslevel, um Benutzer zu kicken:", + "To ban users, you must be a": "Notwendiges Berechtigungslevel, um Benutzer zu verbannen:", + "To remove other users' messages, you must be a": "Notwendiges Berechtigungslevel, um Nachrichten von anderen Benutzern zu löschen", + "To send events of type , you must be a": "Notwendiges Berechtigungslevel, um Ereignisse des Typs zu senden", + "To change the room's avatar, you must be a": "Notwendiges Berechtigungslevel, um das Raumbild zu ändern", + "To change the room's name, you must be a": "Notwendiges Berechtigungslevel, um den Raumnamen zu ändern", + "To change the room's main address, you must be a": "Notwendiges Berechtigungslevel, um die Hauptadresse des Raumes zu ändern", + "To change the room's history visibility, you must be a": "Notwendiges Berechtigungslevel, um die Sichtbarkeit des bisherigen Chatverlaufs zu ändern", + "To change the permissions in the room, you must be a": "Notwendiges Berechtigungslevel, um Berechtigungen in diesem Raum zu ändern", + "To change the topic, you must be a": "Notwendiges Berechtigungslevel, um das Thema zu ändern", + "To modify widgets in the room, you must be a": "Notwendiges Berechtigungslevel, um Widgets in diesem Raum zu ändern", + "Description": "Beschreibung", + "Unable to accept invite": "Einladung kann nicht angenommen werden", + "Failed to invite users to %(groupId)s": "Benutzer konnten nicht in %(groupId)s eingeladen werden", + "Unable to reject invite": "Einladung konnte nicht abgelehnt werden", + "Who would you like to add to this summary?": "Wen möchtest zu dieser Übersicht hinzufügen?", + "Add to summary": "Zur Übersicht hinzufügen", + "Failed to add the following users to the summary of %(groupId)s:": "Die folgenden Benutzer konnten nicht zur Übersicht von %(groupId)s hinzugefügt werden:", + "Which rooms would you like to add to this summary?": "Welche Räume möchtest du zu dieser Übersicht hinzufügen?", + "Room name or alias": "Raum-Name oder Alias", + "Failed to add the following rooms to the summary of %(groupId)s:": "Die folgenden Räume konnten nicht zur Übersicht von %(groupId)s hinzugefügt werden:", + "Failed to remove the room from the summary of %(groupId)s": "Der Raum konnte nicht aus der Übersicht von %(groupId)s entfernt werden", + "The room '%(roomName)s' could not be removed from the summary.": "Der Raum '%(roomName)s' konnte nicht aus der Übersicht entfernt werden.", + "Failed to remove a user from the summary of %(groupId)s": "Benutzer konnte nicht aus der Übersicht von %(groupId)s entfernt werden", + "The user '%(displayName)s' could not be removed from the summary.": "Der Benutzer '%(displayName)s' konnte nicht aus der Übersicht entfernt werden.", + "Unknown": "Unbekannt", + "Failed to add the following rooms to %(groupId)s:": "Die folgenden Räume konnten nicht zu %(groupId)s hinzugefügt werden:", + "Matrix Room ID": "Matrix-Raum-ID", + "email address": "E-Mail-Adresse", + "Try using one of the following valid address types: %(validTypesList)s.": "Bitte einen der folgenden gültigen Adresstypen verwenden: %(validTypesList)s.", + "Failed to remove '%(roomName)s' from %(groupId)s": "Entfernen von '%(roomName)s' aus %(groupId)s fehlgeschlagen", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Bist du sicher, dass du '%(roomName)s' aus '%(groupId)s' entfernen möchtest?", + "Remove avatar": "Profilbild entfernen", + "Disable big emoji in chat": "Große Emojis im Chat deaktiveren", + "Pinned Messages": "Angeheftete Nachrichten", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s hat die angehefteten Nachrichten für diesen Raum geändert.", + "Jump to read receipt": "Zur Lesebestätigung springen", + "Message Pinning": "Anheften von Nachrichten", + "Long Description (HTML)": "Lange Beschreibung (HTML)", + "Jump to message": "Zur Nachricht springen", + "No pinned messages.": "Keine angehefteten Nachrichten vorhanden.", + "Loading...": "Lädt...", + "Unpin Message": "Nachricht nicht mehr anheften", + "Unnamed room": "Unbenannter Raum", + "World readable": "Für alle lesbar", + "Guests can join": "Gäste können beitreten", + "No rooms to show": "Keine anzeigbaren Räume", + "Community Settings": "Community-Einstellungen", + "Who would you like to add to this community?": "Wen möchtest du zu dieser Community hinzufügen?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warnung: Jede Person, die du einer Community hinzufügst, wird für alle, die die Community-ID kennen, öffentlich sichtbar sein", + "Invite new community members": "Neue Community-Mitglieder einladen", + "Invite to Community": "In die Community einladen", + "Which rooms would you like to add to this community?": "Welche Räume möchtest du zu dieser Community hinzufügen?", + "Add rooms to the community": "Räume zur Community hinzufügen", + "Add to community": "Zur Community hinzufügen", + "Failed to invite users to community": "Benutzer konnten nicht in die Community eingeladen werden", + "Communities": "Communities", + "Invalid community ID": "Ungültige Community-ID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' ist keine gültige Community-ID", + "New community ID (e.g. +foo:%(localDomain)s)": "Neue Community-ID (z. B. +foo:%(localDomain)s)", + "Remove from community": "Aus Community entfernen", + "Failed to remove user from community": "Entfernen des Benutzers aus der Community fehlgeschlagen", + "Filter community members": "Community-Mitglieder filtern", + "Filter community rooms": "Community-Räume filtern", + "Failed to remove room from community": "Entfernen des Raumes aus der Community fehlgeschlagen", + "Removing a room from the community will also remove it from the community page.": "Das Entfernen eines Raumes aus der Community wird ihn auch von der Community-Seite entfernen.", + "Create Community": "Community erstellen", + "Community Name": "Community-Name", + "Community ID": "Community-ID", + "example": "Beispiel", + "Add rooms to the community summary": "Fügt Räume zur Community-Übersicht hinzu", + "Add users to the community summary": "Füge Benutzer zur Community-Übersicht hinzu", + "Failed to update community": "Aktualisieren der Community fehlgeschlagen", + "Leave Community": "Community verlassen", + "Add rooms to this community": "Räume zu dieser Community hinzufügen", + "%(inviter)s has invited you to join this community": "%(inviter)s hat dich in diese Community eingeladen", + "You are a member of this community": "Du bist ein Mitglied dieser Community", + "You are an administrator of this community": "Du bist ein Administrator dieser Community", + "Community %(groupId)s not found": "Community '%(groupId)s' nicht gefunden", + "This Home server does not support communities": "Dieser Heimserver unterstützt keine Communities", + "Failed to load %(groupId)s": "'%(groupId)s' konnte nicht geladen werden", + "Error whilst fetching joined communities": "Fehler beim Laden beigetretener Communities", + "Create a new community": "Neue Community erstellen", + "Your Communities": "Deine Communities", + "You're not currently a member of any communities.": "Du gehörst aktuell keiner Community an.", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Erstelle eine Community, um Benutzer und Räume miteinander zu verbinden! Erstelle zusätzlich eine eigene Homepage, um deinen individuellen Bereich im Matrix-Universum zu gestalten.", + "Something went wrong whilst creating your community": "Beim Erstellen deiner Community ist ein Fehler aufgetreten", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s und %(count)s weitere schreiben", + "one": "%(names)s und noch jemand schreiben" + }, + "And %(count)s more...": { + "other": "Und %(count)s weitere..." + }, + "Delete Widget": "Widget löschen", + "Message removed": "Nachricht entfernt", + "Mention": "Erwähnen", + "Invite": "Einladen", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Das Löschen eines Widgets entfernt das Widget für alle Benutzer in diesem Raum. Möchtest du dieses Widget wirklich löschen?", + "Mirror local video feed": "Lokalen Video-Feed spiegeln", + "Failed to withdraw invitation": "Die Einladung konnte nicht zurückgezogen werden", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community-IDs dürfen nur die folgenden Zeichen enthalten: a-z, 0-9, or '=_-./'", + "%(senderName)s sent an image": "%(senderName)s hat ein Bild gesendet", + "%(senderName)s sent a video": "%(senderName)s hat ein Video gesendet", + "%(senderName)s uploaded a file": "%(senderName)s hat eine Datei hochgeladen", + "You have been banned from this room by %(userName)s.": "%(userName)s hat dich aus diesem Raum verbannt.", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)shaben den Raum %(count)s-mal betreten", + "one": "%(severalUsers)shaben den Raum betreten" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)shat den Raum %(count)s-mal betreten", + "one": "%(oneUser)shat den Raum betreten" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)shaben den Raum %(count)s-mal verlassen", + "one": "%(severalUsers)shaben den Raum verlassen" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)shat den Raum %(count)s-mal verlassen", + "one": "%(oneUser)shat den Raum verlassen" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)shaben %(count)s-mal den Raum betreten und verlassen", + "one": "%(severalUsers)shaben den Raum betreten und wieder verlassen" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)shat den Raum %(count)s-mal betreten und wieder verlassen", + "one": "%(oneUser)shat den Raum betreten und wieder verlassen" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)shaben den Raum %(count)s-mal verlassen und wieder betreten", + "one": "%(severalUsers)shaben den Raum verlassen und wieder betreten" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)shat den Raum %(count)s-mal verlassen und wieder betreten", + "one": "%(oneUser)shat den Raum verlassen und wieder betreten" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "one": "%(severalUsers)shaben ihre Einladungen abgelehnt", + "other": "%(severalUsers)shaben ihre Einladungen %(count)s-mal abgelehnt" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)swurde die Einladung %(count)s-mal wieder entzogen", + "one": "%(severalUsers)swurde die Einladung wieder entzogen" + }, + "were invited %(count)s times": { + "other": "wurden %(count)s-mal eingeladen", + "one": "wurden eingeladen" + }, + "was invited %(count)s times": { + "other": "wurde %(count)s-mal eingeladen", + "one": "wurde eingeladen" + }, + "were banned %(count)s times": { + "other": "wurden %(count)s-mal verbannt", + "one": "wurden verbannt" + }, + "was banned %(count)s times": { + "other": "wurde %(count)s-mal verbannt", + "one": "wurde verbannt" + }, + "were kicked %(count)s times": { + "other": "wurden %(count)s-mal gekickt", + "one": "wurden gekickt" + }, + "was kicked %(count)s times": { + "other": "wurde %(count)s-mal gekickt", + "one": "wurde gekickt" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)shaben %(count)s-mal ihren Namen geändert", + "one": "%(severalUsers)shaben ihren Namen geändert" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)shat %(count)s-mal den Namen geändert", + "one": "%(oneUser)shat den Namen geändert" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)shaben das Profilbild %(count)s-mal geändert", + "one": "%(severalUsers)shaben das Profilbild geändert" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)shat das Profilbild %(count)s-mal geändert", + "one": "%(oneUser)shat das Profilbild geändert" + }, + "Disinvite this user?": "Einladung für diesen Benutzer zurückziehen?", + "Kick this user?": "Diesen Benutzer kicken?", + "Unban this user?": "Verbannung für diesen Benutzer aufheben?", + "Ban this user?": "Diesen Benutzer verbannen?", + "Drop here to favourite": "Hierher ziehen, um als Favorit zu markieren", + "Drop here to tag direct chat": "Hierher ziehen, um als Direkt-Chat zu markieren", + "Drop here to restore": "Hierher ziehen, um wiederherzustellen", + "Drop here to demote": "Hierher ziehen, um herabzustufen", + "You have been kicked from this room by %(userName)s.": "%(userName)s hat dich aus diesem Raum gekickt.", + "You are trying to access a room.": "Du versuchst, auf einen Raum zuzugreifen.", + "Members only (since the point in time of selecting this option)": "Nur Mitglieder (ab dem Zeitpunkt, an dem diese Option ausgewählt wird)", + "Members only (since they were invited)": "Nur Mitglieder (ab dem Zeitpunkt, an dem sie eingeladen wurden)", + "Members only (since they joined)": "Nur Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind)", + "An email has been sent to %(emailAddress)s": "Eine E-Mail wurde an %(emailAddress)s gesendet", + "A text message has been sent to %(msisdn)s": "Eine Textnachricht wurde an %(msisdn)s gesendet", + "Disinvite this user from community?": "Community-Einladung für diesen Benutzer zurückziehen?", + "Remove this user from community?": "Diesen Benutzer aus der Community entfernen?", + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)shat die Einladung %(count)s-mal abgelehnt", + "one": "%(oneUser)shat die Einladung abgelehnt" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)swurde die Einladung %(count)s-mal wieder entzogen", + "one": "%(oneUser)swurde die Einladung wieder entzogen" + }, + "were unbanned %(count)s times": { + "other": "wurden %(count)s-mal entbannt", + "one": "wurden entbannt" + }, + "was unbanned %(count)s times": { + "other": "wurde %(count)s-mal entbannt", + "one": "wurde entbannt" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s und %(count)s andere", + "one": "%(items)s und noch jemand" + }, + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Eine E-Mail wurde an %(emailAddress)s gesendet. Folge dem in der E-Mail enthaltenen Link und klicke dann unten.", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Die Sichtbarkeit von '%(roomName)s' in %(groupId)s konnte nicht aktualisiert werden.", + "Visibility in Room List": "Sichtbarkeit in Raum-Liste", + "Visible to everyone": "Für alle sichtbar", + "Only visible to community members": "Nur für Community-Mitglieder sichtbar", + "Community Invites": "Community-Einladungen", + "Notify the whole room": "Alle im Raum benachrichtigen", + "Room Notification": "Raum-Benachrichtigung", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Diese Räume werden Community-Mitgliedern auf der Community-Seite angezeigt. Community-Mitglieder können diesen Räumen beitreten, indem sie diese anklicken.", + "Show these rooms to non-members on the community page and room list?": "Sollen diese Räume Nicht-Mitgliedern auf der Community-Seite und in der Raum-Liste angezeigt werden?", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML für deine Community-Seite

\n

\n Nutze die ausführliche Beschreibung, um neuen Mitgliedern diese Community vorzustellen\n oder um wichtige Links bereitzustellen.\n

\n

\n Du kannst sogar 'img'-Tags (HTML) verwenden\n

\n", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Deine Community hat noch keine ausführliche Beschreibung, d. h. eine HTML-Seite, die Community-Mitgliedern angezeigt wird.
Hier klicken, um die Einstellungen zu öffnen und eine Beschreibung zu erstellen!", + "Custom of %(powerLevel)s": "benutzerdefiniert mit Wert %(powerLevel)s", + "Username on %(hs)s": "Benutzername auf %(hs)s", + "Hide avatar changes": "Profilbild-Änderungen verbergen", + "Hide display name changes": "Anzeigenamen-Änderungen verbergen", + "Enable inline URL previews by default": "URL-Vorschau standardmäßig aktivieren", + "Enable URL previews for this room (only affects you)": "URL-Vorschau für diesen Raum aktivieren (betrifft nur dich)", + "Enable URL previews by default for participants in this room": "URL-Vorschau standardmäßig für Mitglieder dieses Raumes aktivieren", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Hinweis: Du meldest dich auf dem %(hs)s-Server an, nicht auf matrix.org.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Sonst ist hier aktuell niemand. Möchtest du Benutzer einladen oder die Warnmeldung bezüglich des leeren Raums deaktivieren?", + "Sign in to get started": "Melde dich an, um loszulegen", + "URL previews are disabled by default for participants in this room.": "URL-Vorschau ist für Mitglieder dieses Raumes standardmäßig deaktiviert.", + "URL previews are enabled by default for participants in this room.": "URL-Vorschau ist für Mitglieder dieses Raumes standardmäßig aktiviert.", + "Restricted": "Eingeschränkt", + "Status.im theme": "Status.im-Thema", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "Online seit %(duration)s", + "Idle for %(duration)s": "Untätig seit %(duration)s", + "Offline for %(duration)s": "Offline seit %(duration)s", + "Unknown for %(duration)s": "Unbekannt seit %(duration)s", + "Flair": "Abzeichen", + "Showing flair for these communities:": "Abzeichen für diese Communities zeigen:", + "This room is not showing flair for any communities": "Dieser Raum zeigt für keine Communities die Abzeichen an", + "Delete %(count)s devices": { + "other": "Lösche %(count)s Geräte", + "one": "Lösche Gerät" + }, + "Select devices": "Wähle Geräte", + "Flair will appear if enabled in room settings": "Abzeichen wird angezeigt, falls es in den Raumeinstellungen aktiviert wurde", + "Flair will not appear": "Abzeichen wird nicht angezeigt", + "Something went wrong when trying to get your communities.": "Beim Laden deiner Communites ist etwas schief gelaufen.", + "Display your community flair in rooms configured to show it.": "Zeige deinen Community-Flair in den Räumen, die es erlauben.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Dieser Heimserver verfügt über keinen, von diesem Client unterstütztes Anmeldeverfahren.", + "Call Failed": "Anruf fehlgeschlagen", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "In diesem Raum befinden sich nicht-verifizierte Geräte. Wenn du fortfährst ohne sie zu verifizieren, könnten Angreifer den Anruf mithören.", + "Review Devices": "Geräte ansehen", + "Call Anyway": "Trotzdem anrufen", + "Answer Anyway": "Trotzdem annehmen", + "Call": "Anrufen", + "Answer": "Annehmen", + "Send": "Senden", + "Addresses": "Adressen", + "collapse": "Verbergen", + "expand": "Erweitern", + "Old cryptography data detected": "Alte Kryptografiedaten erkannt", + "Warning": "Warnung", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Es wurden Daten von einer älteren Version von Riot entdeckt. Dies wird zu Fehlern in der Ende-zu-Ende-Verschlüsselung der älteren Version geführt haben. Ende-zu-Ende verschlüsselte Nachrichten, die ausgetauscht wruden, während die ältere Version genutzt wurde, werden in dieser Version nicht entschlüsselbar sein. Es kann auch zu Fehlern mit Nachrichten führen, die mit dieser Version versendet werden. Wenn du Probleme feststellst, melde dich ab und wieder an. Um die Historie zu behalten, ex- und reimportiere deine Schlüssel.", + "Send an encrypted reply…": "Verschlüsselte Antwort senden…", + "Send a reply (unencrypted)…": "Unverschlüsselte Antwort senden…", + "Send an encrypted message…": "Verschlüsselte Nachricht senden…", + "Send a message (unencrypted)…": "Unverschlüsselte Nachricht senden…", + "Replying": "Antwortet", + "Minimize apps": "Apps minimieren", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Alle erneut senden oder alle abbrechen. Du kannst auch einzelne Nachrichten erneut senden oder abbrechen.", + "one": "Nachricht jetzt erneut senden oder senden abbrechen now." + }, + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privatsphäre ist uns wichtig, deshalb sammeln wir keine persönlichen oder identifizierbaren Daten für unsere Analysen.", + "The information being sent to us to help make Riot.im better includes:": "Die Informationen, die an uns gesendet werden um Riot.im zu verbessern enthalten:", + "The platform you're on": "Benutzte Plattform", + "The version of Riot.im": "Riot.im Version", + "Your language of choice": "Deine ausgewählte Sprache", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Ob du den Richtext-Modus des Editors benutzt oder nicht", + "Your homeserver's URL": "Die URL deines Homeservers", + "Your identity server's URL": "Die URL deines Identitätsservers", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du wirst nicht in der Lage sein, die Änderung zurückzusetzen, da du dich degradierst. Wenn du der letze Nutzer mit Berechtigungen bist, wird es unmöglich sein die Privilegien zurückzubekommen.", + "Community IDs cannot be empty.": "Community-IDs können nicht leer sein.", + "Show devices, send anyway or cancel.": "Geräte anzeigen, trotzdem senden oder abbrechen.", + "Learn more about how we use analytics.": "Lerne mehr darüber, wie wir die Analysedaten nutzen.", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Wenn diese Seite identifizierbare Informationen wie Raum, Nutzer oder Gruppen-ID enthalten, werden diese Daten entfernt bevor sie an den Server gesendet werden.", + "Whether or not you're logged in (we don't record your user name)": "Ob oder ob du nicht angemeldet bist (wir zeichnen deinen Benutzernamen nicht auf)", + "Which officially provided instance you are using, if any": "Welche offiziell angebotene Instanz du nutzt, wenn es der Fall ist", + "In reply to ": "Als Antwort auf ", + "This room is not public. You will not be able to rejoin without an invite.": "Dies ist kein öffentlicher Raum. Du wirst diesen nicht ohne Einladung wieder beitreten können.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s änderte den Anzeigenamen auf %(displayName)s.", + "Failed to set direct chat tag": "Fehler beim Setzen der Direkt-Chat-Markierung", + "Failed to remove tag %(tagName)s from room": "Fehler beim Entfernen des \"%(tagName)s\"-Tags von dem Raum", + "Failed to add tag %(tagName)s to room": "Fehler beim Hinzufügen des \"%(tagName)s\"-Tags an dem Raum", + "Did you know: you can use communities to filter your Riot.im experience!": "Wusstest du: Du kannst Communities nutzen um deine Riot.im-Erfahrung zu filtern!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Um einen Filter zu setzen, siehe einen Community-Bild auf das Filter-Panel ganz links. Du kannst jederzeit auf einen Avatar im Filter-Panel klicken um nur die Räume und Personen aus der Community zu sehen.", + "Clear filter": "Filter zurücksetzen", + "Disable Community Filter Panel": "Deaktiviere Community-Filter-Panel", + "Your key share request has been sent - please check your other devices for key share requests.": "Deine Schlüssel-Teil-Anfragen wurden gesendet. Bitte prüfe deine anderen Geräte auf die Schlüssel-Teil-Anfragen.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Schlüssel-Anfragen wurden automatisch zu den anderen Geräten gesendet. Wenn du diese Anfragen auf deinen anderen Geräten abgelehnt oder verpasst hast, klicke hier um die Schlüssel für diese Sitzung erneut anzufragen.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Wenn deine anderen Geräte keine Schlüssel für diese Nachricht haben, wirst du diese nicht entschlüsseln können.", + "Key request sent.": "Schlüssel-Anfragen gesendet.", + "Re-request encryption keys from your other devices.": "Verschlüsselungs-Schlüssel von deinen anderen Geräten erneut anfragen.", + "%(user)s is a %(userRole)s": "%(user)s ist ein %(userRole)s", + "Debug Logs Submission": "Einsenden des Fehlerprotokolls", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Wenn du einen Fehler via GitHub gemeldet hast, können Fehlerberichte uns helfen um das Problem zu finden. Sie enthalten Anwendungsdaten wie deinen Nutzernamen, Raum- und Gruppen-ID's und Aliase die du besucht hast und Nutzernamen anderer Nutzer. Sie enthalten keine Nachrichten.", + "Submit debug logs": "Fehlerberichte einreichen", + "Code": "Code", + "Opens the Developer Tools dialog": "Öffnet den Entwicklerwerkzeugkasten", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Von %(displayName)s (%(userName)s) um %(dateTime)s gesehen", + "Unable to join community": "Community konnte nicht betreten werden", + "Unable to leave community": "Community konnte nicht verlassen werden", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Änderungen am Namen und Bild deiner Community werden evtl. erst nach 30 Minuten von anderen Nutzern gesehen werden.", + "Join this community": "Community beitreten", + "Leave this community": "Community verlassen", + "You don't currently have any stickerpacks enabled": "Du hast aktuell keine Stickerpacks aktiviert", + "Add a stickerpack": "Füge ein Stickerpack hinzu", + "Hide Stickers": "Sticker verbergen", + "Show Stickers": "Sticker zeigen", + "Who can join this community?": "Wer kann dieser Community beitreten?", + "Everyone": "Jeder", + "Stickerpack": "Stickerpack", + "Fetching third party location failed": "Das Abrufen des Drittanbieterstandorts ist fehlgeschlagen", + "A new version of Riot is available.": "Eine neue Version von Riot ist verfügbar.", + "Couldn't load home page": "Startseite konnte nicht geladen werden", + "Send Account Data": "Benutzerkonto-Daten senden", + "All notifications are currently disabled for all targets.": "Aktuell sind alle Benachrichtigungen für alle Ziele deaktiviert.", + "Uploading report": "Lade Bericht hoch", + "Sunday": "Sonntag", + "Notification targets": "Benachrichtigungsziele", + "Today": "Heute", + "Files": "Dateien", + "You are not receiving desktop notifications": "Du erhältst keine Desktop-Benachrichtigungen", + "Friday": "Freitag", + "Update": "Aktualisieren", + "What's New": "Was ist neu", + "Add an email address above to configure email notifications": "Füge oben eine E-Mail-Adresse hinzu, um die E-Mail-Benachrichtigungseinstellungen zu konfigurieren", + "Expand panel": "Panel ausklappen", + "On": "An", + "%(count)s Members": { + "other": "%(count)s Mitglieder", + "one": "%(count)s Mitglied" + }, + "Filter room names": "Raum-Namen filtern", + "Changelog": "Änderungsprotokoll", + "Waiting for response from server": "Auf Antwort vom Server warten", + "Send Custom Event": "Benutzerdefiniertes Event senden", + "Advanced notification settings": "Erweiterte Benachrichtigungs-Einstellungen", + "Failed to send logs: ": "Senden von Logs fehlgeschlagen: ", + "delete the alias.": "Lösche den Alias.", + "To return to your account in future you need to set a password": "Um in Zukunft auf dein Benutzerkonto zugreifen zu können, musst du ein Passwort setzen", + "Forget": "Entfernen", + "#example": "#Beispiel", + "Hide panel": "Panel verbergen", + "You cannot delete this image. (%(code)s)": "Das Bild kann nicht gelöscht werden. (%(code)s)", + "Cancel Sending": "Senden abbrechen", + "This Room": "In diesem Raum", + "The Home Server may be too old to support third party networks": "Der Home-Server ist eventuell zu alt, um Drittanbieter-Netzwerke zu unterstützen", + "Resend": "Erneut senden", + "Room not found": "Raum nicht gefunden", + "Messages containing my display name": "Nachrichten, die meinen Anzeigenamen enthalten", + "Messages in one-to-one chats": "Nachrichten in Einzel-Chats", + "Unavailable": "Nicht verfügbar", + "View Decrypted Source": "Entschlüsselten Quellcode ansehen", + "Failed to update keywords": "Schlüsselwörter konnten nicht aktualisiert werden", + "Notes:": "Notizen:", + "remove %(name)s from the directory.": "entferne %(name)s aus dem Verzeichnis.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Die Benachrichtigungen zu den folgenden Schlüsselwörtern folgen Regeln, die hier nicht angezeigt werden können:", + "Safari and Opera work too.": "Safari und Opera sind weitere Alternativen.", + "Please set a password!": "Bitte setze ein Passwort!", + "You have successfully set a password!": "Du hast erfolgreich ein Passwort gesetzt!", + "An error occurred whilst saving your email notification preferences.": "Beim Speichern deiner E-Mail-Benachrichtigungseinstellungen ist ein Fehler aufgetreten.", + "Explore Room State": "Raum-Status erkunden", + "Source URL": "Quell-URL", + "Messages sent by bot": "Nachrichten von Bots", + "Filter results": "Ergebnisse filtern", + "Members": "Mitglieder", + "No update available.": "Kein Update verfügbar.", + "Noisy": "Laut", + "Failed to get protocol list from Home Server": "Fehler beim Abrufen der Protokoll-Liste vom Home-Server", + "Collecting app version information": "App-Versionsinformationen werden abgerufen", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Soll der Raum-Alias %(alias)s gelöscht und der %(name)s aus dem Verzeichnis entfernt werden?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Dies erlaubt dir, dich wieder an deinem Konto anzumelden, nachdem du dich abgemeldet hast.", + "Keywords": "Schlüsselwörter", + "Enable notifications for this account": "Benachrichtigungen für dieses Benutzerkonto aktivieren", + "Directory": "Raum-Verzeichnis", + "Invite to this community": "In diese Community einladen", + "Failed to get public room list": "Die Liste der öffentlichen Räume konnte nicht geladen werden", + "Messages containing keywords": "Nachrichten, die Schlüsselwörter enthalten", + "Error saving email notification preferences": "Fehler beim Speichern der E-Mail-Benachrichtigungseinstellungen", + "Tuesday": "Dienstag", + "Enter keywords separated by a comma:": "Schlüsselwörter kommagetrennt eingeben:", + "Forward Message": "Nachricht weiterleiten", + "You have successfully set a password and an email address!": "Du hast erfolgreich ein Passwort und eine E-Mail-Adresse gesetzt!", + "Remove %(name)s from the directory?": "Soll der Raum %(name)s aus dem Verzeichnis entfernt werden?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot nutzt zahlreiche fortgeschrittene Browser-Funktionen, die teilweise in deinem aktuell verwendeten Browser noch nicht verfügbar sind oder sich noch im experimentellen Status befinden.", + "Developer Tools": "Entwicklerwerkzeuge", + "Preparing to send logs": "Senden von Logs wird vorbereitet", + "Enable desktop notifications": "Desktop-Benachrichtigungen aktivieren", + "Remember, you can always set an email address in user settings if you change your mind.": "Vergiss nicht, dass du in den Benutzereinstellungen jederzeit eine E-Mail-Adresse setzen kannst, wenn du deine Meinung änderst.", + "Explore Account Data": "Benutzerkonto-Daten analysieren", + "All messages (noisy)": "Alle Nachrichten (laut)", + "Saturday": "Samstag", + "I understand the risks and wish to continue": "Ich verstehe das Risiko und möchte fortfahren", + "Direct Chat": "Direkt-Chat", + "The server may be unavailable or overloaded": "Der Server ist vermutlich nicht erreichbar oder überlastet", + "Reject": "Ablehnen", + "Failed to set Direct Message status of room": "Konnte den direkten Benachrichtigungsstatus nicht setzen", + "Monday": "Montag", + "Remove from Directory": "Aus dem Raum-Verzeichnis entfernen", + "Enable them now": "Aktiviere diese jetzt", + "Messages containing my user name": "Nachrichten, die meinen Benutzernamen enthalten", + "Toolbox": "Werkzeugkasten", + "Collecting logs": "Protokolle werden abgerufen", + "more": "mehr", + "GitHub issue link:": "Link des GitHub-Problems:", + "You must specify an event type!": "Du musst einen Event-Typ spezifizieren!", + "(HTTP status %(httpStatus)s)": "(HTTP-Status %(httpStatus)s)", + "Invite to this room": "In diesen Raum einladen", + "Please install Chrome or Firefox for the best experience.": "Bitte installiere Chrome oder Firefox für ein optimales Anwendungsergebnis.", + "Wednesday": "Mittwoch", + "You cannot delete this message. (%(code)s)": "Diese Nachricht kann nicht gelöscht werden. (%(code)s)", + "Quote": "Zitat", + "Send logs": "Logdateien übermitteln", + "All messages": "Alle Nachrichten", + "Call invitation": "Anruf-Einladung", + "Downloading update...": "Update wird heruntergeladen...", + "State Key": "Status-Schlüssel", + "Failed to send custom event.": "Senden des benutzerdefinierten Events fehlgeschlagen.", + "What's new?": "Was ist neu?", + "Notify me for anything else": "Über alles andere benachrichtigen", + "When I'm invited to a room": "Wenn ich in einen Raum eingeladen werde", + "Can't update user notification settings": "Benachrichtigungs-Einstellungen des Benutzers konnten nicht aktualisiert werden", + "Notify for all other messages/rooms": "Benachrichtigungen für alle anderen Mitteilungen/Räume aktivieren", + "Unable to look up room ID from server": "Es ist nicht möglich, die Raum-ID auf dem Server nachzuschlagen", + "Couldn't find a matching Matrix room": "Konnte keinen entsprechenden Matrix-Raum finden", + "All Rooms": "In allen Räumen", + "Search for a room": "Nach einem Raum suchen", + "Thursday": "Donnerstag", + "Search…": "Suchen…", + "Logs sent": "Logs gesendet", + "Back": "Zurück", + "Reply": "Antworten", + "Show message in desktop notification": "Nachricht in der Desktop-Benachrichtigung anzeigen", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Fehlerberichte enthalten Anwendungsdaten wie deinen Nutzernamen, Raum- und Gruppen-ID's und Aliase die du besucht hast sowie Nutzernamen anderer Nutzer. Sie enthalten keine Nachrichten.", + "Unhide Preview": "Vorschau wieder anzeigen", + "Unable to join network": "Es ist nicht möglich, dem Netzwerk beizutreten", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du hast sie eventuell auf einem anderen Matrix-Client und nicht in Riot konfiguriert. Sie können in Riot nicht verändert werden, gelten aber trotzdem", + "Sorry, your browser is not able to run Riot.": "Es tut uns leid, aber dein Browser kann Riot nicht ausführen.", + "Messages in group chats": "Nachrichten in Gruppen-Chats", + "Yesterday": "Gestern", + "Error encountered (%(errorDetail)s).": "Es ist ein Fehler aufgetreten (%(errorDetail)s).", + "Login": "Anmeldung", + "Low Priority": "Niedrige Priorität", + "Unable to fetch notification target list": "Liste der Benachrichtigungsempfänger konnte nicht abgerufen werden", + "Set Password": "Passwort einrichten", + "Enable audible notifications in web client": "Audio-Benachrichtigungen im Web-Client aktivieren", + "Off": "Aus", + "Riot does not know how to join a room on this network": "Riot weiß nicht, wie es einem Raum auf diesem Netzwerk beitreten soll", + "Mentions only": "Nur, wenn du erwähnt wirst", + "You can now return to your account after signing out, and sign in on other devices.": "Du kannst nun zu deinem Benutzerkonto zurückkehren, nachdem du dich abgemeldet hast. Anschließend kannst du dich an anderen Geräten anmelden.", + "Enable email notifications": "E-Mail-Benachrichtigungen aktivieren", + "Event Type": "Event-Typ", + "Download this file": "Datei herunterladen", + "Pin Message": "Nachricht anheften", + "Failed to change settings": "Einstellungen konnten nicht geändert werden", + "View Community": "Community ansehen", + "Event sent!": "Event gesendet!", + "View Source": "Quellcode ansehen", + "Event Content": "Event-Inhalt", + "Thank you!": "Danke!", + "Uploaded on %(date)s by %(user)s": "Hochgeladen: %(date)s von %(user)s", + "Collapse panel": "Panel einklappen", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "In deinem aktuell verwendeten Browser können Aussehen und Handhabung der Anwendung unter Umständen noch komplett fehlerhaft sein, so dass einige bzw. im Extremfall alle Funktionen nicht zur Verfügung stehen. Du kannst es trotzdem versuchen und fortfahren, bist dabei aber bezüglich aller auftretenden Probleme auf dich allein gestellt!", + "Checking for an update...": "Nach Updates suchen...", + "There are advanced notifications which are not shown here": "Es existieren erweiterte Benachrichtigungen, welche hier nicht angezeigt werden", + "Missing roomId.": "Fehlende Raum-ID.", + "Picture": "Bild", + "Every page you use in the app": "Jede Seite, die du in der App benutzt", + "e.g. ": "z.B. ", + "Your User Agent": "Deine Browser-Kennung", + "Your device resolution": "Deine Bildschirmauflösung", + "Popout widget": "Widget ausklinken", + "Always show encryption icons": "Immer Verschlüsselungssymbole zeigen", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Aktuell ist es nicht möglich mit einer Datei zu antworten, sodass diese gesendet wird ohne eine Antwort zu sein.", + "Unable to reply": "Antworten nicht möglich", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Das Ereignis auf das geantwortet wurde konnte nicht geladen werden. Entweder es existiert nicht oder du hast keine Berechtigung, dieses anzusehen.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-Fehler werden auf GitHub festgehalten: Erzeuge ein GitHub-Issue.", + "Log out and remove encryption keys?": "Abmelden und alle Verschlüsselungs-Schlüssel löschen?", + "Send Logs": "Sende Protokoll", + "Clear Storage and Sign Out": "Speicher leeren und abmelden", + "Refresh": "Neu laden", + "We encountered an error trying to restore your previous session.": "Wir haben ein Problem beim Wiederherstellen deiner vorherigen Sitzung festgestellt.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Den Browser-Speicher zu löschen kann das Problem lösen, wird dich aber abmelden und verschlüsselte Chats unlesbar machen.", + "Collapse Reply Thread": "Antwort-Thread zusammenklappen", + "At this time it is not possible to reply with an emote.": "An dieser Stelle ist es nicht möglich mit einer Umschreibung zu antworten.", + "Enable widget screenshots on supported widgets": "Widget-Screenshots bei unterstützten Widgets aktivieren", + "Send analytics data": "Analysedaten senden", + "e.g. %(exampleValue)s": "z.B. %(exampleValue)s", + "Reload widget": "Widget neu laden", + "To notify everyone in the room, you must be a": "Notwendiges Berechtigungslevel, um jeden im Raum zu benachrichten:", + "Muted Users": "Stummgeschaltete Benutzer", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Bitte hilf uns Riot.im zu verbessern, in dem du anonyme Nutzungsdaten schickst. Dies wird ein Cookie benutzen (bitte beachte auch unsere Cookie-Richtlinie).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Bitte hilf uns Riot.im zu verbessern, in dem du anonyme Nutzungsdaten schickst. Dies wird ein Cookie benutzen.", + "Yes, I want to help!": "Ja, ich möchte helfen!", + "Warning: This widget might use cookies.": "Warnung: Diese Widget mag Cookies verwenden.", + "Failed to indicate account erasure": "Fehler beim Signalisieren der Account-Löschung", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dies wird deinen Account permanent unbenutzbar machen. Du wirst nicht in der Lage sein, dich anzumelden und keiner wird dieselbe Benutzer-ID erneut registrieren können. Alle Räume, in denen der Account ist, werden verlassen und deine Account-Daten werden vom Identitätsserver gelöscht. Diese Aktion ist irreversibel!", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Standardmäßig werden die von dir gesendeten Nachrichten beim Deaktiveren nicht gelöscht. Wenn du dies von uns möchtest, aktivere das Auswalfeld unten.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Sie Sichtbarkeit der Nachrichten in Matrix ist vergleichbar mit E-Mails: Wenn wir deine Nachrichten vergessen heißt das, dass diese nicht mit neuen oder nicht registrierten Nutzern teilen werden, aber registrierte Nutzer, die bereits zugriff haben, werden Zugriff auf ihre Kopie behalten.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Bitte vergesst alle Nachrichten, die ich gesendet habe, wenn mein Account deaktiviert wird. (Warnung: Zukünftige Nutzer werden eine unvollständige Konversation sehen)", + "To continue, please enter your password:": "Um fortzufahren, bitte Password eingeben:", + "password": "Passwort", + "Can't leave Server Notices room": "Du kannst den Raum für Server-Notizen nicht verlassen", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Du kannst diesen Raum nicht verlassen, da dieser Raum für wichtige Nachrichten vom Heimserver verwendet wird.", + "Terms and Conditions": "Geschäftsbedingungen", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Um den %(homeserverDomain)s -Heimserver weiter zu verwenden, musst du die Geschäftsbedingungen sichten und ihnen zustimmen.", + "Review terms and conditions": "Geschäftsbedingungen anzeigen", + "Encrypting": "Verschlüssele", + "Encrypted, not sent": "Verschlüsselt, nicht gesendet", + "Share Link to User": "Sende Link an Benutzer", + "Share room": "Teile Raum", + "Share Room": "Teile Raum", + "Link to most recent message": "Link zur aktuellsten Nachricht", + "Share User": "Teile Benutzer", + "Share Community": "Teile Community", + "Share Room Message": "Teile Raumnachricht", + "Link to selected message": "Link zur ausgewählten Nachricht", + "COPY": "KOPIEREN", + "Share Message": "Teile Nachricht", + "No Audio Outputs detected": "Keine Ton-Ausgabe erkannt", + "Audio Output": "Ton-Ausgabe", + "Try the app first": "App erst ausprobieren", + "Jitsi Conference Calling": "Jitsi-Konferenz Anruf", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "In verschlüsselten Räumen, wie diesem, ist die Link-Vorschau standardmäßig deaktiviert damit dein Heimserver (auf dem die Vorschau erzeugt wird) keine Informationen über Links in diesem Raum bekommt.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Wenn jemand eine Nachricht mit einem Link schickt, kann die Link-Vorschau mehr Informationen, wie Titel, Beschreibung und Bild der Webseite, über den Link anzeigen.", + "The email field must not be blank.": "Das E-Mail-Feld darf nicht leer sein.", + "The user name field must not be blank.": "Das Benutzername-Feld darf nicht leer sein.", + "The phone number field must not be blank.": "Das Telefonnummern-Feld darf nicht leer sein.", + "The password field must not be blank.": "Das Passwort-Feld darf nicht leer sein.", + "Call in Progress": "Gespräch läuft", + "A call is already in progress!": "Ein Gespräch läuft bereits!", + "You have no historical rooms": "Du hast keine historischen Räume", + "You can't send any messages until you review and agree to our terms and conditions.": "Du kannst keine Nachrichten senden bis du die unsere Geschläftsbedingungen gelesen und akzeptiert hast.", + "Show empty room list headings": "Zeige leere Raumlist-Köpfe", + "Demote yourself?": "Selbst zurückstufen?", + "Demote": "Zurückstufen", + "This event could not be displayed": "Dieses Ereignis konnte nicht angezeigt werden", + "A conference call could not be started because the intgrations server is not available": "Ein Konferenzgespräch konnte nicht gestartet werden, da der Integrations-Server nicht verfügbar ist", + "A call is currently being placed!": "Ein Anruf wurde schon gestartet!", + "Permission Required": "Berechtigung benötigt", + "You do not have permission to start a conference call in this room": "Du hast keine Berechtigung um ein Konferenzgespräch in diesem Raum zu starten", + "deleted": "gelöscht", + "underlined": "unterstrichen", + "bulleted-list": "Liste mit Punkten", + "numbered-list": "Liste mit Nummern", + "Failed to remove widget": "Widget konnte nicht entfernt werden", + "An error ocurred whilst trying to remove the widget from the room": "Ein Fehler trat auf, während versucht wurde das Widget aus diesem Raum zu entfernen", + "inline-code": "Quellcode", + "block-quote": "Zitat", + "This homeserver has hit its Monthly Active User limit": "Dieser Heimserver hat sein Limit für monatlich aktive Nutzer erreicht", + "Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Administrator um diesen Dienst weiter zu nutzen.", + "System Alerts": "System-Benachrichtigung", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Der Server hat sein monatliches Nutzerlimit erreicht. Bitte kontaktiere deinen Administrator, um den Service weiter nutzen zu können.", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht konnte nicht verschickt werden, weil der Homeserver sein monatliches Nutzerlimit erreicht hat. Bitte kontaktiere deine Administrator, um den Service weiter nutzen zu können.", + "Internal room ID: ": "Interne Raum-ID: ", + "Room version number: ": "Raum-Versionsnummer: ", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um mit der Nutzung dieses Services fortzufahren.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Dieser Heimserver hat sein monatliches Limit an aktiven Benutzern erreicht. Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöhen.", + "There is a known vulnerability affecting this room.": "Es gibt eine bekannte Schwachstelle, die diesen Raum betrifft.", + "This room version is vulnerable to malicious modification of room state.": "Dieser Raum ist verwundbar gegenüber bösartiger Veränderung des Raum-Status.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicke hier um den Raum zur letzten Raum-Version aufzurüsten und sicherzustellen, dass die Raum-Integrität gewahrt bleibt.", + "Only room administrators will see this warning": "Nur Raum-Administratoren werden diese Nachricht sehen", + "Please contact your service administrator to continue using the service.": "Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.", + "This homeserver has hit its Monthly Active User limit.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht.", + "This homeserver has exceeded one of its resource limits.": "Dieser Heimserver hat einen seiner Ressourcen-Limits überschritten.", + "Please contact your service administrator to get this limit increased.": "Bitte kontaktiere deinen Systemadministrator um dieses Limit zu erhöht zu bekommen.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Dieser Heimserver hat sein Limit an monatlich aktiven Nutzern erreicht, sodass einige Nutzer sich nicht anmelden können.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Dieser Heimserver hat einen seiner Ressourcen-Limits überschritten, sodass einige Benutzer nicht in der Lage sind sich anzumelden.", + "Upgrade Room Version": "Raum-Version aufrüsten", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Um diesen Raum aufzurüsten, wird der aktuelle geschlossen und ein neuer an seiner Stelle erstellt. Um den Raum-Mitgliedern die bestmögliche Erfahrung zu bieten, werden wir:", + "Create a new room with the same name, description and avatar": "Einen neuen Raum mit demselben Namen, Beschreibung und Profilbild erstellen", + "Update any local room aliases to point to the new room": "Alle lokalen Raum-Aliase aktualisieren, damit sie auf den neuen Raum zeigen", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Nutzern verbieten in dem Raum mit der alten Version zu schreiben und eine Nachricht senden, die den Nutzern rät in den neuen Raum zu wechseln", + "Put a link back to the old room at the start of the new room so people can see old messages": "Zu Beginn des neuen Raumes einen Link zum alten Raum setzen, damit Personen die alten Nachrichten sehen können", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Deine Nachricht wurde nicht gesendet, weil dieser Heimserver sein Limit an monatlich aktiven Benutzern erreicht hat. Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Deine Nachricht wurde nicht gesendet, weil dieser Heimserver ein Ressourcen-Limit erreicht hat. Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.", + "Please contact your service administrator to continue using this service.": "Bitte kontaktiere deinen Systemadministrator um diesen Dienst weiter zu nutzen.", + "Increase performance by only loading room members on first view": "Verbessere Performanz, indem Raum-Mitglieder erst beim ersten Ansehen geladen werden", + "Lazy loading members not supported": "Verzögertes Laden von Mitgliedern nicht unterstützt", + "Lazy loading is not supported by your current homeserver.": "Verzögertes Laden wird von deinem aktuellen Heimserver.", + "Sorry, your homeserver is too old to participate in this room.": "Sorry, dein Homeserver ist zu alt, um an diesem Raum teilzunehmen.", + "Please contact your homeserver administrator.": "Bitte setze dich mit dem Administrator deines Homeservers in Verbindung.", + "Legal": "Rechtliches", + "This room has been replaced and is no longer active.": "Dieser Raum wurde ersetzt und ist nicht länger aktiv.", + "The conversation continues here.": "Die Konversation wird hier fortgesetzt.", + "Upgrade room to version %(ver)s": "Den Raum zur Version %(ver)s aufrüsten", + "This room is a continuation of another conversation.": "Dieser Raum ist eine Fortsetzung einer anderen Konversation.", + "Click here to see older messages.": "Klicke hier um ältere Nachrichten zu sehen.", + "Failed to upgrade room": "Konnte Raum nicht aufrüsten", + "The room upgrade could not be completed": "Die Raum-Aufrüstung konnte nicht fertiggestellt werden", + "Upgrade this room to version %(version)s": "Diesen Raum zur Version %(version)s aufrüsten", + "Forces the current outbound group session in an encrypted room to be discarded": "Erzwingt, dass die aktuell ausgehende Gruppen-Sitzung in einem verschlüsseltem Raum verworfen wird", + "Error Discarding Session": "Sitzung konnte nicht verworfen werden", + "Registration Required": "Registrierung erforderlich", + "You need to register to do this. Would you like to register now?": "Du musst dich registrieren um dies zu tun. Möchtest du dich jetzt registrieren?", + "Unable to connect to Homeserver. Retrying...": "Verbindung mit Heimserver nicht möglich. Versuche erneut...", + "Unable to query for supported registration methods": "Unterstützte Registrierungsmethoden können nicht abgefragt werden", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "one": "%(senderName)s fügte %(addedAddresses)s als Adresse zu diesem Raum hinzu.", + "other": "%(senderName)s fügte %(addedAddresses)s als Adressen zu diesem Raum hinzu." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "one": "%(senderName)s entfernte %(removedAddresses)s als Adresse von diesem Raum.", + "other": "%(senderName)s entfernte %(removedAddresses)s als Adressen von diesem Raum." + }, + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s setzte die Hauptadresse zu diesem Raum auf %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s entfernte die Hauptadresse von diesem Raum.", + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s fügte %(addedAddresses)s hinzu und entfernte %(removedAddresses)s als Adressen von diesem Raum.", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Bevor du Log-Dateien übermittelst, musst du ein GitHub-Issue erstellen um dein Problem zu beschreiben.", + "What GitHub issue are these logs for?": "Für welches GitHub-Issue sind diese Logs?", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot benutzt nun 3-5x weniger Arbeitsspeicher, indem Informationen über andere Nutzer erst bei Bedarf geladen werden. Bitte warte, während die Daten erneut mit dem Server abgeglichen werden!", + "Updating Riot": "Aktualisiere Riot", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

HTML for deine Community-Seite

\n

\n Nutze die lange Beschreibung um die Community neuen Mitgliedern vorzustellen oder um\n einige wichtige Links zu teilen\n

\n

\n Du kannst auch 'img'-Tags verwenden\n

\n", + "Submit Debug Logs": "Fehlerprotokoll senden", + "An email address is required to register on this homeserver.": "Zur Registrierung auf diesem Heimserver ist eine E-Mail-Adresse erforderlich.", + "A phone number is required to register on this homeserver.": "Zur Registrierung auf diesem Heimserver ist eine Telefon-Nummer erforderlich.", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Du hast zuvor Riot auf %(host)s ohne verzögertem Laden von Mitgliedern genutzt. In dieser Version war das verzögerte Laden deaktiviert. Da die lokal zwischengespeicherten Daten zwischen diesen Einstellungen nicht kompatibel ist, muss Riot dein Konto neu synchronisieren.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Wenn Riot mit der alten Version in einem anderen Tab geöffnet ist, schließe dies bitte, da das parallele Nutzen von Riot auf demselben Host mit aktivierten und deaktivierten verzögertem Laden, Probleme verursachen wird.", + "Incompatible local cache": "Inkompatibler lokaler Zwischenspeicher", + "Clear cache and resync": "Zwischenspeicher löschen und erneut synchronisieren", + "Please accept all of the policies": "Bitte akzeptiere alle Bedingungen", + "Please review and accept the policies of this homeserver:": "Bitte sieh dir alle Bedingungen dieses Heimservers an und akzeptiere sie:", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s auf %(osName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop auf %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot wird im mobilen Web nicht unterstützt. App installieren?", + "Unknown device": "Unbekanntes Gerät", + "You need to be using HTTPS to place a screen-sharing call.": "Du musst HTTPS nutzen um einen Anruf mit Bildschirmfreigabe durchzuführen.", + "Welcome to Riot.im": "Willkommen bei Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Dezentrale, verschlüsselte Chat- & Kollaborationslösung unterstützt von [matrix]", + "Search the room directory": "Raum-Verzeichnis durchsuchen", + "Chat with Riot Bot": "Mit dem Riot-Bot chatten", + "Get started with some tips from Riot Bot!": "Lass Dir vom Riot-Bot eine Einführung geben!", + "Discussion of all things Matrix!": "\"Diskussion über alle Dinge\"-Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop-Chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot-iOS & \"matrix-ios-sdk\"-Chat", + "Riot/Android & matrix-android-sdk chat": "Riot-Android & matrix-android-sdk-Chat", + "Matrix technical discussions": "Technische Diskussion über Matrix", + "Running Matrix services": "Matrix-Dienste betreiben", + "Community-run support for Synapse": "Support für Synapse von der Community", + "Admin support for Dendrite": "Admin-Unterstützung für Dendrite", + "Announcements about Synapse releases": "Ankündigungen über Synapse-Versionen", + "Support for those using and running matrix-appservice-irc": "Unterstützung für die, die \"matrix-appservice-irc\" betreiben und nutzen", + "Building services on Matrix": "Dienste für Matrix entwickeln", + "Support for those using the Matrix spec": "Unterstützung für die Nutzer der Matrix-Spezification", + "Design and implementation of E2E in Matrix": "Design und Implementierung von Ende-zu-Ende-Verschlüsselung in Matrix", + "Implementing VR services with Matrix": "Implementierung von VR-Diensten mit Matrix", + "Implementing VoIP services with Matrix": "Implementierung von VoIP-Diensten mit Matrix", + "Discussion of the Identity Service API": "Diskussion der Identitätsdienst-API", + "Support for those using, running and writing other bridges": "Unterstützung für die, die andere Matrix-Bridges nutzen, betreiben oder entwickeln", + "Contributing code to Matrix and Riot": "Code zu Matrix und Riot beitragen", + "Dev chat for the Riot/Web dev team": "Entwickler-Chat für das Riot/Web-Entwickler-Team", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Im Matrix-Netzwerk existieren bereits jetzt zahlreiche Räume, die entweder mit bekannten Netzwerken wie Slack, IRC, Gitter, usw. verknüpft sind oder auch komplett eigenständig betrieben werden. Einen genauen Überblick erhältst du im Raum-Verzeichnis!", + "Dev chat for the Dendrite dev team": "Entwickler-Chat für das Dendrite-Entwickler-Team", + "General discussion about Matrix and Riot": "Allgemeine Diskussion über Matrix und Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Die benutzerdefinierten Server-Einstellungen kannst du verwenden, um dich auf anderen Matrix-Servern anzumelden, indem du eine abweichende Heimserver-URL eingibst.
Somit ist es möglich, Riot mit einem bereits bestehendem Matrix-Benutzerkonto auf einem anderen Heimserver zu verwenden.

Außerdem kannst du einen benutzerdefinierten Identitätsserver eingeben. Allerdings kannst du in diesem Fall Benutzer nicht mehr per E-Mail-Adresse einladen und auch selbst nicht mehr per E-Mail-Adresse eingeladen werden.", + "Co-ordination for Riot translators": "Koordination für Riot-Übersetzer" +} \ No newline at end of file diff --git a/riot/i18n/el.json b/riot/i18n/el.json new file mode 100644 index 0000000..a6cf61c --- /dev/null +++ b/riot/i18n/el.json @@ -0,0 +1,901 @@ +{ + "Error": "Σφάλμα", + "Failed to forget room %(errCode)s": "Δεν ήταν δυνατή η διαγραφή του δωματίου (%(errCode)s)", + "Mute": "Σίγαση", + "Notifications": "Ειδοποιήσεις", + "Operation failed": "Η λειτουργία απέτυχε", + "Remove": "Αφαίρεση", + "Search": "Αναζήτηση", + "Settings": "Ρυθμίσεις", + "unknown error code": "άγνωστος κωδικός σφάλματος", + "%(targetName)s accepted an invitation.": "%(targetName)s δέχτηκε την πρόσκληση.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s δέχτηκες την πρόσκληση για %(displayName)s.", + "Account": "Λογαριασμός", + "Add a topic": "Προσθήκη θέματος", + "Add email address": "Προσθήκη διεύθυνσης ηλ. αλληλογραφίας", + "Add phone number": "Προσθήκη αριθμού", + "Admin": "Διαχειριστής", + "VoIP": "VoIP", + "No Microphones detected": "Δεν εντοπίστηκε μικρόφωνο", + "No Webcams detected": "Δεν εντοπίστηκε κάμερα", + "Default Device": "Προεπιλεγμένη συσκευή", + "Microphone": "Μικρόφωνο", + "Camera": "Κάμερα", + "Advanced": "Προχωρημένα", + "Algorithm": "Αλγόριθμος", + "Hide removed messages": "Απόκρυψη διαγραμμένων μηνυμάτων", + "Authentication": "Πιστοποίηση", + "A new password must be entered.": "Ο νέος κωδικός πρόσβασης πρέπει να εισαχθεί.", + "%(senderName)s answered the call.": "Ο χρήστης %(senderName)s απάντησε την κλήση.", + "An error has occurred.": "Παρουσιάστηκε ένα σφάλμα.", + "Anyone": "Oποιοσδήποτε", + "Are you sure?": "Είστε σίγουροι;", + "Are you sure you want to leave the room '%(roomName)s'?": "Είστε σίγουροι ότι θέλετε να αποχωρήσετε από το δωμάτιο '%(roomName)s';", + "Are you sure you want to reject the invitation?": "Είστε σίγουροι ότι θέλετε να απορρίψετε την πρόσκληση;", + "Are you sure you want to upload the following files?": "Είστε σίγουροι ότι θέλετε να αποστείλετε τα ακόλουθα αρχεία;", + "Attachment": "Επισύναψη", + "%(senderName)s banned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.", + "Autoplay GIFs and videos": "Αυτόματη αναπαραγωγή GIFs και βίντεο", + "Anyone who knows the room's link, apart from guests": "Oποιοσδήποτε", + "%(items)s and %(lastItem)s": "%(items)s %(lastItem)s", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ένα μήνυμα στάλθηκε στο +%(msisdn)s. Παρακαλώ γράψε τον κωδικό επαλήθευσης που περιέχει", + "Access Token:": "Κωδικός πρόσβασης:", + "Always show message timestamps": "Εμφάνιση πάντα της ένδειξης ώρας στα μηνύματα", + "and %(count)s others...": { + "one": "και ένας ακόμα...", + "other": "και %(count)s άλλοι..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s και %(lastPerson)s γράφουν", + "Anyone who knows the room's link, including guests": "Οποιοσδήποτε γνωρίζει τον σύνδεσμο του δωματίου, συμπεριλαμβανομένων των επισκεπτών", + "Blacklisted": "Στη μαύρη λίστα", + "Can't load user settings": "Δεν είναι δυνατή η φόρτωση των ρυθμίσεων χρήστη", + "Change Password": "Αλλαγή κωδικού πρόσβασης", + "%(senderName)s changed their profile picture.": "Ο %(senderName)s άλλαξε τη φωτογραφία του προφίλ του.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "Ο %(senderDisplayName)s άλλαξε το όνομα του δωματίου σε %(roomName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "Ο %(senderDisplayName)s άλλαξε το θέμα σε \"%(topic)s\".", + "Clear Cache and Reload": "Εκκαθάριση μνήμης και ανανέωση", + "Clear Cache": "Εκκαθάριση μνήμης", + "Bans user with given id": "Αποκλεισμός χρήστη με το συγκεκριμένο αναγνωριστικό", + "%(senderDisplayName)s removed the room name.": "Ο %(senderDisplayName)s διέγραψε το όνομα του δωματίου.", + "Changes your display nickname": "Αλλάζει το ψευδώνυμο χρήστη", + "Conference call failed.": "Η κλήση συνδιάσκεψης απέτυχε.", + "powered by Matrix": "βασισμένο στο Matrix", + "Confirm password": "Επιβεβαίωση κωδικού πρόσβασης", + "Confirm your new password": "Επιβεβαίωση του νέου κωδικού πρόσβασης", + "Continue": "Συνέχεια", + "Create an account": "Δημιουργία λογαριασμού", + "Create Room": "Δημιουργία δωματίου", + "Cryptography": "Κρυπτογραφία", + "Current password": "Τωρινός κωδικός πρόσβασης", + "Curve25519 identity key": "Κλειδί ταυτότητας Curve25519", + "Custom level": "Προσαρμοσμένο επίπεδο", + "/ddg is not a command": "/ddg δεν αναγνωρίζεται ως εντολή", + "Deactivate Account": "Απενεργοποίηση λογαριασμού", + "Deactivate my account": "Απενεργοποίηση του λογαριασμού μου", + "Decrypt %(text)s": "Αποκρυπτογράφηση %(text)s", + "Decryption error": "Σφάλμα αποκρυπτογράφησης", + "Delete": "Διαγραφή", + "Default": "Προεπιλογή", + "Device already verified!": "Η συσκευή έχει ήδη επαληθευτεί!", + "Device ID": "Αναγνωριστικό συσκευής", + "Device ID:": "Αναγνωριστικό συσκευής:", + "device id: ": "αναγνωριστικό συσκευής: ", + "Device key:": "Κλειδί συσκευής:", + "Devices": "Συσκευές", + "Direct chats": "Απευθείας συνομιλίες", + "Disinvite": "Ανάκληση πρόσκλησης", + "Display name": "Όνομα χρήστη", + "Download %(text)s": "Λήψη %(text)s", + "Ed25519 fingerprint": "Αποτύπωμα Ed25519", + "Email": "Ηλεκτρονική διεύθυνση", + "Email address": "Ηλεκτρονική διεύθυνση", + "Email address (optional)": "Ηλεκτρονική διεύθυνση (προαιρετικό)", + "Email, name or matrix ID": "Ηλεκτρονική διεύθυνση, όνομα ή matrix ID", + "Emoji": "Εικονίδια", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Τα κρυπτογραφημένα μηνύματα δεν θα είναι ορατά σε εφαρμογές που δεν παρέχουν τη δυνατότητα κρυπτογράφησης", + "Encrypted room": "Κρυπτογραφημένο δωμάτιο", + "%(senderName)s ended the call.": "%(senderName)s τερμάτισε την κλήση.", + "End-to-end encryption information": "Πληροφορίες σχετικά με τη κρυπτογράφηση από άκρο σε άκρο (End-to-end encryption)", + "Error decrypting attachment": "Σφάλμα κατά την αποκρυπτογράφηση της επισύναψης", + "Event information": "Πληροφορίες συμβάντος", + "Existing Call": "Υπάρχουσα κλήση", + "Export": "Εξαγωγή", + "Export E2E room keys": "Εξαγωγή κλειδιών κρυπτογράφησης για το δωμάτιο", + "Failed to change password. Is your password correct?": "Δεν ήταν δυνατή η αλλαγή του κωδικού πρόσβασης. Είναι σωστός ο κωδικός πρόσβασης;", + "Failed to join room": "Δεν ήταν δυνατή η σύνδεση στο δωμάτιο", + "Failed to leave room": "Δεν ήταν δυνατή η αποχώρηση από το δωμάτιο", + "Failed to mute user": "Δεν ήταν δυνατή η σίγαση του χρήστη", + "Failed to reject invite": "Δεν ήταν δυνατή η απόρριψη της πρόσκλησης", + "Failed to reject invitation": "Δεν ήταν δυνατή η απόρριψη της πρόσκλησης", + "Failed to save settings": "Δεν ήταν δυνατή η αποθήκευση των ρυθμίσεων", + "Failed to send email": "Δεν ήταν δυνατή η αποστολή ηλ. αλληλογραφίας", + "Failed to verify email address: make sure you clicked the link in the email": "Δεν ήταν δυνατή η επιβεβαίωση της διεύθυνσης ηλεκτρονικής αλληλογραφίας: βεβαιωθείτε οτι κάνατε κλικ στον σύνδεσμο που σας στάλθηκε", + "Favourite": "Αγαπημένο", + "Favourites": "Αγαπημένα", + "Fill screen": "Γέμισε την οθόνη", + "Filter room members": "Φιλτράρισμα μελών", + "Forget room": "Αγνόηση δωματίου", + "Forgot your password?": "Ξεχάσατε τoν κωδικό πρόσβασης σας;", + "For security, this session has been signed out. Please sign in again.": "Για λόγους ασφαλείας, αυτή η συνεδρία έχει τερματιστεί. Παρακαλούμε συνδεθείτε ξανά.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Για λόγους ασφαλείας, τα κλειδιά κρυπτογράφησης θα διαγράφονται από τον περιηγητή κατά την αποσύνδεση σας. Εάν επιθυμείτε να αποκρυπτογραφήσετε τις συνομιλίες σας στο μέλλον, εξάγετε τα κλειδιά σας και κρατήστε τα ασφαλή.", + "Hangup": "Κλείσιμο", + "Historical": "Ιστορικό", + "Homeserver is": "Ο διακομιστής είναι", + "Identity Server is": "Ο διακομιστής ταυτοποίησης είναι", + "I have verified my email address": "Έχω επαληθεύσει την διεύθυνση ηλ. αλληλογραφίας", + "Import": "Εισαγωγή", + "Import E2E room keys": "Εισαγωγή κλειδιών E2E", + "Incorrect username and/or password.": "Λανθασμένο όνομα χρήστη και/ή κωδικός.", + "Incorrect verification code": "Λανθασμένος κωδικός επαλήθευσης", + "Interface Language": "Γλώσσα διεπαφής", + "Invalid Email Address": "Μη έγκυρη διεύθυνση ηλεκτρονικής αλληλογραφίας", + "Invite new room members": "Προσκαλέστε νέα μέλη", + "Invited": "Προσκλήθηκε", + "Invites": "Προσκλήσεις", + "%(displayName)s is typing": "Ο χρήστης %(displayName)s γράφει", + "Sign in with": "Συνδεθείτε με", + "%(targetName)s joined the room.": "ο %(targetName)s συνδέθηκε στο δωμάτιο.", + "Jump to first unread message.": "Πηγαίνετε στο πρώτο μη αναγνωσμένο μήνυμα.", + "%(senderName)s kicked %(targetName)s.": "Ο %(senderName)s έδιωξε τον χρήστη %(targetName)s.", + "Kick": "Απομάκρυνση", + "Kicks user with given id": "Διώχνει χρήστες με το συγκεκριμένο id", + "Labs": "Πειραματικά", + "Leave room": "Αποχώρηση από το δωμάτιο", + "%(targetName)s left the room.": "Ο χρήστης %(targetName)s έφυγε από το δωμάτιο.", + "Local addresses for this room:": "Τοπική διεύθυνση για το δωμάτιο:", + "Logged in as:": "Συνδεθήκατε ως:", + "Logout": "Αποσύνδεση", + "Low priority": "Χαμηλής προτεραιότητας", + "matrix-react-sdk version:": "Έκδοση matrix-react-sdk:", + "Message not sent due to unknown devices being present": "Το μήνυμα δεν στάλθηκε γιατί υπάρχουν άγνωστες συσκευές", + "Mobile phone number": "Αριθμός κινητού τηλεφώνου", + "Click here to fix": "Κάνε κλικ εδώ για διόρθωση", + "Command error": "Σφάλμα εντολής", + "Commands": "Εντολές", + "Conference calls are not supported in encrypted rooms": "Οι κλήσεις συνδιάσκεψης δεν είναι υποστηρίζονται σε κρυπτογραφημένα δωμάτια", + "Conference calls are not supported in this client": "Οι κλήσεις συνδιάσκεψης δεν είναι υποστηρίζονται από την εφαρμογή", + "Enable encryption": "Ενεργοποίηση κρυπτογραφίας", + "Enter Code": "Εισαγωγή κωδικού πρόσβασης", + "Failed to send request.": "Δεν ήταν δυνατή η αποστολή αιτήματος.", + "Failed to upload file": "Δεν ήταν δυνατή η αποστολή του αρχείου", + "Failure to create room": "Δεν ήταν δυνατή η δημιουργία δωματίου", + "Join Room": "Είσοδος σε δωμάτιο", + "Moderator": "Συντονιστής", + "Name": "Όνομα", + "New address (e.g. #foo:%(localDomain)s)": "Νέα διεύθυνση (e.g. #όνομα:%(localDomain)s)", + "New password": "Νέος κωδικός πρόσβασης", + "New passwords don't match": "Οι νέοι κωδικοί πρόσβασης είναι διαφορετικοί", + "New passwords must match each other.": "Οι νέοι κωδικοί πρόσβασης πρέπει να ταιριάζουν.", + "none": "κανένα", + "(not supported by this browser)": "(δεν υποστηρίζεται από τον περιηγητή)", + "": "<δεν υποστηρίζεται>", + "No more results": "Δεν υπάρχουν αποτελέσματα", + "No results": "Κανένα αποτέλεσμα", + "OK": "Εντάξει", + "olm version:": "Έκδοση olm:", + "Password": "Κωδικός πρόσβασης", + "Password:": "Κωδικός πρόσβασης:", + "Passwords can't be empty": "Οι κωδικοί πρόσβασης δεν γίνετε να είναι κενοί", + "People": "Άτομα", + "Phone": "Τηλέφωνο", + "Register": "Εγγραφή", + "riot-web version:": "Έκδοση riot-web:", + "Room Colour": "Χρώμα δωματίου", + "Room name (optional)": "Όνομα δωματίου (προαιρετικό)", + "Rooms": "Δωμάτια", + "Save": "Αποθήκευση", + "Search failed": "Η αναζήτηση απέτυχε", + "Server error": "Σφάλμα διακομιστή", + "Signed Out": "Αποσυνδέθηκε", + "Sign in": "Συνδέση", + "Sign out": "Αποσύνδεση", + "Someone": "Κάποιος", + "Start a chat": "Έναρξη συνομιλίας", + "This email address is already in use": "Η διεύθυνση ηλ. αλληλογραφίας χρησιμοποιείται ήδη", + "This email address was not found": "Δεν βρέθηκε η διεύθυνση ηλ. αλληλογραφίας", + "Success": "Επιτυχία", + "Start Chat": "Συνομιλία", + "Cancel": "Ακύρωση", + "Custom Server Options": "Προσαρμοσμένες ρυθμίσεις διακομιστή", + "Dismiss": "Απόρριψη", + "bold": "έντονα", + "italic": "πλάγια", + "underline": "υπογράμμιση", + "code": "κώδικας", + "quote": "παράθεση", + "Close": "Κλείσιμο", + "Create new room": "Δημιουργία νέου δωματίου", + "Room directory": "Ευρετήριο", + "Start chat": "Έναρξη συνομιλίας", + "Accept": "Αποδοχή", + "Active call (%(roomName)s)": "Ενεργή κλήση (%(roomName)s)", + "Add": "Προσθήκη", + "Admin Tools": "Εργαλεία διαχειριστή", + "No media permissions": "Χωρίς δικαιώματα πολυμέσων", + "Alias (optional)": "Ψευδώνυμο (προαιρετικό)", + "Ban": "Αποκλεισμός", + "Banned users": "Αποκλεισμένοι χρήστες", + "Bulk Options": "Μαζικές επιλογές", + "Call Timeout": "Λήξη χρόνου κλήσης", + "Click here to join the discussion!": "Κλικ εδώ για να συμμετάσχετε στην συζήτηση!", + "Click to mute audio": "Κάντε κλικ για σίγαση του ήχου", + "Click to mute video": "Κάντε κλικ για σίγαση του βίντεο", + "click to reveal": "κάντε κλικ για εμφάνιση", + "Click to unmute video": "Κάντε κλικ για άρση σίγασης του βίντεο", + "Click to unmute audio": "Κάντε κλικ για άρση σίγασης του ήχου", + "%(count)s new messages": { + "one": "%(count)s νέο μήνυμα", + "other": "%(count)s νέα μηνύματα" + }, + "Custom": "Προσαρμοσμένο", + "Decline": "Απόρριψη", + "Disable Notifications": "Απενεργοποίηση ειδοποιήσεων", + "Drop File Here": "Αποθέστε εδώ το αρχείο", + "Enable Notifications": "Ενεργοποίηση ειδοποιήσεων", + "Encryption is enabled in this room": "Η κρυπτογράφηση είναι ενεργοποιημένη σε αυτό το δωμάτιο", + "Encryption is not enabled in this room": "Η κρυπτογράφηση είναι απενεργοποιημένη σε αυτό το δωμάτιο", + "Enter passphrase": "Εισαγωγή συνθηματικού", + "Failed to set avatar.": "Δεν ήταν δυνατό ο ορισμός της προσωπικής εικόνας.", + "Failed to set display name": "Δεν ήταν δυνατό ο ορισμός του ονόματος εμφάνισης", + "Failed to set up conference call": "Δεν ήταν δυνατή η ρύθμιση κλήσης συνδιάσκεψης", + "Failed to toggle moderator status": "Δεν ήταν δυνατή η εναλλαγή κατάστασης του συντονιστή", + "Failed to upload profile picture!": "Δεν ήταν δυνατή η αποστολή της εικόνας προφίλ!", + "Hide read receipts": "Απόκρυψη αποδείξεων ανάγνωσης", + "Home": "Αρχική", + "Last seen": "Τελευταία εμφάνιση", + "Level:": "Επίπεδο:", + "Manage Integrations": "Διαχείριση ενσωματώσεων", + "Markdown is disabled": "Το Markdown είναι απενεργοποιημένο", + "Markdown is enabled": "Το Markdown είναι ενεργοποιημένο", + "Missing room_id in request": "Λείπει το room_id στο αίτημα", + "Permissions": "Δικαιώματα", + "Power level must be positive integer.": "Το επίπεδο δύναμης πρέπει να είναι ένας θετικός ακέραιος.", + "Privacy warning": "Προειδοποίηση ιδιωτικότητας", + "Private Chat": "Προσωπική συνομιλία", + "Privileged Users": "Προνομιούχοι χρήστες", + "Profile": "Προφίλ", + "Public Chat": "Δημόσια συνομιλία", + "Reason": "Αιτία", + "Reason: %(reasonText)s": "Αιτία: %(reasonText)s", + "Revoke Moderator": "Ανάκληση συντονιστή", + "%(targetName)s rejected the invitation.": "Ο %(targetName)s απέρριψε την πρόσκληση.", + "Reject invitation": "Απόρριψη πρόσκλησης", + "Remote addresses for this room:": "Απομακρυσμένες διευθύνσεις για το δωμάτιο:", + "Remove Contact Information?": "Αφαίρεση πληροφοριών επαφής;", + "Remove %(threePid)s?": "Αφαίρεση %(threePid)s;", + "Results from DuckDuckGo": "Αποτελέσματα από DuckDuckGo", + "Return to login screen": "Επιστροφή στην οθόνη σύνδεσης", + "Room %(roomId)s not visible": "Το δωμάτιο %(roomId)s δεν είναι ορατό", + "%(roomName)s does not exist.": "Το %(roomName)s δεν υπάρχει.", + "Searches DuckDuckGo for results": "Γίνεται αναζήτηση στο DuckDuckGo για αποτελέσματα", + "Seen by %(userName)s at %(dateTime)s": "Διαβάστηκε από τον/την %(userName)s στις %(dateTime)s", + "Send anyway": "Αποστολή ούτως ή άλλως", + "Send Invites": "Αποστολή προσκλήσεων", + "Send Reset Email": "Αποστολή μηνύματος επαναφοράς", + "%(senderDisplayName)s sent an image.": "Ο %(senderDisplayName)s έστειλε μια φωτογραφία.", + "Server may be unavailable or overloaded": "Ο διακομιστής μπορεί να είναι μη διαθέσιμος ή υπερφορτωμένος", + "Session ID": "Αναγνωριστικό συνεδρίας", + "%(senderName)s set a profile picture.": "Ο %(senderName)s όρισε τη φωτογραφία του προφίλ του.", + "Start authentication": "Έναρξη πιστοποίησης", + "Submit": "Υποβολή", + "Tagged as: ": "Με ετικέτα: ", + "The default role for new room members is": "Ο προεπιλεγμένος ρόλος για νέα μέλη είναι", + "The main address for this room is": "Η κύρια διεύθυνση για το δωμάτιο είναι", + "The file '%(fileName)s' failed to upload": "Απέτυχε η αποστολή του αρχείου '%(fileName)s'", + "This room has no local addresses": "Αυτό το δωμάτιο δεν έχει τοπικές διευθύνσεις", + "This doesn't appear to be a valid email address": "Δεν μοιάζει με μια έγκυρη διεύθυνση ηλεκτρονικής αλληλογραφίας", + "This phone number is already in use": "Αυτός ο αριθμός τηλεφώνου είναι ήδη σε χρήση", + "This room": "Αυτό το δωμάτιο", + "This room's internal ID is": "Το εσωτερικό αναγνωριστικό του δωματίου είναι", + "Turn Markdown off": "Απενεργοποίηση Markdown", + "Turn Markdown on": "Ενεργοποίηση Markdown", + "Unable to add email address": "Αδυναμία προσθήκης διεύθυνσης ηλ. αλληλογραφίας", + "Unable to remove contact information": "Αδυναμία αφαίρεσης πληροφοριών επαφής", + "Unable to verify email address.": "Αδυναμία επιβεβαίωσης διεύθυνσης ηλεκτρονικής αλληλογραφίας.", + "Unban": "Άρση αποκλεισμού", + "%(senderName)s unbanned %(targetName)s.": "Ο χρήστης %(senderName)s έδιωξε τον χρήστη %(targetName)s.", + "Unable to enable Notifications": "Αδυναμία ενεργοποίησης των ειδοποιήσεων", + "Unable to load device list": "Αδυναμία φόρτωσης της λίστας συσκευών", + "Unencrypted room": "Μη κρυπτογραφημένο δωμάτιο", + "unencrypted": "μη κρυπτογραφημένο", + "Unencrypted message": "Μη κρυπτογραφημένο μήνυμα", + "unknown caller": "άγνωστος καλών", + "unknown device": "άγνωστη συσκευή", + "Unknown room %(roomId)s": "Άγνωστο δωμάτιο %(roomId)s", + "Unmute": "Άρση σίγασης", + "Unnamed Room": "Ανώνυμο δωμάτιο", + "Unrecognised command:": "Μη αναγνωρίσιμη εντολή:", + "Unrecognised room alias:": "Μη αναγνωρίσιμο ψευδώνυμο:", + "Unverified": "Ανεπιβεβαίωτο", + "Upload avatar": "Αποστολή προσωπικής εικόνας", + "Upload Failed": "Απέτυχε η αποστολή", + "Upload Files": "Αποστολή αρχείων", + "Upload file": "Αποστολή αρχείου", + "Upload new:": "Αποστολή νέου:", + "Usage": "Χρήση", + "Use with caution": "Χρησιμοποιήστε τα με προσοχή", + "User ID": "Αναγνωριστικό χρήστη", + "User Interface": "Διεπαφή χρήστη", + "User name": "Όνομα χρήστη", + "Username invalid: %(errMessage)s": "Μη έγκυρο όνομα χρήστη: %(errMessage)s", + "Users": "Χρήστες", + "Video call": "Βιντεοκλήση", + "Voice call": "Φωνητική κλήση", + "Warning!": "Προειδοποίηση!", + "Who would you like to communicate with?": "Με ποιον θα θέλατε να επικοινωνήσετε;", + "You are already in a call.": "Είστε ήδη σε μια κλήση.", + "You have no visible notifications": "Δεν έχετε ορατές ειδοποιήσεις", + "You must register to use this functionality": "Πρέπει να εγγραφείτε για να χρησιμοποιήσετε αυτή την λειτουργία", + "You need to be logged in.": "Πρέπει να είστε συνδεδεμένος.", + "You need to enter a user name.": "Πρέπει να εισάγετε ένα όνομα χρήστη.", + "Your password has been reset": "Ο κωδικός πρόσβασης σας έχει επαναφερθεί", + "Sun": "Κυρ", + "Mon": "Δευ", + "Tue": "Τρί", + "Wed": "Τετ", + "Thu": "Πέμ", + "Fri": "Παρ", + "Sat": "Σάβ", + "Jan": "Ιαν", + "Feb": "Φεβ", + "Mar": "Μαρ", + "Apr": "Απρ", + "May": "Μαϊ", + "Jun": "Ιουν", + "Jul": "Ιουλ", + "Aug": "Αυγ", + "Sep": "Σεπ", + "Oct": "Οκτ", + "Nov": "Νοε", + "Dec": "Δεκ", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Ορισμός ονόματος εμφάνισης:", + "Upload an avatar:": "Αποστολή προσωπικής εικόνας:", + "This server does not support authentication with a phone number.": "Αυτός ο διακομιστής δεν υποστηρίζει πιστοποίηση με αριθμό τηλεφώνου.", + "Missing password.": "Λείπει ο κωδικός πρόσβασης.", + "Passwords don't match.": "Δεν ταιριάζουν οι κωδικοί πρόσβασης.", + "This doesn't look like a valid email address.": "Δεν μοιάζει με μια έγκυρη διεύθυνση ηλ. αλληλογραφίας.", + "An unknown error occurred.": "Προέκυψε ένα άγνωστο σφάλμα.", + "I already have an account": "Έχω ήδη λογαριασμό", + "An error occurred: %(error_string)s": "Προέκυψε ένα σφάλμα: %(error_string)s", + "Topic": "Θέμα", + "Make Moderator": "Ορισμός συντονιστή", + "Encrypt room": "Κρυπτογράφηση δωματίου", + "Room": "Δωμάτιο", + "(~%(count)s results)": { + "one": "(~%(count)s αποτέλεσμα)", + "other": "(~%(count)s αποτελέσματα)" + }, + "Active call": "Ενεργή κλήση", + "strike": "επιγράμμιση", + "bullet": "κουκκίδα", + "New Password": "Νέος κωδικός πρόσβασης", + "Start automatically after system login": "Αυτόματη έναρξη μετά τη σύνδεση", + "Options": "Επιλογές", + "Passphrases must match": "Δεν ταιριάζουν τα συνθηματικά", + "Passphrase must not be empty": "Το συνθηματικό δεν πρέπει να είναι κενό", + "Export room keys": "Εξαγωγή κλειδιών δωματίου", + "Confirm passphrase": "Επιβεβαίωση συνθηματικού", + "Import room keys": "Εισαγωγή κλειδιών δωματίου", + "File to import": "Αρχείο για εισαγωγή", + "Start new chat": "Έναρξη νέας συνομιλίας", + "Confirm Removal": "Επιβεβαίωση αφαίρεσης", + "Unknown error": "Άγνωστο σφάλμα", + "Incorrect password": "Λανθασμένος κωδικός πρόσβασης", + "To continue, please enter your password.": "Για να συνεχίσετε, παρακαλούμε πληκτρολογήστε τον κωδικό πρόσβασής σας.", + "Device name": "Όνομα συσκευής", + "Device Name": "Όνομα συσκευής", + "Device key": "Κλειδί συσκευής", + "Verify device": "Επιβεβαίωση συσκευής", + "Unable to restore session": "Αδυναμία επαναφοράς συνεδρίας", + "Unknown devices": "Άγνωστες συσκευές", + "Unknown Address": "Άγνωστη διεύθυνση", + "Blacklist": "Μαύρη λίστα", + "Verify...": "Επιβεβαίωση...", + "ex. @bob:example.com": "π.χ @bob:example.com", + "Add User": "Προσθήκη χρήστη", + "Sign in with CAS": "Σύνδεση με CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Μπορείτε να χρησιμοποιήσετε τις προσαρμοσμένες ρυθμίσεις για να εισέλθετε σε άλλους διακομιστές Matrix επιλέγοντας μια διαφορετική διεύθυνση για το διακομιστή.", + "Token incorrect": "Εσφαλμένο διακριτικό", + "Please enter the code it contains:": "Παρακαλούμε εισάγετε τον κωδικό που περιέχει:", + "Default server": "Προεπιλεγμένος διακομιστής", + "Custom server": "Προσαρμοσμένος διακομιστής", + "Home server URL": "Διεύθυνση διακομιστή", + "Identity server URL": "Διεύθυνση διακομιστή ταυτοποίησης", + "What does this mean?": "Τι σημαίνει αυτό;", + "Error decrypting audio": "Σφάλμα κατά την αποκρυπτογράφηση του ήχου", + "Error decrypting image": "Σφάλμα κατά την αποκρυπτογράφηση της εικόνας", + "Error decrypting video": "Σφάλμα κατά την αποκρυπτογράφηση του βίντεο", + "Add an Integration": "Προσθήκη ενσωμάτωσης", + "URL Previews": "Προεπισκόπηση συνδέσμων", + "Drop file here to upload": "Αποθέστε εδώ για αποστολή", + "Online": "Σε σύνδεση", + "Idle": "Αδρανής", + "Offline": "Εκτός σύνδεσης", + "Start chatting": "Έναρξη συνομιλίας", + "Start Chatting": "Έναρξη συνομιλίας", + "Click on the button below to start chatting!": "Κάντε κλικ στο κουμπί παρακάτω για να ξεκινήσετε μια συνομιλία!", + "%(senderDisplayName)s removed the room avatar.": "Ο %(senderDisplayName)s διέγραψε την προσωπική εικόνα του δωματίου.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "Ο %(senderDisplayName)s άλλαξε την προσωπική εικόνα του %(roomName)s", + "Username available": "Διαθέσιμο όνομα χρήστη", + "Username not available": "Μη διαθέσιμο όνομα χρήστη", + "Something went wrong!": "Κάτι πήγε στραβά!", + "Could not connect to the integration server": "Αδυναμία σύνδεσης στον διακομιστή ενσωμάτωσης", + "Create a new chat or reuse an existing one": "Δημιουργία νέας συνομιλίας ή επαναχρησιμοποίηση μιας υπάρχουσας", + "Don't send typing notifications": "Να μη γίνετε αποστολή ειδοποιήσεων πληκτρολόγησης", + "Encrypted by a verified device": "Κρυπτογραφημένο από μια επιβεβαιωμένη συσκευή", + "Encrypted by an unverified device": "Κρυπτογραφημένο από μια ανεπιβεβαίωτη συσκευή", + "Error: Problem communicating with the given homeserver.": "Σφάλμα: πρόβλημα κατά την επικοινωνία με τον ορισμένο διακομιστή.", + "Failed to ban user": "Δεν ήταν δυνατό ο αποκλεισμός του χρήστη", + "Failed to change power level": "Δεν ήταν δυνατή η αλλαγή του επιπέδου δύναμης", + "Failed to fetch avatar URL": "Δεν ήταν δυνατή η ανάκτηση της διεύθυνσης εικόνας", + "Failed to unban": "Δεν ήταν δυνατή η άρση του αποκλεισμού", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s από %(fromPowerLevel)s σε %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Έχει απενεργοποιηθεί η πρόσβαση στους επισκέπτες σε αυτόν τον διακομιστή.", + "Guests cannot join this room even if explicitly invited.": "Οι επισκέπτες δεν μπορούν να συνδεθούν στο δωμάτιο ακόμη και αν έχουν καλεστεί.", + "Hide Text Formatting Toolbar": "Απόκρυψη εργαλειοθήκης μορφοποίησης κειμένου", + "Incoming call from %(name)s": "Εισερχόμενη κλήση από %(name)s", + "Incoming video call from %(name)s": "Εισερχόμενη βιντεοκλήση από %(name)s", + "Incoming voice call from %(name)s": "Εισερχόμενη φωνητική κλήση από %(name)s", + "Invalid alias format": "Μη έγκυρη μορφή ψευδώνυμου", + "Invalid address format": "Μη έγκυρη μορφή διεύθυνσης", + "Invalid file%(extra)s": "Μη έγκυρο αρχείο %(extra)s", + "%(senderName)s invited %(targetName)s.": "Ο %(senderName)s προσκάλεσε τον %(targetName)s.", + "Invites user with given id to current room": "Προσκαλεί τον χρήστη με το δοσμένο αναγνωριστικό στο τρέχον δωμάτιο", + "'%(alias)s' is not a valid format for an address": "Το '%(alias)s' δεν είναι μια έγκυρη μορφή διεύθυνσης", + "'%(alias)s' is not a valid format for an alias": "Το '%(alias)s' δεν είναι μια έγκυρη μορφή ψευδώνυμου", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο όλα τα μέλη, από τη στιγμή που προσκλήθηκαν.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο όλα τα μέλη, από τη στιγμή που συνδέθηκαν.", + "%(senderName)s made future room history visible to all room members.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο όλα τα μέλη.", + "%(senderName)s made future room history visible to anyone.": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο οποιοσδήποτε.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "Ο %(senderName)s έκανε το μελλοντικό ιστορικό του δωματίου δημόσιο άγνωστο (%(visibility)s).", + "Missing user_id in request": "Λείπει το user_id στο αίτημα", + "Mobile phone number (optional)": "Αριθμός κινητού τηλεφώνου (προαιρετικό)", + "Never send encrypted messages to unverified devices from this device": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές από αυτή τη συσκευή", + "Never send encrypted messages to unverified devices in this room from this device": "Να μη γίνει ποτέ αποστολή κρυπτογραφημένων μηνυμάτων σε ανεπιβεβαίωτες συσκευές, σε αυτό το δωμάτιο, από αυτή τη συσκευή", + "not set": "δεν έχει οριστεί", + "not specified": "μη καθορισμένο", + "NOT verified": "ΧΩΡΙΣ επαλήθευση", + "No devices with registered encryption keys": "Καθόλου συσκευές με εγγεγραμένα κλειδιά κρυπτογράφησης", + "No display name": "Χωρίς όνομα", + "No users have specific privileges in this room": "Κανένας χρήστης δεν έχει συγκεκριμένα δικαιώματα σε αυτό το δωμάτιο", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Μόλις ενεργοποιηθεί η κρυπτογράφηση για ένα δωμάτιο, δεν μπορεί να απενεργοποιηθεί ξανά (για τώρα)", + "Only people who have been invited": "Μόνο άτομα που έχουν προσκληθεί", + "%(senderName)s placed a %(callType)s call.": "Ο %(senderName)s πραγματοποίησε μια %(callType)s κλήση.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Παρακαλούμε ελέγξτε την ηλεκτρονική σας αλληλογραφία και κάντε κλικ στον σύνδεσμο που περιέχει. Μόλις γίνει αυτό, κάντε κλίκ στο κουμπί συνέχεια.", + "Refer a friend to Riot:": "Πείτε για το Riot σε έναν φίλο σας:", + "Rejoin": "Επανασύνδεση", + "%(senderName)s removed their profile picture.": "Ο %(senderName)s αφαίρεσε τη φωτογραφία του προφίλ του.", + "%(senderName)s requested a VoIP conference.": "Ο %(senderName)s αιτήθηκε μια συνδιάσκεψη VoIP.", + "Riot does not have permission to send you notifications - please check your browser settings": "Το Riot δεν έχει δικαιώματα για αποστολή ειδοποιήσεων - παρακαλούμε ελέγξτε τις ρυθμίσεις του περιηγητή σας", + "Riot was not given permission to send notifications - please try again": "Δεν δόθηκαν δικαιώματα αποστολής ειδοποιήσεων στο Riot - παρακαλούμε προσπαθήστε ξανά", + "Room contains unknown devices": "Το δωμάτιο περιέχει άγνωστες συσκευές", + "%(roomName)s is not accessible at this time.": "Το %(roomName)s δεν είναι προσβάσιμο αυτή τη στιγμή.", + "Scroll to bottom of page": "Μετάβαση στο τέλος της σελίδας", + "Scroll to unread messages": "Μεταβείτε στα μη αναγνωσμένα μηνύματα", + "Sender device information": "Πληροφορίες συσκευής αποστολέα", + "Server may be unavailable, overloaded, or search timed out :(": "Ο διακομιστής μπορεί να είναι μη διαθέσιμος, υπερφορτωμένος, ή να έχει λήξει η αναζήτηση :(", + "Server may be unavailable, overloaded, or the file too big": "Ο διακομιστής μπορεί να είναι μη διαθέσιμος, υπερφορτωμένος, ή το αρχείο να είναι πολύ μεγάλο", + "Server may be unavailable, overloaded, or you hit a bug.": "Ο διακομιστής μπορεί να είναι μη διαθέσιμος, υπερφορτωμένος, ή να πέσατε σε ένα σφάλμα.", + "Server unavailable, overloaded, or something else went wrong.": "Ο διακομιστής μπορεί να είναι μη διαθέσιμος, υπερφορτωμένος, ή κάτι άλλο να πήγε στραβά.", + "Show panel": "Εμφάνιση καρτέλας", + "Show Text Formatting Toolbar": "Εμφάνιση της εργαλειοθήκης μορφοποίησης κειμένου", + "%(count)s of your messages have not been sent.": { + "other": "Μερικά από τα μηνύματα σας δεν έχουν αποσταλεί." + }, + "This room is not recognised.": "Αυτό το δωμάτιο δεν αναγνωρίζεται.", + "Unable to capture screen": "Αδυναμία σύλληψης οθόνης", + "Unknown (user, device) pair:": "Άγνωστο ζεύγος (χρήστη, συσκευής):", + "Uploading %(filename)s and %(count)s others": { + "zero": "Γίνεται αποστολή του %(filename)s", + "other": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπων", + "one": "Γίνεται αποστολή του %(filename)s και %(count)s υπολοίπα" + }, + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (δύναμη %(powerLevelNumber)s)", + "Verification Pending": "Εκκρεμεί επιβεβαίωση", + "Verification": "Επιβεβαίωση", + "verified": "επαληθεύτηκε", + "Verified": "Επαληθεύτηκε", + "Verified key": "Επιβεβαιωμένο κλειδί", + "VoIP conference finished.": "Ολοκληρώθηκε η συνδιάσκεψη VoIP.", + "VoIP conference started.": "Ξεκίνησησε η συνδιάσκεψη VoIP.", + "VoIP is unsupported": "Δεν υποστηρίζεται το VoIP", + "(warning: cannot be disabled again!)": "(προειδοποίηση: δεν μπορεί να απενεργοποιηθεί ξανά)", + "WARNING: Device already verified, but keys do NOT MATCH!": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η συσκευή έχει επαληθευτεί, αλλά τα κλειδιά ΔΕΝ ΤΑΙΡΙΑΖΟΥΝ!", + "Who can access this room?": "Ποιος μπορεί να προσπελάσει αυτό το δωμάτιο;", + "Who can read history?": "Ποιος μπορεί να διαβάσει το ιστορικό;", + "Who would you like to add to this room?": "Ποιον θέλετε να προσθέσετε σε αυτό το δωμάτιο;", + "%(senderName)s withdrew %(targetName)s's invitation.": "Ο %(senderName)s ανακάλεσε την πρόσκληση του %(targetName)s.", + "You cannot place a call with yourself.": "Δεν μπορείτε να καλέσετε τον ευατό σας.", + "You cannot place VoIP calls in this browser.": "Δεν μπορείτε να πραγματοποιήσετε κλήσεις VoIP με αυτόν τον περιηγητή.", + "You do not have permission to post to this room": "Δεν έχετε δικαιώματα για να δημοσιεύσετε σε αυτό το δωμάτιο", + "You have been banned from %(roomName)s by %(userName)s.": "Έχετε αποκλειστεί από το δωμάτιο %(roomName)s από τον %(userName)s.", + "You have been invited to join this room by %(inviterName)s": "Έχετε προσκληθεί να συνδεθείτε στο δωμάτιο από τον %(inviterName)s", + "You seem to be in a call, are you sure you want to quit?": "Φαίνεται ότι είστε σε μια κλήση, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "This doesn't look like a valid phone number.": "Δεν μοιάζει με έναν έγκυρο αριθμό τηλεφώνου.", + "Make this room private": "Κάντε το δωμάτιο ιδιωτικό", + "There are no visible files in this room": "Δεν υπάρχουν ορατά αρχεία σε αυτό το δωμάτιο", + "Connectivity to the server has been lost.": "Χάθηκε η συνδεσιμότητα στον διακομιστή.", + "Please select the destination room for this message": "Παρακαλούμε επιλέξτε ένα δωμάτιο προορισμού για αυτό το μήνυμα", + "Desktop specific": "Μόνο για επιφάνεια εργασίας", + "Analytics": "Αναλυτικά δεδομένα", + "Riot collects anonymous analytics to allow us to improve the application.": "Το Riot συλλέγει ανώνυμα δεδομένα επιτρέποντας μας να βελτιώσουμε την εφαρμογή.", + "Failed to invite": "Δεν ήταν δυνατή η πρόσκληση", + "Failed to invite user": "Δεν ήταν δυνατή η πρόσκληση του χρήστη", + "In future this verification process will be more sophisticated.": "Στο μέλλον η διαδικασία επαλήθευσης θα είναι πιο εξελιγμένη.", + "I verify that the keys match": "Επιβεβαιώνω πως ταιριάζουν τα κλειδιά", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "Το \"%(RoomName)s\" περιέχει συσκευές που δεν έχετε ξαναδεί.", + "This Home Server would like to make sure you are not a robot": "Ο διακομιστής θέλει να σιγουρευτεί ότι δεν είσαστε ρομπότ", + "Please check your email to continue registration.": "Παρακαλούμε ελέγξτε την ηλεκτρονική σας αλληλογραφία για να συνεχίσετε με την εγγραφή.", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Αν δεν ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας, δεν θα θα μπορείτε να επαναφέρετε τον κωδικό πρόσβασης σας. Είστε σίγουροι;", + "You are registering with %(SelectedTeamName)s": "Εγγραφείτε με %(SelectedTeamName)s", + "Removed or unknown message type": "Αφαιρέθηκε ή άγνωστος τύπος μηνύματος", + " (unsupported)": " (μη υποστηριζόμενο)", + "%(senderDisplayName)s changed the room avatar to ": "Ο %(senderDisplayName)s άλλαξε την εικόνα του δωματίου σε ", + "Missing Media Permissions, click here to request.": "Λείπουν τα δικαιώματα πολύμεσων, κάντε κλικ για να ζητήσετε.", + "You may need to manually permit Riot to access your microphone/webcam": "Μπορεί να χρειαστεί να ορίσετε χειροκίνητα την πρόσβαση του Riot στο μικρόφωνο/κάμερα", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Δεν είναι δυνατή η σύνδεση στον διακομιστή - παρακαλούμε ελέγξτε την συνδεσιμότητα, βεβαιωθείτε ότι το πιστοποιητικό SSL του διακομιστή είναι έμπιστο και ότι κάποιο πρόσθετο περιηγητή δεν αποτρέπει τα αιτήματα.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Δεν είναι δυνατή η σύνδεση στον διακομιστή μέσω HTTP όταν μια διεύθυνση HTTPS βρίσκεται στην μπάρα του περιηγητή. Είτε χρησιμοποιήστε HTTPS ή ενεργοποιήστε τα μη ασφαλή σενάρια εντολών.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "Ο %(senderName)s άλλαξε το επίπεδο δύναμης του %(powerLevelDiffText)s.", + "Changes to who can read history will only apply to future messages in this room": "Οι αλλαγές που αφορούν την ορατότητα του ιστορικού θα εφαρμοστούν μόνο στα μελλοντικά μηνύματα του δωματίου", + "Conference calling is in development and may not be reliable.": "Η κλήση συνδιάσκεψης είναι υπό ανάπτυξη και μπορεί να μην είναι αξιόπιστη.", + "Devices will not yet be able to decrypt history from before they joined the room": "Οι συσκευές δεν θα είναι σε θέση να αποκρυπτογραφήσουν το ιστορικό πριν από την είσοδο τους στο δωμάτιο", + "End-to-end encryption is in beta and may not be reliable": "Η κρυπτογράφηση από άκρο σε άκρο είναι σε δοκιμαστικό στάδιο και μπορεί να μην είναι αξιόπιστη", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "Ο %(senderName)s αφαίρεσε το όνομα εμφάνισης του (%(oldDisplayName)s).", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "Ο %(senderName)s έστειλε μια πρόσκληση στον %(targetDisplayName)s για να συνδεθεί στο δωμάτιο.", + "%(senderName)s set their display name to %(displayName)s.": "Ο %(senderName)s όρισε το όνομα του σε %(displayName)s.", + "The phone number entered looks invalid": "Ο αριθμός που καταχωρίσατε δεν είναι έγκυρος", + "The email address linked to your account must be entered.": "Πρέπει να εισηχθεί η διεύθυνση ηλ. αλληλογραφίας που είναι συνδεδεμένη με τον λογαριασμό σας.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Το αρχείο '%(fileName)s' υπερβαίνει το όριο μεγέθους του διακομιστή για αποστολές", + "The remote side failed to pick up": "Η απομακρυσμένη πλευρά απέτυχε να συλλέξει", + "This Home Server does not support login using email address.": "Ο διακομιστής δεν υποστηρίζει σύνδεση με διευθύνσεις ηλ. αλληλογραφίας.", + "This invitation was sent to an email address which is not associated with this account:": "Η πρόσκληση στάλθηκε σε μια διεύθυνση που δεν έχει συσχετιστεί με αυτόν τον λογαριασμό:", + "These are experimental features that may break in unexpected ways": "Αυτά είναι πειραματικά χαρακτηριστικά και μπορεί να καταρρεύσουν με απροσδόκητους τρόπους", + "The visibility of existing history will be unchanged": "Η ορατότητα του υπάρχοντος ιστορικού θα παραμείνει αμετάβλητη", + "This is a preview of this room. Room interactions have been disabled": "Αυτή είναι μια προεπισκόπηση του δωματίου. Οι αλληλεπιδράσεις δωματίου έχουν απενεργοποιηθεί", + "This room is not accessible by remote Matrix servers": "Αυτό το δωμάτιο δεν είναι προσβάσιμο από απομακρυσμένους διακομιστές Matrix", + "To reset your password, enter the email address linked to your account": "Για να επαναφέρετε τον κωδικό πρόσβασης σας, πληκτρολογήστε τη διεύθυνση ηλ. αλληλογραφίας όπου είναι συνδεδεμένη με τον λογαριασμό σας", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "Ο %(senderName)s ενεργοποίησε την από άκρο σε άκρο κρυπτογράφηση (algorithm %(algorithm)s).", + "Undecryptable": "Μη αποκρυπτογραφημένο", + "Would you like to accept or decline this invitation?": "Θα θέλατε να δεχθείτε ή να απορρίψετε την πρόσκληση;", + "You already have existing direct chats with this user:": "Έχετε ήδη απευθείας συνομιλίες με τον χρήστη:", + "You are trying to access %(roomName)s.": "Προσπαθείτε να έχετε πρόσβαση στο %(roomName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "Έχετε διωχθεί από το δωμάτιο %(roomName)s από τον %(userName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Έχετε αποσυνδεθεί από όλες τις συσκευές και δεν θα λαμβάνετε πλέον ειδοποιήσεις push. Για να ενεργοποιήσετε τις ειδοποιήσεις, συνδεθείτε ξανά σε κάθε συσκευή", + "You have disabled URL previews by default.": "Έχετε απενεργοποιημένη από προεπιλογή την προεπισκόπηση συνδέσμων.", + "You have enabled URL previews by default.": "Έχετε ενεργοποιημένη από προεπιλογή την προεπισκόπηση συνδέσμων.", + "You may wish to login with a different account, or add this email to this account.": "Μπορεί να θέλετε να συνδεθείτε με διαφορετικό λογαριασμό, ή να προσθέσετε αυτή τη διεύθυνση ηλεκτρονικής αλληλογραφίας σε αυτόν τον λογαριασμό.", + "You need to be able to invite users to do that.": "Για να το κάνετε αυτό πρέπει να έχετε τη δυνατότητα να προσκαλέσετε χρήστες.", + "You seem to be uploading files, are you sure you want to quit?": "Φαίνεται ότι αποστέλετε αρχεία, είστε βέβαιοι ότι θέλετε να αποχωρήσετε;", + "You should not yet trust it to secure data": "Δεν πρέπει να το εμπιστεύεστε για να ασφαλίσετε δεδομένα", + "Your home server does not support device management.": "Ο διακομιστής δεν υποστηρίζει διαχείριση συσκευών.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Ο κωδικός πρόσβασης είναι πολύ μικρός (ελ. %(MIN_PASSWORD_LENGTH)s).", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Τα ονόματα μπορεί να περιέχουν μόνο γράμματα, αριθμούς, τελείες, πάνω και κάτω παύλα.", + "Share message history with new users": "Διαμοιρασμός ιστορικού μηνυμάτων με τους νέους χρήστες", + "numbullet": "απαρίθμηση", + "You must join the room to see its files": "Πρέπει να συνδεθείτε στο δωμάτιο για να δείτε τα αρχεία του", + "Reject all %(invitedRooms)s invites": "Απόρριψη όλων των προσκλήσεων %(invitedRooms)s", + "Failed to invite the following users to the %(roomName)s room:": "Δεν ήταν δυνατή η πρόσκληση των χρηστών στο δωμάτιο %(roomName)s:", + "Deops user with given id": "Deop χρήστη με το συγκεκριμένο αναγνωριστικό", + "Drop here to tag %(section)s": "Απόθεση εδώ για ορισμό ετικέτας στο %(section)s", + "Join as voice or video.": "Συμμετάσχετε με φωνή ή βίντεο.", + "Joins room with given alias": "Συνδέεστε στο δωμάτιο με δοσμένο ψευδώνυμο", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Εμφάνιση χρονικών σημάνσεων σε 12ωρη μορφή ώρας (π.χ. 2:30 μ.μ.)", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Το κλειδί υπογραφής που δώσατε αντιστοιχεί στο κλειδί υπογραφής που λάβατε από τη συσκευή %(userId)s %(deviceId)s. Η συσκευή έχει επισημανθεί ως επιβεβαιωμένη.", + "To link to a room it must have an address.": "Για να συνδεθείτε σε ένα δωμάτιο πρέπει να έχετε μια διεύθυνση.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Η διεύθυνση ηλεκτρονικής αλληλογραφίας σας δεν φαίνεται να συσχετίζεται με Matrix ID σε αυτόν τον διακομιστή.", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Ο κωδικός πρόσβασής σας άλλαξε επιτυχώς. Δεν θα λάβετε ειδοποιήσεις push σε άλλες συσκευές μέχρι να συνδεθείτε ξανά σε αυτές", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Δεν θα μπορέσετε να αναιρέσετε αυτήν την αλλαγή καθώς προωθείτε τον χρήστη να έχει το ίδιο επίπεδο δύναμης με τον εαυτό σας.", + "Sent messages will be stored until your connection has returned.": "Τα απεσταλμένα μηνύματα θα αποθηκευτούν μέχρι να αακτηθεί η σύνδεσή σας.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Είστε βέβαιοι ότι θέλετε να καταργήσετε (διαγράψετε) αυτό το συμβάν; Σημειώστε ότι αν διαγράψετε το όνομα δωματίου ή αλλάξετε το θέμα, θα μπορούσε να αναιρέσει την αλλαγή.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Αυτό σας επιτρέπει να χρησιμοποιήσετε την εφαρμογή με έναν υπάρχον λογαριασμό Matrix σε έναν διαφορετικό διακομιστή.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Μπορείτε επίσης να ορίσετε έναν προσαρμοσμένο διακομιστή ταυτοποίησης, αλλά αυτό συνήθως θα αποτρέψει την αλληλεπίδραση με τους χρήστες που βασίζονται στην ηλεκτρονική διεύθυνση αλληλογραφίας.", + "This will be your account name on the homeserver, or you can pick a different server.": "Αυτό θα είναι το όνομα του λογαριασμού σας στον διακομιστή , ή μπορείτε να επιλέξετε διαφορετικό διακομιστή.", + "If you already have a Matrix account you can log in instead.": "Αν έχετε ήδη λογαριασμό Matrix μπορείτε να συνδεθείτε.", + "Failed to load timeline position": "Δεν ήταν δυνατή η φόρτωση της θέσης του χρονολόγιου", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Προσπαθήσατε να φορτώσετε ένα συγκεκριμένο σημείο στο χρονολόγιο του δωματίου, αλλά δεν έχετε δικαίωμα να δείτε το εν λόγω μήνυμα.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Προσπαθήσατε να φορτώσετε ένα συγκεκριμένο σημείο στο χρονολόγιο του δωματίου, αλλά δεν καταφέρατε να το βρείτε.", + "Failed to kick": "Δεν ήταν δυνατή η απομάκρυνση", + "(no answer)": "(χωρίς απάντηση)", + "(unknown failure: %(reason)s)": "(άγνωστο σφάλμα: %(reason)s)", + "Unblacklist": "Άρση αποκλεισμού", + "Unverify": "Άρση επιβεβαίωσης", + "Ongoing conference call%(supportedText)s.": "Κλήση συνδιάσκεψης σε εξέλιξη %(supportedText)s.", + "Your browser does not support the required cryptography extensions": "Ο περιηγητής σας δεν υποστηρίζει τα απαιτούμενα πρόσθετα κρυπτογράφησης", + "Not a valid Riot keyfile": "Μη έγκυρο αρχείο κλειδιού Riot", + "Authentication check failed: incorrect password?": "Αποτυχία ελέγχου πιστοποίησης: λανθασμένος κωδικός πρόσβασης;", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Η αλλαγή του κωδικού πρόσβασης θα επαναφέρει τα κλειδιά κρυπτογράφησης από άκρο σε άκρο σε όλες τις συσκευές, καθιστώντας το κρυπτογραφημένο ιστορικό συζητήσεων μη αναγνώσιμο, εκτός και αν εξάγετε πρώτα τα κλειδιά και τα εισαγάγετε ξανά στο δωμάτιο. Στο μέλλον αυτή η διαδικασία θα βελτιωθεί.", + "Claimed Ed25519 fingerprint key": "Απαιτήθηκε κλειδί αποτυπώματος Ed25519", + "Displays action": "Εμφανίζει την ενέργεια", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Η επαναφορά του κωδικού πρόσβασης θα επαναφέρει τα κλειδιά κρυπτογράφησης από άκρο σε άκρο σε όλες τις συσκευές, καθιστώντας το κρυπτογραφημένο ιστορικό συζητήσεων μη αναγνώσιμο, εκτός και αν εξάγετε πρώτα τα κλειδιά και τα εισαγάγετε ξανά στο δωμάτιο. Στο μέλλον αυτή η διαδικασία θα βελτιωθεί.", + "To use it, just wait for autocomplete results to load and tab through them.": "Για να το χρησιμοποιήσετε, απλά περιμένετε μέχρι να φορτωθούν τα αποτέλεσμα αυτόματης συμπλήρωσης. Έπειτα επιλέξτε ένα από αυτά χρησιμοποιώντας τον στηλοθέτη.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Δεν είναι δυνατό να εξακριβωθεί ότι η διεύθυνση αυτής της πρόσκλησης στάλθηκε σε αντιστοιχία με εκείνη που σχετίζεται με το λογαριασμό σας.", + "Use compact timeline layout": "Χρήση συμπαγούς διάταξης χρονολογίου", + "(could not connect media)": "(αδυναμία σύνδεσης με το πολυμέσο)", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: ΑΠΕΤΥΧΕ Η ΕΠΙΒΕΒΑΙΩΣΗ ΤΟΥ ΚΛΕΙΔΙΟΥ! Το κλειδί υπογραφής για τον χρήστη %(userId)s και συσκευή %(deviceId)s είναι \"%(fprint)s\" και δεν ταιριάζει με το δοσμένο κλειδί \"%(fingerprint)s\". Αυτό σημαίνει ότι η επικοινωνία σας μπορεί να έχει υποκλαπεί!", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Αυτή η διαδικασία σας επιτρέπει να εξαγάγετε τα κλειδιά για τα μηνύματα που έχετε λάβει σε κρυπτογραφημένα δωμάτια σε ένα τοπικό αρχείο. Στη συνέχεια, θα μπορέσετε να εισάγετε το αρχείο σε άλλο πρόγραμμα του Matrix, έτσι ώστε το πρόγραμμα να είναι σε θέση να αποκρυπτογραφήσει αυτά τα μηνύματα.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Το αρχείο εξαγωγής θα επιτρέψει σε οποιονδήποτε που μπορεί να το διαβάσει να αποκρυπτογραφήσει κρυπτογραφημένα μηνύματα που εσείς μπορείτε να δείτε, οπότε θα πρέπει να είστε προσεκτικοί για να το κρατήσετε ασφαλές. Για να βοηθήσετε με αυτό, θα πρέπει να εισαγάγετε ένα συνθηματικό, το οποία θα χρησιμοποιηθεί για την κρυπτογράφηση των εξαγόμενων δεδομένων. Η εισαγωγή δεδομένων θα είναι δυνατή χρησιμοποιώντας μόνο το ίδιο συνθηματικό.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Αυτή η διαδικασία σας επιτρέπει να εισαγάγετε κλειδιά κρυπτογράφησης που έχετε προηγουμένως εξάγει από άλλο πρόγραμμα του Matrix. Στη συνέχεια, θα μπορέσετε να αποκρυπτογραφήσετε τυχόν μηνύματα που το άλλο πρόγραμμα θα μπορούσε να αποκρυπτογραφήσει.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Το αρχείο εξαγωγής θα είναι προστατευμένο με συνθηματικό. Θα χρειαστεί να πληκτρολογήσετε το συνθηματικό εδώ για να αποκρυπτογραφήσετε το αρχείο.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Για να βεβαιωθείτε ότι είναι αξιόπιστη αυτή η συσκευή, επικοινωνήστε με τον κάτοχο της χρησιμοποιώντας άλλα μέσα (π.χ. προσωπικά ή μέσω τηλεφώνου) και ρωτήστε εάν το κλειδί που βλέπετε στις ρυθμίσεις χρήστη για αυτήν τη συσκευή ταιριάζει με το παρακάτω κλειδί:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Εάν ταιριάζει, πατήστε το κουμπί επιβεβαίωσης παρακάτω. Εάν όχι, τότε κάποιος άλλος παρακολουθεί αυτή τη συσκευή και ίσως θέλετε να πατήσετε το κουμπί της μαύρης λίστας.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Αν χρησιμοποιούσατε προηγουμένως μια πιο πρόσφατη έκδοση του Riot, η συνεδρία σας ίσως είναι μη συμβατή με αυτήν την έκδοση. Κλείστε αυτό το παράθυρο και επιστρέψτε στην πιο πρόσφατη έκδοση.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Αυτήν τη στιγμή βάζετε σε μαύρη λίστα μη επιβαιωμένες συσκευές. Για να στείλετε μηνύματα σε αυτές τις συσκευές, πρέπει να τις επιβεβαιώσετε.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Σας συνιστούμε να ολοκληρώσετε τη διαδικασία επαλήθευσης για κάθε συσκευή και να επιβεβαιώσετε ότι ανήκουν στον νόμιμο κάτοχό της, αλλά εάν προτιμάτε μπορείτε να στείλετε ξανά το μήνυμα χωρίς επαλήθευση.", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Θα μεταφερθείτε σε έναν ιστότοπου τρίτου για να πραγματοποιηθεί η πιστοποίηση του λογαριασμού σας με το %(integrationsUrl)s. Θα θέλατε να συνεχίσετε;", + "Disable Peer-to-Peer for 1:1 calls": "Απενεργοποίηση του ομότιμου (Peer-to-Peer) για κλήσεις έναν προς έναν", + "Do you want to set an email address?": "Θέλετε να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας;", + "This will allow you to reset your password and receive notifications.": "Αυτό θα σας επιτρέψει να επαναφέρετε τον κωδικό πρόσβαση σας και θα μπορείτε να λαμβάνετε ειδοποιήσεις.", + "Press to start a chat with someone": "Πατήστε για να ξεκινήσετε μια συνομιλία", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Δεν είστε σε κανένα δωμάτιο! Πατήστε για να δημιουργήσετε ένα δωμάτιο ή για να δείτε το ευρετήριο", + "To return to your account in future you need to set a password": "Για να επιστρέψετε στον λογαριασμό σας μελλοντικα πρέπει να ορίσετε έναν κωδικό πρόσβασης", + "Skip": "Παράβλεψη", + "Start verification": "Έναρξη επιβεβαίωσης", + "Share without verifying": "Κοινή χρήση χωρίς επιβεβαίωση", + "Ignore request": "Παράβλεψη αιτήματος", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Έχετε προσθέσει μια νέα συσκευή '%(displayName)s', η οποία ζητά κλειδιά κρυπτογράφησης.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Η ανεπιβεβαίωτη συσκευή σας '%(displayName)s' ζητά κλειδιά κρυπτογράφησης.", + "Encryption key request": "Αίτημα κλειδιού κρυπτογράφησης", + "Updates": "Ενημερώσεις", + "Check for update": "Έλεγχος για ενημέρωση", + "Fetching third party location failed": "Η λήψη τοποθεσίας απέτυχε", + "A new version of Riot is available.": "Μία νέα έκδοση του Riot είναι διαθέσιμη.", + "All notifications are currently disabled for all targets.": "Όλες οι ειδοποιήσεις είναι προς το παρόν απενεργοποιημένες για όλες τις συσκευές.", + "Uploading report": "Αποστολή αναφοράς", + "Sunday": "Κυριακή", + "Guests can join": "Επισκέπτες μπορούν να συνδεθούν", + "Failed to add tag %(tagName)s to room": "Δεν ήταν δυνατή η προσθήκη της ετικέτας %(tagName)s στο δωμάτιο", + "Notification targets": "Στόχοι ειδοποιήσεων", + "Failed to set direct chat tag": "Δεν ήταν δυνατός ο χαρακτηρισμός της συνομιλίας ως 1-προς-1", + "Today": "Σήμερα", + "Files": "Αρχεία", + "You are not receiving desktop notifications": "Δεν λαμβάνετε ειδοποιήσεις στην επιφάνεια εργασίας", + "Friday": "Παρασκευή", + "Update": "Ενημέρωση", + "Riot does not know how to join a room on this network": "To Riot δεν γνωρίζει πως να συνδεθεί σε δωμάτια που ανήκουν σ' αυτό το δίκτυο", + "Add an email address above to configure email notifications": "Προσθέστε μια διεύθυνση ηλεκτρονικής αλληλογραφίας στο παραπάνω πεδίο, για να έχετε τη δυνατότητα να λαμβάνετε ειδοποιήσεις", + "Expand panel": "Μεγιστοποίηση καρτέλας", + "On": "Ενεργό", + "Filter room names": "Φιλτράρισμα δωματίων", + "Changelog": "Αλλαγές", + "Waiting for response from server": "Αναμονή απάντησης από τον διακομιστή", + "Leave": "Αποχώρηση", + "Uploaded on %(date)s by %(user)s": "Απεστάλη στις %(date)s από %(user)s", + "Advanced notification settings": "Προχωρημένες ρυθμίσεις ειδοποιήσεων", + "delete the alias.": "διέγραψε το ψευδώνυμο.", + "To return to your account in future you need to set a password": "Για να επιστρέψετε στον λογαριασμό σας μελλοντικα πρέπει να ορίσετε έναν κωδικό πρόσβασης", + "Forget": "Παράλειψη", + "World readable": "Εμφανές σε όλους", + "Hide panel": "Απόκρυψη καρτέλας", + "You cannot delete this image. (%(code)s)": "Δεν μπορείτε να διαγράψετε αυτή την εικόνα. (%(code)s)", + "Cancel Sending": "Ακύρωση αποστολής", + "Warning": "Προειδοποίηση", + "This Room": "Στο δωμάτιο", + "The Home Server may be too old to support third party networks": "Ο διακομιστής μπορεί να είναι αρκετά παλιός για να υποστηρίζει δίκτυα τρίτων", + "Resend": "Αποστολή ξανά", + "Room not found": "Το δωμάτιο δεν βρέθηκε", + "Messages containing my display name": "Μηνύματα που περιέχουν το όνομα μου", + "Messages in one-to-one chats": "Μηνύματα σε 1-προς-1 συνομιλίες", + "Unavailable": "Μη διαθέσιμο", + "View Decrypted Source": "Προβολή του αποκρυπτογραφημένου κώδικα", + "Send": "Αποστολή", + "remove %(name)s from the directory.": "αφαίρεση του %(name)s από το ευρετήριο.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Οι ειδοποιήσεις για τις επόμενες λέξεις κλειδία ακολουθούν κανόνες που δεν είναι δυνατόν να εμφανιστούν εδώ:", + "Please set a password!": "Παρακαλούμε ορίστε έναν κωδικό πρόσβασης!", + "You have successfully set a password!": "Ο κωδικός πρόσβασης ορίστηκε επιτυχώς!", + "An error occurred whilst saving your email notification preferences.": "Ένα σφάλμα προέκυψε κατά την αποθήκευση των ρυθμίσεων σας.", + "Source URL": "Πηγαίο URL", + "Messages sent by bot": "Μηνύματα από bots", + "Members": "Μέλη", + "No update available.": "Δεν υπάρχει διαθέσιμη ενημέρωση.", + "Noisy": "Δυνατά", + "Failed to get protocol list from Home Server": "Δεν ήταν δυνατή η εύρεση των διαθέσιμων πρωτοκόλλων από το διακομιστή", + "Collecting app version information": "Συγκέντρωση πληροφοριών σχετικά με την έκδοση της εφαρμογής", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Διαγραφή του ψευδώνυμου %(alias)s και αφαίρεση του %(name)s από το ευρετήριο;", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Αυτό θα σας επιτρέψει να επιστρέψετε στον λογαριασμό σας αφού αποσυνδεθείτε και συνδεθείτε από άλλες συσκευές.", + "Keywords": "Λέξεις κλειδιά", + "Enable notifications for this account": "Ενεργοποίηση ειδοποιήσεων για τον λογαριασμό", + "Directory": "Ευρετήριο", + "Search for a room": "Αναζήτηση δωματίου", + "Messages containing keywords": "Μηνύματα που περιέχουν λέξεις κλειδιά", + "Error saving email notification preferences": "Σφάλμα κατά την αποθήκευση των προτιμήσεων", + "Tuesday": "Τρίτη", + "Enter keywords separated by a comma:": "Προσθέστε λέξεις κλειδιά χωρισμένες με κόμμα:", + "I understand the risks and wish to continue": "Κατανοώ του κινδύνους και επιθυμώ να συνεχίσω", + "Remove %(name)s from the directory?": "Αφαίρεση του %(name)s από το ευρετήριο;", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Το Riot χρησιμοποιεί αρκετά προχωρημένα χαρακτηριστικά των περιηγητών Ιστού, ορισμένα από τα οποία δεν είναι διαθέσιμα ή είναι σε πειραματικό στάδιο στον περιηγητή σας.", + "Unnamed room": "Ανώνυμο δωμάτιο", + "Remove from Directory": "Αφαίρεση από το ευρετήριο", + "Saturday": "Σάββατο", + "Remember, you can always set an email address in user settings if you change your mind.": "Να θυμάστε ότι μπορείτε πάντα να ορίσετε μια διεύθυνση ηλεκτρονικής αλληλογραφίας στις ρυθμίσεις χρήστη αν αλλάξετε γνώμη.", + "Direct Chat": "Απευθείας συνομιλία", + "The server may be unavailable or overloaded": "Ο διακομιστής είναι μη διαθέσιμος ή υπερφορτωμένος", + "Reject": "Απόρριψη", + "Failed to set Direct Message status of room": "Δεν ήταν δυνατός ο ορισμός της κατάστασης Direct Message του δωματίου", + "Monday": "Δευτέρα", + "All messages (noisy)": "Όλα τα μηνύματα (δυνατά)", + "Enable them now": "Ενεργοποίηση", + "Forward Message": "Προώθηση", + "Messages containing my user name": "Μηνύματα που περιέχουν το ψευδώνυμο μου", + "Collecting logs": "Συγκέντρωση πληροφοριών", + "more": "περισσότερα", + "Failed to get public room list": "Δεν ήταν δυνατή η λήψη της λίστας με τα δημόσια δωμάτια", + "(HTTP status %(httpStatus)s)": "(Κατάσταση HTTP %(httpStatus)s)", + "All Rooms": "Όλα τα δωμάτια", + "Wednesday": "Τετάρτη", + "Failed to update keywords": "Οι λέξεις κλειδιά δεν ενημερώθηκαν", + "Send logs": "Αποστολή πληροφοριών", + "All messages": "Όλα τα μηνύματα", + "Call invitation": "Πρόσκληση σε κλήση", + "Downloading update...": "Γίνεται λήψη της ενημέρωσης...", + "You have successfully set a password and an email address!": "Ο κωδικός πρόσβασης και η διεύθυνση ηλεκτρονικής αλληλογραφίας ορίστηκαν επιτυχώς!", + "What's new?": "Τι νέο υπάρχει;", + "Notify me for anything else": "Ειδοποίηση για οτιδήποτε άλλο", + "When I'm invited to a room": "Όταν με προσκαλούν σ' ένα δωμάτιο", + "Can't update user notification settings": "Δεν είναι δυνατή η ενημέρωση των ρυθμίσεων ειδοποίησης χρήστη", + "Notify for all other messages/rooms": "Ειδοποίηση για όλα τα υπόλοιπα μηνύματα/δωμάτια", + "Unable to look up room ID from server": "Δεν είναι δυνατή η εύρεση του ID για το δωμάτιο", + "Couldn't find a matching Matrix room": "Δεν βρέθηκε κάποιο δωμάτιο", + "Invite to this room": "Πρόσκληση σε αυτό το δωμάτιο", + "You cannot delete this message. (%(code)s)": "Δεν μπορείτε να διαγράψετε αυτό το μήνυμα. (%(code)s)", + "Thursday": "Πέμπτη", + "Search…": "Αναζήτηση…", + "Unhide Preview": "Προεπισκόπηση", + "Unable to join network": "Δεν είναι δυνατή η σύνδεση στο δίκτυο", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Ισως να έχετε κάνει τις ρυθμίσεις σε άλλη εφαρμογή εκτός του Riot. Δεν μπορείτε να τις αλλάξετε μέσω του Riot αλλά ισχύουν κανονικά", + "Sorry, your browser is not able to run Riot.": "Λυπούμαστε, αλλά ο περιηγητές σας δεν υποστηρίζεται από το Riot.", + "Messages in group chats": "Μηνύματα σε ομαδικές συνομιλίες", + "Yesterday": "Χθές", + "Error encountered (%(errorDetail)s).": "Παρουσιάστηκε σφάλμα (%(errorDetail)s).", + "Low Priority": "Χαμηλή προτεραιότητα", + "What's New": "Τι νέο υπάρχει", + "Set Password": "Ορισμός κωδικού πρόσβασης", + "Enable audible notifications in web client": "Ενεργοποίηση ηχητικών ειδοποιήσεων", + "Off": "Ανενεργό", + "#example": "#παράδειγμα", + "Mentions only": "Μόνο αναφορές", + "Failed to remove tag %(tagName)s from room": "Δεν ήταν δυνατή η διαγραφή της ετικέτας %(tagName)s από το δωμάτιο", + "You can now return to your account after signing out, and sign in on other devices.": "Μπορείτε να επιστρέψετε στον λογαριασμό σας αφού αποσυνδεθείτε και συνδεθείτε από άλλες συσκευές.", + "Enable desktop notifications": "Ενεργοποίηση ειδοποιήσεων στην επιφάνεια εργασίας", + "Enable email notifications": "Ενεργοποίηση ειδοποιήσεων μέσω μηνυμάτων ηλ. αλληλογραφίας", + "Login": "Σύνδεση", + "No rooms to show": "Δεν υπάρχουν δωμάτια για εμφάνιση", + "Download this file": "Λήψη αρχείου", + "Failed to change settings": "Δεν ήταν δυνατή η αλλαγή των ρυθμίσεων", + "View Source": "Προβολή κώδικα", + "Unable to fetch notification target list": "Δεν ήταν δυνατή η εύρεση στόχων για τις ειδοποιήσεις", + "Quote": "Παράθεση", + "Collapse panel": "Ελαχιστοποίηση καρτέλας", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Με τον τρέχον περιηγητή, η εμφάνιση και η αίσθηση της εφαρμογής ενδέχεται να είναι εντελώς εσφαλμένη και ορισμένες ή όλες οι λειτουργίες ενδέχεται να μην λειτουργούν. Εάν θέλετε να το δοκιμάσετε ούτως ή άλλως μπορείτε να συνεχίσετε, αλλά είστε μόνοι σας σε ό, τι αφορά τα προβλήματα που μπορεί να αντιμετωπίσετε!", + "Checking for an update...": "Γίνεται έλεγχος για ενημέρωση...", + "There are advanced notifications which are not shown here": "Υπάρχουν προχωρημένες ειδοποιήσεις οι οποίες δεν εμφανίζονται εδώ", + "Your identity server's URL": "Το URL του διακομιστή ταυτοποίησής σας", + "The platform you're on": "Η πλατφόρμα στην οποία βρίσκεστε", + "The version of Riot.im": "Η έκδοση του Riot.im", + "Your language of choice": "Η γλώσσα επιλογής σας", + "Your homeserver's URL": "Το URL του διακομιστή σας", + "Every page you use in the app": "Κάθε σελίδα που χρησιμοποιείτε στην εφαρμογή", + "e.g. ": "π.χ. ", + "Your device resolution": "Η ανάλυση της συσκευής σας", + "The information being sent to us to help make Riot.im better includes:": "Οι πληροφορίες που στέλνονται σε εμάς με σκοπό την βελτίωση του Riot.im περιλαμβάνουν:", + "Call Failed": "Η κλήση απέτυχε", + "Whether or not you're logged in (we don't record your user name)": "Εάν είστε συνδεδεμένος/η ή όχι (δεν καταγράφουμε το όνομα χρήστη σας)", + "e.g. %(exampleValue)s": "π.χ. %(exampleValue)s", + "Review Devices": "Ανασκόπηση συσκευών", + "Call Anyway": "Κλήση όπως και να 'χει", + "Answer Anyway": "Απάντηση όπως και να 'χει", + "Call": "Κλήση", + "Answer": "Απάντηση", + "AM": "ΠΜ", + "PM": "ΜΜ", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "Who would you like to add to this community?": "Ποιον/α θα θέλατε να προσθέσετε σε αυτή την κοινότητα;", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Προσοχή: κάθε άτομο που προσθέτετε στην κοινότητα θε είναι δημοσίως ορατό σε οποιονδήποτε γνωρίζει το αναγνωριστικό της κοινότητας", + "Invite new community members": "Προσκαλέστε νέα μέλη στην κοινότητα", + "Name or matrix ID": "Όνομα ή αναγνωριστικό του matrix", + "Invite to Community": "Πρόσκληση στην κοινότητα", + "Which rooms would you like to add to this community?": "Ποια δωμάτια θα θέλατε να προσθέσετε σε αυτή την κοινότητα;", + "Add rooms to the community": "Προσθήκη δωματίων στην κοινότητα", + "Add to community": "Προσθήκη στην κοινότητα", + "Failed to invite the following users to %(groupId)s:": "Αποτυχία πρόσκλησης των ακόλουθων χρηστών στο %(groupId)s :", + "Failed to invite users to community": "Αποτυχία πρόσκλησης χρηστών στην κοινότητα", + "Failed to invite users to %(groupId)s": "Αποτυχία πρόσκλησης χρηστών στο %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Αποτυχία προσθήκης των ακόλουθων δωματίων στο %(groupId)s:", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Υπάρχουν άγνωστες συσκευές στο δωμάτιο: εάν συνεχίσετε χωρίς να τις επιβεβαιώσετε, θα μπορούσε κάποιος να κρυφακούει την κλήση σας.", + "Show these rooms to non-members on the community page and room list?": "Εμφάνιση αυτών των δωματίων σε μη-μέλη στην σελίδα της κοινότητας και στη λίστα δωματίων;", + "Room name or alias": "Όνομα η ψευδώνυμο δωματίου", + "Restricted": "Περιορισμένο", + "Unable to create widget.": "Αδυναμία δημιουργίας widget.", + "Reload widget": "Ανανέωση widget", + "You are not in this room.": "Δεν είστε μέλος αυτού του δωματίου.", + "You do not have permission to do that in this room.": "Δεν έχετε την άδεια να το κάνετε αυτό σε αυτό το δωμάτιο.", + "You are now ignoring %(userId)s": "Τώρα αγνοείτε τον/την %(userId)s", + "You are no longer ignoring %(userId)s": "Δεν αγνοείτε πια τον/την %(userId)s", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "Ο/Η %(oldDisplayName)s άλλαξε το εμφανιζόμενο όνομά του/της σε %(displayName)s.", + "%(senderName)s changed the pinned messages for the room.": "Ο/Η %(senderName)s άλλαξε τα καρφιτσωμένα μηνύματα του δωματίου.", + "%(widgetName)s widget modified by %(senderName)s": "Έγινε αλλαγή στο widget %(widgetName)s από τον/την %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "Προστέθηκε το widget %(widgetName)s από τον/την %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Το widget %(widgetName)s αφαιρέθηκε από τον/την %(senderName)s", + "%(names)s and %(count)s others are typing": { + "other": "Ο/Η %(names)s και άλλοι/ες %(count)s πληκτρολογούν", + "one": "Ο/Η %(names)s και άλλος ένας πληκτρολογούν" + }, + "Message Pinning": "Καρφίτσωμα Μηνυμάτων", + "Hide avatar changes": "Απόκρυψη αλλαγών εικονιδίων χρηστών", + "Hide display name changes": "Απόκρυψη αλλαγών εμφανιζόμενων ονομάτων", + "Hide avatars in user and room mentions": "Απόκρυψη εικονιδίων στις αναφορές χρηστών και δωματίων", + "Enable URL previews for this room (only affects you)": "Ενεργοποίηση προεπισκόπισης URL για αυτό το δωμάτιο (επηρεάζει μόνο εσάς)", + "Delete %(count)s devices": { + "other": "Διαγραφή %(count)s συσκευών", + "one": "Διαγραφή συσκευής" + }, + "Select devices": "Επιλογή συσκευών", + "Cannot add any more widgets": "Δεν είναι δυνατή η προσθήκη άλλων widget", + "The maximum permitted number of widgets have already been added to this room.": "Ο μέγιστος επιτρεπτός αριθμός widget έχει ήδη προστεθεί σε αυτό το δωμάτιο.", + "Add a widget": "Προσθήκη widget", + "%(senderName)s sent an image": "Ο/Η %(senderName)s έστειλε μία εικόνα", + "%(senderName)s sent a video": "Ο/Η %(senderName)s έστειλε ένα βίντεο", + "%(senderName)s uploaded a file": "Ο/Η %(senderName)s αναφόρτωσε ένα αρχείο", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Εάν οι άλλες συσκευές σας δεν έχουν το κλειδί για αυτό το μήνυμα, τότε δεν θα μπορείτε να το αποκρυπτογραφήσετε.", + "Disinvite this user?": "Ακύρωση πρόσκλησης αυτού του χρήστη;", + "Mention": "Αναφορά", + "Invite": "Πρόσκληση", + "User Options": "Επιλογές Χρήστη", + "Send an encrypted reply…": "Αποστολή κρυπτογραφημένης απάντησης…", + "Send a reply (unencrypted)…": "Αποστολή απάντησης (μη κρυπτογραφημένης)…", + "Send an encrypted message…": "Αποστολή κρυπτογραφημένου μηνύματος…", + "Send a message (unencrypted)…": "Αποστολή μηνύματος (μη κρυπτογραφημένου)…", + "Unable to reply": "Αδυναμία απάντησης", + "Unpin Message": "Ξεκαρφίτσωμα μηνύματος", + "Jump to message": "Πηγαίντε στο μήνυμα", + "No pinned messages.": "Κανένα καρφιτσωμένο μήνυμα.", + "Loading...": "Φόρτωση...", + "Pinned Messages": "Καρφιτσωμένα Μηνύματα", + "%(duration)ss": "%(duration)sδ", + "%(duration)sm": "%(duration)sλ", + "%(duration)sh": "%(duration)sω", + "%(duration)sd": "%(duration)sμ", + "Online for %(duration)s": "Σε σύνδεση για %(duration)s", + "Idle for %(duration)s": "Αδρανής για %(duration)s", + "Offline for %(duration)s": "Εκτός σύνδεσης για %(duration)s", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Διαβάστηκε από τον/την %(displayName)s (%(userName)s) στις %(dateTime)s", + "Room Notification": "Ειδοποίηση Δωματίου", + "Notify the whole room": "Ειδοποιήστε όλο το δωμάτιο", + "Sets the room topic": "Ορίζει το θέμα του δωματίου", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s μέσω %(browserName)s σε %(osName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop σε %(platformName)s", + "Unknown device": "Άγνωστη συσκευή", + "You need to be using HTTPS to place a screen-sharing call.": "Απαιτείται η χρήση HTTPS για το διαμοιρασμό της επιφάνειας εργασίας μέσω κλήσης.", + "Riot is not supported on mobile web. Install the app?": "Το Riot δεν υποστηρίζεται από περιηγητές κινητών. Θέλετε να εγκαταστήσετε την εφαρμογή;", + "Welcome to Riot.im": "Καλώς ήλθατε στο Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Αποκεντρωμένη, κρυπτογραφημένη συνομιλία & συνεργασία με τη βοήθεια του [matrix]", + "Search the room directory": "Αναζήτηση του ευρετηρίου δωματίων", + "Chat with Riot Bot": "Συνομιλία με το Riot Bot", + "Get started with some tips from Riot Bot!": "Ξεκινήστε με μερικές συμβουλές από το Riot Bot!", + "General discussion about Matrix and Riot": "Γενική συζήτηση σχετικά με Matrix και Riot", + "Discussion of all things Matrix!": "Συζήτηση για όλα τα πράγματα του Matrix!", + "Riot/Web & Desktop chat": "Συζήτηση για το Riot/Web & Desktop", + "Riot/iOS & matrix-ios-sdk chat": "Συζήτηση για το Riot/iOS & matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Συζήτηση για το Riot/Android & matrix-android-sdk", + "Matrix technical discussions": "Τεχνικές συζητήσεις σχετικά με το Matrix", + "Running Matrix services": "Χρησιμοποιώντας τις υπηρεσίες του Matrix", + "Community-run support for Synapse": "Κοινοτική υποστήριξη για το Synapse", + "Admin support for Dendrite": "Υποστήριξη διαχειριστή για το Dendrite", + "Announcements about Synapse releases": "Ανακοινώσεις σχετικά με τις εκδόσεις του Synapse", + "Support for those using and running matrix-appservice-irc": "Υποστήριξη για τους χρήστες του matrix-appservice-irc", + "Building services on Matrix": "Ανάπτυξη υπηρεσιών στο Matrix", + "Support for those using the Matrix spec": "Υποστήριξη για τους χρήστες που χρησιμοποιούν το Matrix spec", + "Design and implementation of E2E in Matrix": "Σχεδιασμός και υλοποίηση του E2E στο Matrix", + "Implementing VR services with Matrix": "Υλοποίηση υπηρεσίων VR με το Matrix", + "Implementing VoIP services with Matrix": "Υλοποίηση υπηρεσίων VoIP με το Matrix", + "Discussion of the Identity Service API": "Συζήτηση σχετικά με το Identity Service API", + "Contributing code to Matrix and Riot": "Συνεισφορά κώδικα στο Matrix και στο Riot", + "Dev chat for the Riot/Web dev team": "Συζήτηση με την ομάδα ανάπτυξης του Riot/Web", + "Dev chat for the Dendrite dev team": "Συζήτηση με την ομάδα ανάπτυξης του Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Αρκετά δωμάτια υπάρχουν ήδη στο Matrix, συνδεδεμένα σε υπάρχοντα δίκτυα (Slack, IRC, Gitter κ.λπ) ή αυτόνομα. Ρίξτε μια ματιά στο ευρετήριο!", + "Support for those using, running and writing other bridges": "Υποστήριξη για τους χρήστες που χρησιμοποιούν ή αναπτύσσουν εφαρμογές ενσωμάτωσης για το Matrix", + "Co-ordination for Riot translators": "Συντονισμός για μεταφραστές του Riot", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Μπορείτε να χρησιμοποιήσετε τις προσαρμοσμένες ρυθμίσεις διακομιστή για να συνδεθείτε σε άλλους διακομιστές Matrix δίνοντας ένα διαφορετικό URL διακομιστή.
Αυτό σας επιτρέπει να χρησιμοποιήσετε το Riot με έναν υπάρχοντα λογαριασμό Matrix σε έναν διαφορετικό διακομιστή.

Μπορείτε επίσης να ορίσετε έναν προσαρμοσμένο διακομιστή ταυτοποίησης αλλά δεν θα μπορείτε να προσκαλέσετε χρήστες ή να προσκληθείτε εσείς μέσω διεύθυνσης ηλεκτρονικού ταχυδρομίου." +} \ No newline at end of file diff --git a/riot/i18n/en_EN.json b/riot/i18n/en_EN.json new file mode 100644 index 0000000..d30bf49 --- /dev/null +++ b/riot/i18n/en_EN.json @@ -0,0 +1,1383 @@ +{ + "This email address is already in use": "This email address is already in use", + "This phone number is already in use": "This phone number is already in use", + "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", + "The platform you're on": "The platform you're on", + "The version of Riot.im": "The version of Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Whether or not you're logged in (we don't record your user name)", + "Your language of choice": "Your language of choice", + "Which officially provided instance you are using, if any": "Which officially provided instance you are using, if any", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Whether or not you're using the Richtext mode of the Rich Text Editor", + "Your homeserver's URL": "Your homeserver's URL", + "Your identity server's URL": "Your identity server's URL", + "e.g. %(exampleValue)s": "e.g. %(exampleValue)s", + "Every page you use in the app": "Every page you use in the app", + "e.g. ": "e.g. ", + "Your User Agent": "Your User Agent", + "Your device resolution": "Your device resolution", + "Analytics": "Analytics", + "The information being sent to us to help make Riot.im better includes:": "The information being sent to us to help make Riot.im better includes:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.", + "Call Failed": "Call Failed", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.", + "Review Devices": "Review Devices", + "Call Anyway": "Call Anyway", + "Answer Anyway": "Answer Anyway", + "Call": "Call", + "Answer": "Answer", + "Call Timeout": "Call Timeout", + "The remote side failed to pick up": "The remote side failed to pick up", + "Unable to capture screen": "Unable to capture screen", + "Existing Call": "Existing Call", + "You are already in a call.": "You are already in a call.", + "VoIP is unsupported": "VoIP is unsupported", + "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", + "You cannot place a call with yourself.": "You cannot place a call with yourself.", + "Could not connect to the integration server": "Could not connect to the integration server", + "A conference call could not be started because the intgrations server is not available": "A conference call could not be started because the intgrations server is not available", + "Call in Progress": "Call in Progress", + "A call is currently being placed!": "A call is currently being placed!", + "A call is already in progress!": "A call is already in progress!", + "Permission Required": "Permission Required", + "You do not have permission to start a conference call in this room": "You do not have permission to start a conference call in this room", + "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", + "Upload Failed": "Upload Failed", + "Failure to create room": "Failure to create room", + "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", + "Send anyway": "Send anyway", + "Send": "Send", + "Sun": "Sun", + "Mon": "Mon", + "Tue": "Tue", + "Wed": "Wed", + "Thu": "Thu", + "Fri": "Fri", + "Sat": "Sat", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "May", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Oct", + "Nov": "Nov", + "Dec": "Dec", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Who would you like to add to this community?": "Who would you like to add to this community?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID", + "Invite new community members": "Invite new community members", + "Name or matrix ID": "Name or matrix ID", + "Invite to Community": "Invite to Community", + "Which rooms would you like to add to this community?": "Which rooms would you like to add to this community?", + "Show these rooms to non-members on the community page and room list?": "Show these rooms to non-members on the community page and room list?", + "Add rooms to the community": "Add rooms to the community", + "Room name or alias": "Room name or alias", + "Add to community": "Add to community", + "Failed to invite the following users to %(groupId)s:": "Failed to invite the following users to %(groupId)s:", + "Failed to invite users to community": "Failed to invite users to community", + "Failed to invite users to %(groupId)s": "Failed to invite users to %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Failed to add the following rooms to %(groupId)s:", + "Unnamed Room": "Unnamed Room", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", + "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", + "Unable to enable Notifications": "Unable to enable Notifications", + "This email address was not found": "This email address was not found", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", + "Registration Required": "Registration Required", + "You need to register to do this. Would you like to register now?": "You need to register to do this. Would you like to register now?", + "Register": "Register", + "Default": "Default", + "Restricted": "Restricted", + "Moderator": "Moderator", + "Admin": "Admin", + "Start a chat": "Start a chat", + "Who would you like to communicate with?": "Who would you like to communicate with?", + "Email, name or matrix ID": "Email, name or matrix ID", + "Start Chat": "Start Chat", + "Invite new room members": "Invite new room members", + "Who would you like to add to this room?": "Who would you like to add to this room?", + "Send Invites": "Send Invites", + "Failed to invite user": "Failed to invite user", + "Operation failed": "Operation failed", + "Failed to invite": "Failed to invite", + "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", + "You need to be logged in.": "You need to be logged in.", + "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", + "Unable to create widget.": "Unable to create widget.", + "Missing roomId.": "Missing roomId.", + "Failed to send request.": "Failed to send request.", + "This room is not recognised.": "This room is not recognised.", + "Power level must be positive integer.": "Power level must be positive integer.", + "You are not in this room.": "You are not in this room.", + "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", + "Missing room_id in request": "Missing room_id in request", + "Room %(roomId)s not visible": "Room %(roomId)s not visible", + "Missing user_id in request": "Missing user_id in request", + "Usage": "Usage", + "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", + "/ddg is not a command": "/ddg is not a command", + "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", + "Changes your display nickname": "Changes your display nickname", + "Changes colour scheme of current room": "Changes colour scheme of current room", + "Sets the room topic": "Sets the room topic", + "Invites user with given id to current room": "Invites user with given id to current room", + "Joins room with given alias": "Joins room with given alias", + "Leave room": "Leave room", + "Unrecognised room alias:": "Unrecognised room alias:", + "Kicks user with given id": "Kicks user with given id", + "Bans user with given id": "Bans user with given id", + "Unbans user with given id": "Unbans user with given id", + "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you", + "Ignored user": "Ignored user", + "You are now ignoring %(userId)s": "You are now ignoring %(userId)s", + "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward", + "Unignored user": "Unignored user", + "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s", + "Define the power level of a user": "Define the power level of a user", + "Deops user with given id": "Deops user with given id", + "Opens the Developer Tools dialog": "Opens the Developer Tools dialog", + "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", + "Unknown (user, device) pair:": "Unknown (user, device) pair:", + "Device already verified!": "Device already verified!", + "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!", + "Verified key": "Verified key", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", + "Displays action": "Displays action", + "Forces the current outbound group session in an encrypted room to be discarded": "Forces the current outbound group session in an encrypted room to be discarded", + "Unrecognised command:": "Unrecognised command:", + "Reason": "Reason", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s changed their display name to %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", + "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", + "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", + "VoIP conference started.": "VoIP conference started.", + "%(targetName)s joined the room.": "%(targetName)s joined the room.", + "VoIP conference finished.": "VoIP conference finished.", + "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", + "%(targetName)s left the room.": "%(targetName)s left the room.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s added %(addedAddresses)s as addresses for this room.", + "one": "%(senderName)s added %(addedAddresses)s as an address for this room." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s removed %(removedAddresses)s as addresses for this room.", + "one": "%(senderName)s removed %(removedAddresses)s as an address for this room." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s set the main address for this room to %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s removed the main address for this room.", + "Someone": "Someone", + "(not supported by this browser)": "(not supported by this browser)", + "%(senderName)s answered the call.": "%(senderName)s answered the call.", + "(could not connect media)": "(could not connect media)", + "(no answer)": "(no answer)", + "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s ended the call.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room.", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s widget modified by %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", + "%(displayName)s is typing": "%(displayName)s is typing", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s and %(count)s others are typing", + "one": "%(names)s and one other is typing" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", + "This homeserver has hit its Monthly Active User limit.": "This homeserver has hit its Monthly Active User limit.", + "This homeserver has exceeded one of its resource limits.": "This homeserver has exceeded one of its resource limits.", + "Please contact your service administrator to continue using the service.": "Please contact your service administrator to continue using the service.", + "Unable to connect to Homeserver. Retrying...": "Unable to connect to Homeserver. Retrying...", + "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", + "Not a valid Riot keyfile": "Not a valid Riot keyfile", + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Sorry, your homeserver is too old to participate in this room.": "Sorry, your homeserver is too old to participate in this room.", + "Please contact your homeserver administrator.": "Please contact your homeserver administrator.", + "Failed to join room": "Failed to join room", + "Message Pinning": "Message Pinning", + "Increase performance by only loading room members on first view": "Increase performance by only loading room members on first view", + "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", + "Use compact timeline layout": "Use compact timeline layout", + "Hide removed messages": "Hide removed messages", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)", + "Hide avatar changes": "Hide avatar changes", + "Hide display name changes": "Hide display name changes", + "Hide read receipts": "Hide read receipts", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", + "Always show message timestamps": "Always show message timestamps", + "Autoplay GIFs and videos": "Autoplay GIFs and videos", + "Always show encryption icons": "Always show encryption icons", + "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", + "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", + "Disable big emoji in chat": "Disable big emoji in chat", + "Don't send typing notifications": "Don't send typing notifications", + "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", + "Mirror local video feed": "Mirror local video feed", + "Disable Community Filter Panel": "Disable Community Filter Panel", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", + "Send analytics data": "Send analytics data", + "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", + "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", + "Enable inline URL previews by default": "Enable inline URL previews by default", + "Enable URL previews for this room (only affects you)": "Enable URL previews for this room (only affects you)", + "Enable URL previews by default for participants in this room": "Enable URL previews by default for participants in this room", + "Room Colour": "Room Colour", + "Enable widget screenshots on supported widgets": "Enable widget screenshots on supported widgets", + "Show empty room list headings": "Show empty room list headings", + "Collecting app version information": "Collecting app version information", + "Collecting logs": "Collecting logs", + "Uploading report": "Uploading report", + "Waiting for response from server": "Waiting for response from server", + "Messages containing my display name": "Messages containing my display name", + "Messages containing my user name": "Messages containing my user name", + "Messages in one-to-one chats": "Messages in one-to-one chats", + "Messages in group chats": "Messages in group chats", + "When I'm invited to a room": "When I'm invited to a room", + "Call invitation": "Call invitation", + "Messages sent by bot": "Messages sent by bot", + "Active call (%(roomName)s)": "Active call (%(roomName)s)", + "unknown caller": "unknown caller", + "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", + "Incoming video call from %(name)s": "Incoming video call from %(name)s", + "Incoming call from %(name)s": "Incoming call from %(name)s", + "Decline": "Decline", + "Accept": "Accept", + "Error": "Error", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", + "Incorrect verification code": "Incorrect verification code", + "Enter Code": "Enter Code", + "Submit": "Submit", + "Phone": "Phone", + "Add phone number": "Add phone number", + "Add": "Add", + "Failed to upload profile picture!": "Failed to upload profile picture!", + "Upload new:": "Upload new:", + "No display name": "No display name", + "New passwords don't match": "New passwords don't match", + "Passwords can't be empty": "Passwords can't be empty", + "Warning!": "Warning!", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "Continue": "Continue", + "Export E2E room keys": "Export E2E room keys", + "Do you want to set an email address?": "Do you want to set an email address?", + "Current password": "Current password", + "Password": "Password", + "New Password": "New Password", + "Confirm password": "Confirm password", + "Change Password": "Change Password", + "Your home server does not support device management.": "Your home server does not support device management.", + "Unable to load device list": "Unable to load device list", + "Authentication": "Authentication", + "Delete %(count)s devices": { + "other": "Delete %(count)s devices", + "one": "Delete device" + }, + "Device ID": "Device ID", + "Device Name": "Device Name", + "Last seen": "Last seen", + "Select devices": "Select devices", + "Failed to set display name": "Failed to set display name", + "Disable Notifications": "Disable Notifications", + "Enable Notifications": "Enable Notifications", + "Error saving email notification preferences": "Error saving email notification preferences", + "An error occurred whilst saving your email notification preferences.": "An error occurred whilst saving your email notification preferences.", + "Keywords": "Keywords", + "Enter keywords separated by a comma:": "Enter keywords separated by a comma:", + "OK": "OK", + "Failed to change settings": "Failed to change settings", + "Can't update user notification settings": "Can't update user notification settings", + "Failed to update keywords": "Failed to update keywords", + "Messages containing keywords": "Messages containing keywords", + "Notify for all other messages/rooms": "Notify for all other messages/rooms", + "Notify me for anything else": "Notify me for anything else", + "Enable notifications for this account": "Enable notifications for this account", + "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", + "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", + "Enable email notifications": "Enable email notifications", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:", + "Unable to fetch notification target list": "Unable to fetch notification target list", + "Notification targets": "Notification targets", + "Advanced notification settings": "Advanced notification settings", + "There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply", + "Enable desktop notifications": "Enable desktop notifications", + "Show message in desktop notification": "Show message in desktop notification", + "Enable audible notifications in web client": "Enable audible notifications in web client", + "Off": "Off", + "On": "On", + "Noisy": "Noisy", + "Invalid alias format": "Invalid alias format", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", + "Invalid address format": "Invalid address format", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", + "not specified": "not specified", + "not set": "not set", + "Remote addresses for this room:": "Remote addresses for this room:", + "Addresses": "Addresses", + "The main address for this room is": "The main address for this room is", + "Local addresses for this room:": "Local addresses for this room:", + "This room has no local addresses": "This room has no local addresses", + "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", + "Invalid community ID": "Invalid community ID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' is not a valid community ID", + "Flair": "Flair", + "Showing flair for these communities:": "Showing flair for these communities:", + "This room is not showing flair for any communities": "This room is not showing flair for any communities", + "New community ID (e.g. +foo:%(localDomain)s)": "New community ID (e.g. +foo:%(localDomain)s)", + "You have enabled URL previews by default.": "You have enabled URL previews by default.", + "You have disabled URL previews by default.": "You have disabled URL previews by default.", + "URL previews are enabled by default for participants in this room.": "URL previews are enabled by default for participants in this room.", + "URL previews are disabled by default for participants in this room.": "URL previews are disabled by default for participants in this room.", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.", + "URL Previews": "URL Previews", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.", + "Cannot add any more widgets": "Cannot add any more widgets", + "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", + "Add a widget": "Add a widget", + "Drop File Here": "Drop File Here", + "Drop file here to upload": "Drop file here to upload", + " (unsupported)": " (unsupported)", + "Join as voice or video.": "Join as voice or video.", + "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", + "This event could not be displayed": "This event could not be displayed", + "%(senderName)s sent an image": "%(senderName)s sent an image", + "%(senderName)s sent a video": "%(senderName)s sent a video", + "%(senderName)s uploaded a file": "%(senderName)s uploaded a file", + "Options": "Options", + "Your key share request has been sent - please check your other devices for key share requests.": "Your key share request has been sent - please check your other devices for key share requests.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "If your other devices do not have the key for this message you will not be able to decrypt them.", + "Key request sent.": "Key request sent.", + "Re-request encryption keys from your other devices.": "Re-request encryption keys from your other devices.", + "Undecryptable": "Undecryptable", + "Encrypting": "Encrypting", + "Encrypted, not sent": "Encrypted, not sent", + "Encrypted by a verified device": "Encrypted by a verified device", + "Encrypted by an unverified device": "Encrypted by an unverified device", + "Unencrypted message": "Unencrypted message", + "Please select the destination room for this message": "Please select the destination room for this message", + "Blacklisted": "Blacklisted", + "Verified": "Verified", + "Unverified": "Unverified", + "device id: ": "device id: ", + "Disinvite": "Disinvite", + "Kick": "Kick", + "Disinvite this user?": "Disinvite this user?", + "Kick this user?": "Kick this user?", + "Failed to kick": "Failed to kick", + "Unban": "Unban", + "Ban": "Ban", + "Unban this user?": "Unban this user?", + "Ban this user?": "Ban this user?", + "Failed to ban user": "Failed to ban user", + "Demote yourself?": "Demote yourself?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.", + "Demote": "Demote", + "Failed to mute user": "Failed to mute user", + "Failed to toggle moderator status": "Failed to toggle moderator status", + "Failed to change power level": "Failed to change power level", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", + "Are you sure?": "Are you sure?", + "No devices with registered encryption keys": "No devices with registered encryption keys", + "Devices": "Devices", + "Unignore": "Unignore", + "Ignore": "Ignore", + "Jump to read receipt": "Jump to read receipt", + "Mention": "Mention", + "Invite": "Invite", + "Share Link to User": "Share Link to User", + "User Options": "User Options", + "Direct chats": "Direct chats", + "Unmute": "Unmute", + "Mute": "Mute", + "Revoke Moderator": "Revoke Moderator", + "Make Moderator": "Make Moderator", + "Admin Tools": "Admin Tools", + "Level:": "Level:", + "and %(count)s others...": { + "other": "and %(count)s others...", + "one": "and one other..." + }, + "Invited": "Invited", + "Filter room members": "Filter room members", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "bold": "bold", + "italic": "italic", + "deleted": "deleted", + "underlined": "underlined", + "inline-code": "inline-code", + "block-quote": "block-quote", + "bulleted-list": "bulleted-list", + "numbered-list": "numbered-list", + "Attachment": "Attachment", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "At this time it is not possible to reply with a file so this will be sent without being a reply.", + "Upload Files": "Upload Files", + "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", + "Encrypted room": "Encrypted room", + "Unencrypted room": "Unencrypted room", + "Hangup": "Hangup", + "Voice call": "Voice call", + "Video call": "Video call", + "Upload file": "Upload file", + "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", + "Send an encrypted reply…": "Send an encrypted reply…", + "Send a reply (unencrypted)…": "Send a reply (unencrypted)…", + "Send an encrypted message…": "Send an encrypted message…", + "Send a message (unencrypted)…": "Send a message (unencrypted)…", + "This room has been replaced and is no longer active.": "This room has been replaced and is no longer active.", + "The conversation continues here.": "The conversation continues here.", + "You do not have permission to post to this room": "You do not have permission to post to this room", + "Turn Markdown on": "Turn Markdown on", + "Turn Markdown off": "Turn Markdown off", + "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", + "Server error": "Server error", + "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", + "Command error": "Command error", + "Unable to reply": "Unable to reply", + "At this time it is not possible to reply with an emote.": "At this time it is not possible to reply with an emote.", + "Markdown is disabled": "Markdown is disabled", + "Markdown is enabled": "Markdown is enabled", + "No pinned messages.": "No pinned messages.", + "Loading...": "Loading...", + "Pinned Messages": "Pinned Messages", + "Unpin Message": "Unpin Message", + "Jump to message": "Jump to message", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "Online for %(duration)s", + "Idle for %(duration)s": "Idle for %(duration)s", + "Offline for %(duration)s": "Offline for %(duration)s", + "Unknown for %(duration)s": "Unknown for %(duration)s", + "Online": "Online", + "Idle": "Idle", + "Offline": "Offline", + "Unknown": "Unknown", + "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Seen by %(displayName)s (%(userName)s) at %(dateTime)s", + "Replying": "Replying", + "No rooms to show": "No rooms to show", + "Unnamed room": "Unnamed room", + "World readable": "World readable", + "Guests can join": "Guests can join", + "Failed to set avatar.": "Failed to set avatar.", + "Save": "Save", + "(~%(count)s results)": { + "other": "(~%(count)s results)", + "one": "(~%(count)s result)" + }, + "Join Room": "Join Room", + "Upload avatar": "Upload avatar", + "Remove avatar": "Remove avatar", + "Settings": "Settings", + "Forget room": "Forget room", + "Search": "Search", + "Share room": "Share room", + "Show panel": "Show panel", + "Drop here to favourite": "Drop here to favourite", + "Drop here to tag direct chat": "Drop here to tag direct chat", + "Drop here to restore": "Drop here to restore", + "Drop here to demote": "Drop here to demote", + "Drop here to tag %(section)s": "Drop here to tag %(section)s", + "Press to start a chat with someone": "Press to start a chat with someone", + "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", + "Community Invites": "Community Invites", + "Invites": "Invites", + "Favourites": "Favourites", + "People": "People", + "Rooms": "Rooms", + "Low priority": "Low priority", + "You have no historical rooms": "You have no historical rooms", + "Historical": "Historical", + "System Alerts": "System Alerts", + "Joining room...": "Joining room...", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", + "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", + "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", + "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", + "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", + "Reason: %(reasonText)s": "Reason: %(reasonText)s", + "Rejoin": "Rejoin", + "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", + "You have been kicked from this room by %(userName)s.": "You have been kicked from this room by %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", + "You have been banned from this room by %(userName)s.": "You have been banned from this room by %(userName)s.", + "This room": "This room", + "%(roomName)s does not exist.": "%(roomName)s does not exist.", + "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", + "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", + "You are trying to access a room.": "You are trying to access a room.", + "Click here to join the discussion!": "Click here to join the discussion!", + "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", + "To change the room's avatar, you must be a": "To change the room's avatar, you must be a", + "To change the room's name, you must be a": "To change the room's name, you must be a", + "To change the room's main address, you must be a": "To change the room's main address, you must be a", + "To change the room's history visibility, you must be a": "To change the room's history visibility, you must be a", + "To change the permissions in the room, you must be a": "To change the permissions in the room, you must be a", + "To change the topic, you must be a": "To change the topic, you must be a", + "To modify widgets in the room, you must be a": "To modify widgets in the room, you must be a", + "Failed to unban": "Failed to unban", + "Banned by %(displayName)s": "Banned by %(displayName)s", + "Privacy warning": "Privacy warning", + "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room", + "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", + "unknown error code": "unknown error code", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", + "You should not yet trust it to secure data": "You should not yet trust it to secure data", + "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", + "Enable encryption": "Enable encryption", + "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", + "Encryption is enabled in this room": "Encryption is enabled in this room", + "Encryption is not enabled in this room": "Encryption is not enabled in this room", + "The default role for new room members is": "The default role for new room members is", + "To send messages, you must be a": "To send messages, you must be a", + "To invite users into the room, you must be a": "To invite users into the room, you must be a", + "To configure the room, you must be a": "To configure the room, you must be a", + "To kick users, you must be a": "To kick users, you must be a", + "To ban users, you must be a": "To ban users, you must be a", + "To remove other users' messages, you must be a": "To remove other users' messages, you must be a", + "To notify everyone in the room, you must be a": "To notify everyone in the room, you must be a", + "No users have specific privileges in this room": "No users have specific privileges in this room", + "%(user)s is a %(userRole)s": "%(user)s is a %(userRole)s", + "Privileged Users": "Privileged Users", + "Muted Users": "Muted Users", + "Banned users": "Banned users", + "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", + "Favourite": "Favourite", + "Tagged as: ": "Tagged as: ", + "To link to a room it must have an address.": "To link to a room it must have an address.", + "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", + "Click here to fix": "Click here to fix", + "To send events of type , you must be a": "To send events of type , you must be a", + "Upgrade room to version %(ver)s": "Upgrade room to version %(ver)s", + "Who can access this room?": "Who can access this room?", + "Only people who have been invited": "Only people who have been invited", + "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", + "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", + "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?", + "Who can read history?": "Who can read history?", + "Anyone": "Anyone", + "Members only (since the point in time of selecting this option)": "Members only (since the point in time of selecting this option)", + "Members only (since they were invited)": "Members only (since they were invited)", + "Members only (since they joined)": "Members only (since they joined)", + "Permissions": "Permissions", + "Advanced": "Advanced", + "Internal room ID: ": "Internal room ID: ", + "Room version number: ": "Room version number: ", + "Add a topic": "Add a topic", + "There is a known vulnerability affecting this room.": "There is a known vulnerability affecting this room.", + "This room version is vulnerable to malicious modification of room state.": "This room version is vulnerable to malicious modification of room state.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Click here to upgrade to the latest room version and ensure room integrity is protected.", + "Only room administrators will see this warning": "Only room administrators will see this warning", + "Search…": "Search…", + "This Room": "This Room", + "All Rooms": "All Rooms", + "Cancel": "Cancel", + "You don't currently have any stickerpacks enabled": "You don't currently have any stickerpacks enabled", + "Add a stickerpack": "Add a stickerpack", + "Stickerpack": "Stickerpack", + "Hide Stickers": "Hide Stickers", + "Show Stickers": "Show Stickers", + "Scroll to unread messages": "Scroll to unread messages", + "Jump to first unread message.": "Jump to first unread message.", + "Close": "Close", + "Sunday": "Sunday", + "Monday": "Monday", + "Tuesday": "Tuesday", + "Wednesday": "Wednesday", + "Thursday": "Thursday", + "Friday": "Friday", + "Saturday": "Saturday", + "Today": "Today", + "Yesterday": "Yesterday", + "Error decrypting audio": "Error decrypting audio", + "Error decrypting attachment": "Error decrypting attachment", + "Decrypt %(text)s": "Decrypt %(text)s", + "Download %(text)s": "Download %(text)s", + "Invalid file%(extra)s": "Invalid file%(extra)s", + "Error decrypting image": "Error decrypting image", + "Error decrypting video": "Error decrypting video", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", + "This room is a continuation of another conversation.": "This room is a continuation of another conversation.", + "Click here to see older messages.": "Click here to see older messages.", + "Copied!": "Copied!", + "Failed to copy": "Failed to copy", + "Add an Integration": "Add an Integration", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?", + "Removed or unknown message type": "Removed or unknown message type", + "Message removed by %(userId)s": "Message removed by %(userId)s", + "Message removed": "Message removed", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", + "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", + "Sign in with CAS": "Sign in with CAS", + "Custom Server Options": "Custom Server Options", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", + "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", + "Dismiss": "Dismiss", + "To continue, please enter your password.": "To continue, please enter your password.", + "Password:": "Password:", + "Please accept all of the policies": "Please accept all of the policies", + "Please review and accept the policies of this homeserver:": "Please review and accept the policies of this homeserver:", + "An email has been sent to %(emailAddress)s": "An email has been sent to %(emailAddress)s", + "Please check your email to continue registration.": "Please check your email to continue registration.", + "Token incorrect": "Token incorrect", + "A text message has been sent to %(msisdn)s": "A text message has been sent to %(msisdn)s", + "Please enter the code it contains:": "Please enter the code it contains:", + "Code": "Code", + "Start authentication": "Start authentication", + "powered by Matrix": "powered by Matrix", + "The email field must not be blank.": "The email field must not be blank.", + "The user name field must not be blank.": "The user name field must not be blank.", + "The phone number field must not be blank.": "The phone number field must not be blank.", + "The password field must not be blank.": "The password field must not be blank.", + "Username on %(hs)s": "Username on %(hs)s", + "User name": "User name", + "Mobile phone number": "Mobile phone number", + "Forgot your password?": "Forgot your password?", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Sign in with": "Sign in with", + "Email address": "Email address", + "Sign in": "Sign in", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", + "Email address (optional)": "Email address (optional)", + "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", + "Mobile phone number (optional)": "Mobile phone number (optional)", + "Default server": "Default server", + "Custom server": "Custom server", + "Home server URL": "Home server URL", + "Identity server URL": "Identity server URL", + "What does this mean?": "What does this mean?", + "Remove from community": "Remove from community", + "Disinvite this user from community?": "Disinvite this user from community?", + "Remove this user from community?": "Remove this user from community?", + "Failed to withdraw invitation": "Failed to withdraw invitation", + "Failed to remove user from community": "Failed to remove user from community", + "Filter community members": "Filter community members", + "Flair will appear if enabled in room settings": "Flair will appear if enabled in room settings", + "Flair will not appear": "Flair will not appear", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Are you sure you want to remove '%(roomName)s' from %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Removing a room from the community will also remove it from the community page.", + "Remove": "Remove", + "Failed to remove room from community": "Failed to remove room from community", + "Failed to remove '%(roomName)s' from %(groupId)s": "Failed to remove '%(roomName)s' from %(groupId)s", + "Something went wrong!": "Something went wrong!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "The visibility of '%(roomName)s' in %(groupId)s could not be updated.", + "Visibility in Room List": "Visibility in Room List", + "Visible to everyone": "Visible to everyone", + "Only visible to community members": "Only visible to community members", + "Filter community rooms": "Filter community rooms", + "Something went wrong when trying to get your communities.": "Something went wrong when trying to get your communities.", + "Display your community flair in rooms configured to show it.": "Display your community flair in rooms configured to show it.", + "You're not currently a member of any communities.": "You're not currently a member of any communities.", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.", + "Yes, I want to help!": "Yes, I want to help!", + "You are not receiving desktop notifications": "You are not receiving desktop notifications", + "Enable them now": "Enable them now", + "What's New": "What's New", + "Update": "Update", + "What's new?": "What's new?", + "A new version of Riot is available.": "A new version of Riot is available.", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Set Password": "Set Password", + "Please contact your service administrator to get this limit increased.": "Please contact your service administrator to get this limit increased.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "This homeserver has exceeded one of its resource limits so some users will not be able to log in.", + "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", + "Checking for an update...": "Checking for an update...", + "No update available.": "No update available.", + "Downloading update...": "Downloading update...", + "Warning": "Warning", + "Unknown Address": "Unknown Address", + "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted", + "Warning: This widget might use cookies.": "Warning: This widget might use cookies.", + "Do you want to load widget from URL:": "Do you want to load widget from URL:", + "Allow": "Allow", + "Delete Widget": "Delete Widget", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?", + "Delete widget": "Delete widget", + "Failed to remove widget": "Failed to remove widget", + "An error ocurred whilst trying to remove the widget from the room": "An error ocurred whilst trying to remove the widget from the room", + "Revoke widget access": "Revoke widget access", + "Minimize apps": "Minimize apps", + "Reload widget": "Reload widget", + "Popout widget": "Popout widget", + "Picture": "Picture", + "Edit": "Edit", + "Create new room": "Create new room", + "Unblacklist": "Unblacklist", + "Blacklist": "Blacklist", + "Unverify": "Unverify", + "Verify...": "Verify...", + "No results": "No results", + "Delete": "Delete", + "Communities": "Communities", + "Home": "Home", + "You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)", + "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", + "Download this file": "Download this file", + "Integrations Error": "Integrations Error", + "Manage Integrations": "Manage Integrations", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)sjoined %(count)s times", + "one": "%(severalUsers)sjoined" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)sjoined %(count)s times", + "one": "%(oneUser)sjoined" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)sleft %(count)s times", + "one": "%(severalUsers)sleft" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)sleft %(count)s times", + "one": "%(oneUser)sleft" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)sjoined and left %(count)s times", + "one": "%(severalUsers)sjoined and left" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)sjoined and left %(count)s times", + "one": "%(oneUser)sjoined and left" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)sleft and rejoined %(count)s times", + "one": "%(severalUsers)sleft and rejoined" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)sleft and rejoined %(count)s times", + "one": "%(oneUser)sleft and rejoined" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)srejected their invitations %(count)s times", + "one": "%(severalUsers)srejected their invitations" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)srejected their invitation %(count)s times", + "one": "%(oneUser)srejected their invitation" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)shad their invitations withdrawn %(count)s times", + "one": "%(severalUsers)shad their invitations withdrawn" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)shad their invitation withdrawn %(count)s times", + "one": "%(oneUser)shad their invitation withdrawn" + }, + "were invited %(count)s times": { + "other": "were invited %(count)s times", + "one": "were invited" + }, + "was invited %(count)s times": { + "other": "was invited %(count)s times", + "one": "was invited" + }, + "were banned %(count)s times": { + "other": "were banned %(count)s times", + "one": "were banned" + }, + "was banned %(count)s times": { + "other": "was banned %(count)s times", + "one": "was banned" + }, + "were unbanned %(count)s times": { + "other": "were unbanned %(count)s times", + "one": "were unbanned" + }, + "was unbanned %(count)s times": { + "other": "was unbanned %(count)s times", + "one": "was unbanned" + }, + "were kicked %(count)s times": { + "other": "were kicked %(count)s times", + "one": "were kicked" + }, + "was kicked %(count)s times": { + "other": "was kicked %(count)s times", + "one": "was kicked" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)schanged their name %(count)s times", + "one": "%(severalUsers)schanged their name" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)schanged their name %(count)s times", + "one": "%(oneUser)schanged their name" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)schanged their avatar %(count)s times", + "one": "%(severalUsers)schanged their avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)schanged their avatar %(count)s times", + "one": "%(oneUser)schanged their avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s and %(count)s others", + "one": "%(items)s and one other" + }, + "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", + "collapse": "collapse", + "expand": "expand", + "Custom of %(powerLevel)s": "Custom of %(powerLevel)s", + "Custom level": "Custom level", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.", + "In reply to ": "In reply to ", + "Room directory": "Room directory", + "Start chat": "Start chat", + "And %(count)s more...": { + "other": "And %(count)s more..." + }, + "ex. @bob:example.com": "ex. @bob:example.com", + "Add User": "Add User", + "Matrix ID": "Matrix ID", + "Matrix Room ID": "Matrix Room ID", + "email address": "email address", + "You have entered an invalid address.": "You have entered an invalid address.", + "Try using one of the following valid address types: %(validTypesList)s.": "Try using one of the following valid address types: %(validTypesList)s.", + "Preparing to send logs": "Preparing to send logs", + "Logs sent": "Logs sent", + "Thank you!": "Thank you!", + "Failed to send logs: ": "Failed to send logs: ", + "Submit debug logs": "Submit debug logs", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Before submitting logs, you must create a GitHub issue to describe your problem.", + "What GitHub issue are these logs for?": "What GitHub issue are these logs for?", + "Notes:": "Notes:", + "Send logs": "Send logs", + "Unavailable": "Unavailable", + "Changelog": "Changelog", + "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", + "Start new chat": "Start new chat", + "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", + "Start chatting": "Start chatting", + "Click on the button below to start chatting!": "Click on the button below to start chatting!", + "Start Chatting": "Start Chatting", + "Confirm Removal": "Confirm Removal", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", + "Community IDs cannot be empty.": "Community IDs cannot be empty.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community IDs may only contain characters a-z, 0-9, or '=_-./'", + "Something went wrong whilst creating your community": "Something went wrong whilst creating your community", + "Create Community": "Create Community", + "Community Name": "Community Name", + "Example": "Example", + "Community ID": "Community ID", + "example": "example", + "Create": "Create", + "Create Room": "Create Room", + "Room name (optional)": "Room name (optional)", + "Advanced options": "Advanced options", + "Block users on other matrix homeservers from joining this room": "Block users on other matrix homeservers from joining this room", + "This setting cannot be changed later!": "This setting cannot be changed later!", + "Failed to indicate account erasure": "Failed to indicate account erasure", + "Unknown error": "Unknown error", + "Incorrect password": "Incorrect password", + "Deactivate Account": "Deactivate Account", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)", + "To continue, please enter your password:": "To continue, please enter your password:", + "password": "password", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", + "Device name": "Device name", + "Device key": "Device key", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.", + "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", + "Verify device": "Verify device", + "I verify that the keys match": "I verify that the keys match", + "Back": "Back", + "Send Custom Event": "Send Custom Event", + "You must specify an event type!": "You must specify an event type!", + "Event sent!": "Event sent!", + "Failed to send custom event.": "Failed to send custom event.", + "Event Type": "Event Type", + "State Key": "State Key", + "Event Content": "Event Content", + "Send Account Data": "Send Account Data", + "Filter results": "Filter results", + "Explore Room State": "Explore Room State", + "Explore Account Data": "Explore Account Data", + "Toolbox": "Toolbox", + "Developer Tools": "Developer Tools", + "An error has occurred.": "An error has occurred.", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", + "Start verification": "Start verification", + "Share without verifying": "Share without verifying", + "Ignore request": "Ignore request", + "Loading device info...": "Loading device info...", + "Encryption key request": "Encryption key request", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!", + "Updating Riot": "Updating Riot", + "Failed to upgrade room": "Failed to upgrade room", + "The room upgrade could not be completed": "The room upgrade could not be completed", + "Upgrade this room to version %(version)s": "Upgrade this room to version %(version)s", + "Upgrade Room Version": "Upgrade Room Version", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:", + "Create a new room with the same name, description and avatar": "Create a new room with the same name, description and avatar", + "Update any local room aliases to point to the new room": "Update any local room aliases to point to the new room", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room", + "Put a link back to the old room at the start of the new room so people can see old messages": "Put a link back to the old room at the start of the new room so people can see old messages", + "Sign out": "Sign out", + "Log out and remove encryption keys?": "Log out and remove encryption keys?", + "Clear Storage and Sign Out": "Clear Storage and Sign Out", + "Send Logs": "Send Logs", + "Refresh": "Refresh", + "Unable to restore session": "Unable to restore session", + "We encountered an error trying to restore your previous session.": "We encountered an error trying to restore your previous session.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.", + "Invalid Email Address": "Invalid Email Address", + "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", + "Verification Pending": "Verification Pending", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", + "Unable to add email address": "Unable to add email address", + "Unable to verify email address.": "Unable to verify email address.", + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", + "Skip": "Skip", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", + "Username not available": "Username not available", + "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", + "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", + "Username available": "Username available", + "To get started, please pick a username!": "To get started, please pick a username!", + "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", + "If you would like to create a Matrix account you can register now.": "If you would like to create a Matrix account you can register now.", + "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", + "You are currently using Riot anonymously as a guest.": "You are currently using Riot anonymously as a guest.", + "You have successfully set a password!": "You have successfully set a password!", + "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", + "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.", + "Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.", + "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", + "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", + "Please set a password!": "Please set a password!", + "This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices.", + "Share Room": "Share Room", + "Link to most recent message": "Link to most recent message", + "Share User": "Share User", + "Share Community": "Share Community", + "Share Room Message": "Share Room Message", + "Link to selected message": "Link to selected message", + "COPY": "COPY", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", + "Room contains unknown devices": "Room contains unknown devices", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", + "Unknown devices": "Unknown devices", + "Private Chat": "Private Chat", + "Public Chat": "Public Chat", + "Custom": "Custom", + "Alias (optional)": "Alias (optional)", + "Reject invitation": "Reject invitation", + "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", + "Unable to reject invite": "Unable to reject invite", + "Reject": "Reject", + "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", + "Resend": "Resend", + "Cancel Sending": "Cancel Sending", + "Forward Message": "Forward Message", + "Reply": "Reply", + "Pin Message": "Pin Message", + "View Source": "View Source", + "View Decrypted Source": "View Decrypted Source", + "Unhide Preview": "Unhide Preview", + "Share Message": "Share Message", + "Quote": "Quote", + "Source URL": "Source URL", + "Collapse Reply Thread": "Collapse Reply Thread", + "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", + "All messages (noisy)": "All messages (noisy)", + "All messages": "All messages", + "Mentions only": "Mentions only", + "Leave": "Leave", + "Forget": "Forget", + "Low Priority": "Low Priority", + "Direct Chat": "Direct Chat", + "View Community": "View Community", + "Sorry, your browser is not able to run Riot.": "Sorry, your browser is not able to run Riot.", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", + "Please install Chrome or Firefox for the best experience.": "Please install Chrome or Firefox for the best experience.", + "Safari and Opera work too.": "Safari and Opera work too.", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!", + "I understand the risks and wish to continue": "I understand the risks and wish to continue", + "Name": "Name", + "Topic": "Topic", + "Make this room private": "Make this room private", + "Share message history with new users": "Share message history with new users", + "Encrypt room": "Encrypt room", + "You must register to use this functionality": "You must register to use this functionality", + "You must join the room to see its files": "You must join the room to see its files", + "There are no visible files in this room": "There are no visible files in this room", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n", + "Add rooms to the community summary": "Add rooms to the community summary", + "Which rooms would you like to add to this summary?": "Which rooms would you like to add to this summary?", + "Add to summary": "Add to summary", + "Failed to add the following rooms to the summary of %(groupId)s:": "Failed to add the following rooms to the summary of %(groupId)s:", + "Add a Room": "Add a Room", + "Failed to remove the room from the summary of %(groupId)s": "Failed to remove the room from the summary of %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "The room '%(roomName)s' could not be removed from the summary.", + "Add users to the community summary": "Add users to the community summary", + "Who would you like to add to this summary?": "Who would you like to add to this summary?", + "Failed to add the following users to the summary of %(groupId)s:": "Failed to add the following users to the summary of %(groupId)s:", + "Add a User": "Add a User", + "Failed to remove a user from the summary of %(groupId)s": "Failed to remove a user from the summary of %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "The user '%(displayName)s' could not be removed from the summary.", + "Failed to upload image": "Failed to upload image", + "Failed to update community": "Failed to update community", + "Unable to accept invite": "Unable to accept invite", + "Unable to join community": "Unable to join community", + "Leave Community": "Leave Community", + "Leave %(groupName)s?": "Leave %(groupName)s?", + "Unable to leave community": "Unable to leave community", + "Community Settings": "Community Settings", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.", + "Add rooms to this community": "Add rooms to this community", + "Featured Rooms:": "Featured Rooms:", + "Featured Users:": "Featured Users:", + "%(inviter)s has invited you to join this community": "%(inviter)s has invited you to join this community", + "Join this community": "Join this community", + "Leave this community": "Leave this community", + "You are an administrator of this community": "You are an administrator of this community", + "You are a member of this community": "You are a member of this community", + "Who can join this community?": "Who can join this community?", + "Everyone": "Everyone", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!", + "Long Description (HTML)": "Long Description (HTML)", + "Description": "Description", + "Community %(groupId)s not found": "Community %(groupId)s not found", + "This Home server does not support communities": "This Home server does not support communities", + "Failed to load %(groupId)s": "Failed to load %(groupId)s", + "Couldn't load home page": "Couldn't load home page", + "Login": "Login", + "Failed to reject invitation": "Failed to reject invitation", + "This room is not public. You will not be able to rejoin without an invite.": "This room is not public. You will not be able to rejoin without an invite.", + "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", + "Failed to leave room": "Failed to leave room", + "Can't leave Server Notices room": "Can't leave Server Notices room", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "This room is used for important messages from the Homeserver, so you cannot leave it.", + "Signed Out": "Signed Out", + "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", + "Terms and Conditions": "Terms and Conditions", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.", + "Review terms and conditions": "Review terms and conditions", + "Old cryptography data detected": "Old cryptography data detected", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.", + "Logout": "Logout", + "Your Communities": "Your Communities", + "Did you know: you can use communities to filter your Riot.im experience!": "Did you know: you can use communities to filter your Riot.im experience!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.", + "Error whilst fetching joined communities": "Error whilst fetching joined communities", + "Create a new community": "Create a new community", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.", + "You have no visible notifications": "You have no visible notifications", + "Members": "Members", + "%(count)s Members": { + "other": "%(count)s Members", + "one": "%(count)s Member" + }, + "Invite to this room": "Invite to this room", + "Files": "Files", + "Notifications": "Notifications", + "Hide panel": "Hide panel", + "Invite to this community": "Invite to this community", + "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", + "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks", + "Failed to get public room list": "Failed to get public room list", + "The server may be unavailable or overloaded": "The server may be unavailable or overloaded", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", + "Remove %(name)s from the directory?": "Remove %(name)s from the directory?", + "Remove from Directory": "Remove from Directory", + "remove %(name)s from the directory.": "remove %(name)s from the directory.", + "delete the alias.": "delete the alias.", + "Unable to join network": "Unable to join network", + "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network", + "Room not found": "Room not found", + "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", + "Fetching third party location failed": "Fetching third party location failed", + "Unable to look up room ID from server": "Unable to look up room ID from server", + "Directory": "Directory", + "Search for a room": "Search for a room", + "#example": "#example", + "Scroll to bottom of page": "Scroll to bottom of page", + "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", + "Show devices, send anyway or cancel.": "Show devices, send anyway or cancel.", + "You can't send any messages until you review and agree to our terms and conditions.": "You can't send any messages until you review and agree to our terms and conditions.", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.", + "%(count)s of your messages have not been sent.": { + "other": "Some of your messages have not been sent.", + "one": "Your message was not sent." + }, + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Resend all or cancel all now. You can also select individual messages to resend or cancel.", + "one": "Resend message or cancel message now." + }, + "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", + "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", + "%(count)s new messages": { + "other": "%(count)s new messages", + "one": "%(count)s new message" + }, + "Active call": "Active call", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?", + "more": "more", + "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", + "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", + "Failed to upload file": "Failed to upload file", + "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", + "Search failed": "Search failed", + "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", + "No more results": "No more results", + "Unknown room %(roomId)s": "Unknown room %(roomId)s", + "Room": "Room", + "Failed to save settings": "Failed to save settings", + "Failed to reject invite": "Failed to reject invite", + "Fill screen": "Fill screen", + "Click to unmute video": "Click to unmute video", + "Click to mute video": "Click to mute video", + "Click to unmute audio": "Click to unmute audio", + "Click to mute audio": "Click to mute audio", + "Expand panel": "Expand panel", + "Collapse panel": "Collapse panel", + "Filter room names": "Filter room names", + "Clear filter": "Clear filter", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", + "Failed to load timeline position": "Failed to load timeline position", + "Uploading %(filename)s and %(count)s others": { + "other": "Uploading %(filename)s and %(count)s others", + "zero": "Uploading %(filename)s", + "one": "Uploading %(filename)s and %(count)s other" + }, + "Light theme": "Light theme", + "Dark theme": "Dark theme", + "Status.im theme": "Status.im theme", + "Can't load user settings": "Can't load user settings", + "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", + "Success": "Success", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", + "Remove Contact Information?": "Remove Contact Information?", + "Remove %(threePid)s?": "Remove %(threePid)s?", + "Unable to remove contact information": "Unable to remove contact information", + "Refer a friend to Riot:": "Refer a friend to Riot:", + "Interface Language": "Interface Language", + "User Interface": "User Interface", + "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", + "": "", + "Import E2E room keys": "Import E2E room keys", + "Cryptography": "Cryptography", + "Device ID:": "Device ID:", + "Device key:": "Device key:", + "Ignored Users": "Ignored Users", + "Submit Debug Logs": "Submit Debug Logs", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.", + "Learn more about how we use analytics.": "Learn more about how we use analytics.", + "Labs": "Labs", + "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", + "Use with caution": "Use with caution", + "Lazy loading members not supported": "Lazy loading members not supported", + "Lazy loading is not supported by your current homeserver.": "Lazy loading is not supported by your current homeserver.", + "Deactivate my account": "Deactivate my account", + "Legal": "Legal", + "Clear Cache": "Clear Cache", + "Clear Cache and Reload": "Clear Cache and Reload", + "Updates": "Updates", + "Check for update": "Check for update", + "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", + "Bulk Options": "Bulk Options", + "Desktop specific": "Desktop specific", + "Start automatically after system login": "Start automatically after system login", + "No media permissions": "No media permissions", + "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", + "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", + "No Audio Outputs detected": "No Audio Outputs detected", + "No Microphones detected": "No Microphones detected", + "No Webcams detected": "No Webcams detected", + "Default Device": "Default Device", + "Audio Output": "Audio Output", + "Microphone": "Microphone", + "Camera": "Camera", + "VoIP": "VoIP", + "Email": "Email", + "Add email address": "Add email address", + "Profile": "Profile", + "Display name": "Display name", + "Account": "Account", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Logged in as:": "Logged in as:", + "Access Token:": "Access Token:", + "click to reveal": "click to reveal", + "Homeserver is": "Homeserver is", + "Identity Server is": "Identity Server is", + "matrix-react-sdk version:": "matrix-react-sdk version:", + "riot-web version:": "riot-web version:", + "olm version:": "olm version:", + "Failed to send email": "Failed to send email", + "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", + "A new password must be entered.": "A new password must be entered.", + "New passwords must match each other.": "New passwords must match each other.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.", + "I have verified my email address": "I have verified my email address", + "Your password has been reset": "Your password has been reset", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device", + "Return to login screen": "Return to login screen", + "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", + "New password": "New password", + "Confirm your new password": "Confirm your new password", + "Send Reset Email": "Send Reset Email", + "Create an account": "Create an account", + "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", + "Please contact your service administrator to continue using this service.": "Please contact your service administrator to continue using this service.", + "Incorrect username and/or password.": "Incorrect username and/or password.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Please note you are logging into the %(hs)s server, not matrix.org.", + "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", + "The phone number entered looks invalid": "The phone number entered looks invalid", + "This homeserver doesn't offer any login flows which are supported by this client.": "This homeserver doesn't offer any login flows which are supported by this client.", + "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", + "Try the app first": "Try the app first", + "Sign in to get started": "Sign in to get started", + "Failed to fetch avatar URL": "Failed to fetch avatar URL", + "Set a display name:": "Set a display name:", + "Upload an avatar:": "Upload an avatar:", + "Unable to query for supported registration methods": "Unable to query for supported registration methods", + "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", + "Missing password.": "Missing password.", + "Passwords don't match.": "Passwords don't match.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", + "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", + "An email address is required to register on this homeserver.": "An email address is required to register on this homeserver.", + "A phone number is required to register on this homeserver.": "A phone number is required to register on this homeserver.", + "You need to enter a user name.": "You need to enter a user name.", + "An unknown error occurred.": "An unknown error occurred.", + "I already have an account": "I already have an account", + "Commands": "Commands", + "Results from DuckDuckGo": "Results from DuckDuckGo", + "Emoji": "Emoji", + "Notify the whole room": "Notify the whole room", + "Room Notification": "Room Notification", + "Users": "Users", + "unknown device": "unknown device", + "NOT verified": "NOT verified", + "verified": "verified", + "Verification": "Verification", + "Ed25519 fingerprint": "Ed25519 fingerprint", + "User ID": "User ID", + "Curve25519 identity key": "Curve25519 identity key", + "none": "none", + "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", + "Algorithm": "Algorithm", + "unencrypted": "unencrypted", + "Decryption error": "Decryption error", + "Session ID": "Session ID", + "End-to-end encryption information": "End-to-end encryption information", + "Event information": "Event information", + "Sender device information": "Sender device information", + "Passphrases must match": "Passphrases must match", + "Passphrase must not be empty": "Passphrase must not be empty", + "Export room keys": "Export room keys", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", + "Enter passphrase": "Enter passphrase", + "Confirm passphrase": "Confirm passphrase", + "Export": "Export", + "Import room keys": "Import room keys", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", + "File to import": "File to import", + "Import": "Import", + "Failed to set direct chat tag": "Failed to set direct chat tag", + "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", + "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.", + "Incompatible local cache": "Incompatible local cache", + "Clear cache and resync": "Clear cache and resync", + "Add some now": "Add some now", + "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", + "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", + "Unknown device": "Unknown device", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", + "Welcome to Riot.im": "Welcome to Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]", + "Search the room directory": "Search the room directory", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!", + "Chat with Riot Bot": "Chat with Riot Bot", + "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!", + "General discussion about Matrix and Riot": "General discussion about Matrix and Riot", + "Discussion of all things Matrix!": "Discussion of all things Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", + "Matrix technical discussions": "Matrix technical discussions", + "Running Matrix services": "Running Matrix services", + "Community-run support for Synapse": "Community-run support for Synapse", + "Admin support for Dendrite": "Admin support for Dendrite", + "Announcements about Synapse releases": "Announcements about Synapse releases", + "Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc", + "Building services on Matrix": "Building services on Matrix", + "Support for those using the Matrix spec": "Support for those using the Matrix spec", + "Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix", + "Implementing VR services with Matrix": "Implementing VR services with Matrix", + "Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix", + "Discussion of the Identity Service API": "Discussion of the Identity Service API", + "Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges", + "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot", + "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team", + "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team", + "Co-ordination for Riot translators": "Co-ordination for Riot translators" +} \ No newline at end of file diff --git a/riot/i18n/en_US.json b/riot/i18n/en_US.json new file mode 100644 index 0000000..e21c8d5 --- /dev/null +++ b/riot/i18n/en_US.json @@ -0,0 +1,888 @@ +{ + "Add a widget": "Add a widget", + "AM": "AM", + "PM": "PM", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains", + "%(targetName)s accepted an invitation.": "%(targetName)s accepted an invitation.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepted the invitation for %(displayName)s.", + "Account": "Account", + "Access Token:": "Access Token:", + "Add a topic": "Add a topic", + "Add email address": "Add email address", + "Add phone number": "Add phone number", + "Admin": "Admin", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Missing Media Permissions, click here to request.", + "No Microphones detected": "No Microphones detected", + "No Webcams detected": "No Webcams detected", + "No media permissions": "No media permissions", + "You may need to manually permit Riot to access your microphone/webcam": "You may need to manually permit Riot to access your microphone/webcam", + "Default Device": "Default Device", + "Microphone": "Microphone", + "Camera": "Camera", + "Advanced": "Advanced", + "Algorithm": "Algorithm", + "Hide removed messages": "Hide removed messages", + "Always show message timestamps": "Always show message timestamps", + "Authentication": "Authentication", + "%(items)s and %(lastItem)s": "%(items)s and %(lastItem)s", + "and %(count)s others...": { + "other": "and %(count)s others...", + "one": "and one other..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s and %(lastPerson)s are typing", + "A new password must be entered.": "A new password must be entered.", + "%(senderName)s answered the call.": "%(senderName)s answered the call.", + "An error has occurred.": "An error has occurred.", + "Anyone": "Anyone", + "Anyone who knows the room's link, apart from guests": "Anyone who knows the room's link, apart from guests", + "Anyone who knows the room's link, including guests": "Anyone who knows the room's link, including guests", + "Are you sure?": "Are you sure?", + "Are you sure you want to leave the room '%(roomName)s'?": "Are you sure you want to leave the room '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Are you sure you want to reject the invitation?", + "Are you sure you want to upload the following files?": "Are you sure you want to upload the following files?", + "Attachment": "Attachment", + "Autoplay GIFs and videos": "Autoplay GIFs and videos", + "%(senderName)s banned %(targetName)s.": "%(senderName)s banned %(targetName)s.", + "Ban": "Ban", + "Banned users": "Banned users", + "Bans user with given id": "Bans user with given id", + "Blacklisted": "Blacklisted", + "Bulk Options": "Bulk Options", + "Call Timeout": "Call Timeout", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.", + "Can't load user settings": "Can't load user settings", + "Change Password": "Change Password", + "%(senderName)s changed their profile picture.": "%(senderName)s changed their profile picture.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s changed the power level of %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s changed the room name to %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s removed the room name.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s changed the topic to \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Changes to who can read history will only apply to future messages in this room", + "Changes your display nickname": "Changes your display nickname", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "Claimed Ed25519 fingerprint key": "Claimed Ed25519 fingerprint key", + "Clear Cache and Reload": "Clear Cache and Reload", + "Clear Cache": "Clear Cache", + "Click here to fix": "Click here to fix", + "Click to mute audio": "Click to mute audio", + "Click to mute video": "Click to mute video", + "click to reveal": "click to reveal", + "Click to unmute video": "Click to unmute video", + "Click to unmute audio": "Click to unmute audio", + "Command error": "Command error", + "Commands": "Commands", + "Conference call failed.": "Conference call failed.", + "Conference calling is in development and may not be reliable.": "Conference calling is in development and may not be reliable.", + "Conference calls are not supported in encrypted rooms": "Conference calls are not supported in encrypted rooms", + "Conference calls are not supported in this client": "Conference calls are not supported in this client", + "Confirm password": "Confirm password", + "Confirm your new password": "Confirm your new password", + "Continue": "Continue", + "Could not connect to the integration server": "Could not connect to the integration server", + "Create an account": "Create an account", + "Create Room": "Create Room", + "Cryptography": "Cryptography", + "Current password": "Current password", + "Curve25519 identity key": "Curve25519 identity key", + "Custom level": "Custom level", + "/ddg is not a command": "/ddg is not a command", + "Deactivate Account": "Deactivate Account", + "Deactivate my account": "Deactivate my account", + "Decrypt %(text)s": "Decrypt %(text)s", + "Decryption error": "Decryption error", + "Delete": "Delete", + "Deops user with given id": "Deops user with given id", + "Default": "Default", + "Delete widget": "Delete widget", + "Device already verified!": "Device already verified!", + "Device ID": "Device ID", + "Device ID:": "Device ID:", + "device id: ": "device id: ", + "Device key:": "Device key:", + "Devices": "Devices", + "Devices will not yet be able to decrypt history from before they joined the room": "Devices will not yet be able to decrypt history from before they joined the room", + "Direct chats": "Direct chats", + "Disinvite": "Disinvite", + "Display name": "Display name", + "Displays action": "Displays action", + "Don't send typing notifications": "Don't send typing notifications", + "Download %(text)s": "Download %(text)s", + "Drop here to tag %(section)s": "Drop here to tag %(section)s", + "Ed25519 fingerprint": "Ed25519 fingerprint", + "Edit": "Edit", + "Email": "Email", + "Email address": "Email address", + "Email address (optional)": "Email address (optional)", + "Email, name or matrix ID": "Email, name or matrix ID", + "Emoji": "Emoji", + "Enable encryption": "Enable encryption", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Encrypted messages will not be visible on clients that do not yet implement encryption", + "Encrypted room": "Encrypted room", + "%(senderName)s ended the call.": "%(senderName)s ended the call.", + "End-to-end encryption information": "End-to-end encryption information", + "End-to-end encryption is in beta and may not be reliable": "End-to-end encryption is in beta and may not be reliable", + "Enter Code": "Enter Code", + "Error": "Error", + "Error decrypting attachment": "Error decrypting attachment", + "Event information": "Event information", + "Existing Call": "Existing Call", + "Export": "Export", + "Export E2E room keys": "Export E2E room keys", + "Failed to ban user": "Failed to ban user", + "Failed to change password. Is your password correct?": "Failed to change password. Is your password correct?", + "Failed to change power level": "Failed to change power level", + "Failed to forget room %(errCode)s": "Failed to forget room %(errCode)s", + "Failed to join room": "Failed to join room", + "Failed to kick": "Failed to kick", + "Failed to leave room": "Failed to leave room", + "Failed to load timeline position": "Failed to load timeline position", + "Failed to mute user": "Failed to mute user", + "Failed to reject invite": "Failed to reject invite", + "Failed to reject invitation": "Failed to reject invitation", + "Failed to save settings": "Failed to save settings", + "Failed to send email": "Failed to send email", + "Failed to send request.": "Failed to send request.", + "Failed to set avatar.": "Failed to set avatar.", + "Failed to set display name": "Failed to set display name", + "Failed to set up conference call": "Failed to set up conference call", + "Failed to toggle moderator status": "Failed to toggle moderator status", + "Failed to unban": "Failed to unban", + "Failed to upload file": "Failed to upload file", + "Failed to verify email address: make sure you clicked the link in the email": "Failed to verify email address: make sure you clicked the link in the email", + "Failure to create room": "Failure to create room", + "Favourite": "Favorite", + "Favourites": "Favorites", + "Fill screen": "Fill screen", + "Filter room members": "Filter room members", + "Forget room": "Forget room", + "Forgot your password?": "Forgot your password?", + "For security, this session has been signed out. Please sign in again.": "For security, this session has been signed out. Please sign in again.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Guest access is disabled on this Home Server.", + "Guests cannot join this room even if explicitly invited.": "Guests cannot join this room even if explicitly invited.", + "Hangup": "Hangup", + "Hide read receipts": "Hide read receipts", + "Hide Text Formatting Toolbar": "Hide Text Formatting Toolbar", + "Historical": "Historical", + "Homeserver is": "Homeserver is", + "Identity Server is": "Identity Server is", + "I have verified my email address": "I have verified my email address", + "Import": "Import", + "Import E2E room keys": "Import E2E room keys", + "Incorrect username and/or password.": "Incorrect username and/or password.", + "Incorrect verification code": "Incorrect verification code", + "Interface Language": "Interface Language", + "Invalid alias format": "Invalid alias format", + "Invalid address format": "Invalid address format", + "Invalid Email Address": "Invalid Email Address", + "Invalid file%(extra)s": "Invalid file%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invited %(targetName)s.", + "Invite new room members": "Invite new room members", + "Invited": "Invited", + "Invites": "Invites", + "Invites user with given id to current room": "Invites user with given id to current room", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is not a valid format for an address", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is not a valid format for an alias", + "%(displayName)s is typing": "%(displayName)s is typing", + "Sign in with": "Sign in with", + "Join Room": "Join Room", + "%(targetName)s joined the room.": "%(targetName)s joined the room.", + "Joins room with given alias": "Joins room with given alias", + "Jump to first unread message.": "Jump to first unread message.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kicked %(targetName)s.", + "Kick": "Kick", + "Kicks user with given id": "Kicks user with given id", + "Labs": "Labs", + "Ignored Users": "Ignored Users", + "Ignore": "Ignore", + "Unignore": "Unignore", + "User Options": "User Options", + "You are now ignoring %(userId)s": "You are now ignoring %(userId)s", + "You are no longer ignoring %(userId)s": "You are no longer ignoring %(userId)s", + "Unignored user": "Unignored user", + "Ignored user": "Ignored user", + "Stops ignoring a user, showing their messages going forward": "Stops ignoring a user, showing their messages going forward", + "Ignores a user, hiding their messages from you": "Ignores a user, hiding their messages from you", + "Leave room": "Leave room", + "%(targetName)s left the room.": "%(targetName)s left the room.", + "Publish this room to the public in %(domain)s's room directory?": "Publish this room to the public in %(domain)s's room directory?", + "Local addresses for this room:": "Local addresses for this room:", + "Logged in as:": "Logged in as:", + "Logout": "Logout", + "Low priority": "Low priority", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s made future room history visible to all room members, from the point they are invited.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s made future room history visible to all room members, from the point they joined.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s made future room history visible to all room members.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s made future room history visible to anyone.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s made future room history visible to unknown (%(visibility)s).", + "Manage Integrations": "Manage Integrations", + "Markdown is disabled": "Markdown is disabled", + "Markdown is enabled": "Markdown is enabled", + "matrix-react-sdk version:": "matrix-react-sdk version:", + "Disable Emoji suggestions while typing": "Disable Emoji suggestions while typing", + "Message not sent due to unknown devices being present": "Message not sent due to unknown devices being present", + "Missing room_id in request": "Missing room_id in request", + "Missing user_id in request": "Missing user_id in request", + "Mobile phone number": "Mobile phone number", + "Mobile phone number (optional)": "Mobile phone number (optional)", + "Moderator": "Moderator", + "Mute": "Mute", + "Name": "Name", + "Never send encrypted messages to unverified devices from this device": "Never send encrypted messages to unverified devices from this device", + "Never send encrypted messages to unverified devices in this room from this device": "Never send encrypted messages to unverified devices in this room from this device", + "New address (e.g. #foo:%(localDomain)s)": "New address (e.g. #foo:%(localDomain)s)", + "New password": "New password", + "New passwords don't match": "New passwords don't match", + "New passwords must match each other.": "New passwords must match each other.", + "none": "none", + "not set": "not set", + "not specified": "not specified", + "Notifications": "Notifications", + "(not supported by this browser)": "(not supported by this browser)", + "": "", + "NOT verified": "NOT verified", + "No devices with registered encryption keys": "No devices with registered encryption keys", + "No more results": "No more results", + "No results": "No results", + "No users have specific privileges in this room": "No users have specific privileges in this room", + "OK": "OK", + "olm version:": "olm version:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Once encryption is enabled for a room it cannot be turned off again (for now)", + "Only people who have been invited": "Only people who have been invited", + "Operation failed": "Operation failed", + "Password": "Password", + "Password:": "Password:", + "Passwords can't be empty": "Passwords can't be empty", + "People": "People", + "Permissions": "Permissions", + "Phone": "Phone", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s placed a %(callType)s call.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Please check your email and click on the link it contains. Once this is done, click continue.", + "Power level must be positive integer.": "Power level must be positive integer.", + "Privacy warning": "Privacy warning", + "Privileged Users": "Privileged Users", + "Profile": "Profile", + "Reason": "Reason", + "Revoke Moderator": "Revoke Moderator", + "Revoke widget access": "Revoke widget access", + "Refer a friend to Riot:": "Refer a friend to Riot:", + "Register": "Register", + "%(targetName)s rejected the invitation.": "%(targetName)s rejected the invitation.", + "Reject invitation": "Reject invitation", + "Remote addresses for this room:": "Remote addresses for this room:", + "Remove Contact Information?": "Remove Contact Information?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removed their display name (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removed their profile picture.", + "Remove": "Remove", + "Remove %(threePid)s?": "Remove %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s requested a VoIP conference.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.", + "Results from DuckDuckGo": "Results from DuckDuckGo", + "Return to login screen": "Return to login screen", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot does not have permission to send you notifications - please check your browser settings", + "Riot was not given permission to send notifications - please try again": "Riot was not given permission to send notifications - please try again", + "riot-web version:": "riot-web version:", + "Room %(roomId)s not visible": "Room %(roomId)s not visible", + "Room Colour": "Room Color", + "Room name (optional)": "Room name (optional)", + "Rooms": "Rooms", + "Save": "Save", + "Scroll to bottom of page": "Scroll to bottom of page", + "Scroll to unread messages": "Scroll to unread messages", + "Search": "Search", + "Search failed": "Search failed", + "Searches DuckDuckGo for results": "Searches DuckDuckGo for results", + "Sender device information": "Sender device information", + "Send Invites": "Send Invites", + "Send Reset Email": "Send Reset Email", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sent an image.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.", + "Server error": "Server error", + "Server may be unavailable or overloaded": "Server may be unavailable or overloaded", + "Server may be unavailable, overloaded, or search timed out :(": "Server may be unavailable, overloaded, or search timed out :(", + "Server may be unavailable, overloaded, or the file too big": "Server may be unavailable, overloaded, or the file too big", + "Server may be unavailable, overloaded, or you hit a bug.": "Server may be unavailable, overloaded, or you hit a bug.", + "Server unavailable, overloaded, or something else went wrong.": "Server unavailable, overloaded, or something else went wrong.", + "Session ID": "Session ID", + "%(senderName)s set a profile picture.": "%(senderName)s set a profile picture.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s set their display name to %(displayName)s.", + "Settings": "Settings", + "Show panel": "Show panel", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Show timestamps in 12 hour format (e.g. 2:30pm)", + "Signed Out": "Signed Out", + "Sign in": "Sign in", + "Sign out": "Sign out", + "%(count)s of your messages have not been sent.": { + "other": "Some of your messages have not been sent." + }, + "Someone": "Someone", + "Start a chat": "Start a chat", + "Start Chat": "Start Chat", + "Submit": "Submit", + "Success": "Success", + "Tagged as: ": "Tagged as: ", + "The default role for new room members is": "The default role for new room members is", + "The main address for this room is": "The main address for this room is", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.", + "This email address is already in use": "This email address is already in use", + "This email address was not found": "This email address was not found", + "The email address linked to your account must be entered.": "The email address linked to your account must be entered.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "The file '%(fileName)s' exceeds this home server's size limit for uploads", + "The file '%(fileName)s' failed to upload": "The file '%(fileName)s' failed to upload", + "The remote side failed to pick up": "The remote side failed to pick up", + "This Home Server does not support login using email address.": "This Home Server does not support login using email address.", + "This room has no local addresses": "This room has no local addresses", + "This room is not recognised.": "This room is not recognized.", + "These are experimental features that may break in unexpected ways": "These are experimental features that may break in unexpected ways", + "The visibility of existing history will be unchanged": "The visibility of existing history will be unchanged", + "This doesn't appear to be a valid email address": "This doesn't appear to be a valid email address", + "This is a preview of this room. Room interactions have been disabled": "This is a preview of this room. Room interactions have been disabled", + "This phone number is already in use": "This phone number is already in use", + "This room is not accessible by remote Matrix servers": "This room is not accessible by remote Matrix servers", + "This room's internal ID is": "This room's internal ID is", + "To reset your password, enter the email address linked to your account": "To reset your password, enter the email address linked to your account", + "To use it, just wait for autocomplete results to load and tab through them.": "To use it, just wait for autocomplete results to load and tab through them.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.", + "Turn Markdown off": "Turn Markdown off", + "Turn Markdown on": "Turn Markdown on", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).", + "Unable to add email address": "Unable to add email address", + "Unable to remove contact information": "Unable to remove contact information", + "Unable to verify email address.": "Unable to verify email address.", + "Unban": "Unban", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s unbanned %(targetName)s.", + "Unable to capture screen": "Unable to capture screen", + "Unable to enable Notifications": "Unable to enable Notifications", + "Unable to load device list": "Unable to load device list", + "Unencrypted room": "Unencrypted room", + "unencrypted": "unencrypted", + "unknown device": "unknown device", + "unknown error code": "unknown error code", + "Unknown room %(roomId)s": "Unknown room %(roomId)s", + "Unknown (user, device) pair:": "Unknown (user, device) pair:", + "Unmute": "Unmute", + "Unrecognised command:": "Unrecognized command:", + "Unrecognised room alias:": "Unrecognized room alias:", + "Upload avatar": "Upload avatar", + "Upload Failed": "Upload Failed", + "Upload Files": "Upload Files", + "Upload file": "Upload file", + "Usage": "Usage", + "Use compact timeline layout": "Use compact timeline layout", + "Use with caution": "Use with caution", + "User ID": "User ID", + "User Interface": "User Interface", + "User name": "User name", + "Users": "Users", + "Verification Pending": "Verification Pending", + "Verification": "Verification", + "verified": "verified", + "Verified key": "Verified key", + "Video call": "Video call", + "Voice call": "Voice call", + "VoIP conference finished.": "VoIP conference finished.", + "VoIP conference started.": "VoIP conference started.", + "VoIP is unsupported": "VoIP is unsupported", + "(could not connect media)": "(could not connect media)", + "(no answer)": "(no answer)", + "(unknown failure: %(reason)s)": "(unknown failure: %(reason)s)", + "(warning: cannot be disabled again!)": "(warning: cannot be disabled again!)", + "Warning!": "Warning!", + "WARNING: Device already verified, but keys do NOT MATCH!": "WARNING: Device already verified, but keys do NOT MATCH!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!", + "Who can access this room?": "Who can access this room?", + "Who can read history?": "Who can read history?", + "Who would you like to add to this room?": "Who would you like to add to this room?", + "Who would you like to communicate with?": "Who would you like to communicate with?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s withdrew %(targetName)s's invitation.", + "You are already in a call.": "You are already in a call.", + "You are trying to access %(roomName)s.": "You are trying to access %(roomName)s.", + "You cannot place a call with yourself.": "You cannot place a call with yourself.", + "You cannot place VoIP calls in this browser.": "You cannot place VoIP calls in this browser.", + "You do not have permission to post to this room": "You do not have permission to post to this room", + "You have been invited to join this room by %(inviterName)s": "You have been invited to join this room by %(inviterName)s", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device", + "You have disabled URL previews by default.": "You have disabled URL previews by default.", + "You have enabled URL previews by default.": "You have enabled URL previews by default.", + "You have no visible notifications": "You have no visible notifications", + "You need to be able to invite users to do that.": "You need to be able to invite users to do that.", + "You need to be logged in.": "You need to be logged in.", + "You need to enter a user name.": "You need to enter a user name.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Your email address does not appear to be associated with a Matrix ID on this Homeserver.", + "Your password has been reset": "Your password has been reset", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them", + "You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?", + "You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?", + "You should not yet trust it to secure data": "You should not yet trust it to secure data", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.", + "Sun": "Sun", + "Mon": "Mon", + "Tue": "Tue", + "Wed": "Wed", + "Thu": "Thu", + "Fri": "Fri", + "Sat": "Sat", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "May", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Oct", + "Nov": "Nov", + "Dec": "Dec", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Set a display name:", + "Upload an avatar:": "Upload an avatar:", + "This server does not support authentication with a phone number.": "This server does not support authentication with a phone number.", + "Missing password.": "Missing password.", + "Passwords don't match.": "Passwords don't match.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password too short (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "This doesn't look like a valid email address.", + "This doesn't look like a valid phone number.": "This doesn't look like a valid phone number.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "User names may only contain letters, numbers, dots, hyphens and underscores.", + "An unknown error occurred.": "An unknown error occurred.", + "I already have an account": "I already have an account", + "An error occurred: %(error_string)s": "An error occurred: %(error_string)s", + "Topic": "Topic", + "Make Moderator": "Make Moderator", + "Make this room private": "Make this room private", + "Share message history with new users": "Share message history with new users", + "Encrypt room": "Encrypt room", + "There are no visible files in this room": "There are no visible files in this room", + "Room": "Room", + "Connectivity to the server has been lost.": "Connectivity to the server has been lost.", + "Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.", + "Cancel": "Cancel", + "Active call": "Active call", + "bold": "bold", + "italic": "italic", + "strike": "strike", + "underline": "underline", + "code": "code", + "quote": "quote", + "bullet": "bullet", + "numbullet": "numbullet", + "Please select the destination room for this message": "Please select the destination room for this message", + "Start automatically after system login": "Start automatically after system login", + "Desktop specific": "Desktop specific", + "Analytics": "Analytics", + "Banned by %(displayName)s": "Banned by %(displayName)s", + "Options": "Options", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot collects anonymous analytics to allow us to improve the application.", + "Passphrases must match": "Passphrases must match", + "Passphrase must not be empty": "Passphrase must not be empty", + "Export room keys": "Export room keys", + "Enter passphrase": "Enter passphrase", + "Confirm passphrase": "Confirm passphrase", + "Import room keys": "Import room keys", + "File to import": "File to import", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.", + "You must join the room to see its files": "You must join the room to see its files", + "Reject all %(invitedRooms)s invites": "Reject all %(invitedRooms)s invites", + "Start new chat": "Start new chat", + "Failed to invite": "Failed to invite", + "Failed to invite user": "Failed to invite user", + "Failed to invite the following users to the %(roomName)s room:": "Failed to invite the following users to the %(roomName)s room:", + "Confirm Removal": "Confirm Removal", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.", + "Unknown error": "Unknown error", + "Incorrect password": "Incorrect password", + "To continue, please enter your password.": "To continue, please enter your password.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:", + "Device name": "Device name", + "Device key": "Device key", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.", + "In future this verification process will be more sophisticated.": "In future this verification process will be more sophisticated.", + "Verify device": "Verify device", + "I verify that the keys match": "I verify that the keys match", + "Unable to restore session": "Unable to restore session", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contains devices that you haven't seen before.", + "Unknown devices": "Unknown devices", + "Unknown Address": "Unknown Address", + "Unblacklist": "Unblacklist", + "Blacklist": "Blacklist", + "Unverify": "Unverify", + "Verify...": "Verify...", + "ex. @bob:example.com": "ex. @bob:example.com", + "Add User": "Add User", + "To send messages, you must be a": "To send messages, you must be a", + "To invite users into the room, you must be a": "To invite users into the room, you must be a", + "To configure the room, you must be a": "To configure the room, you must be a", + "To kick users, you must be a": "To kick users, you must be a", + "To ban users, you must be a": "To ban users, you must be a", + "To remove other users' messages, you must be a": "To remove other users' messages, you must be a", + "To send events of type , you must be a": "To send events of type , you must be a", + "To change the room's avatar, you must be a": "To change the room's avatar, you must be a", + "To change the room's name, you must be a": "To change the room's name, you must be a", + "To change the room's main address, you must be a": "To change the room's main address, you must be a", + "To change the room's history visibility, you must be a": "To change the room's history visibility, you must be a", + "To change the permissions in the room, you must be a": "To change the permissions in the room, you must be a", + "To change the topic, you must be a": "To change the topic, you must be a", + "To modify widgets in the room, you must be a": "To modify widgets in the room, you must be a", + "This Home Server would like to make sure you are not a robot": "This Home Server would like to make sure you are not a robot", + "Sign in with CAS": "Sign in with CAS", + "Custom Server Options": "Custom Server Options", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.", + "This allows you to use this app with an existing Matrix account on a different home server.": "This allows you to use this app with an existing Matrix account on a different home server.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "You can also set a custom identity server but this will typically prevent interaction with users based on email address.", + "Dismiss": "Dismiss", + "Please check your email to continue registration.": "Please check your email to continue registration.", + "Token incorrect": "Token incorrect", + "Please enter the code it contains:": "Please enter the code it contains:", + "powered by Matrix": "powered by Matrix", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "If you don't specify an email address, you won't be able to reset your password. Are you sure?", + "You are registering with %(SelectedTeamName)s": "You are registering with %(SelectedTeamName)s", + "Default server": "Default server", + "Custom server": "Custom server", + "Home server URL": "Home server URL", + "Identity server URL": "Identity server URL", + "What does this mean?": "What does this mean?", + "Error decrypting audio": "Error decrypting audio", + "Error decrypting image": "Error decrypting image", + "Error decrypting video": "Error decrypting video", + "Add an Integration": "Add an Integration", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?", + "Removed or unknown message type": "Removed or unknown message type", + "URL Previews": "URL Previews", + "Drop file here to upload": "Drop file here to upload", + " (unsupported)": " (unsupported)", + "Ongoing conference call%(supportedText)s.": "Ongoing conference call%(supportedText)s.", + "Online": "Online", + "Idle": "Idle", + "Offline": "Offline", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s changed the room avatar to ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removed the room avatar.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s changed the avatar for %(roomName)s", + "Active call (%(roomName)s)": "Active call (%(roomName)s)", + "Accept": "Accept", + "Add": "Add", + "Admin Tools": "Admin Tools", + "Alias (optional)": "Alias (optional)", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.", + "Click here to join the discussion!": "Click here to join the discussion!", + "Close": "Close", + "%(count)s new messages": { + "one": "%(count)s new message", + "other": "%(count)s new messages" + }, + "Custom": "Custom", + "Decline": "Decline", + "Disable Notifications": "Disable Notifications", + "Enable Notifications": "Enable Notifications", + "Create new room": "Create new room", + "Room directory": "Room directory", + "Start chat": "Start chat", + "Create a new chat or reuse an existing one": "Create a new chat or reuse an existing one", + "Drop File Here": "Drop File Here", + "Encrypted by a verified device": "Encrypted by a verified device", + "Encrypted by an unverified device": "Encrypted by an unverified device", + "Encryption is enabled in this room": "Encryption is enabled in this room", + "Encryption is not enabled in this room": "Encryption is not enabled in this room", + "Error: Problem communicating with the given homeserver.": "Error: Problem communicating with the given homeserver.", + "Failed to fetch avatar URL": "Failed to fetch avatar URL", + "Failed to upload profile picture!": "Failed to upload profile picture!", + "Home": "Home", + "Incoming call from %(name)s": "Incoming call from %(name)s", + "Incoming video call from %(name)s": "Incoming video call from %(name)s", + "Incoming voice call from %(name)s": "Incoming voice call from %(name)s", + "Join as voice or video.": "Join as voice or video.", + "Last seen": "Last seen", + "Level:": "Level:", + "No display name": "No display name", + "Private Chat": "Private Chat", + "Public Chat": "Public Chat", + "Reason: %(reasonText)s": "Reason: %(reasonText)s", + "Rejoin": "Rejoin", + "Room contains unknown devices": "Room contains unknown devices", + "%(roomName)s does not exist.": "%(roomName)s does not exist.", + "%(roomName)s is not accessible at this time.": "%(roomName)s is not accessible at this time.", + "Seen by %(userName)s at %(dateTime)s": "Seen by %(userName)s at %(dateTime)s", + "Send anyway": "Send anyway", + "Show Text Formatting Toolbar": "Show Text Formatting Toolbar", + "Start authentication": "Start authentication", + "The phone number entered looks invalid": "The phone number entered looks invalid", + "This invitation was sent to an email address which is not associated with this account:": "This invitation was sent to an email address which is not associated with this account:", + "This room": "This room", + "To link to a room it must have an address.": "To link to a room it must have an address.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Unable to ascertain that the address this invite was sent to matches one associated with your account.", + "Undecryptable": "Undecryptable", + "Unencrypted message": "Unencrypted message", + "unknown caller": "unknown caller", + "Unnamed Room": "Unnamed Room", + "Unverified": "Unverified", + "Uploading %(filename)s and %(count)s others": { + "zero": "Uploading %(filename)s", + "one": "Uploading %(filename)s and %(count)s other", + "other": "Uploading %(filename)s and %(count)s others" + }, + "Upload new:": "Upload new:", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Username invalid: %(errMessage)s", + "Verified": "Verified", + "Would you like to accept or decline this invitation?": "Would you like to accept or decline this invitation?", + "You already have existing direct chats with this user:": "You already have existing direct chats with this user:", + "You have been banned from %(roomName)s by %(userName)s.": "You have been banned from %(roomName)s by %(userName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "You have been kicked from %(roomName)s by %(userName)s.", + "You may wish to login with a different account, or add this email to this account.": "You may wish to login with a different account, or add this email to this account.", + "You must register to use this functionality": "You must register to use this functionality", + "Your home server does not support device management.": "Your home server does not support device management.", + "(~%(count)s results)": { + "one": "(~%(count)s result)", + "other": "(~%(count)s results)" + }, + "New Password": "New Password", + "Device Name": "Device Name", + "Start chatting": "Start chatting", + "Start Chatting": "Start Chatting", + "Click on the button below to start chatting!": "Click on the button below to start chatting!", + "Username available": "Username available", + "Username not available": "Username not available", + "Something went wrong!": "Something went wrong!", + "This will be your account name on the homeserver, or you can pick a different server.": "This will be your account name on the homeserver, or you can pick a different server.", + "If you would like to create a Matrix account you can register now.": "If you would like to create a Matrix account you can register now.", + "If you already have a Matrix account you can log in instead.": "If you already have a Matrix account you can log in instead.", + "You are currently using Riot anonymously as a guest.": "You are currently using Riot anonymously as a guest.", + "Your browser does not support the required cryptography extensions": "Your browser does not support the required cryptography extensions", + "Not a valid Riot keyfile": "Not a valid Riot keyfile", + "Authentication check failed: incorrect password?": "Authentication check failed: incorrect password?", + "Disable Peer-to-Peer for 1:1 calls": "Disable Peer-to-Peer for 1:1 calls", + "Do you want to set an email address?": "Do you want to set an email address?", + "This will allow you to reset your password and receive notifications.": "This will allow you to reset your password and receive notifications.", + "Press to start a chat with someone": "Press to start a chat with someone", + "You're not in any rooms yet! Press to make a room or to browse the directory": "You're not in any rooms yet! Press to make a room or to browse the directory", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Skip": "Skip", + "Start verification": "Start verification", + "Share without verifying": "Share without verifying", + "Ignore request": "Ignore request", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "You added a new device '%(displayName)s', which is requesting encryption keys.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Your unverified device '%(displayName)s' is requesting encryption keys.", + "Encryption key request": "Encryption key request", + "Updates": "Updates", + "Check for update": "Check for update", + "Allow": "Allow", + "Cannot add any more widgets": "Cannot add any more widgets", + "Changes colour scheme of current room": "Changes color scheme of current room", + "Define the power level of a user": "Define the power level of a user", + "Do you want to load widget from URL:": "Do you want to load widget from URL:", + "Enable automatic language detection for syntax highlighting": "Enable automatic language detection for syntax highlighting", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Hide join/leave messages (invites/kicks/bans unaffected)", + "Integrations Error": "Integrations Error", + "NOTE: Apps are not end-to-end encrypted": "NOTE: Apps are not end-to-end encrypted", + "Sets the room topic": "Sets the room topic", + "The maximum permitted number of widgets have already been added to this room.": "The maximum permitted number of widgets have already been added to this room.", + "To get started, please pick a username!": "To get started, please pick a username!", + "Unable to create widget.": "Unable to create widget.", + "Unbans user with given id": "Unbans user with given id", + "You are not in this room.": "You are not in this room.", + "You do not have permission to do that in this room.": "You do not have permission to do that in this room.", + "Autocomplete Delay (ms):": "Autocomplete Delay (ms):", + "Loading device info...": "Loading device info...", + "Message removed by %(userId)s": "Message removed by %(userId)s", + "Example": "Example", + "Create": "Create", + "Pinned Messages": "Pinned Messages", + "Featured Rooms:": "Featured Rooms:", + "Featured Users:": "Featured Users:", + "Automatically replace plain text Emoji": "Automatically replace plain text Emoji", + "Failed to upload image": "Failed to upload image", + "Hide avatars in user and room mentions": "Hide avatars in user and room mentions", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s widget added by %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget removed by %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot check is currently unavailable on desktop - please use a web browser", + "Verifies a user, device, and pubkey tuple": "Verifies a user, device, and pubkey tuple", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s changed the pinned messages for the room.", + "Fetching third party location failed": "Fetching third party location failed", + "A new version of Riot is available.": "A new version of Riot is available.", + "Couldn't load home page": "Couldn't load home page", + "All notifications are currently disabled for all targets.": "All notifications are currently disabled for all targets.", + "Uploading report": "Uploading report", + "Sunday": "Sunday", + "Guests can join": "Guests can join", + "Messages sent by bot": "Messages sent by bot", + "Notification targets": "Notification targets", + "Failed to set direct chat tag": "Failed to set direct chat tag", + "Today": "Today", + "Failed to get protocol list from Home Server": "Failed to get protocol list from Home Server", + "You are not receiving desktop notifications": "You are not receiving desktop notifications", + "Friday": "Friday", + "Update": "Update", + "What's New": "What's New", + "Add an email address above to configure email notifications": "Add an email address above to configure email notifications", + "Expand panel": "Expand panel", + "On": "On", + "Filter room names": "Filter room names", + "Changelog": "Changelog", + "Waiting for response from server": "Waiting for response from server", + "Leave": "Leave", + "Advanced notification settings": "Advanced notification settings", + "delete the alias.": "delete the alias.", + "To return to your account in future you need to set a password": "To return to your account in future you need to set a password", + "Forget": "Forget", + "World readable": "World readable", + "#example": "#example", + "Hide panel": "Hide panel", + "You cannot delete this image. (%(code)s)": "You cannot delete this image. (%(code)s)", + "Cancel Sending": "Cancel Sending", + "Warning": "Warning", + "This Room": "This Room", + "The Home Server may be too old to support third party networks": "The Home Server may be too old to support third party networks", + "Noisy": "Noisy", + "Room not found": "Room not found", + "Messages containing my display name": "Messages containing my display name", + "Messages in one-to-one chats": "Messages in one-to-one chats", + "Unavailable": "Unavailable", + "View Decrypted Source": "View Decrypted Source", + "Failed to update keywords": "Failed to update keywords", + "remove %(name)s from the directory.": "remove %(name)s from the directory.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notifications on the following keywords follow rules which can’t be displayed here:", + "Please set a password!": "Please set a password!", + "You have successfully set a password!": "You have successfully set a password!", + "An error occurred whilst saving your email notification preferences.": "An error occurred while saving your email notification preferences.", + "Source URL": "Source URL", + "Failed to add tag %(tagName)s to room": "Failed to add tag %(tagName)s to room", + "Members": "Members", + "No update available.": "No update available.", + "Resend": "Resend", + "Files": "Files", + "Collecting app version information": "Collecting app version information", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Delete the room alias %(alias)s and remove %(name)s from the directory?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "This will allow you to return to your account after signing out, and sign in on other devices.", + "Keywords": "Keywords", + "Unpin Message": "Unpin Message", + "Enable notifications for this account": "Enable notifications for this account", + "Directory": "Directory", + "Failed to get public room list": "Failed to get public room list", + "Messages containing keywords": "Messages containing keywords", + "Error saving email notification preferences": "Error saving email notification preferences", + "Tuesday": "Tuesday", + "Enter keywords separated by a comma:": "Enter keywords separated by a comma:", + "Search…": "Search…", + "Remove %(name)s from the directory?": "Remove %(name)s from the directory?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.", + "Enable desktop notifications": "Enable desktop notifications", + "Unnamed room": "Unnamed room", + "Remember, you can always set an email address in user settings if you change your mind.": "Remember, you can always set an email address in user settings if you change your mind.", + "All messages (noisy)": "All messages (noisy)", + "Saturday": "Saturday", + "I understand the risks and wish to continue": "I understand the risks and wish to continue", + "Direct Chat": "Direct Chat", + "The server may be unavailable or overloaded": "The server may be unavailable or overloaded", + "Reject": "Reject", + "Failed to set Direct Message status of room": "Failed to set Direct Message status of room", + "Monday": "Monday", + "Remove from Directory": "Remove from Directory", + "Enable them now": "Enable them now", + "Messages containing my user name": "Messages containing my user name", + "Collecting logs": "Collecting logs", + "more": "more", + "Search for a room": "Search for a room", + "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", + "All Rooms": "All Rooms", + "Wednesday": "Wednesday", + "Quote": "Quote", + "Send": "Send", + "Send logs": "Send logs", + "All messages": "All messages", + "Call invitation": "Call invitation", + "Downloading update...": "Downloading update...", + "You have successfully set a password and an email address!": "You have successfully set a password and an email address!", + "What's new?": "What's new?", + "Notify me for anything else": "Notify me for anything else", + "When I'm invited to a room": "When I'm invited to a room", + "Can't update user notification settings": "Can't update user notification settings", + "Notify for all other messages/rooms": "Notify for all other messages/rooms", + "Unable to look up room ID from server": "Unable to look up room ID from server", + "Couldn't find a matching Matrix room": "Couldn't find a matching Matrix room", + "Invite to this room": "Invite to this room", + "You cannot delete this message. (%(code)s)": "You cannot delete this message. (%(code)s)", + "Thursday": "Thursday", + "Forward Message": "Forward Message", + "Unhide Preview": "Unhide Preview", + "Unable to join network": "Unable to join network", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply", + "Sorry, your browser is not able to run Riot.": "Sorry, your browser is not able to run Riot.", + "Uploaded on %(date)s by %(user)s": "Uploaded on %(date)s by %(user)s", + "Messages in group chats": "Messages in group chats", + "Yesterday": "Yesterday", + "Error encountered (%(errorDetail)s).": "Error encountered (%(errorDetail)s).", + "Low Priority": "Low Priority", + "Unable to fetch notification target list": "Unable to fetch notification target list", + "Set Password": "Set Password", + "Enable audible notifications in web client": "Enable audible notifications in web client", + "Off": "Off", + "Riot does not know how to join a room on this network": "Riot does not know how to join a room on this network", + "Mentions only": "Mentions only", + "Failed to remove tag %(tagName)s from room": "Failed to remove tag %(tagName)s from room", + "You can now return to your account after signing out, and sign in on other devices.": "You can now return to your account after signing out, and sign in on other devices.", + "Enable email notifications": "Enable email notifications", + "Login": "Login", + "No rooms to show": "No rooms to show", + "Download this file": "Download this file", + "Pin Message": "Pin Message", + "Failed to change settings": "Failed to change settings", + "View Source": "View Source", + "Collapse panel": "Collapse panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!", + "Checking for an update...": "Checking for an update...", + "There are advanced notifications which are not shown here": "There are advanced notifications which are not shown here", + "The platform you're on": "The platform you're on", + "The version of Riot.im": "The version of Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Whether or not you're logged in (we don't record your user name)", + "Your language of choice": "Your language of choice", + "Which officially provided instance you are using, if any": "Which officially provided instance you are using, if any", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Whether or not you're using the Richtext mode of the Rich Text Editor", + "Your homeserver's URL": "Your homeserver's URL", + "Your identity server's URL": "Your identity server's URL", + "e.g. %(exampleValue)s": "e.g. %(exampleValue)s", + "Every page you use in the app": "Every page you use in the app", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s on %(osName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop on %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot is not supported on mobile web. Install the app?", + "Unknown device": "Unknown device", + "You need to be using HTTPS to place a screen-sharing call.": "You need to be using HTTPS to place a screen-sharing call.", + "Welcome to Riot.im": "Welcome to Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralised, encrypted chat & collaboration powered by [matrix]", + "Chat with Riot Bot": "Chat with Riot Bot", + "Search the room directory": "Search the room directory", + "Get started with some tips from Riot Bot!": "Get started with some tips from Riot Bot!", + "General discussion about Matrix and Riot": "General discussion about Matrix and Riot", + "Discussion of all things Matrix!": "Discussion of all things Matrix!", + "Matrix technical discussions": "Matrix technical discussions", + "Running Matrix services": "Running Matrix services", + "Community-run support for Synapse": "Community-run support for Synapse", + "Admin support for Dendrite": "Admin support for Dendrite", + "Announcements about Synapse releases": "Announcements about Synapse releases", + "Support for those using and running matrix-appservice-irc": "Support for those using and running matrix-appservice-irc", + "Building services on Matrix": "Building services on Matrix", + "Support for those using the Matrix spec": "Support for those using the Matrix spec", + "Design and implementation of E2E in Matrix": "Design and implementation of E2E in Matrix", + "Implementing VR services with Matrix": "Implementing VR services with Matrix", + "Implementing VoIP services with Matrix": "Implementing VoIP services with Matrix", + "Discussion of the Identity Service API": "Discussion of the Identity Service API", + "Support for those using, running and writing other bridges": "Support for those using, running and writing other bridges", + "Contributing code to Matrix and Riot": "Contributing code to Matrix and Riot", + "Dev chat for the Riot/Web dev team": "Dev chat for the Riot/Web dev team", + "Dev chat for the Dendrite dev team": "Dev chat for the Dendrite dev team", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.", + "Co-ordination for Riot translators": "Co-ordination for Riot translators" +} \ No newline at end of file diff --git a/riot/i18n/eo.json b/riot/i18n/eo.json new file mode 100644 index 0000000..1681486 --- /dev/null +++ b/riot/i18n/eo.json @@ -0,0 +1,1213 @@ +{ + "This email address is already in use": "Tiu ĉi retpoŝtadreso jam estas uzata", + "This phone number is already in use": "Tiu ĉi telefona numero jam estas uzata", + "Failed to verify email address: make sure you clicked the link in the email": "Kontrolo de via retpoŝtadreso malsukcesis; certigu, ke vi alklakis la ligilon en la retletero", + "Call Timeout": "Voka Tempolimo", + "The remote side failed to pick up": "Kunvokonto malsukcesis respondi", + "Unable to capture screen": "Ekrano ne registreblas", + "You cannot place a call with yourself.": "Vi ne povas voki vin mem.", + "Warning!": "Averto!", + "Sign in with CAS": "Saluti per CAS", + "Sign in with": "Saluti per", + "Sign in": "Saluti", + "For security, this session has been signed out. Please sign in again.": "Pro sekurecaj kialoj, la seanco finiĝis. Bonvolu resaluti.", + "Upload Failed": "Alŝuto malsukcesis", + "Sun": "Dim", + "Mon": "Lun", + "Tue": "Mar", + "Wed": "Mer", + "Thu": "Ĵaŭ", + "Fri": "Ven", + "Sat": "Sab", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "Maj", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aŭg", + "Sep": "Sep", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dec", + "PM": "ptm", + "AM": "atm", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(fullYear)s %(monthName)s %(day)s %(time)s", + "Who would you like to add to this community?": "Kiun vi volas aldoni al tiu ĉi komunumo?", + "Invite new community members": "Invitu novajn komunumanojn", + "Name or matrix ID": "Nomo aŭ Matrix-identigilo", + "Invite to Community": "Inviti al komunumo", + "Existing Call": "Jama voko", + "You are already in a call.": "Vi jam partoprenas vokon.", + "VoIP is unsupported": "VoIP ne estas subtenata", + "You cannot place VoIP calls in this browser.": "VoIP-vokoj ne fareblas en tiu ĉi foliumilo.", + "Conference calls are not supported in this client": "Grupaj vokoj ne fareblas en tiu ĉi kliento", + "Conference calls are not supported in encrypted rooms": "Grupaj vokoj ne fareblas en ĉifritaj ĉambroj", + "Conference calling is in development and may not be reliable.": "Grupaj vokoj ankoraŭ evoluas kaj povas malbone funkcii.", + "Failed to set up conference call": "Komenco de grupa voko malsukcesis", + "Conference call failed.": "Grupa voko malsukcesis.", + "The file '%(fileName)s' failed to upload": "Elŝuto de la dosiero «%(fileName)s» malsukcesis", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "La dosiero «%(fileName)s» estas tro granda por la hejma servilo", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Averto: ajna persono aldonita al komunumo estos publike videbla al iu ajn, kiu konas la identigilon de tiu komunumo", + "Which rooms would you like to add to this community?": "Kiujn ĉambrojn vi volas aldoni al ĉi tiu komunumo?", + "Show these rooms to non-members on the community page and room list?": "Montri tiujn babilejojn al malanoj en la komunuma paĝo kaj listo de babilejoj?", + "Add rooms to the community": "Aldoni ĉambrojn al la komunumo", + "Room name or alias": "Nomo aŭ kromnomo de babilejo", + "Add to community": "Aldoni al komunumo", + "Failed to invite the following users to %(groupId)s:": "Malsukcesis inviti jenajn uzantojn al %(groupId)s:", + "Failed to invite users to community": "Malsukcesis inviti novajn uzantojn al komunumo", + "Failed to invite users to %(groupId)s": "Malsukcesis inviti uzantojn al %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Malsukcesis aldoni jenajn ĉambrojn al %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot ne havas permeson sciigi vin – bonvolu kontroli la agordojn de via foliumilo", + "Riot was not given permission to send notifications - please try again": "Riot ne ricevis permeson sendi sciigojn – bonvolu reprovi", + "Unable to enable Notifications": "Sciigoj ne sendeblas", + "This email address was not found": "Tiu ĉi retpoŝtadreso ne troviĝis", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Via retpoŝtareso ŝajne ne ligiĝas al Matrix-identigaĵo sur tiu ĉi hejmservilo.", + "Default": "Norma", + "Restricted": "Limigita", + "Moderator": "Ĉambrestro", + "Admin": "Administranto", + "Start a chat": "Komenci babilon", + "Who would you like to communicate with?": "Kun kiu vi volas komuniki?", + "Email, name or matrix ID": "Retpoŝtadreso, nomo, aŭ Matrix-identigaĵo", + "Start Chat": "Komenci babilon", + "Invite new room members": "Inviti novajn babilejanojn", + "Who would you like to add to this room?": "Kiun vi ŝatus aldoni al tiu ĉi babilejo?", + "Send Invites": "Sendi invitojn", + "Failed to invite user": "Malsukcesis inviti uzanton", + "Operation failed": "Ago malsukcesis", + "Failed to invite": "Invito malsukcesis", + "Failed to invite the following users to the %(roomName)s room:": "Malsukcesis inviti la jenajn uzantojn al la babilejo %(roomName)s:", + "You need to be logged in.": "Vi devas saluti.", + "You need to be able to invite users to do that.": "Vi bezonas permeson inviti uzantojn por tio.", + "Unable to create widget.": "Fenestraĵo ne kreeblas.", + "Failed to send request.": "Malsukcesis sendi peton.", + "This room is not recognised.": "Ĉi tiu babilejo ne estas rekonita.", + "Power level must be positive integer.": "Nivelo de potenco devas esti entjero pozitiva.", + "You are not in this room.": "Vi ne estas en tiu ĉi babilejo.", + "You do not have permission to do that in this room.": "Vi ne havas permeson fari tion en tiu babilejo.", + "Missing room_id in request": "En peto mankas «room_id»", + "Room %(roomId)s not visible": "babilejo %(roomId)s ne videblas", + "Missing user_id in request": "En peto mankas «user_id»", + "Usage": "Uzo", + "/ddg is not a command": "/ddg ne estas komando", + "To use it, just wait for autocomplete results to load and tab through them.": "Por uzi ĝin, atendu aperon de sugestaj rezultoj, kaj tabu tra ili.", + "Unrecognised room alias:": "Nerekonita babileja kromnomo:", + "Ignored user": "Malatentata uzanto", + "You are now ignoring %(userId)s": "Vi nun malatentas uzanton %(userId)s", + "Unignored user": "Reatentata uzanto", + "You are no longer ignoring %(userId)s": "Vi nun reatentas uzanton %(userId)s", + "Unknown (user, device) pair:": "Nekonata duopo (uzanto, aparato):", + "Device already verified!": "Aparato jam kontroliĝis!", + "WARNING: Device already verified, but keys do NOT MATCH!": "AVERTO: Aparato jam kontroliĝis, sed la ŝlosiloj NE KONGRUAS!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "AVERTO: KONTROLO DE ŜLOSILO MALSUKCESIS! Subskriba ŝlosilo por %(userId)s kaj aparato%(deviceId)s estas «%(fprint)s», kiu ne kongruas kun la donita ŝlosilo «%(fingerprint)s». Eble do via komuniko estas subaŭskultata!", + "Verified key": "Kontrolita ŝlosilo", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La donita subskriba ŝlosilo kongruas kun la ŝlosilo ricevita de %(userId)s por ĝia aparato %(deviceId)s. Aparato markita kiel kontrolita.", + "Unrecognised command:": "Nerekonita komando:", + "Reason": "Kialo", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s akceptis la inviton por %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s akceptis inviton.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s petis rettelefonan vokon.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invitis uzanton %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s forbaris uzanton %(targetName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s agordis sian vidigan nomon al %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s forigis sian vidigan nomon (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s forigis sian profilbildon.", + "%(senderName)s changed their profile picture.": "%(senderName)s ŝanĝis sian profilbildon.", + "%(senderName)s set a profile picture.": "%(senderName)s agordis profilbildon.", + "VoIP conference started.": "Rettelefona voko komenciĝis.", + "%(targetName)s joined the room.": "%(targetName)s venis en la babilejo.", + "VoIP conference finished.": "Rettelefona voko finiĝis.", + "%(targetName)s rejected the invitation.": "%(targetName)s rifuzis la inviton.", + "%(targetName)s left the room.": "%(targetName)s forlasis la babilejo.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s malbaris uzanton %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s forpelis uzanton %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s nuligis inviton por %(targetName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ŝanĝis la temon al «%(topic)s».", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s forigis nomon de la babilejo.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ŝanĝis nomon de la babilejo al %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sendis bildon.", + "Someone": "Iu", + "(not supported by this browser)": "(nesubtenata de tiu ĉi foliumilo)", + "%(senderName)s answered the call.": "%(senderName)s akceptis la vokon.", + "(could not connect media)": "(aŭdvidaĵoj ne kunigeblis)", + "(no answer)": "(sen respondo)", + "(unknown failure: %(reason)s)": "(nekonata eraro: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s finis la vokon.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s faris vokon de speco: %(callType)s.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s sendis babilejan inviton al %(targetDisplayName)s.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s videbligis estontan historion de la babilejo al ĉiuj babilejanoj, ekde la tempo de invito.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s videbligis estontan historion de la babilejo al ĉiuj babilejanoj, ekde la tempo de aliĝo.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s videbligis estontan historion de la babilejo al ĉiuj babilejanoj.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s videbligis estontan historion de la babilejo al ĉiuj.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s videbligis estontan historion de la babilejo al nekonata (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ŝaltis ĝiscelan ĉifradon (algoritmo: %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s al %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ŝanĝis la potencan nivelon de %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s ŝanĝis la fiksitajn mesaĝojn de la babilejo.", + "%(widgetName)s widget modified by %(senderName)s": "Fenestraĵon %(widgetName)s ŝanĝis %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "Fenestraĵon %(widgetName)s aldonis %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Fenestraĵon %(widgetName)s forigis %(senderName)s", + "%(displayName)s is typing": "%(displayName)s tajpas", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s kaj %(count)s aliaj tajpas", + "one": "%(names)s kaj unu alia tajpas" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s kaj %(lastPerson)s tajpas", + "Failure to create room": "Malsukcesis krei babilejon", + "Server may be unavailable, overloaded, or you hit a bug.": "Servilo povas esti neatingebla, troŝarĝita, aŭ vi renkontis cimon.", + "Unnamed Room": "Sennoma Babilejo", + "Your browser does not support the required cryptography extensions": "Via foliumilo ne subtenas la bezonatajn ĉifrajn kromprogramojn", + "Not a valid Riot keyfile": "Nevalida ŝlosila dosiero de Riot", + "Authentication check failed: incorrect password?": "Aŭtentiga kontrolo malsukcesis: ĉu pro malĝusta pasvorto?", + "Failed to join room": "Malsukcesis aliĝi al babilejo", + "Message Pinning": "Fikso de mesaĝoj", + "Disable Emoji suggestions while typing": "Malŝalti mienetajn sugestojn dum tajpado", + "Use compact timeline layout": "Uzi densan okazordan aranĝon", + "Hide removed messages": "Kaŝi forigitajn mesaĝojn", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Kaŝi envenajn/forlasajn mesaĝojn (sed ne invitajn/forpelajn/forbarajn)", + "Hide avatar changes": "Kaŝi profilbildajn ŝanĝojn", + "Hide display name changes": "Kaŝi ŝanĝojn de vidigaj nomoj", + "Hide read receipts": "Kaŝi legokonfrimojn", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Montri tempindikojn en 12-hora formo (ekz. 2:30 post.)", + "Always show message timestamps": "Ĉiam montri mesaĝajn tempindikojn", + "Autoplay GIFs and videos": "Aŭtomate ludi GIF-bildojn kaj videojn", + "Call Failed": "Voko malsukcesis", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "En la babilejo estas nekonataj aparatoj: se vi daŭrigos ne kontrolante ilin, iu povos subaŭskulti vian vokon.", + "Review Devices": "Kontroli aparatojn", + "Call Anyway": "Tamen voki", + "Answer Anyway": "Tamen respondi", + "Call": "Voki", + "Answer": "Respondi", + "Send anyway": "Tamen sendi", + "Send": "Sendi", + "Enable automatic language detection for syntax highlighting": "Ŝalti aŭtomatan rekonon de lingvo por sintaksa markado", + "Hide avatars in user and room mentions": "Kaŝi profilbildojn en mencioj de uzantoj kaj babilejoj", + "Disable big emoji in chat": "Malŝalti grandajn mienetojn en babilo", + "Don't send typing notifications": "Ne elsendi sciigojn pri tajpado", + "Automatically replace plain text Emoji": "Aŭtomate anstataŭigi tekstajn mienetojn", + "Mirror local video feed": "Speguli lokan videon", + "Disable Peer-to-Peer for 1:1 calls": "Malŝalti samtavolajn duopajn vokojn", + "Never send encrypted messages to unverified devices from this device": "Neniam sendi neĉifritajn mesaĝojn al nekontrolitaj aparatoj de tiu ĉi aparato", + "Never send encrypted messages to unverified devices in this room from this device": "Neniam sendi ĉifritajn mesaĝojn al nekontrolitaj aparatoj en tiu ĉi babilejo el tiu ĉi aparato", + "Enable inline URL previews by default": "Ŝalti entekstan antaŭrigardon al retadresoj", + "Enable URL previews for this room (only affects you)": "Ŝalti URL-antaŭrigardon en ĉi tiu babilejo (nur por vi)", + "Enable URL previews by default for participants in this room": "Ŝalti URL-antaŭrigardon por anoj de ĉi tiu babilejo", + "Room Colour": "Babilejo-koloro", + "Active call (%(roomName)s)": "Aktiva voko (%(roomName)s)", + "unknown caller": "nekonata vokanto", + "Incoming voice call from %(name)s": "Envena voĉvoko de %(name)s", + "Incoming video call from %(name)s": "Envena vidvoko de %(name)s", + "Incoming call from %(name)s": "Envena voko de %(name)s", + "Decline": "Rifuzi", + "Accept": "Akcepti", + "Error": "Eraro", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Teksta mesaĝo sendiĝis al +%(msisdn)s. Bonvolu enigi la entenatan kontrolan kodon", + "Incorrect verification code": "Malĝusta kontrola kodo", + "Enter Code": "Enigu kodon", + "Submit": "Sendi", + "Phone": "Telefono", + "Add phone number": "Aldoni telefonan numeron", + "Add": "Aldoni", + "Failed to upload profile picture!": "Malsukcesis alŝuti vian profilbildon!", + "Upload new:": "Alŝuti novan:", + "No display name": "Sen vidiga nomo", + "New passwords don't match": "Novaj pasvortoj ne kongruas", + "Passwords can't be empty": "Pasvortoj ne povas esti malplenaj", + "Continue": "Daŭrigi", + "Export E2E room keys": "Elporti ĝiscele ĉifrajn ŝlosilojn de la babilejo", + "Do you want to set an email address?": "Ĉu vi volas agordi retpoŝtadreson?", + "Current password": "Nuna pasvorto", + "Password": "Pasvorto", + "New Password": "Nova pasvorto", + "Confirm password": "Konfirmi pasvorton", + "Change Password": "Ŝanĝi pasvorton", + "Your home server does not support device management.": "Via hejma servilo ne subtenas administradon de aparatoj.", + "Unable to load device list": "Listo de aparatoj ne legeblas", + "Authentication": "Aŭtentigo", + "Delete %(count)s devices": { + "other": "Forigi %(count)s aparatojn", + "one": "Forigi aparaton" + }, + "Device ID": "Aparata identigaĵo", + "Device Name": "Aparata nomo", + "Last seen": "Laste vidita", + "Select devices": "Elekti aparatojn", + "Failed to set display name": "Malsukcesis agordi vidigan nomon", + "Disable Notifications": "Malŝalti sciigojn", + "Enable Notifications": "Ŝalti sciigojn", + "Cannot add any more widgets": "Pluaj fenestraĵoj ne aldoneblas", + "The maximum permitted number of widgets have already been added to this room.": "La maksimuma permesata nombro de fenestraĵoj jam aldoniĝis al tiu babilejo.", + "Add a widget": "Aldoni fenestraĵon", + "Drop File Here": "Demetu dosieron tien ĉi", + "Drop file here to upload": "Demetu dosieron tien ĉi por ĝin alŝuti", + " (unsupported)": " (nesubtenata)", + "Join as voice or video.": "Aliĝu al voko kun voĉovideo.", + "Ongoing conference call%(supportedText)s.": "Nuntempa voko%(supportedText)s.", + "%(senderName)s sent an image": "%(senderName)s sendis bildon", + "%(senderName)s sent a video": "%(senderName)s sendis videon", + "%(senderName)s uploaded a file": "%(senderName)s alŝutis dosieron", + "Options": "Agordoj", + "Undecryptable": "Nemalĉifrebla", + "Encrypted by a verified device": "Ĉifrita de kontrolita aparato", + "Encrypted by an unverified device": "Ĉifrita de nekontrolita aparato", + "Unencrypted message": "Neĉifrita mesaĝo", + "Please select the destination room for this message": "Bonvolu elekti celan babilejon por tiu mesaĝo", + "Blacklisted": "Senpova legi ĉifritajn mesaĝojn", + "Verified": "Kontrolita", + "Unverified": "Nekontrolita", + "device id: ": "aparata identigaĵo: ", + "Disinvite": "Malinviti", + "Kick": "Forpeli", + "Disinvite this user?": "Ĉu malinviti ĉi tiun uzanton?", + "Kick this user?": "Ĉu forpeli ĉi tiun uzanton?", + "Failed to kick": "Malsukcesis forpelo", + "Unban": "Malforbari", + "Ban": "Forbari", + "Unban this user?": "Ĉu malforbari ĉi tiun uzanton?", + "Ban this user?": "Ĉu forbari ĉi tiun uzanton?", + "Failed to ban user": "Malsukcesis forbari uzanton", + "Failed to mute user": "Malsukcesis silentigi uzanton", + "Failed to toggle moderator status": "Malsukcesis baskuligi estrecon", + "Failed to change power level": "Malsukcesis ŝanĝi nivelon de potenco", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Tiun ĉi ŝanĝon vi ne povos fareblos, ĉar vi donas al la uzanto la saman nivelon de potenco, kiun havas vi mem.", + "Are you sure?": "Ĉu vi certas?", + "No devices with registered encryption keys": "Neniuj aparatoj kun registritaj ĉifraj ŝlosiloj", + "Devices": "Aparatoj", + "Unignore": "Reatenti", + "Ignore": "Malatenti", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ŝanĝo de pasvorto nuntempe nuligos ĉiujn ĝiscele ĉifrajn ŝlosilojn sur ĉiuj viaj aparatoj. Tio igos ĉifritajn babilajn historiojn nelegeblaj, krom se vi unue elportos viajn babilejajn ŝlosilojn kaj reenportos ilin poste. Estonte tio pliboniĝos.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s ŝanĝis la profilbildon de %(roomName)s", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Vi estas direktota al ekstera retejo por aŭtentigi vian konton por uzo kun %(integrationsUrl)s. Ĉu vi volas daŭrigi tion?", + "Jump to read receipt": "Salti al legokonfirmo", + "Mention": "Mencio", + "Invite": "Inviti", + "User Options": "Agordoj de uzanto", + "Direct chats": "Rektaj babiloj", + "Unmute": "Malsilentigi", + "Mute": "Silentigi", + "Revoke Moderator": "Forigi estrajn rajtojn", + "Make Moderator": "Kunestrigi", + "Admin Tools": "Estriloj", + "Level:": "Nivelo:", + "and %(count)s others...": { + "other": "kaj %(count)s aliaj…", + "one": "kaj unu alia…" + }, + "Invited": "Invititaj", + "Filter room members": "Filtri babilejanojn", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (potenco je %(powerLevelNumber)s)", + "Attachment": "Kunsendaĵo", + "Upload Files": "Alŝuti dosierojn", + "Are you sure you want to upload the following files?": "Ĉu vi certe volas alŝuti la jenajn dosierojn?", + "Encrypted room": "Ĉifrita babilejo", + "Unencrypted room": "Neĉifrita babilejo", + "Hangup": "Fini vokon", + "Voice call": "Voĉvoko", + "Video call": "Vidvoko", + "Upload file": "Alŝuti dosieron", + "Show Text Formatting Toolbar": "Montri tekstaranĝan breton", + "You do not have permission to post to this room": "Mankas al vi permeso afiŝi en tiu babilejo", + "Turn Markdown on": "Ŝalti Marksubon", + "Turn Markdown off": "Malŝalti Marksubon", + "Hide Text Formatting Toolbar": "Kaŝi tekstaranĝan breton", + "Server error": "Servila eraro", + "Server unavailable, overloaded, or something else went wrong.": "Servilo estas neatingebla, troŝarĝita, aŭ io alia misokazis.", + "Command error": "Komanda eraro", + "bold": "grasa", + "italic": "kursiva", + "strike": "trastrekita", + "underline": "substrekita", + "code": "kodo", + "quote": "citaĵo", + "bullet": "bulo", + "numbullet": "numerita", + "Markdown is disabled": "Marksubo estas malŝaltita", + "Markdown is enabled": "Marksubo estas ŝaltita", + "Unpin Message": "Malfiksi mesaĝon", + "Jump to message": "Salti al mesaĝo", + "No pinned messages.": "Neniuj fiksitaj mesaĝoj.", + "Loading...": "Enleganta…", + "Pinned Messages": "Fiksitaj mesaĝoj", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)st", + "Online for %(duration)s": "Enreta jam je %(duration)s", + "Idle for %(duration)s": "Senfara jam je %(duration)s", + "Offline for %(duration)s": "Eksterreta jam je %(duration)s", + "Unknown for %(duration)s": "Nekonata jam je %(duration)s", + "Online": "Enreta", + "Idle": "Senfara", + "Offline": "Eksterreta", + "Unknown": "Nekonata", + "Seen by %(userName)s at %(dateTime)s": "Vidita de %(userName)s je %(dateTime)s", + "Unnamed room": "Sennoma babilejo", + "World readable": "Legebla de ĉiuj", + "Guests can join": "Gastoj povas aliĝi", + "No rooms to show": "Neniuj ĉambroj montreblas", + "Failed to set avatar.": "Malsukcesis agordi profilbildon.", + "Save": "Konservi", + "(~%(count)s results)": { + "other": "(~%(count)s rezultoj)", + "one": "(~%(count)s rezulto)" + }, + "Join Room": "Aliĝi al Babilejo", + "Upload avatar": "Alŝuti profilbildon", + "Remove avatar": "Forigi profilbildon", + "Settings": "Agordoj", + "Forget room": "Forgesi babilejon", + "Search": "Serĉi", + "Show panel": "Montri panelon", + "Drop here to favourite": "Demetu tien ĉi por ŝati", + "Drop here to tag direct chat": "Demeti tien ĉi por marki rektan babilon", + "Drop here to restore": "Demeti tien ĉi por reigi", + "Drop here to demote": "Demeti tien ĉi por malpligravigi", + "Drop here to tag %(section)s": "Demeti tien ĉi por marki %(section)s", + "Press to start a chat with someone": "Premu por komenci babilon kun iu", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Vi ankoraŭ estas en neniuj Babilejoj! Premu por krei Babilejon aŭ por esplori la Babilejujon", + "Community Invites": "Komunumaj invitoj", + "Invites": "Invitoj", + "Favourites": "Ŝatataj", + "People": "Homoj", + "Rooms": "Ĉambroj", + "Low priority": "Malpli gravaj", + "Historical": "Estintaj", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Ne certigeblas, ke la adreso, kien ĉi tiu invito sendiĝis, kongruas kun tiu rilata al via konto.", + "This invitation was sent to an email address which is not associated with this account:": "Ĉi tiu invito sendiĝis al retpoŝtadreso, kiu ne rilatas al ĉi tiu konto:", + "You may wish to login with a different account, or add this email to this account.": "Vi povas saluti per alia konto, aŭ aldoni ĉi tiun retpoŝtadreson al tiu ĉi konto.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s vin invitis al ĉi tiu babilejo", + "Would you like to accept or decline this invitation?": "Ĉu vi volas akceptirifuzi ĉi tiun inviton?", + "Reason: %(reasonText)s": "Kialo: %(reasonText)s", + "Rejoin": "Realiĝi", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s vin forpelis de %(roomName)s.", + "You have been kicked from this room by %(userName)s.": "%(userName)s vin forpelis de tiu babilejo.", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s vi forbaris de %(roomName)s.", + "You have been banned from this room by %(userName)s.": "%(userName)s vin forbaris de tiu babilejo.", + "This room": "Ĉi tiu babilejo", + "%(roomName)s does not exist.": "%(roomName)s ne ekzistas.", + "%(roomName)s is not accessible at this time.": "%(roomName)s ne estas atingebla nun.", + "You are trying to access %(roomName)s.": "Vi provas atingi %(roomName)s.", + "You are trying to access a room.": "Vi provas aliri babilejon.", + "Click here to join the discussion!": "Klaku ĉi tie por aliĝi al la diskuto!", + "This is a preview of this room. Room interactions have been disabled": "Tio ĉi estas antaŭrigardo al la ĉambro. Ĉambraj interagoj estas malŝaltitaj", + "To change the room's avatar, you must be a": "Por ŝanĝi la ĉambran profilbildon, vi devas esti", + "To change the room's name, you must be a": "Por ŝanĝi la ĉambran nomon, videvas esti", + "To change the room's main address, you must be a": "Por ŝanĝi la ĉambran ĉefadreson, vi devas esti", + "To change the room's history visibility, you must be a": "Por ŝanĝi videblecon de la ĉambra historio, vi devas esti", + "To change the permissions in the room, you must be a": "Por ŝanĝi permesojn en la ĉambro, vi devas esti", + "To change the topic, you must be a": "Por ŝanĝi la temon, vi devas esti", + "To modify widgets in the room, you must be a": "Por ŝanĝi fenestraĵojn en la ĉambro, vi devas esti", + "Failed to unban": "Malsukcesis malforbari", + "Banned by %(displayName)s": "Forbarita de %(displayName)s", + "Privacy warning": "Priprivata averto", + "Changes to who can read history will only apply to future messages in this room": "Ŝanĝoj al videbleco de la historio nur efektiviĝos nur por estontaj mesaĝoj en ĉi tiu ĉambro", + "The visibility of existing history will be unchanged": "Videbleco de la jama historio restos senŝanĝa", + "unknown error code": "nekonata kodo de eraro", + "Failed to forget room %(errCode)s": "Malsukcesis forgesi ĉambron %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "Ĝiscela ĉifrado estas beta-versia kaj eble ne dependebla", + "You should not yet trust it to secure data": "Ankoraŭ ne fidu ĝin pri sekurigo de datumoj", + "Devices will not yet be able to decrypt history from before they joined the room": "Aparatoj ankoraŭ ne povos malĉifri historion de antaŭ ilia aliĝo", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Post ĉifrado ŝaltiĝos en ĉambro, ĝi ne malŝalteblos (ankoraŭ)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Ĉifritaj mesaĝoj ne videblos en klinteoj, kiuj ankoraŭ ne subtenas ĉifradon", + "Enable encryption": "Ŝalti ĉifradon", + "(warning: cannot be disabled again!)": "(averto: ĝi ne malŝalteblas poste!)", + "Encryption is enabled in this room": "Ĉifrado estas ŝaltita en tiu ĉi ĉambro", + "Encryption is not enabled in this room": "Ĉifrado ne estas ŝaltita en tiu ĉi ĉambro", + "Privileged Users": "Privilegiuloj", + "No users have specific privileges in this room": "Neniuj uzantoj havas specialajn privilegiojn en tiu ĉi ĉambro", + "Banned users": "Forbaritaj uzantoj", + "This room is not accessible by remote Matrix servers": "Ĉi tiu ĉambro ne atingeblas por foraj serviloj de Matrix", + "Leave room": "Eliri babilejon", + "Favourite": "Ŝatata", + "Tagged as: ": "Etikedita kiel: ", + "To link to a room it must have an address.": "Por esti ligebla, ĉambro devas havi adreson.", + "Guests cannot join this room even if explicitly invited.": "Gastoj ne povas aliĝi ĉi tiun ĉambron eĉ kun malimplica invito.", + "Click here to fix": "Klaku ĉi tie por riparo", + "Who can access this room?": "Kiu povas aliri ĉi tiun ĉambron?", + "Only people who have been invited": "Nur invititaj uzantoj", + "Anyone who knows the room's link, apart from guests": "Iu ajn kun la ligilo, krom gastoj", + "Anyone who knows the room's link, including guests": "Iu ajn kun la ligilo, inkluzive gastojn", + "Publish this room to the public in %(domain)s's room directory?": "Ĉu publikigi ĉi tiun ĉambron al la publika ĉambrujo de %(domain)s?", + "Who can read history?": "Kiu povas legi la historion?", + "Anyone": "Iu ajn", + "Members only (since the point in time of selecting this option)": "Nur ĉambranoj (ekde ĉi tiu elekto)", + "Members only (since they were invited)": "Nur ĉambranoj (ekde la invito)", + "Members only (since they joined)": "Nur ĉambranoj (ekde la aliĝo)", + "Permissions": "Permesoj", + "The default role for new room members is": "La implicita rolo de novaj ĉambranoj estas", + "To send messages, you must be a": "Por sendi mesaĝojn, vi devas esti", + "To invite users into the room, you must be a": "Por inviti uzantojn al la ĉambro, vi devas esti", + "To configure the room, you must be a": "Por agordi la ĉambron, vi devas esti", + "To kick users, you must be a": "Por forpeli uzantojn, vi devas esti", + "To ban users, you must be a": "Por forbari uzantojn, vi devas esti", + "To remove other users' messages, you must be a": "Por forigi mesaĝojn de aliaj uzantoj, vi devas esti", + "To send events of type , you must be a": "Por sendi okazojn de tipo , vi devas esti", + "Advanced": "Specialaj", + "This room's internal ID is": "Interna identigaĵo de tiu ĉi ĉambro estas", + "Add a topic": "Aldoni temon", + "Cancel": "Nuligi", + "Scroll to unread messages": "Rulumi al nelegitaj mesaĝoj", + "Jump to first unread message.": "Salti al unua nelegita mesaĝo.", + "Close": "Fermi", + "Invalid alias format": "Malvalida formo de kromnomo", + "'%(alias)s' is not a valid format for an alias": "‹%(alias)s› ne estas valida formo de kromnomo", + "Invalid address format": "Malvalida formo de adreso", + "'%(alias)s' is not a valid format for an address": "‹%(alias)s› ne estas valida formo de adreso", + "not specified": "nespecifita", + "not set": "neagordita", + "Remote addresses for this room:": "Foraj adresoj de ĉi tiu ĉambro:", + "Addresses": "Adresoj", + "The main address for this room is": "La ĉefadreso por ĉi tiu babilejo estas", + "Local addresses for this room:": "Lokaj adresoj por ĉi tiu babilejo:", + "This room has no local addresses": "Ĉi tiu babilejo ne havas lokajn adresojn", + "New address (e.g. #foo:%(localDomain)s)": "Nova adreso (ekz-e #io:%(localDomain)s)", + "Invalid community ID": "Malvalida komunuma identigaĵo", + "'%(groupId)s' is not a valid community ID": "‹%(groupId)s› ne estas valida komunuma identigaĵo", + "New community ID (e.g. +foo:%(localDomain)s)": "Nova komunuma identigaĵo (ekz-e +io:%(localDomain)s)", + "You have enabled URL previews by default.": "Vi ŝaltis implicitajn antaŭrigardojn al retpaĝoj.", + "You have disabled URL previews by default.": "Vi malŝaltis implicitajn antaŭrigardojn al retpaĝoj.", + "URL previews are enabled by default for participants in this room.": "Antaŭrigardoj de URL-oj estas implicite ŝaltitaj por anoj de tiu ĉi babilejo.", + "URL previews are disabled by default for participants in this room.": "Antaŭrigardoj de URL-oj estas implicite malŝaltitaj por anoj de tiu ĉi babilejo.", + "URL Previews": "Antaŭrigardoj al retpaĝoj", + "Error decrypting audio": "Eraro malĉifrante sonon", + "Error decrypting attachment": "Eraro malĉifrante kunsendaĵon", + "Decrypt %(text)s": "Malĉifri %(text)s", + "Download %(text)s": "Elŝuti %(text)s", + "Invalid file%(extra)s": "Malvalida dosiero%(extra)s", + "Error decrypting image": "Eraro malĉifrante bildon", + "Error decrypting video": "Eraro malĉifrante videon", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s forigis la ĉambran profilbildon.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s agordis la ĉambran profilbildon al ", + "Copied!": "Kopiita!", + "Failed to copy": "Malsukcesis kopii", + "Add an Integration": "Aldoni integron", + "Removed or unknown message type": "Forigita aŭ nekonata tipo de mesaĝo", + "Message removed by %(userId)s": "Mesaĝo forigita de %(userId)s", + "Message removed": "Mesaĝo forigita", + "Custom Server Options": "Propraj servilaj elektoj", + "Dismiss": "Rezigni", + "powered by Matrix": "funkciigata de Matrix", + "Warning": "Averto", + "Remove": "Forigi", + "Edit": "Redakti", + "Failed to change password. Is your password correct?": "Malsukcesis ŝanĝi la pasvorton. Ĉu via pasvorto estas ĝusta?", + "Leave": "Foriri", + "Register": "Registriĝi", + "Add rooms to this community": "Aldoni ĉambrojn al ĉi tiu komunumo", + "Robot check is currently unavailable on desktop - please use a web browser": "Kontrolo kontraŭ robotoj ne disponeblas sur labortablo – bonvolu uzi retan foliumilon", + "This Home Server would like to make sure you are not a robot": "Tiu ĉi hejma servilo volas certigi, ke vi ne estas roboto", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix per alia adreso de hejma servilo.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Tio ĉi permesos al vi uzi ĉi tiun aplikaĵon kun jama konto de Matrix el alia hejma servilo.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Vi ankaŭ povas agordi propran identigan servilon, sed tio kutime malebligas interagadon kun uzantkontoj bazitaj sur retpoŝto.", + "To continue, please enter your password.": "Por daŭrigi, bonvolu enigi vian pasvorton.", + "Password:": "Pasvorto:", + "An email has been sent to %(emailAddress)s": "Retletero sendiĝis al %(emailAddress)s", + "Please check your email to continue registration.": "Bonvolu kontroli vian retpoŝton por daŭrigi la registriĝon.", + "Token incorrect": "Malĝusta ĵetono", + "A text message has been sent to %(msisdn)s": "Tekstmesaĝo sendiĝîs al %(msisdn)s", + "Please enter the code it contains:": "Bonvolu enigi la enhavatan kodon:", + "Start authentication": "Komenci aŭtentigon", + "Username on %(hs)s": "Salutnomo je %(hs)s", + "User name": "Salutnomo", + "Mobile phone number": "Telefona numero", + "Forgot your password?": "Ĉu vi forgesis vian pasvorton?", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Email address": "Retpoŝtadreso", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Se vi ne enigos retpoŝtadreson, vi ne povos restarigi vian pasvorton. Ĉu vi certas?", + "Email address (optional)": "Retpoŝtadreso (malnepra)", + "You are registering with %(SelectedTeamName)s": "Vi registriĝas kun %(SelectedTeamName)s", + "Mobile phone number (optional)": "Telefona numero (malnepra)", + "Default server": "Implicita servilo", + "Custom server": "Propra servilo", + "Home server URL": "Adreso de hejma servilo", + "Identity server URL": "URL de identiga servilo", + "What does this mean?": "Kion ĝi signifas?", + "Remove from community": "Forigi de komunumo", + "Disinvite this user from community?": "Ĉu malinviti ĉi tiun uzanton de komunumo?", + "Remove this user from community?": "Ĉu forigi ĉi tiun uzanton de komunumo?", + "Failed to withdraw invitation": "Malsukcesis malinviti", + "Failed to remove user from community": "Malsukcesis forigi uzanton de komunumo", + "Filter community members": "Filtri komunumanojn", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Ĉu vi certe volas forigi ‹%(roomName)s› de %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Per forigo de ĉambro de la komunumo vi ankaŭ forigos ĝin de la paĝo de tiu komunumo.", + "Failed to remove room from community": "Malsukcesis forigi ĉambron de komunumo", + "Failed to remove '%(roomName)s' from %(groupId)s": "Malsukcesis forigi ‹%(roomName)s› de %(groupId)s", + "Something went wrong!": "Io misokazis!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Videbleco de ‹%(roomName)s› en %(groupId)s ne ĝisdatigeblis.", + "Visibility in Room List": "Videbleco en Listo de ĉambroj", + "Visible to everyone": "Videbla al ĉiuj", + "Only visible to community members": "Videbla nur al komunumanoj", + "Filter community rooms": "Filtri komunumajn ĉambrojn", + "Something went wrong when trying to get your communities.": "Io misokazis dum legado de viaj komunumoj.", + "You're not currently a member of any communities.": "Vi nuntempe apartenas al neniu komunumo.", + "Unknown Address": "Nekonata adreso", + "NOTE: Apps are not end-to-end encrypted": "RIMARKO: Aplikaĝoj ne estas ĝiscele ĉifritaj", + "Do you want to load widget from URL:": "Ĉu vi volas enlegi fenestraĵon el URL:", + "Allow": "Permesi", + "Delete Widget": "Forigi fenestraĵon", + "Delete widget": "Forigi fenestraĵon", + "Revoke widget access": "Malvalidigi atingon de fenestraĵo", + "Create new room": "Krei novan ĉambron", + "Verify...": "Kontroli…", + "No results": "Neniuj rezultoj", + "Delete": "Forigi", + "Communities": "Komunumoj", + "Home": "Hejmo", + "Integrations Error": "Integra eraro", + "Could not connect to the integration server": "Malsukcesis konektiĝi al la integra servilo", + "Manage Integrations": "Administri integrojn", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje aliĝis", + "one": "%(severalUsers)saliĝis" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s%(count)s-foje aliĝis", + "one": "%(oneUser)saliĝis" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje foriris", + "one": "%(severalUsers)sforiris" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s%(count)s-foje foriris", + "one": "%(oneUser)sforiris" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje aliĝis kaj foriris", + "one": "%(severalUsers)saliĝis kaj foriris" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s%(count)s-foje aliĝis kaj foriris", + "one": "%(oneUser)saliĝis kaj foriris" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje foriris kaj realiĝis", + "one": "%(severalUsers)sforiris kaj realiĝis" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s%(count)s-foje foriris kaj realiĝis", + "one": "%(oneUser)sforiris kaj realiĝis" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje rifuzis inviton", + "one": "%(severalUsers)srifuzis inviton" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s%(count)s-foje rifuzis inviton", + "one": "%(oneUser)srifuzis inviton" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje malinvitiĝis", + "one": "%(severalUsers)smalinvitiĝis" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s%(count)s-foje malinvitiĝis", + "one": "%(oneUser)smalinvitiĝis" + }, + "were invited %(count)s times": { + "other": "%(count)s-foje invitiĝis", + "one": "invitiĝis" + }, + "was invited %(count)s times": { + "other": "%(count)s-foje invitiĝis", + "one": "invitiĝis" + }, + "were banned %(count)s times": { + "other": "%(count)s-foje forbariĝis", + "one": "forbariĝis" + }, + "was banned %(count)s times": { + "other": "%(count)s-foje forbariĝis", + "one": "forbariĝis" + }, + "were unbanned %(count)s times": { + "other": "%(count)s-foje malforbariĝis", + "one": "malforbariĝis" + }, + "was unbanned %(count)s times": { + "other": "%(count)s-foje malforbariĝis", + "one": "malforbariĝis" + }, + "were kicked %(count)s times": { + "other": "%(count)s-foje forpeliĝis", + "one": "forpeliĝis" + }, + "was kicked %(count)s times": { + "other": "%(count)s-foje forpeliĝis", + "one": "forpeliĝis" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje sanĝis sian nomon", + "one": "%(severalUsers)sŝanĝis sian nomon" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s%(count)s-foje ŝanĝis sian nomon", + "one": "%(oneUser)sŝanĝis sian nomon" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s%(count)s-foje ŝanĝis sian profilbildon", + "one": "%(severalUsers)sŝanĝis sian profilbildon" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s%(count)s-foje ŝanĝis sian profilbildon", + "one": "%(oneUser)sŝanĝis sian profilbildon" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s kaj %(count)s aliaj", + "one": "%(items)s kaj unu alia" + }, + "%(items)s and %(lastItem)s": "%(items)s kaj %(lastItem)s", + "collapse": "maletendi", + "expand": "etendi", + "Custom of %(powerLevel)s": "Propra nivelo %(powerLevel)s", + "Custom level": "Propra nivelo", + "Room directory": "Ĉambrujo", + "Username not available": "Salutnomo ne disponeblas", + "Username invalid: %(errMessage)s": "Salutnomo ne validas: %(errMessage)s", + "Username available": "Salutnomo disponeblas", + "To get started, please pick a username!": "Por komenci, bonvolu elekti salutnomon!", + "Incorrect username and/or password.": "Malĝusta salutnomo kaj/aŭ pasvorto.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Salutnomoj enhavu nur literojn, numerojn, punktojn, streketojn, kaj substrekojn.", + "You need to enter a user name.": "Vi devas enigi salutnomon.", + "Start chat": "Komenci babilon", + "And %(count)s more...": { + "other": "Kaj %(count)s pliaj…" + }, + "ex. @bob:example.com": "ekz-e @nomo:ekzemplo.net", + "Add User": "Aldoni uzanton", + "Matrix ID": "Identigaĵo en Matrix", + "Matrix Room ID": "Ĉambra identigaĵo en Matrix", + "email address": "retpoŝtadreso", + "Try using one of the following valid address types: %(validTypesList)s.": "Provu unu el la sekvaj validaj tipoj de adreso: %(validTypesList)s.", + "You have entered an invalid address.": "Vi enigis malvalidan adreson.", + "Create a new chat or reuse an existing one": "Kreu novan babilon aŭ aliĝu al jama", + "Start new chat": "Komenci novan babilon", + "You already have existing direct chats with this user:": "Vi jam havas rekte babilas kun ĉi tiu uzanto:", + "Start chatting": "Komenci babilon", + "Click on the button below to start chatting!": "Alklaku la butonon sube por komenci babilon!", + "Start Chatting": "Komenci babilon", + "Confirm Removal": "Konfirmi forigon", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Ĉu vi certe volas forigi ĉi tiun okazaĵon? Per ŝanĝo de la ĉambra nomo aŭ temo, la ŝanĝo eble malfariĝos.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Komunuma identigaĵo povas enhavi nur signojn a-z, 0-9, aŭ ‹=_-./› (malinkluzive la citilojn)", + "Something went wrong whilst creating your community": "Io misokazis dum kreado de via komunumo", + "Create Community": "Krei komunumon", + "Community Name": "Komunuma nomo", + "Example": "Ekzemplo", + "Community ID": "Komunuma identigaĵo", + "example": "ekzemplo", + "Create": "Krei", + "Create Room": "Krei ĉambron", + "Room name (optional)": "Ĉambra nomo (malnepra)", + "Advanced options": "Specialaj agordoj", + "Block users on other matrix homeservers from joining this room": "Forbari uzantojn el aliaj hejmserviloj for de ĉi tiu ĉambro", + "This setting cannot be changed later!": "Tiu ĉi agordo ne ŝanĝeblas poste!", + "Unknown error": "Nekonata eraro", + "Incorrect password": "Malĝusta pasvorto", + "Deactivate Account": "Malaktivigi konton", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Por kontroli ke tiu ĉi aparato estas fidinda, bonvolu kontakti ties posedanton per alia maniero (ekz-e persone aŭ telefone) kaj demandi ĝin ĉu la ŝlosilo, kiun ĝi vidas en agordoj de uzanto ĉe si, kongruas kun la ĉi-suba ŝlosilo:", + "Device name": "Aparata nomo", + "Device key": "Aparata ŝlosilo", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Se ĝi kongruas, premu la kontrolan butonon sube. Se ne, tiuokaze iu alia interkaptas ĉi tiun aparaton, kaj eble vi premu la malpermesan butonon anstataŭe.", + "In future this verification process will be more sophisticated.": "Ni planas plifaciligi la kontrolan procedon estontece.", + "Verify device": "Kontroli aparaton", + "I verify that the keys match": "Mi kontrolas, ke la ŝlosiloj kongruas", + "An error has occurred.": "Eraro okazis.", + "OK": "Bone", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Vi aldonis novan aparaton “%(displayName)s”, kiu petas ĉifrajn ŝlosilojn.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Via nekontrolita aparato ‹%(displayName)s› petas ĉifrajn ŝlosilojn.", + "Start verification": "Komenci kontrolon", + "Share without verifying": "Kunhavigi sen kontrolo", + "Ignore request": "Malatenti peton", + "Loading device info...": "Enleganta informojn pri aparato…", + "Encryption key request": "Peto por ĉifra ŝlosilo", + "Unable to restore session": "Seanco ne restaŭreblas", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se vi antaŭe uzis pli novan version de Riot, via seanco eble ne kongruos kun ĉi tiu versio. Fermu ĉi tiun fenestron kaj revenu al la pli nova versio.", + "Invalid Email Address": "Malvalida retpoŝtadreso", + "This doesn't appear to be a valid email address": "Tio ĉi ne ŝajnas esti valida retpoŝtadreso", + "Verification Pending": "Atendanta kontrolon", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Bonvolu kontroli vian retpoŝton, kaj alklaki la ligilon enhavatan en la sendita mesaĝo. Farinte tion, klaku je «daŭrigi».", + "Unable to add email address": "Retpoŝtadreso ne aldoneblas", + "Unable to verify email address.": "Retpoŝtadreso ne kontroleblas.", + "This will allow you to reset your password and receive notifications.": "Tio ĉi permesos al vi restarigi vian pasvorton kaj ricevi sciigojn.", + "Skip": "Preterpasi", + "An error occurred: %(error_string)s": "Okazis eraro: %(error_string)s", + "This will be your account name on the homeserver, or you can pick a different server.": "Tio ĉi estos la nomo de via konto sur la hejmservilo , aŭ vi povas elekti alian servilon.", + "Blacklist": "Malpermesi legadon de ĉifritaj mesaĝoj", + "Unverify": "Malkontroli", + "If you already have a Matrix account you can log in instead.": "Se vi jam havas konton ĉe Matrix, vi povas saluti anstataŭe.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Vi nun malpermesas legadon de ĉifritaj mesaĝoj al nekontrolitaj aparatoj; por sendi mesaĝojn al tiuj, vi devas ilin kontroli.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Ni rekomendas al vi bone kontroli ĉiun aparaton por certigi, ke ĝi apartenas al la verŝajna posedanto, sed vi povas resendi la mesaĝon sen kontrolo, laŭprefere.", + "Room contains unknown devices": "Ĉambro enhavas nekonatajn aparatojn", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "«%(RoomName)s» enhavas aparatojn, kiujn vi neniam vidis antaŭe.", + "Unknown devices": "Nekonataj aparatoj", + "Private Chat": "Privata babilo", + "Public Chat": "Publika babilo", + "Custom": "Propra", + "Alias (optional)": "Kromnomo (malnepra)", + "Name": "Nomo", + "Topic": "Temo", + "Make this room private": "Privatigi ĉi tiun ĉambron", + "Share message history with new users": "Kunhavi mesaĝan historion kun novaj uzantoj", + "Encrypt room": "Ĉifri ĉambron", + "You must register to use this functionality": "Vi devas registriĝî por uzi tiun ĉi funkcion", + "You must join the room to see its files": "Vi devas aliĝi al la ĉambro por vidi tie dosierojn", + "There are no visible files in this room": "En ĉi tiu ĉambro estas neniaj videblaj dosieroj", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML por la paĝo de via komunumo

\n

\n Uzu la longan priskribon por enkonduki novajn komunumanojn, aŭ disdoni iujn\n gravajn ligilojn\n

\n

\n Vi povas eĉ uzi etikedojn ‹img›\n

\n", + "Add rooms to the community summary": "Aldoni ĉambrojn al la komunuma superrigardo", + "Which rooms would you like to add to this summary?": "Kiujn ĉambrojn vi volas aldoni al ĉi tiu superrigardo?", + "Add to summary": "Aldoni al superrigardo", + "Failed to add the following rooms to the summary of %(groupId)s:": "Malsukcesis aldoni la jenajn ĉambrojn al la superrigardo de %(groupId)s:", + "Add a Room": "Aldoni ĉambron", + "Failed to remove the room from the summary of %(groupId)s": "Malsukcesis forigi la ĉambron de la superrigardo de %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Ĉambro ‹%(roomName)s› ne forigeblas de la superrigardo.", + "Add users to the community summary": "Aldoni uzantojn al la komunuma superrigardo", + "Who would you like to add to this summary?": "Kiun vi ŝatus aldoni al tiu ĉi superrigardo?", + "Failed to add the following users to the summary of %(groupId)s:": "Malsukcesis aldoni la jenajn uzantojn al la superrigardo de %(groupId)s:", + "Add a User": "Aldoni uzanton", + "Failed to remove a user from the summary of %(groupId)s": "Malsukcesis forigi uzanton de la superrigardo de %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Uzanto ‹%(displayName)s› ne forigeblas de la superrigardo.", + "Failed to upload image": "Malsukcesis alŝuti bildon", + "Failed to update community": "Malskucesis ĝisdatigi la komunumon", + "Unable to accept invite": "Invito ne akcepteblas", + "Unable to reject invite": "Invito ne rifuzeblas", + "Leave Community": "Forlasi komunumon", + "Leave %(groupName)s?": "Ĉu foriri el %(groupName)s?", + "Community Settings": "Komunumaj agordoj", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Tiuj ĉi ĉambroj montriĝas al komunumanoj sur la paĝo de la komunumo. Ili povas aliĝi al la ĉambroj per alklakoj.", + "Featured Rooms:": "Elstarigitaj ĉambroj:", + "Featured Users:": "Elstarigitaj uzantoj:", + "%(inviter)s has invited you to join this community": "%(inviter)s invitis vin al tiu ĉi komunumo", + "You are an administrator of this community": "Vi estas administranto de tiu ĉi komunumo", + "You are a member of this community": "Vi estas ano de tiu ĉi komunumo", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Via komunumo ne havas longan priskribon – HTML-paĝon por montri al komunumanoj.
Klaku ĉi tie por malfermi agordojn kaj fari ĝin!", + "Long Description (HTML)": "Longa priskribo (HTML)", + "Description": "Priskribo", + "Community %(groupId)s not found": "Komunumo %(groupId)s ne troviĝis", + "This Home server does not support communities": "Tiu ĉi hejma servilo ne subtenas komunumojn", + "Failed to load %(groupId)s": "Malsukcesis enlegi %(groupId)s", + "Reject invitation": "Rifuzi inviton", + "Are you sure you want to reject the invitation?": "Ĉu vi certe volas rifuzi la inviton?", + "Failed to reject invitation": "Malsukcesis rifuzi la inviton", + "Are you sure you want to leave the room '%(roomName)s'?": "Ĉu vi certe volas forlasi la ĉambron ‹%(roomName)s›?", + "Failed to leave room": "Malsukcesis forlasi la ĉambron", + "Signed Out": "Adiaŭinta", + "Old cryptography data detected": "Malnovaj kriptografiaj datumoj troviĝis", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Datumoj el malnova versio de Riot troviĝis. Ĉi tio malfunkciigos ĝiscelan ĉifradon en la malnova versio. Ĝiscele ĉifritaj mesaĝoj interŝanĝitaj freŝtempe per la malnova versio eble ne malĉifreblos. Tio povas kaŭzi malsukceson ankaŭ al mesaĝoj interŝanĝitaj kun tiu ĉi versio. Se vin trafos problemoj, adiaŭu kaj resalutu. Por reteni mesaĝan historion, elportu kaj reenportu viajn ŝlosilojn.", + "Logout": "Adiaŭi", + "Your Communities": "Viaj komunumoj", + "Error whilst fetching joined communities": "Okazis eraro dum venigado de viaj komunumoj", + "Create a new community": "Krei novan komunumon", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Kreu komunumon por kunigi uzantojn kaj ĉambrojn! Fari propran hejmpaĝon por montri vian spacon en la universo de Matrix.", + "You have no visible notifications": "Neniuj videblaj sciigoj", + "Scroll to bottom of page": "Rulumi al susbo de la paĝo", + "Message not sent due to unknown devices being present": "Mesaĝoj ne sendiĝis pro ĉeesto de nekonataj aparatoj", + "Connectivity to the server has been lost.": "Konekto al la servilo perdiĝis.", + "Sent messages will be stored until your connection has returned.": "Senditaj mesaĝoj konserviĝos ĝis via konekto refunkcios.", + "%(count)s new messages": { + "other": "%(count)s novaj mesaĝoj", + "one": "%(count)s nova mesaĝo" + }, + "Active call": "Aktiva voko", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Neniu alia ĉeestas! Ĉu vi ŝatus inviti aliajnĉesigi avertadon pri la malplena ĉambro?", + "You seem to be uploading files, are you sure you want to quit?": "Ŝajne vi alŝutas dosierojn nun; ĉu vi tamen volas foriri?", + "You seem to be in a call, are you sure you want to quit?": "Ŝajne vi vokas nun; ĉu vi tamen volas foriri?", + "Failed to upload file": "Malsukcesis alŝuti dosieron", + "Server may be unavailable, overloaded, or the file too big": "Aŭ la servilo estas neatingebla aŭ troŝargita, aŭ la dosiero estas tro granda", + "Search failed": "Serĉo malsukcesis", + "Server may be unavailable, overloaded, or search timed out :(": "Aŭ la servilo estas neatingebla aŭ troŝargita, aŭ la serĉo eltempiĝis :(", + "No more results": "Neniuj pliaj rezultoj", + "Unknown room %(roomId)s": "Nekonata ĉambro %(roomId)s", + "Room": "Ĉambro", + "Failed to save settings": "Malsukcesis konservi agordojn", + "Failed to reject invite": "Malsukcesis rifuzi inviton", + "Fill screen": "Plenigi ekranon", + "Click to unmute video": "Klaku por ŝalti videon", + "Click to mute video": "Klaku por malŝalti videon", + "Click to unmute audio": "Klaku por ŝalti sonon", + "Click to mute audio": "Klaku por malŝalti sonon", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Provis enlegi certan parton de ĉi tiu historio, sed vi ne havas permeson vidi ĝin.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Provis enlegi certan parton de ĉi tiu historio, sed malsukcesis ĝin trovi.", + "Failed to load timeline position": "Malsukcesis enlegi lokon en historio", + "Uploading %(filename)s and %(count)s others": { + "other": "Alŝutanta dosieron %(filename)s kaj %(count)s aliajn", + "zero": "Alŝutanta dosieron %(filename)s", + "one": "Alŝutanta dosieron %(filename)s kaj %(count)s alian" + }, + "Light theme": "Hela haŭto", + "Dark theme": "Malhela haŭto", + "Status.im theme": "Temo de status.im", + "Can't load user settings": "Agordoj de uzanto ne enlegeblas", + "Server may be unavailable or overloaded": "Servilo eble estas neatingebla aŭ troŝarĝita", + "Sign out": "Adiaŭi", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Pro sekureco, adiaŭo forigos ĉiujn ĝiscele ĉifrajn ŝlosilojn de tiu ĉi foliumilo. Se vi volas malĉifri vian babilan historion el estontaj seancoj de Riot, bonvolu elporti kaj bone reteni viajn ĉambrojn ŝlosilojn.", + "Success": "Sukceso", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Via pasvorto sukcese ŝanĝiĝis. Vi ne ricevos puŝatentigojn en aliaj aparatoj ĝis vi resalutos ilin", + "Remove Contact Information?": "Ĉu forigi kontaktajn informojn?", + "Remove %(threePid)s?": "Ĉu forigi %(threePid)s?", + "Unable to remove contact information": "Kontaktaj informoj ne forigeblas", + "Refer a friend to Riot:": "Rekomendi programon Riot al konato:", + "Interface Language": "Fasada lingvo", + "User Interface": "Fasado por uzantoj", + "Autocomplete Delay (ms):": "Prokrasto de aŭtomata finado (ms):", + "": "", + "Import E2E room keys": "Enporti ĝiscele ĉifrajn ĉambrajn ŝlosilojn", + "Cryptography": "Kriptografio", + "Device ID:": "Aparata identigilo:", + "Device key:": "Aparata ŝlosilo:", + "Ignored Users": "Malatentataj uzantoj", + "Analytics": "Analizo", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot kolektas sennomaj analizajn datumojn por helpi plibonigadon de la programo.", + "Labs": "Eksperimentaj funkcioj", + "These are experimental features that may break in unexpected ways": "Tiu ĉi funkcioj estas eksperimentaj, kaj povas misfunkcii diversmaniere", + "Use with caution": "Uzu atenteme", + "Deactivate my account": "Malaktivigi mian konton", + "Clear Cache": "Vakigi kaŝmemoron", + "Clear Cache and Reload": "Vakigi kaŝmemoron kaj relegi", + "Updates": "Ĝisdatigoj", + "Check for update": "Kontroli ĝisdatigojn", + "Reject all %(invitedRooms)s invites": "Rifuzi ĉiujn %(invitedRooms)s invitojn", + "Bulk Options": "Amasaj agordoj", + "Desktop specific": "Specialaj al labortablo", + "Start automatically after system login": "Aŭtomate ruli post operaciuma saluto", + "No media permissions": "Neniuj permesoj pri aŭdvidaĵoj", + "You may need to manually permit Riot to access your microphone/webcam": "Eble vi devos permane permesi al Riot atingon de viaj mikrofono/kamerao", + "Missing Media Permissions, click here to request.": "Mankas permesoj pri aŭdvidaĵoj; klaku ĉi tie por peti ilin.", + "No Microphones detected": "Neniu mikrofono troviĝis", + "No Webcams detected": "Neniu kamerao troviĝis", + "Default Device": "Implicita aparato", + "Microphone": "Mikrofono", + "Camera": "Kamerao", + "VoIP": "Rettelefonado", + "Email": "Retpoŝto", + "Add email address": "Aldoni retpoŝtadreson", + "Notifications": "Sciigoj", + "Profile": "Profilo", + "Display name": "Vidiga nomo", + "Account": "Konto", + "To return to your account in future you need to set a password": "Por reveni al via konto estontece, vi devas agordi pasvorton", + "Logged in as:": "Salutinta kiel:", + "Access Token:": "Atinga ĵetono:", + "click to reveal": "klaku por malkovri", + "Homeserver is": "Hejmservilo estas", + "Identity Server is": "Identiga servilo estas", + "matrix-react-sdk version:": "versio de matrix-react-sdk:", + "riot-web version:": "versio de riot-web:", + "olm version:": "versio de olm:", + "Failed to send email": "Malsukcesis sendi retleteron", + "The email address linked to your account must be entered.": "Vi devas enigi retpoŝtadreson ligitan al via konto.", + "A new password must be entered.": "Vi devas enigi novan pasvorton.", + "New passwords must match each other.": "Novaj pasvortoj devas kongrui.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Restarigo de pasvorto nun nuligos ĝiscele ĉifrajn ŝlosilojn sur ĉiuj aparatoj, farante babilan historion nelegebla, krom se vi unue elportos viajn ĉambrajn ŝlosilojn kaj reenportos ilin poste. Estontece tio ĉi plifaciliĝos.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Retletero sendiĝis al %(emailAddress)s. Irinte al la ligilo en tiu mesaĝo, klaku sube.", + "I have verified my email address": "Mi kontrolis mian retpoŝtadreson", + "Your password has been reset": "Via pasvorto restariĝis", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Vi aŭtomate adiaŭis ĉiujn aparatojn kaj ne ricevos plu puŝsciigojn. Por reŝalti sciigojn, saluti denove per ĉiu aparato", + "Return to login screen": "Reiri al saluta paĝo", + "To reset your password, enter the email address linked to your account": "Por restarigi vian pasvorton, enigu la retpoŝtadreson ligitan al via konto", + "New password": "Nova pasvorto", + "Confirm your new password": "Konfirmu vian novan pasvorton", + "Send Reset Email": "Sendi restarigan retleteron", + "Create an account": "Krei konton", + "This Home Server does not support login using email address.": "Tiu ĉi hejma servilo ne subtenas saluton per retpoŝtadreso.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Sciu, ke vi salutas la servilon %(hs)s, ne la servilon matrix.org.", + "Guest access is disabled on this Home Server.": "Gasta atingo estas malŝaltita en tiu ĉi hejma servilo.", + "The phone number entered looks invalid": "Tiu ĉi telefona numero ŝajnas malvalida", + "This homeserver doesn't offer any login flows which are supported by this client.": "Tiu ĉi hejmservilo ne proponas salutajn fluojn subtenatajn de tiu ĉi kliento.", + "Error: Problem communicating with the given homeserver.": "Eraro: Estas problemo en komunikado kun la hejmservilo.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Hejmservilo ne alkonekteblas per HTTP kun HTTPS URL en via adresbreto. Aŭ uzu HTTPS aŭ ŝaltu malsekurajn skriptojn.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Ne eblas konekti al hejmservilo – bonvolu kontroli vian konekton, certigi ke la SSL-atestilo de via hejmservilo estas fidata, kaj ke neniu foliumila kromprogramo baras petojn.", + "Sign in to get started": "Komencu per saluto", + "Failed to fetch avatar URL": "Malsukcesis venigi adreson de profilbildo", + "Set a display name:": "Agordi vidigan nomon:", + "Upload an avatar:": "Alŝuti profilbildon:", + "This server does not support authentication with a phone number.": "Ĉi tiu servilo ne subtenas aŭtentigon per telefona numero.", + "Missing password.": "Mankas pasvorto.", + "Passwords don't match.": "Pasvortoj ne kongruas.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Pasvorto estas tro mallonga (malplejlonge %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Tio ĉi ne ŝajnas esti valida retpoŝtadreso.", + "This doesn't look like a valid phone number.": "Tio ĉi ne ŝajnas esti valida telefona numero.", + "An unknown error occurred.": "Okazis nekonata eraro.", + "I already have an account": "Mi jam havas konton", + "Displays action": "Montras agon", + "Bans user with given id": "Forbaras uzanton kun la donita identigaĵo", + "Unbans user with given id": "Malforbaras uzanton kun la donita identigaĵo", + "Define the power level of a user": "Difini la potencan nivelon de uzanto", + "Deops user with given id": "Senestrigas uzanton kun donita identigaĵo", + "Invites user with given id to current room": "Invitas uzanton per identigilo al la nuna babilejo", + "Joins room with given alias": "Aliĝas al babilejo per kromnomo", + "Sets the room topic": "Agordas la babilejan temon", + "Kicks user with given id": "Forpelas uzanton kun la donita identigaĵo", + "Changes your display nickname": "Ŝanĝas vian vidigan nomon", + "Searches DuckDuckGo for results": "Serĉas rezultojn per DuckDuckGo", + "Changes colour scheme of current room": "Ŝanĝas kolorskemon de la nuna babilejo", + "Verifies a user, device, and pubkey tuple": "Kontrolas opon de uzanto, aparato, kaj publika ŝlosilo", + "Ignores a user, hiding their messages from you": "Malatentas uzanton, kaŝante ĝiajn mesaĝojn de vi", + "Stops ignoring a user, showing their messages going forward": "Ĉesas malatenti uzanton, montronte ĝiajn pluajn mesaĝojn", + "Commands": "Komandoj", + "Results from DuckDuckGo": "Rezultoj de DuckDuckGo", + "Emoji": "Mienetoj", + "Notify the whole room": "Sciigi la tutan ĉambron", + "Room Notification": "Ĉambra sciigo", + "Users": "Uzantoj", + "unknown device": "nekonata aparato", + "NOT verified": "nekontrolita", + "verified": "kontrolita", + "Verification": "Kontrolo", + "Ed25519 fingerprint": "Premsigno laŭ Ed25519", + "User ID": "Identigaĵo de uzanto", + "Curve25519 identity key": "Identiga ŝlosilo laŭ Curve25519", + "Claimed Ed25519 fingerprint key": "Asertita premsigno laŭ Ed25519", + "Algorithm": "Algoritmo", + "unencrypted": "neĉifritaj", + "Decryption error": "Malĉifra eraro", + "Session ID": "Seanca identigaĵo", + "End-to-end encryption information": "Informoj pri ĝiscela ĉifrado", + "Event information": "Informoj pri okazaĵo", + "Sender device information": "Informoj pri aparato de sendinto", + "Passphrases must match": "Pasfrazoj devas kongrui", + "Passphrase must not be empty": "Pasfrazoj maldevas esti malplenaj", + "Export room keys": "Elporti ĉambrajn ŝlosilojn", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Tio ĉi permesos al vi elporti al loka dosiero ŝlosilojn por la mesaĝoj ricevitaj en ĉifritaj ĉambroj. Poste vi povos enporti la dosieron en alian klienton de Matrix, por povigi ĝin malĉifri tiujn mesaĝojn.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "La elportita dosiero permesos al ajna havanto malĉifradon de ĉiuj ĉifritaj mesaĝoj videblaj al vi; tenu ĝin do sekure. Tial vi enigu sube pasfrazon, uzotan por ĉifri la elportitajn datumojn. Tiuj nur enporteblos kun la sama pasfrazo.", + "Enter passphrase": "Enigu pasfrazon", + "Confirm passphrase": "Konfirmu pasfrazon", + "Export": "Elporti", + "Import room keys": "Enporti ĉambrajn ŝlosilojn", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Tio ĉi permesos al vi enporti ĉifrajn ŝlosilojn, kiujn vi antaŭe elportis el alia kliento de Matrix. Poste vi povos malĉifri la samajn mesaĝojn, kiujn la alia kliento povis.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "La elportita dosiero estos protektata de pasfrazo. Por malĉifri ĝin, enigu la pasfrazon ĉi tien.", + "File to import": "Enportota dosiero", + "Import": "Enporti", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Forigo de fenestraĵo efektiviĝos por ĉiuj uzantoj en ĉi tiu ĉambro. Ĉu vi certe volas ĝin forigi?", + "Unblacklist": "Repermesi legadon de ĉifritaj mesaĝoj", + "none": "neniu", + "The version of Riot.im": "Tiu ĉi versio de Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Ĉu vi salutis aŭ ne (ni ne registras vian salutnomon)", + "Your language of choice": "Via preferata lingvo", + "The information being sent to us to help make Riot.im better includes:": "Informoj sendataj al ni por plibonigi la servon Riot.im inkluzivas:", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s ŝanĝis sian vidigan nomon al %(displayName)s.", + "Send an encrypted reply…": "Sendi ĉifritan respondon…", + "Send a reply (unencrypted)…": "Sendi respondon (neĉifritan)…", + "Send an encrypted message…": "Sendi ĉifritan mesaĝon…", + "Send a message (unencrypted)…": "Sendi mesaĝon (neĉifritan)…", + "Replying": "Respondanta", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privato gravas al ni, tial ni ne kolektas personajn aŭ spureblajn datumojn por nia analizo.", + "Learn more about how we use analytics.": "Lernu pli pri nia uzo de analiziloj.", + "Your homeserver's URL": "URL de via servilo", + "Your identity server's URL": "URL de via identiga servilo", + "The platform you're on": "Via sistemtipo", + "Which officially provided instance you are using, if any": "Kiun oficiale disponeblan aperon vi uzas, se iun ajn", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Ĉu vi uzas la riĉtekstan reĝimon de la riĉteksta redaktilo aŭ ne", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Kiam ĉi tiu paĝo enhavas identigeblajn informojn, ekzemple babilejon, uzantan aŭ grupan identigilon, ili estas formetataj antaŭ sendado al la servilo.", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "Disable Community Filter Panel": "Malŝalti komunuman filtran breton", + "Failed to add tag %(tagName)s to room": "Malsukcesis aldoni etikedon %(tagName)s al ĉambro", + "Submit debug logs": "Sendi sencimigan protokolon", + "Fetching third party location failed": "Malsukcesis trovi lokon de ekstera liveranto", + "A new version of Riot is available.": "Nova versio de Riot haveblas.", + "I understand the risks and wish to continue": "Mi komprenas la riskojn kaj volas daŭrigi", + "Couldn't load home page": "Malsukcesis enlegi hejmpaĝon", + "Send Account Data": "Sendi kontajn informojn", + "Advanced notification settings": "Specialaj agordoj de sciigoj", + "Uploading report": "Alŝutante raporton", + "Sunday": "Dimanĉo", + "Notification targets": "Celoj de sciigoj", + "Failed to set direct chat tag": "Malsukcesis agordi la etikedon de rekta babilo", + "Today": "Hodiaŭ", + "Files": "Dosieroj", + "You are not receiving desktop notifications": "Vi ne ricevadas sciigojn labortablajn", + "Friday": "Vendredo", + "Update": "Ĝisdatigi", + "What's New": "Kio novas", + "Add an email address above to configure email notifications": "Aldonu retadreson supre por agordi retpoŝtajn sciigojn", + "Expand panel": "Etendi panelon", + "On": "Ek", + "%(count)s Members": { + "other": "%(count)s Membroj", + "one": "%(count)s Membro" + }, + "Filter room names": "Filtri nomojn de ĉambroj", + "Changelog": "Protokolo de ŝanĝoj", + "Waiting for response from server": "Atendante respondon el la servilo", + "Send Custom Event": "Sendi propran okazon", + "All notifications are currently disabled for all targets.": "Ĉiuj sciigoj nun estas malŝaltitaj por ĉiuj aparatoj.", + "delete the alias.": "forigi la kromnomon.", + "To return to your account in future you need to set a password": "Por reveni al via konto estonte, vi devas agordi pasvorton", + "Forget": "Forgesi", + "#example": "#ekzemplo", + "Hide panel": "Kaŝi panelon", + "You cannot delete this image. (%(code)s)": "Vi ne povas forigi tiun ĉi bildon. (%(code)s)", + "Cancel Sending": "Nuligi sendon", + "This Room": "Ĉi tiu ĉambro", + "The Home Server may be too old to support third party networks": "La hejmservilo povas esti tro malnova por subteni retojn de eksteraj liverantoj", + "Noisy": "Brua", + "Room not found": "Ĉambro ne troviĝis", + "Messages containing my display name": "Mesaĝoj enhavantaj mian vidigan nomon", + "Messages in one-to-one chats": "Mesaĝoj en duopaj babiloj", + "Unavailable": "Nedisponebla", + "View Decrypted Source": "Vidi malĉifritan fonton", + "Failed to update keywords": "Malsukcesis ĝisdatigi la ŝlosilvortojn", + "remove %(name)s from the directory.": "forigi %(name)s de la ujo.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "La sciigoj de la jenaj ŝlosilvortoj sekvas regulojn kiuj ne povas esti montrataj ĉi tie:", + "Safari and Opera work too.": "Ankaŭ Safario kaj Opero funkcias.", + "Please set a password!": "Bonvolu agordi pasvorton!", + "You have successfully set a password!": "Vi sukcese agordis pasvorton!", + "An error occurred whilst saving your email notification preferences.": "Eraro okazis dum konservado de agordoj pri retpoŝtaj sciigoj.", + "Explore Room State": "Esplori staton de ĉambro", + "Source URL": "Fonta URL", + "Messages sent by bot": "Mesaĝoj senditaj per roboto", + "Filter results": "Filtri rezultojn", + "Members": "Anoj", + "No update available.": "Neniuj ĝisdatigoj haveblas.", + "Resend": "Resendi", + "Failed to get protocol list from Home Server": "Malsukcesis akiri liston de protokoloj el la hejmservilo", + "Collecting app version information": "Kolektanta informon pri versio de la aplikaĵo", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Ĉu forigi la ĉambran kromnomon %(alias)s kaj forigi %(name)s de la ujo?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Tio ĉi permesos al vi reveni al via konto post adiaŭo, kaj saluti kun alia aparato.", + "Enable notifications for this account": "Ŝalti sciigojn por tiu ĉi konto", + "Directory": "Dosierujo", + "Invite to this community": "Inviti al tiu ĉi komunumo", + "Failed to get public room list": "Malsukcesis akiri liston de publikaj ĉambroj", + "Messages containing keywords": "Mesaĝoj enhavantaj ŝlosilovortojn", + "Error saving email notification preferences": "Eraro konservante agordojn pri retpoŝtaj sciigoj", + "Tuesday": "Mardo", + "Enter keywords separated by a comma:": "Entajpu ŝlosilvortojn apartigitajn per komoj:", + "Search…": "Serĉi…", + "You have successfully set a password and an email address!": "Vi sukcese agordis pasvorton kaj retpoŝtadreson!", + "Remove %(name)s from the directory?": "Ĉu forigi %(name)s de la ujo?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot uzas multajn specialajn funkciojn, el kiuj kelkaj ne disponeblas aŭ estas eksperimentaj en via nuna foliumilo.", + "Event sent!": "Okazo sendiĝis!", + "Explore Account Data": "Esplori kontajn datumojn", + "All messages (noisy)": "Ĉiuj mesaĝoj (lauta)", + "Saturday": "Sabato", + "Remember, you can always set an email address in user settings if you change your mind.": "Memoru: vi ĉiam povas agordi retpoŝtadreson en viaj agordoj por uzantoj.", + "Direct Chat": "Rekta babilo", + "The server may be unavailable or overloaded": "La servilo povas esti nedisponebla aŭ troŝarĝita", + "Reject": "Rifuzi", + "Failed to set Direct Message status of room": "Malsukcesis agordi staton de rekta mesaĝo al la ĉambro", + "Monday": "Lundo", + "Remove from Directory": "Forigi de ujo", + "Enable them now": "Ŝalti ilin nun", + "Messages containing my user name": "Mesaĝoj enhavantaj mian salutnomon", + "Toolbox": "Ilaro", + "Collecting logs": "Kolektante protokolon", + "more": "pli", + "You must specify an event type!": "Vi devas specifi tipon de okazo!", + "(HTTP status %(httpStatus)s)": "(stato de HTTP %(httpStatus)s)", + "Invite to this room": "Inviti al ĉi tiu ĉambro", + "Please install Chrome or Firefox for the best experience.": "Bonvolu instali ĤromonFajrovulpon por plej bona sperto.", + "Wednesday": "Merkredo", + "You cannot delete this message. (%(code)s)": "Vi ne povas forigi tiun ĉi mesaĝon. (%(code)s)", + "Quote": "Citi", + "Send logs": "Sendi protokolojn", + "All messages": "Ĉiuj mesaĝoj", + "Call invitation": "Invito al voko", + "Downloading update...": "Elŝutanta ĝisdatigon…", + "State Key": "Stata ŝlosilo", + "Failed to send custom event.": "Malsukcesis sendi propran okazon.", + "What's new?": "Kio novas?", + "Notify me for anything else": "Sciigu min pri ĉio alia", + "When I'm invited to a room": "Kiam mi estas invitita al babilejo", + "Keywords": "Ŝlosilvortoj", + "Can't update user notification settings": "Agordoj de sciigoj al uzanto ne ĝisdatigeblas", + "Notify for all other messages/rooms": "Sciigu min por ĉiuj aliaj mesaĝoj/babilejoj", + "Unable to look up room ID from server": "Ĉambra identigaĵo ne akireblas de la servilo", + "Couldn't find a matching Matrix room": "Malsukcesis trovi kongruan ĉambron en Matrix", + "All Rooms": "Ĉiuj babilejoj", + "Search for a room": "Serĉi ĉambron", + "Thursday": "Ĵaŭdo", + "Forward Message": "Plusendi mesaĝon", + "Back": "Reen", + "Failed to change settings": "Malsukcesis ŝanĝi la agordojn", + "Reply": "Respondi", + "Show message in desktop notification": "Montradi mesaĝojn en labortablaj sciigoj", + "Unhide Preview": "Malkaŝi antaŭrigardon", + "Unable to join network": "Malsukcesis konektiĝi al la reto", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vi eble agordis ilin en alia kliento. Vi ne povas agordi ilin en Riot, sed ili ankoraŭ validas", + "Sorry, your browser is not able to run Riot.": "Pardonu, via foliumilo ne kapablas funkciigi klienton Riot.", + "Uploaded on %(date)s by %(user)s": "Alŝutita je %(date)s de %(user)s", + "Messages in group chats": "Mesaĝoj en grupaj babiloj", + "Yesterday": "Hieraŭ", + "Error encountered (%(errorDetail)s).": "Eraro okazis (%(errorDetail)s).", + "Login": "Saluti", + "Low Priority": "Malalta prioritato", + "Unable to fetch notification target list": "Malsukcesis akiri la liston de celoj por sciigoj", + "Set Password": "Agordi pasvorton", + "Enable audible notifications in web client": "Ŝalti aŭdeblajn sciigojn en la retkliento", + "Off": "For", + "Riot does not know how to join a room on this network": "Riot ne scias aliĝi al ĉambroj en tiu ĉi reto", + "Mentions only": "Nur mencioj", + "Failed to remove tag %(tagName)s from room": "Malsukcesis forigi etikedon %(tagName)s el la ĉambro", + "You can now return to your account after signing out, and sign in on other devices.": "Vi nun rajtas reveni al via konto post adiaŭo, kaj saluti per ĝi kun aliaj aparatoj.", + "Enable desktop notifications": "Ŝalti labortablajn sciigojn", + "Enable email notifications": "Ŝalti retpoŝtajn sciigojn", + "Event Type": "Tipo de okazo", + "Download this file": "Elŝuti ĉi tiun dosieron", + "Pin Message": "Fiksi mesaĝon", + "Thank you!": "Dankon!", + "View Community": "Vidi Komunumon", + "Developer Tools": "Evoluigiloj", + "View Source": "Vidi fonton", + "Event Content": "Enhavo de okazo", + "Collapse panel": "Maletendi panelon", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Kun via nuna foliumilo, la aspekto kaj funkciado de la aplikaĵo povas esti tute malĝusta, kaj kelkaj aŭ ĉiu funkcioj eble ne tute funkcios. Se vi tamen volas provi, vi povas daŭrigi, sed vi ricevos nenian subtenon se vi renkontos problemojn!", + "Checking for an update...": "Serĉanta ĝisdatigojn…", + "There are advanced notifications which are not shown here": "Ekzistas specialaj sciigoj, kiuj ne montriĝas ĉi tie", + "Logs sent": "Protokolo sendiĝis", + "GitHub issue link:": "Ligilo al raporto ĉe GitHub:", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Sencimigaj protokoloj enhavas informojn pri uzo de aplikaĵo, inkluzive vian salutnomon, la identigilojn aŭ nomojn de la ĉambroj aŭ grupoj kiujn vi vizitis, kaj la salutnomojn de aliaj uzantoj. Ili ne enhavas mesaĝojn.", + "Failed to send logs: ": "Malsukcesis sendi protokolon: ", + "Notes:": "Rimarkoj:", + "Preparing to send logs": "Pretiganta sendon de protokolo", + "e.g. %(exampleValue)s": "ekz. %(exampleValue)s", + "Every page you use in the app": "Ĉiu paĝo kiun vi uzas en la aplikaĵo", + "e.g. ": "ekz. ", + "Your User Agent": "Via klienta aplikaĵo", + "Your device resolution": "La distingivo de via aparato", + "Call in Progress": "Voko farata", + "A call is already in progress!": "Voko estas jam farata!", + "Always show encryption icons": "Ĉiam montri bildetojn de ĉifrado", + "Send analytics data": "Sendi statistikajn datumojn", + "Key request sent.": "Demando de ŝlosilo sendita.", + "Re-request encryption keys from your other devices.": "Redemandi ĉifroŝlosilojn el viaj aliaj aparatoj.", + "Encrypting": "Ĉifranta", + "Encrypted, not sent": "Ĉifrita, ne sendita", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Se viaj aliaj aparatoj ne havas la ŝlosilon por ĉi tiu mesaĝo, vi ne povos malĉifri ĝin.", + "Riot Desktop on %(platformName)s": "Riot Labortablo sur %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot ne estas subtenata sur poŝkomputila reto. Ĉu instali la aplikaĵon?", + "Unknown device": "Nekonata aparato", + "You need to be using HTTPS to place a screen-sharing call.": "Vi devas uzi HTTPS por ekranvidadi.", + "Welcome to Riot.im": "Bonvenu al Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Malcentra, ĉifrita babilado & kunlaboro povigita de [matrix]", + "Search the room directory": "Serĉi en la babilejo-listo", + "Chat with Riot Bot": "Babilu kun la roboto Riot Bot", + "Get started with some tips from Riot Bot!": "Komencu kun kelkaj sugestoj de la roboto Riot Bot!", + "General discussion about Matrix and Riot": "Ĝenerala diskutado pri Matrix kaj Riot", + "Discussion of all things Matrix!": "Diskutado pri ĉio rilata al Matrix!", + "Riot/Web & Desktop chat": "Babilado pri Riot ĉe reto kaj labortablo", + "Riot/iOS & matrix-ios-sdk chat": "Babilado pri Riot ĉe iOS kaj matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Babilado pri Riot ĉe Android kaj matrix-android-sdk", + "Matrix technical discussions": "Teĥnikaj diskutoj pri Matrix", + "Running Matrix services": "Funkciigado de servoj de Matrix", + "Community-run support for Synapse": "Komunuma subtenado de Synapse", + "Admin support for Dendrite": "Administra subtenado por Dendrite", + "Announcements about Synapse releases": "Anoncoj pri eldonoj de Synapse", + "Support for those using and running matrix-appservice-irc": "Subteno por tiuj, kiuj uzas kaj funkciigas matrix-appservice-irc", + "Building services on Matrix": "Konstruado de servoj sur Matrix", + "Support for those using the Matrix spec": "Subteno por tiuj, kiuj uzas la specifaĵon de Matrix", + "Design and implementation of E2E in Matrix": "Fasonado kaj realigado de ĝiscela ĉifrado en Matrix", + "Implementing VR services with Matrix": "Realigado de VR-servoj en Matrix", + "Implementing VoIP services with Matrix": "Realigado de VoIP-servoj en Matrix", + "Discussion of the Identity Service API": "Diskutado pri API de la identiga servo", + "Support for those using, running and writing other bridges": "Subteno por tiuj, kiuj uzas, funkciigas, aŭ evoluigas aliajn pontojn", + "Contributing code to Matrix and Riot": "Kontribuado de kodo al Matrix kaj Riot", + "Dev chat for the Riot/Web dev team": "Babilado por la programista skipo de Riot ĉe reto", + "Dev chat for the Dendrite dev team": "Babilado por la programista skipo de Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Multaj ĉambroj jam ekzistas en Matrix; kaj sendependaj, kaj ligitaj kun jamaj retoj (Slock, IRC, Gitter, ktp.). Rigardu la ĉambrujon!", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s per %(browserName)s je %(osName)s", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vi povas uzi proprajn servilajn elektojn por saluti aliajn servilojn de Matrix, per specifo de alia hejmservila URL.
Tio permesas al vi uzi klienton Riot kun jama konto de Matrix en alia hejmservilo.

Vi ankaŭ povas agordi propran identigan servilon, sed vi ne povos inviti uzantojn per retpoŝtadreso, aŭ esti invitata per retpoŝtadreso mem." +} \ No newline at end of file diff --git a/riot/i18n/es.json b/riot/i18n/es.json new file mode 100644 index 0000000..33fa000 --- /dev/null +++ b/riot/i18n/es.json @@ -0,0 +1,1379 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un mensaje de texto ha sido enviado a +%(msisdn)s. Por favor ingrese el código de verificación que lo contiene", + "%(targetName)s accepted an invitation.": "%(targetName)s aceptó una invitación.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceptó la invitación para %(displayName)s.", + "Account": "Cuenta", + "Access Token:": "Token de Acceso:", + "Add email address": "Añadir dirección de correo electrónico", + "Add phone number": "Añadir número telefónico", + "Admin": "Administrador", + "Advanced": "Avanzado", + "Algorithm": "Algoritmo", + "Always show message timestamps": "Siempre mostrar las marcas temporales de mensajes", + "Authentication": "Autenticación", + "%(items)s and %(lastItem)s": "%(items)s y %(lastItem)s", + "and %(count)s others...": { + "other": "y otros %(count)s...", + "one": "y otro más..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s y %(lastPerson)s están escribiendo", + "A new password must be entered.": "Debes ingresar una contraseña nueva.", + "%(senderName)s answered the call.": "%(senderName)s contestó la llamada.", + "An error has occurred.": "Un error ha ocurrido.", + "Anyone who knows the room's link, apart from guests": "Cualquier persona que conozca el enlace a esta sala, excepto huéspedes", + "Anyone who knows the room's link, including guests": "Cualquier persona que conozca el enlace a esta sala, incluyendo huéspedes", + "Are you sure?": "¿Estás seguro?", + "Are you sure you want to reject the invitation?": "¿Estás seguro que quieres rechazar la invitación?", + "Attachment": "Adjunto", + "Autoplay GIFs and videos": "Reproducir automáticamente GIFs y videos", + "%(senderName)s banned %(targetName)s.": "%(senderName)s vetó a %(targetName)s.", + "Ban": "Vetar", + "Banned users": "Usuarios vetados", + "Bans user with given id": "Veta al usuario con la ID dada", + "Blacklisted": "Prohibido", + "Bulk Options": "Opciones masivas", + "Call Timeout": "Tiempo de Espera de Llamada", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "No se puede conectar al servidor doméstico via HTTP, cuando es necesario un enlace HTTPS en la barra de direcciones de tu navegador. Ya sea usando HTTPS o habilitando los scripts inseguros.", + "Can't load user settings": "No se puede cargar los ajustes de usuario", + "Change Password": "Cambiar Contraseña", + "%(senderName)s changed their profile picture.": "%(senderName)s cambió su imagen de perfil.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha cambiado el nivel de acceso de %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s cambió el nombre de la sala a %(roomName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s cambió el tema a \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Cambios para quien pueda leer el historial solo serán aplicados a futuros mensajes en la sala", + "Changes your display nickname": "Cambia tu apodo público", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "El cambio de contraseña restablecerá actualmente todas las claves de cifrado de extremo a extremo de todos los dispositivos, haciendo que el historial de chat cifrado sea ilegible, a menos que primero exporte las claves de la habitación y vuelva a importarlas después. En el futuro esto será mejorado.", + "Claimed Ed25519 fingerprint key": "Clave de huella digital Ed25519 reclamada", + "Clear Cache and Reload": "Borrar Caché y Recargar", + "Clear Cache": "Borrar Caché", + "Click here to fix": "Haz clic aquí para arreglar", + "Click to mute audio": "Haz clic para silenciar el audio", + "Click to mute video": "Haz clic para silenciar el vídeo", + "click to reveal": "Haz clic para ver", + "Click to unmute video": "Haz clic para dejar de silenciar el vídeo", + "Click to unmute audio": "Haz clic para dejar de silenciar el audio", + "Command error": "Error de comando", + "Commands": "Comandos", + "Conference call failed.": "La llamada de conferencia falló.", + "Conference calling is in development and may not be reliable.": "La llamada en conferencia está en desarrollo y puede no ser fiable.", + "Conference calls are not supported in encrypted rooms": "Las llamadas en conferencia no son soportadas en salas cifradas", + "Conference calls are not supported in this client": "Las llamadas en conferencia no están soportadas en este cliente", + "Confirm password": "Confirmar contraseña", + "Confirm your new password": "Confirma tu contraseña nueva", + "Continue": "Continuar", + "Could not connect to the integration server": "No se pudo conectar al servidor de integración", + "Create an account": "Crear una cuenta", + "Create Room": "Crear Sala", + "Cryptography": "Criptografía", + "Current password": "Contraseña actual", + "Curve25519 identity key": "Clave de identidad Curve25519", + "/ddg is not a command": "/ddg no es un comando", + "Deactivate Account": "Desactivar Cuenta", + "Deactivate my account": "Desactivar mi cuenta", + "Decrypt %(text)s": "Descifrar %(text)s", + "Decryption error": "Error de descifrado", + "Delete": "Eliminar", + "Deops user with given id": "Degrada al usuario con la ID dada", + "Default": "Por Defecto", + "Device ID": "ID de Dispositivo", + "Devices": "Dispositivos", + "Devices will not yet be able to decrypt history from before they joined the room": "Los dispositivos todavía no podrán descifrar el historial desde antes de unirse a la sala", + "Direct chats": "Conversaciones directas", + "Disinvite": "Deshacer invitación", + "Display name": "Nombre público", + "Displays action": "Muestra la acción", + "Don't send typing notifications": "No enviar notificaciones de estar escribiendo", + "Download %(text)s": "Descargar %(text)s", + "Drop here to tag %(section)s": "Suelta aquí para etiquetar %(section)s", + "Ed25519 fingerprint": "Huella digital Ed25519", + "Email": "Correo electrónico", + "Email address": "Dirección de correo electrónico", + "Email, name or matrix ID": "Correo electrónico, nombre o ID de matrix", + "Emoji": "Emoticones", + "Enable encryption": "Habilitar cifrado", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Los mensajes cifrados no serán visibles en clientes que aún no implementen el cifrado", + "Encrypted room": "Sala encriptada", + "%(senderName)s ended the call.": "%(senderName)s finalizó la llamada.", + "End-to-end encryption information": "Información de cifrado de extremo a extremo", + "End-to-end encryption is in beta and may not be reliable": "El cifrado de extremo a extremo está en beta y puede no ser confiable", + "Enter Code": "Ingresar Código", + "Error": "Error", + "Error decrypting attachment": "Error al descifrar adjunto", + "Event information": "Información de eventos", + "Existing Call": "Llamada Existente", + "Export E2E room keys": "Exportar claves de salas con Cifrado de Extremo a Extremo", + "Failed to ban user": "Bloqueo del usuario falló", + "Failed to change password. Is your password correct?": "No se pudo cambiar la contraseña. ¿Estás usando la correcta?", + "Failed to change power level": "Falló al cambiar de nivel de acceso", + "Failed to forget room %(errCode)s": "No se pudo olvidar la sala %(errCode)s", + "Failed to join room": "No se pudo unir a la sala", + "Failed to kick": "Falló al expulsar", + "Failed to leave room": "No se pudo salir de la sala", + "Failed to load timeline position": "Falló al cargar el historico", + "Failed to mute user": "No se pudo silenciar al usuario", + "Failed to reject invite": "Falló al rechazar invitación", + "Failed to reject invitation": "Falló al rechazar la invitación", + "Failed to save settings": "No se pudieron guardar los ajustes", + "Failed to send email": "No se pudo enviar el correo electrónico", + "Failed to send request.": "El envío de la solicitud falló.", + "Failed to set avatar.": "Falló al establecer avatar.", + "Failed to set display name": "No se pudo establecer el nombre público", + "Failed to set up conference call": "Falló al configurar la llamada en conferencia", + "Failed to toggle moderator status": "Falló al cambiar estatus de moderador", + "Failed to unban": "No se pudo quitar veto", + "Failed to upload file": "Error en el envío del fichero", + "Failed to verify email address: make sure you clicked the link in the email": "No se pudo verificar la dirección de correo electrónico: asegúrate de hacer clic en el enlace del correo electrónico", + "Failure to create room": "No se pudo crear sala", + "Favourite": "Agregar a Favoritos", + "Favourites": "Favoritos", + "Fill screen": "Llenar pantalla", + "Filter room members": "Filtrar miembros de la sala", + "Forget room": "Olvidar sala", + "Forgot your password?": "¿Olvidaste tu contraseña?", + "For security, this session has been signed out. Please sign in again.": "Por seguridad, esta sesión ha sido cerrada. Por favor inicia sesión nuevamente.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Por seguridad, al cerrar la sesión borrará cualquier clave de cifrado de extremo a extremo en este navegador. Si quieres ser capaz de descifrar tu historial de conversación, para las futuras sesiones en Riot, por favor exporta las claves de la sala para protegerlas.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s a %(toPowerLevel)s", + "Guests cannot join this room even if explicitly invited.": "Invitados no pueden unirse a esta sala aun cuando han sido invitados explícitamente.", + "Hangup": "Colgar", + "Hide read receipts": "Ocultar recibos de lectura", + "Hide Text Formatting Toolbar": "Ocultar barra de herramientas de formato de texto", + "Historical": "Histórico", + "Homeserver is": "El Servidor Doméstico es", + "Identity Server is": "El Servidor de Identidad es", + "I have verified my email address": "He verificado mi dirección de correo electrónico", + "Import E2E room keys": "Importar claves de salas con Cifrado de Extremo a Extremo", + "Incorrect verification code": "Verificación de código incorrecta", + "Interface Language": "Idioma de la Interfaz", + "Invalid alias format": "Formato de alias inválido", + "Invalid address format": "Formato de dirección inválida", + "Invalid Email Address": "Dirección de Correo Electrónico Inválida", + "Invalid file%(extra)s": "Archivo inválido %(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s invitó a %(targetName)s.", + "Invite new room members": "Invitar nuevos miembros a la sala", + "Invites": "Invitaciones", + "Invites user with given id to current room": "Invita al usuario con la ID dada a la sala actual", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' no es un formato válido para una dirección", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' no es un formato de alias válido", + "%(displayName)s is typing": "%(displayName)s está escribiendo", + "Sign in with": "Quiero iniciar sesión con", + "Join Room": "Unirse a la Sala", + "%(targetName)s joined the room.": "%(targetName)s se unió a la sala.", + "Joins room with given alias": "Se une a la sala con el alias dado", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s expulsó a %(targetName)s.", + "Kick": "Expulsar", + "Kicks user with given id": "Expulsa al usuario con la ID dada", + "Labs": "Laboratorios", + "Leave room": "Salir de la sala", + "%(targetName)s left the room.": "%(targetName)s salió de la sala.", + "Local addresses for this room:": "Direcciones locales para esta sala:", + "Logged in as:": "Sesión iniciada como:", + "Logout": "Cerrar Sesión", + "Low priority": "Prioridad baja", + "Accept": "Aceptar", + "Add": "Añadir", + "Admin Tools": "Herramientas de administración", + "VoIP": "Voz IP", + "No Microphones detected": "No se ha detectado micrófono", + "No Webcams detected": "No se ha detectado cámara", + "Default Device": "Dispositivo por defecto", + "Microphone": "Micrófono", + "Camera": "Cámara", + "Hide removed messages": "Ocultar mensajes eliminados", + "Alias (optional)": "Alias (opcional)", + "Anyone": "Todos", + "Click here to join the discussion!": "¡Haz clic aquí para unirte a la discusión!", + "Close": "Cerrar", + "%(count)s new messages": { + "one": "%(count)s mensaje nuevo", + "other": "%(count)s mensajes nuevos" + }, + "Create a new chat or reuse an existing one": "Cree una nueva conversación o reutilice una existente", + "Custom": "Personalizado", + "Custom level": "Nivel personalizado", + "Decline": "Rechazar", + "Device already verified!": "¡El dispositivo ya ha sido verificado!", + "Device ID:": "ID de Dispositivo:", + "device id: ": "ID de dispositivo: ", + "Disable Notifications": "Deshabilitar Notificaciones", + "Email address (optional)": "Dirección de correo electrónico (opcional)", + "Enable Notifications": "Habilitar Notificaciones", + "Encrypted by a verified device": "Cifrado por un dispositivo verificado", + "Encrypted by an unverified device": "Cifrado por un dispositivo sin verificar", + "Encryption is enabled in this room": "El cifrado está habilitado en esta sala", + "Encryption is not enabled in this room": "El cifrado no está habilitado en esta sala", + "Enter passphrase": "Ingresar frase de contraseña", + "Error: Problem communicating with the given homeserver.": "Error: No es posible comunicar con el servidor doméstico indicado.", + "Export": "Exportar", + "Failed to fetch avatar URL": "Fallo al obtener la URL del avatar", + "Failed to upload profile picture!": "¡No se pudo subir la imagen de perfil!", + "Home": "Inicio", + "Import": "Importar", + "Incoming call from %(name)s": "Llamada entrante de %(name)s", + "Incoming video call from %(name)s": "Llamada de vídeo entrante de %(name)s", + "Incoming voice call from %(name)s": "Llamada de voz entrante de %(name)s", + "Incorrect username and/or password.": "Nombre de usuario y/o contraseña incorrectos.", + "Invited": "Invitado", + "Jump to first unread message.": "Ir al primer mensaje no leído.", + "Last seen": "Visto por última vez", + "Level:": "Nivel:", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que son invitados.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala, desde el momento en que se unieron.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s hizo visible el historial futuro de la sala para todos los miembros de la sala.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s hizo visible el historial futuro de la sala para cualquier persona.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s hizo visible el historial futuro de la sala para desconocido (%(visibility)s).", + "Something went wrong!": "¡Algo ha fallado!", + "Please select the destination room for this message": "Por favor, seleccione la sala destino para este mensaje", + "Create new room": "Crear nueva sala", + "Start chat": "Iniciar conversación", + "New Password": "Contraseña Nueva", + "Analytics": "Análisis de Estadísticas", + "Options": "Opciones", + "Passphrases must match": "Las contraseñas deben coincidir", + "Passphrase must not be empty": "La contraseña no puede estar en blanco", + "Export room keys": "Exportar claves de sala", + "Confirm passphrase": "Confirmar frase de contraseña", + "Import room keys": "Importar claves de sala", + "File to import": "Fichero a importar", + "You must join the room to see its files": "Debes unirte a la sala para ver sus archivos", + "Reject all %(invitedRooms)s invites": "Rechazar todas las invitaciones a %(invitedRooms)s", + "Start new chat": "Iniciar nueva conversación", + "Failed to invite": "No se pudo invitar", + "Failed to invite user": "No se pudo invitar al usuario", + "Failed to invite the following users to the %(roomName)s room:": "No se pudo invitar a los siguientes usuarios a la sala %(roomName)s:", + "Unknown error": "Error desconocido", + "Incorrect password": "Contraseña incorrecta", + "To continue, please enter your password.": "Para continuar, ingresa tu contraseña por favor.", + "Device name": "Nombre de dispositivo", + "Device Name": "Nombre de Dispositivo", + "Device key": "Clave de dispositivo", + "In future this verification process will be more sophisticated.": "En el futuro, este proceso de verificación será más sofisticado.", + "Verify device": "Verificar dispositivo", + "I verify that the keys match": "Verifico que las claves coinciden", + "Unable to restore session": "No se puede recuperar la sesión", + "Room Colour": "Color de la sala", + "Room contains unknown devices": "La sala contiene dispositivos desconocidos", + "Room name (optional)": "Nombre de sala (opcional)", + "%(roomName)s does not exist.": "%(roomName)s no existe.", + "%(roomName)s is not accessible at this time.": "%(roomName)s no es accesible en este momento.", + "Rooms": "Salas", + "Save": "Guardar", + "Scroll to bottom of page": "Bajar al final de la página", + "Scroll to unread messages": "Ir al primer mensaje sin leer", + "Search": "Buscar", + "Search failed": "Falló la búsqueda", + "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s el %(dateTime)s", + "Send anyway": "Enviar de todos modos", + "Sender device information": "Información del dispositivo emisor", + "Send Invites": "Enviar Invitaciones", + "Send Reset Email": "Enviar Correo Electrónico de Restauración", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s envió una imagen.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s invitó a %(targetDisplayName)s a unirse a la sala.", + "Server error": "Error del servidor", + "Server may be unavailable, overloaded, or search timed out :(": "El servidor podría estar saturado o desconectado, o la búsqueda caducó :(", + "Server may be unavailable, overloaded, or the file too big": "El servidor podría estar saturado o desconectado, o el fichero ser demasiado grande", + "Server may be unavailable, overloaded, or you hit a bug.": "El servidor podría estar saturado o desconectado, o encontraste un fallo.", + "Server unavailable, overloaded, or something else went wrong.": "Servidor saturado, desconectado, o alguien ha roto algo.", + "Session ID": "ID de Sesión", + "%(senderName)s set a profile picture.": "%(senderName)s estableció una imagen de perfil.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s estableció %(displayName)s como su nombre público.", + "Settings": "Ajustes", + "Show panel": "Mostrar panel", + "Show Text Formatting Toolbar": "Mostrar la barra de formato de texto", + "Signed Out": "Desconectado", + "Sign in": "Conectar", + "Sign out": "Cerrar sesión", + "%(count)s of your messages have not been sent.": { + "other": "Algunos de sus mensajes no han sido enviados.", + "one": "No se envió su mensaje." + }, + "Someone": "Alguien", + "Start a chat": "Iniciar una conversación", + "Start authentication": "Iniciar autenticación", + "Start Chat": "Iniciar Conversación", + "Submit": "Enviar", + "Success": "Éxito", + "Tagged as: ": "Etiquetado como: ", + "The default role for new room members is": "El nivel por defecto para los nuevos miembros de esta sala es", + "The main address for this room is": "La dirección principal de esta sala es", + "The phone number entered looks invalid": "El número telefónico indicado parece erróneo", + "Active call (%(roomName)s)": "Llamada activa (%(roomName)s)", + "Add a topic": "Añadir un tema", + "Missing Media Permissions, click here to request.": "Faltan permisos para el medio, pulse aquí para solicitarlos.", + "No media permissions": "Sin permisos para el medio", + "You may need to manually permit Riot to access your microphone/webcam": "Probablemente necesite dar permisos manualmente a Riot para su micrófono/cámara", + "Are you sure you want to leave the room '%(roomName)s'?": "¿Está seguro de que desea abandonar la sala '%(roomName)s'?", + "Are you sure you want to upload the following files?": "¿Está seguro que desea enviar los siguientes archivos?", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "No se puede conectar al servidor doméstico - compruebe su conexión, asegúrese de que el certificado SSL del servidor es de confiaza, y compruebe que no hay extensiones del navegador bloqueando las peticiones.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s eliminó el nombre de la sala.", + "Device key:": "Clave de dispositivo:", + "Drop File Here": "Deje el fichero aquí", + "Guest access is disabled on this Home Server.": "El acceso de invitados está desactivado en este Servidor Doméstico.", + "Join as voice or video.": "Unirse con voz o vídeo.", + "Manage Integrations": "Gestionar integraciones", + "Markdown is disabled": "Markdown está deshabilitado", + "Markdown is enabled": "Markdown está activado", + "matrix-react-sdk version:": "Versión de matrix-react-sdk:", + "Message not sent due to unknown devices being present": "Mensaje no enviado debido a la presencia de dispositivos desconocidos", + "Missing room_id in request": "Falta el room_id en la solicitud", + "Missing user_id in request": "Falta el user_id en la solicitud", + "Mobile phone number": "Número telefónico de móvil", + "Mobile phone number (optional)": "Número telefónico de móvil (opcional)", + "Moderator": "Moderador", + "Mute": "Silenciar", + "%(serverName)s Matrix ID": "%(serverName)s ID de Matrix", + "Name": "Nombre", + "Never send encrypted messages to unverified devices from this device": "Nunca enviar mensajes cifrados a dispositivos sin verificar desde este dispositivo", + "Never send encrypted messages to unverified devices in this room from this device": "Nunca enviar mensajes cifrados a dispositivos sin verificar en esta sala desde este dispositivo", + "New address (e.g. #foo:%(localDomain)s)": "Dirección nueva (ej. #foo:%(localDomain)s)", + "New password": "Contraseña nueva", + "New passwords don't match": "Las contraseñas nuevas no coinciden", + "New passwords must match each other.": "Las contraseñas nuevas deben coincidir.", + "none": "ninguno", + "not set": "sin configurar", + "not specified": "sin especificar", + "Notifications": "Notificaciones", + "(not supported by this browser)": "(no soportado por este navegador)", + "": "", + "NOT verified": "SIN verificar", + "No devices with registered encryption keys": "No hay dispositivos con claves de cifrado registradas", + "No display name": "Sin nombre público", + "No more results": "No hay más resultados", + "No results": "No hay resultados", + "No users have specific privileges in this room": "Ningún usuario tiene permisos específicos en esta sala", + "OK": "Correcto", + "olm version:": "versión de olm:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una vez que se habilita el cifrado en una sala no se puede volver a desactivar (por ahora)", + "Only people who have been invited": "Solo personas que han sido invitadas", + "Operation failed": "Falló la operación", + "Password": "Contraseña", + "Password:": "Contraseña:", + "Passwords can't be empty": "Las contraseñas no pueden estar en blanco", + "People": "Personas", + "Permissions": "Permisos", + "Phone": "Teléfono", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s ha hecho una llamada de tipo %(callType)s.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor, consulta tu correo electrónico y haz clic en el enlace que contiene. Una vez hecho esto, haz clic en continuar.", + "Power level must be positive integer.": "El nivel de autoridad debe ser un número entero positivo.", + "Privacy warning": "Advertencia de privacidad", + "Private Chat": "Conversación privada", + "Privileged Users": "Usuarios con privilegios", + "Profile": "Perfil", + "Public Chat": "Sala pública", + "Reason": "Motivo", + "Reason: %(reasonText)s": "Motivo: %(reasonText)s", + "Revoke Moderator": "Eliminar Moderador", + "Refer a friend to Riot:": "Informar a un amigo sobre Riot:", + "Register": "Registrar", + "%(targetName)s rejected the invitation.": "%(targetName)s rechazó la invitación.", + "Reject invitation": "Rechazar invitación", + "Rejoin": "Volver a unirse", + "Remote addresses for this room:": "Direcciones remotas para esta sala:", + "Remove Contact Information?": "¿Eliminar información del contacto?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s eliminó su nombre público (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s eliminó su imagen de perfil.", + "Remove": "Eliminar", + "Remove %(threePid)s?": "¿Eliminar %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s solicitó una conferencia de vozIP.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Reiniciar la contraseña también reiniciará las claves de cifrado de extremo a extremo, haciendo ilegible el historial de las conversaciones, salvo que exporte previamente las claves de sala, y las importe posteriormente. Esto será mejorado en futuras versiones.", + "Results from DuckDuckGo": "Resultados desde DuckDuckGo", + "Return to login screen": "Regresar a la pantalla de inicio de sesión", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot no tiene permiso para enviarte notificaciones - por favor, comprueba los ajustes de tu navegador", + "Riot was not given permission to send notifications - please try again": "No se le dio permiso a Riot para enviar notificaciones - por favor, inténtalo nuevamente", + "riot-web version:": "versión de riot-web:", + "Room %(roomId)s not visible": "La sala %(roomId)s no está visible", + "Searches DuckDuckGo for results": "Busca resultados en DuckDuckGo", + "Server may be unavailable or overloaded": "El servidor podría estar saturado o desconectado", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar marcas temporales en formato de 12 horas (ej. 2:30pm)", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La clave de firma que usted ha proporcionado coincide con la recibida del dispositivo %(deviceId)s de %(userId)s. Dispositivo verificado.", + "This email address is already in use": "Esta dirección de correo electrónico ya está en uso", + "This email address was not found": "No se encontró esta dirección de correo electrónico", + "The email address linked to your account must be entered.": "Debes ingresar la dirección de correo electrónico vinculada a tu cuenta.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "El archivo '%(fileName)s' supera el tamaño máximo permitido en este servidor doméstico", + "The file '%(fileName)s' failed to upload": "No se pudo subir '%(fileName)s'", + "The remote side failed to pick up": "El lado remoto no contestó", + "This Home Server does not support login using email address.": "Este Servidor Doméstico no permite identificarse con direcciones e-mail.", + "This invitation was sent to an email address which is not associated with this account:": "Esta invitación fue enviada a una dirección de correo electrónico que no está asociada a esta cuenta:", + "This room has no local addresses": "Esta sala no tiene direcciones locales", + "This room is not recognised.": "No se reconoce esta sala.", + "These are experimental features that may break in unexpected ways": "Estas son funcionalidades experimentales que pueden romperse de maneras inesperadas", + "The visibility of existing history will be unchanged": "La visibilidad del historial previo no se verá afectada", + "This doesn't appear to be a valid email address": "Esto no parece un e-mail váido", + "This is a preview of this room. Room interactions have been disabled": "Esta es una vista previa de esta sala. Las interacciones dentro de la sala se han deshabilitado", + "This phone number is already in use": "Este número telefónico ya está en uso", + "This room": "Esta sala", + "This room is not accessible by remote Matrix servers": "Esta sala no es accesible por otros servidores Matrix", + "This room's internal ID is": "El ID interno de la sala es", + "To link to a room it must have an address.": "Para enlazar una sala, debe tener una dirección.", + "To reset your password, enter the email address linked to your account": "Para restablecer tu contraseña, ingresa la dirección de correo electrónico vinculada a tu cuenta", + "Cancel": "Cancelar", + "Dismiss": "Omitir", + "powered by Matrix": "con el poder de Matrix", + "Room directory": "Directorio de salas", + "Custom Server Options": "Opciones de Servidor Personalizado", + "unknown error code": "Código de error desconocido", + "Start verification": "Iniciar verificación", + "Skip": "Omitir", + "To return to your account in future you need to set a password": "Para volver a usar su cuenta en el futuro es necesario que establezca una contraseña", + "Share without verifying": "Compartir sin verificar", + "Ignore request": "Ignorar solicitud", + "Do you want to set an email address?": "¿Quieres poner una dirección de correo electrónico?", + "This will allow you to reset your password and receive notifications.": "Esto te permitirá reiniciar tu contraseña y recibir notificaciones.", + "Authentication check failed: incorrect password?": "La verificación de autenticación falló: ¿contraseña incorrecta?", + "Press to start a chat with someone": "Pulsa para empezar a charlar con alguien", + "Add a widget": "Añadir widget", + "Allow": "Permitir", + "Changes colour scheme of current room": "Cambia el esquema de colores de la sala actual", + "Delete widget": "Eliminar widget", + "Define the power level of a user": "Define el nivel de autoridad de un usuario", + "Edit": "Editar", + "Enable automatic language detection for syntax highlighting": "Activar la detección automática del lenguaje para resaltar la sintaxis", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Ocultar mensajes de unirse/salir (no afecta a invitaciones/expulsiones/vetos)", + "Sets the room topic": "Establece el tema de la sala", + "To get started, please pick a username!": "Para empezar, ¡por favor elija un nombre de usuario!", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no tiene permiso para ver el mensaje solicitado.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Se ha intentado cargar cierto punto en la cronología de esta sala, pero no se ha podido encontrarlo.", + "Turn Markdown off": "Desactivar markdown", + "Turn Markdown on": "Activar markdown", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s activó el cifrado de extremo a extremo (algoritmo %(algorithm)s).", + "Unable to add email address": "No es posible añadir la dirección de correo electrónico", + "Unable to create widget.": "No es posible crear el componente.", + "Unable to remove contact information": "No se ha podido eliminar la información de contacto", + "Unable to verify email address.": "No es posible verificar la dirección de correo electrónico.", + "Unban": "Quitar Veto", + "Unbans user with given id": "Quita el veto al usuario con la ID dada", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "No se ha podido asegurar que la dirección a la que se envió esta invitación, coincide con una asociada a su cuenta.", + "Unable to capture screen": "No es posible capturar la pantalla", + "Unable to enable Notifications": "No es posible habilitar las Notificaciones", + "Unable to load device list": "No se ha podido cargar la lista de dispositivos", + "Undecryptable": "No se puede descifrar", + "Unencrypted room": "Sala sin cifrado", + "Unencrypted message": "Mensaje sin cifrar", + "unknown caller": "Persona que llama desconocida", + "unknown device": "dispositivo desconocido", + "Unknown room %(roomId)s": "Sala desconocida %(roomId)s", + "Unknown (user, device) pair:": "Pareja desconocida (usuario, dispositivo):", + "Unnamed Room": "Sala sin nombre", + "Unverified": "Sin verificar", + "Uploading %(filename)s and %(count)s others": { + "zero": "Subiendo %(filename)s", + "one": "Subiendo %(filename)s y otros %(count)s", + "other": "Subiendo %(filename)s y otros %(count)s" + }, + "Upload avatar": "Subir avatar", + "Upload Failed": "No Se Pudo Subir", + "Upload Files": "Subir Archivos", + "Upload file": "Subir archivo", + "Upload new:": "Subir nuevo:", + "Usage": "Uso", + "Use compact timeline layout": "Usar diseño de cronología compacto", + "Use with caution": "Utilizar con precaución", + "User ID": "ID de Usuario", + "User Interface": "Interfaz de Usuario", + "User name": "Nombre de usuario", + "Username invalid: %(errMessage)s": "Nombre de usuario no válido: %(errMessage)s", + "Users": "Usuarios", + "Verification Pending": "Verificación Pendiente", + "Verification": "Verificación", + "verified": "verificado", + "Verified": "Verificado", + "Verified key": "Clave verificada", + "Video call": "Llamada de vídeo", + "Voice call": "Llamada de voz", + "VoIP conference finished.": "conferencia de vozIP finalizada.", + "VoIP conference started.": "conferencia de vozIP iniciada.", + "VoIP is unsupported": "VoIP no es compatible", + "(could not connect media)": "(no se ha podido conectar medio)", + "(no answer)": "(sin respuesta)", + "(unknown failure: %(reason)s)": "(error desconocido: %(reason)s)", + "(warning: cannot be disabled again!)": "(advertencia: ¡no se puede volver a deshabilitar!)", + "Warning!": "¡Advertencia!", + "WARNING: Device already verified, but keys do NOT MATCH!": "ADVERTENCIA: Dispositivo ya verificado, ¡pero las claves NO COINCIDEN!", + "Who can access this room?": "¿Quién puede acceder a esta sala?", + "Who can read history?": "¿Quién puede leer el historial?", + "Who would you like to add to this room?": "¿A quién te gustaría añadir a esta sala?", + "Who would you like to communicate with?": "¿Con quién te gustaría comunicarte?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s retiró la invitación de %(targetName)s.", + "Would you like to accept or decline this invitation?": "¿Quiere aceptar o rechazar esta invitación?", + "You already have existing direct chats with this user:": "Ya tiene conversaciones directas con este usuario:", + "You are already in a call.": "Ya estás participando en una llamada.", + "You are not in this room.": "No estás en esta sala.", + "You do not have permission to do that in this room.": "No tienes permiso para realizar esa acción en esta sala.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "¡Todavía no participa en ninguna sala! Pulsa para crear una sala o para explorar el directorio", + "You are trying to access %(roomName)s.": "Estás intentando acceder a %(roomName)s.", + "You cannot place a call with yourself.": "No puedes realizar una llamada contigo mismo.", + "Cannot add any more widgets": "no es posible agregar mas widgets", + "Do you want to load widget from URL:": "desea cargar widget desde URL:", + "Integrations Error": "error de integracion", + "Publish this room to the public in %(domain)s's room directory?": "Desea publicar esta sala al publico en el directorio de salas de %(domain)s?", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "NOTA: Las Apps no son cifradas de extremo a extremo", + "Revoke widget access": "Revocar acceso del widget", + "The maximum permitted number of widgets have already been added to this room.": "La cantidad máxima de widgets permitida ha sido alcanzada en esta sala.", + "To use it, just wait for autocomplete results to load and tab through them.": "Para utilizarlo, tan solo espera a que se carguen los resultados de autocompletar y navega entre ellos.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s le quitó el veto a %(targetName)s.", + "unencrypted": "sin cifrar", + "Unmute": "Dejar de silenciar", + "Unrecognised command:": "Comando no identificado:", + "Unrecognised room alias:": "Alias de sala no reconocido:", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivel de permisos %(powerLevelNumber)s)", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ADVERTENCIA: VERIFICACIÓN DE CLAVE FALLO\" La clave de firma para %(userId)s y el dispositivo %(deviceId)s es \"%(fprint)s\" la cual no concuerda con la clave provista por \"%(fingerprint)s\". Esto puede significar que sus comunicaciones están siendo interceptadas!", + "You cannot place VoIP calls in this browser.": "No puedes realizar llamadas VoIP en este navegador.", + "You do not have permission to post to this room": "No tienes permiso para publicar en esta sala", + "You have been banned from %(roomName)s by %(userName)s.": "Has sido vetado de %(roomName)s por %(userName)s.", + "You have been invited to join this room by %(inviterName)s": "Ha sido invitado por %(inviterName)s a unirte a esta sala", + "You have been kicked from %(roomName)s by %(userName)s.": "Has sido expulsado de %(roomName)s por %(userName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Se ha cerrado sesión en todos tus dispositivos y ya no recibirás notificaciones push. Para volver a habilitar las notificaciones, vuelve a iniciar sesión en cada dispositivo", + "You have disabled URL previews by default.": "Ha deshabilitado la vista previa de URL por defecto.", + "You have enabled URL previews by default.": "Ha habilitado vista previa de URL por defecto.", + "You have no visible notifications": "No tiene notificaciones visibles", + "You may wish to login with a different account, or add this email to this account.": "Quizás quieras iniciar sesión con otra cuenta, o añadir este correo electrónico a esta cuenta.", + "You must register to use this functionality": "Usted debe ser un registrar para usar esta funcionalidad", + "You need to be able to invite users to do that.": "Debes ser capaz de invitar usuarios para realizar esa acción.", + "You need to be logged in.": "Necesitas haber iniciado sesión.", + "You need to enter a user name.": "Tiene que ingresar un nombre de usuario.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Tu dirección de correo electrónico no parece estar asociada a una ID de Matrix en este Servidor Doméstico.", + "Your password has been reset": "Tu contraseña fue restablecida", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Su contraseña a sido cambiada exitosamente. No recibirá notificaciones en otros dispositivos hasta que ingrese de nuevo en ellos", + "You seem to be in a call, are you sure you want to quit?": "Parece estar en medio de una llamada, ¿esta seguro que desea salir?", + "You seem to be uploading files, are you sure you want to quit?": "Pareces estar subiendo archivos, ¿seguro que quieres salir?", + "You should not yet trust it to secure data": "Aún no deberías confiar en él para proteger tus datos", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "No podrás deshacer este cambio porque estás promoviendo al usuario para tener el mismo nivel de autoridad que tú.", + "Your home server does not support device management.": "Tu servidor doméstico no suporta la gestión de dispositivos.", + "Sun": "Dom", + "Mon": "Lun", + "Tue": "Mar", + "Wed": "Mie", + "Thu": "Jue", + "Fri": "Vie", + "Sat": "Sab", + "Jan": "Ene", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Abr", + "May": "May", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Ago", + "Add rooms to this community": "Agregar salas a esta comunidad", + "Call Failed": "La Llamada Falló", + "Review Devices": "Revisar Dispositivos", + "Call Anyway": "Llamar de todos modos", + "Answer Anyway": "Contestar de Todos Modos", + "Call": "Llamar", + "Answer": "Contestar", + "Sep": "Sep", + "Oct": "Oct", + "Nov": "Nov", + "Dec": "Dic", + "Warning": "Advertencia", + "Unpin Message": "Desmarcar Mensaje", + "Online": "En línea", + "Submit debug logs": "Enviar registros de depuración", + "The platform you're on": "La plataforma en la que te encuentras", + "The version of Riot.im": "La versión de Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Hayas iniciado sesión o no (no almacenamos tu nombre de usuario)", + "Your language of choice": "El idioma de tu elección", + "Your homeserver's URL": "La URL de tu servidor doméstico", + "Your identity server's URL": "La URL de tu servidor de identidad", + "The information being sent to us to help make Riot.im better includes:": "La información que se nos envía para ayudar a mejorar Riot.im incluye:", + "Drop here to demote": "Suelta aquí para degradar", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Estés utilizando o no el modo de Texto Enriquecido del Editor de Texto Enriquecido", + "Who would you like to add to this community?": "¿A quién te gustaría añadir a esta comunidad?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Advertencia: cualquier persona que añadas a una comunidad será públicamente visible a cualquiera que conozca la ID de la comunidad", + "Invite new community members": "Invita nuevos miembros a la comunidad", + "Name or matrix ID": "Nombre o ID de matrix", + "Invite to Community": "Invitar a la Comunidad", + "Which rooms would you like to add to this community?": "¿Qué salas te gustaría añadir a esta comunidad?", + "Fetching third party location failed": "Falló la obtención de la ubicación de un tercero", + "A new version of Riot is available.": "Una nueva versión de Riot está disponible.", + "I understand the risks and wish to continue": "Entiendo los riesgos y deseo continuar", + "Couldn't load home page": "No se puede cargar la página de inicio", + "Send Account Data": "Enviar Datos de la Cuenta", + "Advanced notification settings": "Ajustes avanzados de notificaciones", + "Uploading report": "Enviando informe", + "Sunday": "Domingo", + "Guests can join": "Los invitados se pueden unir", + "Failed to add tag %(tagName)s to room": "Error al añadir la etiqueta %(tagName)s a la sala", + "Notification targets": "Objetivos de notificación", + "Failed to set direct chat tag": "Error al establecer la etiqueta de conversación directa", + "Today": "Hoy", + "Files": "Archivos", + "You are not receiving desktop notifications": "No estás recibiendo notificaciones de escritorio", + "Friday": "Viernes", + "Update": "Actualizar", + "What's New": "Novedades", + "Add an email address above to configure email notifications": "Añade una dirección de correo arriba para configurar las notificaciones por correo", + "Expand panel": "Expandir panel", + "On": "Encendido", + "%(count)s Members": { + "other": "%(count)s miembros", + "one": "%(count)s miembro" + }, + "Filter room names": "Filtrar los nombres de salas", + "Changelog": "Registro de cambios", + "Waiting for response from server": "Esperando una respuesta del servidor", + "Leave": "Salir", + "Uploaded on %(date)s by %(user)s": "Subido el %(date)s por %(user)s", + "Send Custom Event": "Enviar Evento Personalizado", + "All notifications are currently disabled for all targets.": "Las notificaciones están deshabilitadas para todos los objetivos.", + "Failed to send logs: ": "Error al enviar registros: ", + "delete the alias.": "eliminar el alias.", + "To return to your account in future you need to set a password": "Para regresar a tu cuenta en el futuro debes establecer una contraseña", + "Forget": "Olvidar", + "World readable": "Legible por todo el mundo", + "Hide panel": "Ocultar panel", + "You cannot delete this image. (%(code)s)": "No puedes eliminar esta imagen. (%(code)s)", + "Cancel Sending": "Cancelar envío", + "This Room": "Esta sala", + "The Home Server may be too old to support third party networks": "El Servidor Doméstico puede ser demasiado antiguo para soportar redes de terceros", + "Resend": "Reenviar", + "Room not found": "Sala no encontrada", + "Messages containing my display name": "Mensajes que contienen mi nombre público", + "Messages in one-to-one chats": "Mensajes en conversaciones uno a uno", + "Unavailable": "No disponible", + "View Decrypted Source": "Ver Fuente Descifrada", + "Failed to update keywords": "Error al actualizar las palabras clave", + "Notes:": "Notas:", + "remove %(name)s from the directory.": "eliminar a %(name)s del directorio.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Las notificaciones de las siguientes palabras clave siguen reglas que no se pueden mostrar aquí:", + "Safari and Opera work too.": "Safari y Opera también funcionan.", + "Please set a password!": "¡Por favor establece una contraseña!", + "You have successfully set a password!": "¡Has establecido una nueva contraseña!", + "An error occurred whilst saving your email notification preferences.": "Se ha producido un error al guardar las preferencias de notificación por email.", + "Explore Room State": "Explorar Estado de la Sala", + "Source URL": "URL de Origen", + "Messages sent by bot": "Mensajes enviados por bot", + "Filter results": "Filtrar resultados", + "Members": "Miembros", + "No update available.": "No hay actualizaciones disponibles.", + "Noisy": "Ruidoso", + "Failed to get protocol list from Home Server": "Error al obtener la lista de protocolos desde el Servidor Doméstico", + "Collecting app version information": "Recolectando información de la versión de la aplicación", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "¿Borrar el alias de la sala %(alias)s y eliminar %(name)s del directorio?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Esto te permitirá regresar a tu cuenta después de cerrar sesión, así como iniciar sesión en otros dispositivos.", + "Keywords": "Palabras clave", + "Enable notifications for this account": "Habilitar notificaciones para esta cuenta", + "Directory": "Directorio", + "Invite to this community": "Invitar a esta comunidad", + "Search for a room": "Buscar una sala", + "Messages containing keywords": "Mensajes que contienen palabras clave", + "Error saving email notification preferences": "Error al guardar las preferencias de notificación por email", + "Tuesday": "Martes", + "Enter keywords separated by a comma:": "Introduzca palabras clave separadas por una coma:", + "Search…": "Buscar…", + "You have successfully set a password and an email address!": "¡Has establecido una nueva contraseña y dirección de correo electrónico!", + "Remove %(name)s from the directory?": "¿Eliminar a %(name)s del directorio?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot usa muchas características avanzadas del navegador, algunas de las cuales no están disponibles en su navegador actual.", + "Event sent!": "Evento enviado!", + "Preparing to send logs": "Preparando para enviar registros", + "Enable desktop notifications": "Habilitar notificaciones de escritorio", + "Unnamed room": "Sala sin nombre", + "Explore Account Data": "Explorar Datos de la Cuenta", + "Remove from Directory": "Eliminar del Directorio", + "Saturday": "Sábado", + "Remember, you can always set an email address in user settings if you change your mind.": "Recuerda que si es necesario puedes establecer una dirección de email en los ajustes de usuario.", + "Direct Chat": "Conversación Directa", + "The server may be unavailable or overloaded": "El servidor puede estar no disponible o sobrecargado", + "Reject": "Rechazar", + "Failed to set Direct Message status of room": "No se pudo establecer el estado de Mensaje Directo de la sala", + "Monday": "Lunes", + "All messages (noisy)": "Todos los mensajes (ruidoso)", + "Enable them now": "Habilitarlos ahora", + "Messages containing my user name": "Mensajes que contienen mi nombre de usuario", + "Toolbox": "Caja de Herramientas", + "Collecting logs": "Recolectando registros", + "more": "más", + "GitHub issue link:": "Enlace de incidencia en GitHub:", + "You must specify an event type!": "Debes especificar un tipo de evento!", + "(HTTP status %(httpStatus)s)": "(estado HTTP %(httpStatus)s)", + "Invite to this room": "Invitar a esta sala", + "Please install Chrome or Firefox for the best experience.": "Por favor instala Chrome o Firefox para una experiencia óptima.", + "Failed to get public room list": "No se pudo obtener la lista de salas públicas", + "Send": "Enviar", + "Send logs": "Enviar registros", + "All messages": "Todos los mensajes", + "Call invitation": "Invitación a la llamada", + "Thank you!": "¡Gracias!", + "Downloading update...": "Descargando actualizaciones...", + "State Key": "Clave de estado", + "Failed to send custom event.": "Ha fallado el envio del evento personalizado.", + "What's new?": "¿Qué hay de nuevo?", + "Notify me for anything else": "Notificarme para cualquier otra cosa", + "When I'm invited to a room": "Cuando soy invitado a una sala", + "Can't update user notification settings": "No se puede actualizar los ajustes de notificaciones del usuario", + "Notify for all other messages/rooms": "Notificar para todos los demás mensajes/salas", + "Unable to look up room ID from server": "No se puede buscar el ID de la sala desde el servidor", + "Couldn't find a matching Matrix room": "No se encontró una sala Matrix que coincida", + "All Rooms": "Todas las Salas", + "You cannot delete this message. (%(code)s)": "No puedes eliminar este mensaje. (%(code)s)", + "Thursday": "Jueves", + "Forward Message": "Reenviar Mensaje", + "Logs sent": "Registros enviados", + "Back": "Atrás", + "Reply": "Responder", + "Show message in desktop notification": "Mostrar mensaje en la notificación del escritorio", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Los registros de depuración contienen datos de uso de la aplicación como nombre de usuario, ID o alias de las salas o grupos que hayas visitado (y nombres de usuario de otros usuarios). No contienen mensajes.", + "Unhide Preview": "Mostrar Vista Previa", + "Unable to join network": "No se puede unir a la red", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Es posible que los hayas configurado en un cliente que no sea Riot. No puedes ajustarlos en Riot, pero todavía se aplican", + "Sorry, your browser is not able to run Riot.": "¡Lo sentimos! Su navegador no puede ejecutar Riot.", + "Messages in group chats": "Mensajes en conversaciones en grupo", + "Yesterday": "Ayer", + "Error encountered (%(errorDetail)s).": "Error encontrado (%(errorDetail)s).", + "Login": "Iniciar sesión", + "Low Priority": "Prioridad Baja", + "Riot does not know how to join a room on this network": "Riot no sabe cómo unirse a una sala en esta red", + "Set Password": "Establecer contraseña", + "Enable audible notifications in web client": "Habilitar notificaciones audibles en el cliente web", + "Off": "Desactivado", + "#example": "#ejemplo", + "Mentions only": "Solo menciones", + "Failed to remove tag %(tagName)s from room": "Error al eliminar la etiqueta %(tagName)s de la sala", + "Wednesday": "Miércoles", + "You can now return to your account after signing out, and sign in on other devices.": "Ahora puedes regresar a tu cuenta después de cerrar tu sesión, e iniciar sesión en otros dispositivos.", + "Enable email notifications": "Habilitar notificaciones por email", + "Event Type": "Tipo de Evento", + "No rooms to show": "No hay salas para mostrar", + "Download this file": "Descargar este archivo", + "Pin Message": "Marcar Mensaje", + "Failed to change settings": "Error al cambiar los ajustes", + "View Community": "Ver la comunidad", + "Developer Tools": "Herramientas de Desarrollo", + "View Source": "Ver Fuente", + "Event Content": "Contenido del Evento", + "Unable to fetch notification target list": "No se puede obtener la lista de objetivos de notificación", + "Quote": "Citar", + "Collapse panel": "Colapsar panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "En su navegador actual, la apariencia y comportamiento de la aplicación puede ser completamente incorrecta, y algunas de las características podrían no funcionar. Si aún desea probarlo puede continuar, pero ¡no podremos ofrecer soporte por cualquier problema que pudiese tener!", + "Checking for an update...": "Comprobando actualizaciones...", + "There are advanced notifications which are not shown here": "Hay notificaciones avanzadas que no se muestran aquí", + "Every page you use in the app": "Cada página que utilizas en la aplicación", + "Your User Agent": "Tu Agente de Usuario", + "Your device resolution": "La resolución de tu dispositivo", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Hay dispositivos desconocidos en esta sala: si continúas sin verificarlos, será posible que alguien escuche tu llamada.", + "Which officially provided instance you are using, if any": "Qué instancia proporcionada oficialmente estás utilizando, si estás utilizando alguna", + "e.g. %(exampleValue)s": "ej. %(exampleValue)s", + "e.g. ": "ej. ", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Donde esta página incluya información identificable, como una sala, usuario o ID de grupo, esos datos se eliminan antes de enviarse al servidor.", + "A conference call could not be started because the intgrations server is not available": "No se pudo iniciar una llamada de conferencia porque el servidor de integraciones no está disponible", + "Call in Progress": "Llamada en Curso", + "A call is currently being placed!": "¡Se está realizando una llamada en este momento!", + "A call is already in progress!": "¡Ya hay una llamada en curso!", + "Permission Required": "Permiso Requerido", + "You do not have permission to start a conference call in this room": "No tienes permiso para iniciar una llamada de conferencia en esta sala", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Show these rooms to non-members on the community page and room list?": "¿Mostrar estas salas a los que no son miembros en la página de la comunidad y la lista de salas?", + "Add rooms to the community": "Añadir salas a la comunidad", + "Room name or alias": "Nombre o alias de sala", + "Add to community": "Añadir a la comunidad", + "Failed to invite the following users to %(groupId)s:": "No se pudo invitar a los siguientes usuarios a %(groupId)s:", + "Failed to invite users to community": "No se pudo invitar usuarios a la comunidad", + "Failed to invite users to %(groupId)s": "No se pudo invitar usuarios a %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "No se pudo añadir a las siguientes salas a %(groupId)s:", + "Restricted": "Restringido", + "Missing roomId.": "Falta el Id de sala.", + "Ignores a user, hiding their messages from you": "Ignora a un usuario, ocultando sus mensajes", + "Ignored user": "Usuario ignorado", + "You are now ignoring %(userId)s": "Ahora está ignorando a %(userId)s", + "Stops ignoring a user, showing their messages going forward": "Deja de ignorar a un usuario, mostrando en adelante sus mensajes", + "Unignored user": "Usuario no ignorado", + "You are no longer ignoring %(userId)s": "Ya no está ignorando a %(userId)s", + "Opens the Developer Tools dialog": "Abre el diálogo de Herramientas de Desarrollador", + "Verifies a user, device, and pubkey tuple": "Verifica a un usuario, dispositivo, y tupla de clave pública", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambió su nombre público a %(displayName)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s cambió los mensajes con chincheta en la sala.", + "%(widgetName)s widget modified by %(senderName)s": "el widget %(widgetName)s fue modificado por %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "componente %(widgetName)s añadido por %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "componente %(widgetName)s eliminado por %(senderName)s", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s y otros %(count)s están escribiendo", + "one": "%(names)s y otro más están escribiendo" + }, + "Your browser does not support the required cryptography extensions": "Su navegador no soporta las extensiones de criptografía requeridas", + "Not a valid Riot keyfile": "No es un archivo de claves de Riot válido", + "Message Pinning": "Mensajes con chincheta", + "Jitsi Conference Calling": "Llamadas de conferencia Jitsi", + "Disable Emoji suggestions while typing": "Deshabilitar sugerencias de Emoji mientras escribe", + "Hide avatar changes": "Ocultar cambios de avatar", + "Hide display name changes": "Ocultar cambios de nombre público", + "Always show encryption icons": "Mostrar siempre iconos de cifrado", + "Hide avatars in user and room mentions": "Ocultar avatares en las menciones de usuarios y salas", + "Disable big emoji in chat": "Deshabilitar emoji grande en la conversación", + "Automatically replace plain text Emoji": "Sustituir automáticamente Emojis de texto", + "Mirror local video feed": "Clonar transmisión de video local", + "Disable Community Filter Panel": "Deshabilitar Panel de Filtro de la Comunidad", + "Disable Peer-to-Peer for 1:1 calls": "Deshabilitar pares para llamadas 1:1", + "Send analytics data": "Enviar datos de análisis de estadísticas", + "Enable inline URL previews by default": "Habilitar vistas previas de URL en línea por defecto", + "Enable URL previews for this room (only affects you)": "Activar vista previa de URL en esta sala (sólo le afecta a ud.)", + "Enable URL previews by default for participants in this room": "Activar vista previa de URL por defecto para los participantes en esta sala", + "Enable widget screenshots on supported widgets": "Activar capturas de pantalla de widget en los widgets soportados", + "Show empty room list headings": "Mostrar lista de títulos de salas vacías", + "Delete %(count)s devices": { + "other": "Eliminar %(count)s dispositivos", + "one": "Eliminar dispositivo" + }, + "Select devices": "Seleccionar dispositivos", + "Drop file here to upload": "Soltar aquí el fichero a subir", + " (unsupported)": " (no soportado)", + "Ongoing conference call%(supportedText)s.": "Llamada de conferencia en curso%(supportedText)s.", + "This event could not be displayed": "No se pudo mostrar este evento", + "%(senderName)s sent an image": "%(senderName)s envió una imagen", + "%(senderName)s sent a video": "%(senderName)s envió un vídeo", + "%(senderName)s uploaded a file": "%(senderName)s subió un fichero", + "Your key share request has been sent - please check your other devices for key share requests.": "Se envió su solicitud para compartir la clave - por favor, compruebe sus otros dispositivos para solicitudes de compartir clave.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Las solicitudes para compartir la clave se envían a sus otros dispositivos automáticamente. Si rechazó o descartó la solicitud en sus otros dispositivos, pulse aquí para solicitar otra vez las claves durante esta sesión.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Si sus otros dispositivos no tienen la clave para este mensaje no podrá descifrarlos.", + "Key request sent.": "Solicitud de clave enviada.", + "Re-request encryption keys from your other devices.": "Volver a solicitar las claves de cifrado de tus otros dispositivos.", + "Encrypting": "Cifrando", + "Encrypted, not sent": "Cifrado, no enviado", + "Disinvite this user?": "¿Dejar de invitar a este usuario?", + "Kick this user?": "¿Echar a este usuario?", + "Unban this user?": "¿Quitarle el veto a este usuario?", + "Ban this user?": "¿Vetar a este usuario?", + "Demote yourself?": "¿Degradarse a ud mismo?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "No podrá deshacer este cambio ya que está degradándose a usted mismo, si es el usuario con menos privilegios de la sala le resultará imposible recuperarlos.", + "Demote": "Degradar", + "Unignore": "Dejar de ignorar", + "Ignore": "Ignorar", + "Jump to read receipt": "Saltar a recibo leído", + "Mention": "Mencionar", + "Invite": "Invitar", + "Share Link to User": "Compartir Enlace con Usuario", + "User Options": "Opciones de Usuario", + "Make Moderator": "Convertir a Moderador", + "bold": "negrita", + "italic": "cursiva", + "deleted": "eliminado", + "underlined": "subrayado", + "inline-code": "código en línea", + "block-quote": "cita extensa", + "bulleted-list": "lista con viñetas", + "numbered-list": "lista numerada", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "En este momento no es posible responder con un fichero así que esto se enviará sin que sea una respuesta.", + "Send an encrypted reply…": "Enviar una respuesta cifrada…", + "Send a reply (unencrypted)…": "Enviar una respuesta (sin cifrar)…", + "Send an encrypted message…": "Enviar un mensaje cifrado…", + "Send a message (unencrypted)…": "Enviar un mensaje (sin cifrar)…", + "Unable to reply": "No se pudo responder", + "At this time it is not possible to reply with an emote.": "En este momento no es posible responder con un emoticono.", + "Jump to message": "Ir a mensaje", + "No pinned messages.": "No hay mensajes con chincheta.", + "Loading...": "Cargando...", + "Pinned Messages": "Mensajes con chincheta", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "En línea durante %(duration)s", + "Idle for %(duration)s": "En reposo durante %(duration)s", + "Offline for %(duration)s": "Desconectado durante %(duration)s", + "Unknown for %(duration)s": "Desconocido durante %(duration)s", + "Idle": "En reposo", + "Offline": "Desconectado", + "Unknown": "Desconocido", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Visto por %(displayName)s %(userName)s a las %(dateTime)s", + "Replying": "Respondiendo", + "(~%(count)s results)": { + "other": "(~%(count)s resultados)", + "one": "(~%(count)s resultado)" + }, + "Remove avatar": "Eliminar avatar", + "Share room": "Compartir sala", + "Drop here to favourite": "Soltar aquí para agregar a favoritos", + "Drop here to tag direct chat": "Soltar aquí para etiquetar la conversación directa", + "Drop here to restore": "Soltar aquí para restaurar", + "Community Invites": "Invitaciones a comunidades", + "You have no historical rooms": "No tienes salas históricas", + "You have been kicked from this room by %(userName)s.": "Has sido expulsado de esta sala por %(userName)s.", + "You have been banned from this room by %(userName)s.": "Has sido vetado de esta sala por %(userName)s.", + "You are trying to access a room.": "Estás intentando acceder a una sala.", + "To change the room's avatar, you must be a": "Para cambiar el avatar de la sala, debe ser un", + "To change the room's name, you must be a": "Para cambiar el nombre de la sala, debe ser un", + "To change the room's main address, you must be a": "Para cambiar la dirección principal de la sala, debe ser un", + "To change the room's history visibility, you must be a": "Para cambiar la visibilidad del historial de la sala, debe ser un", + "To change the permissions in the room, you must be a": "Para cambiar los permisos de la sala, debe ser un", + "To change the topic, you must be a": "Para cambiar el tema, debe ser un", + "To modify widgets in the room, you must be a": "Para modificar los widgets de la sala, debe ser un", + "Banned by %(displayName)s": "Vetado por %(displayName)s", + "To send messages, you must be a": "Para cambiar mensajes, debe ser un", + "To invite users into the room, you must be a": "Para cambiar usuarios a la sala, debe ser un", + "To configure the room, you must be a": "Para configurar la sala, debe ser un", + "To kick users, you must be a": "Para echar a usuarios, debe ser un", + "To ban users, you must be a": "Para vetar usuarios, debes ser un", + "To remove other users' messages, you must be a": "Para eliminar los mensajes de otros usuarios, debe ser un", + "To notify everyone in the room, you must be a": "Para notificar a todos en la sala, debe ser un", + "%(user)s is a %(userRole)s": "%(user)s es un %(userRole)s", + "Muted Users": "Usuarios Silenciados", + "To send events of type , you must be a": "Para enviar eventos del tipo , debe ser un", + "Members only (since the point in time of selecting this option)": "Solo miembros (desde el momento en que se selecciona esta opción)", + "Members only (since they were invited)": "Solo miembros (desde que fueron invitados)", + "Members only (since they joined)": "Solo miembros (desde que se unieron)", + "You don't currently have any stickerpacks enabled": "Actualmente no tienes ningún paquete de pegatinas habilitado", + "Add a stickerpack": "Añadir un paquete de pegatinas", + "Stickerpack": "Paquete de pegatinas", + "Hide Stickers": "Ocultar Pegatinas", + "Show Stickers": "Mostrar Pegatinas", + "Addresses": "Direcciones", + "Invalid community ID": "ID de comunidad inválida", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' no es una ID de comunidad válida", + "Flair": "Insignia", + "Showing flair for these communities:": "Mostrar insignias de estas comunidades:", + "This room is not showing flair for any communities": "Esta sala no está mostrando insignias para ninguna comunidad", + "New community ID (e.g. +foo:%(localDomain)s)": "Nueva ID de comunidad (ej. +foo:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "La vista previa de URL se activa por defecto en los participantes de esta sala.", + "URL previews are disabled by default for participants in this room.": "La vista previa se desactiva por defecto para los participantes de esta sala.", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "En salas cifradas, como ésta, la vista previa de la URL se desactivan por defecto para asegurar que el servidor doméstico (donde se generan) no puede recopilar información de los enlaces que vea en esta sala.", + "URL Previews": "Vista previa de URL", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Cuando alguien pone una URL en su mensaje, una vista previa se mostrará para ofrecer información sobre el enlace, tal como título, descripción, y una imagen del sitio Web.", + "Error decrypting audio": "Error al descifrar el sonido", + "Error decrypting image": "Error al descifrar imagen", + "Error decrypting video": "Error al descifrar video", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s cambió el avatar para %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s eliminó el avatar de la sala.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s cambió el avatar de la sala a ", + "Copied!": "¡Copiado!", + "Failed to copy": "Falló la copia", + "Add an Integration": "Añadir una Integración", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Está a punto de ir a un sitio de terceros de modo que pueda autenticar su cuenta para usarla con %(integrationsUrl)s. ¿Desea continuar?", + "Removed or unknown message type": "Tipo de mensaje desconocido o eliminado", + "Message removed by %(userId)s": "Mensaje eliminado por %(userId)s", + "Message removed": "Mensaje eliminado", + "Robot check is currently unavailable on desktop - please use a web browser": "La comprobación de robot no está actualmente disponible en escritorio - por favor, use un navegador Web", + "This Home Server would like to make sure you are not a robot": "Este Servidor Doméstico quiere asegurarse de que no eres un robot", + "Sign in with CAS": "Ingresar con CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puede usar las opciones personalizadas del servidor para ingresar en otros servidores de Matrix especificando una URL del Servidor Doméstico diferente.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Esto le permite usar esta aplicación con una cuenta de Matrix ya existente en un servidor doméstico diferente.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Puede también usar un servidor de identidad personalizado, pero esto habitualmente evitará la interacción con usuarios mediante dirección de correo electrónico.", + "An email has been sent to %(emailAddress)s": "Se envió un correo electrónico a %(emailAddress)s", + "Please check your email to continue registration.": "Por favor consulta tu correo electrónico para continuar con el registro.", + "Token incorrect": "Token incorrecto", + "A text message has been sent to %(msisdn)s": "Se envió un mensaje de texto a %(msisdn)s", + "Please enter the code it contains:": "Por favor introduzca el código que contiene:", + "Code": "Código", + "The email field must not be blank.": "El campo de correo electrónico no debe estar en blanco.", + "The user name field must not be blank.": "El campo de nombre de usuario no debe estar en blanco.", + "The phone number field must not be blank.": "El campo de número telefónico no debe estar en blanco.", + "The password field must not be blank.": "El campo de contraseña no debe estar en blanco.", + "Username on %(hs)s": "Nombre de usuario en %(hs)s", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Si no indica una dirección de correo electrónico, no podrá reiniciar su contraseña. ¿Está seguro?", + "You are registering with %(SelectedTeamName)s": "Está registrándose con %(SelectedTeamName)s", + "Default server": "Servidor por defecto", + "Custom server": "Servidor personalizado", + "Home server URL": "URL del servidor doméstico", + "Identity server URL": "URL del servidor de identidad", + "What does this mean?": "¿Qué significa esto?", + "Remove from community": "Eliminar de la comunidad", + "Disinvite this user from community?": "¿Quitar como invitado a este usuario de la comunidad?", + "Remove this user from community?": "¿Eliminar a este usuario de la comunidad?", + "Failed to withdraw invitation": "Falló la retirada de la invitación", + "Failed to remove user from community": "Falló la eliminación de este usuario de la comunidad", + "Filter community members": "Filtrar miembros de la comunidad", + "Flair will appear if enabled in room settings": "La insignia aparecerá si se activa en los ajustes de sala", + "Flair will not appear": "La insignia no aparecerá", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "¿Seguro que quieres eliminar a '%(roomName)s' de %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Al eliminar una sala de la comunidad también se eliminará de su página.", + "Failed to remove room from community": "Falló la eliminación de la sala de la comunidad", + "Failed to remove '%(roomName)s' from %(groupId)s": "Falló la eliminación de '%(roomName)s' de %(groupId)s", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "La visibilidad de '%(roomName)s' en %(groupId)s no se pudo actualizar.", + "Visibility in Room List": "Visibilidad en la Lista de Salas", + "Visible to everyone": "Visible a todo el mundo", + "Only visible to community members": "Sólo visible a los miembros de la comunidad", + "Filter community rooms": "Filtrar salas de la comunidad", + "Something went wrong when trying to get your communities.": "Algo fue mal cuando se intentó obtener sus comunidades.", + "Display your community flair in rooms configured to show it.": "Muestra la insignia de su comunidad en las salas configuradas a tal efecto.", + "You're not currently a member of any communities.": "Actualmente no es miembro de una comunidad.", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Por favor, ayude a mejorar Riot.im enviando información anónima de uso. Esto usará una cookie (por favor, vea nuestra Política de cookies).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Por favor, ayude a mejorar Riot.im enviando información anónima de uso. Esto usará una cookie.", + "Yes, I want to help!": "Sí, ¡quiero ayudar!", + "Unknown Address": "Dirección desconocida", + "Warning: This widget might use cookies.": "Advertencia: Este widget puede usar cookies.", + "Delete Widget": "Eliminar Componente", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Al borrar un widget se elimina para todos usuarios de la sala. ¿Está seguro?", + "Failed to remove widget": "Falló la eliminación del widget", + "An error ocurred whilst trying to remove the widget from the room": "Ocurrió un error mientras se intentaba eliminar el widget de la sala", + "Minimize apps": "Minimizar apps", + "Reload widget": "Recargar widget", + "Popout widget": "Widget en ventana externa", + "Picture": "Fotografía", + "Unblacklist": "Dejar de Prohibir", + "Blacklist": "Prohibir", + "Unverify": "Anular Verificación", + "Verify...": "Verificar...", + "Communities": "Comunidades", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s se unieron %(count)s veces", + "one": "%(severalUsers)s se unieron" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s se unió %(count)s veces", + "one": "%(oneUser)s se unió" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s se fueron %(count)s veces", + "one": "%(severalUsers)s se fueron" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s se fue %(count)s veces", + "one": "%(oneUser)s salió" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s se unieron y fueron %(count)s veces", + "one": "%(severalUsers)s se unieron y fueron" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s se unió y fue %(count)s veces", + "one": "%(oneUser)s se unió y fue" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s se fueron y volvieron a unirse %(count)s veces", + "one": "%(severalUsers)s se fueron y volvieron a unirse" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s se fue y volvió a unirse %(count)s veces", + "one": "%(oneUser)s se fue y volvió a unirse" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s rechazó sus invitaciones %(count)s veces", + "one": "%(severalUsers)s rechazó sus invitaciones" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s rechazó su invitación %(count)s veces", + "one": "%(oneUser)s rechazó su invitación" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s se les retiraron sus invitaciones %(count)s veces", + "one": "%(severalUsers)s se les retiraron sus invitaciones" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s se le retiró su invitación %(count)s veces", + "one": "%(oneUser)s se les retiraron sus invitaciones" + }, + "were invited %(count)s times": { + "other": "fueron invitados %(count)s veces", + "one": "fueron invitados" + }, + "was invited %(count)s times": { + "other": "fue invitado %(count)s veces", + "one": "fue invitado" + }, + "were banned %(count)s times": { + "other": "fueron vetados %(count)s veces", + "one": "fueron vetados" + }, + "was banned %(count)s times": { + "other": "fue vetado %(count)s veces", + "one": "fue vetado" + }, + "were unbanned %(count)s times": { + "other": "les quitaron el veto %(count)s veces", + "one": "les quitaron el veto" + }, + "was unbanned %(count)s times": { + "other": "se le quitó el veto %(count)s veces", + "one": "se le quitó el veto" + }, + "were kicked %(count)s times": { + "other": "fueron echados %(count)s veces", + "one": "fueron echados" + }, + "was kicked %(count)s times": { + "other": "fue echado %(count)s veces", + "one": "fue echado" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s cambiaron su nombre %(count)s veces", + "one": "%(severalUsers)s cambiaron su nombre" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s cambió su nombre %(count)s veces", + "one": "%(oneUser)s cambió su nombre" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s cambiaron su avatar %(count)s veces", + "one": "%(severalUsers)s cambiaron su avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s cambió su avatar %(count)s veces", + "one": "%(oneUser)s cambió su avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s y otros %(count)s", + "one": "%(items)s y otro más" + }, + "collapse": "colapsar", + "expand": "expandir", + "Custom of %(powerLevel)s": "Personalizado de %(powerLevel)s", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "No se pudo cargar el evento al que se respondió, bien porque no existe o no tiene permiso para verlo.", + "In reply to ": "En respuesta a ", + "And %(count)s more...": { + "other": "Y %(count)s más..." + }, + "ex. @bob:example.com": "ej. @bob:ejemplo.com", + "Add User": "Agregar Usuario", + "Matrix ID": "ID de Matrix", + "Matrix Room ID": "ID de Sala de Matrix", + "email address": "dirección de correo electrónico", + "You have entered an invalid address.": "No ha introducido una dirección correcta.", + "Try using one of the following valid address types: %(validTypesList)s.": "Intente usar uno de los tipos de direcciones válidos: %(validTypesList)s.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Los fallos de Riot se rastrean en GitHun: crear un suceso en GitHub.", + "Start chatting": "Iniciar conversación", + "Click on the button below to start chatting!": "¡Haz clic en el botón a continuación para iniciar una conversación!", + "Start Chatting": "Iniciar Conversación", + "Confirm Removal": "Confirmar Eliminación", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "¿Seguro que quieres eliminar (borrar) este evento? Ten en cuenta que si borras un cambio de nombre o tema de sala, podrías deshacer el cambio.", + "Community IDs cannot be empty.": "Las IDs de comunidad no pueden estar vacías.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Las IDs de comunidad sólo pueden contener caracteres a-z, 0-9, ó '=_-./'", + "Something went wrong whilst creating your community": "Algo fue mal mientras se creaba la comunidad", + "Create Community": "Crear Comunidad", + "Community Name": "Nombre de Comunidad", + "Example": "Ejemplo", + "Community ID": "ID de Comunidad", + "example": "ejemplo", + "Create": "Crear", + "Advanced options": "Opciones avanzadas", + "Block users on other matrix homeservers from joining this room": "Impedir que usuarios de otros servidores domésticos se unan a esta sala", + "This setting cannot be changed later!": "¡Este ajuste no se puede cambiar más tarde!", + "Failed to indicate account erasure": "Falló la indicación de eliminado de la cuenta", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Esto hará que tu cuenta quede permanentemente inutilizable. No podrás iniciar sesión, y nadie podrá volver a registrar la misma ID de usuario. Esto hará que tu cuenta salga de todas las salas en las cuales participa, y eliminará los datos de tu cuenta de tu servidor de identidad. Esta acción es irreversible.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Desactivar tu cuenta no hace que por defecto olvidemos los mensajes que has enviado. Si quieres que olvidemos tus mensajes, por favor marca la casilla a continuación.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "La visibilidad de mensajes en Matrix es similar a la del correo electrónico. Que olvidemos tus mensajes implica que los mensajes que hayas enviado no se compartirán con ningún usuario nuevo o no registrado, pero aquellos usuarios registrados que ya tengan acceso a estos mensajes seguirán teniendo acceso a su copia.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Por favor, olvida todos los mensajes enviados al desactivar mi cuenta. (Advertencia: esto provocará que los usuarios futuros vean conversaciones incompletas)", + "To continue, please enter your password:": "Para continuar, ingresa tu contraseña por favor:", + "password": "contraseña", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Para verificar que este dispositivo es confiable, por favor contacta a su dueño por algún otro medio (ej. cara a cara o por teléfono) y pregúntale si la clave que ve en sus Ajustes de Usuario para este dispositivo coincide con la clave a continuación:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Si coincide, oprime el botón de verificar a continuación. Si no coincide, entonces alguien más está interceptando este dispositivo y probablemente prefieras oprimir el botón de prohibir.", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Añadiste un nuevo dispositivo '%(displayName)s', que está solicitando claves de cifrado.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Tu dispositivo sin verificar '%(displayName)s' está solicitando claves de cifrado.", + "Loading device info...": "Cargando información del dispositivo...", + "Encryption key request": "Solicitud de clave de cifrado", + "Log out and remove encryption keys?": "¿Cerrar sesión y eliminar claves de cifrado?", + "Clear Storage and Sign Out": "Borrar Almacenamiento y Cerrar Sesión", + "Send Logs": "Enviar Registros", + "Refresh": "Refrescar", + "We encountered an error trying to restore your previous session.": "Encontramos un error al intentar restaurar su sesión anterior.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si ha usado anteriormente una versión más reciente de Riot, su sesión puede ser incompatible con ésta. Cierre la ventana y vuelva a la versión más reciente.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpiando el almacenamiento del navegador puede arreglar el problema, pero le desconectará y cualquier historial de conversación cifrado se volverá ilegible.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Los nombres de usuario solo pueden contener letras, números, puntos, guiones y guiones bajos.", + "Username not available": "Nombre de usuario no disponible", + "An error occurred: %(error_string)s": "Ocurrió un error: %(error_string)s", + "Username available": "Nombre de usuario disponible", + "This will be your account name on the homeserver, or you can pick a different server.": "Este será el nombre de su cuenta en el servidor doméstico, o puede elegir un servidor diferente.", + "If you already have a Matrix account you can log in instead.": "Si ya tiene una cuenta de Matrix puede conectarse: log in.", + "Share Room": "Compartir Sala", + "Link to most recent message": "Enlazar a mensaje más reciente", + "Share User": "Compartir Usuario", + "Share Community": "Compartir Comunidad", + "Share Room Message": "Compartir Mensaje de Sala", + "Link to selected message": "Enlazar a mensaje seleccionado", + "COPY": "COPIAR", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Está actualmente prohibiendo dispositivos sin verificar; para enviar mensajes a los mismos deber verificarlos.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Le recomendamos que efectúe el proceso de verificación con cada dispositivo para confirmar que pertenecen a su propietario legítimo, pero si lo prefiere puede reenviar el mensaje sin verificar.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contiene dispositivos que no ha visto antes.", + "Unknown devices": "Dispositivos desconocidos", + "Unable to reject invite": "No se pudo rechazar la invitación", + "Share Message": "Compartir mensaje", + "Collapse Reply Thread": "Colapsar Hilo de Respuestas", + "Topic": "Tema", + "Make this room private": "Hacer privada esta sala", + "Share message history with new users": "Compartir historial de mensajes con nuevos usuarios", + "Encrypt room": "Cifrar sala", + "There are no visible files in this room": "No hay archivos visibles en esta sala", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "HTML para la página de tu comunidad. Usa la descripción larga para su presentación, o distribuir enlaces de interés. Puedes incluso usar etiquetas 'img'\n", + "Add rooms to the community summary": "Agregar salas al resumen de la comunidad", + "Which rooms would you like to add to this summary?": "¿Cuáles salas desea agregar a este resumen?", + "Add to summary": "Agregar a resumen", + "Failed to add the following rooms to the summary of %(groupId)s:": "Falló la agregación de las salas siguientes al resumen de %(groupId)s:", + "Add a Room": "Agregar una Sala", + "Failed to remove the room from the summary of %(groupId)s": "Falló la eliminación de la sala del resumen de %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "La sala '%(roomName)s' no se pudo eliminar del resumen.", + "Add users to the community summary": "Agregar usuario al resumen de la comunidad", + "Who would you like to add to this summary?": "¿A quién le gustaría agregar a este resumen?", + "Failed to add the following users to the summary of %(groupId)s:": "Falló la adición de los usuarios siguientes al resumen de %(groupId)s:", + "Add a User": "Agregar un usuario", + "Failed to remove a user from the summary of %(groupId)s": "Falló la eliminación de un usuario del resumen de %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "No se pudo eliminar al usuario '%(displayName)s' del resumen.", + "Failed to upload image": "No se pudo cargar la imagen", + "Failed to update community": "Falló la actualización de la comunidad", + "Unable to accept invite": "No se pudo aceptar la invitación", + "Unable to join community": "No se pudo unir a comunidad", + "Leave Community": "Salir de la Comunidad", + "Leave %(groupName)s?": "¿Salir de %(groupName)s?", + "Unable to leave community": "No se pudo abandonar la comunidad", + "Community Settings": "Ajustes de Comunidad", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Las modificaciones realizadas al nombre y avatar de la comunidad pueden no mostrarse a otros usuarios hasta dentro de 30 minutos.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas se muestran a los miembros de la comunidad en la página de la misma. Los miembros pueden unirse a las salas pulsando sobre ellas.", + "Featured Rooms:": "Salas destacadas:", + "Featured Users:": "Usuarios destacados:", + "%(inviter)s has invited you to join this community": "%(inviter)s te invitó a unirte a esta comunidad", + "Join this community": "Unirse a esta comunidad", + "Leave this community": "Salir de esta comunidad", + "You are an administrator of this community": "Usted es un administrador de esta comunidad", + "You are a member of this community": "Usted es un miembro de esta comunidad", + "Who can join this community?": "¿Quién puede unirse a esta comunidad?", + "Everyone": "Todo el mundo", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Su comunidad no tiene una descripción larga, una página HTML para mostrar a sus miembros.
Pulse aquí para abrir los ajustes y definirla", + "Long Description (HTML)": "Descripción Larga (HTML)", + "Description": "Descripción", + "Community %(groupId)s not found": "No se encontraron %(groupId)s de la comunidad", + "This Home server does not support communities": "Este Servidor Doméstico no soporta comunidades", + "Failed to load %(groupId)s": "Falló la carga de %(groupId)s", + "This room is not public. You will not be able to rejoin without an invite.": "Esta sala no es pública. No podrá volver a unirse sin una invitación.", + "Can't leave Server Notices room": "No puede abandonar la sala Avisos del Servidor", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "La sala se usa para mensajes importantes del Servidor Doméstico, así que no puede abandonarla.", + "Terms and Conditions": "Términos y condiciones", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Para continuar usando el servidor doméstico %(homeserverDomain)s debe revisar y estar de acuerdo con nuestros términos y condiciones.", + "Review terms and conditions": "Revisar términos y condiciones", + "Old cryptography data detected": "Se detectó información de criptografía antigua", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Se detectó una versión más antigua de Riot. Esto habrá provocado que la criptografía de extremo a extremo funcione incorrectamente en la versión más antigua. Los mensajes cifrados de extremo a extremo intercambiados recientemente mientras usaba la versión más antigua puede que no sean descifrables con esta versión. Esto también puede hacer que fallen con la más reciente. Si experimenta problemas, desconecte y vuelva a ingresar. Para conservar el historial de mensajes, exporte y vuelva a importar sus claves.", + "Your Communities": "Sus Comunidades", + "Did you know: you can use communities to filter your Riot.im experience!": "Sabía que: puede usar comunidades para filtrar su experiencia con Riot.im", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Para configurar un filtro, arrastre un avatar de comunidad sobre el panel de filtro en la parte izquierda de la pantalla. Puede pulsar sobre un avatar en el panel de filtro en cualquier momento para ver solo las salas y personas asociadas con esa comunidad.", + "Error whilst fetching joined communities": "Error al recuperar las comunidades a las que estás unido", + "Create a new community": "Crear una comunidad nueva", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crear una comunidad para agrupar usuarios y salas. Construye una página de inicio personalizada para destacarla.", + "Show devices, send anyway or cancel.": "Mostrar dispositivos, enviar de todos modos o cancelar.", + "You can't send any messages until you review and agree to our terms and conditions.": "No puede enviar ningún mensaje hasta que revise y esté de acuerdo con nuestros términos y condiciones.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Reenviar todo o cancelar todo ahora. También puedes seleccionar mensajes individuales para reenviar o cancelar.", + "one": "Reenviar mensaje o cancelar mensaje ahora." + }, + "Connectivity to the server has been lost.": "Se perdió la conexión con el servidor.", + "Sent messages will be stored until your connection has returned.": "Los mensajes enviados se almacenarán hasta que vuelva su conexión.", + "Active call": "Llamada activa", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "¡No hay nadie aquí! ¿Le gustaría invitar a otros o dejar de advertir sobre la sala vacía?", + "Room": "Sala", + "Clear filter": "Borrar filtro", + "Light theme": "Tema claro", + "Dark theme": "Tema oscuro", + "Status.im theme": "Tema Status.im", + "Autocomplete Delay (ms):": "Retraso del completado automático (en ms):", + "Ignored Users": "Usuarios Ignorados", + "Debug Logs Submission": "Envío de registros para depuración", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Si has enviado un error a GitHub, estos registros pueden ayudar a localizar el problema. Contienen información de uso de la aplicación, incluido el nombre de usuario, IDs o alias de las salas o grupos visitados y los nombres de otros usuarios. No contienen mensajes.", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot recopila análisis de estadísticas anónimas para permitirnos mejorar la aplicación.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "La privacidad es importante, por lo que no se recopila información personal o identificable en los análisis de estadísticas.", + "Learn more about how we use analytics.": "Más información sobre el uso de los análisis de estadísticas.", + "Updates": "Actualizaciones", + "Check for update": "Comprobar actualizaciones", + "Desktop specific": "Específico de escritorio", + "Start automatically after system login": "Ejecutar automáticamente después de iniciar sesión en el sistema", + "No Audio Outputs detected": "No se detectaron Salidas de Sonido", + "Audio Output": "Salida de Sonido", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Se envió un correo electrónico a %(emailAddress)s. Una vez hayas seguido el enlace que contiene, haz clic a continuación.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Por favor, tenga en cuenta que está ingresando en el servidor %(hs)s, no en matrix.org.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Este servidor doméstico no ofrece flujos de ingreso soportados por este cliente.", + "Try the app first": "Probar primero la app", + "Sign in to get started": "Ingresar para comenzar", + "Set a display name:": "Establece un nombre público:", + "Upload an avatar:": "Subir un avatar:", + "This server does not support authentication with a phone number.": "Este servidor no es compatible con autenticación mediante número telefónico.", + "Missing password.": "Falta la contraseña.", + "Passwords don't match.": "Las contraseñas no coinciden.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Contraseña demasiado corta (mínimo %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Esto no parece ser una dirección de correo electrónico válida.", + "This doesn't look like a valid phone number.": "Esto no parece ser un número telefónico válido.", + "An unknown error occurred.": "Ocurrió un error desconocido.", + "I already have an account": "Ya tengo una cuenta", + "Notify the whole room": "Notificar a toda la sala", + "Room Notification": "Notificación de Salas", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este proceso te permite exportar las claves para los mensajes que has recibido en salas cifradas a un archivo local. En el futuro, podrás importar el archivo a otro cliente de Matrix, para que ese cliente también sea capaz de descifrar estos mensajes.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "El archivo exportado le permitirá descifrar cualquier mensaje cifrado que puedas ver a cualquier persona que pueda leerlo, así que deberías ser cuidadoso para mantenerlo seguro. Para ayudarte, deberías ingresar una frase de contraseña a continuación, la cual será utilizada para cifrar los datos exportados. Solo será posible importar los datos utilizando la misma frase de contraseña.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este proceso te permite importar claves de cifrado que hayas exportado previamente desde otro cliente de Matrix. Así, podrás descifrar cualquier mensaje que el otro cliente pudiera descifrar.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "El archivo exportado estará protegido con una contraseña. Deberías ingresar la contraseña aquí para descifrar el archivo.", + "Internal room ID: ": "ID interno de la sala: ", + "Room version number: ": "Número de versión de la sala: ", + "There is a known vulnerability affecting this room.": "Hay una vulnerabilidad conocida que afecta a esta sala.", + "This room version is vulnerable to malicious modification of room state.": "La versión de esta sala es vulnerable a la modificación maliciosa de su estado.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Pulse aquí para actualizar a la última versión de la sala y garantizar que se protege su integridad.", + "Only room administrators will see this warning": "Sólo los administradores de la sala verán esta advertencia", + "Please contact your service administrator to continue using the service.": "Por favor, contacta al administrador de tu servicio para continuar utilizando el servicio.", + "This homeserver has hit its Monthly Active User limit.": "Este servidor doméstico ha alcanzado su límite Mensual de Usuarios Activos.", + "This homeserver has exceeded one of its resource limits.": "Este servidor doméstico ha excedido uno de sus límites de recursos.", + "Please contact your service administrator to get this limit increased.": "Por favor, contacta al administrador de tu servicio para aumentar este límite.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Este servidor doméstico ha alcanzado su límite Mensual de Usuarios Activos, por lo que algunos usuarios no podrán iniciar sesión.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Este servidor doméstico ha excedido uno de sus límites de recursos, por lo que algunos usuarios no podrán iniciar sesión.", + "Upgrade Room Version": "Actualizar Versión de la Sala", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "La actualización esta sala requiere cerrar la instancia actual de la misma y crear una nueva en su lugar. Para ofrecer a los miembros de la sala la mejor experiencia posible, haremos:", + "Create a new room with the same name, description and avatar": "Crear una sala nueva con el mismo nombre, descripción y avatar", + "Update any local room aliases to point to the new room": "Actualizar los alias locales de la sala para que apunten a la nueva", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Impedir a los usuarios que conversen en la versión antigua de la sala, y publicar un mensaje aconsejándoles que se muden a la nueva", + "Put a link back to the old room at the start of the new room so people can see old messages": "Poner un enlace de retorno a la sala antigua al principio de la nueva de modo que se puedan ver los mensajes viejos", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Tu mensaje no se envió porque este servidor doméstico ha alcanzado su Límite Mensual de Usuarios Activos. Por favor, contacta al administrador de tu servicio para continuar utilizando el servicio.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Su mensaje no se envió porque este servidor doméstico ha excedido un límite de recursos. Por favor contacta al administrador de tu servicio para continuar utilizando el servicio.", + "Please contact your service administrator to continue using this service.": "Por favor, contacta al administrador de tu servicio para continuar utilizando este servicio.", + "Increase performance by only loading room members on first view": "Incrementar el rendimiento cargando sólo los miembros de la sala en la primera vista", + "Lazy loading members not supported": "No se admite la carga diferida de miembros", + "Lazy loading is not supported by your current homeserver.": "La carga lenta no está soportada por su servidor doméstico actual.", + "System Alerts": "Alertas de Sistema", + "Forces the current outbound group session in an encrypted room to be discarded": "Obliga a que la sesión de salida grupal actual en una sala cifrada se descarte", + "Error Discarding Session": "Error al Descartar la Sesión", + "Sorry, your homeserver is too old to participate in this room.": "Lo sentimos, tu servidor doméstico es demasiado antiguo para participar en esta sala.", + "Please contact your homeserver administrator.": "Por favor contacta al administrador de tu servidor doméstico.", + "This room has been replaced and is no longer active.": "Esta sala ha sido reemplazada y ya no está activa.", + "The conversation continues here.": "La conversación continúa aquí.", + "Upgrade room to version %(ver)s": "Actualiza la sala a la versión %(ver)s", + "This room is a continuation of another conversation.": "Esta sala es una continuación de otra conversación.", + "Click here to see older messages.": "Haz clic aquí para ver mensajes más antiguos.", + "Failed to upgrade room": "No se pudo actualizar la sala", + "The room upgrade could not be completed": "La actualización de la sala no pudo ser completada", + "Upgrade this room to version %(version)s": "Actualiza esta sala a la versión %(version)s", + "Legal": "Legal", + "Unable to connect to Homeserver. Retrying...": "No es posible conectarse al Servidor Doméstico. Volviendo a intentar...", + "Registration Required": "Se Requiere Registro", + "You need to register to do this. Would you like to register now?": "Necesitas registrarte para hacer esto. ¿Te gustaría registrarte ahora?", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s añadió %(addedAddresses)s como direcciones para esta sala.", + "one": "%(senderName)s añadió %(addedAddresses)s como una dirección para esta sala." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s eliminó %(removedAddresses)s como direcciones para esta sala.", + "one": "%(senderName)s eliminó %(removedAddresses)s como una dirección para esta sala." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s añadió %(addedAddresses)s y eliminó %(removedAddresses)s como direcciones para esta sala.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s estableció la dirección principal para esta sala como %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s eliminó la dirección principal para esta sala.", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot ahora utiliza de 3 a 5 veces menos memoria, porque solo carga información sobre otros usuarios cuando es necesario. Por favor, ¡aguarda mientras volvemos a sincronizar con el servidor!", + "Updating Riot": "Actualizando Riot", + "Unable to query for supported registration methods": "No es posible consultar por los métodos de registro compatibles", + "Unknown device": "Dispositivo desconocido", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s en %(osName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop en %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot no está soportado en navegadores Web móviles. ¿Quieres instalar la aplicación?", + "You need to be using HTTPS to place a screen-sharing call.": "Debes usar HTTPS para hacer una llamada con pantalla compartida.", + "Welcome to Riot.im": "Bienvenido a Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversaciones cifradas y descentralizadas & colaboración con el poder de [matrix]", + "Search the room directory": "Buscar en el directorio de salas", + "Chat with Riot Bot": "Conversar con el Bot de Riot", + "Get started with some tips from Riot Bot!": "¡Comenzar con algunos consejos de Riot Bot!", + "General discussion about Matrix and Riot": "Discusión general sobre Matrix y Riot", + "Discussion of all things Matrix!": "¡Discusión sobre todas las cosas de Matrix!", + "Riot/Web & Desktop chat": "Conversaciones de Riot/Web & Desktop", + "Riot/iOS & matrix-ios-sdk chat": "Conversaciones sobre Riot/iOS & matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Conversaciones sobre Riot/Android & matrix-android-sdk", + "Matrix technical discussions": "Discusiones técnicas sobre Matrix", + "Running Matrix services": "Ejecutando servicios de Matrix", + "Community-run support for Synapse": "Soporte comunitario de Synapse", + "Admin support for Dendrite": "Soporte administrativo para Dendrite", + "Announcements about Synapse releases": "Anuncios de lanzamientos de Synapse", + "Support for those using and running matrix-appservice-irc": "Soporte para aquellos que usan o administran matrix-appservice-irc", + "Building services on Matrix": "Construyendo servicios con Matrix", + "Support for those using the Matrix spec": "Soporte para usuarios de la especificación de Matrix", + "Design and implementation of E2E in Matrix": "Diseño e implementación de E2E en Matrix", + "Implementing VR services with Matrix": "Implementación de servicios VR con Matrix", + "Implementing VoIP services with Matrix": "Implementación de servicios VoIP con Matrix", + "Discussion of the Identity Service API": "Discusión sobre el API de Identity Service", + "Support for those using, running and writing other bridges": "Soporte para usuarios, administradores y desarrolladores de otros puentes", + "Contributing code to Matrix and Riot": "Contribuciones de código para Matrix y Riot", + "Dev chat for the Riot/Web dev team": "Conversaciones del equipo de desarrollo de Riot/Web", + "Dev chat for the Dendrite dev team": "Conversaciones del equipo de desarrollo de Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muchas salas ya están disponibles en Matrix, enlazadas a redes existentes (Slack, IRC, Gitter, etc) o independientes. ¡Revisa el directorio!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puedes usar las opciones del servidor personalizado para acceder a otros servidores Matrix especificando su URL.
Esto te permite usar Riot con una cuenta Matrix existente en un servidor doméstico distinto.

También puedes establecer un servidor de identidad personalizado pero no podrás invitar a otros usuarios usando su dirección de correo electrónico, y tampoco ser invitado por el tuyo.", + "Co-ordination for Riot translators": "Co-odinación de traductores de Riot" +} \ No newline at end of file diff --git a/riot/i18n/eu.json b/riot/i18n/eu.json new file mode 100644 index 0000000..92e4139 --- /dev/null +++ b/riot/i18n/eu.json @@ -0,0 +1,1404 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Mezu bat bidali da +%(msisdn)s zenbakira. Sartu hemen mezuko egiaztaketa kodea", + "Accept": "Onartu", + "%(targetName)s accepted an invitation.": "%(targetName)s erabiltzaileak gonbidapena onartu du.", + "Close": "Itxi", + "Create new room": "Sortu gela berria", + "Continue": "Jarraitu", + "Error": "Errorea", + "Failed to change password. Is your password correct?": "Pasahitza aldatzean huts egin du. Zuzena da pasahitza?", + "Failed to forget room %(errCode)s": "Huts egin du %(errCode)s gela ahaztean", + "Favourite": "Gogokoa", + "Mute": "Mututu", + "Notifications": "Jakinarazpenak", + "OK": "Ados", + "Operation failed": "Eragiketak huts egin du", + "Remove": "Kendu", + "Search": "Bilatu", + "Settings": "Ezarpenak", + "unknown error code": "errore kode ezezaguna", + "Room directory": "Gelen direktorioa", + "Start chat": "Hasi txata", + "Custom Server Options": "Zerbitzari pertsonalizatuaren aukerak", + "Dismiss": "Baztertu", + "powered by Matrix": "Matrix mamian", + "Room": "Gela", + "Historical": "Historiala", + "Save": "Gorde", + "Delete": "Ezabatu", + "Active call": "Dei aktiboa", + "Conference calls are not supported in encrypted rooms": "Konferentzia deiak ez daude onartuta zifratutako geletan", + "Sign out": "Amaitu saioa", + "Home": "Hasiera", + "Favourites": "Gogokoak", + "People": "Jendea", + "Rooms": "Gelak", + "Invites": "Gonbidapenak", + "Low priority": "Lehentasun baxua", + "No results": "Emaitzarik ez", + "Join Room": "Elkartu gelara", + "Register": "Eman izena", + "Submit": "Bidali", + "Skip": "Saltatu", + "Send Reset Email": "Bidali berrezartzeko e-maila", + "Return to login screen": "Itzuli saio hasierarako pantailara", + "Password": "Pasahitza", + "New password": "Pasahitz berria", + "User name": "Erabiltzaile-izena", + "Email address": "E-mail helbidea", + "Email address (optional)": "E-mail helbidea (aukerakoa)", + "Confirm your new password": "Berretsi zure pasahitza", + "This Home Server would like to make sure you are not a robot": "Hasiera zerbitzari honek robot bat ez zarela egiaztatu nahi du", + "I have verified my email address": "Nire e-mail helbidea baieztatu dut", + "The email address linked to your account must be entered.": "Zure kontura gehitutako e-mail helbidea sartu behar da.", + "A new password must be entered.": "Pasahitz berri bat sartu behar da.", + "Failed to verify email address: make sure you clicked the link in the email": "Huts egin du e-mail helbidearen egiaztaketak, egin klik e-mailean zetorren estekan", + "Jump to first unread message.": "Jauzi irakurri gabeko lehen mezura.", + "Warning!": "Abisua!", + "Leave room": "Atera gelatik", + "Online": "Konektatuta", + "Offline": "Deskonektatuta", + "Idle": "Inaktibo", + "Ban": "Debekatu", + "Unban": "Debekua kendu", + "Connectivity to the server has been lost.": "Zerbitzariarekin konexioa galdu da.", + "You do not have permission to post to this room": "Ez duzu gela honetara mezuak bidaltzeko baimenik", + "Logout": "Amaitu saioa", + "Filter room members": "Iragazi gelako kideak", + "Email": "E-mail", + "Add email address": "Gehitu e-mail helbidea", + "Phone": "Telefonoa", + "Add phone number": "Gehitu telefono zenbakia", + "Advanced": "Aurreratua", + "Cryptography": "Kriptografia", + "Devices": "Gailuak", + "Hide read receipts": "Ezkutatu irakurragiriak", + "Don't send typing notifications": "Ez bidali idatzi bitarteko jakinarazpenak", + "Always show message timestamps": "Erakutsi beti mezuen denbora-zigilua", + "Name": "Izena", + "Device Name": "Gailuaren izena", + "Last seen": "Azkenekoz ikusia", + "Authentication": "Autentifikazioa", + "Password:": "Pasahitza:", + "Interface Language": "Interfazearen hizkuntza", + "Verification Pending": "Egiaztaketa egiteke", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Irakurri zure e-maila eta egin klik dakarren estekan. Behin eginda, egin klik Jarraitu botoian.", + "This email address is already in use": "E-mail helbide hau erabilita dago", + "This phone number is already in use": "Telefono zenbaki hau erabilita dago", + "Topic": "Mintzagaia", + "none": "bat ere ez", + "Who can read history?": "Nork irakurri dezake historiala?", + "Who can access this room?": "Nor sartu daiteke gelara?", + "Anyone": "Edonork", + "Only people who have been invited": "Gonbidatua izan den jendea besterik ez", + "Anyone who knows the room's link, apart from guests": "Gelaren esteka dakien edonor, bisitariak ezik", + "Anyone who knows the room's link, including guests": "Gelaren esteka dakien edonor, bisitariak barne", + "Banned users": "Debekatutako erabiltzaileak", + "Labs": "Laborategia", + "This room has no local addresses": "Gela honek ez du tokiko helbiderik", + "Invalid alias format": "Ezizenaren formatu baliogabea", + "End-to-end encryption information": "Muturretik muturrerako zifratzearen informazioa", + "Event information": "Gertaeraren informazioa", + "Curve25519 identity key": "Curve25519 identitate gakoa", + "Claimed Ed25519 fingerprint key": "Aldarrikatutako Ed25519 hatz-marka gakoa", + "Algorithm": "Algoritmoa", + "Session ID": "Saioaren IDa", + "Decryption error": "Deszifratze errorea", + "Sender device information": "Igorlearen gailuaren informazioa", + "Device name": "Gailuaren izena", + "Device ID": "Gailuaren IDa", + "Device key": "Gailuaren gakoa", + "Verification": "Egiaztaketa", + "Ed25519 fingerprint": "Ed25519 hatz-marka", + "Export E2E room keys": "Esportatu gelako E2E gakoak", + "Export room keys": "Esportatu gelako gakoak", + "Export": "Esportatu", + "Enter passphrase": "Idatzi pasaesaldia", + "Confirm passphrase": "Berretsi pasaesaldia", + "Import E2E room keys": "Inportatu gelako E2E gakoak", + "Import room keys": "Inportatu gelako gakoak", + "Import": "Inportatu", + "Never send encrypted messages to unverified devices from this device": "Ez bidali inoiz zifratutako mezuak egiaztatu gabeko gailuetara gailu honetatik", + "Verified": "Egiaztatuta", + "Blacklisted": "Blokeatuta", + "unknown device": "gailu ezezaguna", + "Unverify": "Kendu egiaztaketa", + "Blacklist": "Blokeatu", + "Unblacklist": "Desblokeatu", + "Verify device": "Egiaztatu gailua", + "I verify that the keys match": "Gakoak bat datozela egiaztatu dut", + "Room contains unknown devices": "Gelan gailu ezezagunak daude", + "Someone": "Norbait", + "Start a chat": "Hasi txat bat", + "Start authentication": "Hasi autentifikazioa", + "Start Chat": "Hasi txata", + "Success": "Arrakasta", + "For security, this session has been signed out. Please sign in again.": "Segurtasunagatik saio hau amaitu da. Hasi saioa berriro.", + "Guests cannot join this room even if explicitly invited.": "Bisitariak ezin dira gela honetara elkartu ez bazaie zuzenean gonbidatu.", + "Hangup": "Eseki", + "Homeserver is": "Hasiera zerbitzaria:", + "Identity Server is": "Identitate zerbitzaria:", + "Mobile phone number (optional)": "Mugikor zenbakia (aukerakoa)", + "Moderator": "Moderatzailea", + "Account": "Kontua", + "Access Token:": "Sarbide tokena:", + "Active call (%(roomName)s)": "Dei aktiboa (%(roomName)s)", + "Add": "Gehitu", + "Add a topic": "Gehitu mintzagai bat", + "Admin": "Kudeatzailea", + "Admin Tools": "Administrazio-tresnak", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Media baimenak falta dira, egin klik eskatzeko.", + "No Microphones detected": "Ez da mikrofonorik atzeman", + "No Webcams detected": "Ez da kamerarik atzeman", + "No media permissions": "Media baimenik ez", + "You may need to manually permit Riot to access your microphone/webcam": "Agian eskuz baimendu behar duzu Riotek mikrofonoa edo kamera atzitzea", + "Default Device": "Lehenetsitako gailua", + "Microphone": "Mikrofonoa", + "Camera": "Kamera", + "Hide removed messages": "Ezkutatu kendutako mezuak", + "Alias (optional)": "Ezizena (aukerakoa)", + "%(names)s and %(lastPerson)s are typing": "%(names)s eta %(lastPerson)s idazten ari dira", + "An error has occurred.": "Errore bat gertatu da.", + "Are you sure?": "Ziur zaude?", + "Are you sure you want to leave the room '%(roomName)s'?": "Ziur '%(roomName)s' gelatik atera nahi duzula?", + "Are you sure you want to reject the invitation?": "Ziur gonbidapena baztertu nahi duzula?", + "Are you sure you want to upload the following files?": "Ziur hurrengo fitxategiak igo nahi dituzula?", + "Attachment": "Eranskina", + "Autoplay GIFs and videos": "Automatikoki erreproduzitu GIFak eta bideoa", + "%(senderName)s banned %(targetName)s.": "%(senderName)s erabiltzaileak %(targetName)s debekatu du.", + "Bans user with given id": "Debekatu ID zehatz bat duen erabiltzailea", + "Call Timeout": "Deiaren denbora-muga", + "Change Password": "Aldatu pasahitza", + "Changes your display nickname": "Zure pantaila-izena aldatzen du", + "Clear Cache": "Garbitu cachea", + "Click here to join the discussion!": "Elkartu elkarrizketara!", + "Click here to fix": "Egin klik hemen konpontzeko", + "Click to mute audio": "Egin klik audioa mututzeko", + "Click to mute video": "Egin klik bideoa mututzeko", + "click to reveal": "egin klik erakusteko", + "Click to unmute video": "Egin klik bideoaren audioa gaitzeko", + "Click to unmute audio": "Egin klik audioa gaitzeko", + "Command error": "Aginduaren errorea", + "Commands": "Aginduak", + "Conference call failed.": "Konferentzia deiak huts egin du.", + "Conference calling is in development and may not be reliable.": "Konferentzia deia garapenean dago eta agian ez dabil behar bezala.", + "Confirm password": "Berretsi pasahitza", + "Conference calls are not supported in this client": "Bezero honek ez ditu konferentzia deiak onartzen", + "Could not connect to the integration server": "Ezin izan da integrazio zerbitzarira konektatu", + "%(count)s new messages": { + "one": "mezu berri %(count)s", + "other": "%(count)s mezu berri" + }, + "Create a new chat or reuse an existing one": "Sortu txat berria edo berrerabili aurreko bat", + "Create an account": "Sortu kontua", + "Create Room": "Sortu gela", + "Current password": "Oraingo pasahitza", + "Custom": "Pertsonalizatua", + "Custom level": "Maila pertsonalizatua", + "/ddg is not a command": "/ddg ez da agindu bat", + "Deactivate Account": "Desaktibatu kontua", + "Deactivate my account": "Desaktibatu nire kontua", + "Decline": "Ukatu", + "Decrypt %(text)s": "Deszifratu %(text)s", + "Default": "Lehenetsia", + "Device already verified!": "Gailua egiaztatuta dago!", + "Device ID:": "Gailuaren IDa:", + "device id: ": "gailuaren id-a: ", + "Device key:": "Gailuaren gakoa:", + "Direct chats": "Txat zuzenak", + "Disable Notifications": "Desgaitu jakinarazpenak", + "Display name": "Pantaila-izena", + "Displays action": "Ekintza bistaratzen du", + "Drop File Here": "Jaregin fitxategia hona", + "%(items)s and %(lastItem)s": "%(items)s eta %(lastItem)s", + "%(senderName)s answered the call.": "%(senderName)s erabiltzaileak deia erantzun du.", + "Can't load user settings": "Ezin izan dira erabiltzailearen ezarpenak kargatu", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s erabiltzaileak gelaren izena kendu du.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s erabiltzaileak mintzagaia aldatu du beste honetara: \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Historiala irakurtzeko baimenen aldaketak gela honetara hemendik aurrera heldutako mezuei aplikatuko zaizkie", + "Clear Cache and Reload": "Garbitu cachea eta birkargatu", + "Devices will not yet be able to decrypt history from before they joined the room": "Gailuek ezin izango dute taldera elkartu aurretiko historiala deszifratu", + "Disinvite": "Kendu gonbidapena", + "Download %(text)s": "Deskargatu %(text)s", + "Email, name or matrix ID": "E-mail, izena edo Matrix ID-a", + "Emoji": "Emoji", + "Enable encryption": "Gaitu zifratzea", + "Enable Notifications": "Gaitu jakinarazpenak", + "Encrypted by a verified device": "Egiaztatutako gailu batek zifratuta", + "Encrypted by an unverified device": "Egiaztatu gabeko gailu batek zifratuta", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Zifratutako mezuak ez dira ikusgai izango oraindik zifratzea onartzen ez duten bezeroetan", + "Encrypted room": "Zifratutako gela", + "Encryption is enabled in this room": "Zifratzea gaitu da gela honetan", + "Encryption is not enabled in this room": "Ez da zifratzea gaitu gela honetan", + "%(senderName)s ended the call.": "%(senderName)s erabiltzaileak deia amaitu du.", + "End-to-end encryption is in beta and may not be reliable": "Muturretik muturrerako zifratzea beta egoeran dago eta agian ez dabil guztiz ondo", + "Enter Code": "Sartu kodea", + "Error decrypting attachment": "Errorea eranskina deszifratzean", + "Error: Problem communicating with the given homeserver.": "Errorea: Arazoa emandako hasiera zerbitzariarekin komunikatzeko.", + "Existing Call": "Badagoen deia", + "Failed to ban user": "Huts egin du erabiltzailea debekatzean", + "Failed to change power level": "Huts egin du botere maila aldatzean", + "Failed to fetch avatar URL": "Huts egin du abatarraren URLa jasotzean", + "Failed to join room": "Huts egin du gelara elkartzean", + "Failed to kick": "Huts egin du kanporatzean", + "Failed to leave room": "Huts egin du gelatik ateratzean", + "Failed to load timeline position": "Huts egin du denbora-lerroko puntua kargatzean", + "Failed to mute user": "Huts egin du erabiltzailea mututzean", + "Failed to reject invite": "Huts egin du gonbidapena baztertzean", + "Failed to reject invitation": "Huts egin du gonbidapena baztertzean", + "Failed to save settings": "Huts egin du ezarpenak gordetzean", + "Failed to send email": "Huts egin du e-maila bidaltzean", + "Failed to send request.": "Huts egin du eskaera bidaltzean.", + "Failed to set avatar.": "Huts egin du abatarra ezartzean.", + "Failed to set display name": "Huts egin du pantaila-izena ezartzean", + "Failed to set up conference call": "Huts egin du konferentzia deia ezartzean", + "Failed to toggle moderator status": "Huts egin du moderatzaile rola aldatzean", + "Failed to unban": "Huts egin du debekua kentzean", + "Failed to upload file": "Huts egin du fitxategia igotzean", + "Failed to upload profile picture!": "Huts egin du profileko argazkia igotzean!", + "Failure to create room": "Huts egin du gela sortzean", + "Fill screen": "Bete pantaila", + "Forget room": "Ahaztu gela", + "Forgot your password?": "Pasahitza ahaztu duzu?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s mailatik %(toPowerLevel)s mailara", + "Guest access is disabled on this Home Server.": "Bisitarien sarbidea desgaituta dago hasiera zerbitzari honetan.", + "Hide Text Formatting Toolbar": "Ezkutatu testu-formatuaren tresna-barra", + "Incoming call from %(name)s": "%(name)s erabiltzailearen deia jasotzen", + "Incoming video call from %(name)s": "%(name)s erabiltzailearen bideo deia jasotzen", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s erabiltzaileak %(displayName)s erabiltzailearen gonbidapena onartu du.", + "Bulk Options": "Aukera masiboak", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Ezin da hasiera zerbitzarira konektatu, egiaztatu zure konexioa, ziurtatu zure hasiera zerbitzariaren SSL ziurtagiria fidagarritzat jotzen duela zure gailuak, eta nabigatzailearen pluginen batek ez dituela eskaerak blokeatzen.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Ezin zara hasiera zerbitzarira HTTP bidez konektatu zure nabigatzailearen barran dagoen URLa HTTS bada. Erabili HTTPS edo gaitu script ez seguruak.", + "%(senderName)s changed their profile picture.": "%(senderName)s erabiltzaileak bere profileko argazkia aldatu du.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s erabiltzaileak botere mailaz aldatu du %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s erabiltzaileak gelaren izena aldatu du, orain %(roomName)s da.", + "Drop here to tag %(section)s": "Jaregin hona %(section)s atalari etiketa jartzeko", + "Incoming voice call from %(name)s": "%(name)s erabiltzailearen deia jasotzen", + "Incorrect username and/or password.": "Erabiltzaile-izen edo pasahitz okerra.", + "Incorrect verification code": "Egiaztaketa kode okerra", + "Invalid address format": "Helbide formatu baliogabea", + "Invalid Email Address": "E-mail helbide baliogabea", + "Invalid file%(extra)s": "Fitxategi %(extra)s baliogabea", + "%(senderName)s invited %(targetName)s.": "%(senderName)s erabiltzaileak %(targetName)s gonbidatu du.", + "Invite new room members": "Gonbidatu kide berriak gelara", + "Invited": "Gonbidatuta", + "Invites user with given id to current room": "Emandako ID-a duen erabiltzailea gonbidatzen du gelara", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' ez da baliozko formatua helbide batentzat", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ez da baliozko formatua ezizen batentzat", + "%(displayName)s is typing": "%(displayName)s idazten ari da", + "Sign in with": "Hasi saioa hau erabilita:", + "Join as voice or video.": "Elkartu ahotsa edo bideoa erabiliz.", + "%(targetName)s joined the room.": "%(targetName)s erabiltzailea gelara elkartu da.", + "Joins room with given alias": "Gelara emandako ezizenarekin elkartu da", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s erabiltzaileak %(targetName)s kanporatu du.", + "Kick": "Kanporatu", + "Kicks user with given id": "Kanporatu emandako ID-a duen erabiltzailea", + "%(targetName)s left the room.": "%(targetName)s erabiltzailea gelatik atera da.", + "Level:": "Maila:", + "Local addresses for this room:": "Gela honen tokiko helbideak:", + "Logged in as:": "Saioa hasteko erabiltzailea:", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, gonbidapena egiten zaienetik.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat, elkartzen direnetik.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du gelako kide guztientzat.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du edonorentzat.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s erabiltzaileak etorkizuneko gelaren historiala ikusgai jarri du ezezagunentzat (%(visibility)s).", + "Manage Integrations": "Kudeatu interakzioak", + "Markdown is disabled": "Markdown desgaituta dago", + "Markdown is enabled": "Markdown gaituta dago", + "matrix-react-sdk version:": "matrix-react-sdk bertsioa:", + "Message not sent due to unknown devices being present": "Ez da mezua bidali gailu ezezagunak daudelako", + "Missing room_id in request": "Gelaren ID-a falta da eskaeran", + "Missing user_id in request": "Erabiltzailearen ID-a falta da eskaeran", + "Mobile phone number": "Mugikor zenbakia", + "Never send encrypted messages to unverified devices in this room from this device": "Ez bidali inoiz zifratutako mezuak egiaztatu gabeko gailuetara gela honetan gailu honetatik", + "New address (e.g. #foo:%(localDomain)s)": "Helbide berria (adib. #foo:%(localDomain)s)", + "New passwords don't match": "Pasahitz berriak ez datoz bat", + "New passwords must match each other.": "Pasahitz berriak berdinak izan behar dira.", + "not set": "ezarri gabe", + "not specified": "zehaztu gabe", + "(not supported by this browser)": "(nabigatzaile honek ez du euskarririk)", + "": "", + "NOT verified": "EZ egiaztatuta", + "No devices with registered encryption keys": "Erregistratutako zifratze gakoak dituen gailurik ez", + "No display name": "Pantaila izenik ez", + "No more results": "Emaitza gehiagorik ez", + "No users have specific privileges in this room": "Ez dago gela honetan baimen zehatzik duen erabiltzailerik", + "olm version:": "olm bertsioa:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Behin gela batean zifratzea gaituta ezin da gero desgaitu (oraingoz)", + "Server may be unavailable, overloaded, or you hit a bug.": "Agian zerbitzaria ez dago eskuragarri, edo gainezka dago, edo akats bat aurkitu duzu.", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Oraingoz pasahitza aldatzeak gailu guztietako muturretik muturrerako zifratze-gakoak berrezarriko ditu, eta ezin izango dituzu zifratutako txatetako historialak irakurri ez badituzu aurretik zure gelako gakoak esportatzen eta aldaketa eta gero berriro inportatzen. Etorkizunean hau hobetuko da.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Segurtasunagatik, saioa amaitzeak nabigatzaile honetako muturretik muturrerako zifratze gako guztiak ezabatuko ditu. Zure elkarrizketen historiala deszifratzeko gai izan nahi baduzu etorkizuneko Riot saioetan, esportatu zure gelako gakoen babes-kopia bat.", + "Passwords can't be empty": "Pasahitzak ezin dira hutsik egon", + "Permissions": "Baimenak", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s erabiltzaileak %(callType)s dei bat hasi du.", + "Power level must be positive integer.": "Botere maila osoko zenbaki positibo bat izan behar da.", + "Press to start a chat with someone": "Sakatu norbaitekin txat bat hasteko", + "Privacy warning": "Pribatutasun abisua", + "Private Chat": "Txat pribatua", + "Privileged Users": "Baimenak dituzten erabiltzaileak", + "Profile": "Profila", + "Public Chat": "Txat publikoa", + "Reason": "Arrazoia", + "Reason: %(reasonText)s": "Arrazoia: %(reasonText)s", + "Revoke Moderator": "Kendu moderatzaile baimena", + "Refer a friend to Riot:": "Aipatu Riot lagun bati:", + "%(targetName)s rejected the invitation.": "%(targetName)s erabiltzaileak gonbidapena baztertu du.", + "Reject invitation": "Baztertu gonbidapena", + "Reject all %(invitedRooms)s invites": "Baztertu %(invitedRooms)s gelarako gonbidapen guztiak", + "Rejoin": "Berriro elkartu", + "Remote addresses for this room:": "Gela honen urruneko helbideak:", + "Remove Contact Information?": "Kendu kontaktuaren informazioa?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s erabiltzaileak bere pantaila-izena kendu du (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s erabiltzaileak bere profileko argazkia kendu du.", + "Remove %(threePid)s?": "Kendu %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s erabiltzaileak VoIP konferentzia bat eskatu du.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Oraingoz pasahitza aldatzeak gailu guztietako muturretik muturrerako zifratze-gakoak berrezarriko ditu, eta ezin izango dituzu zifratutako txatetako historialak irakurri ez badituzu aurretik zure gelako gakoak esportatzen eta aldaketa eta gero berriro inportatzen.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Une honetan egiaztatu gabeko gailuak blokeatzen ari zara, gailu hauetara mezuak bidali ahal izateko egiaztatu behar dituzu.", + "Results from DuckDuckGo": "DuckDuckGo bilatzaileko emaitzak", + "Riot does not have permission to send you notifications - please check your browser settings": "Riotek ez du zuri jakinarazpenak bidaltzeko baimenik, egiaztatu nabigatzailearen ezarpenak", + "Riot was not given permission to send notifications - please try again": "Ez zaio jakinarazpenak bidaltzeko baimena eman Rioti, saiatu berriro", + "riot-web version:": "riot-web bertsioa:", + "Room %(roomId)s not visible": "%(roomId)s gela ez dago ikusgai", + "Room Colour": "Gelaren kolorea", + "Room name (optional)": "Gelaren izena (aukerakoa)", + "%(roomName)s does not exist.": "Ez dago %(roomName)s izeneko gela.", + "%(roomName)s is not accessible at this time.": "%(roomName)s ez dago eskuragarri orain.", + "Scroll to bottom of page": "Korritu orria behera arte", + "Scroll to unread messages": "Korritu irakurri gabeko mezuetara", + "Search failed": "Bilaketak huts egin du", + "Searches DuckDuckGo for results": "DuckDuckGo-n bilatzen ditu emaitzak", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s erabiltzaileak ikusia %(dateTime)s(e)an", + "Send anyway": "Bidali hala ere", + "Send Invites": "Bidali gonbidapenak", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s erabiltzaileak irudi bat bidali du.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s erabiltzaileak gelara elkartzeko gonbidapen bat bidali dio %(targetDisplayName)s erbiltzaileari.", + "Server error": "Zerbitzari-errorea", + "Server may be unavailable or overloaded": "Zerbitzaria eskuraezin edo gainezka egon daiteke", + "Server may be unavailable, overloaded, or search timed out :(": "Zerbitzaria eskuraezin edo gainezka egon daiteke, edo bilaketaren denbora muga gainditu da :(", + "Server may be unavailable, overloaded, or the file too big": "Zerbitzaria eskuraezin edo gainezka egon daiteke edo fitxategia handiegia da", + "Server unavailable, overloaded, or something else went wrong.": "Zerbitzaria eskuraezin edo gainezka egon daiteke edo zerbaitek huts egin du.", + "%(senderName)s set a profile picture.": "%(senderName)s erabiltzaileak profileko argazkia ezarri du.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s erabiltzaileak %(displayName)s ezarri du pantaila izen gisa.", + "Show panel": "Erakutsi panela", + "Show Text Formatting Toolbar": "Erakutsi testu-formatuaren tresna-barra", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Erakutsi denbora-zigiluak 12 ordutako formatuan (adib. 2:30pm)", + "Signed Out": "Saioa amaituta", + "Sign in": "Hasi saioa", + "%(count)s of your messages have not been sent.": { + "other": "Zure mezu batzuk ez dira bidali.", + "one": "Zure mezua ez da bidali." + }, + "Tagged as: ": "Jarritako etiketa: ", + "The default role for new room members is": "Gelako kide berrien lehenetsitako rola:", + "The main address for this room is": "Gela honen helbide nagusia:", + "The phone number entered looks invalid": "Sartutako telefono zenbakia ez dirudi baliozkoa", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Eman duzun sinadura-gakoa %(userId)s erabiltzailearen %(deviceId)s gailutik jasotako bera da. Gailua egiaztatuta gisa markatu da.", + "This email address was not found": "Ez da e-mail helbide hau aurkitu", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fitxategiak hasiera zerbitzarian igoerei ezarritako tamaina-muga gainditzen du", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' igotzean huts egin du", + "The remote side failed to pick up": "Urruneko aldeak hartzean huts egin du", + "This Home Server does not support login using email address.": "Hasiera zerbitzari honek ez du e-mail helbidearekin saioa hastea onartzen.", + "This invitation was sent to an email address which is not associated with this account:": "Gonbidapen hau kontu honekin lotuta ez dagoen e-mail helbide batera bidali da:", + "This room is not recognised.": "Ez da gela hau ezagutzen.", + "These are experimental features that may break in unexpected ways": "Hauek ezaugarri esperimentalak dira eta agian ez dabiltza behar bezala", + "The visibility of existing history will be unchanged": "Aurreko historialaren ikusgaitasuna ez da aldatuko", + "This doesn't appear to be a valid email address": "Honek ez du baliozko e-mail baten antzik", + "This is a preview of this room. Room interactions have been disabled": "Hau gelaren aurrebista bat da. Gelako elkarrekintzak desgaituta daude", + "This room": "Gela hau", + "This room is not accessible by remote Matrix servers": "Gela hau ez dago eskuragarri urruneko zerbitzarietan", + "This room's internal ID is": "Gela honen barne ID-a:", + "To link to a room it must have an address.": "Gelara estekatzeko honek helbide bat izan behar du.", + "To reset your password, enter the email address linked to your account": "Zure pasahitza berrezartzeko, sartu zure kontuarekin lotutako e-mail helbidea", + "To use it, just wait for autocomplete results to load and tab through them.": "Erabiltzeko, itxaron osatze automatikoaren emaitzak kargatu arte eta gero tabuladorearekin hautatu.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Gela honen denbora-lerroko puntu zehatz bat kargatzen saiatu zara, baina ez duzu mezu zehatz hori ikusteko baimenik.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Gela honen denbora-lerroko puntu zehatz bat kargatzen saiatu da, baina ezin izan da aurkitu.", + "Turn Markdown off": "Desaktibatu Markdown", + "Turn Markdown on": "Aktibatu Markdown", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s erabiltzaileak muturretik muturrerako (%(algorithm)s algoritmoa) zifratzea aktibatu du.", + "Unable to add email address": "Ezin izan da e-mail helbidea gehitu", + "Unable to remove contact information": "Ezin izan da kontaktuaren informazioa kendu", + "Unable to verify email address.": "Ezin izan da e-mail helbidea egiaztatu.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s erabiltzaileak debekua kendu dio %(targetName)s erabiltzaileari.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Ezin izan da ziurtatu gonbidapen hau zure kontuarekin lotutako helbide batera bidali zela.", + "Unable to capture screen": "Ezin izan da pantaila-argazkia atera", + "Unable to enable Notifications": "Ezin izan dira jakinarazpenak gaitu", + "Unable to load device list": "Ezin izan da gailuen zerrenda kargatu", + "Undecryptable": "Deszifraezina", + "Unencrypted room": "Zifratu gabeko gela", + "unencrypted": "zifratu gabe", + "Unencrypted message": "Zifratu gabeko mezua", + "unknown caller": "deitzaile ezezaguna", + "Unknown room %(roomId)s": "%(roomId)s gela ezezaguna da", + "Unknown (user, device) pair:": "Erabiltzaile eta gailu bikote ezezaguna:", + "Unmute": "Audioa aktibatu", + "Unnamed Room": "Izen gabeko gela", + "Unrecognised command:": "Agindu ezezaguna:", + "Unrecognised room alias:": "Gelaren ezizen ezezaguna:", + "Unverified": "Egiaztatu gabea", + "Uploading %(filename)s and %(count)s others": { + "zero": "%(filename)s igotzen", + "one": "%(filename)s eta beste %(count)s igotzen", + "other": "%(filename)s eta beste %(count)s igotzen" + }, + "Upload avatar": "Igo abatarra", + "Upload Failed": "Igoerak huts egin du", + "Upload Files": "Igo fitxategiak", + "Upload file": "Igo fitxategia", + "Upload new:": "Igo berria:", + "Usage": "Erabilera", + "Use compact timeline layout": "Erabili denbora-lerro diseinu konpaktua", + "Use with caution": "Erabili kontuz", + "User ID": "Erabiltzaile ID-a", + "User Interface": "Erabiltzaile interfazea", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Erabiltzaile-izen baliogabea: %(errMessage)s", + "Users": "Erabiltzaileak", + "verified": "egiaztatuta", + "Verified key": "Egiaztatutako gakoa", + "Video call": "Bideo-deia", + "Voice call": "Ahots-deia", + "VoIP conference finished.": "VoIP konferentzia amaituta.", + "VoIP conference started.": "VoIP konferentzia hasita.", + "VoIP is unsupported": "VoIP ez dago onartuta", + "(could not connect media)": "(ezin izan da media konektatu)", + "(no answer)": "(erantzunik ez)", + "(unknown failure: %(reason)s)": "(hutsegite ezezaguna: %(reason)s)", + "(warning: cannot be disabled again!)": "(abisua: ezin da gero desgaitu!)", + "WARNING: Device already verified, but keys do NOT MATCH!": "ABISUA: Gailua egiaztatuta dago, baina gakoak EZ DATOZ BAT!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ABISUA: GAKOEN EGIAZTAKETAK HUTS EGIN DU! %(userId)s erabiltzailearen %(deviceId)s gailuaren sinadura-gakoa \"%(fprint)s\" da, eta ez dator bat emandako \"%(fingerprint)s\" gakoarekin. Honek inor komunikazioa antzematen ari dela esan nahi lezake!", + "Who would you like to add to this room?": "Nor gehitu nahi duzu gela honetara?", + "Who would you like to communicate with?": "Norekin komunikatu nahi duzu?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s erabiltzaileak atzera bota du %(targetName)s erabiltzailearen gonbidapena.", + "Would you like to accept or decline this invitation?": "Gonbidapen hau onartu ala ukatu nahi duzu?", + "You already have existing direct chats with this user:": "Baduzu jada txat zuzen bat erabiltzaile honekin:", + "You are already in a call.": "Bazaude dei batean.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Ez zaude inolako gelatan oraindik! Sakatu gela bat sortzeko edo direktorioa arakatzeko", + "You are trying to access %(roomName)s.": "%(roomName)s atzitzen saiatzen ari zara.", + "You cannot place a call with yourself.": "Ezin diozu zure buruari deitu.", + "You cannot place VoIP calls in this browser.": "Ezin dituzu VoIP deiak egin nabigatzaile honekin.", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s erabiltzaileak %(roomName)s gelan debekatu zaitu.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s erabiltzaileak gela honetara gonbidatu zaitu", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s erabiltzaileak %(roomName)s gelatik kanporatu zaitu.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Saioa amaitu duzu eta ez dituzu jakinarazpenak jasoko. Jakinarazpenak jaso nahi badituzu hasi saioa berriro gailu bakoitzean", + "You have disabled URL previews by default.": "Lehenetsita URLak aurreikustea desgaitu duzu.", + "You have enabled URL previews by default.": "Lehenetsita URLak aurreikustea gaitu duzu.", + "You have no visible notifications": "Ez daukazu jakinarazpen ikusgairik", + "You may wish to login with a different account, or add this email to this account.": "Agian beste kontu batekin hasi nahi duzu saioa, edo e-mail hau kontu honetara gehitu.", + "You must register to use this functionality": "Funtzionaltasun hau erabiltzeko erregistratu", + "You need to be able to invite users to do that.": "Erabiltzaileak gonbidatzeko baimena behar duzu hori egiteko.", + "You need to be logged in.": "Saioa hasi duzu.", + "You need to enter a user name.": "Erabiltzaile-izen bat sartu behar duzu.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Zure e-mail helbidea ez dago antza hasiera zerbitzari honetako Matrix ID batekin lotuta.", + "Your password has been reset": "Zure pasahitza berrezarri da", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Zure pasahitza ongi aldatu da. Ez dituzu beste gailuetan jakinarazpenak jasoko hauetan saioa berriro hasi arte", + "You seem to be in a call, are you sure you want to quit?": "Badirudi dei batean zaudela, ziur irten nahi duzula?", + "You seem to be uploading files, are you sure you want to quit?": "Badirudi fitxategiak iotzen zaudela, ziur irten nahi duzula?", + "You should not yet trust it to secure data": "Oraindik ez zenuke datuak babesteko erabili behar", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Ezin izango duzu hau atzera bota erabiltzailea zure botere maila berera igotzen ari zarelako.", + "Your home server does not support device management.": "Zure hasiera zerbitzariak ez du onartzen gailuen kudeaketa.", + "Sun": "Ig", + "Mon": "Al", + "Tue": "Ar", + "Wed": "Az", + "Thu": "Og", + "Fri": "Or", + "Sat": "La", + "Jan": "Urt", + "Feb": "Ots", + "Mar": "Mar", + "Apr": "Api", + "May": "Mai", + "Jun": "Eka", + "Jul": "Uzt", + "Aug": "Abu", + "Sep": "Ira", + "Oct": "Urr", + "Nov": "Aza", + "Dec": "Abe", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)sk %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(fullYear)sko %(monthName)sk %(day)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Ezarri pantaila-izena:", + "Upload an avatar:": "Igo abatarra:", + "This server does not support authentication with a phone number.": "Zerbitzari honek ez du telefono zenbakia erabiliz autentifikatzea onartzen.", + "Missing password.": "Pasahitza falta da.", + "Passwords don't match.": "Pasahitzak ez datoz bat.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Pasahitz laburregia (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Honek ez du baliozko e-mail helbide baten antzik.", + "This doesn't look like a valid phone number.": "Honek ez du baliozko telefono zenbaki baten antzik.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Erabiltzaile-izenek letrak, zenbakiak, puntuak, gidoiak eta gidoi baxuak besterik ezin dituzte izan.", + "An unknown error occurred.": "Errore ezezaguna gertatu da.", + "I already have an account": "Badut kontu bat", + "An error occurred: %(error_string)s": "Errore bat gertatu da: %(error_string)s", + "Make Moderator": "Bihurtu moderatzaile", + "Make this room private": "Egin gela hau pribatu", + "Share message history with new users": "Partekatu mezuen historiala erabiltzaile berriekin", + "Encrypt room": "Zifratu gela", + "There are no visible files in this room": "Ez dago fitxategi ikusgairik gela honetan", + "Sent messages will be stored until your connection has returned.": "Bidalitako mezuak zure konexioa berreskuratu arte gordeko dira.", + "(~%(count)s results)": { + "one": "(~%(count)s emaitza)", + "other": "(~%(count)s emaitza)" + }, + "bold": "lodia", + "italic": "etzana", + "strike": "marratua", + "underline": "azpimarratua", + "code": "kodea", + "quote": "aipua", + "bullet": "buleta", + "numbullet": "numerazioa", + "Please select the destination room for this message": "Hautatu mezu hau bidaltzeko gela", + "New Password": "Pasahitz berria", + "Start automatically after system login": "Hasi automatikoki sisteman saioa hasi eta gero", + "Desktop specific": "Mahaigainean besterik ez", + "Analytics": "Estatistikak", + "Options": "Aukerak", + "Riot collects anonymous analytics to allow us to improve the application.": "Riotek estatistika anonimoak jasotzen ditu aplikazioa hobetzeko.", + "Passphrases must match": "Pasaesaldiak bat etorri behar dira", + "Passphrase must not be empty": "Pasaesaldia ezin da hutsik egon", + "File to import": "Inportatu beharreko fitxategia", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Prozesu honek zifratutako gelatan jaso dituzun mezuentzako gakoak tokiko fitxategi batera esportatzea ahalbidetzen dizu. Fitxategia beste Matrix bezero batean inportatu dezakezu, bezero hori ere mezuak deszifratzeko gai izan dadin.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Esportatutako fitxategiak berau irakurri dezakeen edonori zuk ikusi ditzakezun mezu zifratuak deszifratzea ahalbidetzen dio, beraz kontuz gorde beharko zenuke. Honetarako azpian pasaesaldi bat sartu beharko zenuke, eta hau esportatuko datuak zifratzeko erabiliko da. Datuak inportatzeko pasaesaldi hori beharko da.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Prozesu honek aurretik beste Matrix bezero batetik esportatu dituzun zifratze gakoak inportatzea ahalbidetzen dizu. Gero beste bezeroak deszifratu zitzakeen mezuak deszifratu ahal izango dituzu.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Esportatutako fitxategia pasaesaldi batez babestuko da. Pasaesaldia bertan idatzi behar duzu, fitxategia deszifratzeko.", + "You must join the room to see its files": "Gelara elkartu behar zara bertako fitxategiak ikusteko", + "Start new chat": "Hasi txat berria", + "Failed to invite": "Huts egin du ganbidapenak", + "Failed to invite user": "Huts egin du erabiltzailea gonbidatzean", + "Failed to invite the following users to the %(roomName)s room:": "Huts egin du honako erabiltzaile hauek %(roomName)s gelara gonbidatzean:", + "Confirm Removal": "Berretsi kentzea", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Ziur gertaera hau kendu (ezabatu) nahi duzula? Jakin gelaren izenaren edo mintzagaiaren aldaketa ezabatzen baduzu, aldaketa desegin daitekeela.", + "Unknown error": "Errore ezezaguna", + "Incorrect password": "Pasahitz okerra", + "To continue, please enter your password.": "Jarraitzeko sartu zure pasahitza.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Gailu hau fidagarria dela egiaztatzeko, kontaktatu bere jabea beste medio bat erabiliz (adib. aurrez aurre edo telefonoz deituz) eta galdetu beraien erabiltzaile-ezarpenetan bere gailurako ikusten duen gakoa hemen beheko bera den:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Bat badator sakatu egiaztatu botoia. Bat ez badator, beste inor gailu hau atzematen dago eta blokeatu beharko zenuke.", + "In future this verification process will be more sophisticated.": "Etorkizunean egiaztaketa metodo hau hobetuko da.", + "Unable to restore session": "Ezin izan da saioa berreskuratu", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Aurretik Riot bertsio berriago bat erabili baduzu, zure saioa bertsio honekin bateraezina izan daiteke. Itxi leiho hau eta itzuli bertsio berriagora.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Gailu bakoitzaren egiaztaketa prozesua jarraitzea aholkatzen dizugu, benetako jabeari dagozkiela baieztatzeko, baina mezua egiaztatu gabe birbidali dezakezu ere.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" gelan aurretik ikusi ez dituzun gailuak daude.", + "Unknown devices": "Gailu ezezagunak", + "Unknown Address": "Helbide ezezaguna", + "Verify...": "Egiaztatu...", + "ex. @bob:example.com": "adib. @urko:adibidea.eus", + "Add User": "Gehitu erabiltzailea", + "Sign in with CAS": "Hasi saioa CAS erabiliz", + "This allows you to use this app with an existing Matrix account on a different home server.": "Honek aplikazio hau badagoen Matrix kontu batekin beste hasiera zerbitzari batean erabiltzea ahalbidetzen dizu.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Identitate erabiltzaile pertsonalizatu bat ezarri dezakezu ere, baina honek maiz erabiltzaileekin e-mail helbidea erabiliz elkar aritzea eragozten du maiz.", + "Please check your email to continue registration.": "Egiaztatu zure e-maila erregistroarekin jarraitzeko.", + "Token incorrect": "Token okerra", + "Please enter the code it contains:": "Sartu dakarren kodea:", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ez baduzu e-mail helbide bat zehazten, ezin izango duzu zure pasahitza berrezarri. Ziur zaude?", + "You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s erabiliz erregistratzen ari zara", + "Default server": "Zerbitzari lehenetsia", + "Custom server": "Zerbitzari aukeratua", + "Home server URL": "Hasiera zerbitzariaren URLa", + "Identity server URL": "Identitate zerbitzariaren URLa", + "What does this mean?": "Zer esan nahi du honek?", + "Error decrypting audio": "Errorea audioa deszifratzean", + "Error decrypting image": "Errorea audioa deszifratzean", + "Error decrypting video": "Errorea bideoa deszifratzean", + "Add an Integration": "Gehitu integrazioa", + "Removed or unknown message type": "Kenduta edo mezu mota ezezaguna", + "URL Previews": "URL-en aurrebistak", + "Drop file here to upload": "Jaregin fitxategia hona igotzeko", + " (unsupported)": " (euskarririk gabe)", + "Ongoing conference call%(supportedText)s.": "%(supportedText)s konferentzia deia abian.", + "Updates": "Eguneraketak", + "Check for update": "Bilatu ekuneraketa", + "Start chatting": "Hasi txateatzen", + "Start Chatting": "Hasi txateatzen", + "Click on the button below to start chatting!": "Egin klik beheko botoian txateatzen hasteko!", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s erabiltzaileak gelaren abatarra aldatu du beste honetara: ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s erabiltzaileak gelaren abatarra ezabatu du.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s erabiltzaileak %(roomName)s gelaren abatarra aldatu du", + "Username available": "Erabiltzaile-izena eskuragarri dago", + "Username not available": "Erabiltzaile-izena ez dago eskuragarri", + "Something went wrong!": "Zerk edo zerk huts egin du!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Zerbitzari pertsonalizatuaren aukerak erabili ditzakezu beste Matrix zerbitzarietan saioa hasteko hasiera zerbitzari desberdin baten URLa zehaztuz.", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Kanpo webgune batetara eramango zaizu zure kontua %(integrationsUrl)s helbidearekin erabiltzeko egiaztatzeko. Jarraitu nahi duzu?", + "This will be your account name on the homeserver, or you can pick a different server.": "Hau izango da zure izena hasiera zerbitzarian, edo hautatu beste zerbitzari bat.", + "If you already have a Matrix account you can log in instead.": "Jada Matrix kontua baduzu saioa hasi dezakezu zuzenean.", + "Your browser does not support the required cryptography extensions": "Zure nabigatzaileak ez ditu onartzen beharrezkoak diren kriptografia gehigarriak", + "Not a valid Riot keyfile": "Ez da baliozko Riot gako-fitxategia", + "Authentication check failed: incorrect password?": "Autentifikazio errorea: pasahitz okerra?", + "Do you want to set an email address?": "E-mail helbidea ezarri nahi duzu?", + "This will allow you to reset your password and receive notifications.": "Honek zure pasahitza berrezarri eta jakinarazpenak jasotzea ahalbidetuko dizu.", + "To return to your account in future you need to set a password": "Etorkizunean kontura itzuli ahal izateko pasahitz bat ezarri behar duzu", + "Start verification": "Hasi egiaztaketa", + "Share without verifying": "Partekatu egiaztatu gabe", + "Ignore request": "Ezikusi eskaera", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "'%(displayName)s' gailua gehitu duzu eta zifratze-gakoak eskatzen ari da.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Zure egiaztatu gabeko '%(displayName)s' gailua zifratze-gakoak eskatzen ari da.", + "Encryption key request": "Zifratze-gakoa eskatuta", + "Deops user with given id": "Emandako ID-a duen erabiltzailea mailaz jaisten du", + "Disable Peer-to-Peer for 1:1 calls": "Desgaitu P2P biren arteko deietan", + "Add a widget": "Gehitu trepeta bat", + "Allow": "Baimendu", + "and %(count)s others...": { + "other": "eta beste %(count)s...", + "one": "eta beste bat..." + }, + "Cannot add any more widgets": "Ezin dira trepeta gehiago gehitu", + "Changes colour scheme of current room": "Gela honen kolore eskema aldatzen du", + "Delete widget": "Ezabatu trepeta", + "Define the power level of a user": "Zehaztu erabiltzaile baten botere maila", + "Do you want to load widget from URL:": "Trepeta bat kargatu nahi duzu URL honetatik:", + "Edit": "Editatu", + "Enable automatic language detection for syntax highlighting": "Gaitu hizkuntza antzemate automatikoa sintaxia nabarmentzeko", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Ezkutatu elkartze/ateratze mezuak (gonbidapenak/kanporatzeak/debekuak ez dira aldatzen)", + "Integrations Error": "Integrazio errorea", + "Publish this room to the public in %(domain)s's room directory?": "Argitaratu gela hau publikora %(domain)s domeinuko gelen direktorioan?", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "OHARRA: Aplikazioek ez dute muturretik muturrerako zifratzea", + "Revoke widget access": "Indargabetu trepetaren sarbidea", + "Sets the room topic": "Gelaren mintzagaia ezartzen du", + "The maximum permitted number of widgets have already been added to this room.": "Gehienez onartzen diren trepeta kopurua gehitu da gela honetara.", + "To get started, please pick a username!": "Hasteko, hautatu erabiltzaile-izen bat!", + "Unable to create widget.": "Ezin izan da trepeta sortu.", + "Unbans user with given id": "ID zehatz bat duen erabiltzaileari debekua kentzen dio", + "You are not in this room.": "Ez zaude gela honetan.", + "You do not have permission to do that in this room.": "Ez duzu gela honetan hori egiteko baimenik.", + "Autocomplete Delay (ms):": "Osatze automatikoaren atzerapena (ms):", + "Loading device info...": "Gailuaren informazioa kargatzen...", + "Example": "Adibidea", + "Create": "Sortu", + "Featured Rooms:": "Nabarmendutako gelak:", + "Featured Users:": "Nabarmendutako erabiltzaileak:", + "Automatically replace plain text Emoji": "Automatikoki ordezkatu Emoji testu soila", + "Failed to upload image": "Irudia igotzeak huts egin du", + "Hide avatars in user and room mentions": "Ezkutatu abatarrak erabiltzaile eta gelen aipamenetan", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s trepeta gehitu du %(senderName)s erabiltzaileak", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s trepeta kendu du %(senderName)s erabiltzaileak", + "Verifies a user, device, and pubkey tuple": "Erabiltzaile, gailu eta gako publiko multzoa egiaztatzen du", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot egiaztaketa orain ez dago eskuragarri mahaigainean - erabili web nabigatzailea", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s trepeta aldatu du %(senderName)s erabiltzaileak", + "Copied!": "Kopiatuta!", + "Failed to copy": "Kopiak huts egin du", + "Cancel": "Utzi", + "Advanced options": "Aukera aurreratuak", + "Block users on other matrix homeservers from joining this room": "Eragotzi beste matrix hasiera-zerbitzarietako erabiltzaileak gela honetara elkartzea", + "This setting cannot be changed later!": "Ezarpen hau ezin da gero aldatu!", + "Ignored Users": "Ezikusitako erabiltzaileak", + "Ignore": "Ezikusi", + "Unignore": "Ez ezikusi", + "User Options": "Erabiltzaile-aukerak", + "You are now ignoring %(userId)s": "%(userId)s ezikusten ari zara", + "You are no longer ignoring %(userId)s": "Ez zaude jada %(userId)s ezikusten", + "Unignored user": "Ez ezikusitako erabiltzailea", + "Ignored user": "Ezikusitako erabiltzailea", + "Stops ignoring a user, showing their messages going forward": "Utzi erabiltzailea ezikusteari, erakutsi bere mezuak", + "Ignores a user, hiding their messages from you": "Ezikusi erabiltzailea, ezkutatu bere mezuak zuretzat", + "Disable Emoji suggestions while typing": "Desgaitu Emoji proposamenak idaztean", + "Banned by %(displayName)s": "%(displayName)s erabiltzaileak debekatuta", + "Message removed by %(userId)s": "%(userId)s erabiltzaileak kendu du mezua", + "To send messages, you must be a": "Mezuak bidaltzeko:", + "To invite users into the room, you must be a": "Erabiltzaileak gonbidatzeko:", + "To configure the room, you must be a": "Gela konfiguratzeko:", + "To kick users, you must be a": "Erabiltzaileak kanporatzeko:", + "To ban users, you must be a": "Erabiltzaileak debekatzeko:", + "To remove other users' messages, you must be a": "Beste erabiltzaileen mezuak kentzeko:", + "Unpin Message": "Desfinkatu mezua", + "Add rooms to this community": "Gehitu gelak komunitate honetara", + "Call Failed": "Deiak huts egin du", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Gailu ezezagunak daude gela honetan: hauek egiaztatu gabe aurrera jarraituz gero, posiblea litzateke inork zure deia entzutea.", + "Review Devices": "Aztertu gailuak", + "Call Anyway": "Deitu hala ere", + "Answer Anyway": "Erantzun hala ere", + "Call": "Deitu", + "Answer": "Erantzun", + "Who would you like to add to this community?": "Nor gehitu nahi duzu komunitate honetara?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Abisua: komunitate batera gehitzen duzun edozein pertsona publikoki ikusgai egongo da komunitatearen ID-a dakien edonorentzat", + "Invite new community members": "Gonbidatu kide berriak komunitatera", + "Name or matrix ID": "Izena edo matrix ID-a", + "Invite to Community": "Gonbidatu komunitatera", + "Which rooms would you like to add to this community?": "Zeintzuk gela gehitu nahi dituzu komunitate honetara?", + "Show these rooms to non-members on the community page and room list?": "Erakutsi gela hauek kide ez direnei komunitatearen orrian eta gelen zerrendan?", + "Add rooms to the community": "Gehitu gelak komunitatera", + "Room name or alias": "Gelaren izena edo ezizena", + "Add to community": "Gehitu komunitatera", + "Failed to invite the following users to %(groupId)s:": "Huts egin du honako erabiltzaile hauek %(groupId)s komunitatera gonbidatzean:", + "Failed to invite users to community": "Huts egin du erabiltzaileak komunitatera gonbidatzean", + "Failed to invite users to %(groupId)s": "Huts egin du erabiltzaileak %(groupId)s komunitatera gonbidatzean", + "Failed to add the following rooms to %(groupId)s:": "Huts egin du honako gela hauek %(groupId)s komunitatera gehitzean:", + "Restricted": "Mugatua", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s erabiltzaileak gelan finkatutako mezuak aldatu ditu.", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s eta beste %(count)s idazten ari dira", + "one": "%(names)s eta beste bat idazten ari dira" + }, + "Send": "Bidali", + "Message Pinning": "Mezuak finkatzea", + "Hide avatar changes": "Ezkutatu abatar aldaketak", + "Hide display name changes": "Ezkutatu pantaila izenen aldaketak", + "Disable big emoji in chat": "Desgaitu emoji handiak txatean", + "Mirror local video feed": "Bikoiztu tokiko bideo jarioa", + "Enable inline URL previews by default": "Gailu URL-en aurrebista lehenetsita", + "Enable URL previews for this room (only affects you)": "Gaitu URLen aurrebista gela honetan (zuretzat bakarrik aldatuko duzu)", + "Enable URL previews by default for participants in this room": "Gaitu URLen aurrebista lehenetsita gela honetako partaideentzat", + "Delete %(count)s devices": { + "other": "Ezabatu %(count)s gailu", + "one": "Ezabatu gailua" + }, + "Select devices": "Hautatu gailuak", + "%(senderName)s sent an image": "%(senderName)s erabiltzaileak irudi bat bidali du", + "%(senderName)s sent a video": "%(senderName)s erabiltzaileak bideo bat bidali du", + "%(senderName)s uploaded a file": "%(senderName)s erabiltzaileak fitxategi bat bidali du", + "Disinvite this user?": "Kendu gonbidapena erabiltzaile honi?", + "Kick this user?": "Kanporatu erabiltzaile hau?", + "Unban this user?": "Kendu debekua erabiltzaile honi?", + "Ban this user?": "Debekatu erabiltzaile hau?", + "Mention": "Aipatu", + "Invite": "Gonbidatu", + "Jump to message": "Saltatu mezura", + "No pinned messages.": "Finkatutako mezurik ez.", + "Loading...": "Kargatzen...", + "Pinned Messages": "Finkatutako mezuak", + "%(duration)ss": "%(duration)s s", + "%(duration)sm": "%(duration)s m", + "%(duration)sh": "%(duration)s h", + "%(duration)sd": "%(duration)s e", + "Online for %(duration)s": "Konektatua %(duration)s", + "Offline for %(duration)s": "Deskonektatuta %(duration)s", + "Unknown for %(duration)s": "Ezezaguna %(duration)s", + "Unknown": "Ezezaguna", + "Unnamed room": "Izen gabeko gela", + "World readable": "Munduak irakurgarria", + "Guests can join": "Bisitariak elkartu daitezke", + "No rooms to show": "Ez dago gelarik erakusteko", + "Remove avatar": "Kendu abatarra", + "Drop here to favourite": "Bota hona gogoko egiteko", + "Drop here to tag direct chat": "Bota hona txat zuzena etiketatzeko", + "Drop here to restore": "Boto hona berrezartzeko", + "Community Invites": "Komunitate gonbidapenak", + "You have been kicked from this room by %(userName)s.": "Gela honetatik kanporatu zaitu %(userName)s erabiltzaileak.", + "You have been banned from this room by %(userName)s.": "Gela honetatik debekatu zaitu %(userName)s erabiltzaileak.", + "You are trying to access a room.": "Gela bat atzitzen saiatzen ari zara.", + "To change the room's avatar, you must be a": "Gelaren abatara aldatzeko:", + "To change the room's name, you must be a": "Gelaren izena aldatzeko:", + "To change the room's main address, you must be a": "Gelaren helbide nagusia aldatzeko:", + "To change the room's history visibility, you must be a": "Gelaren ikusgaitasuna aldatzeko:", + "To change the permissions in the room, you must be a": "Gelaren baimenak aldatzeko:", + "To change the topic, you must be a": "Mintzagaia aldatzeko:", + "To modify widgets in the room, you must be a": "Gelaren trepetak aldatzeko:", + "Members only (since the point in time of selecting this option)": "Kideek besterik ez (aukera hau hautatzen den unetik)", + "Members only (since they were invited)": "Kideek besterik ez (gonbidatu zaienetik)", + "Members only (since they joined)": "Kideek besterik ez (elkartu zirenetik)", + "To send events of type , you must be a": " motako gertaerak bidaltzeko:", + "Addresses": "Helbideak", + "Invalid community ID": "Komunitate ID baliogabea", + "'%(groupId)s' is not a valid community ID": "%(groupId)s ez da baliozko komunitate ID bat", + "Community Name": "Komunitatearen izena", + "Community ID": "Komunitate IDa", + "example": "adibidea", + "Add rooms to the community summary": "Gehitu gelak komunitatearen laburpenera", + "Which rooms would you like to add to this summary?": "Zeintzuk gela gehitu nahi dituzu laburpenera?", + "Add to summary": "Gehitu laburpenera", + "Add a Room": "Gehitu gela bat", + "The room '%(roomName)s' could not be removed from the summary.": "%(roomName)s gela ezin izan da laburpenetik kendu.", + "Add users to the community summary": "Gehitu erabiltzaileak komunitatearen laburpeneara", + "Who would you like to add to this summary?": "Nor gehitu nahi duzu laburpen honetara?", + "Add a User": "Gehitu erabiltzaile bat", + "Failed to update community": "Komunitatea eguneratzean huts egin du", + "Unable to accept invite": "Ezin izan da gonbidapena onartu", + "Unable to reject invite": "Ezin izan da gonbidapena ukatu", + "Leave Community": "Atera komunitatetik", + "Leave %(groupName)s?": "Atera %(groupName)s komunitatetik?", + "Leave": "Atera", + "Community Settings": "Komunitatearen ezarpenak", + "You are an administrator of this community": "Komunitate honen administratzailea zara", + "You are a member of this community": "Komunitate honetako kidea zara", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Zure komunitateak ez du deskripzio luzerik, komunitateko kideei erakusteko HTML orri bat,
Egin klik hemen ezarpenak ireki eta bat sortzeko!", + "Long Description (HTML)": "Deskripzio luzea (HTML)", + "Description": "Deskripzioa", + "Community %(groupId)s not found": "Ez da %(groupId)s komunitatea aurkitu", + "Old cryptography data detected": "Kriptografia datu zaharrak atzeman dira", + "Your Communities": "Zure komunitateak", + "Create a new community": "Sortu komunitate berria", + "Warning": "Abisua", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Kontuan izan %(hs)s zerbitzarira elkartu zarela, ez matrix.org.", + "Sign in to get started": "Hasi saioa hasteko", + "Notify the whole room": "Jakinarazi gela osoari", + "Room Notification": "Gela jakinarazpena", + "New community ID (e.g. +foo:%(localDomain)s)": "Komunitatearen ID berria (adib +izena:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "URLen aurrebistak gaituta daude gela honetako partaideentzat.", + "URL previews are disabled by default for participants in this room.": "URLen aurrebistak desgaituta daude gela honetako partaideentzat.", + "Message removed": "Mezua kendu da", + "An email has been sent to %(emailAddress)s": "e-maila bidali da hona: %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "Testu mezu bat bidali da hona: %(msisdn)s", + "%(serverName)s Matrix ID": "%(serverName)s Matrix IDa", + "Remove from community": "Kendu komunitatetik", + "Disinvite this user from community?": "Desgonbidatu erabiltzailea komunitatetik?", + "Remove this user from community?": "Kendu erabiltzailea komunitatetik?", + "Failed to withdraw invitation": "Huts egin du gonbidapena indargabetzean", + "Failed to remove user from community": "Huts egin du erabiltzailea komunitatetik kentzean", + "Filter community members": "Iragazi komunitateko kideak", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Ziur '%(roomName)s' kendu nahi duzula %(groupId)s komunitatetik?", + "Removing a room from the community will also remove it from the community page.": "Gela bat komunitate batetik kentzean komunitatearen orritik kenduko da ere.", + "Failed to remove room from community": "Huts egin du gela komunitatetik kentzean", + "Failed to remove '%(roomName)s' from %(groupId)s": "Huts egin du '%(roomName)s' %(groupId)s komunitatetik kentzean", + "Jump to read receipt": "Saltatu irakurragirira", + "Username on %(hs)s": "%(hs)s(e)ko erabiltzaile izena", + "was banned %(count)s times": { + "one": "debekatua izan da", + "other": "%(count)s aldiz debekatuak izan dira" + }, + "were invited %(count)s times": { + "other": "%(count)s aldiz gonbidatuak izan dira", + "one": "gonbidatuak izan dira" + }, + "was invited %(count)s times": { + "other": "%(count)s aldiz gonbidatua izan da", + "one": "gonbidatua izan da" + }, + "were banned %(count)s times": { + "other": "%(count)s aldiz debekatuak izan dira", + "one": "debekatuak izan dira" + }, + "were unbanned %(count)s times": { + "other": "%(count)s aldiz kendu zaie debekua", + "one": "debekua kendu zaie" + }, + "was unbanned %(count)s times": { + "other": "%(count)s aldiz kendu zaio debekua", + "one": "debekua kendu zaio" + }, + "were kicked %(count)s times": { + "other": "%(count)s aldiz kanporatu zaie", + "one": "(r) kanporatu zaie" + }, + "was kicked %(count)s times": { + "other": "%(count)s aldiz kanporatu zaio", + "one": "kanporatu zaio" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s erabiltzaileek bere izena aldatu dute %(count)s aldiz", + "one": "%(severalUsers)s erabiltzaileek bere izena aldatu dute" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s erabiltzaileak bere izena aldatu du %(count)s aldiz", + "one": "%(oneUser)s erabiltzaileak bere izena aldatu du" + }, + "collapse": "tolestu", + "expand": "hedatu", + "And %(count)s more...": { + "other": "Eta %(count)s gehiago..." + }, + "Matrix ID": "Matrix IDa", + "Matrix Room ID": "Matrix gela IDa", + "email address": "e-mail helbidea", + "You have entered an invalid address.": "E-mail helbide baliogabea sartu duzu.", + "Something went wrong whilst creating your community": "Zerbait ez da behar bezala joan zure komunitatea sortzean", + "Create Community": "Sortu komunitatea", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

Zure komunitate orriaren HTMLa

\n

\n Erabili deskripzio luzea kide berriei komunitatea aurkezteko edo esteka garrantzitsuetarako\n

\n

\n 'img' etiketak ere erabili ditzakezu\n

\n", + "Failed to add the following rooms to the summary of %(groupId)s:": "Huts egin du honako gela hauek %(groupId)s komunitatearen laburpenera gehitzean:", + "Failed to remove the room from the summary of %(groupId)s": "Huts egin du gela %(groupId)s komunitatearen laburpenetik kentzean", + "Failed to add the following users to the summary of %(groupId)s:": "Huts egin du honako erabiltzaile hauek %(groupId)s komunitatearen laburpenera gehitzean:", + "Failed to remove a user from the summary of %(groupId)s": "Huts egin du erabiltzaile bat %(groupId)s komunitatearen laburpenetik kentzean", + "The user '%(displayName)s' could not be removed from the summary.": "'%(displayName)s' erabiltzailea ezin izan da laburpenetik kendu.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Gela hauek komunitateko kideei erakusten zaie komunitatearen orrian. komunitateko kideak geletara sartu daitezke hauetan klik eginez.", + "%(inviter)s has invited you to join this community": "%(inviter)s erabiltzaileak komunitate honetara elkartzera gonbidatu zaitu", + "This Home server does not support communities": "Hasiera zerbitzari honek ez ditu komunitateak onartzen", + "Failed to load %(groupId)s": "Huts egin du %(groupId)s kargatzean", + "Communities": "Komunitateak", + "Error whilst fetching joined communities": "Errorea elkartutako komunitateak eskuratzean", + "Idle for %(duration)s": "Inaktibo %(duration)s", + "Drop here to demote": "Bota hona beheratzeko", + "Flair": "Ikurra", + "Showing flair for these communities:": "Komunitate hauetako ikurrak erakusten:", + "This room is not showing flair for any communities": "Gela honek ez du komunitate ikurrik erakusten", + "Flair will appear if enabled in room settings": "Ikurra agertuko da gelaren ezarpenetan gaituta badago", + "Flair will not appear": "Ikurra ez da agertuko", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Ezin izan da aldatu '%(roomName)s' gelaren ikusgaitasuna '%(groupId)s' komunitatean.", + "Visibility in Room List": "Ikusgaitasuna gelaren zerrendan", + "Visible to everyone": "Edonorentzat ikusgai", + "Only visible to community members": "Komunitateko kideentzat ikusgai", + "Filter community rooms": "Iragazi komunitateko gelak", + "Something went wrong when trying to get your communities.": "Zerbait ez da behar bezala joan zure komunitateak eskuratzea saiatzean.", + "Display your community flair in rooms configured to show it.": "Zure komunitate ikurrak bistaratu erakusteko konfiguratuta dauden gelatan.", + "You're not currently a member of any communities.": "Ez zara inolako komunitateko kide.", + "Delete Widget": "Ezabatu trepeta", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Trepeta ezabatzean gelako kide guztientzat kentzen da. Ziur trepeta ezabatu nahi duzula?", + "%(nameList)s %(transitionList)s": "%(nameList)s%(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s %(count)s aldiz elkartu dira", + "one": "%(severalUsers)s elkartu dira" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s%(count)s aldiz elkartu da", + "one": "%(oneUser)s elkartu da" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s%(count)s aldiz atera dira", + "one": "%(severalUsers)s atera da" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s%(count)s aldiz atera da", + "one": "%(oneUser)s atera da" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s elkartu eta atera dira %(count)s aldiz", + "one": "%(severalUsers)s elkartu eta atera da" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s elkartu eta atera da %(count)s aldiz", + "one": "%(oneUser)s elkartu eta atera da" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s atera eta berriz elkartu dira %(count)s aldiz", + "one": "%(severalUsers)s atera eta berriz elkartu da" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s atera eta berriz elkartu da %(count)s aldiz", + "one": "%(oneUser)s atera eta berriz elkartu da" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s erabiltzaileek bere gonbidapenak ukatu dituzte %(count)s aldiz", + "one": "%(severalUsers)s erabiltzaileek bere gonbidapenak ukatu dituzte" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s erabiltzaileak bere gonbidapena ukatu du %(count)s aldiz", + "one": "%(oneUser)s erabiltzaileak bere gonbidapena ukatu du" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s erabiltzaileei gonbidapena indargabetu zaie %(count)s aldiz", + "one": "%(severalUsers)s erabiltzaileei gonbidapena indargabetu zaie" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s erabiltzaileari gonbidapena indargabetu zaio %(count)s aldiz", + "one": "%(oneUser)s erabiltzaileari gonbidapena indargabetu zaio" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s erabiltzaileek bere abatarra aldatu dute %(count)s aldiz", + "one": "%(severalUsers)s erabiltzaileek bere abatarra aldatu dute" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s erabiltzaileak bere abatarra aldatu du %(count)s aldiz", + "one": "%(oneUser)s erabiltzaileak bere abatarra aldatu du" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s eta beste %(count)s", + "one": "%(items)s eta beste bat" + }, + "Try using one of the following valid address types: %(validTypesList)s.": "Saiatu baliozko helbide mota hauetako bat erabiltzen: %(validTypesList)s.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Komunitate IDak a-z, 0-9, edo '=_-./' karaktereak besterik ez ditu onartzen", + "Custom of %(powerLevel)s": "%(powerLevel)s pertsonalizatua", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Riot bertsio zahar batek datuak antzeman dira. Honek bertsio zaharrean muturretik muturrerako zifratzea ez funtzionatzea eragingo du. Azkenaldian bertsio zaharrean bidali edo jasotako zifratutako mezuak agian ezin izango dira deszifratu bertsio honetan. Honek ere Bertsio honekin egindako mezu trukeak huts egitea ekar dezake. Arazoak badituzu, amaitu saioa eta hasi berriro saioa. Mezuen historiala gordetzeko, esportatu eta berriro inportatu zure gakoak.", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Sortu komunitate bat erabiltzaileak eta gelak biltzeko! Sortu zure hasiera orria eta markatu zure espazioa Matrix unibertsoan.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Ez dago beste inor hemen! Beste batzuk gonbidatu nahi dituzu edo gela hutsik dagoela abisatzeari utzi?", + "Light theme": "Itxura argia", + "Dark theme": "Itxura iluna", + "Status.im theme": "Status.im itxura", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "%(emailAddress)s helbidera e-mail bat bidali da. Behin dakarren esteka jarraituta, egin klik behean.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Hasiera zerbitzari honek ez du bezero honek onartzen duen fluxurik eskaintzen.", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Ezin izango duzu hau aldatu zure burua mailaz jaisten ari zarelako, zu bazara gelan baimenak dituen azken erabiltzailea ezin izango dira baimenak berreskuratu.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Birbidali guztiak edo baztertu guztiak orain. Mezuak banaka birbidali edo baztertu ditzakezu ere.", + "one": "Birbidali mezua edo baztertu mezua orain." + }, + "Send an encrypted reply…": "Bidali zifratutako erantzun bat…", + "Send a reply (unencrypted)…": "Bidali erantzun bat (zifratu gabea)…", + "Send an encrypted message…": "Bidali zifratutako mezu bat…", + "Send a message (unencrypted)…": "Bidali mezu bat (zifratu gabea)…", + "Replying": "Erantzuten", + "Minimize apps": "Minimizatu aplikazioak", + "The platform you're on": "Zauden plataforma", + "The version of Riot.im": "Riot.im bertsioa", + "Your language of choice": "Zure aukerako hizkuntza", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Pribatutasuna garrantzitsua da guretzat, beraz ez dugu datu pertsonalik edo identifikagarririk jasotzen gure estatistiketan.", + "Learn more about how we use analytics.": "Ikasi gehiago estatistikei ematen diegun erabileraz.", + "The information being sent to us to help make Riot.im better includes:": "Riot.im hobetzeko bidaltzen zaigun informazioan hau dago:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Orri honek informazio identifikagarria badu ere, esaterako gela, erabiltzailea edo talde ID-a, datu hauek ezabatu egiten dira zerbitzarira bidali aurretik.", + "Whether or not you're logged in (we don't record your user name)": "Saioa hasita dagoen ala ez (ez dugu erabiltzaile-izena gordetzen)", + "Which officially provided instance you are using, if any": "Erabiltzen ari zaren instantzia ofiziala, balego", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Testu editorean testu aberatsa modua erabiltzen duzun", + "Your homeserver's URL": "Zure hasiera zerbitzariaren URL-a", + "Your identity server's URL": "Zure identitate zerbitzariaren URL-a", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(fullYear)s(e)ko %(monthName)sk %(day)sa", + "This room is not public. You will not be able to rejoin without an invite.": "Gela hau ez da publikoa. Ezin izango zara berriro elkartu gonbidapenik gabe.", + "Community IDs cannot be empty.": "Komunitate ID-ak ezin dira hutsik egon.", + "Show devices, send anyway or cancel.": "Erakutsi gailuak, bidali hala ere edo ezeztatu.", + "In reply to ": "honi erantzunez: ", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s erabiltzaileak bere pantaila izena aldatu du %(displayName)s izatera.", + "Failed to set direct chat tag": "Huts egin du txat zuzenarenaren etiketa jartzean", + "Failed to remove tag %(tagName)s from room": "Huts egin du %(tagName)s etiketa gelatik kentzean", + "Failed to add tag %(tagName)s to room": "Huts egin du %(tagName)s etiketa gelara gehitzean", + "Clear filter": "Garbitu iragazkia", + "Disable Community Filter Panel": "Desgaitu komunitate-iragazi panela", + "Did you know: you can use communities to filter your Riot.im experience!": "Ba al zenekien? Komunitateak erabili ditzakezu zure Riot.im esperientzia iragazteko!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Iragazki bat ezartzeko, arrastatu komunitate baten abatarra pantailaren ezkerrean dagoen iragazki-panelera. Iragazki-paneleko abatar batean klik egin dezakezu komunitate horri lotutako gelak eta pertsonak besterik ez ikusteko.", + "Your key share request has been sent - please check your other devices for key share requests.": "Zure gakoa partekatzeko eskaria bidali da - egiaztatu zure beste gailuetan gakoa partekatzeko eskariak.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Gakoa partekatzeko eskariak automatikoki bidaltzen dira zure beste gailuetara. Zure beste gailuetan gakoa partekatzeko eskaria ukatu edo baztertu baduzu, egin klik hemen saio honetarako gakoak eskatzeko berriz ere.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Zure beste gailuek mezu honetarako gakoa ez badute ezin izango dute deszifratu.", + "Key request sent.": "Gako eskaria bidalita.", + "Re-request encryption keys from your other devices.": "Berriz eskatu zifratze-gakoak zure beste gailuetatik.", + "%(user)s is a %(userRole)s": "%(user)s %(userRole)s da", + "Code": "Kodea", + "Debug Logs Submission": "Arazte-egunkarien bidalketak", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Akats bat bidali baduzu GitHub bidez, arazte-egunkariek arazoa aurkitzen lagundu gaitzakete. Arazte-egunkariek aplikazioak darabilen datuak dauzkate, zure erabiltzaile izena barne, bisitatu dituzun gelen ID-ak edo ezizenak eta beste erabiltzaileen izenak. Ez dute mezurik.", + "Submit debug logs": "Bidali arazte-txostenak", + "Opens the Developer Tools dialog": "Garatzailearen tresnen elkarrizketa-koadroa irekitzen du", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s)(e)k ikusita %(dateTime)s(e)tan", + "Unable to join community": "Ezinekoa komunitatera elkartzea", + "Unable to leave community": "Ezinezkoa komunitatetik ateratzea", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Zure komunitatearen izen eta abatarari egindako aldaketak 30 minutu behar ditzakete beste erabiltzaileek ikusi arte.", + "Join this community": "Elkartu komunitate honetara", + "Leave this community": "Atera komunitate honetatik", + "Stickerpack": "Eranskailu-multzoa", + "You don't currently have any stickerpacks enabled": "Ez duzu eranskailu multzorik aktibatuta", + "Add a stickerpack": "Gehitu eranskailu-multzoa", + "Hide Stickers": "Ezkutatu eranskailuak", + "Show Stickers": "Erakutsi eranskailuak", + "Who can join this community?": "Nor elkartu daiteke komunitate honetara?", + "Everyone": "Edonor", + "Fetching third party location failed": "Huts egin du hirugarrengoen kokalekua eskuratzean", + "A new version of Riot is available.": "Riot bertsio berri bat dago eskuragarri.", + "Couldn't load home page": "Ezin izan da hasiera orria kargatu", + "Send Account Data": "Bidali kontuaren datuak", + "All notifications are currently disabled for all targets.": "Une honetan jakinarazpen guztiak helburu guztietarako desgaituta daude.", + "Uploading report": "Igoera txostena", + "Sunday": "Igandea", + "Notification targets": "Jakinarazpenen helburuak", + "Today": "Gaur", + "Failed to get protocol list from Home Server": "Huts egin du protokoloen zerrenda hasiera zerbitzaritik jasotzean", + "You are not receiving desktop notifications": "Ez dituzu mahaigaineko jakinarazpenak jasotzen", + "Friday": "Ostirala", + "Update": "Eguneratu", + "What's New": "Zer dago berri", + "Add an email address above to configure email notifications": "Gehitu e-mail helbide bat goian e-mail bidezko jakinarazpenak konfiguratzeko", + "Expand panel": "Hedatu panela", + "On": "Bai", + "%(count)s Members": { + "other": "%(count)s kide", + "one": "Kide %(count)s" + }, + "Filter room names": "Iragazi gelen izenak", + "Changelog": "Aldaketa-egunkaria", + "Waiting for response from server": "Zerbitzariaren erantzunaren zain", + "Send Custom Event": "Bidali gertaera pertsonalizatua", + "Advanced notification settings": "Jakinarazpen aurreratuen ezarpenak", + "Failed to send logs: ": "Huts egin du egunkariak bidaltzean: ", + "delete the alias.": "ezabatu ezizena.", + "To return to your account in future you need to set a password": "Etorkizunean kontura itzuli ahal izateko pasahitz bat ezarri behar duzu", + "Forget": "Ahaztu", + "#example": "#adibidea", + "Hide panel": "Ezkutatu panela", + "You cannot delete this image. (%(code)s)": "Ezin duzu irudi hau ezabatu. (%(code)s)", + "Cancel Sending": "Utzi bidaltzeari", + "This Room": "Gela hau", + "The Home Server may be too old to support third party networks": "Hasiera zerbitzaria zaharregia izan daiteke hirugarrengoen sarean onartzeko", + "Noisy": "Zaratatsua", + "Error saving email notification preferences": "Errorea e-mail jakinarazpenen hobespenak gordetzean", + "Messages containing my display name": "Nire pantaila-izena duten mezuak", + "Messages in one-to-one chats": "Biren arteko txatetako mezuak", + "Unavailable": "Eskuraezina", + "View Decrypted Source": "Ikusi deszifratutako iturria", + "Failed to update keywords": "Huts egin du hitz gakoak eguneratzean", + "Notes:": "Oharrak:", + "remove %(name)s from the directory.": "kendu %(name)s direktoriotik.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Hitz gako hauen jakinarazpenak hemen bistaratu ezin daitezkeen arauak jarraitzen dituzte:", + "Safari and Opera work too.": "Safari eta Opera badabiltza ere.", + "Please set a password!": "Ezarri pasahitza mesedez!", + "You have successfully set a password!": "Ongi ezarri duzu pasahitza!", + "An error occurred whilst saving your email notification preferences.": "Errore bat gertatu da zure e-mail bidezko jakinarazpenen hobespenak gordetzean.", + "Explore Room State": "Miatu gelaren egoera", + "Source URL": "Iturriaren URLa", + "Messages sent by bot": "Botak bidalitako mezuak", + "Filter results": "Iragazi emaitzak", + "Members": "Kideak", + "No update available.": "Ez dago eguneraketarik eskuragarri.", + "Resend": "Birbidali", + "Files": "Fitxategiak", + "Collecting app version information": "Aplikazioaren bertsio-informazioa biltzen", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Ezabatu gelaren %(alias)s ezizena eta kendu %(name)s direktoriotik?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Honek zure kontura itzultzea ahalbidetuko dizu, beste gailuetan saioa amaitu eta berriro hasi eta gero.", + "Keywords": "Hitz gakoak", + "Enable notifications for this account": "Gaitu jakinarazpenak kontu honetarako", + "Directory": "Direktorioa", + "Invite to this community": "Gonbidatu komunitate honetara", + "Failed to get public room list": "Huts egin du gela publikoen zerrenda jasotzean", + "Messages containing keywords": "Hitz gakoak dituzten mezuak", + "Room not found": "Ez da gela aurkitu", + "Tuesday": "Asteartea", + "Enter keywords separated by a comma:": "Idatzi hitz gakoak koma bidez banatuta:", + "Forward Message": "Birbidali mezua", + "You have successfully set a password and an email address!": "Ondo ezarri dituzu pasahitza eta e-mail helbidea!", + "Remove %(name)s from the directory?": "Kendu %(name)s direktoriotik?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riotek nabigatzaileen ezaugarri aurreratu ugari erabiltzen ditu, hauetako batzuk ez daude erabilgarri edo esperimentalak dira zure oraingo nabigatzailean.", + "Event sent!": "Gertaera bidalita!", + "Preparing to send logs": "Egunkariak bidaltzeko prestatzen", + "Enable desktop notifications": "Gaitu mahaigaineko jakinarazpenak", + "Remember, you can always set an email address in user settings if you change your mind.": "Gogoratu, e-mail helbide bat ezarri dezakezu erabiltzaile-ezarpenetan iritzia aldatzen baduzu.", + "Explore Account Data": "Miatu kantuaren datuak", + "All messages (noisy)": "Mezu guztiak (ozen)", + "Saturday": "Larunbata", + "I understand the risks and wish to continue": "Arriskua ulertzen dut eta jarraitu nahi dut", + "Direct Chat": "Txat zuzena", + "The server may be unavailable or overloaded": "Zerbitzaria eskuraezin edo gainezka egon daiteke", + "Reject": "Baztertu", + "Failed to set Direct Message status of room": "Huts egin du Mezu Zuzena egoera gelan ezartzean", + "Monday": "Astelehena", + "Remove from Directory": "Kendu direktoriotik", + "Enable them now": "Gaitu orain", + "Messages containing my user name": "Nire erabiltzaile-izena duten mezuak", + "Toolbox": "Tresna-kutxa", + "Collecting logs": "Egunkariak biltzen", + "more": "gehiago", + "GitHub issue link:": "Arazoaren esteka GitHuben:", + "You must specify an event type!": "Gertaera mota bat zehaztu behar duzu!", + "(HTTP status %(httpStatus)s)": "(HTTP egoera %(httpStatus)s)", + "All Rooms": "Gela guztiak", + "Please install Chrome or Firefox for the best experience.": "Instalatu Chrome edo Firefox esperientzia onena izateko.", + "Wednesday": "Asteazkena", + "You cannot delete this message. (%(code)s)": "Ezin duzu mezu hau ezabatu. (%(code)s)", + "Quote": "Aipua", + "Send logs": "Bidali egunkariak", + "All messages": "Mezu guztiak", + "Call invitation": "Dei gonbidapena", + "Downloading update...": "Eguneraketa deskargatzen...", + "State Key": "Egoera gakoa", + "Failed to send custom event.": "Huts egin du gertaera pertsonalizatua bidaltzean.", + "What's new?": "Zer dago berri?", + "Notify me for anything else": "Jakinarazi beste edozer", + "When I'm invited to a room": "Gela batetara gonbidatzen nautenean", + "Can't update user notification settings": "Ezin dira erabiltzailearen jakinarazpenen ezarpenak eguneratu", + "Notify for all other messages/rooms": "Jakinarazi beste mezu/gela guztiak", + "Unable to look up room ID from server": "Ezin izan da gelaren IDa zerbitzarian bilatu", + "Couldn't find a matching Matrix room": "Ezin izan da bat datorren Matrix gela bat aurkitu", + "Invite to this room": "Gonbidatu gela honetara", + "Search for a room": "Bilatu gela bat", + "Thursday": "Osteguna", + "Search…": "Bilatu…", + "Logs sent": "Egunkariak bidalita", + "Back": "Atzera", + "Reply": "Erantzun", + "Show message in desktop notification": "Erakutsi mezua mahaigaineko jakinarazpenean", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Arazte-egunkariek aplikazioak darabilen datuak dauzkate, zure erabiltzaile izena barne, bisitatu dituzun gelen ID-ak edo ezizenak eta beste erabiltzaileen izenak. Ez dute mezurik.", + "Unhide Preview": "Ez ezkutatu aurrebista", + "Unable to join network": "Ezin izan da sarera elkartu", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Agian Riot ez beste bezero batean konfiguratu dituzu. Ezin dituzu Riot bidez doitu, baina aplikagarriak dira", + "Sorry, your browser is not able to run Riot.": "Zure nabigatzaileak ez du Riot erabiltzeko gaitasunik.", + "Uploaded on %(date)s by %(user)s": "%(user)s erabiltzaileak %(date)s (e)an igota", + "Messages in group chats": "Talde txatetako mezuak", + "Yesterday": "Atzo", + "Error encountered (%(errorDetail)s).": "Errorea aurkitu da (%(errorDetail)s).", + "Login": "Hasi saioa", + "Low Priority": "Lehentasun baxua", + "Unable to fetch notification target list": "Ezin izan da jakinarazpen helburuen zerrenda eskuratu", + "Set Password": "Ezarri pasahitza", + "Enable audible notifications in web client": "Gaitu jakinarazpen entzungarriak web bezeroan", + "Off": "Ez", + "Riot does not know how to join a room on this network": "Riotek ez daki nola elkartu gela batetara sare honetan", + "Mentions only": "Aipamenak besterik ez", + "You can now return to your account after signing out, and sign in on other devices.": "Zure kontura itzuli zaitezke beste gailuetan saioa amaitu eta berriro hastean.", + "Enable email notifications": "Gaitu e-mail bidezko jakinarazpenak", + "Event Type": "Gertaera mota", + "Download this file": "Deskargatu fitxategi hau", + "Pin Message": "Finkatu mezua", + "Failed to change settings": "Huts egin du ezarpenak aldatzean", + "View Community": "Ikusi komunitatea", + "Developer Tools": "Garatzaile-tresnak", + "View Source": "Ikusi iturria", + "Event Content": "Gertaeraren edukia", + "Thank you!": "Eskerrik asko!", + "Collapse panel": "Tolestu panela", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Zure oraingo nabigatzailearekin aplikazioaren itxura eta portaera guztiz okerra izan daiteke, eta funtzio batzuk ez dira ibiliko. Hala ere aurrera jarraitu dezakezu saiatu nahi baduzu, baina zure erantzukizunaren menpe geratzen dira aurkitu ditzakezun arazoak!", + "Checking for an update...": "Eguneraketarik dagoen egiaztatzen...", + "There are advanced notifications which are not shown here": "Hemen erakusten ez diren jakinarazpen aurreratuak daude", + "Missing roomId.": "Gelaren ID-a falta da.", + "Picture": "Irudia", + "Every page you use in the app": "Aplikazioan erabilitako orri oro", + "e.g. ": "adib. ", + "Your User Agent": "Zure erabiltzaile-agentea", + "Your device resolution": "Zure gailuaren bereizmena", + "Always show encryption icons": "Beti erakutsi zifratze ikonoak", + "Popout widget": "Laster-leiho trepeta", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-en akatsak GitHub bidez kudeatzen dira: sortu akats txosten bat GitHub-en.", + "Log out and remove encryption keys?": "Amaitu saioa eta kendu zifratze gakoak?", + "Send Logs": "Bidali egunkariak", + "Clear Storage and Sign Out": "Garbitu biltegiratzea eta amaitu saioa", + "Refresh": "Freskatu", + "We encountered an error trying to restore your previous session.": "Errore bat aurkitu dugu zure aurreko saioa berrezartzen saiatzean.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Zure nabigatzailearen biltegiratzea garbitzeak arazoa konpon lezake, baina saioa amaituko da eta zifratutako txaten historiala ezin izango da berriro irakurri.", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Une honetan ezin da fitxategi batekin erantzun, mezu arrunt eta ez erantzun gisa bidaliko da.", + "Unable to reply": "Ezin erantzun", + "At this time it is not possible to reply with an emote.": "Une honetan ezin da irriabartxo batekin erantzun.", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Ezin izan da erantzundako gertaera kargatu, edo ez dago edo ez duzu ikusteko baimenik.", + "Collapse Reply Thread": "Tolestu erantzun-haria", + "Enable widget screenshots on supported widgets": "Gaitu trepeten pantaila-argazkiak onartzen duten trepetetan", + "Send analytics data": "Bidali datu analitikoak", + "Muted Users": "Mutututako erabiltzaileak", + "Warning: This widget might use cookies.": "Abisua: Trepeta honek cookie-ak erabili litzake.", + "Terms and Conditions": "Termino eta baldintzak", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "%(homeserverDomain)s hasiera-zerbitzaria erabiltzen jarraitzeko gure termino eta baldintzak irakurri eta onartu behar dituzu.", + "Review terms and conditions": "Irakurri termino eta baldintzak", + "Failed to indicate account erasure": "Ezin izan da kontuaren ezabaketa jakinarazi", + "To continue, please enter your password:": "Jarraitzeko, sartu zure pasahitza:", + "password": "pasahitza", + "e.g. %(exampleValue)s": "adib. %(exampleValue)s", + "Reload widget": "Birkargatu trepeta", + "To notify everyone in the room, you must be a": "Gelan dauden guztiei jakinarazteko", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Hobetu Riot.im erabilera-datu anonimoak bidaliz. Honek coockie bat erabiliko du (Ikusi gure Cookie politika).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Hobetu Riot.im erabilera-datu anonimoak bidaliz. Honek cookie bat erabiliko du.", + "Yes, I want to help!": "Bai, lagundu nahi dut!", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Honek kontua behin betirako erabilgaitza bihurtuko du. Ezin izango duzu saioa hasi, eta ezin izango du beste inork ID hori erabili. Kontua dagoen gela guztietatik aterako da, eta kontuaren xehetasunak identitate-zerbitzaritik ezabatuko dira. Ekintza hau ezin da desegin.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Kontua desaktibatzean ez dira zuk bidalitako mezuak ahaztuko. Mezuak ahaztea nahi baduzu markatu beheko kutxa.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Matrix-eko mezuen ikusgaitasuna e-mail sistemaren antekoa da. Guk zure mezuak ahaztean ez dizkiogu erabiltzaile berriei edo izena eman ez dutenei erakutsiko, baina jada zure mezuak jaso dituzten erregistratutako erabiltzaileen bere kopia izaten jarraituko dute.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Ahaztu bidali ditudan mezu guztiak kontua desaktibatzean (Abisua: Honekin etorkizuneko erabiltzaileek elkarrizketaren bertsio ez oso bat ikusiko dute)", + "Can't leave Server Notices room": "Ezin zara Server Notices gelatik atera", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Gela hau mezu hasiera zerbitzariaren garrantzitsuak bidaltzeko erabiltzen da, eta ezin zara atera.", + "Try the app first": "Probatu aplikazioa aurretik", + "Encrypting": "Zifratzen", + "Encrypted, not sent": "Zifratua, bidali gabe", + "Share Link to User": "Partekatu esteka erabiltzailearekin", + "Share room": "Partekatu gela", + "Share Room": "Partekatu gela", + "Link to most recent message": "Esteka azken mezura", + "Share User": "Partekatu erabiltzailea", + "Share Community": "Partekatu komunitatea", + "Share Room Message": "Partekatu gelako mezua", + "Link to selected message": "Esteka hautatutako mezura", + "COPY": "KOPIATU", + "Share Message": "Partekatu mezua", + "No Audio Outputs detected": "Ez da audio irteerarik antzeman", + "Audio Output": "Audio irteera", + "Jitsi Conference Calling": "Jitsi konferentzia deia", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Zifratutako gelatan, honetan esaterako, URL-en aurrebistak lehenetsita desgaituta daude zure hasiera-zerbitzariak gela honetan ikusten dituzun estekei buruzko informaziorik jaso ez dezan, hasiera-zerbitzarian sortzen baitira aurrebistak.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Norbaitek mezu batean URL bat jartzen duenean, URL aurrebista bat erakutsi daiteke estekaren informazio gehiago erakusteko, adibidez webgunearen izenburua, deskripzioa eta irudi bat.", + "The email field must not be blank.": "E-mail eremua ezin da hutsik laga.", + "The user name field must not be blank.": "Erabiltzaile-izen eremua ezin da hutsik laga.", + "The phone number field must not be blank.": "Telefono zenbakia eremua ezin da hutsik laga.", + "The password field must not be blank.": "Pasahitza eremua ezin da hutsik laga.", + "Call in Progress": "Deia abian", + "A call is already in progress!": "Badago dei bat abian!", + "You have no historical rooms": "Ez duzu gelen historialik", + "You can't send any messages until you review and agree to our terms and conditions.": "Ezin duzu mezurik bidali gure termino eta baldintzak irakurri eta onartu arte.", + "Show empty room list headings": "Erakutsi gela hutsen zerrenda-goiburuak", + "Demote yourself?": "Jaitsi zure burua mailaz?", + "Demote": "Jaitzi mailaz", + "A conference call could not be started because the intgrations server is not available": "Ezin izan da konferentzia dei bat hasi integrazio zerbitzaria ez dagoelako eskuragarri", + "A call is currently being placed!": "Dei bat ezartzen ari da orain!", + "Permission Required": "Baimena beharrezkoa", + "You do not have permission to start a conference call in this room": "Ez duzu baimenik konferentzia dei bat hasteko gela honetan", + "This event could not be displayed": "Ezin izan da gertakari hau bistaratu", + "deleted": "ezabatuta", + "underlined": "azpimarratuta", + "inline-code": "lineako kodea", + "block-quote": "aipamen blokea", + "bulleted-list": "buletdun zerrenda", + "numbered-list": "zenbakidun zerrenda", + "Failed to remove widget": "Huts egin du trepeta kentzean", + "An error ocurred whilst trying to remove the widget from the room": "Trepeta gelatik kentzen saiatzean errore bat gertatu da", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo du. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.", + "This homeserver has hit its Monthly Active User limit": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga jo du", + "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.", + "System Alerts": "Sistemaren alertak", + "Internal room ID: ": "Gelaren barne IDa: ", + "Room version number: ": "Gelaren bertsio zenbakia: ", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du. Jarri zerbitzuaren administratzailearekin kontaktuan zerbitzua erabiltzen jarraitzeko.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Hasiera zerbitzari honek hileko erabiltzaile aktiboen muga jo du eta ezin izango duzu saioa hasi. Jarri zerbitzuaren administratzailearekin kontaktuan muga hau handitu dezan.", + "Sorry, your homeserver is too old to participate in this room.": "Zure hasiera-zerbitzaria zaharregia da gela honetan parte hartzeko.", + "Please contact your homeserver administrator.": "Jarri zure hasiera-zerbitzariaren administratzailearekin kontaktuan.", + "Increase performance by only loading room members on first view": "Hobetu errendimendua gelako kideak lehen ikustaldian besterik ez kargatuz", + "This room has been replaced and is no longer active.": "Gela hau ordeztu da eta ez dago aktibo jada.", + "The conversation continues here.": "Elkarrizketak hemen darrai.", + "Upgrade room to version %(ver)s": "Eguneratu gela %(ver)s bertsiora", + "There is a known vulnerability affecting this room.": "Gela honi eragiten dion ahulezia ezagun bat dago.", + "This room version is vulnerable to malicious modification of room state.": "Gela bertsio honek gelaren egoera gaiztoki aldatzea baimentzen duen ahulezia bat du.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Sakatu hemen gela azken bertsiora eguneratzeko eta gelaren osotasuna babestuta dagoela egiaztatzeko.", + "Only room administrators will see this warning": "Gelaren administratzaileek besterik ez dute abisu hau ikusiko", + "This room is a continuation of another conversation.": "Gela hau aurreko elkarrizketa baten jarraipena da.", + "Click here to see older messages.": "Egin klik hemen mezu zaharrak ikusteko.", + "Please contact your service administrator to continue using the service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko.", + "This homeserver has hit its Monthly Active User limit.": "Hasiera zerbitzari honek bere hilabeteko erabiltzaile aktiboen muga gainditu du.", + "This homeserver has exceeded one of its resource limits.": "Hasiera zerbitzari honek bere baliabide mugetako bat gainditu du.", + "Please contact your service administrator to get this limit increased.": "Jarri kontaktuan zerbitzuaren administratzailearekin muga hau areagotzeko.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Hasiera zerbitzari honek hilabeteko erabiltzaile aktiboen muga jo du erabiltzaile batzuk ezin izango dute saioa hasi.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Hasiera zerbitzari honek bere baliabide mugetako bat jo du erabiltzaile batzuk ezin izango dute saioa hasi.", + "Failed to upgrade room": "Huts egin du gela eguneratzea", + "The room upgrade could not be completed": "Ezin izan da gelaren eguneraketa osatu", + "Upgrade this room to version %(version)s": "Eguneratu gela hau %(version)s bertsiora", + "Upgrade Room Version": "Eguneratu gelaren bertsioa", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Gela hau eguneratzeak instantzian uneko gela itxi eta berri bat sortzea dakar. Erabiltzaileei ahalik eta esperientzia onena emateko hau egingo dugu:", + "Create a new room with the same name, description and avatar": "Izen, deskripzio eta abatar bereko beste gela bat sortu", + "Update any local room aliases to point to the new room": "Tokiko gelaren ezizen guztiak gela berrira apuntatu ditzaten eguneratu", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Erabiltzaileei gelaren bertsio zaharrean hitz egiten jarraitzea eragotzi, eta erabiltzaileei gela berrira mugitzea aholkatzeko mezu bat bidali", + "Put a link back to the old room at the start of the new room so people can see old messages": "Gela berriaren hasieran gela zaharrera esteka bat jarri jendeak mezu zaharrak ikus ditzan", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali zure hasiera zerbitzariak hilabeteko erabiltzaile aktiboen muga jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Zure mezua ez da bidali zure hasiera zerbitzariak baliabide mugaren bat jo duelako. Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzua erabiltzen jarraitzeko.", + "Lazy loading members not supported": "Kideen karga alferrerako euskarririk ez", + "Lazy loading is not supported by your current homeserver.": "Zure hasiera zerbitzariak ez du onartzen karga alferra.", + "Legal": "Legezkoa", + "Please contact your service administrator to continue using this service.": "Jarri kontaktuan zerbitzuaren administratzailearekin zerbitzu hau erabiltzen jarraitzeko.", + "Forces the current outbound group session in an encrypted room to be discarded": "Uneko irteerako talde saioa zifratutako gela batean baztertzera behartzen du", + "Error Discarding Session": "Errorea saioa baztertzean", + "Registration Required": "Erregistratzea ezinbestekoa da", + "You need to register to do this. Would you like to register now?": "Hau egiteko erregistratu egin behar zara. Orain erregistratu nahi duzu?", + "Unable to connect to Homeserver. Retrying...": "Ezin izan da hasiera zerbitzarira konektatu. Berriro saiatzen...", + "Unable to query for supported registration methods": "Ezin izan da onartutako erregistratze metodoei buruz itaundu", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "one": "%(senderName)s erabiltzaileak %(addedAddresses)s gehitu du gelako helbide gisa.", + "other": "%(senderName)s erabiltzaileak %(addedAddresses)s helbideak gehitu dizkio gela honi." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "one": "%(senderName)s erabiltzileak %(removedAddresses)s helbideak kendu ditu gela honetatik.", + "other": "%(senderName)s erabiltzaileak %(removedAddresses)s helbideak kendu ditu gela honetatik." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s erabiltzaileak %(addedAddresses)s helbideak gehitu eta %(removedAddresses)s helbideak kendu ditu gela honetatik.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s erabiltzileak %(address)s ezarri du gela honetako helbide nagusi gisa.", + "%(senderName)s removed the main address for this room.": "%(senderName)s erabiltzaileak gela honen helbide nagusia kendu du.", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Egunkariak bidali aurretik, GitHub arazo bat sortu behar duzu gertatzen zaizuna azaltzeko.", + "What GitHub issue are these logs for?": "Zein GitHub arazorako egunkariak dira hauek?", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot-ek orain 3-5 aldiz memoria gutxiago darabil, beste erabiltzaileen informazioa behar denean besterik ez kargatzen. Itxaron zerbitzariarekin sinkronizatzen garen bitartean!", + "Updating Riot": "Riot eguneratzen", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

Zure komunitatearen orriaren HTMLa

\n

\n Erabili deskripzio luzea kide berriek komunitatea ezagutu dezaten, edo eman ezagutzera esteka garrantzitsuak\n

\n

\n 'img' etiketak erabili ditzakezu ere\n

\n", + "Submit Debug Logs": "Bidali arazketa egunkariak", + "An email address is required to register on this homeserver.": "e-mail helbide bat behar da hasiera-zerbitzari honetan izena emateko.", + "A phone number is required to register on this homeserver.": "telefono zenbaki bat behar da hasiera-zerbitzari honetan izena emateko.", + "Please accept all of the policies": "Onartu mesedez politika guztiak", + "Please review and accept the policies of this homeserver:": "Irakurri eta onartu hasiera zerbitzari honen politikak:", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Aurretik Riot erabili duzu %(host)s zerbitzarian kideen karga alferra gaituta zenuela. Bertsio honetan karga alferra desgaituta dago. Katxe lokala bi ezarpen hauen artean bateragarria ez denez, Riotek zure kontua berriro sinkronizatu behar du.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Rioten beste bertsioa oraindik beste fitxat batean irekita badago, itxi ezazu zerbitzari bera aldi berean karga alferra gaituta eta desgaituta erabiltzeak arazoak sor ditzakeelako.", + "Incompatible local cache": "Katxe lokal bateraezina", + "Clear cache and resync": "Garbitu katxea eta sinkronizatu berriro", + "Add some now": "Gehitu batzuk orain", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s bidez %(osName)s ostalarian", + "Riot Desktop on %(platformName)s": "Riot Desktop %(platformName)s plataforman", + "Riot is not supported on mobile web. Install the app?": "Riotek ez du euskarririk mugikorrentzako webean. Instalatu aplikazioa?", + "Unknown device": "Gailu ezezaguna", + "You need to be using HTTPS to place a screen-sharing call.": "HTTPS erabili behar duzu sekretuak partekatzeko dei bat ezartzeko.", + "Welcome to Riot.im": "Ongi etorri Riot.im mezularitzara", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Deszentralizatutako eta zifratutako txat eta elkarlana [matrix] sareari esker", + "Search the room directory": "Bilatu gelen direktorioa", + "Chat with Riot Bot": "Txateatu Riot botarekin", + "Get started with some tips from Riot Bot!": "Hasi Riot botaren aholku batzuekin!", + "General discussion about Matrix and Riot": "Matrix eta Riot-i buruzko eztabaida orokorra", + "Discussion of all things Matrix!": "Matrix-ekin zerikusia duen guztiari buruzko eztabaida!", + "Riot/Web & Desktop chat": "Riot/Web eta mahaigaineko txata", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS eta matrix-ios-sdk txata", + "Riot/Android & matrix-android-sdk chat": "Riot/Android eta matrix-android-sdk txata", + "Matrix technical discussions": "Matrix buruzko eztabaida teknikoak", + "Running Matrix services": "Matrix zerbitzuak exekutatzea", + "Community-run support for Synapse": "Synapse-rako laguntza komunitatea", + "Admin support for Dendrite": "Dendrite kudeatzaileentzako laguntza", + "Announcements about Synapse releases": "Synapse bertsio berrien iragarkiak", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc exekutatu edo erabiltzen dutenentzako laguntza", + "Building services on Matrix": "Matrix-en gaineko zerbitzuak eraikitzea", + "Support for those using the Matrix spec": "Matrix espezifikazioa darabilenentzako laguntza", + "Design and implementation of E2E in Matrix": "Matrix-en E2E diseinu eta inplementazioa", + "Implementing VR services with Matrix": "VR zerbitzuak inplementatzea Matrix erabilita", + "Implementing VoIP services with Matrix": "VoIP zerbitzuak inplementatzea Matrix erabilita", + "Discussion of the Identity Service API": "Identitate zerbitzuaren APIari buruzko eztabaida", + "Support for those using, running and writing other bridges": "Bestelako zubiak erabili, exekutatu eta idazten dituztenentzako laguntza", + "Contributing code to Matrix and Riot": "Kodearekin lagundu Matrix eta Riot", + "Dev chat for the Riot/Web dev team": "Riot/web garapen taldearen txata", + "Dev chat for the Dendrite dev team": "Dendrite garapen taldearen txata", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Badauden sareetara lotutako gela ugari daude Matrixen (Slack, IRC, Gitter eta abar), baita independienteak. Begiratu direktorioa!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Zerbitzari pertsonalizatuaren aukerak erabili ditzakezu beste Matrix zerbitzarietan saioa hasteko, han beste hasiera-zerbitzari baten URLa sartuz.
Horrela Riot aurretik duzun kontu batekin erabili dezakezu beste hasiera-zerbitzari batean.

Identitate-zerbitzari pertsonalizatu bat ezarri dezakezu ere, baina orduan ezin izango dituzu erabiltzaileak e-mail helbidea erabiliz gonbidatu, edo ezin izan izango zaituzte zu e-mail helbidea erabiliz gonbidatu.", + "Co-ordination for Riot translators": "Riot itzultzaileen koordinazioa" +} \ No newline at end of file diff --git a/riot/i18n/fi.json b/riot/i18n/fi.json new file mode 100644 index 0000000..048cade --- /dev/null +++ b/riot/i18n/fi.json @@ -0,0 +1,1170 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Numeroon +%(msisdn)s on lähetetty tekstiviesti. Ole hyvä ja syötä sen sisältämä varmennuskoodi", + "Accept": "Hyväksy", + "Cancel": "Peruuta", + "Close": "Sulje", + "Create new room": "Luo uusi huone", + "Custom Server Options": "Palvelinasetukset", + "Dismiss": "Hylkää", + "Error": "Virhe", + "Failed to forget room %(errCode)s": "Huoneen unohtaminen epäonnistui %(errCode)s", + "Favourite": "Suosikki", + "Mute": "Vaimenna", + "Notifications": "Ilmoitukset", + "Operation failed": "Toiminto epäonnistui", + "Remove": "Poista", + "Room directory": "Huonehakemisto", + "Search": "Haku", + "Settings": "Asetukset", + "Start chat": "Aloita keskustelu", + "unknown error code": "tuntematon virhekoodi", + "Failed to change password. Is your password correct?": "Salasanan muuttaminen epäonnistui. Onko salasanasi oikein?", + "Continue": "Jatka", + "powered by Matrix": "Matrix", + "Active call (%(roomName)s)": "Aktivoi puhelu (%(roomName)s)", + "Add": "Lisää", + "Add a topic": "Lisää aihe", + "Add email address": "Lisää sähköpostiosoite", + "Add phone number": "Lisää puhelinnumero", + "Admin": "Ylläpitäjä", + "Allow": "Salli", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Mediaoikeudet puuttuvat. Klikkaa tästä pyytääksesi oikeudet.", + "No Microphones detected": "Mikrofonia ei löytynyt", + "No Webcams detected": "Webkameraa ei löytynyt", + "No media permissions": "Ei mediaoikeuksia", + "You may need to manually permit Riot to access your microphone/webcam": "Sinun täytyy ehkä manuaalisesti sallia mikrofonin/webkameran käyttö", + "Default Device": "Oletuslaite", + "Microphone": "Mikrofoni", + "Camera": "Kamera", + "Advanced": "Kehittyneet", + "Algorithm": "Algoritmi", + "Hide removed messages": "Piilota poistetut viestit", + "Always show message timestamps": "Näytä aina viestien aikaleimat", + "Authentication": "Autentikointi", + "Alias (optional)": "Alias (valinnainen)", + "%(items)s and %(lastItem)s": "%(items)s ja %(lastItem)s", + "%(names)s and %(lastPerson)s are typing": "%(names)s ja %(lastPerson)s kirjoittavat", + "A new password must be entered.": "Sinun täytyy syöttää uusi salasana.", + "%(senderName)s answered the call.": "%(senderName)s vastasi puheluun.", + "An error has occurred.": "Virhe.", + "Anyone": "Kaikki", + "Anyone who knows the room's link, apart from guests": "Kaikki jotka tietävät huoneen osoitteen, paitsi vieraat", + "Anyone who knows the room's link, including guests": "Kaikki jotka tietävät huoneen osoitteen, mukaanlukien vieraat", + "Are you sure?": "Oletko varma?", + "Are you sure you want to leave the room '%(roomName)s'?": "Oletko varma että haluat poistua huoneesta '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Oletko varma että haluat hylätä kutsun?", + "Are you sure you want to upload the following files?": "Oletko varma että haluat ladata seuraavat tiedostot?", + "Attachment": "Liite", + "Autoplay GIFs and videos": "Toista automaattisesti GIF-animaatiot ja videot", + "%(senderName)s banned %(targetName)s.": "%(senderName)s antoi porttikiellon käyttäjälle %(targetName)s.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Yhdistäminen kotipalvelimeen epäonnistui. Ole hyvä ja tarkista verkkoyhteytesi ja varmista että kotipalvelimen SSL-sertifikaatti on luotettu, ja että jokin selaimen lisäosa ei estä pyyntöjen lähettämisen.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Yhdistäminen kotipalveluun HTTP:n avulla ei ole mahdollista kun selaimen osoitepalkissa on HTTPS URL. Käytä joko HTTPS tai salli turvattomat skriptit.", + "Can't load user settings": "Käyttäjäasetusten lataaminen epäonnistui", + "Change Password": "Muuta salasana", + "%(senderName)s changed their profile picture.": "%(senderName)s muutti profiilikuvansa.", + "%(targetName)s accepted an invitation.": "%(targetName)s hyväksyi kutsun.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s hyväksyi kutsun käyttäjän %(displayName)s puolesta.", + "Account": "Tili", + "and %(count)s others...": { + "other": "ja %(count)s lisää...", + "one": "ja yksi lisää..." + }, + "Ban": "Anna porttikielto", + "Banned users": "Porttikiellon saanneet käyttäjät", + "Bans user with given id": "Antaa porttikiellon käyttäjälle jolla on annettu tunniste", + "Bulk Options": "Bulkkiasetukset", + "Changes your display nickname": "Muuttaa näyttönimesi", + "Changes colour scheme of current room": "Muuttaa tamänhetkisen huoneen väritystä", + "Clear Cache and Reload": "Puhdista välimuisti ja lataa uudelleen", + "Clear Cache": "Puhdista välimuisti", + "Click here to fix": "Paina tästä korjataksesi", + "Click to mute audio": "Paina mykistääksesi äänet", + "Click to mute video": "Paina mykistääksesi video", + "click to reveal": "paina näyttääksesi", + "Click to unmute video": "Paina poistaaksesi videomykistyksen", + "Click to unmute audio": "Paina poistaaksesi äänimykistyksen", + "Command error": "Komentovirhe", + "Commands": "Komennot", + "Conference call failed.": "Konferenssipuhelu epäonnistui.", + "Conference calling is in development and may not be reliable.": "Konferenssipuhelut ovat vielä kehityksen alla ja saattavat toimia epäluotettavasti.", + "Conference calls are not supported in encrypted rooms": "Konferenssipuhelut eivät ole mahdollisia salatuissa huoneissa", + "Conference calls are not supported in this client": "Tämä asiakasohjelma ei tue konferenssipuheluja", + "Confirm password": "Varmista salasana", + "Confirm your new password": "Varmista uusi salasanasi", + "Could not connect to the integration server": "Yhteys integraatiopalvelimeen epäonnistui", + "Create a new chat or reuse an existing one": "Luo uusi keskustelu tai uudelleenkäytä vanha", + "Create an account": "Luo tili", + "Create Room": "Luo huone", + "Cryptography": "Salaus", + "Current password": "Nykyinen salasana", + "Custom": "Mukautettu", + "Custom level": "Mukautettu taso", + "/ddg is not a command": "/ddg ei ole komento", + "Deactivate Account": "Deaktivoi tili", + "Deactivate my account": "Deaktivoi tilini", + "Decline": "Hylkää", + "Decryption error": "Virhe salauksen purkamisessa", + "Delete": "Poista", + "Default": "Oletusarvo", + "Device already verified!": "Laite on jo varmennettu!", + "Device ID": "Laitetunniste", + "Device ID:": "Laitetunniste:", + "device id: ": "laitetunniste: ", + "Device key:": "Laiteavain:", + "Devices": "Laitteet", + "Direct chats": "Suorat viestittelyt", + "Disable Notifications": "Ota ilmoitukset pois käytöstä", + "Disinvite": "Peru kutsu", + "Display name": "Näyttönimi", + "Download %(text)s": "Lataa %(text)s", + "Drop File Here": "Pudota tiedosto tähän", + "Ed25519 fingerprint": "Ed25519 sormenjälki", + "Edit": "Muokkaa", + "Email": "Sähköposti", + "Email address": "Sähköpostiosoite", + "Email address (optional)": "Sähköpostiosoite (valinnainen)", + "Email, name or matrix ID": "Sähköpostiosoite, nimi tai Matrix ID", + "Emoji": "Emoji", + "Enable encryption": "Ota salaus käyttöön", + "Enable Notifications": "Ota ilmoitukset käyttöön", + "Encrypted by a verified device": "Varmennetun laitteen salaama", + "Encrypted by an unverified device": "Varmentamattoman laiteen salaama", + "Encrypted room": "Salattu huone", + "Encryption is enabled in this room": "Salaus on kytketty päälle tässä huoneessa", + "Encryption is not enabled in this room": "Salaus ei ole kytketty päälle tässä huoneessa", + "End-to-end encryption information": "Päästä päähän-salauksen tiedot", + "Enter Code": "Syötä koodi", + "Enter passphrase": "Syötä salasana", + "Error decrypting attachment": "Liitteen salauksen purku epäonnistui", + "Event information": "Tapahtumatiedot", + "Export": "Vie", + "Export E2E room keys": "Vie huoneen päästä päähän-salauksen (E2E) avaimet", + "Failed to ban user": "Porttikiellon antaminen epäonnistui", + "Failed to fetch avatar URL": "Avatar URL:n haku epäonnistui", + "Failed to join room": "Huoneeseen liittyminen epäonnistui", + "Failed to kick": "Huoneesta poistaminen epäonnistui", + "Failed to leave room": "Huoneesta poistuminen epäonnistui", + "Failed to load timeline position": "Aikajanapaikan lataaminen epäonnistui", + "Failed to mute user": "Käyttäjän mykistäminen epäonnistui", + "Failed to reject invite": "Kutsun hylkääminen epäonnistui", + "Failed to reject invitation": "Kutsun hylkääminen epäonnistui", + "Failed to save settings": "Asetusten tallentaminen epäonnistui", + "Failed to send email": "Sähköpostin lähettäminen epäonnistui", + "Failed to send request.": "Pyynnön lähettäminen epäonnistui.", + "Failed to set display name": "Näyttönimen asettaminen epäonnistui", + "Failed to set up conference call": "Konferenssipuhelun alustus epäonnistui", + "Failed to toggle moderator status": "Moderaattoriasetuksen muuttaminen epäonnistui", + "Failed to unban": "Porttikiellon poistaminen epäonnistui", + "Failed to upload file": "Tiedoston lataaminen epäonnistui", + "Failed to upload profile picture!": "Profiilikuvan lataaminen epäonnistui", + "Failed to verify email address: make sure you clicked the link in the email": "Sähköpostin varmennus epäonnistui: varmista että seurasit sähköpostissa olevaa linkkiä", + "Failure to create room": "Huoneen luominen epäonnistui", + "Favourites": "Suosikit", + "Fill screen": "Täytä näyttö", + "Filter room members": "Suodata jäsenistä", + "Forget room": "Unohda huone", + "Forgot your password?": "Unohditko salasanasi?", + "For security, this session has been signed out. Please sign in again.": "Turvallisuussyistä tämä istunto on vanhentunut. Ole hyvä ja kirjaudu uudestaan.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Turvallusuussyistä uloskirjautuminen poistaa kaikki päästä päähän-salausavaimet tästä selaimesta. Jos haluat purkaa keskustelujen salaukset tulevaisuudessa pitää sinun viedä purkuavaimet ja pitää ne turvallisesti tallessa.", + "Hide read receipts": "Piilota lukukuittaukset", + "Hide Text Formatting Toolbar": "Piilota tekstinmuotoilutyökalupalkki", + "Homeserver is": "Kotipalvelin on", + "Identity Server is": "Identiteettipalvelin on", + "I have verified my email address": "Olen varmistanut sähköpostiosoitteeni", + "Import": "Tuo", + "Import E2E room keys": "Tuo päästä päähän-salaus (E2E) huoneavaimet", + "Incoming call from %(name)s": "Saapuva puhelu käyttäjältä %(name)s", + "Incoming video call from %(name)s": "Saapuva videopuhelu käyttäjältä %(name)s", + "Incoming voice call from %(name)s": "Saapuva äänipuhelu käyttäjältä %(name)s", + "Incorrect username and/or password.": "Virheellinen käyttäjänimi ja/tai salasana.", + "Incorrect verification code": "Virheellinen varmennuskoodi", + "Integrations Error": "Integraatiovirhe", + "Interface Language": "Käyttöliittymän kieli", + "Invalid alias format": "Aliaksen muoto on virheellinen", + "Invalid address format": "Osoitteen muoto on virheellinen", + "Invalid Email Address": "Virheellinen sähköpostiosoite", + "Invite new room members": "Kutsu lisää jäseniä huoneeseen", + "Invited": "Kutsuttu", + "Invites": "Kutsuu", + "Invites user with given id to current room": "Kutsuu annetun käyttäjätunnisteen mukaisen käyttäjän huoneeseen", + "Sign in with": "Tunnistus", + "Join Room": "Liity huoneeseen", + "Joins room with given alias": "Liittyy huoneeseen jolla on annettu alias", + "Jump to first unread message.": "Hyppää ensimmäiseen lukemattomaan viestiin.", + "Kick": "Poista huoneesta", + "Kicks user with given id": "Poistaa käyttäjätunnisteen mukaisen käyttäjän huoneesta", + "Labs": "Laboratorio", + "Last seen": "Viimeksi nähty", + "Leave room": "Poistu huoneesta", + "Level:": "Taso:", + "Local addresses for this room:": "Tämän huoneen paikalliset osoitteet:", + "Logged in as:": "Kirjautunut käyttäjänä:", + "Logout": "Kirjaudu ulos", + "Low priority": "Alhainen prioriteetti", + "Manage Integrations": "Hallinoi integraatioita", + "Markdown is disabled": "Markdown on pois päältä", + "Markdown is enabled": "Mardown on päällä", + "matrix-react-sdk version:": "Matrix-react-sdk versio:", + "Message not sent due to unknown devices being present": "Viestiä ei lähetetty koska paikalla on tuntemattomia laitteita", + "Mobile phone number": "Puhelinnumero", + "Mobile phone number (optional)": "Puhelinnumero (valinnainen)", + "Moderator": "Moderaattori", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Name": "Nimi", + "New password": "Uusi salasana", + "New passwords don't match": "Uudet salasanat eivät täsmää", + "New passwords must match each other.": "Uusien salasanojen on vastattava toisiaan.", + "not set": "ei asetettu", + "not specified": "ei määritetty", + "(not supported by this browser)": "(ei tuettu tässä selaimessa)", + "": "", + "AM": "AM", + "PM": "PM", + "NOT verified": "EI varmennettu", + "NOTE: Apps are not end-to-end encrypted": "Huom: Ohjelmat eivät ole päästä päähän-salattuja", + "No display name": "Ei näyttönimeä", + "No more results": "Ei enempää tuloksia", + "No results": "Ei tuloksia", + "OK": "OK", + "olm version:": "olm versio:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Kun salaus on kytketty päälle sitä ei enää voi kytkeä pois (toistaiseksi)", + "Only people who have been invited": "Vain kutsun saanneet käyttäjät", + "Password": "Salasana", + "Password:": "Salasana:", + "Passwords can't be empty": "Salasanat eivät voi olla tyhjiä", + "People": "Henkilöt", + "Permissions": "Oikeudet", + "Phone": "Puhelin", + "Privacy warning": "Yksityisyysvaroitus", + "Private Chat": "Yksityinen keskustelu", + "Profile": "Profiili", + "Public Chat": "Julkinen keskustelu", + "Reason": "Syy", + "Reason: %(reasonText)s": "Syy: %(reasonText)s", + "Register": "Rekisteröidy", + "Reject invitation": "Hylkää kutsu", + "Rejoin": "Liity uudestaan", + "Remove Contact Information?": "Poista yhteystiedot?", + "Results from DuckDuckGo": "DuckDuckGo:n tulokset", + "Return to login screen": "Palaa kirjautumissivulle", + "riot-web version:": "Riot-web versio:", + "Room Colour": "Huoneen väri", + "Room contains unknown devices": "Huone sisältää tuntemattomia laitteita", + "Room name (optional)": "Huoneen nimi (valinnainen)", + "Rooms": "Huoneet", + "Save": "Tallenna", + "Scroll to bottom of page": "Vieritä sivun loppuun", + "Scroll to unread messages": "Vieritä lukemattomiin viesteihin", + "Search failed": "Haku epäonnistui", + "Searches DuckDuckGo for results": "Hakee DuckDuckGo:n avulla", + "Send anyway": "Lähetä kuitenkin", + "Sender device information": "Lähettäjän laitteen tiedot", + "Send Invites": "Lähetä kutsu", + "Server error": "Palvelinvirhe", + "Session ID": "Istuntotunniste", + "Sets the room topic": "Asettaa huoneen aiheen", + "Show panel": "Näytä paneeli", + "Sign in": "Kirjaudu sisään", + "Sign out": "Kirjaudu ulos", + "%(count)s of your messages have not been sent.": { + "other": "Jotkut viesteistäsi ei ole lähetetty." + }, + "Someone": "Joku", + "Start a chat": "Aloita keskustelu", + "Start Chat": "Aloita keskustelu", + "Submit": "Lähetä", + "This email address is already in use": "Tämä sähköpostiosoite on jo käytössä", + "This email address was not found": "Sähköpostiosoitetta ei löytynyt", + "The remote side failed to pick up": "Toinen osapuoli ei vastannut", + "This room has no local addresses": "Tällä huoneella ei ole paikallista osoitetta", + "This room": "Tämä huone", + "This room is not accessible by remote Matrix servers": "Tähän huoneeseen ei voi päästä ulkopuolisilta Matrix-palvelimilta", + "This room's internal ID is": "Huoneen sisäinen tunniste on", + "Unban": "Poista porttikielto", + "Undecryptable": "Salauksen purku ei ole mahdollista", + "Unencrypted room": "Salaamaton huone", + "unencrypted": "salaamaton", + "Unencrypted message": "Salaamaton viesti", + "unknown caller": "tuntematon soittaja", + "unknown device": "tuntematon laite", + "Unknown room %(roomId)s": "Tuntematon huone %(roomId)s", + "Unknown (user, device) pair:": "Tuntematon (käyttäjä, laite) -pari:", + "Unmute": "Poista mykistys", + "Unnamed Room": "Nimeämätön huone", + "Unrecognised command:": "Tuntematon komento:", + "Unrecognised room alias:": "Tuntematon huonealias:", + "Unverified": "Varmentamaton", + "Uploading %(filename)s and %(count)s others": { + "zero": "Ladataan %(filename)s", + "one": "Ladataan %(filename)s ja %(count)s muuta", + "other": "Ladataan %(filename)s ja %(count)s muuta" + }, + "Blacklisted": "Estetyt", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s muuti huoneen nimeksi %(roomName)s.", + "Drop here to tag %(section)s": "Pudota tähän tägätäksesi %(section)s", + "Enable automatic language detection for syntax highlighting": "Ota automaattinen kielentunnistus käyttöön koodin väritystä varten", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Salatut viestit eivät näy ohjelmissa joissa salaus ei ole vielä implementoitu", + "%(senderName)s ended the call.": "%(senderName)s lopetti puhelun.", + "Guest access is disabled on this Home Server.": "Vierailijat on estetty tällä kotipalvelimella.", + "Guests cannot join this room even if explicitly invited.": "Vierailijat eivät voi liittyä tähän huoneeseen vaikka heidät on eksplisiittisesti kutsuttu.", + "Hangup": "Lopeta", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Piilota liittymis-/poistumisviestit (ei koske kutsuja/poistamisia/porttikieltoja)", + "Historical": "Vanhat", + "Home": "Etusivu", + "Invalid file%(extra)s": "Virheellinen tiedosto%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s kutsui käyttäjän %(targetName)s.", + "%(displayName)s is typing": "%(displayName)s kirjoittaa", + "none": "Ei mikään", + "No devices with registered encryption keys": "Ei laitteita joilla rekisteröityjä salausavaimia", + "No users have specific privileges in this room": "Kellään käyttäjällä ei ole erityisiä oikeuksia", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s soitti %(callType)spuhelun.", + "Remove %(threePid)s?": "Poista %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s pyysi VoIP konferenssia.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s asetti näyttönimekseen %(displayName)s.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Tiedosto ‘%(fileName)s’ ylittää tämän kotipalvelimen maksimitiedostokoon", + "The file '%(fileName)s' failed to upload": "Tiedoston ‘%(fileName)s’ lataaminen epäonnistui", + "This Home Server does not support login using email address.": "Kotipalvelin ei tue kirjatumista sähköpostiosoitteen avulla.", + "This invitation was sent to an email address which is not associated with this account:": "Kutsu lähetettiin sähköpostiosoitteeseen jota ei ole liitetty tähän tiliin:", + "This room is not recognised.": "Huonetta ei tunnistettu.", + "These are experimental features that may break in unexpected ways": "Nämä ovat kokeellisia ominaisuuksia jotka saattavat toimia ennakoimattomilla tavoilla", + "This doesn't appear to be a valid email address": "Olemassa olevan historian näkyvyys ei muutu", + "This is a preview of this room. Room interactions have been disabled": "Tämä on huoneen ennakokatselu. Vuorovaikutus ei ole mahdollista", + "This phone number is already in use": "Puhelinnumero on jo käytössä", + "To link to a room it must have an address.": "Linkittääksesi tähän huoneseen sillä on oltava osoite.", + "Turn Markdown off": "Ota Markdown pois käytöstä", + "Turn Markdown on": "Ota Markdown käyttöön", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s otti päästä päähän-salauksen käyttöön (algoritmi %(algorithm)s).", + "Username invalid: %(errMessage)s": "Virheellinen käyttäjänimi: %(errMessage)s", + "Users": "Käyttäjät", + "Verification": "Varmennus", + "verified": "varmennettu", + "Verified": "Varmennettu", + "Verified key": "Varmennusavain", + "Video call": "Videopuhelu", + "Voice call": "Äänipuhelu", + "VoIP conference finished.": "VoIP konferenssi loppui.", + "VoIP conference started.": "VoIP konferenssi alkoi.", + "VoIP is unsupported": "VoIP ei ole tuettu", + "(no answer)": "(ei vastausta)", + "(unknown failure: %(reason)s)": "(tuntematon virhe: %(reason)s)", + "(warning: cannot be disabled again!)": "(varoitus: ei voida ottaa pois käytöstä enää!)", + "Warning!": "Varoitus!", + "Who can access this room?": "Keillä on pääsy tähän huoneeseen?", + "Who can read history?": "Kuka pystyy lukemaan historian?", + "Who would you like to add to this room?": "Kenet sinä haluaisit lisätä tähän huoneeseen?", + "Who would you like to communicate with?": "Kenen kanssa haluaisit kommunikoida?", + "Would you like to accept or decline this invitation?": "Haluatko hyväksyä vai hylätä kutsun?", + "You already have existing direct chats with this user:": "Sinulla on jo keskusteluja käynnissä tämän käyttäjän kanssa:", + "You are already in a call.": "Sinulla on jo puhelu käynnissä.", + "You are not in this room.": "Sinä et ole tässä huoneessa.", + "You do not have permission to do that in this room.": "Sinulla ei ole oikeutta tehdä tuota tässä huoneessa.", + "You are trying to access %(roomName)s.": "Yrität liittyä huoneeseen %(roomName)s.", + "You cannot place a call with yourself.": "Et voi soittaa itsellesi.", + "You cannot place VoIP calls in this browser.": "Et voi soittaa VoIP puheluita tällä selaimella.", + "You do not have permission to post to this room": "Sinulla ei ole oikeutta kirjoittaa tässä huoneessa", + "You have been banned from %(roomName)s by %(userName)s.": "Käyttäjä %(userName)s on antanut sinulle porttikiellon huoneeseen %(roomName)s.", + "You have been invited to join this room by %(inviterName)s": "Käyttäjä %(inviterName)s on kutsunut sinut tähän huoneeseen", + "You have been kicked from %(roomName)s by %(userName)s.": "Käyttäjä %(userName)s on poistanut sinut huoneesta %(roomName)s.", + "You have disabled URL previews by default.": "Olet oletusarvoisesti ottanut URL esikatselut pois käytöstä.", + "You have enabled URL previews by default.": "Olet oletusarvoisesti ottanut URL esikatselut käyttöön.", + "You have no visible notifications": "Sinulla ei ole näkyviä ilmoituksia", + "You must register to use this functionality": "Sinun pitää rekisteröityä käyttääksesi tätä toiminnallisuutta", + "You need to be able to invite users to do that.": "Sinun pitää pystyä kutsua käyttäjiä voidaksesi tehdä tuon.", + "You need to be logged in.": "Sinun pitää olla kirjautunut.", + "You need to enter a user name.": "Sinun pitää syöttää käyttäjänimi.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Sinun sähköpostiosoitteesi ei vaikuta olevan liitetty mihinkään Matrixtunnisteeseen tällä kotipalvelimella.", + "Your password has been reset": "Salasanasi on palautettu", + "You should not yet trust it to secure data": "Sinun ei vielä kannata luottaa siihen turvataksesi dataa", + "Your home server does not support device management.": "Kotipalvelimesi ei tue laitteiden hallintaa.", + "Sun": "Su", + "Mon": "Ma", + "Tue": "Ti", + "Wed": "Ke", + "Thu": "To", + "Fri": "Pe", + "Sat": "La", + "Set a display name:": "Aseta näyttönimi:", + "This server does not support authentication with a phone number.": "Tämä palvelin ei tue autentikointia puhelinnumeron avulla.", + "Missing password.": "Salasana puuttuu.", + "Passwords don't match.": "Salasanat eivät täsmää.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Salasana on liian lyhyt (minimi %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Tämä ei näytä oikealta sähköpostiosoitteelta.", + "This doesn't look like a valid phone number.": "Tämä ei näytä oikealta puhelinnumerolta.", + "An unknown error occurred.": "Tuntematon virhe.", + "I already have an account": "Minulla on jo tili", + "An error occurred: %(error_string)s": "Virhe: %(error_string)s", + "Topic": "Aihe", + "Make this room private": "Tee tästä huoneesta yksityinen", + "Share message history with new users": "Jaa viestihistoria uusille käyttäjille", + "Encrypt room": "Salaa huone", + "There are no visible files in this room": "Tässä huoneessa ei tiedostoja näkyvissä", + "Room": "Huone", + "Copied!": "Kopioitu!", + "Failed to copy": "Kopiointi epäonnistui", + "Connectivity to the server has been lost.": "Yhteys palvelimeen menetettiin.", + "Sent messages will be stored until your connection has returned.": "Lähetetyt viestit tallennetaan kunnes yhteys on taas muodostettu.", + "(~%(count)s results)": { + "one": "(~%(count)s tulos)", + "other": "(~%(count)s tulosta)" + }, + "Active call": "Aktiivinen puhelu", + "bold": "lihavoitu", + "italic": "kursiivi", + "strike": "ylivedetty", + "underline": "alleviivattu", + "code": "koodi", + "quote": "sitaatti", + "bullet": "lista", + "numbullet": "numeroitu lista", + "Please select the destination room for this message": "Ole hyvä ja valitse vastaanottava huone tälle viestille", + "New Password": "Uusi salasana", + "Start automatically after system login": "Käynnistä automaattisesti käyttöjärjestelmään kirjautumisen jälkeen", + "Desktop specific": "Työpöytäkäytön asetukset", + "Analytics": "Analytiikka", + "Options": "Valinnat", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot kerää anonyymisti tilastoja jotta voimme parantaa ohjelmistoa.", + "Passphrases must match": "Salasanojen on täsmättävä", + "Passphrase must not be empty": "Salasana ei saa olla tyhjä", + "Export room keys": "Vie huoneen avaimet", + "Confirm passphrase": "Varmista salasana", + "Import room keys": "Tuo huoneen avaimet", + "File to import": "Tiedosto", + "You must join the room to see its files": "Sinun pitää liittyä huoneeseen voidaksesi nähdä sen sisältämät tiedostot", + "Reject all %(invitedRooms)s invites": "Hylkää kaikki %(invitedRooms)s kutsut", + "Start new chat": "Aloita uusi keskustelu", + "Failed to invite": "Kutsu epäonnistui", + "Failed to invite user": "Käyttäjän kutsuminen epäonnistui", + "Failed to invite the following users to the %(roomName)s room:": "Seuraavian käyttäjien kutsuminen huoneeseen %(roomName)s epäonnistui:", + "Confirm Removal": "Varmista poistaminen", + "Unknown error": "Tuntematon virhe", + "Incorrect password": "Virheellinen salasana", + "Device name": "Laitenimi", + "Device Name": "Laitenimi", + "Device key": "Laiteavain", + "In future this verification process will be more sophisticated.": "Tulevaisuudessa tämä varmennusprosessi tulee olemaan hienostuneempi.", + "Verify device": "Varmenna laite", + "I verify that the keys match": "Totean että avaimet vastaavat toisiaan", + "Unable to restore session": "Istunnon palautus epäonnistui", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s poisti huoneen nimen.", + "Changes to who can read history will only apply to future messages in this room": "Muutokset koskien ketkä voivat lukea historian koskevat vain uusia viestejä", + "Click here to join the discussion!": "Paina tästä liittyäksesi keskusteluun", + "%(count)s new messages": { + "one": "%(count)s uusi viesti", + "other": "%(count)s uutta viestiä" + }, + "Curve25519 identity key": "Curve25519 tunnistusavain", + "Decrypt %(text)s": "Pura %(text)s", + "Devices will not yet be able to decrypt history from before they joined the room": "Laitteet eivät vielä pysty purkamaan viestejä ajalta ennen kun ne liittyivät huoneseen", + "Displays action": "Näyttää toiminnan", + "Don't send typing notifications": "Älä lähetä kirjoitusilmoituksia", + "End-to-end encryption is in beta and may not be reliable": "Päästä päähän salaus on vielä testausvaiheessa ja saattaa toimia epävarmasti", + "Error: Problem communicating with the given homeserver.": "Virhe: Ongelma yhteydenpidossa kotipalvelimeen.", + "Existing Call": "Käynnissä oleva puhelu", + "Join as voice or video.": "Liity käyttäen ääntä tai videota.", + "%(targetName)s joined the room.": "%(targetName)s liittyi huoneeseen.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s poisti käyttäjän %(targetName)s huoneesta.", + "%(targetName)s left the room.": "%(targetName)s poistui huoneesta.", + "Publish this room to the public in %(domain)s's room directory?": "Julkaise tämä huone domainin %(domain)s huoneluettelossa?", + "Missing room_id in request": "room_id puuttuu kyselystä", + "Missing user_id in request": "user_id puuttuu kyselystä", + "Never send encrypted messages to unverified devices from this device": "Älä koskaa lähetä salattuja viestejä varmentamattomiin laitteisiin tältä laitteelta", + "Never send encrypted messages to unverified devices in this room from this device": "Älä koskaa lähetä salattuja viestejä varmentamattomiin laitteisiin tässä huoneessa tältä laitteelta", + "New address (e.g. #foo:%(localDomain)s)": "Uusi osoite (esim. #foo:%(localDomain)s)", + "Press to start a chat with someone": "Paina ", + "Revoke Moderator": "Poista moderaattorioikeudet", + "Refer a friend to Riot:": "Suosittele Riot ystävälle:", + "%(targetName)s rejected the invitation.": "%(targetName)s hylkäsi kutsun.", + "Remote addresses for this room:": "Tämän huoneen etäosoitteet:", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s poisti näyttönimensä (%(oldDisplayName)s).", + "Riot does not have permission to send you notifications - please check your browser settings": "Riotilla ei ole oikeuksia lähettää sinulle ilmoituksia. Ole hyvä ja tarkista selaimen asetukset", + "Riot was not given permission to send notifications - please try again": "Riotilla ei saannut oikeuksia lähettää ilmoituksia. Ole hyvä ja yritä uudelleen", + "Room %(roomId)s not visible": "Huone %(roomId)s ei ole näkyvissä", + "%(roomName)s does not exist.": "%(roomName)s ei ole olemassa.", + "%(roomName)s is not accessible at this time.": "%(roomName)s ei ole saatavilla tällä hetkellä.", + "Seen by %(userName)s at %(dateTime)s": "Käyttäjän %(userName)s näkemä %(dateTime)s", + "Send Reset Email": "Lähetä salasanan palautusviesti", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s lähetti kuvan.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s lähetti kutsun käyttäjälle %(targetDisplayName)s liittyäkseen huoneeseen.", + "Server may be unavailable or overloaded": "Palvelin saattaa olla saavuttamattomissa tai ylikuormitettu", + "Show Text Formatting Toolbar": "Näytä tekstinmuotoilupalkki", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Näytä aikaleimat 12h muodossa (esim. 2:30pm)", + "Signed Out": "Uloskirjautunut", + "Start authentication": "Aloita tunnistus", + "Success": "Onnistuminen", + "Tagged as: ": "Tägit: ", + "The default role for new room members is": "Huoneen uusien jäsenten oletusrooli on", + "The main address for this room is": "Tämän huoneen pääosoite on", + "The phone number entered looks invalid": "Syötetty puhelinnumero näyttää virheelliseltä", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Syöttämäsi allekirjoitusavain vastaa käyttäjän %(userId)s laitteelta %(deviceId)s saamaasi allekirjoitusavainta. Laite on merkitty varmennetuksi.", + "Unable to add email address": "Sähköpostiosoitteen lisääminen epäonnistui", + "Unable to remove contact information": "Yhteystietojen poistaminen epäonnistui", + "Unable to verify email address.": "Sähköpostin varmentaminen epäonnistui.", + "Unbans user with given id": "Poistaa porttikiellon annetun ID:n omaavalta käyttäjältä", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s poisti porttikiellon käyttäjältä %(targetName)s.", + "Unable to capture screen": "Ruudun kaappaus epäonnistui", + "Unable to enable Notifications": "Ilmoitusten käyttöönotto epäonnistui", + "Unable to load device list": "Laitelistan lataaminen epäonnistui", + "Upload Failed": "Lataus epäonnistui", + "Upload Files": "Lataa tiedostoja", + "Upload file": "Lataa tiedosto", + "Upload new:": "Lataa uusi:", + "Usage": "Käyttö", + "Use compact timeline layout": "Käytä kompaktia aikajanaa", + "Use with caution": "Käytä varoen", + "User ID": "Käyttäjätunniste", + "User Interface": "Käyttöliittymä", + "User name": "Käyttäjänimi", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s asetti aiheeksi \"%(topic)s\".", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Salasanan muuttaminen uudelleenalustaa myös päästä päähän-salausavaimet kaikilla laitteilla, jolloin vanhojen viestien lukeminen ei ole enään mahdollista, ellet ensin vie huoneavaimet ja tuo ne takaisin jälkeenpäin. Tämä tulee muuttumaan tulevaisuudessa.", + "Define the power level of a user": "Määritä käyttäjän oikeustaso", + "Failed to change power level": "Oikeustason muuttaminen epäonnistui", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' ei ole oikean muotoinen osoitteelle", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ei ole oikean muotoinen aliakselle", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Ole hyvä ja tarkista sähköpostisi ja seuraa sen sisältämää linkkiä. Kun olet valmis, paina jatka.", + "Power level must be positive integer.": "Oikeustason pitää olla positiivinen kokonaisluku.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Salasanan uudelleenalustus uudelleenalustaa myös päästä päähän-salausavaimet kaikilla laitteilla, jolloin vanhojen viestien lukeminen ei ole enään mahdollista, ellet ensin vie huoneavaimet ja tuo ne takaisin jälkeenpäin. Tämä tulee muuttumaan tulevaisuudessa.", + "Server may be unavailable, overloaded, or search timed out :(": "Palvelin saattaa olla saavuttamattomissa, ylikuormitettu tai haku kesti liian kauan :(", + "Server may be unavailable, overloaded, or the file too big": "Palvelin saattaa olla saavuttamattomissa, ylikuormitettu, tai tiedosto on liian suuri", + "Server may be unavailable, overloaded, or you hit a bug.": "Palvelin saattaa olla saavuttamattomissa, ylikuormitettu tai olet törmännyt virheeseen.", + "Server unavailable, overloaded, or something else went wrong.": "Palvelin on saavuttamattomissa, ylikuormitettu tai jokin muu meni vikaan.", + "The email address linked to your account must be entered.": "Sinun pitää syöttää tiliisi liitetty sähköpostiosoite.", + "The visibility of existing history will be unchanged": "Olemassaolevan viestihistorian näkyvyys ei muutu", + "To get started, please pick a username!": "Valitse käyttäjänimi aloittaaksesi!", + "To use it, just wait for autocomplete results to load and tab through them.": "Käyttääksesi sitä odota vain automaattitäydennyksiä ja selaa niiden läpi.", + "To reset your password, enter the email address linked to your account": "Syötä tiliisi liitetty sähköpostiosoite uudelleenalustaaksesi salasanasi", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Aikajanan tietty hetki yritettiin ladata, mutta sinulla ei ole oikeutta nähdä kyseistä viestiä.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Aikajanan tietty hetki yritettiin ladata, mutta se ei löytynyt.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Ei ole mahdollista varmistaa että sähköposti johon tämä kutsu lähetettiin vastaa sinun tiliisi liittettyä osoitetta.", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (oikeustaso %(powerLevelNumber)s)", + "Verification Pending": "Varmennus on vireillä", + "(could not connect media)": "(mediaa ei voitu yhdistää)", + "WARNING: Device already verified, but keys do NOT MATCH!": "VAROITUS: Laite on jo varmennettu mutta avaimet eivät vastaa toisiaan!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VAROITUS: AVAIMEN VARMENNUS EPÄONNISTUI! Käyttäjän %(userId)s ja laitteen %(deviceId)s allekirjoitusavain on \"%(fprint)s\" joka ei vastaa annettua avainta \"%(fingerprint)s\". Tämä saattaa tarkoittaa että viestintäsi siepataan!", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s veti takaisin käyttäjän %(targetName)s kutsun.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Et ole vielä missään huoneessa! Paina luodaksesi huoneen tai selatakseski hakemistoa", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Sinut on kirjattu ulos kaikista laitteista etkä enää saa Push-ilmoituksia. Jotta saisit jälleen ilmoituksia pitää sinun jälleen kirjautua sisään jokaisella laitteella", + "You may wish to login with a different account, or add this email to this account.": "Haluat ehkä kirjautua toiseen tiliin tai lisätä tämä sähköpostiosoite tähän tiliin.", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Salasanan muuttaminen onnistui. Et saa enää push-ilmoituksia muilla laitteilla kunnes olet uudelleen kirjautunut sisään niillä", + "You seem to be in a call, are you sure you want to quit?": "Sinulla näyttää olevan puhelu kesken. Haluatko varmasti lopettaa?", + "You seem to be uploading files, are you sure you want to quit?": "Näytät lataavan tiedostoja. Oletko varma että haluat lopettaa?", + "Jan": "tammikuu", + "Feb": "helmikuu", + "Mar": "maaliskuu", + "Apr": "huhtikuu", + "May": "toukokuu", + "Jun": "kesäkuu", + "Jul": "heinäkuu", + "Aug": "elokuu", + "Sep": "syyskuu", + "Oct": "lokakuu", + "Nov": "marraskuu", + "Dec": "joulukuu", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Käyttäjänimet voivat sisältää vain kirjaimia, numeroita, pisteitä, viivoja ja alaviivoja.", + "To continue, please enter your password.": "Ole hyvä ja syötä salasanasi jatkaaksesi.", + "Verifies a user, device, and pubkey tuple": "Varmentaa käyttäjän, laitteen ja julkisen avaimen kolmikon", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" sisältä laitteita joita et ole nähnyt aikaisemmin.", + "Unknown devices": "Tuntemattomia laitteita", + "Unknown Address": "Tuntematon osoite", + "Unverify": "Kumoa varmennus", + "Verify...": "Varmenna...", + "ex. @bob:example.com": "esim. @bob:example.com", + "Add User": "Lisää käyttäjä", + "This Home Server would like to make sure you are not a robot": "Tämä kotipalvelin haluaa varmistaa että et ole robotti", + "Please enter the code it contains:": "Ole hyvä ja syötä sen sisältämä koodi:", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Jos et syötä sähköpostiosoitetta et voi uudelleenalustaa salasanasi myöhemmin. Oletko varma?", + "Default server": "Oletuspalvelin", + "Home server URL": "Kotipalvelimen URL", + "Identity server URL": "Identiteettipalvelimen URL", + "What does this mean?": "Mitä tämä tarkoittaa?", + "Error decrypting audio": "Äänen salauksen purku epäonnistui", + "Error decrypting image": "Kuvan salauksen purku epäonnistui", + "Error decrypting video": "Videon salauksen purku epäonnistui", + "Add an Integration": "Lisää integraatio", + "Removed or unknown message type": "Poistettu tai tuntematon viestityyppi", + "URL Previews": "URL esikatselut", + "Drop file here to upload": "Pudota tiedosto tähän ladataksesi sen palvelimelle", + " (unsupported)": " (ei tuettu)", + "Updates": "Päivitykset", + "Check for update": "Tarkista päivitykset", + "Start chatting": "Aloita keskustelu", + "Start Chatting": "Aloita keskustelu", + "Click on the button below to start chatting!": "Paina nappia alla aloittaaksesi keskustelu!", + "Username available": "Käyttäjänimi saatavissa", + "Username not available": "Käyttäjänimi ei ole saatavissa", + "Something went wrong!": "Jokin meni vikaan!", + "This will be your account name on the homeserver, or you can pick a different server.": "Tämä on tilisi -kotipalvelimella, tai voit valita toisen palvelimen.", + "If you already have a Matrix account you can log in instead.": "Jos sinulla on jo Matrix-tili voit kirjautua.", + "Your browser does not support the required cryptography extensions": "Selaimesi ei tue vaadittuja kryptografisia laajennuksia", + "Not a valid Riot keyfile": "Virheellinen Riot avaintiedosto", + "Authentication check failed: incorrect password?": "Autentikointi epäonnistui: virheellinen salasana?", + "Do you want to set an email address?": "Haluatko asettaa sähköpostiosoitteen?", + "This will allow you to reset your password and receive notifications.": "Tämä sallii sinun uudelleenalustaa salasanasi ja vastaanottaa ilmoituksia.", + "To return to your account in future you need to set a password": "Päästäksesi uudestaan tiliisi myöhemmin sinun täytyy asettaa salasana", + "Skip": "Hyppää yli", + "Start verification": "Aloita varmennus", + "Share without verifying": "Jaa ilman varmennusta", + "Ignore request": "Jätä pyyntö huomioimatta", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Lisäsit laitteen '%(displayName)s' joka pyytää salausavaimia.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Sinun varmentamaton laitteesi '%(displayName)s' pyytää salausavaimia.", + "Encryption key request": "Salausavainpyyntö", + "Loading device info...": "Ladataan laitetiedot...", + "Example": "Esimerkki", + "Create": "Luo", + "Failed to upload image": "Kuvan lataaminen epäonnistui", + "Robot check is currently unavailable on desktop - please use a web browser": "Robottitarkistus ei tällä hetkellä toimi työpöytäversiossa. Ole hyvä ja käytä nettiselainta", + "Add a widget": "Lisää sovelma", + "Cannot add any more widgets": "Lisää sovelmia ei voida enää lisätä", + "Delete widget": "Poista sovelma", + "Do you want to load widget from URL:": "Haluatko ladata sovelman URL-osoitteesta:", + "The maximum permitted number of widgets have already been added to this room.": "Maksimimäärä sovelmia on jo lisätty tähän huoneeseen.", + "Unable to create widget.": "Sovelman luominen epäonnistui.", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Et voi kumota tätä toimintoa koska olet antamassa käyttäjälle saman oikeustason kuin sinullakin on.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Tämä prosessi mahdollistaa salatuissa huoneissa vastaanottamasi viestien salausavainten vieminen tiedostoon. Voit sitten myöhemmin tuoda ne toiseen Matrix-asiakasohjelmaan niin että myös se ohjema voi purkaa viestit.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Tämän tiedoston avulla kuka tahansa pystyy purkamaan kaikki salatut viestit jotka sinä voit nähdä, joten sinun täytyy säilyttää se turvallisesti. Helpottaaksesi tätä sinun pitäisi syötää salasana alla jonka avulla tiedosto salataan. Käyttäen samaa salasanaa voit myöhemmin tuoda tiedot ohjelmaan.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Tämä prosessi mahdollistaa aiemmin tallennettujen salausavainten tuominen toiseen Matrix-asiakasohjelmaan. Tämän jälkeen voit purkaa kaikki salatut viestit jotka toinen asiakasohjelma pystyisi purkamaan.", + "Who would you like to add to this community?": "Kenet sinä haluaisit lisätä tähän yhteisöön?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varioitus: henkilöt jotka lisäät yhteisöön näkyvät kaikille jotka tietävät yhteisön tunnisteen", + "Invite new community members": "Kutsu uusia jäsenia yhteisöön", + "Name or matrix ID": "Nimi tai Matrix ID", + "Invite to Community": "Kutsu yhteisöön", + "Which rooms would you like to add to this community?": "Mitkä huoneet haluaisit listätä tähän yhteisöön?", + "Show these rooms to non-members on the community page and room list?": "Näytetäänkö nämä huoneet ei-jäsenille yhteisön sivulla ja huonelistassa?", + "Add rooms to the community": "Lisää huoneita tähän yhteisöön", + "Room name or alias": "Huoneen nimi taj alias", + "Add to community": "Lisää yhteisöön", + "Failed to invite the following users to %(groupId)s:": "Seuraavien käyttäjien kutsuminen ryhmään %(groupId)s epäonnistui:", + "Failed to invite users to community": "Käyttäjien kutsuminen yhteisöön epäonnostui", + "Failed to invite users to %(groupId)s": "Käyttäjien kutsuminen yhteisöön %(groupId)s epäonnistui", + "Failed to add the following rooms to %(groupId)s:": "Seiraavien huoneiden lisääminen yhteisöön %(groupId)s epäonnistui:", + "Restricted": "Rajoitettu", + "You are now ignoring %(userId)s": "Et enää huomioi käyttäjää %(userId)s", + "You are no longer ignoring %(userId)s": "Huomioit jälleen käyttäjän %(userId)s", + "%(senderName)s removed their profile picture.": "%(senderName)s poisti profiilikuvansa.", + "%(senderName)s set a profile picture.": "%(senderName)s asetti profiilikuvan.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s muutti tulevat viestit näkyviksi kaikille huoneen jäsenille, alkaen kutsusta huoneeseen.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s teki tulevan huonehistorian näkyväksi kaikille huoneen jäsenille, liittymisestä asti.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s teki tulevan huonehistorian näkyväksi kaikille huoneen jäsenille.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s teki tulevan huonehistorian näkyväksi kaikille.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s teki tulevan huonehistorian näkyväksi tuntemattomalle (%(visibility)s).", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s muutti tämän huoneen kiinnitetyt viestit.", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s ja %(count)s muuta kirjoittavat", + "one": "%(names)s ja yksi muu kirjoittvat" + }, + "Message Pinning": "Kiinnitetyt viestit", + "Disable Emoji suggestions while typing": "Ota pois käytöstä emojiehdotukset kirjoittaessa", + "Hide avatar changes": "Piilota avatarmuutokset", + "Hide display name changes": "Piilota näyttönimimuutokset", + "Hide avatars in user and room mentions": "Piilota avatarit käyttäjä- ja huonemaininnoissa", + "Disable big emoji in chat": "Ota isot emojit pois käytöstä", + "Automatically replace plain text Emoji": "Korvaa automaattisesti teksimuotoiset emojit", + "Mirror local video feed": "Peilaa paikallinen videosyöte", + "Disable Peer-to-Peer for 1:1 calls": "Ota pois käytöstä suora P2P yhteys 1:1 puheluissa", + "Enable inline URL previews by default": "Ota URL esikatselu käyttöön oletusarvoisesti", + "Enable URL previews for this room (only affects you)": "Ota URL esikatselut käyttöön tässä huoneessa (koskee ainoastaan sinua)", + "Enable URL previews by default for participants in this room": "Ota URL esikatselu käyttöön kaikille huoneen jäsenille", + "%(senderName)s sent an image": "%(senderName)s lähetti kuvan", + "%(senderName)s sent a video": "%(senderName)s lähetti videon", + "%(senderName)s uploaded a file": "%(senderName)s latasi tiedoston", + "Disinvite this user?": "Peru tämän käyttäjän kutsu?", + "Kick this user?": "Poista tämä käyttäjä?", + "Unban this user?": "Poista tämän käyttäjän porttikielto?", + "Ban this user?": "Anna porttikielto tälle käyttäjälle?", + "Unignore": "Huomioi käyttäjä jälleen", + "Ignore": "Jätä käyttäjä huomioimatta", + "Jump to read receipt": "Hyppää lukukuittakseen", + "Mention": "Mainitse", + "Invite": "Kutsu", + "User Options": "Käyttäjä-asetukset", + "Make Moderator": "Anna moderaattorioikeudet", + "Admin Tools": "Ylläpitotyökalut", + "Unpin Message": "Poista viestin kiinnitys", + "Jump to message": "Hyppää viestiin", + "No pinned messages.": "Ei kiinnitettyjä viestejä.", + "Loading...": "Lataa...", + "Pinned Messages": "Kiinnitetyt viestit", + "Unnamed room": "Nimetön huone", + "World readable": "Täysin julkinen", + "Guests can join": "Vierailijat voivat liittyä", + "No rooms to show": "Ei huoneita", + "Failed to set avatar.": "Avatarin asettaminen epäonnistui.", + "Upload avatar": "Lataa avatar", + "Remove avatar": "Poista avatar", + "Drop here to favourite": "Pudota tähän lisätäksesi suosikkeihin", + "Drop here to tag direct chat": "Pudota tähän merkitäksesi suoraksi viestittelyksi", + "Drop here to restore": "Pudota tähän palauttaaksesi", + "Drop here to demote": "Pudota tähän antaaksesi alhaisen prioriteetin", + "Community Invites": "Yhteisökutsut", + "You have been kicked from this room by %(userName)s.": "%(userName)s on poistanut sinut tästä huoneesta.", + "You have been banned from this room by %(userName)s.": "%(userName)s on antanut sinulle porttikiellon tähän huoneeseen.", + "You are trying to access a room.": "Yrität liittyä huoneeseen.", + "Banned by %(displayName)s": "%(displayName)s antanut porttikiellon", + "Privileged Users": "Etuoikeutetut käyttäjät", + "Members only (since the point in time of selecting this option)": "Vain jäsenet (tämän valinnat tekemisestä lähtien)", + "Members only (since they were invited)": "Vain jäsenet (heidän kutsustaan lähtien)", + "Members only (since they joined)": "Vain jäsenet (heidän liittymisestään lähtien)", + "To send messages, you must be a": "Voidaksesi ähettääksesi viestejä sinun tulee olla", + "To invite users into the room, you must be a": "Voidaksesi kutsua käyttäjiä huoneseen tulee sinun olla", + "To configure the room, you must be a": "Voidaksesi muokata huoneen asetuksia sinun tulee olla", + "To kick users, you must be a": "Voidaksesi poistaa käyttäjiä huoneesta sinun tulee olla", + "To ban users, you must be a": "Voidaksesi antaa porttikieltoja huoneeseen sinun tulee olla", + "To remove other users' messages, you must be a": "Voidaksesi poistaa muiden käyttäjien viestejä sinun tulee olla", + "To send events of type , you must be a": "Voidaksesi lähettää -tyypin viestejä sinun tulee olla", + "Invalid community ID": "Virheellinen yhteistötunniste", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' on virheellinen yhteisötunniste", + "New community ID (e.g. +foo:%(localDomain)s)": "Uusi yhteisötunniste (esim. +foo:%(localDomain)s)", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s muutti huoneen %(roomName)s avatarin", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s poisti huoneen avatarin.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s vaihtoi huoneen kuvaksi ", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Sinut ohjataan kolmannen osapuolen sivustolle jotta voit autentikoida tilisi käyttääksesi %(integrationsUrl)s. Haluatko jatkaa?", + "Message removed by %(userId)s": "Käyttäjän %(userId)s poistama viesti", + "Message removed": "Viesti poistettu", + "Sign in with CAS": "Kirjaudu käyttäen CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Voit kirjautua toiselle Matrix kotipalvelimelle syöttämällä palvelimen URL-osoite palvelinasetuksissa.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Tämä mahdollistaa tämän ohjelman käytön olemassa olevan toisella palvelimella sijaitsevan Matrix tilin kanssa.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Voit myös käyttää toista identiteettipalvelinta mutta tyypillisesti tämä estää sähköpostiosoitteisiin perustuvan kanssakäynnin muiden käyttäjien kanssa.", + "An email has been sent to %(emailAddress)s": "Viesti lähetetty osoitteeseen %(emailAddress)s", + "Please check your email to continue registration.": "Ole hyvä ja tarkista sähköpostisi jatkaaksesi.", + "A text message has been sent to %(msisdn)s": "Tekstiviesti on lähetetty numeroon %(msisdn)s", + "Username on %(hs)s": "Käyttäjänimi palvelimella %(hs)s", + "Custom server": "Muu palvelin", + "Remove from community": "Poista yhteisöstä", + "Disinvite this user from community?": "Peruta tämän käyttäjän kutsu yhteisöön?", + "Remove this user from community?": "Poista tämä käyttäjä yhteisöstä?", + "Failed to withdraw invitation": "Kutsun peruminen epäonnistui", + "Failed to remove user from community": "Käyttäjän poistaminen yhteisöstä epäonnistui", + "Filter community members": "Suodata yhteisön jäsenet", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Oletko varma että haluat poistaa '%(roomName)s' yhteisöstä %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Huoneen poistaminen yhteisöstä poistaa sen myös yhteisösivulta.", + "Failed to remove room from community": "Huoneen poistaminen yhteisöstä epäonnistui", + "Failed to remove '%(roomName)s' from %(groupId)s": "Huoneen '%(roomName)s' poistaminen yhteisöstä %(groupId)s epäonnistui", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Huoneen '%(roomName)s' näkyvyys yhteisössä %(groupId)s ei voitu päivittää.", + "Visibility in Room List": "Näkyvyys huoneluettelossa", + "Visible to everyone": "Näkyy kaikille", + "Only visible to community members": "Vain näkyvä yhteisön jäsenille", + "Filter community rooms": "Suodata yhteisön huoneet", + "Communities": "Yhteisöt", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "were unbanned %(count)s times": { + "other": "porttikiellot poistettiin %(count)s kertaa", + "one": "estoi poistettiin" + }, + "And %(count)s more...": { + "other": "Ja %(count)s lisää..." + }, + "Matrix ID": "Matrix ID", + "Matrix Room ID": "Matrix huonetunniste", + "email address": "sähköpostiosoite", + "Try using one of the following valid address types: %(validTypesList)s.": "Kokeile käyttää yhtä näistä valideista osoitetyypeistä: %(validTypesList)s.", + "You have entered an invalid address.": "Olet syöttänyt virheellisen sähköpostiosoitteen.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Oletko varma että haluat poistaa tämän tapahtuman? Huomaa että jos poistat huoneen nimen tai aiheen muutoksen, saattaa muutos kumoutua.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Yhteisötunnisteet voivat sisältää vain merkit a-z, 0-9 tai '=_-/'", + "Something went wrong whilst creating your community": "Jokin epäonnistui yhteisön luomisessa", + "Create Community": "Luo yhteisö", + "Community Name": "Yhteisön nimi", + "Community ID": "Yhteisötunniste", + "example": "esimerkki", + "Advanced options": "Lisäasetukset", + "Block users on other matrix homeservers from joining this room": "Salli vain tämän palvelimen käyttäjät", + "This setting cannot be changed later!": "Tätä asetusta ei voi muuttaa myöhemmin!", + "Add rooms to the community summary": "Lisää huoneita yhteisön yhteenvetoon", + "Which rooms would you like to add to this summary?": "Mitkä huoneet haluaisit lisätä tähän yhteenvetoon?", + "Add to summary": "Lisää yhteenvetoon", + "Failed to add the following rooms to the summary of %(groupId)s:": "Seuraavien huoneiden lisääminen yhteisöön %(groupId)s epäonnistui:", + "Add a Room": "Lisää huone", + "Failed to remove the room from the summary of %(groupId)s": "Huoneen poistaminen yhteisön %(groupId)s yhteenvedosta epäonnistui", + "The room '%(roomName)s' could not be removed from the summary.": "Huoneen '%(roomName)s' poistaminen yhteenvedosta epäonnistui.", + "Add users to the community summary": "Lisää käyttäjiä yhteisön yhteenvetoon", + "Who would you like to add to this summary?": "Kenet haluaisit lisätä tähän yhteenvetoon?", + "Failed to add the following users to the summary of %(groupId)s:": "Seuraavien käyttäjien lisääminen yhteisön %(groupId)s yhteenvetoon epäonnistui:", + "Add a User": "Lisää käyttäjä", + "Failed to remove a user from the summary of %(groupId)s": "Käyttäjän poistaminen yhteisöstä %(groupId)s epäonnistui", + "The user '%(displayName)s' could not be removed from the summary.": "Käyttäjän '%(displayName)s' poistaminen yhteenvedosta epäonnistui.", + "Failed to update community": "Yhteisön päivittäminen epäonnistui", + "Unable to accept invite": "Kutsun hyväksyminen epäonnistui", + "Unable to reject invite": "Kutsun hylkääminen epäonnistui", + "Leave Community": "Poistu yhteisöstä", + "Leave %(groupName)s?": "Poistu yhteisöstä %(groupName)s?", + "Leave": "Poistu", + "Community Settings": "Yhteisöasetukset", + "Add rooms to this community": "Lisää huoneita yhteisöön", + "Featured Rooms:": "Esiinnostetut huoneet:", + "Featured Users:": "Esiinnostetut käyttäjät:", + "%(inviter)s has invited you to join this community": "%(inviter)s on kutsunut sinut tähän yhteisöön", + "You are an administrator of this community": "Olet tämän yhteisön ylläpitäjä", + "You are a member of this community": "Olet tämän yhteisön jäsen", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Sinun yhteistöltäsi puuttuu pitkä kuvaus, HTML sivu joka näytetään yhteistön jäsenille.
Klikkaa tästä avataksesi asetukset luodaksesi sivun!", + "Long Description (HTML)": "Pitkä kuvaus (HTML)", + "Description": "Kuvaus", + "Community %(groupId)s not found": "Yhteisöä %(groupId)s ei löytynyt", + "This Home server does not support communities": "Tämä kotipalvelin ei tue yhteisöjä", + "Failed to load %(groupId)s": "Yhteisön %(groupId)s lataaminen epäonnistui", + "Your Communities": "Sinun yhteistösi", + "You're not currently a member of any communities.": "Et ole minkään yhteisön jäsen tällä hetkellä.", + "Error whilst fetching joined communities": "Virhe ladatessa listaa yhteistöistä joihin olet liittynyt", + "Create a new community": "Luo uusi yhteisö", + "Light theme": "Vaalea ulkoasu", + "Dark theme": "Tumma ulkoasu", + "Status.im theme": "Status.im ulkoasu", + "Autocomplete Delay (ms):": "Automaattitäydennyksen viive (ms):", + "Ignored Users": "Huomiotta jätetyt käyttäjät", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Viesti on lähetetty osoitteeseen %(emailAddress)s. Klikkaa alla sen jälkeen kun olet seurannut viestin sisältämää linkkiä.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Huomaa että olet kirjautumassa palvelimelle %(hs)s, etkä palvelimelle matrix.org.", + "Sign in to get started": "Kirjaudu aloittaksesi", + "Upload an avatar:": "Lataa avatar:", + "Deops user with given id": "Poistaa annetun tunnisteen omaavalta käyttäjältä ylläpito-oikeudet", + "Ignores a user, hiding their messages from you": "Jättää käyttäjän huomioimatta jolloin heidän viestejä ei näytetä sinulle", + "Stops ignoring a user, showing their messages going forward": "Lopettaa käyttäjän huomiotta jättämisen jolloin heidän tulevat viestit näytetään sinulle", + "Notify the whole room": "Hälytä koko huone", + "Room Notification": "Huonehälytys", + "Call Failed": "Puhelu epäonnistui", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Huoneessa on tuntemattomia laitteita: jos jatkat varmentamatta niitä, joku voi kuunnella puheluasi.", + "Review Devices": "Näytä Laitteet", + "Call Anyway": "Soita", + "Answer Anyway": "Vastaa", + "Call": "Puhelu", + "Answer": "Vastaa", + "Call Timeout": "Puhelun aikakatkaisu", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Ignored user": "Estetyt käyttäjät", + "Unignored user": "Sallitut käyttäjät", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s tasolta %(fromPowerLevel)s tasolle %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s muutettiin tehotasoa %(powerLevelDiffText)s.", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s pienoisohjelmaa muokannut %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s pienoisohjelman lisännyt %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s pienoisohjelman poistanut %(senderName)s", + "Send": "Lähetä", + "Delete %(count)s devices": { + "other": "Poista %(count)s laitetta", + "one": "Poista laite" + }, + "Select devices": "Valitse laitteet", + "Ongoing conference call%(supportedText)s.": "Menossa oleva ryhmäpuhelu %(supportedText)s.", + "%(duration)ss": "%(duration)s", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)s päivä", + "Online for %(duration)s": "Läsnä %(duration)s", + "Idle for %(duration)s": "Toimettomana %(duration)s", + "Offline for %(duration)s": "Poissa %(duration)s", + "Unknown for %(duration)s": "Tuntematon %(duration)s", + "Online": "Online", + "Idle": "Toimeton", + "Offline": "Offline", + "Unknown": "Tuntematon", + "To change the room's avatar, you must be a": "Vaihtaaksesi huoneen kuvan, sinun tulee olla", + "To change the room's name, you must be a": "Vaihtaaksesi huoneen nimen, sinun tulee olla", + "To change the room's main address, you must be a": "Vaihtaaksesi huoneen osoitteen, sinun tulee olla", + "To change the room's history visibility, you must be a": "Vaihtaaksesi huoneen historiatietojen näkyvyyttä, sinun tulee olla", + "To change the permissions in the room, you must be a": "Vaihtaaksesi huoneen oikeuksia, sinun tulee olla", + "To change the topic, you must be a": "Vaihtaaksesi huoneen aihetta, sinun tulee olla", + "To modify widgets in the room, you must be a": "Vaihtaaksesi huoneen pienoisohjelmia, sinun tulee olla", + "Addresses": "Osoitteet", + "Flair": "Tyyppi", + "Showing flair for these communities:": "Yhteisöjen tyypit:", + "This room is not showing flair for any communities": "Tälle huoneelle ei ole määritelty minkään yhteisön tyyppiä", + "URL previews are enabled by default for participants in this room.": "URL esikatselut on päällä oletusarvoisesti tämän huoneen jäsenillä.", + "URL previews are disabled by default for participants in this room.": "URL esikatselut ovat oletuksena pois päältä tämän huoneen jäsenillä.", + "Token incorrect": "Väärä tunniste", + "Flair will appear if enabled in room settings": "Tyyppi näkyy jos määritelty tämän huoneen asetuksissa", + "Flair will not appear": "Tyyppi ei näkyvissä", + "Something went wrong when trying to get your communities.": "Jokin meni pieleen haettaessa yhteisöjäsi.", + "Delete Widget": "Poista pienoisohjelma", + "Revoke widget access": "Poista pienoisohjelman oikeudet", + "Unblacklist": "Poista estolistalta", + "Blacklist": "Estolista", + "%(severalUsers)sjoined %(count)s times": { + "one": "%(severalUsers)s käyttäjää liittyi", + "other": "%(severalUsers)s liittyi %(count)s kertaa" + }, + "You are registering with %(SelectedTeamName)s": "Rekisteröidyt %(SelectedTeamName)s tiimeihin", + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s liittyi %(count)s kertaa", + "one": "%(oneUser)s liittyi" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s poistui %(count)s kertaa", + "one": "%(severalUsers)s poistui" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s poistui %(count)s kertaa", + "one": "%(oneUser)s poistui" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s liittyi ja poistui %(count)s kertaa", + "one": "%(severalUsers)s liittyi ja poistui" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s liittyi ja poistui %(count)s kertaa", + "one": "%(oneUser)s liittyi ja poistui" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s poistui ja liittyi uudelleen %(count)s kertaa", + "one": "%(severalUsers)s poistui ja liittyi uudelleen" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s poistui ja liittyi uudelleen %(count)s kertaa", + "one": "%(oneUser)s poistui ja liittyi uudelleen" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s hylkäsi kutsun %(count)s kertaa", + "one": "%(severalUsers)s hylkäsi kutsun" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s hylkäsi kutsun %(count)s kertaa", + "one": "%(oneUser)s hylkäsi kutsun" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s kutsu peruttiin %(count)s kertaa", + "one": "%(severalUsers)s kutsu peruttiin" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s kutsu peruttiin %(count)s kertaa", + "one": "%(oneUser)s kutsu peruttiin" + }, + "were invited %(count)s times": { + "other": "kutsuttiin %(count)s kertaa", + "one": "kutsuttiin" + }, + "was invited %(count)s times": { + "other": "kutsuttiin %(count)s kertaa", + "one": "kutsuttiin" + }, + "were banned %(count)s times": { + "other": "estettiin %(count)s kertaa", + "one": "estettiin" + }, + "was banned %(count)s times": { + "other": "estettiin %(count)s kertaa", + "one": "estettiin" + }, + "was unbanned %(count)s times": { + "other": "esto poistettiin %(count)s kertaa", + "one": "esto poistettiin" + }, + "were kicked %(count)s times": { + "other": "poistettiin %(count)s kertaa", + "one": "poistettiin" + }, + "was kicked %(count)s times": { + "other": "poistettiin %(count)s kertaa", + "one": "poistettiin" + }, + "expand": "laajenna", + "collapse": "supista", + "Display your community flair in rooms configured to show it.": "Näytä yhteisöjesi tyylit huoneissa joissa ominaisuus on päällä.", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Pienoisohjelman poistaminen poistaa sen kaikilta huoneen käyttäjiltä. Oletko varma että haluat poistaa pienoisohjelman?", + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s vaihtoi nimensä %(count)s kertaa", + "one": "%(severalUsers)s vaihtoi nimensä" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s vaihtoi nimensä %(count)s kertaa", + "one": "%(oneUser)s vaihtoi nimensä" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s vaihtoi pienoiskuvansa %(count)s kertaa", + "one": "%(severalUsers)s vaihtoi pienoiskuvansa" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s vaihtoi pienoiskuvansa %(count)s kertaa", + "one": "%(oneUser)s vaihtoi pienoiskuvansa" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s ja %(count)s muuta", + "one": "%(items)s ja yksi toinen" + }, + "Custom of %(powerLevel)s": "Valinnaiset %(powerLevel)s", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Varmistaaksesi että tähän laitteeseen voidaan luottaa, ole yhteydessä omistajaan jollain muulla tavalla (henkilökohtaisesti tai puhelimitse) ja pyydä heitä varmistamaan näkyykö Käyttäjäasetuksissa laite jolla on alla oleva avain:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Jos avain täsmää, valitse painike alla. Jos avain ei täsmää, niin joku muu salakuuntelee laitetta ja haluat todennäköisesti painaa estopainiketta.", + "Old cryptography data detected": "Vanhat salaustiedot havaittu", + "Warning": "Varoitus", + "Access Token:": "Pääsykoodi:", + "Fetching third party location failed": "Kolmannen osapuolen paikan haku epäonnistui", + "A new version of Riot is available.": "Uusi Riot-versio on saatavilla.", + "Couldn't load home page": "Kotisivun lataus epäonnistui", + "Send Account Data": "Lähetä tilin tiedot", + "All notifications are currently disabled for all targets.": "Kaikki ilmoitukset on kytketty pois kaikilta kohteilta.", + "Uploading report": "Ladataan raporttia", + "Sunday": "Sunnuntai", + "Failed to add tag %(tagName)s to room": "Tagin %(tagName)s lisäämineen huoneelle ei onnistunut", + "Notification targets": "Ilmoituksen kohteet", + "Failed to set direct chat tag": "Suoran viestittelyn tagin asettaminen epäonnistui", + "Today": "Tänään", + "Files": "Tiedostot", + "You are not receiving desktop notifications": "Et vastaanota työpöytäilmoituksia", + "Friday": "Perjantai", + "Update": "Päivitä", + "What's New": "Mikä on uutta", + "Add an email address above to configure email notifications": "Lisää sähköpostiosoite yllä saadaksesi ilmoituksia sähköpostiisi", + "Expand panel": "Avaa paneeli", + "On": "Päällä", + "%(count)s Members": { + "other": "%(count)s jäsentä", + "one": "%(count)s jäsen" + }, + "Filter room names": "Suodata", + "Changelog": "Muutosloki", + "Waiting for response from server": "Odotetaan vastausta palvelimelta", + "Send Custom Event": "Lähetä kustomoitu tapahtuma", + "Advanced notification settings": "Lisäasetukset ilmoituksille", + "delete the alias.": "poista alias.", + "To return to your account in future you need to set a password": "Voidaksesi tulevaisuudessa palata tilillesi sinut pitää asettaa salasana", + "Forget": "Unohda", + "#example": "#esimerkki", + "Hide panel": "Piilota paneeli", + "You cannot delete this image. (%(code)s)": "Et voi poistaa tätä kuvaa. (%(code)s)", + "Cancel Sending": "Peruuta lähetys", + "This Room": "Tämä huone", + "The Home Server may be too old to support third party networks": "Kotipalvelin saattaa olla liian vanha tukeakseen kolmannen osapuolen verkkoja", + "Noisy": "Äänekäs", + "Room not found": "Huonetta ei löytynyt", + "Downloading update...": "Ladataan päivitystä...", + "Messages in one-to-one chats": "Viestit henkilökohtaisissa keskusteluissa", + "Unavailable": "Ei saatavilla", + "Error saving email notification preferences": "Virhe tallennettaessa sähköposti-ilmoitusasetuksia", + "View Decrypted Source": "Näytä purettu lähdekoodi", + "Failed to update keywords": "Avainsanojen päivittäminen epäonnistui", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Seuraaviin avainsanoihin liittyvät ilmoitukset seuraavat sääntöjä joita ei voida näyttää tässä:", + "Safari and Opera work too.": "Safari ja Opera ovat myös tuettuja.", + "Please set a password!": "Ole hyvä ja aseta salasana!", + "You have successfully set a password!": "Olet onnistuneesti asettanut salasanan!", + "Explore Room State": "Huoneen tila", + "Source URL": "Lähde URL", + "Messages sent by bot": "Bottien lähettämät viestit", + "Filter results": "Suodata", + "Members": "Jäsenet", + "No update available.": "Ei päivityksiä saatavilla.", + "Resend": "Lähetä uudelleen", + "Failed to get protocol list from Home Server": "Protokollalistan hakeminen Kotipalvelimelta ei onnistunut", + "Collecting app version information": "Haetaan versiotietoja", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Poista huonetunnus %(alias)s ja poista %(name)s hakemistosta?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Tämä mahdollistaa sinut palamaan tilillesi uloskirjautumisen jälkeen sekä kirjautumaan muilla laitteilla.", + "Keywords": "Avainsanat", + "Enable notifications for this account": "Ota käyttöön ilmoitukset tälle tilille", + "Directory": "Hakemisto", + "Invite to this community": "Kutsu käyttäjiä", + "Search for a room": "Hae huonetta", + "Messages containing keywords": "Avainsanoja sisältävät viestit", + "View Source": "Näytä lähde", + "Tuesday": "Tiistai", + "Enter keywords separated by a comma:": "Anna avainsanat eroteltuna pilkuin:", + "Search…": "Haku…", + "You have successfully set a password and an email address!": "Olet onnistuneesti asettanut salasanan ja sähköpostiosoitteen!", + "Remove %(name)s from the directory?": "Poista %(name)s hakemistosta?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot käyttää monia selainominaisuuksia, joista osa selaimesi ei tue tai ne ovat kokeellisia.", + "Developer Tools": "Kehitystila", + "Enable desktop notifications": "Ota käyttöön työpöytäilmoitukset", + "Explore Account Data": "Tilitiedot", + "All messages (noisy)": "Kaikki viestit (äänekkäästi)", + "Saturday": "Lauantai", + "Remember, you can always set an email address in user settings if you change your mind.": "Muista että voit aina asettaa sähköpostiosoitteen käyttäjäasetuksista jos muutat mielesi.", + "Direct Chat": "Suora viestittely", + "The server may be unavailable or overloaded": "Palvelin saattaa olla saavuttamaton tai ylikuormitettu", + "Reject": "Hylkää", + "Failed to set Direct Message status of room": "Huoneen suoran viestittelyn tilan asettaminen epäonnistui", + "Monday": "Maanantai", + "Remove from Directory": "Poista hakemistosta", + "Enable them now": "Ota käyttöön nyt", + "Forward Message": "Edelleenlähetä viesti", + "Messages containing my user name": "Viestit joissa mainitaan käyttäjänimeni", + "Toolbox": "Työkalut", + "Collecting logs": "Haetaan lokitietoja", + "more": "lisää", + "You must specify an event type!": "Sinun on määritettävä tapahtuman tyyppi!", + "(HTTP status %(httpStatus)s)": "(HTTP tila %(httpStatus)s)", + "All Rooms": "Kaikki huoneet", + "Please install Chrome or Firefox for the best experience.": "Asenna Chrome tai Firefox parhaan käyttökokemuksen saavuttamiseksi.", + "Failed to get public room list": "Julkisten huoneiden listan hakeminen epäonnistui", + "Quote": "Lainaa", + "Send logs": "Lähetä lokit", + "All messages": "Kaikki viestit", + "Call invitation": "Puhelukutsu", + "Messages containing my display name": "Viestit joissa mainitaan nimimerkkini", + "State Key": "Tila-avain", + "Failed to send custom event.": "Kustomoidun tapahtuman lähettäminen epäonnistui.", + "What's new?": "Mikä on uutta?", + "Notify me for anything else": "Ilmoita minulle kaikesta muusta", + "When I'm invited to a room": "Kun minut kutsutaan huoneeseen", + "Can't update user notification settings": "Käyttäjän ilmoitusasetusten päivittäminen epäonnistui", + "Notify for all other messages/rooms": "Ilmoita kaikista muista viesteistä/huoneista", + "Unable to look up room ID from server": "Huone-ID:n haku palvelimelta epäonnistui", + "Couldn't find a matching Matrix room": "Vastaavaa Matrix-huonetta ei löytynyt", + "Invite to this room": "Kutsu käyttäjiä", + "You cannot delete this message. (%(code)s)": "Et voi poistaa tätä viestiä. (%(code)s)", + "Thursday": "Torstai", + "I understand the risks and wish to continue": "Ymmärrän riskit ja haluan jatkaa", + "Back": "Takaisin", + "Reply": "Vastaa", + "Show message in desktop notification": "Näytä viestit ilmoituskeskuksessa", + "Unhide Preview": "Näytä ennakkokatselu", + "Unable to join network": "Verkkoon liittyminen epäonnistui", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Olet saattanut muuttaa niitä toisessa asiakasohjelmassa kuin Riot. Et voi muuttaa niitä Riotissa mutta ne pätevät kuitenkin", + "Sorry, your browser is not able to run Riot.": "Valitettavasti Riot ei toimi selaimessasi.", + "Uploaded on %(date)s by %(user)s": "Ladattu %(date)s käyttäjän %(user)s toimesta", + "Messages in group chats": "Viestit ryhmäkeskusteluissa", + "Yesterday": "Eilen", + "Error encountered (%(errorDetail)s).": "Virhe: %(errorDetail)s.", + "Login": "Kirjaudu sisään", + "Low Priority": "Matala prioriteetti", + "Unable to fetch notification target list": "Ilmoituskohdelistan haku epäonnistui", + "Set Password": "Aseta salasana", + "An error occurred whilst saving your email notification preferences.": "Sähköposti-ilmoitusasetuksia tallettaessa tapahtui virhe.", + "Enable audible notifications in web client": "Ota käyttöön äänelliset ilmoitukset", + "remove %(name)s from the directory.": "poista %(name)s hakemistosta.", + "Off": "Pois päältä", + "Riot does not know how to join a room on this network": "Riot ei tiedä miten liittya huoneeseen tässä verkossa", + "Mentions only": "Vain maininnat", + "Failed to remove tag %(tagName)s from room": "Tagin %(tagName)s poistaminen huoneelta epäonnistui", + "Wednesday": "Keskiviikko", + "You can now return to your account after signing out, and sign in on other devices.": "Voit nyt palata tilillesi kirjauduttua ulos, sekä kirjautua muilla laitteilla.", + "Enable email notifications": "Ota käyttöön sähköposti-ilmoitukset", + "Event Type": "Tapahtuman tyyppi", + "Download this file": "Lataa tiedosto", + "Pin Message": "Kiinnitä viesti", + "Failed to change settings": "Asetusten muuttaminen epäonnistui", + "View Community": "Näytä yhteisö", + "Event sent!": "Tapahtuma lähetetty!", + "Event Content": "Tapahtuman sisältö", + "Thank you!": "Kiitos!", + "Collapse panel": "Piilota paneeli", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Nykyisellä selaimellasi ohjelman ulkonäkö voi olla aivan virheellinen, ja jotkut ominaisuudet eivät saata toimia. Voit jatkaa jos haluat kokeilla mutta et voi odottaa saavasi apua mahdollisesti ilmeneviin ongelmiin!", + "Checking for an update...": "Tarkistetaan päivityksen saatavuutta...", + "There are advanced notifications which are not shown here": "On kehittyneitä ilmoituksia joita ei näytetä tässä", + "Unknown device": "Tuntematon laite", + "Welcome to Riot.im": "Tervetuloa Riot.im -palveluun", + "Search the room directory": "Hae hakemistosta", + "Riot Desktop on %(platformName)s": "Riot Desktop %(platformName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Sinun täytyy käyttää HTTPS -yhteyttä, jotta voit jakaa ruudun.", + "Chat with Riot Bot": "Keskustele Riot Botin kanssa", + "Get started with some tips from Riot Bot!": "Aloita Riot Botin vinkkien avulla!", + "General discussion about Matrix and Riot": "Matrix- ja Riot keskustelut", + "Discussion of all things Matrix!": "Keskustelu kaikesta Matrixiin liittyvästä!", + "Riot/Web & Desktop chat": "Riot/Web & Työpöytä-keskustelu", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk -keskustelu", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk -keskustelu", + "Matrix technical discussions": "Tekniset keskustelut", + "Running Matrix services": "Matrix-palvelujen ylläpito", + "Community-run support for Synapse": "Yhteisön tarjoama Synapse-tuki", + "Admin support for Dendrite": "Dendrite ylläpitotuki", + "Announcements about Synapse releases": "Ilmoitukset uusista Synapse-julkaisuista", + "Support for those using and running matrix-appservice-irc": "Tuki niille jotka käyttävät ja ajavat matrix-appservice-irc", + "Building services on Matrix": "Palveluiden rakentaminen Matrixin avulla", + "Support for those using the Matrix spec": "Tuki Matrix-spesifikaation käyttäjille", + "Implementing VR services with Matrix": "VR-palvelujen implementointi Matrixin avulla", + "Implementing VoIP services with Matrix": "VoIP-palvelujen implementointi Matrixin avulla", + "Discussion of the Identity Service API": "Keskustelu Identity Service rajapinnasta", + "Support for those using, running and writing other bridges": "Tuki niille jotka käyttävät, ajavat ja ohjelmoivat muita siltoja", + "Dev chat for the Riot/Web dev team": "Kehittäjäkeskustelu Riot/Web kehitystiimille", + "Dev chat for the Dendrite dev team": "Kehittäjäkeskustelu Dendrite kehitystiimille", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrixissa on olemassa monia huoneita, jotka on linkitetty olemassa oleviin verkkoihin (Slack, IRC, Gitter yms.). Tutustu hakemistoon!", + "Riot is not supported on mobile web. Install the app?": "Riot ei tue laitettasi. Asenna mobiilisovellus?", + "Design and implementation of E2E in Matrix": "Matrix päästä-päähän salauksen suunnittelu ja implementointi", + "Contributing code to Matrix and Riot": "Osallistu kehitystyöhön", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s %(osName)s", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Salattua ja vikasietoista viestintää Matrix -teknologialla", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Voit käyttää edistyksellisiä asetuksia kirjautuaksesi muille Matrix palvelimille, määrittelemällä kotipalvelimen URL-osoitteen.
Tämän avulla voit käyttää Riot:ia olemassa olevalla toisen Matrix palvelimen käyttäjätilillä.

Voit myös asettaa valinnaisen identiteettipalvelimen, mutta et voi kutsua käyttäjiä sähköpostiosoitteella tai tulla kutsutuksi." +} \ No newline at end of file diff --git a/riot/i18n/fr.json b/riot/i18n/fr.json new file mode 100644 index 0000000..12b7c99 --- /dev/null +++ b/riot/i18n/fr.json @@ -0,0 +1,1406 @@ +{ + "Direct chats": "Discussions directes", + "Disinvite": "Désinviter", + "Display name": "Nom affiché", + "Displays action": "Affiche l'action", + "Don't send typing notifications": "Ne pas envoyer les notifications de saisie", + "Download %(text)s": "Télécharger %(text)s", + "Drop here to tag %(section)s": "Déposer ici pour étiqueter comme %(section)s", + "Ed25519 fingerprint": "Empreinte Ed25519", + "Email, name or matrix ID": "E-mail, nom ou identifiant Matrix", + "Emoji": "Émoticône", + "Enable encryption": "Activer le chiffrement", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Les messages chiffrés ne seront pas visibles dans les clients qui n’implémentent pas encore le chiffrement", + "Encrypted room": "Salon chiffré", + "%(senderName)s ended the call.": "%(senderName)s a terminé l’appel.", + "End-to-end encryption information": "Informations sur le chiffrement de bout en bout", + "End-to-end encryption is in beta and may not be reliable": "Le chiffrement de bout en bout est en bêta et risque de ne pas être fiable", + "Enter Code": "Saisir le code", + "Error": "Erreur", + "Event information": "Informations de l'événement", + "Existing Call": "Appel en cours", + "Export E2E room keys": "Exporter les clés de chiffrement de salon", + "Failed to ban user": "Échec du bannissement de l'utilisateur", + "Failed to change password. Is your password correct?": "Échec du changement de mot de passe. Votre mot de passe est-il correct ?", + "Failed to change power level": "Échec du changement de rang", + "Failed to forget room %(errCode)s": "Échec de l'oubli du salon %(errCode)s", + "Remove": "Supprimer", + "bold": "gras", + "italic": "italique", + "strike": "barré", + "underline": "souligné", + "Favourite": "Favoris", + "Notifications": "Notifications", + "Settings": "Paramètres", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un SMS a été envoyé à +%(msisdn)s. Merci de saisir le code de vérification qu'il contient", + "%(targetName)s accepted an invitation.": "%(targetName)s a accepté une invitation.", + "Account": "Compte", + "Add email address": "Ajouter une adresse e-mail", + "Add phone number": "Ajouter un numéro de téléphone", + "Admin": "Administrateur", + "Advanced": "Avancé", + "Algorithm": "Algorithme", + "%(items)s and %(lastItem)s": "%(items)s et %(lastItem)s", + "%(names)s and %(lastPerson)s are typing": "%(names)s et %(lastPerson)s écrivent", + "and %(count)s others...": { + "other": "et %(count)s autres...", + "one": "et un autre..." + }, + "A new password must be entered.": "Un nouveau mot de passe doit être saisi.", + "Anyone who knows the room's link, apart from guests": "Tous ceux qui connaissent le lien du salon, à part les visiteurs", + "Anyone who knows the room's link, including guests": "Tous ceux qui connaissent le lien du salon, y compris les visiteurs", + "Are you sure?": "Êtes-vous sûr(e) ?", + "Are you sure you want to reject the invitation?": "Voulez-vous vraiment rejeter l'invitation ?", + "Are you sure you want to upload the following files?": "Voulez-vous vraiment envoyer les fichiers suivants ?", + "Attachment": "Pièce jointe", + "Autoplay GIFs and videos": "Jouer automatiquement les GIFs et les vidéos", + "%(senderName)s banned %(targetName)s.": "%(senderName)s a banni %(targetName)s.", + "Ban": "Bannir", + "Banned users": "Utilisateurs bannis", + "Bans user with given id": "Bannit l'utilisateur à partir de son identifiant", + "Blacklisted": "Sur liste noire", + "Call Timeout": "Délai d’appel expiré", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Impossible de se connecter au serveur d'accueil en HTTP si l'URL dans la barre de votre explorateur est en HTTPS. Utilisez HTTPS ou activez le support des scripts non-vérifiés.", + "Can't load user settings": "Impossible de charger les paramètres de l'utilisateur", + "Change Password": "Changer le mot de passe", + "%(senderName)s changed their profile picture.": "%(senderName)s a changé son image de profil.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s a changé le rang de %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s a changé le nom du salon en %(roomName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s a changé le sujet du salon en \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Les changements de visibilité de l’historique de ce salon ne s’appliquent qu’aux futurs messages", + "Changes your display nickname": "Change votre nom affiché", + "Claimed Ed25519 fingerprint key": "Clé d'empreinte Ed25519 déclarée", + "Clear Cache and Reload": "Vider le cache et rafraîchir", + "Clear Cache": "Vider le cache", + "Click here to fix": "Cliquer ici pour réparer", + "Click to mute audio": "Cliquer pour couper le son", + "Click to mute video": "Cliquer ici pour couper la vidéo", + "click to reveal": "cliquer pour dévoiler", + "Click to unmute video": "Cliquer pour rétablir la vidéo", + "Click to unmute audio": "Cliquer pour rétablir le son", + "Command error": "Erreur de commande", + "Commands": "Commandes", + "Conference call failed.": "Échec de la téléconférence.", + "Conference calling is in development and may not be reliable.": "Les appels en téléconférence sont encore en développement et sont potentiellement peu fiables.", + "Conference calls are not supported in encrypted rooms": "Les appels en téléconférence ne sont pas supportés dans les salons chiffrés", + "Conference calls are not supported in this client": "Les appels en téléconférence ne sont pas supportés par ce client", + "Confirm password": "Confirmer le mot de passe", + "Confirm your new password": "Confirmer votre nouveau mot de passe", + "Continue": "Continuer", + "Could not connect to the integration server": "Impossible de se connecter au serveur d'intégration", + "Create an account": "Créer un compte", + "Create Room": "Créer un salon", + "Cryptography": "Chiffrement", + "Current password": "Mot de passe actuel", + "Curve25519 identity key": "Clé d’identité Curve25519", + "/ddg is not a command": "/ddg n'est pas une commande", + "Deactivate Account": "Désactiver le compte", + "Deactivate my account": "Désactiver mon compte", + "Decrypt %(text)s": "Déchiffrer %(text)s", + "Decryption error": "Erreur de déchiffrement", + "Delete": "Supprimer", + "Deops user with given id": "Retire le rang d’opérateur d’un utilisateur à partir de son identifiant", + "Device ID": "Identifiant de l'appareil", + "Devices": "Appareils", + "Devices will not yet be able to decrypt history from before they joined the room": "Les appareils ne pourront pas encore déchiffrer l'historique de messages d'avant leur arrivée sur le salon", + "Failed to join room": "Échec de l’inscription au salon", + "Failed to kick": "Échec de l'exclusion", + "Failed to leave room": "Échec du départ du salon", + "Failed to load timeline position": "Échec du chargement de la position dans l'historique", + "Failed to mute user": "Échec de la mise en sourdine de l'utilisateur", + "Failed to reject invite": "Échec du rejet de l'invitation", + "Failed to reject invitation": "Échec du rejet de l'invitation", + "Failed to save settings": "Échec de la sauvegarde des paramètres", + "Failed to send email": "Échec de l’envoi de l’e-mail", + "Failed to send request.": "Échec de l'envoi de la requête.", + "Failed to set display name": "Échec de l'enregistrement du nom affiché", + "Failed to set up conference call": "Échec de l’établissement de la téléconférence", + "Failed to toggle moderator status": "Échec de l’activation du statut de modérateur", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s a accepté l’invitation de %(displayName)s.", + "Access Token:": "Jeton d’accès :", + "Always show message timestamps": "Toujours afficher l'heure des messages", + "Authentication": "Authentification", + "%(senderName)s answered the call.": "%(senderName)s a répondu à l’appel.", + "An error has occurred.": "Une erreur est survenue.", + "Email": "E-mail", + "Failed to unban": "Échec de la révocation du bannissement", + "Failed to upload file": "Échec de l'envoi du fichier", + "Failed to verify email address: make sure you clicked the link in the email": "Échec de la vérification de l’adresse e-mail : vérifiez que vous avez bien cliqué sur le lien dans l’e-mail", + "Failure to create room": "Échec de la création du salon", + "Favourites": "Favoris", + "Fill screen": "Plein écran", + "Filter room members": "Filtrer les membres du salon", + "Forget room": "Oublier le salon", + "Forgot your password?": "Mot de passe oublié ?", + "For security, this session has been signed out. Please sign in again.": "Par mesure de sécurité, la session a expiré. Merci de vous authentifier à nouveau.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s à %(toPowerLevel)s", + "Hangup": "Raccrocher", + "Hide read receipts": "Cacher les accusés de lecture", + "Hide Text Formatting Toolbar": "Cacher la barre de formatage de texte", + "Historical": "Historique", + "Homeserver is": "Le serveur d'accueil est", + "Identity Server is": "Le serveur d'identité est", + "I have verified my email address": "J’ai vérifié mon adresse e-mail", + "Import E2E room keys": "Importer les clés de chiffrement de bout en bout", + "Incorrect verification code": "Code de vérification incorrect", + "Interface Language": "Langue de l'interface", + "Invalid alias format": "Format d'alias non valide", + "Invalid address format": "Format d'adresse non valide", + "Invalid Email Address": "Adresse e-mail non valide", + "%(senderName)s invited %(targetName)s.": "%(senderName)s a invité %(targetName)s.", + "Invite new room members": "Inviter de nouveaux membres", + "Invited": "Invités", + "Invites": "Invitations", + "Invites user with given id to current room": "Invite un utilisateur dans le salon actuel à partir de son identifiant", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' n'est pas un format valide pour une adresse", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' n'est pas un format valide pour un alias", + "%(displayName)s is typing": "%(displayName)s écrit", + "Sign in with": "Se connecter avec", + "Join Room": "Rejoindre le salon", + "%(targetName)s joined the room.": "%(targetName)s a rejoint le salon.", + "Joins room with given alias": "Rejoint le salon avec l'alias renseigné", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s a exclu %(targetName)s.", + "Kick": "Exclure", + "Kicks user with given id": "Exclut l'utilisateur à partir de son identifiant", + "Labs": "Laboratoire", + "Leave room": "Quitter le salon", + "%(targetName)s left the room.": "%(targetName)s a quitté le salon.", + "Local addresses for this room:": "Adresses locales pour ce salon :", + "Logged in as:": "Identifié en tant que :", + "Logout": "Se déconnecter", + "Low priority": "Priorité basse", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s a rendu l'historique visible à tous les membres du salon, depuis le moment où ils ont été invités.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s a rendu l'historique visible à tous les membres du salon, depuis le moment où ils ont rejoint.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s a rendu l'historique visible à tous les membres du salon.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s a rendu l'historique visible à n'importe qui.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s a rendu l'historique visible à inconnu (%(visibility)s).", + "Manage Integrations": "Gestion des intégrations", + "Markdown is disabled": "Le formatage Markdown est désactivé", + "Markdown is enabled": "Le formatage Markdown est activé", + "matrix-react-sdk version:": "Version de matrix-react-sdk :", + "Message not sent due to unknown devices being present": "Message non envoyé à cause de la présence d’appareils inconnus", + "Missing room_id in request": "Absence du room_id dans la requête", + "Missing user_id in request": "Absence du user_id dans la requête", + "Mobile phone number": "Numéro de téléphone mobile", + "Moderator": "Modérateur", + "%(serverName)s Matrix ID": "%(serverName)s identifiant Matrix", + "Name": "Nom", + "Never send encrypted messages to unverified devices from this device": "Ne jamais envoyer de message chiffré aux appareils non vérifiés depuis cet appareil", + "Never send encrypted messages to unverified devices in this room from this device": "Ne jamais envoyer de message chiffré aux appareils non vérifiés dans ce salon depuis cet appareil", + "New address (e.g. #foo:%(localDomain)s)": "Nouvelle adresse (par ex. #foo:%(localDomain)s)", + "New password": "Nouveau mot de passe", + "New passwords don't match": "Les mots de passe ne correspondent pas", + "New passwords must match each other.": "Les nouveaux mots de passe doivent être identiques.", + "none": "aucun", + "not set": "non défini", + "not specified": "non spécifié", + "(not supported by this browser)": "(non supporté par ce navigateur)", + "": "", + "NOT verified": "NON vérifié", + "No devices with registered encryption keys": "Pas d’appareil avec des clés de chiffrement enregistrées", + "No more results": "Fin des résultats", + "No results": "Pas de résultat", + "unknown error code": "Code d'erreur inconnu", + "OK": "OK", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Une fois le chiffrement activé dans un salon il ne peut pas être désactivé (pour le moment)", + "Only people who have been invited": "Seules les personnes ayant été invitées", + "Password": "Mot de passe", + "Passwords can't be empty": "Le mot de passe ne peut pas être vide", + "People": "Personnes", + "Permissions": "Permissions", + "Phone": "Numéro de téléphone", + "Operation failed": "L'opération a échoué", + "Bulk Options": "Options de masse", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Pour le moment, changer le mot de passe réinitialise les clés de chiffrement sur tous les appareils, rendant l’historique des discussions chiffrées illisible, à moins d’exporter d'abord les clés de salon puis de les ré-importer. Ceci sera amélioré prochainement.", + "Default": "Par défaut", + "Email address": "Adresse e-mail", + "Error decrypting attachment": "Erreur lors du déchiffrement de la pièce jointe", + "Failed to set avatar.": "Échec de la définition de l'avatar.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Par mesure de sécurité une déconnexion supprimera toutes les clés de chiffrement de ce navigateur. Si vous voulez être capable de déchiffrer l’historique de votre conversation lors des prochaines sessions de Riot, veuillez exporter les clés de salon pour les garder en lieu sûr.", + "Guests cannot join this room even if explicitly invited.": "Les visiteurs ne peuvent pas rejoindre ce salon, même s'ils ont été explicitement invités.", + "Invalid file%(extra)s": "Fichier %(extra)s non valide", + "Mute": "Mettre en sourdine", + "No users have specific privileges in this room": "Aucun utilisateur n’a de privilège spécifique dans ce salon", + "olm version:": "version de olm :", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s a passé un appel %(callType)s.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Veuillez vérifier vos e-mails et cliquer sur le lien que vous avez reçu. Puis cliquez sur continuer.", + "Power level must be positive integer.": "Le niveau d'autorité doit être un entier positif.", + "Privacy warning": "Alerte de confidentialité", + "Privileged Users": "Utilisateurs privilégiés", + "Profile": "Profil", + "Reason": "Raison", + "Revoke Moderator": "Révoquer le modérateur", + "Refer a friend to Riot:": "Recommander Riot à un ami :", + "%(targetName)s rejected the invitation.": "%(targetName)s a rejeté l’invitation.", + "Reject invitation": "Rejeter l'invitation", + "Remove Contact Information?": "Supprimer les informations du contact ?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s a supprimé son nom affiché (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s a supprimé son image de profil.", + "Remove %(threePid)s?": "Supprimer %(threePid)s ?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s a demandé une téléconférence audio.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Pour le moment, réinitialiser le mot de passe va réinitialiser les clés de chiffrement sur tous les appareils, rendant l’historique des salons chiffrés illisible, à moins que vous exportiez d'abord les clés de salon puis que vous les ré-importiez après. Cela sera amélioré prochainement.", + "Return to login screen": "Retourner à l’écran de connexion", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot n’a pas la permission de vous envoyer des notifications - merci de vérifier les paramètres de votre navigateur", + "Riot was not given permission to send notifications - please try again": "Riot n’a pas reçu la permission de vous envoyer des notifications - veuillez réessayer", + "riot-web version:": "Version de riot-web :", + "Room %(roomId)s not visible": "Le salon %(roomId)s n'est pas visible", + "Room Colour": "Couleur du salon", + "Room name (optional)": "Nom du salon (facultatif)", + "Rooms": "Salons", + "Scroll to bottom of page": "Aller en bas de la page", + "Scroll to unread messages": "Aller aux messages non lus", + "Search": "Rechercher", + "Search failed": "Échec de la recherche", + "Searches DuckDuckGo for results": "Recherche des résultats dans DuckDuckGo", + "Sender device information": "Informations de l'appareil de l'expéditeur", + "Send Invites": "Envoyer des invitations", + "Send Reset Email": "Envoyer l'e-mail de réinitialisation", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s a envoyé une image.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s a invité %(targetDisplayName)s à rejoindre le salon.", + "Server error": "Erreur du serveur", + "Server may be unavailable or overloaded": "Le serveur semble être inaccessible ou surchargé", + "Server may be unavailable, overloaded, or search timed out :(": "Le serveur semble être inaccessible, surchargé ou la recherche a expiré :(", + "Server may be unavailable, overloaded, or the file too big": "Le serveur semble être inaccessible, surchargé ou le fichier est trop volumineux", + "Server may be unavailable, overloaded, or you hit a bug.": "Le serveur semble être indisponible, surchargé ou vous avez rencontré un problème.", + "Server unavailable, overloaded, or something else went wrong.": "Le serveur semble être inaccessible, surchargé ou quelque chose s'est mal passé.", + "Session ID": "Identifiant de session", + "%(senderName)s set a profile picture.": "%(senderName)s a défini une image de profil.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s a défini son nom affiché comme %(displayName)s.", + "Show panel": "Dévoiler le panneau", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Afficher l’heure au format am/pm (par ex. 2:30pm)", + "Signed Out": "Déconnecté", + "Sign in": "Se connecter", + "Sign out": "Se déconnecter", + "%(count)s of your messages have not been sent.": { + "other": "Certains de vos messages n’ont pas été envoyés.", + "one": "Votre message n'a pas été envoyé." + }, + "Someone": "Quelqu'un", + "Start a chat": "Commencer une discussion", + "Start Chat": "Commencer une discussion", + "Submit": "Soumettre", + "Success": "Succès", + "The default role for new room members is": "Le rôle par défaut des nouveaux membres est", + "The main address for this room is": "L'adresse principale pour ce salon est", + "This email address is already in use": "Cette adresse e-mail est déjà utilisée", + "This email address was not found": "Cette adresse e-mail n’a pas été trouvée", + "The email address linked to your account must be entered.": "L’adresse e-mail liée à votre compte doit être renseignée.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Le fichier '%(fileName)s' dépasse la taille limite autorisée pour les envois sur ce serveur d'accueil", + "The file '%(fileName)s' failed to upload": "Le fichier '%(fileName)s' n’a pas pu être envoyé", + "The remote side failed to pick up": "Le correspondant n’a pas décroché", + "This room has no local addresses": "Ce salon n'a pas d'adresse locale", + "This room is not recognised.": "Ce salon n'est pas reconnu.", + "These are experimental features that may break in unexpected ways": "Ce sont des fonctionnalités expérimentales qui peuvent créer des problèmes inattendus", + "The visibility of existing history will be unchanged": "La visibilité de l’historique existant restera inchangée", + "This doesn't appear to be a valid email address": "Cette adresse e-mail ne semble pas valide", + "This is a preview of this room. Room interactions have been disabled": "Ceci est un aperçu du salon. Les interactions avec le salon ont été désactivées", + "This phone number is already in use": "Ce numéro de téléphone est déjà utilisé", + "This room is not accessible by remote Matrix servers": "Ce salon n’est pas accessible par les serveurs Matrix distants", + "This room's internal ID is": "L'identifiant interne de ce salon est", + "To reset your password, enter the email address linked to your account": "Pour réinitialiser votre mot de passe, merci d’entrer l’adresse e-mail liée à votre compte", + "To use it, just wait for autocomplete results to load and tab through them.": "Pour l’utiliser, attendez simplement que les résultats de l’auto-complétion s’affichent et défilez avec la touche Tab.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Un instant donné de la chronologie n’a pu être chargé car vous n’avez pas la permission de le visualiser.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Un instant donné de la chronologie n’a pu être chargé car il n’a pas pu être trouvé.", + "Turn Markdown off": "Désactiver le formatage ’Markdown’", + "Turn Markdown on": "Activer le formatage ’Markdown’", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s a activé le chiffrement de bout-en-bout (algorithme %(algorithm)s).", + "Unable to add email address": "Impossible d'ajouter l'adresse e-mail", + "Unable to remove contact information": "Impossible de supprimer les informations du contact", + "Unable to verify email address.": "Impossible de vérifier l’adresse e-mail.", + "Unban": "Révoquer le bannissement", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s a révoqué le bannissement de %(targetName)s.", + "Unable to capture screen": "Impossible de capturer l'écran", + "Unable to enable Notifications": "Impossible d'activer les notifications", + "Unable to load device list": "Impossible de charger la liste des appareils", + "Unencrypted room": "Salon non chiffré", + "unencrypted": "non chiffré", + "unknown device": "appareil inconnu", + "Unknown room %(roomId)s": "Salon inconnu %(roomId)s", + "Unmute": "Activer le son", + "Upload avatar": "Télécharger une photo de profil", + "Upload Failed": "Erreur lors du téléchargement", + "Upload Files": "Télécharger les fichiers", + "Upload file": "Télécharger un fichier", + "Usage": "Utilisation", + "Use with caution": "Utiliser avec prudence", + "User ID": "Identifiant d'utilisateur", + "User Interface": "Interface utilisateur", + "User name": "Nom d'utilisateur", + "Users": "Utilisateurs", + "Verification Pending": "Vérification en attente", + "Verification": "Vérification", + "verified": "vérifié", + "Video call": "Appel vidéo", + "Voice call": "Appel vocal", + "VoIP conference finished.": "Téléconférence VoIP terminée.", + "VoIP conference started.": "Téléconférence VoIP démarrée.", + "VoIP is unsupported": "Voix sur IP non supportée", + "(warning: cannot be disabled again!)": "(attention : ne peut pas être désactivé !)", + "Warning!": "Attention !", + "Who can access this room?": "Qui peut accéder au salon ?", + "Who can read history?": "Qui peut lire l'historique ?", + "Who would you like to add to this room?": "Qui voulez-vous ajouter à ce salon ?", + "Who would you like to communicate with?": "Avec qui voulez-vous communiquer ?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s a annulé l’invitation de %(targetName)s.", + "You are already in a call.": "Vous avez déjà un appel en cours.", + "You are trying to access %(roomName)s.": "Vous essayez d'accéder à %(roomName)s.", + "You cannot place a call with yourself.": "Vous ne pouvez pas passer d'appel avec vous-même.", + "You cannot place VoIP calls in this browser.": "Vous ne pouvez pas passer d'appel en Voix sur IP dans ce navigateur.", + "You do not have permission to post to this room": "Vous n’avez pas la permission de poster dans ce salon", + "You have been invited to join this room by %(inviterName)s": "Vous avez été invité(e) à rejoindre ce salon par %(inviterName)s", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Vous avez été déconnecté de tous vos appareils et ne recevrez plus de notifications. Pour réactiver les notifications, reconnectez-vous sur tous les appareils", + "You have no visible notifications": "Vous n'avez pas de notification visible", + "You need to be able to invite users to do that.": "Vous devez être capable d’inviter des utilisateurs pour faire ça.", + "You need to be logged in.": "Vous devez être identifié.", + "You need to enter a user name.": "Vous devez entrer un nom d’utilisateur.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Votre adresse e-mail ne semble pas être associée à un identifiant Matrix sur ce serveur d'accueil.", + "Your password has been reset": "Votre mot de passe a été réinitialisé", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Votre mot de passe a été mis à jour avec succès. Vous ne recevrez plus de notification sur vos autres appareils jusqu’à ce que vous vous identifiez à nouveau", + "You seem to be in a call, are you sure you want to quit?": "Vous semblez avoir un appel en cours, voulez-vous vraiment partir ?", + "You seem to be uploading files, are you sure you want to quit?": "Vous semblez être en train d'envoyer des fichiers, voulez-vous vraiment partir ?", + "You should not yet trust it to secure data": "Vous ne pouvez pas encore lui faire confiance pour sécuriser vos données", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Vous ne pourrez pas annuler cette modification car vous promouvez l’utilisateur au même rang que le vôtre.", + "Sun": "Dim", + "Mon": "Lun", + "Tue": "Mar", + "Wed": "Mer", + "Thu": "Jeu", + "Fri": "Ven", + "Sat": "Sam", + "Jan": "Jan", + "Feb": "Fév", + "Mar": "Mar", + "Apr": "Avr", + "May": "Mai", + "Jun": "Juin", + "Jul": "Juil", + "Aug": "Aoû", + "Sep": "Sep", + "Oct": "Oct", + "Nov": "Nov", + "Dec": "Déc", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Définir le nom affiché :", + "Upload an avatar:": "Envoyer un avatar :", + "This server does not support authentication with a phone number.": "Ce serveur ne prend pas en charge l’authentification avec un numéro de téléphone.", + "Missing password.": "Mot de passe manquant.", + "Passwords don't match.": "Les mots de passe ne correspondent pas.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Mot de passe trop court (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Cette adresse e-mail ne semble pas valide.", + "This doesn't look like a valid phone number.": "Ce numéro de téléphone ne semble pas valide.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Les noms d’utilisateurs ne peuvent contenir que des lettres, des chiffres, des points, des traits d'union et des tirets bas.", + "An unknown error occurred.": "Une erreur inconnue est survenue.", + "I already have an account": "J’ai déjà un compte", + "An error occurred: %(error_string)s": "Une erreur est survenue : %(error_string)s", + "Topic": "Sujet", + "Make Moderator": "Nommer modérateur", + "Make this room private": "Rendre ce salon privé", + "Share message history with new users": "Partager l’historique des messages avec les nouveaux utilisateurs", + "Encrypt room": "Chiffrer le salon", + "There are no visible files in this room": "Il n'y a pas de fichier visible dans ce salon", + "Room": "Salon", + "Connectivity to the server has been lost.": "La connectivité au serveur a été perdue.", + "Sent messages will be stored until your connection has returned.": "Les messages envoyés seront stockés jusqu’à ce que votre connexion revienne.", + "Cancel": "Annuler", + "Active call": "Appel en cours", + "code": "code", + "quote": "citer", + "bullet": "liste à puces", + "numbullet": "liste numérotée", + "Please select the destination room for this message": "Merci de sélectionner le salon de destination pour ce message", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s a supprimé le nom du salon.", + "Analytics": "Collecte de données", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot collecte des données anonymes qui nous permettent d’améliorer l’application.", + "Passphrases must match": "Les phrases de passe doivent être identiques", + "Passphrase must not be empty": "La phrase de passe ne peut pas être vide", + "Export room keys": "Exporter les clés de salon", + "Enter passphrase": "Saisir la phrase de passe", + "Confirm passphrase": "Confirmer la phrase de passe", + "Import room keys": "Importer les clés de salon", + "File to import": "Fichier à importer", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ce processus vous permet d’exporter dans un fichier local les clés pour les messages que vous avez reçus dans des salons chiffrés. Il sera ensuite possible d’importer ce fichier dans un autre client Matrix, afin de permettre à ce client de pouvoir déchiffrer ces messages.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Le fichier exporté permettra à tous ceux qui peuvent le lire de déchiffrer tous les messages chiffrés auxquels vous avez accès, vous devez donc être vigilant et le stocker dans un endroit sûr. Afin de protéger ce fichier, saisissez ci-dessous une phrase secrète qui sera utilisée pour chiffrer les données exportées. Seule l’utilisation de la même phrase secrète permettra de déchiffrer et importer les données.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ce processus vous permet d’importer les clés de chiffrement que vous avez précédemment exportées depuis un autre client Matrix. Vous serez alors capable de déchiffrer n’importe quel message que l’autre client pouvait déchiffrer.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Le fichier exporté est protégé par une phrase de passe. Vous devez saisir cette phrase de passe ici pour déchiffrer le fichier.", + "You must join the room to see its files": "Vous devez rejoindre le salon pour voir ses fichiers", + "Reject all %(invitedRooms)s invites": "Rejeter la totalité des %(invitedRooms)s invitations", + "Start new chat": "Démarrer une nouvelle discussion", + "Failed to invite": "Echec de l'invitation", + "Failed to invite user": "Echec lors de l'invitation de l'utilisateur", + "Failed to invite the following users to the %(roomName)s room:": "Echec lors de l’invitation des utilisateurs suivants dans le salon %(roomName)s :", + "Confirm Removal": "Confirmer la suppression", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Voulez-vous vraiment supprimer cet événement ? Notez que si vous supprimez le changement du nom ou du sujet d’un salon, il est possible que ce changement soit annulé.", + "Unknown error": "Erreur inconnue", + "Incorrect password": "Mot de passe incorrect", + "To continue, please enter your password.": "Pour continuer, veuillez saisir votre mot de passe.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Pour vérifier que vous pouvez faire confiance à cet appareil, merci de contacter son propriétaire par un autre moyen (par ex. en personne ou par téléphone) et demandez lui si la clé qu’il/elle voit dans ses Paramètres Utilisateur pour cet appareil correspond à la clé ci-dessous :", + "Device name": "Nom de l'appareil", + "Device key": "Clé de l'appareil", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Si les clés correspondent, cliquer sur le bouton \"Vérifier\" ci-dessous. Sinon quelqu’un d’autre est en train d’intercepter cet appareil et vous devriez certainement cliquer sur le bouton \"Ajouter à la liste noire\" à la place.", + "In future this verification process will be more sophisticated.": "À l’avenir ce processus de vérification sera plus sophistiqué.", + "Verify device": "Vérifier cet appareil", + "I verify that the keys match": "J’ai vérifié que les clés correspondaient", + "Unable to restore session": "Impossible de restaurer la session", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si vous avez utilisé une version plus récente de Riot précédemment, votre session risque d’être incompatible avec cette version. Fermez cette fenêtre et retournez à la version plus récente.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Vous êtes en train d’ajouter à la liste noire des appareils non-vérifiés ; pour envoyer des messages à ces appareils vous devez les vérifier.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nous vous recommandons d’effectuer le processus de vérification pour tous les appareils afin de confirmer qu’ils appartiennent à leurs propriétaires légitimes, mais vous pouvez renvoyer le(s) message(s) sans vérifier si vous préférez.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contient des appareils que vous n'avez encore jamais vus.", + "Unknown devices": "Appareils inconnus", + "Unknown Address": "Adresse inconnue", + "Unblacklist": "Supprimer de la liste noire", + "Blacklist": "Ajouter à la liste noire", + "Unverify": "Annuler la vérification", + "Verify...": "Vérifier...", + "ex. @bob:example.com": "ex. @bob:exemple.com", + "Add User": "Ajouter l'utilisateur", + "This Home Server would like to make sure you are not a robot": "Ce serveur d'accueil veut vérifier que vous n’êtes pas un robot", + "Sign in with CAS": "S'identifier avec CAS", + "Custom Server Options": "Options de serveur personnalisées", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Vous pouvez utiliser les options de serveur personnalisées pour vous identifier auprès d’un autre serveur Matrix en spécifiant l’URL d’un serveur d'accueil différent.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Cela vous permet d’utiliser l’application avec un compte Matrix existant sur un serveur d'accueil différent.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Vous pouvez également configurer un serveur d’identité différent mais cela risque entre autres d’empêcher les interactions basées sur l'adresse e-mail avec les autres utilisateurs.", + "Dismiss": "Ignorer", + "Please check your email to continue registration.": "Merci de vérifier votre e-mail afin de continuer votre inscription.", + "Token incorrect": "Jeton incorrect", + "Please enter the code it contains:": "Merci de saisir le code qu'il contient :", + "powered by Matrix": "propulsé par Matrix", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Si vous ne renseignez pas d’adresse e-mail, vous ne pourrez pas réinitialiser votre mot de passe. En êtes vous sûr(e) ?", + "You are registering with %(SelectedTeamName)s": "Vous vous inscrivez auprès de %(SelectedTeamName)s", + "Default server": "Serveur par défaut", + "Custom server": "Serveur personnalisé", + "Home server URL": "URL du serveur d'accueil", + "Identity server URL": "URL du serveur d’identité", + "What does this mean?": "Qu’est ce que cela signifie ?", + "Error decrypting audio": "Erreur lors du déchiffrement de l’audio", + "Error decrypting image": "Erreur lors du déchiffrement de l’image", + "Error decrypting video": "Erreur lors du déchiffrement de la vidéo", + "Add an Integration": "Ajouter une intégration", + "URL Previews": "Aperçus des liens", + "Drop file here to upload": "Déposer le fichier ici pour l'envoyer", + " (unsupported)": " (pas pris en charge)", + "Ongoing conference call%(supportedText)s.": "Téléconférence en cours%(supportedText)s.", + "Online": "En ligne", + "Offline": "Hors ligne", + "Desktop specific": "Spécifique à l'application de bureau", + "Start automatically after system login": "Démarrer automatiquement après la phase d'authentification du système", + "Idle": "Inactif", + "Jump to first unread message.": "Aller au premier message non lu.", + "Options": "Options", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Vous êtes sur le point d’accéder à un site tiers afin de pouvoir vous identifier pour utiliser %(integrationsUrl)s. Voulez-vous continuer ?", + "Removed or unknown message type": "Type de message inconnu ou supprimé", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s a changé l’avatar du salon en ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s a supprimé l'avatar du salon.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s a changé l’avatar de %(roomName)s", + "Device already verified!": "Appareil déjà vérifié !", + "Export": "Exporter", + "Guest access is disabled on this Home Server.": "L’accès en tant que visiteur est désactivé sur ce serveur d'accueil.", + "Import": "Importer", + "Incorrect username and/or password.": "Nom d’utilisateur et/ou mot de passe incorrect.", + "Results from DuckDuckGo": "Résultats de DuckDuckGo", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Les clés de signature que vous avez transmises correspondent aux clés que vous avez reçues de l’appareil %(deviceId)s de %(userId)s. L’appareil est vérifié.", + "This Home Server does not support login using email address.": "Ce serveur ne supporte pas l’identification par e-mail.", + "Unknown (user, device) pair:": "Couple (utilisateur, appareil) inconnu :", + "Unrecognised command:": "Commande non reconnue :", + "Unrecognised room alias:": "Alias de salon non reconnu :", + "Use compact timeline layout": "Utiliser l'affichage compact de l'historique", + "Verified key": "Clé vérifiée", + "WARNING: Device already verified, but keys do NOT MATCH!": "ATTENTION : appareil déjà vérifié mais les clés NE CORRESPONDENT PAS !", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ATTENTION : ERREUR DE VÉRIFICATION DES CLÉS ! La clé de signature pour %(userId)s et l'appareil %(deviceId)s est “%(fprint)s” et ne correspond pas à la clé “%(fingerprint)s” qui a été fournie. Cela peut signifier que vos communications sont interceptées !", + "VoIP": "Voix sur IP", + "Missing Media Permissions, click here to request.": "Manque de permissions pour les médias, cliquer ici pour les demander.", + "No Microphones detected": "Aucun micro détecté", + "No Webcams detected": "Aucune webcam détectée", + "No media permissions": "Pas de permission pour les médias", + "You may need to manually permit Riot to access your microphone/webcam": "Il est possible que vous deviez manuellement autoriser Riot à accéder à votre micro/webcam", + "Default Device": "Appareil par défaut", + "Microphone": "Micro", + "Camera": "Caméra", + "Add a topic": "Ajouter un sujet", + "Anyone": "N'importe qui", + "Are you sure you want to leave the room '%(roomName)s'?": "Voulez-vous vraiment quitter le salon \"%(roomName)s\" ?", + "Custom level": "Rang personnalisé", + "Device ID:": "Identifiant de l'appareil :", + "device id: ": "identifiant de l'appareil : ", + "Device key:": "Clé de l’appareil :", + "Email address (optional)": "Adresse e-mail (facultatif)", + "Mobile phone number (optional)": "Numéro de téléphone (facultatif)", + "Password:": "Mot de passe :", + "Register": "S'inscrire", + "Remote addresses for this room:": "Adresses distantes pour ce salon :", + "Save": "Enregistrer", + "Tagged as: ": "Étiquetter comme : ", + "You have disabled URL previews by default.": "Vous avez désactivé les aperçus d’URL par défaut.", + "You have enabled URL previews by default.": "Vous avez activé les aperçus d’URL par défaut.", + "Hide removed messages": "Cacher les messages supprimés", + "Add": "Ajouter", + "%(count)s new messages": { + "one": "%(count)s nouveau message", + "other": "%(count)s nouveaux messages" + }, + "Error: Problem communicating with the given homeserver.": "Erreur : problème de communication avec le homeserver.", + "Failed to fetch avatar URL": "Échec lors de la récupération de l’URL de l’avatar", + "The phone number entered looks invalid": "Le numéro de téléphone entré semble être invalide", + "Uploading %(filename)s and %(count)s others": { + "zero": "Envoi de %(filename)s", + "one": "Envoi de %(filename)s et %(count)s autre", + "other": "Envoi de %(filename)s et %(count)s autres" + }, + "You must register to use this functionality": "Vous devez vous inscrire pour utiliser cette fonctionnalité", + "Create new room": "Créer un nouveau salon", + "Room directory": "Répertoire des salons", + "Start chat": "Commencer une discussion", + "New Password": "Nouveau mot de passe", + "Start chatting": "Commencer une discussion", + "Start Chatting": "Commencer une discussion", + "Click on the button below to start chatting!": "Cliquer sur le bouton ci-dessous pour commencer une discussion !", + "Create a new chat or reuse an existing one": "Commencer une nouvelle discussion ou en réutiliser une existante", + "You already have existing direct chats with this user:": "Vous avez déjà des discussions directes avec cet utilisateur :", + "Username available": "Nom d'utilisateur disponible", + "Username not available": "Nom d'utilisateur indisponible", + "Something went wrong!": "Quelque chose s’est mal passé !", + "This will be your account name on the homeserver, or you can pick a different server.": "Cela sera le nom de votre compte sur le serveur d'accueil , ou vous pouvez sélectionner un autre serveur.", + "If you already have a Matrix account you can log in instead.": "Si vous avez déjà un compte Matrix vous pouvez vous connecter à la place.", + "Accept": "Accepter", + "Active call (%(roomName)s)": "Appel en cours (%(roomName)s)", + "Alias (optional)": "Alias (facultatif)", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossible de se connecter au serveur d'accueil - veuillez vérifier votre connexion, assurez-vous que le certificat SSL de votre serveur d'accueil est un certificat de confiance, et qu'aucune extension du navigateur ne bloque les requêtes.", + "Click here to join the discussion!": "Cliquer ici pour rejoindre la discussion !", + "Close": "Fermer", + "Custom": "Personnaliser", + "Decline": "Refuser", + "Disable Notifications": "Désactiver les notifications", + "Drop File Here": "Déposer le fichier Ici", + "Enable Notifications": "Activer les notifications", + "Failed to upload profile picture!": "Échec de l'envoi de l'image de profil !", + "Incoming call from %(name)s": "Appel entrant de %(name)s", + "Incoming video call from %(name)s": "Appel vidéo entrant de %(name)s", + "Incoming voice call from %(name)s": "Appel vocal entrant de %(name)s", + "No display name": "Pas de nom affiché", + "Private Chat": "Discussion privée", + "Public Chat": "Discussion publique", + "Reason: %(reasonText)s": "Raison : %(reasonText)s", + "Rejoin": "Rejoindre", + "Room contains unknown devices": "Le salon contient des appareils inconnus", + "%(roomName)s does not exist.": "%(roomName)s n'existe pas.", + "%(roomName)s is not accessible at this time.": "%(roomName)s n'est pas accessible pour le moment.", + "Seen by %(userName)s at %(dateTime)s": "Vu par %(userName)s à %(dateTime)s", + "Send anyway": "Envoyer quand même", + "Show Text Formatting Toolbar": "Afficher la barre de formatage de texte", + "Start authentication": "Commencer une authentification", + "This invitation was sent to an email address which is not associated with this account:": "Cette invitation a été envoyée à une adresse e-mail qui n'est pas associée avec ce compte :", + "This room": "Ce salon", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Impossible de vérifier que l'adresse à qui cette invitation a été envoyée correspond à celle associée à votre compte.", + "Undecryptable": "Indéchiffrable", + "Unencrypted message": "Message non chiffré", + "unknown caller": "appelant inconnu", + "Unnamed Room": "Salon anonyme", + "Unverified": "Non vérifié", + "Username invalid: %(errMessage)s": "Nom d'utilisateur non valide : %(errMessage)s", + "Verified": "Vérifié", + "Would you like to accept or decline this invitation?": "Souhaitez-vous accepter ou refuser cette invitation ?", + "You have been banned from %(roomName)s by %(userName)s.": "Vous avez été banni(e) de %(roomName)s par %(userName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "Vous avez été exclu de %(roomName)s par %(userName)s.", + "You may wish to login with a different account, or add this email to this account.": "Vous souhaiteriez peut-être vous identifier avec un autre compte, ou ajouter cette e-mail à votre compte.", + "Your home server does not support device management.": "Votre serveur d'accueil ne prend pas en charge la gestion d'appareils.", + "(~%(count)s results)": { + "one": "(~%(count)s résultat)", + "other": "(~%(count)s résultats)" + }, + "Device Name": "Nom de l'appareil", + "Encrypted by a verified device": "Chiffré par un appareil vérifié", + "Encrypted by an unverified device": "Chiffré par un appareil non vérifié", + "Encryption is enabled in this room": "Le chiffrement est activé sur ce salon", + "Encryption is not enabled in this room": "Le chiffrement n'est pas activé sur ce salon", + "Home": "Accueil", + "To link to a room it must have an address.": "Pour récupérer le lien vers un salon celui-ci doit avoir une adresse.", + "Upload new:": "Envoyer un nouveau :", + "Join as voice or video.": "Rejoindre en audio ou en vidéo.", + "Last seen": "Vu pour la dernière fois", + "Level:": "Niveau :", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (rang %(powerLevelNumber)s)", + "(could not connect media)": "(impossible de se connecter au média)", + "(no answer)": "(pas de réponse)", + "(unknown failure: %(reason)s)": "(erreur inconnue : %(reason)s)", + "Your browser does not support the required cryptography extensions": "Votre navigateur ne supporte pas les extensions cryptographiques nécessaires", + "Not a valid Riot keyfile": "Fichier de clé Riot non valide", + "Authentication check failed: incorrect password?": "Erreur d’authentification : mot de passe incorrect ?", + "Disable Peer-to-Peer for 1:1 calls": "Désactiver les appels 1 à 1 pair-à-pair", + "Do you want to set an email address?": "Souhaitez-vous configurer une adresse e-mail ?", + "This will allow you to reset your password and receive notifications.": "Ceci vous permettra de réinitialiser votre mot de passe et de recevoir des notifications.", + "Press to start a chat with someone": "Appuyez sur pour commencer une discussion avec quelqu'un", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Vous n'avez pas encore rejoint de salon ! Appuyez sur pour créer un salon ou sur pour explorer le répertoire", + "To return to your account in future you need to set a password": "Pour pouvoir accéder à votre compte dans le futur, vous devez définir un mot de passe", + "Skip": "Passer", + "Start verification": "Commencer la vérification", + "Share without verifying": "Partager sans vérifier", + "Ignore request": "Ignorer la requête", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Vous avez ajouté un nouvel appareil, \"%(displayName)s\", qui demande des clés de chiffrement.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Votre appareil non vérifié \"%(displayName)s\" demande des clés de chiffrement.", + "Encryption key request": "Requête de clé de chiffrement", + "Updates": "Mises à jour", + "Check for update": "Rechercher une mise à jour", + "Add a widget": "Ajouter un widget", + "Allow": "Autoriser", + "Changes colour scheme of current room": "Change le jeu de couleurs du salon", + "Delete widget": "Supprimer le widget", + "Define the power level of a user": "Définir le rang d'un utilisateur", + "Edit": "Modifier", + "Enable automatic language detection for syntax highlighting": "Activer la détection automatique de la langue pour la correction orthographique", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Masquer les messages d'arrivée/départ (n'affecte pas les invitations/exclusions/bannissements)", + "Revoke widget access": "Révoquer les accès du widget", + "Sets the room topic": "Défini le sujet du salon", + "To get started, please pick a username!": "Pour commencer, choisissez un nom d'utilisateur !", + "Unable to create widget.": "Impossible de créer un widget.", + "Unbans user with given id": "Révoque le bannissement de l'utilisateur à partir de son identifiant", + "You are not in this room.": "Vous n'êtes pas dans ce salon.", + "You do not have permission to do that in this room.": "Vous n'avez pas la permission d'effectuer cette action dans ce salon.", + "Autocomplete Delay (ms):": "Délai pour l'auto-complétion (ms) :", + "Loading device info...": "Chargement des informations de l'appareil...", + "Example": "Exemple", + "Create": "Créer", + "Featured Rooms:": "Salons mis en avant :", + "Featured Users:": "Utilisateurs mis en avant :", + "Automatically replace plain text Emoji": "Remplacer automatiquement le texte par des Émoticônes", + "Failed to upload image": "Impossible d'envoyer l'image", + "Hide avatars in user and room mentions": "Masquer les avatars dans les mentions d'utilisateur et de salon", + "Do you want to load widget from URL:": "Voulez-vous charger le widget depuis l’URL :", + "%(widgetName)s widget added by %(senderName)s": "Widget %(widgetName)s ajouté par %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Widget %(widgetName)s supprimé par %(senderName)s", + "Publish this room to the public in %(domain)s's room directory?": "Publier ce salon dans le répertoire de salons public de %(domain)s ?", + "Integrations Error": "Erreur d'intégration", + "Cannot add any more widgets": "Impossible d'ajouter plus de widgets", + "The maximum permitted number of widgets have already been added to this room.": "Le nombre maximum de widgets autorisés a déjà été atteint pour ce salon.", + "NOTE: Apps are not end-to-end encrypted": "NOTE : Les applications ne sont pas chiffrées de bout en bout", + "AM": "AM", + "PM": "PM", + "Copied!": "Copié !", + "Failed to copy": "Échec de la copie", + "Verifies a user, device, and pubkey tuple": "Vérifie un utilisateur, un appareil et une clé publique", + "%(widgetName)s widget modified by %(senderName)s": "Widget %(widgetName)s modifié par %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "La vérification robot n'est pas encore disponible pour le bureau - veuillez utiliser un navigateur", + "Who would you like to add to this community?": "Qui souhaitez-vous ajouter à cette communauté ?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Attention : toute personne ajoutée à une communauté sera visible par tous ceux connaissant l'identifiant de la communauté", + "Invite new community members": "Inviter de nouveaux membres dans cette communauté", + "Name or matrix ID": "Nom ou identifiant matrix", + "Which rooms would you like to add to this community?": "Quels salons souhaitez-vous ajouter à cette communauté ?", + "Add rooms to the community": "Ajouter des salons à la communauté", + "Room name or alias": "Nom du salon ou alias", + "Add to community": "Ajouter à la communauté", + "Failed to invite the following users to %(groupId)s:": "Échec de l'invitation des utilisateurs à %(groupId)s :", + "Failed to invite users to community": "Échec de l'invitation d'utilisateurs à la communauté", + "Failed to invite users to %(groupId)s": "Échec de l'invitation d'utilisateurs à %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Échec de l'ajout des salons suivants à %(groupId)s :", + "Ignored user": "Utilisateur ignoré", + "You are now ignoring %(userId)s": "Dorénavant vous ignorez %(userId)s", + "Unignored user": "Utilisateur n'étant plus ignoré", + "You are no longer ignoring %(userId)s": "Vous n'ignorez plus %(userId)s", + "Invite to Community": "Inviter dans la Communauté", + "Communities": "Communautés", + "Message Pinning": "Épingler un message", + "Mention": "Mentionner", + "Unignore": "Ne plus ignorer", + "Ignore": "Ignorer", + "Invite": "Inviter", + "User Options": "Options d'utilisateur", + "Admin Tools": "Outils d'administration", + "Unpin Message": "Dépingler le message", + "Jump to message": "Aller au message", + "No pinned messages.": "Aucun message épinglé.", + "Loading...": "Chargement...", + "Pinned Messages": "Messages épinglés", + "Unknown": "Inconnu", + "Unnamed room": "Salon sans nom", + "No rooms to show": "Aucun salon à afficher", + "Remove avatar": "Supprimer l'avatar", + "To change the room's avatar, you must be a": "Pour modifier l'avatar du salon, vous devez être un", + "To change the room's name, you must be a": "Pour changer le nom du salon, vous devez être un", + "To change the room's main address, you must be a": "Pour changer l'adresse principale du salon, vous devez être un", + "To change the room's history visibility, you must be a": "Pour changer la visibilité de l'historique d'un salon, vous devez être un", + "To change the permissions in the room, you must be a": "Pour changer les autorisations du salon, vous devez être un", + "To change the topic, you must be a": "Pour changer le sujet, vous devez être un", + "To modify widgets in the room, you must be a": "Pour modifier les widgets, vous devez être un", + "Banned by %(displayName)s": "Banni par %(displayName)s", + "To send messages, you must be a": "Pour envoyer des messages, vous devez être un(e)", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s a changé les messages épinglés du salon.", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s et %(count)s autres écrivent", + "one": "%(names)s et un autre écrivent" + }, + "Jump to read receipt": "Aller à l'accusé de lecture", + "World readable": "Lisible publiquement", + "Guests can join": "Les invités peuvent rejoindre le salon", + "To invite users into the room, you must be a": "Pour inviter des utilisateurs dans le salon, vous devez être un(e)", + "To configure the room, you must be a": "Pour configurer le salon, vous devez être un(e)", + "To kick users, you must be a": "Pour exclure des utilisateurs, vous devez être un(e)", + "To ban users, you must be a": "Pour bannir des utilisateurs, vous devez être un(e)", + "To remove other users' messages, you must be a": "Pour supprimer les messages d'autres utilisateurs, vous devez être un(e)", + "To send events of type , you must be a": "Pour envoyer des évènements du type , vous devez être un", + "Invalid community ID": "Identifiant de communauté non valide", + "'%(groupId)s' is not a valid community ID": "\"%(groupId)s\" n'est pas un identifiant de communauté valide", + "%(senderName)s sent an image": "%(senderName)s a envoyé une image", + "%(senderName)s sent a video": "%(senderName)s a envoyé une vidéo", + "%(senderName)s uploaded a file": "%(senderName)s a transféré un fichier", + "Disinvite this user?": "Désinviter l'utilisateur ?", + "Kick this user?": "Exclure cet utilisateur ?", + "Unban this user?": "Révoquer le bannissement de cet utilisateur ?", + "Ban this user?": "Bannir cet utilisateur ?", + "Drop here to favourite": "Déposer ici pour mettre en favori", + "Drop here to tag direct chat": "Déposer ici pour marquer comme conversation directe", + "Drop here to restore": "Déposer ici pour restaurer", + "Drop here to demote": "Déposer ici pour rétrograder", + "You have been kicked from this room by %(userName)s.": "Vous avez été exclu de ce salon par %(userName)s.", + "You have been banned from this room by %(userName)s.": "Vous avez été banni de ce salon par %(userName)s.", + "You are trying to access a room.": "Vous essayez d'accéder à un salon.", + "Members only (since the point in time of selecting this option)": "Seulement les membres (depuis la sélection de cette option)", + "Members only (since they were invited)": "Seulement les membres (depuis leur invitation)", + "Members only (since they joined)": "Seulement les membres (depuis leur arrivée)", + "New community ID (e.g. +foo:%(localDomain)s)": "Nouvel identifiant de communauté (par ex. +foo:%(localDomain)s)", + "Message removed by %(userId)s": "Message supprimé par %(userId)s", + "Message removed": "Message supprimé", + "An email has been sent to %(emailAddress)s": "Un e-mail a été envoyé à %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "Un message a été envoyé à %(msisdn)s", + "Remove from community": "Supprimer de la communauté", + "Disinvite this user from community?": "Désinviter cet utilisateur de la communauté ?", + "Remove this user from community?": "Supprimer cet utilisateur de la communauté ?", + "Failed to withdraw invitation": "Échec de l'annulation de l'invitation", + "Failed to remove user from community": "Échec de la suppression de l'utilisateur de la communauté", + "Filter community members": "Filtrer les membres de la communauté", + "Filter community rooms": "Filtrer les salons de la communauté", + "Failed to remove room from community": "Échec de la suppression du salon de la communauté", + "Failed to remove '%(roomName)s' from %(groupId)s": "Échec de la suppression de \"%(roomName)s\" de %(groupId)s", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Voulez-vous vraiment supprimer \"%(roomName)s\" de %(groupId)s ?", + "Removing a room from the community will also remove it from the community page.": "Supprimer un salon de la communauté le supprimera aussi de la page de la communauté.", + "Delete Widget": "Supprimer le widget", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Supprimer un widget le supprime pour tous les utilisateurs du salon. Voulez-vous vraiment supprimer ce widget ?", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s ont rejoint le salon %(count)s fois", + "one": "%(severalUsers)s ont rejoint le salon" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s a rejoint le salon %(count)s fois", + "one": "%(oneUser)s a rejoint le salon" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s sont partis %(count)s fois", + "one": "%(severalUsers)s sont partis" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s est parti %(count)s fois", + "one": "%(oneUser)s est parti" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s ont rejoint le salon et en sont partis %(count)s fois", + "one": "%(severalUsers)s ont rejoint le salon et en sont partis" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s a rejoint le salon et en est parti %(count)s fois", + "one": "%(oneUser)s a rejoint le salon et en est parti" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s sont partis et revenus %(count)s fois", + "one": "%(severalUsers)s sont partis et revenus" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s est parti et revenu %(count)s fois", + "one": "%(oneUser)s est parti et revenu" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s ont décliné leur invitation %(count)s fois", + "one": "%(severalUsers)s ont décliné leur invitation" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s a décliné son invitation %(count)s fois", + "one": "%(oneUser)s a décliné son invitation" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s ont vu leur invitation révoquée %(count)s fois", + "one": "%(severalUsers)s ont vu leur invitation révoquée" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s a vu son invitation révoquée %(count)s fois", + "one": "%(oneUser)s a vu son invitation révoquée" + }, + "were invited %(count)s times": { + "other": "ont été invités %(count)s fois", + "one": "ont été invités" + }, + "was invited %(count)s times": { + "other": "a été invité %(count)s fois", + "one": "a été invité" + }, + "were banned %(count)s times": { + "other": "ont été bannis %(count)s fois", + "one": "ont été bannis" + }, + "was banned %(count)s times": { + "other": "a été banni %(count)s fois", + "one": "a été banni" + }, + "were unbanned %(count)s times": { + "other": "ont vu leur bannissement révoqué %(count)s fois", + "one": "ont vu leur bannissement révoqué" + }, + "was unbanned %(count)s times": { + "other": "a vu son bannissement révoqué %(count)s fois", + "one": "a vu son bannissement révoqué" + }, + "were kicked %(count)s times": { + "other": "ont été exclus %(count)s fois", + "one": "ont été exclus" + }, + "was kicked %(count)s times": { + "other": "a été exclu %(count)s fois", + "one": "a été exclu" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s ont changé de nom %(count)s fois", + "one": "%(severalUsers)s ont changé de nom" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s a changé de nom %(count)s fois", + "one": "%(oneUser)s a changé de nom" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s ont changé d'avatar %(count)s fois", + "one": "%(severalUsers)s ont changé d'avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s a changé d'avatar %(count)s fois", + "one": "%(oneUser)s a changé d'avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s et %(count)s autres", + "one": "%(items)s et un autre" + }, + "And %(count)s more...": { + "other": "Et %(count)s autres..." + }, + "Matrix ID": "Identifiant Matrix", + "Matrix Room ID": "Identifiant de salon Matrix", + "email address": "adresse e-mail", + "Try using one of the following valid address types: %(validTypesList)s.": "Essayez d'utiliser un des types d'adresse valide suivants : %(validTypesList)s.", + "You have entered an invalid address.": "L'adresse saisie n'est pas valide.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Les identifiants de communauté ne peuvent contenir que les caractères a-z, 0-9 ou '=_-./'", + "Something went wrong whilst creating your community": "Une erreur est survenue lors de la création de votre communauté", + "Create Community": "Créer une communauté", + "Community Name": "Nom de la communauté", + "Community ID": "Identifiant de la communauté", + "example": "exemple", + "Advanced options": "Options avancées", + "Block users on other matrix homeservers from joining this room": "Empêcher les utilisateurs d'autres serveurs d'accueil Matrix de rejoindre ce salon", + "This setting cannot be changed later!": "Ce paramètre ne peut pas être changé plus tard !", + "Add rooms to the community summary": "Ajouter des salons au sommaire de la communauté", + "Which rooms would you like to add to this summary?": "Quels salons souhaitez-vous ajouter à ce sommaire ?", + "Add to summary": "Ajouter au sommaire", + "Failed to add the following rooms to the summary of %(groupId)s:": "Échec de l'ajout des salons suivants au sommaire de %(groupId)s :", + "Add a Room": "Ajouter un salon", + "Failed to remove the room from the summary of %(groupId)s": "Échec de la suppression du salon du sommaire de %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Le salon \"%(roomName)s\" n'a pas pu être supprimé du sommaire.", + "Add users to the community summary": "Ajouter des utilisateurs au sommaire de la communauté", + "Who would you like to add to this summary?": "Qui souhaitez-vous ajouter à ce sommaire ?", + "Failed to add the following users to the summary of %(groupId)s:": "Échec de l'ajout des utilisateurs suivants au sommaire de %(groupId)s :", + "Add a User": "Ajouter un utilisateur", + "Failed to remove a user from the summary of %(groupId)s": "Échec de la suppression d'un utilisateur du sommaire de %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "L'utilisateur \"%(displayName)s\" n'a pas pu être supprimé du sommaire.", + "Failed to update community": "Échec de la mise à jour de la communauté", + "Unable to accept invite": "Impossible d'accepter l'invitation", + "Unable to reject invite": "Impossible de décliner l'invitation", + "Leave Community": "Quitter la communauté", + "Leave %(groupName)s?": "Quitter %(groupName)s ?", + "Leave": "Quitter", + "Community Settings": "Paramètres de la communauté", + "Add rooms to this community": "Ajouter des salons à cette communauté", + "%(inviter)s has invited you to join this community": "%(inviter)s vous a invité à rejoindre cette communauté", + "You are an administrator of this community": "Vous êtes un(e) administrateur(trice) de cette communauté", + "You are a member of this community": "Vous êtes un membre de cette communauté", + "Long Description (HTML)": "Description longue (HTML)", + "Description": "Description", + "Community %(groupId)s not found": "Communauté %(groupId)s non trouvée", + "This Home server does not support communities": "Ce serveur d'accueil ne prend pas en charge les communautés", + "Failed to load %(groupId)s": "Échec du chargement de %(groupId)s", + "Your Communities": "Vos communautés", + "You're not currently a member of any communities.": "Vous n'êtes actuellement membre d'aucune communauté.", + "Error whilst fetching joined communities": "Erreur lors de l'obtention des communautés rejointes", + "Create a new community": "Créer une nouvelle communauté", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Créez une communauté pour grouper des utilisateurs et des salons ! Construisez une page d'accueil personnalisée pour distinguer votre espace dans l'univers Matrix.", + "Disable Emoji suggestions while typing": "Désactiver les suggestions d'emojis lors de la saisie", + "Disable big emoji in chat": "Désactiver les gros emojis dans les discussions", + "Mirror local video feed": "Refléter le flux vidéo local", + "Light theme": "Thème clair", + "Dark theme": "Thème sombre", + "Ignored Users": "Utilisateurs ignorés", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Un e-mail a été envoyé à %(emailAddress)s. Après avoir suivi le lien présent dans celui-ci, cliquez ci-dessous.", + "Ignores a user, hiding their messages from you": "Ignore un utilisateur, en masquant ses messages", + "Stops ignoring a user, showing their messages going forward": "N'ignore plus un utilisateur, en affichant ses messages à partir de maintenant", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "La visibilité de \"%(roomName)s\" dans %(groupId)s n'a pas pu être mise à jour.", + "Visibility in Room List": "Visibilité dans la liste des salons", + "Visible to everyone": "Visible pour tout le monde", + "Only visible to community members": "Visible uniquement par les membres de la communauté", + "Community Invites": "Invitations de communauté", + "Notify the whole room": "Notifier tout le salon", + "Room Notification": "Notification du salon", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ces salons sont affichés aux membres de la communauté sur la page de la communauté. Les membres de la communauté peuvent rejoindre ces salons en cliquant dessus.", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML pour votre page de communauté

\n

\n Utilisez la description longue pour présenter la communauté aux nouveaux membres\n ou pour diffuser des liens importants\n

\n

\n Vous pouvez même utiliser des balises \"img\"\n

\n", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Votre communauté n'a pas de description longue, une page HTML à montrer aux membres de la communauté.
Cliquez ici pour ouvrir les réglages et créez-la !", + "Show these rooms to non-members on the community page and room list?": "Afficher ces salons aux non-membres sur la page de communauté et la liste des salons ?", + "Sign in to get started": "Connectez-vous pour commencer", + "Status.im theme": "Thème Status.im", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Veuillez noter que vous vous connectez au serveur %(hs)s, pas à matrix.org.", + "Username on %(hs)s": "Nom d'utilisateur sur %(hs)s", + "Restricted": "Restreint", + "Custom of %(powerLevel)s": "Personnalisé de %(powerLevel)s", + "Hide avatar changes": "Masquer les changements d'avatar", + "Hide display name changes": "Masquer les changements de nom affiché", + "Enable inline URL previews by default": "Activer l'aperçu des URL par défaut", + "Enable URL previews for this room (only affects you)": "Activer l'aperçu des URL pour ce salon (n'affecte que vous)", + "Enable URL previews by default for participants in this room": "Activer l'aperçu des URL par défaut pour les participants de ce salon", + "URL previews are enabled by default for participants in this room.": "Les aperçus d'URL sont activés par défaut pour les participants de ce salon.", + "URL previews are disabled by default for participants in this room.": "Les aperçus d'URL sont désactivés par défaut pour les participants de ce salon.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Il n'y a personne d'autre ici ! Souhaitez-vous inviter d'autres personnes ou ne plus être notifié à propos du salon vide ?", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sj", + "Online for %(duration)s": "En ligne depuis %(duration)s", + "Idle for %(duration)s": "Inactif depuis %(duration)s", + "Offline for %(duration)s": "Hors ligne depuis %(duration)s", + "Unknown for %(duration)s": "Inconnu depuis %(duration)s", + "Delete %(count)s devices": { + "one": "Supprimer l'appareil", + "other": "Supprimer %(count)s appareils" + }, + "Select devices": "Sélectionner les appareils", + "Something went wrong when trying to get your communities.": "Une erreur est survenue lors de l'obtention de vos communautés.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Ce serveur d'accueil n'offre aucune méthode d'identification compatible avec ce client.", + "Flair": "Badge", + "Showing flair for these communities:": "Ce salon affichera les badges pour ces communautés :", + "This room is not showing flair for any communities": "Ce salon n'affiche de badge pour aucune communauté", + "Flair will appear if enabled in room settings": "Les badges n'apparaîtront que s'ils sont activés dans les paramètres de chaque salon", + "Flair will not appear": "Les badges n'apparaîtront pas", + "Display your community flair in rooms configured to show it.": "Sélectionnez les badges dans les paramètres de chaque salon pour les afficher.", + "Addresses": "Adresses", + "expand": "développer", + "collapse": "réduire", + "Call Failed": "Échec de l'appel", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Il y a des appareils inconnus dans ce salon : si vous continuez sans les vérifier, quelqu'un pourrait épier votre appel.", + "Review Devices": "Passer en revue les appareils", + "Call Anyway": "Appeler quand même", + "Answer Anyway": "Répondre quand même", + "Call": "Appel", + "Answer": "Répondre", + "Send": "Envoyer", + "Old cryptography data detected": "Anciennes données de chiffrement détectées", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Nous avons détecté des données d'une ancienne version de Riot. Le chiffrement de bout-en-bout n'aura pas fonctionné correctement sur l'ancienne version. Les messages chiffrés échangés récemment dans l'ancienne version ne sont peut-être pas déchiffrables dans cette version. Les échanges de message avec cette version peuvent aussi échouer. Si vous rencontrez des problèmes, déconnectez-vous puis reconnectez-vous. Pour conserver l'historique des messages, exportez puis réimportez vos clés de chiffrement.", + "Warning": "Attention", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Vous ne pourrez pas annuler cette modification car vous vous destituez. Si vous êtes le dernier utilisateur privilégié de ce salon, il sera impossible de récupérer les privilèges.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Tout renvoyer ou tout annuler maintenant. Vous pouvez aussi choisir des messages individuels à renvoyer ou annuler.", + "one": "Renvoyer le message ou annuler le message maintenant." + }, + "Send an encrypted reply…": "Envoyer une réponse chiffrée…", + "Send a reply (unencrypted)…": "Envoyer une réponse (non chiffrée)…", + "Send an encrypted message…": "Envoyer un message chiffré…", + "Send a message (unencrypted)…": "Envoyer un message (non chiffré)…", + "Replying": "Répond", + "Minimize apps": "Minimiser les applications", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Le respect de votre vie privée est important pour nous, donc nous ne collectons aucune donnée personnelle ou permettant de vous identifier pour nos statistiques.", + "Learn more about how we use analytics.": "En savoir plus sur notre utilisation des statistiques.", + "The information being sent to us to help make Riot.im better includes:": "Les informations qui nous sont envoyées pour nous aider à améliorer Riot.im comprennent :", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Si la page contient des informations permettant de vous identifier, comme un salon, un identifiant d'utilisateur ou de groupe, ces données sont enlevées avant qu'elle ne soit envoyée au serveur.", + "The platform you're on": "La plateforme que vous utilisez", + "The version of Riot.im": "La version de Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Si vous êtes connecté ou non (nous n'enregistrons pas votre nom d'utilisateur)", + "Your language of choice": "La langue que vous avez choisie", + "Which officially provided instance you are using, if any": "Quelle instance officielle vous utilisez, si c'est le cas", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Si vous utilisez le mode de texte enrichi de l'éditeur de texte enrichi", + "Your homeserver's URL": "L'URL de votre serveur d'accueil", + "Your identity server's URL": "L'URL de votre serveur d'identité", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s", + "This room is not public. You will not be able to rejoin without an invite.": "Ce salon n'est pas public. Vous ne pourrez pas y revenir sans invitation.", + "Community IDs cannot be empty.": "Les identifiants de communauté ne peuvent pas être vides.", + "Show devices, send anyway or cancel.": "Afficher les appareils, envoyer quand même ou annuler.", + "In reply to ": "En réponse à ", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s a changé son nom affiché en %(displayName)s.", + "Failed to set direct chat tag": "Échec de l'ajout de l'étiquette discussion directe", + "Failed to remove tag %(tagName)s from room": "Échec de la suppression de l'étiquette %(tagName)s du salon", + "Failed to add tag %(tagName)s to room": "Échec de l'ajout de l'étiquette %(tagName)s au salon", + "Clear filter": "Supprimer les filtres", + "Did you know: you can use communities to filter your Riot.im experience!": "Le saviez-vous : vous pouvez utiliser les communautés pour filtrer votre expérience Riot.im !", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Pour activer un filtre, faites glisser un avatar de communauté sur le panneau des filtres tout à gauche de l'écran. Vous pouvez cliquer sur un avatar dans ce panneau quand vous le souhaitez afin de ne voir que les salons et les personnes associés à cette communauté.", + "Disable Community Filter Panel": "Désactiver le panneau de filtre de communauté", + "Your key share request has been sent - please check your other devices for key share requests.": "Votre demande de partage de clé a été envoyée - veuillez vérifier les demandes de partage de clé sur vos autres appareils.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Les demandes de partage de clé sont envoyées à vos autres appareils automatiquement. Si vous rejetez ou supprimez la demande de partage de clé sur vos autres appareils, cliquez ici pour redemander les clés pour cette session.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Si vos autres appareils n'ont pas la clé pour ce message, vous ne pourrez pas le déchiffrer.", + "Key request sent.": "Demande de clé envoyée.", + "Re-request encryption keys from your other devices.": "Re-demander les clés de chiffrement depuis vos autres appareils.", + "%(user)s is a %(userRole)s": "%(user)s est %(userRole)s", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Vu par %(displayName)s (%(userName)s) à %(dateTime)s", + "Code": "Code", + "Debug Logs Submission": "Envoi des journaux de débogage", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Si vous avez signalé un bug via GitHub, les journaux de débogage peuvent nous aider à identifier le problème. Les journaux de débogage contiennent des données d'utilisation de l'application dont votre nom d'utilisateur, les identifiants ou alias des salons ou groupes que vous avez visité et les noms d'utilisateur des autres participants. Ils ne contiennent pas les messages.", + "Submit debug logs": "Envoyer les journaux de débogage", + "Opens the Developer Tools dialog": "Ouvre la fenêtre des Outils de développeur", + "Unable to join community": "Impossible de rejoindre la communauté", + "Unable to leave community": "Impossible de quitter la communauté", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Les changements effectués au nom et à l'avatar de votre communauté peuvent prendre jusqu'à 30 minutes avant d'être vus par d'autres utilisateurs.", + "Join this community": "Rejoindre cette communauté", + "Leave this community": "Quitter cette communauté", + "Stickerpack": "Pack de stickers", + "You don't currently have any stickerpacks enabled": "Vous n'avez activé aucun pack de stickers pour l'instant", + "Add a stickerpack": "Ajouter un pack de stickers", + "Hide Stickers": "Masquer les stickers", + "Show Stickers": "Afficher les stickers", + "Who can join this community?": "Qui peut rejoindre cette communauté ?", + "Everyone": "Tout le monde", + "Fetching third party location failed": "Échec de la récupération de la localisation tierce", + "A new version of Riot is available.": "Une nouvelle version de Riot est disponible.", + "Couldn't load home page": "Impossible de charger la page d'accueil", + "Send Account Data": "Envoyer les données du compte", + "All notifications are currently disabled for all targets.": "Toutes les notifications sont désactivées pour tous les appareils.", + "Uploading report": "Envoi du rapport", + "Sunday": "Dimanche", + "Notification targets": "Appareils recevant les notifications", + "Today": "Aujourd'hui", + "Files": "Fichiers", + "You are not receiving desktop notifications": "Vous ne recevez pas les notifications sur votre bureau", + "Friday": "Vendredi", + "Update": "Mettre à jour", + "What's New": "Nouveautés", + "Add an email address above to configure email notifications": "Ajouter une adresse e-mail pour la configuration des notifications par e-mail", + "Expand panel": "Dévoiler le panneau", + "On": "Activé", + "%(count)s Members": { + "other": "%(count)s membres", + "one": "%(count)s membre" + }, + "Filter room names": "Filtrer les salons par nom", + "Changelog": "Journal des modifications", + "Waiting for response from server": "En attente d’une réponse du serveur", + "Send Custom Event": "Envoyer l'événement personnalisé", + "Advanced notification settings": "Paramètres de notification avancés", + "delete the alias.": "supprimer l'alias.", + "To return to your account in future you need to set a password": "Pour pouvoir retrouver votre compte dans le futur, vous devez définir un mot de passe", + "Forget": "Oublier", + "#example": "#exemple", + "Hide panel": "Cacher le panneau", + "You cannot delete this image. (%(code)s)": "Vous ne pouvez pas supprimer cette image. (%(code)s)", + "Cancel Sending": "Annuler l'envoi", + "This Room": "Ce salon", + "The Home Server may be too old to support third party networks": "Le serveur d'accueil semble trop ancien pour supporter des réseaux tiers", + "Noisy": "Bruyant", + "Room not found": "Salon non trouvé", + "Messages containing my display name": "Messages contenant mon nom affiché", + "Messages in one-to-one chats": "Messages dans les discussions directes", + "Unavailable": "Indisponible", + "View Decrypted Source": "Voir la source déchiffrée", + "Failed to update keywords": "Échec dans la mise à jour des mots-clés", + "remove %(name)s from the directory.": "supprimer %(name)s du répertoire.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Les notifications pour les mots-clés suivant répondent à des critères qui ne peuvent pas être affichés ici :", + "Safari and Opera work too.": "Safari et Opera fonctionnent également.", + "Please set a password!": "Veuillez définir un mot de passe !", + "You have successfully set a password!": "Vous avez défini un mot de passe avec succès !", + "An error occurred whilst saving your email notification preferences.": "Une erreur est survenue lors de la sauvegarde de vos préférences de notification par e-mail.", + "Explore Room State": "Parcourir l'état du salon", + "Source URL": "URL de la source", + "Messages sent by bot": "Messages envoyés par des robots", + "Filter results": "Filtrer les résultats", + "Members": "Membres", + "No update available.": "Aucune mise à jour disponible.", + "Resend": "Renvoyer", + "Failed to get protocol list from Home Server": "Échec lors de la récupération de la liste sur le serveur", + "Collecting app version information": "Récupération des informations de version de l’application", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Supprimer l'alias %(alias)s du salon et supprimer %(name)s du répertoire ?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Cela vous permettra de retourner sur votre compte après vous être déconnecté, et de vous identifier sur d'autres appareils.", + "Keywords": "Mots-clés", + "Enable notifications for this account": "Activer les notifications pour ce compte", + "Directory": "Répertoire", + "Invite to this community": "Inviter à cette communauté", + "Failed to get public room list": "Échec lors de la récupération de la liste des salons publics", + "Messages containing keywords": "Messages contenant des mots-clés", + "Error saving email notification preferences": "Erreur lors de la sauvegarde des préférences de notification par e-mail", + "Tuesday": "Mardi", + "Enter keywords separated by a comma:": "Entrez les mots-clés séparés par une virgule :", + "Search…": "Rechercher…", + "You have successfully set a password and an email address!": "Vous avez défini un mot de passe et une adresse e-mail avec succès !", + "Remove %(name)s from the directory?": "Supprimer %(name)s du répertoire ?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilise de nombreuses fonctionnalités avancées du navigateur, certaines ne sont pas disponibles ou expérimentales dans votre navigateur actuel.", + "Developer Tools": "Outils de développement", + "Enable desktop notifications": "Activer les notifications de bureau", + "Remember, you can always set an email address in user settings if you change your mind.": "Souvenez-vous que vous pourrez toujours définir une adresse e-mail dans les paramètres de l'utilisateur si vous changez d’avis.", + "Explore Account Data": "Explorer les données du compte", + "Remove from Directory": "Supprimer du répertoire", + "Saturday": "Samedi", + "I understand the risks and wish to continue": "Je comprends les risques et souhaite continuer", + "Direct Chat": "Discussion directe", + "The server may be unavailable or overloaded": "Le serveur est indisponible ou surchargé", + "Reject": "Rejeter", + "Failed to set Direct Message status of room": "Échec du réglage de l'état du salon en Discussion directe", + "Monday": "Lundi", + "All messages (noisy)": "Tous les messages (fort)", + "Enable them now": "Les activer maintenant", + "Messages containing my user name": "Message contenant mon nom d'utilisateur", + "Toolbox": "Boîte à outils", + "Collecting logs": "Récupération des journaux", + "more": "plus", + "You must specify an event type!": "Vous devez spécifier un type d'événement !", + "(HTTP status %(httpStatus)s)": "(état HTTP %(httpStatus)s)", + "Invite to this room": "Inviter dans ce salon", + "Please install Chrome or Firefox for the best experience.": "Veuillez installer Chrome ou Firefox pour une expérience optimale.", + "Wednesday": "Mercredi", + "You cannot delete this message. (%(code)s)": "Vous ne pouvez pas supprimer ce message. (%(code)s)", + "Quote": "Citer", + "Send logs": "Envoyer les journaux", + "All messages": "Tous les messages", + "Call invitation": "Appel entrant", + "Downloading update...": "Mise à jour en cours de téléchargement...", + "State Key": "Clé d'état", + "Failed to send custom event.": "Échec de l'envoi de l'événement personnalisé.", + "What's new?": "Nouveautés", + "Notify me for anything else": "Me notifier pour tout le reste", + "View Source": "Voir la source", + "Can't update user notification settings": "Impossible de mettre à jour les paramètres de notification de l'utilisateur", + "Notify for all other messages/rooms": "Me notifier pour tous les autres messages/salons", + "Unable to look up room ID from server": "Impossible de récupérer l'ID du salon sur le serveur", + "Couldn't find a matching Matrix room": "Impossible de trouver un salon Matrix correspondant", + "All Rooms": "Tous les salons", + "Search for a room": "Rechercher un salon", + "Thursday": "Jeudi", + "Forward Message": "Transférer le message", + "Back": "Retour", + "Reply": "Répondre", + "Show message in desktop notification": "Afficher le message dans les notifications de bureau", + "Unhide Preview": "Dévoiler l'aperçu", + "Unable to join network": "Impossible de rejoindre le réseau", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Vous les avez probablement configurées dans un autre client que Riot. Vous ne pouvez pas les configurer dans Riot mais elles s'appliquent quand même", + "Sorry, your browser is not able to run Riot.": "Désolé, Riot n'est pas supporté par votre navigateur.", + "Uploaded on %(date)s by %(user)s": "Téléchargé le %(date)s par %(user)s", + "Messages in group chats": "Messages dans les discussions de groupe", + "Yesterday": "Hier", + "Error encountered (%(errorDetail)s).": "Erreur rencontrée (%(errorDetail)s).", + "Login": "Connexion", + "Low Priority": "Priorité basse", + "Unable to fetch notification target list": "Impossible de récupérer la liste des appareils recevant les notifications", + "Set Password": "Définir un mot de passe", + "Enable audible notifications in web client": "Activer les notifications sonores pour le client web", + "Off": "Désactivé", + "Riot does not know how to join a room on this network": "Riot ne peut pas joindre un salon sur ce réseau", + "Mentions only": "Seulement les mentions", + "You can now return to your account after signing out, and sign in on other devices.": "Vous pouvez maintenant revenir sur votre compte après vous être déconnecté, et vous identifier sur d'autres appareils.", + "Enable email notifications": "Activer les notifications par e-mail", + "Event Type": "Type d'événement", + "Download this file": "Télécharger ce fichier", + "Pin Message": "Épingler le message", + "Failed to change settings": "Échec de la mise à jour des paramètres", + "View Community": "Voir la communauté", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Depuis votre navigateur actuel, le visuel et le ressenti de l'application pourraient être complètement erronés, et certaines fonctionnalités pourraient ne pas être supportées. Vous pouvez continuer malgré tout, mais vous n'aurez aucune aide si vous rencontrez des problèmes !", + "Event sent!": "Événement envoyé !", + "Event Content": "Contenu de l'événement", + "Thank you!": "Merci !", + "Collapse panel": "Cacher le panneau", + "When I'm invited to a room": "Quand je suis invité dans un salon", + "Checking for an update...": "Recherche de mise à jour...", + "There are advanced notifications which are not shown here": "Il existe une configuration avancée des notifications qui ne peut être affichée ici", + "Logs sent": "Journaux envoyés", + "GitHub issue link:": "Lien du signalement GitHub :", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Les journaux de débogage contiennent des données d'usage de l'application qui incluent votre nom d'utilisateur, les identifiants ou alias des salons ou groupes auxquels vous avez rendu visite ainsi que les noms des autres utilisateurs. Ils ne contiennent aucun message.", + "Failed to send logs: ": "Échec lors de l'envoi des journaux : ", + "Notes:": "Notes :", + "Preparing to send logs": "Préparation d'envoi des journaux", + "Missing roomId.": "Identifiant de salon manquant.", + "Picture": "Image", + "Popout widget": "Détacher le widget", + "Every page you use in the app": "Toutes les pages que vous utilisez dans l'application", + "e.g. ": "par ex. ", + "Your User Agent": "Votre user agent", + "Your device resolution": "La résolution de votre appareil", + "Always show encryption icons": "Toujours afficher les icônes de chiffrement", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Les bugs de Riot sont suivis sur GitHub : créer un signalement GitHub.", + "Log out and remove encryption keys?": "Se déconnecter et effacer les clés de chiffrement ?", + "Send Logs": "Envoyer les journaux", + "Clear Storage and Sign Out": "Effacer le stockage et se déconnecter", + "Refresh": "Rafraîchir", + "We encountered an error trying to restore your previous session.": "Une erreur est survenue lors de la récupération de la dernière session.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Effacer le stockage de votre navigateur peut résoudre le problème, mais cela vous déconnectera et tous les historiques de conversation encryptés seront illisibles.", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Pour le moment il n'est pas possible de répondre avec un fichier donc ceci sera envoyé sans être une réponse.", + "Unable to reply": "Impossible de répondre", + "At this time it is not possible to reply with an emote.": "Pour le moment il n'est pas possible de répondre avec un émoji.", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Impossible de charger l'événement auquel il a été répondu, soit il n'existe pas, soit vous n'avez pas l'autorisation de le voir.", + "Collapse Reply Thread": "Masquer le fil de réponse", + "Enable widget screenshots on supported widgets": "Activer les captures d'écran des widgets pris en charge", + "Send analytics data": "Envoyer les données analytiques", + "Muted Users": "Utilisateurs ignorés", + "Warning: This widget might use cookies.": "Avertissement : ce widget utilise peut-être des cookies.", + "Terms and Conditions": "Conditions générales", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Pour continuer à utiliser le serveur d'accueil %(homeserverDomain)s, vous devez lire et accepter nos conditions générales.", + "Review terms and conditions": "Voir les conditions générales", + "Failed to indicate account erasure": "Échec de notification de la suppression du compte", + "To continue, please enter your password:": "Pour continuer, veuillez renseigner votre mot de passe :", + "password": "mot de passe", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Votre compte sera inutilisable de façon permanente. Vous ne pourrez plus vous reconnecter et personne ne pourra se réenregistrer avec le même identifiant d'utilisateur. Votre compte quittera tous les salons auxquels il participe et tous ses détails seront supprimés du serveur d'identité. Cette action est irréversible.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "La désactivation du compte ne nous fait pas oublier les messages que vous avez envoyés par défaut. Si vous souhaitez que nous les oubliions, cochez la case ci-dessous.", + "e.g. %(exampleValue)s": "par ex. %(exampleValue)s", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "La visibilité des messages dans Matrix est la même que celle des e-mails. Quand nous oublions vos messages, cela signifie que les messages que vous avez envoyés ne seront partagés avec aucun nouvel utilisateur ou avec les utilisateurs non enregistrés, mais les utilisateurs enregistrés qui ont déjà eu accès à ces messages en conserveront leur propre copie.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Veuillez oublier tous les messages que j'ai envoyé quand mon compte sera désactivé (Avertissement : les futurs utilisateurs verront des conversations incomplètes)", + "Reload widget": "Recharger le widget", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Veuillez aider Riot.im à s'améliorer en envoyant des données d'utilisation anonymes. Cela utilisera un cookie (veuillez voir notre politique de cookie).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Veuillez aider Riot.im à s'améliorer en envoyant des données d'utilisation anonymes. Cela utilisera un cookie.", + "Yes, I want to help!": "Oui, je veux aider !", + "Can't leave Server Notices room": "Impossible de quitter le salon des Annonces du serveur", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Ce salon est utilisé pour les messages importants du serveur d'accueil, donc vous ne pouvez pas en partir.", + "To notify everyone in the room, you must be a": "Pour notifier tout le monde dans le salon, vous devez être un(e)", + "Try the app first": "Essayer d'abord l'application", + "Encrypting": "Chiffrement en cours", + "Encrypted, not sent": "Chiffré, pas envoyé", + "No Audio Outputs detected": "Aucune sortie audio détectée", + "Audio Output": "Sortie audio", + "Share Link to User": "Partager le lien vers l'utilisateur", + "Share room": "Partager le salon", + "Share Room": "Partager le salon", + "Link to most recent message": "Lien vers le message le plus récent", + "Share User": "Partager l'utilisateur", + "Share Community": "Partager la communauté", + "Share Room Message": "Partager le message du salon", + "Link to selected message": "Lien vers le message sélectionné", + "COPY": "COPIER", + "Share Message": "Partager le message", + "Jitsi Conference Calling": "Appel en téléconférence Jitsi", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Dans les salons chiffrés, comme celui-ci, l'aperçu des liens est désactivé par défaut pour s'assurer que le serveur d'accueil (où sont générés les aperçus) ne puisse pas collecter d'informations sur les liens qui apparaissent dans ce salon.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quand quelqu'un met un lien dans son message, un aperçu du lien peut être affiché afin de fournir plus d'informations sur ce lien comme le titre, la description et une image du site.", + "The email field must not be blank.": "Le champ de l'adresse e-mail ne doit pas être vide.", + "The user name field must not be blank.": "Le champ du nom d'utilisateur ne doit pas être vide.", + "The phone number field must not be blank.": "Le champ du numéro de téléphone ne doit pas être vide.", + "The password field must not be blank.": "Le champ du mot de passe ne doit pas être vide.", + "Call in Progress": "Appel en cours", + "A call is already in progress!": "Un appel est déjà en cours !", + "You have no historical rooms": "Vous n'avez aucun salon historique", + "You can't send any messages until you review and agree to our terms and conditions.": "Vous ne pouvez voir aucun message tant que vous ne lisez et n'acceptez pas nos conditions générales.", + "Demote yourself?": "Vous rétrograder ?", + "Demote": "Rétrograder", + "Show empty room list headings": "Afficher les en-têtes de la liste des salons vides", + "This event could not be displayed": "Cet événement n'a pas pu être affiché", + "deleted": "barré", + "underlined": "souligné", + "inline-code": "code", + "block-quote": "citation", + "bulleted-list": "liste à puces", + "numbered-list": "liste à numéros", + "A conference call could not be started because the intgrations server is not available": "L'appel en téléconférence n'a pas pu aboutir car le serveur d'intégrations n'est pas disponible", + "Permission Required": "Permission requise", + "You do not have permission to start a conference call in this room": "Vous n'avez pas la permission de lancer un appel en téléconférence dans ce salon", + "A call is currently being placed!": "Un appel est en cours !", + "Failed to remove widget": "Échec de la suppression du widget", + "An error ocurred whilst trying to remove the widget from the room": "Une erreur est survenue lors de la suppression du widget du salon", + "This homeserver has hit its Monthly Active User limit": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs", + "Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "System Alerts": "Alertes système", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter. Veuillez contacter l'administrateur de votre service pour augmenter cette limite.", + "Internal room ID: ": "Identifiant interne du salon : ", + "Room version number: ": "Numéro de version du salon : ", + "There is a known vulnerability affecting this room.": "Ce salon est touché par une faille de sécurité connue.", + "This room version is vulnerable to malicious modification of room state.": "Ce salon est vulnérable à la modification malveillante de l'état du salon.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Cliquer ici pour mettre le salon à niveau vers la dernière version et s'assurer que l'intégrité du salon est protégée.", + "Only room administrators will see this warning": "Seuls les administrateurs du salon verront cet avertissement", + "Please contact your service administrator to continue using the service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "This homeserver has hit its Monthly Active User limit.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs.", + "This homeserver has exceeded one of its resource limits.": "Ce serveur d'accueil a dépassé une de ses limites de ressources.", + "Please contact your service administrator to get this limit increased.": "Veuillez contacter l'administrateur de votre service pour augmenter cette limite.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Ce serveur d'accueil a atteint sa limite mensuelle d'utilisateurs actifs donc certains utilisateurs ne pourront pas se connecter.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Ce serveur d'accueil a atteint une de ses limites de ressources donc certains utilisateurs ne pourront pas se connecter.", + "Upgrade Room Version": "Mettre à niveau la version du salon", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "La mise à niveau de ce salon nécessite la clôture de l'instance en cours du salon et la création d'un nouveau salon à la place. Pour donner la meilleure expérience possible aux participants, nous allons :", + "Create a new room with the same name, description and avatar": "Créer un salon avec le même nom, la même description et le même avatar", + "Update any local room aliases to point to the new room": "Mettre à jour tous les alias du salon locaux pour qu'ils dirigent vers le nouveau salon", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Empêcher les utilisateurs de discuter dans l'ancienne version du salon et envoyer un message conseillant aux nouveaux utilisateurs d'aller dans le nouveau salon", + "Put a link back to the old room at the start of the new room so people can see old messages": "Fournir un lien vers l'ancien salon au début du nouveau salon pour que l'on puisse voir les vieux messages", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car le serveur d'accueil a atteint sa limite mensuelle d'utilisateurs. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Votre message n'a pas été envoyé car ce serveur d'accueil a dépassé une de ses limites de ressources. Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "Please contact your service administrator to continue using this service.": "Veuillez contacter l'administrateur de votre service pour continuer à l'utiliser.", + "Increase performance by only loading room members on first view": "Améliorer les performances en ne chargeant les participants des salons qu'au premier affichage", + "Lazy loading members not supported": "La chargement différé des participants n'est pas pris en charge", + "Lazy loading is not supported by your current homeserver.": "Le chargement différé n'est pas pris en charge par votre serveur d'accueil actuel.", + "Sorry, your homeserver is too old to participate in this room.": "Désolé, votre serveur d'accueil est trop vieux pour participer à ce salon.", + "Please contact your homeserver administrator.": "Veuillez contacter l'administrateur de votre serveur d'accueil.", + "Legal": "Légal", + "This room has been replaced and is no longer active.": "Ce salon a été remplacé et n'est plus actif.", + "The conversation continues here.": "La discussion continue ici.", + "Upgrade room to version %(ver)s": "Mettre à niveau le salon vers la version %(ver)s", + "This room is a continuation of another conversation.": "Ce salon est la suite d'une autre discussion.", + "Click here to see older messages.": "Cliquer ici pour voir les vieux messages.", + "Failed to upgrade room": "Échec de la mise à niveau du salon", + "The room upgrade could not be completed": "La mise à niveau du salon n'a pas pu être effectuée", + "Upgrade this room to version %(version)s": "Mettre à niveau ce salon vers la version %(version)s", + "Forces the current outbound group session in an encrypted room to be discarded": "Force la session de groupe sortante actuelle dans un salon chiffré à être rejetée", + "Error Discarding Session": "Erreur lors du rejet de la session", + "Registration Required": "Enregistrement nécessaire", + "You need to register to do this. Would you like to register now?": "Vous devez vous enregistrer pour faire cela. Voulez-vous créer un compte maintenant ?", + "Unable to query for supported registration methods": "Impossible de demander les méthodes d'enregistrement prises en charge", + "Unable to connect to Homeserver. Retrying...": "Impossible de se connecter au serveur d'accueil. Reconnexion...", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "one": "%(senderName)s a ajouté %(addedAddresses)s comme adresse pour ce salon.", + "other": "%(senderName)s a ajouté %(addedAddresses)s comme adresses pour ce salon." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "one": "%(senderName)s a supprimé %(removedAddresses)s comme adresse pour ce salon.", + "other": "%(senderName)s a supprimé %(removedAddresses)s comme adresses pour ce salon." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s a ajouté %(addedAddresses)s et supprimé %(removedAddresses)s comme adresses pour ce salon.", + "%(senderName)s set the canonical address for this room to %(address)s.": "%(senderName)s a défini l'adresse canonique de ce salon comme %(address)s.", + "%(senderName)s removed the canonical address for this room.": "%(senderName)s a supprimé l'adresse canonique de ce salon.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s à défini l'adresse principale pour ce salon comme %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s a supprimé l'adresse principale de ce salon.", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot utilise maintenant 3 à 5 fois moins de mémoire, en ne chargeant les informations des autres utilisateurs que quand elles sont nécessaires. Veuillez patienter pendant que l'on se resynchronise avec le serveur !", + "Updating Riot": "Mise à jour de Riot", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Avant de soumettre vos journaux, vous devez créer une « issue » sur GitHub pour décrire votre problème.", + "What GitHub issue are these logs for?": "Pour quelle « issue » Github sont ces journaux ?", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

HTML pour votre page de communauté

\n

\n Utilisez la description longue pour présenter la communauté aux nouveaux membres,\n ou fournir des liens importants\n

\n

\n Vous pouvez même utiliser des balises « img »\n

\n", + "Submit Debug Logs": "Envoyer les journaux de débogage", + "An email address is required to register on this homeserver.": "Une adresse e-mail est nécessaire pour s'enregistrer sur ce serveur d'accueil.", + "A phone number is required to register on this homeserver.": "Un numéro de téléphone est nécessaire pour s'enregistrer sur ce serveur d'accueil.", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Vous avez utilisé auparavant Riot sur %(host)s avec le chargement différé activé. Dans cette version le chargement différé est désactivé. Comme le cache local n'est pas compatible entre ces deux réglages, Riot doit resynchroniser votre compte.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Si l'autre version de Riot est encore ouverte dans un autre onglet, merci de le fermer car l'utilisation de Riot sur le même hôte avec le chargement différé activé et désactivé à la fois causera des problèmes.", + "Incompatible local cache": "Cache local incompatible", + "Clear cache and resync": "Vider le cache et resynchroniser", + "Please accept all of the policies": "Veuillez accepter toutes les politiques", + "Please review and accept the policies of this homeserver:": "Veuillez lire et accepter les politiques de ce serveur d'accueil :", + "Add some now": "En ajouter maintenant", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s dans %(browserName)s sous %(osName)s", + "Riot Desktop on %(platformName)s": "Version bureau de Riot sur %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot n’est pas disponible en version web mobile. Installer l’application ?", + "Unknown device": "Appareil inconnu", + "You need to be using HTTPS to place a screen-sharing call.": "Vous devez utiliser HTTPS pour effectuer un appel avec partage d’écran.", + "Welcome to Riot.im": "Bienvenue sur Riot.im", + "Chat with Riot Bot": "Discussion avec Riot Bot", + "Search the room directory": "Rechercher dans le répertoire de salons", + "Get started with some tips from Riot Bot!": "Démarrer avec quelques astuces de Riot Bot !", + "Riot/Android & matrix-android-sdk chat": "Discussions sur Riot/Android & matrix-android-sdk", + "Riot/iOS & matrix-ios-sdk chat": "Discussions sur Riot/iOS & matrix-ios-sdk", + "General discussion about Matrix and Riot": "Discussion générale sur Matrix et Riot", + "Riot/Web & Desktop chat": "Discussions sur Riot/Web & Bureau", + "Running Matrix services": "Exécution de services Matrix", + "Admin support for Dendrite": "Support admin pour Dendrite", + "Announcements about Synapse releases": "Communiqués sur les nouvelles versions de Synapse", + "Matrix technical discussions": "Discussions techniques sur Matrix", + "Community-run support for Synapse": "Support communautaire sur Synapse", + "Support for those using and running matrix-appservice-irc": "Support pour ceux qui utilisent et exécutent matrix-appservice-irc", + "Building services on Matrix": "Développement de services sur Matrix", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Discussion & collaboration décentralisées et chiffrées, propulsées par [matrix]", + "Discussion of all things Matrix!": "Discussion sur tout ce qui concerne Matrix !", + "Support for those using the Matrix spec": "Support pour les utilisateurs de la spécification de Matrix", + "Design and implementation of E2E in Matrix": "Définition et implémentation du chiffrement de bout en bout dans Matrix", + "Implementing VR services with Matrix": "Implémentation de services de réalité virtuelle avec Matrix", + "Implementing VoIP services with Matrix": "Implémentation de services de voix sur IP avec Matrix", + "Discussion of the Identity Service API": "Discussion sur l’API du Service Identité", + "Support for those using, running and writing other bridges": "Support pour les utilisateurs, administrateurs et développeurs d'autres passerelles", + "Contributing code to Matrix and Riot": "Contribuer du code à Matrix et Riot", + "Dev chat for the Riot/Web dev team": "Discussions de l'équipe de développeurs de Riot/Web", + "Dev chat for the Dendrite dev team": "Discussion pour l'équipe de développeurs de Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "De nombreux salons existent déjà dans Matrix, liés à des réseaux existants (Slack, IRC, Gitter etc) ou indépendants. Jetez un œil au répertoire !", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vous pouvez utiliser les options de serveur personnalisé pour vous connecter à d'autres serveurs Matrix en précisant un serveur d'accueil différent.
Cela vous permet d'utiliser Riot avec un compte Matrix existant sur un autre serveur d'accueil.

Vous pouvez aussi renseigner un serveur d'identité personnalisé mais vous ne pourrez pas inviter d'utilisateurs avec leur adresse e-mail, ou être invité avec votre adresse e-mail.", + "Co-ordination for Riot translators": "Coordination des traducteurs de Riot" +} \ No newline at end of file diff --git a/riot/i18n/gl.json b/riot/i18n/gl.json new file mode 100644 index 0000000..c0a889d --- /dev/null +++ b/riot/i18n/gl.json @@ -0,0 +1,1348 @@ +{ + "This email address is already in use": "Xa se está a usar este correo", + "This phone number is already in use": "Xa se está a usar este teléfono", + "Failed to verify email address: make sure you clicked the link in the email": "Fallo na verificación do enderezo de correo: asegúrese de ter picado na ligazón do correo", + "The remote side failed to pick up": "O interlocutor non respondeu", + "Unable to capture screen": "Non se puido capturar a pantalla", + "Existing Call": "Rexistro de chamadas", + "You are already in a call.": "Xa está nunha chamada.", + "VoIP is unsupported": "Sen soporte para VoIP", + "You cannot place VoIP calls in this browser.": "Non pode establecer chamadas VoIP neste navegador.", + "You cannot place a call with yourself.": "Non pode facer unha chamada a si mesmo.", + "Conference calls are not supported in this client": "Non pode establecer chamadas de reunión neste cliente", + "Conference calls are not supported in encrypted rooms": "Nas salas cifradas non se pode establecer chamadas de reunión", + "Warning!": "Aviso!", + "Conference calling is in development and may not be reliable.": "As chamadas de reunión poderían non ser totalmente estables xa que están en desenvolvemento.", + "Failed to set up conference call": "Fallo ao establecer a chamada de reunión", + "Conference call failed.": "Fallo na chamada de reunión.", + "Call Failed": "Fallou a chamada", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Hai dispositivos descoñecidos en esta sala: se segue adiante sen verificalos, pode ser posible que alguén bote un ollo a súa chamada.", + "Review Devices": "Revisar dispositivos", + "Call Anyway": "Chamar igualmente", + "Answer Anyway": "Responder igualmente", + "Call": "Chamar", + "Answer": "Resposta", + "Call Timeout": "Tempo de resposta de chamada", + "The file '%(fileName)s' failed to upload": "Non se puido subir o ficheiro '%(fileName)s'", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "O ficheiro '%(fileName)s' excede o límite de tamaño establecido para este servidor", + "Upload Failed": "Fallou o envío", + "Sun": "Dom", + "Mon": "Lun", + "Tue": "Mar", + "Wed": "Mér", + "Thu": "Xov", + "Fri": "Ven", + "Sat": "Sáb", + "Jan": "Xan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Abr", + "May": "Mai", + "Jun": "Xuñ", + "Jul": "Xul", + "Aug": "Ago", + "Sep": "Set", + "Oct": "Out", + "Nov": "Nov", + "Dec": "Dec", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "Who would you like to add to this community?": "A quen quere engadir a esta comunidade?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Aviso: calquera persoa que engada a unha comunidade estará publicamente visible para calquera que coñeza a ID da comunidade", + "Invite new community members": "Convidará comunidade a novos participantes", + "Name or matrix ID": "Nome ou ID matrix", + "Invite to Community": "Convidar á comunidade", + "Which rooms would you like to add to this community?": "Que salas desexaría engadir a esta comunidade?", + "Show these rooms to non-members on the community page and room list?": "Quere que estas salas se lle mostren a outros membros de fóra da comunidade na lista de salas?", + "Add rooms to the community": "Engadir salas á comunidade", + "Room name or alias": "Nome da sala ou alcume", + "Add to community": "Engadir á comunidade", + "Failed to invite the following users to %(groupId)s:": "Fallo ao convidar os seguintes usuarios a %(groupId)s:", + "Failed to invite users to community": "Houbo un fallo convidando usuarios á comunidade", + "Failed to invite users to %(groupId)s": "Houbo un fallo convidando usuarios a %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Fallo ao engadir as seguintes salas a %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot non ten permiso para enviarlle notificacións: comprobe os axustes do navegador", + "Riot was not given permission to send notifications - please try again": "Riot non ten permiso para enviar notificacións: inténteo de novo", + "Unable to enable Notifications": "Non se puideron activar as notificacións", + "This email address was not found": "Non se atopou este enderezo de correo", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu enderezo de correo semella non estar asociado a un ID Matrix neste servidor.", + "Default": "Por defecto", + "Restricted": "Restrinxido", + "Moderator": "Moderador", + "Admin": "Administrador", + "Start a chat": "Iniciar unha conversa", + "Who would you like to communicate with?": "Con quen desexa comunicarse?", + "Email, name or matrix ID": "Correo, nome ou ID matrix", + "Start Chat": "Iniciar conversa", + "Invite new room members": "Convidar a novos participantes", + "Who would you like to add to this room?": "A quen desexaría engadir a esta sala?", + "Send Invites": "Enviar convites", + "Failed to invite user": "Fallo ao convidar usuaria", + "Operation failed": "Fallou a operación", + "Failed to invite": "Fallou o convite", + "Failed to invite the following users to the %(roomName)s room:": "Houbo un fallo convidando os seguintes usuarios á sala %(roomName)s:", + "You need to be logged in.": "Precisa estar conectada.", + "You need to be able to invite users to do that.": "Precisa autorización para convidar a outros usuarias para poder facer iso.", + "Unable to create widget.": "Non se puido crear o trebello.", + "Failed to send request.": "Fallo ao enviar a petición.", + "This room is not recognised.": "Non se recoñece esta sala.", + "Power level must be positive integer.": "O nivel de poder ten que ser un enteiro positivo.", + "You are not in this room.": "Non está nesta sala.", + "You do not have permission to do that in this room.": "Non ten permiso para facer iso nesta sala.", + "Missing room_id in request": "Falta o room_id na petición", + "Room %(roomId)s not visible": "A sala %(roomId)s non é visible", + "Missing user_id in request": "Falta o user_id na petición", + "Usage": "Uso", + "/ddg is not a command": "/ddg non é unha orde", + "To use it, just wait for autocomplete results to load and tab through them.": "Para utilizala, agarde que carguen os resultados de autocompletado e escolla entre eles.", + "Unrecognised room alias:": "Alcumes de sala non recoñecidos:", + "Ignored user": "Usuaria ignorada", + "You are now ignoring %(userId)s": "Agora está a ignorar %(userId)s", + "Unignored user": "Usuarios non ignorados", + "You are no longer ignoring %(userId)s": "Xa non está a ignorar a %(userId)s", + "Unknown (user, device) pair:": "Parella descoñecida (dispositivo, usuaria):", + "Device already verified!": "Dispositivo xa verificado!", + "WARNING: Device already verified, but keys do NOT MATCH!": "Aviso: o dispositivo xa está verificado só que as chaves NON CONCORDAN!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "AVISO: FALLOU A VERIFICACIÓN DE CHAVES! A chave de firma para o %(userId)s e dispositivo %(deviceId)s é \"%(fprint)s\" que non concorda coa chave proporcionada \"%(fingerprint)s\". Isto podería significar que as súas comunicacións están a ser interceptadas!", + "Verified key": "Chave verificada", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "A chave de firma que proporcionou concorda coa chave de firma que recibiu do dispositivo %(deviceId)s de %(userId)s. Dispositivo marcado como verificado.", + "Unrecognised command:": "Orde non recoñecida:", + "Reason": "Razón", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceptou o convite para %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s aceptou o convite.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s solicitou unha conferencia VoIP.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou a %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s bloqueou a %(targetName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s estableceu o seu nome público a %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s eliminou o seu nome público (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s eliminou a súa imaxe de perfil.", + "%(senderName)s changed their profile picture.": "%(senderName)s cambiou a súa imaxe de perfil.", + "%(senderName)s set a profile picture.": "%(senderName)s estableceu a imaxe de perfil.", + "VoIP conference started.": "Comezou a conferencia VoIP.", + "%(targetName)s joined the room.": "%(targetName)s uniuse a sala.", + "VoIP conference finished.": "Rematou a conferencia VoIP.", + "%(targetName)s rejected the invitation.": "%(targetName)s rexeitou a invitación.", + "%(targetName)s left the room.": "%(targetName)s deixou a sala.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s desbloqueou a %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s expulsou a %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s rexeitou o convite de %(targetName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s cambiou o asunto a \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s eliminou o nome da sala.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s cambiou o nome da sala a %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou unha imaxe.", + "Someone": "Alguén", + "(not supported by this browser)": "(non soportado por este navegador)", + "%(senderName)s answered the call.": "%(senderName)s respondeu a chamada.", + "(could not connect media)": "(non puido conectar os medios)", + "(no answer)": "(sen resposta)", + "(unknown failure: %(reason)s)": "(fallo descoñecido: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s rematou a chamada.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s estableceu unha chamada %(callType)s.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou un convite a %(targetDisplayName)s para unirse a sala.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s fixo o historial da sala visible para todos os participantes, desde o punto en que foron convidadas.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s estableceu o historial futuro visible a todos os participantes, desde o punto en que se uniron.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s fixo visible para todos participantes o historial futuro da sala.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s fixo visible para calquera o historial futuro da sala.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s fixo visible o historial futuro da sala para descoñecidos (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s activou o cifrado de par-a-par (algoritmo %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s desde %(fromPowerLevel)s a %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s cambiou o nivel de autoridade a %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s cambiou as mensaxes fixadas para a sala.", + "%(widgetName)s widget modified by %(senderName)s": "O trebello %(widgetName)s modificado por %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "O trebello %(widgetName)s engadido por %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s eliminado por %(senderName)s", + "%(displayName)s is typing": "%(displayName)s está a escribir", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s e %(count)s outras están a escribir", + "one": "%(names)s e outra está a escribir" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s están a escribir", + "Failure to create room": "Fallou a creación da sala", + "Server may be unavailable, overloaded, or you hit a bug.": "O servidor podería non estar dispoñible, con sobrecarga ou ter un fallo.", + "Send anyway": "Enviar de todos os xeitos", + "Send": "Enviar", + "Unnamed Room": "Sala sen nome", + "Your browser does not support the required cryptography extensions": "O seu navegador non soporta as extensións de criptografía necesarias", + "Not a valid Riot keyfile": "Non é un ficheiro de chaves Riot válido", + "Authentication check failed: incorrect password?": "Fallou a comprobación de autenticación: contrasinal incorrecto?", + "Failed to join room": "Non se puido unir a sala", + "Message Pinning": "Fixando mensaxe", + "Disable Emoji suggestions while typing": "Desactivar a suxestión de Emoji mentres escribe", + "Use compact timeline layout": "Utilizar a disposición compacta da liña temporal", + "Hide removed messages": "Ocultar mensaxes eliminadas", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Ocultar mensaxes de unión/saída (convites/expulsións/bloqueos non afectados)", + "Hide avatar changes": "Ocultar cambios no avatar", + "Hide display name changes": "Ocultar cambios no nome público", + "Hide read receipts": "Ocultar avisos de recepción", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar marcas de tempo con formato 12 horas (ex. 2:30pm)", + "Always show message timestamps": "Mostrar sempre marcas de tempo", + "Autoplay GIFs and videos": "Reprodución automática de GIFs e vídeos", + "Enable automatic language detection for syntax highlighting": "Activar a detección automática de idioma para o resalte da sintaxe", + "Hide avatars in user and room mentions": "Ocultar avatares nas mencións de usuarios e salas", + "Disable big emoji in chat": "Desactivar emojis grandes nas conversas", + "Don't send typing notifications": "Non enviar notificacións de escritura", + "Automatically replace plain text Emoji": "Substituír automaticamente Emoji en texto plano", + "Disable Peer-to-Peer for 1:1 calls": "Desactivar Peer-to-Peer para chamadas 1:1", + "Never send encrypted messages to unverified devices from this device": "Nunca enviar mensaxes cifradas aos dispositivos que non estean verificados neste dispositivo", + "Never send encrypted messages to unverified devices in this room from this device": "Nunca enviar mensaxes cifradas aos dispositivos que non estean verificados nesta sala desde este dispositivo", + "Enable inline URL previews by default": "Activar por defecto as vistas previas en liña de URL", + "Enable URL previews for this room (only affects you)": "Activar avista previa de URL nesta sala (só lle afecta a vostede)", + "Enable URL previews by default for participants in this room": "Activar a vista previa de URL por defecto para as participantes nesta sala", + "Room Colour": "Cor da sala", + "Active call (%(roomName)s)": "Chamada activa (%(roomName)s)", + "unknown caller": "interlocutora descoñecida", + "Incoming voice call from %(name)s": "Chamada de voz entrante de %(name)s", + "Incoming video call from %(name)s": "Chamada de vídeo entrante de %(name)s", + "Incoming call from %(name)s": "Chamada entrante de %(name)s", + "Decline": "Rexeitar", + "Accept": "Aceptar", + "Error": "Fallo", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Enviouse unha mensaxe de texto a +%(msisdn)s. Por favor, introduza o código de verificación que contén", + "Incorrect verification code": "Código de verificación incorrecto", + "Enter Code": "Introduza o código", + "Submit": "Enviar", + "Phone": "Teléfono", + "Add phone number": "Engada número de teléfono", + "Add": "Engadir", + "Failed to upload profile picture!": "Fallo ao subir a imaxe de perfil!", + "Upload new:": "Subir nova:", + "No display name": "Sen nome público", + "New passwords don't match": "Os contrasinais novos non coinciden", + "Passwords can't be empty": "Os contrasinais non poden estar baleiros", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ao cambiar o contrasinal restablecerá todas as chaves de cifrado extremo-a-extremo en todos os dispositivos, facendo ilexible o historial da conversa a menos que primeiro exporte as chaves da sala e posteriormente as importe. No futuro melloraremos isto.", + "Continue": "Continuar", + "Export E2E room keys": "Exportar chaves E2E da sala", + "Do you want to set an email address?": "Quere establecer un enderezo de correo electrónico?", + "Current password": "Contrasinal actual", + "Password": "Contrasinal", + "New Password": "Novo contrasinal", + "Confirm password": "Confirme o contrasinal", + "Change Password": "Cambiar contrasinal", + "Your home server does not support device management.": "O seu servidor non soporta a xestión de dispositivos.", + "Unable to load device list": "Non se puido cargar a lista de dispositivos", + "Authentication": "Autenticación", + "Delete %(count)s devices": { + "other": "Eliminar %(count)s dispositivos", + "one": "Eliminar dispositivo" + }, + "Device ID": "ID de dispositivo", + "Device Name": "Nome do dispositivo", + "Last seen": "Visto por última vez", + "Select devices": "Escolla dispositivos", + "Failed to set display name": "Fallo ao establecer o nome público", + "Disable Notifications": "Desactivar notificacións", + "Enable Notifications": "Activar ass notificacións", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "Mirror local video feed": "Copiar fonte de vídeo local", + "Cannot add any more widgets": "Non pode engadir máis trebellos", + "The maximum permitted number of widgets have already been added to this room.": "Xa se lle engadiron o número máximo de trebellos a esta sala.", + "Add a widget": "Engadir un trebello", + "Drop File Here": "Solte aquí o ficheiro", + "Drop file here to upload": "Solte aquí o ficheiro para subilo", + " (unsupported)": " (non soportado)", + "Join as voice or video.": "Únase como voz ou vídeo.", + "Ongoing conference call%(supportedText)s.": "Chamada de conferencia en curso%(supportedText)s.", + "%(senderName)s sent an image": "%(senderName)s enviou unha imaxe", + "%(senderName)s sent a video": "%(senderName)s enviou un vídeo", + "%(senderName)s uploaded a file": "%(senderName)s subiu un ficheiro", + "Options": "Axustes", + "Undecryptable": "Non descifrable", + "Encrypted by a verified device": "Cifrado por un dispositivo verificado", + "Encrypted by an unverified device": "Cifrado por un dispositivo non verificado", + "Unencrypted message": "Mensaxe non cifrada", + "Please select the destination room for this message": "Escolla por favor a sala de destino para esta mensaxe", + "Blacklisted": "Omitidos", + "Verified": "Verificados", + "Unverified": "Non verificados", + "device id: ": "id dispositivo: ", + "Disinvite": "Retirar convite", + "Kick": "Expulsar", + "Disinvite this user?": "Retirar convite a este usuario?", + "Kick this user?": "Expulsar este usuario?", + "Failed to kick": "Fallo ao expulsar", + "Unban": "Non bloquear", + "Ban": "Bloquear", + "Unban this user?": "Non bloquear este usuario?", + "Ban this user?": "Bloquear a este usuario?", + "Failed to ban user": "Fallo ao bloquear usuario", + "Failed to mute user": "Fallo ao acalar usuario", + "Failed to toggle moderator status": "Fallo ao mudar a estado de moderador", + "Failed to change power level": "Fallo ao cambiar o nivel de permisos", + "Are you sure?": "Está segura?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Non poderá desfacer este cambio xa que lle estará promocionando e outorgándolle a outra persoa os mesmos permisos que os seus.", + "No devices with registered encryption keys": "Sen dispositivos con chaves de cifrado rexistradas", + "Devices": "Dispositivos", + "Unignore": "Non ignorar", + "Ignore": "Ignorar", + "Jump to read receipt": "Ir ao resgardo de lectura", + "Mention": "Mención", + "Invite": "Convidar", + "User Options": "Axustes de usuaria", + "Direct chats": "Conversa directa", + "Unmute": "Non acalar", + "Mute": "Acalar", + "Revoke Moderator": "Quitar Moderador", + "Make Moderator": "Facer Moderador", + "Admin Tools": "Ferramentas de administración", + "Level:": "Nivel:", + "and %(count)s others...": { + "other": "e %(count)s outras...", + "one": "e outra máis..." + }, + "Invited": "Convidada", + "Filter room members": "Filtrar os participantes da conversa", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (permiso %(powerLevelNumber)s)", + "Attachment": "Anexo", + "Upload Files": "Subir ficheiros", + "Are you sure you want to upload the following files?": "Está segura de que quere subir os seguintes ficheiros?", + "Encrypted room": "Sala cifrada", + "Unencrypted room": "Sala non cifrada", + "Hangup": "Quedada", + "Voice call": "Chamada de voz", + "Video call": "Chamada de vídeo", + "Upload file": "Subir ficheiro", + "Show Text Formatting Toolbar": "Mostrar barra de formato de texto", + "Send an encrypted reply…": "Enviar unha resposta cifrada…", + "Send a reply (unencrypted)…": "Enviar unha resposta (non cifrada)…", + "Send an encrypted message…": "Enviar unha mensaxe cifrada…", + "Send a message (unencrypted)…": "Enviar unha mensaxe (non cifrada)…", + "You do not have permission to post to this room": "Non ten permiso para comentar nesta sala", + "Turn Markdown on": "Activar Markdown", + "Turn Markdown off": "Desactivar Markdown", + "Hide Text Formatting Toolbar": "Agochar barra de formato de texto", + "Server error": "Fallo no servidor", + "Server unavailable, overloaded, or something else went wrong.": "Servidor non dispoñible, sobrecargado, ou outra cousa puido fallar.", + "Command error": "Erro na orde", + "bold": "remarcado", + "italic": "cursiva", + "strike": "raiado", + "underline": "subliñado", + "code": "código", + "quote": "cita", + "bullet": "lista", + "numbullet": "lista numerada", + "Markdown is disabled": "Markdown desactivado", + "Markdown is enabled": "Markdown activado", + "Unpin Message": "Desfixar mensaxe", + "Jump to message": "Ir a mensaxe", + "No pinned messages.": "Sen mensaxes fixadas.", + "Loading...": "Cargando...", + "Pinned Messages": "Mensaxes fixadas", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "En liña desde %(duration)s", + "Idle for %(duration)s": "En pausa desde %(duration)s", + "Offline for %(duration)s": "Desconectado desde %(duration)s", + "Unknown for %(duration)s": "Descoñecido desde %(duration)s", + "Online": "En liña", + "Idle": "En pausa", + "Offline": "Fóra de liña", + "Unknown": "Descoñecido", + "Replying": "Respondendo", + "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s as %(dateTime)s", + "No rooms to show": "Sen salas que mostrar", + "Unnamed room": "Sala sen nome", + "World readable": "Visible por todos", + "Guests can join": "Convidados pódense unir", + "Failed to set avatar.": "Fallo ao establecer o avatar.", + "Save": "Gardar", + "(~%(count)s results)": { + "other": "(~%(count)s resultados)", + "one": "(~%(count)s resultado)" + }, + "Join Room": "Unirse a sala", + "Upload avatar": "Subir avatar", + "Remove avatar": "Quitar avatar", + "Settings": "Axustes", + "Forget room": "Esquecer sala", + "Search": "Busca", + "Show panel": "Mostra panel", + "Drop here to favourite": "Solte aquí para favorito", + "Drop here to tag direct chat": "Solte aquí para etiquetar chat directo", + "Drop here to restore": "Solte aquí para restablecer", + "Drop here to tag %(section)s": "Solte aquí para etiquetar %(section)s", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Non poderá desfacer este cambio xa que está a diminuír a súa autoridade, se é a única persoa con autorización na sala será imposible volver a obter privilexios.", + "Drop here to demote": "Arrastre aquí para degradar", + "Press to start a chat with someone": "Pulse para iniciar a conversa con alguén", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Aínda non está en ningunha sala! Pulse para crear unha sala ou para buscar no directorio", + "Community Invites": "Convites da comunidade", + "Invites": "Convites", + "Favourites": "Favoritas", + "People": "Xente", + "Rooms": "Salas", + "Low priority": "Baixa prioridade", + "Historical": "Historial", + "This invitation was sent to an email address which is not associated with this account:": "Este convite foi enviado a un enderezo de correo que non está asociado con esta conta:", + "You may wish to login with a different account, or add this email to this account.": "Pode que desexe conectarse con outra conta, ou engadir este enderezo a súa conta.", + "You have been invited to join this room by %(inviterName)s": "Foi convidada por %(inviterName)s a unirse a esta sala", + "Would you like to accept or decline this invitation?": "Quere aceptar ou rexeitar este convite?", + "Reason: %(reasonText)s": "Razón: %(reasonText)s", + "Rejoin": "Volver a unirse", + "You have been kicked from %(roomName)s by %(userName)s.": "Foi expulsada de %(roomName)s por %(userName)s.", + "You have been kicked from this room by %(userName)s.": "Foi expulsada desta sala por %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "Non se lle permite acceder a %(roomName)s por %(userName)s.", + "You have been banned from this room by %(userName)s.": "Non se lle permite o acceso a esta sala por %(userName)s.", + "This room": "Esta sala", + "%(roomName)s does not exist.": "%(roomName)s non existe.", + "%(roomName)s is not accessible at this time.": "%(roomName)s non está accesible neste momento.", + "You are trying to access %(roomName)s.": "Está intentando acceder a %(roomName)s.", + "You are trying to access a room.": "Está intentando acceder a unha sala.", + "Click here to join the discussion!": "Pulse aquí para unirse a conversa!", + "This is a preview of this room. Room interactions have been disabled": "Esta é unha vista previa desta sala. Desactiváronse as interaccións coa sala", + "To change the room's avatar, you must be a": "Para cambiar o avatar da sala, debe ser", + "To change the room's name, you must be a": "Para cambiar o nome da sala, debe ser", + "To change the room's main address, you must be a": "Para cambiar o enderezo principal da sala, debe ser", + "To change the room's history visibility, you must be a": "Para cambiar a visibilidade do histórico da sala, debe ser", + "To change the permissions in the room, you must be a": "Para cambiar os permisos na sala, debe ser", + "To change the topic, you must be a": "Para cambiar o asunto, debe ser", + "To modify widgets in the room, you must be a": "Para modificar os trebellos da sala, debe ser", + "Failed to unban": "Fallou eliminar a prohibición", + "Banned by %(displayName)s": "Non aceptado por %(displayName)s", + "Privacy warning": "Aviso de intimidade", + "Changes to who can read history will only apply to future messages in this room": "Os cambios sobre quen pode ler o histórico serán de aplicación para as futuras mensaxes nesta sala", + "The visibility of existing history will be unchanged": "A visibilidade do histórico existente non cambiará", + "unknown error code": "código de fallo descoñecido", + "Failed to forget room %(errCode)s": "Fallo ao esquecer sala %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "O cifrado de par-a-par está en beta e podería non ser fiable", + "You should not yet trust it to secure data": "Polo de agora non debería confiarlle datos seguros", + "Devices will not yet be able to decrypt history from before they joined the room": "Os dispositivos non poderán descifrar o histórico anterior a que se uniron a sala", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Unha vez activou o cifrado para unha sala non se poderá desactivar (por agora)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "As mensaxes cifradas non será visibles en clientes que non aínda non teñan implementado o cifrado", + "Enable encryption": "Activar o cifrado", + "(warning: cannot be disabled again!)": "(aviso: non se pode desactivar!)", + "Encryption is enabled in this room": "O cifrado está activado nesta sala", + "Encryption is not enabled in this room": "Non se activou o cifrado nesta sala", + "Privileged Users": "Usuarios con privilexios", + "No users have specific privileges in this room": "Non hai usuarios con privilexios específicos nesta sala", + "Banned users": "Usuarios excluídos", + "This room is not accessible by remote Matrix servers": "Esta sala non é accesible por servidores Matrix remotos", + "Leave room": "Deixar a sala", + "Favourite": "Favorita", + "Tagged as: ": "Etiquetada como: ", + "To link to a room it must have an address.": "Para ligar a unha sala deberá ter un enderezo.", + "Guests cannot join this room even if explicitly invited.": "Os convidados non se poden unir a esta sala inda que fosen convidados explicitamente.", + "Click here to fix": "Pulse aquí para solución", + "Who can access this room?": "Quen pode acceder a esta sala?", + "Only people who have been invited": "Só persoas que foron convidadas", + "Anyone who knows the room's link, apart from guests": "Calquera que coñeza o enderezo da sala, aparte das convidadas", + "Anyone who knows the room's link, including guests": "Calquera que coñeza a ligazón a sala, incluíndo as convidadas", + "Publish this room to the public in %(domain)s's room directory?": "Publicar esta sala no directorio público de salas de %(domain)s?", + "Who can read history?": "Quen pode ler o histórico?", + "Anyone": "Calquera", + "Members only (since the point in time of selecting this option)": "Só membros (desde o momento en que se selecciona esta opción)", + "Members only (since they were invited)": "Só membros (desde que foron convidados)", + "Members only (since they joined)": "Só membros (desde que se uniron)", + "Permissions": "Permisos", + "The default role for new room members is": "O rol por defecto na sala para novos participantes é", + "To send messages, you must be a": "Para enviar mensaxes, deberá ser", + "To invite users into the room, you must be a": "Para convidar a usuarios a esta sala, debe ser", + "To configure the room, you must be a": "Para configurar a sala, debe ser", + "To kick users, you must be a": "Para expulsar usuarios, debe ser", + "To ban users, you must be a": "Para prohibir usuarios, debe ser", + "To remove other users' messages, you must be a": "Para eliminar mensaxes doutras usuarios, debe ser", + "To send events of type , you must be a": "Para enviar eventos de tipo , debe ser", + "Advanced": "Avanzado", + "This room's internal ID is": "O ID interno desta sala é", + "Add a topic": "Engadir asunto", + "Cancel": "Cancelar", + "Scroll to unread messages": "Desprazarse ate mensaxes non lidas", + "Jump to first unread message.": "Ir a primeira mensaxe non lida.", + "Close": "Pechar", + "Invalid alias format": "Formato de alias non válido", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' non é un formato válido para un alias", + "Invalid address format": "Formato de enderezo non válido", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' non é un formato válido par un enderezo", + "not specified": "non indicado", + "not set": "non establecido", + "Remote addresses for this room:": "Enderezos remotos para esta sala:", + "Addresses": "Enderezos", + "The main address for this room is": "O enderezo principal para esta sala é", + "Local addresses for this room:": "O enderezo local para esta sala:", + "This room has no local addresses": "Esta sala non ten enderezos locais", + "New address (e.g. #foo:%(localDomain)s)": "Novos enderezos (ex. #foo:%(localDomain)s)", + "Invalid community ID": "ID da comunidade non válido", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' non é un ID de comunidade válido", + "New community ID (e.g. +foo:%(localDomain)s)": "Novo ID da comunidade (ex. +foo:%(localDomain)s)", + "You have enabled URL previews by default.": "Activou a vista previa de URL por defecto.", + "You have disabled URL previews by default.": "Desactivou a vista previa de URL por defecto.", + "URL previews are enabled by default for participants in this room.": "As vistas previas de URL están activas por defecto para os participantes desta sala.", + "URL previews are disabled by default for participants in this room.": "As vistas previas de URL están desactivadas por defecto para os participantes desta sala.", + "URL Previews": "Vista previa de URL", + "Error decrypting audio": "Fallo ao descifrar audio", + "Error decrypting attachment": "Fallo descifrando o anexo", + "Decrypt %(text)s": "Descifrar %(text)s", + "Download %(text)s": "Baixar %(text)s", + "Invalid file%(extra)s": "Ficheiro non válido %(extra)s", + "Error decrypting image": "Fallo ao descifrar a imaxe", + "Error decrypting video": "Fallo descifrando vídeo", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s cambiou o avatar para %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s eliminou o avatar da sala.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s cambiou o avatar da sala a ", + "Copied!": "Copiado!", + "Failed to copy": "Fallo ao copiar", + "Add an Integration": "Engadir unha integración", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Vai ser redirixido a unha web de terceiros para poder autenticar a súa conta e así utilizar %(integrationsUrl)s. Quere continuar?", + "Removed or unknown message type": "Tipo de mensaxe descoñecida ou eliminada", + "Message removed by %(userId)s": "Mensaxe eliminada por %(userId)s", + "Message removed": "Mensaxe eliminada", + "Robot check is currently unavailable on desktop - please use a web browser": "Comprobación por Robot non está dispoñible en escritorio - por favor utilice un navegador web", + "This Home Server would like to make sure you are not a robot": "Este servidor quere asegurarse de que vostede non é un robot", + "Sign in with CAS": "Conectarse con CAS", + "Custom Server Options": "Opcións personalizadas do servidor", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Pode utilizar as opcións personalizadas do servidor para conectarse a outros servidores Matrix indicando un URL de servidor de inicio diferente.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Así pode utilizar este aplicativo con unha conta Matrix existente en un servidor de inicio diferente.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Tamén pode establecer un servidor de identidade personalizado pero isto normalmente dificulta a interacción con usuarios baseándose non enderezo de correo.", + "Dismiss": "Rexeitar", + "To continue, please enter your password.": "Para continuar, por favor introduza o seu contrasinal.", + "Password:": "Contrasinal:", + "An email has been sent to %(emailAddress)s": "Enviouse un correo a %(emailAddress)s", + "Please check your email to continue registration.": "Comprobe o seu correo para continuar co rexistro.", + "Token incorrect": "Testemuño incorrecto", + "A text message has been sent to %(msisdn)s": "Enviouse unha mensaxe de texto a %(msisdn)s", + "Please enter the code it contains:": "Por favor introduza o código que contén:", + "Start authentication": "Inicie a autenticación", + "powered by Matrix": "funciona grazas a Matrix", + "Username on %(hs)s": "Nome de usuaria en %(hs)s", + "User name": "Nome de usuaria", + "Mobile phone number": "Número de teléfono móbil", + "Forgot your password?": "Esqueceu o contrasinal?", + "%(serverName)s Matrix ID": "Matrix ID en %(serverName)s", + "Sign in with": "Conectarse con", + "Email address": "Enderezo de correo", + "Sign in": "Conectar", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Se non indica un enderezo de correo non poderá restablecer o contrasinal, está seguro?", + "Email address (optional)": "Enderezo de correo (opcional)", + "You are registering with %(SelectedTeamName)s": "Estase a rexistrar con %(SelectedTeamName)s", + "Mobile phone number (optional)": "Número de teléfono móbil (opcional)", + "Register": "Rexistrar", + "Default server": "Servidor por defecto", + "Custom server": "Servidor personalizado", + "Home server URL": "URL do servidor de inicio", + "Identity server URL": "URL do servidor de identidade", + "What does this mean?": "Que significa isto?", + "Remove from community": "Eliminar da comunidade", + "Disinvite this user from community?": "Retirar o convite a comunidade a esta usuaria?", + "Remove this user from community?": "Quitar a esta usuaria da comunidade?", + "Failed to withdraw invitation": "Fallo ao retirar o convite", + "Failed to remove user from community": "Fallo ao quitar a usuaria da comunidade", + "Filter community members": "Filtrar participantes na comunidade", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Está segura de que quere eliminar '%(roomName)s' de %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Eliminar unha sala da comunidade tamén a quitará da páxina da comunidade.", + "Remove": "Eliminar", + "Failed to remove room from community": "Fallo ao quitar a sala da comunidade", + "Failed to remove '%(roomName)s' from %(groupId)s": "Fallo ao quitar '%(roomName)s' de %(groupId)s", + "Something went wrong!": "Algo fallou!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "A visibilidade de '%(roomName)s' en %(groupId)s non se puido actualizar.", + "Visibility in Room List": "Visibilidade na Lista de Salas", + "Visible to everyone": "Visible para todo o mundo", + "Only visible to community members": "Só visible para os participantes da comunidade", + "Filter community rooms": "Filtrar salas da comunidade", + "Something went wrong when trying to get your communities.": "Algo fallou ao intentar obter as súas comunidades.", + "You're not currently a member of any communities.": "Ate o momento non é membro de ningunha comunidade.", + "Unknown Address": "Enderezo descoñecido", + "NOTE: Apps are not end-to-end encrypted": "NOTA: As Apps non están cifradas de par-a-par", + "Do you want to load widget from URL:": "Quere cargar o trebello da URL:", + "Allow": "Permitir", + "Delete Widget": "Eliminar trebello", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Quitando un trebello elimínao para todas os usuarios desta sala. Está seguro de querer eliminar este trebello?", + "Delete widget": "Eliminar trebello", + "Revoke widget access": "Retirar acceso ao trebello", + "Minimize apps": "Minimizar apps", + "Edit": "Editar", + "Create new room": "Crear unha nova sala", + "Unblacklist": "Quitar da lista negra", + "Blacklist": "Por na lista negra", + "Unverify": "Retirar verificación", + "Verify...": "Verificar...", + "No results": "Sen resultados", + "Delete": "Eliminar", + "Communities": "Comunidades", + "Home": "Inicio", + "Integrations Error": "Fallo nas integracións", + "Could not connect to the integration server": "Non se puido conectar ao servidor de integración", + "Manage Integrations": "Xestionar integracións", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s uníronse %(count)s veces", + "one": "%(severalUsers)s uníronse" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s uniuse %(count)s veces", + "one": "%(oneUser)s uniuse" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s saíron %(count)s veces", + "one": "%(severalUsers)s saíron" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s saíu %(count)s veces", + "one": "%(oneUser)s saio" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s uníronse e saíron %(count)s veces", + "one": "%(severalUsers)s uníronse e saíron" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s uniuse e saio %(count)s veces", + "one": "%(oneUser)s uniuse e saíu" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s saíron e volveron %(count)s veces", + "one": "%(severalUsers)s saíron e votaron" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s saíu e volveu %(count)s veces", + "one": "%(oneUser)s saíu e volveu" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s rexeitaron convites %(count)s veces", + "one": "%(severalUsers)s rexeitaron os seus convites" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s rexeitou o seu convite %(count)s veces", + "one": "%(oneUser)s rexeitou o seu convite" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "retiróuselle o convite a %(severalUsers)s %(count)s veces", + "one": "retiróuselle o convite a %(severalUsers)s" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "retiróuselle o convite a %(oneUser)s %(count)s veces", + "one": "retiróuselle o convite a %(oneUser)s" + }, + "were invited %(count)s times": { + "other": "foron convidados %(count)s veces", + "one": "foron convidados" + }, + "was invited %(count)s times": { + "other": "foi convidada %(count)s veces", + "one": "foi convidada" + }, + "were banned %(count)s times": { + "other": "foron prohibidas %(count)s veces", + "one": "foron prohibidas" + }, + "was banned %(count)s times": { + "other": "foi prohibida %(count)s veces", + "one": "foi prohibida" + }, + "were unbanned %(count)s times": { + "other": "retiróuselle a prohibición %(count)s veces", + "one": "retrouseille a prohibición" + }, + "was unbanned %(count)s times": { + "other": "retrouseille a prohibición %(count)s veces", + "one": "retiróuselle a prohibición" + }, + "were kicked %(count)s times": { + "other": "foron expulsadas %(count)s veces", + "one": "foron expulsadas" + }, + "was kicked %(count)s times": { + "other": "foi expulsada %(count)s veces", + "one": "foi expulsada" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s cambiaron o seu nome %(count)s veces", + "one": "%(severalUsers)s cambiaron o seu nome" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s cambiou o seu nome %(count)s veces", + "one": "%(oneUser)s cambiou o seu nome" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s cambiaron o seu avatar %(count)s veces", + "one": "%(severalUsers)s cambiaron o seu avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s cambiou o seu avatar %(count)s veces", + "one": "%(oneUser)s cambiou o seu avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s e %(count)s outras", + "one": "%(items)s e outra máis" + }, + "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", + "collapse": "comprimir", + "expand": "expandir", + "Custom of %(powerLevel)s": "Personalización de %(powerLevel)s", + "Custom level": "Nivel personalizado", + "Room directory": "Directorio de salas", + "Start chat": "Iniciar conversa", + "And %(count)s more...": { + "other": "E %(count)s máis..." + }, + "ex. @bob:example.com": "ex. @pepe:exemplo.com", + "Add User": "Engadir usuaria", + "Matrix ID": "ID Matrix", + "Matrix Room ID": "ID sala Matrix", + "email address": "enderezo de correo", + "Try using one of the following valid address types: %(validTypesList)s.": "Intentar utilizar algún dos seguintes tipos de enderezo válidos: %(validTypesList)s.", + "You have entered an invalid address.": "Introduciu un enderezo non válido.", + "Create a new chat or reuse an existing one": "Crear un novo chat ou reutilizar un xa existente", + "Start new chat": "Iniciar un novo chat", + "You already have existing direct chats with this user:": "Xa ten unha conversa directa con esta usuaria:", + "Start chatting": "Iniciar a conversar", + "Click on the button below to start chatting!": "Pulse non botón inferior para iniciar a conversar!", + "Start Chatting": "Iniciar a conversa", + "Confirm Removal": "Confirme a retirada", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Está certa de que quere quitar (eliminar) este evento? Saiba que si elimina un nome de sala ou cambia o asunto, podería desfacer o cambio.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Os ID de comunidade só poden conter caracteres a-z, 0-9, or '=_-./'", + "Community IDs cannot be empty.": "O ID de comunidade non pode quedar baldeiro.", + "Something went wrong whilst creating your community": "Algo fallou mentres se creaba a súa comunidade", + "Create Community": "Crear comunidade", + "Community Name": "Nome da comunidade", + "Example": "Exemplo", + "Community ID": "ID da comunidade", + "example": "exemplo", + "Create": "Crear", + "Create Room": "Crear sala", + "Room name (optional)": "Nome da sala (opcional)", + "Advanced options": "Axustes avanzados", + "Block users on other matrix homeservers from joining this room": "Evitar que usuarios doutros servidores matrix se unan a esta sala", + "This setting cannot be changed later!": "Esta preferencia non se pode cambiar máis tarde!", + "Unknown error": "Fallo descoñecido", + "Incorrect password": "Contrasinal incorrecto", + "Deactivate Account": "Desactivar conta", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Non se pode determinar si o enderezo ao que foi enviado este convite coincide con un dos asociados a súa conta.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Para verificar que se pode confiar neste dispositivo, contacte co seu dono utilizando algún outro medio (ex. en persoa ou chamada de teléfono) e pregúntelle se a clave que ven nos axustes de usuario do se dispositivo coincide coa clave inferior:", + "Device name": "Nome do dispositivo", + "Device key": "Chave do dispositivo", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Se concorda, pulse o botón verificar. Si non, entón alguén está interceptando este dispositivo e probablemente vostede desexe pulsar o botón lista negra.", + "In future this verification process will be more sophisticated.": "No futuro este proceso de verificación será máis sofisticado.", + "Verify device": "Verificar dispositivo", + "I verify that the keys match": "Certifico que coinciden as chaves", + "An error has occurred.": "Algo fallou.", + "OK": "OK", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Engadiu un novo dispositivo '%(displayName)s', que está a solicitar as chaves de cifrado.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "O seu dispositivo non verificado '%(displayName)s' está solicitando chaves de cifrado.", + "Start verification": "Iniciar verificación", + "Share without verifying": "Compartir sen verificar", + "Ignore request": "Ignorar petición", + "Loading device info...": "Cargando información do dispositivo...", + "Encryption key request": "Petición de chave de cifrado", + "Unable to restore session": "Non se puido restaurar a sesión", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Si anteriormente utilizou unha versión máis recente de Riot, a súa sesión podería non ser compatible con esta versión. Peche esta ventá e volva a versión máis recente.", + "Invalid Email Address": "Enderezo de correo non válido", + "This doesn't appear to be a valid email address": "Este non semella ser un enderezo de correo válido", + "Verification Pending": "Verificación pendente", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Comprobe o seu correo electrónico e pulse na ligazón que contén. Unha vez feito iso prema continuar.", + "Unable to add email address": "Non se puido engadir enderezo de correo", + "Unable to verify email address.": "Non se puido verificar enderezo de correo electrónico.", + "This will allow you to reset your password and receive notifications.": "Isto permitiralle restablecer o seu contrasinal e recibir notificacións.", + "Skip": "Saltar", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Os nomes de usuaria só poden conter letras, números, puntos e guión alto e baixo.", + "Username not available": "Nome de usuaria non dispoñible", + "Username invalid: %(errMessage)s": "Nome de usuaria non válido: %(errMessage)s", + "An error occurred: %(error_string)s": "Algo fallou: %(error_string)s", + "Username available": "Nome de usuaria dispoñible", + "To get started, please pick a username!": "Para comezar, escolla un nome de usuaria!", + "This will be your account name on the homeserver, or you can pick a different server.": "Este será o nome da súa conta no servidor, ou pode escoller un servidor diferente.", + "If you already have a Matrix account you can log in instead.": "Se xa ten unha conta Matrix entón pode conectarse.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Neste momento está por na lista negra os dispositivos non verificados; para enviar mensaxes a eses dispositivos debe verificalos.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Recomendámoslle que vaia ao proceso de verificación para cada dispositivo para confirmar que pertencen ao seu dono lexítimos, pero se o prefire pode enviar a mensaxe sen ter verificado.", + "Room contains unknown devices": "A sala contén dispositivos descoñecidos", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contén dispositivos que vostede non vira antes.", + "Unknown devices": "Dispositivos descoñecidos", + "Private Chat": "Conversa privada", + "Public Chat": "Conversa pública", + "Custom": "Personalizada", + "Alias (optional)": "Alias (opcional)", + "Name": "Nome", + "Topic": "Asunto", + "Make this room private": "Facer que esta sala sexa privada", + "Share message history with new users": "Compartir o histórico de mensaxes cos novos usuarios", + "Encrypt room": "Cifrar a sala", + "You must register to use this functionality": "Debe rexistrarse para utilizar esta función", + "You must join the room to see its files": "Debe unirse a sala para ver os seus ficheiros", + "There are no visible files in this room": "Non hai ficheiros visibles nesta sala", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML para a páxina da súa comunidade

\n

\n Utilice a descrición longa para presentar novos membros a comunidade, ou publicar algunha ligazón importante\n \n

\n

\n Tamén pode utilizar etiquetas 'img'\n

\n", + "Add rooms to the community summary": "Engadir salas ao resumo da comunidade", + "Which rooms would you like to add to this summary?": "Que salas desexa engadir a este resumo?", + "Add to summary": "Engadir ao resumo", + "Failed to add the following rooms to the summary of %(groupId)s:": "Algo fallou ao engadir estas salas ao resumo de %(groupId)s:", + "Add a Room": "Engadir unha sala", + "Failed to remove the room from the summary of %(groupId)s": "Algo fallou ao quitar a sala do resumo de %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "A sala '%(roomName)s' non se puido eliminar do resumo.", + "Add users to the community summary": "Engadir usuarios ao resumo da comunidade", + "Who would you like to add to this summary?": "A quen desexa engadir a este resumo?", + "Failed to add the following users to the summary of %(groupId)s:": "Algo fallou ao engadir aos seguintes usuarios ao resumo de %(groupId)s:", + "Add a User": "Engadir unha usuaria", + "Failed to remove a user from the summary of %(groupId)s": "Algo fallou ao eliminar a usuaria do resumo de %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "A usuaria '%(displayName)s' non se puido eliminar do resumo.", + "Failed to upload image": "Fallo ao subir a páxina", + "Failed to update community": "Fallo ao actualizar a comunidade", + "Unable to accept invite": "Non puido aceptar o convite", + "Unable to reject invite": "Non puido rexeitar o convite", + "Leave Community": "Deixar a comunidade", + "Leave %(groupName)s?": "Deixar %(groupName)s?", + "Leave": "Saír", + "Community Settings": "Axustes da comunidade", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas móstranselle aos membros da comunidade na páxina da comunidade.Os participantes da comunidade poden unirse ás salas premendo nelas.", + "Add rooms to this community": "Engadir salas a esta comunidade", + "Featured Rooms:": "Salas destacadas:", + "Featured Users:": "Usuarios destacados:", + "%(inviter)s has invited you to join this community": "%(inviter)s convidouna a unirse a esta comunidade", + "You are an administrator of this community": "Vostede administra esta comunidade", + "You are a member of this community": "É membro desta comunidade", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "A súa comunidade non ten unha descrición longa, ou unha páxina HTML que lle mostrar aos seus participantes.
Pulse aquí para abrir os axustes e publicar unha!", + "Long Description (HTML)": "Descrición longa (HTML)", + "Description": "Descrición", + "Community %(groupId)s not found": "Non se atopou a comunidade %(groupId)s", + "This Home server does not support communities": "Este servidor non soporta comunidades", + "Failed to load %(groupId)s": "Fallo ao cargar %(groupId)s", + "Reject invitation": "Rexeitar convite", + "Are you sure you want to reject the invitation?": "Seguro que desexa rexeitar o convite?", + "Failed to reject invitation": "Fallo ao rexeitar o convite", + "Are you sure you want to leave the room '%(roomName)s'?": "Seguro que desexa saír da sala '%(roomName)s'?", + "Failed to leave room": "Algo fallou ao saír da sala", + "Signed Out": "Desconectada", + "For security, this session has been signed out. Please sign in again.": "Por seguridade, pechouse a sesión. Por favor, conéctese de novo.", + "Old cryptography data detected": "Detectouse o uso de criptografía sobre datos antigos", + "Logout": "Desconectar", + "Your Communities": "As súas Comunidades", + "Error whilst fetching joined communities": "Fallo mentres se obtiñas as comunidades unidas", + "Create a new community": "Crear unha nova comunidade", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crear unha comunidade para agrupar usuarias e salas! Poña unha páxina de inicio personalizada para destacar o seu lugar no universo Matrix.", + "You have no visible notifications": "Non ten notificacións visibles", + "Scroll to bottom of page": "Desprácese ate o final da páxina", + "Message not sent due to unknown devices being present": "Non se enviou a mensaxe porque hai dispositivos non coñecidos", + "Show devices, send anyway or cancel.": "Mostrar dispositivos, enviar igualmente ou cancelar.", + "%(count)s of your messages have not been sent.": { + "other": "Algunha das súas mensaxes non foron enviadas.", + "one": "A súa mensaxe non foi enviada." + }, + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Reenviar todo ou bencancelar todo. Tamén pode seleccionar mensaxes individuais para reenviar ou cancelar.", + "one": "Reenviar mensaxe ou cancelar mensaxe agora." + }, + "Warning": "Aviso", + "Connectivity to the server has been lost.": "Perdeuse a conexión ao servidor.", + "Sent messages will be stored until your connection has returned.": "As mensaxes enviadas gardaranse ate que retome a conexión.", + "%(count)s new messages": { + "other": "%(count)s novas mensaxes", + "one": "%(count)s nova mensaxe" + }, + "Active call": "Chamada activa", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Non hai ninguén por aquí! Desexa convidar a outras ou deixar de informar sobre a sala baldeira?", + "You seem to be uploading files, are you sure you want to quit?": "Semella estar a subir ficheiros, seguro que desexa deixalo?", + "You seem to be in a call, are you sure you want to quit?": "Semella estar en unha chamada, seguro que quere saír?", + "Failed to upload file": "Fallo ao subir ficheiro", + "Server may be unavailable, overloaded, or the file too big": "O servidor podería non estar dispoñible, sobrecargado ou o ficheiro ser demasiado grande", + "Search failed": "Fallou a busca", + "Server may be unavailable, overloaded, or search timed out :(": "O servidor podería non estar dispoñible, sobrecargado, ou caducou a busca :(", + "No more results": "Sen máis resultados", + "Unknown room %(roomId)s": "Sala descoñecida %(roomId)s", + "Room": "Sala", + "Failed to save settings": "Fallo ao gardar os axustes", + "Failed to reject invite": "Fallo ao rexeitar o convite", + "Fill screen": "Encher pantalla", + "Click to unmute video": "Pulse para escoitar vídeo", + "Click to mute video": "Pulse para acalar video", + "Click to unmute audio": "Pulse para escoitar audio", + "Click to mute audio": "Pulse para acalar audio", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Intentouse cargar un punto concreto do historial desta sala, pero non ten permiso para ver a mensaxe en cuestión.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Intentouse cargar un punto específico do historial desta sala, pero non se puido atopar.", + "Failed to load timeline position": "Fallo ao cargar posición da liña temporal", + "Uploading %(filename)s and %(count)s others": { + "other": "Subindo %(filename)s e %(count)s máis", + "zero": "Subindo %(filename)s", + "one": "Subindo %(filename)s e %(count)s máis" + }, + "Light theme": "Decorado claro", + "Dark theme": "Decorado escuro", + "Status.im theme": "Decorado Status.im", + "Can't load user settings": "Non se puideron cargar os axustes de usuaria", + "Server may be unavailable or overloaded": "O servidor podería non está dispoñible ou sobrecargado", + "Sign out": "Desconectar", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Por seguridade, ao desconectarse borrará todas as chaves de cifrado par-a-par ste navegador. Se quere poder descifrar o historial da conversa en futuras sesións en Riot, por favor exporte as chaves da sala e gárdeas en lugar seguro.", + "Failed to change password. Is your password correct?": "Fallo ao cambiar o contrasinal. É correcto o contrasinal?", + "Success": "Parabéns", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "O seu contrasinal cambiouse correctamente. Non recibirá notificacións tipo push en outros dispositivos ate que se conecte novamente en eles", + "Remove Contact Information?": "Eliminar información do contacto?", + "Remove %(threePid)s?": "Eliminar %(threePid)s?", + "Unable to remove contact information": "Non se puido eliminar a información do contacto", + "Refer a friend to Riot:": "Convide a un amigo a Riot:", + "Interface Language": "Idioma da Interface", + "User Interface": "Interface de usuaria", + "Autocomplete Delay (ms):": "Atraso no autocompletado (ms):", + "": "", + "Import E2E room keys": "Importar chaves E2E da sala", + "Cryptography": "Criptografía", + "Device ID:": "ID de dispositivo:", + "Device key:": "Chave do dispositivo:", + "Ignored Users": "Usuarios ignorados", + "Analytics": "Analytics", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot recolle información analítica anónima para permitirnos mellorar o aplicativo.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "A intimidade impórtanos, así que non recollemos información personal ou identificable nos datos dos nosos análises.", + "Learn more about how we use analytics.": "Saber máis sobre como utilizamos analytics.", + "Labs": "Labs", + "These are experimental features that may break in unexpected ways": "Estas son características experimentais que poderían dar lugar a fallos non agardados", + "Use with caution": "Utilice con precaución", + "Deactivate my account": "Desactivar a miña conta", + "Clear Cache": "Limpar caché", + "Clear Cache and Reload": "Limpar caché e recargar", + "Updates": "Actualizacións", + "Check for update": "Comprobar actualización", + "Reject all %(invitedRooms)s invites": "Rexeitar todos os %(invitedRooms)s convites", + "Bulk Options": "Opcións en bloque", + "Desktop specific": "Configuracións de escritorio", + "Start automatically after system login": "Iniciar automaticamente despois de iniciar sesión", + "No media permissions": "Sen permisos de medios", + "You may need to manually permit Riot to access your microphone/webcam": "Igual ten que permitir manualmente a Riot acceder ao seus micrófono e cámara", + "Missing Media Permissions, click here to request.": "Faltan permisos de medios, pulse aquí para solicitalos.", + "No Microphones detected": "Non se detectaron micrófonos", + "No Webcams detected": "Non se detectaron cámaras", + "Default Device": "Dispositivo por defecto", + "Microphone": "Micrófono", + "Camera": "Cámara", + "VoIP": "VoIP", + "Email": "Correo electrónico", + "Add email address": "Engadir enderezo correo electrónico", + "Notifications": "Notificacións", + "Profile": "Perfil", + "Display name": "Nome mostrado", + "Account": "Conta", + "To return to your account in future you need to set a password": "Estableza un contrasinal para volver a súa conta con posterioridade", + "Logged in as:": "Conectada como:", + "Access Token:": "Testemuño de acceso:", + "click to reveal": "pulse para revelar", + "Homeserver is": "O servidor de inicio é", + "Identity Server is": "O servidor de identidade é", + "matrix-react-sdk version:": "versión matrix-react-sdk:", + "riot-web version:": "versión riot-web:", + "olm version:": "versión olm:", + "Failed to send email": "Fallo ao enviar correo electrónico", + "The email address linked to your account must be entered.": "Debe introducir o correo electrónico ligado a súa conta.", + "A new password must be entered.": "Debe introducir un novo contrasinal.", + "New passwords must match each other.": "Os novos contrasinais deben ser coincidentes.", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Detectáronse datos de una versión anterior de Riot. Isto causará un mal funcionamento da criptografía extremo-a-extremo na versión antiga. As mensaxes cifradas extremo-a-extremo intercambiadas mentres utilizaba a versión anterior poderían non ser descifrables en esta versión. Isto tamén podería causar que mensaxes intercambiadas con esta versión tampouco funcionasen. Se ten problemas, desconéctese e conéctese de novo. Para manter o historial de mensaxes, exporte e reimporte as súas chaves.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "O restablecemento do contrasinal restablecerá tamén as chaves de cifrado extremo-a-extremo en todos os dispositivos, facendo o historial de chat cifrado non lexible, a menos que primeiro exporte as chaves da sala e as reimporte posteriormente. No futuro melloraremos isto.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Enviouse un correo a %(emailAddress)s. Unha vez siga a ligazón que contén, pulse abaixo.", + "I have verified my email address": "Validei o meu enderezo de correo electrónico", + "Your password has been reset": "Restableceuse o seu contrasinal", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Foi desconectado de todos os seus dispositivos e xa non recibirá notificacións push. Para reactivar as notificacións, conéctese de novo en cada dispositivo", + "Return to login screen": "Volver a pantalla de conexión", + "To reset your password, enter the email address linked to your account": "Para restablecer o seu contrasinal, introduza o enderezo de correo electrónico ligado a súa conta", + "New password": "Novo contrasinal", + "Confirm your new password": "Confirme o seu novo contrasinal", + "Send Reset Email": "Enviar correo electrónico de restablecemento", + "Create an account": "Crear unha conta", + "This Home Server does not support login using email address.": "Este servidor non soporta a conexión utilizando un enderezo de correo electrónico.", + "Incorrect username and/or password.": "Nome de usuaria ou contrasinal non válidos.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Teña en conta que se está a conectar ao servidor %(hs)s, non a matrix.org.", + "Guest access is disabled on this Home Server.": "O acceso de convidados está desactivado neste servidor de inicio.", + "The phone number entered looks invalid": "O número de teléfono introducido non semella ser válido", + "This homeserver doesn't offer any login flows which are supported by this client.": "Este servidor non ofrece ningún sistema de conexión que soporte este cliente.", + "Error: Problem communicating with the given homeserver.": "Fallo: problema ao comunicarse con servidor proporcionado.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Non se pode conectar ao servidor vía HTTP cando na barra de enderezos do navegador está HTTPS. Utilice HTTPS ou active scripts non seguros.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Non se conectou ao servidor - por favor comprobe a conexión, asegúrese de que ocertificado SSL do servidor sexa de confianza, e que ningún engadido do navegador estea bloqueando as peticións.", + "Sign in to get started": "Conéctese para iniciar", + "Failed to fetch avatar URL": "Fallo ao obter o URL do avatar", + "Set a display name:": "Establecer nome público:", + "Upload an avatar:": "Suba un avatar:", + "This server does not support authentication with a phone number.": "O servidor non soporta a autenticación con número de teléfono.", + "Missing password.": "Falta contrasinal.", + "Passwords don't match.": "Non coinciden os contrasinais.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Contrasinal demasiado curto (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Non semella ser un enderezo de correo electrónico válido.", + "This doesn't look like a valid phone number.": "Non semella ser un número de teléfono válido.", + "You need to enter a user name.": "É preciso que introduza un nome de usuaria.", + "An unknown error occurred.": "Aconteceu un erro descoñecido.", + "I already have an account": "Xa teño unha conta", + "Displays action": "Mostra acción", + "Bans user with given id": "Prohibe a usuaria co ID indicado", + "Unbans user with given id": "Permite de novo a usuaria co ID proporcionado", + "Define the power level of a user": "Define o nivel de permisos de unha usuaria", + "Invites user with given id to current room": "Convida a usuaria co id proporcionado a sala actual", + "Joins room with given alias": "Únese a sala co alias proporcionado", + "Sets the room topic": "Establece o asunto da sala", + "Kicks user with given id": "Expulsa usuaria co id proporcionado", + "Changes your display nickname": "Cambia o alcume mostrado", + "Searches DuckDuckGo for results": "Buscar en DuckDuckGo por resultados", + "Changes colour scheme of current room": "Cambia o esquema de cores da sala actual", + "Verifies a user, device, and pubkey tuple": "Valida o conxunto de usuaria, dispositivo e chave pública", + "Ignores a user, hiding their messages from you": "Ignora unha usuaria, agochándolle as súas mensaxes", + "Stops ignoring a user, showing their messages going forward": "Deixa de ignorar unha usuaria, mostrándolles as súas mensaxes a partir de agora", + "Commands": "Comandos", + "Results from DuckDuckGo": "Resultados desde DuckDuckGo", + "Emoji": "Emoji", + "Notify the whole room": "Notificar a toda a sala", + "Room Notification": "Notificación da sala", + "Users": "Usuarios", + "unknown device": "dispositivo descoñecido", + "NOT verified": "Non validado", + "verified": "validado", + "Verification": "Validación", + "Ed25519 fingerprint": "pegada Ed25519", + "User ID": "ID de usuaria", + "Curve25519 identity key": "Chave de identidade Curve25519", + "none": "nada", + "Claimed Ed25519 fingerprint key": "Chave de pegada pedida Ed25519", + "Algorithm": "Algoritmo", + "unencrypted": "non cifrado", + "Decryption error": "Fallo ao descifrar", + "Session ID": "ID de sesión", + "End-to-end encryption information": "Información do cifrado extremo-a-extremo", + "Event information": "Información do evento", + "Sender device information": "Información do dispositivo do remitente", + "Passphrases must match": "As frases de paso deben coincidir", + "Passphrase must not be empty": "A frase de paso non pode quedar baldeira", + "Export room keys": "Exportar chaves da sala", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este proceso permítelle exportar a un ficheiro local as chaves para as mensaxes que recibiu en salas cifradas. Posteriormente permitiralle importar as chaves en outro cliente Matrix no futuro, así o cliente poderá descifrar esas mensaxes.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "O ficheiro exportado permitiralle a calquera que poida lelo descifrar e cifrar mensaxes que vostede ve, así que debería ter coidado e gardalo de xeito seguro. Para axudarlle, debe introducir unha frase de paso aquí abaixo que será utilizada para cifrar os datos exportados. Só será posible importar os datos utilizando a mesma frase de paso.", + "Enter passphrase": "Introduza a frase de paso", + "Confirm passphrase": "Confirme a frase de paso", + "Export": "Exportar", + "Import room keys": "Importar chaves de sala", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este proceso permítelle importar chaves de cifrado que vostede exportou de outro cliente Matrix. Así poderá descifrar calquera mensaxe que o outro cliente puidese cifrar.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "O ficheiro exportado estará protexido con unha frase de paso. Debe introducir aquí esa frase de paso para descifrar o ficheiro.", + "File to import": "Ficheiro a importar", + "Import": "Importar", + "The information being sent to us to help make Riot.im better includes:": "A información enviada a Riot.im para axudarnos a mellorar inclúe:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Se esta páxina inclúe información identificable como ID de grupo, usuario ou sala, estes datos son eliminados antes de ser enviados ao servidor.", + "The platform you're on": "A plataforma na que está", + "The version of Riot.im": "A versión de Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Se está ou non conectado/a (non gardamos os nomes de usuarios)", + "Your language of choice": "A súa preferencia de idioma", + "Which officially provided instance you are using, if any": "Se a houbese, que instancia oficial está a utilizar", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Se utiliza o modo Richtext ou non do editor de texto enriquecido", + "Your homeserver's URL": "O URL do seu servidor de inicio", + "Your identity server's URL": "O URL da súa identidade no servidor", + "In reply to ": "En resposta a ", + "This room is not public. You will not be able to rejoin without an invite.": "Esta sala non é pública. Non poderá volver a ela sen un convite.", + "This room is not showing flair for any communities": "Esta sala non mostra popularidade para as comunidades", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s cambiou o seu nome mostrado a %(displayName)s.", + "Clear filter": "Quitar filtro", + "Failed to set direct chat tag": "Fallo ao establecer etiqueta do chat directo", + "Failed to remove tag %(tagName)s from room": "Fallo ao eliminar a etiqueta %(tagName)s da sala", + "Failed to add tag %(tagName)s to room": "Fallo ao engadir a etiqueta %(tagName)s a sala", + "Disable Community Filter Panel": "Deshabilitar o panel de filtro de comunidades", + "Your key share request has been sent - please check your other devices for key share requests.": "Enviouse a solicitude de compartir chave - por favor comprobe as peticións de compartir chaves nos seus outros dispositivos.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "As peticións de compartir chaves envíanse de xeito automático aos seus outros dispositivos. Se rexeita o obvia estas peticións nos outros dispositivos, pulse aquí para solicitar novamente as chaves para esta sesión.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Se os seus outros dispositivos non teñen as chaves para este mensaxe non poderán descifrala.", + "Key request sent.": "Petición de chave enviada.", + "Re-request encryption keys from your other devices.": "Volver a pedir chaves de cifrado desde os outros dispositivos.", + "%(user)s is a %(userRole)s": "%(user)s é %(userRole)s", + "Flair": "Aura", + "Showing flair for these communities:": "Mostrar a aura para estas comunidades:", + "Flair will appear if enabled in room settings": "A aura aparecerá se está activada nas preferencias da sala", + "Flair will not appear": "A aura non aparecerá", + "Display your community flair in rooms configured to show it.": "Mostrar a aura da súa comunidade nas salas configuradas para que a mostren.", + "Did you know: you can use communities to filter your Riot.im experience!": "Sabía que pode utilizar as comunidades para mellorar a súa experiencia con Riot.im!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Para establecer un filtro, arrastre un avatar da comunidade sobre o panel de filtros na parte esquerda da pantalla. Pode pulsar nun avatar no panel de filtrado en calquera momento para ver só salas e xente asociada a esa comunidade.", + "Deops user with given id": "Degradar o usuario con esa ID", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Visto por %(displayName)s(%(userName)s en %(dateTime)s", + "Code": "Código", + "Unable to join community": "Non se puido unir a comunidade", + "Unable to leave community": "Non se puido deixar a comunidade", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Os cambios realizados a súa comunidade name e avatar poida que non os vexan outros usuarios ate dentro de 30 minutos.", + "Join this community": "Únase a esta comunidade", + "Leave this community": "Deixar esta comunidade", + "Debug Logs Submission": "Envío de rexistro de depuración", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Si enviou un reporte de fallo a través de GitHub, os informes poden axudarnos a examinar o problema. Os informes de fallo conteñen datos do uso do aplicativo incluíndo o seu nome de usuaria, os IDs ou alcumes das salas e grupos que visitou e os nomes de usuaria de outras persoas. Non conteñen mensaxes.", + "Submit debug logs": "Enviar informes de depuración", + "Opens the Developer Tools dialog": "Abre o cadro de Ferramentas de desenvolvemento", + "Stickerpack": "Iconas", + "You don't currently have any stickerpacks enabled": "Non ten paquetes de iconas activados", + "Add a stickerpack": "Engadir un paquete de iconas", + "Hide Stickers": "Agochar iconas", + "Show Stickers": "Mostrar iconas", + "Who can join this community?": "Quen pode unirse a esta comunidade?", + "Everyone": "Todo o mundo", + "Fetching third party location failed": "Fallo ao obter a localización de terceiros", + "A new version of Riot is available.": "Está dispoñible unha nova versión de Riot.", + "Couldn't load home page": "Non se cargou a páxina de inicio", + "Send Account Data": "Enviar datos da conta", + "All notifications are currently disabled for all targets.": "Todas as notificacións están desactivadas para todos os destinos.", + "Uploading report": "Informe da subida", + "Sunday": "Domingo", + "Notification targets": "Obxectivos das notificacións", + "Today": "Hoxe", + "Failed to get protocol list from Home Server": "Fallo ao obter a lista de protocolo desde o servidor", + "You are not receiving desktop notifications": "Non está a recibir notificacións de escritorio", + "Friday": "Venres", + "Update": "Actualizar", + "What's New": "Que hai de novo", + "Add an email address above to configure email notifications": "Engada un enderezo de correo electrónico para configurar as notificacións", + "Expand panel": "Expandir panel", + "On": "On", + "%(count)s Members": { + "other": "%(count)s participantes", + "one": "%(count)s participante" + }, + "Filter room names": "Filtrar nomes de sala", + "Changelog": "Rexistro de cambios", + "Waiting for response from server": "Agardando pola resposta do servidor", + "Send Custom Event": "Enviar evento personalizado", + "Advanced notification settings": "Axustes avanzados de notificación", + "Failed to send logs: ": "Fallo ao enviar os informes: ", + "delete the alias.": "borrar alcume.", + "To return to your account in future you need to set a password": "Para volver a súa conta no futuro debe establecer un contrasinal>/u>", + "Forget": "Esquecer", + "#example": "#exemplo", + "Hide panel": "Agochar panel", + "You cannot delete this image. (%(code)s)": "Non pode eliminar esta imaxe. (%(code)s)", + "Cancel Sending": "Cancelar o envío", + "This Room": "Esta sala", + "The Home Server may be too old to support third party networks": "O servidor de inicio podería ser demasiado antigo como para aceptar redes de terceiros", + "Noisy": "Ruidoso", + "Error saving email notification preferences": "Fallo ao cargar os axustes de notificacións", + "Messages containing my display name": "Mensaxes que conteñen o meu nome público", + "Messages in one-to-one chats": "Mensaxes en chats un-a-un", + "Unavailable": "Non dispoñible", + "View Decrypted Source": "Ver a fonte descifrada", + "Failed to update keywords": "Fallo ao actualizar as palabras chave", + "Notes:": "Notas:", + "remove %(name)s from the directory.": "eliminar %(name)s do directorio.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificacións das regras de seguimento das seguintes palabras que non se mostrarán aquí:", + "Safari and Opera work too.": "Safari e Opera tamén funcionan.", + "Please set a password!": "Por favor estableza un contrasinal!", + "You have successfully set a password!": "Mudou con éxito o seu contrasinal!", + "An error occurred whilst saving your email notification preferences.": "Algo fallou mentres se gardaban as súas preferencias de notificación.", + "Explore Room State": "Explorar estado da sala", + "Search for a room": "Buscar unha sala", + "Source URL": "URL fonte", + "Messages sent by bot": "Mensaxes enviadas por bot", + "Filter results": "Filtrar resultados", + "Members": "Participantes", + "No update available.": "Sen actualizacións.", + "Resend": "Volver a enviar", + "Files": "Ficheiros", + "Collecting app version information": "Obtendo información sobre a versión da app", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Eliminar o alcume da sala %(alias)s e borrar %(name)s do directorio?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Isto permitiralle volver a súa conta tras desconectarse, e conectarse en outros dispositivos.", + "Keywords": "Palabras chave", + "Enable notifications for this account": "Activar notificacións para esta conta", + "Directory": "Directorio", + "Invite to this community": "Convidar a esta comunidade", + "Failed to get public room list": "Fallo ao obter a lista de salas públicas", + "Messages containing keywords": "Mensaxes que conteñen palabras chave", + "Room not found": "Non se atopou a sala", + "Tuesday": "Martes", + "Enter keywords separated by a comma:": "Introduza palabras chave separadas por vírgulas:", + "Search…": "Buscar…", + "Remove %(name)s from the directory?": "Eliminar %(name)s do directorio?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utiliza características avanzadas do navegador, algunhas das cales non están dispoñibles ou son experimentais no seu navegador actual.", + "Developer Tools": "Ferramentas para desenvolver", + "Preparing to send logs": "Preparándose para enviar informe", + "Enable desktop notifications": "Activar as notificacións de escritorio", + "Remember, you can always set an email address in user settings if you change your mind.": "Lembre que sempre poderá poñer un enderezo de correo nos axustes de usuario se cambiase de idea.", + "Explore Account Data": "Explorar datos da conta", + "All messages (noisy)": "Todas as mensaxes (alto)", + "Saturday": "Sábado", + "I understand the risks and wish to continue": "Entendo os riscos e desexo continuar", + "Direct Chat": "Chat directo", + "The server may be unavailable or overloaded": "O servidor podería non estar dispoñible ou sobrecargado", + "Reject": "Rexeitar", + "Failed to set Direct Message status of room": "Fallo ao establecer o estado Mensaxe Directa da sala", + "Monday": "Luns", + "Remove from Directory": "Eliminar do directorio", + "Enable them now": "Activalos agora", + "Messages containing my user name": "Mensaxes que conteñen o meu nome de usuaria", + "Toolbox": "Ferramentas", + "Collecting logs": "Obtendo rexistros", + "more": "máis", + "GitHub issue link:": "Ligazón ao reporte en GitHub:", + "You must specify an event type!": "Debe indicar un tipo de evento!", + "(HTTP status %(httpStatus)s)": "(Estado HTTP %(httpStatus)s)", + "All Rooms": "Todas as Salas", + "State Key": "Chave do estado", + "Please install Chrome or Firefox for the best experience.": "Por favor instale Chrome ou Firefox para a mellor experiencia de usuaria.", + "Wednesday": "Mércores", + "Quote": "Cita", + "Send logs": "Enviar informes", + "All messages": "Todas as mensaxes", + "Call invitation": "Convite de chamada", + "Downloading update...": "Descargando actualización...", + "You have successfully set a password and an email address!": "Estableceu correctamente un contrasinal e enderezo de correo!", + "Failed to send custom event.": "Fallo ao enviar evento personalizado.", + "What's new?": "Que hai de novo?", + "Notify me for anything else": "Notificarme todo o demais", + "When I'm invited to a room": "Cando son convidado a unha sala", + "Can't update user notification settings": "Non se poden actualizar os axustes de notificación", + "Notify for all other messages/rooms": "Notificar para todas as outras mensaxes/salas", + "Unable to look up room ID from server": "Non se puido atopar o ID da sala do servidor", + "Couldn't find a matching Matrix room": "Non coincide con ningunha sala de Matrix", + "Invite to this room": "Convidar a esta sala", + "You cannot delete this message. (%(code)s)": "Non pode eliminar esta mensaxe. (%(code)s)", + "Thursday": "Xoves", + "Forward Message": "Reenviar mensaxe", + "Logs sent": "Informes enviados", + "Back": "Atrás", + "Reply": "Resposta", + "Show message in desktop notification": "Mostrar mensaxe nas notificacións de escritorio", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Os informes de depuración conteñen datos de utilización do aplicativo como o seu nome de usuario, os IDs ou alcumes de salas e grupos que vostede visitou e os nomes de usuarios doutras usuarias. Non conteñen mensaxes.", + "Unhide Preview": "Desagochar a vista previa", + "Unable to join network": "Non se puido conectar a rede", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Pode que os configurase nun cliente diferente de Riot. Non pode establecelos desde Riot pero aínda así aplicaranse", + "Sorry, your browser is not able to run Riot.": "Desculpe, o seu navegador non pode executar Riot.", + "Uploaded on %(date)s by %(user)s": "Subido a %(date)s por %(user)s", + "Messages in group chats": "Mensaxes en grupos de chat", + "Yesterday": "Onte", + "Error encountered (%(errorDetail)s).": "Houbo un erro (%(errorDetail)s).", + "Login": "Conectar", + "Low Priority": "Baixa prioridade", + "Unable to fetch notification target list": "Non se puido procesar a lista de obxectivo de notificacións", + "Set Password": "Establecer contrasinal", + "Enable audible notifications in web client": "Activar as notificacións audibles no cliente web", + "Off": "Off", + "Riot does not know how to join a room on this network": "Riot non sabe como conectar cunha sala nesta rede", + "Mentions only": "Só mencións", + "You can now return to your account after signing out, and sign in on other devices.": "Pode volver a súa contra tras desconectarse, e conectarse en outros dispositivos.", + "Enable email notifications": "Activar notificacións de correo", + "Event Type": "Tipo de evento", + "Download this file": "Descargue este ficheiro", + "Pin Message": "Fixar mensaxe", + "Failed to change settings": "Fallo ao cambiar os axustes", + "View Community": "Ver Comunidade", + "Event sent!": "Evento enviado!", + "View Source": "Ver fonte", + "Event Content": "Contido do evento", + "Thank you!": "Grazas!", + "Collapse panel": "Agochar panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Co seu navegador actual a aparencia e uso do aplicativo poderían estar totalmente falseadas, e algunhas características poderían non funcionar. Se quere pode continuar, pero debe ser consciente de que poden haber fallos!", + "Checking for an update...": "Comprobando as actualizacións...", + "There are advanced notifications which are not shown here": "Existen notificacións avanzadas que non se mostran aquí", + "Every page you use in the app": "Cada páxina que use na aplicación", + "e.g. ": "p.ex. ", + "Your User Agent": "Axente de usuario", + "Your device resolution": "Resolución do dispositivo", + "Missing roomId.": "Falta o ID da sala.", + "Always show encryption icons": "Mostra sempre iconas de cifrado", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Neste intre non é posible responder con un ficheiro así que este será enviado sen ser considerado resposta.", + "Unable to reply": "Non puido responder", + "At this time it is not possible to reply with an emote.": "Neste intre non é posible responder con un emote.", + "Popout widget": "trebello emerxente", + "Picture": "Imaxe", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Non se cargou o evento ao que respondía, ou non existe ou non ten permiso para velo.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Os fallos de Riot séguense en GitHub: crear un informe en GitHub.", + "Log out and remove encryption keys?": "Desconectar e eliminar as chaves de cifrado?", + "Send Logs": "Enviar informes", + "Clear Storage and Sign Out": "Limpar o almacenamento e Desconectar", + "Refresh": "Actualizar", + "We encountered an error trying to restore your previous session.": "Atopamos un fallo intentando restablecer a súa sesión anterior.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Limpando o almacenamento do navegador podería resolver o problema, pero desconectarao e non poderá ler o historial cifrado da conversa.", + "Collapse Reply Thread": "Comprimir o fío de respostas", + "e.g. %(exampleValue)s": "p.ex. %(exampleValue)s", + "Send analytics data": "Enviar datos de análises", + "Enable widget screenshots on supported widgets": "Activar as capturas de trebellos para aqueles que as permiten", + "Encrypting": "Cifrando", + "Encrypted, not sent": "Cifrado, sen enviar", + "Share Link to User": "Compartir a ligazón co usuario", + "Share room": "Compartir sala", + "To notify everyone in the room, you must be a": "Para avisar a todos os da sala ten que ser", + "Muted Users": "Usuarios silenciados", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Mellore Riot.im enviando os datos anónimos de uso. Iso suporá o emprego dunha cookie (véxase a nosa Política de Cookies).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Mellore Riot.im enviando o uso de datos anónimo. Iso usará unha cookie.", + "Yes, I want to help!": "Si, quero axuda", + "Warning: This widget might use cookies.": "Aviso: este trebello podería usar algunha cookie.", + "Reload widget": "Volver a cargar o trebello", + "Failed to indicate account erasure": "Non se deu indicado a eliminación de conta", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Iso fará que a súa deixe de ter uso de xeito permanente. Non poderá acceder e ninguén vai a poder volver a rexistrar esa mesma ID de usuario. Suporá que saía de todas as salas de conversas nas que estaba e eliminará os detalles da súa conta do servidores de identificación.Isto non se poderá desfacer", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Desactivando a súa conta non supón que por defecto esquezamos as súas mensaxes enviadas. Se quere que nos esquezamos das súas mensaxes, prema na caixa de embaixo.", + "To continue, please enter your password:": "Para continuar introduza o seu contrasinal:", + "password": "contrasinal", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "A visibilidade das mensaxes en Matrix é parecida ás dos correos electrónicos. Que esquezamos as súas mensaxes significa que as súas mensaxes non se van a compartir con ningún novo membro ou usuario que non estea rexistrado. Mais aqueles usuarios que xa tiveron acceso a estas mensaxes si que seguirán tendo acceso as súas propias copias desas mensaxes.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Esquezan todas as mensaxes que eu enviara no momento en que elimine a miña conta. (Aviso: iso suporá que os seguintes participantes só verán unha versión incompleta das conversas.)", + "Share Room": "Compartir sala", + "Link to most recent message": "Ligazón ás mensaxes máis recentes", + "Share User": "Compartir usuario", + "Share Community": "Compartir comunidade", + "Share Room Message": "Compartir unha mensaxe da sala", + "Link to selected message": "Ligazón á mensaxe escollida", + "COPY": "Copiar", + "Share Message": "Compartir mensaxe", + "Can't leave Server Notices room": "Non se pode saír da sala de información do servidor", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Esta sala emprégase para mensaxes importantes do servidor da sala, as que non pode saír dela.", + "Terms and Conditions": "Termos e condicións", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Para continuar usando o servidor %(homeserverDomain)s ten que revisar primeiro os seus termos e condicións e logo aceptalos.", + "Review terms and conditions": "Revise os termos e condicións", + "No Audio Outputs detected": "Non se detectou unha saída de audio", + "Audio Output": "Saída de audio", + "Try the app first": "Probe a aplicación primeiro", + "Jitsi Conference Calling": "Chamada para conferencia con Jitsi", + "A conference call could not be started because the intgrations server is not available": "Non se puido comezar a chamada por mor de que o servidor de integración non está activo", + "Call in Progress": "Chamada en progreso", + "A call is already in progress!": "Xa hai unha chamada en progreso!", + "Permission Required": "Precísase de permisos", + "You do not have permission to start a conference call in this room": "Non ten permisos para comezar unha chamada de conferencia nesta sala", + "Show empty room list headings": "Amosar a cabeceira da lista de salas baleiras", + "This event could not be displayed": "Non se puido amosar este evento", + "Demote yourself?": "Baixarse a si mesmo de rango?", + "Demote": "Baixar de rango", + "deleted": "eliminado", + "underlined": "subliñado", + "inline-code": "código en liña", + "block-quote": "bloque de citas", + "bulleted-list": "lista de puntos", + "numbered-list": "lista numérica", + "You have no historical rooms": "Ton ten salas anteriores", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Nas salas cifradas, como é esta, está desactivado por defecto a previsualización das URL co fin de asegurarse de que o servidor local (que é onde se gardan as previsualizacións) non poida recoller información sobre das ligazóns que se ven nesta sala.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Cando alguén pon unha URL na mensaxe, esta previsualízarase para que así se coñezan xa cousas delas como o título, a descrición ou as imaxes que inclúe ese sitio web.", + "The email field must not be blank.": "Este campo de correo non pode quedar en branco.", + "The user name field must not be blank.": "O campo de nome de usuario non pode quedar en branco.", + "The phone number field must not be blank.": "O número de teléfono non pode quedar en branco.", + "The password field must not be blank.": "O campo do contrasinal non pode quedar en branco.", + "You can't send any messages until you review and agree to our terms and conditions.": "Non vai poder enviar mensaxes ata que revise e acepte os nosos termos e condicións.", + "A call is currently being placed!": "Xa se estableceu a chamada!", + "Sorry, your homeserver is too old to participate in this room.": "Lametámolo, o seu servidor de inicio é vello de máis para participar en esta sala.", + "Please contact your homeserver administrator.": "Por favor, contacte coa administración do seu servidor.", + "Increase performance by only loading room members on first view": "Aumente o rendemento cargando só membros da sala na vista inicial", + "System Alerts": "Alertas do Sistema", + "Internal room ID: ": "ID interno da sala: ", + "Room version number: ": "Número de versión da sala: ", + "Please contact your service administrator to continue using the service.": "Por favor contacte coa administración do servizo para seguir utilizando o servizo.", + "This homeserver has hit its Monthly Active User limit.": "Este servidor acadou o límite mensual de usuarias activas.", + "This homeserver has exceeded one of its resource limits.": "Este servidor excedeu un dos seus límites de recursos.", + "Please contact your service administrator to get this limit increased.": "Por favor contacte coa administración do servizo para incrementar este límite.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Este servidor acadou o Límite Mensual de usuarias activas polo que algunhas usuarias non poderán conectar.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Este servidor excedeu un dos límites de recursos polo que algunhas usuarias no poderán conectar.", + "Failed to remove widget": "Fallo ao eliminar o widget", + "An error ocurred whilst trying to remove the widget from the room": "Algo fallou mentras se intentaba eliminar o widget da sala", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "A súa mensaxe non foi enviada porque este servidor acadou o Límite Mensual de Usuaria Activa. Por favor contacte coa administración do servizo para continuar utilizando o servizo.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "A súa mensaxe non foi enviada porque o servidor superou o límite de recursos. Por favor contacte coa administración do servizo para continuar utilizando o servizo.", + "Lazy loading members not supported": "A cargar preguiceira de membros non está soportada", + "Lazy loading is not supported by your current homeserver.": "A carga preguiceira non está soportada polo servidor actual.", + "Legal": "Legal", + "Please contact your service administrator to continue using this service.": "Por favor contacte coa administración do servizo para continuar utilizando o servizo.", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s vía %(browserName)s en %(osName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop en %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot non se pode executar na web do móbil. Instalar a aplicación?", + "Unknown device": "Dispositivo descoñecido", + "You need to be using HTTPS to place a screen-sharing call.": "Precisa utilizar HTTPS para establecer unha chamada de pantalla compartida.", + "Welcome to Riot.im": "Benvida/o a Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Conversas e colaboración descentralizada e cifrada grazas a [matrix]", + "Search the room directory": "Buscar no directorio de salas", + "Chat with Riot Bot": "Conversa co bot de Riot", + "Get started with some tips from Riot Bot!": "Iníciese con algúns consellos do bot de Riot!", + "General discussion about Matrix and Riot": "Discusión xeral sobre Matrix e Riot", + "Discussion of all things Matrix!": "Conversa sobre todo o relativo a Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & sala de conversas para escritorio", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & sala de conversas matrix-ios-sdk", + "Matrix technical discussions": "Discusións técnicas sobre Matrix", + "Running Matrix services": "Servizos que empregan Matrix", + "Community-run support for Synapse": "Axuda da comunidade para Synapse", + "Admin support for Dendrite": "Axuda de administrador para Dendrite", + "Announcements about Synapse releases": "Anuncios sobre lanzamentos de Synapse", + "Support for those using and running matrix-appservice-irc": "Axuda para quen usa matrix-appservice-irc", + "Building services on Matrix": "Deseñando servizos sobre Matrix", + "Support for those using the Matrix spec": "Axuda para quen usa a especificación de Matrix", + "Design and implementation of E2E in Matrix": "Deseño e implementación de E2E en Matrix", + "Implementing VR services with Matrix": "Implementando servizos de RV con Matrix", + "Implementing VoIP services with Matrix": "Implementación de servizos VoIP con Matrix", + "Discussion of the Identity Service API": "Conversa sobre a API do servizo de identificación", + "Support for those using, running and writing other bridges": "Axuda para quen está a utilizar, executar ou desenvolver outras pontes", + "Contributing code to Matrix and Riot": "Contribuíndo ao código de Matrix e Riot", + "Dev chat for the Riot/Web dev team": "Sala de conversa para o equipo de desenvolvemento de Riot/Web", + "Dev chat for the Dendrite dev team": "Sala de conversas para o equipo de desenvolvemento de Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Xa existen multitude de salas en Matrix ben ligadas a redes existentes (Slack, IRC, Gitter etc) ou ben independentes. Busque no directorio!", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & sala de conversas matrix-android-sdk", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Pode utilizar as opcións persoais de servidor para conectarse a outros servidores Matrix indicando o enderezo URL dese servidor.
Isto permítelle utilizar Riot cunha conta Matrix existente en outro servidor.

Tamén pode empregar un servidor personalizado de identidade mais nese caso nin se poderán convidar a outros usuarios empregando os correo electrónicos nin tampouco eles o poderán convidar a vostede por correo.", + "Co-ordination for Riot translators": "Coordinación para tradutora/es de Riot" +} \ No newline at end of file diff --git a/riot/i18n/hu.json b/riot/i18n/hu.json new file mode 100644 index 0000000..a608ffd --- /dev/null +++ b/riot/i18n/hu.json @@ -0,0 +1,1407 @@ +{ + "Cancel": "Mégse", + "Search": "Keresés", + "OK": "Rendben", + "Custom Server Options": "Egyedi szerverbeállítások", + "Dismiss": "Eltüntet", + "Error": "Hiba", + "Failed to forget room %(errCode)s": "Nem sikerült elfelejteni a szobát: %(errCode)s", + "Favourite": "Kedvenc", + "Mute": "Elnémít", + "Notifications": "Értesítések", + "Operation failed": "Sikertelen művelet", + "powered by Matrix": "Matrix hajtja", + "Remove": "Kitakarás", + "Settings": "Beállítások", + "unknown error code": "ismeretlen hibakód", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Elküldtük a szöveges üzenetet ide: +%(msisdn)s. Kérlek add meg az ellenőrző kódot ami benne van", + "Accept": "Elfogad", + "%(targetName)s accepted an invitation.": "%(targetName)s elfogadta a meghívást.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s elfogadta a meghívást ide: %(displayName)s.", + "Account": "Fiók", + "Access Token:": "Elérési kulcs:", + "Active call (%(roomName)s)": "Hívás folyamatban (%(roomName)s)", + "Add": "Hozzáad", + "Add a topic": "Téma megadása", + "Add email address": "E-mail cím megadása", + "Add phone number": "Telefonszám megadása", + "Admin": "Adminisztrátor", + "Admin Tools": "Admin. Eszközök", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Hiányzó Média jogosultság, kattintson ide az igényléshez.", + "No Microphones detected": "Nem található mikrofon", + "No Webcams detected": "Nem található webkamera", + "No media permissions": "Nincs media jogosultság", + "You may need to manually permit Riot to access your microphone/webcam": "Lehet hogy manuálisan kell engedélyeznie a Riot-nak a hozzáférést a mikrofonhoz ás webkamerához", + "Default Device": "Alapértelmezett eszköz", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Advanced": "Haladó", + "Algorithm": "Algoritmus", + "Hide removed messages": "Törölt üzenetek elrejtése", + "Always show message timestamps": "Üzenet időbélyeg folyamatos megjelenítése", + "Authentication": "Azonosítás", + "Alias (optional)": "Becenév (opcionális)", + "Failed to change password. Is your password correct?": "Nem sikerült megváltoztatni a jelszót. Helyesen írtad be a jelszavadat?", + "Continue": "Folytatás", + "Create new room": "Új szoba létrehozása", + "Close": "Bezárás", + "Room directory": "Szobák listája", + "Start chat": "Csevegés indítása", + "%(items)s and %(lastItem)s": "%(items)s és %(lastItem)s", + "and %(count)s others...": { + "other": "és még: %(count)s ...", + "one": "és még egy..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s és %(lastPerson)s írnak", + "A new password must be entered.": "Új jelszót kell megadni.", + "%(senderName)s answered the call.": "%(senderName)s felvette a telefont.", + "An error has occurred.": "Hiba történt.", + "Anyone": "Bárki", + "Anyone who knows the room's link, apart from guests": "A vendégeken kívül bárki aki ismeri a szoba link-jét", + "Anyone who knows the room's link, including guests": "Bárki aki tudja a szoba link-jét, még a vendégek is", + "Are you sure?": "Biztos?", + "Are you sure you want to leave the room '%(roomName)s'?": "Biztos elhagyod a szobát '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Biztos elutasítod a meghívást?", + "Are you sure you want to upload the following files?": "Biztos feltöltöd ezeket a fájlokat?", + "Attachment": "Csatolmány", + "Autoplay GIFs and videos": "GIF-ek és videók automatikus lejátszása", + "%(senderName)s banned %(targetName)s.": "%(senderName)s kitiltotta őt: %(targetName)s.", + "Ban": "Kitilt", + "Banned users": "Kitiltott felhasználók", + "Bans user with given id": "Kitiltja a felhasználót a megadott ID-vel", + "Blacklisted": "Fekete listára téve", + "Bulk Options": "Tömeges beállítások", + "Call Timeout": "Hívás időtúllépés", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nem lehet kapcsolódni a Matrix szerverhez - ellenőrizd a kapcsolatot, biztosítsd, hogy a Matrix szerver tanúsítványa hiteles legyen, és a böngésző kiterjesztések ne blokkolják a kéréseket.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nem lehet csatlakozni a Matrix szerverhez HTTP-n keresztül ha HTTPS van a böngésző címsorában. Vagy használj HTTPS-t vagy engedélyezd a nem biztonságos script-et.", + "Can't load user settings": "A felhasználói beállítások nem tölthetők be", + "Change Password": "Jelszó megváltoztatása", + "%(senderName)s changed their profile picture.": "%(senderName)s megváltoztatta a profil képét.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s megváltoztatta a hozzáférési szintjét erre: %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s megváltoztatta a szoba nevét erre: %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s törölte a szoba nevét.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s megváltoztatta a témát erre \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Változtatások a napló olvasási jogosultságon csak a szoba új üzeneteire fog vonatkozni", + "Changes your display nickname": "Becenév megváltoztatása", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Jelszó megváltoztatása jelenleg alaphelyzetbe állítja a titkosításnál használt kulcsokat minden készüléken, ezzel a régi titkosított üzenetek olvashatatlanok lesznek hacsak először nem mented ki a kulcsokat és újra betöltöd. A jövőben ezen javítunk.", + "Claimed Ed25519 fingerprint key": "Igényelt Ed25519 ujjlenyomat kulcs", + "Clear Cache and Reload": "Gyorsítótár törlése és újratöltés", + "Clear Cache": "Gyorsítótár törlése", + "Click here to join the discussion!": "A beszélgetéshez való csatlakozáshoz kattints ide!", + "Click here to fix": "A javításhoz kattints ide", + "Click to mute audio": "Hang némításhoz kattints ide", + "Click to mute video": "A videó kikapcsoláshoz kattints ide", + "click to reveal": "Megjelenítéshez kattints ide", + "Click to unmute video": "Videó bekapcsoláshoz kattints ide", + "Click to unmute audio": "Hang visszakapcsoláshoz kattints ide", + "Command error": "Parancs hiba", + "Commands": "Parancsok", + "Conference call failed.": "Sikertelen konferencia hívás.", + "Conference calling is in development and may not be reliable.": "Konferencia hívás meg fejlesztés alatt és lehet, hogy nem elég stabil.", + "Conference calls are not supported in encrypted rooms": "Titkosított szobákban a konferencia hívás nem támogatott", + "Conference calls are not supported in this client": "Ez a kliens nem támogatja a konferencia hívást", + "Confirm password": "Jelszó megerősítése", + "Confirm your new password": "Új jelszó megerősítése", + "Could not connect to the integration server": "Az integrációs szerverhez nem lehet kapcsolódni", + "%(count)s new messages": { + "one": "%(count)s új üzenet", + "other": "%(count)s új üzenet" + }, + "Create a new chat or reuse an existing one": "Új csevegés indítása vagy egy meglévő használata", + "Create an account": "Fiók készítése", + "Create Room": "Szoba készítése", + "Cryptography": "Titkosítás", + "Current password": "Jelenlegi jelszó", + "Curve25519 identity key": "Curve25519 azonosítási kulcs", + "Custom": "Egyedi", + "Custom level": "Egyedi szint", + "/ddg is not a command": "/ddg nem egy parancs", + "Deactivate Account": "Fiók zárolása", + "Deactivate my account": "Fiókom felfüggesztése", + "Decline": "Elutasít", + "Decrypt %(text)s": "%(text)s visszafejtése", + "Decryption error": "Visszafejtési hiba", + "Delete": "Töröl", + "Default": "Alapértelmezett", + "Device already verified!": "Készülék már ellenőrizve!", + "Device ID": "Készülék azonosító", + "Device ID:": "Készülék azonosító:", + "device id: ": "készülék azonosító: ", + "Device key:": "Készülék kulcs:", + "Devices": "Készülékek", + "Devices will not yet be able to decrypt history from before they joined the room": "A készülékek nem tudják egyenlőre visszafejteni a régebbi üzeneteket mint mikor csatlakoztak a szobához", + "Direct chats": "Közvetlen csevegés", + "Disable Notifications": "Értesítések tiltása", + "Disinvite": "Meghívás visszavonása", + "Display name": "Megjelenített név", + "Displays action": "Tevékenységek megjelenítése", + "Don't send typing notifications": "Ne küldjön írás értesítést", + "Download %(text)s": "%(text)s letöltése", + "Drop File Here": "Ide húzd a fájlt", + "Drop here to tag %(section)s": "Húzd ide a címkézéshez: %(section)s", + "Ed25519 fingerprint": "Ed25519 ujjlenyomat", + "Email": "E-mail", + "Email address": "E-mail cím", + "Email address (optional)": "E-mail cím (opcionális)", + "Email, name or matrix ID": "E-mail, név vagy matrix azonosító", + "Emoji": "Emoji", + "Enable encryption": "Titkosítás bekapcsolása", + "Enable Notifications": "Értesítések bekapcsolása", + "Encrypted by a verified device": "Ellenőrzött eszköz által titkosítva", + "Encrypted by an unverified device": "Nem ellenőrzött eszköz által titkosítva", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "A titkosított üzenetek nem láthatók azokon a klienseken amik még nem támogatják a titkosítást", + "Encrypted room": "Titkosított szoba", + "Encryption is enabled in this room": "Ebben a szobában a titkosítás be van kapcsolva", + "Encryption is not enabled in this room": "Ebben a szobában a titkosítás nincs bekapcsolva", + "%(senderName)s ended the call.": "%(senderName)s befejezte a hívást.", + "End-to-end encryption information": "Ponttól pontig való titkosítási információk", + "End-to-end encryption is in beta and may not be reliable": "Ponttól pontig tartó titkosítás béta állapotú és lehet, hogy nem megbízható", + "Enter Code": "Kód megadása", + "Enter passphrase": "Jelmondat megadása", + "Error decrypting attachment": "Csatolmány visszafejtése sikertelen", + "Error: Problem communicating with the given homeserver.": "Hiba: Probléma van a Matrix szerverrel való kommunikációval.", + "Event information": "Esemény információ", + "Existing Call": "Hívás folyamatban", + "Export": "Mentés", + "Export E2E room keys": "E2E szoba kulcsok mentése", + "Failed to ban user": "A felhasználót nem sikerült kizárni", + "Failed to change power level": "A hozzáférési szintet nem sikerült megváltoztatni", + "Failed to fetch avatar URL": "Avatar képet nem sikerült letölteni", + "Failed to join room": "A szobába nem sikerült belépni", + "Failed to kick": "Kirúgás nem sikerült", + "Failed to leave room": "A szobát nem sikerült elhagyni", + "Failed to load timeline position": "Az idővonal pozíciót nem sikerült betölteni", + "Failed to mute user": "A felhasználót nem sikerült hallgatásra bírni", + "Failed to reject invite": "A meghívót nem sikerült elutasítani", + "Failed to reject invitation": "A meghívót nem sikerült elutasítani", + "Failed to save settings": "A beállításokat nem sikerült elmenteni", + "Failed to send email": "E-mail nem sikerült elküldeni", + "Failed to send request.": "A kérést nem sikerült elküldeni.", + "Failed to set avatar.": "Avatar képet nem sikerült beállítani.", + "Failed to set display name": "Megjelenítési nevet nem sikerült beállítani", + "Failed to set up conference call": "Konferencia hívást nem sikerült elindítani", + "Failed to toggle moderator status": "Moderátor státuszt nem sikerült átállítani", + "Failed to unban": "Kizárás visszavonása sikertelen", + "Failed to upload file": "Fájl feltöltés sikertelen", + "Failed to upload profile picture!": "Profil kép feltöltése sikertelen!", + "Failed to verify email address: make sure you clicked the link in the email": "E-mail cím ellenőrzése sikertelen: ellenőrizd, hogy az e-mailnél lévő linkre rákattintottál", + "Failure to create room": "Szoba létrehozása sikertelen", + "Favourites": "Kedvencek", + "Fill screen": "Képernyő kitöltése", + "Filter room members": "Szoba tagság szűrése", + "Forget room": "Szoba elfelejtése", + "Forgot your password?": "Elfelejtetted a jelszavad?", + "For security, this session has been signed out. Please sign in again.": "A biztonság érdekében ez a kapcsolat le lesz bontva. Légy szíves jelentkezz be újra.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "A biztonság érdekében a kilépéskor a ponttól pontig való (E2E) titkosításhoz szükséges kulcsok törlésre kerülnek a böngészőből. Ha a régi üzeneteket továbbra is el szeretnéd olvasni, kérlek mentsed ki a szobákhoz tartozó kulcsot.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s : %(fromPowerLevel)s -> %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Vendég belépés tiltva van a Matrix szerveren.", + "Guests cannot join this room even if explicitly invited.": "Vendégek akkor sem csatlakozhatnak ehhez a szobához ha külön meghívók kaptak.", + "Hangup": "Megszakít", + "Hide read receipts": "Olvasási visszajelzés elrejtése", + "Hide Text Formatting Toolbar": "Szövegformázási menü elrejtése", + "Historical": "Archív", + "Home": "Kezdőlap", + "Homeserver is": "Matrix szerver:", + "Identity Server is": "Azonosítási szerver:", + "I have verified my email address": "Ellenőriztem az e-mail címemet", + "Import": "Betöltés", + "Import E2E room keys": "E2E szoba kulcsok betöltése", + "Incoming call from %(name)s": "Beérkező hivás: %(name)s", + "Incoming video call from %(name)s": "Bejövő videóhívás: %(name)s", + "Incoming voice call from %(name)s": "Bejövő hívás: %(name)s", + "Incorrect username and/or password.": "Helytelen felhasználó és/vagy jelszó.", + "Incorrect verification code": "Hibás azonosítási kód", + "Interface Language": "Felhasználói felület nyelve", + "Invalid alias format": "Hibás alternatív név formátum", + "Invalid address format": "Hibás cím formátum", + "Invalid Email Address": "Hibás e-mail cím", + "Invalid file%(extra)s": "Hibás fájl%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s meghívta: %(targetName)s.", + "Invite new room members": "Új tagok meghívása", + "Invited": "Meghívva", + "Invites": "Meghívók", + "Invites user with given id to current room": "Felhasználó meghívása ebbe a szobába megadott azonosítóval", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' nem megfelelő formátum egy címhez", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nem megfelelő formátum egy alternatív névhez", + "%(displayName)s is typing": "%(displayName)s ír", + "Sign in with": "Belépés ezzel:", + "Join as voice or video.": "Csatlakozás hanggal vagy videóval.", + "Join Room": "Belépés a szobába", + "%(targetName)s joined the room.": "%(targetName)s belépett a szobába.", + "Joins room with given alias": "A megadott becenévvel belépett a szobába", + "Jump to first unread message.": "Ugrás az első olvasatlan üzenetre.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kizárta: %(targetName)s.", + "Kick": "Kirúg", + "Kicks user with given id": "Az adott azonosítójú felhasználó kirúgása", + "Labs": "Labor", + "Last seen": "Utoljára láttuk", + "Leave room": "Szoba elhagyása", + "%(targetName)s left the room.": "%(targetName)s elhagyta a szobát.", + "Level:": "Szint:", + "Local addresses for this room:": "A szoba helyi címe:", + "Logged in as:": "Bejelentkezve mint:", + "Logout": "Kilép", + "Low priority": "Alacsony prioritás", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik minden résztvevő a szobában, amióta meg van hívva.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik minden résztvevő a szobában, amióta csatlakozott.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik minden szoba tagság.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik bárki.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s elérhetővé tette a szoba új üzeneteit nekik ismeretlen (%(visibility)s).", + "Manage Integrations": "Integrációk kezelése", + "Markdown is disabled": "Markdown kikapcsolva", + "Markdown is enabled": "Markdown engedélyezett", + "matrix-react-sdk version:": "matrix-react-sdk verzió:", + "Message not sent due to unknown devices being present": "Ismeretlen eszköz miatt az üzenet nem küldhető el", + "Missing room_id in request": "Hiányzó room_id a kérésben", + "Missing user_id in request": "Hiányzó user_id a kérésben", + "Mobile phone number": "Mobil telefonszám", + "Mobile phone number (optional)": "Mobill telefonszám (opcionális)", + "Moderator": "Moderátor", + "%(serverName)s Matrix ID": "%(serverName)s Matrix azonosítóm", + "Name": "Név", + "Never send encrypted messages to unverified devices from this device": "Soha ne küldj titkosított üzenetet ellenőrizetlen eszközre erről az eszközről", + "Never send encrypted messages to unverified devices in this room from this device": "Soha ne küldj titkosított üzenetet ebből a szobából ellenőrizetlen eszközre erről az eszközről", + "New address (e.g. #foo:%(localDomain)s)": "Új cím (e.g. #foo:%(localDomain)s)", + "New password": "Új jelszó", + "New passwords don't match": "Az új jelszavak nem egyeznek", + "New passwords must match each other.": "Az új jelszavaknak meg kell egyezniük egymással.", + "none": "semmi", + "not set": "nincs beállítva", + "not specified": "nincs meghatározva", + "(not supported by this browser)": "(ebben a böngészőben nem támogatott)", + "": "", + "NOT verified": "NEM ellenőrzött", + "No devices with registered encryption keys": "Nincs eszköz a regisztrált titkosítási kulcsokhoz", + "No display name": "Nincs megjelenítési név", + "No more results": "Nincs több találat", + "No results": "Nincs találat", + "No users have specific privileges in this room": "Egy felhasználónak sincsenek specifikus jogosultságai ebben a szobában", + "olm version:": "olm verzió:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Ha egyszer bekapcsolod a titkosítást a szobába utána nem lehet kikapcsolni (egyenlőre)", + "Only people who have been invited": "Csak akiket meghívtak", + "Password": "Jelszó", + "Password:": "Jelszó:", + "Passwords can't be empty": "A jelszó nem lehet üres", + "People": "Emberek", + "Permissions": "Jogosultságok", + "Phone": "Telefon", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s %(callType)s hívást kezdeményezett.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Ellenőrizd az e-mail-edet és kattints a benne lévő linkre. Ha ez megvan, kattints a folytatásra.", + "Power level must be positive integer.": "A szintnek pozitív egésznek kell lennie.", + "Private Chat": "Privát csevegés", + "Privileged Users": "Privilegizált felhasználók", + "Profile": "Profil", + "Public Chat": "Nyilvános csevegés", + "Reason": "Ok", + "Reason: %(reasonText)s": "Ok: %(reasonText)s", + "Revoke Moderator": "Moderátor visszahívása", + "Refer a friend to Riot:": "Ismerős meghívása a Riotba:", + "Register": "Regisztráció", + "%(targetName)s rejected the invitation.": "%(targetName)s elutasította a meghívót.", + "Reject invitation": "Meghívó elutasítása", + "Rejoin": "Újracsatlakozás", + "Remote addresses for this room:": "A szoba távoli címei:", + "Remove Contact Information?": "Kapcsolat információk törlése?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s törölte a megjelenítési nevet (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s törölte a profil képét.", + "Remove %(threePid)s?": "Töröl: %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s VoIP konferenciát kezdeményez.", + "Results from DuckDuckGo": "Eredmények a DuckDuckGo-ból", + "Return to login screen": "Vissza a bejelentkezési képernyőre", + "Riot does not have permission to send you notifications - please check your browser settings": "Riotnak nincs jogosultsága értesítést küldeni neked - ellenőrizd a böngésző beállításait", + "Riot was not given permission to send notifications - please try again": "Riotnak nincs jogosultsága értesítést küldeni neked - próbáld újra", + "riot-web version:": "riot-web verzió:", + "Room %(roomId)s not visible": "%(roomId)s szoba nem látható", + "Room Colour": "Szoba színe", + "Room contains unknown devices": "A szobában ellenőrizetlen eszközök vannak", + "Room name (optional)": "Szoba neve (opcionális)", + "%(roomName)s does not exist.": "%(roomName)s nem létezik.", + "%(roomName)s is not accessible at this time.": "%(roomName)s jelenleg nem érhető el.", + "Rooms": "Szobák", + "Save": "Mentés", + "Scroll to bottom of page": "Az oldal aljára görget", + "Scroll to unread messages": "Olvasatlan üzenetekhez görget", + "Search failed": "Keresés sikertelen", + "Searches DuckDuckGo for results": "Keresés DuckDuckGo-val", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s %(dateTime)s időpontban látta", + "Send anyway": "Küld mindenképpen", + "Sender device information": "Küldő eszközének információja", + "Send Invites": "Meghívók elküldése", + "Send Reset Email": "Visszaállítási e-mail küldése", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s képet küldött.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s meghívót küldött %(targetDisplayName)s felhasználónak, hogy lépjen be a szobába.", + "Server error": "Szerver hiba", + "Server may be unavailable or overloaded": "A szerver elérhetetlen vagy túlterhelt", + "Server may be unavailable, overloaded, or search timed out :(": "A szerver elérhetetlen, túlterhelt vagy a keresés túllépte az időkorlátot :(", + "Server may be unavailable, overloaded, or the file too big": "A szerver elérhetetlen, túlterhelt vagy a fájl túl nagy", + "Server may be unavailable, overloaded, or you hit a bug.": "A szerver elérhetetlen, túlterhelt vagy hibára futott.", + "Server unavailable, overloaded, or something else went wrong.": "A szerver elérhetetlen, túlterhelt vagy valami más probléma van.", + "Session ID": "Kapcsolat azonosító", + "%(senderName)s set a profile picture.": "%(senderName)s profil képet állított be.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s a megjelenítési nevét megváltoztatta erre: %(displayName)s.", + "Show panel": "Panel megjelenítése", + "Show Text Formatting Toolbar": "Szöveg formázási eszköztár megjelenítése", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Az időbélyegek 12 órás formátumban mutatása (pl.: 2:30pm)", + "Signed Out": "Kijelentkezett", + "Sign in": "Bejelentkezett", + "Sign out": "Kijelentkezés", + "%(count)s of your messages have not been sent.": { + "other": "Néhány üzeneted nem lett elküldve.", + "one": "Az üzeneted nem lett elküldve." + }, + "Someone": "Valaki", + "Start a chat": "Csevegés indítása", + "Start authentication": "Azonosítás indítása", + "Start Chat": "Csevegés indítása", + "Submit": "Elküld", + "Success": "Sikeres", + "Tagged as: ": "Címkék: ", + "The default role for new room members is": "Az alapértelmezett szerep új tagoknak:", + "The main address for this room is": "A szoba elsődleges címe:", + "The phone number entered looks invalid": "A megadott telefonszám érvénytelennek tűnik", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Az általad megadott aláíró kulcs megegyezik %(userId)s felhasználótól kapott kulccsal amit %(deviceId)s eszközhöz használ. Az eszköz ellenőrzöttnek jelölve.", + "This email address is already in use": "Ez az e-mail cím már használatban van", + "This email address was not found": "Az e-mail cím nem található", + "The email address linked to your account must be entered.": "A fiókodhoz kötött e-mail címet add meg.", + "Press to start a chat with someone": "Nyomd meg a gombot ha szeretnél csevegni valakivel", + "Privacy warning": "Adatvédelmi figyelmeztetés", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' fájl túllépte a Matrix szerverben beállított feltöltési méret határt", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' fájl feltöltése sikertelen", + "The remote side failed to pick up": "A hívott fél nem vette fel", + "This Home Server does not support login using email address.": "A Matrix szerver nem támogatja a belépést e-mail címmel.", + "This invitation was sent to an email address which is not associated with this account:": "A meghívó olyan e-mail címre lett küldve ami nincs összekötve ezzel a fiókkal:", + "This room has no local addresses": "Ennek a szobának nincs helyi címe", + "This room is not recognised.": "Ez a szoba nem ismerős.", + "These are experimental features that may break in unexpected ways": "Ezek kísérleti funkciók amik kiszámíthatatlanok lehetnek", + "The visibility of existing history will be unchanged": "A már meglévő csevegés előzmények láthatósága nem változik", + "This doesn't appear to be a valid email address": "Ez nem tűnik helyes e-mail címnek", + "This is a preview of this room. Room interactions have been disabled": "Ez a szoba előnézete. Minden tevékenység ezzel a szobával ki van kapcsolva", + "This phone number is already in use": "Ez a telefonszám már használatban van", + "This room": "Ebben a szobában", + "This room is not accessible by remote Matrix servers": "Ez a szoba távoli Matrix szerverről nem érhető el", + "This room's internal ID is": "A szoba belső azonosítója:", + "To link to a room it must have an address.": "Szobához való kötéshez szükséges egy cím.", + "To reset your password, enter the email address linked to your account": "A jelszó alaphelyzetbe állításához add meg a fiókodhoz kötött e-mail címet", + "To use it, just wait for autocomplete results to load and tab through them.": "A használatához csak várd meg az automatikus kiegészítéshez a találatok betöltését és TAB-bal választhatsz közülük.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nincs jogod a kérdéses üzenetek megjelenítéséhez.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Megpróbáltam betölteni a szoba megadott időpontjának megfelelő adatait, de nem találom.", + "Turn Markdown off": "Markdown kikapcsolása", + "Turn Markdown on": "Markdown bekapcsolása", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s bekapcsolta a titkosítást ponttól pontig (algoritmus %(algorithm)s).", + "Unable to add email address": "Az e-mail címet nem sikerült hozzáadni", + "Unable to remove contact information": "A névjegy információkat nem sikerült törölni", + "Unable to verify email address.": "Az e-mail cím ellenőrzése sikertelen.", + "Unban": "Kitiltás visszavonása", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s visszaengedte %(targetName)s felhasználót.", + "Unable to capture screen": "A képernyő felvétele sikertelen", + "Unable to enable Notifications": "Az értesítések engedélyezése sikertelen", + "Unable to load device list": "Az eszközlista betöltése sikertelen", + "Undecryptable": "Visszafejthetetlen", + "Unencrypted room": "Titkosítatlan szoba", + "unencrypted": "titkosítatlan", + "Unencrypted message": "Titkosítatlan üzenet", + "unknown caller": "ismeretlen hívó", + "unknown device": "ismeretlen eszköz", + "Unknown room %(roomId)s": "Ismeretlen szoba %(roomId)s", + "Unknown (user, device) pair:": "Ismeretlen (felhasználó, eszköz) pár:", + "Unmute": "Némítás kikapcsolása", + "Unnamed Room": "Névtelen szoba", + "Unrecognised command:": "Ismeretlen parancs:", + "Unrecognised room alias:": "Ismeretlen szoba becenév:", + "Unverified": "Nem ellenőrzött", + "Uploading %(filename)s and %(count)s others": { + "zero": "%(filename)s feltöltése", + "one": "%(filename)s és még %(count)s db másik feltöltése", + "other": "%(filename)s és még %(count)s db másik feltöltése" + }, + "Upload avatar": "Avatar kép feltöltése", + "Upload Failed": "Feltöltés sikertelen", + "Upload Files": "Fájlok feltöltése", + "Upload file": "Fájl feltöltése", + "Upload new:": "Új feltöltése:", + "Usage": "Használat", + "Use compact timeline layout": "Egyszerű idővonal séma használata", + "Use with caution": "Használd körültekintéssel", + "User ID": "Felhasználói azonosító", + "User Interface": "Felhasználói felület", + "User name": "Felhasználói név", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (szint: %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Felhasználói név érvénytelen: %(errMessage)s", + "Users": "Felhasználók", + "Verification Pending": "Ellenőrzés függőben", + "Verification": "Ellenőrzés", + "verified": "ellenőrizve", + "Verified": "Ellenőrizve", + "Verified key": "Ellenőrzött kulcs", + "Video call": "Videó hívás", + "Voice call": "Hang hívás", + "VoIP conference finished.": "VoIP konferencia befejeződött.", + "VoIP conference started.": "VoIP konferencia elkezdődött.", + "VoIP is unsupported": "VoIP nem támogatott", + "(could not connect media)": "(média kapcsolat nem hozható létre)", + "(no answer)": "(nincs válasz)", + "(unknown failure: %(reason)s)": "(ismeretlen hiba: %(reason)s)", + "(warning: cannot be disabled again!)": "(figyelmeztetés: nem lehet újra kikapcsolni!)", + "Warning!": "Figyelem!", + "WARNING: Device already verified, but keys do NOT MATCH!": "Figyelem: Az eszköz már ellenőrzött, de a kulcsok NEM EGYEZNEK!", + "Who can access this room?": "Ki éri el ezt a szobát?", + "Who can read history?": "Ki olvashatja a régi üzeneteket?", + "Who would you like to add to this room?": "Kit szeretnél hozzáadni ehhez a szobához?", + "Who would you like to communicate with?": "Kivel szeretnél beszélgetni?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s visszavonta %(targetName)s meghívóját.", + "Would you like to accept or decline this invitation?": "Ezt a meghívót szeretnéd elfogadni vagy elutasítani?", + "You already have existing direct chats with this user:": "Már van közvetlen csevegésed ezzel a felhasználóval:", + "You are already in a call.": "Már hívásban vagy.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Még egyetlen szobába sem léptél be! Szoba létrehozáshoz nyomd meg: vagy a szobák közötti kereséshez nyomd meg: ", + "You are trying to access %(roomName)s.": "%(roomName)s szobába próbálsz belépni.", + "You cannot place a call with yourself.": "Nem hívhatod fel saját magadat.", + "You cannot place VoIP calls in this browser.": "Nem indíthatsz VoIP hívást ebben a böngészőben.", + "You do not have permission to post to this room": "Nincs jogod írni ebben a szobában", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s kitiltott a szobából: %(roomName)s.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s meghívott ebbe a szobába", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s kirúgott ebből a szobából: %(roomName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Kijelentkeztél minden eszközről így nem fogsz \"push\" értesítéseket kapni. Az értesítések engedélyezéséhez jelentkezz vissza mindegyik eszközön", + "You have disabled URL previews by default.": "Az URL előnézet alapból tiltva van.", + "You have enabled URL previews by default.": "Az URL előnézet alapból engedélyezve van.", + "You have no visible notifications": "Nincsenek látható értesítéseid", + "You may wish to login with a different account, or add this email to this account.": "Lehet, hogy más fiókba szeretnél belépni vagy ezt az e-mail címet szeretnéd ehhez a fiókhoz kötni.", + "You must register to use this functionality": "Regisztrálnod kell hogy ezt használhasd", + "You need to be able to invite users to do that.": "Hogy ezt csinálhasd meg kell tudnod hívni felhasználókat.", + "You need to be logged in.": "Be kell jelentkezz.", + "You need to enter a user name.": "Be kell írnod a felhasználói nevet.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ez az e-mail cím, úgy néz ki, nincs összekötve a Matrix azonosítóval ezen a Matrix szerveren.", + "Your password has been reset": "A jelszavad visszaállítottuk", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "A jelszavadat sikeresen megváltoztattuk. Nem kapsz \"push\" értesítéseket amíg a többi eszközön vissza nem jelentkezel", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "A címről amire a meghívót elküldtük nem állapítható meg, hogy a fiókoddal összeköttetésben áll-e.", + "You seem to be in a call, are you sure you want to quit?": "Úgy tűnik hívásban vagy, biztosan kilépsz?", + "You seem to be uploading files, are you sure you want to quit?": "Úgy tűnik fájlokat töltesz fel, biztosan kilépsz?", + "You should not yet trust it to secure data": "Még ne bízz meg a titkosításban", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Nem leszel képes visszavonni ezt a változtatást mivel a felhasználót ugyanarra a szintre emeled amin te vagy.", + "Your home server does not support device management.": "A Matrix szervered nem támogatja az eszközök kezelését.", + "Sun": "Vas", + "Mon": "Hé", + "Tue": "K", + "Wed": "Sze", + "Thu": "Csüt", + "Fri": "Pé", + "Sat": "Szo", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Már", + "Apr": "Ápr", + "May": "Máj", + "Jun": "Jún", + "Jul": "Júl", + "Aug": "Aug", + "Sep": "Szept", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dec", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Megjelenítési név beállítása:", + "Upload an avatar:": "Avatar kép feltöltése:", + "This server does not support authentication with a phone number.": "Ez a szerver nem támogatja a telefonszámmal való azonosítást.", + "Missing password.": "Hiányzó jelszó.", + "Passwords don't match.": "A jelszavak nem egyeznek meg.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "A jelszó túl rövid (min. %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Ez nem tűnik érvényes e-mail címnek.", + "This doesn't look like a valid phone number.": "Ez nem tűnik érvényes telefonszámnak.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "A felhasználói név csak betűket, számokat, pontokat, kötőjeleket és aláhúzás jeleket tartalmazhat.", + "An unknown error occurred.": "Ismeretlen hiba történt.", + "I already have an account": "Már van fiókom", + "An error occurred: %(error_string)s": "Hiba történt: %(error_string)s", + "Topic": "Téma", + "Make Moderator": "Legyen moderátor", + "Make this room private": "Ez a szoba legyen privát", + "Share message history with new users": "Régi üzenetek megosztása új felhasználókkal", + "Encrypt room": "Szoba titkosítása", + "There are no visible files in this room": "Ebben a szobában láthatólag nincsenek fájlok", + "Room": "Szoba", + "Connectivity to the server has been lost.": "A szerverrel a kapcsolat megszakadt.", + "Sent messages will be stored until your connection has returned.": "Az elküldött üzenetek addig lesznek tárolva amíg a kapcsolatod újra elérhető lesz.", + "(~%(count)s results)": { + "one": "(~%(count)s db eredmény)", + "other": "(~%(count)s db eredmény)" + }, + "Active call": "Folyamatban lévő hívás", + "bold": "félkövér", + "italic": "dőlt", + "strike": "áthúzott", + "underline": "aláhúzott", + "code": "kód", + "quote": "idézet", + "bullet": "lista", + "numbullet": "számozott lista", + "Please select the destination room for this message": "Kérlek add meg az üzenet cél szobáját", + "New Password": "Új jelszó", + "Start automatically after system login": "Rendszerindításkor automatikus elindítás", + "Desktop specific": "Asztali használatra jellemző", + "Analytics": "Analitika", + "Options": "Opciók", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot személytelen analitikai adatokat gyűjt annak érdekében, hogy fejleszteni tudjuk az alkalmazást.", + "Passphrases must match": "A jelmondatoknak meg kell egyezniük", + "Passphrase must not be empty": "A jelmondat nem lehet üres", + "Export room keys": "Szoba kulcsok mentése", + "Confirm passphrase": "Jelmondat megerősítése", + "Import room keys": "Szoba kulcsok betöltése", + "File to import": "Fájl betöltése", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "A kimentett fájl jelmondattal van védve. A kibontáshoz add meg a jelmondatot.", + "You must join the room to see its files": "Ahhoz hogy lásd a fájlokat be kell lépned a szobába", + "Reject all %(invitedRooms)s invites": "Minden %(invitedRooms)s meghívó elutasítása", + "Start new chat": "Új csevegés indítása", + "Failed to invite": "Meghívás sikertelen", + "Failed to invite user": "Felhasználó meghívása sikertelen", + "Failed to invite the following users to the %(roomName)s room:": "Az alábbi felhasználókat nem sikerült meghívni a(z) %(roomName)s szobába:", + "Confirm Removal": "Törlés megerősítése", + "Unknown error": "Ismeretlen hiba", + "Incorrect password": "Helytelen jelszó", + "To continue, please enter your password.": "A folytatáshoz, kérlek add meg a jelszavadat.", + "Device name": "Eszköz neve", + "Device Name": "Eszköz neve", + "Device key": "Eszköz kulcsa", + "In future this verification process will be more sophisticated.": "A jövőben ez az ellenőrzési folyamat egyszerűsödni fog.", + "Verify device": "Eszköz ellenőrzése", + "I verify that the keys match": "Megerősítem, hogy a kulcsok egyeznek", + "Unable to restore session": "A kapcsolatot nem lehet visszaállítani", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" szobában olyan eszközök vannak amiket még nem láttál.", + "Unknown devices": "Ismeretlen eszköz", + "Unknown Address": "Ismeretlen cím", + "Unblacklist": "Tiltólistáról kivesz", + "Blacklist": "Tiltólistára", + "Unverify": "Azonosítás visszavonása", + "Verify...": "Ellenőrzés...", + "ex. @bob:example.com": "pl.: @bob:example.com", + "Add User": "Felhasználó hozzáadás", + "This Home Server would like to make sure you are not a robot": "A Matrix szerver meg szeretne győződni arról, hogy nem vagy robot", + "Sign in with CAS": "Belépés CAS-sal", + "Please check your email to continue registration.": "Ellenőrizd az e-mailedet a regisztráció folytatásához.", + "Token incorrect": "Helytelen token", + "Please enter the code it contains:": "Add meg a benne lévő kódot:", + "You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s névvel regisztrálsz", + "Default server": "Alapértelmezett szerver", + "Custom server": "Egyedi szerver", + "Home server URL": "Matrix szerver URL", + "Identity server URL": "Azonosítási szerver URL", + "What does this mean?": "Ez mit jelent?", + "Error decrypting audio": "Hiba a hang visszafejtésénél", + "Error decrypting image": "Hiba a kép visszafejtésénél", + "Error decrypting video": "Hiba a videó visszafejtésénél", + "Add an Integration": "Integráció hozzáadása", + "Removed or unknown message type": "Eltávolított üzenet vagy ismeretlen üzenet típus", + "URL Previews": "URL előnézet", + "Drop file here to upload": "Feltöltéshez húzz ide egy fájlt", + " (unsupported)": " (nem támogatott)", + "Ongoing conference call%(supportedText)s.": "Folyamatban lévő konferencia hívás %(supportedText)s.", + "Online": "Online", + "Idle": "Várakozik", + "Offline": "Nem érhető el", + "Start chatting": "Csevegés indítása", + "Start Chatting": "Csevegés indítása", + "Click on the button below to start chatting!": "Csevegés indításához kattints a gombra alább!", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s megváltoztatta a szoba avatar képét: ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s törölte a szoba avatar képét.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s megváltoztatta %(roomName)s szoba avatar képét", + "Username available": "Szabad felhasználói név", + "Username not available": "A felhasználói név foglalt", + "Something went wrong!": "Valami tönkrement!", + "If you already have a Matrix account you can log in instead.": "Ha már van Matrix fiókod akkor beléphetsz helyette.", + "Your browser does not support the required cryptography extensions": "A böngésződ nem támogatja a szükséges titkosítási kiterjesztést", + "Not a valid Riot keyfile": "Nem érvényes Riot kulcsfájl", + "Authentication check failed: incorrect password?": "Azonosítás sikertelen: hibás jelszó?", + "Do you want to set an email address?": "Meg szeretnéd adni az e-mail címet?", + "This will allow you to reset your password and receive notifications.": "Ezzel alaphelyzetbe tudod állítani a jelszavad és értesítéseket fogadhatsz.", + "Deops user with given id": "A megadott azonosítójú felhasználó lefokozása", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "A jelszó lecserélése megújítja a ponttól pontig való titkosításhoz használt kulcsokat minden eszközön ezzel a titkosított szobák régi üzenetei olvashatatlanok lesznek hacsak nem mented el a kulcsokat és utána visszatöltöd. A jövőben ezen javítunk.", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "FIGYELEM: A KULCS ELLENŐRZÉS SIKERTELEN! A %(userId)s felhasználóhoz és %(deviceId)s eszközhöz tartozó \"%(fprint)s\" ujjlenyomat nem egyezik meg az ismert \"%(fingerprint)s\" ujjlenyomattal. Ez azt jelenti hogy a kapcsolatot lehallgathatják!", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ezzel a folyamattal kimentheted a titkosított szobák üzeneteihez tartozó kulcsokat egy helyi fájlba. Ez után be tudod tölteni ezt a fájlt egy másik Matrix kliensbe, így az a kliens is vissza tudja fejteni az üzeneteket.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "A kimentett fájlal bárki el tudja olvasni a titkosított üzeneteket amiket te is, ezért tartsd biztonságban. Ehhez segítségül írj be egy jelmondatot amivel a kimentett adatok titkosításra kerülnek. Az adatok betöltése csak a jelmondat megadásával lehetséges később.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ezzel a folyamattal lehetőséged van betölteni a titkosítási kulcsokat amiket egy másik Matrix kliensből mentettél ki. Ez után minden üzenetet vissza tudsz fejteni amit a másik kliens tudott.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Biztos hogy eltávolítod (törlöd) ezt az eseményt? Figyelem, ha törlöd vagy megváltoztatod a szoba nevét vagy a témát ez a változtatás érvényét vesztheti.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Az eszköz megbízhatóságának ellenőrzéséhez, lépj kapcsolatba a tulajdonossal valami más csatornán (pl. személyesen vagy telefon hívással) és kérdezd meg, hogy a kulcs amit a Felhasználói Beállításoknál látnak az eszközhöz megegyezik-e a kulccsal itt:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ha megegyezik, nyomd meg az megerősítő gombot alul. Ha nem akkor valaki más használja az eszközt és inkább a Feketelista gombot szeretnéd használni.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ha egy újabb Riot verziót használtál valószínűleg ez kapcsolat nem lesz kompatibilis vele. Zárd be az ablakot és térj vissza az újabb verzióhoz.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Jelenleg fekete listára teszel minden ismeretlen eszközt. Ha üzenetet szeretnél küldeni ezekre az eszközökre először ellenőrizned kell őket.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Azt javasoljuk, hogy menj végig ellenőrző folyamaton minden eszköznél, hogy meg megerősítsd minden eszköz a jogos tulajdonosához tartozik, de újraküldheted az üzenetet ellenőrzés nélkül, ha úgy szeretnéd.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Használhatod az Matrix szerver opciót, hogy más Matrix szerverre csatlakozz Matrix szerver URL megadásával.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Ezzel használhatod ezt az alkalmazást a meglévő Matrix fiókoddal és másik Matrix szerveren.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Beállíthatsz egy egyedi azonosító szervert is de ez tulajdonképpen meggátolja az együttműködést e-mail címmel azonosított felhasználókkal.", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ha nem állítasz be e-mail címet nem fogod tudni a jelszavadat alaphelyzetbe állítani. Biztos vagy benne?", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Azonosítás céljából egy harmadik félhez leszel irányítva (%(integrationsUrl)s). Folytatod?", + "This will be your account name on the homeserver, or you can pick a different server.": "Ez lesz a felhasználói neved a Matrix szerveren, vagy választhatsz egy másik szervert.", + "Disable Peer-to-Peer for 1:1 calls": "Közvetlen kapcsolat tiltása az 1:1 hívásoknál", + "To return to your account in future you need to set a password": "Ahhoz hogy később visszatérj a fiókodba be kell állítanod egy jelszót", + "Skip": "Kihagy", + "Start verification": "Ellenőrzés megkezdése", + "Share without verifying": "Megosztás ellenőrzés nélkül", + "Ignore request": "Kérés figyelmen kívül hagyása", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Hozzáadtál egy új eszközt '%(displayName)s', ami titkosítási kulcsokat kér.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Az ellenőrizetlen eszközöd '%(displayName)s' titkosítási kulcsokat kér.", + "Encryption key request": "Titkosítási kulcs kérés", + "Updates": "Frissítések", + "Check for update": "Frissítések keresése", + "Add a widget": "Kisalkalmazás hozzáadása", + "Allow": "Engedélyez", + "Changes colour scheme of current room": "Az aktuális szoba színének megváltoztatása", + "Delete widget": "Kisalkalmazás törlése", + "Define the power level of a user": "A felhasználó szintjének meghatározása", + "Edit": "Szerkeszt", + "Enable automatic language detection for syntax highlighting": "Nyelv automatikus felismerése szintaxis kiemeléshez", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Belép/kilép üzenetek elrejtése (meghívók, kirúgások, kitiltások nem érintettek)", + "AM": "de", + "PM": "du", + "Revoke widget access": "Kisalkalmazás hozzáférésének visszavonása", + "Sets the room topic": "Szoba téma beállítás", + "To get started, please pick a username!": "Az induláshoz válassz egy felhasználói nevet!", + "Unable to create widget.": "Nem lehet kisalkalmazást létrehozni.", + "Unbans user with given id": "Visszaengedi a megadott azonosítójú felhasználót", + "You are not in this room.": "Nem vagy ebben a szobában.", + "You do not have permission to do that in this room.": "Nincs jogod ezt tenni ebben a szobában.", + "Verifies a user, device, and pubkey tuple": "A felhasználó, eszköz és publikus kulcs hármas ellenőrzése", + "Autocomplete Delay (ms):": "Várakozás automatikus kiegészítés előtt (ms):", + "Loading device info...": "Eszköz információk betöltése...", + "Example": "Példa", + "Create": "Létrehoz", + "Featured Rooms:": "Kiemelt szobák:", + "Featured Users:": "Kiemelt felhasználók:", + "Automatically replace plain text Emoji": "Egyszerű szöveg automatikus cseréje Emoji-ra", + "Failed to upload image": "Kép feltöltése sikertelen", + "Hide avatars in user and room mentions": "Profilképek elrejtése felhasználó és szoba említésekben", + "Cannot add any more widgets": "Nem lehet több kisalkalmazást hozzáadni", + "Do you want to load widget from URL:": "Betöltöd a kisalkalmazást erről az URL-ről:", + "Integrations Error": "Integrációs hiba", + "Publish this room to the public in %(domain)s's room directory?": "Publikálod a szobát a(z) %(domain)s szoba listájába?", + "NOTE: Apps are not end-to-end encrypted": "Megjegyzés: Az alkalmazások nem végponttól végpontig titkosítottak", + "The maximum permitted number of widgets have already been added to this room.": "A maximálisan megengedett számú kisalkalmazás már hozzá van adva a szobához.", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s hozzáadta", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s eltávolította", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot ellenőrzés az asztali verzióban nem érhető el - használd a web böngészőt", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s kisalkalmazást %(senderName)s módosította", + "Copied!": "Lemásolva!", + "Failed to copy": "Sikertelen másolás", + "Advanced options": "További beállítások", + "Block users on other matrix homeservers from joining this room": "Felhasználók szobába való belépésének megakadályozása távoli szerverekről", + "This setting cannot be changed later!": "Ezt a beállítást később nem lehet megváltoztatni!", + "Ignored Users": "Figyelmen kívül hagyott felhasználók", + "Ignore": "Figyelmen kívül hagy", + "Unignore": "Figyelembe vesz", + "User Options": "Felhasználói beállítások", + "You are now ignoring %(userId)s": "Most figyelmen kívül hagyod: %(userId)s", + "You are no longer ignoring %(userId)s": "Ismét figyelembe veszed: %(userId)s", + "Unignored user": "Figyelembe vett felhasználó", + "Ignored user": "Figyelmen kívül hagyott felhasználó", + "Stops ignoring a user, showing their messages going forward": "Felhasználót újra figyelembe vesszük és megmutatjuk az új üzeneteit", + "Ignores a user, hiding their messages from you": "Felhasználó figyelmen kívül hagyásával elrejtheted az üzeneteit magad elől", + "Disable Emoji suggestions while typing": "Emoji ajánlások kikapcsolása gépelés közben", + "Banned by %(displayName)s": "Kitiltotta: %(displayName)s", + "Message removed by %(userId)s": "Üzenetet törölte: %(userId)s", + "To send messages, you must be a": "Ahhoz, hogy üzenetet tudj küldeni, ilyen szinten kell lenned:", + "To invite users into the room, you must be a": "Hogy meghívj valakit a szobába, ilyen szinten kell lenned:", + "To configure the room, you must be a": "A szoba beállításához ilyen szinten kell lenned:", + "To kick users, you must be a": "Felhasználó kirúgásához ilyen szinten kell lenned:", + "To ban users, you must be a": "Felhasználó kizárásához ilyen szinten kell lenned:", + "To remove other users' messages, you must be a": "Más üzenetének a kitakarásához ilyen szinten kell lenned:", + "To send events of type , you must be a": " esemény küldéséhez ilyen szinten kell lenned:", + "To change the room's avatar, you must be a": "A szoba avatarjának a megváltoztatásához ilyen szinten kell lenned:", + "To change the room's name, you must be a": "A szoba nevének megváltoztatásához ilyen szinten kell lenned:", + "To change the room's main address, you must be a": "A szoba elsődleges címének a megváltoztatásához ilyen szinten kell lenned:", + "To change the room's history visibility, you must be a": "A szoba napló elérhetőségének a megváltoztatásához ilyen szinten kell lenned:", + "To change the permissions in the room, you must be a": "A szobában a jogosultság megváltoztatásához ilyen szinten kell lenned:", + "To change the topic, you must be a": "A téma megváltoztatásához ilyen szinten kell lenned:", + "To modify widgets in the room, you must be a": "A szoba kisalkalmazásainak megváltoztatásához ilyen szinten kell lenned:", + "Description": "Leírás", + "Name or matrix ID": "Név vagy Matrix azonosító", + "Unable to accept invite": "A meghívót nem lehet elfogadni", + "Leave": "Elhagy", + "Failed to invite the following users to %(groupId)s:": "Az alábbi felhasználókat nem sikerült meghívni a(z) %(groupId)s:", + "Failed to invite users to %(groupId)s": "Nem sikerült meghívni a felhasználókat ebbe a csoportba: %(groupId)s", + "Unable to reject invite": "Nem sikerül elutasítani a meghívót", + "Leave %(groupName)s?": "Elhagyod a csoportot: %(groupName)s?", + "Add a Room": "Szoba hozzáadása", + "Add a User": "Felhasználó hozzáadása", + "Who would you like to add to this summary?": "Kit szeretnél hozzáadni ehhez az összefoglalóhoz?", + "Add to summary": "Összefoglalóhoz adás", + "Failed to add the following users to the summary of %(groupId)s:": "Az alábbi felhasználókat nem sikerült hozzáadni a(z) %(groupId)s csoport összefoglalójához:", + "Which rooms would you like to add to this summary?": "Melyik szobákat szeretnéd hozzáadni ehhez az összefoglalóhoz?", + "Room name or alias": "Szoba neve vagy beceneve", + "Failed to add the following rooms to the summary of %(groupId)s:": "Az alábbi szobákat nem sikerült hozzáadni a(z) %(groupId)s csoport összefoglalójához:", + "Failed to remove the room from the summary of %(groupId)s": "Az alábbi szobákat nem sikerült eltávolítani a(z) %(groupId)s csoport összefoglalójából", + "The room '%(roomName)s' could not be removed from the summary.": "Nem sikerült törölni az összefoglalóból ezt a szobát: '%(roomName)s'.", + "Failed to remove a user from the summary of %(groupId)s": "Nem sikerült törölni az összefoglalóból ezt a felhasználót: %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Nem sikerült törölni az összefoglalóból a(z) %(displayName)s felhasználót", + "Light theme": "Világos téma", + "Dark theme": "Sötét téma", + "Unknown": "Ismeretlen", + "Failed to add the following rooms to %(groupId)s:": "Az alábbi szobákat nem sikerült hozzáadni a(z) %(groupId)s csoporthoz:", + "Matrix ID": "Matrix azonosító", + "Matrix Room ID": "Szoba Matrix azonosító", + "email address": "E-mail cím", + "Try using one of the following valid address types: %(validTypesList)s.": "Próbáld meg valamelyik érvényes cím típust: %(validTypesList)s.", + "You have entered an invalid address.": "Érvénytelen címet adtál meg.", + "Failed to remove '%(roomName)s' from %(groupId)s": "A(z) %(groupId)s csoportból nem sikerült törölni: %(roomName)s", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Biztos, hogy törlöd a(z) %(roomName)s szobát a(z) %(groupId)s csoportból?", + "Jump to read receipt": "Olvasási visszaigazolásra ugrás", + "Disable big emoji in chat": "Nagy emoji-k tiltása a csevegésben", + "Message Pinning": "Üzenet kitűzése", + "Remove avatar": "Avatar törlése", + "Pinned Messages": "Kitűzött üzenetek", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s megváltoztatta a szoba kitűzött szövegeit.", + "Who would you like to add to this community?": "Kit szeretnél hozzáadni ehhez a közösséghez?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Figyelem: minden személy akit hozzáadsz a közösséghez mindenki számára látható lesz aki ismeri a közösség azonosítóját", + "Invite new community members": "Új tagok meghívása a közösségbe", + "Invite to Community": "Meghívás a közösségbe", + "Which rooms would you like to add to this community?": "Melyik szobákat szeretnéd hozzáadni a közösséghez?", + "Add rooms to the community": "Szobák hozzáadása a közösséghez", + "Add to community": "Hozzáadás a közösséghez", + "Failed to invite users to community": "Nem sikerült tagokat meghívni a közösségbe", + "Communities": "Közösségek", + "Unpin Message": "Üzenet levétele", + "Jump to message": "Üzenetre ugrás", + "No pinned messages.": "Nincsenek kitűzött üzenetek.", + "Loading...": "Betöltés...", + "Unnamed room": "Névtelen szoba", + "World readable": "Nyilvános", + "Guests can join": "Vendégek is csatlakozhatnak", + "No rooms to show": "Nincsenek megjeleníthető szobák", + "Invalid community ID": "Érvénytelen közösségi azonosító", + "'%(groupId)s' is not a valid community ID": "%(groupId)s nem egy érvényes közösségi azonosító", + "New community ID (e.g. +foo:%(localDomain)s)": "Új közösségi azonosító (pl.: +foo:%(localDomain)s)", + "Remove from community": "Elküldés a közösségből", + "Failed to remove user from community": "Nem sikerült elküldeni felhasználót a közösségből", + "Filter community members": "Közösségi tagok szűrése", + "Filter community rooms": "Közösségi szobák szűrése", + "Failed to remove room from community": "Nem sikerült kivenni a szobát a közösségből", + "Removing a room from the community will also remove it from the community page.": "A szoba kivétele a közösségből törölni fogja a közösség oldaláról is.", + "Create Community": "Új közösség", + "Community Name": "Közösség neve", + "Community ID": "Közösség azonosító", + "Add rooms to the community summary": "Szobák hozzáadása a közösségi összefoglalóhoz", + "Add users to the community summary": "Felhasználók hozzáadása a közösségi összefoglalóhoz", + "Failed to update community": "Közösség frissítése sikertelen", + "Leave Community": "Közösség elhagyása", + "Add rooms to this community": "Szobák hozzáadása ehhez a közösséghez", + "%(inviter)s has invited you to join this community": "%(inviter)s meghívott ebbe a közösségbe", + "You are a member of this community": "Tagja vagy ennek a közösségnek", + "You are an administrator of this community": "Adminisztrátora vagy ennek a közösségnek", + "Long Description (HTML)": "Hosszú leírás (HTML)", + "Community Settings": "Közösségi beállítások", + "Community %(groupId)s not found": "%(groupId)s közösség nem található", + "This Home server does not support communities": "Ez a Matrix szerver nem támogatja a közösségeket", + "Error whilst fetching joined communities": "Hiba a csatlakozott közösségek betöltésénél", + "Create a new community": "Új közösség létrehozása", + "example": "példa", + "Failed to load %(groupId)s": "Nem sikerült betölteni: %(groupId)s", + "Your Communities": "Közösségeid", + "You're not currently a member of any communities.": "Nem vagy tagja egyetlen közösségnek sem.", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Készíts közösséget hogy egybegyűjtsd a felhasználókat és szobákat! Készíts egy saját kezdőlapot amivel meghatározhatod magad a Matrix univerzumában.", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s és még %(count)s felhasználó gépel", + "one": "%(names)s és más ír" + }, + "And %(count)s more...": { + "other": "És még %(count)s..." + }, + "Something went wrong whilst creating your community": "Valami nem sikerült a közösség létrehozásánál", + "Mention": "Említ", + "Invite": "Meghív", + "Message removed": "Üzenet eltávolítva", + "Delete Widget": "Kisalkalmazás törlése", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "A kisalkalmazás törlése minden felhasználót érint a szobában. Tényleg törölni szeretnéd?", + "Mirror local video feed": "Helyi videó folyam tükrözése", + "Failed to withdraw invitation": "Nem sikerült visszavonni a meghívót", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "A közösségi azonosítók csak az alábbi karaktereket tartalmazhatják: a-z, 0-9 vagy '=_-./'", + "%(senderName)s sent an image": "%(senderName)s küldött egy képet", + "%(senderName)s sent a video": "%(senderName)s küldött egy videót", + "%(senderName)s uploaded a file": "%(senderName)s feltöltött egy fájlt", + "Disinvite this user?": "Visszavonod a felhasználó meghívását?", + "Kick this user?": "Kirúgod a felhasználót?", + "Unban this user?": "Visszaengeded a felhasználót?", + "Ban this user?": "Kitiltod a felhasználót?", + "Drop here to favourite": "Kedvencnek jelöléshez ejtsd ide", + "Drop here to tag direct chat": "Közvetlen csevegéshez való megjelöléshez ejtsd ide", + "Drop here to restore": "Visszaállításhoz ejtsd ide", + "Drop here to demote": "Lefokozáshoz ejtsd ide", + "You have been kicked from this room by %(userName)s.": "%(userName)s kirúgott ebből a szobából.", + "You have been banned from this room by %(userName)s.": "%(userName)s kitiltott ebből a szobából.", + "You are trying to access a room.": "Megpróbálod elérni ezt a szobát.", + "Members only (since the point in time of selecting this option)": "Csak tagok számára (a beállítás kiválasztásától)", + "Members only (since they were invited)": "Csak tagoknak (a meghívásuk idejétől)", + "Members only (since they joined)": "Csak tagoknak (amióta csatlakoztak)", + "An email has been sent to %(emailAddress)s": "E-mail-t neki küldtünk: %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "Szöveges üzenetet küldtünk neki: %(msisdn)s", + "Disinvite this user from community?": "Visszavonod a felhasználó meghívóját a közösségből?", + "Remove this user from community?": "Eltávolítod a felhasználót a közösségből?", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s %(count)s alkalommal csatlakozott", + "one": "%(severalUsers)s csatlakozott" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s %(count)s alkalommal csatlakozott", + "one": "%(oneUser)s csatlakozott" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s %(count)s alkalommal távozott", + "one": "%(severalUsers)s távozott" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s %(count)s alkalommal távozott", + "one": "%(oneUser)s távozott" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s %(count)s alkalommal csatlakozott és távozott", + "one": "%(severalUsers)s csatlakozott és távozott" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s %(count)s alkalommal csatlakozott és távozott", + "one": "%(oneUser)s csatlakozott és távozott" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s %(count)s alkalommal távozott és újra csatlakozott", + "one": "%(severalUsers)s távozott és újra csatlakozott" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s %(count)s alkalommal távozott és újra csatlakozott", + "one": "%(oneUser)s távozott és újra csatlakozott" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s %(count)s alkalommal elutasította a meghívóit", + "one": "%(severalUsers)s elutasította a meghívóit" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s %(count)s alkalommal elutasította a meghívóit", + "one": "%(oneUser)s elutasította a meghívóit" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s meghívóit %(count)s alkalommal visszavonták", + "one": "%(severalUsers)s visszavonták a meghívóit" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s meghívóit %(count)s alkalommal vonták vissza", + "one": "%(oneUser)s meghívóit visszavonták" + }, + "were invited %(count)s times": { + "other": "%(count)s alkalommal lett meghívva", + "one": "meg lett hívva" + }, + "was invited %(count)s times": { + "other": "%(count)s alkalommal lett meghívva", + "one": "meg lett hívva" + }, + "were banned %(count)s times": { + "other": "%(count)s alkalommal lett kitiltva", + "one": "lett kitiltva" + }, + "was banned %(count)s times": { + "other": "%(count)s alkalommal lett kitiltva", + "one": "ki lett tiltva" + }, + "were unbanned %(count)s times": { + "other": "%(count)s alkalommal lett visszaengedve", + "one": "vissza lett engedve" + }, + "was unbanned %(count)s times": { + "other": "%(count)s alkalommal lett visszaengedve", + "one": "vissza lett engedve" + }, + "were kicked %(count)s times": { + "other": "%(count)s alkalommal lett kirúgva", + "one": "ki lett rúgva" + }, + "was kicked %(count)s times": { + "other": "%(count)s alkalommal ki lett rúgva", + "one": "ki lett rúgva" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s %(count)s alkalommal megváltoztatta a nevét", + "one": "%(severalUsers)s megváltoztatta a nevét" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s %(count)s alkalommal megváltoztatta a nevét", + "one": "%(oneUser)s megváltoztatta a nevét" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s %(count)s alkalommal megváltoztatta az avatarját", + "one": "%(severalUsers)s megváltoztatta az avatarját" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s %(count)s alkalommal megváltoztatta az avatarját", + "one": "%(oneUser)s megváltoztatta az avatarját" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s és még %(count)s másik", + "one": "%(items)s és még egy másik" + }, + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Az e-mail leküldésre került ide: %(emailAddress)s. Ha követte a levélben lévő linket kattints alább.", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "%(roomName)s szoba láthatóságát nem lehet frissíteni ebben a közösségben: %(groupId)s.", + "Visibility in Room List": "Láthatóság a szoba listában", + "Visible to everyone": "Mindenki számára látható", + "Only visible to community members": "Csak a közösség számára látható", + "Community Invites": "Közösségi meghívók", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML a közösségi oldalhoz

\n

\n Használj hosszú leírást az tagok közösségbe való bemutatásához vagy terjessz\n hasznos linkeket\n

\n

\n Még 'img' tagokat is használhatsz\n

\n", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ezek a szobák megjelennek a közösség tagjainak a közösségi oldalon. A közösség tagjai kattintással csatlakozhatnak a szobákhoz.", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "A közösségednek nincs bő leírása, HTML oldala ami megjelenik a közösség tagjainak.
A létrehozáshoz kattints ide!", + "Notify the whole room": "Az egész szoba értesítése", + "Room Notification": "Szoba értesítések", + "Show these rooms to non-members on the community page and room list?": "Mutassuk meg ezeket a szobákat kívülállóknak a közösségi oldalon és a szobák listájában?", + "Sign in to get started": "Az induláshoz jelentkezz be", + "Status.im theme": "Status.im téma", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Figyelem, a %(hs)s szerverre jelentkezel be és nem a matrix.org szerverre.", + "Username on %(hs)s": "Felhasználónév a %(hs)s szerveren", + "Restricted": "Korlátozott", + "Custom of %(powerLevel)s": "Egyedi beállítás: %(powerLevel)s", + "Hide avatar changes": "Avatar változások elrejtése", + "Hide display name changes": "Név változások elrejtése", + "Enable inline URL previews by default": "Beágyazott URL előnézetek alapértelmezett engedélyezése", + "Enable URL previews for this room (only affects you)": "URL előnézet ebben a szobában (csak téged érint)", + "Enable URL previews by default for participants in this room": "URL előnézet alapértelmezett engedélyezése a szoba tagságának", + "URL previews are enabled by default for participants in this room.": "Az URL előnézetek alapértelmezetten engedélyezve vannak a szobában jelenlévőknek.", + "URL previews are disabled by default for participants in this room.": "Az URL előnézet alapértelmezetten tiltva van a szobában jelenlévőknek.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Senki más nincs itt! Szeretnél meghívni másokat vagy leállítod a figyelmeztetést az üres szobára?", + "%(duration)ss": "%(duration)s mp", + "%(duration)sm": "%(duration)s p", + "%(duration)sh": "%(duration)s ó", + "%(duration)sd": "%(duration)s nap", + "Online for %(duration)s": "%(duration)s óta elérhető", + "Idle for %(duration)s": "%(duration)s óta tétlen", + "Offline for %(duration)s": "%(duration)s óta elérhetetlen", + "Unknown for %(duration)s": "%(duration)s óta az állapota ismeretlen", + "Delete %(count)s devices": { + "other": "%(count)s darab eszköz törlése", + "one": "Eszköz törlése" + }, + "Select devices": "Eszköz kiválasztása", + "Flair": "Jelvény", + "Showing flair for these communities:": "Ezekben a közösségekben mutassa a jelvényt:", + "This room is not showing flair for any communities": "Ez a szoba nem mutat jelvényt egyetlen közösséghez sem", + "Flair will appear if enabled in room settings": "Ha a szoba beállításai megengedik akkor jelennek meg a jelvények", + "Flair will not appear": "Jelvények nem jelennek meg", + "Something went wrong when trying to get your communities.": "Valami nem sikerült a közösségeid elérésénél.", + "Display your community flair in rooms configured to show it.": "Közösségi jelvényeid megjelenítése azokban a szobákban ahol ez engedélyezett.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Ez a Matrix szerver egyetlen bejelentkezési metódust sem támogat amit ez a kliens ismer.", + "Addresses": "Címek", + "collapse": "becsuk", + "expand": "kinyit", + "Call Failed": "Sikertelen hívás", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Ismeretlen eszközök vannak ebben a szobában: ha ellenőrzés nélkül folytatod lehetséges, hogy valaki belehallgat a hívásba.", + "Review Devices": "Eszközök áttekintése", + "Call Anyway": "Mindenképpen hívj", + "Answer Anyway": "Mindenképpen felvesz", + "Call": "Hívás", + "Answer": "Felvesz", + "Send": "Elküld", + "Old cryptography data detected": "Régi titkosítási adatot találhatók", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Régebbi Riot verzióból származó adatok találhatók. Ezek hibás működéshez vezethettek a végponttól-végpontig titkosításban régebbi verzióknál. A nemrég küldött/fogadott titkosított üzenetek ha a régi adatokat használták lehetséges hogy nem lesznek visszafejthetők ebben a verzióban. Ha problémákba ütközöl jelentkezz ki és vissza. A régi üzenetek elérésének biztosításához mentsd ki a kulcsokat és töltsd be újra.", + "Warning": "Figyelmeztetés", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Ahogy lefokozod magad a változás visszafordíthatatlan, ha te vagy az utolsó jogosultságokkal bíró felhasználó a szobában a jogok már nem szerezhetők vissza.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Újraküldöd mind vagy elveted mind. Az üzeneteket egyenként is elküldheted vagy elvetheted.", + "one": "Üzenet újraküldése vagy üzenet elvetése most." + }, + "Send an encrypted reply…": "Titkosított válasz küldése…", + "Send a reply (unencrypted)…": "Válasz küldése (titkosítatlanul)…", + "Send an encrypted message…": "Titkosított üzenet küldése…", + "Send a message (unencrypted)…": "Üzenet küldése (titkosítás nélkül)…", + "Replying": "Válaszolni", + "Minimize apps": "Alkalmazás összecsukása", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "A személyes adatok védelme fontos számunkra, így mi nem gyűjtünk személyes és személyhez köthető adatokat az analitikánkhoz.", + "Learn more about how we use analytics.": "Tudj meg többet arról hogyan használjuk az analitikai adatokat.", + "The information being sent to us to help make Riot.im better includes:": "Az adatok amiket a Riot.im javításához felhasználunk az alábbiak:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Minden azonosításra alkalmas adatot mint a szoba, felhasználó vagy csoport azonosítót mielőtt az adatokat elküldenénk eltávolításra kerülnek.", + "The platform you're on": "A platform amit használsz", + "The version of Riot.im": "Riot.im verziója", + "Whether or not you're logged in (we don't record your user name)": "Be vagy-e jelentkezve vagy nem (a felhasználói nevedet nem tároljuk)", + "Your language of choice": "A használt nyelv", + "Which officially provided instance you are using, if any": "Milyen hivatalosan nyújtott verziót használsz", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Használod-e a Richtext módot a szerkesztőben vagy nem", + "Your homeserver's URL": "A Matrix szerver URL-t", + "Your identity server's URL": "Az azonosítási szerver URL-t", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s. %(monthName)s %(day)s, %(weekDayName)s", + "This room is not public. You will not be able to rejoin without an invite.": "Ez a szoba nem nyilvános. Kilépés után csak újabb meghívóval tudsz újra belépni a szobába.", + "Show devices, send anyway or cancel.": "Eszközök listája, mindenképpen küld vagy szakítsd meg.", + "Community IDs cannot be empty.": "A közösségi azonosító nem lehet üres.", + "In reply to ": "Válaszolva neki ", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s megváltoztatta a nevét erre: %(displayName)s.", + "Failed to set direct chat tag": "Nem sikerült a közvetlen beszélgetés jelzést beállítani", + "Failed to remove tag %(tagName)s from room": "Nem sikerült a szobáról eltávolítani ezt: %(tagName)s", + "Failed to add tag %(tagName)s to room": "Nem sikerült hozzáadni a szobához ezt: %(tagName)s", + "Clear filter": "Szűrő törlése", + "Disable Community Filter Panel": "Közösség keresési panel tiltása", + "Did you know: you can use communities to filter your Riot.im experience!": "Tudtad, hogy a Riot.im élmény fokozásához használhatsz közösségeket?", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "A szűrő beállításához húzd a közösség avatarját a szűrő panel fölé a képernyő bal szélén. A szűrő panelen az avatarra kattintva bármikor leszűrheted azokat a szobákat és embereket akik a megadott közösséghez tartoznak.", + "Your key share request has been sent - please check your other devices for key share requests.": "A kulcs megosztási kérést elküldtük - ellenőrizd a többi eszközödön a kulcs megosztási kéréseket.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "A kulcs megosztási kérelem automatikusan el lett küldve a többi eszközödre. Ha elutasítottad vagy törölted a kérést a másik eszközön ide kattintva újra kérheted a kulcsokat.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Ha a másik eszközödön nincs meg a kulcs az üzenet visszafejtéséhez akkor nem tudod visszafejteni.", + "Key request sent.": "Kulcs kérés elküldve.", + "Re-request encryption keys from your other devices.": "Kulcsok újrakérése a többi eszközödtől.", + "%(user)s is a %(userRole)s": "%(user)s egy %(userRole)s", + "Code": "Kód", + "Debug Logs Submission": "Hibakeresési napló elküldése", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ha a GitHubon keresztül küldted be a hibát, a hibakeresési napló segíthet nekünk a javításban. A napló felhasználási adatokat tartalmaz mint a felhasználói neved, az általad meglátogatott szobák vagy csoportok azonosítóját vagy alternatív nevét és mások felhasználói nevét. De nem tartalmazzák az üzeneteket.", + "Submit debug logs": "Hibakeresési napló küldése", + "Opens the Developer Tools dialog": "Megnyitja a fejlesztői eszközök ablakát", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) az alábbi időpontban látta: %(dateTime)s", + "Unable to join community": "Nem sikerült csatlakozni a közösséghez", + "Unable to leave community": "Nem sikerült elhagyni a közösséget", + "Join this community": "Csatlakozás ehhez a közösséghez", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "A közösséget name és avatar érintő változások legfeljebb 30 percig nem lesznek láthatók más felhasználók számára.", + "Leave this community": "Közösség elhagyása", + "Stickerpack": "Matrica csomag", + "You don't currently have any stickerpacks enabled": "Nincs engedélyezett matrica csomagod", + "Add a stickerpack": "Matrica csomag hozzáadása", + "Hide Stickers": "Matricák elrejtése", + "Show Stickers": "Matricák megjelenítése", + "Who can join this community?": "Ki tud csatlakozni ehhez a közösséghez?", + "Everyone": "Mindenki", + "Fetching third party location failed": "Nem sikerült lekérdezni a harmadik fél helyét", + "A new version of Riot is available.": "Elérhető egy új Riot verzió.", + "Couldn't load home page": "Nem sikerült betölteni a kezdőlapot", + "Send Account Data": "Fiókadatok küldése", + "All notifications are currently disabled for all targets.": "Minden céleszközön minden értesítés tiltva van.", + "Uploading report": "Jelentés feltöltése", + "Sunday": "Vasárnap", + "Notification targets": "Értesítések célpontja", + "Today": "Ma", + "Files": "Fájlok", + "You are not receiving desktop notifications": "Nem fogadsz asztali értesítéseket", + "Friday": "Péntek", + "Update": "Frissítés", + "What's New": "Újdonságok", + "Add an email address above to configure email notifications": "E-mail értesítések beállításához adj meg egy e-mail címet", + "Expand panel": "Panel kinyitása", + "On": "Be", + "%(count)s Members": { + "other": "%(count)s tag", + "one": "%(count)s tag" + }, + "Filter room names": "Szobanevek szűrése", + "Changelog": "Változások", + "Waiting for response from server": "Várakozás a szerver válaszára", + "Send Custom Event": "Egyéni esemény elküldése", + "Advanced notification settings": "Haladó értesítési beállítások", + "Failed to send logs: ": "Hiba a napló küldésénél: ", + "delete the alias.": "becenév törlése.", + "To return to your account in future you need to set a password": "Hogy később visszaléphess a fiókodba, be kell állítanod egy jelszót", + "Forget": "Elfelejt", + "#example": "#példa", + "Hide panel": "Panel elrejtése", + "You cannot delete this image. (%(code)s)": "Nem törölheted ezt a képet. (%(code)s)", + "Cancel Sending": "Küldés megszakítása", + "This Room": "Ebben a szobában", + "The Home Server may be too old to support third party networks": "Lehet, hogy a Matrix szerver túl régi és nem támogatja a csatlakozást más hálózatokhoz", + "Resend": "Küldés újra", + "Room not found": "A szoba nem található", + "Messages containing my display name": "A profilnevemet tartalmazó üzenetek", + "Messages in one-to-one chats": "Személyes beszélgetések üzenetei", + "Unavailable": "Elérhetetlen", + "View Decrypted Source": "Visszafejtett forrás megjelenítése", + "Failed to update keywords": "Nem lehet frissíteni a kulcsszavakat", + "Notes:": "Jegyzetek:", + "remove %(name)s from the directory.": "%(name)s szoba törlése a listából.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Az alábbi kulcsszavakról jövő értesítések szabályait nem lehet itt megjeleníteni:", + "Safari and Opera work too.": "Safarival és Operával is működik.", + "Please set a password!": "Állíts be egy jelszót!", + "You have successfully set a password!": "Sikerült beállítani a jelszót!", + "An error occurred whilst saving your email notification preferences.": "Hiba történt az e-mail értesítési beállításaid mentése közben.", + "Explore Room State": "Szoba állapot felderítése", + "Source URL": "Forrás URL", + "Messages sent by bot": "Botok üzenetei", + "Filter results": "Találatok szűrése", + "Members": "Résztvevők", + "No update available.": "Nincs elérhető frissítés.", + "Noisy": "Hangos", + "Failed to get protocol list from Home Server": "Nem sikerült a protokoll listát lekérni a Matrix szerverről", + "Collecting app version information": "Alkalmazás verzió információk összegyűjtése", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Törlöd a szoba nevét (%(alias)s) és eltávolítod a listából ezt: %(name)s?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Így kijelentkezés után is vissza tudsz lépni a fiókodba, illetve más készülékekről is be tudsz lépni.", + "Keywords": "Kulcsszavak", + "Enable notifications for this account": "Értesítések engedélyezése ehhez a fiókhoz", + "Directory": "Könyvtár", + "Invite to this community": "Meghívás ebbe a közösségbe", + "Search for a room": "Szoba keresése", + "Messages containing keywords": "Kulcsszavakat tartalmazó üzenetek", + "Error saving email notification preferences": "Hiba az e-mail értesítési beállítások mentésekor", + "Tuesday": "Kedd", + "Enter keywords separated by a comma:": "Kulcsszavak vesszővel elválasztva:", + "Forward Message": "Üzenet továbbítása", + "You have successfully set a password and an email address!": "Sikerült beállítani a jelszavad és e-mail címed!", + "Remove %(name)s from the directory?": "Törlöd ezt a szobát a listából: %(name)s?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "A Riot sok fejlett böngészőfunkciót használ, amelyeknek egy része egyáltalán nem, vagy csak kísérleti jelleggel érhető el a jelenlegi böngésződben.", + "Developer Tools": "Fejlesztői eszközök", + "Preparing to send logs": "Előkészülés napló küldéshez", + "Enable desktop notifications": "Asztali értesítések engedélyezése", + "Remember, you can always set an email address in user settings if you change your mind.": "Ha meggondolod magad, bármikor beállíthatod az e-mail címed a felhasználói beállításoknál.", + "Explore Account Data": "Fiókadatok felderítése", + "Remove from Directory": "Törlés a listából", + "Saturday": "Szombat", + "I understand the risks and wish to continue": "Megértettem a kockázatot és folytatom", + "Direct Chat": "Közvetlen csevegés", + "The server may be unavailable or overloaded": "A szerver nem elérhető vagy túlterhelt", + "Reject": "Elutasít", + "Failed to set Direct Message status of room": "Nem lehet beállítani a szoba közvetlen beszélgetés státuszát", + "Monday": "Hétfő", + "All messages (noisy)": "Minden üzenet (hangos)", + "Enable them now": "Engedélyezés most", + "Messages containing my user name": "A felhasználónevemet tartalmazó üzenetek", + "Toolbox": "Eszköztár", + "Collecting logs": "Naplók összegyűjtése", + "more": "tovább", + "GitHub issue link:": "GitHub hibajegy hivatkozás:", + "You must specify an event type!": "Meg kell jelölnöd az eseménytípust!", + "(HTTP status %(httpStatus)s)": "(HTTP állapot: %(httpStatus)s)", + "Invite to this room": "Meghívás a szobába", + "Please install Chrome or Firefox for the best experience.": "A legjobb élmény érdekében telepíts Chrome vagy Firefox böngészőt.", + "Failed to get public room list": "Nem sikerült lekérdezni a nyilvános szobák listáját", + "Quote": "Idéz", + "Send logs": "Naplófájlok elküldése", + "All messages": "Minden üzenet", + "Call invitation": "Hívás meghívó", + "Downloading update...": "Frissítés letöltése...", + "State Key": "Állapotkulcs", + "Failed to send custom event.": "Nem sikerült elküldeni az egyéni eseményt.", + "What's new?": "Mik az újdonságok?", + "Notify me for anything else": "Értesíts minden egyéb esetben", + "When I'm invited to a room": "Amikor meghívnak egy szobába", + "Can't update user notification settings": "Nem lehet frissíteni az értesítési beállításokat", + "Notify for all other messages/rooms": "Értesítés minden más üzenethez/szobához", + "Unable to look up room ID from server": "Nem lehet a szoba azonosítóját megkeresni a szerveren", + "Couldn't find a matching Matrix room": "Nem található a keresett Matrix szoba", + "All Rooms": "Minden szobában", + "You cannot delete this message. (%(code)s)": "Nem törölheted ezt az üzenetet. (%(code)s)", + "Thursday": "Csütörtök", + "Search…": "Keresés…", + "Logs sent": "Napló elküldve", + "Back": "Vissza", + "Reply": "Válasz", + "Show message in desktop notification": "Üzenetek megjelenítése az asztali értesítéseknél", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "A hibakereső napló alkalmazás használati adatokat tartalmaz beleértve a felhasználói nevedet, az általad meglátogatott szobák és csoportok azonosítóit alternatív neveit és más felhasználói neveket. Csevegés üzenetek szövegét nem tartalmazza.", + "Unhide Preview": "Előnézet mutatása", + "Unable to join network": "Nem sikerült kapcsolódni a hálózathoz", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Egy másik, nem Riot-klienssel állítothattad be. A Riotban módosítani nem tudod ezeket, de érvényben vannak", + "Sorry, your browser is not able to run Riot.": "Elnézést, a böngésződben nem fut a Riot.", + "Uploaded on %(date)s by %(user)s": "Feltöltötte %(user)s ekkor: %(date)s", + "Messages in group chats": "Csoportszobák üzenetei", + "Yesterday": "Tegnap", + "Error encountered (%(errorDetail)s).": "Hiba történt (%(errorDetail)s).", + "Login": "Bejelentkezés", + "Low Priority": "Alacsony prioritás", + "Unable to fetch notification target list": "Nem sikerült letölteni az értesítési célok listáját", + "Set Password": "Jelszó beállítása", + "Enable audible notifications in web client": "Hangértesítések engedélyezése a webkliensben", + "Off": "Ki", + "Riot does not know how to join a room on this network": "A Riot nem tud csatlakozni szobához ezen a hálózaton", + "Mentions only": "Csak ha megemlítenek", + "Wednesday": "Szerda", + "You can now return to your account after signing out, and sign in on other devices.": "Most már kijelentkezés után is vissza tudsz lépni a fiókodba, és más készülékekről is be tudsz lépni.", + "Enable email notifications": "E-mail értesítések engedélyezése", + "Event Type": "Esemény típusa", + "Download this file": "Fájl letöltése", + "Pin Message": "Üzenet rögzítése", + "Failed to change settings": "A beállítások megváltoztatása nem sikerült", + "View Community": "Közösség megtekintése", + "Event sent!": "Az esemény elküldve!", + "View Source": "Forrás megjelenítése", + "Event Content": "Esemény tartalma", + "Thank you!": "Köszönjük!", + "Collapse panel": "Panel becsukása", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Ebben a böngészőben az alkalmazás felülete tele lehet hibával, és az is lehet, hogy egyáltalán nem működik. Ha így is ki szeretnéd próbálni, megteheted, de ha valami gondod van, nem tudunk segíteni!", + "Checking for an update...": "Frissítés keresése...", + "There are advanced notifications which are not shown here": "Vannak itt nem látható, haladó értesítések", + "Missing roomId.": "Hiányzó szoba azonosító.", + "Picture": "Kép", + "Popout widget": "Kiugró kisalkalmazás", + "Every page you use in the app": "Minden oldal, amit az alkalmazásban használsz", + "e.g. ": "pl.: ", + "Your User Agent": "Felhasználói ügynököd", + "Your device resolution": "Eszközöd felbontása", + "Always show encryption icons": "Titkosítási ikon folyamatos megjelenítése", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot hibák a GItHubon követhetők: hiba bejelentés a GitHubon.", + "Log out and remove encryption keys?": "Kijelentkezel és töröljük a titkosítási kulcsokat?", + "Send Logs": "Naplók küldése", + "Clear Storage and Sign Out": "Tárhely törlése és kijelentkezés", + "Refresh": "Frissítés", + "We encountered an error trying to restore your previous session.": "Hibába ütköztünk megpróbáljuk visszaállítani az előző munkamenetet.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "A böngésződ tárhelyének a törlése megoldhatja a problémát, de ezzel kijelentkezel és a titkosított beszélgetések előzményei olvashatatlanná válnak.", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Jelenleg válaszban nem lehet fájlt küldeni, így most úgy lesz elküldve, hogy ez nem egy válasz.", + "Unable to reply": "Nem lehet válaszolni", + "At this time it is not possible to reply with an emote.": "Jelenleg nem lehet emodzsival válaszolni.", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Nem lehet betölteni azt az eseményt amire válaszoltál, mert vagy nem létezik, vagy nincs jogod megnézni.", + "Collapse Reply Thread": "Beszélgetés szál becsukása", + "Enable widget screenshots on supported widgets": "Ahol az a kisalkalmazásban támogatott ott képernyőkép készítés engedélyezése", + "Send analytics data": "Analitikai adatok küldése", + "Muted Users": "Elnémított felhasználók", + "Warning: This widget might use cookies.": "Figyelmeztetés: Ez a kisalkalmazás sütiket (cookies) használhat.", + "Terms and Conditions": "Általános Szerződési Feltételek", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "A %(homeserverDomain)s szerver használatának folytatásához el kell olvasnod és el kell fogadnod az általános szerződési feltételeket.", + "Review terms and conditions": "Általános Szerződési Feltételek elolvasása", + "Failed to indicate account erasure": "A fiók törlésének jelzése sikertelen", + "To continue, please enter your password:": "Folytatáshoz add meg a jelszavad:", + "password": "jelszó", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Ez végleg használhatatlanná teszi a fiókodat. Ezután nem fogsz tudni bejelentkezni, és más sem tud majd ezzel az azonosítóval fiókot létrehozni. Minden szobából amibe beléptél ki fogsz lépni, és törölni fogja minden fiók adatod az \"identity\" szerverről. Ez a művelet visszafordíthatatlan.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "A fiókod felfüggesztése nem jelenti alapértelmezetten azt, hogy az általad küldött üzenetek elfelejtődnek. Ha törölni szeretnéd az általad küldött üzeneteket, pipáld be a jelölőnégyzetet alul.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Az üzenetek láthatósága a Matrixban hasonlít az emailhez. Az általad küldött üzenet törlése azt jelenti, hogy nem osztjuk meg új-, vagy vendég felhasználóval de a már regisztrált felhasználók akik már hozzáfértek az üzenethez továbbra is elérik a saját másolatukat.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Kérlek töröld az összes általam küldött üzenetet amikor a fiókomat felfüggesztem (Figyelem: ez azt eredményezheti, hogy a jövőbeni felhasználók csak részleges beszélgetést látnak majd)", + "e.g. %(exampleValue)s": "pl. %(exampleValue)s", + "Reload widget": "Kisalkalmazás újratöltése", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Kérlek segíts javítani a Riot.im-et azzal, hogy anonim felhasználási adatokat küldesz. Ez szütit (cookie) fog használni (lásd a sütire vonatkozó szabályozásunkat).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Kérlek segíts javítani a Riot.im-et azzal, hogy anonim felhasználási adatokat küldesz. Ez szütit (cookie) fog használni.", + "Yes, I want to help!": "Igen, segítek!", + "Can't leave Server Notices room": "Nem lehet elhagyni a Szerver Üzenetek szobát", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Ez a szoba fontos szerverüzenetek közlésére jött létre, nem tudsz kilépni belőle.", + "To notify everyone in the room, you must be a": "Hogy mindenkinek tudj üzenni ahhoz ilyen szinten kell lenned:", + "Try the app first": "Először próbáld ki az alkalmazást", + "Encrypting": "Titkosít", + "Encrypted, not sent": "Titkosítva, de nincs elküldve", + "No Audio Outputs detected": "Nem található hang kimenet", + "Audio Output": "Hang kimenet", + "Share Link to User": "Hivatkozás megosztása felhasználóval", + "Share room": "Szoba megosztása", + "Share Room": "Szoba megosztása", + "Link to most recent message": "A legfrissebb üzenetre hivatkozás", + "Share User": "Felhasználó megosztás", + "Share Community": "Közösség megosztás", + "Share Room Message": "Szoba üzenet megosztás", + "Link to selected message": "Hivatkozás a kijelölt üzenetre", + "COPY": "Másol", + "Share Message": "Üzenet megosztása", + "Jitsi Conference Calling": "Jitsi konferencia hívás", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Az olyan titkosított szobákban, mint ez is, az URL előnézet alapértelmezetten ki van kapcsolva, hogy biztosított legyen, hogy a matrix szerver (ahol az előnézet készül) ne tudjon információt gyűjteni arról, hogy milyen linkeket látsz ebben a szobában.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Ha valaki URL linket helyez az üzenetébe, lehetőség van egy előnézet megjelenítésére amivel további információt kaphatunk a linkről, mint cím, leírás és a weboldal képe.", + "The email field must not be blank.": "Az e-mail mező nem lehet üres.", + "The user name field must not be blank.": "A felhasználói név mező nem lehet üres.", + "The phone number field must not be blank.": "A telefonszám mező nem lehet üres.", + "The password field must not be blank.": "A jelszó mező nem lehet üres.", + "Call in Progress": "Hívás folyamatban", + "A call is already in progress!": "A hívás már folyamatban van!", + "You have no historical rooms": "Nincsenek archív szobáid", + "You can't send any messages until you review and agree to our terms and conditions.": "Nem tudsz üzenetet küldeni amíg nem olvasod el és nem fogadod el a felhasználási feltételeket.", + "Demote yourself?": "Lefokozod magad?", + "Demote": "Lefokozás", + "Show empty room list headings": "Üres szobalista fejléc mutatása", + "This event could not be displayed": "Az eseményt nem lehet megjeleníteni", + "deleted": "törölt", + "underlined": "aláhúzott", + "inline-code": "kód", + "block-quote": "idézet", + "bulleted-list": "rendezetlen lista", + "numbered-list": "rendezett lista", + "A conference call could not be started because the intgrations server is not available": "A konferencia hívást nem lehet elkezdeni mert az integrációs szerver nem érhető el", + "Permission Required": "Engedély szükséges", + "You do not have permission to start a conference call in this room": "Nincs jogosultságod konferencia hívást kezdeményezni ebben a szobában", + "A call is currently being placed!": "A hívás indítás alatt!", + "Failed to remove widget": "A kisalkalmazás törlése sikertelen", + "An error ocurred whilst trying to remove the widget from the room": "A kisalkalmazás szobából való törlése közben hiba történt", + "System Alerts": "Rendszer figyelmeztetések", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ez a matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Az üzeneted nem lett elküldve mert a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.", + "This homeserver has hit its Monthly Active User limit": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot", + "Please contact your service administrator to continue using this service.": "Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával ha a továbbiakban is igénybe szeretnéd venni a szolgáltatást.", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával a szolgáltatás további használatához.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátot, így néhány felhasználó nem fog tudni bejelentkezni. Kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával, hogy a korlátot felemeljék.", + "Internal room ID: ": "Belső szoba azonosító: ", + "Room version number: ": "Szoba verziószáma: ", + "There is a known vulnerability affecting this room.": "Ez a szoba ismert sérülékenységgel rendelkezik.", + "This room version is vulnerable to malicious modification of room state.": "A szoba ezen verziójában a szoba állapota ártó szándékkal módosítható.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Kattints ide a szoba legújabb verziójára való frissítéshez, hogy a szoba integritása védve legyen.", + "Only room administrators will see this warning": "Csak a szoba adminisztrátorai látják ezt a figyelmeztetést", + "Please contact your service administrator to continue using the service.": "A szolgáltatás további használata érdekében kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.", + "This homeserver has hit its Monthly Active User limit.": "A Matrix szerver elérte a havi aktív felhasználói korlátot.", + "This homeserver has exceeded one of its resource limits.": "A Matrix szerver túllépte valamelyik erőforrás korlátját.", + "Please contact your service administrator to get this limit increased.": "A korlát emelése érdekében kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Ez a Matrix szerver elérte a havi aktív felhasználói korlátját néhány felhasználó nem fog tudni bejelentkezni.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Ez a Matrix szerver túllépte valamelyik erőforrás korlátját így néhány felhasználó nem tud majd bejelentkezni.", + "Upgrade Room Version": "Szoba verziójának frissítése", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "A szoba frissítése miatt ezt a szobát be kell zárni és egy új szobát kell nyitni a helyében. Hogy a felhasználóknak ne legyen rossz tapasztalata ezért ezt fogjuk tenni:", + "Create a new room with the same name, description and avatar": "Készíts egy új szobát ugyanazzal a névvel, leírással és profilképpel", + "Update any local room aliases to point to the new room": "Állíts át minden helyi alternatív nevet erre a szobára", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "A felhasználóknak tiltsd meg, hogy a régi szobában beszélgessenek. Küldj egy üzenetet amiben megkéred a felhasználókat, hogy menjenek át az új szobába", + "Put a link back to the old room at the start of the new room so people can see old messages": "Tegyél egy linket az új szoba elejére ami visszamutat a régi szobára, hogy az emberek lássák a régi üzeneteket", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Az üzeneted nincs elküldve, mert ez a Matrix szerver elérte a havi aktív felhasználói korlátot. A szolgáltatás további igénybevétele végett kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Az üzeneted nem került elküldésre mert ez a Matrix szerver túllépte valamelyik erőforrás korlátját. A szolgáltatás további igénybevétele végett kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.", + "Please contact your service administrator to continue using this service.": "A szolgáltatás további használatához kérlek vedd fel a kapcsolatot a szolgáltatás adminisztrátorával.", + "Increase performance by only loading room members on first view": "A teljesítmény növelése érdekében a szoba tagsága csak az első megtekintéskor töltődik be", + "Lazy loading members not supported": "A tagok késleltetett betöltése nem támogatott", + "Lazy loading is not supported by your current homeserver.": "A késleltetett betöltés nem támogatott ennél a Matrix szervernél.", + "Sorry, your homeserver is too old to participate in this room.": "Sajnáljuk, a Matrix szervered nem elég friss ahhoz, hogy részt vegyen ebben a szobában.", + "Please contact your homeserver administrator.": "Kérlek vedd fel a kapcsolatot a Matrix szerver adminisztrátorával.", + "Legal": "Jogi", + "This room has been replaced and is no longer active.": "Ezt a szobát lecseréltük és nem aktív többé.", + "The conversation continues here.": "A beszélgetés itt folytatódik.", + "Upgrade room to version %(ver)s": "A szoba frissítése %(ver)s verzióra", + "This room is a continuation of another conversation.": "Ebben a szobában folytatódik egy másik beszélgetés.", + "Click here to see older messages.": "Ide kattintva megnézheted a régi üzeneteket.", + "Failed to upgrade room": "A szoba frissítése sikertelen", + "The room upgrade could not be completed": "A szoba frissítését nem sikerült befejezni", + "Upgrade this room to version %(version)s": "A szoba frissítése %(version)s verzióra", + "Error Discarding Session": "Hiba a munkamenet törlésénél", + "Forces the current outbound group session in an encrypted room to be discarded": "A jelenlegi csoport munkamenet törlését kikényszeríti a titkosított szobában", + "Registration Required": "Regisztrációt igényel", + "You need to register to do this. Would you like to register now?": "Hogy ezt megtedd regisztrálnod kell. Szeretnél regisztrálni?", + "Unable to query for supported registration methods": "A támogatott regisztrációs folyamatok listáját nem sikerült lekérdezni", + "Unable to connect to Homeserver. Retrying...": "A matrix szerverrel nem lehet felvenni a kapcsolatot. Újrapróbálkozás...", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "one": "%(senderName)s szoba címnek beállította: %(addedAddresses)s.", + "other": "%(senderName)s szoba címnek hozzáadta: %(addedAddresses)s." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "one": "%(senderName)s törölte a szoba címek közül: %(removedAddresses)s.", + "other": "%(senderName)s törölte a szoba címek közül: %(removedAddresses)s." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s hozzáadta a szoba címekhez: %(addedAddresses)s és törölte a címek közül: %(removedAddresses)s.", + "%(senderName)s set the canonical address for this room to %(address)s.": "%(senderName)s olvasható címet allított be a szobához: %(address)s.", + "%(senderName)s removed the canonical address for this room.": "%(senderName)s törölte a szoba olvasható címét.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s elsődleges szoba címnek beállította: %(address)s.", + "%(senderName)s removed the main address for this room.": "A szoba elsődleges címét %(senderName)s törölte.", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Mielőtt a naplót elküldöd, egy Github jegyet kell nyitni amiben leírod a problémádat.", + "What GitHub issue are these logs for?": "Melyik Github jegyhez tartozik a napló?", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "3-, 5-ször kevesebb memóriát használ a Riot azzal, hogy csak akkor tölti be az információkat a felhasználókról amikor arra szükség van. Kérlek várd meg amíg újraszinkronizáljuk a szerverrel!", + "Updating Riot": "Riot frissítése", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

HTML a közösségi oldaladhoz

\n

\n Mutasd be a közösségedet az újoncoknak vagy ossz meg\n pár fontos linket\n

\n

\n Még „img” tag-et is használhatsz.\n

\n", + "An email address is required to register on this homeserver.": "Erre a Matrix szerverre való regisztrációhoz az e-mail címet meg kell adnod.", + "A phone number is required to register on this homeserver.": "Erre a Matrix szerverre való regisztrációhoz a telefonszámot meg kell adnod.", + "Submit Debug Logs": "Hibakeresési napló elküldése", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Előzőleg a szoba tagság késleltetett betöltésének engedélyével itt használtad a Riotot: %(host)s. Ebben a verzióban viszont a késleltetett betöltés nem engedélyezett. Mivel a két gyorsítótár nem kompatibilis egymással így Riotnak újra kell szinkronizálnia a fiókot.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Ha a másik Riot verzió fut még egy másik fülön, kérlek zárd be, mivel ha ugyanott használod a Riotot bekapcsolt késleltetett betöltéssel és kikapcsolva is akkor problémák adódhatnak.", + "Incompatible local cache": "A helyi gyorsítótár nem kompatibilis ezzel a verzióval", + "Clear cache and resync": "Gyorsítótár törlése és újraszinkronizálás", + "Please accept all of the policies": "Kérlek fogadd el a felhasználói feltételeket", + "Please review and accept the policies of this homeserver:": "Kérlek nézd át és fogadd el a Matrix szerver felhasználói feltételeit:", + "Add some now": "Adj hozzá párat", + "Joining room...": "Belépés a szobába..", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s alkalmazás %(browserName)s böngészőn %(osName)s rendszeren", + "Riot Desktop on %(platformName)s": "Riot Desktop itt: %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "A mobilböngésző nem támogatja a Riotot. Telepíted inkább az alkalmazást?", + "Unknown device": "Ismeretlen készülék", + "You need to be using HTTPS to place a screen-sharing call.": "Képernyőmegosztás indításához HTTPS-t kell használnod.", + "Welcome to Riot.im": "Üdvözöl a Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizált, titkosított csevegés és kollaboráció [matrix] alapokon", + "Search the room directory": "Keresés a szobajegyzékben", + "Chat with Riot Bot": "Csevegés a Riot Robottal", + "Get started with some tips from Riot Bot!": "Kezdj a Riot Robot néhány tippjével!", + "General discussion about Matrix and Riot": "Általános beszélgetések a Matrixról és a Riotról", + "Discussion of all things Matrix!": "Beszélgetés mindenről, ami Matrix!", + "Riot/Web & Desktop chat": "Riot/Web és Desktop csevegés", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS és matrix-ios-sdk csevegés", + "Riot/Android & matrix-android-sdk chat": "Riot/Android és matrix-android-sdk csevegés", + "Matrix technical discussions": "Technikai jellegű beszélgetések a Matrixról", + "Community-run support for Synapse": "Közösségi támogatás a Synapse-hez", + "Admin support for Dendrite": "Admin támogatás a Dendrite-hoz", + "Announcements about Synapse releases": "Hírek a Synapse kiadásairól", + "Running Matrix services": "Matrix szolgáltatások működtetése", + "Support for those using and running matrix-appservice-irc": "Támogatás a matrix-appservice-irc használóinak és működtetőinek", + "Building services on Matrix": "Szolgáltatások fejlesztése Matrixra", + "Support for those using the Matrix spec": "Támogatás a Matrix specifikáció használóinak", + "Design and implementation of E2E in Matrix": "A végponttól végpontig történő titkosítás (E2E) tervezése és implementációja a Matrixban", + "Implementing VR services with Matrix": "VR szolgáltatások implementációja Matrixba", + "Implementing VoIP services with Matrix": "VoIP szolgáltatások implementációja Matrixba", + "Discussion of the Identity Service API": "Beszélgetés az Identity Service API-ról", + "Support for those using, running and writing other bridges": "Támogatás azoknak, akik egyéb hidakat használnak, működtetnek vagy készítenek", + "Contributing code to Matrix and Riot": "Hozzájárulás a Matrix és Riot programkódjának fejlesztéséhez", + "Dev chat for the Riot/Web dev team": "Csevegés a Riot/Web fejlesztői csapatával fejlesztőknek", + "Dev chat for the Dendrite dev team": "Csevegés a Dendrite fejlesztői csapatával fejlesztőknek", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Már sok szoba van a Matrixon: más hálózatokkal (Slack, IRC, Gitter stb.) összekapcsolt és függetlenek szobák is. Nézd meg a szobajegyzéket!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Bejelentkezhetsz más Matrix szerverre is az egyedi szerverbeállításoknál megadott Matrix szerver URL-jével.
Így használhatod a Riotot egy már máshol meglévő Matrix fiókkal is.

Beállíthatsz egyéni identitásszervert is, de akkor nem tudsz más felhasználókat e-mail címmel meghívni, illetve ők sem tudnak téged.", + "Co-ordination for Riot translators": "Koordináció Riot fordítók számára" +} \ No newline at end of file diff --git a/riot/i18n/it.json b/riot/i18n/it.json new file mode 100644 index 0000000..f5671a3 --- /dev/null +++ b/riot/i18n/it.json @@ -0,0 +1,1402 @@ +{ + "Failed to forget room %(errCode)s": "Impossibile dimenticare la stanza %(errCode)s", + "Mute": "Silenzia", + "Notifications": "Notifiche", + "Operation failed": "Operazione fallita", + "powered by Matrix": "offerto da Matrix", + "Remove": "Rimuovi", + "Search": "Cerca", + "Settings": "Impostazioni", + "Start chat": "Inizia una chat", + "Room directory": "Lista delle stanze", + "unknown error code": "codice errore sconosciuto", + "Cancel": "Annulla", + "Close": "Chiudi", + "Create new room": "Crea una nuova stanza", + "Custom Server Options": "Opzioni server personalizzate", + "Dismiss": "Chiudi", + "Error": "Errore", + "Favourite": "Preferito", + "OK": "OK", + "Failed to change password. Is your password correct?": "Modifica password fallita. La tua password è corretta?", + "Continue": "Continua", + "%(targetName)s accepted an invitation.": "%(targetName)s ha accettato un invito.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ha accettato l'invito per %(displayName)s.", + "Account": "Account", + "Access Token:": "Token di Accesso:", + "Add": "Aggiungi", + "Add a topic": "Aggiungi un argomento", + "Add email address": "Aggiungi indirizzo email", + "Add phone number": "Aggiungi numero di telefono", + "Admin": "Amministratore", + "Admin Tools": "Strumenti di amministrazione", + "VoIP": "VoIP", + "No Microphones detected": "Nessun Microfono rilevato", + "No Webcams detected": "Nessuna Webcam rilevata", + "You may need to manually permit Riot to access your microphone/webcam": "Potresti dover permettere manualmente a Riot di accedere al tuo microfono/webcam", + "Default Device": "Dispositivo Predefinito", + "Microphone": "Microfono", + "Camera": "Videocamera", + "Advanced": "Avanzate", + "Algorithm": "Algoritmo", + "Hide removed messages": "Nascondi messaggi rimossi", + "Always show message timestamps": "Mostra sempre il timestamps dei messaggi", + "Authentication": "Autenticazione", + "Alias (optional)": "Alias (opzionale)", + "Add a widget": "Aggiungi un widget", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Un messaggio di testo è stato inviato a +%(msisdn)s. Inserisci il codice di verifica che contiene", + "Edit": "Modifica", + "This email address is already in use": "Questo indirizzo e-mail è già in uso", + "This phone number is already in use": "Questo numero di telefono è già in uso", + "Failed to verify email address: make sure you clicked the link in the email": "Impossibile verificare l'indirizzo e-mail: assicurati di aver cliccato il link nell'e-mail", + "VoIP is unsupported": "VoIP non supportato", + "You cannot place VoIP calls in this browser.": "Non puoi effettuare chiamate VoIP con questo browser.", + "You cannot place a call with yourself.": "Non puoi chiamare te stesso.", + "Conference calls are not supported in this client": "Le chiamate di gruppo non sono supportate da questo client", + "Conference calls are not supported in encrypted rooms": "Le chiamate di gruppo non sono supportate nelle stanze criptate", + "Warning!": "Attenzione!", + "Sun": "Dom", + "Mon": "Lun", + "Tue": "Mar", + "Wed": "Mer", + "Thu": "Gio", + "Fri": "Ven", + "Sat": "Sab", + "Jan": "Gen", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "Mag", + "Jun": "Giu", + "Jul": "Lug", + "Aug": "Ago", + "Sep": "Set", + "Oct": "Ott", + "Nov": "Nov", + "Dec": "Dic", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Register": "Registrati", + "Rooms": "Stanze", + "The remote side failed to pick up": "Il destinatario non ha risposto", + "Unable to capture screen": "Impossibile acquisire lo schermo", + "Call": "Chiama", + "Answer": "Rispondi", + "Invite to Community": "Invita alla community", + "Unpin Message": "Sblocca messaggio", + "Add rooms to this community": "Aggiungi stanze a questa community", + "Warning": "Attenzione", + "Unnamed room": "Stanza senza nome", + "Online": "Online", + "The platform you're on": "La piattaforma in cui sei", + "The version of Riot.im": "La versione di Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Se hai eseguito l'accesso o meno (non registriamo il tuo nome utente)", + "Your language of choice": "La lingua scelta", + "Which officially provided instance you are using, if any": "Quale istanza ufficialmente fornita stai usando, se ne usi una", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Se stai usando o meno la modalità richtext dell'editor con testo arricchito", + "Your homeserver's URL": "L'URL del tuo server home", + "Your identity server's URL": "L'URL del tuo server identità", + "Analytics": "Statistiche", + "The information being sent to us to help make Riot.im better includes:": "Le informazioni inviate per aiutarci a migliorare Riot.im includono:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Se questa pagina include informazioni identificabili, come una stanza, utente o ID di gruppo, questi dati sono rimossi prima che vengano inviati al server.", + "Call Failed": "Chiamata fallita", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Ci sono dispositivi sconosciuti in questa stanza: se procedi senza verificarli, qualcuno avrà la possibilità di intercettare la tua chiamata.", + "Review Devices": "Revisiona i dispositivi", + "Call Anyway": "Chiama comunque", + "Answer Anyway": "Rispondi comunque", + "Call Timeout": "Scadenza chiamata", + "Existing Call": "Chiamata esistente", + "You are already in a call.": "Partecipi già ad una chiamata.", + "Conference calling is in development and may not be reliable.": "Le chiamate di gruppo sono in sviluppo e potrebbero essere inaffidabili.", + "Failed to set up conference call": "Impostazione della chiamata di gruppo fallita", + "Conference call failed.": "Chiamata di gruppo fallita.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s ha richiesto una conferenza VoIP.", + "VoIP conference started.": "Conferenza VoIP iniziata.", + "VoIP conference finished.": "Conferenza VoIP terminata.", + "Ongoing conference call%(supportedText)s.": "Chiamata di gruppo in corso%(supportedText)s.", + "The file '%(fileName)s' failed to upload": "Invio del file '%(fileName)s' fallito", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Il file '%(fileName)s' supera il limite di dimensione inviabile da questo home server", + "Upload Failed": "Invio fallito", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "Who would you like to add to this community?": "Chi vuoi aggiungere a questa comunità?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Attenzione: qualsiasi persona aggiungi ad una comunità sarà visibile pubblicamente a chiunque conosca l'ID della comunità", + "Invite new community members": "Invita nuovi membri nella comunità", + "Name or matrix ID": "Nome o ID matrix", + "Which rooms would you like to add to this community?": "Quali stanze vuoi aggiungere a questa comunità?", + "Show these rooms to non-members on the community page and room list?": "Mostrare queste stanze ai non membri nella pagina comunità e all'elenco stanze?", + "Add rooms to the community": "Aggiungi stanze alla comunità", + "Room name or alias": "Nome stanza o alias", + "Add to community": "Aggiungi alla comunità", + "Failed to invite the following users to %(groupId)s:": "Invito ad unirsi in %(groupId)s fallito per i seguenti utenti:", + "Failed to invite users to community": "Invito degli utenti alla comunità fallito", + "Failed to invite users to %(groupId)s": "Invito degli utenti a %(groupId)s fallito", + "Failed to add the following rooms to %(groupId)s:": "Aggiunta a %(groupId)s fallita per le seguenti stanze:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot non ha l'autorizzazione ad inviarti notifiche - controlla le impostazioni del browser", + "Riot was not given permission to send notifications - please try again": "Non è stata data a Riot l'autorizzazione ad inviare notifiche - riprova", + "Unable to enable Notifications": "Impossibile attivare le notifiche", + "This email address was not found": "Indirizzo email non trovato", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Il tuo indirizzo email sembra non essere associato ad un ID Matrix su questo homeserver.", + "Default": "Predefinito", + "Restricted": "Limitato", + "Moderator": "Moderatore", + "Start a chat": "Inizia una conversazione", + "Who would you like to communicate with?": "Con chi vorresti comunicare?", + "Email, name or matrix ID": "Email, nome o ID matrix", + "Start Chat": "Inizia conversazione", + "Invite new room members": "Invita nuovi membri nella stanza", + "Who would you like to add to this room?": "Chi vorresti aggiungere a questa stanza?", + "Send Invites": "Manda inviti", + "Failed to invite user": "Invito dell'utente fallito", + "Failed to invite": "Invito fallito", + "Failed to invite the following users to the %(roomName)s room:": "Invito nella stanza %(roomName)s fallito per i seguenti utenti:", + "You need to be logged in.": "Devi aver eseguito l'accesso.", + "You need to be able to invite users to do that.": "Devi potere invitare utenti per completare l'azione.", + "Unable to create widget.": "Impossibile creare il widget.", + "Failed to send request.": "Invio della richiesta fallito.", + "This room is not recognised.": "Stanza non riconosciuta.", + "You are not in this room.": "Non sei in questa stanza.", + "You do not have permission to do that in this room.": "Non hai l'autorizzazione per farlo in questa stanza.", + "Missing room_id in request": "Manca l'id_stanza nella richiesta", + "Room %(roomId)s not visible": "Stanza %(roomId)s non visibile", + "Missing user_id in request": "Manca l'id_utente nella richiesta", + "Usage": "Utilizzo", + "/ddg is not a command": "/ddg non è un comando", + "To use it, just wait for autocomplete results to load and tab through them.": "Per usarlo, attendi l'autocompletamento dei risultati e selezionali con tab.", + "Unrecognised room alias:": "Alias della stanza non riconosciuto:", + "Ignored user": "Utente ignorato", + "You are now ignoring %(userId)s": "Ora stai ignorando %(userId)s", + "Unignored user": "Utente non più ignorato", + "You are no longer ignoring %(userId)s": "Non stai più ignorando %(userId)s", + "Unknown (user, device) pair:": "Coppia (utente, dispositivo) sconosciuta:", + "Device already verified!": "Dispositivo già verificato!", + "WARNING: Device already verified, but keys do NOT MATCH!": "ATTENZIONE: dispositivo già verificato, ma le chiavi NON CORRISPONDONO!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ATTENZIONE: VERIFICA CHIAVI FALLITA! La chiave per %(userId)s e il dispositivo %(deviceId)s è \"%(fprint)s\" , la quale non corrisponde con la chiave fornita \"%(fingerprint)s\". Potrebbe significare che le tue comunicazioni vengono intercettate!", + "Verified key": "Chiave verificata", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "La chiave che hai fornito corrisponde alla chiave che hai ricevuto dal dispositivo %(deviceId)s di %(userId)s . Dispositivo segnato come verificato.", + "Unrecognised command:": "Comando non riconosciuto:", + "Reason": "Motivo", + "%(senderName)s invited %(targetName)s.": "%(senderName)s ha invitato %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s ha bandito %(targetName)s.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s ha modificato il proprio nome in %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s ha impostato il proprio nome a %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ha rimosso il proprio nome visibile (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s ha rimosso la propria immagine del profilo.", + "%(senderName)s changed their profile picture.": "%(senderName)s ha cambiato la propria immagine del profilo.", + "%(senderName)s set a profile picture.": "%(senderName)s ha impostato un'immagine del profilo.", + "%(targetName)s joined the room.": "%(targetName)s è entrato nella stanza.", + "%(targetName)s rejected the invitation.": "%(targetName)s ha rifiutato l'invito.", + "%(targetName)s left the room.": "%(targetName)s è uscito dalla stanza.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s ha rimosso il ban a %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s ha cacciato %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s ha revocato l'invito per %(targetName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s ha modificato l'argomento in \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ha rimosso il nome della stanza.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s ha modificato il nome della stanza in %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s ha inviato un'immagine.", + "Someone": "Qualcuno", + "(not supported by this browser)": "(non supportato da questo browser)", + "%(senderName)s answered the call.": "%(senderName)s ha risposto alla chiamata.", + "(could not connect media)": "(connessione del media non riuscita)", + "(no answer)": "(nessuna risposta)", + "(unknown failure: %(reason)s)": "(errore sconosciuto: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s ha terminato la chiamata.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s ha avviato una chiamata %(callType)s .", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s ha mandato un invito a %(targetDisplayName)s per unirsi alla stanza.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s ha reso visibile la futura cronologia della stanza a tutti i membri della stanza, dal momento del loro invito.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s ha reso visibile la futura cronologia della stanza a tutti i membri della stanza, dal momento in cui sono entrati.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s ha reso visibile la futura cronologia della stanza a tutti i membri della stanza.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s ha reso visibile la futura cronologia della stanza a tutti.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s ha reso visibile la futura cronologia della stanza a (%(visibility)s) sconosciuto.", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ha attivato la crittografia end-to-end (algoritmo %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s da %(fromPowerLevel)s a %(toPowerLevel)s", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s ha cambiato i messaggi ancorati della stanza.", + "%(widgetName)s widget modified by %(senderName)s": "Widget %(widgetName)s modificato da %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "Widget %(widgetName)s aggiunto da %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Widget %(widgetName)s rimosso da %(senderName)s", + "%(displayName)s is typing": "%(displayName)s sta scrivendo", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s e altri %(count)s stanno scrivendo", + "one": "%(names)s e un altro stanno scrivendo" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s stanno scrivendo", + "Failure to create room": "Creazione della stanza fallita", + "Server may be unavailable, overloaded, or you hit a bug.": "Il server potrebbe essere non disponibile, sovraccarico o hai trovato un errore.", + "Send anyway": "Invia comunque", + "Send": "Invia", + "Unnamed Room": "Stanza senza nome", + "Your browser does not support the required cryptography extensions": "Il tuo browser non supporta l'estensione crittografica richiesta", + "Not a valid Riot keyfile": "Non è una chiave di Riot valida", + "Authentication check failed: incorrect password?": "Controllo di autenticazione fallito: password sbagliata?", + "Failed to join room": "Accesso alla stanza fallito", + "Disable Emoji suggestions while typing": "Disattiva i suggerimenti delle emoji durante la digitazione", + "Use compact timeline layout": "Usa impaginazione cronologia compatta", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Nascondi i messaggi di entrata/uscita (inviti/kick/ban esclusi)", + "Hide avatar changes": "Nascondi le modifiche dell'avatar", + "Hide display name changes": "Nascondi le modifiche del nome", + "Hide read receipts": "Nascondi le ricevute di lettura", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostra gli orari nel formato 12 ore (es. 2:30pm)", + "Autoplay GIFs and videos": "Riproduzione automatica di GIF e video", + "Enable automatic language detection for syntax highlighting": "Attiva la rilevazione automatica della lingua per l'evidenziazione della sintassi", + "Hide avatars in user and room mentions": "Nascondi gli avatar nelle citazioni di utente e stanza", + "Disable big emoji in chat": "Disattiva gli emoji grandi in chat", + "Don't send typing notifications": "Non inviare notifiche di composizione", + "Automatically replace plain text Emoji": "Sostituisci automaticamente le emoji testuali", + "Disable Community Filter Panel": "Disattiva il pannello filtro comunità", + "Disable Peer-to-Peer for 1:1 calls": "Disattiva il peer-to-peer per chiamate 1:1", + "Never send encrypted messages to unverified devices from this device": "Non inviare mai da questo dispositivo messaggi cifrati a dispositivi non verificati", + "Never send encrypted messages to unverified devices in this room from this device": "Non inviare mai da questo dispositivo messaggi cifrati a dispositivi non verificati in questa stanza", + "Enable inline URL previews by default": "Attiva le anteprime URL in modo predefinito", + "Enable URL previews for this room (only affects you)": "Attiva le anteprime URL in questa stanza (riguarda solo te)", + "Enable URL previews by default for participants in this room": "Attiva le anteprime URL in modo predefinito per i partecipanti in questa stanza", + "Room Colour": "Colore della stanza", + "Active call (%(roomName)s)": "Chiamata attiva (%(roomName)s)", + "unknown caller": "Chiamante sconosciuto", + "Incoming voice call from %(name)s": "Chiamata vocale in arrivo da %(name)s", + "Incoming video call from %(name)s": "Chiamata video in arrivo da %(name)s", + "Incoming call from %(name)s": "Chiamata in arrivo da %(name)s", + "Decline": "Rifiuta", + "Accept": "Accetta", + "Incorrect verification code": "Codice di verifica sbagliato", + "Enter Code": "Inserisci il codice", + "Submit": "Invia", + "Phone": "Telefono", + "Failed to upload profile picture!": "Invio dell'immagine profilo fallito!", + "Upload new:": "Invia nuovo:", + "No display name": "Nessun nome visibile", + "New passwords don't match": "Le nuove password non corrispondono", + "Passwords can't be empty": "Le password non possono essere vuote", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "La modifica della password ripristinerà qualsiasi chiave di cifratura end-to-end su tutti i dispositivi, rendendo illeggibile la cronologia delle chat, a meno che prima non esporti le tue chiavi della stanza e poi le importi. In futuro ciò verrà migliorato.", + "Export E2E room keys": "Esporta chiavi E2E della stanza", + "Do you want to set an email address?": "Vuoi impostare un indirizzo email?", + "Current password": "Password attuale", + "Password": "Password", + "New Password": "Nuova password", + "Confirm password": "Conferma password", + "Change Password": "Modifica password", + "Your home server does not support device management.": "Il tuo home server non supporta la gestione dei dispositivi.", + "Unable to load device list": "Impossibile caricare l'elenco dei dispositivi", + "Delete %(count)s devices": { + "other": "Elimina %(count)s dispositivi", + "one": "Elimina dispositivo" + }, + "Device ID": "ID dispositivo", + "Device Name": "Nome dispositivo", + "Last seen": "Visto l'ultima volta", + "Select devices": "Seleziona i dispositivi", + "Failed to set display name": "Impostazione nome visibile fallita", + "Disable Notifications": "Disattiva le notifiche", + "Enable Notifications": "Attiva le notifiche", + "Cannot add any more widgets": "Impossibile aggiungere altri widget", + "The maximum permitted number of widgets have already been added to this room.": "Il numero massimo consentito di widget è già stato raggiunto in questa stanza.", + "Drop File Here": "Trascina file qui", + "Drop file here to upload": "Trascina un file qui per l'invio", + " (unsupported)": " (non supportato)", + "Join as voice or video.": "Unisciti come voce o video.", + "%(senderName)s sent an image": "%(senderName)s ha inviato un'immagine", + "%(senderName)s sent a video": "%(senderName)s ha inviato un video", + "%(senderName)s uploaded a file": "%(senderName)s ha inviato un file", + "Options": "Opzioni", + "Your key share request has been sent - please check your other devices for key share requests.": "Richiesta di condivisione chiavi inviata - controlla i tuoi altri dispositivi per richieste di condivisione chiavi.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Le richieste di condivisione chiavi sono inviate automaticamente ai tuoi altri dispositivi. Se hai rifiutato o annullato la richiesta negli altri dispositivi, clicca qui per richiederle nuovamente.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Se i tuoi altri dispositivi non hanno la chiave per questo messaggio non potrai decriptarli.", + "Key request sent.": "Richiesta chiave inviata.", + "Re-request encryption keys from your other devices.": "Chiedi di nuovo le chiavi di cifratura dai tuoi altri dispositivi.", + "Undecryptable": "Indecifrabile", + "Encrypted by a verified device": "Criptato da un dispositivo verificato", + "Encrypted by an unverified device": "Criptato da un dispositivo non verificato", + "Unencrypted message": "Messaggio non criptato", + "Please select the destination room for this message": "Seleziona la stanza di destinazione per questo messaggio", + "Blacklisted": "In lista nera", + "Verified": "Verificato", + "Unverified": "Non verificato", + "device id: ": "ID dispositivo: ", + "Disinvite": "Revoca invito", + "Kick": "Caccia fuori", + "Disinvite this user?": "Revocare l'invito a questo utente?", + "Kick this user?": "Cacciare questo utente?", + "Failed to kick": "Espulsione fallita", + "Unban": "Togli ban", + "Ban": "Bandisci", + "Unban this user?": "Togliere il ban a questo utente?", + "Ban this user?": "Bandire questo utente?", + "Failed to ban user": "Ban utente fallito", + "Failed to mute user": "Impossibile silenziare l'utente", + "Failed to toggle moderator status": "Cambio di stato moderatore fallito", + "Failed to change power level": "Cambio di livello poteri fallito", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Non potrai annullare questa modifica dato che ti stai declassando, se sei l'ultimo utente privilegiato nella stanza sarà impossibile ottenere di nuovo i privilegi.", + "Are you sure?": "Sei sicuro?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Non potrai annullare questa modifica dato che stai promuovendo l'utente al tuo stesso grado.", + "No devices with registered encryption keys": "Nessun dispositivo con chiavi di cifratura registrate", + "Devices": "Dispositivi", + "Unignore": "Non ignorare più", + "Ignore": "Ignora", + "Mention": "Cita", + "Invite": "Invita", + "User Options": "Opzioni utente", + "Direct chats": "Conversazioni dirette", + "Unmute": "Togli silenzio", + "Revoke Moderator": "Declassa moderatore", + "Make Moderator": "Promuovi a moderatore", + "Level:": "Livello:", + "and %(count)s others...": { + "other": "e altri %(count)s ...", + "one": "e un altro..." + }, + "Invited": "Invitato", + "Filter room members": "Filtra membri della stanza", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (poteri %(powerLevelNumber)s)", + "Attachment": "Allegato", + "Upload Files": "Invia file", + "Are you sure you want to upload the following files?": "Sei sicuro di volere inviare i seguenti file?", + "Encrypted room": "Stanza criptata", + "Unencrypted room": "Stanza non criptata", + "Hangup": "Riaggancia", + "Voice call": "Chiamata vocale", + "Video call": "Chiamata video", + "Upload file": "Invia file", + "Show Text Formatting Toolbar": "Mostra barra di formattazione testo", + "Send an encrypted reply…": "Invia una risposta criptata…", + "Send a reply (unencrypted)…": "Invia una risposta (non criptata)…", + "Send an encrypted message…": "Invia un messaggio criptato…", + "Send a message (unencrypted)…": "Invia un messaggio (non criptato)…", + "You do not have permission to post to this room": "Non hai il permesso di inviare in questa stanza", + "Turn Markdown on": "Attiva markdown", + "Turn Markdown off": "Disattiva markdown", + "Hide Text Formatting Toolbar": "Nascondi barra di formattazione testo", + "Server error": "Errore del server", + "Server unavailable, overloaded, or something else went wrong.": "Server non disponibile, sovraccarico o qualcos'altro è andato storto.", + "Command error": "Errore nel comando", + "bold": "grassetto", + "italic": "corsivo", + "strike": "barrato", + "underline": "sottolineato", + "code": "codice", + "quote": "citazione", + "bullet": "elenco", + "numbullet": "elenco numerato", + "Markdown is disabled": "Il markdown è disattivato", + "Markdown is enabled": "Il markdown è attivato", + "Jump to message": "Salta al messaggio", + "No pinned messages.": "Nessun messaggio ancorato.", + "Loading...": "Caricamento...", + "Pinned Messages": "Messaggi ancorati", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)so", + "%(duration)sd": "%(duration)sg", + "Online for %(duration)s": "Online per %(duration)s", + "Idle for %(duration)s": "Inattivo per %(duration)s", + "Offline for %(duration)s": "Offline per %(duration)s", + "Unknown for %(duration)s": "Sconosciuto per %(duration)s", + "Idle": "Inattivo", + "Offline": "Offline", + "Unknown": "Sconosciuto", + "Seen by %(userName)s at %(dateTime)s": "Visto da %(userName)s alle %(dateTime)s", + "No rooms to show": "Nessuna stanza da mostrare", + "World readable": "Leggibile da tutti", + "Guests can join": "Gli ospiti possono entrare", + "Failed to set avatar.": "Impostazione avatar fallita.", + "Save": "Salva", + "(~%(count)s results)": { + "other": "(~%(count)s risultati)", + "one": "(~%(count)s risultato)" + }, + "Join Room": "Entra nella stanza", + "Upload avatar": "Invia avatar", + "Remove avatar": "Rimuovi avatar", + "Forget room": "Dimentica la stanza", + "Show panel": "Mostra il pannello", + "Drop here to favourite": "Trascina qui per preferire", + "Drop here to tag direct chat": "Trascina qui per taggare chat diretta", + "Drop here to restore": "Trascina qui per ripristinare", + "Drop here to demote": "Trascina qui per declassare", + "Drop here to tag %(section)s": "Trascina qui per taggare %(section)s", + "Press to start a chat with someone": "Premi per iniziare una conversazione con qualcuno", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Non sei ancora in alcuna stanza! Premi per crearne una o per sfogliare l'elenco", + "Community Invites": "Inviti della comunità", + "Invites": "Inviti", + "Favourites": "Preferiti", + "People": "Persone", + "Low priority": "Bassa priorità", + "Historical": "Cronologia", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Impossibile verificare che l'indirizzo al quale questo invito è stato inviato corrisponda a uno associato al tuo account.", + "Power level must be positive integer.": "Il livello di poteri deve essere un intero positivo.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ha modificato il livello di poteri di %(powerLevelDiffText)s.", + "Jump to read receipt": "Salta alla ricevuta di lettura", + "This invitation was sent to an email address which is not associated with this account:": "Questo invito è stato mandato a un indirizzo email non associato a questo account:", + "You may wish to login with a different account, or add this email to this account.": "Dovresti accedere con un account diverso, o aggiungere questa email all'account.", + "You have been invited to join this room by %(inviterName)s": "Sei stato invitato ad entrare in questa stanza da %(inviterName)s", + "Would you like to accept or decline this invitation?": "Vuoi accettare o rifiutare l'invito?", + "Reason: %(reasonText)s": "Motivo: %(reasonText)s", + "Rejoin": "Rientra", + "You have been kicked from %(roomName)s by %(userName)s.": "Sei stato cacciato fuori da %(roomName)s da %(userName)s.", + "You have been kicked from this room by %(userName)s.": "Sei stato cacciato fuori da questa stanza da %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "Sei stato bandito da %(roomName)s da %(userName)s.", + "You have been banned from this room by %(userName)s.": "Sei stato bandito da questa stanza da %(userName)s.", + "This room": "Questa stanza", + "%(roomName)s does not exist.": "%(roomName)s non esiste.", + "%(roomName)s is not accessible at this time.": "%(roomName)s non è al momento accessibile.", + "You are trying to access %(roomName)s.": "Stai provando ad entrare in %(roomName)s.", + "You are trying to access a room.": "Stai provando ad entrare in questa stanza.", + "Click here to join the discussion!": "Clicca qui per unirti alla discussione!", + "This is a preview of this room. Room interactions have been disabled": "Questa è un'anteprima della stanza. Le interazioni nella stanza sono state disattivate", + "To change the room's avatar, you must be a": "Per cambiare l'avatar della stanza, devi essere un", + "To change the room's name, you must be a": "Per modificare il nome della stanza, devi essere un", + "To change the room's main address, you must be a": "Per modificare l'indirizzo principale della stanza, devi essere un", + "To change the room's history visibility, you must be a": "Per cambiare la visibilità della cronologia della stanza, devi essere un", + "To change the permissions in the room, you must be a": "Per cambiare le autorizzazioni nella stanza, devi essere un", + "To change the topic, you must be a": "Per cambiare l'argomento, devi essere un", + "To modify widgets in the room, you must be a": "Per modificare i widget nella stanza, devi essere un", + "Failed to unban": "Rimozione ban fallita", + "Banned by %(displayName)s": "Bandito da %(displayName)s", + "Privacy warning": "Avviso sulla privacy", + "Changes to who can read history will only apply to future messages in this room": "Le modifiche a chi può leggere la cronologia sono applicate solo ai messaggi futuri della stanza", + "The visibility of existing history will be unchanged": "La visibilità della cronologia esistente rimarrà invariata", + "End-to-end encryption is in beta and may not be reliable": "La cifratura end-to-end è in beta e potrebbe essere inaffidabile", + "You should not yet trust it to secure data": "Non dovresti ancora fidartene per proteggere i dati", + "Devices will not yet be able to decrypt history from before they joined the room": "I dispositivi non potranno ancora decifrare la cronologia da prima che entrassero nella stanza", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Una volta attivata la cifratura per una stanza non può più essere disattivata (per ora)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "I messaggi criptati non saranno visibili nei client che non implementano ancora la cifratura", + "Enable encryption": "Attiva la cifratura", + "(warning: cannot be disabled again!)": "(attenzione: non può più essere disattivato!)", + "Encryption is enabled in this room": "La cifratura è attiva in questa stanza", + "Encryption is not enabled in this room": "La cifratura non è attiva in questa stanza", + "The default role for new room members is": "Il ruolo predefinito per i nuovi membri della stanza è", + "To send messages, you must be a": "Per inviare messaggi, devi essere un", + "To invite users into the room, you must be a": "Per invitare utenti nella stanza, devi essere un", + "To configure the room, you must be a": "Per configurare la stanza, devi essere un", + "To kick users, you must be a": "Per cacciare fuori utenti, devi essere un", + "To ban users, you must be a": "Per bandire utenti, devi essere un", + "To remove other users' messages, you must be a": "Per rimuovere messaggi di altri utenti, devi essere un", + "Privileged Users": "Utenti privilegiati", + "%(user)s is a %(userRole)s": "%(user)s è un %(userRole)s", + "No users have specific privileges in this room": "Nessun utente ha privilegi specifici in questa stanza", + "Banned users": "Utenti banditi", + "This room is not accessible by remote Matrix servers": "Questa stanza non è accessibile da server di Matrix remoti", + "Leave room": "Esci dalla stanza", + "Tagged as: ": "Etichettato come: ", + "To link to a room it must have an address.": "Per linkare una stanza deve avere un indirizzo.", + "Guests cannot join this room even if explicitly invited.": "Gli ospiti non possono entrare in questa stanza anche se esplicitamente invitati.", + "Click here to fix": "Clicca qui per correggere", + "To send events of type , you must be a": "Per inviare eventi di tipo , devi essere un", + "Who can access this room?": "Chi può accedere a questa stanza?", + "Only people who have been invited": "Solo chi è stato invitato", + "Anyone who knows the room's link, apart from guests": "Chiunque conosca il link della stanza, eccetto gli ospiti", + "Anyone who knows the room's link, including guests": "Chiunque conosca il link della stanza, inclusi gli ospiti", + "Publish this room to the public in %(domain)s's room directory?": "Pubblicare questa stanza nell'elenco pubblico delle stanze in %(domain)s ?", + "Who can read history?": "Chi può leggere la cronologia?", + "Anyone": "Chiunque", + "Members only (since the point in time of selecting this option)": "Solo i membri (dal momento in cui selezioni questa opzione)", + "Members only (since they were invited)": "Solo i membri (da quando sono stati invitati)", + "Members only (since they joined)": "Solo i membri (da quando sono entrati)", + "Permissions": "Autorizzazioni", + "This room's internal ID is": "L'ID interno di questa stanza è", + "Scroll to unread messages": "Scorri ai messaggi non letti", + "Jump to first unread message.": "Salta al primo messaggio non letto.", + "Invalid alias format": "Formato alias non valido", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' non è un formato valido per un alias", + "Invalid address format": "Formato indirizzo non valido", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' non è un formato valido per un indirizzo", + "not specified": "non specificato", + "not set": "non impostato", + "Remote addresses for this room:": "Indirizzi remoti di questa stanza:", + "Addresses": "Indirizzi", + "The main address for this room is": "L'indirizzo principale di questa stanza è", + "Local addresses for this room:": "Indirizzi locali di questa stanza:", + "This room has no local addresses": "Questa stanza non ha indirizzi locali", + "New address (e.g. #foo:%(localDomain)s)": "Nuovo indirizzo (es. #foo:%(localDomain)s)", + "Invalid community ID": "ID comunità non valido", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' non è un ID comunità valido", + "Showing flair for these communities:": "Predisposizione della stanza per queste comunità:", + "Flair": "Predisposizione", + "This room is not showing flair for any communities": "Questa stanza non mostra predisposizione per alcuna comunità", + "New community ID (e.g. +foo:%(localDomain)s)": "Nuovo ID comunità (es. +foo:%(localDomain)s)", + "You have enabled URL previews by default.": "Hai attivato le anteprime degli URL in modo predefinito.", + "You have disabled URL previews by default.": "Hai disattivato le anteprime degli URL in modo predefinito.", + "URL previews are enabled by default for participants in this room.": "Le anteprime degli URL sono attive in modo predefinito per i partecipanti di questa stanza.", + "URL previews are disabled by default for participants in this room.": "Le anteprime degli URL sono inattive in modo predefinito per i partecipanti di questa stanza.", + "URL Previews": "Anteprime URL", + "Error decrypting audio": "Errore decifratura audio", + "Error decrypting attachment": "Errore decifratura allegato", + "Decrypt %(text)s": "Decifra %(text)s", + "Download %(text)s": "Scarica %(text)s", + "Invalid file%(extra)s": "File non valido %(extra)s", + "Error decrypting image": "Errore decifratura immagine", + "Error decrypting video": "Errore decifratura video", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s ha cambiato l'avatar per %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s ha rimosso l'avatar della stanza.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s ha cambiato l'avatar della stanza a ", + "Copied!": "Copiato!", + "Failed to copy": "Copia fallita", + "Add an Integration": "Aggiungi un'integrazione", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Stai per essere portato in un sito di terze parti per autenticare il tuo account da usare con %(integrationsUrl)s. Vuoi continuare?", + "Removed or unknown message type": "Tipo messaggio rimosso o sconosciuto", + "Message removed by %(userId)s": "Messaggio rimosso da %(userId)s", + "Message removed": "Messaggio rimosso", + "Robot check is currently unavailable on desktop - please use a web browser": "Il controllo robot non è al momento disponibile per desktop - usa un browser web", + "This Home Server would like to make sure you are not a robot": "Questo home server vorrebbe assicurarsi che non sei un robot", + "Sign in with CAS": "Accedi con CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Puoi usare l'opzione server personalizzato per accedere ai server Matrix specificando un URL di home server diverso.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Ciò ti consente di usare questa app con un account di Matrix esistente su un home server diverso.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Puoi anche specificare un server di identità diverso ma ciò solitamente impedisce l'interazione con utenti basandosi sull'indirizzo email.", + "To continue, please enter your password.": "Per continuare, inserisci la tua password.", + "Password:": "Password:", + "An email has been sent to %(emailAddress)s": "È stata inviata un'email a %(emailAddress)s", + "Please check your email to continue registration.": "Controlla la tua email per continuare la registrazione.", + "Token incorrect": "Token errato", + "A text message has been sent to %(msisdn)s": "È stato inviato un messaggio di testo a %(msisdn)s", + "Please enter the code it contains:": "Inserisci il codice contenuto:", + "Start authentication": "Inizia l'autenticazione", + "Username on %(hs)s": "Nome utente su %(hs)s", + "User name": "Nome utente", + "Mobile phone number": "Numero di cellulare", + "Forgot your password?": "Hai dimenticato la password?", + "%(serverName)s Matrix ID": "%(serverName)s ID Matrix", + "Sign in with": "Accedi con", + "Email address": "Indirizzo email", + "Sign in": "Accedi", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Se non specifichi un indirizzo email, non potrai reimpostare la password. Sei sicuro?", + "Email address (optional)": "Indirizzo email (facoltativo)", + "You are registering with %(SelectedTeamName)s": "Ti stai registrando con %(SelectedTeamName)s", + "Mobile phone number (optional)": "Numero di cellulare (facoltativo)", + "Default server": "Server predefinito", + "Custom server": "Server personalizzato", + "Home server URL": "URL home server", + "Identity server URL": "URL server di identità", + "What does this mean?": "Cosa significa?", + "Remove from community": "Rimuovi dalla comunità", + "Disinvite this user from community?": "Revocare l'invito di questo utente alla comunità?", + "Remove this user from community?": "Rimuovere questo utente dalla comunità?", + "Code": "Codice", + "Failed to withdraw invitation": "Revoca dell'invito fallita", + "Failed to remove user from community": "Rimozione utente dalla comunità fallita", + "Filter community members": "Filtra i membri della comunità", + "Flair will appear if enabled in room settings": "La predisposizione apparirà se attiva nelle impostazioni della stanza", + "Flair will not appear": "La predisposizione non apparirà", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Sei sicuro di volere rimuovere '%(roomName)s' da %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "La rimozione di una stanza dalla comunità la toglierà anche dalla pagina della comunità.", + "Failed to remove room from community": "Rimozione della stanza dalla comunità fallita", + "Failed to remove '%(roomName)s' from %(groupId)s": "Rimozione di '%(roomName)s' da %(groupId)s fallita", + "Something went wrong!": "Qualcosa è andato storto!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Impossibile aggiornare la visibilità di '%(roomName)s' in %(groupId)s .", + "Visibility in Room List": "Visibilità nell'elenco stanze", + "Visible to everyone": "Visibile a chiunque", + "Only visible to community members": "Visibile solo ai membri della comunità", + "Filter community rooms": "Filtra stanze della comunità", + "Something went wrong when trying to get your communities.": "Qualcosa è andato storto cercando di ricevere le tue comunità.", + "Display your community flair in rooms configured to show it.": "Mostra la tua predisposizione di comunità nelle stanze configurate per mostrarla.", + "You're not currently a member of any communities.": "Attualmente non sei membro di alcuna comunità.", + "Unknown Address": "Indirizzo sconosciuto", + "NOTE: Apps are not end-to-end encrypted": "NOTA: le app non sono criptate end-to-end", + "Do you want to load widget from URL:": "Vuoi caricare il widget dall'URL:", + "Allow": "Permetti", + "Delete Widget": "Elimina widget", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "L'eliminazione di un widget lo rimuove per tutti gli utenti della stanza. Sei sicuro di eliminare il widget?", + "Delete widget": "Elimina widget", + "Revoke widget access": "Revoca l'accesso al widget", + "Minimize apps": "Riduci le app", + "Unblacklist": "Togli dalla lista nera", + "Blacklist": "Lista nera", + "Unverify": "Togli la verifica", + "Verify...": "Verifica...", + "No results": "Nessun risultato", + "Delete": "Elimina", + "Communities": "Comunità", + "Home": "Inizio", + "Integrations Error": "Errore di integrazioni", + "Could not connect to the integration server": "Impossibile connettere al server di integrazione", + "Manage Integrations": "Gestisci integrazioni", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)ssono entrati %(count)s volte", + "one": "%(severalUsers)ssono entrati" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)sè entrato %(count)s volte", + "one": "%(oneUser)sè entrato" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)ssono usciti %(count)s volte", + "one": "%(severalUsers)ssono usciti" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)sè uscito %(count)s volte", + "one": "%(oneUser)sè uscito" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)ssono entrati e usciti %(count)s volte", + "one": "%(severalUsers)ssono entrati e usciti" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)sè entrato e uscito %(count)s volte", + "one": "%(oneUser)sè entrato e uscito" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)ssono usciti e rientrati %(count)s volte", + "one": "%(severalUsers)ssono usciti e rientrati" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)sè uscito e rientrato %(count)s volte", + "one": "%(oneUser)sè uscito e rientrato" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)shanno rifiutato i loro inviti %(count)s volte", + "one": "%(severalUsers)shanno rifiutato i loro inviti" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)sha rifiutato il suo invito %(count)s volte", + "one": "%(oneUser)sha rifiutato il suo invito" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)shanno visto revocato il loro invito %(count)s volte", + "one": "%(severalUsers)shanno visto revocato il loro invito" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)sha visto revocato il suo invito %(count)s volte", + "one": "%(oneUser)sha visto revocato il suo invito" + }, + "were invited %(count)s times": { + "other": "sono stati invitati %(count)s volte", + "one": "sono stati invitati" + }, + "was invited %(count)s times": { + "other": "è stato invitato %(count)s volte", + "one": "è stato invitato" + }, + "were banned %(count)s times": { + "other": "sono stati banditi %(count)s volte", + "one": "sono stati banditi" + }, + "was banned %(count)s times": { + "other": "è stato bandito %(count)s volte", + "one": "è stato bandito" + }, + "were unbanned %(count)s times": { + "other": "sono stati riammessi %(count)s volte", + "one": "sono stati riammessi" + }, + "was unbanned %(count)s times": { + "other": "è stato riammesso %(count)s volte", + "one": "è stato riammesso" + }, + "were kicked %(count)s times": { + "other": "sono stati cacciati via %(count)s volte", + "one": "sono stati cacciati via" + }, + "was kicked %(count)s times": { + "other": "è stato cacciato via %(count)s volte", + "one": "è stato cacciato via" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)shanno modificato il loro nome %(count)s volte", + "one": "%(severalUsers)shanno modificato il loro nome" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)sha modificato il suo nome %(count)s volte", + "one": "%(oneUser)sha modificato il suo nome" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)shanno cambiato il loro avatar %(count)s volte", + "one": "%(severalUsers)shanno cambiato il loro avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)sha cambiato il suo avatar %(count)s volte", + "one": "%(oneUser)sha cambiato il suo avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s e altri %(count)s", + "one": "%(items)s e un altro" + }, + "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", + "collapse": "richiudi", + "expand": "espandi", + "Custom of %(powerLevel)s": "%(powerLevel)s personalizzato", + "Custom level": "Livello personalizzato", + "In reply to ": "In risposta a ", + "And %(count)s more...": { + "other": "E altri %(count)s ..." + }, + "ex. @bob:example.com": "es. @mario:esempio.it", + "Add User": "Aggiungi utente", + "Matrix ID": "ID Matrix", + "Matrix Room ID": "ID stanza Matrix", + "email address": "indirizzo email", + "Try using one of the following valid address types: %(validTypesList)s.": "Prova ad usare uno dei seguenti tipi di indirizzo validi: %(validTypesList)s.", + "You have entered an invalid address.": "Hai inserito un indirizzo non valido.", + "Create a new chat or reuse an existing one": "Crea una nuova conversazione o riutilizzane una esistente", + "Start new chat": "Inizia una nuova conversazione", + "You already have existing direct chats with this user:": "Hai già conversazioni dirette con questo utente:", + "Start chatting": "Inizia a chattare", + "Click on the button below to start chatting!": "Clicca sul pulsante sotto per iniziare a chattare!", + "Start Chatting": "Inizia a chattare", + "Confirm Removal": "Conferma la rimozione", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Sei sicuro di volere rimuovere (eliminare) questo evento? Nota che se elimini il nome di una stanza o la modifica di un argomento, potrebbe annullare la modifica.", + "Community IDs cannot be empty.": "Gli ID della comunità non possono essere vuoti.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Gli ID della comunità devono contenere solo caratteri a-z, 0-9, or '=_-./'", + "Something went wrong whilst creating your community": "Qualcosa è andato storto nella creazione della tua comunità", + "Create Community": "Crea una comunità", + "Community Name": "Nome della comunità", + "Example": "Esempio", + "Community ID": "ID comunità", + "example": "esempio", + "Create": "Crea", + "Create Room": "Crea una stanza", + "Room name (optional)": "Nome della stanza (facoltativo)", + "Advanced options": "Opzioni avanzate", + "Block users on other matrix homeservers from joining this room": "Vieta agli utenti degli altri homeserver di matrix di entrare in questa stanza", + "This setting cannot be changed later!": "Questa impostazione non potrà più essere cambiata!", + "Unknown error": "Errore sconosciuto", + "Incorrect password": "Password sbagliata", + "Deactivate Account": "Disattiva l'account", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Per verificare se questo dispositivo è fidato, contatta il suo proprietario usando altri metodi (es. di persona o telefonando) e chiedigli se la chiave che vede nelle sue impostazioni utente per questo dispositivo coincide con la chiave sotto:", + "Device name": "Nome del dispositivo", + "Device key": "Chiave del dispositivo", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Se coincide, premi il pulsante di verifica sotto. Se non coincide, allora qualcuno sta intercettando questo dispositivo e dovresti premere il pulsante di lista nera.", + "In future this verification process will be more sophisticated.": "In futuro questo processo di verifica sarà più sofisticato.", + "Verify device": "Verifica dispositivo", + "I verify that the keys match": "Confermo che le chiavi coincidono", + "An error has occurred.": "Si è verificato un errore.", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Hai aggiunto un nuovo dispositivo '%(displayName)s', che sta richiedendo chiavi di cifratura.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Il dispositivo non verificato '%(displayName)s' sta richiedendo chiavi di cifratura.", + "Start verification": "Inizia la verifica", + "Share without verifying": "Condividi senza verificare", + "Ignore request": "Ignora la richiesta", + "Loading device info...": "Caricamento info dispositivo...", + "Encryption key request": "Richiesta chiave di cifratura", + "Unable to restore session": "Impossibile ripristinare la sessione", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se hai usato precedentemente una versione più recente di Riot, la tua sessione potrebbe essere incompatibile con questa versione. Chiudi questa finestra e torna alla versione più recente.", + "Invalid Email Address": "Indirizzo email non valido", + "This doesn't appear to be a valid email address": "Questo non sembra essere un indirizzo email valido", + "Verification Pending": "In attesa di verifica", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Controlla la tua email e clicca il link contenuto. Una volta fatto, clicca continua.", + "Unable to add email address": "Impossibile aggiungere l'indirizzo email", + "Unable to verify email address.": "Impossibile verificare l'indirizzo email.", + "This will allow you to reset your password and receive notifications.": "Ciò ti permetterà di reimpostare la tua password e ricevere notifiche.", + "Skip": "Salta", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "I nomi utente devono contenere solo lettere, numeri, punti, trattini alti e bassi.", + "Username not available": "Nome utente non disponibile", + "Username invalid: %(errMessage)s": "Nome utente non valido: %(errMessage)s", + "An error occurred: %(error_string)s": "Si è verificato un errore: %(error_string)s", + "Username available": "Nome utente disponibile", + "To get started, please pick a username!": "Per iniziare, scegli un nome utente!", + "This will be your account name on the homeserver, or you can pick a different server.": "Questo sarà il tuo account nell'homeserver , o puoi scegliere un server diverso.", + "If you already have a Matrix account you can log in instead.": "Se invece hai già un account Matrix puoi accedere.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Attualmente stai bloccando i dispositivi non verificati; per inviare messaggi a questi dispositivi devi verificarli.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Ti consigliamo di eseguire il processo di verifica per ogni dispositivo per confermare che appartiene al legittimo proprietario, ma puoi reinviare il messaggio senza verifica se lo preferisci.", + "Room contains unknown devices": "La stanza contiene dispositivi sconosciuti", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contiene dispositivi che non hai mai visto prima.", + "Unknown devices": "Dispositivi sconosciuti", + "Private Chat": "Conversazione privata", + "Public Chat": "Chat pubblica", + "Custom": "Personalizzato", + "Name": "Nome", + "Topic": "Argomento", + "Make this room private": "Rendi privata questa stanza", + "Share message history with new users": "Condividi la cronologia dei messaggi con i nuovi utenti", + "Encrypt room": "Cripta la stanza", + "You must register to use this functionality": "Devi registrarti per usare questa funzionalità", + "You must join the room to see its files": "Devi entrare nella stanza per vederne i file", + "There are no visible files in this room": "Non ci sono file visibili in questa stanza", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML per la pagina della tua comunità

\n

\n Usa la descrizione estesa per introdurre i nuovi membri alla comunità, o distribuisci\n alcuni link importanti\n

\n

\n Puoi anche usare i tag 'img'\n

\n", + "Add rooms to the community summary": "Aggiungi stanze nel sommario della comunità", + "Which rooms would you like to add to this summary?": "Quali stanze vorresti aggiungere a questo sommario?", + "Add to summary": "Aggiungi al sommario", + "Failed to add the following rooms to the summary of %(groupId)s:": "Impossibile aggiungere le seguenti stanze al sommario di %(groupId)s:", + "Add a Room": "Aggiungi una stanza", + "Failed to remove the room from the summary of %(groupId)s": "Impossibile rimuovere la stanza dal sommario di %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Non è stato possibile rimuovere la stanza '%(roomName)s' dal sommario.", + "Add users to the community summary": "Aggiungi utenti al sommario della comunità", + "Who would you like to add to this summary?": "Chi vorresti aggiungere a questo sommario?", + "Failed to add the following users to the summary of %(groupId)s:": "Impossibile aggiungere i seguenti utenti al sommario di %(groupId)s:", + "Add a User": "Aggiungi un utente", + "Failed to remove a user from the summary of %(groupId)s": "Impossibile rimuovere un utente dal sommario di %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Non è stato possibile rimuovere l'utente '%(displayName)s' dal sommario.", + "Failed to upload image": "Invio dell'immagine fallito", + "Failed to update community": "Aggiornamento comunità fallito", + "Unable to accept invite": "Impossibile accettare l'invito", + "Unable to reject invite": "Impossibile rifiutare l'invito", + "Leave Community": "Esci dalla comunità", + "Leave %(groupName)s?": "Uscire da %(groupName)s?", + "Leave": "Esci", + "Community Settings": "Impostazioni comunità", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Queste stanze sono mostrate ai membri della comunità nella pagina della stessa. I membri della comunità possono entrare nelle stanze cliccandoci sopra.", + "Featured Rooms:": "Stanze in evidenza:", + "Featured Users:": "Utenti in evidenza:", + "%(inviter)s has invited you to join this community": "%(inviter)s ti ha invitato ad unirti a questa comunità", + "You are an administrator of this community": "Sei un amministratore di questa comunità", + "You are a member of this community": "Sei un membro di questa comunità", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "La tua comunità non ha una descrizione estesa, una pagina HTML da mostrare ai membri della comunità.
Clicca qui per aprire le impostazioni e scriverne una!", + "Long Description (HTML)": "Descrizione estesa (HTML)", + "Description": "Descrizione", + "Community %(groupId)s not found": "Comunità %(groupId)s non trovata", + "This Home server does not support communities": "Questo Home server non supporta le comunità", + "Failed to load %(groupId)s": "Caricamento %(groupId)s fallito", + "Reject invitation": "Rifiuta l'invito", + "Are you sure you want to reject the invitation?": "Sei sicuro di volere rifiutare l'invito?", + "Failed to reject invitation": "Rifiuto dell'invito fallito", + "This room is not public. You will not be able to rejoin without an invite.": "Questa stanza non è pubblica. Non potrai rientrare senza un invito.", + "Are you sure you want to leave the room '%(roomName)s'?": "Sei sicuro di volere uscire dalla stanza '%(roomName)s'?", + "Failed to leave room": "Uscita dalla stanza fallita", + "Signed Out": "Disconnesso", + "For security, this session has been signed out. Please sign in again.": "Per sicurezza questa sessione è stata disconnessa. Accedi di nuovo.", + "Old cryptography data detected": "Rilevati dati di cifratura obsoleti", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Sono stati rilevati dati da una vecchia versione di Riot. Ciò avrà causato malfunzionamenti della crittografia end-to-end nella vecchia versione. I messaggi cifrati end-to-end scambiati di recente usando la vecchia versione potrebbero essere indecifrabili in questa versione. Anche i messaggi scambiati con questa versione possono fallire. Se riscontri problemi, disconnettiti e riaccedi. Per conservare la cronologia, esporta e re-importa le tue chiavi.", + "Logout": "Disconnetti", + "Your Communities": "Le tue comunità", + "Did you know: you can use communities to filter your Riot.im experience!": "Sapevi che: puoi usare le comunità per filtrare la tua esperienza su Riot.im!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Per impostare un filtro, trascina l'avatar di una comunità sul pannello dei filtri a sinistra dello schermo. Puoi cliccare un avatar nel pannello dei filtri quando vuoi per vedere solo le stanze e le persone associate a quella comunità.", + "Error whilst fetching joined communities": "Errore nella rilevazione delle comunità a cui ti sei unito", + "Create a new community": "Crea una nuova comunità", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crea una comunità per raggruppare utenti e stanze! Crea una pagina iniziale personalizzata per stabilire il tuo spazio nell'universo di Matrix.", + "You have no visible notifications": "Non hai alcuna notifica visibile", + "Scroll to bottom of page": "Scorri in fondo alla pagina", + "Message not sent due to unknown devices being present": "Messaggio non inviato data la presenza di dispositivi sconosciuti", + "Show devices, send anyway or cancel.": "Mostra dispositivi, invia comunque o annulla.", + "%(count)s of your messages have not been sent.": { + "other": "Alcuni dei tuoi messaggi non sono stati inviati.", + "one": "Il tuo messaggio non è stato inviato." + }, + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Reinvia tutti o annulla tutti adesso. Puoi anche selezionare i singoli messaggi da reinviare o annullare.", + "one": "Reinvia messaggio o annulla messaggio adesso." + }, + "Connectivity to the server has been lost.": "Connessione al server persa.", + "Sent messages will be stored until your connection has returned.": "I messaggi inviati saranno salvati fino al ritorno della connessione.", + "%(count)s new messages": { + "other": "%(count)s messaggi nuovi", + "one": "%(count)s messaggio nuovo" + }, + "Active call": "Chiamata attiva", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Non c'è nessun altro qui! Vorresti invitare altri o fermare l'avviso sulla stanza vuota?", + "You seem to be uploading files, are you sure you want to quit?": "Sembra che tu stia inviando file, sei sicuro di volere uscire?", + "You seem to be in a call, are you sure you want to quit?": "Sembra che tu sia in una chiamata, sei sicuro di volere uscire?", + "Failed to upload file": "Invio del file fallito", + "Server may be unavailable, overloaded, or the file too big": "Il server potrebbe essere non disponibile, sovraccarico o il file è troppo grande", + "Search failed": "Ricerca fallita", + "Server may be unavailable, overloaded, or search timed out :(": "Il server potrebbe essere non disponibile, sovraccarico o la ricerca è scaduta :(", + "No more results": "Nessun altro risultato", + "Unknown room %(roomId)s": "Stanza %(roomId)s sconosciuta", + "Room": "Stanza", + "Failed to save settings": "Salvataggio impostazioni fallito", + "Failed to reject invite": "Rifiuto dell'invito fallito", + "Fill screen": "Riempi schermo", + "Click to unmute video": "Clicca per attivare l'audio del video", + "Click to mute video": "Clicca per silenziare il video", + "Click to unmute audio": "Clicca per attivare l'audio", + "Click to mute audio": "Clicca per silenziare l'audio", + "Clear filter": "Annulla filtro", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Si è tentato di caricare un punto specifico nella cronologia della stanza, ma non hai l'autorizzazione per vedere il messaggio in questione.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Si è tentato di caricare un punto specifico nella cronologia della stanza, ma non si è trovato.", + "Failed to load timeline position": "Caricamento posizione cronologica fallito", + "Uploading %(filename)s and %(count)s others": { + "other": "Invio di %(filename)s e altri %(count)s", + "zero": "Invio di %(filename)s", + "one": "Invio di %(filename)s e altri %(count)s" + }, + "Light theme": "Tema chiaro", + "Dark theme": "Tema scuro", + "Status.im theme": "Tema Status.im", + "Can't load user settings": "Impossibile caricare le impostazioni utente", + "Server may be unavailable or overloaded": "Il server potrebbe non essere disponibile o sovraccarico", + "Sign out": "Disconnetti", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Per sicurezza la disconnessione eliminerà le chiavi di cifratura end-to-end da questo browser. Se desideri decifrare la tua cronologia di conversazione da sessioni future di Riot, esporta e conserva le tue chiavi della stanza.", + "Success": "Successo", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "La tua password è stata cambiata correttamente. Non riceverai notifiche push su altri dispositivi finchè non riesegui l'accesso su di essi", + "Remove Contact Information?": "Rimuovere le informazioni di contatto?", + "Remove %(threePid)s?": "Rimuovere %(threePid)s?", + "Unable to remove contact information": "Impossibile rimuovere le informazioni di contatto", + "Refer a friend to Riot:": "Informa un amico riguardo Riot:", + "Interface Language": "Lingua dell'interfaccia", + "User Interface": "Interfaccia utente", + "Autocomplete Delay (ms):": "Ritardo autocompletamento (ms):", + "": "", + "Import E2E room keys": "Importa chiavi E2E stanza", + "Cryptography": "Crittografia", + "Device ID:": "ID dispositivo:", + "Device key:": "Chiave dispositivo:", + "Ignored Users": "Utenti ignorati", + "Debug Logs Submission": "Invio dei log di debug", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Se hai segnalato un errore via Github, i log di debug possono aiutarci a identificare il problema. I log di debug contengono dati di utilizzo dell'applicazione inclusi il nome utente, gli ID o alias delle stanze o gruppi visitati e i nomi degli altri utenti. Non contengono messaggi.", + "Submit debug logs": "Invia log di debug", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot raccoglie statistiche anonime per permetterci di migliorare l'applicazione.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Diamo importanza alla privacy, perciò non raccogliamo dati personali o identificabili per le nostre statistiche.", + "Learn more about how we use analytics.": "Ulteriori informazioni su come usiamo le statistiche.", + "Labs": "Laboratori", + "These are experimental features that may break in unexpected ways": "Queste sono funzioni sperimentali che potrebbero fallire in modi imprevisti", + "Use with caution": "Usa con prudenza", + "Deactivate my account": "Disattiva il mio account", + "Clear Cache": "Svuota la cache", + "Clear Cache and Reload": "Svuota la cache e ricarica", + "Updates": "Aggiornamenti", + "Check for update": "Controlla aggiornamenti", + "Reject all %(invitedRooms)s invites": "Rifiuta tutti gli inviti da %(invitedRooms)s", + "Desktop specific": "Specifico per desktop", + "Start automatically after system login": "Esegui automaticamente all'avvio del sistema", + "No media permissions": "Nessuna autorizzazione per i media", + "Missing Media Permissions, click here to request.": "Autorizzazioni per i media mancanti, clicca qui per richiederle.", + "Email": "Email", + "Profile": "Profilo", + "Display name": "Nome visualizzato", + "To return to your account in future you need to set a password": "Per tornare al tuo account in futuro, devi impostare una password", + "Logged in as:": "Acceduto come:", + "click to reveal": "clicca per mostrare", + "Homeserver is": "L'homeserver è", + "Identity Server is": "Il server di identità è", + "matrix-react-sdk version:": "versione matrix-react-sdk:", + "riot-web version:": "versione riot-web:", + "olm version:": "versione olm:", + "Failed to send email": "Invio dell'email fallito", + "The email address linked to your account must be entered.": "Deve essere inserito l'indirizzo email collegato al tuo account.", + "A new password must be entered.": "Deve essere inserita una nuova password.", + "New passwords must match each other.": "Le nuove password devono coincidere.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Ripristinando la password si reimposteranno le chiavi di cifratura end-to-end su tutti i dispositivi, rendendo illeggibile la cronologia chat, a meno che prima non esporti le tue chiavi della stanza e le importi successivamente. In futuro questo verrà migliorato.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "È stata inviata un'email a %(emailAddress)s. Una volta seguito il link contenuto, clicca sotto.", + "I have verified my email address": "Ho verificato il mio indirizzo email", + "Your password has been reset": "La tua password è stata ripristinata", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Sei stato disconnesso da tutti i dispositivi e non riceverai più notifiche push. Per riattivare le notifiche, accedi di nuovo in ogni dispositivo", + "Return to login screen": "Torna alla schermata di accesso", + "To reset your password, enter the email address linked to your account": "Per ripristinare la password, inserisci l'indirizzo email collegato al tuo account", + "New password": "Nuova password", + "Confirm your new password": "Conferma la tua nuova password", + "Send Reset Email": "Invia email di ripristino", + "Create an account": "Crea un account", + "This Home Server does not support login using email address.": "Questo home server non supporta l'accesso tramite indirizzo email.", + "Incorrect username and/or password.": "Nome utente e/o password sbagliati.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Nota che stai accedendo nel server %(hs)s , non matrix.org.", + "Guest access is disabled on this Home Server.": "L'accesso ospiti è disattivato in questo home server.", + "The phone number entered looks invalid": "Il numero di telefono inserito sembra non valido", + "This homeserver doesn't offer any login flows which are supported by this client.": "Questo home server non offre alcuna procedura di accesso supportata da questo client.", + "Error: Problem communicating with the given homeserver.": "Errore: problema di comunicazione con l'homeserver dato.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Impossibile connettersi all'homeserver via HTTP quando c'è un URL HTTPS nella barra del tuo browser. Usa HTTPS o attiva gli script non sicuri.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Impossibile connettersi all'homeserver - controlla la tua connessione, assicurati che il certificato SSL dell'homeserver sia fidato e che un'estensione del browser non stia bloccando le richieste.", + "Sign in to get started": "Accedi per iniziare", + "Failed to fetch avatar URL": "Ricezione URL dell'avatar fallita", + "Set a display name:": "Imposta un nome visualizzato:", + "Upload an avatar:": "Invia un avatar:", + "This server does not support authentication with a phone number.": "Questo server non supporta l'autenticazione tramite numero di telefono.", + "Missing password.": "Password mancante.", + "Passwords don't match.": "Le password non coincidono.", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Visto da %(displayName)s (%(userName)s) alle %(dateTime)s", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Password troppo corta (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Questo non sembra un indirizzo email valido.", + "This doesn't look like a valid phone number.": "Questo non sembra un numero di telefono valido.", + "You need to enter a user name.": "Devi inserire un nome utente.", + "An unknown error occurred.": "Si è verificato un errore sconosciuto.", + "I already have an account": "Ho già un account", + "Displays action": "Mostra l'azione", + "Bans user with given id": "Bandisce l'utente per ID", + "Unbans user with given id": "Toglie il ban di un utente per ID", + "Define the power level of a user": "Definisce il livello di poteri di un utente", + "Deops user with given id": "Toglie privilegi all'utente per ID", + "Invites user with given id to current room": "Invita l'utente per ID alla stanza attuale", + "Joins room with given alias": "Entra nella stanza con l'alias definito", + "Sets the room topic": "Imposta l'argomento della stanza", + "Kicks user with given id": "Caccia un utente per ID", + "Changes your display nickname": "Modifica il tuo nick visualizzato", + "Searches DuckDuckGo for results": "Cerca risultati su DuckDuckGo", + "Changes colour scheme of current room": "Cambia lo schema di colori della stanza attuale", + "Verifies a user, device, and pubkey tuple": "Verifica una tupla di utente, dispositivo e chiave pubblica", + "Ignores a user, hiding their messages from you": "Ignora un utente, non mostrandoti i suoi messaggi", + "Stops ignoring a user, showing their messages going forward": "Smetti di ignorare un utente, mostrando i suoi messaggi successivi", + "Opens the Developer Tools dialog": "Apre la finestra di strumenti per sviluppatori", + "Commands": "Comandi", + "Results from DuckDuckGo": "Risultati da DuckDuckGo", + "Emoji": "Emoji", + "Notify the whole room": "Notifica l'intera stanza", + "Room Notification": "Notifica della stanza", + "Users": "Utenti", + "unknown device": "dispositivo sconosciuto", + "NOT verified": "NON verificato", + "verified": "verificato", + "Verification": "Verifica", + "Ed25519 fingerprint": "Impronta ed25519", + "User ID": "ID utente", + "Curve25519 identity key": "Chiave di identità curve25519", + "none": "nessuno", + "Claimed Ed25519 fingerprint key": "Chiave di impronta ed25519 dichiarata", + "unencrypted": "non criptato", + "Decryption error": "Errore di decifrazione", + "Session ID": "ID sessione", + "End-to-end encryption information": "Informazioni di cifratura end-to-end", + "Event information": "Informazioni evento", + "Sender device information": "Informazioni dispositivo mittente", + "Passphrases must match": "Le password devono coincidere", + "Passphrase must not be empty": "La password non può essere vuota", + "Export room keys": "Esporta chiavi della stanza", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Questa procedura ti permette di esportare in un file locale le chiavi per i messaggi che hai ricevuto nelle stanze criptate. Potrai poi importare il file in un altro client Matrix in futuro, in modo che anche quel client possa decifrare quei messaggi.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Il file esportato permetterà a chiunque possa leggerlo di decifrare tutti i messaggi criptati che vedi, quindi dovresti conservarlo in modo sicuro. Per aiutarti, potresti inserire una password sotto, che verrà usata per criptare i dati esportati. Sarà possibile importare i dati solo usando la stessa password.", + "Enter passphrase": "Inserisci password", + "Confirm passphrase": "Conferma password", + "Export": "Esporta", + "Import room keys": "Importa chiavi della stanza", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Questa procedura ti permette di importare le chiavi di cifratura precedentemente esportate da un altro client Matrix. Potrai poi decifrare tutti i messaggi che quel client poteva decifrare.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Il file esportato sarà protetto da una password. Dovresti inserire la password qui, per decifrarlo.", + "File to import": "File da importare", + "Import": "Importa", + "Failed to set direct chat tag": "Impostazione etichetta chat diretta fallita", + "Failed to remove tag %(tagName)s from room": "Rimozione etichetta %(tagName)s dalla stanza fallita", + "Failed to add tag %(tagName)s to room": "Aggiunta etichetta %(tagName)s alla stanza fallita", + "Stickerpack": "Pacchetto adesivi", + "Hide Stickers": "Nascondi gli adesivi", + "Show Stickers": "Mostra gli adesivi", + "Unable to join community": "Impossibile unirsi alla comunità", + "Unable to leave community": "Impossibile uscire dalla comunità", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Le modifiche al nome e all'avatar effettuate alla tua comunità potrebbero non essere visibili agli altri utenti per i prossimi 30 minuti.", + "Join this community": "Unisciti a questa comunità", + "Leave this community": "Esci da questa comunità", + "You don't currently have any stickerpacks enabled": "Non hai ancora alcun pacchetto di adesivi attivato", + "Add a stickerpack": "Aggiungi un pacchetto di adesivi", + "Who can join this community?": "Chi può unirsi a questa comunità?", + "Everyone": "Tutti", + "Fetching third party location failed": "Rilevazione posizione di terze parti fallita", + "A new version of Riot is available.": "È disponibile una nuova versione di Riot.", + "Couldn't load home page": "Impossibile caricare la pagina principale", + "Send Account Data": "Invia dati account", + "Advanced notification settings": "Impostazioni di notifica avanzate", + "Uploading report": "Sto caricando il report", + "Sunday": "Domenica", + "Notification targets": "Obiettivi di notifica", + "Today": "Oggi", + "Files": "File", + "You are not receiving desktop notifications": "Non stai ricevendo le notifiche sul desktop", + "Friday": "Venerdì", + "Update": "Aggiornamento", + "Riot does not know how to join a room on this network": "Riot non sa come entrare nella stanza su questa rete", + "Add an email address above to configure email notifications": "Aggiungi un indirizzo email sopra per configurare le notifiche via email", + "Expand panel": "Espandi il pannello", + "On": "Acceso", + "%(count)s Members": { + "other": "%(count)s membri", + "one": "%(count)s membro" + }, + "Filter room names": "Filtra i nomi delle stanze", + "Changelog": "Cambiamenti", + "Waiting for response from server": "In attesa di una risposta dal server", + "Send Custom Event": "Invia Evento Personalizzato", + "All notifications are currently disabled for all targets.": "Tutte le notifiche sono disabilitate per tutti gli obbiettivi.", + "Failed to send logs: ": "Invio dei log fallito: ", + "delete the alias.": "elimina l'alias.", + "To return to your account in future you need to set a password": "Per tornare nel tuo account in futuro devi impostare una password", + "Forget": "Dimentica", + "Hide panel": "Nascondi pannello", + "You cannot delete this image. (%(code)s)": "Non puoi eliminare quest'immagine. (%(code)s)", + "Cancel Sending": "Annulla invio", + "This Room": "Questa stanza", + "The Home Server may be too old to support third party networks": "Il server Home potrebbe essere troppo vecchio per supportare reti di terze parti", + "Noisy": "Rumoroso", + "Error saving email notification preferences": "Errore nel salvataggio delle preferenze di notifica email", + "Messages containing my display name": "Messaggi contenenti il mio nome visualizzato", + "Messages in one-to-one chats": "Messaggi in chat uno-a-uno", + "Unavailable": "Non disponibile", + "View Decrypted Source": "Visualizza sorgente decifrato", + "Failed to update keywords": "Impossibile aggiornare le parole chiave", + "Notes:": "Note:", + "remove %(name)s from the directory.": "rimuovi %(name)s dalla lista.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Le notifiche alle seguenti parole chiave seguono regole che non possono essere mostrate qui:", + "Safari and Opera work too.": "Anche Safari e Opera vanno bene.", + "Please set a password!": "Imposta una password!", + "You have successfully set a password!": "Hai impostato una password con successo!", + "An error occurred whilst saving your email notification preferences.": "Si è verificato un errore durante il salvataggio delle tue preferenze sulle notifiche email.", + "Explore Room State": "Esplora Stato Stanza", + "Source URL": "URL d'origine", + "Messages sent by bot": "Messaggi inviati dai bot", + "Filter results": "Filtra risultati", + "Members": "Membri", + "No update available.": "Nessun aggiornamento disponibile.", + "Resend": "Reinvia", + "Failed to get protocol list from Home Server": "Impossibile ottenere la lista di protocolli dal server Home", + "Collecting app version information": "Raccolta di informazioni sulla versione dell'applicazione", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Eliminare l'alias %(alias)s e rimuovere %(name)s dalla lista?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Questo ti permetterà di ritornare al tuo account dopo esserti disconnesso e accedere in altri dispositivi.", + "Keywords": "Parole chiave", + "Enable notifications for this account": "Abilita le notifiche per questo account", + "Directory": "Lista", + "Invite to this community": "Invita a questa comunità", + "Failed to get public room list": "Impossibile ottenere la lista delle stanze pubbliche", + "Messages containing keywords": "Messaggi contenenti parole chiave", + "Room not found": "Stanza non trovata", + "Tuesday": "Martedì", + "Enter keywords separated by a comma:": "Inserisci le parole chiave separate da virgole:", + "Search…": "Cerca…", + "You have successfully set a password and an email address!": "Hai impostato con successo una password e un indirizzo email!", + "Remove %(name)s from the directory?": "Rimuovere %(name)s dalla lista?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot utilizza molte funzioni avanzate del browser, alcune delle quali non sono disponibili o sono sperimentali nel tuo browser attuale.", + "Developer Tools": "Strumenti per Sviluppatori", + "Preparing to send logs": "Preparazione invio dei log", + "Enable desktop notifications": "Abilita le notifiche desktop", + "Remember, you can always set an email address in user settings if you change your mind.": "Ricorda, puoi sempre specificare un indirizzo email nelle impostazioni utente se cambi idea.", + "Explore Account Data": "Esplora dati account", + "All messages (noisy)": "Tutti i messaggi (rumoroso)", + "Saturday": "Sabato", + "I understand the risks and wish to continue": "Sono consapevole dei rischi e vorrei continuare", + "Direct Chat": "Chat Diretta", + "The server may be unavailable or overloaded": "Il server potrebbe essere non disponibile o sovraccarico", + "Reject": "Rifiuta", + "Failed to set Direct Message status of room": "Impossibile impostare lo stato di Messaggio Diretto alla stanza", + "Monday": "Lunedì", + "Remove from Directory": "Rimuovi dalla lista", + "Enable them now": "Abilitale adesso", + "Messages containing my user name": "Messaggi contenenti il mio nome utente", + "Toolbox": "Strumenti", + "Collecting logs": "Sto recuperando i log", + "more": "altro", + "GitHub issue link:": "Link segnalazione su GitHub:", + "You must specify an event type!": "Devi specificare un tipo di evento!", + "(HTTP status %(httpStatus)s)": "(stato HTTP %(httpStatus)s)", + "All Rooms": "Tutte le stanze", + "Please install Chrome or Firefox for the best experience.": "Installa Chrome o Firefox per la migliore esperienza d'uso.", + "Wednesday": "Mercoledì", + "You cannot delete this message. (%(code)s)": "Non puoi eliminare questo messaggio. (%(code)s)", + "Quote": "Cita", + "Send logs": "Invia i log", + "All messages": "Tutti i messaggi", + "Call invitation": "Invito ad una chiamata", + "Downloading update...": "Scaricamento aggiornamento...", + "State Key": "Chiave dello Stato", + "Failed to send custom event.": "Impossibile inviare evento personalizzato.", + "What's new?": "Cosa c'è di nuovo?", + "Notify me for anything else": "Notificami per qualsiasi altra cosa", + "When I'm invited to a room": "Quando vengo invitato/a in una stanza", + "Can't update user notification settings": "Impossibile aggiornare le impostazioni di notifica dell'utente", + "Notify for all other messages/rooms": "Notifica per tutti gli altri messaggi/stanze", + "Unable to look up room ID from server": "Impossibile consultare l'ID stanza dal server", + "Couldn't find a matching Matrix room": "Impossibile trovare una stanza Matrix corrispondente", + "Invite to this room": "Invita in questa stanza", + "Search for a room": "Cerca una stanza", + "Thursday": "Giovedì", + "Forward Message": "Inoltra messaggio", + "Logs sent": "Log inviati", + "Back": "Indietro", + "Failed to change settings": "Impossibile modificare le impostazioni", + "Reply": "Rispondi", + "Show message in desktop notification": "Mostra i messaggi nelle notifiche desktop", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "I log di debug contengono dati di utilizzo dell'applicazione inclusi il nome utente, gli ID o alias delle stanze o gruppi visitati e i nomi degli altri utenti. Non contengono messaggi.", + "Unhide Preview": "Mostra anteprima", + "Unable to join network": "Impossibile collegarsi alla rete", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Potresti averli configurati in un client diverso da Riot. Non puoi cambiarli in Riot ma sono comunque applicati", + "Sorry, your browser is not able to run Riot.": "Spiacenti, ma il tuo browser non è in grado di utilizzare Riot.", + "Uploaded on %(date)s by %(user)s": "Caricato il %(date)s da %(user)s", + "Messages in group chats": "Messaggi nelle chat di gruppo", + "Yesterday": "Ieri", + "Error encountered (%(errorDetail)s).": "Errore riscontrato (%(errorDetail)s).", + "Login": "Accedi", + "Low Priority": "Priorità bassa", + "What's New": "Novità", + "Set Password": "Imposta Password", + "Enable audible notifications in web client": "Abilita notifiche audio nel client web", + "Off": "Spento", + "#example": "#esempio", + "Mentions only": "Solo le citazioni", + "You can now return to your account after signing out, and sign in on other devices.": "Ora puoi tornare al tuo account dopo esserti disconnesso e accedere su altri dispositivi.", + "Enable email notifications": "Abilita le notifiche email", + "Event Type": "Tipo di Evento", + "Download this file": "Scarica questo file", + "Pin Message": "Blocca messaggio", + "Thank you!": "Grazie!", + "View Community": "Vedi la comunità", + "Event sent!": "Evento inviato!", + "View Source": "Visualizza sorgente", + "Event Content": "Contenuto dell'Evento", + "Unable to fetch notification target list": "Impossibile ottenere la lista di obiettivi notifiche", + "Collapse panel": "Riduci pannello", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Con il tuo attuale browser, l'aspetto e la sensazione generale dell'applicazione potrebbero essere completamente sbagliati e alcune delle funzionalità potrebbero non funzionare. Se vuoi provare comunque puoi continuare, ma non riceverai aiuto per qualsiasi problema tu possa riscontrare!", + "Checking for an update...": "Controllo aggiornamenti...", + "There are advanced notifications which are not shown here": "Ci sono notifiche avanzate che non sono mostrate qui", + "Every page you use in the app": "Ogni pagina che usi nell'app", + "e.g. ": "es. ", + "Your User Agent": "Il tuo User Agent", + "Your device resolution": "La risoluzione del dispositivo", + "Missing roomId.": "ID stanza mancante.", + "Always show encryption icons": "Mostra sempre icone di cifratura", + "Enable widget screenshots on supported widgets": "Attiva le schermate dei widget sui widget supportati", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Al momento non è possibile rispondere con un file quindi verrà inviato senza essere una risposta.", + "Unable to reply": "Impossibile rispondere", + "At this time it is not possible to reply with an emote.": "Al momento non è possibile rispondere con una emoticon.", + "Picture": "Immagine", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Impossibile caricare l'evento a cui si è risposto, o non esiste o non hai il permesso di visualizzarlo.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Gli errori di Riot sono monitorati su GitHub: segnala un problema su GitHub.", + "Log out and remove encryption keys?": "Disconnettere e rimuovere le chiavi di cifratura?", + "Refresh": "Aggiorna", + "We encountered an error trying to restore your previous session.": "Abbiamo riscontrato un errore tentando di ripristinare la tua sessione precedente.", + "Send analytics data": "Invia dati statistici", + "Clear Storage and Sign Out": "Elimina lo storage e disconnetti", + "Send Logs": "Invia i log", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Eliminare lo storage del browser potrebbe risolvere il problema, ma verrai disconnesso e la cronologia delle chat criptate sarà illeggibile.", + "Collapse Reply Thread": "Riduci finestra di risposta", + "e.g. %(exampleValue)s": "es. %(exampleValue)s", + "Reload widget": "Ricarica widget", + "To notify everyone in the room, you must be a": "Per notificare chiunque nella stanza, devi essere un", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Per favore aiuta a migliorare Riot.im inviando dati di utilizzo anonimi. Verrà usato un cookie (vedi la nostra politica sui cookie).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Per favore aiutaci a migliorare Riot.im inviando dati di utilizzo anonimi. Verrà usato un cookie.", + "Yes, I want to help!": "Sì, voglio aiutare!", + "Warning: This widget might use cookies.": "Attenzione: questo widget potrebbe usare cookie.", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Il tuo account sarà permanentemente inutilizzabile. Non potrai accedere e nessuno potrà ri-registrare lo stesso ID utente. Il tuo account abbandonerà tutte le stanze a cui partecipa e i dettagli del tuo account saranno rimossi dal server di identità. Questa azione è irreversibile.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Disattivare il tuo account non eliminerà in modo predefinito i messaggi che hai inviato. Se vuoi che noi dimentichiamo i tuoi messaggi, seleziona la casella sotto.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "La visibilità dei messaggi in Matrix è simile alle email. Se dimentichiamo i messaggi significa che quelli che hai inviato non verranno condivisi con alcun utente nuovo o non registrato, ma gli utenti registrati che avevano già accesso ai messaggi avranno ancora accesso alla loro copia.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Per favore dimenticate tutti i messaggi che ho inviato quando il mio account viene disattivato (Attenzione: gli utenti futuri vedranno un elenco incompleto di conversazioni)", + "To continue, please enter your password:": "Per continuare, inserisci la tua password:", + "password": "password", + "Can't leave Server Notices room": "Impossibile abbandonare la stanza Notifiche Server", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Questa stanza viene usata per messaggi importanti dall'homeserver, quindi non puoi lasciarla.", + "Terms and Conditions": "Termini e condizioni", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Per continuare a usare l'homeserver %(homeserverDomain)s devi leggere e accettare i nostri termini e condizioni.", + "Review terms and conditions": "Leggi i termini e condizioni", + "Muted Users": "Utenti silenziati", + "Message Pinning": "Messaggi appuntati", + "Mirror local video feed": "Feed video dai ripetitori locali", + "Replying": "Rispondere", + "Popout widget": "Oggetto a comparsa", + "Failed to indicate account erasure": "Impossibile indicare la cancellazione dell'account", + "Bulk Options": "Opzioni applicate in massa", + "Encrypting": "Cifratura...", + "Encrypted, not sent": "Cifrato, non inviato", + "Share Link to User": "Condividi link con utente", + "Share room": "Condividi stanza", + "Share Room": "Condividi stanza", + "Link to most recent message": "Link al messaggio più recente", + "Share User": "Condividi utente", + "Share Community": "Condividi comunità", + "Share Room Message": "Condividi messaggio stanza", + "Link to selected message": "Link al messaggio selezionato", + "COPY": "COPIA", + "Share Message": "Condividi messaggio", + "No Audio Outputs detected": "Nessuna uscita audio rilevata", + "Audio Output": "Uscita audio", + "Try the app first": "Prova prima l'app", + "A conference call could not be started because the intgrations server is not available": "La chiamata di gruppo non può essere iniziata perchè il server di integrazione non è disponibile", + "Call in Progress": "Chiamata in corso", + "A call is already in progress!": "Una chiamata è già in corso!", + "Permission Required": "Permesso richiesto", + "You do not have permission to start a conference call in this room": "Non hai il permesso di iniziare una chiamata di gruppo in questa stanza", + "Jitsi Conference Calling": "Chiamata di gruppo Jitsi", + "Show empty room list headings": "Mostra le intestazioni dell'elenco delle stanze vuote", + "This event could not be displayed": "Questo evento non può essere mostrato", + "Demote yourself?": "Retrocedi?", + "Demote": "Retrocedi", + "deleted": "cancellato", + "underlined": "sottolineato", + "inline-code": "codice in linea", + "block-quote": "citazione", + "bulleted-list": "lista a punti", + "numbered-list": "lista a numeri", + "You have no historical rooms": "Non ci sono stanze storiche", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Nelle stanze criptate, come questa, le anteprime degli URL sono disabilitate di default per garantire che il tuo server di casa (dove vengono generate le anteprime) non possa raccogliere informazioni sui collegamenti che vedi in questa stanza.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Quando qualcuno inserisce un URL nel proprio messaggio, è possibile mostrare un'anteprima dell'URL per fornire maggiori informazioni su quel collegamento, come il titolo, la descrizione e un'immagine dal sito web.", + "The email field must not be blank.": "Il campo email non deve essere vuoto.", + "The user name field must not be blank.": "Il campo nome utente non deve essere vuoto.", + "The phone number field must not be blank.": "Il campo telefono non deve essere vuoto.", + "The password field must not be blank.": "Il campo passwordl non deve essere vuoto.", + "You can't send any messages until you review and agree to our terms and conditions.": "Non è possibile inviare alcun messaggio fino a quando non si esaminano e si accettano i nostri termini e condizioni .", + "A call is currently being placed!": "Attualmente è in corso una chiamata!", + "System Alerts": "Avvisi di sistema", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "L'homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili, perciò alcuni utenti non potranno accedere. Contatta l'amministratore del servizio per fare aumentare questo limite.", + "Failed to remove widget": "Rimozione del widget fallita", + "An error ocurred whilst trying to remove the widget from the room": "Si è verificato un errore tentando di rimuovere il widget dalla stanza", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.", + "This homeserver has hit its Monthly Active User limit": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili", + "Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo.", + "Internal room ID: ": "ID interno della stanza: ", + "Room version number: ": "Numero di versione della stanza: ", + "There is a known vulnerability affecting this room.": "C'è una vulnerabilità nota che affligge questa stanza.", + "This room version is vulnerable to malicious modification of room state.": "La versione di questa stanza è vulnerabile a modifiche malevole dello stato della stanza.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Clicca qui per aggiornare all'ultima versione ed assicurare che l'integrità della stanza sia protetta.", + "Only room administrators will see this warning": "Solo gli amministratori della stanza vedranno questo avviso", + "Please contact your service administrator to continue using the service.": "Contatta l'amministratore del servizio per continuare ad usarlo.", + "This homeserver has hit its Monthly Active User limit.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili.", + "This homeserver has exceeded one of its resource limits.": "Questo homeserver ha oltrepassato uno dei suoi limiti di risorse.", + "Please contact your service administrator to get this limit increased.": "Contatta l'amministratore del servizio per fare aumentare questo limite.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Questo homeserver ha raggiunto il suo limite di utenti attivi mensili, perciò alcuni utenti non potranno accedere.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Questo homeserver ha oltrepassato uno dei suoi limiti di risorse, perciò alcuni utenti non potranno accedere.", + "Upgrade Room Version": "Aggiorna versione stanza", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "L'aggiornamento di questa stanza richiede la chiusura dell'istanza attuale e la creazione di una nuova stanza al suo posto. Per offrire la migliore esperienza possibile ai membri della stanza, noi:", + "Create a new room with the same name, description and avatar": "Creeremo una nuova stanza con lo stesso nome, descrizione e avatar", + "Update any local room aliases to point to the new room": "Aggiorneremo qualsiasi alias di stanza in modo che punti a quella nuova", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Eviteremo che gli utenti parlino nella vecchia versione della stanza e posteremo un messaggio avvisando gli utenti di spostarsi in quella nuova", + "Put a link back to the old room at the start of the new room so people can see old messages": "Inseriremo un link alla vecchia stanza all'inizio della di quella nuova in modo che la gente possa vedere i messaggi precedenti", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha raggiunto il suo limite di utenti attivi mensili. Contatta l'amministratore del servizio per continuare ad usarlo.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Il tuo messaggio non è stato inviato perchè questo homeserver ha oltrepassato un limite di risorse. Contatta l'amministratore del servizio per continuare ad usarlo.", + "Please contact your service administrator to continue using this service.": "Contatta l'amministratore del servizio per continuare ad usarlo.", + "Increase performance by only loading room members on first view": "Aumenta le prestazioni caricando solo i membri della stanza alla prima occhiata", + "Sorry, your homeserver is too old to participate in this room.": "Spiacenti, il tuo homeserver è troppo vecchio per partecipare a questa stanza.", + "Please contact your homeserver administrator.": "Contatta l'amministratore del tuo homeserver.", + "Lazy loading members not supported": "Il caricamento lento dei membri non è supportato", + "Lazy loading is not supported by your current homeserver.": "Il caricamento lento non è supportato dal tuo attuale homeserver.", + "Legal": "Informazioni legali", + "Forces the current outbound group session in an encrypted room to be discarded": "Forza l'eliminazione dell'attuale sessione di gruppo in uscita in una stanza criptata", + "Error Discarding Session": "Errore nell'eliminazione della sessione", + "This room has been replaced and is no longer active.": "Questa stanza è stata sostituita e non è più attiva.", + "The conversation continues here.": "La conversazione continua qui.", + "Upgrade room to version %(ver)s": "Aggiorna la stanza alla versione %(ver)s", + "This room is a continuation of another conversation.": "Questa stanza è la continuazione di un'altra conversazione.", + "Click here to see older messages.": "Clicca qui per vedere i messaggi precedenti.", + "Failed to upgrade room": "Aggiornamento stanza fallito", + "The room upgrade could not be completed": "Non è stato possibile completare l'aggiornamento della stanza", + "Upgrade this room to version %(version)s": "Aggiorna questa stanza alla versione %(version)s", + "Registration Required": "Registrazione necessaria", + "You need to register to do this. Would you like to register now?": "Devi registrarti per eseguire questa azione. Vuoi registrarti ora?", + "Unable to connect to Homeserver. Retrying...": "Impossibile connettersi all'homeserver. Riprovo...", + "Unable to query for supported registration methods": "Impossibile richiedere i metodi di registrazione supportati", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "one": "%(senderName)s ha aggiunto %(addedAddresses)s come indirizzo per questa stanza.", + "other": "%(senderName)s ha aggiunto %(addedAddresses)s come indirizzi per questa stanza." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "one": "%(senderName)s ha rimosso %(removedAddresses)s tra gli indirizzi di questa stanza.", + "other": "%(senderName)s ha rimosso %(removedAddresses)s tra gli indirizzi di questa stanza." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s ha aggiunto %(addedAddresses)s e rimosso %(removedAddresses)s tra gli indirizzi di questa stanza.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s ha messo %(address)s come indirizzo principale per questa stanza.", + "%(senderName)s removed the main address for this room.": "%(senderName)s ha rimosso l'indirizzo principale di questa stanza.", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Prima di inviare i log, devi creare una segnalazione su GitHub per descrivere il tuo problema.", + "What GitHub issue are these logs for?": "Per quale segnalazione su GitHub sono questi log?", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot ora usa da 3 a 5 volte meno memoria, caricando le informazioni degli altri utenti solo quando serve. Si prega di attendere mentre ci risincronizziamo con il server!", + "Updating Riot": "Aggiornamento di Riot", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

HTML per la pagina della tua comunità

\n

\n Usa la descrizione estesa per introdurre i nuovi membri alla comunità, o distribuire alcuni link importanti\n

\n

\n Puoi anche usare i tag 'img'\n

\n", + "Submit Debug Logs": "Invia log di debug", + "An email address is required to register on this homeserver.": "È necessario un indirizzo email per registrarsi in questo homeserver.", + "A phone number is required to register on this homeserver.": "È necessario un numero di telefono per registrarsi in questo homeserver.", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "Hai usato Riot precedentemente su %(host)s con il caricamento lento dei membri attivato. In questa versione il caricamento lento è disattivato. Dato che la cache locale non è compatibile tra queste due impostazioni, Riot deve risincronizzare il tuo account.", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "Se l'altra versione di Riot è ancora aperta in un'altra scheda, chiudila perchè usare Riot nello stesso host con il caricamento lento sia attivato che disattivato può causare errori.", + "Incompatible local cache": "Cache locale non compatibile", + "Clear cache and resync": "Svuota cache e risincronizza", + "Please accept all of the policies": "Si prega di accettare tutte le condizioni", + "Please review and accept the policies of this homeserver:": "Consulta ed accetta le condizioni di questo homeserver:", + "Riot Desktop on %(platformName)s": "Riot Desktop su %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot non è supportato sul web mobile. Installare l'applicazione?", + "Unknown device": "Dispositivo sconosciuto", + "You need to be using HTTPS to place a screen-sharing call.": "Devi usare HTTPS per effettuare una chiamata con la condivisione dello schermo.", + "Welcome to Riot.im": "Benvenuto/a su Riot.im", + "Search the room directory": "Cerca nella lista delle stanze", + "Chat with Riot Bot": "Chatta con Riot Bot", + "Get started with some tips from Riot Bot!": "Inizia con alcuni consigli di Riot Bot!", + "General discussion about Matrix and Riot": "Discussioni generali riguardo Matrix e Riot", + "Riot/Web & Desktop chat": "Chat su Riot/Web & Desktop", + "Riot/iOS & matrix-ios-sdk chat": "Chat su Riot/iOS & matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Chat su Riot/Android & matrix-android-sdk", + "Matrix technical discussions": "Discussioni tecniche su Matrix", + "Running Matrix services": "Esecuzione servizi Matrix", + "Community-run support for Synapse": "Supporto per Synapse dalla comunità", + "Admin support for Dendrite": "Supporto amministrativo per Dendrite", + "Announcements about Synapse releases": "Annunci riguardo i rilasci di Synapse", + "Support for those using and running matrix-appservice-irc": "Supporto per chi usa e amministra matrix-appservice-irc", + "Building services on Matrix": "Costruzione servizi su Matrix", + "Support for those using the Matrix spec": "Supporto per chi utilizza le specifiche Matrix", + "Design and implementation of E2E in Matrix": "Progetto e implementazione di E2E in Matrix", + "Implementing VR services with Matrix": "Implementazione servizi VR con Matrix", + "Implementing VoIP services with Matrix": "Implementazione servizi VoIP con Matrix", + "Discussion of the Identity Service API": "Discussione API del servizio identità", + "Support for those using, running and writing other bridges": "Supporto per chi usa, amministra e scrive altri ponti (bridge)", + "Contributing code to Matrix and Riot": "Contributi di codice per Matrix e Riot", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s tramite %(browserName)s su %(osName)s", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat criptate e decentralizzate & collaborazione offerta da [matrix]", + "Discussion of all things Matrix!": "Discussione su tutto riguardo Matrix!", + "Dev chat for the Riot/Web dev team": "Chat per gli sviluppatori di Riot/Web", + "Dev chat for the Dendrite dev team": "Chat per gli sviluppatori di Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Esistono già molte stanze in Matrix, collegate a reti esistenti (Slack, IRC, Gitter, ecc.) o indipendenti. Controlla l'elenco!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Puoi usare le opzioni server personalizzate per accedere ad altri server Matrix specificando l'indirizzo del server home.
Questo permette di usare Riot con un account Matrix esistente su un server home diverso.

È anche possibile impostare un diverso server identità, ma in tal caso non sarà possibile invitare utenti attraverso l'indirizzo e-mail o essere invitati attraverso l'indirizzo e-mail.", + "Co-ordination for Riot translators": "Coordinazione per i traduttori di Riot" +} \ No newline at end of file diff --git a/riot/i18n/ko.json b/riot/i18n/ko.json new file mode 100644 index 0000000..b079e91 --- /dev/null +++ b/riot/i18n/ko.json @@ -0,0 +1,1339 @@ +{ + "Cancel": "취소", + "Close": "닫기", + "Create new room": "새 방 만들기", + "Custom Server Options": "사용자 지정 서버 설정", + "Dismiss": "없애기", + "Error": "오류", + "Mute": "음소거", + "Notifications": "알림", + "powered by Matrix": "Matrix의 지원을 받고 있습니다", + "Remove": "제거", + "Room directory": "방 목록", + "Search": "찾기", + "Settings": "설정", + "Start chat": "대화하기", + "unknown error code": "알 수 없는 오류 코드", + "OK": "네", + "Continue": "게속하기", + "Accept": "수락", + "Account": "계정", + "Add": "추가하기", + "Add email address": "이메일 주소 추가하기", + "Add phone number": "전화번호 추가하기", + "Admin": "관리자", + "Admin Tools": "관리 도구", + "VoIP": "VoIP", + "No Microphones detected": "마이크를 찾지 못했습니다.", + "No Webcams detected": "카메라를 찾지 못했습니다.", + "No media permissions": "미디어 권한이 없습니다.", + "Default Device": "기본 기기", + "Microphone": "마이크", + "Camera": "카메라", + "Advanced": "고급", + "Algorithm": "알고리즘", + "Hide removed messages": "제거된 메시지 숨기기", + "Always show message timestamps": "항상 메시지의 시간을 보여주기", + "Authentication": "인증", + "Alias (optional)": "별명 (선택)", + "A new password must be entered.": "새 비밀번호를 입력해주세요.", + "An error has occurred.": "오류가 일어났습니다.", + "Anyone": "누구나", + "Are you sure?": "정말이세요?", + "Are you sure you want to leave the room '%(roomName)s'?": "정말로 '%(roomName)s'를 떠나시겠어요?", + "Attachment": "붙이기", + "Are you sure you want to upload the following files?": "다음 파일들을 올리시겠어요?", + "Autoplay GIFs and videos": "GIF와 동영상을 자동으로 재생하기", + "Ban": "차단하기", + "Banned users": "차단된 사용자", + "Blacklisted": "블랙리스트에 올려짐", + "Can't load user settings": "사용사 설정을 불러올 수 없습니다.", + "Change Password": "비밀번호 바꾸기", + "Changes your display nickname": "별명 바꾸기", + "Clear Cache and Reload": "캐시 지우고 다시 시작하기", + "Clear Cache": "캐시 지우기", + "Confirm password": "비밀번호 확인", + "Confirm your new password": "새 비밀번호 확인", + "Create Room": "방 만들기", + "Create an account": "게정 만들기", + "Custom": "사용자 지정", + "Device ID": "기기 ID", + "Default": "기본", + "Device already verified!": "이미 인증한 기기입니다!", + "device id: ": "기기 id: ", + "Devices": "기기", + "Direct chats": "직접 대화하기", + "Disable Notifications": "알림 끄기", + "Display name": "별명", + "Don't send typing notifications": "입력 중이라는 알림 보내지 않기", + "Email": "이메일", + "Email address": "이메일 주소", + "Email, name or matrix ID": "이메일, 이름 혹은 매트릭스 ID", + "Failed to forget room %(errCode)s": "%(errCode)s 방을 지우지 못했습니다.", + "Favourite": "즐겨찾기", + "Operation failed": "작업 실패", + "Failed to change password. Is your password correct?": "비밀번호를 바꾸지 못했습니다. 이 비밀번호가 맞나요?", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s로 문자 메시지를 보냈습니다. 인증 번호를 입력해주세요.", + "%(targetName)s accepted an invitation.": "%(targetName)s님이 초대를 수락했습니다.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s님이 %(displayName)s 초대를 수락했습니다.", + "Access Token:": "접근 토큰:", + "Active call (%(roomName)s)": "(%(roomName)s)에서 전화를 걸고 받을 수 있습니다.", + "Add a topic": "주제 추가", + "Missing Media Permissions, click here to request.": "미디어 권한이 없습니다. 여기를 눌러 다시 요청해주세요.", + "You may need to manually permit Riot to access your microphone/webcam": "수동으로 Riot에 마이크와 카메라를 허용할 수도 있습니다", + "%(items)s and %(lastItem)s": "%(items)s과 %(lastItem)s", + "and %(count)s others...": { + "one": "그리고 다른 하나...", + "other": "그리고 %(count)s..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s님과 %(lastPerson)s님이 입력중", + "%(senderName)s answered the call.": "%(senderName)s님이 전화를 받았습니다.", + "Anyone who knows the room's link, apart from guests": "손님을 제외하고, 방의 주소를 아는 누구나", + "Anyone who knows the room's link, including guests": "손님을 포함하여, 방의 주소를 아는 누구나", + "Are you sure you want to reject the invitation?": "초대를 거절하시겠어요?", + "%(senderName)s banned %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 차단했습니다.", + "Bans user with given id": "받은 ID로 사용자 차단하기", + "Bulk Options": "대규모 설정", + "Call Timeout": "전화 대기 시간 초과", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "홈 서버에 연결할 수 없으니 연결을 확인하고, 홈 서버의 SSL 인증서가 믿을 수 있는지 확인하고, 브라우저 확장기능이 요청을 차단하고 있는지 확인해 주세요.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "주소창에 HTTPS URL이 있을 때는 HTTP로 홈 서버를 연결할 수 없습니다. HTTPS를 쓰거나 안전하지 않은 스크립트를 허용해주세요.", + "%(senderName)s changed their profile picture.": "%(senderName)s님이 프로필 사진을 바꿨습니다.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s님이 %(powerLevelDiffText)s의 권한 등급을 바꿨습니다.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s님이 방 이름을 %(roomName)s(으)로 바꿨습니다.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s님이 방 이름을 제거했습니다.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s님이 주제를 \"%(topic)s\"로 바꿨습니다.", + "Changes to who can read history will only apply to future messages in this room": "이제부터의 메시지에만 이 방에서 누가 기록을 읽을 수 있는지에 대한 변경 내역이 적용됩니다", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "비밀번호를 바꾸면 현재 모든 기기의 종단 간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 대화 기록을 읽을 수 없게 됩니다. 이 부분은 향상시키겠습니다.", + "Claimed Ed25519 fingerprint key": "Ed25519 지문 키가 필요", + "Click here to join the discussion!": "여기를 눌러서 같이 논의해요!", + "Click here to fix": "해결하려면 여기를 누르세요", + "Click to mute audio": "음소거하려면 누르세요", + "Click to mute video": "동영상을 음소거하려면 누르세요", + "click to reveal": "누르면 나타나요", + "Click to unmute video": "동영상 음소거를 끄려면 누르세요", + "Click to unmute audio": "음소거를 끄려면 누르세요", + "Command error": "명령 오류", + "Commands": "명령", + "Conference call failed.": "전화 회의를 실패했습니다.", + "Conference calling is in development and may not be reliable.": "전화 회의는 개발 중이고, 따라서 신뢰하기 힘들 수 있습니다.", + "Conference calls are not supported in encrypted rooms": "암호화된 방에서는 전화 회의가 지원되지 않습니다", + "Conference calls are not supported in this client": "이 클라이언트에서는 전화 회의가 지원되지 않습니다", + "Could not connect to the integration server": "통합 서버에 연결할 수 없습니다.", + "%(count)s new messages": { + "one": "%(count)s 새 메시지", + "other": "%(count)s 새 메시지" + }, + "Create a new chat or reuse an existing one": "새 대화를 시작하거나 전에 하던 대화를 계속하세요.", + "Cryptography": "암호화", + "Current password": "현재 비밀번호", + "Curve25519 identity key": "Curve25519 신원 키", + "Custom level": "사용자 지정 단계", + "/ddg is not a command": "/ddg는 없는 명령입니다", + "Deactivate Account": "계정 정지", + "Deactivate my account": "계정 정지하기", + "Decline": "거절", + "Decrypt %(text)s": "해독 %(text)s", + "Decryption error": "해독 오류", + "Delete": "지우기", + "Deops user with given id": "받은 ID로 사용자의 등급을 낮추기", + "Device ID:": "기기 ID:", + "Device key:": "기기 열쇠:", + "Devices will not yet be able to decrypt history from before they joined the room": "아직 방에 들어가기 전의 기록은 복호화 하지 못 합니다", + "Disinvite": "초대 취소", + "Displays action": "활동 보이기", + "Download %(text)s": "%(text)s 받기", + "Drop File Here": "여기에 파일을 놓아주세요", + "Drop here to tag %(section)s": "%(section)s를(을) 태그하려면 여기에 놓아주세요.", + "Ed25519 fingerprint": "Ed25519 지문", + "Email address (optional)": "이메일 주소 (선택)", + "Emoji": "이모지", + "Enable encryption": "암호화 사용하기", + "Enable Notifications": "알림 사용하기", + "Encrypted by a verified device": "인증된 기기에서 암호화 됐습니다.", + "Encrypted by an unverified device": "인증하지 않은 기기에서 암호화 됐습니다.", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "암호화 한 메시지는 아직 암호화를 구현하지 않은 클라이언트에서는 볼 수 없습니다.", + "Encrypted room": "암호화한 방", + "Encryption is enabled in this room": "이 방에서는 암호화 사용 중입니다.", + "Encryption is not enabled in this room": "이 방에서는 암호화를 사용하고 있지 않습니다.", + "%(senderName)s ended the call.": "%(senderName)s님이 전화를 끊었습니다.", + "End-to-end encryption information": "종단간 암호화 정보", + "End-to-end encryption is in beta and may not be reliable": "종단 간 암호화는 베타 테스트 중이며 신뢰하기 힘들 수 있습니다.", + "Enter Code": "코드를 입력하세요", + "Enter passphrase": "암호를 입력하세요", + "Error decrypting attachment": "첨부 파일 해독중 문제가 일어났습니다", + "Error: Problem communicating with the given homeserver.": "오류: 지정한 홈 서버와 통신에 문제가 있습니다.", + "Event information": "이벤트 정보", + "Existing Call": "기존 전화", + "Export": "내보내기", + "Export E2E room keys": "종단 간 암호화 방 열쇠 내보내기", + "Failed to ban user": "사용자를 차단하지 못했습니다", + "Failed to change power level": "권한 등급을 바꾸지 못했습니다", + "Failed to fetch avatar URL": "아바타 URL을 불러오지 못했습니다.", + "Failed to join room": "방에 들어가지 못했습니다", + "Failed to kick": "추방하지 못했습니다.", + "Failed to leave room": "방을 떠나지 못했습니다", + "Failed to load timeline position": "타임라인 위치를 불러오지 못했습니다.", + "Failed to mute user": "사용자를 음소거하지 못했습니다.", + "Failed to reject invite": "초대를 거절하지 못했습니다.", + "Failed to reject invitation": "초대를 거절하지 못했습니다", + "Failed to save settings": "설정을 저장하지 못했습니다.", + "Failed to send email": "이메일을 보내지 못했습니다.", + "Failed to send request.": "요청을 보내지 못했습니다.", + "Failed to set avatar.": "아바타를 설정하지 못했습니다.", + "Failed to set display name": "별명을 설정하지 못했습니다", + "Failed to set up conference call": "전화 회의를 시작하지 못했습니다.", + "Failed to toggle moderator status": "조정자 상태를 설정하지 못했습니다", + "Failed to unban": "차단을 해제하지 못했습니다.", + "Failed to upload file": "파일을 올리지 못했습니다.", + "Failed to upload profile picture!": "프로필 사진을 올리지 못했어요!", + "Failed to verify email address: make sure you clicked the link in the email": "이메일 주소를 인증하지 못했습니다. 메일에 나온 주소를 눌렀는지 확인해 보세요", + "Failure to create room": "방을 만들지 못했습니다", + "Favourites": "즐겨찾기", + "Fill screen": "화면 채우기", + "Filter room members": "방 구성원 찾기", + "Forget room": "방 지우기", + "Forgot your password?": "비밀번호를 잊어버리셨어요?", + "For security, this session has been signed out. Please sign in again.": "안전을 위해서 이 세션에서 로그아웃했습니다. 다시 로그인해주세요.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "로그아웃하시면 보안을 위해 이 브라우저에 저장된 모든 종단 간 암호화 열쇠가 삭제됩니다. 다음에 Riot을 사용할 때 대화 기록을 복호화할 수 있길 원한다면, 방 열쇠를 내보내서 안전하게 보관하세요.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s를 %(fromPowerLevel)s에서 %(toPowerLevel)s로", + "Guest access is disabled on this Home Server.": "이 홈 서버는 손님으로서 접근하실 수 없습니다.", + "Guests cannot join this room even if explicitly invited.": "명시적으로 초대 받은 손님이라도 이 방에는 들어가실 수 없습니다.", + "Hangup": "전화 끊기", + "Hide read receipts": "읽음 확인 표시 숨기기", + "Hide Text Formatting Toolbar": "문자 서식 도구 숨기기", + "Historical": "보관한 방", + "Home": "홈", + "Homeserver is": "홈 서버:", + "Identity Server is": "ID 서버:", + "I have verified my email address": "제 이메일 주소를 확인했습니다.", + "Import": "불러오기", + "Import E2E room keys": "종단 간 암호화 방 키 불러오기", + "Import room keys": "방 키 불러오기", + "Incoming call from %(name)s": "%(name)s님에게서 전화가 왔습니다.", + "Incoming video call from %(name)s": "%(name)s님으로부터 영상 통화가 왔습니다.", + "Incoming voice call from %(name)s": "%(name)s님으로부터 음성 통화가 왔습니다.", + "Incorrect username and/or password.": "사용자 이름 혹은 비밀번호가 맞지 않아요.", + "Incorrect verification code": "인증 번호가 맞지 않아요", + "Interface Language": "인터페이스 언어", + "Invalid alias format": "잘못된 별칭 형식입니다", + "Invalid address format": "잘못된 주소 형식입니다", + "Invalid Email Address": "잘못된 이메일 주소입니다", + "Invalid file%(extra)s": "잘못된 %(extra)s 파일입니다.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 초대했습니다.", + "Invite new room members": "새 구성원 초대하기", + "Invited": "초대받기", + "Invites": "초대", + "Invites user with given id to current room": "받은 ID로 사용자를 현재 방에 초대하기", + "'%(alias)s' is not a valid format for an address": "'%(alias)s'는 주소에 맞는 형식이 아니에요", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s'는 가명에 맞는 형식이 아니에요", + "%(displayName)s is typing": "%(displayName)s님이 입력 중", + "Sign in with": "로그인", + "Join as voice or video.": "음성 또는 영상으로 참여하세요.", + "Join Room": "방에 들어가기", + "%(targetName)s joined the room.": "%(targetName)s님이 방에 들어왔습니다.", + "Joins room with given alias": "받은 별칭으로 방에 들어가기", + "Jump to first unread message.": "읽지 않은 첫 메시지로 이동하려면 누르세요.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s님이 %(targetName)s님을 추방했습니다.", + "Kick": "추방", + "Kicks user with given id": "받은 ID로 사용자 추방하기", + "Labs": "실험실", + "Last seen": "마지막 위치", + "Leave room": "방 떠나기", + "%(targetName)s left the room.": "%(targetName)s님이 방을 떠났습니다.", + "Level:": "등급:", + "Local addresses for this room:": "이 방의 로컬 주소:", + "Logged in as:": "아이디:", + "Logout": "로그아웃", + "Low priority": "숨긴 방", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s님이 이후 방 구성원 모두, 초대받은 시점부터 방의 기록을 볼 수 있게 했습니다.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s님이 이후 방 구성원 모두, 들어온 시점부터 방의 기록을 볼 수 있게 했습니다.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s님이 이후 방 구성원 모두 방의 기록을 볼 수 있게 했습니다.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s님이 이후 누구나 방의 기록을 볼 수 있게 했습니다.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s님이 이후 알 수 없음(%(visibility)s)이 방의 기록을 볼 수 있게 했습니다.", + "Manage Integrations": "통합 관리", + "Markdown is disabled": "마크다운이 꺼져 있습니다.", + "Markdown is enabled": "마크다운이 켜져 있습니다.", + "matrix-react-sdk version:": "matrix-react-sdk 버전:", + "Message not sent due to unknown devices being present": "알 수 없는 기기가 있어 메시지를 보내지 못했습니다.", + "Missing room_id in request": "요청에서 room_id가 빠졌습니다.", + "Missing user_id in request": "요청에서 user_id가 빠졌습니다", + "Mobile phone number": "휴대 전화번호", + "Mobile phone number (optional)": "휴대 전화번호 (선택)", + "Moderator": "조정자", + "Name": "이름", + "Never send encrypted messages to unverified devices from this device": "이 기기에서는 절대 인증받지 않은 기기에게 암호화한 메시지를 보내지 않기", + "Never send encrypted messages to unverified devices in this room from this device": "이 기기에서 이 방의 인증받지 않은 기기로 암호화한 메시지를 보내지 마세요", + "New address (e.g. #foo:%(localDomain)s)": "새 주소 (예. #foo:%(localDomain)s)", + "New password": "새 비밀번호", + "New passwords don't match": "새 비밀번호가 맞지 않아요", + "New passwords must match each other.": "새 비밀번호는 서로 같아야 해요.", + "none": "없음", + "not set": "설정하지 않았습니다.", + "not specified": "지정하지 않았습니다.", + "(not supported by this browser)": "(이 브라우저에서 지원하지 않습니다.)", + "": "<지원하지 않아요>", + "NOT verified": "확인하지 않음", + "No devices with registered encryption keys": "등록된 암호화 열쇠가 있는 기기가 없습니다.", + "No display name": "별명이 없습니다.", + "No more results": "더 이상 결과가 없습니다.", + "No results": "결과 없음", + "No users have specific privileges in this room": "이 방에 지정한 권한의 사용자가 없습니다.", + "olm version:": "olm 버전:", + "Password": "비밀번호", + "Password:": "비밀번호:", + "Passwords can't be empty": "비밀번호를 입력해 주세요.", + "Permissions": "권한", + "People": "사람들", + "Phone": "전화", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "(현재로서는) 방을 암호화하면 되돌릴 수 없습니다", + "Only people who have been invited": "초대받은 사람만", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s님이 %(callType)s 전화를 걸었습니다.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "이메일을 확인하시고 그 안에 있는 주소를 누르세요. 이 일을 하고 나서, 계속하기를 누르세요.", + "Power level must be positive integer.": "권한 등급은 양의 정수여야만 해요.", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (권한 %(powerLevelNumber)s)", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "사용자를 자신과 같은 권한 등급으로 승급시는 것이기에 되돌릴 수 없습니다.", + "Privacy warning": "개인정보 경고", + "Private Chat": "비공개 대화", + "Privileged Users": "권한 있는 사용자", + "Profile": "프로필", + "%(senderName)s removed their profile picture.": "%(senderName)s님이 프로필 사진을 제거했습니다.", + "%(senderName)s set a profile picture.": "%(senderName)s님이 프로필 사진을 설정했습니다.", + "Public Chat": "공개 대화", + "Reason": "이유", + "Reason: %(reasonText)s": "이유: %(reasonText)s", + "Revoke Moderator": "조정자 철회", + "Refer a friend to Riot:": "Riot을 친구에게 추천해주세요:", + "Register": "등록", + "%(targetName)s rejected the invitation.": "%(targetName)s님이 초대를 거절했습니다.", + "Reject invitation": "초대 거절", + "Rejoin": "다시 들어가기", + "Remote addresses for this room:": "이 방의 원격 주소:", + "Remove Contact Information?": "연락처 정보를 제거하시겠어요?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s님이 별명(%(oldDisplayName)s)을 제거했습니다.", + "Remove %(threePid)s?": "%(threePid)s를(을) 제거하시겠어요?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s님이 VoIP 회의를 요청했습니다.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "비밀번호를 다시 설정하면 현재 모든 기기의 종단 간 암호화 키가 다시 설정되고, 먼저 방의 키를 내보내고 나중에 다시 불러오지 않는 한, 암호화한 대화 기록을 읽을 수 없게 됩니다. 이 부분은 향상시키겠습니다.", + "Results from DuckDuckGo": "덕덕고에서 검색한 결과", + "Return to login screen": "로그인 화면으로 돌아가기", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot은 알림을 보낼 권한을 가지고 있지 않습니다. 브라우저 설정을 확인해주세요", + "Riot was not given permission to send notifications - please try again": "Riot이 알림을 보낼 권한을 받지 못했습니다. 다시 해주세요", + "riot-web version:": "Riot 웹 버전:", + "Room %(roomId)s not visible": "방 %(roomId)s은 보이지 않아요", + "Room Colour": "방 색", + "Room contains unknown devices": "방에 알 수 없는 기기가 있습니다.", + "Room name (optional)": "방 이름 (선택)", + "%(roomName)s does not exist.": "%(roomName)s은 없는 방이에요.", + "%(roomName)s is not accessible at this time.": "현재는 %(roomName)s에 들어갈 수 없습니다.", + "Rooms": "방", + "Save": "저장", + "Scroll to bottom of page": "화면 맨 아래로 이동", + "Scroll to unread messages": "읽지 않은 메시지로 이동", + "Search failed": "찾지 못함", + "Searches DuckDuckGo for results": "덕덕고에서 검색", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s님이 %(dateTime)s에 확인", + "Send anyway": "그래도 보내기", + "Sender device information": "보낸 기기의 정보", + "Send Invites": "초대 보내기", + "Send Reset Email": "재설정 이메일 보내기", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s님이 사진을 보냈습니다.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "방에 들어오라고 %(senderName)s님이 %(targetDisplayName)s님에게 초대를 보냈습니다.", + "Server error": "서버 오류", + "Server may be unavailable or overloaded": "서버가 사용 불가하거나 과부하가 걸렸을 수 있습니다.", + "Server may be unavailable, overloaded, or search timed out :(": "서버를 쓸 수 없거나 과부하거나, 검색 시간을 초과했어요 :(", + "Server may be unavailable, overloaded, or the file too big": "서버를 쓸 수 없거나 과부하거나, 파일이 너무 커요", + "Server may be unavailable, overloaded, or you hit a bug.": "서버를 쓸 수 없거나 과부하거나, 오류입니다.", + "Server unavailable, overloaded, or something else went wrong.": "서버를 쓸 수 없거나 과부하거나, 다른 문제가 있습니다.", + "Session ID": "세션 ID", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s님이 별명을 %(displayName)s로 설정했습니다.", + "Show panel": "패널 보이기", + "Show Text Formatting Toolbar": "문자 서식 도구 보이기", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "시간을 12시간제로 보여 주기(예. 오후 2:30)", + "Signed Out": "로그아웃함", + "Sign in": "로그인", + "Sign out": "로그아웃", + "%(count)s of your messages have not been sent.": { + "other": "일부 메시지는 보내지 못했습니다.", + "one": "메시지가 보내지지 않았습니다." + }, + "Someone": "다른 사람", + "Start a chat": "대화 시작하기", + "Start authentication": "인증하기", + "Start Chat": "대화하기", + "Submit": "보내기", + "Success": "성공", + "Tagged as: ": "태그: ", + "The default role for new room members is": "방 새 구성원의 기본 역할", + "The main address for this room is": "이 방의 주요 주소", + "The phone number entered looks invalid": "입력된 전화번호가 잘못된 것 같습니다", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "입력한 서명 키는 %(userId)s님의 기기 %(deviceId)s에서 받은 서명 키와 일치하네요. 인증한 기기라고 표시했습니다.", + "This email address is already in use": "이 이메일 주소는 이미 사용 중입니다", + "This email address was not found": "이 이메일 주소를 찾지 못했습니다.", + "The email address linked to your account must be entered.": "계정에 연결한 이메일 주소를 입력해야 해요.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' 파일이 홈 서버에 올릴 수 있는 한계 크기를 초과했습니다.", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' 파일을 올리지 못했습니다.", + "The remote side failed to pick up": "상대방이 받지 못했습니다", + "This Home Server does not support login using email address.": "이 홈 서버는 이메일 주소 로그인을 지원하지 않아요.", + "This invitation was sent to an email address which is not associated with this account:": "이 초대는 이 계정과 연결되지 않은 이메일 주소로 보냈습니다:", + "This room has no local addresses": "이 방은 로컬 주소가 없습니다.", + "This room is not recognised.": "이 방은 드러나지 않아요.", + "These are experimental features that may break in unexpected ways": "예상치 못하게 망가질 수 있는 실험적인 기능입니다", + "The visibility of existing history will be unchanged": "기존 기록은 이전처럼 계속 볼 수 있습니다", + "This doesn't appear to be a valid email address": "올바르지 않은 이메일 주소로 보여요", + "This is a preview of this room. Room interactions have been disabled": "방을 미리 보고 있습니다. 방에 들어가셔야 방 구성원들과 소통하실 수 있습니다.", + "This phone number is already in use": "이 전화번호는 이미 사용 중입니다", + "This room": "이 방", + "This room is not accessible by remote Matrix servers": "이 방은 원격 매트릭스 서버에 접근할 수 없습니다.", + "This room's internal ID is": "방의 내부 ID", + "To link to a room it must have an address.": "방에 연결하려면 주소가 있어야 해요.", + "To reset your password, enter the email address linked to your account": "비밀번호을 다시 설정하려면, 계정과 연결한 이메일 주소를 입력해주세요", + "To use it, just wait for autocomplete results to load and tab through them.": "이 기능을 사용하시려면, 자동완성 결과가 나오길 기다리신 뒤에 탭으로 움직여주세요.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 문제의 메시지를 볼 수 있는 권한이 없습니다.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "이 방의 타임라인에서 특정 시점을 불러오려고 했지만, 찾을 수 없었습니다.", + "Turn Markdown off": "마크다운 끄기", + "Turn Markdown on": "마크다운 켜기", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s님이 종단 간 암호화를 켰습니다(%(algorithm)s 알고리즘).", + "Unable to add email address": "이메일 주소를 추가할 수 없습니다.", + "Unable to remove contact information": "연락처 정보를 제거할 수 없습니다.", + "Unable to verify email address.": "이메일 주소를 인증할 수 없습니다.", + "Unban": "차단 해제", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s님이 %(targetName)s님에 대한 차단을 해제했습니다.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "이 이매알 주소가 초대를 받은 계정과 연결된 주소가 맞는지 확인할 수 없습니다.", + "Unable to capture screen": "화면을 찍을 수 없습니다", + "Unable to enable Notifications": "알림을 사용할 수 없습니다.", + "Unable to load device list": "기기 목록을 불러올 수 없습니다.", + "Undecryptable": "해독할 수 없는", + "Unencrypted room": "암호화하지 않은 방", + "unencrypted": "암호화하지 않음", + "Unencrypted message": "암호화하지 않은 메시지", + "unknown caller": "알 수 없는 발신자", + "unknown device": "알 수 없는 기기", + "Unknown room %(roomId)s": "알 수 없는 방 %(roomId)s", + "Unknown (user, device) pair:": "알 수 없는 (사용자, 기기) 연결:", + "Unmute": "음소거 끄기", + "Unnamed Room": "이름 없는 방", + "Unrecognised command:": "인식 할 수 없는 명령:", + "Unrecognised room alias:": "인식할 수 없는 방 별칭:", + "Unverified": "인증하지 않음", + "Uploading %(filename)s and %(count)s others": { + "zero": "%(filename)s 올리는 중", + "one": "%(filename)s 외 %(count)s 올리는 중", + "other": "%(filename)s 외 %(count)s 올리는 중" + }, + "Upload avatar": "아바타 올리기", + "Upload Failed": "파일을 올리지 못했습니다.", + "Upload Files": "파일 올리기", + "Upload file": "파일 올리기", + "Upload new:": "새로 올리기:", + "Usage": "사용", + "Use compact timeline layout": "간단한 타임라인 구성 사용", + "Use with caution": "조심해주세요", + "User ID": "사용자 ID", + "User Interface": "사용자 인터페이스", + "User name": "사용자 이름", + "Username invalid: %(errMessage)s": "잘못된 사용자 이름입니다: %(errMessage)s", + "Users": "사용자들", + "Verification Pending": "인증을 기다리는 중", + "Verification": "인증", + "verified": "인증함", + "Verified": "인증함", + "Verified key": "인증한 열쇠", + "Video call": "영상 통화하기", + "Voice call": "음성 통화하기", + "VoIP conference finished.": "VoIP 회의를 마쳤습니다.", + "VoIP conference started.": "VoIP 회의를 시작했습니다.", + "VoIP is unsupported": "VoIP는 지원하지 않습니다", + "(could not connect media)": "(미디어에 연결할 수 없었습니다.)", + "(no answer)": "(응답 없음)", + "(unknown failure: %(reason)s)": "(알 수 없는 오류: %(reason)s)", + "(warning: cannot be disabled again!)": "(주의: 다시 끌 수 없어요!)", + "Warning!": "주의!", + "WARNING: Device already verified, but keys do NOT MATCH!": "주의: 기기는 이미 인증했지만, 열쇠가 맞지 않아요!", + "Who can access this room?": "누가 이 방에 들어올 수 있나요?", + "Who can read history?": "누가 기록을 읽을 수 있나요?", + "Who would you like to add to this room?": "이 방에 누구를 초대하고 싶으세요?", + "Who would you like to communicate with?": "누구와 대화하고 싶으세요?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s님이 %(targetName)s님의 초대를 거절했습니다.", + "Would you like to accept or decline this invitation?": "초대를 받아들이거나 거절하시겠어요?", + "You already have existing direct chats with this user:": "이미 직접 대화 중인 사용자:", + "You are already in a call.": "이미 통화하고 계시잖아요.", + "Press to start a chat with someone": "다른 사람과 대화하려면 을 누르세요.", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "주의: 열쇠 확인에 실패했습니다! %(userId)s와 %(deviceId)s 기기의 서명 키 \"%(fprint)s\"는 주어진 키 \"%(fingerprint)s\"와 맞지 않습니다. 누군가 대화를 엿듣는 중일 수도 있습니다!", + "You're not in any rooms yet! Press to make a room or to browse the directory": "아직 어떤 방에도 들어가 있지 않아요! 을 눌러서 방을 만들거나 을 눌러 목록에서 방을 찾아보세요", + "You are trying to access %(roomName)s.": "%(roomName)s에 들어가려고 하는 중입니다.", + "You cannot place a call with yourself.": "자기 자신에게는 전화를 걸 수 없습니다.", + "You cannot place VoIP calls in this browser.": "이 브라우저에서는 VoIP 전화를 걸 수 없습니다.", + "You do not have permission to post to this room": "이 방에서 글을 올릴 권한이 없습니다.", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s님에 의해 %(roomName)s에서 차단당했습니다.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s님이 이 방에 초대하셨습니다.", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s님에 의해 %(roomName)s에서 추방당했습니다.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "모든 기기에서 로그아웃되었고 더 이상 알림을 받지 않으실 거에요. 다시 알림을 받으시려면, 각 기기에 로그인해주세요.", + "You have disabled URL previews by default.": "기본으로 URL 미리보기를 사용 중지했습니다.", + "You have enabled URL previews by default.": "URL 미리보기를 기본으로 사용했습니다.", + "You have no visible notifications": "보여줄 수 있는 알림이 없습니다.", + "You may wish to login with a different account, or add this email to this account.": "다른 계정으로 로그인하거나, 이 이메일을 이 계정에 추가할 수도 있습니다.", + "You must register to use this functionality": "이 기능을 쓰시려면 계정을 등록하셔야 해요", + "You need to be able to invite users to do that.": "그러려면 사용자를 초대하실 수 있어야 해요.", + "You need to be logged in.": "로그인하셔야 해요.", + "You need to enter a user name.": "사용자 이름을 입력하셔야 해요.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "이메일 주소가 이 홈 서버의 매트릭스 ID와 관련이 없는 것 같습니다.", + "Your password has been reset": "비밀번호를 다시 설정했습니다.", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "비밀번호를 바꿨습니다. 다른 기기에서는 다시 로그인할 때까지 푸시 알림을 받지 않을 겁니다", + "You seem to be in a call, are you sure you want to quit?": "전화 중인데, 끊으시겠어요?", + "You seem to be uploading files, are you sure you want to quit?": "파일을 올리는 중인데, 그만두시겠어요?", + "You should not yet trust it to secure data": "안전한 자료를 위해서는 아직 믿으시면 안돼요", + "Your home server does not support device management.": "홈 서버가 기기 관리를 지원하지 않습니다.", + "Sun": "일", + "Mon": "월", + "Tue": "화", + "Wed": "수", + "Thu": "목", + "Fri": "금", + "Sat": "토", + "Jan": "1월", + "Feb": "2월", + "Mar": "3월", + "Apr": "4월", + "May": "5월", + "Jun": "6월", + "Jul": "7월", + "Aug": "8월", + "Sep": "9월", + "Oct": "10월", + "Nov": "11월", + "Dec": "12월", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(monthName)s %(day)s일 %(weekDayName)s요일 %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(fullYear)s년 %(monthName)s %(day)s일 %(weekDayName)s요일 %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s, %(time)s", + "Set a display name:": "별명 설정하기:", + "Upload an avatar:": "아바타 올리기:", + "This server does not support authentication with a phone number.": "이 서버는 전화번호 인증을 지원하지 않습니다.", + "Missing password.": "비밀번호가 없습니다.", + "Passwords don't match.": "비밀번호가 맞지 않아요.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "비밀번호가 너무 짧아요 (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "유효한 이메일 주소가 아니에요.", + "This doesn't look like a valid phone number.": "유효한 전화번호가 아니에요.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "사용자 이름은 문자, 숫자, 점, -(붙임표), _(밑줄 문자)만 쓸 수 있습니다.", + "An unknown error occurred.": "알 수 없는 오류가 일어났습니다.", + "I already have an account": "이미 계정이 있습니다.", + "An error occurred: %(error_string)s": "%(error_string)s 오류가 일어났습니다.", + "Topic": "주제", + "Make Moderator": "조정자 임명하기", + "Make this room private": "이 방을 비공개로 만들기", + "Share message history with new users": "메시지 기록을 새 사용자와 공유하기", + "Encrypt room": "암호화한 방", + "There are no visible files in this room": "이 방에는 보여줄 수 있는 파일이 없습니다.", + "Room": "방", + "Connectivity to the server has been lost.": "서버 연결이 끊어졌습니다.", + "Sent messages will be stored until your connection has returned.": "보내신 메시지는 다시 연결될 때까지 저장할 거에요.", + "(~%(count)s results)": { + "one": "(~%(count)s 결과)", + "other": "(~%(count)s 결과)" + }, + "Active call": "전화 중", + "bold": "굵은 획", + "italic": "기울임꼴", + "strike": "취소선", + "underline": "밑줄", + "code": "코드", + "quote": "인용", + "bullet": "글머리 기호", + "numbullet": "번호 매기기", + "Please select the destination room for this message": "이 메시지를 보낼 방을 골라주세요", + "New Password": "새 비밀번호", + "Start automatically after system login": "컴퓨터를 시작할 때 자동으로 실행하기", + "Desktop specific": "컴퓨터 설정", + "Analytics": "정보 분석", + "Options": "선택권", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot은 이 앱을 발전시키기 위해 익명으로 정보 분석을 수집합니다.", + "Passphrases must match": "암호가 일치해야 해요", + "Passphrase must not be empty": "암호를 입력해 주세요.", + "Export room keys": "방 키를 내보내기", + "Confirm passphrase": "암호 확인", + "File to import": "가져올 파일", + "You must join the room to see its files": "파일을 보려면 방에 들어가야만 해요", + "Reject all %(invitedRooms)s invites": "모든 %(invitedRooms)s의 초대를 거절하기", + "Start new chat": "새 대화 시작하기", + "Failed to invite": "초대하지 못했습니다.", + "Failed to invite user": "사용자를 초대하지 못했습니다.", + "Failed to invite the following users to the %(roomName)s room:": "다음 사용자들을 %(roomName)s 방으로 초대하지 못했습니다:", + "Confirm Removal": "삭제 확인", + "Unknown error": "알 수 없는 오류", + "Incorrect password": "맞지 않는 비밀번호", + "To continue, please enter your password.": "계속하시려면, 비밀번호를 입력해주세요.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "이 과정으로 암호화한 방에서 받은 메시지의 키를 로컬 파일로 내보낼 수 있습니다. 너중에 다른 매트릭스 클라이언트로 파일을 불러올 수 있기 때문에, 그 클라이언트에서 메시지를 해독할 수도 있죠.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "내보낸 파일이 있으면 누구든 암호화한 메시지를 해독해서 읽을 수 있으므로, 보안에 신경 써 주세요. 이런 이유로 인해, 아래에 암호를 입력해 내보낸 파일을 암호화하는 걸 추천합니다. 같은 암호를 사용해야만 자료를 불러올 수 있습니다.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "이 과정으로 전에 다른 매트릭스 클라이언트에서 내보낸 암호화 키를 불러올 수 있습니다. 그 다음에는 다른 클라이언트에서 해독할 수 있던 어떤 메시지라도 해독할 수 있습니다.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "내보낸 파일은 암호로 보호하고 있습니다. 파일을 해독하려면, 여기에 암호를 입력해주세요.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "이 이벤트를 제거(삭제)하길 원하세요? 방 이름을 삭제하거나 주제를 바꾸면, 다시 복귀될 수도 있습니다.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "이 기기를 믿을 수 있는지 인증하시려면, 다른 방법(예를 들자면 직접 만나거나 전화를 걸어서)으로 소유자 분에게 연락해, 사용자 설정에 있는 키가 아래 키와 같은지 물어보세요:", + "Device name": "기기 이름", + "Device Name": "기기 이름", + "Device key": "기기 열쇠", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "키가 동일하다면, 아래의 인증하기 버튼을 누르세요. 혹시 키가 다르다면, 이 기기가 중간자 공격을 받고 있는 중인 것이므로 블랙리스트에 올려야 합니다.", + "In future this verification process will be more sophisticated.": "이 인증 과정은 앞으로 더 정교하게 개선시키겠습니다.", + "Verify device": "기기 인증하기", + "I verify that the keys match": "열쇠가 맞는지 인증합니다", + "Unable to restore session": "세션을 복구할 수 없습니다.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "이전에 더 최근 버전의 Riot을 쓰셨다면, 이 버전과 맞지 않을 거에요. 창을 닫고 더 최근 버전으로 돌아가세요.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "인증되지 않은 기기를 블랙리스트에 올리고 있습니다. 메시지를 보내려면 인증해야 합니다.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "각 기기가 알맞은 소유자에게 속해 있는지 인증 과정을 거치길 추천하지만, 원하신다면 그러지 않고도 메시지를 다시 보내실 수 있습니다.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\"에 본 적이 없는 기기가 있습니다.", + "Unknown devices": "알 수 없는 기기", + "Unknown Address": "알 수 없는 주소", + "Unblacklist": "블랙리스트에서 빼기", + "Blacklist": "블랙리스트에 올리기", + "Unverify": "인증 취소", + "Verify...": "인증하기...", + "ex. @bob:example.com": "예. @bob:example.com", + "Add User": "사용자 추가", + "This Home Server would like to make sure you are not a robot": "이 홈 서버는 당신이 로봇이 아닌지 확인하고 싶다고 합니다.", + "Sign in with CAS": "CAS로 로그인 하기", + "Please check your email to continue registration.": "등록하시려면 이메일을 확인해주세요.", + "Token incorrect": "토큰이 안 맞아요", + "Please enter the code it contains:": "들어있던 코드를 입력해주세요:", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "이메일 주소를 정하지 않으면, 비밀번호를 다시 설정할 수 없습니다. 괜찮으신가요?", + "You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s로 등록할게요", + "Default server": "기본 서버", + "What does this mean?": "무슨 뜻인가요?", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "사용자 지정 서버 설정에서 다른 홈 서버 URL을 지정해 다른 매트릭스 서버에 로그인 할 수 있습니다.", + "This allows you to use this app with an existing Matrix account on a different home server.": "이를 통해 이 앱과 다른 홈 서버의 기존 매트릭스 계정을 함께 쓸 수 있습니다.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "사용자 지정 ID 서버를 설정할 수도 있지만 보통 그런 경우엔 이메일 주소를 기반으로 한 사용자와 상호작용이 막힐 거에요.", + "Custom server": "사용자 지정 서버", + "Home server URL": "홈 서버 URL", + "Identity server URL": "ID 서버 URL", + "Error decrypting audio": "음성 해독 오류", + "Error decrypting image": "사진 해독 오류", + "Error decrypting video": "영상 해독 오류", + "Add an Integration": "통합 추가", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "%(integrationsUrl)s에서 쓸 수 있도록 계정을 인증하려고 다른 사이트로 이동하고 있습니다. 계속하시겠어요?", + "Removed or unknown message type": "제거했거나 알 수 없는 메시지 유형", + "URL Previews": "URL 미리보기", + "Drop file here to upload": "올릴 파일을 여기에 놓으세요", + " (unsupported)": " (지원하지 않음)", + "Ongoing conference call%(supportedText)s.": "진행중인 전화 회의%(supportedText)s.", + "Online": "접속 중", + "Idle": "쉬는 중", + "Offline": "미접속", + "Updates": "업데이트", + "Check for update": "업데이트 확인", + "Start chatting": "대화하기", + "Start Chatting": "대화하기", + "Click on the button below to start chatting!": "대화하려면 아래 버튼을 누르세요!", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s님이 방 아바타를 로 바꿨습니다", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s님이 방 아바타를 제거했습니다.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s님이 %(roomName)s의 아바타를 바꿨습니다", + "Username available": "쓸 수 있는 사용자 이름", + "Username not available": "쓸 수 없는 사용자 이름", + "Something went wrong!": "문제가 생겼어요!", + "This will be your account name on the homeserver, or you can pick a different server.": "이건 홈 서버의 계정 이름이에요, 다른 서버를 고를 수도 있다는 거죠.", + "If you already have a Matrix account you can log in instead.": "매트릭스 계정을 가지고 계시면 로그인하실 수도 있죠.", + "Your browser does not support the required cryptography extensions": "필요한 암호화 확장 기능을 브라우저가 지원하지 않습니다", + "Not a valid Riot keyfile": "올바른 Riot 열쇠 파일이 아닙니다", + "Authentication check failed: incorrect password?": "검증 확인 실패: 비밀번호를 틀리셨나요?", + "Disable Peer-to-Peer for 1:1 calls": "1:1 통화할 때는 P2P 비활성화하기", + "Do you want to set an email address?": "이메일 주소를 설정하시겠어요?", + "This will allow you to reset your password and receive notifications.": "이렇게 하면 비밀번호를 다시 설정하고 알림을 받으실 수 있습니다.", + "To return to your account in future you need to set a password": "나중에 계정으로 돌아가려면 비밀번호를 설정하셔야 해요", + "Skip": "건너뛰기", + "Start verification": "인증 시작", + "Share without verifying": "인증하지 않고 공유하기", + "Ignore request": "요청 무시하기", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "암호화 열쇠를 요청하고 있는 새 기기 '%(displayName)s'를(을) 추가했습니다.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "인증되지 않은 기기 '%(displayName)s'가(이) 암호화 키를 요청하고 있습니다.", + "Encryption key request": "암호화 키 요청", + "Edit": "수정하기", + "Fetching third party location failed": "타사 위치를 불러오지 못했습니다.", + "A new version of Riot is available.": "Riot의 새 버전을 사용하실 수 있습니다.", + "Couldn't load home page": "홈 페이지를 불러올 수 없었습니다", + "All notifications are currently disabled for all targets.": "현재 모든 알림이 모든 대상에 대해 비활성화 돼 있습니다.", + "Uploading report": "보고를 올리는 중", + "Sunday": "일요일", + "Guests can join": "손님이 들어올 수 있습니다", + "Messages sent by bot": "봇이 보낸 메시지를 받을 때", + "Notification targets": "알림 대상", + "Failed to set direct chat tag": "직접 대화 태그를 설정하지 못했습니다.", + "Today": "오늘", + "Failed to get protocol list from Home Server": "홈 서버에서 프로토콜 목록을 얻지 못했습니다.", + "You are not receiving desktop notifications": "컴퓨터 알림을 받지 않고 있습니다", + "Friday": "금요일", + "Update": "업데이트", + "What's New": "새로운 점", + "Add an email address above to configure email notifications": "이메일 알림을 설정하기 위해 이메일 주소를 추가해주세요", + "Expand panel": "확장 패널", + "On": "켜기", + "Filter room names": "방 이름 찾기", + "Changelog": "바뀐 점", + "Waiting for response from server": "서버에서 응답을 기다리는 중", + "Leave": "떠나기", + "Advanced notification settings": "고급 알림 설정", + "delete the alias.": "가명을 지울게요.", + "To return to your account in future you need to set a password": "나중에 계정으로 돌아가려면 비밀번호 설정을 해야만 해요", + "Forget": "지우기", + "World readable": "세계에 보이기", + "Hide panel": "패널 숨기기", + "You cannot delete this image. (%(code)s)": "이 사진을 삭제하실 수 없습니다. (%(code)s)", + "Cancel Sending": "보내기 취소", + "Warning": "주의", + "This Room": "방", + "The Home Server may be too old to support third party networks": "타사 네트워크를 지원하기에는 홈 서버가 너무 오래된 걸 수 있어요.", + "Resend": "다시 보내기", + "Error saving email notification preferences": "이메일 알림을 설정하는 중에 오류가 났습니다.", + "Messages containing my display name": "내 별명이 포함된 메시지를 받을 때", + "Messages in one-to-one chats": "1:1 대화 메시지 받을 때", + "Unavailable": "이용할 수 없음", + "View Decrypted Source": "해독된 출처 보기", + "Send": "보내기", + "remove %(name)s from the directory.": "목록에서 %(name)s를(을) 제거했습니다.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "여기에 표시될 수 없는 규칙에 따르는 다음 키워드에 대한 알림:", + "Please set a password!": "비밀번호를 설정해주세요!", + "You have successfully set a password!": "비밀번호를 설정하셨어요!", + "An error occurred whilst saving your email notification preferences.": "이메일 알림 설정을 저장하는 중에 오류가 났습니다.", + "Source URL": "출처 URL", + "Failed to add tag %(tagName)s to room": "방에 %(tagName)s 태그를 달지 못했습니다.", + "Members": "구성원", + "No update available.": "업데이트가 없습니다.", + "Noisy": "소리", + "Files": "파일", + "Collecting app version information": "앱 버전 정보를 수집하는 중", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "방 별칭 %(alias)s를(을) 삭제하고 목록에서 %(name)s를(을) 제거하시겠어요?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "이런 식으로 로그아웃한 뒤 계정으로 돌아가, 다른 기기에서 로그인하실 수 있습니다.", + "Enable notifications for this account": "이 계정의 알림 사용하기", + "Directory": "목록", + "Search for a room": "방에서 찾기", + "Messages containing keywords": "키워드가 적힌 메시지", + "Room not found": "방을 찾지 못했습니다", + "Tuesday": "화요일", + "Enter keywords separated by a comma:": "키워드를 쉼표로 구분해 입력해주세요:", + "Search…": "찾기…", + "Remove %(name)s from the directory?": "목록에서 %(name)s를(을) 제거하시겠어요?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot은 많은 고급 브라우저 기능을 사용해요. 일부는 현재 브라우저에서 쓸 수 없거나 실험적이에요.", + "Developer Tools": "개발자 도구", + "Enable desktop notifications": "컴퓨터에서 알림 사용하기", + "Unnamed room": "이름없는 방", + "Remove from Directory": "목록에서 제거하기", + "Saturday": "토요일", + "Remember, you can always set an email address in user settings if you change your mind.": "잊지마세요, 마음이 바뀌면 언제라도 사용자 설정에서 이메일 주소를 바꾸실 수 있다는 걸요.", + "Direct Chat": "직접 대화하기", + "The server may be unavailable or overloaded": "서버가 사용 불가하거나 과부하가 걸렸을 수 있습니다.", + "Reject": "거절하기", + "Failed to set Direct Message status of room": "방의 쪽지 상태를 설정하지 못했습니다.", + "Monday": "월요일", + "All messages (noisy)": "모든 메시지 (크게)", + "Enable them now": "지금 켜기", + "Forward Message": "메시지 전달", + "Messages containing my user name": "내 사용자 이름이 적힌 메시지를 받을 때", + "Toolbox": "도구상자", + "Collecting logs": "로그 수집 중", + "more": "더 보기", + "(HTTP status %(httpStatus)s)": "(HTTP 상태 %(httpStatus)s)", + "All Rooms": "모든 방", + "Failed to get public room list": "공개한 방 목록을 얻지 못했습니다.", + "Quote": "인용하기", + "Failed to update keywords": "키워드를 갱신하지 못했습니다.", + "Send logs": "로그 보내기", + "All messages": "모든 메시지", + "Call invitation": "전화가 올 때", + "Downloading update...": "업데이트를 받는 중...", + "You have successfully set a password and an email address!": "비밀번호와 이메일 주소를 설정하셨어요!", + "What's new?": "새로운 점은?", + "Notify me for anything else": "모든 걸 알리기", + "When I'm invited to a room": "방에 초대받았을 때", + "Keywords": "키워드", + "Can't update user notification settings": "사용자 알림 설정을 갱신할 수 없습니다.", + "Notify for all other messages/rooms": "다른 모든 메시지/방 알리기", + "Unable to look up room ID from server": "서버에서 방 ID를 찾아볼 수 없습니다.", + "Couldn't find a matching Matrix room": "일치하는 매트릭스 방을 찾을 수 없었습니다", + "Invite to this room": "이 방에 초대하기", + "You cannot delete this message. (%(code)s)": "이 메시지를 삭제하실 수 없습니다. (%(code)s)", + "Thursday": "목요일", + "I understand the risks and wish to continue": "위험할 수 있는 걸 알고 계속하기를 바라요", + "Back": "돌아가기", + "Failed to change settings": "설정을 바꾸지 못했습니다.", + "Show message in desktop notification": "컴퓨터 알림에서 내용 보이기", + "Unhide Preview": "미리보기를 숨기지 않기", + "Unable to join network": "네트워크에 들어갈 수 없습니다.", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Riot이 아닌 다른 클라이언트에서 설정하셨을 수도 있습니다. Riot에서 바꿀 수는 없지만, 여전히 적용돼 있습니다.", + "Sorry, your browser is not able to run Riot.": "죄송합니다. 쓰고 계신 브라우저에서는 Riot를 사용할 수 없습니다.", + "Uploaded on %(date)s by %(user)s": "by %(user)s가 %(date)s에 올림", + "Messages in group chats": "그룹 대화 메시지를 받을 때", + "Yesterday": "어제", + "Error encountered (%(errorDetail)s).": "오류가 일어났습니다 (%(errorDetail)s).", + "Low Priority": "낮은 우선순위", + "Riot does not know how to join a room on this network": "Riot이 이 네트워크에서 방에 들어가는 법을 알 수 없습니다.", + "Set Password": "비밀번호 설정", + "Enable audible notifications in web client": "웹 클라이언트에서 알림 소리 사용하기", + "Off": "끄기", + "#example": "#예", + "Mentions only": "답만 하기", + "Failed to remove tag %(tagName)s from room": "방에서 %(tagName)s 태그를 제거하지 못했습니다.", + "Wednesday": "수요일", + "You can now return to your account after signing out, and sign in on other devices.": "이제 계정을 로그아웃하신 뒤에 계정으로 돌아가, 다른 기기에서 로그인할 수 있습니다.", + "Enable email notifications": "이메일로 알림 사용하기", + "Login": "로그인", + "No rooms to show": "보여줄 수 있는 방이 없습니다.", + "Download this file": "이 파일 받기", + "Thank you!": "감사합니다!", + "View Source": "출처 보기", + "Unable to fetch notification target list": "알림 대상 목록을 불러올 수 없습니다.", + "Collapse panel": "패널 접기", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "현재 쓰고 계신 브라우저에서는, 보고 느끼기에 응용 프로그램이 완전히 맞지 않거나, 일부 혹은 모든 기능이 작동하지 않을 수 있습니다. 어쨋든 사용하고 싶으시다면 계속할 수는 있지만, 부딛치는 모든 문제는 직접 해결하셔야 해요!", + "Checking for an update...": "업데이트를 확인하는 중...", + "There are advanced notifications which are not shown here": "여기에는 보여지지 않는 고급 알림이 있습니다.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s님이 별명을 %(displayName)s(으)로 바꿨습니다.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s가 방의 고정된 메시지를 바꿨습니다.", + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s님이 이름을 %(count)s번 바꿨습니다", + "one": "%(severalUsers)s님이 이름을 바꿨습니다" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s님이 이름을 %(count)s번 바꿨습니다", + "one": "%(oneUser)s님이 이름을 바꿨습니다" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s님이 아바타를 %(count)s번 바꿨습니다", + "one": "%(severalUsers)s님이 아바타를 바꿨습니다" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s님이 아바타를 %(count)s번 바꿨습니다", + "one": "%(oneUser)s님이 아바타를 바꿨습니다" + }, + "This setting cannot be changed later!": "이 설정은 나중에 바꿀 수 없습니다!", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "이전 버전 Riot의 데이터가 발견됐습니다. 이전 버전에서는 종단 간 암호화에 오작동을 일으켰을 겁니다. 이전 버전을 사용한 최근의 종단 간 암호화된 메시지는 이 버전에서 복호화가 불가능할 수 있습니다. 이 버전과 메시지를 주고받지 못할 수도 있습니다. 문제가 생긴다면 로그아웃하고 다시 로그인 해 보세요. 메시지 기록을 유지하고 싶다면 키를 내보냈다가 다시 불러오세요.", + "Hide display name changes": "별명 변경 내역 숨기기", + "This event could not be displayed": "이 이벤트는 표시될 수 없었습니다.", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s(%(userName)s)님이 %(dateTime)s에 봄", + "Banned by %(displayName)s": "%(displayName)s님이 차단함", + "Display your community flair in rooms configured to show it.": "커뮤니티 재능이 보이도록 설정된 방에서 커뮤니티 재능을 표시할 수 있습니다.", + "The user '%(displayName)s' could not be removed from the summary.": "사용자 %(displayName)s님을 요약에서 제거하지 못했습니다.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "이 방들은 커뮤니티 페이지에서 커뮤니티 구성원에게 보여집니다. 커뮤니티 구성원은 방을 클릭해 들어갈 수 있습니다.", + "Pinned Messages": "고정된 메시지", + "You're not currently a member of any communities.": "지금은 어떤 커뮤니티에도 속해 있지 않습니다.", + "Flair": "재능", + "Showing flair for these communities:": "이 커뮤니티에 재능을 공개 중:", + "This room is not showing flair for any communities": "이 방은 어떤 커뮤니티에도 재능을 보여주지 않습니다", + "Flair will appear if enabled in room settings": "방 설정에서 사용하면 재능이 나타날 겁니다.", + "Flair will not appear": "재능은 나타나지 않을 겁니다", + "The platform you're on": "당신이 사용 중인 플랫폼", + "The version of Riot.im": "Riot 버전", + "Whether or not you're logged in (we don't record your user name)": "로그인 돼 있는지(사용자 이름을 기록)", + "Your language of choice": "선택한 언어", + "Which officially provided instance you are using, if any": "(만일 있다면) 사용하고 있는 공식 프로그램", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Rich Text Editor의 Richtext mode를 사용하고 있는지", + "Your homeserver's URL": "홈 서버의 URL", + "Your identity server's URL": "ID 서버의 URL", + "e.g. %(exampleValue)s": "예시: %(exampleValue)s", + "Every page you use in the app": "앱에서 이용하는 모든 페이지", + "e.g. ": "예시: ", + "Your User Agent": "사용자 에이전트", + "Your device resolution": "기기 해상도", + "The information being sent to us to help make Riot.im better includes:": "Riot을 발전시키기 위해 저희에게 보내는 정보는 다음을 포함합니다:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "이 페이지에서 방, 사용자, 혹은 그룹 ID와 같은 식별 가능한 정보를 포함하는 부분이 있는 데이터는 서버에 보내지기 전에 제거됩니다.", + "Call Failed": "전화할 수 없었습니다", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "이 방에는 모르는 기기가 있습니다. 인증하지 않고 계속하면 전화를 도청할 수도 있을 겁니다.", + "Review Devices": "기기 검증하기", + "Call Anyway": "그냥 걸기", + "Answer Anyway": "그냥 받기", + "Call": "전화하기", + "Answer": "받기", + "Call in Progress": "전화 거는 중", + "A call is already in progress!": "이미 전화 걸고 계세요!", + "PM": "오후", + "AM": "오전", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s년 %(monthName)s %(day)s일 (%(weekDayName)s)", + "Who would you like to add to this community?": "이 커뮤니티에 누구를 추가하고 싶으세요?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "경고: 커뮤니티에 추가한 사람은 커뮤니티 ID를 아는 누구에게나 공개됩니다", + "Invite new community members": "새 커뮤니티 구성원 초대하기", + "Name or matrix ID": "이름이나 Matrix ID", + "Invite to Community": "커뮤니티에 초대하기", + "Which rooms would you like to add to this community?": "어떤 방을 이 커뮤니티에 추가하고 싶으세요?", + "Show these rooms to non-members on the community page and room list?": "이 방들을 구성원이 아닌 커뮤니티 페이지와 방 리스트에 공개할까요?", + "Add rooms to the community": "커뮤니티에 방 추가하기", + "Room name or alias": "방 이름 또는 별칭", + "Add to community": "커뮤니티에 추가하기", + "Failed to invite the following users to %(groupId)s:": "해당 사용자를 %(groupId)s에 초대하지 못했습니다:", + "Failed to invite users to community": "사용자를 커뮤니티에 초대하지 못했습니다", + "Failed to invite users to %(groupId)s": "%(groupId)s에 사용자를 초대하지 못했습니다", + "Failed to add the following rooms to %(groupId)s:": "%(groupId)s에 해당 방을 추가하지 못했습니다:", + "Restricted": "제한됨", + "Unable to create widget.": "위젯을 만들지 못합니다.", + "Missing roomId.": "roomID가 빠졌습니다.", + "You are not in this room.": "이 방의 구성원이 아닙니다.", + "You do not have permission to do that in this room.": "이 방에서 그걸 할 수 있는 권한이 없습니다.", + "Changes colour scheme of current room": "현재 방의 색 구성 바꾸기", + "Sets the room topic": "방 주제 설정하기", + "Unbans user with given id": "주어진 ID로 사용자 차단 해제하기", + "Ignores a user, hiding their messages from you": "사용자 무시하고, 메시지 보지 말기", + "Ignored user": "무시당한 사용자", + "You are now ignoring %(userId)s": "%(userId)s님을 이제 무시합니다", + "Stops ignoring a user, showing their messages going forward": "사용자를 그만 무시하고 이제부터 메시지 보기", + "Unignored user": "무시하지 않게 된 사용자", + "You are no longer ignoring %(userId)s": "%(userId)s님을 더 이상 무시하고 있지 않습니다", + "Define the power level of a user": "사용자의 권한 등급 정의하기", + "Opens the Developer Tools dialog": "개발자 도구 대화 열기", + "Verifies a user, device, and pubkey tuple": "사용자, 기기, 그리고 공개키 튜플 인증하기", + "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s님이 수정한 %(widgetName)s 위젯", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s님이 추가한 %(widgetName)s 위젯", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s님이 제거한 %(widgetName)s 위젯", + "Remove avatar": "아바타 제거하기", + "To remove other users' messages, you must be a": "다른 사용자의 메시지를 제거하기 위해서는, 당신은 -가 돼야 한다", + "Message removed by %(userId)s": "%(userId)s님에 의해 제거된 메시지", + "Message removed": "메시지가 제거됐습니다", + "Remove from community": "커뮤니티에서 제거하기", + "Remove this user from community?": "이 사용자를 커뮤니티에서 제거하시겠어요?", + "Failed to remove user from community": "유저를 커뮤니티에서 제거하지 못했습니다", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "확실히 %(roomName)s를(을) %(groupId)s로부터 제거하고 싶으세요?", + "Removing a room from the community will also remove it from the community page.": "방을 커뮤니티로부터 삭제하면 커뮤니티 페이지에서도 제거됩니다.", + "Failed to remove room from community": "커뮤니티로부터 방을 제거하지 못했습니다", + "Failed to remove '%(roomName)s' from %(groupId)s": "%(roomName)s를(을) %(groupId)s(으)로부터 제거하지 못했습니다.", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s님과 %(count)s명 더 입력하는 중", + "one": "%(names)s님 외 1명이 입력하는 중" + }, + "Message Pinning": "메시지 고정", + "Jitsi Conference Calling": "Jitsi 회의 전화", + "Disable Emoji suggestions while typing": "입력 중에는 이모지 추천 비활성화하기", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "저희는 프라이버시를 중요하게 여기기 때문에, 그 어떤 개인적이거나 특정할 수 있는 정보도 정보 분석을 위해 수집하지 않습니다.", + "Send analytics data": "정보 분석 데이터 보내기", + "Learn more about how we use analytics.": "저희가 어떻게 정보 분석을 이용하는지 알아보세요.", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "디버그 로그는 사용자 이름, 방문한 방이나 그룹의 ID나 별칭, 그리고 다른 사용자의 사용자 이름을 포함한 앱 이용 데이터를 포함합니다. 메시지는 포함하지 않습니다.", + "Debug Logs Submission": "디버그 로그 제출", + "Submit debug logs": "디버그 로그 전송하기", + "Select devices": "기기 선택하기", + "Enable inline URL previews by default": "기본으로 바로 URL 미리보기 사용하기", + "Always show encryption icons": "암호화 아이콘을 언제나 보여주기", + "Enable automatic language detection for syntax highlighting": "구문 강조를 위해 자동 언어 감지 사용하기", + "Hide avatars in user and room mentions": "사용자와 방 언급할 때 아바타 숨기기", + "Disable big emoji in chat": "대화에서 큰 이모지 비활성화하기", + "Automatically replace plain text Emoji": "일반 텍스트로 된 이모지 자동으로 변환하기", + "Mirror local video feed": "보고 있는 비디오 전송 상태 비추기", + "Disable Community Filter Panel": "커뮤니티 필터판 비활성화하기", + "Hide avatar changes": "아바타 변경 내역 숨기기", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "커뮤니티 이름아바타 변경 내역은 최장 30분까지 다른 사용자가 보지 못할 수 있습니다.", + "Delete %(count)s devices": { + "one": "기기 지우기", + "other": "%(count)s개 기기 지우기" + }, + "Addresses": "주소", + "Invalid community ID": "잘못된 커뮤니티 ID입니다", + "'%(groupId)s' is not a valid community ID": "\"%(groupId)s\"는 바른 커뮤니티 ID가 아닙니다", + "New community ID (e.g. +foo:%(localDomain)s)": "새 커뮤니티 ID(예시: +foo:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "이 방에 참여한 분에게는 URL 미리보기가 기본입니다.", + "URL previews are disabled by default for participants in this room.": "이 방에 참여한 분에게는 URL 미리보기가 기본으로 비활성화 돼 있습니다.", + "Cannot add any more widgets": "더 이상 위젯을 추가할 수 없습니다", + "The maximum permitted number of widgets have already been added to this room.": "이미 이 방에는 허용된 최대 수의 위젯이 추가됐습니다.", + "Add a widget": "위젯 추가하기", + "%(senderName)s sent an image": "%(senderName)s가 이미지를 보냈습니다", + "%(senderName)s sent a video": "%(senderName)s가 비디오를 보냈습니다", + "%(senderName)s uploaded a file": "%(senderName)s가 파일을 보냈습니다", + "Key request sent.": "키 요청을 보냈습니다.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "당신의 다른 기기에 이 메시지를 읽기 위한 키가 없다면 메시지를 해독할 수 없을 겁니다.", + "Encrypting": "암호화 중", + "Encrypted, not sent": "암호화 됨, 보내지지 않음", + "Disinvite this user?": "이 사용자에 대한 초대를 취소할까요?", + "Kick this user?": "이 사용자를 추방할까요?", + "Unban this user?": "이 사용자를 차단 해제할까요?", + "%(duration)ss": "%(duration)s초", + "%(duration)sm": "%(duration)s분", + "%(duration)sh": "%(duration)s시간", + "%(duration)sd": "%(duration)s일", + "Online for %(duration)s": "%(duration)s 동안 온라인", + "Idle for %(duration)s": "%(duration)s 동안 대기 중", + "Offline for %(duration)s": "%(duration)s 동안 오프라인", + "Unknown for %(duration)s": "%(duration)s 동안 어떤지 모름", + "Unknown": "모름", + "Replying": "답장 중", + "Loading...": "로딩 중...", + "Unpin Message": "메시지 고정 해제하기", + "No pinned messages.": "고정된 메시지가 없습니다.", + "At this time it is not possible to reply with an emote.": "지금은 이모트로 답장할 수 없습니다.", + "Send a message (unencrypted)…": "(암호화 안 된) 메시지를 보내세요…", + "Send an encrypted message…": "메시지를 보내세요…", + "Unable to reply": "답장할 수 없습니다", + "Send an encrypted reply…": "답장을 보내세요…", + "Send a reply (unencrypted)…": "(암호화 안 된) 답장을 보내세요…", + "User Options": "사용자 옵션", + "Share Link to User": "사용자에게 링크 공유하기", + "Invite": "초대하기", + "Mention": "언급하기", + "Ignore": "무시하기", + "Unignore": "그만 무시하기", + "Ignored Users": "무시된 사용자", + "Demote": "강등하기", + "Demote yourself?": "자신을 강등하시겠어요?", + "Ban this user?": "이 사용자를 차단할까요?", + "To ban users, you must be a": "사용자를 차단하기 위해서 필요한 권한:", + "were banned %(count)s times": { + "other": "님은 %(count)s번 차단됐습니다", + "one": "님은 차단됐습니다" + }, + "was banned %(count)s times": { + "other": "님은 %(count)s번 차단됐습니다", + "one": "님은 차단됐습니다" + }, + "were unbanned %(count)s times": { + "other": "님은 %(count)s번 차단 해제됐습니다", + "one": "님은 차단 해제됐습니다" + }, + "was unbanned %(count)s times": { + "other": "님은 %(count)s번 차단 해제됐습니다", + "one": "는 차단 해제됐습니다" + }, + "Drop here to restore": "복원하려면 여기에 떨어뜨리세요", + "Drop here to favourite": "즐겨찾으시려면 여기에 떨어뜨리세요.", + "Drop here to tag direct chat": "직접 대화를 태그하려면 여기에 떨어뜨리세요.", + "You have entered an invalid address.": "잘못된 주소를 입력했습니다.", + "This room is not public. You will not be able to rejoin without an invite.": "이 방은 공개되지 않았습니다. 초대 없이는 다시 들어올 수 없습니다.", + "Enable URL previews for this room (only affects you)": "이 방에 대해 URL 미리보기 사용하기", + "Enable URL previews by default for participants in this room": "이 방에 참여한 모두에게 기본으로 URL 미리보기 사용하기", + "Enable widget screenshots on supported widgets": "지원되는 위젯에 대해 위젯 스크린샷 사용하기", + "Hide join/leave messages (invites/kicks/bans unaffected)": "들어오거나 떠나는 메시지 숨기기(초대/추방/차단은 그대로)", + "Show empty room list headings": "빈 방 목록 표제 보이게 하기", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "누군가 메시지에 URL을 넣으면 URL 미리보기가 보여져 웹사이트에서 온 제목, 설명, 그리고 이미지 등 그 링크에 대해 더 알 수 있습니다.", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "지금 이 방처럼, 암호화된 방에서는 홈 서버(미리보기가 만들어지는 곳)에서 이 방에서 보여지는 링크에 대해 알 수 없도록 URL 미리보기가 기본적으로 비활성화돼 있습니다.", + "Your key share request has been sent - please check your other devices for key share requests.": "키 공유 요청이 보내졌습니다. 키 공유 요청을 다른 기기에서 받아주세요.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "자동으로 다른 기기에 키 공유 요청을 보냈습니다. 다른 기기에서 키 공유 요청을 거절하거나 묵살하셨으면, 여기를 눌러 이번 세션에 다시 키를 요청하세요.", + "Re-request encryption keys from your other devices.": "다른 기기로부터 암호화 키 재요청", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "자기 자신을 강등시키는 것은 다시 되돌릴 수 없고, 자신이 마지막으로 이 방에서 특권을 가진 사용자라면 다시 특권을 얻는 건 불가능합니다.", + "Jump to read receipt": "수신 확인으로 건너뛰기", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "현재로서는 파일을 답장할 수 없으므로 답장이 아닌 파일로 보내질 겁니다.", + "Jump to message": "메세지로 건너뛰기", + "Share room": "방 공유하기", + "Drop here to demote": "강등하려면 여기에 떨어뜨리세요", + "Community Invites": "커뮤니티 초대", + "You have no historical rooms": "보관하고 있는 방이 없습니다", + "You have been kicked from this room by %(userName)s.": "%(userName)s님에 의해 추방당했습니다.", + "You have been banned from this room by %(userName)s.": "%(userName)s님에 의해 이 방에서 차단당했습니다.", + "You are trying to access a room.": "방에 접근하고 있습니다.", + "To change the room's avatar, you must be a": "방의 아바타를 바꾸려면, -여야 합니다", + "To change the room's name, you must be a": "방 이름을 바꾸려면, -여야 합니다.", + "To change the room's main address, you must be a": "방의 메인 주소를 바꾸려면, -여야 합니다.", + "Members only (since they joined)": "구성원만(구성원들이 참여한 시점부터)", + "%(severalUsers)sjoined %(count)s times": { + "one": "%(severalUsers)s님이 들어왔습니다", + "other": "%(severalUsers)s님이 %(count)s번 들어왔습니다" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s님이 %(count)s번 들어왔습니다", + "one": "%(oneUser)s님이 들어왔습니다" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s님이 %(count)s번 들어왔다가 나갔습니다", + "one": "%(severalUsers)s님이 들어왔다가 나갔습니다" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s님이 %(count)s번 들어왔다가 나갔습니다", + "one": "%(oneUser)s님이 들어왔다가 나갔습니다" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "one": "%(severalUsers)s님이 나갔다가 다시 들어왔습니다", + "other": "%(severalUsers)s님이 떠났으며 %(count)s 번 다시 참여했습니다." + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s님이 %(count)s번 나갔다가 다시 들어왔습니다", + "one": "%(oneUser)s님이 나갔다가 다시 들어왔습니다" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s님이 %(count)s번 나갔습니다", + "one": "%(severalUsers)s님이 나갔습니다" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s님이 %(count)s번 나갔다가 들어왔습니다", + "one": "%(oneUser)s님이 나갔습니다" + }, + "%(items)s and %(count)s others": { + "one": "%(items)s, 그리고 하나 더." + }, + "A call is currently being placed!": "전화 걸고 있습니다.", + "Permission Required": "권한이 필요합니다.", + "A conference call could not be started because the intgrations server is not available": "서버가 연결되지 않아 전화 회의를 시작하지 못했습니다.", + "You do not have permission to start a conference call in this room": "이 방에서는 전화 회의를 시작할 권한이 없습니다.", + "deleted": "삭제됐습니다.", + "underlined": "밑줄 쳤습니다.", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

커뮤니티 페이지를 위한 HTML

\n

\n 커뮤니티에 새 구성원을 소개할 때 길게 설명하거나\n 좀 중요한 링크로 배포할 수 있습니다.\n

\n

\n 'img' 태그를 사용할 수도 있습니다.\n

\n", + "Copied!": "복사했습니다!", + "Failed to copy": "복사하지 못했습니다.", + "Show Stickers": "스티커 보내기", + "Hide Stickers": "스티커 숨기기", + "Stickerpack": "스티커 팩", + "Add a stickerpack": "스티커 팩 추가하기", + "You don't currently have any stickerpacks enabled": "사용하고 있는 스티커 팩이 없습니다.", + "An email has been sent to %(emailAddress)s": "%(emailAddress)s에 이메일을 보냈습니다.", + "Code": "코드", + "The email field must not be blank.": "이메일을 써 주십시오.", + "The user name field must not be blank.": "사용자 이름을 써 주십시오.", + "The phone number field must not be blank.": "전화번호를 써 주십시오.", + "The password field must not be blank.": "비밀번호를 써 주십시오.", + "Username on %(hs)s": "%(hs)s 사용자 이름", + "%(serverName)s Matrix ID": "%(serverName)s의 Matrix ID", + "Disinvite this user from community?": "이 사용자에게 보낸 커뮤니티 초대를 취소할까요?", + "Failed to withdraw invitation": "초대를 취소하지 못했습니다.", + "Filter community members": "커뮤니티 구성원 찾기", + "Filter results": "검색 결과", + "Filter community rooms": "커뮤니티 방 찾기", + "Clear filter": "검색 초기화하기", + "Did you know: you can use communities to filter your Riot.im experience!": "모르고 계셨다면: Riot에서의 경험을 커뮤니티 별로 정리할 수 있어요!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "필터를 사용하고 싶으시다면, 커뮤니티 아바타를 스크린 왼쪽의 필터판에 끌어다 놓으면 됩니다. 언제든지, 필터판에 있는 아바타를 누르면 그 커뮤니티와 괸련된 방과 사람만 볼 수 있습니다.", + "Muted Users": "음소거된 사용자", + "Delete Widget": "위젯 지우기", + "An error ocurred whilst trying to remove the widget from the room": "방에서 위젯을 제거하는 동안 에러가 났습니다.", + "Failed to remove widget": "위젯을 제거하지 못했습니다.", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "위젯을 삭제하면 이 방의 모든 사용자에게도 제거됩니다. 정말 이 위젯을 삭제하고 싶으세요?", + "The room '%(roomName)s' could not be removed from the summary.": "'%(roomName)s' 방을 요약에서 제거하지 못했습니다.", + "Failed to remove the room from the summary of %(groupId)s": "방을 %(groupId)s의 요약에서 제거하지 못했습니다.", + "Log out and remove encryption keys?": "로그아웃하고 암호화 열쇠를 제거하시겠어요?", + "Failed to remove a user from the summary of %(groupId)s": "한 사용자를 %(groupId)s의 요약에서 제거하지 못했습니다.", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "계정을 일시적으로 사용할 수 없게 됩니다. 로그인할 수 없고, 누구도 같은 사용자 ID를 다시 등록할 수 없습니다. 들어가 있던 모든 방에서 나오게 되고, ID 서버에서 계정 상세 정보도 제거됩니다. 이 결정은 돌이킬 수 없습니다.", + "Yes, I want to help!": "네, 돕고 싶어요!", + "NOTE: Apps are not end-to-end encrypted": "참고: 앱은 종단 간 암호화가 돼 있지 않습니다.", + "Integrations Error": "통합 에러", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Github를 통해 버그를 신고하셨다면, 디버그 로그가 문제를 해결하는데 도움을 줍니다. 디버그 로그에는 사용자 이름과 방문했던 방이나 그룹의 ID와 별칭, 그리고 다른 사용자의 사용자 이름이 포함됩니다. 대화 내용은 포함되지 않습니다.", + "Warning: This widget might use cookies.": "경고: 이 위젯은 쿠키를 사용할 수도 있습니다.", + "Delete widget": "위젯 삭제하기", + "Minimize apps": "앱 최소화하기", + "Reload widget": "위젯 다시 시작하기", + "Popout widget": "위젯 팝업", + "Picture": "사진", + "Communities": "커뮤니티", + "%(severalUsers)srejected their invitations %(count)s times": { + "one": "%(severalUsers)s님이 초대를 거절했습니다." + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s님이 초대를 %(count)s번 거절했습니다.", + "one": "%(oneUser)s님이 초대를 거절했습니다." + }, + "were invited %(count)s times": { + "other": "님이 %(count)s번 초대받았습니다.", + "one": "님이 초대받았습니다." + }, + "%(user)s is a %(userRole)s": "%(user)s님은 %(userRole)s입니다.", + "To notify everyone in the room, you must be a": "방의 모두에게 알림을 보내기 위한 권한:", + "To kick users, you must be a": "사용자를 추방하기 위한 권한:", + "To configure the room, you must be a": "방을 설정하기 위한 권한:", + "To invite users into the room, you must be a": "사용자를 방에 초대하기 위한 권한:", + "To send messages, you must be a": "메시지를 보내기 위한 권한:", + "To modify widgets in the room, you must be a": "방의 위젯을 변경하기 위한 권한:", + "To change the topic, you must be a": "주제를 바꾸기 위한 권한:", + "To change the permissions in the room, you must be a": "방에서의 권한을 바꾸기 위한 권한:", + "To change the room's history visibility, you must be a": "방의 기록을 보이게 하기 위한 권한:", + "inline-code": "인라인 코드", + "block-quote": "인용 블록", + "bulleted-list": "글머리 기호 목록", + "numbered-list": "숫자 목록", + "To send events of type , you must be a": " 종류의 이벤트를 보내기 위한 권한:", + "Event Content": "이벤트 내용", + "Event Type": "이벤트 종류", + "Failed to send custom event.": "맞춤 이벤트를 보내지 못했습니다.", + "Event sent!": "이벤트를 보냈어요!", + "You must specify an event type!": "이벤트 종류를 명시해야 해요!", + "Send Custom Event": "맞춤 이벤트 보내기", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "답장 온 이벤트를 가져오지 못했습니다. 이벤트가 아예 없거나, 이벤트를 볼 권한이 없으신 것 같습니다.", + "Autocomplete Delay (ms):": "자동입력 지연 시간(ms):", + "Light theme": "밝은 테마", + "Dark theme": "어두운 테마", + "Status.im theme": "Status.im식 테마", + "A text message has been sent to %(msisdn)s": "%(msisdn)s님에게 문자 메시지를 보냈습니다.", + "Something went wrong when trying to get your communities.": "커뮤니티를 받는 중에 뭔가 잘못됐습니다.", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "익명의 이용자 데이터를 보내 Riot.im의 발전을 도와주세요. 이 과정에서 쿠키를 사용합니다.", + "Allow": "허가하기", + "Visible to everyone": "모두에게 보여짐", + "Only visible to community members": "커뮤니티 구성원에게만 보여짐", + "Visibility in Room List": "방 목록에서의 가시성", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "%(groupId)s에 있는 %(roomName)s 방에서의 가시성이 업데이트 되지 않았습니다.", + "was invited %(count)s times": { + "one": "님이 초대됐습니다.", + "other": "님이 %(count)s번 초대됐습니다." + }, + "collapse": "줄이기", + "expand": "늘이기", + "Matrix ID": "Matrix ID", + "email address": "이메일 주소", + "Matrix Room ID": "Matrix 방 ID", + "Preparing to send logs": "로그 보내려고 준비 중", + "Logs sent": "로그 보냈습니다.", + "Failed to send logs: ": "다음 로그를 보내지 못했습니다: ", + "GitHub issue link:": "GitHub 이슈 링크:", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot의 버그는 Github에서 트랙됩니다. Github 이슈 만들기", + "Notes:": "참고:", + "Community IDs cannot be empty.": "커뮤니티 ID를 입력해 주세요.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "커뮤니티 ID에는 a-z, 0-9, 혹은 '=_-.'만 사용할 수 있습니다.", + "Something went wrong whilst creating your community": "커뮤니티를 생성하는 동안 뭔가 잘못됐습니다.", + "Create Community": "커뮤니티 만들기", + "Community Name": "커뮤니티 이름", + "Example": "예시", + "Community ID": "커뮤니티 ID", + "example": "예시", + "Create": "만들기", + "Advanced options": "고급 설정", + "Block users on other matrix homeservers from joining this room": "다른 Matrix 홈 서버에서 이 방에 들어오려는 사용자 막기", + "Failed to indicate account erasure": "계정이 지워졌다는 것을 표시하지 못했습니다.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "계정을 비활성화한다고 해서 보내셨던 메시지가 기본으로 지워지는 건 아닙니다. 저희가 갖고 있는 메시지를 지우시려면 밑의 박스를 눌러주세요.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "다른 사람이 아무도 없군요! 다른 사람을 초대하거나 방이 비었다는 걸 그만 알려드릴까요?", + "To continue, please enter your password:": "계속하려면 비밀번호를 입력해 주세요:", + "password": "비밀번호", + "Refresh": "새로고침", + "To get started, please pick a username!": "시작하시려면, 사용자 이름을 골라주세요!", + "Share Room": "방 공유하기", + "Share User": "사용자 공유하기", + "Share Community": "커뮤니티 공유하기", + "Share Room Message": "방 메시지 공유하기", + "Link to selected message": "선택한 메시지로 연결하기", + "COPY": "복사", + "Unable to reject invite": "초대를 거절하지 못했습니다.", + "Reply": "답장", + "Pin Message": "메시지 고정하기", + "Share Message": "메시지 공유하기", + "Collapse Reply Thread": "이어지는 답장 줄이기", + "View Community": "커뮤니티 보기", + "Please install Chrome or Firefox for the best experience.": "크롬이나 파이어폭스를 설치하면 가장 좋은 경험을 하실 수 있습니다.", + "Safari and Opera work too.": "사파리오페라도 가능합니다.", + "Add rooms to the community summary": "커뮤니티 요약에 방 추가하기", + "Everyone": "모두", + "were kicked %(count)s times": { + "other": "님은 %(count)s번 추방당했습니다.", + "one": "님은 추방당했습니다." + }, + "was kicked %(count)s times": { + "other": "님은 %(count)s번 추방당했습니다.", + "one": "님은 추방당했습니다." + }, + "Custom of %(powerLevel)s": "", + "And %(count)s more...": { + "other": "%(count)s개 더..." + }, + "Add a User": "사용자 추가하기", + "Failed to upload image": "이미지를 업로드하지 못했습니다.", + "Failed to update community": "커뮤니티를 업데이트하지 못했습니다.", + "Unable to accept invite": "초대를 승락하지 못했습니다.", + "Unable to join community": "커뮤니티에 들어갈 수 없습니다.", + "Leave Community": "커뮤니티 나가기", + "Leave %(groupName)s?": "%(groupName)s를(을) 나가시겠어요?", + "Unable to leave community": "커뮤니티를 나갈 수 없습니다.", + "Community Settings": "커뮤니티 설정", + "Add rooms to this community": "이 커뮤니티에 방 추가하기", + "Featured Rooms:": "추천하는 방:", + "Featured Users:": "추천하는 사용자:", + "Join this community": "이 커뮤니티에 들어가기", + "Leave this community": "이 커뮤니티에서 나오기", + "%(inviter)s has invited you to join this community": "%(inviter)s님이 이 커뮤니티에 초대했습니다.", + "You are an administrator of this community": "이 커뮤니티의 관리자이십니다.", + "You are a member of this community": "이 커뮤니티의 구성원이십니다.", + "Who can join this community?": "누가 이 커뮤니티에 들어올 수 있나요?", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "커뮤니티에 긴 설명, 즉 커뮤니티 구성원에게 보여줄 HTML 페이지가 없습니다.
여기를 눌러 설정을 열고 설명을 부여하세요!", + "Long Description (HTML)": "긴 설명(HTML)", + "Description": "설명", + "Community %(groupId)s not found": "%(groupId)s 커뮤니티를 찾지 못했습니다.", + "This Home server does not support communities": "이 홈 서버는 커뮤니티를 지원하지 않습니다.", + "Failed to load %(groupId)s": "%(groupId)s를 받지 못했습니다.", + "Can't leave Server Notices room": "서버 알림 방을 떠날 수 없습니다.", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "이 방은 홈 서버로부터 중요한 메시지를 받는 데 쓰이므로 떠나실 수 없습니다.", + "Terms and Conditions": "이용 약관", + "Review terms and conditions": "이용 약관 읽기", + "Old cryptography data detected": "오래된 암호 데이터를 발견했습니다.", + "Your Communities": "속한 커뮤니티", + "Create a new community": "새 커뮤니티 만들기", + "Error whilst fetching joined communities": "속한 커뮤니티를 받는 중, 에러가 났습니다.", + "Room Notification": "방 알림", + "Notify the whole room": "방 모두에게 알리기", + "Sign in to get started": "시작하시려면 로그인하세요.", + "Try the app first": "앱을 먼저 써 보세요.", + "This homeserver doesn't offer any login flows which are supported by this client.": "이 홈 서버는 이 클라이언트에서 지원되는 로그인 방식을 지원하지 않습니다.", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "홈 서버 %(homeserverDomain)s를(을) 계속 사용하기 위해서는 저희 이용 약관을 읽어보시고 동의하셔야 합니다.", + "State Key": "상태 키", + "Send Account Data": "계정 정보 보내기", + "Loading device info...": "기기 정보 받는 중...", + "Clear Storage and Sign Out": "저장소 지우고 로그아웃하기", + "Send Logs": "로그 보내기", + "We encountered an error trying to restore your previous session.": "저번 활동을 복구하던 중 에러가 났습니다.", + "Add to summary": "요약에 추가하기", + "Which rooms would you like to add to this summary?": "이 요약에 어떤 방을 추가하시겠어요?", + "Add a Room": "방 추가하기", + "Add users to the community summary": "커뮤니티 요약에 사용자 추가하기", + "Who would you like to add to this summary?": "이 요약에 누구를 추가하고 싶으세요?", + "Link to most recent message": "가장 최근 메시지로 링크 걸기", + "Registration Required": "계정 등록이 필요합니다.", + "You need to register to do this. Would you like to register now?": "계정을 등록해야합니다. 지금 계정을 만드시겠습니까?", + "This homeserver has hit its Monthly Active User limit.": "이 홈서버는 월간 활성 이용자수 한계에 도달했습니다.", + "Please contact your service administrator to continue using the service.": "서비스를 계속 사용하려면 서비스 관리자에게 연락하세요.", + "Unable to connect to Homeserver. Retrying...": "홈서버에 연결할 수 없습니다. 다시 시도하는 중...", + "Please contact your homeserver administrator.": "홈서버 관리자에게 연락하세요.", + "Increase performance by only loading room members on first view": "최초 접속 시의 방 인원만 불러와 성능 향상", + "This room has been replaced and is no longer active.": "이 방은 대체되었으며 더 사용할 수 없습니다.", + "The conversation continues here.": "이 대화는 여기서 이어가세요.", + "System Alerts": "시스템 알림", + "Upgrade room to version %(ver)s": "%(ver)s 버전으로 방을 업그레이드", + "Members only (since the point in time of selecting this option)": "구성원만(이 설정을 선택한 시점부터)", + "Members only (since they were invited)": "구성원만(구성원이 초대받은 시점부터)", + "Room version number: ": "방 버전 넘버: ", + "There is a known vulnerability affecting this room.": "이 방에 영향을 미치는 알려진 취약점이 있습니다.", + "Only room administrators will see this warning": "방 관리자만이 이 경고를 볼 수 있습니다.", + "This room is a continuation of another conversation.": "이 방은 다른 대화방의 연장선입니다.", + "Click here to see older messages.": "여길 눌러 오래된 메시지를 보세요.", + "Robot check is currently unavailable on desktop - please use a web browser": "로봇 확인은 현재 PC에서는 사용할 수 없습니다 - 웹 브라우저를 사용해주세요.", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "익명의 이용자 데이터를 보내 Riot.im의 발전을 도와주세요. 이 과정에서 쿠키를 사용합니다 (우리의 쿠키 정책을 살펴보세요).", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "이 홈서버는 월간 활성 이용자수 한계에 도달했기 때문에 일부 유저는 로그인할 수 없습니다.", + "Do you want to load widget from URL:": "URL에서 위젯을 불러오시겠습니까:", + "Revoke widget access": "위젯 접속 거부", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "In reply to ": "답장하기 ", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "계정을 비활성화한다면 보냈던 모든 메시지는 잊어버리세요 (경고: 이후 이용자들은 불완전한 대화 목록을 볼 수 있을 겁니다)", + "Explore Account Data": "계정 자료 탐색하기", + "Updating Riot": "Riot 업데이트중", + "Upgrade this room to version %(version)s": "이 방을 %(version)s 버전으로 업그레이드", + "Upgrade Room Version": "방 버전 업그레이드", + "Create a new room with the same name, description and avatar": "이름, 설명, 아바타가 같은 새 방 만들기", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "이전 버전의 방에서 말하는 이용자를 중단시키고, 새 방으로 이동하라는 메시지를 표시합니다.", + "Put a link back to the old room at the start of the new room so people can see old messages": "사람들이 오래된 메시지를 볼 수 있게 새 방의 시작 부분에 오래된 방으로 가는 링크를 놓습니다.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "브라우저 저장소를 청소한다면 문제가 해결될 수도 있지만, 암호하된 대화 기록을 읽을 수 없게 됩니다.", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "이용자와 방을 같이 묶는 커뮤니티를 만들어보세요! Matrix 세계에서 당신의 공간을 표시하는 사용자정의 홈페이지도 만드세요.", + "%(count)s Members": { + "other": "", + "one": "" + }, + "Invite to this community": "이 커뮤니티에 초대하기", + "You can't send any messages until you review and agree to our terms and conditions.": "우리의 약관을 읽고 동의하시기 전까지는 메시지를 보낼 수 없습니다.", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "이 홈서버가 월간 이용자수 한계에 도달했기 때문에 메시지를 보낼 수 없었습니다. 서비스를 계속 이용하려면 서비스 관리자에게 연락하세요.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "지금 전부 다시보내기 or 전부 취소하기. 각 메시지를 골라 다시 보내거나 취소할 수도 있습니다.", + "one": "지금 메시지 다시보내기 혹은 메시지 취소하기." + }, + "Submit Debug Logs": "디버그 로그 제출", + "No Audio Outputs detected": "오디오 출력을 감지하지 못했습니다.", + "Audio Output": "오디오 출력", + "Please contact your service administrator to continue using this service.": "서비스를 계속 이용하려면 서비스 관리자에게 연락하세요.", + "An email address is required to register on this homeserver.": "이 홈서버에 등록하려면 이메일 주소가 필요합니다.", + "A phone number is required to register on this homeserver.": "이 홈서버에 등록하려면 전화번호가 필요합니다.", + "Riot Desktop on %(platformName)s": "%(platformName)s PC용 Riot", + "Riot is not supported on mobile web. Install the app?": "”Riot은 모바일 사이트를 지원하지 않습니다. 앱을 설치하시겠어요?", + "Unknown device": "알 수 없는 장치", + "Welcome to Riot.im": "Riot에 오신 걸 환영해요", + "Chat with Riot Bot": "Riot 봇과 대화하기", + "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s의 %(browserName)s을 통한 %(appName)s", + "You need to be using HTTPS to place a screen-sharing call.": "화면 공유 전화를 걸려면 HTTPS를 사용해야 합니다.", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "분산되고, 암호화된 대화 & [matrix]의 지원으로 협력", + "Search the room directory": "방 목록 찾기", + "Get started with some tips from Riot Bot!": "라이엇 봇에게 조언을 받고 시작하세요!", + "General discussion about Matrix and Riot": "Matrix와 Riot에 대한 일반적인 토론", + "Discussion of all things Matrix!": "모든 Matrix에 대한 토론!", + "Riot/Web & Desktop chat": "Riot/웹 & PC 대화", + "Riot/iOS & matrix-ios-sdk chat": "Riot/IOS & matrix-ios-sdk 대화", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-ios-sdk 대화", + "Matrix technical discussions": "Matrix에 대한 기술적인 토론", + "Running Matrix services": "Matrix 서비스 실행 중", + "Community-run support for Synapse": "시냅스 커뮤니티 운영 지원", + "Admin support for Dendrite": "Dendrite 관리 지원", + "Announcements about Synapse releases": "Synapse 출시에 대한 발표", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc를 사용하고 운영하는 사람들을 위한 지원", + "Building services on Matrix": "Matrix에서 서비스 구축", + "Support for those using the Matrix spec": "Matrix spec을 사용하는 사람들을 지원", + "Design and implementation of E2E in Matrix": "매트릭스에서 E2E 설계와 구현", + "Implementing VR services with Matrix": "매트릭스로 VR 서비스 구현", + "Implementing VoIP services with Matrix": "Matrix로 인터넷전화 서비스 구현", + "Discussion of the Identity Service API": "ID 서비스 API에 대한 논의", + "Support for those using, running and writing other bridges": "다른 브릿지를 사용하고, 운영하고, 기록하는 사람들을 위한 지원", + "Contributing code to Matrix and Riot": "Matrix와 Riot에 코드 기여하기", + "Dev chat for the Riot/Web dev team": "Riot/웹 개발 팀을 위한 개발자 대화", + "Dev chat for the Dendrite dev team": "덴드라이트 개발 팀을 위한 개발자 대화", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "기존 네트워크(Slack, IRC, Gitter 등)에 연결되있거나 독립된 많은 방이 이미 Matrix에 있습니다. 목록을 확인해보세요!", + "Co-ordination for Riot translators": "Riot 번역자 조합", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "사용자정의 서버 설정에서 다른 홈서버 URL를 지정해 다른 Matrix 서버에 접속할 수 있습니다.
이렇게하면 다른 홈서버에서 기존의 Matrix 계정으로 Riot을 이용할 수 있습니다.

사용자정의 아이덴티티 서버도 설정할 수 있지만 이메일 주소로 이용자를 초대하거나 자신이 이메일 주소로 초대받을 수 없습니다." +} \ No newline at end of file diff --git a/riot/i18n/languages.json b/riot/i18n/languages.json new file mode 100644 index 0000000..b4e0f51 --- /dev/null +++ b/riot/i18n/languages.json @@ -0,0 +1,134 @@ +{ + "bg": { + "fileName": "bg.json", + "label": "Български" + }, + "ca": { + "fileName": "ca.json", + "label": "Català" + }, + "cs": { + "fileName": "cs.json", + "label": "čeština" + }, + "da": { + "fileName": "da.json", + "label": "Dansk" + }, + "de": { + "fileName": "de_DE.json", + "label": "Deutsch" + }, + "el": { + "fileName": "el.json", + "label": "Ελληνικά" + }, + "en": { + "fileName": "en_EN.json", + "label": "English" + }, + "en-us": { + "fileName": "en_US.json", + "label": "English (US)" + }, + "eo": { + "fileName": "eo.json", + "label": "Esperanto" + }, + "es": { + "fileName": "es.json", + "label": "Español" + }, + "eu": { + "fileName": "eu.json", + "label": "Euskara" + }, + "fi": { + "fileName": "fi.json", + "label": "Suomi" + }, + "fr": { + "fileName": "fr.json", + "label": "Français" + }, + "gl": { + "fileName": "gl.json", + "label": "Galego" + }, + "hu": { + "fileName": "hu.json", + "label": "Magyar" + }, + "it": { + "fileName": "it.json", + "label": "Italiano" + }, + "ko": { + "fileName": "ko.json", + "label": "한국어" + }, + "lv": { + "fileName": "lv.json", + "label": "Latviešu" + }, + "nb-no": { + "fileName": "nb_NO.json", + "label": "Norwegian Bokmål" + }, + "nl": { + "fileName": "nl.json", + "label": "Nederlands" + }, + "nn": { + "fileName": "nn.json", + "label": "Norsk Nynorsk" + }, + "pl": { + "fileName": "pl.json", + "label": "Polski" + }, + "pt": { + "fileName": "pt.json", + "label": "Português" + }, + "pt-br": { + "fileName": "pt_BR.json", + "label": "Português do Brasil" + }, + "ru": { + "fileName": "ru.json", + "label": "Русский" + }, + "sk": { + "fileName": "sk.json", + "label": "Slovenčina" + }, + "sr": { + "fileName": "sr.json", + "label": "српски" + }, + "sv": { + "fileName": "sv.json", + "label": "Svenska" + }, + "te": { + "fileName": "te.json", + "label": "తెలుగు" + }, + "th": { + "fileName": "th.json", + "label": "ไทย" + }, + "tr": { + "fileName": "tr.json", + "label": "Türk" + }, + "zh-hans": { + "fileName": "zh_Hans.json", + "label": "简体中文" + }, + "zh-hant": { + "fileName": "zh_Hant.json", + "label": "繁體中文" + } +} \ No newline at end of file diff --git a/riot/i18n/lv.json b/riot/i18n/lv.json new file mode 100644 index 0000000..a5a941c --- /dev/null +++ b/riot/i18n/lv.json @@ -0,0 +1,1233 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Teksta ziņa tika nosūtīta +%(msisdn)s. Lūdzu ievadi tajā atrodamo verifikācijas kodu", + "Accept": "Pieņemt", + "%(targetName)s accepted an invitation.": "%(targetName)s apstiprināja uzaicinājumu.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s apstiprināja uzaicinājumu no %(displayName)s.", + "Account": "Konts", + "Access Token:": "Pieejas tokens:", + "Active call (%(roomName)s)": "Aktīvs zvans (%(roomName)s)", + "Add": "Pievienot", + "Add a topic": "Pievienot tematu", + "Add email address": "šeit ieraksti savu epasta adresi", + "Add phone number": "šeit ieraksti telefona numuru", + "Admin": "Administrators", + "Admin Tools": "Administratora rīki", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Nav atļauju piekļūt ierīcei. Klikšķini šeit, lai tās pieprasītu.", + "No Microphones detected": "Nav mikrofonu", + "No Webcams detected": "Nav webkameru", + "No media permissions": "Nav datu nesēju, kuriem atļauta piekļuve", + "You may need to manually permit Riot to access your microphone/webcam": "Tev varētu būt nepieciešams manuāli atļaut Riot pieslēgties tavam mikrofonam/webkamerai", + "Default Device": "Noklusējuma ierīce", + "Microphone": "Mikrofons", + "Camera": "Kamera", + "Advanced": "Papildus", + "Algorithm": "Algoritms", + "Hide removed messages": "Slēpt dzēstos ziņojumus", + "Always show message timestamps": "Vienmēr rādīt ziņojumu laika zīmogu", + "Authentication": "Autentifikācija", + "Alias (optional)": "Aizstājējvārds (neobligāts)", + "%(items)s and %(lastItem)s": "%(items)s un %(lastItem)s", + "%(names)s and %(lastPerson)s are typing": "%(names)s un %(lastPerson)s raksta", + "A new password must be entered.": "Nepieciešams ievadīt jauno paroli.", + "%(senderName)s answered the call.": "%(senderName)s atbildēja zvanam.", + "An error has occurred.": "Notikusi kļūda.", + "Anyone": "Ikviens", + "Anyone who knows the room's link, apart from guests": "Ikviens, kurš zina adreses saiti uz istabu, izņemot viesus", + "Anyone who knows the room's link, including guests": "Ikviens, kurš zina adreses saiti uz istabu, tai skaitā arī viesi", + "Are you sure?": "Vai tiešām to vēlies?", + "Are you sure you want to leave the room '%(roomName)s'?": "Vai tiešām vēlies pamest istabu: '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Vai tiešām vēlies noraidīt šo uzaicinājumu?", + "Are you sure you want to upload the following files?": "Vai tiešām vēlies augšuplādēt sekojošos failus?", + "Attachment": "Pielikums", + "Autoplay GIFs and videos": "Automātiski rādīt GIF animācijas un video", + "%(senderName)s banned %(targetName)s.": "%(senderName)s liedza pieeju %(targetName)s.", + "Ban": "Nobanot/liegt pieeju", + "Banned users": "Banotie/bloķētie lietotāji (kuriem liegta pieeja)", + "Bans user with given id": "Bloķē (liedz pieeju) lietotāju pēc uzdotā ID (nobano)", + "Blacklisted": "Melnajā sarakstā iekļautie", + "Bulk Options": "Grupveida darbību parametri", + "Call Timeout": "Savienojuma gaidīšanas noilgums", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Neizdodas savienoties ar bāzes serveri. Pārbaudi tīkla savienojumu un pārliecinies, ka bāzes servera SSL sertifikāts ir uzticams, kā arī pārlūkā instalētie paplašinājumi nebloķē pieprasījumus.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Neizdodas savienoties ar bāzes serveri izmantojot HTTP protokolu, kad Tava pārlūka adreses laukā norādīts HTTPS protokols. Tā vietā izmanto HTTPS vai iespējo nedrošos skriptus.", + "Can't load user settings": "Neizdevās ielādēt lietotāja iestatījumus", + "Change Password": "Paroles maiņa", + "%(senderName)s changed their profile picture.": "%(senderName)s nomainīja profila attēlu.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s nomainīja statusa līmeni %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s nomainīja istabas nosaukumu uz %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s dzēsa istabas nosaukumu.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s nomainīja tēmas nosaukumu uz \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Izmaiņas attiecībā uz to, kurš varēs lasīt vēstures ziņas, stāsies spēkā tikai uz ziņām,kuras vēl tiks pievienotas šajā istabā", + "Changes your display nickname": "Nomaina Tavu publisko segvārdu (niku)", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Paroles maiņa dzēsīs pašreizējās šifrēšanas atslēgas visās savstarpēji saistītajās ierīcēs, padarot čata vēsturi neizlasāmu, ja vien vien istabas atslēgas nav tikušas iepriekš eksportētas un no jauna importētas atpakaļ. Nākotnē to plānojam uzlabot.", + "Claimed Ed25519 fingerprint key": "Ed25519 pieprasītā nospieduma (fingerprint) atslēga", + "Clear Cache and Reload": "Iztīri kešatmiņu un pārlādē", + "Clear Cache": "Iztīri kešatmiņu", + "Click here to join the discussion!": "Klikšķini šeit lai pievienotos diskusijai!", + "Click here to fix": "Klikšķini šeit, lai salabotu", + "Click to mute audio": "Klikšķini, lai audio skaņu izslēgtu", + "Click to mute video": "Klikšķini, lai video skaņu izslēgtu", + "click to reveal": "Klikšķini, lai atsegtu", + "Click to unmute video": "Klikšķini, lai video skaņu ieslēgtu", + "Click to unmute audio": "Klikšķini, lai audio skaņu ieslēgtu", + "Close": "Aizvērt", + "Command error": "Komandas kļūda", + "Commands": "Komandas", + "Conference call failed.": "Konferences zvans neizdevās.", + "Conference calling is in development and may not be reliable.": "Konferences zvans šobrīd atrodas izstrādes stadijā un var būt nestabils.", + "Conference calls are not supported in encrypted rooms": "Konferences zvani nav iespējami istabās, kurās tiek izmantota šifrēšana", + "Conference calls are not supported in this client": "Konferences zvani šajā klienta programmā netiek atbalstīti", + "Confirm password": "Apstiprini paroli", + "Confirm your new password": "Apstiprini jauno paroli", + "Continue": "Turpināt", + "Could not connect to the integration server": "Neizdevās savienoties ar Integrācijas serveri", + "%(count)s new messages": { + "one": "jaunu ziņu skaits: %(count)s", + "other": "%(count)s jaunas ziņas" + }, + "Create a new chat or reuse an existing one": "Izveidot jaunu čalu vai izmantot jau esošu", + "Create an account": "Reģistrēt kontu", + "Create Room": "Izveidot istabu", + "Cryptography": "Kriptogrāfija", + "Current password": "Pašreizējā parole", + "Curve25519 identity key": "Curve25519 identifikācijas atslēga", + "Custom": "Pielāgots", + "Custom level": "Īpašais līmenis", + "/ddg is not a command": "/ddg nav komanda", + "Deactivate Account": "Deaktivēt kontu", + "Deactivate my account": "Deaktivēt manu kontu", + "Decline": "Noraidīt", + "Decrypt %(text)s": "Atšifrēt %(text)s", + "Decryption error": "Atšifrēšanas kļūda", + "Delete": "Dzēst", + "Deops user with given id": "Atceļ operatora statusu lietotājam ar norādīto Id", + "Default": "Noklusējuma", + "Device already verified!": "Ierīce ir jau verificēta!", + "Device ID": "Ierīces Id", + "Device ID:": "Ierīces Id:", + "device id: ": "ierīces id: ", + "Device key:": "Ierīces atslēga:", + "Devices": "Ierīces", + "Devices will not yet be able to decrypt history from before they joined the room": "Ierīces nevarēs atšifrēt to ziņu vēsturi, kuras ir tikušas pievienotas, pirms ierīce pieslēdzās istabai", + "Direct chats": "Tiešie čati", + "Disable Notifications": "Izslēgt paziņojumus", + "Disinvite": "Atsaukt", + "Display name": "Attēlojamais vārds", + "Displays action": "Parāda darbību", + "Don't send typing notifications": "Nerādīt, kad es rakstu", + "Download %(text)s": "Lejupielādēt tekstu: %(text)s", + "Drop File Here": "Ievelc failu šeit", + "Drop here to tag %(section)s": "Atvilkt uz šejieni (nomest šeit), lai birkotu %(section)s", + "Ed25519 fingerprint": "Ed25519 nospiedums (fingerprint), zīmju virkne", + "Email": "Epasts", + "Email address": "Epasta adrese", + "Email address (optional)": "Epasta adrese (neobligāta)", + "Email, name or matrix ID": "Epasts, vārds vai Matrix identifikators (ID)", + "Emoji": "Emocīši (emoji)", + "Enable encryption": "Ieslēgt šifrēšanu", + "Enable Notifications": "Ieslēgt paziņojumus", + "Encrypted by a verified device": "Šifrēts ar verificētu ierīci", + "Encrypted by an unverified device": "Šifrēts ar neverificētu ierīci", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Šifrētas ziņas nebūs redzamas tajās klienta programmās, kuras neatbalsta šifrēšanu", + "Encrypted room": "Šifrēta istaba", + "Encryption is enabled in this room": "Šajā istabā šifrēšana ir ieslēgta", + "Encryption is not enabled in this room": "Šajā istabā šifrēšana ir izslēgta", + "%(senderName)s ended the call.": "%(senderName)s beidza zvanu.", + "End-to-end encryption information": "\"End-to-End\" (ierīce-ierīce) šifrēšanas informācija", + "End-to-end encryption is in beta and may not be reliable": "\"End-to-end\" (ierīce-ierīce) šifrēšana šobrīd ir beta stadijā, un var nebūt stabila", + "Enter Code": "Ievadi kodu", + "Enter passphrase": "Ievadi paroles frāzi", + "Error": "Kļūda", + "Error decrypting attachment": "Kļūda atšifrējot pielikumu", + "Error: Problem communicating with the given homeserver.": "Kļūda: Saziņas problēma ar norādīto bāzes serveri.", + "Event information": "Notikuma informācija", + "Existing Call": "Pašreizējā saruna (zvans)", + "Export": "Eksportēt", + "Export E2E room keys": "Eksportēt E2E istabas atslēgas", + "Failed to ban user": "Neizdevās nobanot/bloķēt (liegt pieeju) lietotāju", + "Failed to change password. Is your password correct?": "Neizdevās nomainīt paroli. Vai tā ir pareiza?", + "Failed to change power level": "Neizdevās nomainīt statusa līmeni", + "Power level must be positive integer.": "Statusa līmenim ir jābūt pozitīvam skaitlim.", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Tu nevarēsi atcelt šo darbību, jo šim lietotājam piešķir tādu pašu statusa līmeni, kāds ir Tev.", + "Failed to fetch avatar URL": "Neizdevās noteikt avatara URL adresi", + "Failed to forget room %(errCode)s": "Neizdevās \"aizmirst\" istabu %(errCode)s", + "Failed to join room": "Neizdevās pievienoties istabai", + "Failed to kick": "Neizdevās izspert/padzīt (kick)", + "Failed to leave room": "Neizdevās pamest istabu", + "Failed to load timeline position": "Neizdevās ielādēt laikpaziņojumu pozīciju", + "Failed to mute user": "Neizdevās apklusināt lietotāju", + "Failed to reject invite": "Neizdevās noraidīt uzaicinājumu", + "Failed to reject invitation": "Neizdevās noraidīt uzaicinājumu", + "Failed to save settings": "Neizdevās saglabāt uzstādījumus", + "Failed to send email": "Neizdevās nosūtīt epastu", + "Failed to send request.": "Neizdevās nosūtīt pieprasījumu.", + "Failed to set avatar.": "Neizdevās iestatīt avataru (profila attēlu).", + "Failed to set display name": "Neizdevās iestatīt redzamo vārdu", + "Failed to set up conference call": "Neizdevās iestatīt konferences zvanu", + "Failed to toggle moderator status": "Neizdevās nomainīt moderatora statusu", + "Failed to unban": "Neizdevās atbanot/atbloķēt (atcelt pieejas liegumu)", + "Failed to upload file": "Neizdevās augšupielādēt failu", + "Failed to upload profile picture!": "Neizdevās augšuplādēt profila attēlu!", + "Failed to verify email address: make sure you clicked the link in the email": "Neizdevās apstiprināt epasta adresi. Pārbaudi, vai Tu esi noklikšķinājis/usi saiti epasta ziņā", + "Failure to create room": "Neizdevās izveidot istabu", + "Favourite": "Favorīti (izlase)", + "Favourites": "Favorīti", + "Fill screen": "Aizpildīt ekrānu", + "Filter room members": "Filtrēt istabas biedrus", + "Forget room": "\"Aizmirst\" istabu", + "Forgot your password?": "Aizmirsi paroli?", + "For security, this session has been signed out. Please sign in again.": "Drošības nolūkos, šī sesija ir beigusies. Lūdzu, pieraksties par jaunu.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Drošības nolūkos, izrakstīšanās dzēsīs jebkādas ierīce-ierīce šifrēšanas atslēgas no šī pārlūka. Ja Tu vēlies saglabāt iespēju atšifrēt tavu saziņas vēsturi no Riot nākotnes sesijām, lūdzu eksportē tavas istabas atslēgas, saglabājot tās drošā vietā.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s no %(fromPowerLevel)s uz %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Šajā Bāzes serverī viesu pierakstīšanās nav iespējama.", + "Guests cannot join this room even if explicitly invited.": "Viesi nevar pievienoties šai istabai, pat ja ir uzaicināti.", + "Hangup": "Beigt zvanu", + "Hide read receipts": "Slēpt atzīmes par izlasīšanu", + "Hide Text Formatting Toolbar": "Slēpt teksta formatēšanas rīkjoslu", + "Historical": "Bijušie", + "Home": "Mājup", + "Homeserver is": "Bāzes serveris ir", + "Identity Server is": "Indentifikācijas serveris ir", + "I have verified my email address": "Mana epasta adrese ir verificēta", + "Import": "Importēt", + "Import E2E room keys": "Importēt E2E istabas atslēgas", + "Incoming call from %(name)s": "Ienākošs zvans no %(name)s", + "Incoming video call from %(name)s": "Ienākošs VIDEO zvans no %(name)s", + "Incoming voice call from %(name)s": "Ienākošs AUDIO zvans no %(name)s", + "Incorrect username and/or password.": "Nepareizs lietotājvārds un/vai parole.", + "Incorrect verification code": "Nepareizs verifikācijas kods", + "Interface Language": "Saskarnes valoda", + "Invalid alias format": "Nepareizs aliases (aizstājējvārda) formāts", + "Invalid address format": "Nepareizs adreses formāts", + "Invalid Email Address": "Nepareiza epasta adrese", + "Invalid file%(extra)s": "Nederīgs fails %(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s uzaicināja %(targetName)s.", + "Invite new room members": "Uzaicināt jaunus istabas biedrus", + "Invited": "Uzaicināts/a", + "Invites": "Uzaicinājumi", + "Invites user with given id to current room": "Uzaicina lietotāju ar norādīto id uz pašreizējo istabu", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' nav pareizā adreses formātā", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nav pareizā aliases (aizstājējvārda) formātā", + "%(displayName)s is typing": "%(displayName)s šobrīd raksta", + "Sign in with": "Pierakstīties ar", + "Join as voice or video.": "Pievienoties kā AUDIO vai VIDEO.", + "Join Room": "Pievienoties istabai", + "%(targetName)s joined the room.": "%(targetName)s pievienojās istabai.", + "Joins room with given alias": "Pievienojas istabai ar minēto aliasi (pseidonīmu)", + "Jump to first unread message.": "Pāriet uz pirmo neizlasīto ziņu.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s iespēra (kick) %(targetName)s.", + "Kick": "Izspert/padzīt no istabas (kick)", + "Kicks user with given id": "Padzen (kick) lietotāju ar norādīto Id", + "Labs": "Izmēģinājumu lauciņš", + "Last seen": "Pēdējo reizi redzēts/a", + "Leave room": "Doties prom no istabas", + "%(targetName)s left the room.": "%(targetName)s devās prom no istabas.", + "Level:": "Līmenis:", + "Local addresses for this room:": "Šīs istabas lokālās adreses:", + "Logged in as:": "Pierakstījās kā:", + "Logout": "Izrakstīties", + "Low priority": "Zemas prioritātes", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas biedriem no brīža, kad tie tika uzaicināti.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas biedriem ar brīdi, kad tie pievienojās.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu visiem istabas biedriem.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu ikvienam.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s padarīja istabas ziņu turpmāko vēsturi redzamu nepazīstamajiem (%(visibility)s).", + "Manage Integrations": "Pārvaldīt integrācijas", + "Markdown is disabled": "\"Markdown\" formatēšana izslēgta", + "Markdown is enabled": "\"Markdown\" formatēšana ieslēgta", + "Turn Markdown off": "Izslēgt formatēšanas iespēju", + "Turn Markdown on": "Ieslēgt formatēšanas iespēju", + "matrix-react-sdk version:": "Matrix-react-sdk versija:", + "The default role for new room members is": "Jauna istabas biedra statuss pēc noklusējuma ir", + "Message not sent due to unknown devices being present": "Ziņa nav nosūtīta, jo tika konstatēta nezināmu ierīču klātbūtne", + "Missing room_id in request": "Iztrūkstošs room_id pieprasījumā", + "Missing user_id in request": "Iztrūkstošs user_id pieprasījumā", + "Mobile phone number": "Mobilā telefona numurs", + "Mobile phone number (optional)": "Mobilā telefona numurs (nav obligāts)", + "Moderator": "Moderators", + "Mute": "Noklusināt (izslēgt skaņu)", + "%(serverName)s Matrix ID": "%(serverName)s Matrix Id", + "Name": "Vārds", + "Never send encrypted messages to unverified devices from this device": "Nekad nesūtīt no šīs ierīces šifrētas ziņas uz neverificētām ierīcēm", + "Never send encrypted messages to unverified devices in this room from this device": "Nekad nesūtīt no šīs ierīces šifrētas ziņas neverificētām ierīcēm šajā istabā", + "New address (e.g. #foo:%(localDomain)s)": "Jaunā adrese (piemēram #kautkas:%(localDomain)s)", + "New password": "Jaunā parole", + "New passwords don't match": "Jaunās paroles nesakrīt", + "New passwords must match each other.": "Jaunajām parolēm ir jāsakrīt vienai ar otru.", + "none": "neviens", + "not set": "nav iestatīts", + "not specified": "nav noteikts", + "Notifications": "Paziņojumi", + "(not supported by this browser)": "(netiek atbalstīts šajā pārlūkā)", + "": "", + "NOT verified": "NAV verificēts", + "No devices with registered encryption keys": "Nav ierīču ar reģistrētām šifrēšanas atslēgām", + "No display name": "Nav publiski redzamā vārda", + "No more results": "Nav tālāko rezultātu", + "No results": "Nav rezultātu", + "No users have specific privileges in this room": "Šajā istabā nav lietotāju ar īpašām privilēģijām", + "OK": "Lai notiek", + "olm version:": "Olm versija:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Tiklīdz istabai tiks iespējota šifrēšana, tā vairs nebūs atslēdzama (pašlaik)", + "Only people who have been invited": "Vienīgi cilvēki, kuri uzaicināti", + "Operation failed": "Darbība neizdevās", + "Password": "Parole", + "Password:": "Parole:", + "Passwords can't be empty": "Paroles nevar būt tukšas", + "People": "Cilvēki", + "Permissions": "Atļaujas", + "Phone": "Telefons", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s veica %(callType)s zvanu.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Lūdzu pārbaudi savu epastu un noklikšķini tajā esošo saiti. Tiklīdz tas ir izdarīts, klikšķini \"turpināt\".", + "Press to start a chat with someone": "Nospied , lai ar kādu uzsāktu čalošanu", + "Privacy warning": "Privātuma brīdinājums", + "Private Chat": "Privātais čats", + "Privileged Users": "Priviliģētie lietotāji", + "Profile": "Profils", + "Public Chat": "Publiskais čats", + "Reason": "Iemesls", + "Reason: %(reasonText)s": "Iemesls: %(reasonText)s", + "Revoke Moderator": "Atcelt moderatoru", + "Refer a friend to Riot:": "Rekomendēt draugam Riot:", + "Register": "Reģistrēties", + "%(targetName)s rejected the invitation.": "%(targetName)s noraidīja uzaicinājumu.", + "Reject invitation": "Noraidīt uzaicinājumu", + "Rejoin": "Pievienoties atkārtoti", + "Remote addresses for this room:": "Attālinātā adrese šai istabai:", + "Remove Contact Information?": "Dzēst kontaktinformāciju?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s dzēsa attēlojamo/redzamo vārdu (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s dzēsa profila attēlu.", + "Remove": "Dzēst", + "Remove %(threePid)s?": "Dzēst %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s vēlas VoIP konferenci.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Paroles atiestatīšana atiestatīs visas ierīce-ierīce šifrēšanas atslēgas visās ierīcēs, padarot čata šifrēto ziņu vēsturi nelasāmu, ja vien Tu pirms tam neesi eksportējis savas istabas atslēgas un atkārtoti importējis tās atpakaļ. Nākotnē šo ir plānots uzlabot.", + "Results from DuckDuckGo": "Rezultāti no DuckDuckGo", + "Return to login screen": "Atgriezties uz pierakstīšanās lapu", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot nav atļauts nosūtīt Tev paziņojumus. Lūdzu pārbaudi sava pārlūka iestatījumus", + "Riot was not given permission to send notifications - please try again": "Riot nav piešķirta atļauja nosūtīt paziņojumus. Lūdzu mēģini vēlreiz", + "riot-web version:": "Riot-web versija:", + "Unable to enable Notifications": "Nav iespējams iespējot paziņojumus", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Tu izrakstījies no visām ierīcēm un vairs nesaņemsi pašpiegādes (push) paziņojumus. Lai iespējotu paziņojumus, pieraksties atkārtoti katrā no ierīcēm", + "You have no visible notifications": "Tev nav redzamo paziņojumu", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Tava parole tika veiksmīgi nomainīta. Tu vairs nesaņemsi pašpiegādes (push) paziņojumus citās ierīcēs kamēr tajās nebūs veikta atkārtota pierakstīšanās", + "This will allow you to reset your password and receive notifications.": "Tas atļaus Tev atiestatīt paroli un saņemt paziņojumus.", + "Room %(roomId)s not visible": "Istaba %(roomId)s nav redzama", + "%(roomName)s does not exist.": "%(roomName)s neeksistē.", + "%(roomName)s is not accessible at this time.": "%(roomName)s šobrīd nav pieejama.", + "Seen by %(userName)s at %(dateTime)s": "Redzējis %(userName)s %(dateTime)s", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s nosūtīja attēlu.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s nosūtīja uzaicinājumu %(targetDisplayName)s pievienoties istabai.", + "%(senderName)s set a profile picture.": "%(senderName)s uzstādīja profila attēlu.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s nomainīja attēlojamo/redzamo vārdu uz: %(displayName)s.", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Tevis uzdotā pierakstīšanās atslēga sakrīt ar atslēgu, kuru Tu saņēmi no %(userId)s ierīces %(deviceId)s. Ierīce tika atzīmēta kā verificēta.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Faila '%(fileName)s' izmērs pārsniedz šī Bāzes servera augšupielādes lieluma ierobežojumu", + "The file '%(fileName)s' failed to upload": "Failu '%(fileName)s' neizdevās nosūtīt (augšuplādēt)", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ieslēdza \"end-to-end\" (ierīce-ierīce) šifrēšanu (algorithm %(algorithm)s).", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s atcēla pieejas ierobežojumu (atbanoja) %(targetName)s.", + "Unknown room %(roomId)s": "Nezināma istaba %(roomId)s", + "Uploading %(filename)s and %(count)s others": { + "zero": "Tiek augšuplādēts %(filename)s", + "one": "Tiek augšuplādēts %(filename)s un %(count)s citi", + "other": "Tiek augšuplādēts %(filename)s un %(count)s citi" + }, + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (power %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Neatbilstošs lietotājvārds: %(errMessage)s", + "(unknown failure: %(reason)s)": "(nezināma kļūda: %(reason)s)", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "BRĪDINĀJUMS: NEIZDEVĀS VERIFICĒT ATSLĒGU! Pierakstīšanās atslēga priekš %(userId)s un ierīces %(deviceId)s ir \"%(fprint)s\", kura nesakrīt ar ievadīto atslēgu \"%(fingerprint)s\". Tas var nozīmēt, ka Tava saziņa var tikt pārtverta!", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s atsauca %(targetName)s uzaicinājumu.", + "You are trying to access %(roomName)s.": "Tu mēģini piekļūt %(roomName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "Tev ir liegta pieeja istabai %(roomName)s no %(userName)s.", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s Tevi uzaicināja pievienoties šai istabai", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s izmeta Tevi no %(roomName)s.", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Parole ir par īsu (jābūt vismaz %(MIN_PASSWORD_LENGTH)s zīmēm).", + "An error occurred: %(error_string)s": "Notikusi kļūda: %(error_string)s", + "(~%(count)s results)": { + "one": "(~%(count)s rezultāts)", + "other": "(~%(count)s rezultāti)" + }, + "Reject all %(invitedRooms)s invites": "Noraidīt visus %(invitedRooms)s uzaicinājumus", + "Failed to invite the following users to the %(roomName)s room:": "Neizdevās uzaicināt sekojošos lietotājus uz %(roomName)s istabu:", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" atrodas ierīces, kuras Tu neesi iepriekš redzējis/usi.", + "You are registering with %(SelectedTeamName)s": "Tu reģistrējies ar %(SelectedTeamName)s", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Notiek Tevis novirzīšana uz ārēju trešās puses vietni. Tu vari atļaut savam kontam piekļuvi ar %(integrationsUrl)s. Vai vēlies turpināt?", + "Ongoing conference call%(supportedText)s.": "Notiekošs konferences zvans %(supportedText)s.", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s dzēsa istabas avataru.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s nomainīja istabas avataru %(roomName)s", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Tu pievienoji jaunu ierīci '%(displayName)s', kas prasa šifrēšanas atslēgas.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Tava neverificētā ierīce '%(displayName)s' pieprasa šifrēšanas atslēgas.", + "Room Colour": "Istabas krāsa", + "Room contains unknown devices": "Istabā konstatētas nepārbaudītas ierīces", + "Room name (optional)": "Istabas nosaukums (nav obligāts)", + "Rooms": "Istabas", + "Save": "Saglabāt", + "Scroll to bottom of page": "Aizritināt uz lapas apakšu", + "Scroll to unread messages": "Aizritināt uz nelasītajām ziņām", + "Search": "Meklēt", + "Search failed": "Meklēšana neizdevās", + "Searches DuckDuckGo for results": "Meklēšanai izmanto DuckDuckGo", + "Send anyway": "Nosūtīt jebkurā gadījumā", + "Sender device information": "Nosūtītāja ierīces informācija", + "Send Invites": "Nosūtīt uzaicinājumus", + "Send Reset Email": "Nosūtīt atiestatīšanas epastu", + "Server error": "Servera kļūda", + "Server may be unavailable or overloaded": "Serveris ir nesasniedzams vai pārslogots", + "Server may be unavailable, overloaded, or search timed out :(": "Serveris izskatās nesasniedzams, ir pārslogots, vai arī meklēšana beigusies ar savienojuma noildzi :(", + "Server may be unavailable, overloaded, or the file too big": "Serveris ir nesasniedzams, ir pārslogots, vai arī faila izmērs ir par lielu", + "Server may be unavailable, overloaded, or you hit a bug.": "Serveris ir nesasniedzams, pārslogots, vai arī esi uzdūries kļūdai programmā.", + "Server unavailable, overloaded, or something else went wrong.": "Serveris ir nesasniedzams, pārslogots, vai arī esi uzdūries kļūdai.", + "Session ID": "Sesijas Id", + "Settings": "Iestatījumi", + "Show panel": "Rādīt paneli", + "Show Text Formatting Toolbar": "Rādīt teksta formatēšanas rīkjoslu", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Rādīt laiku 12 stundu formātā (piemēram 2:30pm)", + "Signed Out": "Izrakstījās", + "Sign in": "Pierakstīties", + "Sign out": "Izrakstīties", + "%(count)s of your messages have not been sent.": { + "other": "Dažas no tavām ziņām netika nosūtītas.", + "one": "Tava ziņa netika nosūtīta." + }, + "Someone": "Kāds", + "Start a chat": "Sākt čatu", + "Start authentication": "Sākt autentifikāciju", + "Start Chat": "Sākt čatu", + "Submit": "Iesniegt", + "Success": "Izdevās", + "Tagged as: ": "Pievienotas birkas: ", + "The main address for this room is": "Galvenā šīs istabas adrese ir", + "The phone number entered looks invalid": "Ievadītais telefona numurs izskatās nepareizs", + "This email address is already in use": "Šī epasta adrese jau tiek izmantota", + "This email address was not found": "Šāda epasta adrese nav atrasta", + "The email address linked to your account must be entered.": "Ir jāievada Tavam kontam piesaistītā epasta adrese.", + "The remote side failed to pick up": "Zvana adresāts neatbild", + "This Home Server does not support login using email address.": "Šis Bāzes serveris nenodrošina pierakstīšanos ar epasta adresi.", + "This invitation was sent to an email address which is not associated with this account:": "Šis uzaicinājums tika nosūtīts uz epasta adresi, kura nav piesaistīta šim kontam:", + "This room has no local addresses": "Šai istabai nav lokālo adrešu", + "This room is not recognised.": "Šī istaba netika atpazīta.", + "These are experimental features that may break in unexpected ways": "Šīs ir eksperimentālas funkcijas, kuras reizēm var novest pie pārsteidzošiem rezultātiem", + "The visibility of existing history will be unchanged": "Esošās ziņu vēstures redzamība paliks nemainīga", + "This doesn't appear to be a valid email address": "Šī neizskatās pēc derīgas epasta adreses", + "This is a preview of this room. Room interactions have been disabled": "Šis ir esošās istabas priekšskats. Istabas mijiedarbība ir atspējota", + "This phone number is already in use": "Šis telefona numurs jau tiek izmantots", + "This room": "šajā istabā", + "This room is not accessible by remote Matrix servers": "Šī istaba nav pieejama no attālinātajiem Matrix serveriem", + "This room's internal ID is": "Šīs istabas iekšējais Id ir", + "To link to a room it must have an address.": "Lai ieliktu saiti uz istabu, tai ir jābūt piešķirtai adresei.", + "To reset your password, enter the email address linked to your account": "Lai atiestatītu savu paroli, ievadi savam kontam piesaistīto epasta adresi", + "To use it, just wait for autocomplete results to load and tab through them.": "Lai to izmantotu, vienkārši gaidi, kamēr ielādējas automātiski ieteiktie rezultāti, un pārvietojies caur tiem.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Notika mēģinājums ielādēt šīs istabas specifisku laikpaziņojumu sadaļu, bet Tev nav atļaujas skatīt šo ziņu.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Mēģinājums ielādēt šīs istabas čata vēstures izvēlēto posmu neizdevās, jo tas netika atrasts.", + "Unable to add email address": "Nav iespējams pievienot epasta adresi", + "Unable to remove contact information": "Nav iespējams dzēst kontaktinformāciju", + "Unable to verify email address.": "Nav iespējams apstiprināt epasta adresi.", + "Unban": "Atbanot/atcelt pieejas liegumu", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nav iespējams pārliecināties, ka šis uzaicinājums tika nosūtīts uz to pašu adresi, kura ir piesaistīta Tavam kontam.", + "Unable to capture screen": "Neizdevās uzņemt ekrānattēlu", + "Unable to load device list": "Nav iespējams ielādēt ierīču sarakstu", + "Undecryptable": "Neatšifrējams", + "Unencrypted room": "Nešifrēta istaba", + "unencrypted": "nešifrēts", + "Unencrypted message": "Nešifrēta ziņa", + "unknown caller": "nezināms zvanītājs", + "unknown device": "nezināma ierīce", + "unknown error code": "nezināms kļūdas kods", + "Unknown (user, device) pair:": "Nezināms (lietotājs, ierīce) pāris:", + "Unmute": "Ieslēgt skaņu", + "Unnamed Room": "Istaba bez nosaukuma", + "Cancel": "Atcelt", + "Create new room": "Izveidot jaunu istabu", + "Custom Server Options": "Iestatāmās servera opcijas", + "Dismiss": "Atteikt", + "You have enabled URL previews by default.": "URL priekšskats pēc noklusējuma Tev iriespējots .", + "Unrecognised command:": "Neatpazīta komanda:", + "Unrecognised room alias:": "Neatpazīta istabas aliase:", + "Unverified": "Neverificēts", + "Upload avatar": "Augšuplādēt avataru (profila attēlu)", + "Upload Failed": "Augšupielāde (nosūtīšana) neizdevās", + "Upload Files": "Augšuplādēt failus", + "Upload file": "Augšuplādēt failu", + "Upload new:": "Augšuplādēt jaunu:", + "Usage": "Lietojums", + "Use compact timeline layout": "Izmanto kompaktu laikpaziņojumu skatu", + "Use with caution": "Izmanto piesardzīgi", + "User ID": "Lietotāja Id", + "User Interface": "Lietotāja saskarne", + "User name": "Lietotāja vārds", + "Users": "Lietotāji", + "Verification Pending": "Gaida verifikāciju", + "Verification": "Verifikācija", + "verified": "verificēts", + "Verified": "Verificēts", + "Verified key": "Verificēta atslēga", + "WARNING: Device already verified, but keys do NOT MATCH!": "BRĪDINĀJUMS: Ierīce ir jau verificēta, bet NESAKRĪT atslēgas!", + "In future this verification process will be more sophisticated.": "Nākotnē šis verifikācijas process būs draudzīgāks.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Tu šobrīd esi iekļāvis/usi neverificētas ierīces melnajā sarakstā. Lai nosūtītu ziņas uz šādām ierīcēm, Tev tās ir jāverificē.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Mēs rekomendējam Tev pārskatīt verifikācijas procesu katrai ierīcei, lai apstiprinātu tās piederību īstajam īpašniekam, bet Tu vari nosūtīt ziņu vēlreiz bez verificēšanas, ja vēlies.", + "Start verification": "Sākt verifikāciju", + "Video call": "VIDEO zvans", + "Voice call": "AUDIO zvans", + "VoIP conference finished.": "VoIP konference beidzās.", + "VoIP conference started.": "VoIP konference sākās.", + "VoIP is unsupported": "VoIP netiek atbalstīts", + "(could not connect media)": "(nav iespējams savienoties ar mediju)", + "(no answer)": "(nav atbildes)", + "(warning: cannot be disabled again!)": "(brīdinājums: to nebūs iespējams atslēgt!)", + "Warning!": "Brīdinājums!", + "Who can access this room?": "Kurš var piekļūt istabai?", + "Who can read history?": "Kas var lasīt vēsturi?", + "Who would you like to add to this room?": "Ko Tu vēlies pievienot šai istabai?", + "Who would you like to communicate with?": "Ar kuru vēlies komunicēt?", + "Would you like to accept or decline this invitation?": "Vai vēlies apstiprināt vai noraidīt šo uzaicinājumu?", + "You already have existing direct chats with this user:": "Tev jau ir viens tiešais čats ar šo lietotāju:", + "You are already in a call.": "Tu jau šobrīd esi sarunā.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Šobrīd Tu vēl neatrodies nevienā istabā! Klikšķini lai izveidotu istabu, vai , lai skatītu istabu katalogu", + "You cannot place a call with yourself.": "Nav iespējams piezvanīt sev.", + "You cannot place VoIP calls in this browser.": "VoIP zvani šajā pārlūkā netiek atbalstīti.", + "You do not have permission to post to this room": "Tev nav vajadzīgo atļauju, lai rakstītu ziņas šajā istabā", + "You have disabled URL previews by default.": "URL priekšskats pēc noklusējuma Tev ir atspējots.", + "You may wish to login with a different account, or add this email to this account.": "Tu varētu, iespējams, vēlēties pierakstīties no cita konta vai piesaistīt šo epastu šim kontam.", + "You must register to use this functionality": "Lai izmantotu šo funkcionalitāti, Tev ir jāreģistrējas", + "You need to be able to invite users to do that.": "Lai to darītu, Tev ir jāspēj uzaicināt lietotājus.", + "You need to be logged in.": "Tev ir jāpierakstās.", + "You need to enter a user name.": "Tev ir jāievada lietotāja vārds.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Tava epasta adrese nav piesaistīta pie Matrix Id šajā Bāzes serverī.", + "Your password has been reset": "Tava parole tika atiestatīta", + "You seem to be in a call, are you sure you want to quit?": "Izskatās, ka atrodies zvana režīmā. Vai tiešām vēlies iziet?", + "You seem to be uploading files, are you sure you want to quit?": "Izskatās, ka šobrīd augšuplādē failus. Vai tiešām vēlies iziet?", + "You should not yet trust it to secure data": "Tev nevajadzētu uz to vēl paļauties, lai saglabātu datu drošību", + "Your home server does not support device management.": "Tavs Bāzes serveris neatbalsta ierīču pārvaldīšanu.", + "Sun": "Sv.", + "Mon": "P.", + "Tue": "O.", + "Wed": "T.", + "Thu": "C.", + "Fri": "P.", + "Sat": "S.", + "Jan": "Jan.", + "Feb": "Feb.", + "Mar": "Mar.", + "Apr": "Apr.", + "May": "Maijs", + "Jun": "Jūn.", + "Jul": "Jūl.", + "Aug": "Aug.", + "Sep": "Sep.", + "Oct": "Okt.", + "Nov": "Nov.", + "Dec": "Dec.", + "Set a display name:": "Iestatīt attēloto vārdu:", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s nomainīja istabas avataru uz ", + "Upload an avatar:": "Augšuplādē avataru (profila attēlu):", + "This server does not support authentication with a phone number.": "Šis serveris neatbalsta autentifikāciju pēc telefona numura.", + "Missing password.": "Trūkst parole.", + "Passwords don't match.": "Paroles nesakrīt.", + "This doesn't look like a valid email address.": "Šī neizskatās pēc derīgas epasta adreses.", + "This doesn't look like a valid phone number.": "Šis neizskatās pēc derīga telefona numura.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Lietotājvārdi drīkst saturēt vienīgi alfabēta burtus, skaitļus, punktus, defises un apakšsvītras.", + "An unknown error occurred.": "Notikusi neparedzēta kļūda.", + "I already have an account": "Man jau ir konts", + "Topic": "Temats", + "Make Moderator": "Piešķirt moderatora statusu", + "Make this room private": "Padarīt šo istabu privātu", + "Share message history with new users": "Kopīgot ziņu vēsturi ar jauniem lietotājiem", + "Encrypt room": "Šifrēt istabu", + "There are no visible files in this room": "Nav redzamu failu šajā istabā", + "Room": "Istaba", + "Connectivity to the server has been lost.": "Savienojums ar serveri pārtrūka.", + "Sent messages will be stored until your connection has returned.": "Nosūtītās ziņas tiks saglabātas tiklīdz savienojums tiks atjaunots.", + "Active call": "Aktīvs zvans", + "bold": "treknraksts", + "italic": "kursīvs", + "strike": "caursvītrots", + "underline": "pasvītrots", + "code": "kods", + "quote": "citāts", + "bullet": "bumbulis", + "numbullet": "numurēts bumbulis", + "Please select the destination room for this message": "Lūdzu izvēlies šīs ziņas mērķa istabu", + "Room directory": "Istabu katalogs", + "Start chat": "Uzsākt čalošanu", + "New Password": "Jaunā parole", + "Start automatically after system login": "Startēt pie ierīces ielādes", + "Desktop specific": "Darbvirsmai specifiskie", + "Analytics": "Analītika", + "Options": "Opcijas/iestatījumi", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot ievāc anonīmus analītikas datus, lai varētu uzlabot aplikācijas darbību.", + "Passphrases must match": "Paroles frāzēm ir jāsakrīt", + "Passphrase must not be empty": "Paroles frāze nevar būt tukša", + "Export room keys": "Eksportēt istabas atslēgas", + "Confirm passphrase": "Apstiprināt paroles frāzi", + "Import room keys": "Importēt istabas atslēgas", + "File to import": "Importējamais fails", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Šī darbība ļauj Tev uz lokālo failu eksportēt atslēgas priekš tām ziņām, kuras Tu saņēmi šifrētās istabās. Tu varēsi importēt šo failu citā Matrix klientā, lai tajā būtu iespējams lasīt šīs ziņas atšifrētas.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Eksportētais fails ļaus ikvienam, kurš to spēj lasīt, atšifrēt jebkuras Tavas šifrētās ziņas, tāpēc ievēro piesardzību, un glabā šo failu drošā vietā. Lai palīdzētu to nodrošināt, Tev jāievada paroles frāze, kura tiks izmantota eksportēto datu šifrēšanai. Datu importēšana būs iespējama tikai izmantojot šo pašu paroles frāzi.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Šis process ļaus Tev importēt šifrēšanas atslēgas, kuras Tu iepriekš eksportēji no cita Matrix klienta. Tas ļaus Tev atšifrēt čata vēsturi.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksporta fails būs aizsargāts ar paroles frāzi. Tā ir jāievada šeit, lai atšifrētu failu.", + "You must join the room to see its files": "Tev ir jāpievienojas istabai, lai redzētu tās failus", + "Start new chat": "Uzsākt jaunu čalu", + "Failed to invite": "Neizdevās uzaicināt", + "Failed to invite user": "Neizdevās uzaicināt lietotāju", + "Confirm Removal": "Apstiprini dzēšanu", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Vai tiešām vēlies dzēst šo notikumu? Ņem vērā, ka istabas nosaukuma vai tēmas nosaukuma maiņa var ietekmēt (atsaukt) izmaiņas.", + "Unknown error": "Nezināma kļūda", + "Incorrect password": "Nepareiza parole", + "To continue, please enter your password.": "Lai turpinātu, ievadi savu paroli.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Lai verificētu šīs ierīces uzticamību, lūdzu sazinies ar tās īpašnieku, izmantojot citu saziņas veidu (piemēram, sazinoties personiski vai telefoniski) un pajautā, vai atslēga, kuru īpašnieks redz savos lietotāja iestatījumos, sakrīt ar šo atslēgu:", + "Device name": "Ierīces nosaukums", + "Device Name": "Ierīces nosaukums", + "Device key": "Ierīces atslēga", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ja tā sakrīt, tad nospied zemāk esošo verifikācijas pogu . Ja nesakrīt, tad kāds cits ir piekļuvis šai ierīcei un šādā gadījumā Tu, iespējams, vēlies izmantot \"melnais saraksts\" iespēju.", + "Verify device": "Verificēt ierīci", + "I verify that the keys match": "Es apstiprinu, ka atslēgas sakrīt", + "Unable to restore session": "Nav iespējams atjaunot sesiju", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ja Tu iepriekš izmantoji jaunāku Riot versiju, tava sesija var nebūt saderīga ar šo versiju. Aizver šo logu un atgriezies jaunākajā versijā.", + "Unknown devices": "Nezināmas ierīces", + "Unknown Address": "Nezināma adrese", + "Unblacklist": "Atbloķēšanas saraksts", + "Blacklist": "Melnais saraksts", + "Unverify": "Atverificēt", + "Verify...": "Verificē...", + "ex. @bob:example.com": "piemēram, @valters:smaidu.lv", + "Add User": "Pievienot lietotāju", + "This Home Server would like to make sure you are not a robot": "Šis Bāzes serveris vēlas pārliecināties, ka neesi robots", + "Sign in with CAS": "Pierakstīties ar CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Tu vari izmantot īpašos servera uzstādījumus, lai pierakstītos citos Matrix serveros, norādot citu Bāzes servera URL adresi.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Tas atļauj Tev izmantot šo aplikāciju ar esošu Matrix kontu citā Bāzes serverī.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Tu vari arī iestatīt īpašu Identitātes serveri, bet tas parasti liedz iespēju mijiedarboties ar lietotājiem, kuri izmanto epasta adresi.", + "Please check your email to continue registration.": "Lūdzu pārbaudi savu epastu lai turpinātu reģistrāciju.", + "Token incorrect": "Nepareizs autentifikācijas tokens", + "Please enter the code it contains:": "Lūdzu ievadi tajā ietverto kodu:", + "powered by Matrix": "Tiek darbināta ar Matrix", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ja Tu nenorādīsi epasta adresi, tev nebūs iespējams izmantot paroles atiestatīšanu. Vai to vēlies?", + "Default server": "Serveris pēc noklusējuma", + "Custom server": "Nestandarta serveris", + "Home server URL": "Bāzes servera URL adrese", + "Identity server URL": "Identitātes servera URL adrese", + "What does this mean?": "Ko tas nozīmē?", + "Error decrypting audio": "Kļūda atšifrējot audio", + "Error decrypting image": "Kļūda atšifrējot attēlu", + "Error decrypting video": "Kļūda atšifrējot video", + "Add an Integration": "Pievienot integrāciju", + "Removed or unknown message type": "Dzēsts vai nezināms ziņas tips", + "URL Previews": "URL priekšskats", + "Drop file here to upload": "Ievelc failu šeit lai augšuplādētu", + " (unsupported)": " (netiek atbalstīts)", + "Online": "Onlainā", + "Idle": "Dīkstāvē", + "Offline": "Atsaistē (ārpus tīkla)", + "Updates": "Aktualizācijas", + "Check for update": "Pārbaudīt, vai ir aktualizācijas", + "Start chatting": "Sākt čalošanu", + "Start Chatting": "Sākt čalošanu", + "Click on the button below to start chatting!": "Klikšķini uz zemāk esošās pogas, lai uzsāktu čalošanu!", + "Username available": "Lietotājvārds ir pieejams", + "Username not available": "Lietotājvārds nav pieejams", + "Something went wrong!": "Kaut kas nogāja greizi!", + "This will be your account name on the homeserver, or you can pick a different server.": "Šis būs Tavs konta vārds Bāzes serverī, vai arī vari izvēlēties citu serveri.", + "If you already have a Matrix account you can log in instead.": "Vai arī, ja Tev jau ir Matrix konts, tu vari pierakstīties tajā.", + "Your browser does not support the required cryptography extensions": "Tavs pārlūks neatbalsta vajadzīgos kriptogrāfijas paplašinājumus", + "Not a valid Riot keyfile": "Nederīgs Riot atslēgfails", + "Authentication check failed: incorrect password?": "Autentifikācijas pārbaude neizdevās. Nepareiza parole?", + "Disable Peer-to-Peer for 1:1 calls": "Atspējot Peer-to-Peer iespēju 1:1 zvaniem", + "Do you want to set an email address?": "Vai vēlies norādīt epasta adresi?", + "To return to your account in future you need to set a password": "Lai nākotnē atgrieztos savā kontā, tev ir nepieciešams iestatīt paroli", + "Skip": "Izlaist", + "Share without verifying": "Kopīgot bez verificēšanas", + "Ignore request": "Ignorēt pieprasījumu", + "Encryption key request": "Šifrēšanas atslēgas pieprasījums", + "Add a widget": "Pievienot vidžetu", + "Allow": "Atļaut", + "and %(count)s others...": { + "other": "un vēl %(count)s citi...", + "one": "un vēl viens cits..." + }, + "Cannot add any more widgets": "Nav iespējams pievienot vairāk vidžetus", + "Changes colour scheme of current room": "Nomaina pašreizējās istabas krāsu paleti", + "Delete widget": "Dzēst vidžetu", + "Define the power level of a user": "Definē lietotāja statusu", + "Do you want to load widget from URL:": "Vai vēlies ielādēt widžetu no URL:", + "Edit": "Rediģēt", + "Enable automatic language detection for syntax highlighting": "Iespējot automātisko valodas noteikšanu sintakses iezīmējumiem", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Slēpt ziņas par pievienošanos istabai vai došanos prom no tās (tas neietekmē uzaicinājumus, vai izsperšanas/banošanas darbības)", + "Integrations Error": "Integrācijas kļūda", + "Publish this room to the public in %(domain)s's room directory?": "Publicēt šo istabu publiskajā %(domain)s katalogā?", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "PIEZĪME: Aplikācijās nav ierīce-ierīce šifrēšanas", + "Sets the room topic": "Iestata istabas tematu", + "The maximum permitted number of widgets have already been added to this room.": "Maksimāli atļautais vidžetu skaits šai istabai jau sasniegts.", + "To get started, please pick a username!": "Lai sāktu, lūdzu izvēlies lietotājvārdu!", + "Unable to create widget.": "Nav iespējams izveidot widžetu.", + "Unbans user with given id": "Atbloķē (atceļ pieejas liegumu) lietotāju pēc norādītā ID (atbano)", + "You are not in this room.": "Tu neatrodies šajā istabā.", + "You do not have permission to do that in this room.": "Tev nav atļaujas šai darbībai šajā istabā.", + "Verifies a user, device, and pubkey tuple": "Verificē lietotāju, ierīci, un publiskās atslēgas", + "Autocomplete Delay (ms):": "Automātiskās aizpildīšanas aiztures laiks (ms):", + "Loading device info...": "Ielādē ierīces informāciju...", + "Example": "Piemērs", + "Create": "Izveidot", + "Featured Rooms:": "Ieteiktās istabas:", + "Featured Users:": "Ieteiktie lietotāji:", + "Automatically replace plain text Emoji": "Automātiski aizvietot tekstu ar emocīšiem (emoji)", + "Failed to upload image": "Neizdevās augšupielādēt attēlu", + "Hide avatars in user and room mentions": "Slēpt profila attēlus lietotāja un istabas pieminējumos", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pievienoja %(widgetName)s vidžetu", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s dzēsa vidžetu %(widgetName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robotu pārbaude šobrīd nav pieejama darbvirsmas versijā. Lūdzu izmanto web pārlūku", + "Revoke widget access": "Atsaukt vidžeta piekļuvi", + "Unpin Message": "Atkabināt ziņu", + "Add rooms to this community": "Pievienot istabas šai kopienai", + "Failed to set direct chat tag": "Neizdevās tiešajam čatam uzstādīt birku", + "Warning": "Brīdinājums", + "Send": "Sūtīt", + "Leave": "Doties prom (atstāt)", + "Unnamed room": "Nenosaukta istaba", + "Guests can join": "Var pievienoties viesi", + "The platform you're on": "Izmantotā operētājsistēma", + "The version of Riot.im": "Riot.im versija", + "Whether or not you're logged in (we don't record your user name)": "Neatkarīgi no tā, vai esi vai neesi iegājis sistēmā (netiek fiksēts Tavs lietotājvārds)", + "Your language of choice": "Izvēlētā valoda", + "Which officially provided instance you are using, if any": "Kuru oficiāli izlaisto versiju izmantojat (ja to darat)", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Neatkarīgi no tā, vai izmantojat Richtext režīmu redaktorā Rich Text Editor", + "Your homeserver's URL": "Bāzes servera URL adrese", + "Your identity server's URL": "Tava Identitātes servera URL adrese", + "The information being sent to us to help make Riot.im better includes:": "Informācija, kura mums tiek nosūtīta, lai ļautu padarīt Riot.im labāku, ietver:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ja šī lapa ietver identificējamu informāciju, tādu kā istaba, lietotājs, grupas Id, šie dati tiek noņemti pirms nosūtīšanas uz serveri.", + "Call Failed": "Zvans neizdevās", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Šajā istabā ir nepazīstamas ierīces: ja Tu turpināsi bez to pārbaudes, ir iespējams, ka kāda nepiederoša persona var noklausīties Tavas sarunas.", + "Review Devices": "Ierīču pārskats", + "Call Anyway": "Vienalga zvanīt", + "Answer Anyway": "Vienalga atbildēt", + "Call": "Zvans", + "Answer": "Atbildēt", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "Who would you like to add to this community?": "Kurus cilvēkus Tu vēlētos pievienot šai kopienai?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Brīdinājums: ikviens, kurš tiek pievienots kopienai būs publiski redzams visiem, kuri zin kopienas Id", + "Invite new community members": "Uzaicināt jaunus kopienas biedrus", + "Name or matrix ID": "Vārds vai Matrix Id", + "Invite to Community": "Uzaicināt kopienā", + "Which rooms would you like to add to this community?": "Kuras istabas vēlies pievienot šai kopienai?", + "Show these rooms to non-members on the community page and room list?": "Vai ne-biedriem rādīt kopienas lapā un istabu sarakstā šīs istabas?", + "Add rooms to the community": "Istabu pievienošana kopienai", + "Room name or alias": "Istabas nosaukums vai aliase", + "Add to community": "Pievienot kopienai", + "Failed to invite the following users to %(groupId)s:": "Neizdevās uzaicināt sekojošus lietotājus grupā %(groupId)s:", + "Failed to invite users to community": "Neizdevās uzaicināt lietotājus komūnā", + "Failed to invite users to %(groupId)s": "Neizdevās uzaicināt lietotājus grupā %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Neizdevās pievienot sekojošas istabas grupai %(groupId)s:", + "Restricted": "Ierobežots", + "Ignored user": "Ignorēts lietotājs", + "You are now ignoring %(userId)s": "Tagad Tu ignorē %(userId)s", + "Unignored user": "Atignorēts lietotājs", + "You are no longer ignoring %(userId)s": "Tu vairāk neignorē %(userId)s", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s nomainīja savu attēlojamo/redzamo vārdu uz %(displayName)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s šai istabai nomainīja piestiprinātās ziņas.", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s vidžets, kuru mainīja %(senderName)s", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s un %(count)s citi raksta", + "one": "%(names)s un vēl kāds raksta" + }, + "Message Pinning": "Ziņu piekabināšana", + "Disable Emoji suggestions while typing": "Atspējot Emoji ieteikumus teksta rakstīšanas laikā", + "Hide avatar changes": "Slēpt avatara izmaiņas", + "Hide display name changes": "Slēpt attēlojamā/redzamā vārda izmaiņas", + "Disable big emoji in chat": "Atspējot čatā lielos emocīšus (emoji)", + "Mirror local video feed": "Spoguļot vietējā video barotni", + "Enable inline URL previews by default": "URL priekšskats pēc noklusējuma", + "Enable URL previews for this room (only affects you)": "URL priekšskati šai istabai (ietekmē tikai Tevi pašu)", + "Enable URL previews by default for participants in this room": "URL priekšskati pēc noklusējuma visiem šīs istabas dalībniekiem", + "Delete %(count)s devices": { + "other": "Dzēst %(count)s ierīces", + "one": "Dzēst ierīci" + }, + "Select devices": "Izvēlēties ierīces", + "%(senderName)s sent an image": "%(senderName)s nosūtīja bildi", + "%(senderName)s sent a video": "%(senderName)s nosūtīja video", + "%(senderName)s uploaded a file": "%(senderName)s augšupielādēja failu", + "Disinvite this user?": "Atsaukt ielūgumu šim lietotājam?", + "Kick this user?": "Izspert/padzīt (kick) šo lietotāju?", + "Unban this user?": "Atbanot/atbloķēt šo lietotāju (atcelt liegumu šim lietotājam)?", + "Ban this user?": "Nobanot/bloķēt šo lietotāju (uzlikt liegumu šim lietotājam)?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Jūs nevarēsiet atcelt šīs izmaiņas pēc sava statusa pazemināšanas. Gadījumā, ja esat pēdējais priviliģētais lietotājs istabā, būs neiespējami atgūt šīs privilēģijas.", + "Unignore": "Atcelt ignorēšanu", + "Ignore": "Ignorēt", + "Jump to read receipt": "Pāriet uz izlasīšanas apstiprinājumu", + "Mention": "Pieminējums/atsauce", + "Invite": "Uzaicināt", + "User Options": "Lietotāja uzstādījumi/opcijas", + "Send an encrypted reply…": "sūtīt šifrētu atbildi…", + "Send a reply (unencrypted)…": "sūtīt NEšifrētu atbildi…", + "Send an encrypted message…": "rakstīt ziņu (šifrētu)…", + "Send a message (unencrypted)…": "rakstīt ziņu (NEšifrētu)…", + "Jump to message": "Pāriet uz ziņu", + "No pinned messages.": "Nav piekabinātu ziņu.", + "Loading...": "Ielāde...", + "Pinned Messages": "Piekabinātās ziņas", + "%(duration)ss": "%(duration)s sek", + "%(duration)sm": "%(duration)smin", + "%(duration)sh": "%(duration)sstundas", + "%(duration)sd": "%(duration)sdienas", + "Online for %(duration)s": "Pieslēgumā %(duration)s", + "Idle for %(duration)s": "Dīkstāvē (neaktīvs) %(duration)s", + "Offline for %(duration)s": "Atslēgumā %(duration)s", + "Unknown for %(duration)s": "Neskaidrā statusā %(duration)s", + "Unknown": "Neskaidrs statuss", + "Replying": "Atbildot uz", + "No rooms to show": "Nav istabu, kuras parādīt", + "World readable": "Pieejama ikvienam un no visurienes", + "Remove avatar": "Dzēst avataru (profila attēlu)", + "Drop here to favourite": "Atvilkt uz šejieni (nomest šeit), lai iekļautu favorītos (izlasē)", + "Drop here to tag direct chat": "Atvilkt uz šejieni (nomest šeit), lai pievienotu atzīmi \"Tiešais čats\"", + "Drop here to restore": "Atvilkt uz šejieni (nomest šeit), lai atjaunotu/atgrieztu", + "Drop here to demote": "Atvilkt uz šejieni (nomest šeit), lai pazeminātu statusā", + "Failed to remove tag %(tagName)s from room": "Neizdevās istabai noņemt birku %(tagName)s", + "Failed to add tag %(tagName)s to room": "Neizdevās istabai pievienot birku %(tagName)s", + "Community Invites": "Uzaicinājums uz kopienu", + "You have been kicked from this room by %(userName)s.": "%(userName)s padzina Tevi no šīs istabas.", + "You have been banned from this room by %(userName)s.": "%(userName)s nobanoja/nobloķēja Tevi (liedza piekļuvi) šajā istabā.", + "You are trying to access a room.": "Tu centies gūt piekļuvi istabai.", + "To change the room's avatar, you must be a": "Lai izmainītu istabas avatāru, Tev jābūt", + "To change the room's name, you must be a": "Lai izmainītu istabas nosaukumu, Tev jābūt", + "To change the room's main address, you must be a": "Lai izmainītu istabas pamatadresi, Tev jābūt", + "To change the room's history visibility, you must be a": "Lai izmainītu istabas vēstures redzamību, Tev jābūt", + "To change the permissions in the room, you must be a": "Lai istabā izmainītu atļaujas, Tev jābūt", + "To change the topic, you must be a": "Lai izmainītu tematu, Tev jābūt", + "To modify widgets in the room, you must be a": "Lai istabā izmainītu vidžetus, Tev jābūt", + "Banned by %(displayName)s": "Nobanojis/bloķējis (liedzis piekļuvi) %(displayName)s", + "Members only (since the point in time of selecting this option)": "Tikai biedri (no šī parametra iestatīšanas brīža)", + "Members only (since they were invited)": "Tikai biedri (no to uzaicināšanas brīža)", + "Members only (since they joined)": "Tikai biedri (kopš pievienošanās)", + "To send messages, you must be a": "Lai sūtītu ziņas, Tev jābūt", + "To invite users into the room, you must be a": "Lai aicinātu istabā lietotājus, ir jābūt", + "To configure the room, you must be a": "Lai konfigurētu istabu, ir jābūt", + "To kick users, you must be a": "Lai padzītu lietotājus, ir jābūt", + "To ban users, you must be a": "Lai bloķētu (liegtu pieeju) lietotājiem, ir jābūt", + "To remove other users' messages, you must be a": "Lai dzēstu citu lietotāju ziņas, ir jābūt", + "To send events of type , you must be a": "Lai sūtītu tipa notikumus, ir jābūt", + "Addresses": "Adreses", + "Invalid community ID": "Nederīgs kopienas Id", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' nav derīgs kopienas Id", + "Flair": "Gaidas (nojauta)", + "Showing flair for these communities:": "Parādīt Tavas gaidas šajās kopienās:", + "This room is not showing flair for any communities": "Šajā istabā neparādās gaidas, kas uzstādītas kopienās", + "New community ID (e.g. +foo:%(localDomain)s)": "Jaunās kopienas Id (piem. +foo:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "URL priekšskats šīs istabas dalībniekiem pēc noklusējuma ir iespējots.", + "URL previews are disabled by default for participants in this room.": "ULR priešskats šīs istabas dalībniekiem pēc noklusējuma ir atspējots.", + "Copied!": "Nokopēts!", + "Failed to copy": "Nokopēt neizdevās", + "Message removed by %(userId)s": "Ziņu dzēsis %(userId)s", + "Message removed": "Ziņa dzēsta", + "An email has been sent to %(emailAddress)s": "Vēstule tika nosūtīta uz %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "Teksta ziņa tika nosūtīta uz %(msisdn)s", + "Username on %(hs)s": "Lietotājvārds uz %(hs)s", + "Remove from community": "Izdzēst no kopienas", + "Disinvite this user from community?": "Atcelt šim lietotājam nosūtīto uzaicinājumu pievienoties kopienai?", + "Remove this user from community?": "Izdzēst šo lietotāju no kopienas?", + "Failed to withdraw invitation": "Neizdevās atcelt uzaicinājumu", + "Failed to remove user from community": "Neizdevās izdzēst lietotāju no kopienas", + "Filter community members": "Kopienas biedru filtrs", + "Flair will appear if enabled in room settings": "Gaidas parādīsies, ja tās iespējotas istabas iestatījumos", + "Flair will not appear": "Gaidas neparādīsies", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Vai tiešām vēlies izdzēst '%(roomName)s' no %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Dzēšot istabu no kopienas tā tiks dzēsta arī no kopienas lapas.", + "Failed to remove room from community": "Neizdevās dzēst istabu no kopienas", + "Failed to remove '%(roomName)s' from %(groupId)s": "Neizdevās dzēst '%(roomName)s' no %(groupId)s", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Istabas '%(roomName)s' redzamību %(groupId)s nebija iespējams atjaunot.", + "Visibility in Room List": "Redzamība istabu sarakstā", + "Visible to everyone": "Redzama visiem", + "Only visible to community members": "Tikai kopienas dalībniekiem", + "Filter community rooms": "Kopienas istabu filtrs", + "Something went wrong when trying to get your communities.": "Kaut kas nogāja greizi, kad tika mēģināts attēlot Tavas kopienas.", + "Display your community flair in rooms configured to show it.": "Parādīt Tavas gaidas istabās, kurās to parādīšana iespējota.", + "You're not currently a member of any communities.": "Pašreiz Tu neesi neesi nevienas kopienas piederīgais.", + "Delete Widget": "Dzēst vidžetu", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Vidžeta dzēšana to dzēš visiem šīs istabas lietotājiem. Vai tiešām vēlies dzēst šo vidžetu?", + "Minimize apps": "Minimizēt programmas", + "Communities": "Kopienas", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)spievienojās %(count)s reizes", + "one": "%(severalUsers)spievienojās" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)spievienojās %(count)s reizes", + "one": "%(oneUser)s pievienojās" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s izgāja %(count)s reizes", + "one": "%(severalUsers)s izgāja (atvienojās)" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s izgāja (atvienojās) %(count)s reizes", + "one": "%(oneUser)s izgāja" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s pievienojās un izgāja %(count)s reizes", + "one": "%(severalUsers)s pievienojās un izgāja" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s pievienojās un izgāja %(count)s reizes", + "one": "%(oneUser)s pievienojās un izgāja" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s izgāja un atkalpievienojās %(count)s reizes", + "one": "%(severalUsers)s aizgājuši un atgriezušies" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s noraidīja uzaicinājumus %(count)s reizes", + "one": "%(severalUsers)s nepieņēma uzaicinājumus" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s atsauca izsniegtos uzaicinājumus %(count)s reizes", + "one": "%(severalUsers)satsauca uzaicinājumus" + }, + "were banned %(count)s times": { + "other": "tika bloķēti (liegta piekļuve) %(count)s reizes", + "one": "tika bloķēti" + }, + "was banned %(count)s times": { + "other": "tika bloķēts (liegta piekļuve) %(count)s reizes", + "one": "tika bloķēts" + }, + "were unbanned %(count)s times": { + "other": "tika atbloķēti (atgriezta pieeja) %(count)s reizes", + "one": "tika atbloķēti (atcelts pieejas liegums)" + }, + "were kicked %(count)s times": { + "other": "tika padzīti %(count)s reizes", + "one": "tika padzīti (izsperti)" + }, + "collapse": "sakļaut", + "expand": "izvērst", + "Custom of %(powerLevel)s": "Lietotāja līmenis %(powerLevel)s", + "In reply to ": "Atbildē uz ", + "And %(count)s more...": { + "other": "Un par %(count)s vairāk..." + }, + "Matrix ID": "Matrix Id", + "Matrix Room ID": "Matrix istabas Id", + "email address": "e-pasta adrese", + "Try using one of the following valid address types: %(validTypesList)s.": "Mēģiniet izmantot vienu no sekojošiem pieļautajiem adrešu tipiem: %(validTypesList)s.", + "You have entered an invalid address.": "Ievadīta nederīga adrese.", + "Community IDs cannot be empty.": "Kopienu IDs nevar būt tukši.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Kopienas ID var saturēt tikai simbolus a-z, 0-9, or '=_-./'", + "Something went wrong whilst creating your community": "Radot Tavu kopienu kaut kas nogāja greizi", + "Create Community": "Radīt kopienu", + "Community Name": "Kopienas nosaukums", + "Community ID": "Kopienas ID", + "example": "piemērs", + "Advanced options": "Papildus opcijas", + "Block users on other matrix homeservers from joining this room": "Neļaut lietotājiem no citiem Bāzes serveriem pievienoties šai istabai", + "This setting cannot be changed later!": "Šo parametru vēlāk izmainīt nebūs iespējams!", + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s aizgājis un atgriezies %(count)s reizes", + "one": "%(oneUser)s aizgājis un atgriezies" + }, + "were invited %(count)s times": { + "one": "tika uzaicināti", + "other": "bija uzaicināti %(count)s reizes" + }, + "was invited %(count)s times": { + "other": "tika uzaicināta %(count)s reizes", + "one": "tika uzaicināts(a)" + }, + "was unbanned %(count)s times": { + "other": "tika atbloķēts %(count)s reizes", + "one": "tika atbloķēts" + }, + "was kicked %(count)s times": { + "other": "tika padzīts %(count)s reizes", + "one": "tika padzīts" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s izmainīja savu lietotājvārdu %(count)s reizes", + "one": "%(severalUsers)s izmainīja savu lietotājvārdu" + }, + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

Tavas kopienas lapas HTML

\n

\n Izmanto garāku aprakstu, lai iepazīstinātu jaunos lietoājus ar kopienu, \n vai padalies ar kādām attiecināmām web-saitēm\n

\n

\n Vari izmantot arī 'img' birkas\n

\n", + "Add rooms to the community summary": "Pievienot istabas kopienas informatīvajā kopsavilkumā", + "Which rooms would you like to add to this summary?": "Kuras istabas vēlaties pievienot šim kopsavilkumam?", + "Add to summary": "Pievienot kopsavilkumam", + "Failed to add the following rooms to the summary of %(groupId)s:": "Neizdevās sekojošās istabas pievienot %(groupId)s kopsavilkumam:", + "Add a Room": "Pievienot istabu", + "Failed to remove the room from the summary of %(groupId)s": "Neizdevās dzēst istabu no %(groupId)s kopsavilkuma", + "The room '%(roomName)s' could not be removed from the summary.": "Istabu '%(roomName)s' neizdevās dzēst no kopsavilkuma.", + "Leave Community": "Atstāt kopienu", + "Community Settings": "Kopienas iestatījumi", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Šīs istabas tiek rādītas kopienas dalībniekiem šīs kopienas lapā. Kopienas dalībnieki var pievienoties istabām, uzklikšķinot uz tām.", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Jūsu kopienai nav plašāka HTML-lapas apraksta ko parādīt dalībniekiem.
Klikšķini šeit, lai atvērtu iestatījumus un to pievienotu!", + "Description": "Apraksts", + "Failed to load %(groupId)s": "Neizdevās ielādēt %(groupId)s", + "This Home server does not support communities": "Šis Bāzes serveris neatbalsta kopienas", + "This room is not public. You will not be able to rejoin without an invite.": "Šīs istaba nav publiska. Tu nevari tajā ieiet bez uzaicinājuma.", + "Old cryptography data detected": "Tika uzieti novecojuši šifrēšanas dati", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Uzieti dati no vecākas Riot versijas. Tas novedīs pie \"end-to-end\" šifrēšanas problēmām vecākajā versijā. Šajā versijā nevar tikt atšifrēti ziņojumi, kuri radīti izmantojot vecākajā versijā \"end-to-end\" šifrētas ziņas. Tas var arī novest pie ziņapmaiņas, kas veikta ar šo versiju, neizdošanās. Ja rodas ķibeles, izraksties un par jaunu pieraksties sistēmā. Lai saglabātu ziņu vēsturi, eksportē un tad importē savas šifrēšanas atslēgas.", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Radi kopienu, lai apvienotu lietotājus un istabas. Izveido mājaslapu, lai iezīmētu Matrix visumā savu klātbūtni, vietu un telpu.", + "Error whilst fetching joined communities": "Ielādējot kopienas radās kļūda", + "Show devices, send anyway or cancel.": "Parādīt ierīces, vienalga nosūtīt vai sūtīšanu atcelt.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "one": "Atkārtoti sūtīt ziņu vai atcelt sūtīšanu.", + "other": "Tagadvisas atkārtoti sūtīt vai visas atcelt. Tu vari atzīmēt arī individuālas ziņas, kuras atkārtoti sūtīt vai atcelt." + }, + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Šeit neviena nav. Ja vēlies kādu uzaicināt vai atslēgt paziņojumu par tukšu istabu?", + "Light theme": "Gaiša ādiņa", + "Dark theme": "Tumša ādiņa", + "Status.im theme": "Status.im ādiņa", + "Ignored Users": "Ignorētie lietotāji", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privātumu augstu respektējam, tādēļ analītikas mērķiem nevācam nekādus personas un identificējamus datus.", + "Learn more about how we use analytics.": "Sīkāk par to, kā tiek izmantota analītika.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Epasts ir nosūtīts uz %(emailAddress)s. Izmanto epastā nosūtīto tīmekļa saiti un tad noklikšķini zemāk.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Lūdzu ņem vērā, ka Tu pieraksties %(hs)s serverī, nevis matrix.org serverī.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Šis bāzes serveris neatbalsta nevienu pierakstīšanās metodi, kuru piedāvā šis Riot klients.", + "Sign in to get started": "Pierakstīties, lai sāktu", + "Ignores a user, hiding their messages from you": "Ignorē lietotāju, Tev nerādot viņa sūtītās ziņas", + "Stops ignoring a user, showing their messages going forward": "Atceļ lietotāja ignorēšanu, rādot viņa turpmāk sūtītās ziņas", + "Notify the whole room": "Paziņot visai istabai", + "Room Notification": "Istabas paziņojums", + "Disable Community Filter Panel": "Atspējot kopienas filtra paneli", + "Your key share request has been sent - please check your other devices for key share requests.": "Tavs atslēgu apmaiņas pieprasījums nosūtīts - lūdzu pārbaudi citas savas ierīces attiecībā uz atslēgu apmaiņu.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Atslēgu apmaiņas pieprasījumi Tavām citām ierīcēm tiek nosūtīti automātiski. Ja citās savās ierīcēs atslēdzi vai noraidīji atslēgu apmaiņas pieprasījumu, spiediet šeit lai pieprasītu atslēgas šai sesijai atkārtoti.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Ja citās Tavās ierīcēs nav atslēgas priekš šīs ziņas, Tu nevarēsi to atšifrēt.", + "Key request sent.": "Atslēgas pieprasījums nosūtīts.", + "Re-request encryption keys from your other devices.": "Atkārtoti pieprasīt šifrēšanas atslēgas no citām savām ierīcēm.", + "%(user)s is a %(userRole)s": "%(user)s ir %(userRole)s", + "Code": "Kods", + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)snoraidīja viņu uzaicinājumu %(count)s reizes", + "one": "%(oneUser)snoraidīja uzaicinājumu" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)satsauca savus uzaicinājumus %(count)s reizes", + "one": "%(oneUser)satsauca savu uzaicinājumu" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s izmainīja savu vārdu %(count)s reizes", + "one": "%(oneUser)s izmainīja savu vārdu" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s nomainīja savu avataru %(count)s reizes", + "one": "%(severalUsers)snomainīja savu avataru" + }, + "%(items)s and %(count)s others": { + "one": "%(items)s un viens cits", + "other": "%(items)s un %(count)s citus" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)snomainīja savu avataru %(count)s reizes", + "one": "%(oneUser)snomainīja savu avataru" + }, + "Add users to the community summary": "Pievienot lietotājus kopienas kopsavilkumam", + "Who would you like to add to this summary?": "Kuru lietotāju Tu vēlies pievienot šim kopsavilkumam?", + "Failed to add the following users to the summary of %(groupId)s:": "%(groupId)s kopsavilkumam neizdevās pievienot šādus lietotājus:", + "Add a User": "Pievienot lietotāju", + "Failed to remove a user from the summary of %(groupId)s": "Neizdevās dzēst lietotāju no %(groupId)s kopsavilkuma", + "The user '%(displayName)s' could not be removed from the summary.": "Lietotājs '%(displayName)s' nevarēja tikt dzēsts no kopsavilkuma.", + "Failed to update community": "Neizdevās aktualizēt kopienu", + "Unable to accept invite": "Nav iespējams pieņemt uzaicinājumu", + "Unable to reject invite": "Nav iespējams noraidīt uzaicinājumu", + "Leave %(groupName)s?": "Atstāt %(groupName)s?", + "%(inviter)s has invited you to join this community": "%(inviter)s uzaicina Tevi pievienoties šai kopienai", + "You are an administrator of this community": "Tu esi šīs kopienas administrators", + "You are a member of this community": "Tu esi šīs kopienas biedrs", + "Long Description (HTML)": "Garais apraksts (HTML)", + "Community %(groupId)s not found": "Kopiena %(groupId)s nav atrasta", + "Your Communities": "Tavas kopienas", + "Did you know: you can use communities to filter your Riot.im experience!": "Vai zināji: Tu vari izmantot kopienas, lai filtrētu (atlasītu) savu Riot.im pieredzi!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Lai uzstādītu filtru, uzvelc kopienas avataru uz filtru paneļa ekrāna kreisajā malā. Lai redzētu tikai istabas un cilvēkus, kas saistīti ar šo kopienu, Tu vari klikšķināt uz avatara filtru panelī jebkurā brīdī.", + "Create a new community": "Izveidot jaunu kopienu", + "Clear filter": "Attīrīt filtru", + "Debug Logs Submission": "Iesniegt atutošanas logfailus", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ja esi paziņojis par kļūdu caur GitHub, atutošanas logfaili var mums palīdzēt identificēt problēmu. Atutošanas logfaili satur programmas lietošanas datus, tostarp Tavu lietotājvārdu, istabu/grupu Id vai aliases, kuras esi apmeklējis un citu lietotāju lietotājvārdus. Tie nesatur pašas ziņas.", + "Submit debug logs": "Iesniegt atutošanas logfailus", + "Opens the Developer Tools dialog": "Atver Izstrādātāja instrumentus", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Skatījis %(displayName)s (%(userName)s) %(dateTime)s", + "Fetching third party location failed": "Neizdevās iegūt trešās puses atrašanās vietu", + "A new version of Riot is available.": "Pieejama jauna Riot versija.", + "Couldn't load home page": "Neizdevās ielādēt sākumlapu", + "Send Account Data": "Sūtīt konta datus", + "All notifications are currently disabled for all targets.": "Visiem saņēmējiem visi paziņojumi ir atspējoti.", + "Uploading report": "Augšuplādē atskaiti", + "Sunday": "svētdiena", + "Notification targets": "Paziņojuma mērķi", + "Today": "šodien", + "Failed to get protocol list from Home Server": "Neizdevās iegūt protokolu sarakstu no Bāzes servera", + "You are not receiving desktop notifications": "Darbvirsmas paziņojumi netiek saņemti", + "Friday": "piektdiena", + "Update": "Aktualizēt", + "What's New": "Kas jauns", + "Add an email address above to configure email notifications": "Lai konfigurētu epasta paziņojumus, pievieno epasta adresi", + "Expand panel": "Izvērst paneli", + "On": "ieslēgts", + "%(count)s Members": { + "other": "%(count)s biedru", + "one": "%(count)s biedru" + }, + "Filter room names": "Filtrēt pēc istabu nosaukuma", + "Changelog": "Izmaiņu saraksts (vēsture)", + "Waiting for response from server": "Gaidām atbildi no servera", + "Send Custom Event": "Sūtīt individuālu notikumu", + "Advanced notification settings": "Paziņojumu papildus iestatījumi", + "Failed to send logs: ": "Neizdevās nosūtīt logfailus: ", + "delete the alias.": "dzēst aliasi/aizstājējvārdu.", + "To return to your account in future you need to set a password": "Lai nākotnē atgrieztos savā kontā, nepieciešams iestatīt paroli", + "Forget": "Aizmirst", + "#example": "#piemērs", + "Hide panel": "Slēpt paneli", + "You cannot delete this image. (%(code)s)": "Šo attēlu nevar izdzēst (%(code)s)", + "Cancel Sending": "Atcelt sūtīšanu", + "This Room": "šajā istabā", + "The Home Server may be too old to support third party networks": "Bāzes serveris var būt pārāk novecojis, lai ļautu izmantot trešo pušu tīmekļa resursus", + "Noisy": "ar skaņu", + "Error saving email notification preferences": "Kļūda saglabājot epasta notifikāciju paziņojumu uzstādījumus", + "Messages containing my display name": "Ziņas, kuras satur manu redzamo vārdu", + "Messages in one-to-one chats": "Ziņas viens-pret-vienu čatos", + "Unavailable": "Nesasniedzams", + "View Decrypted Source": "Skatīt atšifrētu avotu", + "Failed to update keywords": "Neizdevās aktualizēt atslēgvārdus", + "Notes:": "Piezīmes:", + "remove %(name)s from the directory.": "dzēst %(name)s no kataloga.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Paziņojumi par šādiem atslēgvārdiem atbilst noteikumiem, kurus šeit nevar parādīt:", + "Safari and Opera work too.": "Safari un Opera arī nav skādējami.", + "Please set a password!": "Lūdzu iestati paroli!", + "You have successfully set a password!": "Esi veiksmīgi iestatījis(usi) paroli!", + "An error occurred whilst saving your email notification preferences.": "Saglabājot Tavus epasta paziņojumu uzstādījumus, radās kļūda.", + "Explore Room State": "Noskaidrot istabas statusu", + "Source URL": "Avota URL adrese", + "Messages sent by bot": "Botu nosūtītās ziņas", + "Filter results": "Filtrēt rezultātus", + "Members": "Biedri", + "No update available.": "Nav pieejamu aktualizāciju.", + "Resend": "Nosūtīt atkārtoti", + "Files": "Faili", + "Collecting app version information": "Tiek iegūta programmas versijas informācija", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Dzēst istabas aliasi/aizstājējvārdu %(alias)s un dzēst %(name)s no kataloga?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Tas atļaus Tev atgriezties savā kontā pēc izrakstīšanās, un pierakstīties no citām ierīcēm.", + "Keywords": "Atslēgvārdi", + "Enable notifications for this account": "Iespējot paziņojumus šim kontam", + "Directory": "Katalogs", + "Invite to this community": "Uzaicināt šajā kopienā", + "Failed to get public room list": "Neizdevās iegūt publisko istabu sarakstu", + "Messages containing keywords": "Ziņas, kuras satur atslēgvārdus", + "Room not found": "Istaba netika atrasta", + "Tuesday": "otrdiena", + "Enter keywords separated by a comma:": "Ievadi atslēgvārdus, atdalītus ar komatu:", + "Search…": "Meklēju…", + "You have successfully set a password and an email address!": "Esi veiksmīgi iestatījis(usi) paroli un epasta adresi!", + "Remove %(name)s from the directory?": "Dzēst %(name)s no kataloga?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot izmanto daudzas advancētas tīmekļa pārlūka iespējas, no kurām dažas var nebūt pieejamas vai ir eksperimentālas Tavā pašreizējajā pārlūkā.", + "Event sent!": "Notikums nosūtīts!", + "Preparing to send logs": "Gatavojos nosūtīt atutošanas logfailus", + "Enable desktop notifications": "Iespējot darbvirsmas paziņojumus", + "Explore Account Data": "Aplūkot konta datus", + "All messages (noisy)": "Visas ziņas (ar skaņu)", + "Saturday": "sestdiena", + "Remember, you can always set an email address in user settings if you change your mind.": "Atceries, ka vienmēr vari iestatīt epasta adresi lietotāja uzstādījumos, ja pārdomā.", + "Direct Chat": "Tiešais čats", + "The server may be unavailable or overloaded": "Serveris nav pieejams vai ir pārslogots", + "Reject": "Noraidīt", + "Failed to set Direct Message status of room": "Neizdevās iestatīt istabas tiešās ziņas statusu", + "Monday": "pirmdiena", + "Remove from Directory": "Dzēst no kataloga", + "Enable them now": "Iespējot tos tagad", + "Forward Message": "Pārsūtīt ziņu", + "Messages containing my user name": "Ziņas, kuras satur manu lietotājvārdu", + "Toolbox": "Instrumentārijs", + "Collecting logs": "Tiek iegūti logfaili", + "more": "vairāk", + "GitHub issue link:": "GitHub problēmpaziņojuma saite:", + "You must specify an event type!": "Jānorāda notikuma tips!", + "(HTTP status %(httpStatus)s)": "(HTTP statuss %(httpStatus)s)", + "All Rooms": "visās istabās", + "Please install Chrome or Firefox for the best experience.": "Labāko lietošanas pieredzi gūsi uzstādot pārlūkprogrammu Chromium vai Firefox.", + "Wednesday": "trešdiena", + "You cannot delete this message. (%(code)s)": "Tu nevari dzēst šo ziņu. (%(code)s)", + "Quote": "Citāts", + "Send logs": "Nosūtīt logfailus", + "All messages": "Visas ziņas", + "Call invitation": "Uzaicinājuma zvans", + "Downloading update...": "Lejupielādēju aktualizāciju...", + "State Key": "Stāvokļa atslēga", + "Failed to send custom event.": "Individuālo notikumu nosūtīt neizdevās.", + "What's new?": "Kas jauns?", + "Notify me for anything else": "Paziņot man par jebko citu", + "When I'm invited to a room": "Kad esmu uzaicināts/a istabā", + "Can't update user notification settings": "Neizdodas atjaunot lietotāja paziņojumu iestatījumus", + "Notify for all other messages/rooms": "Paziņot par visām citām ziņām/istabām", + "Unable to look up room ID from server": "Nav iespējams no servera iegūt istabas Id", + "Couldn't find a matching Matrix room": "Atbilstoša Matrix istaba netika atrasta", + "Invite to this room": "Uzaicināt uz šo istabu", + "Search for a room": "Meklēt istabu", + "Thursday": "ceturtdiena", + "I understand the risks and wish to continue": "Apzinos riskus un vēlos turpināt", + "Logs sent": "Logfaili nosūtīti", + "Back": "Atpakaļ", + "Reply": "Atbildēt", + "Show message in desktop notification": "Parādīt ziņu darbvirsmas paziņojumos", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Atutošanas logfaili satur programmas datus, ieskaitot Tavu lietotājvārdu, istabu/grupu ID vai aliases, kuras esi apmeklējis un citu lietotāju lietotājvārdus. Tie nesatur pašas ziņas.", + "Unhide Preview": "Rādīt priekšskatījumu", + "Unable to join network": "Nav iespējams pievienoties tīklam", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Droši vien Tu konfigurēji tās kādā citā Matrix klientā, nevis Riot. Nav iespējams tos pārkonfigurēt ar Riot, bet tie joprojām tiek izmantoti", + "Sorry, your browser is not able to run Riot.": "Atvaino, diemžēl tavs tīmekļa pārlūks nespēj darbināt Riot.", + "Uploaded on %(date)s by %(user)s": "Augšuplādēja %(user)s %(date)s", + "Messages in group chats": "Ziņas grupas čatos", + "Yesterday": "vakar", + "Error encountered (%(errorDetail)s).": "Gadījās kļūda (%(errorDetail)s).", + "Login": "Ierakstīties", + "Low Priority": "Zemas prioritātes", + "Unable to fetch notification target list": "Neizdevās iegūt paziņojumu mērķu sarakstu", + "Set Password": "Iestatīt paroli", + "Enable audible notifications in web client": "Iespējot skaņus paziņojumus web klientā", + "Off": "izslēgts", + "Riot does not know how to join a room on this network": "Riot nezin kā pievienoties šajā tīklā esošajai istabai", + "Mentions only": "Vienīgi atsauces", + "You can now return to your account after signing out, and sign in on other devices.": "Tagad vari atgriezties savā kontā arī pēc izrakstīšanās, un pierakstīties no citām ierīcēm.", + "Enable email notifications": "Iespējot paziņojumus pa epastu", + "Event Type": "Notikuma tips", + "Download this file": "Lejupielādēt šo failu", + "Pin Message": "Piekabināt ziņu", + "Failed to change settings": "Neizdevās nomainīt iestatījumus", + "View Community": "Skatīt kopienu", + "Developer Tools": "Attīstītāja instrumenti", + "View Source": "Skatīt avotu", + "Event Content": "Notikuma saturs", + "Thank you!": "Tencinam!", + "Collapse panel": "Sakļaut (saritināt) paneli", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Tavā pašreizējā pārlūkā aplikācijas izskats un uzvedība var būt pilnīgi neatbilstoša, kā arī dažas no visām funkcijām var nedarboties. Ja vēlies turpināt izmantot šo pārlūku, Tu vari arī turpināt, apzinoties, ka šajā gadījumā esi viens/a ar iespējamo problēmu!", + "Checking for an update...": "Lūkojos pēc aktualizācijas...", + "There are advanced notifications which are not shown here": "Pastāv papildus paziņojumi, kuri šeit netiek rādīti", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s caur %(browserName)s un %(osName)s", + "Discussion of the Identity Service API": "Diskusija par Identitātes servisa API", + "Riot Desktop on %(platformName)s": "Riot darbvirsma %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot netiek atbalstīts mobilajā versijā. Instalēt aplikāciju?", + "Unknown device": "Nezināma ierīce", + "You need to be using HTTPS to place a screen-sharing call.": "Lai izmantotu ekrāna kopīgošanas zvanu, nepieciešams izmantot HTTPS savienojumu.", + "Welcome to Riot.im": "Esiet gaidīti Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizēta, šifrēta čata & kopdarbošanās sistēma uz [matrix] bāzes", + "Search the room directory": "Meklēt istabu katalogā", + "Chat with Riot Bot": "Pačatot ar Riot botu", + "Get started with some tips from Riot Bot!": "Iepazīsties ar dažiem knifiem no Riot bota!", + "General discussion about Matrix and Riot": "Galvenā diskusija par Matrix un Riot", + "Discussion of all things Matrix!": "Diskusija par visām ar Matrix saistītajām lietām!", + "Riot/Web & Desktop chat": "Riot/Web & darbvirsmas čats", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk čats", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk čats", + "Matrix technical discussions": "Matrix tehniskās diskusijas", + "Running Matrix services": "Matrix pakalpojumu izmantošana", + "Community-run support for Synapse": "\"Synapse\" komūnas nodrošināts atbalsts", + "Admin support for Dendrite": "Administrotora atbalsts \"Dendrite\"", + "Announcements about Synapse releases": "Paziņojumi par \"Synapse\" izlaidumiem", + "Support for those using and running matrix-appservice-irc": "Atbalsts tiem, kuri izmanto matrix-appservice-irc", + "Building services on Matrix": "Uz Matrix bāzētu pakalpojumu izveide", + "Support for those using the Matrix spec": "Atbalsts tiem, kuri izmanto Matrix specifikācijas", + "Design and implementation of E2E in Matrix": "E2E arhitektūra un iedzīvināšana Matrix", + "Implementing VR services with Matrix": "VR pakalpojumu iedzīvināšana Matrix", + "Implementing VoIP services with Matrix": "VoIP pakalpojumu iedzīvināšana Matrix", + "Support for those using, running and writing other bridges": "Atbalsts tiem, kuri izmanto un rada citus \"tiltu\" risinājumus", + "Contributing code to Matrix and Riot": "Dot ieguldījumu Matrix and Riot kodā un tulkojumā", + "Dev chat for the Riot/Web dev team": "Riot/Web izstrādātāju komandas čats", + "Dev chat for the Dendrite dev team": "Dendrite izstrādatāju komandas čats", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix-ā pastāv daudzas neatkarīgas un/vai eksistējošiem tīmekļa resursiem (Slack, IRC, Gitter u.tml.) piesaistītas istabas. Ieskaties katalogā!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Tu vari lietot \"custom\" servera opcijas, lai ielogotos citos Matrix serveros, norādot citu Bāzes servera URL.
Tas atļaus tev lietot Riot ar esošo Matrix kontu uz cita Bāzes servera.

Tu arī vari uzstādīt atsevišķu Identitāšu serveri, taču tad Tev nebūs iespēju uzaicināt lietotājus, izmantojot epasta adresi, vai pašam tikt uzaicinātam, izmantojot epasta adresi." +} \ No newline at end of file diff --git a/riot/i18n/nb_NO.json b/riot/i18n/nb_NO.json new file mode 100644 index 0000000..4a92d30 --- /dev/null +++ b/riot/i18n/nb_NO.json @@ -0,0 +1,128 @@ +{ + "Room directory": "Romkatalog", + "This email address is already in use": "Denne e-post adressen er allerede i bruk", + "This phone number is already in use": "Dette mobilnummeret er allerede i bruk", + "Failed to verify email address: make sure you clicked the link in the email": "Klarte ikke verifisere e-post adressen: dobbelsjekk at du trykket på lenken i e-posten", + "The platform you're on": "Platformen du bruker", + "The version of Riot.im": "Versjonen av Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Om du er logget inn eller ei (vi loggfører ikke brukernavnet ditt)", + "Your language of choice": "Ditt valgte språk", + "Your homeserver's URL": "Din hjemservers URL", + "Fetching third party location failed": "Kunne ikke hente tredjeparts lokalisering", + "Advanced notification settings": "Avanserte varslingsinnstillinger", + "Sunday": "Søndag", + "Guests can join": "Gjester kan bli med", + "Messages sent by bot": "Meldinger sendt av bot", + "Notification targets": "Mål for varsel", + "Failed to set direct chat tag": "Kunne ikke angi direkte chat-tagg", + "Today": "I dag", + "Files": "Filer", + "You are not receiving desktop notifications": "Du mottar ikke skrivebords varsler", + "Friday": "Fredag", + "Notifications": "Varsler", + "Unable to fetch notification target list": "Kunne ikke hente varsel-mål liste", + "Add an email address above to configure email notifications": "Legg til en epost adresse for å sette opp epost varsling", + "Expand panel": "Utvid panel", + "On": "På", + "Filter room names": "Filtrer romnavn", + "Leave": "Forlat", + "All notifications are currently disabled for all targets.": "Alle varsler er deaktivert for alle mottakere.", + "delete the alias.": "Slett aliaset.", + "Forget": "Glem", + "World readable": "Lesbar for alle", + "You cannot delete this image. (%(code)s)": "Du kan ikke slette dette bildet. (%(code)s)", + "Source URL": "Kilde URL", + "The Home Server may be too old to support third party networks": "Hjemme-serveren kan være for gammel til å støtte tredjeparts-nettverk", + "Resend": "Send på nytt", + "Error saving email notification preferences": "Feil ved lagring av e-postvarselinnstillinger", + "Messages in one-to-one chats": "Meldinger i en-til-en samtaler", + "View Decrypted Source": "Vis dekryptert kilde", + "Failed to update keywords": "Kunne ikke oppdatere nøkkelord", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Varsler på de følgende nøkkelordene følger regler som ikke kan vises her:", + "Room not found": "Rommet ble ikke funnet", + "Favourite": "Favoritt", + "Cancel Sending": "Avbryt sending", + "Failed to add tag %(tagName)s to room": "Kunne ikke legge til tagg %(tagName)s til rom", + "Members": "Medlemmer", + "Noisy": "Bråkete", + "Failed to get protocol list from Home Server": "Kunne ikke hente protokolliste fra Hjemme-Server", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slett rom alias %(alias)s og fjern %(name)s fra katalogen?", + "Enable notifications for this account": "Aktiver varsler for denne konto", + "Directory": "Katalog", + "Failed to get public room list": "Kunne ikke hente offentlig romliste", + "Messages containing keywords": "Meldinger som inneholder nøkkelord", + "When I'm invited to a room": "Når jeg blir invitert til et rom", + "Tuesday": "Tirsdag", + "Enter keywords separated by a comma:": "Angi nøkkelord adskilt med komma:", + "I understand the risks and wish to continue": "Jeg forstår risikoen og ønsker å fortsette", + "Remove %(name)s from the directory?": "Fjern %(name)s fra katalogen?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot benytter mange avanserte nettleserfunksjoner, og noen av disse er ikke tilgjengelige eller er eksperimentelle på din nåværende nettleser.", + "Enable desktop notifications": "Aktiver skrivebordsvarsler", + "Unnamed room": "Rom uten navn", + "All messages (noisy)": "Alle meldinger (høy)", + "Direct Chat": "Direkte Chat", + "The server may be unavailable or overloaded": "Serveren kan være utilgjengelig eller overbelastet", + "Reject": "Avvis", + "Failed to set Direct Message status of room": "Kunne ikke angi status for direkte melding i rommet", + "Monday": "Mandag", + "Remove from Directory": "Fjern fra katalogen", + "Enable them now": "Aktiver dem nå", + "Messages containing my user name": "Meldinger som inneholder mitt brukernavn", + "more": "mer", + "Search for a room": "Søk etter et rom", + "Failed to forget room %(errCode)s": "Kunne ikke glemme rommet %(errCode)s", + "Wednesday": "Onsdag", + "Error": "Feil", + "unknown error code": "ukjent feilkode", + "Call invitation": "Anropsinvitasjon", + "Messages containing my display name": "Meldinger som inneholder mitt visningsnavn", + "powered by Matrix": "benytter seg av Matrix", + "Notify me for anything else": "Varsle meg om alt annet", + "View Source": "Vis kilde", + "Keywords": "Nøkkelord", + "Close": "Lukk", + "Can't update user notification settings": "Kan ikke oppdatere brukervarsel innstillinger", + "Notify for all other messages/rooms": "Varsler om alle andre meldinger/rom", + "Unable to look up room ID from server": "Kunne ikke slå opp rom-ID fra serveren", + "Couldn't find a matching Matrix room": "Kunne ikke finne et samsvarende Matrix rom", + "Invite to this room": "Inviter til dette rommet", + "You cannot delete this message. (%(code)s)": "Du kan ikke slette denne meldingen. (%(code)s)", + "Thursday": "Torsdag", + "All messages": "Alle meldinger", + "Unable to join network": "Kunne ikke bli med i nettverket", + "Sorry, your browser is not able to run Riot.": "Beklager, din nettleser er ikke i stand til å kjøre Riot.", + "Uploaded on %(date)s by %(user)s": "Lastet opp den %(date)s av %(user)s", + "Messages in group chats": "Meldinger i gruppesamtaler", + "Yesterday": "I går", + "Low Priority": "Lav Prioritet", + "Riot does not know how to join a room on this network": "Riot vet ikke hvordan man kan komme inn på et rom på dette nettverket", + "An error occurred whilst saving your email notification preferences.": "En feil oppsto i forbindelse med lagring av epost varsel innstillinger.", + "Enable audible notifications in web client": "Aktiver lyd-varsel i webklient", + "remove %(name)s from the directory.": "fjern %(name)s fra katalogen.", + "Off": "Av", + "#example": "#eksempel", + "Failed to remove tag %(tagName)s from room": "Kunne ikke fjerne tagg %(tagName)s fra rommet", + "Remove": "Fjern", + "Enable email notifications": "Aktiver e-postvarsler", + "No rooms to show": "Ingen rom å vise", + "Download this file": "Last ned filen", + "Failed to change settings": "Kunne ikke endre innstillingene", + "Unhide Preview": "Vis forhåndsvisning", + "Custom Server Options": "Tilpassede serveralternativer", + "Quote": "Sitat", + "Collapse panel": "Skjul panel", + "Saturday": "Lørdag", + "There are advanced notifications which are not shown here": "Det er avanserte varsler som ikke vises her", + "Dismiss": "Avvis", + "Riot is not supported on mobile web. Install the app?": "Riot er ikke støttet av mobil-nettlesere. Ønsker De å innstalere appen?", + "Riot Desktop on %(platformName)s": "Riot på skrivebordet er på %(platformName)s", + "Unknown device": "Ukjent enhet", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "De er nødt til å benytte HTTPS for å kunne ha en samtale med skjermdeling.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "De kan benytte brukerdefinerte server-innstillinger for å kunne logge Dem inn på andre Matrix-servere ved å spesifisere en annen hjemmeserver-adresse.
Dette tillater Dem til å bruke Riot med en eksisterende Matrix-konto på en annen hjemmeserver.

De kan i tillegg definere en egen hjemmeserver-identitet, men De kan da ikke invitere andre brukere via email, og De kan heller ikke bli invitert via email selv.", + "Welcome to Riot.im": "Velkommen skal De være til Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & sammabeid drevet av [matrix]", + "Search the room directory": "Søk i romutvalget", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Allerede finnes det alskens rom i Matrix, sammenkoblet til eksisterende nettverk (Slack, IRC, Gitter osv.) eller selvstendig. Dersom De formoder, kan De kikke på utvalget!", + "Chat with Riot Bot": "Nettprat med Riot Bot" +} \ No newline at end of file diff --git a/riot/i18n/nl.json b/riot/i18n/nl.json new file mode 100644 index 0000000..324c819 --- /dev/null +++ b/riot/i18n/nl.json @@ -0,0 +1,1334 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Voer alsjeblieft de verificatiecode in die is verstuurd naar +%(msisdn)s", + "%(targetName)s accepted an invitation.": "%(targetName)s heeft een uitnodiging geaccepteerd.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s heeft de uitnodiging voor %(displayName)s geaccepteerd.", + "Account": "Account", + "Access Token:": "Toegangstoken:", + "Add email address": "Voeg een e-mailadres toe", + "Add phone number": "Voeg een telefoonnummer toe", + "Admin": "Beheerder", + "Advanced": "Geavanceerd", + "Algorithm": "Algoritme", + "Always show message timestamps": "Laat altijd tijdstempels van berichten zien", + "Authentication": "Authenticatie", + "%(items)s and %(lastItem)s": "%(items)s en %(lastItem)s", + "and %(count)s others...": { + "other": "en %(count)s andere...", + "one": "en één andere..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s en %(lastPerson)s zijn aan het typen", + "A new password must be entered.": "Er moet een nieuw wachtwoord worden ingevoerd.", + "%(senderName)s answered the call.": "%(senderName)s heeft deelgenomen aan het audiogesprek.", + "An error has occurred.": "Er is een fout opgetreden.", + "Anyone who knows the room's link, apart from guests": "Iedereen die de link van de ruimte weet, behalve gasten", + "Anyone who knows the room's link, including guests": "Iedereen die link van de ruimte weet, inclusief gasten", + "Are you sure?": "Weet je het zeker?", + "Are you sure you want to reject the invitation?": "Weet je zeker dat je de uitnodiging wilt weigeren?", + "Attachment": "Bijlage", + "Autoplay GIFs and videos": "Start GIFs en videos automatisch", + "%(senderName)s banned %(targetName)s.": "%(senderName)s heeft %(targetName)s verbannen.", + "Ban": "Verban", + "Banned users": "Verbannen gebruikers", + "Bans user with given id": "Verbant de gebruiker met het gegeven ID", + "Blacklisted": "Buitengesloten", + "Bulk Options": "Bulk opties", + "Call Timeout": "Gesprek time-out", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Kan niet met de thuisserver verbinden via HTTP wanneer er een HTTPS-URL in je browser balk staat. Gebruik HTTPS of activeer onveilige scripts.", + "Can't load user settings": "Kan de gebruikersinstellingen niet laden", + "Change Password": "Wachtwoord veranderen", + "%(senderName)s changed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto veranderd.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s heeft het machtsniveau van %(powerLevelDiffText)s gewijzigd.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s heeft de ruimtenaam van %(roomName)s gewijzigd.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s heeft het onderwerp gewijzigd naar \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Veranderingen aan wie de geschiedenis kan lezen worden alleen maar toegepast op toekomstige berichten in deze ruimte", + "Changes your display nickname": "Verandert jouw weergavenaam", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Het veranderen van het wachtwoord zal op het moment alle eind-tot-eind encryptie sleutels resetten, wat alle versleutelde gespreksgeschiedenis onleesbaar zou maken, behalve als je eerst je ruimtesleutels exporteert en achteraf opnieuw importeert. Dit zal worden verbeterd in de toekomst.", + "Clear Cache and Reload": "Cache Legen en Herladen", + "Clear Cache": "Cache Legen", + "Click here to fix": "Klik hier om op te lossen", + "Click to mute audio": "Klik om audio te dempen", + "Click to mute video": "Klik om de video te dempen", + "click to reveal": "klik om te laten zien", + "Click to unmute video": "Klik om de demping van de video op te heffen", + "Click to unmute audio": "Klik om het dempen van het geluid op te heffen", + "Command error": "Opdrachtfout", + "Commands": "Opdrachten", + "Conference call failed.": "Conferentiegesprek mislukt.", + "Conference calling is in development and may not be reliable.": "Conferentiegesprekken zijn nog in ontwikkelingen en kunnen onbetrouwbaar zijn.", + "Conference calls are not supported in encrypted rooms": "Conferentiegesprekken worden niet ondersteunt in versleutelde ruimtes", + "Conference calls are not supported in this client": "Conferentiegesprekken worden niet ondersteunt in deze client", + "Confirm password": "Bevestigen wachtwoord", + "Confirm your new password": "Bevestig je nieuwe wachtwoord", + "Continue": "Doorgaan", + "Could not connect to the integration server": "Mislukt om te verbinden met de integratieserver", + "Cancel": "Annuleren", + "Accept": "Accepteren", + "Active call (%(roomName)s)": "Actief gesprek (%(roomName)s)", + "Add": "Toevoegen", + "Add a topic": "Een onderwerp toevoegen", + "Admin Tools": "Beheerdershulpmiddelen", + "VoIP": "VoiP", + "Missing Media Permissions, click here to request.": "Ontbrekende mediatoestemmingen, klik hier om aan te vragen.", + "No Microphones detected": "Geen microfoons gevonden", + "No Webcams detected": "Geen webcams gevonden", + "No media permissions": "Geen mediatoestemmingen", + "You may need to manually permit Riot to access your microphone/webcam": "U moet Riot wellicht handmatig toestemming geven om uw microfoon/webcam te gebruiken", + "Default Device": "Standaardapparaat", + "Microphone": "Microfoon", + "Camera": "Camera", + "Hide removed messages": "Verwijderde berichten verbergen", + "Alias (optional)": "Alias (optioneel)", + "Anyone": "Iedereen", + "Are you sure you want to leave the room '%(roomName)s'?": "Weet u zeker dat u de ruimte '%(roomName)s' wil verlaten?", + "Are you sure you want to upload the following files?": "Weet u zeker dat u de volgende bestanden wil uploaden?", + "Click here to join the discussion!": "Klik hier om mee te doen aan de discussie!", + "Close": "Sluiten", + "%(count)s new messages": { + "one": "%(count)s nieuw bericht", + "other": "%(count)s nieuwe berichten" + }, + "Create new room": "Een nieuwe ruimte maken", + "Custom Server Options": "Aangepaste serverinstellingen", + "Dismiss": "Afwijzen", + "Error": "Fout", + "Failed to forget room %(errCode)s": "Ruimte vergeten mislukt %(errCode)s", + "Favourite": "Favoriet", + "Mute": "Dempen", + "Notifications": "Notificaties", + "Operation failed": "Actie mislukt", + "powered by Matrix": "mogelijk gemaakt door Matrix", + "Remove": "Verwijderen", + "Room directory": "Ruimtelijst", + "Settings": "Instellingen", + "Start chat": "Gesprek starten", + "unknown error code": "onbekende foutcode", + "Search": "Zoeken", + "OK": "OK", + "Failed to change password. Is your password correct?": "Wachtwoord wijzigen mislukt. Is uw wachtwoord juist?", + "Moderator": "Moderator", + "%(serverName)s Matrix ID": "%(serverName)s Matrix-ID", + "Name": "Naam", + "New password": "Nieuw wachtwoord", + "none": "geen", + "not set": "niet ingesteld", + "not specified": "niet opgegeven", + "(not supported by this browser)": "(niet ondersteund door deze browser)", + "": "", + "NOT verified": "NIET geverifieerd", + "No devices with registered encryption keys": "Geen apparaten met geregistreerde sleutels", + "No display name": "Geen weergavenaam", + "No more results": "Geen resultaten meer", + "No results": "Geen resultaten", + "No users have specific privileges in this room": "Geen gebruikers hebben specifieke privileges in deze ruimte", + "olm version:": "olm versie:", + "Password": "Wachtwoord", + "Password:": "Wachtwoord:", + "Passwords can't be empty": "Wachtwoorden kunnen niet leeg zijn", + "People": "Mensen", + "Permissions": "Toestemmingen", + "Phone": "Telefoonnummer", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s heeft een %(callType)s-gesprek gestart.", + "Privacy warning": "Privacywaarschuwing", + "Private Chat": "Privégesprek", + "Privileged Users": "Gebruikers met rechten", + "Profile": "Profiel", + "Public Chat": "Publiek Gesprek", + "Reason": "Reden", + "Reason: %(reasonText)s": "Reden: %(reasonText)s", + "Revoke Moderator": "Beheerder terugtrekken", + "Refer a friend to Riot:": "Laat een vriend weten over Riot:", + "Register": "Registreer", + "%(targetName)s rejected the invitation.": "%(targetName)s heeft de uitnodiging geweigerd.", + "Reject invitation": "Uitnodiging weigeren", + "Rejoin": "Opnieuw toetreden", + "Remote addresses for this room:": "Adres op afstand voor deze ruimte:", + "Remove Contact Information?": "Contactinformatie Verwijderen?", + "Send Invites": "Uitnodigingen versturen", + "Start a chat": "Gesprek starten", + "Start authentication": "Authenticatie starten", + "Start Chat": "Gesprek starten", + "Submit": "Bevestigen", + "Success": "Gereed", + "Tagged as: ": "Gelabeld als: ", + "Sun": "Zo", + "Mon": "Ma", + "Tue": "Di", + "Wed": "Wo", + "Thu": "Do", + "Fri": "Vr", + "Sat": "Za", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mrt", + "Apr": "Apr", + "May": "Mei", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dec", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Weergavenaam instellen:", + "Upload an avatar:": "Een avatar uploaden:", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Geen verbinding met de thuisserver - controleer je verbinding. Controleer het SSL-certificaat van de thuisserver en browser-extensies die verzoeken kunnen blokkeren.", + "Create an account": "Open een account", + "Cryptography": "Cryptografie", + "Current password": "Huidig wachtwoord", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s heeft de naam van de ruimte verwijderd.", + "Create a new chat or reuse an existing one": "Maak een nieuw gesprek aan of hergebruik een al bestaand gesprek", + "Create Room": "Maak een ruimte aan", + "Curve25519 identity key": "Curve25519-identiteitssleutel", + "/ddg is not a command": "/ddg is geen commando", + "Deactivate Account": "Account Deactiveren", + "Deactivate my account": "Mijn account deactiveren", + "Decline": "Weigeren", + "Decrypt %(text)s": "Ontsleutel %(text)s", + "Decryption error": "Ontsleutelfout", + "Delete": "Verwijderen", + "Device already verified!": "Apparaat reeds geverifieerd!", + "Device ID": "Apparaat ID", + "Device ID:": "Apparaat ID:", + "device id: ": "apparaat id: ", + "Device key:": "Apparaat sleutel:", + "Devices": "Apparaten", + "Devices will not yet be able to decrypt history from before they joined the room": "Apparaten kunnen nog niet de geschiedenis van voordat ze de ruimte betraden ontsleutelen", + "Direct chats": "Privégesprekken", + "Disable Notifications": "Notificaties uitschakelen", + "Disinvite": "Uitnodiging terugtrekken", + "Display name": "Weergavenaam", + "Don't send typing notifications": "Geen typnotificatie sturen", + "Download %(text)s": "%(text)s Downloaden", + "Drop File Here": "Plaats Bestand Hier", + "Ed25519 fingerprint": "Ed25519-vingerafdruk", + "Email": "E-mail", + "Email address": "E-mailadres", + "Email address (optional)": "E-mailadres (optioneel)", + "Claimed Ed25519 fingerprint key": "Vereiste Ed25519 vingerafdruk sleutel", + "Custom": "Aangepast", + "Custom level": "Aangepast niveau", + "Deops user with given id": "Ontmachtigd gebruiker met het gegeven ID", + "Default": "Standaard", + "Displays action": "Geeft actie weer", + "Drop here to tag %(section)s": "Hiernaartoe verplaatsen om %(section)s te etiketteren", + "Email, name or matrix ID": "E-mail, naam of matrix-ID", + "Emoji": "Emoji", + "Enable encryption": "Versleuteling inschakelen", + "Enable Notifications": "Notificaties inschakelen", + "Encrypted by a verified device": "Versleuteld door een geverifieerd apparaat", + "Encrypted by an unverified device": "Versleuteld door een niet-geverifieerd apparaat", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Versleutelde berichten zullen nog niet zichtbaar zijn op applicaties die geen versleuteling ondersteunen", + "Encrypted room": "Versleutelde ruimte", + "Encryption is enabled in this room": "Versleuteling is ingeschakeld in deze ruimte", + "Encryption is not enabled in this room": "Versleuteling is niet ingeschakeld in deze ruimte", + "%(senderName)s ended the call.": "%(senderName)s heeft opgehangen.", + "End-to-end encryption information": "end-to-endbeveiligingsinformatie", + "End-to-end encryption is in beta and may not be reliable": "End-to-endbeveiliging is nog in bèta en kan onbetrouwbaar zijn", + "Enter Code": "Voer code in", + "Enter passphrase": "Voer wachtzin in", + "Error decrypting attachment": "Fout tijdens het ontsleutelen van de bijlage", + "Error: Problem communicating with the given homeserver.": "Fout: Er doet zich een probleem voor met het communiceren met de gegeven thuisserver.", + "Event information": "Gebeurtenis-informatie", + "Existing Call": "Bestaande oproep", + "Export": "Exporteren", + "Export E2E room keys": "Exporteer E2E-ruimte-sleutels", + "Failed to ban user": "Niet gelukt om de gebruiker te verbannen", + "Failed to change power level": "Niet gelukt om het machtsniveau te wijzigen", + "Failed to fetch avatar URL": "Niet gelukt om de avatar-URL op te halen", + "Failed to join room": "Niet gelukt om tot de ruimte toe te treden", + "Failed to leave room": "Niet gelukt om de ruimte te verlaten", + "Failed to load timeline position": "Niet gelukt om de tijdlijnpositie te laden", + "Failed to mute user": "Niet gelukt om de gebruiker te dempen", + "Failed to reject invite": "Niet gelukt om de uitnodiging te weigeren", + "Failed to reject invitation": "Niet gelukt om de uitnodiging te weigeren", + "Failed to save settings": "Niet gelukt om de instellingen op te slaan", + "Failed to send email": "Niet gelukt om de e-mail te versturen", + "Failed to send request.": "Niet gelukt om het verzoek te versturen.", + "Failed to set avatar.": "Niet gelukt om de avatar in te stellen.", + "Failed to set display name": "Niet gelukt om de weergavenaam in te stellen", + "Failed to set up conference call": "Niet gelukt om een vergadergesprek te maken", + "Failed to toggle moderator status": "Niet gelukt om de moderatorstatus te veranderen", + "Failed to unban": "Niet gelukt om te ontbannen", + "Failed to upload file": "Niet gelukt om het bestand te uploaden", + "Failed to upload profile picture!": "Niet gelukt om een profiel foto te uploaden!", + "Failed to verify email address: make sure you clicked the link in the email": "Niet gelukt om het e-mailadres te verifiëren: wees er zeker van dat je de link in de e-mail hebt aangeklikt", + "Failure to create room": "Het aanmaken van een ruimte is mislukt", + "Favourites": "Favorieten", + "Fill screen": "Scherm vullen", + "Filter room members": "Ruimteleden filteren", + "Forget room": "Ruimte vergeten", + "Forgot your password?": "Wachtwoord vergeten?", + "For security, this session has been signed out. Please sign in again.": "Voor veiligheidsredenen is deze sessie uitgelogd. Log alsjeblieft opnieuw in.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "In verband met veiligheidsredenen zullen alle end-to-endbeveiligingsleutels van deze browser verwijderd worden. Als je je gespreksgeschiedenis van toekomstige Riot sessies wilt kunnen ontsleutelen, exporteer en bewaar dan de ruimte sleutels.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s van %(fromPowerLevel)s naar %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Gasttoegang is uitgeschakeld op deze thuisserver.", + "Guests cannot join this room even if explicitly invited.": "Gasten kunnen niet tot deze ruimte toetreden, zelfs als ze expliciet uitgenodigd zijn.", + "Hangup": "Ophangen", + "Hide read receipts": "Leesbewijzen verbergen", + "Hide Text Formatting Toolbar": "Tekstopmaakgereedschapsbalk verbergen", + "Historical": "Historisch", + "Home": "Home", + "Homeserver is": "Thuisserver is", + "Identity Server is": "Identiteitsserver is", + "I have verified my email address": "Ik heb mijn e-mailadres geverifieerd", + "Import": "Importeren", + "Import E2E room keys": "E2E-ruimte-sleutels importeren", + "Incoming call from %(name)s": "Inkomende oproep van %(name)s", + "Incoming video call from %(name)s": "Inkomende video-oproep van %(name)s", + "Incoming voice call from %(name)s": "Inkomende spraakoproep van %(name)s", + "Incorrect username and/or password.": "Incorrecte gebruikersnaam en/of wachtwoord.", + "Incorrect verification code": "Incorrecte verificatiecode", + "Interface Language": "Interfacetaal", + "Invalid alias format": "Ongeldig naamformaat", + "Invalid address format": "Ongeldig adresformaat", + "Invalid Email Address": "Ongeldig e-mailadres", + "Invalid file%(extra)s": "Ongeldig bestand%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s heeft %(targetName)s uitgenodigd.", + "Invite new room members": "Nieuwe ruimte leden uitnodigen", + "Invited": "Uitgenodigd", + "Invites": "Uitnodigingen", + "Invites user with given id to current room": "Nodigt de gebruiker met het gegeven ID uit in de huidige ruimte", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' is niet een geldig formaat voor een adres", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' is niet een geldig formaat voor een naam", + "%(displayName)s is typing": "%(displayName)s is aan het typen", + "Sign in with": "Inloggen met", + "Join as voice or video.": "Toetreden als spraak of video.", + "Join Room": "Ruimte toetreden", + "%(targetName)s joined the room.": "%(targetName)s is tot de ruimte toegetreden.", + "Joins room with given alias": "Treed de ruimte toe met een gegeven naam", + "Jump to first unread message.": "Spring naar het eerste ongelezen bericht.", + "Labs": "Labs", + "Last seen": "Laatst gezien", + "Leave room": "Ruimte verlaten", + "%(targetName)s left the room.": "%(targetName)s heeft de ruimte verlaten.", + "Level:": "Niveau:", + "Local addresses for this room:": "Lokale adressen voor deze ruimte:", + "Logged in as:": "Ingelogd als:", + "Logout": "Uitloggen", + "Low priority": "Lage prioriteit", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s heeft de toekomstige ruimtegeschiedenis zichtbaar gemaakt voor alle ruimte deelnemers, vanaf het moment dat ze uitgenodigd zijn.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor alle ruimte deelnemers, vanaf het moment dat ze toegetreden zijn.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor alle ruimte deelnemers.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor iedereen.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s heeft de toekomstige ruimte geschiedenis zichtbaar gemaakt voor onbekend (%(visibility)s).", + "Manage Integrations": "Integraties beheren", + "Markdown is disabled": "Markdown is uitgeschakeld", + "Markdown is enabled": "Markdown ingeschakeld", + "matrix-react-sdk version:": "matrix-react-sdk-versie:", + "Message not sent due to unknown devices being present": "Bericht niet verzonden doordat er een onbekende apparaten aanwezig zijn", + "Missing room_id in request": "Het room_id mist in het verzoek", + "Missing user_id in request": "De user_id mist in het verzoek", + "Mobile phone number": "Mobiele-telefoonnummer", + "Mobile phone number (optional)": "Mobiele-telefoonnummer (optioneel)", + "Never send encrypted messages to unverified devices from this device": "Nooit versleutelde berichten vanaf dit apparaat naar niet geverifieerde apparaten versturen", + "Never send encrypted messages to unverified devices in this room from this device": "Nooit vanaf dit apparaat versleutelde berichten naar niet geverifieerde apparaten in deze ruimte sturen", + "New address (e.g. #foo:%(localDomain)s)": "Nieuw adres (bijv. #foo:%(localDomain)s)", + "New passwords don't match": "Nieuwe wachtwoorden komen niet overeen", + "New passwords must match each other.": "Nieuwe wachtwoorden moeten overeenkomen.", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Zodra versleuteling in een ruimte is ingeschakeld kan het niet meer worden uitgeschakeld (kan later wijzigen)", + "Only people who have been invited": "Alleen personen die zijn uitgenodigd", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Bekijk je e-mail en klik op de link die het bevat. Zodra dit klaar is, klik op verder gaan.", + "Power level must be positive integer.": "Machtsniveau moet een positief geheel getal zijn.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s heeft zijn of haar weergavenaam (%(oldDisplayName)s) verwijderd.", + "%(senderName)s removed their profile picture.": "%(senderName)s heeft zijn of haar profielfoto verwijderd.", + "Failed to kick": "Niet gelukt om te er uit te zetten", + "Press to start a chat with someone": "Druk op om een gesprek met iemand te starten", + "Remove %(threePid)s?": "%(threePid)s verwijderen?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s heeft een VoIP-gesprek aangevraagd.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Het wachtwoord veranderen betekent momenteel dat alle end-to-endbeveiligingssleutels op alle apparaten veranderen waardoor versleutelde gespreksgeschiedenis onleesbaar wordt, behalve als je eerst de ruimte sleutels exporteert en daarna opnieuw importeert. Dit zal in de toekomst verbeterd worden.", + "Results from DuckDuckGo": "Resultaten van DuckDuckGo", + "Return to login screen": "Naar het inlogscherm terugkeren", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot heeft geen permissie om je notificaties te versturen - controleer je browserinstellingen", + "Riot was not given permission to send notifications - please try again": "Riot heeft geen permissie gekregen om notificaties te versturen - probeer het opnieuw", + "riot-web version:": "riot-web versie:", + "Room %(roomId)s not visible": "Ruimte %(roomId)s is niet zichtbaar", + "Room Colour": "Ruimtekleur", + "Room contains unknown devices": "De ruimte bevat onbekende apparaten", + "Room name (optional)": "Ruimtenaam (optioneel)", + "%(roomName)s does not exist.": "%(roomName)s bestaat niet.", + "%(roomName)s is not accessible at this time.": "%(roomName)s is niet toegankelijk op dit moment.", + "Rooms": "Ruimtes", + "Save": "Opslaan", + "Scroll to bottom of page": "Scroll naar de onderkant van de pagina", + "Scroll to unread messages": "Scroll naar ongelezen berichten", + "Search failed": "Zoeken mislukt", + "Searches DuckDuckGo for results": "Zoekt op DuckDuckGo voor resultaten", + "Seen by %(userName)s at %(dateTime)s": "Gezien bij %(userName)s op %(dateTime)s", + "Send anyway": "Alsnog versturen", + "Sender device information": "Afzenderapparaatinformatie", + "Send Reset Email": "Stuur Reset-E-mail", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s stuurde een afbeelding.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s stuurde een uitnodiging naar %(targetDisplayName)s om tot de ruimte toe te treden.", + "Server error": "Serverfout", + "Server may be unavailable or overloaded": "De server kan onbereikbaar of overbelast zijn", + "Server may be unavailable, overloaded, or search timed out :(": "De server is misschien onbereikbaar, overbelast of het zoeken duurde te lang :(", + "Server may be unavailable, overloaded, or the file too big": "De server is misschien onbereikbaar, overbelast of het bestand is te groot", + "Server may be unavailable, overloaded, or you hit a bug.": "De server is misschien onbereikbaar, overbelast of je bent tegen een fout aangelopen.", + "Server unavailable, overloaded, or something else went wrong.": "De server is onbereikbaar, overbelast of iets anders ging fout.", + "Session ID": "Sessie-ID", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s heeft %(targetName)s de ruimte uitgestuurd.", + "Kick": "Er uit sturen", + "Kicks user with given id": "Stuurt de gebruiker met het gegeven ID er uit", + "%(senderName)s set a profile picture.": "%(senderName)s heeft een profielfoto ingesteld.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s heeft zijn of haar weergavenaam naar %(displayName)s veranderd.", + "Show panel": "Paneel weergeven", + "Show Text Formatting Toolbar": "Tekstopmaakwerkbalk Weergeven", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Laat de tijd in twaalf uur formaat zien (bijv. 2:30pm)", + "Signed Out": "Uitgelogd", + "Sign in": "Inloggen", + "Sign out": "Uitloggen", + "%(count)s of your messages have not been sent.": { + "other": "Een paar van je berichten zijn niet verstuurd.", + "one": "Je bericht was niet verstuurd." + }, + "Someone": "Iemand", + "The default role for new room members is": "De standaardrol voor nieuwe ruimteleden is", + "The main address for this room is": "Het hoofdadres voor deze ruimte is", + "The phone number entered looks invalid": "Het telefoonnummer dat ingevoerd is ziet er ongeldig uit", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "De versleutelingssleutel die je hebt verstrekt komt overeen met de versleutelingssleutel die je hebt ontvangen van %(userId)s's apparaat %(deviceId)s. Apparaat is gemarkeerd als geverifieerd.", + "This email address is already in use": "Dit e-mailadres is al in gebruik", + "This email address was not found": "Dit e-mailadres was niet gevonden", + "The email address linked to your account must be entered.": "Het e-mailadres dat met je account verbonden is moet worden ingevoerd.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Het bestand '%(fileName)s' overtreft de maximale bestandsgrootte voor uploads van deze thuisserver", + "The file '%(fileName)s' failed to upload": "Het is niet gelukt om het bestand '%(fileName)s' te uploaden", + "The remote side failed to pick up": "De andere kant heeft niet opgenomen", + "This Home Server does not support login using email address.": "Deze Thuisserver ondersteunt het inloggen met een e-mailadres niet.", + "This invitation was sent to an email address which is not associated with this account:": "Deze uitnodiging was naar een e-mailadres gestuurd die niet geassocieerd is met dit account:", + "This room has no local addresses": "Deze ruimte heeft geen lokale adressen", + "This room is not recognised.": "Deze ruimte wordt niet herkend.", + "These are experimental features that may break in unexpected ways": "Dit zijn experimentele functies die misschien kunnen breken op onverwachte manieren", + "The visibility of existing history will be unchanged": "De zichtbaarheid van de bestaande geschiedenis zal onveranderd blijven", + "This doesn't appear to be a valid email address": "Het ziet er niet naar uit dat dit een geldig e-mailadres is", + "This is a preview of this room. Room interactions have been disabled": "Dit is een voorvertoning van de ruimte. Ruimte-interacties zijn uitgeschakeld", + "This phone number is already in use": "Dit telefoonnummer is al in gebruik", + "This room": "Deze ruimte", + "This room is not accessible by remote Matrix servers": "Deze ruimte is niet toegankelijk voor afgelegen Matrix-servers", + "This room's internal ID is": "Het interne ID van deze ruimte is", + "To link to a room it must have an address.": "Om naar een ruimte te linken moet het een adres hebben.", + "To reset your password, enter the email address linked to your account": "Voer het e-mailadres dat met je account verbonden is in om je wachtwoord opnieuw in te stellen", + "To use it, just wait for autocomplete results to load and tab through them.": "Om het te gebruiken, wacht tot de automatisch aangevulde resultaten geladen zijn en tab er doorheen.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Je probeerde een specifiek punt in de tijdlijn van deze ruimte te laden maar je hebt niet de permissie om de desbetreffende berichten te zien.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Het is niet gelukt om een specifiek punt in de tijdlijn van deze ruimte te laden.", + "Turn Markdown off": "Zet Markdown uit", + "Turn Markdown on": "Zet Markdown aan", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s heeft end-to-endbeveiliging aangezet (algoritme %(algorithm)s).", + "Unable to add email address": "Niet mogelijk om e-mailadres toe te voegen", + "Unable to remove contact information": "Niet mogelijk om contactinformatie te verwijderen", + "Unable to verify email address.": "Niet mogelijk om het e-mailadres te verifiëren.", + "Unban": "Ontbannen", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s ontbande %(targetName)s.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Niet mogelijk om vast te stellen dat het adres waar deze uitnodiging naartoe was verstuurd overeenkomt met het adres dat is geassocieerd met je account.", + "Unable to capture screen": "Niet mogelijk om het scherm vast te leggen", + "Unable to enable Notifications": "Niet mogelijk om notificaties aan te zetten", + "Unable to load device list": "Niet mogelijk om de lijst met apparaten te laden", + "Undecryptable": "Niet ontsleutelbaar", + "Unencrypted room": "Ontsleutelde ruimte", + "unencrypted": "ontsleuteld", + "Unencrypted message": "Niet-versleuteld bericht", + "unknown caller": "onbekende beller", + "unknown device": "Onbekend apparaat", + "Unknown room %(roomId)s": "Onbekende ruimte %(roomId)s", + "Unknown (user, device) pair:": "Onbekend (gebruiker, apparaat) paar:", + "Unmute": "Niet dempen", + "Unnamed Room": "Naamloze Ruimte", + "Unrecognised command:": "Onbekende commando:", + "Unrecognised room alias:": "Onbekende ruimte alias:", + "Unverified": "Niet geverifieerd", + "Uploading %(filename)s and %(count)s others": { + "zero": "Aan het uploaden %(filename)s", + "one": "%(filename)s en %(count)s andere aan het uploaden", + "other": "%(filename)s en %(count)s anderen aan het uploaden" + }, + "Upload avatar": "Avatar uploaden", + "Upload Failed": "Uploaden Mislukt", + "Upload Files": "Bestanden Uploaden", + "Upload file": "Bestand uploaden", + "Upload new:": "Nieuwe uploaden:", + "Usage": "Gebruik", + "Use compact timeline layout": "Gebruik een compacte tijdlijnindeling", + "Use with caution": "Gebruik met behoedzaamheid", + "User ID": "Gebruikers-ID", + "User Interface": "Gebruikersinterface", + "User name": "Gebruikersnaam", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (macht %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Gebruikersnaam ongeldig: %(errMessage)s", + "Users": "Gebruikers", + "Verification Pending": "Verificatie Uitstaand", + "Verification": "Verificatie", + "verified": "geverifieerd", + "Verified": "Geverifieerd", + "Verified key": "Geverifieerde sleutel", + "Video call": "Video-oproep", + "Voice call": "Spraakoproep", + "VoIP conference finished.": "VoIP-vergadering beëindigd.", + "VoIP conference started.": "VoIP-vergadering gestart.", + "VoIP is unsupported": "VoIP is niet ondersteund", + "(could not connect media)": "(kan media niet verbinden)", + "(no answer)": "(geen antwoord)", + "(unknown failure: %(reason)s)": "(onbekende fout: %(reason)s)", + "(warning: cannot be disabled again!)": "(waarschuwing: kan niet meer uitgezet worden!)", + "Warning!": "Waarschuwing!", + "WARNING: Device already verified, but keys do NOT MATCH!": "WAARSCHUWING: Apparaat al geverifieerd, maar de sleutels KOMEN NIET OVEREEN!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "WAARSCHUWING: SLEUTELVERIFICATIE IS MISLUKT! De ondertekende sleutel voor %(userId)s en apparaat %(deviceId)s is \"%(fprint)s\" wat niet overeenkomt met de verschafte sleutel \"%(fingerprint)s\". Dit kan betekenen dat je communicatie onderschept wordt!", + "Who can access this room?": "Wie heeft toegang tot deze ruimte?", + "Who can read history?": "Wie kan de geschiedenis lezen?", + "Who would you like to add to this room?": "Wie wil je aan deze ruimte toevoegen?", + "Who would you like to communicate with?": "Met wie zou je willen communiceren?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s trok %(targetName)s's uitnodiging terug.", + "Would you like to accept or decline this invitation?": "Wil je deze uitnodiging accepteren of afwijzen?", + "You already have existing direct chats with this user:": "Je hebt al bestaande privé-gesprekken met deze gebruiker:", + "You are already in a call.": "Je bent al in gesprek.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Je zit nog niet in een ruimte! Druk op om een ruimte te maken of om door de catalogus te bladeren", + "You are trying to access %(roomName)s.": "Je probeert in %(roomName)s toe te treden.", + "You cannot place a call with yourself.": "Je kan geen spraakoproep met jezelf maken.", + "You cannot place VoIP calls in this browser.": "Je kan geen VoIP-oproepen in deze browser doen.", + "You do not have permission to post to this room": "Je hebt geen permissie om in deze ruimte te praten", + "You have been banned from %(roomName)s by %(userName)s.": "Je bent verbannen van %(roomName)s door %(userName)s.", + "You have been invited to join this room by %(inviterName)s": "Je bent in deze ruimte uitgenodigd door %(inviterName)s", + "You have been kicked from %(roomName)s by %(userName)s.": "Je bent uit %(roomName)s gezet door %(userName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Je bent op alle apparaten uitgelegd en je zal niet langer notificaties ontvangen. Om notificaties weer aan te zetten, log op elk apparaat opnieuw in", + "You have disabled URL previews by default.": "Je hebt URL-voorvertoningen standaard uitgezet.", + "You have enabled URL previews by default.": "Je hebt URL-voorvertoningen standaard aangezet.", + "You have no visible notifications": "Je hebt geen zichtbare notificaties", + "You may wish to login with a different account, or add this email to this account.": "Je wilt misschien met een ander account inloggen of deze e-mail aan je account toevoegen.", + "You must register to use this functionality": "Je moet je registreren om deze functionaliteit te gebruiken", + "You need to be able to invite users to do that.": "Je moet bevoegd zijn om gebruikers uit te nodigen om dat te doen.", + "You need to be logged in.": "Je moet ingelogd zijn.", + "You need to enter a user name.": "Je moet een gebruikersnaam invoeren.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Het ziet er naar uit dat je e-mailadres niet met een Matrix-ID geassocieerd is op deze thuisserver.", + "Your password has been reset": "Je wachtwoord is gereset", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Je wachtwoord is succesvol veranderd. Je zal geen notificaties op andere apparaten ontvangen totdat je er opnieuw inlogd", + "You seem to be in a call, are you sure you want to quit?": "Het ziet er naar uit dat je in een gesprek zit, weet je zeker dat je wilt afsluiten?", + "You seem to be uploading files, are you sure you want to quit?": "Het ziet er naar uit dat je bestanden aan het uploaden bent, weet je zeker dat je wilt afsluiten?", + "You should not yet trust it to secure data": "Je moet het nog niet vertrouwen om gegevens te beveiligen", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Je zal deze verandering niet terug kunnen draaien omdat je de gebruiker naar hetzelfde machtsniveau als jezelf promoot.", + "Your home server does not support device management.": "Je thuisserver ondersteund geen apparaatbeheer.", + "This server does not support authentication with a phone number.": "Deze server ondersteunt geen authenticatie met een telefoonnummer.", + "Missing password.": "Het wachtwoord mist.", + "Passwords don't match.": "De wachtwoorden komen niet overeen.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Het wachtwoord is te kort (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Dit ziet er niet uit als een geldig e-mailadres.", + "This doesn't look like a valid phone number.": "Dit zit er niet uit als een geldig telefoonnummer.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Gebruikersnamen mogen alleen letters, nummers, punten, afbreek- en lage streepjes bevatten.", + "An unknown error occurred.": "Een onbekende fout voorgevallen.", + "I already have an account": "Ik heb al een account", + "An error occurred: %(error_string)s": "Er is een fout voorgevallen: %(error_string)s", + "Topic": "Onderwerp", + "Make Moderator": "Moderator maken", + "Make this room private": "Deze ruimte privé maken", + "Share message history with new users": "Bericht geschiedenis met nieuwe gebruikers delen", + "Encrypt room": "Ruimte versleutelen", + "There are no visible files in this room": "Er zijn geen zichtbare bestanden in deze ruimte", + "Room": "Ruimte", + "Connectivity to the server has been lost.": "De connectiviteit naar de server is verloren.", + "Sent messages will be stored until your connection has returned.": "Verstuurde berichten zullen opgeslagen worden tot je connectie weer terug is.", + "(~%(count)s results)": { + "one": "(~%(count)s resultaat)", + "other": "(~%(count)s resultaten)" + }, + "Active call": "Actief gesprek", + "bold": "vetgedrukt", + "italic": "schuingedrukt", + "strike": "doorgestreept", + "underline": "onderstreept", + "code": "code", + "quote": "citaat", + "bullet": "opsommingsteken", + "numbullet": "genummerd opsommingsteken", + "Please select the destination room for this message": "Selecteer de destinatie-ruimte voor dit bericht", + "New Password": "Nieuw wachtwoord", + "Start automatically after system login": "Start automatisch na systeem-aanmelding", + "Desktop specific": "Desktop-specifiek", + "Analytics": "Gegevensanalyse", + "Options": "Opties", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot verzameld anonieme gegevensanalyse die het mogelijk maakt om de applicatie te verbeteren.", + "Passphrases must match": "Wachtzinnen moeten overeenkomen", + "Passphrase must not be empty": "Wachtzin mag niet leeg zijn", + "Export room keys": "Ruimtesleutels exporteren", + "Confirm passphrase": "Wachtzin bevestigen", + "Import room keys": "Ruimtesleutels importeren", + "File to import": "Bestand om te importeren", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dit proces maakt het mogelijk om de sleutels van je ontvangen berichten in versleutelde ruimtes naar een lokaal bestand te exporteren. Je zal daarna in de toekomst het bestand in een ander Matrix-programma kunnen importeren zodat dat programma ook deze berichten kan ontsleutelen.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Het geëxporteerde bestand zal het voor iedereen dat het kan lezen mogelijk maken om alle berichten die jij kan zien te ontsleutelen, je zal daarom voorzichtig moeten zijn en het veilig houden. Om hiermee te helpen zou je een wachtzin moeten invoeren hieronder, deze zal dan gebruikt worden om de geëxporteerde gegevens te versleutelen. Het is dan alleen mogelijk om de gegevens te importeren met hetzelfde wachtwoord.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dit proces maakt het mogelijk om versleutelingssleutels die je eerst had geëxporteerd vanaf een ander Matrix-programma te importeren. Je zal daarna alle berichten kunnen ontsleutelen die het andere programma ook kon ontsleutelen.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Het te exporteren bestand zal beveiligd zijn met een wachtzin. Je moet hier een wachtzin invoeren om het bestand te ontsleutelen.", + "You must join the room to see its files": "Je moet tot een ruimte toetreden om de bestanden te zien", + "Reject all %(invitedRooms)s invites": "Alle %(invitedRooms)s uitnodigingen afslaan", + "Start new chat": "Nieuw gesprek starten", + "Failed to invite": "Niet gelukt om uit te nodigen", + "Failed to invite user": "Niet gelukt om de gebruiker uit te nodigen", + "Failed to invite the following users to the %(roomName)s room:": "Niet gelukt om de volgende gebruikers voor de %(roomName)s ruimte uit te nodigen:", + "Confirm Removal": "Verwijdering Bevestigen", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Weet je zeker dat je deze gebeurtenis wilt verwijderen? Wees er wel van bewust dat als je een ruimtenaam of onderwerp verwijderd je de verandering ongedaan kunt maken.", + "Unknown error": "Onbekende fout", + "Incorrect password": "Incorrect wachtwoord", + "To continue, please enter your password.": "Om verder te gaan, voer je wachtwoord in.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Om te verifiëren dat dit apparaat vertrouwd kan worden, contacteer de eigenaar op een andere manier (bijv. persoonlijk of via een telefoontje) en vraag of de sleutel die ze zien in de Gebruikersinstellingen voor dit apparaat overeenkomt met de onderstaande sleutel:", + "Device name": "Apparaat naam", + "Device Name": "Apparaat Naam", + "Device key": "Apparaat sleutel", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Als het overeenkomt, druk op de verifiëren knop hieronder. Als het niet overeenkomt, dan is er iemand anders die dit apparaat onderschept en dan zal je waarschijnlijk in plaats daarvan op de 'blokkeren' knop willen drukken.", + "Blacklist": "Blokkeren", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Je bent momenteel geverifieerde apparaten aan het buitensluiten; om berichten naar deze apparaten te versturen moet je ze verifiëren.", + "Unblacklist": "Niet buitensluiten", + "In future this verification process will be more sophisticated.": "In de toekomst zal dit verificatie proces meer geraffineerd zijn.", + "Verify device": "Apparaat verifiëren", + "I verify that the keys match": "Ik verifieer dat de sleutels overeenkomen", + "Unable to restore session": "Het is niet mogelijk om de sessie te herstellen", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Als je eerst gebruik hebt gemaakt van een recentere versie van Riot, dan is je sessie misschien onverenigbaar met deze versie. Sluit dit scherm en ga terug naar de recentere versie.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "We raden je aan om door het verificatieproces van elk apparaat te gaan om te bevestigen dat ze tot de legitieme eigenaar behoren maar je kan het bericht versturen zonder te verifiëren als je dat liever doet.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" bevat apparaten die je nog niet eerder hebt gezien.", + "Unknown devices": "Onbekende apparaten", + "Unknown Address": "Onbekend Adres", + "Unverify": "Ontverifïeren", + "Verify...": "Verifiëren...", + "ex. @bob:example.com": "bijv. @bob:voorbeeld.com", + "Add User": "Gebruiker Toevoegen", + "This Home Server would like to make sure you are not a robot": "Deze thuisserver wil er zeker van zijn dat je geen robot bent", + "Sign in with CAS": "Inloggen met CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Je kan de alternatieve-serverinstellingen gebruiken om bij andere Matrix-servers in te loggen door een andere thuisserver-URL te specificeren.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Dit maakt het mogelijk om deze applicatie te gebruiken met een bestaand Matrix-account op een andere thuisserver.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Je kan ook een aangepaste identiteitsserver instellen maar dit zal waarschijnlijk interactie met gebruikers gebaseerd op een e-mailadres voorkomen.", + "Please check your email to continue registration.": "Bekijk je e-mail om door te gaan met de registratie.", + "Token incorrect": "Bewijs incorrect", + "Please enter the code it contains:": "Voer de code in die het bevat:", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Als je geen e-mailadres specificeert zal je niet je wachtwoord kunnen resetten. Weet je het zeker?", + "You are registering with %(SelectedTeamName)s": "Je registreert je met %(SelectedTeamName)s", + "Default server": "Standaardserver", + "Custom server": "Alternatieve server", + "Home server URL": "Thuisserver-URL", + "Identity server URL": "Identiteitsserver-URL", + "What does this mean?": "Wat betekent dit?", + "Error decrypting audio": "Fout met het ontsleutelen van de audio", + "Error decrypting image": "Fout met het ontsleutelen van de afbeelding", + "Error decrypting video": "Fout met het ontsleutelen van de video", + "Add an Integration": "Voeg een integratie toe", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Je wordt zo naar een derde-partij-website verbonden zodat je het account kan legitimeren voor gebruik met %(integrationsUrl)s. Wil je doorgaan?", + "Removed or unknown message type": "Verwijderd of onbekend berichttype", + "URL Previews": "URL-Voorvertoningen", + "Drop file here to upload": "Bestand hier laten vallen om te uploaden", + " (unsupported)": " (niet ondersteund)", + "Ongoing conference call%(supportedText)s.": "Lopend groepsgesprek%(supportedText)s.", + "Online": "Online", + "Idle": "Afwezig", + "Offline": "Offline", + "Updates": "Updates", + "Check for update": "Voor updates kijken", + "Start chatting": "Start met praten", + "Start Chatting": "Start Met Praten", + "Click on the button below to start chatting!": "Klik op de knop hieronder om te starten met praten!", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s heeft de ruimte avatar aangepast naar ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s heeft de ruimte avatar verwijderd.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s veranderde de avatar voor %(roomName)s", + "Username available": "Gebruikersnaam beschikbaar", + "Username not available": "Gebruikersnaam niet beschikbaar", + "Something went wrong!": "Iets ging niet goed!", + "This will be your account name on the homeserver, or you can pick a different server.": "Dit zal je account naam worden op de thuisserver of je kan een verschillende server pakken.", + "If you already have a Matrix account you can log in instead.": "Als je al een Matrix-account hebt kan je in plaats daarvan inloggen.", + "Your browser does not support the required cryptography extensions": "Je browser ondersteunt de benodigde cryptografie-extensies niet", + "Not a valid Riot keyfile": "Niet een geldig Riot-sleutelbestand", + "Authentication check failed: incorrect password?": "Authenticatie controle gefaald: incorrect wachtwoord?", + "Disable Peer-to-Peer for 1:1 calls": "Peer-to-Peer voor 1:1 oproepen uitschakelen", + "Do you want to set an email address?": "Wil je een e-mailadres instellen?", + "This will allow you to reset your password and receive notifications.": "Dit zal het mogelijk maken om je wachtwoord te resetten en notificaties te ontvangen.", + "To return to your account in future you need to set a password": "Om in de toekomst naar je account terug te gaan moet je een wachtwoord instellen", + "Skip": "Overslaan", + "Start verification": "Verificatie starten", + "Share without verifying": "Delen zonder verificatie", + "Ignore request": "Verzoek negeren", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Je hebt een nieuw apparaat '%(displayName)s' toegevoegd dat om versleutelingssleutels vraagt.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Je niet geverifieerde apparaat '%(displayName)s' vraagt naar versleutelingssleutels.", + "Encryption key request": "Verzoek voor versleutelingssleutel", + "Define the power level of a user": "Definieer het machtsniveau van een gebruiker", + "Add a widget": "Voeg een widget toe", + "Allow": "Toestaan", + "Cannot add any more widgets": "Er kunnen niet meer widgets toegevoegd worden", + "Changes colour scheme of current room": "Verander het kleurenschema van de huidige ruimte", + "Delete widget": "Widget verwijderen", + "Do you want to load widget from URL:": "Wil je de widget laden van de URL:", + "Edit": "Aanpassen", + "Enable automatic language detection for syntax highlighting": "Automatische taaldetectie voor zinsbouwmarkeringen aanzetten", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Toetreed/verlaat berichten verbergen (uitnodigingen/verwijderingen/verbanningen zullen ongeschonden blijven)", + "Integrations Error": "Integratiesfout", + "Publish this room to the public in %(domain)s's room directory?": "Deze ruimte publiekelijk maken in %(domain)s's ruimte catalogus?", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "OPMERKING: Apps zijn niet end-to-endbeveiligd", + "Revoke widget access": "Toegang tot widget intrekken", + "Sets the room topic": "Wijzigt het ruimte-onderwerp", + "The maximum permitted number of widgets have already been added to this room.": "Het maximum aantal toegestane widgets is al aan deze ruimte toegevoegd.", + "To get started, please pick a username!": "Om te beginnen, kies een gebruikersnaam!", + "Unable to create widget.": "Niet in staat om een widget te maken.", + "Unbans user with given id": "Ontbant de gebruiker met het gegeven id", + "You are not in this room.": "Je zit niet in deze ruimte.", + "You do not have permission to do that in this room.": "Je hebt geen permissie om dat te doen in deze ruimte.", + "Verifies a user, device, and pubkey tuple": "Verifieert een gebruiker, apparaat en pubkey tupel", + "Autocomplete Delay (ms):": "Automatisch-aanvullen-vertraging (ms):", + "Loading device info...": "Apparaat info aan het laden...", + "Example": "Voorbeeld", + "Create": "Creëer", + "Featured Rooms:": "Prominente Ruimtes:", + "Featured Users:": "Prominente Gebruikers:", + "Automatically replace plain text Emoji": "Automatisch normale tekst vervangen met Emoji", + "Failed to upload image": "Het is niet gelukt om de afbeelding te uploaden", + "Hide avatars in user and room mentions": "Avatars in gebruiker- en ruimte-vermeldingen verbergen", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s-widget toegevoegd door %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s-widget verwijderd door %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Robot-check is momenteel niet beschikbaar op de desktop - gebruik in plaats daarvan een webbrowser", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s-widget aangepast door %(senderName)s", + "Copied!": "Gekopieerd!", + "Failed to copy": "Kopiëren mislukt", + "Unpin Message": "Maak pin los", + "Add rooms to this community": "Voeg ruimtes toe aan deze gemeenschap", + "Call Failed": "Oproep mislukt", + "Call": "Bel", + "Answer": "Antwoord", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Opgepast: elke persoon die je toevoegt aan een community zal publiek zichtbaar zijn voor iedereen die het community ID kent", + "Invite new community members": "Nodig nieuwe community leden uit", + "Name or matrix ID": "Naam of Matrix ID", + "Which rooms would you like to add to this community?": "Welke ruimtes wil je toevoegen aan deze community?", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Een widget verwijderen doet dat voor alle gebruikers in deze ruimte. Ben je zeker dat je het widget wil verwijderen?", + "Delete Widget": "Widget verwijderen", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Er zijn onbekende toestellen in deze ruimte: als je verder gaat zonder ze te verifiëren zal het mogelijk zijn dat iemand je oproep afluistert.", + "Review Devices": "Toestellen nakijken", + "Call Anyway": "Bel toch", + "Answer Anyway": "Antwoord toch", + "Who would you like to add to this community?": "Wie wil je toevoegen aan deze community?", + "Invite to Community": "Nodig uit in deze community", + "Show these rooms to non-members on the community page and room list?": "Toon deze ruimtes aan niet-leden op de community pagina en lijst van ruimtes?", + "Add rooms to the community": "Voeg ruimtes toe aan de community", + "Room name or alias": "Ruimte naam of alias", + "Add to community": "Voeg toe aan community", + "Failed to invite the following users to %(groupId)s:": "Inviteren gefaald van de volgende gebruikers in %(groupId)s:", + "Failed to invite users to community": "Uitnodigen van gebruikers in community mislukt", + "Failed to invite users to %(groupId)s": "Niet gelukt om gebruikers uit te nodigen in %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Niet gelukt om de volgende ruimtes toe te voegen aan %(groupId)s:", + "Restricted": "Beperkte toegang", + "Ignored user": "Genegeerde gebruiker", + "You are now ignoring %(userId)s": "Je bent nu %(userId)s aan het negeren", + "Unignored user": "Niet genegeerde gebruiker", + "You are no longer ignoring %(userId)s": "Je bent %(userId)s niet meer aan het negeren", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s heeft de gepinde boodschappen voor de ruimte gewijzigd.", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s en %(count)s andere gebruikers zijn aan het typen", + "one": "%(names)s en iemand anders is aan het typen" + }, + "Send": "Verstuur", + "Message Pinning": "Boodschap vastpinnen", + "Disable Emoji suggestions while typing": "Emoji suggesties tijdens het typen uitzetten", + "Hide avatar changes": "Avatar veranderingen verbergen", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "Hide display name changes": "Weergavenaam wijzigingen verbergen", + "Enable inline URL previews by default": "Inline URL voorvertoning standaard aanzetten", + "Enable URL previews for this room (only affects you)": "URL voorvertoning in deze ruimte aanzetten (geldt alleen voor jou)", + "Enable URL previews by default for participants in this room": "URL voorvertoning standaard voor de gebruikers in deze ruimte aanzetten", + "Delete %(count)s devices": { + "other": "Verwijder %(count)s apparaten", + "one": "Verwijder apparaat" + }, + "Select devices": "Apparaten selecteren", + "%(senderName)s sent an image": "%(senderName)s heeft een afbeelding gestuurd", + "%(senderName)s sent a video": "%(senderName)s heeft een video gestuurd", + "%(senderName)s uploaded a file": "%(senderName)s heeft een bestand geüpload", + "Disinvite this user?": "Uitnodiging van deze gebruiker intrekken?", + "Kick this user?": "Deze gebruiker er uit zetten?", + "Unban this user?": "Deze gebruiker ontbannen?", + "Ban this user?": "Deze gebruiker bannen?", + "Disable big emoji in chat": "Grote emoji in gesprekken uitzetten", + "Mirror local video feed": "Lokale video aanvoering ook op andere locaties (Mirrors) opslaan", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Je kan deze actie niet ongedaan maken omdat je jezelf degradeert. Als je het laatste persoon met rechten bent, is het onmogelijk om de rechten terug te krijgen.", + "Unignore": "Niet meer negeren", + "Ignore": "Negeren", + "Jump to read receipt": "Naar het laatst gelezen bericht gaan", + "Mention": "Vermelden", + "Invite": "Uitnodigen", + "User Options": "Gebruikersopties", + "Send an encrypted reply…": "Verstuur een versleuteld antwoord…", + "Send a reply (unencrypted)…": "Verstuur een antwoord (onversleuteld)…", + "Send an encrypted message…": "Verstuur een versleuteld bericht…", + "Send a message (unencrypted)…": "Verstuur een bericht (onversleuteld)…", + "Jump to message": "Naar bericht gaan", + "No pinned messages.": "Geen gepinde berichten.", + "Loading...": "Laden...", + "Pinned Messages": "Gepinde Berichten", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)su", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "Online voor %(duration)s", + "Idle for %(duration)s": "Inactief voor %(duration)s", + "Offline for %(duration)s": "Offline voor %(duration)s", + "Unknown for %(duration)s": "Onbekend voor %(duration)s", + "Unknown": "Onbekend", + "Replying": "Aan het beantwoorden", + "No rooms to show": "Geen ruimtes om weer te geven", + "Unnamed room": "Ruimte zonder naam", + "World readable": "Leesbaar voor iedereen", + "Guests can join": "Gasten kunnen toetreden", + "Remove avatar": "Avatar verwijderen", + "To change the room's avatar, you must be a": "Om de avatar van de ruimte te verwijderen, moet je het volgende zijn:", + "Drop here to favourite": "Hier laten vallen om aan favorieten toe te voegen", + "Drop here to tag direct chat": "Hier laten vallen om als privégesprek te markeren", + "Drop here to restore": "Hier laten vallen om te herstellen", + "Drop here to demote": "Hier laten vallen om te degraderen", + "Community Invites": "Gemeenschapsuitnodigingen", + "You have been kicked from this room by %(userName)s.": "Je bent uit deze ruimte gezet door %(userName)s.", + "You have been banned from this room by %(userName)s.": "Je bent uit deze ruimte verbannen door %(userName)s.", + "You are trying to access a room.": "Je probeert een ruimte te betreden.", + "To change the room's name, you must be a": "Om de ruimtenaam te veranderen moet je het volgende zijn:", + "To change the room's main address, you must be a": "Om het hoofdadres van deze ruimte te wijzigen moet je het volgende zijn:", + "To change the room's history visibility, you must be a": "Om de zichtbaarheid van de geschiedenis van de ruimte te veranderen moet je het volgende zijn:", + "To change the permissions in the room, you must be a": "Om de permissies in de ruimte te veranderen moet je het volgende zijn:", + "To change the topic, you must be a": "Om het onderwerp te veranderen moet je het volgende zijn:", + "To modify widgets in the room, you must be a": "Om een widget in de ruimte aan te passen moet je het volgende zijn:", + "Banned by %(displayName)s": "Verbannen door %(displayName)s", + "Members only (since the point in time of selecting this option)": "Alleen gebruikers (vanaf het moment dat deze optie wordt geselecteerd)", + "Members only (since they were invited)": "Alleen gebruikers (vanaf het moment dat ze uitgenodigd zijn)", + "Members only (since they joined)": "Alleen gebruikers (vanaf het moment dat ze toegetreden zijn)", + "To send messages, you must be a": "Om berichten te versturen moet je het volgende zijn:", + "To invite users into the room, you must be a": "Om gebruikers in de ruimte uit te nodigen moet je het volgende zijn:", + "To configure the room, you must be a": "Om de ruimte te configureren moet je het volgende zijn:", + "To kick users, you must be a": "Om gebruikers er uit te zetten moet je het volgende zijn:", + "To ban users, you must be a": "Om gebruikers te verbannen moet je het volgende zijn:", + "To remove other users' messages, you must be a": "Om de berichten van andere gebruikers te verwijderen moet je het volgende zijn:", + "To send events of type , you must be a": "Om gebeurtenissen van het type te versturen, moet je het volgende zijn:", + "Addresses": "Adressen", + "Invalid community ID": "Ongeldig gemeenschaps-ID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' is niet een geldig gemeenschaps-ID", + "Flair": "Badge", + "Showing flair for these communities:": "Badges voor deze gemeenschappen weergeven:", + "This room is not showing flair for any communities": "Deze ruimte geeft geen badges voor gemeenschappen weer", + "New community ID (e.g. +foo:%(localDomain)s)": "Nieuw gemeenschaps-ID (bv. +foo:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "URL voorvertoning staat standaard aan voor deelnemers in deze ruimte.", + "URL previews are disabled by default for participants in this room.": "URL voorvertoning staat standaard uit voor deelnemers in deze ruimte.", + "Message removed by %(userId)s": "Bericht verwijderd door %(userId)s", + "Message removed": "Bericht verwijderd", + "An email has been sent to %(emailAddress)s": "Een e-mail is naar %(emailAddress)s verstuurd", + "A text message has been sent to %(msisdn)s": "Een tekstbericht is naar %(msisdn)s versuurd", + "Username on %(hs)s": "Gebruikersnaam op %(hs)s", + "Remove from community": "Verwijder van gemeenschap", + "Disinvite this user from community?": "Uitnodiging van de gemeenschap voor deze gebruiker intrekken?", + "Remove this user from community?": "Deze gebruiker van de gemeenschap verwijderen?", + "Failed to withdraw invitation": "Niet gelukt om de uitnodiging in te trekken", + "Failed to remove user from community": "Niet gelukt om de gebruiker van de gemeenschap te verwijderen", + "Filter community members": "Filter gemeenschapsleden", + "Flair will appear if enabled in room settings": "Badge zal worden weergeven als het aangezet is in de ruimte-instellingen", + "Flair will not appear": "Badge zal niet weergeven worden", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Weet je zeker dat je '%(roomName)s' van %(groupId)s wilt verwijderen?", + "Removing a room from the community will also remove it from the community page.": "Het verwijderen van de ruimte van de gemeenschap zal de ruimte ook van de gemeenschapspagina verwijderen.", + "Failed to remove room from community": "Niet gelukt om de ruimte van de gemeenschap te verwijderen", + "Failed to remove '%(roomName)s' from %(groupId)s": "Niet gelijkt om '%(roomName)s' van %(groupId)s te verwijderen", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "De zichtbaarheid van '%(roomName)s' in %(groupId)s kon niet geüpdatet worden.", + "Visibility in Room List": "Zichtbaarheid in Ruimte Lijst", + "Visible to everyone": "Zichtbaar voor iedereen", + "Only visible to community members": "Alleen zichtbaar voor gemeenschapsleden", + "Filter community rooms": "Gemeenschapsruimtes filteren", + "Something went wrong when trying to get your communities.": "Iets ging verkeerd tijdens het ophalen van je gemeenschappen.", + "Display your community flair in rooms configured to show it.": "Geef je gemeenschapsbadge weer in ruimtes die geconfigureerd zijn om het te weergeven.", + "You're not currently a member of any communities.": "Je bent momenteel niet een lid van een gemeenschap.", + "Minimize apps": "Applicaties minimaliseren", + "Communities": "Gemeenschappen", + "%(nameList)s %(transitionList)s": "%(nameList)s%(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s traden %(count)s keer toe", + "one": "%(severalUsers)s zijn toegetreden" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s trad %(count)s keer toe", + "one": "%(oneUser)s is toegetreden" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s gingen %(count)s keer weg", + "one": "%(severalUsers)s gingen weg" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s ging %(count)s keer weg", + "one": "%(oneUser)s ging weg" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s traden toe en gingen weer weg voor %(count)s keer", + "one": "%(severalUsers)s traden toe en gingen weer weg" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s trad toe en ging weer weg voor %(count)s keer", + "one": "%(oneUser)s trad toe en ging weer weg" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s ging weg en trad weer toe voor %(count)s keer", + "one": "%(severalUsers)s gingen weg en kwamen weer terug" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s ging weg en kwam weer terug voor %(count)s keer", + "one": "%(oneUser)s ging weg en kwam weer terug" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s wezen hun uitnodiging af voor %(count)s keer", + "one": "%(severalUsers)s wezen hun uitnodiging af" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s wees %(count)s keer zijn of haar uitnodiging af", + "one": "%(oneUser)s wees zijn of haar uitnodiging af" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "De uitnodigingen naar %(severalUsers)s zijn %(count)s keer ingetrokken", + "one": "De uitnodigingen voor %(severalUsers)s zijn ingetrokken" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "De uitnodiging van %(oneUser)s is %(count)s keer ingetrokken", + "one": "De uitnodiging van %(oneUser)s is ingetrokken" + }, + "were invited %(count)s times": { + "other": "was %(count)s keer uitgenodigd", + "one": "was uitgenodigd" + }, + "was invited %(count)s times": { + "other": "was %(count)s keer uitgenodigd", + "one": "was uitgenodigd" + }, + "were banned %(count)s times": { + "other": "was %(count)s keer verbannen", + "one": "was verbannen" + }, + "was banned %(count)s times": { + "other": "was %(count)s keer verbannen", + "one": "was verbannen" + }, + "were unbanned %(count)s times": { + "other": "zijn voor %(count)s keer ontbannen", + "one": "waren ontbant" + }, + "was unbanned %(count)s times": { + "other": "was %(count)s keer ontbannen", + "one": "was ontbannen" + }, + "were kicked %(count)s times": { + "other": "werden er %(count)s keer uitgezet", + "one": "werden er uit gezet" + }, + "was kicked %(count)s times": { + "other": "was er %(count)s keer uitgezet", + "one": "was er uit gezet" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s veranderden hun naam %(count)s keer", + "one": "%(severalUsers)s veranderden hun naam" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s veranderde zijn of haar naam %(count)s keer", + "one": "%(oneUser)s veranderde zijn of haar naam" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s veranderden hun avatar %(count)s keer", + "one": "%(severalUsers)s veranderden hun avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s veranderde zijn of haar avatar %(count)s keer", + "one": "%(oneUser)s veranderde zijn of haar avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s en %(count)s anderen", + "one": "%(items)s en één andere" + }, + "collapse": "inklappen", + "expand": "openklappen", + "Custom of %(powerLevel)s": "Aangepast rank van %(powerLevel)s", + "Quote": "Citeren", + "And %(count)s more...": { + "other": "En %(count)s meer..." + }, + "Matrix ID": "Matrix ID", + "Matrix Room ID": "Matrix Ruimte ID", + "email address": "e-mailadres", + "Try using one of the following valid address types: %(validTypesList)s.": "Probeer één van de volgende geldige adrestypes: %(validTypesList)s.", + "You have entered an invalid address.": "Je hebt een ongeldig adres ingevoerd.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Een gemeenschaps-ID mag alleen de karakters a-z, 0-9, of '=_-./' bevatten.", + "Community IDs cannot be empty.": "Een gemeenschaps-ID kan niet leeg zijn.", + "Something went wrong whilst creating your community": "Er is iets fout gegaan tijdens het aanmaken van je gemeenschap", + "Create Community": "Gemeenschap Aanmaken", + "Community Name": "Gemeenschapsnaam", + "Community ID": "Gemeenschap-ID", + "example": "voorbeeld", + "Advanced options": "Geavanceerde opties", + "Block users on other matrix homeservers from joining this room": "Gebruikers van andere matrix thuisservers niet toestaan om tot deze ruimte toe te treden", + "This setting cannot be changed later!": "Deze instelling kan niet later veranderd worden!", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML voor je gemeenschapspagina

\n

\n Gebruik de lange beschrijving om nieuwe leden in de gemeenschap te introduceren of om belangrijke links te verspreiden\n

\n

\n Je kan zelfs 'img' tags gebruiken\n

\n", + "Add rooms to the community summary": "Voeg ruimtes aan de gemeenschapssamenvatting toe", + "Which rooms would you like to add to this summary?": "Welke ruimtes zou je aan deze samenvatting willen toevoegen?", + "Add to summary": "Voeg aan samenvatting toe", + "Failed to add the following rooms to the summary of %(groupId)s:": "Het is niet gelukt om de volgende ruimtes aan de samenvatting van %(groupId)s toe te voegen:", + "Add a Room": "Voeg een ruimte toe", + "Failed to remove the room from the summary of %(groupId)s": "Het is niet gelukt om de ruimte van de samenvatting van %(groupId)s te verwijderen", + "The room '%(roomName)s' could not be removed from the summary.": "De ruimte '%(roomName)s' kan niet van de samenvatting verwijderd worden.", + "Add users to the community summary": "Voeg gebruikers aan de gemeenschapssamenvatting toe", + "Who would you like to add to this summary?": "Wie zou je aan de samenvatting toe willen voegen?", + "Failed to add the following users to the summary of %(groupId)s:": "Het is niet gelukt om de volgende gebruikers aan de samenvatting van %(groupId)s toe te voegen:", + "Add a User": "Voeg een Gebruiker toe", + "Failed to remove a user from the summary of %(groupId)s": "Het is niet gelukt om een gebruiker van de samenvatting van %(groupId)s te verwijderen", + "The user '%(displayName)s' could not be removed from the summary.": "De gebruiker '%(displayName)s' kon niet van de samenvatting verwijderd worden.", + "Failed to update community": "Het is niet gelukt om de gemeenschap te updaten", + "Unable to accept invite": "De uitnodiging kon niet geaccepteerd worden", + "Unable to reject invite": "De uitnodiging kon niet afgewezen worden", + "Leave Community": "Gemeenschap Verlaten", + "Leave %(groupName)s?": "%(groupName)s verlaten?", + "Leave": "Verlaten", + "Community Settings": "Gemeenschapsinstellingen", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Deze ruimtes worden aan gemeenschapsleden getoond op de gemeenschapspagina. Gemeenschapsleden kunnen tot de ruimtes toetreden door er op te klikken.", + "%(inviter)s has invited you to join this community": "%(inviter)s heeft jou uitgenodigd om tot deze gemeenschap toe te treden", + "You are an administrator of this community": "Je bent een administrator van deze gemeenschap", + "You are a member of this community": "Je bent lid van deze gemeenschap", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Jouw gemeenschap heeft geen Lange Beschrijving (een HTML pagina dat aan de gemeenschapsleden wordt weergeven).
Klik hier om de instellingen te openen en een Lange Beschrijving te maken!", + "Long Description (HTML)": "Lange Beschrijving (HTML)", + "Description": "Beschrijving", + "Community %(groupId)s not found": "Gemeenschap %(groupId)s is niet gevonden", + "This Home server does not support communities": "Deze Thuisserver ondersteunt geen gemeenschappen", + "Failed to load %(groupId)s": "Het is niet gelukt om %(groupId)s te laden", + "Old cryptography data detected": "Oude cryptografie gegevens gedetecteerd", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Er zijn gegevens van een oudere versie van Riot gedetecteerd. Dit verstoorde end-to-endbeveiliging in de oude versie. End-to-endbeveiligde berichten die recent uitgewisseld zijn met de oude versie zijn wellicht niet te ontsleutelen in deze versie. Dit zou er ook voor kunnen zorgen dat berichten die zijn uitgewisseld in deze versie falen. Log opnieuw in als je problemen ervaart. Exporteer de sleutels en importeer ze achteraf weer om de berichtgeschiedenis te behouden.", + "Your Communities": "Jouw Gemeenschappen", + "Error whilst fetching joined communities": "Er is een fout opgetreden tijdens het ophalen van de gemeenschappen waar je lid van bent", + "Create a new community": "Maak een nieuwe gemeenschap aan", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Maak een gemeenschap aan om gebruikers en ruimtes samen te groeperen! Bouw een aangepaste homepagina om je eigen plek in het Matrix universum te maken.", + "Show devices, send anyway or cancel.": "Toon apparaten, Toch versturen of annuleren.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Nu alles opnieuw versturen of annuleren. Je kan ook individuele berichten selecteren om opnieuw te versturen of te annuleren.", + "one": "Nu bericht opnieuw versturen of bericht annuleren." + }, + "Warning": "Waarschuwing", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Er is niemand anders hier! Wil je anderen uitnodigen of de waarschuwing over de lege ruimte stoppen?", + "Light theme": "Licht thema", + "Dark theme": "Donker thema", + "Status.im theme": "Status.im thema", + "Ignored Users": "Genegeerde Gebruikers", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Privacy is belangrijk voor ons, dus we collecteren geen persoonlijke of identificeerbare gegevens voor onze gegevensanalyse.", + "Learn more about how we use analytics.": "Leer meer over hoe we gegevensanalyse gebruiken.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Een e-mail is naar %(emailAddress)s verstuurd. Klik hieronder zodra je de link hebt gevolgd.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Merk op dat je aan het inloggen bent in de %(hs)s server, niet matrix.org.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Deze thuisserver heeft geen inlogmethodes die bij deze client ondersteunt worden.", + "Sign in to get started": "Log in om te beginnen", + "Ignores a user, hiding their messages from you": "Negeert een gebruiker, waardoor de berichten van de gebruiker onzichtbaar voor je worden", + "Stops ignoring a user, showing their messages going forward": "Stopt het negeren van een gebruiker, hierdoor worden de berichten van de gebruiker vanaf nu weer zichtbaar", + "Notify the whole room": "Notificeer de gehele ruimte", + "Room Notification": "Ruimte Notificatie", + "The information being sent to us to help make Riot.im better includes:": "De informatie dat naar ons wordt verstuurd om Riot.im beter te maken betrekt:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Waar deze pagina identificeerbare informatie bevat, zoals een ruimte, gebruiker of groep ID, zal deze data verwijderd worden voordat het naar de server gestuurd wordt.", + "The platform you're on": "Het platform waar je je op bevindt", + "The version of Riot.im": "De versie van Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Of je wel of niet ingelogd bent (we nemen niet je gebruikersnaam op)", + "Your language of choice": "De taal waarin de applicatie wordt weergeven", + "Which officially provided instance you are using, if any": "Welke officieel verschafte instantie je gebruikt, in dat het geval is", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Of je wel of niet gebruik maakt van de Richttext modus of de Rich Text Editor", + "Your homeserver's URL": "De URL van je thuisserver", + "Your identity server's URL": "De URL van je thuisserver", + "In reply to ": "Als antwoord op ", + "This room is not public. You will not be able to rejoin without an invite.": "Deze ruimte is niet publiekelijk. Je zal niet opnieuw kunnen toetreden zonder een uitnodiging.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s heeft zijn/haar weergavenaam veranderd naar %(displayName)s.", + "Disable Community Filter Panel": "Gemeenschapsfilterpaneel uitzetten", + "Your key share request has been sent - please check your other devices for key share requests.": "Je verzoek om sleutels te delen is verzonden - controleer je andere apparaten voor het verzoek.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Verzoeken om sleutels te delen worden automatisch naar andere apparaten verstuurd. Als je het verzoek hebt afgewezen of weg hebt geklikt, klik dan hier voor een nieuwe verzoek voor de sleutels van deze sessie.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Het is niet mogelijk om dit bericht te ontsleutelen als je andere apparaten er geen sleutel voor hebben.", + "Key request sent.": "Sleutel verzoek verstuurd.", + "Re-request encryption keys from your other devices.": "Versleutelingssleutels opnieuw aanvragen van je andere apparaten.", + "%(user)s is a %(userRole)s": "%(user)s is een %(userRole)s", + "Did you know: you can use communities to filter your Riot.im experience!": "Wist je dat: je gemeenschappen kan gebruiken om je Riot.im ervaring te filteren!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Sleep een gemeenschapsavatar naar het filterpaneel helemaal aan de linkerkant van het scherm om een filter te maken. Je kan dan altijd op de avatar in het filterpaneel klikken om alleen de ruimtes en mensen te zien die met die gemeenschap geassocieerd zijn.", + "Clear filter": "Filter vrijmaken", + "Failed to set direct chat tag": "Het is niet gelukt om de 'privégesprek' label in te stellen", + "Failed to remove tag %(tagName)s from room": "Het is niet gelukt om de label %(tagName)s van de ruimte te verwijderen", + "Failed to add tag %(tagName)s to room": "Het is niet gelukt om de label %(tagName)s aan deze ruimte toe te voegen", + "Stickerpack": "Stickerpakket", + "You don't currently have any stickerpacks enabled": "Je hebt momenteel geen stickerpakketten aan staan", + "Add a stickerpack": "Stickerpakket toevoegen", + "Hide Stickers": "Stickers verbergen", + "Show Stickers": "Stickers weergeven", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Gezien door %(displayName)s (%(userName)s) op %(dateTime)s", + "Code": "Code", + "Unable to join community": "Je kon niet tot de gemeenschap toetreden", + "Unable to leave community": "Je kon de gemeenschap niet verlaten", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Veranderingen die aan je gemeenschap naam en avatar zijn aangebracht zullen misschien niet gezien worden door anderen tot maximaal 30 minuten.", + "Join this community": "Tot deze gemeenschap toetreden", + "Who can join this community?": "Wie kan tot deze gemeenschap toetreden?", + "Everyone": "Iedereen", + "Leave this community": "Deze gemeenschap verlaten", + "Debug Logs Submission": "Debug Logs Indienen", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Als je een bug via Github hebt ingediend kunnen debug logs ons helpen om het probleem te vinden. Debug logs bevatten applicatie-gebruik data inclusief je gebruikersnaam, de ID's of namen van de ruimtes en groepen die je hebt bezocht en de gebruikersnamen van andere gebruikers. Ze bevatten geen berichten.", + "Submit debug logs": "Debug logs indienen", + "Opens the Developer Tools dialog": "Opent het Ontwikkelaars Gereedschappen dialoog", + "Fetching third party location failed": "Het ophalen van de locatie van de derde partij is mislukt", + "A new version of Riot is available.": "Er is een nieuwe versie van Riot beschikbaar.", + "I understand the risks and wish to continue": "Ik begrijp de risico's en wil graag verder gaan", + "Couldn't load home page": "Kon de home pagina niet laden", + "Send Account Data": "Stuur account informatie", + "All notifications are currently disabled for all targets.": "Alle meldingen zijn momenteel uitgeschakeld voor alle doelen.", + "Uploading report": "Rapport uploaden", + "Sunday": "Zondag", + "Notification targets": "Meldingsdoelen", + "Today": "Vandaag", + "Files": "Bestanden", + "You are not receiving desktop notifications": "Je ontvangt momenteel geen desktopmeldingen", + "Friday": "Vrijdag", + "Update": "Bijwerken", + "What's New": "Wat is er nieuw", + "Add an email address above to configure email notifications": "Voeg een e-mailadres toe om e-mailmeldingen te ontvangen", + "Expand panel": "Paneel uitklappen", + "On": "Aan", + "%(count)s Members": { + "other": "%(count)s Deelnemers", + "one": "%(count)s Deelnemer" + }, + "Filter room names": "Filter ruimtenamen", + "Changelog": "Logboek van wijzigingen", + "Waiting for response from server": "Wachten op antwoord van de server", + "Send Custom Event": "Verzend aangepast evenement", + "Advanced notification settings": "Geavanceerde meldingsinstellingen", + "delete the alias.": "verwijder de alias.", + "To return to your account in future you need to set a password": "Om in de toekomst naar je account terug te gaan moet je een wachtwoord instellen", + "Forget": "Vergeten", + "#example": "#voorbeeld", + "Hide panel": "Paneel verbergen", + "You cannot delete this image. (%(code)s)": "Je kunt deze afbeelding niet verwijderen. (%(code)s)", + "Cancel Sending": "Versturen annuleren", + "This Room": "Deze Ruimte", + "The Home Server may be too old to support third party networks": "De thuisserver is misschien te oud om netwerken van derde partijen te ondersteunen", + "Resend": "Opnieuw verzenden", + "Error saving email notification preferences": "Fout bij het opslaan van de meldingsvoorkeuren voor e-mail", + "Messages containing my display name": "Berichten die mijn weergavenaam bevatten", + "Messages in one-to-one chats": "Berichten in één-op-één-gesprekken", + "Unavailable": "Niet beschikbaar", + "View Decrypted Source": "Bekijk ontsleutelde bron", + "Failed to update keywords": "Trefwoorden bijwerken mislukt", + "remove %(name)s from the directory.": "verwijder %(name)s uit de ruimtelijst.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Meldingen op de volgende trefwoorden volgen regels die hier niet kunnen worden getoond:", + "Safari and Opera work too.": "Safari en Opera werken ook.", + "Please set a password!": "Stel een wachtwoord in!", + "You have successfully set a password!": "U heeft met succes een wachtwoord ingesteld!", + "An error occurred whilst saving your email notification preferences.": "Er is een fout opgetreden tijdens het opslaan van uw e-mailmeldingsvoorkeuren.", + "Explore Room State": "Verken Ruimtetoestand", + "Source URL": "Bron-URL", + "Messages sent by bot": "Berichten verzonden door een bot", + "Filter results": "Resultaten filteren", + "Members": "Leden", + "No update available.": "Geen update beschikbaar.", + "Noisy": "Luidruchtig", + "Failed to get protocol list from Home Server": "Protocollijst ophalen van de homeserver mislukt", + "Collecting app version information": "App-versieinformatie verzamelen", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "De alias %(alias)s verwijderen en %(name)s uit de ruimtelijst verwijderen?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Hiermee kunt u naar uw account terugkeren nadat u zich heeft afgemeld, en u aanmelden op andere apparaten.", + "Keywords": "Trefwoorden", + "Enable notifications for this account": "Meldingen voor dit account aanzetten", + "Directory": "Ruimtelijst", + "Invite to this community": "Nodig uit in deze community", + "Search for a room": "Een ruimte opzoeken", + "Messages containing keywords": "Berichten die trefwoorden bevatten", + "Room not found": "De ruimte is niet gevonden", + "Tuesday": "Dinsdag", + "Enter keywords separated by a comma:": "Voeg trefwoorden toe, gescheiden door een komma:", + "Search…": "Zoeken…", + "You have successfully set a password and an email address!": "Het instellen van een wachtwoord en e-mailadres is geslaagd!", + "Remove %(name)s from the directory?": "%(name)s uit de ruimtelijst verwijderen?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot gebrukt veel geavanceerde browserfuncties, waarvan enkele niet (of experimenteel) in uw webbrowser beschikbaar zijn.", + "Developer Tools": "Ontwikkelaarsgereedschap", + "Enable desktop notifications": "Desktopmeldingen aanzetten", + "Explore Account Data": "Bekijk account informatie", + "Remove from Directory": "Uit de ruimtelijst verwijderen", + "Saturday": "Zaterdag", + "Remember, you can always set an email address in user settings if you change your mind.": "Onthoud dat u altijd een e-mailadres in kan stellen in de gebruikersinstellingen als u zich bedenkt.", + "Direct Chat": "Privégesprek", + "The server may be unavailable or overloaded": "De server is misschien niet beschikbaar of overbelast", + "Reject": "Afwijzen", + "Failed to set Direct Message status of room": "Het is niet gelukt om de privéchat status van de ruimte in te stellen", + "Monday": "Maandag", + "All messages (noisy)": "Alle berichten (luid)", + "Enable them now": "Deze nu aanzetten", + "Messages containing my user name": "Berichten die mijn gebruikersnaam bevatten", + "Toolbox": "Eigenschappen", + "Collecting logs": "Logboeken verzamelen", + "more": "meer", + "You must specify an event type!": "Je moet een event-type specificeren!", + "(HTTP status %(httpStatus)s)": "(HTTP-status %(httpStatus)s)", + "Invite to this room": "Uitnodigen voor deze ruimte", + "Please install Chrome or Firefox for the best experience.": "Installeer alstublieft Chrome of Firefox voor de beste gebruikerservaring.", + "Failed to get public room list": "Lijst met publieke ruimtes ophalen mislukt", + "Send logs": "Logboeken versturen", + "All messages": "Alle berichten", + "Call invitation": "Oproep-uitnodiging", + "Downloading update...": "Update aan het downloaden...", + "State Key": "Toestandssleutel", + "Failed to send custom event.": "Aangepast Event verzenden mislukt.", + "What's new?": "Wat is er nieuw?", + "Notify me for anything else": "Stuur een melding voor al het andere", + "When I'm invited to a room": "Wanneer ik uitgenodigd word voor een ruimte", + "Can't update user notification settings": "Het is niet gelukt om de meldingsinstellingen van de gebruiker bij te werken", + "Notify for all other messages/rooms": "Stuur een melding voor alle andere berichten/ruimtes", + "Unable to look up room ID from server": "Het is mislukt om het ruimte-ID op te halen van de server", + "Couldn't find a matching Matrix room": "Het is niet gelukt om een bijbehorende Matrix-ruimte te vinden", + "All Rooms": "Alle Ruimtes", + "You cannot delete this message. (%(code)s)": "Je kunt dit bericht niet verwijderen. (%(code)s)", + "Thursday": "Donderdag", + "Forward Message": "Bericht doorsturen", + "Back": "Terug", + "Reply": "Beantwoord", + "Show message in desktop notification": "Toon boodschap in bureaublad popup", + "Unhide Preview": "Zichtbaar maken preview", + "Unable to join network": "Het is mislukt om toe te treden tot dit netwerk", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Je hebt ze mogelijk ingesteld in een andere client dan Riot. Je kunt ze niet aanpassen in Riot maar ze zijn wel actief", + "Sorry, your browser is not able to run Riot.": "Sorry, uw browser werkt niet met Riot.", + "Uploaded on %(date)s by %(user)s": "Geüpload op %(date)s door %(user)s", + "Messages in group chats": "Berichten in groepsgesprekken", + "Yesterday": "Gisteren", + "Error encountered (%(errorDetail)s).": "Fout ondervonden (%(errorDetail)s).", + "Login": "Aanmelden", + "Low Priority": "Lage prioriteit", + "Unable to fetch notification target list": "Het is mislukt om de lijst van notificatiedoelen op te halen", + "Set Password": "Wachtwoord instellen", + "Enable audible notifications in web client": "Geluidsmeldingen in de webclient aanzetten", + "Off": "Uit", + "Riot does not know how to join a room on this network": "Riot weet niet hoe het moet deelnemen in een ruimte op dit netwerk", + "Mentions only": "Alleen vermeldingen", + "Wednesday": "Woensdag", + "You can now return to your account after signing out, and sign in on other devices.": "U kunt nu terugkeren naar uw account nadat u bent afgemeld, en u aanmelden op andere apparaten.", + "Enable email notifications": "E-mailmeldingen aanzetten", + "Event Type": "Event-type", + "Download this file": "Download dit bestand", + "Pin Message": "Bericht vastpinnen", + "Failed to change settings": "Instellingen wijzigen mislukt", + "View Community": "Gemeenschap Weergeven", + "Event sent!": "Event verstuurd!", + "View Source": "Bekijk bron", + "Event Content": "Event-inhoud", + "Thank you!": "Bedankt!", + "Collapse panel": "Paneel inklappen", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Met uw huidige browser kan de applicatie er volledig incorrect uitzien. Tevens is het mogelijk dat niet alle functies naar behoren werken. U kunt doorgaan als u het toch wil proberen, maar bij problemen bent u volledig op uzelf aangewezen!", + "Checking for an update...": "Aan het kijken voor een update...", + "There are advanced notifications which are not shown here": "Er zijn geavanceerde notificaties die hier niet getoond worden", + "Logs sent": "Logs verstuurd", + "GitHub issue link:": "GitHub opgave link:", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debug logs bevatten applicatie-gebruik data inclusief je gebruikersnaam, de ID's of namen van de ruimtes en groepen die je hebt bezocht en de gebruikersnamen van andere gebruikers. Ze bevatten geen berichten.", + "Failed to send logs: ": "Het is niet gelukt om de logs te versturen: ", + "Notes:": "Constateringen:", + "Preparing to send logs": "Voorbereiden om logs te versturen", + "e.g. %(exampleValue)s": "bijv. %(exampleValue)s", + "Every page you use in the app": "Elke pagina die je in de applicatie gebruikt", + "e.g. ": "bijv. ", + "Your User Agent": "Je gebruikersagent", + "Your device resolution": "De resolutie van je apparaat", + "Reload widget": "Widget herladen", + "Missing roomId.": "roomId mist.", + "Always show encryption icons": "Altijd versleutelingsiconen weergeven", + "Send analytics data": "Statistische gegevens (analytics) versturen", + "Enable widget screenshots on supported widgets": "Widget schermafbeeldingen op ondersteunde widgets aanzetten", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Op dit moment is het niet mogelijk om te reageren met een bestand het zal dus als een normaal bericht worden verstuurd.", + "Unable to reply": "Niet mogelijk om te reageren", + "At this time it is not possible to reply with an emote.": "Op dit moment is het niet mogelijk om met een emote te reageren.", + "To notify everyone in the room, you must be a": "Om iedereen in de ruimte te notificeren moet je het volgende zijn:", + "Muted Users": "Gedempte Gebruikers", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Help Riot.im te verbeteren door het versturen van anonieme gebruiksgegevens. Dit zal een cookie gebruiken (zie ons Cookiebeleid).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Help Riot.im te verbeteren door het versturen van anonieme gebruiksgegevens. Dit zal een cookie gebruiken.", + "Yes, I want to help!": "Ja, ik wil helpen!", + "Warning: This widget might use cookies.": "Waarschuwing: deze widget gebruikt misschien cookies.", + "Popout widget": "Widget in nieuw venster openen", + "Picture": "Afbeelding", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Niet mogelijk om de gebeurtenis te laden waar op gereageerd was. Het kan zijn dat het niet bestaat of dat je niet toestemming hebt om het te bekijken.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot fouten worden bijgehouden op GitHub: maak een GitHub melding.", + "Failed to indicate account erasure": "Niet gelukt om de accountverwijdering aan te geven", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dit zal je account voorgoed onbruikbaar maken. Je zal niet meer in kunnen loggen en niemand anders zal met dezelfde gebruikers ID kunnen registreren. Dit zal er voor zorgen dat je account alle ruimtes verlaat waar het momenteel onderdeel van is en het verwijderd de accountgegevens van de identiteitsserver. Deze actie is onomkeerbaar.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Het deactiveren van je account zal er niet standaard voor zorgen dat de berichten die je verzonden hebt vergeten worden. Als je wilt dat wij de berichten vergeten, klik alsjeblieft op het vakje hieronder.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "De zichtbaarheid van berichten in Matrix is hetzelfde als in e-mail. Het vergeten van je berichten betekent dat berichten die je hebt verstuurd niet meer gedeeld worden met nieuwe of ongeregistreerde gebruikers, maar geregistreerde gebruikers die al toegang hebben tot deze berichten zullen alsnog toegang hebben tot hun eigen kopie van het bericht.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Vergeet alle berichten die ik heb verstuurd wanneer mijn account gedeactiveerd is (Waarschuwing: dit zal er voor zorgen dat toekomstige gebruikers een incompleet beeld krijgen van gesprekken)", + "To continue, please enter your password:": "Om verder te gaan, vul alsjeblieft je wachtwoord in:", + "password": "wachtwoord", + "Log out and remove encryption keys?": "Uitloggen en versleutelingssleutels verwijderen?", + "Clear Storage and Sign Out": "Leeg Opslag en Log Uit", + "Send Logs": "Logboek Versturen", + "Refresh": "Herladen", + "We encountered an error trying to restore your previous session.": "Er is een fout opgetreden tijdens het herstellen van je vorige sessie.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Het opschonen van je browser's opslag zal het probleem misschien oplossen, maar zal je uitloggen en ervoor zorgen dat alle versleutelde chat geschiedenis onleesbaar wordt.", + "Collapse Reply Thread": "Reactieketting Inklappen", + "Can't leave Server Notices room": "Kan de Server Meldingen ruimte niet verlaten", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Deze ruimte wordt gebruikt voor belangrijke berichten van de thuisserver, dus je kan het niet verlaten.", + "Terms and Conditions": "Voorwaarden", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Om de %(homeserverDomain)s thuisserver te blijven gebruiken zal je de voorwaarden moeten lezen en ermee akkoord moeten gaan.", + "Review terms and conditions": "Voorwaarden lezen", + "A conference call could not be started because the intgrations server is not available": "Een groepsgesprek kon niet worden gestart omdat de integratieserver niet beschikbaar is", + "Call in Progress": "Lopend gesprek", + "A call is currently being placed!": "Een gesprek wordt gestart!", + "A call is already in progress!": "Er loopt al een gesprek!", + "Permission Required": "Toestemming benodigd", + "You do not have permission to start a conference call in this room": "Je hebt niet de toestemming om in deze ruimte een groepsgesprek te starten", + "Show empty room list headings": "Lege koppen in ruimtelijst weergeven", + "This event could not be displayed": "Deze gebeurtenis kon niet worden weergegeven", + "Encrypting": "Versleutelen", + "Encrypted, not sent": "Versleuteld, niet verstuurd", + "Demote yourself?": "Jezelf degraderen?", + "Demote": "Degraderen", + "Share Link to User": "Link met gebruiker delen", + "deleted": "verwijderd", + "underlined": "onderstreept", + "inline-code": "code in de regel", + "block-quote": "citaat", + "bulleted-list": "lijst met opsommingstekens", + "numbered-list": "genummerde lijst", + "Share room": "Ruimte delen", + "System Alerts": "Systeemmeldingen", + "You have no historical rooms": "Je hebt geen historische ruimtes", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "In versleutelde ruimtes, zoals deze, zijn URL-voorvertoningen standaard uitgeschakeld om ervoor te zorgen dat jouw thuisserver (waar de voorvertoningen worden gemaakt) geen informatie kan verzamelen over de links die je in deze ruimte ziet.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Als iemand een URL in zijn of haar bericht zet, kan er een URL-voorvertoning weergegeven worden om meer informatie over de link te geven, zoals de titel, omschrijving en een afbeelding van de website.", + "The email field must not be blank.": "Het e-mailveld mag niet leeg zijn.", + "The user name field must not be blank.": "Het gebruikersnaamveld mag niet leeg zijn.", + "The phone number field must not be blank.": "Het telefoonnummerveld mag niet leeg zijn.", + "The password field must not be blank.": "Het wachtwoordveld mag niet leeg zijn.", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Deze thuisserver heeft zijn maandelijkse gebruikerslimiet bereikt. Neem contact op met de beheerder van je thuisserver om de dienst weer te kunnen gebruiken.", + "Failed to remove widget": "Widget kon niet worden verwijderd", + "An error ocurred whilst trying to remove the widget from the room": "Er is een fout opgetreden tijdens het verwijderen van de widget uit deze ruimte", + "Share Room": "Ruimte delen", + "Link to most recent message": "Link naar meest recente bericht", + "Share User": "Gebruiker delen", + "Share Community": "Gemeenschap delen", + "Share Room Message": "Bericht uit ruimte delen", + "Link to selected message": "Link naar geselecteerde bericht", + "COPY": "KOPIËREN", + "Share Message": "Bericht delen", + "You can't send any messages until you review and agree to our terms and conditions.": "Je kunt geen berichten sturen totdat je onze algemene voorwaarden hebt gelezen en geaccepteerd.", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Je bericht is niet verstuurd omdat deze thuisserver zijn maandelijkse gebruikerslimiet heeft bereikt. Neem contact op met de beheerder van je thuisserver om de dienst te kunnen blijven gebruiken.", + "No Audio Outputs detected": "Geen geluidsuitgangen gedetecteerd", + "Audio Output": "Geluidsuitgang", + "This homeserver has hit its Monthly Active User limit": "Deze thuisserver heeft zijn maandelijkse gebruikerslimiet bereikt", + "Please contact your service administrator to continue using this service.": "Neem contact op met de beheerder van je thuisserver om de dienst te kunnen blijven gebruiken.", + "Try the app first": "De app eerst proberen", + "Riot Desktop on %(platformName)s": "Riot Desktop op %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot wordt niet ondersteund op het mobiele web. Wil je de app installeren?", + "Unknown device": "Onbekend apparaat", + "You need to be using HTTPS to place a screen-sharing call.": "U moet HTTPS gebruiken om een oproep met schermdelen te kunnen starten.", + "Welcome to Riot.im": "Welkom bij Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Gedecentaliseerd en versleuteld chatten & samenwerken mogelijk gemaakt door [matrix]", + "Search the room directory": "De kamerlijst doorzoeken", + "Chat with Riot Bot": "Met Riot Bot chatten", + "Get started with some tips from Riot Bot!": "Begin met enkele tips van Riot Bot!", + "General discussion about Matrix and Riot": "Algemene discussie over Matrix en Riot", + "Discussion of all things Matrix!": "Discussie over alles wat met Matrix te maken heeft!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop-chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk-chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk-chat", + "Matrix technical discussions": "Technische discussies over Matrix", + "Running Matrix services": "Matrixdiensten beheren", + "Community-run support for Synapse": "Synapse-ondersteuning vanuit de gemeenschap", + "Admin support for Dendrite": "Beheerondersteuning voor Dendrite", + "Announcements about Synapse releases": "Aankondigingen over Synapse-uitgaven", + "Support for those using and running matrix-appservice-irc": "Ondersteuning voor gebruikers en beheerders van matrix-appservice-irc", + "Building services on Matrix": "Diensten op Matrix bouwen", + "Support for those using the Matrix spec": "Ondersteuning voor gebruikers van Matrix-specificatie", + "Contributing code to Matrix and Riot": "Code bijdragen aan Matrix en Riot", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Veel kamers bestaan al in Matrix, gelinkt aan bestaande netwerken (Slack, IRC, Gitter, enz.) of onafhankelijk. Bekijk de kamerlijst!", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s op %(osName)s", + "Design and implementation of E2E in Matrix": "Ontwerp en implementatie van E2E in Matrix", + "Implementing VR services with Matrix": "Implementatie van VR-diensten met Matrix", + "Implementing VoIP services with Matrix": "Implementatie van VoIP-diensten met Matrix", + "Discussion of the Identity Service API": "Discussie over de Identity Service API", + "Support for those using, running and writing other bridges": "Ondersteuning voor het gebruiken, draaien en ontwikkelen aan andere bruggen", + "Dev chat for the Riot/Web dev team": "Dev-chat voor het Riot/Web ontwikkelteam", + "Dev chat for the Dendrite dev team": "Dev-chat voor het Dendrite-ontwikkelteam", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Je kan de custom serveropties gebruiken om op andere Matrix-servers in te loggen door een andere thuisserver-URL op te geven.
Dit laat je toe om Riot te gebruiken met een bestaand Matrix-account op een andere thuisserver.

Je kan ook een aangepaste-identiteitsserver opzetten maar dan kan je geen gebruikers uitnodigen via hun e-mailadres, of zelf uitgenodigd worden via je e-mailadres.", + "Co-ordination for Riot translators": "Coördinatie voor Riot vertalers" +} \ No newline at end of file diff --git a/riot/i18n/nn.json b/riot/i18n/nn.json new file mode 100644 index 0000000..c030577 --- /dev/null +++ b/riot/i18n/nn.json @@ -0,0 +1,1333 @@ +{ + "This phone number is already in use": "Dette telefonnummeret er allereie i bruk", + "The version of Riot.im": "Utgåva av Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Om du er logga inn eller ikkje (vi sparer ikkje på brukarnamnet ditt)", + "Your homeserver's URL": "Heimtenaren din si nettadresse", + "Your device resolution": "Eininga di sin oppløysing", + "The information being sent to us to help make Riot.im better includes:": "Informasjonen som vert send til oss for å gjera Riot.im betre er mellom anna:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Der denne sida inneheld gjenkjenneleg informasjon, slik som ein rom-, brukar- eller gruppeID, vert denne informasjonen sletta før han sendast til tenar.", + "Call Failed": "Oppringjing Mislukkast", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Det finst ukjende einingar i dette rommet: viss du gjeng frama utan å godkjenna dei, kan nokon mogelegvis tjuvlytta på samtala.", + "Review Devices": "Sjå Over Einingar", + "Call Anyway": "Ring Likevel", + "Answer Anyway": "Svar Likevel", + "Call": "Ring", + "Answer": "Svar", + "You are already in a call.": "Du er allereie i ei samtale.", + "VoIP is unsupported": "VoIP er ikkje støtta", + "You cannot place VoIP calls in this browser.": "Du kan ikkje samtala med VoIP i denne nettlesaren.", + "You cannot place a call with yourself.": "Du kan ikkje samtala med deg sjølv.", + "Could not connect to the integration server": "Kunne ikkje kopla til integreringstenaren", + "A conference call could not be started because the intgrations server is not available": "Ei gruppesamtale lét seg ikkje få i gang fordi integreringstenaren ikkje er tilgjengeleg", + "Call in Progress": "Ei Samtale er i Gang", + "A call is currently being placed!": "Ei samtale held allereie på å starta!", + "A call is already in progress!": "Ei samtale er i gang allereie!", + "Permission Required": "Tillating er Naudsynt", + "You do not have permission to start a conference call in this room": "Du har ikkje tillating til å starta ei gruppesamtale i dette rommet", + "The file '%(fileName)s' failed to upload": "Fila '%(fileName)s' vart ikkje lasta opp", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Fila '%(fileName)s' gjeng denne heimtenaren si storleiksgrense for opplastningar", + "Upload Failed": "Opplasting Mislukkast", + "Sun": "sø", + "Mon": "må", + "Tue": "ty", + "Wed": "on", + "Thu": "to", + "Fri": "fr", + "Sat": "la", + "Jan": "jan", + "Feb": "feb", + "Mar": "mar", + "Apr": "apr", + "May": "mai", + "Jun": "jun", + "Jul": "jul", + "Aug": "aug", + "Sep": "sep", + "Oct": "okt", + "Nov": "nov", + "Dec": "des", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Who would you like to add to this community?": "Kven vil du leggja til i dette samfunnet?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Åtvaring: alle du legg til i eit samfunn vert offentleg synleg til alle som kan samfunns-IDen", + "Invite new community members": "Byd nye samfunnsmedlemer inn", + "Name or matrix ID": "Namn eller matrix-ID", + "Invite to Community": "Byd inn til Samfunn", + "Which rooms would you like to add to this community?": "Kva rom vil du leggja til i dette samfunnet?", + "Show these rooms to non-members on the community page and room list?": "Vis desse romma til ikkje-medlemer på samfunnssida og romlista?", + "Add rooms to the community": "Legg til rom i samfunnet", + "Room name or alias": "Romnamn eller alias", + "Add to community": "Legg til i samfunn", + "Failed to invite the following users to %(groupId)s:": "Fylgjande brukarar lét seg ikkje byda inn i %(groupId)s:", + "Failed to invite users to community": "Fekk ikkje til å byda brukarar inn til samfunnet", + "Failed to invite users to %(groupId)s": "Fekk ikkje til å byda brukarar inn til %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Fylgjande rom lét seg ikkje leggja til i %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot har ikkje tillating til å senda deg varsel - ver venleg og sjekk nettlesarinnstillingane dine", + "Riot was not given permission to send notifications - please try again": "Riot fekk ikkje tillating til å senda varsel - ver venleg og prøv igjen", + "Unable to enable Notifications": "Klarte ikkje å skru på Varsel", + "This email address was not found": "Denne epostadressa var ikkje funnen", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Epostadressa di ser ikkje ut til å vera tilknytta ein Matrix-ID på denne heimtenaren.", + "Default": "Utgangspunktinnstilling", + "Restricted": "Avgrensa", + "Moderator": "Moderator", + "Admin": "Administrator", + "Start a chat": "Start ei samtale", + "Who would you like to communicate with?": "Kven vil du koma i kontakt med?", + "Email, name or matrix ID": "Epost, namn eller Matrix-ID", + "Start Chat": "Start ei Samtale", + "Invite new room members": "Byd nye rommedlemer inn", + "Who would you like to add to this room?": "Kven vil du leggja til i rommet?", + "Send Invites": "Send Innbydingar", + "Failed to invite user": "Fekk ikkje til å byda brukar inn", + "Operation failed": "Handling mislukkast", + "Failed to invite": "Fekk ikkje til å byda inn", + "Failed to invite the following users to the %(roomName)s room:": "Dei fylgjande brukarane lét seg ikkje byda inn til %(roomName)s:", + "You need to be logged in.": "Du må vera logga inn.", + "You need to be able to invite users to do that.": "Du må kunna byda brukarar inn for å gjera det.", + "Unable to create widget.": "Klarte ikkje å laga widget.", + "Missing roomId.": "Manglande roomId.", + "Failed to send request.": "Fekk ikkje til å senda førespurnad.", + "This room is not recognised.": "Rommet er ikkje attkjend.", + "Power level must be positive integer.": "Makthøgda må vera eit positivt heiltal.", + "You are not in this room.": "Du er ikkje i dette rommet.", + "You do not have permission to do that in this room.": "Du har ikkje lov til å gjera det i dette rommet.", + "Missing room_id in request": "Manglande room_Id i førespurnad", + "Room %(roomId)s not visible": "Rommet %(roomId)s er ikkje synleg", + "Missing user_id in request": "Manglande user_id i førespurnad", + "Usage": "Bruk", + "Searches DuckDuckGo for results": "Røkjer DuckDuckGo etter resultat", + "Your language of choice": "Ditt valde mål", + "e.g. %(exampleValue)s": "t.d. %(exampleValue)s", + "/ddg is not a command": "/ddg er ikkje eit påbod", + "Changes your display nickname": "Forandrar kallenamnet ditt", + "Changes colour scheme of current room": "Forandrar fargevala i ditt noverande rom", + "Sets the room topic": "Set romemnet", + "Invites user with given id to current room": "Byd brukarar med den gjevne IDen inn til det noverande rommet", + "Joins room with given alias": "Gjeng inn i eit rom med det gjevne aliaset", + "Leave room": "Far frå rommet", + "Unrecognised room alias:": "Ukjend romalias:", + "Kicks user with given id": "Sparkar brukarar med gjeven ID", + "Bans user with given id": "Stengjer brukarar med den gjevne IDen ute", + "Unbans user with given id": "Slepp utestengde brukarar med den gjevne IDen inn at", + "Ignores a user, hiding their messages from you": "Overser ein brukar, slik at meldingane deira ikkje synast for deg", + "Ignored user": "Oversedd brukar", + "You are now ignoring %(userId)s": "Du overser no %(userId)s", + "Stops ignoring a user, showing their messages going forward": "Sluttar å oversjå ein brukar, slik at meldingane deira no kan sjåast", + "Unignored user": "Avoversedd brukar", + "You are no longer ignoring %(userId)s": "Du overser ikkje %(userId)s no lenger", + "Define the power level of a user": "Set ein brukar si makthøgd", + "This email address is already in use": "Denne epostadressa er allereie i bruk", + "The platform you're on": "Platformen du er på", + "Failed to verify email address: make sure you clicked the link in the email": "Fekk ikkje til å stadfesta epostadressa: sjå til at du klikka på den rette lenkja i eposten", + "Your identity server's URL": "Din identitetstenar si nettadresse", + "Every page you use in the app": "Alle sider du brukar i æppen", + "e.g. ": "t.d. ", + "Your User Agent": "Din Brukaragent", + "Analytics": "Statistikk", + "Unable to capture screen": "Kunne ikkje visa skjerm", + "Existing Call": "Samtale er i gang", + "To use it, just wait for autocomplete results to load and tab through them.": "For å bruka han, vent på at resultata fyller seg ut og tab gjennom dei.", + "Deops user with given id": "AvOPar brukarar med den gjevne IDen", + "Opens the Developer Tools dialog": "Opnar Utviklarverktøy-tekstboksen", + "Verifies a user, device, and pubkey tuple": "Godkjenner ein brukar, eining og offentleg-nykeltuppel", + "Unverify": "Fjern godkjenning", + "Verify...": "Godkjenn...", + "Which officially provided instance you are using, if any": "Kva offisielt gjevne instanse du brukar, viss nokon", + "The remote side failed to pick up": "Den andre sida tok ikkje røret", + "Unknown (user, device) pair:": "Ukjend (brukar, eining)-par:", + "Device already verified!": "Eininga er allereie godkjend!", + "WARNING: Device already verified, but keys do NOT MATCH!": "ÅTVARING: Eininga er allereie godkjend, men nyklane SAMSVARER IKKJE!", + "Verified key": "Godkjend nykel", + "Displays action": "Visar handlingar", + "Unrecognised command:": "Ukjend påbod:", + "Reason": "Grunnlag", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s sa ja til innbydinga frå %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s sa ja til ei innbyding.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s bad om ei VoIP-gruppesamtale.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s baud %(targetName)s inn.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s stengde %(targetName)s ute.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s endra visingsnamnet sitt til %(displayName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s sette visingsnamnet sitt som %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s fjerna visingsnamnet sitt (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s fjerna profilbiletet sitt.", + "%(senderName)s changed their profile picture.": "%(senderName)s endra profilbiletet sitt.", + "%(senderName)s set a profile picture.": "%(senderName)s sette seg eit profilbilete.", + "VoIP conference started.": "Ei VoIP-gruppesamtale starta.", + "%(targetName)s joined the room.": "%(targetName)s kom inn i rommet.", + "VoIP conference finished.": "VoIP-gruppesamtale enda.", + "%(targetName)s rejected the invitation.": "%(targetName)s sa nei til innbydinga.", + "%(targetName)s left the room.": "%(targetName)s fór frå rommet.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s fjerna utestenginga til %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s sparka %(targetName)s ut.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s tok attende %(targetName)s si innbyding.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s gjorde emnet om til \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s fjerna romnamnet.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s gjorde romnamnet om til %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s sende eit bilete.", + "Someone": "Nokon", + "(not supported by this browser)": "(ikkje støtta av denne nettlesaren)", + "%(senderName)s answered the call.": "%(senderName)s tok røret.", + "(could not connect media)": "(klarte ikkje å kopla media saman)", + "(no answer)": "(inkje svar)", + "(unknown failure: %(reason)s)": "(ukjend mislukking: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s enda samtala.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s starta ei %(callType)s-samtale.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s baud %(targetDisplayName)s inn til rommet.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gjorde slik at den framtidige romhistoria er tilgjengeleg for alle rommedlemer frå då dei vart innbodne.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gjorde slik at den framtidige romhistoria er tilgjengeleg for alle rommedlemer frå då dei kom inn.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s gjorde den framtidige romhistoria tilgjengeleg for alle rommedlemer.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s gjorde den framtidige romhistoria tilgjengelg for kven som helst.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde den framtidige romhistoria tilgjengeleg til ukjende (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s skrudde ende-til-ende-kryptering på (%(algorithm)s-algoritmen).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s frå %(fromPowerLevel)s til %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s endra makthøgda til %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s endra dei festa meldingane i rommet.", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s-widget endra av %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s-widget lagt til av %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s widget fjerna av %(senderName)s", + "%(displayName)s is typing": "%(displayName)s skriv", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s og %(count)s til skriv", + "one": "%(names)s og ein til skriv" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s og %(lastPerson)s skriv", + "Failure to create room": "Klarte ikkje å laga rommet", + "Server may be unavailable, overloaded, or you hit a bug.": "tenaren er kanskje utilgjengeleg, overlasta elles so traff du ein bøgg.", + "Send anyway": "Send likevel", + "Send": "Send", + "Unnamed Room": "Rom utan Namn", + "Your browser does not support the required cryptography extensions": "Nettlesaren din støttar ikkje dei naudsynte kryptografiske utvidingane", + "Not a valid Riot keyfile": "Ikkje ei gyldig Riot-nykelfil", + "Authentication check failed: incorrect password?": "Godkjenningssjekk mislukkast: urett passord?", + "Failed to join room": "Fekk ikkje til å gå inn i rom", + "Message Pinning": "Meldingsfesting", + "Disable Emoji suggestions while typing": "Skru emojiframlegg av mens ein skriv", + "Use compact timeline layout": "Bruk smal tidslinjeutforming", + "Hide removed messages": "Gøym fjerna meldingar", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Gøym kom inn/fór ut-meldingar (innbydingar, utspark, utestengingar påverkast ikkje)", + "Hide avatar changes": "Gøym avatarendringar", + "Hide display name changes": "Gøym visingsnamn-endringar", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Vis tidspunkt i 12-timarsform (t.d. 2:30pm)", + "Always show message timestamps": "Vis alltid meldingstidspunkt", + "Autoplay GIFs and videos": "Spel av GIFar og videoar med ein gong", + "Always show encryption icons": "Vis alltid krypteringsikon", + "Hide avatars in user and room mentions": "Gøym avatarar i brukar- og romnemningar", + "Disable big emoji in chat": "Skru store emojiar i samtaler av", + "Don't send typing notifications": "Ikkje send skrivevarsel", + "Disable Notifications": "Skru Varsel av", + "Enable Notifications": "Skru Varsel på", + "Automatically replace plain text Emoji": "Erstatt Emojiar i plaintekst av seg sjølv", + "Mirror local video feed": "Spegl den lokale videofeeden", + "Disable Community Filter Panel": "Skru Samfunnsfilterpanel av", + "Disable Peer-to-Peer for 1:1 calls": "Skru Peer-til-Peer for 1:1-samtaler av", + "Send analytics data": "Send statistikkdata", + "Never send encrypted messages to unverified devices from this device": "Send aldri krypterte meldingar til ikkje-godkjende einingar frå denne eininga", + "Never send encrypted messages to unverified devices in this room from this device": "Send aldri krypterte meldingar til ikkje-godkjende einingar i dette rommet frå denne eininga", + "Enable URL previews for this room (only affects you)": "Skru URL-førehandsvisingar på for dette rommet (påverkar deg åleine)", + "Enable URL previews by default for participants in this room": "Skru URL-førehandsvisingar på som utgangspunkt for deltakarar i dette rommet", + "Room Colour": "Romfarge", + "Enable widget screenshots on supported widgets": "Skru widget-skjermbilete på for støtta widgetar", + "Collecting app version information": "Samlar æppversjoninfo", + "Collecting logs": "Samlar loggar", + "Uploading report": "Lastar rapport opp", + "Waiting for response from server": "Ventar på svar frå tenaren", + "Messages containing my display name": "Meldingar som inneheld visingsnamnet mitt", + "Messages containing my user name": "Meldingar som inneheld brukarnamnet mitt", + "Messages in one-to-one chats": "Meldingar i ein-til-ein-samtaler", + "Messages in group chats": "Meldingar i gruppesamtaler", + "When I'm invited to a room": "Når eg er boden inn til eit rom", + "Call invitation": "Samtaleinnbydingar", + "Messages sent by bot": "Meldingar sendt frå ein bot", + "Active call (%(roomName)s)": "Pågåande samtale (%(roomName)s)", + "unknown caller": "ukjend ringar", + "Incoming voice call from %(name)s": "%(name)s ynskjer ei røystsamtale", + "Incoming video call from %(name)s": "%(name)s ynskjer ei videosamtale", + "Incoming call from %(name)s": "%(name)s ynskjer ei samtale", + "Decline": "Sei nei", + "Accept": "Sei ja", + "Error": "Noko gjekk gale", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ei tekstmelding vart send til +%(msisdn)s. Ver venleg og skriv inn stadfestingskoden ho inneheld", + "Incorrect verification code": "Urett stadfestingskode", + "Enter Code": "Skriv inn Koden", + "Submit": "Send inn", + "Phone": "Telefon", + "Add phone number": "Legg telefonnummer til", + "Add": "Legg til", + "Failed to upload profile picture!": "Fekk ikkje til å lasta opp profilbilete!", + "Upload new:": "Last opp ny:", + "No display name": "Inkje visingsnamn", + "New passwords don't match": "Dei nye passorda samsvarar ikkje", + "Passwords can't be empty": "Passordsfelta kan ikkje vera tomme", + "Warning!": "Åtvaring!", + "Continue": "Gå fram", + "Do you want to set an email address?": "Vil du setja ei epostadresse?", + "Current password": "Noverande passord", + "Password": "Passord", + "New Password": "Nytt Passord", + "Confirm password": "Stadfest passord", + "Change Password": "Endra Passord", + "Your home server does not support device management.": "Heimtenaren din støttar ikkje einingshandsaming.", + "Unable to load device list": "Klarte ikkje å lasta einingslista", + "Authentication": "Godkjenning", + "Delete %(count)s devices": { + "other": "Slett %(count)s einingar", + "one": "Slett eining" + }, + "Device ID": "EiningsID", + "Device Name": "Einingsnamn", + "Last seen": "Sist sedd", + "Select devices": "Vel einingar", + "Failed to set display name": "Fekk ikkje til å setja visingsnamn", + "Error saving email notification preferences": "Klarte ikkje å lagra foretrukne epostvarselinnstillingar", + "An error occurred whilst saving your email notification preferences.": "Noko gjekk gale med lagringa av dine foretrukne epostvarselinstillingar.", + "Keywords": "Nykelord", + "Enter keywords separated by a comma:": "Skriv inn nykelord med komma imellom:", + "OK": "Greitt", + "Failed to change settings": "Klarte ikkje å endra innstillingar", + "Can't update user notification settings": "Kan ikkje oppdatera brukarvarselinstillingar", + "Failed to update keywords": "Fekk ikkje til å oppdatera nykelord", + "Messages containing keywords": "Meldingar som inneheld nykelord", + "Notify for all other messages/rooms": "Varsl for alle andre meldingar/rom", + "Notify me for anything else": "Varsl meg for kva som helst anna", + "Enable notifications for this account": "Skru varsel på for denne brukaren", + "All notifications are currently disabled for all targets.": "Alle varsel er for augeblunket skrudd av for alle mål.", + "Add an email address above to configure email notifications": "Legg til ein epostadresse i feltet over for å endra epostvarselinnstillingar", + "Enable email notifications": "Skru epostvarsel på", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Varsel på fylgjande nykelord følgjer reglar som ikkje kan visast her:", + "Unable to fetch notification target list": "Klarte ikkje å henta varselmållista", + "Notification targets": "Varselmål", + "Advanced notification settings": "Omfattande varselinnstillingar", + "There are advanced notifications which are not shown here": "Det er omfattande varsel som ikkje er vist her", + "Enable desktop notifications": "Skru skrivebordsvarsel på", + "Show message in desktop notification": "Vis meldinga i eit skriverbordsvarsel", + "Enable audible notifications in web client": "Skru høyrlege varsel i nettklienten på", + "Off": "Av", + "On": "På", + "Noisy": "Bråket", + "Cannot add any more widgets": "Kan ikkje leggja fleire widgets til", + "Add a widget": "Legg til ein widget", + "Drop File Here": "Slepp Fila Her", + "Drop file here to upload": "Slipp ein fil her for å lasta opp", + " (unsupported)": " (ustøtta)", + "Join as voice or video.": "Gå inn som røyst eller video.", + "Ongoing conference call%(supportedText)s.": "Ein gruppesamtale er i gang%(supportedText)s.", + "This event could not be displayed": "Denne hendingen kunne ikkje visast", + "%(senderName)s sent an image": "%(senderName)s sende eit bilete", + "%(senderName)s sent a video": "%(senderName)s sende ein video", + "%(senderName)s uploaded a file": "%(senderName)s lasta ei fil opp", + "Options": "Innstillingar", + "Your key share request has been sent - please check your other devices for key share requests.": "Nykeldelingsforespurnaden din vart send - ver venleg og sjekk dei andre einingane dine for nykeldelingsforespurnadar.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Viss dei andre einingane dine ikkje har nykelen til denne meldinga kan du ikkje dekryptera ho.", + "Key request sent.": "Nykelforespurnad er send.", + "Re-request encryption keys from your other devices.": "Spør på nytt om krypteringsnyklar frå dei andre einingane dine.", + "Undecryptable": "Kan ikkje dekrypterast", + "Encrypting": "Krypteringa er i gang", + "Encrypted, not sent": "Kryptert, men ikkje sendt", + "Encrypted by a verified device": "Kryptert av ei godkjent eining", + "Encrypted by an unverified device": "Kryptert av ei ikkje-godkjent eining", + "Unencrypted message": "Ikkje-kryptert melding", + "Please select the destination room for this message": "Ver venleg og vel målrommet for denne meldinga", + "Blacklisted": "Svartelista", + "Verified": "Godkjend", + "Unverified": "Ikkje-godkjend", + "device id: ": "einingsID: ", + "Disinvite": "Fjern innbyding", + "Kick": "Spark ut", + "Disinvite this user?": "Fjern innbydinga til denne brukaren?", + "Kick this user?": "Spark denne brukaren ut?", + "Failed to kick": "Fekk ikkje til å sparka ut", + "Unban": "Slepp inn att", + "Ban": "Steng ute", + "Unban this user?": "Slepp denne brukaren inn att?", + "Ban this user?": "Steng denne brukaren ute?", + "Failed to ban user": "Fekk ikkje til å utestenga brukar", + "Demote yourself?": "Senk høgda di?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kan ikkje gjera om på denne endringa sidan du senkar høgda di. Viss du er den siste opphøgda brukaren i rommet vert det umogeleg å få høgda att.", + "Demote": "Senk høgda", + "Failed to mute user": "Fekk ikkje til å stilne brukar", + "Failed to toggle moderator status": "Fekk ikkje til å veksla moderatorhøgd", + "Failed to change power level": "Fekk ikkje til å endra makthøgda", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kjem ikkje til å kunna gjera om på denne endringa sidan du set brukaren si høgd opp til di eiga.", + "Are you sure?": "Er du sikker?", + "No devices with registered encryption keys": "Ingen einingar med oppskrivne krypteringsnykler", + "Devices": "Einingar", + "Unignore": "Slutt å oversjå", + "Ignore": "Oversjå", + "Mention": "Nemn", + "Invite": "Byd inn", + "Enable inline URL previews by default": "Skru URL-førehandsvisingar i tekstfeltet på", + "Share Link to User": "Del Brukarlenkje", + "User Options": "Brukarinnstillingar", + "Direct chats": "Direktesamtaler", + "Unmute": "Fjern stilning", + "Mute": "Stiln", + "Revoke Moderator": "Fjern Moderatorrett", + "Make Moderator": "Gjer til Moderator", + "Admin Tools": "Administratorverktøy", + "Level:": "Høgd:", + "and %(count)s others...": { + "other": "og %(count)s til...", + "one": "og ein til..." + }, + "Invited": "Innboden", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (makthøgd %(powerLevelNumber)s)", + "bold": "feit", + "italic": "skeiv", + "deleted": "sletta", + "underlined": "understreka", + "bulleted-list": "punktliste", + "numbered-list": "talliste", + "Attachment": "Vedlegg", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Det er førebels ikkje mogeleg å svara med ei fil, so dette vil verta send utan å vera eit svar.", + "Upload Files": "Last opp Filer", + "Are you sure you want to upload the following files?": "Er du sikker på at du vil lasta opp dei fylgjande filene?", + "Encrypted room": "Kryptert rom", + "Unencrypted room": "Ikkje-enkrypert rom", + "Hangup": "Legg på", + "Voice call": "Røystesamtale", + "Video call": "Videosamtale", + "Upload file": "Last ei fil opp", + "Show Text Formatting Toolbar": "Vis Tekstformverktøylinje", + "Send an encrypted reply…": "Send eit kryptert svar…", + "Send a reply (unencrypted)…": "Send eit svar (ikkje-kryptert)…", + "Send an encrypted message…": "Send ei kryptert melding…", + "Send a message (unencrypted)…": "Send ei melding (ikkje-kryptert)…", + "You do not have permission to post to this room": "Du har ikkje tillating til å senda meldingar i dette rommet", + "Turn Markdown on": "Skru Mardown på", + "Turn Markdown off": "Skru Markdown av", + "Hide Text Formatting Toolbar": "Gøym Tekstformverktøylinje", + "Server error": "Noko gjekk gale med tenaren", + "Server unavailable, overloaded, or something else went wrong.": "tenaren var utilgjengeleg, overlasta, elles so gjekk noko anna galt.", + "Command error": "Noko gjekk gale med påbodet", + "The maximum permitted number of widgets have already been added to this room.": "Det største mogelege talet widgets finst allereie på dette rommet.", + "Unable to reply": "Klarte ikkje å svara", + "At this time it is not possible to reply with an emote.": "Det er førebels ikkje mogeleg å svara med ein emote.", + "Markdown is disabled": "Markdown er skrudd av", + "Markdown is enabled": "Markdown er skrudd på", + "Unpin Message": "Tak ned festa Melding", + "Jump to message": "Hopp til melding", + "No pinned messages.": "Inga festa meldingar.", + "Loading...": "Lastar...", + "Pinned Messages": "Festa Meldingar", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)st", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "tilkopla i %(duration)s", + "Idle for %(duration)s": "Fråverande i %(duration)s", + "Offline for %(duration)s": "Fråkopla i %(duration)s", + "Unknown for %(duration)s": "Ukjend i %(duration)s", + "Online": "Tilkopla", + "Idle": "Fråverande", + "Offline": "Fråkopla", + "Unknown": "Ukjend", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s såg dette %(dateTime)s", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s %(userName)s såg dette %(dateTime)s", + "Replying": "Svarar", + "No rooms to show": "Inkje rom å visa", + "Unnamed room": "Rom utan namn", + "Guests can join": "Gjester kan koma inn", + "Failed to set avatar.": "Fekk ikkje til å setja avatar.", + "Save": "Lagr", + "(~%(count)s results)": { + "other": "(~%(count)s resultat)", + "one": "(~%(count)s resultat)" + }, + "Join Room": "Far inn i Rom", + "Upload avatar": "Last avatar opp", + "Remove avatar": "Fjern avatar", + "Settings": "Innstillingar", + "Forget room": "Gløym rom", + "Search": "Søk", + "Share room": "Del rom", + "Drop here to favourite": "Slepp her for å gjera til yndling", + "Drop here to restore": "Slepp her for å gjenoppretta", + "Drop here to demote": "Slepp her for å senka i høgd", + "Press to start a chat with someone": "Trykk på for å starta ei samtale med nokon", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Du er enno ikkje i eit rom! Trykk på for å laga eit rom eller for å sjå gjennom utvalet", + "Community Invites": "Samfunnsinnbydingar", + "Invites": "Innbydingar", + "Favourites": "Yndlingar", + "People": "Folk", + "Rooms": "Rom", + "Low priority": "Lågrett", + "System Alerts": "Systemvarsel", + "You have no historical rooms": "Du har inkje historiske rom", + "Historical": "Historiske", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Klarte ikkje å forsikra at adressa som denne innbydinga er send til samsvarar med den som er tilknytta brukaren din.", + "This invitation was sent to an email address which is not associated with this account:": "Denne invitasjonen er send til ei epostadressa som ikkje er tilknytta denne brukaren:", + "You may wish to login with a different account, or add this email to this account.": "Kanskje du ynskjer å logga inn med ein annan brukar, eller leggja til denne eposten til denne brukaren.", + "You have been invited to join this room by %(inviterName)s": "Du vart boden inn i dette rommet av %(inviterName)s", + "Would you like to accept or decline this invitation?": "Vil du seia ja eller nei til denne innbydinga?", + "Reason: %(reasonText)s": "Grunnlag: %(reasonText)s", + "Rejoin": "Far inn att", + "You have been kicked from %(roomName)s by %(userName)s.": "Du vart sparka ut frå %(roomName)s av %(userName)s.", + "You have been kicked from this room by %(userName)s.": "Du vart sparka ut frå dette rommet av %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "Du vart stengd ute frå %(roomName)s av %(userName)s.", + "You have been banned from this room by %(userName)s.": "Du vart stengd ute frå dette rommet av %(userName)s.", + "This room": "Dette rommet", + "%(roomName)s does not exist.": "%(roomName)s finst ikkje.", + "%(roomName)s is not accessible at this time.": "%(roomName)s er ikkje tilgjengeleg no.", + "You are trying to access %(roomName)s.": "Du prøver å gå inn i %(roomName)s.", + "You are trying to access a room.": "Du prøver å gå inn i eit rom.", + "Click here to join the discussion!": "Klikk her for å verta med i meiningsutvekslinga!", + "This is a preview of this room. Room interactions have been disabled": "Dette er ei førehandsvising av dette rommet. Romhandlingar er skrudd av", + "To change the room's avatar, you must be a": "For å endra rommet sin avatar må du vera ein", + "To change the room's name, you must be a": "For å endra rommet sitt namn må du vera ein", + "To change the room's main address, you must be a": "For å endra rommet si hovudadresse må du vera ein", + "To change the room's history visibility, you must be a": "For å endra synlegheita på romhistoria må du vera ein", + "To change the permissions in the room, you must be a": "For å endra tillatingane i rommet må du vera ein", + "To change the topic, you must be a": "For å endra emnet må du vera ein", + "To modify widgets in the room, you must be a": "For å endra widgetar i rommet må du vera ein", + "Failed to unban": "Fekk ikkje til å lata inn att", + "Banned by %(displayName)s": "Stengd ute av %(displayName)s", + "Privacy warning": "Personvernsåtvaring", + "Changes to who can read history will only apply to future messages in this room": "Endringar i kven som kan lesa historia gjeld berre for framtidige meldingar i dette rommet", + "The visibility of existing history will be unchanged": "Synlegheita på den noverande historia vert ikkje endra", + "unknown error code": "ukjend errorkode", + "Failed to forget room %(errCode)s": "Fekk ikkje til å gløyma rommet %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "Ende-til-ende-kryptering vert betatesta og er kanskje ikkje påliteleg", + "You should not yet trust it to secure data": "Du bør førebels ikkje stole på at ho kan sikra data", + "Devices will not yet be able to decrypt history from before they joined the room": "Einingar kan førebels ikkje dekryptera historia frå før dei kom inn i rommet", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Når kryptering er skrudd på i eit rom kan ho (førebels) ikkje skruast av att", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Krypterte meldingar visast ikkje hjå klientar som førebels ikkje implementerer kryptering", + "Enable encryption": "Skru kryptering på", + "(warning: cannot be disabled again!)": "(åtvaring: kan ikkje skruast av att!)", + "Encryption is enabled in this room": "Kryptering er skrudd på i dette rommet", + "Encryption is not enabled in this room": "Kryptering er ikkje skrudd på i dette rommet", + "The default role for new room members is": "Rolla nye medlemer har i utgangspunktet er", + "To send messages, you must be a": "For å senda meldingar må du vera ein", + "To invite users into the room, you must be a": "For å byda brukarar inn til rommet må du vera ein", + "To configure the room, you must be a": "For å stille rommet inn må du vera ein", + "To kick users, you must be a": "For å sparka brukarar ut må du vera ein", + "To ban users, you must be a": "For å stengja brukarar ute må du vera ein", + "To remove other users' messages, you must be a": "For å fjerna andre brukarar sine meldingar må du vera ein", + "To notify everyone in the room, you must be a": "For å varsla alle i rommet må du vera ein", + "No users have specific privileges in this room": "Ingen brukarar har særeigne rettar i dette rommet", + "%(user)s is a %(userRole)s": "%(user)s er %(userRole)s", + "Privileged Users": "Brukarar med Særrett", + "Muted Users": "Stilna Brukarar", + "Banned users": "Utestengde Brukarar", + "Favourite": "Yndling", + "Tagged as: ": "Merka som: ", + "To link to a room it must have an address.": "For å lenkja til eit rom må det ha ei adresse.", + "Guests cannot join this room even if explicitly invited.": "Gjester kan ikkje koma inn i dette rommet sjølv viss dei er tydeleg innbodne.", + "Click here to fix": "Klikk her for å retta opp i det", + "To send events of type , you must be a": "For å senda hendingar av sorten må du vera ein", + "Who can access this room?": "Kven har tilgang til rommet?", + "Only people who have been invited": "Berre dei som er bodne inn", + "Anyone who knows the room's link, apart from guests": "Dei som kjenner lenkja til rommet, sett vekk frå gjester", + "Anyone who knows the room's link, including guests": "Dei som kjenner lenkja til rommet, gjester òg", + "Publish this room to the public in %(domain)s's room directory?": "Gjer dette rommet offentleg i %(domain)s sitt romutval?", + "Who can read history?": "Kven kan lesa historia?", + "Anyone": "Kven som helst", + "Members only (since the point in time of selecting this option)": "Berre medlemer (frå då denne innstillinga vert skrudd på)", + "Members only (since they were invited)": "Berre medlemmer (frå då dei vart bodne inn)", + "Members only (since they joined)": "Berre medlemer (frå då dei kom inn)", + "Permissions": "Tillatinger", + "Advanced": "Omfattande", + "This room's internal ID is": "Dette rommets innvendes ID er", + "Add a topic": "Legg eit emne til", + "Search…": "Søk…", + "This Room": "Dette Rommet", + "All Rooms": "Alle Rom", + "Cancel": "Bryt av", + "You don't currently have any stickerpacks enabled": "Du har for tida ikkje skrudd nokre klistremerkepakkar på", + "Add a stickerpack": "Legg ei klistremerkepakke til", + "Stickerpack": "Klistremerkepakke", + "Hide Stickers": "Gøym Klistremerkar", + "Show Stickers": "Vis Klistremerkar", + "Scroll to unread messages": "Blad til ulesne meldingar", + "Jump to first unread message.": "Hopp til den fyrste ulesne meldinga.", + "Close": "Lukk", + "Invalid alias format": "Ugangbar aliasform", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' er ikkje ei gangbar aliasform", + "Invalid address format": "Ugangbar adresseform", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' er ikkje ei gangbar adresseform", + "not set": "ikkje sett", + "Remote addresses for this room:": "Fjernadresser for dette rommet:", + "Addresses": "Adresser", + "The main address for this room is": "Hovudadressa for dette rommet er", + "Local addresses for this room:": "Lokaladresser for dette rommet:", + "This room has no local addresses": "Dette rommer har ingen lokaladresser", + "New address (e.g. #foo:%(localDomain)s)": "Ny adresse (t.d. #foo:%(localDomain)s)", + "Invalid community ID": "Ugangbar samfunnsID", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' er ikkje ein gangbar samfunnsID", + "Flair": "Særpreg", + "Showing flair for these communities:": "Viser særpreg for desse samfunna:", + "This room is not showing flair for any communities": "Dette rommet viser ikkje særpreg for nokre samfunn", + "New community ID (e.g. +foo:%(localDomain)s)": "Ny samfunnsID (t.d. +foo:%(localDomain)s)", + "You have enabled URL previews by default.": "Du har skrudd URL-førehandsvisingar på i utgangspunktet.", + "You have disabled URL previews by default.": "Du har skrudd URL-førehandsvisingar av i utgangspunktet.", + "URL previews are enabled by default for participants in this room.": "URL-førehandsvisingar er skrudd på i utgangspunktet for dette rommet.", + "URL previews are disabled by default for participants in this room.": "URL-førehandsvisingar er skrudd av i utgangspunktet for dette rommet.", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I krypterte rom, slik som denne, er URL-førehandsvisingar skrudd av i utgangspunktet for å forsikra at heimtenaren din (der førehandsvisinger lagast) ikkje kan samla informasjon om lenkjer som du ser i dette rommet.", + "URL Previews": "URL-førehandsvisingar", + "Sunday": "søndag", + "Monday": "måndag", + "Tuesday": "tysdag", + "Wednesday": "onsdag", + "Thursday": "torsdag", + "Friday": "fredag", + "Saturday": "laurdag", + "Today": "i dag", + "Yesterday": "i går", + "Error decrypting audio": "Noko gjekk gale med ljoddekrypteringa", + "Error decrypting attachment": "Noko gjekk gale med vedleggsdekrypteringa", + "Decrypt %(text)s": "Dekrypter %(text)s", + "Download %(text)s": "Last %(text)s ned", + "Invalid file%(extra)s": "Ugangbar fil%(extra)s", + "Error decrypting image": "Noko gjekk gale med biletedekrypteringa", + "Error decrypting video": "Noko gjekk gale med videodekrypteringa", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s endra avataren til %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s fjerna romavataren.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s endra romavataren til ", + "Copied!": "Kopiert!", + "Failed to copy": "Noko gjekk gale med kopieringa", + "Removed or unknown message type": "Fjerna eller ukjend meldingssort", + "Message removed by %(userId)s": "Meldinga vart fjerna av %(userId)s", + "Message removed": "Meldinga vart fjerna", + "Robot check is currently unavailable on desktop - please use a web browser": "Robotsjekk er førebels ikkje tilgjengeleg på skrivebordet - ver venleg og bruk ein nettlesar", + "This Home Server would like to make sure you are not a robot": "Denne heimtenaren ynskjer å forsikra seg om at du ikkje er ein robot", + "Sign in with CAS": "Logg inn med CAS", + "This allows you to use this app with an existing Matrix account on a different home server.": "Dette tillèt deg å bruka denne æppen med ein Matrixbrukar som allereie finst på ein annan heimtenar.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan i tillegg setja ein eigen identitetstenar, men dette hindrar som regel samhandling med brukarar som brukar epostadresse.", + "Dismiss": "Avvis", + "To continue, please enter your password.": "For å gå fram, ver venleg og skriv passordet ditt inn.", + "Password:": "Passord:", + "An email has been sent to %(emailAddress)s": "En epost vart send til %(emailAddress)s", + "Please check your email to continue registration.": "Ver venleg og sjekk eposten din for å gå vidare med påmeldinga.", + "A text message has been sent to %(msisdn)s": "Ei tekstmelding vart send til %(msisdn)s", + "Please enter the code it contains:": "Ver venleg og skriv koden den inneheld inn:", + "Code": "Kode", + "Start authentication": "Byrj godkjenning", + "powered by Matrix": "Matrixdriven", + "The email field must not be blank.": "Epostfeltet kan ikkje vera tomt.", + "The user name field must not be blank.": "Brukarnamnfeltet kan ikkje vera tomt.", + "The phone number field must not be blank.": "Telefonnummerfeltet kan ikkje vera tomt.", + "The password field must not be blank.": "Passordfeltet kan ikkje vera tomt.", + "Username on %(hs)s": "Brukarnamn på %(hs)s", + "User name": "Brukarnamn", + "Mobile phone number": "Mobiltelefonnummer", + "Forgot your password?": "Gløymt passordet ditt?", + "%(serverName)s Matrix ID": "%(serverName)s Matrix-ID", + "Sign in with": "Logg inn med", + "Email address": "Epostadresse", + "Sign in": "Logg inn", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Viss du ikkje seier kva epostadresse du vil bruka vil du ikkje kunna attendestille passordet ditt. Er du sikker?", + "Email address (optional)": "Epostadresse (valfritt)", + "You are registering with %(SelectedTeamName)s": "Du melder deg inn med %(SelectedTeamName)s", + "Mobile phone number (optional)": "Mobiltelefonnummer (valfritt)", + "Register": "Meld deg inn", + "Default server": "Vanleg tenar", + "Home server URL": "Heimtenar-URL", + "Identity server URL": "Identitetstenar-URL", + "What does this mean?": "Kva tyder dette?", + "Remove from community": "Fjern frå samfunnet", + "Disinvite this user from community?": "Fjern denne brukaren si innbyding til samfunnet?", + "Remove this user from community?": "Fjern denne brukaren frå samfunnet?", + "Failed to withdraw invitation": "Fekk ikkje til å taka innbydinga att", + "Failed to remove user from community": "Fekk ikkje til å fjerna brukaren frå samfunnet", + "Flair will appear if enabled in room settings": "Særpreg dukkar opp viss det er skrudd på i rominnstillingar", + "Flair will not appear": "Særpreg dukkar ikkje opp", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Er du sikker på at du vil fjerna '%(roomName)s' frå %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Å fjerna eit rom frå samfunnet fjernar det frå samfunnssida òg.", + "Remove": "Fjern", + "Failed to remove room from community": "Fekk ikkje til å fjerna rommet frå samfunnet", + "Failed to remove '%(roomName)s' from %(groupId)s": "Fekk ikkje til å fjerna '%(roomName)s' frå %(groupId)s", + "Something went wrong!": "Noko gjekk gale!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Kunne ikkje oppdatera synligheita til '%(roomName)s' i %(groupId)s.", + "Visibility in Room List": "Synligheit i Romlista", + "Visible to everyone": "Synleg for alle", + "Only visible to community members": "Berre synleg for samfunnsmedlemer", + "Something went wrong when trying to get your communities.": "Noko gjekk gale med framhentinga av samfunna dine.", + "Display your community flair in rooms configured to show it.": "Vis samfunnssærpreget ditt i rom som er stilt inn til å visa det.", + "You're not currently a member of any communities.": "Du er for augeblunket ikkje medlem i nokre samfunn.", + "Yes, I want to help!": "Ja, eg vil vera til nytte!", + "You are not receiving desktop notifications": "Du fær ikkje skrivebordsvarsel", + "Enable them now": "Skru dei på no", + "What's New": "Kva er nytt", + "Update": "Oppdatering", + "What's new?": "Kva er nytt?", + "A new version of Riot is available.": "Ei ny utgåve av Riot er tilgjengeleg.", + "To return to your account in future you need to set a password": "For å gå tilbake til brukaren din i framtida må du setja eit passord", + "Set Password": "Set Passord", + "Error encountered (%(errorDetail)s).": "Noko gjekk gale (%(errorDetail)s).", + "Checking for an update...": "Ser etter oppdateringar...", + "No update available.": "Inga oppdatering er tilgjengeleg.", + "Downloading update...": "Lastar oppdatering ned...", + "Warning": "Åtvaring", + "Unknown Address": "Ukjend Adresse", + "NOTE: Apps are not end-to-end encrypted": "MERK DEG: Æppar er ikkje ende-til-ende-krypterte", + "Warning: This widget might use cookies.": "Åtvaring: Denne widgeten brukar kanskje datakaker.", + "Do you want to load widget from URL:": "Vil du lasta widgeten frå URL:", + "Allow": "Tillat", + "Delete Widget": "Slett Widgeten", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Å sletta ein widget fjernar den for alle brukarane i rommet. Er du sikker på at du vil sletta denne widgeten?", + "Delete widget": "Slett widgeten", + "Failed to remove widget": "Fekk ikkje til å fjerna widgeten", + "An error ocurred whilst trying to remove the widget from the room": "Noko gjekk gale med fjerninga av widgeten frå rommet", + "Revoke widget access": "Tak widgeten sin tilgang att", + "Reload widget": "Last inn widget på nytt", + "Picture": "Bilete", + "Edit": "Gjer om", + "Create new room": "Lag nytt rom", + "Unblacklist": "Fjern frå svartelista", + "Blacklist": "Legg til i svartelista", + "No results": "Ingen resultat", + "Delete": "Slett", + "Communities": "Samfunn", + "Home": "Heim", + "You cannot delete this image. (%(code)s)": "Du kan ikkje sletta dette biletet. (%(code)s)", + "Uploaded on %(date)s by %(user)s": "Lasta opp %(date)s av %(user)s", + "Download this file": "Last denne fila ned", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s har kome inn %(count)s gonger", + "one": "%(severalUsers)s kom inn" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s har kome inn %(count)s gonger", + "one": "%(oneUser)s kom inn" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s har fare %(count)s gonger", + "one": "%(severalUsers)s fór" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s har fare %(count)s gonger", + "one": "%(oneUser)s fór" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s har kome inn og fare att %(count)s gonger", + "one": "%(severalUsers)s kom inn og fór" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s har kome inn og fare att %(count)s gonger", + "one": "%(oneUser)s kom inn og fór" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s har fare og kome inn att %(count)s gonger", + "one": "%(severalUsers)s fór og kom inn att" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s har fare og kome inn att %(count)s gonger", + "one": "%(oneUser)s fór og kom inn att" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s sa nei til innbydingane %(count)s gonger", + "one": "%(severalUsers)s sa nei til innbydingane" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s sa nei til innbydinga %(count)s gonger", + "one": "%(oneUser)s sa nei til innbydinga" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s fekk innbydingane sine attekne %(count)s gonger", + "one": "%(severalUsers)s fekk innbydinga si attteke" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s fekk innbydinga si atteke %(count)s gonger", + "one": "%(oneUser)s fekk innbydinga si atteke" + }, + "were invited %(count)s times": { + "other": "vart boden inn %(count)s gonger", + "one": "vart boden inn" + }, + "was invited %(count)s times": { + "other": "vart boden inn %(count)s gonger", + "one": "vart boden inn" + }, + "were banned %(count)s times": { + "other": "har vore stengd ute %(count)s gonger", + "one": "vart stengd ute" + }, + "was banned %(count)s times": { + "other": "har vore stengd ute %(count)s gonger", + "one": "vart stengd ute" + }, + "were unbanned %(count)s times": { + "other": "har vorta sloppe inn att %(count)s gonger", + "one": "vart sloppe inn att" + }, + "was unbanned %(count)s times": { + "other": "har vorte sloppe inn att %(count)s gonger", + "one": "vart sloppe inn att" + }, + "were kicked %(count)s times": { + "other": "har vorte sparka ut %(count)s gonger", + "one": "vart sparka ut" + }, + "was kicked %(count)s times": { + "other": "har vorte sparka ut %(count)s gonger", + "one": "vart sparka ut" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s har endra namna sine %(count)s gonger", + "one": "%(severalUsers)s endra namna sine" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s har endra namnet sitt %(count)s gonger", + "one": "%(oneUser)s endra namnet sitt" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s har endra avatarane sine %(count)s gonger", + "one": "%(severalUsers)s endra avatarane sine" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s har endra avataren sin %(count)s gonger", + "one": "%(oneUser)s endra avataren sin" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s og %(count)s til", + "one": "%(items)s og ein til" + }, + "%(items)s and %(lastItem)s": "%(items)s og %(lastItem)s", + "collapse": "Slå saman", + "expand": "Utvid", + "In reply to ": "Som svar til ", + "Room directory": "Romutval", + "Start chat": "Byrj samtale", + "And %(count)s more...": { + "other": "Og %(count)s til..." + }, + "ex. @bob:example.com": "t.d. @ivar:eksempel.no", + "Add User": "Legg Brukar til", + "Matrix ID": "Matrix-ID", + "Matrix Room ID": "Matrixrom-ID", + "email address": "epostadresse", + "You have entered an invalid address.": "Du har skrive ei ugangbar adresse inn.", + "Try using one of the following valid address types: %(validTypesList)s.": "Prøv å bruka ein av dei fylgjande gangbare adressesortane: %(validTypesList)s.", + "Preparing to send logs": "Førebur loggsending", + "Logs sent": "Loggar sende", + "Thank you!": "Takk skal du ha!", + "Failed to send logs: ": "Fekk ikkje til å senda loggar: ", + "Submit debug logs": "Send debøgg-loggar inn", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-bøggar fylgjast på GitHub: lag eit GitHub-issue.", + "GitHub issue link:": "lenkje til GitHub-issue:", + "Notes:": "Saker å merka seg:", + "Send logs": "Send loggar inn", + "Unavailable": "Utilgjengeleg", + "Changelog": "Endringslogg", + "Create a new chat or reuse an existing one": "Lag ei ny samtale eller bruk ei gamal opp att", + "Start new chat": "Byrj ny samtale", + "You already have existing direct chats with this user:": "Du har allereie pågåande direktesamtaler med denne brukaren:", + "Start chatting": "Byrj å prata", + "Click on the button below to start chatting!": "Klikk på knappen under for å byrja å prata!", + "Start Chatting": "Byrj å Prata", + "Something went wrong whilst creating your community": "Noko gjekk gale med laginga av samfunnet ditt", + "Create Community": "Lag Samfunn", + "Community Name": "Samfunnsnamn", + "Example": "Døme", + "Community ID": "Samfunns-ID", + "example": "døme", + "Create": "Lag", + "Create Room": "Lag eit Rom", + "Room name (optional)": "Romnamn (valfritt)", + "Advanced options": "Omfattande innstillingar", + "World readable": "Kan lesast av alle", + "not specified": "Ikkje oppgjeven", + "Minimize apps": "Legg æppar ned", + "Confirm Removal": "Godkjenn Fjerning", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Er du sikker på at du vil fjerna (sletta) denne hendingen? Merk deg at vis du slettar eit romnamn eller ei emneendring kan det gjera om på endringa.", + "Community IDs cannot be empty.": "Samfunns-IDfeltet kan ikkje vera tomt.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Samfunns-IDar kan berre innehalda teikna a-z, 0-9, eller '=_-./'", + "This setting cannot be changed later!": "Denne innstillinga kan ikkje gjerast om på seinare!", + "Unknown error": "Noko ukjend gjekk galt", + "Incorrect password": "Urett passord", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Dette gjer at brukaren din vert ubrukeleg til evig tid. Du kjem ikkje til å kunna logga inn, og ingen andre kjem til å kunna melde seg inn med den gamle brukar-IDen din. Brukaren din forlét òg alle rom han er i, og brukardetaljane dine vil verta fjerna frå identitetstenaren. Denne handlinga kan ikkje gjerast om.", + "Deactivate Account": "Avliv Brukaren", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Å avliva brukaren din gjer i utgangspunktet ikkje at vi gløymer meldingane du har send. Viss du vil at vi skal gløyma meldingane dine, ver venleg og kryss av i firkanten under.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meldingssynlegheit på Matrix liknar på epost. At vi gløymer meldingane dine tyder at meldingar du har send ikkje vil verta delt med nye, ikkje-innmeldte brukarar, men brukare som er meldt på som allereie har tilgang til desse meldingane vil fortsatt kunne sjå kopien deira.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Ver venleg og gløym alle meldingane eg har send når brukaren min vert avliven (Åtvaring: dette gjer at framtidige brukarar ikkje fær eit fullstendig oversyn av samtalene)", + "To continue, please enter your password:": "For å gå fram, ver venleg og skriv passordet ditt inn:", + "password": "passord", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "For å godkjenna at denne eininga er til å stola på, ver venleg og snakk med eiaren på ei anna måte (t.d. ansikt til ansikt eller på telefon) og spør dei om nykelen dei ser i Brukarinnstillingane for denne eininga samsvarar med nykelen under:", + "Device name": "Einingsnamn", + "Device key": "Einingsnykel", + "In future this verification process will be more sophisticated.": "I framtida kjem denne godkjenningsprosessen til å vera betre utvikla.", + "Verify device": "Godkjenn eining", + "I verify that the keys match": "Eg stadfestar at nyklane samsvarar", + "Back": "Attende", + "Event sent!": "Hending send!", + "Event Type": "Hendingsort", + "Event Content": "Hendingsinnhald", + "Send Account Data": "Send Brukardata", + "Explore Room State": "Undersøk Romtilstanden", + "Explore Account Data": "Undersøk Brukardata", + "Toolbox": "Verktøykasse", + "Developer Tools": "Utviklarverktøy", + "An error has occurred.": "Noko gjekk gale.", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du la til den nye eininga '%(displayName)s', som spør om krypteringsnyklar.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Den ikkje-godkjende eininga di '%(displayName)s' spør om krypteringsnyklar.", + "Start verification": "Byrj godkjenning", + "Share without verifying": "Del utan å godkjenna", + "Ignore request": "Oversjå førespurnad", + "Loading device info...": "Lastar einingsinfo inn...", + "Encryption key request": "Krypteringsnykel-førespurnad", + "Sign out": "Logg ut", + "Log out and remove encryption keys?": "Logg ut og fjern krypteringsnyklar?", + "Clear Storage and Sign Out": "Tøm Lager og Logg Ut", + "Send Logs": "Send Loggar", + "Refresh": "Hent fram på nytt", + "Unable to restore session": "Kunne ikkje henta øykta fram att", + "We encountered an error trying to restore your previous session.": "Noko gjekk gale med framhentinga av den førre øykta di.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Viss du har bruka ei nyare utgåve av Riot før, kan det henda at øykta di ikkje passar inn i denne utgåva. Lukk dette vindauget og gå attende til den nyare utgåva.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Det kan henda at å tømma nettlesarlageret rettar opp i det, men det loggar deg ut og kan gjera den krypterte pratehistoria uleseleg.", + "Invalid Email Address": "Ugangbar Epostadresse", + "This doesn't appear to be a valid email address": "Det ser ikkje ut til at epostadressa er gangbar", + "Verification Pending": "Ventar på Godkjenning", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Ver venleg og sjekk eposten din og klikk på lenkja du har fått. Når det er gjort, klikk gå fram.", + "Unable to add email address": "Klarte ikkje å leggja epostadressa til", + "Unable to verify email address.": "Klarte ikkje å stadfesta epostadressa.", + "This will allow you to reset your password and receive notifications.": "Dette tillèt deg å attendestilla passordet ditt og å få varsel.", + "Skip": "Hopp over", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Brukarnamn kan berre innehalda bokstavar, tal, prikkar, bindestrek og understrek.", + "Username not available": "Brukarnamnet er ikkje tilgjengeleg", + "Username invalid: %(errMessage)s": "Brukarnamnet er ugangbart: %(errMessage)s", + "An error occurred: %(error_string)s": "Noko gjekk gale: %(error_string)s", + "Username available": "Brukarnamnet er tilgjengeleg", + "To get started, please pick a username!": "For å koma i gang, ver venleg og vel eit brukarnman!", + "This will be your account name on the homeserver, or you can pick a different server.": "Dette vert brukarnamnet ditt på heimtenaren, elles so kan du velja ein annan tenar.", + "If you already have a Matrix account you can log in instead.": "Viss du har ein Matrixbrukar allereie kan du logga på i staden.", + "You have successfully set a password!": "Du sette passordet ditt!", + "You have successfully set a password and an email address!": "Du sette passordet og epostadressa di!", + "You can now return to your account after signing out, and sign in on other devices.": "Du kan no gå attende til brukaren din etter å ha logga ut, og logga inn på andre einingar.", + "Remember, you can always set an email address in user settings if you change your mind.": "Hugs at du alltid kan setja ei epostadresse i brukarinnstillingar viss du skiftar meining.", + "Failed to change password. Is your password correct?": "Fekk ikkje til å skifta passord. Er passordet rett?", + "(HTTP status %(httpStatus)s)": "(HTTP-tilstand %(httpStatus)s)", + "Please set a password!": "Ver venleg og set eit passord!", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Dette tillèt deg å fara attende til brukaren din etter å ha logga ut, og å logga inn på andre einingar.", + "Share Room": "Del Rom", + "Link to most recent message": "Lenk til den nyaste meldinga", + "Share User": "Del Brukar", + "Share Community": "Del Samfunn", + "Share Room Message": "Del Rommelding", + "Link to selected message": "Lenk til den valde meldinga", + "COPY": "KOPIER", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Du set for augeblunket ikkje-godkjende einingar på svartelista; for å senda meldingar til desse einingane må du godkjenna dei.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Vi tilrår deg å gå gjennom godkjenninga for kvar av einingane for å vera sikker på at dei tilhøyrer sine rettmessige eigarar, men du kan senda meldinga på nytt utan å godkjenna viss du vil.", + "Room contains unknown devices": "Rommet inneheld ukjende einingar", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" inneheld einingar som du ikkje har sett før.", + "Unknown devices": "Ukjende einingar", + "Private Chat": "Lukka Samtale", + "Public Chat": "Offentleg Samtale", + "Alias (optional)": "Alias (valfritt)", + "Reject invitation": "Sei nei til innbyding", + "Are you sure you want to reject the invitation?": "Er du sikker på at du vil seia nei til innbydinga?", + "Unable to reject invite": "Klarte ikkje å seia nei til innbydinga", + "Reject": "Sei nei", + "You cannot delete this message. (%(code)s)": "Du kan ikkje sletta meldinga. (%(code)s)", + "Resend": "Send på nytt", + "Cancel Sending": "Bryt Sending av", + "Forward Message": "Vidaresend Melding", + "Reply": "Svar", + "Pin Message": "Fest Meldinga", + "View Source": "Sjå Kjelda", + "View Decrypted Source": "Sjå den Dekrypterte Kjelda", + "Unhide Preview": "Slutt å Gøyma Førehandsvising", + "Share Message": "Del Melding", + "Quote": "Sitat", + "Source URL": "Kjelde-URL", + "Collapse Reply Thread": "Slå Svartråden saman", + "All messages (noisy)": "Alle meldingar (bråket)", + "All messages": "Alle meldingar", + "Mentions only": "Berre når eg vert nemnd", + "Leave": "Far frå", + "Forget": "Gløym", + "Low Priority": "Lågrett", + "Direct Chat": "Direktesamtale", + "View Community": "Sjå Samfunn", + "Sorry, your browser is not able to run Riot.": "Orsak, nettlesaren din klarer ikkje å køyra Riot.", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot brukar mange omfattande nettlesarfunksjonar, og nokre av dei er ikkje tilgjengelege eller i utprøving i nettlesaren din.", + "Please install Chrome or Firefox for the best experience.": "Ver venleg og legg Chrome eller Firefox inn på datamaskina for den beste opplevinga.", + "Safari and Opera work too.": "Safari og Opera verkar òg.", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med denne nettlesaren, er det mogleg at synet og kjensla av applikasjonen er fullstendig gale, og nokre eller alle funksjonar verkar kanskje ikkje. Viss du vil prøva likevel kan du gå fram, men då du må sjølv handtera alle vanskar du møter på!", + "I understand the risks and wish to continue": "Eg forstår farane og vil gå fram", + "Name": "Namn", + "Topic": "Emne", + "Make this room private": "Gjer dette rommet privat", + "Share message history with new users": "Del meldingshistoria med nye brukarar", + "Encrypt room": "Krypter rommet", + "You must register to use this functionality": "Du må melda deg inn for å bruka denne funksjonen", + "You must join the room to see its files": "Du må fare inn i rommet for å sjå filene dets", + "There are no visible files in this room": "Det er ingen synlege filer i dette rommet", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML for samfunnssida di

\n

\n Bruk den Lange Skildringa for å ynskja nye medlemer velkomen, eller gje ut viktige lenkjer\n

\n

\n Du kan til og med bruka 'img'-merkelappar!\n

\n", + "Add rooms to the community summary": "Legg rom til i samfunnsoppsamanfattinga", + "Which rooms would you like to add to this summary?": "Kva rom ynskjer du å leggja til i samanfattinga?", + "Add to summary": "Legg til i samanfattinga", + "Failed to add the following rooms to the summary of %(groupId)s:": "Fekk ikkje til å leggja dei fylgjande romma til i samanfattinga av %(groupId)s:", + "Add a Room": "Legg eit Rom til", + "Failed to remove the room from the summary of %(groupId)s": "Fekk ikkje til å fjerna rommet frå samanfattinga av %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Rommet '%(roomName)s' lét seg ikkje fjerna frå samanfattinga.", + "Add users to the community summary": "Legg brukarar til i samfunnsamanfattinga", + "Who would you like to add to this summary?": "Kven vil du leggja til i samanfattinga?", + "Failed to add the following users to the summary of %(groupId)s:": "Fekk ikkje til å leggja fylgjande brukarar til i samanfattinga av %(groupId)s:", + "Add a User": "Legg ein Brukar til", + "Failed to remove a user from the summary of %(groupId)s": "Fekk ikkje til å fjerna brukaren frå samanfattinga av %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Brukaren '%(displayName)s' lét seg ikkje fjerna frå samanfattinga.", + "Failed to upload image": "Fekk ikkje til å lasta biletet opp", + "Failed to update community": "Fekk ikkje til å oppdatera samfunnet", + "Unable to accept invite": "Fekk ikkje til å seia ja til innbydinga", + "Unable to join community": "Fekk ikkje til å fara inn i samfunnet", + "Leave Community": "Far frå Samfunnet", + "Leave %(groupName)s?": "Far frå %(groupName)s?", + "Unable to leave community": "Fekk ikkje til å fara frå samfunnet", + "Community Settings": "Samfunninnstillingar", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Endringar gjort på samfunnsnamnet og samfunnsavataren vert kanskje ikkje synleg forandre før opp til 30 minutt har gått.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Desse romma vert viste for samfunnsmedlemer på samfunnsida. Samfunnsmedlemer kan fara inn i romma ved å klikka på dei.", + "Add rooms to this community": "Legg rom til i samfunnet", + "Featured Rooms:": "Utvalde Rom:", + "Featured Users:": "Utvalde Brukarar:", + "%(inviter)s has invited you to join this community": "%(inviter)s baud deg inn til dette samfunnet", + "Join this community": "Far inn i samfunnet", + "Leave this community": "Far frå samfunnet", + "You are an administrator of this community": "Du er administrator i dette samfunnet", + "You are a member of this community": "Du er eit medlem av dette samfunnet", + "Who can join this community?": "Kven kan verta med i samfunnet?", + "Everyone": "Alle", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Samfunnet ditt har ikkje ei Lang Skilrding (ei HTML-side for å visa til samfunnsmedlem.)
Klikk her for å opna innstillingar og gje det ei!", + "Long Description (HTML)": "Lang Skildring (HTML)", + "Description": "Skildring", + "Community %(groupId)s not found": "Fann ikkje samfunnet %(groupId)s", + "This Home server does not support communities": "Denne heimtenaren støttar ikkje støttesamfunn", + "Failed to load %(groupId)s": "Fekk ikkje til å lasta %(groupId)s", + "Couldn't load home page": "Kunne ikkje lasta heimesida", + "Login": "Innlogging", + "Failed to reject invitation": "Fekk ikkje til å seia nei til innbyding", + "This room is not public. You will not be able to rejoin without an invite.": "Dette rommet er ikkje offentleg. Du kjem ikkje til å kunna koma inn att utan ei innbyding.", + "Are you sure you want to leave the room '%(roomName)s'?": "Er du sikker på at du vil fara frå rommet '%(roomName)s'?", + "Failed to leave room": "Fekk ikkje til å fara frå rommet", + "Can't leave Server Notices room": "Kan ikkje fara frå Tenarvarsel-rommet", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Dette rommet er for viktige meldingar frå Heimtenaren, so du kan ikkje fara frå det.", + "Signed Out": "Logga Ut", + "For security, this session has been signed out. Please sign in again.": "Av sikkerheitsgrunnar har denne øykta vorte logga ut. Ver venleg og logg inn att.", + "Terms and Conditions": "Vilkår og Føresetnader", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "For å framleis bruka %(homeserverDomain)s sin heimtenar må du sjå over og seia deg einig i våre Vilkår og Føresetnader.", + "Review terms and conditions": "Sjå over Vilkår og Føresetnader", + "Old cryptography data detected": "Gamal kryptografidata vart oppdagen", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data frå ei eldre utgåve av Riot vart oppdagen. I den eldre utgåva hadde dette gjort at ende-til-ende-kryptografi ikkje verkar som det skal. Ende-til-ende-krypterte meldingar som vert utveksla nyleg med den gamle utgåva er det kanskje ikkje mogeleg å dekryptera i denne utgåva. Dette fører kanskje òg til at meldingar som vart utveksla med denne utgåva ikkje verkar. Viss du opplever vansker, logg ut og inn att. For å spara på meldingshistoria, hent nyklane dine ut og inn at.", + "Logout": "Loggar ut", + "Your Communities": "Dine Samfunn", + "Error whilst fetching joined communities": "Noko gjekk gale med innhentinga av samfunna du er i", + "Create a new community": "Lag eit nytt samfunn", + "You have no visible notifications": "Du har ingen synlege varsel", + "Members": "Medlemer", + "%(count)s Members": { + "other": "%(count)s Medlemer", + "one": "%(count)s Medlem" + }, + "Invite to this room": "Byd inn til rommet", + "Files": "Filer", + "Notifications": "Varsel", + "Invite to this community": "Byd inn til samfunnet", + "Failed to get protocol list from Home Server": "Fekk ikkje til å henta protokollista frå heimtenaren", + "The Home Server may be too old to support third party networks": "Heimtenaren er kanskje for gamal til å støtta tredjepartinettverk", + "Failed to get public room list": "Fekk ikkje til å henta den offentlege romlista", + "The server may be unavailable or overloaded": "Tenaren er kanskje utilgjengeleg eller overlasta", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Slett rommaliaset %(alias)s og fjern %(name)s frå utvalet?", + "Remove %(name)s from the directory?": "Fjern %(name)s frå utvalet?", + "Remove from Directory": "Fjern frå Utvalet", + "remove %(name)s from the directory.": "fjern %(name)s frå utvalet.", + "delete the alias.": "slett aliaset.", + "Unable to join network": "Klarte ikkje å verta med i nettverket", + "Riot does not know how to join a room on this network": "Riot veit ikkje korleis ein fer inn i eit rom på dette nettverket", + "Room not found": "Fann ikkje rommet", + "Couldn't find a matching Matrix room": "Kunne ikkje finna eit samsvarande Matrixrom", + "Fetching third party location failed": "Noko gjekk gale med hentinga tredjepartiplasseringa", + "Directory": "Utval", + "Search for a room": "Søk etter eit rom", + "#example": "#døme", + "Scroll to bottom of page": "Blad til botnen", + "Message not sent due to unknown devices being present": "Meldinga vart ikkje send fordi ukjende einingar er til stades", + "Show devices, send anyway or cancel.": "Vis einingar, Send likevel eller Bryt av.", + "You can't send any messages until you review and agree to our terms and conditions.": "Du kan ikkje senda meldingar før du ser over og seier deg einig i våre Vilkår og Føresetnader.", + "%(count)s of your messages have not been sent.": { + "other": "Nokre av meldingane dine vart ikkje sende.", + "one": "Meldinga di vart ikkje send." + }, + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Send alle på nytt eller avbryt alle. Du kan ogso velja enkelte meldingar til sending på nytt eller avbryting.", + "one": "Send melding på nytt eller bryt av." + }, + "Connectivity to the server has been lost.": "Tilkoplinga til tenaren vart tapt.", + "Sent messages will be stored until your connection has returned.": "Sende meldingar lagrast ikkje før tilkoplinga di er attende.", + "%(count)s new messages": { + "other": "%(count)s nye meldingar", + "one": "%(count)s ny melding" + }, + "Active call": "Pågåande samtale", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Det er ingen andre her! Vil du byda andre inn eller enda åtvaringa om det tomme rommet??", + "more": "meir", + "You seem to be uploading files, are you sure you want to quit?": "Det ser ut til at du lastar filer opp, er du sikker på at du vil slutta?", + "You seem to be in a call, are you sure you want to quit?": "Det ser ut til at du er i ei samtale, er du sikker på at du vil slutta?", + "Failed to upload file": "Fekk ikkje til å lasta fila opp", + "Server may be unavailable, overloaded, or the file too big": "Tenaren er kanskje utilgjengeleg, overlasta, elles so er fila for stor", + "Search failed": "Søket gjekk gale", + "No more results": "Ingen fleire resultat", + "Unknown room %(roomId)s": "Ukjend rom %(roomId)s", + "Room": "Rom", + "Failed to save settings": "Fekk ikkje til å lagra innstillingar", + "Failed to reject invite": "Fekk ikkje til å seia nei til innbydinga", + "Fill screen": "Fyll skjermen", + "Click to unmute video": "Klikk for å avstilna videoen", + "Click to mute video": "Klikk for å stilna videoen", + "Click to unmute audio": "Klikk for å avstilna ljoden", + "Click to mute audio": "Klikk for å stilna ljoden", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men du har ikkje lov til å sjå den sistnemnde meldinga.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Freista å lasta eit gjeve punkt i rommet si tidslinje, men klarte ikkje å finna det.", + "Failed to load timeline position": "Fekk ikkje til å lasta tidslinjestillinga", + "Uploading %(filename)s and %(count)s others": { + "other": "Lastar %(filename)s og %(count)s til opp", + "zero": "Lastar %(filename)s opp", + "one": "Lastar %(filename)s og %(count)s til opp" + }, + "Light theme": "Ljost preg", + "Dark theme": "Dimt preg", + "Status.im theme": "Status.im-preg", + "Can't load user settings": "Kan ikkje lasta brukarinnstillingar", + "Server may be unavailable or overloaded": "Tenaren er kanskje utilgjengeleg eller overlasta", + "Success": "Det gjekk", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Passordet ditt vert endra. Du får ikkje push-varsel på andre einingar før du loggar inn att på dei", + "Remove Contact Information?": "Fjern Kontaktinfo?", + "Remove %(threePid)s?": "Fjern %(threePid)s?", + "Unable to remove contact information": "Klarte ikkje å fjerna kontaktinfo", + "Refer a friend to Riot:": "Vis ein ven til Riot:", + "Interface Language": "Grensesnitts-mål", + "User Interface": "Brukargrensesnitt", + "": "", + "Import E2E room keys": "Hent E2E-romnyklar inn", + "Cryptography": "Kryptografi", + "Device ID:": "Einings-ID:", + "Device key:": "Einingsnykel:", + "Ignored Users": "Oversedde Brukarar", + "Debug Logs Submission": "Innsending av Debøgg-loggar", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Viss du har sendt inn ein bøgg gjennom GitHub, kan debøgg-loggar hjelpa oss med å finna problemet. Debøgg-loggar inneheld data om æpp-bruk, b.a. Brukarnamnet ditt, IDane eller aliasa på romma eller gruppene du har vitja og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot samlar anonym statistikk inn slik at vi kan forbetre æppen.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Personvern er viktig for oss, so vi samlar ikkje på personleg eller attkjenneleg data for statistikken vår.", + "Learn more about how we use analytics.": "Finn ut meir om korleis vi brukar statistikk.", + "Labs": "Labar", + "These are experimental features that may break in unexpected ways": "Desse funksjonane er i utprøving og uventa vanskar kan dukka opp", + "Use with caution": "Bruk med omhug", + "Deactivate my account": "Avliv brukaren min", + "Updates": "Oppdateringar", + "Check for update": "Sjå etter oppdateringar", + "Reject all %(invitedRooms)s invites": "Sei nei til alle innbydingar frå %(invitedRooms)s", + "Desktop specific": "Berre for skrivebord", + "Start automatically after system login": "Byrj av seg sjølv etter systeminnlogging", + "No media permissions": "Ingen mediatilgang", + "You may need to manually permit Riot to access your microphone/webcam": "Det kan henda at du må gje Riot tilgang til mikrofonen/nettkameraet for hand", + "Missing Media Permissions, click here to request.": "Vantande Mediatilgang, klikk her for å beda om det.", + "No Audio Outputs detected": "Ingen ljodavspelingseiningar funne", + "No Microphones detected": "Ingen opptakseiningar funne", + "No Webcams detected": "Ingen Nettkamera funne", + "Default Device": "Eininga som brukast i utgangspunktet", + "Audio Output": "Ljodavspeling", + "Microphone": "Ljodopptaking", + "Camera": "Kamera", + "VoIP": "VoIP", + "Email": "Epost", + "Add email address": "Legg epostadresse til", + "Display name": "Visingsnamn", + "Account": "Brukar", + "To return to your account in future you need to set a password": "For å kunna koma attende til brukaren din i framtida må du setja eit passord", + "Logged in as:": "Logga inn som:", + "click to reveal": "klikk for å visa", + "Homeserver is": "Heimtenaren er", + "Identity Server is": "Identitetstenaren er", + "matrix-react-sdk version:": "matrix-react-sdk-utgåve:", + "riot-web version:": "riot-web-utgåve:", + "olm version:": "olm-utgåve:", + "Failed to send email": "Fekk ikkje til å senda eposten", + "The email address linked to your account must be entered.": "Du må skriva epostadressa som er tilknytta brukaren din inn.", + "A new password must be entered.": "Du må skriva eit nytt passord inn.", + "New passwords must match each other.": "Dei nye passorda må vera like.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ein epost vart send til %(emailAddress)s. Når du har far fylgd lenkja i den, klikk under.", + "I have verified my email address": "Eg har godkjend epostadressa mi", + "Your password has been reset": "Passordet ditt vart attendesett", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du vart logga av alle einingar og får ikkje lenger pushvarsel. For å skru varsel på att, logg inn igjen på kvar eining", + "Return to login screen": "Gå attende til innlogging", + "To reset your password, enter the email address linked to your account": "For å attendestilla passordet ditt, skriv epostadressa som er lenkja til brukaren din inn", + "New password": "Nytt passord", + "Confirm your new password": "Stadfest det nye passordet ditt", + "Send Reset Email": "Send attendestillingsepost", + "Create an account": "Lag ein brukar", + "This Home Server does not support login using email address.": "Denne Heimtenaren støttar ikkje innlogging med epost.", + "Please contact your service administrator to continue using this service.": "Ver venleg og kontakt din tenesteadministrator for å halda fram med å bruka tenesten.", + "Incorrect username and/or password.": "Urett brukarnamn og/eller passord.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Merk deg at du loggar inn på %(hs)s-tenaren, ikkje matrix.org.", + "Guest access is disabled on this Home Server.": "Gjestetilgang er skrudd av på denne Heimtenaren.", + "The phone number entered looks invalid": "Det innskrivne telefonnummeret ser ugangbart ut", + "Error: Problem communicating with the given homeserver.": "Noko gjekk gale: fekk ikkje samband med den gjevne heimtenaren.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Kan ikkje kopla til heimtenaren gjennom HTTP når ein HTTPS-URL er i nettlesarsøkjafeltet ditt. Bruk anten HTTPS eller skru utrygge skript på.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Kan ikkje kopla til heimtenaren - ver venleg og sjekk tilkoplinga di, og sjå til at heimtenaren din sitt CCL-sertifikat er stolt på og at ein nettlesarutviding ikkje hindrar førespurnader.", + "Try the app first": "Prøv æppen fyrst", + "Sign in to get started": "Logg inn for å koma i gang", + "Failed to fetch avatar URL": "Klarte ikkje å henta avatar-URLen", + "Set a display name:": "Set eit visingsnamn:", + "Upload an avatar:": "Last ein avatar opp:", + "This server does not support authentication with a phone number.": "Denne tenaren støttar ikkje stadfesting gjennom telefonnummer.", + "Missing password.": "Vantande passord.", + "Passwords don't match.": "Passorda er ikkje like.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Passordet er for kort (i det minste %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Dette ser ikkje ut som ei gangbar epostadresse.", + "This doesn't look like a valid phone number.": "Dette ser ikkje ut som eit gangbart telefonnummer.", + "You need to enter a user name.": "Du må skriva eit brukarnamn inn.", + "An unknown error occurred.": "Noko ukjend gjekk gale.", + "I already have an account": "Eg har ein brukar allereie", + "Commands": "Påbod", + "Results from DuckDuckGo": "Resultat frå DuckDuckGo", + "Emoji": "Emoji", + "Notify the whole room": "Varsl heile rommet", + "Room Notification": "Romvarsel", + "Users": "Brukarar", + "unknown device": "ukjend eining", + "NOT verified": "IKKJE godkjend", + "verified": "godkjend", + "Verification": "Godkjenning", + "Ed25519 fingerprint": "Ed25519-fingeravtrykk", + "User ID": "Brukar-ID", + "Curve25519 identity key": "Curve25519-identitetsnykel", + "none": "ingen", + "Algorithm": "Algoritme", + "unencrypted": "ikkje-kryptert", + "Decryption error": "Noko gjekk gale med dekrypteringa", + "Session ID": "Økt-ID", + "End-to-end encryption information": "Ende-til-ende-krypteringsinfo", + "Event information": "Hendingsinfo", + "Sender device information": "Info om avsendareininga", + "Passphrases must match": "Passetningane må vera like", + "Passphrase must not be empty": "Passetningsfeltet kan ikkje vera tomt", + "Enter passphrase": "Skriv passetning inn", + "Confirm passphrase": "Stadfest passetning", + "You must specify an event type!": "Du må oppgje ein handlingssort!", + "Call Timeout": "Tidsavbrot i Samtala", + "Enable automatic language detection for syntax highlighting": "Skru automatisk måloppdaging på for syntax-understreking", + "Show empty room list headings": "Vis overskrift på tomme romlister", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å endra passordet ditt attendestiller førebelst alle ende-til-ende-krypteringsnyklar på alle einingar, slik at kryptert pratehistorie vert uleseleg, med mindre du fyrst hentar romnyklane dine ut og hentar dei inn att etterpå. I framtida vil denne prosessen vera betre.", + "Export E2E room keys": "Hent E2E-romnyklar ut", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Det kan henda at du stilte dei inn på ein annan klient enn Riot. Du kan ikkje stilla på dei i Riot men dei gjeld framleis", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nykeldelingsførespurnader vert sende til dei andre einingane dine av seg sjølv. Viss du sa nei til eller avviste førespurnadene på dei andre einingane, klikk her for å beda om nyklane for denne øykta på nytt.", + "Jump to read receipt": "Hopp til lest-lappen", + "Filter room members": "Filtrer rommedlemer", + "inline-code": "kode-i-tekst", + "block-quote": "blokk-sitat", + "Show panel": "Vis panel", + "Drop here to tag direct chat": "Slepp her for å merka ei direktesamtale", + "Drop here to tag %(section)s": "Slepp her for å merka %(section)s", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Når nokon legg ein URL med i meldinga si, kan ei URL-førehandsvising visast for å gje meir info om lenkja slik som tittelen, skildringa, og eit bilete frå nettsida.", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du held på å verta teken til ei tredje-partisside so du kan godkjenna brukaren din til bruk med %(integrationsUrl)s. Vil du gå fram?", + "Token incorrect": "Teiknet er gale", + "Filter community members": "Filtrer samfunnsmedlemer", + "Custom Server Options": "Eigentenar-innstillingar", + "Filter community rooms": "Filtrer samfunnsrom", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Ver venleg og hjelp oss å forbetra Riot.im ved å senda anonym brukardata. Dette brukar ei datakake (ver venleg og sjå på Datakakeretningslinene våre).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Ver venleg og hjelp oss å forbetra Riot.im ved å senda anonym brukardata. Dette brukar ei datakake.", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du brukar Riktekst-innstillinga på Riktekstfeltet", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ÅTVARING: NOKO GJEKK GALT MED NYKELGODKJENNINGA! Signeringsnykelen til %(userId)s og eininga %(deviceId)s er \"%(fprint)s\", som ikkje er lik den gjevne nykelen \"%(fingerprint)s\". Dette kan tyda at nokon tjuvlyttar på kommuniseringa!", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signeringsnykelen du oppgav er lik signeringsnykelen du fekk frå %(userId)s si eining %(deviceId)s. Eininga merkast som godkjend.", + "This room is not accessible by remote Matrix servers": "Rommet er ikkje tilgjengeleg for andre Matrix-heimtenarar", + "Add an Integration": "Legg tillegg til", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Du kan bruka eigentenarinnstillingane for å logga på andre Matrixtenarar gjennom å oppgje ein annan Heimtenar-URL.", + "Custom server": "Eigentenar", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Heimtenaren har truffe den Månadlege Grensa for Aktive Brukarar. Ver venleg og kontakt tenesteadministratoren din for å halda fram med å bruka tenesten.", + "Popout widget": "Popp widget ut", + "Integrations Error": "Noko gjekk gale med med Tillegga", + "Manage Integrations": "Sjå over Innlegg", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "Custom of %(powerLevel)s": "Sjølvsett namn på %(powerLevel)s", + "Custom level": "Sjølvsett høgd", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Klarte ikkje å lasta handlinga som vert svara til. Anten finst ho ikkje elles har du ikkje tilgang til å sjå ho.", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debøgg-loggar inneheld æppbrukdata slik som brukarnamnet ditt, IDane eller aliasane på romma eller gruppene du har vore i og brukarnamna til andre brukarar. Dei inneheld ikkje meldingar.", + "Block users on other matrix homeservers from joining this room": "Hindr brukare frå andre matrix-heimtenarar frå å koma inn i rommet", + "Failed to indicate account erasure": "Fekk ikkje til å visa brukarsletting", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Vis dei er like, trykk på godkjenn-knappen under. Viss dei ikkje gjer det, tjuvlyttar nokon på eininga og du bør sannsynlegvis trykkja på svartelisting-knappen i staden.", + "Send Custom Event": "Send Sjølvsett Hending", + "Failed to send custom event.": "Fekk ikkje til å senda sjølvsett hending.", + "State Key": "Tilstandsnykel", + "Filter results": "Filtrer resultat", + "Custom": "Sjølvsett", + "Failed to set Direct Message status of room": "Fekk ikkje til å setja Direktemelding-tilstanden til rommet", + "Did you know: you can use communities to filter your Riot.im experience!": "Visste du at: du kan bruka samfunn for å filtrera Riot.im-opplevinga di!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "For å setja opp eit filter, drag ein samfunnsavatar bort til filterpanelet til venstre på skjermen. Du kan klikka på ein avatar i filterpanelet når som helst for å sjå berre romma og folka tilknytta det samfunnet.", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Lag eit samfunn for å føra saman brukarar og rom! Bygg di eiga heimeside for å kreva din del av Matrix-verda.", + "Hide panel": "Gøym panel", + "Unable to look up room ID from server": "Klarte ikkje å henta rom-ID frå tenaren", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Meldinga di vart ikkje send fordi heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda frama med å bruka tenesten.", + "Server may be unavailable, overloaded, or search timed out :(": "Tenaren er kanskje utilgjengeleg, overlasta, elles so vart søket tidsavbroten :(", + "Expand panel": "Utvid panel", + "Collapse panel": "Slå panel saman", + "Filter room names": "Filtrer romnamn", + "Clear filter": "Tøm filter", + "Autocomplete Delay (ms):": "Fullfør-av-seg-sjølv-Forseinking (ms):", + "Clear Cache": "Tøm Buffar", + "Clear Cache and Reload": "Tøm Buffar og Last inn att", + "Profile": "Brukar", + "Access Token:": "Tilgangs-Teikn:", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Å attendestilla passordet vil førebels attendestilla alle ende-til-ende-krypteringsnyklar på alle einingar, slik at krypterte samtaler vert uleselege, med mindre du fyrst hentar romnyklane ut og hentar dei inn att etterpå. Dette vil forbetrast i framtida.", + "This homeserver has hit its Monthly Active User limit": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar", + "This homeserver doesn't offer any login flows which are supported by this client.": "Heimtenaren tilbyd ingen nye innloggingsstraumar som støttast av denne klienten.", + "Claimed Ed25519 fingerprint key": "Gjorde krav på Ed25519-fingeravtrykksnykel", + "Export room keys": "Hent romnyklar ut", + "Bulk Options": "Innverknadsrike Innstillingar", + "Export": "Hent ut", + "Import room keys": "Hent romnyklar inn", + "File to import": "Fil til innhenting", + "Import": "Hent inn", + "Failed to set direct chat tag": "Fekk ikkje til å setja direktesamtale-merke", + "Failed to remove tag %(tagName)s from room": "Fekk ikkje til å fjerna merket %(tagName)s frå rommet", + "Failed to add tag %(tagName)s to room": "Fekk ikkje til å leggja merket %(tagName)s til i rommet", + "Hide read receipts": "Gøym lest-lappar", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av sikkerheitsmessige grunnar vil det å logga ut sletta alle ende-til-ende-krypteringsnyklar frå nettlesaren. Viss du vil kunna dekryptera samtalehistoria di på framtidige Riot-øykter, ver venleg og hent ut romnyklande dine og tak vare på dei.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Dette tillèt deg å henta nyklane for meldingar du har sendt i krypterte rom ut til ei lokal fil. Då kan du henta fila inn til ein annan Matrix-klient i framtida, slik at den klienten òg kan dekryptera meldingane.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Å henta filen ut tillèt kven som helst som kan lesa ho å dekryptera alle krypterte meldingar du kan sjå, so du bør passa på å halda ho trygg. For å hjelpa til med dette bør du skriva ei passetning inn i feltet under, som vil brukast til å kryptere den uthenta dataen. Det vil berre vera mogeleg å henta dataen inn med den same passetninga.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Dette tillèt deg å henta krypteringsnyklar som du tidlegare henta ut frå ein annan Matrix-klient inn. Du vil so kunna dekryptera alle meldingane som den andre klienten kunne dekryptera.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Uthentingsfila vil verta verna med ei passetning. Du bør skriva passetninga inn her for å dekryptera fila.", + "Internal room ID: ": "Indre rom-ID: ", + "Room version number: ": "Romutgåvenummer: ", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar. Ver venleg og tak kontakt med tenesteadministratoren din for å halda fram med å bruka tenesten.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "Heimtenaren har truffe si Månadlege Grense for Aktive Brukarar, so nokre brukarar vil ikkje kunna logga inn. Ver venleg og tak kontakt med tenesteadministratoren din for å auka grensa.", + "There is a known vulnerability affecting this room.": "Ein kjend sårbarheit påverkar dette rommet.", + "This room version is vulnerable to malicious modification of room state.": "Denne romutgåva er sårbar til vondsinna endring på romtilstanden.", + "Only room administrators will see this warning": "Berre romadministratorar vil sjå denne åtvaringa", + "Please contact your service administrator to continue using the service.": "Ver venleg og tak kontakt med tenesteadministratoren for å halda fram med å bruka tenesten.", + "This homeserver has hit its Monthly Active User limit.": "Heimtenaren har truffe den Månadlege Grensa si for Aktive Brukarar.", + "This homeserver has exceeded one of its resource limits.": "Heimtenaren har gått over ei av ressursgrensene sine.", + "Riot is not supported on mobile web. Install the app?": "Riot er ikkja støtta på mobilnettlesare. Last æppen inn?", + "Riot Desktop on %(platformName)s": "Riot på Skrivebord for %(platformName)s", + "Unknown device": "Ukjend eining", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s gjennom %(browserName)s på %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Du må bruka HTTPS for å ha ei samtale med skjermdeling.", + "Welcome to Riot.im": "Velkomen til Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Desentralisert, kryptert nettprat & samarbeid driven av [matrix]", + "Search the room directory": "Søk i romutvalet", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Det finst allereie massevis av rom på Matrix, anten lenkja til nettverk som allereie finst (Slack, IRC, Gitter osv.) eller uavhengige. Tak ein titt på utvalet!", + "Chat with Riot Bot": "Nettprat med Riot Bot", + "Get started with some tips from Riot Bot!": "Kom i gang med nokre råd frå Riot Bot!", + "General discussion about Matrix and Riot": "Allmenn meiningsutveksling om Matrix og Riot", + "Discussion of all things Matrix!": "Meiningsutveksling om alt som gjeld Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Skrivebordsprat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk-prat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk-prat", + "Matrix technical discussions": "Teknisk meiningsutveksling om Matrix", + "Running Matrix services": "Å køyra Matrix-tenestar", + "Community-run support for Synapse": "Samfunnsdriven støtte for Synapse", + "Admin support for Dendrite": "Administratorstøtte for Dendrite", + "Announcements about Synapse releases": "Kunngjeringar om Synapse-utgåver", + "Support for those using and running matrix-appservice-irc": "Støtte for dei som brukar og køyrar matrix-appleservice-irc", + "Building services on Matrix": "Byggingstenester på Matrix", + "Support for those using the Matrix spec": "Støtte for dei som brukar Matrix-specen", + "Design and implementation of E2E in Matrix": "E2E-oppbygging og -implementering på Matrix", + "Implementing VR services with Matrix": "Implementering av VR-tenester med Matrix", + "Implementing VoIP services with Matrix": "Implementering av VoIP-tenester med Matrix", + "Discussion of the Identity Service API": "Meiningsutveksling om Identitetstenar-APIen", + "Support for those using, running and writing other bridges": "Støtte for dei som brukar, køyrer og skriv andre bruer", + "Contributing code to Matrix and Riot": "For å bidraga med kode til Matrix og Riot", + "Dev chat for the Riot/Web dev team": "Utviklar-prat for Riot/Web-utviklargruppa", + "Dev chat for the Dendrite dev team": "Utviklar-prat for Dendrite-utviklargruppa", + "Co-ordination for Riot translators": "Samordning for Riot-omsetjare", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan bruka eigentenarinnstillingar til å logga inn på andre Matrixtenarar ved å oppgje ein annan Heimtenar-URL.
Dette gjer at du kan bruka Riot med ein Matrixbrukar som allereie finst på ein annan heimtenar.

Du kan òg setja ein eigen identitetstenar men du kjem i so fall ikkje til å kunna byda brukare inn med epost, eller å sjølv verta boden inn med epost." +} \ No newline at end of file diff --git a/riot/i18n/pl.json b/riot/i18n/pl.json new file mode 100644 index 0000000..6b6f7a6 --- /dev/null +++ b/riot/i18n/pl.json @@ -0,0 +1,1248 @@ +{ + "Ignore request": "Zignoruj żądanie", + "Start verification": "Rozpocznij weryfikację", + "Skip": "Pomiń", + "This will allow you to reset your password and receive notifications.": "To pozwoli Ci zresetować Twoje hasło i otrzymać powiadomienia.", + "Your browser does not support the required cryptography extensions": "Twoja przeglądarka nie wspiera wymaganych rozszerzeń kryptograficznych", + "Something went wrong!": "Coś poszło nie tak!", + "Username not available": "Nazwa użytkownika niedostępna", + "Username available": "Nazwa użytkownika dostępna", + "Click on the button below to start chatting!": "Kliknij na przycisk poniżej aby rozpocząć rozmowę!", + "Start chatting": "Rozpocznij konwersację", + "Start Chatting": "Rozpocznij Konwersację", + "Updates": "Aktualizacje", + "Default server": "Domyślny serwer", + "Add User": "Dodaj użytkownika", + "Verify...": "Zweryfikuj...", + "Unknown Address": "Nieznany adres", + "Unknown devices": "Nieznane urządzenia", + "Verify device": "Zweryfikuj urządzenie", + "Device key": "Klucz urządzenia", + "Device Name": "Nazwa urządzenia", + "Device name": "Nazwa urządzenia", + "To continue, please enter your password.": "Aby kontynuować, proszę wprowadzić swoje hasło.", + "Incorrect password": "Nieprawidłowe hasło", + "Unknown error": "Nieznany błąd", + "Start new chat": "Rozpocznij nową konwersację", + "Options": "Opcje", + "New Password": "Nowe hasło", + "Room directory": "Spis pokojów", + "Start chat": "Rozpocznij rozmowę", + "Create new room": "Utwórz nowy pokój", + "Cancel": "Anuluj", + "Room": "Pokój", + "Topic": "Temat", + "Jan": "Sty", + "Feb": "Lut", + "Mar": "Mar", + "Apr": "Kwi", + "May": "Maj", + "Jun": "Cze", + "Jul": "Lip", + "Aug": "Sie", + "Sep": "Wrz", + "Oct": "Paź", + "Nov": "Lis", + "Dec": "Gru", + "Mon": "Pon", + "Tue": "Wt", + "Wed": "Śr", + "Thu": "Czw", + "Fri": "Pt", + "Sat": "Sob", + "Sun": "Nd", + "Who can read history?": "Kto może czytać historię?", + "Warning!": "Uwaga!", + "Users": "Użytkownicy", + "User name": "Nazwa użytkownika", + "User ID": "ID użytkownika", + "User Interface": "Interfejs użytkownika", + "Usage": "Użycie", + "Upload file": "Prześlij plik", + "Unban": "Odbanuj", + "Accept": "Akceptuj", + "Account": "Konto", + "Add": "Dodaj", + "Add phone number": "Dodaj numer telefonu", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Algorithm": "Algorytm", + "Hide removed messages": "Ukryj usunięte wiadomości", + "Are you sure?": "Czy jesteś pewien?", + "Attachment": "Załącznik", + "Banned users": "Zbanowani użytkownicy", + "Change Password": "Zmień Hasło", + "Close": "Zamknij", + "Confirm password": "Potwierdź hasło", + "Confirm your new password": "Potwierdź swoje nowe hasło", + "Continue": "Kontynuuj", + "Create Room": "Stwórz Pokój", + "Cryptography": "Kryptografia", + "Current password": "Aktualne hasło", + "Create an account": "Stwórz konto", + "Delete": "Usuń", + "Devices": "Urządzenia", + "Error": "Błąd", + "Notifications": "Powiadomienia", + "Operation failed": "Operacja nieudana", + "Remove": "Usuń", + "Search": "Szukaj", + "Settings": "Ustawienia", + "unknown error code": "nieznany kod błędu", + "OK": "OK", + "Custom Server Options": "Niestandardowe opcje serwera", + "Dismiss": "Zamknij", + "Failed to forget room %(errCode)s": "Nie mogłem zapomnieć o pokoju %(errCode)s", + "Favourite": "Ulubiony", + "Mute": "Wycisz", + "powered by Matrix": "napędzany przez Matrix", + "Failed to change password. Is your password correct?": "Zmiana hasła nie powiodła się. Czy Twoje hasło jest poprawne?", + "Add a topic": "Dodaj temat", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Wysłano wiadomość tekstową do +%(msisdn)s. Proszę wprowadzić kod w niej zawarty", + "%(targetName)s accepted an invitation.": "%(targetName)s zaakceptował(a) zaproszenie.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s zaakceptował(a) zaproszenie dla %(displayName)s.", + "Access Token:": "Jednorazowy kod dostępu:", + "Active call (%(roomName)s)": "Aktywne połączenie (%(roomName)s)", + "Add email address": "Dodaj adres e-mail", + "Admin": "Administrator", + "Admin Tools": "Narzędzia Administracyjne", + "VoIP": "VoIP (połączenie głosowe)", + "No Microphones detected": "Nie wykryto żadnego mikrofonu", + "No Webcams detected": "Nie wykryto żadnej kamerki internetowej", + "No media permissions": "Brak uprawnień do mediów", + "You may need to manually permit Riot to access your microphone/webcam": "Możliwe, że będziesz musiał ręcznie pozwolić Riotowi na dostęp do twojego mikrofonu/kamerki internetowej", + "Default Device": "Urządzenie domyślne", + "Advanced": "Zaawansowane", + "Always show message timestamps": "Zawsze pokazuj znaczniki czasu wiadomości", + "Authentication": "Uwierzytelnienie", + "Alias (optional)": "Alias (opcjonalnie)", + "%(items)s and %(lastItem)s": "%(items)s i %(lastItem)s", + "%(names)s and %(lastPerson)s are typing": "%(names)s i %(lastPerson)s piszą", + "A new password must be entered.": "Musisz wprowadzić nowe hasło.", + "%(senderName)s answered the call.": "%(senderName)s odebrał połączenie.", + "An error has occurred.": "Wystąpił błąd.", + "Anyone": "Każdy", + "Anyone who knows the room's link, apart from guests": "Każdy kto posiada łącze do pokoju, poza gośćmi", + "Anyone who knows the room's link, including guests": "Każdy kto posiada łącze do pokoju, łącznie z gośćmi", + "Are you sure you want to leave the room '%(roomName)s'?": "Czy na pewno chcesz opuścić pokój '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "Czy na pewno chcesz odrzucić zaproszenie?", + "Are you sure you want to upload the following files?": "Czy na pewno chcesz przesłać następujące pliki?", + "Autoplay GIFs and videos": "Automatycznie odtwarzaj GIFy i filmiki", + "%(senderName)s banned %(targetName)s.": "%(senderName)s zbanował %(targetName)s.", + "Ban": "Zbanuj", + "Bans user with given id": "Blokuje użytkownika o podanym ID", + "Blacklisted": "Umieszczono na czarnej liście", + "Add a widget": "Dodaj widżet", + "Allow": "Pozwól", + "Missing Media Permissions, click here to request.": "Brakuje uprawnień mediów. Kliknij tutaj, aby ich zażądać.", + "and %(count)s others...": { + "other": "i %(count)s innych...", + "one": "i jeden inny..." + }, + "Bulk Options": "Masowe opcje", + "Call Timeout": "Upłynął limit czasu połączenia", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nie można nawiązać połączenia z serwerem - proszę sprawdź twoje połączenie, upewnij się, że certyfikat SSL serwera jest zaufany, i że dodatki przeglądarki nie blokują żądania.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Nie można nawiązać połączenia z serwerem przy użyciu HTTP podczas korzystania z HTTPS dla bieżącej strony. Użyj HTTPS lub włącz niebezpieczne skrypty.", + "Can't load user settings": "Nie można załadować ustawień użytkownika", + "Cannot add any more widgets": "Nie można dodać już więcej widżetów", + "%(senderName)s changed their profile picture.": "%(senderName)s zmienił(a) swoje zdjęcie profilowe.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s zmienił(a) poziom mocy %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s zmienił(a) nazwę pokoju na %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s usunął(-ęła) nazwę pokoju.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s zmienił(a) temat na \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Zmiany w dostępie do historii będą dotyczyć tylko przyszłych wiadomości w tym pokoju", + "Changes your display nickname": "Zmień swój pseudonim", + "Changes colour scheme of current room": "Zmień schemat kolorystyczny bieżącego pokoju", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmiana hasła zresetuje klucze szyfrowania end-to-end na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.", + "Claimed Ed25519 fingerprint key": "Zażądano odcisk klucza Ed25519", + "Clear Cache and Reload": "Wyczyść pamięć podręczną i przeładuj", + "Clear Cache": "Wyczyść pamięć podręczną", + "Click here to join the discussion!": "Kliknij tutaj, aby dołączyć do dyskusji!", + "Click here to fix": "Kliknij tutaj, aby naprawić", + "Click to mute audio": "Kliknij, aby wyciszyć dźwięk", + "Click to mute video": "Kliknij, aby wyłączyć obraz", + "click to reveal": "kliknij, aby ujawnić", + "Click to unmute video": "Kliknij, aby włączyć obraz", + "Click to unmute audio": "Kliknij, aby włączyć dźwięk", + "Command error": "Błąd polecenia", + "Commands": "Polecenia", + "Conference call failed.": "Połączenie konferencyjne nie powiodło się.", + "Conference calling is in development and may not be reliable.": "Rozmowy konferencyjne są w trakcie opracowywania i mogą nie działać poprawnie.", + "Conference calls are not supported in encrypted rooms": "Połączenia konferencyjne nie są obsługiwane w zaszyfrowanych pokojach", + "Conference calls are not supported in this client": "Połączenia konferencyjne nie są obsługiwane w tym kliencie", + "Could not connect to the integration server": "Nie można połączyć się z serwerem integracji", + "Create a new chat or reuse an existing one": "Utwórz nowy czat lub użyj istniejącego", + "Curve25519 identity key": "Curve25519 klucz tożsamości", + "Custom": "Własny", + "Custom level": "Własny poziom", + "/ddg is not a command": "/ddg nie jest poleceniem", + "Deactivate Account": "Dezaktywuj konto", + "Deactivate my account": "Dezaktywuj moje konto", + "Decline": "Odrzuć", + "Decrypt %(text)s": "Odszyfruj %(text)s", + "Decryption error": "Błąd odszyfrowywania", + "Delete widget": "Usuń widżet", + "Default": "Domyślny", + "Define the power level of a user": "Zdefiniuj poziom mocy użytkownika", + "Device already verified!": "Urządzenie jest już zweryfikowane!", + "Device ID": "Identyfikator urządzenia", + "Device ID:": "Identyfikator urządzenia:", + "device id: ": "identyfikator urządzenia: ", + "Device key:": "Klucz urządzenia:", + "Devices will not yet be able to decrypt history from before they joined the room": "Urządzenia nie będą mogły odszyfrowywać historii sprzed dołączenia do pokoju", + "Direct chats": "Rozmowy bezpośrednie", + "Disable Notifications": "Wyłącz powiadomienia", + "Disinvite": "Anuluj zaproszenie", + "Display name": "Wyświetlana nazwa", + "Displays action": "Wyświetlane akcje", + "Do you want to load widget from URL:": "Czy chcesz załadować widżet z adresu:", + "Don't send typing notifications": "Nie wysyłaj powiadomienia o pisaniu", + "Download %(text)s": "Pobrano %(text)s", + "Drop File Here": "Upuść plik tutaj", + "Drop here to tag %(section)s": "Upuść tutaj by oznaczyć %(section)s", + "Ed25519 fingerprint": "Odcisk Ed25519", + "Edit": "Edycja", + "Email": "E-mail", + "Email address": "Adres e-mail", + "Email address (optional)": "Adres e-mail (opcjonalnie)", + "Email, name or matrix ID": "E-mail, nazwa lub matrix ID", + "Emoji": "Emoji", + "Enable automatic language detection for syntax highlighting": "Włącz automatyczne rozpoznawanie języka dla podświetlania składni", + "Enable encryption": "Włącz szyfrowanie", + "Enable Notifications": "Włącz powiadomienia", + "Encrypted by a verified device": "Zaszyfrowane przez zweryfikowane urządzenie", + "Encrypted by an unverified device": "Zaszyfrowane przez niezweryfikowane urządzenie", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Szyfrowane wiadomości nie są widoczne w programach, które nie implementują szyfrowania", + "Encrypted room": "Pokój szyfrowany", + "Encryption is enabled in this room": "Szyfrowanie jest włączone w tym pokoju", + "Encryption is not enabled in this room": "Szyfrowanie nie jest włączone w tym pokoju", + "%(senderName)s ended the call.": "%(senderName)s zakończył połączenie.", + "End-to-end encryption information": "Informacje o szyfrowaniu end-to-end", + "End-to-end encryption is in beta and may not be reliable": "Szyfrowanie end-to-end jest w fazie beta i może nie być dopracowane", + "Enter Code": "Wpisz kod", + "Enter passphrase": "Wpisz frazę", + "Error decrypting attachment": "Błąd odszyfrowywania załącznika", + "Error: Problem communicating with the given homeserver.": "Błąd: wystąpił problem podczas komunikacji z podanym serwerem.", + "Event information": "Informacje zdarzenia", + "Existing Call": "Istniejące połączenie", + "Export": "Eksport", + "Export E2E room keys": "Eksportuj klucze E2E pokojów", + "Failed to ban user": "Nie udało się zbanować użytkownika", + "Failed to change power level": "Nie udało się zmienić poziomu mocy", + "Failed to fetch avatar URL": "Nie udało się pobrać awatara", + "Failed to join room": "Nie udało się dołączyć do pokoju", + "Failed to kick": "Nie udało się wykopać użytkownika", + "Failed to leave room": "Nie udało się opuścić pokoju", + "Failed to load timeline position": "Nie udało się wczytać pozycji osi czasu", + "Failed to mute user": "Nie udało się wyciszyć użytkownika", + "Failed to reject invite": "Nie udało się odrzucić zaproszenia", + "Failed to reject invitation": "Nie udało się odrzucić zaproszenia", + "Failed to save settings": "Nie udało się zapisać ustawień", + "Failed to send email": "Nie udało się wysłać wiadomości e-mail", + "Failed to send request.": "Nie udało się wysłać żądania.", + "Failed to set avatar.": "Nie udało się ustawić awataru.", + "Failed to set display name": "Nie udało się ustawić wyświetlanej nazwy", + "Failed to set up conference call": "Nie udało się ustanowić połączenia konferencyjnego", + "Failed to toggle moderator status": "Nie udało się przełączyć na stan moderatora", + "Failed to unban": "Nie udało się odbanować", + "Failed to upload file": "Nie udało się wgrać pliku", + "Failed to upload profile picture!": "Nie udało się wgrać zdjęcia profilowego!", + "Failed to verify email address: make sure you clicked the link in the email": "Nie udało się zweryfikować adresu e-mail: upewnij się że kliknąłeś w link w e-mailu", + "Failure to create room": "Nie udało się stworzyć pokoju", + "Favourites": "Ulubione", + "Fill screen": "Wypełnij ekran", + "Filter room members": "Filtruj uczestników pokoju", + "Forget room": "Zapomnij pokój", + "Forgot your password?": "Zapomniałeś hasła?", + "For security, this session has been signed out. Please sign in again.": "Ze względów bezpieczeństwa ta sesja została wylogowana. Zaloguj się jeszcze raz.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Ze względów bezpieczeństwa, wylogowanie skasuje z tej przeglądarki wszystkie klucze szyfrowania end-to-end. Jeśli chcesz móc odszyfrować swoje historie konwersacji z przyszłych sesji Riot-a, proszę wyeksportuj swoje klucze pokojów do bezpiecznego miejsca.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s z %(fromPowerLevel)s na %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Dostęp dla gości jest wyłączony na tym serwerze.", + "Deops user with given id": "Usuwa prawa administratora użytkownikowi o danym ID", + "Guests cannot join this room even if explicitly invited.": "Goście nie mogą dołączać do tego pokoju, nawet jeśli zostali specjalnie zaproszeni.", + "Hangup": "Rozłącz się", + "Hide Text Formatting Toolbar": "Ukryj pasek formatowania tekstu", + "Home": "Strona startowa", + "Homeserver is": "Serwer domowy to", + "Identity Server is": "Serwer Identity to", + "I have verified my email address": "Zweryfikowałem swój adres e-mail", + "Import": "Importuj", + "Import E2E room keys": "Importuj klucze pokoju E2E", + "Incoming call from %(name)s": "Połączenie przychodzące od %(name)s", + "Incoming video call from %(name)s": "Przychodzące połączenie wideo od %(name)s", + "Incoming voice call from %(name)s": "Przychodzące połączenie głosowe od %(name)s", + "Incorrect username and/or password.": "Nieprawidłowa nazwa użytkownika i/lub hasło.", + "Incorrect verification code": "Nieprawidłowy kod weryfikujący", + "Integrations Error": "Błąd integracji", + "Interface Language": "Język interfejsu", + "Invalid alias format": "Nieprawidłowy format aliasu", + "Invalid address format": "Nieprawidłowy format adresu", + "Invalid Email Address": "Nieprawidłowy adres e-mail", + "Invalid file%(extra)s": "Nieprawidłowy plik %(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s zaprosił %(targetName)s.", + "Invite new room members": "Zaproś nowych członków do pokoju", + "Invited": "Zaproszony", + "Invites": "Zaproszenia", + "Invites user with given id to current room": "Zaprasza użytkownika o danym ID do obecnego pokoju", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' nie jest poprawnym formatem adresu", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nie jest poprawnym formatem aliasu", + "%(displayName)s is typing": "%(displayName)s pisze", + "Sign in with": "Zaloguj się używając", + "Join as voice or video.": "Dołącz głosowo lub przez wideo.", + "Join Room": "Dołącz do pokoju", + "%(targetName)s joined the room.": "%(targetName)s dołączył do pokoju.", + "Joins room with given alias": "Dołącz do pokoju o podanym aliasie", + "Jump to first unread message.": "Przeskocz do pierwszej nieprzeczytanej wiadomości.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s wyrzucił %(targetName)s.", + "Kick": "Wyrzuć", + "Kicks user with given id": "Wyrzuca użytkownika o danym ID", + "Labs": "Laboratoria", + "Last seen": "Ostatnio widziany", + "Leave room": "Opuść pokój", + "%(targetName)s left the room.": "%(targetName)s opuścił pokój.", + "Level:": "Poziom:", + "Publish this room to the public in %(domain)s's room directory?": "Czy opublikować ten pokój dla ogółu w spisie pokojów domeny %(domain)s?", + "Local addresses for this room:": "Lokalne adresy dla tego pokoju:", + "Logged in as:": "Zalogowany jako:", + "Logout": "Wyloguj", + "Low priority": "Niski priorytet", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla wszyscy członkowie pokoju, od momentu ich zaproszenia.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla wszyscy członkowie pokoju, od momentu ich dołączenia.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla wszyscy członkowie pokoju.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla kazdego.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s uczynił przyszłą historię pokoju widoczną dla nieznany (%(visibility)s).", + "Manage Integrations": "Zarządzaj integracjami", + "Markdown is disabled": "Markdown jest wyłączony", + "Markdown is enabled": "Markdown jest włączony", + "matrix-react-sdk version:": "Wersja matrix-react-sdk:", + "Message not sent due to unknown devices being present": "Wiadomość nie została wysłana z powodu obecności nieznanych urządzeń", + "Missing room_id in request": "Brakujące room_id w żądaniu", + "Missing user_id in request": "Brakujące user_id w żądaniu", + "Mobile phone number": "Numer telefonu komórkowego", + "Mobile phone number (optional)": "Numer telefonu komórkowego (opcjonalne)", + "Moderator": "Moderator", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Name": "Imię", + "Never send encrypted messages to unverified devices from this device": "Nigdy nie wysyłaj zaszyfrowanych wiadomości do niezweryfikowanych urządzeń z tego urządzenia", + "Never send encrypted messages to unverified devices in this room from this device": "Nigdy nie wysyłaj niezaszyfrowanych wiadomości do niezweryfikowanych urządzeń z tego urządzenia", + "New address (e.g. #foo:%(localDomain)s)": "Nowy adres (np. #foo:%(localDomain)s)", + "New password": "Nowe hasło", + "New passwords don't match": "Nowe hasła nie zgadzają się", + "New passwords must match each other.": "Nowe hasła muszą się zgadzać.", + "none": "żaden", + "not set": "nieustawiony", + "not specified": "nieokreślony", + "(not supported by this browser)": "(niewspierany przez tę przeglądarkę)", + "": "", + "AM": "AM", + "PM": "PM", + "NOT verified": "NIEzweryfikowany", + "NOTE: Apps are not end-to-end encrypted": "UWAGA: Aplikacje nie są szyfrowane metodą użytkownik-użytkownik", + "No devices with registered encryption keys": "Brak urządzeń z zarejestrowanymi kluczami szyfrującymi", + "No display name": "Brak nazwy ekranowej", + "No more results": "Nie ma więcej wyników", + "No results": "Brak wyników", + "No users have specific privileges in this room": "Żadni użytkownicy w tym pokoju nie mają specyficznych uprawnień", + "olm version:": "wersja olm:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Po włączeniu szyfrowania w pokoju nie można go ponownie wyłączyć (póki co)", + "Only people who have been invited": "Tylko ludzie, którzy zostali zaproszeni", + "Password": "Hasło", + "Password:": "Hasło:", + "Passwords can't be empty": "Hasła nie mogą być puste", + "People": "Ludzie", + "Permissions": "Uprawnienia", + "Phone": "Telefon", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s rozpoczął połączenie %(callType)s.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Sprawdź swój e-mail i kliknij link w nim zawarty. Kiedy już to zrobisz, kliknij \"kontynuuj\".", + "Power level must be positive integer.": "Poziom uprawnień musi być liczbą dodatnią.", + "Press to start a chat with someone": "Naciśnij , by rozpocząć rozmowę z kimś", + "Privacy warning": "Ostrzeżenie o prywatności", + "Private Chat": "Rozmowa prywatna", + "Privileged Users": "Użytkownicy uprzywilejowani", + "Profile": "Profil", + "Public Chat": "Rozmowa publiczna", + "Reason": "Powód", + "Reason: %(reasonText)s": "Powód: %(reasonText)s", + "Revoke Moderator": "Usuń prawa moderatorskie", + "Revoke widget access": "Usuń dostęp do widżetów", + "Refer a friend to Riot:": "Zaproś znajomego do Riota:", + "Register": "Rejestracja", + "%(targetName)s rejected the invitation.": "%(targetName)s odrzucił zaproszenie.", + "Reject invitation": "Odrzuć zaproszenie", + "Rejoin": "Dołącz ponownie", + "Remote addresses for this room:": "Adresy zdalne dla tego pokoju:", + "Remove Contact Information?": "Usunąć dane kontaktowe?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s usunął(-ęła) swoją wyświetlaną nazwę (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s usunął(-ęła) swoje zdjęcie profilowe.", + "Remove %(threePid)s?": "Usunąć %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s zażądał grupowego połączenia głosowego VoIP.", + "Results from DuckDuckGo": "Wyniki z DuckDuckGo", + "Return to login screen": "Wróć do ekranu logowania", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot nie ma uprawnień, by wysyłać ci powiadomienia - sprawdź ustawienia swojej przeglądarki", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Ukryj wiadomości o dołączeniu/opuszczeniu (nie obejmuje zaproszeń/wyrzuceń/banów)", + "Hide read receipts": "Ukryj potwierdzenia odczytu", + "Historical": "Historyczne", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Resetowanie hasła zresetuje klucze szyfrowania end-to-end na wszystkich urządzeniach, co spowoduje, że nie będzie się dało odczytać zaszyfrowanej historii czatu, chyba że najpierw wyeksportujesz swoje klucze i ponownie je zaimportujesz. W przyszłości będzie to poprawione.", + "Riot was not given permission to send notifications - please try again": "Riot nie otrzymał uprawnień do wysyłania powiadomień - proszę spróbuj ponownie", + "riot-web version:": "wersja riot-web:", + "Room %(roomId)s not visible": "Pokój %(roomId)s nie jest widoczny", + "Room Colour": "Kolor pokoju", + "Room contains unknown devices": "Pokój zawiera nieznane urządzenia", + "Room name (optional)": "Nazwa pokoju (opcjonalna)", + "%(roomName)s does not exist.": "%(roomName)s nie istnieje.", + "%(roomName)s is not accessible at this time.": "%(roomName)s nie jest dostępny w tym momencie.", + "Rooms": "Pokoje", + "Save": "Zapisz", + "Scroll to bottom of page": "Przewiń do końca strony", + "Scroll to unread messages": "Przewiń do nieprzeczytanych wiadomości", + "Search failed": "Wyszukiwanie nie powiodło się", + "Searches DuckDuckGo for results": "Przeszukaj DuckDuckGo dla wyników", + "Seen by %(userName)s at %(dateTime)s": "Widziane przez %(userName)s o %(dateTime)s", + "Send anyway": "Wyślij mimo to", + "Sender device information": "Informacja o urządzeniu nadawcy", + "Send Invites": "Wyślij zaproszenie", + "Send Reset Email": "Wyślij e-mail resetujący hasło", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s wysłał obraz.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s wysłał zaproszenie do %(targetDisplayName)s do dołączenia do pokoju.", + "Server error": "Błąd serwera", + "Server may be unavailable or overloaded": "Serwer może być niedostępny lub przeciążony", + "Server may be unavailable, overloaded, or search timed out :(": "Serwer może być niedostępny, przeciążony, lub upłynął czas wyszukiwania :(", + "Server may be unavailable, overloaded, or the file too big": "Serwer może być niedostępny, przeciążony, lub plik jest za duży", + "Server may be unavailable, overloaded, or you hit a bug.": "Serwer może być niedostępny, przeciążony, lub trafiłeś na błąd.", + "Server unavailable, overloaded, or something else went wrong.": "Serwer może być niedostępny, przeciążony, lub coś innego poszło źle.", + "Session ID": "Identyfikator sesji", + "%(senderName)s set a profile picture.": "%(senderName)s ustawił zdjęcie profilowe.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s ustawił swoją nazwę na %(displayName)s.", + "Sets the room topic": "Ustaw temat pokoju", + "Show panel": "Pokaż panel", + "Show Text Formatting Toolbar": "Pokaż pasek narzędzi formatowania tekstu", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Pokaż czas w formacie 12-sto godzinnym (n.p. 2:30pm)", + "Signed Out": "Wylogowano", + "Sign in": "Zaloguj", + "Sign out": "Wyloguj", + "%(count)s of your messages have not been sent.": { + "other": "Niektóre z twoich wiadomości nie zostały wysłane.", + "one": "Twoja wiadomość nie została wysłana." + }, + "Someone": "Ktoś", + "Start a chat": "Rozpocznij rozmowę", + "Start authentication": "Rozpocznij uwierzytelnienie", + "Start Chat": "Rozpocznij rozmowę", + "Submit": "Wyślij", + "Success": "Sukces", + "Tagged as: ": "Oznaczone jako: ", + "The default role for new room members is": "Domyślną rolą dla nowych członków pokoju jest", + "The main address for this room is": "Głównym adresem dla tego pokoju jest", + "The maximum permitted number of widgets have already been added to this room.": "Do tego pokoju dodano już maksymalną dozwoloną liczbę widżetów.", + "The phone number entered looks invalid": "Wprowadzony numer telefonu wygląda na niepoprawny", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Podany klucz podpisu odpowiada kluczowi podpisania otrzymanemu z urządzenia %(userId)s %(deviceId)s. Urządzenie oznaczone jako zweryfikowane.", + "This email address is already in use": "Podany adres e-mail jest już w użyciu", + "This email address was not found": "Podany adres e-mail nie został znaleziony", + "The email address linked to your account must be entered.": "Musisz wpisać adres e-mail połączony z twoim kontem.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Rozmiar pliku '%(fileName)s' przekracza możliwy limit do przesłania na serwer domowy", + "The file '%(fileName)s' failed to upload": "Przesyłanie pliku '%(fileName)s' nie powiodło się", + "The remote side failed to pick up": "Strona zdalna nie odebrała", + "This room has no local addresses": "Ten pokój nie ma lokalnych adresów", + "This room is not recognised.": "Ten pokój nie został rozpoznany.", + "These are experimental features that may break in unexpected ways": "Te funkcje są eksperymentalne i może wystąpić błąd", + "The visibility of existing history will be unchanged": "Widoczność dotychczasowej historii nie zostanie zmieniona", + "This doesn't appear to be a valid email address": "Ten adres e-mail zdaje się nie być poprawny", + "This is a preview of this room. Room interactions have been disabled": "To jest podgląd tego pokoju. Interakcje w pokoju zostały wyłączone", + "This phone number is already in use": "Ten numer telefonu jest już zajęty", + "This room": "Ten pokój", + "This room is not accessible by remote Matrix servers": "Ten pokój nie jest dostępny na zdalnych serwerach Matrix", + "This room's internal ID is": "Wewnętrzne ID tego pokoju to", + "To get started, please pick a username!": "Aby rozpocząć, wybierz nazwę użytkownika!", + "To reset your password, enter the email address linked to your account": "Aby zresetować swoje hasło, wpisz adres e-mail powiązany z twoim kontem", + "Turn Markdown off": "Wyłącz Markdown", + "Turn Markdown on": "Włącz Markdown", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s włączył szyfrowanie użytkownik-użytkownik (algorithm %(algorithm)s).", + "Unable to add email address": "Nie można dodać adresu e-mail", + "Unable to create widget.": "Nie można utworzyć widżetu.", + "Unable to remove contact information": "Nie można usunąć informacji kontaktowych", + "Unable to verify email address.": "Weryfikacja adresu e-mail nie powiodła się.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s odblokował/a %(targetName)s.", + "Unable to capture screen": "Nie można zrobić zrzutu ekranu", + "Unable to enable Notifications": "Nie można włączyć powiadomień", + "Unable to load device list": "Nie można załadować listy urządzeń", + "Undecryptable": "Odszyfrowanie niemożliwe", + "Unencrypted room": "Pokój nieszyfrowany", + "This Home Server does not support login using email address.": "Ten serwer domowy nie obsługuje logowania się poprzez adres e-mail.", + "This invitation was sent to an email address which is not associated with this account:": "To zaproszenie zostało wysłane na adres e-mail, który nie jest połączony z tym kontem:", + "To use it, just wait for autocomplete results to load and tab through them.": "Żeby z niego skorzystać, należy poczekać na załadowanie się wyników autouzupełnienia i naciskać przycisk \"Tab\", by je przewijać.", + "Unencrypted message": "Niezaszyfrowana wiadomość", + "unknown caller": "nieznany dzwoniący", + "unknown device": "nieznane urządzenie", + "Unknown room %(roomId)s": "Nieznany pokój %(roomId)s", + "Unmute": "Wyłącz wyciszenie", + "Unnamed Room": "Pokój bez nazwy", + "Unrecognised command:": "Nierozpoznane polecenie:", + "Unrecognised room alias:": "Nierozpoznany alias pokoju:", + "Unverified": "Niezweryfikowany", + "Uploading %(filename)s and %(count)s others": { + "zero": "Przesyłanie %(filename)s", + "one": "Przesyłanie %(filename)s oraz %(count)s innych", + "other": "Przesyłanie %(filename)s oraz %(count)s innych" + }, + "Upload avatar": "Prześlij awatar", + "Upload Failed": "Błąd przesyłania", + "Upload Files": "Prześlij pliki", + "Upload new:": "Prześlij nowy:", + "Use with caution": "Używać ostrożnie", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (moc uprawnień administratorskich %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Niepoprawna nazwa użytkownika: %(errMessage)s", + "Verification Pending": "Oczekuje weryfikacji", + "Verification": "Weryfikacja", + "verified": "zweryfikowany", + "Verified": "Zweryfikowany", + "Verified key": "Zweryfikowany klucz", + "Video call": "Rozmowa wideo", + "Voice call": "Rozmowa głosowa", + "VoIP conference finished.": "Zakończono grupowe połączenie głosowe VoIP.", + "VoIP conference started.": "Rozpoczęto grupowe połączenie głosowe VoIP.", + "VoIP is unsupported": "Rozmowy głosowe VoIP nie są obsługiwane", + "(could not connect media)": "(brak możliwości połączenia się z mediami)", + "(no answer)": "(brak odpowiedzi)", + "(unknown failure: %(reason)s)": "(nieznany błąd: %(reason)s)", + "(warning: cannot be disabled again!)": "(ostrzeżenie: brak możliwości ponownego dezaktywowania!)", + "WARNING: Device already verified, but keys do NOT MATCH!": "OSTRZEŻENIE: Urządzenie już zweryfikowane, ale klucze NIE PASUJĄ DO SIEBIE!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "OSTRZEŻENIE: BŁĄD WERYFIKACJI KLUCZA! Klucz podpisujący dla %(userId)s i urządzenia %(deviceId)s to \"%(fprint)s\", który nie pasuje do dostarczonego klucza \"%(fingerprint)s\". To może oznaczać, że twoje komunikaty są przejmowane!", + "Who can access this room?": "Kto może uzyskać dostęp do tego pokoju?", + "Who would you like to add to this room?": "Kogo chciał(a)byś dodać do tego pokoju?", + "Who would you like to communicate with?": "Z kim chciał(a)byś się komunikować?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s wycofał(a) zaproszenie %(targetName)s.", + "Would you like to accept or decline this invitation?": "Czy chcesz zaakceptować czy odrzucić to zaproszenie?", + "You already have existing direct chats with this user:": "Masz już istniejącą bezpośrednią konwersację z tym użytkownikiem:", + "You are already in a call.": "Jesteś już w trakcie połączenia.", + "You are not in this room.": "Nie jesteś w tym pokoju.", + "You do not have permission to do that in this room.": "Nie masz pozwolenia na wykonanie tej akcji w tym pokoju.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Nie jesteś jeszcze w żadnym pokoju! Naciśnij , aby stworzyć pokój lub , żeby przeszukać katalog", + "You are trying to access %(roomName)s.": "Próbujesz uzyskać dostęp do %(roomName)s.", + "You cannot place a call with yourself.": "Nie możesz wykonać połączenia do siebie.", + "You cannot place VoIP calls in this browser.": "Nie możesz przeprowadzić rozmowy głosowej VoIP w tej przeglądarce.", + "You do not have permission to post to this room": "Nie jesteś uprawniony do pisania w tym pokoju", + "You have been banned from %(roomName)s by %(userName)s.": "Zostałeś permanentnie usunięty z pokoju %(roomName)s przez %(userName)s.", + "You have been invited to join this room by %(inviterName)s": "Zostałeś zaproszony do dołączenia do tego pokoju przez %(inviterName)s", + "You have been kicked from %(roomName)s by %(userName)s.": "Zostałeś usunięty z %(roomName)s przez %(userName)s.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Wylogowałeś się ze wszystkich urządzeń i nie będziesz już otrzymywał powiadomień push. Aby ponownie aktywować powiadomienia zaloguj się ponownie na każdym urządzeniu", + "You have disabled URL previews by default.": "Masz domyślnie wyłączone podglądy linków.", + "You have no visible notifications": "Nie masz widocznych powiadomień", + "You may wish to login with a different account, or add this email to this account.": "Możesz chcieć zalogować się z innego konta lub dodać e-mail do tego konta.", + "You must register to use this functionality": "Musisz się zarejestrować aby móc używać tej funkcji", + "You need to be able to invite users to do that.": "Aby to zrobić musisz mieć możliwość zapraszania użytkowników.", + "You need to be logged in.": "Musisz być zalogowany.", + "You need to enter a user name.": "Musisz wpisać nazwę użytkownika.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Twój adres e-mail zdaje się nie być powiązany z żadnym Matrix ID na tym serwerze domowym.", + "Your password has been reset": "Twoje hasło zostało zresetowane", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Zmiana Twojego hasła powiodła się. Nie będziesz otrzymywał powiadomień push na inne urządzenia aż do momentu ponownego zalogowania się na nich", + "You seem to be in a call, are you sure you want to quit?": "Wygląda na to, że prowadzisz z kimś rozmowę; jesteś pewien że chcesz wyjść?", + "You seem to be uploading files, are you sure you want to quit?": "Wygląda na to, że jesteś w trakcie przesyłania plików; jesteś pewien, że chcesz wyjść?", + "You should not yet trust it to secure data": "Na chwilę obecną nie powinieneś ufać mu w kwestii zabezpieczenia danych", + "Set a display name:": "Ustaw nazwę ekranową:", + "This server does not support authentication with a phone number.": "Ten serwer nie wspiera autentykacji za pomocą numeru telefonu.", + "This doesn't look like a valid email address.": "To nie wygląda na poprawny adres e-mail.", + "This doesn't look like a valid phone number.": "To nie wygląda na poprawny numer telefonu.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Nazwa użytkownika może zawierać tylko litery, cyfry, kropki, myślniki i podkreślenia.", + "An unknown error occurred.": "Wystąpił nieznany błąd.", + "I already have an account": "Posiadam już konto", + "Share message history with new users": "Udostępnij historię wiadomości nowym użytkownikom", + "Encrypt room": "Zaszyfruj pokój", + "There are no visible files in this room": "Nie ma widocznych plików w tym pokoju", + "Connectivity to the server has been lost.": "Połączenie z serwerem zostało utracone.", + "bold": "wytłuszczenie", + "italic": "kursywa", + "underline": "podkreślenie", + "code": "kod", + "quote": "cytat", + "Create": "Utwórz", + "Online": "Dostępny", + "Offline": "Niedostępny", + "Add an Integration": "Dodaj integrację", + "Token incorrect": "Niepoprawny token", + "To link to a room it must have an address.": "Aby móc stworzyć link do pokoju musi on mieć swój adres.", + "unencrypted": "niezaszyfrowany", + "Unknown (user, device) pair:": "Nieznana para (użytkownik, urządzenie):", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Nie będziesz mógł cofnąć tej zmiany, ponieważ nadajesz użytkownikowi uprawnienia administratorskie równe Twoim.", + "Your home server does not support device management.": "Twój serwer domowy nie obsługuje zarządzania urządzeniami.", + "Unbans user with given id": "Odblokowuje użytkownika o danym ID", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nie udało się upewnić, że adres na który to zaproszenie zostało wysłane zgadza się z tym adresem, który jest powiązany z twoim kontem.", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Upload an avatar:": "Prześlij awatar:", + "Missing password.": "Brakujące hasło.", + "Passwords don't match.": "Hasła nie zgadzają się.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Za krótkie hasło (min. %(MIN_PASSWORD_LENGTH)s).", + "An error occurred: %(error_string)s": "Wystąpił błąd: %(error_string)s", + "Make Moderator": "Nadaj uprawnienia moderatora", + "Make this room private": "Nadaj temu pokojowi charakter prywatny", + "Sent messages will be stored until your connection has returned.": "Wysłane wiadomości będą przechowywane aż do momentu odzyskania połączenia.", + "(~%(count)s results)": { + "one": "(~%(count)s wynik)", + "other": "(~%(count)s wyników)" + }, + "Active call": "Aktywna rozmowa", + "strike": "przekreślenie", + "bullet": "lista", + "numbullet": "lista numerowana", + "Please select the destination room for this message": "Wybierz pokój docelowy dla tej wiadomości", + "Start automatically after system login": "Uruchom automatycznie po zalogowaniu się do systemu", + "Desktop specific": "Specyficzne dla desktopowej aplikacji klienckiej", + "Analytics": "Analityka", + "Passphrases must match": "Hasła szyfrujące muszą być identyczne", + "Passphrase must not be empty": "Hasło szyfrujące nie może być puste", + "Export room keys": "Eksportuj klucze pokoju", + "Confirm passphrase": "Potwierdź hasło szyfrujące", + "Import room keys": "Importuj klucze pokoju", + "File to import": "Plik do importu", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ten proces pozwala na eksport kluczy do wiadomości otrzymanych w zaszyfrowanych pokojach do pliku lokalnego. Wtedy będzie można importować plik do innego klienta Matrix w przyszłości, tak aby ów klient także mógł rozszyfrować te wiadomości.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ten proces pozwala na import zaszyfrowanych kluczy, które wcześniej zostały eksportowane z innego klienta Matrix. Będzie można odszyfrować każdą wiadomość, którą ów inny klient mógł odszyfrować.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Eksportowany plik będzie chroniony hasłem szyfrującym. Aby odszyfrować plik, wpisz hasło szyfrujące tutaj.", + "You must join the room to see its files": "Należy dołączyć do pokoju by zobaczyć jego pliki", + "Reject all %(invitedRooms)s invites": "Odrzuć wszystkie zaproszenia do %(invitedRooms)s", + "Failed to invite": "Wysłanie zaproszenia nie powiodło się", + "Failed to invite user": "Wysłanie zaproszenia użytkownikowi nie powiodło się", + "Failed to invite the following users to the %(roomName)s room:": "Wysłanie zaproszenia do następujących użytkowników do pokoju %(roomName)s nie powiodło się:", + "Confirm Removal": "Potwierdź usunięcie", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Jesteś pewien że chcesz usunąć to wydarzenie? Pamiętaj, że jeśli usuniesz nazwę pokoju lub aktualizację tematu pokoju, zmiana może zostać cofnięta.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Aby sprawdzić czy to urządzenie jest zaufane, skontaktuj się z jego właścicielem używając innych środków (np. osobiście lub telefonicznie) i zapytaj ich czy klucz, który widzą w ustawieniach użytkownika dla tego urządzenia pasuje do klucza poniżej:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Jeśli klucz pasuje, naciśnij na przycisk \"Zweryfikuj\" poniżej. Jeśli nie, to ktoś inny najprawdopodobniej przejmuje lub podszywa się pod to urządzenie i powinieneś nacisnąć przycisk dodania do czarnej listy.", + "In future this verification process will be more sophisticated.": "W przyszłości proces weryfikacji będzie bardziej skomplikowany.", + "I verify that the keys match": "Upewnię się, że klucze się zgadzają", + "Unable to restore session": "Przywrócenie sesji jest niemożliwe", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Jeśli wcześniej używałeś/aś nowszej wersji Riot, Twoja sesja może być niekompatybilna z tą wersją. Zamknij to okno i powróć do nowszej wersji.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Aktualnie wpisujesz niezweryfikowane urządzenia na czarną listę; aby wysłać wiadomość do tych urządzeń musisz je zweryfikować.", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot zbiera anonimowe dane analityczne, aby umożliwić nam rozwijanie aplikacji.", + "Verifies a user, device, and pubkey tuple": "Weryfikuje użytkownika, urządzenie i krotkę kluczy publicznych", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" zawiera niewidziane przez Ciebie wcześniej urządzenia.", + "ex. @bob:example.com": "np. @jan:example.com", + "This Home Server would like to make sure you are not a robot": "Ten serwer domowy chciałby się upewnić, że nie jesteś robotem", + "Sign in with CAS": "Zaloguj się używając CAS", + "This allows you to use this app with an existing Matrix account on a different home server.": "To umożliwia Ci używanie tej aplikacji wraz z istniejącym kontem Matrix na innym serwerze domowym.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Nastąpiła próba załadowania danego punktu w historii tego pokoju, lecz nie masz uprawnień, by zobaczyć określoną wiadomość.", + "Use compact timeline layout": "Użyj kompaktowego stylu linii czasu", + "You have enabled URL previews by default.": "Masz domyślnie włączone podglądy linków.", + "Please check your email to continue registration.": "Sprawdź swój e-mail, aby kontynuować rejestrację.", + "Please enter the code it contains:": "Wpisz kod, który jest tam zawarty:", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Jeśli nie ustawisz adresu e-mail, nie będzie możliwe zresetowanie Twojego hasła. Kontynuować?", + "You are registering with %(SelectedTeamName)s": "Rejestrujesz się z %(SelectedTeamName)s", + "Custom server": "Serwer niestandardowy", + "Home server URL": "Adres serwera domowego", + "What does this mean?": "Co to znaczy?", + "Error decrypting audio": "Błąd deszyfrowania audio", + "Error decrypting image": "Błąd deszyfrowania obrazu", + "Error decrypting video": "Błąd deszyfrowania wideo", + "Removed or unknown message type": "Usunięto lub nieznany typ wiadomości", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Próbowano załadować konkretny punkt na osi czasu w tym pokoju, ale nie nie można go znaleźć.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Wyeksportowany plik pozwoli każdej osobie będącej w stanie go odczytać na deszyfrację jakichkolwiek zaszyfrowanych wiadomości, które możesz zobaczyć, tak więc zalecane jest zachowanie ostrożności. Aby w tym pomóc, powinieneś/aś wpisać hasło poniżej; hasło to będzie użyte do zaszyfrowania wyeksportowanych danych. Późniejsze zaimportowanie tych danych będzie możliwe tylko po uprzednim podaniu owego hasła.", + " (unsupported)": " (niewspierany)", + "Idle": "Bezczynny", + "Check for update": "Sprawdź aktualizacje", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s zmienił(a) awatar pokoju na ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s usunął(-ęła) awatar pokoju.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s zmienił(a) awatar %(roomName)s", + "This will be your account name on the homeserver, or you can pick a different server.": "To będzie twoja nazwa konta na serwerze domowym; możesz też wybrać inny serwer.", + "If you already have a Matrix account you can log in instead.": "Jeśli już posiadasz konto Matrix możesz się zalogować.", + "Not a valid Riot keyfile": "Niepoprawny plik klucza Riot", + "Authentication check failed: incorrect password?": "Próba autentykacji nieudana: nieprawidłowe hasło?", + "Disable Peer-to-Peer for 1:1 calls": "Wyłącz P2P dla połączeń 1:1", + "Do you want to set an email address?": "Czy chcesz ustawić adres e-mail?", + "To return to your account in future you need to set a password": "By móc powrócić do swojego konta w przyszłości musisz ustawić hasło", + "Share without verifying": "Udostępnij bez weryfikacji", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Dodałeś(-aś) nowe urządzenie '%(displayName)s', które żąda kluczy szyfrujących.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Twoje niezweryfikowane urządzenie '%(displayName)s' żąda kluczy szyfrujących.", + "Encryption key request": "Żądanie klucza szyfrującego", + "Autocomplete Delay (ms):": "Opóźnienie autouzupełniania (ms):", + "Loading device info...": "Wczytywanie informacji o urządzeniu...", + "Example": "Przykład", + "Drop file here to upload": "Upuść plik tutaj, aby go przesłać", + "Automatically replace plain text Emoji": "Automatycznie zastępuj tekstowe emotikony", + "Failed to upload image": "Przesyłanie obrazka nie powiodło się", + "%(count)s new messages": { + "one": "%(count)s nowa wiadomość", + "other": "%(count)s nowych wiadomości" + }, + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Zalecamy Ci przejście przez proces weryfikacyjny dla każdego urządzenia aby potwierdzić, że należy ono do ich prawdziwego właściciela. Możesz jednak wysłać tę wiadomość bez potwierdzania.", + "Unblacklist": "Usuń z czarnej listy", + "Blacklist": "Dodaj do czarnej listy", + "Unverify": "Usuń weryfikację", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Możesz zalogować się do innych serwerów usługi Matrix poprzez podanie innego URL serwera domowego w ustawieniach niestandardowych serwera.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Możesz również ustawić niestandardowy serwer Identity, ale to z reguły nie pozwala na interakcję z użytkowniki w oparciu o ich adres e-mail.", + "Identity server URL": "URL serwera Identity", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Za chwilę zostaniesz przekierowany/a na zewnętrzną stronę w celu powiązania Twojego konta z %(integrationsUrl)s. Czy chcesz kontynuować?", + "URL Previews": "Podglądy linków", + "Ongoing conference call%(supportedText)s.": "Połączenie grupowe %(supportedText)s w toku.", + "Featured Rooms:": "Wyróżnione pokoje:", + "Featured Users:": "Wyróżnieni użytkownicy:", + "Hide avatars in user and room mentions": "Ukryj awatary we wzmiankach użytkowników i pokoi", + "%(widgetName)s widget added by %(senderName)s": "Widżet %(widgetName)s został dodany przez %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Widżet %(widgetName)s został usunięty przez %(senderName)s", + "%(widgetName)s widget modified by %(senderName)s": "Widżet %(widgetName)s został zmodyfikowany przez %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "Sprawdzanie człowieczeństwa jest obecnie niedostępne na aplikacji klienckiej desktop - proszę użyć przeglądarki internetowej", + "Unpin Message": "Odepnij Wiadomość", + "Add rooms to this community": "Dodaj pokoje do tej społeczności", + "Invite to Community": "Zaproszenie do Społeczności", + "Which rooms would you like to add to this community?": "Które pokoje chcesz dodać do tej społeczności?", + "Room name or alias": "Nazwa pokoju lub alias", + "Add to community": "Dodaj do społeczności", + "Call": "Połącz", + "Submit debug logs": "Wyślij dzienniki błędów", + "The version of Riot.im": "Wersja Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Czy jesteś zalogowany, czy nie (nie zapisujemy twojej nazwy użytkownika)", + "Your language of choice": "Twój wybrany język", + "Your homeserver's URL": "Adres URL twojego serwera domowego", + "Your identity server's URL": "Adres URL twojego serwera tożsamości", + "The information being sent to us to help make Riot.im better includes:": "Oto informacje przesyłane do nas, służące do poprawy Riot.im:", + "The platform you're on": "Platforma na której jesteś", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "W tym pokoju są nieznane urządzenia: jeżeli będziesz kontynuować bez ich weryfikacji, możliwe będzie podsłuchiwanie Twojego połączenia.", + "Answer": "Odbierz", + "Review Devices": "Przegląd urządzeń", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Uwaga: każda osoba dodana do Społeczności będzie publicznie widoczna dla każdego, go zna identyfikator społeczności", + "Invite new community members": "Zaproś nowych członków Społeczności", + "Name or matrix ID": "Nazwa lub matrix ID", + "Show these rooms to non-members on the community page and room list?": "Pokazać te pokoje dla osób niebędących członkami na stronie Społeczności oraz liście pokoi?", + "Add rooms to the community": "Dodaj pokoje do Społeczności", + "Failed to invite the following users to %(groupId)s:": "Nie udało się zaprosić poniższych użytkowników do %(groupId)s:", + "Failed to invite users to community": "Nie udało się zaprosić użytkowników do Społeczności", + "Failed to invite users to %(groupId)s": "Nie udało się zaprosić użytkowników do %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Nie udało się dodać poniższych pokoi do %(groupId)s:", + "Restricted": "Ograniczony", + "Ignored user": "Użytkownik ignorowany", + "You are now ignoring %(userId)s": "Ignorujesz teraz %(userId)s", + "You are no longer ignoring %(userId)s": "Nie ignorujesz już %(userId)s", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s zmienił(a) swoją wyświetlaną nazwę na %(displayName)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s zmienił(a) przypiętą wiadomość dla tego pokoju.", + "Message Pinning": "Przypinanie wiadomości", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s oraz %(count)s innych piszą", + "one": "%(names)s oraz jedna inna osoba piszą" + }, + "Send": "Wyślij", + "Disable Emoji suggestions while typing": "Wyłącz podpowiedzi Emoji podczas pisania", + "Hide avatar changes": "Ukryj zmiany awatarów", + "Hide display name changes": "Ukryj zmiany wyświetlanych nazw", + "Disable big emoji in chat": "Wyłącz duże Emoji w czacie", + "Mirror local video feed": "Powiel lokalne wideo", + "Disable Community Filter Panel": "Wyłącz Panel Filtra Społeczności", + "Enable inline URL previews by default": "Włącz domyślny podgląd URL w tekście", + "Enable URL previews for this room (only affects you)": "Włącz podgląd URL dla tego pokoju (dotyczy tylko Ciebie)", + "Enable URL previews by default for participants in this room": "Włącz domyślny podgląd URL dla uczestników w tym pokoju", + "Delete %(count)s devices": { + "other": "Usunięto %(count)s urządzeń", + "one": "Usunięto urządzenie" + }, + "Select devices": "Wybierz urządzenia", + "%(senderName)s sent an image": "%(senderName)s wysłał(a) obrazek", + "%(senderName)s sent a video": "%(senderName)s wysłał(a) wideo", + "%(senderName)s uploaded a file": "%(senderName)s wysłał(a) plik", + "Your key share request has been sent - please check your other devices for key share requests.": "Twoja prośba o podzielenie się kluczem została wysłana - sprawdź swoje inne urządzenie w celu spełnienia prośby.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Prośby o podzielenie się kluczem są wysyłane do Twoich innych urządzeń automatycznie. Jeżeli prośba została odrzucona na innym urządzeniu, kliknij tutaj aby ponownie poprosić o podzielenie się kluczem dla tej sesji.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Jeżeli inne Twoje urządzenia nie mają klucza dla tej wiadomości, nie będziesz w stanie ich odszyfrować.", + "Key request sent.": "Prośba o klucz wysłana.", + "Re-request encryption keys from your other devices.": "Poproś ponownie o klucze szyfrujące z Twojego innego urządzenia.", + "Kick this user?": "Wyrzucić tego użytkownika?", + "Unban this user?": "Odbanować tego użytkownika?", + "Ban this user?": "Zbanować tego użytkownika?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Nie będziesz w stanie odwrócić tej zmiany, ponieważ degradujesz się sam(a), jeżeli jesteś ostatnim użytkownikiem z uprawnieniami w tym pokoju, niemożliwe będzie odzyskanie uprawnień.", + "Ignore": "Ignoruj", + "Mention": "Wspomnij", + "Invite": "Zaproś", + "User Options": "Opcje Użytkownika", + "Send an encrypted reply…": "Wyślij zaszyfrowaną odpowiedź…", + "Send a reply (unencrypted)…": "Wyślij odpowiedź (nieszyfrowaną)…", + "Send an encrypted message…": "Wyślij zaszyfrowaną wiadomość…", + "Send a message (unencrypted)…": "Wyślij wiadomość (niezaszyfrowaną)…", + "Jump to message": "Skocz do wiadomości", + "No pinned messages.": "Brak przypiętych wiadomości.", + "Loading...": "Ładowanie...", + "Pinned Messages": "Przypięte Wiadomości", + "Online for %(duration)s": "Online przez %(duration)s", + "Idle for %(duration)s": "Nieaktywny przez %(duration)s", + "Offline for %(duration)s": "Offline przez %(duration)s", + "Unknown for %(duration)s": "Nieznany przez %(duration)s", + "Unknown": "Nieznany", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Widziane przez %(displayName)s (%(userName)s) o %(dateTime)s", + "No rooms to show": "Brak pokoi do wyświetlenia", + "Unnamed room": "Pokój bez nazwy", + "Guests can join": "Goście mogą dołączyć", + "Remove avatar": "Usuń awatar", + "Drop here to favourite": "Upuść tutaj aby dodać do ulubionych", + "Drop here to restore": "Upuść tutaj aby przywrócić", + "Drop here to demote": "Upuść tutaj aby zdegradować", + "You have been kicked from this room by %(userName)s.": "Zostałeś usunięty z tego pokoju przez %(userName)s.", + "You have been banned from this room by %(userName)s.": "Zostałeś zbanowany z tego pokoju przez %(userName)s.", + "You are trying to access a room.": "Próbujesz uzyskać dostęp do pokoju.", + "To change the room's avatar, you must be a": "Aby zmienić awatar pokoju, musisz być", + "To change the room's name, you must be a": "Aby zmienić nazwę pokoju, musisz być", + "To change the room's main address, you must be a": "Aby zmienić główny adres pokoju, musisz być", + "Fetching third party location failed": "Pobranie lokalizacji zewnętrznej nie powiodło się", + "A new version of Riot is available.": "Dostępna jest nowa wersja Riot.", + "Couldn't load home page": "Nie można załadować strony startowej", + "Send Account Data": "Wyślij dane konta", + "All notifications are currently disabled for all targets.": "Wszystkie powiadomienia są obecnie wyłączone dla wszystkich celów.", + "Uploading report": "Raport wysyłania", + "Sunday": "Niedziela", + "Failed to add tag %(tagName)s to room": "Nie można dodać tagu %(tagName)s do pokoju", + "Notification targets": "Cele powiadomień", + "Failed to set direct chat tag": "Nie udało się ustawić znacznika rozmów bezpośrednich", + "Today": "Dzisiaj", + "Failed to get protocol list from Home Server": "Nie można pobrać listy protokołów z serwera domowego", + "You are not receiving desktop notifications": "Nie otrzymujesz powiadomień na pulpit", + "Friday": "Piątek", + "Update": "Uaktualnienie", + "What's New": "Co nowego", + "Add an email address above to configure email notifications": "Dodaj adres e-mail powyżej, aby skonfigurować powiadomienia e-mailowe", + "Expand panel": "Rozwiń panel", + "On": "Włącz", + "%(count)s Members": { + "other": "%(count)s Członków", + "one": "%(count)s Członek" + }, + "Filter room names": "Filtruj nazwy pokojów", + "Changelog": "Dziennik zmian", + "Waiting for response from server": "Czekam na odpowiedź serwera", + "Leave": "Opuść", + "Send Custom Event": "Wyślij niestandardowe wydarzenie", + "Advanced notification settings": "Zaawansowane ustawienia powiadomień", + "Failed to send logs: ": "Niepowodzenie wysyłki zapisu rozmów ", + "delete the alias.": "usunąć alias.", + "To return to your account in future you need to set a password": "Aby wrócić do swojego konta w przyszłości musisz ustawić hasło ", + "Forget": "Zapomnij", + "World readable": "Całkowicie publiczne", + "#example": "#przykład", + "Hide panel": "Ukryj panel", + "You cannot delete this image. (%(code)s)": "Nie możesz usunąć tego obrazka. (%(code)s)", + "Cancel Sending": "Anuluj wysyłanie", + "Warning": "Ostrzeżenie", + "This Room": "Ten pokój", + "The Home Server may be too old to support third party networks": "Serwer domowy może być za stary dla innych sieci", + "Resend": "Wyślij jeszcze raz", + "Error saving email notification preferences": "Wystąpił błąd podczas zapisywania ustawień powiadomień e-mailowych", + "Messages containing my display name": "Wiadomości zawierające moją wyświetlaną nazwę", + "Messages in one-to-one chats": "Wiadomości w rozmowach jeden-na-jeden", + "Unavailable": "Niedostępny", + "View Decrypted Source": "Pokaż zdeszyfrowane źródło", + "Notes:": "Notatki:", + "remove %(name)s from the directory.": "usuń %(name)s z katalogu.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Powiadomienia o słowach kluczowych spełniają reguły, które nie mogą być tu wyświetlone:", + "Safari and Opera work too.": "Safari i Opera również się sprawdzą.", + "Please set a password!": "Proszę, ustaw hasło!", + "You have successfully set a password!": "Hasło zostało zmienione z powodzeniem!", + "An error occurred whilst saving your email notification preferences.": "Podczas zapisywania ustawień powiadomień e-mail wystąpił błąd.", + "Explore Room State": "Przeglądaj stan pokoju", + "Source URL": "Źródłowy URL", + "Messages sent by bot": "Wiadomości wysłane przez bota", + "Filter results": "Filtruj wyniki", + "Members": "Członkowie", + "No update available.": "Brak aktualizacji.", + "Noisy": "Głośny", + "Files": "Pliki", + "Collecting app version information": "Zbieranie informacji o wersji aplikacji", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Usuń alias %(alias)s i usuń %(name)s z katalogu?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "To pozwoli Ci powrócić do Twojego konta po wylogowaniu i ponownym zalogowaniu się na innych urządzeniach.", + "Keywords": "Słowa kluczowe", + "Enable notifications for this account": "Włącz powiadomienia na tym koncie", + "Directory": "Księga adresowa", + "Invite to this community": "Zaproś do tej społeczności", + "Failed to get public room list": "Nie udało się uzyskać publicznej listy pokojowej", + "Messages containing keywords": "Wiadomości zawierające słowa kluczowe", + "Room not found": "Pokój nie znaleziony", + "Tuesday": "Wtorek", + "Enter keywords separated by a comma:": "Wpisz słowa kluczowe oddzielone przecinkami:", + "Forward Message": "Przekaż wiadomość", + "You have successfully set a password and an email address!": "Z powodzeniem ustawiono hasło i adres e-mail dla Twojego konta!", + "Remove %(name)s from the directory?": "Usunąć %(name)s z katalogu?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot używa wiele zaawansowanych technologii, które nie są dostępne lub są w fazie testów w Twojej przeglądarce.", + "Developer Tools": "Narzędzia programistyczne", + "Preparing to send logs": "Przygotowywanie do wysłania zapisu rozmów", + "Remember, you can always set an email address in user settings if you change your mind.": "Pamiętaj, że zawsze możesz zmienić swój e-mail lub hasło w panelu ustawień użytkownika.", + "Explore Account Data": "Odkryj dane konta", + "All messages (noisy)": "Wszystkie wiadomości (głośno)", + "Saturday": "Sobota", + "I understand the risks and wish to continue": "Rozumiem ryzyko i chcę kontynuować", + "Direct Chat": "Rozmowa bezpośrednia", + "The server may be unavailable or overloaded": "Serwer jest nieosiągalny lub jest przeciążony", + "Reject": "Odrzuć", + "Failed to set Direct Message status of room": "Nie udało się ustawić statusu Rozmów Bezpośrednich dla pokoju", + "Monday": "Poniedziałek", + "Remove from Directory": "Usuń z katalogu", + "Enable them now": "Włącz je teraz", + "Messages containing my user name": "Wiadomości zawierające moją nazwę użytkownika", + "Toolbox": "Przybornik", + "Collecting logs": "Zbieranie dzienników", + "more": "więcej", + "GitHub issue link:": "Link do wątku na GitHubie:", + "You must specify an event type!": "Musisz określić typ wydarzenia!", + "(HTTP status %(httpStatus)s)": "(status HTTP %(httpStatus)s)", + "All Rooms": "Wszystkie pokoje", + "Please install Chrome or Firefox for the best experience.": "Zainstaluj Chrome lub Firefox dla najlepszego doświadczenia.", + "Wednesday": "Środa", + "You cannot delete this message. (%(code)s)": "Nie możesz usunąć tej wiadomości. (%(code)s)", + "Quote": "Cytat", + "Failed to update keywords": "Nie udało się zaktualizować słów kluczowych", + "Send logs": "Wyślij logi", + "All messages": "Wszystkie wiadomości", + "Call invitation": "Zaproszenie do rozmowy", + "Downloading update...": "Pobieranie aktualizacji...", + "State Key": "Klucz stanu", + "Failed to send custom event.": "Wysyłanie niestandardowego wydarzenia nie powiodło się.", + "What's new?": "Co nowego?", + "Notify me for anything else": "Powiadom mnie o całej reszcie", + "When I'm invited to a room": "Kiedy zostanę zaproszony do pokoju", + "Can't update user notification settings": "Nie można zaktualizować ustawień powiadomień użytkownika", + "Notify for all other messages/rooms": "Powiadamiaj o wszystkich innych wiadomośsciach/pokojach", + "Unable to look up room ID from server": "Nie można wyszukać ID pokoju na serwerze", + "Couldn't find a matching Matrix room": "Nie można znaleźć pasującego pokoju Matrix", + "Invite to this room": "Zaproś do tego pokoju", + "Search for a room": "Szukaj pokoju", + "Thursday": "Czwartek", + "Search…": "Szukaj…", + "Logs sent": "Zapis rozmów wysłany", + "Back": "Powrót", + "Reply": "Odpowiedz", + "Show message in desktop notification": "Pokaż wiadomość w notyfikacji na pulpicie", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Dziennik błędów zawiera dane użytkowania aplikacji, w tym: twoją nazwę użytkownika, numery ID, aliasy pokojów i grup które odwiedzałeś i loginy innych użytkowników. Nie zawiera wiadomości.", + "Unhide Preview": "Odkryj podgląd", + "Unable to join network": "Nie można dołączyć do sieci", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Możliwe, że skofigurowałeś je w innym kliencie, niż Riot. Nie możesz ich zmieniać w Riot, ale nadal mają zastosowanie", + "Sorry, your browser is not able to run Riot.": "Przepraszamy, Twoja przeglądarka nie jest w stanie uruchomić Riot.", + "Uploaded on %(date)s by %(user)s": "Wysłane %(date)s przez %(user)s", + "Messages in group chats": "Wiadomości w czatach grupowych", + "Yesterday": "Wczoraj", + "Error encountered (%(errorDetail)s).": "Wystąpił błąd (%(errorDetail)s).", + "Login": "Logowanie", + "Low Priority": "Niski priorytet", + "Unable to fetch notification target list": "Nie można pobrać listy docelowej dla powiadomień", + "Set Password": "Ustaw hasło", + "Enable audible notifications in web client": "Włącz dźwiękowe powiadomienia w kliencie internetowym", + "Off": "Wyłącz", + "Riot does not know how to join a room on this network": "Riot nie wie, jak dołączyć do pokoju w tej sieci", + "Mentions only": "Tylko, gdy wymienieni", + "Failed to remove tag %(tagName)s from room": "Nie udało się usunąć tagu %(tagName)s z pokoju", + "You can now return to your account after signing out, and sign in on other devices.": "Teraz możesz powrócić do swojego konta na innych urządzeniach po wylogowaniu i ponownym zalogowaniu się.", + "Enable desktop notifications": "Włącz powiadomienia", + "Enable email notifications": "Włącz powiadomienia e-mailowe", + "Event Type": "Typ wydarzenia", + "Download this file": "Pobierz plik", + "Pin Message": "Przypnij Wiadomość", + "Failed to change settings": "Nie udało się zmienić ustawień", + "View Community": "Pokaż społeczność", + "Event sent!": "Wydarzenie wysłane!", + "View Source": "Pokaż źródło", + "Event Content": "Zawartość wydarzenia", + "Thank you!": "Dziękujemy!", + "Collapse panel": "Ukryj panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Z Twoją obecną przeglądarką, wygląd oraz wrażenia z używania aplikacji mogą być niepoprawne, a niektóre funkcje wcale nie działać. Kontynuuj jeśli chcesz spróbować, jednak trudno będzie pomóc w przypadku błędów, które mogą nastąpić!", + "Checking for an update...": "Sprawdzanie aktualizacji...", + "There are advanced notifications which are not shown here": "Masz zaawansowane powiadomienia, nie pokazane tutaj", + "e.g. %(exampleValue)s": "np. %(exampleValue)s", + "Always show encryption icons": "Zawsze wyświetlaj ikony szyfrowania", + "Send analytics data": "Wysyłaj dane analityczne", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sg", + "%(duration)sd": "%(duration)sd", + "%(user)s is a %(userRole)s": "%(user)s ma rolę %(userRole)s", + "Members only (since the point in time of selecting this option)": "Tylko członkowie (od momentu włączenia tej opcji)", + "Members only (since they were invited)": "Tylko członkowie (od kiedy zostali zaproszeni)", + "Members only (since they joined)": "Tylko członkowie (od kiedy dołączyli)", + "Copied!": "Skopiowano!", + "Failed to copy": "Kopiowanie nieudane", + "Message removed by %(userId)s": "Wiadomość usunięta przez %(userId)s", + "Message removed": "Wiadomość usunięta", + "An email has been sent to %(emailAddress)s": "Email został wysłany do %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "Wysłano wiadomość tekstową do %(msisdn)s", + "Code": "Kod", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Pomóż nam ulepszyć Riot.im wysyłając anonimowe dane analityczne. Spowoduje to użycie pliku cookie (zobacz naszą Politykę plików cookie).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Pomóż nam ulepszyć Riot.im wysyłając anonimowe dane analityczne. Spowoduje to użycie pliku cookie.", + "Yes, I want to help!": "Tak, chcę pomóc!", + "Warning: This widget might use cookies.": "Uwaga: Ten widżet może używać ciasteczek.", + "Delete Widget": "Usuń widżet", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Usunięcie widżetu usuwa go dla wszystkich użytkowników w tym pokoju. Czy na pewno chcesz usunąć ten widżet?", + "Communities": "Społeczności", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "collapse": "Zwiń", + "expand": "Rozwiń", + "Custom of %(powerLevel)s": "Poziom niestandardowy %(powerLevel)s", + "In reply to ": "W odpowiedzi do ", + "Matrix ID": "Matrix ID", + "email address": "adres e-mail", + "example": "przykład", + "Advanced options": "Opcje zaawansowane", + "To continue, please enter your password:": "Aby kontynuować, proszę wprowadzić swoje hasło:", + "password": "hasło", + "Refresh": "Odśwież", + "Which officially provided instance you are using, if any": "Jakiej oficjalnej instancji używasz, jeżeli w ogóle", + "Every page you use in the app": "Każda strona, której używasz w aplikacji", + "e.g. ": "np. ", + "Your User Agent": "Identyfikator Twojej przeglądarki", + "Your device resolution": "Twoja rozdzielczość ekranu", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Dane identyfikujące, takie jak: pokój, identyfikator użytkownika lub grupy, są usuwane przed wysłaniem na serwer.", + "Who would you like to add to this community?": "Kogo chcesz dodać do tej społeczności?", + "Missing roomId.": "Brak identyfikatora pokoju (roomId).", + "Ignores a user, hiding their messages from you": "Ignoruje użytkownika ukrywając jego wiadomości przed Tobą", + "Stops ignoring a user, showing their messages going forward": "Przestaje ignorować użytkownika, zaczynaj pokazywać jego wiadomości od tego momentu", + "Opens the Developer Tools dialog": "Otwiera narzędzia deweloperskie", + "Encrypting": "Szyfrowanie", + "Encrypted, not sent": "Zaszyfrowane, nie wysłane", + "Disinvite this user?": "Anulować zaproszenie tego użytkownika?", + "Unignore": "Przestań ignorować", + "Jump to read receipt": "Przeskocz do potwierdzenia odczytu", + "Share Link to User": "Udostępnij link do użytkownika", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "W tej chwili nie można odpowiedzieć plikiem, więc zostanie wysłany nie będąc odpowiedzią.", + "Unable to reply": "Nie udało się odpowiedzieć", + "At this time it is not possible to reply with an emote.": "W tej chwili nie można odpowiedzieć emotikoną.", + "Replying": "Odpowiadanie", + "Share room": "Udostępnij pokój", + "Drop here to tag direct chat": "Upuść tutaj aby oznaczyć jako rozmowę bezpośrednią", + "Community Invites": "Zaproszenia do społeczności", + "To change the room's history visibility, you must be a": "Aby zmienić widoczność historii pokoju, musisz być", + "To change the permissions in the room, you must be a": "Aby zmienić uprawnienia pokoju, musisz być", + "To change the topic, you must be a": "Aby zmienić temat, musisz być", + "To modify widgets in the room, you must be a": "Aby modyfikować widżety w tym pokoju, musisz być", + "Banned by %(displayName)s": "Zbanowany przez %(displayName)s", + "To send messages, you must be a": "Aby wysyłać wiadomości, musisz być", + "To invite users into the room, you must be a": "Aby zapraszać użytkowników do pokoju, musisz być", + "To configure the room, you must be a": "Aby konfigurować pokój, musisz być", + "To kick users, you must be a": "Aby wyrzucać użytkowników, musisz być", + "To ban users, you must be a": "Aby blokować użytkowników, musisz być", + "To remove other users' messages, you must be a": "Aby usuwać wiadomości innych użytkowników, musisz być", + "To notify everyone in the room, you must be a": "Aby powiadamiać wszystkich w pokoju, musisz być", + "Muted Users": "Wyciszeni użytkownicy", + "To send events of type , you must be a": "Aby wysyłać zdarzenia typu , musisz być", + "Addresses": "Adresy", + "Invalid community ID": "Błędne ID społeczności", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' nie jest poprawnym ID społeczności", + "New community ID (e.g. +foo:%(localDomain)s)": "Nowe ID społeczności (np. +bla:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "Podglądy linków są domyślnie włączone dla uczestników tego pokoju.", + "URL previews are disabled by default for participants in this room.": "Podglądy linków są domyślnie wyłączone dla uczestników tego pokoju.", + "Username on %(hs)s": "Nazwa użytkownika na %(hs)s", + "Remove from community": "Usuń ze społeczności", + "Disinvite this user from community?": "Anulować zaproszenie tego użytkownika ze społeczności?", + "Remove this user from community?": "Usunąć tego użytkownika ze społeczności?", + "Failed to withdraw invitation": "Nie udało się wycofać zaproszenia", + "Failed to remove user from community": "Nie udało się usunąć użytkownika ze społeczności", + "Filter community members": "Filtruj członków społeczności", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Czy na pewno chcesz usunąć '%(roomName)s' z %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Usunięcie pokoju ze społeczności spowoduje także jego usunięcie ze strony społeczności.", + "Failed to remove room from community": "Nie udało się usunąć pokoju ze społeczności", + "Failed to remove '%(roomName)s' from %(groupId)s": "Nie udało się usunąć '%(roomName)s' z %(groupId)s", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Widoczność '%(roomName)s' w %(groupId)s nie może być zaktualizowana.", + "Visibility in Room List": "Widoczność na liście pokojów", + "Visible to everyone": "Widoczny dla wszystkich", + "Only visible to community members": "Widoczny tylko dla członków społeczności", + "Filter community rooms": "Filtruj pokoje społeczności", + "Something went wrong when trying to get your communities.": "Coś poszło nie tak podczas pobierania Twoich społeczności.", + "You're not currently a member of any communities.": "Nie jesteś obecnie członkiem żadnej społeczności.", + "Minimize apps": "Zminimalizuj aplikacje", + "Reload widget": "Przeładuj widżet", + "Picture": "Zdjęcie", + "Matrix Room ID": "ID pokoju Matrix", + "You have entered an invalid address.": "Podałeś nieprawidłowy adres.", + "Try using one of the following valid address types: %(validTypesList)s.": "Spróbuj użyć jednego z następujących poprawnych typów adresów: %(validTypesList)s.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Błędy Riot śledzone są na GitHubie: utwórz nowe zgłoszenie.", + "Community IDs cannot be empty.": "ID społeczności nie może być puste.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ID społeczności może zawierać tylko znaki a-z, 0-9 lub '=_-./'", + "Something went wrong whilst creating your community": "Coś poszło nie tak podczas tworzenia Twojej społeczności", + "Create Community": "Utwórz społeczność", + "Community Name": "Nazwa społeczności", + "Community ID": "ID społeczności", + "Block users on other matrix homeservers from joining this room": "Blokuj użytkowników z innych serwerów Matrix przed dołączaniem do tego pokoju", + "This setting cannot be changed later!": "Tego ustawienia nie można zmienić później!", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "To sprawi, że Twoje konto stanie się na stałe niezdatne do użytku. Nie będziesz mógł się zalogować i nikt nie będzie mógł ponownie zarejestrować tego samego identyfikatora użytkownika. Spowoduje to, że Twoje konto opuści wszystkie pokoje, w których uczestniczy, i usunie dane Twojego konta z serwera tożsamości. Ta czynność jest nieodwracalna.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Dezaktywacja konta domyślnie nie powoduje, że skasowania wysłanych wiadomości. Jeśli chcesz, abyśmy zapomnieli o Twoich wiadomościach, zaznacz pole poniżej.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Widoczność wiadomości w Matrix jest podobna do wiadomości e-mail. Nasze zapomnienie wiadomości oznacza, że wysłane wiadomości nie będą udostępniane żadnym nowym lub niezarejestrowanym użytkownikom, ale zarejestrowani użytkownicy, którzy już mają dostęp do tych wiadomości, nadal będą mieli dostęp do ich kopii.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Proszę zapomnieć o wszystkich wiadomościach, które wysłałem, gdy moje konto jest wyłączone (Ostrzeżenie: spowoduje to, że przyszli użytkownicy zobaczą niepełny obraz rozmów)", + "Log out and remove encryption keys?": "Wylogować i usunąć klucze szyfrujące?", + "Clear Storage and Sign Out": "Wyczyść pamięć i wyloguj się", + "Send Logs": "Wyślij dzienniki", + "We encountered an error trying to restore your previous session.": "Napotkaliśmy błąd podczas przywracania poprzedniej sesji.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Wyczyszczenie pamięci przeglądarki może rozwiązać problem, ale wyloguje Cię i spowoduje, że jakakolwiek zaszyfrowana historia czatu stanie się nieczytelna.", + "Share Room": "Udostępnij pokój", + "Link to most recent message": "Link do najnowszej wiadomości", + "Share User": "Udostępnij użytkownika", + "Share Community": "Udostępnij Społeczność", + "Share Room Message": "Udostępnij wiadomość w pokoju", + "Link to selected message": "Link do zaznaczonej wiadomości", + "COPY": "KOPIUJ", + "Unable to reject invite": "Nie udało się odrzucić zaproszenia", + "Share Message": "Udostępnij wiadomość", + "Collapse Reply Thread": "Zwiń wątek odpowiedzi", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

Strona HTML dla Twojej Społeczności

\n

\n Skorzystaj z długiego opisu aby wprowadzić nowych członków do Społeczności lub rozpowszechnić ważne linki.\n

\n

\n Możesz nawet używać tagów 'img'.\n

\n", + "Add rooms to the community summary": "Dodaj pokoje do podsumowania Społeczności", + "Which rooms would you like to add to this summary?": "Które pokoje chcesz dodać do tego podsumowania?", + "Add to summary": "Dodaj do podsumowania", + "Failed to add the following rooms to the summary of %(groupId)s:": "Nie udało się dodać następujących pokojów do podsumowania %(groupId)s:", + "Add a Room": "Dodaj pokój", + "Failed to remove the room from the summary of %(groupId)s": "Nie udało się usunąć pokoju z podsumowania %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Pokój '%(roomName)s' nie mógł być usunięty z podsumowania.", + "Add users to the community summary": "Dodaj użytkowników do podsumowania Społeczności", + "Who would you like to add to this summary?": "Kogo chcesz dodać do tego podsumowania?", + "Failed to add the following users to the summary of %(groupId)s:": "Nie udało się dodać następujących użytkowników do podsumowania %(groupId)s:", + "Add a User": "Dodaj użytkownika", + "Failed to remove a user from the summary of %(groupId)s": "Nie udało się usunąć użytkownika z podsumowania %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Użytkownik '%(displayName)s' nie mógł być usunięty z podsumowania.", + "Failed to update community": "Nie udało się zaktualizować Społeczności", + "Unable to accept invite": "Nie udało się zaakceptować zaproszenia", + "Unable to join community": "Nie udało się dołączyć do Społeczności", + "Leave Community": "Opuść Społeczność", + "Leave %(groupName)s?": "Opuścić %(groupName)s?", + "Unable to leave community": "Nie udało się opuścić Społeczności", + "Community Settings": "Ustawienia Społeczności", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Zmiany nazwy oraz awataru Twojej Społeczności mogą nie być widoczne przez innych użytkowników nawet przez 30 minut.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Te pokoje są wyświetlane członkom społeczności na stronie społeczności. Członkowie społeczności mogą dołączyć do pokoi, klikając je.", + "%(inviter)s has invited you to join this community": "%(inviter)s zaprosił Cię do przyłączenia się do tej Społeczności", + "Join this community": "Dołącz do tej Społeczności", + "Leave this community": "Opuść tę Społeczność", + "You are an administrator of this community": "Jesteś administratorem tej Społeczności", + "You are a member of this community": "Jesteś członkiem tej społeczności", + "Who can join this community?": "Kto może dołączyć do tej Społeczności?", + "Everyone": "Każdy", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Twoja Społeczność nie ma długiego opisu, strony HTML, która będzie wyświetlana członkom społeczności.
Kliknij tutaj, aby otworzyć ustawienia i nadać jej jakąś!", + "Long Description (HTML)": "Długi opis (HTML)", + "Description": "Opis", + "Community %(groupId)s not found": "Społeczność %(groupId)s nie znaleziona", + "This Home server does not support communities": "Ten serwer domowy nie wspiera Społeczności", + "Failed to load %(groupId)s": "Nie udało się załadować %(groupId)s", + "This room is not public. You will not be able to rejoin without an invite.": "Ten pokój nie jest publiczny. Nie będziesz w stanie do niego dołączyć bez zaproszenia.", + "Can't leave Server Notices room": "Nie można opuścić pokoju powiadomień serwera", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Ten pokój jest używany do ważnych wiadomości z serwera domowego, więc nie możesz go opuścić.", + "Terms and Conditions": "Warunki użytkowania", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Aby kontynuować używanie serwera domowego %(homeserverDomain)s musisz przejrzeć i zaakceptować nasze warunki użytkowania.", + "Review terms and conditions": "Przejrzyj warunki użytkowania", + "Old cryptography data detected": "Wykryto stare dane kryptograficzne", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Dane ze starszej wersji Riot zostały wykryte. Spowoduje to błędne działanie kryptografii typu end-to-end w starszej wersji. Wiadomości szyfrowane end-to-end wymieniane ostatnio podczas korzystania ze starszej wersji mogą być niemożliwe do odszyfrowywane w tej wersji. Może to również spowodować niepowodzenie wiadomości wymienianych z tą wersją. Jeśli wystąpią problemy, wyloguj się i zaloguj ponownie. Aby zachować historię wiadomości, wyeksportuj i ponownie zaimportuj klucze.", + "Your Communities": "Twoje Społeczności", + "Did you know: you can use communities to filter your Riot.im experience!": "Czy wiesz, że: możesz używać Społeczności do filtrowania swoich doświadczeń z Riot.im!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Aby ustawić filtr, przeciągnij awatar Społeczności do panelu filtra po lewej stronie ekranu. Możesz kliknąć awatar w panelu filtra w dowolnym momencie, aby zobaczyć tylko pokoje i osoby powiązane z tą społecznością.", + "Error whilst fetching joined communities": "Błąd podczas pobierania dołączonych społeczności", + "Create a new community": "Utwórz nową Społeczność", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Utwórz Społeczność, aby grupować użytkowników i pokoje! Zbuduj niestandardową stronę główną, aby zaznaczyć swoją przestrzeń we wszechświecie Matrix.", + "Show devices, send anyway or cancel.": "Pokaż urządzenia, wyślij mimo to lub anuluj.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Nikogo tu nie ma! Czy chcesz zaprosić inne osoby lub przestać ostrzegać o pustym pokoju?", + "Clear filter": "Wyczyść filtr", + "Light theme": "Jasny motyw", + "Dark theme": "Ciemny motyw", + "Status.im theme": "Motyw Status.im", + "Ignored Users": "Ignorowani użytkownicy", + "Debug Logs Submission": "Wysyłanie dzienników błędów", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Jeśli zgłosiłeś błąd za pośrednictwem GitHuba, dzienniki błędów mogą nam pomóc wyśledzić problem. Dzienniki błędów zawierają dane o użytkowaniu aplikacji, w tym nazwę użytkownika, identyfikatory lub aliasy odwiedzonych pomieszczeń lub grup oraz nazwy użytkowników innych użytkowników. Nie zawierają wiadomości.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Prywatność jest dla nas ważna, dlatego nie gromadzimy żadnych danych osobowych ani danych identyfikujących w naszych analizach.", + "Learn more about how we use analytics.": "Dowiedz się więcej co analizujemy.", + "No Audio Outputs detected": "Nie wykryto wyjść audio", + "Audio Output": "Wyjście audio", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "E-mail został wysłany na adres %(emailAddress)s. Gdy otworzysz link, który zawiera, kliknij poniżej.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Zauważ proszę, że logujesz się na serwer %(hs)s, nie matrix.org.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Ten serwer domowy nie oferuje żadnych trybów logowania wspieranych przez Twojego klienta.", + "Try the app first": "Najpierw wypróbuj aplikację", + "Sign in to get started": "Zaloguj się, aby rozpocząć", + "Notify the whole room": "Powiadom cały pokój", + "Room Notification": "Powiadomienia pokoju", + "Call Anyway": "Zadzwoń mimo to", + "Answer Anyway": "Odpowiedz mimo to", + "Demote yourself?": "Zdegradować siebie?", + "Demote": "Zdegraduj", + "Hide Stickers": "Ukryj Naklejki", + "Show Stickers": "Pokaż Naklejki", + "The email field must not be blank.": "Pole email nie może być puste.", + "The user name field must not be blank.": "Pole nazwy użytkownika nie może być puste.", + "The phone number field must not be blank.": "Pole numeru telefonu nie może być puste.", + "The password field must not be blank.": "Pole hasła nie może być puste.", + "Call Failed": "Nieudane połączenie", + "You have no historical rooms": "Nie masz żadnych historycznych pokoi", + "Flair": "Wyróżnik społeczności", + "Showing flair for these communities:": "Wyświetlanie wyróżników dla tych społeczności:", + "This room is not showing flair for any communities": "Ten pokój nie wyświetla wyróżników dla żadnych społeczności", + "Flair will appear if enabled in room settings": "Wyróżnik pojawi się, jeśli został włączony w ustawieniach pokoju", + "Flair will not appear": "Wyróżnik nie wyświetli się", + "%(severalUsers)sjoined %(count)s times": { + "one": "%(severalUsers)sdołączył" + }, + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "one": "Wyślij ponownie wiadomość lub anuluj wiadomość." + }, + "was invited %(count)s times": { + "other": "został zaproszony %(count)s razy", + "one": "został zaproszony" + }, + "was banned %(count)s times": { + "one": "został zablokowany" + }, + "was kicked %(count)s times": { + "one": "został wyrzucony" + }, + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Niezależnie od tego, czy używasz trybu Richtext edytora tekstu w formacie RTF", + "Call in Progress": "Łączenie w toku", + "Permission Required": "Wymagane Pozwolenie", + "Registration Required": "Wymagana Rejestracja", + "You need to register to do this. Would you like to register now?": "Musisz się zarejestrować, aby to zrobić. Czy chcesz się teraz zarejestrować?", + "underlined": "podkreślenie", + "deleted": "przekreślenie", + "numbered-list": "lista numerowana", + "bulleted-list": "wykropkowana lista", + "block-quote": "blok cytowany", + "A conference call could not be started because the intgrations server is not available": "Połączenie grupowe nie może zostać rozpoczęte, ponieważ serwer jest niedostępny", + "A call is currently being placed!": "W tej chwili trwa rozmowa!", + "A call is already in progress!": "W tej chwili trwa połączenie!", + "You do not have permission to start a conference call in this room": "Nie posiadasz permisji do rozpoczęcia rozmowy grupowej w tym pokoju", + "Unignored user": "Nieignorowany użytkownik", + "Forces the current outbound group session in an encrypted room to be discarded": "Wymusza odrzucenie bieżącej sesji grupy wychodzącej w zaszyfrowanym pokoju", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s dodał(a) %(addedAddresses)s jako adres tego pokoju.", + "one": "%(senderName)s dodał(a) %(addedAddresses)s jako adres tego pokoju." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s usunął(-ęła) %(removedAddresses)s jako adres tego pokoju.", + "one": "%(senderName)s usunął(-ęła) %(removedAddresses)s jako adres tego pokoju." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s dodał %(addedAddresses)s i %(removedAddresses)s usunął adresy z tego pokoju.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s ustawił(a) główny adres dla tego pokoju na %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s usunął(-ęła) główny adres tego pokoju.", + "This homeserver has hit its Monthly Active User limit.": "Ten serwer osiągnął miesięczny limit aktywnego użytkownika.", + "This homeserver has exceeded one of its resource limits.": "Ten serwer przekroczył jeden z limitów.", + "Please contact your service administrator to continue using the service.": "Proszę, skontaktuj się z administratorem aby korzystać dalej z funkcji.", + "Unable to connect to Homeserver. Retrying...": "Nie można się połączyć z serwerem. Ponawanianie...", + "Sorry, your homeserver is too old to participate in this room.": "Przepraszamy, twój serwer jest zbyt stary by wziąć udział w tym pokoju.", + "Please contact your homeserver administrator.": "Proszę o kontakt z administratorem serwera.", + "Increase performance by only loading room members on first view": "Zwiększ wydajność, ładując tylko członków pokoju w pierwszym widoku", + "Enable widget screenshots on supported widgets": "Włącz widżety zrzutów ekranów na obsługiwanych widżetach", + "Show empty room list headings": "Pokaż nagłówki z pustym pokojem", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "W zaszyfrowanych pokojach, takich jak ten, podgląd adresów URL jest domyślnie wyłączony, aby upewnić się, że serwer (w którym generowane są podglądy) nie może zbierać informacji o linkach widocznych w tym pokoju.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Gdy ktoś umieści URL w wiadomości, można wyświetlić podgląd adresu URL, aby podać więcej informacji o tym łączu, takich jak tytuł, opis i obraz ze strony internetowej.", + "This event could not be displayed": "Ten event nie może zostać wyświetlony", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s przez %(browserName)s na %(osName)s", + "Riot is not supported on mobile web. Install the app?": "Riot nie jest obsługiwany przez przeglądarki mobilne. Zainstaluj aplikację?", + "Riot Desktop on %(platformName)s": "Riot Desktop na %(platformName)s", + "Unknown device": "Nieznane urządzenie", + "You need to be using HTTPS to place a screen-sharing call.": "Musisz używać bezpiecznego protokołu HTTPS aby użyć połączenia współdzielenia ekranu.", + "Welcome to Riot.im": "Witamy w Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Zdecentralizowany, szyfrowany czat & współpraca oparta na [matrix]", + "Search the room directory": "Przeszukaj katalog pokojów", + "Chat with Riot Bot": "Rozmowa z Botem Riota", + "Get started with some tips from Riot Bot!": "Rozpocznij z wskazówkami Riot Bota!", + "General discussion about Matrix and Riot": "Ogólna rozmowa o Matrix i Riot", + "Discussion of all things Matrix!": "Rozmowa o wszystkich sprawach Matrixowych!", + "Matrix technical discussions": "Dyskusje techniczne Matrixa", + "Riot/Web & Desktop chat": "Czat o Riot/Web i Desktop", + "Riot/iOS & matrix-ios-sdk chat": "Czat o Riot/iOS i matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Czat o Riot/Android i matrix-android-sdk", + "Running Matrix services": "Utrzymywanie usług Matrix", + "Community-run support for Synapse": "Wsparcie społeczności dla Synapse", + "Admin support for Dendrite": "Wsparcie administratorskie dla Dendrite", + "Announcements about Synapse releases": "Ogłoszenia na temat Synapse", + "Support for those using and running matrix-appservice-irc": "Wsparcie dla hostujących i korzystających z matrix-appservice-irc", + "Building services on Matrix": "Tworzenie usług w oparciu o Matrix", + "Support for those using the Matrix spec": "Wsparcie dla używających specyfikacji Matrix", + "Design and implementation of E2E in Matrix": "Projektowanie i implementacja szyfrowania klient-klient (end-to-end) w Matrix", + "Implementing VR services with Matrix": "Implementowanie usług wirtualnej rzeczywistości w oparciu o Matrix", + "Implementing VoIP services with Matrix": "Implementowanie usług telefonii internetowej VoIP w oparciu o Matrix", + "Discussion of the Identity Service API": "Dyskusja na temat API Identity Service", + "Support for those using, running and writing other bridges": "Wsparcie dla używających, utrzymujących i piszących inne mosty", + "Contributing code to Matrix and Riot": "Współtworzenie kodu do Matrix lub Riot", + "Dev chat for the Riot/Web dev team": "Czat deweloperów zespołu Riot/Web", + "Dev chat for the Dendrite dev team": "Czat deweloperów zespołu Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix ma wiele, już działających pokoi, połączonych z istniejącymi sieciami, takimi jak Slack, IRC lub Gitter, a także wiele zupełnie niezależnych. Możesz przejrzeć je wszystkie w spisie pokoi!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Możesz skorzystać z opcji niestandardowego serwera, aby zalogować się na inne serwery Matrix, podając inny adres URL serwera domowego.
Pozwala to na używanie Riot z istniejącym kontem Matrix na innym serwerze domowym.

Możesz również ustawić niestandardowy serwer tożsamości, ale nie będziesz w stanie zapraszać użytkowników przez adres e-mail ani otrzymywać zaproszeń na adres e-mail.", + "Co-ordination for Riot translators": "Koordynacja tłumaczy Riot" +} \ No newline at end of file diff --git a/riot/i18n/pt.json b/riot/i18n/pt.json new file mode 100644 index 0000000..ec78988 --- /dev/null +++ b/riot/i18n/pt.json @@ -0,0 +1,888 @@ +{ + "Account": "Conta", + "Add email address": "Adicionar endereço de email", + "Add phone number": "Adicionar número de telefone", + "Admin": "Administrador", + "Advanced": "Avançado", + "Algorithm": "Algoritmo", + "New passwords don't match": "As novas senhas não conferem", + "A new password must be entered.": "Uma nova senha precisa ser informada.", + "Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes", + "Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes", + "Are you sure you want to reject the invitation?": "Você tem certeza que deseja rejeitar este convite?", + "Are you sure you want to upload the following files?": "Tem a certeza que quer enviar os seguintes ficheiros?", + "Banned users": "Usuárias/os banidas/os", + "Bans user with given id": "Banir usuários com o identificador informado", + "Blacklisted": "Bloqueado", + "Bulk Options": "Opcões de Batelada", + "Can't load user settings": "Não é possível carregar configurações de usuário", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s mudou o tópico para \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "As mudanças sobre quem pode ler o histórico da sala só serão aplicadas às mensagens futuras nesta sala", + "Changes your display nickname": "Troca o seu apelido", + "Claimed Ed25519 fingerprint key": "Chave reivindicada da Impressão Digital Ed25519", + "Clear Cache and Reload": "Limpar Memória Cache e Recarregar", + "Clear Cache": "Limpar Memória Cache", + "Click here to fix": "Clique aqui para resolver isso", + "Commands": "Comandos", + "Confirm password": "Confirme a nova senha", + "Confirm your new password": "Confirme a nova senha", + "Continue": "Continuar", + "Could not connect to the integration server": "Não foi possível conectar ao servidor de integrações", + "Create an account": "Criar uma conta", + "Create Room": "Criar Sala", + "Cryptography": "Criptografia", + "Current password": "Senha atual", + "Curve25519 identity key": "Chave de Indetificação Curve25519", + "Deactivate Account": "Desativar conta", + "Deactivate my account": "Desativar minha conta", + "Decryption error": "Erro de descriptografia", + "Default": "Padrão", + "Deops user with given id": "Retirar função de moderador do usuário com o identificador informado", + "Device ID": "Identificador do dispositivo", + "Devices will not yet be able to decrypt history from before they joined the room": "Os dispositivos não serão ainda capazes de descriptografar o histórico anterior à sua entrada na sala", + "Display name": "Nome", + "Displays action": "Visualizar atividades", + "Ed25519 fingerprint": "Impressão Digital Ed25519", + "Email, name or matrix ID": "Email, nome ou ID matrix", + "Emoji": "Emoji", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Mensagens criptografadas não serão visíveis em clientes que ainda não implementaram criptografia", + "Encrypted room": "Sala criptografada", + "Encryption is enabled in this room": "Criptografia está habilitada nesta sala", + "Encryption is not enabled in this room": "Criptografia não está habilitada nesta sala", + "End-to-end encryption information": "Informação criptografada ponta-a-ponta", + "End-to-end encryption is in beta and may not be reliable": "A criptografia ponta a ponta está em estágio beta e não deve ser totalmente confiável", + "Error": "Erro", + "Event information": "Informação do evento", + "Export E2E room keys": "Exportar chaves ponta-a-ponta da sala", + "Failed to change password. Is your password correct?": "Falha ao alterar a palavra-passe. A sua palavra-passe está correta?", + "Failed to leave room": "Falha ao tentar deixar a sala", + "Failed to reject invitation": "Falha ao tentar rejeitar convite", + "Failed to set avatar.": "Falha ao tentar definir foto do perfil.", + "Failed to unban": "Não foi possível desfazer o banimento", + "Failed to upload file": "Falha ao enviar o ficheiro", + "Favourite": "Favorito", + "Favourites": "Favoritos", + "Filter room members": "Filtrar integrantes da sala", + "Forget room": "Esquecer sala", + "Forgot your password?": "Esqueceu sua senha?", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Por segurança, deslogar irá remover qualquer chave de criptografia ponta-a-ponta deste navegador. Caso deseje descriptografar o histórico das suas conversas E2E em sessões Riot futuras, por favor exporte as chaves da sala para sua garantia.", + "For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.", + "Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.", + "Hangup": "Desligar", + "Historical": "Histórico", + "Homeserver is": "Servidor padrão é", + "Identity Server is": "O servidor de identificação é", + "I have verified my email address": "Eu verifiquei o meu endereço de email", + "Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala", + "Invalid Email Address": "Endereço de email inválido", + "Invite new room members": "Convidar novas pessoas para ingressar na sala", + "Invites": "Convidar", + "Invites user with given id to current room": "Convidar usuários com um dado identificador para esta sala", + "Sign in with": "Quero entrar", + "Joins room with given alias": "Entra na sala com o nome informado", + "Kicks user with given id": "Remove usuário com o identificador informado", + "Labs": "Laboratório", + "Leave room": "Sair da sala", + "Logout": "Sair", + "Low priority": "Baixa prioridade", + "Manage Integrations": "Gerenciar integrações", + "Mobile phone number": "Telefone celular", + "Moderator": "Moderador/a", + "Name": "Nome", + "Never send encrypted messages to unverified devices from this device": "Nunca envie mensagens criptografada para um dispositivo não verificado a partir deste dispositivo", + "Never send encrypted messages to unverified devices in this room from this device": "Nunca envie mensagens criptografadas para dispositivos não verificados nesta sala a partir deste dispositivo", + "New password": "Nova senha", + "New passwords must match each other.": "As novas senhas informadas precisam ser idênticas.", + "none": "nenhum", + "Notifications": "Notificações", + "": "", + "NOT verified": "NÃO verificado", + "No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Assim que a criptografia é ativada para uma sala, ela não poderá ser desativada novamente (ainda)", + "Only people who have been invited": "Apenas pessoas que tenham sido convidadas", + "Password": "Senha", + "Passwords can't be empty": "As senhas não podem estar em branco", + "People": "Pessoas", + "Permissions": "Permissões", + "Phone": "Telefone", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu email e clique no link enviado. Quando finalizar este processo, clique para continuar.", + "Privacy warning": "Alerta sobre privacidade", + "Privileged Users": "Usuárias/os privilegiadas/os", + "Profile": "Perfil", + "Refer a friend to Riot:": "Recomendar Riot a um amigo:", + "Reject invitation": "Rejeitar convite", + "Remove Contact Information?": "Remover informação de contato?", + "Remove": "Remover", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado.", + "Return to login screen": "Retornar à tela de login", + "Room Colour": "Cores da sala", + "Room name (optional)": "Título da Sala (opcional)", + "Rooms": "Salas", + "Scroll to bottom of page": "Ir para o fim da página", + "Scroll to unread messages": "Rolar para baixo para ver as mensagens não lidas", + "Searches DuckDuckGo for results": "Buscar por resultados no buscador DuckDuckGo", + "Sender device information": "Informação do dispositivo emissor", + "Send Invites": "Enviar convites", + "Send Reset Email": "Enviar email para redefinição de senha", + "Server may be unavailable or overloaded": "Servidor pode estar indisponível ou sobrecarregado", + "Server may be unavailable, overloaded, or you hit a bug.": "O servidor pode estar indisponível ou sobrecarregado, ou então você encontrou uma falha no sistema.", + "Session ID": "Identificador de sessão", + "Settings": "Configurações", + "Show panel": "Mostrar painel", + "Signed Out": "Deslogar", + "Sign in": "Entrar", + "Sign out": "Sair", + "Someone": "Alguém", + "Start a chat": "Começar uma conversa", + "Start Chat": "Começar conversa", + "Success": "Sucesso", + "The default role for new room members is": "O papel padrão para novas/os integrantes da sala é", + "The email address linked to your account must be entered.": "O endereço de email relacionado a sua conta precisa ser informado.", + "The visibility of existing history will be unchanged": "A visibilidade do histórico atual não será alterada", + "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de email válido", + "This is a preview of this room. Room interactions have been disabled": "Esta é uma pré visualização desta sala. As interações com a sala estão desabilitadas", + "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", + "This room's internal ID is": "O ID interno desta sala é", + "To reset your password, enter the email address linked to your account": "Para redefinir sua senha, entre com o email da sua conta", + "Unable to add email address": "Não foi possível adicionar endereço de email", + "Unable to remove contact information": "Não foi possível remover informação de contato", + "Unable to verify email address.": "Não foi possível verificar o endereço de email.", + "Unban": "Desfazer banimento", + "Unencrypted room": "Sala não criptografada", + "unencrypted": "não criptografado", + "unknown device": "dispositivo desconhecido", + "unknown error code": "código de erro desconhecido", + "Upload avatar": "Enviar icone de perfil de usuário", + "Upload Files": "Enviar arquivos", + "Upload file": "Enviar arquivo", + "User ID": "Identificador de Usuário", + "User Interface": "Interface de usuário", + "User name": "Nome de usuária/o", + "Users": "Usuários", + "Verification Pending": "Verificação pendente", + "Verification": "Verificação", + "verified": "verificado", + "Video call": "Chamada de vídeo", + "Voice call": "Chamada de voz", + "VoIP conference finished.": "Conferência VoIP encerrada.", + "VoIP conference started.": "Conferência VoIP iniciada.", + "(warning: cannot be disabled again!)": "(atenção: esta operação não poderá ser desfeita depois!)", + "Who can access this room?": "Quem pode acessar esta sala?", + "Who can read history?": "Quem pode ler o histórico da sala?", + "Who would you like to add to this room?": "Quais pessoas você gostaria de adicionar a esta sala?", + "Who would you like to communicate with?": "Com quem você gostaria de se comunicar?", + "You do not have permission to post to this room": "Você não tem permissão de postar nesta sala", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Você foi desconectada/o de todos os dispositivos e portanto não receberá mais notificações no seu celular ou no computador. Para reativar as notificações, entre novamente em cada um dos dispositivos que costuma usar", + "You have no visible notifications": "Voce não possui notificações visíveis", + "Your password has been reset": "Sua senha foi redefinida", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações em outros dispositivos até que você logue novamente por eles", + "You should not yet trust it to secure data": "Você não deve confiar nela ainda para preservar seus dados", + "Sun": "Dom", + "Mon": "Seg", + "Tue": "Ter", + "Wed": "Qua", + "Thu": "Qui", + "Fri": "Sex", + "Sat": "Sáb", + "Jan": "Jan", + "Feb": "Fev", + "Mar": "Mar", + "Apr": "Abr", + "May": "Mai", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Ago", + "Sep": "Set", + "Oct": "Out", + "Nov": "Nov", + "Dec": "Dez", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s às %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s às %(time)s", + "%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.", + "%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s estão escrevendo", + "%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.", + "Call Timeout": "Tempo esgotado. Chamada encerrada", + "%(senderName)s changed their profile picture.": "%(senderName)s alterou sua imagem de perfil.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s.", + "click to reveal": "clique para ver", + "Conference call failed.": "Chamada de conferência falhou.", + "Conference calling is in development and may not be reliable.": "Chamadas de conferência estão em desenvolvimento e portanto podem não funcionar.", + "Conference calls are not supported in encrypted rooms": "Chamadas de conferência não são possíveis em salas criptografadas", + "Conference calls are not supported in this client": "Chamadas de conferência não são possíveis neste navegador", + "/ddg is not a command": "/ddg não é um comando", + "Drop here to tag %(section)s": "Arraste aqui para marcar como %(section)s", + "%(senderName)s ended the call.": "%(senderName)s finalizou a chamada.", + "Existing Call": "Chamada em andamento", + "Failed to send email": "Falha ao enviar email", + "Failed to send request.": "Não foi possível mandar requisição.", + "Failed to set up conference call": "Não foi possível montar a chamada de conferência", + "Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email", + "Failure to create room": "Não foi possível criar a sala", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.", + "%(displayName)s is typing": "%(displayName)s está escrevendo", + "%(targetName)s joined the room.": "%(targetName)s entrou na sala.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.", + "%(targetName)s left the room.": "%(targetName)s saiu da sala.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando foram convidados.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando entraram.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s deixou o histórico futuro da sala visível para todas as pessoas da sala.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s deixou o histórico futuro da sala visível para qualquer pessoa.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s deixou o histórico futuro da sala visível para desconhecido (%(visibility)s).", + "Missing room_id in request": "Faltou o id da sala na requisição", + "Missing user_id in request": "Faltou o id de usuário na requisição", + "(not supported by this browser)": "(não é compatível com este navegador)", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.", + "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", + "Reason": "Razão", + "%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removeu sua imagem de perfil.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s está solicitando uma conferência de voz.", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot não tem permissões para enviar notificações a você - por favor, verifique as configurações do seu navegador", + "Riot was not given permission to send notifications - please try again": "Riot não tem permissões para enviar notificações a você - por favor, tente novamente", + "Room %(roomId)s not visible": "A sala %(roomId)s não está visível", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.", + "%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.", + "This email address is already in use": "Este endereço de email já está sendo usado", + "This email address was not found": "Este endereço de email não foi encontrado", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "O arquivo '%(fileName)s' ultrapassa o limite de tamanho que nosso servidor permite enviar", + "The file '%(fileName)s' failed to upload": "Não foi possível enviar o arquivo '%(fileName)s", + "The remote side failed to pick up": "Houve alguma falha que não permitiu a outra pessoa atender à chamada", + "This room is not recognised.": "Esta sala não é reconhecida.", + "These are experimental features that may break in unexpected ways": "Estas são funcionalidades experimentais que podem apresentar falhas", + "This phone number is already in use": "Este número de telefone já está sendo usado", + "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s desfez o banimento de %(targetName)s.", + "Unable to capture screen": "Não foi possível capturar a imagem da tela", + "Unable to enable Notifications": "Não foi possível ativar as notificações", + "Upload Failed": "O envio falhou", + "Usage": "Uso", + "Use with caution": "Use com cautela", + "VoIP is unsupported": "Chamada de voz não permitida", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.", + "You are already in a call.": "Você já está em uma chamada.", + "You are trying to access %(roomName)s.": "Você está tentando acessar a sala %(roomName)s.", + "You cannot place a call with yourself.": "Você não pode iniciar uma chamada.", + "You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.", + "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", + "You need to be logged in.": "Você tem que estar logado.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de email não parece estar associado a uma conta de usuária/o Matrix neste servidor.", + "Set a display name:": "Defina um nome público para você:", + "Upload an avatar:": "Envie uma imagem de perfil para identificar você:", + "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", + "Missing password.": "Faltou a senha.", + "Passwords don't match.": "As senhas não conferem.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "A senha é muito curta (o mínimo é de %(MIN_PASSWORD_LENGTH)s caracteres).", + "This doesn't look like a valid email address.": "Este endereço de email não parece ser válido.", + "This doesn't look like a valid phone number.": "Este número de telefone não parece ser válido.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Nomes de usuária/o podem conter apenas letras, números, pontos, hífens e linha inferior (_).", + "An unknown error occurred.": "Um erro desconhecido ocorreu.", + "I already have an account": "Eu já tenho uma conta", + "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", + "Topic": "Tópico", + "Make this room private": "Tornar esta sala privada", + "Share message history with new users": "Compartilhar histórico de mensagens com novas/os usuárias/os", + "Encrypt room": "Criptografar esta sala", + "There are no visible files in this room": "Não há arquivos públicos nesta sala", + "Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.", + "Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.", + "Active call": "Chamada ativa", + "Failed to forget room %(errCode)s": "Falha ao esquecer a sala %(errCode)s", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Uma mensagem de texto foi enviada para +%(msisdn)s. Introduza o código de verificação nela contido", + "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", + "and %(count)s others...": { + "other": "e %(count)s outros...", + "one": "e um outro..." + }, + "Are you sure?": "Você tem certeza?", + "Attachment": "Anexo", + "Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s às %(time)s", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador.", + "Change Password": "Alterar senha", + "Click to mute audio": "Clique para colocar o áudio no mudo", + "Click to mute video": "Clique para desabilitar imagens de vídeo", + "Click to unmute video": "Clique para voltar a mostrar imagens de vídeo", + "Click to unmute audio": "Clique para retirar áudio do mudo", + "Command error": "Erro de comando", + "Decrypt %(text)s": "Descriptografar %(text)s", + "Delete": "Apagar", + "Devices": "Dispositivos", + "Direct chats": "Conversas pessoais", + "Disinvite": "Desconvidar", + "Don't send typing notifications": "Não enviar notificação de escrita", + "Download %(text)s": "Baixar %(text)s", + "Enable encryption": "Habilitar criptografia", + "Enter Code": "Entre com o código", + "Failed to ban user": "Não foi possível banir o/a usuário/a", + "Failed to change power level": "Não foi possível mudar o nível de permissões", + "Failed to join room": "Não foi possível ingressar na sala", + "Failed to kick": "Não foi possível remover usuária/o", + "Failed to load timeline position": "Não foi possível carregar a posição na linha do tempo", + "Failed to mute user": "Não foi possível remover notificações da/do usuária/o", + "Failed to reject invite": "Não foi possível rejeitar o convite", + "Failed to save settings": "Não foi possível salvar as configurações", + "Failed to set display name": "Houve falha ao definir o nome público", + "Failed to toggle moderator status": "Houve falha ao alterar o status de moderador/a", + "Fill screen": "Tela cheia", + "Hide read receipts": "Ocultar recebimentos de leitura", + "Hide Text Formatting Toolbar": "Ocultar a barra de formatação de texto", + "Incorrect verification code": "Código de verificação incorreto", + "Invalid alias format": "Formato de alias é inválido", + "Invalid address format": "Formato de endereço é inválido", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' não é um formato válido para um endereço", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' não é um formato válido para um alias", + "Join Room": "Ingressar na sala", + "Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.", + "Kick": "Remover", + "Local addresses for this room:": "Endereço local desta sala:", + "Markdown is disabled": "A formatação 'Markdown' está desabilitada", + "Markdown is enabled": "A formatação 'Markdown' está habilitada", + "Message not sent due to unknown devices being present": "A mensagem não foi enviada por causa da presença de dispositivos desconhecidos", + "New address (e.g. #foo:%(localDomain)s)": "Novo endereço (p.ex: #algo:%(localDomain)s)", + "not set": "não definido", + "not specified": "não especificado", + "No devices with registered encryption keys": "Não há dispositivos com chaves de criptografia registradas", + "No more results": "Não há mais resultados", + "No results": "Sem resultados", + "OK": "Ok", + "Revoke Moderator": "Retirar status de moderador", + "Search": "Pesquisar", + "Search failed": "Busca falhou", + "Server error": "Erro no servidor", + "Server may be unavailable, overloaded, or search timed out :(": "O servidor pode estar indisponível, sobrecarregado, ou a busca ultrapassou o tempo limite :(", + "Server may be unavailable, overloaded, or the file too big": "O servidor pode estar indisponível, sobrecarregado, ou o arquivo é muito grande", + "Server unavailable, overloaded, or something else went wrong.": "O servidor pode estar indisponível, sobrecarregado, ou alguma outra coisa não funcionou.", + "%(count)s of your messages have not been sent.": { + "other": "Algumas das suas mensagens não foram enviadas." + }, + "Submit": "Enviar", + "The main address for this room is": "O endereço principal desta sala é", + "This room has no local addresses": "Esta sala não tem endereços locais", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tentei carregar um ponto específico na linha do tempo desta sala, mas parece que você não tem permissões para ver a mensagem em questão.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tentei carregar um ponto específico na linha do tempo desta sala, mas não o encontrei.", + "Turn Markdown off": "Desabilitar a formatação 'Markdown'", + "Turn Markdown on": "Habilitar a marcação 'Markdown'", + "Unable to load device list": "Não foi possível carregar a lista de dispositivos", + "Unknown room %(roomId)s": "A sala %(roomId)s é desconhecida", + "You have been invited to join this room by %(inviterName)s": "Você foi convidada/o por %(inviterName)s a ingressar nesta sala", + "You seem to be in a call, are you sure you want to quit?": "Parece que você está em uma chamada. Tem certeza que quer sair?", + "You seem to be uploading files, are you sure you want to quit?": "Parece que você está enviando arquivos. Tem certeza que quer sair?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer esta mudança, pois estará dando a este(a) usuário(a) o mesmo nível de permissões que você.", + "Make Moderator": "Tornar moderador(a)", + "Room": "Sala", + "Cancel": "Cancelar", + "bold": "negrito", + "italic": "itálico", + "strike": "tachado", + "underline": "sublinhado", + "code": "código de programação", + "quote": "citação", + "bullet": "marcador de lista", + "numbullet": "marcador de numeração", + "Ban": "Banir", + "Access Token:": "Token de acesso:", + "Always show message timestamps": "Sempre mostrar as datas das mensagens", + "Authentication": "Autenticação", + "An error has occurred.": "Ocorreu um erro.", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Alterar a senha irá atualmente apagar todas as chaves de criptografia ponta-a-ponta em todos os dispositivos, fazendo com que o histórico da conversa fique ilegível, a não ser que você exporte antes as chaves de sala e então as reimporte depois. No futuro, isso vai melhorar.", + "Email": "Email", + "Email address": "Endereço de email", + "Error decrypting attachment": "Erro ao descriptografar o anexo", + "Interface Language": "Idioma da interface", + "Invalid file%(extra)s": "Arquivo inválido %(extra)s", + "Logged in as:": "Logado como:", + "matrix-react-sdk version:": "versão do matrix-react-sdk:", + "Mute": "Silenciar", + "olm version:": "versão do olm:", + "Operation failed": "A operação falhou", + "Remove %(threePid)s?": "Remover %(threePid)s?", + "riot-web version:": "versão do riot-web:", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar os horários em formato de 12h (p.ex: 2:30pm)", + "Unmute": "Tirar do mudo", + "Warning!": "Atenção!", + "You need to enter a user name.": "Você precisa inserir um nome de usuária(o).", + "Please select the destination room for this message": "Por favor, escolha a sala para onde quer encaminhar esta mensagem", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s apagou o nome da sala.", + "Analytics": "Análise", + "Options": "Opções", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot coleta informações anônimas de uso para nos permitir melhorar o sistema.", + "Passphrases must match": "As senhas têm que ser iguais", + "Passphrase must not be empty": "A senha não pode estar vazia", + "Export room keys": "Exportar chaves de sala", + "Enter passphrase": "Entre com a senha", + "Confirm passphrase": "Confirme a senha", + "Import room keys": "Importar chaves de sala", + "File to import": "Arquivo para importar", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este processo permite que você exporte as chaves para mensagens que você recebeu em salas criptografadas para um arquivo local. Você poderá então importar o arquivo para outro cliente Matrix no futuro, de modo que este cliente também poderá descriptografar suas mensagens.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "O arquivo exportado será protegido com uma senha. Você deverá inserir a senha aqui para poder descriptografar o arquivo futuramente.", + "You must join the room to see its files": "Você precisa ingressar na sala para ver seus arquivos", + "Reject all %(invitedRooms)s invites": "Rejeitar todos os %(invitedRooms)s convites", + "Start new chat": "Iniciar nova conversa", + "Failed to invite": "Falha ao enviar o convite", + "Failed to invite user": "Falha ao convidar a(o) usuária(o)", + "Failed to invite the following users to the %(roomName)s room:": "Falha ao convidar as(os) seguintes usuárias(os) para a sala %(roomName)s:", + "Confirm Removal": "Confirmar a remoção", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Você tem certeza que quer apagar este evento? Note que se você apaga o nome de uma sala ou uma mudança de tópico, esta ação não poderá ser desfeita.", + "Unknown error": "Erro desconhecido", + "Incorrect password": "Senha incorreta", + "To continue, please enter your password.": "Para continuar, por favor insira a sua senha.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Para verificar que este dispositivo é confiável, por favor entre em contato com a(o) sua(seu) dona(o) usando outros meios, como por exemplo pessoalmente ou por uma chamada telefônica, e pergunte a esta pessoa se a chave que ela está vendo nas suas configurações de usuário para este dispositivo é igual a esta:", + "Device name": "Nome do dispositivo", + "Device key": "Chave do dispositivo", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Se a chave for a mesma, clique no botão \"verificar\" abaixo. Se não for a mesma, então alguma outra pessoa está interceptando este dispositivo e você provavelmente vai querer clicar no botão \"colocar na lista negra\".", + "In future this verification process will be more sophisticated.": "No futuro, este processo de verificação será mais sofisticado.", + "Verify device": "Verificar o dispositivo", + "I verify that the keys match": "Eu confirmo que as chaves são iguais", + "Unable to restore session": "Não foi possível restaurar a sessão", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se você já usou antes uma versão mais recente do Riot, a sua sessão pode ser incompatível com esta versão. Feche esta janela e tente abrir com a versão mais recente.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Você está atualmente bloqueando dispositivos não verificados. Para enviar mensagens para estes dispositivos, você necessita antes verificá-los.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nós recomendamos que você passe pelo processo de verificação para cada dispositivo para confirmar que eles pertencem às pessoas que efetivamente são suas donas, mas você pode reenviar a mensagem sem verificar isso, se assim o desejar.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contém dispositivos que você não viu antes.", + "Unknown devices": "Dispositivos desconhecidos", + "Unknown Address": "Endereço desconhecido", + "Unblacklist": "Tirar da lista de bloqueados", + "Blacklist": "Colocar na lista de bloqueados", + "Unverify": "Des-verificar", + "Verify...": "Verificar...", + "ex. @bob:example.com": "p.ex: @joao:exemplo.com", + "Add User": "Adicionar usuária(o)", + "This Home Server would like to make sure you are not a robot": "Este Servidor de Base gostaria de confirmar que você não é um robô", + "Sign in with CAS": "Assinar com CAS", + "Custom Server Options": "Opções para Servidor Personalizado", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Você pode usar as opções de servidor personalizado para entrar em outros servidores Matrix ao especificar uma URL de um Servidor de Base diferente.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Isso permite que você use este aplicativo com uma conta Matrix existente em um servidor de base diferente.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Você também pode definir um servidor de identidades personalizado, mas isso vai impedir a sua interação com outros usuários a partir do endereço de email.", + "Dismiss": "Descartar", + "Please check your email to continue registration.": "Por favor, verifique o seu e-mail para continuar o processo de registro.", + "Token incorrect": "Token incorreto", + "Please enter the code it contains:": "Por favor, entre com o código que está na mensagem:", + "powered by Matrix": "rodando a partir do Matrix", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Se não especificar um endereço de e-mail, você não poderá redefinir sua senha. Tem certeza?", + "You are registering with %(SelectedTeamName)s": "Você está se registrando com %(SelectedTeamName)s", + "Default server": "Servidor padrão", + "Custom server": "Servidor personalizado", + "Home server URL": "URL do servidor de base", + "Identity server URL": "URL do servidor de identidades", + "What does this mean?": "O que isso significa?", + "Error decrypting audio": "Erro ao descriptografar o áudio", + "Error decrypting image": "Erro ao descriptografar a imagem", + "Error decrypting video": "Erro ao descriptografar o vídeo", + "Add an Integration": "Adicionar uma integração", + "Removed or unknown message type": "Mensagem removida ou de tipo desconhecido", + "URL Previews": "Pré-visualização de links", + "Drop file here to upload": "Arraste um arquivo aqui para enviar", + " (unsupported)": " (não suportado)", + "Ongoing conference call%(supportedText)s.": "Conferência%(supportedText)s em andamento.", + "Online": "Online", + "Idle": "Ocioso", + "Offline": "Offline", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "O arquivo exportado irá permitir a qualquer pessoa que o acesse a descriptografar qualquer uma das mensagens criptografadas que você veja, portanto seja bastante cuidadosa(o) em manter este arquivo seguro. Para deixar este arquivo mais protegido, recomendamos que você insira uma senha abaixo, que será usada para criptografar o arquivo. Só será possível importar os dados usando exatamente a mesma senha.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.", + "Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema", + "Desktop specific": "Específico para o app de computadores desktop", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será levado agora a um site de terceiros para poder autenticar a sua conta para uso com o serviço %(integrationsUrl)s. Você quer continuar?", + "Device already verified!": "Dispositivo já verificado!", + "Export": "Exportar", + "Guest access is disabled on this Home Server.": "O acesso para visitantes está desabilitado neste Servidor de Base.", + "Import": "Importar", + "Incorrect username and/or password.": "Nome de usuária(o) e/ou senha incorreto.", + "Invited": "Convidada(o)", + "Results from DuckDuckGo": "Resultados de DuckDuckGo", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "A chave de assinatura que você forneceu é a mesma que a chave de assinatura que você recebeu do dispositivo %(deviceId)s de %(userId)s . O dispositivo foi portanto marcado como verificado.", + "This Home Server does not support login using email address.": "Este Servidor de Base não permite login usando endereço de e-mail.", + "Unknown (user, device) pair:": "Par usuária(o)-dispositivo desconhecido:", + "Unrecognised command:": "Comando não reconhecido:", + "Unrecognised room alias:": "Apelido de sala não reconhecido:", + "Use compact timeline layout": "Usar o layout de linha do tempo compacta", + "Verified key": "Chave verificada", + "WARNING: Device already verified, but keys do NOT MATCH!": "ATENÇÃO: O dispositivo já foi verificado, mas as chaves NÃO SÃO IGUAIS!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ATENÇÃO: VERIFICAÇÃO DE CHAVE FALHOU! A chave de assinatura para a(o) usuária(o) %(userId)s e dispositivo %(deviceId)s é \"%(fprint)s\", que não é igual à chave fornecida \"%(fingerprint)s\". Isso pode significar que suas comunicações estão sendo interceptadas!", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removeu a imagem da sala.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a imagem da sala %(roomName)s", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s alterou a imagem da sala para ", + "Missing Media Permissions, click here to request.": "Faltam permissões para uso de mídia no seu computador. Clique aqui para solicitá-las.", + "No Microphones detected": "Não foi detetado nenhum microfone", + "No Webcams detected": "Não foi detetada nenhuma Webcam", + "No media permissions": "Não há permissões para o uso de vídeo/áudio no seu navegador", + "You may need to manually permit Riot to access your microphone/webcam": "Você talvez precise autorizar manualmente que o Riot acesse seu microfone e webcam", + "Default Device": "Dispositivo padrão", + "Microphone": "Microfone", + "Camera": "Câmera de vídeo", + "Add a topic": "Adicionar um tópico", + "VoIP": "VoIP", + "Anyone": "Qualquer pessoa", + "Are you sure you want to leave the room '%(roomName)s'?": "Você tem certeza que deseja sair da sala '%(roomName)s'?", + "Custom level": "Nível personalizado", + "Device ID:": "ID do dispositivo:", + "device id: ": "id do dispositivo: ", + "Device key:": "Chave do dispositivo:", + "Email address (optional)": "Endereço de e-mail (opcional)", + "Mobile phone number (optional)": "Número de telefone celular (opcional)", + "Password:": "Senha:", + "Register": "Registre-se", + "Remote addresses for this room:": "Endereços remotos para esta sala:", + "Save": "Salvar", + "Tagged as: ": "Marcado como: ", + "You have disabled URL previews by default.": "Você desabilitou pré-visualizações de links por padrão.", + "You have enabled URL previews by default.": "Você habilitou pré-visualizações de links por padrão.", + "You have been banned from %(roomName)s by %(userName)s.": "Você foi expulso(a) da sala %(roomName)s por %(userName)s.", + "Send anyway": "Enviar de qualquer maneira", + "This room": "Esta sala", + "Create new room": "Criar nova sala", + "Click on the button below to start chatting!": "Clique no botão abaixo para começar a conversar!", + "No display name": "Sem nome público de usuária(o)", + "This will be your account name on the homeserver, or you can pick a different server.": "Este será seu nome de conta no Servidor de Base , ou então você pode escolher um servidor diferente.", + "Uploading %(filename)s and %(count)s others": { + "one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", + "zero": "Enviando o arquivo %(filename)s", + "other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos" + }, + "Hide removed messages": "Ocultar mensagens removidas", + "You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.", + "Upload new:": "Enviar novo:", + "Private Chat": "Conversa privada", + "You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade", + "Start chatting": "Iniciar a conversa", + "Public Chat": "Conversa pública", + "Room contains unknown devices": "Esta sala contém dispositivos desconhecidos", + "Admin Tools": "Ferramentas de administração", + "You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.", + "Undecryptable": "Não é possível descriptografar", + "Incoming video call from %(name)s": "Chamada de vídeo de %(name)s recebida", + "To link to a room it must have an address.": "Para produzir um link para uma sala, ela necessita ter um endereço.", + "Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.", + "Alias (optional)": "Apelido (opcional)", + "Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Não foi possível garantir que o endereço para o qual este convite foi enviado bate com alqum que está associado com sua conta.", + "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", + "Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!", + "This invitation was sent to an email address which is not associated with this account:": "Este convite foi enviado para um endereço de e-mail que não é associado a esta conta:", + "Show Text Formatting Toolbar": "Exibir barra de formatação de texto", + "Room directory": "Lista de salas", + "Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil", + "Incoming call from %(name)s": "Chamada de %(name)s recebida", + "Last seen": "Último uso", + "Drop File Here": "Arraste o arquivo aqui", + "Start Chatting": "Iniciar a conversa", + "Would you like to accept or decline this invitation?": "Você gostaria de aceitar ou recusar este convite?", + "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s em %(dateTime)s", + "Verified": "Verificado", + "%(roomName)s does not exist.": "%(roomName)s não existe.", + "Enable Notifications": "Habilitar notificações", + "Username not available": "Nome de usuária(o) indisponível", + "Encrypted by a verified device": "Criptografado por um dispositivo verificado", + "(~%(count)s results)": { + "other": "(~%(count)s resultados)", + "one": "(~%(count)s resultado)" + }, + "unknown caller": "a pessoa que está chamando é desconhecida", + "Start authentication": "Iniciar autenticação", + "New Password": "Nova senha", + "Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s", + "Disable Notifications": "Desabilitar notificações", + "%(count)s new messages": { + "one": "%(count)s nova mensagem", + "other": "%(count)s novas mensagens" + }, + "Device Name": "Nome do dispositivo", + "Incoming voice call from %(name)s": "Chamada de voz de %(name)s recebida", + "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", + "Encrypted by an unverified device": "Criptografado por um dispositivo não verificado", + "Unencrypted message": "Mensagem não criptografada", + "Join as voice or video.": "Participar por voz ou por vídeo.", + "Username available": "Nome de usuária(o) disponível", + "Close": "Fechar", + "Level:": "Nível:", + "Unverified": "Não verificado", + "Click here to join the discussion!": "Clique aqui para participar da conversa!", + "Decline": "Recusar", + "Custom": "Personalizado", + "Add": "Adicionar", + "Unnamed Room": "Sala sem nome", + "The phone number entered looks invalid": "O número de telefone inserido parece ser inválido", + "Rejoin": "Voltar a participar da sala", + "Create a new chat or reuse an existing one": "Criar uma nova conversa ou reutilizar alguma já existente", + "Reason: %(reasonText)s": "Justificativa: %(reasonText)s", + "Home": "Início", + "Something went wrong!": "Algo deu errado!", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)", + "Start chat": "Iniciar conversa", + "You already have existing direct chats with this user:": "Você já tem conversas pessoais com esta pessoa:", + "Accept": "Aceitar", + "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento.", + "Add a widget": "Adicionar widget", + "Allow": "Permitir", + "Cannot add any more widgets": "Não é possível adicionar mais widgets", + "Changes colour scheme of current room": "Altera o esquema de cores da sala atual", + "Delete widget": "Apagar widget", + "Define the power level of a user": "Definir o nível de privilégios de um utilizador", + "Do you want to load widget from URL:": "Deseja carregar o widget a partir do URL:", + "Edit": "Editar", + "Enable automatic language detection for syntax highlighting": "Ativar deteção automática da linguagem para o destaque da sintaxe", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Ocultar mensagens de entrada/saída (não afeta convites/expulsões/proibições)", + "Integrations Error": "Erro de integrações", + "Publish this room to the public in %(domain)s's room directory?": "Publicar esta sala ao público no diretório de salas de %(domain)s's?", + "AM": "AM", + "PM": "PM", + "NOTE: Apps are not end-to-end encrypted": "NOTA: As apps não são cifradas ponta-a-ponta", + "Press to start a chat with someone": "Clique para iniciar uma conversa com alguém", + "Revoke widget access": "Revogar o acesso do wiget", + "Sets the room topic": "Define o assunto da sala", + "The maximum permitted number of widgets have already been added to this room.": "O número máximo de widgets permitido já foi adicionado a esta sala.", + "To get started, please pick a username!": "Para começar, escolha um nome de utilizador!", + "Unable to create widget.": "Não foi possível criar o widget.", + "Unbans user with given id": "Retira ban ao utilizador através do seu id", + "(could not connect media)": "(não foi possível conectar-se ao media)", + "(no answer)": "(sem resposta)", + "(unknown failure: %(reason)s)": "(falha desconhecida: %(reason)s)", + "You are not in this room.": "Não se encontra nesta sala.", + "You do not have permission to do that in this room.": "Não tem permissão para fazer isso nesta sala.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Ainda não se encontra em nenhuma sala! Clique em para criar uma sala ou em para navegar o diretório de salas", + "Copied!": "Copiado!", + "Failed to copy": "Falha ao copiar", + "Verifies a user, device, and pubkey tuple": "Verifica um utilizador, o dispositivo e o tuplo da chave pública", + "Updates": "Atualizações", + "Check for update": "Procurar atualizações", + "Your browser does not support the required cryptography extensions": "O seu browser não suporta as extensões de criptografia necessárias", + "Not a valid Riot keyfile": "Não é um ficheiro de chaves Riot válido", + "Authentication check failed: incorrect password?": "Erro de autenticação: palavra-passe incorreta?", + "Disable Peer-to-Peer for 1:1 calls": "Desativar ponto-a-ponto para chamadas 1:1", + "Do you want to set an email address?": "Deseja definir um endereço de e-mail?", + "This will allow you to reset your password and receive notifications.": "Isto irá permitir-lhe redefinir a sua palavra-passe e receber notificações.", + "To return to your account in future you need to set a password": "Para voltar à sua conta no futuro necessita de definir uma palavra-passe", + "Skip": "Saltar", + "Start verification": "Iniciar verificação", + "Share without verifying": "Partilhar sem verificar", + "Ignore request": "Ignorar pedido", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Adicionou um novo dispositivo '%(displayName)s', que está a pedir chaves de encriptação.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "O seu dispositivo não verificado '%(displayName)s' está a pedir chaves de encriptação.", + "Encryption key request": "Pedido de chave de encriptação", + "Autocomplete Delay (ms):": "Atraso de preenchimento automático (ms):", + "Loading device info...": "A carregar as informações do dispositivo...", + "Example": "Exemplo", + "Create": "Criar", + "Featured Rooms:": "Salas em destaque:", + "Featured Users:": "Utilizadores em destaque:", + "Automatically replace plain text Emoji": "Substituir Emoji em texto automaticamente", + "Failed to upload image": "Falha ao carregar imagem", + "Hide avatars in user and room mentions": "Ocultar avatares nas menções de utilizadores e salas", + "%(widgetName)s widget added by %(senderName)s": "Widget %(widgetName)s adicionado por %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Widget %(widgetName)s removido por %(senderName)s", + "%(widgetName)s widget modified by %(senderName)s": "Widget %(widgetName)s modificado por %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "A verificação através de robot está atualmente indisponível na versão desktop - utilize um navegador web", + "Advanced options": "Opções avançadas", + "This setting cannot be changed later!": "Esta definição não pode ser alterada mais tarde!", + "Ignored Users": "Utilizadores Ignorados", + "Ignore": "Ignorar", + "User Options": "Opções de Utilizador", + "Ignored user": "Utilizador ignorado", + "Description": "Descrição", + "Name or matrix ID": "Nome ou ID do matrix", + "Leave": "Sair", + "Add a Room": "Adicionar uma sala", + "Add a User": "Adicionar um utilizador", + "Unknown": "Desconhecido", + "email address": "endereço de email", + "Block users on other matrix homeservers from joining this room": "Impede utilizadores de outros servidores base matrix de se juntar a esta sala", + "Unignore": "Deixar de ignorar", + "You are now ignoring %(userId)s": "Está agora a ignorar %(userId)s", + "You are no longer ignoring %(userId)s": "%(userId)s já não é ignorado", + "Unignored user": "Utilizador não ignorado", + "Stops ignoring a user, showing their messages going forward": "Deixa de ignorar um utilizador, mostrando as suas mensagens daqui para a frente", + "Ignores a user, hiding their messages from you": "Ignora um utilizador, deixando de mostrar as mensagens dele", + "Disable big emoji in chat": "Desativar emojis grandes no chat", + "Disable Emoji suggestions while typing": "Desativar sugestões de Emoji durante a escrita", + "Remove avatar": "Remover avatar", + "Banned by %(displayName)s": "Banido por %(displayName)s", + "Message removed by %(userId)s": "Mensagem removida por %(userId)s", + "To send messages, you must be a": "Para enviar mensagens, tens de ser um(a)", + "To invite users into the room, you must be a": "Para convidar utilizadores para esta sala, tens de ser um(a)", + "To configure the room, you must be a": "Para configurar esta sala, tens de ser um(a)", + "To ban users, you must be a": "Para banir utilizadores, tens de ser um(a)", + "To remove other users' messages, you must be a": "Para remover mensagens de outros utilizadores, tens de ser um(a)", + "To send events of type , you must be a": "Para enviar eventos do tipo , tens de ser um(a)", + "Fetching third party location failed": "Falha ao obter localização de terceiros", + "A new version of Riot is available.": "Uma nova versão do Riot está disponível.", + "I understand the risks and wish to continue": "Entendo os riscos e pretendo continuar", + "Couldn't load home page": "Não foi possível carregar a página inicial", + "Advanced notification settings": "Configurações avançadas de notificação", + "Uploading report": "A enviar o relatório", + "Sunday": "Domingo", + "Guests can join": "Convidados podem entrar", + "Messages sent by bot": "Mensagens enviadas por bots", + "Notification targets": "Alvos de notificação", + "Failed to set direct chat tag": "Falha ao definir conversa como pessoal", + "Today": "Hoje", + "Failed to get protocol list from Home Server": "Falha ao obter a lista de protocolos do servidor padrão", + "You are not receiving desktop notifications": "Não está a receber notificações de desktop", + "Friday": "Sexta-feira", + "Update": "Atualizar", + "What's New": "Novidades", + "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar as notificações por email", + "Expand panel": "Expandir o painel", + "On": "Ativado", + "Filter room names": "Filtrar salas por título", + "Changelog": "Histórico de alterações", + "Waiting for response from server": "À espera de resposta do servidor", + "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", + "Send Custom Event": "Enviar evento personalizado", + "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desativadas para todos os casos.", + "delete the alias.": "apagar o apelido da sala.", + "To return to your account in future you need to set a password": "Para voltar à sua conta no futuro, necessita de definir uma palavra-passe", + "Forget": "Esquecer", + "World readable": "Público", + "#example": "#exemplo", + "Hide panel": "Ocultar o painel", + "You cannot delete this image. (%(code)s)": "Não pode apagar esta imagem. (%(code)s)", + "Cancel Sending": "Cancelar o envio", + "Warning": "Aviso", + "This Room": "Esta sala", + "The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros", + "Resend": "Reenviar", + "Error saving email notification preferences": "Erro ao guardar as preferências de notificação por e-mail", + "Messages containing my display name": "Mensagens contendo o meu nome público", + "Messages in one-to-one chats": "Mensagens em conversas pessoais", + "Unavailable": "Indisponível", + "View Decrypted Source": "Ver a fonte desencriptada", + "Failed to update keywords": "Falha ao atualizar as palavras-chave", + "remove %(name)s from the directory.": "remover %(name)s da lista pública de salas.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", + "Please set a password!": "Por favor, defina uma palavra-passe!", + "You have successfully set a password!": "Palavra-passe definida com sucesso!", + "An error occurred whilst saving your email notification preferences.": "Ocorreu um erro ao guardar as suas preferências de notificação por email.", + "Explore Room State": "Explorar estado da sala", + "Source URL": "URL fonte", + "Failed to add tag %(tagName)s to room": "Falha ao adicionar %(tagName)s à sala", + "Filter results": "Filtrar resultados", + "Members": "Membros", + "No update available.": "Nenhuma atualização disponível.", + "Noisy": "Barulhento", + "Files": "Ficheiros", + "Collecting app version information": "A recolher informação da versão da app", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Isto irá permitir-lhe voltar à sua conta depois de terminar sessão, assim como iniciar sessão noutros dispositivos.", + "Keywords": "Palavras-chave", + "Enable notifications for this account": "Ativar notificações para esta conta", + "Directory": "Diretório", + "Search for a room": "Pesquisar por uma sala", + "Messages containing keywords": "Mensagens contendo palavras-chave", + "Room not found": "Sala não encontrada", + "Tuesday": "Terça-feira", + "Enter keywords separated by a comma:": "Insira palavras-chave separadas por vírgula:", + "Search…": "Pesquisar…", + "Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "O Riot usa muitas funcionalidades avançadas do navegador, algumas das quais não estão disponíveis ou ainda são experimentais no seu navegador atual.", + "Developer Tools": "Ferramentas de desenvolvedor", + "Enable desktop notifications": "Ativar notificações no desktop", + "Unnamed room": "Sala sem nome", + "Remove from Directory": "Remover da lista pública de salas", + "Saturday": "Sábado", + "Remember, you can always set an email address in user settings if you change your mind.": "Lembre-se, pode sempre definir um endereço de e-mail nas definições de utilizador se mudar de ideias.", + "Direct Chat": "Conversa pessoal", + "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", + "Reject": "Rejeitar", + "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", + "Monday": "Segunda-feira", + "All messages (noisy)": "Todas as mensagens (alto)", + "Enable them now": "Ativar agora", + "Messages containing my user name": "Mensagens contendo o meu nome de utilizador", + "Collecting logs": "A recolher logs", + "more": "mais", + "You must specify an event type!": "Tem que especificar um tipo de evento!", + "(HTTP status %(httpStatus)s)": "(Estado HTTP %(httpStatus)s)", + "Invite to this room": "Convidar para esta sala", + "State Key": "Chave de estado", + "Failed to get public room list": "Falha ao obter a lista de salas públicas", + "Send": "Enviar", + "Send logs": "Enviar relatórios de erro", + "All messages": "Todas as mensagens", + "Call invitation": "Convite para chamada", + "Downloading update...": "A transferir atualização...", + "You have successfully set a password and an email address!": "Palavra passe e endereço de e-mail definidos com sucesso!", + "Failed to send custom event.": "Falha ao enviar evento personalizado.", + "What's new?": "O que há de novo?", + "Notify me for anything else": "Notificar-me sobre qualquer outro evento", + "When I'm invited to a room": "Quando sou convidado para uma sala", + "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", + "Notify for all other messages/rooms": "Notificar para todas as outras mensagens/salas", + "Unable to look up room ID from server": "Não foi possível obter a identificação da sala do servidor", + "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", + "All Rooms": "Todas as salas", + "You cannot delete this message. (%(code)s)": "Não pode apagar esta mensagem. (%(code)s)", + "Thursday": "Quinta-feira", + "Forward Message": "Encaminhar", + "Back": "Voltar", + "Unhide Preview": "Mostrar a pré-visualização novamente", + "Unable to join network": "Não foi possível juntar-se à rede", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Pode ter configurado num outro cliente sem ser o Riot. Não pode ajustá-las no Riot, mas ainda assim elas aplicam-se", + "Sorry, your browser is not able to run Riot.": "Desculpe, o seu navegador não é capaz de executar o Riot.", + "Messages in group chats": "Mensagens em salas", + "Yesterday": "Ontem", + "Error encountered (%(errorDetail)s).": "Erro encontrado (%(errorDetail)s).", + "Login": "Entrar", + "Low Priority": "Baixa prioridade", + "Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação", + "Set Password": "Definir palavra-passe", + "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", + "Off": "Desativado", + "Riot does not know how to join a room on this network": "O Riot não sabe como entrar numa sala nesta rede", + "Mentions only": "Apenas menções", + "Failed to remove tag %(tagName)s from room": "Não foi possível remover a marcação %(tagName)s desta sala", + "Wednesday": "Quarta-feira", + "You can now return to your account after signing out, and sign in on other devices.": "Pode agora voltar à sua conta no fim de terminar sessão, e iniciar sessão noutros dispositivos.", + "Enable email notifications": "Ativar notificações por e-mail", + "Event Type": "Tipo de evento", + "No rooms to show": "Não existem salas a serem exibidas", + "Download this file": "Transferir este ficheiro", + "Failed to change settings": "Falha ao alterar as configurações", + "Event sent!": "Evento enviado!", + "View Source": "Ver a fonte", + "Event Content": "Conteúdo do evento", + "Thank you!": "Obrigado!", + "Quote": "Citar", + "Collapse panel": "Colapsar o painel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se quiser tentar de qualquer maneira pode continuar, mas está por sua conta com algum problema que possa encontrar!", + "Checking for an update...": "A procurar uma atualização...", + "There are advanced notifications which are not shown here": "Existem notificações avançadas que não são exibidas aqui", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s", + "Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "O Riot não é suportado na web para dispositivos móveis. Quer instalar a app?", + "Unknown device": "Dispositivo desconhecido", + "You need to be using HTTPS to place a screen-sharing call.": "Necessita de estar a usar HTTPS para poder iniciar uma chamada com partilha de ecrã.", + "Welcome to Riot.im": "Bem-vindo ao Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, encriptado & colaborativo alimentado por [matrix]", + "Search the room directory": "Procurar o diretório de salas", + "Chat with Riot Bot": "Falar com o Bot do Riot", + "Get started with some tips from Riot Bot!": "Comece com algumas dicas do Bot do Riot", + "General discussion about Matrix and Riot": "Discussão geral acerca do Matrix e do Riot", + "Discussion of all things Matrix!": "Discussão de tudo o que envolva o Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", + "Matrix technical discussions": "Discussões técnicas do Matrix", + "Running Matrix services": "Correr serviços do Matrix", + "Community-run support for Synapse": "Suporte da comunidade para o Synapse", + "Admin support for Dendrite": "Suporte de administração para o Dendrite", + "Announcements about Synapse releases": "Anúncios acerca de lançamentos do Synapse", + "Support for those using and running matrix-appservice-irc": "Suporte para aqueles a correr e a utilizar o matrix-appservice-irc", + "Building services on Matrix": "Construir serviços no Matrix", + "Support for those using the Matrix spec": "Suporte para os utilizadores da especificação do Matrix", + "Design and implementation of E2E in Matrix": "Design e implementação de encriptação ponto-a-ponto (E2E) no Matrix", + "Implementing VR services with Matrix": "Implementar serviços de realidade virtual (VR) com o Matrix", + "Implementing VoIP services with Matrix": "Implementar serviços VoIP com o Matrix", + "Discussion of the Identity Service API": "Discussão da API do serviço de identidade", + "Support for those using, running and writing other bridges": "Suporte para aqueles a usar, correr e desenvolver outras pontes (bridges)", + "Contributing code to Matrix and Riot": "Contribuir código para o Matrix e para o Riot", + "Dev chat for the Riot/Web dev team": "Conversa de desenvolvimento para a equipa do Riot/Web", + "Dev chat for the Dendrite dev team": "Conversa de desenvolvimento para a equipa do Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Já existem muitas salas no Matrix, ligadas a redes já existentes (Slack, IRC, Gitter, etc) ou independentes. Dê uma vista de olhos no diretório!" +} \ No newline at end of file diff --git a/riot/i18n/pt_BR.json b/riot/i18n/pt_BR.json new file mode 100644 index 0000000..2a31343 --- /dev/null +++ b/riot/i18n/pt_BR.json @@ -0,0 +1,1222 @@ +{ + "Account": "Conta", + "Add email address": "Adicionar endereço de email", + "Add phone number": "Adicionar número de telefone", + "Admin": "Administrador/a", + "Advanced": "Avançado", + "Algorithm": "Algoritmo", + "New passwords don't match": "As novas senhas não conferem", + "A new password must be entered.": "Uma nova senha precisa ser informada.", + "Anyone who knows the room's link, apart from guests": "Qualquer pessoa que tenha o link da sala, exceto visitantes", + "Anyone who knows the room's link, including guests": "Qualquer pessoa que tenha o link da sala, incluindo visitantes", + "Are you sure you want to reject the invitation?": "Você tem certeza que deseja rejeitar este convite?", + "Are you sure you want to upload the following files?": "Você tem certeza que deseja enviar os seguintes arquivos?", + "Banned users": "Usuárias/os banidas/os", + "Bans user with given id": "Banir usuários com o identificador informado", + "Blacklisted": "Bloqueado", + "Bulk Options": "Opcões de Batelada", + "Can't load user settings": "Não é possível carregar configurações de usuário", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s mudou o tópico para \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "As mudanças sobre quem pode ler o histórico da sala só serão aplicadas às mensagens futuras nesta sala", + "Changes your display nickname": "Troca o seu apelido", + "Claimed Ed25519 fingerprint key": "Chave reivindicada da Impressão Digital Ed25519", + "Clear Cache and Reload": "Limpar Memória Cache e Recarregar", + "Clear Cache": "Limpar Memória Cache", + "Click here to fix": "Clique aqui para resolver isso", + "Commands": "Comandos", + "Confirm password": "Confirme a nova senha", + "Confirm your new password": "Confirme a nova senha", + "Continue": "Continuar", + "Could not connect to the integration server": "Não foi possível conectar ao servidor de integrações", + "Create an account": "Criar uma conta", + "Create Room": "Criar Sala", + "Cryptography": "Criptografia", + "Current password": "Senha atual", + "Curve25519 identity key": "Chave de Indetificação Curve25519", + "Deactivate Account": "Desativar conta", + "Deactivate my account": "Desativar minha conta", + "Decryption error": "Erro de descriptografia", + "Default": "Padrão", + "Deops user with given id": "Retirar função de moderador do usuário com o identificador informado", + "Device ID": "Identificador do dispositivo", + "Devices will not yet be able to decrypt history from before they joined the room": "Os dispositivos não serão ainda capazes de descriptografar o histórico anterior à sua entrada na sala", + "Display name": "Nome", + "Displays action": "Visualizar atividades", + "Ed25519 fingerprint": "Impressão Digital Ed25519", + "Email, name or matrix ID": "Email, nome ou ID matrix", + "Emoji": "Emoji", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Mensagens criptografadas não serão visíveis em clientes que ainda não implementaram criptografia", + "Encrypted room": "Sala criptografada", + "Encryption is enabled in this room": "Criptografia está habilitada nesta sala", + "Encryption is not enabled in this room": "Criptografia não está habilitada nesta sala", + "End-to-end encryption information": "Informação criptografada ponta-a-ponta", + "End-to-end encryption is in beta and may not be reliable": "A criptografia ponta a ponta está em estágio beta e não deve ser totalmente confiável", + "Error": "Erro", + "Event information": "Informação do evento", + "Export E2E room keys": "Exportar chaves ponta-a-ponta da sala", + "Failed to change password. Is your password correct?": "Não foi possível mudar a senha. A sua senha está correta?", + "Failed to leave room": "Falha ao tentar deixar a sala", + "Failed to reject invitation": "Falha ao tentar rejeitar convite", + "Failed to set avatar.": "Falha ao tentar definir a imagem do perfil.", + "Failed to unban": "Não foi possível desfazer o banimento", + "Failed to upload file": "Falha ao enviar o arquivo", + "Favourite": "Favorito", + "Favourites": "Favoritos", + "Filter room members": "Filtrar integrantes da sala", + "Forget room": "Esquecer sala", + "Forgot your password?": "Esqueceu sua senha?", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Por segurança, deslogar irá remover qualquer chave de criptografia ponta-a-ponta deste navegador. Caso deseje descriptografar o histórico das suas conversas E2E em sessões Riot futuras, por favor exporte as chaves da sala para sua garantia.", + "For security, this session has been signed out. Please sign in again.": "Por questões de segurança, esta sessão foi encerrada. Por gentileza conecte-se novamente.", + "Guests cannot join this room even if explicitly invited.": "Visitantes não podem entrar nesta sala, mesmo se forem explicitamente convidadas/os.", + "Hangup": "Desligar", + "Historical": "Histórico", + "Homeserver is": "Servidor padrão é", + "Identity Server is": "O servidor de identificação é", + "I have verified my email address": "Eu verifiquei o meu endereço de email", + "Import E2E room keys": "Importar chave de criptografia ponta-a-ponta (E2E) da sala", + "Invalid Email Address": "Endereço de email inválido", + "Invite new room members": "Convidar novas pessoas para ingressar na sala", + "Invites": "Convidar", + "Invites user with given id to current room": "Convidar usuários com um dado identificador para esta sala", + "Sign in with": "Quero entrar", + "Joins room with given alias": "Entra na sala com o nome informado", + "Kicks user with given id": "Remove usuário com o identificador informado", + "Labs": "Laboratório", + "Leave room": "Sair da sala", + "Logout": "Sair", + "Low priority": "Baixa prioridade", + "Manage Integrations": "Gerenciar integrações", + "Mobile phone number": "Telefone celular", + "Moderator": "Moderador/a", + "Name": "Nome", + "Never send encrypted messages to unverified devices from this device": "Nunca envie mensagens criptografada para um dispositivo não verificado a partir deste dispositivo", + "Never send encrypted messages to unverified devices in this room from this device": "Nunca envie mensagens criptografadas para dispositivos não verificados nesta sala a partir deste dispositivo", + "New password": "Nova senha", + "New passwords must match each other.": "As novas senhas informadas precisam ser idênticas.", + "none": "nenhum", + "Notifications": "Notificações", + "": "", + "NOT verified": "NÃO verificado", + "No users have specific privileges in this room": "Nenhum/a usuário/a possui privilégios específicos nesta sala", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Assim que a criptografia é ativada para uma sala, ela não poderá ser desativada novamente (ainda)", + "Only people who have been invited": "Apenas pessoas que tenham sido convidadas", + "Password": "Senha", + "Passwords can't be empty": "As senhas não podem estar em branco", + "People": "Pessoas", + "Permissions": "Permissões", + "Phone": "Telefone", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Por favor verifique seu email e clique no link enviado. Quando finalizar este processo, clique para continuar.", + "Privacy warning": "Alerta sobre privacidade", + "Privileged Users": "Usuárias/os privilegiadas/os", + "Profile": "Perfil", + "Refer a friend to Riot:": "Indicar um amigo para participar:", + "Reject invitation": "Rejeitar convite", + "Remove Contact Information?": "Remover informação de contato?", + "Remove": "Remover", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Atualmente, ao alterar sua senha, você também zera todas as chaves de criptografia ponta-a-ponta em todos os dipositivos, fazendo com que o histórico de conversas da sala não possa mais ser lido, a não ser que você antes exporte suas chaves de sala e as reimporte após a alteração da senha. No futuro, isso será melhorado.", + "Return to login screen": "Retornar à tela de login", + "Room Colour": "Cores da sala", + "Room name (optional)": "Título da Sala (opcional)", + "Rooms": "Salas", + "Scroll to bottom of page": "Ir para o fim da página", + "Scroll to unread messages": "Rolar para baixo para ver as mensagens não lidas", + "Searches DuckDuckGo for results": "Buscar por resultados no buscador DuckDuckGo", + "Sender device information": "Informação do dispositivo emissor", + "Send Invites": "Enviar convites", + "Send Reset Email": "Enviar email para redefinição de senha", + "Server may be unavailable or overloaded": "Servidor pode estar indisponível ou sobrecarregado", + "Server may be unavailable, overloaded, or you hit a bug.": "O servidor pode estar indisponível ou sobrecarregado, ou então você encontrou uma falha no sistema.", + "Session ID": "Identificador de sessão", + "Settings": "Configurações", + "Show panel": "Mostrar painel", + "Signed Out": "Deslogar", + "Sign in": "Entrar", + "Sign out": "Sair", + "Someone": "Alguém", + "Start a chat": "Começar uma conversa", + "Start Chat": "Começar conversa", + "Success": "Sucesso", + "The default role for new room members is": "O papel padrão para novas/os integrantes da sala é", + "The email address linked to your account must be entered.": "O endereço de email relacionado a sua conta precisa ser informado.", + "The visibility of existing history will be unchanged": "A visibilidade do histórico atual não será alterada", + "This doesn't appear to be a valid email address": "Este não aparenta ser um endereço de email válido", + "This is a preview of this room. Room interactions have been disabled": "Esta é uma pré visualização desta sala. As interações com a sala estão desabilitadas", + "This room is not accessible by remote Matrix servers": "Esta sala não é acessível para servidores Matrix remotos", + "This room's internal ID is": "O ID interno desta sala é", + "To reset your password, enter the email address linked to your account": "Para redefinir sua senha, entre com o email da sua conta", + "Unable to add email address": "Não foi possível adicionar endereço de email", + "Unable to remove contact information": "Não foi possível remover informação de contato", + "Unable to verify email address.": "Não foi possível verificar o endereço de email.", + "Unban": "Desfazer banimento", + "Unencrypted room": "Sala não criptografada", + "unencrypted": "não criptografado", + "unknown device": "dispositivo desconhecido", + "unknown error code": "código de erro desconhecido", + "Upload avatar": "Enviar uma imagem de perfil", + "Upload Files": "Enviar arquivos", + "Upload file": "Enviar arquivo", + "User ID": "Identificador de Usuário", + "User Interface": "Interface de usuário", + "User name": "Nome de usuária/o", + "Users": "Usuários", + "Verification Pending": "Verificação pendente", + "Verification": "Verificação", + "verified": "verificado", + "Video call": "Chamada de vídeo", + "Voice call": "Chamada de voz", + "VoIP conference finished.": "Conferência VoIP encerrada.", + "VoIP conference started.": "Conferência VoIP iniciada.", + "(warning: cannot be disabled again!)": "(atenção: esta operação não poderá ser desfeita depois!)", + "Who can access this room?": "Quem pode acessar esta sala?", + "Who can read history?": "Quem pode ler o histórico da sala?", + "Who would you like to add to this room?": "Quais pessoas você gostaria de adicionar a esta sala?", + "Who would you like to communicate with?": "Com quem você gostaria de se comunicar?", + "You do not have permission to post to this room": "Você não tem permissão de postar nesta sala", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Você foi desconectada/o de todos os dispositivos e portanto não receberá mais notificações no seu celular ou no computador. Para reativar as notificações, entre novamente em cada um dos dispositivos que costuma usar", + "You have no visible notifications": "Voce não possui notificações visíveis", + "Your password has been reset": "Sua senha foi redefinida", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Sua senha foi alterada com sucesso. Você não receberá notificações em outros dispositivos até que você logue novamente por eles", + "You should not yet trust it to secure data": "Você não deve confiar nela ainda para preservar seus dados", + "Sun": "Dom", + "Mon": "Seg", + "Tue": "Ter", + "Wed": "Qua", + "Thu": "Qui", + "Fri": "Sex", + "Sat": "Sáb", + "Jan": "Jan", + "Feb": "Fev", + "Mar": "Mar", + "Apr": "Abr", + "May": "Mai", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Ago", + "Sep": "Set", + "Oct": "Out", + "Nov": "Nov", + "Dec": "Dez", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s às %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s às %(time)s", + "%(targetName)s accepted an invitation.": "%(targetName)s aceitou um convite.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s aceitou o convite para %(displayName)s.", + "%(names)s and %(lastPerson)s are typing": "%(names)s e %(lastPerson)s estão escrevendo", + "%(senderName)s answered the call.": "%(senderName)s atendeu à chamada.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.", + "Call Timeout": "Tempo esgotado. Chamada encerrada", + "%(senderName)s changed their profile picture.": "%(senderName)s alterou sua imagem de perfil.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s alterou o nível de permissões de %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s alterou o nome da sala para %(roomName)s.", + "click to reveal": "clique para ver", + "Conference call failed.": "Chamada de conferência falhou.", + "Conference calling is in development and may not be reliable.": "Chamadas de conferência estão em desenvolvimento e portanto podem não funcionar.", + "Conference calls are not supported in encrypted rooms": "Chamadas de conferência não são possíveis em salas criptografadas", + "Conference calls are not supported in this client": "Chamadas de conferência não são possíveis neste navegador", + "/ddg is not a command": "/ddg não é um comando", + "Drop here to tag %(section)s": "Arraste aqui para marcar como %(section)s", + "%(senderName)s ended the call.": "%(senderName)s finalizou a chamada.", + "Existing Call": "Chamada em andamento", + "Failed to send email": "Não foi possível enviar email", + "Failed to send request.": "Não foi possível mandar requisição.", + "Failed to set up conference call": "Não foi possível montar a chamada de conferência", + "Failed to verify email address: make sure you clicked the link in the email": "Não foi possível verificar o endereço de email: verifique se você realmente clicou no link que está no seu email", + "Failure to create room": "Não foi possível criar a sala", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s de %(fromPowerLevel)s para %(toPowerLevel)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s convidou %(targetName)s.", + "%(displayName)s is typing": "%(displayName)s está escrevendo", + "%(targetName)s joined the room.": "%(targetName)s entrou na sala.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s removeu %(targetName)s da sala.", + "%(targetName)s left the room.": "%(targetName)s saiu da sala.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando foram convidados.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s deixou o histórico futuro da sala visível para todos os membros da sala, a partir de quando entraram.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s deixou o histórico futuro da sala visível para todas as pessoas da sala.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s deixou o histórico futuro da sala visível para qualquer pessoa.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s deixou o histórico futuro da sala visível para desconhecido (%(visibility)s).", + "Missing room_id in request": "Faltou o id da sala na requisição", + "Missing user_id in request": "Faltou o id de usuário na requisição", + "(not supported by this browser)": "(não é compatível com este navegador)", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s fez uma chamada de %(callType)s.", + "Power level must be positive integer.": "O nível de permissões tem que ser um número inteiro e positivo.", + "Press to start a chat with someone": "Clique em para iniciar a conversa com alguém", + "Reason": "Razão", + "%(targetName)s rejected the invitation.": "%(targetName)s recusou o convite.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s removeu o seu nome público (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s removeu sua imagem de perfil.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s está solicitando uma conferência de voz.", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot não tem permissões para enviar notificações a você - por favor, verifique as configurações do seu navegador", + "Riot was not given permission to send notifications - please try again": "Riot não tem permissões para enviar notificações a você - por favor, tente novamente", + "Room %(roomId)s not visible": "A sala %(roomId)s não está visível", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s enviou uma imagem.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s enviou um convite para %(targetDisplayName)s entrar na sala.", + "%(senderName)s set a profile picture.": "%(senderName)s definiu uma imagem de perfil.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s definiu seu nome público para %(displayName)s.", + "This email address is already in use": "Este endereço de email já está sendo usado", + "This email address was not found": "Este endereço de email não foi encontrado", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "O arquivo '%(fileName)s' ultrapassa o limite de tamanho que nosso servidor permite enviar", + "The file '%(fileName)s' failed to upload": "Não foi possível enviar o arquivo '%(fileName)s", + "The remote side failed to pick up": "Houve alguma falha que não permitiu a outra pessoa atender à chamada", + "This room is not recognised.": "Esta sala não é reconhecida.", + "These are experimental features that may break in unexpected ways": "Estas são funcionalidades experimentais que podem apresentar falhas", + "This phone number is already in use": "Este número de telefone já está sendo usado", + "To use it, just wait for autocomplete results to load and tab through them.": "Para usar esta funcionalidade, espere o carregamento dos resultados de autocompletar e então escolha entre as opções.", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ativou criptografia ponta a ponta (algoritmo %(algorithm)s).", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s desfez o banimento de %(targetName)s.", + "Unable to capture screen": "Não foi possível capturar a imagem da tela", + "Unable to enable Notifications": "Não foi possível ativar as notificações", + "Upload Failed": "O envio falhou", + "Usage": "Uso", + "Use with caution": "Use com cautela", + "VoIP is unsupported": "Chamada de voz não permitida", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s desfez o convite a %(targetName)s.", + "You are already in a call.": "Você já está em uma chamada.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Você ainda não está em nenhuma sala! Clique em para criar uma sala ou em para navegar pela lista pública de salas", + "You are trying to access %(roomName)s.": "Você está tentando acessar a sala %(roomName)s.", + "You cannot place a call with yourself.": "Você não pode iniciar uma chamada.", + "You cannot place VoIP calls in this browser.": "Você não pode fazer chamadas de voz neste navegador.", + "You need to be able to invite users to do that.": "Para fazer isso, você tem que ter permissão para convidar outras pessoas.", + "You need to be logged in.": "Você tem que estar logado.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "O seu endereço de email não parece estar associado a uma conta de usuária/o Matrix neste servidor.", + "Set a display name:": "Defina um nome público para você:", + "Upload an avatar:": "Envie uma imagem de perfil para identificar você:", + "This server does not support authentication with a phone number.": "Este servidor não permite a autenticação através de números de telefone.", + "Missing password.": "Faltou a senha.", + "Passwords don't match.": "As senhas não conferem.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "A senha é muito curta (o mínimo é de %(MIN_PASSWORD_LENGTH)s caracteres).", + "This doesn't look like a valid email address.": "Este endereço de email não parece ser válido.", + "This doesn't look like a valid phone number.": "Este número de telefone não parece ser válido.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Nomes de usuária/o podem conter apenas letras, números, pontos, hífens e linha inferior (_).", + "An unknown error occurred.": "Um erro desconhecido ocorreu.", + "I already have an account": "Eu já tenho uma conta", + "An error occurred: %(error_string)s": "Um erro ocorreu: %(error_string)s", + "Topic": "Tópico", + "Make this room private": "Tornar esta sala privada", + "Share message history with new users": "Compartilhar histórico de mensagens com novas/os usuárias/os", + "Encrypt room": "Criptografar esta sala", + "There are no visible files in this room": "Não há arquivos públicos nesta sala", + "Connectivity to the server has been lost.": "A conexão com o servidor foi perdida. Verifique sua conexão de internet.", + "Sent messages will be stored until your connection has returned.": "Imagens enviadas ficarão armazenadas até que sua conexão seja reestabelecida.", + "Active call": "Chamada ativa", + "Failed to forget room %(errCode)s": "Falhou ao esquecer a sala %(errCode)s", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Uma mensagem de texto foi enviada para +%(msisdn)s. Gentileza entrar com o código de verificação que contém", + "%(items)s and %(lastItem)s": "%(items)s e %(lastItem)s", + "and %(count)s others...": { + "one": "e um outro...", + "other": "e %(count)s outros..." + }, + "Are you sure?": "Você tem certeza?", + "Attachment": "Anexo", + "Autoplay GIFs and videos": "Reproduzir automaticamente GIFs e videos", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s de %(monthName)s de %(fullYear)s às %(time)s", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Não consigo conectar ao servidor padrão através de HTTP quando uma URL HTTPS está na barra de endereços do seu navegador. Use HTTPS ou então habilite scripts não seguros no seu navegador.", + "Change Password": "Alterar senha", + "Click to mute audio": "Clique para colocar o áudio no mudo", + "Click to mute video": "Clique para desabilitar imagens de vídeo", + "Click to unmute video": "Clique para voltar a mostrar imagens de vídeo", + "Click to unmute audio": "Clique para retirar áudio do mudo", + "Command error": "Erro de comando", + "Decrypt %(text)s": "Descriptografar %(text)s", + "Delete": "Apagar", + "Devices": "Dispositivos", + "Direct chats": "Conversas pessoais", + "Disinvite": "Desconvidar", + "Don't send typing notifications": "Não enviar notificação de estar digitando", + "Download %(text)s": "Baixar %(text)s", + "Enable encryption": "Habilitar criptografia", + "Enter Code": "Entre com o código", + "Failed to ban user": "Não foi possível banir o/a usuário/a", + "Failed to change power level": "Não foi possível mudar o nível de permissões", + "Failed to join room": "Não foi possível ingressar na sala", + "Failed to kick": "Não foi possível remover usuária/o", + "Failed to load timeline position": "Não foi possível carregar a posição na linha do tempo", + "Failed to mute user": "Não foi possível remover notificações da/do usuária/o", + "Failed to reject invite": "Não foi possível rejeitar o convite", + "Failed to save settings": "Não foi possível salvar as configurações", + "Failed to set display name": "Houve falha ao definir o nome público", + "Failed to toggle moderator status": "Houve falha ao alterar o status de moderador/a", + "Fill screen": "Tela cheia", + "Hide read receipts": "Ocultar recebimentos de leitura", + "Hide Text Formatting Toolbar": "Ocultar a barra de formatação de texto", + "Incorrect verification code": "Código de verificação incorreto", + "Invalid alias format": "Formato de alias é inválido", + "Invalid address format": "Formato de endereço é inválido", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' não é um formato válido para um endereço", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' não é um formato válido para um alias", + "Join Room": "Ingressar na sala", + "Jump to first unread message.": "Ir diretamente para a primeira das mensagens não lidas.", + "Kick": "Remover", + "Local addresses for this room:": "Endereço local desta sala:", + "Markdown is disabled": "A formatação 'Markdown' está desabilitada", + "Markdown is enabled": "A formatação 'Markdown' está habilitada", + "Message not sent due to unknown devices being present": "A mensagem não foi enviada por causa da presença de dispositivos desconhecidos", + "New address (e.g. #foo:%(localDomain)s)": "Novo endereço (p.ex: #algo:%(localDomain)s)", + "not set": "não definido", + "not specified": "não especificado", + "No devices with registered encryption keys": "Não há dispositivos com chaves de criptografia registradas", + "No more results": "Não há mais resultados", + "No results": "Sem resultados", + "OK": "Ok", + "Revoke Moderator": "Retirar status de moderador", + "Search": "Buscar", + "Search failed": "Busca falhou", + "Server error": "Erro no servidor", + "Server may be unavailable, overloaded, or search timed out :(": "O servidor pode estar indisponível, sobrecarregado, ou a busca ultrapassou o tempo limite :(", + "Server may be unavailable, overloaded, or the file too big": "O servidor pode estar indisponível, sobrecarregado, ou o arquivo é muito grande", + "Server unavailable, overloaded, or something else went wrong.": "O servidor pode estar indisponível, sobrecarregado, ou alguma outra coisa não funcionou.", + "%(count)s of your messages have not been sent.": { + "other": "Algumas das suas mensagens não foram enviadas.", + "one": "Sua mensagem não foi enviada." + }, + "Submit": "Enviar", + "The main address for this room is": "O endereço principal desta sala é", + "This room has no local addresses": "Esta sala não tem endereços locais", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Tentei carregar um ponto específico na linha do tempo desta sala, mas parece que você não tem permissões para ver a mensagem em questão.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Tentei carregar um ponto específico na linha do tempo desta sala, mas não o encontrei.", + "Turn Markdown off": "Desabilitar a formatação 'Markdown'", + "Turn Markdown on": "Habilitar a marcação 'Markdown'", + "Unable to load device list": "Não foi possível carregar a lista de dispositivos", + "Unknown room %(roomId)s": "A sala %(roomId)s é desconhecida", + "You have been invited to join this room by %(inviterName)s": "Você foi convidada/o por %(inviterName)s a ingressar nesta sala", + "You seem to be in a call, are you sure you want to quit?": "Parece que você está em uma chamada. Tem certeza que quer sair?", + "You seem to be uploading files, are you sure you want to quit?": "Parece que você está enviando arquivos. Tem certeza que quer sair?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Você não poderá desfazer esta mudança, pois estará dando a este(a) usuário(a) o mesmo nível de permissões que você.", + "Make Moderator": "Tornar moderador(a)", + "Room": "Sala", + "Cancel": "Cancelar", + "bold": "negrito", + "italic": "itálico", + "strike": "tachado", + "underline": "sublinhado", + "code": "código de programação", + "quote": "citação", + "bullet": "marcador de lista", + "numbullet": "marcador de numeração", + "Ban": "Banir", + "Access Token:": "Token de acesso:", + "Always show message timestamps": "Sempre mostrar as datas das mensagens", + "Authentication": "Autenticação", + "An error has occurred.": "Ocorreu um erro.", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Alterar a senha irá atualmente apagar todas as chaves de criptografia ponta-a-ponta em todos os dispositivos, fazendo com que o histórico da conversa fique ilegível, a não ser que você exporte antes as chaves de sala e então as reimporte depois. No futuro, isso vai melhorar.", + "Email": "Email", + "Email address": "Endereço de email", + "Error decrypting attachment": "Erro ao descriptografar o anexo", + "Interface Language": "Idioma da interface", + "Invalid file%(extra)s": "Arquivo inválido %(extra)s", + "Logged in as:": "Logado como:", + "matrix-react-sdk version:": "versão do matrix-react-sdk:", + "Mute": "Mudo", + "olm version:": "versão do olm:", + "Operation failed": "A operação falhou", + "Remove %(threePid)s?": "Remover %(threePid)s?", + "riot-web version:": "versão do riot-web:", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Mostrar os horários em formato de 12h (p.ex: 2:30pm)", + "Unmute": "Tirar do mudo", + "Warning!": "Atenção!", + "You need to enter a user name.": "Você precisa inserir um nome de usuária(o).", + "Please select the destination room for this message": "Por favor, escolha a sala para onde quer encaminhar esta mensagem", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s apagou o nome da sala.", + "Analytics": "Análise", + "Options": "Opções", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot coleta informações anônimas de uso para nos permitir melhorar o sistema.", + "Passphrases must match": "As senhas têm que ser iguais", + "Passphrase must not be empty": "A senha não pode estar vazia", + "Export room keys": "Exportar chaves de sala", + "Enter passphrase": "Entre com a senha", + "Confirm passphrase": "Confirme a senha", + "Import room keys": "Importar chaves de sala", + "File to import": "Arquivo para importar", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Este processo permite que você exporte as chaves para mensagens que você recebeu em salas criptografadas para um arquivo local. Você poderá então importar o arquivo para outro cliente Matrix no futuro, de modo que este cliente também poderá descriptografar suas mensagens.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "O arquivo exportado será protegido com uma senha. Você deverá inserir a senha aqui para poder descriptografar o arquivo futuramente.", + "You must join the room to see its files": "Você precisa ingressar na sala para ver seus arquivos", + "Reject all %(invitedRooms)s invites": "Rejeitar todos os %(invitedRooms)s convites", + "Start new chat": "Iniciar nova conversa", + "Failed to invite": "Falha ao enviar o convite", + "Failed to invite user": "Falha ao convidar a(o) usuária(o)", + "Failed to invite the following users to the %(roomName)s room:": "Falha ao convidar as(os) seguintes usuárias(os) para a sala %(roomName)s:", + "Confirm Removal": "Confirmar a remoção", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Você tem certeza que quer apagar este evento? Note que se você apaga o nome de uma sala ou uma mudança de tópico, esta ação não poderá ser desfeita.", + "Unknown error": "Erro desconhecido", + "Incorrect password": "Senha incorreta", + "To continue, please enter your password.": "Para continuar, por favor insira a sua senha.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Para verificar que este dispositivo é confiável, por favor entre em contato com a(o) sua(seu) dona(o) usando outros meios, como por exemplo pessoalmente ou por uma chamada telefônica, e pergunte a esta pessoa se a chave que ela está vendo nas suas configurações de usuário para este dispositivo é igual a esta:", + "Device name": "Nome do dispositivo", + "Device key": "Chave do dispositivo", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Se a chave for a mesma, clique no botão \"verificar\" abaixo. Se não for a mesma, então alguma outra pessoa está interceptando este dispositivo e você provavelmente vai querer clicar no botão \"colocar na lista negra\".", + "In future this verification process will be more sophisticated.": "No futuro, este processo de verificação será mais sofisticado.", + "Verify device": "Verificar o dispositivo", + "I verify that the keys match": "Eu confirmo que as chaves são iguais", + "Unable to restore session": "Não foi possível restaurar a sessão", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Se você já usou antes uma versão mais recente do Riot, a sua sessão pode ser incompatível com esta versão. Feche esta janela e tente abrir com a versão mais recente.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Você está atualmente bloqueando dispositivos não verificados. Para enviar mensagens para estes dispositivos, você necessita antes verificá-los.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Nós recomendamos que você passe pelo processo de verificação para cada dispositivo para confirmar que eles pertencem às pessoas que efetivamente são suas donas, mas você pode reenviar a mensagem sem verificar isso, se assim o desejar.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" contém dispositivos que você não viu antes.", + "Unknown devices": "Dispositivos desconhecidos", + "Unknown Address": "Endereço desconhecido", + "Unblacklist": "Tirar da lista de bloqueados", + "Blacklist": "Colocar na lista de bloqueados", + "Unverify": "Des-verificar", + "Verify...": "Verificar...", + "ex. @bob:example.com": "p.ex: @joao:exemplo.com", + "Add User": "Adicionar usuária(o)", + "This Home Server would like to make sure you are not a robot": "Este Servidor de Base gostaria de confirmar que você não é um robô", + "Sign in with CAS": "Assinar com CAS", + "Custom Server Options": "Opções para Servidor Personalizado", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Você pode usar as opções de servidor personalizado para entrar em outros servidores Matrix ao especificar uma URL de um Servidor de Base diferente.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Isso permite que você use este aplicativo com uma conta Matrix existente em um servidor de base diferente.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Você também pode definir um servidor de identidades personalizado, mas isso vai impedir a sua interação com outros usuários a partir do endereço de email.", + "Dismiss": "Descartar", + "Please check your email to continue registration.": "Por favor, verifique o seu e-mail para continuar o processo de registro.", + "Token incorrect": "Token incorreto", + "Please enter the code it contains:": "Por favor, entre com o código que está na mensagem:", + "powered by Matrix": "rodando a partir do Matrix", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Se não especificar um endereço de e-mail, você não poderá redefinir sua senha. Tem certeza?", + "You are registering with %(SelectedTeamName)s": "Você está se registrando com %(SelectedTeamName)s", + "Default server": "Servidor padrão", + "Custom server": "Servidor personalizado", + "Home server URL": "URL do servidor de base", + "Identity server URL": "URL do servidor de identidades", + "What does this mean?": "O que isso significa?", + "Error decrypting audio": "Erro ao descriptografar o áudio", + "Error decrypting image": "Erro ao descriptografar a imagem", + "Error decrypting video": "Erro ao descriptografar o vídeo", + "Add an Integration": "Adicionar uma integração", + "Removed or unknown message type": "Mensagem removida ou de tipo desconhecido", + "URL Previews": "Pré-visualização de links", + "Drop file here to upload": "Arraste um arquivo aqui para enviar", + " (unsupported)": " (não suportado)", + "Ongoing conference call%(supportedText)s.": "Conferência%(supportedText)s em andamento.", + "Online": "Conectada/o", + "Idle": "Ocioso", + "Offline": "Offline", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "O arquivo exportado irá permitir a qualquer pessoa que o acesse a descriptografar qualquer uma das mensagens criptografadas que você veja, portanto seja bastante cuidadosa(o) em manter este arquivo seguro. Para deixar este arquivo mais protegido, recomendamos que você insira uma senha abaixo, que será usada para criptografar o arquivo. Só será possível importar os dados usando exatamente a mesma senha.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Este processo faz com que você possa importar as chaves de criptografia que tinha previamente exportado de outro cliente Matrix. Você poderá então descriptografar todas as mensagens que o outro cliente pôde criptografar.", + "Start automatically after system login": "Iniciar automaticamente ao iniciar o sistema", + "Desktop specific": "Específico para o app de computadores desktop", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Você será levado agora a um site de terceiros para poder autenticar a sua conta para uso com o serviço %(integrationsUrl)s. Você quer continuar?", + "Device already verified!": "Dispositivo já verificado!", + "Export": "Exportar", + "Guest access is disabled on this Home Server.": "O acesso para visitantes está desabilitado neste Servidor de Base.", + "Import": "Importar", + "Incorrect username and/or password.": "Nome de usuária(o) e/ou senha incorreto.", + "Invited": "Convidada(o)", + "Results from DuckDuckGo": "Resultados de DuckDuckGo", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "A chave de assinatura que você forneceu é a mesma que a chave de assinatura que você recebeu do dispositivo %(deviceId)s de %(userId)s . O dispositivo foi portanto marcado como verificado.", + "This Home Server does not support login using email address.": "Este Servidor de Base não permite login usando endereço de e-mail.", + "Unknown (user, device) pair:": "Par usuária(o)-dispositivo desconhecido:", + "Unrecognised command:": "Comando não reconhecido:", + "Unrecognised room alias:": "Apelido de sala não reconhecido:", + "Use compact timeline layout": "Usar o layout de linha do tempo compacta", + "Verified key": "Chave verificada", + "WARNING: Device already verified, but keys do NOT MATCH!": "ATENÇÃO: O dispositivo já foi verificado, mas as chaves NÃO SÃO IGUAIS!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ATENÇÃO: VERIFICAÇÃO DE CHAVE FALHOU! A chave de assinatura para a(o) usuária(o) %(userId)s e dispositivo %(deviceId)s é \"%(fprint)s\", que não é igual à chave fornecida \"%(fingerprint)s\". Isso pode significar que suas comunicações estão sendo interceptadas!", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s removeu a imagem da sala.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s alterou a imagem da sala %(roomName)s", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s alterou a imagem da sala para ", + "Missing Media Permissions, click here to request.": "Faltam permissões para uso de mídia no seu computador. Clique aqui para solicitá-las.", + "No Microphones detected": "Não foi detectado nenhum microfone", + "No Webcams detected": "Não foi detectada nenhuma Webcam", + "No media permissions": "Não há permissões de uso de vídeo/áudio no seu navegador", + "You may need to manually permit Riot to access your microphone/webcam": "Você talvez precise autorizar manualmente que o Riot acesse seu microfone e webcam", + "Default Device": "Dispositivo padrão", + "Microphone": "Microfone", + "Camera": "Câmera de vídeo", + "Add a topic": "Adicionar um tópico", + "VoIP": "VoIP", + "Anyone": "Qualquer pessoa", + "Are you sure you want to leave the room '%(roomName)s'?": "Você tem certeza que deseja sair da sala '%(roomName)s'?", + "Custom level": "Nível personalizado", + "Device ID:": "ID do dispositivo:", + "device id: ": "id do dispositivo: ", + "Device key:": "Chave do dispositivo:", + "Email address (optional)": "Endereço de e-mail (opcional)", + "Mobile phone number (optional)": "Número de telefone celular (opcional)", + "Password:": "Senha:", + "Register": "Registre-se", + "Remote addresses for this room:": "Endereços remotos para esta sala:", + "Save": "Salvar", + "Tagged as: ": "Marcado como: ", + "You have disabled URL previews by default.": "Você desabilitou pré-visualizações de links por padrão.", + "You have enabled URL previews by default.": "Você habilitou pré-visualizações de links por padrão.", + "Hide removed messages": "Ocultar mensagens removidas", + "Add": "Adicionar", + "%(count)s new messages": { + "one": "%(count)s nova mensagem", + "other": "%(count)s novas mensagens" + }, + "Error: Problem communicating with the given homeserver.": "Erro: problema de comunicação com o Servidor de Base fornecido.", + "Failed to fetch avatar URL": "Falha ao obter a URL da imagem de perfil", + "Home": "Início", + "The phone number entered looks invalid": "O número de telefone inserido parece ser inválido", + "Uploading %(filename)s and %(count)s others": { + "zero": "Enviando o arquivo %(filename)s", + "one": "Enviando o arquivo %(filename)s e %(count)s outros arquivos", + "other": "Enviando o arquivo %(filename)s e %(count)s outros arquivos" + }, + "Username invalid: %(errMessage)s": "Nome de usuária(o) inválido: %(errMessage)s", + "You must register to use this functionality": "Você deve se registrar para poder usar esta funcionalidade", + "Create new room": "Criar nova sala", + "Room directory": "Lista pública de salas", + "Start chat": "Iniciar conversa", + "New Password": "Nova senha", + "Start chatting": "Iniciar a conversa", + "Start Chatting": "Iniciar a conversa", + "Click on the button below to start chatting!": "Clique no botão abaixo para começar a conversar!", + "Create a new chat or reuse an existing one": "Criar uma nova conversa ou reutilizar alguma já existente", + "You already have existing direct chats with this user:": "Você já tem conversas pessoais com esta pessoa:", + "Username available": "Nome de usuária(o) disponível", + "Username not available": "Nome de usuária(o) indisponível", + "Something went wrong!": "Algo deu errado!", + "This will be your account name on the homeserver, or you can pick a different server.": "Este será seu nome de conta no Servidor de Base , ou então você pode escolher um servidor diferente.", + "If you already have a Matrix account you can log in instead.": "Se você já tem uma conta Matrix, pode também fazer login.", + "Accept": "Aceitar", + "Active call (%(roomName)s)": "Chamada ativa (%(roomName)s)", + "Admin Tools": "Ferramentas de administração", + "Alias (optional)": "Apelido (opcional)", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Não foi possível conectar ao Servidor de Base. Por favor, confira sua conectividade à internet, garanta que o certificado SSL do Servidor de Base é confiável, e que uma extensão do navegador não esteja bloqueando as requisições de rede.", + "Click here to join the discussion!": "Clique aqui para participar da conversa!", + "Close": "Fechar", + "Custom": "Personalizado", + "Decline": "Recusar", + "Disable Notifications": "Desabilitar notificações", + "Drop File Here": "Arraste o arquivo aqui", + "Enable Notifications": "Habilitar notificações", + "Encrypted by a verified device": "Criptografado por um dispositivo verificado", + "Encrypted by an unverified device": "Criptografado por um dispositivo não verificado", + "Failed to upload profile picture!": "Falha ao enviar a imagem de perfil!", + "Incoming call from %(name)s": "Chamada de %(name)s recebida", + "Incoming video call from %(name)s": "Chamada de vídeo de %(name)s recebida", + "Incoming voice call from %(name)s": "Chamada de voz de %(name)s recebida", + "Join as voice or video.": "Participar por voz ou por vídeo.", + "Last seen": "Último uso", + "Level:": "Nível:", + "No display name": "Sem nome público de usuária(o)", + "Private Chat": "Conversa privada", + "Public Chat": "Conversa pública", + "Reason: %(reasonText)s": "Justificativa: %(reasonText)s", + "Rejoin": "Voltar a participar da sala", + "Room contains unknown devices": "Esta sala contém dispositivos desconhecidos", + "%(roomName)s does not exist.": "%(roomName)s não existe.", + "%(roomName)s is not accessible at this time.": "%(roomName)s não está acessível neste momento.", + "Seen by %(userName)s at %(dateTime)s": "Visto por %(userName)s em %(dateTime)s", + "Send anyway": "Enviar de qualquer maneira", + "Show Text Formatting Toolbar": "Exibir barra de formatação de texto", + "Start authentication": "Iniciar autenticação", + "This invitation was sent to an email address which is not associated with this account:": "Este convite foi enviado para um endereço de e-mail que não é associado a esta conta:", + "This room": "Esta sala", + "To link to a room it must have an address.": "Para produzir um link para uma sala, ela necessita ter um endereço.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Não foi possível garantir que o endereço para o qual este convite foi enviado bate com alqum que está associado com sua conta.", + "Undecryptable": "Não é possível descriptografar", + "Unencrypted message": "Mensagem não criptografada", + "unknown caller": "a pessoa que está chamando é desconhecida", + "Unnamed Room": "Sala sem nome", + "Unverified": "Não verificado", + "Upload new:": "Enviar novo:", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nível de permissão %(powerLevelNumber)s)", + "Verified": "Verificado", + "Would you like to accept or decline this invitation?": "Você gostaria de aceitar ou recusar este convite?", + "You have been banned from %(roomName)s by %(userName)s.": "Você foi expulso(a) da sala %(roomName)s por %(userName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "Você foi removido(a) da sala %(roomName)s por %(userName)s.", + "You may wish to login with a different account, or add this email to this account.": "Você pode querer fazer login com uma conta diferente, ou adicionar este e-mail a esta conta.", + "Your home server does not support device management.": "O seu Servidor de Base não suporta o gerenciamento de dispositivos.", + "(~%(count)s results)": { + "one": "(~%(count)s resultado)", + "other": "(~%(count)s resultados)" + }, + "Device Name": "Nome do dispositivo", + "(could not connect media)": "(não foi possível conectar-se à mídia)", + "(no answer)": "(sem resposta)", + "(unknown failure: %(reason)s)": "(falha desconhecida: %(reason)s)", + "Your browser does not support the required cryptography extensions": "O seu navegador não suporta as extensões de criptografia necessárias", + "Not a valid Riot keyfile": "Não é um arquivo de chaves Riot válido", + "Authentication check failed: incorrect password?": "Falha ao checar a autenticação: senha incorreta?", + "Disable Peer-to-Peer for 1:1 calls": "Desabilitar as chamadas 1:1 par-a-par", + "Do you want to set an email address?": "Você deseja definir um endereço de e-mail?", + "This will allow you to reset your password and receive notifications.": "Isso permitirá que você redefina sua senha e receba notificações.", + "To return to your account in future you need to set a password": "Para poder futuramente voltar à sua conta, você precisa definir uma senha", + "Skip": "Pular", + "Start verification": "Iniciar a verificação", + "Share without verifying": "Compartilhar sem verificar", + "Ignore request": "Ignorar o pedido", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Você adicionou um novo dispositivo '%(displayName)s', que está solicitando chaves de criptografia.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Seu dispositivo não verificado '%(displayName)s' está solicitando chaves de criptografia.", + "Encryption key request": "Solicitação de chave de criptografia", + "Invite to Community": "Convidar à comunidade", + "Restricted": "Restrito", + "Name or matrix ID": "Nome ou ID matrix", + "Add to community": "Adicionar à comunidade", + "Add rooms to the community": "Adicionar salas à comunidade", + "Failed to invite users to community": "Falha ao convidar os usuários à comunidade", + "Failed to invite users to %(groupId)s": "Falha ao convidar os usuários para %(groupId)s", + "Failed to invite the following users to %(groupId)s:": "Falha ao convidar os seguintes usuários para %(groupId)s:", + "Failed to add the following rooms to %(groupId)s:": "Falha ao adicionar as seguintes salas para %(groupId)s:", + "You are not in this room.": "Você não está nesta sala.", + "You do not have permission to do that in this room.": "Você não tem permissão para fazer isto nesta sala.", + "Ignored user": "Usuário ignorado", + "You are no longer ignoring %(userId)s": "Você parou de ignorar %(userId)s", + "Edit": "Editar", + "Unpin Message": "Desafixar Mensagem", + "Add rooms to this community": "Adicionar salas na comunidade", + "The version of Riot.im": "A Versão do Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Se você está ou não conectado (Nos não Gravaremos seu nome de usuário)", + "The platform you're on": "A plataforma que você está usando", + "Your language of choice": "O idioma que você selecionou", + "Which officially provided instance you are using, if any": "Qual instância oficial você está usando, se for o caso", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Se você está usando o editor de texto visual", + "Your homeserver's URL": "A URL do seu Servidor de Base (homeserver)", + "Your identity server's URL": "A URL do seu servidor de identidade", + "The information being sent to us to help make Riot.im better includes:": "As informações que estão sendo usadas para ajudar a melhorar o Riot.im incluem:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Quando esta página tem informação de identificação, como uma sala, ID de usuária/o ou de grupo, estes dados são removidos antes de serem enviados ao servidor.", + "Call Failed": "A chamada falhou", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Há dispositivos desconhecidos nesta sala: se você continuar sem verificá-los, será possível alguém espiar sua chamada.", + "Review Devices": "Revisar dispositivos", + "Call Anyway": "Ligar assim mesmo", + "Answer Anyway": "Responder assim mesmo", + "Call": "Ligar", + "Answer": "Responder", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s de %(monthName)s de%(fullYear)s", + "Who would you like to add to this community?": "Quem você gostaria de adicionar a esta comunidade?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Atenção: qualquer pessoa que você adicionar a esta comunidade estará publicamente visível para todas as pessoas que conheçam o ID da comunidade", + "Invite new community members": "Convidar novos integrantes para a comunidade", + "Which rooms would you like to add to this community?": "Quais salas você quer adicionar a esta comunidade?", + "Show these rooms to non-members on the community page and room list?": "Exibir estas salas para não integrantes na página da comunidade e na lista de salas?", + "Room name or alias": "Nome da sala ou apelido", + "Unable to create widget.": "Não foi possível criar o widget.", + "You are now ignoring %(userId)s": "Você está agora ignorando %(userId)s", + "Unignored user": "Usuária/o não está sendo mais ignorada/o", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s alterou o seu nome público para %(displayName)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s alterou as mensagens fixas da sala.", + "%(widgetName)s widget modified by %(senderName)s": "O widget %(widgetName)s foi modificado por %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "O widget %(widgetName)s foi criado por %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "O widget %(widgetName)s foi removido por %(senderName)s", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s e %(count)s outras pessoas estão escrevendo", + "one": "%(names)s e uma outra pessoa estão escrevendo" + }, + "Send": "Enviar", + "Message Pinning": "Fixar mensagem", + "Disable Emoji suggestions while typing": "Desativar sugestões de emojis enquanto estiver escrevendo", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Ocultar mensagens de entrada e de saída (não afeta convites, expulsões e banimentos)", + "Hide avatar changes": "Ocultar alterações da imagem de perfil", + "Hide display name changes": "Ocultar alterações de nome de usuária/o", + "Enable automatic language detection for syntax highlighting": "Ativar detecção automática de idioma para ressaltar erros de ortografia", + "Hide avatars in user and room mentions": "Ocultar avatares em menções a usuárias/os e a salas", + "Disable big emoji in chat": "Desativar emojis grandes na sala", + "Automatically replace plain text Emoji": "Substituir automaticamente os emojis em texto", + "Mirror local video feed": "Espelhar o feed de vídeo local", + "Enable inline URL previews by default": "Ativar, por padrão, a visualização de resumo de links", + "Enable URL previews for this room (only affects you)": "Ativar, para esta sala, a visualização de links (só afeta você)", + "Enable URL previews by default for participants in this room": "Ativar, para todas/os as/os integrantes desta sala, a visualização de links", + "Delete %(count)s devices": { + "other": "Removar %(count)s dispositivos", + "one": "Remover dispositivo" + }, + "Select devices": "Selecionar dispositivos", + "Cannot add any more widgets": "Não é possível adicionar novos widgets", + "The maximum permitted number of widgets have already been added to this room.": "O número máximo de widgets permitidos já foi atingido nesta sala.", + "Add a widget": "Adicionar um widget", + "%(senderName)s sent an image": "%(senderName)s enviou uma imagem", + "%(senderName)s sent a video": "%(senderName)s enviou um vídeo", + "%(senderName)s uploaded a file": "%(senderName)s enviou um arquivo", + "Disinvite this user?": "Desconvidar esta/e usuária/o?", + "Kick this user?": "Excluir esta/e usuária/o?", + "Unban this user?": "Desfazer o banimento desta/e usuária/o?", + "Ban this user?": "Banir esta/e usuária/o?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Você não poderá desfazer esta alteração, já que está baixando suas próprias permissões. Se você for a última pessoa nesta sala, será impossível recuperar as permissões atuais.", + "Unignore": "Não ignorar mais", + "Ignore": "Ignorar", + "Jump to read receipt": "Ir para a confirmação de leitura", + "Mention": "Mencionar", + "Invite": "Convidar", + "User Options": "Opções de usuária/o", + "Send an encrypted reply…": "Enviar uma resposta criptografada…", + "Send a reply (unencrypted)…": "Enviar uma resposta (não criptografada)…", + "Send an encrypted message…": "Enviar mensagem criptografada…", + "Send a message (unencrypted)…": "Enviar mensagem (não criptografada)…", + "Jump to message": "Pular para mensagem", + "No pinned messages.": "Não há mensagens fixas.", + "Loading...": "Carregando...", + "Pinned Messages": "Mensagens fixas", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "Online há %(duration)s", + "Idle for %(duration)s": "Inativo há %(duration)s", + "Offline for %(duration)s": "Offline há %(duration)s", + "Unknown for %(duration)s": "Status desconhecido há %(duration)s", + "Unknown": "Desconhecido", + "Replying": "Respondendo", + "No rooms to show": "Nenhuma sala para mostrar", + "Unnamed room": "Sala sem nome", + "World readable": "Aberto publicamente à leitura", + "Guests can join": "Convidadas/os podem entrar", + "Remove avatar": "Remover a imagem de perfil", + "Drop here to favourite": "Arraste aqui para favoritar", + "Drop here to tag direct chat": "Arraste aqui para marcar como conversa direta", + "Drop here to restore": "Arraste aqui para restaurar", + "Drop here to demote": "Arraste aqui para reduzir privilégio", + "Community Invites": "Convites a comunidades", + "You have been kicked from this room by %(userName)s.": "Você foi excluída/o desta sala por %(userName)s.", + "You have been banned from this room by %(userName)s.": "Você foi banida/o desta sala por %(userName)s.", + "You are trying to access a room.": "Você está tentando acessar uma sala.", + "To change the room's avatar, you must be a": "Para alterar a imagem da sala, você deve ser um(a)", + "To change the room's name, you must be a": "Para mudar o nome da sala, você deve ser um(a)", + "To change the room's main address, you must be a": "Para mudar o endereço principal da sala, você deve ser um(a)", + "To change the room's history visibility, you must be a": "Para mudar a visibilidade do histórico desta sala, você deve ser um(a)", + "To change the permissions in the room, you must be a": "Para mudar as permissões nesta sala, você deve ser um(a)", + "To change the topic, you must be a": "Para alterar o tópico desta sala, você deve ser um(a)", + "To modify widgets in the room, you must be a": "Para alterar widgets nesta sala, você deve ser um(a)", + "Banned by %(displayName)s": "Banida/o por %(displayName)s", + "Publish this room to the public in %(domain)s's room directory?": "Quer publicar esta sala na lista pública de salas em %(domain)s's?", + "Members only (since the point in time of selecting this option)": "Apenas integrantes (a partir do momento em que esta opção for selecionada)", + "Members only (since they were invited)": "Apenas integrantes (desde que foram convidadas/os)", + "Members only (since they joined)": "Apenas integrantes (desde que entraram na sala)", + "To send messages, you must be a": "Para enviar mensagens, você deve ser um(a)", + "To invite users into the room, you must be a": "Para convidar pessoas à sala, você deve ser um(a)", + "To configure the room, you must be a": "Para alterar configurações desta sala, você deve ser um(a)", + "To kick users, you must be a": "Para excluir pessoas desta sala, você deve ser um(a)", + "To ban users, you must be a": "Para banir pessoas desta sala, você deve ser um(a)", + "To remove other users' messages, you must be a": "Para apagar mensagens de outras pessoas nesta sala, você deve ser um(a)", + "To send events of type , you must be a": "Para enviar eventos do tipo , você deve ser um(a)", + "Addresses": "Endereços", + "Invalid community ID": "ID de comunidade inválido", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' não é um ID de comunidade válido", + "Flair": "Flair", + "Showing flair for these communities:": "Esta sala mostrará flairs para as seguintes comunidades:", + "This room is not showing flair for any communities": "Esta sala não está mostrando fairs para nenhuma comunidade", + "New community ID (e.g. +foo:%(localDomain)s)": "Novo ID de comunidade (p.ex: +foo:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "Pré-visualizações de links estão ativadas por padrão para participantes desta sala.", + "URL previews are disabled by default for participants in this room.": "Pré-visualizações de links estão desativadas por padrão para participantes desta sala.", + "Copied!": "Copiado!", + "Failed to copy": "Não foi possível copiar", + "Message removed by %(userId)s": "Mensagem removida por %(userId)s", + "Message removed": "Mensagem removida", + "Robot check is currently unavailable on desktop - please use a web browser": "A verificação através de robô está atualmente indisponível na versão desktop - utilize um navegador web", + "An email has been sent to %(emailAddress)s": "Um email foi enviado para %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "Uma mensagem de texto foi enviada para %(msisdn)s", + "Username on %(hs)s": "Nome de usuária/o em %(hs)s", + "%(serverName)s Matrix ID": "ID Matrix em %(serverName)s", + "Remove from community": "Remover da comunidade", + "Disinvite this user from community?": "Desconvidar esta pessoa da comunidade?", + "Remove this user from community?": "Remover esta pessoa da comunidade?", + "Failed to withdraw invitation": "Não foi possível retirar o convite", + "Failed to remove user from community": "Não foi possível remover esta pessoa da comunidade", + "Filter community members": "Filtrar participantes da comunidade", + "Flair will appear if enabled in room settings": "Os flairs aparecerão se estiverem ativados nas configurações da sala", + "Flair will not appear": "Os flairs não aparecerão", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Tem certeza que quer remover a sala '%(roomName)s' do grupo %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Remover uma sala da comunidade também a removerá da página da comunidade.", + "Failed to remove room from community": "Não foi possível remover a sala da comunidade", + "Failed to remove '%(roomName)s' from %(groupId)s": "Não foi possível remover a sala '%(roomName)s' do grupo %(groupId)s", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "A visibilidade da sala '%(roomName)s' do grupo %(groupId)s não pôde ser atualizada.", + "Visibility in Room List": "Visibilidade na lista de salas", + "Visible to everyone": "Visível para todo mundo", + "Only visible to community members": "Apenas visível para integrantes da comunidade", + "Filter community rooms": "Filtrar salas da comunidade", + "Something went wrong when trying to get your communities.": "Algo deu errado quando estava carregando suas comunidades.", + "Display your community flair in rooms configured to show it.": "Mostrar o flair de sua comunidade em salas configuradas para isso.", + "You're not currently a member of any communities.": "Atualmente você não é integrante de nenhuma comunidade.", + "NOTE: Apps are not end-to-end encrypted": "Nota: os apps não são criptografados ponta-a-ponta", + "Do you want to load widget from URL:": "Você quer carregar o widget da URL:", + "Allow": "Permitir", + "Delete Widget": "Apagar widget", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Remover um widget o remove para todas as pessoas desta sala. Tem certeza que quer remover este widget?", + "Delete widget": "Remover widget", + "Revoke widget access": "Retirar acesso ao widget", + "Minimize apps": "Minimizar apps", + "Communities": "Comunidades", + "Integrations Error": "Erro de integração", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s entraram %(count)s vezes", + "one": "%(severalUsers)s entraram" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s entrou %(count)s vezes", + "one": "%(oneUser)s entrou" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s saíram %(count)s vezes", + "one": "%(severalUsers)s saíram" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s saiu %(count)s vezes", + "one": "%(oneUser)s saiu" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s entraram e saíram %(count)s vezes", + "one": "%(severalUsers)s entraram e saíram" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s entrou e saiu %(count)s vezes", + "one": "%(oneUser)s entrou e saiu" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s saíram e entraram %(count)s vezes", + "one": "%(severalUsers)s saíram e entraram" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s saiu e entrou %(count)s vezes", + "one": "%(oneUser)s saiu e entrou" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s rejeitaram seus convites %(count)s vezes", + "one": "%(severalUsers)s rejeitaram seus convites" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s rejeitou seu convite %(count)s vezes", + "one": "%(oneUser)s rejeitou seu convite" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s tiveram seus convites retirados %(count)s vezes", + "one": "%(severalUsers)s tiveram seus convites retirados" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s teve seus convites removidos %(count)s vezes", + "one": "%(oneUser)s teve seu convite removido" + }, + "were invited %(count)s times": { + "other": "foram convidadas/os %(count)s vezes", + "one": "foram convidadas/os" + }, + "was invited %(count)s times": { + "other": "foi convidada/o %(count)s vezes", + "one": "foi convidada/o" + }, + "were banned %(count)s times": { + "other": "foram banidas/os %(count)s vezes", + "one": "foram banidas/os" + }, + "was banned %(count)s times": { + "other": "foi banida/o %(count)s vezes", + "one": "foi banida/o" + }, + "were unbanned %(count)s times": { + "other": "tiveram seu banimento desfeito %(count)s vezes", + "one": "tiveram seu banimento desfeito" + }, + "was unbanned %(count)s times": { + "other": "teve seu banimento desfeito %(count)s vezes", + "one": "teve seu banimento desfeito" + }, + "were kicked %(count)s times": { + "other": "foram excluídas/os %(count)s vezes", + "one": "foram excluídas/os" + }, + "was kicked %(count)s times": { + "other": "foi excluída/o %(count)s vezes", + "one": "foi excluída/o" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s alteraram o seu nome %(count)s vezes", + "one": "%(severalUsers)s alteraram o seu nome" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s alterou o seu nome %(count)s vezes", + "one": "%(oneUser)s alterou o seu nome" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s alteraram a sua imagem de perfil %(count)s vezes", + "one": "%(severalUsers)s alteraram a sua imagem de perfil" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s alterou a sua imagem de perfil %(count)s vezes", + "one": "%(oneUser)s alterou a sua imagem de perfil" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s e %(count)s outras", + "one": "%(items)s e uma outra" + }, + "collapse": "colapsar", + "expand": "expandir", + "Custom of %(powerLevel)s": "Personalizado de %(powerLevel)s", + "In reply to ": "Em resposta a ", + "And %(count)s more...": { + "other": "E %(count)s mais..." + }, + "Matrix ID": "ID Matrix", + "Matrix Room ID": "ID da sala Matrix", + "email address": "endereço de e-mail", + "Try using one of the following valid address types: %(validTypesList)s.": "Tente usar um dos seguintes tipos de endereço válidos: %(validTypesList)s.", + "You have entered an invalid address.": "Você entrou com um endereço inválido.", + "Community IDs cannot be empty.": "IDs de comunidades não podem estar em branco.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "IDs de comunidade podem apenas ter os seguintes caracteres: a-z, 0-9, ou '=_-./'", + "Something went wrong whilst creating your community": "Algo deu errado ao criar sua comunidade", + "Create Community": "Criar comunidade", + "Community Name": "Nome da comunidade", + "Example": "Exemplo", + "Community ID": "ID da comunidade", + "example": "exemplo", + "Create": "Criar", + "Advanced options": "Opções avançadas", + "Block users on other matrix homeservers from joining this room": "Proibir pessoas de outros servidores matrix (homeservers) de ingressarem nesta sala", + "This setting cannot be changed later!": "Esta configuração não poderá ser desfeita posteriormente!", + "Loading device info...": "Carregando informações do dispositivo...", + "To get started, please pick a username!": "Para começar, escolha um nome de usuária/o!", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML para a página da sua comunidade

\n

\n Use a descrição longa para apresentar a comunidade para novas/os integrantes ou partilhe links importantes.\n

\n

\n Você pode até mesmo usar tags 'img' do HTML\n

\n", + "Add rooms to the community summary": "Adicionar salas para o índice da comunidade", + "Which rooms would you like to add to this summary?": "Quais salas você gostaria de adicionar a este índice?", + "Add to summary": "Adicionar ao índice", + "Failed to add the following rooms to the summary of %(groupId)s:": "Não foi possível adicionar as seguintes salas para o índice da comunidade %(groupId)s:", + "Add a Room": "Adicionar uma sala", + "Failed to remove the room from the summary of %(groupId)s": "Não foi possível remover a sala do índice da comunidade %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "A sala '%(roomName)s' não pôde ser removida do índice.", + "Add users to the community summary": "Adicionar pessoas para o índice da comunidade", + "Who would you like to add to this summary?": "Quem você gostaria de adicionar a este índice?", + "Failed to add the following users to the summary of %(groupId)s:": "Não foi possível adicionar as seguintes pessoas para o índice da comunidade %(groupId)s:", + "Add a User": "Adicionar uma pessoa", + "Failed to remove a user from the summary of %(groupId)s": "Não foi possível remover uma pessoa do índice da comunidade %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "'%(displayName)s' não pôde ser removida/o do índice.", + "Failed to upload image": "O envio da imagem falhou", + "Failed to update community": "A atualização da comunidade falhou", + "Unable to accept invite": "Não foi possível aceitar o convite", + "Unable to reject invite": "Não foi possível rejeitar o convite", + "Leave Community": "Deixar a comunidade", + "Leave %(groupName)s?": "Quer sair da comunidade %(groupName)s?", + "Leave": "Sair", + "Community Settings": "Configurações da comunidade", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Estas salas são exibidas para as/os integrantes da comunidade na página da comunidade. Integrantes da comunidade podem entrar nas salas ao clicar nas mesmas.", + "Featured Rooms:": "Salas em destaque:", + "Featured Users:": "Pessoas em destaque:", + "%(inviter)s has invited you to join this community": "%(inviter)s convidou você para entrar nesta comunidade", + "You are an administrator of this community": "Você é administrador(a) desta comunidade", + "You are a member of this community": "Você é um/a integrante desta comunidade", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Sua comunidade não tem uma descrição longa, ou seja, uma página HTML para ser exibida às pessoas que fazem parte da comunidade.
Clique aqui para abrir as configurações e criar uma!", + "Long Description (HTML)": "Descrição longa (HTML)", + "Description": "Descrição", + "Community %(groupId)s not found": "A comunidade %(groupId)s não foi encontrada", + "This Home server does not support communities": "Este servidor de base não permite comunidades", + "Failed to load %(groupId)s": "Não foi possível carregar a comunidade %(groupId)s", + "This room is not public. You will not be able to rejoin without an invite.": "Esta sala não é pública. Você não poderá voltar sem ser convidada/o.", + "Old cryptography data detected": "Dados de criptografia antigos foram detectados", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Dados de uma versão anterior do Riot foram detectados. Isso fará com que a criptografia ponta-a-ponta não funcione na versão anterior. Mensagens criptografadas ponta-a-ponta que foram trocadas recentemente usando a versão antiga do Riot talvez não possam ser decriptografadas nesta versão. Isso também pode fazer com que mensagens trocadas com esta versão falhem. Se você tiver problemas desta natureza, faça logout e entre novamente. Para manter o histórico de mensagens, exporte e reimporte suas chaves de criptografia.", + "Your Communities": "Suas comunidades", + "Error whilst fetching joined communities": "Erro baixando comunidades das quais você faz parte", + "Create a new community": "Criar nova comunidade", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Crie uma comunidade para agrupar em um mesmo local pessoas e salas! Monte uma página inicial personalizada para dar uma identidade ao seu espaço no universo Matrix.", + "Show devices, send anyway or cancel.": "Exibir dispositivos, enviar assim mesmo ou cancelar.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Reenviar todas ou cancelar todas agora. Você também pode selecionar mensagens individualmente a serem reenviadas ou canceladas.", + "one": "Reenviar mensagem ou cancelar mensagem agora." + }, + "Warning": "Atenção", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Não há mais ninguém aqui! Você deseja convidar outras pessoas ou remover este alerta sobre a sala vazia?", + "Clear filter": "Remover filtro", + "Light theme": "Tema claro", + "Dark theme": "Tema escuro", + "Status.im theme": "Tema Status.im", + "Autocomplete Delay (ms):": "Tempo para preenchimento automático (ms):", + "Ignored Users": "Usuárias/os ignoradas/os", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "A privacidade é importante para nós, portanto nós não coletamos nenhum dado pessoa ou identificável para nossas estatísticas.", + "Learn more about how we use analytics.": "Saiba mais sobre como nós usamos os dados estatísticos.", + "Updates": "Atualizações", + "Check for update": "Verificar atualizações", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Um email foi enviado para %(emailAddress)s. Quando você tiver seguido o link que está nesta mensagem, clique abaixo.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Note que você está se conectando ao servidor %(hs)s, e não ao servidor matrix.org.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Este servidor de base (homeserver) não oferece fluxos de login que funcionem neste cliente.", + "Sign in to get started": "Conecte-se para começar", + "Unbans user with given id": "Retira o banimento para a pessoa com este id", + "Define the power level of a user": "Definir o nível de permissões de um(a) usuário(a)", + "Sets the room topic": "Define o tópico da sala", + "Changes colour scheme of current room": "Altera o esquema de cores da sala atual", + "Verifies a user, device, and pubkey tuple": "Verifica um(a) usuário(a), dispositivo ou tuplo da chave pública", + "Ignores a user, hiding their messages from you": "Ignora um(a) usuário(a), ocultando suas mensagens de você", + "Stops ignoring a user, showing their messages going forward": "Deixa de ignorar um(a) usuário(a), exibindo suas mensagens daqui para frente", + "Notify the whole room": "Notifica a sala inteira", + "Room Notification": "Notificação da sala", + "Failed to set direct chat tag": "Falha ao definir esta conversa como direta", + "Failed to remove tag %(tagName)s from room": "Falha ao remover a tag %(tagName)s da sala", + "Failed to add tag %(tagName)s to room": "Falha ao adicionar a tag %(tagName)s para a sala", + "Did you know: you can use communities to filter your Riot.im experience!": "Você sabia? Você pode usar as comunidades para filtrar a sua experiência no Riot!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Para criar um filtro, arraste a imagem de uma comunidade sobre o painel de filtros na extrema esquerda da sua tela. Você pode clicar na imagem de uma comunidade no painel de filtros a qualquer momento para ver apenas as salas e pessoas associadas com esta comunidade.", + "Disable Community Filter Panel": "Desativar painel de filtros de Comunidades", + "Your key share request has been sent - please check your other devices for key share requests.": "Seu pedido de confirmação de chaves foi realizado - favor verificar seus outros dispositivos.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Pedidos de confirmação de chaves são enviados aos outros dispositivos automaticamente. Se você rejeitou ou negou uma confirmação de chaves em seus outros dispositivos, clique aqui para enviar novamente.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Se seus outros dispositivos não têm a chave para esta mensagem, você não poderá decriptá-las.", + "Key request sent.": "Requisição de chave enviada.", + "Re-request encryption keys from your other devices.": "Requisitar novamente chaves de encriptação de seus outros dispositivos.", + "%(user)s is a %(userRole)s": "%(user)s é %(userRole)s", + "Fetching third party location failed": "Falha ao acessar localização de terceiros", + "A new version of Riot is available.": "Uma nova versão do Riot está disponível.", + "I understand the risks and wish to continue": "Entendo os riscos e desejo continuar", + "Couldn't load home page": "Não foi possível carregar a página inicial", + "Send Account Data": "Enviar Dados da Conta", + "Advanced notification settings": "Configurações avançadas de notificação", + "Uploading report": "Enviando o relatório", + "Sunday": "Domingo", + "Notification targets": "Alvos de notificação", + "Today": "Hoje", + "Failed to get protocol list from Home Server": "Falha em acessar a lista de protocolos do servidor padrão", + "You are not receiving desktop notifications": "Você não está recebendo notificações desktop", + "Friday": "Sexta", + "Update": "Atualizar", + "What's New": "Novidades", + "Add an email address above to configure email notifications": "Insira um endereço de email no campo acima para configurar suas notificações por email", + "Expand panel": "Expandir o painel", + "On": "Ativado", + "%(count)s Members": { + "other": "%(count)s Membros", + "one": "%(count)s Membros" + }, + "Filter room names": "Filtrar salas por título", + "Changelog": "Histórico de alterações", + "Waiting for response from server": "Esperando por resposta do servidor", + "Uploaded on %(date)s by %(user)s": "Enviada em %(date)s por %(user)s", + "Send Custom Event": "Enviar Evento Customizado", + "All notifications are currently disabled for all targets.": "Todas as notificações estão atualmente desabilitadas para todos os casos.", + "delete the alias.": "apagar o apelido da sala.", + "To return to your account in future you need to set a password": "Para poder, futuramente, retornar à sua conta, você precisa definir uma senha", + "Forget": "Esquecer", + "#example": "#exemplo", + "Hide panel": "Ocultar o painel", + "You cannot delete this image. (%(code)s)": "Você não pode apagar esta imagem. (%(code)s)", + "Cancel Sending": "Cancelar o envio", + "This Room": "Esta sala", + "The Home Server may be too old to support third party networks": "O servidor pode ser muito antigo para suportar redes de terceiros", + "Resend": "Reenviar", + "Error saving email notification preferences": "Erro ao salvar as preferências de notificação por email", + "Messages containing my display name": "Mensagens contendo meu nome público", + "Messages in one-to-one chats": "Mensagens em conversas pessoais", + "Unavailable": "Indisponível", + "View Decrypted Source": "Ver a fonte descriptografada", + "Failed to update keywords": "Falha ao alterar as palavras-chave", + "remove %(name)s from the directory.": "remover %(name)s da lista pública de salas.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Notificações sobre as seguintes palavras-chave seguem regras que não podem ser exibidas aqui:", + "Safari and Opera work too.": "Safari e Opera Funciona bem.", + "Please set a password!": "Por favor, defina uma senha!", + "You have successfully set a password!": "Você definiu sua senha com sucesso!", + "An error occurred whilst saving your email notification preferences.": "Um erro ocorreu enquanto o sistema estava salvando suas preferências de notificação por email.", + "Explore Room State": "Explorar Estado da Sala", + "Source URL": "URL fonte", + "Messages sent by bot": "Mensagens enviadas por bots", + "Filter results": "Filtrar resultados", + "Members": "Membros", + "No update available.": "Não há atualizações disponíveis.", + "Noisy": "Barulhento", + "Files": "Arquivos", + "Collecting app version information": "Coletando informação sobre a versão do app", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Apagar o apelido %(alias)s da sala e remover %(name)s da lista pública?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Isso permitirá que você possa retornar à sua conta após fazer logout, e também fazer login em outros dispositivos.", + "Keywords": "Palavras-chave", + "Enable notifications for this account": "Ativar notificações para esta conta", + "Directory": "Diretório", + "Invite to this community": "Convidar para essa comunidade", + "Search for a room": "Procurar por uma sala", + "Messages containing keywords": "Mensagens contendo palavras-chave", + "Room not found": "Sala não encontrada", + "Tuesday": "Terça", + "Enter keywords separated by a comma:": "Coloque cada palavras-chave separada por vírgula:", + "Search…": "Buscar…", + "You have successfully set a password and an email address!": "Você definiu uma senha e um endereço de e-mail com sucesso!", + "Remove %(name)s from the directory?": "Remover %(name)s da lista pública de salas?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "O Riot usa muitas funcionalidades avançadas do navegador, algumas das quais não estão disponíveis ou ainda são experimentais no seu navegador atual.", + "Developer Tools": "Ferramentas do desenvolvedor", + "Enable desktop notifications": "Ativar notificações no desktop", + "Explore Account Data": "Explorar Dados da Conta", + "Remove from Directory": "Remover da lista pública de salas", + "Saturday": "Sábado", + "Remember, you can always set an email address in user settings if you change your mind.": "Lembre-se: você pode sempre definir um endereço de e-mail nas configurações de usuário, se mudar de ideia.", + "Direct Chat": "Conversa pessoal", + "The server may be unavailable or overloaded": "O servidor pode estar inacessível ou sobrecarregado", + "Reject": "Rejeitar", + "Failed to set Direct Message status of room": "Falha em definir a mensagem de status da sala", + "Monday": "Segunda", + "All messages (noisy)": "Todas as mensagens (alto)", + "Enable them now": "Habilitar agora", + "Messages containing my user name": "Mensagens contendo meu nome de usuário", + "Toolbox": "Ferramentas", + "Collecting logs": "Coletando logs", + "more": "ver mais", + "You must specify an event type!": "Você precisa especificar um tipo do evento!", + "(HTTP status %(httpStatus)s)": "(Status HTTP %(httpStatus)s)", + "Invite to this room": "Convidar para esta sala", + "Please install Chrome or Firefox for the best experience.": "Por favor Instale Chrome Ou Firefox para uma melhor Experiencia.", + "Failed to get public room list": "Falha ao acessar a lista pública de salas", + "Send logs": "Enviar relatórios de erro", + "All messages": "Todas as mensagens", + "Call invitation": "Convite para chamada", + "Downloading update...": "Baixando atualização...", + "State Key": "Chave do Estado", + "Failed to send custom event.": "Falha ao enviar evento personalizado.", + "What's new?": "O que há de novidades?", + "Notify me for anything else": "Notificar-me sobre qualquer outro evento", + "When I'm invited to a room": "Quando sou convidada(o) a uma sala", + "Can't update user notification settings": "Não é possível atualizar as preferências de notificação", + "Notify for all other messages/rooms": "Notificar para todas as outras mensagens e salas", + "Unable to look up room ID from server": "Não foi possível buscar identificação da sala no servidor", + "Couldn't find a matching Matrix room": "Não foi possível encontrar uma sala correspondente no servidor Matrix", + "All Rooms": "Todas as salas", + "You cannot delete this message. (%(code)s)": "Você não pode apagar esta mensagem. (%(code)s)", + "Thursday": "Quinta", + "Forward Message": "Encaminhar", + "Back": "Voltar", + "Reply": "Responder", + "Show message in desktop notification": "Mostrar mensagens na notificação", + "Unhide Preview": "Mostrar a pré-visualização", + "Unable to join network": "Não foi possível conectar na rede", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Você pode te-las configurado em outro cliente além do Riot. Você não pode ajustá-las no Riot, mas ainda assim elas se aplicam aqui", + "Sorry, your browser is not able to run Riot.": "Perdão. O seu navegador não é capaz de rodar o Riot.", + "Messages in group chats": "Mensagens em salas", + "Yesterday": "Ontem", + "Error encountered (%(errorDetail)s).": "Erro encontrado (%(errorDetail)s).", + "Login": "Fazer login", + "Low Priority": "Baixa prioridade", + "Unable to fetch notification target list": "Não foi possível obter a lista de alvos de notificação", + "Set Password": "Definir senha", + "Enable audible notifications in web client": "Ativar notificações de áudio no cliente web", + "Off": "Desativado", + "Riot does not know how to join a room on this network": "O sistema não sabe como entrar na sala desta rede", + "Mentions only": "Apenas menções", + "Wednesday": "Quarta", + "You can now return to your account after signing out, and sign in on other devices.": "Você pode retornar agora para a sua conta depois de fazer logout, e então fazer login em outros dispositivos.", + "Enable email notifications": "Ativar notificações por email", + "Event Type": "Tipo do Evento", + "Download this file": "Baixar este arquivo", + "Pin Message": "Fixar Mensagem", + "Failed to change settings": "Falhou ao mudar as preferências", + "View Community": "Ver a comunidade", + "Event sent!": "Evento enviado!", + "View Source": "Ver a fonte", + "Event Content": "Conteúdo do Evento", + "Thank you!": "Obrigado!", + "Quote": "Citar", + "Collapse panel": "Colapsar o painel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Com o seu navegador atual, a aparência e sensação de uso da aplicação podem estar completamente incorretas, e algumas das funcionalidades poderão não funcionar. Se você quiser tentar de qualquer maneira, pode continuar, mas aí vai ter que se virar sozinho(a) com os problemas que porventura encontrar!", + "Checking for an update...": "Verificando se há atualizações...", + "There are advanced notifications which are not shown here": "Existem opções avançadas que não são exibidas aqui", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s em %(osName)s", + "Riot Desktop on %(platformName)s": "Riot para computadores desktop em %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot versão web não é suportado a partir de celular. Quer instalar o app para celular?", + "Unknown device": "Dispositivo desconhecido", + "You need to be using HTTPS to place a screen-sharing call.": "Você precisa estar usando HTTPS para poder iniciar uma chamada com compartilhamento de tela.", + "Welcome to Riot.im": "Seja bem-vinda(o) a Riot.im", + "Search the room directory": "Buscar na lista pública de salas", + "Chat with Riot Bot": "Conversar com o Bot do Riot", + "Get started with some tips from Riot Bot!": "Comece com algumas dicas do Bot do Riot!", + "General discussion about Matrix and Riot": "Discussão geral sobre o Matrix e o Riot", + "Discussion of all things Matrix!": "Discussão sobre todas as coisas do Matrix!", + "Riot/Web & Desktop chat": "Riot/chat da web e do computador desktop", + "Riot/iOS & matrix-ios-sdk chat": "Riot/chat do iOS e do matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Riot/Chat do Android e do matrix-android-sdk", + "Matrix technical discussions": "Discussões técnicas do Matrix", + "Running Matrix services": "Rodando serviços Matrix", + "Community-run support for Synapse": "Apoio ao Synapse gerido pela comunidade", + "Admin support for Dendrite": "Suporte de administração para Dendrite", + "Announcements about Synapse releases": "Anúncios sobre lançamentos do Synapse", + "Support for those using and running matrix-appservice-irc": "Apoio para as pessoas usando e rodando matrix-appservice-irc", + "Building services on Matrix": "Construindo serviços no Matrix", + "Support for those using the Matrix spec": "Apoio para as pessoas que estão usando as especificações Matrix", + "Design and implementation of E2E in Matrix": "Design e implementação de criptografia ponta-a-ponta (E2E) no Matrix", + "Implementing VR services with Matrix": "Implementando serviços de Realidade Virtual (VR) com Matrix", + "Implementing VoIP services with Matrix": "Implementando serviços VoIP com Matrix", + "Discussion of the Identity Service API": "Discussão do API do Serviço de Identidades", + "Support for those using, running and writing other bridges": "Apoio para as pessoas que estejam usando, rodando e escrevendo outras pontes (bridges)", + "Contributing code to Matrix and Riot": "Contribuindo com código para o Matrix e o Riot", + "Dev chat for the Riot/Web dev team": "Chat de desenvolvimento para o time devel do Riot/Web", + "Dev chat for the Dendrite dev team": "Chat de desenvolvimento para o time devel do Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Muitas salas já existem no Matrix, algumas independentes, e outras relacionadas a redes existentes (tais como Slack, IRC, Gitter, entre outras). Dê uma olhada na lista de salas públicas!", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Chat descentralizado, criptografado e colaborativo impulsionado por [matrix]", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Você pode usar as opções customizadas de servidor para conectar-se a outros servidores Matrix ao especificar uma outra URL de Servidor de Base (homeserver).
Isso permite que você use o Riot com uma conta Matrix existente em outro servidor de base.

Você também pode definir um servidor de identidade customizado, mas neste caso você não poderá convidar outras pesoas por endereço de email, ou ser convidada/o pelo seu endereço de email.", + "Co-ordination for Riot translators": "Coordenação para tradutores Riot" +} \ No newline at end of file diff --git a/riot/i18n/ru.json b/riot/i18n/ru.json new file mode 100644 index 0000000..18be239 --- /dev/null +++ b/riot/i18n/ru.json @@ -0,0 +1,1344 @@ +{ + "Account": "Аккаунт", + "Add email address": "Добавить email", + "Add phone number": "Добавить номер телефона", + "Admin": "Администратор", + "Advanced": "Подробности", + "Algorithm": "Алгоритм", + "A new password must be entered.": "Введите новый пароль.", + "Anyone who knows the room's link, apart from guests": "Все, у кого есть ссылка на эту комнату, кроме гостей", + "Anyone who knows the room's link, including guests": "Все, у кого есть ссылка на эту комнату, включая гостей", + "Are you sure you want to reject the invitation?": "Вы уверены что вы хотите отклонить приглашение?", + "Are you sure you want to upload the following files?": "Вы уверены, что вы хотите отправить эти файлы?", + "Banned users": "Заблокированные пользователи", + "Bans user with given id": "Блокирует пользователя с заданным ID", + "Blacklisted": "В черном списке", + "Bulk Options": "Групповые параметры", + "Can't load user settings": "Невозможно загрузить пользовательские настройки", + "Changes to who can read history will only apply to future messages in this room": "Изменение правил доступа к истории будет применено только к будущим сообщениям в этой комнате", + "Changes your display nickname": "Изменяет ваш псевдоним", + "Claimed Ed25519 fingerprint key": "Требуемый ключ цифрового отпечатка Ed25519", + "Clear Cache and Reload": "Очистить кэш и перезагрузить", + "Clear Cache": "Очистить кэш", + "Click here to fix": "Нажмите здесь, чтобы исправить это", + "Commands": "Команды", + "Confirm your new password": "Подтвердите новый пароль", + "Continue": "Продолжить", + "Could not connect to the integration server": "Не удалось подключиться к серверу интеграции", + "Create an account": "Создать учетную запись", + "Create Room": "Создать комнату", + "Cryptography": "Криптография", + "Curve25519 identity key": "Ключ идентификации Curve25519", + "Deactivate Account": "Деактивировать учетную запись", + "Deactivate my account": "Деактивировать мою учетную запись", + "Decryption error": "Ошибка расшифровки", + "Default": "Участник", + "Deops user with given id": "Снимает полномочия оператора с пользователя с заданным ID", + "Device ID": "ID устройства", + "Devices will not yet be able to decrypt history from before they joined the room": "Устройства не смогут расшифровать историю сообщений до момента их входа в комнату (временно)", + "Display name": "Отображаемое имя", + "Displays action": "Отображение действий", + "Ed25519 fingerprint": "Ed25519 отпечаток", + "Email, name or matrix ID": "Email, имя или matrix ID", + "Emoji": "Смайлы", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Зашифрованные сообщения не будут видны в клиентах, еще не поддерживающих сквозное шифрование", + "Encrypted room": "Зашифрованная комната", + "End-to-end encryption information": "Сведения о сквозном шифровании", + "End-to-end encryption is in beta and may not be reliable": "Сквозное шифрование сейчас в бета-тестировании и может не работать", + "Error": "Ошибка", + "Event information": "Информация о событии", + "Export E2E room keys": "Экспорт ключей шифрования", + "Failed to change password. Is your password correct?": "Не удалось сменить пароль. Вы правильно ввели текущий пароль?", + "Failed to leave room": "Не удалось выйти из комнаты", + "Failed to reject invitation": "Не удалось отклонить приглашение", + "Failed to send email": "Ошибка отправки email", + "Failed to unban": "Не удалось разблокировать", + "Failed to upload file": "Не удалось отправить файл", + "Favourite": "Избранное", + "Favourites": "Избранные", + "Filter room members": "Поиск по участникам", + "Forget room": "Забыть комнату", + "Forgot your password?": "Забыли пароль?", + "For security, this session has been signed out. Please sign in again.": "Для обеспечения безопасности ваша сессия была завершена. Пожалуйста, войдите снова.", + "Hangup": "Повесить трубку", + "Historical": "Архив", + "Homeserver is": "Домашний сервер это", + "Identity Server is": "Сервер идентификации это", + "I have verified my email address": "Я подтвердил свой email", + "Import E2E room keys": "Импорт ключей шифрования", + "Invalid Email Address": "Недопустимый email", + "Invite new room members": "Пригласить в комнату новых участников", + "Invites": "Приглашения", + "Invites user with given id to current room": "Приглашает пользователя с заданным ID в текущую комнату", + "Sign in with": "Войти с помощью", + "Joins room with given alias": "Входит в комнату с заданным псевдонимом", + "Kicks user with given id": "Выкидывает пользователя с заданным ID", + "Labs": "Лаборатория", + "Leave room": "Покинуть комнату", + "Logout": "Выйти", + "Low priority": "Неважные", + "Manage Integrations": "Управление интеграциями", + "Mobile phone number": "Номер мобильного телефона", + "Moderator": "Модератор", + "%(serverName)s Matrix ID": "Matrix ID на %(serverName)s", + "Name": "Имя", + "Never send encrypted messages to unverified devices from this device": "Никогда не отправлять зашифрованные сообщения на непроверенные устройства (с этого устройства)", + "Never send encrypted messages to unverified devices in this room from this device": "Никогда не отправлять зашифрованные сообщения на непроверенные устройства (в этой комнате, с этого устройства)", + "New password": "Новый пароль", + "New passwords must match each other.": "Новые пароли должны совпадать.", + "none": "никто", + "Notifications": "Уведомления", + "": "<не поддерживается>", + "NOT verified": "НЕ проверено", + "No users have specific privileges in this room": "Ни один пользователь не имеет особых прав в этой комнате", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "После включения шифрования в комнате вы не сможете его снова выключить (временно)", + "Password": "Пароль", + "People": "Люди", + "Permissions": "Права доступа", + "Phone": "Телефон", + "Remove": "Удалить", + "Return to login screen": "Вернуться к экрану входа", + "Send Reset Email": "Отправить письмо со ссылкой для сброса пароля", + "Settings": "Настройки", + "Start a chat": "Начать разговор", + "Start Chat": "Начать разговор", + "Unable to add email address": "Не удается добавить email", + "Unable to remove contact information": "Не удалось удалить контактную информацию", + "Unable to verify email address.": "Не удалось проверить email.", + "Unban": "Разблокировать", + "Unencrypted room": "Нешифрованная комната", + "unencrypted": "без шифрования", + "unknown device": "неизвестное устройство", + "unknown error code": "неизвестный код ошибки", + "Upload avatar": "Загрузить аватар", + "Upload Files": "Отправка файлов", + "Upload file": "Отправить файл", + "User ID": "ID пользователя", + "User Interface": "Пользовательский интерфейс", + "User name": "Имя пользователя", + "Users": "Пользователи", + "Verification Pending": "В ожидании подтверждения", + "Verification": "Проверка", + "verified": "проверенный", + "Video call": "Видеовызов", + "Voice call": "Голосовой вызов", + "VoIP conference finished.": "Конференц-звонок окончен.", + "VoIP conference started.": "Конференц-звонок начался.", + "(warning: cannot be disabled again!)": "(предупреждение: отключить будет невозможно!)", + "Warning!": "Внимание!", + "Who can access this room?": "Кто может войти в эту комнату?", + "Who can read history?": "Кто может читать историю?", + "Who would you like to add to this room?": "Кого бы вы хотели пригласить в эту комнату?", + "Who would you like to communicate with?": "С кем бы вы хотели связаться?", + "You do not have permission to post to this room": "Вы не можете писать в эту комнату", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Вы вышли из всех устройств и больше не будете получать push-уведомления. Чтобы повторно активировать уведомления, войдите снова на каждом из устройств", + "You have no visible notifications": "Нет видимых уведомлений", + "Your password has been reset": "Ваш пароль был сброшен", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Пароль успешно изменен. До повторной авторизации вы не будете получать push-уведомления на других устройствах", + "You should not yet trust it to secure data": "На данный момент не следует полагаться на то, что ваша переписка будет надежно зашифрована", + "%(targetName)s accepted an invitation.": "%(targetName)s принял приглашение.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s принял приглашение от %(displayName)s.", + "Active call": "Активный вызов", + "%(names)s and %(lastPerson)s are typing": "%(names)s и %(lastPerson)s печатают", + "%(senderName)s answered the call.": "%(senderName)s ответил(а) на звонок.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s заблокировал(а) %(targetName)s.", + "Call Timeout": "Нет ответа", + "%(senderName)s changed their profile picture.": "%(senderName)s изменил(а) свой аватар.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s изменил(а) уровни прав %(powerLevelDiffText)s.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s изменил(а) название комнаты на %(roomName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s изменил(а) тему комнаты на \"%(topic)s\".", + "Conference call failed.": "Сбой конференц-звонка.", + "Conference calling is in development and may not be reliable.": "Конференц-связь находится в разработке и может не работать.", + "Conference calls are not supported in encrypted rooms": "Конференц-связь не поддерживается в зашифрованных комнатах", + "Conference calls are not supported in this client": "Конференц-связь в этом клиенте не поддерживается", + "/ddg is not a command": "/ddg — это не команда", + "Drop here to tag %(section)s": "Перетащите сюда, чтобы пометить как %(section)s", + "%(senderName)s ended the call.": "%(senderName)s завершил(а) звонок.", + "Existing Call": "Текущий вызов", + "Failed to send request.": "Не удалось отправить запрос.", + "Failed to set up conference call": "Не удалось сделать конференц-звонок", + "Failed to verify email address: make sure you clicked the link in the email": "Не удалось проверить email: убедитесь, что вы перешли по ссылке в письме", + "Failure to create room": "Не удалось создать комнату", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "для %(userId)s с %(fromPowerLevel)s на %(toPowerLevel)s", + "click to reveal": "нажмите для открытия", + "%(senderName)s invited %(targetName)s.": "%(senderName)s приглашает %(targetName)s.", + "%(displayName)s is typing": "%(displayName)s печатает", + "%(targetName)s joined the room.": "%(targetName)s вошел(-ла) в комнату.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s выгнал(а) %(targetName)s.", + "%(targetName)s left the room.": "%(targetName)s покинул(а) комнату.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s сделал(а) историю разговора видимой для всех собеседников с момента их приглашения.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s сделал(а) историю разговора видимой для всех собеседников с момента их входа в комнату.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s сделал(а) историю разговора видимой для всех собеседников.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s сделал(а) историю разговора видимой для всех.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s сделал(а) историю комнаты видимой в неизвестном режиме (%(visibility)s).", + "Missing room_id in request": "Отсутствует room_id в запросе", + "Missing user_id in request": "Отсутствует user_id в запросе", + "(not supported by this browser)": "(не поддерживается этим браузером)", + "Connectivity to the server has been lost.": "Связь с сервером потеряна.", + "Sent messages will be stored until your connection has returned.": "Отправленные сообщения будут сохранены, пока соединение не восстановится.", + "There are no visible files in this room": "В этой комнате нет видимых файлов", + "This doesn't look like a valid phone number.": "Недопустимый номер телефона.", + "Missing password.": "Отсутствует пароль.", + "Set a display name:": "Введите отображаемое имя:", + "Passwords don't match.": "Пароли не совпадают.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Пароль слишком короткий (мин. %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Это не похоже на допустимый email.", + "This server does not support authentication with a phone number.": "Этот сервер не поддерживает аутентификацию с помощью номера телефона.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Имена пользователей могут содержать только буквы, цифры, точки, дефисы и символы подчеркивания.", + "An unknown error occurred.": "Произошла неизвестная ошибка.", + "I already have an account": "У меня есть аккаунт", + "An error occurred: %(error_string)s": "Произошла ошибка: %(error_string)s", + "Topic": "Тема", + "Make this room private": "Сделать эту комнату приватной", + "Share message history with new users": "Разрешить доступ к истории сообщений новым пользователям", + "Encrypt room": "Шифрование комнаты", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Upload an avatar:": "Загрузите аватар:", + "You need to be logged in.": "Вы должны войти в систему.", + "You need to be able to invite users to do that.": "Для этого вы должны иметь возможность приглашать пользователей.", + "You cannot place VoIP calls in this browser.": "Звонки не поддерживаются в этом браузере.", + "You are already in a call.": "Идет разговор.", + "You are trying to access %(roomName)s.": "Вы пытаетесь войти в %(roomName)s.", + "You cannot place a call with yourself.": "Вы не можете позвонить самому себе.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s отозвал(а) свое приглашение %(targetName)s.", + "Sep": "Сен", + "Jan": "Янв", + "Feb": "Фев", + "Mar": "Мар", + "Apr": "Апр", + "May": "Май", + "Jun": "Июн", + "Jul": "Июл", + "Aug": "Авг", + "Oct": "Окт", + "Nov": "Ноя", + "Dec": "Дек", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "Mon": "Пн", + "Sun": "Вс", + "Tue": "Вт", + "Wed": "Ср", + "Thu": "Чт", + "Fri": "Пт", + "Sat": "Сб", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Ваш email не связан ни с одним пользователем на этом сервере.", + "To use it, just wait for autocomplete results to load and tab through them.": "Чтобы воспользоваться этой функцией, дождитесь загрузки результатов в окне автодополнения, а затем используйте Tab для прокрутки.", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s включил(а) в комнате сквозное шифрование (алгоритм %(algorithm)s).", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s разблокировал(а) %(targetName)s.", + "Unable to capture screen": "Не удается сделать снимок экрана", + "Unable to enable Notifications": "Не удалось включить уведомления", + "Upload Failed": "Сбой отправки файла", + "Usage": "Использование", + "Use with caution": "Использовать с осторожностью", + "VoIP is unsupported": "Звонки не поддерживаются", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстовое сообщение было отправлено на +%(msisdn)s. Введите проверочный код из сообщения", + "and %(count)s others...": { + "other": "и %(count)s других...", + "one": "и еще один..." + }, + "Are you sure?": "Вы уверены?", + "Autoplay GIFs and videos": "Автоматически воспроизводить GIF-анимации и видео", + "Click to mute audio": "Щелкните, чтобы выключить звук", + "Click to mute video": "Щелкните, чтобы выключить видео", + "Click to unmute video": "Щелкните, чтобы включить видео", + "Click to unmute audio": "Щелкните, чтобы включить звук", + "Decrypt %(text)s": "Расшифровать %(text)s", + "Delete": "Удалить", + "Devices": "Устройства", + "Direct chats": "Личные чаты", + "Disinvite": "Отозвать приглашение", + "Don't send typing notifications": "Не отправлять оповещения о том, когда я печатаю", + "Download %(text)s": "Скачать %(text)s", + "Enable encryption": "Включить шифрование", + "Enter Code": "Ввести код", + "Failed to ban user": "Не удалось заблокировать пользователя", + "Failed to change power level": "Не удалось изменить уровень прав", + "Failed to forget room %(errCode)s": "Не удалось забыть комнату: %(errCode)s", + "Failed to join room": "Не удалось войти в комнату", + "Access Token:": "Токен доступа:", + "Always show message timestamps": "Всегда показывать время отправки сообщений", + "Authentication": "Аутентификация", + "olm version:": "Версия olm:", + "%(items)s and %(lastItem)s": "%(items)s и %(lastItem)s", + "An error has occurred.": "Произошла ошибка.", + "Attachment": "Вложение", + "Ban": "Заблокировать", + "Change Password": "Сменить пароль", + "Command error": "Ошибка команды", + "Confirm password": "Подтвердите новый пароль", + "Current password": "Текущий пароль", + "Email": "Электронная почта", + "Failed to kick": "Не удалось выгнать", + "Failed to load timeline position": "Не удалось загрузить метку из хронологии", + "Failed to mute user": "Не удалось заглушить пользователя", + "Failed to reject invite": "Не удалось отклонить приглашение", + "Failed to save settings": "Не удалось сохранить настройки", + "Failed to set display name": "Не удалось задать отображаемое имя", + "Failed to toggle moderator status": "Не удалось переключить статус модератора", + "Fill screen": "Заполнить экран", + "Hide read receipts": "Скрывать отметки о прочтении", + "Hide Text Formatting Toolbar": "Скрыть инструменты форматирования текста", + "Incorrect verification code": "Неверный код подтверждения", + "Interface Language": "Язык интерфейса", + "Invalid alias format": "Недопустимый формат имени", + "Invalid address format": "Недопустимый формат адреса", + "'%(alias)s' is not a valid format for an address": "Адрес '%(alias)s' имеет недопустимый формат", + "'%(alias)s' is not a valid format for an alias": "Имя '%(alias)s' имеет недопустимый формат", + "Join Room": "Войти в комнату", + "Kick": "Выгнать", + "Local addresses for this room:": "Адреса этой комнаты на вашем сервере:", + "Markdown is disabled": "Markdown отключен", + "Markdown is enabled": "Markdown включен", + "matrix-react-sdk version:": "версия matrix-react-sdk:", + "New address (e.g. #foo:%(localDomain)s)": "Новый адрес (например, #чтонибудь:%(localDomain)s)", + "New passwords don't match": "Новые пароли не совпадают", + "not set": "не указан", + "not specified": "не задан", + "No devices with registered encryption keys": "Нет устройств с зарегистрированными ключами шифрования", + "No more results": "Больше никаких результатов", + "No results": "Нет результатов", + "OK": "OK", + "Only people who have been invited": "Только приглашенные участники", + "Passwords can't be empty": "Пароли не могут быть пустыми", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s начал(а) %(callType)s-звонок.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Проверьте свою электронную почту и нажмите на содержащуюся ссылку. После этого нажмите кнопку Продолжить.", + "Power level must be positive integer.": "Уровень прав должен быть положительным целым числом.", + "Profile": "Профиль", + "Reason": "Причина", + "%(targetName)s rejected the invitation.": "%(targetName)s отклонил(а) приглашение.", + "Reject invitation": "Отклонить приглашение", + "Remove Contact Information?": "Удалить контактную информацию?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s удалил(а) свое отображаемое имя (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s удалил(а) свой аватар.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s хочет начать конференц-звонок.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Сброс пароля на данный момент сбрасывает ключи шифрования на всех устройствах, делая зашифрованную историю чатов нечитаемой. Чтобы избежать этого, экспортируйте ключи комнат и импортируйте их после сброса пароля. В будущем это будет исправлено.", + "Riot does not have permission to send you notifications - please check your browser settings": "У Riot нет разрешения на отправку уведомлений — проверьте настройки браузера", + "Riot was not given permission to send notifications - please try again": "Riot не получил разрешение на отправку уведомлений, пожалуйста, попробуйте снова", + "riot-web version:": "версия riot-web:", + "Room %(roomId)s not visible": "Комната %(roomId)s невидима", + "Room Colour": "Цвет комнаты", + "Room name (optional)": "Имя комнаты (необязательно)", + "Rooms": "Комнаты", + "Scroll to bottom of page": "Перейти к нижней части страницы", + "Scroll to unread messages": "Прокрутить до непрочитанных сообщений", + "Search": "Поиск", + "Search failed": "Поиск не удался", + "Sender device information": "Информация об устройстве отправителя", + "Send Invites": "Отправить приглашения", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s отправил(а) изображение.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s пригласил(а) %(targetDisplayName)s в комнату.", + "Show panel": "Показать панель", + "Sign in": "Войти", + "Sign out": "Выйти", + "%(count)s of your messages have not been sent.": { + "other": "Некоторые сообщения не были отправлены.", + "one": "Ваше сообщение не было отправлено." + }, + "Someone": "Кто-то", + "Submit": "Отправить", + "Success": "Успех", + "The default role for new room members is": "Права по умолчанию для новых участников комнаты", + "The main address for this room is": "Основной адрес этой комнаты", + "This email address is already in use": "Этот email уже используется", + "This email address was not found": "Этот адрес электронной почты не найден", + "The email address linked to your account must be entered.": "Необходимо ввести адрес электронной почты, связанный с вашей учетной записью.", + "The file '%(fileName)s' failed to upload": "Не удалось отправить файл '%(fileName)s'", + "The remote side failed to pick up": "Собеседник не ответил на ваш звонок", + "This room has no local addresses": "У этой комнаты нет адресов на вашем сервере", + "This room is not recognised.": "Эта комната не опознана.", + "These are experimental features that may break in unexpected ways": "Это экспериментальные функции, которые могут себя вести неожиданным образом", + "This doesn't appear to be a valid email address": "Похоже, это недействительный адрес email", + "This is a preview of this room. Room interactions have been disabled": "Это предпросмотр комнаты. Взаимодействие с комнатой отключено", + "This phone number is already in use": "Этот номер телефона уже используется", + "This room's internal ID is": "Внутренний ID этой комнаты", + "Turn Markdown off": "Выключить Markdown", + "Turn Markdown on": "Включить Markdown", + "Unknown room %(roomId)s": "Неизвестная комната %(roomId)s", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s приглашает вас в эту комнату", + "You seem to be uploading files, are you sure you want to quit?": "Похоже, вы отправляете файлы, вы уверены, что хотите выйти?", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "Make Moderator": "Сделать модератором", + "Room": "Комната", + "Cancel": "Отмена", + "bold": "жирный", + "italic": "курсив", + "strike": "перечеркнутый", + "underline": "подчеркнутый", + "code": "код", + "quote": "цитата", + "bullet": "элемент списка", + "numbullet": "элемент нумерованного списка", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не удается подключиться к домашнему серверу через HTTP, так как в адресной строке браузера указан URL HTTPS. Используйте HTTPS или либо включите небезопасные сценарии.", + "Dismiss": "Отклонить", + "Custom Server Options": "Выбор другого сервера", + "Mute": "Приглушить", + "Operation failed": "Сбой операции", + "powered by Matrix": "Основано на Matrix", + "Add a topic": "Задать тему", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Отображать время в 12-часовом формате (напр. 2:30 ПП)", + "Use compact timeline layout": "Использовать компактный вид списка сообщений", + "Hide removed messages": "Скрывать удаленные сообщения", + "No Microphones detected": "Микрофоны не обнаружены", + "Unknown devices": "Неизвестное устройство", + "Camera": "Камера", + "Microphone": "Микрофон", + "Desktop specific": "Специфичные для компьютера", + "Start automatically after system login": "Автозапуск при входе в систему", + "Analytics": "Аналитика", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot собирает анонимные данные, позволяющие нам улучшить приложение.", + "Logged in as:": "Вы вошли как:", + "Default Device": "Устройство по умолчанию", + "No Webcams detected": "Веб-камера не обнаружена", + "VoIP": "VoIP", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Для обеспечения безопасности при выходе будут удалены все ключи сквозного шифрования из этого браузера. Если вы хотите иметь возможность расшифровать историю сообщений в будущем, необходимо экспортировать ключи комнат вручную.", + "Guest access is disabled on this Home Server.": "Гостевой доступ отключен на этом сервере.", + "Guests cannot join this room even if explicitly invited.": "Посторонние не смогут войти в эту комнату, даже если они будут приглашены.", + "Missing Media Permissions, click here to request.": "Отсутствуют разрешения, нажмите для запроса.", + "No media permissions": "Нет разрешенных носителей", + "You may need to manually permit Riot to access your microphone/webcam": "Вам необходимо предоставить Riot доступ к микрофону или веб-камере вручную", + "Anyone": "Все", + "Are you sure you want to leave the room '%(roomName)s'?": "Вы уверены, что хотите покинуть '%(roomName)s'?", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s удалил(а) имя комнаты.", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Смена пароля на данный момент сбрасывает ключи сквозного шифрования на всех устройствах, делая историю зашифрованных чатов нечитаемой. Чтобы избежать этого, экспортируйте ключи сквозного шифрования и импортируйте их после смены пароля. В будущем это будет исправлено.", + "Custom level": "Специальные права", + "Device already verified!": "Устройство уже проверено!", + "Device ID:": "ID устройства:", + "device id: ": "ID устройства: ", + "Device key:": "Ключ устройства:", + "Email address": "Email", + "Email address (optional)": "Email (необязательно)", + "Error decrypting attachment": "Ошибка расшифровки вложения", + "Export": "Экспорт", + "Failed to set avatar.": "Не удалось установить аватар.", + "Import": "Импорт", + "Incorrect username and/or password.": "Неверное имя пользователя и/или пароль.", + "Invalid file%(extra)s": "Недопустимый файл%(extra)s", + "Invited": "Приглашен", + "Jump to first unread message.": "Перейти к первому непрочитанному сообщению.", + "Message not sent due to unknown devices being present": "Сообщение не отправлено из-за присутствия неизвестных устройств", + "Mobile phone number (optional)": "Номер мобильного телефона (необязательно)", + "Password:": "Пароль:", + "Privacy warning": "Предупреждение о конфиденциальности", + "Privileged Users": "Привилегированные пользователи", + "Revoke Moderator": "Отозвать права модератора", + "Refer a friend to Riot:": "Расскажите другу о Riot:", + "Register": "Зарегистрироваться", + "Remote addresses for this room:": "Адреса этой комнаты на других серверах:", + "Remove %(threePid)s?": "Удалить %(threePid)s?", + "Results from DuckDuckGo": "Результаты от DuckDuckGo", + "Save": "Сохранить", + "Searches DuckDuckGo for results": "Для поиска используется DuckDuckGo", + "Server error": "Ошибка сервера", + "Server may be unavailable or overloaded": "Сервер может быть недоступен или перегружен", + "Server may be unavailable, overloaded, or search timed out :(": "Сервер может быть недоступен, перегружен или поиск прекращен по тайм-ауту :(", + "Server may be unavailable, overloaded, or the file too big": "Сервер может быть недоступен, перегружен или размер файла слишком большой", + "Server may be unavailable, overloaded, or you hit a bug.": "Возможно, сервер недоступен, перегружен или случилась ошибка.", + "Server unavailable, overloaded, or something else went wrong.": "Возможно, сервер недоступен, перегружен или что-то еще пошло не так.", + "Session ID": "ID сессии", + "%(senderName)s set a profile picture.": "%(senderName)s установил(а) себе аватар.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s изменил(а) отображаемое имя на %(displayName)s.", + "Signed Out": "Выполнен выход", + "Tagged as: ": "Метки: ", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Предоставленный вами ключ совпадает с ключом, полученным от %(userId)s с устройства %(deviceId)s. Это устройство помечено как проверенное.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Файл '%(fileName)s' слишком большой для отправки на этот сервер", + "This Home Server does not support login using email address.": "Этот домашний сервер не поддерживает авторизацию с использованием адреса электронной почты.", + "The visibility of existing history will be unchanged": "Правила доступа к существующей истории не изменятся", + "This room is not accessible by remote Matrix servers": "Это комната недоступна из других серверов Matrix", + "To reset your password, enter the email address linked to your account": "Чтобы сбросить пароль, введите адрес электронной почты, связанный с вашей учетной записью", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как у вас нет разрешений на просмотр.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Попытка загрузить выбранный интервал истории чата этой комнаты не удалась, так как запрошенный элемент не найден.", + "Unable to load device list": "Не удалось загрузить список устройств", + "Unknown (user, device) pair:": "Неизвестная пара пользователь-устройство:", + "Unmute": "Вернуть право речи", + "Unrecognised command:": "Нераспознанная команда:", + "Unrecognised room alias:": "Нераспознанное имя комнаты:", + "Verified key": "Ключ проверен", + "WARNING: Device already verified, but keys do NOT MATCH!": "ВНИМАНИЕ: устройство уже было проверено, однако ключи НЕ СОВПАДАЮТ!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "ВНИМАНИЕ: ОШИБКА ПРОВЕРКИ КЛЮЧЕЙ! Ключ подписи пользователя %(userId)s на устройстве %(deviceId)s — \"%(fprint)s\", и он не соответствует предоставленному ключу \"%(fingerprint)s\". Это может означать, что ваше общение перехватывается!", + "You have disabled URL previews by default.": "Предпросмотр ссылок по умолчанию выключен для вас.", + "You have enabled URL previews by default.": "Предпросмотр ссылок по умолчанию включен для вас.", + "You need to enter a user name.": "Необходимо ввести имя пользователя.", + "You seem to be in a call, are you sure you want to quit?": "Звонок не завершен, вы уверены, что хотите выйти?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Вы не сможете отменить это действие, так как этот пользователь получит уровень прав, равный вашему.", + "Please select the destination room for this message": "Выберите, куда отправить это сообщение", + "Options": "Настройки", + "Passphrases must match": "Пароли должны совпадать", + "Passphrase must not be empty": "Пароль не должен быть пустым", + "Export room keys": "Экспорт ключей комнаты", + "Enter passphrase": "Введите пароль", + "Confirm passphrase": "Подтвердите пароль", + "Import room keys": "Импорт ключей комнаты", + "File to import": "Файл для импорта", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Этот процесс позволяет вам экспортировать ключи для сообщений, которые вы получили в комнатах с шифрованием, в локальный файл. Вы сможете импортировать эти ключи в другой клиент Matrix чтобы расшифровать эти сообщения.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Экспортированный файл позволит любому пользователю расшифровать и зашифровать сообщения, которые вы видите, поэтому вы должны быть крайне осторожны и держать файл в надежном месте. Чтобы поспособствовать этому, ниже вы должны ввести пароль, который будет использоваться для шифрования ключей. Вы сможете импортировать ключи только зная этот пароль.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Этот процесс позволит вам импортировать ключи шифрования, которые вы экспортировали ранее из клиента Matrix. Это позволит вам расшифровать историю чата.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Файл экспорта будет защищен паролем. Для расшифровки файла необходимо ввести пароль.", + "You must join the room to see its files": "Вы должны войти в комнату, чтобы просмотреть файлы", + "Reject all %(invitedRooms)s invites": "Отклонить все %(invitedRooms)s приглашения", + "Start new chat": "Начать новый чат", + "Failed to invite": "Пригласить не удалось", + "Failed to invite user": "Не удалось пригласить пользователя", + "Failed to invite the following users to the %(roomName)s room:": "Не удалось пригласить этих пользователей в %(roomName)s:", + "Confirm Removal": "Подтвердите удаление", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Вы действительно хотите удалить это событие? Обратите внимание, что если это смена названия комнаты или темы, то удаление отменит это изменение.", + "Unknown error": "Неизвестная ошибка", + "Incorrect password": "Неверный пароль", + "To continue, please enter your password.": "Чтобы продолжить, введите ваш пароль.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Чтобы удостовериться, что этому устройству можно доверять, пожалуйста, свяжитесь с владельцем другим способом (например, лично или по телефону) и спросите его, совпадает ли ключ, указанный у него в настройках для этого устройства, с ключом ниже:", + "Device name": "Имя устройства", + "Device key": "Ключ устройства", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Если совпадают, нажмите кнопку подтверждения ниже. Если нет — значит, кто-то перехватил это устройство, и вы, скорее всего, захотите внести его в черный список.", + "In future this verification process will be more sophisticated.": "В будущем процесс проверки будет усовершенствован.", + "Verify device": "Проверить устройство", + "I verify that the keys match": "Я подтверждаю, что ключи совпадают", + "Unable to restore session": "Восстановление сессии не удалось", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Если вы использовали более новую версию Riot, то ваша сессия может быть несовместима с текущей. Закройте это окно и вернитесь к использованию более новой версии.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "У вас включено занесение непроверенных устройств в черный список. Для отправки сообщений на эти устройства вам необходимо их проверить.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Мы рекомендуем вам выполнить процедуру проверки каждого устройства, чтобы удостовериться, что они принадлежат их законному владельцу, но вы можете переотправить сообщение без проверки, если хотите.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" содержит неподтвержденные устройства.", + "Unknown Address": "Неизвестный адрес", + "Unblacklist": "Разблокировать", + "Blacklist": "Заблокировать", + "Unverify": "Отозвать доверие", + "Verify...": "Сверить ключи...", + "ex. @bob:example.com": "например @bob:example.com", + "Add User": "Добавить пользователя", + "This Home Server would like to make sure you are not a robot": "Этот сервер хочет убедиться, что вы не робот", + "Sign in with CAS": "Войти с помощью CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Вы можете войти на другой сервер Matrix, указав его URL-адрес.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Это позволяет использовать приложение с учетной записью Matrix на другом сервере.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Кроме того, можно выбрать другой сервер идентификации, однако в таком случае вы, скорее всего, не сможете взаимодействовать с пользователями посредством их emailов.", + "Please check your email to continue registration.": "Чтобы продолжить регистрацию, проверьте электронную почту.", + "Token incorrect": "Неверный код проверки", + "Please enter the code it contains:": "Введите полученный код:", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Если не указать email, вы не сможете при необходимости сбросить свой пароль. Уверены?", + "You are registering with %(SelectedTeamName)s": "Вы регистрируетесь в %(SelectedTeamName)s", + "Default server": "Сервер по умолчанию", + "Custom server": "Другой сервер", + "Home server URL": "URL-адрес сервера", + "Identity server URL": "URL-адрес сервера идентификации", + "What does this mean?": "Что это значит?", + "Error decrypting audio": "Ошибка расшифровки аудиозаписи", + "Error decrypting image": "Ошибка расшифровки изображения", + "Error decrypting video": "Ошибка расшифровки видео", + "Add an Integration": "Добавить интеграцию", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Вы будете перенаправлены на внешний сайт, чтобы войти в свою учетную запись для использования с %(integrationsUrl)s. Продолжить?", + "Removed or unknown message type": "Сообщение удалено или имеет неизвестный тип", + "URL Previews": "Предпросмотр содержимого ссылок", + "Drop file here to upload": "Перетащите файл сюда для отправки", + " (unsupported)": " (не поддерживается)", + "Ongoing conference call%(supportedText)s.": "Идет конференц-звонок%(supportedText)s.", + "Online": "Онлайн", + "Idle": "Неактивен", + "Offline": "Не в сети", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s сменил(а) аватар комнаты на ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s удалил(а) аватар комнаты.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s сменил(а) аватар %(roomName)s", + "Create new room": "Создать комнату", + "Room directory": "Каталог комнат", + "Start chat": "Начать чат", + "Add": "Добавить", + "%(count)s new messages": { + "one": "%(count)s новое сообщение", + "other": "%(count)s новых сообщений" + }, + "Error: Problem communicating with the given homeserver.": "Ошибка: проблема связи с данным сервером.", + "Failed to fetch avatar URL": "Не удалось извлечь URL-адрес аватара", + "The phone number entered looks invalid": "Введенный номер телефона недействителен", + "Uploading %(filename)s and %(count)s others": { + "zero": "Отправка %(filename)s", + "one": "Отправка %(filename)s и %(count)s другой", + "other": "Отправка %(filename)s и %(count)s других" + }, + "Username invalid: %(errMessage)s": "Неверное имя пользователя: %(errMessage)s", + "You must register to use this functionality": "Вы должны зарегистрироваться, чтобы использовать эту функцию", + "New Password": "Новый пароль", + "Start chatting": "Начать общение", + "Start Chatting": "Начать общение", + "Click on the button below to start chatting!": "Нажмите на кнопку ниже, чтобы начать общение!", + "Create a new chat or reuse an existing one": "Создайте новый чат или используйте существующий", + "You already have existing direct chats with this user:": "У вас уже есть прямые чаты с этим пользователем:", + "Username available": "Имя пользователя доступно", + "Username not available": "Имя пользователя недоступно", + "Something went wrong!": "Что-то пошло не так!", + "This will be your account name on the homeserver, or you can pick a different server.": "Это будет имя вашей учетной записи на домашнем сервере, или вы можете выбрать другой сервер.", + "If you already have a Matrix account you can log in instead.": "Если у вас уже есть учетная запись Matrix, вы можете войти.", + "Home": "Начало", + "Accept": "Принять", + "Active call (%(roomName)s)": "Текущий вызов (%(roomName)s)", + "Admin Tools": "Инструменты администратора", + "Alias (optional)": "Псевдоним (опционально)", + "Click here to join the discussion!": "Нажмите здесь, чтобы присоединиться!", + "Close": "Закрыть", + "Disable Notifications": "Отключить уведомления", + "Drop File Here": "Перетащите файл сюда", + "Enable Notifications": "Включить оповещения", + "Encrypted by a verified device": "Зашифровано проверенным устройством", + "Encrypted by an unverified device": "Зашифровано непроверенным устройством", + "Encryption is enabled in this room": "Шифрование в этой комнате включено", + "Encryption is not enabled in this room": "Шифрование в этой комнате не включено", + "Failed to upload profile picture!": "Не удалось загрузить аватар!", + "Incoming call from %(name)s": "Входящий вызов от %(name)s", + "Incoming video call from %(name)s": "Входящий видеовызов от %(name)s", + "Incoming voice call from %(name)s": "Входящий голосовой вызов от %(name)s", + "Join as voice or video.": "Присоединиться с голосом или с видео.", + "Last seen": "Последний вход", + "Level:": "Уровень:", + "No display name": "Нет отображаемого имени", + "Private Chat": "Приватный чат", + "Public Chat": "Публичный чат", + "Reason: %(reasonText)s": "Причина: %(reasonText)s", + "Rejoin": "Войти повторно", + "Start authentication": "Начать аутентификацию", + "This room": "Эта комната", + "(~%(count)s results)": { + "other": "(~%(count)s результатов)", + "one": "(~%(count)s результат)" + }, + "Device Name": "Имя устройства", + "Custom": "Пользовательские", + "Decline": "Отклонить", + "Room contains unknown devices": "Комната содержит непроверенные устройства", + "%(roomName)s does not exist.": "%(roomName)s не существует.", + "%(roomName)s is not accessible at this time.": "%(roomName)s на данный момент недоступна.", + "Seen by %(userName)s at %(dateTime)s": "Прочитано %(userName)s в %(dateTime)s", + "Send anyway": "Отправить в любом случае", + "Show Text Formatting Toolbar": "Показать инструменты форматирования текста", + "This invitation was sent to an email address which is not associated with this account:": "Это приглашение было отправлено на email, не связанный с вашей учетной записью:", + "To link to a room it must have an address.": "Чтобы иметь возможность ссылаться на комнату, ей нужно присвоить адрес.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Не удалось установить, что адрес в этом приглашении соответствует вашей учетной записи.", + "Undecryptable": "Невозможно расшифровать", + "Unencrypted message": "Нешифрованное сообщение", + "unknown caller": "неизвестный абонент", + "Unnamed Room": "Комната без названия", + "Unverified": "Не проверено", + "Upload new:": "Загрузить новый:", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (уровень прав %(powerLevelNumber)s)", + "Verified": "Проверено", + "Would you like to accept or decline this invitation?": "Вы хотите подтвердить или отклонить это приглашение?", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не удается подключиться к домашнему серверу - проверьте подключение, убедитесь, что ваш SSL-сертификат домашнего сервера является доверенным и что расширение браузера не блокирует запросы.", + "You have been banned from %(roomName)s by %(userName)s.": "%(userName)s заблокировал(а) вас в %(roomName)s.", + "You have been kicked from %(roomName)s by %(userName)s.": "%(userName)s выгнал(а) вас из %(roomName)s.", + "You may wish to login with a different account, or add this email to this account.": "При желании вы можете войти в систему под другим именем или привязать этот email к вашей учетной записи.", + "Your home server does not support device management.": "Ваш сервер не поддерживает управление устройствами.", + "(could not connect media)": "(сбой подключения)", + "(no answer)": "(нет ответа)", + "(unknown failure: %(reason)s)": "(неизвестная ошибка: %(reason)s)", + "Disable Peer-to-Peer for 1:1 calls": "Отключить Peer-to-Peer для 1:1 звонков", + "Not a valid Riot keyfile": "Недействительный файл ключей Riot", + "Your browser does not support the required cryptography extensions": "Ваш браузер не поддерживает требуемые криптографические расширения", + "Authentication check failed: incorrect password?": "Ошибка аутентификации: возможно, неправильный пароль?", + "Do you want to set an email address?": "Хотите указать email?", + "This will allow you to reset your password and receive notifications.": "Это позволит при необходимости сбросить пароль и получать уведомления.", + "Press to start a chat with someone": "Нажмите , чтобы начать разговор с кем-либо", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Вы еще не вошли ни в одну из комнат! Нажмите , чтобы создать комнату, или , чтобы посмотреть каталог комнат", + "To return to your account in future you need to set a password": "Чтобы вернуться к учетной записи в будущем, необходимо задать пароль", + "Skip": "Пропустить", + "Start verification": "Начать проверку", + "Share without verifying": "Поделиться без проверки", + "Ignore request": "Игнорировать запрос", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Вы добавили новое устройство '%(displayName)s', которое требует ключи шифрования.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Ваше непроверенное устройство '%(displayName)s' запрашивает ключи шифрования.", + "Encryption key request": "Запрос ключа шифрования", + "Updates": "Обновления", + "Check for update": "Проверить наличие обновлений", + "Add a widget": "Добавить виджет", + "Allow": "Принять", + "Cannot add any more widgets": "Невозможно добавить больше виджетов", + "Changes colour scheme of current room": "Изменяет цветовую схему текущей комнаты", + "Delete widget": "Удалить виджет", + "Define the power level of a user": "Определить уровень доступа пользователя", + "Do you want to load widget from URL:": "Вы собираетесь загрузить виджет по URL-адресу:", + "Edit": "Изменить", + "Enable automatic language detection for syntax highlighting": "Автоматически определять язык подсветки синтаксиса", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Скрывать уведомления о входе/выходе из комнаты (не применяется к приглашениям/выкидываниям/банам)", + "Integrations Error": "Ошибка интеграции", + "AM": "ДП", + "PM": "ПП", + "NOTE: Apps are not end-to-end encrypted": "ПРИМЕЧАНИЕ: приложения не защищены сквозным шифрованием", + "Revoke widget access": "Отключить виджет", + "Sets the room topic": "Задать тему комнаты", + "The maximum permitted number of widgets have already been added to this room.": "Максимально допустимое количество виджетов уже добавлено в эту комнату.", + "To get started, please pick a username!": "Чтобы начать, выберите имя пользователя!", + "Unable to create widget.": "Не удалось создать виджет.", + "Unbans user with given id": "Разбанить пользователя с заданным ID", + "You are not in this room.": "Вас сейчас нет в этой комнате.", + "You do not have permission to do that in this room.": "У вас нет разрешения на это в данной комнате.", + "Verifies a user, device, and pubkey tuple": "Проверка пользователя, устройства и открытого ключа", + "Autocomplete Delay (ms):": "Задержка автозаполнения (мс):", + "Loading device info...": "Загрузка информации об устройстве...", + "Example": "Пример", + "Create": "Создать", + "Featured Rooms:": "Рекомендуемые комнаты:", + "Featured Users:": "Избранные пользователи:", + "Automatically replace plain text Emoji": "Автоматически заменять текстовые смайлики на Emoji", + "Failed to upload image": "Не удалось загрузить изображение", + "Hide avatars in user and room mentions": "Скрывать аватары в упоминаниях пользователей и комнат", + "%(widgetName)s widget added by %(senderName)s": "Виджет %(widgetName)s был добавлен %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "Виджет %(widgetName)s был удален %(senderName)s", + "Robot check is currently unavailable on desktop - please use a web browser": "CAPTCHA-тест в настоящее время недоступен в Desktop-клиенте - пожалуйста, используйте браузер", + "Publish this room to the public in %(domain)s's room directory?": "Опубликовать эту комнату в каталоге комнат %(domain)s?", + "%(widgetName)s widget modified by %(senderName)s": "Виджет %(widgetName)s был изменен %(senderName)s", + "Copied!": "Скопировано!", + "Failed to copy": "Не удалось скопировать", + "Advanced options": "Дополнительные параметры", + "Block users on other matrix homeservers from joining this room": "Блокировать пользователей, входящих в эту комнату с других серверов matrix", + "This setting cannot be changed later!": "Этот параметр нельзя изменить позднее!", + "Ignored Users": "Игнорируемые пользователи", + "Ignore": "Игнорировать", + "Unignore": "Перестать игнорировать", + "User Options": "Действия", + "You are now ignoring %(userId)s": "Теперь вы игнорируете %(userId)s", + "You are no longer ignoring %(userId)s": "Вы больше не игнорируете %(userId)s", + "Unignored user": "Пользователь убран из списка игнорирования", + "Ignored user": "Пользователь добавлен в список игнорирования", + "Stops ignoring a user, showing their messages going forward": "Прекращает игнорирование пользователя, показывая их будущие сообщения", + "Ignores a user, hiding their messages from you": "Игнорирует пользователя, скрывая сообщения от вас", + "Disable Emoji suggestions while typing": "Не предлагать Emoji при наборе текста", + "Banned by %(displayName)s": "Заблокирован(а) %(displayName)s", + "Message removed by %(userId)s": "Сообщение удалено %(userId)s", + "To send messages, you must be a": "Для отправки сообщений необходимо быть", + "To invite users into the room, you must be a": "Чтобы приглашать участников в комнату, необходимо быть", + "To configure the room, you must be a": "Чтобы настраивать комнату, необходимо быть", + "To kick users, you must be a": "Чтобы выгонять участников, необходимо быть", + "To ban users, you must be a": "Чтобы блокировать участников, необходимо быть", + "To remove other users' messages, you must be a": "Чтобы удалять сообщения других участников, необходимо быть", + "To send events of type , you must be a": "Для отправки событий типа , необходимо быть", + "To change the room's avatar, you must be a": "Чтобы изменить аватар комнаты, необходимо быть", + "To change the room's name, you must be a": "Чтобы переименовывать комнату, необходимо быть", + "To change the room's main address, you must be a": "Чтобы изменять основной адрес комнаты, необходимо быть", + "To change the room's history visibility, you must be a": "Чтобы изменять настройки доступа к истории комнаты, необходимо быть", + "To change the permissions in the room, you must be a": "Чтобы изменять разрешения в комнате, необходимо быть", + "To change the topic, you must be a": "Чтобы изменять тему комнаты, необходимо быть", + "To modify widgets in the room, you must be a": "Чтобы изменять виджеты в комнате, необходимо быть", + "Description": "Описание", + "Name or matrix ID": "Имя или идентификатор Matrix", + "Unable to accept invite": "Невозможно принять приглашение", + "Leave": "Покинуть", + "Failed to invite the following users to %(groupId)s:": "Не удалось пригласить этих пользователей в %(groupId)s:", + "Failed to remove '%(roomName)s' from %(groupId)s": "Не удалось убрать '%(roomName)s' из %(groupId)s", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Вы действительно хотите убрать '%(roomName)s' из %(groupId)s?", + "Jump to read receipt": "Перейти к последнему прочтенному им сообщению", + "Disable big emoji in chat": "Отключить большие Emoji в чате", + "Message Pinning": "Закрепленные сообщения", + "Remove avatar": "Удалить аватар", + "Failed to invite users to %(groupId)s": "Не удалось пригласить пользователей в %(groupId)s", + "Unable to reject invite": "Невозможно отклонить приглашение", + "Leave %(groupName)s?": "Покинуть %(groupName)s?", + "Add a Room": "Добавить комнату", + "Add a User": "Добавить пользователя", + "Who would you like to add to this summary?": "Кого вы хотите добавить в эту сводку?", + "Add to summary": "Добавить в сводку", + "Failed to add the following users to the summary of %(groupId)s:": "Не удалось добавить следующих пользователей в сводку %(groupId)s:", + "Which rooms would you like to add to this summary?": "Какие комнаты вы хотите добавить в эту сводку?", + "Room name or alias": "Название или идентификатор комнаты", + "Pinned Messages": "Закрепленные сообщения", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s изменил(а) закрепленные в этой комнате сообщения.", + "Failed to add the following rooms to the summary of %(groupId)s:": "Не удалось добавить следующие комнаты в сводку %(groupId)s:", + "Failed to remove the room from the summary of %(groupId)s": "Не удалось удалить комнату из сводки %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Комнату '%(roomName)s' не удалось удалить из сводки.", + "Failed to remove a user from the summary of %(groupId)s": "Не удалось удалить пользователя из сводки %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Пользователя '%(displayName)s' не удалось удалить из сводки.", + "Light theme": "Светлая тема", + "Dark theme": "Темная тема", + "Unknown": "Неизвестно", + "Failed to add the following rooms to %(groupId)s:": "Не удалось добавить эти комнаты в %(groupId)s:", + "Matrix ID": "Matrix ID", + "Matrix Room ID": "Matrix ID комнаты", + "email address": "email", + "Try using one of the following valid address types: %(validTypesList)s.": "Попробуйте использовать один из следующих допустимых типов адресов: %(validTypesList)s.", + "You have entered an invalid address.": "Введен неправильный адрес.", + "Unpin Message": "Открепить сообщение", + "Jump to message": "Перейти к сообщению", + "No pinned messages.": "Нет прикрепленных сообщений.", + "Loading...": "Загрузка...", + "Unnamed room": "Комната без названия", + "World readable": "Открыта для чтения", + "Guests can join": "Открыта для участия", + "No rooms to show": "Нет комнат, нечего показывать", + "Long Description (HTML)": "Длинное описание (HTML)", + "Community Settings": "Настройки сообщества", + "Invite to Community": "Пригласить в сообщество", + "Add to community": "Добавить в сообщество", + "Add rooms to the community": "Добавить комнаты в сообщество", + "Which rooms would you like to add to this community?": "Какие комнаты вы хотите добавить в это сообщество?", + "Who would you like to add to this community?": "Кого бы вы хотели добавить в это сообщество?", + "Invite new community members": "Пригласить в сообщество новых участников", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Предупреждение: любой, кого вы добавляете в сообщество, будет виден всем, кто знает ID этого сообщества", + "Add rooms to this community": "Добавить комнаты в это сообщество", + "Failed to invite users to community": "Не удалось пригласить пользователей в сообщество", + "Communities": "Сообщества", + "Invalid community ID": "Недопустимый идентификатор сообщества", + "'%(groupId)s' is not a valid community ID": "Идентификатор сообщества '%(groupId)s' недопустим", + "New community ID (e.g. +foo:%(localDomain)s)": "Новый идентификатор сообщества (напр. +чтонибудь:%(localDomain)s)", + "Remove from community": "Исключить из сообщества", + "Failed to remove user from community": "Не удалось исключить участника из сообщества", + "Filter community members": "Поиск по участникам сообщества", + "Filter community rooms": "Поиск по комнатам сообщества", + "Failed to remove room from community": "Не удалось убрать комнату из сообщества", + "Removing a room from the community will also remove it from the community page.": "Исключение комнаты из сообщества также уберет ее со страницы сообщества.", + "Create Community": "Создать сообщество", + "Community Name": "Имя сообщества", + "Community ID": "ID сообщества", + "example": "пример", + "Add rooms to the community summary": "Добавить комнаты в сводку сообщества", + "Add users to the community summary": "Добавить пользователей в сводку сообщества", + "Failed to update community": "Не удалось обновить сообщество", + "Leave Community": "Покинуть сообщество", + "%(inviter)s has invited you to join this community": "%(inviter)s пригласил(а) вас присоединиться к этому сообществу", + "You are a member of this community": "Вы являетесь участником этого сообщества", + "You are an administrator of this community": "Вы являетесь администратором этого сообщества", + "Community %(groupId)s not found": "Сообщество %(groupId)s не найдено", + "This Home server does not support communities": "Этот домашний сервер не поддерживает сообщества", + "Failed to load %(groupId)s": "Ошибка загрузки %(groupId)s", + "Your Communities": "Ваши сообщества", + "You're not currently a member of any communities.": "Вы не состоите в каких-либо сообществах.", + "Error whilst fetching joined communities": "Ошибка при загрузке сообществ", + "Create a new community": "Создать новое сообщество", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Создайте сообщество для объединения пользователей и комнат! Создайте собственную домашнюю страницу, чтобы выделить свое пространство во вселенной Matrix.", + "Something went wrong whilst creating your community": "При создании сообщества что-то пошло не так", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s и еще %(count)s печатают", + "one": "%(names)s и еще один собеседник печатают" + }, + "And %(count)s more...": { + "other": "Еще %(count)s…" + }, + "Delete Widget": "Удалить виджет", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Удаление виджета действует для всех участников этой комнаты. Вы действительно хотите удалить этот виджет?", + "Message removed": "Сообщение удалено", + "Mirror local video feed": "Зеркально отражать видео со своей камеры", + "Invite": "Пригласить", + "Mention": "Упомянуть", + "Failed to withdraw invitation": "Не удалось отозвать приглашение", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ID сообществ могут содержать только символы a-z, 0-9, или '=_-./'", + "%(senderName)s sent an image": "%(senderName)s отправил(а) изображение", + "%(senderName)s sent a video": "%(senderName)s отправил(а) видео", + "%(senderName)s uploaded a file": "%(senderName)s отправил(а) файл", + "Disinvite this user?": "Отозвать приглашение этого пользователя?", + "Kick this user?": "Выгнать этого пользователя?", + "Unban this user?": "Разблокировать этого пользователя?", + "Ban this user?": "Заблокировать этого пользователя?", + "Drop here to favourite": "Перетащите сюда для добавления в избранные", + "You have been kicked from this room by %(userName)s.": "%(userName)s выгнал(а) вас из этой комнаты.", + "You have been banned from this room by %(userName)s.": "%(userName)s заблокировал(а) вас в этой комнате.", + "You are trying to access a room.": "Вы пытаетесь войти в комнату.", + "Members only (since the point in time of selecting this option)": "Только участники (с момента выбора этого параметра)", + "Members only (since they were invited)": "Только участники (с момента их приглашения)", + "Members only (since they joined)": "Только участники (с момента их входа)", + "An email has been sent to %(emailAddress)s": "Письмо было отправлено на %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "Текстовое сообщение отправлено на %(msisdn)s", + "Disinvite this user from community?": "Отозвать приглашение в сообщество этого участника?", + "Remove this user from community?": "Исключить этого участника из сообщества?", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)sвошли %(count)s раз", + "one": "%(severalUsers)sвошли" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)sвошел(-ла) %(count)s раз", + "one": "%(oneUser)sвошел(-ла)" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)sушли %(count)s раз", + "one": "%(severalUsers)sушли" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)sушел(-ла) %(count)s раз", + "one": "%(oneUser)sушел(-ла)" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)sвошли и ушли %(count)s раз", + "one": "%(severalUsers)sвошли и ушли" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)sвошел(-ла) и ушел(-ла) %(count)s раз", + "one": "%(oneUser)sвошел(-ла) и ушел(-ла)" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)sушли и снова вошли %(count)s раз", + "one": "%(severalUsers)sушли и снова вошли" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)sушел(-ла) и снова вошел(-ла) %(count)s раз", + "one": "%(oneUser)sушел(-ла) и снова вошел(-ла)" + }, + "were invited %(count)s times": { + "other": "приглашены %(count)s раз", + "one": "приглашены" + }, + "was invited %(count)s times": { + "other": "приглашен(а) %(count)s раз", + "one": "приглашен(а)" + }, + "were banned %(count)s times": { + "other": "заблокированы %(count)s раз", + "one": "заблокированы" + }, + "was banned %(count)s times": { + "other": "заблокирован(а) %(count)s раз", + "one": "заблокирован(а)" + }, + "were unbanned %(count)s times": { + "other": "разблокированы %(count)s раз", + "one": "разблокированы" + }, + "was unbanned %(count)s times": { + "other": "разблокирован(а) %(count)s раз", + "one": "разблокирован(а)" + }, + "were kicked %(count)s times": { + "other": "выгнаны %(count)s раз", + "one": "выгнаны" + }, + "was kicked %(count)s times": { + "other": "выгнан(а) %(count)s раз", + "one": "выгнан(а)" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)sпоменяли имя %(count)s раз", + "one": "%(severalUsers)sпоменяли имя" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)sпоменял(а) имя %(count)s раз", + "one": "%(oneUser)sпоменял(а) имя" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)sпоменяли аватары %(count)s раз", + "one": "%(severalUsers)sпоменяли аватары" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)sпоменял(а) аватар %(count)s раз", + "one": "%(oneUser)sпоменял(а) аватар" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s и еще %(count)s участника(-ов)", + "one": "%(items)s и еще кто-то" + }, + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Сообщение отправлено на %(emailAddress)s. После перехода по ссылке в отправленном вам письме, щелкните ниже.", + "Room Notification": "Уведомления комнаты", + "Drop here to tag direct chat": "Перетащите сюда, чтобы пометить как личный чат", + "Drop here to restore": "Перетащите сюда, чтобы вернуть", + "Drop here to demote": "Перетащите сюда, чтобы понизить", + "Community Invites": "Приглашения в сообщества", + "Notify the whole room": "Уведомить всю комнату", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Эти комнаты отображаются для участников сообщества на странице сообщества. Участники сообщества могут присоединиться к комнатам, щелкнув на них.", + "Show these rooms to non-members on the community page and room list?": "Следует ли показывать эти комнаты посторонним на странице сообщества и в списке комнат?", + "Sign in to get started": "Войдите, чтобы начать", + "Visibility in Room List": "Видимость в списке комнат", + "Visible to everyone": "Всем", + "Only visible to community members": "Только участникам сообщества", + "Hide avatar changes": "Скрывать уведомления об изменении аватаров", + "Hide display name changes": "Скрывать уведомления об изменениях имен", + "Enable inline URL previews by default": "Включить предпросмотр ссылок по умолчанию", + "Enable URL previews for this room (only affects you)": "Включить предпросмотр ссылок в этой комнате (влияет только на вас)", + "Enable URL previews by default for participants in this room": "Включить предпросмотр ссылок для участников этой комнаты по умолчанию", + "Status.im theme": "Тема status.im", + "Restricted": "Ограниченный пользователь", + "Username on %(hs)s": "Имя пользователя на %(hs)s", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Не удалось изменить видимость '%(roomName)s' в %(groupId)s.", + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s отклонили приглашения %(count)s раз", + "one": "%(severalUsers)sотклонили приглашения" + }, + "URL previews are enabled by default for participants in this room.": "Предпросмотр ссылок по умолчанию включен для участников этой комнаты.", + "URL previews are disabled by default for participants in this room.": "Предпросмотр ссылок по умолчанию выключен для участников этой комнаты.", + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)sотклонил(а) приглашение %(count)s раз", + "one": "%(oneUser)sотклонил(а) приглашение" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)sотозвали приглашения %(count)s раз", + "one": "%(severalUsers)sотозвали приглашения" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)sотклонил(а) приглашение %(count)s раз", + "one": "%(oneUser)sотозвал(а) приглашение" + }, + "Please note you are logging into the %(hs)s server, not matrix.org.": "Обратите внимание, что вы заходите на сервер %(hs)s, а не на matrix.org.", + "Custom of %(powerLevel)s": "Специальные права: %(powerLevel)s", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML для страницы вашего сообщества

\n

\n Используйте подробное описание для представления вашего сообщества новым участникам, или\n поделитесь чем-нибудь важным, например ссылками\n

\n

\n Также вы можете использовать теги 'img'\n

\n", + "%(duration)ss": "%(duration)s сек", + "%(duration)sm": "%(duration)s мин", + "%(duration)sh": "%(duration)s ч", + "%(duration)sd": "%(duration)s дн", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "У вашего сообщества нет подробного описания HTML-страницы для показа участникам.
Щелкните здесь, чтобы открыть параметры и добавить его!", + "Online for %(duration)s": "В сети %(duration)s", + "Offline for %(duration)s": "Не в сети %(duration)s", + "Idle for %(duration)s": "Неактивен %(duration)s", + "Unknown for %(duration)s": "Неизвестно %(duration)s", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Здесь никого нет! Хотите пригласить кого-нибудь или выключить предупреждение о пустой комнате?", + "Something went wrong when trying to get your communities.": "Что-то пошло не так при попытке получить список ваших сообществ.", + "Delete %(count)s devices": { + "other": "Удалить (%(count)s)", + "one": "Удалить" + }, + "Select devices": "Выбрать", + "This homeserver doesn't offer any login flows which are supported by this client.": "Этот домашний сервер не поддерживает метод входа, поддерживаемый клиентом.", + "Call Failed": "Звонок не удался", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "В этой комнате есть неизвестные устройства: если вы решите их не проверять, имейте в виду, что кто-то, возможно, вас прослушивает.", + "Review Devices": "Проверка устройств", + "Call Anyway": "Позвонить в любом случае", + "Answer Anyway": "Ответить в любом случае", + "Call": "Позвонить", + "Answer": "Ответить", + "Send": "Отправить", + "Addresses": "Адреса", + "collapse": "свернуть", + "expand": "развернуть", + "Old cryptography data detected": "Обнаружены старые криптографические данные", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Обнаружены данные из более старой версии Riot. Это приведет к сбою криптографии в более ранней версии. В этой версии не могут быть расшифрованы сообщения, которые использовались недавно при использовании старой версии. Это также может привести к сбою обмена сообщениями с этой версией. Если возникают неполадки, выйдите и снова войдите в систему. Чтобы сохранить журнал сообщений, экспортируйте и повторно импортируйте ключи.", + "Warning": "Внимание", + "Showing flair for these communities:": "Комната принадлежит следующим сообществам:", + "This room is not showing flair for any communities": "Эта комната не принадлежит каким-либо сообществам", + "Flair will appear if enabled in room settings": "Значок появится, если он включен в настройках комнаты", + "Flair": "Значки сообществ", + "Flair will not appear": "Значок не будет отображаться", + "Display your community flair in rooms configured to show it.": "Вы можете показывать значки своих сообществ в комнатах, в которых это разрешено.", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "После понижения своих привилегий вы не сможете это отменить. Если вы являетесь последним привилегированным пользователем в этой комнате, выдать права кому-либо заново будет невозможно.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Отправить все или отменить все сейчас. Можно также выбрать отдельные сообщения для отправки или отмены.", + "one": "Отправить или отменить сообщение сейчас." + }, + "Send an encrypted reply…": "Отправить зашифрованный ответ…", + "Send a reply (unencrypted)…": "Отправить ответ (нешифрованный)…", + "Send an encrypted message…": "Отправить зашифрованное сообщение…", + "Send a message (unencrypted)…": "Отправить сообщение (нешифрованное)…", + "Replying": "Отвечает", + "Minimize apps": "Свернуть приложения", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Конфиденциальность важна для нас, поэтому мы не собираем никаких личных или идентифицирующих данных для нашей аналитики.", + "Learn more about how we use analytics.": "Подробнее о том, как мы используем аналитику.", + "The information being sent to us to help make Riot.im better includes:": "Информация, отправляемая нам, чтобы помочь нам сделать Riot.im лучше, включает в себя:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Если на этой странице встречаются сведения личного характера, например имя комнаты, имя пользователя или группы, они удаляются перед отправкой на сервер.", + "The platform you're on": "Используемая платформа", + "The version of Riot.im": "Версия Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Вошли вы в систему или нет (мы не храним ваше имя пользователя)", + "Your language of choice": "Выбранный язык", + "Your homeserver's URL": "URL-адрес сервера", + "Your identity server's URL": "URL-адрес сервера идентификации", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "Which officially provided instance you are using, if any": "Каким официально поддерживаемым клиентом вы пользуетесь (если пользуетесь)", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Используете ли вы режим Richtext в редакторе Rich Text Editor", + "This room is not public. You will not be able to rejoin without an invite.": "Эта комната не является публичной. Вы не сможете войти без приглашения.", + "Show devices, send anyway or cancel.": "Показать устройства, отправить в любом случае или отменить.", + "Community IDs cannot be empty.": "ID сообществ не могут быть пустыми.", + "In reply to ": "В ответ на ", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s изменил(а) отображаемое имя на %(displayName)s.", + "Failed to set direct chat tag": "Не удалось установить тег прямого чата", + "Failed to remove tag %(tagName)s from room": "Не удалось удалить тег %(tagName)s из комнаты", + "Failed to add tag %(tagName)s to room": "Не удалось добавить тег %(tagName)s в комнату", + "Clear filter": "Очистить фильтр", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Чтобы настроить фильтр, перетащите аватар сообщества на панель фильтров в левой части экрана. Вы можете нажать на аватар в панели фильтров в любое время, чтобы увидеть только комнаты и людей, связанных с этим сообществом.", + "Did you know: you can use communities to filter your Riot.im experience!": "Знаете ли вы: вы можете использовать сообщества, чтобы фильтровать в Riot.im!", + "Disable Community Filter Panel": "Отключить панель сообществ", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Если на других устройствах тоже нет ключа для этого сообщения, вы не сможете его расшифровать.", + "Key request sent.": "Запрос ключа отправлен.", + "Re-request encryption keys from your other devices.": "Повторно запросить ключи шифрования с других устройств.", + "%(user)s is a %(userRole)s": "%(user)s является %(userRole)s", + "Your key share request has been sent - please check your other devices for key share requests.": "Запрос на передачу ключей отправлен — проверьте остальные устройства.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Запросы на передачу ключей автоматически отправляются на другие устройства. Если вы отклонили или отменили запрос на другом устройстве, нажмите, чтобы запросить ключи повторно.", + "Code": "Код", + "Debug Logs Submission": "Отправка журналов отладки", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Если вы отправили ошибку через GitHub, журналы отладки могут помочь нам выявить проблему. Журналы отладки содержат данные об использовании приложения, включая ваше имя пользователя, идентификаторы или псевдонимы комнат или групп, которые вы посетили, а также имена других пользователей. Они не содержат сообщений.", + "Submit debug logs": "Отправка журналов отладки", + "Opens the Developer Tools dialog": "Открывает Инструменты разработчика", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Прочитано %(displayName)s (%(userName)s) в %(dateTime)s", + "Unable to join community": "Не удалось присоединиться к сообществу", + "Unable to leave community": "Не удалось покинуть сообщество", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Изменения имени и аватара, внесенные в ваше сообщество, могут не отображаться другим пользователям в течение 30 минут.", + "Join this community": "Присоединиться к сообществу", + "Leave this community": "Покинуть это сообщество", + "Who can join this community?": "Кто может присоединиться к этому сообществу?", + "Everyone": "Все", + "Stickerpack": "Стикеры", + "Add a stickerpack": "Добавить стикеры", + "Hide Stickers": "Скрыть стикеры", + "Show Stickers": "Показать стикеры", + "Fetching third party location failed": "Не удалось извлечь местоположение третьей стороны", + "A new version of Riot is available.": "Доступна новая версия Riot.", + "I understand the risks and wish to continue": "Я понимаю риски и желаю продолжить", + "Couldn't load home page": "Не удалось загрузить домашнюю страницу", + "Send Account Data": "Отправить данные аккаунта", + "All notifications are currently disabled for all targets.": "Все оповещения для всех устройств отключены.", + "Uploading report": "Отправка отчета", + "Sunday": "Воскресенье", + "Notification targets": "Устройства для уведомлений", + "Today": "Сегодня", + "Files": "Файлы", + "You are not receiving desktop notifications": "Вы не получаете системные уведомления", + "Friday": "Пятница", + "Update": "Обновить", + "What's New": "Что изменилось", + "Add an email address above to configure email notifications": "Добавьте email выше для настройки уведомлений", + "Expand panel": "Развернуть панель", + "On": "Включить", + "%(count)s Members": { + "other": "%(count)s членов", + "one": "%(count)s член" + }, + "Filter room names": "Поиск по комнатам", + "Changelog": "История изменений", + "Waiting for response from server": "Ожидание ответа от сервера", + "Uploaded on %(date)s by %(user)s": "Загружено %(user)s в %(date)s", + "Send Custom Event": "Отправить индивидуальное мероприятие", + "Advanced notification settings": "Дополнительные параметры уведомлений", + "Failed to send logs: ": "Не удалось отправить журналы: ", + "delete the alias.": "удалить псевдоним.", + "To return to your account in future you need to set a password": "Чтобы вы могли вернуться в свою учетную запись в будущем, вам необходимо задать пароль", + "Forget": "Забыть", + "#example": "#пример", + "Hide panel": "Скрыть панель", + "You cannot delete this image. (%(code)s)": "Вы не можете удалить это изображение. (%(code)s)", + "Cancel Sending": "Отменить отправку", + "This Room": "В этой комнате", + "The Home Server may be too old to support third party networks": "Домашний сервер может быть слишком старым для поддержки сетей сторонних производителей", + "Noisy": "Вкл. (со звуком)", + "Room not found": "Комната не найдена", + "Messages containing my display name": "Сообщения с моим именем", + "Messages in one-to-one chats": "Сообщения в 1:1 чатах", + "Unavailable": "Недоступен", + "Error saving email notification preferences": "Ошибка сохранения настроек email-уведомлений", + "View Decrypted Source": "Просмотр расшифрованного источника", + "Failed to update keywords": "Не удалось обновить ключевые слова", + "Notes:": "Заметки:", + "remove %(name)s from the directory.": "удалить %(name)s из каталога.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Уведомления по этим ключевым словам соответствуют правилам, которые нельзя отобразить здесь:", + "Safari and Opera work too.": "Safari и Opera работают тоже.", + "Please set a password!": "Пожалуйста, установите пароль!", + "You have successfully set a password!": "Вы успешно установили пароль!", + "An error occurred whilst saving your email notification preferences.": "Возникла ошибка при сохранении настроек email-уведомлений.", + "Explore Room State": "Просмотр статуса комнаты", + "Source URL": "Исходный URL-адрес", + "Messages sent by bot": "Сообщения от ботов", + "Filter results": "Фильтрация результатов", + "Members": "Участники", + "No update available.": "Нет доступных обновлений.", + "Resend": "Переотправить", + "Failed to get protocol list from Home Server": "Не удалось получить список протоколов с домашнего сервера", + "Collecting app version information": "Сбор информации о версии приложения", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Удалить псевдоним комнаты %(alias)s и удалить %(name)s из каталога?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Это позволит вам вернуться к учетной записи после выхода из системы и войти на других устройствах.", + "Keywords": "Ключевые слова", + "Enable notifications for this account": "Включить уведомления для этой учетной записи", + "Directory": "Каталог", + "Invite to this community": "Пригласить в это сообщество", + "Search for a room": "Поиск комнаты", + "Messages containing keywords": "Сообщения, содержащие определенные ключевые слова", + "View Source": "Просмотр источника", + "Tuesday": "Вторник", + "Enter keywords separated by a comma:": "Введите ключевые слова, разделенные запятой:", + "Search…": "Поиск…", + "You have successfully set a password and an email address!": "Вы успешно установили пароль и email!", + "Remove %(name)s from the directory?": "Удалить %(name)s из каталога?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot использует многие передовые возможности браузера, некоторые из которых недоступны или являются экспериментальным в вашем текущем браузере.", + "Developer Tools": "Инструменты разработчика", + "Preparing to send logs": "Подготовка к отправке журналов", + "Enable desktop notifications": "Включить оповещения на рабочем столе", + "Explore Account Data": "Просмотр данных аккаунта", + "All messages (noisy)": "Все сообщения (со звуком)", + "Saturday": "Суббота", + "Remember, you can always set an email address in user settings if you change your mind.": "Помните, что вы всегда сможете задать email в настройках пользователя, если передумаете.", + "Direct Chat": "Прямой чат", + "The server may be unavailable or overloaded": "Сервер, вероятно, недоступен или перегружен", + "Reject": "Отклонить", + "Failed to set Direct Message status of room": "Не удалось установить статус прямого сообщения в комнате", + "Monday": "Понедельник", + "Remove from Directory": "Удалить из каталога", + "Enable them now": "Включить их сейчас", + "Messages containing my user name": "Сообщения с моим идентификатором", + "Toolbox": "Панель инструментов", + "Collecting logs": "Сбор журналов", + "more": "больше", + "GitHub issue link:": "Ссылка на проблему в GitHub:", + "You must specify an event type!": "Необходимо указать тип мероприятия!", + "(HTTP status %(httpStatus)s)": "(статус HTTP %(httpStatus)s)", + "Invite to this room": "Пригласить в комнату", + "Please install Chrome or Firefox for the best experience.": "Лучший опыт вы получите, установив Chrome или Firefox.", + "Failed to get public room list": "Не удалось получить список общедоступных комнат", + "Send logs": "Отправка журналов", + "All messages": "Все сообщения", + "Call invitation": "Звонки", + "Downloading update...": "Загрузка обновления…", + "State Key": "Ключ состояния", + "Failed to send custom event.": "Не удалось отправить индивидуальное мероприятие.", + "What's new?": "Что нового?", + "Notify me for anything else": "Уведомлять во всех остальных случаях", + "When I'm invited to a room": "Приглашения в комнаты", + "Can't update user notification settings": "Не удалось обновить пользовательские настройки оповещения", + "Notify for all other messages/rooms": "Уведомлять обо всех остальных сообщениях и комнатах", + "Unable to look up room ID from server": "Не удалось найти ID комнаты на сервере", + "Couldn't find a matching Matrix room": "Не удалось найти подходящую комнату Matrix", + "All Rooms": "Везде", + "You cannot delete this message. (%(code)s)": "Это сообщение нельзя удалить. (%(code)s)", + "Thursday": "Четверг", + "Forward Message": "Переслать сообщение", + "Logs sent": "Журналы отправлены", + "Back": "Назад", + "Reply": "Ответить", + "Show message in desktop notification": "Показывать текст сообщения в уведомлениях на рабочем столе", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Журналы отладки содержат данные об использовании приложения, включая ваше имя пользователя, идентификаторы или псевдонимы комнат или групп, которые вы посетили, а также имена других пользователей. Они не содержат сообщений.", + "Unhide Preview": "Показать предварительный просмотр", + "Unable to join network": "Не удается подключиться к сети", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Возможно, вы настроили их не в Riot, а в другом Matrix-клиенте. Настроить их в Riot не удастся, но они будут продолжать работать и здесь", + "Sorry, your browser is not able to run Riot.": "К сожалению, ваш браузер не способен запустить Riot.", + "Messages in group chats": "Сообщения в конференциях", + "Yesterday": "Вчера", + "Error encountered (%(errorDetail)s).": "Обнаружена ошибка (%(errorDetail)s).", + "Login": "Войти", + "Low Priority": "Низкий приоритет", + "Unable to fetch notification target list": "Не удалось получить список устройств для уведомлений", + "Set Password": "Задать пароль", + "Enable audible notifications in web client": "Включить звуковые уведомления в веб-клиенте", + "Off": "Выключить", + "Riot does not know how to join a room on this network": "Riot не знает, как присоединиться к комнате, принадлежащей к этой сети", + "Mentions only": "Только при упоминаниях", + "Wednesday": "Среда", + "You can now return to your account after signing out, and sign in on other devices.": "Теперь вы сможете вернуться к своей учетной записи после выхода из системы и войти на других устройствах.", + "Enable email notifications": "Включить уведомления на email", + "Event Type": "Тип мероприятия", + "Download this file": "Скачать файл", + "Pin Message": "Закрепить сообщение", + "Failed to change settings": "Не удалось изменить настройки", + "View Community": "Просмотр сообщества", + "Event sent!": "Мероприятие отправлено!", + "Event Content": "Содержание мероприятия", + "Thank you!": "Спасибо!", + "Quote": "Цитата", + "Collapse panel": "Свернуть панель", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "В текущем браузере внешний вид приложения может быть полностью неверным, а некоторые или все функции могут не работать. Если вы хотите попробовать в любом случае, то можете продолжить, но с теми проблемами, с которыми вы можете столкнуться вам придется разбираться самостоятельно!", + "Checking for an update...": "Проверка обновлений…", + "There are advanced notifications which are not shown here": "Существуют дополнительные уведомления, которые не показаны здесь", + "Missing roomId.": "Отсутствует идентификатор комнаты.", + "You don't currently have any stickerpacks enabled": "У вас нет стикеров", + "Picture": "Снимок", + "Popout widget": "Всплывающий виджет", + "Every page you use in the app": "Каждая страница, которую вы используете в приложении", + "e.g. ": "напр. ", + "Your User Agent": "Ваш пользовательский агент", + "Your device resolution": "Разрешение вашего устройства", + "Always show encryption icons": "Всегда показывать значки шифрования", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Ошибки Riot отслеживаются на GitHub: создать проблему на GitHub.", + "Log out and remove encryption keys?": "Выйти и удалить ключи шифрования?", + "Send Logs": "Отправить логи", + "Clear Storage and Sign Out": "Очистить хранилище и выйти", + "Refresh": "Обновить", + "We encountered an error trying to restore your previous session.": "Произошла ошибка при попытке восстановить предыдущий сеанс.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Очистка хранилища вашего браузера может устранить проблему, но при этом ваша сессия будет завершена и зашифрованная история чата станет нечитаемой.", + "Unable to reply": "Не удается ответить", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не удается загрузить событие, на которое был дан ответ. Либо оно не существует, либо у вас нет разрешения на его просмотр.", + "Enable widget screenshots on supported widgets": "Включить скриншоты виджета в поддерживаемых виджетах", + "Collapse Reply Thread": "Ответить с цитированием", + "Send analytics data": "Отправить данные аналитики", + "Muted Users": "Приглушенные пользователи", + "Warning: This widget might use cookies.": "Внимание: этот виджет может использовать cookie.", + "Terms and Conditions": "Условия и положения", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Для продолжения использования сервера %(homeserverDomain)s вы должны ознакомиться и принять условия и положения.", + "Review terms and conditions": "Просмотр условий и положений", + "e.g. %(exampleValue)s": "напр. %(exampleValue)s", + "Failed to indicate account erasure": "Не удается удалить учетную запись", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Это навсегда сделает вашу учетную запись невозможной для использования. Вы не сможете войти в систему, и никто не сможет перерегистрировать тот же идентификатор пользователя. Это приведет к тому, что ваша учетная запись выйдет из всех комнат, в которые она входит, и будут удалены данные вашей учетной записи с сервера идентификации. Это действие необратимо.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "По умолчанию деактивация вашей учетной записи не приведет к удалению всех ваших сообщений. Если вы хотите, чтобы мы удалили ваши сообщения, поставьте отметку в поле ниже.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Видимость сообщений в Matrix похожа на электронную почту. Удаление ваших сообщений означает, что отправленные вами сообщения не будут видны новым или незарегистрированным пользователям, но зарегистрированные пользователи, у которых уже есть доступ к этим сообщениям, по-прежнему будут иметь доступ к своей копии.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Пожалуйста, удалите все сообщения, которые я отправил, после деактивации учетной записи. (Внимание: будущие пользователи увидят неполный вид разговоров)", + "To continue, please enter your password:": "Чтобы продолжить, введите пароль:", + "password": "пароль", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Пожалуйста, помогите улучшить Riot.im, отправляя анонимные данные использования. При этом будут использоваться cookie (ознакомьтесь с нашейПолитикой cookie).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Пожалуйста, помогите улучшить Riot.im, отправляя анонимные данные использования. При этом будут использоваться cookie.", + "Yes, I want to help!": "Да, я хочу помочь!", + "Reload widget": "Перезагрузить виджет", + "To notify everyone in the room, you must be a": "Для уведомления всех в комнате, вы должны быть", + "Can't leave Server Notices room": "Невозможно покинуть комнату сервера уведомлений", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Эта комната используется для важных сообщений от сервера, поэтому вы не можете ее покинуть.", + "Try the app first": "Сначала попробуйте приложение", + "Encrypting": "Шифрование", + "Encrypted, not sent": "Зашифровано, не отправлено", + "No Audio Outputs detected": "Аудиовыход не обнаружен", + "Audio Output": "Аудиовыход", + "Share Link to User": "Поделиться ссылкой с пользователем", + "Share room": "Поделиться комнатой", + "Share Room": "Поделиться комнатой", + "Link to most recent message": "Ссылка на последнее сообщение", + "Share User": "Поделиться пользователем", + "Share Community": "Поделиться сообществом", + "Link to selected message": "Ссылка на выбранное сообщение", + "COPY": "КОПИРОВАТЬ", + "Jitsi Conference Calling": "Конференц-связь Jitsi", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "В зашифрованных комнатах, подобных этой, предварительный просмотр URL-адресов отключен по умолчанию, чтобы гарантировать, что ваш сервер (где создаются предварительные просмотры) не может собирать информацию о ссылках, которые вы видите в этой комнате.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Когда кто-то вставляет URL-адрес в свое сообщение, может быть отображен предварительный просмотр URL-адреса, чтобы предоставить дополнительную информацию об этой ссылке, такую как название, описание и изображение с веб-сайта.", + "The email field must not be blank.": "Поле email не должно быть пустым.", + "The user name field must not be blank.": "Поле имени пользователя не должно быть пустым.", + "The phone number field must not be blank.": "Поле номера телефона не должно быть пустым.", + "The password field must not be blank.": "Поле пароля не должно быть пустым.", + "Call in Progress": "Выполнение вызова", + "A call is already in progress!": "Вызов выполняется!", + "You have no historical rooms": "У вас нет архивных комнат", + "Share Room Message": "Обмен сообщениями в комнате", + "Share Message": "Обмен сообщениями", + "You can't send any messages until you review and agree to our terms and conditions.": "Вы не можете отправлять сообщения до тех пор, пока вы не примете наши правила и положения.", + "Demote": "Понижение", + "Demote yourself?": "Понизить самого себя?", + "This event could not be displayed": "Это событие отобразить невозможно", + "deleted": "удален", + "underlined": "подчеркнутый", + "A conference call could not be started because the intgrations server is not available": "Запуск конференции невозможен из-за недоступности сервера интеграции", + "Permission Required": "Требуется разрешение", + "You do not have permission to start a conference call in this room": "У вас нет разрешения на запуск конференции в этой комнате", + "A call is currently being placed!": "Есть активный вызов!", + "Failed to remove widget": "Не удалось удалить виджет", + "An error ocurred whilst trying to remove the widget from the room": "Произошла ошибка при удалении виджета из комнаты", + "System Alerts": "Системные оповещения", + "Please contact your service administrator to continue using this service.": "Для продолжения использования этого сервиса обратитесь к администратору.", + "Room version number: ": "Номер версии комнаты: ", + "Internal room ID: ": "Внутренний ID комнаты: ", + "There is a known vulnerability affecting this room.": "В этой комнате есть известная уязвимость.", + "This room version is vulnerable to malicious modification of room state.": "Эта версия комнаты уязвима для злонамеренной модификации состояния.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Нажмите здесь, чтобы перейти к последней версии комнаты и обеспечить ее целостность.", + "Only room administrators will see this warning": "Только администраторы комнат увидят это предупреждение", + "Please contact your service administrator to continue using the service.": "Пожалуйста, обратитесь к вашему администратору, чтобы продолжить использование сервиса.", + "Please contact your service administrator to get this limit increased.": "Пожалуйста, обратитесь к вашему администратору, чтобы увеличить этот лимит.", + "Upgrade Room Version": "Обновление версии комнаты", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Обновление этой комнаты требует закрытия текущей комнаты и создания новой. Чтобы предоставить участникам комнаты наилучший опыт, мы:", + "Create a new room with the same name, description and avatar": "Создадим новую комнату с тем же именем, описанием и аватаром", + "Update any local room aliases to point to the new room": "Обновим локальные псевдонимы комнат", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Остановим общение пользователей в старой версии комнаты и опубликуем сообщение, в котором пользователям рекомендуется перейти в новую комнату", + "Put a link back to the old room at the start of the new room so people can see old messages": "Разместим ссылку на старую комнату, чтобы люди могли видеть старые сообщения", + "Please contact your service administrator to continue using this service.": "Пожалуйста, обратитесь к вашему администратору, чтобы продолжить использовать этот сервис.", + "Increase performance by only loading room members on first view": "Увеличьте производительность, загрузив только список участников комнаты", + "Lazy loading members not supported": "Задержка загрузки элементов не поддерживается", + "Registration Required": "Требуется регистрация", + "You need to register to do this. Would you like to register now?": "Необходимо зарегистрироваться. Хотите зарегистрироваться?", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s с %(browserName)s на %(osName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop на %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Веб-сайт Riot не адаптирован для мобильных устройств. Установить приложение?", + "Unknown device": "Неизвестное устройство", + "You need to be using HTTPS to place a screen-sharing call.": "Для трансляции рабочего стола требуется использование HTTPS.", + "Welcome to Riot.im": "Добро пожаловать на Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализованный, зашифрованный чат и совместное рабочее пространство на основе [matrix]", + "Search the room directory": "Поиск в каталоге комнат", + "Chat with Riot Bot": "Пообщаться с ботом Riot", + "Get started with some tips from Riot Bot!": "Начните с советов от бота Riot!", + "General discussion about Matrix and Riot": "Общие разговоры о Matrix и Riot", + "Discussion of all things Matrix!": "Разговоры обо всем, что связано с Matrix!", + "Riot/Web & Desktop chat": "Чат о Riot/Web и Desktop", + "Matrix technical discussions": "Технические разговоры о Matrix", + "Running Matrix services": "Запуск и обслуживание своих серверов Matrix", + "Community-run support for Synapse": "Поддержка Synapse от сообщества", + "Admin support for Dendrite": "Поддержка администраторов Dendrite", + "Building services on Matrix": "Разработка сервисов на основе Matrix", + "Implementing VoIP services with Matrix": "Реализация VoIP-служб на основе Matrix", + "Riot/iOS & matrix-ios-sdk chat": "Чат о Riot/iOS и matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "Чат о Riot/Android и matrix-android-sdk", + "Announcements about Synapse releases": "Объявления о релизах Synapse", + "Support for those using and running matrix-appservice-irc": "Поддержка пользователей и администраторов matrix-appservice-irc", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "В Matrix существует множество комнат, как связанных с другими сетями (Slack, IRC, Gitter и пр.), так и самостоятельных. Загляните в каталог!", + "Support for those using the Matrix spec": "Поддержка по вопросам спецификации Matrix", + "Design and implementation of E2E in Matrix": "Разработка и внедрение сквозного шифрования в Matrix", + "Implementing VR services with Matrix": "Реализация сервисов виртуальной реальности (VR) на основе Matrix", + "Discussion of the Identity Service API": "Обсуждение API серверов идентификации", + "Support for those using, running and writing other bridges": "Поддержка пользователей и разработчиков прочих мостов в Matrix", + "Contributing code to Matrix and Riot": "Участие в разработке Matrix и Riot", + "Dev chat for the Riot/Web dev team": "Чат для команды разработчиков Riot/Web", + "Dev chat for the Dendrite dev team": "Чат для команды разработчиков Dendrite", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Вы можете войти на другой сервер Matrix, указав его URL-адрес.
Это позволяет использовать Riot с учетной записью Matrix на другом сервере.

Кроме того, можно выбрать другой сервер идентификации, однако в таком случае вы не сможете приглашать пользователей или быть приглашенным по адресу электронной почты.", + "Co-ordination for Riot translators": "Координационный чат для переводчиков Riot" +} \ No newline at end of file diff --git a/riot/i18n/sk.json b/riot/i18n/sk.json new file mode 100644 index 0000000..00bfae7 --- /dev/null +++ b/riot/i18n/sk.json @@ -0,0 +1,1390 @@ +{ + "This email address is already in use": "Táto emailová adresa sa už používa", + "This phone number is already in use": "Toto telefónne číslo sa už používa", + "Failed to verify email address: make sure you clicked the link in the email": "Nepodarilo sa overiť emailovú adresu: Uistite sa, že ste správne klikli na odkaz v emailovej správe", + "Call Timeout": "Časový limit hovoru", + "The remote side failed to pick up": "Vzdialenej strane sa nepodarilo prijať hovor", + "Unable to capture screen": "Nie je možné zachytiť obrazovku", + "Existing Call": "Existujúci hovor", + "You are already in a call.": "Už ste súčasťou iného hovoru.", + "VoIP is unsupported": "VoIP nie je podporovaný", + "You cannot place VoIP calls in this browser.": "Pomocou tohoto webového prehliadača nemôžete uskutočňovať VoIP hovory.", + "You cannot place a call with yourself.": "Nemôžete uskutočniť hovor so samým sebou.", + "Conference calls are not supported in this client": "Tento klient nepodporuje konferenčné hovory", + "Conference calls are not supported in encrypted rooms": "Konferenčné hovory nie sú podporované v šifrovaných miestnostiach", + "Warning!": "Upozornenie!", + "Conference calling is in development and may not be reliable.": "Konferenčné hovory sú stále vo vývoji a nemusia byť úplne spoľahlivé.", + "Failed to set up conference call": "Nepodarilo sa nastaviť konferenčný hovor", + "Conference call failed.": "Konferenčný hovor sa nepodarilo uskutočniť.", + "The file '%(fileName)s' failed to upload": "Nepodarilo sa nahrať súbor '%(fileName)s'", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Veľkosť súboru '%(fileName)s' prekračuje limit veľkosti súboru nahrávania na tento domovský server", + "Upload Failed": "Nahrávanie zlyhalo", + "Sun": "Ne", + "Mon": "Po", + "Tue": "Ut", + "Wed": "St", + "Thu": "Št", + "Fri": "Pi", + "Sat": "So", + "Jan": "Jan", + "Feb": "Feb", + "Mar": "Mar", + "Apr": "Apr", + "May": "Maj", + "Jun": "Jun", + "Jul": "Jul", + "Aug": "Aug", + "Sep": "Sep", + "Oct": "Okt", + "Nov": "Nov", + "Dec": "Dec", + "PM": "PM", + "AM": "AM", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "Who would you like to add to this community?": "Koho si želáte pridať do tejto komunity?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Pozor: Každá osoba, ktorú pridáte do komunity bude verejne dostupná pre všetkých, čo poznajú ID komunity", + "Invite new community members": "Pozvať nových členov komunity", + "Name or matrix ID": "Meno alebo matrix ID", + "Invite to Community": "Pozvať do komunity", + "Which rooms would you like to add to this community?": "Ktoré miestnosti by ste radi pridali do tejto komunity?", + "Add rooms to the community": "Pridať miestnosti do komunity", + "Room name or alias": "Názov miestnosti alebo alias", + "Add to community": "Pridať do komunity", + "Failed to invite the following users to %(groupId)s:": "Do komunity %(groupId)s sa nepodarilo pozvať nasledujúcich používateľov:", + "Failed to invite users to community": "Do komunity sa nepodarilo pozvať používateľov", + "Failed to invite users to %(groupId)s": "Do komunity %(groupId)s sa nepodarilo pozvať používateľov", + "Failed to add the following rooms to %(groupId)s:": "Do komunity %(groupId)s sa nepodarilo pridať nasledujúce miestnosti:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot nemá udelené povolenie, aby vám mohol posielať oznámenia - Prosím, skontrolujte nastavenia vašeho prehliadača", + "Riot was not given permission to send notifications - please try again": "Aplikácii Riot neboli udelené oprávnenia potrebné pre posielanie oznámení - prosím, skúste to znovu", + "Unable to enable Notifications": "Nie je možné povoliť oznámenia", + "This email address was not found": "Túto emailovú adresu sa nepodarilo nájsť", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Zdá sa, že vaša emailová adresa nie je priradená k žiadnemu Matrix ID na tomto domovskom serveri.", + "Default": "Predvolené", + "Moderator": "Moderátor", + "Admin": "Správca", + "Start a chat": "Začať konverzáciu", + "Who would you like to communicate with?": "S kým si želáte komunikovať?", + "Email, name or matrix ID": "Emailová adresa, meno alebo matrix ID", + "Start Chat": "Začať konverzáciu", + "Invite new room members": "Pozvať nových členov do miestnosti", + "Who would you like to add to this room?": "Koho si želáte pridať do tejto miestnosti?", + "Send Invites": "Poslať pozvánky", + "Failed to invite user": "Nepodarilo sa pozvať používateľa", + "Operation failed": "Operácia zlyhala", + "Failed to invite": "Pozvanie zlyhalo", + "Failed to invite the following users to the %(roomName)s room:": "Do miestnosti %(roomName)s sa nepodarilo pozvať nasledujúcich používateľov:", + "You need to be logged in.": "Mali by ste byť prihlásení.", + "You need to be able to invite users to do that.": "Na uskutočnenie tejto akcie by ste mali byť schopní pozývať používateľov.", + "Unable to create widget.": "Nie je možné vytvoriť widget.", + "Failed to send request.": "Nepodarilo sa odoslať požiadavku.", + "This room is not recognised.": "Nie je možné rozpoznať takúto miestnosť.", + "Power level must be positive integer.": "Úroveň moci musí byť kladné celé číslo.", + "You are not in this room.": "Nenachádzate sa v tejto miestnosti.", + "You do not have permission to do that in this room.": "V tejto miestnosti nemáte oprávnenie na vykonanie takejto akcie.", + "Missing room_id in request": "V požiadavke chýba room_id", + "Room %(roomId)s not visible": "Miestnosť %(roomId)s nie je viditeľná", + "Missing user_id in request": "V požiadavke chýba user_id", + "Usage": "Použitie", + "/ddg is not a command": "/ddg nie je žiaden príkaz", + "To use it, just wait for autocomplete results to load and tab through them.": "Ak to chcete použiť, len počkajte na načítanie výsledkov automatického dopĺňania a cyklicky prechádzajte stláčaním klávesu tab..", + "Unrecognised room alias:": "Nerozpoznaný alias miestnosti:", + "Ignored user": "Ignorovaný používateľ", + "You are now ignoring %(userId)s": "Od teraz ignorujete používateľa %(userId)s", + "Unignored user": "Ignorácia zrušená", + "You are no longer ignoring %(userId)s": "Od teraz viac neignorujete používateľa %(userId)s", + "Unknown (user, device) pair:": "Neznámy pár (používateľ, zariadenie):", + "Device already verified!": "Zariadenie už overené!", + "WARNING: Device already verified, but keys do NOT MATCH!": "POZOR: Zariadenie je už overené, ale kľúče SA NEZHODUJÚ!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "POZOR: OVERENIE KĽÚČOV ZLYHALO! Podpisovací kľúč zo zariadenia %(deviceId)s používateľa %(userId)s je \"%(fprint)s\" čo sa nezhoduje s poskytnutým kľúčom \"%(fingerprint)s\". Mohlo by to znamenať, že vaša komunikácia je práve odpočúvaná!", + "Verified key": "Kľúč overený", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Podpisovací kľúč, ktorý ste poskytli súhlasí s podpisovacím kľúčom, ktorý ste dostali zo zariadenia %(deviceId)s používateľa %(userId)s's. Zariadenie je považované za overené.", + "Unrecognised command:": "Nerozpoznaný príkaz:", + "Reason": "Dôvod", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s prijal pozvanie do %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s prijal pozvanie.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s požiadal o VoIP konferenciu.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s pozval %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s zakázal vstup %(targetName)s.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s si nastavil zobrazované meno %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s odstránil svoje zobrazované meno (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s si z profilu odstránil obrázok.", + "%(senderName)s changed their profile picture.": "%(senderName)s si zmenil obrázok v profile.", + "%(senderName)s set a profile picture.": "%(senderName)s si nastavil obrázok v profile.", + "VoIP conference started.": "Začala VoIP konferencia.", + "%(targetName)s joined the room.": "%(targetName)s vstúpil do miestnosti.", + "VoIP conference finished.": "Skončila VoIP konferencia.", + "%(targetName)s rejected the invitation.": "%(targetName)s odmietol pozvanie.", + "%(targetName)s left the room.": "%(targetName)s opustil miestnosť.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s povolil vstup %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s vykázal %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s stiahol pozvanie %(targetName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s zmenil tému na \"%(topic)s\".", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s odstránil názov miestnosti.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s zmenil názov miestnosti na %(roomName)s.", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s poslal obrázok.", + "Someone": "Niekto", + "(not supported by this browser)": "(Nepodporované v tomto prehliadači)", + "%(senderName)s answered the call.": "%(senderName)s prijal hovor.", + "(could not connect media)": "(nie je možné spojiť médiá)", + "(no answer)": "(žiadna odpoveď)", + "(unknown failure: %(reason)s)": "(neznáma chyba: %(reason)s)", + "%(senderName)s ended the call.": "%(senderName)s ukončil hovor.", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s uskutočnil %(callType)s hovor.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s pozval %(targetDisplayName)s vstúpiť do miestnosti.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre všetkých členov, od kedy boli pozvaní.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre všetkých členov, od kedy vstúpili.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre všetkých členov.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s sprístupnil budúcu históriu miestnosti pre každého.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s sprístupnil budúcu históriu miestnosti neznámym (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s povolil E2E šifrovanie (algoritmus %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s z %(fromPowerLevel)s na %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s zmenil úroveň moci pre %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s zmenil pripnuté správy pre túto miestnosť.", + "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s zmenil widget %(widgetName)s", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s pridal widget %(widgetName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s odstránil widget %(widgetName)s", + "Communities": "Komunity", + "Message Pinning": "Pripnutie správ", + "%(displayName)s is typing": "%(displayName)s píše", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s a %(count)s ďalší píšu", + "one": "%(names)s a jeden ďalší píše" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s a %(lastPerson)s píšu", + "Failure to create room": "Nepodarilo sa vytvoriť miestnosť", + "Server may be unavailable, overloaded, or you hit a bug.": "Server môže byť nedostupný, preťažený, alebo ste narazili na chybu.", + "Unnamed Room": "Nepomenovaná miestnosť", + "Your browser does not support the required cryptography extensions": "Váš prehliadač nepodporuje požadované kryptografické rozšírenia", + "Not a valid Riot keyfile": "Toto nie je správny súbor s kľúčami Riot", + "Authentication check failed: incorrect password?": "Kontrola overenia zlyhala: Nesprávne heslo?", + "Failed to join room": "Nepodarilo sa vstúpiť do miestnosti", + "Active call (%(roomName)s)": "Aktívny hovor (%(roomName)s)", + "unknown caller": "neznámeho volajúceho", + "Incoming voice call from %(name)s": "Prichádzajúci audio hovor od %(name)s", + "Incoming video call from %(name)s": "Prichádzajúci video hovor od %(name)s", + "Incoming call from %(name)s": "Prichádzajúci hovor od %(name)s", + "Decline": "Odmietnuť", + "Accept": "Prijať", + "Error": "Chyba", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Na číslo +%(msisdn)s bola odoslaná textová správa, ktorá obsahuje overovací kód. Prosím zadajte tento overovací kód", + "Incorrect verification code": "Nesprávny overovací kód", + "Enter Code": "Vložte kód", + "Submit": "Odoslať", + "Phone": "Telefón", + "Add phone number": "Pridať telefónne číslo", + "Add": "Pridať", + "Failed to upload profile picture!": "Do profilu sa nepodarilo nahrať obrázok!", + "Upload new:": "Nahrať nový:", + "No display name": "Žiadne zobrazované meno", + "New passwords don't match": "Nové heslá sa nezhodujú", + "Passwords can't be empty": "Heslá nemôžu byť prázdne", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmena hesla momentálne obnoví šifrovacie kľúče na všetkých vašich zariadeniach, čo spôsobí, že história vašich šifrovaných konverzácií sa stane nečitateľná, jedine že si pred zmenou hesla exportujete kľúče miestností do súboru a po zmene kľúče importujete naspäť. V budúcnosti bude táto funkcia vylepšená.", + "Continue": "Pokračovať", + "Export E2E room keys": "Exportovať E2E šifrovacie kľúče miestností", + "Do you want to set an email address?": "Želáte si nastaviť emailovú adresu?", + "Current password": "Súčasné heslo", + "Password": "Heslo", + "New Password": "Nové heslo", + "Confirm password": "Potvrdiť heslo", + "Change Password": "Zmeniť heslo", + "Your home server does not support device management.": "Zdá sa, že váš domovský server nepodporuje správu zariadení.", + "Unable to load device list": "Nie je možné načítať zoznam zariadení", + "Device ID": "ID zariadenia", + "Device Name": "Názov zariadenia", + "Last seen": "Naposledy aktívne", + "Failed to set display name": "Nepodarilo sa nastaviť zobrazované meno", + "Authentication": "Overenie", + "Delete": "Vymazať", + "Disable Notifications": "Zakázať oznámenia", + "Enable Notifications": "Povoliť oznámenia", + "Cannot add any more widgets": "Nie je možné pridať ďalšie widgety", + "The maximum permitted number of widgets have already been added to this room.": "Do tejto miestnosti už bol pridaný maximálny povolený počet widgetov.", + "Add a widget": "Pridať widget", + "Drop File Here": "Pretiahnite sem súbor", + "Drop file here to upload": "Pretiahnutím sem nahráte súbor", + " (unsupported)": " (nepodporované)", + "Join as voice or video.": "Pripojte sa ako audio alebo video.", + "Ongoing conference call%(supportedText)s.": "Prebiehajúci%(supportedText)s hovor.", + "%(senderName)s sent an image": "%(senderName)s poslal obrázok", + "%(senderName)s sent a video": "%(senderName)s poslal video", + "%(senderName)s uploaded a file": "%(senderName)s nahral súbor", + "Options": "Možnosti", + "Undecryptable": "Nedešifrovateľné", + "Encrypted by a verified device": "Zašifrované overeným zariadením", + "Encrypted by an unverified device": "Zašifrované neovereným zariadením", + "Unencrypted message": "Nešifrovaná správa", + "Please select the destination room for this message": "Prosím, vyberte cieľovú miestnosť pre túto správu", + "Blacklisted": "Na čiernej listine", + "Verified": "Overené", + "Unverified": "Neoverené", + "device id: ": "ID zariadenia: ", + "Disinvite": "Stiahnuť pozvanie", + "Kick": "Vykázať", + "Disinvite this user?": "Stiahnuť pozvanie tohoto používateľa?", + "Kick this user?": "Vykázať tohoto používateľa?", + "Failed to kick": "Nepodarilo sa vykázať", + "Unban": "Povoliť vstup", + "Ban": "Zakázať vstup", + "Unban this user?": "Povoliť vstúpiť tomuto používateľovi?", + "Ban this user?": "Zakázať vstúpiť tomuto používateľovi?", + "Failed to ban user": "Nepodarilo sa zakázať vstup používateľa", + "Failed to mute user": "Nepodarilo sa umlčať používateľa", + "Failed to toggle moderator status": "Nepodarilo sa prepnúť stav moderátor", + "Failed to change power level": "Nepodarilo sa zmeniť úroveň moci", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Túto zmenu nebudete môcť vrátiť späť pretože tomuto používateľovi udeľujete rovnakú úroveň moci, akú máte vy.", + "Are you sure?": "Ste si istí?", + "No devices with registered encryption keys": "Žiadne zariadenia so zaregistrovanými šifrovacími kľúčmi", + "Devices": "Zariadenia", + "Unignore": "Prestať ignorovať", + "Ignore": "Ignorovať", + "Jump to read receipt": "Preskočiť na potvrdenie o prečítaní", + "Mention": "Zmieniť sa", + "Invite": "Pozvať", + "User Options": "Možnosti používateľa", + "Direct chats": "Priame konverzácie", + "Unmute": "Zrušiť umlčanie", + "Mute": "Umlčať", + "Revoke Moderator": "Odobrať stav moderátor", + "Make Moderator": "Udeliť stav moderátor", + "Admin Tools": "Nástroje správcu", + "Level:": "Úroveň:", + "and %(count)s others...": { + "other": "a ďalších %(count)s...", + "one": "a jeden ďalší..." + }, + "Invited": "Pozvaní", + "Filter room members": "Filtrovať členov v miestnosti", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (moc %(powerLevelNumber)s)", + "Attachment": "Príloha", + "Upload Files": "Nahrať súbory", + "Are you sure you want to upload the following files?": "Ste si istí, že chcete nahrať nasledujúce súbory?", + "Encrypted room": "Šifrovaná miestnosť", + "Unencrypted room": "Nešifrovaná miestnosť", + "Hangup": "Zavesiť", + "Voice call": "Audio hovor", + "Video call": "Video hovor", + "Upload file": "Nahrať súbor", + "Show Text Formatting Toolbar": "Zobraziť lištu formátovania textu", + "You do not have permission to post to this room": "Nemáte udelené právo posielať do tejto miestnosti", + "Turn Markdown on": "Povoliť Markdown", + "Turn Markdown off": "Zakázať Markdown", + "Hide Text Formatting Toolbar": "Skryť lištu formátovania textu", + "Server error": "Chyba servera", + "Server unavailable, overloaded, or something else went wrong.": "Server je nedostupný, preťažený, alebo sa pokazilo niečo iné.", + "Command error": "Chyba príkazu", + "bold": "tučné", + "italic": "kurzíva", + "strike": "preškrtnutie", + "underline": "podčiarknutie", + "code": "kód", + "quote": "citácia", + "bullet": "odrážky", + "numbullet": "číslované odrážky", + "Markdown is disabled": "Markdown je zakázaný", + "Markdown is enabled": "Markdown je povolený", + "Unpin Message": "Zrušiť pripnutie správy", + "Jump to message": "Preskočiť na správu", + "No pinned messages.": "Žiadne pripnuté správy.", + "Loading...": "Načítanie...", + "Pinned Messages": "Pripnuté správy", + "Online": "Pripojený", + "Idle": "Nečinný", + "Offline": "Nedostupný", + "Unknown": "Neznámy", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s videl %(dateTime)s", + "Unnamed room": "Nepomenovaná miestnosť", + "World readable": "Viditeľné pre každého", + "Guests can join": "Môžu vstúpiť aj hostia", + "No rooms to show": "Žiadne miestnosti na zobrazenie", + "Failed to set avatar.": "Nepodarilo sa nastaviť obrázok.", + "Save": "Uložiť", + "(~%(count)s results)": { + "other": "(~%(count)s výsledkov)", + "one": "(~%(count)s výsledok)" + }, + "Join Room": "Vstúpiť do miestnosti", + "Upload avatar": "Nahrať obrázok", + "Remove avatar": "Odstrániť obrázok", + "Settings": "Nastavenia", + "Forget room": "Zabudnúť miestnosť", + "Search": "Hľadať", + "Show panel": "Zobraziť panel", + "Drop here to favourite": "Pretiahnutím sem označíte ako obľúbené", + "Drop here to tag direct chat": "Pretiahnutím sem označíte ako priamu konverzáciu", + "Drop here to restore": "Pretiahnutím sem obnovíte z pozadia", + "Drop here to demote": "Pretiahnutím sem presuniete do pozadia", + "Drop here to tag %(section)s": "Pretiahnutím sem pridáte značku %(section)s", + "Press to start a chat with someone": "Stlačením tlačidla otvoríte diskusiu s kýmkoľvek", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Zatiaľ ste nevstúpili do žiadnej miestnosti! Stlačením tlačidla môžete vytvoriť novú miestnosť alebo si po stlačení tlačidla môžete prezrieť adresár miestností", + "Community Invites": "Pozvánky do komunity", + "Invites": "Pozvánky", + "Favourites": "Obľúbené", + "People": "Ľudia", + "Rooms": "Miestnosti", + "Low priority": "Nízka priorita", + "Historical": "Historické", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Nie je možné si byť istý že toto pozvanie bola odoslaná na emailovú adresu priradenú k vašemu účtu.", + "This invitation was sent to an email address which is not associated with this account:": "Toto pozvanie bolo odoslané na emailovú adresu, ktorá nie je priradená k tomuto účtu:", + "You may wish to login with a different account, or add this email to this account.": "Môžete sa prihlásiť k inému účtu, alebo pridať emailovú adresu do práve prihláseného účtu.", + "You have been invited to join this room by %(inviterName)s": "Používateľ %(inviterName)s vás pozval vstúpiť do tejto miestnosti", + "Would you like to accept or decline this invitation?": "Chcete prijať alebo odmietnuť toto pozvanie?", + "Reason: %(reasonText)s": "Dôvod: %(reasonText)s", + "Rejoin": "Vstúpiť znovu", + "You have been kicked from %(roomName)s by %(userName)s.": "Používateľ %(userName)s vás vykázal z miestnosti %(roomName)s.", + "You have been kicked from this room by %(userName)s.": "Používateľ %(userName)s vás vykázal z tejto miestnosti.", + "You have been banned from %(roomName)s by %(userName)s.": "Používateľ %(userName)s vám zakázal vstúpiť do miestnosti %(roomName)s.", + "You have been banned from this room by %(userName)s.": "Používateľ %(userName)s vám zakázal vstúpiť do tejto miestnosti.", + "This room": "Táto miestnosť", + "%(roomName)s does not exist.": "%(roomName)s neexistuje.", + "%(roomName)s is not accessible at this time.": "%(roomName)s nie je momentálne prístupná.", + "You are trying to access %(roomName)s.": "Pristupujete k miestnosti %(roomName)s.", + "You are trying to access a room.": "Pristupujete k miestnosti.", + "Click here to join the discussion!": "Kliknutím sem vstúpite do diskusie!", + "This is a preview of this room. Room interactions have been disabled": "Toto je náhľad na miestnosť. Všetky akcie pre túto miestnosť sú zakázané", + "To change the room's avatar, you must be a": "Aby ste mohli meniť obrázok miestnosti, musíte byť", + "To change the room's name, you must be a": "Aby ste mohli meniť názov miestnosti, musíte byť", + "To change the room's main address, you must be a": "Aby ste mohli meniť hlavnú adresu miestnosti, musíte byť", + "To change the room's history visibility, you must be a": "Aby ste mohli meniť viditeľnosť histórie miestnosti, musíte byť", + "To change the permissions in the room, you must be a": "Aby ste mohli meniť oprávnenia v miestnosti, musíte byť", + "To change the topic, you must be a": "Aby ste mohli meniť tému, musíte byť", + "To modify widgets in the room, you must be a": "Aby ste v miestnosti mohli meniť widgety, musíte byť", + "Failed to unban": "Nepodarilo sa povoliť vstup", + "Banned by %(displayName)s": "Vstup zakázal %(displayName)s", + "Privacy warning": "Upozornenie súkromia", + "Changes to who can read history will only apply to future messages in this room": "Zmeny určujúce kto môže čítať históriu sa uplatnia len na budúce správy v tejto miestnosti", + "The visibility of existing history will be unchanged": "Viditeľnosť existujúcej histórie ostane bez zmeny", + "unknown error code": "neznámy kód chyby", + "Failed to forget room %(errCode)s": "Nepodarilo sa zabudnúť miestnosť %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "E2E šifrovanie je v štádiu beta a nemusí byť úplne spoľahlivé", + "You should not yet trust it to secure data": "Nemali by ste zatiaľ spoliehať, že vám toto šifrovanie dokáže zabezpečiť vaše údaje", + "Devices will not yet be able to decrypt history from before they joined the room": "Zariadenia zatiaľ nedokážu dešifrovať správy poslané skôr, než ste na nich vstúpili do miestnosti", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Ak v miestnosti povolíte šifrovanie, šifrovanie nie je viac možné zakázať (aspoň zatiaľ nie)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Šifrované správy nebudú vôbec zobrazené v klientoch, ktorí zatiaľ nepodporujú šifrovanie", + "Never send encrypted messages to unverified devices in this room from this device": "Z tohoto zariadenia nikdy v tejto miestnosti neposielať šifrované správy na neoverené zariadenia", + "Enable encryption": "Povoliť šifrovanie", + "(warning: cannot be disabled again!)": "(Pozor: Nie je viac možné zakázať!)", + "Encryption is enabled in this room": "V tejto miestnosti je povolené šifrovanie", + "Encryption is not enabled in this room": "V tejto miestnosti nie je povolené šifrovanie", + "Privileged Users": "Poverení používatelia", + "No users have specific privileges in this room": "Žiadny používatelia nemajú v tejto miestnosti pridelené konkrétne poverenia", + "Banned users": "Používatelia, ktorým bol zakázaný vstup", + "This room is not accessible by remote Matrix servers": "Táto miestnosť nie je prístupná zo vzdialených Matrix serverov", + "Leave room": "Opustiť miestnosť", + "Favourite": "Obľúbená", + "Tagged as: ": "Označená ako: ", + "To link to a room it must have an address.": "Ak chcete vytvoriť odkaz do miestnosti, musíte najprv nastaviť jej adresu.", + "Guests cannot join this room even if explicitly invited.": "Hostia nemôžu vstúpiť do tejto miestnosti ani ak ich priamo pozvete.", + "Click here to fix": "Kliknutím sem to opravíte", + "Who can access this room?": "Kto môže vstúpiť do tejto miestnosti?", + "Only people who have been invited": "Len pozvaní ľudia", + "Anyone who knows the room's link, apart from guests": "Ktokoľvek, kto pozná odkaz do miestnosti (okrem hostí)", + "Anyone who knows the room's link, including guests": "Ktokoľvek, kto pozná odkaz do miestnosti (vrátane hostí)", + "Publish this room to the public in %(domain)s's room directory?": "Uverejniť túto miestnosť v adresári miestností na serveri %(domain)s?", + "Who can read history?": "Kto môže čítať históriu?", + "Anyone": "Ktokoľvek", + "Members only (since the point in time of selecting this option)": "Len členovia (odkedy je aktívna táto voľba)", + "Members only (since they were invited)": "Len členovia (odkedy boli pozvaní)", + "Members only (since they joined)": "Len členovia (odkedy vstúpili)", + "Room Colour": "Farba miestnosti", + "Permissions": "Oprávnenia", + "The default role for new room members is": "Predvolený status pre nových členov je", + "To send messages, you must be a": "Aby ste mohli posielať správy, musíte byť", + "To invite users into the room, you must be a": "Aby ste mohli pozývať používateľov do miestnosti, musíte byť", + "To configure the room, you must be a": "Aby ste mohli nastavovať miestnosť, musíte byť", + "To kick users, you must be a": "Aby ste mohli vykazovať používateľov, musíte byť", + "To ban users, you must be a": "Aby ste používateľom mohli zakazovať vstup, musíte byť", + "To remove other users' messages, you must be a": "Aby ste mohli odstraňovať správy, ktoré poslali iní používatelia, musíte byť", + "To send events of type , you must be a": "Aby ste mohli posielať udalosti typu , musíte byť", + "Advanced": "Pokročilé", + "This room's internal ID is": "Interné ID tejto miestnosti je", + "Add a topic": "Pridať tému", + "Cancel": "Zrušiť", + "Scroll to unread messages": "Posunúť na neprečítané správy", + "Jump to first unread message.": "Preskočiť na prvú neprečítanú správu.", + "Close": "Zatvoriť", + "Invalid alias format": "Nesprávny formát aliasu", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' nie je platný formát pre alias", + "Invalid address format": "Nesprávny formát adresy", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' nie je platný formát adresy", + "not specified": "nezadané", + "not set": "nenastavené", + "Remote addresses for this room:": "Vzdialené adresy do tejto miestnosti:", + "The main address for this room is": "Hlavná adresa tejto miestnosti je", + "Local addresses for this room:": "Lokálne adresy do tejto miestnosti:", + "This room has no local addresses": "Pre túto miestnosť nie sú žiadne lokálne adresy", + "New address (e.g. #foo:%(localDomain)s)": "Nová adresa (napr. #foo:%(localDomain)s)", + "Invalid community ID": "Nesprávne ID komunity", + "'%(groupId)s' is not a valid community ID": "'%(groupId)s' nie je platným ID komunity", + "New community ID (e.g. +foo:%(localDomain)s)": "Nové ID komunity (napr. +foo:%(localDomain)s)", + "You have disabled URL previews by default.": "Predvolene máte zakázané náhľady URL adries.", + "You have enabled URL previews by default.": "Predvolene máte povolené náhľady URL adries.", + "URL Previews": "Náhľady URL adries", + "Error decrypting audio": "Chyba pri dešifrovaní zvuku", + "Error decrypting attachment": "Chyba pri dešifrovaní prílohy", + "Decrypt %(text)s": "Dešifrovať %(text)s", + "Download %(text)s": "Stiahnuť %(text)s", + "Invalid file%(extra)s": "Neplatný súbor%(extra)s", + "Error decrypting image": "Chyba pri dešifrovaní obrázka", + "Error decrypting video": "Chyba pri dešifrovaní videa", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s zmenil obrázok miestnosti %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odstránil obrázok miestnosti.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s zmenil obrázok miestnosti ", + "Copied!": "Skopírované!", + "Failed to copy": "Nepodarilo sa skopírovať", + "Add an Integration": "Pridať integráciu", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Budete presmerovaní na stránku tretej strany, aby ste mohli overiť svoj účet na použitie s %(integrationsUrl)s. Chcete pokračovať?", + "Removed or unknown message type": "Odstránený alebo neznámy typ správy", + "Message removed by %(userId)s": "Správu odstránil %(userId)s", + "Message removed": "správa odstránená", + "Robot check is currently unavailable on desktop - please use a web browser": "Overenie, že nieste robot nie je možné cez aplikáciu na pracovnej ploche - prosím prejdite do prehliadača webu", + "This Home Server would like to make sure you are not a robot": "Tento domovský server by sa rád uistil, že nieste robot", + "Sign in with CAS": "Prihlásiť sa s použitím CAS", + "Custom Server Options": "Vlastné možnosti servera", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Vlastné nastavenia servera môžete použiť na pripojenie k iným serverom Matrix a to zadaním URL adresy domovského servera.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Umožní vám to použiť túto aplikáciu s už existujúcim Matrix účtom na akomkoľvek domovskom serveri.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Môžete tiež zadať vlastnú adresu servera totožností, čo však za štandardných okolností znemožní interakcie medzi používateľmi založené emailovou adresou.", + "Dismiss": "Zamietnuť", + "To continue, please enter your password.": "Aby ste mohli pokračovať, prosím zadajte svoje heslo.", + "Password:": "Heslo:", + "An email has been sent to %(emailAddress)s": "Na adresu %(emailAddress)s bola odoslaná správa", + "Please check your email to continue registration.": "Prosím, skontrolujte si emaily, aby ste mohli pokračovať v registrácii.", + "Token incorrect": "Neplatný token", + "A text message has been sent to %(msisdn)s": "Na číslo %(msisdn)s bola odoslaná textová správa", + "Please enter the code it contains:": "Prosím, zadajte kód z tejto správy:", + "Start authentication": "Spustiť overenie", + "powered by Matrix": "poháňa Matrix", + "User name": "Meno používateľa", + "Mobile phone number": "Číslo mobilného telefónu", + "Forgot your password?": "Zabudli ste heslo?", + "%(serverName)s Matrix ID": "Matrix ID na serveri %(serverName)s", + "Sign in with": "Na prihlásenie sa použije", + "Email address": "Emailová adresa", + "Sign in": "Prihlásiť sa", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ak nezadáte vašu emailovú adresu, nebudete si môcť obnoviť heslo. Ste si istí?", + "Email address (optional)": "Emailová adresa (nepovinné)", + "You are registering with %(SelectedTeamName)s": "Registrujete sa s %(SelectedTeamName)s", + "Mobile phone number (optional)": "Číslo mobilného telefónu (nepovinné)", + "Register": "Zaregistrovať", + "Default server": "Predvolený server", + "Custom server": "Vlastný server", + "Home server URL": "Adresa domovského servera", + "Identity server URL": "Adresa servera totožností", + "What does this mean?": "Čo je toto?", + "Remove from community": "Odstrániť z komunity", + "Disinvite this user from community?": "Zrušiť pozvanie tohoto používateľa z komunity?", + "Remove this user from community?": "Odstrániť tohoto používateľa z komunity?", + "Failed to withdraw invitation": "Nepodarilo sa stiahnuť pozvanie", + "Failed to remove user from community": "Nepodarilo sa odstrániť používateľa z komunity", + "Filter community members": "Filtrovať členov komunity", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Ste si istí, že chcete odstrániť miestnosť '%(roomName)s' z komunity %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Keď odstránite miestnosť z komunity, odstráni sa aj odkaz do miestnosti zo stránky komunity.", + "Remove": "Odstrániť", + "Failed to remove room from community": "Nepodarilo sa odstrániť miestnosť z komunity", + "Failed to remove '%(roomName)s' from %(groupId)s": "Nepodarilo sa odstrániť miestnosť '%(roomName)s' z komunity %(groupId)s", + "Something went wrong!": "Niečo sa pokazilo!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Nie je možné aktualizovať viditeľnosť miestnosti '%(roomName)s' v komunite %(groupId)s.", + "Visibility in Room List": "Viditeľnosť v zozname miestností", + "Visible to everyone": "Viditeľná pre každého", + "Only visible to community members": "Viditeľná len pre členov komunity", + "Filter community rooms": "Filtrovať miestnosti v komunite", + "Unknown Address": "Neznáma adresa", + "NOTE: Apps are not end-to-end encrypted": "POZOR: Aplikácie nie sú šifrované", + "Do you want to load widget from URL:": "Chcete načítať widget z URL adresy:", + "Allow": "Povoliť", + "Delete Widget": "Vymazať widget", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Týmto vymažete widget pre všetkých používateľov v tejto miestnosti. Ste si istí, že chcete vymazať tento widget?", + "Delete widget": "Vymazať widget", + "Revoke widget access": "Odmietnuť prístup k widgetu", + "Edit": "Upraviť", + "Create new room": "Vytvoriť novú miestnosť", + "Unblacklist": "Odstrániť z čiernej listiny", + "Blacklist": "Pridať na čiernu listinu", + "Unverify": "Zrušiť overenie", + "Verify...": "Overiť...", + "No results": "Žiadne výsledky", + "Home": "Domov", + "Integrations Error": "Chyba integrácií", + "Could not connect to the integration server": "Nie je možné sa pripojiť k integračnému serveru", + "Manage Integrations": "Spravovať integrácie", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s%(count)s krát vstúpili", + "one": "%(severalUsers)svstúpili" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s%(count)s krát vstúpil", + "one": "%(oneUser)svstúpil" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s%(count)s krát opustili", + "one": "%(severalUsers)sopustili" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s%(count)s krát opustil", + "one": "%(oneUser)sopustil" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s%(count)s krát vstúpili a opustili", + "one": "%(severalUsers)svstúpili a opustili" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s%(count)s krát vstúpil a opustil", + "one": "%(oneUser)svstúpil a opustil" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s%(count)s krát opustili a znovu vstúpili", + "one": "%(severalUsers)sopustili a znovu vstúpili" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s%(count)s krát opustil a znovu vstúpil", + "one": "%(oneUser)sopustil a znovu vstúpil" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s%(count)s krát odmietli pozvanie", + "one": "%(severalUsers)sodmietly pozvanie" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s%(count)s krát odmietol pozvanie", + "one": "%(oneUser)sodmietol pozvanie" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)smali %(count)s krát stiahnuté pozvanie", + "one": "%(severalUsers)smali stiahnuté pozvanie" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)smal %(count)s krát stiahnuté pozvanie", + "one": "%(oneUser)smal stiahnuté pozvanie" + }, + "were invited %(count)s times": { + "other": "boli %(count)s krát pozvaní", + "one": "boli pozvaní" + }, + "was invited %(count)s times": { + "other": "bol %(count)s krát pozvaný", + "one": "bol pozvaný" + }, + "were banned %(count)s times": { + "other": "mali %(count)s krát zakázaný vstup", + "one": "mali zakázaný vstup" + }, + "was banned %(count)s times": { + "other": "mal %(count)s krát zakázaný vstup", + "one": "mal zakázaný vstup" + }, + "were unbanned %(count)s times": { + "other": "mali %(count)s krát povolený vstup", + "one": "mali povolený vstup" + }, + "was unbanned %(count)s times": { + "other": "mal %(count)s krát povolený vstup", + "one": "mal povolený vstup" + }, + "were kicked %(count)s times": { + "other": "boli %(count)s krát vykázaní", + "one": "boli vykázaní" + }, + "was kicked %(count)s times": { + "other": "bol %(count)s krát vykázaný", + "one": "bol vykázaný" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)ssi %(count)s krát zmenili meno", + "one": "%(severalUsers)ssi zmenili meno" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)ssi %(count)s krát zmenil meno", + "one": "%(oneUser)ssi zmenil meno" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)ssi %(count)s krát zmenili obrázok v profile", + "one": "%(severalUsers)ssi zmenili obrázok v profile" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)ssi %(count)s krát zmenil obrázok v profile", + "one": "%(oneUser)ssi zmenil obrázok v profile" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s a %(count)s ďalší", + "one": "%(items)s a jeden ďalší" + }, + "%(items)s and %(lastItem)s": "%(items)s a tiež %(lastItem)s", + "Custom level": "Vlastná úroveň", + "Room directory": "Adresár miestností", + "Start chat": "Začať konverzáciu", + "And %(count)s more...": { + "other": "A %(count)s ďalších..." + }, + "ex. @bob:example.com": "pr. @jan:priklad.sk", + "Add User": "Pridať používateľa", + "Matrix ID": "Matrix ID", + "Matrix Room ID": "ID Matrix miestnosti", + "email address": "emailová adresa", + "Try using one of the following valid address types: %(validTypesList)s.": "Skúste použiť niektorý z nasledujúcich správnych typov adresy: %(validTypesList)s.", + "You have entered an invalid address.": "Zadali ste neplatnú adresu.", + "Create a new chat or reuse an existing one": "Vytvorte novú konverzáciu alebo sa pripojte už k existujúcej", + "Start new chat": "Začať novú konverzáciu", + "You already have existing direct chats with this user:": "S týmto používateľom už máte spoločné priame konverzácie:", + "Start chatting": "Začať konverzovať", + "Click on the button below to start chatting!": "Konverzovať môžete začať kliknutím na tlačidlo nižšie!", + "Start Chatting": "Začať konverzovať", + "Confirm Removal": "Potvrdiť odstránenie", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Ste si istí, že chcete odstrániť (vymazať) túto udalosť? Všimnite si: ak vymažete zmenu názvu miestnosti alebo zmenu témy, môžete tak vrátiť zodpovedajúcu zmenu.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ID komunity môže obsahovať len znaky a-z, 0-9, alebo '=_-./'", + "Something went wrong whilst creating your community": "Niečo sa pokazilo počas vytvárania požadovanej komunity", + "Create Community": "Vytvoriť komunitu", + "Community Name": "Názov komunity", + "Example": "Príklad", + "Community ID": "ID komunity", + "example": "príklad", + "Create": "Vytvoriť", + "Create Room": "Vytvoriť miestnosť", + "Room name (optional)": "Názov miestnosti (nepovinné)", + "Advanced options": "Pokročilé voľby", + "Block users on other matrix homeservers from joining this room": "Blokovať vstup do tejto miestnosti používateľom z ostatných domovských serverov Matrix", + "This setting cannot be changed later!": "Toto nastavenie už viac nie je možné meniť!", + "Unknown error": "Neznáma chyba", + "Incorrect password": "Nesprávne heslo", + "Deactivate Account": "Deaktivovať účet", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Ak chcete overiť, či toto zariadenie je skutočne dôverihodné, kontaktujte jeho vlastníka iným spôsobom (napr. osobne alebo cez telefón) a opýtajte sa ho, či kľúč, ktorý má pre toto zariadenie zobrazený v nastaveniach sa zhoduje s kľúčom zobrazeným nižšie:", + "Device name": "Názov zariadenia", + "Device key": "Kľúč zariadenia", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ak sa kľúče zhodujú, stlačte tlačidlo Overiť nižšie. Ak sa nezhodujú, niekto ďalší odpočúva toto zariadenie a v takomto prípade by ste asi mali namiesto toho stlačiť tlačidlo Pridať na čiernu listinu.", + "In future this verification process will be more sophisticated.": "V budúcnosti plánujeme tento proces overovania zariadení zjednodušiť.", + "Verify device": "Overiť zariadenie", + "I verify that the keys match": "Overil som, kľúče sa zhodujú", + "An error has occurred.": "Vyskytla sa chyba.", + "OK": "OK", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Pridali ste nové zariadenie nazvané '%(displayName)s', ktoré žiada o šifrovacie kľúče.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Vaše neoverené zariadenie nazvané '%(displayName)s' žiada o šifrovacie kľúče.", + "Start verification": "Spustiť overenie", + "Share without verifying": "Zdieľať bez overenia", + "Ignore request": "Ignorovať žiadosť", + "Loading device info...": "Načítanie informácií o zariadení...", + "Encryption key request": "Žiadosť o šifrovacie kľúče", + "Unable to restore session": "Nie je možné obnoviť reláciu", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ak ste sa v minulosti prihlásili s novšou verziou programu Riot, vaša relácia nemusí byť kompatibilná s touto verziou. Zatvorte prosím toto okno a vráťte sa cez najnovšiu verziu Riot.", + "Invalid Email Address": "Nesprávna emailová adresa", + "This doesn't appear to be a valid email address": "Zdá sa, že toto nie je platná emailová adresa", + "Verification Pending": "Nedokončené overenie", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Prosím, skontrolujte si email a kliknite na odkaz v správe, ktorú sme vám poslali. Keď budete mať toto za sebou, kliknite na tlačidlo Pokračovať.", + "Unable to add email address": "Nie je možné pridať emailovú adresu", + "Unable to verify email address.": "Nie je možné overiť emailovú adresu.", + "This will allow you to reset your password and receive notifications.": "Toto vám umožní obnoviť si heslo a prijímať oznámenia emailom.", + "Skip": "Preskočiť", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Používateľské meno môže obsahovať len písmená, číslice, bodky, pomlčky a podčiarkovníky.", + "Username not available": "Používateľské meno nie je k dispozícii", + "Username invalid: %(errMessage)s": "Neplatné používateľské meno: %(errMessage)s", + "An error occurred: %(error_string)s": "Vyskytla sa chyba: %(error_string)s", + "Username available": "Používateľské meno je k dispozícii", + "To get started, please pick a username!": "Začnite tým, že si zvolíte používateľské meno!", + "This will be your account name on the homeserver, or you can pick a different server.": "Toto bude názov vašeho účtu na domovskom serveri , alebo si môžete zvoliť iný server.", + "If you already have a Matrix account you can log in instead.": "Ak už máte Matrix účet, môžete sa hneď Prihlásiť.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Momentálne sa ku všetkym neovereným zariadeniam správate ako by boli na čiernej listine; aby ste na tieto zariadenia mohli posielať správy, mali by ste ich overiť.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Odporúčame vám prejsť procesom overenia pre všetky tieto zariadenia aby ste si potvrdili, že skutočne patria ich pravým vlastníkom, ak si to však želáte, môžete tiež znovu poslať správu bez overovania.", + "Room contains unknown devices": "V miestnosti sú neznáme zariadenia", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "V miestnosti \"%(RoomName)s\" sa našli zariadenia, s ktorými ste doposiaľ nikdy nekomunikovali.", + "Unknown devices": "Neznáme zariadenia", + "Send anyway": "Napriek tomu odoslať", + "Private Chat": "Súkromná konverzácia", + "Public Chat": "Verejná konverzácia", + "Custom": "Vlastné", + "Alias (optional)": "Alias (nepovinné)", + "Name": "Názov", + "Topic": "Téma", + "Make this room private": "Urobiť z tejto miestnosti súkromnú miestnosť", + "Share message history with new users": "Zdieľať históriu s novými používateľmi", + "Encrypt room": "Zašifrovať miestnosť", + "You must register to use this functionality": "Aby ste mohli použiť túto vlastnosť, musíte byť zaregistrovaný", + "You must join the room to see its files": "Aby ste si mohli zobraziť zoznam súborov, musíte vstúpiť do miestnosti", + "There are no visible files in this room": "V tejto miestnosti nie sú žiadne viditeľné súbory", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML kód hlavnej stránky komunity

\n

\n Dlhý popis môžete použiť na predstavenie komunity novým členom, alebo uvedenie \n dôležitých odkazov\n

\n

\n Môžete tiež používať HTML značku 'img'\n

\n", + "Add rooms to the community summary": "Pridať miestnosti do prehľadu komunity", + "Which rooms would you like to add to this summary?": "Ktoré miestnosti si želáte pridať do tohoto prehľadu?", + "Add to summary": "Pridať do prehľadu", + "Failed to add the following rooms to the summary of %(groupId)s:": "Do prehľadu komunity %(groupId)s sa nepodarilo pridať nasledujúce miestnosti:", + "Add a Room": "Pridať miestnosť", + "Failed to remove the room from the summary of %(groupId)s": "Z prehľadu komunity %(groupId)s sa nepodarilo odstrániť miestnosť", + "The room '%(roomName)s' could not be removed from the summary.": "Nie je možné odstrániť miestnosť '%(roomName)s' z prehľadu.", + "Add users to the community summary": "Pridať používateľov do prehľadu komunity", + "Who would you like to add to this summary?": "Koho si želáte pridať do tohoto prehľadu?", + "Failed to add the following users to the summary of %(groupId)s:": "Do prehľadu komunity %(groupId)s sa nepodarilo pridať nasledujúcich používateľov:", + "Add a User": "Pridať používateľa", + "Failed to remove a user from the summary of %(groupId)s": "Z prehľadu komunity %(groupId)s sa nepodarilo odstrániť používateľa", + "The user '%(displayName)s' could not be removed from the summary.": "Nie je možné odstrániť používateľa '%(displayName)s' z prehľadu.", + "Failed to upload image": "Nepodarilo sa nahrať obrázok", + "Failed to update community": "Nepodarilo sa aktualizovať komunitu", + "Unable to accept invite": "Nie je možné prijať pozvanie", + "Unable to reject invite": "Nie je možné odmietnuť pozvanie", + "Leave Community": "Opustiť komunitu", + "Leave %(groupName)s?": "Opustiť komunitu %(groupName)s?", + "Leave": "Opustiť", + "Community Settings": "Nastavenia komunity", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Tieto miestnosti sú zobrazené všetkým členom na stránke komunity. Členovia komunity môžu vstúpiť do miestnosti kliknutím.", + "Add rooms to this community": "Pridať miestnosti do tejto komunity", + "Featured Rooms:": "Hlavné miestnosti:", + "Featured Users:": "Významní používatelia:", + "%(inviter)s has invited you to join this community": "%(inviter)s vás pozval vstúpiť do tejto komunity", + "You are an administrator of this community": "Ste správcom tejto komunity", + "You are a member of this community": "Ste členom tejto komunity", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Vaša komunita nemá vyplnený dlhý popis, ktorý tvorí stránku komunity viditeľnú jej členom.
Kliknutím sem otvoríte nastavenia, kde ho môžete vyplniť!", + "Long Description (HTML)": "Dlhý popis (HTML)", + "Description": "Popis", + "Community %(groupId)s not found": "Komunita %(groupId)s nebola nájdená", + "This Home server does not support communities": "Tento domovský server nepodporuje komunity", + "Failed to load %(groupId)s": "Nepodarilo sa načítať komunitu %(groupId)s", + "Reject invitation": "Odmietnuť pozvanie", + "Are you sure you want to reject the invitation?": "Ste si istí, že chcete odmietnuť toto pozvanie?", + "Failed to reject invitation": "Nepodarilo sa odmietnuť pozvanie", + "Are you sure you want to leave the room '%(roomName)s'?": "Ste si istí, že chcete opustiť miestnosť '%(roomName)s'?", + "Failed to leave room": "Nepodarilo sa opustiť miestnosť", + "Signed Out": "Ste odhlásení", + "For security, this session has been signed out. Please sign in again.": "Kôli bezpečnosti ste boli odhlásení z tejto relácie. Prosím, prihláste sa znovu.", + "Logout": "Odhlásiť sa", + "Your Communities": "Vaše komunity", + "You're not currently a member of any communities.": "V súčasnosti nie ste členom žiadnej komunity.", + "Error whilst fetching joined communities": "Pri získavaní vašich komunít sa vyskytla chyba", + "Create a new community": "Vytvoriť novú komunitu", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Vytvorte si komunitu s cieľom zoskupiť miestnosti a používateľov! Zostavte si vlastnú domovskú stránku a vymedzte tak svoj priestor vo svete Matrix.", + "You have no visible notifications": "Nie sú k dispozícii žiadne oznámenia", + "Scroll to bottom of page": "Posunúť na spodok stránky", + "Connectivity to the server has been lost.": "Spojenie so serverom bolo prerušené.", + "Sent messages will be stored until your connection has returned.": "Odoslané správy ostanú uložené, kým sa spojenie nenadviaže znovu.", + "%(count)s new messages": { + "other": "%(count)s nových správ", + "one": "%(count)s nová správa" + }, + "Active call": "Aktívny hovor", + "You seem to be uploading files, are you sure you want to quit?": "Zdá sa, že práve nahrávate súbory, ste si istí, že chcete skončiť?", + "You seem to be in a call, are you sure you want to quit?": "Zdá sa, že máte prebiehajúci hovor, ste si istí, že chcete skončiť?", + "%(count)s of your messages have not been sent.": { + "other": "Niektoré vaše správy ešte neboli odoslané.", + "one": "Vaša správa nebola odoslaná." + }, + "Message not sent due to unknown devices being present": "Neodoslaná správa kvôli nájdeným neznámym zariadeniam", + "Failed to upload file": "Nepodarilo sa nahrať súbor", + "Server may be unavailable, overloaded, or the file too big": "Server môže byť nedostupný, preťažený, alebo je súbor príliš veľký", + "Search failed": "Hľadanie zlyhalo", + "Server may be unavailable, overloaded, or search timed out :(": "Server môže byť nedostupný, preťažený, alebo vypršal časový limit hľadania :(", + "No more results": "Žiadne ďalšie výsledky", + "Unknown room %(roomId)s": "Neznáma miestnosť %(roomId)s", + "Room": "Miestnosť", + "Failed to save settings": "Nepodarilo sa uložiť nastavenia", + "Failed to reject invite": "Nepodarilo sa odmietnuť pozvanie", + "Fill screen": "Vyplniť obrazovku", + "Click to unmute video": "Kliknutím zrušíte stlmenie videa", + "Click to mute video": "Kliknutím stlmíte video", + "Click to unmute audio": "Kliknutím zrušíte stlmenie zvuku", + "Click to mute audio": "Kliknutím stlmíte zvuk", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Pri pokuse načítať konkrétny bod v histórii tejto miestnosti sa vyskytla chyba, nemáte oprávnenie na zobrazenie zodpovedajúcej správy.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Pri pokuse načítať konkrétny bod v histórii tejto miestnosti sa vyskytla chyba, Správu nie je možné nájsť.", + "Failed to load timeline position": "Nepodarilo sa načítať pozíciu na časovej osi", + "Uploading %(filename)s and %(count)s others": { + "other": "Nahrávanie %(filename)s a %(count)s ďalších súborov", + "zero": "Nahrávanie %(filename)s", + "one": "Nahrávanie %(filename)s a %(count)s ďalší súbor" + }, + "Autoplay GIFs and videos": "Automaticky prehrávať animované GIF obrázky a videá", + "Hide read receipts": "Skryť potvrdenia o prečítaní", + "Don't send typing notifications": "Neposielať oznámenia keď píšete", + "Always show message timestamps": "Vždy zobrazovať časovú značku správ", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Pri zobrazovaní časových značiek používať 12 hodinový formát (napr. 2:30pm)", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Skryť správy o vstupe a opustení miestnosti (netýka sa pozvaní/vykázaní/zákazov vstupu)", + "Use compact timeline layout": "Použiť kompaktné rozloženie časovej osy", + "Hide removed messages": "Skryť odstránené správy", + "Enable automatic language detection for syntax highlighting": "Povoliť automatickú detegciu jazyka pre zvýrazňovanie syntaxe", + "Automatically replace plain text Emoji": "Automaticky nahrádzať textové Emoji", + "Disable Emoji suggestions while typing": "Zakázať návrhy Emoji počas písania", + "Hide avatars in user and room mentions": "Skryť profilové obrázky pri zmienkach miestností a používateľov", + "Disable big emoji in chat": "Zakázať veľké Emoji v konverzácii", + "Mirror local video feed": "Zrkadliť lokálne video", + "Disable Peer-to-Peer for 1:1 calls": "Zakázať P2P počas priamych volaní", + "Never send encrypted messages to unverified devices from this device": "Z tohoto zariadenia nikdy neposielať šifrované správy neovereným zariadeniam", + "Light theme": "Svetlá téma", + "Dark theme": "Tmavá téma", + "Can't load user settings": "Nie je možné načítať používateľské nastavenia", + "Server may be unavailable or overloaded": "Server môže byť nedostupný alebo preťažený", + "Sign out": "Odhlásiť sa", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "S cieľom posilniť bezpečnosť sa všetky E2E šifrovacie kľúče pri odhlásení odstránia z tohoto prehliadača. Ak chcete, aby ste mohli čítať históriu šifrovaných konverzácií aj po opätovnom prihlásení, prosím exportujte a bezpečne si uchovajte kľúče miestností.", + "Failed to change password. Is your password correct?": "Nepodarilo sa zmeniť heslo. Zadali ste správne heslo?", + "Success": "Úspech", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Úspešne ste si zmenili heslo. Na ostatných zariadeniach sa vám nebudú zobrazovať okamžité oznámenia, kým sa aj na nich opätovne neprihlásite", + "Remove Contact Information?": "Odstrániť kontaktné informácie?", + "Remove %(threePid)s?": "Odstrániť %(threePid)s?", + "Unable to remove contact information": "Nie je možné odstrániť kontaktné informácie", + "Refer a friend to Riot:": "Odporučte Riot známemu:", + "Interface Language": "Jazyk rozhrania", + "User Interface": "Používateľské rozhranie", + "Autocomplete Delay (ms):": "Oneskorenie automatického dokončovania (ms):", + "": "", + "Import E2E room keys": "Importovať E2E kľúče miestností", + "Cryptography": "Kryptografia", + "Device ID:": "ID zariadenia:", + "Device key:": "Kľúč zariadenia:", + "Ignored Users": "Ignorovaní používatelia", + "Analytics": "Analytické údaje", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot zbiera anonymné analytické údaje, čo nám umožňuje aplikáciu ďalej zlepšovať.", + "Labs": "Experimenty", + "These are experimental features that may break in unexpected ways": "Tieto funkcie sú experimentálne a môžu sa nečakane pokaziť", + "Use with caution": "Pri používaní buďte opatrní", + "Deactivate my account": "Deaktivovať môj účet", + "Clear Cache": "Vyprázdniť vyrovnávaciu pamäť", + "Clear Cache and Reload": "Vyprázdniť vyrovnávaciu pamäť a načítať znovu", + "Updates": "Aktualizácie", + "Check for update": "Skontrolovať dostupnosť aktualizácie", + "Reject all %(invitedRooms)s invites": "Odmietnuť všetky %(invitedRooms)s pozvania", + "Bulk Options": "Hromadné možnosti", + "Desktop specific": "Špecifické pre pracovnú plochu", + "Start automatically after system login": "Spustiť automaticky po prihlásení do systému", + "No media permissions": "Žiadne oprávnenia k médiám", + "You may need to manually permit Riot to access your microphone/webcam": "Mali by ste aplikácii Riot ručne udeliť právo pristupovať k mikrofónu a kamere", + "Missing Media Permissions, click here to request.": "Kliknutím sem vyžiadate chýbajúce oprávnenia na prístup k mediálnym zariadeniam.", + "No Microphones detected": "Neboli rozpoznané žiadne mikrofóny", + "No Webcams detected": "Neboli rozpoznané žiadne kamery", + "Default Device": "Predvolené zariadenie", + "Microphone": "Mikrofón", + "Camera": "Kamera", + "VoIP": "VoIP", + "Email": "Email", + "Add email address": "Pridať emailovú adresu", + "Notifications": "Oznámenia", + "Profile": "Profil", + "Display name": "Zobrazované meno", + "Account": "Účet", + "To return to your account in future you need to set a password": "Aby ste sa v budúcnosti mohli vrátiť k vašemu účtu mali by ste si teraz nastaviť heslo", + "Logged in as:": "Prihlásený ako:", + "Access Token:": "Prístupový token:", + "click to reveal": "Odkryjete kliknutím", + "Homeserver is": "Domovský server je", + "Identity Server is": "Server totožností je", + "matrix-react-sdk version:": "Verzia matrix-react-sdk:", + "riot-web version:": "Verzia riot-web:", + "olm version:": "Verzia olm:", + "Failed to send email": "Nepodarilo sa odoslať email", + "The email address linked to your account must be entered.": "Musíte zadať emailovú adresu prepojenú s vašim účtom.", + "A new password must be entered.": "Musíte zadať nové heslo.", + "New passwords must match each other.": "Obe nové heslá musia byť zhodné.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Zmena hesla momentálne obnoví šifrovacie kľúče na všetkých vašich zariadeniach, čo spôsobí, že história vašich šifrovaných konverzácií sa stane nečitateľná, jedine že si pred zmenou hesla exportujete kľúče miestností do súboru a po zmene kľúče importujete naspäť. V budúcnosti bude táto funkcia vylepšená.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Na adresu %(emailAddress)s bola odoslaná správa. Potom, čo prejdete na odkaz z tejto správy, kliknite nižšie.", + "I have verified my email address": "Overil som si emailovú adresu", + "Your password has been reset": "Vaše heslo bolo obnovené", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Boli ste odhlásení na všetkych zariadeniach a nebudete viac dostávať okamžité oznámenia. Oznámenia znovu povolíte tak, že sa opätovne prihlásite na každom zariadení", + "Return to login screen": "Vrátiť sa na prihlasovaciu obrazovku", + "To reset your password, enter the email address linked to your account": "Ak chcete obnoviť vaše heslo, zadajte emailovú adresu prepojenú s vašim účtom", + "New password": "Nové heslo", + "Confirm your new password": "Potvrďte vaše nové heslo", + "Send Reset Email": "Poslať obnovovací email", + "Create an account": "Vytvoriť účet", + "This Home Server does not support login using email address.": "Tento domovský server nepodporuje prihlasovanie sa emailom.", + "Incorrect username and/or password.": "Nesprávne meno používateľa a / alebo heslo.", + "Guest access is disabled on this Home Server.": "Na tomto domovskom serveri je zakázaný prístup pre hostí.", + "The phone number entered looks invalid": "Zdá sa, že zadané telefónne číslo je neplatné", + "Error: Problem communicating with the given homeserver.": "Chyba: Nie je možné komunikovať so zadaným domovským serverom.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "K domovskému serveru nie je možné pripojiť sa použitím protokolu HTTP keďže v adresnom riadku prehliadača máte HTTPS adresu. Použite protokol HTTPS alebo povolte nezabezpečené skripty.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Nie je možné pripojiť sa k domovskému serveru - skontrolujte prosím funkčnosť vašeho pripojenia na internet, uistite sa že certifikát domovského servera je dôverihodný, a že žiaden doplnok nainštalovaný v prehliadači nemôže blokovať požiadavky.", + "Failed to fetch avatar URL": "Nepodarilo sa získať URL adresu obrázka", + "Set a display name:": "Nastaviť zobrazované meno:", + "Upload an avatar:": "Nahrať obrázok:", + "This server does not support authentication with a phone number.": "Tento server nepodporuje overenie telefónnym číslom.", + "Missing password.": "Chýba heslo.", + "Passwords don't match.": "Heslá sa nezhodujú.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Heslo je veľmi krátke (minimálne %(MIN_PASSWORD_LENGTH)s znakov).", + "This doesn't look like a valid email address.": "Zdá sa, že toto nie je platná emailová adresa.", + "This doesn't look like a valid phone number.": "Zdá sa, že toto nie je platné telefónne číslo.", + "You need to enter a user name.": "Musíte zadať používateľské meno.", + "An unknown error occurred.": "Vyskytla sa neznáma chyba.", + "I already have an account": "Už mám účet", + "Displays action": "Zobrazí akciu", + "Bans user with given id": "Zakáže vstup používateľovi so zadaným ID", + "Unbans user with given id": "Povolí vstup používateľovi so zadaným ID", + "Define the power level of a user": "Určí úroveň sili používateľa", + "Deops user with given id": "Zruší stav moderátor používateľovi so zadaným ID", + "Invites user with given id to current room": "Pošle používateľovi so zadaným ID pozvanie do tejto miestnosti", + "Joins room with given alias": "Vstúpi do miestnosti so zadaným aliasom", + "Sets the room topic": "Nastaví tému miestnosti", + "Kicks user with given id": "Vykáže používateľa so zadaným ID", + "Changes your display nickname": "Zmení vaše zobrazované meno", + "Searches DuckDuckGo for results": "Vyhľadá výsledky na DuckDuckGo", + "Changes colour scheme of current room": "Zmení farebnú schému aktuálnej miestnosti", + "Verifies a user, device, and pubkey tuple": "Overí zadané údaje používateľa, zariadenie a verejný kľúč", + "Ignores a user, hiding their messages from you": "Ignoruje používateľa a skrije všetky jeho správy", + "Stops ignoring a user, showing their messages going forward": "Prestane ignorovať používateľa a začne zobrazovať jeho správy", + "Commands": "Príkazy", + "Results from DuckDuckGo": "Výsledky z DuckDuckGo", + "Emoji": "Emoji", + "Notify the whole room": "Oznamovať celú miestnosť", + "Room Notification": "Oznámenie miestnosti", + "Users": "Používatelia", + "unknown device": "neznáme zariadenie", + "NOT verified": "NE-overené", + "verified": "overené", + "Verification": "Overenie", + "Ed25519 fingerprint": "Odtlačok prsta Ed25519", + "User ID": "ID používateľa", + "Curve25519 identity key": "Kľúč totožnosti Curve25519", + "none": "žiadny", + "Claimed Ed25519 fingerprint key": "Údajne kľúč s odtlačkom prsta Ed25519", + "Algorithm": "Algoritmus", + "unencrypted": "nešifrované", + "Decryption error": "Chyba dešifrovania", + "Session ID": "ID relácie", + "End-to-end encryption information": "Informácie o šifrovaní E2E", + "Event information": "Informácie o udalosti", + "Sender device information": "Informácie o zariadení odosielateľa", + "Passphrases must match": "Heslá sa musia zhodovať", + "Passphrase must not be empty": "Heslo nesmie byť prázdne", + "Export room keys": "Exportovať kľúče miestností", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Tento proces vás prevedie exportom kľúčov určených na dešifrovanie správ, ktoré ste dostali v šifrovaných miestnostiach do lokálneho súboru. Tieto kľúče zo súboru môžete neskôr importovať do iného Matrix klienta, aby ste v ňom mohli dešifrovať vaše šifrované správy.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Tento súbor umožní komukoľvek, k to má ku nemu prístup dešifrovať všetky vami viditeľné šifrované správy, mali by ste teda byť opatrní a tento súbor si bezpečne uchovať. Aby bolo toto pre vás jednoduchšie, nižšie zadajte heslo, ktorým budú údaje v súbore zašifrované. Importovať údaje zo súboru bude možné len po zadaní tohoto istého hesla.", + "Enter passphrase": "Zadajte heslo", + "Confirm passphrase": "Potvrďte heslo", + "Export": "Exportovať", + "Import room keys": "Importovať kľúče miestností", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Tento proces vás prevedie importom šifrovacích kľúčov, ktoré ste si v minulosti exportovali v inom Matrix klientovi. Po úspešnom importe budete v tomto klientovi môcť dešifrovať všetky správy, ktoré ste mohli dešifrovať v spomínanom klientovi.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Exportovaný súbor je chránený heslom. Súbor môžete importovať len ak zadáte zodpovedajúce heslo.", + "File to import": "Importovať zo súboru", + "Import": "Importovať", + "Show these rooms to non-members on the community page and room list?": "Zobrazovať tieto miestnosti na domovskej stránke komunity a v zozname miestností aj pre nečlenov?", + "Sign in to get started": "Začnite prihlásením sa", + "Status.im theme": "Téma status.im", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Všimnite si: Práve sa prihlasujete na server %(hs)s, nie na server matrix.org.", + "Username on %(hs)s": "Meno používateľa na serveri %(hs)s", + "Restricted": "Obmedzené", + "Hide avatar changes": "Skryť zmeny obrázka v profile", + "Hide display name changes": "Skryť zmeny zobrazovaného mena", + "Enable inline URL previews by default": "Predvolene povoliť náhľady URL adries", + "Enable URL previews for this room (only affects you)": "Povoliť náhľady URL adries pre túto miestnosť (ovplyvňuje len vás)", + "Enable URL previews by default for participants in this room": "Predvolene povoliť náhľady URL adries pre členov tejto miestnosti", + "Custom of %(powerLevel)s": "Vlastná úroveň %(powerLevel)s", + "URL previews are enabled by default for participants in this room.": "Náhľady URL adries sú predvolene povolené pre členov tejto miestnosti.", + "URL previews are disabled by default for participants in this room.": "Náhľady URL adries sú predvolene zakázané pre členov tejto miestnosti.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Okrem vás v tejto miestnosti nie je nik iný! Želáte si Pozvať ďalších alebo Prestať upozorňovať na prázdnu miestnosť?", + "Call Failed": "Zlyhanie hovoru", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "V tejto miestnosti sú neznáme zariadenia: Ak budete pokračovať bez ich overenia, niekto získa možnosť odpočúvať váš hovor.", + "Review Devices": "Prezrieť zariadenia", + "Call Anyway": "Napriek tomu zavolať", + "Answer Anyway": "Napriek tomu prijať", + "Call": "Hovor", + "Answer": "Prijať", + "Send": "Odoslať", + "Delete %(count)s devices": { + "other": "Vymazať %(count)s zariadení", + "one": "Vymazať zariadenie" + }, + "Select devices": "Vybrať zariadenia", + "%(duration)ss": "%(duration)ss", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "Prítomný %(duration)s", + "Idle for %(duration)s": "Nečinný %(duration)s", + "Offline for %(duration)s": "Nedostupný %(duration)s", + "Unknown for %(duration)s": "Neznámy %(duration)s", + "Addresses": "Adresy", + "Something went wrong when trying to get your communities.": "Niečo sa pokazilo pri získavaní vašich komunít.", + "collapse": "zbaliť", + "expand": "rozbaliť", + "Old cryptography data detected": "Nájdené zastaralé kryptografické údaje", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Boli nájdené údaje zo staršej verzie Riot. Toto spôsobí, že E2E šifrovanie nebude v staršej verzii Riot fungovať. Zašifrované správy prijaté a odoslané v poslednom čase cez staršiu verziu Riot nemusia byť čitateľné v tejto verzii Riot. Môže to tiež spôsobiť, že šifrované konverzácie nebudú s touto verziou Riot čitateľné. Ak spozorujete niektoré s týchto problémov, odhláste sa a opätovne sa prihláste prosím. Históriu šifrovaných konverzácií zachováte tak, že si exportujete a znovu importujete kľúče miestností.", + "Warning": "Upozornenie", + "This homeserver doesn't offer any login flows which are supported by this client.": "Tento domovský server neponúka žiadny prihlasovací mechanizmus podporovaný vašim klientom.", + "Flair": "Príslušnosť ku komunitám", + "Showing flair for these communities:": "Zobrazuje sa príslušnosť k týmto komunitám:", + "This room is not showing flair for any communities": "V tejto miestnosti nie je zobrazená príslušnosť k žiadnym komunitám", + "Flair will appear if enabled in room settings": "Príslušnosť ku komunite sa zobrazí ak je to povolené v nastaveniach miestnosti", + "Flair will not appear": "Príslušnosť ku komunite nebude zobrazená", + "Display your community flair in rooms configured to show it.": "Zobrazovať vašu príslušnosť ku komunite v miestnostiach, ktoré sú nastavené na zobrazovanie tejto príslušnosti.", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Túto zmenu nebudete môcť vrátiť späť pretože znižujete vašu vlastnú úroveň moci. Ak ste jediný poverený používateľ v miestnosti, nebudete môcť znovu získať úroveň, akú máte teraz.", + "Send an encrypted reply…": "Odoslať šifrovanú odpoveď…", + "Send a reply (unencrypted)…": "Odoslať odpoveď (nešifrovanú)…", + "Send an encrypted message…": "Odoslať šifrovanú správu…", + "Send a message (unencrypted)…": "Odoslať správu (nešifrovanú)…", + "Replying": "Odpoveď", + "Minimize apps": "Minimalizovať aplikácie", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Znovu poslať všetky alebo zrušiť všetky teraz. Vybratím môžete tiež znovu odoslať alebo zrušiť jednotlivé správy.", + "one": "Znovu odoslať správu alebo zrušiť správu teraz." + }, + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Vaše súkromie je pre nás dôležité, preto nezhromažďujeme žiadne osobné údaje alebo údaje, na základe ktorých je možné vás identifikovať.", + "Learn more about how we use analytics.": "Zistite viac o tom, ako spracúvame analytické údaje.", + "The information being sent to us to help make Riot.im better includes:": "S cieľom vylepšovať aplikáciu Riot.im zbierame nasledujúce údaje:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ak sa na stránke vyskytujú identifikujúce údaje, akými sú napríklad názov miestnosti, ID používateľa, miestnosti alebo skupiny, tieto sú pred odoslaním na server odstránené.", + "The platform you're on": "Vami používaná platforma", + "The version of Riot.im": "Verzia Riot.im", + "Whether or not you're logged in (we don't record your user name)": "Stav vašeho prihlásenia - prihlásený / neprihlásený (nezaznamenávame vaše používateľské meno)", + "Your language of choice": "Váš uprednostňovaný jazyk", + "Which officially provided instance you are using, if any": "Cez ktorú oficiálne podporovanú inštanciu Riot.im ste pripojení (ak nehostujete Riot sami)", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Či pri písaní správ používate rozbalenú lištu formátovania textu", + "Your homeserver's URL": "URL adresa vami používaného domovského servera", + "Your identity server's URL": "URL adresa vami používaného servera totožností", + "This room is not public. You will not be able to rejoin without an invite.": "Toto nie je verejne dostupná miestnosť. Bez pozvánky nebudete do nej môcť vstúpiť znovu.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s si zmenil zobrazované meno na %(displayName)s.", + "Failed to set direct chat tag": "Nepodarilo sa nastaviť značku priama konverzácia", + "Failed to remove tag %(tagName)s from room": "Z miestnosti sa nepodarilo odstrániť značku %(tagName)s", + "Failed to add tag %(tagName)s to room": "Miestnosti sa nepodarilo pridať značku %(tagName)s", + "In reply to ": "Odpoveď na ", + "Community IDs cannot be empty.": "ID komunity nemôže ostať prázdne.", + "Show devices, send anyway or cancel.": "Zobraziť zariadenia, napriek tomu odoslať alebo zrušiť.", + "Disable Community Filter Panel": "Zakázať panel Filter komunity", + "Your key share request has been sent - please check your other devices for key share requests.": "Žiadosť o zdieľanie kľúčov bola odoslaná - Overte si zobrazenie žiadosti o zdieľanie kľúčov na vašich ostatných zariadeniach.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Žiadosť o zdieľanie kľúčov je automaticky odoslaná na vaše ďalšie zariadenia. Ak ste žiadosť odmietli alebo zrušili dialógové okno so žiadosťou na ostatných zariadeniach, kliknutím sem môžete opätovne vyžiadať kľúče pre túto reláciu.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Ak kľúče pre tieto správy nemáte uložené na ostatných vašich zariadeniach, nebudete ich môcť dešifrovať.", + "Key request sent.": "Žiadosť o kľúče odoslaná.", + "Re-request encryption keys from your other devices.": "Znovu vyžiadať šifrovacie kľúče z vašich ostatných zariadení.", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) videl %(dateTime)s", + "%(user)s is a %(userRole)s": "%(user)s je %(userRole)s", + "Code": "Kód", + "Unable to join community": "Nie je možné vstúpiť do komunity", + "Unable to leave community": "Nie je možné opustiť komunitu", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Zmeny vykonané vo vašej komunite názov a obrázok nemusia byť nasledujúcich 30 minút viditeľné všetkými používateľmi.", + "Join this community": "Vstúpiť do tejto komunity", + "Leave this community": "Opustiť túto komunitu", + "Did you know: you can use communities to filter your Riot.im experience!": "Vedeli ste: Že prácu s Riot.im si môžete spríjemníť použitím komunít!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Ak si chcete nastaviť filter, pretiahnite obrázok komunity na panel filtrovania úplne na ľavej strane obrazovky. Potom môžete kedykoľvek kliknúť na obrázok komunity na tomto panely a Riot.im vám bude zobrazovať len miestnosti a ľudí z komunity, na ktorej obrázok ste klikli.", + "Clear filter": "Zrušiť filter", + "Debug Logs Submission": "Odoslanie ladiacich záznamov", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ak ste nám poslali hlásenie o chybe cez Github, ladiace záznamy nám môžu pomôcť lepšie identifikovať chybu. Ladiace záznamy obsahujú údaje o používaní aplikácii, vrátane vašeho používateľského mena, názvy a aliasy miestností a komunít, ku ktorým ste sa pripojili a mená ostatných používateľov. Tieto záznamy neobsahujú samotný obsah vašich správ.", + "Submit debug logs": "Odoslať ladiace záznamy", + "Opens the Developer Tools dialog": "Otvorí dialóg nástroje pre vývojárov", + "Stickerpack": "Balíček nálepiek", + "You don't currently have any stickerpacks enabled": "Momentálne nemáte aktívne žiadne balíčky s nálepkami", + "Add a stickerpack": "Pridať balíček s nálepkami", + "Hide Stickers": "Skryť nálepky", + "Show Stickers": "Zobraziť nálepky", + "Who can join this community?": "Kto môže vstúpiť do tejto komunity?", + "Everyone": "Ktokoľvek", + "Fetching third party location failed": "Nepodarilo sa získať umiestnenie tretej strany", + "A new version of Riot is available.": "Dostupná je nová verzia Riot.", + "Couldn't load home page": "Nie je možné načítať domovskú stránku", + "Send Account Data": "Odoslať Údaje Účtu", + "All notifications are currently disabled for all targets.": "Momentálne sú zakázané všetky oznámenia pre všetky ciele.", + "Uploading report": "Prebieha odovzdanie hlásenia", + "Sunday": "Nedeľa", + "Notification targets": "Ciele oznámení", + "Today": "Dnes", + "Files": "Súbory", + "You are not receiving desktop notifications": "Nedostávate oznámenia na pracovnej ploche", + "Friday": "Piatok", + "Update": "Aktualizovať", + "Unable to fetch notification target list": "Nie je možné získať zoznam cieľov oznámení", + "Add an email address above to configure email notifications": "Ak si chcete nastaviť oznamovanie emailom, pridajte si emailovú adresu vyššie", + "Expand panel": "Rozbaliť panel", + "On": "Povolené", + "%(count)s Members": { + "other": "%(count)s Členov", + "one": "%(count)s Člen" + }, + "Filter room names": "Filtrovať názvy miestností", + "Changelog": "Zoznam zmien", + "Waiting for response from server": "Čakanie na odpoveď zo servera", + "Uploaded on %(date)s by %(user)s": "Nahral používateľ %(user)s dňa %(date)s", + "Send Custom Event": "Odoslať vlastnú udalosť", + "Advanced notification settings": "Pokročilé nastavenia oznámení", + "Failed to send logs: ": "Nepodarilo sa odoslať záznamy: ", + "delete the alias.": "vymazať alias.", + "To return to your account in future you need to set a password": "Aby ste sa v budúcnosti mohli vrátiť k vašemu účtu mali by ste si teraz nastaviť heslo", + "Forget": "Zabudnuť", + "Hide panel": "Skryť panel", + "You cannot delete this image. (%(code)s)": "Nemôžete vymazať tento obrázok. (%(code)s)", + "Cancel Sending": "Zrušiť odosielanie", + "This Room": "V tejto miestnosti", + "The Home Server may be too old to support third party networks": "Domovský server môže byť natoľko zastaralý, že nepodporuje siete tretíh strán", + "Resend": "Poslať znovu", + "Room not found": "Miestnosť nenájdená", + "Downloading update...": "Sťahovanie aktualizácie...", + "Messages in one-to-one chats": "Správy v priamych konverzáciách", + "Unavailable": "Nedostupné", + "View Decrypted Source": "Zobraziť dešifrovaný zdroj", + "Failed to update keywords": "Nepodarilo sa aktualizovať kľúčové slová", + "Notes:": "Poznámky:", + "remove %(name)s from the directory.": "odstrániť %(name)s z adresára.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Oznámenia nasledujúcich kľúčových slov sa riadia pravidlami, ktoré nie je možné zobraziť na tomto mieste:", + "Safari and Opera work too.": "Správne fungujú aj Safari a Opera.", + "Please set a password!": "Prosím, nastavte si heslo!", + "You have successfully set a password!": "Ǔspešne ste si nastavili heslo!", + "Explore Room State": "Preskúmať Stav Miestnosti", + "Source URL": "Pôvodná URL", + "Messages sent by bot": "Správy odosielané robotmi", + "Filter results": "Filtrovať výsledky", + "Members": "Členovia", + "No update available.": "K dispozícii nie je žiadna aktualizácia.", + "Noisy": "Hlučné", + "Failed to get protocol list from Home Server": "Nepodarilo sa získať zoznam protokolov z domovského servera", + "Collecting app version information": "Získavajú sa informácie o verzii aplikácii", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Vymazať alias %(alias)s a odstrániť miestnosť %(name)s z adresára?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Toto vám v budúcnosti umožní vrátiť sa k vašemu účtu aj po odhlásení, alebo tiež prihlásiť sa na iných zariadeniach.", + "Keywords": "Kľúčové slová", + "Enable notifications for this account": "Povoliť oznámenia pre tento účet", + "Directory": "Adresár", + "Invite to this community": "Pozvať do tejto komunity", + "Failed to get public room list": "Nepodarilo sa získať zoznam verejných miestností", + "Search…": "Hľadať…", + "Messages containing keywords": "Správy obsahujúce kľúčové slová", + "Error saving email notification preferences": "Chyba pri ukladaní nastavení oznamovania emailom", + "Tuesday": "Utorok", + "Enter keywords separated by a comma:": "Zadajte kľúčové slová oddelené čiarkou:", + "Forward Message": "Preposlať správu", + "Remove %(name)s from the directory?": "Odstrániť miestnosť %(name)s z adresára?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot sa spolieha na mnohé pokročilé vlastnosti prehliadača internetu, a niektoré z nich sú vo vašom prehliadači experimentálne alebo nie sú k dispozícii vôbec.", + "Event sent!": "Udalosť odoslaná!", + "Preparing to send logs": "príprava odoslania záznamov", + "Enable desktop notifications": "Povoliť oznámenia na pracovnej ploche", + "Explore Account Data": "Preskúmať Údaje účtu", + "All messages (noisy)": "Všetky správy (hlučné)", + "Saturday": "Sobota", + "Remember, you can always set an email address in user settings if you change your mind.": "Všimnite si, Emailovú adresu môžete pridať aj neskôr v časti nastavenia, ak zmeníte svoj názor.", + "Direct Chat": "Priama konverzácia", + "The server may be unavailable or overloaded": "Server môže byť nedostupný alebo preťažený", + "Reject": "Odmietnuť", + "Failed to set Direct Message status of room": "Nepodarilo sa nastaviť stav miestnosti priama konverzácia", + "Monday": "Pondelok", + "Remove from Directory": "Odstrániť z adresára", + "Enable them now": "Povolte si ich teraz", + "Messages containing my user name": "Správy obsahujúce moje používateľské meno", + "Toolbox": "Nástroje", + "Collecting logs": "Získavajú sa záznamy", + "more": "viac", + "GitHub issue link:": "Odkaz hlásenia na Github:", + "Search for a room": "Vyhľadať miestnosť", + "You must specify an event type!": "Musíte nastaviť typ udalosti!", + "(HTTP status %(httpStatus)s)": "(HTTP status %(httpStatus)s)", + "All Rooms": "Vo všetkych miestnostiach", + "State Key": "State Key", + "Please install Chrome or Firefox for the best experience.": "Aby ste s používania mali čo možno najlepší dojem, nainštalujte si Chrome alebo Firefox.", + "Wednesday": "Streda", + "Quote": "Citácia", + "Send logs": "Zahrnúť záznamy", + "All messages": "Všetky správy", + "Call invitation": "Audio / Video hovory", + "Messages containing my display name": "Správy obsahujúce moje zobrazované meno", + "You have successfully set a password and an email address!": "Úspešne ste si nastavili heslo aj emailovú adresu!", + "Failed to send custom event.": "Odoslanie vlastnej udalosti zlyhalo.", + "What's new?": "Čo je nové?", + "Notify me for anything else": "Oznamovať mi všetko ostatné", + "When I'm invited to a room": "Pozvania vstúpiť do miestnosti", + "Can't update user notification settings": "Nie je možné aktualizovať používateľské nastavenia oznamovania", + "Notify for all other messages/rooms": "oznamovať všetky ostatné správy / miestnosti", + "Unable to look up room ID from server": "Nie je možné vyhľadať ID miestnosti na serveri", + "Couldn't find a matching Matrix room": "Nie je možné nájsť zodpovedajúcu Matrix miestnosť", + "Invite to this room": "Pozvať do tejto miestnosti", + "You cannot delete this message. (%(code)s)": "Nemôžete vymazať túto správu. (%(code)s)", + "Thursday": "Štvrtok", + "I understand the risks and wish to continue": "Rozumiem rizikám a želám si pokračovať", + "Logs sent": "Záznamy boli odoslané", + "Back": "Naspäť", + "Reply": "Odpovedať", + "Show message in desktop notification": "Zobraziť text správy v oznámení na pracovnej ploche", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ladiace záznamy obsahujú údaje o používaní aplikácii, vrátane vašeho používateľského mena, názvy a aliasy miestností a komunít, ku ktorým ste sa pripojili a mená ostatných používateľov. Tieto záznamy neobsahujú samotný obsah vašich správ.", + "Unhide Preview": "Zobraziť náhľad", + "Unable to join network": "Nie je možné sa pripojiť k sieti", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Tieto nastavenia oznámení sa použijú aj napriek tomu, že ich nemôžete meniť cez Riot. Pravdepodobne ste si ich nastavili v inej aplikácii", + "Sorry, your browser is not able to run Riot.": "Prepáčte, vo vašom prehliadači nie je možné spustiť Riot.", + "Messages in group chats": "Správy v skupinových konverzáciách", + "Yesterday": "Včera", + "Error encountered (%(errorDetail)s).": "Vyskytla sa chyba (%(errorDetail)s).", + "Event Type": "Typ Udalosti", + "Low Priority": "Nízka priorita", + "What's New": "Čo Je Nové", + "Set Password": "Nastaviť Heslo", + "An error occurred whilst saving your email notification preferences.": "Počas ukladania vašich nastavení oznamovania emailom sa vyskytla chyba.", + "Enable audible notifications in web client": "Povoliť zvukové oznámenia vo webovom klientovi", + "Off": "Zakázané", + "Riot does not know how to join a room on this network": "Riot nedokáže vstúpiť do miestnosti na tejto sieti", + "Mentions only": "Len zmienky", + "You can now return to your account after signing out, and sign in on other devices.": "Odteraz sa budete k svojmu účtu vedieť vrátiť aj po odhlásení, alebo tiež prihlásiť na iných zariadeniach.", + "Enable email notifications": "Povoliť oznamovanie emailom", + "Login": "Prihlásiť", + "Download this file": "Stiahnuť tento súbor", + "Pin Message": "Pripnúť správu", + "Failed to change settings": "Nepodarilo sa zmeniť nastavenia", + "View Community": "Zobraziť komunitu", + "Developer Tools": "Vývojárske Nástroje", + "View Source": "Zobraziť zdroj", + "Event Content": "Obsah Udalosti", + "Thank you!": "Ďakujeme!", + "#example": "#príklad", + "Collapse panel": "Zbaliť panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Vo vašom súčasnom prehliadači nemusí Riot vizerať ani fungovať správne a niektoré alebo všetky vlastnosti môžu chýbať. Ak to chcete vyskúšať, môžete pokračovať, no pri riešení problémov s tým spojených si budete musieť poradiť na vlastnú päsť!", + "Checking for an update...": "Kontrola dostupnosti aktualizácie...", + "There are advanced notifications which are not shown here": "Niektoré pokročilé oznámenia nemôžu byť zobrazené", + "Every page you use in the app": "Každú stránku v aplikácii, ktorú navštívite", + "e.g. ": "príklad ", + "Your User Agent": "Reťazec User Agent vašeho zariadenia", + "Your device resolution": "Rozlíšenie obrazovky vašeho zariadenia", + "Popout widget": "Otvoriť widget v novom okne", + "Missing roomId.": "Chýba ID miestnosti.", + "Picture": "Vytvoriť snímku", + "Always show encryption icons": "Vždy zobrazovať ikony stavu šifrovania", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Zatiaľ nie je možné k odpovedi pridať súbor. Súbor teda nebude odoslaný ako odpoveď.", + "Unable to reply": "Nie je možné odpovedať", + "At this time it is not possible to reply with an emote.": "V odpovedi zatiaľ nie je možné vijadriť pocit.", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Nie je možné načítať udalosť odkazovanú v odpovedi. Takáto udalosť buď neexistuje alebo nemáte oprávnenie na jej zobrazenie.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Požiadavky projektu Riot sledujeme na Github: vytvoriť github požiadavku.", + "Log out and remove encryption keys?": "Odhlásiť sa a odstrániť šifrovacie kľúče?", + "Send Logs": "Odoslať záznamy", + "Clear Storage and Sign Out": "Vymazať úložisko a Odhlásiť sa", + "Refresh": "Obnoviť", + "We encountered an error trying to restore your previous session.": "Počas obnovovania vašej predchádzajúcej relácie sa vyskytla chyba.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Vymazaním úložiska prehliadača možno opravíte váš problém, no zároveň sa týmto odhlásite a história vašich šifrovaných konverzácií sa pre vás môže stať nečitateľná.", + "Collapse Reply Thread": "Zbaliť vlákno odpovedí", + "e.g. %(exampleValue)s": "príklad %(exampleValue)s", + "Reload widget": "Obnoviť widget", + "Send analytics data": "Odosielať analytické údaje", + "Enable widget screenshots on supported widgets": "Umožniť zachytiť snímku obrazovky pre podporované widgety", + "Muted Users": "Umlčaní používatelia", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Prosím pomôžte nám vylepšovať Riot.im odosielaním anonymných údajov o používaní. Na tento účel použijeme cookie (prečítajte si ako používame cookies).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Prosím pomôžte nám vylepšovať Riot.im odosielaním anonymných údajov o používaní. Na tento účel použijeme cookie.", + "Yes, I want to help!": "Áno, chcem pomôcť", + "Warning: This widget might use cookies.": "Pozor: tento widget môže používať cookies.", + "Failed to indicate account erasure": "Nie je možné odstrániť odoslané správy", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Toto spôsobí, že váš účet nebude viac použiteľný. Nebudete sa môcť opätovne prihlásiť a nikto sa nebude môcť znovu zaregistrovať s rovnakým používateľským ID. Deaktiváciou účtu opustíte všetky miestnosti, do ktorých ste kedy vstúpili a vaše kontaktné údaje budú odstránené zo servera totožností. Túto akciu nie je možné vrátiť späť.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Pri deaktivácii účtu predvolene neodstraňujeme vami odoslané správy. Ak si želáte uplatniť právo zabudnutia, zaškrtnite prosím zodpovedajúce pole nižšie.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Viditeľnosť správ odoslaných cez matrix funguje podobne ako viditeľnosť správ elektronickej pošty. To, že zabudneme vaše správy v skutočnosti znamená, že správy ktoré ste už odoslali nebudú čitateľné pre nových alebo neregistrovaných používateľov, no registrovaní používatelia, ktorí už prístup k vašim správam majú, budú aj naďalej bez zmeny môcť pristupovať k ich vlastným kópiám vašich správ.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Spolu s deaktivovaním účtu si želám odstrániť všetky mnou odoslané správy (Pozor: Môže sa stať, že noví používatelia uvidia neúplnú históriu konverzácií)", + "To continue, please enter your password:": "Aby ste mohli pokračovať, prosím zadajte svoje heslo:", + "password": "heslo", + "Can't leave Server Notices room": "Nie je možné opustiť miestnosť Oznamy zo servera", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Táto miestnosť je určená na dôležité oznamy a správy od správcov domovského servera, preto ju nie je možné opustiť.", + "Terms and Conditions": "Zmluvné podmienky", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Ak chcete aj naďalej používať domovský server %(homeserverDomain)s, mali by ste si prečítať a odsúhlasiť naše zmluvné podmienky.", + "Review terms and conditions": "Prečítať zmluvné podmienky", + "To notify everyone in the room, you must be a": "Aby ste mohli upozorňovať všetkých členov v miestnosti, musíte byť", + "Encrypting": "Šifrovanie", + "Encrypted, not sent": "Zašifrované, ale neodoslané", + "Share Link to User": "Zdieľať odkaz na používateľa", + "Share room": "Zdieľaj miestnosť", + "Share Room": "Zdieľať miestnosť", + "Link to most recent message": "Odkaz na najnovšiu správu", + "Share User": "Zdieľať používateľa", + "Share Community": "Zdieľať komunitu", + "Link to selected message": "Odkaz na vybratú správu", + "COPY": "Kopírovať", + "Share Message": "Zdieľaj správu", + "No Audio Outputs detected": "Neboli rozpoznané žiadne zvukové výstupy", + "Audio Output": "Výstup zvuku", + "Try the app first": "Vyskúšať si aplikáciu", + "Share Room Message": "Zdieľať správu z miestnosti", + "The email field must not be blank.": "Email nemôže ostať prázdny.", + "The user name field must not be blank.": "Používateľské meno nemôže ostať prázdne.", + "The phone number field must not be blank.": "Telefónne číslo nemôže ostať prázdne.", + "The password field must not be blank.": "Heslo nemôže ostať prázdne.", + "Jitsi Conference Calling": "Konferenčné hovory Jitsi", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "Náhľady URL adries sú v šifrovaných miestnostiach ako je táto predvolene zakázané, aby ste si mohli byť istí, že obsah odkazov z vašej konverzácii nebude zaznamenaný na vašom domovskom serveri počas ich generovania.", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "Ak niekto vo svojej správe pošle URL adresu, môže byť zobrazený jej náhľad obsahujúci názov, popis a obrázok z cieľovej web stránky.", + "Call in Progress": "Prebiehajúci hovor", + "A call is already in progress!": "Jeden hovor už prebieha!", + "You have no historical rooms": "Nemáte žiadne historické miestnosti", + "A conference call could not be started because the intgrations server is not available": "Nie je možné uskutočniť konferenčný hovor, integračný server nie je k dispozícii", + "A call is currently being placed!": "Práve prebieha iný hovor!", + "Permission Required": "Vyžaduje sa oprávnenie", + "You do not have permission to start a conference call in this room": "V tejto miestnosti nemáte oprávnenie začať konferenčný hovor", + "Show empty room list headings": "Zobrazovať nadpisy prázdnych zoznamov miestností", + "This event could not be displayed": "Nie je možné zobraziť túto udalosť", + "Demote yourself?": "Znížiť vlastnú úroveň moci?", + "Demote": "Znížiť", + "deleted": "Odstránené", + "underlined": "Podčiarknuté", + "inline-code": "Vnorený kód", + "block-quote": "Citácia", + "bulleted-list": "Odrážkový zoznam", + "numbered-list": "Číselný zoznam", + "Failed to remove widget": "Nepodarilo sa odstrániť widget", + "An error ocurred whilst trying to remove the widget from the room": "Pri odstraňovaní widgetu z miestnosti sa vyskytla chyba", + "You can't send any messages until you review and agree to our terms and conditions.": "Nemôžete posielať žiadne správy, kým si neprečítate a neodsúhlasíte naše zmluvné podmienky.", + "Sorry, your homeserver is too old to participate in this room.": "Prepáčte, nie je možné prijímať a odosielať do tejto miestnosti, pretože váš domovský server je zastaralý.", + "Please contact your homeserver administrator.": "Prosím, kontaktujte správcu domovského servera.", + "Increase performance by only loading room members on first view": "Zvýšiť výkon načítaním zoznamu členov pri prvom zobrazení", + "System Alerts": "Systémové upozornenia", + "Internal room ID: ": "Interné ID miestnosti: ", + "Room version number: ": "Číslo verzie miestnosti: ", + "Please contact your service administrator to continue using the service.": "Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.", + "This homeserver has hit its Monthly Active User limit.": "Bol dosiahnutý mesačný limit počtu aktívnych používateľov tohoto domovského servera.", + "This homeserver has exceeded one of its resource limits.": "Bol prekročený limit využitia prostriedkov pre tento domovský server.", + "Please contact your service administrator to get this limit increased.": "Prosím, kontaktujte správcu služieb a pokúste sa tento limit navýšiť.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Bol dosiahnutý mesačný limit počtu aktívnych používateľov a niektorí používatelia sa nebudú môcť prihlásiť.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Bol prekročený limit využitia prostriedkov pre tento domovský server a niektorí používatelia sa nebudú môcť prihlásiť.", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Vaša správa nebola odoslaná, pretože bol dosiahnutý mesačný limit počtu aktívnych používateľov tohoto domovského servera. Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Vaša správa nebola odoslaná, pretože bol prekročený limit prostriedkov tohoto domovského servera. Prosím, kontaktujte správcu služieb aby ste službu mohli naďalej používať.", + "Lazy loading members not supported": "Načítanie zoznamu členov pri prvom zobrazení nie je podporované", + "Lazy loading is not supported by your current homeserver.": "Oneskorené načítanie nepodporuje váš domovský server.", + "Please contact your service administrator to continue using this service.": "Prosím, kontaktujte správcu služieb aby ste mohli službu ďalej používať.", + "This room has been replaced and is no longer active.": "Táto miestnosť bola nahradená a nie je viac aktívna.", + "The conversation continues here.": "Konverzácia pokračuje tu.", + "Upgrade room to version %(ver)s": "Aktualizácia miestnosti na verziu %(ver)s", + "There is a known vulnerability affecting this room.": "Existuje známa zraniteľnosť, ktorú je možné zneužiť v tejto miestnosti.", + "This room version is vulnerable to malicious modification of room state.": "Táto verzia miestnosti je zraniteľná proti zlomyseľným zmenám jej stavu.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Kliknutím sem aktualizujete miestnosť na najnovšiu verziu a uistíte sa, že jej integrita je bezpečne zachovaná.", + "Only room administrators will see this warning": "Toto upozornenie sa zobrazuje len správcom miestnosti", + "This room is a continuation of another conversation.": "Táto miestnosť je pokračovaním staršej konverzácii.", + "Click here to see older messages.": "Kliknutím sem zobrazíte staršie správy.", + "Failed to upgrade room": "Nepodarilo sa aktualizovať miestnosť", + "The room upgrade could not be completed": "Nie je možné dokončiť aktualizáciu miestnosti na jej najnovšiu verziu", + "Upgrade this room to version %(version)s": "Aktualizácia tejto miestnosti na verziu %(version)s", + "Upgrade Room Version": "Aktualizovať verziu miestnosti", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Aktualizácia verzii tejto miestnosti si vyžaduje jej uzatvorenie a vytvorenie novej miestnosti na jej pôvodnom mieste. Aby bol prechod pre členov miestnosti čo najplynulejší, nasledovné kroky sa vykonajú automaticky:", + "Create a new room with the same name, description and avatar": "Vznikne nová miestnosť s rovnakým názvom, témou a obrázkom", + "Update any local room aliases to point to the new room": "Všetky lokálne aliasy pôvodnej miestnosti sa aktualizujú tak, aby ukazovali na novú miestnosť", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "V pôvodnej miestnosti bude zverejnené odporúčanie prejsť do novej miestnosti a posielanie do pôvodnej miestnosti bude zakázané pre všetkých používateľov", + "Put a link back to the old room at the start of the new room so people can see old messages": "História novej miestnosti sa začne odkazom do pôvodnej miestnosti, aby si členovia vedeli zobraziť staršie správy", + "Registration Required": "Vyžaduje sa registrácia", + "You need to register to do this. Would you like to register now?": "Aby ste mohli uskutočniť túto akciu, musíte sa zaregistrovať. Chcete teraz spustiť registráciu?", + "Forces the current outbound group session in an encrypted room to be discarded": "Vynúti zabudnutie odchádzajúcej skupinovej relácii v šifrovanej miestnosti", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s pridal adresy %(addedAddresses)s do tejto miestnosti.", + "one": "%(senderName)s pridal adresu %(addedAddresses)s do tejto miestnosti." + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s odstránil adresy %(removedAddresses)s z tejto miestnosti.", + "one": "%(senderName)s odstránil adresu %(removedAddresses)s z tejto miestnosti." + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s pridal %(addedAddresses)s a odstránil %(removedAddresses)s z tejto miestnosti.", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s nastavil hlavnú adresu tejto miestnosti %(address)s.", + "%(senderName)s removed the main address for this room.": "%(senderName)s odstránil hlavnú adresu tejto miestnosti.", + "Unable to connect to Homeserver. Retrying...": "Nie je možné sa pripojiť k domovskému serveru. Prebieha pokus o opetovné pripojenie...", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "Pred tým, než odošlete záznamy, musíte nahlásiť váš problém na GitHub. Uvedte prosím podrobný popis.", + "What GitHub issue are these logs for?": "Pre ktoré hlásenie GitHub sú tieto záznamy?", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot teraz vyžaduje 3-5× menej pamäte, pretože informácie o ostatných používateľoch načítava len podľa potreby. Prosím počkajte na dokončenie synchronizácie so serverom!", + "Updating Riot": "Prebieha aktualizácia Riot", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

Obsah vo formáte HTML pre vašu stránku komunity

\n

\n Do poľa dlhý popis zadajte text, ktorým komunitu predstavíte novým členom, alebo ich\n na nejaké dôležité odkazy\n

\n

\n Môžete tiež pridať obrázky použitím značiek 'img'\n

\n", + "Submit Debug Logs": "Odoslať ladiace záznamy", + "Legal": "Právne", + "Unable to query for supported registration methods": "Nie je možné vyžiadať podporované metódy registrácie", + "An email address is required to register on this homeserver.": "Na registráciu na tomto domovskom servery je vyžadovaná emailová adresa.", + "A phone number is required to register on this homeserver.": "Na registráciu na tomto domovskom servery je vyžadované telefónne číslo.", + "Riot is not supported on mobile web. Install the app?": "Riot nie je podporovaný na mobilných zariadeniach. Želáte si nainštalovať aplikáciu?", + "Riot Desktop on %(platformName)s": "Riot Desktop pre %(platformName)s", + "Unknown device": "Neznáme zariadenie", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s cez %(browserName)s pre %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Ak si želáte spustiť zdieľanie obrazovky, musíte byť pripojení cez protokol HTTPS.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Vlastné nastavenia servera môžete použiť na pripojenie k iným serverom Matrix a to zadaním URL adresy domovského servera.
Umožní vám to použiť Riot s už existujúcim Matrix účtom na akomkoľvek domovskom servery.

Môžete tiež nastaviť vlastný server totožností, no ak tak urobíte, nebudete môcť do konverzácií pozývať používateľov zadaním ich emailovej adresy, ani ostatní nebudú môcť pozvať vás zadaním vašej emailovej adresy.", + "Welcome to Riot.im": "Víta vás Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentralizovaný, šifrovaný chat a spolupráca na platforme [matrix]", + "Search the room directory": "Prehľadať adresár miestností", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Na Matrixe je k dispozícii množstvo nezávislých diskusných miestností a tiež miestnosti prepojené z iných sietí (Slack, IRC, Gitter atď). Pozrite si adresár!", + "Chat with Riot Bot": "Konverzácia s Riot Bot", + "Get started with some tips from Riot Bot!": "Začnite zopár tipmi v diskusii s Riot Bot!", + "General discussion about Matrix and Riot": "Všeobecná diskusia o Matrix a Riot", + "Discussion of all things Matrix!": "Diskusia o všetkom okolo Matrix!", + "Riot/Web & Desktop chat": "Riot/Web & Desktop chat", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk chat", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk chat", + "Matrix technical discussions": "Technické diskusie o Matrix", + "Running Matrix services": "Prevádzka služieb postavených na Matrix", + "Community-run support for Synapse": "Komunitná podpora pre Synapse", + "Admin support for Dendrite": "Administrátorská podpora pre Dendrite", + "Announcements about Synapse releases": "Oznamy o verziách Synapse", + "Support for those using and running matrix-appservice-irc": "Podpora pre používateľov a prevádzkovateľov matrix-appservice-irc", + "Building services on Matrix": "Stavba služieb na Matrix", + "Support for those using the Matrix spec": "Podpora pre konzumentov špecifikácie Matrix", + "Design and implementation of E2E in Matrix": "Návrh a implementácia E2E pre Matrix", + "Implementing VR services with Matrix": "Implementácia služieb VR s Matrix", + "Implementing VoIP services with Matrix": "Implementácia VoIP služieb s Matrix", + "Discussion of the Identity Service API": "Diskusia o API služby totožností", + "Support for those using, running and writing other bridges": "Podpora pre používateľov, prevádzkovateľov a tvorcov premostení do ďalších sietí", + "Contributing code to Matrix and Riot": "Prispievanie kódu projektom Matrix a Riot", + "Dev chat for the Riot/Web dev team": "Diskusia pre tím vývojárov Riot/Web", + "Dev chat for the Dendrite dev team": "Diskusia pre tím vývojárov Dendrite", + "Co-ordination for Riot translators": "Koordinácia prekladov Riot" +} \ No newline at end of file diff --git a/riot/i18n/sr.json b/riot/i18n/sr.json new file mode 100644 index 0000000..723408b --- /dev/null +++ b/riot/i18n/sr.json @@ -0,0 +1,1317 @@ +{ + "This email address is already in use": "Ова мејл адреса се већ користи", + "This phone number is already in use": "Овај број телефона се већ користи", + "Failed to verify email address: make sure you clicked the link in the email": "Нисам успео да проверим мејл адресу, постарајте се да сте кликнули на везу у мејлу", + "The remote side failed to pick up": "Друга страна није подигла слушалицу", + "Unable to capture screen": "Не могу да ухватим садржај екрана", + "Existing Call": "Постојећи позив", + "You are already in a call.": "Већ сте у позиву.", + "VoIP is unsupported": "VoIP није подржан", + "You cannot place VoIP calls in this browser.": "Не можете правити VoIP позиве у овом прегледачу.", + "You cannot place a call with yourself.": "Не можете позвати сами себе.", + "Conference calls are not supported in this client": "Конференцијски позиви нису подржани у овом клијенту", + "Conference calls are not supported in encrypted rooms": "Конференцијски позиви нису подржани у шифрованим собама", + "Warning!": "Упозорење!", + "Conference calling is in development and may not be reliable.": "Конференцијски позиви су још у развоју и могу бити непоуздани.", + "Failed to set up conference call": "Нисам успео да поставим конференцијски позив", + "Conference call failed.": "Конференцијски позив није успео.", + "The file '%(fileName)s' failed to upload": "Нисам успео да отпремим датотеку „%(fileName)s“", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Датотека „%(fileName)s“ премашује ограничење величине отпремања на овом кућном серверу", + "Upload Failed": "Отпремање није успело", + "Sun": "Нед", + "Mon": "Пон", + "Tue": "Уто", + "Wed": "Сре", + "Thu": "Чет", + "Fri": "Пет", + "Sat": "Суб", + "Jan": "Јан", + "Feb": "Феб", + "Mar": "Мар", + "Apr": "Апр", + "May": "Мај", + "Jun": "Јун", + "Jul": "Јул", + "Aug": "Авг", + "Sep": "Сеп", + "Oct": "Окт", + "Nov": "Нов", + "Dec": "Дец", + "PM": "после подне", + "AM": "пре подне", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "Who would you like to add to this community?": "Кога желите додати у ову заједницу?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Упозорење: било која особа додата у заједницу биће јавно видљива било коме ко зна ИБ заједнице", + "Invite new community members": "Позови нове чланове заједнице", + "Name or matrix ID": "Назив или матрикс ИБ", + "Invite to Community": "Позови у заједницу", + "Which rooms would you like to add to this community?": "Које собе желите додати у ову заједницу?", + "Show these rooms to non-members on the community page and room list?": "Приказати ове собе нечлановима на страници заједнице и у списку соба?", + "Add rooms to the community": "Додај собе у заједницу", + "Room name or alias": "Назив собе или алијас", + "Add to community": "Додај у заједницу", + "Failed to invite the following users to %(groupId)s:": "Нисам успео да позовем следеће кориснике у %(groupId)s:", + "Failed to invite users to community": "Нисам успео да позовем кориснике у заједницу", + "Failed to invite users to %(groupId)s": "Нисам успео да позовем кориснике у %(groupId)s", + "Failed to add the following rooms to %(groupId)s:": "Нисам успео да додам следеће собе у %(groupId)s:", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot нема овлашћења за слање обавештења, проверите подешавања вашег прегледача", + "Riot was not given permission to send notifications - please try again": "Riot-у није дато овлашћење за слање обавештења, пробајте поново касније", + "Unable to enable Notifications": "Нисам успео да омогућим обавештења", + "This email address was not found": "Ова мејл адреса није нађена", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Изгледа да ваша мејл адреса није повезана са Матрикс ИБ-јем на овом кућном серверу.", + "Default": "Подразумевано", + "Restricted": "Ограничено", + "Moderator": "Модератор", + "Admin": "Админ", + "Start a chat": "Крени са ћаскањем", + "Who would you like to communicate with?": "Са киме желите да разговарате?", + "Email, name or matrix ID": "Мејл, име или матрикс ИБ", + "Start Chat": "Ћаскај", + "Invite new room members": "Позови нове чланове у собу", + "Who would you like to add to this room?": "Кога желите да додате у ову собу?", + "Send Invites": "Пошаљи позивнице", + "Failed to invite user": "Неуспех при позивању корисника", + "Operation failed": "Радња није успела", + "Failed to invite": "Нисам успео да пошаљем позивницу", + "Failed to invite the following users to the %(roomName)s room:": "Нисам успео да пошаљем позивницу корисницима за собу %(roomName)s:", + "You need to be logged in.": "Морате бити пријављени.", + "You need to be able to invite users to do that.": "Морате имати могућност слања позивница корисницима да бисте то урадили.", + "Unable to create widget.": "Не могу да направим виџет.", + "Failed to send request.": "Неуспех при слању захтева.", + "This room is not recognised.": "Ова соба није препозната.", + "Power level must be positive integer.": "Ниво моћи мора бити позитивни број.", + "You are not in this room.": "Нисте у овој соби.", + "You do not have permission to do that in this room.": "Немате овлашћење да урадите то у овој соби.", + "Missing room_id in request": "Недостаје room_id у захтеву", + "Room %(roomId)s not visible": "Соба %(roomId)s није видљива", + "Missing user_id in request": "Недостаје user_id у захтеву", + "Call Failed": "Позивање неуспешно", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Постоје непознати уређаји у овој соби: уколико наставите без проверавања, можда ће неко прислушкивати ваш позив.", + "Review Devices": "Испрегледај уређаје", + "Call Anyway": "Ипак позови", + "Answer Anyway": "Ипак одговори", + "Call": "Позови", + "Answer": "Одговори", + "Call Timeout": "Прекорачено време позивања", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "Usage": "Коришћење", + "/ddg is not a command": "/ddg није наредба", + "To use it, just wait for autocomplete results to load and tab through them.": "Да бисте је користили, само сачекајте да се исходи самодовршавања учитају и табом прођите кроз њих.", + "Unrecognised room alias:": "Непознати алијас собе:", + "Ignored user": "Занемарени корисник", + "You are now ignoring %(userId)s": "Сада занемарујете корисника %(userId)s", + "Unignored user": "Незанемарени корисник", + "You are no longer ignoring %(userId)s": "Више не занемарујете корисника %(userId)s", + "Unknown (user, device) pair:": "Непознати пар (корисника, уређаја):", + "Device already verified!": "Уређај је већ проверен!", + "WARNING: Device already verified, but keys do NOT MATCH!": "УПОЗОРЕЊЕ: Уређај је већ проверен али се кључеви НЕ ПОДУДАРАЈУ!", + "Verified key": "Проверени кључ", + "Unrecognised command:": "Непрепозната наредба:", + "Reason": "Разлог", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s је прихватио позивницу за %(displayName)s.", + "%(targetName)s accepted an invitation.": "%(targetName)s је прихватио позивницу.", + "%(senderName)s requested a VoIP conference.": "%(senderName)s је затражио VoIP конференцију.", + "%(senderName)s invited %(targetName)s.": "%(senderName)s је позвао %(targetName)s.", + "%(senderName)s banned %(targetName)s.": "%(senderName)s је бановао %(targetName)s.", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "УПОЗОРЕЊЕ: ПРОВЕРА КЉУЧА НИЈЕ УСПЕЛА! Кључ потписивања за корисника %(userId)s и уређај %(deviceId)s је „%(fprint)s“ а то се не подудара са достављеним кључем „%(fingerprint)s“. Ово можда значи да се ваши разговори прате!", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Кључ за потписивање који сте доставили се подудара са кључем за потписивање од корисника %(userId)s и уређаја %(deviceId)s. Уређај је означен као проверен.", + "%(senderName)s set their display name to %(displayName)s.": "Корисник %(senderName)s је себи поставио приказно име %(displayName)s.", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "Корисник %(senderName)s је себи уклонио приказно име %(oldDisplayName)s.", + "%(senderName)s removed their profile picture.": "Корисник %(senderName)s је себи уклонио профилну слику.", + "%(senderName)s changed their profile picture.": "Корисник %(senderName)s је себи променио профилну слику.", + "%(senderName)s set a profile picture.": "Корисник %(senderName)s је себи поставио профилну слику.", + "VoIP conference started.": "VoIP конференција је започета.", + "%(targetName)s joined the room.": "Корисник %(targetName)s је ушао у собу.", + "VoIP conference finished.": "VoIP конференција је завршена.", + "%(targetName)s rejected the invitation.": "Корисник %(targetName)s је одбацио позивницу.", + "%(targetName)s left the room.": "Корисник %(targetName)s је напустио собу.", + "%(senderName)s unbanned %(targetName)s.": "Корисник %(senderName)s је скинуо забрану приступа са %(targetName)s.", + "%(senderName)s kicked %(targetName)s.": "Корисник %(senderName)s је избацио %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "Пошиљалац %(senderName)s је повукао позивницу за %(targetName)s.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "Корисник %(senderDisplayName)s је променио тему у „%(topic)s“.", + "%(senderDisplayName)s removed the room name.": "Корисник %(senderDisplayName)s је уклонио назив собе.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "Корисник %(senderDisplayName)s је променио назив собе у %(roomName)s.", + "%(senderDisplayName)s sent an image.": "Корисник %(senderDisplayName)s је послао слику.", + "Someone": "Неко", + "(not supported by this browser)": "(није подржано од стране овог прегледача)", + "%(senderName)s answered the call.": "Корисник %(senderName)s се јавио.", + "(could not connect media)": "(не могу да повежем медије)", + "(no answer)": "(нема одговора)", + "(unknown failure: %(reason)s)": "(непозната грешка: %(reason)s)", + "%(senderName)s ended the call.": "Корисник %(senderName)s је окончао позив.", + "%(senderName)s placed a %(callType)s call.": "Корисник %(senderName)s је направио %(callType)s позив.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "Корисник %(senderName)s је послао позивницу за приступ соби ка %(targetDisplayName)s.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "Корисник %(senderName)s је учинио будући историјат собе видљивим свим члановима собе, од тренутка позивања у собу.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "Корисник %(senderName)s је учинио будући историјат собе видљивим свим члановима собе, од тренутка приступања соби.", + "%(senderName)s made future room history visible to all room members.": "Корисник %(senderName)s је учинио будући историјат собе видљивим свим члановима собе.", + "%(senderName)s made future room history visible to anyone.": "Корисник %(senderName)s је учинио будући историјат собе видљивим свима.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "Корисник %(senderName)s је учинио будући историјат собе непознатим (%(visibility)s).", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "Корисник %(senderName)s је укључио шифровање с краја на крај (алгоритам %(algorithm)s).", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s са %(fromPowerLevel)s на %(toPowerLevel)s", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "Корисник %(senderName)s је променио ниво моћи од %(powerLevelDiffText)s.", + "%(senderName)s changed the pinned messages for the room.": "Корисник %(senderName)s је променио закачене поруке у соби.", + "%(widgetName)s widget modified by %(senderName)s": "Корисник %(senderName)s је променио виџет %(widgetName)s", + "%(widgetName)s widget added by %(senderName)s": "Корисник %(senderName)s је додао виџет %(widgetName)s", + "%(widgetName)s widget removed by %(senderName)s": "Корисник %(senderName)s је уклонио виџет %(widgetName)s", + "%(displayName)s is typing": "%(displayName)s куца", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s и %(count)s корисник(а) куцају", + "one": "%(names)s и још један куцају" + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s и %(lastPerson)s куцају", + "Failure to create room": "Неуспех при прављењу собе", + "Server may be unavailable, overloaded, or you hit a bug.": "Сервер је можда недоступан, преоптерећен или сте нашли грешку.", + "Send anyway": "Ипак пошаљи", + "Send": "Пошаљи", + "Unnamed Room": "Неименована соба", + "Your browser does not support the required cryptography extensions": "Ваш прегледач не подржава потребна криптографска проширења", + "Not a valid Riot keyfile": "Није исправана Riot кључ-датотека", + "Authentication check failed: incorrect password?": "Провера идентитета није успела: нетачна лозинка?", + "Failed to join room": "Нисам успео да уђем у собу", + "Message Pinning": "Закачене поруке", + "Disable Emoji suggestions while typing": "Онемогући предлагање емоџија приликом куцања", + "Use compact timeline layout": "Користи збијени распоред временске линије", + "Hide removed messages": "Сакриј уклоњене поруке", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Сакриј поруке приступања и напуштања (позивнице, избацивања и забране нису захваћене)", + "Hide avatar changes": "Сакриј промене аватара", + "Hide display name changes": "Сакриј промене приказног имена", + "Hide read receipts": "Сакриј потврде прочитаности", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Прикажи временске жигове у 12-сатном облику (нпр.: 2:30 ПоП)", + "Always show message timestamps": "Увек прикажи временске жигове", + "Autoplay GIFs and videos": "Самостално пуштај GIF-ове и видео записе", + "Enable automatic language detection for syntax highlighting": "Омогући самостално препознавање језика за истицање синтаксе", + "Hide avatars in user and room mentions": "Сакриј аватаре у спомињањима корисника и соба", + "Disable big emoji in chat": "Онемогући велике емоџије у ћаскању", + "Don't send typing notifications": "Не шаљи обавештења о куцању", + "Automatically replace plain text Emoji": "Самостално замени емоџије писане обичним текстом", + "Mirror local video feed": "Копирај довод локалног видеа", + "Disable Peer-to-Peer for 1:1 calls": "Онемогући парњаке за 1 на 1 позиве", + "Never send encrypted messages to unverified devices from this device": "Никада не шаљи шифроване поруке са овог уређаја ка непровереним уређајима", + "Never send encrypted messages to unverified devices in this room from this device": "Никада не шаљи шифроване поруке са овог уређаја ка непровереним уређајима у овој соби", + "Enable inline URL previews by default": "Подразумевано омогући претпрегледе адреса унутар линије", + "Enable URL previews for this room (only affects you)": "Омогући претпрегледе адреса у овој соби (утиче само на вас)", + "Enable URL previews by default for participants in this room": "Подразумевано омогући прегледе адреса за чланове ове собе", + "Room Colour": "Боја собе", + "Active call (%(roomName)s)": "Активни позив (%(roomName)s)", + "unknown caller": "непознати позивалац", + "Incoming voice call from %(name)s": "Долазни гласовни позив од корисника %(name)s", + "Incoming video call from %(name)s": "Долазни видео позив од корисника %(name)s", + "Incoming call from %(name)s": "Долазни позив од корисника %(name)s", + "Decline": "Одбиј", + "Accept": "Прихвати", + "Error": "Грешка", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Текстуална порука је послата на %(msisdn)s. Унесите потврдни код из те поруке", + "Incorrect verification code": "Нетачни потврдни код", + "Enter Code": "Унесите код", + "Submit": "Пошаљи", + "Phone": "Телефон", + "Add phone number": "Додај телефонски број", + "Add": "Додај", + "Failed to upload profile picture!": "Нисам успео да отпремим профилну слику!", + "Upload new:": "Отпреми нову:", + "No display name": "Нема приказног имена", + "New passwords don't match": "Нове лозинке се не подударају", + "Passwords can't be empty": "Лозинке не могу бити празне", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Промена лозинке ће тренутно ресетовати све кључеве за шифровање с краја на крај, на свим уређајима и тиме учинити шифровани историјат ћаскања нечитљивим осим ако прво не извезете кључеве ваше собе па их поново увезете после. Ово ће бити побољшано у будућности.", + "Continue": "Настави", + "Export E2E room keys": "Извези E2E кључеве собе", + "Do you want to set an email address?": "Да ли желите да поставите мејл адресу?", + "Current password": "Тренутна лозинка", + "Password": "Лозинка", + "New Password": "Нова лозинка", + "Confirm password": "Потврди лозинку", + "Change Password": "Промени лозинку", + "Your home server does not support device management.": "Ваш кућни сервер не подржава управљање уређајима.", + "Unable to load device list": "Нисам могао да учитам списак уређаја", + "Authentication": "Идентификација", + "Delete %(count)s devices": { + "other": "Обриши %(count)s уређај(а)", + "one": "Обриши уређај" + }, + "Device ID": "ИБ уређаја", + "Device Name": "Назив уређаја", + "Last seen": "Последњи пут виђен", + "Select devices": "Изабери уређаје", + "Failed to set display name": "Нисам успео да поставим приказно име", + "Disable Notifications": "Онемогући обавештења", + "Enable Notifications": "Омогући обавештења", + "Cannot add any more widgets": "Не могу да додам још виџета", + "The maximum permitted number of widgets have already been added to this room.": "Највећи број дозвољених додатих виџета је прекорачен у овој соби.", + "Add a widget": "Додај виџет", + "Drop File Here": "Превуци датотеку овде", + "Drop file here to upload": "Превуци датотеку овде да би је отпремио", + " (unsupported)": " (неподржано)", + "Join as voice or video.": "Приступи преко гласа или видеа.", + "Ongoing conference call%(supportedText)s.": "Текући конференцијски позив %(supportedText)s.", + "%(senderName)s sent an image": "Корисник %(senderName)s је послао слику", + "%(senderName)s sent a video": "Корисник %(senderName)s је послао видео", + "%(senderName)s uploaded a file": "Корисник %(senderName)s је отпремио датотеку", + "Options": "Опције", + "Undecryptable": "Немогуће дешифровати", + "Encrypted by a verified device": "Шифровано на провереном уређају", + "Encrypted by an unverified device": "Шифровано на непровереном уређају", + "Unencrypted message": "Нешифрована порука", + "Please select the destination room for this message": "Изаберите одредишну собу за ову поруку", + "Blacklisted": "На црном списку", + "Verified": "Проверени", + "Unverified": "Непроверени", + "device id: ": "иб уређаја: ", + "Disinvite": "Откажи позивницу", + "Kick": "Избаци", + "Disinvite this user?": "Отказати позивницу за овог корисника?", + "Kick this user?": "Избацити овог корисника?", + "Failed to kick": "Неуспех при избацивању", + "Unban": "Скини забрану", + "Ban": "Забрани приступ", + "Unban this user?": "Скинути забрану за овог корисника?", + "Ban this user?": "Забранити приступ овом кориснику?", + "Failed to ban user": "Неуспех при забрањивању приступа кориснику", + "Failed to mute user": "Неуспех при пригушивању корисника", + "Failed to toggle moderator status": "Неуспех при промени стања модератора", + "Failed to change power level": "Неуспех при промени нивоа моћи", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Нећете моћи да опозовете ове промене зато што снижавате себе, ако сте последњи овлашћени корисник у соби, немогуће је да поново добијете овлашћења.", + "Are you sure?": "Да ли сте сигурни?", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Нећете моћи да опозовете ову измену јер унапређујете корисника тако да има исти ниво моћи као и ви.", + "No devices with registered encryption keys": "Нема уређаја са регистрованим кључевима за шифровање", + "Devices": "Уређаји", + "Unignore": "Не занемаруј више", + "Ignore": "Занемари", + "Jump to read receipt": "Скочи на потврду о прочитаности", + "Mention": "Спомени", + "Invite": "Позови", + "User Options": "Корисничке опције", + "Direct chats": "Директна ћаскања", + "Unmute": "Појачај", + "Mute": "Утишај", + "Revoke Moderator": "Опозови модератора", + "Make Moderator": "Учини модератором", + "Admin Tools": "Админ алатке", + "Level:": "Ниво:", + "and %(count)s others...": { + "other": "и %(count)s других...", + "one": "и још један други..." + }, + "Invited": "Позван", + "Filter room members": "Филтрирај чланове собе", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (моћ %(powerLevelNumber)s)", + "Attachment": "Прилог", + "Upload Files": "Отпреми датотеке", + "Are you sure you want to upload the following files?": "Да ли сте сигурни да желите да отпремите следеће датотеке?", + "Encrypted room": "Шифрована соба", + "Unencrypted room": "Нешифрована соба", + "Hangup": "Спусти слушалицу", + "Voice call": "Гласовни позив", + "Video call": "Видео позив", + "Upload file": "Отпреми датотеку", + "Show Text Formatting Toolbar": "Прикажи алатницу за форматирање текста", + "Send an encrypted reply…": "Пошаљи шифровани одговор…", + "Send a reply (unencrypted)…": "Пошаљи одговор (нешифровани)…", + "Send an encrypted message…": "Пошаљи шифровану поруку…", + "Send a message (unencrypted)…": "Пошаљи поруку (нешифровану)…", + "You do not have permission to post to this room": "Немате овлашћење за писање у овој соби", + "Turn Markdown on": "Укључи Маркдаун", + "Turn Markdown off": "Искључи Маркдаун", + "Hide Text Formatting Toolbar": "Сакриј алатницу за форматирање текста", + "Server error": "Грешка на серверу", + "Server unavailable, overloaded, or something else went wrong.": "Сервер није доступан или је преоптерећен или је нешто пошло наопако.", + "Command error": "Грешка у наредби", + "bold": "подебљано", + "italic": "искошено", + "strike": "прецртано", + "underline": "подвучено", + "code": "код", + "quote": "цитат", + "bullet": "списак", + "numbullet": "бројевни_списак", + "Markdown is disabled": "Маркдаун је искључен", + "Markdown is enabled": "Маркдаун је укључен", + "Unpin Message": "Откачи поруку", + "Jump to message": "Скочи на поруку", + "No pinned messages.": "Нема закачених порука.", + "Loading...": "Учитавам...", + "Pinned Messages": "Закачене поруке", + "%(duration)ss": "%(duration)sс", + "%(duration)sm": "%(duration)sм", + "%(duration)sh": "%(duration)sч", + "%(duration)sd": "%(duration)sд", + "Online for %(duration)s": "На мрежи %(duration)s", + "Idle for %(duration)s": "У мировању %(duration)s", + "Offline for %(duration)s": "Ван мреже %(duration)s", + "Unknown for %(duration)s": "Непознато већ %(duration)s", + "Online": "На мрежи", + "Idle": "У мировању", + "Offline": "Ван мреже", + "Unknown": "Непознато", + "Replying": "Одговара", + "Seen by %(userName)s at %(dateTime)s": "Видео корисник %(userName)s у %(dateTime)s", + "No rooms to show": "Нема соба за приказ", + "Unnamed room": "Неименована соба", + "World readable": "Читљиво за све", + "Guests can join": "Гости могу приступити", + "Failed to set avatar.": "Нисам успео да поставим аватар.", + "Save": "Сачувај", + "(~%(count)s results)": { + "other": "(~%(count)s резултата)", + "one": "(~%(count)s резултат)" + }, + "Join Room": "Приступи соби", + "Upload avatar": "Отпреми аватара", + "Remove avatar": "Уклони аватара", + "Settings": "Подешавања", + "Forget room": "Заборави собу", + "Search": "Претрага", + "Show panel": "Прикажи површ", + "Drop here to favourite": "Пусти овде да учиниш омиљеним", + "Drop here to tag direct chat": "Пусти овде да означиш директно ћаскање", + "Drop here to restore": "Пусти овде да опоравиш", + "Drop here to demote": "Пусти овде да унизиш", + "Drop here to tag %(section)s": "Пусти овде да означиш %(section)s", + "Press to start a chat with someone": "Притисни за почетак ћаскања са неким", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Још нисте у било којој соби! Притисните да бисте направили собу или да бисте погледали фасциклу", + "Community Invites": "Позивнице заједнице", + "Invites": "Позивнице", + "Favourites": "Омиљено", + "People": "Особе", + "Rooms": "Собе", + "Low priority": "Ниска важност", + "Historical": "Историјско", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Не могу да утврдим да ли се адреса на овој позивници поклапа са оном која је повезана са вашим налогом.", + "This invitation was sent to an email address which is not associated with this account:": "Ова позивница је послата на мејл адресу која није повезана са вашим налогом:", + "You may wish to login with a different account, or add this email to this account.": "Можда бисте желели да се пријавите са другим налогом или да додате овај мејл у ваш налог.", + "You have been invited to join this room by %(inviterName)s": "Позвани сте да приступите овој соби од стране корисника %(inviterName)s", + "Would you like to accept or decline this invitation?": "Да ли желите да прихватите или одбијете ову позивницу?", + "Reason: %(reasonText)s": "Разлог: %(reasonText)s", + "Rejoin": "Поново приступи", + "You have been kicked from %(roomName)s by %(userName)s.": "Корисник %(userName)s вас је избацио из собе %(roomName)s.", + "You have been kicked from this room by %(userName)s.": "Корисник %(userName)s вас је избацио из ове собе.", + "You have been banned from %(roomName)s by %(userName)s.": "Корисник %(userName)s је вама забранио приступ соби %(roomName)s.", + "You have been banned from this room by %(userName)s.": "Корисник %(userName)s је вама забранио приступ овој соби.", + "This room": "Ова соба", + "%(roomName)s does not exist.": "Соба %(roomName)s не постоји.", + "%(roomName)s is not accessible at this time.": "Соба %(roomName)s није доступна у овом тренутку.", + "You are trying to access %(roomName)s.": "Покушавате да приступите соби %(roomName)s.", + "You are trying to access a room.": "Покушавате да приступите соби.", + "Click here to join the discussion!": "Кликните овде да бисте се придружили разговору!", + "This is a preview of this room. Room interactions have been disabled": "Ово је претпреглед ове собе. Интеракције у соби су онемогућене", + "To change the room's avatar, you must be a": "Да бисте променили аватар собе, морате бити", + "To change the room's name, you must be a": "Да бисте променили назив собе, морате бити", + "To change the room's main address, you must be a": "Да бисте променили главну адресу собе, морате бити", + "To change the room's history visibility, you must be a": "Да бисте променили видљивост историјата собе, морате бити", + "To change the permissions in the room, you must be a": "Да бисте променили овлашћења у соби, морате бити", + "To change the topic, you must be a": "Да бисте променили тему, морате бити", + "To modify widgets in the room, you must be a": "Да бисте изменили виџете у соби, морате бити", + "Failed to unban": "Нисам успео да скинем забрану", + "Banned by %(displayName)s": "Приступ забранио %(displayName)s", + "Privacy warning": "Упозорење о приватности", + "Changes to who can read history will only apply to future messages in this room": "Измене права читања историјата биће примењене на будуће поруке у овој соби", + "The visibility of existing history will be unchanged": "Видљивост постојећег историјата неће бити промењена", + "unknown error code": "непознати код грешке", + "Failed to forget room %(errCode)s": "Нисам успео да заборавим собу %(errCode)s", + "End-to-end encryption is in beta and may not be reliable": "Шифровање с краја на крај је у бета фази и може бити непоуздано", + "You should not yet trust it to secure data": "Не бисте требали да му још верујете за обезбеђивање података", + "Devices will not yet be able to decrypt history from before they joined the room": "Уређаји још не могу да дешифрују историјат настао пре приступања соби", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Када се шифровање омогући за собу, не може се поново искључити (за сада)", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Шифроване поруке неће бити видљиве на клијентима који још не подржавају шифровање", + "Enable encryption": "Омогући шифровање", + "(warning: cannot be disabled again!)": "(упозорење: не може се поново искључити!)", + "Encryption is enabled in this room": "Шифровање је омогућено у овој соби", + "Encryption is not enabled in this room": "Шифровање није омогућено у овој соби", + "Privileged Users": "Овлашћени корисници", + "No users have specific privileges in this room": "Нема корисника са посебним овлашћењима у овој соби", + "Banned users": "Корисници са забраном приступа", + "This room is not accessible by remote Matrix servers": "Овој соби не могу приступити удаљени Матрикс сервери", + "Leave room": "Напусти собу", + "Favourite": "Омиљено", + "Tagged as: ": "Означено као: ", + "To link to a room it must have an address.": "Да бисте слали везу собе, она мора имати адресу.", + "Guests cannot join this room even if explicitly invited.": "Гости не могу приступити овој соби чак и ако су експлицитно позвани.", + "Click here to fix": "Кликните овде да бисте поправили", + "Who can access this room?": "Ко може приступити овој соби?", + "Only people who have been invited": "Само особе које су позване", + "Anyone who knows the room's link, apart from guests": "Било ко ко зна везу ка соби, осим гостију", + "Anyone who knows the room's link, including guests": "Било ко ко зна везу ка соби, укључујући и госте", + "Publish this room to the public in %(domain)s's room directory?": "Објавити ову собу у јавној фасцикли соба на домену %(domain)s?", + "Who can read history?": "Ко може читати историјат?", + "Anyone": "Било ко", + "Members only (since the point in time of selecting this option)": "Само чланови (од тренутка бирања ове опције)", + "Members only (since they were invited)": "Само чланови (од тренутка позивања)", + "Members only (since they joined)": "Само чланови (од приступања)", + "Permissions": "Овлашћења", + "The default role for new room members is": "Подразумевана улога за нове чланове у соби је", + "To send messages, you must be a": "Да бисте слали поруке, морате бити", + "To invite users into the room, you must be a": "Да бисте позивали кориснике у собу, морате бити", + "To configure the room, you must be a": "Да бисте подешавали собу, морате бити", + "To kick users, you must be a": "Да бисте избацивали кориснике, морате бити", + "To ban users, you must be a": "Да бисте забрањивали приступ корисницима, морате бити", + "To remove other users' messages, you must be a": "Да бисте уклањали поруке других корисника, морате бити", + "To send events of type , you must be a": "Да бисте слали догађаје врсте , морате бити", + "Advanced": "Напредно", + "This room's internal ID is": "Унутрашњи ИБ ове собе је", + "Add a topic": "Додај тему", + "Cancel": "Откажи", + "Scroll to unread messages": "Превуци на непрочитане поруке", + "Jump to first unread message.": "Скочи на прву непрочитану поруку.", + "Close": "Затвори", + "Invalid alias format": "Неисправан облик алијаса", + "'%(alias)s' is not a valid format for an alias": "„%(alias)s 1“ није исправан облик алијаса", + "Invalid address format": "Неисправан облик адресе", + "'%(alias)s' is not a valid format for an address": "„%(alias)s“ није исправан облик адресе", + "not specified": "није наведено", + "not set": "није постављено", + "Remote addresses for this room:": "Удаљене адресе за ову собу:", + "Addresses": "Адресе", + "The main address for this room is": "Главна адреса ове собе је", + "Local addresses for this room:": "Локална адреса ове собе:", + "This room has no local addresses": "Ова соба нема локалних адреса", + "New address (e.g. #foo:%(localDomain)s)": "Нова адреса (нпр.: #soba:%(localDomain)s)", + "Invalid community ID": "Неисправан ИБ заједнице", + "'%(groupId)s' is not a valid community ID": "„%(groupId)s“ није исправан ИБ заједнице", + "Flair": "Беџ", + "Showing flair for these communities:": "Приказујем беџ за ове заједнице:", + "This room is not showing flair for any communities": "Ова соба не приказује беџеве било које заједнице", + "New community ID (e.g. +foo:%(localDomain)s)": "Нови ИБ заједнице (нпр.: +zajednica:%(localDomain)s)", + "You have enabled URL previews by default.": "Омогућили сте подразумеване претпрегледе адреса.", + "You have disabled URL previews by default.": "Онемогућили сте подразумеване претпрегледе адреса.", + "URL previews are enabled by default for participants in this room.": "Претпрегледи адреса су подразумевано омогућени за све чланове ове собе.", + "URL previews are disabled by default for participants in this room.": "Претпрегледи адреса су подразумевано онемогућени за све чланове ове собе.", + "URL Previews": "Претпрегледи адреса", + "Error decrypting audio": "Грешка при дешифровању звука", + "Error decrypting attachment": "Грешка при дешифровању прилога", + "Decrypt %(text)s": "Дешифруј %(text)s", + "Download %(text)s": "Преузми %(text)s", + "Invalid file%(extra)s": "Неисправна датотека %(extra)s", + "Error decrypting image": "Грешка при дешифровању слике", + "Error decrypting video": "Грешка при дешифровању видеа", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "Корисник %(senderDisplayName)s је променио аватара собе %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "Корисник %(senderDisplayName)s је уклонио аватара собе.", + "%(senderDisplayName)s changed the room avatar to ": "Корисник %(senderDisplayName)s је променио аватара собе у ", + "Copied!": "Копирано!", + "Failed to copy": "Нисам успео да ископирам", + "Add an Integration": "Додај уградњу", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Бићете пребачени на сајт треће стране да бисте се идентификовали са својим налогом зарад коришћења уградње %(integrationsUrl)s. Да ли желите да наставите?", + "Removed or unknown message type": "Уклоњена порука или порука непознатог типа", + "Message removed by %(userId)s": "Поруку је уклонио корисник %(userId)s", + "Message removed": "Порука је уклоњена", + "Robot check is currently unavailable on desktop - please use a web browser": "Роботска провера тренутно није доступна у стоним програмима, користите веб прегледач", + "This Home Server would like to make sure you are not a robot": "Овај кућни сервер жели да се увери да нисте робот", + "Sign in with CAS": "Пријавите се уз CAS", + "Custom Server Options": "Прилагођене опције сервера", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Можете користити прилагођене опције сервера да бисте се пријавили на друге Матрикс сервере тако што ћете навести другачију адресу кућног сервера.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Ово омогућава коришћење ове апликације са постојећим Матрикс налогом на другом кућном серверу.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Можете такође поставити прилагођени сервер идентитета али ово уобичајено спречава радње са другим корисницима које користе мејл адресе.", + "Dismiss": "Одбаци", + "To continue, please enter your password.": "Да бисте наставили, унесите вашу лозинку.", + "Password:": "Лозинка:", + "An email has been sent to %(emailAddress)s": "Мејл је послат на адресу %(emailAddress)s", + "Please check your email to continue registration.": "Проверите ваше сандуче да бисте наставили регистровање.", + "Token incorrect": "Жетон је нетачан", + "A text message has been sent to %(msisdn)s": "Текстуална порука је послата на %(msisdn)s", + "Please enter the code it contains:": "Унесите код који се налази у њој:", + "Start authentication": "Започните идентификацију", + "powered by Matrix": "покреће Матрикс", + "Username on %(hs)s": "Корисничко на %(hs)s", + "User name": "Корисничко име", + "Mobile phone number": "Мобилни број телефона", + "Forgot your password?": "Заборавили сте лозинку?", + "%(serverName)s Matrix ID": "%(serverName)s Матрикс ИБ", + "Sign in with": "Пријавите се преко", + "Email address": "Мејл адреса", + "Sign in": "Пријави се", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Ако не наведете мејл адресу, нећете моћи да опоравите вашу лозинку. Да ли сте сигурни?", + "Email address (optional)": "Мејл адреса (изборно)", + "You are registering with %(SelectedTeamName)s": "Региструјете се уз %(SelectedTeamName)s", + "Mobile phone number (optional)": "Број мобилног телефона (изборно)", + "Register": "Регистровање", + "Default server": "Подразумевани сервер", + "Custom server": "Прилагођени сервер", + "Home server URL": "Адреса кућног сервера", + "Identity server URL": "Адреса сервера идентитета", + "What does this mean?": "Шта ово значи?", + "Remove from community": "Уклони из заједнице", + "Disinvite this user from community?": "Отказати позивницу у заједницу овом кориснику?", + "Remove this user from community?": "Уклонити овог корисника из заједнице?", + "Failed to withdraw invitation": "Нисам успео да повучем позивницу", + "Failed to remove user from community": "Нисам успео да уклоним кориснике из заједнице", + "Filter community members": "Филтрирај чланове заједнице", + "Flair will appear if enabled in room settings": "Беџ ће се приказати ако се омогући у подешавањима собе", + "Flair will not appear": "Беџ се неће приказати", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Да ли сте сигурни да желите да уклоните собу „%(roomName)s“ из %(groupId)s?", + "Removing a room from the community will also remove it from the community page.": "Уклањање собе из заједнице је такође уклања и са странице заједнице.", + "Remove": "Уклони", + "Failed to remove room from community": "Нисам успео да уклоним собу из заједнице", + "Failed to remove '%(roomName)s' from %(groupId)s": "Нисам успео да уклоним собу „%(roomName)s“ из %(groupId)s", + "Something went wrong!": "Нешто је пошло наопако!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Видљивост собе „%(roomName)s“ у %(groupId)s није могла бити измењена.", + "Visibility in Room List": "Видљивост у списку соба", + "Visible to everyone": "Видљиво свима", + "Only visible to community members": "Видљиво само члановима заједнице", + "Filter community rooms": "Филтрирај собе заједнице", + "Something went wrong when trying to get your communities.": "Нешто је пошло наопако приликом добављања ваших заједница.", + "Display your community flair in rooms configured to show it.": "Приказује ваш беџ заједнице у собама које су подешене за то.", + "You're not currently a member of any communities.": "Тренутно нисте члан било које заједнице.", + "Unknown Address": "Непозната адреса", + "NOTE: Apps are not end-to-end encrypted": "НАПОМЕНА: Апликације не користе шифровање с краја на крај", + "Do you want to load widget from URL:": "Да ли желите да учитате виџет са адресе:", + "Allow": "Дозволи", + "Delete Widget": "Обриши виџет", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Брисање виџета уклања виџет за све чланове ове собе. Да ли сте сигурни да желите обрисати овај виџет?", + "Delete widget": "Обриши виџет", + "Revoke widget access": "Опозови приступ виџету", + "Minimize apps": "Умањи апликације", + "Edit": "Уреди", + "Create new room": "Направи нову собу", + "Unblacklist": "Скини са црног списка", + "Blacklist": "Стави на црни списак", + "Unverify": "Означи непровереним", + "Verify...": "Провери...", + "No results": "Нема резултата", + "Delete": "Обриши", + "Communities": "Заједнице", + "Home": "Почетна", + "Integrations Error": "Грешка са уградњама", + "Could not connect to the integration server": "Не могу да се повежем на сервер за уградње", + "Manage Integrations": "Управљај уградњама", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s су ушли %(count)s пута", + "one": "%(severalUsers)s је ушло" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "Корисник %(oneUser)s је ушао %(count)s пута", + "one": "Корисник %(oneUser)s је ушао" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s је изашло %(count)s пута", + "one": "%(severalUsers)s је изашло" + }, + "%(oneUser)sleft %(count)s times": { + "other": "Корисник %(oneUser)s је изашло %(count)s пута", + "one": "Корисник %(oneUser)s је изашао" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s је ушло и изашло %(count)s пута", + "one": "%(severalUsers)s је ушло и изашло" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s је ушао и изашао %(count)s пута", + "one": "%(oneUser)s је ушао и изашао" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s је изашло и поново ушло %(count)s пута", + "one": "%(severalUsers)s је изашло и поново ушло" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s је изашао и поново ушао %(count)s пута", + "one": "%(oneUser)s је изашао и поново ушао" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s је одбило њихове позивнице %(count)s пута", + "one": "%(severalUsers)s је одбило њихове позивнице" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s је одбио позивницу %(count)s пута", + "one": "%(oneUser)s је одбио позивницу" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "Корисницима %(severalUsers)s су позивнице повучене %(count)s пута", + "one": "Корисницима %(severalUsers)s су позивнице повучене" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "Кориснику %(oneUser)s је позивница повучена %(count)s пута", + "one": "Кориснику %(oneUser)s је позивница повучена" + }, + "were invited %(count)s times": { + "other": "су позвани %(count)s пута", + "one": "су позвани" + }, + "was invited %(count)s times": { + "other": "је позван %(count)s пута", + "one": "је позван" + }, + "were banned %(count)s times": { + "other": "забрањен приступ %(count)s пута", + "one": "забрањен приступ" + }, + "was banned %(count)s times": { + "other": "забрањен приступ %(count)s пута", + "one": "забрањен приступ" + }, + "were unbanned %(count)s times": { + "other": "дозвољен приступ %(count)s пута", + "one": "дозвољен приступ" + }, + "was unbanned %(count)s times": { + "other": "дозвољен приступ %(count)s пута", + "one": "дозвољен приступ" + }, + "were kicked %(count)s times": { + "other": "избачен %(count)s пута", + "one": "избачен" + }, + "was kicked %(count)s times": { + "other": "избачен %(count)s пута", + "one": "избачен" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s је променило своје име %(count)s пута", + "one": "%(severalUsers)s је променило своје име" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s је променило своје име %(count)s пута", + "one": "%(oneUser)s је променило своје име" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s је променило свој аватар %(count)s пута", + "one": "%(severalUsers)s је променило свој аватар" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s је променило свој аватар %(count)s пута", + "one": "%(oneUser)s је променило свој аватар" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s и %(count)s других", + "one": "%(items)s и још један" + }, + "%(items)s and %(lastItem)s": "%(items)s и %(lastItem)s", + "collapse": "скупи", + "expand": "рашири", + "Custom of %(powerLevel)s": "Прилагођени ниво %(powerLevel)s", + "Custom level": "Прилагођени ниво", + "Quote": "Цитат", + "Room directory": "Фасцикла са собама", + "Start chat": "Започни ћаскање", + "And %(count)s more...": { + "other": "И %(count)s других..." + }, + "ex. @bob:example.com": "нпр.: @pera:domen.rs", + "Add User": "Додај корисника", + "Matrix ID": "Матрикс ИБ", + "Matrix Room ID": "ИБ Матрикс собе", + "email address": "мејл адреса", + "Try using one of the following valid address types: %(validTypesList)s.": "Пробајте са једним од следећих исправних типова адреса: %(validTypesList)s.", + "You have entered an invalid address.": "Унели сте неисправну адресу.", + "Create a new chat or reuse an existing one": "Започните ново ћаскање или искористите постојеће", + "Start new chat": "Започни ново ћаскање", + "You already have existing direct chats with this user:": "Већ имате постојећа директна ћаскања са овим корисником:", + "Start chatting": "Започни ћаскање", + "Click on the button below to start chatting!": "Кликните на дугме испод да бисте започели ћаскање!", + "Start Chatting": "Започни ћаскање", + "Confirm Removal": "Потврди уклањање", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Да ли сте сигурни да желите уклонити (обрисати) овај догађај? Знајте да брисање назива собе или мењање теме може опозвати измену.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "ИБ-јеви заједнице могу садржати само знакове a-z, 0-9, или '=_-./'", + "Community IDs cannot be empty.": "ИБ-јеви заједнице не могу бити празни.", + "Something went wrong whilst creating your community": "Нешто је пошло наопако приликом стварања ваше заједнице", + "Create Community": "Направи заједницу", + "Community Name": "Назив заједнице", + "Example": "Пример", + "Community ID": "ИБ заједнице", + "example": "пример", + "Create": "Направи", + "Create Room": "Направи собу", + "Room name (optional)": "Назив собе (изборно)", + "Advanced options": "Напредне опције", + "Block users on other matrix homeservers from joining this room": "Блокирај приступ соби корисницима са других матрикс кућних сервера", + "This setting cannot be changed later!": "Ово подешавање се не може променити касније!", + "Unknown error": "Непозната грешка", + "Incorrect password": "Нетачна лозинка", + "Deactivate Account": "Угаси налог", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Да бисте проверили да се овом уређају може веровати, контактирајте власника користећи друге начине (нпр.: лично или преко телефонског позива) и питајте га да ли се кључ који види у корисничким подешавањима подудара са кључем испод:", + "Device name": "Назив уређаја", + "Device key": "Кључ уређаја", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Ако се подудара, притисните дугме за потврду провере испод. Ако се не подудара, неко други прислушкује овај уређај и вероватно желите да притиснете дугме за стављање на црни списак.", + "In future this verification process will be more sophisticated.": "У будућности ће овај поступак провере бити напреднији.", + "Verify device": "Провери уређај", + "I verify that the keys match": "Потврђујем да се кључеви подударају", + "An error has occurred.": "Догодила се грешка.", + "OK": "У реду", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Додали сте нови уређај „%(displayName)s“ који захтева кључеве за шифровање.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Ваш непроверени уређај „%(displayName)s“ захтева кључеве за шифровање.", + "Start verification": "Започни проверу", + "Share without verifying": "Подели без провере", + "Ignore request": "Занемари захтев", + "Loading device info...": "Учитавам податке о уређају...", + "Encryption key request": "Захтев за кључ шифровања", + "Unable to restore session": "Не могу да повратим сесију", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Ако сте претходно користили новије издање Riot-а, ваша сесија може бити некомпатибилна са овим издањем. Затворите овај прозор и вратите се на новије издање.", + "Invalid Email Address": "Неисправна мејл адреса", + "This doesn't appear to be a valid email address": "Изгледа да ово није исправна мејл адреса", + "Verification Pending": "Чека се на проверу", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Проверите ваш мејл и кликните на везу унутар њега. Када ово урадите, кликните на дугме „настави“.", + "Unable to add email address": "Не могу да додам мејл адресу", + "Unable to verify email address.": "Не могу да проверим мејл адресу.", + "This will allow you to reset your password and receive notifications.": "Ово омогућава поновно постављање лозинке и примање обавештења.", + "Skip": "Прескочи", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Корисничка имена могу садржати само слова, бројеве, тачке, повлаке и доње црте.", + "Username not available": "Корисничко име није доступно", + "Username invalid: %(errMessage)s": "Корисничко име није исправно: %(errMessage)s", + "An error occurred: %(error_string)s": "Догодила се грешка: %(error_string)s", + "Username available": "Корисничко име је доступно", + "To get started, please pick a username!": "Да бисте кренули, изаберите корисничко име!", + "This will be your account name on the homeserver, or you can pick a different server.": "Ово ће бити назив вашег налога на кућном серверу, или можете изабрати други сервер.", + "If you already have a Matrix account you can log in instead.": "Ако већ имате Матрикс налог, можете се већ пријавити.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Тренутно убацујете непроверене уређаје на црни списак. Да бисте им слали поруке, морате их проверити.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Предлажемо да прођете кроз поступак провере сваког уређаја да бисте потврдили да они припадају њиховим стварним власницима али можете поново послати поруку без провере, ако то желите.", + "Room contains unknown devices": "Соба садржи непознате уређаје", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "Соба „%(RoomName)s“ садржи уређаје које нисте видели пре.", + "Unknown devices": "Непознати уређаји", + "Private Chat": "Приватно ћаскање", + "Public Chat": "Јавно ћаскање", + "Custom": "Прилагођено", + "Alias (optional)": "Алијас (изборно)", + "Name": "Име", + "Topic": "Тема", + "Make this room private": "Учини ову собу приватном", + "Share message history with new users": "Подели историјат порука са новим корисницима", + "Encrypt room": "Шифруј собу", + "You must register to use this functionality": "Морате се регистровати да бисте користили ову могућност", + "You must join the room to see its files": "Морате приступити соби да бисте видели њене датотеке", + "There are no visible files in this room": "Нема видљивих датотека у овој соби", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML за страницу ваше заједнице

\n

\n Користите дужи опис да бисте упознали нове чланове са заједницом, или поделили\n неке важне везе\n

\n

\n Можете чак користити \"img\" ознаке\n

\n", + "Add rooms to the community summary": "Додај собе у кратак опис заједнице", + "Which rooms would you like to add to this summary?": "Које собе желите додати у овај кратак опис?", + "Add to summary": "Додај у кратак опис", + "Failed to add the following rooms to the summary of %(groupId)s:": "Нисам успео да додам следеће собе у кратак опис групе %(groupId)s:", + "Add a Room": "Додај собу", + "Failed to remove the room from the summary of %(groupId)s": "Нисам успео да уклоним собу из кратког описа групе %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Соба „%(roomName)s“ се не може уклонити из кратког описа.", + "Add users to the community summary": "Додај кориснике у кратак опис заједнице", + "Who would you like to add to this summary?": "Да ли желите да додате у овај кратак опис?", + "Failed to add the following users to the summary of %(groupId)s:": "Нисам успео да додам следеће кориснике у кратак опис групе %(groupId)s:", + "Add a User": "Додај корисника", + "Failed to remove a user from the summary of %(groupId)s": "Нисам успео да уклоним корисника из кратког описа групе %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Корисник „%(displayName)s“ се не може уклонити из кратког описа.", + "Failed to upload image": "Нисам успео да отпремим слику", + "Failed to update community": "Нисам успео да ажурирам заједницу", + "Unable to accept invite": "Не могу да прихватим позивницу", + "Unable to reject invite": "Не могу да одбијем позивницу", + "Leave Community": "Напусти заједницу", + "Leave %(groupName)s?": "Напустити %(groupName)s?", + "Leave": "Напусти", + "Community Settings": "Подешавања заједнице", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Ове собе су приказане члановима заједнице на страници заједнице. Чланови заједнице могу приступити собама кликом на њих.", + "Add rooms to this community": "Додај собе у ову заједницу", + "Featured Rooms:": "Издвојене собе:", + "Featured Users:": "Издвојени корисници:", + "%(inviter)s has invited you to join this community": "Корисник %(inviter)s вас је позвао у ову заједницу", + "You are an administrator of this community": "Ви сте администратор ове заједнице", + "You are a member of this community": "Ви сте члан ове заједнице", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Ваша заједница нема дуги опис, HTML страницу на којој су приказани чланови заједнице.
Кликните овде да бисте отворили подешавања и направили страницу!", + "Long Description (HTML)": "Дуги опис (HTML)", + "Description": "Опис", + "Community %(groupId)s not found": "Заједница %(groupId)s није нађена", + "This Home server does not support communities": "Овај кућни сервер не подржава заједнице", + "Failed to load %(groupId)s": "Нисам успео да учитам %(groupId)s", + "Reject invitation": "Одбиј позивницу", + "Are you sure you want to reject the invitation?": "Да ли сте сигурни да желите одбити позивницу?", + "Failed to reject invitation": "Нисам успео да одбијем позивницу", + "Are you sure you want to leave the room '%(roomName)s'?": "Да ли сте сигурни да желите напустити собу „%(roomName)s“?", + "Failed to leave room": "Нисам успео да напустим собу", + "Signed Out": "Одјављен", + "For security, this session has been signed out. Please sign in again.": "Зарад безбедности, одјављени сте из ове сесије. Пријавите се поново.", + "Old cryptography data detected": "Нађени су стари криптографски подаци", + "The platform you're on": "Платформа коју користите", + "The version of Riot.im": "Riot.im издање", + "Whether or not you're logged in (we don't record your user name)": "Стање ваше пријављености (не памтимо ваше корисничко име)", + "Your language of choice": "Ваш жељени језик", + "Which officially provided instance you are using, if any": "Коју званичну инстанцу користите, ако користите", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Да ли користите режим богатог текста у уређивачу богатог текста", + "Your homeserver's URL": "Адреса вашег кућног сервера", + "Your identity server's URL": "Адреса вашег идентитеског сервера", + "Analytics": "Аналитика", + "The information being sent to us to help make Riot.im better includes:": "У податке које нам шаљете зарад побољшавања Riot.im-а спадају:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Ако страница садржи поверљиве податке (као што је назив собе, корисника или ИБ-ја групе), ти подаци се уклањају пре слања на сервер.", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "Корисник %(oldDisplayName)s је променио приказно име у %(displayName)s.", + "Failed to set direct chat tag": "Нисам успео да поставим ознаку директног ћаскања", + "Failed to remove tag %(tagName)s from room": "Нисам успео да скинем ознаку %(tagName)s са собе", + "Failed to add tag %(tagName)s to room": "Нисам успео да додам ознаку %(tagName)s на собу", + "In reply to ": "Као одговор за ", + "This room is not public. You will not be able to rejoin without an invite.": "Ова соба није јавна. Нећете моћи да поново приступите без позивнице.", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Подаци из старијег издања Riot-а су нађени. Ово ће узроковати лош рад шифровања с краја на крај у старијем издању. Размењене поруке које су шифроване с краја на крај у старијем издању је можда немогуће дешифровати у овом издању. Такође, ово може узроковати неуспешно размењивање порука са овим издањем. Ако доживите проблеме, одјавите се и пријавите се поново. Да бисте задржали историјат поруке, извезите па поново увезите ваше кључеве.", + "Logout": "Одјава", + "Your Communities": "Ваше заједнице", + "Error whilst fetching joined communities": "Грешка приликом добављања списка са приступљеним заједницама", + "Create a new community": "Направи нову заједницу", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Направите заједницу да бисте спојили кориснике и собе! Направите прилагођену почетну страницу да бисте означили ваш кутак у Матрикс универзуму.", + "You have no visible notifications": "Немате видљивих обавештења", + "Scroll to bottom of page": "Превуци на дно странице", + "Message not sent due to unknown devices being present": "Порука се неће послати због присутности непознатих уређаја", + "Show devices, send anyway or cancel.": "Прикажи уређаје, ипак пошаљи или откажи.", + "%(count)s of your messages have not been sent.": { + "other": "Неке ваше поруке нису послате.", + "one": "Ваша порука није послата." + }, + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Пошаљи поново или откажи све сада. Такође можете изабрати појединачне поруке за поновно слање или отказивање.", + "one": "Поново пошаљи поруку или откажи поруку сада." + }, + "Warning": "Упозорење", + "Connectivity to the server has been lost.": "Веза ка серверу је прекинута.", + "Sent messages will be stored until your connection has returned.": "Послате поруке биће сачуване док се веза не успостави поново.", + "%(count)s new messages": { + "other": "%(count)s нових порука", + "one": "%(count)s нова порука" + }, + "Active call": "Текући позив", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Нема других чланова! Да ли желите да позовете друге или да склоните упозорење о празној соби?", + "You seem to be uploading files, are you sure you want to quit?": "Изгледа да отпремате датотеке. Да ли сте сигурни да желите изаћи?", + "You seem to be in a call, are you sure you want to quit?": "Изгледа да сте у позиву. Да ли сте сигурни да желите изаћи?", + "Failed to upload file": "Нисам успео да отпремим датотеку", + "Server may be unavailable, overloaded, or the file too big": "Сервер је можда недоступан, преоптерећен или је датотека сувише велика", + "Search failed": "Претрага је неуспешна", + "Server may be unavailable, overloaded, or search timed out :(": "Сервер је можда недоступан, преоптерећен или је истекло време претраживања :(", + "No more results": "Нема више резултата", + "Unknown room %(roomId)s": "Непозната соба %(roomId)s", + "Room": "Соба", + "Failed to save settings": "Нисам успео да сачувам подешавања", + "Failed to reject invite": "Нисам успео да одбацим позивницу", + "Fill screen": "Испуни екран", + "Click to unmute video": "Кликни да појачаш видео", + "Click to mute video": "Кликни да утишаш видео", + "Click to unmute audio": "Кликни да појачаш звук", + "Click to mute audio": "Кликни да утишаш звук", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Покушао сам да учитам одређену тачку у временској линији ове собе али ви немате овлашћења за преглед наведене поруке.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Покушао сам да учитам одређену тачку у временској линији ове собе али нисам могао да је нађем.", + "Failed to load timeline position": "Нисам могао да учитам позицију у временској линији", + "Uploading %(filename)s and %(count)s others": { + "other": "Отпремам датотеку %(filename)s и још %(count)s других", + "zero": "Отпремам датотеку %(filename)s", + "one": "Отпремам датотеку %(filename)s и %(count)s других датотека" + }, + "Light theme": "Светла тема", + "Dark theme": "Тамна тема", + "Status.im theme": "Status.im тема", + "Can't load user settings": "Не могу да учитам корисничка подешавања", + "Server may be unavailable or overloaded": "Сервер је недоступан или је преоптерећен", + "Sign out": "Одјави ме", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Зарад безбедности, одјава ће обрисати све кључеве за шифровање с краја на крај, на овом прегледачу. Ако желите да дешифрујете историјат вашег ћаскања из будућих Riot сесија, извезите ваше кључеве и чувајте их.", + "Failed to change password. Is your password correct?": "Нисам успео да променим лозинку. Да ли је ваша лозинка тачна?", + "Success": "Успех", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Ваша лозинка је успешно промењена. Нећете добијати пуш обавештења на вашим другим уређајима док се поново не пријавите на њима", + "Remove Contact Information?": "Уклонити контакт податке?", + "Remove %(threePid)s?": "Уклонити %(threePid)s?", + "Unable to remove contact information": "Не могу да уклоним контакт податке", + "Refer a friend to Riot:": "Кажите пријатељу за Riot:", + "Interface Language": "Језик интерфејса", + "User Interface": "Кориснички интерфејс", + "Autocomplete Delay (ms):": "Застој самодопуњавања (мс):", + "": "<није подржано>", + "Import E2E room keys": "Увези E2E кључеве собе", + "Cryptography": "Криптографија", + "Device ID:": "ИБ уређаја:", + "Device key:": "Кључ уређаја:", + "Ignored Users": "Занемарени корисници", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot прикупља анонимне податке о коришћењу да бисмо побољшали апликацију.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Приватност је веома важна нама те не сакупљамо било какве податке личне природе у нашој аналитици.", + "Learn more about how we use analytics.": "Сазнајте више о нашем начину употребе аналитике.", + "Labs": "Лабораторије", + "These are experimental features that may break in unexpected ways": "Ово су пробне могућности које се могу поломити на непредвидљиве начине", + "Use with caution": "Опрезно користите", + "Deactivate my account": "Деактивирај мој налог", + "Clear Cache": "Очисти кеш", + "Clear Cache and Reload": "Очисти кеш и поново учитај", + "Updates": "Ажурирања", + "Check for update": "Провери да ли има ажурирања", + "Reject all %(invitedRooms)s invites": "Одбиј све позивнице за собе %(invitedRooms)s", + "Bulk Options": "Вишеструке опције", + "Desktop specific": "Само за стоне уређаје", + "Start automatically after system login": "Самостално покрећи након пријаве на систем", + "No media permissions": "Нема овлашћења за медије", + "You may need to manually permit Riot to access your microphone/webcam": "Можда ћете морати да ручно доделите овлашћења Riot-у за приступ микрофону/веб камери", + "Missing Media Permissions, click here to request.": "Недостају овлашћења за медије, кликните овде да затражите.", + "No Microphones detected": "Нема уочених микрофона", + "No Webcams detected": "Нема уочених веб камера", + "Default Device": "Подразумевани уређај", + "Microphone": "Микрофон", + "Camera": "Камера", + "VoIP": "VoIP", + "Email": "Мејл", + "Add email address": "Додај мејл адресу", + "Notifications": "Обавештења", + "Profile": "Профил", + "Display name": "Приказно име", + "Account": "Налог", + "To return to your account in future you need to set a password": "Да бисте се вратили у ваш налог у будућности, морате поставити лозинку", + "Logged in as:": "Пријављени као:", + "Access Token:": "Приступни жетон:", + "click to reveal": "кликни за приказ", + "Homeserver is": "Кућни сервер је", + "Identity Server is": "Идентитетски сервер је", + "matrix-react-sdk version:": "matrix-react-sdk издање:", + "riot-web version:": "riot-web издање:", + "olm version:": "olm издање:", + "Failed to send email": "Нисам успео да пошаљем мејл", + "The email address linked to your account must be entered.": "Морате унети мејл адресу која је везана за ваш налог.", + "A new password must be entered.": "Морате унети нову лозинку.", + "New passwords must match each other.": "Нове лозинке се морају подударати.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Опоравак ваше лозинке ће тренутно поново поставити кључеве за шифровање с краја на крај, на свим вашим уређајима. Ово ће учинити шифровани историјат ћаскања нечитљивим осим ако прво не извезете ваше кључеве собе па их онда увезете касније. Ово ће бити побољшано у будућности.", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Мејл је послат на адресу %(emailAddress)s. Када будете испратили везу у њему, кликните испод.", + "I have verified my email address": "Потврдио сам своју мејл адресу", + "Your password has been reset": "Ваша лозинка је опорављена", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Одјављени сте са свих ваших уређаја и више нећете примати пуш обавештења. Да бисте поново омогућили обавештења, одјавите се и пријавите поново на сваком вашем уређају", + "Return to login screen": "Врати ме на екран за пријаву", + "To reset your password, enter the email address linked to your account": "Да бисте опоравили вашу лозинку, унесите мејл адресу повезану са вашим налогом", + "New password": "Нова лозинка", + "Confirm your new password": "Потврдите вашу нову лозинку", + "Send Reset Email": "Пошаљи мејл за опоравак", + "Create an account": "Направи налог", + "This Home Server does not support login using email address.": "Овај кућни сервер не подржава пријављивање преко мејл адресе.", + "Incorrect username and/or password.": "Нетачно корисничко име и/или лозинка.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Знајте да се пријављујете на сервер %(hs)s, не на matrix.org.", + "Guest access is disabled on this Home Server.": "Гостински приступ је онемогућен на овом кућном серверу.", + "The phone number entered looks invalid": "Унети број телефона не изгледа исправно", + "This homeserver doesn't offer any login flows which are supported by this client.": "Овај кућни сервер не пружа било који начин пријаве унутар овог клијента.", + "Error: Problem communicating with the given homeserver.": "Грешка: проблем у комуницирању са датим кућним сервером.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Не могу да се повежем на кућни сервер преко HTTP-а када се користи HTTPS адреса у траци вашег прегледача. Или користите HTTPS или омогућите небезбедне скрипте.", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Не могу да се повежем на кућни сервер. Проверите вашу интернет везу, постарајте се да верујете SSL сертификату кућног сервера и да проширење прегледача не блокира захтеве.", + "Sign in to get started": "Пријави се да почнеш", + "Failed to fetch avatar URL": "Нисам успео да добавим адресу аватара", + "Set a display name:": "Постави приказно име:", + "Upload an avatar:": "Отпреми аватар:", + "This server does not support authentication with a phone number.": "Овај сервер не подржава идентификацију преко броја мобилног.", + "Missing password.": "Недостаје лозинка.", + "Passwords don't match.": "Лозинке се не подударају.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Лозинка је сувише кратка (најмање %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Мејл адреса не изгледа исправно.", + "This doesn't look like a valid phone number.": "Број телефона не изгледа исправно.", + "You need to enter a user name.": "Морате унети корисничко име.", + "An unknown error occurred.": "Непозната грешка се догодила.", + "I already have an account": "Већ имам налог", + "Displays action": "Приказује радњу", + "Bans user with given id": "Забрањује приступ кориснику са датим иб-јем", + "Unbans user with given id": "Скида забрану приступа кориснику са датим иб-јем", + "Define the power level of a user": "Дефинише ниво моћи корисника", + "Deops user with given id": "Укида админа за корисника са датим иб-јем", + "Invites user with given id to current room": "Позива корисника са датим иб-јем у тренутну собу", + "Joins room with given alias": "Приступа соби са датим алијасем", + "Sets the room topic": "Поставља тему собе", + "Kicks user with given id": "Избацује корисника са датим иб-јем", + "Changes your display nickname": "Мења ваш приказни надимак", + "Searches DuckDuckGo for results": "Претражује DuckDuckGo за резултате", + "Changes colour scheme of current room": "Мења шему боје у тренутној соби", + "Verifies a user, device, and pubkey tuple": "Проверава корисника, уређај и торку јавног кључа", + "Ignores a user, hiding their messages from you": "Занемарује корисника и тиме скрива њихове поруке од вас", + "Stops ignoring a user, showing their messages going forward": "Престаје са занемаривањем корисника и тиме приказује њихове поруке одсад", + "Commands": "Наредбе", + "Results from DuckDuckGo": "Резултати са DuckDuckGo-а", + "Emoji": "Емоџи", + "Notify the whole room": "Обавести све у соби", + "Room Notification": "Собно обавештење", + "Users": "Корисници", + "unknown device": "непознати уређај", + "NOT verified": "НИЈЕ проверен", + "verified": "проверен", + "Verification": "Провера", + "Ed25519 fingerprint": "Ed25519 отисак прста", + "User ID": "Кориснички ИБ", + "Curve25519 identity key": "Curve25519 идентитески кључ", + "none": "ништа", + "Claimed Ed25519 fingerprint key": "Наводни Ed25519 кључ отиска прста", + "Algorithm": "Алгоритам", + "unencrypted": "нешифрован", + "Decryption error": "Грешка дешифровања", + "Session ID": "ИБ сесије", + "End-to-end encryption information": "Подаци о шифровању с краја на крај", + "Event information": "Подаци о догађају", + "Sender device information": "Подаци о уређају пошиљаоца", + "Passphrases must match": "Фразе се морају подударати", + "Passphrase must not be empty": "Фразе не смеју бити празне", + "Export room keys": "Извези кључеве собе", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Ова радња вам омогућава да извезете кључеве за примљене поруке у шифрованим собама у локалну датотеку. Онда ћете моћи да увезете датотеку у други Матрикс клијент, у будућности, тако да ће тај клијент моћи да дешифрује ове поруке.", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Извезена датотека ће дозволити свима који је могу прочитати да дешифрују било које шифроване поруке које можете видети те бисте требали да будете пажљиви и да је осигурате. Да бисмо вам помогли са тиме, требало би да унесете фразу испод са којом ће извезени подаци бити шифровани. Поновни увоз података ће бити могућ само уз коришћење исте фразе.", + "Enter passphrase": "Унеси фразу", + "Confirm passphrase": "Потврди фразу", + "Export": "Извези", + "Import room keys": "Увези кључеве собе", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Ова радња вам омогућава да увезете кључеве за шифровање које сте претходно извезли из другог Матрикс клијента. Након тога ћете моћи да дешифрујете било коју поруку коју је други клијент могао да дешифрује.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Извезена датотека ће бити заштићена са фразом. Требало би да унесете фразу овде, да бисте дешифровали датотеку.", + "File to import": "Датотека за увоз", + "Import": "Увези", + "Disable Community Filter Panel": "Онемогући површ за филтрирање заједнице", + "Did you know: you can use communities to filter your Riot.im experience!": "Да ли сте знали: можете користити заједнице за филтрирање вашег Riot.im искуства!", + "Clear filter": "Очисти филтер", + "Your key share request has been sent - please check your other devices for key share requests.": "Ваш захтев за дељење кључа је послат. Проверите да ли има захтева за дељење кључа на осталим вашим уређајима.", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Захтеви за дељење кључа се самостално шаљу на остале ваше уређаје. Ако сте одбили или одбацили захтев за дељење кључа на неком другом вашем уређају, кликните овде да бисте затражили поново кључеве за ову сесију.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Ако остали ваши уређаји немају кључ за ову поруку, нећете моћи да је дешифрујете.", + "Key request sent.": "Захтев за дељење кључа послат.", + "Re-request encryption keys from your other devices.": "Поново затражи кључеве за шифровање са осталих ваших уређаја.", + "%(user)s is a %(userRole)s": "Корисник %(user)s је у улози %(userRole)s", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "Да бисте поставили филтер, повуците аватар заједнице на површ филтрирања скроз на леву страну екрана. Можете кликнути на аватар у површи филтрирања било када да бисте видели само собе и особе везане за ту заједницу.", + "Fetching third party location failed": "Добављање локације треће стране није успело", + "A new version of Riot is available.": "Ново издање RIot-а је доступно.", + "Couldn't load home page": "Нисам могао да учитам почетну страну", + "Send Account Data": "Пошаљи податке налога", + "All notifications are currently disabled for all targets.": "Сва обавештења су тренутно онемогућена за све циљеве.", + "Uploading report": "Отпремам извештај", + "Sunday": "Недеља", + "Notification targets": "Циљеви обавештења", + "Today": "Данас", + "Files": "Датотеке", + "You are not receiving desktop notifications": "Не примате стона обавештења", + "Friday": "Петак", + "Update": "Ажурирај", + "Unable to fetch notification target list": "Не могу да досегнем списак циљева за обавештења", + "Add an email address above to configure email notifications": "Додајте мејл адресу изнад да бисте подесили мејл обавештења", + "Expand panel": "Прошири површ", + "On": "Укључено", + "%(count)s Members": { + "other": "%(count)s чланова", + "one": "%(count)s члан" + }, + "Filter room names": "Филтрирај називе соба", + "Changelog": "Записник о изменама", + "Waiting for response from server": "Чекам на одговор са сервера", + "Uploaded on %(date)s by %(user)s": "Отпремљено датума %(date)s од корисника %(user)s", + "Send Custom Event": "Пошаљи прилагођени догађај", + "Off": "Искључено", + "Advanced notification settings": "Напредна подешавања обавештења", + "delete the alias.": "обриши алијас.", + "To return to your account in future you need to set a password": "Да бисте се вратили на ваш налог у будућности, морате поставити лозинку", + "Forget": "Заборави", + "Hide panel": "Сакриј површ", + "You cannot delete this image. (%(code)s)": "Не можете обрисати ову слику. (%(code)s)", + "Cancel Sending": "Откажи слање", + "This Room": "Ова соба", + "The Home Server may be too old to support third party networks": "Кућни сервер је можда сувише застарео да би подржао мреже трећих страна", + "Room not found": "Соба није пронађена", + "Downloading update...": "Преузимам ажурирање...", + "Messages in one-to-one chats": "Поруке у један-на-један ћаскањима", + "Unavailable": "Недоступан", + "View Decrypted Source": "Погледај дешифровани извор", + "Failed to update keywords": "Нисам успео да ажурирам кључне речи", + "remove %(name)s from the directory.": "уклони %(name)s из фасцикле.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Обавештења за следеће кључне речи прате правила која не могу бити приказана овде:", + "Safari and Opera work too.": "Сафари и Опера такође раде.", + "Please set a password!": "Поставите лозинку!", + "You have successfully set a password!": "Успешно сте поставили лозинку!", + "Explore Room State": "Истражи стање собе", + "Source URL": "Адреса извора", + "Messages sent by bot": "Поруке послате од бота", + "Filter results": "Филтрирај резултате", + "Members": "Чланови", + "No update available.": "Нема нових ажурирања.", + "Noisy": "Бучно", + "Failed to get protocol list from Home Server": "Нисам успео да добијем списак протокола од кућног сервера", + "Collecting app version information": "Прикупљам податке о издању апликације", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Обрисати алијас собе %(alias)s и уклонити %(name)s из фасцикле?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Ово ће вам омогућити да се вратите у ваш налог након што се одјавите и пријавите, на другим уређајима.", + "Keywords": "Кључне речи", + "Enable notifications for this account": "Омогући обавештења за овај налог", + "Directory": "Фасцикла", + "Invite to this community": "Позови у ову заједницу", + "Failed to get public room list": "Нисам успео да добавим списак јавних соба", + "Search…": "Претрага…", + "Messages containing keywords": "Поруке које садрже кључне речи", + "Error saving email notification preferences": "Грешка при чувању поставки мејл обавештења", + "Tuesday": "Уторак", + "Enter keywords separated by a comma:": "Унесите кључне речи одвојене зарезима:", + "Forward Message": "Проследи поруку", + "Remove %(name)s from the directory?": "Уклонити %(name)s из фасцикле?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot користи напредне могућности прегледача од којих неке нису доступне или су у пробној фази, у вашем прегледачу.", + "Event sent!": "Догађај је послат!", + "Explore Account Data": "Истражи податке налога", + "All messages (noisy)": "Све поруке (гласно)", + "Saturday": "Субота", + "Remember, you can always set an email address in user settings if you change your mind.": "Запамтите, увек можете поставити мејл адресу у корисничким подешавањима, уколико се предомислите.", + "Direct Chat": "Директно ћаскање", + "The server may be unavailable or overloaded": "Сервер је можда недоступан или преоптерећен", + "Reject": "Одбаци", + "Failed to set Direct Message status of room": "Нисам успео да подесим стање директне поруке собе", + "Monday": "Понедељак", + "Remove from Directory": "Уклони из фасцикле", + "Enable them now": "Омогућите их сада", + "Messages containing my user name": "Поруке које садрже моје корисничко име", + "Toolbox": "Алатница", + "Collecting logs": "Прикупљам записнике", + "more": "више", + "Search for a room": "Потражи собу", + "You must specify an event type!": "Морате навести врсту догађаја!", + "(HTTP status %(httpStatus)s)": "(HTTP стање %(httpStatus)s)", + "All Rooms": "Све собе", + "State Key": "Кључ стања", + "Please install Chrome or Firefox for the best experience.": "Инсталирајте Хром (Chrome) или Фајерфокс (Firefox) за најбољи угођај.", + "Wednesday": "Среда", + "Send logs": "Пошаљи записнике", + "All messages": "Све поруке", + "Call invitation": "Позивница за позив", + "Messages containing my display name": "Поруке које садрже моје приказно име", + "You have successfully set a password and an email address!": "Успешно сте поставили лозинку и мејл адресу!", + "Failed to send custom event.": "Нисам успео да пошаљем прилагођени догађај.", + "What's new?": "Шта је ново?", + "Notify me for anything else": "Обавести ме за било шта друго", + "When I'm invited to a room": "Када сам позван у собу", + "Can't update user notification settings": "Не могу да ажурирам корисничка подешавања обавештења", + "Notify for all other messages/rooms": "Обавести за све друге поруке и собе", + "Unable to look up room ID from server": "Не могу да погледам ИБ собе на серверу", + "Couldn't find a matching Matrix room": "Не могу да нађем одговарајућу Матрикс собу", + "Invite to this room": "Позови у ову собу", + "You cannot delete this message. (%(code)s)": "Не можете обрисати ову поруку. (%(code)s)", + "Thursday": "Четвртак", + "I understand the risks and wish to continue": "Разумем опасност и желим да наставим", + "Back": "Назад", + "Reply": "Одговори", + "Show message in desktop notification": "Прикажи поруку у стоном обавештењу", + "Unhide Preview": "Откриј преглед", + "Unable to join network": "Не могу да приступим мрежи", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Можда сте их подесили у неком другом клијенту а не Riot-у. Не можете их преправљати у Riot-у али се и даље примењују", + "Sorry, your browser is not able to run Riot.": "Нажалост, ваш прегледач не може да покреће Riot.", + "Messages in group chats": "Поруке у групним ћаскањима", + "Yesterday": "Јуче", + "Error encountered (%(errorDetail)s).": "Догодила се грешка (%(errorDetail)s).", + "Event Type": "Врста догађаја", + "Low Priority": "Најмања важност", + "What's New": "Шта је ново", + "Set Password": "Постави лозинку", + "An error occurred whilst saving your email notification preferences.": "Догодила се грешка при чувању ваших поставки мејл обавештења.", + "Enable audible notifications in web client": "Омогући звучна обавештења у веб клијенту", + "Resend": "Поново пошаљи", + "Riot does not know how to join a room on this network": "Riot не зна како да приступи соби на овој мрежи", + "Mentions only": "Само спомињања", + "You can now return to your account after signing out, and sign in on other devices.": "Можете се вратити у ваш налог након што се одјавите и пријавите поново, на другим уређајима.", + "Enable desktop notifications": "Омогући стона обавештења", + "Enable email notifications": "Омогући мејл обавештења", + "Login": "Пријављивање", + "Download this file": "Преузми ову датотеку", + "Pin Message": "Закачи поруку", + "Failed to change settings": "Нисам успео да променим подешавања", + "View Community": "Погледај заједницу", + "Developer Tools": "Програмерске алатке", + "View Source": "Погледај извор", + "Event Content": "Садржај догађаја", + "Thank you!": "Хвала вам!", + "#example": "#пример", + "Collapse panel": "Скупи површ", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Са вашим тренутним прегледачем изглед и угођај ове апликације може бити скроз неправилан и неке могућности можда неће радити. Уколико желите да ипак пробате, можете наставити али ћете бити без подршке за било које проблеме на које налетите!", + "Checking for an update...": "Проверавам ажурирања...", + "There are advanced notifications which are not shown here": "Постоје напредна обавештења која нису приказана овде", + "Your User Agent": "Ваш кориснички агент", + "Every page you use in the app": "Свака страница коју будете користили у апликацији", + "e.g. ": "Нпр.: ", + "Your device resolution": "Резолуција вашег уређаја", + "Popout widget": "Виџет за искакање", + "Missing roomId.": "Недостаје roomId.", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Видео корисник %(displayName)s (%(userName)s) у %(dateTime)s", + "You don't currently have any stickerpacks enabled": "Тренутно немате омогућено било које паковање са налепницама", + "Add a stickerpack": "Додај паковање са налепницама", + "Stickerpack": "Паковање са налепницама", + "Hide Stickers": "Сакриј налепнице", + "Show Stickers": "Прикажи налепнице", + "Code": "Код", + "Picture": "Слика", + "Preparing to send logs": "Припремам се за слање записника", + "Logs sent": "Записници су послати", + "Failed to send logs: ": "Нисам успео да пошаљем записнике: ", + "Submit debug logs": "Пошаљи записнике за поправљање грешака", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Записници за поправљање грешака садрже податке о коришћењу апликације међу којима се налази ваше корисничко име, ИБ-јеви или алијаси посећених соба или група и корисничка имена других корисника. Не садрже саме поруке.", + "GitHub issue link:": "Веза до проблема на Гитхабу:", + "Notes:": "Напомене:", + "Unable to join community": "Не могу да приступим заједници", + "Unable to leave community": "Не могу да напустим заједницу", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Измене које сте начинили у имену ваше заједнице и на аватару можда неће бити видљиве другим корисницима највише 30 минута.", + "Join this community": "Приступи овој заједници", + "Leave this community": "Напусти ову заједницу", + "Who can join this community?": "Ко може приступити овој заједници?", + "Everyone": "Свако", + "Debug Logs Submission": "Слање извештаја за поправљање грешака", + "Opens the Developer Tools dialog": "Отвори прозор програмерских алатки", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Ако сте пријавили грешку преко Гитхаба, извештаји за поправљање грешака нам могу помоћи да лакше нађемо узрок. Извештаји садрже податке о коришћењу апликације и међу њих спада ваше корисничко име, ИБ-јеви или алијаси посећених соба или група и корисничка имена других корисника. Не садрже саме поруке.", + "Always show encryption icons": "Увек прикажи иконице шифровања", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Грешке у Riot-у се прате на Гитхабу: направите Гитхаб проблем.", + "Log out and remove encryption keys?": "Желите да се одјавите и уклоните кључеве за шифровање?", + "Send Logs": "Пошаљи записнике", + "Clear Storage and Sign Out": "Очисти складиште и одјави ме", + "Refresh": "Освежи", + "We encountered an error trying to restore your previous session.": "Наишли смо на грешку приликом повраћаја ваше претходне сесије.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Чишћење складишта вашег прегледача може решити проблем али ће вас то одјавити и учинити шифровани историјат ћаскања нечитљивим.", + "e.g. %(exampleValue)s": "нпр.: %(exampleValue)s", + "Reload widget": "Поново учитај виџет", + "Send analytics data": "Пошаљи аналитичке податке", + "Enable widget screenshots on supported widgets": "Омогући снимке екрана виџета у подржаним виџетима", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "У овом тренутку није могуће одговорити са датотеком тако да ово неће бити послато у облику одговора.", + "Unable to reply": "Не могу да одговорим", + "At this time it is not possible to reply with an emote.": "У овом тренутку није могуће одговорити са емотиконом.", + "To notify everyone in the room, you must be a": "Да бисте обавестили све у соби, морате бити", + "Muted Users": "Утишани корисници", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Помозите побољшавање Riot.im програма тако што ћете послати анонимне податке о коришћењу. Ово ће захтевати коришћење колачића (погледајте нашу политику о колачићима).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Помозите побољшавање Riot.im програма тако што ћете послати анонимне податке о коришћењу. Ово ће захтевати коришћење колачића.", + "Yes, I want to help!": "Да, желим помоћи!", + "Warning: This widget might use cookies.": "Упозорење: овај виџет ће можда користити колачиће.", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Не могу да учитам догађај на који је послат одговор, или не постоји или немате овлашћење да га погледате.", + "Failed to indicate account erasure": "Неуспех при наговештавању да је налог обрисан", + "To continue, please enter your password:": "Да бисте наставили, унесите вашу лозинку:", + "password": "лозинка", + "Collapse Reply Thread": "Скупи нит са одговорима", + "Can't leave Server Notices room": "Не могу да напустим собу са напоменама сервера", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Ова соба се користи за важне поруке са Кућног сервера, не можете изаћи из ове собе.", + "Terms and Conditions": "Услови коришћења", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "Да бисте наставили са коришћењем Кућног сервера %(homeserverDomain)s морате погледати и пристати на наше услове коришћења.", + "Review terms and conditions": "Погледај услове коришћења", + "Try the app first": "Пробајте прво апликацију", + "Jitsi Conference Calling": "Jitsi конференцијско позивање", + "Encrypting": "Шифрујем", + "Encrypted, not sent": "Шифровано, непослато", + "Share Link to User": "Подели везу са корисником", + "Share room": "Подели собу", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Ово ће учинити ваш налог трајно неупотребљивим. Нећете моћи да се пријавите и нико се неће моћи поново регистровати са истим корисничким ИБ-јем. Ово ће учинити да ваш налог напусти све собе у којима учествује и уклониће појединости вашег налога са идентитетског сервера. Ова радња се не може опозвати.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Деактивирањем вашег налога се ваше поруке неће заборавити. Ако желите да заборавимо ваше поруке, штиклирајте кућицу испод.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Видљивост порука у Матриксу је слична мејловима. Оне поруке које заборавимо нећемо делити са новим и нерегистрованим корисницима али постојећи корисници који су имали приступ овим порукама ће и даље моћи да виде своју копију.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Заборавите све моје поруке које сам послао када се мој налог деактивира (Упозорење: овим ће будући корисници видети непотпуне разговоре)", + "Share Room": "Подели собу", + "Link to most recent message": "Веза ка најновијој поруци", + "Share User": "Подели корисника", + "Share Community": "Подели заједницу", + "Share Room Message": "Подели поруку у соби", + "Link to selected message": "Веза ка изабраној поруци", + "COPY": "КОПИРАЈ", + "Share Message": "Подели поруку", + "No Audio Outputs detected": "Нема уочених излаза звука", + "Audio Output": "Излаз звука", + "A conference call could not be started because the intgrations server is not available": "Конференцијски позив не може почети зато што интеграцијски сервер није доступан", + "Call in Progress": "Позив је у току", + "A call is currently being placed!": "Успостављамо позив!", + "A call is already in progress!": "Позив је у току!", + "Permission Required": "Неопходна је дозвола", + "You do not have permission to start a conference call in this room": "Немате дозволу да започињете конференцијски позив у овој соби", + "Show empty room list headings": "Прикажи листу наслова празних соба", + "This event could not be displayed": "Овај догађај не може бити приказан", + "Demote yourself?": "Снизите чин себи?", + "Demote": "Снизите чин", + "deleted": "обрисано", + "underlined": "подвучено", + "You have no historical rooms": "Ваша историја соба је празна", + "Riot is not supported on mobile web. Install the app?": "RIot не ради на мобилном вебу. Инсталирати апликацију?", + "Riot Desktop on %(platformName)s": "Riot стони програм за %(platformName)s", + "Unknown device": "Непознати уређај", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s преко прегледача %(browserName)s на систему %(osName)s", + "You need to be using HTTPS to place a screen-sharing call.": "Морате користити HTTPS да бисте започели позив са дељењем екрана.", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Можете користити опције прилагођеног сервера за пријаву у друге Матрикс сервере навођењем другачије адресе кућног сервера.
Ово вам омогућава да користите Riot са постојећим Матрикс налогомна другом кућном серверу.

Такође, можете поставити прилагођени идентитески сервер али нећете моћи да позивате кориснике по мејл адреси а ни други вас.", + "Welcome to Riot.im": "Добродошли у Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Децентрализовано, шифровано ћаскање и сарадња коју покреће [matrix]", + "Search the room directory": "Претражи фасциклу са собама", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Много соба већ постоји у Матриксу, неке су повезане на постојеће мреже (Slack, IRC, Gitter итд.) а неке независне. Погледајте фасциклу!", + "Chat with Riot Bot": "Ћаскајте са Riot ботом", + "Get started with some tips from Riot Bot!": "Крените уз пар савета од Riot бота!", + "General discussion about Matrix and Riot": "Општи разговори о Матриксу и Riot-у", + "Discussion of all things Matrix!": "Разговори о свим Матрикс стварима!", + "Riot/Web & Desktop chat": "Riot/веб и стоно ћаскање", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS и matrix-ios-sdk ћаскање", + "Riot/Android & matrix-android-sdk chat": "Riot/Андроид и matrix-android-sdk ћаскање", + "Matrix technical discussions": "Технички разговори о Матриксу", + "Running Matrix services": "Покренуте Матрикс услуге", + "Community-run support for Synapse": "Подршка од стране заједнице за Synapse", + "Admin support for Dendrite": "Администраторска подршка за Dendrite", + "Announcements about Synapse releases": "Објаве поводом нових Synapse издања", + "Support for those using and running matrix-appservice-irc": "Подршка за оне који користе и одржавају matrix-appservice-irc", + "Building services on Matrix": "Стварање услуга уз помоћ Матрикса", + "Support for those using the Matrix spec": "Подршка за оне који користе Матрикс спецификацију", + "Design and implementation of E2E in Matrix": "Дизајн и имплементација E2E у Матриксу", + "Implementing VR services with Matrix": "Израда услуга за ВР уз Матрикс", + "Implementing VoIP services with Matrix": "Израда VoIP услуга уз Матрикс", + "Discussion of the Identity Service API": "Разговори о API-ју идентитетског сервиса", + "Support for those using, running and writing other bridges": "Подршка за оне који користе, одржавају и пишу друге мостове", + "Contributing code to Matrix and Riot": "Додавање кода у Матрикс и Riot", + "Dev chat for the Riot/Web dev team": "Програмерско ћаскање за Riot/веб програмерски тим", + "Dev chat for the Dendrite dev team": "Програмерско ћаскање за Dendrite програмерски тим", + "Co-ordination for Riot translators": "Координација за Riot преводиоце" +} \ No newline at end of file diff --git a/riot/i18n/sv.json b/riot/i18n/sv.json new file mode 100644 index 0000000..926bfef --- /dev/null +++ b/riot/i18n/sv.json @@ -0,0 +1,1375 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "Ett SMS har skickats till +%(msisdn)s. Vänligen ange verifieringskoden ur meddelandet", + "%(targetName)s accepted an invitation.": "%(targetName)s accepterade en inbjudan.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s accepterade inbjudan för %(displayName)s.", + "Account": "Konto", + "Add a topic": "Lägg till ett ämne", + "Add email address": "Lägg till en epostadress", + "Add phone number": "Lägg till ett telefonnummer", + "Admin": "Administratör", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Saknar mediebehörigheter, klicka för att begära.", + "No Microphones detected": "Ingen mikrofon hittades", + "No Webcams detected": "Ingen webbkamera hittades", + "No media permissions": "Inga mediebehörigheter", + "You may need to manually permit Riot to access your microphone/webcam": "Du måste manuellt tillåta Riot att komma åt din mikrofon/kamera", + "Default Device": "Standardenhet", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Advanced": "Avancerat", + "Algorithm": "Algoritm", + "Always show message timestamps": "Visa alltid tidsstämpel för meddelanden", + "Hide removed messages": "Dölj borttagna meddelanden", + "Authentication": "Autentisering", + "%(items)s and %(lastItem)s": "%(items)s och %(lastItem)s", + "and %(count)s others...": { + "other": "och %(count)s andra...", + "one": "och en annan..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s och %(lastPerson)s skriver", + "A new password must be entered.": "Ett nytt lösenord måste anges.", + "%(senderName)s answered the call.": "%(senderName)s svarade på samtalet.", + "Anyone who knows the room's link, including guests": "Alla som har rummets adress, inklusive gäster", + "Anyone": "Vem som helst", + "Anyone who knows the room's link, apart from guests": "Alla som har rummets adress, förutom gäster", + "An error has occurred.": "Ett fel har inträffat.", + "Are you sure?": "Är du säker?", + "Are you sure you want to leave the room '%(roomName)s'?": "Vill du lämna rummet '%(roomName)s'?", + "Are you sure you want to upload the following files?": "Vill du ladda upp följande filer?", + "Autoplay GIFs and videos": "Spela automatiskt upp GIFar och videor", + "Are you sure you want to reject the invitation?": "Är du säker på att du vill avböja inbjudan?", + "Bulk Options": "Volymhandlingar", + "Blacklisted": "Svartlistad", + "%(senderName)s banned %(targetName)s.": "%(senderName)s bannade %(targetName)s.", + "Banned users": "Bannade användare", + "Bans user with given id": "Bannar användare med givet id", + "Ban": "Banna", + "Attachment": "Bilaga", + "Call Timeout": "Samtalstimeout", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Det går inte att ansluta till en hemserver via HTTP då adressen i webbläsaren är HTTPS. Använd HTTPS, eller sätt på osäkra skript.", + "Can't load user settings": "Det gick inte att ladda användarinställningar", + "Change Password": "Byt lösenord", + "%(senderName)s changed their profile picture.": "%(senderName)s bytte sin profilbild.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s bytte rummets namn till %(roomName)s.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s tog bort rummets namn.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s bytte rummets ämne till \"%(topic)s\".", + "Changes to who can read history will only apply to future messages in this room": "Ändringar till vem som kan läsa meddelandehistorik tillämpas endast till framtida meddelanden i det här rummet", + "Changes your display nickname": "Ändrar ditt visningsnamn", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Om du byter lösenord kommer för tillfället alla krypteringsnycklar på alla enheter att nollställas, vilket gör all krypterad meddelandehistorik omöjligt att läsa, om du inte först exporterar rumsnycklarna och sedan importerar dem efteråt. I framtiden kommer det här att förbättras.", + "Claimed Ed25519 fingerprint key": "Påstådd Ed25519-fingeravtrycksnyckel", + "Clear Cache and Reload": "Töm cache och ladda om", + "Clear Cache": "Töm cache", + "Click here to fix": "Klicka här för att fixa", + "Click to mute audio": "Klicka för att tysta ljud", + "Click to mute video": "Klicka för att stänga av video", + "click to reveal": "klicka för att avslöja", + "Click to unmute video": "Klicka för att sätta på video", + "Click to unmute audio": "Klicka för att sätta på ljud", + "Command error": "Kommandofel", + "Commands": "Kommandon", + "Conference call failed.": "Konferenssamtal misslyckades.", + "Conference calling is in development and may not be reliable.": "Konferenssamtal är under utveckling och är inte nödvändigtvis pålitliga.", + "Conference calls are not supported in encrypted rooms": "Konferenssamtal stöds inte i krypterade rum", + "Conference calls are not supported in this client": "Konferenssamtal stöds inte i den här klienten", + "Confirm password": "Bekräfta lösenord", + "Confirm your new password": "Bekräfta ditt nya lösenord", + "Continue": "Fortsätt", + "Could not connect to the integration server": "Det gick inte att ansluta till integrationsservern", + "Create an account": "Skapa ett konto", + "Create Room": "Skapa rum", + "Cryptography": "Kryptografi", + "Current password": "Nuvarande lösenord", + "Curve25519 identity key": "Curve25519 -identitetsnyckel", + "Custom level": "Anpassad nivå", + "/ddg is not a command": "/ddg är inte ett kommando", + "Deactivate Account": "Inaktivera konto", + "Deactivate my account": "Deaktivera mitt konto", + "Decrypt %(text)s": "Dekryptera %(text)s", + "Decryption error": "Dekrypteringsfel", + "Delete": "Radera", + "Deops user with given id": "Degraderar användare med givet id", + "Default": "Standard", + "Device already verified!": "Enheten är redan verifierad!", + "Device ID": "Enhets-ID", + "Device ID:": "Enhets-ID:", + "device id: ": "enhets-id: ", + "Device key:": "Enhetsnyckel:", + "Devices": "Enheter", + "Devices will not yet be able to decrypt history from before they joined the room": "Enheter kan inte ännu dekryptera meddelandehistorik från före de gick med i rummet", + "Direct chats": "Direkt-chattar", + "Disinvite": "Häv inbjudan", + "Display name": "Visningsnamn", + "Displays action": "Visar åtgärd", + "Don't send typing notifications": "Skicka inte \"skriver\"-status", + "Download %(text)s": "Ladda ner %(text)s", + "Drop here to tag %(section)s": "Dra hit för att tagga %(section)s", + "Ed25519 fingerprint": "Ed25519-fingeravtryck", + "Email": "Epost", + "Email address": "Epostadress", + "Email address (optional)": "Epostadress (valfri)", + "Email, name or matrix ID": "Epostadress, namn, eller Matrix-ID", + "Emoji": "Emoji", + "Enable encryption": "Aktivera kryptering", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Krypterade meddelanden syns inte på klienter som inte ännu stöder kryptering", + "Encrypted room": "Krypterat rum", + "%(senderName)s ended the call.": "%(senderName)s avslutade samtalet.", + "End-to-end encryption information": "Krypteringsinformation", + "End-to-end encryption is in beta and may not be reliable": "Kryptering är i beta och är inte nödvändigtvis pålitligt", + "Enter Code": "Skriv in kod", + "Error": "Fel", + "Error decrypting attachment": "Det gick inte att dekryptera bilagan", + "Event information": "Händelseinformation", + "Existing Call": "Existerande samtal", + "Export": "Exportera", + "Export E2E room keys": "Exportera krypteringsrumsnycklar", + "Failed to ban user": "Det gick inte att banna användaren", + "Failed to change password. Is your password correct?": "Det gick inte att byta lösenord. Är lösenordet rätt?", + "Failed to change power level": "Det gick inte att ändra behörighetsnivå", + "Failed to forget room %(errCode)s": "Det gick inte att glömma bort rummet %(errCode)s", + "Failed to join room": "Det gick inte att gå med i rummet", + "Failed to kick": "Det gick inte att kicka", + "Failed to leave room": "Det gick inte att lämna rummet", + "Failed to load timeline position": "Det gick inte att hämta positionen på tidslinjen", + "Failed to mute user": "Det gick inte att tysta användaren", + "Failed to reject invite": "Det gick inte att avböja inbjudan", + "Failed to reject invitation": "Det gick inte att avböja inbjudan", + "Failed to save settings": "Det gick inte att spara inställningarna", + "Failed to send email": "Det gick inte att skicka epost", + "Failed to send request.": "Det gick inte att sända begäran.", + "Failed to set avatar.": "Misslyckades med att ange avatar.", + "Failed to set display name": "Det gick inte att ange visningsnamn", + "Failed to set up conference call": "Det gick inte att starta konferenssamtalet", + "Failed to toggle moderator status": "Det gick inte att växla moderator-status", + "Failed to unban": "Det gick inte att avbanna", + "Failed to upload file": "Det gick inte att ladda upp filen", + "Failed to verify email address: make sure you clicked the link in the email": "Det gick inte att bekräfta epostadressen, klicka på länken i epostmeddelandet", + "Favourite": "Favorit", + "Accept": "Godkänn", + "Access Token:": "Åtkomsttoken:", + "Active call (%(roomName)s)": "Aktiv samtal (%(roomName)s)", + "Add": "Lägg till", + "Admin Tools": "Admin-verktyg", + "Alias (optional)": "Alias (valfri)", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Det gick inte att ansluta till hemservern - kontrollera anslutningen, se till att hemserverns SSL-certifikat är betrott, och att inget webbläsartillägg blockerar förfrågningar.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s ändrade behörighetsnivå för %(powerLevelDiffText)s.", + "Click here to join the discussion!": "Klicka här för att gå med i diskussionen!", + "Close": "Stäng", + "%(count)s new messages": { + "one": "%(count)s nytt meddelande", + "other": "%(count)s nya meddelanden" + }, + "Create a new chat or reuse an existing one": "Skapa en ny chatt eller använd en existerande", + "Custom": "Egen", + "Decline": "Avvisa", + "Disable Notifications": "Slå av aviseringar", + "Drop File Here": "Dra filen hit", + "Enable Notifications": "Slå på aviseringar", + "Encrypted by a verified device": "Krypterat av en verifierad enhet", + "Encrypted by an unverified device": "Krypterat av en overifierad enhet", + "Encryption is enabled in this room": "Kryptering är aktiverat i det här rummet", + "Encryption is not enabled in this room": "Kryptering är inte aktiverat i det här rummet", + "Enter passphrase": "Ange lösenfras", + "Error: Problem communicating with the given homeserver.": "Fel: Det gick inte att kommunicera med den angivna hemservern.", + "Failed to fetch avatar URL": "Det gick inte att hämta avatar-URL", + "Failed to upload profile picture!": "Det gick inte att ladda upp profilbild!", + "Failure to create room": "Det gick inte att skapa rum", + "Favourites": "Favoriter", + "Fill screen": "Fyll skärmen", + "Filter room members": "Filtrera rumsmedlemmar", + "Forget room": "Glöm bort rum", + "Forgot your password?": "Glömt lösenord?", + "For security, this session has been signed out. Please sign in again.": "Av säkerhetsskäl har den här sessionen loggats ut. Vänligen logga in igen.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Av säkerhetsskäl kommer alla krypteringsnycklar att raderas från den här webbläsaren om du loggar ut. Om du vill läsa din krypterade meddelandehistorik från framtida Riot-sessioner, exportera nycklarna till förvar.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s från %(fromPowerLevel)s till %(toPowerLevel)s", + "Guest access is disabled on this Home Server.": "Gäståtkomst är inte aktiverat på den här hemservern.", + "Guests cannot join this room even if explicitly invited.": "Gäster kan inte gå med i det här rummet fastän de är uttryckligen inbjudna.", + "Hangup": "Lägg på", + "Hide read receipts": "Dölj läskvitton", + "Hide Text Formatting Toolbar": "Göm textformatteringsverktygsfältet", + "Historical": "Historiska", + "Home": "Hem", + "Homeserver is": "Hemserver är", + "Identity Server is": "Identitetsserver är", + "I have verified my email address": "Jag har verifierat min epostadress", + "Import": "Importera", + "Import E2E room keys": "Importera rumskrypteringsnycklar", + "Incoming call from %(name)s": "Inkommande samtal från %(name)s", + "Incoming video call from %(name)s": "Inkommande videosamtal från %(name)s", + "Incoming voice call from %(name)s": "Inkommande röstsamtal från %(name)s", + "Incorrect username and/or password.": "Fel användarnamn och/eller lösenord.", + "Incorrect verification code": "Fel verifieringskod", + "Interface Language": "Gränssnittsspråk", + "Invalid alias format": "Fel alias-format", + "Invalid address format": "Fel adressformat", + "Invalid Email Address": "Ogiltig epostadress", + "Invalid file%(extra)s": "Fel fil%(extra)s", + "%(senderName)s invited %(targetName)s.": "%(senderName)s bjöd in %(targetName)s.", + "Invite new room members": "Bjud in nya rumsmedlemmar", + "Invited": "Inbjuden", + "Invites": "Inbjudningar", + "Invites user with given id to current room": "Bjuder in användare med givet id till nuvarande rum", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' är inte ett giltigt format för en adress", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' är inte ett giltigt format för ett alias", + "%(displayName)s is typing": "%(displayName)s skriver", + "Sign in with": "Logga in med", + "Join as voice or video.": "Gå med som röst eller video.", + "Join Room": "Gå med i rum", + "%(targetName)s joined the room.": "%(targetName)s gick med i rummet.", + "Joins room with given alias": "Går med i rummet med givet alias", + "Jump to first unread message.": "Hoppa till första olästa meddelande.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s kickade %(targetName)s.", + "Kick": "Kicka", + "Kicks user with given id": "Kickar användaren med givet id", + "Labs": "Labb", + "Last seen": "Senast sedd", + "Leave room": "Lämna rummet", + "%(targetName)s left the room.": "%(targetName)s lämnade rummet.", + "Level:": "Nivå:", + "Local addresses for this room:": "Lokala adresser för rummet:", + "Logged in as:": "Inloggad som:", + "Logout": "Logga ut", + "Low priority": "Låg prioritet", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gjorde framtida rumshistorik synligt för alla rumsmedlemmar från att de bjöds in.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gjorde framtida rumshistorik synligt för alla rumsmedlemmar fr.o.m. att de gick med som medlem.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s gjorde framtida rumshistorik synligt för alla rumsmedlemmar.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s gjorde framtida rumshistorik synligt för alla.", + "Manage Integrations": "Hantera integrationer", + "Markdown is disabled": "Markdown är inaktiverat", + "Markdown is enabled": "Markdown är aktiverat", + "matrix-react-sdk version:": "matrix-react-sdk -version:", + "Message not sent due to unknown devices being present": "Meddelandet skickades inte eftersom det finns okända enheter i rummet", + "Missing room_id in request": "room_id saknas i förfrågan", + "Missing user_id in request": "user_id saknas i förfrågan", + "Mobile phone number": "Telefonnummer", + "Mobile phone number (optional)": "Telefonnummer (valfri)", + "Moderator": "Moderator", + "Mute": "Tysta", + "%(serverName)s Matrix ID": "%(serverName)s Matrix-ID", + "Name": "Namn", + "Never send encrypted messages to unverified devices from this device": "Skicka aldrig krypterade meddelanden till overifierade enheter från den här enheten", + "Never send encrypted messages to unverified devices in this room from this device": "Skicka aldrig krypterade meddelanden till overifierade enheter i det här rummet från den här enheten", + "New address (e.g. #foo:%(localDomain)s)": "Ny address (t.ex. #foo:%(localDomain)s)", + "New password": "Nytt lösenord", + "New passwords don't match": "De nya lösenorden matchar inte", + "New passwords must match each other.": "De nya lösenorden måste vara de samma.", + "none": "inget", + "not set": "inte vald", + "not specified": "inte specifierad", + "Notifications": "Aviseringar", + "(not supported by this browser)": "(stöds inte av webbläsaren)", + "": "", + "NOT verified": "INTE verifierad", + "No devices with registered encryption keys": "Inga enheter med registrerade krypteringsnycklar", + "No display name": "Inget visningsnamn", + "No more results": "Inga fler resultat", + "No results": "Inga resultat", + "No users have specific privileges in this room": "Inga användare har specifika privilegier i det här rummet", + "OK": "OK", + "olm version:": "olm-version:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "När kryptering aktiveras i ett rum kan det inte deaktiveras (tills vidare)", + "Only people who have been invited": "Endast inbjudna", + "Operation failed": "Handlingen misslyckades", + "Password": "Lösenord", + "Password:": "Lösenord:", + "Passwords can't be empty": "Lösenorden kan inte vara tomma", + "People": "Personer", + "Permissions": "Behörigheter", + "Phone": "Telefon", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s startade ett %(callType)ssamtal.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Öppna meddelandet i din epost och klicka på länken i meddelandet. När du har gjort detta, klicka vidare.", + "Power level must be positive integer.": "Behörighetsnivå måste vara ett positivt heltal.", + "Press to start a chat with someone": "Tryck på för att starta en chatt med någon", + "Privacy warning": "Integritetsvarning", + "Private Chat": "Privatchatt", + "Privileged Users": "Privilegierade användare", + "Profile": "Profil", + "Public Chat": "Offentlig chatt", + "Reason": "Orsak", + "Reason: %(reasonText)s": "Orsak: %(reasonText)s", + "Revoke Moderator": "Degradera moderator", + "Refer a friend to Riot:": "Hänvisa en vän till Riot:", + "Register": "Registrera", + "%(targetName)s rejected the invitation.": "%(targetName)s avvisade inbjudan.", + "Reject invitation": "Avböj inbjudan", + "Rejoin": "Gå med igen", + "Remote addresses for this room:": "Fjärradresser för det här rummet:", + "Remove Contact Information?": "Ta bort kontaktuppgifter?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s tog bort sitt visningsnamn (%(oldDisplayName)s).", + "%(senderName)s removed their profile picture.": "%(senderName)s tog bort sin profilbild.", + "Remove": "Ta bort", + "Remove %(threePid)s?": "Ta bort %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s begärde en VoIP-konferens.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Om du återställer ditt lösenord kommer alla krypteringsnycklar på alla enheter att återställas, vilket gör krypterad meddelandehistorik oläsbar om du inte först exporterar dina rumsnycklar och sedan importerar dem igen. I framtiden kommer det här att förbättras.", + "Results from DuckDuckGo": "Resultat från DuckDuckGo", + "Return to login screen": "Tillbaka till login-skärmen", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot har inte tillstånd att skicka aviseringar - kontrollera webbläsarens inställningar", + "Riot was not given permission to send notifications - please try again": "Riot fick inte tillstånd att skicka aviseringar - försök igen", + "riot-web version:": "riot-web -version:", + "Room %(roomId)s not visible": "Rummet %(roomId)s är inte synligt", + "Room Colour": "Rumsfärg", + "Room contains unknown devices": "Det finns okända enheter i rummet", + "Room name (optional)": "Rumsnamn (valfri)", + "%(roomName)s does not exist.": "%(roomName)s finns inte.", + "%(roomName)s is not accessible at this time.": "%(roomName)s är inte tillgängligt för tillfället.", + "Rooms": "Rum", + "Save": "Spara", + "Scroll to bottom of page": "Gå till slutet av sidan", + "Scroll to unread messages": "Gå till olästa meddelanden", + "Search": "Sök", + "Search failed": "Sökning misslyckades", + "Searches DuckDuckGo for results": "Söker efter resultat på DuckDuckGo", + "Seen by %(userName)s at %(dateTime)s": "Sedd av %(userName)s %(dateTime)s", + "Send anyway": "Skicka ändå", + "Sender device information": "Sändarens enhetsinformation", + "Send Invites": "Skicka inbjudningar", + "Send Reset Email": "Skicka återställningsmeddelande", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s skickade en bild.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s bjöd in %(targetDisplayName)s med i rummet.", + "Server error": "Serverfel", + "Server may be unavailable or overloaded": "Servern kan vara otillgänglig eller överbelastad", + "Server may be unavailable, overloaded, or search timed out :(": "Servern kan vara otillgänglig, överbelastad, eller så tog sökningen för lång tid :(", + "Server may be unavailable, overloaded, or the file too big": "Servern kan vara otillgänglig, överbelastad, eller så är filen för stor", + "Server may be unavailable, overloaded, or you hit a bug.": "Servern kan vara otillgänglig, överbelastad, eller så stötte du på en bugg.", + "Server unavailable, overloaded, or something else went wrong.": "Servern är otillgänglig, överbelastad, eller så gick något annat fel.", + "Session ID": "Sessions-ID", + "%(senderName)s set a profile picture.": "%(senderName)s satte en profilbild.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s bytte sitt visningnamn till %(displayName)s.", + "Settings": "Inställningar", + "Show panel": "Visa panel", + "Show Text Formatting Toolbar": "Visa textformatteringsverktygsfält", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Visa tidsstämplar i 12-timmarsformat (t.ex. 2:30pm)", + "Signed Out": "Loggade ut", + "Sign in": "Logga in", + "Sign out": "Logga ut", + "%(count)s of your messages have not been sent.": { + "other": "Vissa av dina meddelanden har inte skickats.", + "one": "Ditt meddelande skickades inte." + }, + "Someone": "Någon", + "Start a chat": "Starta en chatt", + "Start authentication": "Starta autentisering", + "Start Chat": "Starta en chatt", + "Cancel": "Avbryt", + "Create new room": "Skapa nytt rum", + "Custom Server Options": "Anpassade serverinställningar", + "Dismiss": "Avvisa", + "powered by Matrix": "drivs av Matrix", + "Room directory": "Rumskatalog", + "Start chat": "Starta chatt", + "unknown error code": "okänd felkod", + "Add a widget": "Lägg till en widget", + "Allow": "Tillåt", + "Cannot add any more widgets": "Det går inte att lägga till fler widgets", + "Changes colour scheme of current room": "Ändrar färgschema för nuvarande rum", + "Delete widget": "Ta bort widget", + "Define the power level of a user": "Definiera behörighetsnivå för en användare", + "Do you want to load widget from URL:": "Vill du ladda widgeten från URL:", + "Edit": "Ändra", + "Enable automatic language detection for syntax highlighting": "Aktivera automatisk språkdetektering för syntaxmarkering", + "Integrations Error": "Integrationsfel", + "Publish this room to the public in %(domain)s's room directory?": "Publicera rummet i den offentliga rumskatalogen på %(domain)s?", + "AM": "a.m.", + "PM": "p.m.", + "NOTE: Apps are not end-to-end encrypted": "OBS: Apparna är inte end-to-end-krypterade", + "Revoke widget access": "Upphäv widget-åtkomst", + "Submit": "Lämna in", + "Tagged as: ": "Taggad som: ", + "The default role for new room members is": "Standardrollen för nya medlemmar i rummet är", + "The main address for this room is": "Huvudadressen för det här rummet är", + "The maximum permitted number of widgets have already been added to this room.": "Den största tillåtna mängden widgetar har redan tillsats till rummet.", + "The phone number entered looks invalid": "Telefonnumret ser felaktigt ut", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Signeringsnyckeln du angav matchar signeringsnyckeln som mottogs från enheten %(deviceId)s som tillhör %(userId)s. Enheten är markerad som verifierad.", + "This email address is already in use": "Den här epostadressen används redan", + "This email address was not found": "Den här epostadressen finns inte", + "The email address linked to your account must be entered.": "Epostadressen som är kopplad till ditt konto måste anges.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "Filen '%(fileName)s' överskrider serverns största tillåtna filstorlek", + "The file '%(fileName)s' failed to upload": "Filen '%(fileName)s' kunde inte laddas upp", + "Online": "Online", + "Unnamed room": "Namnlöst rum", + "World readable": "Alla kan läsa", + "Guests can join": "Gäster kan bli medlem i rummet", + "No rooms to show": "Inga fler rum att visa", + "This phone number is already in use": "Detta telefonnummer används redan", + "The version of Riot.im": "Versionen av Riot.im", + "Call Failed": "Samtal misslyckades", + "Call Anyway": "Ring ändå", + "Call": "Ring", + "Answer": "Svara", + "You are already in a call.": "Du är redan i ett samtal.", + "You cannot place a call with yourself.": "Du kan inte ringa till dig själv.", + "Warning!": "Varning!", + "Upload Failed": "Uppladdning misslyckades", + "Sun": "Sön", + "Mon": "Mån", + "Tue": "Tis", + "Wed": "Ons", + "Thu": "Tors", + "Fri": "Fre", + "Sat": "Lör", + "Jan": "jan", + "Feb": "feb", + "Mar": "mar", + "Apr": "apr", + "May": "maj", + "Jun": "jun", + "Jul": "jul", + "Aug": "aug", + "Sep": "sep", + "Oct": "okt", + "Nov": "nov", + "Dec": "dec", + "Name or matrix ID": "Namn eller matrix ID", + "Invite to Community": "Bjud in till community", + "Unable to enable Notifications": "Det går inte att aktivera aviseringar", + "Failed to invite user": "Det gick inte att bjuda in användaren", + "The information being sent to us to help make Riot.im better includes:": "Informationen som skickas till oss för att hjälpa Riot.im att bli bättre inkluderar:", + "Review Devices": "Granska enheter", + "Answer Anyway": "Svara ändå", + "VoIP is unsupported": "VoIP stöds ej", + "Who would you like to add to this room?": "Vem vill du lägga till i det här rummet?", + "Failed to invite": "Inbjudan misslyckades", + "You need to be logged in.": "Du måste vara inloggad.", + "You need to be able to invite users to do that.": "Du måste kunna bjuda in användare för att göra det.", + "You are not in this room.": "Du är inte i det här rummet.", + "You do not have permission to do that in this room.": "Du har inte behörighet att göra det i det här rummet.", + "Fetching third party location failed": "Det gick inte att hämta platsdata från tredje part", + "A new version of Riot is available.": "En ny version av Riot är tillgänglig.", + "Couldn't load home page": "Kunde inte ladda startsidan", + "All notifications are currently disabled for all targets.": "Alla aviseringar är för tillfället avstängda för alla mål.", + "Uploading report": "Laddar upp rapport", + "Sunday": "söndag", + "Messages sent by bot": "Meddelanden från bottar", + "Notification targets": "Aviseringsmål", + "Failed to set direct chat tag": "Det gick inte att markera rummet som direkt-chatt", + "Today": "idag", + "Failed to get protocol list from Home Server": "Det gick inte att hämta protokollistan från hemservern", + "You are not receiving desktop notifications": "Du får inte skrivbordsaviseringar", + "Friday": "fredag", + "Update": "Uppdatera", + "What's New": "Vad är nytt", + "Add an email address above to configure email notifications": "Lägg till en epostadress här för att konfigurera epostaviseringar", + "Expand panel": "Öppna panel", + "On": "På", + "%(count)s Members": { + "other": "%(count)s medlemmar", + "one": "%(count)s medlem" + }, + "Filter room names": "Filtrera rumsnamn", + "Changelog": "Ändringslogg", + "Waiting for response from server": "Väntar på svar från servern", + "Leave": "Lämna", + "Uploaded on %(date)s by %(user)s": "%(user)s laddade upp %(date)s", + "Advanced notification settings": "Avancerade aviseringsinställingar", + "delete the alias.": "radera adressen.", + "To return to your account in future you need to set a password": "För att återgå till ditt konto i framtiden måste du välja ett lösenord", + "Forget": "Glöm bort", + "#example": "#exempel", + "Hide panel": "Göm panel", + "You cannot delete this image. (%(code)s)": "Du kan inte radera den här bilden. (%(code)s)", + "Cancel Sending": "Avbryt sändning", + "Warning": "Varning", + "This Room": "Det här rummet", + "The Home Server may be too old to support third party networks": "Hemservern kan vara för gammal för stöda tredje parters nätverk", + "Noisy": "Högljudd", + "Room not found": "Rummet hittades inte", + "Messages containing my display name": "Meddelanden som innehåller mitt visningsnamn", + "Messages in one-to-one chats": "Meddelanden i privata chattar", + "Unavailable": "Otillgänglig", + "View Decrypted Source": "Visa dekrypterad källa", + "Failed to update keywords": "Det gick inte att uppdatera nyckelorden", + "remove %(name)s from the directory.": "ta bort %(name)s från katalogen.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Aviseringar för följande nyckelord följer regler som inte kan visas här:", + "Please set a password!": "Vänligen välj ett lösenord!", + "You have successfully set a password!": "Du har valt ett nytt lösenord!", + "An error occurred whilst saving your email notification preferences.": "Ett fel uppstod då epostaviseringsinställningarna sparades.", + "Explore Room State": "Utforska rumläget", + "Source URL": "Käll-URL", + "Failed to add tag %(tagName)s to room": "Det gick inte att lägga till \"%(tagName)s\" till rummet", + "Filter results": "Filtrera resultaten", + "Members": "Medlemmar", + "No update available.": "Ingen uppdatering tillgänglig.", + "Resend": "Skicka igen", + "Files": "Filer", + "Collecting app version information": "Samlar in appversionsinformation", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "Radera rumsadressen %(alias)s och ta bort %(name)s från katalogen?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Detta kommer tillåta dig att återgå till ditt konto efter att ha loggat ut, och logga in på andra enheter.", + "Keywords": "Nyckelord", + "Enable notifications for this account": "Sätt på aviseringar för det här kontot", + "Directory": "Katalog", + "Failed to get public room list": "Det gick inte att hämta listan över offentliga rum", + "Messages containing keywords": "Meddelanden som innehåller nyckelord", + "Error saving email notification preferences": "Ett fel uppstod då epostaviseringsinställningarna sparades", + "Tuesday": "tisdag", + "Enter keywords separated by a comma:": "Skriv in nyckelord, separerade med kommatecken:", + "Search…": "Sök…", + "Remove %(name)s from the directory?": "Ta bort %(name)s från katalogen?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot använder flera avancerade webbläsaregenskaper, av vilka alla inte stöds eller är experimentella i din nuvarande webbläsare.", + "Enable desktop notifications": "Sätt på skrivbordsaviseringar", + "Remember, you can always set an email address in user settings if you change your mind.": "Kom ihåg att du alltid kan välja en e-postadress i dina användarinställningar om du ändrar dig.", + "All messages (noisy)": "Alla meddelanden (högljudd)", + "Saturday": "lördag", + "I understand the risks and wish to continue": "Jag förstår riskerna och vill fortsätta", + "Direct Chat": "Direkt-chatt", + "The server may be unavailable or overloaded": "Servern kan vara otillgänglig eller överbelastad", + "Reject": "Avböj", + "Failed to set Direct Message status of room": "Det gick inte att ställa in direktmeddelandestatus för rummet", + "Monday": "måndag", + "Remove from Directory": "Ta bort från katalogen", + "Enable them now": "Sätt på nu", + "Messages containing my user name": "Meddelanden som innehåller mitt användarnamn", + "Collecting logs": "Samlar in loggar", + "more": "mera", + "(HTTP status %(httpStatus)s)": "(HTTP-status %(httpStatus)s)", + "All Rooms": "Alla rum", + "Wednesday": "onsdag", + "You cannot delete this message. (%(code)s)": "Du kan inte radera det här meddelandet. (%(code)s)", + "Send": "Skicka", + "Send logs": "Skicka loggar", + "All messages": "Alla meddelanden", + "Call invitation": "Inbjudan till samtal", + "Downloading update...": "Laddar ned uppdatering...", + "You have successfully set a password and an email address!": "Du har framgångsrikt valt ett lösenord och en e-postadress!", + "What's new?": "Vad är nytt?", + "Notify me for anything else": "Avisera för allt annat", + "When I'm invited to a room": "När jag bjuds in till ett rum", + "Can't update user notification settings": "Kan inte uppdatera aviseringsinställningarna", + "Notify for all other messages/rooms": "Avisera för alla andra meddelanden/rum", + "Unable to look up room ID from server": "Det gick inte att hämta rums-ID:t från servern", + "Couldn't find a matching Matrix room": "Kunde inte hitta ett matchande Matrix-rum", + "Invite to this room": "Bjud in i rummet", + "Search for a room": "Sök efter rum", + "Thursday": "torsdag", + "Forward Message": "Vidarebefordra meddelande", + "Back": "Tillbaka", + "Reply": "Svara", + "Show message in desktop notification": "Visa meddelande i skrivbordsavisering", + "Unhide Preview": "Visa förhandsvisning", + "Unable to join network": "Det gick inte att ansluta till nätverket", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Du kan ha konfigurerat dem i en annan klient än Riot. Du kan inte ändra dem i Riot men de tillämpas ändå", + "Sorry, your browser is not able to run Riot.": "Beklagar, din webbläsare kan inte köra Riot.", + "Messages in group chats": "Meddelanden i gruppchattar", + "Yesterday": "igår", + "Error encountered (%(errorDetail)s).": "Fel påträffat (%(errorDetail)s).", + "Low Priority": "Låg prioritet", + "Unable to fetch notification target list": "Det gick inte att hämta aviseringsmållistan", + "Set Password": "Välj lösenord", + "Enable audible notifications in web client": "Sätt på högljudda aviseringar i webbklienten", + "Off": "Av", + "Riot does not know how to join a room on this network": "Riot kan inte gå med i ett rum på det här nätverket", + "Mentions only": "Endast omnämnande", + "Failed to remove tag %(tagName)s from room": "Det gick inte att radera taggen %(tagName)s från rummet", + "You can now return to your account after signing out, and sign in on other devices.": "Du kan nu återgå till ditt konto efter att ha loggat ut och logga in på andra enheter.", + "Enable email notifications": "Sätt på epostaviseringar", + "Login": "Logga in", + "Download this file": "Ladda ner filen", + "Failed to change settings": "Det gick inte att spara inställningarna", + "View Source": "Visa källa", + "Thank you!": "Tack!", + "Quote": "Citera", + "Collapse panel": "Dölj panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Med din nuvarande webbläsare kan appens utseende vara helt fel, och vissa eller alla egenskaper kommer nödvändigtvis inte att fungera. Om du ändå vill försöka så kan du fortsätta, men gör det på egen risk!", + "Checking for an update...": "Letar efter uppdateringar...", + "There are advanced notifications which are not shown here": "Det finns avancerade aviseringar som inte visas här", + "Who can access this room?": "Vilka kan komma åt detta rum?", + "Who can read history?": "Vilka kan läsa historik?", + "Members only (since the point in time of selecting this option)": "Endast medlemmar (från tidpunkten för när denna inställning valdes)", + "Members only (since they were invited)": "Endast medlemmar (från när de blev inbjudna)", + "Members only (since they joined)": "Endast medlemmar (från när de gick med)", + "This room's internal ID is": "Rummets interna ID är", + "Addresses": "Adresser", + "This room has no local addresses": "Det här rummet har inga lokala adresser", + "Updates": "Uppdateringar", + "Check for update": "Leta efter uppdatering", + "Your language of choice": "Ditt språkval", + "The platform you're on": "Plattformen du använder", + "Whether or not you're logged in (we don't record your user name)": "Oavsett om du är inloggad (så registreras inte ditt användarnamn)", + "Your homeserver's URL": "Din hemservers URL", + "Your identity server's URL": "Din identitetsservers URL", + "Every page you use in the app": "Varje sida du använder i appen", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "Om du använder Richtext-läget i Rich-Text-editorn eller inte", + "e.g. ": "t.ex. ", + "Your User Agent": "Din användaragent", + "Your device resolution": "Din enhetsupplösning", + "You cannot place VoIP calls in this browser.": "Du kan inte ringa VoIP-samtal i den här webbläsaren.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "Din epostadress verkar inte vara kopplad till något Matrix-ID på den här hemservern.", + "Restricted": "Begränsad", + "Who would you like to communicate with?": "Vem vill du kommunicera med?", + "Failed to invite the following users to the %(roomName)s room:": "Det gick inte att bjuda in följande användare till %(roomName)s-rummet:", + "Unable to create widget.": "Det går inte att skapa widget.", + "Ignored user": "Ignorerad användare", + "You are now ignoring %(userId)s": "Du ignorerar nu %(userId)s", + "Unignored user": "Oignorerad användare", + "You are no longer ignoring %(userId)s": "Du ignorerar inte längre %(userId)s", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s bytte sitt visningsnamn till %(displayName)s.", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s avbannade %(targetName)s.", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s drog tillbaka inbjudan för %(targetName)s.", + "(no answer)": "(inget svar)", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s-widget har modifierats av %(senderName)s", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s-widget har lagts till av %(senderName)s", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s-widget har tagits bort av %(senderName)s", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s och %(count)s andra skriver", + "one": "%(names)s och en till skriver" + }, + "Unnamed Room": "Namnlöst rum", + "Your browser does not support the required cryptography extensions": "Din webbläsare stödjer inte nödvändiga kryptografitillägg", + "Invite": "Bjud in", + "Unignore": "Ignorera inte", + "Ignore": "Ignorera", + "Jump to message": "Hoppa till meddelande", + "Mention": "Nämn", + "Make Moderator": "Gör till moderator", + "Upload Files": "Ladda upp filer", + "Unencrypted room": "Okrypterat rum", + "Voice call": "Röstsamtal", + "Video call": "Videosamtal", + "Upload file": "Ladda upp fil", + "Send an encrypted reply…": "Skicka ett krypterat svar…", + "Send a reply (unencrypted)…": "Skicka ett svar (okrypterat)…", + "Send an encrypted message…": "Skicka ett krypterat meddelande…", + "Send a message (unencrypted)…": "Skicka ett meddelande (okrypterat)…", + "You do not have permission to post to this room": "Du har inte behörighet att posta till detta rum", + "Turn Markdown on": "Sätt på Markdown", + "Turn Markdown off": "Stäng av Markdown", + "Unable to reply": "Det gick inte att svara", + "bold": "fet", + "italic": "kursiv", + "strike": "genomstruken", + "underline": "understruken", + "code": "kod", + "quote": "citat", + "bullet": "punkter", + "numbullet": "numrering", + "Loading...": "Laddar...", + "%(duration)ss": "%(duration)s", + "%(duration)sm": "%(duration)sm", + "%(duration)sh": "%(duration)sh", + "%(duration)sd": "%(duration)sd", + "Online for %(duration)s": "Online i %(duration)s", + "Idle for %(duration)s": "Inaktiv i %(duration)s", + "Offline for %(duration)s": "Offline i %(duration)s", + "Idle": "Inaktiv", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "Sedd av %(displayName)s (%(userName)s) %(dateTime)s", + "Offline": "Offline", + "(~%(count)s results)": { + "other": "(~%(count)s resultat)", + "one": "(~%(count)s resultat)" + }, + "Upload avatar": "Ladda upp avatar", + "Remove avatar": "Ta bort avatar", + "This invitation was sent to an email address which is not associated with this account:": "Den här inbjudan skickades till en epostadress som inte är kopplad till detta konto:", + "To link to a room it must have an address.": "För att länka till ett rum behöver det en adress.", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (nivå %(powerLevelNumber)s)", + "Unknown Address": "Okänd adress", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)sgick med %(count)s gånger", + "one": "%(severalUsers)sgick med" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)sgick med %(count)s gånger", + "one": "%(oneUser)sgick med" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)slämnade %(count)s gånger", + "one": "%(severalUsers)slämnade" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)slämnade %(count)s gånger", + "one": "%(oneUser)slämnade" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)sgick med och lämnade %(count)s gånger", + "one": "%(severalUsers)sgick med och lämnade" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)sgick med och lämnade %(count)s gånger", + "one": "%(oneUser)sgick med och lämnade" + }, + "And %(count)s more...": { + "other": "Och %(count)s till..." + }, + "ex. @bob:example.com": "t.ex. @kalle:exempel.com", + "Add User": "Lägg till användare", + "Matrix ID": "Matrix-ID", + "Matrix Room ID": "Matrix-rums-ID", + "email address": "epostadress", + "Try using one of the following valid address types: %(validTypesList)s.": "Prova att använda någon av följande giltiga adresstyper: %(validTypesList)s.", + "You have entered an invalid address.": "Du har angett en ogiltig adress.", + "Preparing to send logs": "Förbereder att skicka loggar", + "Logs sent": "Loggar skickade", + "Failed to send logs: ": "Det gick inte att skicka loggar: ", + "Submit debug logs": "Skicka felsökningsloggar", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Felsökningsloggar innehåller användningsdata för applikationen inklusive ditt användarnamn, ID:n eller alias för de rum och grupper du har besökt och användarnamn för andra användare. De innehåller inte meddelanden.", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot-buggar hanteras på GitHub: skapa en GitHub-issue.", + "GitHub issue link:": "Länk till GitHub-issue:", + "Notes:": "Noteringar:", + "Start new chat": "Starta ny chatt", + "Default server": "Standardserver", + "Custom server": "Anpassad server", + "Home server URL": "Hemserver-URL", + "Identity server URL": "Identitetsserver-URL", + "What does this mean?": "Vad betyder det här?", + "User name": "Användarnamn", + "Username on %(hs)s": "Användarnamn på %(hs)s", + "An email has been sent to %(emailAddress)s": "Ett epostmeddelande har skickats till %(emailAddress)s", + "To continue, please enter your password.": "För att fortsätta, vänligen ange ditt lösenord.", + "Please check your email to continue registration.": "Vänligen kolla din epost för att fortsätta registreringen.", + "Token incorrect": "Ogiltig token", + "A text message has been sent to %(msisdn)s": "Ett textmeddelande har skickats till %(msisdn)s", + "Please enter the code it contains:": "Vänligen ange koden det innehåller:", + "Code": "Kod", + "I already have an account": "Jag har redan ett konto", + "Sign in to get started": "Logga in för att komma igång", + "Set a display name:": "Ange ett visningsnamn:", + "Upload an avatar:": "Ladda upp en avatar:", + "This server does not support authentication with a phone number.": "Denna server har inte support för autentisering via telefonnummer.", + "Missing password.": "Lösenord saknas.", + "Passwords don't match.": "Lösenorden matchar inte.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Lösenordet är för kort (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Det här ser inte ut vara en giltig epostadress.", + "This doesn't look like a valid phone number.": "Det här ser inte ut att vara ett giltigt telefonnummer.", + "You need to enter a user name.": "Du måste ange ett användarnamn.", + "An unknown error occurred.": "Ett okänt fel uppstod.", + "Hide avatar changes": "Dölj avatarändringar", + "Hide display name changes": "Dölj visningsnamnsändringar", + "Uploading %(filename)s and %(count)s others": { + "other": "Laddar upp %(filename)s och %(count)s andra", + "zero": "Laddar upp %(filename)s", + "one": "Laddar upp %(filename)s och %(count)s annan" + }, + "Light theme": "Ljust tema", + "Dark theme": "Mörkt tema", + "Status.im theme": "Status.im-tema", + "You already have existing direct chats with this user:": "Du har redan existerande direkt-chattar med den här användaren:", + "Start chatting": "Börja chatta", + "Click on the button below to start chatting!": "Klicka på knappen nedanför för att börja chatta!", + "Start Chatting": "Börja chatta", + "This doesn't appear to be a valid email address": "Det här verkar inte vara en giltig epostadress", + "Verification Pending": "Avvaktar verifiering", + "Unable to add email address": "Det gick inte att lägga till epostadress", + "Unable to verify email address.": "Det gick inte att verifiera epostadressen.", + "Skip": "Hoppa över", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Användarnamn får endast innehålla bokstäver, siffror, punkter, bindestreck och understreck.", + "Username not available": "Användarnamn inte tillgängligt", + "Username invalid: %(errMessage)s": "Ogiltigt användarnamn: %(errMessage)s", + "An error occurred: %(error_string)s": "Ett fel uppstod: %(error_string)s", + "Username available": "Användarnamn tillgängligt", + "To get started, please pick a username!": "För att komma igång, vänligen välj ett användarnamn!", + "This will be your account name on the homeserver, or you can pick a different server.": "Det här kommer bli ditt kontonamn på hemservern , eller så kan du välja en annan server.", + "If you already have a Matrix account you can log in instead.": "Om du redan har ett Matrix-konto kan du logga in istället.", + "Please install Chrome or Firefox for the best experience.": "Vänligen installera Chrome eller Firefox för den bästa upplevelsen.", + "Safari and Opera work too.": "Safari och Opera funkar också.", + "Topic": "Ämne", + "Make this room private": "Gör det här rummet privat", + "Share message history with new users": "Dela meddelandehistoriken med nya användare", + "Encrypt room": "Kryptera rum", + "You must register to use this functionality": "Du måste registrera dig för att använda den här funktionaliteten", + "You must join the room to see its files": "Du måste gå med i rummet för att se tillhörande filer", + "There are no visible files in this room": "Det finns inga synliga filer i det här rummet", + "Your password has been reset": "Ditt lösenord har återställts", + "To reset your password, enter the email address linked to your account": "För att återställa ditt lösenord, ange epostadressen som är kopplad till ditt konto", + "This Home Server does not support login using email address.": "Den här hemservern har inte support för inloggning med epostadress.", + "Desktop specific": "Skrivbordsspecifikt", + "Start automatically after system login": "Starta automatiskt vid systeminloggning", + "User Interface": "Användargränssnitt", + "This will allow you to reset your password and receive notifications.": "Det här låter dig återställa lösenordet och ta emot aviseringar.", + "You have no visible notifications": "Du har inga synliga aviseringar", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Ditt lösenord har ändrats. Du kommer inte att få push-aviseringar på andra enheter förrän du har loggat in på dem igen", + "Failed to upload image": "Det gick inte att ladda upp bild", + "New Password": "Nytt lösenord", + "Do you want to set an email address?": "Vill du ange en epostadress?", + "Your home server does not support device management.": "Din hemserver stöder inte enhetshantering.", + "Unable to load device list": "Det gick inte att ladda enhetslista", + "Delete %(count)s devices": { + "other": "Ta bort %(count)s enheter", + "one": "Ta bort enhet" + }, + "Device Name": "Enhetsnamn", + "Select devices": "Välj enheter", + "Disable Emoji suggestions while typing": "Inaktivera Emoji-förslag medan du skriver", + "Use compact timeline layout": "Använd kompakt chattlayout", + "Not a valid Riot keyfile": "Inte en giltig Riot-nyckelfil", + "Authentication check failed: incorrect password?": "Autentiseringskontroll misslyckades: felaktigt lösenord?", + "Always show encryption icons": "Visa alltid krypteringsikoner", + "Disable big emoji in chat": "Inaktivera stor emoji i chatt", + "Hide avatars in user and room mentions": "Dölj avatarer i användar- och rumsnämningar", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s bytte avatar för %(roomName)s", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s tog bort rummets avatar.", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s ändrade rummets avatar till ", + "Automatically replace plain text Emoji": "Ersätt text-emojis automatiskt", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s %(time)s", + "You seem to be uploading files, are you sure you want to quit?": "Du verkar ladda upp filer, är du säker på att du vill avsluta?", + "You seem to be in a call, are you sure you want to quit?": "Du verkar vara i ett samtal, är du säker på att du vill avsluta?", + "Active call": "Aktivt samtal", + "Show devices, send anyway or cancel.": "Visa enheter, skicka ändå eller avbryt.", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "Skicka om alla eller ångra alla nu. Du kan även välja enskilda meddelanden för att skicka om eller ångra.", + "one": "Skicka om meddelande eller ångra meddelande nu." + }, + "Connectivity to the server has been lost.": "Anslutning till servern har brutits.", + "Sent messages will be stored until your connection has returned.": "Skickade meddelanden kommer att lagras tills anslutningen är tillbaka.", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "Det är ingen annan här! Vill du bjuda in någon eller sluta varna om det tomma rummet?", + "Unknown room %(roomId)s": "Okänt rum %(roomId)s", + "Room": "Rum", + "Clear filter": "Töm filter", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Försökte ladda en viss punkt i det här rummets tidslinje, men du har inte behörighet att visa det aktuella meddelandet.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Försökte ladda en specifik punkt i det här rummets tidslinje, men kunde inte hitta den.", + "Success": "Slutfört", + "Unable to remove contact information": "Det gick inte att ta bort kontaktuppgifter", + "Autocomplete Delay (ms):": "Autokompletteringsfördröjning (ms):", + "Ignored Users": "Ignorerade användare", + "These are experimental features that may break in unexpected ways": "Detta är experimentell funktionalitet som kan sluta fungera helt oväntat", + "Use with caution": "Använd med försiktighet", + "To return to your account in future you need to set a password": "För att återvända till ditt konto i framtiden måste du ange ett lösenord", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "Ett epostmeddelande har skickats till %(emailAddress)s. När du har öppnat länken i det, klicka nedan.", + "Please note you are logging into the %(hs)s server, not matrix.org.": "Observera att du loggar in på %(hs)s-servern, inte matrix.org.", + "This homeserver doesn't offer any login flows which are supported by this client.": "Denna hemserver erbjuder inga inloggningsflöden som stöds av den här klienten.", + "Upload new:": "Ladda upp ny:", + "Copied!": "Kopierat!", + "Failed to copy": "Det gick inte att kopiera", + "Removed or unknown message type": "Borttagen eller okänd meddelandetyp", + "Message removed by %(userId)s": "Meddelande borttaget av %(userId)s", + "Message removed": "Meddelande borttaget", + "Robot check is currently unavailable on desktop - please use a web browser": "Robotkontrollen är för närvarande inte tillgänglig för skrivbordsversionen - vänligen använd en webbläsare", + "This Home Server would like to make sure you are not a robot": "Den här hemservern vill bekräfta att du inte är en robot", + "Sign in with CAS": "Logga in med CAS", + "Unknown devices": "Okända enheter", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" innehåller enheter som du inte har sett tidigare.", + "Delete Widget": "Ta bort widget", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "Widget tas bort för alla användare i rummet. Är du säker på att du vill ta bort den?", + "Minimize apps": "Minimera appar", + "Picture": "Bild", + "Blacklist": "Svartlista", + "Unblacklist": "Ta bort svartlistning", + "Failed to invite the following users to %(groupId)s:": "Det gick inte att bjuda in följande användare till %(groupId)s:", + "Failed to invite users to %(groupId)s": "Det gick inte att bjuda in användare till %(groupId)s", + "This room is not public. You will not be able to rejoin without an invite.": "Detta rum är inte offentligt. Du kommer inte kunna gå med igen utan en inbjudan.", + "Ignores a user, hiding their messages from you": "Ignorerar en användare och döljer dess meddelanden för dig", + "Stops ignoring a user, showing their messages going forward": "Slutar ignorera en användare och visar dess meddelanden för framöver", + "Opens the Developer Tools dialog": "Öppna dialogrutan Utvecklarverktyg", + "Notify the whole room": "Meddela hela rummet", + "Room Notification": "Rumsavisering", + "Users": "Användare", + "unknown device": "okänd enhet", + "verified": "verifierad", + "Verification": "Verifiering", + "User ID": "Användar-ID", + "unencrypted": "okrypterad", + "Export room keys": "Exportera rumsnycklar", + "Import room keys": "Importera rumsnycklar", + "File to import": "Fil att importera", + "Which officially provided instance you are using, if any": "Vilken officiellt tillhandahållen instans du använder, om någon", + "(unknown failure: %(reason)s)": "(okänt fel: %(reason)s)", + "(could not connect media)": "(det gick inte ansluta media)", + " (unsupported)": " (stöds ej)", + "Drop file here to upload": "Släpp fil här för att ladda upp", + "Ongoing conference call%(supportedText)s.": "Pågående konferenssamtal%(supportedText)s.", + "%(senderName)s sent an image": "%(senderName)s skickade en bild", + "%(senderName)s sent a video": "%(senderName)s skickade en video", + "%(senderName)s uploaded a file": "%(senderName)s laddade upp en fil", + "Options": "Alternativ", + "Unencrypted message": "Okrypterat meddelande", + "Verified": "Verifierad", + "Unverified": "Overifierad", + "Replying": "Svarar", + "Drop here to favourite": "Släpp här för att favorisera", + "Drop here to tag direct chat": "Släpp här för att göra till direkt-chatt", + "Drop here to restore": "Släpp här för att återställa", + "Drop here to demote": "Släpp här för att göra till låg prioritet", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Du är inte i något rum ännu! Tryck för att skapa ett rum eller för att bläddra i katalogen", + "Would you like to accept or decline this invitation?": "Vill du acceptera eller avböja denna inbjudan?", + "You have been invited to join this room by %(inviterName)s": "Du har blivit inbjuden till rummet av %(inviterName)s", + "Kick this user?": "Kicka användaren?", + "To send messages, you must be a": "För att skicka meddelanden, måste du vara", + "To invite users into the room, you must be a": "För att bjuda in användare i rummet, måste du vara", + "To configure the room, you must be a": "För att konfigurera rummet, måste du vara", + "To kick users, you must be a": "För att kicka användare, måste du vara", + "To ban users, you must be a": "För att banna användare, måste du vara", + "To remove other users' messages, you must be a": "För att ta bort andra användares meddelanden, måste du vara", + "%(user)s is a %(userRole)s": "%(user)s är %(userRole)s", + "You have been kicked from %(roomName)s by %(userName)s.": "Du har blivit kickad från %(roomName)s av %(userName)s.", + "You have been kicked from this room by %(userName)s.": "Du har blivit kickad från detta rum av %(userName)s.", + "You have been banned from %(roomName)s by %(userName)s.": "Du har blivit bannad från %(roomName)s av %(userName)s.", + "You have been banned from this room by %(userName)s.": "Du har blivit bannad från detta rum av %(userName)s.", + "This room": "Detta rum", + "You are trying to access %(roomName)s.": "Du försöker komma åt %(roomName)s.", + "You are trying to access a room.": "Du försöker komma åt ett rum.", + "This is a preview of this room. Room interactions have been disabled": "Detta är en förhandsvisning av rummet. Rumsinteraktioner har inaktiverats", + "To change the room's avatar, you must be a": "För att ändra rummets avatar, måste du vara", + "To change the room's name, you must be a": "För att ändra rummets namn, måste du vara", + "To change the room's main address, you must be a": "För att ändra rummets huvudadress, måste du vara", + "To change the room's history visibility, you must be a": "För att ändra visning av rummets historik, måste du vara", + "To change the permissions in the room, you must be a": "För att ändra behörigheter i rummet, måste du vara", + "To change the topic, you must be a": "För att ändra ämnet, måste du vara", + "To modify widgets in the room, you must be a": "För att ändra widgets i rummet, måste du vara", + "Banned by %(displayName)s": "Bannad av %(displayName)s", + "The visibility of existing history will be unchanged": "Synlighet av befintlig historik förblir oförändrad", + "You should not yet trust it to secure data": "Du bör ännu inte lita på att den säkrar data", + "(warning: cannot be disabled again!)": "(varning: kan inte inaktiveras igen!)", + "Muted Users": "Dämpade användare", + "This room is not accessible by remote Matrix servers": "Detta rum är inte tillgängligt för externa Matrix-servrar", + "To send events of type , you must be a": "För att skicka händelser av typen , måste du vara", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Det gick inte att ladda händelsen som svarades på, antingen finns den inte eller så har du inte behörighet att se den.", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Är du säker på att du vill ta bort den här händelsen? Observera att om du tar bort en rumsnamns- eller ämnesändring kan det ångra ändringen.", + "Send Custom Event": "Skicka anpassad händelse", + "You must specify an event type!": "Du måste ange en händelsetyp!", + "Event sent!": "Händelse skickad!", + "Failed to send custom event.": "Det gick inte att skicka anpassad händelse.", + "Event Type": "Händelsetyp", + "Event Content": "Händelseinnehåll", + "Example": "Exempel", + "example": "exempel", + "Create": "Skapa", + "Advanced options": "Avancerade alternativ", + "Block users on other matrix homeservers from joining this room": "Blockera användare på andra Matrix-hemservrar från att gå med i detta rum", + "This setting cannot be changed later!": "Den här inställningen kan inte ändras senare!", + "Unknown error": "Okänt fel", + "Incorrect password": "Felaktigt lösenord", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "För att verifiera att denna enhet kan litas på, vänligen kontakta ägaren på annat sätt (t ex personligen eller med ett telefonsamtal) och fråga om nyckeln ägaren har i sina användarinställningar för enheten matchar nyckeln nedan:", + "Device name": "Enhetsnamn", + "Device key": "Enhetsnyckel", + "Verify device": "Verifiera enhet", + "I verify that the keys match": "Jag verifierar att nycklarna matchar", + "In future this verification process will be more sophisticated.": "I framtiden kommer denna verifieringsprocess att bli mer sofistikerad.", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Om det matchar, tryck på verifieringsknappen nedan. Om inte så är det risk att någon annan försöker avlyssna enheten och då vill du förmodligen trycka på svartlistsknappen istället.", + "State Key": "Lägesnyckel", + "Send Account Data": "Skicka kontodata", + "Explore Account Data": "Utforska kontodata", + "Toolbox": "Verktygslåda", + "Developer Tools": "Utvecklarverktyg", + "Unverify": "Ta bort verifiering", + "Verify...": "Verifiera...", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Du har lagt till en ny enhet '%(displayName)s', som begär krypteringsnycklar.", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Din overifierade enhet '%(displayName)s' begär krypteringsnycklar.", + "Start verification": "Starta verifiering", + "Share without verifying": "Dela utan att verifiera", + "Ignore request": "Ignorera begäran", + "Loading device info...": "Laddar enhetsinfo...", + "Encryption key request": "Begäran av krypteringsnyckel", + "Log out and remove encryption keys?": "Logga ut och ta bort krypteringsnycklar?", + "Clear Storage and Sign Out": "Rensa lagring och logga ut", + "Send Logs": "Skicka loggar", + "Refresh": "Uppdatera", + "Unable to restore session": "Det gick inte att återställa sessionen", + "We encountered an error trying to restore your previous session.": "Ett fel uppstod vid återställning av din tidigare session.", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Om du nyligen har använt en senare version av Riot kan din session vara inkompatibel med den här versionen. Stäng det här fönstret och använd senare versionen istället.", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "Att rensa webbläsarens lagring kan lösa problemet, men då loggas du ut och krypterad chatthistorik blir oläslig.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "För tillfället svartlistar du overifierade enheter. För att skicka meddelanden till dessa enheter måste du verifiera dem.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Vi rekommenderar att du går igenom verifieringsprocessen för varje enhet för att bekräfta att de tillhör sina rätta ägare, men du kan skicka meddelandet utan att verifiera om du föredrar det.", + "Collapse Reply Thread": "Dölj svarstråd", + "Terms and Conditions": "Villkor", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "För att fortsätta använda hemservern %(homeserverDomain)s måste du granska och godkänna våra villkor.", + "Review terms and conditions": "Granska villkoren", + "Old cryptography data detected": "Gammal krypteringsdata upptäckt", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "Det finns okända enheter i rummet: om du fortsätter utan att verifiera dem, är det möjligt att någon kan avlyssna ditt samtal.", + "Unable to capture screen": "Det gick inte att ta skärmdump", + "Failed to add the following rooms to %(groupId)s:": "Det gick inte att lägga till följande rum till %(groupId)s:", + "Missing roomId.": "Rums-ID saknas.", + "This room is not recognised.": "Detta rum känns inte igen.", + "Usage": "Användning", + "Sets the room topic": "Ställer in rumsämne", + "Unrecognised room alias:": "Oigenkänt rumsalias:", + "Unknown (user, device) pair:": "Okänt (användare, enhet) par:", + "WARNING: Device already verified, but keys do NOT MATCH!": "VARNING: Enhet redan verifierad, men nycklarna MATCHAR INTE!", + "Verified key": "Verifierad nyckel", + "Unrecognised command:": "Oigenkänt kommando:", + "Unbans user with given id": "Avbannar användare med givet id", + "Verifies a user, device, and pubkey tuple": "Verifierar en användare, enhet och nycklar", + "VoIP conference started.": "VoIP-konferens startad.", + "VoIP conference finished.": "VoIP-konferens avslutad.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gjorde framtida rumshistorik synligt för okänd (%(visibility)s).", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Där denna sida innehåller identifierbar information, till exempel ett rums-, användar- eller grupp-ID, tas data bort innan den skickas till servern.", + "The remote side failed to pick up": "Mottagaren kunde inte svara", + "Room name or alias": "Rumsnamn eller alias", + "Jump to read receipt": "Hoppa till läskvitto", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "Just nu är det inte möjligt att svara med en fil så den kommer att skickas utan att vara ett svar.", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Denna process låter dig exportera nycklarna för meddelanden som du har fått i krypterade rum till en lokal fil. Du kommer sedan att kunna importera filen i en annan Matrix-klient i framtiden, så att den klienten också kan dekryptera meddelandena.", + "Unknown for %(duration)s": "Okänt i %(duration)s", + "Unknown": "Okänt", + "Reload widget": "Ladda om widget", + "e.g. %(exampleValue)s": "t.ex. %(exampleValue)s", + "Can't leave Server Notices room": "Kan inte lämna serveraviseringsrummet", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "Detta rum används för viktiga meddelanden från hemservern, så du kan inte lämna det.", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Data från en äldre version av Riot has upptäckts. Detta ska ha orsakat att krypteringen inte fungerat i den äldre versionen. Krypterade meddelanden som nyligen har skickats medans den äldre versionen användes kanske inte kan dekrypteras i denna version. Detta kan även orsaka att meddelanden skickade med denna version inte fungerar. Om du upplever problem, logga ut och in igen. För att behålla meddelandehistoriken, exportera dina nycklar och importera dem igen.", + "Confirm Removal": "Bekräfta borttagning", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Det gick inte att kontrollera att adressen den här inbjudan skickades till matchar en som är kopplad till ditt konto.", + "You may wish to login with a different account, or add this email to this account.": "Du kanske vill logga in med ett annat konto, eller lägga till e-postadressen till detta konto.", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "Vänligen hjälp till att förbättra Riot.im genom att skicka anonyma användardata. Detta kommer att använda en cookie (se vår Cookiepolicy).", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "Vänligen hjälp till att förbättra Riot.im genom att skicka anonyma användardata. Detta kommer att använda en cookie.", + "Yes, I want to help!": "Ja, jag vill hjälpa till!", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s aktiverade kryptering (algoritm %(algorithm)s).", + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)slämnade och gick med igen %(count)s gånger", + "one": "%(severalUsers)slämnade och gick med igen" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)slämnade och gick med igen %(count)s gånger", + "one": "%(oneUser)slämnade och gick med igen" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)savböjde sina inbjudningar %(count)s gånger", + "one": "%(severalUsers)savböjde sina inbjudningar" + }, + "Unable to reject invite": "Det gick inte att avböja inbjudan", + "Reject all %(invitedRooms)s invites": "Avböj alla %(invitedRooms)s inbjudningar", + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)savböjde sin inbjudan %(count)s gånger", + "one": "%(oneUser)savböjde sin inbjudan" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)sfick sina inbjudningar tillbakadragna %(count)s gånger", + "one": "%(severalUsers)sfick sina inbjudningar tillbakadragna" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)sfick sin inbjudan tillbakadragen %(count)s gånger", + "one": "%(oneUser)sfick sin inbjudan tillbakadragen" + }, + "were invited %(count)s times": { + "other": "blev inbjudna %(count)s gånger", + "one": "blev inbjudna" + }, + "was invited %(count)s times": { + "other": "blev inbjuden %(count)s gånger", + "one": "blev inbjuden" + }, + "were banned %(count)s times": { + "other": "blev bannade %(count)s gånger", + "one": "blev bannade" + }, + "was banned %(count)s times": { + "other": "blev bannad %(count)s gånger", + "one": "blev bannad" + }, + "Ban this user?": "Banna användaren?", + "were kicked %(count)s times": { + "other": "blev kickade %(count)s gånger", + "one": "blev kickade" + }, + "was kicked %(count)s times": { + "other": "blev kickad %(count)s gånger", + "one": "blev kickad" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)sbytte namn %(count)s gånger", + "one": "%(severalUsers)sbytte namn" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)sbytte namn %(count)s gånger", + "one": "%(oneUser)sbytte namn" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)sändrade sin avatar %(count)s gånger", + "one": "%(severalUsers)sändrade sin avatar" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)sändrade sin avatar %(count)s gånger", + "one": "%(oneUser)sändrade sin avatar" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s och %(count)s andra", + "one": "%(items)s och en annan" + }, + "collapse": "fäll ihop", + "expand": "fäll ut", + "Custom of %(powerLevel)s": "Anpassad på %(powerLevel)s", + "In reply to ": "Som svar på ", + "Who would you like to add to this community?": "Vem vill du lägga till i denna community?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "Varning: En person du lägger till i en community kommer att vara synlig för alla som känner till community-ID:t", + "Invite new community members": "Bjud in nya community-medlemmar", + "Which rooms would you like to add to this community?": "Vilka rum vill du lägga till i denna community?", + "Show these rooms to non-members on the community page and room list?": "Vissa dessa rum och icke-medlemmar på community-sidan och -rumslistan?", + "Add rooms to the community": "Lägg till rum i communityn", + "Add to community": "Lägg till i community", + "Failed to invite users to community": "Det gick inte att bjuda in användare till communityn", + "Mirror local video feed": "Spegelvänd lokal video", + "Disable Community Filter Panel": "Inaktivera community-filterpanel", + "Community Invites": "Community-inbjudningar", + "Invalid community ID": "Ogiltigt community-ID", + "'%(groupId)s' is not a valid community ID": "%(groupId)s är inte ett giltigt community-ID", + "New community ID (e.g. +foo:%(localDomain)s)": "Nytt community-ID (t.ex. +foo:%(localDomain)s)", + "Remove from community": "Ta bort från community", + "Disinvite this user from community?": "Ta bort användarens inbjudan till community?", + "Remove this user from community?": "Ta bort användaren från community?", + "Failed to remove user from community": "Det gick inte att ta bort användaren från community", + "Filter community members": "Filtrera community-medlemmar", + "Removing a room from the community will also remove it from the community page.": "Om du tar bort ett rum från communityn tas det även bort från communityns sida.", + "Failed to remove room from community": "Det gick inte att ta bort rum från community", + "Only visible to community members": "Endast synlig för community-medlemmar", + "Filter community rooms": "Filtrera community-rum", + "Community IDs cannot be empty.": "Community-ID kan inte vara tomt.", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "Community-ID får endast innehålla tecknen a-z, 0-9 och '=_-./'", + "Something went wrong whilst creating your community": "Något gick fel när din community skapades", + "Create Community": "Skapa community", + "Community Name": "Community-namn", + "Community ID": "Community-ID", + "View Community": "Visa community", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

HTML för din community-sida

\n

\n Använd den långa beskrivningen för att introducera nya medlemmar till communityn, eller dela\n några viktiga länkar\n

\n

\n Du kan även använda 'img'-taggar\n

\n", + "Add rooms to the community summary": "Lägg till rum i community-översikten", + "Add users to the community summary": "Lägg till användare i community-översikten", + "Failed to update community": "Det gick inte att uppdatera community", + "Unable to join community": "Det gick inte att gå med i communityn", + "Leave Community": "Lämna community", + "Unable to leave community": "Det gick inte att lämna community", + "Community Settings": "Community-inställningar", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "Det kan dröja upp till 30 minuter innan ändringar på communityns namn och avatar blir synliga för andra användare.", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "Dessa rum visas för community-medlemmar på community-sidan. Community-medlemmar kan gå med i rummen genom att klicka på dem.", + "Add rooms to this community": "Lägg till rum i denna community", + "%(inviter)s has invited you to join this community": "%(inviter)s har bjudit in dig till denna community", + "Join this community": "Gå med i denna community", + "Leave this community": "Lämna denna community", + "You are an administrator of this community": "Du är administratör för denna community", + "You are a member of this community": "Du är medlem i denna community", + "Who can join this community?": "Vem kan gå med i denna community?", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "Din community har ingen lång beskrivning eller HTML-sida att visa för medlemmar.
Klicka här för att öppna inställningar och lägga till det!", + "Community %(groupId)s not found": "Community %(groupId)s hittades inte", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "För att skapa ett filter, dra en community-avatar till filterpanelen längst till vänster på skärmen. Du kan när som helst klicka på en avatar i filterpanelen för att bara se rum och personer som är associerade med den communityn.", + "Create a new community": "Skapa en ny community", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "Skapa en community för att gruppera användare och rum! Bygg en anpassad hemsida för att markera er plats i Matrix-universumet.", + "Invite to this community": "Bjud in till denna community", + "Something went wrong when trying to get your communities.": "Något gick fel vid hämtning av dina communityn.", + "You're not currently a member of any communities.": "Du är för närvarande inte medlem i någon community.", + "Communities": "Communityn", + "This Home server does not support communities": "Denna hemserver stöder inte communityn", + "Your Communities": "Dina communityn", + "Did you know: you can use communities to filter your Riot.im experience!": "Visste du att: du kan använda communityn för att filtrera din Riot.im-upplevelse!", + "Error whilst fetching joined communities": "Fel vid hämtning av anslutna communityn", + "Featured Rooms:": "Utvalda rum:", + "Featured Users:": "Utvalda användare:", + "Everyone": "Alla", + "To notify everyone in the room, you must be a": "För att meddela alla i rummet, måste du vara", + "Long Description (HTML)": "Lång beskrivning (HTML)", + "Description": "Beskrivning", + "Failed to load %(groupId)s": "Det gick inte att ladda %(groupId)s", + "Failed to withdraw invitation": "Det gick inte att ta bort inbjudan", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "Är du säker på att du vill ta bort %(roomName)s från %(groupId)s?", + "Failed to remove '%(roomName)s' from %(groupId)s": "Det gick inte att ta bort %(roomName)s från %(groupId)s", + "Something went wrong!": "Något gick fel!", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "Synligheten för '%(roomName)s' i %(groupId)s kunde inte uppdateras.", + "Visibility in Room List": "Synlighet i rumslistan", + "Visible to everyone": "Synlig för alla", + "Please select the destination room for this message": "Välj vilket rum meddelandet ska skickas till", + "Disinvite this user?": "Ta bort användarens inbjudan?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "Du kommer inte att kunna ångra den här ändringen eftersom du sänker din egen behörighetsnivå, om du är den sista privilegierade användaren i rummet blir det omöjligt att ändra behörigheter.", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Du kommer inte att kunna ångra den här ändringen eftersom du höjer användaren till samma behörighetsnivå som dig själv.", + "User Options": "Användaralternativ", + "unknown caller": "okänd uppringare", + "At this time it is not possible to reply with an emote.": "Det är för närvarande inte möjligt att svara med en emoji.", + "To use it, just wait for autocomplete results to load and tab through them.": "För att använda detta, vänta på att autokompletteringen laddas och tabba igenom resultatet.", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "VARNING: NYCKELVERIFIERINGEN MISSLYCKADES! Signeringsnyckeln för %(userId)s och enhet %(deviceId)s är \"%(fprint)s\" som inte matchar den angivna nyckeln \"%(fingerprint)s\". Detta kan betyda att dina kommunikationer avlyssnas!", + "Hide join/leave messages (invites/kicks/bans unaffected)": "Dölj \"gå med\"/lämna-meddelanden (inbjudningar/kickningar/banningar opåverkat)", + "Disable Peer-to-Peer for 1:1 calls": "Inaktivera enhet-till-enhet-kommunikation för direktsamtal (mellan två personer)", + "Enable inline URL previews by default": "Aktivera URL-förhandsvisning som standard", + "Enable URL previews for this room (only affects you)": "Aktivera URL-förhandsvisning för detta rum (påverkar bara dig)", + "Enable URL previews by default for participants in this room": "Aktivera URL-förhandsvisning som standard för deltagare i detta rum", + "You have enabled URL previews by default.": "Du har aktiverat URL-förhandsvisning som standard.", + "You have disabled URL previews by default.": "Du har inaktiverat URL-förhandsvisning som standard.", + "URL previews are enabled by default for participants in this room.": "URL-förhandsvisning är aktiverat som standard för deltagare i detta rum.", + "URL previews are disabled by default for participants in this room.": "URL-förhandsvisning är inaktiverat som standard för deltagare i detta rum.", + "URL Previews": "URL-förhandsvisning", + "Which rooms would you like to add to this summary?": "Vilka rum vill du lägga till i översikten?", + "Add to summary": "Lägg till i översikt", + "Failed to add the following rooms to the summary of %(groupId)s:": "Det gick inte att lägga till följande rum i översikten för %(groupId)s:", + "Add a Room": "Lägg till ett rum", + "Failed to remove the room from the summary of %(groupId)s": "Det gick inte att ta bort rummet från översikten i %(groupId)s", + "The room '%(roomName)s' could not be removed from the summary.": "Rummet '%(roomName)s' kunde inte tas bort från översikten.", + "Who would you like to add to this summary?": "Vem vill du lägga till i översikten?", + "Failed to add the following users to the summary of %(groupId)s:": "Det gick inte att lägga till följande användare i översikten för %(groupId)s:", + "Add a User": "Lägg till en användare", + "Failed to remove a user from the summary of %(groupId)s": "Det gick inte att ta bort en användare från översikten i %(groupId)s", + "The user '%(displayName)s' could not be removed from the summary.": "Användaren '%(displayName)s' kunde inte tas bort från översikten.", + "Unable to accept invite": "Det gick inte att acceptera inbjudan", + "Leave %(groupName)s?": "Lämna %(groupName)s?", + "Enable widget screenshots on supported widgets": "Aktivera widget-skärmdumpar för widgets som stöder det", + "Your key share request has been sent - please check your other devices for key share requests.": "Din nyckeldelningsbegäran har skickats - kolla efter nyckeldelningsbegäran på dina andra enheter.", + "Undecryptable": "Odekrypterbar", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "Nyckeldelningsbegäran skickas automatiskt till dina andra enheter. Om du avvisat nyckelbegäran på dina andra enheter, klicka här för att begära nycklarna till den här sessionen igen.", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "Om dina andra enheter inte har nyckeln till detta meddelande kommer du du att kunna dekryptera det.", + "Key request sent.": "Nyckelbegäran skickad.", + "Re-request encryption keys from your other devices.": "Begär krypteringsnycklar igen från dina andra enheter.", + "Unban": "Avbanna", + "Unban this user?": "Avbanna användaren?", + "Unmute": "Ta bort dämpning", + "You don't currently have any stickerpacks enabled": "Du har för närvarande inga dekalpaket aktiverade", + "Add a stickerpack": "Lägg till dekalpaket", + "Stickerpack": "Dekalpaket", + "Hide Stickers": "Dölj dekaler", + "Show Stickers": "Visa dekaler", + "Error decrypting audio": "Det gick inte att dekryptera ljud", + "Error decrypting image": "Det gick inte att dekryptera bild", + "Error decrypting video": "Det gick inte att dekryptera video", + "Add an Integration": "Lägg till integration", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Du skickas till en tredjepartswebbplats så att du kan autentisera ditt konto för användning med %(integrationsUrl)s. Vill du fortsätta?", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Du kan använda de anpassade serverinställningar för att logga in på andra Matrix-servrar genom att ange en annan hemserver-URL.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Det gör det möjligt att använda denna app med ett befintligt Matrix-konto på en annan hemserver.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Du kan även ange en anpassad identitetsserver men det förhindrar vanligtvis interaktion med användare baserat på e-postadress.", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Om du inte anger en epostadress, kan du inte återställa ditt lösenord. Är du säker?", + "You are registering with %(SelectedTeamName)s": "Du registrerar dig med %(SelectedTeamName)s", + "Warning: This widget might use cookies.": "Varning: Denna widget kan använda cookies.", + "Popout widget": "Poppa ut widget", + "were unbanned %(count)s times": { + "other": "blev avbannade %(count)s gånger", + "one": "blev avbannade" + }, + "was unbanned %(count)s times": { + "other": "blev avbannad %(count)s gånger", + "one": "blev avbannad" + }, + "Failed to indicate account erasure": "Det gick inte att ange kontoradering", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Detta kommer att göra ditt konto permanent oanvändbart. Du kommer inte att kunna logga in, och ingen kommer att kunna registrera samma användar-ID. Ditt konto kommer att lämna alla rum som det deltar i, och dina kontouppgifter kommer att raderas från identitetsservern. Denna åtgärd går inte att ångra.", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Att du inaktiverar ditt konto gör inte att meddelanden som du skickat glöms automatiskt. Om du vill att vi ska glömma dina meddelanden, kryssa i rutan nedan.", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Meddelandesynlighet i Matrix liknar email. Att vi glömmer dina meddelanden innebär att meddelanden som du skickat inte delas med några nya eller oregistrerade användare, men registrerade användare som redan har tillgång till meddelandena kommer fortfarande ha tillgång till sin kopia.", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Glöm alla meddelanden som jag har skickat när mitt konto inaktiveras (Varning: detta kommer att göra så att framtida användare får se ofullständiga konversationer)", + "To continue, please enter your password:": "För att fortsätta, ange ditt lösenord:", + "password": "lösenord", + "Debug Logs Submission": "Inlämning av felsökningsloggar", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Om du har anmält en bugg via GitHub, kan felsökningsloggar hjälpa oss spåra problemet. Felsökningsloggarna innehåller användningsdata för applikationen inklusive ditt användarnamn, ID eller alias för rum och grupper du besökt och användarnamn för andra användare. De innehåller inte meddelanden.", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot samlar in anonym analysdata för att vi ska kunna förbättra applikationen.", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "Integritet är viktig för oss, så vi samlar inte in några personliga eller identifierbara uppgifter för våra analyser.", + "Learn more about how we use analytics.": "Läs mer om hur vi använder analysdata.", + "Analytics": "Analysdata", + "Send analytics data": "Skicka analysdata", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Du har loggats ut från alla enheter och kommer inte längre att få push-meddelanden. För att återaktivera det, logga in på varje enhet igen", + "Passphrases must match": "Passfraser måste matcha", + "Passphrase must not be empty": "Lösenfras får inte vara tom", + "Confirm passphrase": "Bekräfta lösenfrasen", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s ändrade fastnålade meddelanden för rummet.", + "Message Pinning": "Nåla fast meddelanden", + "Unpin Message": "Ta bort fastnålning", + "No pinned messages.": "Inga fastnålade meddelanden.", + "Pinned Messages": "Fastnålade meddelanden", + "Pin Message": "Nåla fast meddelande", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Den exporterade filen kommer att låta någon som kan läsa den att dekryptera alla krypterade meddelanden som du kan se, så du bör vara noga med att hålla den säker. För att hjälpa till med detta, bör du ange en lösenfras nedan, som kommer att användas för att kryptera exporterad data. Det kommer bara vara möjligt att importera data genom att använda samma lösenfras.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Denna process möjliggör import av krypteringsnycklar som tidigare exporterats från en annan Matrix-klient. Du kommer då kunna dekryptera alla meddelanden som den andra klienten kunde dekryptera.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Den exporterade filen kommer vara skyddad med en lösenfras. Du måste ange lösenfrasen här, för att dekryptera filen.", + "Flair": "Emblem", + "Showing flair for these communities:": "Visar emblem för dessa communityn:", + "This room is not showing flair for any communities": "Detta rum visar inte emblem för några communityn", + "Flair will appear if enabled in room settings": "Emblem kommer visas om det är aktiverat i rumsinställningarna", + "Flair will not appear": "Emblem kommer inte att visas", + "Display your community flair in rooms configured to show it.": "Visa ditt community-emblem i rum som är konfigurerade för att visa det.", + "Jitsi Conference Calling": "Jitsi konferenssamtal", + "Encrypting": "Krypterar", + "Encrypted, not sent": "Krypterat, inte skickat", + "Share Link to User": "Dela länk till användare", + "Share room": "Dela rum", + "Share Room": "Dela rum", + "Link to most recent message": "Länk till senaste meddelandet", + "Share User": "Dela användare", + "Share Community": "Dela community", + "Share Room Message": "Dela rumsmeddelande", + "Link to selected message": "Länk till valt meddelande", + "COPY": "KOPIERA", + "Share Message": "Dela meddelande", + "No Audio Outputs detected": "Inga ljudutgångar hittades", + "Audio Output": "Ljudutgång", + "Try the app first": "Testa appen först", + "A conference call could not be started because the intgrations server is not available": "Konferenssamtal kunde inte startas för integrationsservern är otillgänglig", + "Call in Progress": "Samtal pågår", + "A call is currently being placed!": "Ett samtal håller på att upprättas!", + "A call is already in progress!": "Ett samtal pågår redan!", + "Permission Required": "Behörighet krävs", + "You do not have permission to start a conference call in this room": "Du har inte behörighet att starta ett konferenssamtal i detta rum", + "This event could not be displayed": "Den här händelsen kunde inte visas", + "deleted": "borttagen", + "underlined": "understruken", + "inline-code": "kod", + "block-quote": "citat", + "bulleted-list": "punktlista", + "numbered-list": "nummerlista", + "You have no historical rooms": "Du har inga historiska rum", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "I krypterade rum, som detta, är URL-förhandsvisning inaktiverad som standard för att säkerställa att din hemserver (där förhandsvisningar genereras) inte kan samla information om länkar du ser i rummet.", + "The email field must not be blank.": "Email-fältet får inte vara tomt.", + "The user name field must not be blank.": "Användarnamns-fältet får inte vara tomt.", + "The phone number field must not be blank.": "Telefonnummer-fältet får inte vara tomt.", + "The password field must not be blank.": "Lösenords-fältet får inte vara tomt.", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "Hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.", + "Failed to remove widget": "Det gick inte att ta bort widget", + "An error ocurred whilst trying to remove the widget from the room": "Ett fel uppstod vid borttagning av widget från rummet", + "Demote yourself?": "Sänk egen behörighetsnivå?", + "Demote": "Degradera", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "När någon postar en URL i sitt meddelande, kan URL-förhandsvisning ge mer information om länken, såsom titel, beskrivning, och en bild från webbplatsen.", + "You can't send any messages until you review and agree to our terms and conditions.": "Du kan inte skicka några meddelanden innan du granskar och godkänner våra villkor.", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.", + "This homeserver has hit its Monthly Active User limit": "Hemservern har nått sin månatliga gräns för användaraktivitet", + "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen.", + "Show empty room list headings": "Visa tomma rumsrubriker", + "System Alerts": "Systemvarningar", + "Sorry, your homeserver is too old to participate in this room.": "Tyvärr, din hemserver är för gammal för att delta i detta rum.", + "Please contact your homeserver administrator.": "Vänligen kontakta din hemserver-administratör.", + "Increase performance by only loading room members on first view": "Öka prestanda genom att bara ladda rumsdeltagare vid första visning", + "Internal room ID: ": "Internt rums-ID: ", + "Room version number: ": "Rumsversionsnummer: ", + "Please contact your service administrator to continue using the service.": "Kontakta din serviceadministratör för att fortsätta använda tjänsten.", + "This homeserver has hit its Monthly Active User limit.": "Hemservern har nått sin månatliga gräns för användaraktivitet.", + "This homeserver has exceeded one of its resource limits.": "Hemservern har överskridit en av sina resursgränser.", + "Please contact your service administrator to get this limit increased.": "Kontakta din serviceadministratör för att få denna gräns ökad.", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "Hemservern har nått sin månatliga gräns för användaraktivitet så vissa användare kommer inte kunna logga in.", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "Hemservern har överskridit en av sina resursgränser så vissa användare kommer inte kunna logga in.", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har nått sin månatliga gräns för användaraktivitet. Kontakta din serviceadministratör för att fortsätta använda servicen.", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "Ditt meddelande skickades inte för hemservern har överskridit en av sina resursgränser. Kontakta din serviceadministratör för att fortsätta använda servicen.", + "Lazy loading members not supported": "Behovsladdning av medlemmar stöds inte", + "Lazy loading is not supported by your current homeserver.": "Behovsladdning stöds inte av din nuvarande hemserver.", + "Legal": "Juridiskt", + "Please contact your service administrator to continue using this service.": "Kontakta din serviceadministratör för att fortsätta använda servicen.", + "This room has been replaced and is no longer active.": "Detta rum har ersatts och är inte längre aktivt.", + "The conversation continues here.": "Konversationen fortsätter här.", + "Upgrade room to version %(ver)s": "Uppgradera rummet till version %(ver)s", + "There is a known vulnerability affecting this room.": "Det finns en känd sårbarhet som påverkar detta rum.", + "This room version is vulnerable to malicious modification of room state.": "Denna rumsversion är sårbar för skadlig modifiering av rumstillstånd.", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "Klicka här för att uppgradera till senaste rumsversionen och se till att rumsintegriteten är skyddad.", + "Only room administrators will see this warning": "Endast rumsadministratörer kommer att se denna varning", + "This room is a continuation of another conversation.": "Detta rum är en fortsättning på en annan konversation.", + "Click here to see older messages.": "Klicka här för att se äldre meddelanden.", + "Failed to upgrade room": "Det gick inte att uppgradera rum", + "The room upgrade could not be completed": "Rumsuppgraderingen kunde inte slutföras", + "Upgrade this room to version %(version)s": "Uppgradera detta rum till version %(version)s", + "Upgrade Room Version": "Uppgradera rumsversion", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "Uppgradering av detta rum kräver att nuvarande rumsinstans stängs och ersätts av ett nytt rum. För att ge rumsmedlemmarna bästa möjliga upplevelse, kommer vi att:", + "Create a new room with the same name, description and avatar": "Skapa ett nytt rum med samma namn, beskrivning och avatar", + "Update any local room aliases to point to the new room": "Uppdatera lokala rumsalias att peka på det nya rummet", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "Hindra användare från att prata i den gamla rumsversionen och posta ett meddelande som rekommenderar användare att flytta till det nya rummet", + "Put a link back to the old room at the start of the new room so people can see old messages": "Sätta en länk tillbaka till det gamla rummet i början av det nya rummet så att folk kan se gamla meddelanden", + "Registration Required": "Registrering krävs", + "You need to register to do this. Would you like to register now?": "Du måste registrera dig för att göra detta. Vill du registrera dig nu?", + "Forces the current outbound group session in an encrypted room to be discarded": "Tvingar den aktuella utgående gruppsessionen i ett krypterat rum att överges", + "Unable to connect to Homeserver. Retrying...": "Det gick inte att ansluta till hemserver. Försöker igen ...", + "Unable to query for supported registration methods": "Det gick inte att hämta stödda registreringsmetoder", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s via %(browserName)s på %(osName)s", + "Riot Desktop on %(platformName)s": "Riot Desktop på %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot stöds inte på mobil-webb. Installera appen?", + "Unknown device": "Okänd enhet", + "You need to be using HTTPS to place a screen-sharing call.": "Du måste använda HTTPS för att ringa med skärmdelning.", + "Welcome to Riot.im": "Välkommen till Riot.im", + "Chat with Riot Bot": "Chatta med Riot Bot", + "Get started with some tips from Riot Bot!": "Kom igång med några tips från Riot Bot!", + "General discussion about Matrix and Riot": "Allmän diskussion om Matrix och Riot", + "Discussion of all things Matrix!": "Diskussion om allt gällande Matrix!", + "Matrix technical discussions": "Teknisk diskussion om Matrix", + "Running Matrix services": "Driva Matrix-tjänster", + "Community-run support for Synapse": "Gemenskapsdriven användarhjälp för Synapse", + "Announcements about Synapse releases": "Meddelanden om Synapse-versioner", + "Support for those using and running matrix-appservice-irc": "Hjälp för de som använder och driver matrix-appservice-irc", + "Support for those using the Matrix spec": "Hjälp för de som använder Matrix specifikation", + "Design and implementation of E2E in Matrix": "Design och implementation av E2E i Matrix", + "Implementing VR services with Matrix": "Implementation av VR-tjänster med Matrix", + "Implementing VoIP services with Matrix": "Implementation av VoIP-tjänster med Matrix", + "Discussion of the Identity Service API": "Diskussion om Identity Service API:n", + "Support for those using, running and writing other bridges": "Hjälp för de som använder, driver och utvecklar andra bryggor", + "Contributing code to Matrix and Riot": "Bidra med kod till Matrix och Riot", + "Dev chat for the Riot/Web dev team": "Chatt för utvecklare av Riot/Web", + "Dev chat for the Dendrite dev team": "Chatt för utvecklare av Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Många rum finns redan i Matrix, länkade till andra nätverk (Slack, IRC, Gitter etc.) eller fristående. Kolla in katalogen!", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Decentraliserad, krypterad chatt & samarbetsplattform möjliggjort med [matrix]", + "Search the room directory": "Sök i rumskatalogen", + "Riot/Web & Desktop chat": "Riot/Web & Desktop-chatt", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk-chatt", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk-chatt", + "Admin support for Dendrite": "Hjälp för administratörer av Dendrite", + "Building services on Matrix": "Bygga tjänster med Matrix", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Du kan använda anpassade serverinställningar för att logga in på andra Matrix-servrar genom att ange en annan hemserver-URL.
Du kan då använda Riot med ett befintligt Matrix-konto på en annan hemserver.

Du kan också ange en anpassad identitetsserver men kommer då inte kunna bjuda in användare med epostadress, eller själv bli inbjuden med epostadress.", + "Co-ordination for Riot translators": "Koordination för Riot-översättare" +} \ No newline at end of file diff --git a/riot/i18n/te.json b/riot/i18n/te.json new file mode 100644 index 0000000..4d1cd8a --- /dev/null +++ b/riot/i18n/te.json @@ -0,0 +1,286 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "ఒక టెక్స్ట్ సందేశం +%(msisdn)s కు పంపబడింది. దయచేసి దీనిలో ఉన్న ధృవీకరణ కోడ్ను నమోదు చేయండి", + "Accept": "అంగీకరించు", + "%(targetName)s accepted an invitation.": "%(targetName)s ఆహ్వానాన్ని అంగీకరించింది.", + "Account": "ఖాతా", + "Access Token:": "యాక్సెస్ టోకెన్:", + "Add": "చేర్చు", + "Add a topic": "అంశాన్ని జోడించండి", + "Add email address": "ఇమెయిల్ చిరునామాను జోడించండి", + "Add phone number": "ఫోన్ నంబర్ను జోడించండి", + "Admin": "అడ్మిన్", + "Admin Tools": "నిర్వాహక ఉపకరణాలు", + "VoIP": "విఒఐపి", + "Missing Media Permissions, click here to request.": "మీడియా అనుమతులు మిస్ అయయి, అభ్యర్థించడానికి ఇక్కడ క్లిక్ చేయండి.", + "No Microphones detected": "మైక్రోఫోన్లు కనుగొనబడలేదు", + "No Webcams detected": "వెబ్కామ్లు కనుగొనబడలేదు", + "No media permissions": "మీడియా అనుమతులు లేవు", + "You may need to manually permit Riot to access your microphone/webcam": "రియోట్ను ను మీరు మాన్యువల్ గా మీ మైక్రోఫోన్ / వెబ్క్యామ్ను ప్రాప్యత చేయడానికి అనుమతించాలి", + "Default Device": "డిఫాల్ట్ పరికరం", + "Microphone": "మైక్రోఫోన్", + "Camera": "కెమెరా", + "Advanced": "ఆధునిక", + "Algorithm": "అల్గారిథం", + "Hide removed messages": "తీసివేసిన సందేశాలను దాచండి", + "Always show message timestamps": "ఎల్లప్పుడూ సందేశాల సమయ ముద్రలు చూపించు", + "Authentication": "ప్రామాణీకరణ", + "Alias (optional)": "అలియాస్ (ఇవచు ఇవకపపోవచు)", + "You do not have permission to post to this room": "మీకు ఈ గదికి పోస్ట్ చేయడానికి అనుమతి లేదు", + "You have been invited to join this room by %(inviterName)s": "%(inviterName)s ఈ గదిలో చేరడానికి మీరు ఆహ్వానించబడ్డారు", + "Active call (%(roomName)s)": "క్రియాశీల కాల్ల్ (%(roomName)s)", + "A new password must be entered.": "కొత్త పాస్ వర్డ్ ను తప్పక నమోదు చేయాలి.", + "%(senderName)s answered the call.": "%(senderName)s కు సమాధానం ఇచ్చారు.", + "An error has occurred.": "ఒక లోపము సంభవించినది.", + "Anyone": "ఎవరైనా", + "Anyone who knows the room's link, apart from guests": "అతిథులు కాకుండా గది యొక్క లింక్ తెలిసిన వారు ఎవరైనా", + "Anyone who knows the room's link, including guests": "అతిథులతో సహా, గది లింక్ తెలిసిన వారు ఎవరైనా", + "Are you sure?": "మీరు చెప్పేది నిజమా?", + "Are you sure you want to leave the room '%(roomName)s'?": "మీరు ఖచ్చితంగా గది '%(roomName)s' వదిలివేయాలనుకుంటున్నారా?", + "Are you sure you want to reject the invitation?": "మీరు ఖచ్చితంగా ఆహ్వానాన్ని తిరస్కరించాలనుకుంటున్నారా?", + "Are you sure you want to upload the following files?": "మీరు ఖచ్చితంగా ఈ క్రింది ఫైళ్ళను అప్లోడ్ చేయాలనుకుంటున్నారా?", + "Attachment": "జోడింపు", + "Autoplay GIFs and videos": "స్వీయ జిఐఫ్ లు మరియు వీడియోలు", + "Ban": "బాన్", + "Banned users": "నిషేధించిన వినియోగదారులు", + "Bans user with given id": "ఇచ్చిన ఐడి తో వినియోగదారుని నిషేధించారు", + "Blacklisted": "నిరోధిత జాబితాలోని", + "Bulk Options": "సమూహ ఐచ్ఛికాలు", + "Call Timeout": "కాల్ గడువు ముగిసింది", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "గృహనిర్వాహకులకు కనెక్ట్ చేయలేరు - దయచేసి మీ కనెక్టివిటీని తనిఖీ చేయండి, మీ 1 హోమరుసు యొక్క ఎస్ఎస్ఎల్ సర్టిఫికేట్ 2 ని విశ్వసనీయపరుచుకొని, బ్రౌజర్ పొడిగింపు అభ్యర్థనలను నిరోధించబడదని నిర్ధారించుకోండి.", + "Can't load user settings": "వినియోగదారు సెట్టింగ్లను లోడ్ చేయలేరు", + "Change Password": "పాస్వర్డ్ మార్చండి", + "%(senderName)s changed their profile picture.": "%(senderName)s వారి ప్రొఫైల్ చిత్రాన్ని మార్చారు.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s గది పేరు తొలగించబడింది.", + "Changes to who can read history will only apply to future messages in this room": "చరిత్ర చదివేవారికి మార్పులు ఈ గదిలో భవిష్య సందేశాలకు మాత్రమే వర్తిస్తాయి", + "Changes your display nickname": "మీ ప్రదర్శన మారుపేరుని మారుస్తుంది", + "You cannot place a call with yourself.": "మీరు మీతో కాల్ చేయలేరు.", + "You are already in a call.": "మీరు ఇప్పటికే కాల్లో ఉన్నారు.", + "You are trying to access %(roomName)s.": "మీరు %(roomName)s లను యాక్సెస్ చేయడానికి ప్రయత్నిస్తున్నారు.", + "You cannot place VoIP calls in this browser.": "మీరు ఈ బ్రౌజర్లో VoIP కాల్లను ఉంచలేరు.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "మీరు అన్ని పరికరాల నుండి లాగ్ అవుట్ అయ్యారు మరియు ఇకపై పుష్ ఉండదు.\nప్రకటనలను నోటిఫికేషన్లను పునఃప్రారంభించడానికి, ప్రతి పరికరంలో మళ్లీ సైన్ ఇన్ చేయండి", + "You have no visible notifications": "మీకు కనిపించే నోటిఫికేషన్లు లేవు", + "You need to be able to invite users to do that.": "మీరు దీన్ని చేయడానికి వినియోగదారులను ఆహ్వానించగలరు.", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "పాస్ వర్డ్ మార్చడం వల్ల ప్రస్తుతం అన్ని పరికరాల్లో ఏదైనా ఎండ్-టు-ఎండ్ ఎన్క్రిప్షన్ కీలను రీసెట్ చేస్తుంది, ఎన్క్రిప్టెడ్ చాట్ చరిత్రను చదవటానికి వీలెకుండ చెస్తుంది, మీరు మొదట మీ గది కీలను ఎగుమతి చేసి, తర్వాత వాటిని తిరిగి దిగుమతి చేసుకోకపోతే. భవిష్యత్తులో ఇది మెరుగవుతుంది.", + "Claimed Ed25519 fingerprint key": "ఎడ్25519 వేలిముద్ర కీ ని పేర్కొన్నారు", + "Clear Cache and Reload": "కాష్ ని క్లియర్ చెసి రీలోడ్ చెయండి", + "Clear Cache": "క్లియర్ కాష్", + "Click here to join the discussion!": "ఇక్కడ నొక్కండి చర్చలో చేరడానికి!", + "Click here to fix": "పరిష్కరించడానికి ఇక్కడ క్లిక్ చేయండి", + "Click to mute audio": "ఆడియోను మ్యూట్ చేయడానికి క్లిక్ చేయండి", + "Click to mute video": "వీడియో మ్యూట్ చేయడానికి క్లిక్ చేయండి", + "click to reveal": "బహిర్గతం చెయుటకు క్లిక్ చేయండి", + "Click to unmute video": "వీడియోను అన్మ్యూట్ చేయడానికి క్లిక్ చేయండి", + "Click to unmute audio": "ఆడియోని అన్మ్యూట్ చేయడానికి క్లిక్ చేయండి", + "Close": "ముసివెయండి", + "Command error": "కమాండ్ లోపం", + "Commands": "కమ్మండ్స్", + "Conference call failed.": "కాన్ఫరెన్స్ కాల్ విఫలమైంది.", + "Conference calling is in development and may not be reliable.": "కాన్ఫరెన్స్ కాలింగ్ అభివృద్ధిలో ఉండటం వల్ల విశ్వసనీయంగా ఉండకపోవచ్చు.", + "Conference calls are not supported in encrypted rooms": "గుప్తీకరించిన గదులలో కాన్ఫరెన్స్ కాల్లకు మద్దతు లేదు", + "Conference calls are not supported in this client": "ఈ క్లయింట్లో కాన్ఫరెన్స్ కాల్లకు మద్దతు లేదు", + "Confirm password": "పాస్వర్డ్ని నిర్ధారించండి", + "Confirm your new password": "మీ క్రొత్త పాస్వర్డ్ను నిర్ధారించండి", + "Continue": "కొనసాగించు", + "Could not connect to the integration server": "ఇంటిగ్రేషన్ సర్వర్కు కనెక్ట్ చేయడం సాధ్యం కాలేదు", + "%(count)s new messages": { + "one": "%(count)s కొత్త సందేశం", + "other": "%(count)s కొత్త సందేశాలు" + }, + "Create a new chat or reuse an existing one": "క్రొత్త చాట్ ను సృష్టించుకోండి లేదా ఇప్పటికే ఉన్న ఒకదాన్ని తిరిగి ఉపయోగించండి", + "Create an account": "ఒక ఎకౌంటు ను సృష్టించండి", + "Create Room": "రూమ్ ని సృష్టించండి", + "Cryptography": "క్రిప్టోగ్రఫీ", + "Current password": "ప్రస్తుత పాస్వర్డ్", + "Curve25519 identity key": "Curve25519 గుర్తింపు కీ", + "Custom": "కస్టమ్", + "Custom level": "అనుకూల స్థాయి", + "/ddg is not a command": "/ ddg కమాండ్ కాదు", + "Deactivate Account": "ఖాతాను డీయాక్టివేట్ చేయండి", + "Deactivate my account": "నా ఖాతాను డీయాక్టివేట్ చేసుకోండి", + "Decline": "డిక్లైన్", + "Decryption error": "గుప్తలేఖన లోపం", + "Delete": "తొలగించు", + "Deops user with given id": "ఇచ్చిన ID తో వినియోగదారుని విడదీస్తుంది", + "Default": "డిఫాల్ట్", + "Device already verified!": "పరికరం ఇప్పటికే ధృవీకరించబడింది!", + "Devices": "పరికరాలు", + "Sun": "ఆదివారం", + "Mon": "సోమవారం", + "Tue": "మంగళవారం", + "Wed": "బుధవారం", + "Thu": "గురువారం", + "Fri": "శుక్రువారం", + "Sat": "శనివారం", + "Jan": "జనవరి", + "Feb": "ఫిబ్రవరి", + "Markdown is disabled": "మార్క్డౌన్ నిలిపివేయబడింది", + "Markdown is enabled": "మార్క్డౌన్ ప్రారంభించబడింది", + "Turn Markdown off": "మార్క్డౌన్ ఆఫ్ చెయ్యి", + "Turn Markdown on": "మార్క్డౌన్ ఆన్ చెయ్యి", + "Mar": "మార్చి", + "Apr": "ఏప్రిల్", + "End-to-end encryption is in beta and may not be reliable": "ఎండ్-టు-ఎండ్ ఎన్క్రిప్షన్ బీటాలో ఉనందు వల్ల నమ్మదగినది కాదు", + "Server may be unavailable or overloaded": "సర్వర్ అందుబాటులో లేకపోవచ్చు లేదా ఓవర్లోడ్ ఉండచు", + "Server may be unavailable, overloaded, or search timed out :(": "సర్వర్ అందుబాటులో లేకపోవచ్చు, ఓవర్లోడ్ లేదా శోధన సమయం ముగిసి ఉండవచ్చు :(", + "Server may be unavailable, overloaded, or the file too big": "సర్వర్ అందుబాటులో లేకపోవచ్చు, ఓవర్లోడ్ లేదా ఫైల్ చాలా పెద్దది కావచ్చు", + "Server may be unavailable, overloaded, or you hit a bug.": "సర్వర్ అందుబాటులో ఉండకపోవచ్చు, ఓవర్లోడ్ చేయబడి ఉండవచ్చు లేదా మీరు ఒక దోషాన్ని కొట్టాడు.", + "You may wish to login with a different account, or add this email to this account.": "మీరు వేరొక ఖాతాతో లాగిన్ అవ్వాలనుకోవచ్చు లేదా ఈ ఖాతాకు ఈ ఇమెయిల్ ను చేర్చవచ్చు.", + "May": "మే", + "Jun": "జూన్", + "Jul": "జూలై", + "Aug": "ఆగస్ట్", + "Sep": "సెప్టంబర్", + "Oct": "అక్టోబర్", + "Nov": "నవంబర్", + "Dec": "డిసంబర్", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s ,%(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "ప్రదర్శన పేరుని సెట్ చేయండి:", + "Upload avatar": "అవతార్ను అప్లోడ్ చేయండి", + "Upload an avatar:": "అవతార్ను అప్లోడ్ చేయండి:", + "This server does not support authentication with a phone number.": "ఈ సర్వర్ ఫోన్ నంబర్తో ప్రామాణీకరణకు మద్దతు ఇవ్వదు.", + "Missing password.": "పాస్వర్డ్ లేదు.", + "New passwords don't match": "కొత్త పాస్వర్డ్లు సరిపోలడం లేదు", + "Passwords don't match.": "పాస్వర్డ్లు సరిపోలడం లేదు.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "పాస్వర్డ్ చాలా చిన్నగ ఉంది (min %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "ది చెల్లుబాటు అయ్యే ఇమెయిల్ చిరునామా లాగా లేదు.", + "This doesn't look like a valid phone number.": "ఇది చెల్లుబాటు అయ్యే ఫోన్ నంబర్ లాగా లేదు.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "వినియోగదారు పేర్లు అక్షరాలు, సంఖ్యలు, చుక్కలు, హైపన్లు మరియు అండర్ స్కోర్లను మాత్రమే కలిగి ఉండవచ్చు.", + "An unknown error occurred.": "తెలియని లోపం సంభవించింది.", + "I already have an account": "నాకు ఇప్పటికే ఖాతా ఉంది", + "Topic": "అంశం", + "Make Moderator": "మోడరేటర్ చేయండి", + "Make this room private": "ఈ గదిని ప్రైవేట్గా చేయండి", + "Share message history with new users": "క్రొత్త వినియోగదారులతో సందేశ చరిత్రను భాగస్వామ్యం చేయండి", + "Encrypt room": "గదిని గుప్తీకరించండి", + "There are no visible files in this room": "ఈ గదిలో కనిపించే ఫైల్లు లేవు", + "Connectivity to the server has been lost.": "సెర్వెర్ కనెక్టివిటీని కోల్పోయారు.", + "Sent messages will be stored until your connection has returned.": "మీ కనెక్షన్ తిరిగి వచ్చే వరకు పంపిన సందేశాలు నిల్వ చేయబడతాయి.", + "Cancel": "రద్దు", + "bold": "బోల్డ్", + "italic": "ఇటాలిక్", + "strike": "సమ్మె", + "underline": "అండర్లైన్", + "Enter Code": "కోడ్ వ్రాయండి", + "Failed to forget room %(errCode)s": "గది మర్చిపోవడం విఫలమైంది %(errCode)s", + "Incorrect verification code": "ధృవీకరణ కోడ్ సరిగా లెదు", + "unknown error code": "తెలియని కోడ్ లోపం", + "code": "కోడ్", + "Please enter the code it contains:": "దయచేసి దాన్ని కలిగి ఉన్న కోడ్ను నమోదు చేయండి:", + "riot-web version:": "రయట్-వెబ్ సంస్కరణ:", + "Riot was not given permission to send notifications - please try again": "రయట్ కు ప్రకటనలను పంపడానికి అనుమతి లేదు - దయచేసి మళ్ళీ ప్రయత్నించండి", + "Unable to restore session": "సెషన్ను పునరుద్ధరించడానికి సాధ్యపడలేదు", + "Remove": "తొలగించు", + "Room directory": "గది వివరము", + "Create new room": "క్రొత్త గది సృష్టించండి", + "Custom Server Options": "మలచిన సేవిక ఎంపికలు", + "Dismiss": "రద్దుచేసే", + "Error": "లోపం", + "Favourite": "గుర్తుంచు", + "Mute": "నిశబ్ధము", + "Notifications": "ప్రకటనలు", + "Operation failed": "కార్యం విఫలమైంది", + "Search": "శోధన", + "Settings": "అమరికలు", + "Fetching third party location failed": "మూడవ పార్టీ స్థానాన్ని పొందడం విఫలమైంది", + "A new version of Riot is available.": "కొత్త రిమోట్ వివరణము అందుబాటులో ఉంది.", + "Couldn't load home page": "హోమ్ పేజీని లోడ్ చేయలేకపోయాము", + "Advanced notification settings": "ఆధునిక తాఖీదు అమరిక", + "Sunday": "ఆదివారం", + "Guests can join": "అతిథులు చేరవచ్చు", + "Messages sent by bot": "బాట్ పంపిన సందేశాలు", + "Notification targets": "తాఖీదు లక్ష్యాలు", + "Failed to set direct chat tag": "ప్రత్యక్ష మాటామంతి బొందు సెట్ చేయడంలో విఫలమైంది", + "Today": "ఈ రోజు", + "Failed to get protocol list from Home Server": "హోమ్ సర్వర్ నుండి ప్రోటోకాల్ జాబితాను పొందడం విఫలమైంది", + "Friday": "శుక్రువారం", + "Add an email address above to configure email notifications": "ఇమెయిల్ ప్రకటనలను రూపశిల్పం చేయడానికి ఎగువ ఇమెయిల్ చిరునామాను జోడించండి", + "Expand panel": "ప్యానెల్ను విస్తరింపజేయండి", + "On": "వేయుము", + "Filter room names": "గది పేర్లను ఫిల్టర్ చేయండి", + "Changelog": "మార్పు వివరణ", + "Leave": "వదిలి", + "All notifications are currently disabled for all targets.": "ప్రస్తుతానికి అన్ని చోట్లనుంచి అన్ని ప్రకటనలు ఆగి వున్నాయి.", + "delete the alias.": "అలియాస్ తొలగించండి.", + "Forget": "మర్చిపో", + "Hide panel": "ప్యానెల్ను దాచు", + "Source URL": "మూల URL", + "Warning": "హెచ్చరిక", + "Noisy": "శబ్దం", + "Room not found": "గది కనుగొనబడలేదు", + "Messages containing my display name": "నా ప్రదర్శన పేరును కలిగి ఉన్న సందేశాలు", + "Messages in one-to-one chats": "సందేశాలు నుండి ఒకరికి ఒకటి మాటామంతి", + "Failed to update keywords": "కీలక పదాలను నవీకరించడంలో విఫలమైంది", + "remove %(name)s from the directory.": "వివరము నుండి %(name)s ను తొలిగించు.", + "Please set a password!": "దయచేసి మీ రహస్యపదాన్నీ అమర్చండి!", + "Cancel Sending": "పంపడాన్ని ఆపేయండి", + "Failed to add tag %(tagName)s to room": "%(tagName)s ను బొందు జోడించడంలో విఫలమైంది", + "Members": "సభ్యులు", + "No update available.": "ఏ నవీకరణ అందుబాటులో లేదు.", + "Resend": "మళ్ళి పంపుము", + "Files": "దస్ర్తాలు", + "Collecting app version information": "అనువర్తన సంస్కరణ సమాచారాన్ని సేకరించడం", + "Forward Message": "సందేశాన్ని మునుముందుకు చేయండి", + "Enable notifications for this account": "ఈ ఖాతా కోసం తాఖీదు ప్రారంభించండి", + "Directory": "వివరం", + "Search for a room": "గది కోసం శోధించండి", + "Messages containing keywords": "కీలక పదాలనుకలిగి ఉన్న సందేశం", + "Error saving email notification preferences": "ఇమెయిల్ ప్రకటనలను ప్రాధాన్యతలను దాచు చేయడంలో లోపం", + "Tuesday": "మంగళవారం", + "Enter keywords separated by a comma:": "కామాతో వేరు చేయబడిన కీలక పదాలను నమోదు చేయండి:", + "I understand the risks and wish to continue": "నేను నష్టాలను అర్థం చేసుకుంటాను మరియు కొనసాగించాలని కోరుకుంటున్నాను", + "Remove %(name)s from the directory?": "వివరము నుండి %(name)s తొలిగించు?", + "Remove from Directory": "`వివరము నుండి తొలిగించు", + "Direct Chat": "ప్రత్యక్ష మాటామంతి", + "Reject": "తిరస్కరించు", + "Failed to set Direct Message status of room": "గది యొక్క ప్రత్యక్ష సందేశ స్థితి సెట్ చేయడంలో విఫలమైంది", + "Monday": "సోమవారం", + "All messages (noisy)": "అన్ని సందేశాలు (గట్టిగ)", + "Enable them now": "ఇప్పుడే వాటిని ప్రారంభించండి", + "Messages containing my user name": "నా వినియోగదారు పేరు కలిగి ఉన్న సందేశాలు", + "Collecting logs": "నమోదు సేకరించడం", + "more": "మరింత", + "Failed to get public room list": "ప్రజా గది జాబితాను పొందడం విఫలమైంది", + "(HTTP status %(httpStatus)s)": "(HTTP స్థితి %(httpStatus)s)", + "All Rooms": "అన్ని గదులు", + "Wednesday": "బుధవారం", + "Send": "పంపండి", + "Send logs": "నమోదును పంపు", + "All messages": "అన్ని సందేశాలు", + "Call invitation": "మాట్లాడడానికి ఆహ్వానం", + "Downloading update...": "నవీకరణను దిగుమతి చేస్తోంది...", + "Keywords": "ముఖ్యపదాలు", + "Can't update user notification settings": "వినియోగదారు ప్రకటన ప్రాదాన్యాలు నవీకరించదడానేకి రాదు", + "Notify for all other messages/rooms": "అన్ని ఇతర సందేశాలు / గదులు కోసం తెలియజేయండి", + "Couldn't find a matching Matrix room": "సరిపోలిక మ్యాట్రిక్స్ గదిని కనుగొనలేకపోయాము", + "Invite to this room": "ఈ గదికి ఆహ్వానించండి", + "Thursday": "గురువారం", + "Search…": "శోధన…", + "Sorry, your browser is not able to run Riot.": "క్షమించండి, మీ బ్రౌజర్ రియట్ని అమలు చేయలేరు.", + "Messages in group chats": "సమూహ మాటామంతిలో సందేశాలు", + "Yesterday": "నిన్న", + "Error encountered (%(errorDetail)s).": "లోపం సంభవించింది (%(errorDetail)s).", + "Low Priority": "తక్కువ ప్రాధాన్యత", + "Set Password": "రహస్యపదాన్నీ అమర్చండి", + "An error occurred whilst saving your email notification preferences.": "మీ ఇమెయిల్ ప్రకటన ప్రాధాన్యాలు బద్రపరిచేతప్పుడు ఎదో తప్పు జరిగింది.", + "Enable audible notifications in web client": "వెబ్ బంట్రౌతు వినిపించే నోటిఫికేషన్లను ప్రారంభించండి", + "Off": "ఆపు", + "Mentions only": "మాత్రమే ప్రస్తావిస్తుంది", + "Failed to remove tag %(tagName)s from room": "గది నుండి బొందు %(tagName)s తొలగించడంలో విఫలమైంది", + "Enable desktop notifications": "రంగస్థల తాఖీదు ప్రారంభించండి", + "Enable email notifications": "ఇమెయిల్ ప్రకటనలను ప్రారంభించండి", + "Login": "ప్రవేశ ద్వారం", + "No rooms to show": "చూపించడానికి గదులు లేవు", + "Download this file": "ఈ దస్త్రం దిగుమతి చేయండి", + "Failed to change settings": "అమరిక మార్చడం విఫలమైంది", + "#example": "#ఉదాహరణ", + "Collapse panel": "ప్యానెల్ కుదించు", + "Checking for an update...": "నవీకరణ కోసం చూస్తోంది...", + "Saturday": "శనివారం", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s %(browserName)s ద్వర %(osName)s కి", + "Riot Desktop on %(platformName)s": "రియట్ రంగస్థలం లో %(platformName)s", + "Welcome to Riot.im": "రిమోట్.ఇం కి స్వగతం", + "Search the room directory": "గది వివరాన్ని శోధించండి", + "Chat with Riot Bot": "రియోట్ బొట్తో మాటామంతి చేయండి" +} \ No newline at end of file diff --git a/riot/i18n/th.json b/riot/i18n/th.json new file mode 100644 index 0000000..6849034 --- /dev/null +++ b/riot/i18n/th.json @@ -0,0 +1,602 @@ +{ + "Account": "บัญชี", + "Add phone number": "เพิ่มหมายเลขโทรศัพท์", + "Microphone": "ไมโครโฟน", + "No Microphones detected": "ไม่พบไมโครโฟน", + "Camera": "กล้อง", + "Advanced": "ขึ้นสูง", + "Ban": "แบน", + "Change Password": "เปลี่ยนรหัสผ่าน", + "Create Room": "สรัางห้อง", + "Delete": "ลบ", + "Default": "ค่าเริ่มต้น", + "Default Device": "อุปกรณ์เริ่มต้น", + "%(senderName)s banned %(targetName)s.": "%(senderName)s แบน %(targetName)s แล้ว", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s เปลี่ยนหัวข้อเป็น \"%(topic)s\"", + "Decrypt %(text)s": "ถอดรหัส %(text)s", + "Device ID": "ID อุปกรณ์", + "Device ID:": "ID อุปกรณ์:", + "device id: ": "id อุปกรณ์: ", + "Devices": "อุปกรณ์", + "Download %(text)s": "ดาวน์โหลด %(text)s", + "Emoji": "อีโมจิ", + "Enable encryption": "เปิดใช้งานการเข้ารหัส", + "Error": "ข้อผิดพลาด", + "%(displayName)s is typing": "%(displayName)s กำลังพิมพ์", + "Kick": "เตะ", + "Low priority": "ความสำคัญต่ำ", + "matrix-react-sdk version:": "เวอร์ชัน matrix-react-sdk:", + "Mobile phone number": "หมายเลขโทรศัพท์", + "Mobile phone number (optional)": "หมายเลขโทรศัพท์ (ไม่ใส่ก็ได้)", + "Name": "ชื่อ", + "OK": "ตกลง", + "Password": "รหัสผ่าน", + "Password:": "รหัสผ่าน:", + "Profile": "โปรไฟล์", + "Reason": "เหตุผล", + "Register": "ลงทะเบียน", + "Results from DuckDuckGo": "ผลจาก DuckDuckGo", + "riot-web version:": "เวอร์ชัน riot-web:", + "Cancel": "ยกเลิก", + "Dismiss": "ไม่สนใจ", + "Mute": "เงียบ", + "Notifications": "การแจ้งเตือน", + "Operation failed": "การดำเนินการล้มเหลว", + "powered by Matrix": "ใช้เทคโนโลยี Matrix", + "Search": "ค้นหา", + "Settings": "การตั้งค่า", + "unknown error code": "รหัสข้อผิดพลาดที่ไม่รู้จัก", + "olm version:": "เวอร์ชัน olm:", + "Remove": "ลบ", + "Custom Server Options": "กำหนดเซิร์ฟเวอร์เอง", + "Favourite": "รายการโปรด", + "Failed to forget room %(errCode)s": "การลืมห้องล้มเหลว %(errCode)s", + "%(targetName)s accepted an invitation.": "%(targetName)s ตอบรับคำเชิญแล้ว", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s ตอบรับคำเชิญสำหรับ %(displayName)s แล้ว", + "Add a topic": "เพิ่มหัวข้อ", + "Add email address": "เพิ่มที่อยู่อีเมล", + "Admin": "ผู้ดูแล", + "No Webcams detected": "ไม่พบกล้องเว็บแคม", + "No media permissions": "ไม่มีสิทธิ์เข้าถึงสื่อ", + "You may need to manually permit Riot to access your microphone/webcam": "คุณอาจต้องให้สิทธิ์ Riot เข้าถึงไมค์โครโฟนไมค์โครโฟน/กล้องเว็บแคม ด้วยตัวเอง", + "Algorithm": "อัลกอริทึม", + "Hide removed messages": "ซ่อนข้อความที่ถูกลบแล้ว", + "Authentication": "การยืนยันตัวตน", + "%(items)s and %(lastItem)s": "%(items)s และ %(lastItem)s", + "and %(count)s others...": { + "one": "และอีกหนึ่งผู้ใช้...", + "other": "และอีก %(count)s ผู้ใช้..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s และ %(lastPerson)s กำลังพิมพ์", + "%(senderName)s answered the call.": "%(senderName)s รับสายแล้ว", + "An error has occurred.": "เกิดข้อผิดพลาด", + "Anyone": "ทุกคน", + "Anyone who knows the room's link, apart from guests": "ทุกคนที่มีลิงก์ ยกเว้นแขก", + "Anyone who knows the room's link, including guests": "ทุกคนที่มีลิงก์ รวมถึงแขก", + "Are you sure?": "คุณแน่ใจหรือไม่?", + "Are you sure you want to leave the room '%(roomName)s'?": "คุณแน่ใจหรือว่าต้องการจะออกจากห้อง '%(roomName)s'?", + "Are you sure you want to reject the invitation?": "คุณแน่ใจหรือว่าต้องการจะปฏิเสธคำเชิญ?", + "Are you sure you want to upload the following files?": "คุณแน่ใจหรือว่าต้องการอัปโหลดไฟล์ต่อไปนี้?", + "Attachment": "ไฟล์แนบ", + "Autoplay GIFs and videos": "เล่น GIF และวิดิโออัตโนมัติ", + "Banned users": "ผู้ใช้ที่ถูกแบน", + "Bans user with given id": "ผู้ใช้และ id ที่ถูกแบน", + "Blacklisted": "ขึ้นบัญชีดำ", + "Can't load user settings": "ไม่สามารถโหลดการตั้งค่าผู้ใช้ได้", + "%(senderName)s changed their profile picture.": "%(senderName)s เปลี่ยนรูปโปรไฟล์ของเขา", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s เปลี่ยนชื่อห้องไปเป็น %(roomName)s", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s ลบชื่อห้อง", + "Changes your display nickname": "เปลี่ยนชื่อเล่นที่แสดงของคุณ", + "Clear Cache and Reload": "ล้างแคชแล้วโหลดใหม่", + "Clear Cache": "ล้างแคช", + "Click here to fix": "คลิกที่นี่เพื่อแก้ไข", + "Click to mute audio": "คลิกที่นี่เพื่อปิดเสียง", + "Click to mute video": "คลิกที่นี่เพื่อปิดกล้อง", + "click to reveal": "คลิกเพื่อแสดง", + "Click to unmute video": "คลิกเพื่อเปิดกล้อง", + "Click to unmute audio": "คลิกเพื่อเปิดเสียง", + "Command error": "คำสั่งผิดพลาด", + "Commands": "คำสั่ง", + "Conference call failed.": "การโทรประชุมล้มเหลว", + "Conference calling is in development and may not be reliable.": "การโทรประชุมอยู่ระหว่างการพัฒนาและอาจพึ่งพาไม่ได้", + "Conference calls are not supported in encrypted rooms": "การโทรประชุมไม่รองรับห้องที่ถูกเข้ารหัส", + "Conference calls are not supported in this client": "ไคลเอนต์นี้ไม่รองรับการโทรประชุม", + "Confirm password": "ยืนยันรหัสผ่าน", + "Confirm your new password": "ยืนยันรหัสผ่านใหม่", + "Continue": "ดำเนินการต่อ", + "Create an account": "สร้างบัญชี", + "Cryptography": "วิทยาการเข้ารหัส", + "Current password": "รหัสผ่านปัจจุบัน", + "/ddg is not a command": "/ddg ไม่ใช่คำสั่ง", + "Deactivate Account": "ปิดการใช้งานบัญชี", + "Deactivate my account": "ปิดการใช้งานบัญชีของฉัน", + "Decryption error": "การถอดรหัสผิดพลาด", + "Device already verified!": "ยืนยันอุปกรณ์แล้ว!", + "Device key:": "Key อุปกรณ์:", + "Devices will not yet be able to decrypt history from before they joined the room": "อุปกรณ์จะยังไม่สามารถถอดรหัสประวัติแชทก่อนจะเข้าร่วมห้องได้", + "Direct chats": "แชทตรง", + "Disinvite": "ถอนคำเชิญ", + "Display name": "ชื่อที่แสดง", + "Don't send typing notifications": "ไม่แจ้งว่ากำลังพิมพ์", + "Drop here to tag %(section)s": "ปล่อยที่นี่เพื่อแท็กว่า %(section)s", + "Ed25519 fingerprint": "ลายนิ้วมือ Ed25519", + "Email": "อีเมล", + "Email address": "ที่อยู่อีเมล", + "Email address (optional)": "ที่อยู่อีเมล (ไม่ใส่ก็ได้)", + "Email, name or matrix ID": "อีเมล ชื่อ หรือ ID matrix", + "Encrypted room": "ห้องที่ถูกเข้ารหัส", + "%(senderName)s ended the call.": "%(senderName)s จบการโทร", + "Enter Code": "กรอกรหัส", + "Error decrypting attachment": "การถอดรหัสไฟล์แนบผิดพลาด", + "Export": "ส่งออก", + "Failed to ban user": "การแบนผู้ใช้ล้มเหลว", + "Failed to change password. Is your password correct?": "การเปลี่ยนรหัสผ่านล้มเหลว รหัสผ่านของคุณถูกต้องหรือไม่?", + "Failed to join room": "การเข้าร่วมห้องล้มเหลว", + "Failed to kick": "การเตะล้มเหลว", + "Failed to leave room": "การออกจากห้องล้มเหลว", + "Failed to reject invite": "การปฏิเสธคำเชิญล้มเหลว", + "Failed to reject invitation": "การปฏิเสธคำเชิญล้มเหลว", + "Failed to save settings": "การบันทึกการตั้งค่าล้มเหลว", + "Failed to send email": "การส่งอีเมลล้มเหลว", + "Failed to send request.": "การส่งคำขอล้มเหลว", + "Failed to set display name": "การตั้งชื่อที่แสดงล้มเหลว", + "Failed to toggle moderator status": "การสลับสถานะผู้ช่วยดูแลล้มเหลว", + "Failed to unban": "การถอนแบนล้มเหลว", + "Failed to upload file": "การอัปโหลดไฟล์ล้มเหลว", + "Failed to verify email address: make sure you clicked the link in the email": "การยืนยันอีเมลล้มเหลว: กรุณาตรวจสอบว่าคุณคลิกลิงก์ในอีเมลแล้ว", + "Failure to create room": "การสร้างห้องล้มเหลว", + "Favourites": "รายการโปรด", + "Filter room members": "กรองสมาชิกห้อง", + "Forget room": "ลืมห้อง", + "Forgot your password?": "ลิมรหัสผ่าน?", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s จาก %(fromPowerLevel)s ไปเป็น %(toPowerLevel)s", + "Hangup": "วางสาย", + "Historical": "ประวัติแชทเก่า", + "Homeserver is": "เซิร์ฟเวอร์บ้านคือ", + "Identity Server is": "เซิร์ฟเวอร์ระบุตัวตนคือ", + "I have verified my email address": "ฉันยืนยันที่อยู่อีเมลแล้ว", + "Import": "นำเข้า", + "Incorrect username and/or password.": "ชื่อผู้ใช้และ/หรือรหัสผ่านไม่ถูกต้อง", + "Incorrect verification code": "รหัสยืนยันไม่ถูกต้อง", + "Interface Language": "ภาษาอินเตอร์เฟส", + "Invalid alias format": "รูปแบบนามแฝงไม่ถูกต้อง", + "Invalid address format": "รูปแบบที่อยู่ไม่ถูกต้อง", + "Invalid Email Address": "ที่อยู่อีเมลไม่ถูกต้อง", + "Invalid file%(extra)s": "ไฟล์ %(extra)s ไม่ถูกต้อง", + "%(senderName)s invited %(targetName)s.": "%(senderName)s เชิญ %(targetName)s แล้ว", + "Invite new room members": "เชิญสมาชิกใหม่", + "Invited": "เชิญแล้ว", + "Invites": "คำเชิญ", + "Invites user with given id to current room": "เชิญผู้ใช้ พร้อม id ของห้องปัจจุบัน", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' ไม่ใช่รูปแบบที่ถูกต้องสำหรับที่อยู่", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' ไม่ใช่รูปแบบที่ถูกต้องสำหรับนามแฝง", + "Sign in with": "เข้าสู่ระบบด้วย", + "Join Room": "เข้าร่วมห้อง", + "%(targetName)s joined the room.": "%(targetName)s เข้าร่วมห้องแล้ว", + "Jump to first unread message.": "ข้ามไปยังข้อความแรกที่ยังไม่ได้อ่าน", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s เตะ %(targetName)s แล้ว", + "Labs": "ห้องทดลอง", + "Leave room": "ออกจากห้อง", + "%(targetName)s left the room.": "%(targetName)s ออกจากห้องแล้ว", + "Logged in as:": "เข้าสู่ระบบในชื่อ:", + "Logout": "ออกจากระบบ", + "Markdown is disabled": "ปิดใช้งาน Markdown แล้ว", + "Markdown is enabled": "เปิดใช้งาน Markdown แล้ว", + "Missing user_id in request": "ไม่พบ user_id ในคำขอ", + "Moderator": "ผู้ช่วยดูแล", + "New address (e.g. #foo:%(localDomain)s)": "ที่อยู่ใหม่ (เช่น #foo:%(localDomain)s)", + "New password": "รหัสผ่านใหม่", + "New passwords don't match": "รหัสผ่านใหม่ไม่ตรงกัน", + "New passwords must match each other.": "รหัสผ่านใหม่ทั้งสองช่องต้องตรงกัน", + "none": "ไม่มี", + "not set": "ยังไม่ได้ตั้ง", + "not specified": "ไม่ได้ระบุ", + "(not supported by this browser)": "(เบราว์เซอร์นี้ไม่รองรับ)", + "": "<ไม่รองรับ>", + "NOT verified": "ยังไม่ได้ยืนยัน", + "No more results": "ไม่มีผลลัพธ์อื่น", + "No results": "ไม่มีผลลัพธ์", + "Passwords can't be empty": "รหัสผ่านต้องไม่ว่าง", + "People": "บุคคล", + "Permissions": "สิทธิ์", + "Phone": "โทรศัพท์", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s ได้เริ่มการโทรแบบ%(callType)s", + "Please check your email and click on the link it contains. Once this is done, click continue.": "กรุณาเช็คอีเมลและคลิกลิงก์ข้างใน หลังจากนั้น คลิกดำเนินการต่อ", + "Privacy warning": "คำเตือนเกี่ยวกับความเป็นส่วนตัว", + "Privileged Users": "ผู้ใช้ที่มีสิทธิพิเศษ", + "Revoke Moderator": "เพิกถอนผู้ช่วยดูแล", + "Refer a friend to Riot:": "แนะนำเพื่อนให้รู้จัก Riot:", + "%(targetName)s rejected the invitation.": "%(targetName)s ปฏิเสธคำเชิญแล้ว", + "Reject invitation": "ปฏิเสธคำเชิญ", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s ลบชื่อที่แสดงแล้ว (%(oldDisplayName)s)", + "%(senderName)s removed their profile picture.": "%(senderName)s ลบรูปโปรไฟล์ของเขาแล้ว", + "Remove %(threePid)s?": "ลบ %(threePid)s?", + "Return to login screen": "กลับไปยังหน้าลงชื่อเข้าใช้", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot ไม่มีสิทธิ์ส่งการแจ้งเตือน - กรุณาตรวจสอบการตั้งค่าเบราว์เซอร์ของคุณ", + "Riot was not given permission to send notifications - please try again": "Riot ไม่ได้รับสิทธิ์ส่งการแจ้งเตือน - กรุณาลองใหม่อีกครั้ง", + "Room Colour": "สีห้อง", + "Room name (optional)": "ชื้อห้อง (ไม่ใส่ก็ได้)", + "Rooms": "ห้องสนทนา", + "Save": "บันทึก", + "Scroll to bottom of page": "เลื่อนลงไปล่างสุด", + "Scroll to unread messages": "เลี่ยนไปที่ข้อความที่ยังไม่ได้อ่าน", + "Search failed": "การค้นหาล้มเหลว", + "Searches DuckDuckGo for results": "ค้นหาบน DuckDuckGo", + "Send Invites": "ส่งคำเชิญ", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s ได้ส่งรูป", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s ได้ส่งคำเชิญให้ %(targetDisplayName)s เข้าร่วมห้อง", + "Server error": "เซิร์ฟเวอร์ผิดพลาด", + "Server may be unavailable or overloaded": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งานหรือทำงานหนักเกินไป", + "Server may be unavailable, overloaded, or search timed out :(": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งาน ทำงานหนักเกินไป หรือการค้นหาหมดเวลา :(", + "Server may be unavailable, overloaded, or the file too big": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งาน ทำงานหนักเกินไป หรือไฟล์ใหญ่เกินไป", + "Server may be unavailable, overloaded, or you hit a bug.": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งาน ทำงานหนักเกินไป หรือเจอจุดบกพร่อง", + "Server unavailable, overloaded, or something else went wrong.": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งาน ทำงานหนักเกินไป หรือบางอย่างผิดปกติ", + "%(senderName)s set a profile picture.": "%(senderName)s ตั้งรูปโปรไฟล์", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s ตั้งชื่อที่แสดงเป็น %(displayName)s", + "Show panel": "แสดงหน้าต่าง", + "Signed Out": "ออกจากระบบแล้ว", + "Sign in": "เข้าสู่ระบบ", + "Sign out": "ออกจากระบบ", + "Someone": "ใครบางคน", + "Always show message timestamps": "แสดงเวลาในแชทเสมอ", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "แสดงเวลาในแชทในรูปแบบ 12 ชั่วโมง (เช่น 2:30pm)", + "Start a chat": "เริ่มแชท", + "Start Chat": "เริ่มแชท", + "Submit": "ส่ง", + "Success": "สำเร็จ", + "Tagged as: ": "แท็กไว้ว่า: ", + "The main address for this room is": "ที่อยู่หลักของห้องนี้คือ", + "This email address is already in use": "ที่อยู่อีเมลถูกใช้แล้ว", + "This email address was not found": "ไม่พบที่อยู่อีเมล", + "The file '%(fileName)s' failed to upload": "การอัปโหลดไฟล์ '%(fileName)s' ล้มเหลว", + "This Home Server does not support login using email address.": "เซิร์ฟเวอร์บ้านนี้ไม่รองรับการลงชื่อเข้าใช้ด้วยที่อยู่อีเมล", + "This is a preview of this room. Room interactions have been disabled": "นี่คือตัวอย่างของห้อง การตอบสนองภายในห้องถูกปิดใช้งาน", + "This phone number is already in use": "หมายเลขโทรศัพท์นี้ถูกใช้งานแล้ว", + "This room's internal ID is": "ID ภายในของห้องนี้คือ", + "Create new room": "สร้างห้องใหม่", + "Room directory": "ไดเรกทอรีห้อง", + "Start chat": "เริ่มแชท", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "ไม่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์บ้านผ่านทาง HTTP ได้เนื่องจาก URL ที่อยู่บนเบราว์เซอร์เป็น HTTPS กรุณาใช้ HTTPS หรือเปิดใช้งานสคริปต์ที่ไม่ปลอดภัย.", + "%(count)s new messages": { + "one": "มี %(count)s ข้อความใหม่", + "other": "มี %(count)s ข้อความใหม่" + }, + "End-to-end encryption information": "ข้อมูลการเข้ารหัสจากปลายทางถึงปลายทาง", + "End-to-end encryption is in beta and may not be reliable": "การเข้ารหัสจากปลายทางถึงปลายทางยังอยู่ในเบต้า และอาจพึ่งพาไม่ได้", + "Error: Problem communicating with the given homeserver.": "ข้อผิดพลาด: มีปัญหาในการติดต่อกับเซิร์ฟเวอร์บ้านที่กำหนด", + "Export E2E room keys": "ส่งออกกุญแจถอดรหัส E2E", + "Failed to change power level": "การเปลี่ยนระดับอำนาจล้มเหลว", + "Import E2E room keys": "นำเข้ากุญแจถอดรหัส E2E", + "The default role for new room members is": "บทบาทเริ่มต้นของสมาชิกใหม่คือ", + "The phone number entered looks invalid": "ดูเหมือนว่าหมายเลขโทรศัพท์ที่กรอกรมาไม่ถูกต้อง", + "The email address linked to your account must be entered.": "กรุณากรอกที่อยู่อีเมลที่เชื่อมกับบัญชีของคุณ", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "ไฟล์ '%(fileName)s' มีขนาดใหญ่เกินจำกัดของเซิร์ฟเวอร์บ้าน", + "Turn Markdown off": "ปิด markdown", + "Turn Markdown on": "เปิด markdown", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s ได้เปิดใช้งานการเข้ารหัสจากปลายทางถึงปลายทาง (อัลกอริทึม%(algorithm)s).", + "Unable to add email address": "ไมาสามารถเพิ่มที่อยู่อีเมล", + "Unable to verify email address.": "ไม่สามารถยืนยันที่อยู่อีเมล", + "Unban": "ปลดแบน", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s ปลดแบน %(targetName)s แล้ว", + "Unable to capture screen": "ไม่สามารถจับภาพหน้าจอ", + "Unable to enable Notifications": "ไม่สามารถเปิดใช้งานการแจ้งเตือน", + "Unable to load device list": "ไม่สามารถโหลดรายชื่ออุปกรณ์", + "Unencrypted room": "ห้องที่ไม่เข้ารหัส", + "unencrypted": "ยังไม่ได้เข้ารหัส", + "unknown device": "อุปกรณ์ที่ไม่รู้จัก", + "Unknown room %(roomId)s": "ห้องที่ไม่รู้จัก %(roomId)s", + "Unknown (user, device) pair:": "คู่ (ผู้ใช้, อุปกรณ์) ที่ไม่รู้จัก:", + "Unrecognised command:": "คำสั่งที่ไม่รู้จัก:", + "Unrecognised room alias:": "นามแฝงห้องที่ไม่รู้จัก:", + "Uploading %(filename)s and %(count)s others": { + "zero": "กำลังอัปโหลด %(filename)s", + "one": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์", + "other": "กำลังอัปโหลด %(filename)s และอีก %(count)s ไฟล์" + }, + "Upload Failed": "การอัปโหลดล้มเหลว", + "Upload Files": "อัปโหลดไฟล์", + "Upload file": "อัปโหลดไฟล์", + "Usage": "การใช้งาน", + "User ID": "ID ผู้ใช้", + "User Interface": "อินเตอร์เฟสผู้ใช้", + "User name": "ชื่อผู้ใช้", + "Warning!": "คำเตือน!", + "Who can access this room?": "ใครสามารถเข้าถึงห้องนี้ได้?", + "Who can read history?": "ใครสามารถอ่านประวัติแชทได้?", + "Who would you like to add to this room?": "คุณต้องการเพิ่มใครเข้าห้องนี้?", + "Who would you like to communicate with?": "คุณต้องการคุยกับใคร?", + "You are trying to access %(roomName)s.": "คุณกำลังพยายามเข้าสู่ %(roomName)s", + "You have disabled URL previews by default.": "ค่าเริ่มต้นของคุณปิดใช้งานตัวอย่าง URL เอาไว้", + "You have enabled URL previews by default.": "ค่าเริ่มต้นของคุณเปิดใช้งานตัวอย่าง URL เอาไว้", + "You must register to use this functionality": "คุณต้องลงทะเบียนเพื่อใช้ฟังก์ชันนี้", + "You need to be logged in.": "คุณต้องเข้าสู่ระบบก่อน", + "You need to enter a user name.": "คุณต้องกรอกชื่อผู้ใช้ก่อน", + "Your password has been reset": "รหัสผ่านถูกรีเซ็ตแล้ว", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "การเปลี่ยนรหัสผ่านเสร็จสมบูณณ์ คุณจะไม่ได้รับการแจ้งเตือนบนอุปกรณ์อื่น ๆ จนกว่าคุณจะกลับเข้าสู่ระบบในอุปกรณ์เหล่านั้น", + "Sun": "อา.", + "Mon": "จ.", + "Tue": "อ.", + "Wed": "พ.", + "Thu": "พฤ.", + "Fri": "ศ.", + "Sat": "ส.", + "Jan": "ม.ค.", + "Feb": "ก.พ.", + "Mar": "มี.ค.", + "Apr": "เม.ย.", + "May": "พ.ค.", + "Jun": "มิ.ย.", + "Jul": "ก.ค.", + "Aug": "ส.ค.", + "Sep": "ก.ย.", + "Oct": "ต.ค.", + "Nov": "พ.ย.", + "Dec": "ธ.ค.", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s %(day)s %(monthName)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "ตั้งชื่อที่แสดง:", + "Passwords don't match.": "รหัสผ่านไม่ตรงกัน", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "รหัสผ่านสั้นเกินไป (ขึ้นต่ำ %(MIN_PASSWORD_LENGTH)s ตัวอักษร)", + "An unknown error occurred.": "เกิดข้อผิดพลาดที่ไม่รู้จัก", + "I already have an account": "ฉันมีบัญชีอยู่แล้ว", + "Topic": "หัวข้อ", + "Make Moderator": "เลื่อนขั้นเป็นผู้ช่วยดูแล", + "Make this room private": "ทำให้ห้องนี้เป็นส่วนตัว", + "Share message history with new users": "แบ่งประวัติแชทให้ผู้ใช้ใหม่", + "Encrypt room": "เข้ารหัสห้อง", + "Room": "ห้อง", + "bold": "หนา", + "italic": "เอียง", + "strike": "ขีดทับ", + "underline": "ขีดเส้นใต้", + "code": "โค๊ด", + "quote": "อ้างอิง", + "New Password": "รหัสผ่านใหม่", + "Options": "ตัวเลือก", + "Export room keys": "ส่งออกกุณแจห้อง", + "Confirm passphrase": "ยืนยันรหัสผ่าน", + "Import room keys": "นำเข้ากุณแจห้อง", + "File to import": "ไฟล์ที่จะนำเข้า", + "Start new chat": "เริ่มแชทใหม่", + "Failed to invite": "การเชิญล้มเหลว", + "Failed to invite user": "การเชิญผู้ใช้ล้มเหลว", + "Failed to invite the following users to the %(roomName)s room:": "การเชิญผู้ใช้เหล่านี้เข้าสู่ห้อง %(roomName)s ล้มเหลว:", + "Confirm Removal": "ยืนยันการลบ", + "Unknown error": "ข้อผิดพลาดที่ไม่รู้จัก", + "Incorrect password": "รหัสผ่านไม่ถูกต้อง", + "Device name": "ชื่ออุปกรณ์", + "Device key": "Key อุปกรณ์", + "Unknown devices": "อุปกรณ์ที่ไม่รู้จัก", + "Unknown Address": "ที่อยู่ที่ไม่รู้จัก", + "Unblacklist": "ถอดบัญชีดำ", + "Blacklist": "ขึ้นบัญชีดำ", + "ex. @bob:example.com": "เช่น @bob:example.com", + "Add User": "เพิ่มผู้ใช้", + "This Home Server would like to make sure you are not a robot": "เซิร์ฟเวอร์บ้านต้องการยืนยันว่าคุณไม่ใช่หุ่นยนต์", + "Sign in with CAS": "เข้าสู่ระบบด้วย CAS", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "คุณสามารถกำหนดเซิร์ฟเวอร์บ้านเองได้โดยใส่ URL ของเซิร์ฟเวอร์นั้น เพื่อเข้าสู่ระบบของเซิร์ฟเวอร์ Matrix อื่น", + "This allows you to use this app with an existing Matrix account on a different home server.": "ทั้งนี่เพื่อให้คุณสามารถใช้ Riot กับบัญชี Matrix ที่มีอยู่แล้วบนเซิร์ฟเวอร์บ้านอื่น ๆ ได้", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "คุณอาจเลือกเซิร์ฟเวอร์ระบุตัวตนเองด้วยก็ได้ แต่คุณจะไม่สามารถเชิญผู้ใช้อื่นด้วยที่อยู่อีเมล หรือรับคำเชิญจากผู้ใช้อื่นทางที่อยู่อีเมลได้", + "Default server": "เซิร์ฟเวอร์เริ่มต้น", + "Custom server": "กำหนดเซิร์ฟเวอร์เอง", + "Home server URL": "URL เซิร์ฟเวอร์บ้าน", + "Identity server URL": "URL เซิร์ฟเวอร์ระบุตัวตน", + "Add": "เพิ่ม", + "Accept": "ยอมรับ", + "VoIP": "VoIP", + "Close": "ปิด", + "Custom": "กำหนดเอง", + "Decline": "ปฏิเสธ", + "Home": "เมนูหลัก", + "Last seen": "เห็นครั้งสุดท้าย", + "Rejoin": "กลับเข้าร่วม", + "This room": "ห้องนี้", + "Unnamed Room": "ห้องที่ยังไม่ได้ตั้งชื่อ", + "(~%(count)s results)": { + "one": "(~%(count)s ผลลัพท์)", + "other": "(~%(count)s ผลลัพท์)" + }, + "Missing Media Permissions, click here to request.": "ไม่มีสิทธิ์เข้าถึงสื่อ, คลิกที่นี่เพื่อขอสิทธิ์", + "Alias (optional)": "นามแฝง (ไม่ใส่ก็ได้)", + "A new password must be entered.": "กรุณากรอกรหัสผ่านใหม่", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "ไม่สามารถเฃื่อมต่อไปหาเซิร์ฟเวอร์บ้านได้ - กรุณาตรวจสอบคุณภาพการเชื่อมต่อ, ตรวจสอบว่าSSL certificate ของเซิร์ฟเวอร์บ้านของคุณเชื่อถือได้, และวไม่มีส่วนขยายเบราว์เซอร์ใดบล๊อคการเชื่อมต่ออยู่", + "Drop File Here": "วางไฟล์ที่นี่", + "Enable Notifications": "เปิดใฃ้งานการแจ้งเตือน", + "Level:": "ระดับ:", + "Press to start a chat with someone": "คลิก เพื่อเริ่มแชทกับผู้อื่น", + "Private Chat": "แชทส่วนตัว", + "Public Chat": "แชทสาธารณะ", + "Reason: %(reasonText)s": "เหตุผล: %(reasonText)s", + "Disable Notifications": "ปิดใช้งานการแจ้งเตือน", + "Click here to join the discussion!": "คลิกที่นี่เพื่อร่วมสนทนา!", + "Custom level": "กำหนดระดับเอง", + "No display name": "ไม่มีชื่อที่แสดง", + "Only people who have been invited": "เฉพาะบุคคลที่ได้รับเชิญ", + "Power level must be positive integer.": "ระดับอำนาจต้องเป็นจำนวนเต็มบวก", + "%(roomName)s does not exist.": "ไม่มีห้อง %(roomName)s อยู่จริง", + "To link to a room it must have an address.": "ห้องต้องมีที่อยู่ก่อน ถึงจะลิงก์ได้", + "Enter passphrase": "กรอกรหัสผ่าน", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s เห็นแล้วเมื่อเวลา %(dateTime)s", + "Undecryptable": "ไม่สามารถถอดรหัสได้", + "Unencrypted message": "ข้อความไม่ได้เข้ารหัส", + "unknown caller": "ไม่ทราบผู้โทร", + "Upload new:": "อัปโหลดใหม่:", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (ระดับอำนาจ %(powerLevelNumber)s)", + "Users": "ผู้ใช้", + "Verification Pending": "รอการตรวจสอบ", + "Verification": "การตรวจสอบ", + "verified": "ตรวจสอบแล้ว", + "Verified": "ตรวจสอบแล้ว", + "You are already in a call.": "คุณอยู่ในสายแล้ว", + "You cannot place a call with yourself.": "คุณไม่สามารถโทรหาตัวเองได้", + "Unverify": "ถอนการตรวจสอบ", + "Verify...": "ตรวจสอบ...", + "What does this mean?": "นี่แปลว่าอะไร?", + "Error decrypting audio": "เกิดข้อผิดพลาดในการถอดรหัสเสียง", + "Error decrypting image": "เกิดข้อผิดพลาดในการถอดรหัสรูป", + "Error decrypting video": "เกิดข้อผิดพลาดในการถอดรหัสวิดิโอ", + "Fetching third party location failed": "การเรียกข้อมูลตำแหน่งจากบุคคลที่สามล้มเหลว", + "A new version of Riot is available.": "มี Riot เวอร์ชั่นใหม่", + "I understand the risks and wish to continue": "ฉันเข้าใจความเสี่ยงและต้องการดำเนินการต่อ", + "Advanced notification settings": "ตั้งค่าการแจ้งเตือนขั้นสูง", + "Uploading report": "กำลังอัปโหลดรายงาน", + "Sunday": "วันอาทิตย์", + "Guests can join": "แขกเข้าร่วมได้", + "Failed to add tag %(tagName)s to room": "การเพิ่มแท็ก %(tagName)s ของห้องนี้ล้มเหลว", + "Notification targets": "เป้าหมายการแจ้งเตือน", + "Failed to set direct chat tag": "การติดแท็กแชทตรงล้มเหลว", + "Today": "วันนี้", + "Files": "ไฟล์", + "You are not receiving desktop notifications": "การแจ้งเตือนบนเดสก์ทอปถูกปิดอยู่", + "Friday": "วันศุกร์", + "Update": "อัปเดต", + "What's New": "มีอะไรใหม่", + "Add an email address above to configure email notifications": "เพิ่มที่อยู่อีเมลข้างบนเพื่อตั้งค่าการแจ้งเตือนทางอีเมล", + "Expand panel": "ขยายหน้าต่าง", + "On": "เปิด", + "Filter room names": "กรองชื่อห้อง", + "Changelog": "บันทึกการเปลี่ยนแปลง", + "Waiting for response from server": "กำลังรอการตอบสนองจากเซิร์ฟเวอร์", + "Leave": "ออกจากห้อง", + "Uploaded on %(date)s by %(user)s": "อัปโหลดเมื่อ %(date)s โดย %(user)s", + "All notifications are currently disabled for all targets.": "การแจ้งเตือนทั้งหมดถูกปิดใช้งานสำหรับทุกอุปกรณ์", + "delete the alias.": "ลบนามแฝง", + "To return to your account in future you need to set a password": "คุณต้องตั้งรหัสผ่านเพื่อจะกลับมาที่บัญชีนี้ในอนาคต", + "Forget": "ลืม", + "World readable": "ทุกคนอ่านได้", + "Hide panel": "ซ่อนหน้าต่าง", + "You cannot delete this image. (%(code)s)": "คุณไม่สามารถลบรูปนี้ได้ (%(code)s)", + "Cancel Sending": "ยกเลิกการส่ง", + "Warning": "คำเตือน", + "This Room": "ห้องนี้", + "The Home Server may be too old to support third party networks": "เซิร์ฟเวอร์บ้านอาจเก่าเกินกว่าจะรองรับเครือข่ายของบุคคลที่สาม", + "Resend": "ส่งใหม่", + "Room not found": "ไม่พบห้อง", + "Messages containing my display name": "ข้อความที่มีชื่อของฉัน", + "Messages in one-to-one chats": "ข้อความในแชทตัวต่อตัว", + "Unavailable": "ไม่มี", + "Error saving email notification preferences": "การบันทึกการตั้งค่าการแจ้งเตือนทางอีเมลผิดพลาด", + "View Decrypted Source": "ดูซอร์สที่ถอดรหัสแล้ว", + "Send": "ส่ง", + "remove %(name)s from the directory.": "ถอด %(name)s ออกจากไดเรกทอรี", + "Notifications on the following keywords follow rules which can’t be displayed here:": "การแจ้งเตือนจากคีย์เวิร์ดเหล่านี้ เป็นไปตามกฏที่ไม่สามารถแสดงที่นี่ได้:", + "Please set a password!": "กรุณาตั้งรหัสผ่าน!", + "You have successfully set a password!": "การตั้งรหัสผ่านเสร็จสมบูรณ์!", + "An error occurred whilst saving your email notification preferences.": "เกิดข้อผิดพลาดระหว่างบันทึกการตั้งค่าการแจ้งเตือนทางอีเมล", + "Source URL": "URL ต้นฉบับ", + "Messages sent by bot": "ข้อความจากบอท", + "Members": "สมาชิก", + "No update available.": "ไม่มีอัปเดตที่ใหม่กว่า", + "Noisy": "เสียงดัง", + "Failed to get protocol list from Home Server": "การขอรายชื่อโปรโตคอลจากเซิร์ฟเวอร์บ้านล้มเหลว", + "Collecting app version information": "กำลังรวบรวมข้อมูลเวอร์ชันแอป", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "ลบนามแฝง %(alias)s ของห้องและถอด %(name)s ออกจากไดเรกทอรี?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "เพื่อคุณจะได้กลับมายังบัญชีเดิมของคุณได้ หลังจากออกจากระบบ แล้วกลับเข้าสู่ระบบในอุปกรณ์อื่น ๆ", + "Enable notifications for this account": "เปิดใช้งานการแจ้งเตือนสำหรับบัญชีนี้", + "Directory": "ไดเรกทอรี", + "Search for a room": "ค้นหาห้อง", + "Messages containing keywords": "ข้อความที่มีคีย์เวิร์ด", + "View Source": "ดูซอร์ส", + "Tuesday": "วันอังคาร", + "Enter keywords separated by a comma:": "กรอกคีย์เวิร์ดทั้งหมด คั่นด้วยเครื่องหมายจุลภาค:", + "Search…": "ค้นหา…", + "Remove %(name)s from the directory?": "ถอด %(name)s ออกจากไดเรกทอรี?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot ใช้คุณสมบัติขั้นสูงในเบราว์เซอร์หลายประการ คุณสมบัติบางอย่างอาจยังไม่พร้อมใช้งานหรืออยู่ในขั้นทดลองในเบราว์เซอร์ปัจจุบันของคุณ", + "Unnamed room": "ห้องที่ไม่มีชื่อ", + "All messages (noisy)": "ทุกข้อความ (เสียงดัง)", + "Saturday": "วันเสาร์", + "Remember, you can always set an email address in user settings if you change your mind.": "อย่าลืม คุณสามารถตั้งที่อยู่อีเมลในการตั้งค่าผู้ใช้ได้ทุกเมื่อหากคุณเปลี่ยนใจ", + "Direct Chat": "แชทโดยตรง", + "The server may be unavailable or overloaded": "เซิร์ฟเวอร์อาจไม่พร้อมใช้งานหรือทำงานหนักเกินไป", + "Reject": "ปฏิเสธ", + "Failed to set Direct Message status of room": "การตั้งสถานะข้อความตรงของห้องล้มเหลว", + "Monday": "วันจันทร์", + "Remove from Directory": "ถอดออกจากไดเรกทอรี", + "Enable them now": "เปิดใช้งานเดี๋ยวนี้", + "Messages containing my user name": "ข้อความที่มีชื่อผู้ใช้ของฉัน", + "Collecting logs": "กำลังรวบรวมล็อก", + "more": "เพิ่มเติม", + "Failed to get public room list": "การขอรายชื่อห้องสาธารณะล้มเหลว", + "(HTTP status %(httpStatus)s)": "(สถานะ HTTP %(httpStatus)s)", + "All Rooms": "ทุกห้อง", + "Wednesday": "วันพุธ", + "Failed to update keywords": "การอัปเดตคีย์เวิร์ดล้มเหลว", + "Send logs": "ส่งล็อก", + "All messages": "ทุกข้อความ", + "Call invitation": "คำเชิญเข้าร่วมการโทร", + "Downloading update...": "กำลังดาวน์โหลดอัปเดต...", + "You have successfully set a password and an email address!": "ตั้งรหัสผ่านและที่อยู่อีเมลสำเร็จแล้ว!", + "What's new?": "มีอะไรใหม่?", + "Notify me for anything else": "แจ้งเตือนสำหรับอย่างอื่นทั้งหมด", + "When I'm invited to a room": "เมื่อฉันได้รับคำเชิญเข้าห้อง", + "Keywords": "คีย์เวิร์ด", + "Can't update user notification settings": "ไม่สามารถอัปเดตการตั้งค่าการแจ้งเตือนของผู้ใช้", + "Notify for all other messages/rooms": "แจ้งเตือนจากห้อง/ข้อความอื่น ๆ ทั้งหมด", + "Unable to look up room ID from server": "ไม่สามารถหา ID ห้องจากเซิร์ฟเวอร์ได้", + "Couldn't find a matching Matrix room": "ไม่พบห้อง Matrix ที่ตรงกับคำค้นหา", + "Invite to this room": "เชิญเข้าห้องนี้", + "You cannot delete this message. (%(code)s)": "คุณไม่สามารถลบข้อความนี้ได้ (%(code)s)", + "Thursday": "วันพฤหัสบดี", + "Forward Message": "ส่งต่อข้อความ", + "Unhide Preview": "แสดงตัวอย่าง", + "Unable to join network": "ไม่สามารถเข้าร่วมเครือข่ายได้", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "คุณอาจมีการตั้งค่าจากไคลเอนต์อื่นนอกจาก Riot การตั้งต่าเหล่านั้นยังถูกใช้งานอยู่แต่คุณจะปรับแต่งจากใน Riot ไม่ได้", + "Sorry, your browser is not able to run Riot.": "ขออภัย เบราว์เซอร์ของคุณไม่สามารถ run Riot ได้", + "Messages in group chats": "ข้อความในแชทกลุ่ม", + "Yesterday": "เมื่อวานนี้", + "Error encountered (%(errorDetail)s).": "เกิดข้อผิดพลาด (%(errorDetail)s)", + "Low Priority": "ความสำคัญต่ำ", + "Riot does not know how to join a room on this network": "Riot ไม่รู้วิธีเข้าร่วมห้องในเครือข่ายนี้", + "Set Password": "ตั้งรหัสผ่าน", + "Enable audible notifications in web client": "เปิดใช้งานเสียงแจ้งเตือนบนเว็บไคลเอนต์", + "Off": "ปิด", + "#example": "#example", + "Mentions only": "เมื่อถูกกล่าวถึงเท่านั้น", + "Failed to remove tag %(tagName)s from room": "การลบแท็ก %(tagName)s จากห้องล้มเหลว", + "You can now return to your account after signing out, and sign in on other devices.": "คุณสามารถกลับไปยังบัญชีของคุณหลังจากออกจากระบบ แล้วกลับเขาสู่ระบบบนอุปกรณ์อื่น ๆ", + "Enable desktop notifications": "เปิดใช้งานการแจ้งเตือนบนเดสก์ทอป", + "Enable email notifications": "เปิดใช้งานการแจ้งเตือนทางอีเมล", + "Login": "เข้าสู่ระบบ", + "No rooms to show": "ไม่มีห้องที่จะแสดง", + "Download this file": "ดาวน์โหลดไฟล์นี้", + "Failed to change settings": "การแก้ไขการตั้งค่าล้มเหลว", + "Unable to fetch notification target list": "ไม่สามารถรับรายชื่ออุปกรณ์แจ้งเตือน", + "Quote": "อ้างอิง", + "Collapse panel": "ซ่อนหน้าต่าง", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "การแสดงผลของโปรแกรมอาจผิดพลาด ฟังก์ชันบางอย่างหรือทั้งหมดอาจไม่ทำงานในเบราว์เซอร์ปัจจุบันของคุณ หากคุณต้องการลองดำเนินการต่อ คุณต้องรับมือกับปัญหาที่อาจจะเกิดขึ้นด้วยตัวคุณเอง!", + "Checking for an update...": "กำลังตรวจหาอัปเดต...", + "There are advanced notifications which are not shown here": "มีการแจ้งเตือนขั้นสูงที่ไม่ได้แสดงที่นี่", + "%(appName)s via %(browserName)s on %(osName)s": "%(appName)s ผ่านทาง %(browserName)s บน %(osName)s", + "Unknown device": "อุปกรณ์ที่ไม่รู้จัก", + "You need to be using HTTPS to place a screen-sharing call.": "คุณต้องใช้ HTTPS เพื่อเริ่มติดต่อแบบแบ่งปันหน้าจอ", + "Riot Desktop on %(platformName)s": "Riot เดสก์ทอปบน %(platformName)s", + "Riot is not supported on mobile web. Install the app?": "Riot ไม่รองรับเว็บบนอุปกรณ์พกพา ติดตั้งแอป?", + "Welcome to Riot.im": "ยินดีต้อนรับสู่ Riot.im", + "Search the room directory": "ค้นหาในไดเรกทอรีห้อง", + "Chat with Riot Bot": "แชทกับบอท Riot", + "Get started with some tips from Riot Bot!": "มาเริ่มกันด้วยเคล็ดลับเล็กน้อยจากบอท Riot!", + "Discussion of all things Matrix!": "พูดคุยทุกเรื่อง เรื่อง Matrix!", + "Riot/Web & Desktop chat": "แชทเกี่ยวกับ Riot บนเว็บและเดสก์ทอป", + "Riot/iOS & matrix-ios-sdk chat": "แชทเกี่ยวกับ Riot บน iOS และ matrix-ios-sdk", + "Riot/Android & matrix-android-sdk chat": "แชทเกี่ยวกับ Riot บน Android และ matrix-android-sdk", + "Matrix technical discussions": "พูดคุยเรื่อง Matrix เชิงเทคนิค", + "Running Matrix services": "การติดตั้งบริการ Matrix", + "Community-run support for Synapse": "ฝ่ายสนับสนุน Synapse โดยชุมชนผู้ใช้", + "Admin support for Dendrite": "ฝ่ายสนับสนุน Dendrite จากผู้ดูแล", + "Announcements about Synapse releases": "ประกาศเกี่ยวกับ Synapse รุ่นใหม่", + "Support for those using and running matrix-appservice-irc": "ฝ่ายสนับสนุนสำหรับผู้ใช้ matrix-appservice-irc", + "Building services on Matrix": "การพัฒนาบริการบน Matrix", + "Support for those using the Matrix spec": "ฝ่ายสนับสนุนสำหรับผู้ใช้สเปค Matrix", + "Implementing VR services with Matrix": "การอิมพลีเมนต์บริการ VR ด้วย Matrix", + "Implementing VoIP services with Matrix": "การอิมพลีเมนต์บริการ VoIP ด้วย Matrix", + "Support for those using, running and writing other bridges": "ฝ่ายสนับสนุนสำหรับผู้ใช้หรือพัฒนาตัวเชื่อมอื่น ๆ", + "Contributing code to Matrix and Riot": "สมทบโค๊ดให้ Matrix และ Riot", + "Dev chat for the Riot/Web dev team": "แชทสำหรับทีมพัฒนา Riot บนเว็บ", + "Dev chat for the Dendrite dev team": "แชทสำหรับทีมพัฒนา Dendrite", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "มีห้องอยู่มากมายใน Matrix ทั้งห้องที่เชื่อมไปยังเครือข่ายอื่น (Slack, IRC, Gitter ฯลฯ) และห้องที่อยู่ด้วยตัวเอง ลองดูไดเรกทอรีสิ!", + "Design and implementation of E2E in Matrix": "การออกแบบและใช้งาน E2E ใน Matrix", + "Discussion of the Identity Service API": "พูดคุยเกี่ยวกับ Identity Service API", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "ระบบแชทและประสานงาน ไร้ศูนย์กลางและเข้ารหัสได้ โดยใช้เทคโนโลยีจาก [matrix]", + "General discussion about Matrix and Riot": "พูดคุยเรื่องทั่วไป ทั้ง Matrix และ Riot" +} \ No newline at end of file diff --git a/riot/i18n/tr.json b/riot/i18n/tr.json new file mode 100644 index 0000000..c376936 --- /dev/null +++ b/riot/i18n/tr.json @@ -0,0 +1,804 @@ +{ + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "+%(msisdn)s 'ye bir kısa mesaj gönderildi . Lütfen içerdiği doğrulama kodunu girin", + "Accept": "Kabul Et", + "%(targetName)s accepted an invitation.": "%(targetName)s bir davetiyeyi kabul etti.", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s %(displayName)s için davetiyeyi kabul etti.", + "Account": "Hesap", + "Access Token:": "Erişim Anahtarı:", + "Active call (%(roomName)s)": "Aktif çağrı (%(roomName)s)", + "Add": "Ekle", + "Add a topic": "Bir konu(topic) ekle", + "Add email address": "E-posta adresi ekle", + "Add phone number": "Telefon numarası ekle", + "Admin": "Admin", + "Admin Tools": "Admin araçları", + "VoIP": "VoIP", + "Missing Media Permissions, click here to request.": "Medya İzinleri Yok , talep etmek için burayı tıklayın.", + "No Microphones detected": "Hiçbir Mikrofon bulunamadı", + "No Webcams detected": "Hiçbir Web kamerası bulunamadı", + "No media permissions": "Medya izinleri yok", + "You may need to manually permit Riot to access your microphone/webcam": "Riot'un mikrofonunuza / web kameranıza el le erişmesine izin vermeniz gerekebilir", + "Default Device": "Varsayılan Cihaz", + "Microphone": "Mikrofon", + "Camera": "Kamera", + "Advanced": "Gelişmiş", + "Algorithm": "Algoritma", + "Hide removed messages": "Kaldırılan mesajları gizle", + "Always show message timestamps": "Her zaman mesaj zaman dalgalarını (timestamps) gösterin", + "Authentication": "Doğrulama", + "Alias (optional)": "Diğer ad (isteğe bağlı)", + "%(items)s and %(lastItem)s": "%(items)s ve %(lastItem)s", + "and %(count)s others...": { + "one": "ve bir diğeri...", + "other": "ve %(count)s diğerleri..." + }, + "%(names)s and %(lastPerson)s are typing": "%(names)s ve %(lastPerson)s yazıyorlar", + "A new password must be entered.": "Yeni bir şifre girilmelidir.", + "%(senderName)s answered the call.": "%(senderName)s aramayı cevapladı.", + "An error has occurred.": "Bir hata oluştu.", + "Anyone": "Kimse", + "Anyone who knows the room's link, apart from guests": "Misafirler dışında odanın bağlantısını bilen herkes", + "Anyone who knows the room's link, including guests": "Misafirler dahil , odanın bağlantısını bilen herkes", + "Are you sure?": "Emin misiniz ?", + "Are you sure you want to leave the room '%(roomName)s'?": "'%(roomName)s' odasından ayrılmak istediğinize emin misiniz ?", + "Are you sure you want to reject the invitation?": "Daveti reddetmek istediğinizden emin misiniz ?", + "Are you sure you want to upload the following files?": "Aşağıdaki dosyaları yüklemek istediğinizden emin misiniz ?", + "Attachment": "Ek Dosya", + "Autoplay GIFs and videos": "GIF'leri ve Videoları otomatik olarak oynat", + "%(senderName)s banned %(targetName)s.": "%(senderName)s %(targetName)s'i banladı.", + "Ban": "Yasak", + "Banned users": "Yasaklanan(Banlanan) Kullanıcılar", + "Bans user with given id": "Yasaklanan(Banlanan) Kullanıcılar , ID'leri ile birlikte", + "Blacklisted": "Kara listeye alınanlar", + "Bulk Options": "Toplu Seçenekler", + "Call Timeout": "Arama Zaman Aşımı", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "Ana Sunucu'ya bağlanılamıyor - lütfen bağlantınızı kontrol edin , Ana Sunucu SSL sertifikanızın güvenilir olduğundan ve bir tarayıcı uzantısının istekleri engellemiyor olduğundan emin olun.", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "Tarayıcı çubuğunuzda bir HTTPS URL'si olduğunda Ana Sunusuna HTTP üzerinden bağlanılamıyor . Ya HTTPS kullanın veya güvensiz komut dosyalarını etkinleştirin.", + "Can't load user settings": "Kullanıcı ayarları yüklenemiyor", + "Change Password": "Şifre Değiştir", + "%(senderName)s changed their profile picture.": "%(senderName)s profil resmini değiştirdi.", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s %(powerLevelDiffText)s'nin güç düzeyini değiştirdi.", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s odanın ismini %(roomName)s olarak değiştirdi.", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s oda adını kaldırdı.", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s konuyu \"%(topic)s\" olarak değiştirdi.", + "Changes to who can read history will only apply to future messages in this room": "Geçmişi kimlerin okuyabileceğine ait değişiklikler yalnızca bu odada gelecekteki iletiler için geçerli olur", + "Changes your display nickname": "Görünen takma adınızı değiştirir", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Şifre değiştirme eğer oda anahtarlarınızı dışa aktarmaz ve daha sonra tekrar içe aktarmazsanız , şu anda tüm cihazlarda uçtan uca şifreleme anahtarlarını sıfırlayacak ve geçmişi okunamaz hale getirecek . Gelecekte bu geliştirilecek.", + "Claimed Ed25519 fingerprint key": "Ed25519 parmak izi anahtarı istendi", + "Clear Cache and Reload": "Önbelleği Temizle ve Yeniden Yükle", + "Clear Cache": "Önbelleği Temizle", + "Click here to join the discussion!": "Tartışmaya katılmak için Buraya tıklayın !", + "Click here to fix": "Düzeltmek için buraya tıklayın", + "Click to mute audio": "Sesi kapatmak için tıklayın", + "Click to mute video": "Videoyu kapatmak için tıklayın", + "click to reveal": "Ortaya çıkarmak için tıklayın", + "Click to unmute video": "Videoyu açmak için tıklayın", + "Click to unmute audio": "Sesi açmak için tıklayın", + "Close": "Kapat", + "Command error": "Komut Hatası", + "Commands": "Komutlar", + "Conference call failed.": "Konferans araması başarısız oldu.", + "Conference calling is in development and may not be reliable.": "Konferans araması geliştirme sürecinde ve güvenilir olmayabilir.", + "Conference calls are not supported in encrypted rooms": "Konferans aramaları şifreli odalarda desteklenmiyor", + "Conference calls are not supported in this client": "Konferans aramaları bu istemcide desteklenmiyor", + "Confirm password": "Şifreyi Onayla", + "Confirm your new password": "Yeni Şifrenizi Onaylayın", + "Continue": "Devam Et", + "Could not connect to the integration server": "Bütünleştirme (Integration) Sunucusuna bağlanamadı", + "%(count)s new messages": { + "one": "%(count)s yeni mesaj", + "other": "%(count)s yeni mesajlar" + }, + "Create a new chat or reuse an existing one": "Yeni sohbet oluştur veya mevcut sohbetinizi tekrar kullanın", + "Create an account": "Hesap Oluştur", + "Create Room": "Oda Oluştur", + "Cryptography": "Kriptografi", + "Current password": "Şimdiki Şifre", + "Curve25519 identity key": "Curve25519 kimlik anahtarı", + "Custom": "Özel", + "Custom level": "Özel seviye", + "/ddg is not a command": "/ddg bir komut değildir", + "Deactivate Account": "Hesabı Devre Dışı Bırakma", + "Deactivate my account": "Hesabımı Devre Dışı Bırak", + "Decline": "Reddet", + "Decrypt %(text)s": "%(text)s metninin şifresini çöz", + "Decryption error": "Şifre çözme hatası", + "Delete": "Sil", + "Deops user with given id": "ID'leriyle birlikte , düşürülmüş kullanıcılar", + "Default": "Varsayılan", + "Device already verified!": "Cihaz zaten doğrulandı!", + "Device ID": "Cihaz ID", + "Device ID:": "Cihaz ID:", + "device id: ": "cihaz id: ", + "Device key:": "Cihaz anahtarı:", + "Devices": "Cihazlar", + "Devices will not yet be able to decrypt history from before they joined the room": "Cihazlar odaya girdiğinden önceki geçmişin şifresini çözemez", + "Direct chats": "Doğrudan Sohbetler", + "Disable Notifications": "Bildirimleri Devre Dışı Bırak", + "Disinvite": "Daveti İptal Et", + "Display name": "Görünür İsim", + "Displays action": "Görünür eylem", + "Don't send typing notifications": "Yazarken bildirim gönderme", + "Download %(text)s": "%(text)s metnini indir", + "Drop File Here": "Dosyayı Buraya Bırak", + "Drop here to tag %(section)s": "Etiket %(section)s ' ı buraya bırak", + "Ed25519 fingerprint": "Ed25519 parmak izi", + "Email": "E-posta", + "Email address": "E-posta Adresi", + "Email address (optional)": "E-posta Adresi (isteğe bağlı)", + "Email, name or matrix ID": "E-posta , isim veya matrix ID", + "Emoji": "Emoji (Karakter)", + "Enable encryption": "Şifrelemeyi Etkinleştir", + "Enable Notifications": "Bildirimleri Etkinleştir", + "Encrypted by a verified device": "Doğrulanmış bir cihaz tarafından şifrelendi", + "Encrypted by an unverified device": "Doğrulanmamış bir cihaz tarafından şifrelendi", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "Şifrelenmiş mesajlar , henüz şifreleme sağlamayan istemcilerde görünür olmayacaktır", + "Encrypted room": "Şifrelenmiş Oda", + "Encryption is enabled in this room": "Şifreleme bu oda için etkin", + "Encryption is not enabled in this room": "Şifreleme bu oda için etkin değil", + "%(senderName)s ended the call.": "%(senderName)s çağrıyı bitirdi.", + "End-to-end encryption information": "Uçtan-uca şifreleme bilgileri", + "End-to-end encryption is in beta and may not be reliable": "Uçtan uca şifreleme beta sürümünde ve güvenilir olmayabilir", + "Enter Code": "Kodu Girin", + "Enter passphrase": "Şifre deyimi Girin", + "Error": "Hata", + "Error decrypting attachment": "Ek şifresini çözme hatası", + "Error: Problem communicating with the given homeserver.": "Hata: verilen Ana Sunucu ile iletişim kurulamıyor.", + "Event information": "Etkinlik bilgileri", + "Existing Call": "Mevcut Çağrı", + "Export": "Dışa Aktar", + "Export E2E room keys": "Uçtan uca Oda anahtarlarını Dışa Aktar", + "Failed to ban user": "Kullanıcı yasaklama(Ban) başarısız", + "Failed to change password. Is your password correct?": "Şifreniz değiştirilemedi . Şifreniz doğru mu ?", + "Failed to change power level": "Güç seviyesini değiştirme başarısız oldu", + "Failed to fetch avatar URL": "Avatar URL'i alınamadı", + "Failed to forget room %(errCode)s": "Oda unutulması başarısız oldu %(errCode)s", + "Failed to join room": "Odaya girme hatası", + "Failed to kick": "Atma(Kick) işlemi başarısız oldu", + "Failed to leave room": "Odadan ayrılma başarısız oldu", + "Failed to load timeline position": "Zaman çizelgesi konumu yüklenemedi", + "Failed to mute user": "Kullanıcıyı sessize almak başarısız oldu", + "Failed to reject invite": "Daveti reddetme başarısız oldu", + "Failed to reject invitation": "Davetiyeyi reddetme başarısız oldu", + "Failed to save settings": "Ayarlar kaydetme başarısız oldu", + "Failed to send email": "E-posta gönderimi başarısız oldu", + "Failed to send request.": "İstek gönderimi başarısız oldu.", + "Failed to set avatar.": "Avatar ayarlama başarısız oldu.", + "Failed to set display name": "Görünür ismi ayarlama başarısız oldu", + "Failed to set up conference call": "Konferans görüşmesi ayarlama başarısız oldu", + "Failed to toggle moderator status": "Moderatör durumunu değiştirmek başarısız oldu", + "Failed to unban": "Yasağı kaldırmak başarısız oldu", + "Failed to upload file": "Dosya yükleme başarısız oldu", + "Failed to upload profile picture!": "Profil resmi yükleme başarısız oldu!", + "Failed to verify email address: make sure you clicked the link in the email": "E-posta adresini doğrulama başarısız : e-postadaki bağlantıya tıkladığınızdan emin olun", + "Failure to create room": "Oda oluşturulamadı", + "Favourite": "Favori", + "Favourites": "Favoriler", + "Fill screen": "Ekranı Doldur", + "Filter room members": "Oda üyelerini Filtrele", + "Forget room": "Odayı Unut", + "Forgot your password?": "Şifrenizi mi unuttunuz ?", + "For security, this session has been signed out. Please sign in again.": "Güvenlik için , bu oturuma çıkış yapıldı . Lütfen tekrar oturum açın.", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "Güvenlik için , çıkış yaparsanız bu tarayıcıdan tüm uçtan uca şifreleme anahtarları silinecek . Konuşma geçmişinizi çözebilmek isterseniz gelecekteki Riot oturumlarında , lütfen Oda Anahtarlarını güvenlik amaçlı Dışa Aktarın.", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s %(fromPowerLevel)s den %(toPowerLevel)s ' ye", + "Guest access is disabled on this Home Server.": "Misafir erişimi bu Ana Sunucu için devre dışı.", + "Guests cannot join this room even if explicitly invited.": "Misafirler açıkca davet edilseler bile bu odaya katılamazlar.", + "Hangup": "Sorun", + "Hide read receipts": "Okundu bilgilerini gizle", + "Hide Text Formatting Toolbar": "Metin Biçimlendirme Araç Çubuğunu Gizle", + "Historical": "Tarihi", + "Home": "Ev", + "Homeserver is": "Ana Sunucusu", + "Identity Server is": "Kimlik Sunucusu", + "I have verified my email address": "E-posta adresimi doğruladım", + "Import": "İçe Aktar", + "Import E2E room keys": "Uçtan uca Oda Anahtarlarını İçe Aktar", + "Incoming call from %(name)s": "%(name)s ' den gelen çağrı", + "Incoming video call from %(name)s": "%(name)s ' den görüntülü arama", + "Incoming voice call from %(name)s": "%(name)s ' den gelen sesli arama", + "Incorrect username and/or password.": "Yanlış kullanıcı adı ve / veya şifre.", + "Incorrect verification code": "Yanlış doğrulama kodu", + "Interface Language": "Arayüz Dili", + "Invalid alias format": "Geçersiz Takma Ad(nickname) Formatı", + "Invalid address format": "Geçersiz adres formatı", + "Invalid Email Address": "Geçersiz E-posta Adresi", + "Invalid file%(extra)s": "Geçersiz dosya %(extra)s'ı", + "%(senderName)s invited %(targetName)s.": "%(senderName)s %(targetName)s ' ı davet etti.", + "Invite new room members": "Yeni oda üyelerini davet et", + "Invited": "Davet Edildi", + "Invites": "Davetler", + "Invites user with given id to current room": "Mevcut odaya verilen kimliği olan kullanıcıyı davet eder", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' bir adres için geçerli format değil", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' bir takma ad(nickname) için geçerli değil", + "%(displayName)s is typing": "%(displayName)s yazıyor", + "Sign in with": "Şununla giriş yap", + "Join as voice or video.": " ses veya video olarak katılın.", + "Join Room": "Odaya Katıl", + "%(targetName)s joined the room.": "%(targetName)s odaya katıldı.", + "Joins room with given alias": "Verilen takma ad (nick name) ile odaya katıl", + "Jump to first unread message.": "İlk okunmamış iletiye atla.", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s %(targetName)s' ı attı.", + "Kick": "Atmak (Odadan atmak vs.)", + "Kicks user with given id": "Verilen ID ' li kullanıcıyı at", + "Labs": "Laboratuarlar", + "Last seen": "Son görülme", + "Leave room": "Odadan ayrıl", + "%(targetName)s left the room.": "%(targetName)s odadan ayrıldı.", + "Level:": "Seviye :", + "Local addresses for this room:": "Bu oda için yerel adresler :", + "Logged in as:": "Olarak giriş yaptı :", + "Logout": "Çıkış Yap", + "Low priority": "Düşük öncelikli", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri , davet edildiği noktadan.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri , katıldıkları noktalardan.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s gelecekte oda geçmişini görünür yaptı Tüm oda üyeleri.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s gelecekte oda geçmişini görünür yaptı herhangi biri.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s gelecekte oda geçmişini görünür yaptı bilinmeyen (%(visibility)s).", + "Manage Integrations": "Entegrasyonları Yönet", + "Markdown is disabled": "Markdown devre dışı", + "Markdown is enabled": "Markdown aktif", + "matrix-react-sdk version:": "matrix-react-sdk versiyon:", + "Message not sent due to unknown devices being present": "Bilinmeyen cihazlar bulunduğundan mesaj gönderilemedi", + "Missing room_id in request": "İstekte eksik room_id", + "Missing user_id in request": "İstekte user_id eksik", + "Mobile phone number": "Cep telefonu numarası", + "Mobile phone number (optional)": "Cep telefonu numarası (isteğe bağlı)", + "Moderator": "Moderatör", + "Mute": "Sessiz", + "Name": "İsim", + "Never send encrypted messages to unverified devices from this device": "Bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin", + "Never send encrypted messages to unverified devices in this room from this device": "Bu odada bu cihazdan doğrulanmamış cihazlara asla şifrelenmiş mesajlar göndermeyin", + "New address (e.g. #foo:%(localDomain)s)": "Yeni adres (e.g. #foo:%(localDomain)s)", + "New password": "Yeni Şifre", + "New passwords don't match": "Yeni şifreler uyuşmuyor", + "New passwords must match each other.": "Yeni şifreler birbirleriyle eşleşmelidir.", + "none": "Hiç (Yok)", + "not set": "Ayarlanmadı", + "not specified": "Belirtilmemiş", + "Notifications": "Bildirimler", + "(not supported by this browser)": "(Bu tarayıcı tarafından desteklenmiyor)", + "": "", + "NOT verified": "Doğrulanmadı", + "No devices with registered encryption keys": "Kayıtlı şifreleme anahtarlı cihazlar yok", + "No display name": "Görünür isim yok", + "No more results": "Başka sonuç yok", + "No results": "Sonuç yok", + "No users have specific privileges in this room": "Bu odada hiçbir kullanıcının belirli ayrıcalıkları yoktur", + "OK": "Tamam", + "olm version:": "olm versiyon:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "Bu oda için şifreleme etkinleştirildikten sonra tekrar kapatılamaz (şimdilik)", + "Only people who have been invited": "Sadece davet edilmiş insanlar", + "Operation failed": "Operasyon başarısız oldu", + "Password": "Şifre", + "Password:": "Şifre:", + "Passwords can't be empty": "Şifreler boş olamaz", + "People": "İnsanlar", + "Permissions": "İzinler", + "Phone": "Telefon", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s bir %(callType)s çağrısı yerleştirdi.", + "Please check your email and click on the link it contains. Once this is done, click continue.": "Lütfen e-postanızı kontrol edin ve içerdiği bağlantıya tıklayın . Bu işlem tamamlandıktan sonra , 'devam et' e tıklayın .", + "Power level must be positive integer.": "Güç seviyesi pozitif tamsayı olmalıdır.", + "Press to start a chat with someone": "Birisiyle sohbet başlatmak için tuşuna basın", + "Privacy warning": "Gizlilik uyarısı", + "Private Chat": "Özel Sohbet", + "Privileged Users": "Ayrıcalıklı Kullanıcılar", + "Profile": "Profil", + "Public Chat": "Genel Sohbet", + "Reason": "Sebep", + "Reason: %(reasonText)s": "Sebep: %(reasonText)s", + "Revoke Moderator": "Moderatörü İptal Et", + "Refer a friend to Riot:": "Riot'tan bir arkadaşa bakın :", + "Register": "Kaydolun", + "%(targetName)s rejected the invitation.": "%(targetName)s daveti reddetti.", + "Reject invitation": "Daveti Reddet", + "Rejoin": "Yeniden Katıl", + "Remote addresses for this room:": "Bu oda için uzak adresler:", + "Remove Contact Information?": "İletişim Bilgilerini Kaldır ?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s görünen adı (%(oldDisplayName)s) kaldırdı.", + "%(senderName)s removed their profile picture.": "%(senderName)s profil resmini kaldırdı.", + "Remove": "Kaldır", + "Remove %(threePid)s?": "%(threePid)s 'i kaldır ?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s bir VoIP konferansı talep etti.", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "Şifrenizi sıfırlamak , eğer Oda Anahtarlarınızı dışa aktarmaz ve daha sonra içe aktarmaz iseniz , şu anda tüm cihazlarda uçtan uca şifreleme anahtarlarını sıfırlayarak şifreli sohbetleri okunamaz hale getirecek . Gelecekte bu iyileştirilecek.", + "Results from DuckDuckGo": "DuckDuckGo Sonuçları", + "Return to login screen": "Giriş ekranına dön", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot size bildirim gönderme iznine sahip değil - lütfen tarayıcı ayarlarınızı kontrol edin", + "Riot was not given permission to send notifications - please try again": "Riot'a bildirim gönderme izni verilmedi - lütfen tekrar deneyin", + "riot-web version:": "riot-web versiyon:", + "Room %(roomId)s not visible": "%(roomId)s odası görünür değil", + "Room Colour": "Oda Rengi", + "Room contains unknown devices": "Oda bilinmeyen cihazlar içeriyor", + "Room name (optional)": "Oda ismi (İsteğe Bağlı)", + "%(roomName)s does not exist.": "%(roomName)s mevcut değil.", + "%(roomName)s is not accessible at this time.": "%(roomName)s şu anda erişilebilir değil.", + "Rooms": "Odalar", + "Save": "Kaydet", + "Scroll to bottom of page": "Sayfanın altına kaydır", + "Scroll to unread messages": "Okunmamış mesajlara kaydır", + "Search": "Ara", + "Search failed": "Arama başarısız", + "Searches DuckDuckGo for results": "Sonuçlar için DuckDuckGo'yu arar", + "Seen by %(userName)s at %(dateTime)s": "%(dateTime)s ' de %(userName)s tarafından görüldü", + "Send anyway": "Her durumda gönder", + "Sender device information": "Gönderen cihaz bilgileri", + "Send Invites": "Davetiye Gönder", + "Send Reset Email": "E-posta Sıfırlama Gönder", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s bir resim gönderdi.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s %(targetDisplayName)s' a odaya katılması için bir davet gönderdi.", + "Server error": "Sunucu Hatası", + "Server may be unavailable or overloaded": "Sunucu kullanılamıyor veya aşırı yüklenmiş olabilir", + "Server may be unavailable, overloaded, or search timed out :(": "Sunucu kullanılamıyor , aşırı yüklenmiş veya arama zaman aşımına uğramış olabilir :(", + "Server may be unavailable, overloaded, or the file too big": "Sunucu kullanılamıyor , aşırı yüklenmiş , veya dosya çok büyük olabilir", + "Server may be unavailable, overloaded, or you hit a bug.": "Sunucu kullanılamıyor , aşırı yüklenmiş , veya bir hatayla karşılaşmış olabilirsiniz.", + "Server unavailable, overloaded, or something else went wrong.": "Sunucu kullanılamıyor , aşırı yüklenmiş veya başka bir şey ters gitmiş olabilir.", + "Session ID": "Oturum ID", + "%(senderName)s set a profile picture.": "%(senderName)s bir profil resmi ayarladı.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s görünür ismini %(displayName)s ' a ayarladı.", + "Settings": "Ayarlar", + "Show panel": "Paneli göster", + "Show Text Formatting Toolbar": "Metin Biçimlendirme Araç Çubuğunu Göster", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "Zaman damgalarını 12 biçiminde göster (örn. 2:30 pm)", + "Signed Out": "Oturum Kapatıldı", + "Sign in": "Giriş Yap", + "Sign out": "Çıkış Yap", + "%(count)s of your messages have not been sent.": { + "other": "Bazı mesajlarınız gönderilemedi." + }, + "Someone": "Birisi", + "Start a chat": "Bir Sohbet Başlat", + "Start authentication": "Kimlik Doğrulamayı başlatın", + "Start Chat": "Sohbet Başlat", + "Submit": "Gönder", + "Success": "Başarı", + "Tagged as: ": "Olarak etiketlendi : ", + "The default role for new room members is": "Yeni oda üyelerinin varsayılan rolü", + "The main address for this room is": "Bu oda için ana adres", + "The phone number entered looks invalid": "Girilen telefon numarası geçersiz görünüyor", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "Sağladığınız imza anahtarı %(userId)s aygıtından %(deviceId)s ile eşleşiyor . Aygıt doğrulanmış olarak işaretlendi.", + "This email address is already in use": "Bu e-posta adresi zaten kullanımda", + "This email address was not found": "Bu e-posta adresi bulunamadı", + "The email address linked to your account must be entered.": "Hesabınıza bağlı e-posta adresi girilmelidir.", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "'%(fileName)s' dosyası bu Ana Sunucu'nun yükleme için boyutunu aşıyor", + "The file '%(fileName)s' failed to upload": "'%(fileName)s' dosyası yüklenemedi", + "The remote side failed to pick up": "Uzak taraf toplanamadı(alınamadı)", + "This Home Server does not support login using email address.": "Bu Ana Sunucu E-posta adresi kullanarak giriş yapmayı desteklemiyor.", + "This invitation was sent to an email address which is not associated with this account:": "Bu davet bu hesapla ilişkili olmayan bir e-posta adresine gönderildi :", + "This room has no local addresses": "Bu oda hiçbir yerel adrese sahip değil", + "This room is not recognised.": "Bu oda tanınmıyor.", + "These are experimental features that may break in unexpected ways": "Bunlar beklenmedik yollarla bozulabilecek deneysel özellikler", + "The visibility of existing history will be unchanged": "Mevcut tarihin görünürlüğü değişmeyecek", + "This doesn't appear to be a valid email address": "Bu geçerli bir e-posta adresi olarak gözükmüyor", + "This is a preview of this room. Room interactions have been disabled": "Bu odanın bir önizlemesidir . Oda etkileşimleri devre dışı bırakıldı", + "This phone number is already in use": "Bu telefon numarası zaten kullanımda", + "This room": "Bu oda", + "This room is not accessible by remote Matrix servers": "Bu oda uzak Matrix Sunucuları tarafından erişilebilir değil", + "This room's internal ID is": "Bu odanın Dahili ID'si", + "To link to a room it must have an address.": "Bir odaya bağlanmak için oda bir adrese sahip olmalı.", + "To reset your password, enter the email address linked to your account": "Parolanızı sıfırlamak için hesabınıza bağlı e-posta adresinizi girin", + "To use it, just wait for autocomplete results to load and tab through them.": "Kullanmak için , otomatik tamamlama sonuçlarının yüklenmesini ve bitmesini bekleyin.", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Bu odanın zaman çizelgesinde belirli bir nokta yüklemeye çalışıldı , ama geçerli mesajı görüntülemeye izniniz yok.", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "Bu odanın akışında belirli bir noktaya yüklemeye çalışıldı , ancak bulunamadı.", + "Turn Markdown off": "Markdown'u kapat", + "Turn Markdown on": "Markdown'u Aç", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s uçtanuca şifrelemeyi açtı (algoritma -> %(algorithm)s).", + "Unable to add email address": "E-posta adresi eklenemiyor", + "Unable to remove contact information": "Kişi bilgileri kaldırılamıyor", + "Unable to verify email address.": "E-posta adresi doğrulanamıyor.", + "Unban": "Yasağı Kaldır", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s %(targetName)s 'in yasağını kaldırdı.", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "Bu davetiyenin gönderildiği adresin hesabınızla ilişkili bir adresle eşleştiğini tespit etmek mümkün değil.", + "Unable to capture screen": "Ekran yakalanamadı", + "Unable to enable Notifications": "Bildirimler aktif edilemedi", + "Unable to load device list": "Cihaz listesi yüklenemedi", + "Undecryptable": "Şifresi çözülemez", + "Unencrypted room": "Şifrelenmemiş oda", + "unencrypted": "şifrelenmemiş", + "Unencrypted message": "Şifrelenmemiş mesaj", + "unknown caller": "bilinmeyen arayıcı", + "unknown device": "bilinmeyen cihaz", + "unknown error code": "bilinmeyen hata kodu", + "Unknown room %(roomId)s": "Bilinmeyen oda %(roomId)s", + "Unknown (user, device) pair:": "Bilinmeyen (kullanıcı , cihaz) çifti :", + "Unmute": "Sesi aç", + "Unnamed Room": "İsimsiz Oda", + "Unrecognised command:": "Tanınmayan komut :", + "Unrecognised room alias:": "Tanınmayan oda isimleri :", + "Unverified": "Doğrulanmamış", + "Uploading %(filename)s and %(count)s others": { + "zero": "%(filename)s yükleniyor", + "one": "%(filename)s ve %(count)s kadarı yükleniyor", + "other": "%(filename)s ve %(count)s kadarları yükleniyor" + }, + "Upload avatar": "Avatar yükle", + "Upload Failed": "Yükleme Başarısız", + "Upload Files": "Dosyaları Yükle", + "Upload file": "Dosya yükle", + "Upload new:": "Yeni yükle :", + "Usage": "Kullanım", + "Use compact timeline layout": "Kompakt zaman akışı düzenini kullan", + "Use with caution": "Dikkatli kullan", + "User ID": "Kullanıcı ID", + "User Interface": "Kullanıcı Arayüzü", + "User name": "Kullanıcı ismi", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s (güç %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "Kullanıcı ismi geçersiz : %(errMessage)s", + "Users": "Kullanıcılar", + "Verification Pending": "Bekleyen doğrulama", + "Verification": "Doğrulama", + "verified": "doğrulanmış", + "Verified": "Doğrulanmış", + "Verified key": "Doğrulama anahtarı", + "Video call": "Görüntülü arama", + "Voice call": "Sesli arama", + "VoIP conference finished.": "VoIP konferansı bitti.", + "VoIP conference started.": "VoIP konferansı başladı.", + "VoIP is unsupported": "VoIP desteklenmiyor", + "(could not connect media)": "(medya bağlanamadı)", + "(no answer)": "(cevap yok)", + "(unknown failure: %(reason)s)": "(bilinmeyen hata : %(reason)s)", + "(warning: cannot be disabled again!)": "(Uyarı : tekrar devre dışı bırakılamaz!)", + "Warning!": "Uyarı!", + "WARNING: Device already verified, but keys do NOT MATCH!": "UYARI: Cihaz zaten doğrulandı , ancak anahtarlar UYUŞMUYOR!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "UYARI: ANAHTAR DOĞRULAMA BAŞARISIZ! (key verification failure). %(userId)s ve %(deviceId)s imza anahtarı sağlanan imza anahtarı \"%(fingerprint)s\" ile uyuşmayan \"%(fprint)s\". Bu iletişiminizin kesiliyor olabileceği anlamına geliyor!", + "Who can access this room?": "Bu odaya kimler erişebilir ?", + "Who can read history?": "Geçmişi kimler okuyabilir ?", + "Who would you like to add to this room?": "Bu odaya kimi eklemek istersiniz ?", + "Who would you like to communicate with?": "Kimlerle iletişim kurmak istersiniz ?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s %(targetName)s'nin davetinden çekildi.", + "Would you like to accept or decline this invitation?": "Bu daveti kabul etmek veya reddetmek ister misiniz ?", + "You already have existing direct chats with this user:": "Bu kullanıcıyla var olan doğrudan sohbetleriniz var :", + "You are already in a call.": "Zaten bir çağrıdasınız.", + "You're not in any rooms yet! Press to make a room or to browse the directory": "Henüz hiçbir odada değilsiniz ! Oda oluşturmak için ' a basın veya Dizine göz atmak için ' e basın", + "You are trying to access %(roomName)s.": "%(roomName)s 'e erişmeye çalışıyorsunuz.", + "You cannot place a call with yourself.": "Kendinizle görüşme yapamazsınız .", + "You cannot place VoIP calls in this browser.": "Bu tarayıcıda VoIP çağrısı yapamazsınız.", + "You do not have permission to post to this room": "Bu odaya göndermeye izniniz yok", + "You have been banned from %(roomName)s by %(userName)s.": "%(roomName)s odasından %(userName)s tarafından banlandınız.", + "You have been invited to join this room by %(inviterName)s": "Bu odaya %(inviterName)s tarafından davet edildiniz", + "You have been kicked from %(roomName)s by %(userName)s.": "%(roomName)s 'dan %(userName)s tarafından atıldınız.", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "Tüm cihazlardan çıkış yaptınız ve artık bildirimler almayacaksınız . Bildirimleri yeniden etkinleştirmek için , her cihazda tekrar giriş yapın", + "You have disabled URL previews by default.": "URL önizlemelerini varsayılan olarak devre dışı bıraktınız.", + "You have enabled URL previews by default.": "URL önizlemelerini varsayılan olarak etkinleştirdiniz .", + "You have no visible notifications": "Hiçbir görünür bildiriminiz yok", + "You may wish to login with a different account, or add this email to this account.": "Farklı bir hesap ile giriş yapmak veya bu e-postayı bu hesaba eklemek istemiş olabilirsiniz.", + "You must register to use this functionality": "Bu işlevi kullanmak için Kayıt Olun ", + "You need to be able to invite users to do that.": "Bunu yapmak için kullanıcıları davet etmeye ihtiyacınız var.", + "You need to be logged in.": "Oturum açmanız gerekiyor.", + "You need to enter a user name.": "Bir kullanıcı ismi girmeniz gerekiyor.", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "E-posta adresiniz bu Ana Sunucu'da ki Matrix ID'si ile ilişkili gözükmüyor.", + "Your password has been reset": "Şifreniz sıfırlandı", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Şifreniz başarıyla değiştirildi . Diğer cihazlara girene kadar onlara bildirim almayacaksınız", + "You seem to be in a call, are you sure you want to quit?": "Bir çağrıda gözüküyorsunuz , çıkmak istediğinizden emin misiniz ?", + "You seem to be uploading files, are you sure you want to quit?": "Dosya yüklüyorsunuz gibi görünüyor , çıkmak istediğinizden emin misiniz ?", + "You should not yet trust it to secure data": "Verilerin güvenliğini sağlamak için henüz güvenmemelisiniz", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "Kullanıcıyı sizinle aynı güç seviyesine yükseltirken , bu değişikliği geri alamazsınız.", + "Your home server does not support device management.": "Ana Sunucunuz cihaz yönetimini desteklemiyor.", + "Sun": "Pzt", + "Mon": "Pazartesi", + "Tue": "Salı", + "Wed": "Çarşamba", + "Thu": "Perşembe", + "Fri": "Cuma", + "Sat": "Cumartesi", + "Jan": "Ocak", + "Feb": "Şubat", + "Mar": "Mart", + "Apr": "Nisan", + "May": "Mayıs", + "Jun": "Haziran", + "Jul": "Temmuz", + "Aug": "Ağustos", + "Sep": "Eylül", + "Oct": "Ekim", + "Nov": "Kasım", + "Dec": "Aralık", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s , %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "Hafta - %(weekDayName)s , %(day)s -%(monthName)s -%(fullYear)s , %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "Görünür isim ayarla :", + "Upload an avatar:": "Bir Avatar yükle :", + "This server does not support authentication with a phone number.": "Bu sunucu bir telefon numarası ile kimlik doğrulamayı desteklemez.", + "Missing password.": "Şifre eksik.", + "Passwords don't match.": "Şifreler eşleşmiyor.", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "Şifre çok kısa (minimum %(MIN_PASSWORD_LENGTH)s).", + "This doesn't look like a valid email address.": "Bu geçerli bir e-posta adresi gibi gözükmüyor.", + "This doesn't look like a valid phone number.": "Bu geçerli bir telefon numarası gibi gözükmüyor.", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "Kullanıcı isimleri yalnızca harfler , sayılar , noktalar , tire ve altçizgiler içerebilir.", + "An unknown error occurred.": "Bilinmeyen bir hata meydana geldi.", + "I already have an account": "Zaten bir hesabım var", + "An error occurred: %(error_string)s": "Bir hata oluştu : %(error_string)s", + "Topic": "Konu", + "Make Moderator": "Moderatör Yap", + "Make this room private": "Bu odayı özel yap", + "Share message history with new users": "İleti geçmişini yeni kullanıcılarla paylaş", + "Encrypt room": "Odayı Şifrele", + "There are no visible files in this room": "Bu odada görünür hiçbir dosya yok", + "Room": "Oda", + "Connectivity to the server has been lost.": "Sunucuyla olan bağlantı kesildi.", + "Sent messages will be stored until your connection has returned.": "Gönderilen iletiler bağlantınız geri gelene kadar saklanacak.", + "(~%(count)s results)": { + "one": "(~%(count)s sonuç)", + "other": "(~%(count)s sonuçlar)" + }, + "Cancel": "İptal Et", + "Active call": "Aktif çağrı", + "bold": "kalın", + "italic": "italik", + "strike": "vurgulu", + "underline": "altı çizili", + "code": "kod", + "quote": "alıntı", + "bullet": "Madde (bullet)", + "numbullet": "Sayı madde işareti (numbullet)", + "Please select the destination room for this message": "Bu ileti için lütfen hedef oda seçin", + "Create new room": "Yeni Oda Oluştur", + "Room directory": "Oda Rehberi", + "Start chat": "Sohbet Başlat", + "New Password": "Yeni Şifre", + "Start automatically after system login": "Sisteme giriş yaptıktan sonra otomatik başlat", + "Desktop specific": "Masaüstüne özgü", + "Analytics": "Analitik", + "Options": "Seçenekler", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot , uygulamayı iyileştirmemize izin vermek için anonim analitik toplar.", + "Passphrases must match": "Şifrenin eşleşmesi gerekir", + "Passphrase must not be empty": "Şifrenin boş olmaması gerekir", + "Export room keys": "Oda anahtarlarını dışa aktar", + "Confirm passphrase": "Şifreyi onayla", + "Import room keys": "Oda anahtarlarını içe aktar", + "File to import": "Alınacak Dosya", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "Bu işlem şifreli odalarda aldığınız iletilerin anahtarlarını yerel dosyaya vermenizi sağlar . Bundan sonra dosyayı ileride başka bir Matrix istemcisine de aktarabilirsiniz , böylece istemci bu mesajların şifresini çözebilir (decryption).", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "Dışa aktarılan dosya , onu okuyabilen herkesin sizin görebildiğiniz iletilerin şifresini çözmesine olanak tanır , bu nedenle güvenliğini korumaya özen göstermelisiniz. Buna yardımcı olmak için , dışa aktarılan verileri şifrelemek için kullanılacak bir şifre girmelisiniz . Verileri yalnızca aynı şifreyi kullanarak içe aktarmak mümkün olacaktır.", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "Bu işlem , geçmişte başka Matrix istemcisinden dışa aktardığınız şifreleme anahtarlarınızı içe aktarmanızı sağlar . Böylece diğer istemcinin çözebileceği tüm iletilerin şifresini çözebilirsiniz.", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "Dışa aktarma dosyası bir şifre ile korunacaktır . Dosyanın şifresini çözmek için buraya şifre girmelisiniz.", + "You must join the room to see its files": "Dosyalarını görmek için odaya katılmalısınız", + "Reject all %(invitedRooms)s invites": "Tüm %(invitedRooms)s davetlerini reddet", + "Start new chat": "Yeni sohbet başlat", + "Failed to invite": "Davet edilemedi", + "Failed to invite user": "Kullanıcı davet edilemedi", + "Failed to invite the following users to the %(roomName)s room:": "Aşağıdaki kullanıcılar %(roomName)s odasına davet edilemedi :", + "Confirm Removal": "Kaldırma İşlemini Onayla", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Bu etkinliği kaldırmak(silmek) istediğinizden emin misiniz ? Bir odayı ismini silmeniz veya konu değiştirmeniz , geri alınabilir bir durumdur.", + "Unknown error": "Bilinmeyen Hata", + "Incorrect password": "Yanlış Şifre", + "To continue, please enter your password.": "Devam etmek için , lütfen şifrenizi girin.", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "Bu cihazın güvenilir olabileceğini doğrulamak için , lütfen sahibiyle başka yollarla iletişim kurun (örn. şahsen veya telefon görüşmesi) ve bu cihazın Kullanıcı Ayarları'nda gördükleri anahtarın aşağıdaki anahtarla eşleşip eşleşmediğini sorun :", + "Device name": "Cihaz ismi", + "Device Name": "Cihaz İsmi", + "Device key": "Cihaz anahtarı", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "Eğer eşleşirse , aşağıdaki doğrulama butonuna basın . Eğer eşleşmezse , o zaman başkası bir bu cihazı tutuyor ve bunun yerine kara liste butonuna basmak istiyor olabilirsiniz.", + "In future this verification process will be more sophisticated.": "Gelecekte bu doğrulama işlemi daha gelişmiş olacak.", + "Verify device": "Cihazı Doğrula", + "I verify that the keys match": "Anahtarların uyuştuğunu doğruluyorum", + "Unable to restore session": "Oturum geri yüklenemiyor", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Eğer daha önce Riot'un daha yeni bir versiyonunu kullandıysanız , oturumunuz bu sürümle uyumsuz olabilir . Bu pencereyi kapatın ve daha yeni sürüme geri dönün.", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "Şu anda doğrulanmamış cihazları kara listeye alıyorsunuz , bu cihazlara mesaj göndermek için onları doğrulamanız gerekir.", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "Her cihazın yasal sahiplerine ait olduklarını doğrulamak için doğrulama işlemini gerçekleştirmenizi öneririz, ancak tercih edip onaylamadan iletiyi tekrar gönderebilirsiniz.", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" daha önce görmediğiniz cihazları içeriyor.", + "Unknown devices": "Bilinmeyen cihazlar", + "Unknown Address": "Bilinmeyen Adres", + "Unblacklist": "Karaliste Dışı", + "Blacklist": "Kara Liste", + "Unverify": "Doğrulamasını İptal Et", + "Verify...": "Doğrulama...", + "ex. @bob:example.com": "örn. @bob:example.com", + "Add User": "Kullanıcı Ekle", + "This Home Server would like to make sure you are not a robot": "Bu Ana Sunucu robot olmadığınızdan emin olmak istiyor", + "Sign in with CAS": "CAS ile oturum açın", + "Custom Server Options": "Özelleştirilebilir Sunucu Seçenekleri", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "Özel Sunucu Seçeneklerini diğer Matrix sunucularına giriş yapmak için farklı bir Ana Sunucu URL'si belirleyerek kullanabilirsiniz.", + "This allows you to use this app with an existing Matrix account on a different home server.": "Bu, sizin bu uygulamayı varolan Matrix hesabınızla farklı Ana Sunucularda kullanmanıza izin verir.", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "Ayrıca özel bir kimlik sunucusu da ayarlayabilirsiniz ancak bu e-posta adresine dayalı olarak kullanıcılarla olan etkileşimi engeller.", + "Dismiss": "Kapat", + "Please check your email to continue registration.": "Kayıt işlemine devam etmek için lütfen e-postanızı kontrol edin.", + "Token incorrect": "Belirteç(Token) hatalı", + "Please enter the code it contains:": "Lütfen içerdiği kodu girin:", + "powered by Matrix": "Matrix tarafından desteklenmektedir", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "Eğer bir e-posta adresi belirtmezseniz , şifrenizi sıfırlayamazsınız . Emin misiniz ?", + "You are registering with %(SelectedTeamName)s": "%(SelectedTeamName)s ile kayıt oluyorsunuz", + "Default server": "Varsayılan sunucu", + "Custom server": "Özel sunucu", + "Home server URL": "Ana Sunucu URL'i", + "Identity server URL": "Kimlik Sunucusu URL'i", + "What does this mean?": "Bu ne anlama geliyor ?", + "Error decrypting audio": "Ses şifre çözme hatası", + "Error decrypting image": "Resim şifre çözme hatası", + "Error decrypting video": "Video şifre çözme hatası", + "Add an Integration": "Entegrasyon ekleyin", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "Hesabınızı %(integrationsUrl)s ile kullanmak üzere doğrulayabilmeniz için üçüncü taraf bir siteye götürülmek üzeresiniz. Devam etmek istiyor musunuz ?", + "Removed or unknown message type": "Kaldırılmış veya bilinmeyen ileti tipi", + "URL Previews": "URL önizlemeleri", + "Drop file here to upload": "Yüklemek için dosyaları buraya bırakın", + " (unsupported)": " (desteklenmeyen)", + "Ongoing conference call%(supportedText)s.": "Devam eden konferans görüşmesi %(supportedText)s.", + "Online": "Çevrimiçi", + "Idle": "Boş", + "Offline": "Çevrimdışı", + "Start chatting": "Sohbeti başlat", + "Start Chatting": "Sohbeti Başlat", + "Click on the button below to start chatting!": "Sohbeti başlatmak için aşağıdaki butona tıklayın!", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s odanın avatarını olarak çevirdi", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s odanın avatarını kaldırdı.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s %(roomName)s için avatarı değiştirdi", + "Username available": "Kullanıcı ismi uygun", + "Username not available": "Kullanıcı ismi uygun değil", + "Something went wrong!": "Bir şeyler yanlış gitti!", + "This will be your account name on the homeserver, or you can pick a different server.": "Bu sizin Ana Sunucunuzdaki hesap adınız olacak , veya farklı sunucu seçebilirsiniz.", + "If you already have a Matrix account you can log in instead.": "Eğer Matrix hesabınız varsa , bunun yerine Giriş Yapabilirsiniz .", + "Your browser does not support the required cryptography extensions": "Tarayıcınız gerekli şifreleme uzantılarını desteklemiyor", + "Not a valid Riot keyfile": "Geçersiz bir Riot anahtar dosyası", + "Authentication check failed: incorrect password?": "Kimlik doğrulama denetimi başarısız oldu : yanlış şifre ?", + "Disable Peer-to-Peer for 1:1 calls": "1:1 Eşler arası (P2P) görüşmeyi Devre Dışı Bırak", + "Do you want to set an email address?": "Bir e-posta adresi ayarlamak ister misiniz ?", + "This will allow you to reset your password and receive notifications.": "Bu şifrenizi sıfırlamanızı ve bildirimler almanızı sağlayacak.", + "To return to your account in future you need to set a password": "Gelecekte hesabınıza dönmek için , bir şifre ayarlamanız gerekiyor", + "Skip": "Atla", + "Start verification": "Doğrulamayı başlat", + "Share without verifying": "Doğrulamadan paylaş", + "Ignore request": "İsteği yoksay", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "Şifreleme anahtarları isteyen , '%(displayName)s' isminde yeni bir cihaz eklediniz .", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "Tanımlanmamış cihazınız '%(displayName)s' , şifreleme anahtarlarını istiyor.", + "Encryption key request": "Şifreleme anahtarı isteği", + "Fetching third party location failed": "Üçüncü parti konumunu çekemedi", + "A new version of Riot is available.": "Riot'un yeni bir versiyonu mevcuttur.", + "All notifications are currently disabled for all targets.": "Tüm bildirimler şu anda tüm hedefler için devre dışı bırakılmıştır.", + "Uploading report": "Rapor yükleniyor", + "Sunday": "Pazar", + "Guests can join": "Misafirler katılabilirler", + "Messages sent by bot": "Bot tarafından gönderilen mesajlar", + "Notification targets": "Bildirim hedefleri", + "Failed to set direct chat tag": "Direkt sohbet etiketi ayarlanamadı", + "Today": "Bugün", + "Failed to get protocol list from Home Server": "Ana Sunucu'dan protokol listesi alınamadı", + "You are not receiving desktop notifications": "Masaüstü bildirimleri almıyorsunuz", + "Friday": "Cuma", + "Update": "Güncelleştirme", + "What's New": "Yenilikler", + "Add an email address above to configure email notifications": "E-posta bildirimlerini yapılandırmak için yukarıya bir e-posta adresi ekleyin", + "Expand panel": "Genişletme paneli", + "On": "Açık", + "Filter room names": "Oda isimlerini filtrele", + "Changelog": "Değişiklikler", + "Waiting for response from server": "Sunucudan yanıt bekleniyor", + "Leave": "Ayrıl", + "Advanced notification settings": "Gelişmiş bildirim ayarları", + "delete the alias.": "Tüm rumuzları sil.", + "Forget": "Unut", + "World readable": "Okunabilir dünya", + "#example": "örnek", + "Hide panel": "Paneli gizle", + "You cannot delete this image. (%(code)s)": "Bu resmi silemezsiniz. (%(code)s)", + "Cancel Sending": "Göndermeyi İptal Et", + "This Room": "Bu Oda", + "The Home Server may be too old to support third party networks": "Ana Sunucu 3. parti ağları desteklemek için çok eski olabilir", + "Noisy": "Gürültülü", + "Room not found": "Oda bulunamadı", + "Messages in one-to-one chats": "Bire bir sohbetlerdeki mesajlar", + "Unavailable": "Kullanım dışı", + "View Decrypted Source": "Şifresi Çözülmüş(Decrypted) Kaynağı Görüntüle", + "Failed to update keywords": "Anahtar kelimeler güncellenemedi", + "remove %(name)s from the directory.": "%(name)s'i dizinden kaldır.", + "Notifications on the following keywords follow rules which can’t be displayed here:": "Aşağıdaki anahtar kelimeleri ile ilgili bildirimler burada gösterilemeyen kuralları takip eder:", + "Please set a password!": "Lütfen bir şifre ayarlayın !", + "You have successfully set a password!": "Başarıyla bir şifre ayarladınız!", + "Source URL": "Kaynak URL", + "Failed to add tag %(tagName)s to room": "%(tagName)s etiketi odaya eklenemedi", + "Members": "Üyeler", + "Resend": "Yeniden Gönder", + "Files": "Dosyalar", + "Collecting app version information": "Uygulama sürümü bilgileri toplanıyor", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "%(alias)s oda rumuzu silinsin ve %(name)s dizinden kaldırılsın mı ?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "Bu oturumunuzu kapattıktan sonra hesabınıza dönmenizi ve diğer cihazlarda oturum açmanızı sağlar.", + "Keywords": "Anahtar kelimeler", + "Enable notifications for this account": "Bu hesap için bildirimleri etkinleştir", + "Directory": "Dizin", + "Failed to get public room list": "Genel odalar listesi alınamadı", + "Messages containing keywords": " anahtar kelimeleri içeren mesajlar", + "Error saving email notification preferences": "E-posta bildirim tercihlerini kaydetme hatası", + "Tuesday": "Salı", + "Enter keywords separated by a comma:": "Anahtar kelimeleri virgül ile ayırarak girin:", + "I understand the risks and wish to continue": "Riskleri anlıyorum ve devam etmek istiyorum", + "Remove %(name)s from the directory?": "%(name)s'i dizinden kaldırılsın mı ?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot geçerli tarayıcınızda mevcut olmayan veya denemelik olan birçok gelişmiş tarayıcı özelliği kullanıyor.", + "Enable desktop notifications": "Masaüstü bildirimlerini etkinleştir", + "Unnamed room": "İsimsiz oda", + "All messages (noisy)": "Tüm mesajlar (uzun)", + "Saturday": "Cumartesi", + "Remember, you can always set an email address in user settings if you change your mind.": "Unutmayın , fikrinizi değiştirirseniz her zaman bir şifre ve e-posta adresi ayarlayabilirsiniz.", + "Direct Chat": "Doğrudan Sohbet", + "The server may be unavailable or overloaded": "Sunucu kullanılamıyor veya aşırı yüklenmiş olabilir", + "Reject": "Reddet", + "Failed to set Direct Message status of room": "Odanın Direkt Mesaj durumu ayarlanamadı", + "Monday": "Pazartesi", + "Remove from Directory": "Dizinden Kaldır", + "Enable them now": "Onları şimdi etkinleştir", + "Forward Message": "Mesajı İlet", + "Messages containing my user name": "Kullanıcı ismimi içeren mesajlar", + "Collecting logs": "Kayıtlar toplanıyor", + "more": "Daha", + "Search for a room": "Oda ara", + "(HTTP status %(httpStatus)s)": "(HTTP durumu %(httpStatus)s)", + "All Rooms": "Tüm Odalar", + "Wednesday": "Çarşamba", + "Quote": "Alıntı", + "Send": "Gönder", + "Send logs": "Kayıtları gönder", + "All messages": "Tüm mesajlar", + "Call invitation": "Arama davetiyesi", + "Messages containing my display name": "İsmimi içeren mesajlar", + "You have successfully set a password and an email address!": "Başarıyla bir şifre ve e-posta adresi ayarladın !", + "What's new?": "Yeni olan ne ?", + "Notify me for anything else": "Başka herhangi bir şey için bana bildirim yap", + "When I'm invited to a room": "Bir odaya davet edildiğimde", + "Can't update user notification settings": "Kullanıcı bildirim ayarları güncellenemiyor", + "Notify for all other messages/rooms": "Diğer tüm mesajlar / odalar için bildirim yapın", + "Unable to look up room ID from server": "Sunucudan oda ID'si aranamadı", + "Couldn't find a matching Matrix room": "Eşleşen bir Matrix odası bulunamadı", + "Invite to this room": "Bu odaya davet et", + "You cannot delete this message. (%(code)s)": "Bu mesajı silemezsiniz (%(code)s)", + "Thursday": "Perşembe", + "Search…": "Arama…", + "Unhide Preview": "Önizlemeyi Göster", + "Unable to join network": "Ağa bağlanılamıyor", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "Onları Riot dışında bir istemciden yapılandırmış olabilirsiniz . Onları Riot içersinide ayarlayamazsınız ama hala geçerlidirler", + "Sorry, your browser is not able to run Riot.": "Üzgünüz , tarayıcınız Riot'u çalıştıramıyor .", + "Uploaded on %(date)s by %(user)s": "%(user)s tarafında %(date)s e yüklendi", + "Messages in group chats": "Grup sohbetlerindeki mesajlar", + "Yesterday": "Dün", + "Low Priority": "Düşük Öncelikli", + "Unable to fetch notification target list": "Bildirim hedef listesi çekilemedi", + "An error occurred whilst saving your email notification preferences.": "E-posta bildirim tercihlerinizi kaydetme işlemi sırasında bir hata oluştu.", + "Enable audible notifications in web client": "Web istemcisinde sesli bildirimleri etkinleştir", + "Off": "Kapalı", + "Riot does not know how to join a room on this network": "Riot bu ağdaki bir odaya nasıl gireceğini bilmiyor", + "Mentions only": "Sadece Mention'lar", + "Failed to remove tag %(tagName)s from room": "Odadan %(tagName)s etiketi kaldırılamadı", + "You can now return to your account after signing out, and sign in on other devices.": "Şimdi oturumunuzu iptal ettikten sonra başka cihazda oturum açarak hesabınıza dönebilirsiniz.", + "Enable email notifications": "E-posta bildirimlerini etkinleştir", + "Login": "Oturum aç", + "No rooms to show": "Gösterilecek oda yok", + "Download this file": "Bu dosyayı indir", + "Failed to change settings": "Ayarlar değiştirilemedi", + "View Source": "Kaynağı Görüntüle", + "Collapse panel": "Katlanır panel", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Geçerli tarayıcınız ile birlikte , uygulamanın görünüş ve kullanım hissi tamamen hatalı olabilir ve bazı ya da tüm özellikler çalışmayabilir. Yine de denemek isterseniz devam edebilirsiniz ancak karşılaşabileceğiniz sorunlar karşısında kendi başınasınız !", + "There are advanced notifications which are not shown here": "Burada gösterilmeyen gelişmiş bildirimler var", + "The platform you're on": "Bulunduğun platform", + "The version of Riot.im": "Riot.im'in sürümü", + "Whether or not you're logged in (we don't record your user name)": "Ne olursa olsun giriş yaptın (kullanıcı adınızı kaydetmeyiz)", + "Your language of choice": "Seçtiginiz diliniz", + "Which officially provided instance you are using, if any": "", + "%(appName)s via %(browserName)s on %(osName)s": "%(osName)s işletim sisteminde %(browserName)s ile %(appName)s", + "Riot Desktop on %(platformName)s": "%(platformName)s platformunda Riot Masaüstü", + "Riot is not supported on mobile web. Install the app?": "Riot mobil web'de desteklenmiyor . Uygulamayı yükle ?", + "Unknown device": "Bilinmeyen aygıt", + "You need to be using HTTPS to place a screen-sharing call.": "Ekran paylaşımlı arama yapmak için HTTPS kullanıyor olmalısınız.", + "Welcome to Riot.im": "Riot.im'e hoş geldiniz", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "Merkezsiz, şifreli sohbet & işbirliği ile Matrix tarafından desteklenmektedir", + "Search the room directory": "Oda dizinini ara", + "Chat with Riot Bot": "Riot Bot ile sohbet et", + "Get started with some tips from Riot Bot!": "Riot Bot'tan bazı ipuçları ile başlayın!", + "General discussion about Matrix and Riot": "Matrix ve Riot hakkında genel tartışma", + "Discussion of all things Matrix!": "Matrix'in tüm tartışması!", + "Riot/Web & Desktop chat": "Riot/Web & Masaüstü sohbet", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS & matrix-ios-sdk sohbet", + "Riot/Android & matrix-android-sdk chat": "Riot/Android & matrix-android-sdk sohbet", + "Matrix technical discussions": "Matrix teknik tartışmalar", + "Running Matrix services": "Çalışan Matrix hizmetleri", + "Community-run support for Synapse": "Synapse için topluluk tarafından işletilen destek", + "Admin support for Dendrite": "Dendrite için yönetici desteği", + "Announcements about Synapse releases": "Synapse sürümleri hakkında duyurular", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc kullanan ve çalıştıran kullanıcılar için destek", + "Building services on Matrix": "Matrix üzerinde yapı hizmetleri", + "Support for those using the Matrix spec": "Matrix teknik özelliklerini kullananlar için destek", + "Design and implementation of E2E in Matrix": "Matrix'te E2E ' nin Tasarımı ve uyglamanması", + "Implementing VR services with Matrix": "Matrix'te VR hizmetlerini uygulamak", + "Implementing VoIP services with Matrix": "Matrix'te VoIP hizmetlerini uygulamak", + "Discussion of the Identity Service API": "Kimlik Hizmet API ( Identity Service API ) tartışması", + "Support for those using, running and writing other bridges": "Diğer köprüleri kullanan , çalıştıran ve yazanlar için destek", + "Contributing code to Matrix and Riot": "Matrix ve Riot'a kod katkısı sağlama", + "Dev chat for the Riot/Web dev team": "Riot/Web Geliştirici takımı için geliştirici sohbeti", + "Dev chat for the Dendrite dev team": "Dendrite geliştirici takımı için geliştirici sohbeti", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix'te var olan ağalara bağlı (Slack , IRC , Gitter vb.) birçok oda var. Dizini kontrol edin!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "Farklı bir ev sunucusu URL'sini belirterek diğer Matrix sunucularına oturum açmak için özel sunucu seçeneklerini kullanabilirsiniz.
Bu, Riot'u başka bir ev sunucusu üzerinde var olan Matrix hesabını kullanmanıza olanak sağlar.

Ayrıca özelleştirilebilir bir kimlik de ayarlayabilirsiniz, ama kullanıcılırı ve kendinizi e-posta adreslerinden davet edemeyeceksiniz.", + "Co-ordination for Riot translators": "Riot çeviricileri için iş güdüm (koordinasyon)" +} \ No newline at end of file diff --git a/riot/i18n/zh_Hans.json b/riot/i18n/zh_Hans.json new file mode 100644 index 0000000..6f89bbe --- /dev/null +++ b/riot/i18n/zh_Hans.json @@ -0,0 +1,1387 @@ +{ + "Create an account": "创建新账号", + "Create Room": "创建聊天室", + "Cryptography": "加密", + "Current password": "当前密码", + "/ddg is not a command": "/ddg 不是一个命令", + "Deactivate Account": "销毁账号", + "Deactivate my account": "销毁我的账号", + "Decrypt %(text)s": "解密 %(text)s", + "Decryption error": "解密出错", + "Delete": "删除", + "Default": "默认", + "Device ID": "设备 ID", + "Devices": "设备列表", + "Devices will not yet be able to decrypt history from before they joined the room": "新加入聊天室的设备不能解密加入之前的聊天记录", + "Direct chats": "私聊", + "Disinvite": "取消邀请", + "Display name": "昵称", + "Displays action": "显示操作", + "Don't send typing notifications": "不要发送“正在输入”提示", + "Download %(text)s": "下载 %(text)s", + "Email": "电子邮箱", + "Email address": "邮箱地址", + "Email, name or matrix ID": "邮箱地址,名称或者Matrix ID", + "Emoji": "表情", + "Enable encryption": "启用加密", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "不支持加密的客户端将看不到加密的消息", + "Encrypted room": "加密聊天室", + "%(senderName)s ended the call.": "%(senderName)s 结束了通话。", + "End-to-end encryption information": "端到端加密信息", + "End-to-end encryption is in beta and may not be reliable": "端到端加密现为 beta 版,不一定可靠", + "Enter Code": "输入验证码", + "Error": "错误", + "Error decrypting attachment": "解密附件时出错", + "Event information": "事件信息", + "Existing Call": "当前通话", + "Export E2E room keys": "导出聊天室的端到端加密密钥", + "Failed to ban user": "封禁失败", + "Failed to change password. Is your password correct?": "修改密码失败。确认原密码输入正确吗?", + "Failed to forget room %(errCode)s": "忘记聊天室失败,错误代码: %(errCode)s", + "Failed to join room": "无法加入聊天室", + "Failed to kick": "移除失败", + "Failed to leave room": "无法退出聊天室", + "Failed to load timeline position": "无法加载时间轴位置", + "Failed to mute user": "禁言用户失败", + "Failed to reject invite": "拒绝邀请失败", + "Failed to reject invitation": "拒绝邀请失败", + "Failed to save settings": "保存设置失败", + "Failed to send email": "发送邮件失败", + "Failed to send request.": "请求发送失败。", + "Failed to set avatar.": "设置头像失败。", + "Failed to set display name": "设置昵称失败", + "Failed to set up conference call": "无法启动群组通话", + "Failed to toggle moderator status": "无法切换管理员权限", + "Failed to unban": "解除封禁失败", + "Failed to upload file": "上传文件失败", + "Failed to verify email address: make sure you clicked the link in the email": "邮箱验证失败: 请确保你已点击邮件中的链接", + "Failure to create room": "创建聊天室失败", + "Favourite": "收藏", + "Favourites": "收藏夹", + "Fill screen": "满屏显示", + "Filter room members": "过滤聊天室成员", + "Forget room": "忘记聊天室", + "Forgot your password?": "忘记密码?", + "For security, this session has been signed out. Please sign in again.": "出于安全考虑,此会话已被注销。请重新登录。", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "出于安全考虑,用户注销时会清除浏览器里的端到端加密密钥。如果你想要下次登录 Riot 时能解密过去的聊天记录,请导出你的聊天室密钥。", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 从 %(fromPowerLevel)s 变为 %(toPowerLevel)s", + "Guests cannot join this room even if explicitly invited.": "即使有人主动邀请,游客也不能加入此聊天室。", + "Hangup": "挂断", + "Hide read receipts": "隐藏已读回执", + "Hide Text Formatting Toolbar": "隐藏格式工具栏", + "Historical": "历史", + "Homeserver is": "主服务器是", + "Identity Server is": "身份认证服务器是", + "I have verified my email address": "我已经验证了我的邮箱地址", + "Import E2E room keys": "导入聊天室端到端加密密钥", + "Incorrect verification code": "验证码错误", + "Interface Language": "界面语言", + "Invalid alias format": "别名格式无效", + "Invalid address format": "地址格式错误", + "Invalid Email Address": "邮箱地址格式错误", + "Invalid file%(extra)s": "非法文件%(extra)s", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "重设密码会导致所有设备上的端到端加密密钥被重置,使得加密的聊天记录不可读,除非你事先导出密钥,修改密码后再导入。此问题将来会得到改善。", + "Return to login screen": "返回登录页面", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot 没有通知发送权限 - 请检查您的浏览器设置", + "Riot was not given permission to send notifications - please try again": "Riot 没有通知发送权限 - 请重试", + "riot-web version:": "riot-web 版本:", + "Room %(roomId)s not visible": "聊天室 %(roomId)s 已隐藏", + "Room Colour": "聊天室颜色", + "Room name (optional)": "聊天室名称 (可选)", + "Rooms": "聊天室", + "Scroll to bottom of page": "滚动到页面底部", + "Scroll to unread messages": "滚动到未读消息", + "Search": "搜索", + "Search failed": "搜索失败", + "Searches DuckDuckGo for results": "搜索 DuckDuckGo", + "Sender device information": "发送者的设备信息", + "Send Invites": "发送邀请", + "Send Reset Email": "发送密码重设邮件", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s 发送了一张图片。", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s 向 %(targetDisplayName)s 发了加入聊天室的邀请。", + "Server error": "服务器错误", + "Server may be unavailable or overloaded": "服务器可能不可用或者超载", + "Server may be unavailable, overloaded, or search timed out :(": "服务器可能不可用、超载,或者搜索超时 :(", + "Server may be unavailable, overloaded, or the file too big": "服务器可能不可用、超载,或者文件过大", + "Server may be unavailable, overloaded, or you hit a bug.": "当前服务器可能处于不可用或过载状态,或者您遇到了一个 bug。", + "Server unavailable, overloaded, or something else went wrong.": "服务器可能不可用、超载,或者其他东西出错了.", + "Session ID": "会话 ID", + "%(senderName)s set a profile picture.": "%(senderName)s 设置了头像。", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s 将昵称改为了 %(displayName)s。", + "Settings": "设置", + "Show panel": "显示侧边栏", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "用12小时制显示时间戳 (如:下午 2:30)", + "Signed Out": "已退出登录", + "Sign in": "登录", + "Sign out": "注销", + "%(count)s of your messages have not been sent.": { + "other": "部分消息未发送。", + "one": "您的消息尚未发送。" + }, + "Someone": "某位用户", + "Start a chat": "创建聊天", + "Start Chat": "开始聊天", + "Submit": "提交", + "Success": "成功", + "The default role for new room members is": "新成员默认是", + "The main address for this room is": "此聊天室的主要地址是", + "This email address is already in use": "此邮箱地址已被使用", + "This email address was not found": "未找到此邮箱地址", + "The email address linked to your account must be entered.": "必须输入和你账号关联的邮箱地址。", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "文件 '%(fileName)s' 超过了此主服务器的上传大小限制", + "The file '%(fileName)s' failed to upload": "文件 '%(fileName)s' 上传失败", + "Add email address": "添加邮件地址", + "Add phone number": "添加手机号码", + "Advanced": "高级", + "Algorithm": "算法", + "Always show message timestamps": "总是显示消息时间戳", + "%(names)s and %(lastPerson)s are typing": "%(names)s 和 %(lastPerson)s 正在输入", + "A new password must be entered.": "必须输入新密码。", + "%(senderName)s answered the call.": "%(senderName)s 接了通话。", + "An error has occurred.": "发生了一个错误。", + "Attachment": "附件", + "Autoplay GIFs and videos": "自动播放 GIF 与视频", + "%(senderName)s banned %(targetName)s.": "%(senderName)s 封禁了 %(targetName)s.", + "Ban": "封禁", + "Banned users": "被封禁的用户", + "Click here to fix": "点击这里以修复", + "Confirm password": "确认密码", + "Confirm your new password": "确认你的新密码", + "Continue": "继续", + "Ed25519 fingerprint": "Ed25519指纹", + "Invite new room members": "邀请新的聊天室成员", + "Join Room": "加入聊天室", + "%(targetName)s joined the room.": "%(targetName)s 已加入聊天室。", + "Jump to first unread message.": "跳到第一条未读消息。", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s 把 %(targetName)s 踢出了聊天室。", + "Leave room": "退出聊天室", + "New password": "新密码", + "Add a topic": "添加主题", + "Admin": "管理员", + "Admin Tools": "管理工具", + "VoIP": "IP 电话", + "Missing Media Permissions, click here to request.": "没有媒体存储权限,点此获取。", + "No Microphones detected": "未检测到麦克风", + "No Webcams detected": "未检测到摄像头", + "No media permissions": "没有媒体存取权限", + "You may need to manually permit Riot to access your microphone/webcam": "你可能需要手动授权 Riot 使用你的麦克风或摄像头", + "Default Device": "默认设备", + "Microphone": "麦克风", + "Camera": "摄像头", + "Hide removed messages": "隐藏被删除的消息", + "Authentication": "认证", + "Alias (optional)": "别名(可选)", + "%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s", + "and %(count)s others...": { + "other": "和其它 %(count)s 个...", + "one": "和其它一个..." + }, + "Anyone": "任何人", + "Anyone who knows the room's link, apart from guests": "任何知道聊天室链接的人,游客除外", + "Anyone who knows the room's link, including guests": "任何知道聊天室链接的人,包括游客", + "Are you sure?": "你确定吗?", + "Are you sure you want to leave the room '%(roomName)s'?": "你确定要退出聊天室 “%(roomName)s” 吗?", + "Are you sure you want to reject the invitation?": "你确定要拒绝邀请吗?", + "Are you sure you want to upload the following files?": "你确定要上传这些文件吗?", + "Bans user with given id": "按照 ID 封禁指定的用户", + "Blacklisted": "已拉黑", + "Bulk Options": "批量选项", + "Call Timeout": "通话超时", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "无法连接主服务器 - 请检查网络连接,确保你的主服务器 SSL 证书被信任,且没有浏览器插件拦截请求。", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "当浏览器地址栏里有 HTTPS 的 URL 时,不能使用 HTTP 连接主服务器。请使用 HTTPS 或者允许不安全的脚本。", + "Can't load user settings": "无法加载用户设置", + "Change Password": "修改密码", + "%(senderName)s changed their profile picture.": "%(senderName)s 修改了头像。", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s 将聊天室名称改为 %(roomName)s。", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s 移除了聊天室名称。", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s 将话题修改为 “%(topic)s”。", + "Changes to who can read history will only apply to future messages in this room": "修改阅读历史的权限仅对此聊天室以后的消息有效", + "Changes your display nickname": "修改昵称", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "目前,修改密码会导致所有设备上的端到端密钥被重置,使得加密的聊天记录不再可读。除非事先导出你的密钥,并在密码修改后导入回去。此问题将会在未来得到改善。", + "Clear Cache and Reload": "清除缓存并刷新", + "Clear Cache": "清除缓存", + "Click here to join the discussion!": "点此 加入讨论!", + "Click to mute audio": "点此静音", + "Click to mute video": "点此静音", + "click to reveal": "点击展开", + "Click to unmute video": "点此打开声音", + "Click to unmute audio": "点此打开声音", + "Close": "关闭", + "Command error": "命令错误", + "Commands": "命令", + "Conference call failed.": "视频会议失败。", + "Conference calling is in development and may not be reliable.": "视频会议功能还在开发状态,可能不稳定。", + "Conference calls are not supported in encrypted rooms": "加密聊天室不支持视频会议", + "Conference calls are not supported in this client": "此客户端不支持视频会议", + "%(count)s new messages": { + "one": "%(count)s 条未读消息", + "other": "%(count)s 未读消息" + }, + "Create a new chat or reuse an existing one": "创建新聊天或使用已有的聊天", + "Custom": "自定义", + "Custom level": "自定义级别", + "Decline": "拒绝", + "Device already verified!": "设备已验证!", + "Device ID:": "设备 ID:", + "device id: ": "设备 ID: ", + "Device key:": "设备密钥 :", + "Disable Notifications": "关闭消息通知", + "Drop File Here": "把文件拖拽到这里", + "Email address (optional)": "邮箱地址 (可选)", + "Enable Notifications": "启用消息通知", + "Encrypted by a verified device": "由已验证设备加密", + "Encrypted by an unverified device": "由未验证设备加密", + "Encryption is enabled in this room": "此聊天室启用了加密", + "Encryption is not enabled in this room": "此聊天室未启用加密", + "Enter passphrase": "输入密码", + "Error: Problem communicating with the given homeserver.": "错误: 与指定的主服务器通信时出错。", + "Export": "导出", + "Failed to fetch avatar URL": "获取 Avatar URL 失败", + "Failed to upload profile picture!": "头像上传失败!", + "Guest access is disabled on this Home Server.": "此服务器已禁止游客访问。", + "Home": "主页面", + "Import": "导入", + "Incoming call from %(name)s": "来自 %(name)s 的通话", + "Incoming video call from %(name)s": "来自 %(name)s 的视频通话", + "Incoming voice call from %(name)s": "来自 %(name)s 的语音通话", + "Incorrect username and/or password.": "用户名或密码错误。", + "%(senderName)s invited %(targetName)s.": "%(senderName)s 邀请了 %(targetName)s。", + "Invited": "已邀请", + "Invites": "邀请", + "Invites user with given id to current room": "按照 ID 邀请指定用户加入当前聊天室", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' 不符合电子邮箱地址的格式", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' 不符合别名的格式", + "%(displayName)s is typing": "%(displayName)s 正在输入", + "Sign in with": "第三方登录", + "Message not sent due to unknown devices being present": "消息未发送,因为有未知的设备存在", + "Missing room_id in request": "请求中没有 聊天室 ID", + "Missing user_id in request": "请求中没有 user_id", + "Mobile phone number": "手机号码", + "Mobile phone number (optional)": "手机号码 (可选)", + "Moderator": "协管员", + "Mute": "静音", + "Name": "姓名", + "Never send encrypted messages to unverified devices from this device": "在此设备上,从不对未经验证的设备发送消息", + "New passwords don't match": "两次输入的新密码不符", + "none": "无", + "not set": "未设置", + "not specified": "未指定", + "Notifications": "通知", + "(not supported by this browser)": "(未被此浏览器支持)", + "": "<不支持>", + "NOT verified": "未验证", + "No display name": "无昵称", + "No results": "没有更多结果", + "OK": "确定", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "(目前) 一旦聊天室开启加密,就不能再关闭", + "Operation failed": "操作失败", + "Password": "密码", + "Password:": "密码:", + "Passwords can't be empty": "密码不能为空", + "Permissions": "权限", + "Phone": "手机号码", + "Cancel": "取消", + "Create new room": "创建新聊天室", + "Custom Server Options": "自定义服务器选项", + "Dismiss": "标记为已读", + "powered by Matrix": "由 Matrix 驱动", + "Remove": "移除", + "Room directory": "聊天室目录", + "Start chat": "开始聊天", + "unknown error code": "未知错误代码", + "Account": "账户", + "Add": "添加", + "Allow": "允许", + "Claimed Ed25519 fingerprint key": "声称的 Ed25519 指纹密钥", + "Could not connect to the integration server": "无法连接关联的服务器", + "Curve25519 identity key": "Curve25519 认证密钥", + "Edit": "编辑", + "Joins room with given alias": "通过指定的别名加入聊天室", + "Labs": "实验室", + "%(targetName)s left the room.": "%(targetName)s 退出了聊天室。", + "Logged in as:": "登录为:", + "Logout": "登出", + "Low priority": "低优先级", + "Markdown is disabled": "Markdown 已禁用", + "Markdown is enabled": "Markdown 已启用", + "matrix-react-sdk version:": "matrix-react-sdk 版本:", + "No more results": "没有更多结果", + "olm version:": "olm 版本:", + "Only people who have been invited": "只有被邀请的人", + "Privacy warning": "隐私警告", + "Private Chat": "私聊", + "Privileged Users": "特权用户", + "Reason": "理由", + "Register": "注册", + "%(targetName)s rejected the invitation.": "%(targetName)s 拒绝了邀请。", + "Reject invitation": "拒绝邀请", + "Rejoin": "重新加入", + "Users": "用户", + "Verification": "验证", + "verified": "已验证", + "Verified": "已验证", + "Verified key": "已验证的密钥", + "Video call": "视频通话", + "Voice call": "语音通话", + "VoIP conference finished.": "VoIP 会议结束。", + "VoIP conference started.": "VoIP 会议开始。", + "VoIP is unsupported": "不支持 VoIP", + "Warning!": "警告!", + "You must register to use this functionality": "你必须 注册 以使用此功能", + "You need to be logged in.": "你需要登录。", + "You need to enter a user name.": "必须输入用户名。", + "Your password has been reset": "你的密码已被重置", + "Topic": "主题", + "Make Moderator": "使成为主持人", + "Room": "聊天室", + "Connectivity to the server has been lost.": "到服务器的连接已经丢失。", + "bold": "加粗", + "italic": "斜体", + "strike": "删除线", + "underline": "下划线", + "code": "代码", + "quote": "引用", + "bullet": "项目符号", + "numbullet": "数字项目符号", + "New Password": "新密码", + "Options": "选项", + "Passphrases must match": "密码必须匹配", + "Passphrase must not be empty": "密码不能为空", + "Export room keys": "导出聊天室密钥", + "Confirm passphrase": "确认密码", + "Import room keys": "导入聊天室密钥", + "File to import": "要导入的文件", + "Start new chat": "开始新的聊天", + "Failed to invite": "邀请失败", + "Failed to invite user": "邀请用户失败", + "Unknown error": "未知错误", + "Incorrect password": "密码错误", + "To continue, please enter your password.": "请输入你的密码继续。", + "Device name": "设备名称", + "Device Name": "设备名称", + "Device key": "设备密钥", + "Verify device": "验证设备", + "I verify that the keys match": "我验证此密钥匹配", + "Unable to restore session": "无法恢复会话", + "Blacklist": "列入黑名单", + "Unverify": "取消验证", + "ex. @bob:example.com": "例如 @bob:example.com", + "Add User": "添加用户", + "This Home Server would like to make sure you are not a robot": "此主服务器想确保您不是机器人", + "Token incorrect": "令牌错误", + "Default server": "默认服务器", + "Custom server": "自定义服务器", + "URL Previews": "链接预览", + "Drop file here to upload": "把文件拖到这里以上传", + "Online": "在线", + "Idle": "空闲", + "Offline": "离线", + "Start chatting": "开始聊天", + "Start Chatting": "开始聊天", + "Click on the button below to start chatting!": "点击下面的按钮开始聊天!", + "Username available": "用户名可用", + "Username not available": "用户名不可用", + "Skip": "跳过", + "Start verification": "开始验证", + "Ignore request": "忽略请求", + "Loading device info...": "正在加载设备信息...", + "Example": "例子", + "Create": "创建", + "Failed to upload image": "上传图像失败", + "Add a widget": "添加小挂件", + "Accept": "接受", + "Access Token:": "访问令牌:", + "Cannot add any more widgets": "无法添加更多小挂件", + "Delete widget": "删除小挂件", + "Define the power level of a user": "定义一位用户的滥权等级", + "Drop here to tag %(section)s": "拖拽到这里标记 %(section)s", + "Enable automatic language detection for syntax highlighting": "为语法高亮启用自动检测编程语言", + "Failed to change power level": "滥权等级修改失败", + "Kick": "移除", + "Kicks user with given id": "按照 ID 移除特定的用户", + "Last seen": "最近一次上线", + "Level:": "级别:", + "Local addresses for this room:": "此聊天室的本地地址:", + "New passwords must match each other.": "新密码必须互相匹配。", + "Power level must be positive integer.": "滥权等级必须是正整数。", + "Reason: %(reasonText)s": "理由: %(reasonText)s", + "Revoke Moderator": "撤销主持人", + "Revoke widget access": "撤回小挂件的访问权", + "Remote addresses for this room:": "此聊天室的远程地址:", + "Remove Contact Information?": "移除联系人信息?", + "Remove %(threePid)s?": "移除 %(threePid)s?", + "Results from DuckDuckGo": "来自 DuckDuckGo 的结果", + "Room contains unknown devices": "聊天室包含未知设备", + "%(roomName)s does not exist.": "%(roomName)s 不存在。", + "Save": "保存", + "Send anyway": "仍然发送", + "Sets the room topic": "设置聊天室主题", + "Show Text Formatting Toolbar": "显示文本格式工具栏", + "This room has no local addresses": "此聊天室没有本地地址", + "This doesn't appear to be a valid email address": "这似乎不是有效的邮箱地址", + "This is a preview of this room. Room interactions have been disabled": "这是此聊天室的预览。交互操作已被禁用", + "This phone number is already in use": "此手机号码已被使用", + "This room": "此聊天室", + "This room is not accessible by remote Matrix servers": "此聊天室无法被远程 Matrix 服务器访问", + "This room's internal ID is": "此聊天室的内部 ID 为", + "Turn Markdown off": "禁用 Markdown", + "Turn Markdown on": "启用 Markdown", + "Unable to create widget.": "无法创建小挂件。", + "Unban": "解除封禁", + "Unable to capture screen": "无法录制屏幕", + "Unable to enable Notifications": "无法启用通知", + "Unable to load device list": "无法加载设备列表", + "Undecryptable": "无法解密的", + "Unencrypted room": "未加密的聊天室", + "unencrypted": "未加密的", + "Unencrypted message": "未加密消息", + "unknown caller": "未知呼叫者", + "unknown device": "未知设备", + "Unnamed Room": "未命名的聊天室", + "Unverified": "未验证", + "Upload avatar": "上传头像", + "Upload Failed": "上传失败", + "Upload Files": "上传文件", + "Upload file": "上传文件", + "Usage": "用法", + "Who can read history?": "谁可以阅读历史消息?", + "You are not in this room.": "您不在此聊天室中。", + "You have no visible notifications": "没有可见的通知", + "Missing password.": "缺少密码。", + "Passwords don't match.": "密码不匹配。", + "I already have an account": "我已经有帐号了", + "Unblacklist": "移出黑名单", + "Not a valid Riot keyfile": "不是有效的 Riot 密钥文件", + "%(targetName)s accepted an invitation.": "%(targetName)s 已接受邀请。", + "Do you want to load widget from URL:": "你是否要从此 URL 中加载小挂件:", + "Hide join/leave messages (invites/kicks/bans unaffected)": "隐藏加入/退出消息(邀请/踢出/封禁不受影响)", + "Integrations Error": "集成错误", + "Publish this room to the public in %(domain)s's room directory?": "是否将此聊天室发布至 %(domain)s 的聊天室目录中?", + "Manage Integrations": "管理集成", + "No users have specific privileges in this room": "此聊天室中没有用户有特殊权限", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s 发起了%(callType)s通话。", + "Please check your email and click on the link it contains. Once this is done, click continue.": "请检查你的电子邮箱并点击里面包含的链接。完成时请点击继续。", + "Press to start a chat with someone": "按下 来开始和某个人聊天", + "%(senderName)s removed their profile picture.": "%(senderName)s 移除了他们的头像。", + "%(senderName)s requested a VoIP conference.": "%(senderName)s 已请求发起 VoIP 会议。", + "Seen by %(userName)s at %(dateTime)s": "在 %(dateTime)s 被 %(userName)s 看到", + "Tagged as: ": "标记为: ", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "验证码将发送至 +%(msisdn)s,请输入收到的验证码", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 接受了 %(displayName)s 的邀请。", + "Active call (%(roomName)s)": "当前通话 (来自聊天室 %(roomName)s)", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s 将级别调整至 %(powerLevelDiffText)s 。", + "Changes colour scheme of current room": "修改了样式", + "Deops user with given id": "按照 ID 取消特定用户的管理员权限", + "Join as voice or video.": "通过 语言 或者 视频加入.", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s 设定历史浏览功能为 所有聊天室成员,从他们被邀请开始.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s 设定历史浏览功能为 所有聊天室成员,从他们加入开始.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s 设定历史浏览功能为 所有聊天室成员.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s 设定历史浏览功能为 任何人.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s 设定历史浏览功能为 未知的 (%(visibility)s).", + "AM": "上午", + "PM": "下午", + "NOTE: Apps are not end-to-end encrypted": "提示:APP不支持端到端加密", + "People": "联系人", + "Profile": "个人配置", + "Public Chat": "公开的", + "Refer a friend to Riot:": "介绍朋友加入Riot:", + "%(roomName)s is not accessible at this time.": "%(roomName)s 此时无法访问。", + "Start authentication": "开始认证", + "The maximum permitted number of widgets have already been added to this room.": "此聊天室可拥有的小挂件数量已达到上限。", + "The phone number entered looks invalid": "此手机号码似乎无效", + "The remote side failed to pick up": "对方未能接听", + "This Home Server does not support login using email address.": "此主服务器不支持使用邮箱地址登陆。", + "This invitation was sent to an email address which is not associated with this account:": "此邀请被发送到与此帐户不相关的邮箱地址:", + "This room is not recognised.": "无法识别此聊天室。", + "To get started, please pick a username!": "请点击用户名!", + "Unable to add email address": "无法添加邮箱地址", + "Automatically replace plain text Emoji": "将符号表情转换为 Emoji", + "To reset your password, enter the email address linked to your account": "要重置你的密码,请输入关联你的帐号的邮箱地址", + "Unable to verify email address.": "无法验证邮箱地址。", + "Unknown room %(roomId)s": "未知聊天室 %(roomId)s", + "Unknown (user, device) pair:": "未知(用户,设备)对:", + "Unrecognised command:": "无法识别的命令:", + "Unrecognised room alias:": "无法识别的聊天室别名:", + "Use with caution": "谨慎使用", + "User Interface": "用户界面", + "User name": "用户名", + "(no answer)": "(无响应)", + "(warning: cannot be disabled again!)": "(警告:无法再被禁用!)", + "WARNING: Device already verified, but keys do NOT MATCH!": "警告:设备已验证,但密钥不匹配!", + "Who can access this room?": "谁有权访问此聊天室?", + "Who would you like to add to this room?": "你想把谁添加到此聊天室?", + "Who would you like to communicate with?": "你想和谁交流?", + "You are already in a call.": "您正在通话。", + "You do not have permission to do that in this room.": "您没有进行此操作的权限。", + "You are trying to access %(roomName)s.": "你正在尝试访问 %(roomName)s.", + "You cannot place VoIP calls in this browser.": "无法在此浏览器中发起 VoIP 通话。", + "You do not have permission to post to this room": "您没有在此聊天室发送消息的权限", + "You have been invited to join this room by %(inviterName)s": "您已被 %(inviterName)s 邀请加入此聊天室", + "You seem to be in a call, are you sure you want to quit?": "您似乎正在进行通话,确定要退出吗?", + "You seem to be uploading files, are you sure you want to quit?": "您似乎正在上传文件,确定要退出吗?", + "You should not yet trust it to secure data": "你不应该相信它来保护你的数据", + "Upload an avatar:": "上传头像:", + "This doesn't look like a valid email address.": "这似乎不是有效的邮箱地址。", + "This doesn't look like a valid phone number.": "这似乎不是有效的手机号码。", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "用户名只可以包含字母、数字、点、连字号和下划线。", + "An unknown error occurred.": "发生了一个未知错误。", + "An error occurred: %(error_string)s": "发生了一个错误: %(error_string)s", + "Encrypt room": "加密聊天室", + "There are no visible files in this room": "此聊天室中没有可见的文件", + "Active call": "当前通话", + "Verify...": "验证...", + "Error decrypting audio": "解密音频时出错", + "Error decrypting image": "解密图像时出错", + "Error decrypting video": "解密视频时出错", + " (unsupported)": " (不支持)", + "Updates": "更新", + "Check for update": "检查更新", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s 移除了聊天室头像。", + "Something went wrong!": "出了点问题!", + "If you already have a Matrix account you can log in instead.": "若您已经拥有 Matrix 帐号,您也可以 登录。", + "Do you want to set an email address?": "您想要设置一个邮箱地址吗?", + "New address (e.g. #foo:%(localDomain)s)": "新的地址(例如 #foo:%(localDomain)s)", + "Upload new:": "上传新的:", + "User ID": "用户 ID", + "Username invalid: %(errMessage)s": "用户名无效: %(errMessage)s", + "Verification Pending": "验证等待中", + "(unknown failure: %(reason)s)": "(未知错误:%(reason)s)", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "警告:密钥验证失败!%(userId)s 和 device %(deviceId)s 的签名密钥为 \"%(fprint)s\",与提供的密钥 \"%(fingerprint)s\" 不匹配。这可能意味着你的通信正在被窃听!", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s 收回了 %(targetName)s 的邀请。", + "Would you like to accept or decline this invitation?": "你想要 接受 还是 拒绝 这个邀请?", + "You already have existing direct chats with this user:": "你已经有和此用户的直接聊天:", + "You're not in any rooms yet! Press to make a room or to browse the directory": "您尚未处于任何聊天室中!按下 创建一个聊天室或 来浏览目录", + "You cannot place a call with yourself.": "你怎么寂寞到要和自己打电话,不支持的啦。", + "You have been kicked from %(roomName)s by %(userName)s.": "您已被 %(userName)s 从聊天室 %(roomName)s 中移除。", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "你已经登出了所有的设备并不再接收推送通知。要重新启用通知,请在每个设备上重新登录", + "You have disabled URL previews by default.": "你已经默认 禁用 链接预览。", + "You have enabled URL previews by default.": "你已经默认 启用 链接预览。", + "Your home server does not support device management.": "你的 home server 不支持设备管理。", + "Set a display name:": "设置昵称:", + "This server does not support authentication with a phone number.": "此服务器不支持使用手机号码认证。", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "密码长度过短(至少应为 %(MIN_PASSWORD_LENGTH)s 位)。", + "Make this room private": "将此聊天室转为私密聊天室", + "Share message history with new users": "和新用户共享消息历史", + "Copied!": "已复制!", + "Failed to copy": "复制失败", + "Sent messages will be stored until your connection has returned.": "已发送的消息会被保存直到你的连接回来。", + "(~%(count)s results)": { + "one": "(~%(count)s 个结果)", + "other": "(~%(count)s 个结果)" + }, + "Please select the destination room for this message": "请选择此消息的目标聊天室", + "Start automatically after system login": "在系统登录后自动启动", + "Analytics": "统计分析服务", + "Reject all %(invitedRooms)s invites": "拒绝所有 %(invitedRooms)s 的邀请", + "You may wish to login with a different account, or add this email to this account.": "您可能是想要用另一个账户登录,或是将此电子邮件关联至当前账户。", + "Sun": "周日", + "Mon": "周一", + "Tue": "周二", + "Wed": "周三", + "Thu": "周四", + "Fri": "周五", + "Sat": "周六", + "Jan": "一月", + "Feb": "二月", + "Mar": "三月", + "Apr": "四月", + "May": "五月", + "Jun": "六月", + "Jul": "七月", + "Aug": "八月", + "Sep": "九月", + "Oct": "十月", + "Nov": "十一月", + "Dec": "十二月", + "Desktop specific": "桌面版特有功能", + "You must join the room to see its files": "你必须加入聊天室以看到它的文件", + "Failed to invite the following users to the %(roomName)s room:": "邀请以下用户到 %(roomName)s 聊天室失败:", + "Confirm Removal": "确认移除", + "Verifies a user, device, and pubkey tuple": "验证用户、设备与公钥元组", + "Unknown devices": "未知设备", + "Unknown Address": "未知地址", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s 删除了他们的昵称 (%(oldDisplayName)s).", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "您提供的签名密钥和你从 %(userId)s 的设备 %(deviceId)s 收到的签名密钥匹配。设备被标记为已验证。", + "These are experimental features that may break in unexpected ways": "这些是可能以意外的方式坏掉的实验性的特性", + "The visibility of existing history will be unchanged": "现有历史记录的可见性不会改变", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s 打开了端到端加密 (算法 %(algorithm)s).", + "Unable to remove contact information": "无法移除联系人信息", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot 收集匿名的分析数据以允许我们改善它。", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "\"%(RoomName)s\" 包含你以前没见过的设备。", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "你可以使用自定义服务器选项并指定一个不同的主服务器 URL 来登录其他的 Matrix 服务器。", + "This allows you to use this app with an existing Matrix account on a different home server.": "这允许你使用其他主服务器上的 Matrix 帐号。", + "Please check your email to continue registration.": "请查看你的电子邮件以继续注册。", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "如果不指定一个邮箱地址,您将无法重置你的密码。你确定吗?", + "Home server URL": "主服务器 URL", + "Identity server URL": "身份认证服务器 URL", + "What does this mean?": "这是什么意思?", + "Add an Integration": "添加集成", + "Removed or unknown message type": "被移除或未知的消息类型", + "Ongoing conference call%(supportedText)s.": "正在进行的会议通话 %(supportedText)s.", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s 修改了 %(roomName)s 的头像", + "This will be your account name on the homeserver, or you can pick a different server.": "这将会成为你在 主服务器上的账户名,或者你可以选择一个 不同的服务器。", + "Your browser does not support the required cryptography extensions": "你的浏览器不支持 Riot 所需的密码学特性", + "Authentication check failed: incorrect password?": "身份验证失败:密码错误?", + "This will allow you to reset your password and receive notifications.": "这将允许你重置你的密码和接收通知。", + "Share without verifying": "不验证就分享", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "您添加了一个新的设备 '%(displayName)s',它正在请求加密密钥。", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "你的未经验证的设备 '%(displayName)s' 正在请求加密密钥。", + "Encryption key request": "加密密钥请求", + "Autocomplete Delay (ms):": "自动补全延迟(毫秒):", + "%(widgetName)s widget added by %(senderName)s": "%(senderName)s 添加了 %(widgetName)s 小挂件", + "%(widgetName)s widget removed by %(senderName)s": "%(senderName)s 移除了 %(widgetName)s 小挂件", + "%(widgetName)s widget modified by %(senderName)s": "%(senderName)s 修改了 %(widgetName)s 小挂件", + "Unpin Message": "取消置顶消息", + "Add rooms to this community": "添加聊天室到此社区", + "Call Failed": "呼叫失败", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "聊天室中有未知设备:如果您在不验证它们的情况下继续,您的通话可能会被人窃听。", + "Review Devices": "复查设备", + "Call Anyway": "仍然呼叫", + "Answer Anyway": "仍然接听", + "Call": "呼叫", + "Answer": "接听", + "Invite new community members": "邀请新社区成员", + "Invite to Community": "邀请到社区", + "Room name or alias": "聊天室名称或别名", + "Ignored user": "已忽略的用户", + "You are now ignoring %(userId)s": "你正在忽视 %(userId)s", + "Unignored user": "未忽略的用户", + "You are no longer ignoring %(userId)s": "你不再忽视 %(userId)s", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s 解除了 %(targetName)s 的封禁。", + "(could not connect media)": "(无法连接媒体)", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s 更改了聊天室的置顶消息。", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s 和另外 %(count)s 个人正在输入", + "one": "%(names)s 与另一个人正在输入" + }, + "Send": "发送", + "Message Pinning": "消息置顶", + "Disable Emoji suggestions while typing": "输入时禁用 Emoji 建议", + "Use compact timeline layout": "使用紧凑的时间线布局", + "Hide avatar changes": "隐藏头像修改", + "Hide display name changes": "隐藏昵称修改", + "Disable big emoji in chat": "禁用聊天中的大Emoji", + "Never send encrypted messages to unverified devices in this room from this device": "在此设备上、此聊天室中,从不对未经验证的设备发送加密的消息", + "Enable URL previews for this room (only affects you)": "在此聊天室中启用链接预览(仅影响你)", + "Enable URL previews by default for participants in this room": "对此聊天室的所有成员默认启用链接预览", + "Delete %(count)s devices": { + "other": "删除了 %(count)s 个设备", + "one": "删除设备" + }, + "Select devices": "选择设备", + "%(senderName)s sent an image": "%(senderName)s 发送了一张图片", + "%(senderName)s sent a video": "%(senderName)s 发送了一个视频", + "%(senderName)s uploaded a file": "%(senderName)s 上传了一个文件", + "Unignore": "取消忽略", + "Ignore": "忽略", + "Jump to read receipt": "跳到阅读回执", + "Mention": "提及", + "Invite": "邀请", + "User Options": "用户选项", + "Jump to message": "跳到消息", + "No pinned messages.": "没有置顶消息。", + "Loading...": "正在加载...", + "Pinned Messages": "置顶的消息", + "Unknown": "未知的", + "Unnamed room": "未命名的聊天室", + "World readable": "公开可读", + "Guests can join": "访客可以加入", + "No rooms to show": "无聊天室", + "Addresses": "地址", + "Message removed": "消息已移除", + "An email has been sent to %(emailAddress)s": "一封邮件已发送到 %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "一封短信已发送到 %(msisdn)s", + "Username on %(hs)s": "在 %(hs)s 上的用户名", + "Visible to everyone": "对所有人可见", + "Delete Widget": "删除小挂件", + "were invited %(count)s times": { + "other": "被邀请 %(count)s 次", + "one": "被邀请" + }, + "was invited %(count)s times": { + "other": "被邀请 %(count)s 次", + "one": "被邀请" + }, + "were banned %(count)s times": { + "other": "被封禁 %(count)s 次", + "one": "被封禁" + }, + "was banned %(count)s times": { + "other": "被封禁 %(count)s 次", + "one": "被封禁" + }, + "were unbanned %(count)s times": { + "other": "被解封 %(count)s 次", + "one": "被解封" + }, + "was unbanned %(count)s times": { + "other": "被解封 %(count)s 次", + "one": "被解封" + }, + "were kicked %(count)s times": { + "other": "被踢出 %(count)s 次", + "one": "被踢出" + }, + "was kicked %(count)s times": { + "other": "被踢出 %(count)s 次", + "one": "被踢出" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s 改了他们的名称 %(count)s 次", + "one": "%(severalUsers)s 改了他们的名称" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s 改了他们的名称 %(count)s 次", + "one": "%(oneUser)s 改了他们的名称" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s 更换了他们的的头像 %(count)s 次", + "one": "%(severalUsers)s 更换了他们的头像" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s 更换了他们的头像 %(count)s 次", + "one": "%(oneUser)s 更换了他们的头像" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s 和其他 %(count)s 人", + "one": "%(items)s 与另一个" + }, + "collapse": "折叠", + "expand": "展开", + "email address": "邮箱地址", + "You have entered an invalid address.": "您输入了无效的地址。", + "Advanced options": "高级选项", + "Leave": "退出", + "Description": "描述", + "Warning": "警告", + "Light theme": "浅色主题", + "Dark theme": "深色主题", + "Status.im theme": "Status.im 主题", + "Ignored Users": "已忽略的用户", + "Room Notification": "聊天室通知", + "The platform you're on": "您使用的平台是", + "The version of Riot.im": "Riot.im 的版本是", + "Whether or not you're logged in (we don't record your user name)": "您是否登录了(我们不会记录你的用户名)", + "Your language of choice": "您选择的语言是", + "Which officially provided instance you are using, if any": "您正在使用的任何官方 Riot 实现(如果有的话)", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "您是否正在使用富文本编辑器的富文本模式", + "Your homeserver's URL": "您的主服务器的链接", + "Your identity server's URL": "您的身份认证服务器的链接", + "The information being sent to us to help make Riot.im better includes:": "将要为帮助 Riot.im 发展而发送的信息包含:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "此页面中含有可用于识别您身份的信息,比如聊天室、用户或群组 ID,这些数据会在发送到服务器前被移除。", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(monthName)s %(day)s %(time)s, %(weekDayName)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(fullYear)s %(monthName)s %(day)s, %(weekDayName)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(fullYear)s %(monthName)s %(day)s %(time)s, %(weekDayName)s", + "Who would you like to add to this community?": "您想把谁添加至此社区中?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "警告:您添加的一切用户都将会对一切知道此社区的 ID 的人公开", + "Name or matrix ID": "名称或 Matrix ID", + "Which rooms would you like to add to this community?": "您想把哪个聊天室添加至此社区中?", + "Add rooms to the community": "添加聊天室到社区", + "Add to community": "添加到社区", + "Failed to invite users to community": "邀请用户到社区失败", + "Disable Peer-to-Peer for 1:1 calls": "在一对一通话中禁用 P2P 对等网络", + "Enable inline URL previews by default": "默认启用链接预览", + "Disinvite this user?": "是否不再邀请此用户?", + "Kick this user?": "是否移除此用户?", + "Unban this user?": "是否解封此用户?", + "Ban this user?": "是否封禁此用户?", + "Send an encrypted reply…": "发送加密回复…", + "Send a reply (unencrypted)…": "发送回复(未加密)…", + "Send an encrypted message…": "发送加密消息…", + "Send a message (unencrypted)…": "发送消息 (未加密)…", + "Replying": "正在回复", + "Community Invites": "社区邀请", + "You are trying to access a room.": "你正在尝试访问一个聊天室。", + "To change the topic, you must be a": "要修改主题,你必须是", + "To modify widgets in the room, you must be a": "要修改聊天室中的小挂件,你必须是", + "Banned by %(displayName)s": "被 %(displayName)s 封禁", + "To send messages, you must be a": "若要发送消息,您至少要是", + "To invite users into the room, you must be a": "若要邀请用户至本聊天室,您至少要是", + "To configure the room, you must be a": "若要修改聊天室设置,您至少要是", + "To kick users, you must be a": "若要移除用户,您至少要是", + "To ban users, you must be a": "若要封禁用户,您至少要是", + "To remove other users' messages, you must be a": "若要删除其他用户的消息,您至少要是", + "%(user)s is a %(userRole)s": "%(user)s 是一位 %(userRole)s", + "To link to a room it must have an address.": "若要链接聊天室,它必须有一个 地址。", + "To send events of type , you must be a": "要发送类型为 的事件,您的级别至少为", + "Members only (since the point in time of selecting this option)": "仅成员(从选中此选项时开始)", + "Members only (since they were invited)": "只有成员(从他们被邀请开始)", + "Members only (since they joined)": "只有成员(从他们加入开始)", + "Invalid community ID": "无效的社区 ID", + "Create Community": "创建社区", + "Community Name": "社区名", + "Community ID": "社区 ID", + "example": "例子", + "This setting cannot be changed later!": "未来此设置将无法修改!", + "Add a Room": "添加聊天室", + "Add a User": "添加用户", + "Unable to accept invite": "无法接受邀请", + "Unable to reject invite": "无法拒绝邀请", + "Leave Community": "退出社区", + "Community Settings": "社区设置", + "Community %(groupId)s not found": "找不到社区 %(groupId)s", + "Your Communities": "我的社区", + "Failed to set direct chat tag": "无法设定私聊标签", + "Failed to remove tag %(tagName)s from room": "移除聊天室标签 %(tagName)s 失败", + "Failed to add tag %(tagName)s to room": "无法为聊天室新增标签 %(tagName)s", + "Submit debug logs": "提交调试日志", + "Show these rooms to non-members on the community page and room list?": "在社区页面与聊天室列表上对非社区成员显示这些聊天室?", + "Failed to invite users to %(groupId)s": "邀请用户到 %(groupId)s 失败", + "Failed to invite the following users to %(groupId)s:": "邀请下列用户到 %(groupId)s 失败:", + "Failed to add the following rooms to %(groupId)s:": "添加以下聊天室到 %(groupId)s 失败:", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "你似乎没有将此邮箱地址同在此主服务器上的任何一个 Matrix 账号绑定。", + "Restricted": "受限用户", + "To use it, just wait for autocomplete results to load and tab through them.": "若要使用自动补全,只要等待自动补全结果加载完成,按 Tab 键切换即可。", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s 将他们的昵称修改成了 %(displayName)s 。", + "Hide avatars in user and room mentions": "隐藏头像", + "Disable Community Filter Panel": "停用社区面板", + "Stickerpack": "贴图集", + "You don't currently have any stickerpacks enabled": "您目前没有启用任何贴纸包", + "Add a stickerpack": "添加贴图集", + "Your key share request has been sent - please check your other devices for key share requests.": "已请求共享密钥 - 请在您的其他设备上进行确认。", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "密钥共享请求将会自动发送到您的其他设备上。如果您在其他设备上拒绝了请求,请点击此处以再次请求此会话的密钥。", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "如果您的其他设备上没有此消息的密钥,您将依然无法解密。", + "Key request sent.": "已发送密钥共享请求。", + "Re-request encryption keys from your other devices.": "从其他设备上 重新请求密钥。", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "如果您是房间中最后一位有权限的用户,在您降低自己的权限等级后将无法撤回此修改,因为你将无法重新获得权限。", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "您将无法撤回此修改,因为您正在将此用户的滥权等级提升至与你相同。", + "No devices with registered encryption keys": "没有设备有已注册的加密密钥", + "Unmute": "取消静音", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s(滥权等级 %(powerLevelNumber)s)", + "Hide Stickers": "隐藏贴图", + "Show Stickers": "显示贴图", + "%(duration)ss": "%(duration)s 秒", + "%(duration)sm": "%(duration)s 分钟", + "%(duration)sh": "%(duration)s 小时", + "%(duration)sd": "%(duration)s 天", + "Online for %(duration)s": "已上线 %(duration)s", + "Idle for %(duration)s": "已 idle %(duration)s", + "Offline for %(duration)s": "已离线 %(duration)s", + "Unknown for %(duration)s": "在线状态未知 %(duration)s", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "%(displayName)s (%(userName)s) 在 %(dateTime)s 看到这里", + "Remove avatar": "移除头像", + "Drop here to favourite": "拖动到这里以加入收藏", + "Drop here to tag direct chat": "拖动到这里以加入私聊", + "Drop here to restore": "拖动到这里以还原", + "Drop here to demote": "拖动到这里以加入低优先级", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "无法确定此邀请发送给的邮件地址是否与您帐户所关联的邮件地址相匹配。", + "You have been kicked from this room by %(userName)s.": "您已被 %(userName)s 从此聊天室中移除。", + "'%(groupId)s' is not a valid community ID": "“%(groupId)s” 不是有效的社区 ID", + "Flair": "Flair", + "Message removed by %(userId)s": "此消息已被 %(userId)s 移除", + "Sign in with CAS": "使用 CAS 登录", + "Code": "代码", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "You are registering with %(SelectedTeamName)s": "你将注册为 %(SelectedTeamName)s", + "Remove from community": "从社区中移除", + "Disinvite this user from community?": "是否不再邀请此用户加入本社区?", + "Remove this user from community?": "是否要从社区中移除此用户?", + "Failed to withdraw invitation": "撤回邀请失败", + "Failed to remove user from community": "移除用户失败", + "Filter community members": "过滤社区成员", + "Flair will not appear": "将不会显示 Flair", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "你确定要从 %(groupId)s 中移除 %(roomName)s 吗?", + "Removing a room from the community will also remove it from the community page.": "从社区中移除房间时,同时也会将其从社区页面中移除。", + "Failed to remove room from community": "从社区中移除聊天室失败", + "Failed to remove '%(roomName)s' from %(groupId)s": "从 %(groupId)s 中移除 “%(roomName)s” 失败", + "Only visible to community members": "仅对社区成员可见", + "Filter community rooms": "过滤社区聊天室", + "You're not currently a member of any communities.": "您目前不是任何一个社区的成员。", + "Communities": "社区", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s 已加入 %(count)s 次", + "one": "%(severalUsers)s 已加入" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s 已加入 %(count)s 次", + "one": "%(oneUser)s 已加入" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s 已退出 %(count)s 次", + "one": "%(severalUsers)s 已退出" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s 已退出 %(count)s 次", + "one": "%(oneUser)s 已退出" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s 已加入&已退出 %(count)s 次", + "one": "%(severalUsers)s 已加入&已退出" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s 已加入&已退出 %(count)s 次", + "one": "%(oneUser)s 已加入&已退出" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s 退出并重新加入了 %(count)s 次", + "one": "%(severalUsers)s 退出并重新加入了" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s 退出并重新加入了 %(count)s 次", + "one": "%(oneUser)s 退出并重新加入了" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "one": "%(severalUsers)s 拒绝了他们的邀请", + "other": "%(severalUsers)s 拒绝了他们的邀请共 %(count)s 次" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s 拒绝了他们的邀请共 %(count)s 次", + "one": "%(oneUser)s 拒绝了他们的邀请" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s 撤回了他们的邀请共 %(count)s 次", + "one": "%(severalUsers)s 撤回了他们的邀请" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s 撤回了他们的邀请共 %(count)s 次", + "one": "%(oneUser)s 撤回了他们的邀请" + }, + "Custom of %(powerLevel)s": "%(powerLevel)s 的自定义", + "In reply to ": "回复给 ", + "Community IDs cannot be empty.": "社区 ID 不能为空。", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "社区 ID 只能包含 a-z、0-9 或 “=_-./” 等字符", + "Something went wrong whilst creating your community": "创建社区时出现问题", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "您目前默认将未经验证的设备列入黑名单;在发送消息到这些设备上之前,您必须先验证它们。", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "如果您之前使用过较新版本的 Riot,则您的会话可能与当前版本不兼容。请关闭此窗口并使用最新版本。", + "To change the room's avatar, you must be a": "无法修改此聊天室的头像,因为您不是此聊天室的", + "To change the room's name, you must be a": "无法修改此聊天室的名称,因为您不是此聊天室的", + "To change the room's main address, you must be a": "无法修改此聊天室的主地址,因为您不是此聊天室的", + "To change the room's history visibility, you must be a": "无法修改此聊天室的历史聊天记录可见性,因为您不是此聊天室的", + "To change the permissions in the room, you must be a": "无法修改此聊天室中的权限情况,因为您不是此聊天室的", + "Showing flair for these communities:": "为这些社区显示 flair:", + "This room is not showing flair for any communities": "此聊天室没有对任何社区显示 flair", + "New community ID (e.g. +foo:%(localDomain)s)": "新社区 ID(例子:+foo:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "此聊天室默认启用链接预览。", + "URL previews are disabled by default for participants in this room.": "此聊天室默认禁用链接预览。", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s 将聊天室的头像更改为 ", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "您也可以自定义身份认证服务器,但这通常会阻止基于邮箱地址的与用户的交互。", + "Please enter the code it contains:": "请输入它包含的代码:", + "Flair will appear if enabled in room settings": "如果在聊天室设置中启用, flair 将会显示", + "Matrix ID": "Matrix ID", + "Matrix Room ID": "Matrix 聊天室 ID", + "Block users on other matrix homeservers from joining this room": "禁止其他 Matrix 主服务器上的用户加入此聊天室", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "为验证此设备是否可信,请通过其他方式(例如面对面交换或拨打电话)与其拥有者联系,并询问他们该设备的用户设置中的密钥是否与以下密钥匹配:", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "如果匹配,请点击下面的验证按钮。 如果不匹配,那么这可能说明其他人正在盗用此设备,而您应当点击黑名单按钮。", + "In future this verification process will be more sophisticated.": "未来,此验证过程将更为精致、巧妙一些。", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "我们建议您对每台设备进行验证以保证它们属于其合法所有者,但是您可以在不验证它们的情况下重新发送消息。", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

社区页面的 HTML 代码

\n

\n 你可以给社区的新成员们写些长长的社区简介来引导他们,或者放置\n 一些重要的链接\n

\n

\n 你甚至可以使用 标签\n

\n", + "Add rooms to the community summary": "将聊天室添加到社区简介中", + "Which rooms would you like to add to this summary?": "您想要将哪个聊天室添加到社区简介?", + "Add to summary": "添加到简介", + "Failed to add the following rooms to the summary of %(groupId)s:": "添加以下聊天室到 %(groupId)s 的简介时失败:", + "Failed to remove the room from the summary of %(groupId)s": "从 %(groupId)s 的简介中移除此聊天室时失败", + "The room '%(roomName)s' could not be removed from the summary.": "聊天室 “%(roomName)s” 无法从社区简介中移除。", + "Failed to update community": "更新社区简介失败", + "Unable to leave community": "无法退出社区", + "Leave %(groupName)s?": "退出 %(groupName)s?", + "Featured Rooms:": "核心聊天室:", + "Featured Users:": "核心用户:", + "Join this community": "加入此社区", + "%(inviter)s has invited you to join this community": "%(inviter)s 邀请您加入此社区", + "Failed to add the following users to the summary of %(groupId)s:": "将下列用户添加至 %(groupId)s 的简介中时失败:", + "Failed to remove a user from the summary of %(groupId)s": "从 %(groupId)s 的简介中移除用户时失败", + "You are an administrator of this community": "你是此社区的管理员", + "You are a member of this community": "你是此社区的成员", + "Who can join this community?": "谁可以加入此社区?", + "Everyone": "所有人", + "Leave this community": "退出此社区", + "Long Description (HTML)": "长描述(HTML)", + "This Home server does not support communities": "该主服务器不支持社区", + "Old cryptography data detected": "检测到旧的加密数据", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "已检测到旧版Riot的数据,这将导致端到端加密在旧版本中发生故障。在此版本中,使用旧版本交换的端对端加密消息可能无法解密。这也可能导致与此版本交换的消息失败。如果您遇到问题,请退出并重新登录。要保留历史消息,请先导出并在重新登录后导入您的密钥。", + "Did you know: you can use communities to filter your Riot.im experience!": "你知道吗:你可以将社区用作过滤器以增强你的 Riot.im 使用体验!", + "Create a new community": "创建新社区", + "Error whilst fetching joined communities": "获取已加入社区列表时出现错误", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "创建社区,将用户与聊天室整合在一起!搭建自定义社区主页以在 Matrix 宇宙之中标出您的私人空间。", + "Show devices, send anyway or cancel.": "显示未信任的设备不经信任直接发送取消发送。", + "Uploading %(filename)s and %(count)s others": { + "other": "正在上传 %(filename)s 与其他 %(count)s 个文件", + "zero": "正在上传 %(filename)s", + "one": "正在上传 %(filename)s 与其他 %(count)s 个文件" + }, + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "隐私对我们而言重要至极,所以我们不会在分析统计服务中收集任何个人信息或者可用于识别身份的数据。", + "Learn more about how we use analytics.": "进一步了解我们如何使用分析统计服务。", + "Please note you are logging into the %(hs)s server, not matrix.org.": "请注意,您正在登录 %(hs)s,而非 matrix.org。", + "This homeserver doesn't offer any login flows which are supported by this client.": "此主服务器不兼容本客户端支持的任何登录方式。", + "Sign in to get started": "登录以开始使用", + "Unbans user with given id": "按照 ID 解封特定的用户", + "Opens the Developer Tools dialog": "打开开发者工具窗口", + "Notify the whole room": "通知聊天室全体成员", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "此操作允许您将加密聊天室中收到的消息的密钥导出为本地文件。您可以将文件导入其他 Matrix 客户端,以便让别的客户端在未收到密钥的情况下解密这些消息。", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "导出的文件将允许任何可以读取它的人解密任何他们可以看到的加密消息,因此您应该小心以确保其安全。为解决此问题,您应该在下面输入密码以加密导出的数据。只有输入相同的密码才能导入数据。", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "导出文件有密码保护。你需要在此输入密码以解密此文件。", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "此操作允许您导入之前从另一个 Matrix 客户端中导出的加密密钥文件。导入完成后,您将能够解密那个客户端可以解密的加密消息。", + "Ignores a user, hiding their messages from you": "忽略用户,隐藏他们发送的消息", + "Stops ignoring a user, showing their messages going forward": "解除忽略用户,显示他们的消息", + "To return to your account in future you need to set a password": "如果您想再次使用此账号,就必须它设置一个密码", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "如果你在 GitHub 提交了一个 bug,调试日志可以帮助我们追踪这个问题。 调试日志包含应用程序使用数据,也就包括您的用户名、您访问的房间或社区的 ID 或别名,以及其他用户的用户名,但不包括聊天记录。", + "Debug Logs Submission": "发送调试日志", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "密码修改成功。在您在其他设备上重新登录之前,其他设备不会收到推送通知", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "尝试加载此房间的时间线的特定时间点,但是无法找到。", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "one": "现在 重新发送消息取消发送 。", + "other": "現在 重新发送消息取消发送 。你也可以单独选择消息以重新发送或取消。" + }, + "Visibility in Room List": "是否在聊天室目录中可见", + "Something went wrong when trying to get your communities.": "获取你加入的社区时发生错误。", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "删除小挂件时将为聊天室中的所有成员删除。您确定要删除此小挂件吗?", + "Fetching third party location failed": "获取第三方位置失败", + "A new version of Riot is available.": "Riot 有更新可用。", + "Couldn't load home page": "不能加载首页", + "Send Account Data": "发送账户数据", + "All notifications are currently disabled for all targets.": "目前所有通知都已禁用。", + "Uploading report": "上传报告", + "Sunday": "星期日", + "Notification targets": "通知目标", + "Today": "今天", + "Failed to get protocol list from Home Server": "无法从主服务器取得协议列表", + "You are not receiving desktop notifications": "您将不会收到桌面通知", + "Friday": "星期五", + "Update": "更新", + "What's New": "更新内容", + "Add an email address above to configure email notifications": "请在上方输入邮箱地址以接收邮件通知", + "Expand panel": "展开面板", + "On": "打开", + "%(count)s Members": { + "other": "%(count)s 位成员", + "one": "%(count)s 位成员" + }, + "Filter room names": "过滤聊天室名称", + "Changelog": "变更日志", + "Waiting for response from server": "正在等待服务器响应", + "Send Custom Event": "发送自定义事件", + "Advanced notification settings": "通知高级设置", + "Failed to send logs: ": "无法发送日志: ", + "delete the alias.": "删除别名。", + "To return to your account in future you need to set a password": "要在未来回到您的账号,您需要 设置密码", + "Forget": "忘记", + "#example": "#例子", + "Hide panel": "隐藏面板", + "You cannot delete this image. (%(code)s)": "无法删除此图片。(%(code)s)", + "Cancel Sending": "取消发送", + "This Room": "此聊天室", + "The Home Server may be too old to support third party networks": "主服务器可能太老旧无法支持第三方网络", + "Noisy": "吵闹", + "Error saving email notification preferences": "保存电子邮件通知选项时出错", + "Messages containing my display name": "消息中含有我的显示名称", + "Messages in one-to-one chats": "一对一聊天种的消息", + "Unavailable": "无法获得", + "View Decrypted Source": "查看解密的来源", + "Failed to update keywords": "无法更新关键词", + "Notes:": "记录:", + "remove %(name)s from the directory.": "从目录中移除 %(name)s。", + "Notifications on the following keywords follow rules which can’t be displayed here:": "以下关键词依照规则将不会在此显示:", + "Safari and Opera work too.": "SafariOpera 也能工作。", + "Please set a password!": "请设置密码!", + "You have successfully set a password!": "您已成功设置密码!", + "An error occurred whilst saving your email notification preferences.": "保存电子邮件通知选项时出现错误。", + "Explore Room State": "探索聊天室状态", + "Source URL": "源网址", + "Messages sent by bot": "由机器人发出的消息", + "Filter results": "过滤结果", + "Members": "成员", + "No update available.": "没有可用更新。", + "Resend": "重新发送", + "Files": "文件", + "Collecting app version information": "正在收集应用版本信息", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "确定要删除聊天室别名 %(alias)s 并将 %(name)s 从列表中删除吗?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "这将允许你可以在注销后回到您的账号,并在其他设备上登录。", + "Keywords": "关键词", + "Enable notifications for this account": "对此账号启用通知", + "Directory": "聊天室目录", + "Invite to this community": "邀请加入此社区", + "Failed to get public room list": "无法取得公开的聊天室列表", + "Messages containing keywords": "包含 关键词 的消息", + "Room not found": "找不到聊天室", + "Tuesday": "星期二", + "Enter keywords separated by a comma:": "输入以逗号间隔的关键词:", + "Forward Message": "转发消息", + "You have successfully set a password and an email address!": "您已经成功设置了密码和邮箱地址!", + "Remove %(name)s from the directory?": "从目录中移除 %(name)s 吗?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot 使用了许多先进的浏览器功能,有些在你目前所用的浏览器上无法使用或仅为实验性的功能。", + "Developer Tools": "开发者工具", + "Preparing to send logs": "准备发送日志", + "Enable desktop notifications": "启用桌面通知", + "Remember, you can always set an email address in user settings if you change your mind.": "请记住,如果您改变想法,您永远可以在用户设置中设置电子邮件。", + "Explore Account Data": "探索账户数据", + "All messages (noisy)": "全部消息(高亮)", + "Saturday": "星期六", + "I understand the risks and wish to continue": "我了解这些风险并愿意继续", + "Direct Chat": "私聊", + "The server may be unavailable or overloaded": "服务器可能无法使用或超过负载", + "Reject": "拒绝", + "Failed to set Direct Message status of room": "无法设置聊天室的私聊状态", + "Monday": "星期一", + "Remove from Directory": "从目录中移除", + "Enable them now": "现在启用", + "Messages containing my user name": "消息中包含我的用户名", + "Toolbox": "工具箱", + "Collecting logs": "正在收集日志", + "more": "更多", + "GitHub issue link:": "Github issue 链接:", + "You must specify an event type!": "必须指定事件类型!", + "(HTTP status %(httpStatus)s)": "(HTTP 状态 %(httpStatus)s)", + "All Rooms": "全部聊天室", + "Please install Chrome or Firefox for the best experience.": "请安装 ChromeFirefox 以获得最佳体验。", + "Wednesday": "星期三", + "You cannot delete this message. (%(code)s)": "您不能删除此消息。(%(code)s)", + "Quote": "引述", + "Send logs": "发送日志", + "All messages": "全部消息", + "Call invitation": "语音邀请", + "Downloading update...": "正在下载更新…", + "State Key": "状态密钥", + "Failed to send custom event.": "自定义事件发送失败。", + "What's new?": "更新了什么?", + "Notify me for anything else": "通知所有消息", + "When I'm invited to a room": "当我被邀请进入聊天室", + "Can't update user notification settings": "不能更新用户通知设置", + "Notify for all other messages/rooms": "为所有其他消息/聊天室显示通知", + "Unable to look up room ID from server": "无法在服务器上找到聊天室 ID", + "Couldn't find a matching Matrix room": "未找到符合的 Matrix 聊天室", + "Invite to this room": "邀请别人加入此聊天室", + "Search for a room": "搜索聊天室", + "Thursday": "星期四", + "Search…": "搜索…", + "Logs sent": "记录已发送", + "Back": "返回", + "Reply": "回复", + "Show message in desktop notification": "在桌面通知中显示信息", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "调试日志包含使用数据(包括您的用户名,您访问过的聊天室 / 小组的 ID 或别名以及其他用户的用户名)。它们不包含聊天信息。", + "Unhide Preview": "取消隐藏预览", + "Unable to join network": "无法加入网络", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "您也许不曾在其他 Riot 之外的客户端设置它们。在 Riot 下你无法调整他们但仍然可用", + "Sorry, your browser is not able to run Riot.": "抱歉,您的浏览器 无法 运行 Riot.", + "Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 上传", + "Messages in group chats": "群组聊天中的消息", + "Yesterday": "昨天", + "Error encountered (%(errorDetail)s).": "遇到错误 (%(errorDetail)s)。", + "Login": "登录", + "Low Priority": "低优先级", + "Unable to fetch notification target list": "无法获取通知目标列表", + "Set Password": "设置密码", + "Enable audible notifications in web client": "在网页客户端启用音频通知", + "Off": "关闭", + "Riot does not know how to join a room on this network": "Riot 不知道如何在此网络中加入聊天室", + "Mentions only": "只限提及", + "You can now return to your account after signing out, and sign in on other devices.": "您可以在注销后回到您的账号,并在其他设备上登录。", + "Enable email notifications": "启用电子邮件通知", + "Event Type": "事件类型", + "Download this file": "下载该文件", + "Pin Message": "置顶消息", + "Failed to change settings": "变更设置失败", + "View Community": "查看社区", + "Event sent!": "事件已发送!", + "View Source": "查看源码", + "Event Content": "事件内容", + "Thank you!": "谢谢!", + "Collapse panel": "折叠面板", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "您目前的浏览器,应用程序的外观和感觉完全不正确,有些或全部功能可能无法使用。如果您仍想继续尝试,可以继续,但请自行负担其后果!", + "Checking for an update...": "正在检查更新…", + "There are advanced notifications which are not shown here": "更多的通知并没有在此显示出来", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "这里没有其他人了!你是想 邀请用户 还是 不再提示?", + "You need to be able to invite users to do that.": "你需要有邀请用户的权限才能进行此操作。", + "Missing roomId.": "找不到此聊天室 ID 所对应的聊天室。", + "You have been banned from %(roomName)s by %(userName)s.": "您已被 %(userName)s 从聊天室 %(roomName)s 中封禁。", + "You have been banned from this room by %(userName)s.": "您已被 %(userName)s 从此聊天室中封禁。", + "Every page you use in the app": "您在 Riot 中使用的所有页面", + "e.g. ": "例如:", + "Your User Agent": "您的 User Agent", + "Your device resolution": "您设备的分辨率", + "Always show encryption icons": "总是显示加密标志", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "目前无法以文件作为回复的内容,所以此文件将不作为回复,独立发送。", + "Unable to reply": "无法回复", + "At this time it is not possible to reply with an emote.": "目前无法使用表情符号作为回复内容。", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "您将被带到一个第三方网站以便验证您的账号来使用 %(integrationsUrl)s 提供的集成。您希望继续吗?", + "Robot check is currently unavailable on desktop - please use a web browser": "目前机器人检查(CAPTCHA)在桌面端不可用——请使用 浏览器", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "无法更新聊天室 %(roomName)s 在社区 “%(groupId)s” 中的可见性。", + "Minimize apps": "最小化小部件", + "Popout widget": "在弹出式窗口中打开小挂件", + "Picture": "图片", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "无法加载被回复的事件,它可能不存在,也可能是您没有权限查看它。", + "And %(count)s more...": { + "other": "和 %(count)s 个其他…" + }, + "Try using one of the following valid address types: %(validTypesList)s.": "请尝试使用以下的有效邮箱地址格式中的一种:%(validTypesList)s", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot 使用 GitHub 追踪 bug:在 GitHub 上创建新 Issue", + "e.g. %(exampleValue)s": "例如:%(exampleValue)s", + "Call in Progress": "正在通话", + "A call is already in progress!": "您已在通话中!", + "Jitsi Conference Calling": "Jitsi 电话会议", + "Send analytics data": "发送统计数据", + "Enable widget screenshots on supported widgets": "对支持的小挂件启用小挂件截图", + "Encrypting": "正在加密", + "Encrypted, not sent": "已加密,未发送", + "Demote yourself?": "是否降低您自己的权限?", + "Demote": "降权", + "A conference call could not be started because the intgrations server is not available": "关联的会议服务器不可用,无法发起电话会议", + "A call is currently being placed!": "已发起一次通话!", + "Permission Required": "需要权限", + "You do not have permission to start a conference call in this room": "您没有在此聊天室发起通话会议的权限", + "Show empty room list headings": "为空的聊天室列表显示 heading", + "This event could not be displayed": "无法显示此事件", + "Share Link to User": "分享链接给其他用户", + "deleted": "删除线", + "underlined": "下划线", + "inline-code": "代码", + "block-quote": "引用", + "bulleted-list": "无序列表", + "numbered-list": "有序列表", + "Share room": "分享聊天室", + "You have no historical rooms": "没有历史聊天室", + "System Alerts": "系统警告", + "To notify everyone in the room, you must be a": "若要通知所有聊天室成员,您至少要是", + "Muted Users": "被禁言的用户", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "在启用加密的聊天室中,比如此聊天室,链接预览被默认禁用以确保主服务器(访问链接、生成预览的地方)无法获知聊天室中的链接及其信息。", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "当有人发送一条带有链接的消息后,可显示链接的预览,链接预览可包含此链接的网页标题、描述以及图片。", + "The email field must not be blank.": "必须输入电子邮箱。", + "The user name field must not be blank.": "必须输入用户名。", + "The phone number field must not be blank.": "必须输入手机号码。", + "The password field must not be blank.": "必须输入密码。", + "Display your community flair in rooms configured to show it.": "在启用“显示 Flair”的聊天室中显示本社区的 Flair。", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "请发送 匿名使用数据 以帮助我们改进 Riot.im。这将用到 Cookie(请看看我们的 Cookie 隐私政策)。", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "请发送 匿名使用数据 以帮助我们改进 Riot.im。这将用到 Cookie。", + "Yes, I want to help!": "好啊,我要帮助你们!", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "此主服务器已达到其每月活跃用户数量限制。若要继续使用此服务,请 联系您的服务提供者 。", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "此主服务器已达到其每月活跃用户数量限制,所以,一些用户将无法登录。若要提高此数量限制,请 联系您的服务提供者 。", + "Warning: This widget might use cookies.": "警告:此小挂件可能会使用 cookies。", + "Failed to remove widget": "移除小挂件失败", + "An error ocurred whilst trying to remove the widget from the room": "尝试从聊天室中移除小部件时发生了错误", + "Reload widget": "刷新小挂件", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "您确定要移除(删除)此事件吗?注意,如果删除了聊天室名称或话题的变化,就会撤销此更改。", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "这将使您的账户永远不再可用。您将不能登录,或使用相同的用户 ID 重新注册。您的账户将退出所有已加入的聊天室,身份服务器上的账户信息也会被删除。此操作是不可逆的。", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "停用您的账户不会默认忘记您发送的消息。如果您希望我们忘记您发送的消息,请勾选下面的选择框。", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Matrix 中的信息可见性类似于电子邮件。我们忘记您的消息意味着您发送的消息将不会被发至新注册或未注册的用户,但是已收到您的消息的注册用户依旧可以看到他们的副本。", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "请在我停用账户的同时忘记我发送的所有消息(警告:这将导致未来的用户看到残缺的对话)", + "To continue, please enter your password:": "请输入您的密码以继续:", + "password": "密码", + "Log out and remove encryption keys?": "是否退出登录并清除加密密钥?", + "Clear Storage and Sign Out": "清除数据并退出登录", + "Send Logs": "发送日志", + "Refresh": "刷新", + "Unable to join community": "无法加入社区", + "The user '%(displayName)s' could not be removed from the summary.": "无法将用户“%(displayName)s”从简介中移除。", + "Who would you like to add to this summary?": "您想将谁添加到简介中?", + "Add users to the community summary": "添加用户至社区简介", + "Collapse Reply Thread": "收起回复", + "Share Message": "分享消息", + "COPY": "复制", + "Share Room Message": "分享聊天室消息", + "Share Community": "分享社区", + "Share User": "分享用户", + "Share Room": "分享聊天室", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "清除本页储存在您浏览器上的数据或许能修复此问题,但也会导致您退出登录并无法读取任何已加密的聊天记录。", + "We encountered an error trying to restore your previous session.": "我们在尝试恢复您先前的会话时遇到了错误。", + "Link to most recent message": "最新消息的链接", + "Link to selected message": "选中消息的链接", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "至多半个小时内,其他用户可能看不到您社区的 名称头像 的变化。", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "这些聊天室对社区成员可见。社区成员可通过点击来加入它们。", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "您的社区还没有详细介绍,一个展示给社区成员的 HTML 页面。
点击这里即可打开设置添加详细介绍!", + "Failed to load %(groupId)s": "%(groupId)s 加载失败", + "This room is not public. You will not be able to rejoin without an invite.": "此聊天室不是公开聊天室。如果没有成员邀请,您将无法重新加入。", + "Can't leave Server Notices room": "无法退出服务器公告聊天室", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "此聊天室是用于发布来自主服务器的重要讯息的,所以您不能退出它。", + "Terms and Conditions": "条款与要求", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "若要继续使用主服务器 %(homeserverDomain)s,您必须浏览并同意我们的条款与要求。", + "Review terms and conditions": "浏览条款与要求", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "若要设置社区过滤器,请将社区头像拖到屏幕最左侧的社区过滤器面板上。单击社区过滤器面板中的社区头像即可过滤出与该社区相关联的房间和人员。", + "You can't send any messages until you review and agree to our terms and conditions.": "在您查看并同意 我们的条款与要求 之前,您不能发送任何消息。", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的消息未被发出,因为此主服务器已达到其每月活跃用户数量上限。请联系您的服务提供者以继续使用此服务。", + "Clear filter": "清除过滤器", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "尝试加载此聊天室时间轴上的某处,但您没有查看相关消息的权限。", + "No Audio Outputs detected": "未检测到可用的音频输出方式", + "Audio Output": "音频输出", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "已向 %(emailAddress)s 发送了一封电子邮件。点开邮件中的链接后,请点击下面。", + "This homeserver has hit its Monthly Active User limit": "此主服务器已达到其每月活跃用户数量上限", + "Please contact your service administrator to continue using this service.": "请联系您的服务提供者以继续使用此服务。", + "Try the app first": "先试试 Riot.im 应用吧", + "Registration Required": "需要注册", + "You need to register to do this. Would you like to register now?": "您必须注册以继续。您想现在就注册吗?", + "Forces the current outbound group session in an encrypted room to be discarded": "强制丢弃加密聊天室中的当前出站群组会话", + "Unable to connect to Homeserver. Retrying...": "无法连接至主服务器。正在重试…", + "Sorry, your homeserver is too old to participate in this room.": "对不起,您的主服务器的程序版本过旧以至于无法加入此聊天室。", + "Increase performance by only loading room members on first view": "仅在首次查看时加载聊天室成员以改善性能", + "Mirror local video feed": "镜像本地视频源", + "This room has been replaced and is no longer active.": "此聊天室已被取代,且不再活跃。", + "The conversation continues here.": "对话在这里继续。", + "Upgrade room to version %(ver)s": "将聊天室升级为版本 %(ver)s", + "Internal room ID: ": "内部聊天室 ID: ", + "Room version number: ": "聊天室版本号: ", + "There is a known vulnerability affecting this room.": "一个已知的威胁正在影响此聊天室。", + "This room version is vulnerable to malicious modification of room state.": "此版本的聊天室难以抵御对聊天室状态的恶意篡改。", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "点击这里以升级至最新版本的聊天室,并保证聊天室能受到完整的保护。", + "Only room administrators will see this warning": "此警告仅聊天室管理员可见", + "This room is a continuation of another conversation.": "此聊天室是另一个对话的延续之处。", + "Click here to see older messages.": "点击这里以查看更早的消息。", + "Failed to indicate account erasure": "无法指示帐户删除", + "Failed to upgrade room": "聊天室升级失败", + "The room upgrade could not be completed": "聊天室可能没有完整地升级", + "Upgrade this room to version %(version)s": "升级此聊天室至版本 %(version)s", + "Upgrade Room Version": "更新聊天室版本", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "升级此聊天室需要关闭当前聊天室并创建一个新的聊天室。为了给聊天室成员提供最佳切换体验,我们将:", + "Create a new room with the same name, description and avatar": "创建一个拥有相同的名称,描述与头像的新聊天室", + "Update any local room aliases to point to the new room": "更新所有本地聊天室别名以使其指向新聊天室", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "阻止用户在旧聊天室中发言,并发送消息建议用户迁移至新聊天室", + "Put a link back to the old room at the start of the new room so people can see old messages": "在新聊天室的消息开始处发送一条旧聊天室的链接,以便用户查看旧消息", + "Lazy loading members not supported": "不支持延迟加载成员", + "Lazy loading is not supported by your current homeserver.": "您当前使用的主服务器尚不支持延迟加载。", + "Legal": "法律信息", + "Unable to query for supported registration methods": "无法请求支持的注册方式", + "This homeserver has hit its Monthly Active User limit.": "此主服务器已达到其每月活跃用户限制。", + "This homeserver has exceeded one of its resource limits.": "本服务器已达到其使用量限制之一。", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "本服务器已达到其每月活跃用户限制,部分用户将无法登录。", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "本主服务器已达到其使用量限制之一,部分用户将无法登录。", + "Please contact your service administrator to continue using this service.": "请 联系您的服务管理员 以继续使用本服务。", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "您的消息未被发送,因为本主服务器已达到其使用量限制之一。请 联系您的服务管理员 以继续使用本服务。", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的消息未被发送,因为本主服务器已达到其每月活跃用户限制。请 联系您的服务管理员 以继续使用本服务。", + "Please contact your service administrator to continue using the service.": "请 联系您的服务管理员 以继续使用本服务。", + "Please contact your homeserver administrator.": "请 联系您主服务器的管理员。", + "Please contact your service administrator to get this limit increased.": "请 联系您的服务管理员 以增加此限制的额度。", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "other": "%(senderName)s 添加了聊天室地址 %(addedAddresses)s。", + "one": "%(senderName)s 添加了一个聊天室地址 %(addedAddresses)s。" + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "other": "%(senderName)s 移除了聊天室地址 %(removedAddresses)s。", + "one": "%(senderName)s 移除了一个聊天室地址 %(removedAddresses)s。" + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s 添加了聊天室地址 %(addedAddresses)s 并移除了地址 %(removedAddresses)s。", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s 将此聊天室的主地址设为了 %(address)s。", + "%(senderName)s removed the main address for this room.": "%(senderName)s 移除了此聊天室的主地址。", + "%(appName)s via %(browserName)s on %(osName)s": "在 %(osName)s 下 %(browserName)s 浏览器中运行的 %(appName)s", + "Riot Desktop on %(platformName)s": "在 %(platformName)s 上运行的 Riot 桌面版", + "Riot is not supported on mobile web. Install the app?": "Riot Web 端不支持移动端网页,你想安装 Riot APP 吗?", + "Unknown device": "未知设备", + "You need to be using HTTPS to place a screen-sharing call.": "您需要使用 HTTPS 以进行共享屏幕通话。", + "Welcome to Riot.im": "欢迎来到 Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化,加密聊天 & 由 [matrix] 驱动", + "Search the room directory": "搜索聊天室目录", + "Chat with Riot Bot": "与 Riot 机器人聊天", + "Get started with some tips from Riot Bot!": "从 Riot 机器人开始,学习使用 Riot 的小窍门吧!", + "General discussion about Matrix and Riot": "关于 Matrix 与 Riot 的综合讨论", + "Discussion of all things Matrix!": "讨论所有关于 Matrix 的事情!", + "Riot/Web & Desktop chat": "Riot/Web & 桌面聊天", + "Riot/iOS & matrix-ios-sdk chat": "关于 Riot/iOS 与 matrix-ios-sdk 的讨论", + "Riot/Android & matrix-android-sdk chat": "关于 Riot/Android 与 matrix-android-sdk 的讨论", + "Matrix technical discussions": "Matrix 技术讨论", + "Running Matrix services": "正在运行的 Matrix 服务", + "Community-run support for Synapse": "Synapse 支持", + "Admin support for Dendrite": "Dendrite 管理支持", + "Announcements about Synapse releases": "Synapse 发布与公告", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc 使用与运维支持", + "Building services on Matrix": "在 Matrix 上建立的服务", + "Support for those using the Matrix spec": "Matrix 规范使用支持", + "Design and implementation of E2E in Matrix": "在 Matrix 中 E2E 的设计与实现", + "Implementing VR services with Matrix": "使用 Matrix 实现虚拟现实服务", + "Implementing VoIP services with Matrix": "使用 Matrix 实现 VoIP 服务", + "Discussion of the Identity Service API": "关于身份认证服务 API 的讨论", + "Support for those using, running and writing other bridges": "使用、运行、撰写其他桥接服务的支持", + "Contributing code to Matrix and Riot": "为 Matrix 和 Riot 贡献代码", + "Dev chat for the Riot/Web dev team": "Riot/Web 开发团队的开发讨论", + "Dev chat for the Dendrite dev team": "Dendrite 的开发团队的开发讨论", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有许多聊天室,连接到已有的网络(Slack、IRC 与 Gitter 等)或独立的网络,请查看目录!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "你可以修改主服务器 URL 以登录其他的 Matrix 服务器。
这样,你就可以使用你在其他 Matrix 服务器上的账号。

你也可以修改身份认证服务器,但你可能因此无法使用电子邮件地址来邀请其他用户,或者被其他用户通过电子邮件邀请。", + "Co-ordination for Riot translators": "Riot 翻译人员的合作讨论" +} \ No newline at end of file diff --git a/riot/i18n/zh_Hant.json b/riot/i18n/zh_Hant.json new file mode 100644 index 0000000..99db0b8 --- /dev/null +++ b/riot/i18n/zh_Hant.json @@ -0,0 +1,1405 @@ +{ + "A new password must be entered.": "一個新的密碼必須被輸入。", + "An error has occurred.": "一個錯誤出現了。", + "Anyone who knows the room's link, apart from guests": "任何知道房間連結的人,但訪客除外", + "Anyone who knows the room's link, including guests": "任何知道房間連結的人,包括訪客", + "Are you sure?": "你確定嗎?", + "Are you sure you want to reject the invitation?": "您確認要謝絕邀請嗎?", + "Are you sure you want to upload the following files?": "您確認要上傳以下文件嗎?", + "Attachment": "附件", + "Autoplay GIFs and videos": "自動播放 GIF 和影片", + "%(senderName)s banned %(targetName)s.": "%(senderName)s 封鎖了 %(targetName)s.", + "Ban": "封鎖", + "Banned users": "被封鎖的用戶", + "Blacklisted": "已列入黑名單", + "Call Timeout": "通話超時", + "Can't connect to homeserver via HTTP when an HTTPS URL is in your browser bar. Either use HTTPS or enable unsafe scripts.": "當瀏覽器網址列裡有 HTTPS URL 時,不能使用 HTTP 連線到家伺服器。請採用 HTTPS 或者允許不安全的指令稿。", + "Can't load user settings": "無法載入使用者設定", + "Change Password": "變更密碼", + "%(targetName)s left the room.": "%(targetName)s 離開了聊天室。.", + "Account": "帳號", + "Access Token:": "取用令牌:", + "Add email address": "添加郵件地址", + "Add phone number": "添加電話號碼", + "Admin": "管理者", + "Advanced": "高級", + "Algorithm": "算法", + "Always show message timestamps": "總是顯示訊息時間戳", + "Authentication": "授權", + "%(items)s and %(lastItem)s": "%(items)s 和 %(lastItem)s", + "%(names)s and %(lastPerson)s are typing": "%(names)s 和 %(lastPerson)s 正在打字", + "%(senderName)s answered the call.": "%(senderName)s 接了通話。.", + "Clear Cache": "清理緩存", + "Click here to fix": "點擊這里修復", + "Confirm password": "確認密碼", + "Confirm your new password": "確認你的新密碼", + "Continue": "繼續", + "Create an account": "創建新帳號", + "Create Room": "創建聊天室", + "Cryptography": "加密", + "Current password": "當前密碼", + "/ddg is not a command": "/ddg 不是一個命令", + "Deactivate Account": "銷毀賬號", + "Deactivate my account": "銷毀我的帳號", + "Decrypt %(text)s": "解密 %(text)s", + "Decryption error": "解密出錯", + "Delete": "刪除", + "Default": "預設", + "Device ID": "裝置識別碼", + "Devices": "裝置列表", + "Devices will not yet be able to decrypt history from before they joined the room": "新加入聊天室的裝置不能解密加入之前的聊天記錄", + "Direct chats": "私聊", + "Disinvite": "取消邀請", + "Display name": "顯示名稱", + "Displays action": "顯示操作", + "Don't send typing notifications": "不要發送我的打字狀態", + "Download %(text)s": "下載 %(text)s", + "Ed25519 fingerprint": "Ed25519指紋", + "Email": "電子郵件", + "Email address": "電子郵件地址", + "Email, name or matrix ID": "電子郵件、名稱或者matrix ID", + "Emoji": "顏文字", + "Enable encryption": "啟用加密", + "Encrypted messages will not be visible on clients that do not yet implement encryption": "不支援加密的客戶端將看不到加密的訊息", + "Encrypted room": "加密聊天室", + "%(senderName)s ended the call.": "%(senderName)s 結束了通話。.", + "End-to-end encryption information": "端到端加密資訊", + "End-to-end encryption is in beta and may not be reliable": "端到端加密現為測試版,不一定可靠", + "Enter Code": "輸入代碼", + "Error": "錯誤", + "Error decrypting attachment": "解密附件時出錯", + "Event information": "事件資訊", + "Existing Call": "現有通話", + "Export E2E room keys": "導出聊天室的端到端加密密鑰", + "Failed to ban user": "封鎖用戶失敗", + "Failed to change password. Is your password correct?": "變更密碼失敗。您的密碼正確嗎?", + "Failed to forget room %(errCode)s": "無法忘記聊天室 %(errCode)s", + "Failed to join room": "無法加入聊天室", + "Failed to kick": "踢人失敗", + "Failed to leave room": "無法離開聊天室", + "Failed to load timeline position": "無法加載時間軸位置", + "Failed to mute user": "禁言用戶失敗", + "Failed to reject invite": "拒絕邀請失敗", + "Failed to reject invitation": "拒絕邀請失敗", + "Failed to save settings": "保存設置失敗", + "Failed to send email": "發送郵件失敗", + "Failed to send request.": "發送請求失敗。", + "Failed to set avatar.": "設置頭像失敗。.", + "Failed to set display name": "設置暱稱失敗", + "Failed to set up conference call": "無法啟動群組通話", + "Failed to toggle moderator status": "無法切換管理員權限", + "Failed to unban": "解除封鎖失敗", + "Failed to upload file": "上傳文件失敗", + "Failed to verify email address: make sure you clicked the link in the email": "電子郵件地址驗證失敗: 請確保你已點擊郵件中的連結", + "Failure to create room": "創建聊天室失敗", + "Favourite": "我的最愛", + "Favourites": "收藏夾", + "Fill screen": "全螢幕顯示", + "Filter room members": "過濾聊天室成員", + "Forget room": "忘記聊天室", + "Forgot your password?": "忘記密碼?", + "For security, this session has been signed out. Please sign in again.": "因為安全因素,此工作階段已被登出。請重新登入。", + "For security, logging out will delete any end-to-end encryption keys from this browser. If you want to be able to decrypt your conversation history from future Riot sessions, please export your room keys for safe-keeping.": "因為安全因素,登出將會從此瀏覽器刪除任何端到端加密的金鑰。若您想要在未來的 Riot 工作階段中解密您的對話紀錄,請將您的聊天室金鑰匯出並好好存放。", + "%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s 從 %(fromPowerLevel)s 變為 %(toPowerLevel)s", + "Guests cannot join this room even if explicitly invited.": "游客不能加入此聊天室,即使有人主動邀請。.", + "Hangup": "掛斷", + "Hide read receipts": "隱藏已讀回執", + "Hide Text Formatting Toolbar": "隱藏格式工具欄", + "Historical": "歷史", + "Homeserver is": "主服務器是", + "Identity Server is": "身份認證服務器是", + "I have verified my email address": "我已經驗證了我的電子郵件地址", + "Import E2E room keys": "導入聊天室端對端加密密鑰", + "Incorrect verification code": "驗證碼錯誤", + "Interface Language": "界面語言", + "Invalid alias format": "別名格式錯誤", + "Invalid address format": "地址格式錯誤", + "Invalid Email Address": "無效的電子郵件地址", + "Invalid file%(extra)s": "非法文件%(extra)s", + "Invite new room members": "邀請新的聊天室成員", + "Join Room": "加入聊天室", + "%(targetName)s joined the room.": "%(targetName)s 加入了聊天室。.", + "Jump to first unread message.": "跳到第一則未讀訊息。", + "%(senderName)s kicked %(targetName)s.": "%(senderName)s 把 %(targetName)s 踢出了聊天室。.", + "Leave room": "離開聊天室", + "New password": "新密碼", + "Resetting password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "重設密碼目前會把所有裝置上的端到端加密金鑰重設,讓已加密的聊天歷史不可讀,除非您先匯出您的聊天室金鑰並在稍後重新匯入。這會在未來改進。", + "Return to login screen": "返回到登入畫面", + "Riot does not have permission to send you notifications - please check your browser settings": "Riot 未被允許向你推送通知 ── 請檢查您的瀏覽器設定", + "Riot was not given permission to send notifications - please try again": "Riot 未被允許向你推送通知 ── 請重試", + "riot-web version:": "riot-網頁版:", + "Room %(roomId)s not visible": "聊天室 %(roomId)s 已隱藏", + "Room Colour": "聊天室顏色", + "Room name (optional)": "聊天室名稱 (可選)", + "Rooms": "聊天室", + "Scroll to bottom of page": "滾動到頁面底部", + "Scroll to unread messages": "捲動到未讀訊息", + "Search": "搜尋", + "Search failed": "搜索失敗", + "Searches DuckDuckGo for results": "搜索 DuckDuckGo", + "Sender device information": "發送者的裝置資訊", + "Send Invites": "發送邀請", + "Send Reset Email": "發送密碼重設郵件", + "%(senderDisplayName)s sent an image.": "%(senderDisplayName)s 發了一張圖片。.", + "%(senderName)s sent an invitation to %(targetDisplayName)s to join the room.": "%(senderName)s 向 %(targetDisplayName)s 發了加入聊天室的邀請。.", + "Server error": "伺服器錯誤", + "Server may be unavailable or overloaded": "服務器可能不可用或者超載", + "Server may be unavailable, overloaded, or search timed out :(": "服務器可能不可用、超載,或者搜索超時 :(", + "Server may be unavailable, overloaded, or the file too big": "服務器可能不可用、超載,或者文件過大", + "Server may be unavailable, overloaded, or you hit a bug.": "服務器可能不可用、超載,或者你遇到了一個漏洞.", + "Server unavailable, overloaded, or something else went wrong.": "伺服器可能不可用、超載,或者其他東西出錯了.", + "Session ID": "會話 ID", + "%(senderName)s set a profile picture.": "%(senderName)s 設置了頭像。.", + "%(senderName)s set their display name to %(displayName)s.": "%(senderName)s 將他的暱稱改成 %(displayName)s。.", + "Settings": "設定", + "Show panel": "顯示側邊欄", + "Show timestamps in 12 hour format (e.g. 2:30pm)": "用12小時制顯示時間戳 (如:下午 2:30)", + "Signed Out": "已退出登錄", + "Sign in": "登錄", + "Sign out": "登出", + "%(count)s of your messages have not been sent.": { + "other": "部分訊息未送出。", + "one": "您的訊息尚未傳送。" + }, + "Someone": "某個用戶", + "Start a chat": "創建聊天", + "Start Chat": "開始聊天", + "Submit": "提交", + "Success": "成功", + "The default role for new room members is": "此聊天室新成員的預設角色是", + "The main address for this room is": "此聊天室的主要地址是", + "This email address is already in use": "這個電子郵件位址已被使用", + "This email address was not found": "未找到此電子郵件地址", + "The email address linked to your account must be entered.": "必須輸入和你帳號關聯的電子郵件地址。", + "The file '%(fileName)s' exceeds this home server's size limit for uploads": "文件 '%(fileName)s' 超過了這個家伺服器的上傳大小限制", + "The file '%(fileName)s' failed to upload": "文件 '%(fileName)s' 上傳失敗", + "Turn Markdown off": "關閉Markdown 語法", + "Turn Markdown on": "啟用Markdown 語法", + "%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s 啟用端對端加密 (algorithm %(algorithm)s).", + "Unable to add email address": "無法加入電郵地址", + "Unable to capture screen": "無法截取畫面", + "Unable to enable Notifications": "無法啟用通知功能", + "You are already in a call.": "您正在通話中。", + "You are trying to access %(roomName)s.": "您將嘗試進入 %(roomName)s 聊天室。", + "You cannot place a call with yourself.": "你不能打電話給自已。", + "You cannot place VoIP calls in this browser.": "在此瀏覽器中您無法撥打 VoIP 通話。", + "Sun": "星期日", + "Mon": "星期一", + "Tue": "星期二", + "Online": "線上", + "Idle": "閒置", + "Offline": "下線", + "%(senderDisplayName)s changed the room avatar to ": "%(senderDisplayName)s 更改了聊天室的圖像為 ", + "%(senderDisplayName)s removed the room avatar.": "%(senderDisplayName)s 移除了聊天室圖片。", + "%(senderDisplayName)s changed the avatar for %(roomName)s": "%(senderDisplayName)s 更改了聊天室 %(roomName)s 圖像", + "Cancel": "取消", + "Custom Server Options": "自訂伺服器選項", + "Dismiss": "關閉", + "Mute": "靜音", + "Notifications": "通知", + "Operation failed": "操作失敗", + "powered by Matrix": "由 Matrix 提供", + "Remove": "移除", + "unknown error code": "未知的錯誤代碼", + "OK": "確定", + "Add a topic": "新增標題", + "VoIP": "VoIP", + "Default Device": "預設裝置", + "Microphone": "麥克風", + "Camera": "攝影機", + "Anyone": "任何人", + "Bulk Options": "批次選項", + "Command error": "指令出錯", + "Commands": "指令", + "Device ID:": "裝置 ID:", + "device id: ": "裝置 ID: ", + "Reason": "原因", + "Register": "註冊", + "Default server": "預設伺服器", + "Custom server": "自定的伺服器", + "Home server URL": "家伺服器網址", + "Identity server URL": "識別伺服器網址", + "What does this mean?": "它代表什麼意思?", + "Error decrypting audio": "解密音檔出錯", + "Error decrypting image": "解密圖片出錯", + "Error decrypting video": "解密影片出錯", + "Add an Integration": "新增整合器", + "Ongoing conference call%(supportedText)s.": "%(supportedText)s 正在進行會議通話。", + " (unsupported)": " (不支援)", + "URL Previews": "網址預覽", + "Drop file here to upload": "把文件放在這裡上傳", + "Removed or unknown message type": "已刪除或未知的信息類型", + "You are about to be taken to a third-party site so you can authenticate your account for use with %(integrationsUrl)s. Do you wish to continue?": "您即將被帶到第三方網站,以便您可以驗證您的帳戶以使用%(integrationsUrl)s。你想繼續嗎?", + "Close": "關閉", + "Create new room": "建立新聊天室", + "Room directory": "聊天室目錄", + "Start chat": "開始聊天", + "A text message has been sent to +%(msisdn)s. Please enter the verification code it contains": "文字訊息將會傳送到 +%(msisdn)s。請輸入其中包含的驗證碼", + "Accept": "接受", + "%(targetName)s accepted an invitation.": "%(targetName)s 已接受邀請。", + "%(targetName)s accepted the invitation for %(displayName)s.": "%(targetName)s 已接受 %(displayName)s 的邀請。", + "Active call (%(roomName)s)": "活躍的通話(%(roomName)s)", + "Add": "新增", + "Admin Tools": "管理員工具", + "Missing Media Permissions, click here to request.": "遺失媒體權限,點選這裡來要求。", + "No Microphones detected": "未偵測到麥克風", + "No Webcams detected": "未偵測到網路攝影機", + "No media permissions": "沒有媒體權限", + "You may need to manually permit Riot to access your microphone/webcam": "您可能需要手動允許 Riot 存取您的麥克風/網路攝影機", + "Hide removed messages": "隱藏已移除的訊息", + "Alias (optional)": "別名(選擇性)", + "Are you sure you want to leave the room '%(roomName)s'?": "您確定您要想要離開房間 '%(roomName)s' 嗎?", + "Bans user with given id": "禁止有指定 ID 的使用者", + "Can't connect to homeserver - please check your connectivity, ensure your homeserver's SSL certificate is trusted, and that a browser extension is not blocking requests.": "無法連線到家伺服器 - 請檢查您的連線,確保您的家伺服器的 SSL 憑證可被信任,而瀏覽器擴充套件也沒有阻擋請求。", + "%(senderName)s changed their profile picture.": "%(senderName)s 已經變更了他的基本資料圖片。", + "%(senderName)s changed the power level of %(powerLevelDiffText)s.": "%(senderName)s 變更了 %(powerLevelDiffText)s 權限等級。", + "%(senderDisplayName)s changed the room name to %(roomName)s.": "%(senderDisplayName)s 將房間名稱變更為 %(roomName)s。", + "%(senderDisplayName)s removed the room name.": "%(senderDisplayName)s 已經移除了房間名稱。", + "%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s 已經變更主題為「%(topic)s」。", + "Changes to who can read history will only apply to future messages in this room": "變更誰可以讀取歷史紀錄的設定僅套用於此房間未來的訊息", + "Changes your display nickname": "變更您的顯示暱稱", + "Changing password will currently reset any end-to-end encryption keys on all devices, making encrypted chat history unreadable, unless you first export your room keys and re-import them afterwards. In future this will be improved.": "目前變更密碼將會重設在所有裝置上的端對端加密金鑰,讓加密的聊天歷史無法讀取,除非您先匯出您的房間金鑰,並在稍後重新匯入它們。這會在未來改進。", + "Claimed Ed25519 fingerprint key": "已索取 Ed25519 指紋金鑰", + "Clear Cache and Reload": "清除快取並重新載入", + "Click here to join the discussion!": "點選這裡來加入討論!", + "Click to mute audio": "點選以靜音", + "Click to mute video": "點選以讓視訊靜音", + "click to reveal": "點選以顯示", + "Click to unmute video": "點選以解除視訊靜音", + "Click to unmute audio": "點選以解除靜音", + "Conference call failed.": "會議通話失敗。", + "Conference calling is in development and may not be reliable.": "會議通話尚在開發中,可能不太可靠。", + "Conference calls are not supported in encrypted rooms": "不支援在加密聊天室的會議通話", + "Conference calls are not supported in this client": "這個客戶端不支援會議通話", + "Could not connect to the integration server": "無法連線到整合的伺服器", + "%(count)s new messages": { + "one": "%(count)s 個訊息", + "other": "%(count)s 個訊息" + }, + "Create a new chat or reuse an existing one": "建立新聊天或重新使用既有的", + "Curve25519 identity key": "Curve25519 辨識金鑰", + "Custom": "自訂", + "Custom level": "自訂等級", + "Decline": "拒絕", + "Deops user with given id": "取消指定 ID 使用者的管理員權限", + "Device already verified!": "裝置已驗證!", + "Device key:": "裝置金鑰:", + "Disable Notifications": "停用通知", + "Drop File Here": "在此放置檔案", + "Drop here to tag %(section)s": "在此放置以標記 %(section)s", + "Email address (optional)": "電子郵件地址(選擇性)", + "Enable Notifications": "啟用通知", + "Encrypted by a verified device": "已透過驗證過的裝置加密", + "Encrypted by an unverified device": "已透過未驗證過的裝置加密", + "Encryption is enabled in this room": "此房間的加密已啟用", + "Encryption is not enabled in this room": "此房間未啟用加密", + "Enter passphrase": "輸入通關密語", + "Error: Problem communicating with the given homeserver.": "錯誤:與指定的家伺服器有通訊問題。", + "Export": "匯出", + "Failed to change power level": "變更權限等級失敗", + "Failed to fetch avatar URL": "擷取大頭貼 URL 失敗", + "Failed to upload profile picture!": "上傳基本資料圖片失敗!", + "Guest access is disabled on this Home Server.": "這個家伺服器的訪客存取已停用。", + "Home": "家", + "Import": "匯入", + "Incoming call from %(name)s": "從 %(name)s 而來的來電", + "Incoming video call from %(name)s": "從 %(name)s 而來的視訊來電", + "Incoming voice call from %(name)s": "從 %(name)s 而來的語音來電", + "Incorrect username and/or password.": "不正確的使用者名稱和/或密碼。", + "%(senderName)s invited %(targetName)s.": "%(senderName)s 邀請了 %(targetName)s。", + "Invited": "已邀請", + "Invites": "邀請", + "Invites user with given id to current room": "邀請指定 ID 的使用者到目前的房間", + "'%(alias)s' is not a valid format for an address": "'%(alias)s' 不是地址的有效格式", + "'%(alias)s' is not a valid format for an alias": "'%(alias)s' 不是別名的有效格式", + "%(displayName)s is typing": "%(displayName)s 正在輸入", + "Sign in with": "登入使用", + "Join as voice or video.": "加入為語音視訊。", + "Joins room with given alias": "以指定的別名加入房間", + "Kick": "踢出", + "Kicks user with given id": "踢出指定 ID 的使用者", + "Labs": "實驗室", + "Last seen": "上次檢視", + "Level:": "等級:", + "Local addresses for this room:": "此房間的本機地址:", + "Logged in as:": "登入為:", + "Logout": "登出", + "Low priority": "低優先度", + "%(senderName)s made future room history visible to all room members, from the point they are invited.": "%(senderName)s 讓未來的房間歷史紀錄可見於 所有聊天室成員,從他們被邀請開始.", + "%(senderName)s made future room history visible to all room members, from the point they joined.": "%(senderName)s 讓未來的房間歷史紀錄可見於 所有聊天室成員,從他們加入開始.", + "%(senderName)s made future room history visible to all room members.": "%(senderName)s 讓未來的房間歷史紀錄可見於 所有聊天室成員.", + "%(senderName)s made future room history visible to anyone.": "%(senderName)s 讓未來的房間歷史紀錄可見於 任何人.", + "%(senderName)s made future room history visible to unknown (%(visibility)s).": "%(senderName)s 讓未來的房間歷史紀錄可見於 未知 (%(visibility)s).", + "Manage Integrations": "管裡整合", + "Markdown is disabled": "Markdown 已停用", + "Markdown is enabled": "Markdown 已啟用", + "matrix-react-sdk version:": "matrix-react-sdk 版本:", + "Message not sent due to unknown devices being present": "因為未知的裝置存在而未傳送", + "Missing room_id in request": "在請求中遺失房間 ID", + "Missing user_id in request": "在請求中遺失使用者 ID", + "Mobile phone number": "行動電話號碼", + "Mobile phone number (optional)": "行動電話號碼(選擇性)", + "Moderator": "仲裁者", + "Name": "名稱", + "Never send encrypted messages to unverified devices from this device": "從不自此裝置傳送加密的訊息到未驗證的裝置", + "Never send encrypted messages to unverified devices in this room from this device": "從不在此房間中從此裝置上傳送未加密的訊息到未驗證的裝置", + "New address (e.g. #foo:%(localDomain)s)": "新地址(例如:#foo:%(localDomain)s)", + "New passwords don't match": "新密碼不相符", + "New passwords must match each other.": "新密碼必須互相符合。", + "none": "無", + "not set": "未設定", + "not specified": "未指定", + "(not supported by this browser)": "(不被此瀏覽器支援)", + "": "<不支援>", + "NOT verified": "未驗證", + "No devices with registered encryption keys": "沒有已註冊的加密金鑰的裝置", + "No display name": "沒有顯示名稱", + "No more results": "沒有更多結果", + "No results": "沒有結果", + "No users have specific privileges in this room": "此房間中沒有使用者有指定的權限", + "olm version:": "olm 版本:", + "Once encryption is enabled for a room it cannot be turned off again (for now)": "這個房間只要啟用加密就不能再關掉了(從現在開始)", + "Only people who have been invited": "僅有被邀請的夥伴", + "Password": "密碼", + "Password:": "密碼:", + "Passwords can't be empty": "密碼不能為空", + "People": "夥伴", + "Permissions": "權限", + "Phone": "電話", + "%(senderName)s placed a %(callType)s call.": "%(senderName)s 打了 %(callType)s 通話。", + "Please check your email and click on the link it contains. Once this is done, click continue.": "請檢查您的電子郵件並點選其中包含的連結。只要這個完成了,就點選選繼續。", + "Power level must be positive integer.": "權限等級必需為正整數。", + "Press to start a chat with someone": "按下 以開始與某人聊天", + "Privacy warning": "隱私警告", + "Private Chat": "私密聊天", + "Privileged Users": "特別權限使用者", + "Profile": "基本資料", + "Public Chat": "公開聊天", + "Reason: %(reasonText)s": "理由:%(reasonText)s", + "Revoke Moderator": "撤回仲裁者", + "Refer a friend to Riot:": "推薦 Riot 給朋友:", + "%(targetName)s rejected the invitation.": "%(targetName)s 拒絕了邀請。", + "Reject invitation": "拒絕邀請", + "Rejoin": "重新加入", + "Remote addresses for this room:": "此房間的遠端地址:", + "Remove Contact Information?": "移除聯絡人資訊?", + "%(senderName)s removed their display name (%(oldDisplayName)s).": "%(senderName)s 移除了他的顯示名稱 (%(oldDisplayName)s)。", + "%(senderName)s removed their profile picture.": "%(senderName)s 移除了他的基本資料圖片。", + "Remove %(threePid)s?": "移除 %(threePid)s?", + "%(senderName)s requested a VoIP conference.": "%(senderName)s 請求了一次 VoIP 會議。", + "Results from DuckDuckGo": "DuckDuckGo 的結果", + "Room contains unknown devices": "包含了未知裝置的房間", + "%(roomName)s does not exist.": "%(roomName)s 不存在。", + "%(roomName)s is not accessible at this time.": "%(roomName)s 此時無法存取。", + "Save": "儲存", + "Seen by %(userName)s at %(dateTime)s": "%(userName)s 在 %(dateTime)s 時看過", + "Send anyway": "無論如何都要傳送", + "Show Text Formatting Toolbar": "顯示文字格式化工具列", + "Start authentication": "開始認證", + "Tagged as: ": "標記為: ", + "The phone number entered looks invalid": "輸入的電話號碼看起來無效", + "The signing key you provided matches the signing key you received from %(userId)s's device %(deviceId)s. Device marked as verified.": "您提供的簽署金鑰與您從 %(userId)s 的裝置 %(deviceId)s 收到的簽署金鑰相符。裝置被標記為已驗證。", + "The remote side failed to pick up": "遠端未能接聽", + "This Home Server does not support login using email address.": "這個家伺服器不支援使用電子郵件地址登入。", + "This invitation was sent to an email address which is not associated with this account:": "這份邀請被傳送給與此帳號無關的電子郵件地址:", + "This room has no local addresses": "此房間沒有本機地址", + "This room is not recognised.": "此房間不被認可。", + "These are experimental features that may break in unexpected ways": "這些是可能會以非預期的方式故障的實驗性功能", + "The visibility of existing history will be unchanged": "既存歷史紀錄的可見性將不會變更", + "This doesn't appear to be a valid email address": "這似乎不是有效的電子郵件地址", + "This is a preview of this room. Room interactions have been disabled": "這是房間的預覽。房間互動已停用", + "This phone number is already in use": "這個電話號碼已在使用中", + "This room": "此房間", + "This room is not accessible by remote Matrix servers": "此房間無法被遠端的 Matrix 伺服器存取", + "This room's internal ID is": "此房間的內部 ID 為", + "To link to a room it must have an address.": "要連結到房間,它必須有地址。", + "To reset your password, enter the email address linked to your account": "要重設您的密碼,輸入連結到您的帳號的電子郵件地址", + "To use it, just wait for autocomplete results to load and tab through them.": "要使用它,只要等待自動完成的結果載入並在它們上面按 Tab。", + "Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "嘗試載入此房間時間軸的特定時間點,但是問題是您沒有權限檢視相關的訊息。", + "Tried to load a specific point in this room's timeline, but was unable to find it.": "嘗試載入此房間時間軸的特定時間點,但是找不到。", + "Unable to remove contact information": "無法移除聯絡人資訊", + "Unable to verify email address.": "無法驗證電子郵件。", + "Unban": "解除禁止", + "%(senderName)s unbanned %(targetName)s.": "%(senderName)s 解除禁止 %(targetName)s。", + "Unable to ascertain that the address this invite was sent to matches one associated with your account.": "無法確定此邀請是傳送到與您的帳號相關聯的電子郵件地址。", + "Unable to load device list": "無法載入裝置清單", + "Undecryptable": "無法解密", + "Unencrypted room": "未加密的房間", + "unencrypted": "未加密", + "Unencrypted message": "未加密的訊息", + "unknown caller": "不明來電", + "unknown device": "未知的裝置", + "Unknown room %(roomId)s": "未知的房間 %(roomId)s", + "Unknown (user, device) pair:": "未知的(使用者,裝置)配對:", + "Unmute": "解除靜音", + "Unnamed Room": "未命名的房間", + "Unrecognised command:": "無法識別的命令:", + "Unrecognised room alias:": "無法室別的房間別名:", + "Unverified": "未驗證", + "Uploading %(filename)s and %(count)s others": { + "zero": "正在上傳 %(filename)s", + "one": "正在上傳 %(filename)s 與另外 %(count)s 個", + "other": "正在上傳 %(filename)s 與另外 %(count)s 個" + }, + "Upload avatar": "上傳大頭貼", + "Upload Failed": "上傳失敗", + "Upload Files": "上傳檔案", + "Upload file": "上傳檔案", + "Upload new:": "上傳新的:", + "Usage": "使用方法", + "Use compact timeline layout": "使用緊湊的時間軸佈局", + "Use with caution": "謹慎使用", + "User ID": "使用者 ID", + "User Interface": "使用者介面", + "User name": "使用者名稱", + "%(userName)s (power %(powerLevelNumber)s)": "%(userName)s(權限等級 %(powerLevelNumber)s)", + "Username invalid: %(errMessage)s": "使用者名稱無效:%(errMessage)s", + "Users": "使用者", + "Verification Pending": "擱置的驗證", + "Verification": "驗證", + "verified": "已驗證", + "Verified": "已驗證", + "Verified key": "已驗證的金鑰", + "Video call": "視訊通話", + "Voice call": "語音通話", + "VoIP conference finished.": "VoIP 會議已結束。", + "VoIP conference started.": "VoIP 會議已開始。", + "VoIP is unsupported": "VoIP 不支援", + "(could not connect media)": "(無法連線媒體)", + "(no answer)": "(未回覆)", + "(unknown failure: %(reason)s)": "(未知的錯誤:%(reason)s)", + "(warning: cannot be disabled again!)": "(警告:無法再停用!)", + "Warning!": "警告!", + "WARNING: Device already verified, but keys do NOT MATCH!": "警告:裝置已驗證,但金鑰不符合!", + "WARNING: KEY VERIFICATION FAILED! The signing key for %(userId)s and device %(deviceId)s is \"%(fprint)s\" which does not match the provided key \"%(fingerprint)s\". This could mean your communications are being intercepted!": "警告:金鑰驗證失敗!%(userId)s 與裝置 %(deviceId)s 的簽署金鑰是「%(fprint)s」,其並不符合提供的金鑰「%(fingerprint)s」。這可能代表您的通訊已被攔截!", + "Who can access this room?": "誰可以存取此房間?", + "Who can read history?": "誰可以讀取歷史紀錄?", + "Who would you like to add to this room?": "您想要新增誰到此房間?", + "Who would you like to communicate with?": "您想與誰通訊?", + "%(senderName)s withdrew %(targetName)s's invitation.": "%(senderName)s 撤回了 %(targetName)s 的邀請。", + "Would you like to accept or decline this invitation?": "您想要接受拒絕此邀請?", + "You already have existing direct chats with this user:": "您已與此使用者直接聊天:", + "You're not in any rooms yet! Press to make a room or to browse the directory": "您尚未在任何房間!按下 來建立房間或 來瀏覽目錄", + "You do not have permission to post to this room": "您沒有權限在此房間發言", + "You have been banned from %(roomName)s by %(userName)s.": "您已經被 %(userName)s 從 %(roomName)s 禁止。", + "You have been invited to join this room by %(inviterName)s": "您已被 %(inviterName)s 邀請加入此房間", + "You have been kicked from %(roomName)s by %(userName)s.": "您已被 %(userName)s 從 %(roomName)s 踢出。", + "You have been logged out of all devices and will no longer receive push notifications. To re-enable notifications, sign in again on each device": "您已在所有裝置上登出,並且不會再收到推送通知。要重新啟用通知,再次於每個裝置上登入", + "You have disabled URL previews by default.": "您已預設停用 URL 預覽。", + "You have enabled URL previews by default.": "您已預設啟用 URL 預覽。", + "You have no visible notifications": "您沒有可見的通知", + "You may wish to login with a different account, or add this email to this account.": "您可能會想要以不同的帳號登入,或是把這個電子郵件加入到此帳號中。", + "You must register to use this functionality": "您必須註冊以使用此功能", + "You need to be able to invite users to do that.": "您需要邀請使用者來做這件事。", + "You need to be logged in.": "您需要登入。", + "You need to enter a user name.": "您需要輸入使用者名稱。", + "Your email address does not appear to be associated with a Matrix ID on this Homeserver.": "您的電子郵件地址似乎未在此家伺服器上與 Matrix ID 關聯。", + "Your password has been reset": "您的密碼已重設", + "Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "您的密碼已成功變更。您將不會在其他裝置上收到推送通知,一直到您登入回那些裝置為止", + "You seem to be in a call, are you sure you want to quit?": "您似乎尚在通話中,您確定您想要結束通話嗎?", + "You seem to be uploading files, are you sure you want to quit?": "您似乎正在上傳檔案,您確定您想要結束嗎?", + "You should not yet trust it to secure data": "您不應該相信它來保護資料", + "You will not be able to undo this change as you are promoting the user to have the same power level as yourself.": "您將無法復原此變更,因為您正在將其他使用者的權限等級提升到與您相同。", + "Your home server does not support device management.": "您的家伺服器不支援裝置管理。", + "Wed": "週二", + "Thu": "週四", + "Fri": "週五", + "Sat": "週六", + "Jan": "一月", + "Feb": "二月", + "Mar": "三月", + "Apr": "四月", + "May": "五月", + "Jun": "六月", + "Jul": "七月", + "Aug": "八月", + "Sep": "九月", + "Oct": "十月", + "Nov": "十一月", + "Dec": "十二月", + "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s", + "%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s", + "Set a display name:": "設定顯示名稱:", + "Upload an avatar:": "上傳大頭貼:", + "This server does not support authentication with a phone number.": "這個伺服器不支援以電話號碼認證。", + "Missing password.": "密碼遺失。", + "Passwords don't match.": "密碼不符合。", + "Password too short (min %(MIN_PASSWORD_LENGTH)s).": "密碼太短(最少 %(MIN_PASSWORD_LENGTH)s)。", + "This doesn't look like a valid email address.": "這看起不像是有效的電子郵件地址。", + "This doesn't look like a valid phone number.": "這看起來不像有效的電話號碼。", + "User names may only contain letters, numbers, dots, hyphens and underscores.": "使用者名稱僅能包含字母、數字、點、連字號與底線。", + "An unknown error occurred.": "遇到未知的錯誤。", + "I already have an account": "我已經有帳號了", + "An error occurred: %(error_string)s": "遇到錯誤:%(error_string)s", + "Topic": "主題", + "Make Moderator": "給予仲裁者", + "Make this room private": "讓此房間變為私密", + "Share message history with new users": "與新使用者分享歷史紀錄", + "Encrypt room": "加密房間", + "There are no visible files in this room": "此房間中沒有可見的檔案", + "Room": "房間", + "Connectivity to the server has been lost.": "至伺服器的連線已遺失。", + "Sent messages will be stored until your connection has returned.": "傳送的訊息會在您的連線恢復前先儲存起來。", + "(~%(count)s results)": { + "one": "(~%(count)s 結果)", + "other": "(~%(count)s 結果)" + }, + "Active call": "活躍的通話", + "bold": "粗體", + "italic": "斜體", + "strike": "刪除線", + "underline": "底線", + "code": "程式碼", + "quote": "引言", + "bullet": "子彈", + "numbullet": "numbullet", + "Please select the destination room for this message": "請選取此訊息的目標房間", + "New Password": "新密碼", + "Start automatically after system login": "在系統登入後自動開始", + "Desktop specific": "桌面版特有", + "Analytics": "分析", + "Options": "選項", + "Riot collects anonymous analytics to allow us to improve the application.": "Riot 會收集匿名分析以讓我們可以改進此應用程式。", + "Passphrases must match": "通關密語必須符合", + "Passphrase must not be empty": "通關密語不能為空", + "Export room keys": "匯出房間金鑰", + "Confirm passphrase": "確認通關密語", + "Import room keys": "匯入房間金鑰", + "File to import": "要匯入的檔案", + "This process allows you to export the keys for messages you have received in encrypted rooms to a local file. You will then be able to import the file into another Matrix client in the future, so that client will also be able to decrypt these messages.": "這個過程讓您可以匯出您在加密的房間裡收到的訊息的金鑰到一個本機檔案。您將可以在未來匯入檔案到其他的 Matrix 客戶端,這樣客戶端就可以解密此訊息。", + "The exported file will allow anyone who can read it to decrypt any encrypted messages that you can see, so you should be careful to keep it secure. To help with this, you should enter a passphrase below, which will be used to encrypt the exported data. It will only be possible to import the data by using the same passphrase.": "匯出的檔案將會讓任何可以讀取它的人解密任何您可以看到的加密訊息,所以您必須謹慎地保管好它。為了協助您,您應該輸入下面的通關密語,其將會被用於加密匯出的資料。其只能使用相同的密碼來匯入資料。", + "This process allows you to import encryption keys that you had previously exported from another Matrix client. You will then be able to decrypt any messages that the other client could decrypt.": "這個過程讓您可以匯入您先前從其他 Matrix 客戶端匯出的加密金鑰。您將可以解密在其他客戶端可以解密的訊息。", + "The export file will be protected with a passphrase. You should enter the passphrase here, to decrypt the file.": "匯出檔案被通關密語所保護。您應該在這裡輸入通關密語來解密檔案。", + "You must join the room to see its files": "您必須加入房間來檢視它的檔案", + "Reject all %(invitedRooms)s invites": "拒絕所有 %(invitedRooms)s 邀請", + "Start new chat": "開始新聊天", + "Failed to invite": "邀請失敗", + "Failed to invite user": "邀請使用者失敗", + "Failed to invite the following users to the %(roomName)s room:": "邀請下列使用者到 %(roomName)s 房間失敗:", + "Confirm Removal": "確認移除", + "Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "您確定您想要移除(刪除)此活動嗎?注意若您刪除房間名稱或主題變更,還是可以復原變更。", + "Unknown error": "未知的錯誤", + "Incorrect password": "不正確的密碼", + "To continue, please enter your password.": "要繼續,請輸入您的密碼。", + "To verify that this device can be trusted, please contact its owner using some other means (e.g. in person or a phone call) and ask them whether the key they see in their User Settings for this device matches the key below:": "要驗證此裝置是否可信,請使用其他方式(例如:面對面或是打電話)聯絡它的擁有者並詢問他們在使用者設定中看到此裝置的金鑰是否與下列的金鑰相符:", + "Device name": "裝置名稱", + "Device Name": "裝置名稱", + "Device key": "裝置金鑰", + "If it matches, press the verify button below. If it doesn't, then someone else is intercepting this device and you probably want to press the blacklist button instead.": "若其符合,按下下面的驗證按鈕。若其不符合,那麼就是有其他人試圖攔截此裝置,您應該按下黑名單按鈕。", + "In future this verification process will be more sophisticated.": "在未來,這個過程會更加複雜。", + "Verify device": "驗證裝置", + "I verify that the keys match": "我驗證金鑰相符", + "Unable to restore session": "無法復原工作階段", + "If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "若您先前使用過較新版本的 Riot,您的工作階段可能與此版本不相容。關閉此視窗並回到較新的版本。", + "You are currently blacklisting unverified devices; to send messages to these devices you must verify them.": "您目前正把未驗證的裝置列入黑名單;要傳送訊息到這些裝置,您必須先驗證它們。", + "We recommend you go through the verification process for each device to confirm they belong to their legitimate owner, but you can resend the message without verifying if you prefer.": "我們建議您對每一個裝置執行驗證過程以確認它們屬於其合法擁有者,但若您想要的話,您也可以重新傳送訊息而不必驗證它們。", + "\"%(RoomName)s\" contains devices that you haven't seen before.": "「%(RoomName)s」包含了您先前沒看過的裝置。", + "Unknown devices": "未知的裝置", + "Unknown Address": "未知的地址", + "Unblacklist": "解除黑名單", + "Blacklist": "黑名單", + "Unverify": "取消驗證", + "Verify...": "驗證...", + "ex. @bob:example.com": "例如:@bob:example.com", + "Add User": "新增使用者", + "This Home Server would like to make sure you are not a robot": "這個家伺服器想要確定您不是機器人", + "Sign in with CAS": "使用 CAS 登入", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.": "您可以使用自訂伺服器選項來指定不同的家伺服器 URL 以登入到其他的 Matrix 伺服器。", + "This allows you to use this app with an existing Matrix account on a different home server.": "這讓您可以利用在不同的家伺服器上既有的 Matrix 帳號使用此應用程式。", + "You can also set a custom identity server but this will typically prevent interaction with users based on email address.": "您也可以設定自訂的身份伺服器,但其通常會阻止基於電子郵件的使用者互動。", + "Please check your email to continue registration.": "請檢查您的電子郵件來繼續註冊。", + "Token incorrect": "Token 不正確", + "Please enter the code it contains:": "請輸入其包含的代碼:", + "If you don't specify an email address, you won't be able to reset your password. Are you sure?": "若您不指定電子郵件,您將無法重設您的密碼。您確定嗎?", + "You are registering with %(SelectedTeamName)s": "您正以 %(SelectedTeamName)s 註冊", + "Updates": "更新", + "Check for update": "檢查更新", + "Start chatting": "開始聊天", + "Start Chatting": "開始聊天", + "Click on the button below to start chatting!": "點選下面的按鈕以開始聊天!", + "Username available": "使用者名稱可用", + "Username not available": "使用者名稱不可用", + "Something went wrong!": "出了點問題!", + "This will be your account name on the homeserver, or you can pick a different server.": "這將是您在家伺服器上的帳號名稱,或是您可以挑選一個不同的伺服器。", + "If you already have a Matrix account you can log in instead.": "若您已經有 Matrix 帳號,您可以登入。", + "Your browser does not support the required cryptography extensions": "您的瀏覽器不支援需要的加密擴充", + "Not a valid Riot keyfile": "不是有效的 Riot 金鑰檔案", + "Authentication check failed: incorrect password?": "認證檢查失敗:不正確的密碼?", + "Disable Peer-to-Peer for 1:1 calls": "在 1:1 通話時停用點對點", + "Do you want to set an email address?": "您想要設定電子郵件地址嗎?", + "This will allow you to reset your password and receive notifications.": "這讓您可以重設您的密碼與接收通知。", + "To return to your account in future you need to set a password": "要在未來回到您的帳號,您需要設定密碼", + "Skip": "略過", + "Start verification": "開始驗證", + "Share without verifying": "不驗證就分享", + "Ignore request": "忽略請求", + "You added a new device '%(displayName)s', which is requesting encryption keys.": "您加入了新裝置 '%(displayName)s',其將會要求加密金鑰。", + "Your unverified device '%(displayName)s' is requesting encryption keys.": "您未驗證的裝置 '%(displayName)s' 正在請求加密金鑰。", + "Encryption key request": "加密金鑰請求", + "Add a widget": "新增小工具", + "Allow": "允許", + "and %(count)s others...": { + "other": "與其他 %(count)s 個……", + "one": "與其他 1 個……" + }, + "Cannot add any more widgets": "無法新增更多的小工具", + "Changes colour scheme of current room": "變更目前聊天室的配色方案", + "Delete widget": "刪除小工具", + "Define the power level of a user": "定義使用者的權限等級", + "Do you want to load widget from URL:": "您想要載入小工具的 URL:", + "Edit": "編輯", + "Enable automatic language detection for syntax highlighting": "啟用語法突顯的自動語言偵測", + "Hide join/leave messages (invites/kicks/bans unaffected)": "隱藏加入/離開訊息(邀請/踢出/封鎖不受影響)", + "Integrations Error": "整合錯誤", + "Publish this room to the public in %(domain)s's room directory?": "將這個聊天室公開到 %(domain)s 的聊天室目錄中?", + "AM": "上午", + "PM": "下午", + "NOTE: Apps are not end-to-end encrypted": "注意:應用程式並未端到端加密", + "Revoke widget access": "撤銷小工具存取", + "Sets the room topic": "設定聊天室主題", + "The maximum permitted number of widgets have already been added to this room.": "這個聊天室已經有可加入的最大量的小工具了。", + "To get started, please pick a username!": "要開始,請先取一個使用者名稱!", + "Unable to create widget.": "無法建立小工具。", + "Unbans user with given id": "取消封鎖指定 ID 的使用者", + "You are not in this room.": "您不在這個聊天室內。", + "You do not have permission to do that in this room.": "您沒有在這個聊天室做這件事的權限。", + "Verifies a user, device, and pubkey tuple": "驗證使用者、裝置與公開金鑰變數組", + "Autocomplete Delay (ms):": "自動完成延遲(毫秒):", + "Loading device info...": "正在載入裝置資訊……", + "Example": "範例", + "Create": "建立", + "Featured Rooms:": "特色聊天室:", + "Featured Users:": "特色使用者:", + "Automatically replace plain text Emoji": "自動取代純文字為顏文字", + "Failed to upload image": "上傳圖片失敗", + "Hide avatars in user and room mentions": "在使用者與聊天室提及中隱藏大頭貼", + "%(widgetName)s widget added by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所新增", + "%(widgetName)s widget removed by %(senderName)s": "%(widgetName)s 由 %(senderName)s 所移除", + "Robot check is currently unavailable on desktop - please use a web browser": "機器人檢查目前在桌面端不可用 ── 請使用網路瀏覽器", + "%(widgetName)s widget modified by %(senderName)s": "%(widgetName)s 小工具已被 %(senderName)s 修改", + "Copied!": "已複製!", + "Failed to copy": "複製失敗", + "Add rooms to this community": "新增聊天室到此社群", + "Call Failed": "通話失敗", + "There are unknown devices in this room: if you proceed without verifying them, it will be possible for someone to eavesdrop on your call.": "此聊天室有未知的裝置:若您想要不驗證它們而繼續,可能會有其他人竊聽您的通話。", + "Review Devices": "審閱裝置", + "Call Anyway": "無論如何都通話", + "Answer Anyway": "無論如何都回覆", + "Call": "通話", + "Answer": "回覆", + "Who would you like to add to this community?": "您想要把誰新增到此社群內?", + "Warning: any person you add to a community will be publicly visible to anyone who knows the community ID": "警告:任何您新增到社群內的人都可以被任何知道社群 ID 的人公開看見", + "Invite new community members": "邀請新社群成員", + "Name or matrix ID": "名稱或 matrix ID", + "Invite to Community": "邀請到社群", + "Which rooms would you like to add to this community?": "您想要新增哪個聊天室到此社群?", + "Show these rooms to non-members on the community page and room list?": "在社群頁面與聊天室清單上顯示這些聊天室給非社群成員?", + "Add rooms to the community": "新增聊天室到社群", + "Room name or alias": "聊天室名稱或別名", + "Add to community": "新增到社群", + "Failed to invite the following users to %(groupId)s:": "邀請下列使用者到 %(groupId)s 失敗:", + "Failed to invite users to community": "邀請使用者到社群失敗", + "Failed to invite users to %(groupId)s": "邀請使用者到 %(groupId)s 失敗", + "Failed to add the following rooms to %(groupId)s:": "新增下列聊天室到 %(groupId)s 失敗:", + "Restricted": "限制", + "Ignored user": "已忽略的使用者", + "You are now ignoring %(userId)s": "您忽略了 %(userId)s", + "Unignored user": "未忽略的使用者", + "You are no longer ignoring %(userId)s": "您不再忽略 %(userId)s", + "%(senderName)s changed the pinned messages for the room.": "%(senderName)s 變更了聊天室的釘選訊息。", + "%(names)s and %(count)s others are typing": { + "other": "%(names)s 與其他 %(count)s 個人正在輸入", + "one": "%(names)s 與另一個人正在輸入" + }, + "Send": "傳送", + "Message Pinning": "訊息釘選", + "Disable Emoji suggestions while typing": "在輸入時停用繪文字建議", + "Hide avatar changes": "隱藏大頭貼變更", + "Hide display name changes": "隱藏顯示名稱變更", + "Disable big emoji in chat": "在聊天中停用大型繪文字", + "Mirror local video feed": "鏡射本機視訊 feed", + "Enable inline URL previews by default": "預設啟用內嵌 URL 預覽", + "Enable URL previews for this room (only affects you)": "對此聊天室啟用 URL 預覽(僅影響您)", + "Enable URL previews by default for participants in this room": "對此聊天室中的參與者預設啟用 URL 預覽", + "Delete %(count)s devices": { + "other": "刪除 %(count)s 個裝置", + "one": "刪除裝置" + }, + "Select devices": "選取裝置", + "%(senderName)s sent an image": "%(senderName)s 傳送了一張圖片", + "%(senderName)s sent a video": "%(senderName)s 傳送了一則視訊", + "%(senderName)s uploaded a file": "%(senderName)s 上傳了一個檔案", + "Disinvite this user?": "取消邀請此使用者?", + "Kick this user?": "踢除此使用者?", + "Unban this user?": "取消阻擋此使用者?", + "Ban this user?": "阻擋此使用者?", + "You will not be able to undo this change as you are demoting yourself, if you are the last privileged user in the room it will be impossible to regain privileges.": "如果您是聊天室中最後一位有特殊權限的使用者,您將無法復原此變更,因為無法再獲得特定權限。", + "Unignore": "取消忽略", + "Ignore": "忽略", + "Jump to read receipt": "跳到讀取回條", + "Mention": "提及", + "Invite": "邀請", + "User Options": "使用者選項", + "Send an encrypted reply…": "傳送加密的回覆……", + "Send a reply (unencrypted)…": "傳送回覆(未加密)……", + "Send an encrypted message…": "傳送加密的訊息……", + "Send a message (unencrypted)…": "傳送訊息(未加密)……", + "Unpin Message": "取消釘選訊息", + "Jump to message": "跳到訊息", + "No pinned messages.": "沒有已釘選的訊息。", + "Loading...": "正在載入……", + "Pinned Messages": "已釘選的訊息", + "%(duration)ss": "%(duration)s 秒", + "%(duration)sm": "%(duration)s 分鐘", + "%(duration)sh": "%(duration)s 小時", + "%(duration)sd": "%(duration)s 天", + "Online for %(duration)s": "已上線 %(duration)s", + "Idle for %(duration)s": "已閒置 %(duration)s", + "Offline for %(duration)s": "已離線 %(duration)s", + "Unknown for %(duration)s": "未知 %(duration)s", + "Unknown": "未知", + "Replying": "正在回覆", + "No rooms to show": "未顯示聊天室", + "Unnamed room": "未命名的聊天室", + "World readable": "所有人可讀", + "Guests can join": "訪客可加入", + "Remove avatar": "移除大頭貼", + "Drop here to favourite": "拖曳到這裡以加入到最愛", + "Drop here to tag direct chat": "拖曳到這裡以為聊天加上標籤", + "Drop here to restore": "拖曳到這裡以復原", + "Drop here to demote": "拖曳到這裡以降級", + "Community Invites": "社群邀請", + "You have been kicked from this room by %(userName)s.": "您已經被 %(userName)s 從此聊天室中踢除。", + "You have been banned from this room by %(userName)s.": "您已經被 %(userName)s 從此聊天室中阻擋。", + "You are trying to access a room.": "您正在嘗試存取聊天室。", + "To change the room's avatar, you must be a": "要變更聊天室的大頭貼,您必須是", + "To change the room's name, you must be a": "要變更聊天室的名稱,您必須是", + "To change the room's main address, you must be a": "要變更聊天室的主地址,您必須是", + "To change the room's history visibility, you must be a": "要變更聊天室的歷史紀錄可見度,您必須是", + "To change the permissions in the room, you must be a": "要變更聊天室中的權限,您必須是", + "To change the topic, you must be a": "要變更主題,您必須是", + "To modify widgets in the room, you must be a": "要修改聊天室中的小工具,您必須是", + "Banned by %(displayName)s": "被 %(displayName)s 阻擋", + "Members only (since the point in time of selecting this option)": "僅成員(自選取此選項開始)", + "Members only (since they were invited)": "僅成員(自他們被邀請開始)", + "Members only (since they joined)": "僅成員(自他們加入開始)", + "To send messages, you must be a": "要傳送訊息,您必須是", + "To invite users into the room, you must be a": "要邀請使用者到聊天室,您必須是", + "To configure the room, you must be a": "要設定聊天室,您必須是", + "To kick users, you must be a": "要踢除使用者,您必須是", + "To ban users, you must be a": "要阻擋使用者,您必須是", + "To remove other users' messages, you must be a": "要移除其他使用者的訊息,您必須是", + "To send events of type , you must be a": "要傳送 類型的活動,您必須是", + "Addresses": "地址", + "Invalid community ID": "無效的社群 ID", + "'%(groupId)s' is not a valid community ID": "「%(groupId)s」不是有效的社群 ID", + "Flair": "特色", + "Showing flair for these communities:": "為這些社群顯示特色:", + "This room is not showing flair for any communities": "此聊天室並未對任何社群顯示特色", + "New community ID (e.g. +foo:%(localDomain)s)": "新社群 ID(例子:+foo:%(localDomain)s)", + "URL previews are enabled by default for participants in this room.": "此聊天室已預設對參與者啟用 URL 預覽。", + "URL previews are disabled by default for participants in this room.": "此聊天室已預設對參與者停用 URL 預覽。", + "Message removed by %(userId)s": "訊息已被 %(userId)s 移除", + "Message removed": "訊息已移除", + "An email has been sent to %(emailAddress)s": "電子郵件已傳送給 %(emailAddress)s", + "A text message has been sent to %(msisdn)s": "文字訊息已傳送給 %(msisdn)s", + "Username on %(hs)s": "在 %(hs)s 上的使用者名稱", + "%(serverName)s Matrix ID": "%(serverName)s Matrix ID", + "Remove from community": "從社群中移除", + "Disinvite this user from community?": "從社群取消邀請此使用者?", + "Remove this user from community?": "從社群移除此使用者?", + "Failed to withdraw invitation": "撤回邀請失敗", + "Failed to remove user from community": "從社群移除使用者失敗", + "Filter community members": "過濾社群成員", + "Flair will appear if enabled in room settings": "若在聊天室設定內啟用將會顯示特色", + "Flair will not appear": "不會顯示特色", + "Are you sure you want to remove '%(roomName)s' from %(groupId)s?": "您確定您想要從 %(groupId)s 移除「%(roomName)s」嗎?", + "Removing a room from the community will also remove it from the community page.": "從社群移除聊天室同時也會將其從社群頁面中移除。", + "Failed to remove room from community": "從社群中移除聊天室失敗", + "Failed to remove '%(roomName)s' from %(groupId)s": "從 %(groupId)s 移除「%(roomName)s」失敗", + "The visibility of '%(roomName)s' in %(groupId)s could not be updated.": "在 %(groupId)s 中的「%(roomName)s」能見度無法更新。", + "Visibility in Room List": "在聊天室清單中的能見度", + "Visible to everyone": "對所有人可見", + "Only visible to community members": "僅對社群成員可見", + "Filter community rooms": "過濾社群聊天室", + "Something went wrong when trying to get your communities.": "當嘗試取得您的社群時發生錯誤。", + "Display your community flair in rooms configured to show it.": "在設定了顯示特色的聊天室中顯示您的社群特色。", + "You're not currently a member of any communities.": "您目前不是任何社群的成員。", + "Delete Widget": "刪除小工具", + "Deleting a widget removes it for all users in this room. Are you sure you want to delete this widget?": "刪除小工具會將它從此聊天室中所有使用者的收藏中移除。您確定您要刪除這個小工具嗎?", + "Minimize apps": "最小化應用程式", + "Communities": "社群", + "%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s", + "%(severalUsers)sjoined %(count)s times": { + "other": "%(severalUsers)s 加入了 %(count)s 次", + "one": "%(severalUsers)s 加入了" + }, + "%(oneUser)sjoined %(count)s times": { + "other": "%(oneUser)s 加入了 %(count)s 次", + "one": "%(oneUser)s 加入了" + }, + "%(severalUsers)sleft %(count)s times": { + "other": "%(severalUsers)s 離開了 %(count)s 次", + "one": "%(severalUsers)s 離開了" + }, + "%(oneUser)sleft %(count)s times": { + "other": "%(oneUser)s 離開了 %(count)s 次", + "one": "%(oneUser)s 離開了" + }, + "%(severalUsers)sjoined and left %(count)s times": { + "other": "%(severalUsers)s 加入並離開了 %(count)s 次", + "one": "%(severalUsers)s 加入並離開了" + }, + "%(oneUser)sjoined and left %(count)s times": { + "other": "%(oneUser)s 加入並離開了 %(count)s 次", + "one": "%(oneUser)s 加入並離開了" + }, + "%(severalUsers)sleft and rejoined %(count)s times": { + "other": "%(severalUsers)s 離開並重新加入了 %(count)s 次", + "one": "%(severalUsers)s 離開並重新加入了" + }, + "%(oneUser)sleft and rejoined %(count)s times": { + "other": "%(oneUser)s 離開並重新加入了 %(count)s 次", + "one": "%(oneUser)s 離開並重新加入了" + }, + "%(severalUsers)srejected their invitations %(count)s times": { + "other": "%(severalUsers)s 回絕了他們的邀請 %(count)s 次", + "one": "%(severalUsers)s 回絕了他們的邀請" + }, + "%(oneUser)srejected their invitation %(count)s times": { + "other": "%(oneUser)s 回絕了他們的邀請 %(count)s 次", + "one": "%(oneUser)s 回絕了他們的邀請" + }, + "%(severalUsers)shad their invitations withdrawn %(count)s times": { + "other": "%(severalUsers)s 撤回了他們的邀請 %(count)s 次", + "one": "%(severalUsers)s 撤回了他們的邀請" + }, + "%(oneUser)shad their invitation withdrawn %(count)s times": { + "other": "%(oneUser)s 撤回了他們的邀請 %(count)s 次", + "one": "%(oneUser)s 撤回了他們的邀請" + }, + "were invited %(count)s times": { + "other": "被邀請了 %(count)s 次", + "one": "被邀請了" + }, + "was invited %(count)s times": { + "other": "被邀請了 %(count)s 次", + "one": "被邀請了" + }, + "were banned %(count)s times": { + "other": "被阻擋了 %(count)s 次", + "one": "被阻擋了" + }, + "was banned %(count)s times": { + "other": "被阻擋了 %(count)s 次", + "one": "被阻擋了" + }, + "were unbanned %(count)s times": { + "other": "被取消阻擋了 %(count)s 次", + "one": "被取消阻擋了" + }, + "was unbanned %(count)s times": { + "other": "被取消阻擋了 %(count)s 次", + "one": "被取消阻擋了" + }, + "were kicked %(count)s times": { + "other": "被踢除了 %(count)s 次", + "one": "被踢除了" + }, + "was kicked %(count)s times": { + "other": "被踢除了 %(count)s 次", + "one": "被踢除了" + }, + "%(severalUsers)schanged their name %(count)s times": { + "other": "%(severalUsers)s 變更了他們的名稱 %(count)s 次", + "one": "%(severalUsers)s 變更了他們的名稱" + }, + "%(oneUser)schanged their name %(count)s times": { + "other": "%(oneUser)s 變更了他們的名稱 %(count)s 次", + "one": "%(oneUser)s 變更了他們的名稱" + }, + "%(severalUsers)schanged their avatar %(count)s times": { + "other": "%(severalUsers)s 變更了他們的大頭貼 %(count)s 次", + "one": "%(severalUsers)s 變更了他們的大頭貼" + }, + "%(oneUser)schanged their avatar %(count)s times": { + "other": "%(oneUser)s 變更了他們的大頭貼 %(count)s 次", + "one": "%(oneUser)s 變更了他們的大頭貼" + }, + "%(items)s and %(count)s others": { + "other": "%(items)s 與其他 %(count)s 個", + "one": "%(items)s 與其他一個" + }, + "collapse": "摺疊", + "expand": "展開", + "Custom of %(powerLevel)s": "自訂 %(powerLevel)s", + "And %(count)s more...": { + "other": "與更多 %(count)s 個……" + }, + "Matrix ID": "Matrix ID", + "Matrix Room ID": "Matrix 聊天室 ID", + "email address": "電子郵件地址", + "Try using one of the following valid address types: %(validTypesList)s.": "嘗試使用下列有效地地址格式中的其中一個:%(validTypesList)s。", + "You have entered an invalid address.": "您輸入了無效的地址。", + "Community IDs may only contain characters a-z, 0-9, or '=_-./'": "社群 ID 只能包含 a-z, 0-9, or '=_-./' 等字元", + "Something went wrong whilst creating your community": "建立社群時發生問題", + "Create Community": "建立社群", + "Community Name": "社群名稱", + "Community ID": "社群 ID", + "example": "範例", + "Advanced options": "進階選項", + "Block users on other matrix homeservers from joining this room": "阻擋在其他 matrix 家伺服器的使用者加入此聊天室", + "This setting cannot be changed later!": "這個設定無法在之後變更!", + "

HTML for your community's page

\n

\n Use the long description to introduce new members to the community, or distribute\n some important links\n

\n

\n You can even use 'img' tags\n

\n": "

您社群頁面的 HTML

\n

\n 使用長描述來為社群的新成員簡介,或是散發\n 一些重要連結\n

\n

\n 您甚至可以使用 'img' 標籤\n

\n", + "Add rooms to the community summary": "新增聊天室到社群摘要中", + "Which rooms would you like to add to this summary?": "您想要新增哪個聊天室到此摘要中?", + "Add to summary": "新增到摘要", + "Failed to add the following rooms to the summary of %(groupId)s:": "新增以下聊天室到 %(groupId)s 的摘要中失敗:", + "Add a Room": "新增聊天室", + "Failed to remove the room from the summary of %(groupId)s": "從 %(groupId)s 的摘要中移除聊天室失敗", + "The room '%(roomName)s' could not be removed from the summary.": "聊天室「%(roomName)s」無法從摘要中移除。", + "Add users to the community summary": "新增使用者到社群摘要中", + "Who would you like to add to this summary?": "您想要新增誰到此摘要中?", + "Failed to add the following users to the summary of %(groupId)s:": "新增下列使用者到 %(groupId)s 的摘要中失敗:", + "Add a User": "新增使用者", + "Failed to remove a user from the summary of %(groupId)s": "從 %(groupId)s 的摘要中移除使用者失敗", + "The user '%(displayName)s' could not be removed from the summary.": "使用者「%(displayName)s」無法從摘要中移除。", + "Failed to update community": "更新社群失敗", + "Unable to accept invite": "無法接受邀請", + "Unable to reject invite": "無法回絕邀請", + "Leave Community": "離開社群", + "Leave %(groupName)s?": "離開 %(groupName)s?", + "Leave": "離開", + "Community Settings": "社群設定", + "These rooms are displayed to community members on the community page. Community members can join the rooms by clicking on them.": "這些聊天室在社群頁面上顯示給社群成員。社群成員可以透過點按它們來加入聊天室。", + "%(inviter)s has invited you to join this community": "%(inviter)s 已經邀請您加入此社群", + "You are an administrator of this community": "您是此社群的管理員", + "You are a member of this community": "您是此社群的成員", + "Your community hasn't got a Long Description, a HTML page to show to community members.
Click here to open settings and give it one!": "您的社群尚未有長描述,一個顯示給社群成員的 HTML 頁面。
點按這裡以開啟設並建立一個!", + "Long Description (HTML)": "長描述(HTML)", + "Description": "描述", + "Community %(groupId)s not found": "找不到社群 %(groupId)s", + "This Home server does not support communities": "這個家伺服器不支援社群", + "Failed to load %(groupId)s": "載入 %(groupId)s 失敗", + "Old cryptography data detected": "偵測到舊的加密資料", + "Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "偵測到來自舊版 Riot 的資料。這將會造成舊版的端到端加密失敗。在此版本中使用最近在舊版本交換的金鑰可能無法解密訊息。這也會造成與此版本的訊息交換失敗。若您遇到問題,請登出並重新登入。要保留訊息歷史,請匯出並重新匯入您的金鑰。", + "Your Communities": "您的社群", + "Error whilst fetching joined communities": "擷取已加入的社群時發生錯誤", + "Create a new community": "建立新社群", + "Create a community to group together users and rooms! Build a custom homepage to mark out your space in the Matrix universe.": "建立社群以將使用者與聊天室湊成一組!建立自訂的首頁以在 Matrix 宇宙中標出您的空間。", + "%(count)s Resend all or cancel all now. You can also select individual messages to resend or cancel.": { + "other": "現在重新傳送全部取消全部。您也可以選取單一訊息以重新傳送或取消。", + "one": "現在重新傳送訊息取消訊息。" + }, + "Warning": "警告", + "There's no one else here! Would you like to invite others or stop warning about the empty room?": "沒有其他人了!您想要邀請其他人停止關於空聊天室的警告嗎?", + "Light theme": "亮色主題", + "Dark theme": "暗色主題", + "Status.im theme": "Status.im 主題", + "Ignored Users": "已忽略的使用者", + "Privacy is important to us, so we don't collect any personal or identifiable data for our analytics.": "隱私對我們來說至關重要,所以我們不會收集任何私人或可辨識的資料供我們的分析使用。", + "Learn more about how we use analytics.": "得知更多關於我們如何使用分析資料的資訊。", + "An email has been sent to %(emailAddress)s. Once you've followed the link it contains, click below.": "電子郵件已傳送至 %(emailAddress)s。您必須跟隨其中包含了連結,點按下面的連結。", + "Please note you are logging into the %(hs)s server, not matrix.org.": "請注意,您正在登入 %(hs)s 伺服器,不是 matrix.org。", + "This homeserver doesn't offer any login flows which are supported by this client.": "這個家伺服器不提供任何此客戶端支援的登入流程。", + "Sign in to get started": "登入以開始", + "Ignores a user, hiding their messages from you": "忽略使用者,從您這裡隱藏他們的訊息", + "Stops ignoring a user, showing their messages going forward": "停止忽略使用者,顯示他們的訊息", + "Notify the whole room": "通知整個聊天室", + "Room Notification": "聊天室通知", + "The information being sent to us to help make Riot.im better includes:": "協助讓 Riot.im 變得更好的傳送給我們的資訊包含了:", + "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "這個頁面包含了可識別的資訊,如聊天室、使用者或群組 ID,這些資料會在傳到伺服器前被刪除。", + "The platform you're on": "您使用的平臺是", + "The version of Riot.im": "Riot.im 的版本", + "Whether or not you're logged in (we don't record your user name)": "您是否登入(我們不會紀錄您的使用者名稱)", + "Your language of choice": "您選擇的語言", + "Which officially provided instance you are using, if any": "您正在使用的任何官方實體,如果有的話", + "Whether or not you're using the Richtext mode of the Rich Text Editor": "您是否正在使用豐富文字編輯器的豐富文字模式", + "Your homeserver's URL": "您的家伺服器 URL", + "Your identity server's URL": "您的驗證伺服器 URL", + "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s", + "This room is not public. You will not be able to rejoin without an invite.": "這個聊天室並未公開。您在沒有邀請的情況下將無法重新加入。", + "Community IDs cannot be empty.": "社群 ID 不能為空。", + "Show devices, send anyway or cancel.": "顯示裝置無論如何都要傳送取消。", + "In reply to ": "回覆給 ", + "%(oldDisplayName)s changed their display name to %(displayName)s.": "%(oldDisplayName)s 變更了他的顯示名稱為 %(displayName)s 。", + "Failed to set direct chat tag": "設定直接聊天標籤失敗", + "Failed to remove tag %(tagName)s from room": "從聊天室移除標籤 %(tagName)s 失敗", + "Failed to add tag %(tagName)s to room": "新增標籤 %(tagName)s 到聊天室失敗", + "Did you know: you can use communities to filter your Riot.im experience!": "您知道嗎:您可以使用社群來強化您的 Riot.im 使用體驗!", + "To set up a filter, drag a community avatar over to the filter panel on the far left hand side of the screen. You can click on an avatar in the filter panel at any time to see only the rooms and people associated with that community.": "要設定過濾器,拖曳社群大頭貼到位於螢幕最左邊的過濾器面板。您可以在任何時候在過濾器面板中的大頭貼上點按以檢視與該社群關聯的聊天室與夥伴。", + "Clear filter": "清除過濾器", + "Disable Community Filter Panel": "停用社群過濾面板", + "Your key share request has been sent - please check your other devices for key share requests.": "您的金鑰分享請求已傳送,請檢查您的其他裝置來看看金鑰分享請求。", + "Key share requests are sent to your other devices automatically. If you rejected or dismissed the key share request on your other devices, click here to request the keys for this session again.": "金鑰分享請求已自動傳送到您的其他裝置。若您在您的其他裝置上回絕了金鑰分享請求,點按這裡以再次請求這個工作階段的金鑰。", + "If your other devices do not have the key for this message you will not be able to decrypt them.": "若您的其他裝置沒有這個訊息的金鑰,您將無法將它們解密。", + "Key request sent.": "金鑰請求已傳送。", + "Re-request encryption keys from your other devices.": "從您的其他裝置重新請求加密金鑰。", + "%(user)s is a %(userRole)s": "%(user)s 是 %(userRole)s", + "Code": "代碼", + "Debug Logs Submission": "除錯訊息傳送", + "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "如果您透過 GitHub 來回報錯誤,除錯訊息可以用來追蹤問題。除錯訊息包含應用程式的使用資料,包括您的使用者名稱、您所造訪的房間/群組的 ID 或別名、其他使用者的使用者名稱等,其中不包含訊息本身。", + "Submit debug logs": "傳送除錯訊息", + "Opens the Developer Tools dialog": "開啟開發者工具對話視窗", + "Seen by %(displayName)s (%(userName)s) at %(dateTime)s": "被 %(displayName)s (%(userName)s) 於 %(dateTime)s 看過", + "Unable to join community": "無法加入社群", + "Unable to leave community": "無法離開社群", + "Changes made to your community name and avatar might not be seen by other users for up to 30 minutes.": "對您的社群的名稱大頭貼的變更可能在最多30分鐘內不會被其他使用者看到。", + "Join this community": "加入此社群", + "Leave this community": "離開此社群", + "Stickerpack": "貼圖包", + "You don't currently have any stickerpacks enabled": "您目前未啟用任何貼圖包", + "Add a stickerpack": "新增貼圖包", + "Hide Stickers": "隱藏貼圖", + "Show Stickers": "顯示貼圖", + "Who can join this community?": "誰可以加入此社群?", + "Everyone": "每個人", + "Fetching third party location failed": "抓取第三方位置失敗", + "A new version of Riot is available.": "Riot 釋出了新版本。", + "I understand the risks and wish to continue": "我了解這些風險並願意繼續", + "Couldn't load home page": "無法載入首頁", + "Send Account Data": "傳送帳號資料", + "Advanced notification settings": "進階通知設定", + "Uploading report": "上傳報告", + "Sunday": "星期日", + "Notification targets": "通知目標", + "Today": "今天", + "Failed to get protocol list from Home Server": "無法從主機伺服器取得協定清單", + "You are not receiving desktop notifications": "你將不會收到桌面通知", + "Friday": "星期五", + "Update": "更新", + "Unable to fetch notification target list": "無法抓取通知的目標清單", + "Add an email address above to configure email notifications": "在上面新增電子郵件以設定電子郵件通知", + "Expand panel": "展開面板", + "On": "開啟", + "%(count)s Members": { + "other": "%(count)s 個成員", + "one": "%(count)s 個成員" + }, + "Filter room names": "過濾聊天室名稱", + "Changelog": "變更記錄", + "Waiting for response from server": "正在等待來自伺服器的回應", + "Uploaded on %(date)s by %(user)s": "由 %(user)s 在 %(date)s 上傳", + "Send Custom Event": "傳送自訂事件", + "All notifications are currently disabled for all targets.": "目前所有的通知功能已停用。", + "Failed to send logs: ": "無法傳送除錯訊息: ", + "delete the alias.": "刪除別名。", + "To return to your account in future you need to set a password": "未來若需回來使用您的帳號,您需要 設定密碼", + "Forget": "忘記", + "Hide panel": "隱藏面板", + "You cannot delete this image. (%(code)s)": "你不能刪除這個圖片。(%(code)s)", + "Cancel Sending": "取消傳送", + "This Room": "這個聊天室", + "The Home Server may be too old to support third party networks": "主機伺服器可能太老舊無法支援第三方網路", + "Resend": "重新傳送", + "Room not found": "找不到聊天室", + "Messages containing my display name": "訊息中有包含我的顯示名稱", + "Messages in one-to-one chats": "在一對一聊天中的訊息", + "Unavailable": "無法取得", + "Error saving email notification preferences": "儲存電子郵件通知偏好設定時出錯", + "View Decrypted Source": "檢視解密的來源", + "Failed to update keywords": "無法更新關鍵字", + "Notes:": "備註:", + "remove %(name)s from the directory.": "自目錄中移除 %(name)s。", + "Notifications on the following keywords follow rules which can’t be displayed here:": "以下關鍵字依照規則其通知將不會顯示在此:", + "Safari and Opera work too.": "SafariOpera 也可以運作。", + "Please set a password!": "請設定密碼!", + "You have successfully set a password!": "您已經成功設定密碼!", + "An error occurred whilst saving your email notification preferences.": "在儲存你的電子郵件通知偏好時發生錯誤。", + "Explore Room State": "探索聊天室狀態", + "Source URL": "來源網址", + "Messages sent by bot": "由機器人送出的訊息", + "Filter results": "過濾結果", + "Members": "成員", + "No update available.": "沒有可用的更新。", + "Noisy": "吵鬧", + "Files": "檔案", + "Collecting app version information": "收集應用程式版本資訊", + "Delete the room alias %(alias)s and remove %(name)s from the directory?": "刪除聊天室別名 %(alias)s 並從目錄移除 %(name)s?", + "This will allow you to return to your account after signing out, and sign in on other devices.": "這讓您可以在登入後回到您帳號,並在其他裝置上登入。", + "Enable notifications for this account": "本帳號啟用通知", + "Directory": "目錄", + "Invite to this community": "邀請至此社群", + "Search for a room": "搜尋聊天室", + "Messages containing keywords": "訊息包含 關鍵字", + "When I'm invited to a room": "當我被邀請加入聊天室", + "Tuesday": "星期二", + "Enter keywords separated by a comma:": "輸入以逗號隔開的關鍵字:", + "Forward Message": "轉寄訊息", + "You have successfully set a password and an email address!": "您已經成功設定密碼與電子郵件地址!", + "Remove %(name)s from the directory?": "自目錄中移除 %(name)s?", + "Riot uses many advanced browser features, some of which are not available or experimental in your current browser.": "Riot 使用了許多先進的瀏覽器功能,有些在你目前所用的瀏覽器上無法使用或僅為實驗中的功能。", + "Developer Tools": "開發者工具", + "Preparing to send logs": "準備傳送除錯訊息", + "Enable desktop notifications": "啟用桌面通知", + "Explore Account Data": "探索帳號資料", + "All messages (noisy)": "所有訊息(吵鬧)", + "Saturday": "星期六", + "Remember, you can always set an email address in user settings if you change your mind.": "記住,如果您改變心意了,您永遠可以在使用者設定中設定電子郵件地址。", + "Direct Chat": "私人聊天", + "The server may be unavailable or overloaded": "伺服器可能無法使用或是超過負載", + "Reject": "拒絕", + "Failed to set Direct Message status of room": "無法設定聊天室的私人訊息狀態", + "Monday": "星期一", + "Remove from Directory": "自目錄中移除", + "Enable them now": "現在啟用", + "Messages containing my user name": "訊息中有我的使用者名稱", + "Toolbox": "工具箱", + "Collecting logs": "收集記錄", + "more": "更多", + "GitHub issue link:": "GitHub 問題回報連結:", + "You must specify an event type!": "您必須指定事件類型!", + "(HTTP status %(httpStatus)s)": "(HTTP 狀態 %(httpStatus)s)", + "All Rooms": "所有的聊天室", + "What's New": "新鮮事", + "Please install Chrome or Firefox for the best experience.": "請安裝 ChromeFirefox 以取得最佳體驗。", + "Failed to get public room list": "無法取得公開的聊天室清單", + "Send logs": "傳送記錄", + "All messages": "所有訊息", + "Call invitation": "通話邀請", + "Downloading update...": "正在下䵧更新...", + "State Key": "狀態金鑰", + "Failed to send custom event.": "傳送自訂式件失敗。", + "What's new?": "有什麼新聞?", + "Notify me for anything else": "所有消息都通知我", + "View Source": "檢視來源", + "Keywords": "關鍵字", + "Can't update user notification settings": "無法更新使用者的通知設定", + "Notify for all other messages/rooms": "通知其他所有的訊息/聊天室", + "Unable to look up room ID from server": "無法從伺服器找到聊天室 ID", + "Couldn't find a matching Matrix room": "不能找到符合 Matrix 的聊天室", + "Invite to this room": "邀請加入這個聊天室", + "You cannot delete this message. (%(code)s)": "你不能刪除這個訊息。(%(code)s)", + "Thursday": "星期四", + "Search…": "搜尋…", + "Logs sent": "除錯訊息已經傳送", + "Back": "返回", + "Reply": "回覆", + "Show message in desktop notification": "在桌面通知中顯示訊息", + "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "除錯訊息包含應用程式的使用資料,包括您的使用者名稱、您所造訪的房間/群組的 ID 或別名、其他使用者的使用者名稱等,其中不包含訊息本身。", + "Unhide Preview": "取消隱藏預覽", + "Unable to join network": "無法加入網路", + "You might have configured them in a client other than Riot. You cannot tune them in Riot but they still apply": "你也許不曾在其它 Riot 之外的客戶端設定它們。在 Riot 底下你無法調整它們但其仍然可用", + "Sorry, your browser is not able to run Riot.": "可惜,您的瀏覽器 無法 執行 Riot.", + "Messages in group chats": "在群組聊天中的訊息", + "Yesterday": "昨天", + "Error encountered (%(errorDetail)s).": "遇到錯誤 (%(errorDetail)s)。", + "Login": "登入", + "Low Priority": "低優先度", + "Riot does not know how to join a room on this network": "Riot 不知道如何在此網路中加入聊天室", + "Set Password": "設定密碼", + "Enable audible notifications in web client": "在網頁客戶端啟用音訊通知", + "Off": "關閉", + "#example": "#範例", + "Mentions only": "僅提及", + "Wednesday": "星期三", + "You can now return to your account after signing out, and sign in on other devices.": "您可以在登出後回到您的帳號,並在其他裝置上登入。", + "Enable email notifications": "啟用電子郵件通知", + "Event Type": "事件類型", + "Download this file": "下載這個檔案", + "Pin Message": "釘選訊息", + "Failed to change settings": "變更設定失敗", + "View Community": "檢視社群", + "Event sent!": "事件已傳送!", + "Event Content": "事件內容", + "Thank you!": "感謝您!", + "Quote": "引用", + "Collapse panel": "摺疊面板", + "With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "您目前的瀏覽器,其應用程式的外觀和感覺可能完全不正確,有些或全部功能可以無法使用。如果您仍想要繼續嘗試,可以繼續,但必須自行承擔後果!", + "Checking for an update...": "正在檢查更新...", + "There are advanced notifications which are not shown here": "有些進階的通知並未在此顯示", + "Missing roomId.": "缺少 roomid。", + "Picture": "圖片", + "Every page you use in the app": "您在應用程式內使用的每一頁", + "e.g. ": "範例:", + "Your User Agent": "您的使用者代理字串", + "Your device resolution": "您的裝置解析度", + "Always show encryption icons": "總是顯示加密圖示", + "At this time it is not possible to reply with a file so this will be sent without being a reply.": "目前無法使用檔案回覆,所以這次傳送並不會以回覆的形式出現。", + "Unable to reply": "無法回覆", + "At this time it is not possible to reply with an emote.": "目前無法使用表情符號回覆。", + "Popout widget": "彈出式小工具", + "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "無法載入要回覆的活動,它可能不存在或是您沒有權限檢視它。", + "Riot bugs are tracked on GitHub: create a GitHub issue.": "Riot 的臭蟲在 GitHub 上追蹤:在 GitHub 上建立議題。", + "Log out and remove encryption keys?": "登出或移除加密金鑰?", + "Send Logs": "傳送紀錄", + "Clear Storage and Sign Out": "清除儲存的東西並登出", + "Refresh": "重新整理", + "We encountered an error trying to restore your previous session.": "我們在嘗試復原您先前的工作階段時遇到了一點錯誤。", + "Clearing your browser's storage may fix the problem, but will sign you out and cause any encrypted chat history to become unreadable.": "清除您瀏覽器的儲存的東西也許可以修復問題,但會將您登出並造成任何已加密的聊天都無法讀取。", + "Collapse Reply Thread": "摺疊回覆討論串", + "Enable widget screenshots on supported widgets": "在支援的小工具上啟用小工具螢幕快照", + "Send analytics data": "傳送分析資料", + "Muted Users": "已靜音的使用者", + "e.g. %(exampleValue)s": "範例:%(exampleValue)s", + "Reload widget": "重新載入小工具", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie (please see our Cookie Policy).": "請透過傳送匿名使用資料來協助改善 Riot.im。這將會使用 cookie(請參見我們的 Cookie 政策)。", + "Please help improve Riot.im by sending anonymous usage data. This will use a cookie.": "請透過傳送匿名使用資料來協助改善 Riot.im。這將會使用 cookie。", + "Yes, I want to help!": "是的,我想要協助!", + "Warning: This widget might use cookies.": "警告:此小工具可能會使用 cookies。", + "Failed to indicate account erasure": "指示帳號刪除失敗", + "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "這將會讓您的帳號永久無法使用。您將無法登入,且也沒有人可以重新註冊一個相同的使用者 ID。這將會造成您的帳號離開所有已參與的聊天室,並將會從識別伺服器上移除您帳號的所有詳細資訊。此動作是不可逆的。", + "Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "停用您的帳號預設不會讓我們忘記您已經傳送過的訊息。若您想要我們忘記您的訊息,請在下面的方框中打勾。", + "Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "在 Matrix 中的訊息可見度類似於電子郵件。我們忘記您的訊息代表您傳送過的訊息不會有任何新的或未註冊的使用者看到,但已註冊且已經看過這些訊息的使用者還是看得到他們的副本。", + "Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "請在我的帳號停用時忘記我傳送過的所有訊息(警告:這將會造成未來的使用者無法看見完整的對話紀錄)", + "To continue, please enter your password:": "要繼續,請輸入您的密碼:", + "password": "密碼", + "Can't leave Server Notices room": "無法離開伺服器通知聊天室", + "This room is used for important messages from the Homeserver, so you cannot leave it.": "這個聊天室是用於發佈從家伺服器而來的重要訊息,所以您不能離開它。", + "Terms and Conditions": "條款與細則", + "To continue using the %(homeserverDomain)s homeserver you must review and agree to our terms and conditions.": "要繼續使用 %(homeserverDomain)s 家伺服器,您必須審閱並同意我們的條款與細則。", + "Review terms and conditions": "審閱條款與細則", + "To notify everyone in the room, you must be a": "為了通知每個在聊天室裡的人,您必須為", + "Encrypting": "正在加密", + "Encrypted, not sent": "已加密,未傳送", + "No Audio Outputs detected": "未偵測到音訊輸出", + "Audio Output": "音訊輸出", + "Try the app first": "先試試看應用程式", + "Share Link to User": "分享連結給使用者", + "Share room": "分享聊天室", + "Share Room": "分享聊天室", + "Link to most recent message": "連結到最近的訊息", + "Share User": "分享使用者", + "Share Community": "分享社群", + "Share Room Message": "分享聊天室訊息", + "Link to selected message": "連結到選定的訊息", + "COPY": "複製", + "Share Message": "分享訊息", + "Jitsi Conference Calling": "Jitsi 會議通話", + "In encrypted rooms, like this one, URL previews are disabled by default to ensure that your homeserver (where the previews are generated) cannot gather information about links you see in this room.": "在加密的聊天室中(這個就是),URL 預覽會預設停用以確保您的家伺服器(預覽生成的地方)無法在這個聊天室中收集關於您看到的連結的資訊。", + "When someone puts a URL in their message, a URL preview can be shown to give more information about that link such as the title, description, and an image from the website.": "當某人在他們的訊息中放置 URL 時,URL 預覽可以顯示如標題、描述與網頁上的圖片等等來給您更多關於該連結的資訊。", + "The email field must not be blank.": "電子郵件欄不能留空。", + "The user name field must not be blank.": "使用者名稱欄不能留空。", + "The phone number field must not be blank.": "電話號碼欄不能留空。", + "The password field must not be blank.": "密碼欄不能留空。", + "Call in Progress": "進行中的通話", + "A call is already in progress!": "已有一通電話進行中!", + "You have no historical rooms": "您沒有過去的聊天室", + "You can't send any messages until you review and agree to our terms and conditions.": "您在審閱並同意我們的條款與條件前無法傳送訊息。", + "Show empty room list headings": "顯示空聊天室清單標題", + "Demote yourself?": "將自己降級?", + "Demote": "降級", + "A conference call could not be started because the intgrations server is not available": "會議通話無法啟動,因為整合伺服器不可用", + "Permission Required": "需要權限", + "You do not have permission to start a conference call in this room": "您沒有在此聊天室啟動會議通話的權限", + "This event could not be displayed": "此活動無法顯示", + "deleted": "刪除線", + "underlined": "底線", + "inline-code": "內嵌程式碼", + "block-quote": "區塊引用", + "bulleted-list": "項目符號清單", + "numbered-list": "編號清單", + "A call is currently being placed!": "目前正在撥打電話!", + "Failed to remove widget": "移除小工具失敗", + "An error ocurred whilst trying to remove the widget from the room": "嘗試從聊天室移除小工具時發生錯誤", + "Your message wasn’t sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。", + "This homeserver has hit its Monthly Active User limit": "此家伺服器達到了其每月活躍使用者限制", + "Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "您的訊息因為這個家伺服器到達了它的每月活躍使用者限制而沒有傳送出去。請聯絡您的服務管理員以繼續使用服務。", + "System Alerts": "系統警告", + "Internal room ID: ": "內部聊天室 ID: ", + "Room version number: ": "聊天室版本號: ", + "This homeserver has hit its Monthly Active User limit. Please contact your service administrator to continue using the service.": "這個家伺服器已經達到了其每月活躍使用者限制。請聯絡您的服務管理員以繼續使用服務。", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in. Please contact your service administrator to get this limit increased.": "此家伺服器已達到其每月活躍使用者限制,所以其部份使用者將會無法登入。請聯絡您的服務管理員以讓此限制增加。", + "There is a known vulnerability affecting this room.": "有一個已知的安全性漏洞影響此聊天室。", + "This room version is vulnerable to malicious modification of room state.": "此聊天室版本易受惡意修改聊天室狀態的影響。", + "Click here to upgrade to the latest room version and ensure room integrity is protected.": "點選這裡以升級到最新的聊天室版本並確保聊天室的完整性已被保護。", + "Only room administrators will see this warning": "僅聊天室管理員會看到此警告", + "Please contact your service administrator to continue using the service.": "請聯絡您的服務管理員以繼續使用服務。", + "This homeserver has hit its Monthly Active User limit.": "這個家伺服器已經到達其每月活躍使用者限制。", + "This homeserver has exceeded one of its resource limits.": "此家伺服器已經超過其中一項資源限制。", + "Please contact your service administrator to get this limit increased.": "請聯絡您的服務管理員以讓此限制增加。", + "This homeserver has hit its Monthly Active User limit so some users will not be able to log in.": "此家伺服器已經達到其每月活躍使用者限制所以某些使用者將會無法登入。", + "This homeserver has exceeded one of its resource limits so some users will not be able to log in.": "此家伺服器已超過其中一項資源限制所以某些使用者可能會無法登入。", + "Upgrade Room Version": "更新聊天室版本", + "Upgrading this room requires closing down the current instance of the room and creating a new room it its place. To give room members the best possible experience, we will:": "更新此聊天室需要關閉目前的聊天室實體並建立一個新的聊天室。為了給予聊天室成員最佳的體驗,我們將會:", + "Create a new room with the same name, description and avatar": "使用同樣的名稱、描述與大頭貼建立新聊天室", + "Update any local room aliases to point to the new room": "更新任何本地聊天室別名以指向新的聊天室", + "Stop users from speaking in the old version of the room, and post a message advising users to move to the new room": "讓使用者在舊版聊天室停止發言,並張貼訊息建議使用者移動到新的聊天室", + "Put a link back to the old room at the start of the new room so people can see old messages": "在新聊天室的開始處放置連回舊聊天室的連結,這樣夥伴們就可以看到舊的訊息", + "Your message wasn't sent because this homeserver has hit its Monthly Active User Limit. Please contact your service administrator to continue using the service.": "您的訊息未被傳送,因為其家伺服器已經達到了其每月活躍使用者限制。請聯絡您的服務管理員以繼續使用服務。", + "Your message wasn't sent because this homeserver has exceeded a resource limit. Please contact your service administrator to continue using the service.": "您的訊息未傳送,因為其家伺服器已超過一項資源限制。請聯絡您的服務管理員以繼序使用服務。", + "Please contact your service administrator to continue using this service.": "請聯絡您的服務管理員以繼續使用此服務。", + "Increase performance by only loading room members on first view": "透過僅在第一次檢視時載入聊天室成員來增加效能", + "Lazy loading members not supported": "不支援延遲載入成員", + "Lazy loading is not supported by your current homeserver.": "您目前的家伺服器不支援延遲載入。", + "Sorry, your homeserver is too old to participate in this room.": "抱歉,您的家伺服器太舊了,所以無法參與此聊天室。", + "Please contact your homeserver administrator.": "請聯絡您的家伺服器的管理員。", + "Legal": "法律", + "This room has been replaced and is no longer active.": "此已被取代的聊天室已不再活躍。", + "The conversation continues here.": "對話在此繼續。", + "Upgrade room to version %(ver)s": "將聊天室升級為版本 %(ver)s", + "This room is a continuation of another conversation.": "此聊天室是另一個對話的延續。", + "Click here to see older messages.": "點選這裡以檢視較舊的訊息。", + "Failed to upgrade room": "升級聊天室失敗", + "The room upgrade could not be completed": "聊天室升級可能不完整", + "Upgrade this room to version %(version)s": "升級此聊天室到版本 %(version)s", + "Forces the current outbound group session in an encrypted room to be discarded": "強制目前在已加密的聊天室中的外發群組工作階段丟棄", + "Error Discarding Session": "丟棄工作階段錯誤", + "Registration Required": "需要註冊", + "You need to register to do this. Would you like to register now?": "您必須註冊以繼續。您想要現在註冊嗎?", + "Unable to query for supported registration methods": "無法查詢支援的註冊方式", + "Unable to connect to Homeserver. Retrying...": "無法連線到家伺服器。正在重試……", + "%(senderName)s added %(count)s %(addedAddresses)s as addresses for this room.": { + "one": "%(senderName)s 新增了 %(addedAddresses)s 為此聊天室的位置。", + "other": "%(senderName)s 新增了 %(addedAddresses)s 為此聊天室的位置。" + }, + "%(senderName)s removed %(count)s %(removedAddresses)s as addresses for this room.": { + "one": "%(senderName)s 移除了 %(removedAddresses)s 為此聊天室的位置。", + "other": "%(senderName)s 移除了 %(removedAddresses)s 為此聊天室的位置。" + }, + "%(senderName)s added %(addedAddresses)s and removed %(removedAddresses)s as addresses for this room.": "%(senderName)s 新增了 %(addedAddresses)s 並移除了 %(removedAddresses)s 為此聊天室的位置。", + "%(senderName)s set the main address for this room to %(address)s.": "%(senderName)s 為此聊天室設定了主要位置 %(address)s。", + "%(senderName)s removed the main address for this room.": "%(senderName)s 移除了此聊天室的主要位置。", + "Before submitting logs, you must create a GitHub issue to describe your problem.": "在遞交紀錄檔前,您必須建立 GitHub 議題以描述您的問題。", + "What GitHub issue are these logs for?": "這些紀錄檔的 GitHub 議題是什麼?", + "Riot now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!": "Riot 現在僅使用三分之一到五分之一的記憶體,僅在需要時才會載入其他使用者的資訊。請等待我們與伺服器重新同步!", + "Updating Riot": "正在更新 Riot", + "

HTML for your community's page

\r\n

\r\n Use the long description to introduce new members to the community, or distribute\r\n some important links\r\n

\r\n

\r\n You can even use 'img' tags\r\n

\r\n": "

您社群頁面的 HTML

\n

\n 使用長描述以向新成員介紹社群,或是散佈\n 一些重要連結\n

\n

\n 您也可以使用「img」標籤\n

\n", + "Submit Debug Logs": "遞交除錯紀錄", + "An email address is required to register on this homeserver.": "在此家伺服器上註冊必須填入電子郵件。", + "A phone number is required to register on this homeserver.": "在此伺服器上註冊必須填入電話號碼。", + "You've previously used Riot on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, Riot needs to resync your account.": "您之前曾在 %(host)s 上使用 Riot 並啟用成員列表的延遲載入。在此版本中延遲載入已停用。由於本機快取在這兩個設定間不相容,Riot 必須重新同步您的帳號。", + "If the other version of Riot is still open in another tab, please close it as using Riot on the same host with both lazy loading enabled and disabled simultaneously will cause issues.": "若其他分頁仍有不同版本的 Riot,請將其關閉,因為在同一個主機上同時啟用和停用延遲載入將會發生問題。", + "Incompatible local cache": "不相容的本機快取", + "Clear cache and resync": "清除快取並重新同步", + "Please accept all of the policies": "請接受所有政策", + "Please review and accept the policies of this homeserver:": "請審閱並接受此家伺服器的政策:", + "Add some now": "現在就新增一些", + "Joining room...": "正在加入聊天室……", + "%(appName)s via %(browserName)s on %(osName)s": "在 %(osName)s 的 %(browserName)s 上的 %(appName)s", + "Unknown device": "未知裝置", + "You need to be using HTTPS to place a screen-sharing call.": "你需要使用 HTTPS 來撥打螢幕分享的通話。", + "Riot Desktop on %(platformName)s": "%(platformName)s 的 Riot 桌面版", + "Riot is not supported on mobile web. Install the app?": "Riot 不支援行動版網頁,要安裝應用程式嗎?", + "Welcome to Riot.im": "歡迎來到 Riot.im", + "Decentralised, encrypted chat & collaboration powered by [matrix]": "去中心化、保密的聊天與協作,由 [matrix] 提供", + "Search the room directory": "搜尋聊天室目錄", + "Chat with Riot Bot": "與 Riot 機器人聊天", + "Get started with some tips from Riot Bot!": "從 Riot 機器人了解使用 Riot 的訣竅吧!", + "General discussion about Matrix and Riot": "Matrix 與 Riot 的一般討論", + "Discussion of all things Matrix!": "所有 Matrix 相關的一般討論", + "Riot/Web & Desktop chat": "Riot/Web 與桌面版的討論", + "Riot/iOS & matrix-ios-sdk chat": "Riot/iOS 與 matrix-ios-sdk 的討論", + "Riot/Android & matrix-android-sdk chat": "Riot/Android 與 matrix-android-sdk 的討論", + "Matrix technical discussions": "Matrix 技術討論", + "Running Matrix services": "關於 Matrix 服務營運", + "Community-run support for Synapse": "Synapse 社群支援聊天室", + "Admin support for Dendrite": "Dendrite 管理員支援聊天室", + "Announcements about Synapse releases": "Synapse 發行公告", + "Support for those using and running matrix-appservice-irc": "matrix-appservice-irc 使用者與營運的支援", + "Building services on Matrix": "關於在 Matrix 上開發服務", + "Support for those using the Matrix spec": "Matrix 規格使用者支援聊天室", + "Design and implementation of E2E in Matrix": "Matrix 中點對點加密的設計與實作討論", + "Implementing VR services with Matrix": "使用 Matrix 實作虛擬實境服務的討論", + "Implementing VoIP services with Matrix": "使用 Matrix 實作 VoIP 服務的討論", + "Discussion of the Identity Service API": "識別服務 API 的討論", + "Support for those using, running and writing other bridges": "使用、執行與撰寫其他橋接服務的支援聊天室", + "Contributing code to Matrix and Riot": "關於貢獻 Matrix 和 Riot", + "Dev chat for the Riot/Web dev team": "Riot/Web 開發團隊的開發聊天室", + "Dev chat for the Dendrite dev team": "Dendrite 開發團隊的開發聊天室", + "Lots of rooms already exist in Matrix, linked to existing networks (Slack, IRC, Gitter etc) or independent. Check out the directory!": "Matrix 中已有許多聊天室,連結到已有的網路(Slack、IRC 與 Gitter 等等)或是獨立的網路。來看看聊天室目錄吧!", + "You can use the custom server options to sign into other Matrix servers by specifying a different Home server URL.
This allows you to use Riot with an existing Matrix account on a different home server.

You can also set a custom identity server but you won't be able to invite users by email address, or be invited by email address yourself.": "您可以使用自訂的伺服器選項,並指定不同的家伺服器 URL 來登入其他的 Matrix 伺服器。
這讓您可以在不同的伺服器上以既有的 Matrix 帳號使用 Riot。

您也可以設定一個自訂的識別伺服器,但您可能無法透過電子郵件地址來邀請使用者,或是讓別人透過電子郵件邀請您。", + "Co-ordination for Riot translators": "Riot 翻譯的協作" +} \ No newline at end of file diff --git a/riot/img/50e2c2.png b/riot/img/50e2c2.png new file mode 100644 index 0000000..ee0f855 Binary files /dev/null and b/riot/img/50e2c2.png differ diff --git a/riot/img/76cfa6.png b/riot/img/76cfa6.png new file mode 100644 index 0000000..de1ea60 Binary files /dev/null and b/riot/img/76cfa6.png differ diff --git a/riot/img/80cef4.png b/riot/img/80cef4.png new file mode 100644 index 0000000..637d03f Binary files /dev/null and b/riot/img/80cef4.png differ diff --git a/riot/img/admin.svg b/riot/img/admin.svg new file mode 100644 index 0000000..7ea7459 --- /dev/null +++ b/riot/img/admin.svg @@ -0,0 +1,17 @@ + + + + icons_owner + Created with sketchtool. + + + + + + + + + + + + diff --git a/riot/img/attach.png b/riot/img/attach.png new file mode 100644 index 0000000..1bcb700 Binary files /dev/null and b/riot/img/attach.png differ diff --git a/riot/img/avatar-error.svg b/riot/img/avatar-error.svg new file mode 100644 index 0000000..c5e1689 --- /dev/null +++ b/riot/img/avatar-error.svg @@ -0,0 +1,15 @@ + + + + 5EF602F6-A36C-41EE-BAEC-50801DFD5492 + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/button-md-false.png b/riot/img/button-md-false.png new file mode 100644 index 0000000..6debbcc Binary files /dev/null and b/riot/img/button-md-false.png differ diff --git a/riot/img/button-md-false.svg b/riot/img/button-md-false.svg new file mode 100644 index 0000000..6414933 --- /dev/null +++ b/riot/img/button-md-false.svg @@ -0,0 +1,29 @@ + + + + D335F9E8-C813-47D7-B1BE-C8DEF2C8214F + Created with sketchtool. + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-md-false@2x.png b/riot/img/button-md-false@2x.png new file mode 100644 index 0000000..497f538 Binary files /dev/null and b/riot/img/button-md-false@2x.png differ diff --git a/riot/img/button-md-false@3x.png b/riot/img/button-md-false@3x.png new file mode 100644 index 0000000..1184e6b Binary files /dev/null and b/riot/img/button-md-false@3x.png differ diff --git a/riot/img/button-md-true.png b/riot/img/button-md-true.png new file mode 100644 index 0000000..2e39c55 Binary files /dev/null and b/riot/img/button-md-true.png differ diff --git a/riot/img/button-md-true.svg b/riot/img/button-md-true.svg new file mode 100644 index 0000000..2acc4f6 --- /dev/null +++ b/riot/img/button-md-true.svg @@ -0,0 +1,14 @@ + + + + 2A63B135-4281-4FBB-A88C-012AE22E9594 + Created with sketchtool. + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-md-true@2x.png b/riot/img/button-md-true@2x.png new file mode 100644 index 0000000..ad9067f Binary files /dev/null and b/riot/img/button-md-true@2x.png differ diff --git a/riot/img/button-md-true@3x.png b/riot/img/button-md-true@3x.png new file mode 100644 index 0000000..d615867 Binary files /dev/null and b/riot/img/button-md-true@3x.png differ diff --git a/riot/img/button-new-window.svg b/riot/img/button-new-window.svg new file mode 100644 index 0000000..dd1225e --- /dev/null +++ b/riot/img/button-new-window.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/riot/img/button-refresh.svg b/riot/img/button-refresh.svg new file mode 100644 index 0000000..b4990a2 --- /dev/null +++ b/riot/img/button-refresh.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/riot/img/button-text-block-quote-on.svg b/riot/img/button-text-block-quote-on.svg new file mode 100644 index 0000000..f8a8612 --- /dev/null +++ b/riot/img/button-text-block-quote-on.svg @@ -0,0 +1,17 @@ + + + + 3B24B8C7-64BE-4B3E-A748-94DB72E1210F + Created with sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-block-quote.svg b/riot/img/button-text-block-quote.svg new file mode 100644 index 0000000..d70c261 --- /dev/null +++ b/riot/img/button-text-block-quote.svg @@ -0,0 +1,17 @@ + + + + BFC0418B-9081-4789-A231-B75953157748 + Created with sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-bold-on.svg b/riot/img/button-text-bold-on.svg new file mode 100644 index 0000000..161e740 --- /dev/null +++ b/riot/img/button-text-bold-on.svg @@ -0,0 +1,17 @@ + + + + 01F3F9B2-8F38-4BAF-A345-AECAC3D88E79 + Created with sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-bold.svg b/riot/img/button-text-bold.svg new file mode 100644 index 0000000..0fd0baa --- /dev/null +++ b/riot/img/button-text-bold.svg @@ -0,0 +1,17 @@ + + + + 9BC64A5B-F157-43FF-BCC4-02D30CDF520B + Created with sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-bulleted-list-on.svg b/riot/img/button-text-bulleted-list-on.svg new file mode 100644 index 0000000..d4a40e8 --- /dev/null +++ b/riot/img/button-text-bulleted-list-on.svg @@ -0,0 +1,20 @@ + + + + 654917CF-20A4-49B6-B0A1-9875D7B733C8 + Created with sketchtool. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-bulleted-list.svg b/riot/img/button-text-bulleted-list.svg new file mode 100644 index 0000000..ae3e640 --- /dev/null +++ b/riot/img/button-text-bulleted-list.svg @@ -0,0 +1,20 @@ + + + + B7D94619-44BC-4184-A60A-DBC5BB54E5F9 + Created with sketchtool. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-deleted-on.svg b/riot/img/button-text-deleted-on.svg new file mode 100644 index 0000000..2914fca --- /dev/null +++ b/riot/img/button-text-deleted-on.svg @@ -0,0 +1,18 @@ + + + + 69B11088-0F3A-4E14-BD9F-4FEF4115E99B + Created with sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-deleted.svg b/riot/img/button-text-deleted.svg new file mode 100644 index 0000000..5f262dc --- /dev/null +++ b/riot/img/button-text-deleted.svg @@ -0,0 +1,18 @@ + + + + A34F2223-34C6-46AE-AA47-38EC8984E9B3 + Created with sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-formatting.svg b/riot/img/button-text-formatting.svg new file mode 100644 index 0000000..d697010 --- /dev/null +++ b/riot/img/button-text-formatting.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/riot/img/button-text-inline-code-on.svg b/riot/img/button-text-inline-code-on.svg new file mode 100644 index 0000000..8d1439c --- /dev/null +++ b/riot/img/button-text-inline-code-on.svg @@ -0,0 +1,25 @@ + + + + B76754AB-42E6-48D2-9443-80CBC0DE02ED + Created with sketchtool. + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-inline-code.svg b/riot/img/button-text-inline-code.svg new file mode 100644 index 0000000..24026cb --- /dev/null +++ b/riot/img/button-text-inline-code.svg @@ -0,0 +1,25 @@ + + + + 4CAFF494-61AE-4916-AFE8-D1E62F7CF0DE + Created with sketchtool. + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-italic-on.svg b/riot/img/button-text-italic-on.svg new file mode 100644 index 0000000..15fe588 --- /dev/null +++ b/riot/img/button-text-italic-on.svg @@ -0,0 +1,17 @@ + + + + 116426C2-0B55-480E-92B3-57D4B3ABAB90 + Created with sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-italic.svg b/riot/img/button-text-italic.svg new file mode 100644 index 0000000..b5722e8 --- /dev/null +++ b/riot/img/button-text-italic.svg @@ -0,0 +1,17 @@ + + + + 9FBC844D-96CF-4DCB-B545-FCD23727218B + Created with sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-numbered-list-on.svg b/riot/img/button-text-numbered-list-on.svg new file mode 100644 index 0000000..869a2c2 --- /dev/null +++ b/riot/img/button-text-numbered-list-on.svg @@ -0,0 +1,20 @@ + + + + 294F929B-31AA-4D0C-98B3-9CA96764060D + Created with sketchtool. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-numbered-list.svg b/riot/img/button-text-numbered-list.svg new file mode 100644 index 0000000..8e5b8b8 --- /dev/null +++ b/riot/img/button-text-numbered-list.svg @@ -0,0 +1,20 @@ + + + + F0F58459-A13A-48C5-9332-ABFB96726F05 + Created with sketchtool. + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-underlined-on.svg b/riot/img/button-text-underlined-on.svg new file mode 100644 index 0000000..870be3c --- /dev/null +++ b/riot/img/button-text-underlined-on.svg @@ -0,0 +1,18 @@ + + + + FD84FF7C-43E4-4312-90AB-5A59AD018377 + Created with sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/button-text-underlined.svg b/riot/img/button-text-underlined.svg new file mode 100644 index 0000000..26f4485 --- /dev/null +++ b/riot/img/button-text-underlined.svg @@ -0,0 +1,18 @@ + + + + 13E7EE68-9B16-4A3D-8F9F-31E4BAB7E438 + Created with sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/call.png b/riot/img/call.png new file mode 100644 index 0000000..a7805e0 Binary files /dev/null and b/riot/img/call.png differ diff --git a/riot/img/call.svg b/riot/img/call.svg new file mode 100644 index 0000000..f528f9a --- /dev/null +++ b/riot/img/call.svg @@ -0,0 +1,17 @@ + + + + icons_video + Created with bin/sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/camera.svg b/riot/img/camera.svg new file mode 100644 index 0000000..6519496 --- /dev/null +++ b/riot/img/camera.svg @@ -0,0 +1,12 @@ + + + + icon_camera + Created with Sketch. + + + + + + + diff --git a/riot/img/camera_green.svg b/riot/img/camera_green.svg new file mode 100644 index 0000000..5aae550 --- /dev/null +++ b/riot/img/camera_green.svg @@ -0,0 +1,15 @@ + + + + + + diff --git a/riot/img/cancel-black.png b/riot/img/cancel-black.png new file mode 100644 index 0000000..87dcfd4 Binary files /dev/null and b/riot/img/cancel-black.png differ diff --git a/riot/img/cancel-black2.png b/riot/img/cancel-black2.png new file mode 100644 index 0000000..a928c61 Binary files /dev/null and b/riot/img/cancel-black2.png differ diff --git a/riot/img/cancel-red.svg b/riot/img/cancel-red.svg new file mode 100644 index 0000000..a72a970 --- /dev/null +++ b/riot/img/cancel-red.svg @@ -0,0 +1,10 @@ + + + + Slice 1 + Created with Sketch. + + + + + diff --git a/riot/img/cancel-small.svg b/riot/img/cancel-small.svg new file mode 100644 index 0000000..e4c8caf --- /dev/null +++ b/riot/img/cancel-small.svg @@ -0,0 +1,13 @@ + + + + Line + Line + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/riot/img/cancel-white.svg b/riot/img/cancel-white.svg new file mode 100644 index 0000000..65e14c2 --- /dev/null +++ b/riot/img/cancel-white.svg @@ -0,0 +1,10 @@ + + + + Slice 1 + Created with Sketch. + + + + + \ No newline at end of file diff --git a/riot/img/cancel.png b/riot/img/cancel.png new file mode 100644 index 0000000..2bda8ff Binary files /dev/null and b/riot/img/cancel.png differ diff --git a/riot/img/cancel.svg b/riot/img/cancel.svg new file mode 100644 index 0000000..e320600 --- /dev/null +++ b/riot/img/cancel.svg @@ -0,0 +1,10 @@ + + + + Slice 1 + Created with Sketch. + + + + + \ No newline at end of file diff --git a/riot/img/cancel_green.svg b/riot/img/cancel_green.svg new file mode 100644 index 0000000..2e3d759 --- /dev/null +++ b/riot/img/cancel_green.svg @@ -0,0 +1,10 @@ + + + + Slice 1 + Created with Sketch. + + + + + \ No newline at end of file diff --git a/riot/img/chevron-left.png b/riot/img/chevron-left.png new file mode 100644 index 0000000..efb0065 Binary files /dev/null and b/riot/img/chevron-left.png differ diff --git a/riot/img/chevron-right.png b/riot/img/chevron-right.png new file mode 100644 index 0000000..18a4684 Binary files /dev/null and b/riot/img/chevron-right.png differ diff --git a/riot/img/chevron.png b/riot/img/chevron.png new file mode 100644 index 0000000..81236f9 Binary files /dev/null and b/riot/img/chevron.png differ diff --git a/riot/img/close-white.png b/riot/img/close-white.png new file mode 100644 index 0000000..d8752ed Binary files /dev/null and b/riot/img/close-white.png differ diff --git a/riot/img/create-big.png b/riot/img/create-big.png new file mode 100644 index 0000000..b7307a1 Binary files /dev/null and b/riot/img/create-big.png differ diff --git a/riot/img/create-big.svg b/riot/img/create-big.svg new file mode 100644 index 0000000..2450542 --- /dev/null +++ b/riot/img/create-big.svg @@ -0,0 +1,26 @@ + + + + icons_create_room + Created with sketchtool. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/create.png b/riot/img/create.png new file mode 100644 index 0000000..2d6107a Binary files /dev/null and b/riot/img/create.png differ diff --git a/riot/img/delete.png b/riot/img/delete.png new file mode 100644 index 0000000..8ff20a1 Binary files /dev/null and b/riot/img/delete.png differ diff --git a/riot/img/directory-big.png b/riot/img/directory-big.png new file mode 100644 index 0000000..03cab69 Binary files /dev/null and b/riot/img/directory-big.png differ diff --git a/riot/img/directory-big.svg b/riot/img/directory-big.svg new file mode 100644 index 0000000..5631a2a --- /dev/null +++ b/riot/img/directory-big.svg @@ -0,0 +1,22 @@ + + + + icons_directory + Created with sketchtool. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/download.png b/riot/img/download.png new file mode 100644 index 0000000..1999ebf Binary files /dev/null and b/riot/img/download.png differ diff --git a/riot/img/download.svg b/riot/img/download.svg new file mode 100644 index 0000000..d0ea090 --- /dev/null +++ b/riot/img/download.svg @@ -0,0 +1,18 @@ + + + + Fill 75 + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/e2e-blocked.svg b/riot/img/e2e-blocked.svg new file mode 100644 index 0000000..0ab2c6e --- /dev/null +++ b/riot/img/e2e-blocked.svg @@ -0,0 +1,12 @@ + + + + 2805649B-D39D-43EA-A357-659EF9B97BA4 + Created with sketchtool. + + + + + + + \ No newline at end of file diff --git a/riot/img/e2e-encrypting.svg b/riot/img/e2e-encrypting.svg new file mode 100644 index 0000000..469611c --- /dev/null +++ b/riot/img/e2e-encrypting.svg @@ -0,0 +1,12 @@ + + + +48BF5D32-306C-4B20-88EB-24B1F743CAC9 +Created with sketchtool. + + + + + + + diff --git a/riot/img/e2e-not_sent.svg b/riot/img/e2e-not_sent.svg new file mode 100644 index 0000000..fca79ae --- /dev/null +++ b/riot/img/e2e-not_sent.svg @@ -0,0 +1,12 @@ + + + +48BF5D32-306C-4B20-88EB-24B1F743CAC9 +Created with sketchtool. + + + + + + + diff --git a/riot/img/e2e-unencrypted.svg b/riot/img/e2e-unencrypted.svg new file mode 100644 index 0000000..1467223 --- /dev/null +++ b/riot/img/e2e-unencrypted.svg @@ -0,0 +1,23 @@ + + + + 16F5F38E-A6A3-472A-BC13-13F0F12876CF + Created with sketchtool. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/e2e-verified.svg b/riot/img/e2e-verified.svg new file mode 100644 index 0000000..b65f50b --- /dev/null +++ b/riot/img/e2e-verified.svg @@ -0,0 +1,12 @@ + + + + 48BF5D32-306C-4B20-88EB-24B1F743CAC9 + Created with sketchtool. + + + + + + + \ No newline at end of file diff --git a/riot/img/e2e-warning.svg b/riot/img/e2e-warning.svg new file mode 100644 index 0000000..8a55f19 --- /dev/null +++ b/riot/img/e2e-warning.svg @@ -0,0 +1,12 @@ + + + + CCDDE6F6-B552-48FD-AD54-6939841CA2DD + Created with sketchtool. + + + + + + + \ No newline at end of file diff --git a/riot/img/edit.png b/riot/img/edit.png new file mode 100644 index 0000000..6f373d3 Binary files /dev/null and b/riot/img/edit.png differ diff --git a/riot/img/edit.svg b/riot/img/edit.svg new file mode 100644 index 0000000..9ba0060 --- /dev/null +++ b/riot/img/edit.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/riot/img/edit_green.svg b/riot/img/edit_green.svg new file mode 100644 index 0000000..f7f4c7a --- /dev/null +++ b/riot/img/edit_green.svg @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/riot/img/ellipsis.svg b/riot/img/ellipsis.svg new file mode 100644 index 0000000..d60c844 --- /dev/null +++ b/riot/img/ellipsis.svg @@ -0,0 +1,25 @@ + + + + icons_archive + Created with Sketch. + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/eol.svg b/riot/img/eol.svg new file mode 100644 index 0000000..02d1946 --- /dev/null +++ b/riot/img/eol.svg @@ -0,0 +1,16 @@ + + + + icon_eol + Created with sketchtool. + + + + + + + + + + + diff --git a/riot/img/f4c371.png b/riot/img/f4c371.png new file mode 100644 index 0000000..ad3b8f1 Binary files /dev/null and b/riot/img/f4c371.png differ diff --git a/riot/img/file.png b/riot/img/file.png new file mode 100644 index 0000000..5904ea8 Binary files /dev/null and b/riot/img/file.png differ diff --git a/riot/img/filegrid.png b/riot/img/filegrid.png new file mode 100644 index 0000000..c2c2799 Binary files /dev/null and b/riot/img/filegrid.png differ diff --git a/riot/img/fileicon.png b/riot/img/fileicon.png new file mode 100644 index 0000000..af018ef Binary files /dev/null and b/riot/img/fileicon.png differ diff --git a/riot/img/filelist.png b/riot/img/filelist.png new file mode 100644 index 0000000..3cf6cb4 Binary files /dev/null and b/riot/img/filelist.png differ diff --git a/riot/img/files.png b/riot/img/files.png new file mode 100644 index 0000000..8393226 Binary files /dev/null and b/riot/img/files.png differ diff --git a/riot/img/files.svg b/riot/img/files.svg new file mode 100644 index 0000000..20aba85 --- /dev/null +++ b/riot/img/files.svg @@ -0,0 +1,18 @@ + + + + icons_browse_files + Created with bin/sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/flags/AD.png b/riot/img/flags/AD.png new file mode 100644 index 0000000..d5d5964 Binary files /dev/null and b/riot/img/flags/AD.png differ diff --git a/riot/img/flags/AE.png b/riot/img/flags/AE.png new file mode 100644 index 0000000..05c7418 Binary files /dev/null and b/riot/img/flags/AE.png differ diff --git a/riot/img/flags/AF.png b/riot/img/flags/AF.png new file mode 100644 index 0000000..bc7cef0 Binary files /dev/null and b/riot/img/flags/AF.png differ diff --git a/riot/img/flags/AG.png b/riot/img/flags/AG.png new file mode 100644 index 0000000..d48faca Binary files /dev/null and b/riot/img/flags/AG.png differ diff --git a/riot/img/flags/AI.png b/riot/img/flags/AI.png new file mode 100644 index 0000000..8fd27cd Binary files /dev/null and b/riot/img/flags/AI.png differ diff --git a/riot/img/flags/AL.png b/riot/img/flags/AL.png new file mode 100644 index 0000000..883835f Binary files /dev/null and b/riot/img/flags/AL.png differ diff --git a/riot/img/flags/AM.png b/riot/img/flags/AM.png new file mode 100644 index 0000000..b1bb36b Binary files /dev/null and b/riot/img/flags/AM.png differ diff --git a/riot/img/flags/AO.png b/riot/img/flags/AO.png new file mode 100644 index 0000000..ae68b12 Binary files /dev/null and b/riot/img/flags/AO.png differ diff --git a/riot/img/flags/AQ.png b/riot/img/flags/AQ.png new file mode 100644 index 0000000..146e9c0 Binary files /dev/null and b/riot/img/flags/AQ.png differ diff --git a/riot/img/flags/AR.png b/riot/img/flags/AR.png new file mode 100644 index 0000000..8142adf Binary files /dev/null and b/riot/img/flags/AR.png differ diff --git a/riot/img/flags/AS.png b/riot/img/flags/AS.png new file mode 100644 index 0000000..cc5bf30 Binary files /dev/null and b/riot/img/flags/AS.png differ diff --git a/riot/img/flags/AT.png b/riot/img/flags/AT.png new file mode 100644 index 0000000..e32414b Binary files /dev/null and b/riot/img/flags/AT.png differ diff --git a/riot/img/flags/AU.png b/riot/img/flags/AU.png new file mode 100644 index 0000000..8d1e143 Binary files /dev/null and b/riot/img/flags/AU.png differ diff --git a/riot/img/flags/AW.png b/riot/img/flags/AW.png new file mode 100644 index 0000000..6ec1788 Binary files /dev/null and b/riot/img/flags/AW.png differ diff --git a/riot/img/flags/AX.png b/riot/img/flags/AX.png new file mode 100644 index 0000000..ba269c0 Binary files /dev/null and b/riot/img/flags/AX.png differ diff --git a/riot/img/flags/AZ.png b/riot/img/flags/AZ.png new file mode 100644 index 0000000..2bf3c74 Binary files /dev/null and b/riot/img/flags/AZ.png differ diff --git a/riot/img/flags/BA.png b/riot/img/flags/BA.png new file mode 100644 index 0000000..3e3ec3f Binary files /dev/null and b/riot/img/flags/BA.png differ diff --git a/riot/img/flags/BB.png b/riot/img/flags/BB.png new file mode 100644 index 0000000..694050c Binary files /dev/null and b/riot/img/flags/BB.png differ diff --git a/riot/img/flags/BD.png b/riot/img/flags/BD.png new file mode 100644 index 0000000..6de2cde Binary files /dev/null and b/riot/img/flags/BD.png differ diff --git a/riot/img/flags/BE.png b/riot/img/flags/BE.png new file mode 100644 index 0000000..742ba92 Binary files /dev/null and b/riot/img/flags/BE.png differ diff --git a/riot/img/flags/BF.png b/riot/img/flags/BF.png new file mode 100644 index 0000000..17f9f67 Binary files /dev/null and b/riot/img/flags/BF.png differ diff --git a/riot/img/flags/BG.png b/riot/img/flags/BG.png new file mode 100644 index 0000000..b01d3ff Binary files /dev/null and b/riot/img/flags/BG.png differ diff --git a/riot/img/flags/BH.png b/riot/img/flags/BH.png new file mode 100644 index 0000000..d0f82e8 Binary files /dev/null and b/riot/img/flags/BH.png differ diff --git a/riot/img/flags/BI.png b/riot/img/flags/BI.png new file mode 100644 index 0000000..21865ac Binary files /dev/null and b/riot/img/flags/BI.png differ diff --git a/riot/img/flags/BJ.png b/riot/img/flags/BJ.png new file mode 100644 index 0000000..a7c6091 Binary files /dev/null and b/riot/img/flags/BJ.png differ diff --git a/riot/img/flags/BL.png b/riot/img/flags/BL.png new file mode 100644 index 0000000..6d50a0f Binary files /dev/null and b/riot/img/flags/BL.png differ diff --git a/riot/img/flags/BM.png b/riot/img/flags/BM.png new file mode 100644 index 0000000..310a25e Binary files /dev/null and b/riot/img/flags/BM.png differ diff --git a/riot/img/flags/BN.png b/riot/img/flags/BN.png new file mode 100644 index 0000000..bc4da8d Binary files /dev/null and b/riot/img/flags/BN.png differ diff --git a/riot/img/flags/BO.png b/riot/img/flags/BO.png new file mode 100644 index 0000000..144b8d3 Binary files /dev/null and b/riot/img/flags/BO.png differ diff --git a/riot/img/flags/BQ.png b/riot/img/flags/BQ.png new file mode 100644 index 0000000..0897943 Binary files /dev/null and b/riot/img/flags/BQ.png differ diff --git a/riot/img/flags/BR.png b/riot/img/flags/BR.png new file mode 100644 index 0000000..0278492 Binary files /dev/null and b/riot/img/flags/BR.png differ diff --git a/riot/img/flags/BS.png b/riot/img/flags/BS.png new file mode 100644 index 0000000..2b05a8f Binary files /dev/null and b/riot/img/flags/BS.png differ diff --git a/riot/img/flags/BT.png b/riot/img/flags/BT.png new file mode 100644 index 0000000..1f031df Binary files /dev/null and b/riot/img/flags/BT.png differ diff --git a/riot/img/flags/BV.png b/riot/img/flags/BV.png new file mode 100644 index 0000000..aafb0f1 Binary files /dev/null and b/riot/img/flags/BV.png differ diff --git a/riot/img/flags/BW.png b/riot/img/flags/BW.png new file mode 100644 index 0000000..3084016 Binary files /dev/null and b/riot/img/flags/BW.png differ diff --git a/riot/img/flags/BY.png b/riot/img/flags/BY.png new file mode 100644 index 0000000..ce9de9c Binary files /dev/null and b/riot/img/flags/BY.png differ diff --git a/riot/img/flags/BZ.png b/riot/img/flags/BZ.png new file mode 100644 index 0000000..33620c3 Binary files /dev/null and b/riot/img/flags/BZ.png differ diff --git a/riot/img/flags/CA.png b/riot/img/flags/CA.png new file mode 100644 index 0000000..4bbf8b1 Binary files /dev/null and b/riot/img/flags/CA.png differ diff --git a/riot/img/flags/CC.png b/riot/img/flags/CC.png new file mode 100644 index 0000000..fd40fc8 Binary files /dev/null and b/riot/img/flags/CC.png differ diff --git a/riot/img/flags/CD.png b/riot/img/flags/CD.png new file mode 100644 index 0000000..230aacd Binary files /dev/null and b/riot/img/flags/CD.png differ diff --git a/riot/img/flags/CF.png b/riot/img/flags/CF.png new file mode 100644 index 0000000..c58ed4f Binary files /dev/null and b/riot/img/flags/CF.png differ diff --git a/riot/img/flags/CG.png b/riot/img/flags/CG.png new file mode 100644 index 0000000..6c2441e Binary files /dev/null and b/riot/img/flags/CG.png differ diff --git a/riot/img/flags/CH.png b/riot/img/flags/CH.png new file mode 100644 index 0000000..9fd8716 Binary files /dev/null and b/riot/img/flags/CH.png differ diff --git a/riot/img/flags/CI.png b/riot/img/flags/CI.png new file mode 100644 index 0000000..9741b9b Binary files /dev/null and b/riot/img/flags/CI.png differ diff --git a/riot/img/flags/CK.png b/riot/img/flags/CK.png new file mode 100644 index 0000000..6cca359 Binary files /dev/null and b/riot/img/flags/CK.png differ diff --git a/riot/img/flags/CL.png b/riot/img/flags/CL.png new file mode 100644 index 0000000..13b993d Binary files /dev/null and b/riot/img/flags/CL.png differ diff --git a/riot/img/flags/CM.png b/riot/img/flags/CM.png new file mode 100644 index 0000000..bca5730 Binary files /dev/null and b/riot/img/flags/CM.png differ diff --git a/riot/img/flags/CN.png b/riot/img/flags/CN.png new file mode 100644 index 0000000..e086855 Binary files /dev/null and b/riot/img/flags/CN.png differ diff --git a/riot/img/flags/CO.png b/riot/img/flags/CO.png new file mode 100644 index 0000000..65c0aba Binary files /dev/null and b/riot/img/flags/CO.png differ diff --git a/riot/img/flags/CR.png b/riot/img/flags/CR.png new file mode 100644 index 0000000..b351c67 Binary files /dev/null and b/riot/img/flags/CR.png differ diff --git a/riot/img/flags/CU.png b/riot/img/flags/CU.png new file mode 100644 index 0000000..e7a25c6 Binary files /dev/null and b/riot/img/flags/CU.png differ diff --git a/riot/img/flags/CV.png b/riot/img/flags/CV.png new file mode 100644 index 0000000..f249bba Binary files /dev/null and b/riot/img/flags/CV.png differ diff --git a/riot/img/flags/CW.png b/riot/img/flags/CW.png new file mode 100644 index 0000000..e02cacd Binary files /dev/null and b/riot/img/flags/CW.png differ diff --git a/riot/img/flags/CX.png b/riot/img/flags/CX.png new file mode 100644 index 0000000..3ea2142 Binary files /dev/null and b/riot/img/flags/CX.png differ diff --git a/riot/img/flags/CY.png b/riot/img/flags/CY.png new file mode 100644 index 0000000..3182f48 Binary files /dev/null and b/riot/img/flags/CY.png differ diff --git a/riot/img/flags/CZ.png b/riot/img/flags/CZ.png new file mode 100644 index 0000000..5462334 Binary files /dev/null and b/riot/img/flags/CZ.png differ diff --git a/riot/img/flags/DE.png b/riot/img/flags/DE.png new file mode 100644 index 0000000..93e2691 Binary files /dev/null and b/riot/img/flags/DE.png differ diff --git a/riot/img/flags/DJ.png b/riot/img/flags/DJ.png new file mode 100644 index 0000000..243bb73 Binary files /dev/null and b/riot/img/flags/DJ.png differ diff --git a/riot/img/flags/DK.png b/riot/img/flags/DK.png new file mode 100644 index 0000000..fc74cc3 Binary files /dev/null and b/riot/img/flags/DK.png differ diff --git a/riot/img/flags/DM.png b/riot/img/flags/DM.png new file mode 100644 index 0000000..c3a0e9d Binary files /dev/null and b/riot/img/flags/DM.png differ diff --git a/riot/img/flags/DO.png b/riot/img/flags/DO.png new file mode 100644 index 0000000..5c4a004 Binary files /dev/null and b/riot/img/flags/DO.png differ diff --git a/riot/img/flags/DZ.png b/riot/img/flags/DZ.png new file mode 100644 index 0000000..1589d0c Binary files /dev/null and b/riot/img/flags/DZ.png differ diff --git a/riot/img/flags/EC.png b/riot/img/flags/EC.png new file mode 100644 index 0000000..4c53dea Binary files /dev/null and b/riot/img/flags/EC.png differ diff --git a/riot/img/flags/EE.png b/riot/img/flags/EE.png new file mode 100644 index 0000000..3668de7 Binary files /dev/null and b/riot/img/flags/EE.png differ diff --git a/riot/img/flags/EG.png b/riot/img/flags/EG.png new file mode 100644 index 0000000..66ec709 Binary files /dev/null and b/riot/img/flags/EG.png differ diff --git a/riot/img/flags/EH.png b/riot/img/flags/EH.png new file mode 100644 index 0000000..148be93 Binary files /dev/null and b/riot/img/flags/EH.png differ diff --git a/riot/img/flags/ER.png b/riot/img/flags/ER.png new file mode 100644 index 0000000..7cb8441 Binary files /dev/null and b/riot/img/flags/ER.png differ diff --git a/riot/img/flags/ES.png b/riot/img/flags/ES.png new file mode 100644 index 0000000..aae73b6 Binary files /dev/null and b/riot/img/flags/ES.png differ diff --git a/riot/img/flags/ET.png b/riot/img/flags/ET.png new file mode 100644 index 0000000..7b420f0 Binary files /dev/null and b/riot/img/flags/ET.png differ diff --git a/riot/img/flags/FI.png b/riot/img/flags/FI.png new file mode 100644 index 0000000..42f64bf Binary files /dev/null and b/riot/img/flags/FI.png differ diff --git a/riot/img/flags/FJ.png b/riot/img/flags/FJ.png new file mode 100644 index 0000000..cecc683 Binary files /dev/null and b/riot/img/flags/FJ.png differ diff --git a/riot/img/flags/FK.png b/riot/img/flags/FK.png new file mode 100644 index 0000000..6074fea Binary files /dev/null and b/riot/img/flags/FK.png differ diff --git a/riot/img/flags/FM.png b/riot/img/flags/FM.png new file mode 100644 index 0000000..45fdb66 Binary files /dev/null and b/riot/img/flags/FM.png differ diff --git a/riot/img/flags/FO.png b/riot/img/flags/FO.png new file mode 100644 index 0000000..d8fd75c Binary files /dev/null and b/riot/img/flags/FO.png differ diff --git a/riot/img/flags/FR.png b/riot/img/flags/FR.png new file mode 100644 index 0000000..6d50a0f Binary files /dev/null and b/riot/img/flags/FR.png differ diff --git a/riot/img/flags/GA.png b/riot/img/flags/GA.png new file mode 100644 index 0000000..3808a61 Binary files /dev/null and b/riot/img/flags/GA.png differ diff --git a/riot/img/flags/GB.png b/riot/img/flags/GB.png new file mode 100644 index 0000000..589be70 Binary files /dev/null and b/riot/img/flags/GB.png differ diff --git a/riot/img/flags/GD.png b/riot/img/flags/GD.png new file mode 100644 index 0000000..babe1e4 Binary files /dev/null and b/riot/img/flags/GD.png differ diff --git a/riot/img/flags/GE.png b/riot/img/flags/GE.png new file mode 100644 index 0000000..d34cdde Binary files /dev/null and b/riot/img/flags/GE.png differ diff --git a/riot/img/flags/GF.png b/riot/img/flags/GF.png new file mode 100644 index 0000000..98828a5 Binary files /dev/null and b/riot/img/flags/GF.png differ diff --git a/riot/img/flags/GG.png b/riot/img/flags/GG.png new file mode 100644 index 0000000..aec8969 Binary files /dev/null and b/riot/img/flags/GG.png differ diff --git a/riot/img/flags/GH.png b/riot/img/flags/GH.png new file mode 100644 index 0000000..70b1a62 Binary files /dev/null and b/riot/img/flags/GH.png differ diff --git a/riot/img/flags/GI.png b/riot/img/flags/GI.png new file mode 100644 index 0000000..9aa5832 Binary files /dev/null and b/riot/img/flags/GI.png differ diff --git a/riot/img/flags/GL.png b/riot/img/flags/GL.png new file mode 100644 index 0000000..cf1645c Binary files /dev/null and b/riot/img/flags/GL.png differ diff --git a/riot/img/flags/GM.png b/riot/img/flags/GM.png new file mode 100644 index 0000000..ec374fb Binary files /dev/null and b/riot/img/flags/GM.png differ diff --git a/riot/img/flags/GN.png b/riot/img/flags/GN.png new file mode 100644 index 0000000..46874b4 Binary files /dev/null and b/riot/img/flags/GN.png differ diff --git a/riot/img/flags/GP.png b/riot/img/flags/GP.png new file mode 100644 index 0000000..81b7abd Binary files /dev/null and b/riot/img/flags/GP.png differ diff --git a/riot/img/flags/GQ.png b/riot/img/flags/GQ.png new file mode 100644 index 0000000..7fd1015 Binary files /dev/null and b/riot/img/flags/GQ.png differ diff --git a/riot/img/flags/GR.png b/riot/img/flags/GR.png new file mode 100644 index 0000000..101de51 Binary files /dev/null and b/riot/img/flags/GR.png differ diff --git a/riot/img/flags/GS.png b/riot/img/flags/GS.png new file mode 100644 index 0000000..772c2cb Binary files /dev/null and b/riot/img/flags/GS.png differ diff --git a/riot/img/flags/GT.png b/riot/img/flags/GT.png new file mode 100644 index 0000000..d5bd8c1 Binary files /dev/null and b/riot/img/flags/GT.png differ diff --git a/riot/img/flags/GU.png b/riot/img/flags/GU.png new file mode 100644 index 0000000..8923085 Binary files /dev/null and b/riot/img/flags/GU.png differ diff --git a/riot/img/flags/GW.png b/riot/img/flags/GW.png new file mode 100644 index 0000000..20c268c Binary files /dev/null and b/riot/img/flags/GW.png differ diff --git a/riot/img/flags/GY.png b/riot/img/flags/GY.png new file mode 100644 index 0000000..86f5663 Binary files /dev/null and b/riot/img/flags/GY.png differ diff --git a/riot/img/flags/HK.png b/riot/img/flags/HK.png new file mode 100644 index 0000000..907dc59 Binary files /dev/null and b/riot/img/flags/HK.png differ diff --git a/riot/img/flags/HM.png b/riot/img/flags/HM.png new file mode 100644 index 0000000..8d1e143 Binary files /dev/null and b/riot/img/flags/HM.png differ diff --git a/riot/img/flags/HN.png b/riot/img/flags/HN.png new file mode 100644 index 0000000..4cf8c31 Binary files /dev/null and b/riot/img/flags/HN.png differ diff --git a/riot/img/flags/HR.png b/riot/img/flags/HR.png new file mode 100644 index 0000000..413ceb1 Binary files /dev/null and b/riot/img/flags/HR.png differ diff --git a/riot/img/flags/HT.png b/riot/img/flags/HT.png new file mode 100644 index 0000000..097abeb Binary files /dev/null and b/riot/img/flags/HT.png differ diff --git a/riot/img/flags/HU.png b/riot/img/flags/HU.png new file mode 100644 index 0000000..23499bf Binary files /dev/null and b/riot/img/flags/HU.png differ diff --git a/riot/img/flags/ID.png b/riot/img/flags/ID.png new file mode 100644 index 0000000..8020065 Binary files /dev/null and b/riot/img/flags/ID.png differ diff --git a/riot/img/flags/IE.png b/riot/img/flags/IE.png new file mode 100644 index 0000000..63f2220 Binary files /dev/null and b/riot/img/flags/IE.png differ diff --git a/riot/img/flags/IL.png b/riot/img/flags/IL.png new file mode 100644 index 0000000..0268826 Binary files /dev/null and b/riot/img/flags/IL.png differ diff --git a/riot/img/flags/IM.png b/riot/img/flags/IM.png new file mode 100644 index 0000000..c777acc Binary files /dev/null and b/riot/img/flags/IM.png differ diff --git a/riot/img/flags/IN.png b/riot/img/flags/IN.png new file mode 100644 index 0000000..85fa9bf Binary files /dev/null and b/riot/img/flags/IN.png differ diff --git a/riot/img/flags/IO.png b/riot/img/flags/IO.png new file mode 100644 index 0000000..1675d8e Binary files /dev/null and b/riot/img/flags/IO.png differ diff --git a/riot/img/flags/IQ.png b/riot/img/flags/IQ.png new file mode 100644 index 0000000..f2c21f7 Binary files /dev/null and b/riot/img/flags/IQ.png differ diff --git a/riot/img/flags/IR.png b/riot/img/flags/IR.png new file mode 100644 index 0000000..0b8e675 Binary files /dev/null and b/riot/img/flags/IR.png differ diff --git a/riot/img/flags/IS.png b/riot/img/flags/IS.png new file mode 100644 index 0000000..5ee3e63 Binary files /dev/null and b/riot/img/flags/IS.png differ diff --git a/riot/img/flags/IT.png b/riot/img/flags/IT.png new file mode 100644 index 0000000..53b967b Binary files /dev/null and b/riot/img/flags/IT.png differ diff --git a/riot/img/flags/JE.png b/riot/img/flags/JE.png new file mode 100644 index 0000000..a1437ab Binary files /dev/null and b/riot/img/flags/JE.png differ diff --git a/riot/img/flags/JM.png b/riot/img/flags/JM.png new file mode 100644 index 0000000..0d462fa Binary files /dev/null and b/riot/img/flags/JM.png differ diff --git a/riot/img/flags/JO.png b/riot/img/flags/JO.png new file mode 100644 index 0000000..8934db7 Binary files /dev/null and b/riot/img/flags/JO.png differ diff --git a/riot/img/flags/JP.png b/riot/img/flags/JP.png new file mode 100644 index 0000000..6f92d52 Binary files /dev/null and b/riot/img/flags/JP.png differ diff --git a/riot/img/flags/KE.png b/riot/img/flags/KE.png new file mode 100644 index 0000000..866b3f1 Binary files /dev/null and b/riot/img/flags/KE.png differ diff --git a/riot/img/flags/KG.png b/riot/img/flags/KG.png new file mode 100644 index 0000000..56b433c Binary files /dev/null and b/riot/img/flags/KG.png differ diff --git a/riot/img/flags/KH.png b/riot/img/flags/KH.png new file mode 100644 index 0000000..e1ddd5f Binary files /dev/null and b/riot/img/flags/KH.png differ diff --git a/riot/img/flags/KI.png b/riot/img/flags/KI.png new file mode 100644 index 0000000..8b7c54b Binary files /dev/null and b/riot/img/flags/KI.png differ diff --git a/riot/img/flags/KM.png b/riot/img/flags/KM.png new file mode 100644 index 0000000..227a3b3 Binary files /dev/null and b/riot/img/flags/KM.png differ diff --git a/riot/img/flags/KN.png b/riot/img/flags/KN.png new file mode 100644 index 0000000..bc6189b Binary files /dev/null and b/riot/img/flags/KN.png differ diff --git a/riot/img/flags/KP.png b/riot/img/flags/KP.png new file mode 100644 index 0000000..c92248b Binary files /dev/null and b/riot/img/flags/KP.png differ diff --git a/riot/img/flags/KR.png b/riot/img/flags/KR.png new file mode 100644 index 0000000..ab1cb94 Binary files /dev/null and b/riot/img/flags/KR.png differ diff --git a/riot/img/flags/KW.png b/riot/img/flags/KW.png new file mode 100644 index 0000000..0b41c7a Binary files /dev/null and b/riot/img/flags/KW.png differ diff --git a/riot/img/flags/KY.png b/riot/img/flags/KY.png new file mode 100644 index 0000000..7af5290 Binary files /dev/null and b/riot/img/flags/KY.png differ diff --git a/riot/img/flags/KZ.png b/riot/img/flags/KZ.png new file mode 100644 index 0000000..e10a125 Binary files /dev/null and b/riot/img/flags/KZ.png differ diff --git a/riot/img/flags/LA.png b/riot/img/flags/LA.png new file mode 100644 index 0000000..6ad67d4 Binary files /dev/null and b/riot/img/flags/LA.png differ diff --git a/riot/img/flags/LB.png b/riot/img/flags/LB.png new file mode 100644 index 0000000..865df57 Binary files /dev/null and b/riot/img/flags/LB.png differ diff --git a/riot/img/flags/LC.png b/riot/img/flags/LC.png new file mode 100644 index 0000000..e83a2d0 Binary files /dev/null and b/riot/img/flags/LC.png differ diff --git a/riot/img/flags/LI.png b/riot/img/flags/LI.png new file mode 100644 index 0000000..57034d3 Binary files /dev/null and b/riot/img/flags/LI.png differ diff --git a/riot/img/flags/LK.png b/riot/img/flags/LK.png new file mode 100644 index 0000000..6e7ad58 Binary files /dev/null and b/riot/img/flags/LK.png differ diff --git a/riot/img/flags/LR.png b/riot/img/flags/LR.png new file mode 100644 index 0000000..46c3b84 Binary files /dev/null and b/riot/img/flags/LR.png differ diff --git a/riot/img/flags/LS.png b/riot/img/flags/LS.png new file mode 100644 index 0000000..79b505d Binary files /dev/null and b/riot/img/flags/LS.png differ diff --git a/riot/img/flags/LT.png b/riot/img/flags/LT.png new file mode 100644 index 0000000..7740cdc Binary files /dev/null and b/riot/img/flags/LT.png differ diff --git a/riot/img/flags/LU.png b/riot/img/flags/LU.png new file mode 100644 index 0000000..8f383e6 Binary files /dev/null and b/riot/img/flags/LU.png differ diff --git a/riot/img/flags/LV.png b/riot/img/flags/LV.png new file mode 100644 index 0000000..a0f36d8 Binary files /dev/null and b/riot/img/flags/LV.png differ diff --git a/riot/img/flags/LY.png b/riot/img/flags/LY.png new file mode 100644 index 0000000..2884c4c Binary files /dev/null and b/riot/img/flags/LY.png differ diff --git a/riot/img/flags/MA.png b/riot/img/flags/MA.png new file mode 100644 index 0000000..1f76cfc Binary files /dev/null and b/riot/img/flags/MA.png differ diff --git a/riot/img/flags/MC.png b/riot/img/flags/MC.png new file mode 100644 index 0000000..06fc2ad Binary files /dev/null and b/riot/img/flags/MC.png differ diff --git a/riot/img/flags/MD.png b/riot/img/flags/MD.png new file mode 100644 index 0000000..8e54c2b Binary files /dev/null and b/riot/img/flags/MD.png differ diff --git a/riot/img/flags/ME.png b/riot/img/flags/ME.png new file mode 100644 index 0000000..97424d4 Binary files /dev/null and b/riot/img/flags/ME.png differ diff --git a/riot/img/flags/MF.png b/riot/img/flags/MF.png new file mode 100644 index 0000000..6d50a0f Binary files /dev/null and b/riot/img/flags/MF.png differ diff --git a/riot/img/flags/MG.png b/riot/img/flags/MG.png new file mode 100644 index 0000000..28bfccc Binary files /dev/null and b/riot/img/flags/MG.png differ diff --git a/riot/img/flags/MH.png b/riot/img/flags/MH.png new file mode 100644 index 0000000..e482a65 Binary files /dev/null and b/riot/img/flags/MH.png differ diff --git a/riot/img/flags/MK.png b/riot/img/flags/MK.png new file mode 100644 index 0000000..84e2e65 Binary files /dev/null and b/riot/img/flags/MK.png differ diff --git a/riot/img/flags/ML.png b/riot/img/flags/ML.png new file mode 100644 index 0000000..38fec34 Binary files /dev/null and b/riot/img/flags/ML.png differ diff --git a/riot/img/flags/MM.png b/riot/img/flags/MM.png new file mode 100644 index 0000000..70a03c6 Binary files /dev/null and b/riot/img/flags/MM.png differ diff --git a/riot/img/flags/MN.png b/riot/img/flags/MN.png new file mode 100644 index 0000000..1e1bbe6 Binary files /dev/null and b/riot/img/flags/MN.png differ diff --git a/riot/img/flags/MO.png b/riot/img/flags/MO.png new file mode 100644 index 0000000..3833d68 Binary files /dev/null and b/riot/img/flags/MO.png differ diff --git a/riot/img/flags/MP.png b/riot/img/flags/MP.png new file mode 100644 index 0000000..6311909 Binary files /dev/null and b/riot/img/flags/MP.png differ diff --git a/riot/img/flags/MQ.png b/riot/img/flags/MQ.png new file mode 100644 index 0000000..9cab441 Binary files /dev/null and b/riot/img/flags/MQ.png differ diff --git a/riot/img/flags/MR.png b/riot/img/flags/MR.png new file mode 100644 index 0000000..c144de1 Binary files /dev/null and b/riot/img/flags/MR.png differ diff --git a/riot/img/flags/MS.png b/riot/img/flags/MS.png new file mode 100644 index 0000000..1221707 Binary files /dev/null and b/riot/img/flags/MS.png differ diff --git a/riot/img/flags/MT.png b/riot/img/flags/MT.png new file mode 100644 index 0000000..7963aa6 Binary files /dev/null and b/riot/img/flags/MT.png differ diff --git a/riot/img/flags/MU.png b/riot/img/flags/MU.png new file mode 100644 index 0000000..d5d4d40 Binary files /dev/null and b/riot/img/flags/MU.png differ diff --git a/riot/img/flags/MV.png b/riot/img/flags/MV.png new file mode 100644 index 0000000..0f2ecb4 Binary files /dev/null and b/riot/img/flags/MV.png differ diff --git a/riot/img/flags/MW.png b/riot/img/flags/MW.png new file mode 100644 index 0000000..d0a5d24 Binary files /dev/null and b/riot/img/flags/MW.png differ diff --git a/riot/img/flags/MX.png b/riot/img/flags/MX.png new file mode 100644 index 0000000..096cb11 Binary files /dev/null and b/riot/img/flags/MX.png differ diff --git a/riot/img/flags/MY.png b/riot/img/flags/MY.png new file mode 100644 index 0000000..17f18ac Binary files /dev/null and b/riot/img/flags/MY.png differ diff --git a/riot/img/flags/MZ.png b/riot/img/flags/MZ.png new file mode 100644 index 0000000..66be656 Binary files /dev/null and b/riot/img/flags/MZ.png differ diff --git a/riot/img/flags/NA.png b/riot/img/flags/NA.png new file mode 100644 index 0000000..7ecfd31 Binary files /dev/null and b/riot/img/flags/NA.png differ diff --git a/riot/img/flags/NC.png b/riot/img/flags/NC.png new file mode 100644 index 0000000..11126ad Binary files /dev/null and b/riot/img/flags/NC.png differ diff --git a/riot/img/flags/NE.png b/riot/img/flags/NE.png new file mode 100644 index 0000000..d584fa8 Binary files /dev/null and b/riot/img/flags/NE.png differ diff --git a/riot/img/flags/NF.png b/riot/img/flags/NF.png new file mode 100644 index 0000000..c054042 Binary files /dev/null and b/riot/img/flags/NF.png differ diff --git a/riot/img/flags/NG.png b/riot/img/flags/NG.png new file mode 100644 index 0000000..73aee15 Binary files /dev/null and b/riot/img/flags/NG.png differ diff --git a/riot/img/flags/NI.png b/riot/img/flags/NI.png new file mode 100644 index 0000000..fd04493 Binary files /dev/null and b/riot/img/flags/NI.png differ diff --git a/riot/img/flags/NL.png b/riot/img/flags/NL.png new file mode 100644 index 0000000..0897943 Binary files /dev/null and b/riot/img/flags/NL.png differ diff --git a/riot/img/flags/NO.png b/riot/img/flags/NO.png new file mode 100644 index 0000000..aafb0f1 Binary files /dev/null and b/riot/img/flags/NO.png differ diff --git a/riot/img/flags/NP.png b/riot/img/flags/NP.png new file mode 100644 index 0000000..744458e Binary files /dev/null and b/riot/img/flags/NP.png differ diff --git a/riot/img/flags/NR.png b/riot/img/flags/NR.png new file mode 100644 index 0000000..58c2afb Binary files /dev/null and b/riot/img/flags/NR.png differ diff --git a/riot/img/flags/NU.png b/riot/img/flags/NU.png new file mode 100644 index 0000000..007c99e Binary files /dev/null and b/riot/img/flags/NU.png differ diff --git a/riot/img/flags/NZ.png b/riot/img/flags/NZ.png new file mode 100644 index 0000000..839368d Binary files /dev/null and b/riot/img/flags/NZ.png differ diff --git a/riot/img/flags/OM.png b/riot/img/flags/OM.png new file mode 100644 index 0000000..63a8933 Binary files /dev/null and b/riot/img/flags/OM.png differ diff --git a/riot/img/flags/PA.png b/riot/img/flags/PA.png new file mode 100644 index 0000000..3515d95 Binary files /dev/null and b/riot/img/flags/PA.png differ diff --git a/riot/img/flags/PE.png b/riot/img/flags/PE.png new file mode 100644 index 0000000..58f70b8 Binary files /dev/null and b/riot/img/flags/PE.png differ diff --git a/riot/img/flags/PF.png b/riot/img/flags/PF.png new file mode 100644 index 0000000..2f33f25 Binary files /dev/null and b/riot/img/flags/PF.png differ diff --git a/riot/img/flags/PG.png b/riot/img/flags/PG.png new file mode 100644 index 0000000..c796f58 Binary files /dev/null and b/riot/img/flags/PG.png differ diff --git a/riot/img/flags/PH.png b/riot/img/flags/PH.png new file mode 100644 index 0000000..0d98de0 Binary files /dev/null and b/riot/img/flags/PH.png differ diff --git a/riot/img/flags/PK.png b/riot/img/flags/PK.png new file mode 100644 index 0000000..87f4e2f Binary files /dev/null and b/riot/img/flags/PK.png differ diff --git a/riot/img/flags/PL.png b/riot/img/flags/PL.png new file mode 100644 index 0000000..273869d Binary files /dev/null and b/riot/img/flags/PL.png differ diff --git a/riot/img/flags/PM.png b/riot/img/flags/PM.png new file mode 100644 index 0000000..b74c396 Binary files /dev/null and b/riot/img/flags/PM.png differ diff --git a/riot/img/flags/PN.png b/riot/img/flags/PN.png new file mode 100644 index 0000000..e34c62d Binary files /dev/null and b/riot/img/flags/PN.png differ diff --git a/riot/img/flags/PR.png b/riot/img/flags/PR.png new file mode 100644 index 0000000..8efdb91 Binary files /dev/null and b/riot/img/flags/PR.png differ diff --git a/riot/img/flags/PS.png b/riot/img/flags/PS.png new file mode 100644 index 0000000..7a0ccee Binary files /dev/null and b/riot/img/flags/PS.png differ diff --git a/riot/img/flags/PT.png b/riot/img/flags/PT.png new file mode 100644 index 0000000..49e2908 Binary files /dev/null and b/riot/img/flags/PT.png differ diff --git a/riot/img/flags/PW.png b/riot/img/flags/PW.png new file mode 100644 index 0000000..6cb2e1e Binary files /dev/null and b/riot/img/flags/PW.png differ diff --git a/riot/img/flags/PY.png b/riot/img/flags/PY.png new file mode 100644 index 0000000..a61c42c Binary files /dev/null and b/riot/img/flags/PY.png differ diff --git a/riot/img/flags/QA.png b/riot/img/flags/QA.png new file mode 100644 index 0000000..bb091cc Binary files /dev/null and b/riot/img/flags/QA.png differ diff --git a/riot/img/flags/RE.png b/riot/img/flags/RE.png new file mode 100644 index 0000000..6d50a0f Binary files /dev/null and b/riot/img/flags/RE.png differ diff --git a/riot/img/flags/RO.png b/riot/img/flags/RO.png new file mode 100644 index 0000000..4495d29 Binary files /dev/null and b/riot/img/flags/RO.png differ diff --git a/riot/img/flags/RS.png b/riot/img/flags/RS.png new file mode 100644 index 0000000..ebb0f28 Binary files /dev/null and b/riot/img/flags/RS.png differ diff --git a/riot/img/flags/RU.png b/riot/img/flags/RU.png new file mode 100644 index 0000000..64532ff Binary files /dev/null and b/riot/img/flags/RU.png differ diff --git a/riot/img/flags/RW.png b/riot/img/flags/RW.png new file mode 100644 index 0000000..64b3cff Binary files /dev/null and b/riot/img/flags/RW.png differ diff --git a/riot/img/flags/SA.png b/riot/img/flags/SA.png new file mode 100644 index 0000000..250de6f Binary files /dev/null and b/riot/img/flags/SA.png differ diff --git a/riot/img/flags/SB.png b/riot/img/flags/SB.png new file mode 100644 index 0000000..5833c13 Binary files /dev/null and b/riot/img/flags/SB.png differ diff --git a/riot/img/flags/SC.png b/riot/img/flags/SC.png new file mode 100644 index 0000000..ce5248f Binary files /dev/null and b/riot/img/flags/SC.png differ diff --git a/riot/img/flags/SD.png b/riot/img/flags/SD.png new file mode 100644 index 0000000..d8711a8 Binary files /dev/null and b/riot/img/flags/SD.png differ diff --git a/riot/img/flags/SE.png b/riot/img/flags/SE.png new file mode 100644 index 0000000..8188093 Binary files /dev/null and b/riot/img/flags/SE.png differ diff --git a/riot/img/flags/SG.png b/riot/img/flags/SG.png new file mode 100644 index 0000000..6f00e57 Binary files /dev/null and b/riot/img/flags/SG.png differ diff --git a/riot/img/flags/SH.png b/riot/img/flags/SH.png new file mode 100644 index 0000000..055dde6 Binary files /dev/null and b/riot/img/flags/SH.png differ diff --git a/riot/img/flags/SI.png b/riot/img/flags/SI.png new file mode 100644 index 0000000..9635983 Binary files /dev/null and b/riot/img/flags/SI.png differ diff --git a/riot/img/flags/SJ.png b/riot/img/flags/SJ.png new file mode 100644 index 0000000..aafb0f1 Binary files /dev/null and b/riot/img/flags/SJ.png differ diff --git a/riot/img/flags/SK.png b/riot/img/flags/SK.png new file mode 100644 index 0000000..84c7021 Binary files /dev/null and b/riot/img/flags/SK.png differ diff --git a/riot/img/flags/SL.png b/riot/img/flags/SL.png new file mode 100644 index 0000000..c5ed199 Binary files /dev/null and b/riot/img/flags/SL.png differ diff --git a/riot/img/flags/SM.png b/riot/img/flags/SM.png new file mode 100644 index 0000000..1af1ca2 Binary files /dev/null and b/riot/img/flags/SM.png differ diff --git a/riot/img/flags/SN.png b/riot/img/flags/SN.png new file mode 100644 index 0000000..d0b1843 Binary files /dev/null and b/riot/img/flags/SN.png differ diff --git a/riot/img/flags/SO.png b/riot/img/flags/SO.png new file mode 100644 index 0000000..64e2970 Binary files /dev/null and b/riot/img/flags/SO.png differ diff --git a/riot/img/flags/SR.png b/riot/img/flags/SR.png new file mode 100644 index 0000000..b072dda Binary files /dev/null and b/riot/img/flags/SR.png differ diff --git a/riot/img/flags/SS.png b/riot/img/flags/SS.png new file mode 100644 index 0000000..83933d4 Binary files /dev/null and b/riot/img/flags/SS.png differ diff --git a/riot/img/flags/ST.png b/riot/img/flags/ST.png new file mode 100644 index 0000000..c102721 Binary files /dev/null and b/riot/img/flags/ST.png differ diff --git a/riot/img/flags/SV.png b/riot/img/flags/SV.png new file mode 100644 index 0000000..80de92e Binary files /dev/null and b/riot/img/flags/SV.png differ diff --git a/riot/img/flags/SX.png b/riot/img/flags/SX.png new file mode 100644 index 0000000..dd52215 Binary files /dev/null and b/riot/img/flags/SX.png differ diff --git a/riot/img/flags/SY.png b/riot/img/flags/SY.png new file mode 100644 index 0000000..78f45b7 Binary files /dev/null and b/riot/img/flags/SY.png differ diff --git a/riot/img/flags/SZ.png b/riot/img/flags/SZ.png new file mode 100644 index 0000000..2182f4f Binary files /dev/null and b/riot/img/flags/SZ.png differ diff --git a/riot/img/flags/TC.png b/riot/img/flags/TC.png new file mode 100644 index 0000000..3e3e19d Binary files /dev/null and b/riot/img/flags/TC.png differ diff --git a/riot/img/flags/TD.png b/riot/img/flags/TD.png new file mode 100644 index 0000000..753bec2 Binary files /dev/null and b/riot/img/flags/TD.png differ diff --git a/riot/img/flags/TF.png b/riot/img/flags/TF.png new file mode 100644 index 0000000..6d50a0f Binary files /dev/null and b/riot/img/flags/TF.png differ diff --git a/riot/img/flags/TG.png b/riot/img/flags/TG.png new file mode 100644 index 0000000..8501ada Binary files /dev/null and b/riot/img/flags/TG.png differ diff --git a/riot/img/flags/TH.png b/riot/img/flags/TH.png new file mode 100644 index 0000000..0c884c3 Binary files /dev/null and b/riot/img/flags/TH.png differ diff --git a/riot/img/flags/TJ.png b/riot/img/flags/TJ.png new file mode 100644 index 0000000..3c9026f Binary files /dev/null and b/riot/img/flags/TJ.png differ diff --git a/riot/img/flags/TK.png b/riot/img/flags/TK.png new file mode 100644 index 0000000..fd60574 Binary files /dev/null and b/riot/img/flags/TK.png differ diff --git a/riot/img/flags/TL.png b/riot/img/flags/TL.png new file mode 100644 index 0000000..b4c834b Binary files /dev/null and b/riot/img/flags/TL.png differ diff --git a/riot/img/flags/TM.png b/riot/img/flags/TM.png new file mode 100644 index 0000000..d18cb93 Binary files /dev/null and b/riot/img/flags/TM.png differ diff --git a/riot/img/flags/TN.png b/riot/img/flags/TN.png new file mode 100644 index 0000000..21c4b98 Binary files /dev/null and b/riot/img/flags/TN.png differ diff --git a/riot/img/flags/TO.png b/riot/img/flags/TO.png new file mode 100644 index 0000000..c828206 Binary files /dev/null and b/riot/img/flags/TO.png differ diff --git a/riot/img/flags/TR.png b/riot/img/flags/TR.png new file mode 100644 index 0000000..f2a5bd2 Binary files /dev/null and b/riot/img/flags/TR.png differ diff --git a/riot/img/flags/TT.png b/riot/img/flags/TT.png new file mode 100644 index 0000000..66d6983 Binary files /dev/null and b/riot/img/flags/TT.png differ diff --git a/riot/img/flags/TV.png b/riot/img/flags/TV.png new file mode 100644 index 0000000..7a127f5 Binary files /dev/null and b/riot/img/flags/TV.png differ diff --git a/riot/img/flags/TW.png b/riot/img/flags/TW.png new file mode 100644 index 0000000..2353ba1 Binary files /dev/null and b/riot/img/flags/TW.png differ diff --git a/riot/img/flags/TZ.png b/riot/img/flags/TZ.png new file mode 100644 index 0000000..7949f65 Binary files /dev/null and b/riot/img/flags/TZ.png differ diff --git a/riot/img/flags/UA.png b/riot/img/flags/UA.png new file mode 100644 index 0000000..687e305 Binary files /dev/null and b/riot/img/flags/UA.png differ diff --git a/riot/img/flags/UG.png b/riot/img/flags/UG.png new file mode 100644 index 0000000..0a21ad1 Binary files /dev/null and b/riot/img/flags/UG.png differ diff --git a/riot/img/flags/US.png b/riot/img/flags/US.png new file mode 100644 index 0000000..c3a245b Binary files /dev/null and b/riot/img/flags/US.png differ diff --git a/riot/img/flags/UY.png b/riot/img/flags/UY.png new file mode 100644 index 0000000..21a347c Binary files /dev/null and b/riot/img/flags/UY.png differ diff --git a/riot/img/flags/UZ.png b/riot/img/flags/UZ.png new file mode 100644 index 0000000..643b6ae Binary files /dev/null and b/riot/img/flags/UZ.png differ diff --git a/riot/img/flags/VA.png b/riot/img/flags/VA.png new file mode 100644 index 0000000..63a13c0 Binary files /dev/null and b/riot/img/flags/VA.png differ diff --git a/riot/img/flags/VC.png b/riot/img/flags/VC.png new file mode 100644 index 0000000..da991a9 Binary files /dev/null and b/riot/img/flags/VC.png differ diff --git a/riot/img/flags/VE.png b/riot/img/flags/VE.png new file mode 100644 index 0000000..e75e17c Binary files /dev/null and b/riot/img/flags/VE.png differ diff --git a/riot/img/flags/VG.png b/riot/img/flags/VG.png new file mode 100644 index 0000000..46f93ca Binary files /dev/null and b/riot/img/flags/VG.png differ diff --git a/riot/img/flags/VI.png b/riot/img/flags/VI.png new file mode 100644 index 0000000..8c849a7 Binary files /dev/null and b/riot/img/flags/VI.png differ diff --git a/riot/img/flags/VN.png b/riot/img/flags/VN.png new file mode 100644 index 0000000..6ea2122 Binary files /dev/null and b/riot/img/flags/VN.png differ diff --git a/riot/img/flags/VU.png b/riot/img/flags/VU.png new file mode 100644 index 0000000..bad3ba4 Binary files /dev/null and b/riot/img/flags/VU.png differ diff --git a/riot/img/flags/WF.png b/riot/img/flags/WF.png new file mode 100644 index 0000000..d94359d Binary files /dev/null and b/riot/img/flags/WF.png differ diff --git a/riot/img/flags/WS.png b/riot/img/flags/WS.png new file mode 100644 index 0000000..f8b80e5 Binary files /dev/null and b/riot/img/flags/WS.png differ diff --git a/riot/img/flags/YE.png b/riot/img/flags/YE.png new file mode 100644 index 0000000..8b9bbd8 Binary files /dev/null and b/riot/img/flags/YE.png differ diff --git a/riot/img/flags/YT.png b/riot/img/flags/YT.png new file mode 100644 index 0000000..3288793 Binary files /dev/null and b/riot/img/flags/YT.png differ diff --git a/riot/img/flags/ZA.png b/riot/img/flags/ZA.png new file mode 100644 index 0000000..7f0a52d Binary files /dev/null and b/riot/img/flags/ZA.png differ diff --git a/riot/img/flags/ZM.png b/riot/img/flags/ZM.png new file mode 100644 index 0000000..87adc3a Binary files /dev/null and b/riot/img/flags/ZM.png differ diff --git a/riot/img/flags/ZW.png b/riot/img/flags/ZW.png new file mode 100644 index 0000000..742c9f7 Binary files /dev/null and b/riot/img/flags/ZW.png differ diff --git a/riot/img/fullscreen.svg b/riot/img/fullscreen.svg new file mode 100644 index 0000000..e333abb --- /dev/null +++ b/riot/img/fullscreen.svg @@ -0,0 +1,23 @@ + + + + Zoom + Created with Sketch. + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/hangup.svg b/riot/img/hangup.svg new file mode 100644 index 0000000..be038d2 --- /dev/null +++ b/riot/img/hangup.svg @@ -0,0 +1,15 @@ + + + + Fill 72 + Path 98 + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/hide.png b/riot/img/hide.png new file mode 100644 index 0000000..c5aaf0d Binary files /dev/null and b/riot/img/hide.png differ diff --git a/riot/img/icon-address-delete.svg b/riot/img/icon-address-delete.svg new file mode 100644 index 0000000..1289d5a --- /dev/null +++ b/riot/img/icon-address-delete.svg @@ -0,0 +1,15 @@ + + + + 943783E9-DBD7-4D4E-BAC9-35437C17C2C4 + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon-call.svg b/riot/img/icon-call.svg new file mode 100644 index 0000000..0ca5c29 --- /dev/null +++ b/riot/img/icon-call.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/riot/img/icon-context-delete.svg b/riot/img/icon-context-delete.svg new file mode 100644 index 0000000..fba9fa1 --- /dev/null +++ b/riot/img/icon-context-delete.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/riot/img/icon-context-fave-on.svg b/riot/img/icon-context-fave-on.svg new file mode 100644 index 0000000..2ae172d --- /dev/null +++ b/riot/img/icon-context-fave-on.svg @@ -0,0 +1,15 @@ + + + + DAE17B64-40B5-478A-8E8D-97AD1A6E25C8 + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon-context-fave.svg b/riot/img/icon-context-fave.svg new file mode 100644 index 0000000..451e184 --- /dev/null +++ b/riot/img/icon-context-fave.svg @@ -0,0 +1,15 @@ + + + + 8A6E1837-F0F1-432E-A0DA-6F3741F71EBF + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon-context-low-on.svg b/riot/img/icon-context-low-on.svg new file mode 100644 index 0000000..7578c63 --- /dev/null +++ b/riot/img/icon-context-low-on.svg @@ -0,0 +1,15 @@ + + + + CD51482C-F2D4-4F63-AF9E-86513F9AF87F + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon-context-low.svg b/riot/img/icon-context-low.svg new file mode 100644 index 0000000..663f3ca --- /dev/null +++ b/riot/img/icon-context-low.svg @@ -0,0 +1,15 @@ + + + + B160345F-40D3-4BE6-A860-6D04BF223EF7 + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon-context-mute-mentions.svg b/riot/img/icon-context-mute-mentions.svg new file mode 100644 index 0000000..3693b7a --- /dev/null +++ b/riot/img/icon-context-mute-mentions.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/riot/img/icon-context-mute-off-copy.svg b/riot/img/icon-context-mute-off-copy.svg new file mode 100644 index 0000000..861f297 --- /dev/null +++ b/riot/img/icon-context-mute-off-copy.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/riot/img/icon-context-mute-off.svg b/riot/img/icon-context-mute-off.svg new file mode 100644 index 0000000..d801823 --- /dev/null +++ b/riot/img/icon-context-mute-off.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/riot/img/icon-context-mute.svg b/riot/img/icon-context-mute.svg new file mode 100644 index 0000000..f53b868 --- /dev/null +++ b/riot/img/icon-context-mute.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/riot/img/icon-delete-pink.svg b/riot/img/icon-delete-pink.svg new file mode 100644 index 0000000..aafa87f --- /dev/null +++ b/riot/img/icon-delete-pink.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/riot/img/icon-email-user.svg b/riot/img/icon-email-user.svg new file mode 100644 index 0000000..2d41e06 --- /dev/null +++ b/riot/img/icon-email-user.svg @@ -0,0 +1,17 @@ + + + + 6F488856-F8EF-479C-9747-AB6E0945C7DE + Created with sketchtool. + + + + + + + + + + + + diff --git a/riot/img/icon-invite-people.svg b/riot/img/icon-invite-people.svg new file mode 100644 index 0000000..f13a03e --- /dev/null +++ b/riot/img/icon-invite-people.svg @@ -0,0 +1,24 @@ + + + + 9BA71BF4-DC4F-42D2-B2D0-9EAE0F7F8D45 + Created with sketchtool. + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icon-mx-user.svg b/riot/img/icon-mx-user.svg new file mode 100644 index 0000000..5780277 --- /dev/null +++ b/riot/img/icon-mx-user.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/riot/img/icon-return.svg b/riot/img/icon-return.svg new file mode 100644 index 0000000..80da0f8 --- /dev/null +++ b/riot/img/icon-return.svg @@ -0,0 +1,18 @@ + + + + B542A09B-DBBF-41D4-A5FD-D05EE1E6BBC4 + Created with sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/icon-text-cancel.svg b/riot/img/icon-text-cancel.svg new file mode 100644 index 0000000..ce28d12 --- /dev/null +++ b/riot/img/icon-text-cancel.svg @@ -0,0 +1,15 @@ + + + + 28D80248-63BA-4A5F-9216-4CFE72784BAC + Created with sketchtool. + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/icon_context_delete.svg b/riot/img/icon_context_delete.svg new file mode 100644 index 0000000..896b94a --- /dev/null +++ b/riot/img/icon_context_delete.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/riot/img/icon_context_fave.svg b/riot/img/icon_context_fave.svg new file mode 100644 index 0000000..da7b14a --- /dev/null +++ b/riot/img/icon_context_fave.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/riot/img/icon_context_fave_on.svg b/riot/img/icon_context_fave_on.svg new file mode 100644 index 0000000..e22e92d --- /dev/null +++ b/riot/img/icon_context_fave_on.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icon_context_low.svg b/riot/img/icon_context_low.svg new file mode 100644 index 0000000..ea579ef --- /dev/null +++ b/riot/img/icon_context_low.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/riot/img/icon_context_low_on.svg b/riot/img/icon_context_low_on.svg new file mode 100644 index 0000000..28300f9 --- /dev/null +++ b/riot/img/icon_context_low_on.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icon_context_message.svg b/riot/img/icon_context_message.svg new file mode 100644 index 0000000..f2ceccf --- /dev/null +++ b/riot/img/icon_context_message.svg @@ -0,0 +1,15 @@ + + + + ED5D3E59-2561-4AC1-9B43-82FBC51767FC + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon_context_message_dark.svg b/riot/img/icon_context_message_dark.svg new file mode 100644 index 0000000..b4336cc --- /dev/null +++ b/riot/img/icon_context_message_dark.svg @@ -0,0 +1,15 @@ + + + + ED5D3E59-2561-4AC1-9B43-82FBC51767FC + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon_context_person.svg b/riot/img/icon_context_person.svg new file mode 100644 index 0000000..fff019d --- /dev/null +++ b/riot/img/icon_context_person.svg @@ -0,0 +1,85 @@ + + + + + + image/svg+xml + + 81230A28-D944-4572-B5DB-C03CAA2B1FCA + + + + + + 81230A28-D944-4572-B5DB-C03CAA2B1FCA + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon_context_person_on.svg b/riot/img/icon_context_person_on.svg new file mode 100644 index 0000000..3629443 --- /dev/null +++ b/riot/img/icon_context_person_on.svg @@ -0,0 +1,85 @@ + + + + + + image/svg+xml + + 81230A28-D944-4572-B5DB-C03CAA2B1FCA + + + + + + 81230A28-D944-4572-B5DB-C03CAA2B1FCA + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icon_copy_message.svg b/riot/img/icon_copy_message.svg new file mode 100644 index 0000000..8d8887b --- /dev/null +++ b/riot/img/icon_copy_message.svg @@ -0,0 +1,86 @@ + + + + + + image/svg+xml + + ED5D3E59-2561-4AC1-9B43-82FBC51767FC + + + + + + ED5D3E59-2561-4AC1-9B43-82FBC51767FC + Created with sketchtool. + + + + + + + + + diff --git a/riot/img/icon_copy_message_dark.svg b/riot/img/icon_copy_message_dark.svg new file mode 100644 index 0000000..b81e617 --- /dev/null +++ b/riot/img/icon_copy_message_dark.svg @@ -0,0 +1,77 @@ + + + + + + image/svg+xml + + ED5D3E59-2561-4AC1-9B43-82FBC51767FC + + + + + + ED5D3E59-2561-4AC1-9B43-82FBC51767FC + Created with sketchtool. + + + + + + + diff --git a/riot/img/icon_person.svg b/riot/img/icon_person.svg new file mode 100644 index 0000000..4be70df --- /dev/null +++ b/riot/img/icon_person.svg @@ -0,0 +1,23 @@ + + + + 815EF7DE-169A-4322-AE2A-B65CBE91DCED + Created with sketchtool. + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icons-apps-active.svg b/riot/img/icons-apps-active.svg new file mode 100644 index 0000000..ea222d0 --- /dev/null +++ b/riot/img/icons-apps-active.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icons-apps.svg b/riot/img/icons-apps.svg new file mode 100644 index 0000000..affd8e6 --- /dev/null +++ b/riot/img/icons-apps.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/riot/img/icons-close-button.svg b/riot/img/icons-close-button.svg new file mode 100644 index 0000000..f960d73 --- /dev/null +++ b/riot/img/icons-close-button.svg @@ -0,0 +1,15 @@ + + + + 206C270A-EB00-48E4-8CC3-5D403C59177C + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icons-close.svg b/riot/img/icons-close.svg new file mode 100644 index 0000000..453b510 --- /dev/null +++ b/riot/img/icons-close.svg @@ -0,0 +1,23 @@ + + + + +icons_create_room +Created with sketchtool. + + + + + + + + + + + + + + diff --git a/riot/img/icons-create-room.svg b/riot/img/icons-create-room.svg new file mode 100644 index 0000000..252bd2d --- /dev/null +++ b/riot/img/icons-create-room.svg @@ -0,0 +1,18 @@ + + + + 0F9BCC43-B3A7-4C9F-8E34-1F38194362C2 + Created with sketchtool. + + + + + + + + + + + + + diff --git a/riot/img/icons-directory.svg b/riot/img/icons-directory.svg new file mode 100644 index 0000000..2688b84 --- /dev/null +++ b/riot/img/icons-directory.svg @@ -0,0 +1,24 @@ + + + + icons_directory + Created with Sketch. + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/icons-files.svg b/riot/img/icons-files.svg new file mode 100644 index 0000000..97ba422 --- /dev/null +++ b/riot/img/icons-files.svg @@ -0,0 +1,29 @@ + + + + 7C98C075-AB4D-45A3-85F9-CCD46F84DA7F + Created with sketchtool. + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/icons-groups.svg b/riot/img/icons-groups.svg new file mode 100644 index 0000000..8f89ba8 --- /dev/null +++ b/riot/img/icons-groups.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icons-hide-apps.svg b/riot/img/icons-hide-apps.svg new file mode 100644 index 0000000..b622e97 --- /dev/null +++ b/riot/img/icons-hide-apps.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icons-hide-stickers.svg b/riot/img/icons-hide-stickers.svg new file mode 100644 index 0000000..f28e864 --- /dev/null +++ b/riot/img/icons-hide-stickers.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/riot/img/icons-home.svg b/riot/img/icons-home.svg new file mode 100644 index 0000000..eb5484c --- /dev/null +++ b/riot/img/icons-home.svg @@ -0,0 +1,27 @@ + + + + + + 81230A28-D944-4572-B5DB-C03CAA2B1FCA + Created with sketchtool. + + + + + + + + + + + + + + + + + diff --git a/riot/img/icons-notifications.svg b/riot/img/icons-notifications.svg new file mode 100644 index 0000000..66a49d6 --- /dev/null +++ b/riot/img/icons-notifications.svg @@ -0,0 +1,19 @@ + + + + 5E723325-BD0B-454D-BE25-638AF09A97AC + Created with sketchtool. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/icons-people.svg b/riot/img/icons-people.svg new file mode 100644 index 0000000..8854506 --- /dev/null +++ b/riot/img/icons-people.svg @@ -0,0 +1,22 @@ + + + + 81230A28-D944-4572-B5DB-C03CAA2B1FCA + Created with sketchtool. + + + + + + + + + + + + + + + + + diff --git a/riot/img/icons-pin.svg b/riot/img/icons-pin.svg new file mode 100644 index 0000000..a6fbf13 --- /dev/null +++ b/riot/img/icons-pin.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/riot/img/icons-room-add.svg b/riot/img/icons-room-add.svg new file mode 100644 index 0000000..fc0ab75 --- /dev/null +++ b/riot/img/icons-room-add.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + diff --git a/riot/img/icons-room.svg b/riot/img/icons-room.svg new file mode 100644 index 0000000..d2abb21 --- /dev/null +++ b/riot/img/icons-room.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/riot/img/icons-search-copy.svg b/riot/img/icons-search-copy.svg new file mode 100644 index 0000000..b026718 --- /dev/null +++ b/riot/img/icons-search-copy.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/riot/img/icons-search.svg b/riot/img/icons-search.svg new file mode 100644 index 0000000..d85709e --- /dev/null +++ b/riot/img/icons-search.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/riot/img/icons-settings-room.svg b/riot/img/icons-settings-room.svg new file mode 100644 index 0000000..117d134 --- /dev/null +++ b/riot/img/icons-settings-room.svg @@ -0,0 +1,15 @@ + + + + 69011392-CE9D-4404-A85C-A8548C5D850B + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icons-settings.svg b/riot/img/icons-settings.svg new file mode 100644 index 0000000..3ca2b65 --- /dev/null +++ b/riot/img/icons-settings.svg @@ -0,0 +1,15 @@ + + + + 4D42A2A7-7430-4D4F-A0A2-E19278CF66E3 + Created with sketchtool. + + + + + + + + + + diff --git a/riot/img/icons-share.svg b/riot/img/icons-share.svg new file mode 100644 index 0000000..b27616d --- /dev/null +++ b/riot/img/icons-share.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/riot/img/icons-show-apps.svg b/riot/img/icons-show-apps.svg new file mode 100644 index 0000000..3438157 --- /dev/null +++ b/riot/img/icons-show-apps.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/icons-show-stickers.svg b/riot/img/icons-show-stickers.svg new file mode 100644 index 0000000..26779a3 --- /dev/null +++ b/riot/img/icons-show-stickers.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/riot/img/icons-upload.svg b/riot/img/icons-upload.svg new file mode 100644 index 0000000..b0101e8 --- /dev/null +++ b/riot/img/icons-upload.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/riot/img/icons-video.svg b/riot/img/icons-video.svg new file mode 100644 index 0000000..d367f49 --- /dev/null +++ b/riot/img/icons-video.svg @@ -0,0 +1,20 @@ + + + + 05D354CE-86A7-4B6F-B9BE-F1CEBBD81B21 + Created with sketchtool. + + + + + + + + + + + + + + + diff --git a/riot/img/icons_ellipsis.svg b/riot/img/icons_ellipsis.svg new file mode 100644 index 0000000..ba600cc --- /dev/null +++ b/riot/img/icons_ellipsis.svg @@ -0,0 +1 @@ + diff --git a/riot/img/icons_global.svg b/riot/img/icons_global.svg new file mode 100644 index 0000000..6c07d3c --- /dev/null +++ b/riot/img/icons_global.svg @@ -0,0 +1,19 @@ + + + + icons_global copy 4 + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/info.png b/riot/img/info.png new file mode 100644 index 0000000..699fd64 Binary files /dev/null and b/riot/img/info.png differ diff --git a/riot/img/leave.svg b/riot/img/leave.svg new file mode 100644 index 0000000..1acbe59 --- /dev/null +++ b/riot/img/leave.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/list-close.png b/riot/img/list-close.png new file mode 100644 index 0000000..82b322f Binary files /dev/null and b/riot/img/list-close.png differ diff --git a/riot/img/list-close.svg b/riot/img/list-close.svg new file mode 100644 index 0000000..cd88b2a --- /dev/null +++ b/riot/img/list-close.svg @@ -0,0 +1,15 @@ + + + + +Slice 1 +Created with Sketch. + + + + diff --git a/riot/img/list-open.png b/riot/img/list-open.png new file mode 100644 index 0000000..f8c8063 Binary files /dev/null and b/riot/img/list-open.png differ diff --git a/riot/img/list-open.svg b/riot/img/list-open.svg new file mode 100644 index 0000000..e180be8 --- /dev/null +++ b/riot/img/list-open.svg @@ -0,0 +1,15 @@ + + + + +Slice 1 +Created with Sketch. + + + + diff --git a/riot/img/matrix-m.svg b/riot/img/matrix-m.svg new file mode 100644 index 0000000..ccb1df0 --- /dev/null +++ b/riot/img/matrix-m.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/riot/img/maximise.svg b/riot/img/maximise.svg new file mode 100644 index 0000000..79c6c0a --- /dev/null +++ b/riot/img/maximise.svg @@ -0,0 +1,19 @@ + + + +minimise +Created with sketchtool. + + + + + + + + + + + + diff --git a/riot/img/maximize.svg b/riot/img/maximize.svg new file mode 100644 index 0000000..4f9e101 --- /dev/null +++ b/riot/img/maximize.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/riot/img/member_chevron.png b/riot/img/member_chevron.png new file mode 100644 index 0000000..cbbd289 Binary files /dev/null and b/riot/img/member_chevron.png differ diff --git a/riot/img/menu.png b/riot/img/menu.png new file mode 100755 index 0000000..b45f889 Binary files /dev/null and b/riot/img/menu.png differ diff --git a/riot/img/minimise.svg b/riot/img/minimise.svg new file mode 100644 index 0000000..491756b --- /dev/null +++ b/riot/img/minimise.svg @@ -0,0 +1,18 @@ + + + + minimise + Created with sketchtool. + + + + + + + + + + + + + diff --git a/riot/img/minimize.svg b/riot/img/minimize.svg new file mode 100644 index 0000000..410b0bc --- /dev/null +++ b/riot/img/minimize.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/riot/img/mod.svg b/riot/img/mod.svg new file mode 100644 index 0000000..847baf9 --- /dev/null +++ b/riot/img/mod.svg @@ -0,0 +1,16 @@ + + + + icons_admin + Created with sketchtool. + + + + + + + + + + + diff --git a/riot/img/network-matrix.svg b/riot/img/network-matrix.svg new file mode 100644 index 0000000..bb8278a --- /dev/null +++ b/riot/img/network-matrix.svg @@ -0,0 +1,14 @@ + + + + + + + diff --git a/riot/img/newmessages.png b/riot/img/newmessages.png new file mode 100644 index 0000000..a22156a Binary files /dev/null and b/riot/img/newmessages.png differ diff --git a/riot/img/newmessages.svg b/riot/img/newmessages.svg new file mode 100644 index 0000000..a2ffca9 --- /dev/null +++ b/riot/img/newmessages.svg @@ -0,0 +1,15 @@ + + + + icon_newmessages + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/notif-active.svg b/riot/img/notif-active.svg new file mode 100644 index 0000000..9eb279f --- /dev/null +++ b/riot/img/notif-active.svg @@ -0,0 +1,20 @@ + + + + E15782FC-B5FA-472A-AE12-CFFF484E7253 + Created with sketchtool. + + + + + + + + + + + + + + + diff --git a/riot/img/notif-slider.svg b/riot/img/notif-slider.svg new file mode 100644 index 0000000..55fa06d --- /dev/null +++ b/riot/img/notif-slider.svg @@ -0,0 +1,22 @@ + + + + 16CB4618-0BD3-4568-BB20-FC56EBC46046 + Created with sketchtool. + + + + + + + + + + + + + + + + + diff --git a/riot/img/placeholder.png b/riot/img/placeholder.png new file mode 100644 index 0000000..7da32f2 Binary files /dev/null and b/riot/img/placeholder.png differ diff --git a/riot/img/plus.svg b/riot/img/plus.svg new file mode 100644 index 0000000..e1d59ec --- /dev/null +++ b/riot/img/plus.svg @@ -0,0 +1,13 @@ + + + + Line + Line + Created with Sketch. + + + + + + + + diff --git a/riot/img/right_search.svg b/riot/img/right_search.svg new file mode 100644 index 0000000..b430a6b --- /dev/null +++ b/riot/img/right_search.svg @@ -0,0 +1,17 @@ + + + + right_search + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/room-continuation.svg b/riot/img/room-continuation.svg new file mode 100644 index 0000000..dc7e154 --- /dev/null +++ b/riot/img/room-continuation.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/riot/img/room_replaced.svg b/riot/img/room_replaced.svg new file mode 100644 index 0000000..fa5abd1 --- /dev/null +++ b/riot/img/room_replaced.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/riot/img/scrolldown.svg b/riot/img/scrolldown.svg new file mode 100644 index 0000000..d6599c5 --- /dev/null +++ b/riot/img/scrolldown.svg @@ -0,0 +1,15 @@ + + + + icon_newmessages + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/scrollto.svg b/riot/img/scrollto.svg new file mode 100644 index 0000000..75df053 --- /dev/null +++ b/riot/img/scrollto.svg @@ -0,0 +1,21 @@ + + + + Slice 1 + Created with Sketch. + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/scrollup.svg b/riot/img/scrollup.svg new file mode 100644 index 0000000..1692f2a --- /dev/null +++ b/riot/img/scrollup.svg @@ -0,0 +1,91 @@ + + + + + + image/svg+xml + + + + + + + icon_newmessages + Created with Sketch. + + + + + + + + + + diff --git a/riot/img/search-button.svg b/riot/img/search-button.svg new file mode 100644 index 0000000..f480884 --- /dev/null +++ b/riot/img/search-button.svg @@ -0,0 +1,15 @@ + + + + icon_search + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/search-icon-vector.svg b/riot/img/search-icon-vector.svg new file mode 100644 index 0000000..5780277 --- /dev/null +++ b/riot/img/search-icon-vector.svg @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/riot/img/search.png b/riot/img/search.png new file mode 100644 index 0000000..2f98d29 Binary files /dev/null and b/riot/img/search.png differ diff --git a/riot/img/search.svg b/riot/img/search.svg new file mode 100644 index 0000000..bd4cd92 --- /dev/null +++ b/riot/img/search.svg @@ -0,0 +1,17 @@ + + + + icons_search + Created with bin/sketchtool. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/selected.png b/riot/img/selected.png new file mode 100644 index 0000000..8931cba Binary files /dev/null and b/riot/img/selected.png differ diff --git a/riot/img/settings-big.png b/riot/img/settings-big.png new file mode 100644 index 0000000..cb2e0a6 Binary files /dev/null and b/riot/img/settings-big.png differ diff --git a/riot/img/settings-big.svg b/riot/img/settings-big.svg new file mode 100644 index 0000000..c9587d5 --- /dev/null +++ b/riot/img/settings-big.svg @@ -0,0 +1,18 @@ + + + + icons_settings + Created with sketchtool. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/settings.png b/riot/img/settings.png new file mode 100644 index 0000000..264b3c9 Binary files /dev/null and b/riot/img/settings.png differ diff --git a/riot/img/settings.svg b/riot/img/settings.svg new file mode 100644 index 0000000..4190c7b --- /dev/null +++ b/riot/img/settings.svg @@ -0,0 +1,12 @@ + + + + icon_settings_small + Created with bin/sketchtool. + + + + + + + \ No newline at end of file diff --git a/riot/img/social/email-1.png b/riot/img/social/email-1.png new file mode 100644 index 0000000..193cb65 Binary files /dev/null and b/riot/img/social/email-1.png differ diff --git a/riot/img/social/facebook.png b/riot/img/social/facebook.png new file mode 100644 index 0000000..457ef76 Binary files /dev/null and b/riot/img/social/facebook.png differ diff --git a/riot/img/social/linkedin.png b/riot/img/social/linkedin.png new file mode 100644 index 0000000..4c92adb Binary files /dev/null and b/riot/img/social/linkedin.png differ diff --git a/riot/img/social/reddit.png b/riot/img/social/reddit.png new file mode 100644 index 0000000..1310168 Binary files /dev/null and b/riot/img/social/reddit.png differ diff --git a/riot/img/social/twitter-2.png b/riot/img/social/twitter-2.png new file mode 100644 index 0000000..9f6e7c6 Binary files /dev/null and b/riot/img/social/twitter-2.png differ diff --git a/riot/img/sound-indicator.svg b/riot/img/sound-indicator.svg new file mode 100644 index 0000000..9b8de53 --- /dev/null +++ b/riot/img/sound-indicator.svg @@ -0,0 +1,17 @@ + + + + sound_indicator + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/spinner.gif b/riot/img/spinner.gif new file mode 100644 index 0000000..ab48712 Binary files /dev/null and b/riot/img/spinner.gif differ diff --git a/riot/img/stickerpack-placeholder.png b/riot/img/stickerpack-placeholder.png new file mode 100644 index 0000000..7980114 Binary files /dev/null and b/riot/img/stickerpack-placeholder.png differ diff --git a/riot/img/tick.svg b/riot/img/tick.svg new file mode 100644 index 0000000..6177f15 --- /dev/null +++ b/riot/img/tick.svg @@ -0,0 +1,12 @@ + + + + icon_tick + Created with sketchtool. + + + + + + + diff --git a/riot/img/trans.png b/riot/img/trans.png new file mode 100644 index 0000000..8ba2310 Binary files /dev/null and b/riot/img/trans.png differ diff --git a/riot/img/typing.png b/riot/img/typing.png new file mode 100644 index 0000000..066a0ce Binary files /dev/null and b/riot/img/typing.png differ diff --git a/riot/img/upload-big.png b/riot/img/upload-big.png new file mode 100644 index 0000000..c11c0c4 Binary files /dev/null and b/riot/img/upload-big.png differ diff --git a/riot/img/upload-big.svg b/riot/img/upload-big.svg new file mode 100644 index 0000000..6099c2e --- /dev/null +++ b/riot/img/upload-big.svg @@ -0,0 +1,19 @@ + + + + icons_upload_drop + Created with bin/sketchtool. + + + + + + + + + + + + + + diff --git a/riot/img/upload.png b/riot/img/upload.png new file mode 100644 index 0000000..7457bcd Binary files /dev/null and b/riot/img/upload.png differ diff --git a/riot/img/upload.svg b/riot/img/upload.svg new file mode 100644 index 0000000..039014a --- /dev/null +++ b/riot/img/upload.svg @@ -0,0 +1,19 @@ + + + + icons_upload + Created with bin/sketchtool. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/video-mute.svg b/riot/img/video-mute.svg new file mode 100644 index 0000000..6de60ba --- /dev/null +++ b/riot/img/video-mute.svg @@ -0,0 +1,17 @@ + + + + icons_video copy + Created with Sketch. + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/video-unmute.svg b/riot/img/video-unmute.svg new file mode 100644 index 0000000..a6c6c3b --- /dev/null +++ b/riot/img/video-unmute.svg @@ -0,0 +1,18 @@ + + + + icons_video copy + Created with Sketch. + + + + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/video.png b/riot/img/video.png new file mode 100644 index 0000000..2a788f6 Binary files /dev/null and b/riot/img/video.png differ diff --git a/riot/img/voice-mute.svg b/riot/img/voice-mute.svg new file mode 100644 index 0000000..3366410 --- /dev/null +++ b/riot/img/voice-mute.svg @@ -0,0 +1,14 @@ + + + + Audio + Created with Sketch. + + + + + + + + + \ No newline at end of file diff --git a/riot/img/voice-unmute.svg b/riot/img/voice-unmute.svg new file mode 100644 index 0000000..0d7e6f4 --- /dev/null +++ b/riot/img/voice-unmute.svg @@ -0,0 +1,15 @@ + + + + Audio + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/riot/img/voice.png b/riot/img/voice.png new file mode 100644 index 0000000..5ba765b Binary files /dev/null and b/riot/img/voice.png differ diff --git a/riot/img/voice.svg b/riot/img/voice.svg new file mode 100644 index 0000000..ff87270 --- /dev/null +++ b/riot/img/voice.svg @@ -0,0 +1,13 @@ + + + + icon_voice + Created with Sketch. + + + + + + + + \ No newline at end of file diff --git a/riot/img/voip-chevron.svg b/riot/img/voip-chevron.svg new file mode 100644 index 0000000..5f7cbe7 --- /dev/null +++ b/riot/img/voip-chevron.svg @@ -0,0 +1,12 @@ + + + + Triangle 1 + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/riot/img/voip-mute.png b/riot/img/voip-mute.png new file mode 100644 index 0000000..a16d100 Binary files /dev/null and b/riot/img/voip-mute.png differ diff --git a/riot/img/voip.png b/riot/img/voip.png new file mode 100644 index 0000000..e8f05bc Binary files /dev/null and b/riot/img/voip.png differ diff --git a/riot/img/warning.png b/riot/img/warning.png new file mode 100644 index 0000000..c555353 Binary files /dev/null and b/riot/img/warning.png differ diff --git a/riot/img/warning.svg b/riot/img/warning.svg new file mode 100644 index 0000000..b9a96a8 --- /dev/null +++ b/riot/img/warning.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/warning2.png b/riot/img/warning2.png new file mode 100644 index 0000000..db0fd4a Binary files /dev/null and b/riot/img/warning2.png differ diff --git a/riot/img/warning_yellow.svg b/riot/img/warning_yellow.svg new file mode 100644 index 0000000..4d22751 --- /dev/null +++ b/riot/img/warning_yellow.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/img/zoom.png b/riot/img/zoom.png new file mode 100644 index 0000000..f05ea95 Binary files /dev/null and b/riot/img/zoom.png differ diff --git a/riot/index.html b/riot/index.html new file mode 100644 index 0000000..73356e7 --- /dev/null +++ b/riot/index.html @@ -0,0 +1,75 @@ + + + + + Riot + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/riot/manifest.json b/riot/manifest.json new file mode 100644 index 0000000..75b1821 --- /dev/null +++ b/riot/manifest.json @@ -0,0 +1,56 @@ +{ + "name": "Riot - open team collaboration", + "short_name": "Riot", + "display": "standalone", + "theme_color": "#76CFA6", + "start_url": "index.html", + "icons": [ + { + "src": "vector-icons/android-chrome-36x36.png", + "sizes": "36x36", + "type": "image\/png", + "density": "0.75" + }, + { + "src": "vector-icons/android-chrome-48x48.png", + "sizes": "48x48", + "type": "image\/png", + "density": "1.0" + }, + { + "src": "vector-icons/android-chrome-72x72.png", + "sizes": "72x72", + "type": "image\/png", + "density": "1.5" + }, + { + "src": "vector-icons/android-chrome-96x96.png", + "sizes": "96x96", + "type": "image\/png", + "density": "2.0" + }, + { + "src": "vector-icons/android-chrome-144x144.png", + "sizes": "144x144", + "type": "image\/png", + "density": "3.0" + }, + { + "src": "vector-icons/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image\/png", + "density": "4.0" + } + ], + "related_applications": [ + { + "platform": "play", + "url": "https://play.google.com/store/apps/details?id=im.vector.alpha", + "id": "im.vector.alpha" + }, + { + "platform": "itunes", + "url": "https://itunes.apple.com/gb/app/riot-open-source-team-collaboration-via-matrix/id1083446067" + } + ] +} diff --git a/riot/media/busy.mp3 b/riot/media/busy.mp3 new file mode 100644 index 0000000..fec27ba Binary files /dev/null and b/riot/media/busy.mp3 differ diff --git a/riot/media/busy.ogg b/riot/media/busy.ogg new file mode 100644 index 0000000..5d64a7d Binary files /dev/null and b/riot/media/busy.ogg differ diff --git a/riot/media/callend.mp3 b/riot/media/callend.mp3 new file mode 100644 index 0000000..50c34e5 Binary files /dev/null and b/riot/media/callend.mp3 differ diff --git a/riot/media/callend.ogg b/riot/media/callend.ogg new file mode 100644 index 0000000..927ce1f Binary files /dev/null and b/riot/media/callend.ogg differ diff --git a/riot/media/message.mp3 b/riot/media/message.mp3 new file mode 100644 index 0000000..b87eeda Binary files /dev/null and b/riot/media/message.mp3 differ diff --git a/riot/media/message.ogg b/riot/media/message.ogg new file mode 100644 index 0000000..adc7443 Binary files /dev/null and b/riot/media/message.ogg differ diff --git a/riot/media/ring.mp3 b/riot/media/ring.mp3 new file mode 100644 index 0000000..36200cd Binary files /dev/null and b/riot/media/ring.mp3 differ diff --git a/riot/media/ring.ogg b/riot/media/ring.ogg new file mode 100644 index 0000000..708213b Binary files /dev/null and b/riot/media/ring.ogg differ diff --git a/riot/media/ringback.mp3 b/riot/media/ringback.mp3 new file mode 100644 index 0000000..6ee34bf Binary files /dev/null and b/riot/media/ringback.mp3 differ diff --git a/riot/media/ringback.ogg b/riot/media/ringback.ogg new file mode 100644 index 0000000..7dbfdcd Binary files /dev/null and b/riot/media/ringback.ogg differ diff --git a/riot/mobile_guide/index.html b/riot/mobile_guide/index.html new file mode 100644 index 0000000..b62df16 --- /dev/null +++ b/riot/mobile_guide/index.html @@ -0,0 +1,386 @@ + + + + + + + + + + +
+ + + +
+
+
+

Step 2: Register or Log in

+

Create a new account if you don't have one, or log in to your existing account.

+
+
+
+
+ +
+
+ + diff --git a/riot/themes/dark/css/_dark.scss b/riot/themes/dark/css/_dark.scss new file mode 100644 index 0000000..8ab3387 --- /dev/null +++ b/riot/themes/dark/css/_dark.scss @@ -0,0 +1,206 @@ + +// typical text (dark-on-white in light skin) +$primary-fg-color: #dddddd; +$primary-bg-color: #2d2d2d; + +// used for focusing form controls +$focus-bg-color: #101010; + +// used for dialog box text +$light-fg-color: #747474; + +// button UI (white-on-green in light skin) +$accent-fg-color: $primary-bg-color; +$accent-color: #76CFA6; + +$selection-fg-color: $primary-fg-color; + +$focus-brightness: 200%; + +// red warning colour +$warning-color: #ff0064; +$warning-bg-color: #DF2A8B; +$info-bg-color: #2A9EDF; + +// groups +$info-plinth-bg-color: #454545; + +$other-user-pill-bg-color: rgba(255, 255, 255, 0.1); + +$preview-bar-bg-color: #333; + +// left-panel style muted accent color +$secondary-accent-color: $primary-bg-color; +$tertiary-accent-color: #454545; + +// stop the tinter trying to change the secondary accent color +// by overriding the key to something untintable +// XXX: this is a bit of a hack. +#mx_theme_secondaryAccentColor { + color: #c0ffee ! important; +} + +#mx_theme_tertiaryAccentColor { + color: #c0ffee ! important; +} + +// used by RoomDirectory permissions +$plinth-bg-color: #474747; + +// used by RoomDropTarget +$droptarget-bg-color: rgba(45,45,45,0.5); + +// used by AddressSelector +$selected-color: #000000; + +// selected for hoverover & selected event tiles +$event-selected-color: #353535; + +// used for the hairline dividers in RoomView +$primary-hairline-color: #474747; + +// used for the border of input text fields +$input-border-color: #3a3a3a; + +// apart from login forms, which have stronger border +$strong-input-border-color: #656565; + +// used for UserSettings EditableText +$input-underline-color: $primary-fg-color; +$input-fg-color: $primary-fg-color; + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #373737; + +$avatar-initial-color: #2d2d2d; +$avatar-bg-color: #ffffff; + +$h3-color: $primary-fg-color; + +$dialog-background-bg-color: #000; +$lightbox-background-bg-color: #000; + +$greyed-fg-color: #888; + +$neutral-badge-color: #888; + +$preview-widget-bar-color: $menu-bg-color; +$preview-widget-fg-color: $greyed-fg-color; + +$blockquote-bar-color: #ddd; +$blockquote-fg-color: #777; + +$settings-grey-fg-color: #a2a2a2; + +$voip-decline-color: #f48080; +$voip-accept-color: #80f480; + +$rte-bg-color: #353535; +$rte-code-bg-color: #000; + +// ******************** + +$roomtile-name-color: rgba(186, 186, 186, 0.8); +$roomtile-selected-bg-color: #333; +$roomtile-focused-bg-color: rgba(255, 255, 255, 0.2); + +$roomsublist-background: rgba(0, 0, 0, 0.2); +$roomsublist-label-fg-color: $h3-color; +$roomsublist-label-bg-color: $tertiary-accent-color; +$roomsublist-chevron-color: $accent-color; + +$panel-divider-color: rgba(118, 207, 166, 0.2); + +// ******************** + +$widget-menu-bar-bg-color: $tertiary-accent-color; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: rgba(171, 221, 188, 0.4); +$event-sending-color: #888; +$event-notsent-color: #f44; + +// event redaction +$event-redacted-fg-color: #606060; +$event-redacted-border-color: #000000; + +// event timestamp +$event-timestamp-color: #acacac; + +$edit-button-url: "../../img/icon_context_message_dark.svg"; +$copy-button-url: "../../img/icon_copy_message_dark.svg"; + +// e2e +$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color +$e2e-unverified-color: #e8bf37; +$e2e-warning-color: #ba6363; + +/*** ImageView ***/ +$lightbox-bg-color: #454545; +$lightbox-fg-color: #ffffff; +$lightbox-border-color: #ffffff; + +// unused? +$progressbar-color: #000; + +// XXX: copypasted from _base in order to pick up the right FG color... +@define-mixin mx_DialogButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: $font-family; + font-size: 14px; + color: $accent-fg-color; + background-color: $accent-color; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; +} + +// Nasty hacks to apply a filter to arbitrary monochrome artwork to make it +// better match the theme. Typically applied to dark grey 'off' buttons or +// light grey 'on' buttons. +.mx_filterFlipColor { + filter: invert(1); +} + +.gm-scrollbar .thumb { + filter: invert(1); +} + +// markdown overrides: +.mx_EventTile_content .markdown-body pre:hover { + border-color: #808080 !important; // inverted due to rules below +} +.mx_EventTile_content .markdown-body { + pre, code { + filter: invert(1); + } + + pre code { + filter: none; + } + + table { + tr { + background-color: #000000; + } + + tr:nth-child(2n) { + background-color: #080808; + } + } +} + +// Add a line to the right side of the left panel to distinguish it from the middle panel +.mx_LeftPanel { + border-right: 1px solid $tertiary-accent-color; +} diff --git a/riot/themes/dark/css/dark.scss b/riot/themes/dark/css/dark.scss new file mode 100644 index 0000000..b69f096 --- /dev/null +++ b/riot/themes/dark/css/dark.scss @@ -0,0 +1,4 @@ +@import "../../light/css/_base.scss"; +@import "_dark.scss"; +@import "../../../../res/css/_components.scss"; + diff --git a/riot/themes/light/css/_base.scss b/riot/themes/light/css/_base.scss new file mode 100644 index 0000000..c7fd382 --- /dev/null +++ b/riot/themes/light/css/_base.scss @@ -0,0 +1,185 @@ +/* Open Sans lacks combining diacritics, so these will fall through + to the next font. Helevetica's diacritics however do not combine + nicely with Open Sans (on OSX, at least) and result in a huge + horizontal mess. Arial empirically gets it right, hence prioritising + Arial here. */ +$font-family: 'Open Sans', Arial, Helvetica, Sans-Serif; + +// typical text (dark-on-white in light skin) +$primary-fg-color: #454545; +$primary-bg-color: #ffffff; + +// used for dialog box text +$light-fg-color: #747474; + +// used for focusing form controls +$focus-bg-color: #dddddd; + +// button UI (white-on-green in light skin) +$accent-fg-color: #ffffff; +$accent-color: #76CFA6; + +$selection-fg-color: $primary-bg-color; + +$focus-brightness: 125%; + +// red warning colour +$warning-color: #ff0064; +// background colour for warnings +$warning-bg-color: #DF2A8B; +$info-bg-color: #2A9EDF; +$mention-user-pill-bg-color: #ff0064; +$other-user-pill-bg-color: rgba(0, 0, 0, 0.1); + +// pinned events indicator +$pinned-unread-color: #ff0064; // $warning-color +$pinned-color: #888; + +// informational plinth +$info-plinth-bg-color: #f7f7f7; +$info-plinth-fg-color: #888; + +$preview-bar-bg-color: #f7f7f7; + +// left-panel style muted accent color +$secondary-accent-color: #eaf5f0; +$tertiary-accent-color: #d3efe1; + +// used by RoomDirectory permissions +$plinth-bg-color: $secondary-accent-color; + +// used by RoomDropTarget +$droptarget-bg-color: rgba(255,255,255,0.5); + +// used by AddressSelector +$selected-color: $secondary-accent-color; + +// selected for hoverover & selected event tiles +$event-selected-color: #f7f7f7; + +// used for the hairline dividers in RoomView +$primary-hairline-color: #e5e5e5; + +// used for the border of input text fields +$input-border-color: #f0f0f0; + +// apart from login forms, which have stronger border +$strong-input-border-color: #c7c7c7; + +// used for UserSettings EditableText +$input-underline-color: rgba(151, 151, 151, 0.5); +$input-fg-color: rgba(74, 74, 74, 0.9); + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #f6f6f6; + +$avatar-initial-color: #ffffff; +$avatar-bg-color: #ffffff; + +$h3-color: #3d3b39; + +$dialog-background-bg-color: #e9e9e9; +$lightbox-background-bg-color: #000; + +$greyed-fg-color: #888; + +$neutral-badge-color: #dbdbdb; + +$preview-widget-bar-color: #ddd; +$preview-widget-fg-color: $greyed-fg-color; + +$blockquote-bar-color: #ddd; +$blockquote-fg-color: #777; + +$settings-grey-fg-color: #a2a2a2; + +$voip-decline-color: #f48080; +$voip-accept-color: #80f480; + +$rte-bg-color: #e9e9e9; +$rte-code-bg-color: rgba(0, 0, 0, 0.04); +$rte-room-pill-color: #aaa; +$rte-group-pill-color: #aaa; + +// ******************** + +$roomtile-name-color: rgba(69, 69, 69, 0.8); +$roomtile-selected-bg-color: rgba(255, 255, 255, 0.8); +$roomtile-focused-bg-color: rgba(255, 255, 255, 0.9); + +$roomtile-transparent-focused-color: rgba(0, 0, 0, 0.1); + +$roomsublist-background: rgba(0, 0, 0, 0.05); +$roomsublist-label-fg-color: $h3-color; +$roomsublist-label-bg-color: $tertiary-accent-color; +$roomsublist-chevron-color: $accent-color; + +$panel-divider-color: rgba(118, 207, 166, 0.2); + +// ******************** + +$widget-menu-bar-bg-color: $tertiary-accent-color; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: #abddbc; +$event-sending-color: #ddd; +$event-notsent-color: #f44; + +// event redaction +$event-redacted-fg-color: #e2e2e2; +$event-redacted-border-color: #cccccc; + +// event timestamp +$event-timestamp-color: #acacac; + +$edit-button-url: "../../img/icon_context_message.svg"; +$copy-button-url: "../../img/icon_copy_message.svg"; + +// e2e +$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color +$e2e-unverified-color: #e8bf37; +$e2e-warning-color: #ba6363; + +/*** ImageView ***/ +$lightbox-bg-color: #454545; +$lightbox-fg-color: #ffffff; +$lightbox-border-color: #ffffff; + +// unused? +$progressbar-color: #000; + +// ***** Mixins! ***** + +@define-mixin mx_DialogButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border: 0px; + border-radius: 36px; + font-family: $font-family; + font-size: 14px; + color: $accent-fg-color; + background-color: $accent-color; + width: auto; + padding: 7px; + padding-left: 1.5em; + padding-right: 1.5em; + cursor: pointer; + display: inline-block; + outline: none; +} + +@define-mixin mx_DialogButton_danger { + background-color: $warning-color; +} + +@define-mixin mx_DialogButton_hover { +} + +@define-mixin mx_DialogButton_small { + @mixin mx_DialogButton; + font-size: 15px; + padding: 0px 1.5em 0px 1.5em; +} diff --git a/riot/themes/light/css/light.scss b/riot/themes/light/css/light.scss new file mode 100644 index 0000000..2099f41 --- /dev/null +++ b/riot/themes/light/css/light.scss @@ -0,0 +1,3 @@ +@import "_base.scss"; +@import "../../../../res/css/_components.scss"; + diff --git a/riot/themes/riot/img/logos/riot-im-logo-1.png b/riot/themes/riot/img/logos/riot-im-logo-1.png new file mode 100644 index 0000000..768679d Binary files /dev/null and b/riot/themes/riot/img/logos/riot-im-logo-1.png differ diff --git a/riot/themes/riot/img/logos/riot-im-logo-1.svg b/riot/themes/riot/img/logos/riot-im-logo-1.svg new file mode 100644 index 0000000..a806c3b --- /dev/null +++ b/riot/themes/riot/img/logos/riot-im-logo-1.svg @@ -0,0 +1,158 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-im-logo-2.svg b/riot/themes/riot/img/logos/riot-im-logo-2.svg new file mode 100644 index 0000000..f9cc92f --- /dev/null +++ b/riot/themes/riot/img/logos/riot-im-logo-2.svg @@ -0,0 +1,165 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-im-logo-3.svg b/riot/themes/riot/img/logos/riot-im-logo-3.svg new file mode 100644 index 0000000..7f81dac --- /dev/null +++ b/riot/themes/riot/img/logos/riot-im-logo-3.svg @@ -0,0 +1,173 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-im-logo-4.svg b/riot/themes/riot/img/logos/riot-im-logo-4.svg new file mode 100644 index 0000000..307868e --- /dev/null +++ b/riot/themes/riot/img/logos/riot-im-logo-4.svg @@ -0,0 +1,185 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-im-logo-5.svg b/riot/themes/riot/img/logos/riot-im-logo-5.svg new file mode 100644 index 0000000..2653d7c --- /dev/null +++ b/riot/themes/riot/img/logos/riot-im-logo-5.svg @@ -0,0 +1,110 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-logo-1.svg b/riot/themes/riot/img/logos/riot-logo-1.svg new file mode 100644 index 0000000..297608b --- /dev/null +++ b/riot/themes/riot/img/logos/riot-logo-1.svg @@ -0,0 +1 @@ +Asset 4 \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-logo-2.svg b/riot/themes/riot/img/logos/riot-logo-2.svg new file mode 100644 index 0000000..757f623 --- /dev/null +++ b/riot/themes/riot/img/logos/riot-logo-2.svg @@ -0,0 +1 @@ +Asset 2 \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-logo-3.svg b/riot/themes/riot/img/logos/riot-logo-3.svg new file mode 100644 index 0000000..d71b489 --- /dev/null +++ b/riot/themes/riot/img/logos/riot-logo-3.svg @@ -0,0 +1 @@ +Asset 5 \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-logo-4.svg b/riot/themes/riot/img/logos/riot-logo-4.svg new file mode 100644 index 0000000..aa5522f --- /dev/null +++ b/riot/themes/riot/img/logos/riot-logo-4.svg @@ -0,0 +1 @@ +Asset 3 \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-logo-5.svg b/riot/themes/riot/img/logos/riot-logo-5.svg new file mode 100644 index 0000000..6cbc259 --- /dev/null +++ b/riot/themes/riot/img/logos/riot-logo-5.svg @@ -0,0 +1 @@ +Asset 1 \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-logo-bw.svg b/riot/themes/riot/img/logos/riot-logo-bw.svg new file mode 100644 index 0000000..e7d6e86 --- /dev/null +++ b/riot/themes/riot/img/logos/riot-logo-bw.svg @@ -0,0 +1 @@ +Asset 6 \ No newline at end of file diff --git a/riot/themes/riot/img/logos/riot-logo.svg b/riot/themes/riot/img/logos/riot-logo.svg new file mode 100644 index 0000000..cbfaa62 --- /dev/null +++ b/riot/themes/riot/img/logos/riot-logo.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/riot/themes/riot/img/logos/riot.im logo.svg b/riot/themes/riot/img/logos/riot.im logo.svg new file mode 100644 index 0000000..5ebd96e --- /dev/null +++ b/riot/themes/riot/img/logos/riot.im logo.svg @@ -0,0 +1,169 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/riot/themes/status/css/_StatusLogin.scss b/riot/themes/status/css/_StatusLogin.scss new file mode 100644 index 0000000..6872727 --- /dev/null +++ b/riot/themes/status/css/_StatusLogin.scss @@ -0,0 +1,232 @@ +/* +Copyright 2017 New Vector Ltd + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// overrides for mx_Login* specific to Status. +// Ideally this would be all Status prefixes for a Status specific version of the component +// but given we're not doing Status as a dedicated 'skin' yet... + +.mx_StatusLogin { + + width: 100%; + height: 100%; + + display: flex; + align-items: center; + justify-content: center; + + overflow: auto; + + .mx_StatusLogin_brand { + position: absolute; + top: 30px; + left: 30px; + } + + .mx_StatusLogin_content { + margin: auto; + } + + .mx_StatusLogin_header { + text-align: center; + margin-top: 70px; + margin-bottom: 50px; + } + + .mx_StatusLogin_header h1 { + font-size: 29px; + margin-bottom: 3px; + } + + .mx_StatusLogin_subtitle { + font-size: 18px; + } + + .mx_StatusLogin_subtitle a { + color: $riot-link-color; + } + + .mx_StatusLogin_footer { + margin-top: 30px; + margin-bottom: 30px; + text-align: center; + font-size: 16px; + color: $footer-color; + } + + .mx_StatusLogin_footer p { + margin-top: 0.5em; + margin-bottom: 0.5em; + } + + .mx_StatusLogin_footer_cta { + color: $callout-color; + font-family: $header-font-family; + letter-spacing: 1px; + font-size: 13px; + text-transform: uppercase; + opacity: 1.0; + transition: opacity .2s ease; + } + + .mx_StatusLogin_footer_cta:hover { + opacity: 0.5; + text-decoration: none; + } + + // overrides of .mx_Login + + .mx_Login_box { + width: 330px; + min-height: initial; + padding-top: 40px; + padding-bottom: 20px; + padding-left: 10px; + padding-right: 10px; + border-radius: 8px; + color: $form-fg-color; + font-size: 16px; + line-height: 25px; + background-color: $form-bg-color; + background-image: url(../../themes/status/img/dot.svg); + box-shadow: 0px 5px 16px 0px rgba(25,12,46,0.16); + position: relative; + text-align: center; + } + + .mx_Login_logo { + background-color: #fff; + width: 74px; + height: 74px; + border-radius: 37px; + box-shadow: 0px 5px 16px 0px rgba(0,0,0,0.2); + position: absolute; + top: -36px; + left: 50%; + margin-left: -36px; + } + + .mx_Login_logo img { + width: 36px; + height: 36px; + padding: 19px; + } + + .mx_Login_box h2 { + text-align: center; + color: $form-fg-color; + font-size: 25px; + margin-bottom: 24px; + } + + .mx_Login_field { + width: 260px; + height: 27px; + padding: 8px 20px 10px 20px; + border-radius: 10px; + text-align: left; + border: 1px solid transparent; + background-color: $form-field-bg-color; + color: $form-field-fg-color; + font-weight: 300; + font-size: 15px; + margin-bottom: 14px; + transition: background-color .2s ease; + } + + .mx_Login_field:focus { + border: 1px solid transparent; + background-color: $form-field-bg-hover-color; + } + + .mx_Login_field::-webkit-input-placeholder { + font-family: $font-family; + color: $form-field-fg-color; + opacity: 0.6; + } + + .mx_Login_field::-moz-placeholder { + font-family: $font-family; + color: $form-field-fg-color; + opacity: 0.6; + } + + .mx_Login_field_disabled { + opacity: 0.3; + } + + .mx_Login_prompt { + font-size: 16px; + } + + .mx_Login_submit { + min-width: 200px; + width: auto; + margin-top: 13px; + margin-bottom: 10px; + } + + .mx_Login_submit:disabled { + opacity: 0.3; + } + + .mx_Login_create { + margin-top: 10px; + display: block; + text-align: center; + width: 100%; + font-size: 15px; + opacity: 1.0; + } + + .mx_Login_create:link, + .mx_Login_create:hover, + .mx_Login_create:visited + { + color: $form-fg-color; + } + + .mx_Login_forgot { + display: block; + font-size: 15px; + } + + .mx_Login_forgot:link, + .mx_Login_forgot:hover, + .mx_Login_forgot:visited + { + color: $form-fg-color; + } + + .mx_Login_error { + color: $warning-color; + font-size: 18px; + width: 300px; + height: 44px; + display: flex; + justify-content: center; + align-items: center; + margin: auto; + text-align: center; + margin-top: 12px; + margin-bottom: 16px; + } + + .mx_Login_smallError { + font-size: 13px; + line-height: initial; + } + +} diff --git a/riot/themes/status/css/_status.scss b/riot/themes/status/css/_status.scss new file mode 100644 index 0000000..c99af14 --- /dev/null +++ b/riot/themes/status/css/_status.scss @@ -0,0 +1,292 @@ +@font-face { + font-family:PostGrotesk-Medium; + src:url('https://status.im/fonts/PostGrotesk-Medium.eot'); + src:url('https://status.im/fonts/PostGrotesk-Medium.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Medium.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Medium.svg#PostGrotesk-Medium') format("svg"); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family:PostGrotesk-Book; + src:url('https://status.im/fonts/PostGrotesk-Book.eot'); + src:url('https://status.im/fonts/PostGrotesk-Book.eot?#iefix') format("embedded-opentype"),url('https://status.im/fonts/PostGrotesk-Book.woff') format("woff"),url('https://status.im/fonts/PostGrotesk-Book.svg#PostGrotesk-Book') format("svg"); + font-weight: 400; + font-style: normal; +} + +// We deliberately prioritise Arial over Helvetica here due to diacritic problems (see _base.scss) +// N.B. that the status.im website uses: +// font-family:PostGrotesk-Book,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; +// ...but can't be bothered to work out how the apple fonts & segoe interact, so keepingn it simple for now. + +$font-family: PostGrotesk-Book, Arial, Helvetica, Sans-Serif; + +// typical text (dark-on-white in light skin) +$primary-fg-color: #70808D; +$primary-bg-color: #EEF2F5; + +// ***** Start of Status theme specifics ****** +$header-color: #49555F; +$header-font-family: PostGrotesk-Medium, Arial, Helvetica, Sans-Serif; + +$footer-color: #8D99A4; + +$riot-link-color: #A26988; + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +h1,h2,h3,h4,h5 { + color: $header-color; + font-family: $header-font-family; + font-weight: 400 ! important; +} + +$callout-color: #4360DF; // or #4957b8 from status.im homepage + +$form-bg-color: $callout-color; +$form-fg-color: #ffffff; + +$form-field-bg-color: rgba(244, 242, 247, 0.12); +$form-field-bg-hover-color: rgba(255, 255, 255, 0.2); +$form-field-fg-color: #ffffff; + +// ***** End of Status theme specifics ****** + + +// used for dialog box text +$light-fg-color: #747474; + +// used for focusing form controls +$focus-bg-color: #dddddd; + +// button UI (white-on-green in light skin) +$accent-fg-color: #ffffff; +$accent-color: #6CC1F6; +$accent-hover-color: #84cfff; + +$selection-fg-color: $primary-bg-color; + +$focus-brightness: 125%; + +// red warning colour +$warning-color: #F69E98; +$warning-bg-color: #DF2A8B; +$info-bg-color: #2A9EDF; +$mention-user-pill-bg-color: #ff0064; +$other-user-pill-bg-color: rgba(0, 0, 0, 0.1); + +$group-alert-color: #774f7e; + +$preview-bar-bg-color: #f7f7f7; + +// left-panel style muted accent color +$secondary-accent-color: #586C7B; +$tertiary-accent-color: #DBEBF6; + +// stop the tinter trying to change the secondary accent color +// by overriding the key to something untintable +// XXX: this is a bit of a hack. +#mx_theme_secondaryAccentColor { + color: #c0ffee ! important; +} + +#mx_theme_tertiaryAccentColor { + color: #c0ffee ! important; +} + +// used by RoomDirectory permissions +$plinth-bg-color: $secondary-accent-color; + +// used by RoomDropTarget +$droptarget-bg-color: rgba(255,255,255,0.5); + +// used by AddressSelector +$selected-color: #eaf5f0; + +// selected for hoverover & selected event tiles +$event-selected-color: #f7f7f7; + +// used for the hairline dividers in RoomView +$primary-hairline-color: #e5e5e5; + +// used for the border of input text fields +$input-border-color: #c9cfd4; + +// apart from login forms, which have stronger border +$strong-input-border-color: #c7c7c7; + +// used for UserSettings EditableText +$input-underline-color: rgba(151, 151, 151, 0.5); +$input-fg-color: rgba(74, 74, 74, 0.9); + +// context menus +$menu-border-color: rgba(187, 187, 187, 0.5); +$menu-bg-color: #f6f6f6; + +$avatar-initial-color: #ffffff; +$avatar-bg-color: transparent; + +$h3-color: #3d3b39; + +$dialog-background-bg-color: #e9e9e9; +$lightbox-background-bg-color: #000; + +$greyed-fg-color: #888; + +$neutral-badge-color: #dbdbdb; + +$preview-widget-bar-color: #ddd; +$preview-widget-fg-color: $greyed-fg-color; + +$blockquote-bar-color: #ddd; +$blockquote-fg-color: #777; + +$settings-grey-fg-color: #a2a2a2; + +$voip-decline-color: #f48080; +$voip-accept-color: #80f480; + +$rte-bg-color: #e9e9e9; +$rte-code-bg-color: rgba(0, 0, 0, 0.04); +$rte-room-pill-color: #aaa; + +// ******************** + +$roomtile-name-color: #ffffff; +$roomtile-selected-bg-color: #465561; +$roomtile-focused-bg-color: #6d8597; + +$roomsublist-background: rgba(0, 0, 0, 0.2); +$roomsublist-label-fg-color: #ffffff; +$roomsublist-label-bg-color: $secondary-accent-color; +$roomsublist-chevron-color: #ffffff; + +$panel-divider-color: rgba(0, 0, 0, 0.2); + +// ******************** + +$widget-menu-bar-bg-color: #f7f7f7; + +// ******************** + +// event tile lifecycle +$event-encrypting-color: #abddbc; +$event-sending-color: #ddd; +$event-notsent-color: #f44; + +// event redaction +$event-redacted-fg-color: #e2e2e2; +$event-redacted-border-color: #cccccc; + +// event timestamp +$event-timestamp-color: #acacac; + +$edit-button-url: "../../img/icon_context_message.svg"; +$copy-button-url: "../../img/icon_copy_message.svg"; + +// e2e +$e2e-verified-color: #76cfa5; // N.B. *NOT* the same as $accent-color +$e2e-unverified-color: #e8bf37; +$e2e-warning-color: #ba6363; + +/*** ImageView ***/ +$lightbox-bg-color: #454545; +$lightbox-fg-color: #ffffff; +$lightbox-border-color: #ffffff; + +// unused? +$progressbar-color: #000; + +@define-mixin mx_DialogButton { + /* align images in buttons (eg spinners) */ + vertical-align: middle; + border-radius: 8px; + border: 1px solid rgba(199, 206, 209, 0.12); + background-color: $accent-color; + font-size: 13px; + font-family: $header-font-family; + text-transform: uppercase; + letter-spacing: 1px; + color: $accent-fg-color; + cursor: pointer; + outline: none; + padding: 14px; + box-sizing: border-box; + padding-left: 1.5em; + padding-right: 1.5em; + display: inline-block; + transition: background-color .2s ease; +} + +@define-mixin mx_DialogButton_hover { + background-color: $accent-hover-color; +} + +@define-mixin mx_DialogButton_small { + @mixin mx_DialogButton; + height: auto; + padding-top: 7px; + padding-bottom: 7px; + padding-left: 1em; + padding-right: 1em; +} + +.mx_RoomSubList_label { + font-size: 13px; + font-family: $header-font-family; + letter-spacing: 1px; +} + +// FIXME: all these ! importants are horrid - we should instead go and define +// variables or something. +.mx_SearchBox_search { + color: #fff ! important; +} + +.mx_SearchBox_search::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.6) ! important; +} + +.mx_SearchBox_search::-moz-placeholder { + color: rgba(255, 255, 255, 0.6) ! important; +} + +.mx_RoomList_emptySubListTip, +.mx_RoomDropTarget { + font-size: 14px ! important; + border: 1.5px dashed rgba(0,0,0,0.2) ! important; + color: #fff ! important; + background-color: transparent ! important; + border-radius: 6px ! important; + margin-left: 6px ! important; + margin-right: 6px ! important; + margin-top: 8px ! important; + margin-bottom: 7px ! important; + padding: 8px ! important; +} + +.mx_RoomDirectory_perm { + font-family: $header-font-family ! important; + background-color: #fff ! important; +} + +.mx_RoomTile_badge, +.mx_RoomSubList_badge { + height: 12px ! important; + padding-top: 1px ! important; + padding-bottom: 1px ! important; +} + +.mx_RoomSubList_chevron { + top: 8px ! important; +} + +.mx_MemberInfo .mx_RoomTile_name { + color: $primary-fg-color ! important; +} diff --git a/riot/themes/status/css/status.scss b/riot/themes/status/css/status.scss new file mode 100644 index 0000000..b4f6590 --- /dev/null +++ b/riot/themes/status/css/status.scss @@ -0,0 +1,4 @@ +@import "../../../../node_modules/matrix-react-sdk/res/themes/light/css/_base.scss"; +@import "_status.scss"; +@import "../../../../node_modules/matrix-react-sdk/res/css/_components.scss"; +@import "_StatusLogin.scss"; diff --git a/riot/themes/status/fonts/README b/riot/themes/status/fonts/README new file mode 100644 index 0000000..d790014 --- /dev/null +++ b/riot/themes/status/fonts/README @@ -0,0 +1 @@ +We link out to status.im for fonts, although ideally we'd put them here. diff --git a/riot/themes/status/img/a.png b/riot/themes/status/img/a.png new file mode 100644 index 0000000..defbcc4 Binary files /dev/null and b/riot/themes/status/img/a.png differ diff --git a/riot/themes/status/img/d.png b/riot/themes/status/img/d.png new file mode 100644 index 0000000..daeb0b0 Binary files /dev/null and b/riot/themes/status/img/d.png differ diff --git a/riot/themes/status/img/dot.svg b/riot/themes/status/img/dot.svg new file mode 100644 index 0000000..45df23c --- /dev/null +++ b/riot/themes/status/img/dot.svg @@ -0,0 +1 @@ +Artboard \ No newline at end of file diff --git a/riot/themes/status/img/g.png b/riot/themes/status/img/g.png new file mode 100644 index 0000000..f675a33 Binary files /dev/null and b/riot/themes/status/img/g.png differ diff --git a/riot/themes/status/img/i.png b/riot/themes/status/img/i.png new file mode 100644 index 0000000..b63eeae Binary files /dev/null and b/riot/themes/status/img/i.png differ diff --git a/riot/themes/status/img/logo.svg b/riot/themes/status/img/logo.svg new file mode 100644 index 0000000..68e4a77 --- /dev/null +++ b/riot/themes/status/img/logo.svg @@ -0,0 +1,16 @@ + + + + Status logo + Created with Sketch. + + + + + \ No newline at end of file diff --git a/riot/themes/status/img/n.png b/riot/themes/status/img/n.png new file mode 100644 index 0000000..b8e33d4 Binary files /dev/null and b/riot/themes/status/img/n.png differ diff --git a/riot/vector-icons/android-chrome-144x144.png b/riot/vector-icons/android-chrome-144x144.png new file mode 100644 index 0000000..30c8cf1 Binary files /dev/null and b/riot/vector-icons/android-chrome-144x144.png differ diff --git a/riot/vector-icons/android-chrome-192x192.png b/riot/vector-icons/android-chrome-192x192.png new file mode 100644 index 0000000..560e20a Binary files /dev/null and b/riot/vector-icons/android-chrome-192x192.png differ diff --git a/riot/vector-icons/android-chrome-36x36.png b/riot/vector-icons/android-chrome-36x36.png new file mode 100644 index 0000000..ee41772 Binary files /dev/null and b/riot/vector-icons/android-chrome-36x36.png differ diff --git a/riot/vector-icons/android-chrome-48x48.png b/riot/vector-icons/android-chrome-48x48.png new file mode 100644 index 0000000..9cd225d Binary files /dev/null and b/riot/vector-icons/android-chrome-48x48.png differ diff --git a/riot/vector-icons/android-chrome-72x72.png b/riot/vector-icons/android-chrome-72x72.png new file mode 100644 index 0000000..d9de0c5 Binary files /dev/null and b/riot/vector-icons/android-chrome-72x72.png differ diff --git a/riot/vector-icons/android-chrome-96x96.png b/riot/vector-icons/android-chrome-96x96.png new file mode 100644 index 0000000..eb48c2c Binary files /dev/null and b/riot/vector-icons/android-chrome-96x96.png differ diff --git a/riot/vector-icons/apple-touch-icon-114x114.png b/riot/vector-icons/apple-touch-icon-114x114.png new file mode 100644 index 0000000..e07fa43 Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-114x114.png differ diff --git a/riot/vector-icons/apple-touch-icon-120x120.png b/riot/vector-icons/apple-touch-icon-120x120.png new file mode 100644 index 0000000..8265091 Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-120x120.png differ diff --git a/riot/vector-icons/apple-touch-icon-144x144.png b/riot/vector-icons/apple-touch-icon-144x144.png new file mode 100644 index 0000000..30c8cf1 Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-144x144.png differ diff --git a/riot/vector-icons/apple-touch-icon-152x152.png b/riot/vector-icons/apple-touch-icon-152x152.png new file mode 100644 index 0000000..5bc6354 Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-152x152.png differ diff --git a/riot/vector-icons/apple-touch-icon-180x180.png b/riot/vector-icons/apple-touch-icon-180x180.png new file mode 100644 index 0000000..85e9f8c Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-180x180.png differ diff --git a/riot/vector-icons/apple-touch-icon-57x57.png b/riot/vector-icons/apple-touch-icon-57x57.png new file mode 100644 index 0000000..253c3db Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-57x57.png differ diff --git a/riot/vector-icons/apple-touch-icon-60x60.png b/riot/vector-icons/apple-touch-icon-60x60.png new file mode 100644 index 0000000..192a346 Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-60x60.png differ diff --git a/riot/vector-icons/apple-touch-icon-72x72.png b/riot/vector-icons/apple-touch-icon-72x72.png new file mode 100644 index 0000000..d9de0c5 Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-72x72.png differ diff --git a/riot/vector-icons/apple-touch-icon-76x76.png b/riot/vector-icons/apple-touch-icon-76x76.png new file mode 100644 index 0000000..b947164 Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-76x76.png differ diff --git a/riot/vector-icons/apple-touch-icon-precomposed.png b/riot/vector-icons/apple-touch-icon-precomposed.png new file mode 100644 index 0000000..85e9f8c Binary files /dev/null and b/riot/vector-icons/apple-touch-icon-precomposed.png differ diff --git a/riot/vector-icons/apple-touch-icon.png b/riot/vector-icons/apple-touch-icon.png new file mode 100644 index 0000000..85e9f8c Binary files /dev/null and b/riot/vector-icons/apple-touch-icon.png differ diff --git a/riot/vector-icons/browserconfig.xml b/riot/vector-icons/browserconfig.xml new file mode 100644 index 0000000..012a1da --- /dev/null +++ b/riot/vector-icons/browserconfig.xml @@ -0,0 +1,12 @@ + + + + + + + + + #da532c + + + diff --git a/riot/vector-icons/favicon-16x16.png b/riot/vector-icons/favicon-16x16.png new file mode 100644 index 0000000..def4ec5 Binary files /dev/null and b/riot/vector-icons/favicon-16x16.png differ diff --git a/riot/vector-icons/favicon-32x32.png b/riot/vector-icons/favicon-32x32.png new file mode 100644 index 0000000..c999923 Binary files /dev/null and b/riot/vector-icons/favicon-32x32.png differ diff --git a/riot/vector-icons/favicon-96x96.png b/riot/vector-icons/favicon-96x96.png new file mode 100644 index 0000000..eb48c2c Binary files /dev/null and b/riot/vector-icons/favicon-96x96.png differ diff --git a/riot/vector-icons/favicon.ico b/riot/vector-icons/favicon.ico new file mode 100644 index 0000000..8f8ff94 Binary files /dev/null and b/riot/vector-icons/favicon.ico differ diff --git a/riot/vector-icons/mstile-144x144.png b/riot/vector-icons/mstile-144x144.png new file mode 100644 index 0000000..30c8cf1 Binary files /dev/null and b/riot/vector-icons/mstile-144x144.png differ diff --git a/riot/vector-icons/mstile-150x150.png b/riot/vector-icons/mstile-150x150.png new file mode 100644 index 0000000..5b8fca8 Binary files /dev/null and b/riot/vector-icons/mstile-150x150.png differ diff --git a/riot/vector-icons/mstile-310x150.png b/riot/vector-icons/mstile-310x150.png new file mode 100644 index 0000000..d809f00 Binary files /dev/null and b/riot/vector-icons/mstile-310x150.png differ diff --git a/riot/vector-icons/mstile-310x310.png b/riot/vector-icons/mstile-310x310.png new file mode 100644 index 0000000..ec62f8e Binary files /dev/null and b/riot/vector-icons/mstile-310x310.png differ diff --git a/riot/vector-icons/mstile-70x70.png b/riot/vector-icons/mstile-70x70.png new file mode 100644 index 0000000..820a909 Binary files /dev/null and b/riot/vector-icons/mstile-70x70.png differ diff --git a/riot/version b/riot/version new file mode 100644 index 0000000..8b5334d --- /dev/null +++ b/riot/version @@ -0,0 +1 @@ +0.17.5